public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-libc Patch 0/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
@ 2021-10-20  3:42 Jayaprakash, N
  2021-10-20  3:42 ` [edk2-libc Patch 1/1] " Jayaprakash, N
  0 siblings, 1 reply; 10+ messages in thread
From: Jayaprakash, N @ 2021-10-20  3:42 UTC (permalink / raw)
  To: devel



Jayaprakash Nevara (1):
  AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc

 AppPkg/AppPkg.dsc                             |     5 +-
 AppPkg/Applications/Python/Efi/config.c       |   149 -
 AppPkg/Applications/Python/Efi/edk2module.c   |  7414 -------
 AppPkg/Applications/Python/Efi/getpath.c      |   719 -
 AppPkg/Applications/Python/Ia32/pyconfig.h    |  1256 --
 .../Python/PyMod-2.7.2/Include/fileobject.h   |   102 -
 .../Python/PyMod-2.7.2/Include/osdefs.h       |    71 -
 .../Python/PyMod-2.7.2/Include/pyport.h       |   918 -
 .../Python/PyMod-2.7.2/Lib/ntpath.py          |   528 -
 .../Applications/Python/PyMod-2.7.2/Lib/os.py |   773 -
 .../Python/PyMod-2.7.2/Lib/pydoc.py           |  2341 ---
 .../Python/PyMod-2.7.2/Lib/site.py            |   537 -
 .../Python/PyMod-2.7.2/Modules/_sre.c         |  3921 ----
 .../Python/PyMod-2.7.2/Modules/addrinfo.h     |   178 -
 .../Python/PyMod-2.7.2/Modules/errnomodule.c  |   845 -
 .../Modules/expat/expat_external.h            |   121 -
 .../PyMod-2.7.2/Modules/expat/xmlparse.c      |  6279 ------
 .../Python/PyMod-2.7.2/Modules/main.c         |   678 -
 .../Python/PyMod-2.7.2/Modules/selectmodule.c |  1912 --
 .../Python/PyMod-2.7.2/Modules/socketmodule.h |   250 -
 .../Python/PyMod-2.7.2/Modules/zlib/zutil.h   |   277 -
 .../Python/PyMod-2.7.2/Objects/longobject.c   |  4381 ----
 .../Objects/stringlib/localeutil.h            |   227 -
 .../Python/PyMod-2.7.2/Python/getcopyright.c  |    36 -
 .../Python/PyMod-2.7.2/Python/import.c        |  3398 ---
 .../Python/PyMod-2.7.2/Python/marshal.c       |  1422 --
 .../Python/Python-2.7.2/Demo/README           |    40 -
 .../Python/Python-2.7.2/Demo/cgi/README       |    11 -
 .../Python/Python-2.7.2/Demo/cgi/cgi0.sh      |     8 -
 .../Python/Python-2.7.2/Demo/cgi/cgi1.py      |    14 -
 .../Python/Python-2.7.2/Demo/cgi/cgi2.py      |    22 -
 .../Python/Python-2.7.2/Demo/cgi/cgi3.py      |    10 -
 .../Python/Python-2.7.2/Demo/cgi/wiki.py      |   123 -
 .../Python-2.7.2/Demo/classes/Complex.py      |   320 -
 .../Python/Python-2.7.2/Demo/classes/Dates.py |   227 -
 .../Python/Python-2.7.2/Demo/classes/Dbm.py   |    66 -
 .../Python/Python-2.7.2/Demo/classes/README   |    12 -
 .../Python/Python-2.7.2/Demo/classes/Range.py |    93 -
 .../Python/Python-2.7.2/Demo/classes/Rev.py   |    95 -
 .../Python/Python-2.7.2/Demo/classes/Vec.py   |    68 -
 .../Python-2.7.2/Demo/classes/bitvec.py       |   333 -
 .../Python-2.7.2/Demo/comparisons/README      |    60 -
 .../Python-2.7.2/Demo/comparisons/patterns    |     4 -
 .../Demo/comparisons/regextest.py             |    47 -
 .../Demo/comparisons/sortingtest.py           |    45 -
 .../Demo/comparisons/systemtest.py            |    74 -
 .../Python/Python-2.7.2/Demo/md5test/README   |    10 -
 .../Python/Python-2.7.2/Demo/md5test/foo      |     1 -
 .../Python-2.7.2/Demo/md5test/md5driver.py    |   123 -
 .../Python-2.7.2/Demo/metaclasses/Eiffel.py   |   113 -
 .../Python-2.7.2/Demo/metaclasses/Enum.py     |   169 -
 .../Python-2.7.2/Demo/metaclasses/Meta.py     |   118 -
 .../Python-2.7.2/Demo/metaclasses/Simple.py   |    45 -
 .../Python-2.7.2/Demo/metaclasses/Synch.py    |   256 -
 .../Python-2.7.2/Demo/metaclasses/Trace.py    |   144 -
 .../Python-2.7.2/Demo/metaclasses/index.html  |   605 -
 .../Demo/metaclasses/meta-vladimir.txt        |   256 -
 .../Demo/newmetaclasses/Eiffel.py             |   141 -
 .../Python-2.7.2/Demo/newmetaclasses/Enum.py  |   177 -
 .../Python/Python-2.7.2/Demo/parser/FILES     |     6 -
 .../Python/Python-2.7.2/Demo/parser/README    |    32 -
 .../Python-2.7.2/Demo/parser/docstring.py     |     2 -
 .../Python-2.7.2/Demo/parser/example.py       |   190 -
 .../Python/Python-2.7.2/Demo/parser/simple.py |     1 -
 .../Python/Python-2.7.2/Demo/parser/source.py |    27 -
 .../Python-2.7.2/Demo/parser/test_parser.py   |    48 -
 .../Python-2.7.2/Demo/parser/test_unparse.py  |   213 -
 .../Python-2.7.2/Demo/parser/unparse.py       |   606 -
 .../Python/Python-2.7.2/Demo/pdist/FSProxy.py |   301 -
 .../Python-2.7.2/Demo/pdist/RCSProxy.py       |   198 -
 .../Python/Python-2.7.2/Demo/pdist/README     |   121 -
 .../Python/Python-2.7.2/Demo/pdist/client.py  |   157 -
 .../Python/Python-2.7.2/Demo/pdist/cmdfw.py   |   144 -
 .../Python/Python-2.7.2/Demo/pdist/cmptree.py |   208 -
 .../Python/Python-2.7.2/Demo/pdist/cvslib.py  |   364 -
 .../Python/Python-2.7.2/Demo/pdist/cvslock.py |   280 -
 .../Python/Python-2.7.2/Demo/pdist/mac.py     |    19 -
 .../Python-2.7.2/Demo/pdist/makechangelog.py  |   109 -
 .../Python/Python-2.7.2/Demo/pdist/rcsbump    |    33 -
 .../Python-2.7.2/Demo/pdist/rcsclient.py      |    71 -
 .../Python/Python-2.7.2/Demo/pdist/rcslib.py  |   334 -
 .../Python/Python-2.7.2/Demo/pdist/rcvs       |     8 -
 .../Python/Python-2.7.2/Demo/pdist/rcvs.py    |   477 -
 .../Python/Python-2.7.2/Demo/pdist/rrcs       |     8 -
 .../Python/Python-2.7.2/Demo/pdist/rrcs.py    |   160 -
 .../Python-2.7.2/Demo/pdist/security.py       |    33 -
 .../Python/Python-2.7.2/Demo/pdist/server.py  |   145 -
 .../Python/Python-2.7.2/Demo/pdist/sumtree.py |    24 -
 .../Python/Python-2.7.2/Demo/scripts/README   |    22 -
 .../Python/Python-2.7.2/Demo/scripts/beer.py  |    20 -
 .../Python/Python-2.7.2/Demo/scripts/eqfix.py |   198 -
 .../Python/Python-2.7.2/Demo/scripts/fact.py  |    49 -
 .../Python-2.7.2/Demo/scripts/find-uname.py   |    40 -
 .../Python/Python-2.7.2/Demo/scripts/from.py  |    35 -
 .../Python-2.7.2/Demo/scripts/lpwatch.py      |   102 -
 .../Python-2.7.2/Demo/scripts/makedir.py      |    21 -
 .../Python-2.7.2/Demo/scripts/markov.py       |   121 -
 .../Python-2.7.2/Demo/scripts/mboxconvert.py  |   124 -
 .../Python/Python-2.7.2/Demo/scripts/morse.py |   138 -
 .../Python-2.7.2/Demo/scripts/newslist.doc    |    59 -
 .../Python-2.7.2/Demo/scripts/newslist.py     |   362 -
 .../Python/Python-2.7.2/Demo/scripts/pi.py    |    33 -
 .../Python/Python-2.7.2/Demo/scripts/pp.py    |   129 -
 .../Python-2.7.2/Demo/scripts/primes.py       |    30 -
 .../Python-2.7.2/Demo/scripts/queens.py       |    85 -
 .../Python-2.7.2/Demo/scripts/script.py       |    42 -
 .../Python-2.7.2/Demo/scripts/unbirthday.py   |   104 -
 .../Python-2.7.2/Demo/scripts/update.py       |    92 -
 .../Python/Python-2.7.2/Demo/sockets/README   |    14 -
 .../Python-2.7.2/Demo/sockets/broadcast.py    |    15 -
 .../Python-2.7.2/Demo/sockets/echosvr.py      |    31 -
 .../Python-2.7.2/Demo/sockets/finger.py       |    58 -
 .../Python/Python-2.7.2/Demo/sockets/ftp.py   |   146 -
 .../Python-2.7.2/Demo/sockets/gopher.py       |   347 -
 .../Python/Python-2.7.2/Demo/sockets/mcast.py |    80 -
 .../Python/Python-2.7.2/Demo/sockets/radio.py |    14 -
 .../Python-2.7.2/Demo/sockets/rpython.py      |    35 -
 .../Python-2.7.2/Demo/sockets/rpythond.py     |    52 -
 .../Python-2.7.2/Demo/sockets/telnet.py       |   109 -
 .../Python-2.7.2/Demo/sockets/throughput.py   |    93 -
 .../Python-2.7.2/Demo/sockets/udpecho.py      |    63 -
 .../Python-2.7.2/Demo/sockets/unicast.py      |    14 -
 .../Python-2.7.2/Demo/sockets/unixclient.py   |    12 -
 .../Python-2.7.2/Demo/sockets/unixserver.py   |    24 -
 .../Python-2.7.2/Demo/xml/elem_count.py       |    42 -
 .../Python/Python-2.7.2/Demo/xml/roundtrip.py |    46 -
 .../Python/Python-2.7.2/Demo/xml/rss2html.py  |    97 -
 .../Python/Python-2.7.2/Demo/zlib/minigzip.py |   133 -
 .../Python/Python-2.7.2/Demo/zlib/zlibdemo.py |    48 -
 .../Python/Python-2.7.2/Grammar/Grammar       |   142 -
 .../Python/Python-2.7.2/Include/Python-ast.h  |   535 -
 .../Python/Python-2.7.2/Include/Python.h      |   178 -
 .../Python/Python-2.7.2/Include/abstract.h    |  1396 --
 .../Python/Python-2.7.2/Include/asdl.h        |    45 -
 .../Python/Python-2.7.2/Include/ast.h         |    13 -
 .../Python/Python-2.7.2/Include/bitset.h      |    32 -
 .../Python/Python-2.7.2/Include/boolobject.h  |    36 -
 .../Python-2.7.2/Include/bufferobject.h       |    33 -
 .../Python-2.7.2/Include/bytearrayobject.h    |    57 -
 .../Python-2.7.2/Include/bytes_methods.h      |    75 -
 .../Python/Python-2.7.2/Include/bytesobject.h |    27 -
 .../Python/Python-2.7.2/Include/cStringIO.h   |    73 -
 .../Python/Python-2.7.2/Include/cellobject.h  |    28 -
 .../Python/Python-2.7.2/Include/ceval.h       |   153 -
 .../Python/Python-2.7.2/Include/classobject.h |    83 -
 .../Python/Python-2.7.2/Include/cobject.h     |    89 -
 .../Python/Python-2.7.2/Include/code.h        |   107 -
 .../Python/Python-2.7.2/Include/codecs.h      |   167 -
 .../Python/Python-2.7.2/Include/compile.h     |    40 -
 .../Python-2.7.2/Include/complexobject.h      |    66 -
 .../Python/Python-2.7.2/Include/datetime.h    |   239 -
 .../Python/Python-2.7.2/Include/descrobject.h |    94 -
 .../Python/Python-2.7.2/Include/dictobject.h  |   156 -
 .../Python/Python-2.7.2/Include/dtoa.h        |    15 -
 .../Python/Python-2.7.2/Include/enumobject.h  |    17 -
 .../Python/Python-2.7.2/Include/errcode.h     |    36 -
 .../Python/Python-2.7.2/Include/eval.h        |    25 -
 .../Python/Python-2.7.2/Include/fileobject.h  |   102 -
 .../Python/Python-2.7.2/Include/floatobject.h |   140 -
 .../Python/Python-2.7.2/Include/frameobject.h |    89 -
 .../Python/Python-2.7.2/Include/funcobject.h  |    76 -
 .../Python/Python-2.7.2/Include/genobject.h   |    40 -
 .../Python/Python-2.7.2/Include/graminit.h    |    87 -
 .../Python/Python-2.7.2/Include/grammar.h     |    93 -
 .../Python/Python-2.7.2/Include/import.h      |    71 -
 .../Python/Python-2.7.2/Include/intobject.h   |    80 -
 .../Python/Python-2.7.2/Include/intrcheck.h   |    15 -
 .../Python/Python-2.7.2/Include/iterobject.h  |    23 -
 .../Python/Python-2.7.2/Include/listobject.h  |    68 -
 .../Python/Python-2.7.2/Include/longintrepr.h |   103 -
 .../Python/Python-2.7.2/Include/longobject.h  |   134 -
 .../Python/Python-2.7.2/Include/marshal.h     |    25 -
 .../Python-2.7.2/Include/memoryobject.h       |    74 -
 .../Python/Python-2.7.2/Include/metagrammar.h |    18 -
 .../Python-2.7.2/Include/methodobject.h       |    93 -
 .../Python/Python-2.7.2/Include/modsupport.h  |   134 -
 .../Python-2.7.2/Include/moduleobject.h       |    24 -
 .../Python/Python-2.7.2/Include/node.h        |    40 -
 .../Python/Python-2.7.2/Include/object.h      |   986 -
 .../Python/Python-2.7.2/Include/objimpl.h     |   354 -
 .../Python/Python-2.7.2/Include/opcode.h      |   162 -
 .../Python/Python-2.7.2/Include/osdefs.h      |    71 -
 .../Python/Python-2.7.2/Include/parsetok.h    |    64 -
 .../Python/Python-2.7.2/Include/patchlevel.h  |    43 -
 .../Python/Python-2.7.2/Include/pgen.h        |    18 -
 .../Python/Python-2.7.2/Include/pgenheaders.h |    42 -
 .../Python/Python-2.7.2/Include/py_curses.h   |   176 -
 .../Python/Python-2.7.2/Include/pyarena.h     |    62 -
 .../Python/Python-2.7.2/Include/pycapsule.h   |    56 -
 .../Python/Python-2.7.2/Include/pyctype.h     |    31 -
 .../Python/Python-2.7.2/Include/pydebug.h     |    40 -
 .../Python/Python-2.7.2/Include/pyerrors.h    |   328 -
 .../Python/Python-2.7.2/Include/pyexpat.h     |    48 -
 .../Python/Python-2.7.2/Include/pyfpe.h       |   176 -
 .../Python/Python-2.7.2/Include/pygetopt.h    |    17 -
 .../Python/Python-2.7.2/Include/pymacconfig.h |   102 -
 .../Python-2.7.2/Include/pymactoolbox.h       |   217 -
 .../Python/Python-2.7.2/Include/pymath.h      |   192 -
 .../Python/Python-2.7.2/Include/pymem.h       |   122 -
 .../Python/Python-2.7.2/Include/pyport.h      |   918 -
 .../Python/Python-2.7.2/Include/pystate.h     |   198 -
 .../Python/Python-2.7.2/Include/pystrcmp.h    |    23 -
 .../Python/Python-2.7.2/Include/pystrtod.h    |    45 -
 .../Python/Python-2.7.2/Include/pythonrun.h   |   178 -
 .../Python/Python-2.7.2/Include/pythread.h    |    41 -
 .../Python/Python-2.7.2/Include/rangeobject.h |    28 -
 .../Python/Python-2.7.2/Include/setobject.h   |    99 -
 .../Python/Python-2.7.2/Include/sliceobject.h |    44 -
 .../Python-2.7.2/Include/stringobject.h       |   210 -
 .../Python-2.7.2/Include/structmember.h       |    99 -
 .../Python/Python-2.7.2/Include/structseq.h   |    41 -
 .../Python/Python-2.7.2/Include/symtable.h    |    98 -
 .../Python/Python-2.7.2/Include/sysmodule.h   |    32 -
 .../Python/Python-2.7.2/Include/timefuncs.h   |    23 -
 .../Python/Python-2.7.2/Include/token.h       |    85 -
 .../Python/Python-2.7.2/Include/traceback.h   |    31 -
 .../Python/Python-2.7.2/Include/tupleobject.h |    61 -
 .../Python/Python-2.7.2/Include/ucnhash.h     |    33 -
 .../Python-2.7.2/Include/unicodeobject.h      |  1413 --
 .../Python/Python-2.7.2/Include/warnings.h    |    23 -
 .../Python-2.7.2/Include/weakrefobject.h      |    75 -
 .../Applications/Python/Python-2.7.2/LICENSE  |   279 -
 .../Python/Python-2.7.2/Lib/BaseHTTPServer.py |   606 -
 .../Python/Python-2.7.2/Lib/Bastion.py        |   180 -
 .../Python/Python-2.7.2/Lib/CGIHTTPServer.py  |   374 -
 .../Python/Python-2.7.2/Lib/ConfigParser.py   |   745 -
 .../Python/Python-2.7.2/Lib/Cookie.py         |   761 -
 .../Python-2.7.2/Lib/DocXMLRPCServer.py       |   279 -
 .../Python/Python-2.7.2/Lib/HTMLParser.py     |   393 -
 .../Python/Python-2.7.2/Lib/MimeWriter.py     |   186 -
 .../Python/Python-2.7.2/Lib/Queue.py          |   244 -
 .../Python-2.7.2/Lib/SimpleHTTPServer.py      |   220 -
 .../Python-2.7.2/Lib/SimpleXMLRPCServer.py    |   704 -
 .../Python/Python-2.7.2/Lib/SocketServer.py   |   716 -
 .../Python/Python-2.7.2/Lib/StringIO.py       |   324 -
 .../Python/Python-2.7.2/Lib/UserDict.py       |   180 -
 .../Python/Python-2.7.2/Lib/UserList.py       |    88 -
 .../Python/Python-2.7.2/Lib/UserString.py     |   228 -
 .../Python/Python-2.7.2/Lib/_LWPCookieJar.py  |   170 -
 .../Python-2.7.2/Lib/_MozillaCookieJar.py     |   149 -
 .../Python/Python-2.7.2/Lib/__future__.py     |   128 -
 .../Python/Python-2.7.2/Lib/__phello__.foo.py |     1 -
 .../Python/Python-2.7.2/Lib/_abcoll.py        |   601 -
 .../Python/Python-2.7.2/Lib/_pyio.py          |  2006 --
 .../Python/Python-2.7.2/Lib/_strptime.py      |   454 -
 .../Python/Python-2.7.2/Lib/_weakrefset.py    |   216 -
 .../Python/Python-2.7.2/Lib/abc.py            |   185 -
 .../Python/Python-2.7.2/Lib/aifc.py           |   957 -
 .../Python/Python-2.7.2/Lib/antigravity.py    |     4 -
 .../Python/Python-2.7.2/Lib/anydbm.py         |    85 -
 .../Python/Python-2.7.2/Lib/argparse.py       |  2347 ---
 .../Python/Python-2.7.2/Lib/ast.py            |   311 -
 .../Python/Python-2.7.2/Lib/asynchat.py       |   314 -
 .../Python/Python-2.7.2/Lib/asyncore.py       |   655 -
 .../Python/Python-2.7.2/Lib/atexit.py         |    65 -
 .../Python/Python-2.7.2/Lib/base64.py         |   360 -
 .../Python/Python-2.7.2/Lib/bdb.py            |   632 -
 .../Python/Python-2.7.2/Lib/binhex.py         |   508 -
 .../Python/Python-2.7.2/Lib/bisect.py         |    92 -
 .../Python/Python-2.7.2/Lib/cProfile.py       |   199 -
 .../Python/Python-2.7.2/Lib/calendar.py       |   708 -
 .../Python/Python-2.7.2/Lib/cgi.py            |  1051 -
 .../Python/Python-2.7.2/Lib/cgitb.py          |   318 -
 .../Python/Python-2.7.2/Lib/chunk.py          |   167 -
 .../Python/Python-2.7.2/Lib/cmd.py            |   401 -
 .../Python/Python-2.7.2/Lib/code.py           |   310 -
 .../Python/Python-2.7.2/Lib/codecs.py         |  1098 -
 .../Python/Python-2.7.2/Lib/codeop.py         |   168 -
 .../Python/Python-2.7.2/Lib/collections.py    |   667 -
 .../Python/Python-2.7.2/Lib/colorsys.py       |   156 -
 .../Python/Python-2.7.2/Lib/commands.py       |    90 -
 .../Python/Python-2.7.2/Lib/compileall.py     |   214 -
 .../Python-2.7.2/Lib/compiler/__init__.py     |    31 -
 .../Python/Python-2.7.2/Lib/compiler/ast.py   |  1419 --
 .../Python-2.7.2/Lib/compiler/consts.py       |    23 -
 .../Python-2.7.2/Lib/compiler/future.py       |    74 -
 .../Python/Python-2.7.2/Lib/compiler/misc.py  |    73 -
 .../Python-2.7.2/Lib/compiler/pyassem.py      |   763 -
 .../Python-2.7.2/Lib/compiler/pycodegen.py    |  1555 --
 .../Python-2.7.2/Lib/compiler/symbols.py      |   462 -
 .../Python-2.7.2/Lib/compiler/syntax.py       |    46 -
 .../Python-2.7.2/Lib/compiler/transformer.py  |  1535 --
 .../Python-2.7.2/Lib/compiler/visitor.py      |   113 -
 .../Python/Python-2.7.2/Lib/contextlib.py     |   154 -
 .../Python/Python-2.7.2/Lib/cookielib.py      |  1794 --
 .../Python/Python-2.7.2/Lib/copy.py           |   433 -
 .../Python/Python-2.7.2/Lib/copy_reg.py       |   201 -
 .../Python/Python-2.7.2/Lib/csv.py            |   451 -
 .../Python/Python-2.7.2/Lib/dbhash.py         |    18 -
 .../Python/Python-2.7.2/Lib/decimal.py        |  6149 ------
 .../Python/Python-2.7.2/Lib/difflib.py        |  2059 --
 .../Python/Python-2.7.2/Lib/dircache.py       |    41 -
 .../Python/Python-2.7.2/Lib/dis.py            |   224 -
 .../Python/Python-2.7.2/Lib/distutils/README  |    13 -
 .../Python-2.7.2/Lib/distutils/__init__.py    |    19 -
 .../Lib/distutils/archive_util.py             |   243 -
 .../Lib/distutils/bcppcompiler.py             |   394 -
 .../Python-2.7.2/Lib/distutils/ccompiler.py   |  1145 -
 .../Python/Python-2.7.2/Lib/distutils/cmd.py  |   457 -
 .../Lib/distutils/command/__init__.py         |    33 -
 .../Lib/distutils/command/bdist.py            |   146 -
 .../Lib/distutils/command/bdist_dumb.py       |   132 -
 .../Lib/distutils/command/bdist_msi.py        |   738 -
 .../Lib/distutils/command/bdist_rpm.py        |   575 -
 .../Lib/distutils/command/bdist_wininst.py    |   364 -
 .../Lib/distutils/command/build.py            |   147 -
 .../Lib/distutils/command/build_clib.py       |   209 -
 .../Lib/distutils/command/build_ext.py        |   769 -
 .../Lib/distutils/command/build_py.py         |   393 -
 .../Lib/distutils/command/build_scripts.py    |   131 -
 .../Lib/distutils/command/check.py            |   143 -
 .../Lib/distutils/command/clean.py            |    80 -
 .../Lib/distutils/command/command_template    |    45 -
 .../Lib/distutils/command/config.py           |   357 -
 .../Lib/distutils/command/install.py          |   672 -
 .../Lib/distutils/command/install_data.py     |    81 -
 .../Lib/distutils/command/install_egg_info.py |    78 -
 .../Lib/distutils/command/install_headers.py  |    51 -
 .../Lib/distutils/command/install_lib.py      |   219 -
 .../Lib/distutils/command/install_scripts.py  |    64 -
 .../Lib/distutils/command/register.py         |   307 -
 .../Lib/distutils/command/sdist.py            |   464 -
 .../Lib/distutils/command/upload.py           |   194 -
 .../Lib/distutils/command/wininst-6.0.exe     |   Bin 61440 -> 0 bytes
 .../Lib/distutils/command/wininst-7.1.exe     |   Bin 65536 -> 0 bytes
 .../Lib/distutils/command/wininst-8.0.exe     |   Bin 61440 -> 0 bytes
 .../distutils/command/wininst-9.0-amd64.exe   |   Bin 223744 -> 0 bytes
 .../Lib/distutils/command/wininst-9.0.exe     |   Bin 196096 -> 0 bytes
 .../Python-2.7.2/Lib/distutils/config.py      |   121 -
 .../Python/Python-2.7.2/Lib/distutils/core.py |   242 -
 .../Lib/distutils/cygwinccompiler.py          |   449 -
 .../Python-2.7.2/Lib/distutils/debug.py       |     7 -
 .../Python-2.7.2/Lib/distutils/dep_util.py    |    88 -
 .../Python-2.7.2/Lib/distutils/dir_util.py    |   212 -
 .../Python/Python-2.7.2/Lib/distutils/dist.py |  1248 --
 .../Lib/distutils/emxccompiler.py             |   319 -
 .../Python-2.7.2/Lib/distutils/errors.py      |    88 -
 .../Python-2.7.2/Lib/distutils/extension.py   |   255 -
 .../Lib/distutils/fancy_getopt.py             |   484 -
 .../Python-2.7.2/Lib/distutils/file_util.py   |   231 -
 .../Python-2.7.2/Lib/distutils/filelist.py    |   336 -
 .../Python/Python-2.7.2/Lib/distutils/log.py  |    71 -
 .../Lib/distutils/msvc9compiler.py            |   764 -
 .../Lib/distutils/msvccompiler.py             |   659 -
 .../Python-2.7.2/Lib/distutils/spawn.py       |   173 -
 .../Python-2.7.2/Lib/distutils/sysconfig.py   |   571 -
 .../Lib/distutils/tests/Setup.sample          |    67 -
 .../Lib/distutils/tests/__init__.py           |    36 -
 .../distutils/tests/setuptools_build_ext.py   |   287 -
 .../distutils/tests/setuptools_extension.py   |    51 -
 .../Lib/distutils/tests/support.py            |   133 -
 .../Lib/distutils/tests/test_archive_util.py  |   284 -
 .../Lib/distutils/tests/test_bdist.py         |    45 -
 .../Lib/distutils/tests/test_bdist_dumb.py    |   105 -
 .../Lib/distutils/tests/test_bdist_msi.py     |    25 -
 .../Lib/distutils/tests/test_bdist_rpm.py     |   127 -
 .../Lib/distutils/tests/test_bdist_wininst.py |    32 -
 .../Lib/distutils/tests/test_build.py         |    55 -
 .../Lib/distutils/tests/test_build_clib.py    |   145 -
 .../Lib/distutils/tests/test_build_ext.py     |   491 -
 .../Lib/distutils/tests/test_build_py.py      |   122 -
 .../Lib/distutils/tests/test_build_scripts.py |   112 -
 .../Lib/distutils/tests/test_ccompiler.py     |    81 -
 .../Lib/distutils/tests/test_check.py         |    99 -
 .../Lib/distutils/tests/test_clean.py         |    51 -
 .../Lib/distutils/tests/test_cmd.py           |   127 -
 .../Lib/distutils/tests/test_config.py        |   123 -
 .../Lib/distutils/tests/test_config_cmd.py    |    90 -
 .../Lib/distutils/tests/test_core.py          |   108 -
 .../Lib/distutils/tests/test_dep_util.py      |    81 -
 .../Lib/distutils/tests/test_dir_util.py      |   116 -
 .../Lib/distutils/tests/test_dist.py          |   436 -
 .../Lib/distutils/tests/test_file_util.py     |    81 -
 .../Lib/distutils/tests/test_filelist.py      |    85 -
 .../Lib/distutils/tests/test_install.py       |    57 -
 .../Lib/distutils/tests/test_install_data.py  |    77 -
 .../distutils/tests/test_install_headers.py   |    41 -
 .../Lib/distutils/tests/test_install_lib.py   |   107 -
 .../distutils/tests/test_install_scripts.py   |    82 -
 .../Lib/distutils/tests/test_msvc9compiler.py |   141 -
 .../Lib/distutils/tests/test_register.py      |   261 -
 .../Lib/distutils/tests/test_sdist.py         |   429 -
 .../Lib/distutils/tests/test_spawn.py         |    60 -
 .../Lib/distutils/tests/test_sysconfig.py     |    82 -
 .../Lib/distutils/tests/test_text_file.py     |   107 -
 .../Lib/distutils/tests/test_unixccompiler.py |   130 -
 .../Lib/distutils/tests/test_upload.py        |   131 -
 .../Lib/distutils/tests/test_util.py          |    25 -
 .../Lib/distutils/tests/test_version.py       |    71 -
 .../distutils/tests/test_versionpredicate.py  |    13 -
 .../Python-2.7.2/Lib/distutils/text_file.py   |   304 -
 .../Lib/distutils/unixccompiler.py            |   346 -
 .../Python/Python-2.7.2/Lib/distutils/util.py |   567 -
 .../Python-2.7.2/Lib/distutils/version.py     |   299 -
 .../Lib/distutils/versionpredicate.py         |   164 -
 .../Python/Python-2.7.2/Lib/doctest.py        |  2731 ---
 .../Python/Python-2.7.2/Lib/dumbdbm.py        |   250 -
 .../Python/Python-2.7.2/Lib/dummy_thread.py   |   145 -
 .../Python-2.7.2/Lib/dummy_threading.py       |    78 -
 .../Python/Python-2.7.2/Lib/email/__init__.py |   123 -
 .../Python-2.7.2/Lib/email/_parseaddr.py      |   497 -
 .../Python-2.7.2/Lib/email/base64mime.py      |   183 -
 .../Python/Python-2.7.2/Lib/email/charset.py  |   397 -
 .../Python/Python-2.7.2/Lib/email/encoders.py |    82 -
 .../Python/Python-2.7.2/Lib/email/errors.py   |    57 -
 .../Python-2.7.2/Lib/email/feedparser.py      |   484 -
 .../Python-2.7.2/Lib/email/generator.py       |   364 -
 .../Python/Python-2.7.2/Lib/email/header.py   |   514 -
 .../Python-2.7.2/Lib/email/iterators.py       |    73 -
 .../Python/Python-2.7.2/Lib/email/message.py  |   797 -
 .../Python-2.7.2/Lib/email/mime/__init__.py   |     0
 .../Lib/email/mime/application.py             |    36 -
 .../Python-2.7.2/Lib/email/mime/audio.py      |    73 -
 .../Python-2.7.2/Lib/email/mime/base.py       |    26 -
 .../Python-2.7.2/Lib/email/mime/image.py      |    46 -
 .../Python-2.7.2/Lib/email/mime/message.py    |    34 -
 .../Python-2.7.2/Lib/email/mime/multipart.py  |    47 -
 .../Lib/email/mime/nonmultipart.py            |    22 -
 .../Python-2.7.2/Lib/email/mime/text.py       |    30 -
 .../Python/Python-2.7.2/Lib/email/parser.py   |    91 -
 .../Python-2.7.2/Lib/email/quoprimime.py      |   336 -
 .../Python-2.7.2/Lib/email/test/__init__.py   |     0
 .../Lib/email/test/data/PyBanner048.gif       |   Bin 954 -> 0 bytes
 .../Lib/email/test/data/audiotest.au          |   Bin 28144 -> 0 bytes
 .../Lib/email/test/data/msg_01.txt            |    19 -
 .../Lib/email/test/data/msg_02.txt            |   135 -
 .../Lib/email/test/data/msg_03.txt            |    16 -
 .../Lib/email/test/data/msg_04.txt            |    37 -
 .../Lib/email/test/data/msg_05.txt            |    28 -
 .../Lib/email/test/data/msg_06.txt            |    33 -
 .../Lib/email/test/data/msg_07.txt            |    83 -
 .../Lib/email/test/data/msg_08.txt            |    24 -
 .../Lib/email/test/data/msg_09.txt            |    24 -
 .../Lib/email/test/data/msg_10.txt            |    39 -
 .../Lib/email/test/data/msg_11.txt            |     7 -
 .../Lib/email/test/data/msg_12.txt            |    36 -
 .../Lib/email/test/data/msg_12a.txt           |    38 -
 .../Lib/email/test/data/msg_13.txt            |    94 -
 .../Lib/email/test/data/msg_14.txt            |    23 -
 .../Lib/email/test/data/msg_15.txt            |    52 -
 .../Lib/email/test/data/msg_16.txt            |   123 -
 .../Lib/email/test/data/msg_17.txt            |    12 -
 .../Lib/email/test/data/msg_18.txt            |     6 -
 .../Lib/email/test/data/msg_19.txt            |    43 -
 .../Lib/email/test/data/msg_20.txt            |    22 -
 .../Lib/email/test/data/msg_21.txt            |    20 -
 .../Lib/email/test/data/msg_22.txt            |    46 -
 .../Lib/email/test/data/msg_23.txt            |     8 -
 .../Lib/email/test/data/msg_24.txt            |    10 -
 .../Lib/email/test/data/msg_25.txt            |   117 -
 .../Lib/email/test/data/msg_26.txt            |    45 -
 .../Lib/email/test/data/msg_27.txt            |    15 -
 .../Lib/email/test/data/msg_28.txt            |    25 -
 .../Lib/email/test/data/msg_29.txt            |    22 -
 .../Lib/email/test/data/msg_30.txt            |    23 -
 .../Lib/email/test/data/msg_31.txt            |    15 -
 .../Lib/email/test/data/msg_32.txt            |    14 -
 .../Lib/email/test/data/msg_33.txt            |    29 -
 .../Lib/email/test/data/msg_34.txt            |    19 -
 .../Lib/email/test/data/msg_35.txt            |     4 -
 .../Lib/email/test/data/msg_36.txt            |    40 -
 .../Lib/email/test/data/msg_37.txt            |    22 -
 .../Lib/email/test/data/msg_38.txt            |   101 -
 .../Lib/email/test/data/msg_39.txt            |    83 -
 .../Lib/email/test/data/msg_40.txt            |    10 -
 .../Lib/email/test/data/msg_41.txt            |     8 -
 .../Lib/email/test/data/msg_42.txt            |    20 -
 .../Lib/email/test/data/msg_43.txt            |   217 -
 .../Lib/email/test/data/msg_44.txt            |    33 -
 .../Lib/email/test/data/msg_45.txt            |    33 -
 .../Lib/email/test/data/msg_46.txt            |    23 -
 .../Python-2.7.2/Lib/email/test/test_email.py |  3529 ----
 .../Lib/email/test/test_email_codecs.py       |    77 -
 .../email/test/test_email_codecs_renamed.py   |    77 -
 .../Lib/email/test/test_email_renamed.py      |  3297 ---
 .../Lib/email/test/test_email_torture.py      |   136 -
 .../Python/Python-2.7.2/Lib/email/utils.py    |   324 -
 .../Python-2.7.2/Lib/encodings/__init__.py    |   157 -
 .../Python-2.7.2/Lib/encodings/aliases.py     |   527 -
 .../Python-2.7.2/Lib/encodings/ascii.py       |    50 -
 .../Lib/encodings/base64_codec.py             |    79 -
 .../Python/Python-2.7.2/Lib/encodings/big5.py |    39 -
 .../Python-2.7.2/Lib/encodings/big5hkscs.py   |    39 -
 .../Python-2.7.2/Lib/encodings/bz2_codec.py   |   102 -
 .../Python-2.7.2/Lib/encodings/charmap.py     |    69 -
 .../Python-2.7.2/Lib/encodings/cp037.py       |   307 -
 .../Python-2.7.2/Lib/encodings/cp1006.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1026.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1140.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1250.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1251.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1252.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1253.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1254.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1255.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1256.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1257.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1258.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp424.py       |   307 -
 .../Python-2.7.2/Lib/encodings/cp437.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp500.py       |   307 -
 .../Python-2.7.2/Lib/encodings/cp720.py       |   309 -
 .../Python-2.7.2/Lib/encodings/cp737.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp775.py       |   697 -
 .../Python-2.7.2/Lib/encodings/cp850.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp852.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp855.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp856.py       |   307 -
 .../Python-2.7.2/Lib/encodings/cp857.py       |   694 -
 .../Python-2.7.2/Lib/encodings/cp858.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp860.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp861.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp862.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp863.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp864.py       |   690 -
 .../Python-2.7.2/Lib/encodings/cp865.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp866.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp869.py       |   689 -
 .../Python-2.7.2/Lib/encodings/cp874.py       |   307 -
 .../Python-2.7.2/Lib/encodings/cp875.py       |   307 -
 .../Python-2.7.2/Lib/encodings/cp932.py       |    39 -
 .../Python-2.7.2/Lib/encodings/cp949.py       |    39 -
 .../Python-2.7.2/Lib/encodings/cp950.py       |    39 -
 .../Lib/encodings/euc_jis_2004.py             |    39 -
 .../Lib/encodings/euc_jisx0213.py             |    39 -
 .../Python-2.7.2/Lib/encodings/euc_jp.py      |    39 -
 .../Python-2.7.2/Lib/encodings/euc_kr.py      |    39 -
 .../Python-2.7.2/Lib/encodings/gb18030.py     |    39 -
 .../Python-2.7.2/Lib/encodings/gb2312.py      |    39 -
 .../Python/Python-2.7.2/Lib/encodings/gbk.py  |    39 -
 .../Python-2.7.2/Lib/encodings/hex_codec.py   |    79 -
 .../Python-2.7.2/Lib/encodings/hp_roman8.py   |   152 -
 .../Python/Python-2.7.2/Lib/encodings/hz.py   |    39 -
 .../Python/Python-2.7.2/Lib/encodings/idna.py |   288 -
 .../Python-2.7.2/Lib/encodings/iso2022_jp.py  |    39 -
 .../Lib/encodings/iso2022_jp_1.py             |    39 -
 .../Lib/encodings/iso2022_jp_2.py             |    39 -
 .../Lib/encodings/iso2022_jp_2004.py          |    39 -
 .../Lib/encodings/iso2022_jp_3.py             |    39 -
 .../Lib/encodings/iso2022_jp_ext.py           |    39 -
 .../Python-2.7.2/Lib/encodings/iso2022_kr.py  |    39 -
 .../Python-2.7.2/Lib/encodings/iso8859_1.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_10.py  |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_11.py  |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_13.py  |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_14.py  |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_15.py  |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_16.py  |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_2.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_3.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_4.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_5.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_6.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_7.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_8.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_9.py   |   307 -
 .../Python-2.7.2/Lib/encodings/johab.py       |    39 -
 .../Python-2.7.2/Lib/encodings/koi8_r.py      |   307 -
 .../Python-2.7.2/Lib/encodings/koi8_u.py      |   307 -
 .../Python-2.7.2/Lib/encodings/latin_1.py     |    50 -
 .../Python-2.7.2/Lib/encodings/mac_arabic.py  |   698 -
 .../Lib/encodings/mac_centeuro.py             |   307 -
 .../Lib/encodings/mac_croatian.py             |   307 -
 .../Lib/encodings/mac_cyrillic.py             |   307 -
 .../Python-2.7.2/Lib/encodings/mac_farsi.py   |   307 -
 .../Python-2.7.2/Lib/encodings/mac_greek.py   |   307 -
 .../Python-2.7.2/Lib/encodings/mac_iceland.py |   307 -
 .../Python-2.7.2/Lib/encodings/mac_latin2.py  |   183 -
 .../Python-2.7.2/Lib/encodings/mac_roman.py   |   307 -
 .../Lib/encodings/mac_romanian.py             |   307 -
 .../Python-2.7.2/Lib/encodings/mac_turkish.py |   307 -
 .../Python/Python-2.7.2/Lib/encodings/mbcs.py |    47 -
 .../Python-2.7.2/Lib/encodings/palmos.py      |    83 -
 .../Python-2.7.2/Lib/encodings/ptcp154.py     |   175 -
 .../Python-2.7.2/Lib/encodings/punycode.py    |   238 -
 .../Lib/encodings/quopri_codec.py             |    75 -
 .../Lib/encodings/raw_unicode_escape.py       |    45 -
 .../Python-2.7.2/Lib/encodings/rot_13.py      |   118 -
 .../Python-2.7.2/Lib/encodings/shift_jis.py   |    39 -
 .../Lib/encodings/shift_jis_2004.py           |    39 -
 .../Lib/encodings/shift_jisx0213.py           |    39 -
 .../Lib/encodings/string_escape.py            |    38 -
 .../Python-2.7.2/Lib/encodings/tis_620.py     |   307 -
 .../Python-2.7.2/Lib/encodings/undefined.py   |    49 -
 .../Lib/encodings/unicode_escape.py           |    45 -
 .../Lib/encodings/unicode_internal.py         |    45 -
 .../Python-2.7.2/Lib/encodings/utf_16.py      |   126 -
 .../Python-2.7.2/Lib/encodings/utf_16_be.py   |    42 -
 .../Python-2.7.2/Lib/encodings/utf_16_le.py   |    42 -
 .../Python-2.7.2/Lib/encodings/utf_32.py      |   150 -
 .../Python-2.7.2/Lib/encodings/utf_32_be.py   |    37 -
 .../Python-2.7.2/Lib/encodings/utf_32_le.py   |    37 -
 .../Python-2.7.2/Lib/encodings/utf_7.py       |    38 -
 .../Python-2.7.2/Lib/encodings/utf_8.py       |    42 -
 .../Python-2.7.2/Lib/encodings/utf_8_sig.py   |   117 -
 .../Python-2.7.2/Lib/encodings/uu_codec.py    |   129 -
 .../Python-2.7.2/Lib/encodings/zlib_codec.py  |   102 -
 .../Python/Python-2.7.2/Lib/filecmp.py        |   295 -
 .../Python/Python-2.7.2/Lib/fileinput.py      |   413 -
 .../Python/Python-2.7.2/Lib/fnmatch.py        |   116 -
 .../Python/Python-2.7.2/Lib/formatter.py      |   445 -
 .../Python/Python-2.7.2/Lib/fpformat.py       |   145 -
 .../Python/Python-2.7.2/Lib/fractions.py      |   605 -
 .../Python/Python-2.7.2/Lib/ftplib.py         |  1036 -
 .../Python/Python-2.7.2/Lib/functools.py      |   100 -
 .../Python/Python-2.7.2/Lib/genericpath.py    |   105 -
 .../Python/Python-2.7.2/Lib/getopt.py         |   210 -
 .../Python/Python-2.7.2/Lib/getpass.py        |   179 -
 .../Python/Python-2.7.2/Lib/gettext.py        |   591 -
 .../Python/Python-2.7.2/Lib/glob.py           |    78 -
 .../Python/Python-2.7.2/Lib/gzip.py           |   509 -
 .../Python/Python-2.7.2/Lib/hashlib.py        |   146 -
 .../Python/Python-2.7.2/Lib/heapq.py          |   442 -
 .../Python/Python-2.7.2/Lib/hmac.py           |   133 -
 .../Python-2.7.2/Lib/hotshot/__init__.py      |    78 -
 .../Python/Python-2.7.2/Lib/hotshot/log.py    |   194 -
 .../Python/Python-2.7.2/Lib/hotshot/stats.py  |    93 -
 .../Python/Python-2.7.2/Lib/hotshot/stones.py |    30 -
 .../Python/Python-2.7.2/Lib/htmlentitydefs.py |   273 -
 .../Python/Python-2.7.2/Lib/htmllib.py        |   491 -
 .../Python/Python-2.7.2/Lib/httplib.py        |  1392 --
 .../Python/Python-2.7.2/Lib/ihooks.py         |   554 -
 .../Python/Python-2.7.2/Lib/imaplib.py        |  1518 --
 .../Python/Python-2.7.2/Lib/imghdr.py         |   161 -
 .../Python-2.7.2/Lib/importlib/__init__.py    |    38 -
 .../Python/Python-2.7.2/Lib/imputil.py        |   725 -
 .../Python/Python-2.7.2/Lib/inspect.py        |  1056 -
 .../Python/Python-2.7.2/Lib/io.py             |    98 -
 .../Python/Python-2.7.2/Lib/json/__init__.py  |   339 -
 .../Python/Python-2.7.2/Lib/json/decoder.py   |   385 -
 .../Python/Python-2.7.2/Lib/json/encoder.py   |   442 -
 .../Python/Python-2.7.2/Lib/json/scanner.py   |    67 -
 .../Python-2.7.2/Lib/json/tests/__init__.py   |    73 -
 .../Lib/json/tests/test_check_circular.py     |    34 -
 .../Lib/json/tests/test_decode.py             |    50 -
 .../Lib/json/tests/test_default.py            |    12 -
 .../Python-2.7.2/Lib/json/tests/test_dump.py  |    23 -
 .../tests/test_encode_basestring_ascii.py     |    41 -
 .../Python-2.7.2/Lib/json/tests/test_fail.py  |    87 -
 .../Python-2.7.2/Lib/json/tests/test_float.py |    22 -
 .../Lib/json/tests/test_indent.py             |    60 -
 .../Python-2.7.2/Lib/json/tests/test_pass1.py |    79 -
 .../Python-2.7.2/Lib/json/tests/test_pass2.py |    18 -
 .../Python-2.7.2/Lib/json/tests/test_pass3.py |    24 -
 .../Lib/json/tests/test_recursion.py          |   108 -
 .../Lib/json/tests/test_scanstring.py         |   109 -
 .../Lib/json/tests/test_separators.py         |    44 -
 .../Lib/json/tests/test_speedups.py           |    23 -
 .../Lib/json/tests/test_unicode.py            |    85 -
 .../Python/Python-2.7.2/Lib/json/tool.py      |    37 -
 .../Python/Python-2.7.2/Lib/keyword.py        |    93 -
 .../Python-2.7.2/Lib/lib2to3/Grammar.txt      |   158 -
 .../Lib/lib2to3/PatternGrammar.txt            |    28 -
 .../Python-2.7.2/Lib/lib2to3/__init__.py      |     1 -
 .../Python-2.7.2/Lib/lib2to3/__main__.py      |     4 -
 .../Python-2.7.2/Lib/lib2to3/btm_matcher.py   |   168 -
 .../Python-2.7.2/Lib/lib2to3/btm_utils.py     |   283 -
 .../Python-2.7.2/Lib/lib2to3/fixer_base.py    |   189 -
 .../Python-2.7.2/Lib/lib2to3/fixer_util.py    |   432 -
 .../Lib/lib2to3/fixes/__init__.py             |     1 -
 .../Lib/lib2to3/fixes/fix_apply.py            |    59 -
 .../Lib/lib2to3/fixes/fix_basestring.py       |    14 -
 .../Lib/lib2to3/fixes/fix_buffer.py           |    22 -
 .../Lib/lib2to3/fixes/fix_callable.py         |    37 -
 .../Lib/lib2to3/fixes/fix_dict.py             |   107 -
 .../Lib/lib2to3/fixes/fix_except.py           |    93 -
 .../Lib/lib2to3/fixes/fix_exec.py             |    40 -
 .../Lib/lib2to3/fixes/fix_execfile.py         |    52 -
 .../Lib/lib2to3/fixes/fix_exitfunc.py         |    72 -
 .../Lib/lib2to3/fixes/fix_filter.py           |    76 -
 .../Lib/lib2to3/fixes/fix_funcattrs.py        |    21 -
 .../Lib/lib2to3/fixes/fix_future.py           |    22 -
 .../Lib/lib2to3/fixes/fix_getcwdu.py          |    19 -
 .../Lib/lib2to3/fixes/fix_has_key.py          |   110 -
 .../Lib/lib2to3/fixes/fix_idioms.py           |   152 -
 .../Lib/lib2to3/fixes/fix_import.py           |    99 -
 .../Lib/lib2to3/fixes/fix_imports.py          |   145 -
 .../Lib/lib2to3/fixes/fix_imports2.py         |    16 -
 .../Lib/lib2to3/fixes/fix_input.py            |    26 -
 .../Lib/lib2to3/fixes/fix_intern.py           |    46 -
 .../Lib/lib2to3/fixes/fix_isinstance.py       |    52 -
 .../Lib/lib2to3/fixes/fix_itertools.py        |    43 -
 .../lib2to3/fixes/fix_itertools_imports.py    |    57 -
 .../Lib/lib2to3/fixes/fix_long.py             |    19 -
 .../Python-2.7.2/Lib/lib2to3/fixes/fix_map.py |    91 -
 .../Lib/lib2to3/fixes/fix_metaclass.py        |   228 -
 .../Lib/lib2to3/fixes/fix_methodattrs.py      |    24 -
 .../Python-2.7.2/Lib/lib2to3/fixes/fix_ne.py  |    23 -
 .../Lib/lib2to3/fixes/fix_next.py             |   103 -
 .../Lib/lib2to3/fixes/fix_nonzero.py          |    21 -
 .../Lib/lib2to3/fixes/fix_numliterals.py      |    28 -
 .../Lib/lib2to3/fixes/fix_operator.py         |    96 -
 .../Lib/lib2to3/fixes/fix_paren.py            |    44 -
 .../Lib/lib2to3/fixes/fix_print.py            |    87 -
 .../Lib/lib2to3/fixes/fix_raise.py            |    90 -
 .../Lib/lib2to3/fixes/fix_raw_input.py        |    17 -
 .../Lib/lib2to3/fixes/fix_reduce.py           |    35 -
 .../Lib/lib2to3/fixes/fix_renames.py          |    70 -
 .../Lib/lib2to3/fixes/fix_repr.py             |    23 -
 .../Lib/lib2to3/fixes/fix_set_literal.py      |    53 -
 .../Lib/lib2to3/fixes/fix_standarderror.py    |    18 -
 .../Lib/lib2to3/fixes/fix_sys_exc.py          |    30 -
 .../Lib/lib2to3/fixes/fix_throw.py            |    56 -
 .../Lib/lib2to3/fixes/fix_tuple_params.py     |   175 -
 .../Lib/lib2to3/fixes/fix_types.py            |    62 -
 .../Lib/lib2to3/fixes/fix_unicode.py          |    25 -
 .../Lib/lib2to3/fixes/fix_urllib.py           |   197 -
 .../Lib/lib2to3/fixes/fix_ws_comma.py         |    39 -
 .../Lib/lib2to3/fixes/fix_xrange.py           |    73 -
 .../Lib/lib2to3/fixes/fix_xreadlines.py       |    25 -
 .../Python-2.7.2/Lib/lib2to3/fixes/fix_zip.py |    35 -
 .../Python/Python-2.7.2/Lib/lib2to3/main.py   |   182 -
 .../Python-2.7.2/Lib/lib2to3/patcomp.py       |   205 -
 .../Lib/lib2to3/pgen2/__init__.py             |     4 -
 .../Python-2.7.2/Lib/lib2to3/pgen2/conv.py    |   257 -
 .../Python-2.7.2/Lib/lib2to3/pgen2/driver.py  |   140 -
 .../Python-2.7.2/Lib/lib2to3/pgen2/grammar.py |   184 -
 .../Lib/lib2to3/pgen2/literals.py             |    60 -
 .../Python-2.7.2/Lib/lib2to3/pgen2/parse.py   |   201 -
 .../Python-2.7.2/Lib/lib2to3/pgen2/pgen.py    |   386 -
 .../Python-2.7.2/Lib/lib2to3/pgen2/token.py   |    82 -
 .../Lib/lib2to3/pgen2/tokenize.py             |   500 -
 .../Python/Python-2.7.2/Lib/lib2to3/pygram.py |    40 -
 .../Python/Python-2.7.2/Lib/lib2to3/pytree.py |   887 -
 .../Python-2.7.2/Lib/lib2to3/refactor.py      |   741 -
 .../Lib/lib2to3/tests/__init__.py             |    24 -
 .../Lib/lib2to3/tests/data/README             |     6 -
 .../Lib/lib2to3/tests/data/bom.py             |     2 -
 .../Lib/lib2to3/tests/data/crlf.py            |     3 -
 .../lib2to3/tests/data/different_encoding.py  |     6 -
 .../lib2to3/tests/data/fixers/bad_order.py    |     5 -
 .../tests/data/fixers/myfixes/__init__.py     |     0
 .../tests/data/fixers/myfixes/fix_explicit.py |     6 -
 .../tests/data/fixers/myfixes/fix_first.py    |     6 -
 .../tests/data/fixers/myfixes/fix_last.py     |     7 -
 .../tests/data/fixers/myfixes/fix_parrot.py   |    13 -
 .../tests/data/fixers/myfixes/fix_preorder.py |     6 -
 .../lib2to3/tests/data/fixers/no_fixer_cls.py |     1 -
 .../tests/data/fixers/parrot_example.py       |     2 -
 .../lib2to3/tests/data/infinite_recursion.py  |  2669 ---
 .../lib2to3/tests/data/py2_test_grammar.py    |   974 -
 .../lib2to3/tests/data/py3_test_grammar.py    |   923 -
 .../Lib/lib2to3/tests/pytree_idempotency.py   |    92 -
 .../Python-2.7.2/Lib/lib2to3/tests/support.py |    54 -
 .../Lib/lib2to3/tests/test_all_fixers.py      |    23 -
 .../Lib/lib2to3/tests/test_fixers.py          |  4529 ----
 .../Lib/lib2to3/tests/test_main.py            |    41 -
 .../Lib/lib2to3/tests/test_parser.py          |   227 -
 .../Lib/lib2to3/tests/test_pytree.py          |   494 -
 .../Lib/lib2to3/tests/test_refactor.py        |   281 -
 .../Lib/lib2to3/tests/test_util.py            |   594 -
 .../Python/Python-2.7.2/Lib/linecache.py      |   135 -
 .../Python/Python-2.7.2/Lib/locale.py         |  1867 --
 .../Python-2.7.2/Lib/logging/__init__.py      |  1707 --
 .../Python/Python-2.7.2/Lib/logging/config.py |   905 -
 .../Python-2.7.2/Lib/logging/handlers.py      |  1158 --
 .../Python/Python-2.7.2/Lib/mailbox.py        |  2171 --
 .../Python/Python-2.7.2/Lib/mailcap.py        |   255 -
 .../Python/Python-2.7.2/Lib/markupbase.py     |   392 -
 .../Python/Python-2.7.2/Lib/md5.py            |    14 -
 .../Python/Python-2.7.2/Lib/mhlib.py          |  1005 -
 .../Python/Python-2.7.2/Lib/mimetools.py      |   250 -
 .../Python/Python-2.7.2/Lib/mimetypes.py      |   591 -
 .../Python/Python-2.7.2/Lib/mimify.py         |   468 -
 .../Python/Python-2.7.2/Lib/modulefinder.py   |   671 -
 .../Python/Python-2.7.2/Lib/multifile.py      |   162 -
 .../Python/Python-2.7.2/Lib/mutex.py          |    55 -
 .../Python/Python-2.7.2/Lib/netrc.py          |   122 -
 .../Python/Python-2.7.2/Lib/new.py            |    17 -
 .../Python/Python-2.7.2/Lib/nntplib.py        |   627 -
 .../Python/Python-2.7.2/Lib/ntpath.py         |   523 -
 .../Python/Python-2.7.2/Lib/nturl2path.py     |    66 -
 .../Python/Python-2.7.2/Lib/numbers.py        |   391 -
 .../Python/Python-2.7.2/Lib/opcode.py         |   192 -
 .../Python/Python-2.7.2/Lib/optparse.py       |  1703 --
 .../Python/Python-2.7.2/Lib/os.py             |   759 -
 .../Python/Python-2.7.2/Lib/pdb.doc           |   202 -
 .../Python/Python-2.7.2/Lib/pdb.py            |  1338 --
 .../Python/Python-2.7.2/Lib/pickle.py         |  1391 --
 .../Python/Python-2.7.2/Lib/pickletools.py    |  2274 --
 .../Python/Python-2.7.2/Lib/pipes.py          |   280 -
 .../Python/Python-2.7.2/Lib/pkgutil.py        |   583 -
 .../Python/Python-2.7.2/Lib/platform.py       |  1614 --
 .../Python/Python-2.7.2/Lib/plistlib.py       |   474 -
 .../Python/Python-2.7.2/Lib/popen2.py         |   201 -
 .../Python/Python-2.7.2/Lib/poplib.py         |   417 -
 .../Python/Python-2.7.2/Lib/posixfile.py      |   237 -
 .../Python/Python-2.7.2/Lib/posixpath.py      |   415 -
 .../Python/Python-2.7.2/Lib/pprint.py         |   350 -
 .../Python/Python-2.7.2/Lib/profile.py        |   619 -
 .../Python/Python-2.7.2/Lib/pstats.py         |   713 -
 .../Python/Python-2.7.2/Lib/pty.py            |   174 -
 .../Python/Python-2.7.2/Lib/py_compile.py     |   170 -
 .../Python/Python-2.7.2/Lib/pyclbr.py         |   342 -
 .../Python/Python-2.7.2/Lib/pydoc.py          |  2337 ---
 .../Python-2.7.2/Lib/pydoc_data/__init__.py   |     0
 .../Python-2.7.2/Lib/pydoc_data/topics.py     |    83 -
 .../Python/Python-2.7.2/Lib/quopri.py         |   237 -
 .../Python/Python-2.7.2/Lib/random.py         |   908 -
 .../Python/Python-2.7.2/Lib/re.py             |   326 -
 .../Python/Python-2.7.2/Lib/repr.py           |   132 -
 .../Python/Python-2.7.2/Lib/rexec.py          |   588 -
 .../Python/Python-2.7.2/Lib/rfc822.py         |  1011 -
 .../Python/Python-2.7.2/Lib/rlcompleter.py    |   170 -
 .../Python/Python-2.7.2/Lib/robotparser.py    |   222 -
 .../Python/Python-2.7.2/Lib/runpy.py          |   278 -
 .../Python/Python-2.7.2/Lib/sched.py          |   134 -
 .../Python/Python-2.7.2/Lib/sets.py           |   557 -
 .../Python/Python-2.7.2/Lib/sgmllib.py        |   553 -
 .../Python/Python-2.7.2/Lib/sha.py            |    15 -
 .../Python/Python-2.7.2/Lib/shelve.py         |   239 -
 .../Python/Python-2.7.2/Lib/shlex.py          |   292 -
 .../Python/Python-2.7.2/Lib/shutil.py         |   552 -
 .../Python-2.7.2/Lib/site-packages/README     |     2 -
 .../Python/Python-2.7.2/Lib/site.py           |   615 -
 .../Python/Python-2.7.2/Lib/smtpd.py          |   555 -
 .../Python/Python-2.7.2/Lib/smtplib.py        |   848 -
 .../Python/Python-2.7.2/Lib/sndhdr.py         |   228 -
 .../Python/Python-2.7.2/Lib/socket.py         |   573 -
 .../Python/Python-2.7.2/Lib/sre.py            |    13 -
 .../Python/Python-2.7.2/Lib/sre_compile.py    |   524 -
 .../Python/Python-2.7.2/Lib/sre_constants.py  |   261 -
 .../Python/Python-2.7.2/Lib/sre_parse.py      |   790 -
 .../Python/Python-2.7.2/Lib/ssl.py            |   464 -
 .../Python/Python-2.7.2/Lib/stat.py           |    94 -
 .../Python/Python-2.7.2/Lib/statvfs.py        |    18 -
 .../Python/Python-2.7.2/Lib/string.py         |   642 -
 .../Python/Python-2.7.2/Lib/stringold.py      |   432 -
 .../Python/Python-2.7.2/Lib/stringprep.py     |   272 -
 .../Python/Python-2.7.2/Lib/struct.py         |     3 -
 .../Python/Python-2.7.2/Lib/symbol.py         |   114 -
 .../Python/Python-2.7.2/Lib/symtable.py       |   242 -
 .../Python/Python-2.7.2/Lib/sysconfig.py      |   687 -
 .../Python/Python-2.7.2/Lib/tabnanny.py       |   329 -
 .../Python/Python-2.7.2/Lib/tarfile.py        |  2594 ---
 .../Python/Python-2.7.2/Lib/telnetlib.py      |   657 -
 .../Python/Python-2.7.2/Lib/tempfile.py       |   606 -
 .../Python/Python-2.7.2/Lib/test/185test.db   |   Bin 16384 -> 0 bytes
 .../Lib/test/Sine-1000Hz-300ms.aif            |   Bin 61696 -> 0 bytes
 .../Python/Python-2.7.2/Lib/test/__init__.py  |     1 -
 .../Python/Python-2.7.2/Lib/test/audiotest.au |   Bin 28144 -> 0 bytes
 .../Python/Python-2.7.2/Lib/test/autotest.py  |     6 -
 .../Python-2.7.2/Lib/test/bad_coding.py       |     1 -
 .../Python-2.7.2/Lib/test/bad_coding2.py      |     2 -
 .../Python/Python-2.7.2/Lib/test/badcert.pem  |    36 -
 .../Python/Python-2.7.2/Lib/test/badkey.pem   |    40 -
 .../Lib/test/badsyntax_future3.py             |    10 -
 .../Lib/test/badsyntax_future4.py             |    10 -
 .../Lib/test/badsyntax_future5.py             |    12 -
 .../Lib/test/badsyntax_future6.py             |    10 -
 .../Lib/test/badsyntax_future7.py             |    11 -
 .../Lib/test/badsyntax_future8.py             |    10 -
 .../Lib/test/badsyntax_future9.py             |    10 -
 .../Lib/test/badsyntax_nocaret.py             |     2 -
 .../Python-2.7.2/Lib/test/buffer_tests.py     |   206 -
 .../Python/Python-2.7.2/Lib/test/cfgparser.1  |     2 -
 .../Python-2.7.2/Lib/test/check_soundcard.vbs |    13 -
 .../Lib/test/cjkencodings/big5-utf8.txt       |     9 -
 .../Lib/test/cjkencodings/big5.txt            |     9 -
 .../Lib/test/cjkencodings/big5hkscs-utf8.txt  |     2 -
 .../Lib/test/cjkencodings/big5hkscs.txt       |     2 -
 .../Lib/test/cjkencodings/cp949-utf8.txt      |     9 -
 .../Lib/test/cjkencodings/cp949.txt           |     9 -
 .../test/cjkencodings/euc_jisx0213-utf8.txt   |     8 -
 .../Lib/test/cjkencodings/euc_jisx0213.txt    |     8 -
 .../Lib/test/cjkencodings/euc_jp-utf8.txt     |     7 -
 .../Lib/test/cjkencodings/euc_jp.txt          |     7 -
 .../Lib/test/cjkencodings/euc_kr-utf8.txt     |     7 -
 .../Lib/test/cjkencodings/euc_kr.txt          |     7 -
 .../Lib/test/cjkencodings/gb18030-utf8.txt    |    15 -
 .../Lib/test/cjkencodings/gb18030.txt         |    15 -
 .../Lib/test/cjkencodings/gb2312-utf8.txt     |     6 -
 .../Lib/test/cjkencodings/gb2312.txt          |     6 -
 .../Lib/test/cjkencodings/gbk-utf8.txt        |    14 -
 .../Lib/test/cjkencodings/gbk.txt             |    14 -
 .../Lib/test/cjkencodings/hz-utf8.txt         |     2 -
 .../Python-2.7.2/Lib/test/cjkencodings/hz.txt |     2 -
 .../Lib/test/cjkencodings/johab-utf8.txt      |     9 -
 .../Lib/test/cjkencodings/johab.txt           |     9 -
 .../Lib/test/cjkencodings/shift_jis-utf8.txt  |     7 -
 .../Lib/test/cjkencodings/shift_jis.txt       |     7 -
 .../test/cjkencodings/shift_jisx0213-utf8.txt |     8 -
 .../Lib/test/cjkencodings/shift_jisx0213.txt  |     8 -
 .../Python-2.7.2/Lib/test/cmath_testcases.txt |  2365 ---
 .../Python-2.7.2/Lib/test/crashers/README     |    16 -
 .../Lib/test/crashers/bogus_code_obj.py       |    19 -
 .../Lib/test/crashers/borrowed_ref_1.py       |    29 -
 .../Lib/test/crashers/borrowed_ref_2.py       |    38 -
 .../Lib/test/crashers/compiler_recursion.py   |     5 -
 .../Lib/test/crashers/gc_has_finalizer.py     |    36 -
 .../Lib/test/crashers/gc_inspection.py        |    32 -
 .../Lib/test/crashers/infinite_loop_re.py     |    16 -
 .../Lib/test/crashers/loosing_mro_ref.py      |    35 -
 .../test/crashers/mutation_inside_cyclegc.py  |    31 -
 .../Lib/test/crashers/nasty_eq_vs_dict.py     |    47 -
 .../test/crashers/recursion_limit_too_high.py |    16 -
 .../Lib/test/crashers/recursive_call.py       |    15 -
 .../Python-2.7.2/Lib/test/curses_tests.py     |    46 -
 .../Python/Python-2.7.2/Lib/test/data/README  |     2 -
 .../Lib/test/decimaltestdata/abs.decTest      |   161 -
 .../Lib/test/decimaltestdata/add.decTest      |  2716 ---
 .../Lib/test/decimaltestdata/and.decTest      |   338 -
 .../Lib/test/decimaltestdata/base.decTest     |  1411 --
 .../Lib/test/decimaltestdata/clamp.decTest    |   211 -
 .../Lib/test/decimaltestdata/class.decTest    |   131 -
 .../Lib/test/decimaltestdata/compare.decTest  |   758 -
 .../test/decimaltestdata/comparetotal.decTest |   798 -
 .../decimaltestdata/comparetotmag.decTest     |   790 -
 .../Lib/test/decimaltestdata/copy.decTest     |    86 -
 .../Lib/test/decimaltestdata/copyabs.decTest  |    86 -
 .../test/decimaltestdata/copynegate.decTest   |    86 -
 .../Lib/test/decimaltestdata/copysign.decTest |   177 -
 .../Lib/test/decimaltestdata/ddAbs.decTest    |   126 -
 .../Lib/test/decimaltestdata/ddAdd.decTest    |  1328 --
 .../Lib/test/decimaltestdata/ddAnd.decTest    |   347 -
 .../Lib/test/decimaltestdata/ddBase.decTest   |  1104 -
 .../test/decimaltestdata/ddCanonical.decTest  |   357 -
 .../Lib/test/decimaltestdata/ddClass.decTest  |    76 -
 .../test/decimaltestdata/ddCompare.decTest    |   744 -
 .../test/decimaltestdata/ddCompareSig.decTest |   647 -
 .../decimaltestdata/ddCompareTotal.decTest    |   706 -
 .../decimaltestdata/ddCompareTotalMag.decTest |   706 -
 .../Lib/test/decimaltestdata/ddCopy.decTest   |    88 -
 .../test/decimaltestdata/ddCopyAbs.decTest    |    88 -
 .../test/decimaltestdata/ddCopyNegate.decTest |    88 -
 .../test/decimaltestdata/ddCopySign.decTest   |   175 -
 .../Lib/test/decimaltestdata/ddDivide.decTest |   863 -
 .../test/decimaltestdata/ddDivideInt.decTest  |   449 -
 .../Lib/test/decimaltestdata/ddEncode.decTest |   495 -
 .../Lib/test/decimaltestdata/ddFMA.decTest    |  1698 --
 .../Lib/test/decimaltestdata/ddInvert.decTest |   202 -
 .../Lib/test/decimaltestdata/ddLogB.decTest   |   159 -
 .../Lib/test/decimaltestdata/ddMax.decTest    |   322 -
 .../Lib/test/decimaltestdata/ddMaxMag.decTest |   304 -
 .../Lib/test/decimaltestdata/ddMin.decTest    |   309 -
 .../Lib/test/decimaltestdata/ddMinMag.decTest |   293 -
 .../Lib/test/decimaltestdata/ddMinus.decTest  |    88 -
 .../test/decimaltestdata/ddMultiply.decTest   |   553 -
 .../test/decimaltestdata/ddNextMinus.decTest  |   126 -
 .../test/decimaltestdata/ddNextPlus.decTest   |   124 -
 .../test/decimaltestdata/ddNextToward.decTest |   374 -
 .../Lib/test/decimaltestdata/ddOr.decTest     |   292 -
 .../Lib/test/decimaltestdata/ddPlus.decTest   |    88 -
 .../test/decimaltestdata/ddQuantize.decTest   |   833 -
 .../Lib/test/decimaltestdata/ddReduce.decTest |   182 -
 .../test/decimaltestdata/ddRemainder.decTest  |   600 -
 .../decimaltestdata/ddRemainderNear.decTest   |   629 -
 .../Lib/test/decimaltestdata/ddRotate.decTest |   262 -
 .../decimaltestdata/ddSameQuantum.decTest     |   389 -
 .../Lib/test/decimaltestdata/ddScaleB.decTest |   243 -
 .../Lib/test/decimaltestdata/ddShift.decTest  |   262 -
 .../test/decimaltestdata/ddSubtract.decTest   |   629 -
 .../test/decimaltestdata/ddToIntegral.decTest |   257 -
 .../Lib/test/decimaltestdata/ddXor.decTest    |   337 -
 .../test/decimaltestdata/decDouble.decTest    |    65 -
 .../Lib/test/decimaltestdata/decQuad.decTest  |    65 -
 .../test/decimaltestdata/decSingle.decTest    |    25 -
 .../Lib/test/decimaltestdata/divide.decTest   |   854 -
 .../test/decimaltestdata/divideint.decTest    |   486 -
 .../Lib/test/decimaltestdata/dqAbs.decTest    |   126 -
 .../Lib/test/decimaltestdata/dqAdd.decTest    |  1215 --
 .../Lib/test/decimaltestdata/dqAnd.decTest    |   420 -
 .../Lib/test/decimaltestdata/dqBase.decTest   |  1081 -
 .../test/decimaltestdata/dqCanonical.decTest  |   372 -
 .../Lib/test/decimaltestdata/dqClass.decTest  |    77 -
 .../test/decimaltestdata/dqCompare.decTest    |   753 -
 .../test/decimaltestdata/dqCompareSig.decTest |   647 -
 .../decimaltestdata/dqCompareTotal.decTest    |   706 -
 .../decimaltestdata/dqCompareTotalMag.decTest |   706 -
 .../Lib/test/decimaltestdata/dqCopy.decTest   |    88 -
 .../test/decimaltestdata/dqCopyAbs.decTest    |    88 -
 .../test/decimaltestdata/dqCopyNegate.decTest |    88 -
 .../test/decimaltestdata/dqCopySign.decTest   |   175 -
 .../Lib/test/decimaltestdata/dqDivide.decTest |   808 -
 .../test/decimaltestdata/dqDivideInt.decTest  |   453 -
 .../Lib/test/decimaltestdata/dqEncode.decTest |   477 -
 .../Lib/test/decimaltestdata/dqFMA.decTest    |  1786 --
 .../Lib/test/decimaltestdata/dqInvert.decTest |   245 -
 .../Lib/test/decimaltestdata/dqLogB.decTest   |   160 -
 .../Lib/test/decimaltestdata/dqMax.decTest    |   322 -
 .../Lib/test/decimaltestdata/dqMaxMag.decTest |   304 -
 .../Lib/test/decimaltestdata/dqMin.decTest    |   309 -
 .../Lib/test/decimaltestdata/dqMinMag.decTest |   293 -
 .../Lib/test/decimaltestdata/dqMinus.decTest  |    88 -
 .../test/decimaltestdata/dqMultiply.decTest   |   589 -
 .../test/decimaltestdata/dqNextMinus.decTest  |   126 -
 .../test/decimaltestdata/dqNextPlus.decTest   |   124 -
 .../test/decimaltestdata/dqNextToward.decTest |   375 -
 .../Lib/test/decimaltestdata/dqOr.decTest     |   401 -
 .../Lib/test/decimaltestdata/dqPlus.decTest   |    88 -
 .../test/decimaltestdata/dqQuantize.decTest   |   836 -
 .../Lib/test/decimaltestdata/dqReduce.decTest |   183 -
 .../test/decimaltestdata/dqRemainder.decTest  |   597 -
 .../decimaltestdata/dqRemainderNear.decTest   |   631 -
 .../Lib/test/decimaltestdata/dqRotate.decTest |   298 -
 .../decimaltestdata/dqSameQuantum.decTest     |   389 -
 .../Lib/test/decimaltestdata/dqScaleB.decTest |   260 -
 .../Lib/test/decimaltestdata/dqShift.decTest  |   298 -
 .../test/decimaltestdata/dqSubtract.decTest   |   635 -
 .../test/decimaltestdata/dqToIntegral.decTest |   257 -
 .../Lib/test/decimaltestdata/dqXor.decTest    |   410 -
 .../Lib/test/decimaltestdata/dsBase.decTest   |  1062 -
 .../Lib/test/decimaltestdata/dsEncode.decTest |   372 -
 .../Lib/test/decimaltestdata/exp.decTest      |   674 -
 .../Lib/test/decimaltestdata/extra.decTest    |  2817 ---
 .../Lib/test/decimaltestdata/fma.decTest      |  3426 ---
 .../Lib/test/decimaltestdata/inexact.decTest  |   215 -
 .../Lib/test/decimaltestdata/invert.decTest   |   176 -
 .../Lib/test/decimaltestdata/ln.decTest       |   611 -
 .../Lib/test/decimaltestdata/log10.decTest    |   551 -
 .../Lib/test/decimaltestdata/logb.decTest     |   188 -
 .../Lib/test/decimaltestdata/max.decTest      |   424 -
 .../Lib/test/decimaltestdata/maxmag.decTest   |   404 -
 .../Lib/test/decimaltestdata/min.decTest      |   407 -
 .../Lib/test/decimaltestdata/minmag.decTest   |   390 -
 .../Lib/test/decimaltestdata/minus.decTest    |   182 -
 .../Lib/test/decimaltestdata/multiply.decTest |   731 -
 .../test/decimaltestdata/nextminus.decTest    |   148 -
 .../Lib/test/decimaltestdata/nextplus.decTest |   150 -
 .../test/decimaltestdata/nexttoward.decTest   |   426 -
 .../Lib/test/decimaltestdata/or.decTest       |   334 -
 .../Lib/test/decimaltestdata/plus.decTest     |   195 -
 .../Lib/test/decimaltestdata/power.decTest    |  1624 --
 .../test/decimaltestdata/powersqrt.decTest    |  2970 ---
 .../Lib/test/decimaltestdata/quantize.decTest |   948 -
 .../decimaltestdata/randomBound32.decTest     |  2443 ---
 .../Lib/test/decimaltestdata/randoms.decTest  |  4030 ----
 .../Lib/test/decimaltestdata/reduce.decTest   |   234 -
 .../test/decimaltestdata/remainder.decTest    |   640 -
 .../decimaltestdata/remainderNear.decTest     |   572 -
 .../Lib/test/decimaltestdata/rescale.decTest  |   764 -
 .../Lib/test/decimaltestdata/rotate.decTest   |   247 -
 .../Lib/test/decimaltestdata/rounding.decTest |  1303 --
 .../test/decimaltestdata/samequantum.decTest  |   389 -
 .../Lib/test/decimaltestdata/scaleb.decTest   |   209 -
 .../Lib/test/decimaltestdata/shift.decTest    |   250 -
 .../test/decimaltestdata/squareroot.decTest   |  3834 ----
 .../Lib/test/decimaltestdata/subtract.decTest |   873 -
 .../Lib/test/decimaltestdata/testall.decTest  |    87 -
 .../test/decimaltestdata/tointegral.decTest   |   241 -
 .../test/decimaltestdata/tointegralx.decTest  |   255 -
 .../Lib/test/decimaltestdata/xor.decTest      |   335 -
 .../Python-2.7.2/Lib/test/doctest_aliases.py  |    13 -
 .../Python-2.7.2/Lib/test/double_const.py     |    30 -
 .../Python/Python-2.7.2/Lib/test/empty.vbs    |     1 -
 .../Lib/test/exception_hierarchy.txt          |    50 -
 .../Python-2.7.2/Lib/test/floating_points.txt |  1028 -
 .../Python/Python-2.7.2/Lib/test/fork_wait.py |    79 -
 .../Lib/test/formatfloat_testcases.txt        |   380 -
 .../Python-2.7.2/Lib/test/gdb_sample.py       |    12 -
 .../Python/Python-2.7.2/Lib/test/greyrgb.uue  |  1547 --
 .../Lib/test/https_svn_python_org_root.pem    |    41 -
 .../Python/Python-2.7.2/Lib/test/ieee754.txt  |   185 -
 .../Python-2.7.2/Lib/test/infinite_reload.py  |     8 -
 .../Python-2.7.2/Lib/test/inspect_fodder.py   |    56 -
 .../Python-2.7.2/Lib/test/inspect_fodder2.py  |    99 -
 .../Python/Python-2.7.2/Lib/test/keycert.pem  |    32 -
 .../Python-2.7.2/Lib/test/leakers/README.txt  |    32 -
 .../Python-2.7.2/Lib/test/leakers/__init__.py |     0
 .../Lib/test/leakers/test_ctypes.py           |    16 -
 .../Lib/test/leakers/test_dictself.py         |    12 -
 .../Lib/test/leakers/test_gestalt.py          |    14 -
 .../Lib/test/leakers/test_selftype.py         |    13 -
 .../Python-2.7.2/Lib/test/list_tests.py       |   534 -
 .../Python-2.7.2/Lib/test/lock_tests.py       |   546 -
 .../Python-2.7.2/Lib/test/mapping_tests.py    |   682 -
 .../Python-2.7.2/Lib/test/math_testcases.txt  |   447 -
 .../Python/Python-2.7.2/Lib/test/nullcert.pem |     0
 .../Python-2.7.2/Lib/test/outstanding_bugs.py |    22 -
 .../Python-2.7.2/Lib/test/pickletester.py     |  1259 --
 .../Python/Python-2.7.2/Lib/test/profilee.py  |   115 -
 .../Python-2.7.2/Lib/test/pyclbr_input.py     |    33 -
 .../Python/Python-2.7.2/Lib/test/pydoc_mod.py |    27 -
 .../Python-2.7.2/Lib/test/pydocfodder.py      |   216 -
 .../Python/Python-2.7.2/Lib/test/pystone.py   |   270 -
 .../Python-2.7.2/Lib/test/randv2_32.pck       |   633 -
 .../Python-2.7.2/Lib/test/randv2_64.pck       |   633 -
 .../Python/Python-2.7.2/Lib/test/randv3.pck   |   633 -
 .../Python/Python-2.7.2/Lib/test/re_tests.py  |   674 -
 .../Python-2.7.2/Lib/test/regex_tests.py      |   287 -
 .../Python/Python-2.7.2/Lib/test/regrtest.py  |  1536 --
 .../Python/Python-2.7.2/Lib/test/relimport.py |     1 -
 .../Python/Python-2.7.2/Lib/test/reperf.py    |    23 -
 .../Python-2.7.2/Lib/test/sample_doctest.py   |    76 -
 .../Python-2.7.2/Lib/test/script_helper.py    |   164 -
 .../Python/Python-2.7.2/Lib/test/seq_tests.py |   392 -
 .../Python-2.7.2/Lib/test/sgml_input.html     |   212 -
 .../Python/Python-2.7.2/Lib/test/sha256.pem   |   129 -
 .../Python/Python-2.7.2/Lib/test/sortperf.py  |   169 -
 .../Python/Python-2.7.2/Lib/test/ssl_cert.pem |    14 -
 .../Python/Python-2.7.2/Lib/test/ssl_key.pem  |     9 -
 .../Python-2.7.2/Lib/test/string_tests.py     |  1333 --
 .../test/subprocessdata/sigchild_ignore.py    |     6 -
 .../Lib/test/svn_python_org_https_cert.pem    |    31 -
 .../Python-2.7.2/Lib/test/test_MimeWriter.py  |   292 -
 .../Lib/test/test_SimpleHTTPServer.py         |    41 -
 .../Python-2.7.2/Lib/test/test_StringIO.py    |   150 -
 .../Python-2.7.2/Lib/test/test___all__.py     |   123 -
 .../Python-2.7.2/Lib/test/test___future__.py  |    66 -
 .../Python-2.7.2/Lib/test/test__locale.py     |   137 -
 .../Python/Python-2.7.2/Lib/test/test_abc.py  |   233 -
 .../Lib/test/test_abstract_numbers.py         |    52 -
 .../Python-2.7.2/Lib/test/test_aepack.py      |    90 -
 .../Python/Python-2.7.2/Lib/test/test_aifc.py |   115 -
 .../Python/Python-2.7.2/Lib/test/test_al.py   |    25 -
 .../Python-2.7.2/Lib/test/test_anydbm.py      |    97 -
 .../Python-2.7.2/Lib/test/test_applesingle.py |    71 -
 .../Python-2.7.2/Lib/test/test_argparse.py    |  4646 -----
 .../Python-2.7.2/Lib/test/test_array.py       |  1095 -
 .../Lib/test/test_ascii_formatd.py            |    58 -
 .../Python/Python-2.7.2/Lib/test/test_ast.py  |   382 -
 .../Python-2.7.2/Lib/test/test_asynchat.py    |   273 -
 .../Python-2.7.2/Lib/test/test_asyncore.py    |   722 -
 .../Python-2.7.2/Lib/test/test_atexit.py      |    82 -
 .../Python-2.7.2/Lib/test/test_audioop.py     |   206 -
 .../Python-2.7.2/Lib/test/test_augassign.py   |   331 -
 .../Python-2.7.2/Lib/test/test_base64.py      |   190 -
 .../Python-2.7.2/Lib/test/test_bastion.py     |     3 -
 .../Lib/test/test_bigaddrspace.py             |    46 -
 .../Python-2.7.2/Lib/test/test_bigmem.py      |  1073 -
 .../Python-2.7.2/Lib/test/test_binascii.py    |   236 -
 .../Python-2.7.2/Lib/test/test_binhex.py      |    49 -
 .../Python-2.7.2/Lib/test/test_binop.py       |   331 -
 .../Python-2.7.2/Lib/test/test_bisect.py      |   317 -
 .../Python/Python-2.7.2/Lib/test/test_bool.py |   371 -
 .../Python-2.7.2/Lib/test/test_bsddb.py       |   357 -
 .../Python-2.7.2/Lib/test/test_bsddb185.py    |    43 -
 .../Python-2.7.2/Lib/test/test_bsddb3.py      |    81 -
 .../Python-2.7.2/Lib/test/test_buffer.py      |    31 -
 .../Python-2.7.2/Lib/test/test_bufio.py       |    79 -
 .../Python-2.7.2/Lib/test/test_builtin.py     |  1708 --
 .../Python-2.7.2/Lib/test/test_bytes.py       |  1119 -
 .../Python/Python-2.7.2/Lib/test/test_bz2.py  |   422 -
 .../Python-2.7.2/Lib/test/test_calendar.py    |   457 -
 .../Python/Python-2.7.2/Lib/test/test_call.py |   134 -
 .../Python/Python-2.7.2/Lib/test/test_capi.py |   140 -
 .../Python/Python-2.7.2/Lib/test/test_cd.py   |    30 -
 .../Python-2.7.2/Lib/test/test_cfgparser.py   |   598 -
 .../Python/Python-2.7.2/Lib/test/test_cgi.py  |   386 -
 .../Lib/test/test_charmapcodec.py             |    56 -
 .../Python/Python-2.7.2/Lib/test/test_cl.py   |    82 -
 .../Python-2.7.2/Lib/test/test_class.py       |   626 -
 .../Python-2.7.2/Lib/test/test_cmath.py       |   474 -
 .../Python/Python-2.7.2/Lib/test/test_cmd.py  |   217 -
 .../Python-2.7.2/Lib/test/test_cmd_line.py    |    95 -
 .../Lib/test/test_cmd_line_script.py          |   213 -
 .../Python/Python-2.7.2/Lib/test/test_code.py |   147 -
 .../Lib/test/test_codeccallbacks.py           |   804 -
 .../Lib/test/test_codecencodings_cn.py        |    86 -
 .../Lib/test/test_codecencodings_hk.py        |    27 -
 .../Lib/test/test_codecencodings_jp.py        |   105 -
 .../Lib/test/test_codecencodings_kr.py        |    69 -
 .../Lib/test/test_codecencodings_tw.py        |    27 -
 .../Lib/test/test_codecmaps_cn.py             |    33 -
 .../Lib/test/test_codecmaps_hk.py             |    21 -
 .../Lib/test/test_codecmaps_jp.py             |    67 -
 .../Lib/test/test_codecmaps_kr.py             |    44 -
 .../Lib/test/test_codecmaps_tw.py             |    31 -
 .../Python-2.7.2/Lib/test/test_codecs.py      |  1614 --
 .../Python-2.7.2/Lib/test/test_codeop.py      |   304 -
 .../Python-2.7.2/Lib/test/test_coding.py      |    37 -
 .../Python-2.7.2/Lib/test/test_coercion.py    |   348 -
 .../Python-2.7.2/Lib/test/test_collections.py |  1042 -
 .../Python-2.7.2/Lib/test/test_colorsys.py    |    76 -
 .../Python-2.7.2/Lib/test/test_commands.py    |    74 -
 .../Python-2.7.2/Lib/test/test_compare.py     |    58 -
 .../Python-2.7.2/Lib/test/test_compile.py     |   498 -
 .../Python-2.7.2/Lib/test/test_compileall.py  |    80 -
 .../Python-2.7.2/Lib/test/test_compiler.py    |   317 -
 .../Python-2.7.2/Lib/test/test_complex.py     |   651 -
 .../Lib/test/test_complex_args.py             |   118 -
 .../Python-2.7.2/Lib/test/test_contains.py    |   111 -
 .../Python-2.7.2/Lib/test/test_contextlib.py  |   326 -
 .../Python-2.7.2/Lib/test/test_cookie.py      |    98 -
 .../Python-2.7.2/Lib/test/test_cookielib.py   |  1762 --
 .../Python/Python-2.7.2/Lib/test/test_copy.py |   712 -
 .../Python-2.7.2/Lib/test/test_copy_reg.py    |   121 -
 .../Python-2.7.2/Lib/test/test_cpickle.py     |   139 -
 .../Python-2.7.2/Lib/test/test_cprofile.py    |   127 -
 .../Python-2.7.2/Lib/test/test_crypt.py       |    17 -
 .../Python/Python-2.7.2/Lib/test/test_csv.py  |  1055 -
 .../Python-2.7.2/Lib/test/test_ctypes.py      |    15 -
 .../Python-2.7.2/Lib/test/test_curses.py      |   290 -
 .../Python-2.7.2/Lib/test/test_datetime.py    |  3367 ---
 .../Python/Python-2.7.2/Lib/test/test_dbm.py  |    42 -
 .../Python-2.7.2/Lib/test/test_decimal.py     |  2339 ---
 .../Python-2.7.2/Lib/test/test_decorators.py  |   309 -
 .../Python-2.7.2/Lib/test/test_defaultdict.py |   179 -
 .../Python-2.7.2/Lib/test/test_deque.py       |   787 -
 .../Python-2.7.2/Lib/test/test_descr.py       |  4659 -----
 .../Python-2.7.2/Lib/test/test_descrtut.py    |   497 -
 .../Python/Python-2.7.2/Lib/test/test_dict.py |   676 -
 .../Python-2.7.2/Lib/test/test_dictcomps.py   |    54 -
 .../Python-2.7.2/Lib/test/test_dictviews.py   |   154 -
 .../Python-2.7.2/Lib/test/test_difflib.py     |   272 -
 .../Lib/test/test_difflib_expect.html         |   526 -
 .../Python-2.7.2/Lib/test/test_dircache.py    |    77 -
 .../Python/Python-2.7.2/Lib/test/test_dis.py  |   150 -
 .../Python-2.7.2/Lib/test/test_distutils.py   |    18 -
 .../Python/Python-2.7.2/Lib/test/test_dl.py   |    39 -
 .../Python-2.7.2/Lib/test/test_doctest.py     |  2615 ---
 .../Python-2.7.2/Lib/test/test_doctest.txt    |    17 -
 .../Python-2.7.2/Lib/test/test_doctest2.py    |   124 -
 .../Python-2.7.2/Lib/test/test_doctest2.txt   |    14 -
 .../Python-2.7.2/Lib/test/test_doctest3.txt   |     5 -
 .../Python-2.7.2/Lib/test/test_doctest4.txt   |    17 -
 .../Python-2.7.2/Lib/test/test_docxmlrpc.py   |   201 -
 .../Python-2.7.2/Lib/test/test_dumbdbm.py     |   179 -
 .../Lib/test/test_dummy_thread.py             |   182 -
 .../Lib/test/test_dummy_threading.py          |    63 -
 .../Python-2.7.2/Lib/test/test_email.py       |    12 -
 .../Lib/test/test_email_codecs.py             |    15 -
 .../Lib/test/test_email_renamed.py            |    12 -
 .../Python-2.7.2/Lib/test/test_enumerate.py   |   255 -
 .../Python/Python-2.7.2/Lib/test/test_eof.py  |    32 -
 .../Python-2.7.2/Lib/test/test_epoll.py       |   221 -
 .../Python-2.7.2/Lib/test/test_errno.py       |    40 -
 .../Lib/test/test_exception_variations.py     |   180 -
 .../Python-2.7.2/Lib/test/test_exceptions.py  |   620 -
 .../Python-2.7.2/Lib/test/test_extcall.py     |   319 -
 .../Python-2.7.2/Lib/test/test_fcntl.py       |   108 -
 .../Python/Python-2.7.2/Lib/test/test_file.py |   347 -
 .../Python-2.7.2/Lib/test/test_file2k.py      |   680 -
 .../Python-2.7.2/Lib/test/test_filecmp.py     |   134 -
 .../Python-2.7.2/Lib/test/test_fileinput.py   |   225 -
 .../Python-2.7.2/Lib/test/test_fileio.py      |   434 -
 .../Python-2.7.2/Lib/test/test_float.py       |  1396 --
 .../Python-2.7.2/Lib/test/test_fnmatch.py     |    72 -
 .../Python-2.7.2/Lib/test/test_fork1.py       |    71 -
 .../Python-2.7.2/Lib/test/test_format.py      |   297 -
 .../Python-2.7.2/Lib/test/test_fpformat.py    |    76 -
 .../Python-2.7.2/Lib/test/test_fractions.py   |   587 -
 .../Python-2.7.2/Lib/test/test_frozen.py      |    47 -
 .../Python-2.7.2/Lib/test/test_ftplib.py      |   778 -
 .../Python-2.7.2/Lib/test/test_funcattrs.py   |   353 -
 .../Python-2.7.2/Lib/test/test_functools.py   |   478 -
 .../Python-2.7.2/Lib/test/test_future.py      |   119 -
 .../Python-2.7.2/Lib/test/test_future1.py     |    11 -
 .../Python-2.7.2/Lib/test/test_future2.py     |    10 -
 .../Python-2.7.2/Lib/test/test_future3.py     |    30 -
 .../Python-2.7.2/Lib/test/test_future4.py     |    47 -
 .../Python-2.7.2/Lib/test/test_future5.py     |    21 -
 .../Lib/test/test_future_builtins.py          |    38 -
 .../Python/Python-2.7.2/Lib/test/test_gc.py   |   639 -
 .../Python/Python-2.7.2/Lib/test/test_gdb.py  |   702 -
 .../Python/Python-2.7.2/Lib/test/test_gdbm.py |    82 -
 .../Python-2.7.2/Lib/test/test_generators.py  |  1906 --
 .../Python-2.7.2/Lib/test/test_genericpath.py |   256 -
 .../Python-2.7.2/Lib/test/test_genexps.py     |   282 -
 .../Python-2.7.2/Lib/test/test_getargs.py     |    31 -
 .../Python-2.7.2/Lib/test/test_getargs2.py    |   335 -
 .../Python-2.7.2/Lib/test/test_getopt.py      |   187 -
 .../Python-2.7.2/Lib/test/test_gettext.py     |   467 -
 .../Python/Python-2.7.2/Lib/test/test_gl.py   |   155 -
 .../Python/Python-2.7.2/Lib/test/test_glob.py |   114 -
 .../Python-2.7.2/Lib/test/test_global.py      |    52 -
 .../Python-2.7.2/Lib/test/test_grammar.py     |   999 -
 .../Python/Python-2.7.2/Lib/test/test_grp.py  |    97 -
 .../Python/Python-2.7.2/Lib/test/test_gzip.py |   281 -
 .../Python/Python-2.7.2/Lib/test/test_hash.py |   144 -
 .../Python-2.7.2/Lib/test/test_hashlib.py     |   361 -
 .../Python-2.7.2/Lib/test/test_heapq.py       |   393 -
 .../Python/Python-2.7.2/Lib/test/test_hmac.py |   314 -
 .../Python-2.7.2/Lib/test/test_hotshot.py     |   158 -
 .../Python-2.7.2/Lib/test/test_htmllib.py     |    69 -
 .../Python-2.7.2/Lib/test/test_htmlparser.py  |   351 -
 .../Python-2.7.2/Lib/test/test_httplib.py     |   447 -
 .../Python-2.7.2/Lib/test/test_httpservers.py |   529 -
 .../Python-2.7.2/Lib/test/test_imageop.py     |   211 -
 .../Python-2.7.2/Lib/test/test_imaplib.py     |   240 -
 .../Python-2.7.2/Lib/test/test_imgfile.py     |   119 -
 .../Python/Python-2.7.2/Lib/test/test_imp.py  |    81 -
 .../Python-2.7.2/Lib/test/test_import.py      |   460 -
 .../Python-2.7.2/Lib/test/test_importhooks.py |   255 -
 .../Python-2.7.2/Lib/test/test_importlib.py   |   176 -
 .../Python-2.7.2/Lib/test/test_index.py       |   323 -
 .../Python-2.7.2/Lib/test/test_inspect.py     |   752 -
 .../Python/Python-2.7.2/Lib/test/test_int.py  |   406 -
 .../Python-2.7.2/Lib/test/test_int_literal.py |   188 -
 .../Python/Python-2.7.2/Lib/test/test_io.py   |  2782 ---
 .../Python-2.7.2/Lib/test/test_ioctl.py       |    93 -
 .../Python-2.7.2/Lib/test/test_isinstance.py  |   277 -
 .../Python/Python-2.7.2/Lib/test/test_iter.py |   917 -
 .../Python-2.7.2/Lib/test/test_iterlen.py     |   257 -
 .../Python-2.7.2/Lib/test/test_itertools.py   |  1650 --
 .../Python/Python-2.7.2/Lib/test/test_json.py |    17 -
 .../Python-2.7.2/Lib/test/test_kqueue.py      |   196 -
 .../Python-2.7.2/Lib/test/test_largefile.py   |   200 -
 .../Python-2.7.2/Lib/test/test_lib2to3.py     |    21 -
 .../Python-2.7.2/Lib/test/test_linecache.py   |   131 -
 .../Lib/test/test_linuxaudiodev.py            |    99 -
 .../Python/Python-2.7.2/Lib/test/test_list.py |    78 -
 .../Python-2.7.2/Lib/test/test_locale.py      |   420 -
 .../Python-2.7.2/Lib/test/test_logging.py     |  1886 --
 .../Python/Python-2.7.2/Lib/test/test_long.py |   914 -
 .../Python-2.7.2/Lib/test/test_long_future.py |   221 -
 .../Python-2.7.2/Lib/test/test_longexp.py     |    14 -
 .../Python-2.7.2/Lib/test/test_macos.py       |    98 -
 .../Python-2.7.2/Lib/test/test_macostools.py  |    88 -
 .../Python-2.7.2/Lib/test/test_macpath.py     |    57 -
 .../Python-2.7.2/Lib/test/test_mailbox.py     |  1970 --
 .../Python-2.7.2/Lib/test/test_marshal.py     |   283 -
 .../Python/Python-2.7.2/Lib/test/test_math.py |  1030 -
 .../Python/Python-2.7.2/Lib/test/test_md5.py  |    61 -
 .../Python-2.7.2/Lib/test/test_memoryio.py    |   707 -
 .../Python-2.7.2/Lib/test/test_memoryview.py  |   361 -
 .../Python-2.7.2/Lib/test/test_mhlib.py       |   348 -
 .../Python-2.7.2/Lib/test/test_mimetools.py   |    53 -
 .../Python-2.7.2/Lib/test/test_mimetypes.py   |    94 -
 .../Python-2.7.2/Lib/test/test_minidom.py     |  1477 --
 .../Python/Python-2.7.2/Lib/test/test_mmap.py |   704 -
 .../Python-2.7.2/Lib/test/test_module.py      |    85 -
 .../Lib/test/test_modulefinder.py             |   286 -
 .../Python-2.7.2/Lib/test/test_msilib.py      |    46 -
 .../Lib/test/test_multibytecodec.py           |   274 -
 .../Lib/test/test_multibytecodec_support.py   |   338 -
 .../Python-2.7.2/Lib/test/test_multifile.py   |    67 -
 .../Lib/test/test_multiprocessing.py          |  2110 --
 .../Python-2.7.2/Lib/test/test_mutants.py     |   292 -
 .../Python-2.7.2/Lib/test/test_mutex.py       |    35 -
 .../Python-2.7.2/Lib/test/test_netrc.py       |   110 -
 .../Python/Python-2.7.2/Lib/test/test_new.py  |   163 -
 .../Python/Python-2.7.2/Lib/test/test_nis.py  |    44 -
 .../Lib/test/test_normalization.py            |   102 -
 .../Python-2.7.2/Lib/test/test_ntpath.py      |   203 -
 .../Python-2.7.2/Lib/test/test_old_mailbox.py |   152 -
 .../Python-2.7.2/Lib/test/test_opcodes.py     |   121 -
 .../Python-2.7.2/Lib/test/test_openpty.py     |    23 -
 .../Python-2.7.2/Lib/test/test_operator.py    |   532 -
 .../Python-2.7.2/Lib/test/test_optparse.py    |  1619 --
 .../Python/Python-2.7.2/Lib/test/test_os.py   |   824 -
 .../Python-2.7.2/Lib/test/test_ossaudiodev.py |   174 -
 .../Python-2.7.2/Lib/test/test_parser.py      |   596 -
 .../Python/Python-2.7.2/Lib/test/test_pdb.py  |   287 -
 .../Python-2.7.2/Lib/test/test_peepholer.py   |   243 -
 .../Python-2.7.2/Lib/test/test_pep247.py      |    74 -
 .../Python-2.7.2/Lib/test/test_pep263.py      |    48 -
 .../Python-2.7.2/Lib/test/test_pep277.py      |   210 -
 .../Python-2.7.2/Lib/test/test_pep292.py      |   193 -
 .../Python-2.7.2/Lib/test/test_pep352.py      |   239 -
 .../Python-2.7.2/Lib/test/test_pickle.py      |    80 -
 .../Python-2.7.2/Lib/test/test_pickletools.py |    24 -
 .../Python-2.7.2/Lib/test/test_pipes.py       |   204 -
 .../Python/Python-2.7.2/Lib/test/test_pkg.py  |   292 -
 .../Python-2.7.2/Lib/test/test_pkgimport.py   |    83 -
 .../Python-2.7.2/Lib/test/test_pkgutil.py     |   130 -
 .../Python-2.7.2/Lib/test/test_platform.py    |   254 -
 .../Python-2.7.2/Lib/test/test_plistlib.py    |   192 -
 .../Python/Python-2.7.2/Lib/test/test_poll.py |   157 -
 .../Python-2.7.2/Lib/test/test_popen.py       |    52 -
 .../Python-2.7.2/Lib/test/test_popen2.py      |   130 -
 .../Python-2.7.2/Lib/test/test_poplib.py      |   343 -
 .../Python-2.7.2/Lib/test/test_posix.py       |   429 -
 .../Python-2.7.2/Lib/test/test_posixpath.py   |   348 -
 .../Python/Python-2.7.2/Lib/test/test_pow.py  |   129 -
 .../Python-2.7.2/Lib/test/test_pprint.py      |   432 -
 .../Python-2.7.2/Lib/test/test_print.py       |   141 -
 .../Python-2.7.2/Lib/test/test_profile.py     |   186 -
 .../Python-2.7.2/Lib/test/test_property.py    |   231 -
 .../Python-2.7.2/Lib/test/test_pstats.py      |    32 -
 .../Python/Python-2.7.2/Lib/test/test_pty.py  |   200 -
 .../Python/Python-2.7.2/Lib/test/test_pwd.py  |   100 -
 .../Python-2.7.2/Lib/test/test_py3kwarn.py    |   426 -
 .../Python-2.7.2/Lib/test/test_pyclbr.py      |   197 -
 .../Python-2.7.2/Lib/test/test_pydoc.py       |   367 -
 .../Python-2.7.2/Lib/test/test_pyexpat.py     |   604 -
 .../Python-2.7.2/Lib/test/test_queue.py       |   322 -
 .../Python-2.7.2/Lib/test/test_quopri.py      |   201 -
 .../Python-2.7.2/Lib/test/test_random.py      |   572 -
 .../Python/Python-2.7.2/Lib/test/test_re.py   |   889 -
 .../Python-2.7.2/Lib/test/test_readline.py    |    43 -
 .../Python/Python-2.7.2/Lib/test/test_repr.py |   327 -
 .../Python-2.7.2/Lib/test/test_resource.py    |   110 -
 .../Python-2.7.2/Lib/test/test_rfc822.py      |   257 -
 .../Python-2.7.2/Lib/test/test_richcmp.py     |   338 -
 .../Python-2.7.2/Lib/test/test_rlcompleter.py |    73 -
 .../Python-2.7.2/Lib/test/test_robotparser.py |   261 -
 .../Python-2.7.2/Lib/test/test_runpy.py       |   402 -
 .../Python/Python-2.7.2/Lib/test/test_sax.py  |   753 -
 .../Python-2.7.2/Lib/test/test_scope.py       |   664 -
 .../Lib/test/test_scriptpackages.py           |    51 -
 .../Python-2.7.2/Lib/test/test_select.py      |    58 -
 .../Python/Python-2.7.2/Lib/test/test_set.py  |  1781 --
 .../Python-2.7.2/Lib/test/test_setcomps.py    |   151 -
 .../Python/Python-2.7.2/Lib/test/test_sets.py |   862 -
 .../Python-2.7.2/Lib/test/test_sgmllib.py     |   439 -
 .../Python/Python-2.7.2/Lib/test/test_sha.py  |    56 -
 .../Python-2.7.2/Lib/test/test_shelve.py      |   163 -
 .../Python-2.7.2/Lib/test/test_shlex.py       |   191 -
 .../Python-2.7.2/Lib/test/test_shutil.py      |   831 -
 .../Python-2.7.2/Lib/test/test_signal.py      |   493 -
 .../Python/Python-2.7.2/Lib/test/test_site.py |   392 -
 .../Python-2.7.2/Lib/test/test_slice.py       |   134 -
 .../Python-2.7.2/Lib/test/test_smtplib.py     |   518 -
 .../Python-2.7.2/Lib/test/test_smtpnet.py     |    31 -
 .../Python-2.7.2/Lib/test/test_socket.py      |  1618 --
 .../Lib/test/test_socketserver.py             |   284 -
 .../Python-2.7.2/Lib/test/test_softspace.py   |    23 -
 .../Python/Python-2.7.2/Lib/test/test_sort.py |   292 -
 .../Python-2.7.2/Lib/test/test_sqlite.py      |    16 -
 .../Python/Python-2.7.2/Lib/test/test_ssl.py  |  1360 --
 .../Python-2.7.2/Lib/test/test_startfile.py   |    45 -
 .../Python/Python-2.7.2/Lib/test/test_str.py  |   434 -
 .../Python-2.7.2/Lib/test/test_strftime.py    |   185 -
 .../Python-2.7.2/Lib/test/test_string.py      |   217 -
 .../Python-2.7.2/Lib/test/test_stringprep.py  |    96 -
 .../Python-2.7.2/Lib/test/test_strop.py       |   153 -
 .../Python-2.7.2/Lib/test/test_strptime.py    |   562 -
 .../Python-2.7.2/Lib/test/test_strtod.py      |   399 -
 .../Python-2.7.2/Lib/test/test_struct.py      |   551 -
 .../Lib/test/test_structmembers.py            |   108 -
 .../Python-2.7.2/Lib/test/test_structseq.py   |   120 -
 .../Python-2.7.2/Lib/test/test_subprocess.py  |  1053 -
 .../Python-2.7.2/Lib/test/test_sunaudiodev.py |    33 -
 .../Python-2.7.2/Lib/test/test_sundry.py      |    96 -
 .../Python-2.7.2/Lib/test/test_support.py     |  1233 --
 .../Python-2.7.2/Lib/test/test_symtable.py    |   184 -
 .../Python-2.7.2/Lib/test/test_syntax.py      |   572 -
 .../Python/Python-2.7.2/Lib/test/test_sys.py  |   794 -
 .../Lib/test/test_sys_setprofile.py           |   386 -
 .../Lib/test/test_sys_settrace.py             |   789 -
 .../Python-2.7.2/Lib/test/test_sysconfig.py   |   316 -
 .../Python-2.7.2/Lib/test/test_tarfile.py     |  1637 --
 .../Python/Python-2.7.2/Lib/test/test_tcl.py  |   160 -
 .../Python-2.7.2/Lib/test/test_telnetlib.py   |   372 -
 .../Python-2.7.2/Lib/test/test_tempfile.py    |   856 -
 .../Python-2.7.2/Lib/test/test_textwrap.py    |   610 -
 .../Python-2.7.2/Lib/test/test_thread.py      |   242 -
 .../Lib/test/test_threaded_import.py          |    76 -
 .../Lib/test/test_threadedtempfile.py         |    78 -
 .../Python-2.7.2/Lib/test/test_threading.py   |   734 -
 .../Lib/test/test_threading_local.py          |   234 -
 .../Lib/test/test_threadsignals.py            |    85 -
 .../Python/Python-2.7.2/Lib/test/test_time.py |   250 -
 .../Python-2.7.2/Lib/test/test_timeout.py     |   202 -
 .../Python/Python-2.7.2/Lib/test/test_tk.py   |    35 -
 .../Python-2.7.2/Lib/test/test_tokenize.py    |   596 -
 .../Python-2.7.2/Lib/test/test_trace.py       |   341 -
 .../Python-2.7.2/Lib/test/test_traceback.py   |   204 -
 .../Python-2.7.2/Lib/test/test_transformer.py |    38 -
 .../Python-2.7.2/Lib/test/test_ttk_guionly.py |    40 -
 .../Lib/test/test_ttk_textonly.py             |    19 -
 .../Python-2.7.2/Lib/test/test_tuple.py       |   161 -
 .../Python-2.7.2/Lib/test/test_typechecks.py  |    93 -
 .../Python-2.7.2/Lib/test/test_types.py       |   756 -
 .../Python/Python-2.7.2/Lib/test/test_ucn.py  |   144 -
 .../Python-2.7.2/Lib/test/test_unary.py       |    59 -
 .../Lib/test/test_undocumented_details.py     |    39 -
 .../Python-2.7.2/Lib/test/test_unicode.py     |  1404 --
 .../Lib/test/test_unicode_file.py             |   200 -
 .../Python-2.7.2/Lib/test/test_unicodedata.py |   317 -
 .../Python-2.7.2/Lib/test/test_unittest.py    |    12 -
 .../Lib/test/test_univnewlines.py             |   135 -
 .../Lib/test/test_univnewlines2k.py           |   130 -
 .../Python-2.7.2/Lib/test/test_unpack.py      |   130 -
 .../Python-2.7.2/Lib/test/test_urllib.py      |   786 -
 .../Python-2.7.2/Lib/test/test_urllib2.py     |  1327 --
 .../Lib/test/test_urllib2_localnet.py         |   539 -
 .../Python-2.7.2/Lib/test/test_urllib2net.py  |   319 -
 .../Python-2.7.2/Lib/test/test_urllibnet.py   |   205 -
 .../Python-2.7.2/Lib/test/test_urlparse.py    |   513 -
 .../Python-2.7.2/Lib/test/test_userdict.py    |   350 -
 .../Python-2.7.2/Lib/test/test_userlist.py    |    61 -
 .../Python-2.7.2/Lib/test/test_userstring.py  |   147 -
 .../Python/Python-2.7.2/Lib/test/test_uu.py   |   201 -
 .../Python/Python-2.7.2/Lib/test/test_uuid.py |   482 -
 .../Python-2.7.2/Lib/test/test_wait3.py       |    39 -
 .../Python-2.7.2/Lib/test/test_wait4.py       |    32 -
 .../Python-2.7.2/Lib/test/test_warnings.py    |   749 -
 .../Python/Python-2.7.2/Lib/test/test_wave.py |    45 -
 .../Python-2.7.2/Lib/test/test_weakref.py     |  1256 --
 .../Python-2.7.2/Lib/test/test_weakset.py     |   377 -
 .../Python-2.7.2/Lib/test/test_whichdb.py     |    68 -
 .../Python-2.7.2/Lib/test/test_winreg.py      |   416 -
 .../Python-2.7.2/Lib/test/test_winsound.py    |   255 -
 .../Python/Python-2.7.2/Lib/test/test_with.py |   750 -
 .../Python-2.7.2/Lib/test/test_wsgiref.py     |   630 -
 .../Python-2.7.2/Lib/test/test_xdrlib.py      |    58 -
 .../Python-2.7.2/Lib/test/test_xml_etree.py   |  1886 --
 .../Python-2.7.2/Lib/test/test_xml_etree_c.py |    55 -
 .../Python-2.7.2/Lib/test/test_xmllib.py      |    48 -
 .../Python-2.7.2/Lib/test/test_xmlrpc.py      |  1018 -
 .../Python-2.7.2/Lib/test/test_xpickle.py     |   260 -
 .../Python-2.7.2/Lib/test/test_xrange.py      |   143 -
 .../Python-2.7.2/Lib/test/test_zipfile.py     |  1362 --
 .../Python-2.7.2/Lib/test/test_zipfile64.py   |   124 -
 .../Python-2.7.2/Lib/test/test_zipimport.py   |   472 -
 .../Lib/test/test_zipimport_support.py        |   238 -
 .../Python/Python-2.7.2/Lib/test/test_zlib.py |   572 -
 .../Python/Python-2.7.2/Lib/test/testall.py   |    10 -
 .../Python/Python-2.7.2/Lib/test/testcodec.py |    48 -
 .../Python/Python-2.7.2/Lib/test/testimg.uue  |  1170 --
 .../Python/Python-2.7.2/Lib/test/testimgr.uue |  1170 --
 .../Python/Python-2.7.2/Lib/test/testrgb.uue  |   971 -
 .../Python/Python-2.7.2/Lib/test/testtar.tar  |   Bin 281088 -> 0 bytes
 .../Python-2.7.2/Lib/test/tf_inherit_check.py |    25 -
 .../Lib/test/threaded_import_hangers.py       |    42 -
 .../Python-2.7.2/Lib/test/time_hashlib.py     |    87 -
 .../Python-2.7.2/Lib/test/tokenize_tests.txt  |   178 -
 .../Lib/test/tracedmodules/__init__.py        |     4 -
 .../Lib/test/tracedmodules/testmod.py         |     9 -
 .../Python-2.7.2/Lib/test/warning_tests.py    |     9 -
 .../Lib/test/win_console_handler.py           |    49 -
 .../Python-2.7.2/Lib/test/wrongcert.pem       |    32 -
 .../Lib/test/xmltestdata/simple-ns.xml        |     7 -
 .../Lib/test/xmltestdata/simple.xml           |     6 -
 .../Lib/test/xmltestdata/test.xml             |   115 -
 .../Lib/test/xmltestdata/test.xml.out         |   115 -
 .../Python/Python-2.7.2/Lib/test/xmltests.py  |    21 -
 .../Python/Python-2.7.2/Lib/test/zipdir.zip   |   Bin 374 -> 0 bytes
 .../Python/Python-2.7.2/Lib/textwrap.py       |   417 -
 .../Python/Python-2.7.2/Lib/this.py           |    28 -
 .../Python/Python-2.7.2/Lib/timeit.py         |   328 -
 .../Python/Python-2.7.2/Lib/toaiff.py         |   110 -
 .../Python/Python-2.7.2/Lib/token.py          |   142 -
 .../Python/Python-2.7.2/Lib/tokenize.py       |   424 -
 .../Python/Python-2.7.2/Lib/trace.py          |   827 -
 .../Python/Python-2.7.2/Lib/traceback.py      |   319 -
 .../Python/Python-2.7.2/Lib/tty.py            |    36 -
 .../Python/Python-2.7.2/Lib/types.py          |    84 -
 .../Python-2.7.2/Lib/unittest/__init__.py     |    69 -
 .../Python-2.7.2/Lib/unittest/__main__.py     |    12 -
 .../Python/Python-2.7.2/Lib/unittest/case.py  |  1070 -
 .../Python-2.7.2/Lib/unittest/loader.py       |   314 -
 .../Python/Python-2.7.2/Lib/unittest/main.py  |   233 -
 .../Python-2.7.2/Lib/unittest/result.py       |   193 -
 .../Python-2.7.2/Lib/unittest/runner.py       |   196 -
 .../Python-2.7.2/Lib/unittest/signals.py      |    57 -
 .../Python/Python-2.7.2/Lib/unittest/suite.py |   303 -
 .../Lib/unittest/test/__init__.py             |    21 -
 .../Python-2.7.2/Lib/unittest/test/dummy.py   |     1 -
 .../Python-2.7.2/Lib/unittest/test/support.py |   119 -
 .../Lib/unittest/test/test_assertions.py      |   286 -
 .../Lib/unittest/test/test_break.py           |   252 -
 .../Lib/unittest/test/test_case.py            |  1109 -
 .../Lib/unittest/test/test_discovery.py       |   362 -
 .../unittest/test/test_functiontestcase.py    |   148 -
 .../Lib/unittest/test/test_loader.py          |  1286 --
 .../Lib/unittest/test/test_program.py         |   255 -
 .../Lib/unittest/test/test_result.py          |   567 -
 .../Lib/unittest/test/test_runner.py          |   253 -
 .../Lib/unittest/test/test_setups.py          |   508 -
 .../Lib/unittest/test/test_skipping.py        |   138 -
 .../Lib/unittest/test/test_suite.py           |   367 -
 .../Python/Python-2.7.2/Lib/unittest/util.py  |   156 -
 .../Python/Python-2.7.2/Lib/urllib.py         |  1646 --
 .../Python/Python-2.7.2/Lib/urllib2.py        |  1448 --
 .../Python/Python-2.7.2/Lib/urlparse.py       |   397 -
 .../Python/Python-2.7.2/Lib/user.py           |    48 -
 .../Python/Python-2.7.2/Lib/uu.py             |   196 -
 .../Python/Python-2.7.2/Lib/uuid.py           |   560 -
 .../Python/Python-2.7.2/Lib/warnings.py       |   400 -
 .../Python/Python-2.7.2/Lib/wave.py           |   504 -
 .../Python/Python-2.7.2/Lib/weakref.py        |   379 -
 .../Python/Python-2.7.2/Lib/webbrowser.py     |   673 -
 .../Python/Python-2.7.2/Lib/whichdb.py        |   117 -
 .../Python/Python-2.7.2/Lib/wsgiref.egg-info  |     8 -
 .../Python-2.7.2/Lib/wsgiref/__init__.py      |    23 -
 .../Python-2.7.2/Lib/wsgiref/handlers.py      |   448 -
 .../Python-2.7.2/Lib/wsgiref/headers.py       |   169 -
 .../Python-2.7.2/Lib/wsgiref/simple_server.py |   155 -
 .../Python/Python-2.7.2/Lib/wsgiref/util.py   |   165 -
 .../Python-2.7.2/Lib/wsgiref/validate.py      |   432 -
 .../Python/Python-2.7.2/Lib/xdrlib.py         |   231 -
 .../Python/Python-2.7.2/Lib/xml/__init__.py   |    41 -
 .../Python-2.7.2/Lib/xml/dom/NodeFilter.py    |    27 -
 .../Python-2.7.2/Lib/xml/dom/__init__.py      |   139 -
 .../Python/Python-2.7.2/Lib/xml/dom/domreg.py |    99 -
 .../Python-2.7.2/Lib/xml/dom/expatbuilder.py  |   983 -
 .../Python-2.7.2/Lib/xml/dom/minicompat.py    |   110 -
 .../Python-2.7.2/Lib/xml/dom/minidom.py       |  1937 --
 .../Python-2.7.2/Lib/xml/dom/pulldom.py       |   351 -
 .../Python-2.7.2/Lib/xml/dom/xmlbuilder.py    |   386 -
 .../Lib/xml/etree/ElementInclude.py           |   143 -
 .../Python-2.7.2/Lib/xml/etree/ElementPath.py |   303 -
 .../Python-2.7.2/Lib/xml/etree/ElementTree.py |  1649 --
 .../Python-2.7.2/Lib/xml/etree/__init__.py    |    33 -
 .../Lib/xml/etree/cElementTree.py             |     3 -
 .../Python-2.7.2/Lib/xml/parsers/__init__.py  |     8 -
 .../Python-2.7.2/Lib/xml/parsers/expat.py     |     4 -
 .../Python-2.7.2/Lib/xml/sax/__init__.py      |   108 -
 .../Python-2.7.2/Lib/xml/sax/_exceptions.py   |   131 -
 .../Python-2.7.2/Lib/xml/sax/expatreader.py   |   414 -
 .../Python-2.7.2/Lib/xml/sax/handler.py       |   342 -
 .../Python-2.7.2/Lib/xml/sax/saxutils.py      |   308 -
 .../Python-2.7.2/Lib/xml/sax/xmlreader.py     |   381 -
 .../Python/Python-2.7.2/Lib/xmllib.py         |   930 -
 .../Python/Python-2.7.2/Lib/xmlrpclib.py      |  1636 --
 .../Python/Python-2.7.2/Lib/zipfile.py        |  1437 --
 .../Python-2.7.2/Modules/_bisectmodule.c      |   241 -
 .../Python-2.7.2/Modules/_codecsmodule.c      |  1116 -
 .../Python-2.7.2/Modules/_collectionsmodule.c |  1634 --
 .../Python/Python-2.7.2/Modules/_csv.c        |  1611 --
 .../Python-2.7.2/Modules/_elementtree.c       |  3079 ---
 .../Python-2.7.2/Modules/_functoolsmodule.c   |   402 -
 .../Python-2.7.2/Modules/_hashopenssl.c       |   597 -
 .../Python-2.7.2/Modules/_heapqmodule.c       |   697 -
 .../Python/Python-2.7.2/Modules/_hotshot.c    |  1643 --
 .../Python-2.7.2/Modules/_io/_iomodule.c      |   768 -
 .../Python-2.7.2/Modules/_io/_iomodule.h      |   165 -
 .../Python-2.7.2/Modules/_io/bufferedio.c     |  2389 ---
 .../Python/Python-2.7.2/Modules/_io/bytesio.c |   887 -
 .../Python/Python-2.7.2/Modules/_io/fileio.c  |  1095 -
 .../Python/Python-2.7.2/Modules/_io/iobase.c  |   893 -
 .../Python-2.7.2/Modules/_io/stringio.c       |   882 -
 .../Python/Python-2.7.2/Modules/_io/textio.c  |  2617 ---
 .../Python/Python-2.7.2/Modules/_json.c       |  2421 ---
 .../Python-2.7.2/Modules/_localemodule.c      |   758 -
 .../Python/Python-2.7.2/Modules/_lsprof.c     |   892 -
 .../Python/Python-2.7.2/Modules/_math.c       |   232 -
 .../Python/Python-2.7.2/Modules/_math.h       |    45 -
 .../Python-2.7.2/Modules/_randommodule.c      |   580 -
 .../Python-2.7.2/Modules/_sqlite/cache.c      |   375 -
 .../Python-2.7.2/Modules/_sqlite/cache.h      |    73 -
 .../Python-2.7.2/Modules/_sqlite/connection.c |  1664 --
 .../Python-2.7.2/Modules/_sqlite/connection.h |   138 -
 .../Python-2.7.2/Modules/_sqlite/cursor.c     |  1126 -
 .../Python-2.7.2/Modules/_sqlite/cursor.h     |    74 -
 .../Modules/_sqlite/microprotocols.c          |   142 -
 .../Modules/_sqlite/microprotocols.h          |    55 -
 .../Python-2.7.2/Modules/_sqlite/module.c     |   457 -
 .../Python-2.7.2/Modules/_sqlite/module.h     |    58 -
 .../Modules/_sqlite/prepare_protocol.c        |    84 -
 .../Modules/_sqlite/prepare_protocol.h        |    41 -
 .../Python/Python-2.7.2/Modules/_sqlite/row.c |   256 -
 .../Python/Python-2.7.2/Modules/_sqlite/row.h |    39 -
 .../Modules/_sqlite/sqlitecompat.h            |    63 -
 .../Python-2.7.2/Modules/_sqlite/statement.c  |   543 -
 .../Python-2.7.2/Modules/_sqlite/statement.h  |    59 -
 .../Python-2.7.2/Modules/_sqlite/util.c       |   106 -
 .../Python-2.7.2/Modules/_sqlite/util.h       |    38 -
 .../Python/Python-2.7.2/Modules/_sre.c        |  3921 ----
 .../Python/Python-2.7.2/Modules/_ssl.c        |  1751 --
 .../Python/Python-2.7.2/Modules/_struct.c     |  2048 --
 .../Python-2.7.2/Modules/_testcapimodule.c    |  1897 --
 .../Python/Python-2.7.2/Modules/_weakref.c    |   112 -
 .../Python/Python-2.7.2/Modules/addrinfo.h    |   178 -
 .../Python/Python-2.7.2/Modules/arraymodule.c |  2246 --
 .../Python/Python-2.7.2/Modules/binascii.c    |  1531 --
 .../Python/Python-2.7.2/Modules/bz2module.c   |  2344 ---
 .../Python/Python-2.7.2/Modules/cPickle.c     |  6023 ------
 .../Python/Python-2.7.2/Modules/cStringIO.c   |   752 -
 .../Python-2.7.2/Modules/cjkcodecs/README     |    79 -
 .../Modules/cjkcodecs/_codecs_cn.c            |   444 -
 .../Modules/cjkcodecs/_codecs_hk.c            |   183 -
 .../Modules/cjkcodecs/_codecs_iso2022.c       |  1131 -
 .../Modules/cjkcodecs/_codecs_jp.c            |   731 -
 .../Modules/cjkcodecs/_codecs_kr.c            |   452 -
 .../Modules/cjkcodecs/_codecs_tw.c            |   132 -
 .../Modules/cjkcodecs/alg_jisx0201.h          |    24 -
 .../Modules/cjkcodecs/cjkcodecs.h             |   398 -
 .../Modules/cjkcodecs/emu_jisx0213_2000.h     |    43 -
 .../Modules/cjkcodecs/mappings_cn.h           |  4103 ----
 .../Modules/cjkcodecs/mappings_hk.h           |  2378 ---
 .../cjkcodecs/mappings_jisx0213_pair.h        |    59 -
 .../Modules/cjkcodecs/mappings_jp.h           |  4765 -----
 .../Modules/cjkcodecs/mappings_kr.h           |  3251 ---
 .../Modules/cjkcodecs/mappings_tw.h           |  2633 ---
 .../Modules/cjkcodecs/multibytecodec.c        |  1829 --
 .../Modules/cjkcodecs/multibytecodec.h        |   141 -
 .../Python/Python-2.7.2/Modules/cmathmodule.c |  1210 --
 .../Python/Python-2.7.2/Modules/cryptmodule.c |    49 -
 .../Python-2.7.2/Modules/datetimemodule.c     |  5117 -----
 .../Python/Python-2.7.2/Modules/errnomodule.c |   845 -
 .../Python/Python-2.7.2/Modules/expat/COPYING |    21 -
 .../Python-2.7.2/Modules/expat/amigaconfig.h  |    96 -
 .../Python/Python-2.7.2/Modules/expat/ascii.h |    85 -
 .../Python-2.7.2/Modules/expat/asciitab.h     |    36 -
 .../Python/Python-2.7.2/Modules/expat/expat.h |  1013 -
 .../Python-2.7.2/Modules/expat/expat_config.h |    19 -
 .../Modules/expat/expat_external.h            |   121 -
 .../Python-2.7.2/Modules/expat/iasciitab.h    |    37 -
 .../Python-2.7.2/Modules/expat/internal.h     |    73 -
 .../Python-2.7.2/Modules/expat/latin1tab.h    |    36 -
 .../Python-2.7.2/Modules/expat/macconfig.h    |    53 -
 .../Python-2.7.2/Modules/expat/nametab.h      |   150 -
 .../Python-2.7.2/Modules/expat/pyexpatns.h    |   124 -
 .../Python-2.7.2/Modules/expat/utf8tab.h      |    37 -
 .../Python-2.7.2/Modules/expat/winconfig.h    |    30 -
 .../Python-2.7.2/Modules/expat/xmlparse.c     |  6279 ------
 .../Python-2.7.2/Modules/expat/xmlrole.c      |  1330 --
 .../Python-2.7.2/Modules/expat/xmlrole.h      |   114 -
 .../Python-2.7.2/Modules/expat/xmltok.c       |  1639 --
 .../Python-2.7.2/Modules/expat/xmltok.h       |   316 -
 .../Python-2.7.2/Modules/expat/xmltok_impl.c  |  1779 --
 .../Python-2.7.2/Modules/expat/xmltok_impl.h  |    46 -
 .../Python-2.7.2/Modules/expat/xmltok_ns.c    |   106 -
 .../Python/Python-2.7.2/Modules/fcntlmodule.c |   620 -
 .../Python/Python-2.7.2/Modules/flmodule.c    |  2144 --
 .../Python/Python-2.7.2/Modules/fmmodule.c    |   269 -
 .../Python-2.7.2/Modules/fpectlmodule.c       |   303 -
 .../Python-2.7.2/Modules/fpetestmodule.c      |   186 -
 .../Python-2.7.2/Modules/future_builtins.c    |   105 -
 .../Python-2.7.2/Modules/gc_weakref.txt       |   219 -
 .../Python/Python-2.7.2/Modules/gcmodule.c    |  1516 --
 .../Python/Python-2.7.2/Modules/getaddrinfo.c |   638 -
 .../Python-2.7.2/Modules/getbuildinfo.c       |    85 -
 .../Python/Python-2.7.2/Modules/getnameinfo.c |   222 -
 .../Python/Python-2.7.2/Modules/getpath.c     |   698 -
 .../Python/Python-2.7.2/Modules/imageop.c     |   794 -
 .../Python-2.7.2/Modules/itertoolsmodule.c    |  4097 ----
 .../Python/Python-2.7.2/Modules/main.c        |   663 -
 .../Python/Python-2.7.2/Modules/mathmodule.c  |  1624 --
 .../Python/Python-2.7.2/Modules/md5.c         |   394 -
 .../Python/Python-2.7.2/Modules/md5.h         |    91 -
 .../Python/Python-2.7.2/Modules/md5module.c   |   315 -
 .../Python/Python-2.7.2/Modules/operator.c    |   802 -
 .../Python-2.7.2/Modules/parsermodule.c       |  3464 ----
 .../Python/Python-2.7.2/Modules/posixmodule.c |  9396 ---------
 .../Python/Python-2.7.2/Modules/puremodule.c  |   992 -
 .../Python/Python-2.7.2/Modules/pwdmodule.c   |   200 -
 .../Python/Python-2.7.2/Modules/pyexpat.c     |  2123 --
 .../Python/Python-2.7.2/Modules/python.c      |    24 -
 .../Python/Python-2.7.2/Modules/readline.c    |  1144 -
 .../Python/Python-2.7.2/Modules/resource.c    |   329 -
 .../Python-2.7.2/Modules/rotatingtree.c       |   121 -
 .../Python-2.7.2/Modules/rotatingtree.h       |    27 -
 .../Python-2.7.2/Modules/selectmodule.c       |  1912 --
 .../Python-2.7.2/Modules/sha256module.c       |   706 -
 .../Python-2.7.2/Modules/sha512module.c       |   774 -
 .../Python/Python-2.7.2/Modules/shamodule.c   |   597 -
 .../Python-2.7.2/Modules/signalmodule.c       |   986 -
 .../Python-2.7.2/Modules/socketmodule.c       |  5454 -----
 .../Python-2.7.2/Modules/socketmodule.h       |   250 -
 .../Python/Python-2.7.2/Modules/sre.h         |    94 -
 .../Python-2.7.2/Modules/sre_constants.h      |    86 -
 .../Python/Python-2.7.2/Modules/stropmodule.c |  1270 --
 .../Python-2.7.2/Modules/symtablemodule.c     |    83 -
 .../Python-2.7.2/Modules/testcapi_long.h      |   182 -
 .../Python-2.7.2/Modules/threadmodule.c       |   931 -
 .../Python/Python-2.7.2/Modules/timemodule.c  |  1054 -
 .../Python/Python-2.7.2/Modules/timing.h      |    64 -
 .../Python-2.7.2/Modules/timingmodule.c       |    62 -
 .../Python/Python-2.7.2/Modules/unicodedata.c |  1280 --
 .../Python-2.7.2/Modules/unicodedata_db.h     |  6202 ------
 .../Python-2.7.2/Modules/unicodename_db.h     | 17259 ----------------
 .../Python/Python-2.7.2/Modules/xxmodule.c    |   379 -
 .../Python/Python-2.7.2/Modules/xxsubtype.c   |   297 -
 .../Python/Python-2.7.2/Modules/yuv.h         |    99 -
 .../Python/Python-2.7.2/Modules/yuvconvert.c  |   118 -
 .../Python/Python-2.7.2/Modules/zipimport.c   |  1229 --
 .../Python-2.7.2/Modules/zlib/ChangeLog       |   855 -
 .../Python/Python-2.7.2/Modules/zlib/FAQ      |   339 -
 .../Python/Python-2.7.2/Modules/zlib/INDEX    |    51 -
 .../Python/Python-2.7.2/Modules/zlib/Makefile |   154 -
 .../Python-2.7.2/Modules/zlib/Makefile.in     |   154 -
 .../Python/Python-2.7.2/Modules/zlib/README   |   125 -
 .../Python-2.7.2/Modules/zlib/adler32.c       |   149 -
 .../Python-2.7.2/Modules/zlib/algorithm.txt   |   209 -
 .../Python-2.7.2/Modules/zlib/compress.c      |    79 -
 .../Python-2.7.2/Modules/zlib/configure       |   459 -
 .../Python/Python-2.7.2/Modules/zlib/crc32.c  |   423 -
 .../Python/Python-2.7.2/Modules/zlib/crc32.h  |   441 -
 .../Python-2.7.2/Modules/zlib/deflate.c       |  1736 --
 .../Python-2.7.2/Modules/zlib/deflate.h       |   331 -
 .../Python-2.7.2/Modules/zlib/example.c       |   565 -
 .../Python/Python-2.7.2/Modules/zlib/gzio.c   |  1026 -
 .../Python-2.7.2/Modules/zlib/infback.c       |   623 -
 .../Python-2.7.2/Modules/zlib/inffast.c       |   318 -
 .../Python-2.7.2/Modules/zlib/inffast.h       |    11 -
 .../Python-2.7.2/Modules/zlib/inffixed.h      |    94 -
 .../Python-2.7.2/Modules/zlib/inflate.c       |  1368 --
 .../Python-2.7.2/Modules/zlib/inflate.h       |   115 -
 .../Python-2.7.2/Modules/zlib/inftrees.c      |   329 -
 .../Python-2.7.2/Modules/zlib/inftrees.h      |    55 -
 .../Python-2.7.2/Modules/zlib/make_vms.com    |   461 -
 .../Python-2.7.2/Modules/zlib/minigzip.c      |   322 -
 .../Python/Python-2.7.2/Modules/zlib/trees.c  |  1219 --
 .../Python/Python-2.7.2/Modules/zlib/trees.h  |   128 -
 .../Python-2.7.2/Modules/zlib/uncompr.c       |    61 -
 .../Python/Python-2.7.2/Modules/zlib/zconf.h  |   332 -
 .../Python-2.7.2/Modules/zlib/zconf.in.h      |   332 -
 .../Python/Python-2.7.2/Modules/zlib/zlib.3   |   159 -
 .../Python/Python-2.7.2/Modules/zlib/zlib.h   |  1357 --
 .../Python/Python-2.7.2/Modules/zlib/zutil.c  |   318 -
 .../Python/Python-2.7.2/Modules/zlib/zutil.h  |   277 -
 .../Python/Python-2.7.2/Modules/zlibmodule.c  |  1058 -
 .../Python/Python-2.7.2/Objects/abstract.c    |  3113 ---
 .../Python/Python-2.7.2/Objects/boolobject.c  |   202 -
 .../Python-2.7.2/Objects/bufferobject.c       |   857 -
 .../Python-2.7.2/Objects/bytearrayobject.c    |  3044 ---
 .../Python-2.7.2/Objects/bytes_methods.c      |   398 -
 .../Python/Python-2.7.2/Objects/capsule.c     |   324 -
 .../Python/Python-2.7.2/Objects/cellobject.c  |   145 -
 .../Python/Python-2.7.2/Objects/classobject.c |  2672 ---
 .../Python/Python-2.7.2/Objects/cobject.c     |   172 -
 .../Python/Python-2.7.2/Objects/codeobject.c  |   581 -
 .../Python-2.7.2/Objects/complexobject.c      |  1353 --
 .../Python/Python-2.7.2/Objects/descrobject.c |  1385 --
 .../Python/Python-2.7.2/Objects/dictnotes.txt |   270 -
 .../Python/Python-2.7.2/Objects/dictobject.c  |  3210 ---
 .../Python/Python-2.7.2/Objects/enumobject.c  |   381 -
 .../Python/Python-2.7.2/Objects/exceptions.c  |  2215 --
 .../Python/Python-2.7.2/Objects/fileobject.c  |  2822 ---
 .../Python/Python-2.7.2/Objects/floatobject.c |  2693 ---
 .../Python/Python-2.7.2/Objects/frameobject.c |   982 -
 .../Python/Python-2.7.2/Objects/funcobject.c  |   897 -
 .../Python/Python-2.7.2/Objects/genobject.c   |   414 -
 .../Python/Python-2.7.2/Objects/intobject.c   |  1550 --
 .../Python/Python-2.7.2/Objects/iterobject.c  |   230 -
 .../Python/Python-2.7.2/Objects/listobject.c  |  3044 ---
 .../Python/Python-2.7.2/Objects/listsort.txt  |   677 -
 .../Python-2.7.2/Objects/lnotab_notes.txt     |   124 -
 .../Python/Python-2.7.2/Objects/longobject.c  |  4381 ----
 .../Python-2.7.2/Objects/memoryobject.c       |   842 -
 .../Python-2.7.2/Objects/methodobject.c       |   427 -
 .../Python-2.7.2/Objects/moduleobject.c       |   260 -
 .../Python/Python-2.7.2/Objects/object.c      |  2455 ---
 .../Python/Python-2.7.2/Objects/obmalloc.c    |  1888 --
 .../Python/Python-2.7.2/Objects/rangeobject.c |   322 -
 .../Python/Python-2.7.2/Objects/setobject.c   |  2518 ---
 .../Python/Python-2.7.2/Objects/sliceobject.c |   361 -
 .../Python-2.7.2/Objects/stringlib/README.txt |    40 -
 .../Python-2.7.2/Objects/stringlib/count.h    |    30 -
 .../Python-2.7.2/Objects/stringlib/ctype.h    |   109 -
 .../Objects/stringlib/fastsearch.h            |   160 -
 .../Python-2.7.2/Objects/stringlib/find.h     |   175 -
 .../Objects/stringlib/formatter.h             |  1531 --
 .../Objects/stringlib/localeutil.h            |   227 -
 .../Objects/stringlib/partition.h             |   110 -
 .../Python-2.7.2/Objects/stringlib/split.h    |   394 -
 .../Objects/stringlib/string_format.h         |  1364 --
 .../Objects/stringlib/stringdefs.h            |    33 -
 .../Objects/stringlib/transmogrify.h          |   264 -
 .../Objects/stringlib/unicodedefs.h           |    37 -
 .../Python-2.7.2/Objects/stringobject.c       |  4824 -----
 .../Python/Python-2.7.2/Objects/structseq.c   |   539 -
 .../Python/Python-2.7.2/Objects/tupleobject.c |  1052 -
 .../Python/Python-2.7.2/Objects/typeobject.c  |  6712 ------
 .../Python-2.7.2/Objects/unicodectype.c       |   215 -
 .../Python-2.7.2/Objects/unicodeobject.c      |  8888 --------
 .../Python-2.7.2/Objects/unicodetype_db.h     |  3337 ---
 .../Python-2.7.2/Objects/weakrefobject.c      |   975 -
 .../Python/Python-2.7.2/Parser/Python.asdl    |   115 -
 .../Python/Python-2.7.2/Parser/acceler.c      |   125 -
 .../Python/Python-2.7.2/Parser/asdl.py        |   413 -
 .../Python/Python-2.7.2/Parser/asdl_c.py      |  1220 --
 .../Python/Python-2.7.2/Parser/bitset.c       |    66 -
 .../Python/Python-2.7.2/Parser/firstsets.c    |   113 -
 .../Python/Python-2.7.2/Parser/grammar.c      |   254 -
 .../Python/Python-2.7.2/Parser/grammar1.c     |    57 -
 .../Python/Python-2.7.2/Parser/intrcheck.c    |   178 -
 .../Python/Python-2.7.2/Parser/listnode.c     |    66 -
 .../Python/Python-2.7.2/Parser/metagrammar.c  |   159 -
 .../Python/Python-2.7.2/Parser/myreadline.c   |   221 -
 .../Python/Python-2.7.2/Parser/node.c         |   138 -
 .../Python/Python-2.7.2/Parser/parser.c       |   436 -
 .../Python/Python-2.7.2/Parser/parser.h       |    42 -
 .../Python/Python-2.7.2/Parser/parsetok.c     |   295 -
 .../Python/Python-2.7.2/Parser/pgen.c         |   708 -
 .../Python/Python-2.7.2/Parser/pgenmain.c     |   173 -
 .../Python/Python-2.7.2/Parser/printgrammar.c |   117 -
 .../Python/Python-2.7.2/Parser/spark.py       |   839 -
 .../Python/Python-2.7.2/Parser/tokenizer.c    |  1726 --
 .../Python/Python-2.7.2/Parser/tokenizer.h    |    70 -
 .../Python-2.7.2/Parser/tokenizer_pgen.c      |     2 -
 .../Python/Python-2.7.2/Python/Python-ast.c   |  6763 ------
 .../Python/Python-2.7.2/Python/_warnings.c    |   909 -
 .../Python/Python-2.7.2/Python/asdl.c         |    64 -
 .../Python/Python-2.7.2/Python/ast.c          |  3558 ----
 .../Python/Python-2.7.2/Python/atof.c         |    50 -
 .../Python/Python-2.7.2/Python/bltinmodule.c  |  3043 ---
 .../Python/Python-2.7.2/Python/ceval.c        |  4895 -----
 .../Python/Python-2.7.2/Python/codecs.c       |   872 -
 .../Python/Python-2.7.2/Python/compile.c      |  3979 ----
 .../Python/Python-2.7.2/Python/dtoa.c         |  2918 ---
 .../Python/Python-2.7.2/Python/dup2.c         |    31 -
 .../Python/Python-2.7.2/Python/dynload_aix.c  |   183 -
 .../Python-2.7.2/Python/dynload_atheos.c      |    47 -
 .../Python/Python-2.7.2/Python/dynload_beos.c |   254 -
 .../Python/Python-2.7.2/Python/dynload_dl.c   |    26 -
 .../Python/Python-2.7.2/Python/dynload_hpux.c |    58 -
 .../Python/Python-2.7.2/Python/dynload_next.c |   114 -
 .../Python/Python-2.7.2/Python/dynload_os2.c  |    46 -
 .../Python-2.7.2/Python/dynload_shlib.c       |   143 -
 .../Python/Python-2.7.2/Python/dynload_stub.c |    11 -
 .../Python/Python-2.7.2/Python/dynload_win.c  |   274 -
 .../Python/Python-2.7.2/Python/errors.c       |   805 -
 .../Python-2.7.2/Python/formatter_string.c    |    17 -
 .../Python-2.7.2/Python/formatter_unicode.c   |    18 -
 .../Python/Python-2.7.2/Python/frozen.c       |    38 -
 .../Python/Python-2.7.2/Python/frozenmain.c   |    68 -
 .../Python/Python-2.7.2/Python/future.c       |   142 -
 .../Python/Python-2.7.2/Python/getargs.c      |  1907 --
 .../Python/Python-2.7.2/Python/getcompiler.c  |    28 -
 .../Python/Python-2.7.2/Python/getcopyright.c |    36 -
 .../Python/Python-2.7.2/Python/getcwd.c       |    82 -
 .../Python/Python-2.7.2/Python/getopt.c       |   126 -
 .../Python/Python-2.7.2/Python/getplatform.c  |    12 -
 .../Python/Python-2.7.2/Python/getversion.c   |    15 -
 .../Python/Python-2.7.2/Python/graminit.c     |  2177 --
 .../Python/Python-2.7.2/Python/import.c       |  3398 ---
 .../Python/Python-2.7.2/Python/importdl.c     |    78 -
 .../Python/Python-2.7.2/Python/importdl.h     |    53 -
 .../Python-2.7.2/Python/mactoolboxglue.c      |   474 -
 .../Python/Python-2.7.2/Python/marshal.c      |  1422 --
 .../Python/Python-2.7.2/Python/modsupport.c   |   644 -
 .../Python/Python-2.7.2/Python/mysnprintf.c   |   105 -
 .../Python/Python-2.7.2/Python/mystrtoul.c    |   285 -
 .../Python/Python-2.7.2/Python/peephole.c     |   680 -
 .../Python/Python-2.7.2/Python/pyarena.c      |   220 -
 .../Python/Python-2.7.2/Python/pyctype.c      |   214 -
 .../Python/Python-2.7.2/Python/pyfpe.c        |    23 -
 .../Python/Python-2.7.2/Python/pymath.c       |    79 -
 .../Python/Python-2.7.2/Python/pystate.c      |   680 -
 .../Python/Python-2.7.2/Python/pystrcmp.c     |    26 -
 .../Python/Python-2.7.2/Python/pystrtod.c     |  1249 --
 .../Python/Python-2.7.2/Python/pythonrun.c    |  2004 --
 .../Python/Python-2.7.2/Python/sigcheck.c     |    19 -
 .../Python/Python-2.7.2/Python/strdup.c       |    14 -
 .../Python/Python-2.7.2/Python/strtod.c       |   159 -
 .../Python/Python-2.7.2/Python/structmember.c |   363 -
 .../Python/Python-2.7.2/Python/symtable.c     |  1554 --
 .../Python/Python-2.7.2/Python/sysmodule.c    |  1779 --
 .../Python/Python-2.7.2/Python/thread.c       |   421 -
 .../Python-2.7.2/Python/thread_atheos.h       |   259 -
 .../Python/Python-2.7.2/Python/thread_beos.h  |   248 -
 .../Python-2.7.2/Python/thread_cthread.h      |   112 -
 .../Python-2.7.2/Python/thread_foobar.h       |    75 -
 .../Python/Python-2.7.2/Python/thread_lwp.h   |   113 -
 .../Python/Python-2.7.2/Python/thread_nt.h    |   359 -
 .../Python/Python-2.7.2/Python/thread_os2.h   |   267 -
 .../Python/Python-2.7.2/Python/thread_pth.h   |   178 -
 .../Python-2.7.2/Python/thread_pthread.h      |   505 -
 .../Python/Python-2.7.2/Python/thread_sgi.h   |   259 -
 .../Python-2.7.2/Python/thread_solaris.h      |   130 -
 .../Python/Python-2.7.2/Python/thread_wince.h |   136 -
 .../Python/Python-2.7.2/Python/traceback.c    |   283 -
 .../Applications/Python/Python-2.7.2/README   |  1229 --
 .../Python/Python-2.7.2/Tools/README          |    41 -
 .../Python/Python-2.7.2/Tools/bgen/README     |     9 -
 .../Python-2.7.2/Tools/bgen/bgen/bgen.py      |    12 -
 .../Tools/bgen/bgen/bgenBuffer.py             |   301 -
 .../Tools/bgen/bgen/bgenGenerator.py          |   302 -
 .../Tools/bgen/bgen/bgenGeneratorGroup.py     |    40 -
 .../Tools/bgen/bgen/bgenHeapBuffer.py         |   145 -
 .../Tools/bgen/bgen/bgenModule.py             |    94 -
 .../Tools/bgen/bgen/bgenObjectDefinition.py   |   512 -
 .../Tools/bgen/bgen/bgenOutput.py             |   219 -
 .../Tools/bgen/bgen/bgenStackBuffer.py        |    62 -
 .../Tools/bgen/bgen/bgenStringBuffer.py       |    67 -
 .../Python-2.7.2/Tools/bgen/bgen/bgenType.py  |   328 -
 .../Tools/bgen/bgen/bgenVariable.py           |   112 -
 .../Tools/bgen/bgen/macsupport.py             |   197 -
 .../Python-2.7.2/Tools/bgen/bgen/scantools.py |   849 -
 .../Tools/buildbot/README.tcltk-AMD64         |    36 -
 .../Tools/buildbot/build-amd64.bat            |     6 -
 .../Python-2.7.2/Tools/buildbot/build.bat     |     7 -
 .../Python-2.7.2/Tools/buildbot/buildmsi.bat  |    20 -
 .../Tools/buildbot/clean-amd64.bat            |    10 -
 .../Python-2.7.2/Tools/buildbot/clean.bat     |    10 -
 .../Tools/buildbot/external-amd64.bat         |    20 -
 .../Tools/buildbot/external-common.bat        |    45 -
 .../Python-2.7.2/Tools/buildbot/external.bat  |    21 -
 .../Tools/buildbot/test-amd64.bat             |     3 -
 .../Python-2.7.2/Tools/buildbot/test.bat      |     3 -
 .../Python-2.7.2/Tools/ccbench/ccbench.py     |   609 -
 .../Python/Python-2.7.2/Tools/compiler/ACKS   |     8 -
 .../Python/Python-2.7.2/Tools/compiler/README |    18 -
 .../Python-2.7.2/Tools/compiler/ast.txt       |   104 -
 .../Python-2.7.2/Tools/compiler/astgen.py     |   294 -
 .../Python-2.7.2/Tools/compiler/compile.py    |    51 -
 .../Python-2.7.2/Tools/compiler/demo.py       |    38 -
 .../Python-2.7.2/Tools/compiler/dumppyc.py    |    46 -
 .../Python-2.7.2/Tools/compiler/regrtest.py   |    78 -
 .../Python-2.7.2/Tools/compiler/stacktest.py  |    43 -
 .../Python/Python-2.7.2/Tools/faqwiz/README   |   114 -
 .../Python-2.7.2/Tools/faqwiz/faqconf.py      |   577 -
 .../Python-2.7.2/Tools/faqwiz/faqcust.py      |     1 -
 .../Python/Python-2.7.2/Tools/faqwiz/faqw.py  |    33 -
 .../Python-2.7.2/Tools/faqwiz/faqwiz.py       |   841 -
 .../Python-2.7.2/Tools/faqwiz/move-faqwiz.sh  |    55 -
 .../Python-2.7.2/Tools/framer/README.txt      |     8 -
 .../Python/Python-2.7.2/Tools/framer/TODO.txt |     6 -
 .../Python-2.7.2/Tools/framer/example.py      |   126 -
 .../Tools/framer/framer/__init__.py           |     6 -
 .../Python-2.7.2/Tools/framer/framer/bases.py |   220 -
 .../Tools/framer/framer/function.py           |   173 -
 .../Tools/framer/framer/member.py             |    73 -
 .../Python-2.7.2/Tools/framer/framer/slots.py |    64 -
 .../Tools/framer/framer/struct.py             |    52 -
 .../Tools/framer/framer/structparse.py        |    46 -
 .../Tools/framer/framer/template.py           |   102 -
 .../Python-2.7.2/Tools/framer/framer/util.py  |    35 -
 .../Python/Python-2.7.2/Tools/freeze/README   |   296 -
 .../Python-2.7.2/Tools/freeze/bkfile.py       |    47 -
 .../Tools/freeze/checkextensions.py           |    90 -
 .../Tools/freeze/checkextensions_win32.py     |   188 -
 .../Tools/freeze/extensions_win32.ini         |   171 -
 .../Python-2.7.2/Tools/freeze/freeze.py       |   497 -
 .../Python/Python-2.7.2/Tools/freeze/hello.py |     1 -
 .../Python-2.7.2/Tools/freeze/makeconfig.py   |    60 -
 .../Python-2.7.2/Tools/freeze/makefreeze.py   |    90 -
 .../Python-2.7.2/Tools/freeze/makemakefile.py |    29 -
 .../Python-2.7.2/Tools/freeze/parsesetup.py   |   112 -
 .../Python-2.7.2/Tools/freeze/win32.html      |   119 -
 .../Tools/freeze/winmakemakefile.py           |   147 -
 .../Python-2.7.2/Tools/gdb/libpython.py       |  1447 --
 .../Tools/i18n/makelocalealias.py             |    73 -
 .../Python/Python-2.7.2/Tools/i18n/msgfmt.py  |   226 -
 .../Python-2.7.2/Tools/i18n/pygettext.py      |   669 -
 .../Python-2.7.2/Tools/iobench/iobench.py     |   539 -
 .../Python/Python-2.7.2/Tools/msi/README.txt  |    25 -
 .../Python-2.7.2/Tools/msi/crtlicense.txt     |    44 -
 .../Python/Python-2.7.2/Tools/msi/msi.py      |  1398 --
 .../Python/Python-2.7.2/Tools/msi/msilib.py   |   692 -
 .../Python-2.7.2/Tools/msi/msisupport.c       |    93 -
 .../Python-2.7.2/Tools/msi/msisupport.mak     |     9 -
 .../Python/Python-2.7.2/Tools/msi/schema.py   |  1007 -
 .../Python/Python-2.7.2/Tools/msi/sequence.py |   126 -
 .../Python/Python-2.7.2/Tools/msi/uisample.py |  1400 --
 .../Python/Python-2.7.2/Tools/msi/uuids.py    |    58 -
 .../Python-2.7.2/Tools/pybench/Arithmetic.py  |   777 -
 .../Python-2.7.2/Tools/pybench/Calls.py       |   560 -
 .../Python-2.7.2/Tools/pybench/CommandLine.py |   634 -
 .../Python-2.7.2/Tools/pybench/Constructs.py  |   564 -
 .../Python/Python-2.7.2/Tools/pybench/Dict.py |   504 -
 .../Python-2.7.2/Tools/pybench/Exceptions.py  |   699 -
 .../Python-2.7.2/Tools/pybench/Imports.py     |   138 -
 .../Python-2.7.2/Tools/pybench/Instances.py   |    66 -
 .../Python/Python-2.7.2/Tools/pybench/LICENSE |    25 -
 .../Python-2.7.2/Tools/pybench/Lists.py       |   350 -
 .../Python-2.7.2/Tools/pybench/Lookups.py     |   945 -
 .../Tools/pybench/NewInstances.py             |    75 -
 .../Python-2.7.2/Tools/pybench/Numbers.py     |   784 -
 .../Python/Python-2.7.2/Tools/pybench/README  |   368 -
 .../Python-2.7.2/Tools/pybench/Setup.py       |    43 -
 .../Python-2.7.2/Tools/pybench/Strings.py     |   562 -
 .../Python-2.7.2/Tools/pybench/Tuples.py      |   360 -
 .../Python-2.7.2/Tools/pybench/Unicode.py     |   542 -
 .../Python/Python-2.7.2/Tools/pybench/With.py |   190 -
 .../Python-2.7.2/Tools/pybench/clockres.py    |    43 -
 .../Tools/pybench/package/__init__.py         |     0
 .../Tools/pybench/package/submodule.py        |     0
 .../Python-2.7.2/Tools/pybench/pybench.py     |   961 -
 .../Python-2.7.2/Tools/pybench/systimes.py    |   211 -
 .../Python/Python-2.7.2/Tools/scripts/2to3    |     5 -
 .../Python/Python-2.7.2/Tools/scripts/README  |    69 -
 .../Python-2.7.2/Tools/scripts/analyze_dxp.py |   129 -
 .../Python-2.7.2/Tools/scripts/byext.py       |   131 -
 .../Python-2.7.2/Tools/scripts/byteyears.py   |    61 -
 .../Python-2.7.2/Tools/scripts/checkappend.py |   167 -
 .../Python-2.7.2/Tools/scripts/checkpyc.py    |    66 -
 .../Python-2.7.2/Tools/scripts/classfix.py    |   190 -
 .../Python-2.7.2/Tools/scripts/cleanfuture.py |   276 -
 .../Python-2.7.2/Tools/scripts/combinerefs.py |   127 -
 .../Python-2.7.2/Tools/scripts/copytime.py    |    26 -
 .../Python/Python-2.7.2/Tools/scripts/crlf.py |    23 -
 .../Python-2.7.2/Tools/scripts/cvsfiles.py    |    72 -
 .../Python-2.7.2/Tools/scripts/db2pickle.py   |   135 -
 .../Python/Python-2.7.2/Tools/scripts/diff.py |    49 -
 .../Python-2.7.2/Tools/scripts/dutree.doc     |    54 -
 .../Python-2.7.2/Tools/scripts/dutree.py      |    60 -
 .../Python-2.7.2/Tools/scripts/eptags.py      |    56 -
 .../Tools/scripts/find_recursionlimit.py      |   117 -
 .../Python-2.7.2/Tools/scripts/finddiv.py     |    89 -
 .../Python-2.7.2/Tools/scripts/findlinksto.py |    43 -
 .../Tools/scripts/findnocoding.py             |   104 -
 .../Python-2.7.2/Tools/scripts/fixcid.py      |   314 -
 .../Python-2.7.2/Tools/scripts/fixdiv.py      |   380 -
 .../Python-2.7.2/Tools/scripts/fixheader.py   |    49 -
 .../Python-2.7.2/Tools/scripts/fixnotice.py   |   113 -
 .../Python-2.7.2/Tools/scripts/fixps.py       |    33 -
 .../Python-2.7.2/Tools/scripts/ftpmirror.py   |   400 -
 .../Python-2.7.2/Tools/scripts/google.py      |    23 -
 .../Python-2.7.2/Tools/scripts/gprof2html.py  |    79 -
 .../Python/Python-2.7.2/Tools/scripts/h2py.py |   175 -
 .../Python-2.7.2/Tools/scripts/hotshotmain.py |    55 -
 .../Python/Python-2.7.2/Tools/scripts/idle    |     5 -
 .../Python-2.7.2/Tools/scripts/ifdef.py       |   112 -
 .../Python/Python-2.7.2/Tools/scripts/lfcr.py |    24 -
 .../Python-2.7.2/Tools/scripts/linktree.py    |    80 -
 .../Python/Python-2.7.2/Tools/scripts/lll.py  |    28 -
 .../Python-2.7.2/Tools/scripts/logmerge.py    |   185 -
 .../Tools/scripts/mailerdaemon.py             |   237 -
 .../Python-2.7.2/Tools/scripts/md5sum.py      |    90 -
 .../Python-2.7.2/Tools/scripts/methfix.py     |   171 -
 .../Python-2.7.2/Tools/scripts/mkreal.py      |    66 -
 .../Python-2.7.2/Tools/scripts/ndiff.py       |   133 -
 .../Python-2.7.2/Tools/scripts/nm2def.py      |   103 -
 .../Python-2.7.2/Tools/scripts/objgraph.py    |   215 -
 .../Tools/scripts/parseentities.py            |    64 -
 .../Python-2.7.2/Tools/scripts/patchcheck.py  |   158 -
 .../Python-2.7.2/Tools/scripts/pathfix.py     |   149 -
 .../Python-2.7.2/Tools/scripts/pdeps.py       |   167 -
 .../Python-2.7.2/Tools/scripts/pickle2db.py   |   147 -
 .../Python-2.7.2/Tools/scripts/pindent.py     |   542 -
 .../Python-2.7.2/Tools/scripts/ptags.py       |    53 -
 .../Python/Python-2.7.2/Tools/scripts/pydoc   |     5 -
 .../Python-2.7.2/Tools/scripts/pydocgui.pyw   |     7 -
 .../Python-2.7.2/Tools/scripts/pysource.py    |   130 -
 .../Python-2.7.2/Tools/scripts/redemo.py      |   171 -
 .../Tools/scripts/reindent-rst.py             |    14 -
 .../Python-2.7.2/Tools/scripts/reindent.py    |   304 -
 .../Python-2.7.2/Tools/scripts/rgrep.py       |    64 -
 .../Python-2.7.2/Tools/scripts/serve.py       |    35 -
 .../Python-2.7.2/Tools/scripts/setup.py       |    20 -
 .../Python/Python-2.7.2/Tools/scripts/suff.py |    30 -
 .../Python-2.7.2/Tools/scripts/svneol.py      |    91 -
 .../Python-2.7.2/Tools/scripts/texcheck.py    |   233 -
 .../Python-2.7.2/Tools/scripts/texi2html.py   |  2078 --
 .../Python-2.7.2/Tools/scripts/treesync.py    |   205 -
 .../Python-2.7.2/Tools/scripts/untabify.py    |    52 -
 .../Python-2.7.2/Tools/scripts/which.py       |    60 -
 .../Tools/scripts/win_add2path.py             |    57 -
 .../Python/Python-2.7.2/Tools/scripts/xxci.py |   116 -
 .../Tools/ssl/get-remote-certificate.py       |    79 -
 .../Python-2.7.2/Tools/unicode/Makefile       |    84 -
 .../Tools/unicode/comparecodecs.py            |    53 -
 .../Tools/unicode/gencjkcodecs.py             |    68 -
 .../Python-2.7.2/Tools/unicode/gencodec.py    |   423 -
 .../Python-2.7.2/Tools/unicode/genwincodec.py |    61 -
 .../Tools/unicode/genwincodecs.bat            |     7 -
 .../Python-2.7.2/Tools/unicode/listcodecs.py  |    41 -
 .../Tools/unicode/makeunicodedata.py          |  1135 -
 .../Tools/unicode/mkstringprep.py             |   425 -
 .../Tools/unicode/python-mappings/CP1140.TXT  |   291 -
 .../Tools/unicode/python-mappings/KOI8-U.TXT  |   298 -
 .../Tools/unicode/python-mappings/TIS-620.TXT |   284 -
 .../Python-2.7.2/Tools/versioncheck/README    |    41 -
 .../Tools/versioncheck/_checkversion.py       |    16 -
 .../Tools/versioncheck/checkversions.py       |    52 -
 .../Tools/versioncheck/pyversioncheck.py      |    98 -
 .../Python-2.7.2/Tools/webchecker/README      |    23 -
 .../Python-2.7.2/Tools/webchecker/tktools.py  |   366 -
 .../Python-2.7.2/Tools/webchecker/wcgui.py    |   456 -
 .../Python-2.7.2/Tools/webchecker/wcmac.py    |     7 -
 .../Tools/webchecker/webchecker.py            |   892 -
 .../Tools/webchecker/websucker.py             |   123 -
 .../Python-2.7.2/Tools/webchecker/wsgui.py    |   240 -
 .../Python/Python-2.7.2/Tools/world/README    |    85 -
 .../Python/Python-2.7.2/Tools/world/world     |   551 -
 AppPkg/Applications/Python/PythonCore.inf     |   248 -
 AppPkg/Applications/Python/PythonReadMe.txt   |   237 -
 AppPkg/Applications/Python/X64/pyconfig.h     |  1301 --
 AppPkg/ReadMe.txt                             |    22 +-
 Readme.md                                     |     3 +-
 2137 files changed, 12 insertions(+), 912152 deletions(-)
 delete mode 100644 AppPkg/Applications/Python/Efi/config.c
 delete mode 100644 AppPkg/Applications/Python/Efi/edk2module.c
 delete mode 100644 AppPkg/Applications/Python/Efi/getpath.c
 delete mode 100644 AppPkg/Applications/Python/Ia32/pyconfig.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Include/fileobject.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Include/osdefs.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Include/pyport.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Lib/ntpath.py
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Lib/os.py
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Lib/pydoc.py
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Lib/site.py
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/_sre.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/addrinfo.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/errnomodule.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/expat/expat_external.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/expat/xmlparse.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/main.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/selectmodule.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/socketmodule.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/zlib/zutil.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Objects/longobject.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Objects/stringlib/localeutil.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Python/getcopyright.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Python/import.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Python/marshal.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi0.sh
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/wiki.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Complex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Dates.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Dbm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Range.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Rev.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Vec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/bitvec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/patterns
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/regextest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/sortingtest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/systemtest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/foo
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/md5driver.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Eiffel.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Enum.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Meta.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Simple.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Synch.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Trace.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/index.html
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/meta-vladimir.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/newmetaclasses/Eiffel.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/newmetaclasses/Enum.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/FILES
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/docstring.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/example.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/simple.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/source.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/test_parser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/test_unparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/unparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/FSProxy.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/RCSProxy.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/client.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cmdfw.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cmptree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cvslib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cvslock.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/mac.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/makechangelog.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcsbump
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcsclient.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcslib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcvs
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcvs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rrcs
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rrcs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/security.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/server.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/sumtree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/beer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/eqfix.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/fact.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/find-uname.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/from.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/lpwatch.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/makedir.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/markov.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/mboxconvert.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/morse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/newslist.doc
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/newslist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/pi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/pp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/primes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/queens.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/script.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/unbirthday.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/update.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/broadcast.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/echosvr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/finger.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/ftp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/gopher.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/mcast.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/radio.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/rpython.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/rpythond.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/telnet.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/throughput.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/udpecho.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unicast.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unixclient.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unixserver.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/xml/elem_count.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/xml/roundtrip.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/xml/rss2html.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/zlib/minigzip.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/zlib/zlibdemo.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Grammar/Grammar
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/Python-ast.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/Python.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/abstract.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/asdl.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/ast.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/bitset.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/boolobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/bufferobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/bytearrayobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/bytes_methods.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/bytesobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/cStringIO.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/cellobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/ceval.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/classobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/cobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/code.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/codecs.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/compile.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/complexobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/datetime.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/descrobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/dictobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/dtoa.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/enumobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/errcode.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/eval.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/fileobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/floatobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/frameobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/funcobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/genobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/graminit.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/grammar.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/import.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/intobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/intrcheck.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/iterobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/listobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/longintrepr.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/longobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/marshal.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/memoryobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/metagrammar.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/methodobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/modsupport.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/moduleobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/node.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/object.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/objimpl.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/opcode.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/osdefs.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/parsetok.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/patchlevel.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pgen.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pgenheaders.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/py_curses.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pyarena.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pycapsule.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pyctype.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pydebug.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pyerrors.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pyexpat.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pyfpe.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pygetopt.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pymacconfig.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pymactoolbox.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pymath.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pymem.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pyport.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pystate.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pystrcmp.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pystrtod.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pythonrun.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pythread.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/rangeobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/setobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/sliceobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/stringobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/structmember.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/structseq.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/symtable.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/sysmodule.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/timefuncs.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/token.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/traceback.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/tupleobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/ucnhash.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/unicodeobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/warnings.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/weakrefobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/LICENSE
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/BaseHTTPServer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/Bastion.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/CGIHTTPServer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/ConfigParser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/Cookie.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/DocXMLRPCServer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/HTMLParser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/MimeWriter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/Queue.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/SimpleHTTPServer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/SimpleXMLRPCServer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/SocketServer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/StringIO.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/UserDict.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/UserList.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/UserString.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/_LWPCookieJar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/_MozillaCookieJar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/__future__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/__phello__.foo.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/_abcoll.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/_pyio.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/_strptime.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/_weakrefset.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/abc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/aifc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/antigravity.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/anydbm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/argparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/ast.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/asynchat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/asyncore.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/atexit.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/base64.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/bdb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/binhex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/bisect.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/cProfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/calendar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/cgi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/cgitb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/chunk.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/cmd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/code.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/codecs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/codeop.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/collections.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/colorsys.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/commands.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compileall.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/ast.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/consts.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/future.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/misc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/pyassem.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/pycodegen.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/symbols.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/syntax.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/transformer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/visitor.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/contextlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/cookielib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/copy.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/copy_reg.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/csv.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/dbhash.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/decimal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/difflib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/dircache.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/dis.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/archive_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/bcppcompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/ccompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/cmd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_dumb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_msi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_rpm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_wininst.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_clib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_ext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_py.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_scripts.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/check.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/clean.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/command_template
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/config.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_data.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_egg_info.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_headers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_lib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_scripts.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/register.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/sdist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/upload.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-6.0.exe
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-7.1.exe
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-8.0.exe
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-9.0-amd64.exe
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-9.0.exe
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/config.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/core.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/cygwinccompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/debug.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dep_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dir_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/emxccompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/errors.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/extension.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/fancy_getopt.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/file_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/filelist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/log.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/msvc9compiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/msvccompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/spawn.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/sysconfig.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/Setup.sample
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/setuptools_build_ext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/setuptools_extension.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/support.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_archive_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_dumb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_msi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_rpm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_wininst.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_clib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_ext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_py.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_scripts.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_ccompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_check.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_clean.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_cmd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_config.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_config_cmd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_core.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dep_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dir_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_file_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_filelist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_data.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_headers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_lib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_scripts.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_msvc9compiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_register.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_sdist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_spawn.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_sysconfig.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_text_file.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_unixccompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_upload.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_version.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_versionpredicate.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/text_file.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/unixccompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/version.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/versionpredicate.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/doctest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/dumbdbm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/dummy_thread.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/dummy_threading.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/_parseaddr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/base64mime.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/charset.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/encoders.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/errors.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/feedparser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/generator.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/header.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/iterators.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/message.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/application.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/audio.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/base.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/image.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/message.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/multipart.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/nonmultipart.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/text.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/parser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/quoprimime.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/PyBanner048.gif
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/audiotest.au
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_01.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_02.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_03.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_04.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_05.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_06.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_07.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_08.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_09.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_10.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_11.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_12.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_12a.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_13.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_14.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_15.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_16.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_17.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_18.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_19.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_20.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_21.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_22.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_23.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_24.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_25.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_26.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_27.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_28.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_29.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_30.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_31.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_32.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_33.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_34.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_35.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_36.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_37.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_38.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_39.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_40.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_41.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_42.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_43.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_44.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_45.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_46.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_codecs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_codecs_renamed.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_renamed.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_torture.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/utils.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/aliases.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/ascii.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/base64_codec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/big5.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/big5hkscs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/bz2_codec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/charmap.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp037.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1006.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1026.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1140.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1250.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1251.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1252.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1253.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1254.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1255.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1256.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1257.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1258.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp424.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp437.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp500.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp720.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp737.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp775.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp850.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp852.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp855.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp856.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp857.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp858.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp860.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp861.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp862.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp863.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp864.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp865.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp866.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp869.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp874.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp875.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp932.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp949.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp950.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jis_2004.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jisx0213.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_kr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gb18030.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gb2312.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gbk.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hex_codec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hp_roman8.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hz.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/idna.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_2004.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_ext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_kr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_10.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_11.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_13.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_14.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_15.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_16.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_4.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_5.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_6.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_7.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_8.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_9.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/johab.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/koi8_r.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/koi8_u.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/latin_1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_arabic.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_centeuro.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_croatian.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_cyrillic.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_farsi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_greek.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_iceland.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_latin2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_roman.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_romanian.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_turkish.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mbcs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/palmos.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/ptcp154.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/punycode.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/quopri_codec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/raw_unicode_escape.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/rot_13.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jis.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jis_2004.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jisx0213.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/string_escape.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/tis_620.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/undefined.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/unicode_escape.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/unicode_internal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16_be.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16_le.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32_be.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32_le.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_7.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_8.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_8_sig.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/uu_codec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/zlib_codec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/filecmp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/fileinput.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/fnmatch.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/formatter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/fpformat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/fractions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/ftplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/functools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/genericpath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/getopt.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/getpass.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/gettext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/glob.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/gzip.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/hashlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/heapq.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/hmac.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/log.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/stats.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/stones.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/htmlentitydefs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/htmllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/httplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/ihooks.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/imaplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/imghdr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/importlib/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/imputil.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/inspect.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/io.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/decoder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/encoder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/scanner.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_check_circular.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_decode.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_default.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_dump.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_encode_basestring_ascii.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_fail.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_float.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_indent.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_recursion.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_scanstring.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_separators.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_speedups.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_unicode.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tool.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/keyword.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/Grammar.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/PatternGrammar.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/__main__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/btm_matcher.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/btm_utils.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixer_base.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixer_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_apply.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_basestring.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_buffer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_callable.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_dict.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_except.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_exec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_execfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_exitfunc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_filter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_funcattrs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_future.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_getcwdu.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_has_key.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_idioms.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_import.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_imports.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_imports2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_input.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_intern.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_isinstance.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_itertools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_itertools_imports.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_long.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_map.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_metaclass.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_methodattrs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_ne.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_next.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_nonzero.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_numliterals.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_operator.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_paren.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_print.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_raise.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_raw_input.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_reduce.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_renames.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_repr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_set_literal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_standarderror.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_sys_exc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_throw.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_tuple_params.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_types.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_unicode.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_urllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_ws_comma.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_xrange.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_xreadlines.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_zip.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/main.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/patcomp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/conv.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/driver.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/grammar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/literals.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/parse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/pgen.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/token.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/tokenize.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pygram.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pytree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/refactor.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/bom.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/crlf.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/different_encoding.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/bad_order.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_explicit.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_first.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_last.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_parrot.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_preorder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/no_fixer_cls.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/parrot_example.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/infinite_recursion.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/py2_test_grammar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/py3_test_grammar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/pytree_idempotency.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/support.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_all_fixers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_fixers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_main.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_parser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_pytree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_refactor.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/linecache.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/locale.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/logging/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/logging/config.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/logging/handlers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/mailbox.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/mailcap.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/markupbase.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/md5.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/mhlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/mimetools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/mimetypes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/mimify.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/modulefinder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/multifile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/mutex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/netrc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/new.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/nntplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/ntpath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/nturl2path.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/numbers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/opcode.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/optparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/os.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pdb.doc
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pdb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pickle.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pickletools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pipes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pkgutil.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/platform.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/plistlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/popen2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/poplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/posixfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/posixpath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pprint.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/profile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pstats.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pty.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/py_compile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pyclbr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pydoc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pydoc_data/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pydoc_data/topics.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/quopri.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/random.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/re.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/repr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/rexec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/rfc822.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/rlcompleter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/robotparser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/runpy.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sched.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sets.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sgmllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sha.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/shelve.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/shlex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/shutil.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/site-packages/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/site.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/smtpd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/smtplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sndhdr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/socket.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sre.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sre_compile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sre_constants.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sre_parse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/ssl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/stat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/statvfs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/string.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/stringold.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/stringprep.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/struct.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/symbol.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/symtable.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sysconfig.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/tabnanny.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/tarfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/telnetlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/tempfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/185test.db
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/Sine-1000Hz-300ms.aif
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/audiotest.au
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/autotest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/bad_coding.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/bad_coding2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badcert.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badkey.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future4.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future5.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future6.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future7.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future8.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future9.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_nocaret.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/buffer_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cfgparser.1
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/check_soundcard.vbs
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5hkscs-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5hkscs.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/cp949-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/cp949.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jisx0213-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jisx0213.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jp-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jp.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_kr-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_kr.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb18030-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb18030.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb2312-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb2312.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gbk-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gbk.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/hz-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/hz.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/johab-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/johab.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jis-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jis.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jisx0213-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jisx0213.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cmath_testcases.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/bogus_code_obj.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/borrowed_ref_1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/borrowed_ref_2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/compiler_recursion.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/gc_has_finalizer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/gc_inspection.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/infinite_loop_re.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/loosing_mro_ref.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/mutation_inside_cyclegc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/nasty_eq_vs_dict.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/recursion_limit_too_high.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/recursive_call.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/curses_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/data/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/abs.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/add.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/and.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/base.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/clamp.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/class.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/compare.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/comparetotal.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/comparetotmag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copy.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copyabs.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copynegate.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copysign.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAbs.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAdd.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAnd.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddBase.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCanonical.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddClass.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompare.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareSig.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareTotal.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareTotalMag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopy.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopyAbs.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopyNegate.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopySign.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddDivide.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddDivideInt.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddEncode.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddFMA.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddInvert.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddLogB.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMax.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMaxMag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMin.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMinMag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMinus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMultiply.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextMinus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextPlus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextToward.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddOr.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddPlus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddQuantize.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddReduce.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRemainder.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRemainderNear.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRotate.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddSameQuantum.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddScaleB.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddShift.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddSubtract.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddToIntegral.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddXor.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decDouble.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decQuad.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decSingle.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/divide.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/divideint.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAbs.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAdd.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAnd.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqBase.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCanonical.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqClass.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompare.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareSig.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareTotal.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareTotalMag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopy.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopyAbs.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopyNegate.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopySign.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqDivide.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqDivideInt.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqEncode.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqFMA.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqInvert.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqLogB.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMax.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMaxMag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMin.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMinMag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMinus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMultiply.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextMinus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextPlus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextToward.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqOr.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqPlus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqQuantize.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqReduce.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRemainder.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRemainderNear.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRotate.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqSameQuantum.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqScaleB.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqShift.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqSubtract.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqToIntegral.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqXor.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dsBase.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dsEncode.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/exp.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/extra.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/fma.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/inexact.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/invert.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ln.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/log10.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/logb.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/max.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/maxmag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/min.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/minmag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/minus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/multiply.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nextminus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nextplus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nexttoward.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/or.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/plus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/power.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/powersqrt.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/quantize.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/randomBound32.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/randoms.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/reduce.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/remainder.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/remainderNear.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rescale.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rotate.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rounding.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/samequantum.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/scaleb.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/shift.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/squareroot.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/subtract.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/testall.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/tointegral.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/tointegralx.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/xor.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/doctest_aliases.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/double_const.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/empty.vbs
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/exception_hierarchy.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/floating_points.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/fork_wait.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/formatfloat_testcases.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/gdb_sample.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/greyrgb.uue
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/https_svn_python_org_root.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/ieee754.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/infinite_reload.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/inspect_fodder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/inspect_fodder2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/keycert.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/README.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_ctypes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_dictself.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_gestalt.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_selftype.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/list_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/lock_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/mapping_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/math_testcases.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/nullcert.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/outstanding_bugs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/pickletester.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/profilee.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/pyclbr_input.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/pydoc_mod.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/pydocfodder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/pystone.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv2_32.pck
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv2_64.pck
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv3.pck
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/re_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/regex_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/regrtest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/relimport.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/reperf.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/sample_doctest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/script_helper.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/seq_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/sgml_input.html
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/sha256.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/sortperf.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/ssl_cert.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/ssl_key.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/string_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/subprocessdata/sigchild_ignore.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/svn_python_org_https_cert.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_MimeWriter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_SimpleHTTPServer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_StringIO.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test___all__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test___future__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test__locale.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_abc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_abstract_numbers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_aepack.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_aifc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_al.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_anydbm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_applesingle.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_argparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_array.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ascii_formatd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ast.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_asynchat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_asyncore.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_atexit.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_audioop.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_augassign.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_base64.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bastion.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bigaddrspace.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bigmem.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binascii.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binhex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binop.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bisect.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bool.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb185.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_buffer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bufio.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_builtin.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bytes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bz2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_calendar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_call.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_capi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cfgparser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cgi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_charmapcodec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_class.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd_line.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd_line_script.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_code.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codeccallbacks.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_cn.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_hk.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_jp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_kr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_tw.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_cn.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_hk.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_jp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_kr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_tw.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codeop.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_coding.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_coercion.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_collections.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_colorsys.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_commands.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compare.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compileall.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_complex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_complex_args.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_contains.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_contextlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cookie.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cookielib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_copy.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_copy_reg.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cpickle.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cprofile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_crypt.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_csv.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ctypes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_curses.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_datetime.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dbm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_decimal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_decorators.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_defaultdict.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_deque.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_descr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_descrtut.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dict.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dictcomps.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dictviews.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_difflib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_difflib_expect.html
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dircache.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dis.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_distutils.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest2.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest3.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest4.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_docxmlrpc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dumbdbm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dummy_thread.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dummy_threading.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email_codecs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email_renamed.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_enumerate.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_eof.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_epoll.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_errno.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_exception_variations.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_exceptions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_extcall.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fcntl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_file.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_file2k.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_filecmp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fileinput.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fileio.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_float.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fnmatch.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fork1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_format.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fpformat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fractions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_frozen.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ftplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_funcattrs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_functools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future4.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future5.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future_builtins.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gdb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gdbm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_generators.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_genericpath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_genexps.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getargs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getargs2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getopt.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gettext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_glob.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_global.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_grammar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_grp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gzip.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hash.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hashlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_heapq.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hmac.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hotshot.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_htmllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_htmlparser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_httplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_httpservers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imageop.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imaplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imgfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_import.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_importhooks.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_importlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_index.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_inspect.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_int.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_int_literal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_io.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ioctl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_isinstance.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_iter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_iterlen.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_itertools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_json.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_kqueue.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_largefile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_lib2to3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_linecache.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_linuxaudiodev.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_list.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_locale.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_logging.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_long.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_long_future.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_longexp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macos.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macostools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macpath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mailbox.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_marshal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_math.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_md5.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_memoryio.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_memoryview.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mhlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mimetools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mimetypes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_minidom.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mmap.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_module.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_modulefinder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_msilib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multibytecodec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multibytecodec_support.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multifile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multiprocessing.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mutants.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mutex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_netrc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_new.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_nis.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_normalization.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ntpath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_old_mailbox.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_opcodes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_openpty.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_operator.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_optparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_os.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ossaudiodev.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_parser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pdb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_peepholer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep247.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep263.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep277.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep292.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep352.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pickle.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pickletools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pipes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkg.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkgimport.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkgutil.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_platform.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_plistlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_poll.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_popen.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_popen2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_poplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_posix.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_posixpath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pow.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pprint.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_print.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_profile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_property.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pstats.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pty.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pwd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_py3kwarn.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pyclbr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pydoc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pyexpat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_queue.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_quopri.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_random.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_re.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_readline.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_repr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_resource.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_rfc822.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_richcmp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_rlcompleter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_robotparser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_runpy.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sax.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_scope.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_scriptpackages.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_select.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_set.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_setcomps.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sets.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sgmllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sha.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shelve.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shlex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shutil.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_signal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_site.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_slice.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_smtplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_smtpnet.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_socket.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_socketserver.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_softspace.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sort.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sqlite.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ssl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_startfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_str.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strftime.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_string.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_stringprep.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strop.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strptime.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strtod.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_struct.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_structmembers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_structseq.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_subprocess.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sunaudiodev.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sundry.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_support.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_symtable.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_syntax.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys_setprofile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys_settrace.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sysconfig.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tarfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tcl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_telnetlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tempfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_textwrap.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_thread.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threaded_import.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threadedtempfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threading.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threading_local.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threadsignals.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_time.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_timeout.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tk.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tokenize.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_trace.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_traceback.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_transformer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ttk_guionly.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ttk_textonly.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tuple.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_typechecks.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_types.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ucn.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unary.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_undocumented_details.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicode.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicode_file.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicodedata.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unittest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_univnewlines.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_univnewlines2k.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unpack.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2_localnet.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2net.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllibnet.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urlparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userdict.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userlist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userstring.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_uu.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_uuid.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wait3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wait4.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_warnings.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wave.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_weakref.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_weakset.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_whichdb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_winreg.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_winsound.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_with.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wsgiref.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xdrlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xml_etree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xml_etree_c.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xmllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xmlrpc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xpickle.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xrange.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipfile64.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipimport.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipimport_support.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/testall.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/testcodec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/testimg.uue
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/testimgr.uue
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/testrgb.uue
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/testtar.tar
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/tf_inherit_check.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/threaded_import_hangers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/time_hashlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/tokenize_tests.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/tracedmodules/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/tracedmodules/testmod.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/warning_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/win_console_handler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/wrongcert.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/simple-ns.xml
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/simple.xml
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/test.xml
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/test.xml.out
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/zipdir.zip
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/textwrap.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/this.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/timeit.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/toaiff.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/token.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/tokenize.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/trace.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/traceback.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/tty.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/types.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/__main__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/case.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/loader.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/main.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/result.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/runner.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/signals.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/suite.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/dummy.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/support.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_assertions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_break.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_case.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_discovery.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_functiontestcase.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_loader.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_program.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_result.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_runner.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_setups.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_skipping.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_suite.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/urllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/urllib2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/urlparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/user.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/uu.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/uuid.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/warnings.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wave.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/weakref.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/webbrowser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/whichdb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref.egg-info
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/handlers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/headers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/simple_server.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/validate.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xdrlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/NodeFilter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/domreg.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/expatbuilder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/minicompat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/minidom.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/pulldom.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/xmlbuilder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementInclude.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementPath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementTree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/cElementTree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/parsers/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/parsers/expat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/_exceptions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/expatreader.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/handler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/saxutils.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/xmlreader.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xmllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xmlrpclib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/zipfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_bisectmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_codecsmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_collectionsmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_csv.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_elementtree.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_functoolsmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_hashopenssl.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_heapqmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_hotshot.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/_iomodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/_iomodule.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/bufferedio.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/bytesio.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/fileio.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/iobase.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/stringio.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/textio.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_json.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_localemodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_lsprof.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_math.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_math.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_randommodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cache.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cache.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/connection.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/connection.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cursor.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cursor.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/microprotocols.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/microprotocols.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/module.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/module.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/prepare_protocol.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/prepare_protocol.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/row.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/row.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/sqlitecompat.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/statement.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/statement.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/util.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/util.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sre.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_ssl.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_struct.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_testcapimodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_weakref.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/addrinfo.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/arraymodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/binascii.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/bz2module.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cPickle.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cStringIO.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_cn.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_hk.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_iso2022.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_jp.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_kr.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_tw.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/alg_jisx0201.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/cjkcodecs.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/emu_jisx0213_2000.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_cn.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_hk.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_jisx0213_pair.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_jp.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_kr.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_tw.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/multibytecodec.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/multibytecodec.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cmathmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cryptmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/datetimemodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/errnomodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/COPYING
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/amigaconfig.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/ascii.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/asciitab.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat_config.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat_external.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/iasciitab.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/internal.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/latin1tab.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/macconfig.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/nametab.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/pyexpatns.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/utf8tab.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/winconfig.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlparse.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlrole.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlrole.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_impl.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_impl.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_ns.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/fcntlmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/flmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/fmmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/fpectlmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/fpetestmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/future_builtins.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/gc_weakref.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/gcmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/getaddrinfo.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/getbuildinfo.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/getnameinfo.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/getpath.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/imageop.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/itertoolsmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/main.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/mathmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/md5.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/md5.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/md5module.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/operator.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/parsermodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/posixmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/puremodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/pwdmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/pyexpat.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/python.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/readline.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/resource.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/rotatingtree.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/rotatingtree.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/selectmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/sha256module.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/sha512module.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/shamodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/signalmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/socketmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/socketmodule.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/sre.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/sre_constants.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/stropmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/symtablemodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/testcapi_long.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/threadmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/timemodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/timing.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/timingmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/unicodedata.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/unicodedata_db.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/unicodename_db.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/xxmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/xxsubtype.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/yuv.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/yuvconvert.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zipimport.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/ChangeLog
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/FAQ
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/INDEX
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/Makefile
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/Makefile.in
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/adler32.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/algorithm.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/compress.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/configure
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/crc32.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/crc32.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/deflate.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/deflate.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/example.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/gzio.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/infback.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffast.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffast.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffixed.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inflate.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inflate.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inftrees.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inftrees.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/make_vms.com
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/minigzip.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/trees.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/trees.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/uncompr.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zconf.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zconf.in.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zlib.3
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zlib.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zutil.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zutil.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlibmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/abstract.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/boolobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/bufferobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/bytearrayobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/bytes_methods.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/capsule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/cellobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/classobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/cobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/codeobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/complexobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/descrobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/dictnotes.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/dictobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/enumobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/exceptions.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/fileobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/floatobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/frameobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/funcobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/genobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/intobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/iterobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/listobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/listsort.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/lnotab_notes.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/longobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/memoryobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/methodobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/moduleobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/object.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/obmalloc.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/rangeobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/setobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/sliceobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/README.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/count.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/ctype.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/fastsearch.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/find.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/formatter.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/localeutil.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/partition.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/split.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/string_format.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/stringdefs.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/transmogrify.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/unicodedefs.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/structseq.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/tupleobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/typeobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/unicodectype.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/unicodeobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/unicodetype_db.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/weakrefobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/Python.asdl
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/acceler.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/asdl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/asdl_c.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/bitset.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/firstsets.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/grammar.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/grammar1.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/intrcheck.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/listnode.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/metagrammar.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/myreadline.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/node.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/parser.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/parser.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/parsetok.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/pgen.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/pgenmain.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/printgrammar.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/spark.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer_pgen.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/Python-ast.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/_warnings.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/asdl.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/ast.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/atof.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/bltinmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/ceval.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/codecs.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/compile.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dtoa.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dup2.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_aix.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_atheos.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_beos.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_dl.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_hpux.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_next.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_os2.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_shlib.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_stub.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_win.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/errors.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/formatter_string.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/formatter_unicode.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/frozen.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/frozenmain.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/future.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/getargs.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/getcompiler.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/getcopyright.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/getcwd.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/getopt.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/getplatform.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/getversion.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/graminit.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/import.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/importdl.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/importdl.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/mactoolboxglue.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/marshal.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/modsupport.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/mysnprintf.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/mystrtoul.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/peephole.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pyarena.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pyctype.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pyfpe.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pymath.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pystate.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pystrcmp.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pystrtod.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pythonrun.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/sigcheck.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/strdup.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/strtod.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/structmember.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/symtable.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/sysmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_atheos.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_beos.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_cthread.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_foobar.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_lwp.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_nt.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_os2.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_pth.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_pthread.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_sgi.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_solaris.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_wince.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/traceback.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgen.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenBuffer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenGenerator.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenGeneratorGroup.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenHeapBuffer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenModule.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenObjectDefinition.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenOutput.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenStackBuffer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenStringBuffer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenType.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenVariable.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/macsupport.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/scantools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/README.tcltk-AMD64
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/build-amd64.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/build.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/buildmsi.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/clean-amd64.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/clean.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external-amd64.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external-common.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/test-amd64.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/test.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/ccbench/ccbench.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/ACKS
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/ast.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/astgen.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/compile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/demo.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/dumppyc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/regrtest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/stacktest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqconf.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqcust.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqw.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqwiz.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/move-faqwiz.sh
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/README.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/TODO.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/example.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/bases.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/function.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/member.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/slots.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/struct.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/structparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/template.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/bkfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/checkextensions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/checkextensions_win32.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/extensions_win32.ini
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/freeze.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/hello.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makeconfig.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makefreeze.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makemakefile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/parsesetup.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/win32.html
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/winmakemakefile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/gdb/libpython.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/makelocalealias.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/msgfmt.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/pygettext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/iobench/iobench.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/README.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/crtlicense.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msilib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msisupport.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msisupport.mak
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/schema.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/sequence.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/uisample.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/uuids.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Arithmetic.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Calls.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/CommandLine.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Constructs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Dict.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Exceptions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Imports.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Instances.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/LICENSE
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Lists.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Lookups.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/NewInstances.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Numbers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Setup.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Strings.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Tuples.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Unicode.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/With.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/clockres.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/package/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/package/submodule.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/pybench.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/systimes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/2to3
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/analyze_dxp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/byext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/byteyears.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/checkappend.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/checkpyc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/classfix.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/cleanfuture.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/combinerefs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/copytime.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/crlf.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/cvsfiles.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/db2pickle.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/diff.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/dutree.doc
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/dutree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/eptags.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/find_recursionlimit.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/finddiv.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/findlinksto.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/findnocoding.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixcid.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixdiv.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixheader.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixnotice.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixps.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ftpmirror.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/google.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/gprof2html.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/h2py.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/hotshotmain.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/idle
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ifdef.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/lfcr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/linktree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/lll.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/logmerge.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/mailerdaemon.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/md5sum.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/methfix.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/mkreal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ndiff.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/nm2def.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/objgraph.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/parseentities.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/patchcheck.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pathfix.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pdeps.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pickle2db.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pindent.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ptags.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pydoc
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pydocgui.pyw
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pysource.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/redemo.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/reindent-rst.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/reindent.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/rgrep.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/serve.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/setup.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/suff.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/svneol.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/texcheck.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/texi2html.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/treesync.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/untabify.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/which.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/win_add2path.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/xxci.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/ssl/get-remote-certificate.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/Makefile
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/comparecodecs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/gencjkcodecs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/gencodec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/genwincodec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/genwincodecs.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/listcodecs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/makeunicodedata.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/mkstringprep.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/CP1140.TXT
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/KOI8-U.TXT
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/TIS-620.TXT
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/_checkversion.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/checkversions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/pyversioncheck.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/tktools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wcgui.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wcmac.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/webchecker.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/websucker.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wsgui.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/world/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/world/world
 delete mode 100644 AppPkg/Applications/Python/PythonCore.inf
 delete mode 100644 AppPkg/Applications/Python/PythonReadMe.txt
 delete mode 100644 AppPkg/Applications/Python/X64/pyconfig.h

-- 
2.32.0.windows.2


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
  2021-10-20  3:42 [edk2-libc Patch 0/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc Jayaprakash, N
@ 2021-10-20  3:42 ` Jayaprakash, N
  2021-10-20 16:04   ` [edk2-devel] " Michael D Kinney
  0 siblings, 1 reply; 10+ messages in thread
From: Jayaprakash, N @ 2021-10-20  3:42 UTC (permalink / raw)
  To: devel; +Cc: Rebecca Cran, Michael D Kinney, Jayaprakash N

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=y, Size: 36935321 bytes --]

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3589

This commit is to remove the older version Py2.7.2 support
from edk2-libc. There are other ports of Python such as 2.7.10
and 3.6.8 are available in edk2-libc and hence the oldest
supported version 2.7.2 is not required to be part of edk2-libc
anymore

Cc: Rebecca Cran <rebecca@nuviainc.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Signed-off-by: Jayaprakash N <n.jayaprakash@intel.com>
---
 AppPkg/AppPkg.dsc                             |     5 +-
 AppPkg/Applications/Python/Efi/config.c       |   149 -
 AppPkg/Applications/Python/Efi/edk2module.c   |  7414 -------
 AppPkg/Applications/Python/Efi/getpath.c      |   719 -
 AppPkg/Applications/Python/Ia32/pyconfig.h    |  1256 --
 .../Python/PyMod-2.7.2/Include/fileobject.h   |   102 -
 .../Python/PyMod-2.7.2/Include/osdefs.h       |    71 -
 .../Python/PyMod-2.7.2/Include/pyport.h       |   918 -
 .../Python/PyMod-2.7.2/Lib/ntpath.py          |   528 -
 .../Applications/Python/PyMod-2.7.2/Lib/os.py |   773 -
 .../Python/PyMod-2.7.2/Lib/pydoc.py           |  2341 ---
 .../Python/PyMod-2.7.2/Lib/site.py            |   537 -
 .../Python/PyMod-2.7.2/Modules/_sre.c         |  3921 ----
 .../Python/PyMod-2.7.2/Modules/addrinfo.h     |   178 -
 .../Python/PyMod-2.7.2/Modules/errnomodule.c  |   845 -
 .../Modules/expat/expat_external.h            |   121 -
 .../PyMod-2.7.2/Modules/expat/xmlparse.c      |  6279 ------
 .../Python/PyMod-2.7.2/Modules/main.c         |   678 -
 .../Python/PyMod-2.7.2/Modules/selectmodule.c |  1912 --
 .../Python/PyMod-2.7.2/Modules/socketmodule.h |   250 -
 .../Python/PyMod-2.7.2/Modules/zlib/zutil.h   |   277 -
 .../Python/PyMod-2.7.2/Objects/longobject.c   |  4381 ----
 .../Objects/stringlib/localeutil.h            |   227 -
 .../Python/PyMod-2.7.2/Python/getcopyright.c  |    36 -
 .../Python/PyMod-2.7.2/Python/import.c        |  3398 ---
 .../Python/PyMod-2.7.2/Python/marshal.c       |  1422 --
 .../Python/Python-2.7.2/Demo/README           |    40 -
 .../Python/Python-2.7.2/Demo/cgi/README       |    11 -
 .../Python/Python-2.7.2/Demo/cgi/cgi0.sh      |     8 -
 .../Python/Python-2.7.2/Demo/cgi/cgi1.py      |    14 -
 .../Python/Python-2.7.2/Demo/cgi/cgi2.py      |    22 -
 .../Python/Python-2.7.2/Demo/cgi/cgi3.py      |    10 -
 .../Python/Python-2.7.2/Demo/cgi/wiki.py      |   123 -
 .../Python-2.7.2/Demo/classes/Complex.py      |   320 -
 .../Python/Python-2.7.2/Demo/classes/Dates.py |   227 -
 .../Python/Python-2.7.2/Demo/classes/Dbm.py   |    66 -
 .../Python/Python-2.7.2/Demo/classes/README   |    12 -
 .../Python/Python-2.7.2/Demo/classes/Range.py |    93 -
 .../Python/Python-2.7.2/Demo/classes/Rev.py   |    95 -
 .../Python/Python-2.7.2/Demo/classes/Vec.py   |    68 -
 .../Python-2.7.2/Demo/classes/bitvec.py       |   333 -
 .../Python-2.7.2/Demo/comparisons/README      |    60 -
 .../Python-2.7.2/Demo/comparisons/patterns    |     4 -
 .../Demo/comparisons/regextest.py             |    47 -
 .../Demo/comparisons/sortingtest.py           |    45 -
 .../Demo/comparisons/systemtest.py            |    74 -
 .../Python/Python-2.7.2/Demo/md5test/README   |    10 -
 .../Python/Python-2.7.2/Demo/md5test/foo      |     1 -
 .../Python-2.7.2/Demo/md5test/md5driver.py    |   123 -
 .../Python-2.7.2/Demo/metaclasses/Eiffel.py   |   113 -
 .../Python-2.7.2/Demo/metaclasses/Enum.py     |   169 -
 .../Python-2.7.2/Demo/metaclasses/Meta.py     |   118 -
 .../Python-2.7.2/Demo/metaclasses/Simple.py   |    45 -
 .../Python-2.7.2/Demo/metaclasses/Synch.py    |   256 -
 .../Python-2.7.2/Demo/metaclasses/Trace.py    |   144 -
 .../Python-2.7.2/Demo/metaclasses/index.html  |   605 -
 .../Demo/metaclasses/meta-vladimir.txt        |   256 -
 .../Demo/newmetaclasses/Eiffel.py             |   141 -
 .../Python-2.7.2/Demo/newmetaclasses/Enum.py  |   177 -
 .../Python/Python-2.7.2/Demo/parser/FILES     |     6 -
 .../Python/Python-2.7.2/Demo/parser/README    |    32 -
 .../Python-2.7.2/Demo/parser/docstring.py     |     2 -
 .../Python-2.7.2/Demo/parser/example.py       |   190 -
 .../Python/Python-2.7.2/Demo/parser/simple.py |     1 -
 .../Python/Python-2.7.2/Demo/parser/source.py |    27 -
 .../Python-2.7.2/Demo/parser/test_parser.py   |    48 -
 .../Python-2.7.2/Demo/parser/test_unparse.py  |   213 -
 .../Python-2.7.2/Demo/parser/unparse.py       |   606 -
 .../Python/Python-2.7.2/Demo/pdist/FSProxy.py |   301 -
 .../Python-2.7.2/Demo/pdist/RCSProxy.py       |   198 -
 .../Python/Python-2.7.2/Demo/pdist/README     |   121 -
 .../Python/Python-2.7.2/Demo/pdist/client.py  |   157 -
 .../Python/Python-2.7.2/Demo/pdist/cmdfw.py   |   144 -
 .../Python/Python-2.7.2/Demo/pdist/cmptree.py |   208 -
 .../Python/Python-2.7.2/Demo/pdist/cvslib.py  |   364 -
 .../Python/Python-2.7.2/Demo/pdist/cvslock.py |   280 -
 .../Python/Python-2.7.2/Demo/pdist/mac.py     |    19 -
 .../Python-2.7.2/Demo/pdist/makechangelog.py  |   109 -
 .../Python/Python-2.7.2/Demo/pdist/rcsbump    |    33 -
 .../Python-2.7.2/Demo/pdist/rcsclient.py      |    71 -
 .../Python/Python-2.7.2/Demo/pdist/rcslib.py  |   334 -
 .../Python/Python-2.7.2/Demo/pdist/rcvs       |     8 -
 .../Python/Python-2.7.2/Demo/pdist/rcvs.py    |   477 -
 .../Python/Python-2.7.2/Demo/pdist/rrcs       |     8 -
 .../Python/Python-2.7.2/Demo/pdist/rrcs.py    |   160 -
 .../Python-2.7.2/Demo/pdist/security.py       |    33 -
 .../Python/Python-2.7.2/Demo/pdist/server.py  |   145 -
 .../Python/Python-2.7.2/Demo/pdist/sumtree.py |    24 -
 .../Python/Python-2.7.2/Demo/scripts/README   |    22 -
 .../Python/Python-2.7.2/Demo/scripts/beer.py  |    20 -
 .../Python/Python-2.7.2/Demo/scripts/eqfix.py |   198 -
 .../Python/Python-2.7.2/Demo/scripts/fact.py  |    49 -
 .../Python-2.7.2/Demo/scripts/find-uname.py   |    40 -
 .../Python/Python-2.7.2/Demo/scripts/from.py  |    35 -
 .../Python-2.7.2/Demo/scripts/lpwatch.py      |   102 -
 .../Python-2.7.2/Demo/scripts/makedir.py      |    21 -
 .../Python-2.7.2/Demo/scripts/markov.py       |   121 -
 .../Python-2.7.2/Demo/scripts/mboxconvert.py  |   124 -
 .../Python/Python-2.7.2/Demo/scripts/morse.py |   138 -
 .../Python-2.7.2/Demo/scripts/newslist.doc    |    59 -
 .../Python-2.7.2/Demo/scripts/newslist.py     |   362 -
 .../Python/Python-2.7.2/Demo/scripts/pi.py    |    33 -
 .../Python/Python-2.7.2/Demo/scripts/pp.py    |   129 -
 .../Python-2.7.2/Demo/scripts/primes.py       |    30 -
 .../Python-2.7.2/Demo/scripts/queens.py       |    85 -
 .../Python-2.7.2/Demo/scripts/script.py       |    42 -
 .../Python-2.7.2/Demo/scripts/unbirthday.py   |   104 -
 .../Python-2.7.2/Demo/scripts/update.py       |    92 -
 .../Python/Python-2.7.2/Demo/sockets/README   |    14 -
 .../Python-2.7.2/Demo/sockets/broadcast.py    |    15 -
 .../Python-2.7.2/Demo/sockets/echosvr.py      |    31 -
 .../Python-2.7.2/Demo/sockets/finger.py       |    58 -
 .../Python/Python-2.7.2/Demo/sockets/ftp.py   |   146 -
 .../Python-2.7.2/Demo/sockets/gopher.py       |   347 -
 .../Python/Python-2.7.2/Demo/sockets/mcast.py |    80 -
 .../Python/Python-2.7.2/Demo/sockets/radio.py |    14 -
 .../Python-2.7.2/Demo/sockets/rpython.py      |    35 -
 .../Python-2.7.2/Demo/sockets/rpythond.py     |    52 -
 .../Python-2.7.2/Demo/sockets/telnet.py       |   109 -
 .../Python-2.7.2/Demo/sockets/throughput.py   |    93 -
 .../Python-2.7.2/Demo/sockets/udpecho.py      |    63 -
 .../Python-2.7.2/Demo/sockets/unicast.py      |    14 -
 .../Python-2.7.2/Demo/sockets/unixclient.py   |    12 -
 .../Python-2.7.2/Demo/sockets/unixserver.py   |    24 -
 .../Python-2.7.2/Demo/xml/elem_count.py       |    42 -
 .../Python/Python-2.7.2/Demo/xml/roundtrip.py |    46 -
 .../Python/Python-2.7.2/Demo/xml/rss2html.py  |    97 -
 .../Python/Python-2.7.2/Demo/zlib/minigzip.py |   133 -
 .../Python/Python-2.7.2/Demo/zlib/zlibdemo.py |    48 -
 .../Python/Python-2.7.2/Grammar/Grammar       |   142 -
 .../Python/Python-2.7.2/Include/Python-ast.h  |   535 -
 .../Python/Python-2.7.2/Include/Python.h      |   178 -
 .../Python/Python-2.7.2/Include/abstract.h    |  1396 --
 .../Python/Python-2.7.2/Include/asdl.h        |    45 -
 .../Python/Python-2.7.2/Include/ast.h         |    13 -
 .../Python/Python-2.7.2/Include/bitset.h      |    32 -
 .../Python/Python-2.7.2/Include/boolobject.h  |    36 -
 .../Python-2.7.2/Include/bufferobject.h       |    33 -
 .../Python-2.7.2/Include/bytearrayobject.h    |    57 -
 .../Python-2.7.2/Include/bytes_methods.h      |    75 -
 .../Python/Python-2.7.2/Include/bytesobject.h |    27 -
 .../Python/Python-2.7.2/Include/cStringIO.h   |    73 -
 .../Python/Python-2.7.2/Include/cellobject.h  |    28 -
 .../Python/Python-2.7.2/Include/ceval.h       |   153 -
 .../Python/Python-2.7.2/Include/classobject.h |    83 -
 .../Python/Python-2.7.2/Include/cobject.h     |    89 -
 .../Python/Python-2.7.2/Include/code.h        |   107 -
 .../Python/Python-2.7.2/Include/codecs.h      |   167 -
 .../Python/Python-2.7.2/Include/compile.h     |    40 -
 .../Python-2.7.2/Include/complexobject.h      |    66 -
 .../Python/Python-2.7.2/Include/datetime.h    |   239 -
 .../Python/Python-2.7.2/Include/descrobject.h |    94 -
 .../Python/Python-2.7.2/Include/dictobject.h  |   156 -
 .../Python/Python-2.7.2/Include/dtoa.h        |    15 -
 .../Python/Python-2.7.2/Include/enumobject.h  |    17 -
 .../Python/Python-2.7.2/Include/errcode.h     |    36 -
 .../Python/Python-2.7.2/Include/eval.h        |    25 -
 .../Python/Python-2.7.2/Include/fileobject.h  |   102 -
 .../Python/Python-2.7.2/Include/floatobject.h |   140 -
 .../Python/Python-2.7.2/Include/frameobject.h |    89 -
 .../Python/Python-2.7.2/Include/funcobject.h  |    76 -
 .../Python/Python-2.7.2/Include/genobject.h   |    40 -
 .../Python/Python-2.7.2/Include/graminit.h    |    87 -
 .../Python/Python-2.7.2/Include/grammar.h     |    93 -
 .../Python/Python-2.7.2/Include/import.h      |    71 -
 .../Python/Python-2.7.2/Include/intobject.h   |    80 -
 .../Python/Python-2.7.2/Include/intrcheck.h   |    15 -
 .../Python/Python-2.7.2/Include/iterobject.h  |    23 -
 .../Python/Python-2.7.2/Include/listobject.h  |    68 -
 .../Python/Python-2.7.2/Include/longintrepr.h |   103 -
 .../Python/Python-2.7.2/Include/longobject.h  |   134 -
 .../Python/Python-2.7.2/Include/marshal.h     |    25 -
 .../Python-2.7.2/Include/memoryobject.h       |    74 -
 .../Python/Python-2.7.2/Include/metagrammar.h |    18 -
 .../Python-2.7.2/Include/methodobject.h       |    93 -
 .../Python/Python-2.7.2/Include/modsupport.h  |   134 -
 .../Python-2.7.2/Include/moduleobject.h       |    24 -
 .../Python/Python-2.7.2/Include/node.h        |    40 -
 .../Python/Python-2.7.2/Include/object.h      |   986 -
 .../Python/Python-2.7.2/Include/objimpl.h     |   354 -
 .../Python/Python-2.7.2/Include/opcode.h      |   162 -
 .../Python/Python-2.7.2/Include/osdefs.h      |    71 -
 .../Python/Python-2.7.2/Include/parsetok.h    |    64 -
 .../Python/Python-2.7.2/Include/patchlevel.h  |    43 -
 .../Python/Python-2.7.2/Include/pgen.h        |    18 -
 .../Python/Python-2.7.2/Include/pgenheaders.h |    42 -
 .../Python/Python-2.7.2/Include/py_curses.h   |   176 -
 .../Python/Python-2.7.2/Include/pyarena.h     |    62 -
 .../Python/Python-2.7.2/Include/pycapsule.h   |    56 -
 .../Python/Python-2.7.2/Include/pyctype.h     |    31 -
 .../Python/Python-2.7.2/Include/pydebug.h     |    40 -
 .../Python/Python-2.7.2/Include/pyerrors.h    |   328 -
 .../Python/Python-2.7.2/Include/pyexpat.h     |    48 -
 .../Python/Python-2.7.2/Include/pyfpe.h       |   176 -
 .../Python/Python-2.7.2/Include/pygetopt.h    |    17 -
 .../Python/Python-2.7.2/Include/pymacconfig.h |   102 -
 .../Python-2.7.2/Include/pymactoolbox.h       |   217 -
 .../Python/Python-2.7.2/Include/pymath.h      |   192 -
 .../Python/Python-2.7.2/Include/pymem.h       |   122 -
 .../Python/Python-2.7.2/Include/pyport.h      |   918 -
 .../Python/Python-2.7.2/Include/pystate.h     |   198 -
 .../Python/Python-2.7.2/Include/pystrcmp.h    |    23 -
 .../Python/Python-2.7.2/Include/pystrtod.h    |    45 -
 .../Python/Python-2.7.2/Include/pythonrun.h   |   178 -
 .../Python/Python-2.7.2/Include/pythread.h    |    41 -
 .../Python/Python-2.7.2/Include/rangeobject.h |    28 -
 .../Python/Python-2.7.2/Include/setobject.h   |    99 -
 .../Python/Python-2.7.2/Include/sliceobject.h |    44 -
 .../Python-2.7.2/Include/stringobject.h       |   210 -
 .../Python-2.7.2/Include/structmember.h       |    99 -
 .../Python/Python-2.7.2/Include/structseq.h   |    41 -
 .../Python/Python-2.7.2/Include/symtable.h    |    98 -
 .../Python/Python-2.7.2/Include/sysmodule.h   |    32 -
 .../Python/Python-2.7.2/Include/timefuncs.h   |    23 -
 .../Python/Python-2.7.2/Include/token.h       |    85 -
 .../Python/Python-2.7.2/Include/traceback.h   |    31 -
 .../Python/Python-2.7.2/Include/tupleobject.h |    61 -
 .../Python/Python-2.7.2/Include/ucnhash.h     |    33 -
 .../Python-2.7.2/Include/unicodeobject.h      |  1413 --
 .../Python/Python-2.7.2/Include/warnings.h    |    23 -
 .../Python-2.7.2/Include/weakrefobject.h      |    75 -
 .../Applications/Python/Python-2.7.2/LICENSE  |   279 -
 .../Python/Python-2.7.2/Lib/BaseHTTPServer.py |   606 -
 .../Python/Python-2.7.2/Lib/Bastion.py        |   180 -
 .../Python/Python-2.7.2/Lib/CGIHTTPServer.py  |   374 -
 .../Python/Python-2.7.2/Lib/ConfigParser.py   |   745 -
 .../Python/Python-2.7.2/Lib/Cookie.py         |   761 -
 .../Python-2.7.2/Lib/DocXMLRPCServer.py       |   279 -
 .../Python/Python-2.7.2/Lib/HTMLParser.py     |   393 -
 .../Python/Python-2.7.2/Lib/MimeWriter.py     |   186 -
 .../Python/Python-2.7.2/Lib/Queue.py          |   244 -
 .../Python-2.7.2/Lib/SimpleHTTPServer.py      |   220 -
 .../Python-2.7.2/Lib/SimpleXMLRPCServer.py    |   704 -
 .../Python/Python-2.7.2/Lib/SocketServer.py   |   716 -
 .../Python/Python-2.7.2/Lib/StringIO.py       |   324 -
 .../Python/Python-2.7.2/Lib/UserDict.py       |   180 -
 .../Python/Python-2.7.2/Lib/UserList.py       |    88 -
 .../Python/Python-2.7.2/Lib/UserString.py     |   228 -
 .../Python/Python-2.7.2/Lib/_LWPCookieJar.py  |   170 -
 .../Python-2.7.2/Lib/_MozillaCookieJar.py     |   149 -
 .../Python/Python-2.7.2/Lib/__future__.py     |   128 -
 .../Python/Python-2.7.2/Lib/__phello__.foo.py |     1 -
 .../Python/Python-2.7.2/Lib/_abcoll.py        |   601 -
 .../Python/Python-2.7.2/Lib/_pyio.py          |  2006 --
 .../Python/Python-2.7.2/Lib/_strptime.py      |   454 -
 .../Python/Python-2.7.2/Lib/_weakrefset.py    |   216 -
 .../Python/Python-2.7.2/Lib/abc.py            |   185 -
 .../Python/Python-2.7.2/Lib/aifc.py           |   957 -
 .../Python/Python-2.7.2/Lib/antigravity.py    |     4 -
 .../Python/Python-2.7.2/Lib/anydbm.py         |    85 -
 .../Python/Python-2.7.2/Lib/argparse.py       |  2347 ---
 .../Python/Python-2.7.2/Lib/ast.py            |   311 -
 .../Python/Python-2.7.2/Lib/asynchat.py       |   314 -
 .../Python/Python-2.7.2/Lib/asyncore.py       |   655 -
 .../Python/Python-2.7.2/Lib/atexit.py         |    65 -
 .../Python/Python-2.7.2/Lib/base64.py         |   360 -
 .../Python/Python-2.7.2/Lib/bdb.py            |   632 -
 .../Python/Python-2.7.2/Lib/binhex.py         |   508 -
 .../Python/Python-2.7.2/Lib/bisect.py         |    92 -
 .../Python/Python-2.7.2/Lib/cProfile.py       |   199 -
 .../Python/Python-2.7.2/Lib/calendar.py       |   708 -
 .../Python/Python-2.7.2/Lib/cgi.py            |  1051 -
 .../Python/Python-2.7.2/Lib/cgitb.py          |   318 -
 .../Python/Python-2.7.2/Lib/chunk.py          |   167 -
 .../Python/Python-2.7.2/Lib/cmd.py            |   401 -
 .../Python/Python-2.7.2/Lib/code.py           |   310 -
 .../Python/Python-2.7.2/Lib/codecs.py         |  1098 -
 .../Python/Python-2.7.2/Lib/codeop.py         |   168 -
 .../Python/Python-2.7.2/Lib/collections.py    |   667 -
 .../Python/Python-2.7.2/Lib/colorsys.py       |   156 -
 .../Python/Python-2.7.2/Lib/commands.py       |    90 -
 .../Python/Python-2.7.2/Lib/compileall.py     |   214 -
 .../Python-2.7.2/Lib/compiler/__init__.py     |    31 -
 .../Python/Python-2.7.2/Lib/compiler/ast.py   |  1419 --
 .../Python-2.7.2/Lib/compiler/consts.py       |    23 -
 .../Python-2.7.2/Lib/compiler/future.py       |    74 -
 .../Python/Python-2.7.2/Lib/compiler/misc.py  |    73 -
 .../Python-2.7.2/Lib/compiler/pyassem.py      |   763 -
 .../Python-2.7.2/Lib/compiler/pycodegen.py    |  1555 --
 .../Python-2.7.2/Lib/compiler/symbols.py      |   462 -
 .../Python-2.7.2/Lib/compiler/syntax.py       |    46 -
 .../Python-2.7.2/Lib/compiler/transformer.py  |  1535 --
 .../Python-2.7.2/Lib/compiler/visitor.py      |   113 -
 .../Python/Python-2.7.2/Lib/contextlib.py     |   154 -
 .../Python/Python-2.7.2/Lib/cookielib.py      |  1794 --
 .../Python/Python-2.7.2/Lib/copy.py           |   433 -
 .../Python/Python-2.7.2/Lib/copy_reg.py       |   201 -
 .../Python/Python-2.7.2/Lib/csv.py            |   451 -
 .../Python/Python-2.7.2/Lib/dbhash.py         |    18 -
 .../Python/Python-2.7.2/Lib/decimal.py        |  6149 ------
 .../Python/Python-2.7.2/Lib/difflib.py        |  2059 --
 .../Python/Python-2.7.2/Lib/dircache.py       |    41 -
 .../Python/Python-2.7.2/Lib/dis.py            |   224 -
 .../Python/Python-2.7.2/Lib/distutils/README  |    13 -
 .../Python-2.7.2/Lib/distutils/__init__.py    |    19 -
 .../Lib/distutils/archive_util.py             |   243 -
 .../Lib/distutils/bcppcompiler.py             |   394 -
 .../Python-2.7.2/Lib/distutils/ccompiler.py   |  1145 -
 .../Python/Python-2.7.2/Lib/distutils/cmd.py  |   457 -
 .../Lib/distutils/command/__init__.py         |    33 -
 .../Lib/distutils/command/bdist.py            |   146 -
 .../Lib/distutils/command/bdist_dumb.py       |   132 -
 .../Lib/distutils/command/bdist_msi.py        |   738 -
 .../Lib/distutils/command/bdist_rpm.py        |   575 -
 .../Lib/distutils/command/bdist_wininst.py    |   364 -
 .../Lib/distutils/command/build.py            |   147 -
 .../Lib/distutils/command/build_clib.py       |   209 -
 .../Lib/distutils/command/build_ext.py        |   769 -
 .../Lib/distutils/command/build_py.py         |   393 -
 .../Lib/distutils/command/build_scripts.py    |   131 -
 .../Lib/distutils/command/check.py            |   143 -
 .../Lib/distutils/command/clean.py            |    80 -
 .../Lib/distutils/command/command_template    |    45 -
 .../Lib/distutils/command/config.py           |   357 -
 .../Lib/distutils/command/install.py          |   672 -
 .../Lib/distutils/command/install_data.py     |    81 -
 .../Lib/distutils/command/install_egg_info.py |    78 -
 .../Lib/distutils/command/install_headers.py  |    51 -
 .../Lib/distutils/command/install_lib.py      |   219 -
 .../Lib/distutils/command/install_scripts.py  |    64 -
 .../Lib/distutils/command/register.py         |   307 -
 .../Lib/distutils/command/sdist.py            |   464 -
 .../Lib/distutils/command/upload.py           |   194 -
 .../Lib/distutils/command/wininst-6.0.exe     |   Bin 61440 -> 0 bytes
 .../Lib/distutils/command/wininst-7.1.exe     |   Bin 65536 -> 0 bytes
 .../Lib/distutils/command/wininst-8.0.exe     |   Bin 61440 -> 0 bytes
 .../distutils/command/wininst-9.0-amd64.exe   |   Bin 223744 -> 0 bytes
 .../Lib/distutils/command/wininst-9.0.exe     |   Bin 196096 -> 0 bytes
 .../Python-2.7.2/Lib/distutils/config.py      |   121 -
 .../Python/Python-2.7.2/Lib/distutils/core.py |   242 -
 .../Lib/distutils/cygwinccompiler.py          |   449 -
 .../Python-2.7.2/Lib/distutils/debug.py       |     7 -
 .../Python-2.7.2/Lib/distutils/dep_util.py    |    88 -
 .../Python-2.7.2/Lib/distutils/dir_util.py    |   212 -
 .../Python/Python-2.7.2/Lib/distutils/dist.py |  1248 --
 .../Lib/distutils/emxccompiler.py             |   319 -
 .../Python-2.7.2/Lib/distutils/errors.py      |    88 -
 .../Python-2.7.2/Lib/distutils/extension.py   |   255 -
 .../Lib/distutils/fancy_getopt.py             |   484 -
 .../Python-2.7.2/Lib/distutils/file_util.py   |   231 -
 .../Python-2.7.2/Lib/distutils/filelist.py    |   336 -
 .../Python/Python-2.7.2/Lib/distutils/log.py  |    71 -
 .../Lib/distutils/msvc9compiler.py            |   764 -
 .../Lib/distutils/msvccompiler.py             |   659 -
 .../Python-2.7.2/Lib/distutils/spawn.py       |   173 -
 .../Python-2.7.2/Lib/distutils/sysconfig.py   |   571 -
 .../Lib/distutils/tests/Setup.sample          |    67 -
 .../Lib/distutils/tests/__init__.py           |    36 -
 .../distutils/tests/setuptools_build_ext.py   |   287 -
 .../distutils/tests/setuptools_extension.py   |    51 -
 .../Lib/distutils/tests/support.py            |   133 -
 .../Lib/distutils/tests/test_archive_util.py  |   284 -
 .../Lib/distutils/tests/test_bdist.py         |    45 -
 .../Lib/distutils/tests/test_bdist_dumb.py    |   105 -
 .../Lib/distutils/tests/test_bdist_msi.py     |    25 -
 .../Lib/distutils/tests/test_bdist_rpm.py     |   127 -
 .../Lib/distutils/tests/test_bdist_wininst.py |    32 -
 .../Lib/distutils/tests/test_build.py         |    55 -
 .../Lib/distutils/tests/test_build_clib.py    |   145 -
 .../Lib/distutils/tests/test_build_ext.py     |   491 -
 .../Lib/distutils/tests/test_build_py.py      |   122 -
 .../Lib/distutils/tests/test_build_scripts.py |   112 -
 .../Lib/distutils/tests/test_ccompiler.py     |    81 -
 .../Lib/distutils/tests/test_check.py         |    99 -
 .../Lib/distutils/tests/test_clean.py         |    51 -
 .../Lib/distutils/tests/test_cmd.py           |   127 -
 .../Lib/distutils/tests/test_config.py        |   123 -
 .../Lib/distutils/tests/test_config_cmd.py    |    90 -
 .../Lib/distutils/tests/test_core.py          |   108 -
 .../Lib/distutils/tests/test_dep_util.py      |    81 -
 .../Lib/distutils/tests/test_dir_util.py      |   116 -
 .../Lib/distutils/tests/test_dist.py          |   436 -
 .../Lib/distutils/tests/test_file_util.py     |    81 -
 .../Lib/distutils/tests/test_filelist.py      |    85 -
 .../Lib/distutils/tests/test_install.py       |    57 -
 .../Lib/distutils/tests/test_install_data.py  |    77 -
 .../distutils/tests/test_install_headers.py   |    41 -
 .../Lib/distutils/tests/test_install_lib.py   |   107 -
 .../distutils/tests/test_install_scripts.py   |    82 -
 .../Lib/distutils/tests/test_msvc9compiler.py |   141 -
 .../Lib/distutils/tests/test_register.py      |   261 -
 .../Lib/distutils/tests/test_sdist.py         |   429 -
 .../Lib/distutils/tests/test_spawn.py         |    60 -
 .../Lib/distutils/tests/test_sysconfig.py     |    82 -
 .../Lib/distutils/tests/test_text_file.py     |   107 -
 .../Lib/distutils/tests/test_unixccompiler.py |   130 -
 .../Lib/distutils/tests/test_upload.py        |   131 -
 .../Lib/distutils/tests/test_util.py          |    25 -
 .../Lib/distutils/tests/test_version.py       |    71 -
 .../distutils/tests/test_versionpredicate.py  |    13 -
 .../Python-2.7.2/Lib/distutils/text_file.py   |   304 -
 .../Lib/distutils/unixccompiler.py            |   346 -
 .../Python/Python-2.7.2/Lib/distutils/util.py |   567 -
 .../Python-2.7.2/Lib/distutils/version.py     |   299 -
 .../Lib/distutils/versionpredicate.py         |   164 -
 .../Python/Python-2.7.2/Lib/doctest.py        |  2731 ---
 .../Python/Python-2.7.2/Lib/dumbdbm.py        |   250 -
 .../Python/Python-2.7.2/Lib/dummy_thread.py   |   145 -
 .../Python-2.7.2/Lib/dummy_threading.py       |    78 -
 .../Python/Python-2.7.2/Lib/email/__init__.py |   123 -
 .../Python-2.7.2/Lib/email/_parseaddr.py      |   497 -
 .../Python-2.7.2/Lib/email/base64mime.py      |   183 -
 .../Python/Python-2.7.2/Lib/email/charset.py  |   397 -
 .../Python/Python-2.7.2/Lib/email/encoders.py |    82 -
 .../Python/Python-2.7.2/Lib/email/errors.py   |    57 -
 .../Python-2.7.2/Lib/email/feedparser.py      |   484 -
 .../Python-2.7.2/Lib/email/generator.py       |   364 -
 .../Python/Python-2.7.2/Lib/email/header.py   |   514 -
 .../Python-2.7.2/Lib/email/iterators.py       |    73 -
 .../Python/Python-2.7.2/Lib/email/message.py  |   797 -
 .../Python-2.7.2/Lib/email/mime/__init__.py   |     0
 .../Lib/email/mime/application.py             |    36 -
 .../Python-2.7.2/Lib/email/mime/audio.py      |    73 -
 .../Python-2.7.2/Lib/email/mime/base.py       |    26 -
 .../Python-2.7.2/Lib/email/mime/image.py      |    46 -
 .../Python-2.7.2/Lib/email/mime/message.py    |    34 -
 .../Python-2.7.2/Lib/email/mime/multipart.py  |    47 -
 .../Lib/email/mime/nonmultipart.py            |    22 -
 .../Python-2.7.2/Lib/email/mime/text.py       |    30 -
 .../Python/Python-2.7.2/Lib/email/parser.py   |    91 -
 .../Python-2.7.2/Lib/email/quoprimime.py      |   336 -
 .../Python-2.7.2/Lib/email/test/__init__.py   |     0
 .../Lib/email/test/data/PyBanner048.gif       |   Bin 954 -> 0 bytes
 .../Lib/email/test/data/audiotest.au          |   Bin 28144 -> 0 bytes
 .../Lib/email/test/data/msg_01.txt            |    19 -
 .../Lib/email/test/data/msg_02.txt            |   135 -
 .../Lib/email/test/data/msg_03.txt            |    16 -
 .../Lib/email/test/data/msg_04.txt            |    37 -
 .../Lib/email/test/data/msg_05.txt            |    28 -
 .../Lib/email/test/data/msg_06.txt            |    33 -
 .../Lib/email/test/data/msg_07.txt            |    83 -
 .../Lib/email/test/data/msg_08.txt            |    24 -
 .../Lib/email/test/data/msg_09.txt            |    24 -
 .../Lib/email/test/data/msg_10.txt            |    39 -
 .../Lib/email/test/data/msg_11.txt            |     7 -
 .../Lib/email/test/data/msg_12.txt            |    36 -
 .../Lib/email/test/data/msg_12a.txt           |    38 -
 .../Lib/email/test/data/msg_13.txt            |    94 -
 .../Lib/email/test/data/msg_14.txt            |    23 -
 .../Lib/email/test/data/msg_15.txt            |    52 -
 .../Lib/email/test/data/msg_16.txt            |   123 -
 .../Lib/email/test/data/msg_17.txt            |    12 -
 .../Lib/email/test/data/msg_18.txt            |     6 -
 .../Lib/email/test/data/msg_19.txt            |    43 -
 .../Lib/email/test/data/msg_20.txt            |    22 -
 .../Lib/email/test/data/msg_21.txt            |    20 -
 .../Lib/email/test/data/msg_22.txt            |    46 -
 .../Lib/email/test/data/msg_23.txt            |     8 -
 .../Lib/email/test/data/msg_24.txt            |    10 -
 .../Lib/email/test/data/msg_25.txt            |   117 -
 .../Lib/email/test/data/msg_26.txt            |    45 -
 .../Lib/email/test/data/msg_27.txt            |    15 -
 .../Lib/email/test/data/msg_28.txt            |    25 -
 .../Lib/email/test/data/msg_29.txt            |    22 -
 .../Lib/email/test/data/msg_30.txt            |    23 -
 .../Lib/email/test/data/msg_31.txt            |    15 -
 .../Lib/email/test/data/msg_32.txt            |    14 -
 .../Lib/email/test/data/msg_33.txt            |    29 -
 .../Lib/email/test/data/msg_34.txt            |    19 -
 .../Lib/email/test/data/msg_35.txt            |     4 -
 .../Lib/email/test/data/msg_36.txt            |    40 -
 .../Lib/email/test/data/msg_37.txt            |    22 -
 .../Lib/email/test/data/msg_38.txt            |   101 -
 .../Lib/email/test/data/msg_39.txt            |    83 -
 .../Lib/email/test/data/msg_40.txt            |    10 -
 .../Lib/email/test/data/msg_41.txt            |     8 -
 .../Lib/email/test/data/msg_42.txt            |    20 -
 .../Lib/email/test/data/msg_43.txt            |   217 -
 .../Lib/email/test/data/msg_44.txt            |    33 -
 .../Lib/email/test/data/msg_45.txt            |    33 -
 .../Lib/email/test/data/msg_46.txt            |    23 -
 .../Python-2.7.2/Lib/email/test/test_email.py |  3529 ----
 .../Lib/email/test/test_email_codecs.py       |    77 -
 .../email/test/test_email_codecs_renamed.py   |    77 -
 .../Lib/email/test/test_email_renamed.py      |  3297 ---
 .../Lib/email/test/test_email_torture.py      |   136 -
 .../Python/Python-2.7.2/Lib/email/utils.py    |   324 -
 .../Python-2.7.2/Lib/encodings/__init__.py    |   157 -
 .../Python-2.7.2/Lib/encodings/aliases.py     |   527 -
 .../Python-2.7.2/Lib/encodings/ascii.py       |    50 -
 .../Lib/encodings/base64_codec.py             |    79 -
 .../Python/Python-2.7.2/Lib/encodings/big5.py |    39 -
 .../Python-2.7.2/Lib/encodings/big5hkscs.py   |    39 -
 .../Python-2.7.2/Lib/encodings/bz2_codec.py   |   102 -
 .../Python-2.7.2/Lib/encodings/charmap.py     |    69 -
 .../Python-2.7.2/Lib/encodings/cp037.py       |   307 -
 .../Python-2.7.2/Lib/encodings/cp1006.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1026.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1140.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1250.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1251.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1252.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1253.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1254.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1255.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1256.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1257.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp1258.py      |   307 -
 .../Python-2.7.2/Lib/encodings/cp424.py       |   307 -
 .../Python-2.7.2/Lib/encodings/cp437.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp500.py       |   307 -
 .../Python-2.7.2/Lib/encodings/cp720.py       |   309 -
 .../Python-2.7.2/Lib/encodings/cp737.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp775.py       |   697 -
 .../Python-2.7.2/Lib/encodings/cp850.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp852.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp855.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp856.py       |   307 -
 .../Python-2.7.2/Lib/encodings/cp857.py       |   694 -
 .../Python-2.7.2/Lib/encodings/cp858.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp860.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp861.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp862.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp863.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp864.py       |   690 -
 .../Python-2.7.2/Lib/encodings/cp865.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp866.py       |   698 -
 .../Python-2.7.2/Lib/encodings/cp869.py       |   689 -
 .../Python-2.7.2/Lib/encodings/cp874.py       |   307 -
 .../Python-2.7.2/Lib/encodings/cp875.py       |   307 -
 .../Python-2.7.2/Lib/encodings/cp932.py       |    39 -
 .../Python-2.7.2/Lib/encodings/cp949.py       |    39 -
 .../Python-2.7.2/Lib/encodings/cp950.py       |    39 -
 .../Lib/encodings/euc_jis_2004.py             |    39 -
 .../Lib/encodings/euc_jisx0213.py             |    39 -
 .../Python-2.7.2/Lib/encodings/euc_jp.py      |    39 -
 .../Python-2.7.2/Lib/encodings/euc_kr.py      |    39 -
 .../Python-2.7.2/Lib/encodings/gb18030.py     |    39 -
 .../Python-2.7.2/Lib/encodings/gb2312.py      |    39 -
 .../Python/Python-2.7.2/Lib/encodings/gbk.py  |    39 -
 .../Python-2.7.2/Lib/encodings/hex_codec.py   |    79 -
 .../Python-2.7.2/Lib/encodings/hp_roman8.py   |   152 -
 .../Python/Python-2.7.2/Lib/encodings/hz.py   |    39 -
 .../Python/Python-2.7.2/Lib/encodings/idna.py |   288 -
 .../Python-2.7.2/Lib/encodings/iso2022_jp.py  |    39 -
 .../Lib/encodings/iso2022_jp_1.py             |    39 -
 .../Lib/encodings/iso2022_jp_2.py             |    39 -
 .../Lib/encodings/iso2022_jp_2004.py          |    39 -
 .../Lib/encodings/iso2022_jp_3.py             |    39 -
 .../Lib/encodings/iso2022_jp_ext.py           |    39 -
 .../Python-2.7.2/Lib/encodings/iso2022_kr.py  |    39 -
 .../Python-2.7.2/Lib/encodings/iso8859_1.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_10.py  |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_11.py  |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_13.py  |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_14.py  |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_15.py  |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_16.py  |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_2.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_3.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_4.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_5.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_6.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_7.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_8.py   |   307 -
 .../Python-2.7.2/Lib/encodings/iso8859_9.py   |   307 -
 .../Python-2.7.2/Lib/encodings/johab.py       |    39 -
 .../Python-2.7.2/Lib/encodings/koi8_r.py      |   307 -
 .../Python-2.7.2/Lib/encodings/koi8_u.py      |   307 -
 .../Python-2.7.2/Lib/encodings/latin_1.py     |    50 -
 .../Python-2.7.2/Lib/encodings/mac_arabic.py  |   698 -
 .../Lib/encodings/mac_centeuro.py             |   307 -
 .../Lib/encodings/mac_croatian.py             |   307 -
 .../Lib/encodings/mac_cyrillic.py             |   307 -
 .../Python-2.7.2/Lib/encodings/mac_farsi.py   |   307 -
 .../Python-2.7.2/Lib/encodings/mac_greek.py   |   307 -
 .../Python-2.7.2/Lib/encodings/mac_iceland.py |   307 -
 .../Python-2.7.2/Lib/encodings/mac_latin2.py  |   183 -
 .../Python-2.7.2/Lib/encodings/mac_roman.py   |   307 -
 .../Lib/encodings/mac_romanian.py             |   307 -
 .../Python-2.7.2/Lib/encodings/mac_turkish.py |   307 -
 .../Python/Python-2.7.2/Lib/encodings/mbcs.py |    47 -
 .../Python-2.7.2/Lib/encodings/palmos.py      |    83 -
 .../Python-2.7.2/Lib/encodings/ptcp154.py     |   175 -
 .../Python-2.7.2/Lib/encodings/punycode.py    |   238 -
 .../Lib/encodings/quopri_codec.py             |    75 -
 .../Lib/encodings/raw_unicode_escape.py       |    45 -
 .../Python-2.7.2/Lib/encodings/rot_13.py      |   118 -
 .../Python-2.7.2/Lib/encodings/shift_jis.py   |    39 -
 .../Lib/encodings/shift_jis_2004.py           |    39 -
 .../Lib/encodings/shift_jisx0213.py           |    39 -
 .../Lib/encodings/string_escape.py            |    38 -
 .../Python-2.7.2/Lib/encodings/tis_620.py     |   307 -
 .../Python-2.7.2/Lib/encodings/undefined.py   |    49 -
 .../Lib/encodings/unicode_escape.py           |    45 -
 .../Lib/encodings/unicode_internal.py         |    45 -
 .../Python-2.7.2/Lib/encodings/utf_16.py      |   126 -
 .../Python-2.7.2/Lib/encodings/utf_16_be.py   |    42 -
 .../Python-2.7.2/Lib/encodings/utf_16_le.py   |    42 -
 .../Python-2.7.2/Lib/encodings/utf_32.py      |   150 -
 .../Python-2.7.2/Lib/encodings/utf_32_be.py   |    37 -
 .../Python-2.7.2/Lib/encodings/utf_32_le.py   |    37 -
 .../Python-2.7.2/Lib/encodings/utf_7.py       |    38 -
 .../Python-2.7.2/Lib/encodings/utf_8.py       |    42 -
 .../Python-2.7.2/Lib/encodings/utf_8_sig.py   |   117 -
 .../Python-2.7.2/Lib/encodings/uu_codec.py    |   129 -
 .../Python-2.7.2/Lib/encodings/zlib_codec.py  |   102 -
 .../Python/Python-2.7.2/Lib/filecmp.py        |   295 -
 .../Python/Python-2.7.2/Lib/fileinput.py      |   413 -
 .../Python/Python-2.7.2/Lib/fnmatch.py        |   116 -
 .../Python/Python-2.7.2/Lib/formatter.py      |   445 -
 .../Python/Python-2.7.2/Lib/fpformat.py       |   145 -
 .../Python/Python-2.7.2/Lib/fractions.py      |   605 -
 .../Python/Python-2.7.2/Lib/ftplib.py         |  1036 -
 .../Python/Python-2.7.2/Lib/functools.py      |   100 -
 .../Python/Python-2.7.2/Lib/genericpath.py    |   105 -
 .../Python/Python-2.7.2/Lib/getopt.py         |   210 -
 .../Python/Python-2.7.2/Lib/getpass.py        |   179 -
 .../Python/Python-2.7.2/Lib/gettext.py        |   591 -
 .../Python/Python-2.7.2/Lib/glob.py           |    78 -
 .../Python/Python-2.7.2/Lib/gzip.py           |   509 -
 .../Python/Python-2.7.2/Lib/hashlib.py        |   146 -
 .../Python/Python-2.7.2/Lib/heapq.py          |   442 -
 .../Python/Python-2.7.2/Lib/hmac.py           |   133 -
 .../Python-2.7.2/Lib/hotshot/__init__.py      |    78 -
 .../Python/Python-2.7.2/Lib/hotshot/log.py    |   194 -
 .../Python/Python-2.7.2/Lib/hotshot/stats.py  |    93 -
 .../Python/Python-2.7.2/Lib/hotshot/stones.py |    30 -
 .../Python/Python-2.7.2/Lib/htmlentitydefs.py |   273 -
 .../Python/Python-2.7.2/Lib/htmllib.py        |   491 -
 .../Python/Python-2.7.2/Lib/httplib.py        |  1392 --
 .../Python/Python-2.7.2/Lib/ihooks.py         |   554 -
 .../Python/Python-2.7.2/Lib/imaplib.py        |  1518 --
 .../Python/Python-2.7.2/Lib/imghdr.py         |   161 -
 .../Python-2.7.2/Lib/importlib/__init__.py    |    38 -
 .../Python/Python-2.7.2/Lib/imputil.py        |   725 -
 .../Python/Python-2.7.2/Lib/inspect.py        |  1056 -
 .../Python/Python-2.7.2/Lib/io.py             |    98 -
 .../Python/Python-2.7.2/Lib/json/__init__.py  |   339 -
 .../Python/Python-2.7.2/Lib/json/decoder.py   |   385 -
 .../Python/Python-2.7.2/Lib/json/encoder.py   |   442 -
 .../Python/Python-2.7.2/Lib/json/scanner.py   |    67 -
 .../Python-2.7.2/Lib/json/tests/__init__.py   |    73 -
 .../Lib/json/tests/test_check_circular.py     |    34 -
 .../Lib/json/tests/test_decode.py             |    50 -
 .../Lib/json/tests/test_default.py            |    12 -
 .../Python-2.7.2/Lib/json/tests/test_dump.py  |    23 -
 .../tests/test_encode_basestring_ascii.py     |    41 -
 .../Python-2.7.2/Lib/json/tests/test_fail.py  |    87 -
 .../Python-2.7.2/Lib/json/tests/test_float.py |    22 -
 .../Lib/json/tests/test_indent.py             |    60 -
 .../Python-2.7.2/Lib/json/tests/test_pass1.py |    79 -
 .../Python-2.7.2/Lib/json/tests/test_pass2.py |    18 -
 .../Python-2.7.2/Lib/json/tests/test_pass3.py |    24 -
 .../Lib/json/tests/test_recursion.py          |   108 -
 .../Lib/json/tests/test_scanstring.py         |   109 -
 .../Lib/json/tests/test_separators.py         |    44 -
 .../Lib/json/tests/test_speedups.py           |    23 -
 .../Lib/json/tests/test_unicode.py            |    85 -
 .../Python/Python-2.7.2/Lib/json/tool.py      |    37 -
 .../Python/Python-2.7.2/Lib/keyword.py        |    93 -
 .../Python-2.7.2/Lib/lib2to3/Grammar.txt      |   158 -
 .../Lib/lib2to3/PatternGrammar.txt            |    28 -
 .../Python-2.7.2/Lib/lib2to3/__init__.py      |     1 -
 .../Python-2.7.2/Lib/lib2to3/__main__.py      |     4 -
 .../Python-2.7.2/Lib/lib2to3/btm_matcher.py   |   168 -
 .../Python-2.7.2/Lib/lib2to3/btm_utils.py     |   283 -
 .../Python-2.7.2/Lib/lib2to3/fixer_base.py    |   189 -
 .../Python-2.7.2/Lib/lib2to3/fixer_util.py    |   432 -
 .../Lib/lib2to3/fixes/__init__.py             |     1 -
 .../Lib/lib2to3/fixes/fix_apply.py            |    59 -
 .../Lib/lib2to3/fixes/fix_basestring.py       |    14 -
 .../Lib/lib2to3/fixes/fix_buffer.py           |    22 -
 .../Lib/lib2to3/fixes/fix_callable.py         |    37 -
 .../Lib/lib2to3/fixes/fix_dict.py             |   107 -
 .../Lib/lib2to3/fixes/fix_except.py           |    93 -
 .../Lib/lib2to3/fixes/fix_exec.py             |    40 -
 .../Lib/lib2to3/fixes/fix_execfile.py         |    52 -
 .../Lib/lib2to3/fixes/fix_exitfunc.py         |    72 -
 .../Lib/lib2to3/fixes/fix_filter.py           |    76 -
 .../Lib/lib2to3/fixes/fix_funcattrs.py        |    21 -
 .../Lib/lib2to3/fixes/fix_future.py           |    22 -
 .../Lib/lib2to3/fixes/fix_getcwdu.py          |    19 -
 .../Lib/lib2to3/fixes/fix_has_key.py          |   110 -
 .../Lib/lib2to3/fixes/fix_idioms.py           |   152 -
 .../Lib/lib2to3/fixes/fix_import.py           |    99 -
 .../Lib/lib2to3/fixes/fix_imports.py          |   145 -
 .../Lib/lib2to3/fixes/fix_imports2.py         |    16 -
 .../Lib/lib2to3/fixes/fix_input.py            |    26 -
 .../Lib/lib2to3/fixes/fix_intern.py           |    46 -
 .../Lib/lib2to3/fixes/fix_isinstance.py       |    52 -
 .../Lib/lib2to3/fixes/fix_itertools.py        |    43 -
 .../lib2to3/fixes/fix_itertools_imports.py    |    57 -
 .../Lib/lib2to3/fixes/fix_long.py             |    19 -
 .../Python-2.7.2/Lib/lib2to3/fixes/fix_map.py |    91 -
 .../Lib/lib2to3/fixes/fix_metaclass.py        |   228 -
 .../Lib/lib2to3/fixes/fix_methodattrs.py      |    24 -
 .../Python-2.7.2/Lib/lib2to3/fixes/fix_ne.py  |    23 -
 .../Lib/lib2to3/fixes/fix_next.py             |   103 -
 .../Lib/lib2to3/fixes/fix_nonzero.py          |    21 -
 .../Lib/lib2to3/fixes/fix_numliterals.py      |    28 -
 .../Lib/lib2to3/fixes/fix_operator.py         |    96 -
 .../Lib/lib2to3/fixes/fix_paren.py            |    44 -
 .../Lib/lib2to3/fixes/fix_print.py            |    87 -
 .../Lib/lib2to3/fixes/fix_raise.py            |    90 -
 .../Lib/lib2to3/fixes/fix_raw_input.py        |    17 -
 .../Lib/lib2to3/fixes/fix_reduce.py           |    35 -
 .../Lib/lib2to3/fixes/fix_renames.py          |    70 -
 .../Lib/lib2to3/fixes/fix_repr.py             |    23 -
 .../Lib/lib2to3/fixes/fix_set_literal.py      |    53 -
 .../Lib/lib2to3/fixes/fix_standarderror.py    |    18 -
 .../Lib/lib2to3/fixes/fix_sys_exc.py          |    30 -
 .../Lib/lib2to3/fixes/fix_throw.py            |    56 -
 .../Lib/lib2to3/fixes/fix_tuple_params.py     |   175 -
 .../Lib/lib2to3/fixes/fix_types.py            |    62 -
 .../Lib/lib2to3/fixes/fix_unicode.py          |    25 -
 .../Lib/lib2to3/fixes/fix_urllib.py           |   197 -
 .../Lib/lib2to3/fixes/fix_ws_comma.py         |    39 -
 .../Lib/lib2to3/fixes/fix_xrange.py           |    73 -
 .../Lib/lib2to3/fixes/fix_xreadlines.py       |    25 -
 .../Python-2.7.2/Lib/lib2to3/fixes/fix_zip.py |    35 -
 .../Python/Python-2.7.2/Lib/lib2to3/main.py   |   182 -
 .../Python-2.7.2/Lib/lib2to3/patcomp.py       |   205 -
 .../Lib/lib2to3/pgen2/__init__.py             |     4 -
 .../Python-2.7.2/Lib/lib2to3/pgen2/conv.py    |   257 -
 .../Python-2.7.2/Lib/lib2to3/pgen2/driver.py  |   140 -
 .../Python-2.7.2/Lib/lib2to3/pgen2/grammar.py |   184 -
 .../Lib/lib2to3/pgen2/literals.py             |    60 -
 .../Python-2.7.2/Lib/lib2to3/pgen2/parse.py   |   201 -
 .../Python-2.7.2/Lib/lib2to3/pgen2/pgen.py    |   386 -
 .../Python-2.7.2/Lib/lib2to3/pgen2/token.py   |    82 -
 .../Lib/lib2to3/pgen2/tokenize.py             |   500 -
 .../Python/Python-2.7.2/Lib/lib2to3/pygram.py |    40 -
 .../Python/Python-2.7.2/Lib/lib2to3/pytree.py |   887 -
 .../Python-2.7.2/Lib/lib2to3/refactor.py      |   741 -
 .../Lib/lib2to3/tests/__init__.py             |    24 -
 .../Lib/lib2to3/tests/data/README             |     6 -
 .../Lib/lib2to3/tests/data/bom.py             |     2 -
 .../Lib/lib2to3/tests/data/crlf.py            |     3 -
 .../lib2to3/tests/data/different_encoding.py  |     6 -
 .../lib2to3/tests/data/fixers/bad_order.py    |     5 -
 .../tests/data/fixers/myfixes/__init__.py     |     0
 .../tests/data/fixers/myfixes/fix_explicit.py |     6 -
 .../tests/data/fixers/myfixes/fix_first.py    |     6 -
 .../tests/data/fixers/myfixes/fix_last.py     |     7 -
 .../tests/data/fixers/myfixes/fix_parrot.py   |    13 -
 .../tests/data/fixers/myfixes/fix_preorder.py |     6 -
 .../lib2to3/tests/data/fixers/no_fixer_cls.py |     1 -
 .../tests/data/fixers/parrot_example.py       |     2 -
 .../lib2to3/tests/data/infinite_recursion.py  |  2669 ---
 .../lib2to3/tests/data/py2_test_grammar.py    |   974 -
 .../lib2to3/tests/data/py3_test_grammar.py    |   923 -
 .../Lib/lib2to3/tests/pytree_idempotency.py   |    92 -
 .../Python-2.7.2/Lib/lib2to3/tests/support.py |    54 -
 .../Lib/lib2to3/tests/test_all_fixers.py      |    23 -
 .../Lib/lib2to3/tests/test_fixers.py          |  4529 ----
 .../Lib/lib2to3/tests/test_main.py            |    41 -
 .../Lib/lib2to3/tests/test_parser.py          |   227 -
 .../Lib/lib2to3/tests/test_pytree.py          |   494 -
 .../Lib/lib2to3/tests/test_refactor.py        |   281 -
 .../Lib/lib2to3/tests/test_util.py            |   594 -
 .../Python/Python-2.7.2/Lib/linecache.py      |   135 -
 .../Python/Python-2.7.2/Lib/locale.py         |  1867 --
 .../Python-2.7.2/Lib/logging/__init__.py      |  1707 --
 .../Python/Python-2.7.2/Lib/logging/config.py |   905 -
 .../Python-2.7.2/Lib/logging/handlers.py      |  1158 --
 .../Python/Python-2.7.2/Lib/mailbox.py        |  2171 --
 .../Python/Python-2.7.2/Lib/mailcap.py        |   255 -
 .../Python/Python-2.7.2/Lib/markupbase.py     |   392 -
 .../Python/Python-2.7.2/Lib/md5.py            |    14 -
 .../Python/Python-2.7.2/Lib/mhlib.py          |  1005 -
 .../Python/Python-2.7.2/Lib/mimetools.py      |   250 -
 .../Python/Python-2.7.2/Lib/mimetypes.py      |   591 -
 .../Python/Python-2.7.2/Lib/mimify.py         |   468 -
 .../Python/Python-2.7.2/Lib/modulefinder.py   |   671 -
 .../Python/Python-2.7.2/Lib/multifile.py      |   162 -
 .../Python/Python-2.7.2/Lib/mutex.py          |    55 -
 .../Python/Python-2.7.2/Lib/netrc.py          |   122 -
 .../Python/Python-2.7.2/Lib/new.py            |    17 -
 .../Python/Python-2.7.2/Lib/nntplib.py        |   627 -
 .../Python/Python-2.7.2/Lib/ntpath.py         |   523 -
 .../Python/Python-2.7.2/Lib/nturl2path.py     |    66 -
 .../Python/Python-2.7.2/Lib/numbers.py        |   391 -
 .../Python/Python-2.7.2/Lib/opcode.py         |   192 -
 .../Python/Python-2.7.2/Lib/optparse.py       |  1703 --
 .../Python/Python-2.7.2/Lib/os.py             |   759 -
 .../Python/Python-2.7.2/Lib/pdb.doc           |   202 -
 .../Python/Python-2.7.2/Lib/pdb.py            |  1338 --
 .../Python/Python-2.7.2/Lib/pickle.py         |  1391 --
 .../Python/Python-2.7.2/Lib/pickletools.py    |  2274 --
 .../Python/Python-2.7.2/Lib/pipes.py          |   280 -
 .../Python/Python-2.7.2/Lib/pkgutil.py        |   583 -
 .../Python/Python-2.7.2/Lib/platform.py       |  1614 --
 .../Python/Python-2.7.2/Lib/plistlib.py       |   474 -
 .../Python/Python-2.7.2/Lib/popen2.py         |   201 -
 .../Python/Python-2.7.2/Lib/poplib.py         |   417 -
 .../Python/Python-2.7.2/Lib/posixfile.py      |   237 -
 .../Python/Python-2.7.2/Lib/posixpath.py      |   415 -
 .../Python/Python-2.7.2/Lib/pprint.py         |   350 -
 .../Python/Python-2.7.2/Lib/profile.py        |   619 -
 .../Python/Python-2.7.2/Lib/pstats.py         |   713 -
 .../Python/Python-2.7.2/Lib/pty.py            |   174 -
 .../Python/Python-2.7.2/Lib/py_compile.py     |   170 -
 .../Python/Python-2.7.2/Lib/pyclbr.py         |   342 -
 .../Python/Python-2.7.2/Lib/pydoc.py          |  2337 ---
 .../Python-2.7.2/Lib/pydoc_data/__init__.py   |     0
 .../Python-2.7.2/Lib/pydoc_data/topics.py     |    83 -
 .../Python/Python-2.7.2/Lib/quopri.py         |   237 -
 .../Python/Python-2.7.2/Lib/random.py         |   908 -
 .../Python/Python-2.7.2/Lib/re.py             |   326 -
 .../Python/Python-2.7.2/Lib/repr.py           |   132 -
 .../Python/Python-2.7.2/Lib/rexec.py          |   588 -
 .../Python/Python-2.7.2/Lib/rfc822.py         |  1011 -
 .../Python/Python-2.7.2/Lib/rlcompleter.py    |   170 -
 .../Python/Python-2.7.2/Lib/robotparser.py    |   222 -
 .../Python/Python-2.7.2/Lib/runpy.py          |   278 -
 .../Python/Python-2.7.2/Lib/sched.py          |   134 -
 .../Python/Python-2.7.2/Lib/sets.py           |   557 -
 .../Python/Python-2.7.2/Lib/sgmllib.py        |   553 -
 .../Python/Python-2.7.2/Lib/sha.py            |    15 -
 .../Python/Python-2.7.2/Lib/shelve.py         |   239 -
 .../Python/Python-2.7.2/Lib/shlex.py          |   292 -
 .../Python/Python-2.7.2/Lib/shutil.py         |   552 -
 .../Python-2.7.2/Lib/site-packages/README     |     2 -
 .../Python/Python-2.7.2/Lib/site.py           |   615 -
 .../Python/Python-2.7.2/Lib/smtpd.py          |   555 -
 .../Python/Python-2.7.2/Lib/smtplib.py        |   848 -
 .../Python/Python-2.7.2/Lib/sndhdr.py         |   228 -
 .../Python/Python-2.7.2/Lib/socket.py         |   573 -
 .../Python/Python-2.7.2/Lib/sre.py            |    13 -
 .../Python/Python-2.7.2/Lib/sre_compile.py    |   524 -
 .../Python/Python-2.7.2/Lib/sre_constants.py  |   261 -
 .../Python/Python-2.7.2/Lib/sre_parse.py      |   790 -
 .../Python/Python-2.7.2/Lib/ssl.py            |   464 -
 .../Python/Python-2.7.2/Lib/stat.py           |    94 -
 .../Python/Python-2.7.2/Lib/statvfs.py        |    18 -
 .../Python/Python-2.7.2/Lib/string.py         |   642 -
 .../Python/Python-2.7.2/Lib/stringold.py      |   432 -
 .../Python/Python-2.7.2/Lib/stringprep.py     |   272 -
 .../Python/Python-2.7.2/Lib/struct.py         |     3 -
 .../Python/Python-2.7.2/Lib/symbol.py         |   114 -
 .../Python/Python-2.7.2/Lib/symtable.py       |   242 -
 .../Python/Python-2.7.2/Lib/sysconfig.py      |   687 -
 .../Python/Python-2.7.2/Lib/tabnanny.py       |   329 -
 .../Python/Python-2.7.2/Lib/tarfile.py        |  2594 ---
 .../Python/Python-2.7.2/Lib/telnetlib.py      |   657 -
 .../Python/Python-2.7.2/Lib/tempfile.py       |   606 -
 .../Python/Python-2.7.2/Lib/test/185test.db   |   Bin 16384 -> 0 bytes
 .../Lib/test/Sine-1000Hz-300ms.aif            |   Bin 61696 -> 0 bytes
 .../Python/Python-2.7.2/Lib/test/__init__.py  |     1 -
 .../Python/Python-2.7.2/Lib/test/audiotest.au |   Bin 28144 -> 0 bytes
 .../Python/Python-2.7.2/Lib/test/autotest.py  |     6 -
 .../Python-2.7.2/Lib/test/bad_coding.py       |     1 -
 .../Python-2.7.2/Lib/test/bad_coding2.py      |     2 -
 .../Python/Python-2.7.2/Lib/test/badcert.pem  |    36 -
 .../Python/Python-2.7.2/Lib/test/badkey.pem   |    40 -
 .../Lib/test/badsyntax_future3.py             |    10 -
 .../Lib/test/badsyntax_future4.py             |    10 -
 .../Lib/test/badsyntax_future5.py             |    12 -
 .../Lib/test/badsyntax_future6.py             |    10 -
 .../Lib/test/badsyntax_future7.py             |    11 -
 .../Lib/test/badsyntax_future8.py             |    10 -
 .../Lib/test/badsyntax_future9.py             |    10 -
 .../Lib/test/badsyntax_nocaret.py             |     2 -
 .../Python-2.7.2/Lib/test/buffer_tests.py     |   206 -
 .../Python/Python-2.7.2/Lib/test/cfgparser.1  |     2 -
 .../Python-2.7.2/Lib/test/check_soundcard.vbs |    13 -
 .../Lib/test/cjkencodings/big5-utf8.txt       |     9 -
 .../Lib/test/cjkencodings/big5.txt            |     9 -
 .../Lib/test/cjkencodings/big5hkscs-utf8.txt  |     2 -
 .../Lib/test/cjkencodings/big5hkscs.txt       |     2 -
 .../Lib/test/cjkencodings/cp949-utf8.txt      |     9 -
 .../Lib/test/cjkencodings/cp949.txt           |     9 -
 .../test/cjkencodings/euc_jisx0213-utf8.txt   |     8 -
 .../Lib/test/cjkencodings/euc_jisx0213.txt    |     8 -
 .../Lib/test/cjkencodings/euc_jp-utf8.txt     |     7 -
 .../Lib/test/cjkencodings/euc_jp.txt          |     7 -
 .../Lib/test/cjkencodings/euc_kr-utf8.txt     |     7 -
 .../Lib/test/cjkencodings/euc_kr.txt          |     7 -
 .../Lib/test/cjkencodings/gb18030-utf8.txt    |    15 -
 .../Lib/test/cjkencodings/gb18030.txt         |    15 -
 .../Lib/test/cjkencodings/gb2312-utf8.txt     |     6 -
 .../Lib/test/cjkencodings/gb2312.txt          |     6 -
 .../Lib/test/cjkencodings/gbk-utf8.txt        |    14 -
 .../Lib/test/cjkencodings/gbk.txt             |    14 -
 .../Lib/test/cjkencodings/hz-utf8.txt         |     2 -
 .../Python-2.7.2/Lib/test/cjkencodings/hz.txt |     2 -
 .../Lib/test/cjkencodings/johab-utf8.txt      |     9 -
 .../Lib/test/cjkencodings/johab.txt           |     9 -
 .../Lib/test/cjkencodings/shift_jis-utf8.txt  |     7 -
 .../Lib/test/cjkencodings/shift_jis.txt       |     7 -
 .../test/cjkencodings/shift_jisx0213-utf8.txt |     8 -
 .../Lib/test/cjkencodings/shift_jisx0213.txt  |     8 -
 .../Python-2.7.2/Lib/test/cmath_testcases.txt |  2365 ---
 .../Python-2.7.2/Lib/test/crashers/README     |    16 -
 .../Lib/test/crashers/bogus_code_obj.py       |    19 -
 .../Lib/test/crashers/borrowed_ref_1.py       |    29 -
 .../Lib/test/crashers/borrowed_ref_2.py       |    38 -
 .../Lib/test/crashers/compiler_recursion.py   |     5 -
 .../Lib/test/crashers/gc_has_finalizer.py     |    36 -
 .../Lib/test/crashers/gc_inspection.py        |    32 -
 .../Lib/test/crashers/infinite_loop_re.py     |    16 -
 .../Lib/test/crashers/loosing_mro_ref.py      |    35 -
 .../test/crashers/mutation_inside_cyclegc.py  |    31 -
 .../Lib/test/crashers/nasty_eq_vs_dict.py     |    47 -
 .../test/crashers/recursion_limit_too_high.py |    16 -
 .../Lib/test/crashers/recursive_call.py       |    15 -
 .../Python-2.7.2/Lib/test/curses_tests.py     |    46 -
 .../Python/Python-2.7.2/Lib/test/data/README  |     2 -
 .../Lib/test/decimaltestdata/abs.decTest      |   161 -
 .../Lib/test/decimaltestdata/add.decTest      |  2716 ---
 .../Lib/test/decimaltestdata/and.decTest      |   338 -
 .../Lib/test/decimaltestdata/base.decTest     |  1411 --
 .../Lib/test/decimaltestdata/clamp.decTest    |   211 -
 .../Lib/test/decimaltestdata/class.decTest    |   131 -
 .../Lib/test/decimaltestdata/compare.decTest  |   758 -
 .../test/decimaltestdata/comparetotal.decTest |   798 -
 .../decimaltestdata/comparetotmag.decTest     |   790 -
 .../Lib/test/decimaltestdata/copy.decTest     |    86 -
 .../Lib/test/decimaltestdata/copyabs.decTest  |    86 -
 .../test/decimaltestdata/copynegate.decTest   |    86 -
 .../Lib/test/decimaltestdata/copysign.decTest |   177 -
 .../Lib/test/decimaltestdata/ddAbs.decTest    |   126 -
 .../Lib/test/decimaltestdata/ddAdd.decTest    |  1328 --
 .../Lib/test/decimaltestdata/ddAnd.decTest    |   347 -
 .../Lib/test/decimaltestdata/ddBase.decTest   |  1104 -
 .../test/decimaltestdata/ddCanonical.decTest  |   357 -
 .../Lib/test/decimaltestdata/ddClass.decTest  |    76 -
 .../test/decimaltestdata/ddCompare.decTest    |   744 -
 .../test/decimaltestdata/ddCompareSig.decTest |   647 -
 .../decimaltestdata/ddCompareTotal.decTest    |   706 -
 .../decimaltestdata/ddCompareTotalMag.decTest |   706 -
 .../Lib/test/decimaltestdata/ddCopy.decTest   |    88 -
 .../test/decimaltestdata/ddCopyAbs.decTest    |    88 -
 .../test/decimaltestdata/ddCopyNegate.decTest |    88 -
 .../test/decimaltestdata/ddCopySign.decTest   |   175 -
 .../Lib/test/decimaltestdata/ddDivide.decTest |   863 -
 .../test/decimaltestdata/ddDivideInt.decTest  |   449 -
 .../Lib/test/decimaltestdata/ddEncode.decTest |   495 -
 .../Lib/test/decimaltestdata/ddFMA.decTest    |  1698 --
 .../Lib/test/decimaltestdata/ddInvert.decTest |   202 -
 .../Lib/test/decimaltestdata/ddLogB.decTest   |   159 -
 .../Lib/test/decimaltestdata/ddMax.decTest    |   322 -
 .../Lib/test/decimaltestdata/ddMaxMag.decTest |   304 -
 .../Lib/test/decimaltestdata/ddMin.decTest    |   309 -
 .../Lib/test/decimaltestdata/ddMinMag.decTest |   293 -
 .../Lib/test/decimaltestdata/ddMinus.decTest  |    88 -
 .../test/decimaltestdata/ddMultiply.decTest   |   553 -
 .../test/decimaltestdata/ddNextMinus.decTest  |   126 -
 .../test/decimaltestdata/ddNextPlus.decTest   |   124 -
 .../test/decimaltestdata/ddNextToward.decTest |   374 -
 .../Lib/test/decimaltestdata/ddOr.decTest     |   292 -
 .../Lib/test/decimaltestdata/ddPlus.decTest   |    88 -
 .../test/decimaltestdata/ddQuantize.decTest   |   833 -
 .../Lib/test/decimaltestdata/ddReduce.decTest |   182 -
 .../test/decimaltestdata/ddRemainder.decTest  |   600 -
 .../decimaltestdata/ddRemainderNear.decTest   |   629 -
 .../Lib/test/decimaltestdata/ddRotate.decTest |   262 -
 .../decimaltestdata/ddSameQuantum.decTest     |   389 -
 .../Lib/test/decimaltestdata/ddScaleB.decTest |   243 -
 .../Lib/test/decimaltestdata/ddShift.decTest  |   262 -
 .../test/decimaltestdata/ddSubtract.decTest   |   629 -
 .../test/decimaltestdata/ddToIntegral.decTest |   257 -
 .../Lib/test/decimaltestdata/ddXor.decTest    |   337 -
 .../test/decimaltestdata/decDouble.decTest    |    65 -
 .../Lib/test/decimaltestdata/decQuad.decTest  |    65 -
 .../test/decimaltestdata/decSingle.decTest    |    25 -
 .../Lib/test/decimaltestdata/divide.decTest   |   854 -
 .../test/decimaltestdata/divideint.decTest    |   486 -
 .../Lib/test/decimaltestdata/dqAbs.decTest    |   126 -
 .../Lib/test/decimaltestdata/dqAdd.decTest    |  1215 --
 .../Lib/test/decimaltestdata/dqAnd.decTest    |   420 -
 .../Lib/test/decimaltestdata/dqBase.decTest   |  1081 -
 .../test/decimaltestdata/dqCanonical.decTest  |   372 -
 .../Lib/test/decimaltestdata/dqClass.decTest  |    77 -
 .../test/decimaltestdata/dqCompare.decTest    |   753 -
 .../test/decimaltestdata/dqCompareSig.decTest |   647 -
 .../decimaltestdata/dqCompareTotal.decTest    |   706 -
 .../decimaltestdata/dqCompareTotalMag.decTest |   706 -
 .../Lib/test/decimaltestdata/dqCopy.decTest   |    88 -
 .../test/decimaltestdata/dqCopyAbs.decTest    |    88 -
 .../test/decimaltestdata/dqCopyNegate.decTest |    88 -
 .../test/decimaltestdata/dqCopySign.decTest   |   175 -
 .../Lib/test/decimaltestdata/dqDivide.decTest |   808 -
 .../test/decimaltestdata/dqDivideInt.decTest  |   453 -
 .../Lib/test/decimaltestdata/dqEncode.decTest |   477 -
 .../Lib/test/decimaltestdata/dqFMA.decTest    |  1786 --
 .../Lib/test/decimaltestdata/dqInvert.decTest |   245 -
 .../Lib/test/decimaltestdata/dqLogB.decTest   |   160 -
 .../Lib/test/decimaltestdata/dqMax.decTest    |   322 -
 .../Lib/test/decimaltestdata/dqMaxMag.decTest |   304 -
 .../Lib/test/decimaltestdata/dqMin.decTest    |   309 -
 .../Lib/test/decimaltestdata/dqMinMag.decTest |   293 -
 .../Lib/test/decimaltestdata/dqMinus.decTest  |    88 -
 .../test/decimaltestdata/dqMultiply.decTest   |   589 -
 .../test/decimaltestdata/dqNextMinus.decTest  |   126 -
 .../test/decimaltestdata/dqNextPlus.decTest   |   124 -
 .../test/decimaltestdata/dqNextToward.decTest |   375 -
 .../Lib/test/decimaltestdata/dqOr.decTest     |   401 -
 .../Lib/test/decimaltestdata/dqPlus.decTest   |    88 -
 .../test/decimaltestdata/dqQuantize.decTest   |   836 -
 .../Lib/test/decimaltestdata/dqReduce.decTest |   183 -
 .../test/decimaltestdata/dqRemainder.decTest  |   597 -
 .../decimaltestdata/dqRemainderNear.decTest   |   631 -
 .../Lib/test/decimaltestdata/dqRotate.decTest |   298 -
 .../decimaltestdata/dqSameQuantum.decTest     |   389 -
 .../Lib/test/decimaltestdata/dqScaleB.decTest |   260 -
 .../Lib/test/decimaltestdata/dqShift.decTest  |   298 -
 .../test/decimaltestdata/dqSubtract.decTest   |   635 -
 .../test/decimaltestdata/dqToIntegral.decTest |   257 -
 .../Lib/test/decimaltestdata/dqXor.decTest    |   410 -
 .../Lib/test/decimaltestdata/dsBase.decTest   |  1062 -
 .../Lib/test/decimaltestdata/dsEncode.decTest |   372 -
 .../Lib/test/decimaltestdata/exp.decTest      |   674 -
 .../Lib/test/decimaltestdata/extra.decTest    |  2817 ---
 .../Lib/test/decimaltestdata/fma.decTest      |  3426 ---
 .../Lib/test/decimaltestdata/inexact.decTest  |   215 -
 .../Lib/test/decimaltestdata/invert.decTest   |   176 -
 .../Lib/test/decimaltestdata/ln.decTest       |   611 -
 .../Lib/test/decimaltestdata/log10.decTest    |   551 -
 .../Lib/test/decimaltestdata/logb.decTest     |   188 -
 .../Lib/test/decimaltestdata/max.decTest      |   424 -
 .../Lib/test/decimaltestdata/maxmag.decTest   |   404 -
 .../Lib/test/decimaltestdata/min.decTest      |   407 -
 .../Lib/test/decimaltestdata/minmag.decTest   |   390 -
 .../Lib/test/decimaltestdata/minus.decTest    |   182 -
 .../Lib/test/decimaltestdata/multiply.decTest |   731 -
 .../test/decimaltestdata/nextminus.decTest    |   148 -
 .../Lib/test/decimaltestdata/nextplus.decTest |   150 -
 .../test/decimaltestdata/nexttoward.decTest   |   426 -
 .../Lib/test/decimaltestdata/or.decTest       |   334 -
 .../Lib/test/decimaltestdata/plus.decTest     |   195 -
 .../Lib/test/decimaltestdata/power.decTest    |  1624 --
 .../test/decimaltestdata/powersqrt.decTest    |  2970 ---
 .../Lib/test/decimaltestdata/quantize.decTest |   948 -
 .../decimaltestdata/randomBound32.decTest     |  2443 ---
 .../Lib/test/decimaltestdata/randoms.decTest  |  4030 ----
 .../Lib/test/decimaltestdata/reduce.decTest   |   234 -
 .../test/decimaltestdata/remainder.decTest    |   640 -
 .../decimaltestdata/remainderNear.decTest     |   572 -
 .../Lib/test/decimaltestdata/rescale.decTest  |   764 -
 .../Lib/test/decimaltestdata/rotate.decTest   |   247 -
 .../Lib/test/decimaltestdata/rounding.decTest |  1303 --
 .../test/decimaltestdata/samequantum.decTest  |   389 -
 .../Lib/test/decimaltestdata/scaleb.decTest   |   209 -
 .../Lib/test/decimaltestdata/shift.decTest    |   250 -
 .../test/decimaltestdata/squareroot.decTest   |  3834 ----
 .../Lib/test/decimaltestdata/subtract.decTest |   873 -
 .../Lib/test/decimaltestdata/testall.decTest  |    87 -
 .../test/decimaltestdata/tointegral.decTest   |   241 -
 .../test/decimaltestdata/tointegralx.decTest  |   255 -
 .../Lib/test/decimaltestdata/xor.decTest      |   335 -
 .../Python-2.7.2/Lib/test/doctest_aliases.py  |    13 -
 .../Python-2.7.2/Lib/test/double_const.py     |    30 -
 .../Python/Python-2.7.2/Lib/test/empty.vbs    |     1 -
 .../Lib/test/exception_hierarchy.txt          |    50 -
 .../Python-2.7.2/Lib/test/floating_points.txt |  1028 -
 .../Python/Python-2.7.2/Lib/test/fork_wait.py |    79 -
 .../Lib/test/formatfloat_testcases.txt        |   380 -
 .../Python-2.7.2/Lib/test/gdb_sample.py       |    12 -
 .../Python/Python-2.7.2/Lib/test/greyrgb.uue  |  1547 --
 .../Lib/test/https_svn_python_org_root.pem    |    41 -
 .../Python/Python-2.7.2/Lib/test/ieee754.txt  |   185 -
 .../Python-2.7.2/Lib/test/infinite_reload.py  |     8 -
 .../Python-2.7.2/Lib/test/inspect_fodder.py   |    56 -
 .../Python-2.7.2/Lib/test/inspect_fodder2.py  |    99 -
 .../Python/Python-2.7.2/Lib/test/keycert.pem  |    32 -
 .../Python-2.7.2/Lib/test/leakers/README.txt  |    32 -
 .../Python-2.7.2/Lib/test/leakers/__init__.py |     0
 .../Lib/test/leakers/test_ctypes.py           |    16 -
 .../Lib/test/leakers/test_dictself.py         |    12 -
 .../Lib/test/leakers/test_gestalt.py          |    14 -
 .../Lib/test/leakers/test_selftype.py         |    13 -
 .../Python-2.7.2/Lib/test/list_tests.py       |   534 -
 .../Python-2.7.2/Lib/test/lock_tests.py       |   546 -
 .../Python-2.7.2/Lib/test/mapping_tests.py    |   682 -
 .../Python-2.7.2/Lib/test/math_testcases.txt  |   447 -
 .../Python/Python-2.7.2/Lib/test/nullcert.pem |     0
 .../Python-2.7.2/Lib/test/outstanding_bugs.py |    22 -
 .../Python-2.7.2/Lib/test/pickletester.py     |  1259 --
 .../Python/Python-2.7.2/Lib/test/profilee.py  |   115 -
 .../Python-2.7.2/Lib/test/pyclbr_input.py     |    33 -
 .../Python/Python-2.7.2/Lib/test/pydoc_mod.py |    27 -
 .../Python-2.7.2/Lib/test/pydocfodder.py      |   216 -
 .../Python/Python-2.7.2/Lib/test/pystone.py   |   270 -
 .../Python-2.7.2/Lib/test/randv2_32.pck       |   633 -
 .../Python-2.7.2/Lib/test/randv2_64.pck       |   633 -
 .../Python/Python-2.7.2/Lib/test/randv3.pck   |   633 -
 .../Python/Python-2.7.2/Lib/test/re_tests.py  |   674 -
 .../Python-2.7.2/Lib/test/regex_tests.py      |   287 -
 .../Python/Python-2.7.2/Lib/test/regrtest.py  |  1536 --
 .../Python/Python-2.7.2/Lib/test/relimport.py |     1 -
 .../Python/Python-2.7.2/Lib/test/reperf.py    |    23 -
 .../Python-2.7.2/Lib/test/sample_doctest.py   |    76 -
 .../Python-2.7.2/Lib/test/script_helper.py    |   164 -
 .../Python/Python-2.7.2/Lib/test/seq_tests.py |   392 -
 .../Python-2.7.2/Lib/test/sgml_input.html     |   212 -
 .../Python/Python-2.7.2/Lib/test/sha256.pem   |   129 -
 .../Python/Python-2.7.2/Lib/test/sortperf.py  |   169 -
 .../Python/Python-2.7.2/Lib/test/ssl_cert.pem |    14 -
 .../Python/Python-2.7.2/Lib/test/ssl_key.pem  |     9 -
 .../Python-2.7.2/Lib/test/string_tests.py     |  1333 --
 .../test/subprocessdata/sigchild_ignore.py    |     6 -
 .../Lib/test/svn_python_org_https_cert.pem    |    31 -
 .../Python-2.7.2/Lib/test/test_MimeWriter.py  |   292 -
 .../Lib/test/test_SimpleHTTPServer.py         |    41 -
 .../Python-2.7.2/Lib/test/test_StringIO.py    |   150 -
 .../Python-2.7.2/Lib/test/test___all__.py     |   123 -
 .../Python-2.7.2/Lib/test/test___future__.py  |    66 -
 .../Python-2.7.2/Lib/test/test__locale.py     |   137 -
 .../Python/Python-2.7.2/Lib/test/test_abc.py  |   233 -
 .../Lib/test/test_abstract_numbers.py         |    52 -
 .../Python-2.7.2/Lib/test/test_aepack.py      |    90 -
 .../Python/Python-2.7.2/Lib/test/test_aifc.py |   115 -
 .../Python/Python-2.7.2/Lib/test/test_al.py   |    25 -
 .../Python-2.7.2/Lib/test/test_anydbm.py      |    97 -
 .../Python-2.7.2/Lib/test/test_applesingle.py |    71 -
 .../Python-2.7.2/Lib/test/test_argparse.py    |  4646 -----
 .../Python-2.7.2/Lib/test/test_array.py       |  1095 -
 .../Lib/test/test_ascii_formatd.py            |    58 -
 .../Python/Python-2.7.2/Lib/test/test_ast.py  |   382 -
 .../Python-2.7.2/Lib/test/test_asynchat.py    |   273 -
 .../Python-2.7.2/Lib/test/test_asyncore.py    |   722 -
 .../Python-2.7.2/Lib/test/test_atexit.py      |    82 -
 .../Python-2.7.2/Lib/test/test_audioop.py     |   206 -
 .../Python-2.7.2/Lib/test/test_augassign.py   |   331 -
 .../Python-2.7.2/Lib/test/test_base64.py      |   190 -
 .../Python-2.7.2/Lib/test/test_bastion.py     |     3 -
 .../Lib/test/test_bigaddrspace.py             |    46 -
 .../Python-2.7.2/Lib/test/test_bigmem.py      |  1073 -
 .../Python-2.7.2/Lib/test/test_binascii.py    |   236 -
 .../Python-2.7.2/Lib/test/test_binhex.py      |    49 -
 .../Python-2.7.2/Lib/test/test_binop.py       |   331 -
 .../Python-2.7.2/Lib/test/test_bisect.py      |   317 -
 .../Python/Python-2.7.2/Lib/test/test_bool.py |   371 -
 .../Python-2.7.2/Lib/test/test_bsddb.py       |   357 -
 .../Python-2.7.2/Lib/test/test_bsddb185.py    |    43 -
 .../Python-2.7.2/Lib/test/test_bsddb3.py      |    81 -
 .../Python-2.7.2/Lib/test/test_buffer.py      |    31 -
 .../Python-2.7.2/Lib/test/test_bufio.py       |    79 -
 .../Python-2.7.2/Lib/test/test_builtin.py     |  1708 --
 .../Python-2.7.2/Lib/test/test_bytes.py       |  1119 -
 .../Python/Python-2.7.2/Lib/test/test_bz2.py  |   422 -
 .../Python-2.7.2/Lib/test/test_calendar.py    |   457 -
 .../Python/Python-2.7.2/Lib/test/test_call.py |   134 -
 .../Python/Python-2.7.2/Lib/test/test_capi.py |   140 -
 .../Python/Python-2.7.2/Lib/test/test_cd.py   |    30 -
 .../Python-2.7.2/Lib/test/test_cfgparser.py   |   598 -
 .../Python/Python-2.7.2/Lib/test/test_cgi.py  |   386 -
 .../Lib/test/test_charmapcodec.py             |    56 -
 .../Python/Python-2.7.2/Lib/test/test_cl.py   |    82 -
 .../Python-2.7.2/Lib/test/test_class.py       |   626 -
 .../Python-2.7.2/Lib/test/test_cmath.py       |   474 -
 .../Python/Python-2.7.2/Lib/test/test_cmd.py  |   217 -
 .../Python-2.7.2/Lib/test/test_cmd_line.py    |    95 -
 .../Lib/test/test_cmd_line_script.py          |   213 -
 .../Python/Python-2.7.2/Lib/test/test_code.py |   147 -
 .../Lib/test/test_codeccallbacks.py           |   804 -
 .../Lib/test/test_codecencodings_cn.py        |    86 -
 .../Lib/test/test_codecencodings_hk.py        |    27 -
 .../Lib/test/test_codecencodings_jp.py        |   105 -
 .../Lib/test/test_codecencodings_kr.py        |    69 -
 .../Lib/test/test_codecencodings_tw.py        |    27 -
 .../Lib/test/test_codecmaps_cn.py             |    33 -
 .../Lib/test/test_codecmaps_hk.py             |    21 -
 .../Lib/test/test_codecmaps_jp.py             |    67 -
 .../Lib/test/test_codecmaps_kr.py             |    44 -
 .../Lib/test/test_codecmaps_tw.py             |    31 -
 .../Python-2.7.2/Lib/test/test_codecs.py      |  1614 --
 .../Python-2.7.2/Lib/test/test_codeop.py      |   304 -
 .../Python-2.7.2/Lib/test/test_coding.py      |    37 -
 .../Python-2.7.2/Lib/test/test_coercion.py    |   348 -
 .../Python-2.7.2/Lib/test/test_collections.py |  1042 -
 .../Python-2.7.2/Lib/test/test_colorsys.py    |    76 -
 .../Python-2.7.2/Lib/test/test_commands.py    |    74 -
 .../Python-2.7.2/Lib/test/test_compare.py     |    58 -
 .../Python-2.7.2/Lib/test/test_compile.py     |   498 -
 .../Python-2.7.2/Lib/test/test_compileall.py  |    80 -
 .../Python-2.7.2/Lib/test/test_compiler.py    |   317 -
 .../Python-2.7.2/Lib/test/test_complex.py     |   651 -
 .../Lib/test/test_complex_args.py             |   118 -
 .../Python-2.7.2/Lib/test/test_contains.py    |   111 -
 .../Python-2.7.2/Lib/test/test_contextlib.py  |   326 -
 .../Python-2.7.2/Lib/test/test_cookie.py      |    98 -
 .../Python-2.7.2/Lib/test/test_cookielib.py   |  1762 --
 .../Python/Python-2.7.2/Lib/test/test_copy.py |   712 -
 .../Python-2.7.2/Lib/test/test_copy_reg.py    |   121 -
 .../Python-2.7.2/Lib/test/test_cpickle.py     |   139 -
 .../Python-2.7.2/Lib/test/test_cprofile.py    |   127 -
 .../Python-2.7.2/Lib/test/test_crypt.py       |    17 -
 .../Python/Python-2.7.2/Lib/test/test_csv.py  |  1055 -
 .../Python-2.7.2/Lib/test/test_ctypes.py      |    15 -
 .../Python-2.7.2/Lib/test/test_curses.py      |   290 -
 .../Python-2.7.2/Lib/test/test_datetime.py    |  3367 ---
 .../Python/Python-2.7.2/Lib/test/test_dbm.py  |    42 -
 .../Python-2.7.2/Lib/test/test_decimal.py     |  2339 ---
 .../Python-2.7.2/Lib/test/test_decorators.py  |   309 -
 .../Python-2.7.2/Lib/test/test_defaultdict.py |   179 -
 .../Python-2.7.2/Lib/test/test_deque.py       |   787 -
 .../Python-2.7.2/Lib/test/test_descr.py       |  4659 -----
 .../Python-2.7.2/Lib/test/test_descrtut.py    |   497 -
 .../Python/Python-2.7.2/Lib/test/test_dict.py |   676 -
 .../Python-2.7.2/Lib/test/test_dictcomps.py   |    54 -
 .../Python-2.7.2/Lib/test/test_dictviews.py   |   154 -
 .../Python-2.7.2/Lib/test/test_difflib.py     |   272 -
 .../Lib/test/test_difflib_expect.html         |   526 -
 .../Python-2.7.2/Lib/test/test_dircache.py    |    77 -
 .../Python/Python-2.7.2/Lib/test/test_dis.py  |   150 -
 .../Python-2.7.2/Lib/test/test_distutils.py   |    18 -
 .../Python/Python-2.7.2/Lib/test/test_dl.py   |    39 -
 .../Python-2.7.2/Lib/test/test_doctest.py     |  2615 ---
 .../Python-2.7.2/Lib/test/test_doctest.txt    |    17 -
 .../Python-2.7.2/Lib/test/test_doctest2.py    |   124 -
 .../Python-2.7.2/Lib/test/test_doctest2.txt   |    14 -
 .../Python-2.7.2/Lib/test/test_doctest3.txt   |     5 -
 .../Python-2.7.2/Lib/test/test_doctest4.txt   |    17 -
 .../Python-2.7.2/Lib/test/test_docxmlrpc.py   |   201 -
 .../Python-2.7.2/Lib/test/test_dumbdbm.py     |   179 -
 .../Lib/test/test_dummy_thread.py             |   182 -
 .../Lib/test/test_dummy_threading.py          |    63 -
 .../Python-2.7.2/Lib/test/test_email.py       |    12 -
 .../Lib/test/test_email_codecs.py             |    15 -
 .../Lib/test/test_email_renamed.py            |    12 -
 .../Python-2.7.2/Lib/test/test_enumerate.py   |   255 -
 .../Python/Python-2.7.2/Lib/test/test_eof.py  |    32 -
 .../Python-2.7.2/Lib/test/test_epoll.py       |   221 -
 .../Python-2.7.2/Lib/test/test_errno.py       |    40 -
 .../Lib/test/test_exception_variations.py     |   180 -
 .../Python-2.7.2/Lib/test/test_exceptions.py  |   620 -
 .../Python-2.7.2/Lib/test/test_extcall.py     |   319 -
 .../Python-2.7.2/Lib/test/test_fcntl.py       |   108 -
 .../Python/Python-2.7.2/Lib/test/test_file.py |   347 -
 .../Python-2.7.2/Lib/test/test_file2k.py      |   680 -
 .../Python-2.7.2/Lib/test/test_filecmp.py     |   134 -
 .../Python-2.7.2/Lib/test/test_fileinput.py   |   225 -
 .../Python-2.7.2/Lib/test/test_fileio.py      |   434 -
 .../Python-2.7.2/Lib/test/test_float.py       |  1396 --
 .../Python-2.7.2/Lib/test/test_fnmatch.py     |    72 -
 .../Python-2.7.2/Lib/test/test_fork1.py       |    71 -
 .../Python-2.7.2/Lib/test/test_format.py      |   297 -
 .../Python-2.7.2/Lib/test/test_fpformat.py    |    76 -
 .../Python-2.7.2/Lib/test/test_fractions.py   |   587 -
 .../Python-2.7.2/Lib/test/test_frozen.py      |    47 -
 .../Python-2.7.2/Lib/test/test_ftplib.py      |   778 -
 .../Python-2.7.2/Lib/test/test_funcattrs.py   |   353 -
 .../Python-2.7.2/Lib/test/test_functools.py   |   478 -
 .../Python-2.7.2/Lib/test/test_future.py      |   119 -
 .../Python-2.7.2/Lib/test/test_future1.py     |    11 -
 .../Python-2.7.2/Lib/test/test_future2.py     |    10 -
 .../Python-2.7.2/Lib/test/test_future3.py     |    30 -
 .../Python-2.7.2/Lib/test/test_future4.py     |    47 -
 .../Python-2.7.2/Lib/test/test_future5.py     |    21 -
 .../Lib/test/test_future_builtins.py          |    38 -
 .../Python/Python-2.7.2/Lib/test/test_gc.py   |   639 -
 .../Python/Python-2.7.2/Lib/test/test_gdb.py  |   702 -
 .../Python/Python-2.7.2/Lib/test/test_gdbm.py |    82 -
 .../Python-2.7.2/Lib/test/test_generators.py  |  1906 --
 .../Python-2.7.2/Lib/test/test_genericpath.py |   256 -
 .../Python-2.7.2/Lib/test/test_genexps.py     |   282 -
 .../Python-2.7.2/Lib/test/test_getargs.py     |    31 -
 .../Python-2.7.2/Lib/test/test_getargs2.py    |   335 -
 .../Python-2.7.2/Lib/test/test_getopt.py      |   187 -
 .../Python-2.7.2/Lib/test/test_gettext.py     |   467 -
 .../Python/Python-2.7.2/Lib/test/test_gl.py   |   155 -
 .../Python/Python-2.7.2/Lib/test/test_glob.py |   114 -
 .../Python-2.7.2/Lib/test/test_global.py      |    52 -
 .../Python-2.7.2/Lib/test/test_grammar.py     |   999 -
 .../Python/Python-2.7.2/Lib/test/test_grp.py  |    97 -
 .../Python/Python-2.7.2/Lib/test/test_gzip.py |   281 -
 .../Python/Python-2.7.2/Lib/test/test_hash.py |   144 -
 .../Python-2.7.2/Lib/test/test_hashlib.py     |   361 -
 .../Python-2.7.2/Lib/test/test_heapq.py       |   393 -
 .../Python/Python-2.7.2/Lib/test/test_hmac.py |   314 -
 .../Python-2.7.2/Lib/test/test_hotshot.py     |   158 -
 .../Python-2.7.2/Lib/test/test_htmllib.py     |    69 -
 .../Python-2.7.2/Lib/test/test_htmlparser.py  |   351 -
 .../Python-2.7.2/Lib/test/test_httplib.py     |   447 -
 .../Python-2.7.2/Lib/test/test_httpservers.py |   529 -
 .../Python-2.7.2/Lib/test/test_imageop.py     |   211 -
 .../Python-2.7.2/Lib/test/test_imaplib.py     |   240 -
 .../Python-2.7.2/Lib/test/test_imgfile.py     |   119 -
 .../Python/Python-2.7.2/Lib/test/test_imp.py  |    81 -
 .../Python-2.7.2/Lib/test/test_import.py      |   460 -
 .../Python-2.7.2/Lib/test/test_importhooks.py |   255 -
 .../Python-2.7.2/Lib/test/test_importlib.py   |   176 -
 .../Python-2.7.2/Lib/test/test_index.py       |   323 -
 .../Python-2.7.2/Lib/test/test_inspect.py     |   752 -
 .../Python/Python-2.7.2/Lib/test/test_int.py  |   406 -
 .../Python-2.7.2/Lib/test/test_int_literal.py |   188 -
 .../Python/Python-2.7.2/Lib/test/test_io.py   |  2782 ---
 .../Python-2.7.2/Lib/test/test_ioctl.py       |    93 -
 .../Python-2.7.2/Lib/test/test_isinstance.py  |   277 -
 .../Python/Python-2.7.2/Lib/test/test_iter.py |   917 -
 .../Python-2.7.2/Lib/test/test_iterlen.py     |   257 -
 .../Python-2.7.2/Lib/test/test_itertools.py   |  1650 --
 .../Python/Python-2.7.2/Lib/test/test_json.py |    17 -
 .../Python-2.7.2/Lib/test/test_kqueue.py      |   196 -
 .../Python-2.7.2/Lib/test/test_largefile.py   |   200 -
 .../Python-2.7.2/Lib/test/test_lib2to3.py     |    21 -
 .../Python-2.7.2/Lib/test/test_linecache.py   |   131 -
 .../Lib/test/test_linuxaudiodev.py            |    99 -
 .../Python/Python-2.7.2/Lib/test/test_list.py |    78 -
 .../Python-2.7.2/Lib/test/test_locale.py      |   420 -
 .../Python-2.7.2/Lib/test/test_logging.py     |  1886 --
 .../Python/Python-2.7.2/Lib/test/test_long.py |   914 -
 .../Python-2.7.2/Lib/test/test_long_future.py |   221 -
 .../Python-2.7.2/Lib/test/test_longexp.py     |    14 -
 .../Python-2.7.2/Lib/test/test_macos.py       |    98 -
 .../Python-2.7.2/Lib/test/test_macostools.py  |    88 -
 .../Python-2.7.2/Lib/test/test_macpath.py     |    57 -
 .../Python-2.7.2/Lib/test/test_mailbox.py     |  1970 --
 .../Python-2.7.2/Lib/test/test_marshal.py     |   283 -
 .../Python/Python-2.7.2/Lib/test/test_math.py |  1030 -
 .../Python/Python-2.7.2/Lib/test/test_md5.py  |    61 -
 .../Python-2.7.2/Lib/test/test_memoryio.py    |   707 -
 .../Python-2.7.2/Lib/test/test_memoryview.py  |   361 -
 .../Python-2.7.2/Lib/test/test_mhlib.py       |   348 -
 .../Python-2.7.2/Lib/test/test_mimetools.py   |    53 -
 .../Python-2.7.2/Lib/test/test_mimetypes.py   |    94 -
 .../Python-2.7.2/Lib/test/test_minidom.py     |  1477 --
 .../Python/Python-2.7.2/Lib/test/test_mmap.py |   704 -
 .../Python-2.7.2/Lib/test/test_module.py      |    85 -
 .../Lib/test/test_modulefinder.py             |   286 -
 .../Python-2.7.2/Lib/test/test_msilib.py      |    46 -
 .../Lib/test/test_multibytecodec.py           |   274 -
 .../Lib/test/test_multibytecodec_support.py   |   338 -
 .../Python-2.7.2/Lib/test/test_multifile.py   |    67 -
 .../Lib/test/test_multiprocessing.py          |  2110 --
 .../Python-2.7.2/Lib/test/test_mutants.py     |   292 -
 .../Python-2.7.2/Lib/test/test_mutex.py       |    35 -
 .../Python-2.7.2/Lib/test/test_netrc.py       |   110 -
 .../Python/Python-2.7.2/Lib/test/test_new.py  |   163 -
 .../Python/Python-2.7.2/Lib/test/test_nis.py  |    44 -
 .../Lib/test/test_normalization.py            |   102 -
 .../Python-2.7.2/Lib/test/test_ntpath.py      |   203 -
 .../Python-2.7.2/Lib/test/test_old_mailbox.py |   152 -
 .../Python-2.7.2/Lib/test/test_opcodes.py     |   121 -
 .../Python-2.7.2/Lib/test/test_openpty.py     |    23 -
 .../Python-2.7.2/Lib/test/test_operator.py    |   532 -
 .../Python-2.7.2/Lib/test/test_optparse.py    |  1619 --
 .../Python/Python-2.7.2/Lib/test/test_os.py   |   824 -
 .../Python-2.7.2/Lib/test/test_ossaudiodev.py |   174 -
 .../Python-2.7.2/Lib/test/test_parser.py      |   596 -
 .../Python/Python-2.7.2/Lib/test/test_pdb.py  |   287 -
 .../Python-2.7.2/Lib/test/test_peepholer.py   |   243 -
 .../Python-2.7.2/Lib/test/test_pep247.py      |    74 -
 .../Python-2.7.2/Lib/test/test_pep263.py      |    48 -
 .../Python-2.7.2/Lib/test/test_pep277.py      |   210 -
 .../Python-2.7.2/Lib/test/test_pep292.py      |   193 -
 .../Python-2.7.2/Lib/test/test_pep352.py      |   239 -
 .../Python-2.7.2/Lib/test/test_pickle.py      |    80 -
 .../Python-2.7.2/Lib/test/test_pickletools.py |    24 -
 .../Python-2.7.2/Lib/test/test_pipes.py       |   204 -
 .../Python/Python-2.7.2/Lib/test/test_pkg.py  |   292 -
 .../Python-2.7.2/Lib/test/test_pkgimport.py   |    83 -
 .../Python-2.7.2/Lib/test/test_pkgutil.py     |   130 -
 .../Python-2.7.2/Lib/test/test_platform.py    |   254 -
 .../Python-2.7.2/Lib/test/test_plistlib.py    |   192 -
 .../Python/Python-2.7.2/Lib/test/test_poll.py |   157 -
 .../Python-2.7.2/Lib/test/test_popen.py       |    52 -
 .../Python-2.7.2/Lib/test/test_popen2.py      |   130 -
 .../Python-2.7.2/Lib/test/test_poplib.py      |   343 -
 .../Python-2.7.2/Lib/test/test_posix.py       |   429 -
 .../Python-2.7.2/Lib/test/test_posixpath.py   |   348 -
 .../Python/Python-2.7.2/Lib/test/test_pow.py  |   129 -
 .../Python-2.7.2/Lib/test/test_pprint.py      |   432 -
 .../Python-2.7.2/Lib/test/test_print.py       |   141 -
 .../Python-2.7.2/Lib/test/test_profile.py     |   186 -
 .../Python-2.7.2/Lib/test/test_property.py    |   231 -
 .../Python-2.7.2/Lib/test/test_pstats.py      |    32 -
 .../Python/Python-2.7.2/Lib/test/test_pty.py  |   200 -
 .../Python/Python-2.7.2/Lib/test/test_pwd.py  |   100 -
 .../Python-2.7.2/Lib/test/test_py3kwarn.py    |   426 -
 .../Python-2.7.2/Lib/test/test_pyclbr.py      |   197 -
 .../Python-2.7.2/Lib/test/test_pydoc.py       |   367 -
 .../Python-2.7.2/Lib/test/test_pyexpat.py     |   604 -
 .../Python-2.7.2/Lib/test/test_queue.py       |   322 -
 .../Python-2.7.2/Lib/test/test_quopri.py      |   201 -
 .../Python-2.7.2/Lib/test/test_random.py      |   572 -
 .../Python/Python-2.7.2/Lib/test/test_re.py   |   889 -
 .../Python-2.7.2/Lib/test/test_readline.py    |    43 -
 .../Python/Python-2.7.2/Lib/test/test_repr.py |   327 -
 .../Python-2.7.2/Lib/test/test_resource.py    |   110 -
 .../Python-2.7.2/Lib/test/test_rfc822.py      |   257 -
 .../Python-2.7.2/Lib/test/test_richcmp.py     |   338 -
 .../Python-2.7.2/Lib/test/test_rlcompleter.py |    73 -
 .../Python-2.7.2/Lib/test/test_robotparser.py |   261 -
 .../Python-2.7.2/Lib/test/test_runpy.py       |   402 -
 .../Python/Python-2.7.2/Lib/test/test_sax.py  |   753 -
 .../Python-2.7.2/Lib/test/test_scope.py       |   664 -
 .../Lib/test/test_scriptpackages.py           |    51 -
 .../Python-2.7.2/Lib/test/test_select.py      |    58 -
 .../Python/Python-2.7.2/Lib/test/test_set.py  |  1781 --
 .../Python-2.7.2/Lib/test/test_setcomps.py    |   151 -
 .../Python/Python-2.7.2/Lib/test/test_sets.py |   862 -
 .../Python-2.7.2/Lib/test/test_sgmllib.py     |   439 -
 .../Python/Python-2.7.2/Lib/test/test_sha.py  |    56 -
 .../Python-2.7.2/Lib/test/test_shelve.py      |   163 -
 .../Python-2.7.2/Lib/test/test_shlex.py       |   191 -
 .../Python-2.7.2/Lib/test/test_shutil.py      |   831 -
 .../Python-2.7.2/Lib/test/test_signal.py      |   493 -
 .../Python/Python-2.7.2/Lib/test/test_site.py |   392 -
 .../Python-2.7.2/Lib/test/test_slice.py       |   134 -
 .../Python-2.7.2/Lib/test/test_smtplib.py     |   518 -
 .../Python-2.7.2/Lib/test/test_smtpnet.py     |    31 -
 .../Python-2.7.2/Lib/test/test_socket.py      |  1618 --
 .../Lib/test/test_socketserver.py             |   284 -
 .../Python-2.7.2/Lib/test/test_softspace.py   |    23 -
 .../Python/Python-2.7.2/Lib/test/test_sort.py |   292 -
 .../Python-2.7.2/Lib/test/test_sqlite.py      |    16 -
 .../Python/Python-2.7.2/Lib/test/test_ssl.py  |  1360 --
 .../Python-2.7.2/Lib/test/test_startfile.py   |    45 -
 .../Python/Python-2.7.2/Lib/test/test_str.py  |   434 -
 .../Python-2.7.2/Lib/test/test_strftime.py    |   185 -
 .../Python-2.7.2/Lib/test/test_string.py      |   217 -
 .../Python-2.7.2/Lib/test/test_stringprep.py  |    96 -
 .../Python-2.7.2/Lib/test/test_strop.py       |   153 -
 .../Python-2.7.2/Lib/test/test_strptime.py    |   562 -
 .../Python-2.7.2/Lib/test/test_strtod.py      |   399 -
 .../Python-2.7.2/Lib/test/test_struct.py      |   551 -
 .../Lib/test/test_structmembers.py            |   108 -
 .../Python-2.7.2/Lib/test/test_structseq.py   |   120 -
 .../Python-2.7.2/Lib/test/test_subprocess.py  |  1053 -
 .../Python-2.7.2/Lib/test/test_sunaudiodev.py |    33 -
 .../Python-2.7.2/Lib/test/test_sundry.py      |    96 -
 .../Python-2.7.2/Lib/test/test_support.py     |  1233 --
 .../Python-2.7.2/Lib/test/test_symtable.py    |   184 -
 .../Python-2.7.2/Lib/test/test_syntax.py      |   572 -
 .../Python/Python-2.7.2/Lib/test/test_sys.py  |   794 -
 .../Lib/test/test_sys_setprofile.py           |   386 -
 .../Lib/test/test_sys_settrace.py             |   789 -
 .../Python-2.7.2/Lib/test/test_sysconfig.py   |   316 -
 .../Python-2.7.2/Lib/test/test_tarfile.py     |  1637 --
 .../Python/Python-2.7.2/Lib/test/test_tcl.py  |   160 -
 .../Python-2.7.2/Lib/test/test_telnetlib.py   |   372 -
 .../Python-2.7.2/Lib/test/test_tempfile.py    |   856 -
 .../Python-2.7.2/Lib/test/test_textwrap.py    |   610 -
 .../Python-2.7.2/Lib/test/test_thread.py      |   242 -
 .../Lib/test/test_threaded_import.py          |    76 -
 .../Lib/test/test_threadedtempfile.py         |    78 -
 .../Python-2.7.2/Lib/test/test_threading.py   |   734 -
 .../Lib/test/test_threading_local.py          |   234 -
 .../Lib/test/test_threadsignals.py            |    85 -
 .../Python/Python-2.7.2/Lib/test/test_time.py |   250 -
 .../Python-2.7.2/Lib/test/test_timeout.py     |   202 -
 .../Python/Python-2.7.2/Lib/test/test_tk.py   |    35 -
 .../Python-2.7.2/Lib/test/test_tokenize.py    |   596 -
 .../Python-2.7.2/Lib/test/test_trace.py       |   341 -
 .../Python-2.7.2/Lib/test/test_traceback.py   |   204 -
 .../Python-2.7.2/Lib/test/test_transformer.py |    38 -
 .../Python-2.7.2/Lib/test/test_ttk_guionly.py |    40 -
 .../Lib/test/test_ttk_textonly.py             |    19 -
 .../Python-2.7.2/Lib/test/test_tuple.py       |   161 -
 .../Python-2.7.2/Lib/test/test_typechecks.py  |    93 -
 .../Python-2.7.2/Lib/test/test_types.py       |   756 -
 .../Python/Python-2.7.2/Lib/test/test_ucn.py  |   144 -
 .../Python-2.7.2/Lib/test/test_unary.py       |    59 -
 .../Lib/test/test_undocumented_details.py     |    39 -
 .../Python-2.7.2/Lib/test/test_unicode.py     |  1404 --
 .../Lib/test/test_unicode_file.py             |   200 -
 .../Python-2.7.2/Lib/test/test_unicodedata.py |   317 -
 .../Python-2.7.2/Lib/test/test_unittest.py    |    12 -
 .../Lib/test/test_univnewlines.py             |   135 -
 .../Lib/test/test_univnewlines2k.py           |   130 -
 .../Python-2.7.2/Lib/test/test_unpack.py      |   130 -
 .../Python-2.7.2/Lib/test/test_urllib.py      |   786 -
 .../Python-2.7.2/Lib/test/test_urllib2.py     |  1327 --
 .../Lib/test/test_urllib2_localnet.py         |   539 -
 .../Python-2.7.2/Lib/test/test_urllib2net.py  |   319 -
 .../Python-2.7.2/Lib/test/test_urllibnet.py   |   205 -
 .../Python-2.7.2/Lib/test/test_urlparse.py    |   513 -
 .../Python-2.7.2/Lib/test/test_userdict.py    |   350 -
 .../Python-2.7.2/Lib/test/test_userlist.py    |    61 -
 .../Python-2.7.2/Lib/test/test_userstring.py  |   147 -
 .../Python/Python-2.7.2/Lib/test/test_uu.py   |   201 -
 .../Python/Python-2.7.2/Lib/test/test_uuid.py |   482 -
 .../Python-2.7.2/Lib/test/test_wait3.py       |    39 -
 .../Python-2.7.2/Lib/test/test_wait4.py       |    32 -
 .../Python-2.7.2/Lib/test/test_warnings.py    |   749 -
 .../Python/Python-2.7.2/Lib/test/test_wave.py |    45 -
 .../Python-2.7.2/Lib/test/test_weakref.py     |  1256 --
 .../Python-2.7.2/Lib/test/test_weakset.py     |   377 -
 .../Python-2.7.2/Lib/test/test_whichdb.py     |    68 -
 .../Python-2.7.2/Lib/test/test_winreg.py      |   416 -
 .../Python-2.7.2/Lib/test/test_winsound.py    |   255 -
 .../Python/Python-2.7.2/Lib/test/test_with.py |   750 -
 .../Python-2.7.2/Lib/test/test_wsgiref.py     |   630 -
 .../Python-2.7.2/Lib/test/test_xdrlib.py      |    58 -
 .../Python-2.7.2/Lib/test/test_xml_etree.py   |  1886 --
 .../Python-2.7.2/Lib/test/test_xml_etree_c.py |    55 -
 .../Python-2.7.2/Lib/test/test_xmllib.py      |    48 -
 .../Python-2.7.2/Lib/test/test_xmlrpc.py      |  1018 -
 .../Python-2.7.2/Lib/test/test_xpickle.py     |   260 -
 .../Python-2.7.2/Lib/test/test_xrange.py      |   143 -
 .../Python-2.7.2/Lib/test/test_zipfile.py     |  1362 --
 .../Python-2.7.2/Lib/test/test_zipfile64.py   |   124 -
 .../Python-2.7.2/Lib/test/test_zipimport.py   |   472 -
 .../Lib/test/test_zipimport_support.py        |   238 -
 .../Python/Python-2.7.2/Lib/test/test_zlib.py |   572 -
 .../Python/Python-2.7.2/Lib/test/testall.py   |    10 -
 .../Python/Python-2.7.2/Lib/test/testcodec.py |    48 -
 .../Python/Python-2.7.2/Lib/test/testimg.uue  |  1170 --
 .../Python/Python-2.7.2/Lib/test/testimgr.uue |  1170 --
 .../Python/Python-2.7.2/Lib/test/testrgb.uue  |   971 -
 .../Python/Python-2.7.2/Lib/test/testtar.tar  |   Bin 281088 -> 0 bytes
 .../Python-2.7.2/Lib/test/tf_inherit_check.py |    25 -
 .../Lib/test/threaded_import_hangers.py       |    42 -
 .../Python-2.7.2/Lib/test/time_hashlib.py     |    87 -
 .../Python-2.7.2/Lib/test/tokenize_tests.txt  |   178 -
 .../Lib/test/tracedmodules/__init__.py        |     4 -
 .../Lib/test/tracedmodules/testmod.py         |     9 -
 .../Python-2.7.2/Lib/test/warning_tests.py    |     9 -
 .../Lib/test/win_console_handler.py           |    49 -
 .../Python-2.7.2/Lib/test/wrongcert.pem       |    32 -
 .../Lib/test/xmltestdata/simple-ns.xml        |     7 -
 .../Lib/test/xmltestdata/simple.xml           |     6 -
 .../Lib/test/xmltestdata/test.xml             |   115 -
 .../Lib/test/xmltestdata/test.xml.out         |   115 -
 .../Python/Python-2.7.2/Lib/test/xmltests.py  |    21 -
 .../Python/Python-2.7.2/Lib/test/zipdir.zip   |   Bin 374 -> 0 bytes
 .../Python/Python-2.7.2/Lib/textwrap.py       |   417 -
 .../Python/Python-2.7.2/Lib/this.py           |    28 -
 .../Python/Python-2.7.2/Lib/timeit.py         |   328 -
 .../Python/Python-2.7.2/Lib/toaiff.py         |   110 -
 .../Python/Python-2.7.2/Lib/token.py          |   142 -
 .../Python/Python-2.7.2/Lib/tokenize.py       |   424 -
 .../Python/Python-2.7.2/Lib/trace.py          |   827 -
 .../Python/Python-2.7.2/Lib/traceback.py      |   319 -
 .../Python/Python-2.7.2/Lib/tty.py            |    36 -
 .../Python/Python-2.7.2/Lib/types.py          |    84 -
 .../Python-2.7.2/Lib/unittest/__init__.py     |    69 -
 .../Python-2.7.2/Lib/unittest/__main__.py     |    12 -
 .../Python/Python-2.7.2/Lib/unittest/case.py  |  1070 -
 .../Python-2.7.2/Lib/unittest/loader.py       |   314 -
 .../Python/Python-2.7.2/Lib/unittest/main.py  |   233 -
 .../Python-2.7.2/Lib/unittest/result.py       |   193 -
 .../Python-2.7.2/Lib/unittest/runner.py       |   196 -
 .../Python-2.7.2/Lib/unittest/signals.py      |    57 -
 .../Python/Python-2.7.2/Lib/unittest/suite.py |   303 -
 .../Lib/unittest/test/__init__.py             |    21 -
 .../Python-2.7.2/Lib/unittest/test/dummy.py   |     1 -
 .../Python-2.7.2/Lib/unittest/test/support.py |   119 -
 .../Lib/unittest/test/test_assertions.py      |   286 -
 .../Lib/unittest/test/test_break.py           |   252 -
 .../Lib/unittest/test/test_case.py            |  1109 -
 .../Lib/unittest/test/test_discovery.py       |   362 -
 .../unittest/test/test_functiontestcase.py    |   148 -
 .../Lib/unittest/test/test_loader.py          |  1286 --
 .../Lib/unittest/test/test_program.py         |   255 -
 .../Lib/unittest/test/test_result.py          |   567 -
 .../Lib/unittest/test/test_runner.py          |   253 -
 .../Lib/unittest/test/test_setups.py          |   508 -
 .../Lib/unittest/test/test_skipping.py        |   138 -
 .../Lib/unittest/test/test_suite.py           |   367 -
 .../Python/Python-2.7.2/Lib/unittest/util.py  |   156 -
 .../Python/Python-2.7.2/Lib/urllib.py         |  1646 --
 .../Python/Python-2.7.2/Lib/urllib2.py        |  1448 --
 .../Python/Python-2.7.2/Lib/urlparse.py       |   397 -
 .../Python/Python-2.7.2/Lib/user.py           |    48 -
 .../Python/Python-2.7.2/Lib/uu.py             |   196 -
 .../Python/Python-2.7.2/Lib/uuid.py           |   560 -
 .../Python/Python-2.7.2/Lib/warnings.py       |   400 -
 .../Python/Python-2.7.2/Lib/wave.py           |   504 -
 .../Python/Python-2.7.2/Lib/weakref.py        |   379 -
 .../Python/Python-2.7.2/Lib/webbrowser.py     |   673 -
 .../Python/Python-2.7.2/Lib/whichdb.py        |   117 -
 .../Python/Python-2.7.2/Lib/wsgiref.egg-info  |     8 -
 .../Python-2.7.2/Lib/wsgiref/__init__.py      |    23 -
 .../Python-2.7.2/Lib/wsgiref/handlers.py      |   448 -
 .../Python-2.7.2/Lib/wsgiref/headers.py       |   169 -
 .../Python-2.7.2/Lib/wsgiref/simple_server.py |   155 -
 .../Python/Python-2.7.2/Lib/wsgiref/util.py   |   165 -
 .../Python-2.7.2/Lib/wsgiref/validate.py      |   432 -
 .../Python/Python-2.7.2/Lib/xdrlib.py         |   231 -
 .../Python/Python-2.7.2/Lib/xml/__init__.py   |    41 -
 .../Python-2.7.2/Lib/xml/dom/NodeFilter.py    |    27 -
 .../Python-2.7.2/Lib/xml/dom/__init__.py      |   139 -
 .../Python/Python-2.7.2/Lib/xml/dom/domreg.py |    99 -
 .../Python-2.7.2/Lib/xml/dom/expatbuilder.py  |   983 -
 .../Python-2.7.2/Lib/xml/dom/minicompat.py    |   110 -
 .../Python-2.7.2/Lib/xml/dom/minidom.py       |  1937 --
 .../Python-2.7.2/Lib/xml/dom/pulldom.py       |   351 -
 .../Python-2.7.2/Lib/xml/dom/xmlbuilder.py    |   386 -
 .../Lib/xml/etree/ElementInclude.py           |   143 -
 .../Python-2.7.2/Lib/xml/etree/ElementPath.py |   303 -
 .../Python-2.7.2/Lib/xml/etree/ElementTree.py |  1649 --
 .../Python-2.7.2/Lib/xml/etree/__init__.py    |    33 -
 .../Lib/xml/etree/cElementTree.py             |     3 -
 .../Python-2.7.2/Lib/xml/parsers/__init__.py  |     8 -
 .../Python-2.7.2/Lib/xml/parsers/expat.py     |     4 -
 .../Python-2.7.2/Lib/xml/sax/__init__.py      |   108 -
 .../Python-2.7.2/Lib/xml/sax/_exceptions.py   |   131 -
 .../Python-2.7.2/Lib/xml/sax/expatreader.py   |   414 -
 .../Python-2.7.2/Lib/xml/sax/handler.py       |   342 -
 .../Python-2.7.2/Lib/xml/sax/saxutils.py      |   308 -
 .../Python-2.7.2/Lib/xml/sax/xmlreader.py     |   381 -
 .../Python/Python-2.7.2/Lib/xmllib.py         |   930 -
 .../Python/Python-2.7.2/Lib/xmlrpclib.py      |  1636 --
 .../Python/Python-2.7.2/Lib/zipfile.py        |  1437 --
 .../Python-2.7.2/Modules/_bisectmodule.c      |   241 -
 .../Python-2.7.2/Modules/_codecsmodule.c      |  1116 -
 .../Python-2.7.2/Modules/_collectionsmodule.c |  1634 --
 .../Python/Python-2.7.2/Modules/_csv.c        |  1611 --
 .../Python-2.7.2/Modules/_elementtree.c       |  3079 ---
 .../Python-2.7.2/Modules/_functoolsmodule.c   |   402 -
 .../Python-2.7.2/Modules/_hashopenssl.c       |   597 -
 .../Python-2.7.2/Modules/_heapqmodule.c       |   697 -
 .../Python/Python-2.7.2/Modules/_hotshot.c    |  1643 --
 .../Python-2.7.2/Modules/_io/_iomodule.c      |   768 -
 .../Python-2.7.2/Modules/_io/_iomodule.h      |   165 -
 .../Python-2.7.2/Modules/_io/bufferedio.c     |  2389 ---
 .../Python/Python-2.7.2/Modules/_io/bytesio.c |   887 -
 .../Python/Python-2.7.2/Modules/_io/fileio.c  |  1095 -
 .../Python/Python-2.7.2/Modules/_io/iobase.c  |   893 -
 .../Python-2.7.2/Modules/_io/stringio.c       |   882 -
 .../Python/Python-2.7.2/Modules/_io/textio.c  |  2617 ---
 .../Python/Python-2.7.2/Modules/_json.c       |  2421 ---
 .../Python-2.7.2/Modules/_localemodule.c      |   758 -
 .../Python/Python-2.7.2/Modules/_lsprof.c     |   892 -
 .../Python/Python-2.7.2/Modules/_math.c       |   232 -
 .../Python/Python-2.7.2/Modules/_math.h       |    45 -
 .../Python-2.7.2/Modules/_randommodule.c      |   580 -
 .../Python-2.7.2/Modules/_sqlite/cache.c      |   375 -
 .../Python-2.7.2/Modules/_sqlite/cache.h      |    73 -
 .../Python-2.7.2/Modules/_sqlite/connection.c |  1664 --
 .../Python-2.7.2/Modules/_sqlite/connection.h |   138 -
 .../Python-2.7.2/Modules/_sqlite/cursor.c     |  1126 -
 .../Python-2.7.2/Modules/_sqlite/cursor.h     |    74 -
 .../Modules/_sqlite/microprotocols.c          |   142 -
 .../Modules/_sqlite/microprotocols.h          |    55 -
 .../Python-2.7.2/Modules/_sqlite/module.c     |   457 -
 .../Python-2.7.2/Modules/_sqlite/module.h     |    58 -
 .../Modules/_sqlite/prepare_protocol.c        |    84 -
 .../Modules/_sqlite/prepare_protocol.h        |    41 -
 .../Python/Python-2.7.2/Modules/_sqlite/row.c |   256 -
 .../Python/Python-2.7.2/Modules/_sqlite/row.h |    39 -
 .../Modules/_sqlite/sqlitecompat.h            |    63 -
 .../Python-2.7.2/Modules/_sqlite/statement.c  |   543 -
 .../Python-2.7.2/Modules/_sqlite/statement.h  |    59 -
 .../Python-2.7.2/Modules/_sqlite/util.c       |   106 -
 .../Python-2.7.2/Modules/_sqlite/util.h       |    38 -
 .../Python/Python-2.7.2/Modules/_sre.c        |  3921 ----
 .../Python/Python-2.7.2/Modules/_ssl.c        |  1751 --
 .../Python/Python-2.7.2/Modules/_struct.c     |  2048 --
 .../Python-2.7.2/Modules/_testcapimodule.c    |  1897 --
 .../Python/Python-2.7.2/Modules/_weakref.c    |   112 -
 .../Python/Python-2.7.2/Modules/addrinfo.h    |   178 -
 .../Python/Python-2.7.2/Modules/arraymodule.c |  2246 --
 .../Python/Python-2.7.2/Modules/binascii.c    |  1531 --
 .../Python/Python-2.7.2/Modules/bz2module.c   |  2344 ---
 .../Python/Python-2.7.2/Modules/cPickle.c     |  6023 ------
 .../Python/Python-2.7.2/Modules/cStringIO.c   |   752 -
 .../Python-2.7.2/Modules/cjkcodecs/README     |    79 -
 .../Modules/cjkcodecs/_codecs_cn.c            |   444 -
 .../Modules/cjkcodecs/_codecs_hk.c            |   183 -
 .../Modules/cjkcodecs/_codecs_iso2022.c       |  1131 -
 .../Modules/cjkcodecs/_codecs_jp.c            |   731 -
 .../Modules/cjkcodecs/_codecs_kr.c            |   452 -
 .../Modules/cjkcodecs/_codecs_tw.c            |   132 -
 .../Modules/cjkcodecs/alg_jisx0201.h          |    24 -
 .../Modules/cjkcodecs/cjkcodecs.h             |   398 -
 .../Modules/cjkcodecs/emu_jisx0213_2000.h     |    43 -
 .../Modules/cjkcodecs/mappings_cn.h           |  4103 ----
 .../Modules/cjkcodecs/mappings_hk.h           |  2378 ---
 .../cjkcodecs/mappings_jisx0213_pair.h        |    59 -
 .../Modules/cjkcodecs/mappings_jp.h           |  4765 -----
 .../Modules/cjkcodecs/mappings_kr.h           |  3251 ---
 .../Modules/cjkcodecs/mappings_tw.h           |  2633 ---
 .../Modules/cjkcodecs/multibytecodec.c        |  1829 --
 .../Modules/cjkcodecs/multibytecodec.h        |   141 -
 .../Python/Python-2.7.2/Modules/cmathmodule.c |  1210 --
 .../Python/Python-2.7.2/Modules/cryptmodule.c |    49 -
 .../Python-2.7.2/Modules/datetimemodule.c     |  5117 -----
 .../Python/Python-2.7.2/Modules/errnomodule.c |   845 -
 .../Python/Python-2.7.2/Modules/expat/COPYING |    21 -
 .../Python-2.7.2/Modules/expat/amigaconfig.h  |    96 -
 .../Python/Python-2.7.2/Modules/expat/ascii.h |    85 -
 .../Python-2.7.2/Modules/expat/asciitab.h     |    36 -
 .../Python/Python-2.7.2/Modules/expat/expat.h |  1013 -
 .../Python-2.7.2/Modules/expat/expat_config.h |    19 -
 .../Modules/expat/expat_external.h            |   121 -
 .../Python-2.7.2/Modules/expat/iasciitab.h    |    37 -
 .../Python-2.7.2/Modules/expat/internal.h     |    73 -
 .../Python-2.7.2/Modules/expat/latin1tab.h    |    36 -
 .../Python-2.7.2/Modules/expat/macconfig.h    |    53 -
 .../Python-2.7.2/Modules/expat/nametab.h      |   150 -
 .../Python-2.7.2/Modules/expat/pyexpatns.h    |   124 -
 .../Python-2.7.2/Modules/expat/utf8tab.h      |    37 -
 .../Python-2.7.2/Modules/expat/winconfig.h    |    30 -
 .../Python-2.7.2/Modules/expat/xmlparse.c     |  6279 ------
 .../Python-2.7.2/Modules/expat/xmlrole.c      |  1330 --
 .../Python-2.7.2/Modules/expat/xmlrole.h      |   114 -
 .../Python-2.7.2/Modules/expat/xmltok.c       |  1639 --
 .../Python-2.7.2/Modules/expat/xmltok.h       |   316 -
 .../Python-2.7.2/Modules/expat/xmltok_impl.c  |  1779 --
 .../Python-2.7.2/Modules/expat/xmltok_impl.h  |    46 -
 .../Python-2.7.2/Modules/expat/xmltok_ns.c    |   106 -
 .../Python/Python-2.7.2/Modules/fcntlmodule.c |   620 -
 .../Python/Python-2.7.2/Modules/flmodule.c    |  2144 --
 .../Python/Python-2.7.2/Modules/fmmodule.c    |   269 -
 .../Python-2.7.2/Modules/fpectlmodule.c       |   303 -
 .../Python-2.7.2/Modules/fpetestmodule.c      |   186 -
 .../Python-2.7.2/Modules/future_builtins.c    |   105 -
 .../Python-2.7.2/Modules/gc_weakref.txt       |   219 -
 .../Python/Python-2.7.2/Modules/gcmodule.c    |  1516 --
 .../Python/Python-2.7.2/Modules/getaddrinfo.c |   638 -
 .../Python-2.7.2/Modules/getbuildinfo.c       |    85 -
 .../Python/Python-2.7.2/Modules/getnameinfo.c |   222 -
 .../Python/Python-2.7.2/Modules/getpath.c     |   698 -
 .../Python/Python-2.7.2/Modules/imageop.c     |   794 -
 .../Python-2.7.2/Modules/itertoolsmodule.c    |  4097 ----
 .../Python/Python-2.7.2/Modules/main.c        |   663 -
 .../Python/Python-2.7.2/Modules/mathmodule.c  |  1624 --
 .../Python/Python-2.7.2/Modules/md5.c         |   394 -
 .../Python/Python-2.7.2/Modules/md5.h         |    91 -
 .../Python/Python-2.7.2/Modules/md5module.c   |   315 -
 .../Python/Python-2.7.2/Modules/operator.c    |   802 -
 .../Python-2.7.2/Modules/parsermodule.c       |  3464 ----
 .../Python/Python-2.7.2/Modules/posixmodule.c |  9396 ---------
 .../Python/Python-2.7.2/Modules/puremodule.c  |   992 -
 .../Python/Python-2.7.2/Modules/pwdmodule.c   |   200 -
 .../Python/Python-2.7.2/Modules/pyexpat.c     |  2123 --
 .../Python/Python-2.7.2/Modules/python.c      |    24 -
 .../Python/Python-2.7.2/Modules/readline.c    |  1144 -
 .../Python/Python-2.7.2/Modules/resource.c    |   329 -
 .../Python-2.7.2/Modules/rotatingtree.c       |   121 -
 .../Python-2.7.2/Modules/rotatingtree.h       |    27 -
 .../Python-2.7.2/Modules/selectmodule.c       |  1912 --
 .../Python-2.7.2/Modules/sha256module.c       |   706 -
 .../Python-2.7.2/Modules/sha512module.c       |   774 -
 .../Python/Python-2.7.2/Modules/shamodule.c   |   597 -
 .../Python-2.7.2/Modules/signalmodule.c       |   986 -
 .../Python-2.7.2/Modules/socketmodule.c       |  5454 -----
 .../Python-2.7.2/Modules/socketmodule.h       |   250 -
 .../Python/Python-2.7.2/Modules/sre.h         |    94 -
 .../Python-2.7.2/Modules/sre_constants.h      |    86 -
 .../Python/Python-2.7.2/Modules/stropmodule.c |  1270 --
 .../Python-2.7.2/Modules/symtablemodule.c     |    83 -
 .../Python-2.7.2/Modules/testcapi_long.h      |   182 -
 .../Python-2.7.2/Modules/threadmodule.c       |   931 -
 .../Python/Python-2.7.2/Modules/timemodule.c  |  1054 -
 .../Python/Python-2.7.2/Modules/timing.h      |    64 -
 .../Python-2.7.2/Modules/timingmodule.c       |    62 -
 .../Python/Python-2.7.2/Modules/unicodedata.c |  1280 --
 .../Python-2.7.2/Modules/unicodedata_db.h     |  6202 ------
 .../Python-2.7.2/Modules/unicodename_db.h     | 17259 ----------------
 .../Python/Python-2.7.2/Modules/xxmodule.c    |   379 -
 .../Python/Python-2.7.2/Modules/xxsubtype.c   |   297 -
 .../Python/Python-2.7.2/Modules/yuv.h         |    99 -
 .../Python/Python-2.7.2/Modules/yuvconvert.c  |   118 -
 .../Python/Python-2.7.2/Modules/zipimport.c   |  1229 --
 .../Python-2.7.2/Modules/zlib/ChangeLog       |   855 -
 .../Python/Python-2.7.2/Modules/zlib/FAQ      |   339 -
 .../Python/Python-2.7.2/Modules/zlib/INDEX    |    51 -
 .../Python/Python-2.7.2/Modules/zlib/Makefile |   154 -
 .../Python-2.7.2/Modules/zlib/Makefile.in     |   154 -
 .../Python/Python-2.7.2/Modules/zlib/README   |   125 -
 .../Python-2.7.2/Modules/zlib/adler32.c       |   149 -
 .../Python-2.7.2/Modules/zlib/algorithm.txt   |   209 -
 .../Python-2.7.2/Modules/zlib/compress.c      |    79 -
 .../Python-2.7.2/Modules/zlib/configure       |   459 -
 .../Python/Python-2.7.2/Modules/zlib/crc32.c  |   423 -
 .../Python/Python-2.7.2/Modules/zlib/crc32.h  |   441 -
 .../Python-2.7.2/Modules/zlib/deflate.c       |  1736 --
 .../Python-2.7.2/Modules/zlib/deflate.h       |   331 -
 .../Python-2.7.2/Modules/zlib/example.c       |   565 -
 .../Python/Python-2.7.2/Modules/zlib/gzio.c   |  1026 -
 .../Python-2.7.2/Modules/zlib/infback.c       |   623 -
 .../Python-2.7.2/Modules/zlib/inffast.c       |   318 -
 .../Python-2.7.2/Modules/zlib/inffast.h       |    11 -
 .../Python-2.7.2/Modules/zlib/inffixed.h      |    94 -
 .../Python-2.7.2/Modules/zlib/inflate.c       |  1368 --
 .../Python-2.7.2/Modules/zlib/inflate.h       |   115 -
 .../Python-2.7.2/Modules/zlib/inftrees.c      |   329 -
 .../Python-2.7.2/Modules/zlib/inftrees.h      |    55 -
 .../Python-2.7.2/Modules/zlib/make_vms.com    |   461 -
 .../Python-2.7.2/Modules/zlib/minigzip.c      |   322 -
 .../Python/Python-2.7.2/Modules/zlib/trees.c  |  1219 --
 .../Python/Python-2.7.2/Modules/zlib/trees.h  |   128 -
 .../Python-2.7.2/Modules/zlib/uncompr.c       |    61 -
 .../Python/Python-2.7.2/Modules/zlib/zconf.h  |   332 -
 .../Python-2.7.2/Modules/zlib/zconf.in.h      |   332 -
 .../Python/Python-2.7.2/Modules/zlib/zlib.3   |   159 -
 .../Python/Python-2.7.2/Modules/zlib/zlib.h   |  1357 --
 .../Python/Python-2.7.2/Modules/zlib/zutil.c  |   318 -
 .../Python/Python-2.7.2/Modules/zlib/zutil.h  |   277 -
 .../Python/Python-2.7.2/Modules/zlibmodule.c  |  1058 -
 .../Python/Python-2.7.2/Objects/abstract.c    |  3113 ---
 .../Python/Python-2.7.2/Objects/boolobject.c  |   202 -
 .../Python-2.7.2/Objects/bufferobject.c       |   857 -
 .../Python-2.7.2/Objects/bytearrayobject.c    |  3044 ---
 .../Python-2.7.2/Objects/bytes_methods.c      |   398 -
 .../Python/Python-2.7.2/Objects/capsule.c     |   324 -
 .../Python/Python-2.7.2/Objects/cellobject.c  |   145 -
 .../Python/Python-2.7.2/Objects/classobject.c |  2672 ---
 .../Python/Python-2.7.2/Objects/cobject.c     |   172 -
 .../Python/Python-2.7.2/Objects/codeobject.c  |   581 -
 .../Python-2.7.2/Objects/complexobject.c      |  1353 --
 .../Python/Python-2.7.2/Objects/descrobject.c |  1385 --
 .../Python/Python-2.7.2/Objects/dictnotes.txt |   270 -
 .../Python/Python-2.7.2/Objects/dictobject.c  |  3210 ---
 .../Python/Python-2.7.2/Objects/enumobject.c  |   381 -
 .../Python/Python-2.7.2/Objects/exceptions.c  |  2215 --
 .../Python/Python-2.7.2/Objects/fileobject.c  |  2822 ---
 .../Python/Python-2.7.2/Objects/floatobject.c |  2693 ---
 .../Python/Python-2.7.2/Objects/frameobject.c |   982 -
 .../Python/Python-2.7.2/Objects/funcobject.c  |   897 -
 .../Python/Python-2.7.2/Objects/genobject.c   |   414 -
 .../Python/Python-2.7.2/Objects/intobject.c   |  1550 --
 .../Python/Python-2.7.2/Objects/iterobject.c  |   230 -
 .../Python/Python-2.7.2/Objects/listobject.c  |  3044 ---
 .../Python/Python-2.7.2/Objects/listsort.txt  |   677 -
 .../Python-2.7.2/Objects/lnotab_notes.txt     |   124 -
 .../Python/Python-2.7.2/Objects/longobject.c  |  4381 ----
 .../Python-2.7.2/Objects/memoryobject.c       |   842 -
 .../Python-2.7.2/Objects/methodobject.c       |   427 -
 .../Python-2.7.2/Objects/moduleobject.c       |   260 -
 .../Python/Python-2.7.2/Objects/object.c      |  2455 ---
 .../Python/Python-2.7.2/Objects/obmalloc.c    |  1888 --
 .../Python/Python-2.7.2/Objects/rangeobject.c |   322 -
 .../Python/Python-2.7.2/Objects/setobject.c   |  2518 ---
 .../Python/Python-2.7.2/Objects/sliceobject.c |   361 -
 .../Python-2.7.2/Objects/stringlib/README.txt |    40 -
 .../Python-2.7.2/Objects/stringlib/count.h    |    30 -
 .../Python-2.7.2/Objects/stringlib/ctype.h    |   109 -
 .../Objects/stringlib/fastsearch.h            |   160 -
 .../Python-2.7.2/Objects/stringlib/find.h     |   175 -
 .../Objects/stringlib/formatter.h             |  1531 --
 .../Objects/stringlib/localeutil.h            |   227 -
 .../Objects/stringlib/partition.h             |   110 -
 .../Python-2.7.2/Objects/stringlib/split.h    |   394 -
 .../Objects/stringlib/string_format.h         |  1364 --
 .../Objects/stringlib/stringdefs.h            |    33 -
 .../Objects/stringlib/transmogrify.h          |   264 -
 .../Objects/stringlib/unicodedefs.h           |    37 -
 .../Python-2.7.2/Objects/stringobject.c       |  4824 -----
 .../Python/Python-2.7.2/Objects/structseq.c   |   539 -
 .../Python/Python-2.7.2/Objects/tupleobject.c |  1052 -
 .../Python/Python-2.7.2/Objects/typeobject.c  |  6712 ------
 .../Python-2.7.2/Objects/unicodectype.c       |   215 -
 .../Python-2.7.2/Objects/unicodeobject.c      |  8888 --------
 .../Python-2.7.2/Objects/unicodetype_db.h     |  3337 ---
 .../Python-2.7.2/Objects/weakrefobject.c      |   975 -
 .../Python/Python-2.7.2/Parser/Python.asdl    |   115 -
 .../Python/Python-2.7.2/Parser/acceler.c      |   125 -
 .../Python/Python-2.7.2/Parser/asdl.py        |   413 -
 .../Python/Python-2.7.2/Parser/asdl_c.py      |  1220 --
 .../Python/Python-2.7.2/Parser/bitset.c       |    66 -
 .../Python/Python-2.7.2/Parser/firstsets.c    |   113 -
 .../Python/Python-2.7.2/Parser/grammar.c      |   254 -
 .../Python/Python-2.7.2/Parser/grammar1.c     |    57 -
 .../Python/Python-2.7.2/Parser/intrcheck.c    |   178 -
 .../Python/Python-2.7.2/Parser/listnode.c     |    66 -
 .../Python/Python-2.7.2/Parser/metagrammar.c  |   159 -
 .../Python/Python-2.7.2/Parser/myreadline.c   |   221 -
 .../Python/Python-2.7.2/Parser/node.c         |   138 -
 .../Python/Python-2.7.2/Parser/parser.c       |   436 -
 .../Python/Python-2.7.2/Parser/parser.h       |    42 -
 .../Python/Python-2.7.2/Parser/parsetok.c     |   295 -
 .../Python/Python-2.7.2/Parser/pgen.c         |   708 -
 .../Python/Python-2.7.2/Parser/pgenmain.c     |   173 -
 .../Python/Python-2.7.2/Parser/printgrammar.c |   117 -
 .../Python/Python-2.7.2/Parser/spark.py       |   839 -
 .../Python/Python-2.7.2/Parser/tokenizer.c    |  1726 --
 .../Python/Python-2.7.2/Parser/tokenizer.h    |    70 -
 .../Python-2.7.2/Parser/tokenizer_pgen.c      |     2 -
 .../Python/Python-2.7.2/Python/Python-ast.c   |  6763 ------
 .../Python/Python-2.7.2/Python/_warnings.c    |   909 -
 .../Python/Python-2.7.2/Python/asdl.c         |    64 -
 .../Python/Python-2.7.2/Python/ast.c          |  3558 ----
 .../Python/Python-2.7.2/Python/atof.c         |    50 -
 .../Python/Python-2.7.2/Python/bltinmodule.c  |  3043 ---
 .../Python/Python-2.7.2/Python/ceval.c        |  4895 -----
 .../Python/Python-2.7.2/Python/codecs.c       |   872 -
 .../Python/Python-2.7.2/Python/compile.c      |  3979 ----
 .../Python/Python-2.7.2/Python/dtoa.c         |  2918 ---
 .../Python/Python-2.7.2/Python/dup2.c         |    31 -
 .../Python/Python-2.7.2/Python/dynload_aix.c  |   183 -
 .../Python-2.7.2/Python/dynload_atheos.c      |    47 -
 .../Python/Python-2.7.2/Python/dynload_beos.c |   254 -
 .../Python/Python-2.7.2/Python/dynload_dl.c   |    26 -
 .../Python/Python-2.7.2/Python/dynload_hpux.c |    58 -
 .../Python/Python-2.7.2/Python/dynload_next.c |   114 -
 .../Python/Python-2.7.2/Python/dynload_os2.c  |    46 -
 .../Python-2.7.2/Python/dynload_shlib.c       |   143 -
 .../Python/Python-2.7.2/Python/dynload_stub.c |    11 -
 .../Python/Python-2.7.2/Python/dynload_win.c  |   274 -
 .../Python/Python-2.7.2/Python/errors.c       |   805 -
 .../Python-2.7.2/Python/formatter_string.c    |    17 -
 .../Python-2.7.2/Python/formatter_unicode.c   |    18 -
 .../Python/Python-2.7.2/Python/frozen.c       |    38 -
 .../Python/Python-2.7.2/Python/frozenmain.c   |    68 -
 .../Python/Python-2.7.2/Python/future.c       |   142 -
 .../Python/Python-2.7.2/Python/getargs.c      |  1907 --
 .../Python/Python-2.7.2/Python/getcompiler.c  |    28 -
 .../Python/Python-2.7.2/Python/getcopyright.c |    36 -
 .../Python/Python-2.7.2/Python/getcwd.c       |    82 -
 .../Python/Python-2.7.2/Python/getopt.c       |   126 -
 .../Python/Python-2.7.2/Python/getplatform.c  |    12 -
 .../Python/Python-2.7.2/Python/getversion.c   |    15 -
 .../Python/Python-2.7.2/Python/graminit.c     |  2177 --
 .../Python/Python-2.7.2/Python/import.c       |  3398 ---
 .../Python/Python-2.7.2/Python/importdl.c     |    78 -
 .../Python/Python-2.7.2/Python/importdl.h     |    53 -
 .../Python-2.7.2/Python/mactoolboxglue.c      |   474 -
 .../Python/Python-2.7.2/Python/marshal.c      |  1422 --
 .../Python/Python-2.7.2/Python/modsupport.c   |   644 -
 .../Python/Python-2.7.2/Python/mysnprintf.c   |   105 -
 .../Python/Python-2.7.2/Python/mystrtoul.c    |   285 -
 .../Python/Python-2.7.2/Python/peephole.c     |   680 -
 .../Python/Python-2.7.2/Python/pyarena.c      |   220 -
 .../Python/Python-2.7.2/Python/pyctype.c      |   214 -
 .../Python/Python-2.7.2/Python/pyfpe.c        |    23 -
 .../Python/Python-2.7.2/Python/pymath.c       |    79 -
 .../Python/Python-2.7.2/Python/pystate.c      |   680 -
 .../Python/Python-2.7.2/Python/pystrcmp.c     |    26 -
 .../Python/Python-2.7.2/Python/pystrtod.c     |  1249 --
 .../Python/Python-2.7.2/Python/pythonrun.c    |  2004 --
 .../Python/Python-2.7.2/Python/sigcheck.c     |    19 -
 .../Python/Python-2.7.2/Python/strdup.c       |    14 -
 .../Python/Python-2.7.2/Python/strtod.c       |   159 -
 .../Python/Python-2.7.2/Python/structmember.c |   363 -
 .../Python/Python-2.7.2/Python/symtable.c     |  1554 --
 .../Python/Python-2.7.2/Python/sysmodule.c    |  1779 --
 .../Python/Python-2.7.2/Python/thread.c       |   421 -
 .../Python-2.7.2/Python/thread_atheos.h       |   259 -
 .../Python/Python-2.7.2/Python/thread_beos.h  |   248 -
 .../Python-2.7.2/Python/thread_cthread.h      |   112 -
 .../Python-2.7.2/Python/thread_foobar.h       |    75 -
 .../Python/Python-2.7.2/Python/thread_lwp.h   |   113 -
 .../Python/Python-2.7.2/Python/thread_nt.h    |   359 -
 .../Python/Python-2.7.2/Python/thread_os2.h   |   267 -
 .../Python/Python-2.7.2/Python/thread_pth.h   |   178 -
 .../Python-2.7.2/Python/thread_pthread.h      |   505 -
 .../Python/Python-2.7.2/Python/thread_sgi.h   |   259 -
 .../Python-2.7.2/Python/thread_solaris.h      |   130 -
 .../Python/Python-2.7.2/Python/thread_wince.h |   136 -
 .../Python/Python-2.7.2/Python/traceback.c    |   283 -
 .../Applications/Python/Python-2.7.2/README   |  1229 --
 .../Python/Python-2.7.2/Tools/README          |    41 -
 .../Python/Python-2.7.2/Tools/bgen/README     |     9 -
 .../Python-2.7.2/Tools/bgen/bgen/bgen.py      |    12 -
 .../Tools/bgen/bgen/bgenBuffer.py             |   301 -
 .../Tools/bgen/bgen/bgenGenerator.py          |   302 -
 .../Tools/bgen/bgen/bgenGeneratorGroup.py     |    40 -
 .../Tools/bgen/bgen/bgenHeapBuffer.py         |   145 -
 .../Tools/bgen/bgen/bgenModule.py             |    94 -
 .../Tools/bgen/bgen/bgenObjectDefinition.py   |   512 -
 .../Tools/bgen/bgen/bgenOutput.py             |   219 -
 .../Tools/bgen/bgen/bgenStackBuffer.py        |    62 -
 .../Tools/bgen/bgen/bgenStringBuffer.py       |    67 -
 .../Python-2.7.2/Tools/bgen/bgen/bgenType.py  |   328 -
 .../Tools/bgen/bgen/bgenVariable.py           |   112 -
 .../Tools/bgen/bgen/macsupport.py             |   197 -
 .../Python-2.7.2/Tools/bgen/bgen/scantools.py |   849 -
 .../Tools/buildbot/README.tcltk-AMD64         |    36 -
 .../Tools/buildbot/build-amd64.bat            |     6 -
 .../Python-2.7.2/Tools/buildbot/build.bat     |     7 -
 .../Python-2.7.2/Tools/buildbot/buildmsi.bat  |    20 -
 .../Tools/buildbot/clean-amd64.bat            |    10 -
 .../Python-2.7.2/Tools/buildbot/clean.bat     |    10 -
 .../Tools/buildbot/external-amd64.bat         |    20 -
 .../Tools/buildbot/external-common.bat        |    45 -
 .../Python-2.7.2/Tools/buildbot/external.bat  |    21 -
 .../Tools/buildbot/test-amd64.bat             |     3 -
 .../Python-2.7.2/Tools/buildbot/test.bat      |     3 -
 .../Python-2.7.2/Tools/ccbench/ccbench.py     |   609 -
 .../Python/Python-2.7.2/Tools/compiler/ACKS   |     8 -
 .../Python/Python-2.7.2/Tools/compiler/README |    18 -
 .../Python-2.7.2/Tools/compiler/ast.txt       |   104 -
 .../Python-2.7.2/Tools/compiler/astgen.py     |   294 -
 .../Python-2.7.2/Tools/compiler/compile.py    |    51 -
 .../Python-2.7.2/Tools/compiler/demo.py       |    38 -
 .../Python-2.7.2/Tools/compiler/dumppyc.py    |    46 -
 .../Python-2.7.2/Tools/compiler/regrtest.py   |    78 -
 .../Python-2.7.2/Tools/compiler/stacktest.py  |    43 -
 .../Python/Python-2.7.2/Tools/faqwiz/README   |   114 -
 .../Python-2.7.2/Tools/faqwiz/faqconf.py      |   577 -
 .../Python-2.7.2/Tools/faqwiz/faqcust.py      |     1 -
 .../Python/Python-2.7.2/Tools/faqwiz/faqw.py  |    33 -
 .../Python-2.7.2/Tools/faqwiz/faqwiz.py       |   841 -
 .../Python-2.7.2/Tools/faqwiz/move-faqwiz.sh  |    55 -
 .../Python-2.7.2/Tools/framer/README.txt      |     8 -
 .../Python/Python-2.7.2/Tools/framer/TODO.txt |     6 -
 .../Python-2.7.2/Tools/framer/example.py      |   126 -
 .../Tools/framer/framer/__init__.py           |     6 -
 .../Python-2.7.2/Tools/framer/framer/bases.py |   220 -
 .../Tools/framer/framer/function.py           |   173 -
 .../Tools/framer/framer/member.py             |    73 -
 .../Python-2.7.2/Tools/framer/framer/slots.py |    64 -
 .../Tools/framer/framer/struct.py             |    52 -
 .../Tools/framer/framer/structparse.py        |    46 -
 .../Tools/framer/framer/template.py           |   102 -
 .../Python-2.7.2/Tools/framer/framer/util.py  |    35 -
 .../Python/Python-2.7.2/Tools/freeze/README   |   296 -
 .../Python-2.7.2/Tools/freeze/bkfile.py       |    47 -
 .../Tools/freeze/checkextensions.py           |    90 -
 .../Tools/freeze/checkextensions_win32.py     |   188 -
 .../Tools/freeze/extensions_win32.ini         |   171 -
 .../Python-2.7.2/Tools/freeze/freeze.py       |   497 -
 .../Python/Python-2.7.2/Tools/freeze/hello.py |     1 -
 .../Python-2.7.2/Tools/freeze/makeconfig.py   |    60 -
 .../Python-2.7.2/Tools/freeze/makefreeze.py   |    90 -
 .../Python-2.7.2/Tools/freeze/makemakefile.py |    29 -
 .../Python-2.7.2/Tools/freeze/parsesetup.py   |   112 -
 .../Python-2.7.2/Tools/freeze/win32.html      |   119 -
 .../Tools/freeze/winmakemakefile.py           |   147 -
 .../Python-2.7.2/Tools/gdb/libpython.py       |  1447 --
 .../Tools/i18n/makelocalealias.py             |    73 -
 .../Python/Python-2.7.2/Tools/i18n/msgfmt.py  |   226 -
 .../Python-2.7.2/Tools/i18n/pygettext.py      |   669 -
 .../Python-2.7.2/Tools/iobench/iobench.py     |   539 -
 .../Python/Python-2.7.2/Tools/msi/README.txt  |    25 -
 .../Python-2.7.2/Tools/msi/crtlicense.txt     |    44 -
 .../Python/Python-2.7.2/Tools/msi/msi.py      |  1398 --
 .../Python/Python-2.7.2/Tools/msi/msilib.py   |   692 -
 .../Python-2.7.2/Tools/msi/msisupport.c       |    93 -
 .../Python-2.7.2/Tools/msi/msisupport.mak     |     9 -
 .../Python/Python-2.7.2/Tools/msi/schema.py   |  1007 -
 .../Python/Python-2.7.2/Tools/msi/sequence.py |   126 -
 .../Python/Python-2.7.2/Tools/msi/uisample.py |  1400 --
 .../Python/Python-2.7.2/Tools/msi/uuids.py    |    58 -
 .../Python-2.7.2/Tools/pybench/Arithmetic.py  |   777 -
 .../Python-2.7.2/Tools/pybench/Calls.py       |   560 -
 .../Python-2.7.2/Tools/pybench/CommandLine.py |   634 -
 .../Python-2.7.2/Tools/pybench/Constructs.py  |   564 -
 .../Python/Python-2.7.2/Tools/pybench/Dict.py |   504 -
 .../Python-2.7.2/Tools/pybench/Exceptions.py  |   699 -
 .../Python-2.7.2/Tools/pybench/Imports.py     |   138 -
 .../Python-2.7.2/Tools/pybench/Instances.py   |    66 -
 .../Python/Python-2.7.2/Tools/pybench/LICENSE |    25 -
 .../Python-2.7.2/Tools/pybench/Lists.py       |   350 -
 .../Python-2.7.2/Tools/pybench/Lookups.py     |   945 -
 .../Tools/pybench/NewInstances.py             |    75 -
 .../Python-2.7.2/Tools/pybench/Numbers.py     |   784 -
 .../Python/Python-2.7.2/Tools/pybench/README  |   368 -
 .../Python-2.7.2/Tools/pybench/Setup.py       |    43 -
 .../Python-2.7.2/Tools/pybench/Strings.py     |   562 -
 .../Python-2.7.2/Tools/pybench/Tuples.py      |   360 -
 .../Python-2.7.2/Tools/pybench/Unicode.py     |   542 -
 .../Python/Python-2.7.2/Tools/pybench/With.py |   190 -
 .../Python-2.7.2/Tools/pybench/clockres.py    |    43 -
 .../Tools/pybench/package/__init__.py         |     0
 .../Tools/pybench/package/submodule.py        |     0
 .../Python-2.7.2/Tools/pybench/pybench.py     |   961 -
 .../Python-2.7.2/Tools/pybench/systimes.py    |   211 -
 .../Python/Python-2.7.2/Tools/scripts/2to3    |     5 -
 .../Python/Python-2.7.2/Tools/scripts/README  |    69 -
 .../Python-2.7.2/Tools/scripts/analyze_dxp.py |   129 -
 .../Python-2.7.2/Tools/scripts/byext.py       |   131 -
 .../Python-2.7.2/Tools/scripts/byteyears.py   |    61 -
 .../Python-2.7.2/Tools/scripts/checkappend.py |   167 -
 .../Python-2.7.2/Tools/scripts/checkpyc.py    |    66 -
 .../Python-2.7.2/Tools/scripts/classfix.py    |   190 -
 .../Python-2.7.2/Tools/scripts/cleanfuture.py |   276 -
 .../Python-2.7.2/Tools/scripts/combinerefs.py |   127 -
 .../Python-2.7.2/Tools/scripts/copytime.py    |    26 -
 .../Python/Python-2.7.2/Tools/scripts/crlf.py |    23 -
 .../Python-2.7.2/Tools/scripts/cvsfiles.py    |    72 -
 .../Python-2.7.2/Tools/scripts/db2pickle.py   |   135 -
 .../Python/Python-2.7.2/Tools/scripts/diff.py |    49 -
 .../Python-2.7.2/Tools/scripts/dutree.doc     |    54 -
 .../Python-2.7.2/Tools/scripts/dutree.py      |    60 -
 .../Python-2.7.2/Tools/scripts/eptags.py      |    56 -
 .../Tools/scripts/find_recursionlimit.py      |   117 -
 .../Python-2.7.2/Tools/scripts/finddiv.py     |    89 -
 .../Python-2.7.2/Tools/scripts/findlinksto.py |    43 -
 .../Tools/scripts/findnocoding.py             |   104 -
 .../Python-2.7.2/Tools/scripts/fixcid.py      |   314 -
 .../Python-2.7.2/Tools/scripts/fixdiv.py      |   380 -
 .../Python-2.7.2/Tools/scripts/fixheader.py   |    49 -
 .../Python-2.7.2/Tools/scripts/fixnotice.py   |   113 -
 .../Python-2.7.2/Tools/scripts/fixps.py       |    33 -
 .../Python-2.7.2/Tools/scripts/ftpmirror.py   |   400 -
 .../Python-2.7.2/Tools/scripts/google.py      |    23 -
 .../Python-2.7.2/Tools/scripts/gprof2html.py  |    79 -
 .../Python/Python-2.7.2/Tools/scripts/h2py.py |   175 -
 .../Python-2.7.2/Tools/scripts/hotshotmain.py |    55 -
 .../Python/Python-2.7.2/Tools/scripts/idle    |     5 -
 .../Python-2.7.2/Tools/scripts/ifdef.py       |   112 -
 .../Python/Python-2.7.2/Tools/scripts/lfcr.py |    24 -
 .../Python-2.7.2/Tools/scripts/linktree.py    |    80 -
 .../Python/Python-2.7.2/Tools/scripts/lll.py  |    28 -
 .../Python-2.7.2/Tools/scripts/logmerge.py    |   185 -
 .../Tools/scripts/mailerdaemon.py             |   237 -
 .../Python-2.7.2/Tools/scripts/md5sum.py      |    90 -
 .../Python-2.7.2/Tools/scripts/methfix.py     |   171 -
 .../Python-2.7.2/Tools/scripts/mkreal.py      |    66 -
 .../Python-2.7.2/Tools/scripts/ndiff.py       |   133 -
 .../Python-2.7.2/Tools/scripts/nm2def.py      |   103 -
 .../Python-2.7.2/Tools/scripts/objgraph.py    |   215 -
 .../Tools/scripts/parseentities.py            |    64 -
 .../Python-2.7.2/Tools/scripts/patchcheck.py  |   158 -
 .../Python-2.7.2/Tools/scripts/pathfix.py     |   149 -
 .../Python-2.7.2/Tools/scripts/pdeps.py       |   167 -
 .../Python-2.7.2/Tools/scripts/pickle2db.py   |   147 -
 .../Python-2.7.2/Tools/scripts/pindent.py     |   542 -
 .../Python-2.7.2/Tools/scripts/ptags.py       |    53 -
 .../Python/Python-2.7.2/Tools/scripts/pydoc   |     5 -
 .../Python-2.7.2/Tools/scripts/pydocgui.pyw   |     7 -
 .../Python-2.7.2/Tools/scripts/pysource.py    |   130 -
 .../Python-2.7.2/Tools/scripts/redemo.py      |   171 -
 .../Tools/scripts/reindent-rst.py             |    14 -
 .../Python-2.7.2/Tools/scripts/reindent.py    |   304 -
 .../Python-2.7.2/Tools/scripts/rgrep.py       |    64 -
 .../Python-2.7.2/Tools/scripts/serve.py       |    35 -
 .../Python-2.7.2/Tools/scripts/setup.py       |    20 -
 .../Python/Python-2.7.2/Tools/scripts/suff.py |    30 -
 .../Python-2.7.2/Tools/scripts/svneol.py      |    91 -
 .../Python-2.7.2/Tools/scripts/texcheck.py    |   233 -
 .../Python-2.7.2/Tools/scripts/texi2html.py   |  2078 --
 .../Python-2.7.2/Tools/scripts/treesync.py    |   205 -
 .../Python-2.7.2/Tools/scripts/untabify.py    |    52 -
 .../Python-2.7.2/Tools/scripts/which.py       |    60 -
 .../Tools/scripts/win_add2path.py             |    57 -
 .../Python/Python-2.7.2/Tools/scripts/xxci.py |   116 -
 .../Tools/ssl/get-remote-certificate.py       |    79 -
 .../Python-2.7.2/Tools/unicode/Makefile       |    84 -
 .../Tools/unicode/comparecodecs.py            |    53 -
 .../Tools/unicode/gencjkcodecs.py             |    68 -
 .../Python-2.7.2/Tools/unicode/gencodec.py    |   423 -
 .../Python-2.7.2/Tools/unicode/genwincodec.py |    61 -
 .../Tools/unicode/genwincodecs.bat            |     7 -
 .../Python-2.7.2/Tools/unicode/listcodecs.py  |    41 -
 .../Tools/unicode/makeunicodedata.py          |  1135 -
 .../Tools/unicode/mkstringprep.py             |   425 -
 .../Tools/unicode/python-mappings/CP1140.TXT  |   291 -
 .../Tools/unicode/python-mappings/KOI8-U.TXT  |   298 -
 .../Tools/unicode/python-mappings/TIS-620.TXT |   284 -
 .../Python-2.7.2/Tools/versioncheck/README    |    41 -
 .../Tools/versioncheck/_checkversion.py       |    16 -
 .../Tools/versioncheck/checkversions.py       |    52 -
 .../Tools/versioncheck/pyversioncheck.py      |    98 -
 .../Python-2.7.2/Tools/webchecker/README      |    23 -
 .../Python-2.7.2/Tools/webchecker/tktools.py  |   366 -
 .../Python-2.7.2/Tools/webchecker/wcgui.py    |   456 -
 .../Python-2.7.2/Tools/webchecker/wcmac.py    |     7 -
 .../Tools/webchecker/webchecker.py            |   892 -
 .../Tools/webchecker/websucker.py             |   123 -
 .../Python-2.7.2/Tools/webchecker/wsgui.py    |   240 -
 .../Python/Python-2.7.2/Tools/world/README    |    85 -
 .../Python/Python-2.7.2/Tools/world/world     |   551 -
 AppPkg/Applications/Python/PythonCore.inf     |   248 -
 AppPkg/Applications/Python/PythonReadMe.txt   |   237 -
 AppPkg/Applications/Python/X64/pyconfig.h     |  1301 --
 AppPkg/ReadMe.txt                             |    22 +-
 Readme.md                                     |     3 +-
 2137 files changed, 12 insertions(+), 912152 deletions(-)
 delete mode 100644 AppPkg/Applications/Python/Efi/config.c
 delete mode 100644 AppPkg/Applications/Python/Efi/edk2module.c
 delete mode 100644 AppPkg/Applications/Python/Efi/getpath.c
 delete mode 100644 AppPkg/Applications/Python/Ia32/pyconfig.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Include/fileobject.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Include/osdefs.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Include/pyport.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Lib/ntpath.py
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Lib/os.py
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Lib/pydoc.py
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Lib/site.py
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/_sre.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/addrinfo.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/errnomodule.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/expat/expat_external.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/expat/xmlparse.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/main.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/selectmodule.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/socketmodule.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Modules/zlib/zutil.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Objects/longobject.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Objects/stringlib/localeutil.h
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Python/getcopyright.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Python/import.c
 delete mode 100644 AppPkg/Applications/Python/PyMod-2.7.2/Python/marshal.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi0.sh
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/wiki.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Complex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Dates.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Dbm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Range.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Rev.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Vec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/classes/bitvec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/patterns
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/regextest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/sortingtest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/systemtest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/foo
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/md5driver.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Eiffel.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Enum.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Meta.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Simple.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Synch.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Trace.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/index.html
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/meta-vladimir.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/newmetaclasses/Eiffel.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/newmetaclasses/Enum.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/FILES
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/docstring.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/example.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/simple.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/source.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/test_parser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/test_unparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/parser/unparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/FSProxy.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/RCSProxy.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/client.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cmdfw.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cmptree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cvslib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cvslock.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/mac.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/makechangelog.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcsbump
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcsclient.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcslib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcvs
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcvs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rrcs
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rrcs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/security.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/server.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/sumtree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/beer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/eqfix.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/fact.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/find-uname.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/from.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/lpwatch.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/makedir.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/markov.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/mboxconvert.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/morse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/newslist.doc
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/newslist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/pi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/pp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/primes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/queens.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/script.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/unbirthday.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/update.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/broadcast.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/echosvr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/finger.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/ftp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/gopher.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/mcast.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/radio.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/rpython.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/rpythond.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/telnet.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/throughput.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/udpecho.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unicast.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unixclient.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unixserver.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/xml/elem_count.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/xml/roundtrip.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/xml/rss2html.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/zlib/minigzip.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/zlib/zlibdemo.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Grammar/Grammar
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/Python-ast.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/Python.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/abstract.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/asdl.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/ast.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/bitset.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/boolobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/bufferobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/bytearrayobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/bytes_methods.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/bytesobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/cStringIO.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/cellobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/ceval.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/classobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/cobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/code.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/codecs.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/compile.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/complexobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/datetime.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/descrobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/dictobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/dtoa.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/enumobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/errcode.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/eval.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/fileobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/floatobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/frameobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/funcobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/genobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/graminit.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/grammar.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/import.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/intobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/intrcheck.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/iterobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/listobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/longintrepr.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/longobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/marshal.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/memoryobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/metagrammar.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/methodobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/modsupport.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/moduleobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/node.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/object.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/objimpl.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/opcode.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/osdefs.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/parsetok.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/patchlevel.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pgen.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pgenheaders.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/py_curses.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pyarena.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pycapsule.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pyctype.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pydebug.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pyerrors.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pyexpat.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pyfpe.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pygetopt.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pymacconfig.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pymactoolbox.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pymath.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pymem.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pyport.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pystate.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pystrcmp.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pystrtod.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pythonrun.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/pythread.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/rangeobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/setobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/sliceobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/stringobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/structmember.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/structseq.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/symtable.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/sysmodule.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/timefuncs.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/token.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/traceback.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/tupleobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/ucnhash.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/unicodeobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/warnings.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Include/weakrefobject.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/LICENSE
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/BaseHTTPServer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/Bastion.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/CGIHTTPServer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/ConfigParser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/Cookie.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/DocXMLRPCServer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/HTMLParser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/MimeWriter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/Queue.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/SimpleHTTPServer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/SimpleXMLRPCServer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/SocketServer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/StringIO.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/UserDict.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/UserList.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/UserString.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/_LWPCookieJar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/_MozillaCookieJar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/__future__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/__phello__.foo.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/_abcoll.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/_pyio.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/_strptime.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/_weakrefset.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/abc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/aifc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/antigravity.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/anydbm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/argparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/ast.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/asynchat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/asyncore.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/atexit.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/base64.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/bdb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/binhex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/bisect.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/cProfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/calendar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/cgi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/cgitb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/chunk.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/cmd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/code.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/codecs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/codeop.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/collections.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/colorsys.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/commands.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compileall.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/ast.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/consts.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/future.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/misc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/pyassem.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/pycodegen.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/symbols.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/syntax.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/transformer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/visitor.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/contextlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/cookielib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/copy.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/copy_reg.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/csv.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/dbhash.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/decimal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/difflib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/dircache.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/dis.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/archive_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/bcppcompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/ccompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/cmd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_dumb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_msi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_rpm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_wininst.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_clib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_ext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_py.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_scripts.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/check.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/clean.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/command_template
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/config.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_data.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_egg_info.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_headers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_lib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_scripts.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/register.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/sdist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/upload.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-6.0.exe
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-7.1.exe
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-8.0.exe
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-9.0-amd64.exe
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-9.0.exe
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/config.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/core.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/cygwinccompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/debug.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dep_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dir_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/emxccompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/errors.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/extension.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/fancy_getopt.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/file_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/filelist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/log.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/msvc9compiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/msvccompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/spawn.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/sysconfig.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/Setup.sample
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/setuptools_build_ext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/setuptools_extension.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/support.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_archive_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_dumb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_msi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_rpm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_wininst.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_clib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_ext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_py.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_scripts.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_ccompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_check.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_clean.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_cmd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_config.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_config_cmd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_core.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dep_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dir_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_file_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_filelist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_data.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_headers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_lib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_scripts.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_msvc9compiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_register.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_sdist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_spawn.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_sysconfig.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_text_file.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_unixccompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_upload.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_version.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_versionpredicate.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/text_file.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/unixccompiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/version.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/versionpredicate.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/doctest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/dumbdbm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/dummy_thread.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/dummy_threading.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/_parseaddr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/base64mime.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/charset.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/encoders.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/errors.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/feedparser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/generator.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/header.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/iterators.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/message.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/application.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/audio.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/base.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/image.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/message.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/multipart.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/nonmultipart.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/text.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/parser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/quoprimime.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/PyBanner048.gif
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/audiotest.au
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_01.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_02.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_03.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_04.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_05.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_06.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_07.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_08.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_09.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_10.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_11.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_12.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_12a.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_13.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_14.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_15.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_16.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_17.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_18.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_19.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_20.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_21.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_22.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_23.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_24.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_25.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_26.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_27.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_28.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_29.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_30.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_31.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_32.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_33.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_34.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_35.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_36.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_37.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_38.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_39.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_40.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_41.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_42.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_43.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_44.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_45.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_46.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_codecs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_codecs_renamed.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_renamed.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_torture.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/email/utils.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/aliases.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/ascii.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/base64_codec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/big5.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/big5hkscs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/bz2_codec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/charmap.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp037.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1006.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1026.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1140.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1250.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1251.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1252.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1253.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1254.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1255.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1256.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1257.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1258.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp424.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp437.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp500.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp720.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp737.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp775.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp850.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp852.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp855.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp856.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp857.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp858.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp860.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp861.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp862.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp863.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp864.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp865.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp866.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp869.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp874.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp875.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp932.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp949.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp950.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jis_2004.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jisx0213.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_kr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gb18030.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gb2312.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gbk.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hex_codec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hp_roman8.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hz.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/idna.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_2004.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_ext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_kr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_10.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_11.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_13.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_14.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_15.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_16.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_4.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_5.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_6.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_7.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_8.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_9.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/johab.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/koi8_r.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/koi8_u.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/latin_1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_arabic.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_centeuro.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_croatian.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_cyrillic.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_farsi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_greek.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_iceland.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_latin2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_roman.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_romanian.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_turkish.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mbcs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/palmos.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/ptcp154.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/punycode.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/quopri_codec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/raw_unicode_escape.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/rot_13.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jis.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jis_2004.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jisx0213.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/string_escape.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/tis_620.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/undefined.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/unicode_escape.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/unicode_internal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16_be.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16_le.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32_be.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32_le.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_7.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_8.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_8_sig.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/uu_codec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/zlib_codec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/filecmp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/fileinput.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/fnmatch.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/formatter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/fpformat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/fractions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/ftplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/functools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/genericpath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/getopt.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/getpass.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/gettext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/glob.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/gzip.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/hashlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/heapq.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/hmac.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/log.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/stats.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/stones.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/htmlentitydefs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/htmllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/httplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/ihooks.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/imaplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/imghdr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/importlib/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/imputil.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/inspect.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/io.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/decoder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/encoder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/scanner.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_check_circular.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_decode.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_default.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_dump.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_encode_basestring_ascii.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_fail.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_float.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_indent.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_recursion.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_scanstring.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_separators.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_speedups.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_unicode.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/json/tool.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/keyword.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/Grammar.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/PatternGrammar.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/__main__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/btm_matcher.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/btm_utils.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixer_base.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixer_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_apply.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_basestring.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_buffer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_callable.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_dict.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_except.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_exec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_execfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_exitfunc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_filter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_funcattrs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_future.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_getcwdu.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_has_key.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_idioms.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_import.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_imports.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_imports2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_input.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_intern.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_isinstance.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_itertools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_itertools_imports.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_long.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_map.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_metaclass.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_methodattrs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_ne.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_next.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_nonzero.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_numliterals.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_operator.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_paren.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_print.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_raise.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_raw_input.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_reduce.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_renames.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_repr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_set_literal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_standarderror.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_sys_exc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_throw.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_tuple_params.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_types.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_unicode.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_urllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_ws_comma.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_xrange.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_xreadlines.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_zip.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/main.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/patcomp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/conv.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/driver.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/grammar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/literals.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/parse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/pgen.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/token.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/tokenize.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pygram.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pytree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/refactor.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/bom.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/crlf.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/different_encoding.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/bad_order.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_explicit.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_first.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_last.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_parrot.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_preorder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/no_fixer_cls.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/parrot_example.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/infinite_recursion.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/py2_test_grammar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/py3_test_grammar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/pytree_idempotency.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/support.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_all_fixers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_fixers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_main.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_parser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_pytree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_refactor.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/linecache.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/locale.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/logging/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/logging/config.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/logging/handlers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/mailbox.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/mailcap.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/markupbase.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/md5.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/mhlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/mimetools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/mimetypes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/mimify.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/modulefinder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/multifile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/mutex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/netrc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/new.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/nntplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/ntpath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/nturl2path.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/numbers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/opcode.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/optparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/os.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pdb.doc
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pdb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pickle.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pickletools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pipes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pkgutil.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/platform.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/plistlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/popen2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/poplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/posixfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/posixpath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pprint.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/profile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pstats.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pty.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/py_compile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pyclbr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pydoc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pydoc_data/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/pydoc_data/topics.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/quopri.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/random.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/re.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/repr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/rexec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/rfc822.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/rlcompleter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/robotparser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/runpy.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sched.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sets.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sgmllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sha.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/shelve.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/shlex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/shutil.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/site-packages/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/site.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/smtpd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/smtplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sndhdr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/socket.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sre.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sre_compile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sre_constants.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sre_parse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/ssl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/stat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/statvfs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/string.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/stringold.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/stringprep.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/struct.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/symbol.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/symtable.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/sysconfig.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/tabnanny.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/tarfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/telnetlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/tempfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/185test.db
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/Sine-1000Hz-300ms.aif
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/audiotest.au
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/autotest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/bad_coding.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/bad_coding2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badcert.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badkey.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future4.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future5.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future6.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future7.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future8.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future9.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_nocaret.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/buffer_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cfgparser.1
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/check_soundcard.vbs
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5hkscs-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5hkscs.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/cp949-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/cp949.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jisx0213-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jisx0213.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jp-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jp.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_kr-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_kr.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb18030-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb18030.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb2312-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb2312.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gbk-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gbk.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/hz-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/hz.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/johab-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/johab.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jis-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jis.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jisx0213-utf8.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jisx0213.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/cmath_testcases.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/bogus_code_obj.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/borrowed_ref_1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/borrowed_ref_2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/compiler_recursion.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/gc_has_finalizer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/gc_inspection.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/infinite_loop_re.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/loosing_mro_ref.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/mutation_inside_cyclegc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/nasty_eq_vs_dict.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/recursion_limit_too_high.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/recursive_call.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/curses_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/data/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/abs.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/add.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/and.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/base.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/clamp.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/class.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/compare.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/comparetotal.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/comparetotmag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copy.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copyabs.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copynegate.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copysign.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAbs.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAdd.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAnd.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddBase.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCanonical.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddClass.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompare.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareSig.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareTotal.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareTotalMag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopy.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopyAbs.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopyNegate.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopySign.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddDivide.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddDivideInt.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddEncode.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddFMA.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddInvert.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddLogB.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMax.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMaxMag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMin.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMinMag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMinus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMultiply.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextMinus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextPlus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextToward.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddOr.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddPlus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddQuantize.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddReduce.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRemainder.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRemainderNear.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRotate.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddSameQuantum.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddScaleB.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddShift.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddSubtract.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddToIntegral.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddXor.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decDouble.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decQuad.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decSingle.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/divide.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/divideint.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAbs.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAdd.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAnd.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqBase.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCanonical.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqClass.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompare.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareSig.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareTotal.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareTotalMag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopy.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopyAbs.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopyNegate.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopySign.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqDivide.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqDivideInt.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqEncode.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqFMA.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqInvert.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqLogB.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMax.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMaxMag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMin.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMinMag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMinus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMultiply.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextMinus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextPlus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextToward.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqOr.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqPlus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqQuantize.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqReduce.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRemainder.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRemainderNear.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRotate.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqSameQuantum.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqScaleB.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqShift.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqSubtract.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqToIntegral.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqXor.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dsBase.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dsEncode.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/exp.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/extra.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/fma.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/inexact.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/invert.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ln.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/log10.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/logb.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/max.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/maxmag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/min.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/minmag.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/minus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/multiply.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nextminus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nextplus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nexttoward.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/or.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/plus.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/power.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/powersqrt.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/quantize.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/randomBound32.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/randoms.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/reduce.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/remainder.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/remainderNear.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rescale.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rotate.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rounding.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/samequantum.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/scaleb.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/shift.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/squareroot.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/subtract.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/testall.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/tointegral.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/tointegralx.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/xor.decTest
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/doctest_aliases.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/double_const.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/empty.vbs
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/exception_hierarchy.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/floating_points.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/fork_wait.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/formatfloat_testcases.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/gdb_sample.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/greyrgb.uue
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/https_svn_python_org_root.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/ieee754.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/infinite_reload.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/inspect_fodder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/inspect_fodder2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/keycert.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/README.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_ctypes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_dictself.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_gestalt.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_selftype.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/list_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/lock_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/mapping_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/math_testcases.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/nullcert.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/outstanding_bugs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/pickletester.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/profilee.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/pyclbr_input.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/pydoc_mod.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/pydocfodder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/pystone.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv2_32.pck
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv2_64.pck
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv3.pck
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/re_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/regex_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/regrtest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/relimport.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/reperf.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/sample_doctest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/script_helper.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/seq_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/sgml_input.html
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/sha256.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/sortperf.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/ssl_cert.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/ssl_key.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/string_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/subprocessdata/sigchild_ignore.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/svn_python_org_https_cert.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_MimeWriter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_SimpleHTTPServer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_StringIO.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test___all__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test___future__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test__locale.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_abc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_abstract_numbers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_aepack.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_aifc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_al.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_anydbm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_applesingle.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_argparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_array.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ascii_formatd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ast.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_asynchat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_asyncore.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_atexit.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_audioop.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_augassign.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_base64.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bastion.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bigaddrspace.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bigmem.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binascii.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binhex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binop.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bisect.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bool.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb185.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_buffer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bufio.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_builtin.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bytes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bz2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_calendar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_call.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_capi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cfgparser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cgi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_charmapcodec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_class.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd_line.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd_line_script.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_code.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codeccallbacks.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_cn.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_hk.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_jp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_kr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_tw.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_cn.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_hk.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_jp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_kr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_tw.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codeop.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_coding.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_coercion.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_collections.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_colorsys.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_commands.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compare.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compileall.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compiler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_complex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_complex_args.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_contains.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_contextlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cookie.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cookielib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_copy.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_copy_reg.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cpickle.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cprofile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_crypt.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_csv.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ctypes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_curses.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_datetime.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dbm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_decimal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_decorators.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_defaultdict.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_deque.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_descr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_descrtut.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dict.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dictcomps.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dictviews.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_difflib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_difflib_expect.html
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dircache.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dis.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_distutils.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest2.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest3.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest4.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_docxmlrpc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dumbdbm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dummy_thread.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dummy_threading.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email_codecs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email_renamed.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_enumerate.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_eof.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_epoll.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_errno.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_exception_variations.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_exceptions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_extcall.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fcntl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_file.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_file2k.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_filecmp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fileinput.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fileio.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_float.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fnmatch.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fork1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_format.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fpformat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fractions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_frozen.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ftplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_funcattrs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_functools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future1.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future4.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future5.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future_builtins.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gdb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gdbm.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_generators.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_genericpath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_genexps.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getargs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getargs2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getopt.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gettext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_glob.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_global.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_grammar.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_grp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gzip.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hash.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hashlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_heapq.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hmac.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hotshot.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_htmllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_htmlparser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_httplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_httpservers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imageop.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imaplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imgfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_import.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_importhooks.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_importlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_index.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_inspect.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_int.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_int_literal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_io.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ioctl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_isinstance.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_iter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_iterlen.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_itertools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_json.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_kqueue.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_largefile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_lib2to3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_linecache.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_linuxaudiodev.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_list.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_locale.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_logging.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_long.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_long_future.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_longexp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macos.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macostools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macpath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mailbox.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_marshal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_math.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_md5.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_memoryio.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_memoryview.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mhlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mimetools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mimetypes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_minidom.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mmap.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_module.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_modulefinder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_msilib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multibytecodec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multibytecodec_support.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multifile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multiprocessing.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mutants.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mutex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_netrc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_new.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_nis.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_normalization.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ntpath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_old_mailbox.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_opcodes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_openpty.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_operator.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_optparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_os.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ossaudiodev.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_parser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pdb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_peepholer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep247.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep263.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep277.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep292.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep352.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pickle.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pickletools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pipes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkg.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkgimport.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkgutil.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_platform.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_plistlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_poll.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_popen.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_popen2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_poplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_posix.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_posixpath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pow.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pprint.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_print.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_profile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_property.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pstats.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pty.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pwd.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_py3kwarn.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pyclbr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pydoc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pyexpat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_queue.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_quopri.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_random.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_re.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_readline.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_repr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_resource.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_rfc822.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_richcmp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_rlcompleter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_robotparser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_runpy.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sax.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_scope.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_scriptpackages.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_select.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_set.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_setcomps.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sets.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sgmllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sha.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shelve.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shlex.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shutil.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_signal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_site.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_slice.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_smtplib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_smtpnet.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_socket.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_socketserver.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_softspace.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sort.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sqlite.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ssl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_startfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_str.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strftime.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_string.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_stringprep.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strop.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strptime.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strtod.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_struct.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_structmembers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_structseq.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_subprocess.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sunaudiodev.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sundry.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_support.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_symtable.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_syntax.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys_setprofile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys_settrace.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sysconfig.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tarfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tcl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_telnetlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tempfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_textwrap.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_thread.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threaded_import.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threadedtempfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threading.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threading_local.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threadsignals.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_time.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_timeout.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tk.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tokenize.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_trace.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_traceback.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_transformer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ttk_guionly.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ttk_textonly.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tuple.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_typechecks.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_types.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ucn.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unary.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_undocumented_details.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicode.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicode_file.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicodedata.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unittest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_univnewlines.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_univnewlines2k.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unpack.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2_localnet.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2net.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllibnet.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urlparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userdict.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userlist.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userstring.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_uu.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_uuid.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wait3.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wait4.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_warnings.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wave.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_weakref.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_weakset.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_whichdb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_winreg.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_winsound.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_with.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wsgiref.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xdrlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xml_etree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xml_etree_c.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xmllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xmlrpc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xpickle.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xrange.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipfile64.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipimport.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipimport_support.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/testall.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/testcodec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/testimg.uue
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/testimgr.uue
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/testrgb.uue
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/testtar.tar
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/tf_inherit_check.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/threaded_import_hangers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/time_hashlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/tokenize_tests.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/tracedmodules/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/tracedmodules/testmod.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/warning_tests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/win_console_handler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/wrongcert.pem
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/simple-ns.xml
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/simple.xml
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/test.xml
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/test.xml.out
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltests.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/zipdir.zip
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/textwrap.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/this.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/timeit.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/toaiff.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/token.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/tokenize.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/trace.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/traceback.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/tty.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/types.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/__main__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/case.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/loader.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/main.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/result.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/runner.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/signals.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/suite.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/dummy.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/support.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_assertions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_break.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_case.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_discovery.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_functiontestcase.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_loader.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_program.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_result.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_runner.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_setups.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_skipping.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_suite.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/urllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/urllib2.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/urlparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/user.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/uu.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/uuid.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/warnings.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wave.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/weakref.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/webbrowser.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/whichdb.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref.egg-info
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/handlers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/headers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/simple_server.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/validate.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xdrlib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/NodeFilter.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/domreg.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/expatbuilder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/minicompat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/minidom.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/pulldom.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/xmlbuilder.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementInclude.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementPath.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementTree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/cElementTree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/parsers/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/parsers/expat.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/_exceptions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/expatreader.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/handler.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/saxutils.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/xmlreader.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xmllib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/xmlrpclib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/zipfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_bisectmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_codecsmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_collectionsmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_csv.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_elementtree.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_functoolsmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_hashopenssl.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_heapqmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_hotshot.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/_iomodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/_iomodule.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/bufferedio.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/bytesio.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/fileio.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/iobase.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/stringio.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_io/textio.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_json.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_localemodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_lsprof.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_math.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_math.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_randommodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cache.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cache.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/connection.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/connection.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cursor.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cursor.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/microprotocols.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/microprotocols.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/module.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/module.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/prepare_protocol.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/prepare_protocol.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/row.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/row.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/sqlitecompat.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/statement.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/statement.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/util.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/util.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_sre.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_ssl.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_struct.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_testcapimodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/_weakref.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/addrinfo.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/arraymodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/binascii.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/bz2module.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cPickle.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cStringIO.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_cn.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_hk.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_iso2022.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_jp.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_kr.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_tw.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/alg_jisx0201.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/cjkcodecs.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/emu_jisx0213_2000.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_cn.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_hk.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_jisx0213_pair.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_jp.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_kr.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_tw.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/multibytecodec.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/multibytecodec.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cmathmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/cryptmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/datetimemodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/errnomodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/COPYING
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/amigaconfig.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/ascii.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/asciitab.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat_config.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat_external.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/iasciitab.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/internal.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/latin1tab.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/macconfig.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/nametab.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/pyexpatns.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/utf8tab.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/winconfig.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlparse.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlrole.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlrole.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_impl.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_impl.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_ns.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/fcntlmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/flmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/fmmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/fpectlmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/fpetestmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/future_builtins.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/gc_weakref.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/gcmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/getaddrinfo.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/getbuildinfo.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/getnameinfo.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/getpath.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/imageop.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/itertoolsmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/main.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/mathmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/md5.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/md5.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/md5module.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/operator.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/parsermodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/posixmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/puremodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/pwdmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/pyexpat.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/python.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/readline.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/resource.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/rotatingtree.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/rotatingtree.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/selectmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/sha256module.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/sha512module.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/shamodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/signalmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/socketmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/socketmodule.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/sre.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/sre_constants.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/stropmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/symtablemodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/testcapi_long.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/threadmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/timemodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/timing.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/timingmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/unicodedata.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/unicodedata_db.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/unicodename_db.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/xxmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/xxsubtype.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/yuv.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/yuvconvert.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zipimport.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/ChangeLog
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/FAQ
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/INDEX
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/Makefile
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/Makefile.in
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/adler32.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/algorithm.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/compress.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/configure
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/crc32.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/crc32.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/deflate.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/deflate.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/example.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/gzio.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/infback.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffast.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffast.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffixed.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inflate.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inflate.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inftrees.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inftrees.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/make_vms.com
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/minigzip.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/trees.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/trees.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/uncompr.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zconf.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zconf.in.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zlib.3
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zlib.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zutil.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zutil.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Modules/zlibmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/abstract.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/boolobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/bufferobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/bytearrayobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/bytes_methods.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/capsule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/cellobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/classobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/cobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/codeobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/complexobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/descrobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/dictnotes.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/dictobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/enumobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/exceptions.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/fileobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/floatobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/frameobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/funcobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/genobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/intobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/iterobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/listobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/listsort.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/lnotab_notes.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/longobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/memoryobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/methodobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/moduleobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/object.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/obmalloc.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/rangeobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/setobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/sliceobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/README.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/count.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/ctype.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/fastsearch.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/find.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/formatter.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/localeutil.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/partition.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/split.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/string_format.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/stringdefs.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/transmogrify.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/unicodedefs.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/stringobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/structseq.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/tupleobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/typeobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/unicodectype.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/unicodeobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/unicodetype_db.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Objects/weakrefobject.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/Python.asdl
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/acceler.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/asdl.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/asdl_c.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/bitset.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/firstsets.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/grammar.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/grammar1.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/intrcheck.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/listnode.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/metagrammar.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/myreadline.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/node.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/parser.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/parser.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/parsetok.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/pgen.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/pgenmain.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/printgrammar.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/spark.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer_pgen.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/Python-ast.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/_warnings.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/asdl.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/ast.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/atof.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/bltinmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/ceval.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/codecs.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/compile.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dtoa.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dup2.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_aix.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_atheos.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_beos.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_dl.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_hpux.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_next.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_os2.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_shlib.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_stub.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/dynload_win.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/errors.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/formatter_string.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/formatter_unicode.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/frozen.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/frozenmain.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/future.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/getargs.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/getcompiler.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/getcopyright.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/getcwd.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/getopt.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/getplatform.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/getversion.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/graminit.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/import.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/importdl.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/importdl.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/mactoolboxglue.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/marshal.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/modsupport.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/mysnprintf.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/mystrtoul.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/peephole.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pyarena.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pyctype.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pyfpe.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pymath.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pystate.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pystrcmp.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pystrtod.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/pythonrun.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/sigcheck.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/strdup.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/strtod.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/structmember.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/symtable.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/sysmodule.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_atheos.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_beos.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_cthread.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_foobar.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_lwp.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_nt.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_os2.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_pth.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_pthread.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_sgi.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_solaris.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/thread_wince.h
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Python/traceback.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgen.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenBuffer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenGenerator.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenGeneratorGroup.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenHeapBuffer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenModule.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenObjectDefinition.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenOutput.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenStackBuffer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenStringBuffer.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenType.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenVariable.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/macsupport.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/scantools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/README.tcltk-AMD64
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/build-amd64.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/build.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/buildmsi.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/clean-amd64.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/clean.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external-amd64.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external-common.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/test-amd64.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/test.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/ccbench/ccbench.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/ACKS
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/ast.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/astgen.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/compile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/demo.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/dumppyc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/regrtest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/stacktest.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqconf.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqcust.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqw.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqwiz.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/move-faqwiz.sh
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/README.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/TODO.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/example.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/bases.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/function.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/member.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/slots.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/struct.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/structparse.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/template.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/util.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/bkfile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/checkextensions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/checkextensions_win32.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/extensions_win32.ini
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/freeze.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/hello.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makeconfig.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makefreeze.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makemakefile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/parsesetup.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/win32.html
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/winmakemakefile.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/gdb/libpython.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/makelocalealias.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/msgfmt.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/pygettext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/iobench/iobench.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/README.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/crtlicense.txt
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msi.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msilib.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msisupport.c
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msisupport.mak
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/schema.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/sequence.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/uisample.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/msi/uuids.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Arithmetic.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Calls.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/CommandLine.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Constructs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Dict.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Exceptions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Imports.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Instances.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/LICENSE
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Lists.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Lookups.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/NewInstances.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Numbers.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Setup.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Strings.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Tuples.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Unicode.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/With.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/clockres.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/package/__init__.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/package/submodule.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/pybench.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/systimes.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/2to3
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/analyze_dxp.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/byext.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/byteyears.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/checkappend.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/checkpyc.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/classfix.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/cleanfuture.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/combinerefs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/copytime.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/crlf.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/cvsfiles.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/db2pickle.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/diff.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/dutree.doc
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/dutree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/eptags.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/find_recursionlimit.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/finddiv.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/findlinksto.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/findnocoding.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixcid.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixdiv.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixheader.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixnotice.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixps.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ftpmirror.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/google.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/gprof2html.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/h2py.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/hotshotmain.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/idle
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ifdef.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/lfcr.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/linktree.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/lll.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/logmerge.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/mailerdaemon.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/md5sum.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/methfix.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/mkreal.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ndiff.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/nm2def.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/objgraph.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/parseentities.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/patchcheck.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pathfix.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pdeps.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pickle2db.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pindent.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ptags.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pydoc
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pydocgui.pyw
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pysource.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/redemo.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/reindent-rst.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/reindent.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/rgrep.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/serve.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/setup.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/suff.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/svneol.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/texcheck.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/texi2html.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/treesync.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/untabify.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/which.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/win_add2path.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/xxci.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/ssl/get-remote-certificate.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/Makefile
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/comparecodecs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/gencjkcodecs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/gencodec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/genwincodec.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/genwincodecs.bat
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/listcodecs.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/makeunicodedata.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/mkstringprep.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/CP1140.TXT
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/KOI8-U.TXT
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/TIS-620.TXT
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/_checkversion.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/checkversions.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/pyversioncheck.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/tktools.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wcgui.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wcmac.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/webchecker.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/websucker.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wsgui.py
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/world/README
 delete mode 100644 AppPkg/Applications/Python/Python-2.7.2/Tools/world/world
 delete mode 100644 AppPkg/Applications/Python/PythonCore.inf
 delete mode 100644 AppPkg/Applications/Python/PythonReadMe.txt
 delete mode 100644 AppPkg/Applications/Python/X64/pyconfig.h

diff --git a/AppPkg/AppPkg.dsc b/AppPkg/AppPkg.dsc
index 5938789..eb02539 100644
--- a/AppPkg/AppPkg.dsc
+++ b/AppPkg/AppPkg.dsc
@@ -7,7 +7,7 @@
 #   for important information about configuring this package for your
 #   environment.
 #
-#   Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
+#   Copyright (c) 2010 - 2021, Intel Corporation. All rights reserved.<BR>
 #   SPDX-License-Identifier: BSD-2-Clause-Patent
 ##
 
@@ -120,9 +120,6 @@
       gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80400040
   }
 
-#### Un-comment the following line to build Python 2.7.2.
-#  AppPkg/Applications/Python/PythonCore.inf
-
 #### Un-comment the following line to build Python 2.7.10.
 # AppPkg/Applications/Python/Python-2.7.10/Python2710.inf
 
diff --git a/AppPkg/Applications/Python/Efi/config.c b/AppPkg/Applications/Python/Efi/config.c
deleted file mode 100644
index 5ca95e8..0000000
--- a/AppPkg/Applications/Python/Efi/config.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/** @file
-    Python Module configuration.
-
-    Copyright (c) 2011-2012, Intel Corporation. All rights reserved.<BR>
-    SPDX-License-Identifier: BSD-2-Clause-Patent
-**/
-
-/* This file contains the table of built-in modules.
-   See init_builtin() in import.c. */
-
-#include "Python.h"
-
-extern void initarray(void);
-extern void init_ast(void);
-extern void initbinascii(void);
-extern void init_bisect(void);
-extern void initcmath(void);
-extern void init_codecs(void);
-extern void init_collections(void);
-extern void initcPickle(void);
-extern void initcStringIO(void);
-extern void init_csv(void);
-extern void init_ctypes(void);
-extern void initdatetime(void);
-extern void initedk2(void);
-extern void initerrno(void);
-extern void init_functools(void);
-extern void initfuture_builtins(void);
-extern void initgc(void);
-extern void init_heapq(void);
-extern void init_hotshot(void);
-extern void initimp(void);
-extern void init_io(void);
-extern void inititertools(void);
-extern void init_json(void);
-extern void init_lsprof(void);
-extern void initmath(void);
-extern void init_md5(void);
-extern void initmmap(void);
-extern void initoperator(void);
-extern void initparser(void);
-extern void initpyexpat(void);
-extern void init_random(void);
-extern void initselect(void);
-extern void init_sha(void);
-extern void init_sha256(void);
-extern void init_sha512(void);
-extern void initsignal(void);
-extern void init_socket(void);
-extern void init_sre(void);
-extern void initstrop(void);
-extern void init_struct(void);
-extern void init_subprocess(void);
-extern void init_symtable(void);
-extern void initthread(void);
-extern void inittime(void);
-extern void initunicodedata(void);
-extern void init_weakref(void);
-extern void init_winreg(void);
-extern void initxxsubtype(void);
-extern void initzipimport(void);
-extern void initzlib(void);
-
-extern void PyMarshal_Init(void);
-extern void _PyWarnings_Init(void);
-
-extern void init_multibytecodec(void);
-extern void init_codecs_cn(void);
-extern void init_codecs_hk(void);
-extern void init_codecs_iso2022(void);
-extern void init_codecs_jp(void);
-extern void init_codecs_kr(void);
-extern void init_codecs_tw(void);
-
-struct _inittab _PyImport_Inittab[] = {
-
-    //{"_ast", init_ast},
-    //{"_bisect", init_bisect},               /* A fast version of bisect.py */
-    //{"_csv", init_csv},
-    //{"_heapq", init_heapq},                 /* A fast version of heapq.py */
-    //{"_io", init_io},
-    //{"_json", init_json},
-    //{"_md5", init_md5},
-    //{"_sha", init_sha},
-    //{"_sha256", init_sha256},
-    //{"_sha512", init_sha512},
-    //{"_socket", init_socket},
-    //{"_symtable", init_symtable},
-
-    //{"array", initarray},
-    //{"cmath", initcmath},
-    //{"cPickle", initcPickle},
-    //{"datetime", initdatetime},
-    //{"future_builtins", initfuture_builtins},
-    //{"parser", initparser},
-    //{"pyexpat", initpyexpat},
-    //{"select", initselect},
-    //{"signal", initsignal},
-    //{"strop", initstrop},                   /* redefines some string operations that are 100-1000 times faster */
-    //{"unicodedata", initunicodedata},
-    //{"xxsubtype", initxxsubtype},
-    //{"zipimport", initzipimport},
-    //{"zlib", initzlib},
-
-    /* CJK codecs */
-    //{"_multibytecodec", init_multibytecodec},
-    //{"_codecs_cn", init_codecs_cn},
-    //{"_codecs_hk", init_codecs_hk},
-    //{"_codecs_iso2022", init_codecs_iso2022},
-    //{"_codecs_jp", init_codecs_jp},
-    //{"_codecs_kr", init_codecs_kr},
-    //{"_codecs_tw", init_codecs_tw},
-
-#ifdef WITH_THREAD
-    {"thread", initthread},
-#endif
-
-    /* These modules are required for the full built-in help() facility provided by pydoc. */
-    {"_codecs", init_codecs},
-    {"_collections", init_collections},
-    {"_functools", init_functools},
-    {"_random", init_random},
-    {"_sre", init_sre},
-    {"_struct", init_struct},                   /* Required by the logging package. */
-    {"_weakref", init_weakref},
-    {"binascii", initbinascii},
-    {"cStringIO", initcStringIO},               /* Required by several modules, such as logging. */
-    {"gc", initgc},
-    {"itertools", inititertools},
-    {"math", initmath},
-    {"operator", initoperator},
-    {"time", inittime},
-
-    /* These four modules should always be built in. */
-    {"edk2", initedk2},
-    {"errno", initerrno},
-    {"imp", initimp},                   /* We get this for free from Python/import.c  */
-    {"marshal", PyMarshal_Init},        /* We get this for free from Python/marshal.c */
-
-    /* These entries are here for sys.builtin_module_names */
-    {"__main__", NULL},
-    {"__builtin__", NULL},
-    {"sys", NULL},
-    {"exceptions", NULL},
-    {"_warnings", _PyWarnings_Init},
-
-    /* Sentinel */
-    {0, 0}
-};
diff --git a/AppPkg/Applications/Python/Efi/edk2module.c b/AppPkg/Applications/Python/Efi/edk2module.c
deleted file mode 100644
index 0f1c7fe..0000000
--- a/AppPkg/Applications/Python/Efi/edk2module.c
+++ /dev/null
@@ -1,7414 +0,0 @@
-/** @file
-    OS-specific module implementation for EDK II and UEFI.
-    Derived from posixmodule.c in Python 2.7.2.
-
-    Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
-    SPDX-License-Identifier: BSD-2-Clause-Patent
-**/
-#define PY_SSIZE_T_CLEAN
-
-#include "Python.h"
-#include "structseq.h"
-
-#include  <stdio.h>
-#include  <stdlib.h>
-#include  <wchar.h>
-#include  <sys/syslimits.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyDoc_STRVAR(edk2__doc__,
-             "This module provides access to UEFI firmware functionality that is\n\
-             standardized by the C Standard and the POSIX standard (a thinly\n\
-             disguised Unix interface).  Refer to the library manual and\n\
-             corresponding UEFI Specification entries for more information on calls.");
-
-#ifndef Py_USING_UNICODE
-  /* This is used in signatures of functions. */
-  #define Py_UNICODE void
-#endif
-
-#ifdef HAVE_SYS_TYPES_H
-  #include <sys/types.h>
-#endif /* HAVE_SYS_TYPES_H */
-
-#ifdef HAVE_SYS_STAT_H
-  #include <sys/stat.h>
-#endif /* HAVE_SYS_STAT_H */
-
-#ifdef HAVE_SYS_WAIT_H
-  #include <sys/wait.h>           /* For WNOHANG */
-#endif
-
-#ifdef HAVE_SIGNAL_H
-  #include <signal.h>
-#endif
-
-#ifdef HAVE_FCNTL_H
-  #include <fcntl.h>
-#endif /* HAVE_FCNTL_H */
-
-#ifdef HAVE_GRP_H
-  #include <grp.h>
-#endif
-
-#ifdef HAVE_SYSEXITS_H
-  #include <sysexits.h>
-#endif /* HAVE_SYSEXITS_H */
-
-#ifdef HAVE_SYS_LOADAVG_H
-  #include <sys/loadavg.h>
-#endif
-
-#ifdef HAVE_UTIME_H
-  #include <utime.h>
-#endif /* HAVE_UTIME_H */
-
-#ifdef HAVE_SYS_UTIME_H
-  #include <sys/utime.h>
-  #define HAVE_UTIME_H /* pretend we do for the rest of this file */
-#endif /* HAVE_SYS_UTIME_H */
-
-#ifdef HAVE_SYS_TIMES_H
-  #include <sys/times.h>
-#endif /* HAVE_SYS_TIMES_H */
-
-#ifdef HAVE_SYS_PARAM_H
-  #include <sys/param.h>
-#endif /* HAVE_SYS_PARAM_H */
-
-#ifdef HAVE_SYS_UTSNAME_H
-  #include <sys/utsname.h>
-#endif /* HAVE_SYS_UTSNAME_H */
-
-#ifdef HAVE_DIRENT_H
-  #include <dirent.h>
-  #define NAMLEN(dirent) wcslen((dirent)->FileName)
-#else
-  #define dirent direct
-  #define NAMLEN(dirent) (dirent)->d_namlen
-  #ifdef HAVE_SYS_NDIR_H
-    #include <sys/ndir.h>
-  #endif
-  #ifdef HAVE_SYS_DIR_H
-    #include <sys/dir.h>
-  #endif
-  #ifdef HAVE_NDIR_H
-    #include <ndir.h>
-  #endif
-#endif
-
-#ifndef MAXPATHLEN
-  #if defined(PATH_MAX) && PATH_MAX > 1024
-    #define MAXPATHLEN PATH_MAX
-  #else
-    #define MAXPATHLEN 1024
-  #endif
-#endif /* MAXPATHLEN */
-
-#define WAIT_TYPE int
-#define WAIT_STATUS_INT(s) (s)
-
-/* Issue #1983: pid_t can be longer than a C long on some systems */
-#if !defined(SIZEOF_PID_T) || SIZEOF_PID_T == SIZEOF_INT
-  #define PARSE_PID "i"
-  #define PyLong_FromPid PyInt_FromLong
-  #define PyLong_AsPid PyInt_AsLong
-#elif SIZEOF_PID_T == SIZEOF_LONG
-  #define PARSE_PID "l"
-  #define PyLong_FromPid PyInt_FromLong
-  #define PyLong_AsPid PyInt_AsLong
-#elif defined(SIZEOF_LONG_LONG) && SIZEOF_PID_T == SIZEOF_LONG_LONG
-  #define PARSE_PID "L"
-  #define PyLong_FromPid PyLong_FromLongLong
-  #define PyLong_AsPid PyInt_AsLongLong
-#else
-  #error "sizeof(pid_t) is neither sizeof(int), sizeof(long) or sizeof(long long)"
-#endif /* SIZEOF_PID_T */
-
-/* Don't use the "_r" form if we don't need it (also, won't have a
-   prototype for it, at least on Solaris -- maybe others as well?). */
-#if defined(HAVE_CTERMID_R) && defined(WITH_THREAD)
-  #define USE_CTERMID_R
-#endif
-
-#if defined(HAVE_TMPNAM_R) && defined(WITH_THREAD)
-  #define USE_TMPNAM_R
-#endif
-
-/* choose the appropriate stat and fstat functions and return structs */
-#undef STAT
-#undef FSTAT
-#undef STRUCT_STAT
-#define STAT stat
-#define FSTAT fstat
-#define STRUCT_STAT struct stat
-
-/* dummy version. _PyVerify_fd() is already defined in fileobject.h */
-#define _PyVerify_fd_dup2(A, B) (1)
-
-#ifndef UEFI_C_SOURCE
-/* Return a dictionary corresponding to the POSIX environment table */
-extern char **environ;
-
-static PyObject *
-convertenviron(void)
-{
-    PyObject *d;
-    char **e;
-    d = PyDict_New();
-    if (d == NULL)
-        return NULL;
-    if (environ == NULL)
-        return d;
-    /* This part ignores errors */
-    for (e = environ; *e != NULL; e++) {
-        PyObject *k;
-        PyObject *v;
-        char *p = strchr(*e, '=');
-        if (p == NULL)
-            continue;
-        k = PyString_FromStringAndSize(*e, (int)(p-*e));
-        if (k == NULL) {
-            PyErr_Clear();
-            continue;
-        }
-        v = PyString_FromString(p+1);
-        if (v == NULL) {
-            PyErr_Clear();
-            Py_DECREF(k);
-            continue;
-        }
-        if (PyDict_GetItem(d, k) == NULL) {
-            if (PyDict_SetItem(d, k, v) != 0)
-                PyErr_Clear();
-        }
-        Py_DECREF(k);
-        Py_DECREF(v);
-    }
-    return d;
-}
-#endif  /* UEFI_C_SOURCE */
-
-/* Set a POSIX-specific error from errno, and return NULL */
-
-static PyObject *
-posix_error(void)
-{
-    return PyErr_SetFromErrno(PyExc_OSError);
-}
-static PyObject *
-posix_error_with_filename(char* name)
-{
-    return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name);
-}
-
-
-static PyObject *
-posix_error_with_allocated_filename(char* name)
-{
-    PyObject *rc = PyErr_SetFromErrnoWithFilename(PyExc_OSError, name);
-    PyMem_Free(name);
-    return rc;
-}
-
-/* POSIX generic methods */
-
-#ifndef UEFI_C_SOURCE
-  static PyObject *
-  posix_fildes(PyObject *fdobj, int (*func)(int))
-  {
-      int fd;
-      int res;
-      fd = PyObject_AsFileDescriptor(fdobj);
-      if (fd < 0)
-          return NULL;
-      if (!_PyVerify_fd(fd))
-          return posix_error();
-      Py_BEGIN_ALLOW_THREADS
-      res = (*func)(fd);
-      Py_END_ALLOW_THREADS
-      if (res < 0)
-          return posix_error();
-      Py_INCREF(Py_None);
-      return Py_None;
-  }
-#endif  /* UEFI_C_SOURCE */
-
-static PyObject *
-posix_1str(PyObject *args, char *format, int (*func)(const char*))
-{
-    char *path1 = NULL;
-    int res;
-    if (!PyArg_ParseTuple(args, format,
-                          Py_FileSystemDefaultEncoding, &path1))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = (*func)(path1);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path1);
-    PyMem_Free(path1);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-posix_2str(PyObject *args,
-           char *format,
-           int (*func)(const char *, const char *))
-{
-    char *path1 = NULL, *path2 = NULL;
-    int res;
-    if (!PyArg_ParseTuple(args, format,
-                          Py_FileSystemDefaultEncoding, &path1,
-                          Py_FileSystemDefaultEncoding, &path2))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = (*func)(path1, path2);
-    Py_END_ALLOW_THREADS
-    PyMem_Free(path1);
-    PyMem_Free(path2);
-    if (res != 0)
-        /* XXX how to report both path1 and path2??? */
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(stat_result__doc__,
-"stat_result: Result from stat or lstat.\n\n\
-This object may be accessed either as a tuple of\n\
-  (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)\n\
-or via the attributes st_mode, st_ino, st_dev, st_nlink, st_uid, and so on.\n\
-\n\
-Posix/windows: If your platform supports st_blksize, st_blocks, st_rdev,\n\
-or st_flags, they are available as attributes only.\n\
-\n\
-See os.stat for more information.");
-
-static PyStructSequence_Field stat_result_fields[] = {
-    {"st_mode",    "protection bits"},
-    //{"st_ino",     "inode"},
-    //{"st_dev",     "device"},
-    //{"st_nlink",   "number of hard links"},
-    //{"st_uid",     "user ID of owner"},
-    //{"st_gid",     "group ID of owner"},
-    {"st_size",    "total size, in bytes"},
-    /* The NULL is replaced with PyStructSequence_UnnamedField later. */
-    {NULL,   "integer time of last access"},
-    {NULL,   "integer time of last modification"},
-    {NULL,   "integer time of last change"},
-    {"st_atime",   "time of last access"},
-    {"st_mtime",   "time of last modification"},
-    {"st_ctime",   "time of last change"},
-#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
-    {"st_blksize", "blocksize for filesystem I/O"},
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
-    {"st_blocks",  "number of blocks allocated"},
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_RDEV
-    {"st_rdev",    "device type (if inode device)"},
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_FLAGS
-    {"st_flags",   "user defined flags for file"},
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_GEN
-    {"st_gen",    "generation number"},
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME
-    {"st_birthtime",   "time of creation"},
-#endif
-    {0}
-};
-
-#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
-#define ST_BLKSIZE_IDX 8
-#else
-#define ST_BLKSIZE_IDX 12
-#endif
-
-#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
-#define ST_BLOCKS_IDX (ST_BLKSIZE_IDX+1)
-#else
-#define ST_BLOCKS_IDX ST_BLKSIZE_IDX
-#endif
-
-#ifdef HAVE_STRUCT_STAT_ST_RDEV
-#define ST_RDEV_IDX (ST_BLOCKS_IDX+1)
-#else
-#define ST_RDEV_IDX ST_BLOCKS_IDX
-#endif
-
-#ifdef HAVE_STRUCT_STAT_ST_FLAGS
-#define ST_FLAGS_IDX (ST_RDEV_IDX+1)
-#else
-#define ST_FLAGS_IDX ST_RDEV_IDX
-#endif
-
-#ifdef HAVE_STRUCT_STAT_ST_GEN
-#define ST_GEN_IDX (ST_FLAGS_IDX+1)
-#else
-#define ST_GEN_IDX ST_FLAGS_IDX
-#endif
-
-#ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME
-#define ST_BIRTHTIME_IDX (ST_GEN_IDX+1)
-#else
-#define ST_BIRTHTIME_IDX ST_GEN_IDX
-#endif
-
-static PyStructSequence_Desc stat_result_desc = {
-    "stat_result", /* name */
-    stat_result__doc__, /* doc */
-    stat_result_fields,
-    10
-};
-
-#ifndef UEFI_C_SOURCE   /* Not in UEFI */
-PyDoc_STRVAR(statvfs_result__doc__,
-"statvfs_result: Result from statvfs or fstatvfs.\n\n\
-This object may be accessed either as a tuple of\n\
-  (bsize, frsize, blocks, bfree, bavail, files, ffree, favail, flag, namemax),\n\
-or via the attributes f_bsize, f_frsize, f_blocks, f_bfree, and so on.\n\
-\n\
-See os.statvfs for more information.");
-
-static PyStructSequence_Field statvfs_result_fields[] = {
-    {"f_bsize",  },
-    {"f_frsize", },
-    {"f_blocks", },
-    {"f_bfree",  },
-    {"f_bavail", },
-    {"f_files",  },
-    {"f_ffree",  },
-    {"f_favail", },
-    {"f_flag",   },
-    {"f_namemax",},
-    {0}
-};
-
-static PyStructSequence_Desc statvfs_result_desc = {
-    "statvfs_result", /* name */
-    statvfs_result__doc__, /* doc */
-    statvfs_result_fields,
-    10
-};
-
-static PyTypeObject StatVFSResultType;
-#endif
-
-static int initialized;
-static PyTypeObject StatResultType;
-static newfunc structseq_new;
-
-static PyObject *
-statresult_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyStructSequence *result;
-    int i;
-
-    result = (PyStructSequence*)structseq_new(type, args, kwds);
-    if (!result)
-        return NULL;
-    /* If we have been initialized from a tuple,
-       st_?time might be set to None. Initialize it
-       from the int slots.  */
-    for (i = 7; i <= 9; i++) {
-        if (result->ob_item[i+3] == Py_None) {
-            Py_DECREF(Py_None);
-            Py_INCREF(result->ob_item[i]);
-            result->ob_item[i+3] = result->ob_item[i];
-        }
-    }
-    return (PyObject*)result;
-}
-
-
-
-/* If true, st_?time is float. */
-#if defined(UEFI_C_SOURCE)
-  static int _stat_float_times = 0;
-#else
-  static int _stat_float_times = 1;
-
-PyDoc_STRVAR(stat_float_times__doc__,
-"stat_float_times([newval]) -> oldval\n\n\
-Determine whether os.[lf]stat represents time stamps as float objects.\n\
-If newval is True, future calls to stat() return floats, if it is False,\n\
-future calls return ints. \n\
-If newval is omitted, return the current setting.\n");
-
-static PyObject*
-stat_float_times(PyObject* self, PyObject *args)
-{
-    int newval = -1;
-
-    if (!PyArg_ParseTuple(args, "|i:stat_float_times", &newval))
-        return NULL;
-    if (newval == -1)
-        /* Return old value */
-        return PyBool_FromLong(_stat_float_times);
-    _stat_float_times = newval;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif  /* UEFI_C_SOURCE */
-
-static void
-fill_time(PyObject *v, int index, time_t sec, unsigned long nsec)
-{
-    PyObject *fval,*ival;
-#if SIZEOF_TIME_T > SIZEOF_LONG
-    ival = PyLong_FromLongLong((PY_LONG_LONG)sec);
-#else
-    ival = PyInt_FromLong((long)sec);
-#endif
-    if (!ival)
-        return;
-    if (_stat_float_times) {
-        fval = PyFloat_FromDouble(sec + 1e-9*nsec);
-    } else {
-        fval = ival;
-        Py_INCREF(fval);
-    }
-    PyStructSequence_SET_ITEM(v, index, ival);
-    PyStructSequence_SET_ITEM(v, index+3, fval);
-}
-
-/* pack a system stat C structure into the Python stat tuple
-   (used by posix_stat() and posix_fstat()) */
-static PyObject*
-_pystat_fromstructstat(STRUCT_STAT *st)
-{
-    unsigned long ansec, mnsec, cnsec;
-    PyObject *v = PyStructSequence_New(&StatResultType);
-    if (v == NULL)
-        return NULL;
-
-    PyStructSequence_SET_ITEM(v, 0, PyInt_FromLong((long)st->st_mode));
-    PyStructSequence_SET_ITEM(v, 1,
-                              PyLong_FromLongLong((PY_LONG_LONG)st->st_size));
-
-    ansec = mnsec = cnsec = 0;
-    /* The index used by fill_time is the index of the integer time.
-       fill_time will add 3 to the index to get the floating time index.
-    */
-    fill_time(v, 2, st->st_atime, ansec);
-    fill_time(v, 3, st->st_mtime, mnsec);
-    fill_time(v, 4, st->st_mtime, cnsec);
-
-#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
-    PyStructSequence_SET_ITEM(v, ST_BLKSIZE_IDX,
-                              PyInt_FromLong((long)st->st_blksize));
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
-    PyStructSequence_SET_ITEM(v, ST_BLOCKS_IDX,
-                              PyInt_FromLong((long)st->st_blocks));
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_RDEV
-    PyStructSequence_SET_ITEM(v, ST_RDEV_IDX,
-                              PyInt_FromLong((long)st->st_rdev));
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_GEN
-    PyStructSequence_SET_ITEM(v, ST_GEN_IDX,
-                              PyInt_FromLong((long)st->st_gen));
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME
-    {
-      PyObject *val;
-      unsigned long bsec,bnsec;
-      bsec = (long)st->st_birthtime;
-#ifdef HAVE_STAT_TV_NSEC2
-      bnsec = st->st_birthtimespec.tv_nsec;
-#else
-      bnsec = 0;
-#endif
-      if (_stat_float_times) {
-        val = PyFloat_FromDouble(bsec + 1e-9*bnsec);
-      } else {
-        val = PyInt_FromLong((long)bsec);
-      }
-      PyStructSequence_SET_ITEM(v, ST_BIRTHTIME_IDX,
-                                val);
-    }
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_FLAGS
-    PyStructSequence_SET_ITEM(v, ST_FLAGS_IDX,
-                              PyInt_FromLong((long)st->st_flags));
-#endif
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(v);
-        return NULL;
-    }
-
-    return v;
-}
-
-static PyObject *
-posix_do_stat(PyObject *self, PyObject *args,
-              char *format,
-              int (*statfunc)(const char *, STRUCT_STAT *),
-              char *wformat,
-              int (*wstatfunc)(const Py_UNICODE *, STRUCT_STAT *))
-{
-    STRUCT_STAT st;
-    char *path = NULL;          /* pass this to stat; do not free() it */
-    char *pathfree = NULL;  /* this memory must be free'd */
-    int res;
-    PyObject *result;
-
-    if (!PyArg_ParseTuple(args, format,
-                          Py_FileSystemDefaultEncoding, &path))
-        return NULL;
-    pathfree = path;
-
-    Py_BEGIN_ALLOW_THREADS
-    res = (*statfunc)(path, &st);
-    Py_END_ALLOW_THREADS
-
-    if (res != 0) {
-        result = posix_error_with_filename(pathfree);
-    }
-    else
-        result = _pystat_fromstructstat(&st);
-
-    PyMem_Free(pathfree);
-    return result;
-}
-
-/* POSIX methods */
-
-PyDoc_STRVAR(posix_access__doc__,
-"access(path, mode) -> True if granted, False otherwise\n\n\
-Use the real uid/gid to test for access to a path.  Note that most\n\
-operations will use the effective uid/gid, therefore this routine can\n\
-be used in a suid/sgid environment to test if the invoking user has the\n\
-specified access to the path.  The mode argument can be F_OK to test\n\
-existence, or the inclusive-OR of R_OK, W_OK, and X_OK.");
-
-static PyObject *
-posix_access(PyObject *self, PyObject *args)
-{
-    char *path;
-    int mode;
-
-    int res;
-    if (!PyArg_ParseTuple(args, "eti:access",
-                          Py_FileSystemDefaultEncoding, &path, &mode))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = access(path, mode);
-    Py_END_ALLOW_THREADS
-    PyMem_Free(path);
-    return PyBool_FromLong(res == 0);
-}
-
-#ifndef F_OK
-  #define F_OK 0
-#endif
-#ifndef R_OK
-  #define R_OK 4
-#endif
-#ifndef W_OK
-  #define W_OK 2
-#endif
-#ifndef X_OK
-  #define X_OK 1
-#endif
-
-PyDoc_STRVAR(posix_chdir__doc__,
-"chdir(path)\n\n\
-Change the current working directory to the specified path.");
-
-static PyObject *
-posix_chdir(PyObject *self, PyObject *args)
-{
-    return posix_1str(args, "et:chdir", chdir);
-}
-
-PyDoc_STRVAR(posix_chmod__doc__,
-"chmod(path, mode)\n\n\
-Change the access permissions of a file.");
-
-static PyObject *
-posix_chmod(PyObject *self, PyObject *args)
-{
-    char *path = NULL;
-    int i;
-    int res;
-    if (!PyArg_ParseTuple(args, "eti:chmod", Py_FileSystemDefaultEncoding,
-                          &path, &i))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = chmod(path, i);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path);
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-#ifdef HAVE_FCHMOD
-PyDoc_STRVAR(posix_fchmod__doc__,
-"fchmod(fd, mode)\n\n\
-Change the access permissions of the file given by file\n\
-descriptor fd.");
-
-static PyObject *
-posix_fchmod(PyObject *self, PyObject *args)
-{
-    int fd, mode, res;
-    if (!PyArg_ParseTuple(args, "ii:fchmod", &fd, &mode))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = fchmod(fd, mode);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_RETURN_NONE;
-}
-#endif /* HAVE_FCHMOD */
-
-#ifdef HAVE_LCHMOD
-PyDoc_STRVAR(posix_lchmod__doc__,
-"lchmod(path, mode)\n\n\
-Change the access permissions of a file. If path is a symlink, this\n\
-affects the link itself rather than the target.");
-
-static PyObject *
-posix_lchmod(PyObject *self, PyObject *args)
-{
-    char *path = NULL;
-    int i;
-    int res;
-    if (!PyArg_ParseTuple(args, "eti:lchmod", Py_FileSystemDefaultEncoding,
-                          &path, &i))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = lchmod(path, i);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path);
-    PyMem_Free(path);
-    Py_RETURN_NONE;
-}
-#endif /* HAVE_LCHMOD */
-
-
-#ifdef HAVE_CHFLAGS
-PyDoc_STRVAR(posix_chflags__doc__,
-"chflags(path, flags)\n\n\
-Set file flags.");
-
-static PyObject *
-posix_chflags(PyObject *self, PyObject *args)
-{
-    char *path;
-    unsigned long flags;
-    int res;
-    if (!PyArg_ParseTuple(args, "etk:chflags",
-                          Py_FileSystemDefaultEncoding, &path, &flags))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = chflags(path, flags);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path);
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_CHFLAGS */
-
-#ifdef HAVE_LCHFLAGS
-PyDoc_STRVAR(posix_lchflags__doc__,
-"lchflags(path, flags)\n\n\
-Set file flags.\n\
-This function will not follow symbolic links.");
-
-static PyObject *
-posix_lchflags(PyObject *self, PyObject *args)
-{
-    char *path;
-    unsigned long flags;
-    int res;
-    if (!PyArg_ParseTuple(args, "etk:lchflags",
-                          Py_FileSystemDefaultEncoding, &path, &flags))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = lchflags(path, flags);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path);
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_LCHFLAGS */
-
-#ifdef HAVE_CHROOT
-PyDoc_STRVAR(posix_chroot__doc__,
-"chroot(path)\n\n\
-Change root directory to path.");
-
-static PyObject *
-posix_chroot(PyObject *self, PyObject *args)
-{
-    return posix_1str(args, "et:chroot", chroot);
-}
-#endif
-
-#ifdef HAVE_FSYNC
-PyDoc_STRVAR(posix_fsync__doc__,
-"fsync(fildes)\n\n\
-force write of file with filedescriptor to disk.");
-
-static PyObject *
-posix_fsync(PyObject *self, PyObject *fdobj)
-{
-    return posix_fildes(fdobj, fsync);
-}
-#endif /* HAVE_FSYNC */
-
-#ifdef HAVE_FDATASYNC
-
-#ifdef __hpux
-extern int fdatasync(int); /* On HP-UX, in libc but not in unistd.h */
-#endif
-
-PyDoc_STRVAR(posix_fdatasync__doc__,
-"fdatasync(fildes)\n\n\
-force write of file with filedescriptor to disk.\n\
- does not force update of metadata.");
-
-static PyObject *
-posix_fdatasync(PyObject *self, PyObject *fdobj)
-{
-    return posix_fildes(fdobj, fdatasync);
-}
-#endif /* HAVE_FDATASYNC */
-
-
-#ifdef HAVE_CHOWN
-PyDoc_STRVAR(posix_chown__doc__,
-"chown(path, uid, gid)\n\n\
-Change the owner and group id of path to the numeric uid and gid.");
-
-static PyObject *
-posix_chown(PyObject *self, PyObject *args)
-{
-    char *path = NULL;
-    long uid, gid;
-    int res;
-    if (!PyArg_ParseTuple(args, "etll:chown",
-                          Py_FileSystemDefaultEncoding, &path,
-                          &uid, &gid))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = chown(path, (uid_t) uid, (gid_t) gid);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path);
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_CHOWN */
-
-#ifdef HAVE_FCHOWN
-PyDoc_STRVAR(posix_fchown__doc__,
-"fchown(fd, uid, gid)\n\n\
-Change the owner and group id of the file given by file descriptor\n\
-fd to the numeric uid and gid.");
-
-static PyObject *
-posix_fchown(PyObject *self, PyObject *args)
-{
-    int fd;
-    long uid, gid;
-    int res;
-    if (!PyArg_ParseTuple(args, "ill:chown", &fd, &uid, &gid))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = fchown(fd, (uid_t) uid, (gid_t) gid);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_RETURN_NONE;
-}
-#endif /* HAVE_FCHOWN */
-
-#ifdef HAVE_LCHOWN
-PyDoc_STRVAR(posix_lchown__doc__,
-"lchown(path, uid, gid)\n\n\
-Change the owner and group id of path to the numeric uid and gid.\n\
-This function will not follow symbolic links.");
-
-static PyObject *
-posix_lchown(PyObject *self, PyObject *args)
-{
-    char *path = NULL;
-    long uid, gid;
-    int res;
-    if (!PyArg_ParseTuple(args, "etll:lchown",
-                          Py_FileSystemDefaultEncoding, &path,
-                          &uid, &gid))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = lchown(path, (uid_t) uid, (gid_t) gid);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path);
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_LCHOWN */
-
-
-#ifdef HAVE_GETCWD
-PyDoc_STRVAR(posix_getcwd__doc__,
-"getcwd() -> path\n\n\
-Return a string representing the current working directory.");
-
-static PyObject *
-posix_getcwd(PyObject *self, PyObject *noargs)
-{
-    int bufsize_incr = 1024;
-    int bufsize = 0;
-    char *tmpbuf = NULL;
-    char *res = NULL;
-    PyObject *dynamic_return;
-
-    Py_BEGIN_ALLOW_THREADS
-    do {
-        bufsize = bufsize + bufsize_incr;
-        tmpbuf = malloc(bufsize);
-        if (tmpbuf == NULL) {
-            break;
-        }
-        res = getcwd(tmpbuf, bufsize);
-        if (res == NULL) {
-            free(tmpbuf);
-        }
-    } while ((res == NULL) && (errno == ERANGE));
-    Py_END_ALLOW_THREADS
-
-    if (res == NULL)
-        return posix_error();
-
-    dynamic_return = PyString_FromString(tmpbuf);
-    free(tmpbuf);
-
-    return dynamic_return;
-}
-
-#ifdef Py_USING_UNICODE
-PyDoc_STRVAR(posix_getcwdu__doc__,
-"getcwdu() -> path\n\n\
-Return a unicode string representing the current working directory.");
-
-static PyObject *
-posix_getcwdu(PyObject *self, PyObject *noargs)
-{
-    char buf[1026];
-    char *res;
-
-    Py_BEGIN_ALLOW_THREADS
-    res = getcwd(buf, sizeof buf);
-    Py_END_ALLOW_THREADS
-    if (res == NULL)
-        return posix_error();
-    return PyUnicode_Decode(buf, strlen(buf), Py_FileSystemDefaultEncoding,"strict");
-}
-#endif /* Py_USING_UNICODE */
-#endif /* HAVE_GETCWD */
-
-
-PyDoc_STRVAR(posix_listdir__doc__,
-"listdir(path) -> list_of_strings\n\n\
-Return a list containing the names of the entries in the directory.\n\
-\n\
-    path: path of directory to list\n\
-\n\
-The list is in arbitrary order.  It does not include the special\n\
-entries '.' and '..' even if they are present in the directory.");
-
-static PyObject *
-posix_listdir(PyObject *self, PyObject *args)
-{
-    /* XXX Should redo this putting the (now four) versions of opendir
-       in separate files instead of having them all here... */
-
-    char           *name            = NULL;
-    char           *MBname;
-    PyObject       *d, *v;
-    DIR            *dirp;
-    struct dirent  *ep;
-    int             arg_is_unicode  = 1;
-
-    errno = 0;
-    if (!PyArg_ParseTuple(args, "U:listdir", &v)) {
-        arg_is_unicode = 0;
-        PyErr_Clear();
-    }
-    if (!PyArg_ParseTuple(args, "et:listdir", Py_FileSystemDefaultEncoding, &name))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    dirp = opendir(name);
-    Py_END_ALLOW_THREADS
-    if (dirp == NULL) {
-        return posix_error_with_allocated_filename(name);
-    }
-    if ((d = PyList_New(0)) == NULL) {
-        Py_BEGIN_ALLOW_THREADS
-        closedir(dirp);
-        Py_END_ALLOW_THREADS
-        PyMem_Free(name);
-        return NULL;
-    }
-    if((MBname = malloc(NAME_MAX)) == NULL) {
-      Py_BEGIN_ALLOW_THREADS
-      closedir(dirp);
-      Py_END_ALLOW_THREADS
-      Py_DECREF(d);
-      PyMem_Free(name);
-      return NULL;
-    }
-    for (;;) {
-        errno = 0;
-        Py_BEGIN_ALLOW_THREADS
-        ep = readdir(dirp);
-        Py_END_ALLOW_THREADS
-        if (ep == NULL) {
-            if ((errno == 0) || (errno == EISDIR)) {
-                break;
-            } else {
-                Py_BEGIN_ALLOW_THREADS
-                closedir(dirp);
-                Py_END_ALLOW_THREADS
-                Py_DECREF(d);
-                return posix_error_with_allocated_filename(name);
-            }
-        }
-        if (ep->FileName[0] == L'.' &&
-            (NAMLEN(ep) == 1 ||
-             (ep->FileName[1] == L'.' && NAMLEN(ep) == 2)))
-            continue;
-        if(wcstombs(MBname, ep->FileName, NAME_MAX) == -1) {
-          free(MBname);
-          Py_BEGIN_ALLOW_THREADS
-          closedir(dirp);
-          Py_END_ALLOW_THREADS
-          Py_DECREF(d);
-          PyMem_Free(name);
-          return NULL;
-        }
-        v = PyString_FromStringAndSize(MBname, strlen(MBname));
-        if (v == NULL) {
-            Py_DECREF(d);
-            d = NULL;
-            break;
-        }
-#ifdef Py_USING_UNICODE
-        if (arg_is_unicode) {
-            PyObject *w;
-
-            w = PyUnicode_FromEncodedObject(v,
-                                            Py_FileSystemDefaultEncoding,
-                                            "strict");
-            if (w != NULL) {
-                Py_DECREF(v);
-                v = w;
-            }
-            else {
-                /* fall back to the original byte string, as
-                   discussed in patch #683592 */
-                PyErr_Clear();
-            }
-        }
-#endif
-        if (PyList_Append(d, v) != 0) {
-            Py_DECREF(v);
-            Py_DECREF(d);
-            d = NULL;
-            break;
-        }
-        Py_DECREF(v);
-    }
-    Py_BEGIN_ALLOW_THREADS
-    closedir(dirp);
-    Py_END_ALLOW_THREADS
-    PyMem_Free(name);
-    if(MBname != NULL) {
-      free(MBname);
-    }
-
-    return d;
-
-}  /* end of posix_listdir */
-
-#ifdef MS_WINDOWS
-/* A helper function for abspath on win32 */
-static PyObject *
-posix__getfullpathname(PyObject *self, PyObject *args)
-{
-    /* assume encoded strings won't more than double no of chars */
-    char inbuf[MAX_PATH*2];
-    char *inbufp = inbuf;
-    Py_ssize_t insize = sizeof(inbuf);
-    char outbuf[MAX_PATH*2];
-    char *temp;
-
-    PyUnicodeObject *po;
-    if (PyArg_ParseTuple(args, "U|:_getfullpathname", &po)) {
-        Py_UNICODE *wpath = PyUnicode_AS_UNICODE(po);
-        Py_UNICODE woutbuf[MAX_PATH*2], *woutbufp = woutbuf;
-        Py_UNICODE *wtemp;
-        DWORD result;
-        PyObject *v;
-        result = GetFullPathNameW(wpath,
-                                  sizeof(woutbuf)/sizeof(woutbuf[0]),
-                                  woutbuf, &wtemp);
-        if (result > sizeof(woutbuf)/sizeof(woutbuf[0])) {
-            woutbufp = malloc(result * sizeof(Py_UNICODE));
-            if (!woutbufp)
-                return PyErr_NoMemory();
-            result = GetFullPathNameW(wpath, result, woutbufp, &wtemp);
-        }
-        if (result)
-            v = PyUnicode_FromUnicode(woutbufp, wcslen(woutbufp));
-        else
-            v = win32_error_unicode("GetFullPathNameW", wpath);
-        if (woutbufp != woutbuf)
-            free(woutbufp);
-        return v;
-    }
-    /* Drop the argument parsing error as narrow strings
-       are also valid. */
-    PyErr_Clear();
-
-    if (!PyArg_ParseTuple (args, "et#:_getfullpathname",
-                           Py_FileSystemDefaultEncoding, &inbufp,
-                           &insize))
-        return NULL;
-    if (!GetFullPathName(inbuf, sizeof(outbuf)/sizeof(outbuf[0]),
-                         outbuf, &temp))
-        return win32_error("GetFullPathName", inbuf);
-    if (PyUnicode_Check(PyTuple_GetItem(args, 0))) {
-        return PyUnicode_Decode(outbuf, strlen(outbuf),
-                                Py_FileSystemDefaultEncoding, NULL);
-    }
-    return PyString_FromString(outbuf);
-} /* end of posix__getfullpathname */
-#endif /* MS_WINDOWS */
-
-PyDoc_STRVAR(posix_mkdir__doc__,
-"mkdir(path [, mode=0777])\n\n\
-Create a directory.");
-
-static PyObject *
-posix_mkdir(PyObject *self, PyObject *args)
-{
-    int res;
-    char *path = NULL;
-    int mode = 0777;
-
-    if (!PyArg_ParseTuple(args, "et|i:mkdir",
-                          Py_FileSystemDefaultEncoding, &path, &mode))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = mkdir(path, mode);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path);
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-
-/* sys/resource.h is needed for at least: wait3(), wait4(), broken nice. */
-#if defined(HAVE_SYS_RESOURCE_H)
-#include <sys/resource.h>
-#endif
-
-
-#ifdef HAVE_NICE
-PyDoc_STRVAR(posix_nice__doc__,
-"nice(inc) -> new_priority\n\n\
-Decrease the priority of process by inc and return the new priority.");
-
-static PyObject *
-posix_nice(PyObject *self, PyObject *args)
-{
-    int increment, value;
-
-    if (!PyArg_ParseTuple(args, "i:nice", &increment))
-        return NULL;
-
-    /* There are two flavours of 'nice': one that returns the new
-       priority (as required by almost all standards out there) and the
-       Linux/FreeBSD/BSDI one, which returns '0' on success and advices
-       the use of getpriority() to get the new priority.
-
-       If we are of the nice family that returns the new priority, we
-       need to clear errno before the call, and check if errno is filled
-       before calling posix_error() on a returnvalue of -1, because the
-       -1 may be the actual new priority! */
-
-    errno = 0;
-    value = nice(increment);
-#if defined(HAVE_BROKEN_NICE) && defined(HAVE_GETPRIORITY)
-    if (value == 0)
-        value = getpriority(PRIO_PROCESS, 0);
-#endif
-    if (value == -1 && errno != 0)
-        /* either nice() or getpriority() returned an error */
-        return posix_error();
-    return PyInt_FromLong((long) value);
-}
-#endif /* HAVE_NICE */
-
-PyDoc_STRVAR(posix_rename__doc__,
-"rename(old, new)\n\n\
-Rename a file or directory.");
-
-static PyObject *
-posix_rename(PyObject *self, PyObject *args)
-{
-    return posix_2str(args, "etet:rename", rename);
-}
-
-
-PyDoc_STRVAR(posix_rmdir__doc__,
-"rmdir(path)\n\n\
-Remove a directory.");
-
-static PyObject *
-posix_rmdir(PyObject *self, PyObject *args)
-{
-    return posix_1str(args, "et:rmdir", rmdir);
-}
-
-
-PyDoc_STRVAR(posix_stat__doc__,
-"stat(path) -> stat result\n\n\
-Perform a stat system call on the given path.");
-
-static PyObject *
-posix_stat(PyObject *self, PyObject *args)
-{
-    return posix_do_stat(self, args, "et:stat", STAT, NULL, NULL);
-}
-
-
-#ifdef HAVE_SYSTEM
-PyDoc_STRVAR(posix_system__doc__,
-"system(command) -> exit_status\n\n\
-Execute the command (a string) in a subshell.");
-
-static PyObject *
-posix_system(PyObject *self, PyObject *args)
-{
-    char *command;
-    long sts;
-    if (!PyArg_ParseTuple(args, "s:system", &command))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    sts = system(command);
-    Py_END_ALLOW_THREADS
-    return PyInt_FromLong(sts);
-}
-#endif
-
-
-PyDoc_STRVAR(posix_umask__doc__,
-"umask(new_mask) -> old_mask\n\n\
-Set the current numeric umask and return the previous umask.");
-
-static PyObject *
-posix_umask(PyObject *self, PyObject *args)
-{
-    int i;
-    if (!PyArg_ParseTuple(args, "i:umask", &i))
-        return NULL;
-    i = (int)umask(i);
-    if (i < 0)
-        return posix_error();
-    return PyInt_FromLong((long)i);
-}
-
-
-PyDoc_STRVAR(posix_unlink__doc__,
-"unlink(path)\n\n\
-Remove a file (same as remove(path)).");
-
-PyDoc_STRVAR(posix_remove__doc__,
-"remove(path)\n\n\
-Remove a file (same as unlink(path)).");
-
-static PyObject *
-posix_unlink(PyObject *self, PyObject *args)
-{
-    return posix_1str(args, "et:remove", unlink);
-}
-
-
-static int
-extract_time(PyObject *t, time_t* sec, long* usec)
-{
-    time_t intval;
-    if (PyFloat_Check(t)) {
-        double tval = PyFloat_AsDouble(t);
-        PyObject *intobj = PyNumber_Long(t);
-        if (!intobj)
-            return -1;
-#if SIZEOF_TIME_T > SIZEOF_LONG
-        intval = PyInt_AsUnsignedLongLongMask(intobj);
-#else
-        intval = PyInt_AsLong(intobj);
-#endif
-        Py_DECREF(intobj);
-        if (intval == -1 && PyErr_Occurred())
-            return -1;
-        *sec = intval;
-        *usec = (long)((tval - intval) * 1e6); /* can't exceed 1000000 */
-        if (*usec < 0)
-            /* If rounding gave us a negative number,
-               truncate.  */
-            *usec = 0;
-        return 0;
-    }
-#if SIZEOF_TIME_T > SIZEOF_LONG
-    intval = PyInt_AsUnsignedLongLongMask(t);
-#else
-    intval = PyInt_AsLong(t);
-#endif
-    if (intval == -1 && PyErr_Occurred())
-        return -1;
-    *sec = intval;
-    *usec = 0;
-    return 0;
-}
-
-PyDoc_STRVAR(posix_utime__doc__,
-"utime(path, (atime, mtime))\n\
-utime(path, None)\n\n\
-Set the access and modified time of the file to the given values.  If the\n\
-second form is used, set the access and modified times to the current time.");
-
-static PyObject *
-posix_utime(PyObject *self, PyObject *args)
-{
-    char *path = NULL;
-    time_t atime, mtime;
-    long ausec, musec;
-    int res;
-    PyObject* arg;
-
-#if defined(HAVE_UTIMES)
-    struct timeval buf[2];
-#define ATIME buf[0].tv_sec
-#define MTIME buf[1].tv_sec
-#elif defined(HAVE_UTIME_H)
-/* XXX should define struct utimbuf instead, above */
-    struct utimbuf buf;
-#define ATIME buf.actime
-#define MTIME buf.modtime
-#define UTIME_ARG &buf
-#else /* HAVE_UTIMES */
-    time_t buf[2];
-#define ATIME buf[0]
-#define MTIME buf[1]
-#define UTIME_ARG buf
-#endif /* HAVE_UTIMES */
-
-
-    if (!PyArg_ParseTuple(args, "etO:utime",
-                          Py_FileSystemDefaultEncoding, &path, &arg))
-        return NULL;
-    if (arg == Py_None) {
-        /* optional time values not given */
-        Py_BEGIN_ALLOW_THREADS
-        res = utime(path, NULL);
-        Py_END_ALLOW_THREADS
-    }
-    else if (!PyTuple_Check(arg) || PyTuple_Size(arg) != 2) {
-        PyErr_SetString(PyExc_TypeError,
-                        "utime() arg 2 must be a tuple (atime, mtime)");
-        PyMem_Free(path);
-        return NULL;
-    }
-    else {
-        if (extract_time(PyTuple_GET_ITEM(arg, 0),
-                         &atime, &ausec) == -1) {
-            PyMem_Free(path);
-            return NULL;
-        }
-        if (extract_time(PyTuple_GET_ITEM(arg, 1),
-                         &mtime, &musec) == -1) {
-            PyMem_Free(path);
-            return NULL;
-        }
-        ATIME = atime;
-        MTIME = mtime;
-#ifdef HAVE_UTIMES
-        buf[0].tv_usec = ausec;
-        buf[1].tv_usec = musec;
-        Py_BEGIN_ALLOW_THREADS
-        res = utimes(path, buf);
-        Py_END_ALLOW_THREADS
-#else
-        Py_BEGIN_ALLOW_THREADS
-        res = utime(path, UTIME_ARG);
-        Py_END_ALLOW_THREADS
-#endif /* HAVE_UTIMES */
-    }
-    if (res < 0) {
-        return posix_error_with_allocated_filename(path);
-    }
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-#undef UTIME_ARG
-#undef ATIME
-#undef MTIME
-}
-
-
-/* Process operations */
-
-PyDoc_STRVAR(posix__exit__doc__,
-"_exit(status)\n\n\
-Exit to the system with specified status, without normal exit processing.");
-
-static PyObject *
-posix__exit(PyObject *self, PyObject *args)
-{
-    int sts;
-    if (!PyArg_ParseTuple(args, "i:_exit", &sts))
-        return NULL;
-    _Exit(sts);
-    return NULL; /* Make gcc -Wall happy */
-}
-
-#if defined(HAVE_EXECV) || defined(HAVE_SPAWNV)
-static void
-free_string_array(char **array, Py_ssize_t count)
-{
-    Py_ssize_t i;
-    for (i = 0; i < count; i++)
-        PyMem_Free(array[i]);
-    PyMem_DEL(array);
-}
-#endif
-
-
-#ifdef HAVE_EXECV
-PyDoc_STRVAR(posix_execv__doc__,
-"execv(path, args)\n\n\
-Execute an executable path with arguments, replacing current process.\n\
-\n\
-    path: path of executable file\n\
-    args: tuple or list of strings");
-
-static PyObject *
-posix_execv(PyObject *self, PyObject *args)
-{
-    char *path;
-    PyObject *argv;
-    char **argvlist;
-    Py_ssize_t i, argc;
-    PyObject *(*getitem)(PyObject *, Py_ssize_t);
-
-    /* execv has two arguments: (path, argv), where
-       argv is a list or tuple of strings. */
-
-    if (!PyArg_ParseTuple(args, "etO:execv",
-                          Py_FileSystemDefaultEncoding,
-                          &path, &argv))
-        return NULL;
-    if (PyList_Check(argv)) {
-        argc = PyList_Size(argv);
-        getitem = PyList_GetItem;
-    }
-    else if (PyTuple_Check(argv)) {
-        argc = PyTuple_Size(argv);
-        getitem = PyTuple_GetItem;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError, "execv() arg 2 must be a tuple or list");
-        PyMem_Free(path);
-        return NULL;
-    }
-    if (argc < 1) {
-        PyErr_SetString(PyExc_ValueError, "execv() arg 2 must not be empty");
-        PyMem_Free(path);
-        return NULL;
-    }
-
-    argvlist = PyMem_NEW(char *, argc+1);
-    if (argvlist == NULL) {
-        PyMem_Free(path);
-        return PyErr_NoMemory();
-    }
-    for (i = 0; i < argc; i++) {
-        if (!PyArg_Parse((*getitem)(argv, i), "et",
-                         Py_FileSystemDefaultEncoding,
-                         &argvlist[i])) {
-            free_string_array(argvlist, i);
-            PyErr_SetString(PyExc_TypeError,
-                            "execv() arg 2 must contain only strings");
-            PyMem_Free(path);
-            return NULL;
-
-        }
-    }
-    argvlist[argc] = NULL;
-
-    execv(path, argvlist);
-
-    /* If we get here it's definitely an error */
-
-    free_string_array(argvlist, argc);
-    PyMem_Free(path);
-    return posix_error();
-}
-
-
-PyDoc_STRVAR(posix_execve__doc__,
-"execve(path, args, env)\n\n\
-Execute a path with arguments and environment, replacing current process.\n\
-\n\
-    path: path of executable file\n\
-    args: tuple or list of arguments\n\
-    env: dictionary of strings mapping to strings");
-
-static PyObject *
-posix_execve(PyObject *self, PyObject *args)
-{
-    char *path;
-    PyObject *argv, *env;
-    char **argvlist;
-    char **envlist;
-    PyObject *key, *val, *keys=NULL, *vals=NULL;
-    Py_ssize_t i, pos, argc, envc;
-    PyObject *(*getitem)(PyObject *, Py_ssize_t);
-    Py_ssize_t lastarg = 0;
-
-    /* execve has three arguments: (path, argv, env), where
-       argv is a list or tuple of strings and env is a dictionary
-       like posix.environ. */
-
-    if (!PyArg_ParseTuple(args, "etOO:execve",
-                          Py_FileSystemDefaultEncoding,
-                          &path, &argv, &env))
-        return NULL;
-    if (PyList_Check(argv)) {
-        argc = PyList_Size(argv);
-        getitem = PyList_GetItem;
-    }
-    else if (PyTuple_Check(argv)) {
-        argc = PyTuple_Size(argv);
-        getitem = PyTuple_GetItem;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "execve() arg 2 must be a tuple or list");
-        goto fail_0;
-    }
-    if (!PyMapping_Check(env)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "execve() arg 3 must be a mapping object");
-        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((*getitem)(argv, i),
-                         "et;execve() arg 2 must contain only strings",
-                         Py_FileSystemDefaultEncoding,
-                         &argvlist[i]))
-        {
-            lastarg = i;
-            goto fail_1;
-        }
-    }
-    lastarg = argc;
-    argvlist[argc] = NULL;
-
-    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,
-                        "execve(): 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;execve() arg 3 contains a non-string key",
-                    &k) ||
-            !PyArg_Parse(
-                val,
-                "s;execve() arg 3 contains a non-string value",
-                &v))
-        {
-            goto fail_2;
-        }
-
-#if defined(PYOS_OS2)
-        /* Omit Pseudo-Env Vars that Would Confuse Programs if Passed On */
-        if (stricmp(k, "BEGINLIBPATH") != 0 && stricmp(k, "ENDLIBPATH") != 0) {
-#endif
-        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;
-#if defined(PYOS_OS2)
-        }
-#endif
-    }
-    envlist[envc] = 0;
-
-    execve(path, argvlist, envlist);
-
-    /* If we get here it's definitely an error */
-
-    (void) posix_error();
-
-  fail_2:
-    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:
-    PyMem_Free(path);
-    return NULL;
-}
-#endif /* HAVE_EXECV */
-
-
-#ifdef HAVE_SPAWNV
-PyDoc_STRVAR(posix_spawnv__doc__,
-"spawnv(mode, path, args)\n\n\
-Execute the program 'path' in a new process.\n\
-\n\
-    mode: mode of process creation\n\
-    path: path of executable file\n\
-    args: tuple or list of strings");
-
-static PyObject *
-posix_spawnv(PyObject *self, PyObject *args)
-{
-    char *path;
-    PyObject *argv;
-    char **argvlist;
-    int mode, i;
-    Py_ssize_t argc;
-    Py_intptr_t spawnval;
-    PyObject *(*getitem)(PyObject *, Py_ssize_t);
-
-    /* spawnv has three arguments: (mode, path, argv), where
-       argv is a list or tuple of strings. */
-
-    if (!PyArg_ParseTuple(args, "ietO:spawnv", &mode,
-                          Py_FileSystemDefaultEncoding,
-                          &path, &argv))
-        return NULL;
-    if (PyList_Check(argv)) {
-        argc = PyList_Size(argv);
-        getitem = PyList_GetItem;
-    }
-    else if (PyTuple_Check(argv)) {
-        argc = PyTuple_Size(argv);
-        getitem = PyTuple_GetItem;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "spawnv() arg 2 must be a tuple or list");
-        PyMem_Free(path);
-        return NULL;
-    }
-
-    argvlist = PyMem_NEW(char *, argc+1);
-    if (argvlist == NULL) {
-        PyMem_Free(path);
-        return PyErr_NoMemory();
-    }
-    for (i = 0; i < argc; i++) {
-        if (!PyArg_Parse((*getitem)(argv, i), "et",
-                         Py_FileSystemDefaultEncoding,
-                         &argvlist[i])) {
-            free_string_array(argvlist, i);
-            PyErr_SetString(
-                PyExc_TypeError,
-                "spawnv() arg 2 must contain only strings");
-            PyMem_Free(path);
-            return NULL;
-        }
-    }
-    argvlist[argc] = NULL;
-
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-    Py_BEGIN_ALLOW_THREADS
-    spawnval = spawnv(mode, path, argvlist);
-    Py_END_ALLOW_THREADS
-#else
-    if (mode == _OLD_P_OVERLAY)
-        mode = _P_OVERLAY;
-
-    Py_BEGIN_ALLOW_THREADS
-    spawnval = _spawnv(mode, path, argvlist);
-    Py_END_ALLOW_THREADS
-#endif
-
-    free_string_array(argvlist, argc);
-    PyMem_Free(path);
-
-    if (spawnval == -1)
-        return posix_error();
-    else
-#if SIZEOF_LONG == SIZEOF_VOID_P
-        return Py_BuildValue("l", (long) spawnval);
-#else
-        return Py_BuildValue("L", (PY_LONG_LONG) spawnval);
-#endif
-}
-
-
-PyDoc_STRVAR(posix_spawnve__doc__,
-"spawnve(mode, path, args, env)\n\n\
-Execute the program 'path' in a new process.\n\
-\n\
-    mode: mode of process creation\n\
-    path: path of executable file\n\
-    args: tuple or list of arguments\n\
-    env: dictionary of strings mapping to strings");
-
-static PyObject *
-posix_spawnve(PyObject *self, PyObject *args)
-{
-    char *path;
-    PyObject *argv, *env;
-    char **argvlist;
-    char **envlist;
-    PyObject *key, *val, *keys=NULL, *vals=NULL, *res=NULL;
-    int mode, pos, envc;
-    Py_ssize_t argc, i;
-    Py_intptr_t spawnval;
-    PyObject *(*getitem)(PyObject *, Py_ssize_t);
-    Py_ssize_t lastarg = 0;
-
-    /* spawnve has four arguments: (mode, path, argv, env), where
-       argv is a list or tuple of strings and env is a dictionary
-       like posix.environ. */
-
-    if (!PyArg_ParseTuple(args, "ietOO:spawnve", &mode,
-                          Py_FileSystemDefaultEncoding,
-                          &path, &argv, &env))
-        return NULL;
-    if (PyList_Check(argv)) {
-        argc = PyList_Size(argv);
-        getitem = PyList_GetItem;
-    }
-    else if (PyTuple_Check(argv)) {
-        argc = PyTuple_Size(argv);
-        getitem = PyTuple_GetItem;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "spawnve() arg 2 must be a tuple or list");
-        goto fail_0;
-    }
-    if (!PyMapping_Check(env)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "spawnve() arg 3 must be a mapping object");
-        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((*getitem)(argv, i),
-                     "et;spawnve() arg 2 must contain only strings",
-                         Py_FileSystemDefaultEncoding,
-                         &argvlist[i]))
-        {
-            lastarg = i;
-            goto fail_1;
-        }
-    }
-    lastarg = argc;
-    argvlist[argc] = NULL;
-
-    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,
-                        "spawnve(): 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;spawnve() arg 3 contains a non-string key",
-                    &k) ||
-            !PyArg_Parse(
-                val,
-                "s;spawnve() arg 3 contains a non-string value",
-                &v))
-        {
-            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 defined(PYOS_OS2) && defined(PYCC_GCC)
-    Py_BEGIN_ALLOW_THREADS
-    spawnval = spawnve(mode, path, argvlist, envlist);
-    Py_END_ALLOW_THREADS
-#else
-    if (mode == _OLD_P_OVERLAY)
-        mode = _P_OVERLAY;
-
-    Py_BEGIN_ALLOW_THREADS
-    spawnval = _spawnve(mode, path, argvlist, envlist);
-    Py_END_ALLOW_THREADS
-#endif
-
-    if (spawnval == -1)
-        (void) posix_error();
-    else
-#if SIZEOF_LONG == SIZEOF_VOID_P
-        res = Py_BuildValue("l", (long) spawnval);
-#else
-        res = Py_BuildValue("L", (PY_LONG_LONG) spawnval);
-#endif
-
-  fail_2:
-    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:
-    PyMem_Free(path);
-    return res;
-}
-
-/* OS/2 supports spawnvp & spawnvpe natively */
-#if defined(PYOS_OS2)
-PyDoc_STRVAR(posix_spawnvp__doc__,
-"spawnvp(mode, file, args)\n\n\
-Execute the program 'file' in a new process, using the environment\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");
-
-static PyObject *
-posix_spawnvp(PyObject *self, PyObject *args)
-{
-    char *path;
-    PyObject *argv;
-    char **argvlist;
-    int mode, i, argc;
-    Py_intptr_t spawnval;
-    PyObject *(*getitem)(PyObject *, Py_ssize_t);
-
-    /* spawnvp has three arguments: (mode, path, argv), where
-       argv is a list or tuple of strings. */
-
-    if (!PyArg_ParseTuple(args, "ietO:spawnvp", &mode,
-                          Py_FileSystemDefaultEncoding,
-                          &path, &argv))
-        return NULL;
-    if (PyList_Check(argv)) {
-        argc = PyList_Size(argv);
-        getitem = PyList_GetItem;
-    }
-    else if (PyTuple_Check(argv)) {
-        argc = PyTuple_Size(argv);
-        getitem = PyTuple_GetItem;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "spawnvp() arg 2 must be a tuple or list");
-        PyMem_Free(path);
-        return NULL;
-    }
-
-    argvlist = PyMem_NEW(char *, argc+1);
-    if (argvlist == NULL) {
-        PyMem_Free(path);
-        return PyErr_NoMemory();
-    }
-    for (i = 0; i < argc; i++) {
-        if (!PyArg_Parse((*getitem)(argv, i), "et",
-                         Py_FileSystemDefaultEncoding,
-                         &argvlist[i])) {
-            free_string_array(argvlist, i);
-            PyErr_SetString(
-                PyExc_TypeError,
-                "spawnvp() arg 2 must contain only strings");
-            PyMem_Free(path);
-            return NULL;
-        }
-    }
-    argvlist[argc] = NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-#if defined(PYCC_GCC)
-    spawnval = spawnvp(mode, path, argvlist);
-#else
-    spawnval = _spawnvp(mode, path, argvlist);
-#endif
-    Py_END_ALLOW_THREADS
-
-    free_string_array(argvlist, argc);
-    PyMem_Free(path);
-
-    if (spawnval == -1)
-        return posix_error();
-    else
-        return Py_BuildValue("l", (long) spawnval);
-}
-
-
-PyDoc_STRVAR(posix_spawnvpe__doc__,
-"spawnvpe(mode, file, args, env)\n\n\
-Execute the program 'file' in a new process, using the environment\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 arguments\n\
-    env: dictionary of strings mapping to strings");
-
-static PyObject *
-posix_spawnvpe(PyObject *self, PyObject *args)
-{
-    char *path;
-    PyObject *argv, *env;
-    char **argvlist;
-    char **envlist;
-    PyObject *key, *val, *keys=NULL, *vals=NULL, *res=NULL;
-    int mode, i, pos, argc, envc;
-    Py_intptr_t spawnval;
-    PyObject *(*getitem)(PyObject *, Py_ssize_t);
-    int lastarg = 0;
-
-    /* spawnvpe has four arguments: (mode, path, argv, env), where
-       argv is a list or tuple of strings and env is a dictionary
-       like posix.environ. */
-
-    if (!PyArg_ParseTuple(args, "ietOO:spawnvpe", &mode,
-                          Py_FileSystemDefaultEncoding,
-                          &path, &argv, &env))
-        return NULL;
-    if (PyList_Check(argv)) {
-        argc = PyList_Size(argv);
-        getitem = PyList_GetItem;
-    }
-    else if (PyTuple_Check(argv)) {
-        argc = PyTuple_Size(argv);
-        getitem = PyTuple_GetItem;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "spawnvpe() arg 2 must be a tuple or list");
-        goto fail_0;
-    }
-    if (!PyMapping_Check(env)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "spawnvpe() arg 3 must be a mapping object");
-        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((*getitem)(argv, i),
-                     "et;spawnvpe() arg 2 must contain only strings",
-                         Py_FileSystemDefaultEncoding,
-                         &argvlist[i]))
-        {
-            lastarg = i;
-            goto fail_1;
-        }
-    }
-    lastarg = argc;
-    argvlist[argc] = NULL;
-
-    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,
-                        "spawnvpe(): 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;spawnvpe() arg 3 contains a non-string key",
-                    &k) ||
-            !PyArg_Parse(
-                val,
-                "s;spawnvpe() arg 3 contains a non-string value",
-                &v))
-        {
-            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;
-
-    Py_BEGIN_ALLOW_THREADS
-#if defined(PYCC_GCC)
-    spawnval = spawnvpe(mode, path, argvlist, envlist);
-#else
-    spawnval = _spawnvpe(mode, path, argvlist, envlist);
-#endif
-    Py_END_ALLOW_THREADS
-
-    if (spawnval == -1)
-        (void) posix_error();
-    else
-        res = Py_BuildValue("l", (long) spawnval);
-
-  fail_2:
-    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:
-    PyMem_Free(path);
-    return res;
-}
-#endif /* PYOS_OS2 */
-#endif /* HAVE_SPAWNV */
-
-
-#ifdef HAVE_FORK1
-PyDoc_STRVAR(posix_fork1__doc__,
-"fork1() -> pid\n\n\
-Fork a child process with a single multiplexed (i.e., not bound) thread.\n\
-\n\
-Return 0 to child process and PID of child to parent process.");
-
-static PyObject *
-posix_fork1(PyObject *self, PyObject *noargs)
-{
-    pid_t pid;
-    int result = 0;
-    _PyImport_AcquireLock();
-    pid = fork1();
-    if (pid == 0) {
-        /* child: this clobbers and resets the import lock. */
-        PyOS_AfterFork();
-    } else {
-        /* parent: release the import lock. */
-        result = _PyImport_ReleaseLock();
-    }
-    if (pid == -1)
-        return posix_error();
-    if (result < 0) {
-        /* Don't clobber the OSError if the fork failed. */
-        PyErr_SetString(PyExc_RuntimeError,
-                        "not holding the import lock");
-        return NULL;
-    }
-    return PyLong_FromPid(pid);
-}
-#endif
-
-
-#ifdef HAVE_FORK
-PyDoc_STRVAR(posix_fork__doc__,
-"fork() -> pid\n\n\
-Fork a child process.\n\
-Return 0 to child process and PID of child to parent process.");
-
-static PyObject *
-posix_fork(PyObject *self, PyObject *noargs)
-{
-    pid_t pid;
-    int result = 0;
-    _PyImport_AcquireLock();
-    pid = fork();
-    if (pid == 0) {
-        /* child: this clobbers and resets the import lock. */
-        PyOS_AfterFork();
-    } else {
-        /* parent: release the import lock. */
-        result = _PyImport_ReleaseLock();
-    }
-    if (pid == -1)
-        return posix_error();
-    if (result < 0) {
-        /* Don't clobber the OSError if the fork failed. */
-        PyErr_SetString(PyExc_RuntimeError,
-                        "not holding the import lock");
-        return NULL;
-    }
-    return PyLong_FromPid(pid);
-}
-#endif
-
-/* AIX uses /dev/ptc but is otherwise the same as /dev/ptmx */
-/* IRIX has both /dev/ptc and /dev/ptmx, use ptmx */
-#if defined(HAVE_DEV_PTC) && !defined(HAVE_DEV_PTMX)
-#define DEV_PTY_FILE "/dev/ptc"
-#define HAVE_DEV_PTMX
-#else
-#define DEV_PTY_FILE "/dev/ptmx"
-#endif
-
-#if defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) || defined(HAVE_DEV_PTMX)
-#ifdef HAVE_PTY_H
-#include <pty.h>
-#else
-#ifdef HAVE_LIBUTIL_H
-#include <libutil.h>
-#else
-#ifdef HAVE_UTIL_H
-#include <util.h>
-#endif /* HAVE_UTIL_H */
-#endif /* HAVE_LIBUTIL_H */
-#endif /* HAVE_PTY_H */
-#ifdef HAVE_STROPTS_H
-#include <stropts.h>
-#endif
-#endif /* defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) || defined(HAVE_DEV_PTMX */
-
-#if defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) || defined(HAVE_DEV_PTMX)
-PyDoc_STRVAR(posix_openpty__doc__,
-"openpty() -> (master_fd, slave_fd)\n\n\
-Open a pseudo-terminal, returning open fd's for both master and slave end.\n");
-
-static PyObject *
-posix_openpty(PyObject *self, PyObject *noargs)
-{
-    int master_fd, slave_fd;
-#ifndef HAVE_OPENPTY
-    char * slave_name;
-#endif
-#if defined(HAVE_DEV_PTMX) && !defined(HAVE_OPENPTY) && !defined(HAVE__GETPTY)
-    PyOS_sighandler_t sig_saved;
-#ifdef sun
-    extern char *ptsname(int fildes);
-#endif
-#endif
-
-#ifdef HAVE_OPENPTY
-    if (openpty(&master_fd, &slave_fd, NULL, NULL, NULL) != 0)
-        return posix_error();
-#elif defined(HAVE__GETPTY)
-    slave_name = _getpty(&master_fd, O_RDWR, 0666, 0);
-    if (slave_name == NULL)
-        return posix_error();
-
-    slave_fd = open(slave_name, O_RDWR);
-    if (slave_fd < 0)
-        return posix_error();
-#else
-    master_fd = open(DEV_PTY_FILE, O_RDWR | O_NOCTTY); /* open master */
-    if (master_fd < 0)
-        return posix_error();
-    sig_saved = PyOS_setsig(SIGCHLD, SIG_DFL);
-    /* change permission of slave */
-    if (grantpt(master_fd) < 0) {
-        PyOS_setsig(SIGCHLD, sig_saved);
-        return posix_error();
-    }
-    /* unlock slave */
-    if (unlockpt(master_fd) < 0) {
-        PyOS_setsig(SIGCHLD, sig_saved);
-        return posix_error();
-    }
-    PyOS_setsig(SIGCHLD, sig_saved);
-    slave_name = ptsname(master_fd); /* get name of slave */
-    if (slave_name == NULL)
-        return posix_error();
-    slave_fd = open(slave_name, O_RDWR | O_NOCTTY); /* open slave */
-    if (slave_fd < 0)
-        return posix_error();
-#if !defined(__CYGWIN__) && !defined(HAVE_DEV_PTC)
-    ioctl(slave_fd, I_PUSH, "ptem"); /* push ptem */
-    ioctl(slave_fd, I_PUSH, "ldterm"); /* push ldterm */
-#ifndef __hpux
-    ioctl(slave_fd, I_PUSH, "ttcompat"); /* push ttcompat */
-#endif /* __hpux */
-#endif /* HAVE_CYGWIN */
-#endif /* HAVE_OPENPTY */
-
-    return Py_BuildValue("(ii)", master_fd, slave_fd);
-
-}
-#endif /* defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) || defined(HAVE_DEV_PTMX) */
-
-#ifdef HAVE_FORKPTY
-PyDoc_STRVAR(posix_forkpty__doc__,
-"forkpty() -> (pid, master_fd)\n\n\
-Fork a new process with a new pseudo-terminal as controlling tty.\n\n\
-Like fork(), return 0 as pid to child process, and PID of child to parent.\n\
-To both, return fd of newly opened pseudo-terminal.\n");
-
-static PyObject *
-posix_forkpty(PyObject *self, PyObject *noargs)
-{
-    int master_fd = -1, result = 0;
-    pid_t pid;
-
-    _PyImport_AcquireLock();
-    pid = forkpty(&master_fd, NULL, NULL, NULL);
-    if (pid == 0) {
-        /* child: this clobbers and resets the import lock. */
-        PyOS_AfterFork();
-    } else {
-        /* parent: release the import lock. */
-        result = _PyImport_ReleaseLock();
-    }
-    if (pid == -1)
-        return posix_error();
-    if (result < 0) {
-        /* Don't clobber the OSError if the fork failed. */
-        PyErr_SetString(PyExc_RuntimeError,
-                        "not holding the import lock");
-        return NULL;
-    }
-    return Py_BuildValue("(Ni)", PyLong_FromPid(pid), master_fd);
-}
-#endif
-
-#ifdef HAVE_GETEGID
-PyDoc_STRVAR(posix_getegid__doc__,
-"getegid() -> egid\n\n\
-Return the current process's effective group id.");
-
-static PyObject *
-posix_getegid(PyObject *self, PyObject *noargs)
-{
-    return PyInt_FromLong((long)getegid());
-}
-#endif
-
-
-#ifdef HAVE_GETEUID
-PyDoc_STRVAR(posix_geteuid__doc__,
-"geteuid() -> euid\n\n\
-Return the current process's effective user id.");
-
-static PyObject *
-posix_geteuid(PyObject *self, PyObject *noargs)
-{
-    return PyInt_FromLong((long)geteuid());
-}
-#endif
-
-
-#ifdef HAVE_GETGID
-PyDoc_STRVAR(posix_getgid__doc__,
-"getgid() -> gid\n\n\
-Return the current process's group id.");
-
-static PyObject *
-posix_getgid(PyObject *self, PyObject *noargs)
-{
-    return PyInt_FromLong((long)getgid());
-}
-#endif
-
-
-PyDoc_STRVAR(posix_getpid__doc__,
-"getpid() -> pid\n\n\
-Return the current process id");
-
-static PyObject *
-posix_getpid(PyObject *self, PyObject *noargs)
-{
-    return PyLong_FromPid(getpid());
-}
-
-
-#ifdef HAVE_GETGROUPS
-PyDoc_STRVAR(posix_getgroups__doc__,
-"getgroups() -> list of group IDs\n\n\
-Return list of supplemental group IDs for the process.");
-
-static PyObject *
-posix_getgroups(PyObject *self, PyObject *noargs)
-{
-    PyObject *result = NULL;
-
-#ifdef NGROUPS_MAX
-#define MAX_GROUPS NGROUPS_MAX
-#else
-    /* defined to be 16 on Solaris7, so this should be a small number */
-#define MAX_GROUPS 64
-#endif
-    gid_t grouplist[MAX_GROUPS];
-
-    /* On MacOSX getgroups(2) can return more than MAX_GROUPS results
-     * This is a helper variable to store the intermediate result when
-     * that happens.
-     *
-     * To keep the code readable the OSX behaviour is unconditional,
-     * according to the POSIX spec this should be safe on all unix-y
-     * systems.
-     */
-    gid_t* alt_grouplist = grouplist;
-    int n;
-
-    n = getgroups(MAX_GROUPS, grouplist);
-    if (n < 0) {
-        if (errno == EINVAL) {
-            n = getgroups(0, NULL);
-            if (n == -1) {
-                return posix_error();
-            }
-            if (n == 0) {
-                /* Avoid malloc(0) */
-                alt_grouplist = grouplist;
-            } else {
-                alt_grouplist = PyMem_Malloc(n * sizeof(gid_t));
-                if (alt_grouplist == NULL) {
-                    errno = EINVAL;
-                    return posix_error();
-                }
-                n = getgroups(n, alt_grouplist);
-                if (n == -1) {
-                    PyMem_Free(alt_grouplist);
-                    return posix_error();
-                }
-            }
-        } else {
-            return posix_error();
-        }
-    }
-    result = PyList_New(n);
-    if (result != NULL) {
-        int i;
-        for (i = 0; i < n; ++i) {
-            PyObject *o = PyInt_FromLong((long)alt_grouplist[i]);
-            if (o == NULL) {
-                Py_DECREF(result);
-                result = NULL;
-                break;
-            }
-            PyList_SET_ITEM(result, i, o);
-        }
-    }
-
-    if (alt_grouplist != grouplist) {
-        PyMem_Free(alt_grouplist);
-    }
-
-    return result;
-}
-#endif
-
-#ifdef HAVE_INITGROUPS
-PyDoc_STRVAR(posix_initgroups__doc__,
-"initgroups(username, gid) -> None\n\n\
-Call the system initgroups() to initialize the group access list with all of\n\
-the groups of which the specified username is a member, plus the specified\n\
-group id.");
-
-static PyObject *
-posix_initgroups(PyObject *self, PyObject *args)
-{
-    char *username;
-    long gid;
-
-    if (!PyArg_ParseTuple(args, "sl:initgroups", &username, &gid))
-        return NULL;
-
-    if (initgroups(username, (gid_t) gid) == -1)
-        return PyErr_SetFromErrno(PyExc_OSError);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-#ifdef HAVE_GETPGID
-PyDoc_STRVAR(posix_getpgid__doc__,
-"getpgid(pid) -> pgid\n\n\
-Call the system call getpgid().");
-
-static PyObject *
-posix_getpgid(PyObject *self, PyObject *args)
-{
-    pid_t pid, pgid;
-    if (!PyArg_ParseTuple(args, PARSE_PID ":getpgid", &pid))
-        return NULL;
-    pgid = getpgid(pid);
-    if (pgid < 0)
-        return posix_error();
-    return PyLong_FromPid(pgid);
-}
-#endif /* HAVE_GETPGID */
-
-
-#ifdef HAVE_GETPGRP
-PyDoc_STRVAR(posix_getpgrp__doc__,
-"getpgrp() -> pgrp\n\n\
-Return the current process group id.");
-
-static PyObject *
-posix_getpgrp(PyObject *self, PyObject *noargs)
-{
-#ifdef GETPGRP_HAVE_ARG
-    return PyLong_FromPid(getpgrp(0));
-#else /* GETPGRP_HAVE_ARG */
-    return PyLong_FromPid(getpgrp());
-#endif /* GETPGRP_HAVE_ARG */
-}
-#endif /* HAVE_GETPGRP */
-
-
-#ifdef HAVE_SETPGRP
-PyDoc_STRVAR(posix_setpgrp__doc__,
-"setpgrp()\n\n\
-Make this process the process group leader.");
-
-static PyObject *
-posix_setpgrp(PyObject *self, PyObject *noargs)
-{
-#ifdef SETPGRP_HAVE_ARG
-    if (setpgrp(0, 0) < 0)
-#else /* SETPGRP_HAVE_ARG */
-    if (setpgrp() < 0)
-#endif /* SETPGRP_HAVE_ARG */
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-#endif /* HAVE_SETPGRP */
-
-#ifdef HAVE_GETPPID
-PyDoc_STRVAR(posix_getppid__doc__,
-"getppid() -> ppid\n\n\
-Return the parent's process id.");
-
-static PyObject *
-posix_getppid(PyObject *self, PyObject *noargs)
-{
-    return PyLong_FromPid(getppid());
-}
-#endif
-
-
-#ifdef HAVE_GETLOGIN
-PyDoc_STRVAR(posix_getlogin__doc__,
-"getlogin() -> string\n\n\
-Return the actual login name.");
-
-static PyObject *
-posix_getlogin(PyObject *self, PyObject *noargs)
-{
-    PyObject *result = NULL;
-    char *name;
-    int old_errno = errno;
-
-    errno = 0;
-    name = getlogin();
-    if (name == NULL) {
-        if (errno)
-        posix_error();
-        else
-        PyErr_SetString(PyExc_OSError,
-                        "unable to determine login name");
-    }
-    else
-        result = PyString_FromString(name);
-    errno = old_errno;
-
-    return result;
-}
-#endif
-
-#ifndef UEFI_C_SOURCE
-PyDoc_STRVAR(posix_getuid__doc__,
-"getuid() -> uid\n\n\
-Return the current process's user id.");
-
-static PyObject *
-posix_getuid(PyObject *self, PyObject *noargs)
-{
-    return PyInt_FromLong((long)getuid());
-}
-#endif  /* UEFI_C_SOURCE */
-
-#ifdef HAVE_KILL
-PyDoc_STRVAR(posix_kill__doc__,
-"kill(pid, sig)\n\n\
-Kill a process with a signal.");
-
-static PyObject *
-posix_kill(PyObject *self, PyObject *args)
-{
-    pid_t pid;
-    int sig;
-    if (!PyArg_ParseTuple(args, PARSE_PID "i:kill", &pid, &sig))
-        return NULL;
-#if defined(PYOS_OS2) && !defined(PYCC_GCC)
-    if (sig == XCPT_SIGNAL_INTR || sig == XCPT_SIGNAL_BREAK) {
-        APIRET rc;
-        if ((rc = DosSendSignalException(pid, sig)) != NO_ERROR)
-            return os2_error(rc);
-
-    } else if (sig == XCPT_SIGNAL_KILLPROC) {
-        APIRET rc;
-        if ((rc = DosKillProcess(DKP_PROCESS, pid)) != NO_ERROR)
-            return os2_error(rc);
-
-    } else
-        return NULL; /* Unrecognized Signal Requested */
-#else
-    if (kill(pid, sig) == -1)
-        return posix_error();
-#endif
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-#ifdef HAVE_KILLPG
-PyDoc_STRVAR(posix_killpg__doc__,
-"killpg(pgid, sig)\n\n\
-Kill a process group with a signal.");
-
-static PyObject *
-posix_killpg(PyObject *self, PyObject *args)
-{
-    int sig;
-    pid_t pgid;
-    /* XXX some man pages make the `pgid` parameter an int, others
-       a pid_t. Since getpgrp() returns a pid_t, we assume killpg should
-       take the same type. Moreover, pid_t is always at least as wide as
-       int (else compilation of this module fails), which is safe. */
-    if (!PyArg_ParseTuple(args, PARSE_PID "i:killpg", &pgid, &sig))
-        return NULL;
-    if (killpg(pgid, sig) == -1)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-#ifdef HAVE_PLOCK
-
-#ifdef HAVE_SYS_LOCK_H
-#include <sys/lock.h>
-#endif
-
-PyDoc_STRVAR(posix_plock__doc__,
-"plock(op)\n\n\
-Lock program segments into memory.");
-
-static PyObject *
-posix_plock(PyObject *self, PyObject *args)
-{
-    int op;
-    if (!PyArg_ParseTuple(args, "i:plock", &op))
-        return NULL;
-    if (plock(op) == -1)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-
-#ifdef HAVE_POPEN
-PyDoc_STRVAR(posix_popen__doc__,
-"popen(command [, mode='r' [, bufsize]]) -> pipe\n\n\
-Open a pipe to/from a command returning a file object.");
-
-#if defined(PYOS_OS2)
-#if defined(PYCC_VACPP)
-static int
-async_system(const char *command)
-{
-    char errormsg[256], args[1024];
-    RESULTCODES rcodes;
-    APIRET rc;
-
-    char *shell = getenv("COMSPEC");
-    if (!shell)
-        shell = "cmd";
-
-    /* avoid overflowing the argument buffer */
-    if (strlen(shell) + 3 + strlen(command) >= 1024)
-        return ERROR_NOT_ENOUGH_MEMORY
-
-    args[0] = '\0';
-    strcat(args, shell);
-    strcat(args, "/c ");
-    strcat(args, command);
-
-    /* execute asynchronously, inheriting the environment */
-    rc = DosExecPgm(errormsg,
-                    sizeof(errormsg),
-                    EXEC_ASYNC,
-                    args,
-                    NULL,
-                    &rcodes,
-                    shell);
-    return rc;
-}
-
-static FILE *
-popen(const char *command, const char *mode, int pipesize, int *err)
-{
-    int oldfd, tgtfd;
-    HFILE pipeh[2];
-    APIRET rc;
-
-    /* mode determines which of stdin or stdout is reconnected to
-     * the pipe to the child
-     */
-    if (strchr(mode, 'r') != NULL) {
-        tgt_fd = 1;             /* stdout */
-    } else if (strchr(mode, 'w')) {
-        tgt_fd = 0;             /* stdin */
-    } else {
-        *err = ERROR_INVALID_ACCESS;
-        return NULL;
-    }
-
-    /* setup the pipe */
-    if ((rc = DosCreatePipe(&pipeh[0], &pipeh[1], pipesize)) != NO_ERROR) {
-        *err = rc;
-        return NULL;
-    }
-
-    /* prevent other threads accessing stdio */
-    DosEnterCritSec();
-
-    /* reconnect stdio and execute child */
-    oldfd = dup(tgtfd);
-    close(tgtfd);
-    if (dup2(pipeh[tgtfd], tgtfd) == 0) {
-        DosClose(pipeh[tgtfd]);
-        rc = async_system(command);
-    }
-
-    /* restore stdio */
-    dup2(oldfd, tgtfd);
-    close(oldfd);
-
-    /* allow other threads access to stdio */
-    DosExitCritSec();
-
-    /* if execution of child was successful return file stream */
-    if (rc == NO_ERROR)
-        return fdopen(pipeh[1 - tgtfd], mode);
-    else {
-        DosClose(pipeh[1 - tgtfd]);
-        *err = rc;
-        return NULL;
-    }
-}
-
-static PyObject *
-posix_popen(PyObject *self, PyObject *args)
-{
-    char *name;
-    char *mode = "r";
-    int   err, bufsize = -1;
-    FILE *fp;
-    PyObject *f;
-    if (!PyArg_ParseTuple(args, "s|si:popen", &name, &mode, &bufsize))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    fp = popen(name, mode, (bufsize > 0) ? bufsize : 4096, &err);
-    Py_END_ALLOW_THREADS
-    if (fp == NULL)
-        return os2_error(err);
-
-    f = PyFile_FromFile(fp, name, mode, fclose);
-    if (f != NULL)
-        PyFile_SetBufSize(f, bufsize);
-    return f;
-}
-
-#elif defined(PYCC_GCC)
-
-/* standard posix version of popen() support */
-static PyObject *
-posix_popen(PyObject *self, PyObject *args)
-{
-    char *name;
-    char *mode = "r";
-    int bufsize = -1;
-    FILE *fp;
-    PyObject *f;
-    if (!PyArg_ParseTuple(args, "s|si:popen", &name, &mode, &bufsize))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    fp = popen(name, mode);
-    Py_END_ALLOW_THREADS
-    if (fp == NULL)
-        return posix_error();
-    f = PyFile_FromFile(fp, name, mode, pclose);
-    if (f != NULL)
-        PyFile_SetBufSize(f, bufsize);
-    return f;
-}
-
-/* fork() under OS/2 has lots'o'warts
- * EMX supports pipe() and spawn*() so we can synthesize popen[234]()
- * most of this code is a ripoff of the win32 code, but using the
- * capabilities of EMX's C library routines
- */
-
-/* These tell _PyPopen() whether to return 1, 2, or 3 file objects. */
-#define POPEN_1 1
-#define POPEN_2 2
-#define POPEN_3 3
-#define POPEN_4 4
-
-static PyObject *_PyPopen(char *, int, int, int);
-static int _PyPclose(FILE *file);
-
-/*
- * Internal dictionary mapping popen* file pointers to process handles,
- * for use when retrieving the process exit code.  See _PyPclose() below
- * for more information on this dictionary's use.
- */
-static PyObject *_PyPopenProcs = NULL;
-
-/* os2emx version of popen2()
- *
- * The result of this function is a pipe (file) connected to the
- * process's stdin, and a pipe connected to the process's stdout.
- */
-
-static PyObject *
-os2emx_popen2(PyObject *self, PyObject  *args)
-{
-    PyObject *f;
-    int tm=0;
-
-    char *cmdstring;
-    char *mode = "t";
-    int bufsize = -1;
-    if (!PyArg_ParseTuple(args, "s|si:popen2", &cmdstring, &mode, &bufsize))
-        return NULL;
-
-    if (*mode == 't')
-        tm = O_TEXT;
-    else if (*mode != 'b') {
-        PyErr_SetString(PyExc_ValueError, "mode must be 't' or 'b'");
-        return NULL;
-    } else
-        tm = O_BINARY;
-
-    f = _PyPopen(cmdstring, tm, POPEN_2, bufsize);
-
-    return f;
-}
-
-/*
- * Variation on os2emx.popen2
- *
- * The result of this function is 3 pipes - the process's stdin,
- * stdout and stderr
- */
-
-static PyObject *
-os2emx_popen3(PyObject *self, PyObject *args)
-{
-    PyObject *f;
-    int tm = 0;
-
-    char *cmdstring;
-    char *mode = "t";
-    int bufsize = -1;
-    if (!PyArg_ParseTuple(args, "s|si:popen3", &cmdstring, &mode, &bufsize))
-        return NULL;
-
-    if (*mode == 't')
-        tm = O_TEXT;
-    else if (*mode != 'b') {
-        PyErr_SetString(PyExc_ValueError, "mode must be 't' or 'b'");
-        return NULL;
-    } else
-        tm = O_BINARY;
-
-    f = _PyPopen(cmdstring, tm, POPEN_3, bufsize);
-
-    return f;
-}
-
-/*
- * Variation on os2emx.popen2
- *
- * The result of this function is 2 pipes - the processes stdin,
- * and stdout+stderr combined as a single pipe.
- */
-
-static PyObject *
-os2emx_popen4(PyObject *self, PyObject  *args)
-{
-    PyObject *f;
-    int tm = 0;
-
-    char *cmdstring;
-    char *mode = "t";
-    int bufsize = -1;
-    if (!PyArg_ParseTuple(args, "s|si:popen4", &cmdstring, &mode, &bufsize))
-        return NULL;
-
-    if (*mode == 't')
-        tm = O_TEXT;
-    else if (*mode != 'b') {
-        PyErr_SetString(PyExc_ValueError, "mode must be 't' or 'b'");
-        return NULL;
-    } else
-        tm = O_BINARY;
-
-    f = _PyPopen(cmdstring, tm, POPEN_4, bufsize);
-
-    return f;
-}
-
-/* a couple of structures for convenient handling of multiple
- * file handles and pipes
- */
-struct file_ref
-{
-    int handle;
-    int flags;
-};
-
-struct pipe_ref
-{
-    int rd;
-    int wr;
-};
-
-/* The following code is derived from the win32 code */
-
-static PyObject *
-_PyPopen(char *cmdstring, int mode, int n, int bufsize)
-{
-    struct file_ref stdio[3];
-    struct pipe_ref p_fd[3];
-    FILE *p_s[3];
-    int file_count, i, pipe_err;
-    pid_t pipe_pid;
-    char *shell, *sh_name, *opt, *rd_mode, *wr_mode;
-    PyObject *f, *p_f[3];
-
-    /* file modes for subsequent fdopen's on pipe handles */
-    if (mode == O_TEXT)
-    {
-        rd_mode = "rt";
-        wr_mode = "wt";
-    }
-    else
-    {
-        rd_mode = "rb";
-        wr_mode = "wb";
-    }
-
-    /* prepare shell references */
-    if ((shell = getenv("EMXSHELL")) == NULL)
-        if ((shell = getenv("COMSPEC")) == NULL)
-        {
-            errno = ENOENT;
-            return posix_error();
-        }
-
-    sh_name = _getname(shell);
-    if (stricmp(sh_name, "cmd.exe") == 0 || stricmp(sh_name, "4os2.exe") == 0)
-        opt = "/c";
-    else
-        opt = "-c";
-
-    /* save current stdio fds + their flags, and set not inheritable */
-    i = pipe_err = 0;
-    while (pipe_err >= 0 && i < 3)
-    {
-        pipe_err = stdio[i].handle = dup(i);
-        stdio[i].flags = fcntl(i, F_GETFD, 0);
-        fcntl(stdio[i].handle, F_SETFD, stdio[i].flags | FD_CLOEXEC);
-        i++;
-    }
-    if (pipe_err < 0)
-    {
-        /* didn't get them all saved - clean up and bail out */
-        int saved_err = errno;
-        while (i-- > 0)
-        {
-            close(stdio[i].handle);
-        }
-        errno = saved_err;
-        return posix_error();
-    }
-
-    /* create pipe ends */
-    file_count = 2;
-    if (n == POPEN_3)
-        file_count = 3;
-    i = pipe_err = 0;
-    while ((pipe_err == 0) && (i < file_count))
-        pipe_err = pipe((int *)&p_fd[i++]);
-    if (pipe_err < 0)
-    {
-        /* didn't get them all made - clean up and bail out */
-        while (i-- > 0)
-        {
-            close(p_fd[i].wr);
-            close(p_fd[i].rd);
-        }
-        errno = EPIPE;
-        return posix_error();
-    }
-
-    /* change the actual standard IO streams over temporarily,
-     * making the retained pipe ends non-inheritable
-     */
-    pipe_err = 0;
-
-    /* - stdin */
-    if (dup2(p_fd[0].rd, 0) == 0)
-    {
-        close(p_fd[0].rd);
-        i = fcntl(p_fd[0].wr, F_GETFD, 0);
-        fcntl(p_fd[0].wr, F_SETFD, i | FD_CLOEXEC);
-        if ((p_s[0] = fdopen(p_fd[0].wr, wr_mode)) == NULL)
-        {
-            close(p_fd[0].wr);
-            pipe_err = -1;
-        }
-    }
-    else
-    {
-        pipe_err = -1;
-    }
-
-    /* - stdout */
-    if (pipe_err == 0)
-    {
-        if (dup2(p_fd[1].wr, 1) == 1)
-        {
-            close(p_fd[1].wr);
-            i = fcntl(p_fd[1].rd, F_GETFD, 0);
-            fcntl(p_fd[1].rd, F_SETFD, i | FD_CLOEXEC);
-            if ((p_s[1] = fdopen(p_fd[1].rd, rd_mode)) == NULL)
-            {
-                close(p_fd[1].rd);
-                pipe_err = -1;
-            }
-        }
-        else
-        {
-            pipe_err = -1;
-        }
-    }
-
-    /* - stderr, as required */
-    if (pipe_err == 0)
-        switch (n)
-        {
-            case POPEN_3:
-            {
-                if (dup2(p_fd[2].wr, 2) == 2)
-                {
-                    close(p_fd[2].wr);
-                    i = fcntl(p_fd[2].rd, F_GETFD, 0);
-                    fcntl(p_fd[2].rd, F_SETFD, i | FD_CLOEXEC);
-                    if ((p_s[2] = fdopen(p_fd[2].rd, rd_mode)) == NULL)
-                    {
-                        close(p_fd[2].rd);
-                        pipe_err = -1;
-                    }
-                }
-                else
-                {
-                    pipe_err = -1;
-                }
-                break;
-            }
-
-            case POPEN_4:
-            {
-                if (dup2(1, 2) != 2)
-                {
-                    pipe_err = -1;
-                }
-                break;
-            }
-        }
-
-    /* spawn the child process */
-    if (pipe_err == 0)
-    {
-        pipe_pid = spawnlp(P_NOWAIT, shell, shell, opt, cmdstring, (char *)0);
-        if (pipe_pid == -1)
-        {
-            pipe_err = -1;
-        }
-        else
-        {
-            /* save the PID into the FILE structure
-             * NOTE: this implementation doesn't actually
-             * take advantage of this, but do it for
-             * completeness - AIM Apr01
-             */
-            for (i = 0; i < file_count; i++)
-                p_s[i]->_pid = pipe_pid;
-        }
-    }
-
-    /* reset standard IO to normal */
-    for (i = 0; i < 3; i++)
-    {
-        dup2(stdio[i].handle, i);
-        fcntl(i, F_SETFD, stdio[i].flags);
-        close(stdio[i].handle);
-    }
-
-    /* if any remnant problems, clean up and bail out */
-    if (pipe_err < 0)
-    {
-        for (i = 0; i < 3; i++)
-        {
-            close(p_fd[i].rd);
-            close(p_fd[i].wr);
-        }
-        errno = EPIPE;
-        return posix_error_with_filename(cmdstring);
-    }
-
-    /* build tuple of file objects to return */
-    if ((p_f[0] = PyFile_FromFile(p_s[0], cmdstring, wr_mode, _PyPclose)) != NULL)
-        PyFile_SetBufSize(p_f[0], bufsize);
-    if ((p_f[1] = PyFile_FromFile(p_s[1], cmdstring, rd_mode, _PyPclose)) != NULL)
-        PyFile_SetBufSize(p_f[1], bufsize);
-    if (n == POPEN_3)
-    {
-        if ((p_f[2] = PyFile_FromFile(p_s[2], cmdstring, rd_mode, _PyPclose)) != NULL)
-            PyFile_SetBufSize(p_f[0], bufsize);
-        f = PyTuple_Pack(3, p_f[0], p_f[1], p_f[2]);
-    }
-    else
-        f = PyTuple_Pack(2, p_f[0], p_f[1]);
-
-    /*
-     * Insert the files we've created into the process dictionary
-     * all referencing the list with the process handle and the
-     * initial number of files (see description below in _PyPclose).
-     * Since if _PyPclose later tried to wait on a process when all
-     * handles weren't closed, it could create a deadlock with the
-     * child, we spend some energy here to try to ensure that we
-     * either insert all file handles into the dictionary or none
-     * at all.  It's a little clumsy with the various popen modes
-     * and variable number of files involved.
-     */
-    if (!_PyPopenProcs)
-    {
-        _PyPopenProcs = PyDict_New();
-    }
-
-    if (_PyPopenProcs)
-    {
-        PyObject *procObj, *pidObj, *intObj, *fileObj[3];
-        int ins_rc[3];
-
-        fileObj[0] = fileObj[1] = fileObj[2] = NULL;
-        ins_rc[0]  = ins_rc[1]  = ins_rc[2]  = 0;
-
-        procObj = PyList_New(2);
-        pidObj = PyLong_FromPid(pipe_pid);
-        intObj = PyInt_FromLong((long) file_count);
-
-        if (procObj && pidObj && intObj)
-        {
-            PyList_SetItem(procObj, 0, pidObj);
-            PyList_SetItem(procObj, 1, intObj);
-
-            fileObj[0] = PyLong_FromVoidPtr(p_s[0]);
-            if (fileObj[0])
-            {
-                ins_rc[0] = PyDict_SetItem(_PyPopenProcs,
-                                           fileObj[0],
-                                           procObj);
-            }
-            fileObj[1] = PyLong_FromVoidPtr(p_s[1]);
-            if (fileObj[1])
-            {
-                ins_rc[1] = PyDict_SetItem(_PyPopenProcs,
-                                           fileObj[1],
-                                           procObj);
-            }
-            if (file_count >= 3)
-            {
-                fileObj[2] = PyLong_FromVoidPtr(p_s[2]);
-                if (fileObj[2])
-                {
-                    ins_rc[2] = PyDict_SetItem(_PyPopenProcs,
-                                               fileObj[2],
-                                               procObj);
-                }
-            }
-
-            if (ins_rc[0] < 0 || !fileObj[0] ||
-                ins_rc[1] < 0 || (file_count > 1 && !fileObj[1]) ||
-                ins_rc[2] < 0 || (file_count > 2 && !fileObj[2]))
-            {
-                /* Something failed - remove any dictionary
-                 * entries that did make it.
-                 */
-                if (!ins_rc[0] && fileObj[0])
-                {
-                    PyDict_DelItem(_PyPopenProcs,
-                                   fileObj[0]);
-                }
-                if (!ins_rc[1] && fileObj[1])
-                {
-                    PyDict_DelItem(_PyPopenProcs,
-                                   fileObj[1]);
-                }
-                if (!ins_rc[2] && fileObj[2])
-                {
-                    PyDict_DelItem(_PyPopenProcs,
-                                   fileObj[2]);
-                }
-            }
-        }
-
-        /*
-         * Clean up our localized references for the dictionary keys
-         * and value since PyDict_SetItem will Py_INCREF any copies
-         * that got placed in the dictionary.
-         */
-        Py_XDECREF(procObj);
-        Py_XDECREF(fileObj[0]);
-        Py_XDECREF(fileObj[1]);
-        Py_XDECREF(fileObj[2]);
-    }
-
-    /* Child is launched. */
-    return f;
-}
-
-/*
- * Wrapper for fclose() to use for popen* files, so we can retrieve the
- * exit code for the child process and return as a result of the close.
- *
- * This function uses the _PyPopenProcs dictionary in order to map the
- * input file pointer to information about the process that was
- * originally created by the popen* call that created the file pointer.
- * The dictionary uses the file pointer as a key (with one entry
- * inserted for each file returned by the original popen* call) and a
- * single list object as the value for all files from a single call.
- * The list object contains the Win32 process handle at [0], and a file
- * count at [1], which is initialized to the total number of file
- * handles using that list.
- *
- * This function closes whichever handle it is passed, and decrements
- * the file count in the dictionary for the process handle pointed to
- * by this file.  On the last close (when the file count reaches zero),
- * this function will wait for the child process and then return its
- * exit code as the result of the close() operation.  This permits the
- * files to be closed in any order - it is always the close() of the
- * final handle that will return the exit code.
- *
- * NOTE: This function is currently called with the GIL released.
- * hence we use the GILState API to manage our state.
- */
-
-static int _PyPclose(FILE *file)
-{
-    int result;
-    int exit_code;
-    pid_t pipe_pid;
-    PyObject *procObj, *pidObj, *intObj, *fileObj;
-    int file_count;
-#ifdef WITH_THREAD
-    PyGILState_STATE state;
-#endif
-
-    /* Close the file handle first, to ensure it can't block the
-     * child from exiting if it's the last handle.
-     */
-    result = fclose(file);
-
-#ifdef WITH_THREAD
-    state = PyGILState_Ensure();
-#endif
-    if (_PyPopenProcs)
-    {
-        if ((fileObj = PyLong_FromVoidPtr(file)) != NULL &&
-            (procObj = PyDict_GetItem(_PyPopenProcs,
-                                      fileObj)) != NULL &&
-            (pidObj = PyList_GetItem(procObj,0)) != NULL &&
-            (intObj = PyList_GetItem(procObj,1)) != NULL)
-        {
-            pipe_pid = (pid_t) PyLong_AsPid(pidObj);
-            file_count = (int) PyInt_AsLong(intObj);
-
-            if (file_count > 1)
-            {
-                /* Still other files referencing process */
-                file_count--;
-                PyList_SetItem(procObj,1,
-                               PyInt_FromLong((long) file_count));
-            }
-            else
-            {
-                /* Last file for this process */
-                if (result != EOF &&
-                    waitpid(pipe_pid, &exit_code, 0) == pipe_pid)
-                {
-                    /* extract exit status */
-                    if (WIFEXITED(exit_code))
-                    {
-                        result = WEXITSTATUS(exit_code);
-                    }
-                    else
-                    {
-                        errno = EPIPE;
-                        result = -1;
-                    }
-                }
-                else
-                {
-                    /* Indicate failure - this will cause the file object
-                     * to raise an I/O error and translate the last
-                     * error code from errno.  We do have a problem with
-                     * last errors that overlap the normal errno table,
-                     * but that's a consistent problem with the file object.
-                     */
-                    result = -1;
-                }
-            }
-
-            /* Remove this file pointer from dictionary */
-            PyDict_DelItem(_PyPopenProcs, fileObj);
-
-            if (PyDict_Size(_PyPopenProcs) == 0)
-            {
-                Py_DECREF(_PyPopenProcs);
-                _PyPopenProcs = NULL;
-            }
-
-        } /* if object retrieval ok */
-
-        Py_XDECREF(fileObj);
-    } /* if _PyPopenProcs */
-
-#ifdef WITH_THREAD
-    PyGILState_Release(state);
-#endif
-    return result;
-}
-
-#endif /* PYCC_??? */
-
-#elif defined(MS_WINDOWS)
-
-/*
- * Portable 'popen' replacement for Win32.
- *
- * Written by Bill Tutt <billtut@microsoft.com>.  Minor tweaks
- * and 2.0 integration by Fredrik Lundh <fredrik@pythonware.com>
- * Return code handling by David Bolen <db3l@fitlinxx.com>.
- */
-
-#include <malloc.h>
-#include <io.h>
-#include <fcntl.h>
-
-/* These tell _PyPopen() wether to return 1, 2, or 3 file objects. */
-#define POPEN_1 1
-#define POPEN_2 2
-#define POPEN_3 3
-#define POPEN_4 4
-
-static PyObject *_PyPopen(char *, int, int);
-static int _PyPclose(FILE *file);
-
-/*
- * Internal dictionary mapping popen* file pointers to process handles,
- * for use when retrieving the process exit code.  See _PyPclose() below
- * for more information on this dictionary's use.
- */
-static PyObject *_PyPopenProcs = NULL;
-
-
-/* popen that works from a GUI.
- *
- * The result of this function is a pipe (file) connected to the
- * processes stdin or stdout, depending on the requested mode.
- */
-
-static PyObject *
-posix_popen(PyObject *self, PyObject *args)
-{
-    PyObject *f;
-    int tm = 0;
-
-    char *cmdstring;
-    char *mode = "r";
-    int bufsize = -1;
-    if (!PyArg_ParseTuple(args, "s|si:popen", &cmdstring, &mode, &bufsize))
-        return NULL;
-
-    if (*mode == 'r')
-        tm = _O_RDONLY;
-    else if (*mode != 'w') {
-        PyErr_SetString(PyExc_ValueError, "popen() arg 2 must be 'r' or 'w'");
-        return NULL;
-    } else
-        tm = _O_WRONLY;
-
-    if (bufsize != -1) {
-        PyErr_SetString(PyExc_ValueError, "popen() arg 3 must be -1");
-        return NULL;
-    }
-
-    if (*(mode+1) == 't')
-        f = _PyPopen(cmdstring, tm | _O_TEXT, POPEN_1);
-    else if (*(mode+1) == 'b')
-        f = _PyPopen(cmdstring, tm | _O_BINARY, POPEN_1);
-    else
-        f = _PyPopen(cmdstring, tm | _O_TEXT, POPEN_1);
-
-    return f;
-}
-
-/* Variation on win32pipe.popen
- *
- * The result of this function is a pipe (file) connected to the
- * process's stdin, and a pipe connected to the process's stdout.
- */
-
-static PyObject *
-win32_popen2(PyObject *self, PyObject  *args)
-{
-    PyObject *f;
-    int tm=0;
-
-    char *cmdstring;
-    char *mode = "t";
-    int bufsize = -1;
-    if (!PyArg_ParseTuple(args, "s|si:popen2", &cmdstring, &mode, &bufsize))
-        return NULL;
-
-    if (*mode == 't')
-        tm = _O_TEXT;
-    else if (*mode != 'b') {
-        PyErr_SetString(PyExc_ValueError, "popen2() arg 2 must be 't' or 'b'");
-        return NULL;
-    } else
-        tm = _O_BINARY;
-
-    if (bufsize != -1) {
-        PyErr_SetString(PyExc_ValueError, "popen2() arg 3 must be -1");
-        return NULL;
-    }
-
-    f = _PyPopen(cmdstring, tm, POPEN_2);
-
-    return f;
-}
-
-/*
- * Variation on <om win32pipe.popen>
- *
- * The result of this function is 3 pipes - the process's stdin,
- * stdout and stderr
- */
-
-static PyObject *
-win32_popen3(PyObject *self, PyObject *args)
-{
-    PyObject *f;
-    int tm = 0;
-
-    char *cmdstring;
-    char *mode = "t";
-    int bufsize = -1;
-    if (!PyArg_ParseTuple(args, "s|si:popen3", &cmdstring, &mode, &bufsize))
-        return NULL;
-
-    if (*mode == 't')
-        tm = _O_TEXT;
-    else if (*mode != 'b') {
-        PyErr_SetString(PyExc_ValueError, "popen3() arg 2 must be 't' or 'b'");
-        return NULL;
-    } else
-        tm = _O_BINARY;
-
-    if (bufsize != -1) {
-        PyErr_SetString(PyExc_ValueError, "popen3() arg 3 must be -1");
-        return NULL;
-    }
-
-    f = _PyPopen(cmdstring, tm, POPEN_3);
-
-    return f;
-}
-
-/*
- * Variation on win32pipe.popen
- *
- * The result of this function is 2 pipes - the processes stdin,
- * and stdout+stderr combined as a single pipe.
- */
-
-static PyObject *
-win32_popen4(PyObject *self, PyObject  *args)
-{
-    PyObject *f;
-    int tm = 0;
-
-    char *cmdstring;
-    char *mode = "t";
-    int bufsize = -1;
-    if (!PyArg_ParseTuple(args, "s|si:popen4", &cmdstring, &mode, &bufsize))
-        return NULL;
-
-    if (*mode == 't')
-        tm = _O_TEXT;
-    else if (*mode != 'b') {
-        PyErr_SetString(PyExc_ValueError, "popen4() arg 2 must be 't' or 'b'");
-        return NULL;
-    } else
-        tm = _O_BINARY;
-
-    if (bufsize != -1) {
-        PyErr_SetString(PyExc_ValueError, "popen4() arg 3 must be -1");
-        return NULL;
-    }
-
-    f = _PyPopen(cmdstring, tm, POPEN_4);
-
-    return f;
-}
-
-static BOOL
-_PyPopenCreateProcess(char *cmdstring,
-                      HANDLE hStdin,
-                      HANDLE hStdout,
-                      HANDLE hStderr,
-                      HANDLE *hProcess)
-{
-    PROCESS_INFORMATION piProcInfo;
-    STARTUPINFO siStartInfo;
-    DWORD dwProcessFlags = 0;  /* no NEW_CONSOLE by default for Ctrl+C handling */
-    char *s1,*s2, *s3 = " /c ";
-    const char *szConsoleSpawn = "w9xpopen.exe";
-    int i;
-    Py_ssize_t x;
-
-    if (i = GetEnvironmentVariable("COMSPEC",NULL,0)) {
-        char *comshell;
-
-        s1 = (char *)alloca(i);
-        if (!(x = GetEnvironmentVariable("COMSPEC", s1, i)))
-            /* x < i, so x fits into an integer */
-            return (int)x;
-
-        /* Explicitly check if we are using COMMAND.COM.  If we are
-         * then use the w9xpopen hack.
-         */
-        comshell = s1 + x;
-        while (comshell >= s1 && *comshell != '\\')
-            --comshell;
-        ++comshell;
-
-        if (GetVersion() < 0x80000000 &&
-            _stricmp(comshell, "command.com") != 0) {
-            /* NT/2000 and not using command.com. */
-            x = i + strlen(s3) + strlen(cmdstring) + 1;
-            s2 = (char *)alloca(x);
-            ZeroMemory(s2, x);
-            PyOS_snprintf(s2, x, "%s%s%s", s1, s3, cmdstring);
-        }
-        else {
-            /*
-             * Oh gag, we're on Win9x or using COMMAND.COM. Use
-             * the workaround listed in KB: Q150956
-             */
-            char modulepath[_MAX_PATH];
-            struct stat statinfo;
-            GetModuleFileName(NULL, modulepath, sizeof(modulepath));
-            for (x = i = 0; modulepath[i]; i++)
-                if (modulepath[i] == SEP)
-                    x = i+1;
-            modulepath[x] = '\0';
-            /* Create the full-name to w9xpopen, so we can test it exists */
-            strncat(modulepath,
-                    szConsoleSpawn,
-                    (sizeof(modulepath)/sizeof(modulepath[0]))
-                        -strlen(modulepath));
-            if (stat(modulepath, &statinfo) != 0) {
-                size_t mplen = sizeof(modulepath)/sizeof(modulepath[0]);
-                /* Eeek - file-not-found - possibly an embedding
-                   situation - see if we can locate it in sys.prefix
-                */
-                strncpy(modulepath,
-                        Py_GetExecPrefix(),
-                        mplen);
-                modulepath[mplen-1] = '\0';
-                if (modulepath[strlen(modulepath)-1] != '\\')
-                    strcat(modulepath, "\\");
-                strncat(modulepath,
-                        szConsoleSpawn,
-                        mplen-strlen(modulepath));
-                /* No where else to look - raise an easily identifiable
-                   error, rather than leaving Windows to report
-                   "file not found" - as the user is probably blissfully
-                   unaware this shim EXE is used, and it will confuse them.
-                   (well, it confused me for a while ;-)
-                */
-                if (stat(modulepath, &statinfo) != 0) {
-                    PyErr_Format(PyExc_RuntimeError,
-                                 "Can not locate '%s' which is needed "
-                                 "for popen to work with your shell "
-                                 "or platform.",
-                                 szConsoleSpawn);
-                    return FALSE;
-                }
-            }
-            x = i + strlen(s3) + strlen(cmdstring) + 1 +
-                strlen(modulepath) +
-                strlen(szConsoleSpawn) + 1;
-
-            s2 = (char *)alloca(x);
-            ZeroMemory(s2, x);
-            /* To maintain correct argument passing semantics,
-               we pass the command-line as it stands, and allow
-               quoting to be applied.  w9xpopen.exe will then
-               use its argv vector, and re-quote the necessary
-               args for the ultimate child process.
-            */
-            PyOS_snprintf(
-                s2, x,
-                "\"%s\" %s%s%s",
-                modulepath,
-                s1,
-                s3,
-                cmdstring);
-            /* Not passing CREATE_NEW_CONSOLE has been known to
-               cause random failures on win9x.  Specifically a
-               dialog:
-               "Your program accessed mem currently in use at xxx"
-               and a hopeful warning about the stability of your
-               system.
-               Cost is Ctrl+C won't kill children, but anyone
-               who cares can have a go!
-            */
-            dwProcessFlags |= CREATE_NEW_CONSOLE;
-        }
-    }
-
-    /* Could be an else here to try cmd.exe / command.com in the path
-       Now we'll just error out.. */
-    else {
-        PyErr_SetString(PyExc_RuntimeError,
-                        "Cannot locate a COMSPEC environment variable to "
-                        "use as the shell");
-        return FALSE;
-    }
-
-    ZeroMemory(&siStartInfo, sizeof(STARTUPINFO));
-    siStartInfo.cb = sizeof(STARTUPINFO);
-    siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
-    siStartInfo.hStdInput = hStdin;
-    siStartInfo.hStdOutput = hStdout;
-    siStartInfo.hStdError = hStderr;
-    siStartInfo.wShowWindow = SW_HIDE;
-
-    if (CreateProcess(NULL,
-                      s2,
-                      NULL,
-                      NULL,
-                      TRUE,
-                      dwProcessFlags,
-                      NULL,
-                      NULL,
-                      &siStartInfo,
-                      &piProcInfo) ) {
-        /* Close the handles now so anyone waiting is woken. */
-        CloseHandle(piProcInfo.hThread);
-
-        /* Return process handle */
-        *hProcess = piProcInfo.hProcess;
-        return TRUE;
-    }
-    win32_error("CreateProcess", s2);
-    return FALSE;
-}
-
-/* The following code is based off of KB: Q190351 */
-
-static PyObject *
-_PyPopen(char *cmdstring, int mode, int n)
-{
-    HANDLE hChildStdinRd, hChildStdinWr, hChildStdoutRd, hChildStdoutWr,
-        hChildStderrRd, hChildStderrWr, hChildStdinWrDup, hChildStdoutRdDup,
-        hChildStderrRdDup, hProcess; /* hChildStdoutWrDup; */
-
-    SECURITY_ATTRIBUTES saAttr;
-    BOOL fSuccess;
-    int fd1, fd2, fd3;
-    FILE *f1, *f2, *f3;
-    long file_count;
-    PyObject *f;
-
-    saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
-    saAttr.bInheritHandle = TRUE;
-    saAttr.lpSecurityDescriptor = NULL;
-
-    if (!CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr, 0))
-        return win32_error("CreatePipe", NULL);
-
-    /* Create new output read handle and the input write handle. Set
-     * the inheritance properties to FALSE. Otherwise, the child inherits
-     * these handles; resulting in non-closeable handles to the pipes
-     * being created. */
-     fSuccess = DuplicateHandle(GetCurrentProcess(), hChildStdinWr,
-                                GetCurrentProcess(), &hChildStdinWrDup, 0,
-                                FALSE,
-                                DUPLICATE_SAME_ACCESS);
-     if (!fSuccess)
-         return win32_error("DuplicateHandle", NULL);
-
-     /* Close the inheritable version of ChildStdin
-    that we're using. */
-     CloseHandle(hChildStdinWr);
-
-     if (!CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr, 0))
-         return win32_error("CreatePipe", NULL);
-
-     fSuccess = DuplicateHandle(GetCurrentProcess(), hChildStdoutRd,
-                                GetCurrentProcess(), &hChildStdoutRdDup, 0,
-                                FALSE, DUPLICATE_SAME_ACCESS);
-     if (!fSuccess)
-         return win32_error("DuplicateHandle", NULL);
-
-     /* Close the inheritable version of ChildStdout
-        that we're using. */
-     CloseHandle(hChildStdoutRd);
-
-     if (n != POPEN_4) {
-         if (!CreatePipe(&hChildStderrRd, &hChildStderrWr, &saAttr, 0))
-             return win32_error("CreatePipe", NULL);
-         fSuccess = DuplicateHandle(GetCurrentProcess(),
-                                    hChildStderrRd,
-                                    GetCurrentProcess(),
-                                    &hChildStderrRdDup, 0,
-                                    FALSE, DUPLICATE_SAME_ACCESS);
-         if (!fSuccess)
-             return win32_error("DuplicateHandle", NULL);
-         /* Close the inheritable version of ChildStdErr that we're using. */
-         CloseHandle(hChildStderrRd);
-     }
-
-     switch (n) {
-     case POPEN_1:
-         switch (mode & (_O_RDONLY | _O_TEXT | _O_BINARY | _O_WRONLY)) {
-         case _O_WRONLY | _O_TEXT:
-             /* Case for writing to child Stdin in text mode. */
-             fd1 = _open_osfhandle((Py_intptr_t)hChildStdinWrDup, mode);
-             f1 = _fdopen(fd1, "w");
-             f = PyFile_FromFile(f1, cmdstring, "w", _PyPclose);
-             PyFile_SetBufSize(f, 0);
-             /* We don't care about these pipes anymore, so close them. */
-             CloseHandle(hChildStdoutRdDup);
-             CloseHandle(hChildStderrRdDup);
-             break;
-
-         case _O_RDONLY | _O_TEXT:
-             /* Case for reading from child Stdout in text mode. */
-             fd1 = _open_osfhandle((Py_intptr_t)hChildStdoutRdDup, mode);
-             f1 = _fdopen(fd1, "r");
-             f = PyFile_FromFile(f1, cmdstring, "r", _PyPclose);
-             PyFile_SetBufSize(f, 0);
-             /* We don't care about these pipes anymore, so close them. */
-             CloseHandle(hChildStdinWrDup);
-             CloseHandle(hChildStderrRdDup);
-             break;
-
-         case _O_RDONLY | _O_BINARY:
-             /* Case for readinig from child Stdout in binary mode. */
-             fd1 = _open_osfhandle((Py_intptr_t)hChildStdoutRdDup, mode);
-             f1 = _fdopen(fd1, "rb");
-             f = PyFile_FromFile(f1, cmdstring, "rb", _PyPclose);
-             PyFile_SetBufSize(f, 0);
-             /* We don't care about these pipes anymore, so close them. */
-             CloseHandle(hChildStdinWrDup);
-             CloseHandle(hChildStderrRdDup);
-             break;
-
-         case _O_WRONLY | _O_BINARY:
-             /* Case for writing to child Stdin in binary mode. */
-             fd1 = _open_osfhandle((Py_intptr_t)hChildStdinWrDup, mode);
-             f1 = _fdopen(fd1, "wb");
-             f = PyFile_FromFile(f1, cmdstring, "wb", _PyPclose);
-             PyFile_SetBufSize(f, 0);
-             /* We don't care about these pipes anymore, so close them. */
-             CloseHandle(hChildStdoutRdDup);
-             CloseHandle(hChildStderrRdDup);
-             break;
-         }
-         file_count = 1;
-         break;
-
-     case POPEN_2:
-     case POPEN_4:
-     {
-         char *m1, *m2;
-         PyObject *p1, *p2;
-
-         if (mode & _O_TEXT) {
-             m1 = "r";
-             m2 = "w";
-         } else {
-             m1 = "rb";
-             m2 = "wb";
-         }
-
-         fd1 = _open_osfhandle((Py_intptr_t)hChildStdinWrDup, mode);
-         f1 = _fdopen(fd1, m2);
-         fd2 = _open_osfhandle((Py_intptr_t)hChildStdoutRdDup, mode);
-         f2 = _fdopen(fd2, m1);
-         p1 = PyFile_FromFile(f1, cmdstring, m2, _PyPclose);
-         PyFile_SetBufSize(p1, 0);
-         p2 = PyFile_FromFile(f2, cmdstring, m1, _PyPclose);
-         PyFile_SetBufSize(p2, 0);
-
-         if (n != 4)
-             CloseHandle(hChildStderrRdDup);
-
-         f = PyTuple_Pack(2,p1,p2);
-         Py_XDECREF(p1);
-         Py_XDECREF(p2);
-         file_count = 2;
-         break;
-     }
-
-     case POPEN_3:
-     {
-         char *m1, *m2;
-         PyObject *p1, *p2, *p3;
-
-         if (mode & _O_TEXT) {
-             m1 = "r";
-             m2 = "w";
-         } else {
-             m1 = "rb";
-             m2 = "wb";
-         }
-
-         fd1 = _open_osfhandle((Py_intptr_t)hChildStdinWrDup, mode);
-         f1 = _fdopen(fd1, m2);
-         fd2 = _open_osfhandle((Py_intptr_t)hChildStdoutRdDup, mode);
-         f2 = _fdopen(fd2, m1);
-         fd3 = _open_osfhandle((Py_intptr_t)hChildStderrRdDup, mode);
-         f3 = _fdopen(fd3, m1);
-         p1 = PyFile_FromFile(f1, cmdstring, m2, _PyPclose);
-         p2 = PyFile_FromFile(f2, cmdstring, m1, _PyPclose);
-         p3 = PyFile_FromFile(f3, cmdstring, m1, _PyPclose);
-         PyFile_SetBufSize(p1, 0);
-         PyFile_SetBufSize(p2, 0);
-         PyFile_SetBufSize(p3, 0);
-         f = PyTuple_Pack(3,p1,p2,p3);
-         Py_XDECREF(p1);
-         Py_XDECREF(p2);
-         Py_XDECREF(p3);
-         file_count = 3;
-         break;
-     }
-     }
-
-     if (n == POPEN_4) {
-         if (!_PyPopenCreateProcess(cmdstring,
-                                    hChildStdinRd,
-                                    hChildStdoutWr,
-                                    hChildStdoutWr,
-                                    &hProcess))
-             return NULL;
-     }
-     else {
-         if (!_PyPopenCreateProcess(cmdstring,
-                                    hChildStdinRd,
-                                    hChildStdoutWr,
-                                    hChildStderrWr,
-                                    &hProcess))
-             return NULL;
-     }
-
-     /*
-      * Insert the files we've created into the process dictionary
-      * all referencing the list with the process handle and the
-      * initial number of files (see description below in _PyPclose).
-      * Since if _PyPclose later tried to wait on a process when all
-      * handles weren't closed, it could create a deadlock with the
-      * child, we spend some energy here to try to ensure that we
-      * either insert all file handles into the dictionary or none
-      * at all.  It's a little clumsy with the various popen modes
-      * and variable number of files involved.
-      */
-     if (!_PyPopenProcs) {
-         _PyPopenProcs = PyDict_New();
-     }
-
-     if (_PyPopenProcs) {
-         PyObject *procObj, *hProcessObj, *intObj, *fileObj[3];
-         int ins_rc[3];
-
-         fileObj[0] = fileObj[1] = fileObj[2] = NULL;
-         ins_rc[0]  = ins_rc[1]  = ins_rc[2]  = 0;
-
-         procObj = PyList_New(2);
-         hProcessObj = PyLong_FromVoidPtr(hProcess);
-         intObj = PyInt_FromLong(file_count);
-
-         if (procObj && hProcessObj && intObj) {
-             PyList_SetItem(procObj,0,hProcessObj);
-             PyList_SetItem(procObj,1,intObj);
-
-             fileObj[0] = PyLong_FromVoidPtr(f1);
-             if (fileObj[0]) {
-                ins_rc[0] = PyDict_SetItem(_PyPopenProcs,
-                                           fileObj[0],
-                                           procObj);
-             }
-             if (file_count >= 2) {
-                 fileObj[1] = PyLong_FromVoidPtr(f2);
-                 if (fileObj[1]) {
-                    ins_rc[1] = PyDict_SetItem(_PyPopenProcs,
-                                               fileObj[1],
-                                               procObj);
-                 }
-             }
-             if (file_count >= 3) {
-                 fileObj[2] = PyLong_FromVoidPtr(f3);
-                 if (fileObj[2]) {
-                    ins_rc[2] = PyDict_SetItem(_PyPopenProcs,
-                                               fileObj[2],
-                                               procObj);
-                 }
-             }
-
-             if (ins_rc[0] < 0 || !fileObj[0] ||
-                 ins_rc[1] < 0 || (file_count > 1 && !fileObj[1]) ||
-                 ins_rc[2] < 0 || (file_count > 2 && !fileObj[2])) {
-                 /* Something failed - remove any dictionary
-                  * entries that did make it.
-                  */
-                 if (!ins_rc[0] && fileObj[0]) {
-                     PyDict_DelItem(_PyPopenProcs,
-                                    fileObj[0]);
-                 }
-                 if (!ins_rc[1] && fileObj[1]) {
-                     PyDict_DelItem(_PyPopenProcs,
-                                    fileObj[1]);
-                 }
-                 if (!ins_rc[2] && fileObj[2]) {
-                     PyDict_DelItem(_PyPopenProcs,
-                                    fileObj[2]);
-                 }
-             }
-         }
-
-         /*
-          * Clean up our localized references for the dictionary keys
-          * and value since PyDict_SetItem will Py_INCREF any copies
-          * that got placed in the dictionary.
-          */
-         Py_XDECREF(procObj);
-         Py_XDECREF(fileObj[0]);
-         Py_XDECREF(fileObj[1]);
-         Py_XDECREF(fileObj[2]);
-     }
-
-     /* Child is launched. Close the parents 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 (!CloseHandle(hChildStdinRd))
-         return win32_error("CloseHandle", NULL);
-
-     if (!CloseHandle(hChildStdoutWr))
-         return win32_error("CloseHandle", NULL);
-
-     if ((n != 4) && (!CloseHandle(hChildStderrWr)))
-         return win32_error("CloseHandle", NULL);
-
-     return f;
-}
-
-/*
- * Wrapper for fclose() to use for popen* files, so we can retrieve the
- * exit code for the child process and return as a result of the close.
- *
- * This function uses the _PyPopenProcs dictionary in order to map the
- * input file pointer to information about the process that was
- * originally created by the popen* call that created the file pointer.
- * The dictionary uses the file pointer as a key (with one entry
- * inserted for each file returned by the original popen* call) and a
- * single list object as the value for all files from a single call.
- * The list object contains the Win32 process handle at [0], and a file
- * count at [1], which is initialized to the total number of file
- * handles using that list.
- *
- * This function closes whichever handle it is passed, and decrements
- * the file count in the dictionary for the process handle pointed to
- * by this file.  On the last close (when the file count reaches zero),
- * this function will wait for the child process and then return its
- * exit code as the result of the close() operation.  This permits the
- * files to be closed in any order - it is always the close() of the
- * final handle that will return the exit code.
- *
- * NOTE: This function is currently called with the GIL released.
- * hence we use the GILState API to manage our state.
- */
-
-static int _PyPclose(FILE *file)
-{
-    int result;
-    DWORD exit_code;
-    HANDLE hProcess;
-    PyObject *procObj, *hProcessObj, *intObj, *fileObj;
-    long file_count;
-#ifdef WITH_THREAD
-    PyGILState_STATE state;
-#endif
-
-    /* Close the file handle first, to ensure it can't block the
-     * child from exiting if it's the last handle.
-     */
-    result = fclose(file);
-#ifdef WITH_THREAD
-    state = PyGILState_Ensure();
-#endif
-    if (_PyPopenProcs) {
-        if ((fileObj = PyLong_FromVoidPtr(file)) != NULL &&
-            (procObj = PyDict_GetItem(_PyPopenProcs,
-                                      fileObj)) != NULL &&
-            (hProcessObj = PyList_GetItem(procObj,0)) != NULL &&
-            (intObj = PyList_GetItem(procObj,1)) != NULL) {
-
-            hProcess = PyLong_AsVoidPtr(hProcessObj);
-            file_count = PyInt_AsLong(intObj);
-
-            if (file_count > 1) {
-                /* Still other files referencing process */
-                file_count--;
-                PyList_SetItem(procObj,1,
-                               PyInt_FromLong(file_count));
-            } else {
-                /* Last file for this process */
-                if (result != EOF &&
-                    WaitForSingleObject(hProcess, INFINITE) != WAIT_FAILED &&
-                    GetExitCodeProcess(hProcess, &exit_code)) {
-                    /* Possible truncation here in 16-bit environments, but
-                     * real exit codes are just the lower byte in any event.
-                     */
-                    result = exit_code;
-                } else {
-                    /* Indicate failure - this will cause the file object
-                     * to raise an I/O error and translate the last Win32
-                     * error code from errno.  We do have a problem with
-                     * last errors that overlap the normal errno table,
-                     * but that's a consistent problem with the file object.
-                     */
-                    if (result != EOF) {
-                        /* If the error wasn't from the fclose(), then
-                         * set errno for the file object error handling.
-                         */
-                        errno = GetLastError();
-                    }
-                    result = -1;
-                }
-
-                /* Free up the native handle at this point */
-                CloseHandle(hProcess);
-            }
-
-            /* Remove this file pointer from dictionary */
-            PyDict_DelItem(_PyPopenProcs, fileObj);
-
-            if (PyDict_Size(_PyPopenProcs) == 0) {
-                Py_DECREF(_PyPopenProcs);
-                _PyPopenProcs = NULL;
-            }
-
-        } /* if object retrieval ok */
-
-        Py_XDECREF(fileObj);
-    } /* if _PyPopenProcs */
-
-#ifdef WITH_THREAD
-    PyGILState_Release(state);
-#endif
-    return result;
-}
-
-#else /* which OS? */
-static PyObject *
-posix_popen(PyObject *self, PyObject *args)
-{
-    char *name;
-    char *mode = "r";
-    int bufsize = -1;
-    FILE *fp;
-    PyObject *f;
-    if (!PyArg_ParseTuple(args, "s|si:popen", &name, &mode, &bufsize))
-        return NULL;
-    /* Strip mode of binary or text modifiers */
-    if (strcmp(mode, "rb") == 0 || strcmp(mode, "rt") == 0)
-        mode = "r";
-    else if (strcmp(mode, "wb") == 0 || strcmp(mode, "wt") == 0)
-        mode = "w";
-    Py_BEGIN_ALLOW_THREADS
-    fp = popen(name, mode);
-    Py_END_ALLOW_THREADS
-    if (fp == NULL)
-        return posix_error();
-    f = PyFile_FromFile(fp, name, mode, pclose);
-    if (f != NULL)
-        PyFile_SetBufSize(f, bufsize);
-    return f;
-}
-
-#endif /* PYOS_??? */
-#endif /* HAVE_POPEN */
-
-
-#ifdef HAVE_SETUID
-PyDoc_STRVAR(posix_setuid__doc__,
-"setuid(uid)\n\n\
-Set the current process's user id.");
-
-static PyObject *
-posix_setuid(PyObject *self, PyObject *args)
-{
-    long uid_arg;
-    uid_t uid;
-    if (!PyArg_ParseTuple(args, "l:setuid", &uid_arg))
-        return NULL;
-    uid = uid_arg;
-    if (uid != uid_arg) {
-        PyErr_SetString(PyExc_OverflowError, "user id too big");
-        return NULL;
-    }
-    if (setuid(uid) < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_SETUID */
-
-
-#ifdef HAVE_SETEUID
-PyDoc_STRVAR(posix_seteuid__doc__,
-"seteuid(uid)\n\n\
-Set the current process's effective user id.");
-
-static PyObject *
-posix_seteuid (PyObject *self, PyObject *args)
-{
-    long euid_arg;
-    uid_t euid;
-    if (!PyArg_ParseTuple(args, "l", &euid_arg))
-        return NULL;
-    euid = euid_arg;
-    if (euid != euid_arg) {
-        PyErr_SetString(PyExc_OverflowError, "user id too big");
-        return NULL;
-    }
-    if (seteuid(euid) < 0) {
-        return posix_error();
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-#endif /* HAVE_SETEUID */
-
-#ifdef HAVE_SETEGID
-PyDoc_STRVAR(posix_setegid__doc__,
-"setegid(gid)\n\n\
-Set the current process's effective group id.");
-
-static PyObject *
-posix_setegid (PyObject *self, PyObject *args)
-{
-    long egid_arg;
-    gid_t egid;
-    if (!PyArg_ParseTuple(args, "l", &egid_arg))
-        return NULL;
-    egid = egid_arg;
-    if (egid != egid_arg) {
-        PyErr_SetString(PyExc_OverflowError, "group id too big");
-        return NULL;
-    }
-    if (setegid(egid) < 0) {
-        return posix_error();
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-#endif /* HAVE_SETEGID */
-
-#ifdef HAVE_SETREUID
-PyDoc_STRVAR(posix_setreuid__doc__,
-"setreuid(ruid, euid)\n\n\
-Set the current process's real and effective user ids.");
-
-static PyObject *
-posix_setreuid (PyObject *self, PyObject *args)
-{
-    long ruid_arg, euid_arg;
-    uid_t ruid, euid;
-    if (!PyArg_ParseTuple(args, "ll", &ruid_arg, &euid_arg))
-        return NULL;
-    if (ruid_arg == -1)
-        ruid = (uid_t)-1;  /* let the compiler choose how -1 fits */
-    else
-        ruid = ruid_arg;  /* otherwise, assign from our long */
-    if (euid_arg == -1)
-        euid = (uid_t)-1;
-    else
-        euid = euid_arg;
-    if ((euid_arg != -1 && euid != euid_arg) ||
-        (ruid_arg != -1 && ruid != ruid_arg)) {
-        PyErr_SetString(PyExc_OverflowError, "user id too big");
-        return NULL;
-    }
-    if (setreuid(ruid, euid) < 0) {
-        return posix_error();
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-#endif /* HAVE_SETREUID */
-
-#ifdef HAVE_SETREGID
-PyDoc_STRVAR(posix_setregid__doc__,
-"setregid(rgid, egid)\n\n\
-Set the current process's real and effective group ids.");
-
-static PyObject *
-posix_setregid (PyObject *self, PyObject *args)
-{
-    long rgid_arg, egid_arg;
-    gid_t rgid, egid;
-    if (!PyArg_ParseTuple(args, "ll", &rgid_arg, &egid_arg))
-        return NULL;
-    if (rgid_arg == -1)
-        rgid = (gid_t)-1;  /* let the compiler choose how -1 fits */
-    else
-        rgid = rgid_arg;  /* otherwise, assign from our long */
-    if (egid_arg == -1)
-        egid = (gid_t)-1;
-    else
-        egid = egid_arg;
-    if ((egid_arg != -1 && egid != egid_arg) ||
-        (rgid_arg != -1 && rgid != rgid_arg)) {
-        PyErr_SetString(PyExc_OverflowError, "group id too big");
-        return NULL;
-    }
-    if (setregid(rgid, egid) < 0) {
-        return posix_error();
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-#endif /* HAVE_SETREGID */
-
-#ifdef HAVE_SETGID
-PyDoc_STRVAR(posix_setgid__doc__,
-"setgid(gid)\n\n\
-Set the current process's group id.");
-
-static PyObject *
-posix_setgid(PyObject *self, PyObject *args)
-{
-    long gid_arg;
-    gid_t gid;
-    if (!PyArg_ParseTuple(args, "l:setgid", &gid_arg))
-        return NULL;
-    gid = gid_arg;
-    if (gid != gid_arg) {
-        PyErr_SetString(PyExc_OverflowError, "group id too big");
-        return NULL;
-    }
-    if (setgid(gid) < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_SETGID */
-
-#ifdef HAVE_SETGROUPS
-PyDoc_STRVAR(posix_setgroups__doc__,
-"setgroups(list)\n\n\
-Set the groups of the current process to list.");
-
-static PyObject *
-posix_setgroups(PyObject *self, PyObject *groups)
-{
-    int i, len;
-    gid_t grouplist[MAX_GROUPS];
-
-    if (!PySequence_Check(groups)) {
-        PyErr_SetString(PyExc_TypeError, "setgroups argument must be a sequence");
-        return NULL;
-    }
-    len = PySequence_Size(groups);
-    if (len > MAX_GROUPS) {
-        PyErr_SetString(PyExc_ValueError, "too many groups");
-        return NULL;
-    }
-    for(i = 0; i < len; i++) {
-        PyObject *elem;
-        elem = PySequence_GetItem(groups, i);
-        if (!elem)
-            return NULL;
-        if (!PyInt_Check(elem)) {
-            if (!PyLong_Check(elem)) {
-                PyErr_SetString(PyExc_TypeError,
-                                "groups must be integers");
-                Py_DECREF(elem);
-                return NULL;
-            } else {
-                unsigned long x = PyLong_AsUnsignedLong(elem);
-                if (PyErr_Occurred()) {
-                    PyErr_SetString(PyExc_TypeError,
-                                    "group id too big");
-                    Py_DECREF(elem);
-                    return NULL;
-                }
-                grouplist[i] = x;
-                /* read back to see if it fits in gid_t */
-                if (grouplist[i] != x) {
-                    PyErr_SetString(PyExc_TypeError,
-                                    "group id too big");
-                    Py_DECREF(elem);
-                    return NULL;
-                }
-            }
-        } else {
-            long x  = PyInt_AsLong(elem);
-            grouplist[i] = x;
-            if (grouplist[i] != x) {
-                PyErr_SetString(PyExc_TypeError,
-                                "group id too big");
-                Py_DECREF(elem);
-                return NULL;
-            }
-        }
-        Py_DECREF(elem);
-    }
-
-    if (setgroups(len, grouplist) < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_SETGROUPS */
-
-#if defined(HAVE_WAIT3) || defined(HAVE_WAIT4)
-static PyObject *
-wait_helper(pid_t pid, int status, struct rusage *ru)
-{
-    PyObject *result;
-    static PyObject *struct_rusage;
-
-    if (pid == -1)
-        return posix_error();
-
-    if (struct_rusage == NULL) {
-        PyObject *m = PyImport_ImportModuleNoBlock("resource");
-        if (m == NULL)
-            return NULL;
-        struct_rusage = PyObject_GetAttrString(m, "struct_rusage");
-        Py_DECREF(m);
-        if (struct_rusage == NULL)
-            return NULL;
-    }
-
-    /* XXX(nnorwitz): Copied (w/mods) from resource.c, there should be only one. */
-    result = PyStructSequence_New((PyTypeObject*) struct_rusage);
-    if (!result)
-        return NULL;
-
-#ifndef doubletime
-#define doubletime(TV) ((double)(TV).tv_sec + (TV).tv_usec * 0.000001)
-#endif
-
-    PyStructSequence_SET_ITEM(result, 0,
-                              PyFloat_FromDouble(doubletime(ru->ru_utime)));
-    PyStructSequence_SET_ITEM(result, 1,
-                              PyFloat_FromDouble(doubletime(ru->ru_stime)));
-#define SET_INT(result, index, value)\
-        PyStructSequence_SET_ITEM(result, index, PyInt_FromLong(value))
-    SET_INT(result, 2, ru->ru_maxrss);
-    SET_INT(result, 3, ru->ru_ixrss);
-    SET_INT(result, 4, ru->ru_idrss);
-    SET_INT(result, 5, ru->ru_isrss);
-    SET_INT(result, 6, ru->ru_minflt);
-    SET_INT(result, 7, ru->ru_majflt);
-    SET_INT(result, 8, ru->ru_nswap);
-    SET_INT(result, 9, ru->ru_inblock);
-    SET_INT(result, 10, ru->ru_oublock);
-    SET_INT(result, 11, ru->ru_msgsnd);
-    SET_INT(result, 12, ru->ru_msgrcv);
-    SET_INT(result, 13, ru->ru_nsignals);
-    SET_INT(result, 14, ru->ru_nvcsw);
-    SET_INT(result, 15, ru->ru_nivcsw);
-#undef SET_INT
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(result);
-        return NULL;
-    }
-
-    return Py_BuildValue("NiN", PyLong_FromPid(pid), status, result);
-}
-#endif /* HAVE_WAIT3 || HAVE_WAIT4 */
-
-#ifdef HAVE_WAIT3
-PyDoc_STRVAR(posix_wait3__doc__,
-"wait3(options) -> (pid, status, rusage)\n\n\
-Wait for completion of a child process.");
-
-static PyObject *
-posix_wait3(PyObject *self, PyObject *args)
-{
-    pid_t pid;
-    int options;
-    struct rusage ru;
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:wait3", &options))
-        return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    pid = wait3(&status, options, &ru);
-    Py_END_ALLOW_THREADS
-
-    return wait_helper(pid, WAIT_STATUS_INT(status), &ru);
-}
-#endif /* HAVE_WAIT3 */
-
-#ifdef HAVE_WAIT4
-PyDoc_STRVAR(posix_wait4__doc__,
-"wait4(pid, options) -> (pid, status, rusage)\n\n\
-Wait for completion of a given child process.");
-
-static PyObject *
-posix_wait4(PyObject *self, PyObject *args)
-{
-    pid_t pid;
-    int options;
-    struct rusage ru;
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, PARSE_PID "i:wait4", &pid, &options))
-        return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    pid = wait4(pid, &status, options, &ru);
-    Py_END_ALLOW_THREADS
-
-    return wait_helper(pid, WAIT_STATUS_INT(status), &ru);
-}
-#endif /* HAVE_WAIT4 */
-
-#ifdef HAVE_WAITPID
-PyDoc_STRVAR(posix_waitpid__doc__,
-"waitpid(pid, options) -> (pid, status)\n\n\
-Wait for completion of a given child process.");
-
-static PyObject *
-posix_waitpid(PyObject *self, PyObject *args)
-{
-    pid_t pid;
-    int options;
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, PARSE_PID "i:waitpid", &pid, &options))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    pid = waitpid(pid, &status, options);
-    Py_END_ALLOW_THREADS
-    if (pid == -1)
-        return posix_error();
-
-    return Py_BuildValue("Ni", PyLong_FromPid(pid), WAIT_STATUS_INT(status));
-}
-
-#elif defined(HAVE_CWAIT)
-
-/* MS C has a variant of waitpid() that's usable for most purposes. */
-PyDoc_STRVAR(posix_waitpid__doc__,
-"waitpid(pid, options) -> (pid, status << 8)\n\n"
-"Wait for completion of a given process.  options is ignored on Windows.");
-
-static PyObject *
-posix_waitpid(PyObject *self, PyObject *args)
-{
-    Py_intptr_t pid;
-    int status, options;
-
-    if (!PyArg_ParseTuple(args, PARSE_PID "i:waitpid", &pid, &options))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    pid = _cwait(&status, pid, options);
-    Py_END_ALLOW_THREADS
-    if (pid == -1)
-        return posix_error();
-
-    /* shift the status left a byte so this is more like the POSIX waitpid */
-    return Py_BuildValue("Ni", PyLong_FromPid(pid), status << 8);
-}
-#endif /* HAVE_WAITPID || HAVE_CWAIT */
-
-#ifdef HAVE_WAIT
-PyDoc_STRVAR(posix_wait__doc__,
-"wait() -> (pid, status)\n\n\
-Wait for completion of a child process.");
-
-static PyObject *
-posix_wait(PyObject *self, PyObject *noargs)
-{
-    pid_t pid;
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    Py_BEGIN_ALLOW_THREADS
-    pid = wait(&status);
-    Py_END_ALLOW_THREADS
-    if (pid == -1)
-        return posix_error();
-
-    return Py_BuildValue("Ni", PyLong_FromPid(pid), WAIT_STATUS_INT(status));
-}
-#endif
-
-
-PyDoc_STRVAR(posix_lstat__doc__,
-"lstat(path) -> stat result\n\n\
-Like stat(path), but do not follow symbolic links.");
-
-static PyObject *
-posix_lstat(PyObject *self, PyObject *args)
-{
-#ifdef HAVE_LSTAT
-    return posix_do_stat(self, args, "et:lstat", lstat, NULL, NULL);
-#else /* !HAVE_LSTAT */
-    return posix_do_stat(self, args, "et:lstat", STAT, NULL, NULL);
-#endif /* !HAVE_LSTAT */
-}
-
-
-#ifdef HAVE_READLINK
-PyDoc_STRVAR(posix_readlink__doc__,
-"readlink(path) -> path\n\n\
-Return a string representing the path to which the symbolic link points.");
-
-static PyObject *
-posix_readlink(PyObject *self, PyObject *args)
-{
-    PyObject* v;
-    char buf[MAXPATHLEN];
-    char *path;
-    int n;
-#ifdef Py_USING_UNICODE
-    int arg_is_unicode = 0;
-#endif
-
-    if (!PyArg_ParseTuple(args, "et:readlink",
-                          Py_FileSystemDefaultEncoding, &path))
-        return NULL;
-#ifdef Py_USING_UNICODE
-    v = PySequence_GetItem(args, 0);
-    if (v == NULL) {
-        PyMem_Free(path);
-        return NULL;
-    }
-
-    if (PyUnicode_Check(v)) {
-        arg_is_unicode = 1;
-    }
-    Py_DECREF(v);
-#endif
-
-    Py_BEGIN_ALLOW_THREADS
-    n = readlink(path, buf, (int) sizeof buf);
-    Py_END_ALLOW_THREADS
-    if (n < 0)
-        return posix_error_with_allocated_filename(path);
-
-    PyMem_Free(path);
-    v = PyString_FromStringAndSize(buf, n);
-#ifdef Py_USING_UNICODE
-    if (arg_is_unicode) {
-        PyObject *w;
-
-        w = PyUnicode_FromEncodedObject(v,
-                                        Py_FileSystemDefaultEncoding,
-                                        "strict");
-        if (w != NULL) {
-            Py_DECREF(v);
-            v = w;
-        }
-        else {
-            /* fall back to the original byte string, as
-               discussed in patch #683592 */
-            PyErr_Clear();
-        }
-    }
-#endif
-    return v;
-}
-#endif /* HAVE_READLINK */
-
-
-#ifdef HAVE_SYMLINK
-PyDoc_STRVAR(posix_symlink__doc__,
-"symlink(src, dst)\n\n\
-Create a symbolic link pointing to src named dst.");
-
-static PyObject *
-posix_symlink(PyObject *self, PyObject *args)
-{
-    return posix_2str(args, "etet:symlink", symlink);
-}
-#endif /* HAVE_SYMLINK */
-
-
-#ifdef HAVE_TIMES
-#if defined(PYCC_VACPP) && defined(PYOS_OS2)
-static long
-system_uptime(void)
-{
-    ULONG     value = 0;
-
-    Py_BEGIN_ALLOW_THREADS
-    DosQuerySysInfo(QSV_MS_COUNT, QSV_MS_COUNT, &value, sizeof(value));
-    Py_END_ALLOW_THREADS
-
-    return value;
-}
-
-static PyObject *
-posix_times(PyObject *self, PyObject *noargs)
-{
-    /* Currently Only Uptime is Provided -- Others Later */
-    return Py_BuildValue("ddddd",
-                         (double)0 /* t.tms_utime / HZ */,
-                         (double)0 /* t.tms_stime / HZ */,
-                         (double)0 /* t.tms_cutime / HZ */,
-                         (double)0 /* t.tms_cstime / HZ */,
-                         (double)system_uptime() / 1000);
-}
-#else /* not OS2 */
-#define NEED_TICKS_PER_SECOND
-static long ticks_per_second = -1;
-static PyObject *
-posix_times(PyObject *self, PyObject *noargs)
-{
-    struct tms t;
-    clock_t c;
-    errno = 0;
-    c = times(&t);
-    if (c == (clock_t) -1)
-        return posix_error();
-    return Py_BuildValue("ddddd",
-                         (double)t.tms_utime / ticks_per_second,
-                         (double)t.tms_stime / ticks_per_second,
-                         (double)t.tms_cutime / ticks_per_second,
-                         (double)t.tms_cstime / ticks_per_second,
-                         (double)c / ticks_per_second);
-}
-#endif /* not OS2 */
-#endif /* HAVE_TIMES */
-
-
-#ifdef HAVE_TIMES
-PyDoc_STRVAR(posix_times__doc__,
-"times() -> (utime, stime, cutime, cstime, elapsed_time)\n\n\
-Return a tuple of floating point numbers indicating process times.");
-#endif
-
-
-#ifdef HAVE_GETSID
-PyDoc_STRVAR(posix_getsid__doc__,
-"getsid(pid) -> sid\n\n\
-Call the system call getsid().");
-
-static PyObject *
-posix_getsid(PyObject *self, PyObject *args)
-{
-    pid_t pid;
-    int sid;
-    if (!PyArg_ParseTuple(args, PARSE_PID ":getsid", &pid))
-        return NULL;
-    sid = getsid(pid);
-    if (sid < 0)
-        return posix_error();
-    return PyInt_FromLong((long)sid);
-}
-#endif /* HAVE_GETSID */
-
-
-#ifdef HAVE_SETSID
-PyDoc_STRVAR(posix_setsid__doc__,
-"setsid()\n\n\
-Call the system call setsid().");
-
-static PyObject *
-posix_setsid(PyObject *self, PyObject *noargs)
-{
-    if (setsid() < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_SETSID */
-
-#ifdef HAVE_SETPGID
-PyDoc_STRVAR(posix_setpgid__doc__,
-"setpgid(pid, pgrp)\n\n\
-Call the system call setpgid().");
-
-static PyObject *
-posix_setpgid(PyObject *self, PyObject *args)
-{
-    pid_t pid;
-    int pgrp;
-    if (!PyArg_ParseTuple(args, PARSE_PID "i:setpgid", &pid, &pgrp))
-        return NULL;
-    if (setpgid(pid, pgrp) < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_SETPGID */
-
-
-#ifdef HAVE_TCGETPGRP
-PyDoc_STRVAR(posix_tcgetpgrp__doc__,
-"tcgetpgrp(fd) -> pgid\n\n\
-Return the process group associated with the terminal given by a fd.");
-
-static PyObject *
-posix_tcgetpgrp(PyObject *self, PyObject *args)
-{
-    int fd;
-    pid_t pgid;
-    if (!PyArg_ParseTuple(args, "i:tcgetpgrp", &fd))
-        return NULL;
-    pgid = tcgetpgrp(fd);
-    if (pgid < 0)
-        return posix_error();
-    return PyLong_FromPid(pgid);
-}
-#endif /* HAVE_TCGETPGRP */
-
-
-#ifdef HAVE_TCSETPGRP
-PyDoc_STRVAR(posix_tcsetpgrp__doc__,
-"tcsetpgrp(fd, pgid)\n\n\
-Set the process group associated with the terminal given by a fd.");
-
-static PyObject *
-posix_tcsetpgrp(PyObject *self, PyObject *args)
-{
-    int fd;
-    pid_t pgid;
-    if (!PyArg_ParseTuple(args, "i" PARSE_PID ":tcsetpgrp", &fd, &pgid))
-        return NULL;
-    if (tcsetpgrp(fd, pgid) < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_TCSETPGRP */
-
-/* Functions acting on file descriptors */
-
-PyDoc_STRVAR(posix_open__doc__,
-"open(filename, flag [, mode=0777]) -> fd\n\n\
-Open a file (for low level IO).");
-
-static PyObject *
-posix_open(PyObject *self, PyObject *args)
-{
-    char *file = NULL;
-    int flag;
-    int mode = 0777;
-    int fd;
-
-    if (!PyArg_ParseTuple(args, "eti|i",
-                          Py_FileSystemDefaultEncoding, &file,
-                          &flag, &mode))
-        return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    fd = open(file, flag, mode);
-    Py_END_ALLOW_THREADS
-    if (fd < 0)
-        return posix_error_with_allocated_filename(file);
-    PyMem_Free(file);
-    return PyInt_FromLong((long)fd);
-}
-
-
-PyDoc_STRVAR(posix_close__doc__,
-"close(fd)\n\n\
-Close a file descriptor (for low level IO).");
-
-static PyObject *
-posix_close(PyObject *self, PyObject *args)
-{
-    int fd, res;
-    if (!PyArg_ParseTuple(args, "i:close", &fd))
-        return NULL;
-    if (!_PyVerify_fd(fd))
-        return posix_error();
-    Py_BEGIN_ALLOW_THREADS
-    res = close(fd);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-
-PyDoc_STRVAR(posix_closerange__doc__,
-"closerange(fd_low, fd_high)\n\n\
-Closes all file descriptors in [fd_low, fd_high), ignoring errors.");
-
-static PyObject *
-posix_closerange(PyObject *self, PyObject *args)
-{
-    int fd_from, fd_to, i;
-    if (!PyArg_ParseTuple(args, "ii:closerange", &fd_from, &fd_to))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    for (i = fd_from; i < fd_to; i++)
-        if (_PyVerify_fd(i))
-            close(i);
-    Py_END_ALLOW_THREADS
-    Py_RETURN_NONE;
-}
-
-
-PyDoc_STRVAR(posix_dup__doc__,
-"dup(fd) -> fd2\n\n\
-Return a duplicate of a file descriptor.");
-
-static PyObject *
-posix_dup(PyObject *self, PyObject *args)
-{
-    int fd;
-    if (!PyArg_ParseTuple(args, "i:dup", &fd))
-        return NULL;
-    if (!_PyVerify_fd(fd))
-        return posix_error();
-    Py_BEGIN_ALLOW_THREADS
-    fd = dup(fd);
-    Py_END_ALLOW_THREADS
-    if (fd < 0)
-        return posix_error();
-    return PyInt_FromLong((long)fd);
-}
-
-
-PyDoc_STRVAR(posix_dup2__doc__,
-"dup2(old_fd, new_fd)\n\n\
-Duplicate file descriptor.");
-
-static PyObject *
-posix_dup2(PyObject *self, PyObject *args)
-{
-    int fd, fd2, res;
-    if (!PyArg_ParseTuple(args, "ii:dup2", &fd, &fd2))
-        return NULL;
-    if (!_PyVerify_fd_dup2(fd, fd2))
-        return posix_error();
-    Py_BEGIN_ALLOW_THREADS
-    res = dup2(fd, fd2);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-
-PyDoc_STRVAR(posix_lseek__doc__,
-"lseek(fd, pos, how) -> newpos\n\n\
-Set the current position of a file descriptor.");
-
-static PyObject *
-posix_lseek(PyObject *self, PyObject *args)
-{
-    int fd, how;
-    off_t pos, res;
-    PyObject *posobj;
-    if (!PyArg_ParseTuple(args, "iOi:lseek", &fd, &posobj, &how))
-        return NULL;
-#ifdef SEEK_SET
-    /* Turn 0, 1, 2 into SEEK_{SET,CUR,END} */
-    switch (how) {
-    case 0: how = SEEK_SET; break;
-    case 1: how = SEEK_CUR; break;
-    case 2: how = SEEK_END; break;
-    }
-#endif /* SEEK_END */
-
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    pos = PyInt_AsLong(posobj);
-#else
-    pos = PyLong_Check(posobj) ?
-        PyLong_AsLongLong(posobj) : PyInt_AsLong(posobj);
-#endif
-    if (PyErr_Occurred())
-        return NULL;
-
-    if (!_PyVerify_fd(fd))
-        return posix_error();
-    Py_BEGIN_ALLOW_THREADS
-    res = lseek(fd, pos, how);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    return PyInt_FromLong(res);
-#else
-    return PyLong_FromLongLong(res);
-#endif
-}
-
-
-PyDoc_STRVAR(posix_read__doc__,
-"read(fd, buffersize) -> string\n\n\
-Read a file descriptor.");
-
-static PyObject *
-posix_read(PyObject *self, PyObject *args)
-{
-    int fd, size, n;
-    PyObject *buffer;
-    if (!PyArg_ParseTuple(args, "ii:read", &fd, &size))
-        return NULL;
-    if (size < 0) {
-        errno = EINVAL;
-        return posix_error();
-    }
-    buffer = PyString_FromStringAndSize((char *)NULL, size);
-    if (buffer == NULL)
-        return NULL;
-    if (!_PyVerify_fd(fd)) {
-        Py_DECREF(buffer);
-        return posix_error();
-    }
-    Py_BEGIN_ALLOW_THREADS
-    n = read(fd, PyString_AsString(buffer), size);
-    Py_END_ALLOW_THREADS
-    if (n < 0) {
-        Py_DECREF(buffer);
-        return posix_error();
-    }
-    if (n != size)
-        _PyString_Resize(&buffer, n);
-    return buffer;
-}
-
-
-PyDoc_STRVAR(posix_write__doc__,
-"write(fd, string) -> byteswritten\n\n\
-Write a string to a file descriptor.");
-
-static PyObject *
-posix_write(PyObject *self, PyObject *args)
-{
-    Py_buffer pbuf;
-    int fd;
-    Py_ssize_t size;
-
-    if (!PyArg_ParseTuple(args, "is*:write", &fd, &pbuf))
-        return NULL;
-    if (!_PyVerify_fd(fd)) {
-        PyBuffer_Release(&pbuf);
-        return posix_error();
-    }
-    Py_BEGIN_ALLOW_THREADS
-    size = write(fd, pbuf.buf, (size_t)pbuf.len);
-    Py_END_ALLOW_THREADS
-    PyBuffer_Release(&pbuf);
-    if (size < 0)
-        return posix_error();
-    return PyInt_FromSsize_t(size);
-}
-
-
-PyDoc_STRVAR(posix_fstat__doc__,
-"fstat(fd) -> stat result\n\n\
-Like stat(), but for an open file descriptor.");
-
-static PyObject *
-posix_fstat(PyObject *self, PyObject *args)
-{
-    int fd;
-    STRUCT_STAT st;
-    int res;
-    if (!PyArg_ParseTuple(args, "i:fstat", &fd))
-        return NULL;
-    if (!_PyVerify_fd(fd))
-        return posix_error();
-    Py_BEGIN_ALLOW_THREADS
-    res = FSTAT(fd, &st);
-    Py_END_ALLOW_THREADS
-    if (res != 0) {
-      return posix_error();
-    }
-
-    return _pystat_fromstructstat(&st);
-}
-
-
-PyDoc_STRVAR(posix_fdopen__doc__,
-"fdopen(fd [, mode='r' [, bufsize]]) -> file_object\n\n\
-Return an open file object connected to a file descriptor.");
-
-static PyObject *
-posix_fdopen(PyObject *self, PyObject *args)
-{
-    int fd;
-    char *orgmode = "r";
-    int bufsize = -1;
-    FILE *fp;
-    PyObject *f;
-    char *mode;
-    if (!PyArg_ParseTuple(args, "i|si", &fd, &orgmode, &bufsize))
-        return NULL;
-
-    /* Sanitize mode.  See fileobject.c */
-    mode = PyMem_MALLOC(strlen(orgmode)+3);
-    if (!mode) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-    strcpy(mode, orgmode);
-    if (_PyFile_SanitizeMode(mode)) {
-        PyMem_FREE(mode);
-        return NULL;
-    }
-    if (!_PyVerify_fd(fd))
-        return posix_error();
-    Py_BEGIN_ALLOW_THREADS
-#if !defined(MS_WINDOWS) && defined(HAVE_FCNTL_H)
-    if (mode[0] == 'a') {
-        /* try to make sure the O_APPEND flag is set */
-        int flags;
-        flags = fcntl(fd, F_GETFL);
-        if (flags != -1)
-            fcntl(fd, F_SETFL, flags | O_APPEND);
-        fp = fdopen(fd, mode);
-        if (fp == NULL && flags != -1)
-            /* restore old mode if fdopen failed */
-            fcntl(fd, F_SETFL, flags);
-    } else {
-        fp = fdopen(fd, mode);
-    }
-#else
-    fp = fdopen(fd, mode);
-#endif
-    Py_END_ALLOW_THREADS
-    PyMem_FREE(mode);
-    if (fp == NULL)
-        return posix_error();
-    f = PyFile_FromFile(fp, "<fdopen>", orgmode, fclose);
-    if (f != NULL)
-        PyFile_SetBufSize(f, bufsize);
-    return f;
-}
-
-PyDoc_STRVAR(posix_isatty__doc__,
-"isatty(fd) -> bool\n\n\
-Return True if the file descriptor 'fd' is an open file descriptor\n\
-connected to the slave end of a terminal.");
-
-static PyObject *
-posix_isatty(PyObject *self, PyObject *args)
-{
-    int fd;
-    if (!PyArg_ParseTuple(args, "i:isatty", &fd))
-        return NULL;
-    if (!_PyVerify_fd(fd))
-        return PyBool_FromLong(0);
-    return PyBool_FromLong(isatty(fd));
-}
-
-#ifdef HAVE_PIPE
-PyDoc_STRVAR(posix_pipe__doc__,
-"pipe() -> (read_end, write_end)\n\n\
-Create a pipe.");
-
-static PyObject *
-posix_pipe(PyObject *self, PyObject *noargs)
-{
-#if defined(PYOS_OS2)
-    HFILE read, write;
-    APIRET rc;
-
-    Py_BEGIN_ALLOW_THREADS
-    rc = DosCreatePipe( &read, &write, 4096);
-    Py_END_ALLOW_THREADS
-    if (rc != NO_ERROR)
-        return os2_error(rc);
-
-    return Py_BuildValue("(ii)", read, write);
-#else
-#if !defined(MS_WINDOWS)
-    int fds[2];
-    int res;
-    Py_BEGIN_ALLOW_THREADS
-    res = pipe(fds);
-    Py_END_ALLOW_THREADS
-    if (res != 0)
-        return posix_error();
-    return Py_BuildValue("(ii)", fds[0], fds[1]);
-#else /* MS_WINDOWS */
-    HANDLE read, write;
-    int read_fd, write_fd;
-    BOOL ok;
-    Py_BEGIN_ALLOW_THREADS
-    ok = CreatePipe(&read, &write, NULL, 0);
-    Py_END_ALLOW_THREADS
-    if (!ok)
-        return win32_error("CreatePipe", NULL);
-    read_fd = _open_osfhandle((Py_intptr_t)read, 0);
-    write_fd = _open_osfhandle((Py_intptr_t)write, 1);
-    return Py_BuildValue("(ii)", read_fd, write_fd);
-#endif /* MS_WINDOWS */
-#endif
-}
-#endif  /* HAVE_PIPE */
-
-
-#ifdef HAVE_MKFIFO
-PyDoc_STRVAR(posix_mkfifo__doc__,
-"mkfifo(filename [, mode=0666])\n\n\
-Create a FIFO (a POSIX named pipe).");
-
-static PyObject *
-posix_mkfifo(PyObject *self, PyObject *args)
-{
-    char *filename;
-    int mode = 0666;
-    int res;
-    if (!PyArg_ParseTuple(args, "s|i:mkfifo", &filename, &mode))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = mkfifo(filename, mode);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-
-#if defined(HAVE_MKNOD) && defined(HAVE_MAKEDEV)
-PyDoc_STRVAR(posix_mknod__doc__,
-"mknod(filename [, mode=0600, device])\n\n\
-Create a filesystem node (file, device special file or named pipe)\n\
-named filename. mode specifies both the permissions to use and the\n\
-type of node to be created, being combined (bitwise OR) with one of\n\
-S_IFREG, S_IFCHR, S_IFBLK, and S_IFIFO. For S_IFCHR and S_IFBLK,\n\
-device defines the newly created device special file (probably using\n\
-os.makedev()), otherwise it is ignored.");
-
-
-static PyObject *
-posix_mknod(PyObject *self, PyObject *args)
-{
-    char *filename;
-    int mode = 0600;
-    int device = 0;
-    int res;
-    if (!PyArg_ParseTuple(args, "s|ii:mknod", &filename, &mode, &device))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = mknod(filename, mode, device);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-#ifdef HAVE_DEVICE_MACROS
-PyDoc_STRVAR(posix_major__doc__,
-"major(device) -> major number\n\
-Extracts a device major number from a raw device number.");
-
-static PyObject *
-posix_major(PyObject *self, PyObject *args)
-{
-    int device;
-    if (!PyArg_ParseTuple(args, "i:major", &device))
-        return NULL;
-    return PyInt_FromLong((long)major(device));
-}
-
-PyDoc_STRVAR(posix_minor__doc__,
-"minor(device) -> minor number\n\
-Extracts a device minor number from a raw device number.");
-
-static PyObject *
-posix_minor(PyObject *self, PyObject *args)
-{
-    int device;
-    if (!PyArg_ParseTuple(args, "i:minor", &device))
-        return NULL;
-    return PyInt_FromLong((long)minor(device));
-}
-
-PyDoc_STRVAR(posix_makedev__doc__,
-"makedev(major, minor) -> device number\n\
-Composes a raw device number from the major and minor device numbers.");
-
-static PyObject *
-posix_makedev(PyObject *self, PyObject *args)
-{
-    int major, minor;
-    if (!PyArg_ParseTuple(args, "ii:makedev", &major, &minor))
-        return NULL;
-    return PyInt_FromLong((long)makedev(major, minor));
-}
-#endif /* device macros */
-
-
-#ifdef HAVE_FTRUNCATE
-PyDoc_STRVAR(posix_ftruncate__doc__,
-"ftruncate(fd, length)\n\n\
-Truncate a file to a specified length.");
-
-static PyObject *
-posix_ftruncate(PyObject *self, PyObject *args)
-{
-    int fd;
-    off_t length;
-    int res;
-    PyObject *lenobj;
-
-    if (!PyArg_ParseTuple(args, "iO:ftruncate", &fd, &lenobj))
-        return NULL;
-
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    length = PyInt_AsLong(lenobj);
-#else
-    length = PyLong_Check(lenobj) ?
-        PyLong_AsLongLong(lenobj) : PyInt_AsLong(lenobj);
-#endif
-    if (PyErr_Occurred())
-        return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    res = ftruncate(fd, length);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-#ifdef HAVE_PUTENV
-PyDoc_STRVAR(posix_putenv__doc__,
-"putenv(key, value)\n\n\
-Change or add an environment variable.");
-
-/* Save putenv() parameters as values here, so we can collect them when they
- * get re-set with another call for the same key. */
-static PyObject *posix_putenv_garbage;
-
-static PyObject *
-posix_putenv(PyObject *self, PyObject *args)
-{
-    char *s1, *s2;
-    char *newenv;
-    PyObject *newstr;
-    size_t len;
-
-    if (!PyArg_ParseTuple(args, "ss:putenv", &s1, &s2))
-        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);
-    } else {
-#endif
-
-    /* XXX This can leak memory -- not easy to fix :-( */
-    len = strlen(s1) + strlen(s2) + 2;
-    /* len includes space for a trailing \0; the size arg to
-       PyString_FromStringAndSize does not count that */
-    newstr = PyString_FromStringAndSize(NULL, (int)len - 1);
-    if (newstr == NULL)
-        return PyErr_NoMemory();
-    newenv = PyString_AS_STRING(newstr);
-    PyOS_snprintf(newenv, len, "%s=%s", s1, s2);
-    if (putenv(newenv)) {
-        Py_DECREF(newstr);
-        posix_error();
-        return NULL;
-    }
-    /* Install the first arg and newstr in posix_putenv_garbage;
-     * this will cause previous value to be collected.  This has to
-     * happen after the real putenv() call because the old value
-     * was still accessible until then. */
-    if (PyDict_SetItem(posix_putenv_garbage,
-                       PyTuple_GET_ITEM(args, 0), newstr)) {
-        /* really not much we can do; just leak */
-        PyErr_Clear();
-    }
-    else {
-        Py_DECREF(newstr);
-    }
-
-#if defined(PYOS_OS2)
-    }
-#endif
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* putenv */
-
-#ifdef HAVE_UNSETENV
-PyDoc_STRVAR(posix_unsetenv__doc__,
-"unsetenv(key)\n\n\
-Delete an environment variable.");
-
-static PyObject *
-posix_unsetenv(PyObject *self, PyObject *args)
-{
-    char *s1;
-
-    if (!PyArg_ParseTuple(args, "s:unsetenv", &s1))
-        return NULL;
-
-    unsetenv(s1);
-
-    /* Remove the key from posix_putenv_garbage;
-     * this will cause it to be collected.  This has to
-     * happen after the real unsetenv() call because the
-     * old value was still accessible until then.
-     */
-    if (PyDict_DelItem(posix_putenv_garbage,
-                       PyTuple_GET_ITEM(args, 0))) {
-        /* really not much we can do; just leak */
-        PyErr_Clear();
-    }
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* unsetenv */
-
-PyDoc_STRVAR(posix_strerror__doc__,
-"strerror(code) -> string\n\n\
-Translate an error code to a message string.");
-
-static PyObject *
-posix_strerror(PyObject *self, PyObject *args)
-{
-    int code;
-    char *message;
-    if (!PyArg_ParseTuple(args, "i:strerror", &code))
-        return NULL;
-    message = strerror(code);
-    if (message == NULL) {
-        PyErr_SetString(PyExc_ValueError,
-                        "strerror() argument out of range");
-        return NULL;
-    }
-    return PyString_FromString(message);
-}
-
-
-#ifdef HAVE_SYS_WAIT_H
-
-#ifdef WCOREDUMP
-PyDoc_STRVAR(posix_WCOREDUMP__doc__,
-"WCOREDUMP(status) -> bool\n\n\
-Return True if the process returning 'status' was dumped to a core file.");
-
-static PyObject *
-posix_WCOREDUMP(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WCOREDUMP", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return PyBool_FromLong(WCOREDUMP(status));
-}
-#endif /* WCOREDUMP */
-
-#ifdef WIFCONTINUED
-PyDoc_STRVAR(posix_WIFCONTINUED__doc__,
-"WIFCONTINUED(status) -> bool\n\n\
-Return True if the process returning 'status' was continued from a\n\
-job control stop.");
-
-static PyObject *
-posix_WIFCONTINUED(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WCONTINUED", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return PyBool_FromLong(WIFCONTINUED(status));
-}
-#endif /* WIFCONTINUED */
-
-#ifdef WIFSTOPPED
-PyDoc_STRVAR(posix_WIFSTOPPED__doc__,
-"WIFSTOPPED(status) -> bool\n\n\
-Return True if the process returning 'status' was stopped.");
-
-static PyObject *
-posix_WIFSTOPPED(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WIFSTOPPED", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return PyBool_FromLong(WIFSTOPPED(status));
-}
-#endif /* WIFSTOPPED */
-
-#ifdef WIFSIGNALED
-PyDoc_STRVAR(posix_WIFSIGNALED__doc__,
-"WIFSIGNALED(status) -> bool\n\n\
-Return True if the process returning 'status' was terminated by a signal.");
-
-static PyObject *
-posix_WIFSIGNALED(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WIFSIGNALED", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return PyBool_FromLong(WIFSIGNALED(status));
-}
-#endif /* WIFSIGNALED */
-
-#ifdef WIFEXITED
-PyDoc_STRVAR(posix_WIFEXITED__doc__,
-"WIFEXITED(status) -> bool\n\n\
-Return true if the process returning 'status' exited using the exit()\n\
-system call.");
-
-static PyObject *
-posix_WIFEXITED(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WIFEXITED", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return PyBool_FromLong(WIFEXITED(status));
-}
-#endif /* WIFEXITED */
-
-#ifdef WEXITSTATUS
-PyDoc_STRVAR(posix_WEXITSTATUS__doc__,
-"WEXITSTATUS(status) -> integer\n\n\
-Return the process return code from 'status'.");
-
-static PyObject *
-posix_WEXITSTATUS(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WEXITSTATUS", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return Py_BuildValue("i", WEXITSTATUS(status));
-}
-#endif /* WEXITSTATUS */
-
-#ifdef WTERMSIG
-PyDoc_STRVAR(posix_WTERMSIG__doc__,
-"WTERMSIG(status) -> integer\n\n\
-Return the signal that terminated the process that provided the 'status'\n\
-value.");
-
-static PyObject *
-posix_WTERMSIG(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WTERMSIG", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return Py_BuildValue("i", WTERMSIG(status));
-}
-#endif /* WTERMSIG */
-
-#ifdef WSTOPSIG
-PyDoc_STRVAR(posix_WSTOPSIG__doc__,
-"WSTOPSIG(status) -> integer\n\n\
-Return the signal that stopped the process that provided\n\
-the 'status' value.");
-
-static PyObject *
-posix_WSTOPSIG(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WSTOPSIG", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return Py_BuildValue("i", WSTOPSIG(status));
-}
-#endif /* WSTOPSIG */
-
-#endif /* HAVE_SYS_WAIT_H */
-
-
-#if defined(HAVE_FSTATVFS) && defined(HAVE_SYS_STATVFS_H)
-#ifdef _SCO_DS
-/* SCO OpenServer 5.0 and later requires _SVID3 before it reveals the
-   needed definitions in sys/statvfs.h */
-#define _SVID3
-#endif
-#include <sys/statvfs.h>
-
-static PyObject*
-_pystatvfs_fromstructstatvfs(struct statvfs st) {
-    PyObject *v = PyStructSequence_New(&StatVFSResultType);
-    if (v == NULL)
-        return NULL;
-
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    PyStructSequence_SET_ITEM(v, 0, PyInt_FromLong((long) st.f_bsize));
-    PyStructSequence_SET_ITEM(v, 1, PyInt_FromLong((long) st.f_frsize));
-    PyStructSequence_SET_ITEM(v, 2, PyInt_FromLong((long) st.f_blocks));
-    PyStructSequence_SET_ITEM(v, 3, PyInt_FromLong((long) st.f_bfree));
-    PyStructSequence_SET_ITEM(v, 4, PyInt_FromLong((long) st.f_bavail));
-    PyStructSequence_SET_ITEM(v, 5, PyInt_FromLong((long) st.f_files));
-    PyStructSequence_SET_ITEM(v, 6, PyInt_FromLong((long) st.f_ffree));
-    PyStructSequence_SET_ITEM(v, 7, PyInt_FromLong((long) st.f_favail));
-    PyStructSequence_SET_ITEM(v, 8, PyInt_FromLong((long) st.f_flag));
-    PyStructSequence_SET_ITEM(v, 9, PyInt_FromLong((long) st.f_namemax));
-#else
-    PyStructSequence_SET_ITEM(v, 0, PyInt_FromLong((long) st.f_bsize));
-    PyStructSequence_SET_ITEM(v, 1, PyInt_FromLong((long) st.f_frsize));
-    PyStructSequence_SET_ITEM(v, 2,
-                              PyLong_FromLongLong((PY_LONG_LONG) st.f_blocks));
-    PyStructSequence_SET_ITEM(v, 3,
-                              PyLong_FromLongLong((PY_LONG_LONG) st.f_bfree));
-    PyStructSequence_SET_ITEM(v, 4,
-                              PyLong_FromLongLong((PY_LONG_LONG) st.f_bavail));
-    PyStructSequence_SET_ITEM(v, 5,
-                              PyLong_FromLongLong((PY_LONG_LONG) st.f_files));
-    PyStructSequence_SET_ITEM(v, 6,
-                              PyLong_FromLongLong((PY_LONG_LONG) st.f_ffree));
-    PyStructSequence_SET_ITEM(v, 7,
-                              PyLong_FromLongLong((PY_LONG_LONG) st.f_favail));
-    PyStructSequence_SET_ITEM(v, 8, PyInt_FromLong((long) st.f_flag));
-    PyStructSequence_SET_ITEM(v, 9, PyInt_FromLong((long) st.f_namemax));
-#endif
-
-    return v;
-}
-
-PyDoc_STRVAR(posix_fstatvfs__doc__,
-"fstatvfs(fd) -> statvfs result\n\n\
-Perform an fstatvfs system call on the given fd.");
-
-static PyObject *
-posix_fstatvfs(PyObject *self, PyObject *args)
-{
-    int fd, res;
-    struct statvfs st;
-
-    if (!PyArg_ParseTuple(args, "i:fstatvfs", &fd))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = fstatvfs(fd, &st);
-    Py_END_ALLOW_THREADS
-    if (res != 0)
-        return posix_error();
-
-    return _pystatvfs_fromstructstatvfs(st);
-}
-#endif /* HAVE_FSTATVFS && HAVE_SYS_STATVFS_H */
-
-
-#if defined(HAVE_STATVFS) && defined(HAVE_SYS_STATVFS_H)
-#include <sys/statvfs.h>
-
-PyDoc_STRVAR(posix_statvfs__doc__,
-"statvfs(path) -> statvfs result\n\n\
-Perform a statvfs system call on the given path.");
-
-static PyObject *
-posix_statvfs(PyObject *self, PyObject *args)
-{
-    char *path;
-    int res;
-    struct statvfs st;
-    if (!PyArg_ParseTuple(args, "s:statvfs", &path))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = statvfs(path, &st);
-    Py_END_ALLOW_THREADS
-    if (res != 0)
-        return posix_error_with_filename(path);
-
-    return _pystatvfs_fromstructstatvfs(st);
-}
-#endif /* HAVE_STATVFS */
-
-
-#ifdef HAVE_TEMPNAM
-PyDoc_STRVAR(posix_tempnam__doc__,
-"tempnam([dir[, prefix]]) -> string\n\n\
-Return a unique name for a temporary file.\n\
-The directory and a prefix may be specified as strings; they may be omitted\n\
-or None if not needed.");
-
-static PyObject *
-posix_tempnam(PyObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-    char *dir = NULL;
-    char *pfx = NULL;
-    char *name;
-
-    if (!PyArg_ParseTuple(args, "|zz:tempnam", &dir, &pfx))
-    return NULL;
-
-    if (PyErr_Warn(PyExc_RuntimeWarning,
-                   "tempnam is a potential security risk to your program") < 0)
-        return NULL;
-
-    if (PyErr_WarnPy3k("tempnam has been removed in 3.x; "
-                       "use the tempfile module", 1) < 0)
-        return NULL;
-
-    name = tempnam(dir, pfx);
-    if (name == NULL)
-        return PyErr_NoMemory();
-    result = PyString_FromString(name);
-    free(name);
-    return result;
-}
-#endif
-
-
-#ifdef HAVE_TMPFILE
-PyDoc_STRVAR(posix_tmpfile__doc__,
-"tmpfile() -> file object\n\n\
-Create a temporary file with no directory entries.");
-
-static PyObject *
-posix_tmpfile(PyObject *self, PyObject *noargs)
-{
-    FILE *fp;
-
-    if (PyErr_WarnPy3k("tmpfile has been removed in 3.x; "
-                       "use the tempfile module", 1) < 0)
-        return NULL;
-
-    fp = tmpfile();
-    if (fp == NULL)
-        return posix_error();
-    return PyFile_FromFile(fp, "<tmpfile>", "w+b", fclose);
-}
-#endif
-
-
-#ifdef HAVE_TMPNAM
-PyDoc_STRVAR(posix_tmpnam__doc__,
-"tmpnam() -> string\n\n\
-Return a unique name for a temporary file.");
-
-static PyObject *
-posix_tmpnam(PyObject *self, PyObject *noargs)
-{
-    char buffer[L_tmpnam];
-    char *name;
-
-    if (PyErr_Warn(PyExc_RuntimeWarning,
-                   "tmpnam is a potential security risk to your program") < 0)
-        return NULL;
-
-    if (PyErr_WarnPy3k("tmpnam has been removed in 3.x; "
-                       "use the tempfile module", 1) < 0)
-        return NULL;
-
-#ifdef USE_TMPNAM_R
-    name = tmpnam_r(buffer);
-#else
-    name = tmpnam(buffer);
-#endif
-    if (name == NULL) {
-        PyObject *err = Py_BuildValue("is", 0,
-#ifdef USE_TMPNAM_R
-                                      "unexpected NULL from tmpnam_r"
-#else
-                                      "unexpected NULL from tmpnam"
-#endif
-                                      );
-        PyErr_SetObject(PyExc_OSError, err);
-        Py_XDECREF(err);
-        return NULL;
-    }
-    return PyString_FromString(buffer);
-}
-#endif
-
-
-/* This is used for fpathconf(), pathconf(), confstr() and sysconf().
- * It maps strings representing configuration variable names to
- * integer values, allowing those functions to be called with the
- * magic names instead of polluting the module's namespace with tons of
- * rarely-used constants.  There are three separate tables that use
- * these definitions.
- *
- * This code is always included, even if none of the interfaces that
- * need it are included.  The #if hackery needed to avoid it would be
- * sufficiently pervasive that it's not worth the loss of readability.
- */
-struct constdef {
-    char *name;
-    long value;
-};
-
-#ifndef UEFI_C_SOURCE
-static int
-conv_confname(PyObject *arg, int *valuep, struct constdef *table,
-              size_t tablesize)
-{
-    if (PyInt_Check(arg)) {
-        *valuep = PyInt_AS_LONG(arg);
-        return 1;
-    }
-    if (PyString_Check(arg)) {
-        /* look up the value in the table using a binary search */
-        size_t lo = 0;
-        size_t mid;
-        size_t hi = tablesize;
-        int cmp;
-        char *confname = PyString_AS_STRING(arg);
-        while (lo < hi) {
-            mid = (lo + hi) / 2;
-            cmp = strcmp(confname, table[mid].name);
-            if (cmp < 0)
-                hi = mid;
-            else if (cmp > 0)
-                lo = mid + 1;
-            else {
-                *valuep = table[mid].value;
-                return 1;
-            }
-        }
-        PyErr_SetString(PyExc_ValueError, "unrecognized configuration name");
-    }
-    else
-        PyErr_SetString(PyExc_TypeError,
-                        "configuration names must be strings or integers");
-    return 0;
-}
-#endif  /* UEFI_C_SOURCE */
-
-#if defined(HAVE_FPATHCONF) || defined(HAVE_PATHCONF)
-static struct constdef  posix_constants_pathconf[] = {
-#ifdef _PC_ABI_AIO_XFER_MAX
-    {"PC_ABI_AIO_XFER_MAX",     _PC_ABI_AIO_XFER_MAX},
-#endif
-#ifdef _PC_ABI_ASYNC_IO
-    {"PC_ABI_ASYNC_IO", _PC_ABI_ASYNC_IO},
-#endif
-#ifdef _PC_ASYNC_IO
-    {"PC_ASYNC_IO",     _PC_ASYNC_IO},
-#endif
-#ifdef _PC_CHOWN_RESTRICTED
-    {"PC_CHOWN_RESTRICTED",     _PC_CHOWN_RESTRICTED},
-#endif
-#ifdef _PC_FILESIZEBITS
-    {"PC_FILESIZEBITS", _PC_FILESIZEBITS},
-#endif
-#ifdef _PC_LAST
-    {"PC_LAST", _PC_LAST},
-#endif
-#ifdef _PC_LINK_MAX
-    {"PC_LINK_MAX",     _PC_LINK_MAX},
-#endif
-#ifdef _PC_MAX_CANON
-    {"PC_MAX_CANON",    _PC_MAX_CANON},
-#endif
-#ifdef _PC_MAX_INPUT
-    {"PC_MAX_INPUT",    _PC_MAX_INPUT},
-#endif
-#ifdef _PC_NAME_MAX
-    {"PC_NAME_MAX",     _PC_NAME_MAX},
-#endif
-#ifdef _PC_NO_TRUNC
-    {"PC_NO_TRUNC",     _PC_NO_TRUNC},
-#endif
-#ifdef _PC_PATH_MAX
-    {"PC_PATH_MAX",     _PC_PATH_MAX},
-#endif
-#ifdef _PC_PIPE_BUF
-    {"PC_PIPE_BUF",     _PC_PIPE_BUF},
-#endif
-#ifdef _PC_PRIO_IO
-    {"PC_PRIO_IO",      _PC_PRIO_IO},
-#endif
-#ifdef _PC_SOCK_MAXBUF
-    {"PC_SOCK_MAXBUF",  _PC_SOCK_MAXBUF},
-#endif
-#ifdef _PC_SYNC_IO
-    {"PC_SYNC_IO",      _PC_SYNC_IO},
-#endif
-#ifdef _PC_VDISABLE
-    {"PC_VDISABLE",     _PC_VDISABLE},
-#endif
-};
-
-static int
-conv_path_confname(PyObject *arg, int *valuep)
-{
-    return conv_confname(arg, valuep, posix_constants_pathconf,
-                         sizeof(posix_constants_pathconf)
-                           / sizeof(struct constdef));
-}
-#endif
-
-#ifdef HAVE_FPATHCONF
-PyDoc_STRVAR(posix_fpathconf__doc__,
-"fpathconf(fd, name) -> integer\n\n\
-Return the configuration limit name for the file descriptor fd.\n\
-If there is no limit, return -1.");
-
-static PyObject *
-posix_fpathconf(PyObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-    int name, fd;
-
-    if (PyArg_ParseTuple(args, "iO&:fpathconf", &fd,
-                         conv_path_confname, &name)) {
-        long limit;
-
-        errno = 0;
-        limit = fpathconf(fd, name);
-        if (limit == -1 && errno != 0)
-            posix_error();
-        else
-            result = PyInt_FromLong(limit);
-    }
-    return result;
-}
-#endif
-
-
-#ifdef HAVE_PATHCONF
-PyDoc_STRVAR(posix_pathconf__doc__,
-"pathconf(path, name) -> integer\n\n\
-Return the configuration limit name for the file or directory path.\n\
-If there is no limit, return -1.");
-
-static PyObject *
-posix_pathconf(PyObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-    int name;
-    char *path;
-
-    if (PyArg_ParseTuple(args, "sO&:pathconf", &path,
-                         conv_path_confname, &name)) {
-    long limit;
-
-    errno = 0;
-    limit = pathconf(path, name);
-    if (limit == -1 && errno != 0) {
-        if (errno == EINVAL)
-            /* could be a path or name problem */
-            posix_error();
-        else
-            posix_error_with_filename(path);
-    }
-    else
-        result = PyInt_FromLong(limit);
-    }
-    return result;
-}
-#endif
-
-#ifdef HAVE_CONFSTR
-static struct constdef posix_constants_confstr[] = {
-#ifdef _CS_ARCHITECTURE
-    {"CS_ARCHITECTURE", _CS_ARCHITECTURE},
-#endif
-#ifdef _CS_HOSTNAME
-    {"CS_HOSTNAME",     _CS_HOSTNAME},
-#endif
-#ifdef _CS_HW_PROVIDER
-    {"CS_HW_PROVIDER",  _CS_HW_PROVIDER},
-#endif
-#ifdef _CS_HW_SERIAL
-    {"CS_HW_SERIAL",    _CS_HW_SERIAL},
-#endif
-#ifdef _CS_INITTAB_NAME
-    {"CS_INITTAB_NAME", _CS_INITTAB_NAME},
-#endif
-#ifdef _CS_LFS64_CFLAGS
-    {"CS_LFS64_CFLAGS", _CS_LFS64_CFLAGS},
-#endif
-#ifdef _CS_LFS64_LDFLAGS
-    {"CS_LFS64_LDFLAGS",        _CS_LFS64_LDFLAGS},
-#endif
-#ifdef _CS_LFS64_LIBS
-    {"CS_LFS64_LIBS",   _CS_LFS64_LIBS},
-#endif
-#ifdef _CS_LFS64_LINTFLAGS
-    {"CS_LFS64_LINTFLAGS",      _CS_LFS64_LINTFLAGS},
-#endif
-#ifdef _CS_LFS_CFLAGS
-    {"CS_LFS_CFLAGS",   _CS_LFS_CFLAGS},
-#endif
-#ifdef _CS_LFS_LDFLAGS
-    {"CS_LFS_LDFLAGS",  _CS_LFS_LDFLAGS},
-#endif
-#ifdef _CS_LFS_LIBS
-    {"CS_LFS_LIBS",     _CS_LFS_LIBS},
-#endif
-#ifdef _CS_LFS_LINTFLAGS
-    {"CS_LFS_LINTFLAGS",        _CS_LFS_LINTFLAGS},
-#endif
-#ifdef _CS_MACHINE
-    {"CS_MACHINE",      _CS_MACHINE},
-#endif
-#ifdef _CS_PATH
-    {"CS_PATH", _CS_PATH},
-#endif
-#ifdef _CS_RELEASE
-    {"CS_RELEASE",      _CS_RELEASE},
-#endif
-#ifdef _CS_SRPC_DOMAIN
-    {"CS_SRPC_DOMAIN",  _CS_SRPC_DOMAIN},
-#endif
-#ifdef _CS_SYSNAME
-    {"CS_SYSNAME",      _CS_SYSNAME},
-#endif
-#ifdef _CS_VERSION
-    {"CS_VERSION",      _CS_VERSION},
-#endif
-#ifdef _CS_XBS5_ILP32_OFF32_CFLAGS
-    {"CS_XBS5_ILP32_OFF32_CFLAGS",      _CS_XBS5_ILP32_OFF32_CFLAGS},
-#endif
-#ifdef _CS_XBS5_ILP32_OFF32_LDFLAGS
-    {"CS_XBS5_ILP32_OFF32_LDFLAGS",     _CS_XBS5_ILP32_OFF32_LDFLAGS},
-#endif
-#ifdef _CS_XBS5_ILP32_OFF32_LIBS
-    {"CS_XBS5_ILP32_OFF32_LIBS",        _CS_XBS5_ILP32_OFF32_LIBS},
-#endif
-#ifdef _CS_XBS5_ILP32_OFF32_LINTFLAGS
-    {"CS_XBS5_ILP32_OFF32_LINTFLAGS",   _CS_XBS5_ILP32_OFF32_LINTFLAGS},
-#endif
-#ifdef _CS_XBS5_ILP32_OFFBIG_CFLAGS
-    {"CS_XBS5_ILP32_OFFBIG_CFLAGS",     _CS_XBS5_ILP32_OFFBIG_CFLAGS},
-#endif
-#ifdef _CS_XBS5_ILP32_OFFBIG_LDFLAGS
-    {"CS_XBS5_ILP32_OFFBIG_LDFLAGS",    _CS_XBS5_ILP32_OFFBIG_LDFLAGS},
-#endif
-#ifdef _CS_XBS5_ILP32_OFFBIG_LIBS
-    {"CS_XBS5_ILP32_OFFBIG_LIBS",       _CS_XBS5_ILP32_OFFBIG_LIBS},
-#endif
-#ifdef _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
-    {"CS_XBS5_ILP32_OFFBIG_LINTFLAGS",  _CS_XBS5_ILP32_OFFBIG_LINTFLAGS},
-#endif
-#ifdef _CS_XBS5_LP64_OFF64_CFLAGS
-    {"CS_XBS5_LP64_OFF64_CFLAGS",       _CS_XBS5_LP64_OFF64_CFLAGS},
-#endif
-#ifdef _CS_XBS5_LP64_OFF64_LDFLAGS
-    {"CS_XBS5_LP64_OFF64_LDFLAGS",      _CS_XBS5_LP64_OFF64_LDFLAGS},
-#endif
-#ifdef _CS_XBS5_LP64_OFF64_LIBS
-    {"CS_XBS5_LP64_OFF64_LIBS", _CS_XBS5_LP64_OFF64_LIBS},
-#endif
-#ifdef _CS_XBS5_LP64_OFF64_LINTFLAGS
-    {"CS_XBS5_LP64_OFF64_LINTFLAGS",    _CS_XBS5_LP64_OFF64_LINTFLAGS},
-#endif
-#ifdef _CS_XBS5_LPBIG_OFFBIG_CFLAGS
-    {"CS_XBS5_LPBIG_OFFBIG_CFLAGS",     _CS_XBS5_LPBIG_OFFBIG_CFLAGS},
-#endif
-#ifdef _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
-    {"CS_XBS5_LPBIG_OFFBIG_LDFLAGS",    _CS_XBS5_LPBIG_OFFBIG_LDFLAGS},
-#endif
-#ifdef _CS_XBS5_LPBIG_OFFBIG_LIBS
-    {"CS_XBS5_LPBIG_OFFBIG_LIBS",       _CS_XBS5_LPBIG_OFFBIG_LIBS},
-#endif
-#ifdef _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
-    {"CS_XBS5_LPBIG_OFFBIG_LINTFLAGS",  _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS},
-#endif
-#ifdef _MIPS_CS_AVAIL_PROCESSORS
-    {"MIPS_CS_AVAIL_PROCESSORS",        _MIPS_CS_AVAIL_PROCESSORS},
-#endif
-#ifdef _MIPS_CS_BASE
-    {"MIPS_CS_BASE",    _MIPS_CS_BASE},
-#endif
-#ifdef _MIPS_CS_HOSTID
-    {"MIPS_CS_HOSTID",  _MIPS_CS_HOSTID},
-#endif
-#ifdef _MIPS_CS_HW_NAME
-    {"MIPS_CS_HW_NAME", _MIPS_CS_HW_NAME},
-#endif
-#ifdef _MIPS_CS_NUM_PROCESSORS
-    {"MIPS_CS_NUM_PROCESSORS",  _MIPS_CS_NUM_PROCESSORS},
-#endif
-#ifdef _MIPS_CS_OSREL_MAJ
-    {"MIPS_CS_OSREL_MAJ",       _MIPS_CS_OSREL_MAJ},
-#endif
-#ifdef _MIPS_CS_OSREL_MIN
-    {"MIPS_CS_OSREL_MIN",       _MIPS_CS_OSREL_MIN},
-#endif
-#ifdef _MIPS_CS_OSREL_PATCH
-    {"MIPS_CS_OSREL_PATCH",     _MIPS_CS_OSREL_PATCH},
-#endif
-#ifdef _MIPS_CS_OS_NAME
-    {"MIPS_CS_OS_NAME", _MIPS_CS_OS_NAME},
-#endif
-#ifdef _MIPS_CS_OS_PROVIDER
-    {"MIPS_CS_OS_PROVIDER",     _MIPS_CS_OS_PROVIDER},
-#endif
-#ifdef _MIPS_CS_PROCESSORS
-    {"MIPS_CS_PROCESSORS",      _MIPS_CS_PROCESSORS},
-#endif
-#ifdef _MIPS_CS_SERIAL
-    {"MIPS_CS_SERIAL",  _MIPS_CS_SERIAL},
-#endif
-#ifdef _MIPS_CS_VENDOR
-    {"MIPS_CS_VENDOR",  _MIPS_CS_VENDOR},
-#endif
-};
-
-static int
-conv_confstr_confname(PyObject *arg, int *valuep)
-{
-    return conv_confname(arg, valuep, posix_constants_confstr,
-                         sizeof(posix_constants_confstr)
-                           / sizeof(struct constdef));
-}
-
-PyDoc_STRVAR(posix_confstr__doc__,
-"confstr(name) -> string\n\n\
-Return a string-valued system configuration variable.");
-
-static PyObject *
-posix_confstr(PyObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-    int name;
-    char buffer[256];
-
-    if (PyArg_ParseTuple(args, "O&:confstr", conv_confstr_confname, &name)) {
-    int len;
-
-    errno = 0;
-    len = confstr(name, buffer, sizeof(buffer));
-    if (len == 0) {
-        if (errno) {
-        posix_error();
-        }
-        else {
-        result = Py_None;
-        Py_INCREF(Py_None);
-        }
-    }
-    else {
-        if ((unsigned int)len >= sizeof(buffer)) {
-        result = PyString_FromStringAndSize(NULL, len-1);
-        if (result != NULL)
-            confstr(name, PyString_AS_STRING(result), len);
-        }
-        else
-        result = PyString_FromStringAndSize(buffer, len-1);
-    }
-    }
-    return result;
-}
-#endif
-
-
-#ifdef HAVE_SYSCONF
-static struct constdef posix_constants_sysconf[] = {
-#ifdef _SC_2_CHAR_TERM
-    {"SC_2_CHAR_TERM",  _SC_2_CHAR_TERM},
-#endif
-#ifdef _SC_2_C_BIND
-    {"SC_2_C_BIND",     _SC_2_C_BIND},
-#endif
-#ifdef _SC_2_C_DEV
-    {"SC_2_C_DEV",      _SC_2_C_DEV},
-#endif
-#ifdef _SC_2_C_VERSION
-    {"SC_2_C_VERSION",  _SC_2_C_VERSION},
-#endif
-#ifdef _SC_2_FORT_DEV
-    {"SC_2_FORT_DEV",   _SC_2_FORT_DEV},
-#endif
-#ifdef _SC_2_FORT_RUN
-    {"SC_2_FORT_RUN",   _SC_2_FORT_RUN},
-#endif
-#ifdef _SC_2_LOCALEDEF
-    {"SC_2_LOCALEDEF",  _SC_2_LOCALEDEF},
-#endif
-#ifdef _SC_2_SW_DEV
-    {"SC_2_SW_DEV",     _SC_2_SW_DEV},
-#endif
-#ifdef _SC_2_UPE
-    {"SC_2_UPE",        _SC_2_UPE},
-#endif
-#ifdef _SC_2_VERSION
-    {"SC_2_VERSION",    _SC_2_VERSION},
-#endif
-#ifdef _SC_ABI_ASYNCHRONOUS_IO
-    {"SC_ABI_ASYNCHRONOUS_IO",  _SC_ABI_ASYNCHRONOUS_IO},
-#endif
-#ifdef _SC_ACL
-    {"SC_ACL",  _SC_ACL},
-#endif
-#ifdef _SC_AIO_LISTIO_MAX
-    {"SC_AIO_LISTIO_MAX",       _SC_AIO_LISTIO_MAX},
-#endif
-#ifdef _SC_AIO_MAX
-    {"SC_AIO_MAX",      _SC_AIO_MAX},
-#endif
-#ifdef _SC_AIO_PRIO_DELTA_MAX
-    {"SC_AIO_PRIO_DELTA_MAX",   _SC_AIO_PRIO_DELTA_MAX},
-#endif
-#ifdef _SC_ARG_MAX
-    {"SC_ARG_MAX",      _SC_ARG_MAX},
-#endif
-#ifdef _SC_ASYNCHRONOUS_IO
-    {"SC_ASYNCHRONOUS_IO",      _SC_ASYNCHRONOUS_IO},
-#endif
-#ifdef _SC_ATEXIT_MAX
-    {"SC_ATEXIT_MAX",   _SC_ATEXIT_MAX},
-#endif
-#ifdef _SC_AUDIT
-    {"SC_AUDIT",        _SC_AUDIT},
-#endif
-#ifdef _SC_AVPHYS_PAGES
-    {"SC_AVPHYS_PAGES", _SC_AVPHYS_PAGES},
-#endif
-#ifdef _SC_BC_BASE_MAX
-    {"SC_BC_BASE_MAX",  _SC_BC_BASE_MAX},
-#endif
-#ifdef _SC_BC_DIM_MAX
-    {"SC_BC_DIM_MAX",   _SC_BC_DIM_MAX},
-#endif
-#ifdef _SC_BC_SCALE_MAX
-    {"SC_BC_SCALE_MAX", _SC_BC_SCALE_MAX},
-#endif
-#ifdef _SC_BC_STRING_MAX
-    {"SC_BC_STRING_MAX",        _SC_BC_STRING_MAX},
-#endif
-#ifdef _SC_CAP
-    {"SC_CAP",  _SC_CAP},
-#endif
-#ifdef _SC_CHARCLASS_NAME_MAX
-    {"SC_CHARCLASS_NAME_MAX",   _SC_CHARCLASS_NAME_MAX},
-#endif
-#ifdef _SC_CHAR_BIT
-    {"SC_CHAR_BIT",     _SC_CHAR_BIT},
-#endif
-#ifdef _SC_CHAR_MAX
-    {"SC_CHAR_MAX",     _SC_CHAR_MAX},
-#endif
-#ifdef _SC_CHAR_MIN
-    {"SC_CHAR_MIN",     _SC_CHAR_MIN},
-#endif
-#ifdef _SC_CHILD_MAX
-    {"SC_CHILD_MAX",    _SC_CHILD_MAX},
-#endif
-#ifdef _SC_CLK_TCK
-    {"SC_CLK_TCK",      _SC_CLK_TCK},
-#endif
-#ifdef _SC_COHER_BLKSZ
-    {"SC_COHER_BLKSZ",  _SC_COHER_BLKSZ},
-#endif
-#ifdef _SC_COLL_WEIGHTS_MAX
-    {"SC_COLL_WEIGHTS_MAX",     _SC_COLL_WEIGHTS_MAX},
-#endif
-#ifdef _SC_DCACHE_ASSOC
-    {"SC_DCACHE_ASSOC", _SC_DCACHE_ASSOC},
-#endif
-#ifdef _SC_DCACHE_BLKSZ
-    {"SC_DCACHE_BLKSZ", _SC_DCACHE_BLKSZ},
-#endif
-#ifdef _SC_DCACHE_LINESZ
-    {"SC_DCACHE_LINESZ",        _SC_DCACHE_LINESZ},
-#endif
-#ifdef _SC_DCACHE_SZ
-    {"SC_DCACHE_SZ",    _SC_DCACHE_SZ},
-#endif
-#ifdef _SC_DCACHE_TBLKSZ
-    {"SC_DCACHE_TBLKSZ",        _SC_DCACHE_TBLKSZ},
-#endif
-#ifdef _SC_DELAYTIMER_MAX
-    {"SC_DELAYTIMER_MAX",       _SC_DELAYTIMER_MAX},
-#endif
-#ifdef _SC_EQUIV_CLASS_MAX
-    {"SC_EQUIV_CLASS_MAX",      _SC_EQUIV_CLASS_MAX},
-#endif
-#ifdef _SC_EXPR_NEST_MAX
-    {"SC_EXPR_NEST_MAX",        _SC_EXPR_NEST_MAX},
-#endif
-#ifdef _SC_FSYNC
-    {"SC_FSYNC",        _SC_FSYNC},
-#endif
-#ifdef _SC_GETGR_R_SIZE_MAX
-    {"SC_GETGR_R_SIZE_MAX",     _SC_GETGR_R_SIZE_MAX},
-#endif
-#ifdef _SC_GETPW_R_SIZE_MAX
-    {"SC_GETPW_R_SIZE_MAX",     _SC_GETPW_R_SIZE_MAX},
-#endif
-#ifdef _SC_ICACHE_ASSOC
-    {"SC_ICACHE_ASSOC", _SC_ICACHE_ASSOC},
-#endif
-#ifdef _SC_ICACHE_BLKSZ
-    {"SC_ICACHE_BLKSZ", _SC_ICACHE_BLKSZ},
-#endif
-#ifdef _SC_ICACHE_LINESZ
-    {"SC_ICACHE_LINESZ",        _SC_ICACHE_LINESZ},
-#endif
-#ifdef _SC_ICACHE_SZ
-    {"SC_ICACHE_SZ",    _SC_ICACHE_SZ},
-#endif
-#ifdef _SC_INF
-    {"SC_INF",  _SC_INF},
-#endif
-#ifdef _SC_INT_MAX
-    {"SC_INT_MAX",      _SC_INT_MAX},
-#endif
-#ifdef _SC_INT_MIN
-    {"SC_INT_MIN",      _SC_INT_MIN},
-#endif
-#ifdef _SC_IOV_MAX
-    {"SC_IOV_MAX",      _SC_IOV_MAX},
-#endif
-#ifdef _SC_IP_SECOPTS
-    {"SC_IP_SECOPTS",   _SC_IP_SECOPTS},
-#endif
-#ifdef _SC_JOB_CONTROL
-    {"SC_JOB_CONTROL",  _SC_JOB_CONTROL},
-#endif
-#ifdef _SC_KERN_POINTERS
-    {"SC_KERN_POINTERS",        _SC_KERN_POINTERS},
-#endif
-#ifdef _SC_KERN_SIM
-    {"SC_KERN_SIM",     _SC_KERN_SIM},
-#endif
-#ifdef _SC_LINE_MAX
-    {"SC_LINE_MAX",     _SC_LINE_MAX},
-#endif
-#ifdef _SC_LOGIN_NAME_MAX
-    {"SC_LOGIN_NAME_MAX",       _SC_LOGIN_NAME_MAX},
-#endif
-#ifdef _SC_LOGNAME_MAX
-    {"SC_LOGNAME_MAX",  _SC_LOGNAME_MAX},
-#endif
-#ifdef _SC_LONG_BIT
-    {"SC_LONG_BIT",     _SC_LONG_BIT},
-#endif
-#ifdef _SC_MAC
-    {"SC_MAC",  _SC_MAC},
-#endif
-#ifdef _SC_MAPPED_FILES
-    {"SC_MAPPED_FILES", _SC_MAPPED_FILES},
-#endif
-#ifdef _SC_MAXPID
-    {"SC_MAXPID",       _SC_MAXPID},
-#endif
-#ifdef _SC_MB_LEN_MAX
-    {"SC_MB_LEN_MAX",   _SC_MB_LEN_MAX},
-#endif
-#ifdef _SC_MEMLOCK
-    {"SC_MEMLOCK",      _SC_MEMLOCK},
-#endif
-#ifdef _SC_MEMLOCK_RANGE
-    {"SC_MEMLOCK_RANGE",        _SC_MEMLOCK_RANGE},
-#endif
-#ifdef _SC_MEMORY_PROTECTION
-    {"SC_MEMORY_PROTECTION",    _SC_MEMORY_PROTECTION},
-#endif
-#ifdef _SC_MESSAGE_PASSING
-    {"SC_MESSAGE_PASSING",      _SC_MESSAGE_PASSING},
-#endif
-#ifdef _SC_MMAP_FIXED_ALIGNMENT
-    {"SC_MMAP_FIXED_ALIGNMENT", _SC_MMAP_FIXED_ALIGNMENT},
-#endif
-#ifdef _SC_MQ_OPEN_MAX
-    {"SC_MQ_OPEN_MAX",  _SC_MQ_OPEN_MAX},
-#endif
-#ifdef _SC_MQ_PRIO_MAX
-    {"SC_MQ_PRIO_MAX",  _SC_MQ_PRIO_MAX},
-#endif
-#ifdef _SC_NACLS_MAX
-    {"SC_NACLS_MAX",    _SC_NACLS_MAX},
-#endif
-#ifdef _SC_NGROUPS_MAX
-    {"SC_NGROUPS_MAX",  _SC_NGROUPS_MAX},
-#endif
-#ifdef _SC_NL_ARGMAX
-    {"SC_NL_ARGMAX",    _SC_NL_ARGMAX},
-#endif
-#ifdef _SC_NL_LANGMAX
-    {"SC_NL_LANGMAX",   _SC_NL_LANGMAX},
-#endif
-#ifdef _SC_NL_MSGMAX
-    {"SC_NL_MSGMAX",    _SC_NL_MSGMAX},
-#endif
-#ifdef _SC_NL_NMAX
-    {"SC_NL_NMAX",      _SC_NL_NMAX},
-#endif
-#ifdef _SC_NL_SETMAX
-    {"SC_NL_SETMAX",    _SC_NL_SETMAX},
-#endif
-#ifdef _SC_NL_TEXTMAX
-    {"SC_NL_TEXTMAX",   _SC_NL_TEXTMAX},
-#endif
-#ifdef _SC_NPROCESSORS_CONF
-    {"SC_NPROCESSORS_CONF",     _SC_NPROCESSORS_CONF},
-#endif
-#ifdef _SC_NPROCESSORS_ONLN
-    {"SC_NPROCESSORS_ONLN",     _SC_NPROCESSORS_ONLN},
-#endif
-#ifdef _SC_NPROC_CONF
-    {"SC_NPROC_CONF",   _SC_NPROC_CONF},
-#endif
-#ifdef _SC_NPROC_ONLN
-    {"SC_NPROC_ONLN",   _SC_NPROC_ONLN},
-#endif
-#ifdef _SC_NZERO
-    {"SC_NZERO",        _SC_NZERO},
-#endif
-#ifdef _SC_OPEN_MAX
-    {"SC_OPEN_MAX",     _SC_OPEN_MAX},
-#endif
-#ifdef _SC_PAGESIZE
-    {"SC_PAGESIZE",     _SC_PAGESIZE},
-#endif
-#ifdef _SC_PAGE_SIZE
-    {"SC_PAGE_SIZE",    _SC_PAGE_SIZE},
-#endif
-#ifdef _SC_PASS_MAX
-    {"SC_PASS_MAX",     _SC_PASS_MAX},
-#endif
-#ifdef _SC_PHYS_PAGES
-    {"SC_PHYS_PAGES",   _SC_PHYS_PAGES},
-#endif
-#ifdef _SC_PII
-    {"SC_PII",  _SC_PII},
-#endif
-#ifdef _SC_PII_INTERNET
-    {"SC_PII_INTERNET", _SC_PII_INTERNET},
-#endif
-#ifdef _SC_PII_INTERNET_DGRAM
-    {"SC_PII_INTERNET_DGRAM",   _SC_PII_INTERNET_DGRAM},
-#endif
-#ifdef _SC_PII_INTERNET_STREAM
-    {"SC_PII_INTERNET_STREAM",  _SC_PII_INTERNET_STREAM},
-#endif
-#ifdef _SC_PII_OSI
-    {"SC_PII_OSI",      _SC_PII_OSI},
-#endif
-#ifdef _SC_PII_OSI_CLTS
-    {"SC_PII_OSI_CLTS", _SC_PII_OSI_CLTS},
-#endif
-#ifdef _SC_PII_OSI_COTS
-    {"SC_PII_OSI_COTS", _SC_PII_OSI_COTS},
-#endif
-#ifdef _SC_PII_OSI_M
-    {"SC_PII_OSI_M",    _SC_PII_OSI_M},
-#endif
-#ifdef _SC_PII_SOCKET
-    {"SC_PII_SOCKET",   _SC_PII_SOCKET},
-#endif
-#ifdef _SC_PII_XTI
-    {"SC_PII_XTI",      _SC_PII_XTI},
-#endif
-#ifdef _SC_POLL
-    {"SC_POLL", _SC_POLL},
-#endif
-#ifdef _SC_PRIORITIZED_IO
-    {"SC_PRIORITIZED_IO",       _SC_PRIORITIZED_IO},
-#endif
-#ifdef _SC_PRIORITY_SCHEDULING
-    {"SC_PRIORITY_SCHEDULING",  _SC_PRIORITY_SCHEDULING},
-#endif
-#ifdef _SC_REALTIME_SIGNALS
-    {"SC_REALTIME_SIGNALS",     _SC_REALTIME_SIGNALS},
-#endif
-#ifdef _SC_RE_DUP_MAX
-    {"SC_RE_DUP_MAX",   _SC_RE_DUP_MAX},
-#endif
-#ifdef _SC_RTSIG_MAX
-    {"SC_RTSIG_MAX",    _SC_RTSIG_MAX},
-#endif
-#ifdef _SC_SAVED_IDS
-    {"SC_SAVED_IDS",    _SC_SAVED_IDS},
-#endif
-#ifdef _SC_SCHAR_MAX
-    {"SC_SCHAR_MAX",    _SC_SCHAR_MAX},
-#endif
-#ifdef _SC_SCHAR_MIN
-    {"SC_SCHAR_MIN",    _SC_SCHAR_MIN},
-#endif
-#ifdef _SC_SELECT
-    {"SC_SELECT",       _SC_SELECT},
-#endif
-#ifdef _SC_SEMAPHORES
-    {"SC_SEMAPHORES",   _SC_SEMAPHORES},
-#endif
-#ifdef _SC_SEM_NSEMS_MAX
-    {"SC_SEM_NSEMS_MAX",        _SC_SEM_NSEMS_MAX},
-#endif
-#ifdef _SC_SEM_VALUE_MAX
-    {"SC_SEM_VALUE_MAX",        _SC_SEM_VALUE_MAX},
-#endif
-#ifdef _SC_SHARED_MEMORY_OBJECTS
-    {"SC_SHARED_MEMORY_OBJECTS",        _SC_SHARED_MEMORY_OBJECTS},
-#endif
-#ifdef _SC_SHRT_MAX
-    {"SC_SHRT_MAX",     _SC_SHRT_MAX},
-#endif
-#ifdef _SC_SHRT_MIN
-    {"SC_SHRT_MIN",     _SC_SHRT_MIN},
-#endif
-#ifdef _SC_SIGQUEUE_MAX
-    {"SC_SIGQUEUE_MAX", _SC_SIGQUEUE_MAX},
-#endif
-#ifdef _SC_SIGRT_MAX
-    {"SC_SIGRT_MAX",    _SC_SIGRT_MAX},
-#endif
-#ifdef _SC_SIGRT_MIN
-    {"SC_SIGRT_MIN",    _SC_SIGRT_MIN},
-#endif
-#ifdef _SC_SOFTPOWER
-    {"SC_SOFTPOWER",    _SC_SOFTPOWER},
-#endif
-#ifdef _SC_SPLIT_CACHE
-    {"SC_SPLIT_CACHE",  _SC_SPLIT_CACHE},
-#endif
-#ifdef _SC_SSIZE_MAX
-    {"SC_SSIZE_MAX",    _SC_SSIZE_MAX},
-#endif
-#ifdef _SC_STACK_PROT
-    {"SC_STACK_PROT",   _SC_STACK_PROT},
-#endif
-#ifdef _SC_STREAM_MAX
-    {"SC_STREAM_MAX",   _SC_STREAM_MAX},
-#endif
-#ifdef _SC_SYNCHRONIZED_IO
-    {"SC_SYNCHRONIZED_IO",      _SC_SYNCHRONIZED_IO},
-#endif
-#ifdef _SC_THREADS
-    {"SC_THREADS",      _SC_THREADS},
-#endif
-#ifdef _SC_THREAD_ATTR_STACKADDR
-    {"SC_THREAD_ATTR_STACKADDR",        _SC_THREAD_ATTR_STACKADDR},
-#endif
-#ifdef _SC_THREAD_ATTR_STACKSIZE
-    {"SC_THREAD_ATTR_STACKSIZE",        _SC_THREAD_ATTR_STACKSIZE},
-#endif
-#ifdef _SC_THREAD_DESTRUCTOR_ITERATIONS
-    {"SC_THREAD_DESTRUCTOR_ITERATIONS", _SC_THREAD_DESTRUCTOR_ITERATIONS},
-#endif
-#ifdef _SC_THREAD_KEYS_MAX
-    {"SC_THREAD_KEYS_MAX",      _SC_THREAD_KEYS_MAX},
-#endif
-#ifdef _SC_THREAD_PRIORITY_SCHEDULING
-    {"SC_THREAD_PRIORITY_SCHEDULING",   _SC_THREAD_PRIORITY_SCHEDULING},
-#endif
-#ifdef _SC_THREAD_PRIO_INHERIT
-    {"SC_THREAD_PRIO_INHERIT",  _SC_THREAD_PRIO_INHERIT},
-#endif
-#ifdef _SC_THREAD_PRIO_PROTECT
-    {"SC_THREAD_PRIO_PROTECT",  _SC_THREAD_PRIO_PROTECT},
-#endif
-#ifdef _SC_THREAD_PROCESS_SHARED
-    {"SC_THREAD_PROCESS_SHARED",        _SC_THREAD_PROCESS_SHARED},
-#endif
-#ifdef _SC_THREAD_SAFE_FUNCTIONS
-    {"SC_THREAD_SAFE_FUNCTIONS",        _SC_THREAD_SAFE_FUNCTIONS},
-#endif
-#ifdef _SC_THREAD_STACK_MIN
-    {"SC_THREAD_STACK_MIN",     _SC_THREAD_STACK_MIN},
-#endif
-#ifdef _SC_THREAD_THREADS_MAX
-    {"SC_THREAD_THREADS_MAX",   _SC_THREAD_THREADS_MAX},
-#endif
-#ifdef _SC_TIMERS
-    {"SC_TIMERS",       _SC_TIMERS},
-#endif
-#ifdef _SC_TIMER_MAX
-    {"SC_TIMER_MAX",    _SC_TIMER_MAX},
-#endif
-#ifdef _SC_TTY_NAME_MAX
-    {"SC_TTY_NAME_MAX", _SC_TTY_NAME_MAX},
-#endif
-#ifdef _SC_TZNAME_MAX
-    {"SC_TZNAME_MAX",   _SC_TZNAME_MAX},
-#endif
-#ifdef _SC_T_IOV_MAX
-    {"SC_T_IOV_MAX",    _SC_T_IOV_MAX},
-#endif
-#ifdef _SC_UCHAR_MAX
-    {"SC_UCHAR_MAX",    _SC_UCHAR_MAX},
-#endif
-#ifdef _SC_UINT_MAX
-    {"SC_UINT_MAX",     _SC_UINT_MAX},
-#endif
-#ifdef _SC_UIO_MAXIOV
-    {"SC_UIO_MAXIOV",   _SC_UIO_MAXIOV},
-#endif
-#ifdef _SC_ULONG_MAX
-    {"SC_ULONG_MAX",    _SC_ULONG_MAX},
-#endif
-#ifdef _SC_USHRT_MAX
-    {"SC_USHRT_MAX",    _SC_USHRT_MAX},
-#endif
-#ifdef _SC_VERSION
-    {"SC_VERSION",      _SC_VERSION},
-#endif
-#ifdef _SC_WORD_BIT
-    {"SC_WORD_BIT",     _SC_WORD_BIT},
-#endif
-#ifdef _SC_XBS5_ILP32_OFF32
-    {"SC_XBS5_ILP32_OFF32",     _SC_XBS5_ILP32_OFF32},
-#endif
-#ifdef _SC_XBS5_ILP32_OFFBIG
-    {"SC_XBS5_ILP32_OFFBIG",    _SC_XBS5_ILP32_OFFBIG},
-#endif
-#ifdef _SC_XBS5_LP64_OFF64
-    {"SC_XBS5_LP64_OFF64",      _SC_XBS5_LP64_OFF64},
-#endif
-#ifdef _SC_XBS5_LPBIG_OFFBIG
-    {"SC_XBS5_LPBIG_OFFBIG",    _SC_XBS5_LPBIG_OFFBIG},
-#endif
-#ifdef _SC_XOPEN_CRYPT
-    {"SC_XOPEN_CRYPT",  _SC_XOPEN_CRYPT},
-#endif
-#ifdef _SC_XOPEN_ENH_I18N
-    {"SC_XOPEN_ENH_I18N",       _SC_XOPEN_ENH_I18N},
-#endif
-#ifdef _SC_XOPEN_LEGACY
-    {"SC_XOPEN_LEGACY", _SC_XOPEN_LEGACY},
-#endif
-#ifdef _SC_XOPEN_REALTIME
-    {"SC_XOPEN_REALTIME",       _SC_XOPEN_REALTIME},
-#endif
-#ifdef _SC_XOPEN_REALTIME_THREADS
-    {"SC_XOPEN_REALTIME_THREADS",       _SC_XOPEN_REALTIME_THREADS},
-#endif
-#ifdef _SC_XOPEN_SHM
-    {"SC_XOPEN_SHM",    _SC_XOPEN_SHM},
-#endif
-#ifdef _SC_XOPEN_UNIX
-    {"SC_XOPEN_UNIX",   _SC_XOPEN_UNIX},
-#endif
-#ifdef _SC_XOPEN_VERSION
-    {"SC_XOPEN_VERSION",        _SC_XOPEN_VERSION},
-#endif
-#ifdef _SC_XOPEN_XCU_VERSION
-    {"SC_XOPEN_XCU_VERSION",    _SC_XOPEN_XCU_VERSION},
-#endif
-#ifdef _SC_XOPEN_XPG2
-    {"SC_XOPEN_XPG2",   _SC_XOPEN_XPG2},
-#endif
-#ifdef _SC_XOPEN_XPG3
-    {"SC_XOPEN_XPG3",   _SC_XOPEN_XPG3},
-#endif
-#ifdef _SC_XOPEN_XPG4
-    {"SC_XOPEN_XPG4",   _SC_XOPEN_XPG4},
-#endif
-};
-
-static int
-conv_sysconf_confname(PyObject *arg, int *valuep)
-{
-    return conv_confname(arg, valuep, posix_constants_sysconf,
-                         sizeof(posix_constants_sysconf)
-                           / sizeof(struct constdef));
-}
-
-PyDoc_STRVAR(posix_sysconf__doc__,
-"sysconf(name) -> integer\n\n\
-Return an integer-valued system configuration variable.");
-
-static PyObject *
-posix_sysconf(PyObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-    int name;
-
-    if (PyArg_ParseTuple(args, "O&:sysconf", conv_sysconf_confname, &name)) {
-        int value;
-
-        errno = 0;
-        value = sysconf(name);
-        if (value == -1 && errno != 0)
-            posix_error();
-        else
-            result = PyInt_FromLong(value);
-    }
-    return result;
-}
-#endif
-
-
-#if defined(HAVE_FPATHCONF) || defined(HAVE_PATHCONF) || defined(HAVE_CONFSTR) || defined(HAVE_SYSCONF)
-/* This code is used to ensure that the tables of configuration value names
- * are in sorted order as required by conv_confname(), and also to build the
- * the exported dictionaries that are used to publish information about the
- * names available on the host platform.
- *
- * Sorting the table at runtime ensures that the table is properly ordered
- * when used, even for platforms we're not able to test on.  It also makes
- * it easier to add additional entries to the tables.
- */
-
-static int
-cmp_constdefs(const void *v1,  const void *v2)
-{
-    const struct constdef *c1 =
-    (const struct constdef *) v1;
-    const struct constdef *c2 =
-    (const struct constdef *) v2;
-
-    return strcmp(c1->name, c2->name);
-}
-
-static int
-setup_confname_table(struct constdef *table, size_t tablesize,
-                     char *tablename, PyObject *module)
-{
-    PyObject *d = NULL;
-    size_t i;
-
-    qsort(table, tablesize, sizeof(struct constdef), cmp_constdefs);
-    d = PyDict_New();
-    if (d == NULL)
-        return -1;
-
-    for (i=0; i < tablesize; ++i) {
-        PyObject *o = PyInt_FromLong(table[i].value);
-        if (o == NULL || PyDict_SetItemString(d, table[i].name, o) == -1) {
-            Py_XDECREF(o);
-            Py_DECREF(d);
-            return -1;
-        }
-        Py_DECREF(o);
-    }
-    return PyModule_AddObject(module, tablename, d);
-}
-#endif  /* HAVE_FPATHCONF || HAVE_PATHCONF || HAVE_CONFSTR || HAVE_SYSCONF */
-
-/* Return -1 on failure, 0 on success. */
-static int
-setup_confname_tables(PyObject *module)
-{
-#if defined(HAVE_FPATHCONF) || defined(HAVE_PATHCONF)
-    if (setup_confname_table(posix_constants_pathconf,
-                             sizeof(posix_constants_pathconf)
-                               / sizeof(struct constdef),
-                             "pathconf_names", module))
-        return -1;
-#endif
-#ifdef HAVE_CONFSTR
-    if (setup_confname_table(posix_constants_confstr,
-                             sizeof(posix_constants_confstr)
-                               / sizeof(struct constdef),
-                             "confstr_names", module))
-        return -1;
-#endif
-#ifdef HAVE_SYSCONF
-    if (setup_confname_table(posix_constants_sysconf,
-                             sizeof(posix_constants_sysconf)
-                               / sizeof(struct constdef),
-                             "sysconf_names", module))
-        return -1;
-#endif
-    return 0;
-}
-
-
-PyDoc_STRVAR(posix_abort__doc__,
-"abort() -> does not return!\n\n\
-Abort the interpreter immediately.  This 'dumps core' or otherwise fails\n\
-in the hardest way possible on the hosting operating system.");
-
-static PyObject *
-posix_abort(PyObject *self, PyObject *noargs)
-{
-    abort();
-    /*NOTREACHED*/
-    Py_FatalError("abort() called from Python code didn't abort!");
-    return NULL;
-}
-
-#ifdef HAVE_SETRESUID
-PyDoc_STRVAR(posix_setresuid__doc__,
-"setresuid(ruid, euid, suid)\n\n\
-Set the current process's real, effective, and saved user ids.");
-
-static PyObject*
-posix_setresuid (PyObject *self, PyObject *args)
-{
-    /* We assume uid_t is no larger than a long. */
-    long ruid, euid, suid;
-    if (!PyArg_ParseTuple(args, "lll", &ruid, &euid, &suid))
-        return NULL;
-    if (setresuid(ruid, euid, suid) < 0)
-        return posix_error();
-    Py_RETURN_NONE;
-}
-#endif
-
-#ifdef HAVE_SETRESGID
-PyDoc_STRVAR(posix_setresgid__doc__,
-"setresgid(rgid, egid, sgid)\n\n\
-Set the current process's real, effective, and saved group ids.");
-
-static PyObject*
-posix_setresgid (PyObject *self, PyObject *args)
-{
-    /* We assume uid_t is no larger than a long. */
-    long rgid, egid, sgid;
-    if (!PyArg_ParseTuple(args, "lll", &rgid, &egid, &sgid))
-        return NULL;
-    if (setresgid(rgid, egid, sgid) < 0)
-        return posix_error();
-    Py_RETURN_NONE;
-}
-#endif
-
-#ifdef HAVE_GETRESUID
-PyDoc_STRVAR(posix_getresuid__doc__,
-"getresuid() -> (ruid, euid, suid)\n\n\
-Get tuple of the current process's real, effective, and saved user ids.");
-
-static PyObject*
-posix_getresuid (PyObject *self, PyObject *noargs)
-{
-    uid_t ruid, euid, suid;
-    long l_ruid, l_euid, l_suid;
-    if (getresuid(&ruid, &euid, &suid) < 0)
-        return posix_error();
-    /* Force the values into long's as we don't know the size of uid_t. */
-    l_ruid = ruid;
-    l_euid = euid;
-    l_suid = suid;
-    return Py_BuildValue("(lll)", l_ruid, l_euid, l_suid);
-}
-#endif
-
-#ifdef HAVE_GETRESGID
-PyDoc_STRVAR(posix_getresgid__doc__,
-"getresgid() -> (rgid, egid, sgid)\n\n\
-Get tuple of the current process's real, effective, and saved group ids.");
-
-static PyObject*
-posix_getresgid (PyObject *self, PyObject *noargs)
-{
-    uid_t rgid, egid, sgid;
-    long l_rgid, l_egid, l_sgid;
-    if (getresgid(&rgid, &egid, &sgid) < 0)
-        return posix_error();
-    /* Force the values into long's as we don't know the size of uid_t. */
-    l_rgid = rgid;
-    l_egid = egid;
-    l_sgid = sgid;
-    return Py_BuildValue("(lll)", l_rgid, l_egid, l_sgid);
-}
-#endif
-
-static PyMethodDef posix_methods[] = {
-    {"access",          posix_access,     METH_VARARGS, posix_access__doc__},
-#ifdef HAVE_TTYNAME
-    {"ttyname",         posix_ttyname, METH_VARARGS, posix_ttyname__doc__},
-#endif
-    {"chdir",           posix_chdir,      METH_VARARGS, posix_chdir__doc__},
-#ifdef HAVE_CHFLAGS
-    {"chflags",         posix_chflags, METH_VARARGS, posix_chflags__doc__},
-#endif /* HAVE_CHFLAGS */
-    {"chmod",           posix_chmod,      METH_VARARGS, posix_chmod__doc__},
-#ifdef HAVE_FCHMOD
-    {"fchmod",          posix_fchmod, METH_VARARGS, posix_fchmod__doc__},
-#endif /* HAVE_FCHMOD */
-#ifdef HAVE_CHOWN
-    {"chown",           posix_chown, METH_VARARGS, posix_chown__doc__},
-#endif /* HAVE_CHOWN */
-#ifdef HAVE_LCHMOD
-    {"lchmod",          posix_lchmod, METH_VARARGS, posix_lchmod__doc__},
-#endif /* HAVE_LCHMOD */
-#ifdef HAVE_FCHOWN
-    {"fchown",          posix_fchown, METH_VARARGS, posix_fchown__doc__},
-#endif /* HAVE_FCHOWN */
-#ifdef HAVE_LCHFLAGS
-    {"lchflags",        posix_lchflags, METH_VARARGS, posix_lchflags__doc__},
-#endif /* HAVE_LCHFLAGS */
-#ifdef HAVE_LCHOWN
-    {"lchown",          posix_lchown, METH_VARARGS, posix_lchown__doc__},
-#endif /* HAVE_LCHOWN */
-#ifdef HAVE_CHROOT
-    {"chroot",          posix_chroot, METH_VARARGS, posix_chroot__doc__},
-#endif
-#ifdef HAVE_CTERMID
-    {"ctermid",         posix_ctermid, METH_NOARGS, posix_ctermid__doc__},
-#endif
-#ifdef HAVE_GETCWD
-    {"getcwd",          posix_getcwd,     METH_NOARGS,  posix_getcwd__doc__},
-#ifdef Py_USING_UNICODE
-    {"getcwdu",         posix_getcwdu,    METH_NOARGS,  posix_getcwdu__doc__},
-#endif
-#endif
-#ifdef HAVE_LINK
-    {"link",            posix_link, METH_VARARGS, posix_link__doc__},
-#endif /* HAVE_LINK */
-    {"listdir",         posix_listdir,    METH_VARARGS, posix_listdir__doc__},
-    {"lstat",           posix_lstat,      METH_VARARGS, posix_lstat__doc__},
-    {"mkdir",           posix_mkdir,      METH_VARARGS, posix_mkdir__doc__},
-#ifdef HAVE_NICE
-    {"nice",            posix_nice, METH_VARARGS, posix_nice__doc__},
-#endif /* HAVE_NICE */
-#ifdef HAVE_READLINK
-    {"readlink",        posix_readlink, METH_VARARGS, posix_readlink__doc__},
-#endif /* HAVE_READLINK */
-    {"rename",          posix_rename,     METH_VARARGS, posix_rename__doc__},
-    {"rmdir",           posix_rmdir,      METH_VARARGS, posix_rmdir__doc__},
-    {"stat",            posix_stat,       METH_VARARGS, posix_stat__doc__},
-    //{"stat_float_times", stat_float_times, METH_VARARGS, stat_float_times__doc__},
-#ifdef HAVE_SYMLINK
-    {"symlink",         posix_symlink, METH_VARARGS, posix_symlink__doc__},
-#endif /* HAVE_SYMLINK */
-#ifdef HAVE_SYSTEM
-    {"system",          posix_system, METH_VARARGS, posix_system__doc__},
-#endif
-    {"umask",           posix_umask,      METH_VARARGS, posix_umask__doc__},
-#ifdef HAVE_UNAME
-    {"uname",           posix_uname, METH_NOARGS, posix_uname__doc__},
-#endif /* HAVE_UNAME */
-    {"unlink",          posix_unlink,     METH_VARARGS, posix_unlink__doc__},
-    {"remove",          posix_unlink,     METH_VARARGS, posix_remove__doc__},
-    {"utime",           posix_utime,      METH_VARARGS, posix_utime__doc__},
-#ifdef HAVE_TIMES
-    {"times",           posix_times, METH_NOARGS, posix_times__doc__},
-#endif /* HAVE_TIMES */
-    {"_exit",           posix__exit,      METH_VARARGS, posix__exit__doc__},
-#ifdef HAVE_EXECV
-    {"execv",           posix_execv, METH_VARARGS, posix_execv__doc__},
-    {"execve",          posix_execve, METH_VARARGS, posix_execve__doc__},
-#endif /* HAVE_EXECV */
-#ifdef HAVE_SPAWNV
-    {"spawnv",          posix_spawnv, METH_VARARGS, posix_spawnv__doc__},
-    {"spawnve",         posix_spawnve, METH_VARARGS, posix_spawnve__doc__},
-#if defined(PYOS_OS2)
-    {"spawnvp",         posix_spawnvp, METH_VARARGS, posix_spawnvp__doc__},
-    {"spawnvpe",        posix_spawnvpe, METH_VARARGS, posix_spawnvpe__doc__},
-#endif /* PYOS_OS2 */
-#endif /* HAVE_SPAWNV */
-#ifdef HAVE_FORK1
-    {"fork1",       posix_fork1, METH_NOARGS, posix_fork1__doc__},
-#endif /* HAVE_FORK1 */
-#ifdef HAVE_FORK
-    {"fork",            posix_fork, METH_NOARGS, posix_fork__doc__},
-#endif /* HAVE_FORK */
-#if defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) || defined(HAVE_DEV_PTMX)
-    {"openpty",         posix_openpty, METH_NOARGS, posix_openpty__doc__},
-#endif /* HAVE_OPENPTY || HAVE__GETPTY || HAVE_DEV_PTMX */
-#ifdef HAVE_FORKPTY
-    {"forkpty",         posix_forkpty, METH_NOARGS, posix_forkpty__doc__},
-#endif /* HAVE_FORKPTY */
-#ifdef HAVE_GETEGID
-    {"getegid",         posix_getegid, METH_NOARGS, posix_getegid__doc__},
-#endif /* HAVE_GETEGID */
-#ifdef HAVE_GETEUID
-    {"geteuid",         posix_geteuid, METH_NOARGS, posix_geteuid__doc__},
-#endif /* HAVE_GETEUID */
-#ifdef HAVE_GETGID
-    {"getgid",          posix_getgid, METH_NOARGS, posix_getgid__doc__},
-#endif /* HAVE_GETGID */
-#ifdef HAVE_GETGROUPS
-    {"getgroups",       posix_getgroups, METH_NOARGS, posix_getgroups__doc__},
-#endif
-    {"getpid",          posix_getpid,     METH_NOARGS,  posix_getpid__doc__},
-#ifdef HAVE_GETPGRP
-    {"getpgrp",         posix_getpgrp, METH_NOARGS, posix_getpgrp__doc__},
-#endif /* HAVE_GETPGRP */
-#ifdef HAVE_GETPPID
-    {"getppid",         posix_getppid, METH_NOARGS, posix_getppid__doc__},
-#endif /* HAVE_GETPPID */
-#ifdef HAVE_GETUID
-    {"getuid",          posix_getuid, METH_NOARGS, posix_getuid__doc__},
-#endif /* HAVE_GETUID */
-#ifdef HAVE_GETLOGIN
-    {"getlogin",        posix_getlogin, METH_NOARGS, posix_getlogin__doc__},
-#endif
-#ifdef HAVE_KILL
-    {"kill",            posix_kill, METH_VARARGS, posix_kill__doc__},
-#endif /* HAVE_KILL */
-#ifdef HAVE_KILLPG
-    {"killpg",          posix_killpg, METH_VARARGS, posix_killpg__doc__},
-#endif /* HAVE_KILLPG */
-#ifdef HAVE_PLOCK
-    {"plock",           posix_plock, METH_VARARGS, posix_plock__doc__},
-#endif /* HAVE_PLOCK */
-#ifdef HAVE_POPEN
-    {"popen",           posix_popen, METH_VARARGS, posix_popen__doc__},
-#ifdef MS_WINDOWS
-    {"popen2",          win32_popen2, METH_VARARGS},
-    {"popen3",          win32_popen3, METH_VARARGS},
-    {"popen4",          win32_popen4, METH_VARARGS},
-    {"startfile",       win32_startfile, METH_VARARGS, win32_startfile__doc__},
-    {"kill",    win32_kill, METH_VARARGS, win32_kill__doc__},
-#else
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-    {"popen2",          os2emx_popen2, METH_VARARGS},
-    {"popen3",          os2emx_popen3, METH_VARARGS},
-    {"popen4",          os2emx_popen4, METH_VARARGS},
-#endif
-#endif
-#endif /* HAVE_POPEN */
-#ifdef HAVE_SETUID
-    {"setuid",          posix_setuid, METH_VARARGS, posix_setuid__doc__},
-#endif /* HAVE_SETUID */
-#ifdef HAVE_SETEUID
-    {"seteuid",         posix_seteuid, METH_VARARGS, posix_seteuid__doc__},
-#endif /* HAVE_SETEUID */
-#ifdef HAVE_SETEGID
-    {"setegid",         posix_setegid, METH_VARARGS, posix_setegid__doc__},
-#endif /* HAVE_SETEGID */
-#ifdef HAVE_SETREUID
-    {"setreuid",        posix_setreuid, METH_VARARGS, posix_setreuid__doc__},
-#endif /* HAVE_SETREUID */
-#ifdef HAVE_SETREGID
-    {"setregid",        posix_setregid, METH_VARARGS, posix_setregid__doc__},
-#endif /* HAVE_SETREGID */
-#ifdef HAVE_SETGID
-    {"setgid",          posix_setgid, METH_VARARGS, posix_setgid__doc__},
-#endif /* HAVE_SETGID */
-#ifdef HAVE_SETGROUPS
-    {"setgroups",       posix_setgroups, METH_O, posix_setgroups__doc__},
-#endif /* HAVE_SETGROUPS */
-#ifdef HAVE_INITGROUPS
-    {"initgroups",      posix_initgroups, METH_VARARGS, posix_initgroups__doc__},
-#endif /* HAVE_INITGROUPS */
-#ifdef HAVE_GETPGID
-    {"getpgid",         posix_getpgid, METH_VARARGS, posix_getpgid__doc__},
-#endif /* HAVE_GETPGID */
-#ifdef HAVE_SETPGRP
-    {"setpgrp",         posix_setpgrp, METH_NOARGS, posix_setpgrp__doc__},
-#endif /* HAVE_SETPGRP */
-#ifdef HAVE_WAIT
-    {"wait",            posix_wait, METH_NOARGS, posix_wait__doc__},
-#endif /* HAVE_WAIT */
-#ifdef HAVE_WAIT3
-    {"wait3",           posix_wait3, METH_VARARGS, posix_wait3__doc__},
-#endif /* HAVE_WAIT3 */
-#ifdef HAVE_WAIT4
-    {"wait4",           posix_wait4, METH_VARARGS, posix_wait4__doc__},
-#endif /* HAVE_WAIT4 */
-#if defined(HAVE_WAITPID) || defined(HAVE_CWAIT)
-    {"waitpid",         posix_waitpid, METH_VARARGS, posix_waitpid__doc__},
-#endif /* HAVE_WAITPID */
-#ifdef HAVE_GETSID
-    {"getsid",          posix_getsid, METH_VARARGS, posix_getsid__doc__},
-#endif /* HAVE_GETSID */
-#ifdef HAVE_SETSID
-    {"setsid",          posix_setsid, METH_NOARGS, posix_setsid__doc__},
-#endif /* HAVE_SETSID */
-#ifdef HAVE_SETPGID
-    {"setpgid",         posix_setpgid, METH_VARARGS, posix_setpgid__doc__},
-#endif /* HAVE_SETPGID */
-#ifdef HAVE_TCGETPGRP
-    {"tcgetpgrp",       posix_tcgetpgrp, METH_VARARGS, posix_tcgetpgrp__doc__},
-#endif /* HAVE_TCGETPGRP */
-#ifdef HAVE_TCSETPGRP
-    {"tcsetpgrp",       posix_tcsetpgrp, METH_VARARGS, posix_tcsetpgrp__doc__},
-#endif /* HAVE_TCSETPGRP */
-    {"open",            posix_open,       METH_VARARGS, posix_open__doc__},
-    {"close",           posix_close,      METH_VARARGS, posix_close__doc__},
-    {"closerange",      posix_closerange, METH_VARARGS, posix_closerange__doc__},
-    {"dup",             posix_dup,        METH_VARARGS, posix_dup__doc__},
-    {"dup2",            posix_dup2,       METH_VARARGS, posix_dup2__doc__},
-    {"lseek",           posix_lseek,      METH_VARARGS, posix_lseek__doc__},
-    {"read",            posix_read,       METH_VARARGS, posix_read__doc__},
-    {"write",           posix_write,      METH_VARARGS, posix_write__doc__},
-    {"fstat",           posix_fstat,      METH_VARARGS, posix_fstat__doc__},
-    {"fdopen",          posix_fdopen,     METH_VARARGS, posix_fdopen__doc__},
-    {"isatty",          posix_isatty,     METH_VARARGS, posix_isatty__doc__},
-#ifdef HAVE_PIPE
-    {"pipe",            posix_pipe, METH_NOARGS, posix_pipe__doc__},
-#endif
-#ifdef HAVE_MKFIFO
-    {"mkfifo",          posix_mkfifo, METH_VARARGS, posix_mkfifo__doc__},
-#endif
-#if defined(HAVE_MKNOD) && defined(HAVE_MAKEDEV)
-    {"mknod",           posix_mknod, METH_VARARGS, posix_mknod__doc__},
-#endif
-#ifdef HAVE_DEVICE_MACROS
-    {"major",           posix_major, METH_VARARGS, posix_major__doc__},
-    {"minor",           posix_minor, METH_VARARGS, posix_minor__doc__},
-    {"makedev",         posix_makedev, METH_VARARGS, posix_makedev__doc__},
-#endif
-#ifdef HAVE_FTRUNCATE
-    {"ftruncate",       posix_ftruncate, METH_VARARGS, posix_ftruncate__doc__},
-#endif
-#ifdef HAVE_PUTENV
-    {"putenv",          posix_putenv, METH_VARARGS, posix_putenv__doc__},
-#endif
-#ifdef HAVE_UNSETENV
-    {"unsetenv",        posix_unsetenv, METH_VARARGS, posix_unsetenv__doc__},
-#endif
-    {"strerror",        posix_strerror,   METH_VARARGS, posix_strerror__doc__},
-#ifdef HAVE_FCHDIR
-    {"fchdir",          posix_fchdir, METH_O, posix_fchdir__doc__},
-#endif
-#ifdef HAVE_FSYNC
-    {"fsync",       posix_fsync, METH_O, posix_fsync__doc__},
-#endif
-#ifdef HAVE_FDATASYNC
-    {"fdatasync",   posix_fdatasync,  METH_O, posix_fdatasync__doc__},
-#endif
-#ifdef HAVE_SYS_WAIT_H
-#ifdef WCOREDUMP
-    {"WCOREDUMP",       posix_WCOREDUMP, METH_VARARGS, posix_WCOREDUMP__doc__},
-#endif /* WCOREDUMP */
-#ifdef WIFCONTINUED
-    {"WIFCONTINUED",posix_WIFCONTINUED, METH_VARARGS, posix_WIFCONTINUED__doc__},
-#endif /* WIFCONTINUED */
-#ifdef WIFSTOPPED
-    {"WIFSTOPPED",      posix_WIFSTOPPED, METH_VARARGS, posix_WIFSTOPPED__doc__},
-#endif /* WIFSTOPPED */
-#ifdef WIFSIGNALED
-    {"WIFSIGNALED",     posix_WIFSIGNALED, METH_VARARGS, posix_WIFSIGNALED__doc__},
-#endif /* WIFSIGNALED */
-#ifdef WIFEXITED
-    {"WIFEXITED",       posix_WIFEXITED, METH_VARARGS, posix_WIFEXITED__doc__},
-#endif /* WIFEXITED */
-#ifdef WEXITSTATUS
-    {"WEXITSTATUS",     posix_WEXITSTATUS, METH_VARARGS, posix_WEXITSTATUS__doc__},
-#endif /* WEXITSTATUS */
-#ifdef WTERMSIG
-    {"WTERMSIG",        posix_WTERMSIG, METH_VARARGS, posix_WTERMSIG__doc__},
-#endif /* WTERMSIG */
-#ifdef WSTOPSIG
-    {"WSTOPSIG",        posix_WSTOPSIG, METH_VARARGS, posix_WSTOPSIG__doc__},
-#endif /* WSTOPSIG */
-#endif /* HAVE_SYS_WAIT_H */
-#if defined(HAVE_FSTATVFS) && defined(HAVE_SYS_STATVFS_H)
-    {"fstatvfs",        posix_fstatvfs, METH_VARARGS, posix_fstatvfs__doc__},
-#endif
-#if defined(HAVE_STATVFS) && defined(HAVE_SYS_STATVFS_H)
-    {"statvfs",         posix_statvfs, METH_VARARGS, posix_statvfs__doc__},
-#endif
-#ifdef HAVE_TMPFILE
-    {"tmpfile",         posix_tmpfile,    METH_NOARGS,  posix_tmpfile__doc__},
-#endif
-#ifdef HAVE_TEMPNAM
-    {"tempnam",         posix_tempnam,    METH_VARARGS, posix_tempnam__doc__},
-#endif
-#ifdef HAVE_TMPNAM
-    {"tmpnam",          posix_tmpnam,     METH_NOARGS,  posix_tmpnam__doc__},
-#endif
-#ifdef HAVE_CONFSTR
-    {"confstr",         posix_confstr, METH_VARARGS, posix_confstr__doc__},
-#endif
-#ifdef HAVE_SYSCONF
-    {"sysconf",         posix_sysconf, METH_VARARGS, posix_sysconf__doc__},
-#endif
-#ifdef HAVE_FPATHCONF
-    {"fpathconf",       posix_fpathconf, METH_VARARGS, posix_fpathconf__doc__},
-#endif
-#ifdef HAVE_PATHCONF
-    {"pathconf",        posix_pathconf, METH_VARARGS, posix_pathconf__doc__},
-#endif
-    {"abort",           posix_abort,      METH_NOARGS,  posix_abort__doc__},
-#ifdef HAVE_SETRESUID
-    {"setresuid",       posix_setresuid, METH_VARARGS, posix_setresuid__doc__},
-#endif
-#ifdef HAVE_SETRESGID
-    {"setresgid",       posix_setresgid, METH_VARARGS, posix_setresgid__doc__},
-#endif
-#ifdef HAVE_GETRESUID
-    {"getresuid",       posix_getresuid, METH_NOARGS, posix_getresuid__doc__},
-#endif
-#ifdef HAVE_GETRESGID
-    {"getresgid",       posix_getresgid, METH_NOARGS, posix_getresgid__doc__},
-#endif
-
-    {NULL,              NULL}            /* Sentinel */
-};
-
-
-static int
-ins(PyObject *module, char *symbol, long value)
-{
-    return PyModule_AddIntConstant(module, symbol, value);
-}
-
-static int
-all_ins(PyObject *d)
-{
-#ifdef F_OK
-    if (ins(d, "F_OK", (long)F_OK)) return -1;
-#endif
-#ifdef R_OK
-    if (ins(d, "R_OK", (long)R_OK)) return -1;
-#endif
-#ifdef W_OK
-    if (ins(d, "W_OK", (long)W_OK)) return -1;
-#endif
-#ifdef X_OK
-    if (ins(d, "X_OK", (long)X_OK)) return -1;
-#endif
-#ifdef NGROUPS_MAX
-    if (ins(d, "NGROUPS_MAX", (long)NGROUPS_MAX)) return -1;
-#endif
-#ifdef TMP_MAX
-    if (ins(d, "TMP_MAX", (long)TMP_MAX)) return -1;
-#endif
-#ifdef WCONTINUED
-    if (ins(d, "WCONTINUED", (long)WCONTINUED)) return -1;
-#endif
-#ifdef WNOHANG
-    if (ins(d, "WNOHANG", (long)WNOHANG)) return -1;
-#endif
-#ifdef WUNTRACED
-    if (ins(d, "WUNTRACED", (long)WUNTRACED)) return -1;
-#endif
-#ifdef O_RDONLY
-    if (ins(d, "O_RDONLY", (long)O_RDONLY)) return -1;
-#endif
-#ifdef O_WRONLY
-    if (ins(d, "O_WRONLY", (long)O_WRONLY)) return -1;
-#endif
-#ifdef O_RDWR
-    if (ins(d, "O_RDWR", (long)O_RDWR)) return -1;
-#endif
-#ifdef O_NDELAY
-    if (ins(d, "O_NDELAY", (long)O_NDELAY)) return -1;
-#endif
-#ifdef O_NONBLOCK
-    if (ins(d, "O_NONBLOCK", (long)O_NONBLOCK)) return -1;
-#endif
-#ifdef O_APPEND
-    if (ins(d, "O_APPEND", (long)O_APPEND)) return -1;
-#endif
-#ifdef O_DSYNC
-    if (ins(d, "O_DSYNC", (long)O_DSYNC)) return -1;
-#endif
-#ifdef O_RSYNC
-    if (ins(d, "O_RSYNC", (long)O_RSYNC)) return -1;
-#endif
-#ifdef O_SYNC
-    if (ins(d, "O_SYNC", (long)O_SYNC)) return -1;
-#endif
-#ifdef O_NOCTTY
-    if (ins(d, "O_NOCTTY", (long)O_NOCTTY)) return -1;
-#endif
-#ifdef O_CREAT
-    if (ins(d, "O_CREAT", (long)O_CREAT)) return -1;
-#endif
-#ifdef O_EXCL
-    if (ins(d, "O_EXCL", (long)O_EXCL)) return -1;
-#endif
-#ifdef O_TRUNC
-    if (ins(d, "O_TRUNC", (long)O_TRUNC)) return -1;
-#endif
-#ifdef O_BINARY
-    if (ins(d, "O_BINARY", (long)O_BINARY)) return -1;
-#endif
-#ifdef O_TEXT
-    if (ins(d, "O_TEXT", (long)O_TEXT)) return -1;
-#endif
-#ifdef O_LARGEFILE
-    if (ins(d, "O_LARGEFILE", (long)O_LARGEFILE)) return -1;
-#endif
-#ifdef O_SHLOCK
-    if (ins(d, "O_SHLOCK", (long)O_SHLOCK)) return -1;
-#endif
-#ifdef O_EXLOCK
-    if (ins(d, "O_EXLOCK", (long)O_EXLOCK)) return -1;
-#endif
-
-/* MS Windows */
-#ifdef O_NOINHERIT
-    /* Don't inherit in child processes. */
-    if (ins(d, "O_NOINHERIT", (long)O_NOINHERIT)) return -1;
-#endif
-#ifdef _O_SHORT_LIVED
-    /* Optimize for short life (keep in memory). */
-    /* MS forgot to define this one with a non-underscore form too. */
-    if (ins(d, "O_SHORT_LIVED", (long)_O_SHORT_LIVED)) return -1;
-#endif
-#ifdef O_TEMPORARY
-    /* Automatically delete when last handle is closed. */
-    if (ins(d, "O_TEMPORARY", (long)O_TEMPORARY)) return -1;
-#endif
-#ifdef O_RANDOM
-    /* Optimize for random access. */
-    if (ins(d, "O_RANDOM", (long)O_RANDOM)) return -1;
-#endif
-#ifdef O_SEQUENTIAL
-    /* Optimize for sequential access. */
-    if (ins(d, "O_SEQUENTIAL", (long)O_SEQUENTIAL)) return -1;
-#endif
-
-/* GNU extensions. */
-#ifdef O_ASYNC
-    /* Send a SIGIO signal whenever input or output
-       becomes available on file descriptor */
-    if (ins(d, "O_ASYNC", (long)O_ASYNC)) return -1;
-#endif
-#ifdef O_DIRECT
-    /* Direct disk access. */
-    if (ins(d, "O_DIRECT", (long)O_DIRECT)) return -1;
-#endif
-#ifdef O_DIRECTORY
-    /* Must be a directory.      */
-    if (ins(d, "O_DIRECTORY", (long)O_DIRECTORY)) return -1;
-#endif
-#ifdef O_NOFOLLOW
-    /* Do not follow links.      */
-    if (ins(d, "O_NOFOLLOW", (long)O_NOFOLLOW)) return -1;
-#endif
-#ifdef O_NOATIME
-    /* Do not update the access time. */
-    if (ins(d, "O_NOATIME", (long)O_NOATIME)) return -1;
-#endif
-
-    /* These come from sysexits.h */
-#ifdef EX_OK
-    if (ins(d, "EX_OK", (long)EX_OK)) return -1;
-#endif /* EX_OK */
-#ifdef EX_USAGE
-    if (ins(d, "EX_USAGE", (long)EX_USAGE)) return -1;
-#endif /* EX_USAGE */
-#ifdef EX_DATAERR
-    if (ins(d, "EX_DATAERR", (long)EX_DATAERR)) return -1;
-#endif /* EX_DATAERR */
-#ifdef EX_NOINPUT
-    if (ins(d, "EX_NOINPUT", (long)EX_NOINPUT)) return -1;
-#endif /* EX_NOINPUT */
-#ifdef EX_NOUSER
-    if (ins(d, "EX_NOUSER", (long)EX_NOUSER)) return -1;
-#endif /* EX_NOUSER */
-#ifdef EX_NOHOST
-    if (ins(d, "EX_NOHOST", (long)EX_NOHOST)) return -1;
-#endif /* EX_NOHOST */
-#ifdef EX_UNAVAILABLE
-    if (ins(d, "EX_UNAVAILABLE", (long)EX_UNAVAILABLE)) return -1;
-#endif /* EX_UNAVAILABLE */
-#ifdef EX_SOFTWARE
-    if (ins(d, "EX_SOFTWARE", (long)EX_SOFTWARE)) return -1;
-#endif /* EX_SOFTWARE */
-#ifdef EX_OSERR
-    if (ins(d, "EX_OSERR", (long)EX_OSERR)) return -1;
-#endif /* EX_OSERR */
-#ifdef EX_OSFILE
-    if (ins(d, "EX_OSFILE", (long)EX_OSFILE)) return -1;
-#endif /* EX_OSFILE */
-#ifdef EX_CANTCREAT
-    if (ins(d, "EX_CANTCREAT", (long)EX_CANTCREAT)) return -1;
-#endif /* EX_CANTCREAT */
-#ifdef EX_IOERR
-    if (ins(d, "EX_IOERR", (long)EX_IOERR)) return -1;
-#endif /* EX_IOERR */
-#ifdef EX_TEMPFAIL
-    if (ins(d, "EX_TEMPFAIL", (long)EX_TEMPFAIL)) return -1;
-#endif /* EX_TEMPFAIL */
-#ifdef EX_PROTOCOL
-    if (ins(d, "EX_PROTOCOL", (long)EX_PROTOCOL)) return -1;
-#endif /* EX_PROTOCOL */
-#ifdef EX_NOPERM
-    if (ins(d, "EX_NOPERM", (long)EX_NOPERM)) return -1;
-#endif /* EX_NOPERM */
-#ifdef EX_CONFIG
-    if (ins(d, "EX_CONFIG", (long)EX_CONFIG)) return -1;
-#endif /* EX_CONFIG */
-#ifdef EX_NOTFOUND
-    if (ins(d, "EX_NOTFOUND", (long)EX_NOTFOUND)) return -1;
-#endif /* EX_NOTFOUND */
-
-#ifdef HAVE_SPAWNV
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-    if (ins(d, "P_WAIT", (long)P_WAIT)) return -1;
-    if (ins(d, "P_NOWAIT", (long)P_NOWAIT)) return -1;
-    if (ins(d, "P_OVERLAY", (long)P_OVERLAY)) return -1;
-    if (ins(d, "P_DEBUG", (long)P_DEBUG)) return -1;
-    if (ins(d, "P_SESSION", (long)P_SESSION)) return -1;
-    if (ins(d, "P_DETACH", (long)P_DETACH)) return -1;
-    if (ins(d, "P_PM", (long)P_PM)) return -1;
-    if (ins(d, "P_DEFAULT", (long)P_DEFAULT)) return -1;
-    if (ins(d, "P_MINIMIZE", (long)P_MINIMIZE)) return -1;
-    if (ins(d, "P_MAXIMIZE", (long)P_MAXIMIZE)) return -1;
-    if (ins(d, "P_FULLSCREEN", (long)P_FULLSCREEN)) return -1;
-    if (ins(d, "P_WINDOWED", (long)P_WINDOWED)) return -1;
-    if (ins(d, "P_FOREGROUND", (long)P_FOREGROUND)) return -1;
-    if (ins(d, "P_BACKGROUND", (long)P_BACKGROUND)) return -1;
-    if (ins(d, "P_NOCLOSE", (long)P_NOCLOSE)) return -1;
-    if (ins(d, "P_NOSESSION", (long)P_NOSESSION)) return -1;
-    if (ins(d, "P_QUOTE", (long)P_QUOTE)) return -1;
-    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;
-#else
-    if (ins(d, "P_WAIT", (long)_P_WAIT)) return -1;
-    if (ins(d, "P_NOWAIT", (long)_P_NOWAIT)) return -1;
-    if (ins(d, "P_OVERLAY", (long)_OLD_P_OVERLAY)) return -1;
-    if (ins(d, "P_NOWAITO", (long)_P_NOWAITO)) return -1;
-    if (ins(d, "P_DETACH", (long)_P_DETACH)) return -1;
-#endif
-#endif
-  return 0;
-}
-
-#define INITFUNC initedk2
-#define MODNAME "edk2"
-
-PyMODINIT_FUNC
-INITFUNC(void)
-{
-    PyObject *m;
-
-#ifndef UEFI_C_SOURCE
-  PyObject *v;
-#endif
-
-    m = Py_InitModule3(MODNAME,
-                       posix_methods,
-                       edk2__doc__);
-    if (m == NULL)
-        return;
-
-#ifndef UEFI_C_SOURCE
-    /* Initialize environ dictionary */
-    v = convertenviron();
-    Py_XINCREF(v);
-    if (v == NULL || PyModule_AddObject(m, "environ", v) != 0)
-        return;
-    Py_DECREF(v);
-#endif  /* UEFI_C_SOURCE */
-
-    if (all_ins(m))
-        return;
-
-    if (setup_confname_tables(m))
-        return;
-
-    Py_INCREF(PyExc_OSError);
-    PyModule_AddObject(m, "error", PyExc_OSError);
-
-#ifdef HAVE_PUTENV
-    if (posix_putenv_garbage == NULL)
-        posix_putenv_garbage = PyDict_New();
-#endif
-
-    if (!initialized) {
-        stat_result_desc.name = MODNAME ".stat_result";
-        stat_result_desc.fields[2].name = PyStructSequence_UnnamedField;
-        stat_result_desc.fields[3].name = PyStructSequence_UnnamedField;
-        stat_result_desc.fields[4].name = PyStructSequence_UnnamedField;
-        PyStructSequence_InitType(&StatResultType, &stat_result_desc);
-        structseq_new = StatResultType.tp_new;
-        StatResultType.tp_new = statresult_new;
-
-        //statvfs_result_desc.name = MODNAME ".statvfs_result";
-        //PyStructSequence_InitType(&StatVFSResultType, &statvfs_result_desc);
-#ifdef NEED_TICKS_PER_SECOND
-#  if defined(HAVE_SYSCONF) && defined(_SC_CLK_TCK)
-        ticks_per_second = sysconf(_SC_CLK_TCK);
-#  elif defined(HZ)
-        ticks_per_second = HZ;
-#  else
-        ticks_per_second = 60; /* magic fallback value; may be bogus */
-#  endif
-#endif
-    }
-    Py_INCREF((PyObject*) &StatResultType);
-    PyModule_AddObject(m, "stat_result", (PyObject*) &StatResultType);
-    //Py_INCREF((PyObject*) &StatVFSResultType);
-    //PyModule_AddObject(m, "statvfs_result",
-    //                   (PyObject*) &StatVFSResultType);
-    initialized = 1;
-
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-
diff --git a/AppPkg/Applications/Python/Efi/getpath.c b/AppPkg/Applications/Python/Efi/getpath.c
deleted file mode 100644
index 208bb7e..0000000
--- a/AppPkg/Applications/Python/Efi/getpath.c
+++ /dev/null
@@ -1,719 +0,0 @@
-/** @file
-    Return the initial module search path.
-
-    Search in specified locations for the associated Python libraries.
-
-    Py_GetPath returns module_search_path.
-    Py_GetPrefix returns PREFIX
-    Py_GetExec_Prefix returns PREFIX
-    Py_GetProgramFullPath returns the full path to the python executable.
-
-    These are built dynamically so that the proper volume name can be prefixed
-    to the paths.
-
-    For the EDK II, UEFI, implementation of Python, PREFIX and EXEC_PREFIX
-    are set as follows:
-      PREFIX      = /Efi/StdLib
-      EXEC_PREFIX = PREFIX
-
-    The following final paths are assumed:
-      /Efi/Tools/Python.efi                     The Python executable.
-      /Efi/StdLib/lib/python.VERSION            The platform independent Python modules.
-      /Efi/StdLib/lib/python.VERSION/dynalib    Dynamically loadable Python extension modules.
-
-    Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
-    SPDX-License-Identifier: BSD-2-Clause-Patent
-**/
-#include <Python.h>
-#include <osdefs.h>
-#include  <ctype.h>
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* VERSION must be at least two characters long. */
-#ifndef VERSION
-  #define VERSION     "27"
-#endif
-
-#ifndef VPATH
-  #define VPATH       "."
-#endif
-
-/* Search path entry delimiter */
-#ifdef DELIM
-  #define sDELIM        ";"
-#endif
-
-#ifndef PREFIX
-  #define PREFIX      "/Efi/StdLib"
-#endif
-
-#ifndef EXEC_PREFIX
-  #define EXEC_PREFIX PREFIX
-#endif
-
-#ifndef   LIBPYTHON
-  #define   LIBPYTHON     "lib/python." VERSION
-#endif
-
-#ifndef PYTHONPATH
-  #ifdef HAVE_ENVIRONMENT_OPS
-    #define PYTHONPATH  PREFIX LIBPYTHON sDELIM \
-                        EXEC_PREFIX LIBPYTHON "/lib-dynload"
-  #else
-    #define PYTHONPATH  LIBPYTHON
-  #endif
-#endif
-
-#ifndef LANDMARK
-#define LANDMARK    "os.py"
-#endif
-
-static char   prefix[MAXPATHLEN+1];
-static char   exec_prefix[MAXPATHLEN+1];
-static char   progpath[MAXPATHLEN+1];
-static char  *module_search_path          = NULL;
-static char   lib_python[]                = LIBPYTHON;
-static char   volume_name[32]             = { 0 };
-
-/** Determine if "ch" is a separator character.
-
-    @param[in]  ch      The character to test.
-
-    @retval     TRUE    ch is a separator character.
-    @retval     FALSE   ch is NOT a separator character.
-**/
-static int
-is_sep(char ch)
-{
-#ifdef ALTSEP
-  return ch == SEP || ch == ALTSEP;
-#else
-  return ch == SEP;
-#endif
-}
-
-/** Reduce a path by its last element.
-
-    The last element (everything to the right of the last separator character)
-    in the path, dir, is removed from the path.  Parameter dir is modified in place.
-
-    @param[in,out]    dir   Pointer to the path to modify.
-**/
-static void
-reduce(char *dir)
-{
-    size_t i = strlen(dir);
-    while (i > 0 && !is_sep(dir[i]))
-        --i;
-    dir[i] = '\0';
-}
-
-#ifndef UEFI_C_SOURCE
-/** Does filename point to a file and not directory?
-
-    @param[in]    filename    The fully qualified path to the object to test.
-
-    @retval       0     Filename was not found, or is a directory.
-    @retval       1     Filename refers to a regular file.
-**/
-static int
-isfile(char *filename)
-{
-    struct stat buf;
-    if (stat(filename, &buf) != 0) {
-      return 0;
-    }
-    //if (!S_ISREG(buf.st_mode))
-    if (S_ISDIR(buf.st_mode)) {
-      return 0;
-    }
-    return 1;
-}
-
-/** Determine if filename refers to a Python module.
-
-    A Python module is indicated if the file exists, or if the file with
-    'o' or 'c' appended exists.
-
-    @param[in]    filename    The fully qualified path to the object to test.
-
-    @retval       0
-**/
-static int
-ismodule(char *filename)
-{
-  if (isfile(filename)) {
-    //if (Py_VerboseFlag) PySys_WriteStderr("%s[%d]: file = \"%s\"\n", __func__, __LINE__, filename);
-    return 1;
-  }
-
-    /* Check for the compiled version of prefix. */
-    if (strlen(filename) < MAXPATHLEN) {
-        strcat(filename, Py_OptimizeFlag ? "o" : "c");
-        if (isfile(filename)) {
-          return 1;
-        }
-    }
-    return 0;
-}
-
-/** Does filename point to a directory?
-
-    @param[in]    filename    The fully qualified path to the object to test.
-
-    @retval       0     Filename was not found, or is not a regular file.
-    @retval       1     Filename refers to a directory.
-**/
-static int
-isdir(char *filename)
-{
-    struct stat buf;
-
-    if (stat(filename, &buf) != 0)
-        return 0;
-
-    if (!S_ISDIR(buf.st_mode))
-        return 0;
-
-    return 1;
-}
-#endif  /* UEFI_C_SOURCE */
-
-/** Determine if a path is absolute, or not.
-    An absolute path consists of a volume name, "VOL:", followed by a rooted path,
-    "/path/elements".  If both of these components are present, the path is absolute.
-
-    Let P be a pointer to the path to test.
-    Let A be a pointer to the first ':' in P.
-    Let B be a pointer to the first '/' or '\\' in P.
-
-    If A and B are not NULL
-      If (A-P+1) == (B-P) then the path is absolute.
-    Otherwise, the path is NOT absolute.
-
-    @param[in]  path    The path to test.
-
-    @retval     -1      Path is absolute but lacking volume name.
-    @retval      0      Path is NOT absolute.
-    @retval      1      Path is absolute.
-*/
-static int
-is_absolute(char *path)
-{
-  char  *A;
-  char  *B;
-
-  A = strchr(path, ':');
-  B = strpbrk(path, "/\\");
-
-  if(B != NULL) {
-    if(A == NULL) {
-      if(B == path) {
-        return -1;
-      }
-    }
-    else {
-      if(((A - path) + 1) == (B - path)) {
-        return 1;
-      }
-    }
-  }
-  return 0;
-}
-
-
-/** Add a path component, by appending stuff to buffer.
-    buffer must have at least MAXPATHLEN + 1 bytes allocated, and contain a
-    NUL-terminated string with no more than MAXPATHLEN characters (not counting
-    the trailing NUL).  It's a fatal error if it contains a string longer than
-    that (callers must be careful!).  If these requirements are met, it's
-    guaranteed that buffer will still be a NUL-terminated string with no more
-    than MAXPATHLEN characters at exit.  If stuff is too long, only as much of
-    stuff as fits will be appended.
-
-    @param[in,out]    buffer    The path to be extended.
-    @param[in]        stuff     The stuff to join onto the path.
-*/
-static void
-joinpath(char *buffer, char *stuff)
-{
-  size_t n, k;
-
-  k = 0;
-  if (is_absolute(stuff) == 1) {
-    n = 0;
-  }
-  else {
-    n = strlen(buffer);
-    if(n == 0) {
-      strncpy(buffer, volume_name, MAXPATHLEN);
-      n = strlen(buffer);
-    }
-    /* We must not use an else clause here because we want to test n again.
-        volume_name may have been empty.
-    */
-    if (n > 0 && n < MAXPATHLEN) {
-      if(!is_sep(buffer[n-1])) {
-        buffer[n++] = SEP;
-      }
-      if(is_sep(stuff[0]))   ++stuff;
-    }
-  }
-  if (n > MAXPATHLEN)
-    Py_FatalError("buffer overflow in getpath.c's joinpath()");
-  k = strlen(stuff);
-  if (n + k > MAXPATHLEN)
-    k = MAXPATHLEN - n;
-  strncpy(buffer+n, stuff, k);
-  buffer[n+k] = '\0';
-}
-
-/** Is filename an executable file?
-
-    An executable file:
-      1) exists
-      2) is a file, not a directory
-      3) has a name ending with ".efi"
-      4) Only has a single '.' in the name.
-
-    If basename(filename) does not contain a '.', append ".efi" to filename
-    If filename ends in ".efi", it is executable, else it isn't.
-
-    This routine is used to when searching for the file named by argv[0].
-    As such, there is no need to search for extensions other than ".efi".
-
-    @param[in]    filename      The name of the file to test.  It may, or may not, have an extension.
-
-    @retval       0     filename already has a path other than ".efi", or it doesn't exist, or is a directory.
-    @retval       1     filename refers to an executable file.
-**/
-static int
-isxfile(char *filename)
-{
-    struct stat  buf;
-    char        *bn;
-    char        *newbn;
-    int          bnlen;
-
-    bn = basename(filename);            // Separate off the file name component
-    reduce(filename);                   // and isolate the path component
-    bnlen = strlen(bn);
-    newbn = strrchr(bn, '.');           // Does basename contain a period?
-    if(newbn == NULL) {                   // Does NOT contain a period.
-      newbn = &bn[bnlen];
-      strncpyX(newbn, ".efi", MAXPATHLEN - bnlen);    // append ".efi" to basename
-      bnlen += 4;
-    }
-    else if(strcmp(newbn, ".efi") != 0) {
-      return 0;                         // File can not be executable.
-    }
-    joinpath(filename, bn);             // Stitch path and file name back together
-
-    if (stat(filename, &buf) != 0) {    // Now, verify that file exists
-      return 0;
-    }
-    if(S_ISDIR(buf.st_mode)) {          // And it is not a directory.
-      return 0;
-    }
-
-    return 1;
-}
-
-/** Copy p into path, ensuring that the result is an absolute path.
-
-    copy_absolute requires that path be allocated at least
-    MAXPATHLEN + 1 bytes and that p be no more than MAXPATHLEN bytes.
-
-    @param[out]     path    Destination to receive the absolute path.
-    @param[in]      p       Path to be tested and possibly converted.
-**/
-static void
-copy_absolute(char *path, char *p)
-{
-  if (is_absolute(p) == 1)
-        strcpy(path, p);
-  else {
-    if (!getcwd(path, MAXPATHLEN)) {
-      /* unable to get the current directory */
-      if(volume_name[0] != 0) {
-        strcpy(path, volume_name);
-        joinpath(path, p);
-      }
-      else
-        strcpy(path, p);
-      return;
-    }
-    if (p[0] == '.' && is_sep(p[1]))
-        p += 2;
-    joinpath(path, p);
-  }
-}
-
-/** Modify path so that the result is an absolute path.
-    absolutize() requires that path be allocated at least MAXPATHLEN+1 bytes.
-
-    @param[in,out]    path    The path to be made absolute.
-*/
-static void
-absolutize(char *path)
-{
-    char buffer[MAXPATHLEN + 1];
-
-    if (is_absolute(path) == 1)
-        return;
-    copy_absolute(buffer, path);
-    strcpy(path, buffer);
-}
-
-/** Extract the volume name from a path.
-
-    @param[out]   Dest    Pointer to location in which to store the extracted volume name.
-    @param[in]    path    Pointer to the path to extract the volume name from.
-**/
-static void
-set_volume(char *Dest, char *path)
-{
-  size_t    VolLen;
-
-  if(is_absolute(path)) {
-    VolLen = strcspn(path, "/\\:");
-    if((VolLen != 0) && (path[VolLen] == ':')) {
-      (void) strncpyX(Dest, path, VolLen + 1);
-    }
-  }
-}
-
-
-/** Determine paths.
-
-    Two directories must be found, the platform independent directory
-    (prefix), containing the common .py and .pyc files, and the platform
-    dependent directory (exec_prefix), containing the shared library
-    modules.  Note that prefix and exec_prefix are the same directory
-    for UEFI installations.
-
-    Separate searches are carried out for prefix and exec_prefix.
-    Each search tries a number of different locations until a ``landmark''
-    file or directory is found.  If no prefix or exec_prefix is found, a
-    warning message is issued and the preprocessor defined PREFIX and
-    EXEC_PREFIX are used (even though they may not work); python carries on
-    as best as is possible, but some imports may fail.
-
-    Before any searches are done, the location of the executable is
-    determined.  If argv[0] has one or more slashes in it, it is used
-    unchanged.  Otherwise, it must have been invoked from the shell's path,
-    so we search %PATH% for the named executable and use that.  If the
-    executable was not found on %PATH% (or there was no %PATH% environment
-    variable), the original argv[0] string is used.
-
-    Finally, argv0_path is set to the directory containing the executable
-    (i.e. the last component is stripped).
-
-    With argv0_path in hand, we perform a number of steps.  The same steps
-    are performed for prefix and for exec_prefix, but with a different
-    landmark.
-
-    The prefix landmark will always be lib/python.VERSION/os.py and the
-    exec_prefix will always be lib/python.VERSION/dynaload, where VERSION
-    is Python's version number as defined at the beginning of this file.
-
-    First. See if the %PYTHONHOME% environment variable points to the
-    installed location of the Python libraries.  If %PYTHONHOME% is set, then
-    it points to prefix and exec_prefix.  %PYTHONHOME% can be a single
-    directory, which is used for both, or the prefix and exec_prefix
-    directories separated by the DELIM character.
-
-    Next. Search the directories pointed to by the preprocessor variables
-    PREFIX and EXEC_PREFIX.  These paths are prefixed with the volume name
-    extracted from argv0_path.  The volume names correspond to the UEFI
-    shell "map" names.
-
-    That's it!
-
-    Well, almost.  Once we have determined prefix and exec_prefix, the
-    preprocessor variable PYTHONPATH is used to construct a path.  Each
-    relative path on PYTHONPATH is prefixed with prefix.  Then the directory
-    containing the shared library modules is appended.  The environment
-    variable $PYTHONPATH is inserted in front of it all.  Finally, the
-    prefix and exec_prefix globals are tweaked so they reflect the values
-    expected by other code, by stripping the "lib/python$VERSION/..." stuff
-    off.  This seems to make more sense given that currently the only
-    known use of sys.prefix and sys.exec_prefix is for the ILU installation
-    process to find the installed Python tree.
-
-    The final, fully resolved, paths should look something like:
-      fs0:/Efi/Tools/python.efi
-      fs0:/Efi/StdLib/lib/python27
-      fs0:/Efi/StdLib/lib/python27/dynaload
-
-**/
-static void
-calculate_path(void)
-{
-    extern char *Py_GetProgramName(void);
-
-    static char delimiter[2] = {DELIM, '\0'};
-    static char separator[2] = {SEP, '\0'};
-    char *pythonpath = PYTHONPATH;
-    char *rtpypath = Py_GETENV("PYTHONPATH");
-    //char *home = Py_GetPythonHome();
-    char *path = getenv("PATH");
-    char *prog = Py_GetProgramName();
-    char argv0_path[MAXPATHLEN+1];
-    char zip_path[MAXPATHLEN+1];
-    char *buf;
-    size_t bufsz;
-    size_t prefixsz;
-    char *defpath;
-
-
-/* ###########################################################################
-      Determine path to the Python.efi binary.
-      Produces progpath, argv0_path, and volume_name.
-########################################################################### */
-
-    /* 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
-     * $PATH isn't exported, you lose.
-     */
-    if (strchr(prog, SEP))
-            strncpy(progpath, prog, MAXPATHLEN);
-    else if (path) {
-      while (1) {
-        char *delim = strchr(path, DELIM);
-
-        if (delim) {
-                size_t len = delim - path;
-                if (len > MAXPATHLEN)
-                        len = MAXPATHLEN;
-                strncpy(progpath, path, len);
-                *(progpath + len) = '\0';
-        }
-        else
-                strncpy(progpath, path, MAXPATHLEN);
-
-        joinpath(progpath, prog);
-        if (isxfile(progpath))
-                break;
-
-        if (!delim) {
-                progpath[0] = '\0';
-                break;
-        }
-        path = delim + 1;
-      }
-    }
-    else
-            progpath[0] = '\0';
-    if ( (!is_absolute(progpath)) && (progpath[0] != '\0') )
-            absolutize(progpath);
-    strncpy(argv0_path, progpath, MAXPATHLEN);
-    argv0_path[MAXPATHLEN] = '\0';
-    set_volume(volume_name, argv0_path);
-
-    reduce(argv0_path);
-    /* At this point, argv0_path is guaranteed to be less than
-       MAXPATHLEN bytes long.
-    */
-
-/* ###########################################################################
-      Build the FULL prefix string, including volume name.
-      This is the full path to the platform independent libraries.
-########################################################################### */
-
-        strncpy(prefix, volume_name, MAXPATHLEN);
-        joinpath(prefix, PREFIX);
-        joinpath(prefix, lib_python);
-
-/* ###########################################################################
-      Build the FULL path to the zipped-up Python library.
-########################################################################### */
-
-    strncpy(zip_path, prefix, MAXPATHLEN);
-    zip_path[MAXPATHLEN] = '\0';
-    reduce(zip_path);
-    joinpath(zip_path, "python00.zip");
-    bufsz = strlen(zip_path);   /* Replace "00" with version */
-    zip_path[bufsz - 6] = VERSION[0];
-    zip_path[bufsz - 5] = VERSION[1];
-
-/* ###########################################################################
-      Build the FULL path to dynamically loadable libraries.
-########################################################################### */
-
-        strncpy(exec_prefix, volume_name, MAXPATHLEN);
-        joinpath(exec_prefix, EXEC_PREFIX);
-        joinpath(exec_prefix, lib_python);
-        joinpath(exec_prefix, "lib-dynload");
-
-/* ###########################################################################
-      Build the module search path.
-########################################################################### */
-
-    /* Reduce prefix and exec_prefix to their essence,
-     * e.g. /usr/local/lib/python1.5 is reduced to /usr/local.
-     * If we're loading relative to the build directory,
-     * return the compiled-in defaults instead.
-     */
-    reduce(prefix);
-    reduce(prefix);
-    /* The prefix is the root directory, but reduce() chopped
-     * off the "/". */
-    if (!prefix[0]) {
-      strcpy(prefix, volume_name);
-    }
-    bufsz = strlen(prefix);
-    if(prefix[bufsz-1] == ':') {
-      prefix[bufsz] = SEP;
-      prefix[bufsz+1] = 0;
-    }
-
-    /* Calculate size of return buffer.
-     */
-    defpath = pythonpath;
-    bufsz = 0;
-
-    if (rtpypath)
-        bufsz += strlen(rtpypath) + 1;
-
-    prefixsz = strlen(prefix) + 1;
-
-    while (1) {
-        char *delim = strchr(defpath, DELIM);
-
-        if (is_absolute(defpath) == 0)
-            /* Paths are relative to prefix */
-            bufsz += prefixsz;
-
-        if (delim)
-            bufsz += delim - defpath + 1;
-        else {
-            bufsz += strlen(defpath) + 1;
-            break;
-        }
-        defpath = delim + 1;
-    }
-
-    bufsz += strlen(zip_path) + 1;
-    bufsz += strlen(exec_prefix) + 1;
-
-    /* This is the only malloc call in this file */
-    buf = (char *)PyMem_Malloc(bufsz);
-
-    if (buf == NULL) {
-        /* We can't exit, so print a warning and limp along */
-        fprintf(stderr, "Not enough memory for dynamic PYTHONPATH.\n");
-        fprintf(stderr, "Using default static PYTHONPATH.\n");
-        module_search_path = PYTHONPATH;
-    }
-    else {
-        /* Run-time value of $PYTHONPATH goes first */
-        if (rtpypath) {
-            strcpy(buf, rtpypath);
-            strcat(buf, delimiter);
-        }
-        else
-            buf[0] = '\0';
-
-        /* Next is the default zip path */
-        strcat(buf, zip_path);
-        strcat(buf, delimiter);
-
-        /* Next goes merge of compile-time $PYTHONPATH with
-         * dynamically located prefix.
-         */
-        defpath = pythonpath;
-        while (1) {
-            char *delim = strchr(defpath, DELIM);
-
-            if (is_absolute(defpath) != 1) {
-                strcat(buf, prefix);
-                strcat(buf, separator);
-            }
-
-            if (delim) {
-                size_t len = delim - defpath + 1;
-                size_t end = strlen(buf) + len;
-                strncat(buf, defpath, len);
-                *(buf + end) = '\0';
-            }
-            else {
-                strcat(buf, defpath);
-                break;
-            }
-            defpath = delim + 1;
-        }
-        strcat(buf, delimiter);
-
-        /* Finally, on goes the directory for dynamic-load modules */
-        strcat(buf, exec_prefix);
-
-        /* And publish the results */
-        module_search_path = buf;
-    }
-        /*  At this point, exec_prefix is set to VOL:/Efi/StdLib/lib/python.27/dynalib.
-            We want to get back to the root value, so we have to remove the final three
-            segments to get VOL:/Efi/StdLib.  Because we don't know what VOL is, and
-            EXEC_PREFIX is also indeterminate, we just remove the three final segments.
-        */
-        reduce(exec_prefix);
-        reduce(exec_prefix);
-        reduce(exec_prefix);
-        if (!exec_prefix[0]) {
-          strcpy(exec_prefix, volume_name);
-        }
-        bufsz = strlen(exec_prefix);
-        if(exec_prefix[bufsz-1] == ':') {
-          exec_prefix[bufsz] = SEP;
-          exec_prefix[bufsz+1] = 0;
-        }
-    if (Py_VerboseFlag) PySys_WriteStderr("%s[%d]: module_search_path = \"%s\"\n", __func__, __LINE__, module_search_path);
-    if (Py_VerboseFlag) PySys_WriteStderr("%s[%d]: prefix             = \"%s\"\n", __func__, __LINE__, prefix);
-    if (Py_VerboseFlag) PySys_WriteStderr("%s[%d]: exec_prefix        = \"%s\"\n", __func__, __LINE__, exec_prefix);
-    if (Py_VerboseFlag) PySys_WriteStderr("%s[%d]: progpath           = \"%s\"\n", __func__, __LINE__, progpath);
-}
-
-
-/* External interface */
-
-char *
-Py_GetPath(void)
-{
-    if (!module_search_path)
-        calculate_path();
-    return module_search_path;
-}
-
-char *
-Py_GetPrefix(void)
-{
-    if (!module_search_path)
-        calculate_path();
-    return prefix;
-}
-
-char *
-Py_GetExecPrefix(void)
-{
-    if (!module_search_path)
-        calculate_path();
-    return exec_prefix;
-}
-
-char *
-Py_GetProgramFullPath(void)
-{
-    if (!module_search_path)
-        calculate_path();
-    return progpath;
-}
-
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/AppPkg/Applications/Python/Ia32/pyconfig.h b/AppPkg/Applications/Python/Ia32/pyconfig.h
deleted file mode 100644
index 2d73346..0000000
--- a/AppPkg/Applications/Python/Ia32/pyconfig.h
+++ /dev/null
@@ -1,1256 +0,0 @@
-/** @file
-    Manually generated Python Configuration file for EDK II.
-
-    Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
-    SPDX-License-Identifier: BSD-2-Clause-Patent
-**/
-#ifndef Py_PYCONFIG_H
-#define Py_PYCONFIG_H
-
-#include  <Uefi.h>
-
-#define PLATFORM    "uefi"
-
-/* 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 */
-#define 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 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 <asm/types.h> 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 <bluetooth/bluetooth.h> header file. */
-#undef HAVE_BLUETOOTH_BLUETOOTH_H
-
-/* Define to 1 if you have the <bluetooth.h> 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 */
-#define HAVE_BROKEN_POSIX_SEMAPHORES  1
-
-/* Define if pthread_sigmask() does not work on your system. */
-#define HAVE_BROKEN_PTHREAD_SIGMASK   1
-
-/* define to 1 if your sem_getvalue is broken. */
-#define HAVE_BROKEN_SEM_GETVALUE      1
-
-/* Define this if you have the type _Bool. */
-#define HAVE_C99_BOOL                 1
-
-/* 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. */
-#define HAVE_CLOCK                    1
-
-/* Define to 1 if you have the 'confstr' function. */
-#undef HAVE_CONFSTR
-
-/* Define to 1 if you have the <conio.h> header file. */
-#undef HAVE_CONIO_H
-
-/* Define to 1 if you have the 'copysign' function. */
-#define HAVE_COPYSIGN         1
-
-/* 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 <curses.h> 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. */
-#define HAVE_DECL_ISFINITE    0
-
-/* Define to 1 if you have the declaration of 'isinf', and to 0 if you don't.
-   */
-#define HAVE_DECL_ISINF       1
-
-/* Define to 1 if you have the declaration of 'isnan', and to 0 if you don't.
-   */
-#define HAVE_DECL_ISNAN       1
-
-/* Define to 1 if you have the declaration of 'tzname', and to 0 if you don't.
-   */
-#define HAVE_DECL_TZNAME      0
-
-/* Define to 1 if you have the device macros. */
-#undef HAVE_DEVICE_MACROS
-
-/* Define if we have /dev/ptc. */
-#undef HAVE_DEV_PTC
-
-/* Define if we have /dev/ptmx. */
-#undef HAVE_DEV_PTMX
-
-/* Define to 1 if you have the <direct.h> header file. */
-#undef HAVE_DIRECT_H
-
-/* Define to 1 if you have the <dirent.h> header file, and it defines 'DIR'.
-   */
-#define HAVE_DIRENT_H   1
-
-/* Define to 1 if you have the <dlfcn.h> 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. */
-#define HAVE_DUP2       1
-
-/* 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 <errno.h> header file. */
-#define HAVE_ERRNO_H    1
-
-/* 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 <fcntl.h> header file. */
-#define HAVE_FCNTL_H    1
-
-/* Define if you have the 'fdatasync' function. */
-#undef HAVE_FDATASYNC
-
-/* Define to 1 if you have the 'finite' function. */
-#define HAVE_FINITE     1
-
-/* 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. */
-#define HAVE_FSEEKO     1
-
-/* 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. */
-#define HAVE_FTELLO     1
-
-/* 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
-*/
-#if defined(__GNUC__)
-  #define HAVE_GCC_ASM_FOR_X87  1
-#else
-  #undef HAVE_GCC_ASM_FOR_X87
-#endif
-
-/* Define if you have the getaddrinfo function. */
-#undef HAVE_GETADDRINFO
-
-/* Define to 1 if you have the 'getcwd' function. */
-#define HAVE_GETCWD   1
-
-/* 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. */
-#define HAVE_GETPEERNAME  1
-
-/* 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 <grp.h> 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 <ieeefp.h> header file. */
-#undef HAVE_IEEEFP_H
-
-/* Define if you have the 'inet_aton' function. */
-#define HAVE_INET_ATON    1
-
-/* Define if you have the 'inet_pton' function. */
-#define HAVE_INET_PTON    1
-
-/* Define to 1 if you have the 'initgroups' function. */
-#undef HAVE_INITGROUPS
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H   1
-
-/* Define to 1 if you have the <io.h> 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 <langinfo.h> header file. */
-#undef HAVE_LANGINFO_H   /* non-functional in EFI. */
-
-/* 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 <libintl.h> 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 <libutil.h> header file. */
-#undef HAVE_LIBUTIL_H
-
-/* Define if you have the 'link' function. */
-#undef HAVE_LINK
-
-/* Define to 1 if you have the <linux/netlink.h> header file. */
-#undef HAVE_LINUX_NETLINK_H
-
-/* Define to 1 if you have the <linux/tipc.h> 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. */
-#define HAVE_LONG_LONG  1
-
-/* Define to 1 if you have the 'lstat' function. */
-#define HAVE_LSTAT      1
-
-/* Define this if you have the makedev macro. */
-#undef HAVE_MAKEDEV
-
-/* Define to 1 if you have the 'memmove' function. */
-#define HAVE_MEMMOVE    1
-
-/* Define to 1 if you have the <memory.h> 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. */
-#define HAVE_MKTIME     1
-
-/* Define to 1 if you have the 'mremap' function. */
-#undef HAVE_MREMAP
-
-/* Define to 1 if you have the <ncurses.h> header file. */
-#undef HAVE_NCURSES_H
-
-/* Define to 1 if you have the <ndir.h> header file, and it defines 'DIR'. */
-#undef HAVE_NDIR_H
-
-/* Define to 1 if you have the <netpacket/packet.h> 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. */
-#define HAVE_POLL         1
-
-/* Define to 1 if you have the <poll.h> header file. */
-#undef HAVE_POLL_H
-
-/* Define to 1 if you have the <process.h> header file. */
-#undef HAVE_PROCESS_H
-
-/* Define if your compiler supports function prototype */
-#define HAVE_PROTOTYPES   1
-
-/* Define if you have GNU PTH threads. */
-#undef HAVE_PTH
-
-/* Defined for Solaris 2.6 bug in pthread header. */
-#undef HAVE_PTHREAD_DESTRUCTOR
-
-/* Define to 1 if you have the <pthread.h> 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 <pty.h> 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. */
-#define HAVE_REALPATH   1
-
-/* 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. */
-#define HAVE_SELECT       1
-
-/* 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. */
-#define HAVE_SETLOCALE    1
-
-/* 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. */
-#define HAVE_SETVBUF    1
-
-/* Define to 1 if you have the <shadow.h> 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 <signal.h> header file. */
-#define HAVE_SIGNAL_H   1
-
-/* Define to 1 if you have the 'sigrelse' function. */
-#undef HAVE_SIGRELSE
-
-/* Define to 1 if you have the 'snprintf' function. */
-#define HAVE_SNPRINTF   1
-
-/* 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 <spawn.h> header file. */
-#undef HAVE_SPAWN_H
-
-/* Define if your compiler provides ssize_t */
-#define HAVE_SSIZE_T    1
-
-/* 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* <stdarg.h> */
-#define HAVE_STDARG_PROTOTYPES          1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H                   1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H                   1
-
-/* Define to 1 if you have the 'strdup' function. */
-#define HAVE_STRDUP                     1
-
-/* Define to 1 if you have the 'strftime' function. */
-#define HAVE_STRFTIME                   1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H                   1
-
-/* Define to 1 if you have the <stropts.h> header file. */
-#undef HAVE_STROPTS_H
-
-/* Define to 1 if 'st_birthtime' is a member of 'struct stat'. */
-#define HAVE_STRUCT_STAT_ST_BIRTHTIME   1
-
-/* Define to 1 if 'st_blksize' is a member of 'struct stat'. */
-#define HAVE_STRUCT_STAT_ST_BLKSIZE     1
-
-/* 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 <sysexits.h> header file. */
-#undef HAVE_SYSEXITS_H
-
-/* Define to 1 if you have the <sys/audioio.h> header file. */
-#undef HAVE_SYS_AUDIOIO_H
-
-/* Define to 1 if you have the <sys/bsdtty.h> header file. */
-#undef HAVE_SYS_BSDTTY_H
-
-/* Define to 1 if you have the <sys/dir.h> header file, and it defines 'DIR'.
-   */
-#undef HAVE_SYS_DIR_H
-
-/* Define to 1 if you have the <sys/epoll.h> header file. */
-#undef HAVE_SYS_EPOLL_H
-
-/* Define to 1 if you have the <sys/event.h> header file. */
-#undef HAVE_SYS_EVENT_H
-
-/* Define to 1 if you have the <sys/file.h> header file. */
-#undef HAVE_SYS_FILE_H
-
-/* Define to 1 if you have the <sys/loadavg.h> header file. */
-#undef HAVE_SYS_LOADAVG_H
-
-/* Define to 1 if you have the <sys/lock.h> header file. */
-#undef HAVE_SYS_LOCK_H
-
-/* Define to 1 if you have the <sys/mkdev.h> header file. */
-#undef HAVE_SYS_MKDEV_H
-
-/* Define to 1 if you have the <sys/modem.h> header file. */
-#undef HAVE_SYS_MODEM_H
-
-/* Define to 1 if you have the <sys/ndir.h> header file, and it defines 'DIR'.
-   */
-#undef HAVE_SYS_NDIR_H
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#define HAVE_SYS_PARAM_H                1
-
-/* Define to 1 if you have the <sys/poll.h> header file. */
-#define HAVE_SYS_POLL_H                 1
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#define HAVE_SYS_RESOURCE_H             1
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-#define HAVE_SYS_SELECT_H               1
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H               1
-
-/* Define to 1 if you have the <sys/statvfs.h> header file. */
-#undef HAVE_SYS_STATVFS_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H                 1
-
-/* Define to 1 if you have the <sys/termio.h> header file. */
-#undef HAVE_SYS_TERMIO_H
-
-/* Define to 1 if you have the <sys/times.h> header file. */
-#undef HAVE_SYS_TIMES_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H                 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H                1
-
-/* Define to 1 if you have the <sys/un.h> header file. */
-#undef HAVE_SYS_UN_H
-
-/* Define to 1 if you have the <sys/utsname.h> header file. */
-#undef HAVE_SYS_UTSNAME_H
-
-/* Define to 1 if you have the <sys/wait.h> header file. */
-#undef HAVE_SYS_WAIT_H
-
-/* Define to 1 if you have the system() command. */
-#define HAVE_SYSTEM       1
-
-/* 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. */
-#define HAVE_TEMPNAM                    1
-
-/* Define to 1 if you have the <termios.h> header file. */
-#undef HAVE_TERMIOS_H
-
-/* Define to 1 if you have the <term.h> 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 <thread.h> 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. */
-#define HAVE_TMPFILE                    1
-
-/* Define to 1 if you have the 'tmpnam' function. */
-#define HAVE_TMPNAM                     1
-
-/* 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 to 1 if the system has the type 'uintptr_t'. */
-#define HAVE_UINTPTR_T                  1
-
-/* Define to 1 if you have the 'uname' function. */
-#undef HAVE_UNAME
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H                   1
-
-/* 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). */
-#define HAVE_USABLE_WCHAR_T             1
-
-/* Define to 1 if you have the <util.h> 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 <utime.h> header file. */
-#define HAVE_UTIME_H    1
-
-/* 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. */
-#define HAVE_WCHAR_H    1
-
-/* Define to 1 if you have the 'wcscoll' function. */
-#define HAVE_WCSCOLL    1
-
-/* 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 <mkdev.h>.
-   */
-#undef MAJOR_IN_MKDEV
-
-/* Define to 1 if 'major', 'minor', and 'makedev' are declared in
-   <sysmacros.h>. */
-#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. */
-#define PACKAGE_BUGREPORT   "edk2-devel@lists.01.org"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME    "EDK II Python Package"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING  "EDK II Python Package V0.8"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME   "EADK_Python"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL   "https://github.com/tianocore/edk2/tree/master/AppPkg/Applications/Python"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION  "V0.8"
-
-/* Define if POSIX semaphores aren't enabled on your system */
-#define POSIX_SEMAPHORES_NOT_ENABLED    1
-
-/* 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 */
-#define PY_FORMAT_LONG_LONG   "ll"
-
-/* Define to printf format modifier for Py_ssize_t */
-#define PY_FORMAT_SIZE_T    "z"
-
-/* Define as the integral type used for Unicode representation. */
-#define PY_UNICODE_TYPE     wchar_t
-
-/* 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. */
-#define Py_UNICODE_SIZE   2
-
-/* Define if you want to have a Unicode type. */
-#define 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. */
-#define SIZEOF_DOUBLE     8
-
-/* The size of 'float', as computed by sizeof. */
-#define SIZEOF_FLOAT      4
-
-/* The size of 'fpos_t', as computed by sizeof. */
-#define SIZEOF_FPOS_T     8
-
-/* The size of 'int', as computed by sizeof. */
-#define SIZEOF_INT        4
-
-/* The size of 'long', as computed by sizeof. */
-#define SIZEOF_LONG       4
-
-/* The size of 'long double', as computed by sizeof. */
-#undef SIZEOF_LONG_DOUBLE
-
-/* The size of 'long long', as computed by sizeof. */
-#define SIZEOF_LONG_LONG  8
-
-/* The size of 'off_t', as computed by sizeof. */
-#define SIZEOF_OFF_T      4
-
-/* The size of 'pid_t', as computed by sizeof. */
-#define SIZEOF_PID_T      4
-
-/* The size of 'pthread_t', as computed by sizeof. */
-#undef SIZEOF_PTHREAD_T
-
-/* The size of 'short', as computed by sizeof. */
-#define SIZEOF_SHORT      2
-
-/* The size of 'size_t', as computed by sizeof. */
-#define SIZEOF_SIZE_T     4
-
-/* The size of 'time_t', as computed by sizeof. */
-#define SIZEOF_TIME_T     4
-
-/* The size of 'uintptr_t', as computed by sizeof. */
-#define SIZEOF_UINTPTR_T  4
-
-/* The size of 'void *', as computed by sizeof. */
-#define SIZEOF_VOID_P     4
-
-/* The size of 'wchar_t', as computed by sizeof. */
-#define SIZEOF_WCHAR_T    2
-
-/* The size of '_Bool', as computed by sizeof. */
-#define SIZEOF__BOOL      1
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS      1
-
-/* Define if you can safely include both <sys/select.h> and <sys/time.h>
-   (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 <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define to 1 if your <sys/time.h> 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). */
-#define WANT_WCTYPE_FUNCTIONS   1
-
-/* 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
-
-/* Define to 1 if on MINIX. */
-#undef _MINIX
-
-/* Define on NetBSD to activate all library features */
-#ifndef _NETBSD_SOURCE
-  #define _NETBSD_SOURCE  1
-#endif
-
-/* 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 <sys/synch.h>,
-   <pthread.h>, or <semaphore.h> 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 <sys/synch.h>,
-   <pthread.h>, or <semaphore.h> 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 <time.h> doesn't define. */
-//#undef clock_t
-
-/* Define to empty if 'const' does not conform to ANSI C. */
-//#undef const
-
-/* Define to 'int' if <sys/types.h> 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 <sys/types.h> does not define. */
-//#undef mode_t
-
-/* Define to 'long int' if <sys/types.h> does not define. */
-//#undef off_t
-
-/* Define to 'int' if <sys/types.h> does not define. */
-//#undef pid_t
-
-/* Define to empty if the keyword does not work. */
-//#undef signed
-
-/* Define to 'unsigned int' if <sys/types.h> does not define. */
-//#undef size_t
-
-/* Define to 'int' if <sys/socket.h> does not define. */
-//#undef socklen_t
-
-/* Define to 'int' if <sys/types.h> 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
-
-#endif /*Py_PYCONFIG_H*/
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Include/fileobject.h b/AppPkg/Applications/Python/PyMod-2.7.2/Include/fileobject.h
deleted file mode 100644
index f1fdde2..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Include/fileobject.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/** @file
-    File object interface.
-
-    Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-
-/* File object interface */
-
-#ifndef Py_FILEOBJECT_H
-#define Py_FILEOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-    PyObject_HEAD
-    FILE *f_fp;
-    PyObject *f_name;
-    PyObject *f_mode;
-    int (*f_close)(FILE *);
-    int f_softspace;            /* Flag used by 'print' command */
-    int f_binary;               /* Flag which indicates whether the file is
-                               open in binary (1) or text (0) mode */
-    char* f_buf;                /* Allocated readahead buffer */
-    char* f_bufend;             /* Points after last occupied position */
-    char* f_bufptr;             /* Current buffer position */
-    char *f_setbuf;             /* Buffer for setbuf(3) and setvbuf(3) */
-    int f_univ_newline;         /* Handle any newline convention */
-    int f_newlinetypes;         /* Types of newlines seen */
-    int f_skipnextlf;           /* Skip next \n */
-    PyObject *f_encoding;
-    PyObject *f_errors;
-    PyObject *weakreflist; /* List of weak references */
-    int unlocked_count;         /* Num. currently running sections of code
-                               using f_fp with the GIL released. */
-    int readable;
-    int writable;
-} PyFileObject;
-
-PyAPI_DATA(PyTypeObject) PyFile_Type;
-
-#define PyFile_Check(op) PyObject_TypeCheck(op, &PyFile_Type)
-#define PyFile_CheckExact(op) (Py_TYPE(op) == &PyFile_Type)
-
-PyAPI_FUNC(PyObject *) PyFile_FromString(char *, char *);
-PyAPI_FUNC(void) PyFile_SetBufSize(PyObject *, int);
-PyAPI_FUNC(int) PyFile_SetEncoding(PyObject *, const char *);
-PyAPI_FUNC(int) PyFile_SetEncodingAndErrors(PyObject *, const char *, char *errors);
-PyAPI_FUNC(PyObject *) PyFile_FromFile(FILE *, char *, char *,
-                                             int (*)(FILE *));
-PyAPI_FUNC(FILE *) PyFile_AsFile(PyObject *);
-PyAPI_FUNC(void) PyFile_IncUseCount(PyFileObject *);
-PyAPI_FUNC(void) PyFile_DecUseCount(PyFileObject *);
-PyAPI_FUNC(PyObject *) PyFile_Name(PyObject *);
-PyAPI_FUNC(PyObject *) PyFile_GetLine(PyObject *, int);
-PyAPI_FUNC(int) PyFile_WriteObject(PyObject *, PyObject *, int);
-PyAPI_FUNC(int) PyFile_SoftSpace(PyObject *, int);
-PyAPI_FUNC(int) PyFile_WriteString(const char *, PyObject *);
-PyAPI_FUNC(int) PyObject_AsFileDescriptor(PyObject *);
-
-/* The default encoding used by the platform file system APIs
-   If non-NULL, this is different than the default encoding for strings
-*/
-PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding;
-
-/* Routines to replace fread() and fgets() which accept any of \r, \n
-   or \r\n as line terminators.
-*/
-#define PY_STDIOTEXTMODE "b"
-char *Py_UniversalNewlineFgets(char *, int, FILE*, PyObject *);
-size_t Py_UniversalNewlineFread(char *, size_t, FILE *, PyObject *);
-
-/* A routine to do sanity checking on the file mode string.  returns
-   non-zero on if an exception occurred
-*/
-int _PyFile_SanitizeMode(char *mode);
-
-//#if defined _MSC_VER && _MSC_VER >= 1400
-/* A routine to check if a file descriptor is valid on Windows.  Returns 0
- * and sets errno to EBADF if it isn't.  This is to avoid Assertions
- * from various functions in the Windows CRT beginning with
- * Visual Studio 2005
- */
-//int _PyVerify_fd(int fd);
-//#elif defined _MSC_VER && _MSC_VER >= 1200
-/* fdopen doesn't set errno EBADF and crashes for large fd on debug build */
-//#define _PyVerify_fd(fd) (_get_osfhandle(fd) >= 0)
-//#else
-#define _PyVerify_fd(A) (1) /* dummy */
-//#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_FILEOBJECT_H */
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Include/osdefs.h b/AppPkg/Applications/Python/PyMod-2.7.2/Include/osdefs.h
deleted file mode 100644
index bf6ec11..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Include/osdefs.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/** @file
-    Operating system dependencies.
-
-    Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-#ifndef Py_OSDEFS_H
-#define Py_OSDEFS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Mod by chrish: QNX has WATCOM, but isn't DOS */
-#if !defined(__QNX__) && !defined(UEFI_C_SOURCE)
-#if defined(MS_WINDOWS) || defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__DJGPP__) || defined(PYOS_OS2)
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-#define MAXPATHLEN 260
-#define SEP '/'
-#define ALTSEP '\\'
-#else
-#define SEP '\\'
-#define ALTSEP '/'
-#define MAXPATHLEN 256
-#endif
-#define DELIM ';'
-#endif
-#endif
-
-#ifdef RISCOS
-#define SEP '.'
-#define MAXPATHLEN 256
-#define DELIM ','
-#endif
-
-
-/* Filename separator */
-#ifndef SEP
-#define SEP     '/'
-#define ALTSEP  '\\'
-#endif
-
-/* Max pathname length */
-#ifndef MAXPATHLEN
-#if defined(PATH_MAX) && PATH_MAX > 1024
-#define MAXPATHLEN PATH_MAX
-#else
-#define MAXPATHLEN 1024
-#endif
-#endif
-
-/* Search path entry delimiter */
-#ifndef DELIM
-  #ifdef  UEFI_C_SOURCE
-    #define DELIM   ';'
-    #define DELIM_STR   ";"
-  #else
-    #define DELIM   ':'
-  #endif
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_OSDEFS_H */
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Include/pyport.h b/AppPkg/Applications/Python/PyMod-2.7.2/Include/pyport.h
deleted file mode 100644
index d1494d3..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Include/pyport.h
+++ /dev/null
@@ -1,918 +0,0 @@
-/** @file
-    Symbols and macros to supply platform-independent interfaces to basic
-    C language & library operations whose spellings vary across platforms.
-
-    Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-#ifndef Py_PYPORT_H
-#define Py_PYPORT_H
-
-#include "pyconfig.h" /* include for defines */
-
-/* Some versions of HP-UX & Solaris need inttypes.h for int32_t,
-   INT32_MAX, etc. */
-#ifdef HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-
-#ifdef HAVE_STDINT_H
-#include <stdint.h>
-#endif
-
-/**************************************************************************
-Symbols and macros to supply platform-independent interfaces to basic
-C language & library operations whose spellings vary across platforms.
-
-Please try to make documentation here as clear as possible:  by definition,
-the stuff here is trying to illuminate C's darkest corners.
-
-Config #defines referenced here:
-
-SIGNED_RIGHT_SHIFT_ZERO_FILLS
-Meaning:  To be defined iff i>>j does not extend the sign bit when i is a
-          signed integral type and i < 0.
-Used in:  Py_ARITHMETIC_RIGHT_SHIFT
-
-Py_DEBUG
-Meaning:  Extra checks compiled in for debug mode.
-Used in:  Py_SAFE_DOWNCAST
-
-HAVE_UINTPTR_T
-Meaning:  The C9X type uintptr_t is supported by the compiler
-Used in:  Py_uintptr_t
-
-HAVE_LONG_LONG
-Meaning:  The compiler supports the C type "long long"
-Used in:  PY_LONG_LONG
-
-**************************************************************************/
-
-
-/* For backward compatibility only. Obsolete, do not use. */
-#ifdef HAVE_PROTOTYPES
-#define Py_PROTO(x) x
-#else
-#define Py_PROTO(x) ()
-#endif
-#ifndef Py_FPROTO
-#define Py_FPROTO(x) Py_PROTO(x)
-#endif
-
-/* typedefs for some C9X-defined synonyms for integral types.
- *
- * The names in Python are exactly the same as the C9X names, except with a
- * Py_ prefix.  Until C9X is universally implemented, this is the only way
- * to ensure that Python gets reliable names that don't conflict with names
- * in non-Python code that are playing their own tricks to define the C9X
- * names.
- *
- * NOTE: don't go nuts here!  Python has no use for *most* of the C9X
- * integral synonyms.  Only define the ones we actually need.
- */
-
-#ifdef HAVE_LONG_LONG
-#ifndef PY_LONG_LONG
-#define PY_LONG_LONG long long
-#if defined(LLONG_MAX)
-/* If LLONG_MAX is defined in limits.h, use that. */
-#define PY_LLONG_MIN LLONG_MIN
-#define PY_LLONG_MAX LLONG_MAX
-#define PY_ULLONG_MAX ULLONG_MAX
-#elif defined(__LONG_LONG_MAX__)
-/* Otherwise, if GCC has a builtin define, use that. */
-#define PY_LLONG_MAX __LONG_LONG_MAX__
-#define PY_LLONG_MIN (-PY_LLONG_MAX-1)
-#define PY_ULLONG_MAX (__LONG_LONG_MAX__*2ULL + 1ULL)
-#else
-/* Otherwise, rely on two's complement. */
-#define PY_ULLONG_MAX (~0ULL)
-#define PY_LLONG_MAX  ((long long)(PY_ULLONG_MAX>>1))
-#define PY_LLONG_MIN (-PY_LLONG_MAX-1)
-#endif /* LLONG_MAX */
-#endif
-#endif /* HAVE_LONG_LONG */
-
-/* a build with 30-bit digits for Python long integers needs an exact-width
- * 32-bit unsigned integer type to store those digits.  (We could just use
- * type 'unsigned long', but that would be wasteful on a system where longs
- * are 64-bits.)  On Unix systems, the autoconf macro AC_TYPE_UINT32_T defines
- * uint32_t to be such a type unless stdint.h or inttypes.h defines uint32_t.
- * However, it doesn't set HAVE_UINT32_T, so we do that here.
- */
-#if (defined UINT32_MAX || defined uint32_t)
-#ifndef PY_UINT32_T
-#define HAVE_UINT32_T 1
-#define PY_UINT32_T uint32_t
-#endif
-#endif
-
-/* Macros for a 64-bit unsigned integer type; used for type 'twodigits' in the
- * long integer implementation, when 30-bit digits are enabled.
- */
-#if (defined UINT64_MAX || defined uint64_t)
-#ifndef PY_UINT64_T
-#define HAVE_UINT64_T 1
-#define PY_UINT64_T uint64_t
-#endif
-#endif
-
-/* Signed variants of the above */
-#if (defined INT32_MAX || defined int32_t)
-#ifndef PY_INT32_T
-#define HAVE_INT32_T 1
-#define PY_INT32_T int32_t
-#endif
-#endif
-#if (defined INT64_MAX || defined int64_t)
-#ifndef PY_INT64_T
-#define HAVE_INT64_T 1
-#define PY_INT64_T int64_t
-#endif
-#endif
-
-/* If PYLONG_BITS_IN_DIGIT is not defined then we'll use 30-bit digits if all
-   the necessary integer types are available, and we're on a 64-bit platform
-   (as determined by SIZEOF_VOID_P); otherwise we use 15-bit digits. */
-
-#ifndef PYLONG_BITS_IN_DIGIT
-#if (defined HAVE_UINT64_T && defined HAVE_INT64_T && \
-     defined HAVE_UINT32_T && defined HAVE_INT32_T && SIZEOF_VOID_P >= 8)
-#define PYLONG_BITS_IN_DIGIT 30
-#else
-#define PYLONG_BITS_IN_DIGIT 15
-#endif
-#endif
-
-/* uintptr_t is the C9X name for an unsigned integral type such that a
- * legitimate void* can be cast to uintptr_t and then back to void* again
- * without loss of information.  Similarly for intptr_t, wrt a signed
- * integral type.
- */
-#ifdef HAVE_UINTPTR_T
-typedef uintptr_t       Py_uintptr_t;
-typedef intptr_t        Py_intptr_t;
-
-#elif SIZEOF_VOID_P <= SIZEOF_INT
-typedef unsigned int    Py_uintptr_t;
-typedef int             Py_intptr_t;
-
-#elif SIZEOF_VOID_P <= SIZEOF_LONG
-typedef unsigned long   Py_uintptr_t;
-typedef long            Py_intptr_t;
-
-#elif defined(HAVE_LONG_LONG) && (SIZEOF_VOID_P <= SIZEOF_LONG_LONG)
-typedef unsigned PY_LONG_LONG   Py_uintptr_t;
-typedef PY_LONG_LONG            Py_intptr_t;
-
-#else
-#   error "Python needs a typedef for Py_uintptr_t in pyport.h."
-#endif /* HAVE_UINTPTR_T */
-
-/* Py_ssize_t is a signed integral type such that sizeof(Py_ssize_t) ==
- * sizeof(size_t).  C99 doesn't define such a thing directly (size_t is an
- * unsigned integral type).  See PEP 353 for details.
- */
-#ifdef HAVE_SSIZE_T
-typedef ssize_t         Py_ssize_t;
-#elif SIZEOF_VOID_P == SIZEOF_SIZE_T
-typedef Py_intptr_t     Py_ssize_t;
-#else
-#   error "Python needs a typedef for Py_ssize_t in pyport.h."
-#endif
-
-/* Largest possible value of size_t.
-   SIZE_MAX is part of C99, so it might be defined on some
-   platforms. If it is not defined, (size_t)-1 is a portable
-   definition for C89, due to the way signed->unsigned
-   conversion is defined. */
-#ifdef SIZE_MAX
-#define PY_SIZE_MAX SIZE_MAX
-#else
-#define PY_SIZE_MAX ((size_t)-1)
-#endif
-
-/* Largest positive value of type Py_ssize_t. */
-#define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1))
-/* Smallest negative value of type Py_ssize_t. */
-#define PY_SSIZE_T_MIN (-PY_SSIZE_T_MAX-1)
-
-#if SIZEOF_PID_T > SIZEOF_LONG
-#   error "Python doesn't support sizeof(pid_t) > sizeof(long)"
-#endif
-
-/* PY_FORMAT_SIZE_T is a platform-specific modifier for use in a printf
- * format to convert an argument with the width of a size_t or Py_ssize_t.
- * C99 introduced "z" for this purpose, but not all platforms support that;
- * e.g., MS compilers use "I" instead.
- *
- * These "high level" Python format functions interpret "z" correctly on
- * all platforms (Python interprets the format string itself, and does whatever
- * the platform C requires to convert a size_t/Py_ssize_t argument):
- *
- *     PyString_FromFormat
- *     PyErr_Format
- *     PyString_FromFormatV
- *
- * Lower-level uses require that you interpolate the correct format modifier
- * yourself (e.g., calling printf, fprintf, sprintf, PyOS_snprintf); for
- * example,
- *
- *     Py_ssize_t index;
- *     fprintf(stderr, "index %" PY_FORMAT_SIZE_T "d sucks\n", index);
- *
- * That will expand to %ld, or %Id, or to something else correct for a
- * Py_ssize_t on the platform.
- */
-#ifndef PY_FORMAT_SIZE_T
-#   if SIZEOF_SIZE_T == SIZEOF_INT && !defined(__APPLE__)
-#       define PY_FORMAT_SIZE_T ""
-#   elif SIZEOF_SIZE_T == SIZEOF_LONG
-#       define PY_FORMAT_SIZE_T "l"
-#   elif defined(MS_WINDOWS)
-#       define PY_FORMAT_SIZE_T "I"
-#   else
-#       error "This platform's pyconfig.h needs to define PY_FORMAT_SIZE_T"
-#   endif
-#endif
-
-/* PY_FORMAT_LONG_LONG is analogous to PY_FORMAT_SIZE_T above, but for
- * the long long type instead of the size_t type.  It's only available
- * when HAVE_LONG_LONG is defined. The "high level" Python format
- * functions listed above will interpret "lld" or "llu" correctly on
- * all platforms.
- */
-#ifdef HAVE_LONG_LONG
-#   ifndef PY_FORMAT_LONG_LONG
-#       if defined(MS_WIN64) || defined(MS_WINDOWS)
-#           define PY_FORMAT_LONG_LONG "I64"
-#       else
-#           error "This platform's pyconfig.h needs to define PY_FORMAT_LONG_LONG"
-#       endif
-#   endif
-#endif
-
-/* Py_LOCAL can be used instead of static to get the fastest possible calling
- * convention for functions that are local to a given module.
- *
- * Py_LOCAL_INLINE does the same thing, and also explicitly requests inlining,
- * for platforms that support that.
- *
- * If PY_LOCAL_AGGRESSIVE is defined before python.h is included, more
- * "aggressive" inlining/optimizaion is enabled for the entire module.  This
- * may lead to code bloat, and may slow things down for those reasons.  It may
- * also lead to errors, if the code relies on pointer aliasing.  Use with
- * care.
- *
- * NOTE: You can only use this for functions that are entirely local to a
- * module; functions that are exported via method tables, callbacks, etc,
- * should keep using static.
- */
-
-#undef USE_INLINE /* XXX - set via configure? */
-
-#if defined(_MSC_VER)
-#if defined(PY_LOCAL_AGGRESSIVE)
-/* enable more aggressive optimization for visual studio */
-//#pragma optimize("agtw", on)
-#pragma optimize("gt", on)    // a and w are not legal for VS2005
-#endif
-/* ignore warnings if the compiler decides not to inline a function */
-#pragma warning(disable: 4710)
-/* fastest possible local call under MSVC */
-#define Py_LOCAL(type) static type __fastcall
-#define Py_LOCAL_INLINE(type) static __inline type __fastcall
-#elif defined(USE_INLINE)
-#define Py_LOCAL(type) static type
-#define Py_LOCAL_INLINE(type) static inline type
-#else
-#define Py_LOCAL(type) static type
-#define Py_LOCAL_INLINE(type) static type
-#endif
-
-/* Py_MEMCPY can be used instead of memcpy in cases where the copied blocks
- * are often very short.  While most platforms have highly optimized code for
- * large transfers, the setup costs for memcpy are often quite high.  MEMCPY
- * solves this by doing short copies "in line".
- */
-
-#if defined(_MSC_VER)
-#define Py_MEMCPY(target, source, length) do {                          \
-        size_t i_, n_ = (length);                                       \
-        char *t_ = (void*) (target);                                    \
-        const char *s_ = (void*) (source);                              \
-        if (n_ >= 16)                                                   \
-            memcpy(t_, s_, n_);                                         \
-        else                                                            \
-            for (i_ = 0; i_ < n_; i_++)                                 \
-                t_[i_] = s_[i_];                                        \
-    } while (0)
-#else
-#define Py_MEMCPY memcpy
-#endif
-
-#include <stdlib.h>
-
-#ifdef HAVE_IEEEFP_H
-#include <ieeefp.h>  /* needed for 'finite' declaration on some platforms */
-#endif
-
-#include <math.h> /* Moved here from the math section, before extern "C" */
-
-/********************************************
- * WRAPPER FOR <time.h> and/or <sys/time.h> *
- ********************************************/
-
-#ifdef TIME_WITH_SYS_TIME
-#include <sys/time.h>
-#include <time.h>
-#else /* !TIME_WITH_SYS_TIME */
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#else /* !HAVE_SYS_TIME_H */
-#include <time.h>
-#endif /* !HAVE_SYS_TIME_H */
-#endif /* !TIME_WITH_SYS_TIME */
-
-
-/******************************
- * WRAPPER FOR <sys/select.h> *
- ******************************/
-
-/* NB caller must include <sys/types.h> */
-
-#ifdef HAVE_SYS_SELECT_H
-
-#include <sys/select.h>
-
-#endif /* !HAVE_SYS_SELECT_H */
-
-/*******************************
- * stat() and fstat() fiddling *
- *******************************/
-
-/* We expect that stat and fstat exist on most systems.
- *  It's confirmed on Unix, Mac and Windows.
- *  If you don't have them, add
- *      #define DONT_HAVE_STAT
- * and/or
- *      #define DONT_HAVE_FSTAT
- * to your pyconfig.h. Python code beyond this should check HAVE_STAT and
- * HAVE_FSTAT instead.
- * Also
- *      #define HAVE_SYS_STAT_H
- * if <sys/stat.h> exists on your platform, and
- *      #define HAVE_STAT_H
- * if <stat.h> does.
- */
-#ifndef DONT_HAVE_STAT
-#define HAVE_STAT
-#endif
-
-#ifndef DONT_HAVE_FSTAT
-#define HAVE_FSTAT
-#endif
-
-#ifdef RISCOS
-#include <sys/types.h>
-#include "unixstuff.h"
-#endif
-
-#ifdef HAVE_SYS_STAT_H
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-#include <sys/types.h>
-#endif
-#include <sys/stat.h>
-#elif defined(HAVE_STAT_H)
-#include <stat.h>
-#endif
-
-#if defined(PYCC_VACPP)
-/* VisualAge C/C++ Failed to Define MountType Field in sys/stat.h */
-#define S_IFMT (S_IFDIR|S_IFCHR|S_IFREG)
-#endif
-
-#ifndef S_ISREG
-#define S_ISREG(x) (((x) & S_IFMT) == S_IFREG)
-#endif
-
-#ifndef S_ISDIR
-#define S_ISDIR(x) (((x) & S_IFMT) == S_IFDIR)
-#endif
-
-
-#ifdef __cplusplus
-/* Move this down here since some C++ #include's don't like to be included
-   inside an extern "C" */
-extern "C" {
-#endif
-
-
-/* Py_ARITHMETIC_RIGHT_SHIFT
- * C doesn't define whether a right-shift of a signed integer sign-extends
- * or zero-fills.  Here a macro to force sign extension:
- * Py_ARITHMETIC_RIGHT_SHIFT(TYPE, I, J)
- *    Return I >> J, forcing sign extension.  Arithmetically, return the
- *    floor of I/2**J.
- * Requirements:
- *    I should have signed integer type.  In the terminology of C99, this can
- *    be either one of the five standard signed integer types (signed char,
- *    short, int, long, long long) or an extended signed integer type.
- *    J is an integer >= 0 and strictly less than the number of bits in the
- *    type of I (because C doesn't define what happens for J outside that
- *    range either).
- *    TYPE used to specify the type of I, but is now ignored.  It's been left
- *    in for backwards compatibility with versions <= 2.6 or 3.0.
- * Caution:
- *    I may be evaluated more than once.
- */
-#ifdef SIGNED_RIGHT_SHIFT_ZERO_FILLS
-#define Py_ARITHMETIC_RIGHT_SHIFT(TYPE, I, J) \
-    ((I) < 0 ? -1-((-1-(I)) >> (J)) : (I) >> (J))
-#else
-#define Py_ARITHMETIC_RIGHT_SHIFT(TYPE, I, J) ((I) >> (J))
-#endif
-
-/* Py_FORCE_EXPANSION(X)
- * "Simply" returns its argument.  However, macro expansions within the
- * argument are evaluated.  This unfortunate trickery is needed to get
- * token-pasting to work as desired in some cases.
- */
-#define Py_FORCE_EXPANSION(X) X
-
-/* Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW)
- * Cast VALUE to type NARROW from type WIDE.  In Py_DEBUG mode, this
- * assert-fails if any information is lost.
- * Caution:
- *    VALUE may be evaluated more than once.
- */
-#ifdef Py_DEBUG
-#define Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) \
-    (assert((WIDE)(NARROW)(VALUE) == (VALUE)), (NARROW)(VALUE))
-#else
-#define Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) (NARROW)(VALUE)
-#endif
-
-/* Py_SET_ERRNO_ON_MATH_ERROR(x)
- * If a libm function did not set errno, but it looks like the result
- * overflowed or not-a-number, set errno to ERANGE or EDOM.  Set errno
- * to 0 before calling a libm function, and invoke this macro after,
- * passing the function result.
- * Caution:
- *    This isn't reliable.  See Py_OVERFLOWED comments.
- *    X is evaluated more than once.
- */
-#if defined(__FreeBSD__) || defined(__OpenBSD__) || (defined(__hpux) && defined(__ia64))
-#define _Py_SET_EDOM_FOR_NAN(X) if (isnan(X)) errno = EDOM;
-#else
-#define _Py_SET_EDOM_FOR_NAN(X) ;
-#endif
-#define Py_SET_ERRNO_ON_MATH_ERROR(X) \
-    do { \
-        if (errno == 0) { \
-            if ((X) == Py_HUGE_VAL || (X) == -Py_HUGE_VAL) \
-                errno = ERANGE; \
-            else _Py_SET_EDOM_FOR_NAN(X) \
-        } \
-    } while(0)
-
-/* Py_SET_ERANGE_ON_OVERFLOW(x)
- * An alias of Py_SET_ERRNO_ON_MATH_ERROR for backward-compatibility.
- */
-#define Py_SET_ERANGE_IF_OVERFLOW(X) Py_SET_ERRNO_ON_MATH_ERROR(X)
-
-/* Py_ADJUST_ERANGE1(x)
- * Py_ADJUST_ERANGE2(x, y)
- * Set errno to 0 before calling a libm function, and invoke one of these
- * macros after, passing the function result(s) (Py_ADJUST_ERANGE2 is useful
- * for functions returning complex results).  This makes two kinds of
- * adjustments to errno:  (A) If it looks like the platform libm set
- * errno=ERANGE due to underflow, clear errno. (B) If it looks like the
- * platform libm overflowed but didn't set errno, force errno to ERANGE.  In
- * effect, we're trying to force a useful implementation of C89 errno
- * behavior.
- * Caution:
- *    This isn't reliable.  See Py_OVERFLOWED comments.
- *    X and Y may be evaluated more than once.
- */
-#define Py_ADJUST_ERANGE1(X)                                            \
-    do {                                                                \
-        if (errno == 0) {                                               \
-            if ((X) == Py_HUGE_VAL || (X) == -Py_HUGE_VAL)              \
-                errno = ERANGE;                                         \
-        }                                                               \
-        else if (errno == ERANGE && (X) == 0.0)                         \
-            errno = 0;                                                  \
-    } while(0)
-
-#define Py_ADJUST_ERANGE2(X, Y)                                         \
-    do {                                                                \
-        if ((X) == Py_HUGE_VAL || (X) == -Py_HUGE_VAL ||                \
-            (Y) == Py_HUGE_VAL || (Y) == -Py_HUGE_VAL) {                \
-                        if (errno == 0)                                 \
-                                errno = ERANGE;                         \
-        }                                                               \
-        else if (errno == ERANGE)                                       \
-            errno = 0;                                                  \
-    } while(0)
-
-/*  The functions _Py_dg_strtod and _Py_dg_dtoa in Python/dtoa.c (which are
- *  required to support the short float repr introduced in Python 3.1) require
- *  that the floating-point unit that's being used for arithmetic operations
- *  on C doubles is set to use 53-bit precision.  It also requires that the
- *  FPU rounding mode is round-half-to-even, but that's less often an issue.
- *
- *  If your FPU isn't already set to 53-bit precision/round-half-to-even, and
- *  you want to make use of _Py_dg_strtod and _Py_dg_dtoa, then you should
- *
- *     #define HAVE_PY_SET_53BIT_PRECISION 1
- *
- *  and also give appropriate definitions for the following three macros:
- *
- *    _PY_SET_53BIT_PRECISION_START : store original FPU settings, and
- *        set FPU to 53-bit precision/round-half-to-even
- *    _PY_SET_53BIT_PRECISION_END : restore original FPU settings
- *    _PY_SET_53BIT_PRECISION_HEADER : any variable declarations needed to
- *        use the two macros above.
- *
- * The macros are designed to be used within a single C function: see
- * Python/pystrtod.c for an example of their use.
- */
-
-/* get and set x87 control word for gcc/x86 */
-#ifdef HAVE_GCC_ASM_FOR_X87
-#define HAVE_PY_SET_53BIT_PRECISION 1
-/* _Py_get/set_387controlword functions are defined in Python/pymath.c */
-#define _Py_SET_53BIT_PRECISION_HEADER                          \
-    unsigned short old_387controlword, new_387controlword
-#define _Py_SET_53BIT_PRECISION_START                                   \
-    do {                                                                \
-        old_387controlword = _Py_get_387controlword();                  \
-        new_387controlword = (old_387controlword & ~0x0f00) | 0x0200; \
-        if (new_387controlword != old_387controlword)                   \
-            _Py_set_387controlword(new_387controlword);                 \
-    } while (0)
-#define _Py_SET_53BIT_PRECISION_END                             \
-    if (new_387controlword != old_387controlword)               \
-        _Py_set_387controlword(old_387controlword)
-#endif
-
-/* default definitions are empty */
-#ifndef HAVE_PY_SET_53BIT_PRECISION
-#define _Py_SET_53BIT_PRECISION_HEADER
-#define _Py_SET_53BIT_PRECISION_START
-#define _Py_SET_53BIT_PRECISION_END
-#endif
-
-/* If we can't guarantee 53-bit precision, don't use the code
-   in Python/dtoa.c, but fall back to standard code.  This
-   means that repr of a float will be long (17 sig digits).
-
-   Realistically, there are two things that could go wrong:
-
-   (1) doubles aren't IEEE 754 doubles, or
-   (2) we're on x86 with the rounding precision set to 64-bits
-       (extended precision), and we don't know how to change
-       the rounding precision.
- */
-
-#if !defined(DOUBLE_IS_LITTLE_ENDIAN_IEEE754) && \
-    !defined(DOUBLE_IS_BIG_ENDIAN_IEEE754) && \
-    !defined(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754)
-#define PY_NO_SHORT_FLOAT_REPR
-#endif
-
-/* double rounding is symptomatic of use of extended precision on x86.  If
-   we're seeing double rounding, and we don't have any mechanism available for
-   changing the FPU rounding precision, then don't use Python/dtoa.c. */
-#if defined(X87_DOUBLE_ROUNDING) && !defined(HAVE_PY_SET_53BIT_PRECISION)
-#define PY_NO_SHORT_FLOAT_REPR
-#endif
-
-/* Py_DEPRECATED(version)
- * Declare a variable, type, or function deprecated.
- * Usage:
- *    extern int old_var Py_DEPRECATED(2.3);
- *    typedef int T1 Py_DEPRECATED(2.4);
- *    extern int x() Py_DEPRECATED(2.5);
- */
-#if defined(__GNUC__) && ((__GNUC__ >= 4) || \
-              (__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))
-#define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
-#else
-#define Py_DEPRECATED(VERSION_UNUSED)
-#endif
-
-/**************************************************************************
-Prototypes that are missing from the standard include files on some systems
-(and possibly only some versions of such systems.)
-
-Please be conservative with adding new ones, document them and enclose them
-in platform-specific #ifdefs.
-**************************************************************************/
-
-#ifdef SOLARIS
-/* Unchecked */
-extern int gethostname(char *, int);
-#endif
-
-#ifdef __BEOS__
-/* Unchecked */
-/* It's in the libs, but not the headers... - [cjh] */
-int shutdown( int, int );
-#endif
-
-#ifdef HAVE__GETPTY
-#include <sys/types.h>          /* we need to import mode_t */
-extern char * _getpty(int *, int, mode_t, int);
-#endif
-
-/* On QNX 6, struct termio must be declared by including sys/termio.h
-   if TCGETA, TCSETA, TCSETAW, or TCSETAF are used.  sys/termio.h must
-   be included before termios.h or it will generate an error. */
-#ifdef HAVE_SYS_TERMIO_H
-#include <sys/termio.h>
-#endif
-
-#if defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY)
-#if !defined(HAVE_PTY_H) && !defined(HAVE_LIBUTIL_H) && !defined(HAVE_UTIL_H)
-/* BSDI does not supply a prototype for the 'openpty' and 'forkpty'
-   functions, even though they are included in libutil. */
-#include <termios.h>
-extern int openpty(int *, int *, char *, struct termios *, struct winsize *);
-extern pid_t forkpty(int *, char *, struct termios *, struct winsize *);
-#endif /* !defined(HAVE_PTY_H) && !defined(HAVE_LIBUTIL_H) */
-#endif /* defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) */
-
-
-/* These are pulled from various places. It isn't obvious on what platforms
-   they are necessary, nor what the exact prototype should look like (which
-   is likely to vary between platforms!) If you find you need one of these
-   declarations, please move them to a platform-specific block and include
-   proper prototypes. */
-#if 0
-
-/* From Modules/resource.c */
-extern int getrusage();
-extern int getpagesize();
-
-/* From Python/sysmodule.c and Modules/posixmodule.c */
-extern int fclose(FILE *);
-
-/* From Modules/posixmodule.c */
-extern int fdatasync(int);
-#endif /* 0 */
-
-
-/* On 4.4BSD-descendants, ctype functions serves the whole range of
- * wchar_t character set rather than single byte code points only.
- * This characteristic can break some operations of string object
- * including str.upper() and str.split() on UTF-8 locales.  This
- * workaround was provided by Tim Robbins of FreeBSD project.
- */
-
-#ifdef __FreeBSD__
-#include <osreldate.h>
-#if __FreeBSD_version > 500039
-# define _PY_PORT_CTYPE_UTF8_ISSUE
-#endif
-#endif
-
-
-#if defined(__APPLE__)
-# define _PY_PORT_CTYPE_UTF8_ISSUE
-#endif
-
-#ifdef _PY_PORT_CTYPE_UTF8_ISSUE
-#include <ctype.h>
-#include <wctype.h>
-#undef isalnum
-#define isalnum(c) iswalnum(btowc(c))
-#undef isalpha
-#define isalpha(c) iswalpha(btowc(c))
-#undef islower
-#define islower(c) iswlower(btowc(c))
-#undef isspace
-#define isspace(c) iswspace(btowc(c))
-#undef isupper
-#define isupper(c) iswupper(btowc(c))
-#undef tolower
-#define tolower(c) towlower(btowc(c))
-#undef toupper
-#define toupper(c) towupper(btowc(c))
-#endif
-
-
-/* Declarations for symbol visibility.
-
-  PyAPI_FUNC(type): Declares a public Python API function and return type
-  PyAPI_DATA(type): Declares public Python data and its type
-  PyMODINIT_FUNC:   A Python module init function.  If these functions are
-                    inside the Python core, they are private to the core.
-                    If in an extension module, it may be declared with
-                    external linkage depending on the platform.
-
-  As a number of platforms support/require "__declspec(dllimport/dllexport)",
-  we support a HAVE_DECLSPEC_DLL macro to save duplication.
-*/
-
-/*
-  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().
-*/
-#if defined(__CYGWIN__) || defined(__BEOS__)
-#       define HAVE_DECLSPEC_DLL
-#endif
-
-/* only get special linkage if built as shared or platform is Cygwin */
-#if defined(Py_ENABLE_SHARED) || defined(__CYGWIN__)
-#       if defined(HAVE_DECLSPEC_DLL)
-#               ifdef Py_BUILD_CORE
-#                       define PyAPI_FUNC(RTYPE) __declspec(dllexport) RTYPE
-#                       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__)
-#                               define PyMODINIT_FUNC __declspec(dllexport) void
-#                       else /* __CYGWIN__ */
-#                               define PyMODINIT_FUNC void
-#                       endif /* __CYGWIN__ */
-#               else /* Py_BUILD_CORE */
-        /* Building an extension module, or an embedded situation */
-        /* public Python functions and data are imported */
-        /* 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__)
-#                               define PyAPI_FUNC(RTYPE) __declspec(dllimport) RTYPE
-#                       endif /* !__CYGWIN__ */
-#                       define PyAPI_DATA(RTYPE) extern __declspec(dllimport) RTYPE
-        /* module init functions outside the core must be exported */
-#                       if defined(__cplusplus)
-#                               define PyMODINIT_FUNC extern "C" __declspec(dllexport) void
-#                       else /* __cplusplus */
-#                               define PyMODINIT_FUNC __declspec(dllexport) void
-#                       endif /* __cplusplus */
-#               endif /* Py_BUILD_CORE */
-#       endif /* HAVE_DECLSPEC */
-#endif /* Py_ENABLE_SHARED */
-
-/* If no external linkage macros defined by now, create defaults */
-#ifndef PyAPI_FUNC
-#       define PyAPI_FUNC(RTYPE) RTYPE
-#endif
-#ifndef PyAPI_DATA
-#       define PyAPI_DATA(RTYPE) extern RTYPE
-#endif
-#ifndef PyMODINIT_FUNC
-#       if defined(__cplusplus)
-#               define PyMODINIT_FUNC extern "C" void
-#       else /* __cplusplus */
-#               define PyMODINIT_FUNC void
-#       endif /* __cplusplus */
-#endif
-
-/* Deprecated DL_IMPORT and DL_EXPORT macros */
-#if defined(Py_ENABLE_SHARED) && defined (HAVE_DECLSPEC_DLL)
-#       if defined(Py_BUILD_CORE)
-#               define DL_IMPORT(RTYPE) __declspec(dllexport) RTYPE
-#               define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE
-#       else
-#               define DL_IMPORT(RTYPE) __declspec(dllimport) RTYPE
-#               define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE
-#       endif
-#endif
-#ifndef DL_EXPORT
-#       define DL_EXPORT(RTYPE) RTYPE
-#endif
-#ifndef DL_IMPORT
-#       define DL_IMPORT(RTYPE) RTYPE
-#endif
-/* End of deprecated DL_* macros */
-
-/* If the fd manipulation macros aren't defined,
-   here is a set that should do the job */
-
-#if 0 /* disabled and probably obsolete */
-
-#ifndef FD_SETSIZE
-#define FD_SETSIZE      256
-#endif
-
-#ifndef FD_SET
-
-typedef long fd_mask;
-
-#define NFDBITS (sizeof(fd_mask) * NBBY)        /* bits per mask */
-#ifndef howmany
-#define howmany(x, y)   (((x)+((y)-1))/(y))
-#endif /* howmany */
-
-typedef struct fd_set {
-    fd_mask     fds_bits[howmany(FD_SETSIZE, NFDBITS)];
-} fd_set;
-
-#define FD_SET(n, p)    ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
-#define FD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
-#define FD_ISSET(n, p)  ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
-#define FD_ZERO(p)      memset((char *)(p), '\0', sizeof(*(p)))
-
-#endif /* FD_SET */
-
-#endif /* fd manipulation macros */
-
-
-/* limits.h constants that may be missing */
-
-#ifndef INT_MAX
-#define INT_MAX 2147483647
-#endif
-
-#ifndef LONG_MAX
-#if SIZEOF_LONG == 4
-#define LONG_MAX 0X7FFFFFFFL
-#elif SIZEOF_LONG == 8
-#define LONG_MAX 0X7FFFFFFFFFFFFFFFL
-#else
-#error "could not set LONG_MAX in pyport.h"
-#endif
-#endif
-
-#ifndef LONG_MIN
-#define LONG_MIN (-LONG_MAX-1)
-#endif
-
-#ifndef LONG_BIT
-#define LONG_BIT (8 * SIZEOF_LONG)
-#endif
-
-#if LONG_BIT != 8 * SIZEOF_LONG
-/* 04-Oct-2000 LONG_BIT is apparently (mis)defined as 64 on some recent
- * 32-bit platforms using gcc.  We try to catch that here at compile-time
- * rather than waiting for integer multiplication to trigger bogus
- * overflows.
- */
-#error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-/*
- * Hide GCC attributes from compilers that don't support them.
- */
-#if (!defined(__GNUC__) || __GNUC__ < 2 || \
-     (__GNUC__ == 2 && __GNUC_MINOR__ < 7) ) && \
-    !defined(RISCOS)
-#define Py_GCC_ATTRIBUTE(x)
-#else
-#define Py_GCC_ATTRIBUTE(x) __attribute__(x)
-#endif
-
-/*
- * Add PyArg_ParseTuple format where available.
- */
-#ifdef HAVE_ATTRIBUTE_FORMAT_PARSETUPLE
-#define Py_FORMAT_PARSETUPLE(func,p1,p2) __attribute__((format(func,p1,p2)))
-#else
-#define Py_FORMAT_PARSETUPLE(func,p1,p2)
-#endif
-
-/*
- * Specify alignment on compilers that support it.
- */
-#if defined(__GNUC__) && __GNUC__ >= 3
-#define Py_ALIGNED(x) __attribute__((aligned(x)))
-#else
-#define Py_ALIGNED(x)
-#endif
-
-/* Eliminate end-of-loop code not reached warnings from SunPro C
- * when using do{...}while(0) macros
- */
-#ifdef __SUNPRO_C
-#pragma error_messages (off,E_END_OF_LOOP_CODE_NOT_REACHED)
-#endif
-
-/*
- * Older Microsoft compilers don't support the C99 long long literal suffixes,
- * so these will be defined in PC/pyconfig.h for those compilers.
- */
-#ifndef Py_LL
-#define Py_LL(x) x##LL
-#endif
-
-#ifndef Py_ULL
-#define Py_ULL(x) Py_LL(x##U)
-#endif
-
-#endif /* Py_PYPORT_H */
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Lib/ntpath.py b/AppPkg/Applications/Python/PyMod-2.7.2/Lib/ntpath.py
deleted file mode 100644
index 970a603..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Lib/ntpath.py
+++ /dev/null
@@ -1,528 +0,0 @@
-# Module 'ntpath' -- common operations on WinNT/Win95 pathnames
-"""Common pathname manipulations, WindowsNT/95 version.
-
-Instead of importing this module directly, import os and refer to this
-module as os.path.
-"""
-
-import os
-import sys
-import stat
-import genericpath
-import warnings
-
-from genericpath import *
-
-__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","relpath"]
-
-# strings representing various path-related bits and pieces
-curdir = '.'
-pardir = '..'
-extsep = '.'
-sep = '\\'
-pathsep = ';'
-altsep = '/'
-defpath = '.;C:\\bin'
-if 'ce' in sys.builtin_module_names:
-    defpath = '\\Windows'
-elif 'os2' in sys.builtin_module_names:
-    # OS/2 w/ VACPP
-    altsep = '/'
-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 slashes into backslashes."""
-    return s.replace("/", "\\").lower()
-
-
-# Return whether a path is absolute.
-# Trivial in Posix, harder on the Mac or MS-DOS.
-# For DOS it is absolute if it starts with a slash or backslash (current
-# volume), or if a pathname after the volume letter and colon / UNC resource
-# starts with a slash or backslash.
-
-def isabs(s):
-    """Test whether a path is absolute"""
-    s = splitdrive(s)[1]
-    return s != '' and s[:1] in '/\\'
-
-
-# Join two (or more) paths.
-
-def join(a, *p):
-    """Join two or more pathname components, inserting "\\" as needed.
-    If any component is an absolute path, all previous path components
-    will be discarded."""
-    path = a
-    for b in p:
-        b_wins = 0  # set to 1 iff b makes path irrelevant
-        if path == "":
-            b_wins = 1
-
-        elif isabs(b):
-            # This probably wipes out path so far.  However, it's more
-            # complicated if path begins with a drive letter:
-            #     1. join('c:', '/a') == 'c:/a'
-            #     2. join('c:/', '/a') == 'c:/a'
-            # But
-            #     3. join('c:/a', '/b') == '/b'
-            #     4. join('c:', 'd:/') = 'd:/'
-            #     5. join('c:/', 'd:/') = 'd:/'
-            if path[1:2] != ":" or b[1:2] == ":":
-                # Path doesn't start with a drive letter, or cases 4 and 5.
-                b_wins = 1
-
-            # Else path has a drive letter, and b doesn't but is absolute.
-            elif len(path) > 3 or (len(path) == 3 and
-                                   path[-1] not in "/\\"):
-                # case 3
-                b_wins = 1
-
-        if b_wins:
-            path = b
-        else:
-            # Join, and ensure there's a separator.
-            assert len(path) > 0
-            if path[-1] in "/\\":
-                if b and b[0] in "/\\":
-                    path += b[1:]
-                else:
-                    path += b
-            elif path[-1] == ":":
-                path += b
-            elif b:
-                if b[0] in "/\\":
-                    path += b
-                else:
-                    path += "\\" + b
-            else:
-                # path is not empty and does not end with a backslash,
-                # but b is empty; since, e.g., split('a/') produces
-                # ('a', ''), it's best if join() adds a backslash in
-                # this case.
-                path += '\\'
-
-    return path
-
-
-# Split a path in a drive specification (a drive letter followed by a
-# colon) and the path specification.
-# It is always true that drivespec + pathspec == p
-def splitdrive(p):
-    """Split a pathname into drive and path specifiers. Returns a 2-tuple
-"(drive,path)";  either part may be empty"""
-    pparts = p.split(':', 2)
-    numparts = len(pparts)
-    if numparts == 2:
-        return pparts[0] + ':', pparts[1]
-    else:
-        if numparts == 1:
-          return '', pparts[0]
-    return '', p
-
-
-# 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 len(p.split(':', 2)) > 1:
-        return '', p # Drive letter present
-    firstTwo = p[0:2]
-    if firstTwo == '//' or firstTwo == '\\\\':
-        # 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
-
-
-# Split a path in head (everything up to the last '/') and tail (the
-# rest).  After the trailing '/' is stripped, the invariant
-# join(head, tail) == p holds.
-# The resulting head won't end in '/' unless it is the root.
-
-def split(p):
-    """Split a pathname.
-
-    Return tuple (head, tail) where tail is everything after the final slash.
-    Either part may be empty."""
-
-    d, p = splitdrive(p)
-    # set i to index beyond p's last slash
-    i = len(p)
-    while i and p[i-1] not in '/\\':
-        i = i - 1
-    head, tail = p[:i], p[i:]  # now tail has no slashes
-    # remove trailing slashes from head, unless it's all slashes
-    head2 = head
-    while head2 and head2[-1] in '/\\':
-        head2 = head2[:-1]
-    head = head2 or head
-    return d + head, tail
-
-
-# Split a path in root and extension.
-# The extension is everything starting at the last dot in the last
-# pathname component; the root is everything before that.
-# It is always true that root + ext == p.
-
-def splitext(p):
-    return genericpath._splitext(p, sep, altsep, extsep)
-splitext.__doc__ = genericpath._splitext.__doc__
-
-
-# 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]
-
-# Is a path a symbolic link?
-# This will always return false on systems where posix.lstat doesn't exist.
-
-def islink(path):
-    """Test for symbolic link.
-    On WindowsNT/95 and OS/2 always returns false
-    """
-    return False
-
-# alias exists to lexists
-lexists = exists
-
-# 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 '/\\'
-
-
-# Directory tree walk.
-# For each directory under top (including top itself, but excluding
-# '.' and '..'), func(arg, dirname, filenames) is called, where
-# dirname is the name of the directory and filenames is the list
-# of files (and subdirectories etc.) in the directory.
-# The func may modify the filenames list, to implement a filter,
-# or to impose a different order of visiting.
-
-def walk(top, func, arg):
-    """Directory tree walk with callback function.
-
-    For each directory in the directory tree rooted at top (including top
-    itself, but excluding '.' and '..'), call func(arg, dirname, fnames).
-    dirname is the name of the directory, and fnames a list of the names of
-    the files and subdirectories in dirname (excluding '.' and '..').  func
-    may modify the fnames list in-place (e.g. via del or slice assignment),
-    and walk will only recurse into the subdirectories whose names remain in
-    fnames; this can be used to implement a filter, or to impose a specific
-    order of visiting.  No semantics are defined for, or required of, arg,
-    beyond that arg is always passed to func.  It can be used, e.g., to pass
-    a filename pattern, or a mutable object designed to accumulate
-    statistics.  Passing None for arg is common."""
-    warnings.warnpy3k("In 3.x, os.path.walk is removed in favor of os.walk.",
-                      stacklevel=2)
-    try:
-        names = os.listdir(top)
-    except os.error:
-        return
-    func(arg, top, names)
-    for name in names:
-        name = join(top, name)
-        if isdir(name):
-            walk(name, func, arg)
-
-
-# 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."""
-    if path[:1] != '~':
-        return path
-    i, n = 1, len(path)
-    while i < n and path[i] not in '/\\':
-        i = i + 1
-
-    if 'HOME' in os.environ:
-        userhome = os.environ['HOME']
-    elif 'USERPROFILE' in os.environ:
-        userhome = os.environ['USERPROFILE']
-    elif not 'HOMEPATH' in os.environ:
-        return path
-    else:
-        try:
-            drive = os.environ['HOMEDRIVE']
-        except KeyError:
-            drive = ''
-        userhome = join(drive, os.environ['HOMEPATH'])
-
-    if i != 1: #~user
-        userhome = join(dirname(userhome), path[1:i])
-
-    return userhome + path[i:]
-
-
-# Expand paths containing shell variable substitutions.
-# The following rules apply:
-#       - no expansion within single quotes
-#       - '$$' is translated into '$'
-#       - '%%' is translated into '%' if '%%' are not seen in %var1%%var2%
-#       - ${varname} is accepted.
-#       - $varname is accepted.
-#       - %varname% is accepted.
-#       - varnames can be made out of letters, digits and the characters '_-'
-#         (though is not verified in the ${varname} and %varname% cases)
-# XXX With COMMAND.COM you can use any characters in a variable name,
-# XXX except '^|<>='.
-
-def expandvars(path):
-    """Expand shell variables of the forms $var, ${var} and %var%.
-
-    Unknown variables are left unchanged."""
-    if '$' not in path and '%' not in path:
-        return path
-    import string
-    varchars = string.ascii_letters + string.digits + '_-'
-    res = ''
-    index = 0
-    pathlen = len(path)
-    while index < pathlen:
-        c = path[index]
-        if c == '\'':   # no expansion within single quotes
-            path = path[index + 1:]
-            pathlen = len(path)
-            try:
-                index = path.index('\'')
-                res = res + '\'' + path[:index + 1]
-            except ValueError:
-                res = res + path
-                index = pathlen - 1
-        elif c == '%':  # variable or '%'
-            if path[index + 1:index + 2] == '%':
-                res = res + c
-                index = index + 1
-            else:
-                path = path[index+1:]
-                pathlen = len(path)
-                try:
-                    index = path.index('%')
-                except ValueError:
-                    res = res + '%' + path
-                    index = pathlen - 1
-                else:
-                    var = path[:index]
-                    if var in os.environ:
-                        res = res + os.environ[var]
-                    else:
-                        res = res + '%' + var + '%'
-        elif c == '$':  # variable or '$$'
-            if path[index + 1:index + 2] == '$':
-                res = res + c
-                index = index + 1
-            elif path[index + 1:index + 2] == '{':
-                path = path[index+2:]
-                pathlen = len(path)
-                try:
-                    index = path.index('}')
-                    var = path[:index]
-                    if var in os.environ:
-                        res = res + os.environ[var]
-                    else:
-                        res = res + '${' + var + '}'
-                except ValueError:
-                    res = res + '${' + path
-                    index = pathlen - 1
-            else:
-                var = ''
-                index = index + 1
-                c = path[index:index + 1]
-                while c != '' and c in varchars:
-                    var = var + c
-                    index = index + 1
-                    c = path[index:index + 1]
-                if var in os.environ:
-                    res = res + os.environ[var]
-                else:
-                    res = res + '$' + var
-                if c != '':
-                    index = index - 1
-        else:
-            res = res + c
-        index = index + 1
-    return res
-
-
-# Normalize a path, e.g. A//B, A/./B and A/foo/../B all become A\B.
-# Previously, this function also truncated pathnames to 8+3 format,
-# but as this module is called "ntpath", that's obviously wrong!
-
-def normpath(path):
-    """Normalize path, eliminating double slashes, etc."""
-    # Preserve unicode (if path is unicode)
-    backslash, dot = (u'\\', u'.') if isinstance(path, unicode) else ('\\', '.')
-    if path.startswith(('\\\\.\\', '\\\\?\\')):
-        # in the case of paths with these prefixes:
-        # \\.\ -> device names
-        # \\?\ -> literal paths
-        # do not do any normalization, but return the path unchanged
-        return path
-    path = path.replace("/", "\\")
-    prefix, path = splitdrive(path)
-    # We need to be careful here. If the prefix is empty, and the path starts
-    # with a backslash, it could either be an absolute path on the current
-    # drive (\dir1\dir2\file) or a UNC filename (\\server\mount\dir1\file). It
-    # is therefore imperative NOT to collapse multiple backslashes blindly in
-    # that case.
-    # The code below preserves multiple backslashes when there is no drive
-    # letter. This means that the invalid filename \\\a\b is preserved
-    # unchanged, where a\\\b is normalised to a\b. It's not clear that there
-    # is any better behaviour for such edge cases.
-    if prefix == '':
-        # No drive letter - preserve initial backslashes
-        while path[:1] == "\\":
-            prefix = prefix + backslash
-            path = path[1:]
-    else:
-        # We have a drive letter - collapse initial backslashes
-        if path.startswith("\\"):
-            prefix = prefix + backslash
-            path = path.lstrip("\\")
-    comps = path.split("\\")
-    i = 0
-    while i < len(comps):
-        if comps[i] in ('.', ''):
-            del comps[i]
-        elif comps[i] == '..':
-            if i > 0 and comps[i-1] != '..':
-                del comps[i-1:i+1]
-                i -= 1
-            elif i == 0 and prefix.endswith("\\"):
-                del comps[i]
-            else:
-                i += 1
-        else:
-            i += 1
-    # If the path is now empty, substitute '.'
-    if not prefix and not comps:
-        comps.append(dot)
-    return prefix + backslash.join(comps)
-
-
-# Return an absolute path.
-try:
-    from nt import _getfullpathname
-
-except ImportError: # not running on Windows - mock up something sensible
-    def abspath(path):
-        """Return the absolute version of a path."""
-        if not isabs(path):
-            if isinstance(path, unicode):
-                cwd = os.getcwdu()
-            else:
-                cwd = os.getcwd()
-            path = join(cwd, path)
-        return normpath(path)
-
-else:  # use native Windows method on Windows
-    def abspath(path):
-        """Return the absolute version of a path."""
-
-        if path: # Empty path must return current working directory.
-            try:
-                path = _getfullpathname(path)
-            except WindowsError:
-                pass # Bad path - return unchanged.
-        elif isinstance(path, unicode):
-            path = os.getcwdu()
-        else:
-            path = os.getcwd()
-        return normpath(path)
-
-# realpath is a no-op on systems without islink support
-realpath = abspath
-# Win9x family and earlier have no Unicode filename support.
-supports_unicode_filenames = (hasattr(sys, "getwindowsversion") and
-                              sys.getwindowsversion()[3] >= 2)
-
-def _abspath_split(path):
-    abs = abspath(normpath(path))
-    prefix, rest = splitunc(abs)
-    is_unc = bool(prefix)
-    if not is_unc:
-        prefix, rest = splitdrive(abs)
-    return is_unc, prefix, [x for x in rest.split(sep) if x]
-
-def relpath(path, start=curdir):
-    """Return a relative version of a path"""
-
-    if not path:
-        raise ValueError("no path specified")
-
-    start_is_unc, start_prefix, start_list = _abspath_split(start)
-    path_is_unc, path_prefix, path_list = _abspath_split(path)
-
-    if path_is_unc ^ start_is_unc:
-        raise ValueError("Cannot mix UNC and non-UNC paths (%s and %s)"
-                                                            % (path, start))
-    if path_prefix.lower() != start_prefix.lower():
-        if path_is_unc:
-            raise ValueError("path is on UNC root %s, start on UNC root %s"
-                                                % (path_prefix, start_prefix))
-        else:
-            raise ValueError("path is on drive %s, start on drive %s"
-                                                % (path_prefix, start_prefix))
-    # 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 e1.lower() != e2.lower():
-            break
-        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/AppPkg/Applications/Python/PyMod-2.7.2/Lib/os.py b/AppPkg/Applications/Python/PyMod-2.7.2/Lib/os.py
deleted file mode 100644
index 413e4ae..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Lib/os.py
+++ /dev/null
@@ -1,773 +0,0 @@
-"""OS routines for Mac, NT, Posix, or UEFI depending on what system we're on.
-
-This exports:
-  - all functions from edk2, posix, nt, os2, or ce, e.g. unlink, stat, etc.
-  - os.path is one of the modules uefipath, posixpath, or ntpath
-  - os.name is 'edk2', 'posix', 'nt', 'os2', 'ce' or 'riscos'
-  - os.curdir is a string representing the current directory ('.' or ':')
-  - os.pardir is a string representing the parent directory ('..' or '::')
-  - os.sep is the (or a most common) pathname separator ('/' or ':' or '\\')
-  - os.extsep is the extension separator ('.' or '/')
-  - os.altsep is the alternate pathname separator (None or '/')
-  - os.pathsep is the component separator used in $PATH etc
-  - os.linesep is the line separator in text files ('\r' or '\n' or '\r\n')
-  - os.defpath is the default search path for executables
-  - os.devnull is the file path of the null device ('/dev/null', etc.)
-
-Programs that import and use 'os' stand a better chance of being
-portable between different platforms.  Of course, they must then
-only use functions that are defined by all platforms (e.g., unlink
-and opendir), and leave all pathname manipulation to os.path
-(e.g., split and join).
-"""
-
-#'
-
-import sys, errno
-
-_names = sys.builtin_module_names
-
-# Note:  more names are added to __all__ later.
-__all__ = ["altsep", "curdir", "pardir", "sep", "extsep", "pathsep", "linesep",
-           "defpath", "name", "path", "devnull",
-           "SEEK_SET", "SEEK_CUR", "SEEK_END"]
-
-def _get_exports_list(module):
-    try:
-        return list(module.__all__)
-    except AttributeError:
-        return [n for n in dir(module) if n[0] != '_']
-
-if 'posix' in _names:
-    name = 'posix'
-    linesep = '\n'
-    from posix import *
-    try:
-        from posix import _exit
-    except ImportError:
-        pass
-    import posixpath as path
-
-    import posix
-    __all__.extend(_get_exports_list(posix))
-    del posix
-
-elif 'nt' in _names:
-    name = 'nt'
-    linesep = '\r\n'
-    from nt import *
-    try:
-        from nt import _exit
-    except ImportError:
-        pass
-    import ntpath as path
-
-    import nt
-    __all__.extend(_get_exports_list(nt))
-    del nt
-
-elif 'os2' in _names:
-    name = 'os2'
-    linesep = '\r\n'
-    from os2 import *
-    try:
-        from os2 import _exit
-    except ImportError:
-        pass
-    if sys.version.find('EMX GCC') == -1:
-        import ntpath as path
-    else:
-        import os2emxpath as path
-        from _emx_link import link
-
-    import os2
-    __all__.extend(_get_exports_list(os2))
-    del os2
-
-elif 'ce' in _names:
-    name = 'ce'
-    linesep = '\r\n'
-    from ce import *
-    try:
-        from ce import _exit
-    except ImportError:
-        pass
-    # We can use the standard Windows path.
-    import ntpath as path
-
-    import ce
-    __all__.extend(_get_exports_list(ce))
-    del ce
-
-elif 'riscos' in _names:
-    name = 'riscos'
-    linesep = '\n'
-    from riscos import *
-    try:
-        from riscos import _exit
-    except ImportError:
-        pass
-    import riscospath as path
-
-    import riscos
-    __all__.extend(_get_exports_list(riscos))
-    del riscos
-
-elif 'edk2' in _names:
-    name = 'edk2'
-    linesep = '\n'
-    from edk2 import *
-    try:
-        from edk2 import _exit
-    except ImportError:
-        pass
-    import ntpath as path
-
-    import edk2
-    __all__.extend(_get_exports_list(edk2))
-    del edk2
-
-else:
-    raise ImportError, 'no os specific module found'
-
-sys.modules['os.path'] = path
-from os.path import (curdir, pardir, sep, pathsep, defpath, extsep, altsep,
-    devnull)
-
-del _names
-
-# Python uses fixed values for the SEEK_ constants; they are mapped
-# to native constants if necessary in posixmodule.c
-SEEK_SET = 0
-SEEK_CUR = 1
-SEEK_END = 2
-
-#'
-
-# Super directory utilities.
-# (Inspired by Eric Raymond; the doc strings are mostly his)
-
-def makedirs(name, mode=0777):
-    """makedirs(path [, mode=0777])
-
-    Super-mkdir; create a leaf directory and all intermediate ones.
-    Works like mkdir, except that any intermediate path segment (not
-    just the rightmost) will be created if it does not exist.  This is
-    recursive.
-
-    """
-    head, tail = path.split(name)
-    if not tail:
-        head, tail = path.split(head)
-    if head and tail and not path.exists(head):
-        try:
-            makedirs(head, mode)
-        except OSError, e:
-            # be happy if someone already created the path
-            if e.errno != errno.EEXIST:
-                raise
-        if tail == curdir:           # xxx/newdir/. exists if xxx/newdir exists
-            return
-    mkdir(name, mode)
-
-def removedirs(name):
-    """removedirs(path)
-
-    Super-rmdir; remove a leaf directory and all empty intermediate
-    ones.  Works like rmdir except that, if the leaf directory is
-    successfully removed, directories corresponding to rightmost path
-    segments will be pruned away until either the whole path is
-    consumed or an error occurs.  Errors during this latter phase are
-    ignored -- they generally mean that a directory was not empty.
-
-    """
-    rmdir(name)
-    head, tail = path.split(name)
-    if not tail:
-        head, tail = path.split(head)
-    while head and tail:
-        try:
-            rmdir(head)
-        except error:
-            break
-        head, tail = path.split(head)
-
-def renames(old, new):
-    """renames(old, new)
-
-    Super-rename; create directories as necessary and delete any left
-    empty.  Works like rename, except creation of any intermediate
-    directories needed to make the new pathname good is attempted
-    first.  After the rename, directories corresponding to rightmost
-    path segments of the old name will be pruned way until either the
-    whole path is consumed or a nonempty directory is found.
-
-    Note: this function can fail with the new directory structure made
-    if you lack permissions needed to unlink the leaf directory or
-    file.
-
-    """
-    head, tail = path.split(new)
-    if head and tail and not path.exists(head):
-        makedirs(head)
-    rename(old, new)
-    head, tail = path.split(old)
-    if head and tail:
-        try:
-            removedirs(head)
-        except error:
-            pass
-
-__all__.extend(["makedirs", "removedirs", "renames"])
-
-def walk(top, topdown=True, onerror=None, followlinks=False):
-    """Directory tree generator.
-
-    For each directory in the directory tree rooted at top (including top
-    itself, but excluding '.' and '..'), yields a 3-tuple
-
-        dirpath, dirnames, filenames
-
-    dirpath is a string, the path to the directory.  dirnames is a list of
-    the names of the subdirectories in dirpath (excluding '.' and '..').
-    filenames is a list of the names of the non-directory files in dirpath.
-    Note that the names in the lists are just names, with no path components.
-    To get a full path (which begins with top) to a file or directory in
-    dirpath, do os.path.join(dirpath, name).
-
-    If optional arg 'topdown' is true or not specified, the triple for a
-    directory is generated before the triples for any of its subdirectories
-    (directories are generated top down).  If topdown is false, the triple
-    for a directory is generated after the triples for all of its
-    subdirectories (directories are generated bottom up).
-
-    When topdown is true, the caller can modify the dirnames list in-place
-    (e.g., via del or slice assignment), and walk will only recurse into the
-    subdirectories whose names remain in dirnames; this can be used to prune
-    the search, or to impose a specific order of visiting.  Modifying
-    dirnames when topdown is false is ineffective, since the directories in
-    dirnames have already been generated by the time dirnames itself is
-    generated.
-
-    By default errors from the os.listdir() call are ignored.  If
-    optional arg 'onerror' is specified, it should be a function; it
-    will be called with one argument, an os.error instance.  It can
-    report the error to continue with the walk, or raise the exception
-    to abort the walk.  Note that the filename is available as the
-    filename attribute of the exception object.
-
-    By default, os.walk does not follow symbolic links to subdirectories on
-    systems that support them.  In order to get this functionality, set the
-    optional argument 'followlinks' to true.
-
-    Caution:  if you pass a relative pathname for top, don't change the
-    current working directory between resumptions of walk.  walk never
-    changes the current directory, and assumes that the client doesn't
-    either.
-
-    Example:
-
-    import os
-    from os.path import join, getsize
-    for root, dirs, files in os.walk('python/Lib/email'):
-        print root, "consumes",
-        print sum([getsize(join(root, name)) for name in files]),
-        print "bytes in", len(files), "non-directory files"
-        if 'CVS' in dirs:
-            dirs.remove('CVS')  # don't visit CVS directories
-    """
-
-    islink, join, isdir = path.islink, path.join, path.isdir
-
-    # We may not have read permission for top, in which case we can't
-    # get a list of the files the directory contains.  os.path.walk
-    # always suppressed the exception then, rather than blow up for a
-    # minor reason when (say) a thousand readable directories are still
-    # left to visit.  That logic is copied here.
-    try:
-        # Note that listdir and error are globals in this module due
-        # to earlier import-*.
-        names = listdir(top)
-    except error, err:
-        if onerror is not None:
-            onerror(err)
-        return
-
-    dirs, nondirs = [], []
-    for name in names:
-        if isdir(join(top, name)):
-            dirs.append(name)
-        else:
-            nondirs.append(name)
-
-    if topdown:
-        yield top, dirs, nondirs
-    for name in dirs:
-        new_path = join(top, name)
-        if followlinks or not islink(new_path):
-            for x in walk(new_path, topdown, onerror, followlinks):
-                yield x
-    if not topdown:
-        yield top, dirs, nondirs
-
-__all__.append("walk")
-
-# Make sure os.environ exists, at least
-try:
-    environ
-except NameError:
-    environ = {}
-
-def execl(file, *args):
-    """execl(file, *args)
-
-    Execute the executable file with argument list args, replacing the
-    current process. """
-    execv(file, args)
-
-def execle(file, *args):
-    """execle(file, *args, env)
-
-    Execute the executable file with argument list args and
-    environment env, replacing the current process. """
-    env = args[-1]
-    execve(file, args[:-1], env)
-
-def execlp(file, *args):
-    """execlp(file, *args)
-
-    Execute the executable file (which is searched for along $PATH)
-    with argument list args, replacing the current process. """
-    execvp(file, args)
-
-def execlpe(file, *args):
-    """execlpe(file, *args, env)
-
-    Execute the executable file (which is searched for along $PATH)
-    with argument list args and environment env, replacing the current
-    process. """
-    env = args[-1]
-    execvpe(file, args[:-1], env)
-
-def execvp(file, args):
-    """execvp(file, args)
-
-    Execute the executable file (which is searched for along $PATH)
-    with argument list args, replacing the current process.
-    args may be a list or tuple of strings. """
-    _execvpe(file, args)
-
-def execvpe(file, args, env):
-    """execvpe(file, args, env)
-
-    Execute the executable file (which is searched for along $PATH)
-    with argument list args and environment env , replacing the
-    current process.
-    args may be a list or tuple of strings. """
-    _execvpe(file, args, env)
-
-__all__.extend(["execl","execle","execlp","execlpe","execvp","execvpe"])
-
-def _execvpe(file, args, env=None):
-    if env is not None:
-        func = execve
-        argrest = (args, env)
-    else:
-        func = execv
-        argrest = (args,)
-        env = environ
-
-    head, tail = path.split(file)
-    if head:
-        func(file, *argrest)
-        return
-    if 'PATH' in env:
-        envpath = env['PATH']
-    else:
-        envpath = defpath
-    PATH = envpath.split(pathsep)
-    saved_exc = None
-    saved_tb = None
-    for dir in PATH:
-        fullname = path.join(dir, file)
-        try:
-            func(fullname, *argrest)
-        except error, e:
-            tb = sys.exc_info()[2]
-            if (e.errno != errno.ENOENT and e.errno != errno.ENOTDIR
-                and saved_exc is None):
-                saved_exc = e
-                saved_tb = tb
-    if saved_exc:
-        raise error, saved_exc, saved_tb
-    raise error, e, tb
-
-# Change environ to automatically call putenv() if it exists
-try:
-    # This will fail if there's no putenv
-    putenv
-except NameError:
-    pass
-else:
-    import UserDict
-
-    # Fake unsetenv() for Windows
-    # not sure about os2 here but
-    # I'm guessing they are the same.
-
-    if name in ('os2', 'nt'):
-        def unsetenv(key):
-            putenv(key, "")
-
-    if name == "riscos":
-        # On RISC OS, all env access goes through getenv and putenv
-        from riscosenviron import _Environ
-    elif name in ('os2', 'nt'):  # Where Env Var Names Must Be UPPERCASE
-        # But we store them as upper case
-        class _Environ(UserDict.IterableUserDict):
-            def __init__(self, environ):
-                UserDict.UserDict.__init__(self)
-                data = self.data
-                for k, v in environ.items():
-                    data[k.upper()] = v
-            def __setitem__(self, key, item):
-                putenv(key, item)
-                self.data[key.upper()] = item
-            def __getitem__(self, key):
-                return self.data[key.upper()]
-            try:
-                unsetenv
-            except NameError:
-                def __delitem__(self, key):
-                    del self.data[key.upper()]
-            else:
-                def __delitem__(self, key):
-                    unsetenv(key)
-                    del self.data[key.upper()]
-                def clear(self):
-                    for key in self.data.keys():
-                        unsetenv(key)
-                        del self.data[key]
-                def pop(self, key, *args):
-                    unsetenv(key)
-                    return self.data.pop(key.upper(), *args)
-            def has_key(self, key):
-                return key.upper() in self.data
-            def __contains__(self, key):
-                return key.upper() in self.data
-            def get(self, key, failobj=None):
-                return self.data.get(key.upper(), failobj)
-            def update(self, dict=None, **kwargs):
-                if dict:
-                    try:
-                        keys = dict.keys()
-                    except AttributeError:
-                        # List of (key, value)
-                        for k, v in dict:
-                            self[k] = v
-                    else:
-                        # got keys
-                        # cannot use items(), since mappings
-                        # may not have them.
-                        for k in keys:
-                            self[k] = dict[k]
-                if kwargs:
-                    self.update(kwargs)
-            def copy(self):
-                return dict(self)
-
-    else:  # Where Env Var Names Can Be Mixed Case
-        class _Environ(UserDict.IterableUserDict):
-            def __init__(self, environ):
-                UserDict.UserDict.__init__(self)
-                self.data = environ
-            def __setitem__(self, key, item):
-                putenv(key, item)
-                self.data[key] = item
-            def update(self,  dict=None, **kwargs):
-                if dict:
-                    try:
-                        keys = dict.keys()
-                    except AttributeError:
-                        # List of (key, value)
-                        for k, v in dict:
-                            self[k] = v
-                    else:
-                        # got keys
-                        # cannot use items(), since mappings
-                        # may not have them.
-                        for k in keys:
-                            self[k] = dict[k]
-                if kwargs:
-                    self.update(kwargs)
-            try:
-                unsetenv
-            except NameError:
-                pass
-            else:
-                def __delitem__(self, key):
-                    unsetenv(key)
-                    del self.data[key]
-                def clear(self):
-                    for key in self.data.keys():
-                        unsetenv(key)
-                        del self.data[key]
-                def pop(self, key, *args):
-                    unsetenv(key)
-                    return self.data.pop(key, *args)
-            def copy(self):
-                return dict(self)
-
-
-    environ = _Environ(environ)
-
-def getenv(key, default=None):
-    """Get an environment variable, return None if it doesn't exist.
-    The optional second argument can specify an alternate default."""
-    return environ.get(key, default)
-__all__.append("getenv")
-
-def _exists(name):
-    return name in globals()
-
-# Supply spawn*() (probably only for Unix)
-if _exists("fork") and not _exists("spawnv") and _exists("execv"):
-
-    P_WAIT = 0
-    P_NOWAIT = P_NOWAITO = 1
-
-    # XXX Should we support P_DETACH?  I suppose it could fork()**2
-    # and close the std I/O streams.  Also, P_OVERLAY is the same
-    # as execv*()?
-
-    def _spawnvef(mode, file, args, env, func):
-        # Internal helper; func is the exec*() function to use
-        pid = fork()
-        if not pid:
-            # Child
-            try:
-                if env is None:
-                    func(file, args)
-                else:
-                    func(file, args, env)
-            except:
-                _exit(127)
-        else:
-            # Parent
-            if mode == P_NOWAIT:
-                return pid # Caller is responsible for waiting!
-            while 1:
-                wpid, sts = waitpid(pid, 0)
-                if WIFSTOPPED(sts):
-                    continue
-                elif WIFSIGNALED(sts):
-                    return -WTERMSIG(sts)
-                elif WIFEXITED(sts):
-                    return WEXITSTATUS(sts)
-                else:
-                    raise error, "Not stopped, signaled or exited???"
-
-    def spawnv(mode, file, args):
-        """spawnv(mode, file, args) -> integer
-
-Execute file with arguments from args in a subprocess.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        return _spawnvef(mode, file, args, None, execv)
-
-    def spawnve(mode, file, args, env):
-        """spawnve(mode, file, args, env) -> integer
-
-Execute file with arguments from args in a subprocess with the
-specified environment.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        return _spawnvef(mode, file, args, env, execve)
-
-    # Note: spawnvp[e] is't currently supported on Windows
-
-    def spawnvp(mode, file, args):
-        """spawnvp(mode, file, args) -> integer
-
-Execute file (which is looked for along $PATH) with arguments from
-args in a subprocess.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        return _spawnvef(mode, file, args, None, execvp)
-
-    def spawnvpe(mode, file, args, env):
-        """spawnvpe(mode, file, args, env) -> integer
-
-Execute file (which is looked for along $PATH) with arguments from
-args in a subprocess with the supplied environment.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        return _spawnvef(mode, file, args, env, execvpe)
-
-if _exists("spawnv"):
-    # These aren't supplied by the basic Windows code
-    # but can be easily implemented in Python
-
-    def spawnl(mode, file, *args):
-        """spawnl(mode, file, *args) -> integer
-
-Execute file with arguments from args in a subprocess.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        return spawnv(mode, file, args)
-
-    def spawnle(mode, file, *args):
-        """spawnle(mode, file, *args, env) -> integer
-
-Execute file with arguments from args in a subprocess with the
-supplied environment.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        env = args[-1]
-        return spawnve(mode, file, args[:-1], env)
-
-
-    __all__.extend(["spawnv", "spawnve", "spawnl", "spawnle",])
-
-
-if _exists("spawnvp"):
-    # At the moment, Windows doesn't implement spawnvp[e],
-    # so it won't have spawnlp[e] either.
-    def spawnlp(mode, file, *args):
-        """spawnlp(mode, file, *args) -> integer
-
-Execute file (which is looked for along $PATH) with arguments from
-args in a subprocess with the supplied environment.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        return spawnvp(mode, file, args)
-
-    def spawnlpe(mode, file, *args):
-        """spawnlpe(mode, file, *args, env) -> integer
-
-Execute file (which is looked for along $PATH) with arguments from
-args in a subprocess with the supplied environment.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        env = args[-1]
-        return spawnvpe(mode, file, args[:-1], env)
-
-
-    __all__.extend(["spawnvp", "spawnvpe", "spawnlp", "spawnlpe",])
-
-
-# Supply popen2 etc. (for Unix)
-if _exists("fork"):
-    if not _exists("popen2"):
-        def popen2(cmd, mode="t", bufsize=-1):
-            """Execute the shell command 'cmd' in a sub-process.  On UNIX, 'cmd'
-            may be a sequence, in which case arguments will be passed directly to
-            the program without shell intervention (as with os.spawnv()).  If 'cmd'
-            is a string it will be passed to the shell (as with os.system()). If
-            'bufsize' is specified, it sets the buffer size for the I/O pipes.  The
-            file objects (child_stdin, child_stdout) are returned."""
-            import warnings
-            msg = "os.popen2 is deprecated.  Use the subprocess module."
-            warnings.warn(msg, DeprecationWarning, stacklevel=2)
-
-            import subprocess
-            PIPE = subprocess.PIPE
-            p = subprocess.Popen(cmd, shell=isinstance(cmd, basestring),
-                                 bufsize=bufsize, stdin=PIPE, stdout=PIPE,
-                                 close_fds=True)
-            return p.stdin, p.stdout
-        __all__.append("popen2")
-
-    if not _exists("popen3"):
-        def popen3(cmd, mode="t", bufsize=-1):
-            """Execute the shell command 'cmd' in a sub-process.  On UNIX, 'cmd'
-            may be a sequence, in which case arguments will be passed directly to
-            the program without shell intervention (as with os.spawnv()).  If 'cmd'
-            is a string it will be passed to the shell (as with os.system()). If
-            'bufsize' is specified, it sets the buffer size for the I/O pipes.  The
-            file objects (child_stdin, child_stdout, child_stderr) are returned."""
-            import warnings
-            msg = "os.popen3 is deprecated.  Use the subprocess module."
-            warnings.warn(msg, DeprecationWarning, stacklevel=2)
-
-            import subprocess
-            PIPE = subprocess.PIPE
-            p = subprocess.Popen(cmd, shell=isinstance(cmd, basestring),
-                                 bufsize=bufsize, stdin=PIPE, stdout=PIPE,
-                                 stderr=PIPE, close_fds=True)
-            return p.stdin, p.stdout, p.stderr
-        __all__.append("popen3")
-
-    if not _exists("popen4"):
-        def popen4(cmd, mode="t", bufsize=-1):
-            """Execute the shell command 'cmd' in a sub-process.  On UNIX, 'cmd'
-            may be a sequence, in which case arguments will be passed directly to
-            the program without shell intervention (as with os.spawnv()).  If 'cmd'
-            is a string it will be passed to the shell (as with os.system()). If
-            'bufsize' is specified, it sets the buffer size for the I/O pipes.  The
-            file objects (child_stdin, child_stdout_stderr) are returned."""
-            import warnings
-            msg = "os.popen4 is deprecated.  Use the subprocess module."
-            warnings.warn(msg, DeprecationWarning, stacklevel=2)
-
-            import subprocess
-            PIPE = subprocess.PIPE
-            p = subprocess.Popen(cmd, shell=isinstance(cmd, basestring),
-                                 bufsize=bufsize, stdin=PIPE, stdout=PIPE,
-                                 stderr=subprocess.STDOUT, close_fds=True)
-            return p.stdin, p.stdout
-        __all__.append("popen4")
-
-import copy_reg as _copy_reg
-
-def _make_stat_result(tup, dict):
-    return stat_result(tup, dict)
-
-def _pickle_stat_result(sr):
-    (type, args) = sr.__reduce__()
-    return (_make_stat_result, args)
-
-try:
-    _copy_reg.pickle(stat_result, _pickle_stat_result, _make_stat_result)
-except NameError: # stat_result may not exist
-    pass
-
-def _make_statvfs_result(tup, dict):
-    return statvfs_result(tup, dict)
-
-def _pickle_statvfs_result(sr):
-    (type, args) = sr.__reduce__()
-    return (_make_statvfs_result, args)
-
-try:
-    _copy_reg.pickle(statvfs_result, _pickle_statvfs_result,
-                     _make_statvfs_result)
-except NameError: # statvfs_result may not exist
-    pass
-
-if not _exists("urandom"):
-    def urandom(n):
-        """urandom(n) -> str
-
-        Return a string of n random bytes suitable for cryptographic use.
-
-        """
-        try:
-            _urandomfd = open("/dev/urandom", O_RDONLY)
-        except (OSError, IOError):
-            raise NotImplementedError("/dev/urandom (or equivalent) not found")
-        try:
-            bs = b""
-            while n > len(bs):
-                bs += read(_urandomfd, n - len(bs))
-        finally:
-            close(_urandomfd)
-        return bs
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Lib/pydoc.py b/AppPkg/Applications/Python/PyMod-2.7.2/Lib/pydoc.py
deleted file mode 100644
index a104b92..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Lib/pydoc.py
+++ /dev/null
@@ -1,2341 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: latin-1 -*-
-"""Generate Python documentation in HTML or text for interactive use.
-
-In the Python interpreter, do "from pydoc import help" to provide online
-help.  Calling help(thing) on a Python object documents the object.
-
-Or, at the shell command line outside of Python:
-
-Run "pydoc <name>" to show documentation on something.  <name> may be
-the name of a function, module, package, or a dotted reference to a
-class or function within a module or module in a package.  If the
-argument contains a path segment delimiter (e.g. slash on Unix,
-backslash on Windows) it is treated as the path to a Python source file.
-
-Run "pydoc -k <keyword>" to search for a keyword in the synopsis lines
-of all available modules.
-
-Run "pydoc -p <port>" to start an HTTP server on a given port on the
-local machine to generate documentation web pages.
-
-For platforms without a command line, "pydoc -g" starts the HTTP server
-and also pops up a little window for controlling it.
-
-Run "pydoc -w <name>" to write out the HTML documentation for a module
-to a file named "<name>.html".
-
-Module docs for core modules are assumed to be in
-
-    http://docs.python.org/library/
-
-This can be overridden by setting the PYTHONDOCS environment variable
-to a different URL or to a local directory containing the Library
-Reference Manual pages.
-"""
-
-__author__ = "Ka-Ping Yee <ping@lfw.org>"
-__date__ = "26 February 2001"
-
-__version__ = "$Revision$"
-__credits__ = """Guido van Rossum, for an excellent programming language.
-Tommy Burnette, the original creator of manpy.
-Paul Prescod, for all his work on onlinehelp.
-Richard Chamberlain, for the first implementation of textdoc.
-"""
-
-# Known bugs that can't be fixed here:
-#   - imp.load_module() cannot be prevented from clobbering existing
-#     loaded modules, so calling synopsis() on a binary module file
-#     changes the contents of any existing module with the same name.
-#   - If the __file__ attribute on a module is a relative path and
-#     the current directory is changed with os.chdir(), an incorrect
-#     path will be displayed.
-
-import sys, imp, os, re, types, inspect, __builtin__, pkgutil
-from repr import Repr
-from string import expandtabs, find, join, lower, split, strip, rfind, rstrip
-from traceback import extract_tb
-try:
-    from collections import deque
-except ImportError:
-    # Python 2.3 compatibility
-    class deque(list):
-        def popleft(self):
-            return self.pop(0)
-
-# --------------------------------------------------------- common routines
-
-def pathdirs():
-    """Convert sys.path into a list of absolute, existing, unique paths."""
-    dirs = []
-    normdirs = []
-    for dir in sys.path:
-        dir = os.path.abspath(dir or '.')
-        normdir = os.path.normcase(dir)
-        if normdir not in normdirs and os.path.isdir(dir):
-            dirs.append(dir)
-            normdirs.append(normdir)
-    return dirs
-
-def getdoc(object):
-    """Get the doc string or comments for an object."""
-    result = inspect.getdoc(object) or inspect.getcomments(object)
-    return result and re.sub('^ *\n', '', rstrip(result)) or ''
-
-def splitdoc(doc):
-    """Split a doc string into a synopsis line (if any) and the rest."""
-    lines = split(strip(doc), '\n')
-    if len(lines) == 1:
-        return lines[0], ''
-    elif len(lines) >= 2 and not rstrip(lines[1]):
-        return lines[0], join(lines[2:], '\n')
-    return '', join(lines, '\n')
-
-def classname(object, modname):
-    """Get a class name and qualify it with a module name if necessary."""
-    name = object.__name__
-    if object.__module__ != modname:
-        name = object.__module__ + '.' + name
-    return name
-
-def isdata(object):
-    """Check if an object is of a type that probably means it's data."""
-    return not (inspect.ismodule(object) or inspect.isclass(object) or
-                inspect.isroutine(object) or inspect.isframe(object) or
-                inspect.istraceback(object) or inspect.iscode(object))
-
-def replace(text, *pairs):
-    """Do a series of global replacements on a string."""
-    while pairs:
-        text = join(split(text, pairs[0]), pairs[1])
-        pairs = pairs[2:]
-    return text
-
-def cram(text, maxlen):
-    """Omit part of a string if needed to make it fit in a maximum length."""
-    if len(text) > maxlen:
-        pre = max(0, (maxlen-3)//2)
-        post = max(0, maxlen-3-pre)
-        return text[:pre] + '...' + text[len(text)-post:]
-    return text
-
-_re_stripid = re.compile(r' at 0x[0-9a-f]{6,16}(>+)$', re.IGNORECASE)
-def stripid(text):
-    """Remove the hexadecimal id from a Python object representation."""
-    # The behaviour of %p is implementation-dependent in terms of case.
-    return _re_stripid.sub(r'\1', text)
-
-def _is_some_method(obj):
-    return inspect.ismethod(obj) or inspect.ismethoddescriptor(obj)
-
-def allmethods(cl):
-    methods = {}
-    for key, value in inspect.getmembers(cl, _is_some_method):
-        methods[key] = 1
-    for base in cl.__bases__:
-        methods.update(allmethods(base)) # all your base are belong to us
-    for key in methods.keys():
-        methods[key] = getattr(cl, key)
-    return methods
-
-def _split_list(s, predicate):
-    """Split sequence s via predicate, and return pair ([true], [false]).
-
-    The return value is a 2-tuple of lists,
-        ([x for x in s if predicate(x)],
-         [x for x in s if not predicate(x)])
-    """
-
-    yes = []
-    no = []
-    for x in s:
-        if predicate(x):
-            yes.append(x)
-        else:
-            no.append(x)
-    return yes, no
-
-def visiblename(name, all=None, obj=None):
-    """Decide whether to show documentation on a variable."""
-    # Certain special names are redundant.
-    _hidden_names = ('__builtins__', '__doc__', '__file__', '__path__',
-                     '__module__', '__name__', '__slots__', '__package__')
-    if name in _hidden_names: return 0
-    # Private names are hidden, but special names are displayed.
-    if name.startswith('__') and name.endswith('__'): return 1
-    # Namedtuples have public fields and methods with a single leading underscore
-    if name.startswith('_') and hasattr(obj, '_fields'):
-        return 1
-    if all is not None:
-        # only document that which the programmer exported in __all__
-        return name in all
-    else:
-        return not name.startswith('_')
-
-def classify_class_attrs(object):
-    """Wrap inspect.classify_class_attrs, with fixup for data descriptors."""
-    def fixup(data):
-        name, kind, cls, value = data
-        if inspect.isdatadescriptor(value):
-            kind = 'data descriptor'
-        return name, kind, cls, value
-    return map(fixup, inspect.classify_class_attrs(object))
-
-# ----------------------------------------------------- module manipulation
-
-def ispackage(path):
-    """Guess whether a path refers to a package directory."""
-    if os.path.isdir(path):
-        for ext in ('.py', '.pyc', '.pyo'):
-            if os.path.isfile(os.path.join(path, '__init__' + ext)):
-                return True
-    return False
-
-def source_synopsis(file):
-    line = file.readline()
-    while line[:1] == '#' or not strip(line):
-        line = file.readline()
-        if not line: break
-    line = strip(line)
-    if line[:4] == 'r"""': line = line[1:]
-    if line[:3] == '"""':
-        line = line[3:]
-        if line[-1:] == '\\': line = line[:-1]
-        while not strip(line):
-            line = file.readline()
-            if not line: break
-        result = strip(split(line, '"""')[0])
-    else: result = None
-    return result
-
-def synopsis(filename, cache={}):
-    """Get the one-line summary out of a module file."""
-    mtime = os.stat(filename).st_mtime
-    lastupdate, result = cache.get(filename, (0, None))
-    if lastupdate < mtime:
-        info = inspect.getmoduleinfo(filename)
-        try:
-            file = open(filename)
-        except IOError:
-            # module can't be opened, so skip it
-            return None
-        if info and 'b' in info[2]: # binary modules have to be imported
-            try: module = imp.load_module('__temp__', file, filename, info[1:])
-            except: return None
-            result = (module.__doc__ or '').splitlines()[0]
-            del sys.modules['__temp__']
-        else: # text modules can be directly examined
-            result = source_synopsis(file)
-            file.close()
-        cache[filename] = (mtime, result)
-    return result
-
-class ErrorDuringImport(Exception):
-    """Errors that occurred while trying to import something to document it."""
-    def __init__(self, filename, exc_info):
-        exc, value, tb = exc_info
-        self.filename = filename
-        self.exc = exc
-        self.value = value
-        self.tb = tb
-
-    def __str__(self):
-        exc = self.exc
-        if type(exc) is types.ClassType:
-            exc = exc.__name__
-        return 'problem in %s - %s: %s' % (self.filename, exc, self.value)
-
-def importfile(path):
-    """Import a Python source file or compiled file given its path."""
-    magic = imp.get_magic()
-    file = open(path, 'r')
-    if file.read(len(magic)) == magic:
-        kind = imp.PY_COMPILED
-    else:
-        kind = imp.PY_SOURCE
-    file.close()
-    filename = os.path.basename(path)
-    name, ext = os.path.splitext(filename)
-    file = open(path, 'r')
-    try:
-        module = imp.load_module(name, file, path, (ext, 'r', kind))
-    except:
-        raise ErrorDuringImport(path, sys.exc_info())
-    file.close()
-    return module
-
-def safeimport(path, forceload=0, cache={}):
-    """Import a module; handle errors; return None if the module isn't found.
-
-    If the module *is* found but an exception occurs, it's wrapped in an
-    ErrorDuringImport exception and reraised.  Unlike __import__, if a
-    package path is specified, the module at the end of the path is returned,
-    not the package at the beginning.  If the optional 'forceload' argument
-    is 1, we reload the module from disk (unless it's a dynamic extension)."""
-    try:
-        # If forceload is 1 and the module has been previously loaded from
-        # disk, we always have to reload the module.  Checking the file's
-        # mtime isn't good enough (e.g. the module could contain a class
-        # that inherits from another module that has changed).
-        if forceload and path in sys.modules:
-            if path not in sys.builtin_module_names:
-                # Avoid simply calling reload() because it leaves names in
-                # the currently loaded module lying around if they're not
-                # defined in the new source file.  Instead, remove the
-                # module from sys.modules and re-import.  Also remove any
-                # submodules because they won't appear in the newly loaded
-                # module's namespace if they're already in sys.modules.
-                subs = [m for m in sys.modules if m.startswith(path + '.')]
-                for key in [path] + subs:
-                    # Prevent garbage collection.
-                    cache[key] = sys.modules[key]
-                    del sys.modules[key]
-        module = __import__(path)
-    except:
-        # Did the error occur before or after the module was found?
-        (exc, value, tb) = info = sys.exc_info()
-        if path in sys.modules:
-            # An error occurred while executing the imported module.
-            raise ErrorDuringImport(sys.modules[path].__file__, info)
-        elif exc is SyntaxError:
-            # A SyntaxError occurred before we could execute the module.
-            raise ErrorDuringImport(value.filename, info)
-        elif exc is ImportError and extract_tb(tb)[-1][2]=='safeimport':
-            # The import error occurred directly in this function,
-            # which means there is no such module in the path.
-            return None
-        else:
-            # Some other error occurred during the importing process.
-            raise ErrorDuringImport(path, sys.exc_info())
-    for part in split(path, '.')[1:]:
-        try: module = getattr(module, part)
-        except AttributeError: return None
-    return module
-
-# ---------------------------------------------------- formatter base class
-
-class Doc:
-    def document(self, object, name=None, *args):
-        """Generate documentation for an object."""
-        args = (object, name) + args
-        # 'try' clause is to attempt to handle the possibility that inspect
-        # identifies something in a way that pydoc itself has issues handling;
-        # think 'super' and how it is a descriptor (which raises the exception
-        # by lacking a __name__ attribute) and an instance.
-        if inspect.isgetsetdescriptor(object): return self.docdata(*args)
-        if inspect.ismemberdescriptor(object): return self.docdata(*args)
-        try:
-            if inspect.ismodule(object): return self.docmodule(*args)
-            if inspect.isclass(object): return self.docclass(*args)
-            if inspect.isroutine(object): return self.docroutine(*args)
-        except AttributeError:
-            pass
-        if isinstance(object, property): return self.docproperty(*args)
-        return self.docother(*args)
-
-    def fail(self, object, name=None, *args):
-        """Raise an exception for unimplemented types."""
-        message = "don't know how to document object%s of type %s" % (
-            name and ' ' + repr(name), type(object).__name__)
-        raise TypeError, message
-
-    docmodule = docclass = docroutine = docother = docproperty = docdata = fail
-
-    def getdocloc(self, object):
-        """Return the location of module docs or None"""
-
-        try:
-            file = inspect.getabsfile(object)
-        except TypeError:
-            file = '(built-in)'
-
-        docloc = os.environ.get("PYTHONDOCS",
-                                "http://docs.python.org/library")
-        basedir = os.path.join(sys.exec_prefix, "lib",
-                               "python"+sys.version[0:3])
-        if (isinstance(object, type(os)) and
-            (object.__name__ in ('errno', 'exceptions', 'gc', 'imp',
-                                 'marshal', 'posix', 'signal', 'sys',
-                                 'thread', 'zipimport') or
-             (file.startswith(basedir) and
-              not file.startswith(os.path.join(basedir, 'site-packages')))) and
-            object.__name__ not in ('xml.etree', 'test.pydoc_mod')):
-            if docloc.startswith("http://"):
-                docloc = "%s/%s" % (docloc.rstrip("/"), object.__name__)
-            else:
-                docloc = os.path.join(docloc, object.__name__ + ".html")
-        else:
-            docloc = None
-        return docloc
-
-# -------------------------------------------- HTML documentation generator
-
-class HTMLRepr(Repr):
-    """Class for safely making an HTML representation of a Python object."""
-    def __init__(self):
-        Repr.__init__(self)
-        self.maxlist = self.maxtuple = 20
-        self.maxdict = 10
-        self.maxstring = self.maxother = 100
-
-    def escape(self, text):
-        return replace(text, '&', '&amp;', '<', '&lt;', '>', '&gt;')
-
-    def repr(self, object):
-        return Repr.repr(self, object)
-
-    def repr1(self, x, level):
-        if hasattr(type(x), '__name__'):
-            methodname = 'repr_' + join(split(type(x).__name__), '_')
-            if hasattr(self, methodname):
-                return getattr(self, methodname)(x, level)
-        return self.escape(cram(stripid(repr(x)), self.maxother))
-
-    def repr_string(self, x, level):
-        test = cram(x, self.maxstring)
-        testrepr = repr(test)
-        if '\\' in test and '\\' not in replace(testrepr, r'\\', ''):
-            # Backslashes are only literal in the string and are never
-            # needed to make any special characters, so show a raw string.
-            return 'r' + testrepr[0] + self.escape(test) + testrepr[0]
-        return re.sub(r'((\\[\\abfnrtv\'"]|\\[0-9]..|\\x..|\\u....)+)',
-                      r'<font color="#c040c0">\1</font>',
-                      self.escape(testrepr))
-
-    repr_str = repr_string
-
-    def repr_instance(self, x, level):
-        try:
-            return self.escape(cram(stripid(repr(x)), self.maxstring))
-        except:
-            return self.escape('<%s instance>' % x.__class__.__name__)
-
-    repr_unicode = repr_string
-
-class HTMLDoc(Doc):
-    """Formatter class for HTML documentation."""
-
-    # ------------------------------------------- HTML formatting utilities
-
-    _repr_instance = HTMLRepr()
-    repr = _repr_instance.repr
-    escape = _repr_instance.escape
-
-    def page(self, title, contents):
-        """Format an HTML page."""
-        return '''
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head><title>Python: %s</title>
-</head><body bgcolor="#f0f0f8">
-%s
-</body></html>''' % (title, contents)
-
-    def heading(self, title, fgcol, bgcol, extras=''):
-        """Format a page heading."""
-        return '''
-<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="heading">
-<tr bgcolor="%s">
-<td valign=bottom>&nbsp;<br>
-<font color="%s" face="helvetica, arial">&nbsp;<br>%s</font></td
-><td align=right valign=bottom
-><font color="%s" face="helvetica, arial">%s</font></td></tr></table>
-    ''' % (bgcol, fgcol, title, fgcol, extras or '&nbsp;')
-
-    def section(self, title, fgcol, bgcol, contents, width=6,
-                prelude='', marginalia=None, gap='&nbsp;'):
-        """Format a section with a heading."""
-        if marginalia is None:
-            marginalia = '<tt>' + '&nbsp;' * width + '</tt>'
-        result = '''<p>
-<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="%s">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="%s" face="helvetica, arial">%s</font></td></tr>
-    ''' % (bgcol, fgcol, title)
-        if prelude:
-            result = result + '''
-<tr bgcolor="%s"><td rowspan=2>%s</td>
-<td colspan=2>%s</td></tr>
-<tr><td>%s</td>''' % (bgcol, marginalia, prelude, gap)
-        else:
-            result = result + '''
-<tr><td bgcolor="%s">%s</td><td>%s</td>''' % (bgcol, marginalia, gap)
-
-        return result + '\n<td width="100%%">%s</td></tr></table>' % contents
-
-    def bigsection(self, title, *args):
-        """Format a section with a big heading."""
-        title = '<big><strong>%s</strong></big>' % title
-        return self.section(title, *args)
-
-    def preformat(self, text):
-        """Format literal preformatted text."""
-        text = self.escape(expandtabs(text))
-        return replace(text, '\n\n', '\n \n', '\n\n', '\n \n',
-                             ' ', '&nbsp;', '\n', '<br>\n')
-
-    def multicolumn(self, list, format, cols=4):
-        """Format a list of items into a multi-column list."""
-        result = ''
-        rows = (len(list)+cols-1)//cols
-        for col in range(cols):
-            result = result + '<td width="%d%%" valign=top>' % (100//cols)
-            for i in range(rows*col, rows*col+rows):
-                if i < len(list):
-                    result = result + format(list[i]) + '<br>\n'
-            result = result + '</td>'
-        return '<table width="100%%" summary="list"><tr>%s</tr></table>' % result
-
-    def grey(self, text): return '<font color="#909090">%s</font>' % text
-
-    def namelink(self, name, *dicts):
-        """Make a link for an identifier, given name-to-URL mappings."""
-        for dict in dicts:
-            if name in dict:
-                return '<a href="%s">%s</a>' % (dict[name], name)
-        return name
-
-    def classlink(self, object, modname):
-        """Make a link for a class."""
-        name, module = object.__name__, sys.modules.get(object.__module__)
-        if hasattr(module, name) and getattr(module, name) is object:
-            return '<a href="%s.html#%s">%s</a>' % (
-                module.__name__, name, classname(object, modname))
-        return classname(object, modname)
-
-    def modulelink(self, object):
-        """Make a link for a module."""
-        return '<a href="%s.html">%s</a>' % (object.__name__, object.__name__)
-
-    def modpkglink(self, data):
-        """Make a link for a module or package to display in an index."""
-        name, path, ispackage, shadowed = data
-        if shadowed:
-            return self.grey(name)
-        if path:
-            url = '%s.%s.html' % (path, name)
-        else:
-            url = '%s.html' % name
-        if ispackage:
-            text = '<strong>%s</strong>&nbsp;(package)' % name
-        else:
-            text = name
-        return '<a href="%s">%s</a>' % (url, text)
-
-    def markup(self, text, escape=None, funcs={}, classes={}, methods={}):
-        """Mark up some plain text, given a context of symbols to look for.
-        Each context dictionary maps object names to anchor names."""
-        escape = escape or self.escape
-        results = []
-        here = 0
-        pattern = re.compile(r'\b((http|ftp)://\S+[\w/]|'
-                                r'RFC[- ]?(\d+)|'
-                                r'PEP[- ]?(\d+)|'
-                                r'(self\.)?(\w+))')
-        while True:
-            match = pattern.search(text, here)
-            if not match: break
-            start, end = match.span()
-            results.append(escape(text[here:start]))
-
-            all, scheme, rfc, pep, selfdot, name = match.groups()
-            if scheme:
-                url = escape(all).replace('"', '&quot;')
-                results.append('<a href="%s">%s</a>' % (url, url))
-            elif rfc:
-                url = 'http://www.rfc-editor.org/rfc/rfc%d.txt' % int(rfc)
-                results.append('<a href="%s">%s</a>' % (url, escape(all)))
-            elif pep:
-                url = 'http://www.python.org/dev/peps/pep-%04d/' % int(pep)
-                results.append('<a href="%s">%s</a>' % (url, escape(all)))
-            elif text[end:end+1] == '(':
-                results.append(self.namelink(name, methods, funcs, classes))
-            elif selfdot:
-                results.append('self.<strong>%s</strong>' % name)
-            else:
-                results.append(self.namelink(name, classes))
-            here = end
-        results.append(escape(text[here:]))
-        return join(results, '')
-
-    # ---------------------------------------------- type-specific routines
-
-    def formattree(self, tree, modname, parent=None):
-        """Produce HTML for a class tree as given by inspect.getclasstree()."""
-        result = ''
-        for entry in tree:
-            if type(entry) is type(()):
-                c, bases = entry
-                result = result + '<dt><font face="helvetica, arial">'
-                result = result + self.classlink(c, modname)
-                if bases and bases != (parent,):
-                    parents = []
-                    for base in bases:
-                        parents.append(self.classlink(base, modname))
-                    result = result + '(' + join(parents, ', ') + ')'
-                result = result + '\n</font></dt>'
-            elif type(entry) is type([]):
-                result = result + '<dd>\n%s</dd>\n' % self.formattree(
-                    entry, modname, c)
-        return '<dl>\n%s</dl>\n' % result
-
-    def docmodule(self, object, name=None, mod=None, *ignored):
-        """Produce HTML documentation for a module object."""
-        name = object.__name__ # ignore the passed-in name
-        try:
-            all = object.__all__
-        except AttributeError:
-            all = None
-        parts = split(name, '.')
-        links = []
-        for i in range(len(parts)-1):
-            links.append(
-                '<a href="%s.html"><font color="#ffffff">%s</font></a>' %
-                (join(parts[:i+1], '.'), parts[i]))
-        linkedname = join(links + parts[-1:], '.')
-        head = '<big><big><strong>%s</strong></big></big>' % linkedname
-        try:
-            path = inspect.getabsfile(object)
-            url = path
-            if sys.platform == 'win32':
-                import nturl2path
-                url = nturl2path.pathname2url(path)
-            filelink = '<a href="file:%s">%s</a>' % (url, path)
-        except TypeError:
-            filelink = '(built-in)'
-        info = []
-        if hasattr(object, '__version__'):
-            version = str(object.__version__)
-            if version[:11] == '$' + 'Revision: ' and version[-1:] == '$':
-                version = strip(version[11:-1])
-            info.append('version %s' % self.escape(version))
-        if hasattr(object, '__date__'):
-            info.append(self.escape(str(object.__date__)))
-        if info:
-            head = head + ' (%s)' % join(info, ', ')
-        docloc = self.getdocloc(object)
-        if docloc is not None:
-            docloc = '<br><a href="%(docloc)s">Module Docs</a>' % locals()
-        else:
-            docloc = ''
-        result = self.heading(
-            head, '#ffffff', '#7799ee',
-            '<a href=".">index</a><br>' + filelink + docloc)
-
-        modules = inspect.getmembers(object, inspect.ismodule)
-
-        classes, cdict = [], {}
-        for key, value in inspect.getmembers(object, inspect.isclass):
-            # if __all__ exists, believe it.  Otherwise use old heuristic.
-            if (all is not None or
-                (inspect.getmodule(value) or object) is object):
-                if visiblename(key, all, object):
-                    classes.append((key, value))
-                    cdict[key] = cdict[value] = '#' + key
-        for key, value in classes:
-            for base in value.__bases__:
-                key, modname = base.__name__, base.__module__
-                module = sys.modules.get(modname)
-                if modname != name and module and hasattr(module, key):
-                    if getattr(module, key) is base:
-                        if not key in cdict:
-                            cdict[key] = cdict[base] = modname + '.html#' + key
-        funcs, fdict = [], {}
-        for key, value in inspect.getmembers(object, inspect.isroutine):
-            # if __all__ exists, believe it.  Otherwise use old heuristic.
-            if (all is not None or
-                inspect.isbuiltin(value) or inspect.getmodule(value) is object):
-                if visiblename(key, all, object):
-                    funcs.append((key, value))
-                    fdict[key] = '#-' + key
-                    if inspect.isfunction(value): fdict[value] = fdict[key]
-        data = []
-        for key, value in inspect.getmembers(object, isdata):
-            if visiblename(key, all, object):
-                data.append((key, value))
-
-        doc = self.markup(getdoc(object), self.preformat, fdict, cdict)
-        doc = doc and '<tt>%s</tt>' % doc
-        result = result + '<p>%s</p>\n' % doc
-
-        if hasattr(object, '__path__'):
-            modpkgs = []
-            for importer, modname, ispkg in pkgutil.iter_modules(object.__path__):
-                modpkgs.append((modname, name, ispkg, 0))
-            modpkgs.sort()
-            contents = self.multicolumn(modpkgs, self.modpkglink)
-            result = result + self.bigsection(
-                'Package Contents', '#ffffff', '#aa55cc', contents)
-        elif modules:
-            contents = self.multicolumn(
-                modules, lambda key_value, s=self: s.modulelink(key_value[1]))
-            result = result + self.bigsection(
-                'Modules', '#ffffff', '#aa55cc', contents)
-
-        if classes:
-            classlist = map(lambda key_value: key_value[1], classes)
-            contents = [
-                self.formattree(inspect.getclasstree(classlist, 1), name)]
-            for key, value in classes:
-                contents.append(self.document(value, key, name, fdict, cdict))
-            result = result + self.bigsection(
-                'Classes', '#ffffff', '#ee77aa', join(contents))
-        if funcs:
-            contents = []
-            for key, value in funcs:
-                contents.append(self.document(value, key, name, fdict, cdict))
-            result = result + self.bigsection(
-                'Functions', '#ffffff', '#eeaa77', join(contents))
-        if data:
-            contents = []
-            for key, value in data:
-                contents.append(self.document(value, key))
-            result = result + self.bigsection(
-                'Data', '#ffffff', '#55aa55', join(contents, '<br>\n'))
-        if hasattr(object, '__author__'):
-            contents = self.markup(str(object.__author__), self.preformat)
-            result = result + self.bigsection(
-                'Author', '#ffffff', '#7799ee', contents)
-        if hasattr(object, '__credits__'):
-            contents = self.markup(str(object.__credits__), self.preformat)
-            result = result + self.bigsection(
-                'Credits', '#ffffff', '#7799ee', contents)
-
-        return result
-
-    def docclass(self, object, name=None, mod=None, funcs={}, classes={},
-                 *ignored):
-        """Produce HTML documentation for a class object."""
-        realname = object.__name__
-        name = name or realname
-        bases = object.__bases__
-
-        contents = []
-        push = contents.append
-
-        # Cute little class to pump out a horizontal rule between sections.
-        class HorizontalRule:
-            def __init__(self):
-                self.needone = 0
-            def maybe(self):
-                if self.needone:
-                    push('<hr>\n')
-                self.needone = 1
-        hr = HorizontalRule()
-
-        # List the mro, if non-trivial.
-        mro = deque(inspect.getmro(object))
-        if len(mro) > 2:
-            hr.maybe()
-            push('<dl><dt>Method resolution order:</dt>\n')
-            for base in mro:
-                push('<dd>%s</dd>\n' % self.classlink(base,
-                                                      object.__module__))
-            push('</dl>\n')
-
-        def spill(msg, attrs, predicate):
-            ok, attrs = _split_list(attrs, predicate)
-            if ok:
-                hr.maybe()
-                push(msg)
-                for name, kind, homecls, value in ok:
-                    push(self.document(getattr(object, name), name, mod,
-                                       funcs, classes, mdict, object))
-                    push('\n')
-            return attrs
-
-        def spilldescriptors(msg, attrs, predicate):
-            ok, attrs = _split_list(attrs, predicate)
-            if ok:
-                hr.maybe()
-                push(msg)
-                for name, kind, homecls, value in ok:
-                    push(self._docdescriptor(name, value, mod))
-            return attrs
-
-        def spilldata(msg, attrs, predicate):
-            ok, attrs = _split_list(attrs, predicate)
-            if ok:
-                hr.maybe()
-                push(msg)
-                for name, kind, homecls, value in ok:
-                    base = self.docother(getattr(object, name), name, mod)
-                    if (hasattr(value, '__call__') or
-                            inspect.isdatadescriptor(value)):
-                        doc = getattr(value, "__doc__", None)
-                    else:
-                        doc = None
-                    if doc is None:
-                        push('<dl><dt>%s</dl>\n' % base)
-                    else:
-                        doc = self.markup(getdoc(value), self.preformat,
-                                          funcs, classes, mdict)
-                        doc = '<dd><tt>%s</tt>' % doc
-                        push('<dl><dt>%s%s</dl>\n' % (base, doc))
-                    push('\n')
-            return attrs
-
-        attrs = filter(lambda data: visiblename(data[0], obj=object),
-                       classify_class_attrs(object))
-        mdict = {}
-        for key, kind, homecls, value in attrs:
-            mdict[key] = anchor = '#' + name + '-' + key
-            value = getattr(object, key)
-            try:
-                # The value may not be hashable (e.g., a data attr with
-                # a dict or list value).
-                mdict[value] = anchor
-            except TypeError:
-                pass
-
-        while attrs:
-            if mro:
-                thisclass = mro.popleft()
-            else:
-                thisclass = attrs[0][2]
-            attrs, inherited = _split_list(attrs, lambda t: t[2] is thisclass)
-
-            if thisclass is __builtin__.object:
-                attrs = inherited
-                continue
-            elif thisclass is object:
-                tag = 'defined here'
-            else:
-                tag = 'inherited from %s' % self.classlink(thisclass,
-                                                           object.__module__)
-            tag += ':<br>\n'
-
-            # Sort attrs by name.
-            try:
-                attrs.sort(key=lambda t: t[0])
-            except TypeError:
-                attrs.sort(lambda t1, t2: cmp(t1[0], t2[0]))    # 2.3 compat
-
-            # Pump out the attrs, segregated by kind.
-            attrs = spill('Methods %s' % tag, attrs,
-                          lambda t: t[1] == 'method')
-            attrs = spill('Class methods %s' % tag, attrs,
-                          lambda t: t[1] == 'class method')
-            attrs = spill('Static methods %s' % tag, attrs,
-                          lambda t: t[1] == 'static method')
-            attrs = spilldescriptors('Data descriptors %s' % tag, attrs,
-                                     lambda t: t[1] == 'data descriptor')
-            attrs = spilldata('Data and other attributes %s' % tag, attrs,
-                              lambda t: t[1] == 'data')
-            assert attrs == []
-            attrs = inherited
-
-        contents = ''.join(contents)
-
-        if name == realname:
-            title = '<a name="%s">class <strong>%s</strong></a>' % (
-                name, realname)
-        else:
-            title = '<strong>%s</strong> = <a name="%s">class %s</a>' % (
-                name, name, realname)
-        if bases:
-            parents = []
-            for base in bases:
-                parents.append(self.classlink(base, object.__module__))
-            title = title + '(%s)' % join(parents, ', ')
-        doc = self.markup(getdoc(object), self.preformat, funcs, classes, mdict)
-        doc = doc and '<tt>%s<br>&nbsp;</tt>' % doc
-
-        return self.section(title, '#000000', '#ffc8d8', contents, 3, doc)
-
-    def formatvalue(self, object):
-        """Format an argument default value as text."""
-        return self.grey('=' + self.repr(object))
-
-    def docroutine(self, object, name=None, mod=None,
-                   funcs={}, classes={}, methods={}, cl=None):
-        """Produce HTML documentation for a function or method object."""
-        realname = object.__name__
-        name = name or realname
-        anchor = (cl and cl.__name__ or '') + '-' + name
-        note = ''
-        skipdocs = 0
-        if inspect.ismethod(object):
-            imclass = object.im_class
-            if cl:
-                if imclass is not cl:
-                    note = ' from ' + self.classlink(imclass, mod)
-            else:
-                if object.im_self is not None:
-                    note = ' method of %s instance' % self.classlink(
-                        object.im_self.__class__, mod)
-                else:
-                    note = ' unbound %s method' % self.classlink(imclass,mod)
-            object = object.im_func
-
-        if name == realname:
-            title = '<a name="%s"><strong>%s</strong></a>' % (anchor, realname)
-        else:
-            if (cl and realname in cl.__dict__ and
-                cl.__dict__[realname] is object):
-                reallink = '<a href="#%s">%s</a>' % (
-                    cl.__name__ + '-' + realname, realname)
-                skipdocs = 1
-            else:
-                reallink = realname
-            title = '<a name="%s"><strong>%s</strong></a> = %s' % (
-                anchor, name, reallink)
-        if inspect.isfunction(object):
-            args, varargs, varkw, defaults = inspect.getargspec(object)
-            argspec = inspect.formatargspec(
-                args, varargs, varkw, defaults, formatvalue=self.formatvalue)
-            if realname == '<lambda>':
-                title = '<strong>%s</strong> <em>lambda</em> ' % name
-                argspec = argspec[1:-1] # remove parentheses
-        else:
-            argspec = '(...)'
-
-        decl = title + argspec + (note and self.grey(
-               '<font face="helvetica, arial">%s</font>' % note))
-
-        if skipdocs:
-            return '<dl><dt>%s</dt></dl>\n' % decl
-        else:
-            doc = self.markup(
-                getdoc(object), self.preformat, funcs, classes, methods)
-            doc = doc and '<dd><tt>%s</tt></dd>' % doc
-            return '<dl><dt>%s</dt>%s</dl>\n' % (decl, doc)
-
-    def _docdescriptor(self, name, value, mod):
-        results = []
-        push = results.append
-
-        if name:
-            push('<dl><dt><strong>%s</strong></dt>\n' % name)
-        if value.__doc__ is not None:
-            doc = self.markup(getdoc(value), self.preformat)
-            push('<dd><tt>%s</tt></dd>\n' % doc)
-        push('</dl>\n')
-
-        return ''.join(results)
-
-    def docproperty(self, object, name=None, mod=None, cl=None):
-        """Produce html documentation for a property."""
-        return self._docdescriptor(name, object, mod)
-
-    def docother(self, object, name=None, mod=None, *ignored):
-        """Produce HTML documentation for a data object."""
-        lhs = name and '<strong>%s</strong> = ' % name or ''
-        return lhs + self.repr(object)
-
-    def docdata(self, object, name=None, mod=None, cl=None):
-        """Produce html documentation for a data descriptor."""
-        return self._docdescriptor(name, object, mod)
-
-    def index(self, dir, shadowed=None):
-        """Generate an HTML index for a directory of modules."""
-        modpkgs = []
-        if shadowed is None: shadowed = {}
-        for importer, name, ispkg in pkgutil.iter_modules([dir]):
-            modpkgs.append((name, '', ispkg, name in shadowed))
-            shadowed[name] = 1
-
-        modpkgs.sort()
-        contents = self.multicolumn(modpkgs, self.modpkglink)
-        return self.bigsection(dir, '#ffffff', '#ee77aa', contents)
-
-# -------------------------------------------- text documentation generator
-
-class TextRepr(Repr):
-    """Class for safely making a text representation of a Python object."""
-    def __init__(self):
-        Repr.__init__(self)
-        self.maxlist = self.maxtuple = 20
-        self.maxdict = 10
-        self.maxstring = self.maxother = 100
-
-    def repr1(self, x, level):
-        if hasattr(type(x), '__name__'):
-            methodname = 'repr_' + join(split(type(x).__name__), '_')
-            if hasattr(self, methodname):
-                return getattr(self, methodname)(x, level)
-        return cram(stripid(repr(x)), self.maxother)
-
-    def repr_string(self, x, level):
-        test = cram(x, self.maxstring)
-        testrepr = repr(test)
-        if '\\' in test and '\\' not in replace(testrepr, r'\\', ''):
-            # Backslashes are only literal in the string and are never
-            # needed to make any special characters, so show a raw string.
-            return 'r' + testrepr[0] + test + testrepr[0]
-        return testrepr
-
-    repr_str = repr_string
-
-    def repr_instance(self, x, level):
-        try:
-            return cram(stripid(repr(x)), self.maxstring)
-        except:
-            return '<%s instance>' % x.__class__.__name__
-
-class TextDoc(Doc):
-    """Formatter class for text documentation."""
-
-    # ------------------------------------------- text formatting utilities
-
-    _repr_instance = TextRepr()
-    repr = _repr_instance.repr
-
-    def bold(self, text):
-        """Format a string in bold by overstriking."""
-        return join(map(lambda ch: ch + '\b' + ch, text), '')
-
-    def indent(self, text, prefix='    '):
-        """Indent text by prepending a given prefix to each line."""
-        if not text: return ''
-        lines = split(text, '\n')
-        lines = map(lambda line, prefix=prefix: prefix + line, lines)
-        if lines: lines[-1] = rstrip(lines[-1])
-        return join(lines, '\n')
-
-    def section(self, title, contents):
-        """Format a section with a given heading."""
-        return self.bold(title) + '\n' + rstrip(self.indent(contents)) + '\n\n'
-
-    # ---------------------------------------------- type-specific routines
-
-    def formattree(self, tree, modname, parent=None, prefix=''):
-        """Render in text a class tree as returned by inspect.getclasstree()."""
-        result = ''
-        for entry in tree:
-            if type(entry) is type(()):
-                c, bases = entry
-                result = result + prefix + classname(c, modname)
-                if bases and bases != (parent,):
-                    parents = map(lambda c, m=modname: classname(c, m), bases)
-                    result = result + '(%s)' % join(parents, ', ')
-                result = result + '\n'
-            elif type(entry) is type([]):
-                result = result + self.formattree(
-                    entry, modname, c, prefix + '    ')
-        return result
-
-    def docmodule(self, object, name=None, mod=None):
-        """Produce text documentation for a given module object."""
-        name = object.__name__ # ignore the passed-in name
-        synop, desc = splitdoc(getdoc(object))
-        result = self.section('NAME', name + (synop and ' - ' + synop))
-
-        try:
-            all = object.__all__
-        except AttributeError:
-            all = None
-
-        try:
-            file = inspect.getabsfile(object)
-        except TypeError:
-            file = '(built-in)'
-        result = result + self.section('FILE', file)
-
-        docloc = self.getdocloc(object)
-        if docloc is not None:
-            result = result + self.section('MODULE DOCS', docloc)
-
-        if desc:
-            result = result + self.section('DESCRIPTION', desc)
-
-        classes = []
-        for key, value in inspect.getmembers(object, inspect.isclass):
-            # if __all__ exists, believe it.  Otherwise use old heuristic.
-            if (all is not None
-                or (inspect.getmodule(value) or object) is object):
-                if visiblename(key, all, object):
-                    classes.append((key, value))
-        funcs = []
-        for key, value in inspect.getmembers(object, inspect.isroutine):
-            # if __all__ exists, believe it.  Otherwise use old heuristic.
-            if (all is not None or
-                inspect.isbuiltin(value) or inspect.getmodule(value) is object):
-                if visiblename(key, all, object):
-                    funcs.append((key, value))
-        data = []
-        for key, value in inspect.getmembers(object, isdata):
-            if visiblename(key, all, object):
-                data.append((key, value))
-
-        modpkgs = []
-        modpkgs_names = set()
-        if hasattr(object, '__path__'):
-            for importer, modname, ispkg in pkgutil.iter_modules(object.__path__):
-                modpkgs_names.add(modname)
-                if ispkg:
-                    modpkgs.append(modname + ' (package)')
-                else:
-                    modpkgs.append(modname)
-
-            modpkgs.sort()
-            result = result + self.section(
-                'PACKAGE CONTENTS', join(modpkgs, '\n'))
-
-        # Detect submodules as sometimes created by C extensions
-        submodules = []
-        for key, value in inspect.getmembers(object, inspect.ismodule):
-            if value.__name__.startswith(name + '.') and key not in modpkgs_names:
-                submodules.append(key)
-        if submodules:
-            submodules.sort()
-            result = result + self.section(
-                'SUBMODULES', join(submodules, '\n'))
-
-        if classes:
-            classlist = map(lambda key_value: key_value[1], classes)
-            contents = [self.formattree(
-                inspect.getclasstree(classlist, 1), name)]
-            for key, value in classes:
-                contents.append(self.document(value, key, name))
-            result = result + self.section('CLASSES', join(contents, '\n'))
-
-        if funcs:
-            contents = []
-            for key, value in funcs:
-                contents.append(self.document(value, key, name))
-            result = result + self.section('FUNCTIONS', join(contents, '\n'))
-
-        if data:
-            contents = []
-            for key, value in data:
-                contents.append(self.docother(value, key, name, maxlen=70))
-            result = result + self.section('DATA', join(contents, '\n'))
-
-        if hasattr(object, '__version__'):
-            version = str(object.__version__)
-            if version[:11] == '$' + 'Revision: ' and version[-1:] == '$':
-                version = strip(version[11:-1])
-            result = result + self.section('VERSION', version)
-        if hasattr(object, '__date__'):
-            result = result + self.section('DATE', str(object.__date__))
-        if hasattr(object, '__author__'):
-            result = result + self.section('AUTHOR', str(object.__author__))
-        if hasattr(object, '__credits__'):
-            result = result + self.section('CREDITS', str(object.__credits__))
-        return result
-
-    def docclass(self, object, name=None, mod=None, *ignored):
-        """Produce text documentation for a given class object."""
-        realname = object.__name__
-        name = name or realname
-        bases = object.__bases__
-
-        def makename(c, m=object.__module__):
-            return classname(c, m)
-
-        if name == realname:
-            title = 'class ' + self.bold(realname)
-        else:
-            title = self.bold(name) + ' = class ' + realname
-        if bases:
-            parents = map(makename, bases)
-            title = title + '(%s)' % join(parents, ', ')
-
-        doc = getdoc(object)
-        contents = doc and [doc + '\n'] or []
-        push = contents.append
-
-        # List the mro, if non-trivial.
-        mro = deque(inspect.getmro(object))
-        if len(mro) > 2:
-            push("Method resolution order:")
-            for base in mro:
-                push('    ' + makename(base))
-            push('')
-
-        # Cute little class to pump out a horizontal rule between sections.
-        class HorizontalRule:
-            def __init__(self):
-                self.needone = 0
-            def maybe(self):
-                if self.needone:
-                    push('-' * 70)
-                self.needone = 1
-        hr = HorizontalRule()
-
-        def spill(msg, attrs, predicate):
-            ok, attrs = _split_list(attrs, predicate)
-            if ok:
-                hr.maybe()
-                push(msg)
-                for name, kind, homecls, value in ok:
-                    push(self.document(getattr(object, name),
-                                       name, mod, object))
-            return attrs
-
-        def spilldescriptors(msg, attrs, predicate):
-            ok, attrs = _split_list(attrs, predicate)
-            if ok:
-                hr.maybe()
-                push(msg)
-                for name, kind, homecls, value in ok:
-                    push(self._docdescriptor(name, value, mod))
-            return attrs
-
-        def spilldata(msg, attrs, predicate):
-            ok, attrs = _split_list(attrs, predicate)
-            if ok:
-                hr.maybe()
-                push(msg)
-                for name, kind, homecls, value in ok:
-                    if (hasattr(value, '__call__') or
-                            inspect.isdatadescriptor(value)):
-                        doc = getdoc(value)
-                    else:
-                        doc = None
-                    push(self.docother(getattr(object, name),
-                                       name, mod, maxlen=70, doc=doc) + '\n')
-            return attrs
-
-        attrs = filter(lambda data: visiblename(data[0], obj=object),
-                       classify_class_attrs(object))
-        while attrs:
-            if mro:
-                thisclass = mro.popleft()
-            else:
-                thisclass = attrs[0][2]
-            attrs, inherited = _split_list(attrs, lambda t: t[2] is thisclass)
-
-            if thisclass is __builtin__.object:
-                attrs = inherited
-                continue
-            elif thisclass is object:
-                tag = "defined here"
-            else:
-                tag = "inherited from %s" % classname(thisclass,
-                                                      object.__module__)
-
-            # Sort attrs by name.
-            attrs.sort()
-
-            # Pump out the attrs, segregated by kind.
-            attrs = spill("Methods %s:\n" % tag, attrs,
-                          lambda t: t[1] == 'method')
-            attrs = spill("Class methods %s:\n" % tag, attrs,
-                          lambda t: t[1] == 'class method')
-            attrs = spill("Static methods %s:\n" % tag, attrs,
-                          lambda t: t[1] == 'static method')
-            attrs = spilldescriptors("Data descriptors %s:\n" % tag, attrs,
-                                     lambda t: t[1] == 'data descriptor')
-            attrs = spilldata("Data and other attributes %s:\n" % tag, attrs,
-                              lambda t: t[1] == 'data')
-            assert attrs == []
-            attrs = inherited
-
-        contents = '\n'.join(contents)
-        if not contents:
-            return title + '\n'
-        return title + '\n' + self.indent(rstrip(contents), ' |  ') + '\n'
-
-    def formatvalue(self, object):
-        """Format an argument default value as text."""
-        return '=' + self.repr(object)
-
-    def docroutine(self, object, name=None, mod=None, cl=None):
-        """Produce text documentation for a function or method object."""
-        realname = object.__name__
-        name = name or realname
-        note = ''
-        skipdocs = 0
-        if inspect.ismethod(object):
-            imclass = object.im_class
-            if cl:
-                if imclass is not cl:
-                    note = ' from ' + classname(imclass, mod)
-            else:
-                if object.im_self is not None:
-                    note = ' method of %s instance' % classname(
-                        object.im_self.__class__, mod)
-                else:
-                    note = ' unbound %s method' % classname(imclass,mod)
-            object = object.im_func
-
-        if name == realname:
-            title = self.bold(realname)
-        else:
-            if (cl and realname in cl.__dict__ and
-                cl.__dict__[realname] is object):
-                skipdocs = 1
-            title = self.bold(name) + ' = ' + realname
-        if inspect.isfunction(object):
-            args, varargs, varkw, defaults = inspect.getargspec(object)
-            argspec = inspect.formatargspec(
-                args, varargs, varkw, defaults, formatvalue=self.formatvalue)
-            if realname == '<lambda>':
-                title = self.bold(name) + ' lambda '
-                argspec = argspec[1:-1] # remove parentheses
-        else:
-            argspec = '(...)'
-        decl = title + argspec + note
-
-        if skipdocs:
-            return decl + '\n'
-        else:
-            doc = getdoc(object) or ''
-            return decl + '\n' + (doc and rstrip(self.indent(doc)) + '\n')
-
-    def _docdescriptor(self, name, value, mod):
-        results = []
-        push = results.append
-
-        if name:
-            push(self.bold(name))
-            push('\n')
-        doc = getdoc(value) or ''
-        if doc:
-            push(self.indent(doc))
-            push('\n')
-        return ''.join(results)
-
-    def docproperty(self, object, name=None, mod=None, cl=None):
-        """Produce text documentation for a property."""
-        return self._docdescriptor(name, object, mod)
-
-    def docdata(self, object, name=None, mod=None, cl=None):
-        """Produce text documentation for a data descriptor."""
-        return self._docdescriptor(name, object, mod)
-
-    def docother(self, object, name=None, mod=None, parent=None, maxlen=None, doc=None):
-        """Produce text documentation for a data object."""
-        repr = self.repr(object)
-        if maxlen:
-            line = (name and name + ' = ' or '') + repr
-            chop = maxlen - len(line)
-            if chop < 0: repr = repr[:chop] + '...'
-        line = (name and self.bold(name) + ' = ' or '') + repr
-        if doc is not None:
-            line += '\n' + self.indent(str(doc))
-        return line
-
-# --------------------------------------------------------- user interfaces
-
-def pager(text):
-    """The first time this is called, determine what kind of pager to use."""
-    global pager
-    pager = getpager()
-    pager(text)
-
-def getpager():
-    """Decide what method to use for paging through text."""
-    if type(sys.stdout) is not types.FileType:
-        return plainpager
-    if not sys.stdin.isatty() or not sys.stdout.isatty():
-        return plainpager
-    if 'PAGER' in os.environ:
-        if sys.platform == 'win32': # pipes completely broken in Windows
-            return lambda text: tempfilepager(plain(text), os.environ['PAGER'])
-        elif sys.platform == 'uefi':
-            return lambda text: tempfilepager(plain(text), os.environ['PAGER'])
-        elif os.environ.get('TERM') in ('dumb', 'emacs'):
-            return lambda text: pipepager(plain(text), os.environ['PAGER'])
-        else:
-            return lambda text: pipepager(text, os.environ['PAGER'])
-    if os.environ.get('TERM') in ('dumb', 'emacs'):
-        return plainpager
-    if sys.platform == 'uefi':
-        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')
-
-    import tempfile
-    (fd, filename) = tempfile.mkstemp()
-    os.close(fd)
-    try:
-        if hasattr(os, 'system') and os.system('more "%s"' % filename) == 0:
-            return lambda text: pipepager(text, 'more')
-        else:
-            return ttypager
-    finally:
-        os.unlink(filename)
-
-def plain(text):
-    """Remove boldface formatting from text."""
-    return re.sub('.\b', '', text)
-
-def pipepager(text, cmd):
-    """Page through text by feeding it to another program."""
-    pipe = os.popen(cmd, 'w')
-    try:
-        pipe.write(text)
-        pipe.close()
-    except IOError:
-        pass # Ignore broken pipes caused by quitting the pager program.
-
-def tempfilepager(text, cmd):
-    """Page through text by invoking a program on a temporary file."""
-    import tempfile
-    filename = tempfile.mktemp()
-    file = open(filename, 'w')
-    file.write(text)
-    file.close()
-    try:
-        os.system(cmd + ' "' + filename + '"')
-    finally:
-        os.unlink(filename)
-
-def ttypager(text):
-    """Page through text on a text terminal."""
-    lines = split(plain(text), '\n')
-    try:
-        import tty
-        fd = sys.stdin.fileno()
-        old = tty.tcgetattr(fd)
-        tty.setcbreak(fd)
-        getchar = lambda: sys.stdin.read(1)
-    except (ImportError, AttributeError):
-        tty = None
-        getchar = lambda: sys.stdin.readline()[:-1][:1]
-
-    try:
-        r = inc = os.environ.get('LINES', 25) - 1
-        sys.stdout.write(join(lines[:inc], '\n') + '\n')
-        while lines[r:]:
-            sys.stdout.write('-- more --')
-            sys.stdout.flush()
-            c = getchar()
-
-            if c in ('q', 'Q'):
-                sys.stdout.write('\r          \r')
-                break
-            elif c in ('\r', '\n'):
-                sys.stdout.write('\r          \r' + lines[r] + '\n')
-                r = r + 1
-                continue
-            if c in ('b', 'B', '\x1b'):
-                r = r - inc - inc
-                if r < 0: r = 0
-            sys.stdout.write('\n' + join(lines[r:r+inc], '\n') + '\n')
-            r = r + inc
-
-    finally:
-        if tty:
-            tty.tcsetattr(fd, tty.TCSAFLUSH, old)
-
-def plainpager(text):
-    """Simply print unformatted text.  This is the ultimate fallback."""
-    sys.stdout.write(plain(text))
-
-def describe(thing):
-    """Produce a short description of the given thing."""
-    if inspect.ismodule(thing):
-        if thing.__name__ in sys.builtin_module_names:
-            return 'built-in module ' + thing.__name__
-        if hasattr(thing, '__path__'):
-            return 'package ' + thing.__name__
-        else:
-            return 'module ' + thing.__name__
-    if inspect.isbuiltin(thing):
-        return 'built-in function ' + thing.__name__
-    if inspect.isgetsetdescriptor(thing):
-        return 'getset descriptor %s.%s.%s' % (
-            thing.__objclass__.__module__, thing.__objclass__.__name__,
-            thing.__name__)
-    if inspect.ismemberdescriptor(thing):
-        return 'member descriptor %s.%s.%s' % (
-            thing.__objclass__.__module__, thing.__objclass__.__name__,
-            thing.__name__)
-    if inspect.isclass(thing):
-        return 'class ' + thing.__name__
-    if inspect.isfunction(thing):
-        return 'function ' + thing.__name__
-    if inspect.ismethod(thing):
-        return 'method ' + thing.__name__
-    if type(thing) is types.InstanceType:
-        return 'instance of ' + thing.__class__.__name__
-    return type(thing).__name__
-
-def locate(path, forceload=0):
-    """Locate an object by name or dotted path, importing as necessary."""
-    parts = [part for part in split(path, '.') if part]
-    module, n = None, 0
-    while n < len(parts):
-        nextmodule = safeimport(join(parts[:n+1], '.'), forceload)
-        if nextmodule: module, n = nextmodule, n + 1
-        else: break
-    if module:
-        object = module
-        for part in parts[n:]:
-            try: object = getattr(object, part)
-            except AttributeError: return None
-        return object
-    else:
-        if hasattr(__builtin__, path):
-            return getattr(__builtin__, path)
-
-# --------------------------------------- interactive interpreter interface
-
-text = TextDoc()
-html = HTMLDoc()
-
-class _OldStyleClass: pass
-_OLD_INSTANCE_TYPE = type(_OldStyleClass())
-
-def resolve(thing, forceload=0):
-    """Given an object or a path to an object, get the object and its name."""
-    if isinstance(thing, str):
-        object = locate(thing, forceload)
-        if not object:
-            raise ImportError, 'no Python documentation found for %r' % thing
-        return object, thing
-    else:
-        return thing, getattr(thing, '__name__', None)
-
-def render_doc(thing, title='Python Library Documentation: %s', forceload=0):
-    """Render text documentation, given an object or a path to an object."""
-    object, name = resolve(thing, forceload)
-    desc = describe(object)
-    module = inspect.getmodule(object)
-    if name and '.' in name:
-        desc += ' in ' + name[:name.rfind('.')]
-    elif module and module is not object:
-        desc += ' in module ' + module.__name__
-    if type(object) is _OLD_INSTANCE_TYPE:
-        # If the passed object is an instance of an old-style class,
-        # document its available methods instead of its value.
-        object = object.__class__
-    elif not (inspect.ismodule(object) or
-              inspect.isclass(object) or
-              inspect.isroutine(object) or
-              inspect.isgetsetdescriptor(object) or
-              inspect.ismemberdescriptor(object) or
-              isinstance(object, property)):
-        # If the passed object is a piece of data or an instance,
-        # document its available methods instead of its value.
-        object = type(object)
-        desc += ' object'
-    return title % desc + '\n\n' + text.document(object, name)
-
-def doc(thing, title='Python Library Documentation: %s', forceload=0):
-    """Display text documentation, given an object or a path to an object."""
-    try:
-        pager(render_doc(thing, title, forceload))
-    except (ImportError, ErrorDuringImport), value:
-        print value
-
-def writedoc(thing, forceload=0):
-    """Write HTML documentation to a file in the current directory."""
-    try:
-        object, name = resolve(thing, forceload)
-        page = html.page(describe(object), html.document(object, name))
-        file = open(name + '.html', 'w')
-        file.write(page)
-        file.close()
-        print 'wrote', name + '.html'
-    except (ImportError, ErrorDuringImport), value:
-        print value
-
-def writedocs(dir, pkgpath='', done=None):
-    """Write out HTML documentation for all modules in a directory tree."""
-    if done is None: done = {}
-    for importer, modname, ispkg in pkgutil.walk_packages([dir], pkgpath):
-        writedoc(modname)
-    return
-
-class Helper:
-
-    # These dictionaries map a topic name to either an alias, or a tuple
-    # (label, seealso-items).  The "label" is the label of the corresponding
-    # section in the .rst file under Doc/ and an index into the dictionary
-    # in pydoc_data/topics.py.
-    #
-    # CAUTION: if you change one of these dictionaries, be sure to adapt the
-    #          list of needed labels in Doc/tools/sphinxext/pyspecific.py and
-    #          regenerate the pydoc_data/topics.py file by running
-    #              make pydoc-topics
-    #          in Doc/ and copying the output file into the Lib/ directory.
-
-    keywords = {
-        'and': 'BOOLEAN',
-        'as': 'with',
-        'assert': ('assert', ''),
-        'break': ('break', 'while for'),
-        'class': ('class', 'CLASSES SPECIALMETHODS'),
-        'continue': ('continue', 'while for'),
-        'def': ('function', ''),
-        'del': ('del', 'BASICMETHODS'),
-        'elif': 'if',
-        'else': ('else', 'while for'),
-        'except': 'try',
-        'exec': ('exec', ''),
-        'finally': 'try',
-        'for': ('for', 'break continue while'),
-        'from': 'import',
-        'global': ('global', 'NAMESPACES'),
-        'if': ('if', 'TRUTHVALUE'),
-        'import': ('import', 'MODULES'),
-        'in': ('in', 'SEQUENCEMETHODS2'),
-        'is': 'COMPARISON',
-        'lambda': ('lambda', 'FUNCTIONS'),
-        'not': 'BOOLEAN',
-        'or': 'BOOLEAN',
-        'pass': ('pass', ''),
-        'print': ('print', ''),
-        'raise': ('raise', 'EXCEPTIONS'),
-        'return': ('return', 'FUNCTIONS'),
-        'try': ('try', 'EXCEPTIONS'),
-        'while': ('while', 'break continue if TRUTHVALUE'),
-        'with': ('with', 'CONTEXTMANAGERS EXCEPTIONS yield'),
-        'yield': ('yield', ''),
-    }
-    # Either add symbols to this dictionary or to the symbols dictionary
-    # directly: Whichever is easier. They are merged later.
-    _symbols_inverse = {
-        'STRINGS' : ("'", "'''", "r'", "u'", '"""', '"', 'r"', 'u"'),
-        'OPERATORS' : ('+', '-', '*', '**', '/', '//', '%', '<<', '>>', '&',
-                       '|', '^', '~', '<', '>', '<=', '>=', '==', '!=', '<>'),
-        'COMPARISON' : ('<', '>', '<=', '>=', '==', '!=', '<>'),
-        'UNARY' : ('-', '~'),
-        'AUGMENTEDASSIGNMENT' : ('+=', '-=', '*=', '/=', '%=', '&=', '|=',
-                                '^=', '<<=', '>>=', '**=', '//='),
-        'BITWISE' : ('<<', '>>', '&', '|', '^', '~'),
-        'COMPLEX' : ('j', 'J')
-    }
-    symbols = {
-        '%': 'OPERATORS FORMATTING',
-        '**': 'POWER',
-        ',': 'TUPLES LISTS FUNCTIONS',
-        '.': 'ATTRIBUTES FLOAT MODULES OBJECTS',
-        '...': 'ELLIPSIS',
-        ':': 'SLICINGS DICTIONARYLITERALS',
-        '@': 'def class',
-        '\\': 'STRINGS',
-        '_': 'PRIVATENAMES',
-        '__': 'PRIVATENAMES SPECIALMETHODS',
-        '`': 'BACKQUOTES',
-        '(': 'TUPLES FUNCTIONS CALLS',
-        ')': 'TUPLES FUNCTIONS CALLS',
-        '[': 'LISTS SUBSCRIPTS SLICINGS',
-        ']': 'LISTS SUBSCRIPTS SLICINGS'
-    }
-    for topic, symbols_ in _symbols_inverse.iteritems():
-        for symbol in symbols_:
-            topics = symbols.get(symbol, topic)
-            if topic not in topics:
-                topics = topics + ' ' + topic
-            symbols[symbol] = topics
-
-    topics = {
-        'TYPES': ('types', 'STRINGS UNICODE NUMBERS SEQUENCES MAPPINGS '
-                  'FUNCTIONS CLASSES MODULES FILES inspect'),
-        'STRINGS': ('strings', 'str UNICODE SEQUENCES STRINGMETHODS FORMATTING '
-                    'TYPES'),
-        'STRINGMETHODS': ('string-methods', 'STRINGS FORMATTING'),
-        'FORMATTING': ('formatstrings', 'OPERATORS'),
-        'UNICODE': ('strings', 'encodings unicode SEQUENCES STRINGMETHODS '
-                    'FORMATTING TYPES'),
-        'NUMBERS': ('numbers', 'INTEGER FLOAT COMPLEX TYPES'),
-        'INTEGER': ('integers', 'int range'),
-        'FLOAT': ('floating', 'float math'),
-        'COMPLEX': ('imaginary', 'complex cmath'),
-        'SEQUENCES': ('typesseq', 'STRINGMETHODS FORMATTING xrange LISTS'),
-        'MAPPINGS': 'DICTIONARIES',
-        'FUNCTIONS': ('typesfunctions', 'def TYPES'),
-        'METHODS': ('typesmethods', 'class def CLASSES TYPES'),
-        'CODEOBJECTS': ('bltin-code-objects', 'compile FUNCTIONS TYPES'),
-        'TYPEOBJECTS': ('bltin-type-objects', 'types TYPES'),
-        'FRAMEOBJECTS': 'TYPES',
-        'TRACEBACKS': 'TYPES',
-        'NONE': ('bltin-null-object', ''),
-        'ELLIPSIS': ('bltin-ellipsis-object', 'SLICINGS'),
-        'FILES': ('bltin-file-objects', ''),
-        'SPECIALATTRIBUTES': ('specialattrs', ''),
-        'CLASSES': ('types', 'class SPECIALMETHODS PRIVATENAMES'),
-        'MODULES': ('typesmodules', 'import'),
-        'PACKAGES': 'import',
-        'EXPRESSIONS': ('operator-summary', 'lambda or and not in is BOOLEAN '
-                        'COMPARISON BITWISE SHIFTING BINARY FORMATTING POWER '
-                        'UNARY ATTRIBUTES SUBSCRIPTS SLICINGS CALLS TUPLES '
-                        'LISTS DICTIONARIES BACKQUOTES'),
-        'OPERATORS': 'EXPRESSIONS',
-        'PRECEDENCE': 'EXPRESSIONS',
-        'OBJECTS': ('objects', 'TYPES'),
-        'SPECIALMETHODS': ('specialnames', 'BASICMETHODS ATTRIBUTEMETHODS '
-                           'CALLABLEMETHODS SEQUENCEMETHODS1 MAPPINGMETHODS '
-                           'SEQUENCEMETHODS2 NUMBERMETHODS CLASSES'),
-        'BASICMETHODS': ('customization', 'cmp hash repr str SPECIALMETHODS'),
-        'ATTRIBUTEMETHODS': ('attribute-access', 'ATTRIBUTES SPECIALMETHODS'),
-        'CALLABLEMETHODS': ('callable-types', 'CALLS SPECIALMETHODS'),
-        'SEQUENCEMETHODS1': ('sequence-types', 'SEQUENCES SEQUENCEMETHODS2 '
-                             'SPECIALMETHODS'),
-        'SEQUENCEMETHODS2': ('sequence-methods', 'SEQUENCES SEQUENCEMETHODS1 '
-                             'SPECIALMETHODS'),
-        'MAPPINGMETHODS': ('sequence-types', 'MAPPINGS SPECIALMETHODS'),
-        'NUMBERMETHODS': ('numeric-types', 'NUMBERS AUGMENTEDASSIGNMENT '
-                          'SPECIALMETHODS'),
-        'EXECUTION': ('execmodel', 'NAMESPACES DYNAMICFEATURES EXCEPTIONS'),
-        'NAMESPACES': ('naming', 'global ASSIGNMENT DELETION DYNAMICFEATURES'),
-        'DYNAMICFEATURES': ('dynamic-features', ''),
-        'SCOPING': 'NAMESPACES',
-        'FRAMES': 'NAMESPACES',
-        'EXCEPTIONS': ('exceptions', 'try except finally raise'),
-        'COERCIONS': ('coercion-rules','CONVERSIONS'),
-        'CONVERSIONS': ('conversions', 'COERCIONS'),
-        'IDENTIFIERS': ('identifiers', 'keywords SPECIALIDENTIFIERS'),
-        'SPECIALIDENTIFIERS': ('id-classes', ''),
-        'PRIVATENAMES': ('atom-identifiers', ''),
-        'LITERALS': ('atom-literals', 'STRINGS BACKQUOTES NUMBERS '
-                     'TUPLELITERALS LISTLITERALS DICTIONARYLITERALS'),
-        'TUPLES': 'SEQUENCES',
-        'TUPLELITERALS': ('exprlists', 'TUPLES LITERALS'),
-        'LISTS': ('typesseq-mutable', 'LISTLITERALS'),
-        'LISTLITERALS': ('lists', 'LISTS LITERALS'),
-        'DICTIONARIES': ('typesmapping', 'DICTIONARYLITERALS'),
-        'DICTIONARYLITERALS': ('dict', 'DICTIONARIES LITERALS'),
-        'BACKQUOTES': ('string-conversions', 'repr str STRINGS LITERALS'),
-        'ATTRIBUTES': ('attribute-references', 'getattr hasattr setattr '
-                       'ATTRIBUTEMETHODS'),
-        'SUBSCRIPTS': ('subscriptions', 'SEQUENCEMETHODS1'),
-        'SLICINGS': ('slicings', 'SEQUENCEMETHODS2'),
-        'CALLS': ('calls', 'EXPRESSIONS'),
-        'POWER': ('power', 'EXPRESSIONS'),
-        'UNARY': ('unary', 'EXPRESSIONS'),
-        'BINARY': ('binary', 'EXPRESSIONS'),
-        'SHIFTING': ('shifting', 'EXPRESSIONS'),
-        'BITWISE': ('bitwise', 'EXPRESSIONS'),
-        'COMPARISON': ('comparisons', 'EXPRESSIONS BASICMETHODS'),
-        'BOOLEAN': ('booleans', 'EXPRESSIONS TRUTHVALUE'),
-        'ASSERTION': 'assert',
-        'ASSIGNMENT': ('assignment', 'AUGMENTEDASSIGNMENT'),
-        'AUGMENTEDASSIGNMENT': ('augassign', 'NUMBERMETHODS'),
-        'DELETION': 'del',
-        'PRINTING': 'print',
-        'RETURNING': 'return',
-        'IMPORTING': 'import',
-        'CONDITIONAL': 'if',
-        'LOOPING': ('compound', 'for while break continue'),
-        'TRUTHVALUE': ('truth', 'if while and or not BASICMETHODS'),
-        'DEBUGGING': ('debugger', 'pdb'),
-        'CONTEXTMANAGERS': ('context-managers', 'with'),
-    }
-
-    def __init__(self, input=None, output=None):
-        self._input = input
-        self._output = output
-
-    input  = property(lambda self: self._input or sys.stdin)
-    output = property(lambda self: self._output or sys.stdout)
-
-    def __repr__(self):
-        if inspect.stack()[1][3] == '?':
-            self()
-            return ''
-        return '<pydoc.Helper instance>'
-
-    _GoInteractive = object()
-    def __call__(self, request=_GoInteractive):
-        if request is not self._GoInteractive:
-            self.help(request)
-        else:
-            self.intro()
-            self.interact()
-            self.output.write('''
-You are now leaving help and returning to the Python interpreter.
-If you want to ask for help on a particular object directly from the
-interpreter, you can type "help(object)".  Executing "help('string')"
-has the same effect as typing a particular string at the help> prompt.
-''')
-
-    def interact(self):
-        self.output.write('\n')
-        while True:
-            try:
-                request = self.getline('help> ')
-                if not request: break
-            except (KeyboardInterrupt, EOFError):
-                break
-            request = strip(replace(request, '"', '', "'", ''))
-            if lower(request) in ('q', 'quit'): break
-            self.help(request)
-
-    def getline(self, prompt):
-        """Read one line, using raw_input when available."""
-        if self.input is sys.stdin:
-            return raw_input(prompt)
-        else:
-            self.output.write(prompt)
-            self.output.flush()
-            return self.input.readline()
-
-    def help(self, request):
-        if type(request) is type(''):
-            request = request.strip()
-            if request == 'help': self.intro()
-            elif request == 'keywords': self.listkeywords()
-            elif request == 'symbols': self.listsymbols()
-            elif request == 'topics': self.listtopics()
-            elif request == 'modules': self.listmodules()
-            elif request[:8] == 'modules ':
-                self.listmodules(split(request)[1])
-            elif request in self.symbols: self.showsymbol(request)
-            elif request in self.keywords: self.showtopic(request)
-            elif request in self.topics: self.showtopic(request)
-            elif request: doc(request, 'Help on %s:')
-        elif isinstance(request, Helper): self()
-        else: doc(request, 'Help on %s:')
-        self.output.write('\n')
-
-    def intro(self):
-        self.output.write('''
-Welcome to Python %s!  This is the online help utility.
-
-If this is your first time using Python, you should definitely check out
-the tutorial on the Internet at http://docs.python.org/tutorial/.
-
-Enter the name of any module, keyword, or topic to get help on writing
-Python programs and using Python modules.  To quit this help utility and
-return to the interpreter, just type "quit".
-
-To get a list of available modules, keywords, or topics, type "modules",
-"keywords", or "topics".  Each module also comes with a one-line summary
-of what it does; to list the modules whose summaries contain a given word
-such as "spam", type "modules spam".
-''' % sys.version[:3])
-
-    def list(self, items, columns=4, width=80):
-        items = items[:]
-        items.sort()
-        colw = width / columns
-        rows = (len(items) + columns - 1) / columns
-        for row in range(rows):
-            for col in range(columns):
-                i = col * rows + row
-                if i < len(items):
-                    self.output.write(items[i])
-                    if col < columns - 1:
-                        self.output.write(' ' + ' ' * (colw-1 - len(items[i])))
-            self.output.write('\n')
-
-    def listkeywords(self):
-        self.output.write('''
-Here is a list of the Python keywords.  Enter any keyword to get more help.
-
-''')
-        self.list(self.keywords.keys())
-
-    def listsymbols(self):
-        self.output.write('''
-Here is a list of the punctuation symbols which Python assigns special meaning
-to. Enter any symbol to get more help.
-
-''')
-        self.list(self.symbols.keys())
-
-    def listtopics(self):
-        self.output.write('''
-Here is a list of available topics.  Enter any topic name to get more help.
-
-''')
-        self.list(self.topics.keys())
-
-    def showtopic(self, topic, more_xrefs=''):
-        try:
-            import pydoc_data.topics
-        except ImportError:
-            self.output.write('''
-Sorry, topic and keyword documentation is not available because the
-module "pydoc_data.topics" could not be found.
-''')
-            return
-        target = self.topics.get(topic, self.keywords.get(topic))
-        if not target:
-            self.output.write('no documentation found for %s\n' % repr(topic))
-            return
-        if type(target) is type(''):
-            return self.showtopic(target, more_xrefs)
-
-        label, xrefs = target
-        try:
-            doc = pydoc_data.topics.topics[label]
-        except KeyError:
-            self.output.write('no documentation found for %s\n' % repr(topic))
-            return
-        pager(strip(doc) + '\n')
-        if more_xrefs:
-            xrefs = (xrefs or '') + ' ' + more_xrefs
-        if xrefs:
-            import StringIO, formatter
-            buffer = StringIO.StringIO()
-            formatter.DumbWriter(buffer).send_flowing_data(
-                'Related help topics: ' + join(split(xrefs), ', ') + '\n')
-            self.output.write('\n%s\n' % buffer.getvalue())
-
-    def showsymbol(self, symbol):
-        target = self.symbols[symbol]
-        topic, _, xrefs = target.partition(' ')
-        self.showtopic(topic, xrefs)
-
-    def listmodules(self, key=''):
-        if key:
-            self.output.write('''
-Here is a list of matching modules.  Enter any module name to get more help.
-
-''')
-            apropos(key)
-        else:
-            self.output.write('''
-Please wait a moment while I gather a list of all available modules...
-
-''')
-            modules = {}
-            def callback(path, modname, desc, modules=modules):
-                if modname and modname[-9:] == '.__init__':
-                    modname = modname[:-9] + ' (package)'
-                if find(modname, '.') < 0:
-                    modules[modname] = 1
-            def onerror(modname):
-                callback(None, modname, None)
-            ModuleScanner().run(callback, onerror=onerror)
-            self.list(modules.keys())
-            self.output.write('''
-Enter any module name to get more help.  Or, type "modules spam" to search
-for modules whose descriptions contain the word "spam".
-''')
-
-help = Helper()
-
-class Scanner:
-    """A generic tree iterator."""
-    def __init__(self, roots, children, descendp):
-        self.roots = roots[:]
-        self.state = []
-        self.children = children
-        self.descendp = descendp
-
-    def next(self):
-        if not self.state:
-            if not self.roots:
-                return None
-            root = self.roots.pop(0)
-            self.state = [(root, self.children(root))]
-        node, children = self.state[-1]
-        if not children:
-            self.state.pop()
-            return self.next()
-        child = children.pop(0)
-        if self.descendp(child):
-            self.state.append((child, self.children(child)))
-        return child
-
-
-class ModuleScanner:
-    """An interruptible scanner that searches module synopses."""
-
-    def run(self, callback, key=None, completer=None, onerror=None):
-        if key: key = lower(key)
-        self.quit = False
-        seen = {}
-
-        for modname in sys.builtin_module_names:
-            if modname != '__main__':
-                seen[modname] = 1
-                if key is None:
-                    callback(None, modname, '')
-                else:
-                    desc = split(__import__(modname).__doc__ or '', '\n')[0]
-                    if find(lower(modname + ' - ' + desc), key) >= 0:
-                        callback(None, modname, desc)
-
-        for importer, modname, ispkg in pkgutil.walk_packages(onerror=onerror):
-            if self.quit:
-                break
-            if key is None:
-                callback(None, modname, '')
-            else:
-                loader = importer.find_module(modname)
-                if hasattr(loader,'get_source'):
-                    import StringIO
-                    desc = source_synopsis(
-                        StringIO.StringIO(loader.get_source(modname))
-                    ) or ''
-                    if hasattr(loader,'get_filename'):
-                        path = loader.get_filename(modname)
-                    else:
-                        path = None
-                else:
-                    module = loader.load_module(modname)
-                    desc = (module.__doc__ or '').splitlines()[0]
-                    path = getattr(module,'__file__',None)
-                if find(lower(modname + ' - ' + desc), key) >= 0:
-                    callback(path, modname, desc)
-
-        if completer:
-            completer()
-
-def apropos(key):
-    """Print all the one-line module summaries that contain a substring."""
-    def callback(path, modname, desc):
-        if modname[-9:] == '.__init__':
-            modname = modname[:-9] + ' (package)'
-        print modname, desc and '- ' + desc
-    try: import warnings
-    except ImportError: pass
-    else: warnings.filterwarnings('ignore') # ignore problems during import
-    ModuleScanner().run(callback, key)
-
-# --------------------------------------------------- web browser interface
-
-def serve(port, callback=None, completer=None):
-    import BaseHTTPServer, mimetools, select
-
-    # Patch up mimetools.Message so it doesn't break if rfc822 is reloaded.
-    class Message(mimetools.Message):
-        def __init__(self, fp, seekable=1):
-            Message = self.__class__
-            Message.__bases__[0].__bases__[0].__init__(self, fp, seekable)
-            self.encodingheader = self.getheader('content-transfer-encoding')
-            self.typeheader = self.getheader('content-type')
-            self.parsetype()
-            self.parseplist()
-
-    class DocHandler(BaseHTTPServer.BaseHTTPRequestHandler):
-        def send_document(self, title, contents):
-            try:
-                self.send_response(200)
-                self.send_header('Content-Type', 'text/html')
-                self.end_headers()
-                self.wfile.write(html.page(title, contents))
-            except IOError: pass
-
-        def do_GET(self):
-            path = self.path
-            if path[-5:] == '.html': path = path[:-5]
-            if path[:1] == '/': path = path[1:]
-            if path and path != '.':
-                try:
-                    obj = locate(path, forceload=1)
-                except ErrorDuringImport, value:
-                    self.send_document(path, html.escape(str(value)))
-                    return
-                if obj:
-                    self.send_document(describe(obj), html.document(obj, path))
-                else:
-                    self.send_document(path,
-'no Python documentation found for %s' % repr(path))
-            else:
-                heading = html.heading(
-'<big><big><strong>Python: Index of Modules</strong></big></big>',
-'#ffffff', '#7799ee')
-                def bltinlink(name):
-                    return '<a href="%s.html">%s</a>' % (name, name)
-                names = filter(lambda x: x != '__main__',
-                               sys.builtin_module_names)
-                contents = html.multicolumn(names, bltinlink)
-                indices = ['<p>' + html.bigsection(
-                    'Built-in Modules', '#ffffff', '#ee77aa', contents)]
-
-                seen = {}
-                for dir in sys.path:
-                    indices.append(html.index(dir, seen))
-                contents = heading + join(indices) + '''<p align=right>
-<font color="#909090" face="helvetica, arial"><strong>
-pydoc</strong> by Ka-Ping Yee &lt;ping@lfw.org&gt;</font>'''
-                self.send_document('Index of Modules', contents)
-
-        def log_message(self, *args): pass
-
-    class DocServer(BaseHTTPServer.HTTPServer):
-        def __init__(self, port, callback):
-            host = 'localhost'
-            self.address = (host, port)
-            self.url = 'http://%s:%d/' % (host, port)
-            self.callback = callback
-            self.base.__init__(self, self.address, self.handler)
-
-        def serve_until_quit(self):
-            import select
-            self.quit = False
-            while not self.quit:
-                rd, wr, ex = select.select([self.socket.fileno()], [], [], 1)
-                if rd: self.handle_request()
-
-        def server_activate(self):
-            self.base.server_activate(self)
-            if self.callback: self.callback(self)
-
-    DocServer.base = BaseHTTPServer.HTTPServer
-    DocServer.handler = DocHandler
-    DocHandler.MessageClass = Message
-    try:
-        try:
-            DocServer(port, callback).serve_until_quit()
-        except (KeyboardInterrupt, select.error):
-            pass
-    finally:
-        if completer: completer()
-
-# ----------------------------------------------------- graphical interface
-
-def gui():
-    """Graphical interface (starts web server and pops up a control window)."""
-    class GUI:
-        def __init__(self, window, port=7464):
-            self.window = window
-            self.server = None
-            self.scanner = None
-
-            import Tkinter
-            self.server_frm = Tkinter.Frame(window)
-            self.title_lbl = Tkinter.Label(self.server_frm,
-                text='Starting server...\n ')
-            self.open_btn = Tkinter.Button(self.server_frm,
-                text='open browser', command=self.open, state='disabled')
-            self.quit_btn = Tkinter.Button(self.server_frm,
-                text='quit serving', command=self.quit, state='disabled')
-
-            self.search_frm = Tkinter.Frame(window)
-            self.search_lbl = Tkinter.Label(self.search_frm, text='Search for')
-            self.search_ent = Tkinter.Entry(self.search_frm)
-            self.search_ent.bind('<Return>', self.search)
-            self.stop_btn = Tkinter.Button(self.search_frm,
-                text='stop', pady=0, command=self.stop, state='disabled')
-            if sys.platform == 'win32':
-                # Trying to hide and show this button crashes under Windows.
-                self.stop_btn.pack(side='right')
-
-            self.window.title('pydoc')
-            self.window.protocol('WM_DELETE_WINDOW', self.quit)
-            self.title_lbl.pack(side='top', fill='x')
-            self.open_btn.pack(side='left', fill='x', expand=1)
-            self.quit_btn.pack(side='right', fill='x', expand=1)
-            self.server_frm.pack(side='top', fill='x')
-
-            self.search_lbl.pack(side='left')
-            self.search_ent.pack(side='right', fill='x', expand=1)
-            self.search_frm.pack(side='top', fill='x')
-            self.search_ent.focus_set()
-
-            font = ('helvetica', sys.platform == 'win32' and 8 or 10)
-            self.result_lst = Tkinter.Listbox(window, font=font, height=6)
-            self.result_lst.bind('<Button-1>', self.select)
-            self.result_lst.bind('<Double-Button-1>', self.goto)
-            self.result_scr = Tkinter.Scrollbar(window,
-                orient='vertical', command=self.result_lst.yview)
-            self.result_lst.config(yscrollcommand=self.result_scr.set)
-
-            self.result_frm = Tkinter.Frame(window)
-            self.goto_btn = Tkinter.Button(self.result_frm,
-                text='go to selected', command=self.goto)
-            self.hide_btn = Tkinter.Button(self.result_frm,
-                text='hide results', command=self.hide)
-            self.goto_btn.pack(side='left', fill='x', expand=1)
-            self.hide_btn.pack(side='right', fill='x', expand=1)
-
-            self.window.update()
-            self.minwidth = self.window.winfo_width()
-            self.minheight = self.window.winfo_height()
-            self.bigminheight = (self.server_frm.winfo_reqheight() +
-                                 self.search_frm.winfo_reqheight() +
-                                 self.result_lst.winfo_reqheight() +
-                                 self.result_frm.winfo_reqheight())
-            self.bigwidth, self.bigheight = self.minwidth, self.bigminheight
-            self.expanded = 0
-            self.window.wm_geometry('%dx%d' % (self.minwidth, self.minheight))
-            self.window.wm_minsize(self.minwidth, self.minheight)
-            self.window.tk.willdispatch()
-
-            import threading
-            threading.Thread(
-                target=serve, args=(port, self.ready, self.quit)).start()
-
-        def ready(self, server):
-            self.server = server
-            self.title_lbl.config(
-                text='Python documentation server at\n' + server.url)
-            self.open_btn.config(state='normal')
-            self.quit_btn.config(state='normal')
-
-        def open(self, event=None, url=None):
-            url = url or self.server.url
-            try:
-                import webbrowser
-                webbrowser.open(url)
-            except ImportError: # pre-webbrowser.py compatibility
-                if sys.platform == 'win32':
-                    os.system('start "%s"' % url)
-                else:
-                    rc = os.system('netscape -remote "openURL(%s)" &' % url)
-                    if rc: os.system('netscape "%s" &' % url)
-
-        def quit(self, event=None):
-            if self.server:
-                self.server.quit = 1
-            self.window.quit()
-
-        def search(self, event=None):
-            key = self.search_ent.get()
-            self.stop_btn.pack(side='right')
-            self.stop_btn.config(state='normal')
-            self.search_lbl.config(text='Searching for "%s"...' % key)
-            self.search_ent.forget()
-            self.search_lbl.pack(side='left')
-            self.result_lst.delete(0, 'end')
-            self.goto_btn.config(state='disabled')
-            self.expand()
-
-            import threading
-            if self.scanner:
-                self.scanner.quit = 1
-            self.scanner = ModuleScanner()
-            threading.Thread(target=self.scanner.run,
-                             args=(self.update, key, self.done)).start()
-
-        def update(self, path, modname, desc):
-            if modname[-9:] == '.__init__':
-                modname = modname[:-9] + ' (package)'
-            self.result_lst.insert('end',
-                modname + ' - ' + (desc or '(no description)'))
-
-        def stop(self, event=None):
-            if self.scanner:
-                self.scanner.quit = 1
-                self.scanner = None
-
-        def done(self):
-            self.scanner = None
-            self.search_lbl.config(text='Search for')
-            self.search_lbl.pack(side='left')
-            self.search_ent.pack(side='right', fill='x', expand=1)
-            if sys.platform != 'win32': self.stop_btn.forget()
-            self.stop_btn.config(state='disabled')
-
-        def select(self, event=None):
-            self.goto_btn.config(state='normal')
-
-        def goto(self, event=None):
-            selection = self.result_lst.curselection()
-            if selection:
-                modname = split(self.result_lst.get(selection[0]))[0]
-                self.open(url=self.server.url + modname + '.html')
-
-        def collapse(self):
-            if not self.expanded: return
-            self.result_frm.forget()
-            self.result_scr.forget()
-            self.result_lst.forget()
-            self.bigwidth = self.window.winfo_width()
-            self.bigheight = self.window.winfo_height()
-            self.window.wm_geometry('%dx%d' % (self.minwidth, self.minheight))
-            self.window.wm_minsize(self.minwidth, self.minheight)
-            self.expanded = 0
-
-        def expand(self):
-            if self.expanded: return
-            self.result_frm.pack(side='bottom', fill='x')
-            self.result_scr.pack(side='right', fill='y')
-            self.result_lst.pack(side='top', fill='both', expand=1)
-            self.window.wm_geometry('%dx%d' % (self.bigwidth, self.bigheight))
-            self.window.wm_minsize(self.minwidth, self.bigminheight)
-            self.expanded = 1
-
-        def hide(self, event=None):
-            self.stop()
-            self.collapse()
-
-    import Tkinter
-    try:
-        root = Tkinter.Tk()
-        # Tk will crash if pythonw.exe has an XP .manifest
-        # file and the root has is not destroyed explicitly.
-        # If the problem is ever fixed in Tk, the explicit
-        # destroy can go.
-        try:
-            gui = GUI(root)
-            root.mainloop()
-        finally:
-            root.destroy()
-    except KeyboardInterrupt:
-        pass
-
-# -------------------------------------------------- command-line interface
-
-def ispath(x):
-    return isinstance(x, str) and find(x, os.sep) >= 0
-
-def cli():
-    """Command-line interface (looks at sys.argv to decide what to do)."""
-    import getopt
-    class BadUsage: pass
-
-    # Scripts don't get the current directory in their path by default
-    # unless they are run with the '-m' switch
-    if '' not in sys.path:
-        scriptdir = os.path.dirname(sys.argv[0])
-        if scriptdir in sys.path:
-            sys.path.remove(scriptdir)
-        sys.path.insert(0, '.')
-
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'gk:p:w')
-        writing = 0
-
-        for opt, val in opts:
-            if opt == '-g':
-                gui()
-                return
-            if opt == '-k':
-                apropos(val)
-                return
-            if opt == '-p':
-                try:
-                    port = int(val)
-                except ValueError:
-                    raise BadUsage
-                def ready(server):
-                    print 'pydoc server ready at %s' % server.url
-                def stopped():
-                    print 'pydoc server stopped'
-                serve(port, ready, stopped)
-                return
-            if opt == '-w':
-                writing = 1
-
-        if not args: raise BadUsage
-        for arg in args:
-            if ispath(arg) and not os.path.exists(arg):
-                print 'file %r does not exist' % arg
-                break
-            try:
-                if ispath(arg) and os.path.isfile(arg):
-                    arg = importfile(arg)
-                if writing:
-                    if ispath(arg) and os.path.isdir(arg):
-                        writedocs(arg)
-                    else:
-                        writedoc(arg)
-                else:
-                    help.help(arg)
-            except ErrorDuringImport, value:
-                print value
-
-    except (getopt.error, BadUsage):
-        cmd = os.path.basename(sys.argv[0])
-        print """pydoc - the Python documentation tool
-
-%s <name> ...
-    Show text documentation on something.  <name> may be the name of a
-    Python keyword, topic, function, module, or package, or a dotted
-    reference to a class or function within a module or module in a
-    package.  If <name> contains a '%s', it is used as the path to a
-    Python source file to document. If name is 'keywords', 'topics',
-    or 'modules', a listing of these things is displayed.
-
-%s -k <keyword>
-    Search for a keyword in the synopsis lines of all available modules.
-
-%s -p <port>
-    Start an HTTP server on the given port on the local machine.
-
-%s -g
-    Pop up a graphical interface for finding and serving documentation.
-
-%s -w <name> ...
-    Write out the HTML documentation for a module to a file in the current
-    directory.  If <name> contains a '%s', it is treated as a filename; if
-    it names a directory, documentation is written for all the contents.
-""" % (cmd, os.sep, cmd, cmd, cmd, cmd, os.sep)
-
-if __name__ == '__main__': cli()
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Lib/site.py b/AppPkg/Applications/Python/PyMod-2.7.2/Lib/site.py
deleted file mode 100644
index 5525d4a..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Lib/site.py
+++ /dev/null
@@ -1,537 +0,0 @@
-"""Append module search paths for third-party packages to sys.path.
-
-****************************************************************
-* This module is automatically imported during initialization. *
-****************************************************************
-
-This is a UEFI-specific version of site.py.
-
-In earlier versions of Python (up to 1.5a3), scripts or modules that
-needed to use site-specific modules would place ``import site''
-somewhere near the top of their code.  Because of the automatic
-import, this is no longer necessary (but code that does it still
-works).
-
-This will append site-specific paths to the module search path.  It
-starts with sys.prefix and sys.exec_prefix (if different) and appends
-lib/python<version>/site-packages as well as lib/site-python.
-The resulting directories, if they exist, are appended to sys.path,
-and also inspected for path configuration files.
-
-A path configuration file is a file whose name has the form
-<package>.pth; its contents are additional directories (one per line)
-to be added to sys.path.  Non-existing directories (or
-non-directories) are never added to sys.path; no directory is added to
-sys.path more than once.  Blank lines and lines beginning with
-'#' are skipped. Lines starting with 'import' are executed.
-
-For example, suppose sys.prefix and sys.exec_prefix are set to
-/Efi/StdLib and there is a directory /Efi/StdLib/lib/python2.7/site-packages
-with three subdirectories, foo, bar and spam, and two path
-configuration files, foo.pth and bar.pth.  Assume foo.pth contains the
-following:
-
-  # foo package configuration
-  foo
-  bar
-  bletch
-
-and bar.pth contains:
-
-  # bar package configuration
-  bar
-
-Then the following directories are added to sys.path, in this order:
-
-  /Efi/StdLib/lib/python2.7/site-packages/bar
-  /Efi/StdLib/lib/python2.7/site-packages/foo
-
-Note that bletch is omitted because it doesn't exist; bar precedes foo
-because bar.pth comes alphabetically before foo.pth; and spam is
-omitted because it is not mentioned in either path configuration file.
-
-After these path manipulations, an attempt is made to import a module
-named sitecustomize, which can perform arbitrary additional
-site-specific customizations.  If this import fails with an
-ImportError exception, it is silently ignored.
-
-Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
-This program and the accompanying materials are licensed and made available under
-the terms and conditions of the BSD License that accompanies this distribution.
-The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-"""
-
-import sys
-import os
-import __builtin__
-import traceback
-
-# Prefixes for site-packages; add additional prefixes like /usr/local here
-PREFIXES = [sys.prefix, sys.exec_prefix]
-# Enable per user site-packages directory
-# set it to False to disable the feature or True to force the feature
-ENABLE_USER_SITE = False
-
-# for distutils.commands.install
-# These values are initialized by the getuserbase() and getusersitepackages()
-# functions, through the main() function when Python starts.
-USER_SITE = None
-USER_BASE = None
-
-
-def makepath(*paths):
-    dir = os.path.join(*paths)
-    try:
-        dir = os.path.abspath(dir)
-    except OSError:
-        pass
-    return dir, os.path.normcase(dir)
-
-
-def abs__file__():
-    """Set all module' __file__ attribute to an absolute path"""
-    for m in sys.modules.values():
-        if hasattr(m, '__loader__'):
-            continue   # don't mess with a PEP 302-supplied __file__
-        try:
-            m.__file__ = os.path.abspath(m.__file__)
-        except (AttributeError, OSError):
-            pass
-
-
-def removeduppaths():
-    """ Remove duplicate entries from sys.path along with making them
-    absolute"""
-    # This ensures that the initial path provided by the interpreter contains
-    # only absolute pathnames, even if we're running from the build directory.
-    L = []
-    known_paths = set()
-    for dir in sys.path:
-        # Filter out duplicate paths (on case-insensitive file systems also
-        # if they only differ in case); turn relative paths into absolute
-        # paths.
-        dir, dircase = makepath(dir)
-        if not dircase in known_paths:
-            L.append(dir)
-            known_paths.add(dircase)
-    sys.path[:] = L
-    return known_paths
-
-
-def _init_pathinfo():
-    """Return a set containing all existing directory entries from sys.path"""
-    d = set()
-    for dir in sys.path:
-        try:
-            if os.path.isdir(dir):
-                dir, dircase = makepath(dir)
-                d.add(dircase)
-        except TypeError:
-            continue
-    return d
-
-
-def addpackage(sitedir, name, known_paths):
-    """Process a .pth file within the site-packages directory:
-       For each line in the file, either combine it with sitedir to a path
-       and add that to known_paths, or execute it if it starts with 'import '.
-    """
-    if known_paths is None:
-        _init_pathinfo()
-        reset = 1
-    else:
-        reset = 0
-    fullname = os.path.join(sitedir, name)
-    try:
-        f = open(fullname, "rU")
-    except IOError:
-        return
-    with f:
-        for n, line in enumerate(f):
-            if line.startswith("#"):
-                continue
-            try:
-                if line.startswith(("import ", "import\t")):
-                    exec line
-                    continue
-                line = line.rstrip()
-                dir, dircase = makepath(sitedir, line)
-                if not dircase in known_paths and os.path.exists(dir):
-                    sys.path.append(dir)
-                    known_paths.add(dircase)
-            except Exception as err:
-                print >>sys.stderr, "Error processing line {:d} of {}:\n".format(
-                    n+1, fullname)
-                for record in traceback.format_exception(*sys.exc_info()):
-                    for line in record.splitlines():
-                        print >>sys.stderr, '  '+line
-                print >>sys.stderr, "\nRemainder of file ignored"
-                break
-    if reset:
-        known_paths = None
-    return known_paths
-
-
-def addsitedir(sitedir, known_paths=None):
-    """Add 'sitedir' argument to sys.path if missing and handle .pth files in
-    'sitedir'"""
-    if known_paths is None:
-        known_paths = _init_pathinfo()
-        reset = 1
-    else:
-        reset = 0
-    sitedir, sitedircase = makepath(sitedir)
-    if not sitedircase in known_paths:
-        sys.path.append(sitedir)        # Add path component
-    try:
-        names = os.listdir(sitedir)
-    except os.error:
-        return
-    dotpth = os.extsep + "pth"
-    names = [name for name in names if name.endswith(dotpth)]
-    for name in sorted(names):
-        addpackage(sitedir, name, known_paths)
-    if reset:
-        known_paths = None
-    return known_paths
-
-
-def check_enableusersite():
-    """Check if user site directory is safe for inclusion
-
-    The function tests for the command line flag (including environment var),
-    process uid/gid equal to effective uid/gid.
-
-    None: Disabled for security reasons
-    False: Disabled by user (command line option)
-    True: Safe and enabled
-    """
-    if sys.flags.no_user_site:
-        return False
-
-    if hasattr(os, "getuid") and hasattr(os, "geteuid"):
-        # check process uid == effective uid
-        if os.geteuid() != os.getuid():
-            return None
-    if hasattr(os, "getgid") and hasattr(os, "getegid"):
-        # check process gid == effective gid
-        if os.getegid() != os.getgid():
-            return None
-
-    return True
-
-def getuserbase():
-    """Returns the `user base` directory path.
-
-    The `user base` directory can be used to store data. If the global
-    variable ``USER_BASE`` is not initialized yet, this function will also set
-    it.
-    """
-    global USER_BASE
-    if USER_BASE is not None:
-        return USER_BASE
-    from sysconfig import get_config_var
-    USER_BASE = get_config_var('userbase')
-    return USER_BASE
-
-def getusersitepackages():
-    """Returns the user-specific site-packages directory path.
-
-    If the global variable ``USER_SITE`` is not initialized yet, this
-    function will also set it.
-    """
-    global USER_SITE
-    user_base = getuserbase() # this will also set USER_BASE
-
-    if USER_SITE is not None:
-        return USER_SITE
-
-    from sysconfig import get_path
-    import os
-
-    USER_SITE = get_path('purelib', '%s_user' % os.name)
-    return USER_SITE
-
-def addusersitepackages(known_paths):
-    """Add a per user site-package to sys.path
-
-    Each user has its own python directory with site-packages in the
-    home directory.
-    """
-    # get the per user site-package path
-    # this call will also make sure USER_BASE and USER_SITE are set
-    user_site = getusersitepackages()
-
-    if ENABLE_USER_SITE and os.path.isdir(user_site):
-        addsitedir(user_site, known_paths)
-    return known_paths
-
-def getsitepackages():
-    """Returns a list containing all global site-packages directories
-    (and possibly site-python).
-
-    For each directory present in the global ``PREFIXES``, this function
-    will find its `site-packages` subdirectory depending on the system
-    environment, and will return a list of full paths.
-    """
-    sitepackages = []
-    seen = set()
-
-    for prefix in PREFIXES:
-        if not prefix or prefix in seen:
-            continue
-        seen.add(prefix)
-
-        sitepackages.append(os.path.join(prefix, "lib",
-                                    "python." + sys.version[0] + sys.version[2],
-                                    "site-packages"))
-        sitepackages.append(os.path.join(prefix, "lib", "site-python"))
-    return sitepackages
-
-def addsitepackages(known_paths):
-    """Add site-packages (and possibly site-python) to sys.path"""
-    for sitedir in getsitepackages():
-        if os.path.isdir(sitedir):
-            addsitedir(sitedir, known_paths)
-
-    return known_paths
-
-def setBEGINLIBPATH():
-    """The UEFI port has optional extension modules that do double duty
-    as DLLs (even though they have .efi file extensions) for other extensions.
-    The library search path needs to be amended so these will be found
-    during module import.  Use BEGINLIBPATH so that these are at the start
-    of the library search path.
-
-    """
-    dllpath = os.path.join(sys.prefix, "Lib", "lib-dynload")
-    libpath = os.environ['BEGINLIBPATH'].split(os.path.pathsep)
-    if libpath[-1]:
-        libpath.append(dllpath)
-    else:
-        libpath[-1] = dllpath
-    os.environ['BEGINLIBPATH'] = os.path.pathsep.join(libpath)
-
-
-def setquit():
-    """Define new builtins 'quit' and 'exit'.
-
-    These are objects which make the interpreter exit when called.
-    The repr of each object contains a hint at how it works.
-
-    """
-    eof = 'Ctrl-D (i.e. EOF)'
-
-    class Quitter(object):
-        def __init__(self, name):
-            self.name = name
-        def __repr__(self):
-            return 'Use %s() or %s to exit' % (self.name, eof)
-        def __call__(self, code=None):
-            # Shells like IDLE catch the SystemExit, but listen when their
-            # stdin wrapper is closed.
-            try:
-                sys.stdin.close()
-            except:
-                pass
-            raise SystemExit(code)
-    __builtin__.quit = Quitter('quit')
-    __builtin__.exit = Quitter('exit')
-
-
-class _Printer(object):
-    """interactive prompt objects for printing the license text, a list of
-    contributors and the copyright notice."""
-
-    MAXLINES = 23
-
-    def __init__(self, name, data, files=(), dirs=()):
-        self.__name = name
-        self.__data = data
-        self.__files = files
-        self.__dirs = dirs
-        self.__lines = None
-
-    def __setup(self):
-        if self.__lines:
-            return
-        data = None
-        for dir in self.__dirs:
-            for filename in self.__files:
-                filename = os.path.join(dir, filename)
-                try:
-                    fp = file(filename, "rU")
-                    data = fp.read()
-                    fp.close()
-                    break
-                except IOError:
-                    pass
-            if data:
-                break
-        if not data:
-            data = self.__data
-        self.__lines = data.split('\n')
-        self.__linecnt = len(self.__lines)
-
-    def __repr__(self):
-        self.__setup()
-        if len(self.__lines) <= self.MAXLINES:
-            return "\n".join(self.__lines)
-        else:
-            return "Type %s() to see the full %s text" % ((self.__name,)*2)
-
-    def __call__(self):
-        self.__setup()
-        prompt = 'Hit Return for more, or q (and Return) to quit: '
-        lineno = 0
-        while 1:
-            try:
-                for i in range(lineno, lineno + self.MAXLINES):
-                    print self.__lines[i]
-            except IndexError:
-                break
-            else:
-                lineno += self.MAXLINES
-                key = None
-                while key is None:
-                    key = raw_input(prompt)
-                    if key not in ('', 'q'):
-                        key = None
-                if key == 'q':
-                    break
-
-def setcopyright():
-    """Set 'copyright' and 'credits' in __builtin__"""
-    __builtin__.copyright = _Printer("copyright", sys.copyright)
-    __builtin__.credits = _Printer("credits", """\
-    Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
-    for supporting Python development.  See www.python.org for more information.""")
-    here = os.path.dirname(os.__file__)
-    __builtin__.license = _Printer(
-        "license", "See http://www.python.org/%.3s/license.html" % sys.version,
-        ["LICENSE.txt", "LICENSE"],
-        [os.path.join(here, os.pardir), here, os.curdir])
-
-
-class _Helper(object):
-    """Define the builtin 'help'.
-    This is a wrapper around pydoc.help (with a twist).
-
-    """
-
-    def __repr__(self):
-        return "Type help() for interactive help, " \
-               "or help(object) for help about object."
-
-    def __call__(self, *args, **kwds):
-        import pydoc
-        return pydoc.help(*args, **kwds)
-
-def sethelper():
-    __builtin__.help = _Helper()
-
-####
-# Keep around for future mbcs support.
-####
-#def aliasmbcs():
-#    """On Windows, some default encodings are not provided by Python,
-#    while they are always available as "mbcs" in each locale. Make
-#    them usable by aliasing to "mbcs" in such a case."""
-#    if sys.platform == 'win32':
-#        import locale, codecs
-#        enc = locale.getdefaultlocale()[1]
-#        if enc.startswith('cp'):            # "cp***" ?
-#            try:
-#                codecs.lookup(enc)
-#            except LookupError:
-#                import encodings
-#                encodings._cache[enc] = encodings._unknown
-#                encodings.aliases.aliases[enc] = 'mbcs'
-
-def setencoding():
-    """Set the string encoding used by the Unicode implementation.  The
-    default is 'ascii', but if you're willing to experiment, you can
-    change this."""
-    encoding = "ascii" # Default value set by _PyUnicode_Init()
-    if 0:
-        # Enable to support locale aware default string encodings.
-        import locale
-        loc = locale.getdefaultlocale()
-        if loc[1]:
-            encoding = loc[1]
-    if 0:
-        # Enable to switch off string to Unicode coercion and implicit
-        # Unicode to string conversion.
-        encoding = "undefined"
-    if encoding != "ascii":
-        # On Non-Unicode builds this will raise an AttributeError...
-        sys.setdefaultencoding(encoding) # Needs Python Unicode build !
-
-
-def execsitecustomize():
-    """Run custom site specific code, if available."""
-    try:
-        import sitecustomize
-    except ImportError:
-        pass
-    except Exception:
-        if sys.flags.verbose:
-            sys.excepthook(*sys.exc_info())
-        else:
-            print >>sys.stderr, \
-                "'import sitecustomize' failed; use -v for traceback"
-
-
-def execusercustomize():
-    """Run custom user specific code, if available."""
-    try:
-        import usercustomize
-    except ImportError:
-        pass
-    except Exception:
-        if sys.flags.verbose:
-            sys.excepthook(*sys.exc_info())
-        else:
-            print>>sys.stderr, \
-                "'import usercustomize' failed; use -v for traceback"
-
-
-def main():
-    abs__file__()
-    known_paths = removeduppaths()
-    known_paths = addsitepackages(known_paths)
-    setquit()
-    setcopyright()
-    sethelper()
-#    aliasmbcs()
-    setencoding()
-    execsitecustomize()
-    # Remove sys.setdefaultencoding() so that users cannot change the
-    # encoding after initialization.  The test for presence is needed when
-    # this module is run as a script, because this code is executed twice.
-    if hasattr(sys, "setdefaultencoding"):
-        del sys.setdefaultencoding
-
-main()
-
-def _script():
-    help = """\
-    %s
-
-    Path elements are normally separated by '%s'.
-    """
-    print "sys.path = ["
-    for dir in sys.path:
-        print "    %r," % (dir,)
-    print "]"
-
-    import textwrap
-    print textwrap.dedent(help % (sys.argv[0], os.pathsep))
-    sys.exit(0)
-
-if __name__ == '__main__':
-    _script()
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/_sre.c b/AppPkg/Applications/Python/PyMod-2.7.2/Modules/_sre.c
deleted file mode 100644
index 3bad991..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/_sre.c
+++ /dev/null
@@ -1,3921 +0,0 @@
-/*
- * Secret Labs' Regular Expression Engine
- *
- * regular expression matching engine
-
-    Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
- *
- * partial history:
- * 1999-10-24 fl  created (based on existing template matcher code)
- * 2000-03-06 fl  first alpha, sort of
- * 2000-08-01 fl  fixes for 1.6b1
- * 2000-08-07 fl  use PyOS_CheckStack() if available
- * 2000-09-20 fl  added expand method
- * 2001-03-20 fl  lots of fixes for 2.1b2
- * 2001-04-15 fl  export copyright as Python attribute, not global
- * 2001-04-28 fl  added __copy__ methods (work in progress)
- * 2001-05-14 fl  fixes for 1.5.2 compatibility
- * 2001-07-01 fl  added BIGCHARSET support (from Martin von Loewis)
- * 2001-10-18 fl  fixed group reset issue (from Matthew Mueller)
- * 2001-10-20 fl  added split primitive; reenable unicode for 1.6/2.0/2.1
- * 2001-10-21 fl  added sub/subn primitive
- * 2001-10-24 fl  added finditer primitive (for 2.2 only)
- * 2001-12-07 fl  fixed memory leak in sub/subn (Guido van Rossum)
- * 2002-11-09 fl  fixed empty sub/subn return type
- * 2003-04-18 mvl fully support 4-byte codes
- * 2003-10-17 gn  implemented non recursive scheme
- *
- * Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
- *
- * This version of the SRE library can be redistributed under CNRI's
- * Python 1.6 license.  For any other use, please contact Secret Labs
- * AB (info@pythonware.com).
- *
- * Portions of this engine have been developed in cooperation with
- * CNRI.  Hewlett-Packard provided funding for 1.6 integration and
- * other compatibility work.
- */
-
-/* Get rid of these macros to prevent collisions between EFI and Python in this file. */
-#undef  RETURN_ERROR
-#undef  RETURN_SUCCESS
-
-#ifndef SRE_RECURSIVE
-
-static char copyright[] =
-    " SRE 2.2.2 Copyright (c) 1997-2002 by Secret Labs AB ";
-
-#define PY_SSIZE_T_CLEAN
-
-#include "Python.h"
-#include "structmember.h" /* offsetof */
-
-#include "sre.h"
-
-#include <ctype.h>
-
-/* name of this module, minus the leading underscore */
-#if !defined(SRE_MODULE)
-#define SRE_MODULE "sre"
-#endif
-
-#define SRE_PY_MODULE "re"
-
-/* defining this one enables tracing */
-#undef VERBOSE
-
-#if PY_VERSION_HEX >= 0x01060000
-#if PY_VERSION_HEX  < 0x02020000 || defined(Py_USING_UNICODE)
-/* defining this enables unicode support (default under 1.6a1 and later) */
-#define HAVE_UNICODE
-#endif
-#endif
-
-/* -------------------------------------------------------------------- */
-/* optional features */
-
-/* enables fast searching */
-#define USE_FAST_SEARCH
-
-/* enables aggressive inlining (always on for Visual C) */
-#undef USE_INLINE
-
-/* enables copy/deepcopy handling (work in progress) */
-#undef USE_BUILTIN_COPY
-
-#if PY_VERSION_HEX < 0x01060000
-#define PyObject_DEL(op) PyMem_DEL((op))
-#endif
-
-/* -------------------------------------------------------------------- */
-
-#if defined(_MSC_VER)
-#pragma optimize("gt", on) /* doesn't seem to make much difference... */
-#pragma warning(disable: 4710) /* who cares if functions are not inlined ;-) */
-/* fastest possible local call under MSVC */
-#define LOCAL(type) static __inline type __fastcall
-#elif defined(USE_INLINE)
-#define LOCAL(type) static inline type
-#else
-#define LOCAL(type) static type
-#endif
-
-/* error codes */
-#define SRE_ERROR_ILLEGAL -1 /* illegal opcode */
-#define SRE_ERROR_STATE -2 /* illegal state */
-#define SRE_ERROR_RECURSION_LIMIT -3 /* runaway recursion */
-#define SRE_ERROR_MEMORY -9 /* out of memory */
-#define SRE_ERROR_INTERRUPTED -10 /* signal handler raised exception */
-
-#if defined(VERBOSE)
-#define TRACE(v) printf v
-#else
-#define TRACE(v)
-#endif
-
-/* -------------------------------------------------------------------- */
-/* search engine state */
-
-/* default character predicates (run sre_chars.py to regenerate tables) */
-
-#define SRE_DIGIT_MASK 1
-#define SRE_SPACE_MASK 2
-#define SRE_LINEBREAK_MASK 4
-#define SRE_ALNUM_MASK 8
-#define SRE_WORD_MASK 16
-
-/* FIXME: this assumes ASCII.  create tables in init_sre() instead */
-
-static char sre_char_info[128] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 2,
-2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25, 25, 25, 25, 25, 25,
-25, 25, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0,
-0, 0, 16, 0, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0 };
-
-static char sre_char_lower[128] = { 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, 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, 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 };
-
-#define SRE_IS_DIGIT(ch)\
-    ((ch) < 128 ? (sre_char_info[(ch)] & SRE_DIGIT_MASK) : 0)
-#define SRE_IS_SPACE(ch)\
-    ((ch) < 128 ? (sre_char_info[(ch)] & SRE_SPACE_MASK) : 0)
-#define SRE_IS_LINEBREAK(ch)\
-    ((ch) < 128 ? (sre_char_info[(ch)] & SRE_LINEBREAK_MASK) : 0)
-#define SRE_IS_ALNUM(ch)\
-    ((ch) < 128 ? (sre_char_info[(ch)] & SRE_ALNUM_MASK) : 0)
-#define SRE_IS_WORD(ch)\
-    ((ch) < 128 ? (sre_char_info[(ch)] & SRE_WORD_MASK) : 0)
-
-static unsigned int sre_lower(unsigned int ch)
-{
-    return ((ch) < 128 ? (unsigned int)sre_char_lower[ch] : ch);
-}
-
-/* locale-specific character predicates */
-/* !(c & ~N) == (c < N+1) for any unsigned c, this avoids
- * warnings when c's type supports only numbers < N+1 */
-#define SRE_LOC_IS_DIGIT(ch) (!((ch) & ~255) ? isdigit((ch)) : 0)
-#define SRE_LOC_IS_SPACE(ch) (!((ch) & ~255) ? isspace((ch)) : 0)
-#define SRE_LOC_IS_LINEBREAK(ch) ((ch) == '\n')
-#define SRE_LOC_IS_ALNUM(ch) (!((ch) & ~255) ? isalnum((ch)) : 0)
-#define SRE_LOC_IS_WORD(ch) (SRE_LOC_IS_ALNUM((ch)) || (ch) == '_')
-
-static unsigned int sre_lower_locale(unsigned int ch)
-{
-    return ((ch) < 256 ? (unsigned int)tolower((ch)) : ch);
-}
-
-/* unicode-specific character predicates */
-
-#if defined(HAVE_UNICODE)
-
-#define SRE_UNI_IS_DIGIT(ch) Py_UNICODE_ISDECIMAL((Py_UNICODE)(ch))
-#define SRE_UNI_IS_SPACE(ch) Py_UNICODE_ISSPACE((Py_UNICODE)(ch))
-#define SRE_UNI_IS_LINEBREAK(ch) Py_UNICODE_ISLINEBREAK((Py_UNICODE)(ch))
-#define SRE_UNI_IS_ALNUM(ch) Py_UNICODE_ISALNUM((Py_UNICODE)(ch))
-#define SRE_UNI_IS_WORD(ch) (SRE_UNI_IS_ALNUM((ch)) || (ch) == '_')
-
-static unsigned int sre_lower_unicode(unsigned int ch)
-{
-    return (unsigned int) Py_UNICODE_TOLOWER((Py_UNICODE)(ch));
-}
-
-#endif
-
-LOCAL(int)
-sre_category(SRE_CODE category, unsigned int ch)
-{
-    switch (category) {
-
-    case SRE_CATEGORY_DIGIT:
-        return SRE_IS_DIGIT(ch);
-    case SRE_CATEGORY_NOT_DIGIT:
-        return !SRE_IS_DIGIT(ch);
-    case SRE_CATEGORY_SPACE:
-        return SRE_IS_SPACE(ch);
-    case SRE_CATEGORY_NOT_SPACE:
-        return !SRE_IS_SPACE(ch);
-    case SRE_CATEGORY_WORD:
-        return SRE_IS_WORD(ch);
-    case SRE_CATEGORY_NOT_WORD:
-        return !SRE_IS_WORD(ch);
-    case SRE_CATEGORY_LINEBREAK:
-        return SRE_IS_LINEBREAK(ch);
-    case SRE_CATEGORY_NOT_LINEBREAK:
-        return !SRE_IS_LINEBREAK(ch);
-
-    case SRE_CATEGORY_LOC_WORD:
-        return SRE_LOC_IS_WORD(ch);
-    case SRE_CATEGORY_LOC_NOT_WORD:
-        return !SRE_LOC_IS_WORD(ch);
-
-#if defined(HAVE_UNICODE)
-    case SRE_CATEGORY_UNI_DIGIT:
-        return SRE_UNI_IS_DIGIT(ch);
-    case SRE_CATEGORY_UNI_NOT_DIGIT:
-        return !SRE_UNI_IS_DIGIT(ch);
-    case SRE_CATEGORY_UNI_SPACE:
-        return SRE_UNI_IS_SPACE(ch);
-    case SRE_CATEGORY_UNI_NOT_SPACE:
-        return !SRE_UNI_IS_SPACE(ch);
-    case SRE_CATEGORY_UNI_WORD:
-        return SRE_UNI_IS_WORD(ch);
-    case SRE_CATEGORY_UNI_NOT_WORD:
-        return !SRE_UNI_IS_WORD(ch);
-    case SRE_CATEGORY_UNI_LINEBREAK:
-        return SRE_UNI_IS_LINEBREAK(ch);
-    case SRE_CATEGORY_UNI_NOT_LINEBREAK:
-        return !SRE_UNI_IS_LINEBREAK(ch);
-#else
-    case SRE_CATEGORY_UNI_DIGIT:
-        return SRE_IS_DIGIT(ch);
-    case SRE_CATEGORY_UNI_NOT_DIGIT:
-        return !SRE_IS_DIGIT(ch);
-    case SRE_CATEGORY_UNI_SPACE:
-        return SRE_IS_SPACE(ch);
-    case SRE_CATEGORY_UNI_NOT_SPACE:
-        return !SRE_IS_SPACE(ch);
-    case SRE_CATEGORY_UNI_WORD:
-        return SRE_LOC_IS_WORD(ch);
-    case SRE_CATEGORY_UNI_NOT_WORD:
-        return !SRE_LOC_IS_WORD(ch);
-    case SRE_CATEGORY_UNI_LINEBREAK:
-        return SRE_IS_LINEBREAK(ch);
-    case SRE_CATEGORY_UNI_NOT_LINEBREAK:
-        return !SRE_IS_LINEBREAK(ch);
-#endif
-    }
-    return 0;
-}
-
-/* helpers */
-
-static void
-data_stack_dealloc(SRE_STATE* state)
-{
-    if (state->data_stack) {
-        PyMem_FREE(state->data_stack);
-        state->data_stack = NULL;
-    }
-    state->data_stack_size = state->data_stack_base = 0;
-}
-
-static int
-data_stack_grow(SRE_STATE* state, Py_ssize_t size)
-{
-    Py_ssize_t minsize, cursize;
-    minsize = state->data_stack_base+size;
-    cursize = state->data_stack_size;
-    if (cursize < minsize) {
-        void* stack;
-        cursize = minsize+minsize/4+1024;
-        TRACE(("allocate/grow stack %d\n", cursize));
-        stack = PyMem_REALLOC(state->data_stack, cursize);
-        if (!stack) {
-            data_stack_dealloc(state);
-            return SRE_ERROR_MEMORY;
-        }
-        state->data_stack = (char *)stack;
-        state->data_stack_size = cursize;
-    }
-    return 0;
-}
-
-/* generate 8-bit version */
-
-#define SRE_CHAR unsigned char
-#define SRE_AT sre_at
-#define SRE_COUNT sre_count
-#define SRE_CHARSET sre_charset
-#define SRE_INFO sre_info
-#define SRE_MATCH sre_match
-#define SRE_MATCH_CONTEXT sre_match_context
-#define SRE_SEARCH sre_search
-#define SRE_LITERAL_TEMPLATE sre_literal_template
-
-#if defined(HAVE_UNICODE)
-
-#define SRE_RECURSIVE
-#include "_sre.c"
-#undef SRE_RECURSIVE
-
-#undef SRE_LITERAL_TEMPLATE
-#undef SRE_SEARCH
-#undef SRE_MATCH
-#undef SRE_MATCH_CONTEXT
-#undef SRE_INFO
-#undef SRE_CHARSET
-#undef SRE_COUNT
-#undef SRE_AT
-#undef SRE_CHAR
-
-/* generate 16-bit unicode version */
-
-#define SRE_CHAR Py_UNICODE
-#define SRE_AT sre_uat
-#define SRE_COUNT sre_ucount
-#define SRE_CHARSET sre_ucharset
-#define SRE_INFO sre_uinfo
-#define SRE_MATCH sre_umatch
-#define SRE_MATCH_CONTEXT sre_umatch_context
-#define SRE_SEARCH sre_usearch
-#define SRE_LITERAL_TEMPLATE sre_uliteral_template
-#endif
-
-#endif /* SRE_RECURSIVE */
-
-/* -------------------------------------------------------------------- */
-/* String matching engine */
-
-/* the following section is compiled twice, with different character
-   settings */
-
-LOCAL(int)
-SRE_AT(SRE_STATE* state, SRE_CHAR* ptr, SRE_CODE at)
-{
-    /* check if pointer is at given position */
-
-    Py_ssize_t thisp, thatp;
-
-    switch (at) {
-
-    case SRE_AT_BEGINNING:
-    case SRE_AT_BEGINNING_STRING:
-        return ((void*) ptr == state->beginning);
-
-    case SRE_AT_BEGINNING_LINE:
-        return ((void*) ptr == state->beginning ||
-                SRE_IS_LINEBREAK((int) ptr[-1]));
-
-    case SRE_AT_END:
-        return (((void*) (ptr+1) == state->end &&
-                 SRE_IS_LINEBREAK((int) ptr[0])) ||
-                ((void*) ptr == state->end));
-
-    case SRE_AT_END_LINE:
-        return ((void*) ptr == state->end ||
-                SRE_IS_LINEBREAK((int) ptr[0]));
-
-    case SRE_AT_END_STRING:
-        return ((void*) ptr == state->end);
-
-    case SRE_AT_BOUNDARY:
-        if (state->beginning == state->end)
-            return 0;
-        thatp = ((void*) ptr > state->beginning) ?
-            SRE_IS_WORD((int) ptr[-1]) : 0;
-        thisp = ((void*) ptr < state->end) ?
-            SRE_IS_WORD((int) ptr[0]) : 0;
-        return thisp != thatp;
-
-    case SRE_AT_NON_BOUNDARY:
-        if (state->beginning == state->end)
-            return 0;
-        thatp = ((void*) ptr > state->beginning) ?
-            SRE_IS_WORD((int) ptr[-1]) : 0;
-        thisp = ((void*) ptr < state->end) ?
-            SRE_IS_WORD((int) ptr[0]) : 0;
-        return thisp == thatp;
-
-    case SRE_AT_LOC_BOUNDARY:
-        if (state->beginning == state->end)
-            return 0;
-        thatp = ((void*) ptr > state->beginning) ?
-            SRE_LOC_IS_WORD((int) ptr[-1]) : 0;
-        thisp = ((void*) ptr < state->end) ?
-            SRE_LOC_IS_WORD((int) ptr[0]) : 0;
-        return thisp != thatp;
-
-    case SRE_AT_LOC_NON_BOUNDARY:
-        if (state->beginning == state->end)
-            return 0;
-        thatp = ((void*) ptr > state->beginning) ?
-            SRE_LOC_IS_WORD((int) ptr[-1]) : 0;
-        thisp = ((void*) ptr < state->end) ?
-            SRE_LOC_IS_WORD((int) ptr[0]) : 0;
-        return thisp == thatp;
-
-#if defined(HAVE_UNICODE)
-    case SRE_AT_UNI_BOUNDARY:
-        if (state->beginning == state->end)
-            return 0;
-        thatp = ((void*) ptr > state->beginning) ?
-            SRE_UNI_IS_WORD((int) ptr[-1]) : 0;
-        thisp = ((void*) ptr < state->end) ?
-            SRE_UNI_IS_WORD((int) ptr[0]) : 0;
-        return thisp != thatp;
-
-    case SRE_AT_UNI_NON_BOUNDARY:
-        if (state->beginning == state->end)
-            return 0;
-        thatp = ((void*) ptr > state->beginning) ?
-            SRE_UNI_IS_WORD((int) ptr[-1]) : 0;
-        thisp = ((void*) ptr < state->end) ?
-            SRE_UNI_IS_WORD((int) ptr[0]) : 0;
-        return thisp == thatp;
-#endif
-
-    }
-
-    return 0;
-}
-
-LOCAL(int)
-SRE_CHARSET(SRE_CODE* set, SRE_CODE ch)
-{
-    /* check if character is a member of the given set */
-
-    int ok = 1;
-
-    for (;;) {
-        switch (*set++) {
-
-        case SRE_OP_FAILURE:
-            return !ok;
-
-        case SRE_OP_LITERAL:
-            /* <LITERAL> <code> */
-            if (ch == set[0])
-                return ok;
-            set++;
-            break;
-
-        case SRE_OP_CATEGORY:
-            /* <CATEGORY> <code> */
-            if (sre_category(set[0], (int) ch))
-                return ok;
-            set += 1;
-            break;
-
-        case SRE_OP_CHARSET:
-            if (sizeof(SRE_CODE) == 2) {
-                /* <CHARSET> <bitmap> (16 bits per code word) */
-                if (ch < 256 && (set[ch >> 4] & (1 << (ch & 15))))
-                    return ok;
-                set += 16;
-            }
-            else {
-                /* <CHARSET> <bitmap> (32 bits per code word) */
-                if (ch < 256 && (set[ch >> 5] & (1 << (ch & 31))))
-                    return ok;
-                set += 8;
-            }
-            break;
-
-        case SRE_OP_RANGE:
-            /* <RANGE> <lower> <upper> */
-            if (set[0] <= ch && ch <= set[1])
-                return ok;
-            set += 2;
-            break;
-
-        case SRE_OP_NEGATE:
-            ok = !ok;
-            break;
-
-        case SRE_OP_BIGCHARSET:
-            /* <BIGCHARSET> <blockcount> <256 blockindices> <blocks> */
-        {
-            Py_ssize_t count, block;
-            count = *(set++);
-
-            if (sizeof(SRE_CODE) == 2) {
-                block = ((unsigned char*)set)[ch >> 8];
-                set += 128;
-                if (set[block*16 + ((ch & 255)>>4)] & (1 << (ch & 15)))
-                    return ok;
-                set += count*16;
-            }
-            else {
-                /* !(c & ~N) == (c < N+1) for any unsigned c, this avoids
-                 * warnings when c's type supports only numbers < N+1 */
-                if (!(ch & ~65535))
-                    block = ((unsigned char*)set)[ch >> 8];
-                else
-                    block = -1;
-                set += 64;
-                if (block >=0 &&
-                    (set[block*8 + ((ch & 255)>>5)] & (1 << (ch & 31))))
-                    return ok;
-                set += count*8;
-            }
-            break;
-        }
-
-        default:
-            /* internal error -- there's not much we can do about it
-               here, so let's just pretend it didn't match... */
-            return 0;
-        }
-    }
-}
-
-LOCAL(Py_ssize_t) SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern);
-
-LOCAL(Py_ssize_t)
-SRE_COUNT(SRE_STATE* state, SRE_CODE* pattern, Py_ssize_t maxcount)
-{
-    SRE_CODE chr;
-    SRE_CHAR* ptr = (SRE_CHAR *)state->ptr;
-    SRE_CHAR* end = (SRE_CHAR *)state->end;
-    Py_ssize_t i;
-
-    /* adjust end */
-    if (maxcount < end - ptr && maxcount != 65535)
-        end = ptr + maxcount;
-
-    switch (pattern[0]) {
-
-    case SRE_OP_IN:
-        /* repeated set */
-        TRACE(("|%p|%p|COUNT IN\n", pattern, ptr));
-        while (ptr < end && SRE_CHARSET(pattern + 2, *ptr))
-            ptr++;
-        break;
-
-    case SRE_OP_ANY:
-        /* repeated dot wildcard. */
-        TRACE(("|%p|%p|COUNT ANY\n", pattern, ptr));
-        while (ptr < end && !SRE_IS_LINEBREAK(*ptr))
-            ptr++;
-        break;
-
-    case SRE_OP_ANY_ALL:
-        /* repeated dot wildcard.  skip to the end of the target
-           string, and backtrack from there */
-        TRACE(("|%p|%p|COUNT ANY_ALL\n", pattern, ptr));
-        ptr = end;
-        break;
-
-    case SRE_OP_LITERAL:
-        /* repeated literal */
-        chr = pattern[1];
-        TRACE(("|%p|%p|COUNT LITERAL %d\n", pattern, ptr, chr));
-        while (ptr < end && (SRE_CODE) *ptr == chr)
-            ptr++;
-        break;
-
-    case SRE_OP_LITERAL_IGNORE:
-        /* repeated literal */
-        chr = pattern[1];
-        TRACE(("|%p|%p|COUNT LITERAL_IGNORE %d\n", pattern, ptr, chr));
-        while (ptr < end && (SRE_CODE) state->lower(*ptr) == chr)
-            ptr++;
-        break;
-
-    case SRE_OP_NOT_LITERAL:
-        /* repeated non-literal */
-        chr = pattern[1];
-        TRACE(("|%p|%p|COUNT NOT_LITERAL %d\n", pattern, ptr, chr));
-        while (ptr < end && (SRE_CODE) *ptr != chr)
-            ptr++;
-        break;
-
-    case SRE_OP_NOT_LITERAL_IGNORE:
-        /* repeated non-literal */
-        chr = pattern[1];
-        TRACE(("|%p|%p|COUNT NOT_LITERAL_IGNORE %d\n", pattern, ptr, chr));
-        while (ptr < end && (SRE_CODE) state->lower(*ptr) != chr)
-            ptr++;
-        break;
-
-    default:
-        /* repeated single character pattern */
-        TRACE(("|%p|%p|COUNT SUBPATTERN\n", pattern, ptr));
-        while ((SRE_CHAR*) state->ptr < end) {
-            i = SRE_MATCH(state, pattern);
-            if (i < 0)
-                return i;
-            if (!i)
-                break;
-        }
-        TRACE(("|%p|%p|COUNT %d\n", pattern, ptr,
-               (SRE_CHAR*) state->ptr - ptr));
-        return (SRE_CHAR*) state->ptr - ptr;
-    }
-
-    TRACE(("|%p|%p|COUNT %d\n", pattern, ptr, ptr - (SRE_CHAR*) state->ptr));
-    return ptr - (SRE_CHAR*) state->ptr;
-}
-
-#if 0 /* not used in this release */
-LOCAL(int)
-SRE_INFO(SRE_STATE* state, SRE_CODE* pattern)
-{
-    /* check if an SRE_OP_INFO block matches at the current position.
-       returns the number of SRE_CODE objects to skip if successful, 0
-       if no match */
-
-    SRE_CHAR* end = state->end;
-    SRE_CHAR* ptr = state->ptr;
-    Py_ssize_t i;
-
-    /* check minimal length */
-    if (pattern[3] && (end - ptr) < pattern[3])
-        return 0;
-
-    /* check known prefix */
-    if (pattern[2] & SRE_INFO_PREFIX && pattern[5] > 1) {
-        /* <length> <skip> <prefix data> <overlap data> */
-        for (i = 0; i < pattern[5]; i++)
-            if ((SRE_CODE) ptr[i] != pattern[7 + i])
-                return 0;
-        return pattern[0] + 2 * pattern[6];
-    }
-    return pattern[0];
-}
-#endif
-
-/* The macros below should be used to protect recursive SRE_MATCH()
- * calls that *failed* and do *not* return immediately (IOW, those
- * that will backtrack). Explaining:
- *
- * - Recursive SRE_MATCH() returned true: that's usually a success
- *   (besides atypical cases like ASSERT_NOT), therefore there's no
- *   reason to restore lastmark;
- *
- * - Recursive SRE_MATCH() returned false but the current SRE_MATCH()
- *   is returning to the caller: If the current SRE_MATCH() is the
- *   top function of the recursion, returning false will be a matching
- *   failure, and it doesn't matter where lastmark is pointing to.
- *   If it's *not* the top function, it will be a recursive SRE_MATCH()
- *   failure by itself, and the calling SRE_MATCH() will have to deal
- *   with the failure by the same rules explained here (it will restore
- *   lastmark by itself if necessary);
- *
- * - Recursive SRE_MATCH() returned false, and will continue the
- *   outside 'for' loop: must be protected when breaking, since the next
- *   OP could potentially depend on lastmark;
- *
- * - Recursive SRE_MATCH() returned false, and will be called again
- *   inside a local for/while loop: must be protected between each
- *   loop iteration, since the recursive SRE_MATCH() could do anything,
- *   and could potentially depend on lastmark.
- *
- * For more information, check the discussion at SF patch #712900.
- */
-#define LASTMARK_SAVE()     \
-    do { \
-        ctx->lastmark = state->lastmark; \
-        ctx->lastindex = state->lastindex; \
-    } while (0)
-#define LASTMARK_RESTORE()  \
-    do { \
-        state->lastmark = ctx->lastmark; \
-        state->lastindex = ctx->lastindex; \
-    } while (0)
-
-#define RETURN_ERROR(i) do { return i; } while(0)
-#define RETURN_FAILURE do { ret = 0; goto exit; } while(0)
-#define RETURN_SUCCESS do { ret = 1; goto exit; } while(0)
-
-#define RETURN_ON_ERROR(i) \
-    do { if (i < 0) RETURN_ERROR(i); } while (0)
-#define RETURN_ON_SUCCESS(i) \
-    do { RETURN_ON_ERROR(i); if (i > 0) RETURN_SUCCESS; } while (0)
-#define RETURN_ON_FAILURE(i) \
-    do { RETURN_ON_ERROR(i); if (i == 0) RETURN_FAILURE; } while (0)
-
-#define SFY(x) #x
-
-#define DATA_STACK_ALLOC(state, type, ptr) \
-do { \
-    alloc_pos = state->data_stack_base; \
-    TRACE(("allocating %s in %d (%d)\n", \
-           SFY(type), alloc_pos, sizeof(type))); \
-    if (state->data_stack_size < alloc_pos+sizeof(type)) { \
-        int j = data_stack_grow(state, sizeof(type)); \
-        if (j < 0) return j; \
-        if (ctx_pos != -1) \
-            DATA_STACK_LOOKUP_AT(state, SRE_MATCH_CONTEXT, ctx, ctx_pos); \
-    } \
-    ptr = (type*)(state->data_stack+alloc_pos); \
-    state->data_stack_base += sizeof(type); \
-} while (0)
-
-#define DATA_STACK_LOOKUP_AT(state, type, ptr, pos) \
-do { \
-    TRACE(("looking up %s at %d\n", SFY(type), pos)); \
-    ptr = (type*)(state->data_stack+pos); \
-} while (0)
-
-#define DATA_STACK_PUSH(state, data, size) \
-do { \
-    TRACE(("copy data in %p to %d (%d)\n", \
-           data, state->data_stack_base, size)); \
-    if (state->data_stack_size < state->data_stack_base+size) { \
-        int j = data_stack_grow(state, size); \
-        if (j < 0) return j; \
-        if (ctx_pos != -1) \
-            DATA_STACK_LOOKUP_AT(state, SRE_MATCH_CONTEXT, ctx, ctx_pos); \
-    } \
-    memcpy(state->data_stack+state->data_stack_base, data, size); \
-    state->data_stack_base += size; \
-} while (0)
-
-#define DATA_STACK_POP(state, data, size, discard) \
-do { \
-    TRACE(("copy data to %p from %d (%d)\n", \
-           data, state->data_stack_base-size, size)); \
-    memcpy(data, state->data_stack+state->data_stack_base-size, size); \
-    if (discard) \
-        state->data_stack_base -= size; \
-} while (0)
-
-#define DATA_STACK_POP_DISCARD(state, size) \
-do { \
-    TRACE(("discard data from %d (%d)\n", \
-           state->data_stack_base-size, size)); \
-    state->data_stack_base -= size; \
-} while(0)
-
-#define DATA_PUSH(x) \
-    DATA_STACK_PUSH(state, (x), sizeof(*(x)))
-#define DATA_POP(x) \
-    DATA_STACK_POP(state, (x), sizeof(*(x)), 1)
-#define DATA_POP_DISCARD(x) \
-    DATA_STACK_POP_DISCARD(state, sizeof(*(x)))
-#define DATA_ALLOC(t,p) \
-    DATA_STACK_ALLOC(state, t, p)
-#define DATA_LOOKUP_AT(t,p,pos) \
-    DATA_STACK_LOOKUP_AT(state,t,p,pos)
-
-#define MARK_PUSH(lastmark) \
-    do if (lastmark > 0) { \
-        i = lastmark; /* ctx->lastmark may change if reallocated */ \
-        DATA_STACK_PUSH(state, state->mark, (i+1)*sizeof(void*)); \
-    } while (0)
-#define MARK_POP(lastmark) \
-    do if (lastmark > 0) { \
-        DATA_STACK_POP(state, state->mark, (lastmark+1)*sizeof(void*), 1); \
-    } while (0)
-#define MARK_POP_KEEP(lastmark) \
-    do if (lastmark > 0) { \
-        DATA_STACK_POP(state, state->mark, (lastmark+1)*sizeof(void*), 0); \
-    } while (0)
-#define MARK_POP_DISCARD(lastmark) \
-    do if (lastmark > 0) { \
-        DATA_STACK_POP_DISCARD(state, (lastmark+1)*sizeof(void*)); \
-    } while (0)
-
-#define JUMP_NONE            0
-#define JUMP_MAX_UNTIL_1     1
-#define JUMP_MAX_UNTIL_2     2
-#define JUMP_MAX_UNTIL_3     3
-#define JUMP_MIN_UNTIL_1     4
-#define JUMP_MIN_UNTIL_2     5
-#define JUMP_MIN_UNTIL_3     6
-#define JUMP_REPEAT          7
-#define JUMP_REPEAT_ONE_1    8
-#define JUMP_REPEAT_ONE_2    9
-#define JUMP_MIN_REPEAT_ONE  10
-#define JUMP_BRANCH          11
-#define JUMP_ASSERT          12
-#define JUMP_ASSERT_NOT      13
-
-#define DO_JUMP(jumpvalue, jumplabel, nextpattern) \
-    DATA_ALLOC(SRE_MATCH_CONTEXT, nextctx); \
-    nextctx->last_ctx_pos = ctx_pos; \
-    nextctx->jump = jumpvalue; \
-    nextctx->pattern = nextpattern; \
-    ctx_pos = alloc_pos; \
-    ctx = nextctx; \
-    goto entrance; \
-    jumplabel: \
-    while (0) /* gcc doesn't like labels at end of scopes */ \
-
-typedef struct {
-    Py_ssize_t last_ctx_pos;
-    Py_ssize_t jump;
-    SRE_CHAR* ptr;
-    SRE_CODE* pattern;
-    Py_ssize_t count;
-    Py_ssize_t lastmark;
-    Py_ssize_t lastindex;
-    union {
-        SRE_CODE chr;
-        SRE_REPEAT* rep;
-    } u;
-} SRE_MATCH_CONTEXT;
-
-/* check if string matches the given pattern.  returns <0 for
-   error, 0 for failure, and 1 for success */
-LOCAL(Py_ssize_t)
-SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern)
-{
-    SRE_CHAR* end = (SRE_CHAR *)state->end;
-    Py_ssize_t alloc_pos, ctx_pos = -1;
-    Py_ssize_t i, ret = 0;
-    Py_ssize_t jump;
-    unsigned int sigcount=0;
-
-    SRE_MATCH_CONTEXT* ctx;
-    SRE_MATCH_CONTEXT* nextctx;
-
-    TRACE(("|%p|%p|ENTER\n", pattern, state->ptr));
-
-    DATA_ALLOC(SRE_MATCH_CONTEXT, ctx);
-    ctx->last_ctx_pos = -1;
-    ctx->jump = JUMP_NONE;
-    ctx->pattern = pattern;
-    ctx_pos = alloc_pos;
-
-entrance:
-
-    ctx->ptr = (SRE_CHAR *)state->ptr;
-
-    if (ctx->pattern[0] == SRE_OP_INFO) {
-        /* optimization info block */
-        /* <INFO> <1=skip> <2=flags> <3=min> ... */
-        if (ctx->pattern[3] && (end - ctx->ptr) < ctx->pattern[3]) {
-            TRACE(("reject (got %d chars, need %d)\n",
-                   (end - ctx->ptr), ctx->pattern[3]));
-            RETURN_FAILURE;
-        }
-        ctx->pattern += ctx->pattern[1] + 1;
-    }
-
-    for (;;) {
-        ++sigcount;
-        if ((0 == (sigcount & 0xfff)) && PyErr_CheckSignals())
-            RETURN_ERROR(SRE_ERROR_INTERRUPTED);
-
-        switch (*ctx->pattern++) {
-
-        case SRE_OP_MARK:
-            /* set mark */
-            /* <MARK> <gid> */
-            TRACE(("|%p|%p|MARK %d\n", ctx->pattern,
-                   ctx->ptr, ctx->pattern[0]));
-            i = ctx->pattern[0];
-            if (i & 1)
-                state->lastindex = i/2 + 1;
-            if (i > state->lastmark) {
-                /* state->lastmark is the highest valid index in the
-                   state->mark array.  If it is increased by more than 1,
-                   the intervening marks must be set to NULL to signal
-                   that these marks have not been encountered. */
-                Py_ssize_t j = state->lastmark + 1;
-                while (j < i)
-                    state->mark[j++] = NULL;
-                state->lastmark = i;
-            }
-            state->mark[i] = ctx->ptr;
-            ctx->pattern++;
-            break;
-
-        case SRE_OP_LITERAL:
-            /* match literal string */
-            /* <LITERAL> <code> */
-            TRACE(("|%p|%p|LITERAL %d\n", ctx->pattern,
-                   ctx->ptr, *ctx->pattern));
-            if (ctx->ptr >= end || (SRE_CODE) ctx->ptr[0] != ctx->pattern[0])
-                RETURN_FAILURE;
-            ctx->pattern++;
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_NOT_LITERAL:
-            /* match anything that is not literal character */
-            /* <NOT_LITERAL> <code> */
-            TRACE(("|%p|%p|NOT_LITERAL %d\n", ctx->pattern,
-                   ctx->ptr, *ctx->pattern));
-            if (ctx->ptr >= end || (SRE_CODE) ctx->ptr[0] == ctx->pattern[0])
-                RETURN_FAILURE;
-            ctx->pattern++;
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_SUCCESS:
-            /* end of pattern */
-            TRACE(("|%p|%p|SUCCESS\n", ctx->pattern, ctx->ptr));
-            state->ptr = ctx->ptr;
-            RETURN_SUCCESS;
-
-        case SRE_OP_AT:
-            /* match at given position */
-            /* <AT> <code> */
-            TRACE(("|%p|%p|AT %d\n", ctx->pattern, ctx->ptr, *ctx->pattern));
-            if (!SRE_AT(state, ctx->ptr, *ctx->pattern))
-                RETURN_FAILURE;
-            ctx->pattern++;
-            break;
-
-        case SRE_OP_CATEGORY:
-            /* match at given category */
-            /* <CATEGORY> <code> */
-            TRACE(("|%p|%p|CATEGORY %d\n", ctx->pattern,
-                   ctx->ptr, *ctx->pattern));
-            if (ctx->ptr >= end || !sre_category(ctx->pattern[0], ctx->ptr[0]))
-                RETURN_FAILURE;
-            ctx->pattern++;
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_ANY:
-            /* match anything (except a newline) */
-            /* <ANY> */
-            TRACE(("|%p|%p|ANY\n", ctx->pattern, ctx->ptr));
-            if (ctx->ptr >= end || SRE_IS_LINEBREAK(ctx->ptr[0]))
-                RETURN_FAILURE;
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_ANY_ALL:
-            /* match anything */
-            /* <ANY_ALL> */
-            TRACE(("|%p|%p|ANY_ALL\n", ctx->pattern, ctx->ptr));
-            if (ctx->ptr >= end)
-                RETURN_FAILURE;
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_IN:
-            /* match set member (or non_member) */
-            /* <IN> <skip> <set> */
-            TRACE(("|%p|%p|IN\n", ctx->pattern, ctx->ptr));
-            if (ctx->ptr >= end || !SRE_CHARSET(ctx->pattern + 1, *ctx->ptr))
-                RETURN_FAILURE;
-            ctx->pattern += ctx->pattern[0];
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_LITERAL_IGNORE:
-            TRACE(("|%p|%p|LITERAL_IGNORE %d\n",
-                   ctx->pattern, ctx->ptr, ctx->pattern[0]));
-            if (ctx->ptr >= end ||
-                state->lower(*ctx->ptr) != state->lower(*ctx->pattern))
-                RETURN_FAILURE;
-            ctx->pattern++;
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_NOT_LITERAL_IGNORE:
-            TRACE(("|%p|%p|NOT_LITERAL_IGNORE %d\n",
-                   ctx->pattern, ctx->ptr, *ctx->pattern));
-            if (ctx->ptr >= end ||
-                state->lower(*ctx->ptr) == state->lower(*ctx->pattern))
-                RETURN_FAILURE;
-            ctx->pattern++;
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_IN_IGNORE:
-            TRACE(("|%p|%p|IN_IGNORE\n", ctx->pattern, ctx->ptr));
-            if (ctx->ptr >= end
-                || !SRE_CHARSET(ctx->pattern+1,
-                                (SRE_CODE)state->lower(*ctx->ptr)))
-                RETURN_FAILURE;
-            ctx->pattern += ctx->pattern[0];
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_JUMP:
-        case SRE_OP_INFO:
-            /* jump forward */
-            /* <JUMP> <offset> */
-            TRACE(("|%p|%p|JUMP %d\n", ctx->pattern,
-                   ctx->ptr, ctx->pattern[0]));
-            ctx->pattern += ctx->pattern[0];
-            break;
-
-        case SRE_OP_BRANCH:
-            /* alternation */
-            /* <BRANCH> <0=skip> code <JUMP> ... <NULL> */
-            TRACE(("|%p|%p|BRANCH\n", ctx->pattern, ctx->ptr));
-            LASTMARK_SAVE();
-            ctx->u.rep = state->repeat;
-            if (ctx->u.rep)
-                MARK_PUSH(ctx->lastmark);
-            for (; ctx->pattern[0]; ctx->pattern += ctx->pattern[0]) {
-                if (ctx->pattern[1] == SRE_OP_LITERAL &&
-                    (ctx->ptr >= end ||
-                     (SRE_CODE) *ctx->ptr != ctx->pattern[2]))
-                    continue;
-                if (ctx->pattern[1] == SRE_OP_IN &&
-                    (ctx->ptr >= end ||
-                     !SRE_CHARSET(ctx->pattern + 3, (SRE_CODE) *ctx->ptr)))
-                    continue;
-                state->ptr = ctx->ptr;
-                DO_JUMP(JUMP_BRANCH, jump_branch, ctx->pattern+1);
-                if (ret) {
-                    if (ctx->u.rep)
-                        MARK_POP_DISCARD(ctx->lastmark);
-                    RETURN_ON_ERROR(ret);
-                    RETURN_SUCCESS;
-                }
-                if (ctx->u.rep)
-                    MARK_POP_KEEP(ctx->lastmark);
-                LASTMARK_RESTORE();
-            }
-            if (ctx->u.rep)
-                MARK_POP_DISCARD(ctx->lastmark);
-            RETURN_FAILURE;
-
-        case SRE_OP_REPEAT_ONE:
-            /* match repeated sequence (maximizing regexp) */
-
-            /* this operator only works if the repeated item is
-               exactly one character wide, and we're not already
-               collecting backtracking points.  for other cases,
-               use the MAX_REPEAT operator */
-
-            /* <REPEAT_ONE> <skip> <1=min> <2=max> item <SUCCESS> tail */
-
-            TRACE(("|%p|%p|REPEAT_ONE %d %d\n", ctx->pattern, ctx->ptr,
-                   ctx->pattern[1], ctx->pattern[2]));
-
-            if (ctx->ptr + ctx->pattern[1] > end)
-                RETURN_FAILURE; /* cannot match */
-
-            state->ptr = ctx->ptr;
-
-            ret = SRE_COUNT(state, ctx->pattern+3, ctx->pattern[2]);
-            RETURN_ON_ERROR(ret);
-            DATA_LOOKUP_AT(SRE_MATCH_CONTEXT, ctx, ctx_pos);
-            ctx->count = ret;
-            ctx->ptr += ctx->count;
-
-            /* when we arrive here, count contains the number of
-               matches, and ctx->ptr points to the tail of the target
-               string.  check if the rest of the pattern matches,
-               and backtrack if not. */
-
-            if (ctx->count < (Py_ssize_t) ctx->pattern[1])
-                RETURN_FAILURE;
-
-            if (ctx->pattern[ctx->pattern[0]] == SRE_OP_SUCCESS) {
-                /* tail is empty.  we're finished */
-                state->ptr = ctx->ptr;
-                RETURN_SUCCESS;
-            }
-
-            LASTMARK_SAVE();
-
-            if (ctx->pattern[ctx->pattern[0]] == SRE_OP_LITERAL) {
-                /* tail starts with a literal. skip positions where
-                   the rest of the pattern cannot possibly match */
-                ctx->u.chr = ctx->pattern[ctx->pattern[0]+1];
-                for (;;) {
-                    while (ctx->count >= (Py_ssize_t) ctx->pattern[1] &&
-                           (ctx->ptr >= end || *ctx->ptr != ctx->u.chr)) {
-                        ctx->ptr--;
-                        ctx->count--;
-                    }
-                    if (ctx->count < (Py_ssize_t) ctx->pattern[1])
-                        break;
-                    state->ptr = ctx->ptr;
-                    DO_JUMP(JUMP_REPEAT_ONE_1, jump_repeat_one_1,
-                            ctx->pattern+ctx->pattern[0]);
-                    if (ret) {
-                        RETURN_ON_ERROR(ret);
-                        RETURN_SUCCESS;
-                    }
-
-                    LASTMARK_RESTORE();
-
-                    ctx->ptr--;
-                    ctx->count--;
-                }
-
-            } else {
-                /* general case */
-                while (ctx->count >= (Py_ssize_t) ctx->pattern[1]) {
-                    state->ptr = ctx->ptr;
-                    DO_JUMP(JUMP_REPEAT_ONE_2, jump_repeat_one_2,
-                            ctx->pattern+ctx->pattern[0]);
-                    if (ret) {
-                        RETURN_ON_ERROR(ret);
-                        RETURN_SUCCESS;
-                    }
-                    ctx->ptr--;
-                    ctx->count--;
-                    LASTMARK_RESTORE();
-                }
-            }
-            RETURN_FAILURE;
-
-        case SRE_OP_MIN_REPEAT_ONE:
-            /* match repeated sequence (minimizing regexp) */
-
-            /* this operator only works if the repeated item is
-               exactly one character wide, and we're not already
-               collecting backtracking points.  for other cases,
-               use the MIN_REPEAT operator */
-
-            /* <MIN_REPEAT_ONE> <skip> <1=min> <2=max> item <SUCCESS> tail */
-
-            TRACE(("|%p|%p|MIN_REPEAT_ONE %d %d\n", ctx->pattern, ctx->ptr,
-                   ctx->pattern[1], ctx->pattern[2]));
-
-            if (ctx->ptr + ctx->pattern[1] > end)
-                RETURN_FAILURE; /* cannot match */
-
-            state->ptr = ctx->ptr;
-
-            if (ctx->pattern[1] == 0)
-                ctx->count = 0;
-            else {
-                /* count using pattern min as the maximum */
-                ret = SRE_COUNT(state, ctx->pattern+3, ctx->pattern[1]);
-                RETURN_ON_ERROR(ret);
-                DATA_LOOKUP_AT(SRE_MATCH_CONTEXT, ctx, ctx_pos);
-                if (ret < (Py_ssize_t) ctx->pattern[1])
-                    /* didn't match minimum number of times */
-                    RETURN_FAILURE;
-                /* advance past minimum matches of repeat */
-                ctx->count = ret;
-                ctx->ptr += ctx->count;
-            }
-
-            if (ctx->pattern[ctx->pattern[0]] == SRE_OP_SUCCESS) {
-                /* tail is empty.  we're finished */
-                state->ptr = ctx->ptr;
-                RETURN_SUCCESS;
-
-            } else {
-                /* general case */
-                LASTMARK_SAVE();
-                while ((Py_ssize_t)ctx->pattern[2] == 65535
-                       || ctx->count <= (Py_ssize_t)ctx->pattern[2]) {
-                    state->ptr = ctx->ptr;
-                    DO_JUMP(JUMP_MIN_REPEAT_ONE,jump_min_repeat_one,
-                            ctx->pattern+ctx->pattern[0]);
-                    if (ret) {
-                        RETURN_ON_ERROR(ret);
-                        RETURN_SUCCESS;
-                    }
-                    state->ptr = ctx->ptr;
-                    ret = SRE_COUNT(state, ctx->pattern+3, 1);
-                    RETURN_ON_ERROR(ret);
-                    DATA_LOOKUP_AT(SRE_MATCH_CONTEXT, ctx, ctx_pos);
-                    if (ret == 0)
-                        break;
-                    assert(ret == 1);
-                    ctx->ptr++;
-                    ctx->count++;
-                    LASTMARK_RESTORE();
-                }
-            }
-            RETURN_FAILURE;
-
-        case SRE_OP_REPEAT:
-            /* create repeat context.  all the hard work is done
-               by the UNTIL operator (MAX_UNTIL, MIN_UNTIL) */
-            /* <REPEAT> <skip> <1=min> <2=max> item <UNTIL> tail */
-            TRACE(("|%p|%p|REPEAT %d %d\n", ctx->pattern, ctx->ptr,
-                   ctx->pattern[1], ctx->pattern[2]));
-
-            /* install new repeat context */
-            ctx->u.rep = (SRE_REPEAT*) PyObject_MALLOC(sizeof(*ctx->u.rep));
-            if (!ctx->u.rep) {
-                PyErr_NoMemory();
-                RETURN_FAILURE;
-            }
-            ctx->u.rep->count = -1;
-            ctx->u.rep->pattern = ctx->pattern;
-            ctx->u.rep->prev = state->repeat;
-            ctx->u.rep->last_ptr = NULL;
-            state->repeat = ctx->u.rep;
-
-            state->ptr = ctx->ptr;
-            DO_JUMP(JUMP_REPEAT, jump_repeat, ctx->pattern+ctx->pattern[0]);
-            state->repeat = ctx->u.rep->prev;
-            PyObject_FREE(ctx->u.rep);
-
-            if (ret) {
-                RETURN_ON_ERROR(ret);
-                RETURN_SUCCESS;
-            }
-            RETURN_FAILURE;
-
-        case SRE_OP_MAX_UNTIL:
-            /* maximizing repeat */
-            /* <REPEAT> <skip> <1=min> <2=max> item <MAX_UNTIL> tail */
-
-            /* FIXME: we probably need to deal with zero-width
-               matches in here... */
-
-            ctx->u.rep = state->repeat;
-            if (!ctx->u.rep)
-                RETURN_ERROR(SRE_ERROR_STATE);
-
-            state->ptr = ctx->ptr;
-
-            ctx->count = ctx->u.rep->count+1;
-
-            TRACE(("|%p|%p|MAX_UNTIL %d\n", ctx->pattern,
-                   ctx->ptr, ctx->count));
-
-            if (ctx->count < ctx->u.rep->pattern[1]) {
-                /* not enough matches */
-                ctx->u.rep->count = ctx->count;
-                DO_JUMP(JUMP_MAX_UNTIL_1, jump_max_until_1,
-                        ctx->u.rep->pattern+3);
-                if (ret) {
-                    RETURN_ON_ERROR(ret);
-                    RETURN_SUCCESS;
-                }
-                ctx->u.rep->count = ctx->count-1;
-                state->ptr = ctx->ptr;
-                RETURN_FAILURE;
-            }
-
-            if ((ctx->count < ctx->u.rep->pattern[2] ||
-                ctx->u.rep->pattern[2] == 65535) &&
-                state->ptr != ctx->u.rep->last_ptr) {
-                /* we may have enough matches, but if we can
-                   match another item, do so */
-                ctx->u.rep->count = ctx->count;
-                LASTMARK_SAVE();
-                MARK_PUSH(ctx->lastmark);
-                /* zero-width match protection */
-                DATA_PUSH(&ctx->u.rep->last_ptr);
-                ctx->u.rep->last_ptr = state->ptr;
-                DO_JUMP(JUMP_MAX_UNTIL_2, jump_max_until_2,
-                        ctx->u.rep->pattern+3);
-                DATA_POP(&ctx->u.rep->last_ptr);
-                if (ret) {
-                    MARK_POP_DISCARD(ctx->lastmark);
-                    RETURN_ON_ERROR(ret);
-                    RETURN_SUCCESS;
-                }
-                MARK_POP(ctx->lastmark);
-                LASTMARK_RESTORE();
-                ctx->u.rep->count = ctx->count-1;
-                state->ptr = ctx->ptr;
-            }
-
-            /* cannot match more repeated items here.  make sure the
-               tail matches */
-            state->repeat = ctx->u.rep->prev;
-            DO_JUMP(JUMP_MAX_UNTIL_3, jump_max_until_3, ctx->pattern);
-            RETURN_ON_SUCCESS(ret);
-            state->repeat = ctx->u.rep;
-            state->ptr = ctx->ptr;
-            RETURN_FAILURE;
-
-        case SRE_OP_MIN_UNTIL:
-            /* minimizing repeat */
-            /* <REPEAT> <skip> <1=min> <2=max> item <MIN_UNTIL> tail */
-
-            ctx->u.rep = state->repeat;
-            if (!ctx->u.rep)
-                RETURN_ERROR(SRE_ERROR_STATE);
-
-            state->ptr = ctx->ptr;
-
-            ctx->count = ctx->u.rep->count+1;
-
-            TRACE(("|%p|%p|MIN_UNTIL %d %p\n", ctx->pattern,
-                   ctx->ptr, ctx->count, ctx->u.rep->pattern));
-
-            if (ctx->count < ctx->u.rep->pattern[1]) {
-                /* not enough matches */
-                ctx->u.rep->count = ctx->count;
-                DO_JUMP(JUMP_MIN_UNTIL_1, jump_min_until_1,
-                        ctx->u.rep->pattern+3);
-                if (ret) {
-                    RETURN_ON_ERROR(ret);
-                    RETURN_SUCCESS;
-                }
-                ctx->u.rep->count = ctx->count-1;
-                state->ptr = ctx->ptr;
-                RETURN_FAILURE;
-            }
-
-            LASTMARK_SAVE();
-
-            /* see if the tail matches */
-            state->repeat = ctx->u.rep->prev;
-            DO_JUMP(JUMP_MIN_UNTIL_2, jump_min_until_2, ctx->pattern);
-            if (ret) {
-                RETURN_ON_ERROR(ret);
-                RETURN_SUCCESS;
-            }
-
-            state->repeat = ctx->u.rep;
-            state->ptr = ctx->ptr;
-
-            LASTMARK_RESTORE();
-
-            if (ctx->count >= ctx->u.rep->pattern[2]
-                && ctx->u.rep->pattern[2] != 65535)
-                RETURN_FAILURE;
-
-            ctx->u.rep->count = ctx->count;
-            DO_JUMP(JUMP_MIN_UNTIL_3,jump_min_until_3,
-                    ctx->u.rep->pattern+3);
-            if (ret) {
-                RETURN_ON_ERROR(ret);
-                RETURN_SUCCESS;
-            }
-            ctx->u.rep->count = ctx->count-1;
-            state->ptr = ctx->ptr;
-            RETURN_FAILURE;
-
-        case SRE_OP_GROUPREF:
-            /* match backreference */
-            TRACE(("|%p|%p|GROUPREF %d\n", ctx->pattern,
-                   ctx->ptr, ctx->pattern[0]));
-            i = ctx->pattern[0];
-            {
-                Py_ssize_t groupref = i+i;
-                if (groupref >= state->lastmark) {
-                    RETURN_FAILURE;
-                } else {
-                    SRE_CHAR* p = (SRE_CHAR*) state->mark[groupref];
-                    SRE_CHAR* e = (SRE_CHAR*) state->mark[groupref+1];
-                    if (!p || !e || e < p)
-                        RETURN_FAILURE;
-                    while (p < e) {
-                        if (ctx->ptr >= end || *ctx->ptr != *p)
-                            RETURN_FAILURE;
-                        p++; ctx->ptr++;
-                    }
-                }
-            }
-            ctx->pattern++;
-            break;
-
-        case SRE_OP_GROUPREF_IGNORE:
-            /* match backreference */
-            TRACE(("|%p|%p|GROUPREF_IGNORE %d\n", ctx->pattern,
-                   ctx->ptr, ctx->pattern[0]));
-            i = ctx->pattern[0];
-            {
-                Py_ssize_t groupref = i+i;
-                if (groupref >= state->lastmark) {
-                    RETURN_FAILURE;
-                } else {
-                    SRE_CHAR* p = (SRE_CHAR*) state->mark[groupref];
-                    SRE_CHAR* e = (SRE_CHAR*) state->mark[groupref+1];
-                    if (!p || !e || e < p)
-                        RETURN_FAILURE;
-                    while (p < e) {
-                        if (ctx->ptr >= end ||
-                            state->lower(*ctx->ptr) != state->lower(*p))
-                            RETURN_FAILURE;
-                        p++; ctx->ptr++;
-                    }
-                }
-            }
-            ctx->pattern++;
-            break;
-
-        case SRE_OP_GROUPREF_EXISTS:
-            TRACE(("|%p|%p|GROUPREF_EXISTS %d\n", ctx->pattern,
-                   ctx->ptr, ctx->pattern[0]));
-            /* <GROUPREF_EXISTS> <group> <skip> codeyes <JUMP> codeno ... */
-            i = ctx->pattern[0];
-            {
-                Py_ssize_t groupref = i+i;
-                if (groupref >= state->lastmark) {
-                    ctx->pattern += ctx->pattern[1];
-                    break;
-                } else {
-                    SRE_CHAR* p = (SRE_CHAR*) state->mark[groupref];
-                    SRE_CHAR* e = (SRE_CHAR*) state->mark[groupref+1];
-                    if (!p || !e || e < p) {
-                        ctx->pattern += ctx->pattern[1];
-                        break;
-                    }
-                }
-            }
-            ctx->pattern += 2;
-            break;
-
-        case SRE_OP_ASSERT:
-            /* assert subpattern */
-            /* <ASSERT> <skip> <back> <pattern> */
-            TRACE(("|%p|%p|ASSERT %d\n", ctx->pattern,
-                   ctx->ptr, ctx->pattern[1]));
-            state->ptr = ctx->ptr - ctx->pattern[1];
-            if (state->ptr < state->beginning)
-                RETURN_FAILURE;
-            DO_JUMP(JUMP_ASSERT, jump_assert, ctx->pattern+2);
-            RETURN_ON_FAILURE(ret);
-            ctx->pattern += ctx->pattern[0];
-            break;
-
-        case SRE_OP_ASSERT_NOT:
-            /* assert not subpattern */
-            /* <ASSERT_NOT> <skip> <back> <pattern> */
-            TRACE(("|%p|%p|ASSERT_NOT %d\n", ctx->pattern,
-                   ctx->ptr, ctx->pattern[1]));
-            state->ptr = ctx->ptr - ctx->pattern[1];
-            if (state->ptr >= state->beginning) {
-                DO_JUMP(JUMP_ASSERT_NOT, jump_assert_not, ctx->pattern+2);
-                if (ret) {
-                    RETURN_ON_ERROR(ret);
-                    RETURN_FAILURE;
-                }
-            }
-            ctx->pattern += ctx->pattern[0];
-            break;
-
-        case SRE_OP_FAILURE:
-            /* immediate failure */
-            TRACE(("|%p|%p|FAILURE\n", ctx->pattern, ctx->ptr));
-            RETURN_FAILURE;
-
-        default:
-            TRACE(("|%p|%p|UNKNOWN %d\n", ctx->pattern, ctx->ptr,
-                   ctx->pattern[-1]));
-            RETURN_ERROR(SRE_ERROR_ILLEGAL);
-        }
-    }
-
-exit:
-    ctx_pos = ctx->last_ctx_pos;
-    jump = ctx->jump;
-    DATA_POP_DISCARD(ctx);
-    if (ctx_pos == -1)
-        return ret;
-    DATA_LOOKUP_AT(SRE_MATCH_CONTEXT, ctx, ctx_pos);
-
-    switch (jump) {
-        case JUMP_MAX_UNTIL_2:
-            TRACE(("|%p|%p|JUMP_MAX_UNTIL_2\n", ctx->pattern, ctx->ptr));
-            goto jump_max_until_2;
-        case JUMP_MAX_UNTIL_3:
-            TRACE(("|%p|%p|JUMP_MAX_UNTIL_3\n", ctx->pattern, ctx->ptr));
-            goto jump_max_until_3;
-        case JUMP_MIN_UNTIL_2:
-            TRACE(("|%p|%p|JUMP_MIN_UNTIL_2\n", ctx->pattern, ctx->ptr));
-            goto jump_min_until_2;
-        case JUMP_MIN_UNTIL_3:
-            TRACE(("|%p|%p|JUMP_MIN_UNTIL_3\n", ctx->pattern, ctx->ptr));
-            goto jump_min_until_3;
-        case JUMP_BRANCH:
-            TRACE(("|%p|%p|JUMP_BRANCH\n", ctx->pattern, ctx->ptr));
-            goto jump_branch;
-        case JUMP_MAX_UNTIL_1:
-            TRACE(("|%p|%p|JUMP_MAX_UNTIL_1\n", ctx->pattern, ctx->ptr));
-            goto jump_max_until_1;
-        case JUMP_MIN_UNTIL_1:
-            TRACE(("|%p|%p|JUMP_MIN_UNTIL_1\n", ctx->pattern, ctx->ptr));
-            goto jump_min_until_1;
-        case JUMP_REPEAT:
-            TRACE(("|%p|%p|JUMP_REPEAT\n", ctx->pattern, ctx->ptr));
-            goto jump_repeat;
-        case JUMP_REPEAT_ONE_1:
-            TRACE(("|%p|%p|JUMP_REPEAT_ONE_1\n", ctx->pattern, ctx->ptr));
-            goto jump_repeat_one_1;
-        case JUMP_REPEAT_ONE_2:
-            TRACE(("|%p|%p|JUMP_REPEAT_ONE_2\n", ctx->pattern, ctx->ptr));
-            goto jump_repeat_one_2;
-        case JUMP_MIN_REPEAT_ONE:
-            TRACE(("|%p|%p|JUMP_MIN_REPEAT_ONE\n", ctx->pattern, ctx->ptr));
-            goto jump_min_repeat_one;
-        case JUMP_ASSERT:
-            TRACE(("|%p|%p|JUMP_ASSERT\n", ctx->pattern, ctx->ptr));
-            goto jump_assert;
-        case JUMP_ASSERT_NOT:
-            TRACE(("|%p|%p|JUMP_ASSERT_NOT\n", ctx->pattern, ctx->ptr));
-            goto jump_assert_not;
-        case JUMP_NONE:
-            TRACE(("|%p|%p|RETURN %d\n", ctx->pattern, ctx->ptr, ret));
-            break;
-    }
-
-    return ret; /* should never get here */
-}
-
-LOCAL(Py_ssize_t)
-SRE_SEARCH(SRE_STATE* state, SRE_CODE* pattern)
-{
-    SRE_CHAR* ptr = (SRE_CHAR *)state->start;
-    SRE_CHAR* end = (SRE_CHAR *)state->end;
-    Py_ssize_t status = 0;
-    Py_ssize_t prefix_len = 0;
-    Py_ssize_t prefix_skip = 0;
-    SRE_CODE* prefix = NULL;
-    SRE_CODE* charset = NULL;
-    SRE_CODE* overlap = NULL;
-    int flags = 0;
-
-    if (pattern[0] == SRE_OP_INFO) {
-        /* optimization info block */
-        /* <INFO> <1=skip> <2=flags> <3=min> <4=max> <5=prefix info>  */
-
-        flags = pattern[2];
-
-        if (pattern[3] > 1) {
-            /* adjust end point (but make sure we leave at least one
-               character in there, so literal search will work) */
-            end -= pattern[3]-1;
-            if (end <= ptr)
-                end = ptr+1;
-        }
-
-        if (flags & SRE_INFO_PREFIX) {
-            /* pattern starts with a known prefix */
-            /* <length> <skip> <prefix data> <overlap data> */
-            prefix_len = pattern[5];
-            prefix_skip = pattern[6];
-            prefix = pattern + 7;
-            overlap = prefix + prefix_len - 1;
-        } else if (flags & SRE_INFO_CHARSET)
-            /* pattern starts with a character from a known set */
-            /* <charset> */
-            charset = pattern + 5;
-
-        pattern += 1 + pattern[1];
-    }
-
-    TRACE(("prefix = %p %d %d\n", prefix, prefix_len, prefix_skip));
-    TRACE(("charset = %p\n", charset));
-
-#if defined(USE_FAST_SEARCH)
-    if (prefix_len > 1) {
-        /* pattern starts with a known prefix.  use the overlap
-           table to skip forward as fast as we possibly can */
-        Py_ssize_t i = 0;
-        end = (SRE_CHAR *)state->end;
-        while (ptr < end) {
-            for (;;) {
-                if ((SRE_CODE) ptr[0] != prefix[i]) {
-                    if (!i)
-                        break;
-                    else
-                        i = overlap[i];
-                } else {
-                    if (++i == prefix_len) {
-                        /* found a potential match */
-                        TRACE(("|%p|%p|SEARCH SCAN\n", pattern, ptr));
-                        state->start = ptr + 1 - prefix_len;
-                        state->ptr = ptr + 1 - prefix_len + prefix_skip;
-                        if (flags & SRE_INFO_LITERAL)
-                            return 1; /* we got all of it */
-                        status = SRE_MATCH(state, pattern + 2*prefix_skip);
-                        if (status != 0)
-                            return status;
-                        /* close but no cigar -- try again */
-                        i = overlap[i];
-                    }
-                    break;
-                }
-            }
-            ptr++;
-        }
-        return 0;
-    }
-#endif
-
-    if (pattern[0] == SRE_OP_LITERAL) {
-        /* pattern starts with a literal character.  this is used
-           for short prefixes, and if fast search is disabled */
-        SRE_CODE chr = pattern[1];
-        end = (SRE_CHAR *)state->end;
-        for (;;) {
-            while (ptr < end && (SRE_CODE) ptr[0] != chr)
-                ptr++;
-            if (ptr >= end)
-                return 0;
-            TRACE(("|%p|%p|SEARCH LITERAL\n", pattern, ptr));
-            state->start = ptr;
-            state->ptr = ++ptr;
-            if (flags & SRE_INFO_LITERAL)
-                return 1; /* we got all of it */
-            status = SRE_MATCH(state, pattern + 2);
-            if (status != 0)
-                break;
-        }
-    } else if (charset) {
-        /* pattern starts with a character from a known set */
-        end = (SRE_CHAR *)state->end;
-        for (;;) {
-            while (ptr < end && !SRE_CHARSET(charset, ptr[0]))
-                ptr++;
-            if (ptr >= end)
-                return 0;
-            TRACE(("|%p|%p|SEARCH CHARSET\n", pattern, ptr));
-            state->start = ptr;
-            state->ptr = ptr;
-            status = SRE_MATCH(state, pattern);
-            if (status != 0)
-                break;
-            ptr++;
-        }
-    } else
-        /* general case */
-        while (ptr <= end) {
-            TRACE(("|%p|%p|SEARCH\n", pattern, ptr));
-            state->start = state->ptr = ptr++;
-            status = SRE_MATCH(state, pattern);
-            if (status != 0)
-                break;
-        }
-
-    return status;
-}
-
-LOCAL(int)
-SRE_LITERAL_TEMPLATE(SRE_CHAR* ptr, Py_ssize_t len)
-{
-    /* check if given string is a literal template (i.e. no escapes) */
-    while (len-- > 0)
-        if (*ptr++ == '\\')
-            return 0;
-    return 1;
-}
-
-#if !defined(SRE_RECURSIVE)
-
-/* -------------------------------------------------------------------- */
-/* factories and destructors */
-
-/* see sre.h for object declarations */
-static PyObject*pattern_new_match(PatternObject*, SRE_STATE*, int);
-static PyObject*pattern_scanner(PatternObject*, PyObject*);
-
-static PyObject *
-sre_codesize(PyObject* self, PyObject *unused)
-{
-    return Py_BuildValue("l", sizeof(SRE_CODE));
-}
-
-static PyObject *
-sre_getlower(PyObject* self, PyObject* args)
-{
-    int character, flags;
-    if (!PyArg_ParseTuple(args, "ii", &character, &flags))
-        return NULL;
-    if (flags & SRE_FLAG_LOCALE)
-        return Py_BuildValue("i", sre_lower_locale(character));
-    if (flags & SRE_FLAG_UNICODE)
-#if defined(HAVE_UNICODE)
-        return Py_BuildValue("i", sre_lower_unicode(character));
-#else
-        return Py_BuildValue("i", sre_lower_locale(character));
-#endif
-    return Py_BuildValue("i", sre_lower(character));
-}
-
-LOCAL(void)
-state_reset(SRE_STATE* state)
-{
-    /* FIXME: dynamic! */
-    /*memset(state->mark, 0, sizeof(*state->mark) * SRE_MARK_SIZE);*/
-
-    state->lastmark = -1;
-    state->lastindex = -1;
-
-    state->repeat = NULL;
-
-    data_stack_dealloc(state);
-}
-
-static void*
-getstring(PyObject* string, Py_ssize_t* p_length, int* p_charsize)
-{
-    /* given a python object, return a data pointer, a length (in
-       characters), and a character size.  return NULL if the object
-       is not a string (or not compatible) */
-
-    PyBufferProcs *buffer;
-    Py_ssize_t size, bytes;
-    int charsize;
-    void* ptr;
-
-#if defined(HAVE_UNICODE)
-    if (PyUnicode_Check(string)) {
-        /* unicode strings doesn't always support the buffer interface */
-        ptr = (void*) PyUnicode_AS_DATA(string);
-        /* bytes = PyUnicode_GET_DATA_SIZE(string); */
-        size = PyUnicode_GET_SIZE(string);
-        charsize = sizeof(Py_UNICODE);
-
-    } else {
-#endif
-
-    /* get pointer to string buffer */
-    buffer = Py_TYPE(string)->tp_as_buffer;
-    if (!buffer || !buffer->bf_getreadbuffer || !buffer->bf_getsegcount ||
-        buffer->bf_getsegcount(string, NULL) != 1) {
-        PyErr_SetString(PyExc_TypeError, "expected string or buffer");
-        return NULL;
-    }
-
-    /* determine buffer size */
-    bytes = buffer->bf_getreadbuffer(string, 0, &ptr);
-    if (bytes < 0) {
-        PyErr_SetString(PyExc_TypeError, "buffer has negative size");
-        return NULL;
-    }
-
-    /* determine character size */
-#if PY_VERSION_HEX >= 0x01060000
-    size = PyObject_Size(string);
-#else
-    size = PyObject_Length(string);
-#endif
-
-    if (PyString_Check(string) || bytes == size)
-        charsize = 1;
-#if defined(HAVE_UNICODE)
-    else if (bytes == (Py_ssize_t) (size * sizeof(Py_UNICODE)))
-        charsize = sizeof(Py_UNICODE);
-#endif
-    else {
-        PyErr_SetString(PyExc_TypeError, "buffer size mismatch");
-        return NULL;
-    }
-
-#if defined(HAVE_UNICODE)
-    }
-#endif
-
-    *p_length = size;
-    *p_charsize = charsize;
-
-    return ptr;
-}
-
-LOCAL(PyObject*)
-state_init(SRE_STATE* state, PatternObject* pattern, PyObject* string,
-           Py_ssize_t start, Py_ssize_t end)
-{
-    /* prepare state object */
-
-    Py_ssize_t length;
-    int charsize;
-    void* ptr;
-
-    memset(state, 0, sizeof(SRE_STATE));
-
-    state->lastmark = -1;
-    state->lastindex = -1;
-
-    ptr = getstring(string, &length, &charsize);
-    if (!ptr)
-        return NULL;
-
-    /* adjust boundaries */
-    if (start < 0)
-        start = 0;
-    else if (start > length)
-        start = length;
-
-    if (end < 0)
-        end = 0;
-    else if (end > length)
-        end = length;
-
-    state->charsize = charsize;
-
-    state->beginning = ptr;
-
-    state->start = (void*) ((char*) ptr + start * state->charsize);
-    state->end = (void*) ((char*) ptr + end * state->charsize);
-
-    Py_INCREF(string);
-    state->string = string;
-    state->pos = start;
-    state->endpos = end;
-
-    if (pattern->flags & SRE_FLAG_LOCALE)
-        state->lower = sre_lower_locale;
-    else if (pattern->flags & SRE_FLAG_UNICODE)
-#if defined(HAVE_UNICODE)
-        state->lower = sre_lower_unicode;
-#else
-        state->lower = sre_lower_locale;
-#endif
-    else
-        state->lower = sre_lower;
-
-    return string;
-}
-
-LOCAL(void)
-state_fini(SRE_STATE* state)
-{
-    Py_XDECREF(state->string);
-    data_stack_dealloc(state);
-}
-
-/* calculate offset from start of string */
-#define STATE_OFFSET(state, member)\
-    (((char*)(member) - (char*)(state)->beginning) / (state)->charsize)
-
-LOCAL(PyObject*)
-state_getslice(SRE_STATE* state, Py_ssize_t index, PyObject* string, int empty)
-{
-    Py_ssize_t i, j;
-
-    index = (index - 1) * 2;
-
-    if (string == Py_None || index >= state->lastmark || !state->mark[index] || !state->mark[index+1]) {
-        if (empty)
-            /* want empty string */
-            i = j = 0;
-        else {
-            Py_INCREF(Py_None);
-            return Py_None;
-        }
-    } else {
-        i = STATE_OFFSET(state, state->mark[index]);
-        j = STATE_OFFSET(state, state->mark[index+1]);
-    }
-
-    return PySequence_GetSlice(string, i, j);
-}
-
-static void
-pattern_error(int status)
-{
-    switch (status) {
-    case SRE_ERROR_RECURSION_LIMIT:
-        PyErr_SetString(
-            PyExc_RuntimeError,
-            "maximum recursion limit exceeded"
-            );
-        break;
-    case SRE_ERROR_MEMORY:
-        PyErr_NoMemory();
-        break;
-    case SRE_ERROR_INTERRUPTED:
-    /* An exception has already been raised, so let it fly */
-        break;
-    default:
-        /* other error codes indicate compiler/engine bugs */
-        PyErr_SetString(
-            PyExc_RuntimeError,
-            "internal error in regular expression engine"
-            );
-    }
-}
-
-static void
-pattern_dealloc(PatternObject* self)
-{
-    if (self->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) self);
-    Py_XDECREF(self->pattern);
-    Py_XDECREF(self->groupindex);
-    Py_XDECREF(self->indexgroup);
-    PyObject_DEL(self);
-}
-
-static PyObject*
-pattern_match(PatternObject* self, PyObject* args, PyObject* kw)
-{
-    SRE_STATE state;
-    int status;
-
-    PyObject* string;
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    static char* kwlist[] = { "pattern", "pos", "endpos", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "O|nn:match", kwlist,
-                                     &string, &start, &end))
-        return NULL;
-
-    string = state_init(&state, self, string, start, end);
-    if (!string)
-        return NULL;
-
-    state.ptr = state.start;
-
-    TRACE(("|%p|%p|MATCH\n", PatternObject_GetCode(self), state.ptr));
-
-    if (state.charsize == 1) {
-        status = sre_match(&state, PatternObject_GetCode(self));
-    } else {
-#if defined(HAVE_UNICODE)
-        status = sre_umatch(&state, PatternObject_GetCode(self));
-#endif
-    }
-
-    TRACE(("|%p|%p|END\n", PatternObject_GetCode(self), state.ptr));
-    if (PyErr_Occurred())
-        return NULL;
-
-    state_fini(&state);
-
-    return pattern_new_match(self, &state, status);
-}
-
-static PyObject*
-pattern_search(PatternObject* self, PyObject* args, PyObject* kw)
-{
-    SRE_STATE state;
-    int status;
-
-    PyObject* string;
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    static char* kwlist[] = { "pattern", "pos", "endpos", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "O|nn:search", kwlist,
-                                     &string, &start, &end))
-        return NULL;
-
-    string = state_init(&state, self, string, start, end);
-    if (!string)
-        return NULL;
-
-    TRACE(("|%p|%p|SEARCH\n", PatternObject_GetCode(self), state.ptr));
-
-    if (state.charsize == 1) {
-        status = sre_search(&state, PatternObject_GetCode(self));
-    } else {
-#if defined(HAVE_UNICODE)
-        status = sre_usearch(&state, PatternObject_GetCode(self));
-#endif
-    }
-
-    TRACE(("|%p|%p|END\n", PatternObject_GetCode(self), state.ptr));
-
-    state_fini(&state);
-
-    if (PyErr_Occurred())
-        return NULL;
-
-    return pattern_new_match(self, &state, status);
-}
-
-static PyObject*
-call(char* module, char* function, PyObject* args)
-{
-    PyObject* name;
-    PyObject* mod;
-    PyObject* func;
-    PyObject* result;
-
-    if (!args)
-        return NULL;
-    name = PyString_FromString(module);
-    if (!name)
-        return NULL;
-    mod = PyImport_Import(name);
-    Py_DECREF(name);
-    if (!mod)
-        return NULL;
-    func = PyObject_GetAttrString(mod, function);
-    Py_DECREF(mod);
-    if (!func)
-        return NULL;
-    result = PyObject_CallObject(func, args);
-    Py_DECREF(func);
-    Py_DECREF(args);
-    return result;
-}
-
-#ifdef USE_BUILTIN_COPY
-static int
-deepcopy(PyObject** object, PyObject* memo)
-{
-    PyObject* copy;
-
-    copy = call(
-        "copy", "deepcopy",
-        PyTuple_Pack(2, *object, memo)
-        );
-    if (!copy)
-        return 0;
-
-    Py_DECREF(*object);
-    *object = copy;
-
-    return 1; /* success */
-}
-#endif
-
-static PyObject*
-join_list(PyObject* list, PyObject* string)
-{
-    /* join list elements */
-
-    PyObject* joiner;
-#if PY_VERSION_HEX >= 0x01060000
-    PyObject* function;
-    PyObject* args;
-#endif
-    PyObject* result;
-
-    joiner = PySequence_GetSlice(string, 0, 0);
-    if (!joiner)
-        return NULL;
-
-    if (PyList_GET_SIZE(list) == 0) {
-        Py_DECREF(list);
-        return joiner;
-    }
-
-#if PY_VERSION_HEX >= 0x01060000
-    function = PyObject_GetAttrString(joiner, "join");
-    if (!function) {
-        Py_DECREF(joiner);
-        return NULL;
-    }
-    args = PyTuple_New(1);
-    if (!args) {
-        Py_DECREF(function);
-        Py_DECREF(joiner);
-        return NULL;
-    }
-    PyTuple_SET_ITEM(args, 0, list);
-    result = PyObject_CallObject(function, args);
-    Py_DECREF(args); /* also removes list */
-    Py_DECREF(function);
-#else
-    result = call(
-        "string", "join",
-        PyTuple_Pack(2, list, joiner)
-        );
-#endif
-    Py_DECREF(joiner);
-
-    return result;
-}
-
-static PyObject*
-pattern_findall(PatternObject* self, PyObject* args, PyObject* kw)
-{
-    SRE_STATE state;
-    PyObject* list;
-    int status;
-    Py_ssize_t i, b, e;
-
-    PyObject* string;
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    static char* kwlist[] = { "source", "pos", "endpos", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "O|nn:findall", kwlist,
-                                     &string, &start, &end))
-        return NULL;
-
-    string = state_init(&state, self, string, start, end);
-    if (!string)
-        return NULL;
-
-    list = PyList_New(0);
-    if (!list) {
-        state_fini(&state);
-        return NULL;
-    }
-
-    while (state.start <= state.end) {
-
-        PyObject* item;
-
-        state_reset(&state);
-
-        state.ptr = state.start;
-
-        if (state.charsize == 1) {
-            status = sre_search(&state, PatternObject_GetCode(self));
-        } else {
-#if defined(HAVE_UNICODE)
-            status = sre_usearch(&state, PatternObject_GetCode(self));
-#endif
-        }
-
-        if (PyErr_Occurred())
-            goto error;
-
-        if (status <= 0) {
-            if (status == 0)
-                break;
-            pattern_error(status);
-            goto error;
-        }
-
-        /* don't bother to build a match object */
-        switch (self->groups) {
-        case 0:
-            b = STATE_OFFSET(&state, state.start);
-            e = STATE_OFFSET(&state, state.ptr);
-            item = PySequence_GetSlice(string, b, e);
-            if (!item)
-                goto error;
-            break;
-        case 1:
-            item = state_getslice(&state, 1, string, 1);
-            if (!item)
-                goto error;
-            break;
-        default:
-            item = PyTuple_New(self->groups);
-            if (!item)
-                goto error;
-            for (i = 0; i < self->groups; i++) {
-                PyObject* o = state_getslice(&state, i+1, string, 1);
-                if (!o) {
-                    Py_DECREF(item);
-                    goto error;
-                }
-                PyTuple_SET_ITEM(item, i, o);
-            }
-            break;
-        }
-
-        status = PyList_Append(list, item);
-        Py_DECREF(item);
-        if (status < 0)
-            goto error;
-
-        if (state.ptr == state.start)
-            state.start = (void*) ((char*) state.ptr + state.charsize);
-        else
-            state.start = state.ptr;
-
-    }
-
-    state_fini(&state);
-    return list;
-
-error:
-    Py_DECREF(list);
-    state_fini(&state);
-    return NULL;
-
-}
-
-#if PY_VERSION_HEX >= 0x02020000
-static PyObject*
-pattern_finditer(PatternObject* pattern, PyObject* args)
-{
-    PyObject* scanner;
-    PyObject* search;
-    PyObject* iterator;
-
-    scanner = pattern_scanner(pattern, args);
-    if (!scanner)
-        return NULL;
-
-    search = PyObject_GetAttrString(scanner, "search");
-    Py_DECREF(scanner);
-    if (!search)
-        return NULL;
-
-    iterator = PyCallIter_New(search, Py_None);
-    Py_DECREF(search);
-
-    return iterator;
-}
-#endif
-
-static PyObject*
-pattern_split(PatternObject* self, PyObject* args, PyObject* kw)
-{
-    SRE_STATE state;
-    PyObject* list;
-    PyObject* item;
-    int status;
-    Py_ssize_t n;
-    Py_ssize_t i;
-    void* last;
-
-    PyObject* string;
-    Py_ssize_t maxsplit = 0;
-    static char* kwlist[] = { "source", "maxsplit", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "O|n:split", kwlist,
-                                     &string, &maxsplit))
-        return NULL;
-
-    string = state_init(&state, self, string, 0, PY_SSIZE_T_MAX);
-    if (!string)
-        return NULL;
-
-    list = PyList_New(0);
-    if (!list) {
-        state_fini(&state);
-        return NULL;
-    }
-
-    n = 0;
-    last = state.start;
-
-    while (!maxsplit || n < maxsplit) {
-
-        state_reset(&state);
-
-        state.ptr = state.start;
-
-        if (state.charsize == 1) {
-            status = sre_search(&state, PatternObject_GetCode(self));
-        } else {
-#if defined(HAVE_UNICODE)
-            status = sre_usearch(&state, PatternObject_GetCode(self));
-#endif
-        }
-
-        if (PyErr_Occurred())
-            goto error;
-
-        if (status <= 0) {
-            if (status == 0)
-                break;
-            pattern_error(status);
-            goto error;
-        }
-
-        if (state.start == state.ptr) {
-            if (last == state.end)
-                break;
-            /* skip one character */
-            state.start = (void*) ((char*) state.ptr + state.charsize);
-            continue;
-        }
-
-        /* get segment before this match */
-        item = PySequence_GetSlice(
-            string, STATE_OFFSET(&state, last),
-            STATE_OFFSET(&state, state.start)
-            );
-        if (!item)
-            goto error;
-        status = PyList_Append(list, item);
-        Py_DECREF(item);
-        if (status < 0)
-            goto error;
-
-        /* add groups (if any) */
-        for (i = 0; i < self->groups; i++) {
-            item = state_getslice(&state, i+1, string, 0);
-            if (!item)
-                goto error;
-            status = PyList_Append(list, item);
-            Py_DECREF(item);
-            if (status < 0)
-                goto error;
-        }
-
-        n = n + 1;
-
-        last = state.start = state.ptr;
-
-    }
-
-    /* get segment following last match (even if empty) */
-    item = PySequence_GetSlice(
-        string, STATE_OFFSET(&state, last), state.endpos
-        );
-    if (!item)
-        goto error;
-    status = PyList_Append(list, item);
-    Py_DECREF(item);
-    if (status < 0)
-        goto error;
-
-    state_fini(&state);
-    return list;
-
-error:
-    Py_DECREF(list);
-    state_fini(&state);
-    return NULL;
-
-}
-
-static PyObject*
-pattern_subx(PatternObject* self, PyObject* ptemplate, PyObject* string,
-             Py_ssize_t count, Py_ssize_t subn)
-{
-    SRE_STATE state;
-    PyObject* list;
-    PyObject* item;
-    PyObject* filter;
-    PyObject* args;
-    PyObject* match;
-    void* ptr;
-    int status;
-    Py_ssize_t n;
-    Py_ssize_t i, b, e;
-    int bint;
-    int filter_is_callable;
-
-    if (PyCallable_Check(ptemplate)) {
-        /* sub/subn takes either a function or a template */
-        filter = ptemplate;
-        Py_INCREF(filter);
-        filter_is_callable = 1;
-    } else {
-        /* if not callable, check if it's a literal string */
-        int literal;
-        ptr = getstring(ptemplate, &n, &bint);
-        b = bint;
-        if (ptr) {
-            if (b == 1) {
-                literal = sre_literal_template((unsigned char *)ptr, n);
-            } else {
-#if defined(HAVE_UNICODE)
-                literal = sre_uliteral_template((Py_UNICODE *)ptr, n);
-#endif
-            }
-        } else {
-            PyErr_Clear();
-            literal = 0;
-        }
-        if (literal) {
-            filter = ptemplate;
-            Py_INCREF(filter);
-            filter_is_callable = 0;
-        } else {
-            /* not a literal; hand it over to the template compiler */
-            filter = call(
-                SRE_PY_MODULE, "_subx",
-                PyTuple_Pack(2, self, ptemplate)
-                );
-            if (!filter)
-                return NULL;
-            filter_is_callable = PyCallable_Check(filter);
-        }
-    }
-
-    string = state_init(&state, self, string, 0, PY_SSIZE_T_MAX);
-    if (!string) {
-        Py_DECREF(filter);
-        return NULL;
-    }
-
-    list = PyList_New(0);
-    if (!list) {
-        Py_DECREF(filter);
-        state_fini(&state);
-        return NULL;
-    }
-
-    n = i = 0;
-
-    while (!count || n < count) {
-
-        state_reset(&state);
-
-        state.ptr = state.start;
-
-        if (state.charsize == 1) {
-            status = sre_search(&state, PatternObject_GetCode(self));
-        } else {
-#if defined(HAVE_UNICODE)
-            status = sre_usearch(&state, PatternObject_GetCode(self));
-#endif
-        }
-
-        if (PyErr_Occurred())
-            goto error;
-
-        if (status <= 0) {
-            if (status == 0)
-                break;
-            pattern_error(status);
-            goto error;
-        }
-
-        b = STATE_OFFSET(&state, state.start);
-        e = STATE_OFFSET(&state, state.ptr);
-
-        if (i < b) {
-            /* get segment before this match */
-            item = PySequence_GetSlice(string, i, b);
-            if (!item)
-                goto error;
-            status = PyList_Append(list, item);
-            Py_DECREF(item);
-            if (status < 0)
-                goto error;
-
-        } else if (i == b && i == e && n > 0)
-            /* ignore empty match on latest position */
-            goto next;
-
-        if (filter_is_callable) {
-            /* pass match object through filter */
-            match = pattern_new_match(self, &state, 1);
-            if (!match)
-                goto error;
-            args = PyTuple_Pack(1, match);
-            if (!args) {
-                Py_DECREF(match);
-                goto error;
-            }
-            item = PyObject_CallObject(filter, args);
-            Py_DECREF(args);
-            Py_DECREF(match);
-            if (!item)
-                goto error;
-        } else {
-            /* filter is literal string */
-            item = filter;
-            Py_INCREF(item);
-        }
-
-        /* add to list */
-        if (item != Py_None) {
-            status = PyList_Append(list, item);
-            Py_DECREF(item);
-            if (status < 0)
-                goto error;
-        }
-
-        i = e;
-        n = n + 1;
-
-next:
-        /* move on */
-        if (state.ptr == state.start)
-            state.start = (void*) ((char*) state.ptr + state.charsize);
-        else
-            state.start = state.ptr;
-
-    }
-
-    /* get segment following last match */
-    if (i < state.endpos) {
-        item = PySequence_GetSlice(string, i, state.endpos);
-        if (!item)
-            goto error;
-        status = PyList_Append(list, item);
-        Py_DECREF(item);
-        if (status < 0)
-            goto error;
-    }
-
-    state_fini(&state);
-
-    Py_DECREF(filter);
-
-    /* convert list to single string (also removes list) */
-    item = join_list(list, string);
-
-    if (!item)
-        return NULL;
-
-    if (subn)
-        return Py_BuildValue("Ni", item, n);
-
-    return item;
-
-error:
-    Py_DECREF(list);
-    state_fini(&state);
-    Py_DECREF(filter);
-    return NULL;
-
-}
-
-static PyObject*
-pattern_sub(PatternObject* self, PyObject* args, PyObject* kw)
-{
-    PyObject* ptemplate;
-    PyObject* string;
-    Py_ssize_t count = 0;
-    static char* kwlist[] = { "repl", "string", "count", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|n:sub", kwlist,
-                                     &ptemplate, &string, &count))
-        return NULL;
-
-    return pattern_subx(self, ptemplate, string, count, 0);
-}
-
-static PyObject*
-pattern_subn(PatternObject* self, PyObject* args, PyObject* kw)
-{
-    PyObject* ptemplate;
-    PyObject* string;
-    Py_ssize_t count = 0;
-    static char* kwlist[] = { "repl", "string", "count", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|n:subn", kwlist,
-                                     &ptemplate, &string, &count))
-        return NULL;
-
-    return pattern_subx(self, ptemplate, string, count, 1);
-}
-
-static PyObject*
-pattern_copy(PatternObject* self, PyObject *unused)
-{
-#ifdef USE_BUILTIN_COPY
-    PatternObject* copy;
-    int offset;
-
-    copy = PyObject_NEW_VAR(PatternObject, &Pattern_Type, self->codesize);
-    if (!copy)
-        return NULL;
-
-    offset = offsetof(PatternObject, groups);
-
-    Py_XINCREF(self->groupindex);
-    Py_XINCREF(self->indexgroup);
-    Py_XINCREF(self->pattern);
-
-    memcpy((char*) copy + offset, (char*) self + offset,
-           sizeof(PatternObject) + self->codesize * sizeof(SRE_CODE) - offset);
-    copy->weakreflist = NULL;
-
-    return (PyObject*) copy;
-#else
-    PyErr_SetString(PyExc_TypeError, "cannot copy this pattern object");
-    return NULL;
-#endif
-}
-
-static PyObject*
-pattern_deepcopy(PatternObject* self, PyObject* memo)
-{
-#ifdef USE_BUILTIN_COPY
-    PatternObject* copy;
-
-    copy = (PatternObject*) pattern_copy(self);
-    if (!copy)
-        return NULL;
-
-    if (!deepcopy(&copy->groupindex, memo) ||
-        !deepcopy(&copy->indexgroup, memo) ||
-        !deepcopy(&copy->pattern, memo)) {
-        Py_DECREF(copy);
-        return NULL;
-    }
-
-#else
-    PyErr_SetString(PyExc_TypeError, "cannot deepcopy this pattern object");
-    return NULL;
-#endif
-}
-
-PyDoc_STRVAR(pattern_match_doc,
-"match(string[, pos[, endpos]]) --> match object or None.\n\
-    Matches zero or more characters at the beginning of the string");
-
-PyDoc_STRVAR(pattern_search_doc,
-"search(string[, pos[, endpos]]) --> match object or None.\n\
-    Scan through string looking for a match, and return a corresponding\n\
-    MatchObject instance. Return None if no position in the string matches.");
-
-PyDoc_STRVAR(pattern_split_doc,
-"split(string[, maxsplit = 0])  --> list.\n\
-    Split string by the occurrences of pattern.");
-
-PyDoc_STRVAR(pattern_findall_doc,
-"findall(string[, pos[, endpos]]) --> list.\n\
-   Return a list of all non-overlapping matches of pattern in string.");
-
-PyDoc_STRVAR(pattern_finditer_doc,
-"finditer(string[, pos[, endpos]]) --> iterator.\n\
-    Return an iterator over all non-overlapping matches for the \n\
-    RE pattern in string. For each match, the iterator returns a\n\
-    match object.");
-
-PyDoc_STRVAR(pattern_sub_doc,
-"sub(repl, string[, count = 0]) --> newstring\n\
-    Return the string obtained by replacing the leftmost non-overlapping\n\
-    occurrences of pattern in string by the replacement repl.");
-
-PyDoc_STRVAR(pattern_subn_doc,
-"subn(repl, string[, count = 0]) --> (newstring, number of subs)\n\
-    Return the tuple (new_string, number_of_subs_made) found by replacing\n\
-    the leftmost non-overlapping occurrences of pattern with the\n\
-    replacement repl.");
-
-PyDoc_STRVAR(pattern_doc, "Compiled regular expression objects");
-
-static PyMethodDef pattern_methods[] = {
-    {"match", (PyCFunction) pattern_match, METH_VARARGS|METH_KEYWORDS,
-        pattern_match_doc},
-    {"search", (PyCFunction) pattern_search, METH_VARARGS|METH_KEYWORDS,
-        pattern_search_doc},
-    {"sub", (PyCFunction) pattern_sub, METH_VARARGS|METH_KEYWORDS,
-        pattern_sub_doc},
-    {"subn", (PyCFunction) pattern_subn, METH_VARARGS|METH_KEYWORDS,
-        pattern_subn_doc},
-    {"split", (PyCFunction) pattern_split, METH_VARARGS|METH_KEYWORDS,
-        pattern_split_doc},
-    {"findall", (PyCFunction) pattern_findall, METH_VARARGS|METH_KEYWORDS,
-        pattern_findall_doc},
-#if PY_VERSION_HEX >= 0x02020000
-    {"finditer", (PyCFunction) pattern_finditer, METH_VARARGS,
-        pattern_finditer_doc},
-#endif
-    {"scanner", (PyCFunction) pattern_scanner, METH_VARARGS},
-    {"__copy__", (PyCFunction) pattern_copy, METH_NOARGS},
-    {"__deepcopy__", (PyCFunction) pattern_deepcopy, METH_O},
-    {NULL, NULL}
-};
-
-#define PAT_OFF(x) offsetof(PatternObject, x)
-static PyMemberDef pattern_members[] = {
-    {"pattern",    T_OBJECT,    PAT_OFF(pattern),       READONLY},
-    {"flags",      T_INT,       PAT_OFF(flags),         READONLY},
-    {"groups",     T_PYSSIZET,  PAT_OFF(groups),        READONLY},
-    {"groupindex", T_OBJECT,    PAT_OFF(groupindex),    READONLY},
-    {NULL}  /* Sentinel */
-};
-
-statichere PyTypeObject Pattern_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0, "_" SRE_MODULE ".SRE_Pattern",
-    sizeof(PatternObject), sizeof(SRE_CODE),
-    (destructor)pattern_dealloc, /*tp_dealloc*/
-    0,                                  /* tp_print */
-    0,                                  /* tp_getattrn */
-    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 */
-    Py_TPFLAGS_DEFAULT,           /* tp_flags */
-    pattern_doc,      /* tp_doc */
-    0,          /* tp_traverse */
-    0,          /* tp_clear */
-    0,          /* tp_richcompare */
-    offsetof(PatternObject, weakreflist), /* tp_weaklistoffset */
-    0,          /* tp_iter */
-    0,          /* tp_iternext */
-    pattern_methods,      /* tp_methods */
-    pattern_members,      /* tp_members */
-};
-
-static int _validate(PatternObject *self); /* Forward */
-
-static PyObject *
-_compile(PyObject* self_, PyObject* args)
-{
-    /* "compile" pattern descriptor to pattern object */
-
-    PatternObject* self;
-    Py_ssize_t i, n;
-
-    PyObject* pattern;
-    int flags = 0;
-    PyObject* code;
-    Py_ssize_t groups = 0;
-    PyObject* groupindex = NULL;
-    PyObject* indexgroup = NULL;
-    if (!PyArg_ParseTuple(args, "OiO!|nOO", &pattern, &flags,
-                          &PyList_Type, &code, &groups,
-                          &groupindex, &indexgroup))
-        return NULL;
-
-    n = PyList_GET_SIZE(code);
-    /* coverity[ampersand_in_size] */
-    self = PyObject_NEW_VAR(PatternObject, &Pattern_Type, n);
-    if (!self)
-        return NULL;
-    self->weakreflist = NULL;
-    self->pattern = NULL;
-    self->groupindex = NULL;
-    self->indexgroup = NULL;
-
-    self->codesize = n;
-
-    for (i = 0; i < n; i++) {
-        PyObject *o = PyList_GET_ITEM(code, i);
-        unsigned long value = PyInt_Check(o) ? (unsigned long)PyInt_AsLong(o)
-                                              : PyLong_AsUnsignedLong(o);
-        self->code[i] = (SRE_CODE) value;
-        if ((unsigned long) self->code[i] != value) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "regular expression code size limit exceeded");
-            break;
-        }
-    }
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(self);
-        return NULL;
-    }
-
-    Py_INCREF(pattern);
-    self->pattern = pattern;
-
-    self->flags = flags;
-
-    self->groups = groups;
-
-    Py_XINCREF(groupindex);
-    self->groupindex = groupindex;
-
-    Py_XINCREF(indexgroup);
-    self->indexgroup = indexgroup;
-
-    self->weakreflist = NULL;
-
-    if (!_validate(self)) {
-        Py_DECREF(self);
-        return NULL;
-    }
-
-    return (PyObject*) self;
-}
-
-/* -------------------------------------------------------------------- */
-/* Code validation */
-
-/* To learn more about this code, have a look at the _compile() function in
-   Lib/sre_compile.py.  The validation functions below checks the code array
-   for conformance with the code patterns generated there.
-
-   The nice thing about the generated code is that it is position-independent:
-   all jumps are relative jumps forward.  Also, jumps don't cross each other:
-   the target of a later jump is always earlier than the target of an earlier
-   jump.  IOW, this is okay:
-
-   J---------J-------T--------T
-    \         \_____/        /
-     \______________________/
-
-   but this is not:
-
-   J---------J-------T--------T
-    \_________\_____/        /
-               \____________/
-
-   It also helps that SRE_CODE is always an unsigned type, either 2 bytes or 4
-   bytes wide (the latter if Python is compiled for "wide" unicode support).
-*/
-
-/* Defining this one enables tracing of the validator */
-#undef VVERBOSE
-
-/* Trace macro for the validator */
-#if defined(VVERBOSE)
-#define VTRACE(v) printf v
-#else
-#define VTRACE(v)
-#endif
-
-/* Report failure */
-#define FAIL do { VTRACE(("FAIL: %d\n", __LINE__)); return 0; } while (0)
-
-/* Extract opcode, argument, or skip count from code array */
-#define GET_OP                                          \
-    do {                                                \
-        VTRACE(("%p: ", code));                         \
-        if (code >= end) FAIL;                          \
-        op = *code++;                                   \
-        VTRACE(("%lu (op)\n", (unsigned long)op));      \
-    } while (0)
-#define GET_ARG                                         \
-    do {                                                \
-        VTRACE(("%p= ", code));                         \
-        if (code >= end) FAIL;                          \
-        arg = *code++;                                  \
-        VTRACE(("%lu (arg)\n", (unsigned long)arg));    \
-    } while (0)
-#define GET_SKIP_ADJ(adj)                               \
-    do {                                                \
-        VTRACE(("%p= ", code));                         \
-        if (code >= end) FAIL;                          \
-        skip = *code;                                   \
-        VTRACE(("%lu (skip to %p)\n",                   \
-               (unsigned long)skip, code+skip));        \
-        if (code+skip-adj < code || code+skip-adj > end)\
-            FAIL;                                       \
-        code++;                                         \
-    } while (0)
-#define GET_SKIP GET_SKIP_ADJ(0)
-
-static int
-_validate_charset(SRE_CODE *code, SRE_CODE *end)
-{
-    /* Some variables are manipulated by the macros above */
-    SRE_CODE op;
-    SRE_CODE arg;
-    SRE_CODE offset;
-    int i;
-
-    while (code < end) {
-        GET_OP;
-        switch (op) {
-
-        case SRE_OP_NEGATE:
-            break;
-
-        case SRE_OP_LITERAL:
-            GET_ARG;
-            break;
-
-        case SRE_OP_RANGE:
-            GET_ARG;
-            GET_ARG;
-            break;
-
-        case SRE_OP_CHARSET:
-            offset = 32/sizeof(SRE_CODE); /* 32-byte bitmap */
-            if (code+offset < code || code+offset > end)
-                FAIL;
-            code += offset;
-            break;
-
-        case SRE_OP_BIGCHARSET:
-            GET_ARG; /* Number of blocks */
-            offset = 256/sizeof(SRE_CODE); /* 256-byte table */
-            if (code+offset < code || code+offset > end)
-                FAIL;
-            /* Make sure that each byte points to a valid block */
-            for (i = 0; i < 256; i++) {
-                if (((unsigned char *)code)[i] >= arg)
-                    FAIL;
-            }
-            code += offset;
-            offset = arg * 32/sizeof(SRE_CODE); /* 32-byte bitmap times arg */
-            if (code+offset < code || code+offset > end)
-                FAIL;
-            code += offset;
-            break;
-
-        case SRE_OP_CATEGORY:
-            GET_ARG;
-            switch (arg) {
-            case SRE_CATEGORY_DIGIT:
-            case SRE_CATEGORY_NOT_DIGIT:
-            case SRE_CATEGORY_SPACE:
-            case SRE_CATEGORY_NOT_SPACE:
-            case SRE_CATEGORY_WORD:
-            case SRE_CATEGORY_NOT_WORD:
-            case SRE_CATEGORY_LINEBREAK:
-            case SRE_CATEGORY_NOT_LINEBREAK:
-            case SRE_CATEGORY_LOC_WORD:
-            case SRE_CATEGORY_LOC_NOT_WORD:
-            case SRE_CATEGORY_UNI_DIGIT:
-            case SRE_CATEGORY_UNI_NOT_DIGIT:
-            case SRE_CATEGORY_UNI_SPACE:
-            case SRE_CATEGORY_UNI_NOT_SPACE:
-            case SRE_CATEGORY_UNI_WORD:
-            case SRE_CATEGORY_UNI_NOT_WORD:
-            case SRE_CATEGORY_UNI_LINEBREAK:
-            case SRE_CATEGORY_UNI_NOT_LINEBREAK:
-                break;
-            default:
-                FAIL;
-            }
-            break;
-
-        default:
-            FAIL;
-
-        }
-    }
-
-    return 1;
-}
-
-static int
-_validate_inner(SRE_CODE *code, SRE_CODE *end, Py_ssize_t groups)
-{
-    /* Some variables are manipulated by the macros above */
-    SRE_CODE op;
-    SRE_CODE arg;
-    SRE_CODE skip;
-
-    VTRACE(("code=%p, end=%p\n", code, end));
-
-    if (code > end)
-        FAIL;
-
-    while (code < end) {
-        GET_OP;
-        switch (op) {
-
-        case SRE_OP_MARK:
-            /* We don't check whether marks are properly nested; the
-               sre_match() code is robust even if they don't, and the worst
-               you can get is nonsensical match results. */
-            GET_ARG;
-            if (arg > 2*groups+1) {
-                VTRACE(("arg=%d, groups=%d\n", (int)arg, (int)groups));
-                FAIL;
-            }
-            break;
-
-        case SRE_OP_LITERAL:
-        case SRE_OP_NOT_LITERAL:
-        case SRE_OP_LITERAL_IGNORE:
-        case SRE_OP_NOT_LITERAL_IGNORE:
-            GET_ARG;
-            /* The arg is just a character, nothing to check */
-            break;
-
-        case SRE_OP_SUCCESS:
-        case SRE_OP_FAILURE:
-            /* Nothing to check; these normally end the matching process */
-            break;
-
-        case SRE_OP_AT:
-            GET_ARG;
-            switch (arg) {
-            case SRE_AT_BEGINNING:
-            case SRE_AT_BEGINNING_STRING:
-            case SRE_AT_BEGINNING_LINE:
-            case SRE_AT_END:
-            case SRE_AT_END_LINE:
-            case SRE_AT_END_STRING:
-            case SRE_AT_BOUNDARY:
-            case SRE_AT_NON_BOUNDARY:
-            case SRE_AT_LOC_BOUNDARY:
-            case SRE_AT_LOC_NON_BOUNDARY:
-            case SRE_AT_UNI_BOUNDARY:
-            case SRE_AT_UNI_NON_BOUNDARY:
-                break;
-            default:
-                FAIL;
-            }
-            break;
-
-        case SRE_OP_ANY:
-        case SRE_OP_ANY_ALL:
-            /* These have no operands */
-            break;
-
-        case SRE_OP_IN:
-        case SRE_OP_IN_IGNORE:
-            GET_SKIP;
-            /* Stop 1 before the end; we check the FAILURE below */
-            if (!_validate_charset(code, code+skip-2))
-                FAIL;
-            if (code[skip-2] != SRE_OP_FAILURE)
-                FAIL;
-            code += skip-1;
-            break;
-
-        case SRE_OP_INFO:
-            {
-                /* A minimal info field is
-                   <INFO> <1=skip> <2=flags> <3=min> <4=max>;
-                   If SRE_INFO_PREFIX or SRE_INFO_CHARSET is in the flags,
-                   more follows. */
-                SRE_CODE flags, i;
-                SRE_CODE *newcode;
-                GET_SKIP;
-                newcode = code+skip-1;
-                GET_ARG; flags = arg;
-                GET_ARG; /* min */
-                GET_ARG; /* max */
-                /* Check that only valid flags are present */
-                if ((flags & ~(SRE_INFO_PREFIX |
-                               SRE_INFO_LITERAL |
-                               SRE_INFO_CHARSET)) != 0)
-                    FAIL;
-                /* PREFIX and CHARSET are mutually exclusive */
-                if ((flags & SRE_INFO_PREFIX) &&
-                    (flags & SRE_INFO_CHARSET))
-                    FAIL;
-                /* LITERAL implies PREFIX */
-                if ((flags & SRE_INFO_LITERAL) &&
-                    !(flags & SRE_INFO_PREFIX))
-                    FAIL;
-                /* Validate the prefix */
-                if (flags & SRE_INFO_PREFIX) {
-                    SRE_CODE prefix_len;
-                    GET_ARG; prefix_len = arg;
-                    GET_ARG; /* prefix skip */
-                    /* Here comes the prefix string */
-                    if (code+prefix_len < code || code+prefix_len > newcode)
-                        FAIL;
-                    code += prefix_len;
-                    /* And here comes the overlap table */
-                    if (code+prefix_len < code || code+prefix_len > newcode)
-                        FAIL;
-                    /* Each overlap value should be < prefix_len */
-                    for (i = 0; i < prefix_len; i++) {
-                        if (code[i] >= prefix_len)
-                            FAIL;
-                    }
-                    code += prefix_len;
-                }
-                /* Validate the charset */
-                if (flags & SRE_INFO_CHARSET) {
-                    if (!_validate_charset(code, newcode-1))
-                        FAIL;
-                    if (newcode[-1] != SRE_OP_FAILURE)
-                        FAIL;
-                    code = newcode;
-                }
-                else if (code != newcode) {
-                  VTRACE(("code=%p, newcode=%p\n", code, newcode));
-                    FAIL;
-                }
-            }
-            break;
-
-        case SRE_OP_BRANCH:
-            {
-                SRE_CODE *target = NULL;
-                for (;;) {
-                    GET_SKIP;
-                    if (skip == 0)
-                        break;
-                    /* Stop 2 before the end; we check the JUMP below */
-                    if (!_validate_inner(code, code+skip-3, groups))
-                        FAIL;
-                    code += skip-3;
-                    /* Check that it ends with a JUMP, and that each JUMP
-                       has the same target */
-                    GET_OP;
-                    if (op != SRE_OP_JUMP)
-                        FAIL;
-                    GET_SKIP;
-                    if (target == NULL)
-                        target = code+skip-1;
-                    else if (code+skip-1 != target)
-                        FAIL;
-                }
-            }
-            break;
-
-        case SRE_OP_REPEAT_ONE:
-        case SRE_OP_MIN_REPEAT_ONE:
-            {
-                SRE_CODE min, max;
-                GET_SKIP;
-                GET_ARG; min = arg;
-                GET_ARG; max = arg;
-                if (min > max)
-                    FAIL;
-#ifdef Py_UNICODE_WIDE
-                if (max > 65535)
-                    FAIL;
-#endif
-                if (!_validate_inner(code, code+skip-4, groups))
-                    FAIL;
-                code += skip-4;
-                GET_OP;
-                if (op != SRE_OP_SUCCESS)
-                    FAIL;
-            }
-            break;
-
-        case SRE_OP_REPEAT:
-            {
-                SRE_CODE min, max;
-                GET_SKIP;
-                GET_ARG; min = arg;
-                GET_ARG; max = arg;
-                if (min > max)
-                    FAIL;
-#ifdef Py_UNICODE_WIDE
-                if (max > 65535)
-                    FAIL;
-#endif
-                if (!_validate_inner(code, code+skip-3, groups))
-                    FAIL;
-                code += skip-3;
-                GET_OP;
-                if (op != SRE_OP_MAX_UNTIL && op != SRE_OP_MIN_UNTIL)
-                    FAIL;
-            }
-            break;
-
-        case SRE_OP_GROUPREF:
-        case SRE_OP_GROUPREF_IGNORE:
-            GET_ARG;
-            if (arg >= groups)
-                FAIL;
-            break;
-
-        case SRE_OP_GROUPREF_EXISTS:
-            /* The regex syntax for this is: '(?(group)then|else)', where
-               'group' is either an integer group number or a group name,
-               'then' and 'else' are sub-regexes, and 'else' is optional. */
-            GET_ARG;
-            if (arg >= groups)
-                FAIL;
-            GET_SKIP_ADJ(1);
-            code--; /* The skip is relative to the first arg! */
-            /* There are two possibilities here: if there is both a 'then'
-               part and an 'else' part, the generated code looks like:
-
-               GROUPREF_EXISTS
-               <group>
-               <skipyes>
-               ...then part...
-               JUMP
-               <skipno>
-               (<skipyes> jumps here)
-               ...else part...
-               (<skipno> jumps here)
-
-               If there is only a 'then' part, it looks like:
-
-               GROUPREF_EXISTS
-               <group>
-               <skip>
-               ...then part...
-               (<skip> jumps here)
-
-               There is no direct way to decide which it is, and we don't want
-               to allow arbitrary jumps anywhere in the code; so we just look
-               for a JUMP opcode preceding our skip target.
-            */
-            if (skip >= 3 && code+skip-3 >= code &&
-                code[skip-3] == SRE_OP_JUMP)
-            {
-                VTRACE(("both then and else parts present\n"));
-                if (!_validate_inner(code+1, code+skip-3, groups))
-                    FAIL;
-                code += skip-2; /* Position after JUMP, at <skipno> */
-                GET_SKIP;
-                if (!_validate_inner(code, code+skip-1, groups))
-                    FAIL;
-                code += skip-1;
-            }
-            else {
-                VTRACE(("only a then part present\n"));
-                if (!_validate_inner(code+1, code+skip-1, groups))
-                    FAIL;
-                code += skip-1;
-            }
-            break;
-
-        case SRE_OP_ASSERT:
-        case SRE_OP_ASSERT_NOT:
-            GET_SKIP;
-            GET_ARG; /* 0 for lookahead, width for lookbehind */
-            code--; /* Back up over arg to simplify math below */
-            if (arg & 0x80000000)
-                FAIL; /* Width too large */
-            /* Stop 1 before the end; we check the SUCCESS below */
-            if (!_validate_inner(code+1, code+skip-2, groups))
-                FAIL;
-            code += skip-2;
-            GET_OP;
-            if (op != SRE_OP_SUCCESS)
-                FAIL;
-            break;
-
-        default:
-            FAIL;
-
-        }
-    }
-
-    VTRACE(("okay\n"));
-    return 1;
-}
-
-static int
-_validate_outer(SRE_CODE *code, SRE_CODE *end, Py_ssize_t groups)
-{
-    if (groups < 0 || groups > 100 || code >= end || end[-1] != SRE_OP_SUCCESS)
-        FAIL;
-    if (groups == 0)  /* fix for simplejson */
-        groups = 100; /* 100 groups should always be safe */
-    return _validate_inner(code, end-1, groups);
-}
-
-static int
-_validate(PatternObject *self)
-{
-    if (!_validate_outer(self->code, self->code+self->codesize, self->groups))
-    {
-        PyErr_SetString(PyExc_RuntimeError, "invalid SRE code");
-        return 0;
-    }
-    else
-        VTRACE(("Success!\n"));
-    return 1;
-}
-
-/* -------------------------------------------------------------------- */
-/* match methods */
-
-static void
-match_dealloc(MatchObject* self)
-{
-    Py_XDECREF(self->regs);
-    Py_XDECREF(self->string);
-    Py_DECREF(self->pattern);
-    PyObject_DEL(self);
-}
-
-static PyObject*
-match_getslice_by_index(MatchObject* self, Py_ssize_t index, PyObject* def)
-{
-    if (index < 0 || index >= self->groups) {
-        /* raise IndexError if we were given a bad group number */
-        PyErr_SetString(
-            PyExc_IndexError,
-            "no such group"
-            );
-        return NULL;
-    }
-
-    index *= 2;
-
-    if (self->string == Py_None || self->mark[index] < 0) {
-        /* return default value if the string or group is undefined */
-        Py_INCREF(def);
-        return def;
-    }
-
-    return PySequence_GetSlice(
-        self->string, self->mark[index], self->mark[index+1]
-        );
-}
-
-static Py_ssize_t
-match_getindex(MatchObject* self, PyObject* index)
-{
-    Py_ssize_t i;
-
-    if (PyInt_Check(index))
-        return PyInt_AsSsize_t(index);
-
-    i = -1;
-
-    if (self->pattern->groupindex) {
-        index = PyObject_GetItem(self->pattern->groupindex, index);
-        if (index) {
-            if (PyInt_Check(index) || PyLong_Check(index))
-                i = PyInt_AsSsize_t(index);
-            Py_DECREF(index);
-        } else
-            PyErr_Clear();
-    }
-
-    return i;
-}
-
-static PyObject*
-match_getslice(MatchObject* self, PyObject* index, PyObject* def)
-{
-    return match_getslice_by_index(self, match_getindex(self, index), def);
-}
-
-static PyObject*
-match_expand(MatchObject* self, PyObject* ptemplate)
-{
-    /* delegate to Python code */
-    return call(
-        SRE_PY_MODULE, "_expand",
-        PyTuple_Pack(3, self->pattern, self, ptemplate)
-        );
-}
-
-static PyObject*
-match_group(MatchObject* self, PyObject* args)
-{
-    PyObject* result;
-    Py_ssize_t i, size;
-
-    size = PyTuple_GET_SIZE(args);
-
-    switch (size) {
-    case 0:
-        result = match_getslice(self, Py_False, Py_None);
-        break;
-    case 1:
-        result = match_getslice(self, PyTuple_GET_ITEM(args, 0), Py_None);
-        break;
-    default:
-        /* fetch multiple items */
-        result = PyTuple_New(size);
-        if (!result)
-            return NULL;
-        for (i = 0; i < size; i++) {
-            PyObject* item = match_getslice(
-                self, PyTuple_GET_ITEM(args, i), Py_None
-                );
-            if (!item) {
-                Py_DECREF(result);
-                return NULL;
-            }
-            PyTuple_SET_ITEM(result, i, item);
-        }
-        break;
-    }
-    return result;
-}
-
-static PyObject*
-match_groups(MatchObject* self, PyObject* args, PyObject* kw)
-{
-    PyObject* result;
-    Py_ssize_t index;
-
-    PyObject* def = Py_None;
-    static char* kwlist[] = { "default", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "|O:groups", kwlist, &def))
-        return NULL;
-
-    result = PyTuple_New(self->groups-1);
-    if (!result)
-        return NULL;
-
-    for (index = 1; index < self->groups; index++) {
-        PyObject* item;
-        item = match_getslice_by_index(self, index, def);
-        if (!item) {
-            Py_DECREF(result);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(result, index-1, item);
-    }
-
-    return result;
-}
-
-static PyObject*
-match_groupdict(MatchObject* self, PyObject* args, PyObject* kw)
-{
-    PyObject* result;
-    PyObject* keys;
-    Py_ssize_t index;
-
-    PyObject* def = Py_None;
-    static char* kwlist[] = { "default", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "|O:groupdict", kwlist, &def))
-        return NULL;
-
-    result = PyDict_New();
-    if (!result || !self->pattern->groupindex)
-        return result;
-
-    keys = PyMapping_Keys(self->pattern->groupindex);
-    if (!keys)
-        goto failed;
-
-    for (index = 0; index < PyList_GET_SIZE(keys); index++) {
-        int status;
-        PyObject* key;
-        PyObject* value;
-        key = PyList_GET_ITEM(keys, index);
-        if (!key)
-            goto failed;
-        value = match_getslice(self, key, def);
-        if (!value) {
-            Py_DECREF(key);
-            goto failed;
-        }
-        status = PyDict_SetItem(result, key, value);
-        Py_DECREF(value);
-        if (status < 0)
-            goto failed;
-    }
-
-    Py_DECREF(keys);
-
-    return result;
-
-failed:
-    Py_XDECREF(keys);
-    Py_DECREF(result);
-    return NULL;
-}
-
-static PyObject*
-match_start(MatchObject* self, PyObject* args)
-{
-    Py_ssize_t index;
-
-    PyObject* index_ = Py_False; /* zero */
-    if (!PyArg_UnpackTuple(args, "start", 0, 1, &index_))
-        return NULL;
-
-    index = match_getindex(self, index_);
-
-    if (index < 0 || index >= self->groups) {
-        PyErr_SetString(
-            PyExc_IndexError,
-            "no such group"
-            );
-        return NULL;
-    }
-
-    /* mark is -1 if group is undefined */
-    return Py_BuildValue("i", self->mark[index*2]);
-}
-
-static PyObject*
-match_end(MatchObject* self, PyObject* args)
-{
-    Py_ssize_t index;
-
-    PyObject* index_ = Py_False; /* zero */
-    if (!PyArg_UnpackTuple(args, "end", 0, 1, &index_))
-        return NULL;
-
-    index = match_getindex(self, index_);
-
-    if (index < 0 || index >= self->groups) {
-        PyErr_SetString(
-            PyExc_IndexError,
-            "no such group"
-            );
-        return NULL;
-    }
-
-    /* mark is -1 if group is undefined */
-    return Py_BuildValue("i", self->mark[index*2+1]);
-}
-
-LOCAL(PyObject*)
-_pair(Py_ssize_t i1, Py_ssize_t i2)
-{
-    PyObject* pair;
-    PyObject* item;
-
-    pair = PyTuple_New(2);
-    if (!pair)
-        return NULL;
-
-    item = PyInt_FromSsize_t(i1);
-    if (!item)
-        goto error;
-    PyTuple_SET_ITEM(pair, 0, item);
-
-    item = PyInt_FromSsize_t(i2);
-    if (!item)
-        goto error;
-    PyTuple_SET_ITEM(pair, 1, item);
-
-    return pair;
-
-  error:
-    Py_DECREF(pair);
-    return NULL;
-}
-
-static PyObject*
-match_span(MatchObject* self, PyObject* args)
-{
-    Py_ssize_t index;
-
-    PyObject* index_ = Py_False; /* zero */
-    if (!PyArg_UnpackTuple(args, "span", 0, 1, &index_))
-        return NULL;
-
-    index = match_getindex(self, index_);
-
-    if (index < 0 || index >= self->groups) {
-        PyErr_SetString(
-            PyExc_IndexError,
-            "no such group"
-            );
-        return NULL;
-    }
-
-    /* marks are -1 if group is undefined */
-    return _pair(self->mark[index*2], self->mark[index*2+1]);
-}
-
-static PyObject*
-match_regs(MatchObject* self)
-{
-    PyObject* regs;
-    PyObject* item;
-    Py_ssize_t index;
-
-    regs = PyTuple_New(self->groups);
-    if (!regs)
-        return NULL;
-
-    for (index = 0; index < self->groups; index++) {
-        item = _pair(self->mark[index*2], self->mark[index*2+1]);
-        if (!item) {
-            Py_DECREF(regs);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(regs, index, item);
-    }
-
-    Py_INCREF(regs);
-    self->regs = regs;
-
-    return regs;
-}
-
-static PyObject*
-match_copy(MatchObject* self, PyObject *unused)
-{
-#ifdef USE_BUILTIN_COPY
-    MatchObject* copy;
-    Py_ssize_t slots, offset;
-
-    slots = 2 * (self->pattern->groups+1);
-
-    copy = PyObject_NEW_VAR(MatchObject, &Match_Type, slots);
-    if (!copy)
-        return NULL;
-
-    /* this value a constant, but any compiler should be able to
-       figure that out all by itself */
-    offset = offsetof(MatchObject, string);
-
-    Py_XINCREF(self->pattern);
-    Py_XINCREF(self->string);
-    Py_XINCREF(self->regs);
-
-    memcpy((char*) copy + offset, (char*) self + offset,
-           sizeof(MatchObject) + slots * sizeof(Py_ssize_t) - offset);
-
-    return (PyObject*) copy;
-#else
-    PyErr_SetString(PyExc_TypeError, "cannot copy this match object");
-    return NULL;
-#endif
-}
-
-static PyObject*
-match_deepcopy(MatchObject* self, PyObject* memo)
-{
-#ifdef USE_BUILTIN_COPY
-    MatchObject* copy;
-
-    copy = (MatchObject*) match_copy(self);
-    if (!copy)
-        return NULL;
-
-    if (!deepcopy((PyObject**) &copy->pattern, memo) ||
-        !deepcopy(&copy->string, memo) ||
-        !deepcopy(&copy->regs, memo)) {
-        Py_DECREF(copy);
-        return NULL;
-    }
-
-#else
-    PyErr_SetString(PyExc_TypeError, "cannot deepcopy this match object");
-    return NULL;
-#endif
-}
-
-static struct PyMethodDef match_methods[] = {
-    {"group", (PyCFunction) match_group, METH_VARARGS},
-    {"start", (PyCFunction) match_start, METH_VARARGS},
-    {"end", (PyCFunction) match_end, METH_VARARGS},
-    {"span", (PyCFunction) match_span, METH_VARARGS},
-    {"groups", (PyCFunction) match_groups, METH_VARARGS|METH_KEYWORDS},
-    {"groupdict", (PyCFunction) match_groupdict, METH_VARARGS|METH_KEYWORDS},
-    {"expand", (PyCFunction) match_expand, METH_O},
-    {"__copy__", (PyCFunction) match_copy, METH_NOARGS},
-    {"__deepcopy__", (PyCFunction) match_deepcopy, METH_O},
-    {NULL, NULL}
-};
-
-static PyObject *
-match_lastindex_get(MatchObject *self)
-{
-    if (self->lastindex >= 0)
-  return Py_BuildValue("i", self->lastindex);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-match_lastgroup_get(MatchObject *self)
-{
-    if (self->pattern->indexgroup && self->lastindex >= 0) {
-        PyObject* result = PySequence_GetItem(
-            self->pattern->indexgroup, self->lastindex
-            );
-        if (result)
-            return result;
-        PyErr_Clear();
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-match_regs_get(MatchObject *self)
-{
-    if (self->regs) {
-        Py_INCREF(self->regs);
-        return self->regs;
-    } else
-        return match_regs(self);
-}
-
-static PyGetSetDef match_getset[] = {
-    {"lastindex", (getter)match_lastindex_get, (setter)NULL},
-    {"lastgroup", (getter)match_lastgroup_get, (setter)NULL},
-    {"regs",      (getter)match_regs_get,      (setter)NULL},
-    {NULL}
-};
-
-#define MATCH_OFF(x) offsetof(MatchObject, x)
-static PyMemberDef match_members[] = {
-    {"string",  T_OBJECT,   MATCH_OFF(string),  READONLY},
-    {"re",      T_OBJECT,   MATCH_OFF(pattern), READONLY},
-    {"pos",     T_PYSSIZET, MATCH_OFF(pos),     READONLY},
-    {"endpos",  T_PYSSIZET, MATCH_OFF(endpos),  READONLY},
-    {NULL}
-};
-
-
-/* FIXME: implement setattr("string", None) as a special case (to
-   detach the associated string, if any */
-
-static PyTypeObject Match_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_" SRE_MODULE ".SRE_Match",
-    sizeof(MatchObject), sizeof(Py_ssize_t),
-    (destructor)match_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 */
-    Py_TPFLAGS_DEFAULT,
-    0,                          /* tp_doc */
-    0,                          /* tp_traverse */
-    0,                          /* tp_clear */
-    0,                          /* tp_richcompare */
-    0,                          /* tp_weaklistoffset */
-    0,                          /* tp_iter */
-    0,                          /* tp_iternext */
-    match_methods,    /* tp_methods */
-    match_members,    /* tp_members */
-    match_getset,           /* tp_getset */
-};
-
-static PyObject*
-pattern_new_match(PatternObject* pattern, SRE_STATE* state, int status)
-{
-    /* create match object (from state object) */
-
-    MatchObject* match;
-    Py_ssize_t i, j;
-    char* base;
-    int n;
-
-    if (status > 0) {
-
-        /* create match object (with room for extra group marks) */
-        /* coverity[ampersand_in_size] */
-        match = PyObject_NEW_VAR(MatchObject, &Match_Type,
-                                 2*(pattern->groups+1));
-        if (!match)
-            return NULL;
-
-        Py_INCREF(pattern);
-        match->pattern = pattern;
-
-        Py_INCREF(state->string);
-        match->string = state->string;
-
-        match->regs = NULL;
-        match->groups = pattern->groups+1;
-
-        /* fill in group slices */
-
-        base = (char*) state->beginning;
-        n = state->charsize;
-
-        match->mark[0] = ((char*) state->start - base) / n;
-        match->mark[1] = ((char*) state->ptr - base) / n;
-
-        for (i = j = 0; i < pattern->groups; i++, j+=2)
-            if (j+1 <= state->lastmark && state->mark[j] && state->mark[j+1]) {
-                match->mark[j+2] = ((char*) state->mark[j] - base) / n;
-                match->mark[j+3] = ((char*) state->mark[j+1] - base) / n;
-            } else
-                match->mark[j+2] = match->mark[j+3] = -1; /* undefined */
-
-        match->pos = state->pos;
-        match->endpos = state->endpos;
-
-        match->lastindex = state->lastindex;
-
-        return (PyObject*) match;
-
-    } else if (status == 0) {
-
-        /* no match */
-        Py_INCREF(Py_None);
-        return Py_None;
-
-    }
-
-    /* internal error */
-    pattern_error(status);
-    return NULL;
-}
-
-
-/* -------------------------------------------------------------------- */
-/* scanner methods (experimental) */
-
-static void
-scanner_dealloc(ScannerObject* self)
-{
-    state_fini(&self->state);
-    Py_XDECREF(self->pattern);
-    PyObject_DEL(self);
-}
-
-static PyObject*
-scanner_match(ScannerObject* self, PyObject *unused)
-{
-    SRE_STATE* state = &self->state;
-    PyObject* match;
-    int status;
-
-    state_reset(state);
-
-    state->ptr = state->start;
-
-    if (state->charsize == 1) {
-        status = sre_match(state, PatternObject_GetCode(self->pattern));
-    } else {
-#if defined(HAVE_UNICODE)
-        status = sre_umatch(state, PatternObject_GetCode(self->pattern));
-#endif
-    }
-    if (PyErr_Occurred())
-        return NULL;
-
-    match = pattern_new_match((PatternObject*) self->pattern,
-                               state, status);
-
-    if (status == 0 || state->ptr == state->start)
-        state->start = (void*) ((char*) state->ptr + state->charsize);
-    else
-        state->start = state->ptr;
-
-    return match;
-}
-
-
-static PyObject*
-scanner_search(ScannerObject* self, PyObject *unused)
-{
-    SRE_STATE* state = &self->state;
-    PyObject* match;
-    int status;
-
-    state_reset(state);
-
-    state->ptr = state->start;
-
-    if (state->charsize == 1) {
-        status = sre_search(state, PatternObject_GetCode(self->pattern));
-    } else {
-#if defined(HAVE_UNICODE)
-        status = sre_usearch(state, PatternObject_GetCode(self->pattern));
-#endif
-    }
-    if (PyErr_Occurred())
-        return NULL;
-
-    match = pattern_new_match((PatternObject*) self->pattern,
-                               state, status);
-
-    if (status == 0 || state->ptr == state->start)
-        state->start = (void*) ((char*) state->ptr + state->charsize);
-    else
-        state->start = state->ptr;
-
-    return match;
-}
-
-static PyMethodDef scanner_methods[] = {
-    {"match", (PyCFunction) scanner_match, METH_NOARGS},
-    {"search", (PyCFunction) scanner_search, METH_NOARGS},
-    {NULL, NULL}
-};
-
-#define SCAN_OFF(x) offsetof(ScannerObject, x)
-static PyMemberDef scanner_members[] = {
-    {"pattern", T_OBJECT, SCAN_OFF(pattern),  READONLY},
-    {NULL}  /* Sentinel */
-};
-
-statichere PyTypeObject Scanner_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0, "_" SRE_MODULE ".SRE_Scanner",
-    sizeof(ScannerObject), 0,
-    (destructor)scanner_dealloc, /*tp_dealloc*/
-    0,        /* tp_print */
-    0,        /* tp_getattr */
-    0,        /* tp_setattr */
-    0,        /* tp_reserved */
-    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 */
-    Py_TPFLAGS_DEFAULT,   /* tp_flags */
-    0,        /* tp_doc */
-    0,        /* tp_traverse */
-    0,        /* tp_clear */
-    0,        /* tp_richcompare */
-    0,        /* tp_weaklistoffset */
-    0,        /* tp_iter */
-    0,        /* tp_iternext */
-    scanner_methods,    /* tp_methods */
-    scanner_members,    /* tp_members */
-    0,        /* tp_getset */
-};
-
-static PyObject*
-pattern_scanner(PatternObject* pattern, PyObject* args)
-{
-    /* create search state object */
-
-    ScannerObject* self;
-
-    PyObject* string;
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    if (!PyArg_ParseTuple(args, "O|nn:scanner", &string, &start, &end))
-        return NULL;
-
-    /* create scanner object */
-    self = PyObject_NEW(ScannerObject, &Scanner_Type);
-    if (!self)
-        return NULL;
-    self->pattern = NULL;
-
-    string = state_init(&self->state, pattern, string, start, end);
-    if (!string) {
-        Py_DECREF(self);
-        return NULL;
-    }
-
-    Py_INCREF(pattern);
-    self->pattern = (PyObject*) pattern;
-
-    return (PyObject*) self;
-}
-
-static PyMethodDef _functions[] = {
-    {"compile", _compile, METH_VARARGS},
-    {"getcodesize", sre_codesize, METH_NOARGS},
-    {"getlower", sre_getlower, METH_VARARGS},
-    {NULL, NULL}
-};
-
-#if PY_VERSION_HEX < 0x02030000
-DL_EXPORT(void) init_sre(void)
-#else
-PyMODINIT_FUNC init_sre(void)
-#endif
-{
-    PyObject* m;
-    PyObject* d;
-    PyObject* x;
-
-    /* Patch object types */
-    if (PyType_Ready(&Pattern_Type) || PyType_Ready(&Match_Type) ||
-        PyType_Ready(&Scanner_Type))
-        return;
-
-    m = Py_InitModule("_" SRE_MODULE, _functions);
-    if (m == NULL)
-        return;
-    d = PyModule_GetDict(m);
-
-    x = PyInt_FromLong(SRE_MAGIC);
-    if (x) {
-        PyDict_SetItemString(d, "MAGIC", x);
-        Py_DECREF(x);
-    }
-
-    x = PyInt_FromLong(sizeof(SRE_CODE));
-    if (x) {
-        PyDict_SetItemString(d, "CODESIZE", x);
-        Py_DECREF(x);
-    }
-
-    x = PyString_FromString(copyright);
-    if (x) {
-        PyDict_SetItemString(d, "copyright", x);
-        Py_DECREF(x);
-    }
-}
-
-#endif /* !defined(SRE_RECURSIVE) */
-
-/* vim:ts=4:sw=4:et
-*/
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/addrinfo.h b/AppPkg/Applications/Python/PyMod-2.7.2/Modules/addrinfo.h
deleted file mode 100644
index 2b35385..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/addrinfo.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef HAVE_GETADDRINFO
-
-/*
- * Error return codes from getaddrinfo()
- */
-#ifdef EAI_ADDRFAMILY
-/* If this is defined, there is a conflicting implementation
-   in the C library, which can't be used for some reason.
-   Make sure it won't interfere with this emulation. */
-
-#undef EAI_ADDRFAMILY
-#undef EAI_AGAIN
-#undef EAI_BADFLAGS
-#undef EAI_FAIL
-#undef EAI_FAMILY
-#undef EAI_MEMORY
-#undef EAI_NODATA
-#undef EAI_NONAME
-#undef EAI_SERVICE
-#undef EAI_SOCKTYPE
-#undef EAI_SYSTEM
-#undef EAI_BADHINTS
-#undef EAI_PROTOCOL
-#undef EAI_MAX
-#undef getaddrinfo
-#define getaddrinfo fake_getaddrinfo
-#endif /* EAI_ADDRFAMILY */
-
-#define EAI_ADDRFAMILY   1      /* address family for hostname not supported */
-#define EAI_AGAIN        2      /* temporary failure in name resolution */
-#define EAI_BADFLAGS     3      /* invalid value for ai_flags */
-#define EAI_FAIL         4      /* non-recoverable failure in name resolution */
-#define EAI_FAMILY       5      /* ai_family not supported */
-#define EAI_MEMORY       6      /* memory allocation failure */
-#define EAI_NODATA       7      /* no address associated with hostname */
-#define EAI_NONAME       8      /* hostname nor servname provided, or not known */
-#define EAI_SERVICE      9      /* servname not supported for ai_socktype */
-#define EAI_SOCKTYPE    10      /* ai_socktype not supported */
-#define EAI_SYSTEM      11      /* system error returned in errno */
-#define EAI_BADHINTS    12
-#define EAI_PROTOCOL    13
-#define EAI_MAX         14
-
-/*
- * Flag values for getaddrinfo()
- */
-#ifdef AI_PASSIVE
-#undef AI_PASSIVE
-#undef AI_CANONNAME
-#undef AI_NUMERICHOST
-#undef AI_MASK
-#undef AI_ALL
-#undef AI_V4MAPPED_CFG
-#undef AI_ADDRCONFIG
-#undef AI_V4MAPPED
-#undef AI_DEFAULT
-#endif /* AI_PASSIVE */
-
-#define AI_PASSIVE      0x00000001 /* get address to use bind() */
-#define AI_CANONNAME    0x00000002 /* fill ai_canonname */
-#define AI_NUMERICHOST  0x00000004 /* prevent name resolution */
-/* valid flags for addrinfo */
-#define AI_MASK         (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST)
-
-#define AI_ALL          0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */
-#define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */
-#define AI_ADDRCONFIG   0x00000400 /* only if any address is assigned */
-#define AI_V4MAPPED     0x00000800 /* accept IPv4-mapped IPv6 address */
-/* special recommended flags for getipnodebyname */
-#define AI_DEFAULT      (AI_V4MAPPED_CFG | AI_ADDRCONFIG)
-
-#endif /* !HAVE_GETADDRINFO */
-
-#ifndef HAVE_GETNAMEINFO
-
-/*
- * Constants for getnameinfo()
- */
-#ifndef NI_MAXHOST
-#define NI_MAXHOST      1025
-#define NI_MAXSERV      32
-#endif /* !NI_MAXHOST */
-
-/*
- * Flag values for getnameinfo()
- */
-#ifndef NI_NOFQDN
-#define NI_NOFQDN       0x00000001
-#define NI_NUMERICHOST  0x00000002
-#define NI_NAMEREQD     0x00000004
-#define NI_NUMERICSERV  0x00000008
-#define NI_DGRAM        0x00000010
-#endif /* !NI_NOFQDN */
-
-#endif /* !HAVE_GETNAMEINFO */
-
-#ifndef _SYS_SOCKET_H_
-  #ifndef HAVE_ADDRINFO
-    struct addrinfo {
-        int         ai_flags;       /* AI_PASSIVE, AI_CANONNAME */
-        int         ai_family;      /* PF_xxx */
-        int         ai_socktype;    /* SOCK_xxx */
-        int         ai_protocol;    /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
-        size_t      ai_addrlen;     /* length of ai_addr */
-        char        *ai_canonname;  /* canonical name for hostname */
-        struct sockaddr *ai_addr;           /* binary address */
-        struct addrinfo *ai_next;           /* next structure in linked list */
-    };
-  #endif /* !HAVE_ADDRINFO */
-
-  #ifndef HAVE_SOCKADDR_STORAGE
-    /*
-     * RFC 2553: protocol-independent placeholder for socket addresses
-     */
-    #define _SS_MAXSIZE     128
-    #ifdef HAVE_LONG_LONG
-      #define _SS_ALIGNSIZE   (sizeof(PY_LONG_LONG))
-    #else
-      #define _SS_ALIGNSIZE   (sizeof(double))
-    #endif /* HAVE_LONG_LONG */
-    #define _SS_PAD1SIZE    (_SS_ALIGNSIZE - sizeof(u_char) * 2)
-    #define _SS_PAD2SIZE    (_SS_MAXSIZE - sizeof(u_char) * 2 - \
-                    _SS_PAD1SIZE - _SS_ALIGNSIZE)
-
-    struct sockaddr_storage {
-    #ifdef HAVE_SOCKADDR_SA_LEN
-        unsigned char ss_len;               /* address length */
-        unsigned char ss_family;            /* address family */
-    #else
-        unsigned short ss_family;           /* address family */
-    #endif /* HAVE_SOCKADDR_SA_LEN */
-        char        __ss_pad1[_SS_PAD1SIZE];
-    #ifdef HAVE_LONG_LONG
-        PY_LONG_LONG __ss_align;            /* force desired structure storage alignment */
-    #else
-        double __ss_align;          /* force desired structure storage alignment */
-    #endif /* HAVE_LONG_LONG */
-        char        __ss_pad2[_SS_PAD2SIZE];
-    };
-  #endif  /* !HAVE_SOCKADDR_STORAGE */
-#endif  /* _SYS_SOCKET_H_ */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-extern void freehostent Py_PROTO((struct hostent *));
-#ifdef __cplusplus
-}
-#endif
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/errnomodule.c b/AppPkg/Applications/Python/PyMod-2.7.2/Modules/errnomodule.c
deleted file mode 100644
index a325389..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/errnomodule.c
+++ /dev/null
@@ -1,845 +0,0 @@
-
-/* Errno module
-
-    Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-*/
-
-#include "Python.h"
-
-/* Windows socket errors (WSA*)  */
-#ifdef MS_WINDOWS
-#include <windows.h>
-#endif
-
-/*
- * Pull in the system error definitions
- */
-
-static PyMethodDef errno_methods[] = {
-    {NULL,              NULL}
-};
-
-/* Helper function doing the dictionary inserting */
-
-static void
-_inscode(PyObject *d, PyObject *de, char *name, int code)
-{
-    PyObject *u = PyString_FromString(name);
-    PyObject *v = PyInt_FromLong((long) code);
-
-    /* Don't bother checking for errors; they'll be caught at the end
-     * of the module initialization function by the caller of
-     * initerrno().
-     */
-    if (u && v) {
-        /* insert in modules dict */
-        PyDict_SetItem(d, u, v);
-        /* insert in errorcode dict */
-        PyDict_SetItem(de, v, u);
-    }
-    Py_XDECREF(u);
-    Py_XDECREF(v);
-}
-
-PyDoc_STRVAR(errno__doc__,
-"This module makes available standard errno system symbols.\n\
-\n\
-The value of each symbol is the corresponding integer value,\n\
-e.g., on most systems, errno.ENOENT equals the integer 2.\n\
-\n\
-The dictionary errno.errorcode maps numeric codes to symbol names,\n\
-e.g., errno.errorcode[2] could be the string 'ENOENT'.\n\
-\n\
-Symbols that are not relevant to the underlying system are not defined.\n\
-\n\
-To map error codes to error messages, use the function os.strerror(),\n\
-e.g. os.strerror(2) could return 'No such file or directory'.");
-
-PyMODINIT_FUNC
-initerrno(void)
-{
-    PyObject *m, *d, *de;
-    m = Py_InitModule3("errno", errno_methods, errno__doc__);
-    if (m == NULL)
-        return;
-    d = PyModule_GetDict(m);
-    de = PyDict_New();
-    if (!d || !de || PyDict_SetItemString(d, "errorcode", de) < 0)
-        return;
-
-/* Macro so I don't have to edit each and every line below... */
-#define inscode(d, ds, de, name, code, comment) _inscode(d, de, name, code)
-
-    /*
-     * The names and comments are borrowed from linux/include/errno.h,
-     * which should be pretty all-inclusive
-     */
-
-#ifdef ENODEV
-    inscode(d, ds, de, "ENODEV", ENODEV, "No such device");
-#endif
-#ifdef ENOCSI
-    inscode(d, ds, de, "ENOCSI", ENOCSI, "No CSI structure available");
-#endif
-#ifdef EHOSTUNREACH
-    inscode(d, ds, de, "EHOSTUNREACH", EHOSTUNREACH, "No route to host");
-#else
-#ifdef WSAEHOSTUNREACH
-    inscode(d, ds, de, "EHOSTUNREACH", WSAEHOSTUNREACH, "No route to host");
-#endif
-#endif
-#ifdef ENOMSG
-    inscode(d, ds, de, "ENOMSG", ENOMSG, "No message of desired type");
-#endif
-#ifdef EUCLEAN
-    inscode(d, ds, de, "EUCLEAN", EUCLEAN, "Structure needs cleaning");
-#endif
-#ifdef EL2NSYNC
-    inscode(d, ds, de, "EL2NSYNC", EL2NSYNC, "Level 2 not synchronized");
-#endif
-#ifdef EL2HLT
-    inscode(d, ds, de, "EL2HLT", EL2HLT, "Level 2 halted");
-#endif
-#ifdef ENODATA
-    inscode(d, ds, de, "ENODATA", ENODATA, "No data available");
-#endif
-#ifdef ENOTBLK
-    inscode(d, ds, de, "ENOTBLK", ENOTBLK, "Block device required");
-#endif
-#ifdef ENOSYS
-    inscode(d, ds, de, "ENOSYS", ENOSYS, "Function not implemented");
-#endif
-#ifdef EPIPE
-    inscode(d, ds, de, "EPIPE", EPIPE, "Broken pipe");
-#endif
-#ifdef EINVAL
-    inscode(d, ds, de, "EINVAL", EINVAL, "Invalid argument");
-#else
-#ifdef WSAEINVAL
-    inscode(d, ds, de, "EINVAL", WSAEINVAL, "Invalid argument");
-#endif
-#endif
-#ifdef EOVERFLOW
-    inscode(d, ds, de, "EOVERFLOW", EOVERFLOW, "Value too large for defined data type");
-#endif
-#ifdef EADV
-    inscode(d, ds, de, "EADV", EADV, "Advertise error");
-#endif
-#ifdef EINTR
-    inscode(d, ds, de, "EINTR", EINTR, "Interrupted system call");
-#else
-#ifdef WSAEINTR
-    inscode(d, ds, de, "EINTR", WSAEINTR, "Interrupted system call");
-#endif
-#endif
-#ifdef EUSERS
-    inscode(d, ds, de, "EUSERS", EUSERS, "Too many users");
-#else
-#ifdef WSAEUSERS
-    inscode(d, ds, de, "EUSERS", WSAEUSERS, "Too many users");
-#endif
-#endif
-#ifdef ENOTEMPTY
-    inscode(d, ds, de, "ENOTEMPTY", ENOTEMPTY, "Directory not empty");
-#else
-#ifdef WSAENOTEMPTY
-    inscode(d, ds, de, "ENOTEMPTY", WSAENOTEMPTY, "Directory not empty");
-#endif
-#endif
-#ifdef ENOBUFS
-    inscode(d, ds, de, "ENOBUFS", ENOBUFS, "No buffer space available");
-#else
-#ifdef WSAENOBUFS
-    inscode(d, ds, de, "ENOBUFS", WSAENOBUFS, "No buffer space available");
-#endif
-#endif
-#ifdef EPROTO
-    inscode(d, ds, de, "EPROTO", EPROTO, "Protocol error");
-#endif
-#ifdef EREMOTE
-    inscode(d, ds, de, "EREMOTE", EREMOTE, "Object is remote");
-#else
-#ifdef WSAEREMOTE
-    inscode(d, ds, de, "EREMOTE", WSAEREMOTE, "Object is remote");
-#endif
-#endif
-#ifdef ENAVAIL
-    inscode(d, ds, de, "ENAVAIL", ENAVAIL, "No XENIX semaphores available");
-#endif
-#ifdef ECHILD
-    inscode(d, ds, de, "ECHILD", ECHILD, "No child processes");
-#endif
-#ifdef ELOOP
-    inscode(d, ds, de, "ELOOP", ELOOP, "Too many symbolic links encountered");
-#else
-#ifdef WSAELOOP
-    inscode(d, ds, de, "ELOOP", WSAELOOP, "Too many symbolic links encountered");
-#endif
-#endif
-#ifdef EXDEV
-    inscode(d, ds, de, "EXDEV", EXDEV, "Cross-device link");
-#endif
-#ifdef E2BIG
-    inscode(d, ds, de, "E2BIG", E2BIG, "Arg list too long");
-#endif
-#ifdef ESRCH
-    inscode(d, ds, de, "ESRCH", ESRCH, "No such process");
-#endif
-#ifdef EMSGSIZE
-    inscode(d, ds, de, "EMSGSIZE", EMSGSIZE, "Message too long");
-#else
-#ifdef WSAEMSGSIZE
-    inscode(d, ds, de, "EMSGSIZE", WSAEMSGSIZE, "Message too long");
-#endif
-#endif
-#ifdef EAFNOSUPPORT
-    inscode(d, ds, de, "EAFNOSUPPORT", EAFNOSUPPORT, "Address family not supported by protocol");
-#else
-#ifdef WSAEAFNOSUPPORT
-    inscode(d, ds, de, "EAFNOSUPPORT", WSAEAFNOSUPPORT, "Address family not supported by protocol");
-#endif
-#endif
-#ifdef EBADR
-    inscode(d, ds, de, "EBADR", EBADR, "Invalid request descriptor");
-#endif
-#ifdef EHOSTDOWN
-    inscode(d, ds, de, "EHOSTDOWN", EHOSTDOWN, "Host is down");
-#else
-#ifdef WSAEHOSTDOWN
-    inscode(d, ds, de, "EHOSTDOWN", WSAEHOSTDOWN, "Host is down");
-#endif
-#endif
-#ifdef EPFNOSUPPORT
-    inscode(d, ds, de, "EPFNOSUPPORT", EPFNOSUPPORT, "Protocol family not supported");
-#else
-#ifdef WSAEPFNOSUPPORT
-    inscode(d, ds, de, "EPFNOSUPPORT", WSAEPFNOSUPPORT, "Protocol family not supported");
-#endif
-#endif
-#ifdef ENOPROTOOPT
-    inscode(d, ds, de, "ENOPROTOOPT", ENOPROTOOPT, "Protocol not available");
-#else
-#ifdef WSAENOPROTOOPT
-    inscode(d, ds, de, "ENOPROTOOPT", WSAENOPROTOOPT, "Protocol not available");
-#endif
-#endif
-#ifdef EBUSY
-    inscode(d, ds, de, "EBUSY", EBUSY, "Device or resource busy");
-#endif
-#ifdef EWOULDBLOCK
-    inscode(d, ds, de, "EWOULDBLOCK", EWOULDBLOCK, "Operation would block");
-#else
-#ifdef WSAEWOULDBLOCK
-    inscode(d, ds, de, "EWOULDBLOCK", WSAEWOULDBLOCK, "Operation would block");
-#endif
-#endif
-#ifdef EBADFD
-    inscode(d, ds, de, "EBADFD", EBADFD, "File descriptor in bad state");
-#endif
-#ifdef EDOTDOT
-    inscode(d, ds, de, "EDOTDOT", EDOTDOT, "RFS specific error");
-#endif
-#ifdef EISCONN
-    inscode(d, ds, de, "EISCONN", EISCONN, "Transport endpoint is already connected");
-#else
-#ifdef WSAEISCONN
-    inscode(d, ds, de, "EISCONN", WSAEISCONN, "Transport endpoint is already connected");
-#endif
-#endif
-#ifdef ENOANO
-    inscode(d, ds, de, "ENOANO", ENOANO, "No anode");
-#endif
-#ifdef ESHUTDOWN
-    inscode(d, ds, de, "ESHUTDOWN", ESHUTDOWN, "Cannot send after transport endpoint shutdown");
-#else
-#ifdef WSAESHUTDOWN
-    inscode(d, ds, de, "ESHUTDOWN", WSAESHUTDOWN, "Cannot send after transport endpoint shutdown");
-#endif
-#endif
-#ifdef ECHRNG
-    inscode(d, ds, de, "ECHRNG", ECHRNG, "Channel number out of range");
-#endif
-#ifdef ELIBBAD
-    inscode(d, ds, de, "ELIBBAD", ELIBBAD, "Accessing a corrupted shared library");
-#endif
-#ifdef ENONET
-    inscode(d, ds, de, "ENONET", ENONET, "Machine is not on the network");
-#endif
-#ifdef EBADE
-    inscode(d, ds, de, "EBADE", EBADE, "Invalid exchange");
-#endif
-#ifdef EBADF
-    inscode(d, ds, de, "EBADF", EBADF, "Bad file number");
-#else
-#ifdef WSAEBADF
-    inscode(d, ds, de, "EBADF", WSAEBADF, "Bad file number");
-#endif
-#endif
-#ifdef EMULTIHOP
-    inscode(d, ds, de, "EMULTIHOP", EMULTIHOP, "Multihop attempted");
-#endif
-#ifdef EIO
-    inscode(d, ds, de, "EIO", EIO, "I/O error");
-#endif
-#ifdef EUNATCH
-    inscode(d, ds, de, "EUNATCH", EUNATCH, "Protocol driver not attached");
-#endif
-#ifdef EPROTOTYPE
-    inscode(d, ds, de, "EPROTOTYPE", EPROTOTYPE, "Protocol wrong type for socket");
-#else
-#ifdef WSAEPROTOTYPE
-    inscode(d, ds, de, "EPROTOTYPE", WSAEPROTOTYPE, "Protocol wrong type for socket");
-#endif
-#endif
-#ifdef ENOSPC
-    inscode(d, ds, de, "ENOSPC", ENOSPC, "No space left on device");
-#endif
-#ifdef ENOEXEC
-    inscode(d, ds, de, "ENOEXEC", ENOEXEC, "Exec format error");
-#endif
-#ifdef EALREADY
-    inscode(d, ds, de, "EALREADY", EALREADY, "Operation already in progress");
-#else
-#ifdef WSAEALREADY
-    inscode(d, ds, de, "EALREADY", WSAEALREADY, "Operation already in progress");
-#endif
-#endif
-#ifdef ENETDOWN
-    inscode(d, ds, de, "ENETDOWN", ENETDOWN, "Network is down");
-#else
-#ifdef WSAENETDOWN
-    inscode(d, ds, de, "ENETDOWN", WSAENETDOWN, "Network is down");
-#endif
-#endif
-#ifdef ENOTNAM
-    inscode(d, ds, de, "ENOTNAM", ENOTNAM, "Not a XENIX named type file");
-#endif
-#ifdef EACCES
-    inscode(d, ds, de, "EACCES", EACCES, "Permission denied");
-#else
-#ifdef WSAEACCES
-    inscode(d, ds, de, "EACCES", WSAEACCES, "Permission denied");
-#endif
-#endif
-#ifdef ELNRNG
-    inscode(d, ds, de, "ELNRNG", ELNRNG, "Link number out of range");
-#endif
-#ifdef EILSEQ
-    inscode(d, ds, de, "EILSEQ", EILSEQ, "Illegal byte sequence");
-#endif
-#ifdef ENOTDIR
-    inscode(d, ds, de, "ENOTDIR", ENOTDIR, "Not a directory");
-#endif
-#ifdef ENOTUNIQ
-    inscode(d, ds, de, "ENOTUNIQ", ENOTUNIQ, "Name not unique on network");
-#endif
-#ifdef EPERM
-    inscode(d, ds, de, "EPERM", EPERM, "Operation not permitted");
-#endif
-#ifdef EDOM
-    inscode(d, ds, de, "EDOM", EDOM, "Math argument out of domain of func");
-#endif
-#ifdef EXFULL
-    inscode(d, ds, de, "EXFULL", EXFULL, "Exchange full");
-#endif
-#ifdef ECONNREFUSED
-    inscode(d, ds, de, "ECONNREFUSED", ECONNREFUSED, "Connection refused");
-#else
-#ifdef WSAECONNREFUSED
-    inscode(d, ds, de, "ECONNREFUSED", WSAECONNREFUSED, "Connection refused");
-#endif
-#endif
-#ifdef EISDIR
-    inscode(d, ds, de, "EISDIR", EISDIR, "Is a directory");
-#endif
-#ifdef EPROTONOSUPPORT
-    inscode(d, ds, de, "EPROTONOSUPPORT", EPROTONOSUPPORT, "Protocol not supported");
-#else
-#ifdef WSAEPROTONOSUPPORT
-    inscode(d, ds, de, "EPROTONOSUPPORT", WSAEPROTONOSUPPORT, "Protocol not supported");
-#endif
-#endif
-#ifdef EROFS
-    inscode(d, ds, de, "EROFS", EROFS, "Read-only file system");
-#endif
-#ifdef EADDRNOTAVAIL
-    inscode(d, ds, de, "EADDRNOTAVAIL", EADDRNOTAVAIL, "Cannot assign requested address");
-#else
-#ifdef WSAEADDRNOTAVAIL
-    inscode(d, ds, de, "EADDRNOTAVAIL", WSAEADDRNOTAVAIL, "Cannot assign requested address");
-#endif
-#endif
-#ifdef EIDRM
-    inscode(d, ds, de, "EIDRM", EIDRM, "Identifier removed");
-#endif
-#ifdef ECOMM
-    inscode(d, ds, de, "ECOMM", ECOMM, "Communication error on send");
-#endif
-#ifdef ESRMNT
-    inscode(d, ds, de, "ESRMNT", ESRMNT, "Srmount error");
-#endif
-#ifdef EREMOTEIO
-    inscode(d, ds, de, "EREMOTEIO", EREMOTEIO, "Remote I/O error");
-#endif
-#ifdef EL3RST
-    inscode(d, ds, de, "EL3RST", EL3RST, "Level 3 reset");
-#endif
-#ifdef EBADMSG
-    inscode(d, ds, de, "EBADMSG", EBADMSG, "Not a data message");
-#endif
-#ifdef ENFILE
-    inscode(d, ds, de, "ENFILE", ENFILE, "File table overflow");
-#endif
-#ifdef ELIBMAX
-    inscode(d, ds, de, "ELIBMAX", ELIBMAX, "Attempting to link in too many shared libraries");
-#endif
-#ifdef ESPIPE
-    inscode(d, ds, de, "ESPIPE", ESPIPE, "Illegal seek");
-#endif
-#ifdef ENOLINK
-    inscode(d, ds, de, "ENOLINK", ENOLINK, "Link has been severed");
-#endif
-#ifdef ENETRESET
-    inscode(d, ds, de, "ENETRESET", ENETRESET, "Network dropped connection because of reset");
-#else
-#ifdef WSAENETRESET
-    inscode(d, ds, de, "ENETRESET", WSAENETRESET, "Network dropped connection because of reset");
-#endif
-#endif
-#ifdef ETIMEDOUT
-    inscode(d, ds, de, "ETIMEDOUT", ETIMEDOUT, "Connection timed out");
-#else
-#ifdef WSAETIMEDOUT
-    inscode(d, ds, de, "ETIMEDOUT", WSAETIMEDOUT, "Connection timed out");
-#endif
-#endif
-#ifdef ENOENT
-    inscode(d, ds, de, "ENOENT", ENOENT, "No such file or directory");
-#endif
-#ifdef EEXIST
-    inscode(d, ds, de, "EEXIST", EEXIST, "File exists");
-#endif
-#ifdef EDQUOT
-    inscode(d, ds, de, "EDQUOT", EDQUOT, "Quota exceeded");
-#else
-#ifdef WSAEDQUOT
-    inscode(d, ds, de, "EDQUOT", WSAEDQUOT, "Quota exceeded");
-#endif
-#endif
-#ifdef ENOSTR
-    inscode(d, ds, de, "ENOSTR", ENOSTR, "Device not a stream");
-#endif
-#ifdef EBADSLT
-    inscode(d, ds, de, "EBADSLT", EBADSLT, "Invalid slot");
-#endif
-#ifdef EBADRQC
-    inscode(d, ds, de, "EBADRQC", EBADRQC, "Invalid request code");
-#endif
-#ifdef ELIBACC
-    inscode(d, ds, de, "ELIBACC", ELIBACC, "Can not access a needed shared library");
-#endif
-#ifdef EFAULT
-    inscode(d, ds, de, "EFAULT", EFAULT, "Bad address");
-#else
-#ifdef WSAEFAULT
-    inscode(d, ds, de, "EFAULT", WSAEFAULT, "Bad address");
-#endif
-#endif
-#ifdef EFBIG
-    inscode(d, ds, de, "EFBIG", EFBIG, "File too large");
-#endif
-#ifdef EDEADLK
-    inscode(d, ds, de, "EDEADLK", EDEADLK, "Resource deadlock would occur");
-#endif
-#ifdef ENOTCONN
-    inscode(d, ds, de, "ENOTCONN", ENOTCONN, "Transport endpoint is not connected");
-#else
-#ifdef WSAENOTCONN
-    inscode(d, ds, de, "ENOTCONN", WSAENOTCONN, "Transport endpoint is not connected");
-#endif
-#endif
-#ifdef EDESTADDRREQ
-    inscode(d, ds, de, "EDESTADDRREQ", EDESTADDRREQ, "Destination address required");
-#else
-#ifdef WSAEDESTADDRREQ
-    inscode(d, ds, de, "EDESTADDRREQ", WSAEDESTADDRREQ, "Destination address required");
-#endif
-#endif
-#ifdef ELIBSCN
-    inscode(d, ds, de, "ELIBSCN", ELIBSCN, ".lib section in a.out corrupted");
-#endif
-#ifdef ENOLCK
-    inscode(d, ds, de, "ENOLCK", ENOLCK, "No record locks available");
-#endif
-#ifdef EISNAM
-    inscode(d, ds, de, "EISNAM", EISNAM, "Is a named type file");
-#endif
-#ifdef ECONNABORTED
-    inscode(d, ds, de, "ECONNABORTED", ECONNABORTED, "Software caused connection abort");
-#else
-#ifdef WSAECONNABORTED
-    inscode(d, ds, de, "ECONNABORTED", WSAECONNABORTED, "Software caused connection abort");
-#endif
-#endif
-#ifdef ENETUNREACH
-    inscode(d, ds, de, "ENETUNREACH", ENETUNREACH, "Network is unreachable");
-#else
-#ifdef WSAENETUNREACH
-    inscode(d, ds, de, "ENETUNREACH", WSAENETUNREACH, "Network is unreachable");
-#endif
-#endif
-#ifdef ESTALE
-    inscode(d, ds, de, "ESTALE", ESTALE, "Stale NFS file handle");
-#else
-#ifdef WSAESTALE
-    inscode(d, ds, de, "ESTALE", WSAESTALE, "Stale NFS file handle");
-#endif
-#endif
-#ifdef ENOSR
-    inscode(d, ds, de, "ENOSR", ENOSR, "Out of streams resources");
-#endif
-#ifdef ENOMEM
-    inscode(d, ds, de, "ENOMEM", ENOMEM, "Out of memory");
-#endif
-#ifdef ENOTSOCK
-    inscode(d, ds, de, "ENOTSOCK", ENOTSOCK, "Socket operation on non-socket");
-#else
-#ifdef WSAENOTSOCK
-    inscode(d, ds, de, "ENOTSOCK", WSAENOTSOCK, "Socket operation on non-socket");
-#endif
-#endif
-#ifdef ESTRPIPE
-    inscode(d, ds, de, "ESTRPIPE", ESTRPIPE, "Streams pipe error");
-#endif
-#ifdef EMLINK
-    inscode(d, ds, de, "EMLINK", EMLINK, "Too many links");
-#endif
-#ifdef ERANGE
-    inscode(d, ds, de, "ERANGE", ERANGE, "Math result not representable");
-#endif
-#ifdef ELIBEXEC
-    inscode(d, ds, de, "ELIBEXEC", ELIBEXEC, "Cannot exec a shared library directly");
-#endif
-#ifdef EL3HLT
-    inscode(d, ds, de, "EL3HLT", EL3HLT, "Level 3 halted");
-#endif
-#ifdef ECONNRESET
-    inscode(d, ds, de, "ECONNRESET", ECONNRESET, "Connection reset by peer");
-#else
-#ifdef WSAECONNRESET
-    inscode(d, ds, de, "ECONNRESET", WSAECONNRESET, "Connection reset by peer");
-#endif
-#endif
-#ifdef EADDRINUSE
-    inscode(d, ds, de, "EADDRINUSE", EADDRINUSE, "Address already in use");
-#else
-#ifdef WSAEADDRINUSE
-    inscode(d, ds, de, "EADDRINUSE", WSAEADDRINUSE, "Address already in use");
-#endif
-#endif
-#ifdef EOPNOTSUPP
-    inscode(d, ds, de, "EOPNOTSUPP", EOPNOTSUPP, "Operation not supported on transport endpoint");
-#else
-#ifdef WSAEOPNOTSUPP
-    inscode(d, ds, de, "EOPNOTSUPP", WSAEOPNOTSUPP, "Operation not supported on transport endpoint");
-#endif
-#endif
-#ifdef EREMCHG
-    inscode(d, ds, de, "EREMCHG", EREMCHG, "Remote address changed");
-#endif
-#ifdef EAGAIN
-    inscode(d, ds, de, "EAGAIN", EAGAIN, "Try again");
-#endif
-#ifdef ENAMETOOLONG
-    inscode(d, ds, de, "ENAMETOOLONG", ENAMETOOLONG, "File name too long");
-#else
-#ifdef WSAENAMETOOLONG
-    inscode(d, ds, de, "ENAMETOOLONG", WSAENAMETOOLONG, "File name too long");
-#endif
-#endif
-#ifdef ENOTTY
-    inscode(d, ds, de, "ENOTTY", ENOTTY, "Not a typewriter");
-#endif
-#ifdef ERESTART
-    inscode(d, ds, de, "ERESTART", ERESTART, "Interrupted system call should be restarted");
-#endif
-#ifdef ESOCKTNOSUPPORT
-    inscode(d, ds, de, "ESOCKTNOSUPPORT", ESOCKTNOSUPPORT, "Socket type not supported");
-#else
-#ifdef WSAESOCKTNOSUPPORT
-    inscode(d, ds, de, "ESOCKTNOSUPPORT", WSAESOCKTNOSUPPORT, "Socket type not supported");
-#endif
-#endif
-#ifdef ETIME
-    inscode(d, ds, de, "ETIME", ETIME, "Timer expired");
-#endif
-#ifdef EBFONT
-    inscode(d, ds, de, "EBFONT", EBFONT, "Bad font file format");
-#endif
-#ifdef EDEADLOCK
-    inscode(d, ds, de, "EDEADLOCK", EDEADLOCK, "Error EDEADLOCK");
-#endif
-#ifdef ETOOMANYREFS
-    inscode(d, ds, de, "ETOOMANYREFS", ETOOMANYREFS, "Too many references: cannot splice");
-#else
-#ifdef WSAETOOMANYREFS
-    inscode(d, ds, de, "ETOOMANYREFS", WSAETOOMANYREFS, "Too many references: cannot splice");
-#endif
-#endif
-#ifdef EMFILE
-    inscode(d, ds, de, "EMFILE", EMFILE, "Too many open files");
-#else
-#ifdef WSAEMFILE
-    inscode(d, ds, de, "EMFILE", WSAEMFILE, "Too many open files");
-#endif
-#endif
-#ifdef ETXTBSY
-    inscode(d, ds, de, "ETXTBSY", ETXTBSY, "Text file busy");
-#endif
-#ifdef EINPROGRESS
-    inscode(d, ds, de, "EINPROGRESS", EINPROGRESS, "Operation now in progress");
-#else
-#ifdef WSAEINPROGRESS
-    inscode(d, ds, de, "EINPROGRESS", WSAEINPROGRESS, "Operation now in progress");
-#endif
-#endif
-#ifdef ENXIO
-    inscode(d, ds, de, "ENXIO", ENXIO, "No such device or address");
-#endif
-#ifdef ENOPKG
-    inscode(d, ds, de, "ENOPKG", ENOPKG, "Package not installed");
-#endif
-#ifdef WSASY
-    inscode(d, ds, de, "WSASY", WSASY, "Error WSASY");
-#endif
-#ifdef WSAEHOSTDOWN
-    inscode(d, ds, de, "WSAEHOSTDOWN", WSAEHOSTDOWN, "Host is down");
-#endif
-#ifdef WSAENETDOWN
-    inscode(d, ds, de, "WSAENETDOWN", WSAENETDOWN, "Network is down");
-#endif
-#ifdef WSAENOTSOCK
-    inscode(d, ds, de, "WSAENOTSOCK", WSAENOTSOCK, "Socket operation on non-socket");
-#endif
-#ifdef WSAEHOSTUNREACH
-    inscode(d, ds, de, "WSAEHOSTUNREACH", WSAEHOSTUNREACH, "No route to host");
-#endif
-#ifdef WSAELOOP
-    inscode(d, ds, de, "WSAELOOP", WSAELOOP, "Too many symbolic links encountered");
-#endif
-#ifdef WSAEMFILE
-    inscode(d, ds, de, "WSAEMFILE", WSAEMFILE, "Too many open files");
-#endif
-#ifdef WSAESTALE
-    inscode(d, ds, de, "WSAESTALE", WSAESTALE, "Stale NFS file handle");
-#endif
-#ifdef WSAVERNOTSUPPORTED
-    inscode(d, ds, de, "WSAVERNOTSUPPORTED", WSAVERNOTSUPPORTED, "Error WSAVERNOTSUPPORTED");
-#endif
-#ifdef WSAENETUNREACH
-    inscode(d, ds, de, "WSAENETUNREACH", WSAENETUNREACH, "Network is unreachable");
-#endif
-#ifdef WSAEPROCLIM
-    inscode(d, ds, de, "WSAEPROCLIM", WSAEPROCLIM, "Error WSAEPROCLIM");
-#endif
-#ifdef WSAEFAULT
-    inscode(d, ds, de, "WSAEFAULT", WSAEFAULT, "Bad address");
-#endif
-#ifdef WSANOTINITIALISED
-    inscode(d, ds, de, "WSANOTINITIALISED", WSANOTINITIALISED, "Error WSANOTINITIALISED");
-#endif
-#ifdef WSAEUSERS
-    inscode(d, ds, de, "WSAEUSERS", WSAEUSERS, "Too many users");
-#endif
-#ifdef WSAMAKEASYNCREPL
-    inscode(d, ds, de, "WSAMAKEASYNCREPL", WSAMAKEASYNCREPL, "Error WSAMAKEASYNCREPL");
-#endif
-#ifdef WSAENOPROTOOPT
-    inscode(d, ds, de, "WSAENOPROTOOPT", WSAENOPROTOOPT, "Protocol not available");
-#endif
-#ifdef WSAECONNABORTED
-    inscode(d, ds, de, "WSAECONNABORTED", WSAECONNABORTED, "Software caused connection abort");
-#endif
-#ifdef WSAENAMETOOLONG
-    inscode(d, ds, de, "WSAENAMETOOLONG", WSAENAMETOOLONG, "File name too long");
-#endif
-#ifdef WSAENOTEMPTY
-    inscode(d, ds, de, "WSAENOTEMPTY", WSAENOTEMPTY, "Directory not empty");
-#endif
-#ifdef WSAESHUTDOWN
-    inscode(d, ds, de, "WSAESHUTDOWN", WSAESHUTDOWN, "Cannot send after transport endpoint shutdown");
-#endif
-#ifdef WSAEAFNOSUPPORT
-    inscode(d, ds, de, "WSAEAFNOSUPPORT", WSAEAFNOSUPPORT, "Address family not supported by protocol");
-#endif
-#ifdef WSAETOOMANYREFS
-    inscode(d, ds, de, "WSAETOOMANYREFS", WSAETOOMANYREFS, "Too many references: cannot splice");
-#endif
-#ifdef WSAEACCES
-    inscode(d, ds, de, "WSAEACCES", WSAEACCES, "Permission denied");
-#endif
-#ifdef WSATR
-    inscode(d, ds, de, "WSATR", WSATR, "Error WSATR");
-#endif
-#ifdef WSABASEERR
-    inscode(d, ds, de, "WSABASEERR", WSABASEERR, "Error WSABASEERR");
-#endif
-#ifdef WSADESCRIPTIO
-    inscode(d, ds, de, "WSADESCRIPTIO", WSADESCRIPTIO, "Error WSADESCRIPTIO");
-#endif
-#ifdef WSAEMSGSIZE
-    inscode(d, ds, de, "WSAEMSGSIZE", WSAEMSGSIZE, "Message too long");
-#endif
-#ifdef WSAEBADF
-    inscode(d, ds, de, "WSAEBADF", WSAEBADF, "Bad file number");
-#endif
-#ifdef WSAECONNRESET
-    inscode(d, ds, de, "WSAECONNRESET", WSAECONNRESET, "Connection reset by peer");
-#endif
-#ifdef WSAGETSELECTERRO
-    inscode(d, ds, de, "WSAGETSELECTERRO", WSAGETSELECTERRO, "Error WSAGETSELECTERRO");
-#endif
-#ifdef WSAETIMEDOUT
-    inscode(d, ds, de, "WSAETIMEDOUT", WSAETIMEDOUT, "Connection timed out");
-#endif
-#ifdef WSAENOBUFS
-    inscode(d, ds, de, "WSAENOBUFS", WSAENOBUFS, "No buffer space available");
-#endif
-#ifdef WSAEDISCON
-    inscode(d, ds, de, "WSAEDISCON", WSAEDISCON, "Error WSAEDISCON");
-#endif
-#ifdef WSAEINTR
-    inscode(d, ds, de, "WSAEINTR", WSAEINTR, "Interrupted system call");
-#endif
-#ifdef WSAEPROTOTYPE
-    inscode(d, ds, de, "WSAEPROTOTYPE", WSAEPROTOTYPE, "Protocol wrong type for socket");
-#endif
-#ifdef WSAHOS
-    inscode(d, ds, de, "WSAHOS", WSAHOS, "Error WSAHOS");
-#endif
-#ifdef WSAEADDRINUSE
-    inscode(d, ds, de, "WSAEADDRINUSE", WSAEADDRINUSE, "Address already in use");
-#endif
-#ifdef WSAEADDRNOTAVAIL
-    inscode(d, ds, de, "WSAEADDRNOTAVAIL", WSAEADDRNOTAVAIL, "Cannot assign requested address");
-#endif
-#ifdef WSAEALREADY
-    inscode(d, ds, de, "WSAEALREADY", WSAEALREADY, "Operation already in progress");
-#endif
-#ifdef WSAEPROTONOSUPPORT
-    inscode(d, ds, de, "WSAEPROTONOSUPPORT", WSAEPROTONOSUPPORT, "Protocol not supported");
-#endif
-#ifdef WSASYSNOTREADY
-    inscode(d, ds, de, "WSASYSNOTREADY", WSASYSNOTREADY, "Error WSASYSNOTREADY");
-#endif
-#ifdef WSAEWOULDBLOCK
-    inscode(d, ds, de, "WSAEWOULDBLOCK", WSAEWOULDBLOCK, "Operation would block");
-#endif
-#ifdef WSAEPFNOSUPPORT
-    inscode(d, ds, de, "WSAEPFNOSUPPORT", WSAEPFNOSUPPORT, "Protocol family not supported");
-#endif
-#ifdef WSAEOPNOTSUPP
-    inscode(d, ds, de, "WSAEOPNOTSUPP", WSAEOPNOTSUPP, "Operation not supported on transport endpoint");
-#endif
-#ifdef WSAEISCONN
-    inscode(d, ds, de, "WSAEISCONN", WSAEISCONN, "Transport endpoint is already connected");
-#endif
-#ifdef WSAEDQUOT
-    inscode(d, ds, de, "WSAEDQUOT", WSAEDQUOT, "Quota exceeded");
-#endif
-#ifdef WSAENOTCONN
-    inscode(d, ds, de, "WSAENOTCONN", WSAENOTCONN, "Transport endpoint is not connected");
-#endif
-#ifdef WSAEREMOTE
-    inscode(d, ds, de, "WSAEREMOTE", WSAEREMOTE, "Object is remote");
-#endif
-#ifdef WSAEINVAL
-    inscode(d, ds, de, "WSAEINVAL", WSAEINVAL, "Invalid argument");
-#endif
-#ifdef WSAEINPROGRESS
-    inscode(d, ds, de, "WSAEINPROGRESS", WSAEINPROGRESS, "Operation now in progress");
-#endif
-#ifdef WSAGETSELECTEVEN
-    inscode(d, ds, de, "WSAGETSELECTEVEN", WSAGETSELECTEVEN, "Error WSAGETSELECTEVEN");
-#endif
-#ifdef WSAESOCKTNOSUPPORT
-    inscode(d, ds, de, "WSAESOCKTNOSUPPORT", WSAESOCKTNOSUPPORT, "Socket type not supported");
-#endif
-#ifdef WSAGETASYNCERRO
-    inscode(d, ds, de, "WSAGETASYNCERRO", WSAGETASYNCERRO, "Error WSAGETASYNCERRO");
-#endif
-#ifdef WSAMAKESELECTREPL
-    inscode(d, ds, de, "WSAMAKESELECTREPL", WSAMAKESELECTREPL, "Error WSAMAKESELECTREPL");
-#endif
-#ifdef WSAGETASYNCBUFLE
-    inscode(d, ds, de, "WSAGETASYNCBUFLE", WSAGETASYNCBUFLE, "Error WSAGETASYNCBUFLE");
-#endif
-#ifdef WSAEDESTADDRREQ
-    inscode(d, ds, de, "WSAEDESTADDRREQ", WSAEDESTADDRREQ, "Destination address required");
-#endif
-#ifdef WSAECONNREFUSED
-    inscode(d, ds, de, "WSAECONNREFUSED", WSAECONNREFUSED, "Connection refused");
-#endif
-#ifdef WSAENETRESET
-    inscode(d, ds, de, "WSAENETRESET", WSAENETRESET, "Network dropped connection because of reset");
-#endif
-#ifdef WSAN
-    inscode(d, ds, de, "WSAN", WSAN, "Error WSAN");
-#endif
-
-/* These symbols are added for EDK II support.  */
-#ifdef EMINERRORVAL
-  inscode(d, ds, de, "EMINERRORVAL", EMINERRORVAL, "Lowest valid error value");
-#endif
-#ifdef ENOTSUP
-  inscode(d, ds, de, "ENOTSUP", ENOTSUP, "Operation not supported");
-#endif
-#ifdef EBADRPC
-  inscode(d, ds, de, "EBADRPC", EBADRPC, "RPC struct is bad");
-#endif
-#ifdef ERPCMISMATCH
-  inscode(d, ds, de, "ERPCMISMATCH", ERPCMISMATCH, "RPC version wrong");
-#endif
-#ifdef EPROGUNAVAIL
-  inscode(d, ds, de, "EPROGUNAVAIL", EPROGUNAVAIL, "RPC prog. not avail");
-#endif
-#ifdef EPROGMISMATCH
-  inscode(d, ds, de, "EPROGMISMATCH", EPROGMISMATCH, "Program version wrong");
-#endif
-#ifdef EPROCUNAVAIL
-  inscode(d, ds, de, "EPROCUNAVAIL", EPROCUNAVAIL, "Bad procedure for program");
-#endif
-#ifdef EFTYPE
-  inscode(d, ds, de, "EFTYPE", EFTYPE, "Inappropriate file type or format");
-#endif
-#ifdef EAUTH
-  inscode(d, ds, de, "EAUTH", EAUTH, "Authentication error");
-#endif
-#ifdef ENEEDAUTH
-  inscode(d, ds, de, "ENEEDAUTH", ENEEDAUTH, "Need authenticator");
-#endif
-#ifdef ECANCELED
-  inscode(d, ds, de, "ECANCELED", ECANCELED, "Operation canceled");
-#endif
-#ifdef ENOATTR
-  inscode(d, ds, de, "ENOATTR", ENOATTR, "Attribute not found");
-#endif
-#ifdef EDOOFUS
-  inscode(d, ds, de, "EDOOFUS", EDOOFUS, "Programming Error");
-#endif
-#ifdef EBUFSIZE
-  inscode(d, ds, de, "EBUFSIZE", EBUFSIZE, "Buffer too small to hold result");
-#endif
-#ifdef EMAXERRORVAL
-  inscode(d, ds, de, "EMAXERRORVAL", EMAXERRORVAL, "One more than the highest defined error value");
-#endif
-
-    Py_DECREF(de);
-}
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/expat/expat_external.h b/AppPkg/Applications/Python/PyMod-2.7.2/Modules/expat/expat_external.h
deleted file mode 100644
index b739595..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/expat/expat_external.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#ifndef Expat_External_INCLUDED
-#define Expat_External_INCLUDED 1
-
-/* External API definitions */
-
-/* Namespace external symbols to allow multiple libexpat version to
-   co-exist. */
-#if !defined(UEFI_C_SOURCE)
-  #include "pyexpatns.h"
-#endif
-
-#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
-#define XML_USE_MSC_EXTENSIONS 1
-#endif
-
-/* Expat tries very hard to make the API boundary very specifically
-   defined.  There are two macros defined to control this boundary;
-   each of these can be defined before including this header to
-   achieve some different behavior, but doing so it not recommended or
-   tested frequently.
-
-   XMLCALL    - The calling convention to use for all calls across the
-                "library boundary."  This will default to cdecl, and
-                try really hard to tell the compiler that's what we
-                want.
-
-   XMLIMPORT  - Whatever magic is needed to note that a function is
-                to be imported from a dynamically loaded library
-                (.dll, .so, or .sl, depending on your platform).
-
-   The XMLCALL macro was added in Expat 1.95.7.  The only one which is
-   expected to be directly useful in client code is XMLCALL.
-
-   Note that on at least some Unix versions, the Expat library must be
-   compiled with the cdecl calling convention as the default since
-   system headers may assume the cdecl convention.
-*/
-#ifndef XMLCALL
-#if defined(XML_USE_MSC_EXTENSIONS)
-#define XMLCALL __cdecl
-#elif defined(__GNUC__) && defined(__i386)
-#define XMLCALL __attribute__((cdecl))
-#else
-/* For any platform which uses this definition and supports more than
-   one calling convention, we need to extend this definition to
-   declare the convention used on that platform, if it's possible to
-   do so.
-
-   If this is the case for your platform, please file a bug report
-   with information on how to identify your platform via the C
-   pre-processor and how to specify the same calling convention as the
-   platform's malloc() implementation.
-*/
-#define XMLCALL
-#endif
-#endif  /* not defined XMLCALL */
-
-
-#if !defined(XML_STATIC) && !defined(XMLIMPORT)
-#ifndef XML_BUILDING_EXPAT
-/* using Expat from an application */
-
-#ifdef XML_USE_MSC_EXTENSIONS
-#define XMLIMPORT __declspec(dllimport)
-#endif
-
-#endif
-#endif  /* not defined XML_STATIC */
-
-
-/* If we didn't define it above, define it away: */
-#ifndef XMLIMPORT
-#define XMLIMPORT
-#endif
-
-
-#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef XML_UNICODE_WCHAR_T
-#define XML_UNICODE
-#endif
-
-#ifdef XML_UNICODE     /* Information is UTF-16 encoded. */
-#ifdef XML_UNICODE_WCHAR_T
-typedef wchar_t XML_Char;
-typedef wchar_t XML_LChar;
-#else
-typedef unsigned short XML_Char;
-typedef char XML_LChar;
-#endif /* XML_UNICODE_WCHAR_T */
-#else                  /* Information is UTF-8 encoded. */
-typedef char XML_Char;
-typedef char XML_LChar;
-#endif /* XML_UNICODE */
-
-#ifdef XML_LARGE_SIZE  /* Use large integers for file/stream positions. */
-#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
-typedef __int64 XML_Index; 
-typedef unsigned __int64 XML_Size;
-#else
-typedef long long XML_Index;
-typedef unsigned long long XML_Size;
-#endif
-#else
-typedef long XML_Index;
-typedef unsigned long XML_Size;
-#endif /* XML_LARGE_SIZE */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* not Expat_External_INCLUDED */
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/expat/xmlparse.c b/AppPkg/Applications/Python/PyMod-2.7.2/Modules/expat/xmlparse.c
deleted file mode 100644
index e303c7a..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/expat/xmlparse.c
+++ /dev/null
@@ -1,6279 +0,0 @@
-/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#define XML_BUILDING_EXPAT 1
-
-#ifdef COMPILED_FROM_DSP
-#include "winconfig.h"
-#elif defined(MACOS_CLASSIC)
-#include "macconfig.h"
-#elif defined(__amigaos4__)
-#include "amigaconfig.h"
-#elif defined(HAVE_EXPAT_CONFIG_H)
-#include <expat_config.h>
-#endif /* ndef COMPILED_FROM_DSP */
-
-#include <stddef.h>
-#include <string.h>                     /* memset(), memcpy() */
-#include <assert.h>
-
-#if defined(UEFI_C_SOURCE)
-  #include <expat/expat.h>
-#else
-  #include "expat.h"
-#endif
-
-#ifdef XML_UNICODE
-#define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX
-#define XmlConvert XmlUtf16Convert
-#define XmlGetInternalEncoding XmlGetUtf16InternalEncoding
-#define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS
-#define XmlEncode XmlUtf16Encode
-#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((unsigned long)s) & 1))
-typedef unsigned short ICHAR;
-#else
-#define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX
-#define XmlConvert XmlUtf8Convert
-#define XmlGetInternalEncoding XmlGetUtf8InternalEncoding
-#define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS
-#define XmlEncode XmlUtf8Encode
-#define MUST_CONVERT(enc, s) (!(enc)->isUtf8)
-typedef char ICHAR;
-#endif
-
-
-#ifndef XML_NS
-
-#define XmlInitEncodingNS XmlInitEncoding
-#define XmlInitUnknownEncodingNS XmlInitUnknownEncoding
-#undef XmlGetInternalEncodingNS
-#define XmlGetInternalEncodingNS XmlGetInternalEncoding
-#define XmlParseXmlDeclNS XmlParseXmlDecl
-
-#endif
-
-#ifdef XML_UNICODE
-
-#ifdef XML_UNICODE_WCHAR_T
-#define XML_T(x) (const wchar_t)x
-#define XML_L(x) L ## x
-#else
-#define XML_T(x) (const unsigned short)x
-#define XML_L(x) x
-#endif
-
-#else
-
-#define XML_T(x) x
-#define XML_L(x) x
-
-#endif
-
-/* Round up n to be a multiple of sz, where sz is a power of 2. */
-#define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1))
-
-/* Handle the case where memmove() doesn't exist. */
-#ifndef HAVE_MEMMOVE
-#ifdef HAVE_BCOPY
-#define memmove(d,s,l) bcopy((s),(d),(l))
-#else
-#error memmove does not exist on this platform, nor is a substitute available
-#endif /* HAVE_BCOPY */
-#endif /* HAVE_MEMMOVE */
-
-#include "internal.h"
-#include "xmltok.h"
-#include "xmlrole.h"
-
-typedef const XML_Char *KEY;
-
-typedef struct {
-  KEY name;
-} NAMED;
-
-typedef struct {
-  NAMED **v;
-  unsigned char power;
-  size_t size;
-  size_t used;
-  const XML_Memory_Handling_Suite *mem;
-} HASH_TABLE;
-
-/* Basic character hash algorithm, taken from Python's string hash:
-   h = h * 1000003 ^ character, the constant being a prime number.
-
-*/
-#ifdef XML_UNICODE
-#define CHAR_HASH(h, c) \
-  (((h) * 0xF4243) ^ (unsigned short)(c))
-#else
-#define CHAR_HASH(h, c) \
-  (((h) * 0xF4243) ^ (unsigned char)(c))
-#endif
-
-/* For probing (after a collision) we need a step size relative prime
-   to the hash table size, which is a power of 2. We use double-hashing,
-   since we can calculate a second hash value cheaply by taking those bits
-   of the first hash value that were discarded (masked out) when the table
-   index was calculated: index = hash & mask, where mask = table->size - 1.
-   We limit the maximum step size to table->size / 4 (mask >> 2) and make
-   it odd, since odd numbers are always relative prime to a power of 2.
-*/
-#define SECOND_HASH(hash, mask, power) \
-  ((((hash) & ~(mask)) >> ((power) - 1)) & ((mask) >> 2))
-#define PROBE_STEP(hash, mask, power) \
-  ((unsigned char)((SECOND_HASH(hash, mask, power)) | 1))
-
-typedef struct {
-  NAMED **p;
-  NAMED **end;
-} HASH_TABLE_ITER;
-
-#define INIT_TAG_BUF_SIZE 32  /* must be a multiple of sizeof(XML_Char) */
-#define INIT_DATA_BUF_SIZE 1024
-#define INIT_ATTS_SIZE 16
-#define INIT_ATTS_VERSION 0xFFFFFFFF
-#define INIT_BLOCK_SIZE 1024
-#define INIT_BUFFER_SIZE 1024
-
-#define EXPAND_SPARE 24
-
-typedef struct binding {
-  struct prefix *prefix;
-  struct binding *nextTagBinding;
-  struct binding *prevPrefixBinding;
-  const struct attribute_id *attId;
-  XML_Char *uri;
-  int uriLen;
-  int uriAlloc;
-} BINDING;
-
-typedef struct prefix {
-  const XML_Char *name;
-  BINDING *binding;
-} PREFIX;
-
-typedef struct {
-  const XML_Char *str;
-  const XML_Char *localPart;
-  const XML_Char *prefix;
-  int strLen;
-  int uriLen;
-  int prefixLen;
-} TAG_NAME;
-
-/* TAG represents an open element.
-   The name of the element is stored in both the document and API
-   encodings.  The memory buffer 'buf' is a separately-allocated
-   memory area which stores the name.  During the XML_Parse()/
-   XMLParseBuffer() when the element is open, the memory for the 'raw'
-   version of the name (in the document encoding) is shared with the
-   document buffer.  If the element is open across calls to
-   XML_Parse()/XML_ParseBuffer(), the buffer is re-allocated to
-   contain the 'raw' name as well.
-
-   A parser re-uses these structures, maintaining a list of allocated
-   TAG objects in a free list.
-*/
-typedef struct tag {
-  struct tag *parent;           /* parent of this element */
-  const char *rawName;          /* tagName in the original encoding */
-  int rawNameLength;
-  TAG_NAME name;                /* tagName in the API encoding */
-  char *buf;                    /* buffer for name components */
-  char *bufEnd;                 /* end of the buffer */
-  BINDING *bindings;
-} TAG;
-
-typedef struct {
-  const XML_Char *name;
-  const XML_Char *textPtr;
-  int textLen;                  /* length in XML_Chars */
-  int processed;                /* # of processed bytes - when suspended */
-  const XML_Char *systemId;
-  const XML_Char *base;
-  const XML_Char *publicId;
-  const XML_Char *notation;
-  XML_Bool open;
-  XML_Bool is_param;
-  XML_Bool is_internal; /* true if declared in internal subset outside PE */
-} ENTITY;
-
-typedef struct {
-  enum XML_Content_Type         type;
-  enum XML_Content_Quant        quant;
-  const XML_Char *              name;
-  int                           firstchild;
-  int                           lastchild;
-  int                           childcnt;
-  int                           nextsib;
-} CONTENT_SCAFFOLD;
-
-#define INIT_SCAFFOLD_ELEMENTS 32
-
-typedef struct block {
-  struct block *next;
-  int size;
-  XML_Char s[1];
-} BLOCK;
-
-typedef struct {
-  BLOCK *blocks;
-  BLOCK *freeBlocks;
-  const XML_Char *end;
-  XML_Char *ptr;
-  XML_Char *start;
-  const XML_Memory_Handling_Suite *mem;
-} STRING_POOL;
-
-/* The XML_Char before the name is used to determine whether
-   an attribute has been specified. */
-typedef struct attribute_id {
-  XML_Char *name;
-  PREFIX *prefix;
-  XML_Bool maybeTokenized;
-  XML_Bool xmlns;
-} ATTRIBUTE_ID;
-
-typedef struct {
-  const ATTRIBUTE_ID *id;
-  XML_Bool isCdata;
-  const XML_Char *value;
-} DEFAULT_ATTRIBUTE;
-
-typedef struct {
-  unsigned long version;
-  unsigned long hash;
-  const XML_Char *uriName;
-} NS_ATT;
-
-typedef struct {
-  const XML_Char *name;
-  PREFIX *prefix;
-  const ATTRIBUTE_ID *idAtt;
-  int nDefaultAtts;
-  int allocDefaultAtts;
-  DEFAULT_ATTRIBUTE *defaultAtts;
-} ELEMENT_TYPE;
-
-typedef struct {
-  HASH_TABLE generalEntities;
-  HASH_TABLE elementTypes;
-  HASH_TABLE attributeIds;
-  HASH_TABLE prefixes;
-  STRING_POOL pool;
-  STRING_POOL entityValuePool;
-  /* false once a parameter entity reference has been skipped */
-  XML_Bool keepProcessing;
-  /* true once an internal or external PE reference has been encountered;
-     this includes the reference to an external subset */
-  XML_Bool hasParamEntityRefs;
-  XML_Bool standalone;
-#ifdef XML_DTD
-  /* indicates if external PE has been read */
-  XML_Bool paramEntityRead;
-  HASH_TABLE paramEntities;
-#endif /* XML_DTD */
-  PREFIX defaultPrefix;
-  /* === scaffolding for building content model === */
-  XML_Bool in_eldecl;
-  CONTENT_SCAFFOLD *scaffold;
-  unsigned contentStringLen;
-  unsigned scaffSize;
-  unsigned scaffCount;
-  int scaffLevel;
-  int *scaffIndex;
-} DTD;
-
-typedef struct open_internal_entity {
-  const char *internalEventPtr;
-  const char *internalEventEndPtr;
-  struct open_internal_entity *next;
-  ENTITY *entity;
-  int startTagLevel;
-  XML_Bool betweenDecl; /* WFC: PE Between Declarations */
-} OPEN_INTERNAL_ENTITY;
-
-typedef enum XML_Error PTRCALL Processor(XML_Parser parser,
-                                         const char *start,
-                                         const char *end,
-                                         const char **endPtr);
-
-static Processor prologProcessor;
-static Processor prologInitProcessor;
-static Processor contentProcessor;
-static Processor cdataSectionProcessor;
-#ifdef XML_DTD
-static Processor ignoreSectionProcessor;
-static Processor externalParEntProcessor;
-static Processor externalParEntInitProcessor;
-static Processor entityValueProcessor;
-static Processor entityValueInitProcessor;
-#endif /* XML_DTD */
-static Processor epilogProcessor;
-static Processor errorProcessor;
-static Processor externalEntityInitProcessor;
-static Processor externalEntityInitProcessor2;
-static Processor externalEntityInitProcessor3;
-static Processor externalEntityContentProcessor;
-static Processor internalEntityProcessor;
-
-static enum XML_Error
-handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName);
-static enum XML_Error
-processXmlDecl(XML_Parser parser, int isGeneralTextEntity,
-               const char *s, const char *next);
-static enum XML_Error
-initializeEncoding(XML_Parser parser);
-static enum XML_Error
-doProlog(XML_Parser parser, const ENCODING *enc, const char *s,
-         const char *end, int tok, const char *next, const char **nextPtr,
-         XML_Bool haveMore);
-static enum XML_Error
-processInternalEntity(XML_Parser parser, ENTITY *entity,
-                      XML_Bool betweenDecl);
-static enum XML_Error
-doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
-          const char *start, const char *end, const char **endPtr,
-          XML_Bool haveMore);
-static enum XML_Error
-doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr,
-               const char *end, const char **nextPtr, XML_Bool haveMore);
-#ifdef XML_DTD
-static enum XML_Error
-doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr,
-                const char *end, const char **nextPtr, XML_Bool haveMore);
-#endif /* XML_DTD */
-
-static enum XML_Error
-storeAtts(XML_Parser parser, const ENCODING *, const char *s,
-          TAG_NAME *tagNamePtr, BINDING **bindingsPtr);
-static enum XML_Error
-addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId,
-           const XML_Char *uri, BINDING **bindingsPtr);
-static int
-defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata,
-                XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser);
-static enum XML_Error
-storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata,
-                    const char *, const char *, STRING_POOL *);
-static enum XML_Error
-appendAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata,
-                     const char *, const char *, STRING_POOL *);
-static ATTRIBUTE_ID *
-getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start,
-               const char *end);
-static int
-setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *);
-static enum XML_Error
-storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start,
-                 const char *end);
-static int
-reportProcessingInstruction(XML_Parser parser, const ENCODING *enc,
-                            const char *start, const char *end);
-static int
-reportComment(XML_Parser parser, const ENCODING *enc, const char *start,
-              const char *end);
-static void
-reportDefault(XML_Parser parser, const ENCODING *enc, const char *start,
-              const char *end);
-
-static const XML_Char * getContext(XML_Parser parser);
-static XML_Bool
-setContext(XML_Parser parser, const XML_Char *context);
-
-static void FASTCALL normalizePublicId(XML_Char *s);
-
-static DTD * dtdCreate(const XML_Memory_Handling_Suite *ms);
-/* do not call if parentParser != NULL */
-static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms);
-static void
-dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms);
-static int
-dtdCopy(DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms);
-static int
-copyEntityTable(HASH_TABLE *, STRING_POOL *, const HASH_TABLE *);
-
-static NAMED *
-lookup(HASH_TABLE *table, KEY name, size_t createSize);
-static void FASTCALL
-hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms);
-static void FASTCALL hashTableClear(HASH_TABLE *);
-static void FASTCALL hashTableDestroy(HASH_TABLE *);
-static void FASTCALL
-hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *);
-static NAMED * FASTCALL hashTableIterNext(HASH_TABLE_ITER *);
-
-static void FASTCALL
-poolInit(STRING_POOL *, const XML_Memory_Handling_Suite *ms);
-static void FASTCALL poolClear(STRING_POOL *);
-static void FASTCALL poolDestroy(STRING_POOL *);
-static XML_Char *
-poolAppend(STRING_POOL *pool, const ENCODING *enc,
-           const char *ptr, const char *end);
-static XML_Char *
-poolStoreString(STRING_POOL *pool, const ENCODING *enc,
-                const char *ptr, const char *end);
-static XML_Bool FASTCALL poolGrow(STRING_POOL *pool);
-static const XML_Char * FASTCALL
-poolCopyString(STRING_POOL *pool, const XML_Char *s);
-static const XML_Char *
-poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n);
-static const XML_Char * FASTCALL
-poolAppendString(STRING_POOL *pool, const XML_Char *s);
-
-static int FASTCALL nextScaffoldPart(XML_Parser parser);
-static XML_Content * build_model(XML_Parser parser);
-static ELEMENT_TYPE *
-getElementType(XML_Parser parser, const ENCODING *enc,
-               const char *ptr, const char *end);
-
-static XML_Parser
-parserCreate(const XML_Char *encodingName,
-             const XML_Memory_Handling_Suite *memsuite,
-             const XML_Char *nameSep,
-             DTD *dtd);
-static void
-parserInit(XML_Parser parser, const XML_Char *encodingName);
-
-#define poolStart(pool) ((pool)->start)
-#define poolEnd(pool) ((pool)->ptr)
-#define poolLength(pool) ((pool)->ptr - (pool)->start)
-#define poolChop(pool) ((void)--(pool->ptr))
-#define poolLastChar(pool) (((pool)->ptr)[-1])
-#define poolDiscard(pool) ((pool)->ptr = (pool)->start)
-#define poolFinish(pool) ((pool)->start = (pool)->ptr)
-#define poolAppendChar(pool, c) \
-  (((pool)->ptr == (pool)->end && !poolGrow(pool)) \
-   ? 0 \
-   : ((*((pool)->ptr)++ = c), 1))
-
-struct XML_ParserStruct {
-  /* The first member must be userData so that the XML_GetUserData
-     macro works. */
-  void *m_userData;
-  void *m_handlerArg;
-  char *m_buffer;
-  const XML_Memory_Handling_Suite m_mem;
-  /* first character to be parsed */
-  const char *m_bufferPtr;
-  /* past last character to be parsed */
-  char *m_bufferEnd;
-  /* allocated end of buffer */
-  const char *m_bufferLim;
-  XML_Index m_parseEndByteIndex;
-  const char *m_parseEndPtr;
-  XML_Char *m_dataBuf;
-  XML_Char *m_dataBufEnd;
-  XML_StartElementHandler m_startElementHandler;
-  XML_EndElementHandler m_endElementHandler;
-  XML_CharacterDataHandler m_characterDataHandler;
-  XML_ProcessingInstructionHandler m_processingInstructionHandler;
-  XML_CommentHandler m_commentHandler;
-  XML_StartCdataSectionHandler m_startCdataSectionHandler;
-  XML_EndCdataSectionHandler m_endCdataSectionHandler;
-  XML_DefaultHandler m_defaultHandler;
-  XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler;
-  XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler;
-  XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler;
-  XML_NotationDeclHandler m_notationDeclHandler;
-  XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler;
-  XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler;
-  XML_NotStandaloneHandler m_notStandaloneHandler;
-  XML_ExternalEntityRefHandler m_externalEntityRefHandler;
-  XML_Parser m_externalEntityRefHandlerArg;
-  XML_SkippedEntityHandler m_skippedEntityHandler;
-  XML_UnknownEncodingHandler m_unknownEncodingHandler;
-  XML_ElementDeclHandler m_elementDeclHandler;
-  XML_AttlistDeclHandler m_attlistDeclHandler;
-  XML_EntityDeclHandler m_entityDeclHandler;
-  XML_XmlDeclHandler m_xmlDeclHandler;
-  const ENCODING *m_encoding;
-  INIT_ENCODING m_initEncoding;
-  const ENCODING *m_internalEncoding;
-  const XML_Char *m_protocolEncodingName;
-  XML_Bool m_ns;
-  XML_Bool m_ns_triplets;
-  void *m_unknownEncodingMem;
-  void *m_unknownEncodingData;
-  void *m_unknownEncodingHandlerData;
-  void (XMLCALL *m_unknownEncodingRelease)(void *);
-  PROLOG_STATE m_prologState;
-  Processor *m_processor;
-  enum XML_Error m_errorCode;
-  const char *m_eventPtr;
-  const char *m_eventEndPtr;
-  const char *m_positionPtr;
-  OPEN_INTERNAL_ENTITY *m_openInternalEntities;
-  OPEN_INTERNAL_ENTITY *m_freeInternalEntities;
-  XML_Bool m_defaultExpandInternalEntities;
-  int m_tagLevel;
-  ENTITY *m_declEntity;
-  const XML_Char *m_doctypeName;
-  const XML_Char *m_doctypeSysid;
-  const XML_Char *m_doctypePubid;
-  const XML_Char *m_declAttributeType;
-  const XML_Char *m_declNotationName;
-  const XML_Char *m_declNotationPublicId;
-  ELEMENT_TYPE *m_declElementType;
-  ATTRIBUTE_ID *m_declAttributeId;
-  XML_Bool m_declAttributeIsCdata;
-  XML_Bool m_declAttributeIsId;
-  DTD *m_dtd;
-  const XML_Char *m_curBase;
-  TAG *m_tagStack;
-  TAG *m_freeTagList;
-  BINDING *m_inheritedBindings;
-  BINDING *m_freeBindingList;
-  int m_attsSize;
-  int m_nSpecifiedAtts;
-  int m_idAttIndex;
-  ATTRIBUTE *m_atts;
-  NS_ATT *m_nsAtts;
-  unsigned long m_nsAttsVersion;
-  unsigned char m_nsAttsPower;
-  POSITION m_position;
-  STRING_POOL m_tempPool;
-  STRING_POOL m_temp2Pool;
-  char *m_groupConnector;
-  unsigned int m_groupSize;
-  XML_Char m_namespaceSeparator;
-  XML_Parser m_parentParser;
-  XML_ParsingStatus m_parsingStatus;
-#ifdef XML_DTD
-  XML_Bool m_isParamEntity;
-  XML_Bool m_useForeignDTD;
-  enum XML_ParamEntityParsing m_paramEntityParsing;
-#endif
-};
-
-#define MALLOC(s) (parser->m_mem.malloc_fcn((s)))
-#define REALLOC(p,s) (parser->m_mem.realloc_fcn((p),(s)))
-#define FREE(p) (parser->m_mem.free_fcn((p)))
-
-#define userData (parser->m_userData)
-#define handlerArg (parser->m_handlerArg)
-#define startElementHandler (parser->m_startElementHandler)
-#define endElementHandler (parser->m_endElementHandler)
-#define characterDataHandler (parser->m_characterDataHandler)
-#define processingInstructionHandler \
-        (parser->m_processingInstructionHandler)
-#define commentHandler (parser->m_commentHandler)
-#define startCdataSectionHandler \
-        (parser->m_startCdataSectionHandler)
-#define endCdataSectionHandler (parser->m_endCdataSectionHandler)
-#define defaultHandler (parser->m_defaultHandler)
-#define startDoctypeDeclHandler (parser->m_startDoctypeDeclHandler)
-#define endDoctypeDeclHandler (parser->m_endDoctypeDeclHandler)
-#define unparsedEntityDeclHandler \
-        (parser->m_unparsedEntityDeclHandler)
-#define notationDeclHandler (parser->m_notationDeclHandler)
-#define startNamespaceDeclHandler \
-        (parser->m_startNamespaceDeclHandler)
-#define endNamespaceDeclHandler (parser->m_endNamespaceDeclHandler)
-#define notStandaloneHandler (parser->m_notStandaloneHandler)
-#define externalEntityRefHandler \
-        (parser->m_externalEntityRefHandler)
-#define externalEntityRefHandlerArg \
-        (parser->m_externalEntityRefHandlerArg)
-#define internalEntityRefHandler \
-        (parser->m_internalEntityRefHandler)
-#define skippedEntityHandler (parser->m_skippedEntityHandler)
-#define unknownEncodingHandler (parser->m_unknownEncodingHandler)
-#define elementDeclHandler (parser->m_elementDeclHandler)
-#define attlistDeclHandler (parser->m_attlistDeclHandler)
-#define entityDeclHandler (parser->m_entityDeclHandler)
-#define xmlDeclHandler (parser->m_xmlDeclHandler)
-#define encoding (parser->m_encoding)
-#define initEncoding (parser->m_initEncoding)
-#define internalEncoding (parser->m_internalEncoding)
-#define unknownEncodingMem (parser->m_unknownEncodingMem)
-#define unknownEncodingData (parser->m_unknownEncodingData)
-#define unknownEncodingHandlerData \
-  (parser->m_unknownEncodingHandlerData)
-#define unknownEncodingRelease (parser->m_unknownEncodingRelease)
-#define protocolEncodingName (parser->m_protocolEncodingName)
-#define ns (parser->m_ns)
-#define ns_triplets (parser->m_ns_triplets)
-#define prologState (parser->m_prologState)
-#define processor (parser->m_processor)
-#define errorCode (parser->m_errorCode)
-#define eventPtr (parser->m_eventPtr)
-#define eventEndPtr (parser->m_eventEndPtr)
-#define positionPtr (parser->m_positionPtr)
-#define position (parser->m_position)
-#define openInternalEntities (parser->m_openInternalEntities)
-#define freeInternalEntities (parser->m_freeInternalEntities)
-#define defaultExpandInternalEntities \
-        (parser->m_defaultExpandInternalEntities)
-#define tagLevel (parser->m_tagLevel)
-#define buffer (parser->m_buffer)
-#define bufferPtr (parser->m_bufferPtr)
-#define bufferEnd (parser->m_bufferEnd)
-#define parseEndByteIndex (parser->m_parseEndByteIndex)
-#define parseEndPtr (parser->m_parseEndPtr)
-#define bufferLim (parser->m_bufferLim)
-#define dataBuf (parser->m_dataBuf)
-#define dataBufEnd (parser->m_dataBufEnd)
-#define _dtd (parser->m_dtd)
-#define curBase (parser->m_curBase)
-#define declEntity (parser->m_declEntity)
-#define doctypeName (parser->m_doctypeName)
-#define doctypeSysid (parser->m_doctypeSysid)
-#define doctypePubid (parser->m_doctypePubid)
-#define declAttributeType (parser->m_declAttributeType)
-#define declNotationName (parser->m_declNotationName)
-#define declNotationPublicId (parser->m_declNotationPublicId)
-#define declElementType (parser->m_declElementType)
-#define declAttributeId (parser->m_declAttributeId)
-#define declAttributeIsCdata (parser->m_declAttributeIsCdata)
-#define declAttributeIsId (parser->m_declAttributeIsId)
-#define freeTagList (parser->m_freeTagList)
-#define freeBindingList (parser->m_freeBindingList)
-#define inheritedBindings (parser->m_inheritedBindings)
-#define tagStack (parser->m_tagStack)
-#define atts (parser->m_atts)
-#define attsSize (parser->m_attsSize)
-#define nSpecifiedAtts (parser->m_nSpecifiedAtts)
-#define idAttIndex (parser->m_idAttIndex)
-#define nsAtts (parser->m_nsAtts)
-#define nsAttsVersion (parser->m_nsAttsVersion)
-#define nsAttsPower (parser->m_nsAttsPower)
-#define tempPool (parser->m_tempPool)
-#define temp2Pool (parser->m_temp2Pool)
-#define groupConnector (parser->m_groupConnector)
-#define groupSize (parser->m_groupSize)
-#define namespaceSeparator (parser->m_namespaceSeparator)
-#define parentParser (parser->m_parentParser)
-#define ps_parsing (parser->m_parsingStatus.parsing)
-#define ps_finalBuffer (parser->m_parsingStatus.finalBuffer)
-#ifdef XML_DTD
-#define isParamEntity (parser->m_isParamEntity)
-#define useForeignDTD (parser->m_useForeignDTD)
-#define paramEntityParsing (parser->m_paramEntityParsing)
-#endif /* XML_DTD */
-
-XML_Parser XMLCALL
-XML_ParserCreate(const XML_Char *encodingName)
-{
-  return XML_ParserCreate_MM(encodingName, NULL, NULL);
-}
-
-XML_Parser XMLCALL
-XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep)
-{
-  XML_Char tmp[2];
-  *tmp = nsSep;
-  return XML_ParserCreate_MM(encodingName, NULL, tmp);
-}
-
-static const XML_Char implicitContext[] = {
-  'x', 'm', 'l', '=', 'h', 't', 't', 'p', ':', '/', '/',
-  'w', 'w', 'w', '.', 'w', '3', '.', 'o', 'r', 'g', '/',
-  'X', 'M', 'L', '/', '1', '9', '9', '8', '/',
-  'n', 'a', 'm', 'e', 's', 'p', 'a', 'c', 'e', '\0'
-};
-
-XML_Parser XMLCALL
-XML_ParserCreate_MM(const XML_Char *encodingName,
-                    const XML_Memory_Handling_Suite *memsuite,
-                    const XML_Char *nameSep)
-{
-  XML_Parser parser = parserCreate(encodingName, memsuite, nameSep, NULL);
-  if (parser != NULL && ns) {
-    /* implicit context only set for root parser, since child
-       parsers (i.e. external entity parsers) will inherit it
-    */
-    if (!setContext(parser, implicitContext)) {
-      XML_ParserFree(parser);
-      return NULL;
-    }
-  }
-  return parser;
-}
-
-static XML_Parser
-parserCreate(const XML_Char *encodingName,
-             const XML_Memory_Handling_Suite *memsuite,
-             const XML_Char *nameSep,
-             DTD *dtd)
-{
-  XML_Parser parser;
-
-  if (memsuite) {
-    XML_Memory_Handling_Suite *mtemp;
-    parser = (XML_Parser)
-      memsuite->malloc_fcn(sizeof(struct XML_ParserStruct));
-    if (parser != NULL) {
-      mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem);
-      mtemp->malloc_fcn = memsuite->malloc_fcn;
-      mtemp->realloc_fcn = memsuite->realloc_fcn;
-      mtemp->free_fcn = memsuite->free_fcn;
-    }
-  }
-  else {
-    XML_Memory_Handling_Suite *mtemp;
-    parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct));
-    if (parser != NULL) {
-      mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem);
-      mtemp->malloc_fcn = malloc;
-      mtemp->realloc_fcn = realloc;
-      mtemp->free_fcn = free;
-    }
-  }
-
-  if (!parser)
-    return parser;
-
-  buffer = NULL;
-  bufferLim = NULL;
-
-  attsSize = INIT_ATTS_SIZE;
-  atts = (ATTRIBUTE *)MALLOC(attsSize * sizeof(ATTRIBUTE));
-  if (atts == NULL) {
-    FREE(parser);
-    return NULL;
-  }
-  dataBuf = (XML_Char *)MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char));
-  if (dataBuf == NULL) {
-    FREE(atts);
-    FREE(parser);
-    return NULL;
-  }
-  dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE;
-
-  if (dtd)
-    _dtd = dtd;
-  else {
-    _dtd = dtdCreate(&parser->m_mem);
-    if (_dtd == NULL) {
-      FREE(dataBuf);
-      FREE(atts);
-      FREE(parser);
-      return NULL;
-    }
-  }
-
-  freeBindingList = NULL;
-  freeTagList = NULL;
-  freeInternalEntities = NULL;
-
-  groupSize = 0;
-  groupConnector = NULL;
-
-  unknownEncodingHandler = NULL;
-  unknownEncodingHandlerData = NULL;
-
-  namespaceSeparator = '!';
-  ns = XML_FALSE;
-  ns_triplets = XML_FALSE;
-
-  nsAtts = NULL;
-  nsAttsVersion = 0;
-  nsAttsPower = 0;
-
-  poolInit(&tempPool, &(parser->m_mem));
-  poolInit(&temp2Pool, &(parser->m_mem));
-  parserInit(parser, encodingName);
-
-  if (encodingName && !protocolEncodingName) {
-    XML_ParserFree(parser);
-    return NULL;
-  }
-
-  if (nameSep) {
-    ns = XML_TRUE;
-    internalEncoding = XmlGetInternalEncodingNS();
-    namespaceSeparator = *nameSep;
-  }
-  else {
-    internalEncoding = XmlGetInternalEncoding();
-  }
-
-  return parser;
-}
-
-static void
-parserInit(XML_Parser parser, const XML_Char *encodingName)
-{
-  processor = prologInitProcessor;
-  XmlPrologStateInit(&prologState);
-  protocolEncodingName = (encodingName != NULL
-                          ? poolCopyString(&tempPool, encodingName)
-                          : NULL);
-  curBase = NULL;
-  XmlInitEncoding(&initEncoding, &encoding, 0);
-  userData = NULL;
-  handlerArg = NULL;
-  startElementHandler = NULL;
-  endElementHandler = NULL;
-  characterDataHandler = NULL;
-  processingInstructionHandler = NULL;
-  commentHandler = NULL;
-  startCdataSectionHandler = NULL;
-  endCdataSectionHandler = NULL;
-  defaultHandler = NULL;
-  startDoctypeDeclHandler = NULL;
-  endDoctypeDeclHandler = NULL;
-  unparsedEntityDeclHandler = NULL;
-  notationDeclHandler = NULL;
-  startNamespaceDeclHandler = NULL;
-  endNamespaceDeclHandler = NULL;
-  notStandaloneHandler = NULL;
-  externalEntityRefHandler = NULL;
-  externalEntityRefHandlerArg = parser;
-  skippedEntityHandler = NULL;
-  elementDeclHandler = NULL;
-  attlistDeclHandler = NULL;
-  entityDeclHandler = NULL;
-  xmlDeclHandler = NULL;
-  bufferPtr = buffer;
-  bufferEnd = buffer;
-  parseEndByteIndex = 0;
-  parseEndPtr = NULL;
-  declElementType = NULL;
-  declAttributeId = NULL;
-  declEntity = NULL;
-  doctypeName = NULL;
-  doctypeSysid = NULL;
-  doctypePubid = NULL;
-  declAttributeType = NULL;
-  declNotationName = NULL;
-  declNotationPublicId = NULL;
-  declAttributeIsCdata = XML_FALSE;
-  declAttributeIsId = XML_FALSE;
-  memset(&position, 0, sizeof(POSITION));
-  errorCode = XML_ERROR_NONE;
-  eventPtr = NULL;
-  eventEndPtr = NULL;
-  positionPtr = NULL;
-  openInternalEntities = NULL;
-  defaultExpandInternalEntities = XML_TRUE;
-  tagLevel = 0;
-  tagStack = NULL;
-  inheritedBindings = NULL;
-  nSpecifiedAtts = 0;
-  unknownEncodingMem = NULL;
-  unknownEncodingRelease = NULL;
-  unknownEncodingData = NULL;
-  parentParser = NULL;
-  ps_parsing = XML_INITIALIZED;
-#ifdef XML_DTD
-  isParamEntity = XML_FALSE;
-  useForeignDTD = XML_FALSE;
-  paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;
-#endif
-}
-
-/* moves list of bindings to freeBindingList */
-static void FASTCALL
-moveToFreeBindingList(XML_Parser parser, BINDING *bindings)
-{
-  while (bindings) {
-    BINDING *b = bindings;
-    bindings = bindings->nextTagBinding;
-    b->nextTagBinding = freeBindingList;
-    freeBindingList = b;
-  }
-}
-
-XML_Bool XMLCALL
-XML_ParserReset(XML_Parser parser, const XML_Char *encodingName)
-{
-  TAG *tStk;
-  OPEN_INTERNAL_ENTITY *openEntityList;
-  if (parentParser)
-    return XML_FALSE;
-  /* move tagStack to freeTagList */
-  tStk = tagStack;
-  while (tStk) {
-    TAG *tag = tStk;
-    tStk = tStk->parent;
-    tag->parent = freeTagList;
-    moveToFreeBindingList(parser, tag->bindings);
-    tag->bindings = NULL;
-    freeTagList = tag;
-  }
-  /* move openInternalEntities to freeInternalEntities */
-  openEntityList = openInternalEntities;
-  while (openEntityList) {
-    OPEN_INTERNAL_ENTITY *openEntity = openEntityList;
-    openEntityList = openEntity->next;
-    openEntity->next = freeInternalEntities;
-    freeInternalEntities = openEntity;
-  }
-  moveToFreeBindingList(parser, inheritedBindings);
-  FREE(unknownEncodingMem);
-  if (unknownEncodingRelease)
-    unknownEncodingRelease(unknownEncodingData);
-  poolClear(&tempPool);
-  poolClear(&temp2Pool);
-  parserInit(parser, encodingName);
-  dtdReset(_dtd, &parser->m_mem);
-  return setContext(parser, implicitContext);
-}
-
-enum XML_Status XMLCALL
-XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName)
-{
-  /* Block after XML_Parse()/XML_ParseBuffer() has been called.
-     XXX There's no way for the caller to determine which of the
-     XXX possible error cases caused the XML_STATUS_ERROR return.
-  */
-  if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
-    return XML_STATUS_ERROR;
-  if (encodingName == NULL)
-    protocolEncodingName = NULL;
-  else {
-    protocolEncodingName = poolCopyString(&tempPool, encodingName);
-    if (!protocolEncodingName)
-      return XML_STATUS_ERROR;
-  }
-  return XML_STATUS_OK;
-}
-
-XML_Parser XMLCALL
-XML_ExternalEntityParserCreate(XML_Parser oldParser,
-                               const XML_Char *context,
-                               const XML_Char *encodingName)
-{
-  XML_Parser parser = oldParser;
-  DTD *newDtd = NULL;
-  DTD *oldDtd = _dtd;
-  XML_StartElementHandler oldStartElementHandler = startElementHandler;
-  XML_EndElementHandler oldEndElementHandler = endElementHandler;
-  XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler;
-  XML_ProcessingInstructionHandler oldProcessingInstructionHandler
-      = processingInstructionHandler;
-  XML_CommentHandler oldCommentHandler = commentHandler;
-  XML_StartCdataSectionHandler oldStartCdataSectionHandler
-      = startCdataSectionHandler;
-  XML_EndCdataSectionHandler oldEndCdataSectionHandler
-      = endCdataSectionHandler;
-  XML_DefaultHandler oldDefaultHandler = defaultHandler;
-  XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler
-      = unparsedEntityDeclHandler;
-  XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler;
-  XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler
-      = startNamespaceDeclHandler;
-  XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler
-      = endNamespaceDeclHandler;
-  XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler;
-  XML_ExternalEntityRefHandler oldExternalEntityRefHandler
-      = externalEntityRefHandler;
-  XML_SkippedEntityHandler oldSkippedEntityHandler = skippedEntityHandler;
-  XML_UnknownEncodingHandler oldUnknownEncodingHandler
-      = unknownEncodingHandler;
-  XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler;
-  XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler;
-  XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler;
-  XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler;
-  ELEMENT_TYPE * oldDeclElementType = declElementType;
-
-  void *oldUserData = userData;
-  void *oldHandlerArg = handlerArg;
-  XML_Bool oldDefaultExpandInternalEntities = defaultExpandInternalEntities;
-  XML_Parser oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg;
-#ifdef XML_DTD
-  enum XML_ParamEntityParsing oldParamEntityParsing = paramEntityParsing;
-  int oldInEntityValue = prologState.inEntityValue;
-#endif
-  XML_Bool oldns_triplets = ns_triplets;
-
-#ifdef XML_DTD
-  if (!context)
-    newDtd = oldDtd;
-#endif /* XML_DTD */
-
-  /* Note that the magical uses of the pre-processor to make field
-     access look more like C++ require that `parser' be overwritten
-     here.  This makes this function more painful to follow than it
-     would be otherwise.
-  */
-  if (ns) {
-    XML_Char tmp[2];
-    *tmp = namespaceSeparator;
-    parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd);
-  }
-  else {
-    parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd);
-  }
-
-  if (!parser)
-    return NULL;
-
-  startElementHandler = oldStartElementHandler;
-  endElementHandler = oldEndElementHandler;
-  characterDataHandler = oldCharacterDataHandler;
-  processingInstructionHandler = oldProcessingInstructionHandler;
-  commentHandler = oldCommentHandler;
-  startCdataSectionHandler = oldStartCdataSectionHandler;
-  endCdataSectionHandler = oldEndCdataSectionHandler;
-  defaultHandler = oldDefaultHandler;
-  unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler;
-  notationDeclHandler = oldNotationDeclHandler;
-  startNamespaceDeclHandler = oldStartNamespaceDeclHandler;
-  endNamespaceDeclHandler = oldEndNamespaceDeclHandler;
-  notStandaloneHandler = oldNotStandaloneHandler;
-  externalEntityRefHandler = oldExternalEntityRefHandler;
-  skippedEntityHandler = oldSkippedEntityHandler;
-  unknownEncodingHandler = oldUnknownEncodingHandler;
-  elementDeclHandler = oldElementDeclHandler;
-  attlistDeclHandler = oldAttlistDeclHandler;
-  entityDeclHandler = oldEntityDeclHandler;
-  xmlDeclHandler = oldXmlDeclHandler;
-  declElementType = oldDeclElementType;
-  userData = oldUserData;
-  if (oldUserData == oldHandlerArg)
-    handlerArg = userData;
-  else
-    handlerArg = parser;
-  if (oldExternalEntityRefHandlerArg != oldParser)
-    externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg;
-  defaultExpandInternalEntities = oldDefaultExpandInternalEntities;
-  ns_triplets = oldns_triplets;
-  parentParser = oldParser;
-#ifdef XML_DTD
-  paramEntityParsing = oldParamEntityParsing;
-  prologState.inEntityValue = oldInEntityValue;
-  if (context) {
-#endif /* XML_DTD */
-    if (!dtdCopy(_dtd, oldDtd, &parser->m_mem)
-      || !setContext(parser, context)) {
-      XML_ParserFree(parser);
-      return NULL;
-    }
-    processor = externalEntityInitProcessor;
-#ifdef XML_DTD
-  }
-  else {
-    /* The DTD instance referenced by _dtd is shared between the document's
-       root parser and external PE parsers, therefore one does not need to
-       call setContext. In addition, one also *must* not call setContext,
-       because this would overwrite existing prefix->binding pointers in
-       _dtd with ones that get destroyed with the external PE parser.
-       This would leave those prefixes with dangling pointers.
-    */
-    isParamEntity = XML_TRUE;
-    XmlPrologStateInitExternalEntity(&prologState);
-    processor = externalParEntInitProcessor;
-  }
-#endif /* XML_DTD */
-  return parser;
-}
-
-static void FASTCALL
-destroyBindings(BINDING *bindings, XML_Parser parser)
-{
-  for (;;) {
-    BINDING *b = bindings;
-    if (!b)
-      break;
-    bindings = b->nextTagBinding;
-    FREE(b->uri);
-    FREE(b);
-  }
-}
-
-void XMLCALL
-XML_ParserFree(XML_Parser parser)
-{
-  TAG *tagList;
-  OPEN_INTERNAL_ENTITY *entityList;
-  if (parser == NULL)
-    return;
-  /* free tagStack and freeTagList */
-  tagList = tagStack;
-  for (;;) {
-    TAG *p;
-    if (tagList == NULL) {
-      if (freeTagList == NULL)
-        break;
-      tagList = freeTagList;
-      freeTagList = NULL;
-    }
-    p = tagList;
-    tagList = tagList->parent;
-    FREE(p->buf);
-    destroyBindings(p->bindings, parser);
-    FREE(p);
-  }
-  /* free openInternalEntities and freeInternalEntities */
-  entityList = openInternalEntities;
-  for (;;) {
-    OPEN_INTERNAL_ENTITY *openEntity;
-    if (entityList == NULL) {
-      if (freeInternalEntities == NULL)
-        break;
-      entityList = freeInternalEntities;
-      freeInternalEntities = NULL;
-    }
-    openEntity = entityList;
-    entityList = entityList->next;
-    FREE(openEntity);
-  }
-
-  destroyBindings(freeBindingList, parser);
-  destroyBindings(inheritedBindings, parser);
-  poolDestroy(&tempPool);
-  poolDestroy(&temp2Pool);
-#ifdef XML_DTD
-  /* external parameter entity parsers share the DTD structure
-     parser->m_dtd with the root parser, so we must not destroy it
-  */
-  if (!isParamEntity && _dtd)
-#else
-  if (_dtd)
-#endif /* XML_DTD */
-    dtdDestroy(_dtd, (XML_Bool)!parentParser, &parser->m_mem);
-  FREE((void *)atts);
-  FREE(groupConnector);
-  FREE(buffer);
-  FREE(dataBuf);
-  FREE(nsAtts);
-  FREE(unknownEncodingMem);
-  if (unknownEncodingRelease)
-    unknownEncodingRelease(unknownEncodingData);
-  FREE(parser);
-}
-
-void XMLCALL
-XML_UseParserAsHandlerArg(XML_Parser parser)
-{
-  handlerArg = parser;
-}
-
-enum XML_Error XMLCALL
-XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD)
-{
-#ifdef XML_DTD
-  /* block after XML_Parse()/XML_ParseBuffer() has been called */
-  if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
-    return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING;
-  useForeignDTD = useDTD;
-  return XML_ERROR_NONE;
-#else
-  return XML_ERROR_FEATURE_REQUIRES_XML_DTD;
-#endif
-}
-
-void XMLCALL
-XML_SetReturnNSTriplet(XML_Parser parser, int do_nst)
-{
-  /* block after XML_Parse()/XML_ParseBuffer() has been called */
-  if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
-    return;
-  ns_triplets = do_nst ? XML_TRUE : XML_FALSE;
-}
-
-void XMLCALL
-XML_SetUserData(XML_Parser parser, void *p)
-{
-  if (handlerArg == userData)
-    handlerArg = userData = p;
-  else
-    userData = p;
-}
-
-enum XML_Status XMLCALL
-XML_SetBase(XML_Parser parser, const XML_Char *p)
-{
-  if (p) {
-    p = poolCopyString(&_dtd->pool, p);
-    if (!p)
-      return XML_STATUS_ERROR;
-    curBase = p;
-  }
-  else
-    curBase = NULL;
-  return XML_STATUS_OK;
-}
-
-const XML_Char * XMLCALL
-XML_GetBase(XML_Parser parser)
-{
-  return curBase;
-}
-
-int XMLCALL
-XML_GetSpecifiedAttributeCount(XML_Parser parser)
-{
-  return nSpecifiedAtts;
-}
-
-int XMLCALL
-XML_GetIdAttributeIndex(XML_Parser parser)
-{
-  return idAttIndex;
-}
-
-void XMLCALL
-XML_SetElementHandler(XML_Parser parser,
-                      XML_StartElementHandler start,
-                      XML_EndElementHandler end)
-{
-  startElementHandler = start;
-  endElementHandler = end;
-}
-
-void XMLCALL
-XML_SetStartElementHandler(XML_Parser parser,
-                           XML_StartElementHandler start) {
-  startElementHandler = start;
-}
-
-void XMLCALL
-XML_SetEndElementHandler(XML_Parser parser,
-                         XML_EndElementHandler end) {
-  endElementHandler = end;
-}
-
-void XMLCALL
-XML_SetCharacterDataHandler(XML_Parser parser,
-                            XML_CharacterDataHandler handler)
-{
-  characterDataHandler = handler;
-}
-
-void XMLCALL
-XML_SetProcessingInstructionHandler(XML_Parser parser,
-                                    XML_ProcessingInstructionHandler handler)
-{
-  processingInstructionHandler = handler;
-}
-
-void XMLCALL
-XML_SetCommentHandler(XML_Parser parser,
-                      XML_CommentHandler handler)
-{
-  commentHandler = handler;
-}
-
-void XMLCALL
-XML_SetCdataSectionHandler(XML_Parser parser,
-                           XML_StartCdataSectionHandler start,
-                           XML_EndCdataSectionHandler end)
-{
-  startCdataSectionHandler = start;
-  endCdataSectionHandler = end;
-}
-
-void XMLCALL
-XML_SetStartCdataSectionHandler(XML_Parser parser,
-                                XML_StartCdataSectionHandler start) {
-  startCdataSectionHandler = start;
-}
-
-void XMLCALL
-XML_SetEndCdataSectionHandler(XML_Parser parser,
-                              XML_EndCdataSectionHandler end) {
-  endCdataSectionHandler = end;
-}
-
-void XMLCALL
-XML_SetDefaultHandler(XML_Parser parser,
-                      XML_DefaultHandler handler)
-{
-  defaultHandler = handler;
-  defaultExpandInternalEntities = XML_FALSE;
-}
-
-void XMLCALL
-XML_SetDefaultHandlerExpand(XML_Parser parser,
-                            XML_DefaultHandler handler)
-{
-  defaultHandler = handler;
-  defaultExpandInternalEntities = XML_TRUE;
-}
-
-void XMLCALL
-XML_SetDoctypeDeclHandler(XML_Parser parser,
-                          XML_StartDoctypeDeclHandler start,
-                          XML_EndDoctypeDeclHandler end)
-{
-  startDoctypeDeclHandler = start;
-  endDoctypeDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetStartDoctypeDeclHandler(XML_Parser parser,
-                               XML_StartDoctypeDeclHandler start) {
-  startDoctypeDeclHandler = start;
-}
-
-void XMLCALL
-XML_SetEndDoctypeDeclHandler(XML_Parser parser,
-                             XML_EndDoctypeDeclHandler end) {
-  endDoctypeDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
-                                 XML_UnparsedEntityDeclHandler handler)
-{
-  unparsedEntityDeclHandler = handler;
-}
-
-void XMLCALL
-XML_SetNotationDeclHandler(XML_Parser parser,
-                           XML_NotationDeclHandler handler)
-{
-  notationDeclHandler = handler;
-}
-
-void XMLCALL
-XML_SetNamespaceDeclHandler(XML_Parser parser,
-                            XML_StartNamespaceDeclHandler start,
-                            XML_EndNamespaceDeclHandler end)
-{
-  startNamespaceDeclHandler = start;
-  endNamespaceDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetStartNamespaceDeclHandler(XML_Parser parser,
-                                 XML_StartNamespaceDeclHandler start) {
-  startNamespaceDeclHandler = start;
-}
-
-void XMLCALL
-XML_SetEndNamespaceDeclHandler(XML_Parser parser,
-                               XML_EndNamespaceDeclHandler end) {
-  endNamespaceDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetNotStandaloneHandler(XML_Parser parser,
-                            XML_NotStandaloneHandler handler)
-{
-  notStandaloneHandler = handler;
-}
-
-void XMLCALL
-XML_SetExternalEntityRefHandler(XML_Parser parser,
-                                XML_ExternalEntityRefHandler handler)
-{
-  externalEntityRefHandler = handler;
-}
-
-void XMLCALL
-XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg)
-{
-  if (arg)
-    externalEntityRefHandlerArg = (XML_Parser)arg;
-  else
-    externalEntityRefHandlerArg = parser;
-}
-
-void XMLCALL
-XML_SetSkippedEntityHandler(XML_Parser parser,
-                            XML_SkippedEntityHandler handler)
-{
-  skippedEntityHandler = handler;
-}
-
-void XMLCALL
-XML_SetUnknownEncodingHandler(XML_Parser parser,
-                              XML_UnknownEncodingHandler handler,
-                              void *data)
-{
-  unknownEncodingHandler = handler;
-  unknownEncodingHandlerData = data;
-}
-
-void XMLCALL
-XML_SetElementDeclHandler(XML_Parser parser,
-                          XML_ElementDeclHandler eldecl)
-{
-  elementDeclHandler = eldecl;
-}
-
-void XMLCALL
-XML_SetAttlistDeclHandler(XML_Parser parser,
-                          XML_AttlistDeclHandler attdecl)
-{
-  attlistDeclHandler = attdecl;
-}
-
-void XMLCALL
-XML_SetEntityDeclHandler(XML_Parser parser,
-                         XML_EntityDeclHandler handler)
-{
-  entityDeclHandler = handler;
-}
-
-void XMLCALL
-XML_SetXmlDeclHandler(XML_Parser parser,
-                      XML_XmlDeclHandler handler) {
-  xmlDeclHandler = handler;
-}
-
-int XMLCALL
-XML_SetParamEntityParsing(XML_Parser parser,
-                          enum XML_ParamEntityParsing peParsing)
-{
-  /* block after XML_Parse()/XML_ParseBuffer() has been called */
-  if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
-    return 0;
-#ifdef XML_DTD
-  paramEntityParsing = peParsing;
-  return 1;
-#else
-  return peParsing == XML_PARAM_ENTITY_PARSING_NEVER;
-#endif
-}
-
-enum XML_Status XMLCALL
-XML_Parse(XML_Parser parser, const char *s, int len, int isFinal)
-{
-  switch (ps_parsing) {
-  case XML_SUSPENDED:
-    errorCode = XML_ERROR_SUSPENDED;
-    return XML_STATUS_ERROR;
-  case XML_FINISHED:
-    errorCode = XML_ERROR_FINISHED;
-    return XML_STATUS_ERROR;
-  default:
-    ps_parsing = XML_PARSING;
-  }
-
-  if (len == 0) {
-    ps_finalBuffer = (XML_Bool)isFinal;
-    if (!isFinal)
-      return XML_STATUS_OK;
-    positionPtr = bufferPtr;
-    parseEndPtr = bufferEnd;
-
-    /* If data are left over from last buffer, and we now know that these
-       data are the final chunk of input, then we have to check them again
-       to detect errors based on that fact.
-    */
-    errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr);
-
-    if (errorCode == XML_ERROR_NONE) {
-      switch (ps_parsing) {
-      case XML_SUSPENDED:
-        XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
-        positionPtr = bufferPtr;
-        return XML_STATUS_SUSPENDED;
-      case XML_INITIALIZED:
-      case XML_PARSING:
-        ps_parsing = XML_FINISHED;
-        /* fall through */
-      default:
-        return XML_STATUS_OK;
-      }
-    }
-    eventEndPtr = eventPtr;
-    processor = errorProcessor;
-    return XML_STATUS_ERROR;
-  }
-#ifndef XML_CONTEXT_BYTES
-  else if (bufferPtr == bufferEnd) {
-    const char *end;
-    int nLeftOver;
-    enum XML_Error result;
-    parseEndByteIndex += len;
-    positionPtr = s;
-    ps_finalBuffer = (XML_Bool)isFinal;
-
-    errorCode = processor(parser, s, parseEndPtr = s + len, &end);
-
-    if (errorCode != XML_ERROR_NONE) {
-      eventEndPtr = eventPtr;
-      processor = errorProcessor;
-      return XML_STATUS_ERROR;
-    }
-    else {
-      switch (ps_parsing) {
-      case XML_SUSPENDED:
-        result = XML_STATUS_SUSPENDED;
-        break;
-      case XML_INITIALIZED:
-      case XML_PARSING:
-        result = XML_STATUS_OK;
-        if (isFinal) {
-          ps_parsing = XML_FINISHED;
-          return result;
-        }
-        break;
-      default:
-        /* XML_FINISHED case required by compiler - but not tested - djv */
-        return XML_STATUS_OK;
-      }
-    }
-
-    XmlUpdatePosition(encoding, positionPtr, end, &position);
-    nLeftOver = s + len - end;
-    if (nLeftOver) {
-      if (buffer == NULL || nLeftOver > bufferLim - buffer) {
-        /* FIXME avoid integer overflow */
-        char *temp;
-        temp = (buffer == NULL
-                ? (char *)MALLOC(len * 2)
-                : (char *)REALLOC(buffer, len * 2));
-        if (temp == NULL) {
-          errorCode = XML_ERROR_NO_MEMORY;
-          return XML_STATUS_ERROR;
-        }
-        buffer = temp;
-        if (!buffer) {
-          errorCode = XML_ERROR_NO_MEMORY;
-          eventPtr = eventEndPtr = NULL;
-          processor = errorProcessor;
-          return XML_STATUS_ERROR;
-        }
-        bufferLim = buffer + len * 2;
-      }
-      memcpy(buffer, end, nLeftOver);
-    }
-    bufferPtr = buffer;
-    bufferEnd = buffer + nLeftOver;
-    positionPtr = bufferPtr;
-    parseEndPtr = bufferEnd;
-    eventPtr = bufferPtr;
-    eventEndPtr = bufferPtr;
-    return result;
-  }
-#endif  /* not defined XML_CONTEXT_BYTES */
-  else {
-    void *buff = XML_GetBuffer(parser, len);
-    if (buff == NULL)
-      return XML_STATUS_ERROR;
-    else {
-      memcpy(buff, s, len);
-      return XML_ParseBuffer(parser, len, isFinal);
-    }
-  }
-}
-
-enum XML_Status XMLCALL
-XML_ParseBuffer(XML_Parser parser, int len, int isFinal)
-{
-  const char *start;
-  enum XML_Status result = XML_STATUS_OK;
-
-  switch (ps_parsing) {
-  case XML_SUSPENDED:
-    errorCode = XML_ERROR_SUSPENDED;
-    return XML_STATUS_ERROR;
-  case XML_FINISHED:
-    errorCode = XML_ERROR_FINISHED;
-    return XML_STATUS_ERROR;
-  default:
-    ps_parsing = XML_PARSING;
-  }
-
-  start = bufferPtr;
-  positionPtr = start;
-  bufferEnd += len;
-  parseEndPtr = bufferEnd;
-  parseEndByteIndex += len;
-  ps_finalBuffer = (XML_Bool)isFinal;
-
-  errorCode = processor(parser, start, parseEndPtr, &bufferPtr);
-
-  if (errorCode != XML_ERROR_NONE) {
-    eventEndPtr = eventPtr;
-    processor = errorProcessor;
-    return XML_STATUS_ERROR;
-  }
-  else {
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      result = XML_STATUS_SUSPENDED;
-      break;
-    case XML_INITIALIZED:
-    case XML_PARSING:
-      if (isFinal) {
-        ps_parsing = XML_FINISHED;
-        return result;
-      }
-    default: ;  /* should not happen */
-    }
-  }
-
-  XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
-  positionPtr = bufferPtr;
-  return result;
-}
-
-void * XMLCALL
-XML_GetBuffer(XML_Parser parser, int len)
-{
-  switch (ps_parsing) {
-  case XML_SUSPENDED:
-    errorCode = XML_ERROR_SUSPENDED;
-    return NULL;
-  case XML_FINISHED:
-    errorCode = XML_ERROR_FINISHED;
-    return NULL;
-  default: ;
-  }
-
-  if (len > bufferLim - bufferEnd) {
-    /* FIXME avoid integer overflow */
-    int neededSize = len + (int)(bufferEnd - bufferPtr);
-#ifdef XML_CONTEXT_BYTES
-    int keep = (int)(bufferPtr - buffer);
-
-    if (keep > XML_CONTEXT_BYTES)
-      keep = XML_CONTEXT_BYTES;
-    neededSize += keep;
-#endif  /* defined XML_CONTEXT_BYTES */
-    if (neededSize  <= bufferLim - buffer) {
-#ifdef XML_CONTEXT_BYTES
-      if (keep < bufferPtr - buffer) {
-        int offset = (int)(bufferPtr - buffer) - keep;
-        memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep);
-        bufferEnd -= offset;
-        bufferPtr -= offset;
-      }
-#else
-      memmove(buffer, bufferPtr, bufferEnd - bufferPtr);
-      bufferEnd = buffer + (bufferEnd - bufferPtr);
-      bufferPtr = buffer;
-#endif  /* not defined XML_CONTEXT_BYTES */
-    }
-    else {
-      char *newBuf;
-      int bufferSize = (int)(bufferLim - bufferPtr);
-      if (bufferSize == 0)
-        bufferSize = INIT_BUFFER_SIZE;
-      do {
-        bufferSize *= 2;
-      } while (bufferSize < neededSize);
-      newBuf = (char *)MALLOC(bufferSize);
-      if (newBuf == 0) {
-        errorCode = XML_ERROR_NO_MEMORY;
-        return NULL;
-      }
-      bufferLim = newBuf + bufferSize;
-#ifdef XML_CONTEXT_BYTES
-      if (bufferPtr) {
-        int keep = (int)(bufferPtr - buffer);
-        if (keep > XML_CONTEXT_BYTES)
-          keep = XML_CONTEXT_BYTES;
-        memcpy(newBuf, &bufferPtr[-keep], bufferEnd - bufferPtr + keep);
-        FREE(buffer);
-        buffer = newBuf;
-        bufferEnd = buffer + (bufferEnd - bufferPtr) + keep;
-        bufferPtr = buffer + keep;
-      }
-      else {
-        bufferEnd = newBuf + (bufferEnd - bufferPtr);
-        bufferPtr = buffer = newBuf;
-      }
-#else
-      if (bufferPtr) {
-        memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr);
-        FREE(buffer);
-      }
-      bufferEnd = newBuf + (bufferEnd - bufferPtr);
-      bufferPtr = buffer = newBuf;
-#endif  /* not defined XML_CONTEXT_BYTES */
-    }
-  }
-  return bufferEnd;
-}
-
-enum XML_Status XMLCALL
-XML_StopParser(XML_Parser parser, XML_Bool resumable)
-{
-  switch (ps_parsing) {
-  case XML_SUSPENDED:
-    if (resumable) {
-      errorCode = XML_ERROR_SUSPENDED;
-      return XML_STATUS_ERROR;
-    }
-    ps_parsing = XML_FINISHED;
-    break;
-  case XML_FINISHED:
-    errorCode = XML_ERROR_FINISHED;
-    return XML_STATUS_ERROR;
-  default:
-    if (resumable) {
-#ifdef XML_DTD
-      if (isParamEntity) {
-        errorCode = XML_ERROR_SUSPEND_PE;
-        return XML_STATUS_ERROR;
-      }
-#endif
-      ps_parsing = XML_SUSPENDED;
-    }
-    else
-      ps_parsing = XML_FINISHED;
-  }
-  return XML_STATUS_OK;
-}
-
-enum XML_Status XMLCALL
-XML_ResumeParser(XML_Parser parser)
-{
-  enum XML_Status result = XML_STATUS_OK;
-
-  if (ps_parsing != XML_SUSPENDED) {
-    errorCode = XML_ERROR_NOT_SUSPENDED;
-    return XML_STATUS_ERROR;
-  }
-  ps_parsing = XML_PARSING;
-
-  errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr);
-
-  if (errorCode != XML_ERROR_NONE) {
-    eventEndPtr = eventPtr;
-    processor = errorProcessor;
-    return XML_STATUS_ERROR;
-  }
-  else {
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      result = XML_STATUS_SUSPENDED;
-      break;
-    case XML_INITIALIZED:
-    case XML_PARSING:
-      if (ps_finalBuffer) {
-        ps_parsing = XML_FINISHED;
-        return result;
-      }
-    default: ;
-    }
-  }
-
-  XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
-  positionPtr = bufferPtr;
-  return result;
-}
-
-void XMLCALL
-XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status)
-{
-  assert(status != NULL);
-  *status = parser->m_parsingStatus;
-}
-
-enum XML_Error XMLCALL
-XML_GetErrorCode(XML_Parser parser)
-{
-  return errorCode;
-}
-
-XML_Index XMLCALL
-XML_GetCurrentByteIndex(XML_Parser parser)
-{
-  if (eventPtr)
-    return parseEndByteIndex - (parseEndPtr - eventPtr);
-  return -1;
-}
-
-int XMLCALL
-XML_GetCurrentByteCount(XML_Parser parser)
-{
-  if (eventEndPtr && eventPtr)
-    return (int)(eventEndPtr - eventPtr);
-  return 0;
-}
-
-const char * XMLCALL
-XML_GetInputContext(XML_Parser parser, int *offset, int *size)
-{
-#ifdef XML_CONTEXT_BYTES
-  if (eventPtr && buffer) {
-    *offset = (int)(eventPtr - buffer);
-    *size   = (int)(bufferEnd - buffer);
-    return buffer;
-  }
-#endif /* defined XML_CONTEXT_BYTES */
-  return (char *) 0;
-}
-
-XML_Size XMLCALL
-XML_GetCurrentLineNumber(XML_Parser parser)
-{
-  if (eventPtr && eventPtr >= positionPtr) {
-    XmlUpdatePosition(encoding, positionPtr, eventPtr, &position);
-    positionPtr = eventPtr;
-  }
-  return position.lineNumber + 1;
-}
-
-XML_Size XMLCALL
-XML_GetCurrentColumnNumber(XML_Parser parser)
-{
-  if (eventPtr && eventPtr >= positionPtr) {
-    XmlUpdatePosition(encoding, positionPtr, eventPtr, &position);
-    positionPtr = eventPtr;
-  }
-  return position.columnNumber;
-}
-
-void XMLCALL
-XML_FreeContentModel(XML_Parser parser, XML_Content *model)
-{
-  FREE(model);
-}
-
-void * XMLCALL
-XML_MemMalloc(XML_Parser parser, size_t size)
-{
-  return MALLOC(size);
-}
-
-void * XMLCALL
-XML_MemRealloc(XML_Parser parser, void *ptr, size_t size)
-{
-  return REALLOC(ptr, size);
-}
-
-void XMLCALL
-XML_MemFree(XML_Parser parser, void *ptr)
-{
-  FREE(ptr);
-}
-
-void XMLCALL
-XML_DefaultCurrent(XML_Parser parser)
-{
-  if (defaultHandler) {
-    if (openInternalEntities)
-      reportDefault(parser,
-                    internalEncoding,
-                    openInternalEntities->internalEventPtr,
-                    openInternalEntities->internalEventEndPtr);
-    else
-      reportDefault(parser, encoding, eventPtr, eventEndPtr);
-  }
-}
-
-const XML_LChar * XMLCALL
-XML_ErrorString(enum XML_Error code)
-{
-  static const XML_LChar* const message[] = {
-    0,
-    XML_L("out of memory"),
-    XML_L("syntax error"),
-    XML_L("no element found"),
-    XML_L("not well-formed (invalid token)"),
-    XML_L("unclosed token"),
-    XML_L("partial character"),
-    XML_L("mismatched tag"),
-    XML_L("duplicate attribute"),
-    XML_L("junk after document element"),
-    XML_L("illegal parameter entity reference"),
-    XML_L("undefined entity"),
-    XML_L("recursive entity reference"),
-    XML_L("asynchronous entity"),
-    XML_L("reference to invalid character number"),
-    XML_L("reference to binary entity"),
-    XML_L("reference to external entity in attribute"),
-    XML_L("XML or text declaration not at start of entity"),
-    XML_L("unknown encoding"),
-    XML_L("encoding specified in XML declaration is incorrect"),
-    XML_L("unclosed CDATA section"),
-    XML_L("error in processing external entity reference"),
-    XML_L("document is not standalone"),
-    XML_L("unexpected parser state - please send a bug report"),
-    XML_L("entity declared in parameter entity"),
-    XML_L("requested feature requires XML_DTD support in Expat"),
-    XML_L("cannot change setting once parsing has begun"),
-    XML_L("unbound prefix"),
-    XML_L("must not undeclare prefix"),
-    XML_L("incomplete markup in parameter entity"),
-    XML_L("XML declaration not well-formed"),
-    XML_L("text declaration not well-formed"),
-    XML_L("illegal character(s) in public id"),
-    XML_L("parser suspended"),
-    XML_L("parser not suspended"),
-    XML_L("parsing aborted"),
-    XML_L("parsing finished"),
-    XML_L("cannot suspend in external parameter entity"),
-    XML_L("reserved prefix (xml) must not be undeclared or bound to another namespace name"),
-    XML_L("reserved prefix (xmlns) must not be declared or undeclared"),
-    XML_L("prefix must not be bound to one of the reserved namespace names")
-  };
-  if (code > 0 && code < sizeof(message)/sizeof(message[0]))
-    return message[code];
-  return NULL;
-}
-
-const XML_LChar * XMLCALL
-XML_ExpatVersion(void) {
-
-  /* V1 is used to string-ize the version number. However, it would
-     string-ize the actual version macro *names* unless we get them
-     substituted before being passed to V1. CPP is defined to expand
-     a macro, then rescan for more expansions. Thus, we use V2 to expand
-     the version macros, then CPP will expand the resulting V1() macro
-     with the correct numerals. */
-  /* ### I'm assuming cpp is portable in this respect... */
-
-#define V1(a,b,c) XML_L(#a)XML_L(".")XML_L(#b)XML_L(".")XML_L(#c)
-#define V2(a,b,c) XML_L("expat_")V1(a,b,c)
-
-  return V2(XML_MAJOR_VERSION, XML_MINOR_VERSION, XML_MICRO_VERSION);
-
-#undef V1
-#undef V2
-}
-
-XML_Expat_Version XMLCALL
-XML_ExpatVersionInfo(void)
-{
-  XML_Expat_Version version;
-
-  version.major = XML_MAJOR_VERSION;
-  version.minor = XML_MINOR_VERSION;
-  version.micro = XML_MICRO_VERSION;
-
-  return version;
-}
-
-const XML_Feature * XMLCALL
-XML_GetFeatureList(void)
-{
-  static const XML_Feature features[] = {
-    {XML_FEATURE_SIZEOF_XML_CHAR,  XML_L("sizeof(XML_Char)"),
-     sizeof(XML_Char)},
-    {XML_FEATURE_SIZEOF_XML_LCHAR, XML_L("sizeof(XML_LChar)"),
-     sizeof(XML_LChar)},
-#ifdef XML_UNICODE
-    {XML_FEATURE_UNICODE,          XML_L("XML_UNICODE"), 0},
-#endif
-#ifdef XML_UNICODE_WCHAR_T
-    {XML_FEATURE_UNICODE_WCHAR_T,  XML_L("XML_UNICODE_WCHAR_T"), 0},
-#endif
-#ifdef XML_DTD
-    {XML_FEATURE_DTD,              XML_L("XML_DTD"), 0},
-#endif
-#ifdef XML_CONTEXT_BYTES
-    {XML_FEATURE_CONTEXT_BYTES,    XML_L("XML_CONTEXT_BYTES"),
-     XML_CONTEXT_BYTES},
-#endif
-#ifdef XML_MIN_SIZE
-    {XML_FEATURE_MIN_SIZE,         XML_L("XML_MIN_SIZE"), 0},
-#endif
-#ifdef XML_NS
-    {XML_FEATURE_NS,               XML_L("XML_NS"), 0},
-#endif
-    {XML_FEATURE_END,              NULL, 0}
-  };
-
-  return features;
-}
-
-/* Initially tag->rawName always points into the parse buffer;
-   for those TAG instances opened while the current parse buffer was
-   processed, and not yet closed, we need to store tag->rawName in a more
-   permanent location, since the parse buffer is about to be discarded.
-*/
-static XML_Bool
-storeRawNames(XML_Parser parser)
-{
-  TAG *tag = tagStack;
-  while (tag) {
-    int bufSize;
-    int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1);
-    char *rawNameBuf = tag->buf + nameLen;
-    /* Stop if already stored.  Since tagStack is a stack, we can stop
-       at the first entry that has already been copied; everything
-       below it in the stack is already been accounted for in a
-       previous call to this function.
-    */
-    if (tag->rawName == rawNameBuf)
-      break;
-    /* For re-use purposes we need to ensure that the
-       size of tag->buf is a multiple of sizeof(XML_Char).
-    */
-    bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char));
-    if (bufSize > tag->bufEnd - tag->buf) {
-      char *temp = (char *)REALLOC(tag->buf, bufSize);
-      if (temp == NULL)
-        return XML_FALSE;
-      /* if tag->name.str points to tag->buf (only when namespace
-         processing is off) then we have to update it
-      */
-      if (tag->name.str == (XML_Char *)tag->buf)
-        tag->name.str = (XML_Char *)temp;
-      /* if tag->name.localPart is set (when namespace processing is on)
-         then update it as well, since it will always point into tag->buf
-      */
-      if (tag->name.localPart)
-        tag->name.localPart = (XML_Char *)temp + (tag->name.localPart -
-                                                  (XML_Char *)tag->buf);
-      tag->buf = temp;
-      tag->bufEnd = temp + bufSize;
-      rawNameBuf = temp + nameLen;
-    }
-    memcpy(rawNameBuf, tag->rawName, tag->rawNameLength);
-    tag->rawName = rawNameBuf;
-    tag = tag->parent;
-  }
-  return XML_TRUE;
-}
-
-static enum XML_Error PTRCALL
-contentProcessor(XML_Parser parser,
-                 const char *start,
-                 const char *end,
-                 const char **endPtr)
-{
-  enum XML_Error result = doContent(parser, 0, encoding, start, end,
-                                    endPtr, (XML_Bool)!ps_finalBuffer);
-  if (result == XML_ERROR_NONE) {
-    if (!storeRawNames(parser))
-      return XML_ERROR_NO_MEMORY;
-  }
-  return result;
-}
-
-static enum XML_Error PTRCALL
-externalEntityInitProcessor(XML_Parser parser,
-                            const char *start,
-                            const char *end,
-                            const char **endPtr)
-{
-  enum XML_Error result = initializeEncoding(parser);
-  if (result != XML_ERROR_NONE)
-    return result;
-  processor = externalEntityInitProcessor2;
-  return externalEntityInitProcessor2(parser, start, end, endPtr);
-}
-
-static enum XML_Error PTRCALL
-externalEntityInitProcessor2(XML_Parser parser,
-                             const char *start,
-                             const char *end,
-                             const char **endPtr)
-{
-  const char *next = start; /* XmlContentTok doesn't always set the last arg */
-  int tok = XmlContentTok(encoding, start, end, &next);
-  switch (tok) {
-  case XML_TOK_BOM:
-    /* If we are at the end of the buffer, this would cause the next stage,
-       i.e. externalEntityInitProcessor3, to pass control directly to
-       doContent (by detecting XML_TOK_NONE) without processing any xml text
-       declaration - causing the error XML_ERROR_MISPLACED_XML_PI in doContent.
-    */
-    if (next == end && !ps_finalBuffer) {
-      *endPtr = next;
-      return XML_ERROR_NONE;
-    }
-    start = next;
-    break;
-  case XML_TOK_PARTIAL:
-    if (!ps_finalBuffer) {
-      *endPtr = start;
-      return XML_ERROR_NONE;
-    }
-    eventPtr = start;
-    return XML_ERROR_UNCLOSED_TOKEN;
-  case XML_TOK_PARTIAL_CHAR:
-    if (!ps_finalBuffer) {
-      *endPtr = start;
-      return XML_ERROR_NONE;
-    }
-    eventPtr = start;
-    return XML_ERROR_PARTIAL_CHAR;
-  }
-  processor = externalEntityInitProcessor3;
-  return externalEntityInitProcessor3(parser, start, end, endPtr);
-}
-
-static enum XML_Error PTRCALL
-externalEntityInitProcessor3(XML_Parser parser,
-                             const char *start,
-                             const char *end,
-                             const char **endPtr)
-{
-  int tok;
-  const char *next = start; /* XmlContentTok doesn't always set the last arg */
-  eventPtr = start;
-  tok = XmlContentTok(encoding, start, end, &next);
-  eventEndPtr = next;
-
-  switch (tok) {
-  case XML_TOK_XML_DECL:
-    {
-      enum XML_Error result;
-      result = processXmlDecl(parser, 1, start, next);
-      if (result != XML_ERROR_NONE)
-        return result;
-      switch (ps_parsing) {
-      case XML_SUSPENDED:
-        *endPtr = next;
-        return XML_ERROR_NONE;
-      case XML_FINISHED:
-        return XML_ERROR_ABORTED;
-      default:
-        start = next;
-      }
-    }
-    break;
-  case XML_TOK_PARTIAL:
-    if (!ps_finalBuffer) {
-      *endPtr = start;
-      return XML_ERROR_NONE;
-    }
-    return XML_ERROR_UNCLOSED_TOKEN;
-  case XML_TOK_PARTIAL_CHAR:
-    if (!ps_finalBuffer) {
-      *endPtr = start;
-      return XML_ERROR_NONE;
-    }
-    return XML_ERROR_PARTIAL_CHAR;
-  }
-  processor = externalEntityContentProcessor;
-  tagLevel = 1;
-  return externalEntityContentProcessor(parser, start, end, endPtr);
-}
-
-static enum XML_Error PTRCALL
-externalEntityContentProcessor(XML_Parser parser,
-                               const char *start,
-                               const char *end,
-                               const char **endPtr)
-{
-  enum XML_Error result = doContent(parser, 1, encoding, start, end,
-                                    endPtr, (XML_Bool)!ps_finalBuffer);
-  if (result == XML_ERROR_NONE) {
-    if (!storeRawNames(parser))
-      return XML_ERROR_NO_MEMORY;
-  }
-  return result;
-}
-
-static enum XML_Error
-doContent(XML_Parser parser,
-          int startTagLevel,
-          const ENCODING *enc,
-          const char *s,
-          const char *end,
-          const char **nextPtr,
-          XML_Bool haveMore)
-{
-  /* save one level of indirection */
-  DTD * const dtd = _dtd;
-
-  const char **eventPP;
-  const char **eventEndPP;
-  if (enc == encoding) {
-    eventPP = &eventPtr;
-    eventEndPP = &eventEndPtr;
-  }
-  else {
-    eventPP = &(openInternalEntities->internalEventPtr);
-    eventEndPP = &(openInternalEntities->internalEventEndPtr);
-  }
-  *eventPP = s;
-
-  for (;;) {
-    const char *next = s; /* XmlContentTok doesn't always set the last arg */
-    int tok = XmlContentTok(enc, s, end, &next);
-    *eventEndPP = next;
-    switch (tok) {
-    case XML_TOK_TRAILING_CR:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      *eventEndPP = end;
-      if (characterDataHandler) {
-        XML_Char c = 0xA;
-        characterDataHandler(handlerArg, &c, 1);
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, end);
-      /* We are at the end of the final buffer, should we check for
-         XML_SUSPENDED, XML_FINISHED?
-      */
-      if (startTagLevel == 0)
-        return XML_ERROR_NO_ELEMENTS;
-      if (tagLevel != startTagLevel)
-        return XML_ERROR_ASYNC_ENTITY;
-      *nextPtr = end;
-      return XML_ERROR_NONE;
-    case XML_TOK_NONE:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      if (startTagLevel > 0) {
-        if (tagLevel != startTagLevel)
-          return XML_ERROR_ASYNC_ENTITY;
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_NO_ELEMENTS;
-    case XML_TOK_INVALID:
-      *eventPP = next;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_UNCLOSED_TOKEN;
-    case XML_TOK_PARTIAL_CHAR:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_PARTIAL_CHAR;
-    case XML_TOK_ENTITY_REF:
-      {
-        const XML_Char *name;
-        ENTITY *entity;
-        XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc,
-                                              s + enc->minBytesPerChar,
-                                              next - enc->minBytesPerChar);
-        if (ch) {
-          if (characterDataHandler)
-            characterDataHandler(handlerArg, &ch, 1);
-          else if (defaultHandler)
-            reportDefault(parser, enc, s, next);
-          break;
-        }
-        name = poolStoreString(&dtd->pool, enc,
-                                s + enc->minBytesPerChar,
-                                next - enc->minBytesPerChar);
-        if (!name)
-          return XML_ERROR_NO_MEMORY;
-        entity = (ENTITY *)lookup(&dtd->generalEntities, name, 0);
-        poolDiscard(&dtd->pool);
-        /* First, determine if a check for an existing declaration is needed;
-           if yes, check that the entity exists, and that it is internal,
-           otherwise call the skipped entity or default handler.
-        */
-        if (!dtd->hasParamEntityRefs || dtd->standalone) {
-          if (!entity)
-            return XML_ERROR_UNDEFINED_ENTITY;
-          else if (!entity->is_internal)
-            return XML_ERROR_ENTITY_DECLARED_IN_PE;
-        }
-        else if (!entity) {
-          if (skippedEntityHandler)
-            skippedEntityHandler(handlerArg, name, 0);
-          else if (defaultHandler)
-            reportDefault(parser, enc, s, next);
-          break;
-        }
-        if (entity->open)
-          return XML_ERROR_RECURSIVE_ENTITY_REF;
-        if (entity->notation)
-          return XML_ERROR_BINARY_ENTITY_REF;
-        if (entity->textPtr) {
-          enum XML_Error result;
-          if (!defaultExpandInternalEntities) {
-            if (skippedEntityHandler)
-              skippedEntityHandler(handlerArg, entity->name, 0);
-            else if (defaultHandler)
-              reportDefault(parser, enc, s, next);
-            break;
-          }
-          result = processInternalEntity(parser, entity, XML_FALSE);
-          if (result != XML_ERROR_NONE)
-            return result;
-        }
-        else if (externalEntityRefHandler) {
-          const XML_Char *context;
-          entity->open = XML_TRUE;
-          context = getContext(parser);
-          entity->open = XML_FALSE;
-          if (!context)
-            return XML_ERROR_NO_MEMORY;
-          if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                        context,
-                                        entity->base,
-                                        entity->systemId,
-                                        entity->publicId))
-            return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-          poolDiscard(&tempPool);
-        }
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        break;
-      }
-    case XML_TOK_START_TAG_NO_ATTS:
-      /* fall through */
-    case XML_TOK_START_TAG_WITH_ATTS:
-      {
-        TAG *tag;
-        enum XML_Error result;
-        XML_Char *toPtr;
-        if (freeTagList) {
-          tag = freeTagList;
-          freeTagList = freeTagList->parent;
-        }
-        else {
-          tag = (TAG *)MALLOC(sizeof(TAG));
-          if (!tag)
-            return XML_ERROR_NO_MEMORY;
-          tag->buf = (char *)MALLOC(INIT_TAG_BUF_SIZE);
-          if (!tag->buf) {
-            FREE(tag);
-            return XML_ERROR_NO_MEMORY;
-          }
-          tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE;
-        }
-        tag->bindings = NULL;
-        tag->parent = tagStack;
-        tagStack = tag;
-        tag->name.localPart = NULL;
-        tag->name.prefix = NULL;
-        tag->rawName = s + enc->minBytesPerChar;
-        tag->rawNameLength = XmlNameLength(enc, tag->rawName);
-        ++tagLevel;
-        {
-          const char *rawNameEnd = tag->rawName + tag->rawNameLength;
-          const char *fromPtr = tag->rawName;
-          toPtr = (XML_Char *)tag->buf;
-          for (;;) {
-            int bufSize;
-            int convLen;
-            XmlConvert(enc,
-                       &fromPtr, rawNameEnd,
-                       (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1);
-            convLen = (int)(toPtr - (XML_Char *)tag->buf);
-            if (fromPtr == rawNameEnd) {
-              tag->name.strLen = convLen;
-              break;
-            }
-            bufSize = (int)(tag->bufEnd - tag->buf) << 1;
-            {
-              char *temp = (char *)REALLOC(tag->buf, bufSize);
-              if (temp == NULL)
-                return XML_ERROR_NO_MEMORY;
-              tag->buf = temp;
-              tag->bufEnd = temp + bufSize;
-              toPtr = (XML_Char *)temp + convLen;
-            }
-          }
-        }
-        tag->name.str = (XML_Char *)tag->buf;
-        *toPtr = XML_T('\0');
-        result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings));
-        if (result)
-          return result;
-        if (startElementHandler)
-          startElementHandler(handlerArg, tag->name.str,
-                              (const XML_Char **)atts);
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        poolClear(&tempPool);
-        break;
-      }
-    case XML_TOK_EMPTY_ELEMENT_NO_ATTS:
-      /* fall through */
-    case XML_TOK_EMPTY_ELEMENT_WITH_ATTS:
-      {
-        const char *rawName = s + enc->minBytesPerChar;
-        enum XML_Error result;
-        BINDING *bindings = NULL;
-        XML_Bool noElmHandlers = XML_TRUE;
-        TAG_NAME name;
-        name.str = poolStoreString(&tempPool, enc, rawName,
-                                   rawName + XmlNameLength(enc, rawName));
-        if (!name.str)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&tempPool);
-        result = storeAtts(parser, enc, s, &name, &bindings);
-        if (result)
-          return result;
-        poolFinish(&tempPool);
-        if (startElementHandler) {
-          startElementHandler(handlerArg, name.str, (const XML_Char **)atts);
-          noElmHandlers = XML_FALSE;
-        }
-        if (endElementHandler) {
-          if (startElementHandler)
-            *eventPP = *eventEndPP;
-          endElementHandler(handlerArg, name.str);
-          noElmHandlers = XML_FALSE;
-        }
-        if (noElmHandlers && defaultHandler)
-          reportDefault(parser, enc, s, next);
-        poolClear(&tempPool);
-        while (bindings) {
-          BINDING *b = bindings;
-          if (endNamespaceDeclHandler)
-            endNamespaceDeclHandler(handlerArg, b->prefix->name);
-          bindings = bindings->nextTagBinding;
-          b->nextTagBinding = freeBindingList;
-          freeBindingList = b;
-          b->prefix->binding = b->prevPrefixBinding;
-        }
-      }
-      if (tagLevel == 0)
-        return epilogProcessor(parser, next, end, nextPtr);
-      break;
-    case XML_TOK_END_TAG:
-      if (tagLevel == startTagLevel)
-        return XML_ERROR_ASYNC_ENTITY;
-      else {
-        int len;
-        const char *rawName;
-        TAG *tag = tagStack;
-        tagStack = tag->parent;
-        tag->parent = freeTagList;
-        freeTagList = tag;
-        rawName = s + enc->minBytesPerChar*2;
-        len = XmlNameLength(enc, rawName);
-        if (len != tag->rawNameLength
-            || memcmp(tag->rawName, rawName, len) != 0) {
-          *eventPP = rawName;
-          return XML_ERROR_TAG_MISMATCH;
-        }
-        --tagLevel;
-        if (endElementHandler) {
-          const XML_Char *localPart;
-          const XML_Char *prefix;
-          XML_Char *uri;
-          localPart = tag->name.localPart;
-          if (ns && localPart) {
-            /* localPart and prefix may have been overwritten in
-               tag->name.str, since this points to the binding->uri
-               buffer which gets re-used; so we have to add them again
-            */
-            uri = (XML_Char *)tag->name.str + tag->name.uriLen;
-            /* don't need to check for space - already done in storeAtts() */
-            while (*localPart) *uri++ = *localPart++;
-            prefix = (XML_Char *)tag->name.prefix;
-            if (ns_triplets && prefix) {
-              *uri++ = namespaceSeparator;
-              while (*prefix) *uri++ = *prefix++;
-             }
-            *uri = XML_T('\0');
-          }
-          endElementHandler(handlerArg, tag->name.str);
-        }
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        while (tag->bindings) {
-          BINDING *b = tag->bindings;
-          if (endNamespaceDeclHandler)
-            endNamespaceDeclHandler(handlerArg, b->prefix->name);
-          tag->bindings = tag->bindings->nextTagBinding;
-          b->nextTagBinding = freeBindingList;
-          freeBindingList = b;
-          b->prefix->binding = b->prevPrefixBinding;
-        }
-        if (tagLevel == 0)
-          return epilogProcessor(parser, next, end, nextPtr);
-      }
-      break;
-    case XML_TOK_CHAR_REF:
-      {
-        int n = XmlCharRefNumber(enc, s);
-        if (n < 0)
-          return XML_ERROR_BAD_CHAR_REF;
-        if (characterDataHandler) {
-          XML_Char buf[XML_ENCODE_MAX];
-          characterDataHandler(handlerArg, buf, XmlEncode(n, (ICHAR *)buf));
-        }
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-      }
-      break;
-    case XML_TOK_XML_DECL:
-      return XML_ERROR_MISPLACED_XML_PI;
-    case XML_TOK_DATA_NEWLINE:
-      if (characterDataHandler) {
-        XML_Char c = 0xA;
-        characterDataHandler(handlerArg, &c, 1);
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      break;
-    case XML_TOK_CDATA_SECT_OPEN:
-      {
-        enum XML_Error result;
-        if (startCdataSectionHandler)
-          startCdataSectionHandler(handlerArg);
-#if 0
-        /* Suppose you doing a transformation on a document that involves
-           changing only the character data.  You set up a defaultHandler
-           and a characterDataHandler.  The defaultHandler simply copies
-           characters through.  The characterDataHandler does the
-           transformation and writes the characters out escaping them as
-           necessary.  This case will fail to work if we leave out the
-           following two lines (because & and < inside CDATA sections will
-           be incorrectly escaped).
-
-           However, now we have a start/endCdataSectionHandler, so it seems
-           easier to let the user deal with this.
-        */
-        else if (characterDataHandler)
-          characterDataHandler(handlerArg, dataBuf, 0);
-#endif
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        result = doCdataSection(parser, enc, &next, end, nextPtr, haveMore);
-        if (result != XML_ERROR_NONE)
-          return result;
-        else if (!next) {
-          processor = cdataSectionProcessor;
-          return result;
-        }
-      }
-      break;
-    case XML_TOK_TRAILING_RSQB:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      if (characterDataHandler) {
-        if (MUST_CONVERT(enc, s)) {
-          ICHAR *dataPtr = (ICHAR *)dataBuf;
-          XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd);
-          characterDataHandler(handlerArg, dataBuf,
-                               (int)(dataPtr - (ICHAR *)dataBuf));
-        }
-        else
-          characterDataHandler(handlerArg,
-                               (XML_Char *)s,
-                               (int)((XML_Char *)end - (XML_Char *)s));
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, end);
-      /* We are at the end of the final buffer, should we check for
-         XML_SUSPENDED, XML_FINISHED?
-      */
-      if (startTagLevel == 0) {
-        *eventPP = end;
-        return XML_ERROR_NO_ELEMENTS;
-      }
-      if (tagLevel != startTagLevel) {
-        *eventPP = end;
-        return XML_ERROR_ASYNC_ENTITY;
-      }
-      *nextPtr = end;
-      return XML_ERROR_NONE;
-    case XML_TOK_DATA_CHARS:
-      if (characterDataHandler) {
-        if (MUST_CONVERT(enc, s)) {
-          for (;;) {
-            ICHAR *dataPtr = (ICHAR *)dataBuf;
-            XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd);
-            *eventEndPP = s;
-            characterDataHandler(handlerArg, dataBuf,
-                                 (int)(dataPtr - (ICHAR *)dataBuf));
-            if (s == next)
-              break;
-            *eventPP = s;
-          }
-        }
-        else
-          characterDataHandler(handlerArg,
-                               (XML_Char *)s,
-                               (int)((XML_Char *)next - (XML_Char *)s));
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      break;
-    case XML_TOK_PI:
-      if (!reportProcessingInstruction(parser, enc, s, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_COMMENT:
-      if (!reportComment(parser, enc, s, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    default:
-      if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      break;
-    }
-    *eventPP = s = next;
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_FINISHED:
-      return XML_ERROR_ABORTED;
-    default: ;
-    }
-  }
-  /* not reached */
-}
-
-/* Precondition: all arguments must be non-NULL;
-   Purpose:
-   - normalize attributes
-   - check attributes for well-formedness
-   - generate namespace aware attribute names (URI, prefix)
-   - build list of attributes for startElementHandler
-   - default attributes
-   - process namespace declarations (check and report them)
-   - generate namespace aware element name (URI, prefix)
-*/
-static enum XML_Error
-storeAtts(XML_Parser parser, const ENCODING *enc,
-          const char *attStr, TAG_NAME *tagNamePtr,
-          BINDING **bindingsPtr)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  ELEMENT_TYPE *elementType;
-  int nDefaultAtts;
-  const XML_Char **appAtts;   /* the attribute list for the application */
-  int attIndex = 0;
-  int prefixLen;
-  int i;
-  int n;
-  XML_Char *uri;
-  int nPrefixes = 0;
-  BINDING *binding;
-  const XML_Char *localPart;
-
-  /* lookup the element type name */
-  elementType = (ELEMENT_TYPE *)lookup(&dtd->elementTypes, tagNamePtr->str,0);
-  if (!elementType) {
-    const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str);
-    if (!name)
-      return XML_ERROR_NO_MEMORY;
-    elementType = (ELEMENT_TYPE *)lookup(&dtd->elementTypes, name,
-                                         sizeof(ELEMENT_TYPE));
-    if (!elementType)
-      return XML_ERROR_NO_MEMORY;
-    if (ns && !setElementTypePrefix(parser, elementType))
-      return XML_ERROR_NO_MEMORY;
-  }
-  nDefaultAtts = elementType->nDefaultAtts;
-
-  /* get the attributes from the tokenizer */
-  n = XmlGetAttributes(enc, attStr, attsSize, atts);
-  if (n + nDefaultAtts > attsSize) {
-    int oldAttsSize = attsSize;
-    ATTRIBUTE *temp;
-    attsSize = n + nDefaultAtts + INIT_ATTS_SIZE;
-    temp = (ATTRIBUTE *)REALLOC((void *)atts, attsSize * sizeof(ATTRIBUTE));
-    if (temp == NULL)
-      return XML_ERROR_NO_MEMORY;
-    atts = temp;
-    if (n > oldAttsSize)
-      XmlGetAttributes(enc, attStr, n, atts);
-  }
-
-  appAtts = (const XML_Char **)atts;
-  for (i = 0; i < n; i++) {
-    /* add the name and value to the attribute list */
-    ATTRIBUTE_ID *attId = getAttributeId(parser, enc, atts[i].name,
-                                         atts[i].name
-                                         + XmlNameLength(enc, atts[i].name));
-    if (!attId)
-      return XML_ERROR_NO_MEMORY;
-    /* Detect duplicate attributes by their QNames. This does not work when
-       namespace processing is turned on and different prefixes for the same
-       namespace are used. For this case we have a check further down.
-    */
-    if ((attId->name)[-1]) {
-      if (enc == encoding)
-        eventPtr = atts[i].name;
-      return XML_ERROR_DUPLICATE_ATTRIBUTE;
-    }
-    (attId->name)[-1] = 1;
-    appAtts[attIndex++] = attId->name;
-    if (!atts[i].normalized) {
-      enum XML_Error result;
-      XML_Bool isCdata = XML_TRUE;
-
-      /* figure out whether declared as other than CDATA */
-      if (attId->maybeTokenized) {
-        int j;
-        for (j = 0; j < nDefaultAtts; j++) {
-          if (attId == elementType->defaultAtts[j].id) {
-            isCdata = elementType->defaultAtts[j].isCdata;
-            break;
-          }
-        }
-      }
-
-      /* normalize the attribute value */
-      result = storeAttributeValue(parser, enc, isCdata,
-                                   atts[i].valuePtr, atts[i].valueEnd,
-                                   &tempPool);
-      if (result)
-        return result;
-      appAtts[attIndex] = poolStart(&tempPool);
-      poolFinish(&tempPool);
-    }
-    else {
-      /* the value did not need normalizing */
-      appAtts[attIndex] = poolStoreString(&tempPool, enc, atts[i].valuePtr,
-                                          atts[i].valueEnd);
-      if (appAtts[attIndex] == 0)
-        return XML_ERROR_NO_MEMORY;
-      poolFinish(&tempPool);
-    }
-    /* handle prefixed attribute names */
-    if (attId->prefix) {
-      if (attId->xmlns) {
-        /* deal with namespace declarations here */
-        enum XML_Error result = addBinding(parser, attId->prefix, attId,
-                                           appAtts[attIndex], bindingsPtr);
-        if (result)
-          return result;
-        --attIndex;
-      }
-      else {
-        /* deal with other prefixed names later */
-        attIndex++;
-        nPrefixes++;
-        (attId->name)[-1] = 2;
-      }
-    }
-    else
-      attIndex++;
-  }
-
-  /* set-up for XML_GetSpecifiedAttributeCount and XML_GetIdAttributeIndex */
-  nSpecifiedAtts = attIndex;
-  if (elementType->idAtt && (elementType->idAtt->name)[-1]) {
-    for (i = 0; i < attIndex; i += 2)
-      if (appAtts[i] == elementType->idAtt->name) {
-        idAttIndex = i;
-        break;
-      }
-  }
-  else
-    idAttIndex = -1;
-
-  /* do attribute defaulting */
-  for (i = 0; i < nDefaultAtts; i++) {
-    const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + i;
-    if (!(da->id->name)[-1] && da->value) {
-      if (da->id->prefix) {
-        if (da->id->xmlns) {
-          enum XML_Error result = addBinding(parser, da->id->prefix, da->id,
-                                             da->value, bindingsPtr);
-          if (result)
-            return result;
-        }
-        else {
-          (da->id->name)[-1] = 2;
-          nPrefixes++;
-          appAtts[attIndex++] = da->id->name;
-          appAtts[attIndex++] = da->value;
-        }
-      }
-      else {
-        (da->id->name)[-1] = 1;
-        appAtts[attIndex++] = da->id->name;
-        appAtts[attIndex++] = da->value;
-      }
-    }
-  }
-  appAtts[attIndex] = 0;
-
-  /* expand prefixed attribute names, check for duplicates,
-     and clear flags that say whether attributes were specified */
-  i = 0;
-  if (nPrefixes) {
-    int j;  /* hash table index */
-    unsigned long version = nsAttsVersion;
-    int nsAttsSize = (int)1 << nsAttsPower;
-    /* size of hash table must be at least 2 * (# of prefixed attributes) */
-    if ((nPrefixes << 1) >> nsAttsPower) {  /* true for nsAttsPower = 0 */
-      NS_ATT *temp;
-      /* hash table size must also be a power of 2 and >= 8 */
-      while (nPrefixes >> nsAttsPower++);
-      if (nsAttsPower < 3)
-        nsAttsPower = 3;
-      nsAttsSize = (int)1 << nsAttsPower;
-      temp = (NS_ATT *)REALLOC(nsAtts, nsAttsSize * sizeof(NS_ATT));
-      if (!temp)
-        return XML_ERROR_NO_MEMORY;
-      nsAtts = temp;
-      version = 0;  /* force re-initialization of nsAtts hash table */
-    }
-    /* using a version flag saves us from initializing nsAtts every time */
-    if (!version) {  /* initialize version flags when version wraps around */
-      version = INIT_ATTS_VERSION;
-      for (j = nsAttsSize; j != 0; )
-        nsAtts[--j].version = version;
-    }
-    nsAttsVersion = --version;
-
-    /* expand prefixed names and check for duplicates */
-    for (; i < attIndex; i += 2) {
-      const XML_Char *s = appAtts[i];
-      if (s[-1] == 2) {  /* prefixed */
-        ATTRIBUTE_ID *id;
-        const BINDING *b;
-        unsigned long uriHash = 0;
-        ((XML_Char *)s)[-1] = 0;  /* clear flag */
-        id = (ATTRIBUTE_ID *)lookup(&dtd->attributeIds, s, 0);
-        if (!id)
-          return XML_ERROR_NO_MEMORY;
-        b = id->prefix->binding;
-        if (!b)
-          return XML_ERROR_UNBOUND_PREFIX;
-
-        /* as we expand the name we also calculate its hash value */
-        for (j = 0; j < b->uriLen; j++) {
-          const XML_Char c = b->uri[j];
-          if (!poolAppendChar(&tempPool, c))
-            return XML_ERROR_NO_MEMORY;
-          uriHash = CHAR_HASH(uriHash, c);
-        }
-        while (*s++ != XML_T(':'))
-          ;
-        do {  /* copies null terminator */
-          const XML_Char c = *s;
-          if (!poolAppendChar(&tempPool, *s))
-            return XML_ERROR_NO_MEMORY;
-          uriHash = CHAR_HASH(uriHash, c);
-        } while (*s++);
-
-        { /* Check hash table for duplicate of expanded name (uriName).
-             Derived from code in lookup(HASH_TABLE *table, ...).
-          */
-          unsigned char step = 0;
-          unsigned long mask = nsAttsSize - 1;
-          j = uriHash & mask;  /* index into hash table */
-          while (nsAtts[j].version == version) {
-            /* for speed we compare stored hash values first */
-            if (uriHash == nsAtts[j].hash) {
-              const XML_Char *s1 = poolStart(&tempPool);
-              const XML_Char *s2 = nsAtts[j].uriName;
-              /* s1 is null terminated, but not s2 */
-              for (; *s1 == *s2 && *s1 != 0; s1++, s2++);
-              if (*s1 == 0)
-                return XML_ERROR_DUPLICATE_ATTRIBUTE;
-            }
-            if (!step)
-              step = PROBE_STEP(uriHash, mask, nsAttsPower);
-            j < step ? (j += nsAttsSize - step) : (j -= step);
-          }
-        }
-
-        if (ns_triplets) {  /* append namespace separator and prefix */
-          tempPool.ptr[-1] = namespaceSeparator;
-          s = b->prefix->name;
-          do {
-            if (!poolAppendChar(&tempPool, *s))
-              return XML_ERROR_NO_MEMORY;
-          } while (*s++);
-        }
-
-        /* store expanded name in attribute list */
-        s = poolStart(&tempPool);
-        poolFinish(&tempPool);
-        appAtts[i] = s;
-
-        /* fill empty slot with new version, uriName and hash value */
-        nsAtts[j].version = version;
-        nsAtts[j].hash = uriHash;
-        nsAtts[j].uriName = s;
-
-        if (!--nPrefixes) {
-          i += 2;
-          break;
-        }
-      }
-      else  /* not prefixed */
-        ((XML_Char *)s)[-1] = 0;  /* clear flag */
-    }
-  }
-  /* clear flags for the remaining attributes */
-  for (; i < attIndex; i += 2)
-    ((XML_Char *)(appAtts[i]))[-1] = 0;
-  for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding)
-    binding->attId->name[-1] = 0;
-
-  if (!ns)
-    return XML_ERROR_NONE;
-
-  /* expand the element type name */
-  if (elementType->prefix) {
-    binding = elementType->prefix->binding;
-    if (!binding)
-      return XML_ERROR_UNBOUND_PREFIX;
-    localPart = tagNamePtr->str;
-    while (*localPart++ != XML_T(':'))
-      ;
-  }
-  else if (dtd->defaultPrefix.binding) {
-    binding = dtd->defaultPrefix.binding;
-    localPart = tagNamePtr->str;
-  }
-  else
-    return XML_ERROR_NONE;
-  prefixLen = 0;
-  if (ns_triplets && binding->prefix->name) {
-    for (; binding->prefix->name[prefixLen++];)
-      ;  /* prefixLen includes null terminator */
-  }
-  tagNamePtr->localPart = localPart;
-  tagNamePtr->uriLen = binding->uriLen;
-  tagNamePtr->prefix = binding->prefix->name;
-  tagNamePtr->prefixLen = prefixLen;
-  for (i = 0; localPart[i++];)
-    ;  /* i includes null terminator */
-  n = i + binding->uriLen + prefixLen;
-  if (n > binding->uriAlloc) {
-    TAG *p;
-    uri = (XML_Char *)MALLOC((n + EXPAND_SPARE) * sizeof(XML_Char));
-    if (!uri)
-      return XML_ERROR_NO_MEMORY;
-    binding->uriAlloc = n + EXPAND_SPARE;
-    memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char));
-    for (p = tagStack; p; p = p->parent)
-      if (p->name.str == binding->uri)
-        p->name.str = uri;
-    FREE(binding->uri);
-    binding->uri = uri;
-  }
-  /* if namespaceSeparator != '\0' then uri includes it already */
-  uri = binding->uri + binding->uriLen;
-  memcpy(uri, localPart, i * sizeof(XML_Char));
-  /* we always have a namespace separator between localPart and prefix */
-  if (prefixLen) {
-    uri += i - 1;
-    *uri = namespaceSeparator;  /* replace null terminator */
-    memcpy(uri + 1, binding->prefix->name, prefixLen * sizeof(XML_Char));
-  }
-  tagNamePtr->str = binding->uri;
-  return XML_ERROR_NONE;
-}
-
-/* addBinding() overwrites the value of prefix->binding without checking.
-   Therefore one must keep track of the old value outside of addBinding().
-*/
-static enum XML_Error
-addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId,
-           const XML_Char *uri, BINDING **bindingsPtr)
-{
-  static const XML_Char xmlNamespace[] = {
-    'h', 't', 't', 'p', ':', '/', '/',
-    'w', 'w', 'w', '.', 'w', '3', '.', 'o', 'r', 'g', '/',
-    'X', 'M', 'L', '/', '1', '9', '9', '8', '/',
-    'n', 'a', 'm', 'e', 's', 'p', 'a', 'c', 'e', '\0'
-  };
-  static const int xmlLen =
-    (int)sizeof(xmlNamespace)/sizeof(XML_Char) - 1;
-  static const XML_Char xmlnsNamespace[] = {
-    'h', 't', 't', 'p', ':', '/', '/',
-    'w', 'w', 'w', '.', 'w', '3', '.', 'o', 'r', 'g', '/',
-    '2', '0', '0', '0', '/', 'x', 'm', 'l', 'n', 's', '/', '\0'
-  };
-  static const int xmlnsLen =
-    (int)sizeof(xmlnsNamespace)/sizeof(XML_Char) - 1;
-
-  XML_Bool mustBeXML = XML_FALSE;
-  XML_Bool isXML = XML_TRUE;
-  XML_Bool isXMLNS = XML_TRUE;
-
-  BINDING *b;
-  int len;
-
-  /* empty URI is only valid for default namespace per XML NS 1.0 (not 1.1) */
-  if (*uri == XML_T('\0') && prefix->name)
-    return XML_ERROR_UNDECLARING_PREFIX;
-
-  if (prefix->name
-      && prefix->name[0] == XML_T('x')
-      && prefix->name[1] == XML_T('m')
-      && prefix->name[2] == XML_T('l')) {
-
-    /* Not allowed to bind xmlns */
-    if (prefix->name[3] == XML_T('n')
-        && prefix->name[4] == XML_T('s')
-        && prefix->name[5] == XML_T('\0'))
-      return XML_ERROR_RESERVED_PREFIX_XMLNS;
-
-    if (prefix->name[3] == XML_T('\0'))
-      mustBeXML = XML_TRUE;
-  }
-
-  for (len = 0; uri[len]; len++) {
-    if (isXML && (len > xmlLen || uri[len] != xmlNamespace[len]))
-      isXML = XML_FALSE;
-
-    if (!mustBeXML && isXMLNS
-        && (len > xmlnsLen || uri[len] != xmlnsNamespace[len]))
-      isXMLNS = XML_FALSE;
-  }
-  isXML = isXML && len == xmlLen;
-  isXMLNS = isXMLNS && len == xmlnsLen;
-
-  if (mustBeXML != isXML)
-    return mustBeXML ? XML_ERROR_RESERVED_PREFIX_XML
-                     : XML_ERROR_RESERVED_NAMESPACE_URI;
-
-  if (isXMLNS)
-    return XML_ERROR_RESERVED_NAMESPACE_URI;
-
-  if (namespaceSeparator)
-    len++;
-  if (freeBindingList) {
-    b = freeBindingList;
-    if (len > b->uriAlloc) {
-      XML_Char *temp = (XML_Char *)REALLOC(b->uri,
-                          sizeof(XML_Char) * (len + EXPAND_SPARE));
-      if (temp == NULL)
-        return XML_ERROR_NO_MEMORY;
-      b->uri = temp;
-      b->uriAlloc = len + EXPAND_SPARE;
-    }
-    freeBindingList = b->nextTagBinding;
-  }
-  else {
-    b = (BINDING *)MALLOC(sizeof(BINDING));
-    if (!b)
-      return XML_ERROR_NO_MEMORY;
-    b->uri = (XML_Char *)MALLOC(sizeof(XML_Char) * (len + EXPAND_SPARE));
-    if (!b->uri) {
-      FREE(b);
-      return XML_ERROR_NO_MEMORY;
-    }
-    b->uriAlloc = len + EXPAND_SPARE;
-  }
-  b->uriLen = len;
-  memcpy(b->uri, uri, len * sizeof(XML_Char));
-  if (namespaceSeparator)
-    b->uri[len - 1] = namespaceSeparator;
-  b->prefix = prefix;
-  b->attId = attId;
-  b->prevPrefixBinding = prefix->binding;
-  /* NULL binding when default namespace undeclared */
-  if (*uri == XML_T('\0') && prefix == &_dtd->defaultPrefix)
-    prefix->binding = NULL;
-  else
-    prefix->binding = b;
-  b->nextTagBinding = *bindingsPtr;
-  *bindingsPtr = b;
-  /* if attId == NULL then we are not starting a namespace scope */
-  if (attId && startNamespaceDeclHandler)
-    startNamespaceDeclHandler(handlerArg, prefix->name,
-                              prefix->binding ? uri : 0);
-  return XML_ERROR_NONE;
-}
-
-/* The idea here is to avoid using stack for each CDATA section when
-   the whole file is parsed with one call.
-*/
-static enum XML_Error PTRCALL
-cdataSectionProcessor(XML_Parser parser,
-                      const char *start,
-                      const char *end,
-                      const char **endPtr)
-{
-  enum XML_Error result = doCdataSection(parser, encoding, &start, end,
-                                         endPtr, (XML_Bool)!ps_finalBuffer);
-  if (result != XML_ERROR_NONE)
-    return result;
-  if (start) {
-    if (parentParser) {  /* we are parsing an external entity */
-      processor = externalEntityContentProcessor;
-      return externalEntityContentProcessor(parser, start, end, endPtr);
-    }
-    else {
-      processor = contentProcessor;
-      return contentProcessor(parser, start, end, endPtr);
-    }
-  }
-  return result;
-}
-
-/* startPtr gets set to non-null if the section is closed, and to null if
-   the section is not yet closed.
-*/
-static enum XML_Error
-doCdataSection(XML_Parser parser,
-               const ENCODING *enc,
-               const char **startPtr,
-               const char *end,
-               const char **nextPtr,
-               XML_Bool haveMore)
-{
-  const char *s = *startPtr;
-  const char **eventPP;
-  const char **eventEndPP;
-  if (enc == encoding) {
-    eventPP = &eventPtr;
-    *eventPP = s;
-    eventEndPP = &eventEndPtr;
-  }
-  else {
-    eventPP = &(openInternalEntities->internalEventPtr);
-    eventEndPP = &(openInternalEntities->internalEventEndPtr);
-  }
-  *eventPP = s;
-  *startPtr = NULL;
-
-  for (;;) {
-    const char *next;
-    int tok = XmlCdataSectionTok(enc, s, end, &next);
-    *eventEndPP = next;
-    switch (tok) {
-    case XML_TOK_CDATA_SECT_CLOSE:
-      if (endCdataSectionHandler)
-        endCdataSectionHandler(handlerArg);
-#if 0
-      /* see comment under XML_TOK_CDATA_SECT_OPEN */
-      else if (characterDataHandler)
-        characterDataHandler(handlerArg, dataBuf, 0);
-#endif
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      *startPtr = next;
-      *nextPtr = next;
-      if (ps_parsing == XML_FINISHED)
-        return XML_ERROR_ABORTED;
-      else
-        return XML_ERROR_NONE;
-    case XML_TOK_DATA_NEWLINE:
-      if (characterDataHandler) {
-        XML_Char c = 0xA;
-        characterDataHandler(handlerArg, &c, 1);
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      break;
-    case XML_TOK_DATA_CHARS:
-      if (characterDataHandler) {
-        if (MUST_CONVERT(enc, s)) {
-          for (;;) {
-            ICHAR *dataPtr = (ICHAR *)dataBuf;
-            XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd);
-            *eventEndPP = next;
-            characterDataHandler(handlerArg, dataBuf,
-                                 (int)(dataPtr - (ICHAR *)dataBuf));
-            if (s == next)
-              break;
-            *eventPP = s;
-          }
-        }
-        else
-          characterDataHandler(handlerArg,
-                               (XML_Char *)s,
-                               (int)((XML_Char *)next - (XML_Char *)s));
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      break;
-    case XML_TOK_INVALID:
-      *eventPP = next;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL_CHAR:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_PARTIAL_CHAR;
-    case XML_TOK_PARTIAL:
-    case XML_TOK_NONE:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_UNCLOSED_CDATA_SECTION;
-    default:
-      *eventPP = next;
-      return XML_ERROR_UNEXPECTED_STATE;
-    }
-
-    *eventPP = s = next;
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_FINISHED:
-      return XML_ERROR_ABORTED;
-    default: ;
-    }
-  }
-  /* not reached */
-}
-
-#ifdef XML_DTD
-
-/* The idea here is to avoid using stack for each IGNORE section when
-   the whole file is parsed with one call.
-*/
-static enum XML_Error PTRCALL
-ignoreSectionProcessor(XML_Parser parser,
-                       const char *start,
-                       const char *end,
-                       const char **endPtr)
-{
-  enum XML_Error result = doIgnoreSection(parser, encoding, &start, end,
-                                          endPtr, (XML_Bool)!ps_finalBuffer);
-  if (result != XML_ERROR_NONE)
-    return result;
-  if (start) {
-    processor = prologProcessor;
-    return prologProcessor(parser, start, end, endPtr);
-  }
-  return result;
-}
-
-/* startPtr gets set to non-null is the section is closed, and to null
-   if the section is not yet closed.
-*/
-static enum XML_Error
-doIgnoreSection(XML_Parser parser,
-                const ENCODING *enc,
-                const char **startPtr,
-                const char *end,
-                const char **nextPtr,
-                XML_Bool haveMore)
-{
-  const char *next;
-  int tok;
-  const char *s = *startPtr;
-  const char **eventPP;
-  const char **eventEndPP;
-  if (enc == encoding) {
-    eventPP = &eventPtr;
-    *eventPP = s;
-    eventEndPP = &eventEndPtr;
-  }
-  else {
-    eventPP = &(openInternalEntities->internalEventPtr);
-    eventEndPP = &(openInternalEntities->internalEventEndPtr);
-  }
-  *eventPP = s;
-  *startPtr = NULL;
-  tok = XmlIgnoreSectionTok(enc, s, end, &next);
-  *eventEndPP = next;
-  switch (tok) {
-  case XML_TOK_IGNORE_SECT:
-    if (defaultHandler)
-      reportDefault(parser, enc, s, next);
-    *startPtr = next;
-    *nextPtr = next;
-    if (ps_parsing == XML_FINISHED)
-      return XML_ERROR_ABORTED;
-    else
-      return XML_ERROR_NONE;
-  case XML_TOK_INVALID:
-    *eventPP = next;
-    return XML_ERROR_INVALID_TOKEN;
-  case XML_TOK_PARTIAL_CHAR:
-    if (haveMore) {
-      *nextPtr = s;
-      return XML_ERROR_NONE;
-    }
-    return XML_ERROR_PARTIAL_CHAR;
-  case XML_TOK_PARTIAL:
-  case XML_TOK_NONE:
-    if (haveMore) {
-      *nextPtr = s;
-      return XML_ERROR_NONE;
-    }
-    return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */
-  default:
-    *eventPP = next;
-    return XML_ERROR_UNEXPECTED_STATE;
-  }
-  /* not reached */
-}
-
-#endif /* XML_DTD */
-
-static enum XML_Error
-initializeEncoding(XML_Parser parser)
-{
-  const char *s;
-#ifdef XML_UNICODE
-  char encodingBuf[128];
-  if (!protocolEncodingName)
-    s = NULL;
-  else {
-    int i;
-    for (i = 0; protocolEncodingName[i]; i++) {
-      if (i == sizeof(encodingBuf) - 1
-          || (protocolEncodingName[i] & ~0x7f) != 0) {
-        encodingBuf[0] = '\0';
-        break;
-      }
-      encodingBuf[i] = (char)protocolEncodingName[i];
-    }
-    encodingBuf[i] = '\0';
-    s = encodingBuf;
-  }
-#else
-  s = protocolEncodingName;
-#endif
-  if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s))
-    return XML_ERROR_NONE;
-  return handleUnknownEncoding(parser, protocolEncodingName);
-}
-
-static enum XML_Error
-processXmlDecl(XML_Parser parser, int isGeneralTextEntity,
-               const char *s, const char *next)
-{
-  const char *encodingName = NULL;
-  const XML_Char *storedEncName = NULL;
-  const ENCODING *newEncoding = NULL;
-  const char *version = NULL;
-  const char *versionend;
-  const XML_Char *storedversion = NULL;
-  int standalone = -1;
-  if (!(ns
-        ? XmlParseXmlDeclNS
-        : XmlParseXmlDecl)(isGeneralTextEntity,
-                           encoding,
-                           s,
-                           next,
-                           &eventPtr,
-                           &version,
-                           &versionend,
-                           &encodingName,
-                           &newEncoding,
-                           &standalone)) {
-    if (isGeneralTextEntity)
-      return XML_ERROR_TEXT_DECL;
-    else
-      return XML_ERROR_XML_DECL;
-  }
-  if (!isGeneralTextEntity && standalone == 1) {
-    _dtd->standalone = XML_TRUE;
-#ifdef XML_DTD
-    if (paramEntityParsing == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE)
-      paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;
-#endif /* XML_DTD */
-  }
-  if (xmlDeclHandler) {
-    if (encodingName != NULL) {
-      storedEncName = poolStoreString(&temp2Pool,
-                                      encoding,
-                                      encodingName,
-                                      encodingName
-                                      + XmlNameLength(encoding, encodingName));
-      if (!storedEncName)
-              return XML_ERROR_NO_MEMORY;
-      poolFinish(&temp2Pool);
-    }
-    if (version) {
-      storedversion = poolStoreString(&temp2Pool,
-                                      encoding,
-                                      version,
-                                      versionend - encoding->minBytesPerChar);
-      if (!storedversion)
-        return XML_ERROR_NO_MEMORY;
-    }
-    xmlDeclHandler(handlerArg, storedversion, storedEncName, standalone);
-  }
-  else if (defaultHandler)
-    reportDefault(parser, encoding, s, next);
-  if (protocolEncodingName == NULL) {
-    if (newEncoding) {
-      if (newEncoding->minBytesPerChar != encoding->minBytesPerChar) {
-        eventPtr = encodingName;
-        return XML_ERROR_INCORRECT_ENCODING;
-      }
-      encoding = newEncoding;
-    }
-    else if (encodingName) {
-      enum XML_Error result;
-      if (!storedEncName) {
-        storedEncName = poolStoreString(
-          &temp2Pool, encoding, encodingName,
-          encodingName + XmlNameLength(encoding, encodingName));
-        if (!storedEncName)
-          return XML_ERROR_NO_MEMORY;
-      }
-      result = handleUnknownEncoding(parser, storedEncName);
-      poolClear(&temp2Pool);
-      if (result == XML_ERROR_UNKNOWN_ENCODING)
-        eventPtr = encodingName;
-      return result;
-    }
-  }
-
-  if (storedEncName || storedversion)
-    poolClear(&temp2Pool);
-
-  return XML_ERROR_NONE;
-}
-
-static enum XML_Error
-handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName)
-{
-  if (unknownEncodingHandler) {
-    XML_Encoding info;
-    int i;
-    for (i = 0; i < 256; i++)
-      info.map[i] = -1;
-    info.convert = NULL;
-    info.data = NULL;
-    info.release = NULL;
-    if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName,
-                               &info)) {
-      ENCODING *enc;
-      unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding());
-      if (!unknownEncodingMem) {
-        if (info.release)
-          info.release(info.data);
-        return XML_ERROR_NO_MEMORY;
-      }
-      enc = (ns
-             ? XmlInitUnknownEncodingNS
-             : XmlInitUnknownEncoding)(unknownEncodingMem,
-                                       info.map,
-                                       info.convert,
-                                       info.data);
-      if (enc) {
-        unknownEncodingData = info.data;
-        unknownEncodingRelease = info.release;
-        encoding = enc;
-        return XML_ERROR_NONE;
-      }
-    }
-    if (info.release != NULL)
-      info.release(info.data);
-  }
-  return XML_ERROR_UNKNOWN_ENCODING;
-}
-
-static enum XML_Error PTRCALL
-prologInitProcessor(XML_Parser parser,
-                    const char *s,
-                    const char *end,
-                    const char **nextPtr)
-{
-  enum XML_Error result = initializeEncoding(parser);
-  if (result != XML_ERROR_NONE)
-    return result;
-  processor = prologProcessor;
-  return prologProcessor(parser, s, end, nextPtr);
-}
-
-#ifdef XML_DTD
-
-static enum XML_Error PTRCALL
-externalParEntInitProcessor(XML_Parser parser,
-                            const char *s,
-                            const char *end,
-                            const char **nextPtr)
-{
-  enum XML_Error result = initializeEncoding(parser);
-  if (result != XML_ERROR_NONE)
-    return result;
-
-  /* we know now that XML_Parse(Buffer) has been called,
-     so we consider the external parameter entity read */
-  _dtd->paramEntityRead = XML_TRUE;
-
-  if (prologState.inEntityValue) {
-    processor = entityValueInitProcessor;
-    return entityValueInitProcessor(parser, s, end, nextPtr);
-  }
-  else {
-    processor = externalParEntProcessor;
-    return externalParEntProcessor(parser, s, end, nextPtr);
-  }
-}
-
-static enum XML_Error PTRCALL
-entityValueInitProcessor(XML_Parser parser,
-                         const char *s,
-                         const char *end,
-                         const char **nextPtr)
-{
-  int tok;
-  const char *start = s;
-  const char *next = start;
-  eventPtr = start;
-
-  for (;;) {
-    tok = XmlPrologTok(encoding, start, end, &next);
-    eventEndPtr = next;
-    if (tok <= 0) {
-      if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      switch (tok) {
-      case XML_TOK_INVALID:
-        return XML_ERROR_INVALID_TOKEN;
-      case XML_TOK_PARTIAL:
-        return XML_ERROR_UNCLOSED_TOKEN;
-      case XML_TOK_PARTIAL_CHAR:
-        return XML_ERROR_PARTIAL_CHAR;
-      case XML_TOK_NONE:   /* start == end */
-      default:
-        break;
-      }
-      /* found end of entity value - can store it now */
-      return storeEntityValue(parser, encoding, s, end);
-    }
-    else if (tok == XML_TOK_XML_DECL) {
-      enum XML_Error result;
-      result = processXmlDecl(parser, 0, start, next);
-      if (result != XML_ERROR_NONE)
-        return result;
-      switch (ps_parsing) {
-      case XML_SUSPENDED:
-        *nextPtr = next;
-        return XML_ERROR_NONE;
-      case XML_FINISHED:
-        return XML_ERROR_ABORTED;
-      default:
-        *nextPtr = next;
-      }
-      /* stop scanning for text declaration - we found one */
-      processor = entityValueProcessor;
-      return entityValueProcessor(parser, next, end, nextPtr);
-    }
-    /* If we are at the end of the buffer, this would cause XmlPrologTok to
-       return XML_TOK_NONE on the next call, which would then cause the
-       function to exit with *nextPtr set to s - that is what we want for other
-       tokens, but not for the BOM - we would rather like to skip it;
-       then, when this routine is entered the next time, XmlPrologTok will
-       return XML_TOK_INVALID, since the BOM is still in the buffer
-    */
-    else if (tok == XML_TOK_BOM && next == end && !ps_finalBuffer) {
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    }
-    start = next;
-    eventPtr = start;
-  }
-}
-
-static enum XML_Error PTRCALL
-externalParEntProcessor(XML_Parser parser,
-                        const char *s,
-                        const char *end,
-                        const char **nextPtr)
-{
-  const char *next = s;
-  int tok;
-
-  tok = XmlPrologTok(encoding, s, end, &next);
-  if (tok <= 0) {
-    if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
-      *nextPtr = s;
-      return XML_ERROR_NONE;
-    }
-    switch (tok) {
-    case XML_TOK_INVALID:
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL:
-      return XML_ERROR_UNCLOSED_TOKEN;
-    case XML_TOK_PARTIAL_CHAR:
-      return XML_ERROR_PARTIAL_CHAR;
-    case XML_TOK_NONE:   /* start == end */
-    default:
-      break;
-    }
-  }
-  /* This would cause the next stage, i.e. doProlog to be passed XML_TOK_BOM.
-     However, when parsing an external subset, doProlog will not accept a BOM
-     as valid, and report a syntax error, so we have to skip the BOM
-  */
-  else if (tok == XML_TOK_BOM) {
-    s = next;
-    tok = XmlPrologTok(encoding, s, end, &next);
-  }
-
-  processor = prologProcessor;
-  return doProlog(parser, encoding, s, end, tok, next,
-                  nextPtr, (XML_Bool)!ps_finalBuffer);
-}
-
-static enum XML_Error PTRCALL
-entityValueProcessor(XML_Parser parser,
-                     const char *s,
-                     const char *end,
-                     const char **nextPtr)
-{
-  const char *start = s;
-  const char *next = s;
-  const ENCODING *enc = encoding;
-  int tok;
-
-  for (;;) {
-    tok = XmlPrologTok(enc, start, end, &next);
-    if (tok <= 0) {
-      if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      switch (tok) {
-      case XML_TOK_INVALID:
-        return XML_ERROR_INVALID_TOKEN;
-      case XML_TOK_PARTIAL:
-        return XML_ERROR_UNCLOSED_TOKEN;
-      case XML_TOK_PARTIAL_CHAR:
-        return XML_ERROR_PARTIAL_CHAR;
-      case XML_TOK_NONE:   /* start == end */
-      default:
-        break;
-      }
-      /* found end of entity value - can store it now */
-      return storeEntityValue(parser, enc, s, end);
-    }
-    start = next;
-  }
-}
-
-#endif /* XML_DTD */
-
-static enum XML_Error PTRCALL
-prologProcessor(XML_Parser parser,
-                const char *s,
-                const char *end,
-                const char **nextPtr)
-{
-  const char *next = s;
-  int tok = XmlPrologTok(encoding, s, end, &next);
-  return doProlog(parser, encoding, s, end, tok, next,
-                  nextPtr, (XML_Bool)!ps_finalBuffer);
-}
-
-static enum XML_Error
-doProlog(XML_Parser parser,
-         const ENCODING *enc,
-         const char *s,
-         const char *end,
-         int tok,
-         const char *next,
-         const char **nextPtr,
-         XML_Bool haveMore)
-{
-#ifdef XML_DTD
-  static const XML_Char externalSubsetName[] = { '#' , '\0' };
-#endif /* XML_DTD */
-  static const XML_Char atypeCDATA[] = { 'C', 'D', 'A', 'T', 'A', '\0' };
-  static const XML_Char atypeID[] = { 'I', 'D', '\0' };
-  static const XML_Char atypeIDREF[] = { 'I', 'D', 'R', 'E', 'F', '\0' };
-  static const XML_Char atypeIDREFS[] = { 'I', 'D', 'R', 'E', 'F', 'S', '\0' };
-  static const XML_Char atypeENTITY[] = { 'E', 'N', 'T', 'I', 'T', 'Y', '\0' };
-  static const XML_Char atypeENTITIES[] =
-      { 'E', 'N', 'T', 'I', 'T', 'I', 'E', 'S', '\0' };
-  static const XML_Char atypeNMTOKEN[] = {
-      'N', 'M', 'T', 'O', 'K', 'E', 'N', '\0' };
-  static const XML_Char atypeNMTOKENS[] = {
-      'N', 'M', 'T', 'O', 'K', 'E', 'N', 'S', '\0' };
-  static const XML_Char notationPrefix[] = {
-      'N', 'O', 'T', 'A', 'T', 'I', 'O', 'N', '(', '\0' };
-  static const XML_Char enumValueSep[] = { '|', '\0' };
-  static const XML_Char enumValueStart[] = { '(', '\0' };
-
-  /* save one level of indirection */
-  DTD * const dtd = _dtd;
-
-  const char **eventPP;
-  const char **eventEndPP;
-  enum XML_Content_Quant quant;
-
-  if (enc == encoding) {
-    eventPP = &eventPtr;
-    eventEndPP = &eventEndPtr;
-  }
-  else {
-    eventPP = &(openInternalEntities->internalEventPtr);
-    eventEndPP = &(openInternalEntities->internalEventEndPtr);
-  }
-
-  for (;;) {
-    int role;
-    XML_Bool handleDefault = XML_TRUE;
-    *eventPP = s;
-    *eventEndPP = next;
-    if (tok <= 0) {
-      if (haveMore && tok != XML_TOK_INVALID) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      switch (tok) {
-      case XML_TOK_INVALID:
-        *eventPP = next;
-        return XML_ERROR_INVALID_TOKEN;
-      case XML_TOK_PARTIAL:
-        return XML_ERROR_UNCLOSED_TOKEN;
-      case XML_TOK_PARTIAL_CHAR:
-        return XML_ERROR_PARTIAL_CHAR;
-      case -XML_TOK_PROLOG_S:
-        tok = -tok;
-        break;
-      case XML_TOK_NONE:
-#ifdef XML_DTD
-        /* for internal PE NOT referenced between declarations */
-        if (enc != encoding && !openInternalEntities->betweenDecl) {
-          *nextPtr = s;
-          return XML_ERROR_NONE;
-        }
-        /* WFC: PE Between Declarations - must check that PE contains
-           complete markup, not only for external PEs, but also for
-           internal PEs if the reference occurs between declarations.
-        */
-        if (isParamEntity || enc != encoding) {
-          if (XmlTokenRole(&prologState, XML_TOK_NONE, end, end, enc)
-              == XML_ROLE_ERROR)
-            return XML_ERROR_INCOMPLETE_PE;
-          *nextPtr = s;
-          return XML_ERROR_NONE;
-        }
-#endif /* XML_DTD */
-        return XML_ERROR_NO_ELEMENTS;
-      default:
-        tok = -tok;
-        next = end;
-        break;
-      }
-    }
-    role = XmlTokenRole(&prologState, tok, s, next, enc);
-    switch (role) {
-    case XML_ROLE_XML_DECL:
-      {
-        enum XML_Error result = processXmlDecl(parser, 0, s, next);
-        if (result != XML_ERROR_NONE)
-          return result;
-        enc = encoding;
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_DOCTYPE_NAME:
-      if (startDoctypeDeclHandler) {
-        doctypeName = poolStoreString(&tempPool, enc, s, next);
-        if (!doctypeName)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&tempPool);
-        doctypePubid = NULL;
-        handleDefault = XML_FALSE;
-      }
-      doctypeSysid = NULL; /* always initialize to NULL */
-      break;
-    case XML_ROLE_DOCTYPE_INTERNAL_SUBSET:
-      if (startDoctypeDeclHandler) {
-        startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid,
-                                doctypePubid, 1);
-        doctypeName = NULL;
-        poolClear(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-      break;
-#ifdef XML_DTD
-    case XML_ROLE_TEXT_DECL:
-      {
-        enum XML_Error result = processXmlDecl(parser, 1, s, next);
-        if (result != XML_ERROR_NONE)
-          return result;
-        enc = encoding;
-        handleDefault = XML_FALSE;
-      }
-      break;
-#endif /* XML_DTD */
-    case XML_ROLE_DOCTYPE_PUBLIC_ID:
-#ifdef XML_DTD
-      useForeignDTD = XML_FALSE;
-      declEntity = (ENTITY *)lookup(&dtd->paramEntities,
-                                    externalSubsetName,
-                                    sizeof(ENTITY));
-      if (!declEntity)
-        return XML_ERROR_NO_MEMORY;
-#endif /* XML_DTD */
-      dtd->hasParamEntityRefs = XML_TRUE;
-      if (startDoctypeDeclHandler) {
-        if (!XmlIsPublicId(enc, s, next, eventPP))
-          return XML_ERROR_PUBLICID;
-        doctypePubid = poolStoreString(&tempPool, enc,
-                                       s + enc->minBytesPerChar,
-                                       next - enc->minBytesPerChar);
-        if (!doctypePubid)
-          return XML_ERROR_NO_MEMORY;
-        normalizePublicId((XML_Char *)doctypePubid);
-        poolFinish(&tempPool);
-        handleDefault = XML_FALSE;
-        goto alreadyChecked;
-      }
-      /* fall through */
-    case XML_ROLE_ENTITY_PUBLIC_ID:
-      if (!XmlIsPublicId(enc, s, next, eventPP))
-        return XML_ERROR_PUBLICID;
-    alreadyChecked:
-      if (dtd->keepProcessing && declEntity) {
-        XML_Char *tem = poolStoreString(&dtd->pool,
-                                        enc,
-                                        s + enc->minBytesPerChar,
-                                        next - enc->minBytesPerChar);
-        if (!tem)
-          return XML_ERROR_NO_MEMORY;
-        normalizePublicId(tem);
-        declEntity->publicId = tem;
-        poolFinish(&dtd->pool);
-        if (entityDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_DOCTYPE_CLOSE:
-      if (doctypeName) {
-        startDoctypeDeclHandler(handlerArg, doctypeName,
-                                doctypeSysid, doctypePubid, 0);
-        poolClear(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-      /* doctypeSysid will be non-NULL in the case of a previous
-         XML_ROLE_DOCTYPE_SYSTEM_ID, even if startDoctypeDeclHandler
-         was not set, indicating an external subset
-      */
-#ifdef XML_DTD
-      if (doctypeSysid || useForeignDTD) {
-        XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs;
-        dtd->hasParamEntityRefs = XML_TRUE;
-        if (paramEntityParsing && externalEntityRefHandler) {
-          ENTITY *entity = (ENTITY *)lookup(&dtd->paramEntities,
-                                            externalSubsetName,
-                                            sizeof(ENTITY));
-          if (!entity)
-            return XML_ERROR_NO_MEMORY;
-          if (useForeignDTD)
-            entity->base = curBase;
-          dtd->paramEntityRead = XML_FALSE;
-          if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                        0,
-                                        entity->base,
-                                        entity->systemId,
-                                        entity->publicId))
-            return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-          if (dtd->paramEntityRead) {
-            if (!dtd->standalone &&
-                notStandaloneHandler &&
-                !notStandaloneHandler(handlerArg))
-              return XML_ERROR_NOT_STANDALONE;
-          }
-          /* if we didn't read the foreign DTD then this means that there
-             is no external subset and we must reset dtd->hasParamEntityRefs
-          */
-          else if (!doctypeSysid)
-            dtd->hasParamEntityRefs = hadParamEntityRefs;
-          /* end of DTD - no need to update dtd->keepProcessing */
-        }
-        useForeignDTD = XML_FALSE;
-      }
-#endif /* XML_DTD */
-      if (endDoctypeDeclHandler) {
-        endDoctypeDeclHandler(handlerArg);
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_INSTANCE_START:
-#ifdef XML_DTD
-      /* if there is no DOCTYPE declaration then now is the
-         last chance to read the foreign DTD
-      */
-      if (useForeignDTD) {
-        XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs;
-        dtd->hasParamEntityRefs = XML_TRUE;
-        if (paramEntityParsing && externalEntityRefHandler) {
-          ENTITY *entity = (ENTITY *)lookup(&dtd->paramEntities,
-                                            externalSubsetName,
-                                            sizeof(ENTITY));
-          if (!entity)
-            return XML_ERROR_NO_MEMORY;
-          entity->base = curBase;
-          dtd->paramEntityRead = XML_FALSE;
-          if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                        0,
-                                        entity->base,
-                                        entity->systemId,
-                                        entity->publicId))
-            return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-          if (dtd->paramEntityRead) {
-            if (!dtd->standalone &&
-                notStandaloneHandler &&
-                !notStandaloneHandler(handlerArg))
-              return XML_ERROR_NOT_STANDALONE;
-          }
-          /* if we didn't read the foreign DTD then this means that there
-             is no external subset and we must reset dtd->hasParamEntityRefs
-          */
-          else
-            dtd->hasParamEntityRefs = hadParamEntityRefs;
-          /* end of DTD - no need to update dtd->keepProcessing */
-        }
-      }
-#endif /* XML_DTD */
-      processor = contentProcessor;
-      return contentProcessor(parser, s, end, nextPtr);
-    case XML_ROLE_ATTLIST_ELEMENT_NAME:
-      declElementType = getElementType(parser, enc, s, next);
-      if (!declElementType)
-        return XML_ERROR_NO_MEMORY;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_NAME:
-      declAttributeId = getAttributeId(parser, enc, s, next);
-      if (!declAttributeId)
-        return XML_ERROR_NO_MEMORY;
-      declAttributeIsCdata = XML_FALSE;
-      declAttributeType = NULL;
-      declAttributeIsId = XML_FALSE;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_CDATA:
-      declAttributeIsCdata = XML_TRUE;
-      declAttributeType = atypeCDATA;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_ID:
-      declAttributeIsId = XML_TRUE;
-      declAttributeType = atypeID;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_IDREF:
-      declAttributeType = atypeIDREF;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_IDREFS:
-      declAttributeType = atypeIDREFS;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_ENTITY:
-      declAttributeType = atypeENTITY;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES:
-      declAttributeType = atypeENTITIES;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN:
-      declAttributeType = atypeNMTOKEN;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS:
-      declAttributeType = atypeNMTOKENS;
-    checkAttListDeclHandler:
-      if (dtd->keepProcessing && attlistDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_ATTRIBUTE_ENUM_VALUE:
-    case XML_ROLE_ATTRIBUTE_NOTATION_VALUE:
-      if (dtd->keepProcessing && attlistDeclHandler) {
-        const XML_Char *prefix;
-        if (declAttributeType) {
-          prefix = enumValueSep;
-        }
-        else {
-          prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE
-                    ? notationPrefix
-                    : enumValueStart);
-        }
-        if (!poolAppendString(&tempPool, prefix))
-          return XML_ERROR_NO_MEMORY;
-        if (!poolAppend(&tempPool, enc, s, next))
-          return XML_ERROR_NO_MEMORY;
-        declAttributeType = tempPool.start;
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE:
-    case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE:
-      if (dtd->keepProcessing) {
-        if (!defineAttribute(declElementType, declAttributeId,
-                             declAttributeIsCdata, declAttributeIsId,
-                             0, parser))
-          return XML_ERROR_NO_MEMORY;
-        if (attlistDeclHandler && declAttributeType) {
-          if (*declAttributeType == XML_T('(')
-              || (*declAttributeType == XML_T('N')
-                  && declAttributeType[1] == XML_T('O'))) {
-            /* Enumerated or Notation type */
-            if (!poolAppendChar(&tempPool, XML_T(')'))
-                || !poolAppendChar(&tempPool, XML_T('\0')))
-              return XML_ERROR_NO_MEMORY;
-            declAttributeType = tempPool.start;
-            poolFinish(&tempPool);
-          }
-          *eventEndPP = s;
-          attlistDeclHandler(handlerArg, declElementType->name,
-                             declAttributeId->name, declAttributeType,
-                             0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE);
-          poolClear(&tempPool);
-          handleDefault = XML_FALSE;
-        }
-      }
-      break;
-    case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE:
-    case XML_ROLE_FIXED_ATTRIBUTE_VALUE:
-      if (dtd->keepProcessing) {
-        const XML_Char *attVal;
-        enum XML_Error result =
-          storeAttributeValue(parser, enc, declAttributeIsCdata,
-                              s + enc->minBytesPerChar,
-                              next - enc->minBytesPerChar,
-                              &dtd->pool);
-        if (result)
-          return result;
-        attVal = poolStart(&dtd->pool);
-        poolFinish(&dtd->pool);
-        /* ID attributes aren't allowed to have a default */
-        if (!defineAttribute(declElementType, declAttributeId,
-                             declAttributeIsCdata, XML_FALSE, attVal, parser))
-          return XML_ERROR_NO_MEMORY;
-        if (attlistDeclHandler && declAttributeType) {
-          if (*declAttributeType == XML_T('(')
-              || (*declAttributeType == XML_T('N')
-                  && declAttributeType[1] == XML_T('O'))) {
-            /* Enumerated or Notation type */
-            if (!poolAppendChar(&tempPool, XML_T(')'))
-                || !poolAppendChar(&tempPool, XML_T('\0')))
-              return XML_ERROR_NO_MEMORY;
-            declAttributeType = tempPool.start;
-            poolFinish(&tempPool);
-          }
-          *eventEndPP = s;
-          attlistDeclHandler(handlerArg, declElementType->name,
-                             declAttributeId->name, declAttributeType,
-                             attVal,
-                             role == XML_ROLE_FIXED_ATTRIBUTE_VALUE);
-          poolClear(&tempPool);
-          handleDefault = XML_FALSE;
-        }
-      }
-      break;
-    case XML_ROLE_ENTITY_VALUE:
-      if (dtd->keepProcessing) {
-        enum XML_Error result = storeEntityValue(parser, enc,
-                                            s + enc->minBytesPerChar,
-                                            next - enc->minBytesPerChar);
-        if (declEntity) {
-          declEntity->textPtr = poolStart(&dtd->entityValuePool);
-          declEntity->textLen = (int)(poolLength(&dtd->entityValuePool));
-          poolFinish(&dtd->entityValuePool);
-          if (entityDeclHandler) {
-            *eventEndPP = s;
-            entityDeclHandler(handlerArg,
-                              declEntity->name,
-                              declEntity->is_param,
-                              declEntity->textPtr,
-                              declEntity->textLen,
-                              curBase, 0, 0, 0);
-            handleDefault = XML_FALSE;
-          }
-        }
-        else
-          poolDiscard(&dtd->entityValuePool);
-        if (result != XML_ERROR_NONE)
-          return result;
-      }
-      break;
-    case XML_ROLE_DOCTYPE_SYSTEM_ID:
-#ifdef XML_DTD
-      useForeignDTD = XML_FALSE;
-#endif /* XML_DTD */
-      dtd->hasParamEntityRefs = XML_TRUE;
-      if (startDoctypeDeclHandler) {
-        doctypeSysid = poolStoreString(&tempPool, enc,
-                                       s + enc->minBytesPerChar,
-                                       next - enc->minBytesPerChar);
-        if (doctypeSysid == NULL)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-#ifdef XML_DTD
-      else
-        /* use externalSubsetName to make doctypeSysid non-NULL
-           for the case where no startDoctypeDeclHandler is set */
-        doctypeSysid = externalSubsetName;
-#endif /* XML_DTD */
-      if (!dtd->standalone
-#ifdef XML_DTD
-          && !paramEntityParsing
-#endif /* XML_DTD */
-          && notStandaloneHandler
-          && !notStandaloneHandler(handlerArg))
-        return XML_ERROR_NOT_STANDALONE;
-#ifndef XML_DTD
-      break;
-#else /* XML_DTD */
-      if (!declEntity) {
-        declEntity = (ENTITY *)lookup(&dtd->paramEntities,
-                                      externalSubsetName,
-                                      sizeof(ENTITY));
-        if (!declEntity)
-          return XML_ERROR_NO_MEMORY;
-        declEntity->publicId = NULL;
-      }
-      /* fall through */
-#endif /* XML_DTD */
-    case XML_ROLE_ENTITY_SYSTEM_ID:
-      if (dtd->keepProcessing && declEntity) {
-        declEntity->systemId = poolStoreString(&dtd->pool, enc,
-                                               s + enc->minBytesPerChar,
-                                               next - enc->minBytesPerChar);
-        if (!declEntity->systemId)
-          return XML_ERROR_NO_MEMORY;
-        declEntity->base = curBase;
-        poolFinish(&dtd->pool);
-        if (entityDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_ENTITY_COMPLETE:
-      if (dtd->keepProcessing && declEntity && entityDeclHandler) {
-        *eventEndPP = s;
-        entityDeclHandler(handlerArg,
-                          declEntity->name,
-                          declEntity->is_param,
-                          0,0,
-                          declEntity->base,
-                          declEntity->systemId,
-                          declEntity->publicId,
-                          0);
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_ENTITY_NOTATION_NAME:
-      if (dtd->keepProcessing && declEntity) {
-        declEntity->notation = poolStoreString(&dtd->pool, enc, s, next);
-        if (!declEntity->notation)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&dtd->pool);
-        if (unparsedEntityDeclHandler) {
-          *eventEndPP = s;
-          unparsedEntityDeclHandler(handlerArg,
-                                    declEntity->name,
-                                    declEntity->base,
-                                    declEntity->systemId,
-                                    declEntity->publicId,
-                                    declEntity->notation);
-          handleDefault = XML_FALSE;
-        }
-        else if (entityDeclHandler) {
-          *eventEndPP = s;
-          entityDeclHandler(handlerArg,
-                            declEntity->name,
-                            0,0,0,
-                            declEntity->base,
-                            declEntity->systemId,
-                            declEntity->publicId,
-                            declEntity->notation);
-          handleDefault = XML_FALSE;
-        }
-      }
-      break;
-    case XML_ROLE_GENERAL_ENTITY_NAME:
-      {
-        if (XmlPredefinedEntityName(enc, s, next)) {
-          declEntity = NULL;
-          break;
-        }
-        if (dtd->keepProcessing) {
-          const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next);
-          if (!name)
-            return XML_ERROR_NO_MEMORY;
-          declEntity = (ENTITY *)lookup(&dtd->generalEntities, name,
-                                        sizeof(ENTITY));
-          if (!declEntity)
-            return XML_ERROR_NO_MEMORY;
-          if (declEntity->name != name) {
-            poolDiscard(&dtd->pool);
-            declEntity = NULL;
-          }
-          else {
-            poolFinish(&dtd->pool);
-            declEntity->publicId = NULL;
-            declEntity->is_param = XML_FALSE;
-            /* if we have a parent parser or are reading an internal parameter
-               entity, then the entity declaration is not considered "internal"
-            */
-            declEntity->is_internal = !(parentParser || openInternalEntities);
-            if (entityDeclHandler)
-              handleDefault = XML_FALSE;
-          }
-        }
-        else {
-          poolDiscard(&dtd->pool);
-          declEntity = NULL;
-        }
-      }
-      break;
-    case XML_ROLE_PARAM_ENTITY_NAME:
-#ifdef XML_DTD
-      if (dtd->keepProcessing) {
-        const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next);
-        if (!name)
-          return XML_ERROR_NO_MEMORY;
-        declEntity = (ENTITY *)lookup(&dtd->paramEntities,
-                                           name, sizeof(ENTITY));
-        if (!declEntity)
-          return XML_ERROR_NO_MEMORY;
-        if (declEntity->name != name) {
-          poolDiscard(&dtd->pool);
-          declEntity = NULL;
-        }
-        else {
-          poolFinish(&dtd->pool);
-          declEntity->publicId = NULL;
-          declEntity->is_param = XML_TRUE;
-          /* if we have a parent parser or are reading an internal parameter
-             entity, then the entity declaration is not considered "internal"
-          */
-          declEntity->is_internal = !(parentParser || openInternalEntities);
-          if (entityDeclHandler)
-            handleDefault = XML_FALSE;
-        }
-      }
-      else {
-        poolDiscard(&dtd->pool);
-        declEntity = NULL;
-      }
-#else /* not XML_DTD */
-      declEntity = NULL;
-#endif /* XML_DTD */
-      break;
-    case XML_ROLE_NOTATION_NAME:
-      declNotationPublicId = NULL;
-      declNotationName = NULL;
-      if (notationDeclHandler) {
-        declNotationName = poolStoreString(&tempPool, enc, s, next);
-        if (!declNotationName)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_NOTATION_PUBLIC_ID:
-      if (!XmlIsPublicId(enc, s, next, eventPP))
-        return XML_ERROR_PUBLICID;
-      if (declNotationName) {  /* means notationDeclHandler != NULL */
-        XML_Char *tem = poolStoreString(&tempPool,
-                                        enc,
-                                        s + enc->minBytesPerChar,
-                                        next - enc->minBytesPerChar);
-        if (!tem)
-          return XML_ERROR_NO_MEMORY;
-        normalizePublicId(tem);
-        declNotationPublicId = tem;
-        poolFinish(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_NOTATION_SYSTEM_ID:
-      if (declNotationName && notationDeclHandler) {
-        const XML_Char *systemId
-          = poolStoreString(&tempPool, enc,
-                            s + enc->minBytesPerChar,
-                            next - enc->minBytesPerChar);
-        if (!systemId)
-          return XML_ERROR_NO_MEMORY;
-        *eventEndPP = s;
-        notationDeclHandler(handlerArg,
-                            declNotationName,
-                            curBase,
-                            systemId,
-                            declNotationPublicId);
-        handleDefault = XML_FALSE;
-      }
-      poolClear(&tempPool);
-      break;
-    case XML_ROLE_NOTATION_NO_SYSTEM_ID:
-      if (declNotationPublicId && notationDeclHandler) {
-        *eventEndPP = s;
-        notationDeclHandler(handlerArg,
-                            declNotationName,
-                            curBase,
-                            0,
-                            declNotationPublicId);
-        handleDefault = XML_FALSE;
-      }
-      poolClear(&tempPool);
-      break;
-    case XML_ROLE_ERROR:
-      switch (tok) {
-      case XML_TOK_PARAM_ENTITY_REF:
-        /* PE references in internal subset are
-           not allowed within declarations. */
-        return XML_ERROR_PARAM_ENTITY_REF;
-      case XML_TOK_XML_DECL:
-        return XML_ERROR_MISPLACED_XML_PI;
-      default:
-        return XML_ERROR_SYNTAX;
-      }
-#ifdef XML_DTD
-    case XML_ROLE_IGNORE_SECT:
-      {
-        enum XML_Error result;
-        if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        handleDefault = XML_FALSE;
-        result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore);
-        if (result != XML_ERROR_NONE)
-          return result;
-        else if (!next) {
-          processor = ignoreSectionProcessor;
-          return result;
-        }
-      }
-      break;
-#endif /* XML_DTD */
-    case XML_ROLE_GROUP_OPEN:
-      if (prologState.level >= groupSize) {
-        if (groupSize) {
-          char *temp = (char *)REALLOC(groupConnector, groupSize *= 2);
-          if (temp == NULL)
-            return XML_ERROR_NO_MEMORY;
-          groupConnector = temp;
-          if (dtd->scaffIndex) {
-            int *temp = (int *)REALLOC(dtd->scaffIndex,
-                          groupSize * sizeof(int));
-            if (temp == NULL)
-              return XML_ERROR_NO_MEMORY;
-            dtd->scaffIndex = temp;
-          }
-        }
-        else {
-          groupConnector = (char *)MALLOC(groupSize = 32);
-          if (!groupConnector)
-            return XML_ERROR_NO_MEMORY;
-        }
-      }
-      groupConnector[prologState.level] = 0;
-      if (dtd->in_eldecl) {
-        int myindex = nextScaffoldPart(parser);
-        if (myindex < 0)
-          return XML_ERROR_NO_MEMORY;
-        dtd->scaffIndex[dtd->scaffLevel] = myindex;
-        dtd->scaffLevel++;
-        dtd->scaffold[myindex].type = XML_CTYPE_SEQ;
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_GROUP_SEQUENCE:
-      if (groupConnector[prologState.level] == '|')
-        return XML_ERROR_SYNTAX;
-      groupConnector[prologState.level] = ',';
-      if (dtd->in_eldecl && elementDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_GROUP_CHOICE:
-      if (groupConnector[prologState.level] == ',')
-        return XML_ERROR_SYNTAX;
-      if (dtd->in_eldecl
-          && !groupConnector[prologState.level]
-          && (dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
-              != XML_CTYPE_MIXED)
-          ) {
-        dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
-            = XML_CTYPE_CHOICE;
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      groupConnector[prologState.level] = '|';
-      break;
-    case XML_ROLE_PARAM_ENTITY_REF:
-#ifdef XML_DTD
-    case XML_ROLE_INNER_PARAM_ENTITY_REF:
-      dtd->hasParamEntityRefs = XML_TRUE;
-      if (!paramEntityParsing)
-        dtd->keepProcessing = dtd->standalone;
-      else {
-        const XML_Char *name;
-        ENTITY *entity;
-        name = poolStoreString(&dtd->pool, enc,
-                                s + enc->minBytesPerChar,
-                                next - enc->minBytesPerChar);
-        if (!name)
-          return XML_ERROR_NO_MEMORY;
-        entity = (ENTITY *)lookup(&dtd->paramEntities, name, 0);
-        poolDiscard(&dtd->pool);
-        /* first, determine if a check for an existing declaration is needed;
-           if yes, check that the entity exists, and that it is internal,
-           otherwise call the skipped entity handler
-        */
-        if (prologState.documentEntity &&
-            (dtd->standalone
-             ? !openInternalEntities
-             : !dtd->hasParamEntityRefs)) {
-          if (!entity)
-            return XML_ERROR_UNDEFINED_ENTITY;
-          else if (!entity->is_internal)
-            return XML_ERROR_ENTITY_DECLARED_IN_PE;
-        }
-        else if (!entity) {
-          dtd->keepProcessing = dtd->standalone;
-          /* cannot report skipped entities in declarations */
-          if ((role == XML_ROLE_PARAM_ENTITY_REF) && skippedEntityHandler) {
-            skippedEntityHandler(handlerArg, name, 1);
-            handleDefault = XML_FALSE;
-          }
-          break;
-        }
-        if (entity->open)
-          return XML_ERROR_RECURSIVE_ENTITY_REF;
-        if (entity->textPtr) {
-          enum XML_Error result;
-          XML_Bool betweenDecl =
-            (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE);
-          result = processInternalEntity(parser, entity, betweenDecl);
-          if (result != XML_ERROR_NONE)
-            return result;
-          handleDefault = XML_FALSE;
-          break;
-        }
-        if (externalEntityRefHandler) {
-          dtd->paramEntityRead = XML_FALSE;
-          entity->open = XML_TRUE;
-          if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                        0,
-                                        entity->base,
-                                        entity->systemId,
-                                        entity->publicId)) {
-            entity->open = XML_FALSE;
-            return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-          }
-          entity->open = XML_FALSE;
-          handleDefault = XML_FALSE;
-          if (!dtd->paramEntityRead) {
-            dtd->keepProcessing = dtd->standalone;
-            break;
-          }
-        }
-        else {
-          dtd->keepProcessing = dtd->standalone;
-          break;
-        }
-      }
-#endif /* XML_DTD */
-      if (!dtd->standalone &&
-          notStandaloneHandler &&
-          !notStandaloneHandler(handlerArg))
-        return XML_ERROR_NOT_STANDALONE;
-      break;
-
-    /* Element declaration stuff */
-
-    case XML_ROLE_ELEMENT_NAME:
-      if (elementDeclHandler) {
-        declElementType = getElementType(parser, enc, s, next);
-        if (!declElementType)
-          return XML_ERROR_NO_MEMORY;
-        dtd->scaffLevel = 0;
-        dtd->scaffCount = 0;
-        dtd->in_eldecl = XML_TRUE;
-        handleDefault = XML_FALSE;
-      }
-      break;
-
-    case XML_ROLE_CONTENT_ANY:
-    case XML_ROLE_CONTENT_EMPTY:
-      if (dtd->in_eldecl) {
-        if (elementDeclHandler) {
-          XML_Content * content = (XML_Content *) MALLOC(sizeof(XML_Content));
-          if (!content)
-            return XML_ERROR_NO_MEMORY;
-          content->quant = XML_CQUANT_NONE;
-          content->name = NULL;
-          content->numchildren = 0;
-          content->children = NULL;
-          content->type = ((role == XML_ROLE_CONTENT_ANY) ?
-                           XML_CTYPE_ANY :
-                           XML_CTYPE_EMPTY);
-          *eventEndPP = s;
-          elementDeclHandler(handlerArg, declElementType->name, content);
-          handleDefault = XML_FALSE;
-        }
-        dtd->in_eldecl = XML_FALSE;
-      }
-      break;
-
-    case XML_ROLE_CONTENT_PCDATA:
-      if (dtd->in_eldecl) {
-        dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
-            = XML_CTYPE_MIXED;
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-
-    case XML_ROLE_CONTENT_ELEMENT:
-      quant = XML_CQUANT_NONE;
-      goto elementContent;
-    case XML_ROLE_CONTENT_ELEMENT_OPT:
-      quant = XML_CQUANT_OPT;
-      goto elementContent;
-    case XML_ROLE_CONTENT_ELEMENT_REP:
-      quant = XML_CQUANT_REP;
-      goto elementContent;
-    case XML_ROLE_CONTENT_ELEMENT_PLUS:
-      quant = XML_CQUANT_PLUS;
-    elementContent:
-      if (dtd->in_eldecl) {
-        ELEMENT_TYPE *el;
-        const XML_Char *name;
-        int nameLen;
-        const char *nxt = (quant == XML_CQUANT_NONE
-                           ? next
-                           : next - enc->minBytesPerChar);
-        int myindex = nextScaffoldPart(parser);
-        if (myindex < 0)
-          return XML_ERROR_NO_MEMORY;
-        dtd->scaffold[myindex].type = XML_CTYPE_NAME;
-        dtd->scaffold[myindex].quant = quant;
-        el = getElementType(parser, enc, s, nxt);
-        if (!el)
-          return XML_ERROR_NO_MEMORY;
-        name = el->name;
-        dtd->scaffold[myindex].name = name;
-        nameLen = 0;
-        for (; name[nameLen++]; );
-        dtd->contentStringLen +=  nameLen;
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-
-    case XML_ROLE_GROUP_CLOSE:
-      quant = XML_CQUANT_NONE;
-      goto closeGroup;
-    case XML_ROLE_GROUP_CLOSE_OPT:
-      quant = XML_CQUANT_OPT;
-      goto closeGroup;
-    case XML_ROLE_GROUP_CLOSE_REP:
-      quant = XML_CQUANT_REP;
-      goto closeGroup;
-    case XML_ROLE_GROUP_CLOSE_PLUS:
-      quant = XML_CQUANT_PLUS;
-    closeGroup:
-      if (dtd->in_eldecl) {
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-        dtd->scaffLevel--;
-        dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel]].quant = quant;
-        if (dtd->scaffLevel == 0) {
-          if (!handleDefault) {
-            XML_Content *model = build_model(parser);
-            if (!model)
-              return XML_ERROR_NO_MEMORY;
-            *eventEndPP = s;
-            elementDeclHandler(handlerArg, declElementType->name, model);
-          }
-          dtd->in_eldecl = XML_FALSE;
-          dtd->contentStringLen = 0;
-        }
-      }
-      break;
-      /* End element declaration stuff */
-
-    case XML_ROLE_PI:
-      if (!reportProcessingInstruction(parser, enc, s, next))
-        return XML_ERROR_NO_MEMORY;
-      handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_COMMENT:
-      if (!reportComment(parser, enc, s, next))
-        return XML_ERROR_NO_MEMORY;
-      handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_NONE:
-      switch (tok) {
-      case XML_TOK_BOM:
-        handleDefault = XML_FALSE;
-        break;
-      }
-      break;
-    case XML_ROLE_DOCTYPE_NONE:
-      if (startDoctypeDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_ENTITY_NONE:
-      if (dtd->keepProcessing && entityDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_NOTATION_NONE:
-      if (notationDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_ATTLIST_NONE:
-      if (dtd->keepProcessing && attlistDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_ELEMENT_NONE:
-      if (elementDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    } /* end of big switch */
-
-    if (handleDefault && defaultHandler)
-      reportDefault(parser, enc, s, next);
-
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_FINISHED:
-      return XML_ERROR_ABORTED;
-    default:
-      s = next;
-      tok = XmlPrologTok(enc, s, end, &next);
-    }
-  }
-  /* not reached */
-}
-
-static enum XML_Error PTRCALL
-epilogProcessor(XML_Parser parser,
-                const char *s,
-                const char *end,
-                const char **nextPtr)
-{
-  processor = epilogProcessor;
-  eventPtr = s;
-  for (;;) {
-    const char *next = NULL;
-    int tok = XmlPrologTok(encoding, s, end, &next);
-    eventEndPtr = next;
-    switch (tok) {
-    /* report partial linebreak - it might be the last token */
-    case -XML_TOK_PROLOG_S:
-      if (defaultHandler) {
-        reportDefault(parser, encoding, s, next);
-        if (ps_parsing == XML_FINISHED)
-          return XML_ERROR_ABORTED;
-      }
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_TOK_NONE:
-      *nextPtr = s;
-      return XML_ERROR_NONE;
-    case XML_TOK_PROLOG_S:
-      if (defaultHandler)
-        reportDefault(parser, encoding, s, next);
-      break;
-    case XML_TOK_PI:
-      if (!reportProcessingInstruction(parser, encoding, s, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_COMMENT:
-      if (!reportComment(parser, encoding, s, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_INVALID:
-      eventPtr = next;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL:
-      if (!ps_finalBuffer) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_UNCLOSED_TOKEN;
-    case XML_TOK_PARTIAL_CHAR:
-      if (!ps_finalBuffer) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_PARTIAL_CHAR;
-    default:
-      return XML_ERROR_JUNK_AFTER_DOC_ELEMENT;
-    }
-    eventPtr = s = next;
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_FINISHED:
-      return XML_ERROR_ABORTED;
-    default: ;
-    }
-  }
-}
-
-static enum XML_Error
-processInternalEntity(XML_Parser parser, ENTITY *entity,
-                      XML_Bool betweenDecl)
-{
-  const char *textStart, *textEnd;
-  const char *next;
-  enum XML_Error result;
-  OPEN_INTERNAL_ENTITY *openEntity;
-
-  if (freeInternalEntities) {
-    openEntity = freeInternalEntities;
-    freeInternalEntities = openEntity->next;
-  }
-  else {
-    openEntity = (OPEN_INTERNAL_ENTITY *)MALLOC(sizeof(OPEN_INTERNAL_ENTITY));
-    if (!openEntity)
-      return XML_ERROR_NO_MEMORY;
-  }
-  entity->open = XML_TRUE;
-  entity->processed = 0;
-  openEntity->next = openInternalEntities;
-  openInternalEntities = openEntity;
-  openEntity->entity = entity;
-  openEntity->startTagLevel = tagLevel;
-  openEntity->betweenDecl = betweenDecl;
-  openEntity->internalEventPtr = NULL;
-  openEntity->internalEventEndPtr = NULL;
-  textStart = (char *)entity->textPtr;
-  textEnd = (char *)(entity->textPtr + entity->textLen);
-
-#ifdef XML_DTD
-  if (entity->is_param) {
-    int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next);
-    result = doProlog(parser, internalEncoding, textStart, textEnd, tok,
-                      next, &next, XML_FALSE);
-  }
-  else
-#endif /* XML_DTD */
-    result = doContent(parser, tagLevel, internalEncoding, textStart,
-                       textEnd, &next, XML_FALSE);
-
-  if (result == XML_ERROR_NONE) {
-    if (textEnd != next && ps_parsing == XML_SUSPENDED) {
-      entity->processed = (int)(next - textStart);
-      processor = internalEntityProcessor;
-    }
-    else {
-      entity->open = XML_FALSE;
-      openInternalEntities = openEntity->next;
-      /* put openEntity back in list of free instances */
-      openEntity->next = freeInternalEntities;
-      freeInternalEntities = openEntity;
-    }
-  }
-  return result;
-}
-
-static enum XML_Error PTRCALL
-internalEntityProcessor(XML_Parser parser,
-                        const char *s,
-                        const char *end,
-                        const char **nextPtr)
-{
-  ENTITY *entity;
-  const char *textStart, *textEnd;
-  const char *next;
-  enum XML_Error result;
-  OPEN_INTERNAL_ENTITY *openEntity = openInternalEntities;
-  if (!openEntity)
-    return XML_ERROR_UNEXPECTED_STATE;
-
-  entity = openEntity->entity;
-  textStart = ((char *)entity->textPtr) + entity->processed;
-  textEnd = (char *)(entity->textPtr + entity->textLen);
-
-#ifdef XML_DTD
-  if (entity->is_param) {
-    int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next);
-    result = doProlog(parser, internalEncoding, textStart, textEnd, tok,
-                      next, &next, XML_FALSE);
-  }
-  else
-#endif /* XML_DTD */
-    result = doContent(parser, openEntity->startTagLevel, internalEncoding,
-                       textStart, textEnd, &next, XML_FALSE);
-
-  if (result != XML_ERROR_NONE)
-    return result;
-  else if (textEnd != next && ps_parsing == XML_SUSPENDED) {
-    entity->processed = (int)(next - (char *)entity->textPtr);
-    return result;
-  }
-  else {
-    entity->open = XML_FALSE;
-    openInternalEntities = openEntity->next;
-    /* put openEntity back in list of free instances */
-    openEntity->next = freeInternalEntities;
-    freeInternalEntities = openEntity;
-  }
-
-#ifdef XML_DTD
-  if (entity->is_param) {
-    int tok;
-    processor = prologProcessor;
-    tok = XmlPrologTok(encoding, s, end, &next);
-    return doProlog(parser, encoding, s, end, tok, next, nextPtr,
-                    (XML_Bool)!ps_finalBuffer);
-  }
-  else
-#endif /* XML_DTD */
-  {
-    processor = contentProcessor;
-    /* see externalEntityContentProcessor vs contentProcessor */
-    return doContent(parser, parentParser ? 1 : 0, encoding, s, end,
-                     nextPtr, (XML_Bool)!ps_finalBuffer);
-  }
-}
-
-static enum XML_Error PTRCALL
-errorProcessor(XML_Parser parser,
-               const char *s,
-               const char *end,
-               const char **nextPtr)
-{
-  return errorCode;
-}
-
-static enum XML_Error
-storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
-                    const char *ptr, const char *end,
-                    STRING_POOL *pool)
-{
-  enum XML_Error result = appendAttributeValue(parser, enc, isCdata, ptr,
-                                               end, pool);
-  if (result)
-    return result;
-  if (!isCdata && poolLength(pool) && poolLastChar(pool) == 0x20)
-    poolChop(pool);
-  if (!poolAppendChar(pool, XML_T('\0')))
-    return XML_ERROR_NO_MEMORY;
-  return XML_ERROR_NONE;
-}
-
-static enum XML_Error
-appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
-                     const char *ptr, const char *end,
-                     STRING_POOL *pool)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  for (;;) {
-    const char *next;
-    int tok = XmlAttributeValueTok(enc, ptr, end, &next);
-    switch (tok) {
-    case XML_TOK_NONE:
-      return XML_ERROR_NONE;
-    case XML_TOK_INVALID:
-      if (enc == encoding)
-        eventPtr = next;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL:
-      if (enc == encoding)
-        eventPtr = ptr;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_CHAR_REF:
-      {
-        XML_Char buf[XML_ENCODE_MAX];
-        int i;
-        int n = XmlCharRefNumber(enc, ptr);
-        if (n < 0) {
-          if (enc == encoding)
-            eventPtr = ptr;
-          return XML_ERROR_BAD_CHAR_REF;
-        }
-        if (!isCdata
-            && n == 0x20 /* space */
-            && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20))
-          break;
-        n = XmlEncode(n, (ICHAR *)buf);
-        if (!n) {
-          if (enc == encoding)
-            eventPtr = ptr;
-          return XML_ERROR_BAD_CHAR_REF;
-        }
-        for (i = 0; i < n; i++) {
-          if (!poolAppendChar(pool, buf[i]))
-            return XML_ERROR_NO_MEMORY;
-        }
-      }
-      break;
-    case XML_TOK_DATA_CHARS:
-      if (!poolAppend(pool, enc, ptr, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_TRAILING_CR:
-      next = ptr + enc->minBytesPerChar;
-      /* fall through */
-    case XML_TOK_ATTRIBUTE_VALUE_S:
-    case XML_TOK_DATA_NEWLINE:
-      if (!isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20))
-        break;
-      if (!poolAppendChar(pool, 0x20))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_ENTITY_REF:
-      {
-        const XML_Char *name;
-        ENTITY *entity;
-        char checkEntityDecl;
-        XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc,
-                                              ptr + enc->minBytesPerChar,
-                                              next - enc->minBytesPerChar);
-        if (ch) {
-          if (!poolAppendChar(pool, ch))
-                return XML_ERROR_NO_MEMORY;
-          break;
-        }
-        name = poolStoreString(&temp2Pool, enc,
-                               ptr + enc->minBytesPerChar,
-                               next - enc->minBytesPerChar);
-        if (!name)
-          return XML_ERROR_NO_MEMORY;
-        entity = (ENTITY *)lookup(&dtd->generalEntities, name, 0);
-        poolDiscard(&temp2Pool);
-        /* First, determine if a check for an existing declaration is needed;
-           if yes, check that the entity exists, and that it is internal.
-        */
-        if (pool == &dtd->pool)  /* are we called from prolog? */
-          checkEntityDecl =
-#ifdef XML_DTD
-              prologState.documentEntity &&
-#endif /* XML_DTD */
-              (dtd->standalone
-               ? !openInternalEntities
-               : !dtd->hasParamEntityRefs);
-        else /* if (pool == &tempPool): we are called from content */
-          checkEntityDecl = !dtd->hasParamEntityRefs || dtd->standalone;
-        if (checkEntityDecl) {
-          if (!entity)
-            return XML_ERROR_UNDEFINED_ENTITY;
-          else if (!entity->is_internal)
-            return XML_ERROR_ENTITY_DECLARED_IN_PE;
-        }
-        else if (!entity) {
-          /* Cannot report skipped entity here - see comments on
-             skippedEntityHandler.
-          if (skippedEntityHandler)
-            skippedEntityHandler(handlerArg, name, 0);
-          */
-          /* Cannot call the default handler because this would be
-             out of sync with the call to the startElementHandler.
-          if ((pool == &tempPool) && defaultHandler)
-            reportDefault(parser, enc, ptr, next);
-          */
-          break;
-        }
-        if (entity->open) {
-          if (enc == encoding)
-            eventPtr = ptr;
-          return XML_ERROR_RECURSIVE_ENTITY_REF;
-        }
-        if (entity->notation) {
-          if (enc == encoding)
-            eventPtr = ptr;
-          return XML_ERROR_BINARY_ENTITY_REF;
-        }
-        if (!entity->textPtr) {
-          if (enc == encoding)
-            eventPtr = ptr;
-              return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF;
-        }
-        else {
-          enum XML_Error result;
-          const XML_Char *textEnd = entity->textPtr + entity->textLen;
-          entity->open = XML_TRUE;
-          result = appendAttributeValue(parser, internalEncoding, isCdata,
-                                        (char *)entity->textPtr,
-                                        (char *)textEnd, pool);
-          entity->open = XML_FALSE;
-          if (result)
-            return result;
-        }
-      }
-      break;
-    default:
-      if (enc == encoding)
-        eventPtr = ptr;
-      return XML_ERROR_UNEXPECTED_STATE;
-    }
-    ptr = next;
-  }
-  /* not reached */
-}
-
-static enum XML_Error
-storeEntityValue(XML_Parser parser,
-                 const ENCODING *enc,
-                 const char *entityTextPtr,
-                 const char *entityTextEnd)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  STRING_POOL *pool = &(dtd->entityValuePool);
-  enum XML_Error result = XML_ERROR_NONE;
-#ifdef XML_DTD
-  int oldInEntityValue = prologState.inEntityValue;
-  prologState.inEntityValue = 1;
-#endif /* XML_DTD */
-  /* never return Null for the value argument in EntityDeclHandler,
-     since this would indicate an external entity; therefore we
-     have to make sure that entityValuePool.start is not null */
-  if (!pool->blocks) {
-    if (!poolGrow(pool))
-      return XML_ERROR_NO_MEMORY;
-  }
-
-  for (;;) {
-    const char *next;
-    int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next);
-    switch (tok) {
-    case XML_TOK_PARAM_ENTITY_REF:
-#ifdef XML_DTD
-      if (isParamEntity || enc != encoding) {
-        const XML_Char *name;
-        ENTITY *entity;
-        name = poolStoreString(&tempPool, enc,
-                               entityTextPtr + enc->minBytesPerChar,
-                               next - enc->minBytesPerChar);
-        if (!name) {
-          result = XML_ERROR_NO_MEMORY;
-          goto endEntityValue;
-        }
-        entity = (ENTITY *)lookup(&dtd->paramEntities, name, 0);
-        poolDiscard(&tempPool);
-        if (!entity) {
-          /* not a well-formedness error - see XML 1.0: WFC Entity Declared */
-          /* cannot report skipped entity here - see comments on
-             skippedEntityHandler
-          if (skippedEntityHandler)
-            skippedEntityHandler(handlerArg, name, 0);
-          */
-          dtd->keepProcessing = dtd->standalone;
-          goto endEntityValue;
-        }
-        if (entity->open) {
-          if (enc == encoding)
-            eventPtr = entityTextPtr;
-          result = XML_ERROR_RECURSIVE_ENTITY_REF;
-          goto endEntityValue;
-        }
-        if (entity->systemId) {
-          if (externalEntityRefHandler) {
-            dtd->paramEntityRead = XML_FALSE;
-            entity->open = XML_TRUE;
-            if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                          0,
-                                          entity->base,
-                                          entity->systemId,
-                                          entity->publicId)) {
-              entity->open = XML_FALSE;
-              result = XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-              goto endEntityValue;
-            }
-            entity->open = XML_FALSE;
-            if (!dtd->paramEntityRead)
-              dtd->keepProcessing = dtd->standalone;
-          }
-          else
-            dtd->keepProcessing = dtd->standalone;
-        }
-        else {
-          entity->open = XML_TRUE;
-          result = storeEntityValue(parser,
-                                    internalEncoding,
-                                    (char *)entity->textPtr,
-                                    (char *)(entity->textPtr
-                                             + entity->textLen));
-          entity->open = XML_FALSE;
-          if (result)
-            goto endEntityValue;
-        }
-        break;
-      }
-#endif /* XML_DTD */
-      /* In the internal subset, PE references are not legal
-         within markup declarations, e.g entity values in this case. */
-      eventPtr = entityTextPtr;
-      result = XML_ERROR_PARAM_ENTITY_REF;
-      goto endEntityValue;
-    case XML_TOK_NONE:
-      result = XML_ERROR_NONE;
-      goto endEntityValue;
-    case XML_TOK_ENTITY_REF:
-    case XML_TOK_DATA_CHARS:
-      if (!poolAppend(pool, enc, entityTextPtr, next)) {
-        result = XML_ERROR_NO_MEMORY;
-        goto endEntityValue;
-      }
-      break;
-    case XML_TOK_TRAILING_CR:
-      next = entityTextPtr + enc->minBytesPerChar;
-      /* fall through */
-    case XML_TOK_DATA_NEWLINE:
-      if (pool->end == pool->ptr && !poolGrow(pool)) {
-              result = XML_ERROR_NO_MEMORY;
-        goto endEntityValue;
-      }
-      *(pool->ptr)++ = 0xA;
-      break;
-    case XML_TOK_CHAR_REF:
-      {
-        XML_Char buf[XML_ENCODE_MAX];
-        int i;
-        int n = XmlCharRefNumber(enc, entityTextPtr);
-        if (n < 0) {
-          if (enc == encoding)
-            eventPtr = entityTextPtr;
-          result = XML_ERROR_BAD_CHAR_REF;
-          goto endEntityValue;
-        }
-        n = XmlEncode(n, (ICHAR *)buf);
-        if (!n) {
-          if (enc == encoding)
-            eventPtr = entityTextPtr;
-          result = XML_ERROR_BAD_CHAR_REF;
-          goto endEntityValue;
-        }
-        for (i = 0; i < n; i++) {
-          if (pool->end == pool->ptr && !poolGrow(pool)) {
-            result = XML_ERROR_NO_MEMORY;
-            goto endEntityValue;
-          }
-          *(pool->ptr)++ = buf[i];
-        }
-      }
-      break;
-    case XML_TOK_PARTIAL:
-      if (enc == encoding)
-        eventPtr = entityTextPtr;
-      result = XML_ERROR_INVALID_TOKEN;
-      goto endEntityValue;
-    case XML_TOK_INVALID:
-      if (enc == encoding)
-        eventPtr = next;
-      result = XML_ERROR_INVALID_TOKEN;
-      goto endEntityValue;
-    default:
-      if (enc == encoding)
-        eventPtr = entityTextPtr;
-      result = XML_ERROR_UNEXPECTED_STATE;
-      goto endEntityValue;
-    }
-    entityTextPtr = next;
-  }
-endEntityValue:
-#ifdef XML_DTD
-  prologState.inEntityValue = oldInEntityValue;
-#endif /* XML_DTD */
-  return result;
-}
-
-static void FASTCALL
-normalizeLines(XML_Char *s)
-{
-  XML_Char *p;
-  for (;; s++) {
-    if (*s == XML_T('\0'))
-      return;
-    if (*s == 0xD)
-      break;
-  }
-  p = s;
-  do {
-    if (*s == 0xD) {
-      *p++ = 0xA;
-      if (*++s == 0xA)
-        s++;
-    }
-    else
-      *p++ = *s++;
-  } while (*s);
-  *p = XML_T('\0');
-}
-
-static int
-reportProcessingInstruction(XML_Parser parser, const ENCODING *enc,
-                            const char *start, const char *end)
-{
-  const XML_Char *target;
-  XML_Char *data;
-  const char *tem;
-  if (!processingInstructionHandler) {
-    if (defaultHandler)
-      reportDefault(parser, enc, start, end);
-    return 1;
-  }
-  start += enc->minBytesPerChar * 2;
-  tem = start + XmlNameLength(enc, start);
-  target = poolStoreString(&tempPool, enc, start, tem);
-  if (!target)
-    return 0;
-  poolFinish(&tempPool);
-  data = poolStoreString(&tempPool, enc,
-                        XmlSkipS(enc, tem),
-                        end - enc->minBytesPerChar*2);
-  if (!data)
-    return 0;
-  normalizeLines(data);
-  processingInstructionHandler(handlerArg, target, data);
-  poolClear(&tempPool);
-  return 1;
-}
-
-static int
-reportComment(XML_Parser parser, const ENCODING *enc,
-              const char *start, const char *end)
-{
-  XML_Char *data;
-  if (!commentHandler) {
-    if (defaultHandler)
-      reportDefault(parser, enc, start, end);
-    return 1;
-  }
-  data = poolStoreString(&tempPool,
-                         enc,
-                         start + enc->minBytesPerChar * 4,
-                         end - enc->minBytesPerChar * 3);
-  if (!data)
-    return 0;
-  normalizeLines(data);
-  commentHandler(handlerArg, data);
-  poolClear(&tempPool);
-  return 1;
-}
-
-static void
-reportDefault(XML_Parser parser, const ENCODING *enc,
-              const char *s, const char *end)
-{
-  if (MUST_CONVERT(enc, s)) {
-    const char **eventPP;
-    const char **eventEndPP;
-    if (enc == encoding) {
-      eventPP = &eventPtr;
-      eventEndPP = &eventEndPtr;
-    }
-    else {
-      eventPP = &(openInternalEntities->internalEventPtr);
-      eventEndPP = &(openInternalEntities->internalEventEndPtr);
-    }
-    do {
-      ICHAR *dataPtr = (ICHAR *)dataBuf;
-      XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd);
-      *eventEndPP = s;
-      defaultHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf));
-      *eventPP = s;
-    } while (s != end);
-  }
-  else
-    defaultHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)end - (XML_Char *)s));
-}
-
-
-static int
-defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata,
-                XML_Bool isId, const XML_Char *value, XML_Parser parser)
-{
-  DEFAULT_ATTRIBUTE *att;
-  if (value || isId) {
-    /* The handling of default attributes gets messed up if we have
-       a default which duplicates a non-default. */
-    int i;
-    for (i = 0; i < type->nDefaultAtts; i++)
-      if (attId == type->defaultAtts[i].id)
-        return 1;
-    if (isId && !type->idAtt && !attId->xmlns)
-      type->idAtt = attId;
-  }
-  if (type->nDefaultAtts == type->allocDefaultAtts) {
-    if (type->allocDefaultAtts == 0) {
-      type->allocDefaultAtts = 8;
-      type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(type->allocDefaultAtts
-                            * sizeof(DEFAULT_ATTRIBUTE));
-      if (!type->defaultAtts)
-        return 0;
-    }
-    else {
-      DEFAULT_ATTRIBUTE *temp;
-      int count = type->allocDefaultAtts * 2;
-      temp = (DEFAULT_ATTRIBUTE *)
-        REALLOC(type->defaultAtts, (count * sizeof(DEFAULT_ATTRIBUTE)));
-      if (temp == NULL)
-        return 0;
-      type->allocDefaultAtts = count;
-      type->defaultAtts = temp;
-    }
-  }
-  att = type->defaultAtts + type->nDefaultAtts;
-  att->id = attId;
-  att->value = value;
-  att->isCdata = isCdata;
-  if (!isCdata)
-    attId->maybeTokenized = XML_TRUE;
-  type->nDefaultAtts += 1;
-  return 1;
-}
-
-static int
-setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  const XML_Char *name;
-  for (name = elementType->name; *name; name++) {
-    if (*name == XML_T(':')) {
-      PREFIX *prefix;
-      const XML_Char *s;
-      for (s = elementType->name; s != name; s++) {
-        if (!poolAppendChar(&dtd->pool, *s))
-          return 0;
-      }
-      if (!poolAppendChar(&dtd->pool, XML_T('\0')))
-        return 0;
-      prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&dtd->pool),
-                                sizeof(PREFIX));
-      if (!prefix)
-        return 0;
-      if (prefix->name == poolStart(&dtd->pool))
-        poolFinish(&dtd->pool);
-      else
-        poolDiscard(&dtd->pool);
-      elementType->prefix = prefix;
-
-    }
-  }
-  return 1;
-}
-
-static ATTRIBUTE_ID *
-getAttributeId(XML_Parser parser, const ENCODING *enc,
-               const char *start, const char *end)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  ATTRIBUTE_ID *id;
-  const XML_Char *name;
-  if (!poolAppendChar(&dtd->pool, XML_T('\0')))
-    return NULL;
-  name = poolStoreString(&dtd->pool, enc, start, end);
-  if (!name)
-    return NULL;
-  /* skip quotation mark - its storage will be re-used (like in name[-1]) */
-  ++name;
-  id = (ATTRIBUTE_ID *)lookup(&dtd->attributeIds, name, sizeof(ATTRIBUTE_ID));
-  if (!id)
-    return NULL;
-  if (id->name != name)
-    poolDiscard(&dtd->pool);
-  else {
-    poolFinish(&dtd->pool);
-    if (!ns)
-      ;
-    else if (name[0] == XML_T('x')
-        && name[1] == XML_T('m')
-        && name[2] == XML_T('l')
-        && name[3] == XML_T('n')
-        && name[4] == XML_T('s')
-        && (name[5] == XML_T('\0') || name[5] == XML_T(':'))) {
-      if (name[5] == XML_T('\0'))
-        id->prefix = &dtd->defaultPrefix;
-      else
-        id->prefix = (PREFIX *)lookup(&dtd->prefixes, name + 6, sizeof(PREFIX));
-      id->xmlns = XML_TRUE;
-    }
-    else {
-      int i;
-      for (i = 0; name[i]; i++) {
-        /* attributes without prefix are *not* in the default namespace */
-        if (name[i] == XML_T(':')) {
-          int j;
-          for (j = 0; j < i; j++) {
-            if (!poolAppendChar(&dtd->pool, name[j]))
-              return NULL;
-          }
-          if (!poolAppendChar(&dtd->pool, XML_T('\0')))
-            return NULL;
-          id->prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&dtd->pool),
-                                        sizeof(PREFIX));
-          if (!id->prefix)
-            return NULL;
-          if (id->prefix->name == poolStart(&dtd->pool))
-            poolFinish(&dtd->pool);
-          else
-            poolDiscard(&dtd->pool);
-          break;
-        }
-      }
-    }
-  }
-  return id;
-}
-
-#define CONTEXT_SEP XML_T('\f')
-
-static const XML_Char *
-getContext(XML_Parser parser)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  HASH_TABLE_ITER iter;
-  XML_Bool needSep = XML_FALSE;
-
-  if (dtd->defaultPrefix.binding) {
-    int i;
-    int len;
-    if (!poolAppendChar(&tempPool, XML_T('=')))
-      return NULL;
-    len = dtd->defaultPrefix.binding->uriLen;
-    if (namespaceSeparator)
-      len--;
-    for (i = 0; i < len; i++)
-      if (!poolAppendChar(&tempPool, dtd->defaultPrefix.binding->uri[i]))
-        return NULL;
-    needSep = XML_TRUE;
-  }
-
-  hashTableIterInit(&iter, &(dtd->prefixes));
-  for (;;) {
-    int i;
-    int len;
-    const XML_Char *s;
-    PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter);
-    if (!prefix)
-      break;
-    if (!prefix->binding)
-      continue;
-    if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP))
-      return NULL;
-    for (s = prefix->name; *s; s++)
-      if (!poolAppendChar(&tempPool, *s))
-        return NULL;
-    if (!poolAppendChar(&tempPool, XML_T('=')))
-      return NULL;
-    len = prefix->binding->uriLen;
-    if (namespaceSeparator)
-      len--;
-    for (i = 0; i < len; i++)
-      if (!poolAppendChar(&tempPool, prefix->binding->uri[i]))
-        return NULL;
-    needSep = XML_TRUE;
-  }
-
-
-  hashTableIterInit(&iter, &(dtd->generalEntities));
-  for (;;) {
-    const XML_Char *s;
-    ENTITY *e = (ENTITY *)hashTableIterNext(&iter);
-    if (!e)
-      break;
-    if (!e->open)
-      continue;
-    if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP))
-      return NULL;
-    for (s = e->name; *s; s++)
-      if (!poolAppendChar(&tempPool, *s))
-        return 0;
-    needSep = XML_TRUE;
-  }
-
-  if (!poolAppendChar(&tempPool, XML_T('\0')))
-    return NULL;
-  return tempPool.start;
-}
-
-static XML_Bool
-setContext(XML_Parser parser, const XML_Char *context)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  const XML_Char *s = context;
-
-  while (*context != XML_T('\0')) {
-    if (*s == CONTEXT_SEP || *s == XML_T('\0')) {
-      ENTITY *e;
-      if (!poolAppendChar(&tempPool, XML_T('\0')))
-        return XML_FALSE;
-      e = (ENTITY *)lookup(&dtd->generalEntities, poolStart(&tempPool), 0);
-      if (e)
-        e->open = XML_TRUE;
-      if (*s != XML_T('\0'))
-        s++;
-      context = s;
-      poolDiscard(&tempPool);
-    }
-    else if (*s == XML_T('=')) {
-      PREFIX *prefix;
-      if (poolLength(&tempPool) == 0)
-        prefix = &dtd->defaultPrefix;
-      else {
-        if (!poolAppendChar(&tempPool, XML_T('\0')))
-          return XML_FALSE;
-        prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&tempPool),
-                                  sizeof(PREFIX));
-        if (!prefix)
-          return XML_FALSE;
-        if (prefix->name == poolStart(&tempPool)) {
-          prefix->name = poolCopyString(&dtd->pool, prefix->name);
-          if (!prefix->name)
-            return XML_FALSE;
-        }
-        poolDiscard(&tempPool);
-      }
-      for (context = s + 1;
-           *context != CONTEXT_SEP && *context != XML_T('\0');
-           context++)
-        if (!poolAppendChar(&tempPool, *context))
-          return XML_FALSE;
-      if (!poolAppendChar(&tempPool, XML_T('\0')))
-        return XML_FALSE;
-      if (addBinding(parser, prefix, NULL, poolStart(&tempPool),
-                     &inheritedBindings) != XML_ERROR_NONE)
-        return XML_FALSE;
-      poolDiscard(&tempPool);
-      if (*context != XML_T('\0'))
-        ++context;
-      s = context;
-    }
-    else {
-      if (!poolAppendChar(&tempPool, *s))
-        return XML_FALSE;
-      s++;
-    }
-  }
-  return XML_TRUE;
-}
-
-static void FASTCALL
-normalizePublicId(XML_Char *publicId)
-{
-  XML_Char *p = publicId;
-  XML_Char *s;
-  for (s = publicId; *s; s++) {
-    switch (*s) {
-    case 0x20:
-    case 0xD:
-    case 0xA:
-      if (p != publicId && p[-1] != 0x20)
-        *p++ = 0x20;
-      break;
-    default:
-      *p++ = *s;
-    }
-  }
-  if (p != publicId && p[-1] == 0x20)
-    --p;
-  *p = XML_T('\0');
-}
-
-static DTD *
-dtdCreate(const XML_Memory_Handling_Suite *ms)
-{
-  DTD *p = (DTD *)ms->malloc_fcn(sizeof(DTD));
-  if (p == NULL)
-    return p;
-  poolInit(&(p->pool), ms);
-  poolInit(&(p->entityValuePool), ms);
-  hashTableInit(&(p->generalEntities), ms);
-  hashTableInit(&(p->elementTypes), ms);
-  hashTableInit(&(p->attributeIds), ms);
-  hashTableInit(&(p->prefixes), ms);
-#ifdef XML_DTD
-  p->paramEntityRead = XML_FALSE;
-  hashTableInit(&(p->paramEntities), ms);
-#endif /* XML_DTD */
-  p->defaultPrefix.name = NULL;
-  p->defaultPrefix.binding = NULL;
-
-  p->in_eldecl = XML_FALSE;
-  p->scaffIndex = NULL;
-  p->scaffold = NULL;
-  p->scaffLevel = 0;
-  p->scaffSize = 0;
-  p->scaffCount = 0;
-  p->contentStringLen = 0;
-
-  p->keepProcessing = XML_TRUE;
-  p->hasParamEntityRefs = XML_FALSE;
-  p->standalone = XML_FALSE;
-  return p;
-}
-
-static void
-dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms)
-{
-  HASH_TABLE_ITER iter;
-  hashTableIterInit(&iter, &(p->elementTypes));
-  for (;;) {
-    ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter);
-    if (!e)
-      break;
-    if (e->allocDefaultAtts != 0)
-      ms->free_fcn(e->defaultAtts);
-  }
-  hashTableClear(&(p->generalEntities));
-#ifdef XML_DTD
-  p->paramEntityRead = XML_FALSE;
-  hashTableClear(&(p->paramEntities));
-#endif /* XML_DTD */
-  hashTableClear(&(p->elementTypes));
-  hashTableClear(&(p->attributeIds));
-  hashTableClear(&(p->prefixes));
-  poolClear(&(p->pool));
-  poolClear(&(p->entityValuePool));
-  p->defaultPrefix.name = NULL;
-  p->defaultPrefix.binding = NULL;
-
-  p->in_eldecl = XML_FALSE;
-
-  ms->free_fcn(p->scaffIndex);
-  p->scaffIndex = NULL;
-  ms->free_fcn(p->scaffold);
-  p->scaffold = NULL;
-
-  p->scaffLevel = 0;
-  p->scaffSize = 0;
-  p->scaffCount = 0;
-  p->contentStringLen = 0;
-
-  p->keepProcessing = XML_TRUE;
-  p->hasParamEntityRefs = XML_FALSE;
-  p->standalone = XML_FALSE;
-}
-
-static void
-dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms)
-{
-  HASH_TABLE_ITER iter;
-  hashTableIterInit(&iter, &(p->elementTypes));
-  for (;;) {
-    ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter);
-    if (!e)
-      break;
-    if (e->allocDefaultAtts != 0)
-      ms->free_fcn(e->defaultAtts);
-  }
-  hashTableDestroy(&(p->generalEntities));
-#ifdef XML_DTD
-  hashTableDestroy(&(p->paramEntities));
-#endif /* XML_DTD */
-  hashTableDestroy(&(p->elementTypes));
-  hashTableDestroy(&(p->attributeIds));
-  hashTableDestroy(&(p->prefixes));
-  poolDestroy(&(p->pool));
-  poolDestroy(&(p->entityValuePool));
-  if (isDocEntity) {
-    ms->free_fcn(p->scaffIndex);
-    ms->free_fcn(p->scaffold);
-  }
-  ms->free_fcn(p);
-}
-
-/* Do a deep copy of the DTD. Return 0 for out of memory, non-zero otherwise.
-   The new DTD has already been initialized.
-*/
-static int
-dtdCopy(DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms)
-{
-  HASH_TABLE_ITER iter;
-
-  /* Copy the prefix table. */
-
-  hashTableIterInit(&iter, &(oldDtd->prefixes));
-  for (;;) {
-    const XML_Char *name;
-    const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter);
-    if (!oldP)
-      break;
-    name = poolCopyString(&(newDtd->pool), oldP->name);
-    if (!name)
-      return 0;
-    if (!lookup(&(newDtd->prefixes), name, sizeof(PREFIX)))
-      return 0;
-  }
-
-  hashTableIterInit(&iter, &(oldDtd->attributeIds));
-
-  /* Copy the attribute id table. */
-
-  for (;;) {
-    ATTRIBUTE_ID *newA;
-    const XML_Char *name;
-    const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter);
-
-    if (!oldA)
-      break;
-    /* Remember to allocate the scratch byte before the name. */
-    if (!poolAppendChar(&(newDtd->pool), XML_T('\0')))
-      return 0;
-    name = poolCopyString(&(newDtd->pool), oldA->name);
-    if (!name)
-      return 0;
-    ++name;
-    newA = (ATTRIBUTE_ID *)lookup(&(newDtd->attributeIds), name,
-                                  sizeof(ATTRIBUTE_ID));
-    if (!newA)
-      return 0;
-    newA->maybeTokenized = oldA->maybeTokenized;
-    if (oldA->prefix) {
-      newA->xmlns = oldA->xmlns;
-      if (oldA->prefix == &oldDtd->defaultPrefix)
-        newA->prefix = &newDtd->defaultPrefix;
-      else
-        newA->prefix = (PREFIX *)lookup(&(newDtd->prefixes),
-                                        oldA->prefix->name, 0);
-    }
-  }
-
-  /* Copy the element type table. */
-
-  hashTableIterInit(&iter, &(oldDtd->elementTypes));
-
-  for (;;) {
-    int i;
-    ELEMENT_TYPE *newE;
-    const XML_Char *name;
-    const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter);
-    if (!oldE)
-      break;
-    name = poolCopyString(&(newDtd->pool), oldE->name);
-    if (!name)
-      return 0;
-    newE = (ELEMENT_TYPE *)lookup(&(newDtd->elementTypes), name,
-                                  sizeof(ELEMENT_TYPE));
-    if (!newE)
-      return 0;
-    if (oldE->nDefaultAtts) {
-      newE->defaultAtts = (DEFAULT_ATTRIBUTE *)
-          ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE));
-      if (!newE->defaultAtts) {
-        ms->free_fcn(newE);
-        return 0;
-      }
-    }
-    if (oldE->idAtt)
-      newE->idAtt = (ATTRIBUTE_ID *)
-          lookup(&(newDtd->attributeIds), oldE->idAtt->name, 0);
-    newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts;
-    if (oldE->prefix)
-      newE->prefix = (PREFIX *)lookup(&(newDtd->prefixes),
-                                      oldE->prefix->name, 0);
-    for (i = 0; i < newE->nDefaultAtts; i++) {
-      newE->defaultAtts[i].id = (ATTRIBUTE_ID *)
-          lookup(&(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0);
-      newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata;
-      if (oldE->defaultAtts[i].value) {
-        newE->defaultAtts[i].value
-            = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value);
-        if (!newE->defaultAtts[i].value)
-          return 0;
-      }
-      else
-        newE->defaultAtts[i].value = NULL;
-    }
-  }
-
-  /* Copy the entity tables. */
-  if (!copyEntityTable(&(newDtd->generalEntities),
-                       &(newDtd->pool),
-                       &(oldDtd->generalEntities)))
-      return 0;
-
-#ifdef XML_DTD
-  if (!copyEntityTable(&(newDtd->paramEntities),
-                       &(newDtd->pool),
-                       &(oldDtd->paramEntities)))
-      return 0;
-  newDtd->paramEntityRead = oldDtd->paramEntityRead;
-#endif /* XML_DTD */
-
-  newDtd->keepProcessing = oldDtd->keepProcessing;
-  newDtd->hasParamEntityRefs = oldDtd->hasParamEntityRefs;
-  newDtd->standalone = oldDtd->standalone;
-
-  /* Don't want deep copying for scaffolding */
-  newDtd->in_eldecl = oldDtd->in_eldecl;
-  newDtd->scaffold = oldDtd->scaffold;
-  newDtd->contentStringLen = oldDtd->contentStringLen;
-  newDtd->scaffSize = oldDtd->scaffSize;
-  newDtd->scaffLevel = oldDtd->scaffLevel;
-  newDtd->scaffIndex = oldDtd->scaffIndex;
-
-  return 1;
-}  /* End dtdCopy */
-
-static int
-copyEntityTable(HASH_TABLE *newTable,
-                STRING_POOL *newPool,
-                const HASH_TABLE *oldTable)
-{
-  HASH_TABLE_ITER iter;
-  const XML_Char *cachedOldBase = NULL;
-  const XML_Char *cachedNewBase = NULL;
-
-  hashTableIterInit(&iter, oldTable);
-
-  for (;;) {
-    ENTITY *newE;
-    const XML_Char *name;
-    const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter);
-    if (!oldE)
-      break;
-    name = poolCopyString(newPool, oldE->name);
-    if (!name)
-      return 0;
-    newE = (ENTITY *)lookup(newTable, name, sizeof(ENTITY));
-    if (!newE)
-      return 0;
-    if (oldE->systemId) {
-      const XML_Char *tem = poolCopyString(newPool, oldE->systemId);
-      if (!tem)
-        return 0;
-      newE->systemId = tem;
-      if (oldE->base) {
-        if (oldE->base == cachedOldBase)
-          newE->base = cachedNewBase;
-        else {
-          cachedOldBase = oldE->base;
-          tem = poolCopyString(newPool, cachedOldBase);
-          if (!tem)
-            return 0;
-          cachedNewBase = newE->base = tem;
-        }
-      }
-      if (oldE->publicId) {
-        tem = poolCopyString(newPool, oldE->publicId);
-        if (!tem)
-          return 0;
-        newE->publicId = tem;
-      }
-    }
-    else {
-      const XML_Char *tem = poolCopyStringN(newPool, oldE->textPtr,
-                                            oldE->textLen);
-      if (!tem)
-        return 0;
-      newE->textPtr = tem;
-      newE->textLen = oldE->textLen;
-    }
-    if (oldE->notation) {
-      const XML_Char *tem = poolCopyString(newPool, oldE->notation);
-      if (!tem)
-        return 0;
-      newE->notation = tem;
-    }
-    newE->is_param = oldE->is_param;
-    newE->is_internal = oldE->is_internal;
-  }
-  return 1;
-}
-
-#define INIT_POWER 6
-
-static XML_Bool FASTCALL
-keyeq(KEY s1, KEY s2)
-{
-  for (; *s1 == *s2; s1++, s2++)
-    if (*s1 == 0)
-      return XML_TRUE;
-  return XML_FALSE;
-}
-
-static unsigned long FASTCALL
-hash(KEY s)
-{
-  unsigned long h = 0;
-  while (*s)
-    h = CHAR_HASH(h, *s++);
-  return h;
-}
-
-static NAMED *
-lookup(HASH_TABLE *table, KEY name, size_t createSize)
-{
-  size_t i;
-  if (table->size == 0) {
-    size_t tsize;
-    if (!createSize)
-      return NULL;
-    table->power = INIT_POWER;
-    /* table->size is a power of 2 */
-    table->size = (size_t)1 << INIT_POWER;
-    tsize = table->size * sizeof(NAMED *);
-    table->v = (NAMED **)table->mem->malloc_fcn(tsize);
-    if (!table->v) {
-      table->size = 0;
-      return NULL;
-    }
-    memset(table->v, 0, tsize);
-    i = hash(name) & ((unsigned long)table->size - 1);
-  }
-  else {
-    unsigned long h = hash(name);
-    unsigned long mask = (unsigned long)table->size - 1;
-    unsigned char step = 0;
-    i = h & mask;
-    while (table->v[i]) {
-      if (keyeq(name, table->v[i]->name))
-        return table->v[i];
-      if (!step)
-        step = PROBE_STEP(h, mask, table->power);
-      i < step ? (i += table->size - step) : (i -= step);
-    }
-    if (!createSize)
-      return NULL;
-
-    /* check for overflow (table is half full) */
-    if (table->used >> (table->power - 1)) {
-      unsigned char newPower = table->power + 1;
-      size_t newSize = (size_t)1 << newPower;
-      unsigned long newMask = (unsigned long)newSize - 1;
-      size_t tsize = newSize * sizeof(NAMED *);
-      NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize);
-      if (!newV)
-        return NULL;
-      memset(newV, 0, tsize);
-      for (i = 0; i < table->size; i++)
-        if (table->v[i]) {
-          unsigned long newHash = hash(table->v[i]->name);
-          size_t j = newHash & newMask;
-          step = 0;
-          while (newV[j]) {
-            if (!step)
-              step = PROBE_STEP(newHash, newMask, newPower);
-            j < step ? (j += newSize - step) : (j -= step);
-          }
-          newV[j] = table->v[i];
-        }
-      table->mem->free_fcn(table->v);
-      table->v = newV;
-      table->power = newPower;
-      table->size = newSize;
-      i = h & newMask;
-      step = 0;
-      while (table->v[i]) {
-        if (!step)
-          step = PROBE_STEP(h, newMask, newPower);
-        i < step ? (i += newSize - step) : (i -= step);
-      }
-    }
-  }
-  table->v[i] = (NAMED *)table->mem->malloc_fcn(createSize);
-  if (!table->v[i])
-    return NULL;
-  memset(table->v[i], 0, createSize);
-  table->v[i]->name = name;
-  (table->used)++;
-  return table->v[i];
-}
-
-static void FASTCALL
-hashTableClear(HASH_TABLE *table)
-{
-  size_t i;
-  for (i = 0; i < table->size; i++) {
-    table->mem->free_fcn(table->v[i]);
-    table->v[i] = NULL;
-  }
-  table->used = 0;
-}
-
-static void FASTCALL
-hashTableDestroy(HASH_TABLE *table)
-{
-  size_t i;
-  for (i = 0; i < table->size; i++)
-    table->mem->free_fcn(table->v[i]);
-  table->mem->free_fcn(table->v);
-}
-
-static void FASTCALL
-hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms)
-{
-  p->power = 0;
-  p->size = 0;
-  p->used = 0;
-  p->v = NULL;
-  p->mem = ms;
-}
-
-static void FASTCALL
-hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table)
-{
-  iter->p = table->v;
-  iter->end = iter->p + table->size;
-}
-
-static NAMED * FASTCALL
-hashTableIterNext(HASH_TABLE_ITER *iter)
-{
-  while (iter->p != iter->end) {
-    NAMED *tem = *(iter->p)++;
-    if (tem)
-      return tem;
-  }
-  return NULL;
-}
-
-static void FASTCALL
-poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms)
-{
-  pool->blocks = NULL;
-  pool->freeBlocks = NULL;
-  pool->start = NULL;
-  pool->ptr = NULL;
-  pool->end = NULL;
-  pool->mem = ms;
-}
-
-static void FASTCALL
-poolClear(STRING_POOL *pool)
-{
-  if (!pool->freeBlocks)
-    pool->freeBlocks = pool->blocks;
-  else {
-    BLOCK *p = pool->blocks;
-    while (p) {
-      BLOCK *tem = p->next;
-      p->next = pool->freeBlocks;
-      pool->freeBlocks = p;
-      p = tem;
-    }
-  }
-  pool->blocks = NULL;
-  pool->start = NULL;
-  pool->ptr = NULL;
-  pool->end = NULL;
-}
-
-static void FASTCALL
-poolDestroy(STRING_POOL *pool)
-{
-  BLOCK *p = pool->blocks;
-  while (p) {
-    BLOCK *tem = p->next;
-    pool->mem->free_fcn(p);
-    p = tem;
-  }
-  p = pool->freeBlocks;
-  while (p) {
-    BLOCK *tem = p->next;
-    pool->mem->free_fcn(p);
-    p = tem;
-  }
-}
-
-static XML_Char *
-poolAppend(STRING_POOL *pool, const ENCODING *enc,
-           const char *ptr, const char *end)
-{
-  if (!pool->ptr && !poolGrow(pool))
-    return NULL;
-  for (;;) {
-    XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end);
-    if (ptr == end)
-      break;
-    if (!poolGrow(pool))
-      return NULL;
-  }
-  return pool->start;
-}
-
-static const XML_Char * FASTCALL
-poolCopyString(STRING_POOL *pool, const XML_Char *s)
-{
-  do {
-    if (!poolAppendChar(pool, *s))
-      return NULL;
-  } while (*s++);
-  s = pool->start;
-  poolFinish(pool);
-  return s;
-}
-
-static const XML_Char *
-poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n)
-{
-  if (!pool->ptr && !poolGrow(pool))
-    return NULL;
-  for (; n > 0; --n, s++) {
-    if (!poolAppendChar(pool, *s))
-      return NULL;
-  }
-  s = pool->start;
-  poolFinish(pool);
-  return s;
-}
-
-static const XML_Char * FASTCALL
-poolAppendString(STRING_POOL *pool, const XML_Char *s)
-{
-  while (*s) {
-    if (!poolAppendChar(pool, *s))
-      return NULL;
-    s++;
-  }
-  return pool->start;
-}
-
-static XML_Char *
-poolStoreString(STRING_POOL *pool, const ENCODING *enc,
-                const char *ptr, const char *end)
-{
-  if (!poolAppend(pool, enc, ptr, end))
-    return NULL;
-  if (pool->ptr == pool->end && !poolGrow(pool))
-    return NULL;
-  *(pool->ptr)++ = 0;
-  return pool->start;
-}
-
-static XML_Bool FASTCALL
-poolGrow(STRING_POOL *pool)
-{
-  if (pool->freeBlocks) {
-    if (pool->start == 0) {
-      pool->blocks = pool->freeBlocks;
-      pool->freeBlocks = pool->freeBlocks->next;
-      pool->blocks->next = NULL;
-      pool->start = pool->blocks->s;
-      pool->end = pool->start + pool->blocks->size;
-      pool->ptr = pool->start;
-      return XML_TRUE;
-    }
-    if (pool->end - pool->start < pool->freeBlocks->size) {
-      BLOCK *tem = pool->freeBlocks->next;
-      pool->freeBlocks->next = pool->blocks;
-      pool->blocks = pool->freeBlocks;
-      pool->freeBlocks = tem;
-      memcpy(pool->blocks->s, pool->start,
-             (pool->end - pool->start) * sizeof(XML_Char));
-      pool->ptr = pool->blocks->s + (pool->ptr - pool->start);
-      pool->start = pool->blocks->s;
-      pool->end = pool->start + pool->blocks->size;
-      return XML_TRUE;
-    }
-  }
-  if (pool->blocks && pool->start == pool->blocks->s) {
-    int blockSize = (int)(pool->end - pool->start)*2;
-    pool->blocks = (BLOCK *)
-      pool->mem->realloc_fcn(pool->blocks,
-                             (offsetof(BLOCK, s)
-                              + blockSize * sizeof(XML_Char)));
-    if (pool->blocks == NULL)
-      return XML_FALSE;
-    pool->blocks->size = blockSize;
-    pool->ptr = pool->blocks->s + (pool->ptr - pool->start);
-    pool->start = pool->blocks->s;
-    pool->end = pool->start + blockSize;
-  }
-  else {
-    BLOCK *tem;
-    int blockSize = (int)(pool->end - pool->start);
-    if (blockSize < INIT_BLOCK_SIZE)
-      blockSize = INIT_BLOCK_SIZE;
-    else
-      blockSize *= 2;
-    tem = (BLOCK *)pool->mem->malloc_fcn(offsetof(BLOCK, s)
-                                        + blockSize * sizeof(XML_Char));
-    if (!tem)
-      return XML_FALSE;
-    tem->size = blockSize;
-    tem->next = pool->blocks;
-    pool->blocks = tem;
-    if (pool->ptr != pool->start)
-      memcpy(tem->s, pool->start,
-             (pool->ptr - pool->start) * sizeof(XML_Char));
-    pool->ptr = tem->s + (pool->ptr - pool->start);
-    pool->start = tem->s;
-    pool->end = tem->s + blockSize;
-  }
-  return XML_TRUE;
-}
-
-static int FASTCALL
-nextScaffoldPart(XML_Parser parser)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  CONTENT_SCAFFOLD * me;
-  int next;
-
-  if (!dtd->scaffIndex) {
-    dtd->scaffIndex = (int *)MALLOC(groupSize * sizeof(int));
-    if (!dtd->scaffIndex)
-      return -1;
-    dtd->scaffIndex[0] = 0;
-  }
-
-  if (dtd->scaffCount >= dtd->scaffSize) {
-    CONTENT_SCAFFOLD *temp;
-    if (dtd->scaffold) {
-      temp = (CONTENT_SCAFFOLD *)
-        REALLOC(dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD));
-      if (temp == NULL)
-        return -1;
-      dtd->scaffSize *= 2;
-    }
-    else {
-      temp = (CONTENT_SCAFFOLD *)MALLOC(INIT_SCAFFOLD_ELEMENTS
-                                        * sizeof(CONTENT_SCAFFOLD));
-      if (temp == NULL)
-        return -1;
-      dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS;
-    }
-    dtd->scaffold = temp;
-  }
-  next = dtd->scaffCount++;
-  me = &dtd->scaffold[next];
-  if (dtd->scaffLevel) {
-    CONTENT_SCAFFOLD *parent = &dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel-1]];
-    if (parent->lastchild) {
-      dtd->scaffold[parent->lastchild].nextsib = next;
-    }
-    if (!parent->childcnt)
-      parent->firstchild = next;
-    parent->lastchild = next;
-    parent->childcnt++;
-  }
-  me->firstchild = me->lastchild = me->childcnt = me->nextsib = 0;
-  return next;
-}
-
-static void
-build_node(XML_Parser parser,
-           int src_node,
-           XML_Content *dest,
-           XML_Content **contpos,
-           XML_Char **strpos)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  dest->type = dtd->scaffold[src_node].type;
-  dest->quant = dtd->scaffold[src_node].quant;
-  if (dest->type == XML_CTYPE_NAME) {
-    const XML_Char *src;
-    dest->name = *strpos;
-    src = dtd->scaffold[src_node].name;
-    for (;;) {
-      *(*strpos)++ = *src;
-      if (!*src)
-        break;
-      src++;
-    }
-    dest->numchildren = 0;
-    dest->children = NULL;
-  }
-  else {
-    unsigned int i;
-    int cn;
-    dest->numchildren = dtd->scaffold[src_node].childcnt;
-    dest->children = *contpos;
-    *contpos += dest->numchildren;
-    for (i = 0, cn = dtd->scaffold[src_node].firstchild;
-         i < dest->numchildren;
-         i++, cn = dtd->scaffold[cn].nextsib) {
-      build_node(parser, cn, &(dest->children[i]), contpos, strpos);
-    }
-    dest->name = NULL;
-  }
-}
-
-static XML_Content *
-build_model (XML_Parser parser)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  XML_Content *ret;
-  XML_Content *cpos;
-  XML_Char * str;
-  int allocsize = (dtd->scaffCount * sizeof(XML_Content)
-                   + (dtd->contentStringLen * sizeof(XML_Char)));
-
-  ret = (XML_Content *)MALLOC(allocsize);
-  if (!ret)
-    return NULL;
-
-  str =  (XML_Char *) (&ret[dtd->scaffCount]);
-  cpos = &ret[1];
-
-  build_node(parser, 0, ret, &cpos, &str);
-  return ret;
-}
-
-static ELEMENT_TYPE *
-getElementType(XML_Parser parser,
-               const ENCODING *enc,
-               const char *ptr,
-               const char *end)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end);
-  ELEMENT_TYPE *ret;
-
-  if (!name)
-    return NULL;
-  ret = (ELEMENT_TYPE *) lookup(&dtd->elementTypes, name, sizeof(ELEMENT_TYPE));
-  if (!ret)
-    return NULL;
-  if (ret->name != name)
-    poolDiscard(&dtd->pool);
-  else {
-    poolFinish(&dtd->pool);
-    if (!setElementTypePrefix(parser, ret))
-      return NULL;
-  }
-  return ret;
-}
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/main.c b/AppPkg/Applications/Python/PyMod-2.7.2/Modules/main.c
deleted file mode 100644
index 4b3ce11..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/main.c
+++ /dev/null
@@ -1,678 +0,0 @@
-/** @file
-  Python interpreter main program.
-
-  Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
-**/
-
-#include "Python.h"
-#include "osdefs.h"
-#include "code.h" /* For CO_FUTURE_DIVISION */
-#include "import.h"
-
-#ifdef __VMS
-#include <unixlib.h>
-#endif
-
-#if defined(MS_WINDOWS) || defined(__CYGWIN__)
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#endif
-
-#if (defined(PYOS_OS2) && !defined(PYCC_GCC)) || defined(MS_WINDOWS)
-#define PYTHONHOMEHELP "<prefix>\\lib"
-#else
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-#define PYTHONHOMEHELP "<prefix>/Lib"
-#else
-#define PYTHONHOMEHELP "<prefix>/pythonX.X"
-#endif
-#endif
-
-#include "pygetopt.h"
-
-#define COPYRIGHT \
-    "Type \"help\", \"copyright\", \"credits\" or \"license\" " \
-    "for more information."
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* For Py_GetArgcArgv(); set by main() */
-static char **orig_argv;
-static int  orig_argc;
-
-/* command line options */
-#define BASE_OPTS "#3bBc:dEhiJm:OQ:sStuUvVW:xX?"
-
-#ifndef RISCOS
-#define PROGRAM_OPTS BASE_OPTS
-#else /*RISCOS*/
-/* extra option saying that we are running under a special task window
-   frontend; especially my_readline will behave different */
-#define PROGRAM_OPTS BASE_OPTS "w"
-/* corresponding flag */
-extern int Py_RISCOSWimpFlag;
-#endif /*RISCOS*/
-
-/* Short usage message (with %s for argv0) */
-static char *usage_line =
-"usage: %s [option] ... [-c cmd | -m mod | file | -] [arg] ...\n";
-
-/* Long usage message, split into parts < 512 bytes */
-static char *usage_1 = "\
-Options and arguments (and corresponding environment variables):\n\
--#     : alias stderr to stdout for platforms without STDERR output.\n\
--B     : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x\n\
--c cmd : program passed in as string (terminates option list)\n\
--d     : debug output from parser; also PYTHONDEBUG=x\n\
--E     : ignore PYTHON* environment variables (such as PYTHONPATH)\n\
--h     : print this help message and exit (also --help)\n\
--i     : inspect interactively after running script; forces a prompt even\n\
-";
-static char *usage_2 = "\
-         if stdin does not appear to be a terminal; also PYTHONINSPECT=x\n\
--m mod : run library module as a script (terminates option list)\n\
--O     : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x\n\
--OO    : remove doc-strings in addition to the -O optimizations\n\
--Q arg : division options: -Qold (default), -Qwarn, -Qwarnall, -Qnew\n\
--s     : don't add user site directory to sys.path; also PYTHONNOUSERSITE\n\
--S     : don't imply 'import site' on initialization\n\
--t     : issue warnings about inconsistent tab usage (-tt: issue errors)\n\
-";
-static char *usage_3 = "\
--u     : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x\n\
-         see man page for details on internal buffering relating to '-u'\n\
--v     : verbose (trace import statements); also PYTHONVERBOSE=x\n\
-         can be supplied multiple times to increase verbosity\n\
--V     : print the Python version number and exit (also --version)\n\
--W arg : warning control; arg is action:message:category:module:lineno\n\
-         also PYTHONWARNINGS=arg\n\
--x     : skip first line of source, allowing use of non-Unix forms of #!cmd\n\
-";
-static char *usage_4 = "\
--3     : warn about Python 3.x incompatibilities that 2to3 cannot trivially fix\n\
-file   : program read from script file\n\
--      : program read from stdin (default; interactive mode if a tty)\n\
-arg ...: arguments passed to program in sys.argv[1:]\n\n\
-Other environment variables:\n\
-PYTHONSTARTUP: file executed on interactive startup (no default)\n\
-PYTHONPATH   : '%c'-separated list of directories prefixed to the\n\
-               default module search path.  The result is sys.path.\n\
-";
-static char *usage_5 = "\
-PYTHONHOME   : alternate <prefix> directory (or <prefix>%c<exec_prefix>).\n\
-               The default module search path uses %s.\n\
-PYTHONCASEOK : ignore case in 'import' statements (UEFI default).\n\
-PYTHONIOENCODING: Encoding[:errors] used for stdin/stdout/stderr.\n\
-";
-
-
-static int
-usage(int exitcode, char* program)
-{
-    FILE *f = exitcode ? stderr : stdout;
-
-    fprintf(f, usage_line, program);
-    if (exitcode)
-        fprintf(f, "Try `python -h' for more information.\n");
-    else {
-        fputs(usage_1, f);
-        fputs(usage_2, f);
-        fputs(usage_3, f);
-        fprintf(f, usage_4, DELIM);
-        fprintf(f, usage_5, DELIM, PYTHONHOMEHELP);
-    }
-#if defined(__VMS)
-    if (exitcode == 0) {
-        /* suppress 'error' message */
-        return 1;
-    }
-    else {
-        /* STS$M_INHIB_MSG + SS$_ABORT */
-        return 0x1000002c;
-    }
-#else
-    return exitcode;
-#endif
-    /*NOTREACHED*/
-}
-
-static void RunStartupFile(PyCompilerFlags *cf)
-{
-    char *startup = Py_GETENV("PYTHONSTARTUP");
-    if (startup != NULL && startup[0] != '\0') {
-        FILE *fp = fopen(startup, "r");
-        if (fp != NULL) {
-            (void) PyRun_SimpleFileExFlags(fp, startup, 0, cf);
-            PyErr_Clear();
-            fclose(fp);
-           } else {
-                    int save_errno;
-                    save_errno = errno;
-                    PySys_WriteStderr("Could not open PYTHONSTARTUP\n");
-                    errno = save_errno;
-                    PyErr_SetFromErrnoWithFilename(PyExc_IOError,
-                                                   startup);
-                    PyErr_Print();
-                    PyErr_Clear();
-        }
-    }
-}
-
-
-static int RunModule(char *module, int set_argv0)
-{
-    PyObject *runpy, *runmodule, *runargs, *result;
-    runpy = PyImport_ImportModule("runpy");
-    if (runpy == NULL) {
-        fprintf(stderr, "Could not import runpy module\n");
-        return -1;
-    }
-    runmodule = PyObject_GetAttrString(runpy, "_run_module_as_main");
-    if (runmodule == NULL) {
-        fprintf(stderr, "Could not access runpy._run_module_as_main\n");
-        Py_DECREF(runpy);
-        return -1;
-    }
-    runargs = Py_BuildValue("(si)", module, set_argv0);
-    if (runargs == NULL) {
-        fprintf(stderr,
-            "Could not create arguments for runpy._run_module_as_main\n");
-        Py_DECREF(runpy);
-        Py_DECREF(runmodule);
-        return -1;
-    }
-    result = PyObject_Call(runmodule, runargs, NULL);
-    if (result == NULL) {
-        PyErr_Print();
-    }
-    Py_DECREF(runpy);
-    Py_DECREF(runmodule);
-    Py_DECREF(runargs);
-    if (result == NULL) {
-        return -1;
-    }
-    Py_DECREF(result);
-    return 0;
-}
-
-static int RunMainFromImporter(char *filename)
-{
-    PyObject *argv0 = NULL, *importer = NULL;
-
-    if ((argv0 = PyString_FromString(filename)) &&
-        (importer = PyImport_GetImporter(argv0)) &&
-        (importer->ob_type != &PyNullImporter_Type))
-    {
-             /* argv0 is usable as an import source, so
-                    put it in sys.path[0] and import __main__ */
-        PyObject *sys_path = NULL;
-        if ((sys_path = PySys_GetObject("path")) &&
-            !PyList_SetItem(sys_path, 0, argv0))
-        {
-            Py_INCREF(argv0);
-            Py_DECREF(importer);
-            sys_path = NULL;
-            return RunModule("__main__", 0) != 0;
-        }
-    }
-    Py_XDECREF(argv0);
-    Py_XDECREF(importer);
-    if (PyErr_Occurred()) {
-        PyErr_Print();
-        return 1;
-    }
-    return -1;
-}
-
-
-/* Main program */
-
-int
-Py_Main(int argc, char **argv)
-{
-    int c;
-    int sts;
-    char *command = NULL;
-    char *filename = NULL;
-    char *module = NULL;
-    FILE *fp = stdin;
-    char *p;
-    int unbuffered = 0;
-    int skipfirstline = 0;
-    int stdin_is_interactive = 0;
-    int help = 0;
-    int version = 0;
-    int saw_unbuffered_flag = 0;
-    int saw_pound_flag = 0;
-    PyCompilerFlags cf;
-
-    cf.cf_flags = 0;
-
-    orig_argc = argc;           /* For Py_GetArgcArgv() */
-    orig_argv = argv;
-
-#ifdef RISCOS
-    Py_RISCOSWimpFlag = 0;
-#endif
-
-    PySys_ResetWarnOptions();
-
-    while ((c = _PyOS_GetOpt(argc, argv, PROGRAM_OPTS)) != EOF) {
-        if (c == 'c') {
-            /* -c is the last option; following arguments
-               that look like options are left for the
-               command to interpret. */
-            command = (char *)malloc(strlen(_PyOS_optarg) + 2);
-            if (command == NULL)
-                Py_FatalError(
-                   "not enough memory to copy -c argument");
-            strcpy(command, _PyOS_optarg);
-            strcat(command, "\n");
-            break;
-        }
-
-        if (c == 'm') {
-            /* -m is the last option; following arguments
-               that look like options are left for the
-               module to interpret. */
-            module = (char *)malloc(strlen(_PyOS_optarg) + 2);
-            if (module == NULL)
-                Py_FatalError(
-                   "not enough memory to copy -m argument");
-            strcpy(module, _PyOS_optarg);
-            break;
-        }
-
-        switch (c) {
-        case 'b':
-            Py_BytesWarningFlag++;
-            break;
-
-        case 'd':
-            Py_DebugFlag++;
-            break;
-
-        case '3':
-            Py_Py3kWarningFlag++;
-            if (!Py_DivisionWarningFlag)
-                Py_DivisionWarningFlag = 1;
-            break;
-
-        case 'Q':
-            if (strcmp(_PyOS_optarg, "old") == 0) {
-                Py_DivisionWarningFlag = 0;
-                break;
-            }
-            if (strcmp(_PyOS_optarg, "warn") == 0) {
-                Py_DivisionWarningFlag = 1;
-                break;
-            }
-            if (strcmp(_PyOS_optarg, "warnall") == 0) {
-                Py_DivisionWarningFlag = 2;
-                break;
-            }
-            if (strcmp(_PyOS_optarg, "new") == 0) {
-                /* This only affects __main__ */
-                cf.cf_flags |= CO_FUTURE_DIVISION;
-                /* And this tells the eval loop to treat
-                   BINARY_DIVIDE as BINARY_TRUE_DIVIDE */
-                _Py_QnewFlag = 1;
-                break;
-            }
-            fprintf(stderr,
-                "-Q option should be `-Qold', "
-                "`-Qwarn', `-Qwarnall', or `-Qnew' only\n");
-            return usage(2, argv[0]);
-            /* NOTREACHED */
-
-        case 'i':
-            Py_InspectFlag++;
-            Py_InteractiveFlag++;
-            break;
-
-        /* case 'J': reserved for Jython */
-
-        case 'O':
-            Py_OptimizeFlag++;
-            break;
-
-        case 'B':
-            Py_DontWriteBytecodeFlag++;
-            break;
-
-        case 's':
-            Py_NoUserSiteDirectory++;
-            break;
-
-        case 'S':
-            Py_NoSiteFlag++;
-            break;
-
-        case 'E':
-          Py_IgnoreEnvironmentFlag++;
-          break;
-
-        case 't':
-            Py_TabcheckFlag++;
-            break;
-
-        case 'u':
-            unbuffered++;
-            saw_unbuffered_flag = 1;
-            break;
-
-        case 'v':
-            Py_VerboseFlag++;
-            break;
-
-#ifdef RISCOS
-        case 'w':
-            Py_RISCOSWimpFlag = 1;
-            break;
-#endif
-
-        case 'x':
-            skipfirstline = 1;
-            break;
-
-        /* case 'X': reserved for implementation-specific arguments */
-
-        case 'U':
-            Py_UnicodeFlag++;
-            break;
-        case 'h':
-        case '?':
-            help++;
-            break;
-        case 'V':
-            version++;
-            break;
-
-        case 'W':
-            PySys_AddWarnOption(_PyOS_optarg);
-            break;
-
-        case '#':
-          if (saw_pound_flag == 0) {
-            if(freopen("stdout:", "w", stderr) == NULL) {
-              puts("ERROR: Unable to reopen stderr as an alias to stdout!");
-            }
-            saw_pound_flag = 0xFF;
-          }
-          break;
-
-        /* This space reserved for other options */
-
-        default:
-            return usage(2, argv[0]);
-            /*NOTREACHED*/
-
-        }
-    }
-
-    if (help)
-        return usage(0, argv[0]);
-
-    if (version) {
-        fprintf(stderr, "Python %s\n", PY_VERSION);
-        return 0;
-    }
-
-    if (Py_Py3kWarningFlag && !Py_TabcheckFlag)
-        /* -3 implies -t (but not -tt) */
-        Py_TabcheckFlag = 1;
-
-    if (!Py_InspectFlag &&
-        (p = Py_GETENV("PYTHONINSPECT")) && *p != '\0')
-        Py_InspectFlag = 1;
-    if (!saw_unbuffered_flag &&
-        (p = Py_GETENV("PYTHONUNBUFFERED")) && *p != '\0')
-        unbuffered = 1;
-
-    if (!Py_NoUserSiteDirectory &&
-        (p = Py_GETENV("PYTHONNOUSERSITE")) && *p != '\0')
-        Py_NoUserSiteDirectory = 1;
-
-    if ((p = Py_GETENV("PYTHONWARNINGS")) && *p != '\0') {
-        char *buf, *warning;
-
-        buf = (char *)malloc(strlen(p) + 1);
-        if (buf == NULL)
-            Py_FatalError(
-               "not enough memory to copy PYTHONWARNINGS");
-        strcpy(buf, p);
-        for (warning = strtok(buf, ",");
-             warning != NULL;
-             warning = strtok(NULL, ","))
-            PySys_AddWarnOption(warning);
-        free(buf);
-    }
-
-    if (command == NULL && module == NULL && _PyOS_optind < argc &&
-        strcmp(argv[_PyOS_optind], "-") != 0)
-    {
-#ifdef __VMS
-        filename = decc$translate_vms(argv[_PyOS_optind]);
-        if (filename == (char *)0 || filename == (char *)-1)
-            filename = argv[_PyOS_optind];
-
-#else
-        filename = argv[_PyOS_optind];
-#endif
-    }
-
-    stdin_is_interactive = Py_FdIsInteractive(stdin, (char *)0);
-
-    if (unbuffered) {
-#if defined(MS_WINDOWS) || defined(__CYGWIN__)
-        _setmode(fileno(stdin), O_BINARY);
-        _setmode(fileno(stdout), O_BINARY);
-#endif
-#ifdef HAVE_SETVBUF
-        setvbuf(stdin,  (char *)NULL, _IONBF, BUFSIZ);
-        setvbuf(stdout, (char *)NULL, _IONBF, BUFSIZ);
-        setvbuf(stderr, (char *)NULL, _IONBF, BUFSIZ);
-#else /* !HAVE_SETVBUF */
-        setbuf(stdin,  (char *)NULL);
-        setbuf(stdout, (char *)NULL);
-        setbuf(stderr, (char *)NULL);
-#endif /* !HAVE_SETVBUF */
-    }
-    else if (Py_InteractiveFlag) {
-#ifdef MS_WINDOWS
-        /* Doesn't have to have line-buffered -- use unbuffered */
-        /* Any set[v]buf(stdin, ...) screws up Tkinter :-( */
-        setvbuf(stdout, (char *)NULL, _IONBF, BUFSIZ);
-#else /* !MS_WINDOWS */
-#ifdef HAVE_SETVBUF
-        setvbuf(stdin,  (char *)NULL, _IOLBF, BUFSIZ);
-        setvbuf(stdout, (char *)NULL, _IOLBF, BUFSIZ);
-#endif /* HAVE_SETVBUF */
-#endif /* !MS_WINDOWS */
-        /* Leave stderr alone - it should be unbuffered anyway. */
-    }
-#ifdef __VMS
-    else {
-        setvbuf (stdout, (char *)NULL, _IOLBF, BUFSIZ);
-    }
-#endif /* __VMS */
-
-#ifdef __APPLE__
-    /* On MacOS X, when the Python interpreter is embedded in an
-       application bundle, it gets executed by a bootstrapping script
-       that does os.execve() with an argv[0] that's different from the
-       actual Python executable. This is needed to keep the Finder happy,
-       or rather, to work around Apple's overly strict requirements of
-       the process name. However, we still need a usable sys.executable,
-       so the actual executable path is passed in an environment variable.
-       See Lib/plat-mac/bundlebuiler.py for details about the bootstrap
-       script. */
-    if ((p = Py_GETENV("PYTHONEXECUTABLE")) && *p != '\0')
-        Py_SetProgramName(p);
-    else
-        Py_SetProgramName(argv[0]);
-#else
-    Py_SetProgramName(argv[0]);
-#endif
-    Py_Initialize();
-
-    if (Py_VerboseFlag ||
-        (command == NULL && filename == NULL && module == NULL && stdin_is_interactive)) {
-        fprintf(stderr, "Python %s on %s\n",
-            Py_GetVersion(), Py_GetPlatform());
-        if (!Py_NoSiteFlag)
-            fprintf(stderr, "%s\n", COPYRIGHT);
-    }
-
-    if (command != NULL) {
-        /* Backup _PyOS_optind and force sys.argv[0] = '-c' */
-        _PyOS_optind--;
-        argv[_PyOS_optind] = "-c";
-    }
-
-    if (module != NULL) {
-        /* Backup _PyOS_optind and force sys.argv[0] = '-c'
-           so that PySys_SetArgv correctly sets sys.path[0] to ''
-           rather than looking for a file called "-m". See
-           tracker issue #8202 for details. */
-        _PyOS_optind--;
-        argv[_PyOS_optind] = "-c";
-    }
-
-    PySys_SetArgv(argc-_PyOS_optind, argv+_PyOS_optind);
-
-    if ((Py_InspectFlag || (command == NULL && filename == NULL && module == NULL)) &&
-        isatty(fileno(stdin))) {
-        PyObject *v;
-        v = PyImport_ImportModule("readline");
-        if (v == NULL)
-            PyErr_Clear();
-        else
-            Py_DECREF(v);
-    }
-
-    if (command) {
-        sts = PyRun_SimpleStringFlags(command, &cf) != 0;
-        free(command);
-    } else if (module) {
-        sts = (RunModule(module, 1) != 0);
-        free(module);
-    }
-    else {
-
-        if (filename == NULL && stdin_is_interactive) {
-            Py_InspectFlag = 0; /* do exit on SystemExit */
-            RunStartupFile(&cf);
-        }
-        /* XXX */
-
-        sts = -1;               /* keep track of whether we've already run __main__ */
-
-        if (filename != NULL) {
-            sts = RunMainFromImporter(filename);
-        }
-
-        if (sts==-1 && filename!=NULL) {
-            if ((fp = fopen(filename, "r")) == NULL) {
-                fprintf(stderr, "%s: can't open file '%s': [Errno %d] %s\n",
-                    argv[0], filename, errno, strerror(errno));
-
-                return 2;
-            }
-            else if (skipfirstline) {
-                int ch;
-                /* Push back first newline so line numbers
-                   remain the same */
-                while ((ch = getc(fp)) != EOF) {
-                    if (ch == '\n') {
-                        (void)ungetc(ch, fp);
-                        break;
-                    }
-                }
-            }
-            {
-                /* XXX: does this work on Win/Win64? (see posix_fstat) */
-                struct stat sb;
-                if (fstat(fileno(fp), &sb) == 0 &&
-                    S_ISDIR(sb.st_mode)) {
-                    fprintf(stderr, "%s: '%s' is a directory, cannot continue\n", argv[0], filename);
-                    fclose(fp);
-                    return 1;
-                }
-            }
-        }
-
-        if (sts==-1) {
-            /* call pending calls like signal handlers (SIGINT) */
-            if (Py_MakePendingCalls() == -1) {
-                PyErr_Print();
-                sts = 1;
-            } else {
-                sts = PyRun_AnyFileExFlags(
-                    fp,
-                    filename == NULL ? "<stdin>" : filename,
-                    filename != NULL, &cf) != 0;
-            }
-        }
-
-    }
-
-    /* Check this environment variable at the end, to give programs the
-     * opportunity to set it from Python.
-     */
-    if (!Py_InspectFlag &&
-        (p = Py_GETENV("PYTHONINSPECT")) && *p != '\0')
-    {
-        Py_InspectFlag = 1;
-    }
-
-    if (Py_InspectFlag && stdin_is_interactive &&
-        (filename != NULL || command != NULL || module != NULL)) {
-        Py_InspectFlag = 0;
-        /* XXX */
-        sts = PyRun_AnyFileFlags(stdin, "<stdin>", &cf) != 0;
-    }
-
-    Py_Finalize();
-#ifdef RISCOS
-    if (Py_RISCOSWimpFlag)
-        fprintf(stderr, "\x0cq\x0c"); /* make frontend quit */
-#endif
-
-#ifdef __INSURE__
-    /* Insure++ is a memory analysis tool that aids in discovering
-     * memory leaks and other memory problems.  On Python exit, the
-     * interned string dictionary is flagged as being in use at exit
-     * (which it is).  Under normal circumstances, this is fine because
-     * the memory will be automatically reclaimed by the system.  Under
-     * memory debugging, it's a huge source of useless noise, so we
-     * trade off slower shutdown for less distraction in the memory
-     * reports.  -baw
-     */
-    _Py_ReleaseInternedStrings();
-#endif /* __INSURE__ */
-
-    return sts;
-}
-
-/* this is gonna seem *real weird*, but if you put some other code between
-   Py_Main() and Py_GetArgcArgv() you will need to adjust the test in the
-   while statement in Misc/gdbinit:ppystack */
-
-/* Make the *original* argc/argv available to other modules.
-   This is rare, but it is needed by the secureware extension. */
-
-void
-Py_GetArgcArgv(int *argc, char ***argv)
-{
-    *argc = orig_argc;
-    *argv = orig_argv;
-}
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/selectmodule.c b/AppPkg/Applications/Python/PyMod-2.7.2/Modules/selectmodule.c
deleted file mode 100644
index 81e5af8..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/selectmodule.c
+++ /dev/null
@@ -1,1912 +0,0 @@
-/* select - Module containing unix select(2) call.
-   Under Unix, the file descriptors are small integers.
-   Under Win32, select only exists for sockets, and sockets may
-   have any value except INVALID_SOCKET.
-   Under BeOS, we suffer the same dichotomy as Win32; sockets can be anything
-   >= 0.
-*/
-
-#include "Python.h"
-#include <structmember.h>
-
-#ifdef __APPLE__
-    /* Perform runtime testing for a broken poll on OSX to make it easier
-     * to use the same binary on multiple releases of the OS.
-     */
-#undef HAVE_BROKEN_POLL
-#endif
-
-/* Windows #defines FD_SETSIZE to 64 if FD_SETSIZE isn't already defined.
-   64 is too small (too many people have bumped into that limit).
-   Here we boost it.
-   Users who want even more than the boosted limit should #define
-   FD_SETSIZE higher before this; e.g., via compiler /D switch.
-*/
-#if defined(MS_WINDOWS) && !defined(FD_SETSIZE)
-#define FD_SETSIZE 512
-#endif
-
-#if defined(HAVE_POLL_H)
-#include <poll.h>
-#elif defined(HAVE_SYS_POLL_H)
-#include <sys/poll.h>
-#endif
-
-#ifdef __sgi
-/* This is missing from unistd.h */
-extern void bzero(void *, int);
-#endif
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-#if defined(PYOS_OS2) && !defined(PYCC_GCC)
-#include <sys/time.h>
-#include <utils.h>
-#endif
-
-#ifdef MS_WINDOWS
-#  include <winsock2.h>
-#else
-#  define SOCKET int
-#  ifdef __BEOS__
-#    include <net/socket.h>
-#  elif defined(__VMS)
-#    include <socket.h>
-#  endif
-#endif
-
-static PyObject *SelectError;
-
-/* list of Python objects and their file descriptor */
-typedef struct {
-    PyObject *obj;                           /* owned reference */
-    SOCKET fd;
-    int sentinel;                            /* -1 == sentinel */
-} pylist;
-
-static void
-reap_obj(pylist fd2obj[FD_SETSIZE + 1])
-{
-    int i;
-    for (i = 0; i < FD_SETSIZE + 1 && fd2obj[i].sentinel >= 0; i++) {
-        Py_XDECREF(fd2obj[i].obj);
-        fd2obj[i].obj = NULL;
-    }
-    fd2obj[0].sentinel = -1;
-}
-
-
-/* returns -1 and sets the Python exception if an error occurred, otherwise
-   returns a number >= 0
-*/
-static int
-seq2set(PyObject *seq, fd_set *set, pylist fd2obj[FD_SETSIZE + 1])
-{
-    int i;
-    int max = -1;
-    int index = 0;
-    int len = -1;
-    PyObject* fast_seq = NULL;
-    PyObject* o = NULL;
-
-    fd2obj[0].obj = (PyObject*)0;            /* set list to zero size */
-    FD_ZERO(set);
-
-    fast_seq = PySequence_Fast(seq, "arguments 1-3 must be sequences");
-    if (!fast_seq)
-        return -1;
-
-    len = PySequence_Fast_GET_SIZE(fast_seq);
-
-    for (i = 0; i < len; i++)  {
-        SOCKET v;
-
-        /* any intervening fileno() calls could decr this refcnt */
-        if (!(o = PySequence_Fast_GET_ITEM(fast_seq, i)))
-            return -1;
-
-        Py_INCREF(o);
-        v = PyObject_AsFileDescriptor( o );
-        if (v == -1) goto finally;
-
-#if defined(_MSC_VER) && !defined(UEFI_C_SOURCE)
-        max = 0;                             /* not used for Win32 */
-#else  /* !_MSC_VER */
-        if (v < 0 || v >= FD_SETSIZE) {
-            PyErr_SetString(PyExc_ValueError,
-                        "filedescriptor out of range in select()");
-            goto finally;
-        }
-        if (v > max)
-            max = v;
-#endif /* _MSC_VER */
-        FD_SET(v, set);
-
-        /* add object and its file descriptor to the list */
-        if (index >= FD_SETSIZE) {
-            PyErr_SetString(PyExc_ValueError,
-                          "too many file descriptors in select()");
-            goto finally;
-        }
-        fd2obj[index].obj = o;
-        fd2obj[index].fd = v;
-        fd2obj[index].sentinel = 0;
-        fd2obj[++index].sentinel = -1;
-    }
-    Py_DECREF(fast_seq);
-    return max+1;
-
-  finally:
-    Py_XDECREF(o);
-    Py_DECREF(fast_seq);
-    return -1;
-}
-
-/* returns NULL and sets the Python exception if an error occurred */
-static PyObject *
-set2list(fd_set *set, pylist fd2obj[FD_SETSIZE + 1])
-{
-    int i, j, count=0;
-    PyObject *list, *o;
-    SOCKET fd;
-
-    for (j = 0; fd2obj[j].sentinel >= 0; j++) {
-        if (FD_ISSET(fd2obj[j].fd, set))
-            count++;
-    }
-    list = PyList_New(count);
-    if (!list)
-        return NULL;
-
-    i = 0;
-    for (j = 0; fd2obj[j].sentinel >= 0; j++) {
-        fd = fd2obj[j].fd;
-        if (FD_ISSET(fd, set)) {
-#if !defined(_MSC_VER) || defined(UEFI_C_SOURCE)
-            if (fd > FD_SETSIZE) {
-                PyErr_SetString(PyExc_SystemError,
-               "filedescriptor out of range returned in select()");
-                goto finally;
-            }
-#endif
-            o = fd2obj[j].obj;
-            fd2obj[j].obj = NULL;
-            /* transfer ownership */
-            if (PyList_SetItem(list, i, o) < 0)
-                goto finally;
-
-            i++;
-        }
-    }
-    return list;
-  finally:
-    Py_DECREF(list);
-    return NULL;
-}
-
-#undef SELECT_USES_HEAP
-#if FD_SETSIZE > 1024
-#define SELECT_USES_HEAP
-#endif /* FD_SETSIZE > 1024 */
-
-static PyObject *
-select_select(PyObject *self, PyObject *args)
-{
-#ifdef SELECT_USES_HEAP
-    pylist *rfd2obj, *wfd2obj, *efd2obj;
-#else  /* !SELECT_USES_HEAP */
-    /* XXX: All this should probably be implemented as follows:
-     * - find the highest descriptor we're interested in
-     * - add one
-     * - that's the size
-     * See: Stevens, APitUE, $12.5.1
-     */
-    pylist rfd2obj[FD_SETSIZE + 1];
-    pylist wfd2obj[FD_SETSIZE + 1];
-    pylist efd2obj[FD_SETSIZE + 1];
-#endif /* SELECT_USES_HEAP */
-    PyObject *ifdlist, *ofdlist, *efdlist;
-    PyObject *ret = NULL;
-    PyObject *tout = Py_None;
-    fd_set ifdset, ofdset, efdset;
-    double timeout;
-    struct timeval tv, *tvp;
-    long seconds;
-    int imax, omax, emax, max;
-    int n;
-
-    /* convert arguments */
-    if (!PyArg_UnpackTuple(args, "select", 3, 4,
-                          &ifdlist, &ofdlist, &efdlist, &tout))
-        return NULL;
-
-    if (tout == Py_None)
-        tvp = (struct timeval *)0;
-    else if (!PyNumber_Check(tout)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "timeout must be a float or None");
-        return NULL;
-    }
-    else {
-        timeout = PyFloat_AsDouble(tout);
-        if (timeout == -1 && PyErr_Occurred())
-            return NULL;
-        if (timeout > (double)LONG_MAX) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "timeout period too long");
-            return NULL;
-        }
-        seconds = (long)timeout;
-        timeout = timeout - (double)seconds;
-        tv.tv_sec = seconds;
-        tv.tv_usec = (long)(timeout * 1E6);
-        tvp = &tv;
-    }
-
-
-#ifdef SELECT_USES_HEAP
-    /* Allocate memory for the lists */
-    rfd2obj = PyMem_NEW(pylist, FD_SETSIZE + 1);
-    wfd2obj = PyMem_NEW(pylist, FD_SETSIZE + 1);
-    efd2obj = PyMem_NEW(pylist, FD_SETSIZE + 1);
-    if (rfd2obj == NULL || wfd2obj == NULL || efd2obj == NULL) {
-        if (rfd2obj) PyMem_DEL(rfd2obj);
-        if (wfd2obj) PyMem_DEL(wfd2obj);
-        if (efd2obj) PyMem_DEL(efd2obj);
-        return PyErr_NoMemory();
-    }
-#endif /* SELECT_USES_HEAP */
-    /* Convert sequences to fd_sets, and get maximum fd number
-     * propagates the Python exception set in seq2set()
-     */
-    rfd2obj[0].sentinel = -1;
-    wfd2obj[0].sentinel = -1;
-    efd2obj[0].sentinel = -1;
-    if ((imax=seq2set(ifdlist, &ifdset, rfd2obj)) < 0)
-        goto finally;
-    if ((omax=seq2set(ofdlist, &ofdset, wfd2obj)) < 0)
-        goto finally;
-    if ((emax=seq2set(efdlist, &efdset, efd2obj)) < 0)
-        goto finally;
-    max = imax;
-    if (omax > max) max = omax;
-    if (emax > max) max = emax;
-
-    Py_BEGIN_ALLOW_THREADS
-    n = select(max, &ifdset, &ofdset, &efdset, tvp);
-    Py_END_ALLOW_THREADS
-
-#ifdef MS_WINDOWS
-    if (n == SOCKET_ERROR) {
-        PyErr_SetExcFromWindowsErr(SelectError, WSAGetLastError());
-    }
-#else
-    if (n < 0) {
-        PyErr_SetFromErrno(SelectError);
-    }
-#endif
-    else {
-        /* any of these three calls can raise an exception.  it's more
-           convenient to test for this after all three calls... but
-           is that acceptable?
-        */
-        ifdlist = set2list(&ifdset, rfd2obj);
-        ofdlist = set2list(&ofdset, wfd2obj);
-        efdlist = set2list(&efdset, efd2obj);
-        if (PyErr_Occurred())
-            ret = NULL;
-        else
-            ret = PyTuple_Pack(3, ifdlist, ofdlist, efdlist);
-
-        Py_DECREF(ifdlist);
-        Py_DECREF(ofdlist);
-        Py_DECREF(efdlist);
-    }
-
-  finally:
-    reap_obj(rfd2obj);
-    reap_obj(wfd2obj);
-    reap_obj(efd2obj);
-#ifdef SELECT_USES_HEAP
-    PyMem_DEL(rfd2obj);
-    PyMem_DEL(wfd2obj);
-    PyMem_DEL(efd2obj);
-#endif /* SELECT_USES_HEAP */
-    return ret;
-}
-
-#if defined(HAVE_POLL) && !defined(HAVE_BROKEN_POLL)
-/*
- * poll() support
- */
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *dict;
-    int ufd_uptodate;
-    int ufd_len;
-    struct pollfd *ufds;
-} pollObject;
-
-static PyTypeObject poll_Type;
-
-/* Update the malloc'ed array of pollfds to match the dictionary
-   contained within a pollObject.  Return 1 on success, 0 on an error.
-*/
-
-static int
-update_ufd_array(pollObject *self)
-{
-    Py_ssize_t i, pos;
-    PyObject *key, *value;
-    struct pollfd *old_ufds = self->ufds;
-
-    self->ufd_len = PyDict_Size(self->dict);
-    PyMem_RESIZE(self->ufds, struct pollfd, self->ufd_len);
-    if (self->ufds == NULL) {
-        self->ufds = old_ufds;
-        PyErr_NoMemory();
-        return 0;
-    }
-
-    i = pos = 0;
-    while (PyDict_Next(self->dict, &pos, &key, &value)) {
-        self->ufds[i].fd = PyInt_AsLong(key);
-        self->ufds[i].events = (short)PyInt_AsLong(value);
-        i++;
-    }
-    self->ufd_uptodate = 1;
-    return 1;
-}
-
-PyDoc_STRVAR(poll_register_doc,
-"register(fd [, eventmask] ) -> None\n\n\
-Register a file descriptor with the polling object.\n\
-fd -- either an integer, or an object with a fileno() method returning an\n\
-      int.\n\
-events -- an optional bitmask describing the type of events to check for");
-
-static PyObject *
-poll_register(pollObject *self, PyObject *args)
-{
-    PyObject *o, *key, *value;
-    int fd, events = POLLIN | POLLPRI | POLLOUT;
-    int err;
-
-    if (!PyArg_ParseTuple(args, "O|i:register", &o, &events)) {
-        return NULL;
-    }
-
-    fd = PyObject_AsFileDescriptor(o);
-    if (fd == -1) return NULL;
-
-    /* Add entry to the internal dictionary: the key is the
-       file descriptor, and the value is the event mask. */
-    key = PyInt_FromLong(fd);
-    if (key == NULL)
-        return NULL;
-    value = PyInt_FromLong(events);
-    if (value == NULL) {
-        Py_DECREF(key);
-        return NULL;
-    }
-    err = PyDict_SetItem(self->dict, key, value);
-    Py_DECREF(key);
-    Py_DECREF(value);
-    if (err < 0)
-        return NULL;
-
-    self->ufd_uptodate = 0;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(poll_modify_doc,
-"modify(fd, eventmask) -> None\n\n\
-Modify an already registered file descriptor.\n\
-fd -- either an integer, or an object with a fileno() method returning an\n\
-      int.\n\
-events -- an optional bitmask describing the type of events to check for");
-
-static PyObject *
-poll_modify(pollObject *self, PyObject *args)
-{
-    PyObject *o, *key, *value;
-    int fd, events;
-    int err;
-
-    if (!PyArg_ParseTuple(args, "Oi:modify", &o, &events)) {
-        return NULL;
-    }
-
-    fd = PyObject_AsFileDescriptor(o);
-    if (fd == -1) return NULL;
-
-    /* Modify registered fd */
-    key = PyInt_FromLong(fd);
-    if (key == NULL)
-        return NULL;
-    if (PyDict_GetItem(self->dict, key) == NULL) {
-        errno = ENOENT;
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    value = PyInt_FromLong(events);
-    if (value == NULL) {
-        Py_DECREF(key);
-        return NULL;
-    }
-    err = PyDict_SetItem(self->dict, key, value);
-    Py_DECREF(key);
-    Py_DECREF(value);
-    if (err < 0)
-        return NULL;
-
-    self->ufd_uptodate = 0;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-
-PyDoc_STRVAR(poll_unregister_doc,
-"unregister(fd) -> None\n\n\
-Remove a file descriptor being tracked by the polling object.");
-
-static PyObject *
-poll_unregister(pollObject *self, PyObject *o)
-{
-    PyObject *key;
-    int fd;
-
-    fd = PyObject_AsFileDescriptor( o );
-    if (fd == -1)
-        return NULL;
-
-    /* Check whether the fd is already in the array */
-    key = PyInt_FromLong(fd);
-    if (key == NULL)
-        return NULL;
-
-    if (PyDict_DelItem(self->dict, key) == -1) {
-        Py_DECREF(key);
-        /* This will simply raise the KeyError set by PyDict_DelItem
-           if the file descriptor isn't registered. */
-        return NULL;
-    }
-
-    Py_DECREF(key);
-    self->ufd_uptodate = 0;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(poll_poll_doc,
-"poll( [timeout] ) -> list of (fd, event) 2-tuples\n\n\
-Polls the set of registered file descriptors, returning a list containing \n\
-any descriptors that have events or errors to report.");
-
-static PyObject *
-poll_poll(pollObject *self, PyObject *args)
-{
-    PyObject *result_list = NULL, *tout = NULL;
-    int timeout = 0, poll_result, i, j;
-    PyObject *value = NULL, *num = NULL;
-
-    if (!PyArg_UnpackTuple(args, "poll", 0, 1, &tout)) {
-        return NULL;
-    }
-
-    /* Check values for timeout */
-    if (tout == NULL || tout == Py_None)
-        timeout = -1;
-    else if (!PyNumber_Check(tout)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "timeout must be an integer or None");
-        return NULL;
-    }
-    else {
-        tout = PyNumber_Int(tout);
-        if (!tout)
-            return NULL;
-        timeout = PyInt_AsLong(tout);
-        Py_DECREF(tout);
-        if (timeout == -1 && PyErr_Occurred())
-            return NULL;
-    }
-
-    /* Ensure the ufd array is up to date */
-    if (!self->ufd_uptodate)
-        if (update_ufd_array(self) == 0)
-            return NULL;
-
-    /* call poll() */
-    Py_BEGIN_ALLOW_THREADS
-    poll_result = poll(self->ufds, self->ufd_len, timeout);
-    Py_END_ALLOW_THREADS
-
-    if (poll_result < 0) {
-        PyErr_SetFromErrno(SelectError);
-        return NULL;
-    }
-
-    /* build the result list */
-
-    result_list = PyList_New(poll_result);
-    if (!result_list)
-        return NULL;
-    else {
-        for (i = 0, j = 0; j < poll_result; j++) {
-            /* skip to the next fired descriptor */
-            while (!self->ufds[i].revents) {
-                i++;
-            }
-            /* if we hit a NULL return, set value to NULL
-               and break out of loop; code at end will
-               clean up result_list */
-            value = PyTuple_New(2);
-            if (value == NULL)
-                goto error;
-            num = PyInt_FromLong(self->ufds[i].fd);
-            if (num == NULL) {
-                Py_DECREF(value);
-                goto error;
-            }
-            PyTuple_SET_ITEM(value, 0, num);
-
-            /* The &0xffff is a workaround for AIX.  'revents'
-               is a 16-bit short, and IBM assigned POLLNVAL
-               to be 0x8000, so the conversion to int results
-               in a negative number. See SF bug #923315. */
-            num = PyInt_FromLong(self->ufds[i].revents & 0xffff);
-            if (num == NULL) {
-                Py_DECREF(value);
-                goto error;
-            }
-            PyTuple_SET_ITEM(value, 1, num);
-            if ((PyList_SetItem(result_list, j, value)) == -1) {
-                Py_DECREF(value);
-                goto error;
-            }
-            i++;
-        }
-    }
-    return result_list;
-
-  error:
-    Py_DECREF(result_list);
-    return NULL;
-}
-
-static PyMethodDef poll_methods[] = {
-    {"register",        (PyCFunction)poll_register,
-     METH_VARARGS,  poll_register_doc},
-    {"modify",          (PyCFunction)poll_modify,
-     METH_VARARGS,  poll_modify_doc},
-    {"unregister",      (PyCFunction)poll_unregister,
-     METH_O,        poll_unregister_doc},
-    {"poll",            (PyCFunction)poll_poll,
-     METH_VARARGS,  poll_poll_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static pollObject *
-newPollObject(void)
-{
-    pollObject *self;
-    self = PyObject_New(pollObject, &poll_Type);
-    if (self == NULL)
-        return NULL;
-    /* ufd_uptodate is a Boolean, denoting whether the
-       array pointed to by ufds matches the contents of the dictionary. */
-    self->ufd_uptodate = 0;
-    self->ufds = NULL;
-    self->dict = PyDict_New();
-    if (self->dict == NULL) {
-        Py_DECREF(self);
-        return NULL;
-    }
-    return self;
-}
-
-static void
-poll_dealloc(pollObject *self)
-{
-    if (self->ufds != NULL)
-        PyMem_DEL(self->ufds);
-    Py_XDECREF(self->dict);
-    PyObject_Del(self);
-}
-
-static PyObject *
-poll_getattr(pollObject *self, char *name)
-{
-    return Py_FindMethod(poll_methods, (PyObject *)self, name);
-}
-
-static PyTypeObject poll_Type = {
-    /* The ob_type field must be initialized in the module init function
-     * to be portable to Windows without using C++. */
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "select.poll",              /*tp_name*/
-    sizeof(pollObject),         /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    /* methods */
-    (destructor)poll_dealloc, /*tp_dealloc*/
-    0,                          /*tp_print*/
-    (getattrfunc)poll_getattr, /*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*/
-};
-
-PyDoc_STRVAR(poll_doc,
-"Returns a polling object, which supports registering and\n\
-unregistering file descriptors, and then polling them for I/O events.");
-
-static PyObject *
-select_poll(PyObject *self, PyObject *unused)
-{
-    return (PyObject *)newPollObject();
-}
-
-#ifdef __APPLE__
-/*
- * On some systems poll() sets errno on invalid file descriptors. We test
- * for this at runtime because this bug may be fixed or introduced between
- * OS releases.
- */
-static int select_have_broken_poll(void)
-{
-    int poll_test;
-    int filedes[2];
-
-    struct pollfd poll_struct = { 0, POLLIN|POLLPRI|POLLOUT, 0 };
-
-    /* Create a file descriptor to make invalid */
-    if (pipe(filedes) < 0) {
-        return 1;
-    }
-    poll_struct.fd = filedes[0];
-    close(filedes[0]);
-    close(filedes[1]);
-    poll_test = poll(&poll_struct, 1, 0);
-    if (poll_test < 0) {
-        return 1;
-    } else if (poll_test == 0 && poll_struct.revents != POLLNVAL) {
-        return 1;
-    }
-    return 0;
-}
-#endif /* __APPLE__ */
-
-#endif /* HAVE_POLL */
-
-#ifdef HAVE_EPOLL
-/* **************************************************************************
- *                      epoll interface for Linux 2.6
- *
- * Written by Christian Heimes
- * Inspired by Twisted's _epoll.pyx and select.poll()
- */
-
-#ifdef HAVE_SYS_EPOLL_H
-#include <sys/epoll.h>
-#endif
-
-typedef struct {
-    PyObject_HEAD
-    SOCKET epfd;                        /* epoll control file descriptor */
-} pyEpoll_Object;
-
-static PyTypeObject pyEpoll_Type;
-#define pyepoll_CHECK(op) (PyObject_TypeCheck((op), &pyEpoll_Type))
-
-static PyObject *
-pyepoll_err_closed(void)
-{
-    PyErr_SetString(PyExc_ValueError, "I/O operation on closed epoll fd");
-    return NULL;
-}
-
-static int
-pyepoll_internal_close(pyEpoll_Object *self)
-{
-    int save_errno = 0;
-    if (self->epfd >= 0) {
-        int epfd = self->epfd;
-        self->epfd = -1;
-        Py_BEGIN_ALLOW_THREADS
-        if (close(epfd) < 0)
-            save_errno = errno;
-        Py_END_ALLOW_THREADS
-    }
-    return save_errno;
-}
-
-static PyObject *
-newPyEpoll_Object(PyTypeObject *type, int sizehint, SOCKET fd)
-{
-    pyEpoll_Object *self;
-
-    if (sizehint == -1) {
-        sizehint = FD_SETSIZE-1;
-    }
-    else if (sizehint < 1) {
-        PyErr_Format(PyExc_ValueError,
-                     "sizehint must be greater zero, got %d",
-                     sizehint);
-        return NULL;
-    }
-
-    assert(type != NULL && type->tp_alloc != NULL);
-    self = (pyEpoll_Object *) type->tp_alloc(type, 0);
-    if (self == NULL)
-        return NULL;
-
-    if (fd == -1) {
-        Py_BEGIN_ALLOW_THREADS
-        self->epfd = epoll_create(sizehint);
-        Py_END_ALLOW_THREADS
-    }
-    else {
-        self->epfd = fd;
-    }
-    if (self->epfd < 0) {
-        Py_DECREF(self);
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    return (PyObject *)self;
-}
-
-
-static PyObject *
-pyepoll_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    int sizehint = -1;
-    static char *kwlist[] = {"sizehint", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|i:epoll", kwlist,
-                                     &sizehint))
-        return NULL;
-
-    return newPyEpoll_Object(type, sizehint, -1);
-}
-
-
-static void
-pyepoll_dealloc(pyEpoll_Object *self)
-{
-    (void)pyepoll_internal_close(self);
-    Py_TYPE(self)->tp_free(self);
-}
-
-static PyObject*
-pyepoll_close(pyEpoll_Object *self)
-{
-    errno = pyepoll_internal_close(self);
-    if (errno < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(pyepoll_close_doc,
-"close() -> None\n\
-\n\
-Close the epoll control file descriptor. Further operations on the epoll\n\
-object will raise an exception.");
-
-static PyObject*
-pyepoll_get_closed(pyEpoll_Object *self)
-{
-    if (self->epfd < 0)
-        Py_RETURN_TRUE;
-    else
-        Py_RETURN_FALSE;
-}
-
-static PyObject*
-pyepoll_fileno(pyEpoll_Object *self)
-{
-    if (self->epfd < 0)
-        return pyepoll_err_closed();
-    return PyInt_FromLong(self->epfd);
-}
-
-PyDoc_STRVAR(pyepoll_fileno_doc,
-"fileno() -> int\n\
-\n\
-Return the epoll control file descriptor.");
-
-static PyObject*
-pyepoll_fromfd(PyObject *cls, PyObject *args)
-{
-    SOCKET fd;
-
-    if (!PyArg_ParseTuple(args, "i:fromfd", &fd))
-        return NULL;
-
-    return newPyEpoll_Object((PyTypeObject*)cls, -1, fd);
-}
-
-PyDoc_STRVAR(pyepoll_fromfd_doc,
-"fromfd(fd) -> epoll\n\
-\n\
-Create an epoll object from a given control fd.");
-
-static PyObject *
-pyepoll_internal_ctl(int epfd, int op, PyObject *pfd, unsigned int events)
-{
-    struct epoll_event ev;
-    int result;
-    int fd;
-
-    if (epfd < 0)
-        return pyepoll_err_closed();
-
-    fd = PyObject_AsFileDescriptor(pfd);
-    if (fd == -1) {
-        return NULL;
-    }
-
-    switch(op) {
-        case EPOLL_CTL_ADD:
-        case EPOLL_CTL_MOD:
-        ev.events = events;
-        ev.data.fd = fd;
-        Py_BEGIN_ALLOW_THREADS
-        result = epoll_ctl(epfd, op, fd, &ev);
-        Py_END_ALLOW_THREADS
-        break;
-        case EPOLL_CTL_DEL:
-        /* In kernel versions before 2.6.9, the EPOLL_CTL_DEL
-         * operation required a non-NULL pointer in event, even
-         * though this argument is ignored. */
-        Py_BEGIN_ALLOW_THREADS
-        result = epoll_ctl(epfd, op, fd, &ev);
-        if (errno == EBADF) {
-            /* fd already closed */
-            result = 0;
-            errno = 0;
-        }
-        Py_END_ALLOW_THREADS
-        break;
-        default:
-        result = -1;
-        errno = EINVAL;
-    }
-
-    if (result < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    Py_RETURN_NONE;
-}
-
-static PyObject *
-pyepoll_register(pyEpoll_Object *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *pfd;
-    unsigned int events = EPOLLIN | EPOLLOUT | EPOLLPRI;
-    static char *kwlist[] = {"fd", "eventmask", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|I:register", kwlist,
-                                     &pfd, &events)) {
-        return NULL;
-    }
-
-    return pyepoll_internal_ctl(self->epfd, EPOLL_CTL_ADD, pfd, events);
-}
-
-PyDoc_STRVAR(pyepoll_register_doc,
-"register(fd[, eventmask]) -> None\n\
-\n\
-Registers a new fd or modifies an already registered fd.\n\
-fd is the target file descriptor of the operation.\n\
-events is a bit set composed of the various EPOLL constants; the default\n\
-is EPOLL_IN | EPOLL_OUT | EPOLL_PRI.\n\
-\n\
-The epoll interface supports all file descriptors that support poll.");
-
-static PyObject *
-pyepoll_modify(pyEpoll_Object *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *pfd;
-    unsigned int events;
-    static char *kwlist[] = {"fd", "eventmask", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "OI:modify", kwlist,
-                                     &pfd, &events)) {
-        return NULL;
-    }
-
-    return pyepoll_internal_ctl(self->epfd, EPOLL_CTL_MOD, pfd, events);
-}
-
-PyDoc_STRVAR(pyepoll_modify_doc,
-"modify(fd, eventmask) -> None\n\
-\n\
-fd is the target file descriptor of the operation\n\
-events is a bit set composed of the various EPOLL constants");
-
-static PyObject *
-pyepoll_unregister(pyEpoll_Object *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *pfd;
-    static char *kwlist[] = {"fd", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O:unregister", kwlist,
-                                     &pfd)) {
-        return NULL;
-    }
-
-    return pyepoll_internal_ctl(self->epfd, EPOLL_CTL_DEL, pfd, 0);
-}
-
-PyDoc_STRVAR(pyepoll_unregister_doc,
-"unregister(fd) -> None\n\
-\n\
-fd is the target file descriptor of the operation.");
-
-static PyObject *
-pyepoll_poll(pyEpoll_Object *self, PyObject *args, PyObject *kwds)
-{
-    double dtimeout = -1.;
-    int timeout;
-    int maxevents = -1;
-    int nfds, i;
-    PyObject *elist = NULL, *etuple = NULL;
-    struct epoll_event *evs = NULL;
-    static char *kwlist[] = {"timeout", "maxevents", NULL};
-
-    if (self->epfd < 0)
-        return pyepoll_err_closed();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|di:poll", kwlist,
-                                     &dtimeout, &maxevents)) {
-        return NULL;
-    }
-
-    if (dtimeout < 0) {
-        timeout = -1;
-    }
-    else if (dtimeout * 1000.0 > INT_MAX) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "timeout is too large");
-        return NULL;
-    }
-    else {
-        timeout = (int)(dtimeout * 1000.0);
-    }
-
-    if (maxevents == -1) {
-        maxevents = FD_SETSIZE-1;
-    }
-    else if (maxevents < 1) {
-        PyErr_Format(PyExc_ValueError,
-                     "maxevents must be greater than 0, got %d",
-                     maxevents);
-        return NULL;
-    }
-
-    evs = PyMem_New(struct epoll_event, maxevents);
-    if (evs == NULL) {
-        Py_DECREF(self);
-        PyErr_NoMemory();
-        return NULL;
-    }
-
-    Py_BEGIN_ALLOW_THREADS
-    nfds = epoll_wait(self->epfd, evs, maxevents, timeout);
-    Py_END_ALLOW_THREADS
-    if (nfds < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        goto error;
-    }
-
-    elist = PyList_New(nfds);
-    if (elist == NULL) {
-        goto error;
-    }
-
-    for (i = 0; i < nfds; i++) {
-        etuple = Py_BuildValue("iI", evs[i].data.fd, evs[i].events);
-        if (etuple == NULL) {
-            Py_CLEAR(elist);
-            goto error;
-        }
-        PyList_SET_ITEM(elist, i, etuple);
-    }
-
-    error:
-    PyMem_Free(evs);
-    return elist;
-}
-
-PyDoc_STRVAR(pyepoll_poll_doc,
-"poll([timeout=-1[, maxevents=-1]]) -> [(fd, events), (...)]\n\
-\n\
-Wait for events on the epoll file descriptor for a maximum time of timeout\n\
-in seconds (as float). -1 makes poll wait indefinitely.\n\
-Up to maxevents are returned to the caller.");
-
-static PyMethodDef pyepoll_methods[] = {
-    {"fromfd",          (PyCFunction)pyepoll_fromfd,
-     METH_VARARGS | METH_CLASS, pyepoll_fromfd_doc},
-    {"close",           (PyCFunction)pyepoll_close,     METH_NOARGS,
-     pyepoll_close_doc},
-    {"fileno",          (PyCFunction)pyepoll_fileno,    METH_NOARGS,
-     pyepoll_fileno_doc},
-    {"modify",          (PyCFunction)pyepoll_modify,
-     METH_VARARGS | METH_KEYWORDS,      pyepoll_modify_doc},
-    {"register",        (PyCFunction)pyepoll_register,
-     METH_VARARGS | METH_KEYWORDS,      pyepoll_register_doc},
-    {"unregister",      (PyCFunction)pyepoll_unregister,
-     METH_VARARGS | METH_KEYWORDS,      pyepoll_unregister_doc},
-    {"poll",            (PyCFunction)pyepoll_poll,
-     METH_VARARGS | METH_KEYWORDS,      pyepoll_poll_doc},
-    {NULL,      NULL},
-};
-
-static PyGetSetDef pyepoll_getsetlist[] = {
-    {"closed", (getter)pyepoll_get_closed, NULL,
-     "True if the epoll handler is closed"},
-    {0},
-};
-
-PyDoc_STRVAR(pyepoll_doc,
-"select.epoll([sizehint=-1])\n\
-\n\
-Returns an epolling object\n\
-\n\
-sizehint must be a positive integer or -1 for the default size. The\n\
-sizehint is used to optimize internal data structures. It doesn't limit\n\
-the maximum number of monitored events.");
-
-static PyTypeObject pyEpoll_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "select.epoll",                                     /* tp_name */
-    sizeof(pyEpoll_Object),                             /* tp_basicsize */
-    0,                                                  /* tp_itemsize */
-    (destructor)pyepoll_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 */
-    PyObject_GenericGetAttr,                            /* tp_getattro */
-    0,                                                  /* tp_setattro */
-    0,                                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                                 /* tp_flags */
-    pyepoll_doc,                                        /* tp_doc */
-    0,                                                  /* tp_traverse */
-    0,                                                  /* tp_clear */
-    0,                                                  /* tp_richcompare */
-    0,                                                  /* tp_weaklistoffset */
-    0,                                                  /* tp_iter */
-    0,                                                  /* tp_iternext */
-    pyepoll_methods,                                    /* tp_methods */
-    0,                                                  /* tp_members */
-    pyepoll_getsetlist,                                 /* tp_getset */
-    0,                                                  /* tp_base */
-    0,                                                  /* tp_dict */
-    0,                                                  /* tp_descr_get */
-    0,                                                  /* tp_descr_set */
-    0,                                                  /* tp_dictoffset */
-    0,                                                  /* tp_init */
-    0,                                                  /* tp_alloc */
-    pyepoll_new,                                        /* tp_new */
-    0,                                                  /* tp_free */
-};
-
-#endif /* HAVE_EPOLL */
-
-#ifdef HAVE_KQUEUE
-/* **************************************************************************
- *                      kqueue interface for BSD
- *
- * Copyright (c) 2000 Doug White, 2006 James Knight, 2007 Christian Heimes
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifdef HAVE_SYS_EVENT_H
-#include <sys/event.h>
-#endif
-
-PyDoc_STRVAR(kqueue_event_doc,
-"kevent(ident, filter=KQ_FILTER_READ, flags=KQ_EV_ADD, fflags=0, data=0, udata=0)\n\
-\n\
-This object is the equivalent of the struct kevent for the C API.\n\
-\n\
-See the kqueue manpage for more detailed information about the meaning\n\
-of the arguments.\n\
-\n\
-One minor note: while you might hope that udata could store a\n\
-reference to a python object, it cannot, because it is impossible to\n\
-keep a proper reference count of the object once it's passed into the\n\
-kernel. Therefore, I have restricted it to only storing an integer.  I\n\
-recommend ignoring it and simply using the 'ident' field to key off\n\
-of. You could also set up a dictionary on the python side to store a\n\
-udata->object mapping.");
-
-typedef struct {
-    PyObject_HEAD
-    struct kevent e;
-} kqueue_event_Object;
-
-static PyTypeObject kqueue_event_Type;
-
-#define kqueue_event_Check(op) (PyObject_TypeCheck((op), &kqueue_event_Type))
-
-typedef struct {
-    PyObject_HEAD
-    SOCKET kqfd;                /* kqueue control fd */
-} kqueue_queue_Object;
-
-static PyTypeObject kqueue_queue_Type;
-
-#define kqueue_queue_Check(op) (PyObject_TypeCheck((op), &kqueue_queue_Type))
-
-#if (SIZEOF_UINTPTR_T != SIZEOF_VOID_P)
-#   error uintptr_t does not match void *!
-#elif (SIZEOF_UINTPTR_T == SIZEOF_LONG_LONG)
-#   define T_UINTPTRT         T_ULONGLONG
-#   define T_INTPTRT          T_LONGLONG
-#   define PyLong_AsUintptr_t PyLong_AsUnsignedLongLong
-#   define UINTPTRT_FMT_UNIT  "K"
-#   define INTPTRT_FMT_UNIT   "L"
-#elif (SIZEOF_UINTPTR_T == SIZEOF_LONG)
-#   define T_UINTPTRT         T_ULONG
-#   define T_INTPTRT          T_LONG
-#   define PyLong_AsUintptr_t PyLong_AsUnsignedLong
-#   define UINTPTRT_FMT_UNIT  "k"
-#   define INTPTRT_FMT_UNIT   "l"
-#elif (SIZEOF_UINTPTR_T == SIZEOF_INT)
-#   define T_UINTPTRT         T_UINT
-#   define T_INTPTRT          T_INT
-#   define PyLong_AsUintptr_t PyLong_AsUnsignedLong
-#   define UINTPTRT_FMT_UNIT  "I"
-#   define INTPTRT_FMT_UNIT   "i"
-#else
-#   error uintptr_t does not match int, long, or long long!
-#endif
-
-/* Unfortunately, we can't store python objects in udata, because
- * kevents in the kernel can be removed without warning, which would
- * forever lose the refcount on the object stored with it.
- */
-
-#define KQ_OFF(x) offsetof(kqueue_event_Object, x)
-static struct PyMemberDef kqueue_event_members[] = {
-    {"ident",           T_UINTPTRT,     KQ_OFF(e.ident)},
-    {"filter",          T_SHORT,        KQ_OFF(e.filter)},
-    {"flags",           T_USHORT,       KQ_OFF(e.flags)},
-    {"fflags",          T_UINT,         KQ_OFF(e.fflags)},
-    {"data",            T_INTPTRT,      KQ_OFF(e.data)},
-    {"udata",           T_UINTPTRT,     KQ_OFF(e.udata)},
-    {NULL} /* Sentinel */
-};
-#undef KQ_OFF
-
-static PyObject *
-
-kqueue_event_repr(kqueue_event_Object *s)
-{
-    char buf[1024];
-    PyOS_snprintf(
-        buf, sizeof(buf),
-        "<select.kevent ident=%zu filter=%d flags=0x%x fflags=0x%x "
-        "data=0x%zd udata=%p>",
-        (size_t)(s->e.ident), s->e.filter, s->e.flags,
-        s->e.fflags, (Py_ssize_t)(s->e.data), s->e.udata);
-    return PyString_FromString(buf);
-}
-
-static int
-kqueue_event_init(kqueue_event_Object *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *pfd;
-    static char *kwlist[] = {"ident", "filter", "flags", "fflags",
-                             "data", "udata", NULL};
-    static char *fmt = "O|hhi" INTPTRT_FMT_UNIT UINTPTRT_FMT_UNIT ":kevent";
-
-    EV_SET(&(self->e), 0, EVFILT_READ, EV_ADD, 0, 0, 0); /* defaults */
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, fmt, kwlist,
-        &pfd, &(self->e.filter), &(self->e.flags),
-        &(self->e.fflags), &(self->e.data), &(self->e.udata))) {
-        return -1;
-    }
-
-    if (PyLong_Check(pfd)) {
-        self->e.ident = PyLong_AsUintptr_t(pfd);
-    }
-    else {
-        self->e.ident = PyObject_AsFileDescriptor(pfd);
-    }
-    if (PyErr_Occurred()) {
-        return -1;
-    }
-    return 0;
-}
-
-static PyObject *
-kqueue_event_richcompare(kqueue_event_Object *s, kqueue_event_Object *o,
-                         int op)
-{
-    Py_intptr_t result = 0;
-
-    if (!kqueue_event_Check(o)) {
-        if (op == Py_EQ || op == Py_NE) {
-            PyObject *res = op == Py_EQ ? Py_False : Py_True;
-            Py_INCREF(res);
-            return res;
-        }
-        PyErr_Format(PyExc_TypeError,
-            "can't compare %.200s to %.200s",
-            Py_TYPE(s)->tp_name, Py_TYPE(o)->tp_name);
-        return NULL;
-    }
-    if (((result = s->e.ident - o->e.ident) == 0) &&
-        ((result = s->e.filter - o->e.filter) == 0) &&
-        ((result = s->e.flags - o->e.flags) == 0) &&
-        ((result = s->e.fflags - o->e.fflags) == 0) &&
-        ((result = s->e.data - o->e.data) == 0) &&
-        ((result = s->e.udata - o->e.udata) == 0)
-       ) {
-        result = 0;
-    }
-
-    switch (op) {
-        case Py_EQ:
-        result = (result == 0);
-        break;
-        case Py_NE:
-        result = (result != 0);
-        break;
-        case Py_LE:
-        result = (result <= 0);
-        break;
-        case Py_GE:
-        result = (result >= 0);
-        break;
-        case Py_LT:
-        result = (result < 0);
-        break;
-        case Py_GT:
-        result = (result > 0);
-        break;
-    }
-    return PyBool_FromLong((long)result);
-}
-
-static PyTypeObject kqueue_event_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "select.kevent",                                    /* tp_name */
-    sizeof(kqueue_event_Object),                        /* tp_basicsize */
-    0,                                                  /* tp_itemsize */
-    0,                                                  /* tp_dealloc */
-    0,                                                  /* tp_print */
-    0,                                                  /* tp_getattr */
-    0,                                                  /* tp_setattr */
-    0,                                                  /* tp_compare */
-    (reprfunc)kqueue_event_repr,                        /* 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 */
-    Py_TPFLAGS_DEFAULT,                                 /* tp_flags */
-    kqueue_event_doc,                                   /* tp_doc */
-    0,                                                  /* tp_traverse */
-    0,                                                  /* tp_clear */
-    (richcmpfunc)kqueue_event_richcompare,              /* tp_richcompare */
-    0,                                                  /* tp_weaklistoffset */
-    0,                                                  /* tp_iter */
-    0,                                                  /* tp_iternext */
-    0,                                                  /* tp_methods */
-    kqueue_event_members,                               /* tp_members */
-    0,                                                  /* tp_getset */
-    0,                                                  /* tp_base */
-    0,                                                  /* tp_dict */
-    0,                                                  /* tp_descr_get */
-    0,                                                  /* tp_descr_set */
-    0,                                                  /* tp_dictoffset */
-    (initproc)kqueue_event_init,                        /* tp_init */
-    0,                                                  /* tp_alloc */
-    0,                                                  /* tp_new */
-    0,                                                  /* tp_free */
-};
-
-static PyObject *
-kqueue_queue_err_closed(void)
-{
-    PyErr_SetString(PyExc_ValueError, "I/O operation on closed kqueue fd");
-    return NULL;
-}
-
-static int
-kqueue_queue_internal_close(kqueue_queue_Object *self)
-{
-    int save_errno = 0;
-    if (self->kqfd >= 0) {
-        int kqfd = self->kqfd;
-        self->kqfd = -1;
-        Py_BEGIN_ALLOW_THREADS
-        if (close(kqfd) < 0)
-            save_errno = errno;
-        Py_END_ALLOW_THREADS
-    }
-    return save_errno;
-}
-
-static PyObject *
-newKqueue_Object(PyTypeObject *type, SOCKET fd)
-{
-    kqueue_queue_Object *self;
-    assert(type != NULL && type->tp_alloc != NULL);
-    self = (kqueue_queue_Object *) type->tp_alloc(type, 0);
-    if (self == NULL) {
-        return NULL;
-    }
-
-    if (fd == -1) {
-        Py_BEGIN_ALLOW_THREADS
-        self->kqfd = kqueue();
-        Py_END_ALLOW_THREADS
-    }
-    else {
-        self->kqfd = fd;
-    }
-    if (self->kqfd < 0) {
-        Py_DECREF(self);
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    return (PyObject *)self;
-}
-
-static PyObject *
-kqueue_queue_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-
-    if ((args != NULL && PyObject_Size(args)) ||
-                    (kwds != NULL && PyObject_Size(kwds))) {
-        PyErr_SetString(PyExc_ValueError,
-                        "select.kqueue doesn't accept arguments");
-        return NULL;
-    }
-
-    return newKqueue_Object(type, -1);
-}
-
-static void
-kqueue_queue_dealloc(kqueue_queue_Object *self)
-{
-    kqueue_queue_internal_close(self);
-    Py_TYPE(self)->tp_free(self);
-}
-
-static PyObject*
-kqueue_queue_close(kqueue_queue_Object *self)
-{
-    errno = kqueue_queue_internal_close(self);
-    if (errno < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(kqueue_queue_close_doc,
-"close() -> None\n\
-\n\
-Close the kqueue control file descriptor. Further operations on the kqueue\n\
-object will raise an exception.");
-
-static PyObject*
-kqueue_queue_get_closed(kqueue_queue_Object *self)
-{
-    if (self->kqfd < 0)
-        Py_RETURN_TRUE;
-    else
-        Py_RETURN_FALSE;
-}
-
-static PyObject*
-kqueue_queue_fileno(kqueue_queue_Object *self)
-{
-    if (self->kqfd < 0)
-        return kqueue_queue_err_closed();
-    return PyInt_FromLong(self->kqfd);
-}
-
-PyDoc_STRVAR(kqueue_queue_fileno_doc,
-"fileno() -> int\n\
-\n\
-Return the kqueue control file descriptor.");
-
-static PyObject*
-kqueue_queue_fromfd(PyObject *cls, PyObject *args)
-{
-    SOCKET fd;
-
-    if (!PyArg_ParseTuple(args, "i:fromfd", &fd))
-        return NULL;
-
-    return newKqueue_Object((PyTypeObject*)cls, fd);
-}
-
-PyDoc_STRVAR(kqueue_queue_fromfd_doc,
-"fromfd(fd) -> kqueue\n\
-\n\
-Create a kqueue object from a given control fd.");
-
-static PyObject *
-kqueue_queue_control(kqueue_queue_Object *self, PyObject *args)
-{
-    int nevents = 0;
-    int gotevents = 0;
-    int nchanges = 0;
-    int i = 0;
-    PyObject *otimeout = NULL;
-    PyObject *ch = NULL;
-    PyObject *it = NULL, *ei = NULL;
-    PyObject *result = NULL;
-    struct kevent *evl = NULL;
-    struct kevent *chl = NULL;
-    struct timespec timeoutspec;
-    struct timespec *ptimeoutspec;
-
-    if (self->kqfd < 0)
-        return kqueue_queue_err_closed();
-
-    if (!PyArg_ParseTuple(args, "Oi|O:control", &ch, &nevents, &otimeout))
-        return NULL;
-
-    if (nevents < 0) {
-        PyErr_Format(PyExc_ValueError,
-            "Length of eventlist must be 0 or positive, got %d",
-            nevents);
-        return NULL;
-    }
-
-    if (otimeout == Py_None || otimeout == NULL) {
-        ptimeoutspec = NULL;
-    }
-    else if (PyNumber_Check(otimeout)) {
-        double timeout;
-        long seconds;
-
-        timeout = PyFloat_AsDouble(otimeout);
-        if (timeout == -1 && PyErr_Occurred())
-            return NULL;
-        if (timeout > (double)LONG_MAX) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "timeout period too long");
-            return NULL;
-        }
-        if (timeout < 0) {
-            PyErr_SetString(PyExc_ValueError,
-                            "timeout must be positive or None");
-            return NULL;
-        }
-
-        seconds = (long)timeout;
-        timeout = timeout - (double)seconds;
-        timeoutspec.tv_sec = seconds;
-        timeoutspec.tv_nsec = (long)(timeout * 1E9);
-        ptimeoutspec = &timeoutspec;
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-            "timeout argument must be an number "
-            "or None, got %.200s",
-            Py_TYPE(otimeout)->tp_name);
-        return NULL;
-    }
-
-    if (ch != NULL && ch != Py_None) {
-        it = PyObject_GetIter(ch);
-        if (it == NULL) {
-            PyErr_SetString(PyExc_TypeError,
-                            "changelist is not iterable");
-            return NULL;
-        }
-        nchanges = PyObject_Size(ch);
-        if (nchanges < 0) {
-            goto error;
-        }
-
-        chl = PyMem_New(struct kevent, nchanges);
-        if (chl == NULL) {
-            PyErr_NoMemory();
-            goto error;
-        }
-        i = 0;
-        while ((ei = PyIter_Next(it)) != NULL) {
-            if (!kqueue_event_Check(ei)) {
-                Py_DECREF(ei);
-                PyErr_SetString(PyExc_TypeError,
-                    "changelist must be an iterable of "
-                    "select.kevent objects");
-                goto error;
-            } else {
-                chl[i++] = ((kqueue_event_Object *)ei)->e;
-            }
-            Py_DECREF(ei);
-        }
-    }
-    Py_CLEAR(it);
-
-    /* event list */
-    if (nevents) {
-        evl = PyMem_New(struct kevent, nevents);
-        if (evl == NULL) {
-            PyErr_NoMemory();
-            goto error;
-        }
-    }
-
-    Py_BEGIN_ALLOW_THREADS
-    gotevents = kevent(self->kqfd, chl, nchanges,
-                       evl, nevents, ptimeoutspec);
-    Py_END_ALLOW_THREADS
-
-    if (gotevents == -1) {
-        PyErr_SetFromErrno(PyExc_OSError);
-        goto error;
-    }
-
-    result = PyList_New(gotevents);
-    if (result == NULL) {
-        goto error;
-    }
-
-    for (i = 0; i < gotevents; i++) {
-        kqueue_event_Object *ch;
-
-        ch = PyObject_New(kqueue_event_Object, &kqueue_event_Type);
-        if (ch == NULL) {
-            goto error;
-        }
-        ch->e = evl[i];
-        PyList_SET_ITEM(result, i, (PyObject *)ch);
-    }
-    PyMem_Free(chl);
-    PyMem_Free(evl);
-    return result;
-
-    error:
-    PyMem_Free(chl);
-    PyMem_Free(evl);
-    Py_XDECREF(result);
-    Py_XDECREF(it);
-    return NULL;
-}
-
-PyDoc_STRVAR(kqueue_queue_control_doc,
-"control(changelist, max_events[, timeout=None]) -> eventlist\n\
-\n\
-Calls the kernel kevent function.\n\
-- changelist must be a list of kevent objects describing the changes\n\
-  to be made to the kernel's watch list or None.\n\
-- max_events lets you specify the maximum number of events that the\n\
-  kernel will return.\n\
-- timeout is the maximum time to wait in seconds, or else None,\n\
-  to wait forever. timeout accepts floats for smaller timeouts, too.");
-
-
-static PyMethodDef kqueue_queue_methods[] = {
-    {"fromfd",          (PyCFunction)kqueue_queue_fromfd,
-     METH_VARARGS | METH_CLASS, kqueue_queue_fromfd_doc},
-    {"close",           (PyCFunction)kqueue_queue_close,        METH_NOARGS,
-     kqueue_queue_close_doc},
-    {"fileno",          (PyCFunction)kqueue_queue_fileno,       METH_NOARGS,
-     kqueue_queue_fileno_doc},
-    {"control",         (PyCFunction)kqueue_queue_control,
-     METH_VARARGS ,     kqueue_queue_control_doc},
-    {NULL,      NULL},
-};
-
-static PyGetSetDef kqueue_queue_getsetlist[] = {
-    {"closed", (getter)kqueue_queue_get_closed, NULL,
-     "True if the kqueue handler is closed"},
-    {0},
-};
-
-PyDoc_STRVAR(kqueue_queue_doc,
-"Kqueue syscall wrapper.\n\
-\n\
-For example, to start watching a socket for input:\n\
->>> kq = kqueue()\n\
->>> sock = socket()\n\
->>> sock.connect((host, port))\n\
->>> kq.control([kevent(sock, KQ_FILTER_WRITE, KQ_EV_ADD)], 0)\n\
-\n\
-To wait one second for it to become writeable:\n\
->>> kq.control(None, 1, 1000)\n\
-\n\
-To stop listening:\n\
->>> kq.control([kevent(sock, KQ_FILTER_WRITE, KQ_EV_DELETE)], 0)");
-
-static PyTypeObject kqueue_queue_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "select.kqueue",                                    /* tp_name */
-    sizeof(kqueue_queue_Object),                        /* tp_basicsize */
-    0,                                                  /* tp_itemsize */
-    (destructor)kqueue_queue_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 */
-    Py_TPFLAGS_DEFAULT,                                 /* tp_flags */
-    kqueue_queue_doc,                                   /* tp_doc */
-    0,                                                  /* tp_traverse */
-    0,                                                  /* tp_clear */
-    0,                                                  /* tp_richcompare */
-    0,                                                  /* tp_weaklistoffset */
-    0,                                                  /* tp_iter */
-    0,                                                  /* tp_iternext */
-    kqueue_queue_methods,                               /* tp_methods */
-    0,                                                  /* tp_members */
-    kqueue_queue_getsetlist,                            /* tp_getset */
-    0,                                                  /* tp_base */
-    0,                                                  /* tp_dict */
-    0,                                                  /* tp_descr_get */
-    0,                                                  /* tp_descr_set */
-    0,                                                  /* tp_dictoffset */
-    0,                                                  /* tp_init */
-    0,                                                  /* tp_alloc */
-    kqueue_queue_new,                                   /* tp_new */
-    0,                                                  /* tp_free */
-};
-
-#endif /* HAVE_KQUEUE */
-/* ************************************************************************ */
-
-PyDoc_STRVAR(select_doc,
-"select(rlist, wlist, xlist[, timeout]) -> (rlist, wlist, xlist)\n\
-\n\
-Wait until one or more file descriptors are ready for some kind of I/O.\n\
-The first three arguments are sequences of file descriptors to be waited for:\n\
-rlist -- wait until ready for reading\n\
-wlist -- wait until ready for writing\n\
-xlist -- wait for an ``exceptional condition''\n\
-If only one kind of condition is required, pass [] for the other lists.\n\
-A file descriptor is either a socket or file object, or a small integer\n\
-gotten from a fileno() method call on one of those.\n\
-\n\
-The optional 4th argument specifies a timeout in seconds; it may be\n\
-a floating point number to specify fractions of seconds.  If it is absent\n\
-or None, the call will never time out.\n\
-\n\
-The return value is a tuple of three lists corresponding to the first three\n\
-arguments; each contains the subset of the corresponding file descriptors\n\
-that are ready.\n\
-\n\
-*** IMPORTANT NOTICE ***\n\
-On Windows and OpenVMS, only sockets are supported; on Unix, all file\n\
-descriptors can be used.");
-
-static PyMethodDef select_methods[] = {
-    {"select",          select_select,  METH_VARARGS,   select_doc},
-#ifdef HAVE_POLL
-    {"poll",            select_poll,    METH_NOARGS,    poll_doc},
-#endif /* HAVE_POLL */
-    {0,         0},     /* sentinel */
-};
-
-PyDoc_STRVAR(module_doc,
-"This module supports asynchronous I/O on multiple file descriptors.\n\
-\n\
-*** IMPORTANT NOTICE ***\n\
-On Windows and OpenVMS, only sockets are supported; on Unix, all file descriptors.");
-
-PyMODINIT_FUNC
-initselect(void)
-{
-    PyObject *m;
-    m = Py_InitModule3("select", select_methods, module_doc);
-    if (m == NULL)
-        return;
-
-    SelectError = PyErr_NewException("select.error", NULL, NULL);
-    Py_INCREF(SelectError);
-    PyModule_AddObject(m, "error", SelectError);
-
-#ifdef PIPE_BUF
-#ifdef HAVE_BROKEN_PIPE_BUF
-#undef PIPE_BUF
-#define PIPE_BUF 512
-#endif
-    PyModule_AddIntConstant(m, "PIPE_BUF", PIPE_BUF);
-#endif
-
-#if defined(HAVE_POLL)
-#ifdef __APPLE__
-    if (select_have_broken_poll()) {
-        if (PyObject_DelAttrString(m, "poll") == -1) {
-            PyErr_Clear();
-        }
-    } else {
-#else
-    {
-#endif
-        Py_TYPE(&poll_Type) = &PyType_Type;
-        PyModule_AddIntConstant(m, "POLLIN", POLLIN);
-        PyModule_AddIntConstant(m, "POLLPRI", POLLPRI);
-        PyModule_AddIntConstant(m, "POLLOUT", POLLOUT);
-        PyModule_AddIntConstant(m, "POLLERR", POLLERR);
-        PyModule_AddIntConstant(m, "POLLHUP", POLLHUP);
-        PyModule_AddIntConstant(m, "POLLNVAL", POLLNVAL);
-
-#ifdef POLLRDNORM
-        PyModule_AddIntConstant(m, "POLLRDNORM", POLLRDNORM);
-#endif
-#ifdef POLLRDBAND
-        PyModule_AddIntConstant(m, "POLLRDBAND", POLLRDBAND);
-#endif
-#ifdef POLLWRNORM
-        PyModule_AddIntConstant(m, "POLLWRNORM", POLLWRNORM);
-#endif
-#ifdef POLLWRBAND
-        PyModule_AddIntConstant(m, "POLLWRBAND", POLLWRBAND);
-#endif
-#ifdef POLLMSG
-        PyModule_AddIntConstant(m, "POLLMSG", POLLMSG);
-#endif
-    }
-#endif /* HAVE_POLL */
-
-#ifdef HAVE_EPOLL
-    Py_TYPE(&pyEpoll_Type) = &PyType_Type;
-    if (PyType_Ready(&pyEpoll_Type) < 0)
-        return;
-
-    Py_INCREF(&pyEpoll_Type);
-    PyModule_AddObject(m, "epoll", (PyObject *) &pyEpoll_Type);
-
-    PyModule_AddIntConstant(m, "EPOLLIN", EPOLLIN);
-    PyModule_AddIntConstant(m, "EPOLLOUT", EPOLLOUT);
-    PyModule_AddIntConstant(m, "EPOLLPRI", EPOLLPRI);
-    PyModule_AddIntConstant(m, "EPOLLERR", EPOLLERR);
-    PyModule_AddIntConstant(m, "EPOLLHUP", EPOLLHUP);
-    PyModule_AddIntConstant(m, "EPOLLET", EPOLLET);
-#ifdef EPOLLONESHOT
-    /* Kernel 2.6.2+ */
-    PyModule_AddIntConstant(m, "EPOLLONESHOT", EPOLLONESHOT);
-#endif
-    /* PyModule_AddIntConstant(m, "EPOLL_RDHUP", EPOLLRDHUP); */
-    PyModule_AddIntConstant(m, "EPOLLRDNORM", EPOLLRDNORM);
-    PyModule_AddIntConstant(m, "EPOLLRDBAND", EPOLLRDBAND);
-    PyModule_AddIntConstant(m, "EPOLLWRNORM", EPOLLWRNORM);
-    PyModule_AddIntConstant(m, "EPOLLWRBAND", EPOLLWRBAND);
-    PyModule_AddIntConstant(m, "EPOLLMSG", EPOLLMSG);
-#endif /* HAVE_EPOLL */
-
-#ifdef HAVE_KQUEUE
-    kqueue_event_Type.tp_new = PyType_GenericNew;
-    Py_TYPE(&kqueue_event_Type) = &PyType_Type;
-    if(PyType_Ready(&kqueue_event_Type) < 0)
-        return;
-
-    Py_INCREF(&kqueue_event_Type);
-    PyModule_AddObject(m, "kevent", (PyObject *)&kqueue_event_Type);
-
-    Py_TYPE(&kqueue_queue_Type) = &PyType_Type;
-    if(PyType_Ready(&kqueue_queue_Type) < 0)
-        return;
-    Py_INCREF(&kqueue_queue_Type);
-    PyModule_AddObject(m, "kqueue", (PyObject *)&kqueue_queue_Type);
-
-    /* event filters */
-    PyModule_AddIntConstant(m, "KQ_FILTER_READ", EVFILT_READ);
-    PyModule_AddIntConstant(m, "KQ_FILTER_WRITE", EVFILT_WRITE);
-    PyModule_AddIntConstant(m, "KQ_FILTER_AIO", EVFILT_AIO);
-    PyModule_AddIntConstant(m, "KQ_FILTER_VNODE", EVFILT_VNODE);
-    PyModule_AddIntConstant(m, "KQ_FILTER_PROC", EVFILT_PROC);
-#ifdef EVFILT_NETDEV
-    PyModule_AddIntConstant(m, "KQ_FILTER_NETDEV", EVFILT_NETDEV);
-#endif
-    PyModule_AddIntConstant(m, "KQ_FILTER_SIGNAL", EVFILT_SIGNAL);
-    PyModule_AddIntConstant(m, "KQ_FILTER_TIMER", EVFILT_TIMER);
-
-    /* event flags */
-    PyModule_AddIntConstant(m, "KQ_EV_ADD", EV_ADD);
-    PyModule_AddIntConstant(m, "KQ_EV_DELETE", EV_DELETE);
-    PyModule_AddIntConstant(m, "KQ_EV_ENABLE", EV_ENABLE);
-    PyModule_AddIntConstant(m, "KQ_EV_DISABLE", EV_DISABLE);
-    PyModule_AddIntConstant(m, "KQ_EV_ONESHOT", EV_ONESHOT);
-    PyModule_AddIntConstant(m, "KQ_EV_CLEAR", EV_CLEAR);
-
-    PyModule_AddIntConstant(m, "KQ_EV_SYSFLAGS", EV_SYSFLAGS);
-    PyModule_AddIntConstant(m, "KQ_EV_FLAG1", EV_FLAG1);
-
-    PyModule_AddIntConstant(m, "KQ_EV_EOF", EV_EOF);
-    PyModule_AddIntConstant(m, "KQ_EV_ERROR", EV_ERROR);
-
-    /* READ WRITE filter flag */
-    PyModule_AddIntConstant(m, "KQ_NOTE_LOWAT", NOTE_LOWAT);
-
-    /* VNODE filter flags  */
-    PyModule_AddIntConstant(m, "KQ_NOTE_DELETE", NOTE_DELETE);
-    PyModule_AddIntConstant(m, "KQ_NOTE_WRITE", NOTE_WRITE);
-    PyModule_AddIntConstant(m, "KQ_NOTE_EXTEND", NOTE_EXTEND);
-    PyModule_AddIntConstant(m, "KQ_NOTE_ATTRIB", NOTE_ATTRIB);
-    PyModule_AddIntConstant(m, "KQ_NOTE_LINK", NOTE_LINK);
-    PyModule_AddIntConstant(m, "KQ_NOTE_RENAME", NOTE_RENAME);
-    PyModule_AddIntConstant(m, "KQ_NOTE_REVOKE", NOTE_REVOKE);
-
-    /* PROC filter flags  */
-    PyModule_AddIntConstant(m, "KQ_NOTE_EXIT", NOTE_EXIT);
-    PyModule_AddIntConstant(m, "KQ_NOTE_FORK", NOTE_FORK);
-    PyModule_AddIntConstant(m, "KQ_NOTE_EXEC", NOTE_EXEC);
-    PyModule_AddIntConstant(m, "KQ_NOTE_PCTRLMASK", NOTE_PCTRLMASK);
-    PyModule_AddIntConstant(m, "KQ_NOTE_PDATAMASK", NOTE_PDATAMASK);
-
-    PyModule_AddIntConstant(m, "KQ_NOTE_TRACK", NOTE_TRACK);
-    PyModule_AddIntConstant(m, "KQ_NOTE_CHILD", NOTE_CHILD);
-    PyModule_AddIntConstant(m, "KQ_NOTE_TRACKERR", NOTE_TRACKERR);
-
-    /* NETDEV filter flags */
-#ifdef EVFILT_NETDEV
-    PyModule_AddIntConstant(m, "KQ_NOTE_LINKUP", NOTE_LINKUP);
-    PyModule_AddIntConstant(m, "KQ_NOTE_LINKDOWN", NOTE_LINKDOWN);
-    PyModule_AddIntConstant(m, "KQ_NOTE_LINKINV", NOTE_LINKINV);
-#endif
-
-#endif /* HAVE_KQUEUE */
-}
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/socketmodule.h b/AppPkg/Applications/Python/PyMod-2.7.2/Modules/socketmodule.h
deleted file mode 100644
index 1190bfd..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/socketmodule.h
+++ /dev/null
@@ -1,250 +0,0 @@
-/* Socket module header file */
-
-/* Includes needed for the sockaddr_* symbols below */
-#ifndef MS_WINDOWS
-#ifdef __VMS
-#   include <socket.h>
-# else
-#   include <sys/socket.h>
-# endif
-# include <netinet/in.h>
-# if !(defined(UEFI_C_SOURCE) || defined(__BEOS__) || defined(__CYGWIN__) || (defined(PYOS_OS2) && defined(PYCC_VACPP)))
-#  include <netinet/tcp.h>
-# endif
-
-#else /* MS_WINDOWS */
-# include <winsock2.h>
-# include <ws2tcpip.h>
-/* VC6 is shipped with old platform headers, and does not have MSTcpIP.h
- * Separate SDKs have all the functions we want, but older ones don't have
- * any version information.
- * I use SIO_GET_MULTICAST_FILTER to detect a decent SDK.
- */
-# ifdef SIO_GET_MULTICAST_FILTER
-#  include <MSTcpIP.h> /* for SIO_RCVALL */
-#  define HAVE_ADDRINFO
-#  define HAVE_SOCKADDR_STORAGE
-#  define HAVE_GETADDRINFO
-#  define HAVE_GETNAMEINFO
-#  define ENABLE_IPV6
-# else
-typedef int socklen_t;
-# endif /* IPPROTO_IPV6 */
-#endif /* MS_WINDOWS */
-
-#ifdef HAVE_SYS_UN_H
-# include <sys/un.h>
-#else
-# undef AF_UNIX
-#endif
-
-#ifdef HAVE_LINUX_NETLINK_H
-# ifdef HAVE_ASM_TYPES_H
-#  include <asm/types.h>
-# endif
-# include <linux/netlink.h>
-#else
-#  undef AF_NETLINK
-#endif
-
-#ifdef HAVE_BLUETOOTH_BLUETOOTH_H
-#include <bluetooth/bluetooth.h>
-#include <bluetooth/rfcomm.h>
-#include <bluetooth/l2cap.h>
-#include <bluetooth/sco.h>
-#include <bluetooth/hci.h>
-#endif
-
-#ifdef HAVE_BLUETOOTH_H
-#include <bluetooth.h>
-#endif
-
-#ifdef HAVE_NETPACKET_PACKET_H
-# include <sys/ioctl.h>
-# include <net/if.h>
-# include <netpacket/packet.h>
-#endif
-
-#ifdef HAVE_LINUX_TIPC_H
-# include <linux/tipc.h>
-#endif
-
-#ifndef Py__SOCKET_H
-#define Py__SOCKET_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Python module and C API name */
-#define PySocket_MODULE_NAME    "_socket"
-#define PySocket_CAPI_NAME      "CAPI"
-#define PySocket_CAPSULE_NAME  (PySocket_MODULE_NAME "." PySocket_CAPI_NAME)
-
-/* Abstract the socket file descriptor type */
-#ifdef MS_WINDOWS
-typedef SOCKET SOCKET_T;
-#       ifdef MS_WIN64
-#               define SIZEOF_SOCKET_T 8
-#       else
-#               define SIZEOF_SOCKET_T 4
-#       endif
-#else
-typedef int SOCKET_T;
-#       define SIZEOF_SOCKET_T SIZEOF_INT
-#endif
-
-/* Socket address */
-typedef union sock_addr {
-    struct sockaddr_in in;
-#ifdef AF_UNIX
-    struct sockaddr_un un;
-#endif
-#ifdef AF_NETLINK
-    struct sockaddr_nl nl;
-#endif
-#ifdef ENABLE_IPV6
-    struct sockaddr_in6 in6;
-    struct sockaddr_storage storage;
-#endif
-#ifdef HAVE_BLUETOOTH_BLUETOOTH_H
-    struct sockaddr_l2 bt_l2;
-    struct sockaddr_rc bt_rc;
-    struct sockaddr_sco bt_sco;
-    struct sockaddr_hci bt_hci;
-#endif
-#ifdef HAVE_NETPACKET_PACKET_H
-    struct sockaddr_ll ll;
-#endif
-} sock_addr_t;
-
-/* The object holding a socket.  It holds some extra information,
-   like the address family, which is used to decode socket address
-   arguments properly. */
-
-typedef struct {
-    PyObject_HEAD
-    SOCKET_T sock_fd;           /* Socket file descriptor */
-    int sock_family;            /* Address family, e.g., AF_INET */
-    int sock_type;              /* Socket type, e.g., SOCK_STREAM */
-    int sock_proto;             /* Protocol type, usually 0 */
-    PyObject *(*errorhandler)(void); /* Error handler; checks
-                                        errno, returns NULL and
-                                        sets a Python exception */
-    double sock_timeout;                 /* Operation timeout in seconds;
-                                        0.0 means non-blocking */
-} PySocketSockObject;
-
-/* --- C API ----------------------------------------------------*/
-
-/* Short explanation of what this C API export mechanism does
-   and how it works:
-
-    The _ssl module needs access to the type object defined in
-    the _socket module. Since cross-DLL linking introduces a lot of
-    problems on many platforms, the "trick" is to wrap the
-    C API of a module in a struct which then gets exported to
-    other modules via a PyCapsule.
-
-    The code in socketmodule.c defines this struct (which currently
-    only contains the type object reference, but could very
-    well also include other C APIs needed by other modules)
-    and exports it as PyCapsule via the module dictionary
-    under the name "CAPI".
-
-    Other modules can now include the socketmodule.h file
-    which defines the needed C APIs to import and set up
-    a static copy of this struct in the importing module.
-
-    After initialization, the importing module can then
-    access the C APIs from the _socket module by simply
-    referring to the static struct, e.g.
-
-    Load _socket module and its C API; this sets up the global
-    PySocketModule:
-
-    if (PySocketModule_ImportModuleAndAPI())
-        return;
-
-
-    Now use the C API as if it were defined in the using
-    module:
-
-    if (!PyArg_ParseTuple(args, "O!|zz:ssl",
-
-                          PySocketModule.Sock_Type,
-
-                          (PyObject*)&Sock,
-                          &key_file, &cert_file))
-        return NULL;
-
-    Support could easily be extended to export more C APIs/symbols
-    this way. Currently, only the type object is exported,
-    other candidates would be socket constructors and socket
-    access functions.
-
-*/
-
-/* C API for usage by other Python modules */
-typedef struct {
-    PyTypeObject *Sock_Type;
-    PyObject *error;
-} PySocketModule_APIObject;
-
-/* XXX The net effect of the following appears to be to define a function
-   XXX named PySocketModule_APIObject in _ssl.c.  It's unclear why it isn't
-   XXX defined there directly.
-
-   >>> It's defined here because other modules might also want to use
-   >>> the C API.
-
-*/
-#ifndef PySocket_BUILDING_SOCKET
-
-/* --- C API ----------------------------------------------------*/
-
-/* Interfacestructure to C API for other modules.
-   Call PySocketModule_ImportModuleAndAPI() to initialize this
-   structure. After that usage is simple:
-
-   if (!PyArg_ParseTuple(args, "O!|zz:ssl",
-                         &PySocketModule.Sock_Type, (PyObject*)&Sock,
-                         &key_file, &cert_file))
-     return NULL;
-   ...
-*/
-
-static
-PySocketModule_APIObject PySocketModule;
-
-/* You *must* call this before using any of the functions in
-   PySocketModule and check its outcome; otherwise all accesses will
-   result in a segfault. Returns 0 on success. */
-
-#ifndef DPRINTF
-# define DPRINTF if (0) printf
-#endif
-
-static
-int PySocketModule_ImportModuleAndAPI(void)
-{
-    void *api;
-
-  DPRINTF(" Loading capsule %s\n", PySocket_CAPSULE_NAME);
-  api = PyCapsule_Import(PySocket_CAPSULE_NAME, 1);
-    if (api == NULL)
-        goto onError;
-    memcpy(&PySocketModule, api, sizeof(PySocketModule));
-    DPRINTF(" API object loaded and initialized.\n");
-    return 0;
-
- onError:
-    DPRINTF(" not found.\n");
-    return -1;
-}
-
-#endif /* !PySocket_BUILDING_SOCKET */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py__SOCKET_H */
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/zlib/zutil.h b/AppPkg/Applications/Python/PyMod-2.7.2/Modules/zlib/zutil.h
deleted file mode 100644
index 55b6d1a..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Modules/zlib/zutil.h
+++ /dev/null
@@ -1,277 +0,0 @@
-/* zutil.h -- internal interface and configuration of the compression library
-
-    Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- * Copyright (C) 1995-2005 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
-**/
-
-/* WARNING: this file should *not* be used by applications. It is
-   part of the implementation of the compression library and is
-   subject to change. Applications should only use zlib.h.
- */
-
-#ifndef ZUTIL_H
-#define ZUTIL_H
-
-#define ZLIB_INTERNAL
-#include "zlib.h"
-
-#if defined(UEFI_C_SOURCE) || defined(STDC)
-#  ifndef _WIN32_WCE
-#    include <stddef.h>
-#  endif
-#  include <string.h>
-#  include <stdlib.h>
-#endif
-#ifdef NO_ERRNO_H
-#   ifdef _WIN32_WCE
-      /* The Microsoft C Run-Time Library for Windows CE doesn't have
-       * errno.  We define it as a global variable to simplify porting.
-       * Its value is always 0 and should not be used.  We rename it to
-       * avoid conflict with other libraries that use the same workaround.
-       */
-#     define errno z_errno
-#   endif
-    extern int errno;
-#else
-#  ifndef _WIN32_WCE
-#    include <errno.h>
-#  endif
-#endif
-
-#ifndef local
-#  define local static
-#endif
-/* compile with -Dlocal if your debugger can't find static symbols */
-
-typedef unsigned char  uch;
-typedef uch FAR uchf;
-typedef unsigned short ush;
-typedef ush FAR ushf;
-typedef unsigned long  ulg;
-
-extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
-/* (size given to avoid silly warnings with Visual C++) */
-
-#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
-
-#define ERR_RETURN(strm,err) \
-  return (strm->msg = (char*)ERR_MSG(err), (err))
-/* To be used only when the state is known to be valid */
-
-        /* common constants */
-
-#ifndef DEF_WBITS
-#  define DEF_WBITS MAX_WBITS
-#endif
-/* default windowBits for decompression. MAX_WBITS is for compression only */
-
-#if MAX_MEM_LEVEL >= 8
-#  define DEF_MEM_LEVEL 8
-#else
-#  define DEF_MEM_LEVEL  MAX_MEM_LEVEL
-#endif
-/* default memLevel */
-
-#define STORED_BLOCK 0
-#define STATIC_TREES 1
-#define DYN_TREES    2
-/* The three kinds of block type */
-
-#define MIN_MATCH  3
-#define MAX_MATCH  258
-/* The minimum and maximum match lengths */
-
-#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
-
-        /* target dependencies */
-
-#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32))
-#  define OS_CODE  0x00
-#  if defined(__TURBOC__) || defined(__BORLANDC__)
-#    if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
-       /* Allow compilation with ANSI keywords only enabled */
-       void _Cdecl farfree( void *block );
-       void *_Cdecl farmalloc( unsigned long nbytes );
-#    else
-#      include <alloc.h>
-#    endif
-#  else /* MSC or DJGPP */
-#    include <malloc.h>
-#  endif
-#endif
-
-#ifdef AMIGA
-#  define OS_CODE  0x01
-#endif
-
-#if defined(VAXC) || defined(VMS)
-#  define OS_CODE  0x02
-#  define F_OPEN(name, mode) \
-     fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
-#endif
-
-#if defined(ATARI) || defined(atarist)
-#  define OS_CODE  0x05
-#endif
-
-#ifdef OS2
-#  define OS_CODE  0x06
-#  ifdef M_I86
-     #include <malloc.h>
-#  endif
-#endif
-
-#if defined(MACOS) || defined(TARGET_OS_MAC)
-#  define OS_CODE  0x07
-#  if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
-#    include <unix.h> /* for fdopen */
-#  else
-#    ifndef fdopen
-#      define fdopen(fd,mode) NULL /* No fdopen() */
-#    endif
-#  endif
-#endif
-
-#ifdef TOPS20
-#  define OS_CODE  0x0a
-#endif
-
-#ifdef WIN32
-#  ifndef __CYGWIN__  /* Cygwin is Unix, not Win32 */
-#    define OS_CODE  0x0b
-#  endif
-#endif
-
-#ifdef __50SERIES /* Prime/PRIMOS */
-#  define OS_CODE  0x0f
-#endif
-
-#if defined(_BEOS_) || defined(RISCOS)
-#  define fdopen(fd,mode) NULL /* No fdopen() */
-#endif
-
-#if !defined(UEFI_C_SOURCE) && (defined(_MSC_VER) && (_MSC_VER > 600))
-#  if defined(_WIN32_WCE)
-#    define fdopen(fd,mode) NULL /* No fdopen() */
-#    ifndef _PTRDIFF_T_DEFINED
-       typedef int ptrdiff_t;
-#      define _PTRDIFF_T_DEFINED
-#    endif
-#  else
-#    define fdopen(fd,type)  _fdopen(fd,type)
-#  endif
-#endif
-
-        /* common defaults */
-
-#ifndef OS_CODE
-#  define OS_CODE  0x03  /* assume Unix */
-#endif
-
-#ifndef F_OPEN
-#  define F_OPEN(name, mode) fopen((name), (mode))
-#endif
-
-         /* functions */
-
-#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550)
-#  ifndef HAVE_VSNPRINTF
-#    define HAVE_VSNPRINTF
-#  endif
-#endif
-#if defined(__CYGWIN__)
-#  ifndef HAVE_VSNPRINTF
-#    define HAVE_VSNPRINTF
-#  endif
-#endif
-#ifndef HAVE_VSNPRINTF
-#  ifdef MSDOS
-     /* vsnprintf may exist on some MS-DOS compilers (DJGPP?),
-        but for now we just assume it doesn't. */
-#    define NO_vsnprintf
-#  endif
-#  ifdef __TURBOC__
-#    define NO_vsnprintf
-#  endif
-#  ifdef WIN32
-     /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */
-#    if !defined(vsnprintf) && !defined(NO_vsnprintf)
-#      define vsnprintf _vsnprintf
-#    endif
-#  endif
-#  ifdef __SASC
-#    define NO_vsnprintf
-#  endif
-#endif
-#ifdef VMS
-#  define NO_vsnprintf
-#endif
-
-#if defined(pyr)
-#  define NO_MEMCPY
-#endif
-#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
- /* Use our own functions for small and medium model with MSC <= 5.0.
-  * You may have to use the same strategy for Borland C (untested).
-  * The __SC__ check is for Symantec.
-  */
-#  define NO_MEMCPY
-#endif
-#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
-#  define HAVE_MEMCPY
-#endif
-#ifdef HAVE_MEMCPY
-#  ifdef SMALL_MEDIUM /* MSDOS small or medium model */
-#    define zmemcpy _fmemcpy
-#    define zmemcmp _fmemcmp
-#    define zmemzero(dest, len) _fmemset(dest, 0, len)
-#  else
-#    define zmemcpy memcpy
-#    define zmemcmp memcmp
-#    define zmemzero(dest, len) memset(dest, 0, len)
-#  endif
-#else
-   extern void zmemcpy  OF((Bytef* dest, const Bytef* source, uInt len));
-   extern int  zmemcmp  OF((const Bytef* s1, const Bytef* s2, uInt len));
-   extern void zmemzero OF((Bytef* dest, uInt len));
-#endif
-
-/* Diagnostic functions */
-#ifdef DEBUG
-#  include <stdio.h>
-   extern int z_verbose;
-   extern void z_error    OF((char *m));
-#  define Assert(cond,msg) {if(!(cond)) z_error(msg);}
-#  define Trace(x) {if (z_verbose>=0) fprintf x ;}
-#  define Tracev(x) {if (z_verbose>0) fprintf x ;}
-#  define Tracevv(x) {if (z_verbose>1) fprintf x ;}
-#  define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;}
-#  define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;}
-#else
-#  define Assert(cond,msg)
-#  define Trace(x)
-#  define Tracev(x)
-#  define Tracevv(x)
-#  define Tracec(c,x)
-#  define Tracecv(c,x)
-#endif
-
-
-voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
-void   zcfree  OF((voidpf opaque, voidpf ptr));
-
-#define ZALLOC(strm, items, size) \
-           (*((strm)->zalloc))((strm)->opaque, (items), (size))
-#define ZFREE(strm, addr)  (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
-#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
-
-#endif /* ZUTIL_H */
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Objects/longobject.c b/AppPkg/Applications/Python/PyMod-2.7.2/Objects/longobject.c
deleted file mode 100644
index 2552e99..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Objects/longobject.c
+++ /dev/null
@@ -1,4381 +0,0 @@
-/** @file
-    Long (arbitrary precision) integer object implementation.
-
-    Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-
-/* XXX The functional organization of this file is terrible */
-
-#include "Python.h"
-#include "longintrepr.h"
-#include "structseq.h"
-
-#include <float.h>
-#include <ctype.h>
-#include <stddef.h>
-
-/* For long multiplication, use the O(N**2) school algorithm unless
- * both operands contain more than KARATSUBA_CUTOFF digits (this
- * being an internal Python long digit, in base PyLong_BASE).
- */
-#define KARATSUBA_CUTOFF 70
-#define KARATSUBA_SQUARE_CUTOFF (2 * KARATSUBA_CUTOFF)
-
-/* For exponentiation, use the binary left-to-right algorithm
- * unless the exponent contains more than FIVEARY_CUTOFF digits.
- * In that case, do 5 bits at a time.  The potential drawback is that
- * a table of 2**5 intermediate results is computed.
- */
-#define FIVEARY_CUTOFF 8
-
-#ifndef ABS
-  #define ABS(x) ((x) < 0 ? -(x) : (x))
-#endif
-
-#ifndef MAX
-  #define MAX(x, y) ((x) < (y) ? (y) : (x))
-#endif
-
-#ifndef MIN
-  #define MIN(x, y) ((x) > (y) ? (y) : (x))
-#endif
-
-#define SIGCHECK(PyTryBlock)                            \
-    do {                                                \
-        if (--_Py_Ticker < 0) {                         \
-            _Py_Ticker = _Py_CheckInterval;             \
-            if (PyErr_CheckSignals()) PyTryBlock        \
-                                          }             \
-    } while(0)
-
-/* Normalize (remove leading zeros from) a long int object.
-   Doesn't attempt to free the storage--in most cases, due to the nature
-   of the algorithms used, this could save at most be one word anyway. */
-
-static PyLongObject *
-long_normalize(register PyLongObject *v)
-{
-    Py_ssize_t j = ABS(Py_SIZE(v));
-    Py_ssize_t i = j;
-
-    while (i > 0 && v->ob_digit[i-1] == 0)
-        --i;
-    if (i != j)
-        Py_SIZE(v) = (Py_SIZE(v) < 0) ? -(i) : i;
-    return v;
-}
-
-/* Allocate a new long int object with size digits.
-   Return NULL and set exception if we run out of memory. */
-
-#define MAX_LONG_DIGITS \
-    ((PY_SSIZE_T_MAX - offsetof(PyLongObject, ob_digit))/sizeof(digit))
-
-PyLongObject *
-_PyLong_New(Py_ssize_t size)
-{
-    if (size > (Py_ssize_t)MAX_LONG_DIGITS) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "too many digits in integer");
-        return NULL;
-    }
-    /* coverity[ampersand_in_size] */
-    /* XXX(nnorwitz): PyObject_NEW_VAR / _PyObject_VAR_SIZE need to detect
-       overflow */
-    return PyObject_NEW_VAR(PyLongObject, &PyLong_Type, size);
-}
-
-PyObject *
-_PyLong_Copy(PyLongObject *src)
-{
-    PyLongObject *result;
-    Py_ssize_t i;
-
-    assert(src != NULL);
-    i = src->ob_size;
-    if (i < 0)
-        i = -(i);
-    result = _PyLong_New(i);
-    if (result != NULL) {
-        result->ob_size = src->ob_size;
-        while (--i >= 0)
-            result->ob_digit[i] = src->ob_digit[i];
-    }
-    return (PyObject *)result;
-}
-
-/* Create a new long int object from a C long int */
-
-PyObject *
-PyLong_FromLong(long ival)
-{
-    PyLongObject *v;
-    unsigned long abs_ival;
-    unsigned long t;  /* unsigned so >> doesn't propagate sign bit */
-    int ndigits = 0;
-    int negative = 0;
-
-    if (ival < 0) {
-        /* if LONG_MIN == -LONG_MAX-1 (true on most platforms) then
-           ANSI C says that the result of -ival is undefined when ival
-           == LONG_MIN.  Hence the following workaround. */
-        abs_ival = (unsigned long)(-1-ival) + 1;
-        negative = 1;
-    }
-    else {
-        abs_ival = (unsigned long)ival;
-    }
-
-    /* Count the number of Python digits.
-       We used to pick 5 ("big enough for anything"), but that's a
-       waste of time and space given that 5*15 = 75 bits are rarely
-       needed. */
-    t = abs_ival;
-    while (t) {
-        ++ndigits;
-        t >>= PyLong_SHIFT;
-    }
-    v = _PyLong_New(ndigits);
-    if (v != NULL) {
-        digit *p = v->ob_digit;
-        v->ob_size = negative ? -ndigits : ndigits;
-        t = abs_ival;
-        while (t) {
-            *p++ = (digit)(t & PyLong_MASK);
-            t >>= PyLong_SHIFT;
-        }
-    }
-    return (PyObject *)v;
-}
-
-/* Create a new long int object from a C unsigned long int */
-
-PyObject *
-PyLong_FromUnsignedLong(unsigned long ival)
-{
-    PyLongObject *v;
-    unsigned long t;
-    int ndigits = 0;
-
-    /* Count the number of Python digits. */
-    t = (unsigned long)ival;
-    while (t) {
-        ++ndigits;
-        t >>= PyLong_SHIFT;
-    }
-    v = _PyLong_New(ndigits);
-    if (v != NULL) {
-        digit *p = v->ob_digit;
-        Py_SIZE(v) = ndigits;
-        while (ival) {
-            *p++ = (digit)(ival & PyLong_MASK);
-            ival >>= PyLong_SHIFT;
-        }
-    }
-    return (PyObject *)v;
-}
-
-/* Create a new long int object from a C double */
-
-PyObject *
-PyLong_FromDouble(double dval)
-{
-    PyLongObject *v;
-    double frac;
-    int i, ndig, expo, neg;
-    neg = 0;
-    if (Py_IS_INFINITY(dval)) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "cannot convert float infinity to integer");
-        return NULL;
-    }
-    if (Py_IS_NAN(dval)) {
-        PyErr_SetString(PyExc_ValueError,
-                        "cannot convert float NaN to integer");
-        return NULL;
-    }
-    if (dval < 0.0) {
-        neg = 1;
-        dval = -dval;
-    }
-    frac = frexp(dval, &expo); /* dval = frac*2**expo; 0.0 <= frac < 1.0 */
-    if (expo <= 0)
-        return PyLong_FromLong(0L);
-    ndig = (expo-1) / PyLong_SHIFT + 1; /* Number of 'digits' in result */
-    v = _PyLong_New(ndig);
-    if (v == NULL)
-        return NULL;
-    frac = ldexp(frac, (expo-1) % PyLong_SHIFT + 1);
-    for (i = ndig; --i >= 0; ) {
-        digit bits = (digit)frac;
-        v->ob_digit[i] = bits;
-        frac = frac - (double)bits;
-        frac = ldexp(frac, PyLong_SHIFT);
-    }
-    if (neg)
-        Py_SIZE(v) = -(Py_SIZE(v));
-    return (PyObject *)v;
-}
-
-/* Checking for overflow in PyLong_AsLong is a PITA since C doesn't define
- * anything about what happens when a signed integer operation overflows,
- * and some compilers think they're doing you a favor by being "clever"
- * then.  The bit pattern for the largest postive signed long is
- * (unsigned long)LONG_MAX, and for the smallest negative signed long
- * it is abs(LONG_MIN), which we could write -(unsigned long)LONG_MIN.
- * However, some other compilers warn about applying unary minus to an
- * unsigned operand.  Hence the weird "0-".
- */
-#define PY_ABS_LONG_MIN         (0-(unsigned long)LONG_MIN)
-#define PY_ABS_SSIZE_T_MIN      (0-(size_t)PY_SSIZE_T_MIN)
-
-/* Get a C long int from a Python long or Python int object.
-   On overflow, returns -1 and sets *overflow to 1 or -1 depending
-   on the sign of the result.  Otherwise *overflow is 0.
-
-   For other errors (e.g., type error), returns -1 and sets an error
-   condition.
-*/
-
-long
-PyLong_AsLongAndOverflow(PyObject *vv, int *overflow)
-{
-    /* This version by Tim Peters */
-    register PyLongObject *v;
-    unsigned long x, prev;
-    long res;
-    Py_ssize_t i;
-    int sign;
-    int do_decref = 0; /* if nb_int was called */
-
-    *overflow = 0;
-    if (vv == NULL) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-
-    if(PyInt_Check(vv))
-        return PyInt_AsLong(vv);
-
-    if (!PyLong_Check(vv)) {
-        PyNumberMethods *nb;
-        nb = vv->ob_type->tp_as_number;
-        if (nb == NULL || nb->nb_int == NULL) {
-            PyErr_SetString(PyExc_TypeError,
-                            "an integer is required");
-            return -1;
-        }
-        vv = (*nb->nb_int) (vv);
-        if (vv == NULL)
-            return -1;
-        do_decref = 1;
-        if(PyInt_Check(vv)) {
-            res = PyInt_AsLong(vv);
-            goto exit;
-        }
-        if (!PyLong_Check(vv)) {
-            Py_DECREF(vv);
-            PyErr_SetString(PyExc_TypeError,
-                            "nb_int should return int object");
-            return -1;
-        }
-    }
-
-    res = -1;
-    v = (PyLongObject *)vv;
-    i = Py_SIZE(v);
-
-    switch (i) {
-    case -1:
-        res = -(sdigit)v->ob_digit[0];
-        break;
-    case 0:
-        res = 0;
-        break;
-    case 1:
-        res = v->ob_digit[0];
-        break;
-    default:
-        sign = 1;
-        x = 0;
-        if (i < 0) {
-            sign = -1;
-            i = -(i);
-        }
-        while (--i >= 0) {
-            prev = x;
-            x = (x << PyLong_SHIFT) + v->ob_digit[i];
-            if ((x >> PyLong_SHIFT) != prev) {
-                *overflow = sign;
-                goto exit;
-            }
-        }
-        /* Haven't lost any bits, but casting to long requires extra
-         * care (see comment above).
-         */
-        if (x <= (unsigned long)LONG_MAX) {
-            res = (long)x * sign;
-        }
-        else if (sign < 0 && x == PY_ABS_LONG_MIN) {
-            res = LONG_MIN;
-        }
-        else {
-            *overflow = sign;
-            /* res is already set to -1 */
-        }
-    }
-  exit:
-    if (do_decref) {
-        Py_DECREF(vv);
-    }
-    return res;
-}
-
-/* Get a C long int from a long int object.
-   Returns -1 and sets an error condition if overflow occurs. */
-
-long
-PyLong_AsLong(PyObject *obj)
-{
-    int overflow;
-    long result = PyLong_AsLongAndOverflow(obj, &overflow);
-    if (overflow) {
-        /* XXX: could be cute and give a different
-           message for overflow == -1 */
-        PyErr_SetString(PyExc_OverflowError,
-                        "Python int too large to convert to C long");
-    }
-    return result;
-}
-
-/* Get a Py_ssize_t from a long int object.
-   Returns -1 and sets an error condition if overflow occurs. */
-
-Py_ssize_t
-PyLong_AsSsize_t(PyObject *vv) {
-    register PyLongObject *v;
-    size_t x, prev;
-    Py_ssize_t i;
-    int sign;
-
-    if (vv == NULL || !PyLong_Check(vv)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    v = (PyLongObject *)vv;
-    i = v->ob_size;
-    sign = 1;
-    x = 0;
-    if (i < 0) {
-        sign = -1;
-        i = -(i);
-    }
-    while (--i >= 0) {
-        prev = x;
-        x = (x << PyLong_SHIFT) | v->ob_digit[i];
-        if ((x >> PyLong_SHIFT) != prev)
-            goto overflow;
-    }
-    /* Haven't lost any bits, but casting to a signed type requires
-     * extra care (see comment above).
-     */
-    if (x <= (size_t)PY_SSIZE_T_MAX) {
-        return (Py_ssize_t)x * sign;
-    }
-    else if (sign < 0 && x == PY_ABS_SSIZE_T_MIN) {
-        return PY_SSIZE_T_MIN;
-    }
-    /* else overflow */
-
-  overflow:
-    PyErr_SetString(PyExc_OverflowError,
-                    "long int too large to convert to int");
-    return -1;
-}
-
-/* Get a C unsigned long int from a long int object.
-   Returns -1 and sets an error condition if overflow occurs. */
-
-unsigned long
-PyLong_AsUnsignedLong(PyObject *vv)
-{
-    register PyLongObject *v;
-    unsigned long x, prev;
-    Py_ssize_t i;
-
-    if (vv == NULL || !PyLong_Check(vv)) {
-        if (vv != NULL && PyInt_Check(vv)) {
-            long val = PyInt_AsLong(vv);
-            if (val < 0) {
-                PyErr_SetString(PyExc_OverflowError,
-                                "can't convert negative value "
-                                "to unsigned long");
-                return (unsigned long) -1;
-            }
-            return val;
-        }
-        PyErr_BadInternalCall();
-        return (unsigned long) -1;
-    }
-    v = (PyLongObject *)vv;
-    i = Py_SIZE(v);
-    x = 0;
-    if (i < 0) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "can't convert negative value to unsigned long");
-        return (unsigned long) -1;
-    }
-    while (--i >= 0) {
-        prev = x;
-        x = (x << PyLong_SHIFT) | v->ob_digit[i];
-        if ((x >> PyLong_SHIFT) != prev) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "long int too large to convert");
-            return (unsigned long) -1;
-        }
-    }
-    return x;
-}
-
-/* Get a C unsigned long int from a long int object, ignoring the high bits.
-   Returns -1 and sets an error condition if an error occurs. */
-
-unsigned long
-PyLong_AsUnsignedLongMask(PyObject *vv)
-{
-    register PyLongObject *v;
-    unsigned long x;
-    Py_ssize_t i;
-    int sign;
-
-    if (vv == NULL || !PyLong_Check(vv)) {
-        if (vv != NULL && PyInt_Check(vv))
-            return PyInt_AsUnsignedLongMask(vv);
-        PyErr_BadInternalCall();
-        return (unsigned long) -1;
-    }
-    v = (PyLongObject *)vv;
-    i = v->ob_size;
-    sign = 1;
-    x = 0;
-    if (i < 0) {
-        sign = -1;
-        i = -i;
-    }
-    while (--i >= 0) {
-        x = (x << PyLong_SHIFT) | v->ob_digit[i];
-    }
-    return x * sign;
-}
-
-int
-_PyLong_Sign(PyObject *vv)
-{
-    PyLongObject *v = (PyLongObject *)vv;
-
-    assert(v != NULL);
-    assert(PyLong_Check(v));
-
-    return Py_SIZE(v) == 0 ? 0 : (Py_SIZE(v) < 0 ? -1 : 1);
-}
-
-size_t
-_PyLong_NumBits(PyObject *vv)
-{
-    PyLongObject *v = (PyLongObject *)vv;
-    size_t result = 0;
-    Py_ssize_t ndigits;
-
-    assert(v != NULL);
-    assert(PyLong_Check(v));
-    ndigits = ABS(Py_SIZE(v));
-    assert(ndigits == 0 || v->ob_digit[ndigits - 1] != 0);
-    if (ndigits > 0) {
-        digit msd = v->ob_digit[ndigits - 1];
-
-        result = (ndigits - 1) * PyLong_SHIFT;
-        if (result / PyLong_SHIFT != (size_t)(ndigits - 1))
-            goto Overflow;
-        do {
-            ++result;
-            if (result == 0)
-                goto Overflow;
-            msd >>= 1;
-        } while (msd);
-    }
-    return result;
-
-  Overflow:
-    PyErr_SetString(PyExc_OverflowError, "long has too many bits "
-                    "to express in a platform size_t");
-    return (size_t)-1;
-}
-
-PyObject *
-_PyLong_FromByteArray(const unsigned char* bytes, size_t n,
-                      int little_endian, int is_signed)
-{
-    const unsigned char* pstartbyte;    /* LSB of bytes */
-    int incr;                           /* direction to move pstartbyte */
-    const unsigned char* pendbyte;      /* MSB of bytes */
-    size_t numsignificantbytes;         /* number of bytes that matter */
-    Py_ssize_t ndigits;                 /* number of Python long digits */
-    PyLongObject* v;                    /* result */
-    Py_ssize_t idigit = 0;              /* next free index in v->ob_digit */
-
-    if (n == 0)
-        return PyLong_FromLong(0L);
-
-    if (little_endian) {
-        pstartbyte = bytes;
-        pendbyte = bytes + n - 1;
-        incr = 1;
-    }
-    else {
-        pstartbyte = bytes + n - 1;
-        pendbyte = bytes;
-        incr = -1;
-    }
-
-    if (is_signed)
-        is_signed = *pendbyte >= 0x80;
-
-    /* Compute numsignificantbytes.  This consists of finding the most
-       significant byte.  Leading 0 bytes are insignificant if the number
-       is positive, and leading 0xff bytes if negative. */
-    {
-        size_t i;
-        const unsigned char* p = pendbyte;
-        const int pincr = -incr;  /* search MSB to LSB */
-        const unsigned char insignficant = is_signed ? 0xff : 0x00;
-
-        for (i = 0; i < n; ++i, p += pincr) {
-            if (*p != insignficant)
-                break;
-        }
-        numsignificantbytes = n - i;
-        /* 2's-comp is a bit tricky here, e.g. 0xff00 == -0x0100, so
-           actually has 2 significant bytes.  OTOH, 0xff0001 ==
-           -0x00ffff, so we wouldn't *need* to bump it there; but we
-           do for 0xffff = -0x0001.  To be safe without bothering to
-           check every case, bump it regardless. */
-        if (is_signed && numsignificantbytes < n)
-            ++numsignificantbytes;
-    }
-
-    /* How many Python long digits do we need?  We have
-       8*numsignificantbytes bits, and each Python long digit has
-       PyLong_SHIFT bits, so it's the ceiling of the quotient. */
-    /* catch overflow before it happens */
-    if (numsignificantbytes > (PY_SSIZE_T_MAX - PyLong_SHIFT) / 8) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "byte array too long to convert to int");
-        return NULL;
-    }
-    ndigits = (numsignificantbytes * 8 + PyLong_SHIFT - 1) / PyLong_SHIFT;
-    v = _PyLong_New(ndigits);
-    if (v == NULL)
-        return NULL;
-
-    /* Copy the bits over.  The tricky parts are computing 2's-comp on
-       the fly for signed numbers, and dealing with the mismatch between
-       8-bit bytes and (probably) 15-bit Python digits.*/
-    {
-        size_t i;
-        twodigits carry = 1;                    /* for 2's-comp calculation */
-        twodigits accum = 0;                    /* sliding register */
-        unsigned int accumbits = 0;             /* number of bits in accum */
-        const unsigned char* p = pstartbyte;
-
-        for (i = 0; i < numsignificantbytes; ++i, p += incr) {
-            twodigits thisbyte = *p;
-            /* Compute correction for 2's comp, if needed. */
-            if (is_signed) {
-                thisbyte = (0xff ^ thisbyte) + carry;
-                carry = thisbyte >> 8;
-                thisbyte &= 0xff;
-            }
-            /* Because we're going LSB to MSB, thisbyte is
-               more significant than what's already in accum,
-               so needs to be prepended to accum. */
-            accum |= (twodigits)thisbyte << accumbits;
-            accumbits += 8;
-            if (accumbits >= PyLong_SHIFT) {
-                /* There's enough to fill a Python digit. */
-                assert(idigit < ndigits);
-                v->ob_digit[idigit] = (digit)(accum & PyLong_MASK);
-                ++idigit;
-                accum >>= PyLong_SHIFT;
-                accumbits -= PyLong_SHIFT;
-                assert(accumbits < PyLong_SHIFT);
-            }
-        }
-        assert(accumbits < PyLong_SHIFT);
-        if (accumbits) {
-            assert(idigit < ndigits);
-            v->ob_digit[idigit] = (digit)accum;
-            ++idigit;
-        }
-    }
-
-    Py_SIZE(v) = is_signed ? -idigit : idigit;
-    return (PyObject *)long_normalize(v);
-}
-
-int
-_PyLong_AsByteArray(PyLongObject* v,
-                    unsigned char* bytes, size_t n,
-                    int little_endian, int is_signed)
-{
-    Py_ssize_t i;               /* index into v->ob_digit */
-    Py_ssize_t ndigits;         /* |v->ob_size| */
-    twodigits accum;            /* sliding register */
-    unsigned int accumbits;     /* # bits in accum */
-    int do_twos_comp;           /* store 2's-comp?  is_signed and v < 0 */
-    digit carry;                /* for computing 2's-comp */
-    size_t j;                   /* # bytes filled */
-    unsigned char* p;           /* pointer to next byte in bytes */
-    int pincr;                  /* direction to move p */
-
-    assert(v != NULL && PyLong_Check(v));
-
-    if (Py_SIZE(v) < 0) {
-        ndigits = -(Py_SIZE(v));
-        if (!is_signed) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "can't convert negative long to unsigned");
-            return -1;
-        }
-        do_twos_comp = 1;
-    }
-    else {
-        ndigits = Py_SIZE(v);
-        do_twos_comp = 0;
-    }
-
-    if (little_endian) {
-        p = bytes;
-        pincr = 1;
-    }
-    else {
-        p = bytes + n - 1;
-        pincr = -1;
-    }
-
-    /* Copy over all the Python digits.
-       It's crucial that every Python digit except for the MSD contribute
-       exactly PyLong_SHIFT bits to the total, so first assert that the long is
-       normalized. */
-    assert(ndigits == 0 || v->ob_digit[ndigits - 1] != 0);
-    j = 0;
-    accum = 0;
-    accumbits = 0;
-    carry = do_twos_comp ? 1 : 0;
-    for (i = 0; i < ndigits; ++i) {
-        digit thisdigit = v->ob_digit[i];
-        if (do_twos_comp) {
-            thisdigit = (thisdigit ^ PyLong_MASK) + carry;
-            carry = thisdigit >> PyLong_SHIFT;
-            thisdigit &= PyLong_MASK;
-        }
-        /* Because we're going LSB to MSB, thisdigit is more
-           significant than what's already in accum, so needs to be
-           prepended to accum. */
-        accum |= (twodigits)thisdigit << accumbits;
-
-        /* The most-significant digit may be (probably is) at least
-           partly empty. */
-        if (i == ndigits - 1) {
-            /* Count # of sign bits -- they needn't be stored,
-             * although for signed conversion we need later to
-             * make sure at least one sign bit gets stored. */
-            digit s = do_twos_comp ? thisdigit ^ PyLong_MASK : thisdigit;
-            while (s != 0) {
-                s >>= 1;
-                accumbits++;
-            }
-        }
-        else
-            accumbits += PyLong_SHIFT;
-
-        /* Store as many bytes as possible. */
-        while (accumbits >= 8) {
-            if (j >= n)
-                goto Overflow;
-            ++j;
-            *p = (unsigned char)(accum & 0xff);
-            p += pincr;
-            accumbits -= 8;
-            accum >>= 8;
-        }
-    }
-
-    /* Store the straggler (if any). */
-    assert(accumbits < 8);
-    assert(carry == 0);  /* else do_twos_comp and *every* digit was 0 */
-    if (accumbits > 0) {
-        if (j >= n)
-            goto Overflow;
-        ++j;
-        if (do_twos_comp) {
-            /* Fill leading bits of the byte with sign bits
-               (appropriately pretending that the long had an
-               infinite supply of sign bits). */
-            accum |= (~(twodigits)0) << accumbits;
-        }
-        *p = (unsigned char)(accum & 0xff);
-        p += pincr;
-    }
-    else if (j == n && n > 0 && is_signed) {
-        /* The main loop filled the byte array exactly, so the code
-           just above didn't get to ensure there's a sign bit, and the
-           loop below wouldn't add one either.  Make sure a sign bit
-           exists. */
-        unsigned char msb = *(p - pincr);
-        int sign_bit_set = msb >= 0x80;
-        assert(accumbits == 0);
-        if (sign_bit_set == do_twos_comp)
-            return 0;
-        else
-            goto Overflow;
-    }
-
-    /* Fill remaining bytes with copies of the sign bit. */
-    {
-        unsigned char signbyte = do_twos_comp ? 0xffU : 0U;
-        for ( ; j < n; ++j, p += pincr)
-            *p = signbyte;
-    }
-
-    return 0;
-
-  Overflow:
-    PyErr_SetString(PyExc_OverflowError, "long too big to convert");
-    return -1;
-
-}
-
-/* Create a new long (or int) object from a C pointer */
-
-PyObject *
-PyLong_FromVoidPtr(void *p)
-{
-#if SIZEOF_VOID_P <= SIZEOF_LONG
-    if ((long)p < 0)
-        return PyLong_FromUnsignedLong((unsigned long)p);
-    return PyInt_FromLong((long)p);
-#else
-
-#ifndef HAVE_LONG_LONG
-#   error "PyLong_FromVoidPtr: sizeof(void*) > sizeof(long), but no long long"
-#endif
-#if SIZEOF_LONG_LONG < SIZEOF_VOID_P
-#   error "PyLong_FromVoidPtr: sizeof(PY_LONG_LONG) < sizeof(void*)"
-#endif
-    /* optimize null pointers */
-    if (p == NULL)
-        return PyInt_FromLong(0);
-    return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)p);
-
-#endif /* SIZEOF_VOID_P <= SIZEOF_LONG */
-}
-
-/* Get a C pointer from a long object (or an int object in some cases) */
-
-void *
-PyLong_AsVoidPtr(PyObject *vv)
-{
-    /* This function will allow int or long objects. If vv is neither,
-       then the PyLong_AsLong*() functions will raise the exception:
-       PyExc_SystemError, "bad argument to internal function"
-    */
-#if SIZEOF_VOID_P <= SIZEOF_LONG
-    long x;
-
-    if (PyInt_Check(vv))
-        x = PyInt_AS_LONG(vv);
-    else if (PyLong_Check(vv) && _PyLong_Sign(vv) < 0)
-        x = PyLong_AsLong(vv);
-    else
-        x = PyLong_AsUnsignedLong(vv);
-#else
-
-#ifndef HAVE_LONG_LONG
-#   error "PyLong_AsVoidPtr: sizeof(void*) > sizeof(long), but no long long"
-#endif
-#if SIZEOF_LONG_LONG < SIZEOF_VOID_P
-#   error "PyLong_AsVoidPtr: sizeof(PY_LONG_LONG) < sizeof(void*)"
-#endif
-    PY_LONG_LONG x;
-
-    if (PyInt_Check(vv))
-        x = PyInt_AS_LONG(vv);
-    else if (PyLong_Check(vv) && _PyLong_Sign(vv) < 0)
-        x = PyLong_AsLongLong(vv);
-    else
-        x = PyLong_AsUnsignedLongLong(vv);
-
-#endif /* SIZEOF_VOID_P <= SIZEOF_LONG */
-
-    if (x == -1 && PyErr_Occurred())
-        return NULL;
-    return (void *)x;
-}
-
-#ifdef HAVE_LONG_LONG
-
-/* Initial PY_LONG_LONG support by Chris Herborth (chrish@qnx.com), later
- * rewritten to use the newer PyLong_{As,From}ByteArray API.
- */
-
-#define IS_LITTLE_ENDIAN (int)*(unsigned char*)&one
-#define PY_ABS_LLONG_MIN (0-(unsigned PY_LONG_LONG)PY_LLONG_MIN)
-
-/* Create a new long int object from a C PY_LONG_LONG int. */
-
-PyObject *
-PyLong_FromLongLong(PY_LONG_LONG ival)
-{
-    PyLongObject *v;
-    unsigned PY_LONG_LONG abs_ival;
-    unsigned PY_LONG_LONG t;  /* unsigned so >> doesn't propagate sign bit */
-    int ndigits = 0;
-    int negative = 0;
-
-    if (ival < 0) {
-        /* avoid signed overflow on negation;  see comments
-           in PyLong_FromLong above. */
-        abs_ival = (unsigned PY_LONG_LONG)(-1-ival) + 1;
-        negative = 1;
-    }
-    else {
-        abs_ival = (unsigned PY_LONG_LONG)ival;
-    }
-
-    /* Count the number of Python digits.
-       We used to pick 5 ("big enough for anything"), but that's a
-       waste of time and space given that 5*15 = 75 bits are rarely
-       needed. */
-    t = abs_ival;
-    while (t) {
-        ++ndigits;
-        t >>= PyLong_SHIFT;
-    }
-    v = _PyLong_New(ndigits);
-    if (v != NULL) {
-        digit *p = v->ob_digit;
-        Py_SIZE(v) = negative ? -ndigits : ndigits;
-        t = abs_ival;
-        while (t) {
-            *p++ = (digit)(t & PyLong_MASK);
-            t >>= PyLong_SHIFT;
-        }
-    }
-    return (PyObject *)v;
-}
-
-/* Create a new long int object from a C unsigned PY_LONG_LONG int. */
-
-PyObject *
-PyLong_FromUnsignedLongLong(unsigned PY_LONG_LONG ival)
-{
-    PyLongObject *v;
-    unsigned PY_LONG_LONG t;
-    int ndigits = 0;
-
-    /* Count the number of Python digits. */
-    t = (unsigned PY_LONG_LONG)ival;
-    while (t) {
-        ++ndigits;
-        t >>= PyLong_SHIFT;
-    }
-    v = _PyLong_New(ndigits);
-    if (v != NULL) {
-        digit *p = v->ob_digit;
-        Py_SIZE(v) = ndigits;
-        while (ival) {
-            *p++ = (digit)(ival & PyLong_MASK);
-            ival >>= PyLong_SHIFT;
-        }
-    }
-    return (PyObject *)v;
-}
-
-/* Create a new long int object from a C Py_ssize_t. */
-
-PyObject *
-PyLong_FromSsize_t(Py_ssize_t ival)
-{
-    Py_ssize_t bytes = ival;
-    int one = 1;
-    return _PyLong_FromByteArray((unsigned char *)&bytes,
-                                 SIZEOF_SIZE_T, IS_LITTLE_ENDIAN, 1);
-}
-
-/* Create a new long int object from a C size_t. */
-
-PyObject *
-PyLong_FromSize_t(size_t ival)
-{
-    size_t bytes = ival;
-    int one = 1;
-    return _PyLong_FromByteArray((unsigned char *)&bytes,
-                                 SIZEOF_SIZE_T, IS_LITTLE_ENDIAN, 0);
-}
-
-/* Get a C PY_LONG_LONG int from a long int object.
-   Return -1 and set an error if overflow occurs. */
-
-PY_LONG_LONG
-PyLong_AsLongLong(PyObject *vv)
-{
-    PY_LONG_LONG bytes;
-    int one = 1;
-    int res;
-
-    if (vv == NULL) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    if (!PyLong_Check(vv)) {
-        PyNumberMethods *nb;
-        PyObject *io;
-        if (PyInt_Check(vv))
-            return (PY_LONG_LONG)PyInt_AsLong(vv);
-        if ((nb = vv->ob_type->tp_as_number) == NULL ||
-            nb->nb_int == NULL) {
-            PyErr_SetString(PyExc_TypeError, "an integer is required");
-            return -1;
-        }
-        io = (*nb->nb_int) (vv);
-        if (io == NULL)
-            return -1;
-        if (PyInt_Check(io)) {
-            bytes = PyInt_AsLong(io);
-            Py_DECREF(io);
-            return bytes;
-        }
-        if (PyLong_Check(io)) {
-            bytes = PyLong_AsLongLong(io);
-            Py_DECREF(io);
-            return bytes;
-        }
-        Py_DECREF(io);
-        PyErr_SetString(PyExc_TypeError, "integer conversion failed");
-        return -1;
-    }
-
-    res = _PyLong_AsByteArray((PyLongObject *)vv, (unsigned char *)&bytes,
-                              SIZEOF_LONG_LONG, IS_LITTLE_ENDIAN, 1);
-
-    /* Plan 9 can't handle PY_LONG_LONG in ? : expressions */
-    if (res < 0)
-        return (PY_LONG_LONG)-1;
-    else
-        return bytes;
-}
-
-/* Get a C unsigned PY_LONG_LONG int from a long int object.
-   Return -1 and set an error if overflow occurs. */
-
-unsigned PY_LONG_LONG
-PyLong_AsUnsignedLongLong(PyObject *vv)
-{
-    unsigned PY_LONG_LONG bytes;
-    int one = 1;
-    int res;
-
-    if (vv == NULL || !PyLong_Check(vv)) {
-        PyErr_BadInternalCall();
-        return (unsigned PY_LONG_LONG)-1;
-    }
-
-    res = _PyLong_AsByteArray((PyLongObject *)vv, (unsigned char *)&bytes,
-                              SIZEOF_LONG_LONG, IS_LITTLE_ENDIAN, 0);
-
-    /* Plan 9 can't handle PY_LONG_LONG in ? : expressions */
-    if (res < 0)
-        return (unsigned PY_LONG_LONG)res;
-    else
-        return bytes;
-}
-
-/* Get a C unsigned long int from a long int object, ignoring the high bits.
-   Returns -1 and sets an error condition if an error occurs. */
-
-unsigned PY_LONG_LONG
-PyLong_AsUnsignedLongLongMask(PyObject *vv)
-{
-    register PyLongObject *v;
-    unsigned PY_LONG_LONG x;
-    Py_ssize_t i;
-    int sign;
-
-    if (vv == NULL || !PyLong_Check(vv)) {
-        PyErr_BadInternalCall();
-        return (unsigned long) -1;
-    }
-    v = (PyLongObject *)vv;
-    i = v->ob_size;
-    sign = 1;
-    x = 0;
-    if (i < 0) {
-        sign = -1;
-        i = -i;
-    }
-    while (--i >= 0) {
-        x = (x << PyLong_SHIFT) | v->ob_digit[i];
-    }
-    return x * sign;
-}
-
-/* Get a C long long int from a Python long or Python int object.
-   On overflow, returns -1 and sets *overflow to 1 or -1 depending
-   on the sign of the result.  Otherwise *overflow is 0.
-
-   For other errors (e.g., type error), returns -1 and sets an error
-   condition.
-*/
-
-PY_LONG_LONG
-PyLong_AsLongLongAndOverflow(PyObject *vv, int *overflow)
-{
-    /* This version by Tim Peters */
-    register PyLongObject *v;
-    unsigned PY_LONG_LONG x, prev;
-    PY_LONG_LONG res;
-    Py_ssize_t i;
-    int sign;
-    int do_decref = 0; /* if nb_int was called */
-
-    *overflow = 0;
-    if (vv == NULL) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-
-    if (PyInt_Check(vv))
-        return PyInt_AsLong(vv);
-
-    if (!PyLong_Check(vv)) {
-        PyNumberMethods *nb;
-        nb = vv->ob_type->tp_as_number;
-        if (nb == NULL || nb->nb_int == NULL) {
-            PyErr_SetString(PyExc_TypeError,
-                            "an integer is required");
-            return -1;
-        }
-        vv = (*nb->nb_int) (vv);
-        if (vv == NULL)
-            return -1;
-        do_decref = 1;
-        if(PyInt_Check(vv)) {
-            res = PyInt_AsLong(vv);
-            goto exit;
-        }
-        if (!PyLong_Check(vv)) {
-            Py_DECREF(vv);
-            PyErr_SetString(PyExc_TypeError,
-                            "nb_int should return int object");
-            return -1;
-        }
-    }
-
-    res = -1;
-    v = (PyLongObject *)vv;
-    i = Py_SIZE(v);
-
-    switch (i) {
-    case -1:
-        res = -(sdigit)v->ob_digit[0];
-        break;
-    case 0:
-        res = 0;
-        break;
-    case 1:
-        res = v->ob_digit[0];
-        break;
-    default:
-        sign = 1;
-        x = 0;
-        if (i < 0) {
-            sign = -1;
-            i = -(i);
-        }
-        while (--i >= 0) {
-            prev = x;
-            x = (x << PyLong_SHIFT) + v->ob_digit[i];
-            if ((x >> PyLong_SHIFT) != prev) {
-                *overflow = sign;
-                goto exit;
-            }
-        }
-        /* Haven't lost any bits, but casting to long requires extra
-         * care (see comment above).
-         */
-        if (x <= (unsigned PY_LONG_LONG)PY_LLONG_MAX) {
-            res = (PY_LONG_LONG)x * sign;
-        }
-        else if (sign < 0 && x == PY_ABS_LLONG_MIN) {
-            res = PY_LLONG_MIN;
-        }
-        else {
-            *overflow = sign;
-            /* res is already set to -1 */
-        }
-    }
-  exit:
-    if (do_decref) {
-        Py_DECREF(vv);
-    }
-    return res;
-}
-
-#undef IS_LITTLE_ENDIAN
-
-#endif /* HAVE_LONG_LONG */
-
-
-static int
-convert_binop(PyObject *v, PyObject *w, PyLongObject **a, PyLongObject **b) {
-    if (PyLong_Check(v)) {
-        *a = (PyLongObject *) v;
-        Py_INCREF(v);
-    }
-    else if (PyInt_Check(v)) {
-        *a = (PyLongObject *) PyLong_FromLong(PyInt_AS_LONG(v));
-    }
-    else {
-        return 0;
-    }
-    if (PyLong_Check(w)) {
-        *b = (PyLongObject *) w;
-        Py_INCREF(w);
-    }
-    else if (PyInt_Check(w)) {
-        *b = (PyLongObject *) PyLong_FromLong(PyInt_AS_LONG(w));
-    }
-    else {
-        Py_DECREF(*a);
-        return 0;
-    }
-    return 1;
-}
-
-#define CONVERT_BINOP(v, w, a, b)               \
-    do {                                        \
-        if (!convert_binop(v, w, a, b)) {       \
-            Py_INCREF(Py_NotImplemented);       \
-            return Py_NotImplemented;           \
-        }                                       \
-    } while(0)                                  \
-
-/* bits_in_digit(d) returns the unique integer k such that 2**(k-1) <= d <
-   2**k if d is nonzero, else 0. */
-
-static const unsigned char BitLengthTable[32] = {
-    0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
-    5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
-};
-
-static int
-bits_in_digit(digit d)
-{
-    int d_bits = 0;
-    while (d >= 32) {
-        d_bits += 6;
-        d >>= 6;
-    }
-    d_bits += (int)BitLengthTable[d];
-    return d_bits;
-}
-
-/* x[0:m] and y[0:n] are digit vectors, LSD first, m >= n required.  x[0:n]
- * is modified in place, by adding y to it.  Carries are propagated as far as
- * x[m-1], and the remaining carry (0 or 1) is returned.
- */
-static digit
-v_iadd(digit *x, Py_ssize_t m, digit *y, Py_ssize_t n)
-{
-    Py_ssize_t i;
-    digit carry = 0;
-
-    assert(m >= n);
-    for (i = 0; i < n; ++i) {
-        carry += x[i] + y[i];
-        x[i] = carry & PyLong_MASK;
-        carry >>= PyLong_SHIFT;
-        assert((carry & 1) == carry);
-    }
-    for (; carry && i < m; ++i) {
-        carry += x[i];
-        x[i] = carry & PyLong_MASK;
-        carry >>= PyLong_SHIFT;
-        assert((carry & 1) == carry);
-    }
-    return carry;
-}
-
-/* x[0:m] and y[0:n] are digit vectors, LSD first, m >= n required.  x[0:n]
- * is modified in place, by subtracting y from it.  Borrows are propagated as
- * far as x[m-1], and the remaining borrow (0 or 1) is returned.
- */
-static digit
-v_isub(digit *x, Py_ssize_t m, digit *y, Py_ssize_t n)
-{
-    Py_ssize_t i;
-    digit borrow = 0;
-
-    assert(m >= n);
-    for (i = 0; i < n; ++i) {
-        borrow = x[i] - y[i] - borrow;
-        x[i] = borrow & PyLong_MASK;
-        borrow >>= PyLong_SHIFT;
-        borrow &= 1;            /* keep only 1 sign bit */
-    }
-    for (; borrow && i < m; ++i) {
-        borrow = x[i] - borrow;
-        x[i] = borrow & PyLong_MASK;
-        borrow >>= PyLong_SHIFT;
-        borrow &= 1;
-    }
-    return borrow;
-}
-
-/* Shift digit vector a[0:m] d bits left, with 0 <= d < PyLong_SHIFT.  Put
- * result in z[0:m], and return the d bits shifted out of the top.
- */
-static digit
-v_lshift(digit *z, digit *a, Py_ssize_t m, int d)
-{
-    Py_ssize_t i;
-    digit carry = 0;
-
-    assert(0 <= d && d < PyLong_SHIFT);
-    for (i=0; i < m; i++) {
-        twodigits acc = (twodigits)a[i] << d | carry;
-        z[i] = (digit)acc & PyLong_MASK;
-        carry = (digit)(acc >> PyLong_SHIFT);
-    }
-    return carry;
-}
-
-/* Shift digit vector a[0:m] d bits right, with 0 <= d < PyLong_SHIFT.  Put
- * result in z[0:m], and return the d bits shifted out of the bottom.
- */
-static digit
-v_rshift(digit *z, digit *a, Py_ssize_t m, int d)
-{
-    Py_ssize_t i;
-    digit carry = 0;
-    digit mask = ((digit)1 << d) - 1U;
-
-    assert(0 <= d && d < PyLong_SHIFT);
-    for (i=m; i-- > 0;) {
-        twodigits acc = (twodigits)carry << PyLong_SHIFT | a[i];
-        carry = (digit)acc & mask;
-        z[i] = (digit)(acc >> d);
-    }
-    return carry;
-}
-
-/* Divide long pin, w/ size digits, by non-zero digit n, storing quotient
-   in pout, and returning the remainder.  pin and pout point at the LSD.
-   It's OK for pin == pout on entry, which saves oodles of mallocs/frees in
-   _PyLong_Format, but that should be done with great care since longs are
-   immutable. */
-
-static digit
-inplace_divrem1(digit *pout, digit *pin, Py_ssize_t size, digit n)
-{
-    twodigits rem = 0;
-
-    assert(n > 0 && n <= PyLong_MASK);
-    pin += size;
-    pout += size;
-    while (--size >= 0) {
-        digit hi;
-        rem = (rem << PyLong_SHIFT) | *--pin;
-        *--pout = hi = (digit)(rem / n);
-        rem -= (twodigits)hi * n;
-    }
-    return (digit)rem;
-}
-
-/* Divide a long integer by a digit, returning both the quotient
-   (as function result) and the remainder (through *prem).
-   The sign of a is ignored; n should not be zero. */
-
-static PyLongObject *
-divrem1(PyLongObject *a, digit n, digit *prem)
-{
-    const Py_ssize_t size = ABS(Py_SIZE(a));
-    PyLongObject *z;
-
-    assert(n > 0 && n <= PyLong_MASK);
-    z = _PyLong_New(size);
-    if (z == NULL)
-        return NULL;
-    *prem = inplace_divrem1(z->ob_digit, a->ob_digit, size, n);
-    return long_normalize(z);
-}
-
-/* Convert a long integer to a base 10 string.  Returns a new non-shared
-   string.  (Return value is non-shared so that callers can modify the
-   returned value if necessary.) */
-
-static PyObject *
-long_to_decimal_string(PyObject *aa, int addL)
-{
-    PyLongObject *scratch, *a;
-    PyObject *str;
-    Py_ssize_t size, strlen, size_a, i, j;
-    digit *pout, *pin, rem, tenpow;
-    char *p;
-    int negative;
-
-    a = (PyLongObject *)aa;
-    if (a == NULL || !PyLong_Check(a)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    size_a = ABS(Py_SIZE(a));
-    negative = Py_SIZE(a) < 0;
-
-    /* quick and dirty upper bound for the number of digits
-       required to express a in base _PyLong_DECIMAL_BASE:
-
-         #digits = 1 + floor(log2(a) / log2(_PyLong_DECIMAL_BASE))
-
-       But log2(a) < size_a * PyLong_SHIFT, and
-       log2(_PyLong_DECIMAL_BASE) = log2(10) * _PyLong_DECIMAL_SHIFT
-                                  > 3 * _PyLong_DECIMAL_SHIFT
-    */
-    if (size_a > PY_SSIZE_T_MAX / PyLong_SHIFT) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "long is too large to format");
-        return NULL;
-    }
-    /* the expression size_a * PyLong_SHIFT is now safe from overflow */
-    size = 1 + size_a * PyLong_SHIFT / (3 * _PyLong_DECIMAL_SHIFT);
-    scratch = _PyLong_New(size);
-    if (scratch == NULL)
-        return NULL;
-
-    /* convert array of base _PyLong_BASE digits in pin to an array of
-       base _PyLong_DECIMAL_BASE digits in pout, following Knuth (TAOCP,
-       Volume 2 (3rd edn), section 4.4, Method 1b). */
-    pin = a->ob_digit;
-    pout = scratch->ob_digit;
-    size = 0;
-    for (i = size_a; --i >= 0; ) {
-        digit hi = pin[i];
-        for (j = 0; j < size; j++) {
-            twodigits z = (twodigits)pout[j] << PyLong_SHIFT | hi;
-            hi = (digit)(z / _PyLong_DECIMAL_BASE);
-            pout[j] = (digit)(z - (twodigits)hi *
-                              _PyLong_DECIMAL_BASE);
-        }
-        while (hi) {
-            pout[size++] = hi % _PyLong_DECIMAL_BASE;
-            hi /= _PyLong_DECIMAL_BASE;
-        }
-        /* check for keyboard interrupt */
-        SIGCHECK({
-                Py_DECREF(scratch);
-                return NULL;
-            });
-    }
-    /* pout should have at least one digit, so that the case when a = 0
-       works correctly */
-    if (size == 0)
-        pout[size++] = 0;
-
-    /* calculate exact length of output string, and allocate */
-    strlen = (addL != 0) + negative +
-        1 + (size - 1) * _PyLong_DECIMAL_SHIFT;
-    tenpow = 10;
-    rem = pout[size-1];
-    while (rem >= tenpow) {
-        tenpow *= 10;
-        strlen++;
-    }
-    str = PyString_FromStringAndSize(NULL, strlen);
-    if (str == NULL) {
-        Py_DECREF(scratch);
-        return NULL;
-    }
-
-    /* fill the string right-to-left */
-    p = PyString_AS_STRING(str) + strlen;
-    *p = '\0';
-    if (addL)
-        *--p = 'L';
-    /* pout[0] through pout[size-2] contribute exactly
-       _PyLong_DECIMAL_SHIFT digits each */
-    for (i=0; i < size - 1; i++) {
-        rem = pout[i];
-        for (j = 0; j < _PyLong_DECIMAL_SHIFT; j++) {
-            *--p = '0' + rem % 10;
-            rem /= 10;
-        }
-    }
-    /* pout[size-1]: always produce at least one decimal digit */
-    rem = pout[i];
-    do {
-        *--p = '0' + rem % 10;
-        rem /= 10;
-    } while (rem != 0);
-
-    /* and sign */
-    if (negative)
-        *--p = '-';
-
-    /* check we've counted correctly */
-    assert(p == PyString_AS_STRING(str));
-    Py_DECREF(scratch);
-    return (PyObject *)str;
-}
-
-/* Convert the long to a string object with given base,
-   appending a base prefix of 0[box] if base is 2, 8 or 16.
-   Add a trailing "L" if addL is non-zero.
-   If newstyle is zero, then use the pre-2.6 behavior of octal having
-   a leading "0", instead of the prefix "0o" */
-PyAPI_FUNC(PyObject *)
-_PyLong_Format(PyObject *aa, int base, int addL, int newstyle)
-{
-    register PyLongObject *a = (PyLongObject *)aa;
-    PyStringObject *str;
-    Py_ssize_t i, sz;
-    Py_ssize_t size_a;
-    char *p;
-    int bits;
-    char sign = '\0';
-
-    if (base == 10)
-        return long_to_decimal_string((PyObject *)a, addL);
-
-    if (a == NULL || !PyLong_Check(a)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    assert(base >= 2 && base <= 36);
-    size_a = ABS(Py_SIZE(a));
-
-    /* Compute a rough upper bound for the length of the string */
-    i = base;
-    bits = 0;
-    while (i > 1) {
-        ++bits;
-        i >>= 1;
-    }
-    i = 5 + (addL ? 1 : 0);
-    /* ensure we don't get signed overflow in sz calculation */
-    if (size_a > (PY_SSIZE_T_MAX - i) / PyLong_SHIFT) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "long is too large to format");
-        return NULL;
-    }
-    sz = i + 1 + (size_a * PyLong_SHIFT - 1) / bits;
-    assert(sz >= 0);
-    str = (PyStringObject *) PyString_FromStringAndSize((char *)0, sz);
-    if (str == NULL)
-        return NULL;
-    p = PyString_AS_STRING(str) + sz;
-    *p = '\0';
-    if (addL)
-        *--p = 'L';
-    if (a->ob_size < 0)
-        sign = '-';
-
-    if (a->ob_size == 0) {
-        *--p = '0';
-    }
-    else if ((base & (base - 1)) == 0) {
-        /* JRH: special case for power-of-2 bases */
-        twodigits accum = 0;
-        int accumbits = 0;              /* # of bits in accum */
-        int basebits = 1;               /* # of bits in base-1 */
-        i = base;
-        while ((i >>= 1) > 1)
-            ++basebits;
-
-        for (i = 0; i < size_a; ++i) {
-            accum |= (twodigits)a->ob_digit[i] << accumbits;
-            accumbits += PyLong_SHIFT;
-            assert(accumbits >= basebits);
-            do {
-                char cdigit = (char)(accum & (base - 1));
-                cdigit += (cdigit < 10) ? '0' : 'a'-10;
-                assert(p > PyString_AS_STRING(str));
-                *--p = cdigit;
-                accumbits -= basebits;
-                accum >>= basebits;
-            } while (i < size_a-1 ? accumbits >= basebits : accum > 0);
-        }
-    }
-    else {
-        /* Not 0, and base not a power of 2.  Divide repeatedly by
-           base, but for speed use the highest power of base that
-           fits in a digit. */
-        Py_ssize_t size = size_a;
-        digit *pin = a->ob_digit;
-        PyLongObject *scratch;
-        /* powbasw <- largest power of base that fits in a digit. */
-        digit powbase = base;  /* powbase == base ** power */
-        int power = 1;
-        for (;;) {
-            twodigits newpow = powbase * (twodigits)base;
-            if (newpow >> PyLong_SHIFT)
-                /* doesn't fit in a digit */
-                break;
-            powbase = (digit)newpow;
-            ++power;
-        }
-
-        /* Get a scratch area for repeated division. */
-        scratch = _PyLong_New(size);
-        if (scratch == NULL) {
-            Py_DECREF(str);
-            return NULL;
-        }
-
-        /* Repeatedly divide by powbase. */
-        do {
-            int ntostore = power;
-            digit rem = inplace_divrem1(scratch->ob_digit,
-                                        pin, size, powbase);
-            pin = scratch->ob_digit; /* no need to use a again */
-            if (pin[size - 1] == 0)
-                --size;
-            SIGCHECK({
-                    Py_DECREF(scratch);
-                    Py_DECREF(str);
-                    return NULL;
-                });
-
-            /* Break rem into digits. */
-            assert(ntostore > 0);
-            do {
-                digit nextrem = (digit)(rem / base);
-                char c = (char)(rem - nextrem * base);
-                assert(p > PyString_AS_STRING(str));
-                c += (c < 10) ? '0' : 'a'-10;
-                *--p = c;
-                rem = nextrem;
-                --ntostore;
-                /* Termination is a bit delicate:  must not
-                   store leading zeroes, so must get out if
-                   remaining quotient and rem are both 0. */
-            } while (ntostore && (size || rem));
-        } while (size != 0);
-        Py_DECREF(scratch);
-    }
-
-    if (base == 2) {
-        *--p = 'b';
-        *--p = '0';
-    }
-    else if (base == 8) {
-        if (newstyle) {
-            *--p = 'o';
-            *--p = '0';
-        }
-        else
-            if (size_a != 0)
-                *--p = '0';
-    }
-    else if (base == 16) {
-        *--p = 'x';
-        *--p = '0';
-    }
-    else if (base != 10) {
-        *--p = '#';
-        *--p = '0' + base%10;
-        if (base > 10)
-            *--p = '0' + base/10;
-    }
-    if (sign)
-        *--p = sign;
-    if (p != PyString_AS_STRING(str)) {
-        char *q = PyString_AS_STRING(str);
-        assert(p > q);
-        do {
-        } while ((*q++ = *p++) != '\0');
-        q--;
-        _PyString_Resize((PyObject **)&str,
-                         (Py_ssize_t) (q - PyString_AS_STRING(str)));
-    }
-    return (PyObject *)str;
-}
-
-/* Table of digit values for 8-bit string -> integer conversion.
- * '0' maps to 0, ..., '9' maps to 9.
- * 'a' and 'A' map to 10, ..., 'z' and 'Z' map to 35.
- * All other indices map to 37.
- * Note that when converting a base B string, a char c is a legitimate
- * base B digit iff _PyLong_DigitValue[Py_CHARMASK(c)] < B.
- */
-int _PyLong_DigitValue[256] = {
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  37, 37, 37, 37, 37, 37,
-    37, 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, 37, 37, 37, 37, 37,
-    37, 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, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-};
-
-/* *str points to the first digit in a string of base `base` digits.  base
- * is a power of 2 (2, 4, 8, 16, or 32).  *str is set to point to the first
- * non-digit (which may be *str!).  A normalized long is returned.
- * The point to this routine is that it takes time linear in the number of
- * string characters.
- */
-static PyLongObject *
-long_from_binary_base(char **str, int base)
-{
-    char *p = *str;
-    char *start = p;
-    int bits_per_char;
-    Py_ssize_t n;
-    PyLongObject *z;
-    twodigits accum;
-    int bits_in_accum;
-    digit *pdigit;
-
-    assert(base >= 2 && base <= 32 && (base & (base - 1)) == 0);
-    n = base;
-    for (bits_per_char = -1; n; ++bits_per_char)
-        n >>= 1;
-    /* n <- total # of bits needed, while setting p to end-of-string */
-    while (_PyLong_DigitValue[Py_CHARMASK(*p)] < base)
-        ++p;
-    *str = p;
-    /* n <- # of Python digits needed, = ceiling(n/PyLong_SHIFT). */
-    n = (p - start) * bits_per_char + PyLong_SHIFT - 1;
-    if (n / bits_per_char < p - start) {
-        PyErr_SetString(PyExc_ValueError,
-                        "long string too large to convert");
-        return NULL;
-    }
-    n = n / PyLong_SHIFT;
-    z = _PyLong_New(n);
-    if (z == NULL)
-        return NULL;
-    /* Read string from right, and fill in long from left; i.e.,
-     * from least to most significant in both.
-     */
-    accum = 0;
-    bits_in_accum = 0;
-    pdigit = z->ob_digit;
-    while (--p >= start) {
-        int k = _PyLong_DigitValue[Py_CHARMASK(*p)];
-        assert(k >= 0 && k < base);
-        accum |= (twodigits)k << bits_in_accum;
-        bits_in_accum += bits_per_char;
-        if (bits_in_accum >= PyLong_SHIFT) {
-            *pdigit++ = (digit)(accum & PyLong_MASK);
-            assert(pdigit - z->ob_digit <= n);
-            accum >>= PyLong_SHIFT;
-            bits_in_accum -= PyLong_SHIFT;
-            assert(bits_in_accum < PyLong_SHIFT);
-        }
-    }
-    if (bits_in_accum) {
-        assert(bits_in_accum <= PyLong_SHIFT);
-        *pdigit++ = (digit)accum;
-        assert(pdigit - z->ob_digit <= n);
-    }
-    while (pdigit - z->ob_digit < n)
-        *pdigit++ = 0;
-    return long_normalize(z);
-}
-
-PyObject *
-PyLong_FromString(char *str, char **pend, int base)
-{
-    int sign = 1;
-    char *start, *orig_str = str;
-    PyLongObject *z;
-    PyObject *strobj, *strrepr;
-    Py_ssize_t slen;
-
-    if ((base != 0 && base < 2) || base > 36) {
-        PyErr_SetString(PyExc_ValueError,
-                        "long() arg 2 must be >= 2 and <= 36");
-        return NULL;
-    }
-    while (*str != '\0' && isspace(Py_CHARMASK(*str)))
-        str++;
-    if (*str == '+')
-        ++str;
-    else if (*str == '-') {
-        ++str;
-        sign = -1;
-    }
-    while (*str != '\0' && isspace(Py_CHARMASK(*str)))
-        str++;
-    if (base == 0) {
-        /* No base given.  Deduce the base from the contents
-           of the string */
-        if (str[0] != '0')
-            base = 10;
-        else if (str[1] == 'x' || str[1] == 'X')
-            base = 16;
-        else if (str[1] == 'o' || str[1] == 'O')
-            base = 8;
-        else if (str[1] == 'b' || str[1] == 'B')
-            base = 2;
-        else
-            /* "old" (C-style) octal literal, still valid in
-               2.x, although illegal in 3.x */
-            base = 8;
-    }
-    /* Whether or not we were deducing the base, skip leading chars
-       as needed */
-    if (str[0] == '0' &&
-        ((base == 16 && (str[1] == 'x' || str[1] == 'X')) ||
-         (base == 8  && (str[1] == 'o' || str[1] == 'O')) ||
-         (base == 2  && (str[1] == 'b' || str[1] == 'B'))))
-        str += 2;
-
-    start = str;
-    if ((base & (base - 1)) == 0)
-        z = long_from_binary_base(&str, base);
-    else {
-/***
-Binary bases can be converted in time linear in the number of digits, because
-Python's representation base is binary.  Other bases (including decimal!) use
-the simple quadratic-time algorithm below, complicated by some speed tricks.
-
-First some math:  the largest integer that can be expressed in N base-B digits
-is B**N-1.  Consequently, if we have an N-digit input in base B, the worst-
-case number of Python digits needed to hold it is the smallest integer n s.t.
-
-    PyLong_BASE**n-1 >= B**N-1  [or, adding 1 to both sides]
-    PyLong_BASE**n >= B**N      [taking logs to base PyLong_BASE]
-    n >= log(B**N)/log(PyLong_BASE) = N * log(B)/log(PyLong_BASE)
-
-The static array log_base_PyLong_BASE[base] == log(base)/log(PyLong_BASE) so
-we can compute this quickly.  A Python long with that much space is reserved
-near the start, and the result is computed into it.
-
-The input string is actually treated as being in base base**i (i.e., i digits
-are processed at a time), where two more static arrays hold:
-
-    convwidth_base[base] = the largest integer i such that
-                           base**i <= PyLong_BASE
-    convmultmax_base[base] = base ** convwidth_base[base]
-
-The first of these is the largest i such that i consecutive input digits
-must fit in a single Python digit.  The second is effectively the input
-base we're really using.
-
-Viewing the input as a sequence <c0, c1, ..., c_n-1> of digits in base
-convmultmax_base[base], the result is "simply"
-
-   (((c0*B + c1)*B + c2)*B + c3)*B + ... ))) + c_n-1
-
-where B = convmultmax_base[base].
-
-Error analysis:  as above, the number of Python digits `n` needed is worst-
-case
-
-    n >= N * log(B)/log(PyLong_BASE)
-
-where `N` is the number of input digits in base `B`.  This is computed via
-
-    size_z = (Py_ssize_t)((scan - str) * log_base_PyLong_BASE[base]) + 1;
-
-below.  Two numeric concerns are how much space this can waste, and whether
-the computed result can be too small.  To be concrete, assume PyLong_BASE =
-2**15, which is the default (and it's unlikely anyone changes that).
-
-Waste isn't a problem: provided the first input digit isn't 0, the difference
-between the worst-case input with N digits and the smallest input with N
-digits is about a factor of B, but B is small compared to PyLong_BASE so at
-most one allocated Python digit can remain unused on that count.  If
-N*log(B)/log(PyLong_BASE) is mathematically an exact integer, then truncating
-that and adding 1 returns a result 1 larger than necessary.  However, that
-can't happen: whenever B is a power of 2, long_from_binary_base() is called
-instead, and it's impossible for B**i to be an integer power of 2**15 when B
-is not a power of 2 (i.e., it's impossible for N*log(B)/log(PyLong_BASE) to be
-an exact integer when B is not a power of 2, since B**i has a prime factor
-other than 2 in that case, but (2**15)**j's only prime factor is 2).
-
-The computed result can be too small if the true value of
-N*log(B)/log(PyLong_BASE) is a little bit larger than an exact integer, but
-due to roundoff errors (in computing log(B), log(PyLong_BASE), their quotient,
-and/or multiplying that by N) yields a numeric result a little less than that
-integer.  Unfortunately, "how close can a transcendental function get to an
-integer over some range?"  questions are generally theoretically intractable.
-Computer analysis via continued fractions is practical: expand
-log(B)/log(PyLong_BASE) via continued fractions, giving a sequence i/j of "the
-best" rational approximations.  Then j*log(B)/log(PyLong_BASE) is
-approximately equal to (the integer) i.  This shows that we can get very close
-to being in trouble, but very rarely.  For example, 76573 is a denominator in
-one of the continued-fraction approximations to log(10)/log(2**15), and
-indeed:
-
-    >>> log(10)/log(2**15)*76573
-    16958.000000654003
-
-is very close to an integer.  If we were working with IEEE single-precision,
-rounding errors could kill us.  Finding worst cases in IEEE double-precision
-requires better-than-double-precision log() functions, and Tim didn't bother.
-Instead the code checks to see whether the allocated space is enough as each
-new Python digit is added, and copies the whole thing to a larger long if not.
-This should happen extremely rarely, and in fact I don't have a test case
-that triggers it(!).  Instead the code was tested by artificially allocating
-just 1 digit at the start, so that the copying code was exercised for every
-digit beyond the first.
-***/
-        register twodigits c;           /* current input character */
-        Py_ssize_t size_z;
-        int i;
-        int convwidth;
-        twodigits convmultmax, convmult;
-        digit *pz, *pzstop;
-        char* scan;
-
-        static double log_base_PyLong_BASE[37] = {0.0e0,};
-        static int convwidth_base[37] = {0,};
-        static twodigits convmultmax_base[37] = {0,};
-
-        if (log_base_PyLong_BASE[base] == 0.0) {
-            twodigits convmax = base;
-            int i = 1;
-
-            log_base_PyLong_BASE[base] = (log((double)base) /
-                                          log((double)PyLong_BASE));
-            for (;;) {
-                twodigits next = convmax * base;
-                if (next > PyLong_BASE)
-                    break;
-                convmax = next;
-                ++i;
-            }
-            convmultmax_base[base] = convmax;
-            assert(i > 0);
-            convwidth_base[base] = i;
-        }
-
-        /* Find length of the string of numeric characters. */
-        scan = str;
-        while (_PyLong_DigitValue[Py_CHARMASK(*scan)] < base)
-            ++scan;
-
-        /* Create a long object that can contain the largest possible
-         * integer with this base and length.  Note that there's no
-         * need to initialize z->ob_digit -- no slot is read up before
-         * being stored into.
-         */
-        size_z = (Py_ssize_t)((scan - str) * log_base_PyLong_BASE[base]) + 1;
-        /* Uncomment next line to test exceedingly rare copy code */
-        /* size_z = 1; */
-        assert(size_z > 0);
-        z = _PyLong_New(size_z);
-        if (z == NULL)
-            return NULL;
-        Py_SIZE(z) = 0;
-
-        /* `convwidth` consecutive input digits are treated as a single
-         * digit in base `convmultmax`.
-         */
-        convwidth = convwidth_base[base];
-        convmultmax = convmultmax_base[base];
-
-        /* Work ;-) */
-        while (str < scan) {
-            /* grab up to convwidth digits from the input string */
-            c = (digit)_PyLong_DigitValue[Py_CHARMASK(*str++)];
-            for (i = 1; i < convwidth && str != scan; ++i, ++str) {
-                c = (twodigits)(c *  base +
-                                _PyLong_DigitValue[Py_CHARMASK(*str)]);
-                assert(c < PyLong_BASE);
-            }
-
-            convmult = convmultmax;
-            /* Calculate the shift only if we couldn't get
-             * convwidth digits.
-             */
-            if (i != convwidth) {
-                convmult = base;
-                for ( ; i > 1; --i)
-                    convmult *= base;
-            }
-
-            /* Multiply z by convmult, and add c. */
-            pz = z->ob_digit;
-            pzstop = pz + Py_SIZE(z);
-            for (; pz < pzstop; ++pz) {
-                c += (twodigits)*pz * convmult;
-                *pz = (digit)(c & PyLong_MASK);
-                c >>= PyLong_SHIFT;
-            }
-            /* carry off the current end? */
-            if (c) {
-                assert(c < PyLong_BASE);
-                if (Py_SIZE(z) < size_z) {
-                    *pz = (digit)c;
-                    ++Py_SIZE(z);
-                }
-                else {
-                    PyLongObject *tmp;
-                    /* Extremely rare.  Get more space. */
-                    assert(Py_SIZE(z) == size_z);
-                    tmp = _PyLong_New(size_z + 1);
-                    if (tmp == NULL) {
-                        Py_DECREF(z);
-                        return NULL;
-                    }
-                    memcpy(tmp->ob_digit,
-                           z->ob_digit,
-                           sizeof(digit) * size_z);
-                    Py_DECREF(z);
-                    z = tmp;
-                    z->ob_digit[size_z] = (digit)c;
-                    ++size_z;
-                }
-            }
-        }
-    }
-    if (z == NULL)
-        return NULL;
-    if (str == start)
-        goto onError;
-    if (sign < 0)
-        Py_SIZE(z) = -(Py_SIZE(z));
-    if (*str == 'L' || *str == 'l')
-        str++;
-    while (*str && isspace(Py_CHARMASK(*str)))
-        str++;
-    if (*str != '\0')
-        goto onError;
-    if (pend)
-        *pend = str;
-    return (PyObject *) z;
-
-  onError:
-    Py_XDECREF(z);
-    slen = strlen(orig_str) < 200 ? strlen(orig_str) : 200;
-    strobj = PyString_FromStringAndSize(orig_str, slen);
-    if (strobj == NULL)
-        return NULL;
-    strrepr = PyObject_Repr(strobj);
-    Py_DECREF(strobj);
-    if (strrepr == NULL)
-        return NULL;
-    PyErr_Format(PyExc_ValueError,
-                 "invalid literal for long() with base %d: %s",
-                 base, PyString_AS_STRING(strrepr));
-    Py_DECREF(strrepr);
-    return NULL;
-}
-
-#ifdef Py_USING_UNICODE
-PyObject *
-PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base)
-{
-    PyObject *result;
-    char *buffer = (char *)PyMem_MALLOC(length+1);
-
-    if (buffer == NULL)
-        return NULL;
-
-    if (PyUnicode_EncodeDecimal(u, length, buffer, NULL)) {
-        PyMem_FREE(buffer);
-        return NULL;
-    }
-    result = PyLong_FromString(buffer, NULL, base);
-    PyMem_FREE(buffer);
-    return result;
-}
-#endif
-
-/* forward */
-static PyLongObject *x_divrem
-    (PyLongObject *, PyLongObject *, PyLongObject **);
-static PyObject *long_long(PyObject *v);
-
-/* Long division with remainder, top-level routine */
-
-static int
-long_divrem(PyLongObject *a, PyLongObject *b,
-            PyLongObject **pdiv, PyLongObject **prem)
-{
-    Py_ssize_t size_a = ABS(Py_SIZE(a)), size_b = ABS(Py_SIZE(b));
-    PyLongObject *z;
-
-    if (size_b == 0) {
-        PyErr_SetString(PyExc_ZeroDivisionError,
-                        "long division or modulo by zero");
-        return -1;
-    }
-    if (size_a < size_b ||
-        (size_a == size_b &&
-         a->ob_digit[size_a-1] < b->ob_digit[size_b-1])) {
-        /* |a| < |b|. */
-        *pdiv = _PyLong_New(0);
-        if (*pdiv == NULL)
-            return -1;
-        Py_INCREF(a);
-        *prem = (PyLongObject *) a;
-        return 0;
-    }
-    if (size_b == 1) {
-        digit rem = 0;
-        z = divrem1(a, b->ob_digit[0], &rem);
-        if (z == NULL)
-            return -1;
-        *prem = (PyLongObject *) PyLong_FromLong((long)rem);
-        if (*prem == NULL) {
-            Py_DECREF(z);
-            return -1;
-        }
-    }
-    else {
-        z = x_divrem(a, b, prem);
-        if (z == NULL)
-            return -1;
-    }
-    /* Set the signs.
-       The quotient z has the sign of a*b;
-       the remainder r has the sign of a,
-       so a = b*z + r. */
-    if ((a->ob_size < 0) != (b->ob_size < 0))
-        z->ob_size = -(z->ob_size);
-    if (a->ob_size < 0 && (*prem)->ob_size != 0)
-        (*prem)->ob_size = -((*prem)->ob_size);
-    *pdiv = z;
-    return 0;
-}
-
-/* Unsigned long division with remainder -- the algorithm.  The arguments v1
-   and w1 should satisfy 2 <= ABS(Py_SIZE(w1)) <= ABS(Py_SIZE(v1)). */
-
-static PyLongObject *
-x_divrem(PyLongObject *v1, PyLongObject *w1, PyLongObject **prem)
-{
-    PyLongObject *v, *w, *a;
-    Py_ssize_t i, k, size_v, size_w;
-    int d;
-    digit wm1, wm2, carry, q, r, vtop, *v0, *vk, *w0, *ak;
-    twodigits vv;
-    sdigit zhi;
-    stwodigits z;
-
-    /* We follow Knuth [The Art of Computer Programming, Vol. 2 (3rd
-       edn.), section 4.3.1, Algorithm D], except that we don't explicitly
-       handle the special case when the initial estimate q for a quotient
-       digit is >= PyLong_BASE: the max value for q is PyLong_BASE+1, and
-       that won't overflow a digit. */
-
-    /* allocate space; w will also be used to hold the final remainder */
-    size_v = ABS(Py_SIZE(v1));
-    size_w = ABS(Py_SIZE(w1));
-    assert(size_v >= size_w && size_w >= 2); /* Assert checks by div() */
-    v = _PyLong_New(size_v+1);
-    if (v == NULL) {
-        *prem = NULL;
-        return NULL;
-    }
-    w = _PyLong_New(size_w);
-    if (w == NULL) {
-        Py_DECREF(v);
-        *prem = NULL;
-        return NULL;
-    }
-
-    /* normalize: shift w1 left so that its top digit is >= PyLong_BASE/2.
-       shift v1 left by the same amount.  Results go into w and v. */
-    d = PyLong_SHIFT - bits_in_digit(w1->ob_digit[size_w-1]);
-    carry = v_lshift(w->ob_digit, w1->ob_digit, size_w, d);
-    assert(carry == 0);
-    carry = v_lshift(v->ob_digit, v1->ob_digit, size_v, d);
-    if (carry != 0 || v->ob_digit[size_v-1] >= w->ob_digit[size_w-1]) {
-        v->ob_digit[size_v] = carry;
-        size_v++;
-    }
-
-    /* Now v->ob_digit[size_v-1] < w->ob_digit[size_w-1], so quotient has
-       at most (and usually exactly) k = size_v - size_w digits. */
-    k = size_v - size_w;
-    assert(k >= 0);
-    a = _PyLong_New(k);
-    if (a == NULL) {
-        Py_DECREF(w);
-        Py_DECREF(v);
-        *prem = NULL;
-        return NULL;
-    }
-    v0 = v->ob_digit;
-    w0 = w->ob_digit;
-    wm1 = w0[size_w-1];
-    wm2 = w0[size_w-2];
-    for (vk = v0+k, ak = a->ob_digit + k; vk-- > v0;) {
-        /* inner loop: divide vk[0:size_w+1] by w0[0:size_w], giving
-           single-digit quotient q, remainder in vk[0:size_w]. */
-
-        SIGCHECK({
-                Py_DECREF(a);
-                Py_DECREF(w);
-                Py_DECREF(v);
-                *prem = NULL;
-                return NULL;
-            });
-
-        /* estimate quotient digit q; may overestimate by 1 (rare) */
-        vtop = vk[size_w];
-        assert(vtop <= wm1);
-        vv = ((twodigits)vtop << PyLong_SHIFT) | vk[size_w-1];
-        q = (digit)(vv / wm1);
-        r = (digit)(vv - (twodigits)wm1 * q); /* r = vv % wm1 */
-        while ((twodigits)wm2 * q > (((twodigits)r << PyLong_SHIFT)
-                                     | vk[size_w-2])) {
-            --q;
-            r += wm1;
-            if (r >= PyLong_BASE)
-                break;
-        }
-        assert(q <= PyLong_BASE);
-
-        /* subtract q*w0[0:size_w] from vk[0:size_w+1] */
-        zhi = 0;
-        for (i = 0; i < size_w; ++i) {
-            /* invariants: -PyLong_BASE <= -q <= zhi <= 0;
-               -PyLong_BASE * q <= z < PyLong_BASE */
-            z = (sdigit)vk[i] + zhi -
-                (stwodigits)q * (stwodigits)w0[i];
-            vk[i] = (digit)z & PyLong_MASK;
-            zhi = (sdigit)Py_ARITHMETIC_RIGHT_SHIFT(stwodigits,
-                                                    z, PyLong_SHIFT);
-        }
-
-        /* add w back if q was too large (this branch taken rarely) */
-        assert((sdigit)vtop + zhi == -1 || (sdigit)vtop + zhi == 0);
-        if ((sdigit)vtop + zhi < 0) {
-            carry = 0;
-            for (i = 0; i < size_w; ++i) {
-                carry += vk[i] + w0[i];
-                vk[i] = carry & PyLong_MASK;
-                carry >>= PyLong_SHIFT;
-            }
-            --q;
-        }
-
-        /* store quotient digit */
-        assert(q < PyLong_BASE);
-        *--ak = q;
-    }
-
-    /* unshift remainder; we reuse w to store the result */
-    carry = v_rshift(w0, v0, size_w, d);
-    assert(carry==0);
-    Py_DECREF(v);
-
-    *prem = long_normalize(w);
-    return long_normalize(a);
-}
-
-/* For a nonzero PyLong a, express a in the form x * 2**e, with 0.5 <=
-   abs(x) < 1.0 and e >= 0; return x and put e in *e.  Here x is
-   rounded to DBL_MANT_DIG significant bits using round-half-to-even.
-   If a == 0, return 0.0 and set *e = 0.  If the resulting exponent
-   e is larger than PY_SSIZE_T_MAX, raise OverflowError and return
-   -1.0. */
-
-/* attempt to define 2.0**DBL_MANT_DIG as a compile-time constant */
-#if DBL_MANT_DIG == 53
-#define EXP2_DBL_MANT_DIG 9007199254740992.0
-#else
-#define EXP2_DBL_MANT_DIG (ldexp(1.0, DBL_MANT_DIG))
-#endif
-
-double
-_PyLong_Frexp(PyLongObject *a, Py_ssize_t *e)
-{
-    Py_ssize_t a_size, a_bits, shift_digits, shift_bits, x_size;
-    /* See below for why x_digits is always large enough. */
-    digit rem, x_digits[2 + (DBL_MANT_DIG + 1) / PyLong_SHIFT];
-    double dx;
-    /* Correction term for round-half-to-even rounding.  For a digit x,
-       "x + half_even_correction[x & 7]" gives x rounded to the nearest
-       multiple of 4, rounding ties to a multiple of 8. */
-    static const int half_even_correction[8] = {0, -1, -2, 1, 0, -1, 2, 1};
-
-    a_size = ABS(Py_SIZE(a));
-    if (a_size == 0) {
-        /* Special case for 0: significand 0.0, exponent 0. */
-        *e = 0;
-        return 0.0;
-    }
-    a_bits = bits_in_digit(a->ob_digit[a_size-1]);
-    /* The following is an overflow-free version of the check
-       "if ((a_size - 1) * PyLong_SHIFT + a_bits > PY_SSIZE_T_MAX) ..." */
-    if (a_size >= (PY_SSIZE_T_MAX - 1) / PyLong_SHIFT + 1 &&
-        (a_size > (PY_SSIZE_T_MAX - 1) / PyLong_SHIFT + 1 ||
-         a_bits > (PY_SSIZE_T_MAX - 1) % PyLong_SHIFT + 1))
-        goto overflow;
-    a_bits = (a_size - 1) * PyLong_SHIFT + a_bits;
-
-    /* Shift the first DBL_MANT_DIG + 2 bits of a into x_digits[0:x_size]
-       (shifting left if a_bits <= DBL_MANT_DIG + 2).
-
-       Number of digits needed for result: write // for floor division.
-       Then if shifting left, we end up using
-
-         1 + a_size + (DBL_MANT_DIG + 2 - a_bits) // PyLong_SHIFT
-
-       digits.  If shifting right, we use
-
-         a_size - (a_bits - DBL_MANT_DIG - 2) // PyLong_SHIFT
-
-       digits.  Using a_size = 1 + (a_bits - 1) // PyLong_SHIFT along with
-       the inequalities
-
-         m // PyLong_SHIFT + n // PyLong_SHIFT <= (m + n) // PyLong_SHIFT
-         m // PyLong_SHIFT - n // PyLong_SHIFT <=
-                                          1 + (m - n - 1) // PyLong_SHIFT,
-
-       valid for any integers m and n, we find that x_size satisfies
-
-         x_size <= 2 + (DBL_MANT_DIG + 1) // PyLong_SHIFT
-
-       in both cases.
-    */
-    if (a_bits <= DBL_MANT_DIG + 2) {
-        shift_digits = (DBL_MANT_DIG + 2 - a_bits) / PyLong_SHIFT;
-        shift_bits = (DBL_MANT_DIG + 2 - a_bits) % PyLong_SHIFT;
-        x_size = 0;
-        while (x_size < shift_digits)
-            x_digits[x_size++] = 0;
-        rem = v_lshift(x_digits + x_size, a->ob_digit, a_size,
-                       (int)shift_bits);
-        x_size += a_size;
-        x_digits[x_size++] = rem;
-    }
-    else {
-        shift_digits = (a_bits - DBL_MANT_DIG - 2) / PyLong_SHIFT;
-        shift_bits = (a_bits - DBL_MANT_DIG - 2) % PyLong_SHIFT;
-        rem = v_rshift(x_digits, a->ob_digit + shift_digits,
-                       a_size - shift_digits, (int)shift_bits);
-        x_size = a_size - shift_digits;
-        /* For correct rounding below, we need the least significant
-           bit of x to be 'sticky' for this shift: if any of the bits
-           shifted out was nonzero, we set the least significant bit
-           of x. */
-        if (rem)
-            x_digits[0] |= 1;
-        else
-            while (shift_digits > 0)
-                if (a->ob_digit[--shift_digits]) {
-                    x_digits[0] |= 1;
-                    break;
-                }
-    }
-    assert(1 <= x_size &&
-           x_size <= (Py_ssize_t)(sizeof(x_digits)/sizeof(digit)));
-
-    /* Round, and convert to double. */
-    x_digits[0] += half_even_correction[x_digits[0] & 7];
-    dx = x_digits[--x_size];
-    while (x_size > 0)
-        dx = dx * PyLong_BASE + x_digits[--x_size];
-
-    /* Rescale;  make correction if result is 1.0. */
-    dx /= 4.0 * EXP2_DBL_MANT_DIG;
-    if (dx == 1.0) {
-        if (a_bits == PY_SSIZE_T_MAX)
-            goto overflow;
-        dx = 0.5;
-        a_bits += 1;
-    }
-
-    *e = a_bits;
-    return Py_SIZE(a) < 0 ? -dx : dx;
-
-  overflow:
-    /* exponent > PY_SSIZE_T_MAX */
-    PyErr_SetString(PyExc_OverflowError,
-                    "huge integer: number of bits overflows a Py_ssize_t");
-    *e = 0;
-    return -1.0;
-}
-
-/* Get a C double from a long int object.  Rounds to the nearest double,
-   using the round-half-to-even rule in the case of a tie. */
-
-double
-PyLong_AsDouble(PyObject *v)
-{
-    Py_ssize_t exponent;
-    double x;
-
-    if (v == NULL || !PyLong_Check(v)) {
-        PyErr_BadInternalCall();
-        return -1.0;
-    }
-    x = _PyLong_Frexp((PyLongObject *)v, &exponent);
-    if ((x == -1.0 && PyErr_Occurred()) || exponent > DBL_MAX_EXP) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "long int too large to convert to float");
-        return -1.0;
-    }
-    return ldexp(x, (int)exponent);
-}
-
-/* Methods */
-
-static void
-long_dealloc(PyObject *v)
-{
-    Py_TYPE(v)->tp_free(v);
-}
-
-static PyObject *
-long_repr(PyObject *v)
-{
-    return _PyLong_Format(v, 10, 1, 0);
-}
-
-static PyObject *
-long_str(PyObject *v)
-{
-    return _PyLong_Format(v, 10, 0, 0);
-}
-
-static int
-long_compare(PyLongObject *a, PyLongObject *b)
-{
-    Py_ssize_t sign;
-
-    if (Py_SIZE(a) != Py_SIZE(b)) {
-        sign = Py_SIZE(a) - Py_SIZE(b);
-    }
-    else {
-        Py_ssize_t i = ABS(Py_SIZE(a));
-        while (--i >= 0 && a->ob_digit[i] == b->ob_digit[i])
-            ;
-        if (i < 0)
-            sign = 0;
-        else {
-            sign = (sdigit)a->ob_digit[i] - (sdigit)b->ob_digit[i];
-            if (Py_SIZE(a) < 0)
-                sign = -sign;
-        }
-    }
-    return sign < 0 ? -1 : sign > 0 ? 1 : 0;
-}
-
-static long
-long_hash(PyLongObject *v)
-{
-    unsigned long x;
-    Py_ssize_t i;
-    int sign;
-
-    /* This is designed so that Python ints and longs with the
-       same value hash to the same value, otherwise comparisons
-       of mapping keys will turn out weird */
-    i = v->ob_size;
-    sign = 1;
-    x = 0;
-    if (i < 0) {
-        sign = -1;
-        i = -(i);
-    }
-    /* The following loop produces a C unsigned long x such that x is
-       congruent to the absolute value of v modulo ULONG_MAX.  The
-       resulting x is nonzero if and only if v is. */
-    while (--i >= 0) {
-        /* Force a native long #-bits (32 or 64) circular shift */
-        x = (x >> (8*SIZEOF_LONG-PyLong_SHIFT)) | (x << PyLong_SHIFT);
-        x += v->ob_digit[i];
-        /* If the addition above overflowed we compensate by
-           incrementing.  This preserves the value modulo
-           ULONG_MAX. */
-        if (x < v->ob_digit[i])
-            x++;
-    }
-    x = x * sign;
-    if (x == (unsigned long)-1)
-        x = (unsigned long)-2;
-    return (long)x;
-}
-
-
-/* Add the absolute values of two long integers. */
-
-static PyLongObject *
-x_add(PyLongObject *a, PyLongObject *b)
-{
-    Py_ssize_t size_a = ABS(Py_SIZE(a)), size_b = ABS(Py_SIZE(b));
-    PyLongObject *z;
-    Py_ssize_t i;
-    digit carry = 0;
-
-    /* Ensure a is the larger of the two: */
-    if (size_a < size_b) {
-        { PyLongObject *temp = a; a = b; b = temp; }
-        { Py_ssize_t size_temp = size_a;
-            size_a = size_b;
-            size_b = size_temp; }
-    }
-    z = _PyLong_New(size_a+1);
-    if (z == NULL)
-        return NULL;
-    for (i = 0; i < size_b; ++i) {
-        carry += a->ob_digit[i] + b->ob_digit[i];
-        z->ob_digit[i] = carry & PyLong_MASK;
-        carry >>= PyLong_SHIFT;
-    }
-    for (; i < size_a; ++i) {
-        carry += a->ob_digit[i];
-        z->ob_digit[i] = carry & PyLong_MASK;
-        carry >>= PyLong_SHIFT;
-    }
-    z->ob_digit[i] = carry;
-    return long_normalize(z);
-}
-
-/* Subtract the absolute values of two integers. */
-
-static PyLongObject *
-x_sub(PyLongObject *a, PyLongObject *b)
-{
-    Py_ssize_t size_a = ABS(Py_SIZE(a)), size_b = ABS(Py_SIZE(b));
-    PyLongObject *z;
-    Py_ssize_t i;
-    int sign = 1;
-    digit borrow = 0;
-
-    /* Ensure a is the larger of the two: */
-    if (size_a < size_b) {
-        sign = -1;
-        { PyLongObject *temp = a; a = b; b = temp; }
-        { Py_ssize_t size_temp = size_a;
-            size_a = size_b;
-            size_b = size_temp; }
-    }
-    else if (size_a == size_b) {
-        /* Find highest digit where a and b differ: */
-        i = size_a;
-        while (--i >= 0 && a->ob_digit[i] == b->ob_digit[i])
-            ;
-        if (i < 0)
-            return _PyLong_New(0);
-        if (a->ob_digit[i] < b->ob_digit[i]) {
-            sign = -1;
-            { PyLongObject *temp = a; a = b; b = temp; }
-        }
-        size_a = size_b = i+1;
-    }
-    z = _PyLong_New(size_a);
-    if (z == NULL)
-        return NULL;
-    for (i = 0; i < size_b; ++i) {
-        /* The following assumes unsigned arithmetic
-           works module 2**N for some N>PyLong_SHIFT. */
-        borrow = a->ob_digit[i] - b->ob_digit[i] - borrow;
-        z->ob_digit[i] = borrow & PyLong_MASK;
-        borrow >>= PyLong_SHIFT;
-        borrow &= 1; /* Keep only one sign bit */
-    }
-    for (; i < size_a; ++i) {
-        borrow = a->ob_digit[i] - borrow;
-        z->ob_digit[i] = borrow & PyLong_MASK;
-        borrow >>= PyLong_SHIFT;
-        borrow &= 1; /* Keep only one sign bit */
-    }
-    assert(borrow == 0);
-    if (sign < 0)
-        z->ob_size = -(z->ob_size);
-    return long_normalize(z);
-}
-
-static PyObject *
-long_add(PyLongObject *v, PyLongObject *w)
-{
-    PyLongObject *a, *b, *z;
-
-    CONVERT_BINOP((PyObject *)v, (PyObject *)w, &a, &b);
-
-    if (a->ob_size < 0) {
-        if (b->ob_size < 0) {
-            z = x_add(a, b);
-            if (z != NULL && z->ob_size != 0)
-                z->ob_size = -(z->ob_size);
-        }
-        else
-            z = x_sub(b, a);
-    }
-    else {
-        if (b->ob_size < 0)
-            z = x_sub(a, b);
-        else
-            z = x_add(a, b);
-    }
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *)z;
-}
-
-static PyObject *
-long_sub(PyLongObject *v, PyLongObject *w)
-{
-    PyLongObject *a, *b, *z;
-
-    CONVERT_BINOP((PyObject *)v, (PyObject *)w, &a, &b);
-
-    if (a->ob_size < 0) {
-        if (b->ob_size < 0)
-            z = x_sub(a, b);
-        else
-            z = x_add(a, b);
-        if (z != NULL && z->ob_size != 0)
-            z->ob_size = -(z->ob_size);
-    }
-    else {
-        if (b->ob_size < 0)
-            z = x_add(a, b);
-        else
-            z = x_sub(a, b);
-    }
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *)z;
-}
-
-/* Grade school multiplication, ignoring the signs.
- * Returns the absolute value of the product, or NULL if error.
- */
-static PyLongObject *
-x_mul(PyLongObject *a, PyLongObject *b)
-{
-    PyLongObject *z;
-    Py_ssize_t size_a = ABS(Py_SIZE(a));
-    Py_ssize_t size_b = ABS(Py_SIZE(b));
-    Py_ssize_t i;
-
-    z = _PyLong_New(size_a + size_b);
-    if (z == NULL)
-        return NULL;
-
-    memset(z->ob_digit, 0, Py_SIZE(z) * sizeof(digit));
-    if (a == b) {
-        /* Efficient squaring per HAC, Algorithm 14.16:
-         * http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf
-         * Gives slightly less than a 2x speedup when a == b,
-         * via exploiting that each entry in the multiplication
-         * pyramid appears twice (except for the size_a squares).
-         */
-        for (i = 0; i < size_a; ++i) {
-            twodigits carry;
-            twodigits f = a->ob_digit[i];
-            digit *pz = z->ob_digit + (i << 1);
-            digit *pa = a->ob_digit + i + 1;
-            digit *paend = a->ob_digit + size_a;
-
-            SIGCHECK({
-                    Py_DECREF(z);
-                    return NULL;
-                });
-
-            carry = *pz + f * f;
-            *pz++ = (digit)(carry & PyLong_MASK);
-            carry >>= PyLong_SHIFT;
-            assert(carry <= PyLong_MASK);
-
-            /* Now f is added in twice in each column of the
-             * pyramid it appears.  Same as adding f<<1 once.
-             */
-            f <<= 1;
-            while (pa < paend) {
-                carry += *pz + *pa++ * f;
-                *pz++ = (digit)(carry & PyLong_MASK);
-                carry >>= PyLong_SHIFT;
-                assert(carry <= (PyLong_MASK << 1));
-            }
-            if (carry) {
-                carry += *pz;
-                *pz++ = (digit)(carry & PyLong_MASK);
-                carry >>= PyLong_SHIFT;
-            }
-            if (carry)
-                *pz += (digit)(carry & PyLong_MASK);
-            assert((carry >> PyLong_SHIFT) == 0);
-        }
-    }
-    else {      /* a is not the same as b -- gradeschool long mult */
-        for (i = 0; i < size_a; ++i) {
-            twodigits carry = 0;
-            twodigits f = a->ob_digit[i];
-            digit *pz = z->ob_digit + i;
-            digit *pb = b->ob_digit;
-            digit *pbend = b->ob_digit + size_b;
-
-            SIGCHECK({
-                    Py_DECREF(z);
-                    return NULL;
-                });
-
-            while (pb < pbend) {
-                carry += *pz + *pb++ * f;
-                *pz++ = (digit)(carry & PyLong_MASK);
-                carry >>= PyLong_SHIFT;
-                assert(carry <= PyLong_MASK);
-            }
-            if (carry)
-                *pz += (digit)(carry & PyLong_MASK);
-            assert((carry >> PyLong_SHIFT) == 0);
-        }
-    }
-    return long_normalize(z);
-}
-
-/* A helper for Karatsuba multiplication (k_mul).
-   Takes a long "n" and an integer "size" representing the place to
-   split, and sets low and high such that abs(n) == (high << size) + low,
-   viewing the shift as being by digits.  The sign bit is ignored, and
-   the return values are >= 0.
-   Returns 0 on success, -1 on failure.
-*/
-static int
-kmul_split(PyLongObject *n,
-           Py_ssize_t size,
-           PyLongObject **high,
-           PyLongObject **low)
-{
-    PyLongObject *hi, *lo;
-    Py_ssize_t size_lo, size_hi;
-    const Py_ssize_t size_n = ABS(Py_SIZE(n));
-
-    size_lo = MIN(size_n, size);
-    size_hi = size_n - size_lo;
-
-    if ((hi = _PyLong_New(size_hi)) == NULL)
-        return -1;
-    if ((lo = _PyLong_New(size_lo)) == NULL) {
-        Py_DECREF(hi);
-        return -1;
-    }
-
-    memcpy(lo->ob_digit, n->ob_digit, size_lo * sizeof(digit));
-    memcpy(hi->ob_digit, n->ob_digit + size_lo, size_hi * sizeof(digit));
-
-    *high = long_normalize(hi);
-    *low = long_normalize(lo);
-    return 0;
-}
-
-static PyLongObject *k_lopsided_mul(PyLongObject *a, PyLongObject *b);
-
-/* Karatsuba multiplication.  Ignores the input signs, and returns the
- * absolute value of the product (or NULL if error).
- * See Knuth Vol. 2 Chapter 4.3.3 (Pp. 294-295).
- */
-static PyLongObject *
-k_mul(PyLongObject *a, PyLongObject *b)
-{
-    Py_ssize_t asize = ABS(Py_SIZE(a));
-    Py_ssize_t bsize = ABS(Py_SIZE(b));
-    PyLongObject *ah = NULL;
-    PyLongObject *al = NULL;
-    PyLongObject *bh = NULL;
-    PyLongObject *bl = NULL;
-    PyLongObject *ret = NULL;
-    PyLongObject *t1, *t2, *t3;
-    Py_ssize_t shift;           /* the number of digits we split off */
-    Py_ssize_t i;
-
-    /* (ah*X+al)(bh*X+bl) = ah*bh*X*X + (ah*bl + al*bh)*X + al*bl
-     * Let k = (ah+al)*(bh+bl) = ah*bl + al*bh  + ah*bh + al*bl
-     * Then the original product is
-     *     ah*bh*X*X + (k - ah*bh - al*bl)*X + al*bl
-     * By picking X to be a power of 2, "*X" is just shifting, and it's
-     * been reduced to 3 multiplies on numbers half the size.
-     */
-
-    /* We want to split based on the larger number; fiddle so that b
-     * is largest.
-     */
-    if (asize > bsize) {
-        t1 = a;
-        a = b;
-        b = t1;
-
-        i = asize;
-        asize = bsize;
-        bsize = i;
-    }
-
-    /* Use gradeschool math when either number is too small. */
-    i = a == b ? KARATSUBA_SQUARE_CUTOFF : KARATSUBA_CUTOFF;
-    if (asize <= i) {
-        if (asize == 0)
-            return _PyLong_New(0);
-        else
-            return x_mul(a, b);
-    }
-
-    /* If a is small compared to b, splitting on b gives a degenerate
-     * case with ah==0, and Karatsuba may be (even much) less efficient
-     * than "grade school" then.  However, we can still win, by viewing
-     * b as a string of "big digits", each of width a->ob_size.  That
-     * leads to a sequence of balanced calls to k_mul.
-     */
-    if (2 * asize <= bsize)
-        return k_lopsided_mul(a, b);
-
-    /* Split a & b into hi & lo pieces. */
-    shift = bsize >> 1;
-    if (kmul_split(a, shift, &ah, &al) < 0) goto fail;
-    assert(Py_SIZE(ah) > 0);            /* the split isn't degenerate */
-
-    if (a == b) {
-        bh = ah;
-        bl = al;
-        Py_INCREF(bh);
-        Py_INCREF(bl);
-    }
-    else if (kmul_split(b, shift, &bh, &bl) < 0) goto fail;
-
-    /* The plan:
-     * 1. Allocate result space (asize + bsize digits:  that's always
-     *    enough).
-     * 2. Compute ah*bh, and copy into result at 2*shift.
-     * 3. Compute al*bl, and copy into result at 0.  Note that this
-     *    can't overlap with #2.
-     * 4. Subtract al*bl from the result, starting at shift.  This may
-     *    underflow (borrow out of the high digit), but we don't care:
-     *    we're effectively doing unsigned arithmetic mod
-     *    PyLong_BASE**(sizea + sizeb), and so long as the *final* result fits,
-     *    borrows and carries out of the high digit can be ignored.
-     * 5. Subtract ah*bh from the result, starting at shift.
-     * 6. Compute (ah+al)*(bh+bl), and add it into the result starting
-     *    at shift.
-     */
-
-    /* 1. Allocate result space. */
-    ret = _PyLong_New(asize + bsize);
-    if (ret == NULL) goto fail;
-#ifdef Py_DEBUG
-    /* Fill with trash, to catch reference to uninitialized digits. */
-    memset(ret->ob_digit, 0xDF, Py_SIZE(ret) * sizeof(digit));
-#endif
-
-    /* 2. t1 <- ah*bh, and copy into high digits of result. */
-    if ((t1 = k_mul(ah, bh)) == NULL) goto fail;
-    assert(Py_SIZE(t1) >= 0);
-    assert(2*shift + Py_SIZE(t1) <= Py_SIZE(ret));
-    memcpy(ret->ob_digit + 2*shift, t1->ob_digit,
-           Py_SIZE(t1) * sizeof(digit));
-
-    /* Zero-out the digits higher than the ah*bh copy. */
-    i = Py_SIZE(ret) - 2*shift - Py_SIZE(t1);
-    if (i)
-        memset(ret->ob_digit + 2*shift + Py_SIZE(t1), 0,
-               i * sizeof(digit));
-
-    /* 3. t2 <- al*bl, and copy into the low digits. */
-    if ((t2 = k_mul(al, bl)) == NULL) {
-        Py_DECREF(t1);
-        goto fail;
-    }
-    assert(Py_SIZE(t2) >= 0);
-    assert(Py_SIZE(t2) <= 2*shift); /* no overlap with high digits */
-    memcpy(ret->ob_digit, t2->ob_digit, Py_SIZE(t2) * sizeof(digit));
-
-    /* Zero out remaining digits. */
-    i = 2*shift - Py_SIZE(t2);          /* number of uninitialized digits */
-    if (i)
-        memset(ret->ob_digit + Py_SIZE(t2), 0, i * sizeof(digit));
-
-    /* 4 & 5. Subtract ah*bh (t1) and al*bl (t2).  We do al*bl first
-     * because it's fresher in cache.
-     */
-    i = Py_SIZE(ret) - shift;  /* # digits after shift */
-    (void)v_isub(ret->ob_digit + shift, i, t2->ob_digit, Py_SIZE(t2));
-    Py_DECREF(t2);
-
-    (void)v_isub(ret->ob_digit + shift, i, t1->ob_digit, Py_SIZE(t1));
-    Py_DECREF(t1);
-
-    /* 6. t3 <- (ah+al)(bh+bl), and add into result. */
-    if ((t1 = x_add(ah, al)) == NULL) goto fail;
-    Py_DECREF(ah);
-    Py_DECREF(al);
-    ah = al = NULL;
-
-    if (a == b) {
-        t2 = t1;
-        Py_INCREF(t2);
-    }
-    else if ((t2 = x_add(bh, bl)) == NULL) {
-        Py_DECREF(t1);
-        goto fail;
-    }
-    Py_DECREF(bh);
-    Py_DECREF(bl);
-    bh = bl = NULL;
-
-    t3 = k_mul(t1, t2);
-    Py_DECREF(t1);
-    Py_DECREF(t2);
-    if (t3 == NULL) goto fail;
-    assert(Py_SIZE(t3) >= 0);
-
-    /* Add t3.  It's not obvious why we can't run out of room here.
-     * See the (*) comment after this function.
-     */
-    (void)v_iadd(ret->ob_digit + shift, i, t3->ob_digit, Py_SIZE(t3));
-    Py_DECREF(t3);
-
-    return long_normalize(ret);
-
-  fail:
-    Py_XDECREF(ret);
-    Py_XDECREF(ah);
-    Py_XDECREF(al);
-    Py_XDECREF(bh);
-    Py_XDECREF(bl);
-    return NULL;
-}
-
-/* (*) Why adding t3 can't "run out of room" above.
-
-Let f(x) mean the floor of x and c(x) mean the ceiling of x.  Some facts
-to start with:
-
-1. For any integer i, i = c(i/2) + f(i/2).  In particular,
-   bsize = c(bsize/2) + f(bsize/2).
-2. shift = f(bsize/2)
-3. asize <= bsize
-4. Since we call k_lopsided_mul if asize*2 <= bsize, asize*2 > bsize in this
-   routine, so asize > bsize/2 >= f(bsize/2) in this routine.
-
-We allocated asize + bsize result digits, and add t3 into them at an offset
-of shift.  This leaves asize+bsize-shift allocated digit positions for t3
-to fit into, = (by #1 and #2) asize + f(bsize/2) + c(bsize/2) - f(bsize/2) =
-asize + c(bsize/2) available digit positions.
-
-bh has c(bsize/2) digits, and bl at most f(size/2) digits.  So bh+hl has
-at most c(bsize/2) digits + 1 bit.
-
-If asize == bsize, ah has c(bsize/2) digits, else ah has at most f(bsize/2)
-digits, and al has at most f(bsize/2) digits in any case.  So ah+al has at
-most (asize == bsize ? c(bsize/2) : f(bsize/2)) digits + 1 bit.
-
-The product (ah+al)*(bh+bl) therefore has at most
-
-    c(bsize/2) + (asize == bsize ? c(bsize/2) : f(bsize/2)) digits + 2 bits
-
-and we have asize + c(bsize/2) available digit positions.  We need to show
-this is always enough.  An instance of c(bsize/2) cancels out in both, so
-the question reduces to whether asize digits is enough to hold
-(asize == bsize ? c(bsize/2) : f(bsize/2)) digits + 2 bits.  If asize < bsize,
-then we're asking whether asize digits >= f(bsize/2) digits + 2 bits.  By #4,
-asize is at least f(bsize/2)+1 digits, so this in turn reduces to whether 1
-digit is enough to hold 2 bits.  This is so since PyLong_SHIFT=15 >= 2.  If
-asize == bsize, then we're asking whether bsize digits is enough to hold
-c(bsize/2) digits + 2 bits, or equivalently (by #1) whether f(bsize/2) digits
-is enough to hold 2 bits.  This is so if bsize >= 2, which holds because
-bsize >= KARATSUBA_CUTOFF >= 2.
-
-Note that since there's always enough room for (ah+al)*(bh+bl), and that's
-clearly >= each of ah*bh and al*bl, there's always enough room to subtract
-ah*bh and al*bl too.
-*/
-
-/* b has at least twice the digits of a, and a is big enough that Karatsuba
- * would pay off *if* the inputs had balanced sizes.  View b as a sequence
- * of slices, each with a->ob_size digits, and multiply the slices by a,
- * one at a time.  This gives k_mul balanced inputs to work with, and is
- * also cache-friendly (we compute one double-width slice of the result
- * at a time, then move on, never backtracking except for the helpful
- * single-width slice overlap between successive partial sums).
- */
-static PyLongObject *
-k_lopsided_mul(PyLongObject *a, PyLongObject *b)
-{
-    const Py_ssize_t asize = ABS(Py_SIZE(a));
-    Py_ssize_t bsize = ABS(Py_SIZE(b));
-    Py_ssize_t nbdone;          /* # of b digits already multiplied */
-    PyLongObject *ret;
-    PyLongObject *bslice = NULL;
-
-    assert(asize > KARATSUBA_CUTOFF);
-    assert(2 * asize <= bsize);
-
-    /* Allocate result space, and zero it out. */
-    ret = _PyLong_New(asize + bsize);
-    if (ret == NULL)
-        return NULL;
-    memset(ret->ob_digit, 0, Py_SIZE(ret) * sizeof(digit));
-
-    /* Successive slices of b are copied into bslice. */
-    bslice = _PyLong_New(asize);
-    if (bslice == NULL)
-        goto fail;
-
-    nbdone = 0;
-    while (bsize > 0) {
-        PyLongObject *product;
-        const Py_ssize_t nbtouse = MIN(bsize, asize);
-
-        /* Multiply the next slice of b by a. */
-        memcpy(bslice->ob_digit, b->ob_digit + nbdone,
-               nbtouse * sizeof(digit));
-        Py_SIZE(bslice) = nbtouse;
-        product = k_mul(a, bslice);
-        if (product == NULL)
-            goto fail;
-
-        /* Add into result. */
-        (void)v_iadd(ret->ob_digit + nbdone, Py_SIZE(ret) - nbdone,
-                     product->ob_digit, Py_SIZE(product));
-        Py_DECREF(product);
-
-        bsize -= nbtouse;
-        nbdone += nbtouse;
-    }
-
-    Py_DECREF(bslice);
-    return long_normalize(ret);
-
-  fail:
-    Py_DECREF(ret);
-    Py_XDECREF(bslice);
-    return NULL;
-}
-
-static PyObject *
-long_mul(PyLongObject *v, PyLongObject *w)
-{
-    PyLongObject *a, *b, *z;
-
-    if (!convert_binop((PyObject *)v, (PyObject *)w, &a, &b)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-
-    z = k_mul(a, b);
-    /* Negate if exactly one of the inputs is negative. */
-    if (((a->ob_size ^ b->ob_size) < 0) && z)
-        z->ob_size = -(z->ob_size);
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *)z;
-}
-
-/* The / and % operators are now defined in terms of divmod().
-   The expression a mod b has the value a - b*floor(a/b).
-   The long_divrem function gives the remainder after division of
-   |a| by |b|, with the sign of a.  This is also expressed
-   as a - b*trunc(a/b), if trunc truncates towards zero.
-   Some examples:
-     a           b      a rem b         a mod b
-     13          10      3               3
-    -13          10     -3               7
-     13         -10      3              -7
-    -13         -10     -3              -3
-   So, to get from rem to mod, we have to add b if a and b
-   have different signs.  We then subtract one from the 'div'
-   part of the outcome to keep the invariant intact. */
-
-/* Compute
- *     *pdiv, *pmod = divmod(v, w)
- * NULL can be passed for pdiv or pmod, in which case that part of
- * the result is simply thrown away.  The caller owns a reference to
- * each of these it requests (does not pass NULL for).
- */
-static int
-l_divmod(PyLongObject *v, PyLongObject *w,
-         PyLongObject **pdiv, PyLongObject **pmod)
-{
-    PyLongObject *div, *mod;
-
-    if (long_divrem(v, w, &div, &mod) < 0)
-        return -1;
-    if ((Py_SIZE(mod) < 0 && Py_SIZE(w) > 0) ||
-        (Py_SIZE(mod) > 0 && Py_SIZE(w) < 0)) {
-        PyLongObject *temp;
-        PyLongObject *one;
-        temp = (PyLongObject *) long_add(mod, w);
-        Py_DECREF(mod);
-        mod = temp;
-        if (mod == NULL) {
-            Py_DECREF(div);
-            return -1;
-        }
-        one = (PyLongObject *) PyLong_FromLong(1L);
-        if (one == NULL ||
-            (temp = (PyLongObject *) long_sub(div, one)) == NULL) {
-            Py_DECREF(mod);
-            Py_DECREF(div);
-            Py_XDECREF(one);
-            return -1;
-        }
-        Py_DECREF(one);
-        Py_DECREF(div);
-        div = temp;
-    }
-    if (pdiv != NULL)
-        *pdiv = div;
-    else
-        Py_DECREF(div);
-
-    if (pmod != NULL)
-        *pmod = mod;
-    else
-        Py_DECREF(mod);
-
-    return 0;
-}
-
-static PyObject *
-long_div(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b, *div;
-
-    CONVERT_BINOP(v, w, &a, &b);
-    if (l_divmod(a, b, &div, NULL) < 0)
-        div = NULL;
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *)div;
-}
-
-static PyObject *
-long_classic_div(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b, *div;
-
-    CONVERT_BINOP(v, w, &a, &b);
-    if (Py_DivisionWarningFlag &&
-        PyErr_Warn(PyExc_DeprecationWarning, "classic long division") < 0)
-        div = NULL;
-    else if (l_divmod(a, b, &div, NULL) < 0)
-        div = NULL;
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *)div;
-}
-
-/* PyLong/PyLong -> float, with correctly rounded result. */
-
-#define MANT_DIG_DIGITS (DBL_MANT_DIG / PyLong_SHIFT)
-#define MANT_DIG_BITS (DBL_MANT_DIG % PyLong_SHIFT)
-
-static PyObject *
-long_true_divide(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b, *x;
-    Py_ssize_t a_size, b_size, shift, extra_bits, diff, x_size, x_bits;
-    digit mask, low;
-    int inexact, negate, a_is_small, b_is_small;
-    double dx, result;
-
-    CONVERT_BINOP(v, w, &a, &b);
-
-    /*
-       Method in a nutshell:
-
-         0. reduce to case a, b > 0; filter out obvious underflow/overflow
-         1. choose a suitable integer 'shift'
-         2. use integer arithmetic to compute x = floor(2**-shift*a/b)
-         3. adjust x for correct rounding
-         4. convert x to a double dx with the same value
-         5. return ldexp(dx, shift).
-
-       In more detail:
-
-       0. For any a, a/0 raises ZeroDivisionError; for nonzero b, 0/b
-       returns either 0.0 or -0.0, depending on the sign of b.  For a and
-       b both nonzero, ignore signs of a and b, and add the sign back in
-       at the end.  Now write a_bits and b_bits for the bit lengths of a
-       and b respectively (that is, a_bits = 1 + floor(log_2(a)); likewise
-       for b).  Then
-
-          2**(a_bits - b_bits - 1) < a/b < 2**(a_bits - b_bits + 1).
-
-       So if a_bits - b_bits > DBL_MAX_EXP then a/b > 2**DBL_MAX_EXP and
-       so overflows.  Similarly, if a_bits - b_bits < DBL_MIN_EXP -
-       DBL_MANT_DIG - 1 then a/b underflows to 0.  With these cases out of
-       the way, we can assume that
-
-          DBL_MIN_EXP - DBL_MANT_DIG - 1 <= a_bits - b_bits <= DBL_MAX_EXP.
-
-       1. The integer 'shift' is chosen so that x has the right number of
-       bits for a double, plus two or three extra bits that will be used
-       in the rounding decisions.  Writing a_bits and b_bits for the
-       number of significant bits in a and b respectively, a
-       straightforward formula for shift is:
-
-          shift = a_bits - b_bits - DBL_MANT_DIG - 2
-
-       This is fine in the usual case, but if a/b is smaller than the
-       smallest normal float then it can lead to double rounding on an
-       IEEE 754 platform, giving incorrectly rounded results.  So we
-       adjust the formula slightly.  The actual formula used is:
-
-           shift = MAX(a_bits - b_bits, DBL_MIN_EXP) - DBL_MANT_DIG - 2
-
-       2. The quantity x is computed by first shifting a (left -shift bits
-       if shift <= 0, right shift bits if shift > 0) and then dividing by
-       b.  For both the shift and the division, we keep track of whether
-       the result is inexact, in a flag 'inexact'; this information is
-       needed at the rounding stage.
-
-       With the choice of shift above, together with our assumption that
-       a_bits - b_bits >= DBL_MIN_EXP - DBL_MANT_DIG - 1, it follows
-       that x >= 1.
-
-       3. Now x * 2**shift <= a/b < (x+1) * 2**shift.  We want to replace
-       this with an exactly representable float of the form
-
-          round(x/2**extra_bits) * 2**(extra_bits+shift).
-
-       For float representability, we need x/2**extra_bits <
-       2**DBL_MANT_DIG and extra_bits + shift >= DBL_MIN_EXP -
-       DBL_MANT_DIG.  This translates to the condition:
-
-          extra_bits >= MAX(x_bits, DBL_MIN_EXP - shift) - DBL_MANT_DIG
-
-       To round, we just modify the bottom digit of x in-place; this can
-       end up giving a digit with value > PyLONG_MASK, but that's not a
-       problem since digits can hold values up to 2*PyLONG_MASK+1.
-
-       With the original choices for shift above, extra_bits will always
-       be 2 or 3.  Then rounding under the round-half-to-even rule, we
-       round up iff the most significant of the extra bits is 1, and
-       either: (a) the computation of x in step 2 had an inexact result,
-       or (b) at least one other of the extra bits is 1, or (c) the least
-       significant bit of x (above those to be rounded) is 1.
-
-       4. Conversion to a double is straightforward; all floating-point
-       operations involved in the conversion are exact, so there's no
-       danger of rounding errors.
-
-       5. Use ldexp(x, shift) to compute x*2**shift, the final result.
-       The result will always be exactly representable as a double, except
-       in the case that it overflows.  To avoid dependence on the exact
-       behaviour of ldexp on overflow, we check for overflow before
-       applying ldexp.  The result of ldexp is adjusted for sign before
-       returning.
-    */
-
-    /* Reduce to case where a and b are both positive. */
-    a_size = ABS(Py_SIZE(a));
-    b_size = ABS(Py_SIZE(b));
-    negate = (Py_SIZE(a) < 0) ^ (Py_SIZE(b) < 0);
-    if (b_size == 0) {
-        PyErr_SetString(PyExc_ZeroDivisionError,
-                        "division by zero");
-        goto error;
-    }
-    if (a_size == 0)
-        goto underflow_or_zero;
-
-    /* Fast path for a and b small (exactly representable in a double).
-       Relies on floating-point division being correctly rounded; results
-       may be subject to double rounding on x86 machines that operate with
-       the x87 FPU set to 64-bit precision. */
-    a_is_small = a_size <= MANT_DIG_DIGITS ||
-        (a_size == MANT_DIG_DIGITS+1 &&
-         a->ob_digit[MANT_DIG_DIGITS] >> MANT_DIG_BITS == 0);
-    b_is_small = b_size <= MANT_DIG_DIGITS ||
-        (b_size == MANT_DIG_DIGITS+1 &&
-         b->ob_digit[MANT_DIG_DIGITS] >> MANT_DIG_BITS == 0);
-    if (a_is_small && b_is_small) {
-        double da, db;
-        da = a->ob_digit[--a_size];
-        while (a_size > 0)
-            da = da * PyLong_BASE + a->ob_digit[--a_size];
-        db = b->ob_digit[--b_size];
-        while (b_size > 0)
-            db = db * PyLong_BASE + b->ob_digit[--b_size];
-        result = da / db;
-        goto success;
-    }
-
-    /* Catch obvious cases of underflow and overflow */
-    diff = a_size - b_size;
-    if (diff > PY_SSIZE_T_MAX/PyLong_SHIFT - 1)
-        /* Extreme overflow */
-        goto overflow;
-    else if (diff < 1 - PY_SSIZE_T_MAX/PyLong_SHIFT)
-        /* Extreme underflow */
-        goto underflow_or_zero;
-    /* Next line is now safe from overflowing a Py_ssize_t */
-    diff = diff * PyLong_SHIFT + bits_in_digit(a->ob_digit[a_size - 1]) -
-        bits_in_digit(b->ob_digit[b_size - 1]);
-    /* Now diff = a_bits - b_bits. */
-    if (diff > DBL_MAX_EXP)
-        goto overflow;
-    else if (diff < DBL_MIN_EXP - DBL_MANT_DIG - 1)
-        goto underflow_or_zero;
-
-    /* Choose value for shift; see comments for step 1 above. */
-    shift = MAX(diff, DBL_MIN_EXP) - DBL_MANT_DIG - 2;
-
-    inexact = 0;
-
-    /* x = abs(a * 2**-shift) */
-    if (shift <= 0) {
-        Py_ssize_t i, shift_digits = -shift / PyLong_SHIFT;
-        digit rem;
-        /* x = a << -shift */
-        if (a_size >= PY_SSIZE_T_MAX - 1 - shift_digits) {
-            /* In practice, it's probably impossible to end up
-               here.  Both a and b would have to be enormous,
-               using close to SIZE_T_MAX bytes of memory each. */
-            PyErr_SetString(PyExc_OverflowError,
-                            "intermediate overflow during division");
-            goto error;
-        }
-        x = _PyLong_New(a_size + shift_digits + 1);
-        if (x == NULL)
-            goto error;
-        for (i = 0; i < shift_digits; i++)
-            x->ob_digit[i] = 0;
-        rem = v_lshift(x->ob_digit + shift_digits, a->ob_digit,
-                       a_size, -shift % PyLong_SHIFT);
-        x->ob_digit[a_size + shift_digits] = rem;
-    }
-    else {
-        Py_ssize_t shift_digits = shift / PyLong_SHIFT;
-        digit rem;
-        /* x = a >> shift */
-        assert(a_size >= shift_digits);
-        x = _PyLong_New(a_size - shift_digits);
-        if (x == NULL)
-            goto error;
-        rem = v_rshift(x->ob_digit, a->ob_digit + shift_digits,
-                       a_size - shift_digits, shift % PyLong_SHIFT);
-        /* set inexact if any of the bits shifted out is nonzero */
-        if (rem)
-            inexact = 1;
-        while (!inexact && shift_digits > 0)
-            if (a->ob_digit[--shift_digits])
-                inexact = 1;
-    }
-    long_normalize(x);
-    x_size = Py_SIZE(x);
-
-    /* x //= b. If the remainder is nonzero, set inexact.  We own the only
-       reference to x, so it's safe to modify it in-place. */
-    if (b_size == 1) {
-        digit rem = inplace_divrem1(x->ob_digit, x->ob_digit, x_size,
-                              b->ob_digit[0]);
-        long_normalize(x);
-        if (rem)
-            inexact = 1;
-    }
-    else {
-        PyLongObject *div, *rem;
-        div = x_divrem(x, b, &rem);
-        Py_DECREF(x);
-        x = div;
-        if (x == NULL)
-            goto error;
-        if (Py_SIZE(rem))
-            inexact = 1;
-        Py_DECREF(rem);
-    }
-    x_size = ABS(Py_SIZE(x));
-    assert(x_size > 0); /* result of division is never zero */
-    x_bits = (x_size-1)*PyLong_SHIFT+bits_in_digit(x->ob_digit[x_size-1]);
-
-    /* The number of extra bits that have to be rounded away. */
-    extra_bits = MAX(x_bits, DBL_MIN_EXP - shift) - DBL_MANT_DIG;
-    assert(extra_bits == 2 || extra_bits == 3);
-
-    /* Round by directly modifying the low digit of x. */
-    mask = (digit)1 << (extra_bits - 1);
-    low = x->ob_digit[0] | inexact;
-    if (low & mask && low & (3*mask-1))
-        low += mask;
-    x->ob_digit[0] = low & ~(mask-1U);
-
-    /* Convert x to a double dx; the conversion is exact. */
-    dx = x->ob_digit[--x_size];
-    while (x_size > 0)
-        dx = dx * PyLong_BASE + x->ob_digit[--x_size];
-    Py_DECREF(x);
-
-    /* Check whether ldexp result will overflow a double. */
-    if (shift + x_bits >= DBL_MAX_EXP &&
-        (shift + x_bits > DBL_MAX_EXP || dx == ldexp(1.0, (int)x_bits)))
-        goto overflow;
-    result = ldexp(dx, (int)shift);
-
-  success:
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return PyFloat_FromDouble(negate ? -result : result);
-
-  underflow_or_zero:
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return PyFloat_FromDouble(negate ? -0.0 : 0.0);
-
-  overflow:
-    PyErr_SetString(PyExc_OverflowError,
-                    "integer division result too large for a float");
-  error:
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return NULL;
-}
-
-static PyObject *
-long_mod(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b, *mod;
-
-    CONVERT_BINOP(v, w, &a, &b);
-
-    if (l_divmod(a, b, NULL, &mod) < 0)
-        mod = NULL;
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *)mod;
-}
-
-static PyObject *
-long_divmod(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b, *div, *mod;
-    PyObject *z;
-
-    CONVERT_BINOP(v, w, &a, &b);
-
-    if (l_divmod(a, b, &div, &mod) < 0) {
-        Py_DECREF(a);
-        Py_DECREF(b);
-        return NULL;
-    }
-    z = PyTuple_New(2);
-    if (z != NULL) {
-        PyTuple_SetItem(z, 0, (PyObject *) div);
-        PyTuple_SetItem(z, 1, (PyObject *) mod);
-    }
-    else {
-        Py_DECREF(div);
-        Py_DECREF(mod);
-    }
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return z;
-}
-
-/* pow(v, w, x) */
-static PyObject *
-long_pow(PyObject *v, PyObject *w, PyObject *x)
-{
-    PyLongObject *a, *b, *c; /* a,b,c = v,w,x */
-    int negativeOutput = 0;  /* if x<0 return negative output */
-
-    PyLongObject *z = NULL;  /* accumulated result */
-    Py_ssize_t i, j, k;             /* counters */
-    PyLongObject *temp = NULL;
-
-    /* 5-ary values.  If the exponent is large enough, table is
-     * precomputed so that table[i] == a**i % c for i in range(32).
-     */
-    PyLongObject *table[32] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-                               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-
-    /* a, b, c = v, w, x */
-    CONVERT_BINOP(v, w, &a, &b);
-    if (PyLong_Check(x)) {
-        c = (PyLongObject *)x;
-        Py_INCREF(x);
-    }
-    else if (PyInt_Check(x)) {
-        c = (PyLongObject *)PyLong_FromLong(PyInt_AS_LONG(x));
-        if (c == NULL)
-            goto Error;
-    }
-    else if (x == Py_None)
-        c = NULL;
-    else {
-        Py_DECREF(a);
-        Py_DECREF(b);
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-
-    if (Py_SIZE(b) < 0) {  /* if exponent is negative */
-        if (c) {
-            PyErr_SetString(PyExc_TypeError, "pow() 2nd argument "
-                            "cannot be negative when 3rd argument specified");
-            goto Error;
-        }
-        else {
-            /* else return a float.  This works because we know
-               that this calls float_pow() which converts its
-               arguments to double. */
-            Py_DECREF(a);
-            Py_DECREF(b);
-            return PyFloat_Type.tp_as_number->nb_power(v, w, x);
-        }
-    }
-
-    if (c) {
-        /* if modulus == 0:
-               raise ValueError() */
-        if (Py_SIZE(c) == 0) {
-            PyErr_SetString(PyExc_ValueError,
-                            "pow() 3rd argument cannot be 0");
-            goto Error;
-        }
-
-        /* if modulus < 0:
-               negativeOutput = True
-               modulus = -modulus */
-        if (Py_SIZE(c) < 0) {
-            negativeOutput = 1;
-            temp = (PyLongObject *)_PyLong_Copy(c);
-            if (temp == NULL)
-                goto Error;
-            Py_DECREF(c);
-            c = temp;
-            temp = NULL;
-            c->ob_size = - c->ob_size;
-        }
-
-        /* if modulus == 1:
-               return 0 */
-        if ((Py_SIZE(c) == 1) && (c->ob_digit[0] == 1)) {
-            z = (PyLongObject *)PyLong_FromLong(0L);
-            goto Done;
-        }
-
-        /* if base < 0:
-               base = base % modulus
-           Having the base positive just makes things easier. */
-        if (Py_SIZE(a) < 0) {
-            if (l_divmod(a, c, NULL, &temp) < 0)
-                goto Error;
-            Py_DECREF(a);
-            a = temp;
-            temp = NULL;
-        }
-    }
-
-    /* At this point a, b, and c are guaranteed non-negative UNLESS
-       c is NULL, in which case a may be negative. */
-
-    z = (PyLongObject *)PyLong_FromLong(1L);
-    if (z == NULL)
-        goto Error;
-
-    /* Perform a modular reduction, X = X % c, but leave X alone if c
-     * is NULL.
-     */
-#define REDUCE(X)                                       \
-    do {                                                \
-        if (c != NULL) {                                \
-            if (l_divmod(X, c, NULL, &temp) < 0)        \
-                goto Error;                             \
-            Py_XDECREF(X);                              \
-            X = temp;                                   \
-            temp = NULL;                                \
-        }                                               \
-    } while(0)
-
-    /* Multiply two values, then reduce the result:
-       result = X*Y % c.  If c is NULL, skip the mod. */
-#define MULT(X, Y, result)                      \
-    do {                                        \
-        temp = (PyLongObject *)long_mul(X, Y);  \
-        if (temp == NULL)                       \
-            goto Error;                         \
-        Py_XDECREF(result);                     \
-        result = temp;                          \
-        temp = NULL;                            \
-        REDUCE(result);                         \
-    } while(0)
-
-    if (Py_SIZE(b) <= FIVEARY_CUTOFF) {
-        /* Left-to-right binary exponentiation (HAC Algorithm 14.79) */
-        /* http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf    */
-        for (i = Py_SIZE(b) - 1; i >= 0; --i) {
-            digit bi = b->ob_digit[i];
-
-            for (j = (digit)1 << (PyLong_SHIFT-1); j != 0; j >>= 1) {
-                MULT(z, z, z);
-                if (bi & j)
-                    MULT(z, a, z);
-            }
-        }
-    }
-    else {
-        /* Left-to-right 5-ary exponentiation (HAC Algorithm 14.82) */
-        Py_INCREF(z);           /* still holds 1L */
-        table[0] = z;
-        for (i = 1; i < 32; ++i)
-            MULT(table[i-1], a, table[i]);
-
-        for (i = Py_SIZE(b) - 1; i >= 0; --i) {
-            const digit bi = b->ob_digit[i];
-
-            for (j = PyLong_SHIFT - 5; j >= 0; j -= 5) {
-                const int index = (bi >> j) & 0x1f;
-                for (k = 0; k < 5; ++k)
-                    MULT(z, z, z);
-                if (index)
-                    MULT(z, table[index], z);
-            }
-        }
-    }
-
-    if (negativeOutput && (Py_SIZE(z) != 0)) {
-        temp = (PyLongObject *)long_sub(z, c);
-        if (temp == NULL)
-            goto Error;
-        Py_DECREF(z);
-        z = temp;
-        temp = NULL;
-    }
-    goto Done;
-
-  Error:
-    if (z != NULL) {
-        Py_DECREF(z);
-        z = NULL;
-    }
-    /* fall through */
-  Done:
-    if (Py_SIZE(b) > FIVEARY_CUTOFF) {
-        for (i = 0; i < 32; ++i)
-            Py_XDECREF(table[i]);
-    }
-    Py_DECREF(a);
-    Py_DECREF(b);
-    Py_XDECREF(c);
-    Py_XDECREF(temp);
-    return (PyObject *)z;
-}
-
-static PyObject *
-long_invert(PyLongObject *v)
-{
-    /* Implement ~x as -(x+1) */
-    PyLongObject *x;
-    PyLongObject *w;
-    w = (PyLongObject *)PyLong_FromLong(1L);
-    if (w == NULL)
-        return NULL;
-    x = (PyLongObject *) long_add(v, w);
-    Py_DECREF(w);
-    if (x == NULL)
-        return NULL;
-    Py_SIZE(x) = -(Py_SIZE(x));
-    return (PyObject *)x;
-}
-
-static PyObject *
-long_neg(PyLongObject *v)
-{
-    PyLongObject *z;
-    if (v->ob_size == 0 && PyLong_CheckExact(v)) {
-        /* -0 == 0 */
-        Py_INCREF(v);
-        return (PyObject *) v;
-    }
-    z = (PyLongObject *)_PyLong_Copy(v);
-    if (z != NULL)
-        z->ob_size = -(v->ob_size);
-    return (PyObject *)z;
-}
-
-static PyObject *
-long_abs(PyLongObject *v)
-{
-    if (v->ob_size < 0)
-        return long_neg(v);
-    else
-        return long_long((PyObject *)v);
-}
-
-static int
-long_nonzero(PyLongObject *v)
-{
-    return Py_SIZE(v) != 0;
-}
-
-static PyObject *
-long_rshift(PyLongObject *v, PyLongObject *w)
-{
-    PyLongObject *a, *b;
-    PyLongObject *z = NULL;
-    Py_ssize_t shiftby, newsize, wordshift, loshift, hishift, i, j;
-    digit lomask, himask;
-
-    CONVERT_BINOP((PyObject *)v, (PyObject *)w, &a, &b);
-
-    if (Py_SIZE(a) < 0) {
-        /* Right shifting negative numbers is harder */
-        PyLongObject *a1, *a2;
-        a1 = (PyLongObject *) long_invert(a);
-        if (a1 == NULL)
-            goto rshift_error;
-        a2 = (PyLongObject *) long_rshift(a1, b);
-        Py_DECREF(a1);
-        if (a2 == NULL)
-            goto rshift_error;
-        z = (PyLongObject *) long_invert(a2);
-        Py_DECREF(a2);
-    }
-    else {
-        shiftby = PyLong_AsSsize_t((PyObject *)b);
-        if (shiftby == -1L && PyErr_Occurred())
-            goto rshift_error;
-        if (shiftby < 0) {
-            PyErr_SetString(PyExc_ValueError,
-                            "negative shift count");
-            goto rshift_error;
-        }
-        wordshift = shiftby / PyLong_SHIFT;
-        newsize = ABS(Py_SIZE(a)) - wordshift;
-        if (newsize <= 0) {
-            z = _PyLong_New(0);
-            Py_DECREF(a);
-            Py_DECREF(b);
-            return (PyObject *)z;
-        }
-        loshift = shiftby % PyLong_SHIFT;
-        hishift = PyLong_SHIFT - loshift;
-        lomask = ((digit)1 << hishift) - 1;
-        himask = PyLong_MASK ^ lomask;
-        z = _PyLong_New(newsize);
-        if (z == NULL)
-            goto rshift_error;
-        if (Py_SIZE(a) < 0)
-            Py_SIZE(z) = -(Py_SIZE(z));
-        for (i = 0, j = wordshift; i < newsize; i++, j++) {
-            z->ob_digit[i] = (a->ob_digit[j] >> loshift) & lomask;
-            if (i+1 < newsize)
-                z->ob_digit[i] |= (a->ob_digit[j+1] << hishift) & himask;
-        }
-        z = long_normalize(z);
-    }
-  rshift_error:
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *) z;
-
-}
-
-static PyObject *
-long_lshift(PyObject *v, PyObject *w)
-{
-    /* This version due to Tim Peters */
-    PyLongObject *a, *b;
-    PyLongObject *z = NULL;
-    Py_ssize_t shiftby, oldsize, newsize, wordshift, remshift, i, j;
-    twodigits accum;
-
-    CONVERT_BINOP(v, w, &a, &b);
-
-    shiftby = PyLong_AsSsize_t((PyObject *)b);
-    if (shiftby == -1L && PyErr_Occurred())
-        goto lshift_error;
-    if (shiftby < 0) {
-        PyErr_SetString(PyExc_ValueError, "negative shift count");
-        goto lshift_error;
-    }
-    /* wordshift, remshift = divmod(shiftby, PyLong_SHIFT) */
-    wordshift = shiftby / PyLong_SHIFT;
-    remshift  = shiftby - wordshift * PyLong_SHIFT;
-
-    oldsize = ABS(a->ob_size);
-    newsize = oldsize + wordshift;
-    if (remshift)
-        ++newsize;
-    z = _PyLong_New(newsize);
-    if (z == NULL)
-        goto lshift_error;
-    if (a->ob_size < 0)
-        z->ob_size = -(z->ob_size);
-    for (i = 0; i < wordshift; i++)
-        z->ob_digit[i] = 0;
-    accum = 0;
-    for (i = wordshift, j = 0; j < oldsize; i++, j++) {
-        accum |= (twodigits)a->ob_digit[j] << remshift;
-        z->ob_digit[i] = (digit)(accum & PyLong_MASK);
-        accum >>= PyLong_SHIFT;
-    }
-    if (remshift)
-        z->ob_digit[newsize-1] = (digit)accum;
-    else
-        assert(!accum);
-    z = long_normalize(z);
-  lshift_error:
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *) z;
-}
-
-/* Compute two's complement of digit vector a[0:m], writing result to
-   z[0:m].  The digit vector a need not be normalized, but should not
-   be entirely zero.  a and z may point to the same digit vector. */
-
-static void
-v_complement(digit *z, digit *a, Py_ssize_t m)
-{
-    Py_ssize_t i;
-    digit carry = 1;
-    for (i = 0; i < m; ++i) {
-        carry += a[i] ^ PyLong_MASK;
-        z[i] = carry & PyLong_MASK;
-        carry >>= PyLong_SHIFT;
-    }
-    assert(carry == 0);
-}
-
-/* Bitwise and/xor/or operations */
-
-static PyObject *
-long_bitwise(PyLongObject *a,
-             int op,  /* '&', '|', '^' */
-             PyLongObject *b)
-{
-    int nega, negb, negz;
-    Py_ssize_t size_a, size_b, size_z, i;
-    PyLongObject *z;
-
-    /* Bitwise operations for negative numbers operate as though
-       on a two's complement representation.  So convert arguments
-       from sign-magnitude to two's complement, and convert the
-       result back to sign-magnitude at the end. */
-
-    /* If a is negative, replace it by its two's complement. */
-    size_a = ABS(Py_SIZE(a));
-    nega = Py_SIZE(a) < 0;
-    if (nega) {
-        z = _PyLong_New(size_a);
-        if (z == NULL)
-            return NULL;
-        v_complement(z->ob_digit, a->ob_digit, size_a);
-        a = z;
-    }
-    else
-        /* Keep reference count consistent. */
-        Py_INCREF(a);
-
-    /* Same for b. */
-    size_b = ABS(Py_SIZE(b));
-    negb = Py_SIZE(b) < 0;
-    if (negb) {
-        z = _PyLong_New(size_b);
-        if (z == NULL) {
-            Py_DECREF(a);
-            return NULL;
-        }
-        v_complement(z->ob_digit, b->ob_digit, size_b);
-        b = z;
-    }
-    else
-        Py_INCREF(b);
-
-    /* Swap a and b if necessary to ensure size_a >= size_b. */
-    if (size_a < size_b) {
-        z = a; a = b; b = z;
-        size_z = size_a; size_a = size_b; size_b = size_z;
-        negz = nega; nega = negb; negb = negz;
-    }
-
-    /* JRH: The original logic here was to allocate the result value (z)
-       as the longer of the two operands.  However, there are some cases
-       where the result is guaranteed to be shorter than that: AND of two
-       positives, OR of two negatives: use the shorter number.  AND with
-       mixed signs: use the positive number.  OR with mixed signs: use the
-       negative number.
-    */
-    switch (op) {
-    case '^':
-        negz = nega ^ negb;
-        size_z = size_a;
-        break;
-    case '&':
-        negz = nega & negb;
-        size_z = negb ? size_a : size_b;
-        break;
-    case '|':
-        negz = nega | negb;
-        size_z = negb ? size_b : size_a;
-        break;
-    default:
-        PyErr_BadArgument();
-        return NULL;
-    }
-
-    /* We allow an extra digit if z is negative, to make sure that
-       the final two's complement of z doesn't overflow. */
-    z = _PyLong_New(size_z + negz);
-    if (z == NULL) {
-        Py_DECREF(a);
-        Py_DECREF(b);
-        return NULL;
-    }
-
-    /* Compute digits for overlap of a and b. */
-    switch(op) {
-    case '&':
-        for (i = 0; i < size_b; ++i)
-            z->ob_digit[i] = a->ob_digit[i] & b->ob_digit[i];
-        break;
-    case '|':
-        for (i = 0; i < size_b; ++i)
-            z->ob_digit[i] = a->ob_digit[i] | b->ob_digit[i];
-        break;
-    case '^':
-        for (i = 0; i < size_b; ++i)
-            z->ob_digit[i] = a->ob_digit[i] ^ b->ob_digit[i];
-        break;
-    default:
-        PyErr_BadArgument();
-        return NULL;
-    }
-
-    /* Copy any remaining digits of a, inverting if necessary. */
-    if (op == '^' && negb)
-        for (; i < size_z; ++i)
-            z->ob_digit[i] = a->ob_digit[i] ^ PyLong_MASK;
-    else if (i < size_z)
-        memcpy(&z->ob_digit[i], &a->ob_digit[i],
-               (size_z-i)*sizeof(digit));
-
-    /* Complement result if negative. */
-    if (negz) {
-        Py_SIZE(z) = -(Py_SIZE(z));
-        z->ob_digit[size_z] = PyLong_MASK;
-        v_complement(z->ob_digit, z->ob_digit, size_z+1);
-    }
-
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *)long_normalize(z);
-}
-
-static PyObject *
-long_and(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b;
-    PyObject *c;
-    CONVERT_BINOP(v, w, &a, &b);
-    c = long_bitwise(a, '&', b);
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return c;
-}
-
-static PyObject *
-long_xor(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b;
-    PyObject *c;
-    CONVERT_BINOP(v, w, &a, &b);
-    c = long_bitwise(a, '^', b);
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return c;
-}
-
-static PyObject *
-long_or(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b;
-    PyObject *c;
-    CONVERT_BINOP(v, w, &a, &b);
-    c = long_bitwise(a, '|', b);
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return c;
-}
-
-static int
-long_coerce(PyObject **pv, PyObject **pw)
-{
-    if (PyInt_Check(*pw)) {
-        *pw = PyLong_FromLong(PyInt_AS_LONG(*pw));
-        if (*pw == NULL)
-            return -1;
-        Py_INCREF(*pv);
-        return 0;
-    }
-    else if (PyLong_Check(*pw)) {
-        Py_INCREF(*pv);
-        Py_INCREF(*pw);
-        return 0;
-    }
-    return 1; /* Can't do it */
-}
-
-static PyObject *
-long_long(PyObject *v)
-{
-    if (PyLong_CheckExact(v))
-        Py_INCREF(v);
-    else
-        v = _PyLong_Copy((PyLongObject *)v);
-    return v;
-}
-
-static PyObject *
-long_int(PyObject *v)
-{
-    long x;
-    x = PyLong_AsLong(v);
-    if (PyErr_Occurred()) {
-        if (PyErr_ExceptionMatches(PyExc_OverflowError)) {
-            PyErr_Clear();
-            if (PyLong_CheckExact(v)) {
-                Py_INCREF(v);
-                return v;
-            }
-            else
-                return _PyLong_Copy((PyLongObject *)v);
-        }
-        else
-            return NULL;
-    }
-    return PyInt_FromLong(x);
-}
-
-static PyObject *
-long_float(PyObject *v)
-{
-    double result;
-    result = PyLong_AsDouble(v);
-    if (result == -1.0 && PyErr_Occurred())
-        return NULL;
-    return PyFloat_FromDouble(result);
-}
-
-static PyObject *
-long_oct(PyObject *v)
-{
-    return _PyLong_Format(v, 8, 1, 0);
-}
-
-static PyObject *
-long_hex(PyObject *v)
-{
-    return _PyLong_Format(v, 16, 1, 0);
-}
-
-static PyObject *
-long_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
-
-static PyObject *
-long_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *x = NULL;
-    int base = -909;                         /* unlikely! */
-    static char *kwlist[] = {"x", "base", 0};
-
-    if (type != &PyLong_Type)
-        return long_subtype_new(type, args, kwds); /* Wimp out */
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|Oi:long", kwlist,
-                                     &x, &base))
-        return NULL;
-    if (x == NULL)
-        return PyLong_FromLong(0L);
-    if (base == -909)
-        return PyNumber_Long(x);
-    else if (PyString_Check(x)) {
-        /* Since PyLong_FromString doesn't have a length parameter,
-         * check here for possible NULs in the string. */
-        char *string = PyString_AS_STRING(x);
-        if (strlen(string) != (size_t)PyString_Size(x)) {
-            /* create a repr() of the input string,
-             * just like PyLong_FromString does. */
-            PyObject *srepr;
-            srepr = PyObject_Repr(x);
-            if (srepr == NULL)
-                return NULL;
-            PyErr_Format(PyExc_ValueError,
-                         "invalid literal for long() with base %d: %s",
-                         base, PyString_AS_STRING(srepr));
-            Py_DECREF(srepr);
-            return NULL;
-        }
-        return PyLong_FromString(PyString_AS_STRING(x), NULL, base);
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_Check(x))
-        return PyLong_FromUnicode(PyUnicode_AS_UNICODE(x),
-                                  PyUnicode_GET_SIZE(x),
-                                  base);
-#endif
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "long() can't convert non-string with explicit base");
-        return NULL;
-    }
-}
-
-/* Wimpy, slow approach to tp_new calls for subtypes of long:
-   first create a regular long from whatever arguments we got,
-   then allocate a subtype instance and initialize it from
-   the regular long.  The regular long is then thrown away.
-*/
-static PyObject *
-long_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyLongObject *tmp, *newobj;
-    Py_ssize_t i, n;
-
-    assert(PyType_IsSubtype(type, &PyLong_Type));
-    tmp = (PyLongObject *)long_new(&PyLong_Type, args, kwds);
-    if (tmp == NULL)
-        return NULL;
-    assert(PyLong_CheckExact(tmp));
-    n = Py_SIZE(tmp);
-    if (n < 0)
-        n = -n;
-    newobj = (PyLongObject *)type->tp_alloc(type, n);
-    if (newobj == NULL) {
-        Py_DECREF(tmp);
-        return NULL;
-    }
-    assert(PyLong_Check(newobj));
-    Py_SIZE(newobj) = Py_SIZE(tmp);
-    for (i = 0; i < n; i++)
-        newobj->ob_digit[i] = tmp->ob_digit[i];
-    Py_DECREF(tmp);
-    return (PyObject *)newobj;
-}
-
-static PyObject *
-long_getnewargs(PyLongObject *v)
-{
-    return Py_BuildValue("(N)", _PyLong_Copy(v));
-}
-
-static PyObject *
-long_get0(PyLongObject *v, void *context) {
-    return PyLong_FromLong(0L);
-}
-
-static PyObject *
-long_get1(PyLongObject *v, void *context) {
-    return PyLong_FromLong(1L);
-}
-
-static PyObject *
-long__format__(PyObject *self, PyObject *args)
-{
-    PyObject *format_spec;
-
-    if (!PyArg_ParseTuple(args, "O:__format__", &format_spec))
-        return NULL;
-    if (PyBytes_Check(format_spec))
-        return _PyLong_FormatAdvanced(self,
-                                      PyBytes_AS_STRING(format_spec),
-                                      PyBytes_GET_SIZE(format_spec));
-    if (PyUnicode_Check(format_spec)) {
-        /* Convert format_spec to a str */
-        PyObject *result;
-        PyObject *str_spec = PyObject_Str(format_spec);
-
-        if (str_spec == NULL)
-            return NULL;
-
-        result = _PyLong_FormatAdvanced(self,
-                                        PyBytes_AS_STRING(str_spec),
-                                        PyBytes_GET_SIZE(str_spec));
-
-        Py_DECREF(str_spec);
-        return result;
-    }
-    PyErr_SetString(PyExc_TypeError, "__format__ requires str or unicode");
-    return NULL;
-}
-
-static PyObject *
-long_sizeof(PyLongObject *v)
-{
-    Py_ssize_t res;
-
-    res = v->ob_type->tp_basicsize + ABS(Py_SIZE(v))*sizeof(digit);
-    return PyInt_FromSsize_t(res);
-}
-
-static PyObject *
-long_bit_length(PyLongObject *v)
-{
-    PyLongObject *result, *x, *y;
-    Py_ssize_t ndigits, msd_bits = 0;
-    digit msd;
-
-    assert(v != NULL);
-    assert(PyLong_Check(v));
-
-    ndigits = ABS(Py_SIZE(v));
-    if (ndigits == 0)
-        return PyInt_FromLong(0);
-
-    msd = v->ob_digit[ndigits-1];
-    while (msd >= 32) {
-        msd_bits += 6;
-        msd >>= 6;
-    }
-    msd_bits += (long)(BitLengthTable[msd]);
-
-    if (ndigits <= PY_SSIZE_T_MAX/PyLong_SHIFT)
-        return PyInt_FromSsize_t((ndigits-1)*PyLong_SHIFT + msd_bits);
-
-    /* expression above may overflow; use Python integers instead */
-    result = (PyLongObject *)PyLong_FromSsize_t(ndigits - 1);
-    if (result == NULL)
-        return NULL;
-    x = (PyLongObject *)PyLong_FromLong(PyLong_SHIFT);
-    if (x == NULL)
-        goto error;
-    y = (PyLongObject *)long_mul(result, x);
-    Py_DECREF(x);
-    if (y == NULL)
-        goto error;
-    Py_DECREF(result);
-    result = y;
-
-    x = (PyLongObject *)PyLong_FromLong((long)msd_bits);
-    if (x == NULL)
-        goto error;
-    y = (PyLongObject *)long_add(result, x);
-    Py_DECREF(x);
-    if (y == NULL)
-        goto error;
-    Py_DECREF(result);
-    result = y;
-
-    return (PyObject *)result;
-
-  error:
-    Py_DECREF(result);
-    return NULL;
-}
-
-PyDoc_STRVAR(long_bit_length_doc,
-"long.bit_length() -> int or long\n\
-\n\
-Number of bits necessary to represent self in binary.\n\
->>> bin(37L)\n\
-'0b100101'\n\
->>> (37L).bit_length()\n\
-6");
-
-#if 0
-static PyObject *
-long_is_finite(PyObject *v)
-{
-    Py_RETURN_TRUE;
-}
-#endif
-
-static PyMethodDef long_methods[] = {
-    {"conjugate",       (PyCFunction)long_long, METH_NOARGS,
-     "Returns self, the complex conjugate of any long."},
-    {"bit_length",      (PyCFunction)long_bit_length, METH_NOARGS,
-     long_bit_length_doc},
-#if 0
-    {"is_finite",       (PyCFunction)long_is_finite,    METH_NOARGS,
-     "Returns always True."},
-#endif
-    {"__trunc__",       (PyCFunction)long_long, METH_NOARGS,
-     "Truncating an Integral returns itself."},
-    {"__getnewargs__",          (PyCFunction)long_getnewargs,   METH_NOARGS},
-    {"__format__", (PyCFunction)long__format__, METH_VARARGS},
-    {"__sizeof__",      (PyCFunction)long_sizeof, METH_NOARGS,
-     "Returns size in memory, in bytes"},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyGetSetDef long_getset[] = {
-    {"real",
-     (getter)long_long, (setter)NULL,
-     "the real part of a complex number",
-     NULL},
-    {"imag",
-     (getter)long_get0, (setter)NULL,
-     "the imaginary part of a complex number",
-     NULL},
-    {"numerator",
-     (getter)long_long, (setter)NULL,
-     "the numerator of a rational number in lowest terms",
-     NULL},
-    {"denominator",
-     (getter)long_get1, (setter)NULL,
-     "the denominator of a rational number in lowest terms",
-     NULL},
-    {NULL}  /* Sentinel */
-};
-
-PyDoc_STRVAR(long_doc,
-"long(x[, base]) -> integer\n\
-\n\
-Convert a string or number to a long integer, if possible.  A floating\n\
-point argument will be truncated towards zero (this does not include a\n\
-string representation of a floating point number!)  When converting a\n\
-string, use the optional base.  It is an error to supply a base when\n\
-converting a non-string.");
-
-static PyNumberMethods long_as_number = {
-    (binaryfunc)long_add,       /*nb_add*/
-    (binaryfunc)long_sub,       /*nb_subtract*/
-    (binaryfunc)long_mul,       /*nb_multiply*/
-    long_classic_div,           /*nb_divide*/
-    long_mod,                   /*nb_remainder*/
-    long_divmod,                /*nb_divmod*/
-    long_pow,                   /*nb_power*/
-    (unaryfunc)long_neg,        /*nb_negative*/
-    (unaryfunc)long_long,       /*tp_positive*/
-    (unaryfunc)long_abs,        /*tp_absolute*/
-    (inquiry)long_nonzero,      /*tp_nonzero*/
-    (unaryfunc)long_invert,     /*nb_invert*/
-    long_lshift,                /*nb_lshift*/
-    (binaryfunc)long_rshift,    /*nb_rshift*/
-    long_and,                   /*nb_and*/
-    long_xor,                   /*nb_xor*/
-    long_or,                    /*nb_or*/
-    long_coerce,                /*nb_coerce*/
-    long_int,                   /*nb_int*/
-    long_long,                  /*nb_long*/
-    long_float,                 /*nb_float*/
-    long_oct,                   /*nb_oct*/
-    long_hex,                   /*nb_hex*/
-    0,                          /* nb_inplace_add */
-    0,                          /* nb_inplace_subtract */
-    0,                          /* nb_inplace_multiply */
-    0,                          /* nb_inplace_divide */
-    0,                          /* nb_inplace_remainder */
-    0,                          /* nb_inplace_power */
-    0,                          /* nb_inplace_lshift */
-    0,                          /* nb_inplace_rshift */
-    0,                          /* nb_inplace_and */
-    0,                          /* nb_inplace_xor */
-    0,                          /* nb_inplace_or */
-    long_div,                   /* nb_floor_divide */
-    long_true_divide,           /* nb_true_divide */
-    0,                          /* nb_inplace_floor_divide */
-    0,                          /* nb_inplace_true_divide */
-    long_long,                  /* nb_index */
-};
-
-PyTypeObject PyLong_Type = {
-    PyObject_HEAD_INIT(&PyType_Type)
-    0,                                          /* ob_size */
-    "long",                                     /* tp_name */
-    offsetof(PyLongObject, ob_digit),           /* tp_basicsize */
-    sizeof(digit),                              /* tp_itemsize */
-    long_dealloc,                               /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    (cmpfunc)long_compare,                      /* tp_compare */
-    long_repr,                                  /* tp_repr */
-    &long_as_number,                            /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    (hashfunc)long_hash,                        /* tp_hash */
-    0,                                          /* tp_call */
-    long_str,                                   /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
-        Py_TPFLAGS_BASETYPE | Py_TPFLAGS_LONG_SUBCLASS, /* tp_flags */
-    long_doc,                                   /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    long_methods,                               /* tp_methods */
-    0,                                          /* tp_members */
-    long_getset,                                /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    long_new,                                   /* tp_new */
-    PyObject_Del,                               /* tp_free */
-};
-
-static PyTypeObject Long_InfoType;
-
-PyDoc_STRVAR(long_info__doc__,
-"sys.long_info\n\
-\n\
-A struct sequence that holds information about Python's\n\
-internal representation of integers.  The attributes are read only.");
-
-static PyStructSequence_Field long_info_fields[] = {
-    {"bits_per_digit", "size of a digit in bits"},
-    {"sizeof_digit", "size in bytes of the C type used to represent a digit"},
-    {NULL, NULL}
-};
-
-static PyStructSequence_Desc long_info_desc = {
-    "sys.long_info",   /* name */
-    long_info__doc__,  /* doc */
-    long_info_fields,  /* fields */
-    2                  /* number of fields */
-};
-
-PyObject *
-PyLong_GetInfo(void)
-{
-    PyObject* long_info;
-    int field = 0;
-    long_info = PyStructSequence_New(&Long_InfoType);
-    if (long_info == NULL)
-        return NULL;
-    PyStructSequence_SET_ITEM(long_info, field++,
-                              PyInt_FromLong(PyLong_SHIFT));
-    PyStructSequence_SET_ITEM(long_info, field++,
-                              PyInt_FromLong(sizeof(digit)));
-    if (PyErr_Occurred()) {
-        Py_CLEAR(long_info);
-        return NULL;
-    }
-    return long_info;
-}
-
-int
-_PyLong_Init(void)
-{
-    /* initialize long_info */
-    if (Long_InfoType.tp_name == 0)
-        PyStructSequence_InitType(&Long_InfoType, &long_info_desc);
-    return 1;
-}
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Objects/stringlib/localeutil.h b/AppPkg/Applications/Python/PyMod-2.7.2/Objects/stringlib/localeutil.h
deleted file mode 100644
index 45c980c..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Objects/stringlib/localeutil.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/** @file
-    stringlib: locale related helpers implementation.
-
-    Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-
-#ifndef STRINGLIB_LOCALEUTIL_H
-#define STRINGLIB_LOCALEUTIL_H
-
-#include <locale.h>
-
-// Prevent conflicts with EFI
-#undef  MAX
-#undef  MIN
-
-#define MAX(x, y) ((x) < (y) ? (y) : (x))
-#define MIN(x, y) ((x) < (y) ? (x) : (y))
-
-typedef struct {
-    const char *grouping;
-    char previous;
-    Py_ssize_t i; /* Where we're currently pointing in grouping. */
-} GroupGenerator;
-
-static void
-_GroupGenerator_init(GroupGenerator *self, const char *grouping)
-{
-    self->grouping = grouping;
-    self->i = 0;
-    self->previous = 0;
-}
-
-/* Returns the next grouping, or 0 to signify end. */
-static Py_ssize_t
-_GroupGenerator_next(GroupGenerator *self)
-{
-    /* Note that we don't really do much error checking here. If a
-       grouping string contains just CHAR_MAX, for example, then just
-       terminate the generator. That shouldn't happen, but at least we
-       fail gracefully. */
-    switch (self->grouping[self->i]) {
-    case 0:
-        return self->previous;
-    case CHAR_MAX:
-        /* Stop the generator. */
-        return 0;
-    default: {
-        char ch = self->grouping[self->i];
-        self->previous = ch;
-        self->i++;
-        return (Py_ssize_t)ch;
-    }
-    }
-}
-
-/* Fill in some digits, leading zeros, and thousands separator. All
-   are optional, depending on when we're called. */
-static void
-fill(STRINGLIB_CHAR **digits_end, STRINGLIB_CHAR **buffer_end,
-     Py_ssize_t n_chars, Py_ssize_t n_zeros, const char* thousands_sep,
-     Py_ssize_t thousands_sep_len)
-{
-#if STRINGLIB_IS_UNICODE
-    Py_ssize_t i;
-#endif
-
-    if (thousands_sep) {
-        *buffer_end -= thousands_sep_len;
-
-        /* Copy the thousands_sep chars into the buffer. */
-#if STRINGLIB_IS_UNICODE
-        /* Convert from the char's of the thousands_sep from
-           the locale into unicode. */
-        for (i = 0; i < thousands_sep_len; ++i)
-            (*buffer_end)[i] = thousands_sep[i];
-#else
-        /* No conversion, just memcpy the thousands_sep. */
-        memcpy(*buffer_end, thousands_sep, thousands_sep_len);
-#endif
-    }
-
-    *buffer_end -= n_chars;
-    *digits_end -= n_chars;
-    memcpy(*buffer_end, *digits_end, n_chars * sizeof(STRINGLIB_CHAR));
-
-    *buffer_end -= n_zeros;
-    STRINGLIB_FILL(*buffer_end, '0', n_zeros);
-}
-
-/**
- * _Py_InsertThousandsGrouping:
- * @buffer: A pointer to the start of a string.
- * @n_buffer: Number of characters in @buffer.
- * @digits: A pointer to the digits we're reading from. If count
- *          is non-NULL, this is unused.
- * @n_digits: The number of digits in the string, in which we want
- *            to put the grouping chars.
- * @min_width: The minimum width of the digits in the output string.
- *             Output will be zero-padded on the left to fill.
- * @grouping: see definition in localeconv().
- * @thousands_sep: see definition in localeconv().
- *
- * There are 2 modes: counting and filling. If @buffer is NULL,
- *  we are in counting mode, else filling mode.
- * If counting, the required buffer size is returned.
- * If filling, we know the buffer will be large enough, so we don't
- *  need to pass in the buffer size.
- * Inserts thousand grouping characters (as defined by grouping and
- *  thousands_sep) into the string between buffer and buffer+n_digits.
- *
- * Return value: 0 on error, else 1.  Note that no error can occur if
- *  count is non-NULL.
- *
- * This name won't be used, the includer of this file should define
- *  it to be the actual function name, based on unicode or string.
- *
- * As closely as possible, this code mimics the logic in decimal.py's
-    _insert_thousands_sep().
- **/
-Py_ssize_t
-_Py_InsertThousandsGrouping(STRINGLIB_CHAR *buffer,
-                            Py_ssize_t n_buffer,
-                            STRINGLIB_CHAR *digits,
-                            Py_ssize_t n_digits,
-                            Py_ssize_t min_width,
-                            const char *grouping,
-                            const char *thousands_sep)
-{
-    Py_ssize_t count = 0;
-    Py_ssize_t n_zeros;
-    int loop_broken = 0;
-    int use_separator = 0; /* First time through, don't append the
-                              separator. They only go between
-                              groups. */
-    STRINGLIB_CHAR *buffer_end = NULL;
-    STRINGLIB_CHAR *digits_end = NULL;
-    Py_ssize_t l;
-    Py_ssize_t n_chars;
-    Py_ssize_t thousands_sep_len = strlen(thousands_sep);
-    Py_ssize_t remaining = n_digits; /* Number of chars remaining to
-                                        be looked at */
-    /* A generator that returns all of the grouping widths, until it
-       returns 0. */
-    GroupGenerator groupgen;
-    _GroupGenerator_init(&groupgen, grouping);
-
-    if (buffer) {
-        buffer_end = buffer + n_buffer;
-        digits_end = digits + n_digits;
-    }
-
-    while ((l = _GroupGenerator_next(&groupgen)) > 0) {
-        l = MIN(l, MAX(MAX(remaining, min_width), 1));
-        n_zeros = MAX(0, l - remaining);
-        n_chars = MAX(0, MIN(remaining, l));
-
-        /* Use n_zero zero's and n_chars chars */
-
-        /* Count only, don't do anything. */
-        count += (use_separator ? thousands_sep_len : 0) + n_zeros + n_chars;
-
-        if (buffer) {
-            /* Copy into the output buffer. */
-            fill(&digits_end, &buffer_end, n_chars, n_zeros,
-                 use_separator ? thousands_sep : NULL, thousands_sep_len);
-        }
-
-        /* Use a separator next time. */
-        use_separator = 1;
-
-        remaining -= n_chars;
-        min_width -= l;
-
-        if (remaining <= 0 && min_width <= 0) {
-            loop_broken = 1;
-            break;
-        }
-        min_width -= thousands_sep_len;
-    }
-    if (!loop_broken) {
-        /* We left the loop without using a break statement. */
-
-        l = MAX(MAX(remaining, min_width), 1);
-        n_zeros = MAX(0, l - remaining);
-        n_chars = MAX(0, MIN(remaining, l));
-
-        /* Use n_zero zero's and n_chars chars */
-        count += (use_separator ? thousands_sep_len : 0) + n_zeros + n_chars;
-        if (buffer) {
-            /* Copy into the output buffer. */
-            fill(&digits_end, &buffer_end, n_chars, n_zeros,
-                 use_separator ? thousands_sep : NULL, thousands_sep_len);
-        }
-    }
-    return count;
-}
-
-/**
- * _Py_InsertThousandsGroupingLocale:
- * @buffer: A pointer to the start of a string.
- * @n_digits: The number of digits in the string, in which we want
- *            to put the grouping chars.
- *
- * Reads thee current locale and calls _Py_InsertThousandsGrouping().
- **/
-Py_ssize_t
-_Py_InsertThousandsGroupingLocale(STRINGLIB_CHAR *buffer,
-                                  Py_ssize_t n_buffer,
-                                  STRINGLIB_CHAR *digits,
-                                  Py_ssize_t n_digits,
-                                  Py_ssize_t min_width)
-{
-        struct lconv *locale_data = localeconv();
-        const char *grouping = locale_data->grouping;
-        const char *thousands_sep = locale_data->thousands_sep;
-
-        return _Py_InsertThousandsGrouping(buffer, n_buffer, digits, n_digits,
-                                           min_width, grouping, thousands_sep);
-}
-#endif /* STRINGLIB_LOCALEUTIL_H */
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Python/getcopyright.c b/AppPkg/Applications/Python/PyMod-2.7.2/Python/getcopyright.c
deleted file mode 100644
index 66ebc75..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Python/getcopyright.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Return the copyright string.  This is updated manually.
-
-    Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-*/
-
-#include "Python.h"
-
-static char cprt[] =
-"\
-Copyright (c) 2010-2011 Intel Corporation.\n\
-All Rights Reserved.\n\
-\n\
-Copyright (c) 2001-2011 Python Software Foundation.\n\
-All Rights Reserved.\n\
-\n\
-Copyright (c) 2000 BeOpen.com.\n\
-All Rights Reserved.\n\
-\n\
-Copyright (c) 1995-2001 Corporation for National Research Initiatives.\n\
-All Rights Reserved.\n\
-\n\
-Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.\n\
-All Rights Reserved.";
-
-const char *
-Py_GetCopyright(void)
-{
-  return cprt;
-}
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Python/import.c b/AppPkg/Applications/Python/PyMod-2.7.2/Python/import.c
deleted file mode 100644
index 31ccd31..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Python/import.c
+++ /dev/null
@@ -1,3398 +0,0 @@
-
-/* Module definition and import implementation */
-
-#include "Python.h"
-
-#include "Python-ast.h"
-#undef Yield /* undefine macro conflicting with winbase.h */
-#include "pyarena.h"
-#include "pythonrun.h"
-#include "errcode.h"
-#include "marshal.h"
-#include "code.h"
-#include "compile.h"
-#include "eval.h"
-#include "osdefs.h"
-#include "importdl.h"
-
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef MS_WINDOWS
-/* for stat.st_mode */
-typedef unsigned short mode_t;
-#endif
-
-
-/* Magic word to reject .pyc files generated by other Python versions.
-   It should change for each incompatible change to the bytecode.
-
-   The value of CR and LF is incorporated so if you ever read or write
-   a .pyc file in text mode the magic number will be wrong; also, the
-   Apple MPW compiler swaps their values, botching string constants.
-
-   The magic numbers must be spaced apart atleast 2 values, as the
-   -U interpeter flag will cause MAGIC+1 being used. They have been
-   odd numbers for some time now.
-
-   There were a variety of old schemes for setting the magic number.
-   The current working scheme is to increment the previous value by
-   10.
-
-   Known values:
-       Python 1.5:   20121
-       Python 1.5.1: 20121
-       Python 1.5.2: 20121
-       Python 1.6:   50428
-       Python 2.0:   50823
-       Python 2.0.1: 50823
-       Python 2.1:   60202
-       Python 2.1.1: 60202
-       Python 2.1.2: 60202
-       Python 2.2:   60717
-       Python 2.3a0: 62011
-       Python 2.3a0: 62021
-       Python 2.3a0: 62011 (!)
-       Python 2.4a0: 62041
-       Python 2.4a3: 62051
-       Python 2.4b1: 62061
-       Python 2.5a0: 62071
-       Python 2.5a0: 62081 (ast-branch)
-       Python 2.5a0: 62091 (with)
-       Python 2.5a0: 62092 (changed WITH_CLEANUP opcode)
-       Python 2.5b3: 62101 (fix wrong code: for x, in ...)
-       Python 2.5b3: 62111 (fix wrong code: x += yield)
-       Python 2.5c1: 62121 (fix wrong lnotab with for loops and
-                            storing constants that should have been removed)
-       Python 2.5c2: 62131 (fix wrong code: for x, in ... in listcomp/genexp)
-       Python 2.6a0: 62151 (peephole optimizations and STORE_MAP opcode)
-       Python 2.6a1: 62161 (WITH_CLEANUP optimization)
-       Python 2.7a0: 62171 (optimize list comprehensions/change LIST_APPEND)
-       Python 2.7a0: 62181 (optimize conditional branches:
-                introduce POP_JUMP_IF_FALSE and POP_JUMP_IF_TRUE)
-       Python 2.7a0  62191 (introduce SETUP_WITH)
-       Python 2.7a0  62201 (introduce BUILD_SET)
-       Python 2.7a0  62211 (introduce MAP_ADD and SET_ADD)
-.
-*/
-#define MAGIC (62211 | ((long)'\r'<<16) | ((long)'\n'<<24))
-
-/* Magic word as global; note that _PyImport_Init() can change the
-   value of this global to accommodate for alterations of how the
-   compiler works which are enabled by command line switches. */
-static long pyc_magic = MAGIC;
-
-/* See _PyImport_FixupExtension() below */
-static PyObject *extensions = NULL;
-
-/* This table is defined in config.c: */
-extern struct _inittab _PyImport_Inittab[];
-
-struct _inittab *PyImport_Inittab = _PyImport_Inittab;
-
-/* these tables define the module suffixes that Python recognizes */
-struct filedescr * _PyImport_Filetab = NULL;
-
-#ifdef RISCOS
-static const struct filedescr _PyImport_StandardFiletab[] = {
-    {"/py", "U", PY_SOURCE},
-    {"/pyc", "rb", PY_COMPILED},
-    {0, 0}
-};
-#else
-static const struct filedescr _PyImport_StandardFiletab[] = {
-    {".py", "U", PY_SOURCE},
-#ifdef MS_WINDOWS
-    {".pyw", "U", PY_SOURCE},
-#endif
-    {".pyc", "rb", PY_COMPILED},
-    {0, 0}
-};
-#endif
-
-
-/* Initialize things */
-
-void
-_PyImport_Init(void)
-{
-    const struct filedescr *scan;
-    struct filedescr *filetab;
-    int countD = 0;
-    int countS = 0;
-
-    /* prepare _PyImport_Filetab: copy entries from
-       _PyImport_DynLoadFiletab and _PyImport_StandardFiletab.
-     */
-#ifdef HAVE_DYNAMIC_LOADING
-    for (scan = _PyImport_DynLoadFiletab; scan->suffix != NULL; ++scan)
-        ++countD;
-#endif
-    for (scan = _PyImport_StandardFiletab; scan->suffix != NULL; ++scan)
-        ++countS;
-    filetab = PyMem_NEW(struct filedescr, countD + countS + 1);
-    if (filetab == NULL)
-        Py_FatalError("Can't initialize import file table.");
-#ifdef HAVE_DYNAMIC_LOADING
-    memcpy(filetab, _PyImport_DynLoadFiletab,
-           countD * sizeof(struct filedescr));
-#endif
-    memcpy(filetab + countD, _PyImport_StandardFiletab,
-           countS * sizeof(struct filedescr));
-    filetab[countD + countS].suffix = NULL;
-
-    _PyImport_Filetab = filetab;
-
-    if (Py_OptimizeFlag) {
-        /* Replace ".pyc" with ".pyo" in _PyImport_Filetab */
-        for (; filetab->suffix != NULL; filetab++) {
-#ifndef RISCOS
-            if (strcmp(filetab->suffix, ".pyc") == 0)
-                filetab->suffix = ".pyo";
-#else
-            if (strcmp(filetab->suffix, "/pyc") == 0)
-                filetab->suffix = "/pyo";
-#endif
-        }
-    }
-
-    if (Py_UnicodeFlag) {
-        /* Fix the pyc_magic so that byte compiled code created
-           using the all-Unicode method doesn't interfere with
-           code created in normal operation mode. */
-        pyc_magic = MAGIC + 1;
-    }
-}
-
-void
-_PyImportHooks_Init(void)
-{
-    PyObject *v, *path_hooks = NULL, *zimpimport;
-    int err = 0;
-
-    /* adding sys.path_hooks and sys.path_importer_cache, setting up
-       zipimport */
-    if (PyType_Ready(&PyNullImporter_Type) < 0)
-        goto error;
-
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("# installing zipimport hook\n");
-
-    v = PyList_New(0);
-    if (v == NULL)
-        goto error;
-    err = PySys_SetObject("meta_path", v);
-    Py_DECREF(v);
-    if (err)
-        goto error;
-    v = PyDict_New();
-    if (v == NULL)
-        goto error;
-    err = PySys_SetObject("path_importer_cache", v);
-    Py_DECREF(v);
-    if (err)
-        goto error;
-    path_hooks = PyList_New(0);
-    if (path_hooks == NULL)
-        goto error;
-    err = PySys_SetObject("path_hooks", path_hooks);
-    if (err) {
-  error:
-        PyErr_Print();
-        Py_FatalError("initializing sys.meta_path, sys.path_hooks, "
-                      "path_importer_cache, or NullImporter failed"
-                      );
-    }
-
-    zimpimport = PyImport_ImportModule("zipimport");
-    if (zimpimport == NULL) {
-        PyErr_Clear(); /* No zip import module -- okay */
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# can't import zipimport\n");
-    }
-    else {
-        PyObject *zipimporter = PyObject_GetAttrString(zimpimport,
-                                                       "zipimporter");
-        Py_DECREF(zimpimport);
-        if (zipimporter == NULL) {
-            PyErr_Clear(); /* No zipimporter object -- okay */
-            if (Py_VerboseFlag)
-                PySys_WriteStderr(
-                    "# can't import zipimport.zipimporter\n");
-        }
-        else {
-            /* sys.path_hooks.append(zipimporter) */
-            err = PyList_Append(path_hooks, zipimporter);
-            Py_DECREF(zipimporter);
-            if (err)
-                goto error;
-            if (Py_VerboseFlag)
-                PySys_WriteStderr(
-                    "# installed zipimport hook\n");
-        }
-    }
-    Py_DECREF(path_hooks);
-}
-
-void
-_PyImport_Fini(void)
-{
-    Py_XDECREF(extensions);
-    extensions = NULL;
-    PyMem_DEL(_PyImport_Filetab);
-    _PyImport_Filetab = NULL;
-}
-
-
-/* Locking primitives to prevent parallel imports of the same module
-   in different threads to return with a partially loaded module.
-   These calls are serialized by the global interpreter lock. */
-
-#ifdef WITH_THREAD
-
-#include "pythread.h"
-
-static PyThread_type_lock import_lock = 0;
-static long import_lock_thread = -1;
-static int import_lock_level = 0;
-
-void
-_PyImport_AcquireLock(void)
-{
-    long me = PyThread_get_thread_ident();
-    if (me == -1)
-        return; /* Too bad */
-    if (import_lock == NULL) {
-        import_lock = PyThread_allocate_lock();
-        if (import_lock == NULL)
-            return;  /* Nothing much we can do. */
-    }
-    if (import_lock_thread == me) {
-        import_lock_level++;
-        return;
-    }
-    if (import_lock_thread != -1 || !PyThread_acquire_lock(import_lock, 0))
-    {
-        PyThreadState *tstate = PyEval_SaveThread();
-        PyThread_acquire_lock(import_lock, 1);
-        PyEval_RestoreThread(tstate);
-    }
-    import_lock_thread = me;
-    import_lock_level = 1;
-}
-
-int
-_PyImport_ReleaseLock(void)
-{
-    long me = PyThread_get_thread_ident();
-    if (me == -1 || import_lock == NULL)
-        return 0; /* Too bad */
-    if (import_lock_thread != me)
-        return -1;
-    import_lock_level--;
-    if (import_lock_level == 0) {
-        import_lock_thread = -1;
-        PyThread_release_lock(import_lock);
-    }
-    return 1;
-}
-
-/* This function is called from PyOS_AfterFork to ensure that newly
-   created child processes do not share locks with the parent.
-   We now acquire the import lock around fork() calls but on some platforms
-   (Solaris 9 and earlier? see isue7242) that still left us with problems. */
-
-void
-_PyImport_ReInitLock(void)
-{
-    if (import_lock != NULL)
-        import_lock = PyThread_allocate_lock();
-    import_lock_thread = -1;
-    import_lock_level = 0;
-}
-
-#endif
-
-static PyObject *
-imp_lock_held(PyObject *self, PyObject *noargs)
-{
-#ifdef WITH_THREAD
-    return PyBool_FromLong(import_lock_thread != -1);
-#else
-    return PyBool_FromLong(0);
-#endif
-}
-
-static PyObject *
-imp_acquire_lock(PyObject *self, PyObject *noargs)
-{
-#ifdef WITH_THREAD
-    _PyImport_AcquireLock();
-#endif
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-imp_release_lock(PyObject *self, PyObject *noargs)
-{
-#ifdef WITH_THREAD
-    if (_PyImport_ReleaseLock() < 0) {
-        PyErr_SetString(PyExc_RuntimeError,
-                        "not holding the import lock");
-        return NULL;
-    }
-#endif
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static void
-imp_modules_reloading_clear(void)
-{
-    PyInterpreterState *interp = PyThreadState_Get()->interp;
-    if (interp->modules_reloading != NULL)
-        PyDict_Clear(interp->modules_reloading);
-}
-
-/* Helper for sys */
-
-PyObject *
-PyImport_GetModuleDict(void)
-{
-    PyInterpreterState *interp = PyThreadState_GET()->interp;
-    if (interp->modules == NULL)
-        Py_FatalError("PyImport_GetModuleDict: no module dictionary!");
-    return interp->modules;
-}
-
-
-/* List of names to clear in sys */
-static char* sys_deletes[] = {
-    "path", "argv", "ps1", "ps2", "exitfunc",
-    "exc_type", "exc_value", "exc_traceback",
-    "last_type", "last_value", "last_traceback",
-    "path_hooks", "path_importer_cache", "meta_path",
-    /* misc stuff */
-    "flags", "float_info",
-    NULL
-};
-
-static char* sys_files[] = {
-    "stdin", "__stdin__",
-    "stdout", "__stdout__",
-    "stderr", "__stderr__",
-    NULL
-};
-
-
-/* Un-initialize things, as good as we can */
-
-void
-PyImport_Cleanup(void)
-{
-    Py_ssize_t pos, ndone;
-    char *name;
-    PyObject *key, *value, *dict;
-    PyInterpreterState *interp = PyThreadState_GET()->interp;
-    PyObject *modules = interp->modules;
-
-    if (modules == NULL)
-        return; /* Already done */
-
-    /* Delete some special variables first.  These are common
-       places where user values hide and people complain when their
-       destructors fail.  Since the modules containing them are
-       deleted *last* of all, they would come too late in the normal
-       destruction order.  Sigh. */
-
-    value = PyDict_GetItemString(modules, "__builtin__");
-    if (value != NULL && PyModule_Check(value)) {
-        dict = PyModule_GetDict(value);
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# clear __builtin__._\n");
-        PyDict_SetItemString(dict, "_", Py_None);
-    }
-    value = PyDict_GetItemString(modules, "sys");
-    if (value != NULL && PyModule_Check(value)) {
-        char **p;
-        PyObject *v;
-        dict = PyModule_GetDict(value);
-        for (p = sys_deletes; *p != NULL; p++) {
-            if (Py_VerboseFlag)
-                PySys_WriteStderr("# clear sys.%s\n", *p);
-            PyDict_SetItemString(dict, *p, Py_None);
-        }
-        for (p = sys_files; *p != NULL; p+=2) {
-            if (Py_VerboseFlag)
-                PySys_WriteStderr("# restore sys.%s\n", *p);
-            v = PyDict_GetItemString(dict, *(p+1));
-            if (v == NULL)
-                v = Py_None;
-            PyDict_SetItemString(dict, *p, v);
-        }
-    }
-
-    /* First, delete __main__ */
-    value = PyDict_GetItemString(modules, "__main__");
-    if (value != NULL && PyModule_Check(value)) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# cleanup __main__\n");
-        _PyModule_Clear(value);
-        PyDict_SetItemString(modules, "__main__", Py_None);
-    }
-
-    /* The special treatment of __builtin__ here is because even
-       when it's not referenced as a module, its dictionary is
-       referenced by almost every module's __builtins__.  Since
-       deleting a module clears its dictionary (even if there are
-       references left to it), we need to delete the __builtin__
-       module last.  Likewise, we don't delete sys until the very
-       end because it is implicitly referenced (e.g. by print).
-
-       Also note that we 'delete' modules by replacing their entry
-       in the modules dict with None, rather than really deleting
-       them; this avoids a rehash of the modules dictionary and
-       also marks them as "non existent" so they won't be
-       re-imported. */
-
-    /* Next, repeatedly delete modules with a reference count of
-       one (skipping __builtin__ and sys) and delete them */
-    do {
-        ndone = 0;
-        pos = 0;
-        while (PyDict_Next(modules, &pos, &key, &value)) {
-            if (value->ob_refcnt != 1)
-                continue;
-            if (PyString_Check(key) && PyModule_Check(value)) {
-                name = PyString_AS_STRING(key);
-                if (strcmp(name, "__builtin__") == 0)
-                    continue;
-                if (strcmp(name, "sys") == 0)
-                    continue;
-                if (Py_VerboseFlag)
-                    PySys_WriteStderr(
-                        "# cleanup[1] %s\n", name);
-                _PyModule_Clear(value);
-                PyDict_SetItem(modules, key, Py_None);
-                ndone++;
-            }
-        }
-    } while (ndone > 0);
-
-    /* Next, delete all modules (still skipping __builtin__ and sys) */
-    pos = 0;
-    while (PyDict_Next(modules, &pos, &key, &value)) {
-        if (PyString_Check(key) && PyModule_Check(value)) {
-            name = PyString_AS_STRING(key);
-            if (strcmp(name, "__builtin__") == 0)
-                continue;
-            if (strcmp(name, "sys") == 0)
-                continue;
-            if (Py_VerboseFlag)
-                PySys_WriteStderr("# cleanup[2] %s\n", name);
-            _PyModule_Clear(value);
-            PyDict_SetItem(modules, key, Py_None);
-        }
-    }
-
-    /* Next, delete sys and __builtin__ (in that order) */
-    value = PyDict_GetItemString(modules, "sys");
-    if (value != NULL && PyModule_Check(value)) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# cleanup sys\n");
-        _PyModule_Clear(value);
-        PyDict_SetItemString(modules, "sys", Py_None);
-    }
-    value = PyDict_GetItemString(modules, "__builtin__");
-    if (value != NULL && PyModule_Check(value)) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# cleanup __builtin__\n");
-        _PyModule_Clear(value);
-        PyDict_SetItemString(modules, "__builtin__", Py_None);
-    }
-
-    /* Finally, clear and delete the modules directory */
-    PyDict_Clear(modules);
-    interp->modules = NULL;
-    Py_DECREF(modules);
-    Py_CLEAR(interp->modules_reloading);
-}
-
-
-/* Helper for pythonrun.c -- return magic number */
-
-long
-PyImport_GetMagicNumber(void)
-{
-    return pyc_magic;
-}
-
-
-/* Magic for extension modules (built-in as well as dynamically
-   loaded).  To prevent initializing an extension module more than
-   once, we keep a static dictionary 'extensions' keyed by module name
-   (for built-in modules) or by filename (for dynamically loaded
-   modules), containing these modules.  A copy of the module's
-   dictionary is stored by calling _PyImport_FixupExtension()
-   immediately after the module initialization function succeeds.  A
-   copy can be retrieved from there by calling
-   _PyImport_FindExtension(). */
-
-PyObject *
-_PyImport_FixupExtension(char *name, char *filename)
-{
-    PyObject *modules, *mod, *dict, *copy;
-    if (extensions == NULL) {
-        extensions = PyDict_New();
-        if (extensions == NULL)
-            return NULL;
-    }
-    modules = PyImport_GetModuleDict();
-    mod = PyDict_GetItemString(modules, name);
-    if (mod == NULL || !PyModule_Check(mod)) {
-        PyErr_Format(PyExc_SystemError,
-          "_PyImport_FixupExtension: module %.200s not loaded", name);
-        return NULL;
-    }
-    dict = PyModule_GetDict(mod);
-    if (dict == NULL)
-        return NULL;
-    copy = PyDict_Copy(dict);
-    if (copy == NULL)
-        return NULL;
-    PyDict_SetItemString(extensions, filename, copy);
-    Py_DECREF(copy);
-    return copy;
-}
-
-PyObject *
-_PyImport_FindExtension(char *name, char *filename)
-{
-    PyObject *dict, *mod, *mdict;
-    if (extensions == NULL)
-        return NULL;
-    dict = PyDict_GetItemString(extensions, filename);
-    if (dict == NULL)
-        return NULL;
-    mod = PyImport_AddModule(name);
-    if (mod == NULL)
-        return NULL;
-    mdict = PyModule_GetDict(mod);
-    if (mdict == NULL)
-        return NULL;
-    if (PyDict_Update(mdict, dict))
-        return NULL;
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("import %s # previously loaded (%s)\n",
-            name, filename);
-    return mod;
-}
-
-
-/* Get the module object corresponding to a module name.
-   First check the modules dictionary if there's one there,
-   if not, create a new one and insert it in the modules dictionary.
-   Because the former action is most common, THIS DOES NOT RETURN A
-   'NEW' REFERENCE! */
-
-PyObject *
-PyImport_AddModule(const char *name)
-{
-    PyObject *modules = PyImport_GetModuleDict();
-    PyObject *m;
-
-    if ((m = PyDict_GetItemString(modules, name)) != NULL &&
-        PyModule_Check(m))
-        return m;
-    m = PyModule_New(name);
-    if (m == NULL)
-        return NULL;
-    if (PyDict_SetItemString(modules, name, m) != 0) {
-        Py_DECREF(m);
-        return NULL;
-    }
-    Py_DECREF(m); /* Yes, it still exists, in modules! */
-
-    return m;
-}
-
-/* Remove name from sys.modules, if it's there. */
-static void
-remove_module(const char *name)
-{
-    PyObject *modules = PyImport_GetModuleDict();
-    if (PyDict_GetItemString(modules, name) == NULL)
-        return;
-    if (PyDict_DelItemString(modules, name) < 0)
-        Py_FatalError("import:  deleting existing key in"
-                      "sys.modules failed");
-}
-
-/* Execute a code object in a module and return the module object
- * WITH INCREMENTED REFERENCE COUNT.  If an error occurs, name is
- * removed from sys.modules, to avoid leaving damaged module objects
- * in sys.modules.  The caller may wish to restore the original
- * module object (if any) in this case; PyImport_ReloadModule is an
- * example.
- */
-PyObject *
-PyImport_ExecCodeModule(char *name, PyObject *co)
-{
-    return PyImport_ExecCodeModuleEx(name, co, (char *)NULL);
-}
-
-PyObject *
-PyImport_ExecCodeModuleEx(char *name, PyObject *co, char *pathname)
-{
-    PyObject *modules = PyImport_GetModuleDict();
-    PyObject *m, *d, *v;
-
-    m = PyImport_AddModule(name);
-    if (m == NULL)
-        return NULL;
-    /* If the module is being reloaded, we get the old module back
-       and re-use its dict to exec the new code. */
-    d = PyModule_GetDict(m);
-    if (PyDict_GetItemString(d, "__builtins__") == NULL) {
-        if (PyDict_SetItemString(d, "__builtins__",
-                                 PyEval_GetBuiltins()) != 0)
-            goto error;
-    }
-    /* Remember the filename as the __file__ attribute */
-    v = NULL;
-    if (pathname != NULL) {
-        v = PyString_FromString(pathname);
-        if (v == NULL)
-            PyErr_Clear();
-    }
-    if (v == NULL) {
-        v = ((PyCodeObject *)co)->co_filename;
-        Py_INCREF(v);
-    }
-    if (PyDict_SetItemString(d, "__file__", v) != 0)
-        PyErr_Clear(); /* Not important enough to report */
-    Py_DECREF(v);
-
-    v = PyEval_EvalCode((PyCodeObject *)co, d, d);
-    if (v == NULL)
-        goto error;
-    Py_DECREF(v);
-
-    if ((m = PyDict_GetItemString(modules, name)) == NULL) {
-        PyErr_Format(PyExc_ImportError,
-                     "Loaded module %.200s not found in sys.modules",
-                     name);
-        return NULL;
-    }
-
-    Py_INCREF(m);
-
-    return m;
-
-  error:
-    remove_module(name);
-    return NULL;
-}
-
-
-/* Given a pathname for a Python source file, fill a buffer with the
-   pathname for the corresponding compiled file.  Return the pathname
-   for the compiled file, or NULL if there's no space in the buffer.
-   Doesn't set an exception. */
-
-static char *
-make_compiled_pathname(char *pathname, char *buf, size_t buflen)
-{
-    size_t len = strlen(pathname);
-    if (len+2 > buflen)
-        return NULL;
-
-#ifdef MS_WINDOWS
-    /* Treat .pyw as if it were .py.  The case of ".pyw" must match
-       that used in _PyImport_StandardFiletab. */
-    if (len >= 4 && strcmp(&pathname[len-4], ".pyw") == 0)
-        --len;          /* pretend 'w' isn't there */
-#endif
-    memcpy(buf, pathname, len);
-    buf[len] = Py_OptimizeFlag ? 'o' : 'c';
-    buf[len+1] = '\0';
-
-    return buf;
-}
-
-
-/* Given a pathname for a Python source file, its time of last
-   modification, and a pathname for a compiled file, check whether the
-   compiled file represents the same version of the source.  If so,
-   return a FILE pointer for the compiled file, positioned just after
-   the header; if not, return NULL.
-   Doesn't set an exception. */
-
-static FILE *
-check_compiled_module(char *pathname, time_t mtime, char *cpathname)
-{
-    FILE *fp;
-    long magic;
-    long pyc_mtime;
-
-    fp = fopen(cpathname, "rb");
-    if (fp == NULL)
-        return NULL;
-    magic = PyMarshal_ReadLongFromFile(fp);
-    if (magic != pyc_magic) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# %s has bad magic\n", cpathname);
-        fclose(fp);
-        return NULL;
-    }
-    pyc_mtime = PyMarshal_ReadLongFromFile(fp);
-    if (pyc_mtime != mtime) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# %s has bad mtime\n", cpathname);
-        fclose(fp);
-        return NULL;
-    }
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("# %s matches %s\n", cpathname, pathname);
-    return fp;
-}
-
-
-/* Read a code object from a file and check it for validity */
-
-static PyCodeObject *
-read_compiled_module(char *cpathname, FILE *fp)
-{
-    PyObject *co;
-
-    co = PyMarshal_ReadLastObjectFromFile(fp);
-    if (co == NULL)
-        return NULL;
-    if (!PyCode_Check(co)) {
-        PyErr_Format(PyExc_ImportError,
-                     "Non-code object in %.200s", cpathname);
-        Py_DECREF(co);
-        return NULL;
-    }
-    return (PyCodeObject *)co;
-}
-
-
-/* Load a module from a compiled file, execute it, and return its
-   module object WITH INCREMENTED REFERENCE COUNT */
-
-static PyObject *
-load_compiled_module(char *name, char *cpathname, FILE *fp)
-{
-    long magic;
-    PyCodeObject *co;
-    PyObject *m;
-
-    magic = PyMarshal_ReadLongFromFile(fp);
-    if (magic != pyc_magic) {
-        PyErr_Format(PyExc_ImportError,
-                     "Bad magic number in %.200s", cpathname);
-        return NULL;
-    }
-    (void) PyMarshal_ReadLongFromFile(fp);
-    co = read_compiled_module(cpathname, fp);
-    if (co == NULL)
-        return NULL;
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("import %s # precompiled from %s\n",
-            name, cpathname);
-    m = PyImport_ExecCodeModuleEx(name, (PyObject *)co, cpathname);
-    Py_DECREF(co);
-
-    return m;
-}
-
-/* Parse a source file and return the corresponding code object */
-
-static PyCodeObject *
-parse_source_module(const char *pathname, FILE *fp)
-{
-    PyCodeObject *co = NULL;
-    mod_ty mod;
-    PyCompilerFlags flags;
-    PyArena *arena = PyArena_New();
-    if (arena == NULL)
-        return NULL;
-
-    flags.cf_flags = 0;
-
-    mod = PyParser_ASTFromFile(fp, pathname, Py_file_input, 0, 0, &flags,
-                               NULL, arena);
-    if (mod) {
-        co = PyAST_Compile(mod, pathname, NULL, arena);
-    }
-    PyArena_Free(arena);
-    return co;
-}
-
-
-/* Helper to open a bytecode file for writing in exclusive mode */
-
-static FILE *
-open_exclusive(char *filename, mode_t mode)
-{
-#if defined(O_EXCL)&&defined(O_CREAT)&&defined(O_WRONLY)&&defined(O_TRUNC)
-    /* Use O_EXCL to avoid a race condition when another process tries to
-       write the same file.  When that happens, our open() call fails,
-       which is just fine (since it's only a cache).
-       XXX If the file exists and is writable but the directory is not
-       writable, the file will never be written.  Oh well.
-    */
-    int fd;
-    (void) unlink(filename);
-    fd = open(filename, O_EXCL|O_CREAT|O_WRONLY|O_TRUNC
-#ifdef O_BINARY
-                            |O_BINARY   /* necessary for Windows */
-#endif
-#ifdef __VMS
-            , mode, "ctxt=bin", "shr=nil"
-#else
-            , mode
-#endif
-          );
-    if (fd < 0)
-        return NULL;
-    return fdopen(fd, "wb");
-#else
-    /* Best we can do -- on Windows this can't happen anyway */
-    return fopen(filename, "wb");
-#endif
-}
-
-
-/* Write a compiled module to a file, placing the time of last
-   modification of its source into the header.
-   Errors are ignored, if a write error occurs an attempt is made to
-   remove the file. */
-
-static void
-write_compiled_module(PyCodeObject *co, char *cpathname, struct stat *srcstat)
-{
-    FILE *fp;
-    time_t mtime = srcstat->st_mtime;
-#ifdef MS_WINDOWS   /* since Windows uses different permissions  */
-    mode_t mode = srcstat->st_mode & ~S_IEXEC;
-#else
-    mode_t mode = srcstat->st_mode & ~S_IXUSR & ~S_IXGRP & ~S_IXOTH;
-#endif
-
-    fp = open_exclusive(cpathname, mode);
-    if (fp == NULL) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr(
-                "# can't create %s\n", cpathname);
-        return;
-    }
-    PyMarshal_WriteLongToFile(pyc_magic, fp, Py_MARSHAL_VERSION);
-    /* First write a 0 for mtime */
-    PyMarshal_WriteLongToFile(0L, fp, Py_MARSHAL_VERSION);
-    PyMarshal_WriteObjectToFile((PyObject *)co, fp, Py_MARSHAL_VERSION);
-    if (fflush(fp) != 0 || ferror(fp)) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# can't write %s\n", cpathname);
-        /* Don't keep partial file */
-        fclose(fp);
-        (void) unlink(cpathname);
-        return;
-    }
-    /* Now write the true mtime */
-    fseek(fp, 4L, 0);
-    assert(mtime < LONG_MAX);
-    PyMarshal_WriteLongToFile((long)mtime, fp, Py_MARSHAL_VERSION);
-    fflush(fp);
-    fclose(fp);
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("# wrote %s\n", cpathname);
-}
-
-static void
-update_code_filenames(PyCodeObject *co, PyObject *oldname, PyObject *newname)
-{
-    PyObject *constants, *tmp;
-    Py_ssize_t i, n;
-
-    if (!_PyString_Eq(co->co_filename, oldname))
-        return;
-
-    tmp = co->co_filename;
-    co->co_filename = newname;
-    Py_INCREF(co->co_filename);
-    Py_DECREF(tmp);
-
-    constants = co->co_consts;
-    n = PyTuple_GET_SIZE(constants);
-    for (i = 0; i < n; i++) {
-        tmp = PyTuple_GET_ITEM(constants, i);
-        if (PyCode_Check(tmp))
-            update_code_filenames((PyCodeObject *)tmp,
-                                  oldname, newname);
-    }
-}
-
-static int
-update_compiled_module(PyCodeObject *co, char *pathname)
-{
-    PyObject *oldname, *newname;
-
-    if (strcmp(PyString_AsString(co->co_filename), pathname) == 0)
-        return 0;
-
-    newname = PyString_FromString(pathname);
-    if (newname == NULL)
-        return -1;
-
-    oldname = co->co_filename;
-    Py_INCREF(oldname);
-    update_code_filenames(co, oldname, newname);
-    Py_DECREF(oldname);
-    Py_DECREF(newname);
-    return 1;
-}
-
-/* Load a source module from a given file and return its module
-   object WITH INCREMENTED REFERENCE COUNT.  If there's a matching
-   byte-compiled file, use that instead. */
-
-static PyObject *
-load_source_module(char *name, char *pathname, FILE *fp)
-{
-    struct stat st;
-    FILE *fpc;
-    char buf[MAXPATHLEN+1];
-    char *cpathname;
-    PyCodeObject *co;
-    PyObject *m;
-
-    if (fstat(fileno(fp), &st) != 0) {
-        PyErr_Format(PyExc_RuntimeError,
-                     "unable to get file status from '%s'",
-                     pathname);
-        return NULL;
-    }
-#if SIZEOF_TIME_T > 4
-    /* Python's .pyc timestamp handling presumes that the timestamp fits
-       in 4 bytes. This will be fine until sometime in the year 2038,
-       when a 4-byte signed time_t will overflow.
-     */
-    if (st.st_mtime >> 32) {
-        PyErr_SetString(PyExc_OverflowError,
-            "modification time overflows a 4 byte field");
-        return NULL;
-    }
-#endif
-    cpathname = make_compiled_pathname(pathname, buf,
-                                       (size_t)MAXPATHLEN + 1);
-    if (cpathname != NULL &&
-        (fpc = check_compiled_module(pathname, st.st_mtime, cpathname))) {
-        co = read_compiled_module(cpathname, fpc);
-        fclose(fpc);
-        if (co == NULL)
-            return NULL;
-        if (update_compiled_module(co, pathname) < 0)
-            return NULL;
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("import %s # precompiled from %s\n",
-                name, cpathname);
-        pathname = cpathname;
-    }
-    else {
-        co = parse_source_module(pathname, fp);
-        if (co == NULL)
-            return NULL;
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("import %s # from %s\n",
-                name, pathname);
-        if (cpathname) {
-            PyObject *ro = PySys_GetObject("dont_write_bytecode");
-            if (ro == NULL || !PyObject_IsTrue(ro))
-                write_compiled_module(co, cpathname, &st);
-        }
-    }
-    m = PyImport_ExecCodeModuleEx(name, (PyObject *)co, pathname);
-    Py_DECREF(co);
-
-    return m;
-}
-
-
-/* Forward */
-static PyObject *load_module(char *, FILE *, char *, int, PyObject *);
-static struct filedescr *find_module(char *, char *, PyObject *,
-                                     char *, size_t, FILE **, PyObject **);
-static struct _frozen *find_frozen(char *name);
-
-/* Load a package and return its module object WITH INCREMENTED
-   REFERENCE COUNT */
-
-static PyObject *
-load_package(char *name, char *pathname)
-{
-    PyObject *m, *d;
-    PyObject *file = NULL;
-    PyObject *path = NULL;
-    int err;
-    char buf[MAXPATHLEN+1];
-    FILE *fp = NULL;
-    struct filedescr *fdp;
-
-    m = PyImport_AddModule(name);
-    if (m == NULL)
-        return NULL;
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("import %s # directory %s\n",
-            name, pathname);
-    d = PyModule_GetDict(m);
-    file = PyString_FromString(pathname);
-    if (file == NULL)
-        goto error;
-    path = Py_BuildValue("[O]", file);
-    if (path == NULL)
-        goto error;
-    err = PyDict_SetItemString(d, "__file__", file);
-    if (err == 0)
-        err = PyDict_SetItemString(d, "__path__", path);
-    if (err != 0)
-        goto error;
-    buf[0] = '\0';
-    fdp = find_module(name, "__init__", path, buf, sizeof(buf), &fp, NULL);
-    if (fdp == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_ImportError)) {
-            PyErr_Clear();
-            Py_INCREF(m);
-        }
-        else
-            m = NULL;
-        goto cleanup;
-    }
-    m = load_module(name, fp, buf, fdp->type, NULL);
-    if (fp != NULL)
-        fclose(fp);
-    goto cleanup;
-
-  error:
-    m = NULL;
-  cleanup:
-    Py_XDECREF(path);
-    Py_XDECREF(file);
-    return m;
-}
-
-
-/* Helper to test for built-in module */
-
-static int
-is_builtin(char *name)
-{
-    int i;
-    for (i = 0; PyImport_Inittab[i].name != NULL; i++) {
-        if (strcmp(name, PyImport_Inittab[i].name) == 0) {
-            if (PyImport_Inittab[i].initfunc == NULL)
-                return -1;
-            else
-                return 1;
-        }
-    }
-    return 0;
-}
-
-
-/* Return an importer object for a sys.path/pkg.__path__ item 'p',
-   possibly by fetching it from the path_importer_cache dict. If it
-   wasn't yet cached, traverse path_hooks until a hook is found
-   that can handle the path item. Return None if no hook could;
-   this tells our caller it should fall back to the builtin
-   import mechanism. Cache the result in path_importer_cache.
-   Returns a borrowed reference. */
-
-static PyObject *
-get_path_importer(PyObject *path_importer_cache, PyObject *path_hooks,
-                  PyObject *p)
-{
-    PyObject *importer;
-    Py_ssize_t j, nhooks;
-
-    /* These conditions are the caller's responsibility: */
-    assert(PyList_Check(path_hooks));
-    assert(PyDict_Check(path_importer_cache));
-
-    nhooks = PyList_Size(path_hooks);
-    if (nhooks < 0)
-        return NULL; /* Shouldn't happen */
-
-    importer = PyDict_GetItem(path_importer_cache, p);
-    if (importer != NULL)
-        return importer;
-
-    /* set path_importer_cache[p] to None to avoid recursion */
-    if (PyDict_SetItem(path_importer_cache, p, Py_None) != 0)
-        return NULL;
-
-    for (j = 0; j < nhooks; j++) {
-        PyObject *hook = PyList_GetItem(path_hooks, j);
-        if (hook == NULL)
-            return NULL;
-        importer = PyObject_CallFunctionObjArgs(hook, p, NULL);
-        if (importer != NULL)
-            break;
-
-        if (!PyErr_ExceptionMatches(PyExc_ImportError)) {
-            return NULL;
-        }
-        PyErr_Clear();
-    }
-    if (importer == NULL) {
-        importer = PyObject_CallFunctionObjArgs(
-            (PyObject *)&PyNullImporter_Type, p, NULL
-        );
-        if (importer == NULL) {
-            if (PyErr_ExceptionMatches(PyExc_ImportError)) {
-                PyErr_Clear();
-                return Py_None;
-            }
-        }
-    }
-    if (importer != NULL) {
-        int err = PyDict_SetItem(path_importer_cache, p, importer);
-        Py_DECREF(importer);
-        if (err != 0)
-            return NULL;
-    }
-    return importer;
-}
-
-PyAPI_FUNC(PyObject *)
-PyImport_GetImporter(PyObject *path) {
-    PyObject *importer=NULL, *path_importer_cache=NULL, *path_hooks=NULL;
-
-    if ((path_importer_cache = PySys_GetObject("path_importer_cache"))) {
-        if ((path_hooks = PySys_GetObject("path_hooks"))) {
-            importer = get_path_importer(path_importer_cache,
-                                         path_hooks, path);
-        }
-    }
-    Py_XINCREF(importer); /* get_path_importer returns a borrowed reference */
-    return importer;
-}
-
-/* Search the path (default sys.path) for a module.  Return the
-   corresponding filedescr struct, and (via return arguments) the
-   pathname and an open file.  Return NULL if the module is not found. */
-
-#ifdef MS_COREDLL
-extern FILE *PyWin_FindRegisteredModule(const char *, struct filedescr **,
-                                        char *, Py_ssize_t);
-#endif
-
-static int case_ok(char *, Py_ssize_t, Py_ssize_t, char *);
-static int find_init_module(char *); /* Forward */
-static struct filedescr importhookdescr = {"", "", IMP_HOOK};
-
-static struct filedescr *
-find_module(char *fullname, char *subname, PyObject *path, char *buf,
-            size_t buflen, FILE **p_fp, PyObject **p_loader)
-{
-    Py_ssize_t i, npath;
-    size_t len, namelen;
-    struct filedescr *fdp = NULL;
-    char *filemode;
-    FILE *fp = NULL;
-    PyObject *path_hooks, *path_importer_cache;
-#ifndef RISCOS
-    struct stat statbuf;
-#endif
-    static struct filedescr fd_frozen = {"", "", PY_FROZEN};
-    static struct filedescr fd_builtin = {"", "", C_BUILTIN};
-    static struct filedescr fd_package = {"", "", PKG_DIRECTORY};
-    char name[MAXPATHLEN+1];
-#if defined(PYOS_OS2)
-    size_t saved_len;
-    size_t saved_namelen;
-    char *saved_buf = NULL;
-#endif
-    if (p_loader != NULL)
-        *p_loader = NULL;
-
-    if (strlen(subname) > MAXPATHLEN) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "module name is too long");
-        return NULL;
-    }
-    strcpy(name, subname);
-
-    /* sys.meta_path import hook */
-    if (p_loader != NULL) {
-        PyObject *meta_path;
-
-        meta_path = PySys_GetObject("meta_path");
-        if (meta_path == NULL || !PyList_Check(meta_path)) {
-            PyErr_SetString(PyExc_ImportError,
-                            "sys.meta_path must be a list of "
-                            "import hooks");
-            return NULL;
-        }
-        Py_INCREF(meta_path);  /* zap guard */
-        npath = PyList_Size(meta_path);
-        for (i = 0; i < npath; i++) {
-            PyObject *loader;
-            PyObject *hook = PyList_GetItem(meta_path, i);
-            loader = PyObject_CallMethod(hook, "find_module",
-                                         "sO", fullname,
-                                         path != NULL ?
-                                         path : Py_None);
-            if (loader == NULL) {
-                Py_DECREF(meta_path);
-                return NULL;  /* true error */
-            }
-            if (loader != Py_None) {
-                /* a loader was found */
-                *p_loader = loader;
-                Py_DECREF(meta_path);
-                return &importhookdescr;
-            }
-            Py_DECREF(loader);
-        }
-        Py_DECREF(meta_path);
-    }
-
-    if (path != NULL && PyString_Check(path)) {
-        /* The only type of submodule allowed inside a "frozen"
-           package are other frozen modules or packages. */
-        if (PyString_Size(path) + 1 + strlen(name) >= (size_t)buflen) {
-            PyErr_SetString(PyExc_ImportError,
-                            "full frozen module name too long");
-            return NULL;
-        }
-        strcpy(buf, PyString_AsString(path));
-        strcat(buf, ".");
-        strcat(buf, name);
-        strcpy(name, buf);
-        if (find_frozen(name) != NULL) {
-            strcpy(buf, name);
-            return &fd_frozen;
-        }
-        PyErr_Format(PyExc_ImportError,
-                     "No frozen submodule named %.200s", name);
-        return NULL;
-    }
-    if (path == NULL) {
-        if (is_builtin(name)) {
-            strcpy(buf, name);
-            return &fd_builtin;
-        }
-        if ((find_frozen(name)) != NULL) {
-            strcpy(buf, name);
-            return &fd_frozen;
-        }
-
-#ifdef MS_COREDLL
-        fp = PyWin_FindRegisteredModule(name, &fdp, buf, buflen);
-        if (fp != NULL) {
-            *p_fp = fp;
-            return fdp;
-        }
-#endif
-        path = PySys_GetObject("path");
-    }
-    if (path == NULL || !PyList_Check(path)) {
-        PyErr_SetString(PyExc_ImportError,
-                        "sys.path must be a list of directory names");
-        return NULL;
-    }
-
-    path_hooks = PySys_GetObject("path_hooks");
-    if (path_hooks == NULL || !PyList_Check(path_hooks)) {
-        PyErr_SetString(PyExc_ImportError,
-                        "sys.path_hooks must be a list of "
-                        "import hooks");
-        return NULL;
-    }
-    path_importer_cache = PySys_GetObject("path_importer_cache");
-    if (path_importer_cache == NULL ||
-        !PyDict_Check(path_importer_cache)) {
-        PyErr_SetString(PyExc_ImportError,
-                        "sys.path_importer_cache must be a dict");
-        return NULL;
-    }
-
-    npath = PyList_Size(path);
-    namelen = strlen(name);
-    for (i = 0; i < npath; i++) {
-        PyObject *copy = NULL;
-        PyObject *v = PyList_GetItem(path, i);
-        if (!v)
-            return NULL;
-#ifdef Py_USING_UNICODE
-        if (PyUnicode_Check(v)) {
-            copy = PyUnicode_Encode(PyUnicode_AS_UNICODE(v),
-                PyUnicode_GET_SIZE(v), Py_FileSystemDefaultEncoding, NULL);
-            if (copy == NULL)
-                return NULL;
-            v = copy;
-        }
-        else
-#endif
-        if (!PyString_Check(v))
-            continue;
-        len = PyString_GET_SIZE(v);
-        if (len + 2 + namelen + MAXSUFFIXSIZE >= buflen) {
-            Py_XDECREF(copy);
-            continue; /* Too long */
-        }
-        strcpy(buf, PyString_AS_STRING(v));
-        if (strlen(buf) != len) {
-            Py_XDECREF(copy);
-            continue; /* v contains '\0' */
-        }
-
-        /* sys.path_hooks import hook */
-        if (p_loader != NULL) {
-            PyObject *importer;
-
-            importer = get_path_importer(path_importer_cache,
-                                         path_hooks, v);
-            if (importer == NULL) {
-                Py_XDECREF(copy);
-                return NULL;
-            }
-            /* Note: importer is a borrowed reference */
-            if (importer != Py_None) {
-                PyObject *loader;
-                loader = PyObject_CallMethod(importer,
-                                             "find_module",
-                                             "s", fullname);
-                Py_XDECREF(copy);
-                if (loader == NULL)
-                    return NULL;  /* error */
-                if (loader != Py_None) {
-                    /* a loader was found */
-                    *p_loader = loader;
-                    return &importhookdescr;
-                }
-                Py_DECREF(loader);
-                continue;
-            }
-        }
-        /* no hook was found, use builtin import */
-
-        if (len > 0 && buf[len-1] != SEP
-#ifdef ALTSEP
-            && buf[len-1] != ALTSEP
-#endif
-            )
-            buf[len++] = SEP;
-        strcpy(buf+len, name);
-        len += namelen;
-
-        /* Check for package import (buf holds a directory name,
-           and there's an __init__ module in that directory */
-#ifdef HAVE_STAT
-        if (stat(buf, &statbuf) == 0 &&         /* it exists */
-            S_ISDIR(statbuf.st_mode) &&         /* it's a directory */
-            case_ok(buf, len, namelen, name)) { /* case matches */
-            if (find_init_module(buf)) { /* and has __init__.py */
-                Py_XDECREF(copy);
-                return &fd_package;
-            }
-            else {
-                char warnstr[MAXPATHLEN+80];
-                sprintf(warnstr, "Not importing directory "
-                    "'%.*s': missing __init__.py",
-                    MAXPATHLEN, buf);
-                if (PyErr_Warn(PyExc_ImportWarning,
-                               warnstr)) {
-                    Py_XDECREF(copy);
-                    return NULL;
-                }
-            }
-        }
-#else
-        /* XXX How are you going to test for directories? */
-#ifdef RISCOS
-        if (isdir(buf) &&
-            case_ok(buf, len, namelen, name)) {
-            if (find_init_module(buf)) {
-                Py_XDECREF(copy);
-                return &fd_package;
-            }
-            else {
-                char warnstr[MAXPATHLEN+80];
-                sprintf(warnstr, "Not importing directory "
-                    "'%.*s': missing __init__.py",
-                    MAXPATHLEN, buf);
-                if (PyErr_Warn(PyExc_ImportWarning,
-                               warnstr)) {
-                    Py_XDECREF(copy);
-                    return NULL;
-                }
-        }
-#endif
-#endif
-#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);
-            filemode = fdp->mode;
-            if (filemode[0] == 'U')
-                filemode = "r" PY_STDIOTEXTMODE;
-            fp = fopen(buf, filemode);
-            if (fp != NULL) {
-                if (case_ok(buf, len, namelen, name))
-                    break;
-                else {                   /* continue search */
-                    fclose(fp);
-                    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;
-    }
-    if (fp == NULL) {
-        PyErr_Format(PyExc_ImportError,
-                     "No module named %.200s", name);
-        return NULL;
-    }
-    *p_fp = fp;
-    return fdp;
-}
-
-/* Helpers for main.c
- *  Find the source file corresponding to a named module
- */
-struct filedescr *
-_PyImport_FindModule(const char *name, PyObject *path, char *buf,
-            size_t buflen, FILE **p_fp, PyObject **p_loader)
-{
-    return find_module((char *) name, (char *) name, path,
-                       buf, buflen, p_fp, p_loader);
-}
-
-PyAPI_FUNC(int) _PyImport_IsScript(struct filedescr * fd)
-{
-    return fd->type == PY_SOURCE || fd->type == PY_COMPILED;
-}
-
-/* case_ok(char* buf, Py_ssize_t len, Py_ssize_t namelen, char* name)
- * The arguments here are tricky, best shown by example:
- *    /a/b/c/d/e/f/g/h/i/j/k/some_long_module_name.py\0
- *    ^                      ^                   ^    ^
- *    |--------------------- buf ---------------------|
- *    |------------------- len ------------------|
- *                           |------ name -------|
- *                           |----- namelen -----|
- * buf is the full path, but len only counts up to (& exclusive of) the
- * extension.  name is the module name, also exclusive of extension.
- *
- * We've already done a successful stat() or fopen() on buf, so know that
- * there's some match, possibly case-insensitive.
- *
- * case_ok() is to return 1 if there's a case-sensitive match for
- * name, else 0.  case_ok() is also to return 1 if envar PYTHONCASEOK
- * exists.
- *
- * case_ok() is used to implement case-sensitive import semantics even
- * on platforms with case-insensitive filesystems.  It's trivial to implement
- * for case-sensitive filesystems.  It's pretty much a cross-platform
- * nightmare for systems with case-insensitive filesystems.
- */
-
-/* First we may need a pile of platform-specific header files; the sequence
- * of #if's here should match the sequence in the body of case_ok().
- */
-#if defined(MS_WINDOWS)
-#include <windows.h>
-
-#elif defined(DJGPP)
-#include <dir.h>
-
-#elif (defined(__MACH__) && defined(__APPLE__) || defined(__CYGWIN__)) && defined(HAVE_DIRENT_H)
-#include <sys/types.h>
-#include <dirent.h>
-
-#elif defined(PYOS_OS2)
-#define INCL_DOS
-#define INCL_DOSERRORS
-#define INCL_NOPMAPI
-#include <os2.h>
-
-#elif defined(RISCOS)
-#include "oslib/osfscontrol.h"
-#endif
-
-static int
-case_ok(char *buf, Py_ssize_t len, Py_ssize_t namelen, char *name)
-{
-/* Pick a platform-specific implementation; the sequence of #if's here should
- * match the sequence just above.
- */
-
-/* MS_WINDOWS */
-#if defined(MS_WINDOWS)
-    WIN32_FIND_DATA data;
-    HANDLE h;
-
-    if (Py_GETENV("PYTHONCASEOK") != NULL)
-        return 1;
-
-    h = FindFirstFile(buf, &data);
-    if (h == INVALID_HANDLE_VALUE) {
-        PyErr_Format(PyExc_NameError,
-          "Can't find file for module %.100s\n(filename %.300s)",
-          name, buf);
-        return 0;
-    }
-    FindClose(h);
-    return strncmp(data.cFileName, name, namelen) == 0;
-
-/* DJGPP */
-#elif defined(DJGPP)
-    struct ffblk ffblk;
-    int done;
-
-    if (Py_GETENV("PYTHONCASEOK") != NULL)
-        return 1;
-
-    done = findfirst(buf, &ffblk, FA_ARCH|FA_RDONLY|FA_HIDDEN|FA_DIREC);
-    if (done) {
-        PyErr_Format(PyExc_NameError,
-          "Can't find file for module %.100s\n(filename %.300s)",
-          name, buf);
-        return 0;
-    }
-    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)
-    DIR *dirp;
-    struct dirent *dp;
-    char dirname[MAXPATHLEN + 1];
-    const int dirlen = len - namelen - 1; /* don't want trailing SEP */
-
-    if (Py_GETENV("PYTHONCASEOK") != NULL)
-        return 1;
-
-    /* Copy the dir component into dirname; substitute "." if empty */
-    if (dirlen <= 0) {
-        dirname[0] = '.';
-        dirname[1] = '\0';
-    }
-    else {
-        assert(dirlen <= MAXPATHLEN);
-        memcpy(dirname, buf, dirlen);
-        dirname[dirlen] = '\0';
-    }
-    /* Open the directory and search the entries for an exact match. */
-    dirp = opendir(dirname);
-    if (dirp) {
-        char *nameWithExt = buf + len - namelen;
-        while ((dp = readdir(dirp)) != NULL) {
-            const int thislen =
-#ifdef _DIRENT_HAVE_D_NAMELEN
-                                    dp->d_namlen;
-#else
-                                    strlen(dp->d_name);
-#endif
-            if (thislen >= namelen &&
-                strcmp(dp->d_name, nameWithExt) == 0) {
-                (void)closedir(dirp);
-                return 1; /* Found */
-            }
-        }
-        (void)closedir(dirp);
-    }
-    return 0 ; /* Not found */
-
-/* RISC OS */
-#elif defined(RISCOS)
-    char canon[MAXPATHLEN+1]; /* buffer for the canonical form of the path */
-    char buf2[MAXPATHLEN+2];
-    char *nameWithExt = buf+len-namelen;
-    int canonlen;
-    os_error *e;
-
-    if (Py_GETENV("PYTHONCASEOK") != NULL)
-        return 1;
-
-    /* workaround:
-       append wildcard, otherwise case of filename wouldn't be touched */
-    strcpy(buf2, buf);
-    strcat(buf2, "*");
-
-    e = xosfscontrol_canonicalise_path(buf2,canon,0,0,MAXPATHLEN+1,&canonlen);
-    canonlen = MAXPATHLEN+1-canonlen;
-    if (e || canonlen<=0 || canonlen>(MAXPATHLEN+1) )
-        return 0;
-    if (strcmp(nameWithExt, canon+canonlen-strlen(nameWithExt))==0)
-        return 1; /* match */
-
-    return 0;
-
-/* OS/2 */
-#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;
-
-#endif
-}
-
-
-#ifdef HAVE_STAT
-/* Helper to look for __init__.py or __init__.py[co] in potential package */
-static int
-find_init_module(char *buf)
-{
-    const size_t save_len = strlen(buf);
-    size_t i = save_len;
-    char *pname;  /* pointer to start of __init__ */
-    struct stat statbuf;
-
-/*      For calling case_ok(buf, len, namelen, name):
- *      /a/b/c/d/e/f/g/h/i/j/k/some_long_module_name.py\0
- *      ^                      ^                   ^    ^
- *      |--------------------- buf ---------------------|
- *      |------------------- len ------------------|
- *                             |------ name -------|
- *                             |----- namelen -----|
- */
-    if (save_len + 13 >= MAXPATHLEN)
-        return 0;
-    buf[i++] = SEP;
-    pname = buf + i;
-    strcpy(pname, "__init__.py");
-    if (stat(buf, &statbuf) == 0) {
-        if (case_ok(buf,
-                    save_len + 9,               /* len("/__init__") */
-                8,                              /* len("__init__") */
-                pname)) {
-            buf[save_len] = '\0';
-            return 1;
-        }
-    }
-    i += strlen(pname);
-    strcpy(buf+i, Py_OptimizeFlag ? "o" : "c");
-    if (stat(buf, &statbuf) == 0) {
-        if (case_ok(buf,
-                    save_len + 9,               /* len("/__init__") */
-                8,                              /* len("__init__") */
-                pname)) {
-            buf[save_len] = '\0';
-            return 1;
-        }
-    }
-    buf[save_len] = '\0';
-    return 0;
-}
-
-#else
-
-#ifdef RISCOS
-static int
-find_init_module(buf)
-    char *buf;
-{
-    int save_len = strlen(buf);
-    int i = save_len;
-
-    if (save_len + 13 >= MAXPATHLEN)
-        return 0;
-    buf[i++] = SEP;
-    strcpy(buf+i, "__init__/py");
-    if (isfile(buf)) {
-        buf[save_len] = '\0';
-        return 1;
-    }
-
-    if (Py_OptimizeFlag)
-        strcpy(buf+i, "o");
-    else
-        strcpy(buf+i, "c");
-    if (isfile(buf)) {
-        buf[save_len] = '\0';
-        return 1;
-    }
-    buf[save_len] = '\0';
-    return 0;
-}
-#endif /*RISCOS*/
-
-#endif /* HAVE_STAT */
-
-
-static int init_builtin(char *); /* Forward */
-
-/* Load an external module using the default search path and return
-   its module object WITH INCREMENTED REFERENCE COUNT */
-
-static PyObject *
-load_module(char *name, FILE *fp, char *pathname, int type, PyObject *loader)
-{
-    PyObject *modules;
-    PyObject *m;
-    int err;
-
-    /* First check that there's an open file (if we need one)  */
-    switch (type) {
-    case PY_SOURCE:
-    case PY_COMPILED:
-        if (fp == NULL) {
-            PyErr_Format(PyExc_ValueError,
-               "file object required for import (type code %d)",
-                         type);
-            return NULL;
-        }
-    }
-
-    switch (type) {
-
-    case PY_SOURCE:
-        m = load_source_module(name, pathname, fp);
-        break;
-
-    case PY_COMPILED:
-        m = load_compiled_module(name, pathname, fp);
-        break;
-
-#ifdef HAVE_DYNAMIC_LOADING
-    case C_EXTENSION:
-        m = _PyImport_LoadDynamicModule(name, pathname, fp);
-        break;
-#endif
-
-    case PKG_DIRECTORY:
-        m = load_package(name, pathname);
-        break;
-
-    case C_BUILTIN:
-    case PY_FROZEN:
-        if (pathname != NULL && pathname[0] != '\0')
-            name = pathname;
-        if (type == C_BUILTIN)
-            err = init_builtin(name);
-        else
-            err = PyImport_ImportFrozenModule(name);
-        if (err < 0)
-            return NULL;
-        if (err == 0) {
-            PyErr_Format(PyExc_ImportError,
-                         "Purported %s module %.200s not found",
-                         type == C_BUILTIN ?
-                                    "builtin" : "frozen",
-                         name);
-            return NULL;
-        }
-        modules = PyImport_GetModuleDict();
-        m = PyDict_GetItemString(modules, name);
-        if (m == NULL) {
-            PyErr_Format(
-                PyExc_ImportError,
-                "%s module %.200s not properly initialized",
-                type == C_BUILTIN ?
-                    "builtin" : "frozen",
-                name);
-            return NULL;
-        }
-        Py_INCREF(m);
-        break;
-
-    case IMP_HOOK: {
-        if (loader == NULL) {
-            PyErr_SetString(PyExc_ImportError,
-                            "import hook without loader");
-            return NULL;
-        }
-        m = PyObject_CallMethod(loader, "load_module", "s", name);
-        break;
-    }
-
-    default:
-        PyErr_Format(PyExc_ImportError,
-                     "Don't know how to import %.200s (type code %d)",
-                      name, type);
-        m = NULL;
-
-    }
-
-    return m;
-}
-
-
-/* Initialize a built-in module.
-   Return 1 for success, 0 if the module is not found, and -1 with
-   an exception set if the initialization failed. */
-
-static int
-init_builtin(char *name)
-{
-    struct _inittab *p;
-
-    if (_PyImport_FindExtension(name, name) != NULL)
-        return 1;
-
-    for (p = PyImport_Inittab; p->name != NULL; p++) {
-        if (strcmp(name, p->name) == 0) {
-            if (p->initfunc == NULL) {
-                PyErr_Format(PyExc_ImportError,
-                    "Cannot re-init internal module %.200s",
-                    name);
-                return -1;
-            }
-            if (Py_VerboseFlag)
-                PySys_WriteStderr("import %s # builtin\n", name);
-            (*p->initfunc)();
-            if (PyErr_Occurred())
-                return -1;
-            if (_PyImport_FixupExtension(name, name) == NULL)
-                return -1;
-            return 1;
-        }
-    }
-    return 0;
-}
-
-
-/* Frozen modules */
-
-static struct _frozen *
-find_frozen(char *name)
-{
-    struct _frozen *p;
-
-    for (p = PyImport_FrozenModules; ; p++) {
-        if (p->name == NULL)
-            return NULL;
-        if (strcmp(p->name, name) == 0)
-            break;
-    }
-    return p;
-}
-
-static PyObject *
-get_frozen_object(char *name)
-{
-    struct _frozen *p = find_frozen(name);
-    int size;
-
-    if (p == NULL) {
-        PyErr_Format(PyExc_ImportError,
-                     "No such frozen object named %.200s",
-                     name);
-        return NULL;
-    }
-    if (p->code == NULL) {
-        PyErr_Format(PyExc_ImportError,
-                     "Excluded frozen object named %.200s",
-                     name);
-        return NULL;
-    }
-    size = p->size;
-    if (size < 0)
-        size = -size;
-    return PyMarshal_ReadObjectFromString((char *)p->code, size);
-}
-
-/* Initialize a frozen module.
-   Return 1 for succes, 0 if the module is not found, and -1 with
-   an exception set if the initialization failed.
-   This function is also used from frozenmain.c */
-
-int
-PyImport_ImportFrozenModule(char *name)
-{
-    struct _frozen *p = find_frozen(name);
-    PyObject *co;
-    PyObject *m;
-    int ispackage;
-    int size;
-
-    if (p == NULL)
-        return 0;
-    if (p->code == NULL) {
-        PyErr_Format(PyExc_ImportError,
-                     "Excluded frozen object named %.200s",
-                     name);
-        return -1;
-    }
-    size = p->size;
-    ispackage = (size < 0);
-    if (ispackage)
-        size = -size;
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("import %s # frozen%s\n",
-            name, ispackage ? " package" : "");
-    co = PyMarshal_ReadObjectFromString((char *)p->code, size);
-    if (co == NULL)
-        return -1;
-    if (!PyCode_Check(co)) {
-        PyErr_Format(PyExc_TypeError,
-                     "frozen object %.200s is not a code object",
-                     name);
-        goto err_return;
-    }
-    if (ispackage) {
-        /* Set __path__ to the package name */
-        PyObject *d, *s;
-        int err;
-        m = PyImport_AddModule(name);
-        if (m == NULL)
-            goto err_return;
-        d = PyModule_GetDict(m);
-        s = PyString_InternFromString(name);
-        if (s == NULL)
-            goto err_return;
-        err = PyDict_SetItemString(d, "__path__", s);
-        Py_DECREF(s);
-        if (err != 0)
-            goto err_return;
-    }
-    m = PyImport_ExecCodeModuleEx(name, co, "<frozen>");
-    if (m == NULL)
-        goto err_return;
-    Py_DECREF(co);
-    Py_DECREF(m);
-    return 1;
-err_return:
-    Py_DECREF(co);
-    return -1;
-}
-
-
-/* Import a module, either built-in, frozen, or external, and return
-   its module object WITH INCREMENTED REFERENCE COUNT */
-
-PyObject *
-PyImport_ImportModule(const char *name)
-{
-    PyObject *pname;
-    PyObject *result;
-
-    pname = PyString_FromString(name);
-    if (pname == NULL)
-        return NULL;
-    result = PyImport_Import(pname);
-    Py_DECREF(pname);
-    return result;
-}
-
-/* Import a module without blocking
- *
- * At first it tries to fetch the module from sys.modules. If the module was
- * never loaded before it loads it with PyImport_ImportModule() unless another
- * thread holds the import lock. In the latter case the function raises an
- * ImportError instead of blocking.
- *
- * Returns the module object with incremented ref count.
- */
-PyObject *
-PyImport_ImportModuleNoBlock(const char *name)
-{
-    PyObject *result;
-    PyObject *modules;
-#ifdef WITH_THREAD
-    long me;
-#endif
-
-    /* Try to get the module from sys.modules[name] */
-    modules = PyImport_GetModuleDict();
-    if (modules == NULL)
-        return NULL;
-
-    result = PyDict_GetItemString(modules, name);
-    if (result != NULL) {
-        Py_INCREF(result);
-        return result;
-    }
-    else {
-        PyErr_Clear();
-    }
-#ifdef WITH_THREAD
-    /* check the import lock
-     * me might be -1 but I ignore the error here, the lock function
-     * takes care of the problem */
-    me = PyThread_get_thread_ident();
-    if (import_lock_thread == -1 || import_lock_thread == me) {
-        /* no thread or me is holding the lock */
-        return PyImport_ImportModule(name);
-    }
-    else {
-        PyErr_Format(PyExc_ImportError,
-                     "Failed to import %.200s because the import lock"
-                     "is held by another thread.",
-                     name);
-        return NULL;
-    }
-#else
-    return PyImport_ImportModule(name);
-#endif
-}
-
-/* Forward declarations for helper routines */
-static PyObject *get_parent(PyObject *globals, char *buf,
-                            Py_ssize_t *p_buflen, int level);
-static PyObject *load_next(PyObject *mod, PyObject *altmod,
-                           char **p_name, char *buf, Py_ssize_t *p_buflen);
-static int mark_miss(char *name);
-static int ensure_fromlist(PyObject *mod, PyObject *fromlist,
-                           char *buf, Py_ssize_t buflen, int recursive);
-static PyObject * import_submodule(PyObject *mod, char *name, char *fullname);
-
-/* The Magnum Opus of dotted-name import :-) */
-
-static PyObject *
-import_module_level(char *name, PyObject *globals, PyObject *locals,
-                    PyObject *fromlist, int level)
-{
-    char buf[MAXPATHLEN+1];
-    Py_ssize_t buflen = 0;
-    PyObject *parent, *head, *next, *tail;
-
-    if (strchr(name, '/') != NULL
-#ifdef MS_WINDOWS
-        || strchr(name, '\\') != NULL
-#endif
-        ) {
-        PyErr_SetString(PyExc_ImportError,
-                        "Import by filename is not supported.");
-        return NULL;
-    }
-
-    parent = get_parent(globals, buf, &buflen, level);
-    if (parent == NULL)
-        return NULL;
-
-    head = load_next(parent, level < 0 ? Py_None : parent, &name, buf,
-                        &buflen);
-    if (head == NULL)
-        return NULL;
-
-    tail = head;
-    Py_INCREF(tail);
-    while (name) {
-        next = load_next(tail, tail, &name, buf, &buflen);
-        Py_DECREF(tail);
-        if (next == NULL) {
-            Py_DECREF(head);
-            return NULL;
-        }
-        tail = next;
-    }
-    if (tail == Py_None) {
-        /* If tail is Py_None, both get_parent and load_next found
-           an empty module name: someone called __import__("") or
-           doctored faulty bytecode */
-        Py_DECREF(tail);
-        Py_DECREF(head);
-        PyErr_SetString(PyExc_ValueError,
-                        "Empty module name");
-        return NULL;
-    }
-
-    if (fromlist != NULL) {
-        if (fromlist == Py_None || !PyObject_IsTrue(fromlist))
-            fromlist = NULL;
-    }
-
-    if (fromlist == NULL) {
-        Py_DECREF(tail);
-        return head;
-    }
-
-    Py_DECREF(head);
-    if (!ensure_fromlist(tail, fromlist, buf, buflen, 0)) {
-        Py_DECREF(tail);
-        return NULL;
-    }
-
-    return tail;
-}
-
-PyObject *
-PyImport_ImportModuleLevel(char *name, PyObject *globals, PyObject *locals,
-                         PyObject *fromlist, int level)
-{
-    PyObject *result;
-    _PyImport_AcquireLock();
-    result = import_module_level(name, globals, locals, fromlist, level);
-    if (_PyImport_ReleaseLock() < 0) {
-        Py_XDECREF(result);
-        PyErr_SetString(PyExc_RuntimeError,
-                        "not holding the import lock");
-        return NULL;
-    }
-    return result;
-}
-
-/* Return the package that an import is being performed in.  If globals comes
-   from the module foo.bar.bat (not itself a package), this returns the
-   sys.modules entry for foo.bar.  If globals is from a package's __init__.py,
-   the package's entry in sys.modules is returned, as a borrowed reference.
-
-   The *name* of the returned package is returned in buf, with the length of
-   the name in *p_buflen.
-
-   If globals doesn't come from a package or a module in a package, or a
-   corresponding entry is not found in sys.modules, Py_None is returned.
-*/
-static PyObject *
-get_parent(PyObject *globals, char *buf, Py_ssize_t *p_buflen, int level)
-{
-    static PyObject *namestr = NULL;
-    static PyObject *pathstr = NULL;
-    static PyObject *pkgstr = NULL;
-    PyObject *pkgname, *modname, *modpath, *modules, *parent;
-    int orig_level = level;
-
-    if (globals == NULL || !PyDict_Check(globals) || !level)
-        return Py_None;
-
-    if (namestr == NULL) {
-        namestr = PyString_InternFromString("__name__");
-        if (namestr == NULL)
-            return NULL;
-    }
-    if (pathstr == NULL) {
-        pathstr = PyString_InternFromString("__path__");
-        if (pathstr == NULL)
-            return NULL;
-    }
-    if (pkgstr == NULL) {
-        pkgstr = PyString_InternFromString("__package__");
-        if (pkgstr == NULL)
-            return NULL;
-    }
-
-    *buf = '\0';
-    *p_buflen = 0;
-    pkgname = PyDict_GetItem(globals, pkgstr);
-
-    if ((pkgname != NULL) && (pkgname != Py_None)) {
-        /* __package__ is set, so use it */
-        Py_ssize_t len;
-        if (!PyString_Check(pkgname)) {
-            PyErr_SetString(PyExc_ValueError,
-                            "__package__ set to non-string");
-            return NULL;
-        }
-        len = PyString_GET_SIZE(pkgname);
-        if (len == 0) {
-            if (level > 0) {
-                PyErr_SetString(PyExc_ValueError,
-                    "Attempted relative import in non-package");
-                return NULL;
-            }
-            return Py_None;
-        }
-        if (len > MAXPATHLEN) {
-            PyErr_SetString(PyExc_ValueError,
-                            "Package name too long");
-            return NULL;
-        }
-        strcpy(buf, PyString_AS_STRING(pkgname));
-    } else {
-        /* __package__ not set, so figure it out and set it */
-        modname = PyDict_GetItem(globals, namestr);
-        if (modname == NULL || !PyString_Check(modname))
-            return Py_None;
-
-        modpath = PyDict_GetItem(globals, pathstr);
-        if (modpath != NULL) {
-            /* __path__ is set, so modname is already the package name */
-            Py_ssize_t len = PyString_GET_SIZE(modname);
-            int error;
-            if (len > MAXPATHLEN) {
-                PyErr_SetString(PyExc_ValueError,
-                                "Module name too long");
-                return NULL;
-            }
-            strcpy(buf, PyString_AS_STRING(modname));
-            error = PyDict_SetItem(globals, pkgstr, modname);
-            if (error) {
-                PyErr_SetString(PyExc_ValueError,
-                                "Could not set __package__");
-                return NULL;
-            }
-        } else {
-            /* Normal module, so work out the package name if any */
-            char *start = PyString_AS_STRING(modname);
-            char *lastdot = strrchr(start, '.');
-            size_t len;
-            int error;
-            if (lastdot == NULL && level > 0) {
-                PyErr_SetString(PyExc_ValueError,
-                    "Attempted relative import in non-package");
-                return NULL;
-            }
-            if (lastdot == NULL) {
-                error = PyDict_SetItem(globals, pkgstr, Py_None);
-                if (error) {
-                    PyErr_SetString(PyExc_ValueError,
-                        "Could not set __package__");
-                    return NULL;
-                }
-                return Py_None;
-            }
-            len = lastdot - start;
-            if (len >= MAXPATHLEN) {
-                PyErr_SetString(PyExc_ValueError,
-                                "Module name too long");
-                return NULL;
-            }
-            strncpy(buf, start, len);
-            buf[len] = '\0';
-            pkgname = PyString_FromString(buf);
-            if (pkgname == NULL) {
-                return NULL;
-            }
-            error = PyDict_SetItem(globals, pkgstr, pkgname);
-            Py_DECREF(pkgname);
-            if (error) {
-                PyErr_SetString(PyExc_ValueError,
-                                "Could not set __package__");
-                return NULL;
-            }
-        }
-    }
-    while (--level > 0) {
-        char *dot = strrchr(buf, '.');
-        if (dot == NULL) {
-            PyErr_SetString(PyExc_ValueError,
-                "Attempted relative import beyond "
-                "toplevel package");
-            return NULL;
-        }
-        *dot = '\0';
-    }
-    *p_buflen = strlen(buf);
-
-    modules = PyImport_GetModuleDict();
-    parent = PyDict_GetItemString(modules, buf);
-    if (parent == NULL) {
-        if (orig_level < 1) {
-            PyObject *err_msg = PyString_FromFormat(
-                "Parent module '%.200s' not found "
-                "while handling absolute import", buf);
-            if (err_msg == NULL) {
-                return NULL;
-            }
-            if (!PyErr_WarnEx(PyExc_RuntimeWarning,
-                            PyString_AsString(err_msg), 1)) {
-                *buf = '\0';
-                *p_buflen = 0;
-                parent = Py_None;
-            }
-            Py_DECREF(err_msg);
-        } else {
-            PyErr_Format(PyExc_SystemError,
-                "Parent module '%.200s' not loaded, "
-                "cannot perform relative import", buf);
-        }
-    }
-    return parent;
-    /* We expect, but can't guarantee, if parent != None, that:
-       - parent.__name__ == buf
-       - parent.__dict__ is globals
-       If this is violated...  Who cares? */
-}
-
-/* altmod is either None or same as mod */
-static PyObject *
-load_next(PyObject *mod, PyObject *altmod, char **p_name, char *buf,
-          Py_ssize_t *p_buflen)
-{
-    char *name = *p_name;
-    char *dot = strchr(name, '.');
-    size_t len;
-    char *p;
-    PyObject *result;
-
-    if (strlen(name) == 0) {
-        /* completely empty module name should only happen in
-           'from . import' (or '__import__("")')*/
-        Py_INCREF(mod);
-        *p_name = NULL;
-        return mod;
-    }
-
-    if (dot == NULL) {
-        *p_name = NULL;
-        len = strlen(name);
-    }
-    else {
-        *p_name = dot+1;
-        len = dot-name;
-    }
-    if (len == 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "Empty module name");
-        return NULL;
-    }
-
-    p = buf + *p_buflen;
-    if (p != buf)
-        *p++ = '.';
-    if (p+len-buf >= MAXPATHLEN) {
-        PyErr_SetString(PyExc_ValueError,
-                        "Module name too long");
-        return NULL;
-    }
-    strncpy(p, name, len);
-    p[len] = '\0';
-    *p_buflen = p+len-buf;
-
-    result = import_submodule(mod, p, buf);
-    if (result == Py_None && altmod != mod) {
-        Py_DECREF(result);
-        /* Here, altmod must be None and mod must not be None */
-        result = import_submodule(altmod, p, p);
-        if (result != NULL && result != Py_None) {
-            if (mark_miss(buf) != 0) {
-                Py_DECREF(result);
-                return NULL;
-            }
-            strncpy(buf, name, len);
-            buf[len] = '\0';
-            *p_buflen = len;
-        }
-    }
-    if (result == NULL)
-        return NULL;
-
-    if (result == Py_None) {
-        Py_DECREF(result);
-        PyErr_Format(PyExc_ImportError,
-                     "No module named %.200s", name);
-        return NULL;
-    }
-
-    return result;
-}
-
-static int
-mark_miss(char *name)
-{
-    PyObject *modules = PyImport_GetModuleDict();
-    return PyDict_SetItemString(modules, name, Py_None);
-}
-
-static int
-ensure_fromlist(PyObject *mod, PyObject *fromlist, char *buf, Py_ssize_t buflen,
-                int recursive)
-{
-    int i;
-
-    if (!PyObject_HasAttrString(mod, "__path__"))
-        return 1;
-
-    for (i = 0; ; i++) {
-        PyObject *item = PySequence_GetItem(fromlist, i);
-        int hasit;
-        if (item == NULL) {
-            if (PyErr_ExceptionMatches(PyExc_IndexError)) {
-                PyErr_Clear();
-                return 1;
-            }
-            return 0;
-        }
-        if (!PyString_Check(item)) {
-            PyErr_SetString(PyExc_TypeError,
-                            "Item in ``from list'' not a string");
-            Py_DECREF(item);
-            return 0;
-        }
-        if (PyString_AS_STRING(item)[0] == '*') {
-            PyObject *all;
-            Py_DECREF(item);
-            /* See if the package defines __all__ */
-            if (recursive)
-                continue; /* Avoid endless recursion */
-            all = PyObject_GetAttrString(mod, "__all__");
-            if (all == NULL)
-                PyErr_Clear();
-            else {
-                int ret = ensure_fromlist(mod, all, buf, buflen, 1);
-                Py_DECREF(all);
-                if (!ret)
-                    return 0;
-            }
-            continue;
-        }
-        hasit = PyObject_HasAttr(mod, item);
-        if (!hasit) {
-            char *subname = PyString_AS_STRING(item);
-            PyObject *submod;
-            char *p;
-            if (buflen + strlen(subname) >= MAXPATHLEN) {
-                PyErr_SetString(PyExc_ValueError,
-                                "Module name too long");
-                Py_DECREF(item);
-                return 0;
-            }
-            p = buf + buflen;
-            *p++ = '.';
-            strcpy(p, subname);
-            submod = import_submodule(mod, subname, buf);
-            Py_XDECREF(submod);
-            if (submod == NULL) {
-                Py_DECREF(item);
-                return 0;
-            }
-        }
-        Py_DECREF(item);
-    }
-
-    /* NOTREACHED */
-}
-
-static int
-add_submodule(PyObject *mod, PyObject *submod, char *fullname, char *subname,
-              PyObject *modules)
-{
-    if (mod == Py_None)
-        return 1;
-    /* Irrespective of the success of this load, make a
-       reference to it in the parent package module.  A copy gets
-       saved in the modules dictionary under the full name, so get a
-       reference from there, if need be.  (The exception is when the
-       load failed with a SyntaxError -- then there's no trace in
-       sys.modules.  In that case, of course, do nothing extra.) */
-    if (submod == NULL) {
-        submod = PyDict_GetItemString(modules, fullname);
-        if (submod == NULL)
-            return 1;
-    }
-    if (PyModule_Check(mod)) {
-        /* We can't use setattr here since it can give a
-         * spurious warning if the submodule name shadows a
-         * builtin name */
-        PyObject *dict = PyModule_GetDict(mod);
-        if (!dict)
-            return 0;
-        if (PyDict_SetItemString(dict, subname, submod) < 0)
-            return 0;
-    }
-    else {
-        if (PyObject_SetAttrString(mod, subname, submod) < 0)
-            return 0;
-    }
-    return 1;
-}
-
-static PyObject *
-import_submodule(PyObject *mod, char *subname, char *fullname)
-{
-    PyObject *modules = PyImport_GetModuleDict();
-    PyObject *m = NULL;
-
-    /* Require:
-       if mod == None: subname == fullname
-       else: mod.__name__ + "." + subname == fullname
-    */
-
-    if ((m = PyDict_GetItemString(modules, fullname)) != NULL) {
-        Py_INCREF(m);
-    }
-    else {
-        PyObject *path, *loader = NULL;
-        char buf[MAXPATHLEN+1];
-        struct filedescr *fdp;
-        FILE *fp = NULL;
-
-        if (mod == Py_None)
-            path = NULL;
-        else {
-            path = PyObject_GetAttrString(mod, "__path__");
-            if (path == NULL) {
-                PyErr_Clear();
-                Py_INCREF(Py_None);
-                return Py_None;
-            }
-        }
-
-        buf[0] = '\0';
-        fdp = find_module(fullname, subname, path, buf, MAXPATHLEN+1,
-                          &fp, &loader);
-        Py_XDECREF(path);
-        if (fdp == NULL) {
-            if (!PyErr_ExceptionMatches(PyExc_ImportError))
-                return NULL;
-            PyErr_Clear();
-            Py_INCREF(Py_None);
-            return Py_None;
-        }
-        m = load_module(fullname, fp, buf, fdp->type, loader);
-        Py_XDECREF(loader);
-        if (fp)
-            fclose(fp);
-        if (!add_submodule(mod, m, fullname, subname, modules)) {
-            Py_XDECREF(m);
-            m = NULL;
-        }
-    }
-
-    return m;
-}
-
-
-/* Re-import a module of any kind and return its module object, WITH
-   INCREMENTED REFERENCE COUNT */
-
-PyObject *
-PyImport_ReloadModule(PyObject *m)
-{
-    PyInterpreterState *interp = PyThreadState_Get()->interp;
-    PyObject *modules_reloading = interp->modules_reloading;
-    PyObject *modules = PyImport_GetModuleDict();
-    PyObject *path = NULL, *loader = NULL, *existing_m = NULL;
-    char *name, *subname;
-    char buf[MAXPATHLEN+1];
-    struct filedescr *fdp;
-    FILE *fp = NULL;
-    PyObject *newm;
-
-    if (modules_reloading == NULL) {
-        Py_FatalError("PyImport_ReloadModule: "
-                      "no modules_reloading dictionary!");
-        return NULL;
-    }
-
-    if (m == NULL || !PyModule_Check(m)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "reload() argument must be module");
-        return NULL;
-    }
-    name = PyModule_GetName(m);
-    if (name == NULL)
-        return NULL;
-    if (m != PyDict_GetItemString(modules, name)) {
-        PyErr_Format(PyExc_ImportError,
-                     "reload(): module %.200s not in sys.modules",
-                     name);
-        return NULL;
-    }
-    existing_m = PyDict_GetItemString(modules_reloading, name);
-    if (existing_m != NULL) {
-        /* Due to a recursive reload, this module is already
-           being reloaded. */
-        Py_INCREF(existing_m);
-        return existing_m;
-    }
-    if (PyDict_SetItemString(modules_reloading, name, m) < 0)
-        return NULL;
-
-    subname = strrchr(name, '.');
-    if (subname == NULL)
-        subname = name;
-    else {
-        PyObject *parentname, *parent;
-        parentname = PyString_FromStringAndSize(name, (subname-name));
-        if (parentname == NULL) {
-            imp_modules_reloading_clear();
-            return NULL;
-        }
-        parent = PyDict_GetItem(modules, parentname);
-        if (parent == NULL) {
-            PyErr_Format(PyExc_ImportError,
-                "reload(): parent %.200s not in sys.modules",
-                PyString_AS_STRING(parentname));
-            Py_DECREF(parentname);
-            imp_modules_reloading_clear();
-            return NULL;
-        }
-        Py_DECREF(parentname);
-        subname++;
-        path = PyObject_GetAttrString(parent, "__path__");
-        if (path == NULL)
-            PyErr_Clear();
-    }
-    buf[0] = '\0';
-    fdp = find_module(name, subname, path, buf, MAXPATHLEN+1, &fp, &loader);
-    Py_XDECREF(path);
-
-    if (fdp == NULL) {
-        Py_XDECREF(loader);
-        imp_modules_reloading_clear();
-        return NULL;
-    }
-
-    newm = load_module(name, fp, buf, fdp->type, loader);
-    Py_XDECREF(loader);
-
-    if (fp)
-        fclose(fp);
-    if (newm == NULL) {
-        /* load_module probably removed name from modules because of
-         * the error.  Put back the original module object.  We're
-         * going to return NULL in this case regardless of whether
-         * replacing name succeeds, so the return value is ignored.
-         */
-        PyDict_SetItemString(modules, name, m);
-    }
-    imp_modules_reloading_clear();
-    return newm;
-}
-
-
-/* Higher-level import emulator which emulates the "import" statement
-   more accurately -- it invokes the __import__() function from the
-   builtins of the current globals.  This means that the import is
-   done using whatever import hooks are installed in the current
-   environment, e.g. by "rexec".
-   A dummy list ["__doc__"] is passed as the 4th argument so that
-   e.g. PyImport_Import(PyString_FromString("win32com.client.gencache"))
-   will return <module "gencache"> instead of <module "win32com">. */
-
-PyObject *
-PyImport_Import(PyObject *module_name)
-{
-    static PyObject *silly_list = NULL;
-    static PyObject *builtins_str = NULL;
-    static PyObject *import_str = NULL;
-    PyObject *globals = NULL;
-    PyObject *import = NULL;
-    PyObject *builtins = NULL;
-    PyObject *r = NULL;
-
-    /* Initialize constant string objects */
-    if (silly_list == NULL) {
-        import_str = PyString_InternFromString("__import__");
-        if (import_str == NULL)
-            return NULL;
-        builtins_str = PyString_InternFromString("__builtins__");
-        if (builtins_str == NULL)
-            return NULL;
-        silly_list = Py_BuildValue("[s]", "__doc__");
-        if (silly_list == NULL)
-            return NULL;
-    }
-
-    /* Get the builtins from current globals */
-    globals = PyEval_GetGlobals();
-    if (globals != NULL) {
-        Py_INCREF(globals);
-        builtins = PyObject_GetItem(globals, builtins_str);
-        if (builtins == NULL)
-            goto err;
-    }
-    else {
-        /* No globals -- use standard builtins, and fake globals */
-        builtins = PyImport_ImportModuleLevel("__builtin__",
-                                              NULL, NULL, NULL, 0);
-        if (builtins == NULL)
-            return NULL;
-        globals = Py_BuildValue("{OO}", builtins_str, builtins);
-        if (globals == NULL)
-            goto err;
-    }
-
-    /* Get the __import__ function from the builtins */
-    if (PyDict_Check(builtins)) {
-        import = PyObject_GetItem(builtins, import_str);
-        if (import == NULL)
-            PyErr_SetObject(PyExc_KeyError, import_str);
-    }
-    else
-        import = PyObject_GetAttr(builtins, import_str);
-    if (import == NULL)
-        goto err;
-
-    /* Call the __import__ function with the proper argument list
-     * Always use absolute import here. */
-    r = PyObject_CallFunction(import, "OOOOi", module_name, globals,
-                              globals, silly_list, 0, NULL);
-
-  err:
-    Py_XDECREF(globals);
-    Py_XDECREF(builtins);
-    Py_XDECREF(import);
-
-    return r;
-}
-
-
-/* Module 'imp' provides Python access to the primitives used for
-   importing modules.
-*/
-
-static PyObject *
-imp_get_magic(PyObject *self, PyObject *noargs)
-{
-    char buf[4];
-
-    buf[0] = (char) ((pyc_magic >>  0) & 0xff);
-    buf[1] = (char) ((pyc_magic >>  8) & 0xff);
-    buf[2] = (char) ((pyc_magic >> 16) & 0xff);
-    buf[3] = (char) ((pyc_magic >> 24) & 0xff);
-
-    return PyString_FromStringAndSize(buf, 4);
-}
-
-static PyObject *
-imp_get_suffixes(PyObject *self, PyObject *noargs)
-{
-    PyObject *list;
-    struct filedescr *fdp;
-
-    list = PyList_New(0);
-    if (list == NULL)
-        return NULL;
-    for (fdp = _PyImport_Filetab; fdp->suffix != NULL; fdp++) {
-        PyObject *item = Py_BuildValue("ssi",
-                               fdp->suffix, fdp->mode, fdp->type);
-        if (item == NULL) {
-            Py_DECREF(list);
-            return NULL;
-        }
-        if (PyList_Append(list, item) < 0) {
-            Py_DECREF(list);
-            Py_DECREF(item);
-            return NULL;
-        }
-        Py_DECREF(item);
-    }
-    return list;
-}
-
-static PyObject *
-call_find_module(char *name, PyObject *path)
-{
-    extern int fclose(FILE *);
-    PyObject *fob, *ret;
-    struct filedescr *fdp;
-    char pathname[MAXPATHLEN+1];
-    FILE *fp = NULL;
-
-    pathname[0] = '\0';
-    if (path == Py_None)
-        path = NULL;
-    fdp = find_module(NULL, name, path, pathname, MAXPATHLEN+1, &fp, NULL);
-    if (fdp == NULL)
-        return NULL;
-    if (fp != NULL) {
-        fob = PyFile_FromFile(fp, pathname, fdp->mode, fclose);
-        if (fob == NULL) {
-            fclose(fp);
-            return NULL;
-        }
-    }
-    else {
-        fob = Py_None;
-        Py_INCREF(fob);
-    }
-    ret = Py_BuildValue("Os(ssi)",
-                  fob, pathname, fdp->suffix, fdp->mode, fdp->type);
-    Py_DECREF(fob);
-    return ret;
-}
-
-static PyObject *
-imp_find_module(PyObject *self, PyObject *args)
-{
-    char *name;
-    PyObject *path = NULL;
-    if (!PyArg_ParseTuple(args, "s|O:find_module", &name, &path))
-        return NULL;
-    return call_find_module(name, path);
-}
-
-static PyObject *
-imp_init_builtin(PyObject *self, PyObject *args)
-{
-    char *name;
-    int ret;
-    PyObject *m;
-    if (!PyArg_ParseTuple(args, "s:init_builtin", &name))
-        return NULL;
-    ret = init_builtin(name);
-    if (ret < 0)
-        return NULL;
-    if (ret == 0) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    m = PyImport_AddModule(name);
-    Py_XINCREF(m);
-    return m;
-}
-
-static PyObject *
-imp_init_frozen(PyObject *self, PyObject *args)
-{
-    char *name;
-    int ret;
-    PyObject *m;
-    if (!PyArg_ParseTuple(args, "s:init_frozen", &name))
-        return NULL;
-    ret = PyImport_ImportFrozenModule(name);
-    if (ret < 0)
-        return NULL;
-    if (ret == 0) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    m = PyImport_AddModule(name);
-    Py_XINCREF(m);
-    return m;
-}
-
-static PyObject *
-imp_get_frozen_object(PyObject *self, PyObject *args)
-{
-    char *name;
-
-    if (!PyArg_ParseTuple(args, "s:get_frozen_object", &name))
-        return NULL;
-    return get_frozen_object(name);
-}
-
-static PyObject *
-imp_is_builtin(PyObject *self, PyObject *args)
-{
-    char *name;
-    if (!PyArg_ParseTuple(args, "s:is_builtin", &name))
-        return NULL;
-    return PyInt_FromLong(is_builtin(name));
-}
-
-static PyObject *
-imp_is_frozen(PyObject *self, PyObject *args)
-{
-    char *name;
-    struct _frozen *p;
-    if (!PyArg_ParseTuple(args, "s:is_frozen", &name))
-        return NULL;
-    p = find_frozen(name);
-    return PyBool_FromLong((long) (p == NULL ? 0 : p->size));
-}
-
-static FILE *
-get_file(char *pathname, PyObject *fob, char *mode)
-{
-    FILE *fp;
-    if (fob == NULL) {
-        if (mode[0] == 'U')
-            mode = "r" PY_STDIOTEXTMODE;
-        fp = fopen(pathname, mode);
-        if (fp == NULL)
-            PyErr_SetFromErrno(PyExc_IOError);
-    }
-    else {
-        fp = PyFile_AsFile(fob);
-        if (fp == NULL)
-            PyErr_SetString(PyExc_ValueError,
-                            "bad/closed file object");
-    }
-    return fp;
-}
-
-static PyObject *
-imp_load_compiled(PyObject *self, PyObject *args)
-{
-    char *name;
-    char *pathname;
-    PyObject *fob = NULL;
-    PyObject *m;
-    FILE *fp;
-    if (!PyArg_ParseTuple(args, "ss|O!:load_compiled", &name, &pathname,
-                          &PyFile_Type, &fob))
-        return NULL;
-    fp = get_file(pathname, fob, "rb");
-    if (fp == NULL)
-        return NULL;
-    m = load_compiled_module(name, pathname, fp);
-    if (fob == NULL)
-        fclose(fp);
-    return m;
-}
-
-#ifdef HAVE_DYNAMIC_LOADING
-
-static PyObject *
-imp_load_dynamic(PyObject *self, PyObject *args)
-{
-    char *name;
-    char *pathname;
-    PyObject *fob = NULL;
-    PyObject *m;
-    FILE *fp = NULL;
-    if (!PyArg_ParseTuple(args, "ss|O!:load_dynamic", &name, &pathname,
-                          &PyFile_Type, &fob))
-        return NULL;
-    if (fob) {
-        fp = get_file(pathname, fob, "r");
-        if (fp == NULL)
-            return NULL;
-    }
-    m = _PyImport_LoadDynamicModule(name, pathname, fp);
-    return m;
-}
-
-#endif /* HAVE_DYNAMIC_LOADING */
-
-static PyObject *
-imp_load_source(PyObject *self, PyObject *args)
-{
-    char *name;
-    char *pathname;
-    PyObject *fob = NULL;
-    PyObject *m;
-    FILE *fp;
-    if (!PyArg_ParseTuple(args, "ss|O!:load_source", &name, &pathname,
-                          &PyFile_Type, &fob))
-        return NULL;
-    fp = get_file(pathname, fob, "r");
-    if (fp == NULL)
-        return NULL;
-    m = load_source_module(name, pathname, fp);
-    if (fob == NULL)
-        fclose(fp);
-    return m;
-}
-
-static PyObject *
-imp_load_module(PyObject *self, PyObject *args)
-{
-    char *name;
-    PyObject *fob;
-    char *pathname;
-    char *suffix; /* Unused */
-    char *mode;
-    int type;
-    FILE *fp;
-
-    if (!PyArg_ParseTuple(args, "sOs(ssi):load_module",
-                          &name, &fob, &pathname,
-                          &suffix, &mode, &type))
-        return NULL;
-    if (*mode) {
-        /* Mode must start with 'r' or 'U' and must not contain '+'.
-           Implicit in this test is the assumption that the mode
-           may contain other modifiers like 'b' or 't'. */
-
-        if (!(*mode == 'r' || *mode == 'U') || strchr(mode, '+')) {
-            PyErr_Format(PyExc_ValueError,
-                         "invalid file open mode %.200s", mode);
-            return NULL;
-        }
-    }
-    if (fob == Py_None)
-        fp = NULL;
-    else {
-        if (!PyFile_Check(fob)) {
-            PyErr_SetString(PyExc_ValueError,
-                "load_module arg#2 should be a file or None");
-            return NULL;
-        }
-        fp = get_file(pathname, fob, mode);
-        if (fp == NULL)
-            return NULL;
-    }
-    return load_module(name, fp, pathname, type, NULL);
-}
-
-static PyObject *
-imp_load_package(PyObject *self, PyObject *args)
-{
-    char *name;
-    char *pathname;
-    if (!PyArg_ParseTuple(args, "ss:load_package", &name, &pathname))
-        return NULL;
-    return load_package(name, pathname);
-}
-
-static PyObject *
-imp_new_module(PyObject *self, PyObject *args)
-{
-    char *name;
-    if (!PyArg_ParseTuple(args, "s:new_module", &name))
-        return NULL;
-    return PyModule_New(name);
-}
-
-static PyObject *
-imp_reload(PyObject *self, PyObject *v)
-{
-    return PyImport_ReloadModule(v);
-}
-
-
-/* Doc strings */
-
-PyDoc_STRVAR(doc_imp,
-"This module provides the components needed to build your own\n\
-__import__ function.  Undocumented functions are obsolete.");
-
-PyDoc_STRVAR(doc_reload,
-"reload(module) -> module\n\
-\n\
-Reload the module.  The module must have been successfully imported before.");
-
-PyDoc_STRVAR(doc_find_module,
-"find_module(name, [path]) -> (file, filename, (suffix, mode, type))\n\
-Search for a module.  If path is omitted or None, search for a\n\
-built-in, frozen or special module and continue search in sys.path.\n\
-The module name cannot contain '.'; to search for a submodule of a\n\
-package, pass the submodule name and the package's __path__.");
-
-PyDoc_STRVAR(doc_load_module,
-"load_module(name, file, filename, (suffix, mode, type)) -> module\n\
-Load a module, given information returned by find_module().\n\
-The module name must include the full package name, if any.");
-
-PyDoc_STRVAR(doc_get_magic,
-"get_magic() -> string\n\
-Return the magic number for .pyc or .pyo files.");
-
-PyDoc_STRVAR(doc_get_suffixes,
-"get_suffixes() -> [(suffix, mode, type), ...]\n\
-Return a list of (suffix, mode, type) tuples describing the files\n\
-that find_module() looks for.");
-
-PyDoc_STRVAR(doc_new_module,
-"new_module(name) -> module\n\
-Create a new module.  Do not enter it in sys.modules.\n\
-The module name must include the full package name, if any.");
-
-PyDoc_STRVAR(doc_lock_held,
-"lock_held() -> boolean\n\
-Return True if the import lock is currently held, else False.\n\
-On platforms without threads, return False.");
-
-PyDoc_STRVAR(doc_acquire_lock,
-"acquire_lock() -> None\n\
-Acquires the interpreter's import lock for the current thread.\n\
-This lock should be used by import hooks to ensure thread-safety\n\
-when importing modules.\n\
-On platforms without threads, this function does nothing.");
-
-PyDoc_STRVAR(doc_release_lock,
-"release_lock() -> None\n\
-Release the interpreter's import lock.\n\
-On platforms without threads, this function does nothing.");
-
-static PyMethodDef imp_methods[] = {
-    {"reload",           imp_reload,       METH_O,       doc_reload},
-    {"find_module",      imp_find_module,  METH_VARARGS, doc_find_module},
-    {"get_magic",        imp_get_magic,    METH_NOARGS,  doc_get_magic},
-    {"get_suffixes", imp_get_suffixes, METH_NOARGS,  doc_get_suffixes},
-    {"load_module",      imp_load_module,  METH_VARARGS, doc_load_module},
-    {"new_module",       imp_new_module,   METH_VARARGS, doc_new_module},
-    {"lock_held",        imp_lock_held,    METH_NOARGS,  doc_lock_held},
-    {"acquire_lock", imp_acquire_lock, METH_NOARGS,  doc_acquire_lock},
-    {"release_lock", imp_release_lock, METH_NOARGS,  doc_release_lock},
-    /* The rest are obsolete */
-    {"get_frozen_object",       imp_get_frozen_object,  METH_VARARGS},
-    {"init_builtin",            imp_init_builtin,       METH_VARARGS},
-    {"init_frozen",             imp_init_frozen,        METH_VARARGS},
-    {"is_builtin",              imp_is_builtin,         METH_VARARGS},
-    {"is_frozen",               imp_is_frozen,          METH_VARARGS},
-    {"load_compiled",           imp_load_compiled,      METH_VARARGS},
-#ifdef HAVE_DYNAMIC_LOADING
-    {"load_dynamic",            imp_load_dynamic,       METH_VARARGS},
-#endif
-    {"load_package",            imp_load_package,       METH_VARARGS},
-    {"load_source",             imp_load_source,        METH_VARARGS},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-static int
-setint(PyObject *d, char *name, int value)
-{
-    PyObject *v;
-    int err;
-
-    v = PyInt_FromLong((long)value);
-    err = PyDict_SetItemString(d, name, v);
-    Py_XDECREF(v);
-    return err;
-}
-
-typedef struct {
-    PyObject_HEAD
-} NullImporter;
-
-static int
-NullImporter_init(NullImporter *self, PyObject *args, PyObject *kwds)
-{
-    char *path;
-    Py_ssize_t pathlen;
-
-    if (!_PyArg_NoKeywords("NullImporter()", kwds))
-        return -1;
-
-    if (!PyArg_ParseTuple(args, "s:NullImporter",
-                          &path))
-        return -1;
-
-    pathlen = strlen(path);
-    if (pathlen == 0) {
-        PyErr_SetString(PyExc_ImportError, "empty pathname");
-        return -1;
-    } else {
-#ifndef RISCOS
-#ifndef MS_WINDOWS
-        struct stat statbuf;
-        int rv;
-
-        rv = stat(path, &statbuf);
-        if (rv == 0) {
-            /* it exists */
-            if (S_ISDIR(statbuf.st_mode)) {
-                /* it's a directory */
-                PyErr_SetString(PyExc_ImportError,
-                                "existing directory");
-                return -1;
-            }
-        }
-#else /* MS_WINDOWS */
-        DWORD rv;
-        /* see issue1293 and issue3677:
-         * stat() on Windows doesn't recognise paths like
-         * "e:\\shared\\" and "\\\\whiterab-c2znlh\\shared" as dirs.
-         */
-        rv = GetFileAttributesA(path);
-        if (rv != INVALID_FILE_ATTRIBUTES) {
-            /* it exists */
-            if (rv & FILE_ATTRIBUTE_DIRECTORY) {
-                /* it's a directory */
-                PyErr_SetString(PyExc_ImportError,
-                                "existing directory");
-                return -1;
-            }
-        }
-#endif
-#else /* RISCOS */
-        if (object_exists(path)) {
-            /* it exists */
-            if (isdir(path)) {
-                /* it's a directory */
-                PyErr_SetString(PyExc_ImportError,
-                                "existing directory");
-                return -1;
-            }
-        }
-#endif
-    }
-    return 0;
-}
-
-static PyObject *
-NullImporter_find_module(NullImporter *self, PyObject *args)
-{
-    Py_RETURN_NONE;
-}
-
-static PyMethodDef NullImporter_methods[] = {
-    {"find_module", (PyCFunction)NullImporter_find_module, METH_VARARGS,
-     "Always return None"
-    },
-    {NULL}  /* Sentinel */
-};
-
-
-PyTypeObject PyNullImporter_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "imp.NullImporter",        /*tp_name*/
-    sizeof(NullImporter),      /*tp_basicsize*/
-    0,                         /*tp_itemsize*/
-    0,                         /*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*/
-    Py_TPFLAGS_DEFAULT,        /*tp_flags*/
-    "Null importer object",    /* tp_doc */
-    0,                             /* tp_traverse */
-    0,                             /* tp_clear */
-    0,                             /* tp_richcompare */
-    0,                             /* tp_weaklistoffset */
-    0,                             /* tp_iter */
-    0,                             /* tp_iternext */
-    NullImporter_methods,      /* tp_methods */
-    0,                         /* tp_members */
-    0,                         /* tp_getset */
-    0,                         /* tp_base */
-    0,                         /* tp_dict */
-    0,                         /* tp_descr_get */
-    0,                         /* tp_descr_set */
-    0,                         /* tp_dictoffset */
-    (initproc)NullImporter_init,      /* tp_init */
-    0,                         /* tp_alloc */
-    PyType_GenericNew          /* tp_new */
-};
-
-
-PyMODINIT_FUNC
-initimp(void)
-{
-    PyObject *m, *d;
-
-    if (PyType_Ready(&PyNullImporter_Type) < 0)
-        goto failure;
-
-    m = Py_InitModule4("imp", imp_methods, doc_imp,
-                       NULL, PYTHON_API_VERSION);
-    if (m == NULL)
-        goto failure;
-    d = PyModule_GetDict(m);
-    if (d == NULL)
-        goto failure;
-
-    if (setint(d, "SEARCH_ERROR", SEARCH_ERROR) < 0) goto failure;
-    if (setint(d, "PY_SOURCE", PY_SOURCE) < 0) goto failure;
-    if (setint(d, "PY_COMPILED", PY_COMPILED) < 0) goto failure;
-    if (setint(d, "C_EXTENSION", C_EXTENSION) < 0) goto failure;
-    if (setint(d, "PY_RESOURCE", PY_RESOURCE) < 0) goto failure;
-    if (setint(d, "PKG_DIRECTORY", PKG_DIRECTORY) < 0) goto failure;
-    if (setint(d, "C_BUILTIN", C_BUILTIN) < 0) goto failure;
-    if (setint(d, "PY_FROZEN", PY_FROZEN) < 0) goto failure;
-    if (setint(d, "PY_CODERESOURCE", PY_CODERESOURCE) < 0) goto failure;
-    if (setint(d, "IMP_HOOK", IMP_HOOK) < 0) goto failure;
-
-    Py_INCREF(&PyNullImporter_Type);
-    PyModule_AddObject(m, "NullImporter", (PyObject *)&PyNullImporter_Type);
-  failure:
-    ;
-}
-
-
-/* API for embedding applications that want to add their own entries
-   to the table of built-in modules.  This should normally be called
-   *before* Py_Initialize().  When the table resize fails, -1 is
-   returned and the existing table is unchanged.
-
-   After a similar function by Just van Rossum. */
-
-int
-PyImport_ExtendInittab(struct _inittab *newtab)
-{
-    static struct _inittab *our_copy = NULL;
-    struct _inittab *p;
-    int i, n;
-
-    /* Count the number of entries in both tables */
-    for (n = 0; newtab[n].name != NULL; n++)
-        ;
-    if (n == 0)
-        return 0; /* Nothing to do */
-    for (i = 0; PyImport_Inittab[i].name != NULL; i++)
-        ;
-
-    /* Allocate new memory for the combined table */
-    p = our_copy;
-    PyMem_RESIZE(p, struct _inittab, i+n+1);
-    if (p == NULL)
-        return -1;
-
-    /* Copy the tables into the new memory */
-    if (our_copy != PyImport_Inittab)
-        memcpy(p, PyImport_Inittab, (i+1) * sizeof(struct _inittab));
-    PyImport_Inittab = our_copy = p;
-    memcpy(p+i, newtab, (n+1) * sizeof(struct _inittab));
-
-    return 0;
-}
-
-/* Shorthand to add a single entry given a name and a function */
-
-int
-PyImport_AppendInittab(const char *name, void (*initfunc)(void))
-{
-    struct _inittab newtab[2];
-
-    memset(newtab, '\0', sizeof newtab);
-
-    newtab[0].name = (char *)name;
-    newtab[0].initfunc = initfunc;
-
-    return PyImport_ExtendInittab(newtab);
-}
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/AppPkg/Applications/Python/PyMod-2.7.2/Python/marshal.c b/AppPkg/Applications/Python/PyMod-2.7.2/Python/marshal.c
deleted file mode 100644
index 698ffb5..0000000
--- a/AppPkg/Applications/Python/PyMod-2.7.2/Python/marshal.c
+++ /dev/null
@@ -1,1422 +0,0 @@
-/** @file
-    Write Python objects to files and read them back.
-    This is intended for writing and reading compiled Python code only;
-    a true persistent storage facility would be much harder, since
-    it would have to take circular links and sharing into account.
-
-    Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-
-#define PY_SSIZE_T_CLEAN
-
-#include "Python.h"
-#include "longintrepr.h"
-#include "code.h"
-#include "marshal.h"
-
-#ifndef ABS
-  #define ABS(x) ((x) < 0 ? -(x) : (x))
-#endif
-
-/* High water mark to determine when the marshalled object is dangerously deep
- * and risks coring the interpreter.  When the object stack gets this deep,
- * raise an exception instead of continuing.
- */
-#define MAX_MARSHAL_STACK_DEPTH 2000
-
-#define TYPE_NULL               '0'
-#define TYPE_NONE               'N'
-#define TYPE_FALSE              'F'
-#define TYPE_TRUE               'T'
-#define TYPE_STOPITER           'S'
-#define TYPE_ELLIPSIS           '.'
-#define TYPE_INT                'i'
-#define TYPE_INT64              'I'
-#define TYPE_FLOAT              'f'
-#define TYPE_BINARY_FLOAT       'g'
-#define TYPE_COMPLEX            'x'
-#define TYPE_BINARY_COMPLEX     'y'
-#define TYPE_LONG               'l'
-#define TYPE_STRING             's'
-#define TYPE_INTERNED           't'
-#define TYPE_STRINGREF          'R'
-#define TYPE_TUPLE              '('
-#define TYPE_LIST               '['
-#define TYPE_DICT               '{'
-#define TYPE_CODE               'c'
-#define TYPE_UNICODE            'u'
-#define TYPE_UNKNOWN            '?'
-#define TYPE_SET                '<'
-#define TYPE_FROZENSET          '>'
-
-#define WFERR_OK 0
-#define WFERR_UNMARSHALLABLE 1
-#define WFERR_NESTEDTOODEEP 2
-#define WFERR_NOMEMORY 3
-
-typedef struct {
-    FILE *fp;
-    int error;  /* see WFERR_* values */
-    int depth;
-    /* If fp == NULL, the following are valid: */
-    PyObject *str;
-    char *ptr;
-    char *end;
-    PyObject *strings; /* dict on marshal, list on unmarshal */
-    int version;
-} WFILE;
-
-#define w_byte(c, p) if (((p)->fp)) putc((c), (p)->fp); \
-                      else if ((p)->ptr != (p)->end) *(p)->ptr++ = (c); \
-                           else w_more(c, p)
-
-static void
-w_more(int c, WFILE *p)
-{
-    Py_ssize_t size, newsize;
-    if (p->str == NULL)
-        return; /* An error already occurred */
-    size = PyString_Size(p->str);
-    newsize = size + size + 1024;
-    if (newsize > 32*1024*1024) {
-        newsize = size + (size >> 3);           /* 12.5% overallocation */
-    }
-    if (_PyString_Resize(&p->str, newsize) != 0) {
-        p->ptr = p->end = NULL;
-    }
-    else {
-        p->ptr = PyString_AS_STRING((PyStringObject *)p->str) + size;
-        p->end =
-            PyString_AS_STRING((PyStringObject *)p->str) + newsize;
-        *p->ptr++ = Py_SAFE_DOWNCAST(c, int, char);
-    }
-}
-
-static void
-w_string(char *s, int n, WFILE *p)
-{
-    if (p->fp != NULL) {
-        fwrite(s, 1, n, p->fp);
-    }
-    else {
-        while (--n >= 0) {
-            w_byte(*s, p);
-            s++;
-        }
-    }
-}
-
-static void
-w_short(int x, WFILE *p)
-{
-    w_byte((char)( x      & 0xff), p);
-    w_byte((char)((x>> 8) & 0xff), p);
-}
-
-static void
-w_long(long x, WFILE *p)
-{
-    w_byte((char)( x      & 0xff), p);
-    w_byte((char)((x>> 8) & 0xff), p);
-    w_byte((char)((x>>16) & 0xff), p);
-    w_byte((char)((x>>24) & 0xff), p);
-}
-
-#if SIZEOF_LONG > 4
-static void
-w_long64(long x, WFILE *p)
-{
-    w_long(x, p);
-    w_long(x>>32, p);
-}
-#endif
-
-/* We assume that Python longs are stored internally in base some power of
-   2**15; for the sake of portability we'll always read and write them in base
-   exactly 2**15. */
-
-#define PyLong_MARSHAL_SHIFT 15
-#define PyLong_MARSHAL_BASE ((short)1 << PyLong_MARSHAL_SHIFT)
-#define PyLong_MARSHAL_MASK (PyLong_MARSHAL_BASE - 1)
-#if PyLong_SHIFT % PyLong_MARSHAL_SHIFT != 0
-#error "PyLong_SHIFT must be a multiple of PyLong_MARSHAL_SHIFT"
-#endif
-#define PyLong_MARSHAL_RATIO (PyLong_SHIFT / PyLong_MARSHAL_SHIFT)
-
-static void
-w_PyLong(const PyLongObject *ob, WFILE *p)
-{
-    Py_ssize_t i, j, n, l;
-    digit d;
-
-    w_byte(TYPE_LONG, p);
-    if (Py_SIZE(ob) == 0) {
-        w_long((long)0, p);
-        return;
-    }
-
-    /* set l to number of base PyLong_MARSHAL_BASE digits */
-    n = ABS(Py_SIZE(ob));
-    l = (n-1) * PyLong_MARSHAL_RATIO;
-    d = ob->ob_digit[n-1];
-    assert(d != 0); /* a PyLong is always normalized */
-    do {
-        d >>= PyLong_MARSHAL_SHIFT;
-        l++;
-    } while (d != 0);
-    w_long((long)(Py_SIZE(ob) > 0 ? l : -l), p);
-
-    for (i=0; i < n-1; i++) {
-        d = ob->ob_digit[i];
-        for (j=0; j < PyLong_MARSHAL_RATIO; j++) {
-            w_short(d & PyLong_MARSHAL_MASK, p);
-            d >>= PyLong_MARSHAL_SHIFT;
-        }
-        assert (d == 0);
-    }
-    d = ob->ob_digit[n-1];
-    do {
-        w_short(d & PyLong_MARSHAL_MASK, p);
-        d >>= PyLong_MARSHAL_SHIFT;
-    } while (d != 0);
-}
-
-static void
-w_object(PyObject *v, WFILE *p)
-{
-    Py_ssize_t i, n;
-
-    p->depth++;
-
-    if (p->depth > MAX_MARSHAL_STACK_DEPTH) {
-        p->error = WFERR_NESTEDTOODEEP;
-    }
-    else if (v == NULL) {
-        w_byte(TYPE_NULL, p);
-    }
-    else if (v == Py_None) {
-        w_byte(TYPE_NONE, p);
-    }
-    else if (v == PyExc_StopIteration) {
-        w_byte(TYPE_STOPITER, p);
-    }
-    else if (v == Py_Ellipsis) {
-        w_byte(TYPE_ELLIPSIS, p);
-    }
-    else if (v == Py_False) {
-        w_byte(TYPE_FALSE, p);
-    }
-    else if (v == Py_True) {
-        w_byte(TYPE_TRUE, p);
-    }
-    else if (PyInt_CheckExact(v)) {
-        long x = PyInt_AS_LONG((PyIntObject *)v);
-#if SIZEOF_LONG > 4
-        long y = Py_ARITHMETIC_RIGHT_SHIFT(long, x, 31);
-        if (y && y != -1) {
-            w_byte(TYPE_INT64, p);
-            w_long64(x, p);
-        }
-        else
-#endif
-            {
-            w_byte(TYPE_INT, p);
-            w_long(x, p);
-        }
-    }
-    else if (PyLong_CheckExact(v)) {
-        PyLongObject *ob = (PyLongObject *)v;
-        w_PyLong(ob, p);
-    }
-    else if (PyFloat_CheckExact(v)) {
-        if (p->version > 1) {
-            unsigned char buf[8];
-            if (_PyFloat_Pack8(PyFloat_AsDouble(v),
-                               buf, 1) < 0) {
-                p->error = WFERR_UNMARSHALLABLE;
-                return;
-            }
-            w_byte(TYPE_BINARY_FLOAT, p);
-            w_string((char*)buf, 8, p);
-        }
-        else {
-            char *buf = PyOS_double_to_string(PyFloat_AS_DOUBLE(v),
-                                              'g', 17, 0, NULL);
-            if (!buf) {
-                p->error = WFERR_NOMEMORY;
-                return;
-            }
-            n = strlen(buf);
-            w_byte(TYPE_FLOAT, p);
-            w_byte((int)n, p);
-            w_string(buf, (int)n, p);
-            PyMem_Free(buf);
-        }
-    }
-#ifndef WITHOUT_COMPLEX
-    else if (PyComplex_CheckExact(v)) {
-        if (p->version > 1) {
-            unsigned char buf[8];
-            if (_PyFloat_Pack8(PyComplex_RealAsDouble(v),
-                               buf, 1) < 0) {
-                p->error = WFERR_UNMARSHALLABLE;
-                return;
-            }
-            w_byte(TYPE_BINARY_COMPLEX, p);
-            w_string((char*)buf, 8, p);
-            if (_PyFloat_Pack8(PyComplex_ImagAsDouble(v),
-                               buf, 1) < 0) {
-                p->error = WFERR_UNMARSHALLABLE;
-                return;
-            }
-            w_string((char*)buf, 8, p);
-        }
-        else {
-            char *buf;
-            w_byte(TYPE_COMPLEX, p);
-            buf = PyOS_double_to_string(PyComplex_RealAsDouble(v),
-                                        'g', 17, 0, NULL);
-            if (!buf) {
-                p->error = WFERR_NOMEMORY;
-                return;
-            }
-            n = strlen(buf);
-            w_byte((int)n, p);
-            w_string(buf, (int)n, p);
-            PyMem_Free(buf);
-            buf = PyOS_double_to_string(PyComplex_ImagAsDouble(v),
-                                        'g', 17, 0, NULL);
-            if (!buf) {
-                p->error = WFERR_NOMEMORY;
-                return;
-            }
-            n = strlen(buf);
-            w_byte((int)n, p);
-            w_string(buf, (int)n, p);
-            PyMem_Free(buf);
-        }
-    }
-#endif
-    else if (PyString_CheckExact(v)) {
-        if (p->strings && PyString_CHECK_INTERNED(v)) {
-            PyObject *o = PyDict_GetItem(p->strings, v);
-            if (o) {
-                long w = PyInt_AsLong(o);
-                w_byte(TYPE_STRINGREF, p);
-                w_long(w, p);
-                goto exit;
-            }
-            else {
-                int ok;
-                o = PyInt_FromSsize_t(PyDict_Size(p->strings));
-                ok = o &&
-                     PyDict_SetItem(p->strings, v, o) >= 0;
-                Py_XDECREF(o);
-                if (!ok) {
-                    p->depth--;
-                    p->error = WFERR_UNMARSHALLABLE;
-                    return;
-                }
-                w_byte(TYPE_INTERNED, p);
-            }
-        }
-        else {
-            w_byte(TYPE_STRING, p);
-        }
-        n = PyString_GET_SIZE(v);
-        if (n > INT_MAX) {
-            /* huge strings are not supported */
-            p->depth--;
-            p->error = WFERR_UNMARSHALLABLE;
-            return;
-        }
-        w_long((long)n, p);
-        w_string(PyString_AS_STRING(v), (int)n, p);
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_CheckExact(v)) {
-        PyObject *utf8;
-        utf8 = PyUnicode_AsUTF8String(v);
-        if (utf8 == NULL) {
-            p->depth--;
-            p->error = WFERR_UNMARSHALLABLE;
-            return;
-        }
-        w_byte(TYPE_UNICODE, p);
-        n = PyString_GET_SIZE(utf8);
-        if (n > INT_MAX) {
-            p->depth--;
-            p->error = WFERR_UNMARSHALLABLE;
-            return;
-        }
-        w_long((long)n, p);
-        w_string(PyString_AS_STRING(utf8), (int)n, p);
-        Py_DECREF(utf8);
-    }
-#endif
-    else if (PyTuple_CheckExact(v)) {
-        w_byte(TYPE_TUPLE, p);
-        n = PyTuple_Size(v);
-        w_long((long)n, p);
-        for (i = 0; i < n; i++) {
-            w_object(PyTuple_GET_ITEM(v, i), p);
-        }
-    }
-    else if (PyList_CheckExact(v)) {
-        w_byte(TYPE_LIST, p);
-        n = PyList_GET_SIZE(v);
-        w_long((long)n, p);
-        for (i = 0; i < n; i++) {
-            w_object(PyList_GET_ITEM(v, i), p);
-        }
-    }
-    else if (PyDict_CheckExact(v)) {
-        Py_ssize_t pos;
-        PyObject *key, *value;
-        w_byte(TYPE_DICT, p);
-        /* This one is NULL object terminated! */
-        pos = 0;
-        while (PyDict_Next(v, &pos, &key, &value)) {
-            w_object(key, p);
-            w_object(value, p);
-        }
-        w_object((PyObject *)NULL, p);
-    }
-    else if (PyAnySet_CheckExact(v)) {
-        PyObject *value, *it;
-
-        if (PyObject_TypeCheck(v, &PySet_Type))
-            w_byte(TYPE_SET, p);
-        else
-            w_byte(TYPE_FROZENSET, p);
-        n = PyObject_Size(v);
-        if (n == -1) {
-            p->depth--;
-            p->error = WFERR_UNMARSHALLABLE;
-            return;
-        }
-        w_long((long)n, p);
-        it = PyObject_GetIter(v);
-        if (it == NULL) {
-            p->depth--;
-            p->error = WFERR_UNMARSHALLABLE;
-            return;
-        }
-        while ((value = PyIter_Next(it)) != NULL) {
-            w_object(value, p);
-            Py_DECREF(value);
-        }
-        Py_DECREF(it);
-        if (PyErr_Occurred()) {
-            p->depth--;
-            p->error = WFERR_UNMARSHALLABLE;
-            return;
-        }
-    }
-    else if (PyCode_Check(v)) {
-        PyCodeObject *co = (PyCodeObject *)v;
-        w_byte(TYPE_CODE, p);
-        w_long(co->co_argcount, p);
-        w_long(co->co_nlocals, p);
-        w_long(co->co_stacksize, p);
-        w_long(co->co_flags, p);
-        w_object(co->co_code, p);
-        w_object(co->co_consts, p);
-        w_object(co->co_names, p);
-        w_object(co->co_varnames, p);
-        w_object(co->co_freevars, p);
-        w_object(co->co_cellvars, p);
-        w_object(co->co_filename, p);
-        w_object(co->co_name, p);
-        w_long(co->co_firstlineno, p);
-        w_object(co->co_lnotab, p);
-    }
-    else if (PyObject_CheckReadBuffer(v)) {
-        /* Write unknown buffer-style objects as a string */
-        char *s;
-        PyBufferProcs *pb = v->ob_type->tp_as_buffer;
-        w_byte(TYPE_STRING, p);
-        n = (*pb->bf_getreadbuffer)(v, 0, (void **)&s);
-        if (n > INT_MAX) {
-            p->depth--;
-            p->error = WFERR_UNMARSHALLABLE;
-            return;
-        }
-        w_long((long)n, p);
-        w_string(s, (int)n, p);
-    }
-    else {
-        w_byte(TYPE_UNKNOWN, p);
-        p->error = WFERR_UNMARSHALLABLE;
-    }
-   exit:
-    p->depth--;
-}
-
-/* version currently has no effect for writing longs. */
-void
-PyMarshal_WriteLongToFile(long x, FILE *fp, int version)
-{
-    WFILE wf;
-    wf.fp = fp;
-    wf.error = WFERR_OK;
-    wf.depth = 0;
-    wf.strings = NULL;
-    wf.version = version;
-    w_long(x, &wf);
-}
-
-void
-PyMarshal_WriteObjectToFile(PyObject *x, FILE *fp, int version)
-{
-    WFILE wf;
-    wf.fp = fp;
-    wf.error = WFERR_OK;
-    wf.depth = 0;
-    wf.strings = (version > 0) ? PyDict_New() : NULL;
-    wf.version = version;
-    w_object(x, &wf);
-    Py_XDECREF(wf.strings);
-}
-
-typedef WFILE RFILE; /* Same struct with different invariants */
-
-#define rs_byte(p) (((p)->ptr < (p)->end) ? (unsigned char)*(p)->ptr++ : EOF)
-
-#define r_byte(p) ((p)->fp ? getc((p)->fp) : rs_byte(p))
-
-static int
-r_string(char *s, int n, RFILE *p)
-{
-    if (p->fp != NULL)
-        /* The result fits into int because it must be <=n. */
-        return (int)fread(s, 1, n, p->fp);
-    if (p->end - p->ptr < n)
-        n = (int)(p->end - p->ptr);
-    memcpy(s, p->ptr, n);
-    p->ptr += n;
-    return n;
-}
-
-static int
-r_short(RFILE *p)
-{
-    register short x;
-    x = r_byte(p);
-    x |= r_byte(p) << 8;
-    /* Sign-extension, in case short greater than 16 bits */
-    x |= -(x & 0x8000);
-    return x;
-}
-
-static long
-r_long(RFILE *p)
-{
-    register long x;
-    register FILE *fp = p->fp;
-    if (fp) {
-        x = getc(fp);
-        x |= (long)getc(fp) << 8;
-        x |= (long)getc(fp) << 16;
-        x |= (long)getc(fp) << 24;
-    }
-    else {
-        x = rs_byte(p);
-        x |= (long)rs_byte(p) << 8;
-        x |= (long)rs_byte(p) << 16;
-        x |= (long)rs_byte(p) << 24;
-    }
-#if SIZEOF_LONG > 4
-    /* Sign extension for 64-bit machines */
-    x |= -(x & 0x80000000L);
-#endif
-    return x;
-}
-
-/* r_long64 deals with the TYPE_INT64 code.  On a machine with
-   sizeof(long) > 4, it returns a Python int object, else a Python long
-   object.  Note that w_long64 writes out TYPE_INT if 32 bits is enough,
-   so there's no inefficiency here in returning a PyLong on 32-bit boxes
-   for everything written via TYPE_INT64 (i.e., if an int is written via
-   TYPE_INT64, it *needs* more than 32 bits).
-*/
-static PyObject *
-r_long64(RFILE *p)
-{
-    long lo4 = r_long(p);
-    long hi4 = r_long(p);
-#if SIZEOF_LONG > 4
-    long x = (hi4 << 32) | (lo4 & 0xFFFFFFFFL);
-    return PyInt_FromLong(x);
-#else
-    unsigned char buf[8];
-    int one = 1;
-    int is_little_endian = (int)*(char*)&one;
-    if (is_little_endian) {
-        memcpy(buf, &lo4, 4);
-        memcpy(buf+4, &hi4, 4);
-    }
-    else {
-        memcpy(buf, &hi4, 4);
-        memcpy(buf+4, &lo4, 4);
-    }
-    return _PyLong_FromByteArray(buf, 8, is_little_endian, 1);
-#endif
-}
-
-static PyObject *
-r_PyLong(RFILE *p)
-{
-    PyLongObject *ob;
-    int size, i, j, md, shorts_in_top_digit;
-    long n;
-    digit d;
-
-    n = r_long(p);
-    if (n == 0)
-        return (PyObject *)_PyLong_New(0);
-    if (n < -INT_MAX || n > INT_MAX) {
-        PyErr_SetString(PyExc_ValueError,
-                       "bad marshal data (long size out of range)");
-        return NULL;
-    }
-
-    size = 1 + (ABS(n) - 1) / PyLong_MARSHAL_RATIO;
-    shorts_in_top_digit = 1 + (ABS(n) - 1) % PyLong_MARSHAL_RATIO;
-    ob = _PyLong_New(size);
-    if (ob == NULL)
-        return NULL;
-    Py_SIZE(ob) = n > 0 ? size : -size;
-
-    for (i = 0; i < size-1; i++) {
-        d = 0;
-        for (j=0; j < PyLong_MARSHAL_RATIO; j++) {
-            md = r_short(p);
-            if (md < 0 || md > PyLong_MARSHAL_BASE)
-                goto bad_digit;
-            d += (digit)md << j*PyLong_MARSHAL_SHIFT;
-        }
-        ob->ob_digit[i] = d;
-    }
-    d = 0;
-    for (j=0; j < shorts_in_top_digit; j++) {
-        md = r_short(p);
-        if (md < 0 || md > PyLong_MARSHAL_BASE)
-            goto bad_digit;
-        /* topmost marshal digit should be nonzero */
-        if (md == 0 && j == shorts_in_top_digit - 1) {
-            Py_DECREF(ob);
-            PyErr_SetString(PyExc_ValueError,
-                "bad marshal data (unnormalized long data)");
-            return NULL;
-        }
-        d += (digit)md << j*PyLong_MARSHAL_SHIFT;
-    }
-    /* top digit should be nonzero, else the resulting PyLong won't be
-       normalized */
-    ob->ob_digit[size-1] = d;
-    return (PyObject *)ob;
-  bad_digit:
-    Py_DECREF(ob);
-    PyErr_SetString(PyExc_ValueError,
-                    "bad marshal data (digit out of range in long)");
-    return NULL;
-}
-
-
-static PyObject *
-r_object(RFILE *p)
-{
-    /* NULL is a valid return value, it does not necessarily means that
-       an exception is set. */
-    PyObject *v, *v2;
-    long i, n;
-    int type = r_byte(p);
-    PyObject *retval;
-
-    p->depth++;
-
-    if (p->depth > MAX_MARSHAL_STACK_DEPTH) {
-        p->depth--;
-        PyErr_SetString(PyExc_ValueError, "recursion limit exceeded");
-        return NULL;
-    }
-
-    switch (type) {
-
-    case EOF:
-        PyErr_SetString(PyExc_EOFError,
-                        "EOF read where object expected");
-        retval = NULL;
-        break;
-
-    case TYPE_NULL:
-        retval = NULL;
-        break;
-
-    case TYPE_NONE:
-        Py_INCREF(Py_None);
-        retval = Py_None;
-        break;
-
-    case TYPE_STOPITER:
-        Py_INCREF(PyExc_StopIteration);
-        retval = PyExc_StopIteration;
-        break;
-
-    case TYPE_ELLIPSIS:
-        Py_INCREF(Py_Ellipsis);
-        retval = Py_Ellipsis;
-        break;
-
-    case TYPE_FALSE:
-        Py_INCREF(Py_False);
-        retval = Py_False;
-        break;
-
-    case TYPE_TRUE:
-        Py_INCREF(Py_True);
-        retval = Py_True;
-        break;
-
-    case TYPE_INT:
-        retval = PyInt_FromLong(r_long(p));
-        break;
-
-    case TYPE_INT64:
-        retval = r_long64(p);
-        break;
-
-    case TYPE_LONG:
-        retval = r_PyLong(p);
-        break;
-
-    case TYPE_FLOAT:
-        {
-            char buf[256];
-            double dx;
-            n = r_byte(p);
-            if (n == EOF || r_string(buf, (int)n, p) != n) {
-                PyErr_SetString(PyExc_EOFError,
-                    "EOF read where object expected");
-                retval = NULL;
-                break;
-            }
-            buf[n] = '\0';
-            dx = PyOS_string_to_double(buf, NULL, NULL);
-            if (dx == -1.0 && PyErr_Occurred()) {
-                retval = NULL;
-                break;
-            }
-            retval = PyFloat_FromDouble(dx);
-            break;
-        }
-
-    case TYPE_BINARY_FLOAT:
-        {
-            unsigned char buf[8];
-            double x;
-            if (r_string((char*)buf, 8, p) != 8) {
-                PyErr_SetString(PyExc_EOFError,
-                    "EOF read where object expected");
-                retval = NULL;
-                break;
-            }
-            x = _PyFloat_Unpack8(buf, 1);
-            if (x == -1.0 && PyErr_Occurred()) {
-                retval = NULL;
-                break;
-            }
-            retval = PyFloat_FromDouble(x);
-            break;
-        }
-
-#ifndef WITHOUT_COMPLEX
-    case TYPE_COMPLEX:
-        {
-            char buf[256];
-            Py_complex c;
-            n = r_byte(p);
-            if (n == EOF || r_string(buf, (int)n, p) != n) {
-                PyErr_SetString(PyExc_EOFError,
-                    "EOF read where object expected");
-                retval = NULL;
-                break;
-            }
-            buf[n] = '\0';
-            c.real = PyOS_string_to_double(buf, NULL, NULL);
-            if (c.real == -1.0 && PyErr_Occurred()) {
-                retval = NULL;
-                break;
-            }
-            n = r_byte(p);
-            if (n == EOF || r_string(buf, (int)n, p) != n) {
-                PyErr_SetString(PyExc_EOFError,
-                    "EOF read where object expected");
-                retval = NULL;
-                break;
-            }
-            buf[n] = '\0';
-            c.imag = PyOS_string_to_double(buf, NULL, NULL);
-            if (c.imag == -1.0 && PyErr_Occurred()) {
-                retval = NULL;
-                break;
-            }
-            retval = PyComplex_FromCComplex(c);
-            break;
-        }
-
-    case TYPE_BINARY_COMPLEX:
-        {
-            unsigned char buf[8];
-            Py_complex c;
-            if (r_string((char*)buf, 8, p) != 8) {
-                PyErr_SetString(PyExc_EOFError,
-                    "EOF read where object expected");
-                retval = NULL;
-                break;
-            }
-            c.real = _PyFloat_Unpack8(buf, 1);
-            if (c.real == -1.0 && PyErr_Occurred()) {
-                retval = NULL;
-                break;
-            }
-            if (r_string((char*)buf, 8, p) != 8) {
-                PyErr_SetString(PyExc_EOFError,
-                    "EOF read where object expected");
-                retval = NULL;
-                break;
-            }
-            c.imag = _PyFloat_Unpack8(buf, 1);
-            if (c.imag == -1.0 && PyErr_Occurred()) {
-                retval = NULL;
-                break;
-            }
-            retval = PyComplex_FromCComplex(c);
-            break;
-        }
-#endif
-
-    case TYPE_INTERNED:
-    case TYPE_STRING:
-        n = r_long(p);
-        if (n < 0 || n > INT_MAX) {
-            PyErr_SetString(PyExc_ValueError, "bad marshal data (string size out of range)");
-            retval = NULL;
-            break;
-        }
-        v = PyString_FromStringAndSize((char *)NULL, n);
-        if (v == NULL) {
-            retval = NULL;
-            break;
-        }
-        if (r_string(PyString_AS_STRING(v), (int)n, p) != n) {
-            Py_DECREF(v);
-            PyErr_SetString(PyExc_EOFError,
-                            "EOF read where object expected");
-            retval = NULL;
-            break;
-        }
-        if (type == TYPE_INTERNED) {
-            PyString_InternInPlace(&v);
-            if (PyList_Append(p->strings, v) < 0) {
-                retval = NULL;
-                break;
-            }
-        }
-        retval = v;
-        break;
-
-    case TYPE_STRINGREF:
-        n = r_long(p);
-        if (n < 0 || n >= PyList_GET_SIZE(p->strings)) {
-            PyErr_SetString(PyExc_ValueError, "bad marshal data (string ref out of range)");
-            retval = NULL;
-            break;
-        }
-        v = PyList_GET_ITEM(p->strings, n);
-        Py_INCREF(v);
-        retval = v;
-        break;
-
-#ifdef Py_USING_UNICODE
-    case TYPE_UNICODE:
-        {
-        char *buffer;
-
-        n = r_long(p);
-        if (n < 0 || n > INT_MAX) {
-            PyErr_SetString(PyExc_ValueError, "bad marshal data (unicode size out of range)");
-            retval = NULL;
-            break;
-        }
-        buffer = PyMem_NEW(char, n);
-        if (buffer == NULL) {
-            retval = PyErr_NoMemory();
-            break;
-        }
-        if (r_string(buffer, (int)n, p) != n) {
-            PyMem_DEL(buffer);
-            PyErr_SetString(PyExc_EOFError,
-                "EOF read where object expected");
-            retval = NULL;
-            break;
-        }
-        v = PyUnicode_DecodeUTF8(buffer, n, NULL);
-        PyMem_DEL(buffer);
-        retval = v;
-        break;
-        }
-#endif
-
-    case TYPE_TUPLE:
-        n = r_long(p);
-        if (n < 0 || n > INT_MAX) {
-            PyErr_SetString(PyExc_ValueError, "bad marshal data (tuple size out of range)");
-            retval = NULL;
-            break;
-        }
-        v = PyTuple_New((int)n);
-        if (v == NULL) {
-            retval = NULL;
-            break;
-        }
-        for (i = 0; i < n; i++) {
-            v2 = r_object(p);
-            if ( v2 == NULL ) {
-                if (!PyErr_Occurred())
-                    PyErr_SetString(PyExc_TypeError,
-                        "NULL object in marshal data for tuple");
-                Py_DECREF(v);
-                v = NULL;
-                break;
-            }
-            PyTuple_SET_ITEM(v, (int)i, v2);
-        }
-        retval = v;
-        break;
-
-    case TYPE_LIST:
-        n = r_long(p);
-        if (n < 0 || n > INT_MAX) {
-            PyErr_SetString(PyExc_ValueError, "bad marshal data (list size out of range)");
-            retval = NULL;
-            break;
-        }
-        v = PyList_New((int)n);
-        if (v == NULL) {
-            retval = NULL;
-            break;
-        }
-        for (i = 0; i < n; i++) {
-            v2 = r_object(p);
-            if ( v2 == NULL ) {
-                if (!PyErr_Occurred())
-                    PyErr_SetString(PyExc_TypeError,
-                        "NULL object in marshal data for list");
-                Py_DECREF(v);
-                v = NULL;
-                break;
-            }
-            PyList_SET_ITEM(v, (int)i, v2);
-        }
-        retval = v;
-        break;
-
-    case TYPE_DICT:
-        v = PyDict_New();
-        if (v == NULL) {
-            retval = NULL;
-            break;
-        }
-        for (;;) {
-            PyObject *key, *val;
-            key = r_object(p);
-            if (key == NULL)
-                break;
-            val = r_object(p);
-            if (val != NULL)
-                PyDict_SetItem(v, key, val);
-            Py_DECREF(key);
-            Py_XDECREF(val);
-        }
-        if (PyErr_Occurred()) {
-            Py_DECREF(v);
-            v = NULL;
-        }
-        retval = v;
-        break;
-
-    case TYPE_SET:
-    case TYPE_FROZENSET:
-        n = r_long(p);
-        if (n < 0 || n > INT_MAX) {
-            PyErr_SetString(PyExc_ValueError, "bad marshal data (set size out of range)");
-            retval = NULL;
-            break;
-        }
-        v = (type == TYPE_SET) ? PySet_New(NULL) : PyFrozenSet_New(NULL);
-        if (v == NULL) {
-            retval = NULL;
-            break;
-        }
-        for (i = 0; i < n; i++) {
-            v2 = r_object(p);
-            if ( v2 == NULL ) {
-                if (!PyErr_Occurred())
-                    PyErr_SetString(PyExc_TypeError,
-                        "NULL object in marshal data for set");
-                Py_DECREF(v);
-                v = NULL;
-                break;
-            }
-            if (PySet_Add(v, v2) == -1) {
-                Py_DECREF(v);
-                Py_DECREF(v2);
-                v = NULL;
-                break;
-            }
-            Py_DECREF(v2);
-        }
-        retval = v;
-        break;
-
-    case TYPE_CODE:
-        if (PyEval_GetRestricted()) {
-            PyErr_SetString(PyExc_RuntimeError,
-                "cannot unmarshal code objects in "
-                "restricted execution mode");
-            retval = NULL;
-            break;
-        }
-        else {
-            int argcount;
-            int nlocals;
-            int stacksize;
-            int flags;
-            PyObject *code = NULL;
-            PyObject *consts = NULL;
-            PyObject *names = NULL;
-            PyObject *varnames = NULL;
-            PyObject *freevars = NULL;
-            PyObject *cellvars = NULL;
-            PyObject *filename = NULL;
-            PyObject *name = NULL;
-            int firstlineno;
-            PyObject *lnotab = NULL;
-
-            v = NULL;
-
-            /* XXX ignore long->int overflows for now */
-            argcount = (int)r_long(p);
-            nlocals = (int)r_long(p);
-            stacksize = (int)r_long(p);
-            flags = (int)r_long(p);
-            code = r_object(p);
-            if (code == NULL)
-                goto code_error;
-            consts = r_object(p);
-            if (consts == NULL)
-                goto code_error;
-            names = r_object(p);
-            if (names == NULL)
-                goto code_error;
-            varnames = r_object(p);
-            if (varnames == NULL)
-                goto code_error;
-            freevars = r_object(p);
-            if (freevars == NULL)
-                goto code_error;
-            cellvars = r_object(p);
-            if (cellvars == NULL)
-                goto code_error;
-            filename = r_object(p);
-            if (filename == NULL)
-                goto code_error;
-            name = r_object(p);
-            if (name == NULL)
-                goto code_error;
-            firstlineno = (int)r_long(p);
-            lnotab = r_object(p);
-            if (lnotab == NULL)
-                goto code_error;
-
-            v = (PyObject *) PyCode_New(
-                            argcount, nlocals, stacksize, flags,
-                            code, consts, names, varnames,
-                            freevars, cellvars, filename, name,
-                            firstlineno, lnotab);
-
-          code_error:
-            Py_XDECREF(code);
-            Py_XDECREF(consts);
-            Py_XDECREF(names);
-            Py_XDECREF(varnames);
-            Py_XDECREF(freevars);
-            Py_XDECREF(cellvars);
-            Py_XDECREF(filename);
-            Py_XDECREF(name);
-            Py_XDECREF(lnotab);
-
-        }
-        retval = v;
-        break;
-
-    default:
-        /* Bogus data got written, which isn't ideal.
-           This will let you keep working and recover. */
-        PyErr_SetString(PyExc_ValueError, "bad marshal data (unknown type code)");
-        retval = NULL;
-        break;
-
-    }
-    p->depth--;
-    return retval;
-}
-
-static PyObject *
-read_object(RFILE *p)
-{
-    PyObject *v;
-    if (PyErr_Occurred()) {
-        fprintf(stderr, "XXX readobject called with exception set\n");
-        return NULL;
-    }
-    v = r_object(p);
-    if (v == NULL && !PyErr_Occurred())
-        PyErr_SetString(PyExc_TypeError, "NULL object in marshal data for object");
-    return v;
-}
-
-int
-PyMarshal_ReadShortFromFile(FILE *fp)
-{
-    RFILE rf;
-    assert(fp);
-    rf.fp = fp;
-    rf.strings = NULL;
-    rf.end = rf.ptr = NULL;
-    return r_short(&rf);
-}
-
-long
-PyMarshal_ReadLongFromFile(FILE *fp)
-{
-    RFILE rf;
-    rf.fp = fp;
-    rf.strings = NULL;
-    rf.ptr = rf.end = NULL;
-    return r_long(&rf);
-}
-
-#ifdef HAVE_FSTAT
-/* Return size of file in bytes; < 0 if unknown. */
-static off_t
-getfilesize(FILE *fp)
-{
-    struct stat st;
-    if (fstat(fileno(fp), &st) != 0)
-        return -1;
-    else
-        return st.st_size;
-}
-#endif
-
-/* If we can get the size of the file up-front, and it's reasonably small,
- * read it in one gulp and delegate to ...FromString() instead.  Much quicker
- * than reading a byte at a time from file; speeds .pyc imports.
- * CAUTION:  since this may read the entire remainder of the file, don't
- * call it unless you know you're done with the file.
- */
-PyObject *
-PyMarshal_ReadLastObjectFromFile(FILE *fp)
-{
-/* REASONABLE_FILE_LIMIT is by defn something big enough for Tkinter.pyc. */
-#define REASONABLE_FILE_LIMIT (1L << 18)
-#ifdef HAVE_FSTAT
-    off_t filesize;
-    filesize = getfilesize(fp);
-    if (filesize > 0 && filesize <= REASONABLE_FILE_LIMIT) {
-        char* pBuf = (char *)PyMem_MALLOC(filesize);
-        if (pBuf != NULL) {
-            PyObject* v;
-            size_t n;
-            /* filesize must fit into an int, because it
-               is smaller than REASONABLE_FILE_LIMIT */
-            n = fread(pBuf, 1, (int)filesize, fp);
-            v = PyMarshal_ReadObjectFromString(pBuf, n);
-            PyMem_FREE(pBuf);
-            return v;
-        }
-
-    }
-#endif
-    /* We don't have fstat, or we do but the file is larger than
-     * REASONABLE_FILE_LIMIT or malloc failed -- read a byte at a time.
-     */
-    return PyMarshal_ReadObjectFromFile(fp);
-
-#undef REASONABLE_FILE_LIMIT
-}
-
-PyObject *
-PyMarshal_ReadObjectFromFile(FILE *fp)
-{
-    RFILE rf;
-    PyObject *result;
-    rf.fp = fp;
-    rf.strings = PyList_New(0);
-    rf.depth = 0;
-    rf.ptr = rf.end = NULL;
-    result = r_object(&rf);
-    Py_DECREF(rf.strings);
-    return result;
-}
-
-PyObject *
-PyMarshal_ReadObjectFromString(char *str, Py_ssize_t len)
-{
-    RFILE rf;
-    PyObject *result;
-    rf.fp = NULL;
-    rf.ptr = str;
-    rf.end = str + len;
-    rf.strings = PyList_New(0);
-    rf.depth = 0;
-    result = r_object(&rf);
-    Py_DECREF(rf.strings);
-    return result;
-}
-
-static void
-set_error(int error)
-{
-    switch (error) {
-    case WFERR_NOMEMORY:
-        PyErr_NoMemory();
-        break;
-    case WFERR_UNMARSHALLABLE:
-        PyErr_SetString(PyExc_ValueError, "unmarshallable object");
-        break;
-    case WFERR_NESTEDTOODEEP:
-    default:
-        PyErr_SetString(PyExc_ValueError,
-            "object too deeply nested to marshal");
-        break;
-    }
-}
-
-PyObject *
-PyMarshal_WriteObjectToString(PyObject *x, int version)
-{
-    WFILE wf;
-    wf.fp = NULL;
-    wf.str = PyString_FromStringAndSize((char *)NULL, 50);
-    if (wf.str == NULL)
-        return NULL;
-    wf.ptr = PyString_AS_STRING((PyStringObject *)wf.str);
-    wf.end = wf.ptr + PyString_Size(wf.str);
-    wf.error = WFERR_OK;
-    wf.depth = 0;
-    wf.version = version;
-    wf.strings = (version > 0) ? PyDict_New() : NULL;
-    w_object(x, &wf);
-    Py_XDECREF(wf.strings);
-    if (wf.str != NULL) {
-        char *base = PyString_AS_STRING((PyStringObject *)wf.str);
-        if (wf.ptr - base > PY_SSIZE_T_MAX) {
-            Py_DECREF(wf.str);
-            PyErr_SetString(PyExc_OverflowError,
-                            "too much marshall data for a string");
-            return NULL;
-        }
-        if (_PyString_Resize(&wf.str, (Py_ssize_t)(wf.ptr - base)))
-            return NULL;
-    }
-    if (wf.error != WFERR_OK) {
-        Py_XDECREF(wf.str);
-        set_error(wf.error);
-        return NULL;
-    }
-    return wf.str;
-}
-
-/* And an interface for Python programs... */
-
-static PyObject *
-marshal_dump(PyObject *self, PyObject *args)
-{
-    WFILE wf;
-    PyObject *x;
-    PyObject *f;
-    int version = Py_MARSHAL_VERSION;
-    if (!PyArg_ParseTuple(args, "OO|i:dump", &x, &f, &version))
-        return NULL;
-    if (!PyFile_Check(f)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "marshal.dump() 2nd arg must be file");
-        return NULL;
-    }
-    wf.fp = PyFile_AsFile(f);
-    wf.str = NULL;
-    wf.ptr = wf.end = NULL;
-    wf.error = WFERR_OK;
-    wf.depth = 0;
-    wf.strings = (version > 0) ? PyDict_New() : 0;
-    wf.version = version;
-    w_object(x, &wf);
-    Py_XDECREF(wf.strings);
-    if (wf.error != WFERR_OK) {
-        set_error(wf.error);
-        return NULL;
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(dump_doc,
-"dump(value, file[, version])\n\
-\n\
-Write the value on the open file. The value must be a supported type.\n\
-The file must be an open file object such as sys.stdout or returned by\n\
-open() or os.popen(). It must be opened in binary mode ('wb' or 'w+b').\n\
-\n\
-If the value has (or contains an object that has) an unsupported type, a\n\
-ValueError exception is raised - but garbage data will also be written\n\
-to the file. The object will not be properly read back by load()\n\
-\n\
-New in version 2.4: The version argument indicates the data format that\n\
-dump should use.");
-
-static PyObject *
-marshal_load(PyObject *self, PyObject *f)
-{
-    RFILE rf;
-    PyObject *result;
-    if (!PyFile_Check(f)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "marshal.load() arg must be file");
-        return NULL;
-    }
-    rf.fp = PyFile_AsFile(f);
-    rf.strings = PyList_New(0);
-    rf.depth = 0;
-    result = read_object(&rf);
-    Py_DECREF(rf.strings);
-    return result;
-}
-
-PyDoc_STRVAR(load_doc,
-"load(file)\n\
-\n\
-Read one value from the open file and return it. If no valid value is\n\
-read (e.g. because the data has a different Python version's\n\
-incompatible marshal format), raise EOFError, ValueError or TypeError.\n\
-The file must be an open file object opened in binary mode ('rb' or\n\
-'r+b').\n\
-\n\
-Note: If an object containing an unsupported type was marshalled with\n\
-dump(), load() will substitute None for the unmarshallable type.");
-
-
-static PyObject *
-marshal_dumps(PyObject *self, PyObject *args)
-{
-    PyObject *x;
-    int version = Py_MARSHAL_VERSION;
-    if (!PyArg_ParseTuple(args, "O|i:dumps", &x, &version))
-        return NULL;
-    return PyMarshal_WriteObjectToString(x, version);
-}
-
-PyDoc_STRVAR(dumps_doc,
-"dumps(value[, version])\n\
-\n\
-Return the string that would be written to a file by dump(value, file).\n\
-The value must be a supported type. Raise a ValueError exception if\n\
-value has (or contains an object that has) an unsupported type.\n\
-\n\
-New in version 2.4: The version argument indicates the data format that\n\
-dumps should use.");
-
-
-static PyObject *
-marshal_loads(PyObject *self, PyObject *args)
-{
-    RFILE rf;
-    char *s;
-    Py_ssize_t n;
-    PyObject* result;
-    if (!PyArg_ParseTuple(args, "s#:loads", &s, &n))
-        return NULL;
-    rf.fp = NULL;
-    rf.ptr = s;
-    rf.end = s + n;
-    rf.strings = PyList_New(0);
-    rf.depth = 0;
-    result = read_object(&rf);
-    Py_DECREF(rf.strings);
-    return result;
-}
-
-PyDoc_STRVAR(loads_doc,
-"loads(string)\n\
-\n\
-Convert the string to a value. If no valid value is found, raise\n\
-EOFError, ValueError or TypeError. Extra characters in the string are\n\
-ignored.");
-
-static PyMethodDef marshal_methods[] = {
-    {"dump",            marshal_dump,   METH_VARARGS,   dump_doc},
-    {"load",            marshal_load,   METH_O,         load_doc},
-    {"dumps",           marshal_dumps,  METH_VARARGS,   dumps_doc},
-    {"loads",           marshal_loads,  METH_VARARGS,   loads_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyDoc_STRVAR(marshal_doc,
-"This module contains functions that can read and write Python values in\n\
-a binary format. The format is specific to Python, but independent of\n\
-machine architecture issues.\n\
-\n\
-Not all Python object types are supported; in general, only objects\n\
-whose value is independent from a particular invocation of Python can be\n\
-written and read by this module. The following types are supported:\n\
-None, integers, long integers, floating point numbers, strings, Unicode\n\
-objects, tuples, lists, sets, dictionaries, and code objects, where it\n\
-should be understood that tuples, lists and dictionaries are only\n\
-supported as long as the values contained therein are themselves\n\
-supported; and recursive lists and dictionaries should not be written\n\
-(they will cause infinite loops).\n\
-\n\
-Variables:\n\
-\n\
-version -- indicates the format that the module uses. Version 0 is the\n\
-    historical format, version 1 (added in Python 2.4) shares interned\n\
-    strings and version 2 (added in Python 2.5) uses a binary format for\n\
-    floating point numbers. (New in version 2.4)\n\
-\n\
-Functions:\n\
-\n\
-dump() -- write value to a file\n\
-load() -- read value from a file\n\
-dumps() -- write value to a string\n\
-loads() -- read value from a string");
-
-
-PyMODINIT_FUNC
-PyMarshal_Init(void)
-{
-    PyObject *mod = Py_InitModule3("marshal", marshal_methods,
-        marshal_doc);
-    if (mod == NULL)
-        return;
-    PyModule_AddIntConstant(mod, "version", Py_MARSHAL_VERSION);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/README b/AppPkg/Applications/Python/Python-2.7.2/Demo/README
deleted file mode 100644
index ce362ee..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/README
+++ /dev/null
@@ -1,40 +0,0 @@
-This directory contains various demonstrations of what you can do with
-Python.  They were all written by me except where explicitly stated
-otherwise -- in general, demos contributed by others ends up in the
-../Contrib directory, unless I think they're of utmost general
-importance (like Matt Conway's Tk demos).
-
-A fair number of utilities that are useful when while developing
-Python code can be found in the ../Tools directory -- some of these
-can also be considered good examples of how to write Python code.
-
-Finally, in order to save disk space and net bandwidth, not all
-subdirectories listed here are distributed.  They are listed just
-in case I change my mind about them.
-
-
-cgi             CGI examples (see also ../Tools/faqwiz/.)
-
-classes		Some examples of how to use classes.
-
-comparisons	A set of responses to a really old language-comparison
-		challenge.
-
-md5test		Test program for the optional md5 module.
-
-metaclasses	The code from the 1.5 metaclasses paper on the web.
-
-parser		Example using the parser module.
-
-pdist		Old, unfinished code messing with CVS, RCS and remote
-		files.
-
-scripts		Some useful Python scripts that I put in my bin
-		directory.  No optional built-in modules needed.
-
-sockets		Examples for the new built-in module 'socket'.
-
-xml		Some XML demos.
-
-zlib		Some demos for the zlib module (see also the standard
-		library module gzip.py).
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/README b/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/README
deleted file mode 100644
index 90d6c9b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/README
+++ /dev/null
@@ -1,11 +0,0 @@
-CGI Examples
-------------
-
-Here are some example CGI programs.  For a larger example, see
-../../Tools/faqwiz/.
-
-cgi0.sh -- A shell script to test your server is configured for CGI
-cgi1.py -- A Python script to test your server is configured for CGI
-cgi2.py -- A Python script showing how to parse a form
-cgi3.py -- A Python script for driving an arbitrary CGI application
-wiki.py -- Sample CGI application: a minimal Wiki implementation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi0.sh b/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi0.sh
deleted file mode 100644
index ee35375..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi0.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#! /bin/sh
-
-# If you can't get this to work, your web server isn't set up right
-
-echo Content-type: text/plain
-echo
-echo Hello world
-echo This is cgi0.sh
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi1.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi1.py
deleted file mode 100644
index 3a0c604..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi1.py
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env python
-
-"""CGI test 1 - check server setup."""
-
-# Until you get this to work, your web server isn't set up right or
-# your Python isn't set up right.
-
-# If cgi0.sh works but cgi1.py doesn't, check the #! line and the file
-# permissions.  The docs for the cgi.py module have debugging tips.
-
-print "Content-type: text/html"
-print
-print "<h1>Hello world</h1>"
-print "<p>This is cgi1.py"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi2.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi2.py
deleted file mode 100644
index 1ed9f55..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi2.py
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env python
-
-"""CGI test 2 - basic use of cgi module."""
-
-import cgitb; cgitb.enable()
-
-import cgi
-
-def main():
-    form = cgi.FieldStorage()
-    print "Content-type: text/html"
-    print
-    if not form:
-        print "<h1>No Form Keys</h1>"
-    else:
-        print "<h1>Form Keys</h1>"
-        for key in form.keys():
-            value = form[key].value
-            print "<p>", cgi.escape(key), ":", cgi.escape(value)
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi3.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi3.py
deleted file mode 100644
index 224fc83..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/cgi3.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python
-
-"""CGI test 3 (persistent data)."""
-
-import cgitb; cgitb.enable()
-
-from wiki import main
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/wiki.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/wiki.py
deleted file mode 100644
index 990c2e6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/cgi/wiki.py
+++ /dev/null
@@ -1,123 +0,0 @@
-"""Wiki main program.  Imported and run by cgi3.py."""
-
-import os, re, cgi, sys, tempfile
-escape = cgi.escape
-
-def main():
-    form = cgi.FieldStorage()
-    print "Content-type: text/html"
-    print
-    cmd = form.getvalue("cmd", "view")
-    page = form.getvalue("page", "FrontPage")
-    wiki = WikiPage(page)
-    method = getattr(wiki, 'cmd_' + cmd, None) or wiki.cmd_view
-    method(form)
-
-class WikiPage:
-
-    homedir = tempfile.gettempdir()
-    scripturl = os.path.basename(sys.argv[0])
-
-    def __init__(self, name):
-        if not self.iswikiword(name):
-            raise ValueError, "page name is not a wiki word"
-        self.name = name
-        self.load()
-
-    def cmd_view(self, form):
-        print "<h1>", escape(self.splitwikiword(self.name)), "</h1>"
-        print "<p>"
-        for line in self.data.splitlines():
-            line = line.rstrip()
-            if not line:
-                print "<p>"
-            else:
-                print self.formatline(line)
-        print "<hr>"
-        print "<p>", self.mklink("edit", self.name, "Edit this page") + ";"
-        print self.mklink("view", "FrontPage", "go to front page") + "."
-
-    def formatline(self, line):
-        words = []
-        for word in re.split('(\W+)', line):
-            if self.iswikiword(word):
-                if os.path.isfile(self.mkfile(word)):
-                    word = self.mklink("view", word, word)
-                else:
-                    word = self.mklink("new", word, word + "*")
-            else:
-                word = escape(word)
-            words.append(word)
-        return "".join(words)
-
-    def cmd_edit(self, form, label="Change"):
-        print "<h1>", label, self.name, "</h1>"
-        print '<form method="POST" action="%s">' % self.scripturl
-        s = '<textarea cols="70" rows="20" name="text">%s</textarea>'
-        print s % self.data
-        print '<input type="hidden" name="cmd" value="create">'
-        print '<input type="hidden" name="page" value="%s">' % self.name
-        print '<br>'
-        print '<input type="submit" value="%s Page">' % label
-        print "</form>"
-
-    def cmd_create(self, form):
-        self.data = form.getvalue("text", "").strip()
-        error = self.store()
-        if error:
-            print "<h1>I'm sorry.  That didn't work</h1>"
-            print "<p>An error occurred while attempting to write the file:"
-            print "<p>", escape(error)
-        else:
-            # Use a redirect directive, to avoid "reload page" problems
-            print "<head>"
-            s = '<meta http-equiv="refresh" content="1; URL=%s">'
-            print s % (self.scripturl + "?cmd=view&page=" + self.name)
-            print "<head>"
-            print "<h1>OK</h1>"
-            print "<p>If nothing happens, please click here:",
-            print self.mklink("view", self.name, self.name)
-
-    def cmd_new(self, form):
-        self.cmd_edit(form, label="Create")
-
-    def iswikiword(self, word):
-        return re.match("[A-Z][a-z]+([A-Z][a-z]*)+", word)
-
-    def splitwikiword(self, word):
-        chars = []
-        for c in word:
-            if chars and c.isupper():
-                chars.append(' ')
-            chars.append(c)
-        return "".join(chars)
-
-    def mkfile(self, name=None):
-        if name is None:
-            name = self.name
-        return os.path.join(self.homedir, name + ".txt")
-
-    def mklink(self, cmd, page, text):
-        link = self.scripturl + "?cmd=" + cmd + "&page=" + page
-        return '<a href="%s">%s</a>' % (link, text)
-
-    def load(self):
-        try:
-            f = open(self.mkfile())
-            data = f.read().strip()
-            f.close()
-        except IOError:
-            data = ""
-        self.data = data
-
-    def store(self):
-        data = self.data
-        try:
-            f = open(self.mkfile(), "w")
-            f.write(data)
-            if data and not data.endswith('\n'):
-                f.write('\n')
-            f.close()
-            return ""
-        except IOError, err:
-            return "IOError: %s" % str(err)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Complex.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Complex.py
deleted file mode 100644
index 9d631b8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Complex.py
+++ /dev/null
@@ -1,320 +0,0 @@
-# Complex numbers
-# ---------------
-
-# [Now that Python has a complex data type built-in, this is not very
-# useful, but it's still a nice example class]
-
-# This module represents complex numbers as instances of the class Complex.
-# A Complex instance z has two data attribues, z.re (the real part) and z.im
-# (the imaginary part).  In fact, z.re and z.im can have any value -- all
-# arithmetic operators work regardless of the type of z.re and z.im (as long
-# as they support numerical operations).
-#
-# The following functions exist (Complex is actually a class):
-# Complex([re [,im]) -> creates a complex number from a real and an imaginary part
-# IsComplex(z) -> true iff z is a complex number (== has .re and .im attributes)
-# ToComplex(z) -> a complex number equal to z; z itself if IsComplex(z) is true
-#                 if z is a tuple(re, im) it will also be converted
-# PolarToComplex([r [,phi [,fullcircle]]]) ->
-#       the complex number z for which r == z.radius() and phi == z.angle(fullcircle)
-#       (r and phi default to 0)
-# exp(z) -> returns the complex exponential of z. Equivalent to pow(math.e,z).
-#
-# Complex numbers have the following methods:
-# z.abs() -> absolute value of z
-# z.radius() == z.abs()
-# z.angle([fullcircle]) -> angle from positive X axis; fullcircle gives units
-# z.phi([fullcircle]) == z.angle(fullcircle)
-#
-# These standard functions and unary operators accept complex arguments:
-# abs(z)
-# -z
-# +z
-# not z
-# repr(z) == `z`
-# str(z)
-# hash(z) -> a combination of hash(z.re) and hash(z.im) such that if z.im is zero
-#            the result equals hash(z.re)
-# Note that hex(z) and oct(z) are not defined.
-#
-# These conversions accept complex arguments only if their imaginary part is zero:
-# int(z)
-# long(z)
-# float(z)
-#
-# The following operators accept two complex numbers, or one complex number
-# and one real number (int, long or float):
-# z1 + z2
-# z1 - z2
-# z1 * z2
-# z1 / z2
-# pow(z1, z2)
-# cmp(z1, z2)
-# Note that z1 % z2 and divmod(z1, z2) are not defined,
-# nor are shift and mask operations.
-#
-# The standard module math does not support complex numbers.
-# The cmath modules should be used instead.
-#
-# Idea:
-# add a class Polar(r, phi) and mixed-mode arithmetic which
-# chooses the most appropriate type for the result:
-# Complex for +,-,cmp
-# Polar   for *,/,pow
-
-import math
-import sys
-
-twopi = math.pi*2.0
-halfpi = math.pi/2.0
-
-def IsComplex(obj):
-    return hasattr(obj, 're') and hasattr(obj, 'im')
-
-def ToComplex(obj):
-    if IsComplex(obj):
-        return obj
-    elif isinstance(obj, tuple):
-        return Complex(*obj)
-    else:
-        return Complex(obj)
-
-def PolarToComplex(r = 0, phi = 0, fullcircle = twopi):
-    phi = phi * (twopi / fullcircle)
-    return Complex(math.cos(phi)*r, math.sin(phi)*r)
-
-def Re(obj):
-    if IsComplex(obj):
-        return obj.re
-    return obj
-
-def Im(obj):
-    if IsComplex(obj):
-        return obj.im
-    return 0
-
-class Complex:
-
-    def __init__(self, re=0, im=0):
-        _re = 0
-        _im = 0
-        if IsComplex(re):
-            _re = re.re
-            _im = re.im
-        else:
-            _re = re
-        if IsComplex(im):
-            _re = _re - im.im
-            _im = _im + im.re
-        else:
-            _im = _im + im
-        # this class is immutable, so setting self.re directly is
-        # not possible.
-        self.__dict__['re'] = _re
-        self.__dict__['im'] = _im
-
-    def __setattr__(self, name, value):
-        raise TypeError, 'Complex numbers are immutable'
-
-    def __hash__(self):
-        if not self.im:
-            return hash(self.re)
-        return hash((self.re, self.im))
-
-    def __repr__(self):
-        if not self.im:
-            return 'Complex(%r)' % (self.re,)
-        else:
-            return 'Complex(%r, %r)' % (self.re, self.im)
-
-    def __str__(self):
-        if not self.im:
-            return repr(self.re)
-        else:
-            return 'Complex(%r, %r)' % (self.re, self.im)
-
-    def __neg__(self):
-        return Complex(-self.re, -self.im)
-
-    def __pos__(self):
-        return self
-
-    def __abs__(self):
-        return math.hypot(self.re, self.im)
-
-    def __int__(self):
-        if self.im:
-            raise ValueError, "can't convert Complex with nonzero im to int"
-        return int(self.re)
-
-    def __long__(self):
-        if self.im:
-            raise ValueError, "can't convert Complex with nonzero im to long"
-        return long(self.re)
-
-    def __float__(self):
-        if self.im:
-            raise ValueError, "can't convert Complex with nonzero im to float"
-        return float(self.re)
-
-    def __cmp__(self, other):
-        other = ToComplex(other)
-        return cmp((self.re, self.im), (other.re, other.im))
-
-    def __rcmp__(self, other):
-        other = ToComplex(other)
-        return cmp(other, self)
-
-    def __nonzero__(self):
-        return not (self.re == self.im == 0)
-
-    abs = radius = __abs__
-
-    def angle(self, fullcircle = twopi):
-        return (fullcircle/twopi) * ((halfpi - math.atan2(self.re, self.im)) % twopi)
-
-    phi = angle
-
-    def __add__(self, other):
-        other = ToComplex(other)
-        return Complex(self.re + other.re, self.im + other.im)
-
-    __radd__ = __add__
-
-    def __sub__(self, other):
-        other = ToComplex(other)
-        return Complex(self.re - other.re, self.im - other.im)
-
-    def __rsub__(self, other):
-        other = ToComplex(other)
-        return other - self
-
-    def __mul__(self, other):
-        other = ToComplex(other)
-        return Complex(self.re*other.re - self.im*other.im,
-                       self.re*other.im + self.im*other.re)
-
-    __rmul__ = __mul__
-
-    def __div__(self, other):
-        other = ToComplex(other)
-        d = float(other.re*other.re + other.im*other.im)
-        if not d: raise ZeroDivisionError, 'Complex division'
-        return Complex((self.re*other.re + self.im*other.im) / d,
-                       (self.im*other.re - self.re*other.im) / d)
-
-    def __rdiv__(self, other):
-        other = ToComplex(other)
-        return other / self
-
-    def __pow__(self, n, z=None):
-        if z is not None:
-            raise TypeError, 'Complex does not support ternary pow()'
-        if IsComplex(n):
-            if n.im:
-                if self.im: raise TypeError, 'Complex to the Complex power'
-                else: return exp(math.log(self.re)*n)
-            n = n.re
-        r = pow(self.abs(), n)
-        phi = n*self.angle()
-        return Complex(math.cos(phi)*r, math.sin(phi)*r)
-
-    def __rpow__(self, base):
-        base = ToComplex(base)
-        return pow(base, self)
-
-def exp(z):
-    r = math.exp(z.re)
-    return Complex(math.cos(z.im)*r,math.sin(z.im)*r)
-
-
-def checkop(expr, a, b, value, fuzz = 1e-6):
-    print '       ', a, 'and', b,
-    try:
-        result = eval(expr)
-    except:
-        result = sys.exc_type
-    print '->', result
-    if isinstance(result, str) or isinstance(value, str):
-        ok = (result == value)
-    else:
-        ok = abs(result - value) <= fuzz
-    if not ok:
-        print '!!\t!!\t!! should be', value, 'diff', abs(result - value)
-
-def test():
-    print 'test constructors'
-    constructor_test = (
-        # "expect" is an array [re,im] "got" the Complex.
-            ( (0,0), Complex() ),
-            ( (0,0), Complex() ),
-            ( (1,0), Complex(1) ),
-            ( (0,1), Complex(0,1) ),
-            ( (1,2), Complex(Complex(1,2)) ),
-            ( (1,3), Complex(Complex(1,2),1) ),
-            ( (0,0), Complex(0,Complex(0,0)) ),
-            ( (3,4), Complex(3,Complex(4)) ),
-            ( (-1,3), Complex(1,Complex(3,2)) ),
-            ( (-7,6), Complex(Complex(1,2),Complex(4,8)) ) )
-    cnt = [0,0]
-    for t in constructor_test:
-        cnt[0] += 1
-        if ((t[0][0]!=t[1].re)or(t[0][1]!=t[1].im)):
-            print "        expected", t[0], "got", t[1]
-            cnt[1] += 1
-    print "  ", cnt[1], "of", cnt[0], "tests failed"
-    # test operators
-    testsuite = {
-            'a+b': [
-                    (1, 10, 11),
-                    (1, Complex(0,10), Complex(1,10)),
-                    (Complex(0,10), 1, Complex(1,10)),
-                    (Complex(0,10), Complex(1), Complex(1,10)),
-                    (Complex(1), Complex(0,10), Complex(1,10)),
-            ],
-            'a-b': [
-                    (1, 10, -9),
-                    (1, Complex(0,10), Complex(1,-10)),
-                    (Complex(0,10), 1, Complex(-1,10)),
-                    (Complex(0,10), Complex(1), Complex(-1,10)),
-                    (Complex(1), Complex(0,10), Complex(1,-10)),
-            ],
-            'a*b': [
-                    (1, 10, 10),
-                    (1, Complex(0,10), Complex(0, 10)),
-                    (Complex(0,10), 1, Complex(0,10)),
-                    (Complex(0,10), Complex(1), Complex(0,10)),
-                    (Complex(1), Complex(0,10), Complex(0,10)),
-            ],
-            'a/b': [
-                    (1., 10, 0.1),
-                    (1, Complex(0,10), Complex(0, -0.1)),
-                    (Complex(0, 10), 1, Complex(0, 10)),
-                    (Complex(0, 10), Complex(1), Complex(0, 10)),
-                    (Complex(1), Complex(0,10), Complex(0, -0.1)),
-            ],
-            'pow(a,b)': [
-                    (1, 10, 1),
-                    (1, Complex(0,10), 1),
-                    (Complex(0,10), 1, Complex(0,10)),
-                    (Complex(0,10), Complex(1), Complex(0,10)),
-                    (Complex(1), Complex(0,10), 1),
-                    (2, Complex(4,0), 16),
-            ],
-            'cmp(a,b)': [
-                    (1, 10, -1),
-                    (1, Complex(0,10), 1),
-                    (Complex(0,10), 1, -1),
-                    (Complex(0,10), Complex(1), -1),
-                    (Complex(1), Complex(0,10), 1),
-            ],
-    }
-    for expr in sorted(testsuite):
-        print expr + ':'
-        t = (expr,)
-        for item in testsuite[expr]:
-            checkop(*(t+item))
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Dates.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Dates.py
deleted file mode 100644
index 9c13f4c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Dates.py
+++ /dev/null
@@ -1,227 +0,0 @@
-# Class Date supplies date objects that support date arithmetic.
-#
-# Date(month,day,year) returns a Date object.  An instance prints as,
-# e.g., 'Mon 16 Aug 1993'.
-#
-# Addition, subtraction, comparison operators, min, max, and sorting
-# all work as expected for date objects:  int+date or date+int returns
-# the date `int' days from `date'; date+date raises an exception;
-# date-int returns the date `int' days before `date'; date2-date1 returns
-# an integer, the number of days from date1 to date2; int-date raises an
-# exception; date1 < date2 is true iff date1 occurs before date2 (&
-# similarly for other comparisons); min(date1,date2) is the earlier of
-# the two dates and max(date1,date2) the later; and date objects can be
-# used as dictionary keys.
-#
-# Date objects support one visible method, date.weekday().  This returns
-# the day of the week the date falls on, as a string.
-#
-# Date objects also have 4 read-only data attributes:
-#   .month  in 1..12
-#   .day    in 1..31
-#   .year   int or long int
-#   .ord    the ordinal of the date relative to an arbitrary staring point
-#
-# The Dates module also supplies function today(), which returns the
-# current date as a date object.
-#
-# Those entranced by calendar trivia will be disappointed, as no attempt
-# has been made to accommodate the Julian (etc) system.  On the other
-# hand, at least this package knows that 2000 is a leap year but 2100
-# isn't, and works fine for years with a hundred decimal digits <wink>.
-
-# Tim Peters   tim@ksr.com
-# not speaking for Kendall Square Research Corp
-
-# Adapted to Python 1.1 (where some hacks to overcome coercion are unnecessary)
-# by Guido van Rossum
-
-# Note that as of Python 2.3, a datetime module is included in the stardard
-# library.
-
-# vi:set tabsize=8:
-
-_MONTH_NAMES = [ 'January', 'February', 'March', 'April', 'May',
-                 'June', 'July', 'August', 'September', 'October',
-                 'November', 'December' ]
-
-_DAY_NAMES = [ 'Friday', 'Saturday', 'Sunday', 'Monday',
-               'Tuesday', 'Wednesday', 'Thursday' ]
-
-_DAYS_IN_MONTH = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]
-
-_DAYS_BEFORE_MONTH = []
-dbm = 0
-for dim in _DAYS_IN_MONTH:
-    _DAYS_BEFORE_MONTH.append(dbm)
-    dbm = dbm + dim
-del dbm, dim
-
-_INT_TYPES = type(1), type(1L)
-
-def _is_leap(year):           # 1 if leap year, else 0
-    if year % 4 != 0: return 0
-    if year % 400 == 0: return 1
-    return year % 100 != 0
-
-def _days_in_year(year):      # number of days in year
-    return 365 + _is_leap(year)
-
-def _days_before_year(year):  # number of days before year
-    return year*365L + (year+3)//4 - (year+99)//100 + (year+399)//400
-
-def _days_in_month(month, year):      # number of days in month of year
-    if month == 2 and _is_leap(year): return 29
-    return _DAYS_IN_MONTH[month-1]
-
-def _days_before_month(month, year):  # number of days in year before month
-    return _DAYS_BEFORE_MONTH[month-1] + (month > 2 and _is_leap(year))
-
-def _date2num(date):          # compute ordinal of date.month,day,year
-    return _days_before_year(date.year) + \
-           _days_before_month(date.month, date.year) + \
-           date.day
-
-_DI400Y = _days_before_year(400)      # number of days in 400 years
-
-def _num2date(n):             # return date with ordinal n
-    if type(n) not in _INT_TYPES:
-        raise TypeError, 'argument must be integer: %r' % type(n)
-
-    ans = Date(1,1,1)   # arguments irrelevant; just getting a Date obj
-    del ans.ord, ans.month, ans.day, ans.year # un-initialize it
-    ans.ord = n
-
-    n400 = (n-1)//_DI400Y                # # of 400-year blocks preceding
-    year, n = 400 * n400, n - _DI400Y * n400
-    more = n // 365
-    dby = _days_before_year(more)
-    if dby >= n:
-        more = more - 1
-        dby = dby - _days_in_year(more)
-    year, n = year + more, int(n - dby)
-
-    try: year = int(year)               # chop to int, if it fits
-    except (ValueError, OverflowError): pass
-
-    month = min(n//29 + 1, 12)
-    dbm = _days_before_month(month, year)
-    if dbm >= n:
-        month = month - 1
-        dbm = dbm - _days_in_month(month, year)
-
-    ans.month, ans.day, ans.year = month, n-dbm, year
-    return ans
-
-def _num2day(n):      # return weekday name of day with ordinal n
-    return _DAY_NAMES[ int(n % 7) ]
-
-
-class Date:
-    def __init__(self, month, day, year):
-        if not 1 <= month <= 12:
-            raise ValueError, 'month must be in 1..12: %r' % (month,)
-        dim = _days_in_month(month, year)
-        if not 1 <= day <= dim:
-            raise ValueError, 'day must be in 1..%r: %r' % (dim, day)
-        self.month, self.day, self.year = month, day, year
-        self.ord = _date2num(self)
-
-    # don't allow setting existing attributes
-    def __setattr__(self, name, value):
-        if self.__dict__.has_key(name):
-            raise AttributeError, 'read-only attribute ' + name
-        self.__dict__[name] = value
-
-    def __cmp__(self, other):
-        return cmp(self.ord, other.ord)
-
-    # define a hash function so dates can be used as dictionary keys
-    def __hash__(self):
-        return hash(self.ord)
-
-    # print as, e.g., Mon 16 Aug 1993
-    def __repr__(self):
-        return '%.3s %2d %.3s %r' % (
-              self.weekday(),
-              self.day,
-              _MONTH_NAMES[self.month-1],
-              self.year)
-
-    # Python 1.1 coerces neither int+date nor date+int
-    def __add__(self, n):
-        if type(n) not in _INT_TYPES:
-            raise TypeError, 'can\'t add %r to date' % type(n)
-        return _num2date(self.ord + n)
-    __radd__ = __add__ # handle int+date
-
-    # Python 1.1 coerces neither date-int nor date-date
-    def __sub__(self, other):
-        if type(other) in _INT_TYPES:           # date-int
-            return _num2date(self.ord - other)
-        else:
-            return self.ord - other.ord         # date-date
-
-    # complain about int-date
-    def __rsub__(self, other):
-        raise TypeError, 'Can\'t subtract date from integer'
-
-    def weekday(self):
-        return _num2day(self.ord)
-
-def today():
-    import time
-    local = time.localtime(time.time())
-    return Date(local[1], local[2], local[0])
-
-class DateTestError(Exception):
-    pass
-
-def test(firstyear, lastyear):
-    a = Date(9,30,1913)
-    b = Date(9,30,1914)
-    if repr(a) != 'Tue 30 Sep 1913':
-        raise DateTestError, '__repr__ failure'
-    if (not a < b) or a == b or a > b or b != b:
-        raise DateTestError, '__cmp__ failure'
-    if a+365 != b or 365+a != b:
-        raise DateTestError, '__add__ failure'
-    if b-a != 365 or b-365 != a:
-        raise DateTestError, '__sub__ failure'
-    try:
-        x = 1 - a
-        raise DateTestError, 'int-date should have failed'
-    except TypeError:
-        pass
-    try:
-        x = a + b
-        raise DateTestError, 'date+date should have failed'
-    except TypeError:
-        pass
-    if a.weekday() != 'Tuesday':
-        raise DateTestError, 'weekday() failure'
-    if max(a,b) is not b or min(a,b) is not a:
-        raise DateTestError, 'min/max failure'
-    d = {a-1:b, b:a+1}
-    if d[b-366] != b or d[a+(b-a)] != Date(10,1,1913):
-        raise DateTestError, 'dictionary failure'
-
-    # verify date<->number conversions for first and last days for
-    # all years in firstyear .. lastyear
-
-    lord = _days_before_year(firstyear)
-    y = firstyear
-    while y <= lastyear:
-        ford = lord + 1
-        lord = ford + _days_in_year(y) - 1
-        fd, ld = Date(1,1,y), Date(12,31,y)
-        if (fd.ord,ld.ord) != (ford,lord):
-            raise DateTestError, ('date->num failed', y)
-        fd, ld = _num2date(ford), _num2date(lord)
-        if (1,1,y,12,31,y) != \
-           (fd.month,fd.day,fd.year,ld.month,ld.day,ld.year):
-            raise DateTestError, ('num->date failed', y)
-        y = y + 1
-
-if __name__ == '__main__':
-    test(1850, 2150)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Dbm.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Dbm.py
deleted file mode 100644
index 7bcb257..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Dbm.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# A wrapper around the (optional) built-in class dbm, supporting keys
-# and values of almost any type instead of just string.
-# (Actually, this works only for keys and values that can be read back
-# correctly after being converted to a string.)
-
-
-class Dbm:
-
-    def __init__(self, filename, mode, perm):
-        import dbm
-        self.db = dbm.open(filename, mode, perm)
-
-    def __repr__(self):
-        s = ''
-        for key in self.keys():
-            t = repr(key) + ': ' + repr(self[key])
-            if s: t = ', ' + t
-            s = s + t
-        return '{' + s + '}'
-
-    def __len__(self):
-        return len(self.db)
-
-    def __getitem__(self, key):
-        return eval(self.db[repr(key)])
-
-    def __setitem__(self, key, value):
-        self.db[repr(key)] = repr(value)
-
-    def __delitem__(self, key):
-        del self.db[repr(key)]
-
-    def keys(self):
-        res = []
-        for key in self.db.keys():
-            res.append(eval(key))
-        return res
-
-    def has_key(self, key):
-        return self.db.has_key(repr(key))
-
-
-def test():
-    d = Dbm('@dbm', 'rw', 0600)
-    print d
-    while 1:
-        try:
-            key = input('key: ')
-            if d.has_key(key):
-                value = d[key]
-                print 'currently:', value
-            value = input('value: ')
-            if value is None:
-                del d[key]
-            else:
-                d[key] = value
-        except KeyboardInterrupt:
-            print ''
-            print d
-        except EOFError:
-            print '[eof]'
-            break
-    print d
-
-
-test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/README b/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/README
deleted file mode 100644
index 8fc839a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/README
+++ /dev/null
@@ -1,12 +0,0 @@
-Examples of classes that implement special operators (see reference manual):
-
-Complex.py	Complex numbers
-Dates.py	Date manipulation package by Tim Peters
-Dbm.py		Wrapper around built-in dbm, supporting	arbitrary values
-Range.py	Example of a generator: re-implement built-in range()
-Rev.py		Yield the reverse of a sequence
-Vec.py		A simple vector class
-bitvec.py	A bit-vector class by Jan-Hein B\"uhrman
-
-(For straightforward examples of basic class features, such as use of
-methods and inheritance, see the library code.)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Range.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Range.py
deleted file mode 100644
index b0ce5cb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Range.py
+++ /dev/null
@@ -1,93 +0,0 @@
-"""Example of a generator: re-implement the built-in range function
-without actually constructing the list of values.
-
-OldStyleRange is coded in the way required to work in a 'for' loop before
-iterators were introduced into the language; using __getitem__ and __len__ .
-
-"""
-def handleargs(arglist):
-    """Take list of arguments and extract/create proper start, stop, and step
-    values and return in a tuple"""
-    try:
-        if len(arglist) == 1:
-            return 0, int(arglist[0]), 1
-        elif len(arglist) == 2:
-            return int(arglist[0]), int(arglist[1]), 1
-        elif len(arglist) == 3:
-            if arglist[2] == 0:
-                raise ValueError("step argument must not be zero")
-            return tuple(int(x) for x in arglist)
-        else:
-            raise TypeError("range() accepts 1-3 arguments, given", len(arglist))
-    except TypeError:
-        raise TypeError("range() arguments must be numbers or strings "
-        "representing numbers")
-
-def genrange(*a):
-    """Function to implement 'range' as a generator"""
-    start, stop, step = handleargs(a)
-    value = start
-    while value < stop:
-        yield value
-        value += step
-
-class oldrange:
-    """Class implementing a range object.
-    To the user the instances feel like immutable sequences
-    (and you can't concatenate or slice them)
-
-    Done using the old way (pre-iterators; __len__ and __getitem__) to have an
-    object be used by a 'for' loop.
-
-    """
-
-    def __init__(self, *a):
-        """ Initialize start, stop, and step values along with calculating the
-        nubmer of values (what __len__ will return) in the range"""
-        self.start, self.stop, self.step = handleargs(a)
-        self.len = max(0, (self.stop - self.start) // self.step)
-
-    def __repr__(self):
-        """implement repr(x) which is also used by print"""
-        return 'range(%r, %r, %r)' % (self.start, self.stop, self.step)
-
-    def __len__(self):
-        """implement len(x)"""
-        return self.len
-
-    def __getitem__(self, i):
-        """implement x[i]"""
-        if 0 <= i <= self.len:
-            return self.start + self.step * i
-        else:
-            raise IndexError, 'range[i] index out of range'
-
-
-def test():
-    import time, __builtin__
-    #Just a quick sanity check
-    correct_result = __builtin__.range(5, 100, 3)
-    oldrange_result = list(oldrange(5, 100, 3))
-    genrange_result = list(genrange(5, 100, 3))
-    if genrange_result != correct_result or oldrange_result != correct_result:
-        raise Exception("error in implementation:\ncorrect   = %s"
-                         "\nold-style = %s\ngenerator = %s" %
-                         (correct_result, oldrange_result, genrange_result))
-    print "Timings for range(1000):"
-    t1 = time.time()
-    for i in oldrange(1000):
-        pass
-    t2 = time.time()
-    for i in genrange(1000):
-        pass
-    t3 = time.time()
-    for i in __builtin__.range(1000):
-        pass
-    t4 = time.time()
-    print t2-t1, 'sec (old-style class)'
-    print t3-t2, 'sec (generator)'
-    print t4-t3, 'sec (built-in)'
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Rev.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Rev.py
deleted file mode 100644
index a509e70..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Rev.py
+++ /dev/null
@@ -1,95 +0,0 @@
-'''
-A class which presents the reverse of a sequence without duplicating it.
-From: "Steven D. Majewski" <sdm7g@elvis.med.virginia.edu>
-
-It works on mutable or inmutable sequences.
-
->>> chars = list(Rev('Hello World!'))
->>> print ''.join(chars)
-!dlroW olleH
-
-The .forw is so you can use anonymous sequences in __init__, and still
-keep a reference the forward sequence. )
-If you give it a non-anonymous mutable sequence, the reverse sequence
-will track the updated values. ( but not reassignment! - another
-good reason to use anonymous values in creating the sequence to avoid
-confusion. Maybe it should be change to copy input sequence to break
-the connection completely ? )
-
->>> nnn = range(3)
->>> rnn = Rev(nnn)
->>> for n in rnn: print n
-...
-2
-1
-0
->>> for n in range(4, 6): nnn.append(n)   # update nnn
-...
->>> for n in rnn: print n     # prints reversed updated values
-...
-5
-4
-2
-1
-0
->>> nnn = nnn[1:-1]
->>> nnn
-[1, 2, 4]
->>> for n in rnn: print n     # prints reversed values of old nnn
-...
-5
-4
-2
-1
-0
-
-#
->>> WH = Rev('Hello World!')
->>> print WH.forw, WH.back
-Hello World! !dlroW olleH
->>> nnn = Rev(range(1, 10))
->>> print nnn.forw
-[1, 2, 3, 4, 5, 6, 7, 8, 9]
->>> print nnn.back
-[9, 8, 7, 6, 5, 4, 3, 2, 1]
-
->>> rrr = Rev(nnn)
->>> rrr
-<1, 2, 3, 4, 5, 6, 7, 8, 9>
-
-'''
-
-class Rev:
-    def __init__(self, seq):
-        self.forw = seq
-        self.back = self
-
-    def __len__(self):
-        return len(self.forw)
-
-    def __getitem__(self, j):
-        return self.forw[-(j + 1)]
-
-    def __repr__(self):
-        seq = self.forw
-        if isinstance(seq, list):
-            wrap = '[]'
-            sep = ', '
-        elif isinstance(seq, tuple):
-            wrap = '()'
-            sep = ', '
-        elif isinstance(seq, str):
-            wrap = ''
-            sep = ''
-        else:
-            wrap = '<>'
-            sep = ', '
-        outstrs = [str(item) for item in self.back]
-        return wrap[:1] + sep.join(outstrs) + wrap[-1:]
-
-def _test():
-    import doctest, Rev
-    return doctest.testmod(Rev)
-
-if __name__ == "__main__":
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Vec.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Vec.py
deleted file mode 100644
index a5834e9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/Vec.py
+++ /dev/null
@@ -1,68 +0,0 @@
-class Vec:
-    """ A simple vector class
-
-    Instances of the Vec class  can be constructed from numbers
-
-    >>> a = Vec(1, 2, 3)
-    >>> b = Vec(3, 2, 1)
-
-    added
-    >>> a + b
-    Vec(4, 4, 4)
-
-    subtracted
-    >>> a - b
-    Vec(-2, 0, 2)
-
-    and multiplied by a scalar on the left
-    >>> 3.0 * a
-    Vec(3.0, 6.0, 9.0)
-
-    or on the right
-    >>> a * 3.0
-    Vec(3.0, 6.0, 9.0)
-    """
-    def __init__(self, *v):
-        self.v = list(v)
-
-    @classmethod
-    def fromlist(cls, v):
-        if not isinstance(v, list):
-            raise TypeError
-        inst = cls()
-        inst.v = v
-        return inst
-
-    def __repr__(self):
-        args = ', '.join(repr(x) for x in self.v)
-        return 'Vec({0})'.format(args)
-
-    def __len__(self):
-        return len(self.v)
-
-    def __getitem__(self, i):
-        return self.v[i]
-
-    def __add__(self, other):
-        # Element-wise addition
-        v = [x + y for x, y in zip(self.v, other.v)]
-        return Vec.fromlist(v)
-
-    def __sub__(self, other):
-        # Element-wise subtraction
-        v = [x - y for x, y in zip(self.v, other.v)]
-        return Vec.fromlist(v)
-
-    def __mul__(self, scalar):
-        # Multiply by scalar
-        v = [x * scalar for x in self.v]
-        return Vec.fromlist(v)
-
-    __rmul__ = __mul__
-
-
-def test():
-    import doctest
-    doctest.testmod()
-
-test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/bitvec.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/bitvec.py
deleted file mode 100644
index 86805e1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/classes/bitvec.py
+++ /dev/null
@@ -1,333 +0,0 @@
-#
-# this is a rather strict implementation of a bit vector class
-# it is accessed the same way as an array of python-ints, except
-# the value must be 0 or 1
-#
-
-import sys; rprt = sys.stderr.write #for debugging
-
-class error(Exception):
-    pass
-
-
-def _check_value(value):
-    if type(value) != type(0) or not 0 <= value < 2:
-        raise error, 'bitvec() items must have int value 0 or 1'
-
-
-import math
-
-def _compute_len(param):
-    mant, l = math.frexp(float(param))
-    bitmask = 1L << l
-    if bitmask <= param:
-        raise RuntimeError('(param, l) = %r' % ((param, l),))
-    while l:
-        bitmask = bitmask >> 1
-        if param & bitmask:
-            break
-        l = l - 1
-    return l
-
-
-def _check_key(len, key):
-    if type(key) != type(0):
-        raise TypeError, 'sequence subscript not int'
-    if key < 0:
-        key = key + len
-    if not 0 <= key < len:
-        raise IndexError, 'list index out of range'
-    return key
-
-def _check_slice(len, i, j):
-    #the type is ok, Python already checked that
-    i, j = max(i, 0), min(len, j)
-    if i > j:
-        i = j
-    return i, j
-
-
-class BitVec:
-
-    def __init__(self, *params):
-        self._data = 0L
-        self._len = 0
-        if not len(params):
-            pass
-        elif len(params) == 1:
-            param, = params
-            if type(param) == type([]):
-                value = 0L
-                bit_mask = 1L
-                for item in param:
-                    # strict check
-                    #_check_value(item)
-                    if item:
-                        value = value | bit_mask
-                    bit_mask = bit_mask << 1
-                self._data = value
-                self._len = len(param)
-            elif type(param) == type(0L):
-                if param < 0:
-                    raise error, 'bitvec() can\'t handle negative longs'
-                self._data = param
-                self._len = _compute_len(param)
-            else:
-                raise error, 'bitvec() requires array or long parameter'
-        elif len(params) == 2:
-            param, length = params
-            if type(param) == type(0L):
-                if param < 0:
-                    raise error, \
-                      'can\'t handle negative longs'
-                self._data = param
-                if type(length) != type(0):
-                    raise error, 'bitvec()\'s 2nd parameter must be int'
-                computed_length = _compute_len(param)
-                if computed_length > length:
-                    print 'warning: bitvec() value is longer than the length indicates, truncating value'
-                    self._data = self._data & \
-                              ((1L << length) - 1)
-                self._len = length
-            else:
-                raise error, 'bitvec() requires array or long parameter'
-        else:
-            raise error, 'bitvec() requires 0 -- 2 parameter(s)'
-
-
-    def append(self, item):
-        #_check_value(item)
-        #self[self._len:self._len] = [item]
-        self[self._len:self._len] = \
-                  BitVec(long(not not item), 1)
-
-
-    def count(self, value):
-        #_check_value(value)
-        if value:
-            data = self._data
-        else:
-            data = (~self)._data
-        count = 0
-        while data:
-            data, count = data >> 1, count + (data & 1 != 0)
-        return count
-
-
-    def index(self, value):
-        #_check_value(value):
-        if value:
-            data = self._data
-        else:
-            data = (~self)._data
-        index = 0
-        if not data:
-            raise ValueError, 'list.index(x): x not in list'
-        while not (data & 1):
-            data, index = data >> 1, index + 1
-        return index
-
-
-    def insert(self, index, item):
-        #_check_value(item)
-        #self[index:index] = [item]
-        self[index:index] = BitVec(long(not not item), 1)
-
-
-    def remove(self, value):
-        del self[self.index(value)]
-
-
-    def reverse(self):
-        #ouch, this one is expensive!
-        #for i in self._len>>1: self[i], self[l-i] = self[l-i], self[i]
-        data, result = self._data, 0L
-        for i in range(self._len):
-            if not data:
-                result = result << (self._len - i)
-                break
-            result, data = (result << 1) | (data & 1), data >> 1
-        self._data = result
-
-
-    def sort(self):
-        c = self.count(1)
-        self._data = ((1L << c) - 1) << (self._len - c)
-
-
-    def copy(self):
-        return BitVec(self._data, self._len)
-
-
-    def seq(self):
-        result = []
-        for i in self:
-            result.append(i)
-        return result
-
-
-    def __repr__(self):
-        ##rprt('<bitvec class instance object>.' + '__repr__()\n')
-        return 'bitvec(%r, %r)' % (self._data, self._len)
-
-    def __cmp__(self, other, *rest):
-        #rprt('%r.__cmp__%r\n' % (self, (other,) + rest))
-        if type(other) != type(self):
-            other = apply(bitvec, (other, ) + rest)
-        #expensive solution... recursive binary, with slicing
-        length = self._len
-        if length == 0 or other._len == 0:
-            return cmp(length, other._len)
-        if length != other._len:
-            min_length = min(length, other._len)
-            return cmp(self[:min_length], other[:min_length]) or \
-                      cmp(self[min_length:], other[min_length:])
-        #the lengths are the same now...
-        if self._data == other._data:
-            return 0
-        if length == 1:
-            return cmp(self[0], other[0])
-        else:
-            length = length >> 1
-            return cmp(self[:length], other[:length]) or \
-                      cmp(self[length:], other[length:])
-
-
-    def __len__(self):
-        #rprt('%r.__len__()\n' % (self,))
-        return self._len
-
-    def __getitem__(self, key):
-        #rprt('%r.__getitem__(%r)\n' % (self, key))
-        key = _check_key(self._len, key)
-        return self._data & (1L << key) != 0
-
-    def __setitem__(self, key, value):
-        #rprt('%r.__setitem__(%r, %r)\n' % (self, key, value))
-        key = _check_key(self._len, key)
-        #_check_value(value)
-        if value:
-            self._data = self._data | (1L << key)
-        else:
-            self._data = self._data & ~(1L << key)
-
-    def __delitem__(self, key):
-        #rprt('%r.__delitem__(%r)\n' % (self, key))
-        key = _check_key(self._len, key)
-        #el cheapo solution...
-        self._data = self[:key]._data | self[key+1:]._data >> key
-        self._len = self._len - 1
-
-    def __getslice__(self, i, j):
-        #rprt('%r.__getslice__(%r, %r)\n' % (self, i, j))
-        i, j = _check_slice(self._len, i, j)
-        if i >= j:
-            return BitVec(0L, 0)
-        if i:
-            ndata = self._data >> i
-        else:
-            ndata = self._data
-        nlength = j - i
-        if j != self._len:
-            #we'll have to invent faster variants here
-            #e.g. mod_2exp
-            ndata = ndata & ((1L << nlength) - 1)
-        return BitVec(ndata, nlength)
-
-    def __setslice__(self, i, j, sequence, *rest):
-        #rprt('%s.__setslice__%r\n' % (self, (i, j, sequence) + rest))
-        i, j = _check_slice(self._len, i, j)
-        if type(sequence) != type(self):
-            sequence = apply(bitvec, (sequence, ) + rest)
-        #sequence is now of our own type
-        ls_part = self[:i]
-        ms_part = self[j:]
-        self._data = ls_part._data | \
-                  ((sequence._data | \
-                  (ms_part._data << sequence._len)) << ls_part._len)
-        self._len = self._len - j + i + sequence._len
-
-    def __delslice__(self, i, j):
-        #rprt('%r.__delslice__(%r, %r)\n' % (self, i, j))
-        i, j = _check_slice(self._len, i, j)
-        if i == 0 and j == self._len:
-            self._data, self._len = 0L, 0
-        elif i < j:
-            self._data = self[:i]._data | (self[j:]._data >> i)
-            self._len = self._len - j + i
-
-    def __add__(self, other):
-        #rprt('%r.__add__(%r)\n' % (self, other))
-        retval = self.copy()
-        retval[self._len:self._len] = other
-        return retval
-
-    def __mul__(self, multiplier):
-        #rprt('%r.__mul__(%r)\n' % (self, multiplier))
-        if type(multiplier) != type(0):
-            raise TypeError, 'sequence subscript not int'
-        if multiplier <= 0:
-            return BitVec(0L, 0)
-        elif multiplier == 1:
-            return self.copy()
-        #handle special cases all 0 or all 1...
-        if self._data == 0L:
-            return BitVec(0L, self._len * multiplier)
-        elif (~self)._data == 0L:
-            return ~BitVec(0L, self._len * multiplier)
-        #otherwise el cheapo again...
-        retval = BitVec(0L, 0)
-        while multiplier:
-            retval, multiplier = retval + self, multiplier - 1
-        return retval
-
-    def __and__(self, otherseq, *rest):
-        #rprt('%r.__and__%r\n' % (self, (otherseq,) + rest))
-        if type(otherseq) != type(self):
-            otherseq = apply(bitvec, (otherseq, ) + rest)
-        #sequence is now of our own type
-        return BitVec(self._data & otherseq._data, \
-                  min(self._len, otherseq._len))
-
-
-    def __xor__(self, otherseq, *rest):
-        #rprt('%r.__xor__%r\n' % (self, (otherseq,) + rest))
-        if type(otherseq) != type(self):
-            otherseq = apply(bitvec, (otherseq, ) + rest)
-        #sequence is now of our own type
-        return BitVec(self._data ^ otherseq._data, \
-                  max(self._len, otherseq._len))
-
-
-    def __or__(self, otherseq, *rest):
-        #rprt('%r.__or__%r\n' % (self, (otherseq,) + rest))
-        if type(otherseq) != type(self):
-            otherseq = apply(bitvec, (otherseq, ) + rest)
-        #sequence is now of our own type
-        return BitVec(self._data | otherseq._data, \
-                  max(self._len, otherseq._len))
-
-
-    def __invert__(self):
-        #rprt('%r.__invert__()\n' % (self,))
-        return BitVec(~self._data & ((1L << self._len) - 1), \
-                  self._len)
-
-    def __coerce__(self, otherseq, *rest):
-        #needed for *some* of the arithmetic operations
-        #rprt('%r.__coerce__%r\n' % (self, (otherseq,) + rest))
-        if type(otherseq) != type(self):
-            otherseq = apply(bitvec, (otherseq, ) + rest)
-        return self, otherseq
-
-    def __int__(self):
-        return int(self._data)
-
-    def __long__(self):
-        return long(self._data)
-
-    def __float__(self):
-        return float(self._data)
-
-
-bitvec = BitVec
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/README b/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/README
deleted file mode 100644
index af86feb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/README
+++ /dev/null
@@ -1,60 +0,0 @@
-Subject: Re: What language would you use?
-From: Tom Christiansen <tchrist@mox.perl.com>
-Date: 6 Nov 1994 15:14:51 GMT
-Newsgroups: comp.lang.python,comp.lang.tcl,comp.lang.scheme,comp.lang.misc,comp.lang.perl
-Message-Id: <39irtb$3t4@csnews.cs.Colorado.EDU>
-References: <39b7ha$j9v@zeno.nscf.org> <39hhjp$lgn@csnews.cs.Colorado.EDU> <39hvsu$dus@mathserv.mps.ohio-state.edu>
-
-[...]
-If you're really into benchmarks, I'd love it if someone were to code up
-the following problems in tcl, python, and scheme (and whatever else you'd
-like).  Separate versions (one optimized for speed, one for beauty :-) are
-ok.  Post your code so we can time it on our own systems.
-
-0)  Factorial Test  (numerics and function calls)
-
-        (we did this already)
-
-1)  Regular Expressions Test
-
-    Read a file of (extended per egrep) regular expressions (one per line), 
-    and apply those to all files whose names are listed on the command line.
-    Basically, an 'egrep -f' simulator.  Test it with 20 "vt100" patterns
-    against a five /etc/termcap files.  Tests using more elaborate patters
-    would also be interesting.  Your code should not break if given hundreds
-    of regular expressions or binary files to scan.  
-
-2)  Sorting Test
-
-    Sort an input file that consists of lines like this
-
-        var1=23 other=14 ditto=23 fred=2
-
-    such that each output line is sorted WRT to the number.  Order
-    of output lines does not change.  Resolve collisions using the
-    variable name.   e.g.
-
-        fred=2 other=14 ditto=23 var1=23 
-
-    Lines may be up to several kilobytes in length and contain
-    zillions of variables.
-
-3)  System Test
-
-    Given a list of directories, report any bogus symbolic links contained
-    anywhere in those subtrees.  A bogus symbolic link is one that cannot
-    be resolved because it points to a nonexistent or otherwise
-    unresolvable file.  Do *not* use an external find executable.
-    Directories may be very very deep.  Print a warning immediately if the
-    system you're running on doesn't support symbolic links.
-
-
-I'll post perl solutions if people post the others.
-
-
---tom
--- 
-Tom Christiansen      Perl Consultant, Gamer, Hiker      tchrist@mox.perl.com
-
- "But Billy! A *small* allowance prepares you for a lifetime of small
- salaries and for your Social Security payments."    --Family Circus
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/patterns b/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/patterns
deleted file mode 100644
index 11ec3fa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/patterns
+++ /dev/null
@@ -1,4 +0,0 @@
-^def 
-^class 
-^import 
-^from 
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/regextest.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/regextest.py
deleted file mode 100644
index 19617a3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/regextest.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /usr/bin/env python
-
-# 1)  Regular Expressions Test
-#
-#     Read a file of (extended per egrep) regular expressions (one per line),
-#     and apply those to all files whose names are listed on the command line.
-#     Basically, an 'egrep -f' simulator.  Test it with 20 "vt100" patterns
-#     against a five /etc/termcap files.  Tests using more elaborate patters
-#     would also be interesting.  Your code should not break if given hundreds
-#     of regular expressions or binary files to scan.
-
-# This implementation:
-# - combines all patterns into a single one using ( ... | ... | ... )
-# - reads patterns from stdin, scans files given as command line arguments
-# - produces output in the format <file>:<lineno>:<line>
-# - is only about 2.5 times as slow as egrep (though I couldn't run
-#   Tom's test -- this system, a vanilla SGI, only has /etc/terminfo)
-
-import string
-import sys
-import re
-
-def main():
-    pats = map(chomp, sys.stdin.readlines())
-    bigpat = '(' + '|'.join(pats) + ')'
-    prog = re.compile(bigpat)
-
-    for file in sys.argv[1:]:
-        try:
-            fp = open(file, 'r')
-        except IOError, msg:
-            print "%s: %s" % (file, msg)
-            continue
-        lineno = 0
-        while 1:
-            line = fp.readline()
-            if not line:
-                break
-            lineno = lineno + 1
-            if prog.search(line):
-                print "%s:%s:%s" % (file, lineno, line),
-
-def chomp(s):
-    return s.rstrip('\n')
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/sortingtest.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/sortingtest.py
deleted file mode 100644
index e19f63e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/sortingtest.py
+++ /dev/null
@@ -1,45 +0,0 @@
-#! /usr/bin/env python
-
-# 2)  Sorting Test
-#
-#     Sort an input file that consists of lines like this
-#
-#         var1=23 other=14 ditto=23 fred=2
-#
-#     such that each output line is sorted WRT to the number.  Order
-#     of output lines does not change.  Resolve collisions using the
-#     variable name.   e.g.
-#
-#         fred=2 other=14 ditto=23 var1=23
-#
-#     Lines may be up to several kilobytes in length and contain
-#     zillions of variables.
-
-# This implementation:
-# - Reads stdin, writes stdout
-# - Uses any amount of whitespace to separate fields
-# - Allows signed numbers
-# - Treats illegally formatted fields as field=0
-# - Outputs the sorted fields with exactly one space between them
-# - Handles blank input lines correctly
-
-import re
-import sys
-
-def main():
-    prog = re.compile('^(.*)=([-+]?[0-9]+)')
-    def makekey(item, prog=prog):
-        match = prog.match(item)
-        if match:
-            var, num = match.groups()
-            return int(num), var
-        else:
-            # Bad input -- pretend it's a var with value 0
-            return 0, item
-    for line in sys.stdin:
-        items = sorted(makekey(item) for item in line.split())
-        for num, var in items:
-            print "%s=%s" % (var, num),
-        print
-
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/systemtest.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/systemtest.py
deleted file mode 100644
index a715fe0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/comparisons/systemtest.py
+++ /dev/null
@@ -1,74 +0,0 @@
-#! /usr/bin/env python
-
-# 3)  System Test
-#
-#     Given a list of directories, report any bogus symbolic links contained
-#     anywhere in those subtrees.  A bogus symbolic link is one that cannot
-#     be resolved because it points to a nonexistent or otherwise
-#     unresolvable file.  Do *not* use an external find executable.
-#     Directories may be very very deep.  Print a warning immediately if the
-#     system you're running on doesn't support symbolic links.
-
-# This implementation:
-# - takes one optional argument, using the current directory as default
-# - uses chdir to increase performance
-# - sorts the names per directory
-# - prints output lines of the form "path1 -> path2" as it goes
-# - prints error messages about directories it can't list or chdir into
-
-import os
-import sys
-from stat import *
-
-def main():
-    try:
-        # Note: can't test for presence of lstat -- it's always there
-        dummy = os.readlink
-    except AttributeError:
-        print "This system doesn't have symbolic links"
-        sys.exit(0)
-    if sys.argv[1:]:
-        prefix = sys.argv[1]
-    else:
-        prefix = ''
-    if prefix:
-        os.chdir(prefix)
-        if prefix[-1:] != '/': prefix = prefix + '/'
-        reportboguslinks(prefix)
-    else:
-        reportboguslinks('')
-
-def reportboguslinks(prefix):
-    try:
-        names = os.listdir('.')
-    except os.error, msg:
-        print "%s%s: can't list: %s" % (prefix, '.', msg)
-        return
-    names.sort()
-    for name in names:
-        if name == os.curdir or name == os.pardir:
-            continue
-        try:
-            mode = os.lstat(name)[ST_MODE]
-        except os.error:
-            print "%s%s: can't stat: %s" % (prefix, name, msg)
-            continue
-        if S_ISLNK(mode):
-            try:
-                os.stat(name)
-            except os.error:
-                print "%s%s -> %s" % \
-                      (prefix, name, os.readlink(name))
-        elif S_ISDIR(mode):
-            try:
-                os.chdir(name)
-            except os.error, msg:
-                print "%s%s: can't chdir: %s" % \
-                      (prefix, name, msg)
-                continue
-            try:
-                reportboguslinks(prefix + name + '/')
-            finally:
-                os.chdir('..')
-
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/README b/AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/README
deleted file mode 100644
index 69f6264..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/README
+++ /dev/null
@@ -1,10 +0,0 @@
-This is the Python version of the MD5 test program from the MD5
-Internet Draft (Rivest and Dusse, The MD5 Message-Digest Algorithm, 10
-July 1991).  The file "foo" contains the string "abc" with no trailing
-newline.
-
-When called without arguments, it acts as a filter.  When called with
-"-x", it executes a self-test, and the output should literally match
-the output given in the RFC.
-
-Code by Jan-Hein B\"uhrman after the original in C.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/foo b/AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/foo
deleted file mode 100644
index f2ba8f8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/foo
+++ /dev/null
@@ -1 +0,0 @@
-abc
\ No newline at end of file
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/md5driver.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/md5driver.py
deleted file mode 100644
index ec4323c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/md5test/md5driver.py
+++ /dev/null
@@ -1,123 +0,0 @@
-import string
-import md5
-from sys import argv
-
-def MDPrint(str):
-    outstr = ''
-    for i in str:
-        o = ord(i)
-        outstr = (outstr
-                  + string.hexdigits[(o >> 4) & 0xF]
-                  + string.hexdigits[o & 0xF])
-    print outstr,
-
-
-from time import time
-
-def makestr(start, end):
-    result = ''
-    for i in range(start, end + 1):
-        result = result + chr(i)
-
-    return result
-
-
-def MDTimeTrial():
-    TEST_BLOCK_SIZE = 1000
-    TEST_BLOCKS = 10000
-
-    TEST_BYTES = TEST_BLOCK_SIZE * TEST_BLOCKS
-
-    # initialize test data, need temporary string filler
-
-    filsiz = 1 << 8
-    filler = makestr(0, filsiz-1)
-    data = filler * (TEST_BLOCK_SIZE // filsiz)
-    data = data + filler[:(TEST_BLOCK_SIZE % filsiz)]
-
-    del filsiz, filler
-
-
-    # start timer
-    print 'MD5 time trial. Processing', TEST_BYTES, 'characters...'
-    t1 = time()
-
-    mdContext = md5.new()
-
-    for i in range(TEST_BLOCKS):
-        mdContext.update(data)
-
-    str = mdContext.digest()
-    t2 = time()
-
-    MDPrint(str)
-    print 'is digest of test input.'
-    print 'Seconds to process test input:', t2 - t1
-    print 'Characters processed per second:', TEST_BYTES / (t2 - t1)
-
-
-def MDString(str):
-    MDPrint(md5.new(str).digest())
-    print '"' + str + '"'
-
-
-def MDFile(filename):
-    f = open(filename, 'rb')
-    mdContext = md5.new()
-
-    while 1:
-        data = f.read(1024)
-        if not data:
-            break
-        mdContext.update(data)
-
-    MDPrint(mdContext.digest())
-    print filename
-
-
-import sys
-
-def MDFilter():
-    mdContext = md5.new()
-
-    while 1:
-        data = sys.stdin.read(16)
-        if not data:
-            break
-        mdContext.update(data)
-
-    MDPrint(mdContext.digest())
-    print
-
-
-def MDTestSuite():
-    print 'MD5 test suite results:'
-    MDString('')
-    MDString('a')
-    MDString('abc')
-    MDString('message digest')
-    MDString(makestr(ord('a'), ord('z')))
-    MDString(makestr(ord('A'), ord('Z'))
-              + makestr(ord('a'), ord('z'))
-              + makestr(ord('0'), ord('9')))
-    MDString((makestr(ord('1'), ord('9')) + '0') * 8)
-
-    # Contents of file foo are "abc"
-    MDFile('foo')
-
-
-# I don't wanna use getopt(), since I want to use the same i/f...
-def main():
-    if len(argv) == 1:
-        MDFilter()
-    for arg in argv[1:]:
-        if arg[:2] == '-s':
-            MDString(arg[2:])
-        elif arg == '-t':
-            MDTimeTrial()
-        elif arg == '-x':
-            MDTestSuite()
-        else:
-            MDFile(arg)
-
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Eiffel.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Eiffel.py
deleted file mode 100644
index 732c7be..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Eiffel.py
+++ /dev/null
@@ -1,113 +0,0 @@
-"""Support Eiffel-style preconditions and postconditions.
-
-For example,
-
-class C:
-    def m1(self, arg):
-        require arg > 0
-        return whatever
-        ensure Result > arg
-
-can be written (clumsily, I agree) as:
-
-class C(Eiffel):
-    def m1(self, arg):
-        return whatever
-    def m1_pre(self, arg):
-        assert arg > 0
-    def m1_post(self, Result, arg):
-        assert Result > arg
-
-Pre- and post-conditions for a method, being implemented as methods
-themselves, are inherited independently from the method.  This gives
-much of the same effect of Eiffel, where pre- and post-conditions are
-inherited when a method is overridden by a derived class.  However,
-when a derived class in Python needs to extend a pre- or
-post-condition, it must manually merge the base class' pre- or
-post-condition with that defined in the derived class', for example:
-
-class D(C):
-    def m1(self, arg):
-        return arg**2
-    def m1_post(self, Result, arg):
-        C.m1_post(self, Result, arg)
-        assert Result < 100
-
-This gives derived classes more freedom but also more responsibility
-than in Eiffel, where the compiler automatically takes care of this.
-
-In Eiffel, pre-conditions combine using contravariance, meaning a
-derived class can only make a pre-condition weaker; in Python, this is
-up to the derived class.  For example, a derived class that takes away
-the requirement that arg > 0 could write:
-
-    def m1_pre(self, arg):
-        pass
-
-but one could equally write a derived class that makes a stronger
-requirement:
-
-    def m1_pre(self, arg):
-        require arg > 50
-
-It would be easy to modify the classes shown here so that pre- and
-post-conditions can be disabled (separately, on a per-class basis).
-
-A different design would have the pre- or post-condition testing
-functions return true for success and false for failure.  This would
-make it possible to implement automatic combination of inherited
-and new pre-/post-conditions.  All this is left as an exercise to the
-reader.
-
-"""
-
-from Meta import MetaClass, MetaHelper, MetaMethodWrapper
-
-class EiffelMethodWrapper(MetaMethodWrapper):
-
-    def __init__(self, func, inst):
-        MetaMethodWrapper.__init__(self, func, inst)
-        # Note that the following causes recursive wrappers around
-        # the pre-/post-condition testing methods.  These are harmless
-        # but inefficient; to avoid them, the lookup must be done
-        # using the class.
-        try:
-            self.pre = getattr(inst, self.__name__ + "_pre")
-        except AttributeError:
-            self.pre = None
-        try:
-            self.post = getattr(inst, self.__name__ + "_post")
-        except AttributeError:
-            self.post = None
-
-    def __call__(self, *args, **kw):
-        if self.pre:
-            apply(self.pre, args, kw)
-        Result = apply(self.func, (self.inst,) + args, kw)
-        if self.post:
-            apply(self.post, (Result,) + args, kw)
-        return Result
-
-class EiffelHelper(MetaHelper):
-    __methodwrapper__ = EiffelMethodWrapper
-
-class EiffelMetaClass(MetaClass):
-    __helper__ = EiffelHelper
-
-Eiffel = EiffelMetaClass('Eiffel', (), {})
-
-
-def _test():
-    class C(Eiffel):
-        def m1(self, arg):
-            return arg+1
-        def m1_pre(self, arg):
-            assert arg > 0, "precondition for m1 failed"
-        def m1_post(self, Result, arg):
-            assert Result > arg
-    x = C()
-    x.m1(12)
-##    x.m1(-1)
-
-if __name__ == '__main__':
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Enum.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Enum.py
deleted file mode 100644
index 204f308..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Enum.py
+++ /dev/null
@@ -1,169 +0,0 @@
-"""Enumeration metaclass.
-
-XXX This is very much a work in progress.
-
-"""
-
-import string
-
-class EnumMetaClass:
-    """Metaclass for enumeration.
-
-    To define your own enumeration, do something like
-
-    class Color(Enum):
-        red = 1
-        green = 2
-        blue = 3
-
-    Now, Color.red, Color.green and Color.blue behave totally
-    different: they are enumerated values, not integers.
-
-    Enumerations cannot be instantiated; however they can be
-    subclassed.
-
-    """
-
-    def __init__(self, name, bases, dict):
-        """Constructor -- create an enumeration.
-
-        Called at the end of the class statement.  The arguments are
-        the name of the new class, a tuple containing the base
-        classes, and a dictionary containing everything that was
-        entered in the class' namespace during execution of the class
-        statement.  In the above example, it would be {'red': 1,
-        'green': 2, 'blue': 3}.
-
-        """
-        for base in bases:
-            if base.__class__ is not EnumMetaClass:
-                raise TypeError, "Enumeration base class must be enumeration"
-        bases = filter(lambda x: x is not Enum, bases)
-        self.__name__ = name
-        self.__bases__ = bases
-        self.__dict = {}
-        for key, value in dict.items():
-            self.__dict[key] = EnumInstance(name, key, value)
-
-    def __getattr__(self, name):
-        """Return an enumeration value.
-
-        For example, Color.red returns the value corresponding to red.
-
-        XXX Perhaps the values should be created in the constructor?
-
-        This looks in the class dictionary and if it is not found
-        there asks the base classes.
-
-        The special attribute __members__ returns the list of names
-        defined in this class (it does not merge in the names defined
-        in base classes).
-
-        """
-        if name == '__members__':
-            return self.__dict.keys()
-
-        try:
-            return self.__dict[name]
-        except KeyError:
-            for base in self.__bases__:
-                try:
-                    return getattr(base, name)
-                except AttributeError:
-                    continue
-
-        raise AttributeError, name
-
-    def __repr__(self):
-        s = self.__name__
-        if self.__bases__:
-            s = s + '(' + string.join(map(lambda x: x.__name__,
-                                          self.__bases__), ", ") + ')'
-        if self.__dict:
-            list = []
-            for key, value in self.__dict.items():
-                list.append("%s: %s" % (key, int(value)))
-            s = "%s: {%s}" % (s, string.join(list, ", "))
-        return s
-
-
-class EnumInstance:
-    """Class to represent an enumeration value.
-
-    EnumInstance('Color', 'red', 12) prints as 'Color.red' and behaves
-    like the integer 12 when compared, but doesn't support arithmetic.
-
-    XXX Should it record the actual enumeration rather than just its
-    name?
-
-    """
-
-    def __init__(self, classname, enumname, value):
-        self.__classname = classname
-        self.__enumname = enumname
-        self.__value = value
-
-    def __int__(self):
-        return self.__value
-
-    def __repr__(self):
-        return "EnumInstance(%r, %r, %r)" % (self.__classname,
-                                             self.__enumname,
-                                             self.__value)
-
-    def __str__(self):
-        return "%s.%s" % (self.__classname, self.__enumname)
-
-    def __cmp__(self, other):
-        return cmp(self.__value, int(other))
-
-
-# Create the base class for enumerations.
-# It is an empty enumeration.
-Enum = EnumMetaClass("Enum", (), {})
-
-
-def _test():
-
-    class Color(Enum):
-        red = 1
-        green = 2
-        blue = 3
-
-    print Color.red
-    print dir(Color)
-
-    print Color.red == Color.red
-    print Color.red == Color.blue
-    print Color.red == 1
-    print Color.red == 2
-
-    class ExtendedColor(Color):
-        white = 0
-        orange = 4
-        yellow = 5
-        purple = 6
-        black = 7
-
-    print ExtendedColor.orange
-    print ExtendedColor.red
-
-    print Color.red == ExtendedColor.red
-
-    class OtherColor(Enum):
-        white = 4
-        blue = 5
-
-    class MergedColor(Color, OtherColor):
-        pass
-
-    print MergedColor.red
-    print MergedColor.white
-
-    print Color
-    print ExtendedColor
-    print OtherColor
-    print MergedColor
-
-if __name__ == '__main__':
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Meta.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Meta.py
deleted file mode 100644
index b262a80..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Meta.py
+++ /dev/null
@@ -1,118 +0,0 @@
-"""Generic metaclass.
-
-XXX This is very much a work in progress.
-
-"""
-
-import types
-
-class MetaMethodWrapper:
-
-    def __init__(self, func, inst):
-        self.func = func
-        self.inst = inst
-        self.__name__ = self.func.__name__
-
-    def __call__(self, *args, **kw):
-        return apply(self.func, (self.inst,) + args, kw)
-
-class MetaHelper:
-
-    __methodwrapper__ = MetaMethodWrapper # For derived helpers to override
-
-    def __helperinit__(self, formalclass):
-        self.__formalclass__ = formalclass
-
-    def __getattr__(self, name):
-        # Invoked for any attr not in the instance's __dict__
-        try:
-            raw = self.__formalclass__.__getattr__(name)
-        except AttributeError:
-            try:
-                ga = self.__formalclass__.__getattr__('__usergetattr__')
-            except (KeyError, AttributeError):
-                raise AttributeError, name
-            return ga(self, name)
-        if type(raw) != types.FunctionType:
-            return raw
-        return self.__methodwrapper__(raw, self)
-
-class MetaClass:
-
-    """A generic metaclass.
-
-    This can be subclassed to implement various kinds of meta-behavior.
-
-    """
-
-    __helper__ = MetaHelper             # For derived metaclasses to override
-
-    __inited = 0
-
-    def __init__(self, name, bases, dict):
-        try:
-            ga = dict['__getattr__']
-        except KeyError:
-            pass
-        else:
-            dict['__usergetattr__'] = ga
-            del dict['__getattr__']
-        self.__name__ = name
-        self.__bases__ = bases
-        self.__realdict__ = dict
-        self.__inited = 1
-
-    def __getattr__(self, name):
-        try:
-            return self.__realdict__[name]
-        except KeyError:
-            for base in self.__bases__:
-                try:
-                    return base.__getattr__(name)
-                except AttributeError:
-                    pass
-            raise AttributeError, name
-
-    def __setattr__(self, name, value):
-        if not self.__inited:
-            self.__dict__[name] = value
-        else:
-            self.__realdict__[name] = value
-
-    def __call__(self, *args, **kw):
-        inst = self.__helper__()
-        inst.__helperinit__(self)
-        try:
-            init = inst.__getattr__('__init__')
-        except AttributeError:
-            init = lambda: None
-        apply(init, args, kw)
-        return inst
-
-
-Meta = MetaClass('Meta', (), {})
-
-
-def _test():
-    class C(Meta):
-        def __init__(self, *args):
-            print "__init__, args =", args
-        def m1(self, x):
-            print "m1(x=%r)" % (x,)
-    print C
-    x = C()
-    print x
-    x.m1(12)
-    class D(C):
-        def __getattr__(self, name):
-            if name[:2] == '__': raise AttributeError, name
-            return "getattr:%s" % name
-    x = D()
-    print x.foo
-    print x._foo
-##     print x.__foo
-##     print x.__foo__
-
-
-if __name__ == '__main__':
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Simple.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Simple.py
deleted file mode 100644
index 5334860..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Simple.py
+++ /dev/null
@@ -1,45 +0,0 @@
-import types
-
-class Tracing:
-    def __init__(self, name, bases, namespace):
-        """Create a new class."""
-        self.__name__ = name
-        self.__bases__ = bases
-        self.__namespace__ = namespace
-    def __call__(self):
-        """Create a new instance."""
-        return Instance(self)
-
-class Instance:
-    def __init__(self, klass):
-        self.__klass__ = klass
-    def __getattr__(self, name):
-        try:
-            value = self.__klass__.__namespace__[name]
-        except KeyError:
-            raise AttributeError, name
-        if type(value) is not types.FunctionType:
-            return value
-        return BoundMethod(value, self)
-
-class BoundMethod:
-    def __init__(self, function, instance):
-        self.function = function
-        self.instance = instance
-    def __call__(self, *args):
-        print "calling", self.function, "for", self.instance, "with", args
-        return apply(self.function, (self.instance,) + args)
-
-Trace = Tracing('Trace', (), {})
-
-class MyTracedClass(Trace):
-    def method1(self, a):
-        self.a = a
-    def method2(self):
-        return self.a
-
-aninstance = MyTracedClass()
-
-aninstance.method1(10)
-
-print aninstance.method2()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Synch.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Synch.py
deleted file mode 100644
index d3b3f38..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Synch.py
+++ /dev/null
@@ -1,256 +0,0 @@
-"""Synchronization metaclass.
-
-This metaclass  makes it possible to declare synchronized methods.
-
-"""
-
-import thread
-
-# First we need to define a reentrant lock.
-# This is generally useful and should probably be in a standard Python
-# library module.  For now, we in-line it.
-
-class Lock:
-
-    """Reentrant lock.
-
-    This is a mutex-like object which can be acquired by the same
-    thread more than once.  It keeps a reference count of the number
-    of times it has been acquired by the same thread.  Each acquire()
-    call must be matched by a release() call and only the last
-    release() call actually releases the lock for acquisition by
-    another thread.
-
-    The implementation uses two locks internally:
-
-    __mutex is a short term lock used to protect the instance variables
-    __wait is the lock for which other threads wait
-
-    A thread intending to acquire both locks should acquire __wait
-    first.
-
-   The implementation uses two other instance variables, protected by
-   locking __mutex:
-
-    __tid is the thread ID of the thread that currently has the lock
-    __count is the number of times the current thread has acquired it
-
-    When the lock is released, __tid is None and __count is zero.
-
-    """
-
-    def __init__(self):
-        """Constructor.  Initialize all instance variables."""
-        self.__mutex = thread.allocate_lock()
-        self.__wait = thread.allocate_lock()
-        self.__tid = None
-        self.__count = 0
-
-    def acquire(self, flag=1):
-        """Acquire the lock.
-
-        If the optional flag argument is false, returns immediately
-        when it cannot acquire the __wait lock without blocking (it
-        may still block for a little while in order to acquire the
-        __mutex lock).
-
-        The return value is only relevant when the flag argument is
-        false; it is 1 if the lock is acquired, 0 if not.
-
-        """
-        self.__mutex.acquire()
-        try:
-            if self.__tid == thread.get_ident():
-                self.__count = self.__count + 1
-                return 1
-        finally:
-            self.__mutex.release()
-        locked = self.__wait.acquire(flag)
-        if not flag and not locked:
-            return 0
-        try:
-            self.__mutex.acquire()
-            assert self.__tid == None
-            assert self.__count == 0
-            self.__tid = thread.get_ident()
-            self.__count = 1
-            return 1
-        finally:
-            self.__mutex.release()
-
-    def release(self):
-        """Release the lock.
-
-        If this thread doesn't currently have the lock, an assertion
-        error is raised.
-
-        Only allow another thread to acquire the lock when the count
-        reaches zero after decrementing it.
-
-        """
-        self.__mutex.acquire()
-        try:
-            assert self.__tid == thread.get_ident()
-            assert self.__count > 0
-            self.__count = self.__count - 1
-            if self.__count == 0:
-                self.__tid = None
-                self.__wait.release()
-        finally:
-            self.__mutex.release()
-
-
-def _testLock():
-
-    done = []
-
-    def f2(lock, done=done):
-        lock.acquire()
-        print "f2 running in thread %d\n" % thread.get_ident(),
-        lock.release()
-        done.append(1)
-
-    def f1(lock, f2=f2, done=done):
-        lock.acquire()
-        print "f1 running in thread %d\n" % thread.get_ident(),
-        try:
-            f2(lock)
-        finally:
-            lock.release()
-        done.append(1)
-
-    lock = Lock()
-    lock.acquire()
-    f1(lock)                            # Adds 2 to done
-    lock.release()
-
-    lock.acquire()
-
-    thread.start_new_thread(f1, (lock,)) # Adds 2
-    thread.start_new_thread(f1, (lock, f1)) # Adds 3
-    thread.start_new_thread(f2, (lock,)) # Adds 1
-    thread.start_new_thread(f2, (lock,)) # Adds 1
-
-    lock.release()
-    import time
-    while len(done) < 9:
-        print len(done)
-        time.sleep(0.001)
-    print len(done)
-
-
-# Now, the Locking metaclass is a piece of cake.
-# As an example feature, methods whose name begins with exactly one
-# underscore are not synchronized.
-
-from Meta import MetaClass, MetaHelper, MetaMethodWrapper
-
-class LockingMethodWrapper(MetaMethodWrapper):
-    def __call__(self, *args, **kw):
-        if self.__name__[:1] == '_' and self.__name__[1:] != '_':
-            return apply(self.func, (self.inst,) + args, kw)
-        self.inst.__lock__.acquire()
-        try:
-            return apply(self.func, (self.inst,) + args, kw)
-        finally:
-            self.inst.__lock__.release()
-
-class LockingHelper(MetaHelper):
-    __methodwrapper__ = LockingMethodWrapper
-    def __helperinit__(self, formalclass):
-        MetaHelper.__helperinit__(self, formalclass)
-        self.__lock__ = Lock()
-
-class LockingMetaClass(MetaClass):
-    __helper__ = LockingHelper
-
-Locking = LockingMetaClass('Locking', (), {})
-
-def _test():
-    # For kicks, take away the Locking base class and see it die
-    class Buffer(Locking):
-        def __init__(self, initialsize):
-            assert initialsize > 0
-            self.size = initialsize
-            self.buffer = [None]*self.size
-            self.first = self.last = 0
-        def put(self, item):
-            # Do we need to grow the buffer?
-            if (self.last+1) % self.size != self.first:
-                # Insert the new item
-                self.buffer[self.last] = item
-                self.last = (self.last+1) % self.size
-                return
-            # Double the buffer size
-            # First normalize it so that first==0 and last==size-1
-            print "buffer =", self.buffer
-            print "first = %d, last = %d, size = %d" % (
-                self.first, self.last, self.size)
-            if self.first <= self.last:
-                temp = self.buffer[self.first:self.last]
-            else:
-                temp = self.buffer[self.first:] + self.buffer[:self.last]
-            print "temp =", temp
-            self.buffer = temp + [None]*(self.size+1)
-            self.first = 0
-            self.last = self.size-1
-            self.size = self.size*2
-            print "Buffer size doubled to", self.size
-            print "new buffer =", self.buffer
-            print "first = %d, last = %d, size = %d" % (
-                self.first, self.last, self.size)
-            self.put(item)              # Recursive call to test the locking
-        def get(self):
-            # Is the buffer empty?
-            if self.first == self.last:
-                raise EOFError          # Avoid defining a new exception
-            item = self.buffer[self.first]
-            self.first = (self.first+1) % self.size
-            return item
-
-    def producer(buffer, wait, n=1000):
-        import time
-        i = 0
-        while i < n:
-            print "put", i
-            buffer.put(i)
-            i = i+1
-        print "Producer: done producing", n, "items"
-        wait.release()
-
-    def consumer(buffer, wait, n=1000):
-        import time
-        i = 0
-        tout = 0.001
-        while i < n:
-            try:
-                x = buffer.get()
-                if x != i:
-                    raise AssertionError, \
-                          "get() returned %s, expected %s" % (x, i)
-                print "got", i
-                i = i+1
-                tout = 0.001
-            except EOFError:
-                time.sleep(tout)
-                tout = tout*2
-        print "Consumer: done consuming", n, "items"
-        wait.release()
-
-    pwait = thread.allocate_lock()
-    pwait.acquire()
-    cwait = thread.allocate_lock()
-    cwait.acquire()
-    buffer = Buffer(1)
-    n = 1000
-    thread.start_new_thread(consumer, (buffer, cwait, n))
-    thread.start_new_thread(producer, (buffer, pwait, n))
-    pwait.acquire()
-    print "Producer done"
-    cwait.acquire()
-    print "All done"
-    print "buffer size ==", len(buffer.buffer)
-
-if __name__ == '__main__':
-    _testLock()
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Trace.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Trace.py
deleted file mode 100644
index b02d05a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/Trace.py
+++ /dev/null
@@ -1,144 +0,0 @@
-"""Tracing metaclass.
-
-XXX This is very much a work in progress.
-
-"""
-
-import types, sys
-
-class TraceMetaClass:
-    """Metaclass for tracing.
-
-    Classes defined using this metaclass have an automatic tracing
-    feature -- by setting the __trace_output__ instance (or class)
-    variable to a file object, trace messages about all calls are
-    written to the file.  The trace formatting can be changed by
-    defining a suitable __trace_call__ method.
-
-    """
-
-    __inited = 0
-
-    def __init__(self, name, bases, dict):
-        self.__name__ = name
-        self.__bases__ = bases
-        self.__dict = dict
-        # XXX Can't define __dict__, alas
-        self.__inited = 1
-
-    def __getattr__(self, name):
-        try:
-            return self.__dict[name]
-        except KeyError:
-            for base in self.__bases__:
-                try:
-                    return base.__getattr__(name)
-                except AttributeError:
-                    pass
-            raise AttributeError, name
-
-    def __setattr__(self, name, value):
-        if not self.__inited:
-            self.__dict__[name] = value
-        else:
-            self.__dict[name] = value
-
-    def __call__(self, *args, **kw):
-        inst = TracingInstance()
-        inst.__meta_init__(self)
-        try:
-            init = inst.__getattr__('__init__')
-        except AttributeError:
-            init = lambda: None
-        apply(init, args, kw)
-        return inst
-
-    __trace_output__ = None
-
-class TracingInstance:
-    """Helper class to represent an instance of a tracing class."""
-
-    def __trace_call__(self, fp, fmt, *args):
-        fp.write((fmt+'\n') % args)
-
-    def __meta_init__(self, klass):
-        self.__class = klass
-
-    def __getattr__(self, name):
-        # Invoked for any attr not in the instance's __dict__
-        try:
-            raw = self.__class.__getattr__(name)
-        except AttributeError:
-            raise AttributeError, name
-        if type(raw) != types.FunctionType:
-            return raw
-        # It's a function
-        fullname = self.__class.__name__ + "." + name
-        if not self.__trace_output__ or name == '__trace_call__':
-            return NotTracingWrapper(fullname, raw, self)
-        else:
-            return TracingWrapper(fullname, raw, self)
-
-class NotTracingWrapper:
-    def __init__(self, name, func, inst):
-        self.__name__ = name
-        self.func = func
-        self.inst = inst
-    def __call__(self, *args, **kw):
-        return apply(self.func, (self.inst,) + args, kw)
-
-class TracingWrapper(NotTracingWrapper):
-    def __call__(self, *args, **kw):
-        self.inst.__trace_call__(self.inst.__trace_output__,
-                                 "calling %s, inst=%s, args=%s, kw=%s",
-                                 self.__name__, self.inst, args, kw)
-        try:
-            rv = apply(self.func, (self.inst,) + args, kw)
-        except:
-            t, v, tb = sys.exc_info()
-            self.inst.__trace_call__(self.inst.__trace_output__,
-                                     "returning from %s with exception %s: %s",
-                                     self.__name__, t, v)
-            raise t, v, tb
-        else:
-            self.inst.__trace_call__(self.inst.__trace_output__,
-                                     "returning from %s with value %s",
-                                     self.__name__, rv)
-            return rv
-
-Traced = TraceMetaClass('Traced', (), {'__trace_output__': None})
-
-
-def _test():
-    global C, D
-    class C(Traced):
-        def __init__(self, x=0): self.x = x
-        def m1(self, x): self.x = x
-        def m2(self, y): return self.x + y
-        __trace_output__ = sys.stdout
-    class D(C):
-        def m2(self, y): print "D.m2(%r)" % (y,); return C.m2(self, y)
-        __trace_output__ = None
-    x = C(4321)
-    print x
-    print x.x
-    print x.m1(100)
-    print x.m1(10)
-    print x.m2(33)
-    print x.m1(5)
-    print x.m2(4000)
-    print x.x
-
-    print C.__init__
-    print C.m2
-    print D.__init__
-    print D.m2
-
-    y = D()
-    print y
-    print y.m1(10)
-    print y.m2(100)
-    print y.x
-
-if __name__ == '__main__':
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/index.html b/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/index.html
deleted file mode 100644
index 88e05a3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/index.html
+++ /dev/null
@@ -1,605 +0,0 @@
-<HTML>
-
-<HEAD>
-<TITLE>Metaclasses in Python 1.5</TITLE>
-</HEAD>
-
-<BODY BGCOLOR="FFFFFF">
-
-<H1>Metaclasses in Python 1.5</H1>
-<H2>(A.k.a. The Killer Joke :-)</H2>
-
-<HR>
-
-(<i>Postscript:</i> reading this essay is probably not the best way to
-understand the metaclass hook described here.  See a <A
-HREF="meta-vladimir.txt">message posted by Vladimir Marangozov</A>
-which may give a gentler introduction to the matter.  You may also
-want to search Deja News for messages with "metaclass" in the subject
-posted to comp.lang.python in July and August 1998.)
-
-<HR>
-
-<P>In previous Python releases (and still in 1.5), there is something
-called the ``Don Beaudry hook'', after its inventor and champion.
-This allows C extensions to provide alternate class behavior, thereby
-allowing the Python class syntax to be used to define other class-like
-entities.  Don Beaudry has used this in his infamous <A
-HREF="http://maigret.cog.brown.edu/pyutil/">MESS</A> package; Jim
-Fulton has used it in his <A
-HREF="http://www.digicool.com/releases/ExtensionClass/">Extension
-Classes</A> package.  (It has also been referred to as the ``Don
-Beaudry <i>hack</i>,'' but that's a misnomer.  There's nothing hackish
-about it -- in fact, it is rather elegant and deep, even though
-there's something dark to it.)
-
-<P>(On first reading, you may want to skip directly to the examples in
-the section "Writing Metaclasses in Python" below, unless you want
-your head to explode.)
-
-<P>
-
-<HR>
-
-<P>Documentation of the Don Beaudry hook has purposefully been kept
-minimal, since it is a feature of incredible power, and is easily
-abused.  Basically, it checks whether the <b>type of the base
-class</b> is callable, and if so, it is called to create the new
-class.
-
-<P>Note the two indirection levels.  Take a simple example:
-
-<PRE>
-class B:
-    pass
-
-class C(B):
-    pass
-</PRE>
-
-Take a look at the second class definition, and try to fathom ``the
-type of the base class is callable.''
-
-<P>(Types are not classes, by the way.  See questions 4.2, 4.19 and in
-particular 6.22 in the <A
-HREF="http://www.python.org/cgi-bin/faqw.py" >Python FAQ</A>
-for more on this topic.)
-
-<P>
-
-<UL>
-
-<LI>The <b>base class</b> is B; this one's easy.<P>
-
-<LI>Since B is a class, its type is ``class''; so the <b>type of the
-base class</b> is the type ``class''.  This is also known as
-types.ClassType, assuming the standard module <code>types</code> has
-been imported.<P>
-
-<LI>Now is the type ``class'' <b>callable</b>?  No, because types (in
-core Python) are never callable.  Classes are callable (calling a
-class creates a new instance) but types aren't.<P>
-
-</UL>
-
-<P>So our conclusion is that in our example, the type of the base
-class (of C) is not callable.  So the Don Beaudry hook does not apply,
-and the default class creation mechanism is used (which is also used
-when there is no base class).  In fact, the Don Beaudry hook never
-applies when using only core Python, since the type of a core object
-is never callable.
-
-<P>So what do Don and Jim do in order to use Don's hook?  Write an
-extension that defines at least two new Python object types.  The
-first would be the type for ``class-like'' objects usable as a base
-class, to trigger Don's hook.  This type must be made callable.
-That's why we need a second type.  Whether an object is callable
-depends on its type.  So whether a type object is callable depends on
-<i>its</i> type, which is a <i>meta-type</i>.  (In core Python there
-is only one meta-type, the type ``type'' (types.TypeType), which is
-the type of all type objects, even itself.)  A new meta-type must
-be defined that makes the type of the class-like objects callable.
-(Normally, a third type would also be needed, the new ``instance''
-type, but this is not an absolute requirement -- the new class type
-could return an object of some existing type when invoked to create an
-instance.)
-
-<P>Still confused?  Here's a simple device due to Don himself to
-explain metaclasses.  Take a simple class definition; assume B is a
-special class that triggers Don's hook:
-
-<PRE>
-class C(B):
-    a = 1
-    b = 2
-</PRE>
-
-This can be though of as equivalent to:
-
-<PRE>
-C = type(B)('C', (B,), {'a': 1, 'b': 2})
-</PRE>
-
-If that's too dense for you, here's the same thing written out using
-temporary variables:
-
-<PRE>
-creator = type(B)               # The type of the base class
-name = 'C'                      # The name of the new class
-bases = (B,)                    # A tuple containing the base class(es)
-namespace = {'a': 1, 'b': 2}    # The namespace of the class statement
-C = creator(name, bases, namespace)
-</PRE>
-
-This is analogous to what happens without the Don Beaudry hook, except
-that in that case the creator function is set to the default class
-creator.
-
-<P>In either case, the creator is called with three arguments.  The
-first one, <i>name</i>, is the name of the new class (as given at the
-top of the class statement).  The <i>bases</i> argument is a tuple of
-base classes (a singleton tuple if there's only one base class, like
-the example).  Finally, <i>namespace</i> is a dictionary containing
-the local variables collected during execution of the class statement.
-
-<P>Note that the contents of the namespace dictionary is simply
-whatever names were defined in the class statement.  A little-known
-fact is that when Python executes a class statement, it enters a new
-local namespace, and all assignments and function definitions take
-place in this namespace.  Thus, after executing the following class
-statement:
-
-<PRE>
-class C:
-    a = 1
-    def f(s): pass
-</PRE>
-
-the class namespace's contents would be {'a': 1, 'f': &lt;function f
-...&gt;}.
-
-<P>But enough already about writing Python metaclasses in C; read the
-documentation of <A
-HREF="http://maigret.cog.brown.edu/pyutil/">MESS</A> or <A
-HREF="http://www.digicool.com/papers/ExtensionClass.html" >Extension
-Classes</A> for more information.
-
-<P>
-
-<HR>
-
-<H2>Writing Metaclasses in Python</H2>
-
-<P>In Python 1.5, the requirement to write a C extension in order to
-write metaclasses has been dropped (though you can still do
-it, of course).  In addition to the check ``is the type of the base
-class callable,'' there's a check ``does the base class have a
-__class__ attribute.''  If so, it is assumed that the __class__
-attribute refers to a class.
-
-<P>Let's repeat our simple example from above:
-
-<PRE>
-class C(B):
-    a = 1
-    b = 2
-</PRE>
-
-Assuming B has a __class__ attribute, this translates into:
-
-<PRE>
-C = B.__class__('C', (B,), {'a': 1, 'b': 2})
-</PRE>
-
-This is exactly the same as before except that instead of type(B),
-B.__class__ is invoked.  If you have read <A HREF=
-"http://www.python.org/cgi-bin/faqw.py?req=show&file=faq06.022.htp"
->FAQ question 6.22</A> you will understand that while there is a big
-technical difference between type(B) and B.__class__, they play the
-same role at different abstraction levels.  And perhaps at some point
-in the future they will really be the same thing (at which point you
-would be able to derive subclasses from built-in types).
-
-<P>At this point it may be worth mentioning that C.__class__ is the
-same object as B.__class__, i.e., C's metaclass is the same as B's
-metaclass.  In other words, subclassing an existing class creates a
-new (meta)inststance of the base class's metaclass.
-
-<P>Going back to the example, the class B.__class__ is instantiated,
-passing its constructor the same three arguments that are passed to
-the default class constructor or to an extension's metaclass:
-<i>name</i>, <i>bases</i>, and <i>namespace</i>.
-
-<P>It is easy to be confused by what exactly happens when using a
-metaclass, because we lose the absolute distinction between classes
-and instances: a class is an instance of a metaclass (a
-``metainstance''), but technically (i.e. in the eyes of the python
-runtime system), the metaclass is just a class, and the metainstance
-is just an instance.  At the end of the class statement, the metaclass
-whose metainstance is used as a base class is instantiated, yielding a
-second metainstance (of the same metaclass).  This metainstance is
-then used as a (normal, non-meta) class; instantiation of the class
-means calling the metainstance, and this will return a real instance.
-And what class is that an instance of?  Conceptually, it is of course
-an instance of our metainstance; but in most cases the Python runtime
-system will see it as an instance of a a helper class used by the
-metaclass to implement its (non-meta) instances...
-
-<P>Hopefully an example will make things clearer.  Let's presume we
-have a metaclass MetaClass1.  It's helper class (for non-meta
-instances) is callled HelperClass1.  We now (manually) instantiate
-MetaClass1 once to get an empty special base class:
-
-<PRE>
-BaseClass1 = MetaClass1("BaseClass1", (), {})
-</PRE>
-
-We can now use BaseClass1 as a base class in a class statement:
-
-<PRE>
-class MySpecialClass(BaseClass1):
-    i = 1
-    def f(s): pass
-</PRE>
-
-At this point, MySpecialClass is defined; it is a metainstance of
-MetaClass1 just like BaseClass1, and in fact the expression
-``BaseClass1.__class__ == MySpecialClass.__class__ == MetaClass1''
-yields true.
-
-<P>We are now ready to create instances of MySpecialClass.  Let's
-assume that no constructor arguments are required:
-
-<PRE>
-x = MySpecialClass()
-y = MySpecialClass()
-print x.__class__, y.__class__
-</PRE>
-
-The print statement shows that x and y are instances of HelperClass1.
-How did this happen?  MySpecialClass is an instance of MetaClass1
-(``meta'' is irrelevant here); when an instance is called, its
-__call__ method is invoked, and presumably the __call__ method defined
-by MetaClass1 returns an instance of HelperClass1.
-
-<P>Now let's see how we could use metaclasses -- what can we do
-with metaclasses that we can't easily do without them?  Here's one
-idea: a metaclass could automatically insert trace calls for all
-method calls.  Let's first develop a simplified example, without
-support for inheritance or other ``advanced'' Python features (we'll
-add those later).
-
-<PRE>
-import types
-
-class Tracing:
-    def __init__(self, name, bases, namespace):
-        """Create a new class."""
-        self.__name__ = name
-        self.__bases__ = bases
-        self.__namespace__ = namespace
-    def __call__(self):
-        """Create a new instance."""
-        return Instance(self)
-
-class Instance:
-    def __init__(self, klass):
-        self.__klass__ = klass
-    def __getattr__(self, name):
-        try:
-            value = self.__klass__.__namespace__[name]
-        except KeyError:
-            raise AttributeError, name
-        if type(value) is not types.FunctionType:
-            return value
-        return BoundMethod(value, self)
-
-class BoundMethod:
-    def __init__(self, function, instance):
-        self.function = function
-        self.instance = instance
-    def __call__(self, *args):
-        print "calling", self.function, "for", self.instance, "with", args
-        return apply(self.function, (self.instance,) + args)
-
-Trace = Tracing('Trace', (), {})
-
-class MyTracedClass(Trace):
-    def method1(self, a):
-        self.a = a
-    def method2(self):
-        return self.a
-
-aninstance = MyTracedClass()
-
-aninstance.method1(10)
-
-print "the answer is %d" % aninstance.method2()
-</PRE>
-
-Confused already?  The intention is to read this from top down.  The
-Tracing class is the metaclass we're defining.  Its structure is
-really simple.
-
-<P>
-
-<UL>
-
-<LI>The __init__ method is invoked when a new Tracing instance is
-created, e.g. the definition of class MyTracedClass later in the
-example.  It simply saves the class name, base classes and namespace
-as instance variables.<P>
-
-<LI>The __call__ method is invoked when a Tracing instance is called,
-e.g. the creation of aninstance later in the example.  It returns an
-instance of the class Instance, which is defined next.<P>
-
-</UL>
-
-<P>The class Instance is the class used for all instances of classes
-built using the Tracing metaclass, e.g. aninstance.  It has two
-methods:
-
-<P>
-
-<UL>
-
-<LI>The __init__ method is invoked from the Tracing.__call__ method
-above to initialize a new instance.  It saves the class reference as
-an instance variable.  It uses a funny name because the user's
-instance variables (e.g. self.a later in the example) live in the same
-namespace.<P>
-
-<LI>The __getattr__ method is invoked whenever the user code
-references an attribute of the instance that is not an instance
-variable (nor a class variable; but except for __init__ and
-__getattr__ there are no class variables).  It will be called, for
-example, when aninstance.method1 is referenced in the example, with
-self set to aninstance and name set to the string "method1".<P>
-
-</UL>
-
-<P>The __getattr__ method looks the name up in the __namespace__
-dictionary.  If it isn't found, it raises an AttributeError exception.
-(In a more realistic example, it would first have to look through the
-base classes as well.)  If it is found, there are two possibilities:
-it's either a function or it isn't.  If it's not a function, it is
-assumed to be a class variable, and its value is returned.  If it's a
-function, we have to ``wrap'' it in instance of yet another helper
-class, BoundMethod.
-
-<P>The BoundMethod class is needed to implement a familiar feature:
-when a method is defined, it has an initial argument, self, which is
-automatically bound to the relevant instance when it is called.  For
-example, aninstance.method1(10) is equivalent to method1(aninstance,
-10).  In the example if this call, first a temporary BoundMethod
-instance is created with the following constructor call: temp =
-BoundMethod(method1, aninstance); then this instance is called as
-temp(10).  After the call, the temporary instance is discarded.
-
-<P>
-
-<UL>
-
-<LI>The __init__ method is invoked for the constructor call
-BoundMethod(method1, aninstance).  It simply saves away its
-arguments.<P>
-
-<LI>The __call__ method is invoked when the bound method instance is
-called, as in temp(10).  It needs to call method1(aninstance, 10).
-However, even though self.function is now method1 and self.instance is
-aninstance, it can't call self.function(self.instance, args) directly,
-because it should work regardless of the number of arguments passed.
-(For simplicity, support for keyword arguments has been omitted.)<P>
-
-</UL>
-
-<P>In order to be able to support arbitrary argument lists, the
-__call__ method first constructs a new argument tuple.  Conveniently,
-because of the notation *args in __call__'s own argument list, the
-arguments to __call__ (except for self) are placed in the tuple args.
-To construct the desired argument list, we concatenate a singleton
-tuple containing the instance with the args tuple: (self.instance,) +
-args.  (Note the trailing comma used to construct the singleton
-tuple.)  In our example, the resulting argument tuple is (aninstance,
-10).
-
-<P>The intrinsic function apply() takes a function and an argument
-tuple and calls the function for it.  In our example, we are calling
-apply(method1, (aninstance, 10)) which is equivalent to calling
-method(aninstance, 10).
-
-<P>From here on, things should come together quite easily.  The output
-of the example code is something like this:
-
-<PRE>
-calling &lt;function method1 at ae8d8&gt; for &lt;Instance instance at 95ab0&gt; with (10,)
-calling &lt;function method2 at ae900&gt; for &lt;Instance instance at 95ab0&gt; with ()
-the answer is 10
-</PRE>
-
-<P>That was about the shortest meaningful example that I could come up
-with.  A real tracing metaclass (for example, <A
-HREF="#Trace">Trace.py</A> discussed below) needs to be more
-complicated in two dimensions.
-
-<P>First, it needs to support more advanced Python features such as
-class variables, inheritance, __init__ methods, and keyword arguments.
-
-<P>Second, it needs to provide a more flexible way to handle the
-actual tracing information; perhaps it should be possible to write
-your own tracing function that gets called, perhaps it should be
-possible to enable and disable tracing on a per-class or per-instance
-basis, and perhaps a filter so that only interesting calls are traced;
-it should also be able to trace the return value of the call (or the
-exception it raised if an error occurs).  Even the Trace.py example
-doesn't support all these features yet.
-
-<P>
-
-<HR>
-
-<H1>Real-life Examples</H1>
-
-<P>Have a look at some very preliminary examples that I coded up to
-teach myself how to write metaclasses:
-
-<DL>
-
-<DT><A HREF="Enum.py">Enum.py</A>
-
-<DD>This (ab)uses the class syntax as an elegant way to define
-enumerated types.  The resulting classes are never instantiated --
-rather, their class attributes are the enumerated values.  For
-example:
-
-<PRE>
-class Color(Enum):
-    red = 1
-    green = 2
-    blue = 3
-print Color.red
-</PRE>
-
-will print the string ``Color.red'', while ``Color.red==1'' is true,
-and ``Color.red + 1'' raise a TypeError exception.
-
-<P>
-
-<DT><A NAME=Trace></A><A HREF="Trace.py">Trace.py</A>
-
-<DD>The resulting classes work much like standard
-classes, but by setting a special class or instance attribute
-__trace_output__ to point to a file, all calls to the class's methods
-are traced.  It was a bit of a struggle to get this right.  This
-should probably redone using the generic metaclass below.
-
-<P>
-
-<DT><A HREF="Meta.py">Meta.py</A>
-
-<DD>A generic metaclass.  This is an attempt at finding out how much
-standard class behavior can be mimicked by a metaclass.  The
-preliminary answer appears to be that everything's fine as long as the
-class (or its clients) don't look at the instance's __class__
-attribute, nor at the class's __dict__ attribute.  The use of
-__getattr__ internally makes the classic implementation of __getattr__
-hooks tough; we provide a similar hook _getattr_ instead.
-(__setattr__ and __delattr__ are not affected.)
-(XXX Hm.  Could detect presence of __getattr__ and rename it.)
-
-<P>
-
-<DT><A HREF="Eiffel.py">Eiffel.py</A>
-
-<DD>Uses the above generic metaclass to implement Eiffel style
-pre-conditions and post-conditions.
-
-<P>
-
-<DT><A HREF="Synch.py">Synch.py</A>
-
-<DD>Uses the above generic metaclass to implement synchronized
-methods.
-
-<P>
-
-<DT><A HREF="Simple.py">Simple.py</A>
-
-<DD>The example module used above.
-
-<P>
-
-</DL>
-
-<P>A pattern seems to be emerging: almost all these uses of
-metaclasses (except for Enum, which is probably more cute than useful)
-mostly work by placing wrappers around method calls.  An obvious
-problem with that is that it's not easy to combine the features of
-different metaclasses, while this would actually be quite useful: for
-example, I wouldn't mind getting a trace from the test run of the
-Synch module, and it would be interesting to add preconditions to it
-as well.  This needs more research.  Perhaps a metaclass could be
-provided that allows stackable wrappers...
-
-<P>
-
-<HR>
-
-<H2>Things You Could Do With Metaclasses</H2>
-
-<P>There are lots of things you could do with metaclasses.  Most of
-these can also be done with creative use of __getattr__, but
-metaclasses make it easier to modify the attribute lookup behavior of
-classes.  Here's a partial list.
-
-<P>
-
-<UL>
-
-<LI>Enforce different inheritance semantics, e.g. automatically call
-base class methods when a derived class overrides<P>
-
-<LI>Implement class methods (e.g. if the first argument is not named
-'self')<P>
-
-<LI>Implement that each instance is initialized with <b>copies</b> of
-all class variables<P>
-
-<LI>Implement a different way to store instance variables (e.g. in a
-list kept outside the instance but indexed by the instance's id())<P>
-
-<LI>Automatically wrap or trap all or certain methods
-
-<UL>
-
-<LI>for tracing
-
-<LI>for precondition and postcondition checking
-
-<LI>for synchronized methods
-
-<LI>for automatic value caching
-
-</UL>
-<P>
-
-<LI>When an attribute is a parameterless function, call it on
-reference (to mimic it being an instance variable); same on assignment<P>
-
-<LI>Instrumentation: see how many times various attributes are used<P>
-
-<LI>Different semantics for __setattr__ and __getattr__ (e.g.  disable
-them when they are being used recursively)<P>
-
-<LI>Abuse class syntax for other things<P>
-
-<LI>Experiment with automatic type checking<P>
-
-<LI>Delegation (or acquisition)<P>
-
-<LI>Dynamic inheritance patterns<P>
-
-<LI>Automatic caching of methods<P>
-
-</UL>
-
-<P>
-
-<HR>
-
-<H4>Credits</H4>
-
-<P>Many thanks to David Ascher and Donald Beaudry for their comments
-on earlier draft of this paper.  Also thanks to Matt Conway and Tommy
-Burnette for putting a seed for the idea of metaclasses in my
-mind, nearly three years ago, even though at the time my response was
-``you can do that with __getattr__ hooks...'' :-)
-
-<P>
-
-<HR>
-
-</BODY>
-
-</HTML>
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/meta-vladimir.txt b/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/meta-vladimir.txt
deleted file mode 100644
index 81298a7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/metaclasses/meta-vladimir.txt
+++ /dev/null
@@ -1,256 +0,0 @@
-Subject: Re: The metaclass saga using Python
-From: Vladimir Marangozov <Vladimir.Marangozov@imag.fr>
-To: tim_one@email.msn.com (Tim Peters)
-Cc: python-list@cwi.nl
-Date: Wed, 5 Aug 1998 15:59:06 +0200 (DFT)
-
-[Tim]
-> 
-> building-on-examples-tends-to-prevent-abstract-thrashing-ly y'rs  - tim
-> 
-
-OK, I stand corrected. I understand that anybody's interpretation of
-the meta-class concept is likely to be difficult to digest by others.
-
-Here's another try, expressing the same thing, but using the Python
-programming model, examples and, perhaps, more popular terms.
-
-1. Classes.
-
-   This is pure Python of today. Sorry about the tutorial, but it is
-   meant to illustrate the second part, which is the one we're
-   interested in and which will follow the same development scenario.
-   Besides, newbies are likely to understand that the discussion is
-   affordable even for them :-)
-
-   a) Class definition
-
-      A class is meant to define the common properties of a set of objects.
-      A class is a "package" of properties. The assembly of properties
-      in a class package is sometimes called a class structure (which isn't
-      always appropriate).
-
-      >>> class A:
-              attr1 = "Hello"                  # an attribute of A
-              def method1(self, *args): pass   # method1 of A
-              def method2(self, *args): pass   # method2 of A
-      >>>
-
-      So far, we defined the structure of the class A. The class A is
-      of type <class>. We can check this by asking Python: "what is A?"
-
-      >>> A                                # What is A?
-      <class __main__.A at 2023e360>
-
-   b) Class instantiation
-
-      Creating an object with the properties defined in the class A is
-      called instantiation of the class A. After an instantiation of A, we
-      obtain a new object, called an instance, which has the properties
-      packaged in the class A.
-
-      >>> a = A()                          # 'a' is the 1st instance of A 
-      >>> a                                # What is 'a'? 
-      <__main__.A instance at 2022b9d0>
-
-      >>> b = A()                          # 'b' is another instance of A
-      >>> b                                # What is 'b'?
-      <__main__.A instance at 2022b9c0>
-
-      The objects, 'a' and 'b', are of type <instance> and they both have
-      the same properties. Note, that 'a' and 'b' are different objects.
-      (their adresses differ). This is a bit hard to see, so let's ask Python:
-
-      >>> a == b                           # Is 'a' the same object as 'b'?
-      0                                    # No.
-
-      Instance objects have one more special property, indicating the class
-      they are an instance of. This property is named __class__.
-
-      >>> a.__class__                      # What is the class of 'a'?
-      <class __main__.A at 2023e360>       # 'a' is an instance of A
-      >>> b.__class__                      # What is the class of 'b'?
-      <class __main__.A at 2023e360>       # 'b' is an instance of A
-      >>> a.__class__ == b.__class__       # Is it really the same class A?
-      1                                    # Yes.
-
-   c) Class inheritance (class composition and specialization)
-
-      Classes can be defined in terms of other existing classes (and only
-      classes! -- don't bug me on this now). Thus, we can compose property
-      packages and create new ones. We reuse the property set defined
-      in a class by defining a new class, which "inherits" from the former.
-      In other words, a class B which inherits from the class A, inherits
-      the properties defined in A, or, B inherits the structure of A.
-
-      In the same time, at the definition of the new class B, we can enrich
-      the inherited set of properties by adding new ones and/or modify some
-      of the inherited properties.
-      
-      >>> class B(A):                          # B inherits A's properties
-              attr2 = "World"                  # additional attr2
-              def method2(self, arg1): pass    # method2 is redefined
-              def method3(self, *args): pass   # additional method3
-
-      >>> B                                 # What is B?
-      <class __main__.B at 2023e500>
-      >>> B == A                            # Is B the same class as A?
-      0                                     # No.
-
-      Classes define one special property, indicating whether a class
-      inherits the properties of another class. This property is called
-      __bases__ and it contains a list (a tuple) of the classes the new
-      class inherits from. The classes from which a class is inheriting the
-      properties are called superclasses (in Python, we call them also --
-      base classes).
-
-      >>> A.__bases__                       # Does A have any superclasses?
-      ()                                    # No.
-      >>> B.__bases__                       # Does B have any superclasses?
-      (<class __main__.A at 2023e360>,)     # Yes. It has one superclass.
-      >>> B.__bases__[0] == A               # Is it really the class A?
-      1                                     # Yes, it is.
-
---------
-
-   Congratulations on getting this far! This was the hard part.
-   Now, let's continue with the easy one.
-
---------
-
-2. Meta-classes
-
-   You have to admit, that an anonymous group of Python wizards are
-   not satisfied with the property packaging facilities presented above.
-   They say, that the Real-World bugs them with problems that cannot be
-   modelled successfully with classes. Or, that the way classes are
-   implemented in Python and the way classes and instances behave at
-   runtime isn't always appropriate for reproducing the Real-World's
-   behavior in a way that satisfies them.
-
-   Hence, what they want is the following:
-
-      a) leave objects as they are (instances of classes)
-      b) leave classes as they are (property packages and object creators)
-
-   BUT, at the same time:
-
-      c) consider classes as being instances of mysterious objects.
-      d) label mysterious objects "meta-classes".
-
-   Easy, eh?
-
-   You may ask: "Why on earth do they want to do that?".
-   They answer: "Poor soul... Go and see how cruel the Real-World is!".
-   You - fuzzy: "OK, will do!"
-
-   And here we go for another round of what I said in section 1 -- Classes.
-
-   However, be warned! The features we're going to talk about aren't fully
-   implemented yet, because the Real-World don't let wizards to evaluate
-   precisely how cruel it is, so the features are still highly-experimental.
-
-   a) Meta-class definition
-
-      A meta-class is meant to define the common properties of a set of
-      classes.  A meta-class is a "package" of properties. The assembly
-      of properties in a meta-class package is sometimes called a meta-class
-      structure (which isn't always appropriate).
-
-      In Python, a meta-class definition would have looked like this:
-
-      >>> metaclass M:
-              attr1 = "Hello"                  # an attribute of M
-              def method1(self, *args): pass   # method1 of M
-              def method2(self, *args): pass   # method2 of M
-      >>>
-
-      So far, we defined the structure of the meta-class M. The meta-class
-      M is of type <metaclass>. We cannot check this by asking Python, but
-      if we could, it would have answered:
-
-      >>> M                                # What is M?
-      <metaclass __main__.M at 2023e4e0>
-
-   b) Meta-class instantiation
-
-      Creating an object with the properties defined in the meta-class M is
-      called instantiation of the meta-class M. After an instantiation of M,
-      we obtain a new object, called an class, but now it is called also
-      a meta-instance, which has the properties packaged in the meta-class M.
-
-      In Python, instantiating a meta-class would have looked like this:
-
-      >>> A = M()                          # 'A' is the 1st instance of M
-      >>> A                                # What is 'A'?
-      <class __main__.A at 2022b9d0>
-
-      >>> B = M()                          # 'B' is another instance of M
-      >>> B                                # What is 'B'?
-      <class __main__.B at 2022b9c0>
-
-      The metaclass-instances, A and B, are of type <class> and they both
-      have the same properties. Note, that A and B are different objects.
-      (their adresses differ). This is a bit hard to see, but if it was
-      possible to ask Python, it would have answered:
-
-      >>> A == B                           # Is A the same class as B?
-      0                                    # No.
-
-      Class objects have one more special property, indicating the meta-class
-      they are an instance of. This property is named __metaclass__.
-
-      >>> A.__metaclass__                  # What is the meta-class of A?
-      <metaclass __main__.M at 2023e4e0>   # A is an instance of M
-      >>> A.__metaclass__                  # What is the meta-class of B?
-      <metaclass __main__.M at 2023e4e0>   # B is an instance of M
-      >>> A.__metaclass__ == B.__metaclass__  # Is it the same meta-class M?
-      1                                    # Yes.
-
-   c) Meta-class inheritance (meta-class composition and specialization)
-
-      Meta-classes can be defined in terms of other existing meta-classes
-      (and only meta-classes!). Thus, we can compose property packages and
-      create new ones. We reuse the property set defined in a meta-class by
-      defining a new meta-class, which "inherits" from the former.
-      In other words, a meta-class N which inherits from the meta-class M,
-      inherits the properties defined in M, or, N inherits the structure of M.
-
-      In the same time, at the definition of the new meta-class N, we can
-      enrich the inherited set of properties by adding new ones and/or modify
-      some of the inherited properties.
-
-      >>> metaclass N(M):                      # N inherits M's properties
-              attr2 = "World"                  # additional attr2
-              def method2(self, arg1): pass    # method2 is redefined
-              def method3(self, *args): pass   # additional method3
-
-      >>> N                              # What is N?
-      <metaclass __main__.N at 2023e500>
-      >>> N == M                         # Is N the same meta-class as M?
-      0                                  # No.
-
-      Meta-classes define one special property, indicating whether a
-      meta-class inherits the properties of another meta-class. This property
-      is called __metabases__ and it contains a list (a tuple) of the
-      meta-classes the new meta-class inherits from. The meta-classes from
-      which a meta-class is inheriting the properties are called
-      super-meta-classes (in Python, we call them also -- super meta-bases).
-
-      >>> M.__metabases__                # Does M have any supermetaclasses?
-      ()                                 # No.
-      >>> N.__metabases__                # Does N have any supermetaclasses?
-      (<metaclass __main__.M at 2023e360>,)  # Yes. It has a supermetaclass.
-      >>> N.__metabases__[0] == M        # Is it really the meta-class M?
-      1                                  # Yes, it is.
-
---------
-
-   Triple congratulations on getting this far!
-   Now you know everything about meta-classes and the Real-World!
-
-<unless-wizards-want-meta-classes-be-instances-of-mysterious-objects!>
-
--- 
-       Vladimir MARANGOZOV          | Vladimir.Marangozov@inrialpes.fr
-http://sirac.inrialpes.fr/~marangoz | tel:(+33-4)76615277 fax:76615252
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/newmetaclasses/Eiffel.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/newmetaclasses/Eiffel.py
deleted file mode 100644
index f3a412b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/newmetaclasses/Eiffel.py
+++ /dev/null
@@ -1,141 +0,0 @@
-"""Support Eiffel-style preconditions and postconditions."""
-
-from types import FunctionType as function
-
-class EiffelBaseMetaClass(type):
-
-    def __new__(meta, name, bases, dict):
-        meta.convert_methods(dict)
-        return super(EiffelBaseMetaClass, meta).__new__(meta, name, bases,
-                                                        dict)
-
-    @classmethod
-    def convert_methods(cls, dict):
-        """Replace functions in dict with EiffelMethod wrappers.
-
-        The dict is modified in place.
-
-        If a method ends in _pre or _post, it is removed from the dict
-        regardless of whether there is a corresponding method.
-        """
-        # find methods with pre or post conditions
-        methods = []
-        for k, v in dict.iteritems():
-            if k.endswith('_pre') or k.endswith('_post'):
-                assert isinstance(v, function)
-            elif isinstance(v, function):
-                methods.append(k)
-        for m in methods:
-            pre = dict.get("%s_pre" % m)
-            post = dict.get("%s_post" % m)
-            if pre or post:
-                dict[k] = cls.make_eiffel_method(dict[m], pre, post)
-
-class EiffelMetaClass1(EiffelBaseMetaClass):
-    # an implementation of the "eiffel" meta class that uses nested functions
-
-    @staticmethod
-    def make_eiffel_method(func, pre, post):
-        def method(self, *args, **kwargs):
-            if pre:
-                pre(self, *args, **kwargs)
-            x = func(self, *args, **kwargs)
-            if post:
-                post(self, x, *args, **kwargs)
-            return x
-
-        if func.__doc__:
-            method.__doc__ = func.__doc__
-
-        return method
-
-class EiffelMethodWrapper:
-
-    def __init__(self, inst, descr):
-        self._inst = inst
-        self._descr = descr
-
-    def __call__(self, *args, **kwargs):
-        return self._descr.callmethod(self._inst, args, kwargs)
-
-class EiffelDescriptor(object):
-
-    def __init__(self, func, pre, post):
-        self._func = func
-        self._pre = pre
-        self._post = post
-
-        self.__name__ = func.__name__
-        self.__doc__ = func.__doc__
-
-    def __get__(self, obj, cls):
-        return EiffelMethodWrapper(obj, self)
-
-    def callmethod(self, inst, args, kwargs):
-        if self._pre:
-            self._pre(inst, *args, **kwargs)
-        x = self._func(inst, *args, **kwargs)
-        if self._post:
-            self._post(inst, x, *args, **kwargs)
-        return x
-
-class EiffelMetaClass2(EiffelBaseMetaClass):
-    # an implementation of the "eiffel" meta class that uses descriptors
-
-    make_eiffel_method = EiffelDescriptor
-
-def _test(metaclass):
-    class Eiffel:
-        __metaclass__ = metaclass
-
-    class Test(Eiffel):
-
-        def m(self, arg):
-            """Make it a little larger"""
-            return arg + 1
-
-        def m2(self, arg):
-            """Make it a little larger"""
-            return arg + 1
-
-        def m2_pre(self, arg):
-            assert arg > 0
-
-        def m2_post(self, result, arg):
-            assert result > arg
-
-    class Sub(Test):
-        def m2(self, arg):
-            return arg**2
-        def m2_post(self, Result, arg):
-            super(Sub, self).m2_post(Result, arg)
-            assert Result < 100
-
-    t = Test()
-    t.m(1)
-    t.m2(1)
-    try:
-        t.m2(0)
-    except AssertionError:
-        pass
-    else:
-        assert False
-
-    s = Sub()
-    try:
-        s.m2(1)
-    except AssertionError:
-        pass # result == arg
-    else:
-        assert False
-    try:
-        s.m2(10)
-    except AssertionError:
-        pass # result ==  100
-    else:
-        assert False
-    s.m2(5)
-
-if __name__ == "__main__":
-    _test(EiffelMetaClass1)
-    _test(EiffelMetaClass2)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/newmetaclasses/Enum.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/newmetaclasses/Enum.py
deleted file mode 100644
index a080e8d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/newmetaclasses/Enum.py
+++ /dev/null
@@ -1,177 +0,0 @@
-"""Enumeration metaclass."""
-
-class EnumMetaclass(type):
-    """Metaclass for enumeration.
-
-    To define your own enumeration, do something like
-
-    class Color(Enum):
-        red = 1
-        green = 2
-        blue = 3
-
-    Now, Color.red, Color.green and Color.blue behave totally
-    different: they are enumerated values, not integers.
-
-    Enumerations cannot be instantiated; however they can be
-    subclassed.
-    """
-
-    def __init__(cls, name, bases, dict):
-        super(EnumMetaclass, cls).__init__(name, bases, dict)
-        cls._members = []
-        for attr in dict.keys():
-            if not (attr.startswith('__') and attr.endswith('__')):
-                enumval = EnumInstance(name, attr, dict[attr])
-                setattr(cls, attr, enumval)
-                cls._members.append(attr)
-
-    def __getattr__(cls, name):
-        if name == "__members__":
-            return cls._members
-        raise AttributeError, name
-
-    def __repr__(cls):
-        s1 = s2 = ""
-        enumbases = [base.__name__ for base in cls.__bases__
-                     if isinstance(base, EnumMetaclass) and not base is Enum]
-        if enumbases:
-            s1 = "(%s)" % ", ".join(enumbases)
-        enumvalues = ["%s: %d" % (val, getattr(cls, val))
-                      for val in cls._members]
-        if enumvalues:
-            s2 = ": {%s}" % ", ".join(enumvalues)
-        return "%s%s%s" % (cls.__name__, s1, s2)
-
-class FullEnumMetaclass(EnumMetaclass):
-    """Metaclass for full enumerations.
-
-    A full enumeration displays all the values defined in base classes.
-    """
-
-    def __init__(cls, name, bases, dict):
-        super(FullEnumMetaclass, cls).__init__(name, bases, dict)
-        for obj in cls.__mro__:
-            if isinstance(obj, EnumMetaclass):
-                for attr in obj._members:
-                    # XXX inefficient
-                    if not attr in cls._members:
-                        cls._members.append(attr)
-
-class EnumInstance(int):
-    """Class to represent an enumeration value.
-
-    EnumInstance('Color', 'red', 12) prints as 'Color.red' and behaves
-    like the integer 12 when compared, but doesn't support arithmetic.
-
-    XXX Should it record the actual enumeration rather than just its
-    name?
-    """
-
-    def __new__(cls, classname, enumname, value):
-        return int.__new__(cls, value)
-
-    def __init__(self, classname, enumname, value):
-        self.__classname = classname
-        self.__enumname = enumname
-
-    def __repr__(self):
-        return "EnumInstance(%s, %s, %d)" % (self.__classname, self.__enumname,
-                                             self)
-
-    def __str__(self):
-        return "%s.%s" % (self.__classname, self.__enumname)
-
-class Enum:
-    __metaclass__ = EnumMetaclass
-
-class FullEnum:
-    __metaclass__ = FullEnumMetaclass
-
-def _test():
-
-    class Color(Enum):
-        red = 1
-        green = 2
-        blue = 3
-
-    print Color.red
-
-    print repr(Color.red)
-    print Color.red == Color.red
-    print Color.red == Color.blue
-    print Color.red == 1
-    print Color.red == 2
-
-    class ExtendedColor(Color):
-        white = 0
-        orange = 4
-        yellow = 5
-        purple = 6
-        black = 7
-
-    print ExtendedColor.orange
-    print ExtendedColor.red
-
-    print Color.red == ExtendedColor.red
-
-    class OtherColor(Enum):
-        white = 4
-        blue = 5
-
-    class MergedColor(Color, OtherColor):
-        pass
-
-    print MergedColor.red
-    print MergedColor.white
-
-    print Color
-    print ExtendedColor
-    print OtherColor
-    print MergedColor
-
-def _test2():
-
-    class Color(FullEnum):
-        red = 1
-        green = 2
-        blue = 3
-
-    print Color.red
-
-    print repr(Color.red)
-    print Color.red == Color.red
-    print Color.red == Color.blue
-    print Color.red == 1
-    print Color.red == 2
-
-    class ExtendedColor(Color):
-        white = 0
-        orange = 4
-        yellow = 5
-        purple = 6
-        black = 7
-
-    print ExtendedColor.orange
-    print ExtendedColor.red
-
-    print Color.red == ExtendedColor.red
-
-    class OtherColor(FullEnum):
-        white = 4
-        blue = 5
-
-    class MergedColor(Color, OtherColor):
-        pass
-
-    print MergedColor.red
-    print MergedColor.white
-
-    print Color
-    print ExtendedColor
-    print OtherColor
-    print MergedColor
-
-if __name__ == '__main__':
-    _test()
-    _test2()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/FILES b/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/FILES
deleted file mode 100644
index 1df6c3d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/FILES
+++ /dev/null
@@ -1,6 +0,0 @@
-Demo/parser
-Doc/libparser.tex
-Lib/AST.py
-Lib/symbol.py
-Lib/token.py
-Modules/parsermodule.c
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/README b/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/README
deleted file mode 100644
index fa5bd31..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/README
+++ /dev/null
@@ -1,32 +0,0 @@
-These files are from the large example of using the `parser' module.  Refer
-to the Python Library Reference for more information.
-
-It also contains examples for the AST parser.
-
-Files:
-------
-
-    FILES        -- list of files associated with the parser module.
-
-    README       -- this file.
-
-    docstring.py -- sample source file containing only a module docstring.
-
-    example.py   -- module that uses the `parser' module to extract
-                    information from the parse tree of Python source
-                    code.
-
-    simple.py    -- sample source containing a "short form" definition.
-
-    source.py    -- sample source code used to demonstrate ability to
-                    handle nested constructs easily using the functions
-                    and classes in example.py.
-
-    test_parser.py  program to put the parser module through its paces.
-
-    test_unparse.py tests for the unparse module
-
-    unparse.py      AST (2.7) based example to recreate source code
-                    from an AST.
-
-Enjoy!
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/docstring.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/docstring.py
deleted file mode 100644
index 81efa02..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/docstring.py
+++ /dev/null
@@ -1,2 +0,0 @@
-"""Some documentation.
-"""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/example.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/example.py
deleted file mode 100644
index 346f973..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/example.py
+++ /dev/null
@@ -1,190 +0,0 @@
-"""Simple code to extract class & function docstrings from a module.
-
-This code is used as an example in the library reference manual in the
-section on using the parser module.  Refer to the manual for a thorough
-discussion of the operation of this code.
-"""
-
-import os
-import parser
-import symbol
-import token
-import types
-
-from types import ListType, TupleType
-
-
-def get_docs(fileName):
-    """Retrieve information from the parse tree of a source file.
-
-    fileName
-        Name of the file to read Python source code from.
-    """
-    source = open(fileName).read()
-    basename = os.path.basename(os.path.splitext(fileName)[0])
-    ast = parser.suite(source)
-    return ModuleInfo(ast.totuple(), basename)
-
-
-class SuiteInfoBase:
-    _docstring = ''
-    _name = ''
-
-    def __init__(self, tree = None):
-        self._class_info = {}
-        self._function_info = {}
-        if tree:
-            self._extract_info(tree)
-
-    def _extract_info(self, tree):
-        # extract docstring
-        if len(tree) == 2:
-            found, vars = match(DOCSTRING_STMT_PATTERN[1], tree[1])
-        else:
-            found, vars = match(DOCSTRING_STMT_PATTERN, tree[3])
-        if found:
-            self._docstring = eval(vars['docstring'])
-        # discover inner definitions
-        for node in tree[1:]:
-            found, vars = match(COMPOUND_STMT_PATTERN, node)
-            if found:
-                cstmt = vars['compound']
-                if cstmt[0] == symbol.funcdef:
-                    name = cstmt[2][1]
-                    self._function_info[name] = FunctionInfo(cstmt)
-                elif cstmt[0] == symbol.classdef:
-                    name = cstmt[2][1]
-                    self._class_info[name] = ClassInfo(cstmt)
-
-    def get_docstring(self):
-        return self._docstring
-
-    def get_name(self):
-        return self._name
-
-    def get_class_names(self):
-        return self._class_info.keys()
-
-    def get_class_info(self, name):
-        return self._class_info[name]
-
-    def __getitem__(self, name):
-        try:
-            return self._class_info[name]
-        except KeyError:
-            return self._function_info[name]
-
-
-class SuiteFuncInfo:
-    #  Mixin class providing access to function names and info.
-
-    def get_function_names(self):
-        return self._function_info.keys()
-
-    def get_function_info(self, name):
-        return self._function_info[name]
-
-
-class FunctionInfo(SuiteInfoBase, SuiteFuncInfo):
-    def __init__(self, tree = None):
-        self._name = tree[2][1]
-        SuiteInfoBase.__init__(self, tree and tree[-1] or None)
-
-
-class ClassInfo(SuiteInfoBase):
-    def __init__(self, tree = None):
-        self._name = tree[2][1]
-        SuiteInfoBase.__init__(self, tree and tree[-1] or None)
-
-    def get_method_names(self):
-        return self._function_info.keys()
-
-    def get_method_info(self, name):
-        return self._function_info[name]
-
-
-class ModuleInfo(SuiteInfoBase, SuiteFuncInfo):
-    def __init__(self, tree = None, name = "<string>"):
-        self._name = name
-        SuiteInfoBase.__init__(self, tree)
-        if tree:
-            found, vars = match(DOCSTRING_STMT_PATTERN, tree[1])
-            if found:
-                self._docstring = vars["docstring"]
-
-
-def match(pattern, data, vars=None):
-    """Match `data' to `pattern', with variable extraction.
-
-    pattern
-        Pattern to match against, possibly containing variables.
-
-    data
-        Data to be checked and against which variables are extracted.
-
-    vars
-        Dictionary of variables which have already been found.  If not
-        provided, an empty dictionary is created.
-
-    The `pattern' value may contain variables of the form ['varname'] which
-    are allowed to match anything.  The value that is matched is returned as
-    part of a dictionary which maps 'varname' to the matched value.  'varname'
-    is not required to be a string object, but using strings makes patterns
-    and the code which uses them more readable.
-
-    This function returns two values: a boolean indicating whether a match
-    was found and a dictionary mapping variable names to their associated
-    values.
-    """
-    if vars is None:
-        vars = {}
-    if type(pattern) is ListType:       # 'variables' are ['varname']
-        vars[pattern[0]] = data
-        return 1, vars
-    if type(pattern) is not TupleType:
-        return (pattern == data), vars
-    if len(data) != len(pattern):
-        return 0, vars
-    for pattern, data in map(None, pattern, data):
-        same, vars = match(pattern, data, vars)
-        if not same:
-            break
-    return same, vars
-
-
-#  This pattern identifies compound statements, allowing them to be readily
-#  differentiated from simple statements.
-#
-COMPOUND_STMT_PATTERN = (
-    symbol.stmt,
-    (symbol.compound_stmt, ['compound'])
-    )
-
-
-#  This pattern will match a 'stmt' node which *might* represent a docstring;
-#  docstrings require that the statement which provides the docstring be the
-#  first statement in the class or function, which this pattern does not check.
-#
-DOCSTRING_STMT_PATTERN = (
-    symbol.stmt,
-    (symbol.simple_stmt,
-     (symbol.small_stmt,
-      (symbol.expr_stmt,
-       (symbol.testlist,
-        (symbol.test,
-         (symbol.and_test,
-          (symbol.not_test,
-           (symbol.comparison,
-            (symbol.expr,
-             (symbol.xor_expr,
-              (symbol.and_expr,
-               (symbol.shift_expr,
-                (symbol.arith_expr,
-                 (symbol.term,
-                  (symbol.factor,
-                   (symbol.power,
-                    (symbol.atom,
-                     (token.STRING, ['docstring'])
-                     )))))))))))))))),
-     (token.NEWLINE, '')
-     ))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/simple.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/simple.py
deleted file mode 100644
index 75ab0e7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/simple.py
+++ /dev/null
@@ -1 +0,0 @@
-def f(): "maybe a docstring"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/source.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/source.py
deleted file mode 100644
index e5b6bec..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/source.py
+++ /dev/null
@@ -1,27 +0,0 @@
-"""Exmaple file to be parsed for the parsermodule example.
-
-The classes and functions in this module exist only to exhibit the ability
-of the handling information extraction from nested definitions using parse
-trees.  They shouldn't interest you otherwise!
-"""
-
-class Simple:
-    "This class does very little."
-
-    def method(self):
-        "This method does almost nothing."
-        return 1
-
-    class Nested:
-        "This is a nested class."
-
-        def nested_method(self):
-            "Method of Nested class."
-            def nested_function():
-                "Function in method of Nested class."
-                pass
-            return nested_function
-
-def function():
-    "This function lives at the module level."
-    return 0
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/test_parser.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/test_parser.py
deleted file mode 100644
index f3f48b8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/test_parser.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#! /usr/bin/env python
-#  (Force the script to use the latest build.)
-#
-#  test_parser.py
-
-import parser, traceback
-
-_numFailed = 0
-
-def testChunk(t, fileName):
-    global _numFailed
-    print '----', fileName,
-    try:
-        st = parser.suite(t)
-        tup = parser.st2tuple(st)
-        # this discards the first ST; a huge memory savings when running
-        # against a large source file like Tkinter.py.
-        st = None
-        new = parser.tuple2st(tup)
-    except parser.ParserError, err:
-        print
-        print 'parser module raised exception on input file', fileName + ':'
-        traceback.print_exc()
-        _numFailed = _numFailed + 1
-    else:
-        if tup != parser.st2tuple(new):
-            print
-            print 'parser module failed on input file', fileName
-            _numFailed = _numFailed + 1
-        else:
-            print 'o.k.'
-
-def testFile(fileName):
-    t = open(fileName).read()
-    testChunk(t, fileName)
-
-def test():
-    import sys
-    args = sys.argv[1:]
-    if not args:
-        import glob
-        args = glob.glob("*.py")
-        args.sort()
-    map(testFile, args)
-    sys.exit(_numFailed != 0)
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/test_unparse.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/test_unparse.py
deleted file mode 100644
index eee1c7a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/test_unparse.py
+++ /dev/null
@@ -1,213 +0,0 @@
-import unittest
-from test import test_support
-import cStringIO
-import sys
-import os
-import tokenize
-import ast
-import unparse
-
-def read_pyfile(filename):
-    """Read and return the contents of a Python source file (as a
-    string), taking into account the file encoding."""
-    with open(filename, "r") as pyfile:
-        source = pyfile.read()
-    return source
-
-for_else = """\
-def f():
-    for x in range(10):
-        break
-    else:
-        y = 2
-    z = 3
-"""
-
-while_else = """\
-def g():
-    while True:
-        break
-    else:
-        y = 2
-    z = 3
-"""
-
-relative_import = """\
-from . import fred
-from .. import barney
-from .australia import shrimp as prawns
-"""
-
-class_decorator = """\
-@f1(arg)
-@f2
-class Foo: pass
-"""
-
-elif1 = """\
-if cond1:
-    suite1
-elif cond2:
-    suite2
-else:
-    suite3
-"""
-
-elif2 = """\
-if cond1:
-    suite1
-elif cond2:
-    suite2
-"""
-
-try_except_finally = """\
-try:
-    suite1
-except ex1:
-    suite2
-except ex2:
-    suite3
-else:
-    suite4
-finally:
-    suite5
-"""
-
-class ASTTestCase(unittest.TestCase):
-    def assertASTEqual(self, ast1, ast2):
-        dump1 = ast.dump(ast1)
-        dump2 = ast.dump(ast2)
-        self.assertEqual(ast.dump(ast1), ast.dump(ast2))
-
-    def check_roundtrip(self, code1, filename="internal"):
-        ast1 = compile(code1, filename, "exec", ast.PyCF_ONLY_AST)
-        unparse_buffer = cStringIO.StringIO()
-        unparse.Unparser(ast1, unparse_buffer)
-        code2 = unparse_buffer.getvalue()
-        ast2 = compile(code2, filename, "exec", ast.PyCF_ONLY_AST)
-        self.assertASTEqual(ast1, ast2)
-
-class UnparseTestCase(ASTTestCase):
-    # Tests for specific bugs found in earlier versions of unparse
-
-    def test_del_statement(self):
-        self.check_roundtrip("del x, y, z")
-
-    def test_shifts(self):
-        self.check_roundtrip("45 << 2")
-        self.check_roundtrip("13 >> 7")
-
-    def test_for_else(self):
-        self.check_roundtrip(for_else)
-
-    def test_while_else(self):
-        self.check_roundtrip(while_else)
-
-    def test_unary_parens(self):
-        self.check_roundtrip("(-1)**7")
-        self.check_roundtrip("(-1.)**8")
-        self.check_roundtrip("(-1j)**6")
-        self.check_roundtrip("not True or False")
-        self.check_roundtrip("True or not False")
-
-    def test_integer_parens(self):
-        self.check_roundtrip("3 .__abs__()")
-
-    def test_huge_float(self):
-        self.check_roundtrip("1e1000")
-        self.check_roundtrip("-1e1000")
-        self.check_roundtrip("1e1000j")
-        self.check_roundtrip("-1e1000j")
-
-    def test_min_int(self):
-        self.check_roundtrip(str(-sys.maxint-1))
-        self.check_roundtrip("-(%s)" % (sys.maxint + 1))
-
-    def test_imaginary_literals(self):
-        self.check_roundtrip("7j")
-        self.check_roundtrip("-7j")
-        self.check_roundtrip("-(7j)")
-        self.check_roundtrip("0j")
-        self.check_roundtrip("-0j")
-        self.check_roundtrip("-(0j)")
-
-    def test_negative_zero(self):
-        self.check_roundtrip("-0")
-        self.check_roundtrip("-(0)")
-        self.check_roundtrip("-0b0")
-        self.check_roundtrip("-(0b0)")
-        self.check_roundtrip("-0o0")
-        self.check_roundtrip("-(0o0)")
-        self.check_roundtrip("-0x0")
-        self.check_roundtrip("-(0x0)")
-
-    def test_lambda_parentheses(self):
-        self.check_roundtrip("(lambda: int)()")
-
-    def test_chained_comparisons(self):
-        self.check_roundtrip("1 < 4 <= 5")
-        self.check_roundtrip("a is b is c is not d")
-
-    def test_function_arguments(self):
-        self.check_roundtrip("def f(): pass")
-        self.check_roundtrip("def f(a): pass")
-        self.check_roundtrip("def f(b = 2): pass")
-        self.check_roundtrip("def f(a, b): pass")
-        self.check_roundtrip("def f(a, b = 2): pass")
-        self.check_roundtrip("def f(a = 5, b = 2): pass")
-        self.check_roundtrip("def f(*args, **kwargs): pass")
-
-    def test_relative_import(self):
-        self.check_roundtrip(relative_import)
-
-    def test_bytes(self):
-        self.check_roundtrip("b'123'")
-
-    def test_set_literal(self):
-        self.check_roundtrip("{'a', 'b', 'c'}")
-
-    def test_set_comprehension(self):
-        self.check_roundtrip("{x for x in range(5)}")
-
-    def test_dict_comprehension(self):
-        self.check_roundtrip("{x: x*x for x in range(10)}")
-
-    def test_class_decorators(self):
-        self.check_roundtrip(class_decorator)
-
-    def test_elifs(self):
-        self.check_roundtrip(elif1)
-        self.check_roundtrip(elif2)
-
-    def test_try_except_finally(self):
-        self.check_roundtrip(try_except_finally)
-
-class DirectoryTestCase(ASTTestCase):
-    """Test roundtrip behaviour on all files in Lib and Lib/test."""
-
-    # test directories, relative to the root of the distribution
-    test_directories = 'Lib', os.path.join('Lib', 'test')
-
-    def test_files(self):
-        # get names of files to test
-        dist_dir = os.path.join(os.path.dirname(__file__), os.pardir, os.pardir)
-
-        names = []
-        for d in self.test_directories:
-            test_dir = os.path.join(dist_dir, d)
-            for n in os.listdir(test_dir):
-                if n.endswith('.py') and not n.startswith('bad'):
-                    names.append(os.path.join(test_dir, n))
-
-        for filename in names:
-            if test_support.verbose:
-                print('Testing %s' % filename)
-            source = read_pyfile(filename)
-            self.check_roundtrip(source)
-
-
-def test_main():
-    test_support.run_unittest(UnparseTestCase, DirectoryTestCase)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/unparse.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/unparse.py
deleted file mode 100644
index b42d979..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/parser/unparse.py
+++ /dev/null
@@ -1,606 +0,0 @@
-"Usage: unparse.py <path to source file>"
-import sys
-import ast
-import cStringIO
-import os
-
-# Large float and imaginary literals get turned into infinities in the AST.
-# We unparse those infinities to INFSTR.
-INFSTR = "1e" + repr(sys.float_info.max_10_exp + 1)
-
-def interleave(inter, f, seq):
-    """Call f on each item in seq, calling inter() in between.
-    """
-    seq = iter(seq)
-    try:
-        f(next(seq))
-    except StopIteration:
-        pass
-    else:
-        for x in seq:
-            inter()
-            f(x)
-
-class Unparser:
-    """Methods in this class recursively traverse an AST and
-    output source code for the abstract syntax; original formatting
-    is disregarded. """
-
-    def __init__(self, tree, file = sys.stdout):
-        """Unparser(tree, file=sys.stdout) -> None.
-         Print the source for tree to file."""
-        self.f = file
-        self.future_imports = []
-        self._indent = 0
-        self.dispatch(tree)
-        self.f.write("")
-        self.f.flush()
-
-    def fill(self, text = ""):
-        "Indent a piece of text, according to the current indentation level"
-        self.f.write("\n"+"    "*self._indent + text)
-
-    def write(self, text):
-        "Append a piece of text to the current line."
-        self.f.write(text)
-
-    def enter(self):
-        "Print ':', and increase the indentation."
-        self.write(":")
-        self._indent += 1
-
-    def leave(self):
-        "Decrease the indentation level."
-        self._indent -= 1
-
-    def dispatch(self, tree):
-        "Dispatcher function, dispatching tree type T to method _T."
-        if isinstance(tree, list):
-            for t in tree:
-                self.dispatch(t)
-            return
-        meth = getattr(self, "_"+tree.__class__.__name__)
-        meth(tree)
-
-
-    ############### Unparsing methods ######################
-    # There should be one method per concrete grammar type #
-    # Constructors should be grouped by sum type. Ideally, #
-    # this would follow the order in the grammar, but      #
-    # currently doesn't.                                   #
-    ########################################################
-
-    def _Module(self, tree):
-        for stmt in tree.body:
-            self.dispatch(stmt)
-
-    # stmt
-    def _Expr(self, tree):
-        self.fill()
-        self.dispatch(tree.value)
-
-    def _Import(self, t):
-        self.fill("import ")
-        interleave(lambda: self.write(", "), self.dispatch, t.names)
-
-    def _ImportFrom(self, t):
-        # A from __future__ import may affect unparsing, so record it.
-        if t.module and t.module == '__future__':
-            self.future_imports.extend(n.name for n in t.names)
-
-        self.fill("from ")
-        self.write("." * t.level)
-        if t.module:
-            self.write(t.module)
-        self.write(" import ")
-        interleave(lambda: self.write(", "), self.dispatch, t.names)
-
-    def _Assign(self, t):
-        self.fill()
-        for target in t.targets:
-            self.dispatch(target)
-            self.write(" = ")
-        self.dispatch(t.value)
-
-    def _AugAssign(self, t):
-        self.fill()
-        self.dispatch(t.target)
-        self.write(" "+self.binop[t.op.__class__.__name__]+"= ")
-        self.dispatch(t.value)
-
-    def _Return(self, t):
-        self.fill("return")
-        if t.value:
-            self.write(" ")
-            self.dispatch(t.value)
-
-    def _Pass(self, t):
-        self.fill("pass")
-
-    def _Break(self, t):
-        self.fill("break")
-
-    def _Continue(self, t):
-        self.fill("continue")
-
-    def _Delete(self, t):
-        self.fill("del ")
-        interleave(lambda: self.write(", "), self.dispatch, t.targets)
-
-    def _Assert(self, t):
-        self.fill("assert ")
-        self.dispatch(t.test)
-        if t.msg:
-            self.write(", ")
-            self.dispatch(t.msg)
-
-    def _Exec(self, t):
-        self.fill("exec ")
-        self.dispatch(t.body)
-        if t.globals:
-            self.write(" in ")
-            self.dispatch(t.globals)
-        if t.locals:
-            self.write(", ")
-            self.dispatch(t.locals)
-
-    def _Print(self, t):
-        self.fill("print ")
-        do_comma = False
-        if t.dest:
-            self.write(">>")
-            self.dispatch(t.dest)
-            do_comma = True
-        for e in t.values:
-            if do_comma:self.write(", ")
-            else:do_comma=True
-            self.dispatch(e)
-        if not t.nl:
-            self.write(",")
-
-    def _Global(self, t):
-        self.fill("global ")
-        interleave(lambda: self.write(", "), self.write, t.names)
-
-    def _Yield(self, t):
-        self.write("(")
-        self.write("yield")
-        if t.value:
-            self.write(" ")
-            self.dispatch(t.value)
-        self.write(")")
-
-    def _Raise(self, t):
-        self.fill('raise ')
-        if t.type:
-            self.dispatch(t.type)
-        if t.inst:
-            self.write(", ")
-            self.dispatch(t.inst)
-        if t.tback:
-            self.write(", ")
-            self.dispatch(t.tback)
-
-    def _TryExcept(self, t):
-        self.fill("try")
-        self.enter()
-        self.dispatch(t.body)
-        self.leave()
-
-        for ex in t.handlers:
-            self.dispatch(ex)
-        if t.orelse:
-            self.fill("else")
-            self.enter()
-            self.dispatch(t.orelse)
-            self.leave()
-
-    def _TryFinally(self, t):
-        if len(t.body) == 1 and isinstance(t.body[0], ast.TryExcept):
-            # try-except-finally
-            self.dispatch(t.body)
-        else:
-            self.fill("try")
-            self.enter()
-            self.dispatch(t.body)
-            self.leave()
-
-        self.fill("finally")
-        self.enter()
-        self.dispatch(t.finalbody)
-        self.leave()
-
-    def _ExceptHandler(self, t):
-        self.fill("except")
-        if t.type:
-            self.write(" ")
-            self.dispatch(t.type)
-        if t.name:
-            self.write(" as ")
-            self.dispatch(t.name)
-        self.enter()
-        self.dispatch(t.body)
-        self.leave()
-
-    def _ClassDef(self, t):
-        self.write("\n")
-        for deco in t.decorator_list:
-            self.fill("@")
-            self.dispatch(deco)
-        self.fill("class "+t.name)
-        if t.bases:
-            self.write("(")
-            for a in t.bases:
-                self.dispatch(a)
-                self.write(", ")
-            self.write(")")
-        self.enter()
-        self.dispatch(t.body)
-        self.leave()
-
-    def _FunctionDef(self, t):
-        self.write("\n")
-        for deco in t.decorator_list:
-            self.fill("@")
-            self.dispatch(deco)
-        self.fill("def "+t.name + "(")
-        self.dispatch(t.args)
-        self.write(")")
-        self.enter()
-        self.dispatch(t.body)
-        self.leave()
-
-    def _For(self, t):
-        self.fill("for ")
-        self.dispatch(t.target)
-        self.write(" in ")
-        self.dispatch(t.iter)
-        self.enter()
-        self.dispatch(t.body)
-        self.leave()
-        if t.orelse:
-            self.fill("else")
-            self.enter()
-            self.dispatch(t.orelse)
-            self.leave()
-
-    def _If(self, t):
-        self.fill("if ")
-        self.dispatch(t.test)
-        self.enter()
-        self.dispatch(t.body)
-        self.leave()
-        # collapse nested ifs into equivalent elifs.
-        while (t.orelse and len(t.orelse) == 1 and
-               isinstance(t.orelse[0], ast.If)):
-            t = t.orelse[0]
-            self.fill("elif ")
-            self.dispatch(t.test)
-            self.enter()
-            self.dispatch(t.body)
-            self.leave()
-        # final else
-        if t.orelse:
-            self.fill("else")
-            self.enter()
-            self.dispatch(t.orelse)
-            self.leave()
-
-    def _While(self, t):
-        self.fill("while ")
-        self.dispatch(t.test)
-        self.enter()
-        self.dispatch(t.body)
-        self.leave()
-        if t.orelse:
-            self.fill("else")
-            self.enter()
-            self.dispatch(t.orelse)
-            self.leave()
-
-    def _With(self, t):
-        self.fill("with ")
-        self.dispatch(t.context_expr)
-        if t.optional_vars:
-            self.write(" as ")
-            self.dispatch(t.optional_vars)
-        self.enter()
-        self.dispatch(t.body)
-        self.leave()
-
-    # expr
-    def _Str(self, tree):
-        # if from __future__ import unicode_literals is in effect,
-        # then we want to output string literals using a 'b' prefix
-        # and unicode literals with no prefix.
-        if "unicode_literals" not in self.future_imports:
-            self.write(repr(tree.s))
-        elif isinstance(tree.s, str):
-            self.write("b" + repr(tree.s))
-        elif isinstance(tree.s, unicode):
-            self.write(repr(tree.s).lstrip("u"))
-        else:
-            assert False, "shouldn't get here"
-
-    def _Name(self, t):
-        self.write(t.id)
-
-    def _Repr(self, t):
-        self.write("`")
-        self.dispatch(t.value)
-        self.write("`")
-
-    def _Num(self, t):
-        repr_n = repr(t.n)
-        # Parenthesize negative numbers, to avoid turning (-1)**2 into -1**2.
-        if repr_n.startswith("-"):
-            self.write("(")
-        # Substitute overflowing decimal literal for AST infinities.
-        self.write(repr_n.replace("inf", INFSTR))
-        if repr_n.startswith("-"):
-            self.write(")")
-
-    def _List(self, t):
-        self.write("[")
-        interleave(lambda: self.write(", "), self.dispatch, t.elts)
-        self.write("]")
-
-    def _ListComp(self, t):
-        self.write("[")
-        self.dispatch(t.elt)
-        for gen in t.generators:
-            self.dispatch(gen)
-        self.write("]")
-
-    def _GeneratorExp(self, t):
-        self.write("(")
-        self.dispatch(t.elt)
-        for gen in t.generators:
-            self.dispatch(gen)
-        self.write(")")
-
-    def _SetComp(self, t):
-        self.write("{")
-        self.dispatch(t.elt)
-        for gen in t.generators:
-            self.dispatch(gen)
-        self.write("}")
-
-    def _DictComp(self, t):
-        self.write("{")
-        self.dispatch(t.key)
-        self.write(": ")
-        self.dispatch(t.value)
-        for gen in t.generators:
-            self.dispatch(gen)
-        self.write("}")
-
-    def _comprehension(self, t):
-        self.write(" for ")
-        self.dispatch(t.target)
-        self.write(" in ")
-        self.dispatch(t.iter)
-        for if_clause in t.ifs:
-            self.write(" if ")
-            self.dispatch(if_clause)
-
-    def _IfExp(self, t):
-        self.write("(")
-        self.dispatch(t.body)
-        self.write(" if ")
-        self.dispatch(t.test)
-        self.write(" else ")
-        self.dispatch(t.orelse)
-        self.write(")")
-
-    def _Set(self, t):
-        assert(t.elts) # should be at least one element
-        self.write("{")
-        interleave(lambda: self.write(", "), self.dispatch, t.elts)
-        self.write("}")
-
-    def _Dict(self, t):
-        self.write("{")
-        def write_pair(pair):
-            (k, v) = pair
-            self.dispatch(k)
-            self.write(": ")
-            self.dispatch(v)
-        interleave(lambda: self.write(", "), write_pair, zip(t.keys, t.values))
-        self.write("}")
-
-    def _Tuple(self, t):
-        self.write("(")
-        if len(t.elts) == 1:
-            (elt,) = t.elts
-            self.dispatch(elt)
-            self.write(",")
-        else:
-            interleave(lambda: self.write(", "), self.dispatch, t.elts)
-        self.write(")")
-
-    unop = {"Invert":"~", "Not": "not", "UAdd":"+", "USub":"-"}
-    def _UnaryOp(self, t):
-        self.write("(")
-        self.write(self.unop[t.op.__class__.__name__])
-        self.write(" ")
-        # If we're applying unary minus to a number, parenthesize the number.
-        # This is necessary: -2147483648 is different from -(2147483648) on
-        # a 32-bit machine (the first is an int, the second a long), and
-        # -7j is different from -(7j).  (The first has real part 0.0, the second
-        # has real part -0.0.)
-        if isinstance(t.op, ast.USub) and isinstance(t.operand, ast.Num):
-            self.write("(")
-            self.dispatch(t.operand)
-            self.write(")")
-        else:
-            self.dispatch(t.operand)
-        self.write(")")
-
-    binop = { "Add":"+", "Sub":"-", "Mult":"*", "Div":"/", "Mod":"%",
-                    "LShift":"<<", "RShift":">>", "BitOr":"|", "BitXor":"^", "BitAnd":"&",
-                    "FloorDiv":"//", "Pow": "**"}
-    def _BinOp(self, t):
-        self.write("(")
-        self.dispatch(t.left)
-        self.write(" " + self.binop[t.op.__class__.__name__] + " ")
-        self.dispatch(t.right)
-        self.write(")")
-
-    cmpops = {"Eq":"==", "NotEq":"!=", "Lt":"<", "LtE":"<=", "Gt":">", "GtE":">=",
-                        "Is":"is", "IsNot":"is not", "In":"in", "NotIn":"not in"}
-    def _Compare(self, t):
-        self.write("(")
-        self.dispatch(t.left)
-        for o, e in zip(t.ops, t.comparators):
-            self.write(" " + self.cmpops[o.__class__.__name__] + " ")
-            self.dispatch(e)
-        self.write(")")
-
-    boolops = {ast.And: 'and', ast.Or: 'or'}
-    def _BoolOp(self, t):
-        self.write("(")
-        s = " %s " % self.boolops[t.op.__class__]
-        interleave(lambda: self.write(s), self.dispatch, t.values)
-        self.write(")")
-
-    def _Attribute(self,t):
-        self.dispatch(t.value)
-        # Special case: 3.__abs__() is a syntax error, so if t.value
-        # is an integer literal then we need to either parenthesize
-        # it or add an extra space to get 3 .__abs__().
-        if isinstance(t.value, ast.Num) and isinstance(t.value.n, int):
-            self.write(" ")
-        self.write(".")
-        self.write(t.attr)
-
-    def _Call(self, t):
-        self.dispatch(t.func)
-        self.write("(")
-        comma = False
-        for e in t.args:
-            if comma: self.write(", ")
-            else: comma = True
-            self.dispatch(e)
-        for e in t.keywords:
-            if comma: self.write(", ")
-            else: comma = True
-            self.dispatch(e)
-        if t.starargs:
-            if comma: self.write(", ")
-            else: comma = True
-            self.write("*")
-            self.dispatch(t.starargs)
-        if t.kwargs:
-            if comma: self.write(", ")
-            else: comma = True
-            self.write("**")
-            self.dispatch(t.kwargs)
-        self.write(")")
-
-    def _Subscript(self, t):
-        self.dispatch(t.value)
-        self.write("[")
-        self.dispatch(t.slice)
-        self.write("]")
-
-    # slice
-    def _Ellipsis(self, t):
-        self.write("...")
-
-    def _Index(self, t):
-        self.dispatch(t.value)
-
-    def _Slice(self, t):
-        if t.lower:
-            self.dispatch(t.lower)
-        self.write(":")
-        if t.upper:
-            self.dispatch(t.upper)
-        if t.step:
-            self.write(":")
-            self.dispatch(t.step)
-
-    def _ExtSlice(self, t):
-        interleave(lambda: self.write(', '), self.dispatch, t.dims)
-
-    # others
-    def _arguments(self, t):
-        first = True
-        # normal arguments
-        defaults = [None] * (len(t.args) - len(t.defaults)) + t.defaults
-        for a,d in zip(t.args, defaults):
-            if first:first = False
-            else: self.write(", ")
-            self.dispatch(a),
-            if d:
-                self.write("=")
-                self.dispatch(d)
-
-        # varargs
-        if t.vararg:
-            if first:first = False
-            else: self.write(", ")
-            self.write("*")
-            self.write(t.vararg)
-
-        # kwargs
-        if t.kwarg:
-            if first:first = False
-            else: self.write(", ")
-            self.write("**"+t.kwarg)
-
-    def _keyword(self, t):
-        self.write(t.arg)
-        self.write("=")
-        self.dispatch(t.value)
-
-    def _Lambda(self, t):
-        self.write("(")
-        self.write("lambda ")
-        self.dispatch(t.args)
-        self.write(": ")
-        self.dispatch(t.body)
-        self.write(")")
-
-    def _alias(self, t):
-        self.write(t.name)
-        if t.asname:
-            self.write(" as "+t.asname)
-
-def roundtrip(filename, output=sys.stdout):
-    with open(filename, "r") as pyfile:
-        source = pyfile.read()
-    tree = compile(source, filename, "exec", ast.PyCF_ONLY_AST)
-    Unparser(tree, output)
-
-
-
-def testdir(a):
-    try:
-        names = [n for n in os.listdir(a) if n.endswith('.py')]
-    except OSError:
-        sys.stderr.write("Directory not readable: %s" % a)
-    else:
-        for n in names:
-            fullname = os.path.join(a, n)
-            if os.path.isfile(fullname):
-                output = cStringIO.StringIO()
-                print 'Testing %s' % fullname
-                try:
-                    roundtrip(fullname, output)
-                except Exception as e:
-                    print '  Failed to compile, exception is %s' % repr(e)
-            elif os.path.isdir(fullname):
-                testdir(fullname)
-
-def main(args):
-    if args[0] == '--testdir':
-        for a in args[1:]:
-            testdir(a)
-    else:
-        for a in args:
-            roundtrip(a)
-
-if __name__=='__main__':
-    main(sys.argv[1:])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/FSProxy.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/FSProxy.py
deleted file mode 100644
index 58354e1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/FSProxy.py
+++ /dev/null
@@ -1,301 +0,0 @@
-"""File System Proxy.
-
-Provide an OS-neutral view on a file system, locally or remotely.
-The functionality is geared towards implementing some sort of
-rdist-like utility between a Mac and a UNIX system.
-
-The module defines three classes:
-
-FSProxyLocal  -- used for local access
-FSProxyServer -- used on the server side of remote access
-FSProxyClient -- used on the client side of remote access
-
-The remote classes are instantiated with an IP address and an optional
-verbosity flag.
-"""
-
-import server
-import client
-import md5
-import os
-import fnmatch
-from stat import *
-import time
-import fnmatch
-
-maxnamelen = 255
-
-skipnames = (os.curdir, os.pardir)
-
-
-class FSProxyLocal:
-
-    def __init__(self):
-        self._dirstack = []
-        self._ignore = ['*.pyc'] + self._readignore()
-
-    def _close(self):
-        while self._dirstack:
-            self.back()
-
-    def _readignore(self):
-        file = self._hide('ignore')
-        try:
-            f = open(file)
-        except IOError:
-            file = self._hide('synctree.ignorefiles')
-            try:
-                f = open(file)
-            except IOError:
-                return []
-        ignore = []
-        while 1:
-            line = f.readline()
-            if not line: break
-            if line[-1] == '\n': line = line[:-1]
-            ignore.append(line)
-        f.close()
-        return ignore
-
-    def _hidden(self, name):
-        return name[0] == '.'
-
-    def _hide(self, name):
-        return '.%s' % name
-
-    def visible(self, name):
-        if len(name) > maxnamelen: return 0
-        if name[-1] == '~': return 0
-        if name in skipnames: return 0
-        if self._hidden(name): return 0
-        head, tail = os.path.split(name)
-        if head or not tail: return 0
-        if os.path.islink(name): return 0
-        if '\0' in open(name, 'rb').read(512): return 0
-        for ign in self._ignore:
-            if fnmatch.fnmatch(name, ign): return 0
-        return 1
-
-    def check(self, name):
-        if not self.visible(name):
-            raise os.error, "protected name %s" % repr(name)
-
-    def checkfile(self, name):
-        self.check(name)
-        if not os.path.isfile(name):
-            raise os.error, "not a plain file %s" % repr(name)
-
-    def pwd(self):
-        return os.getcwd()
-
-    def cd(self, name):
-        self.check(name)
-        save = os.getcwd(), self._ignore
-        os.chdir(name)
-        self._dirstack.append(save)
-        self._ignore = self._ignore + self._readignore()
-
-    def back(self):
-        if not self._dirstack:
-            raise os.error, "empty directory stack"
-        dir, ignore = self._dirstack[-1]
-        os.chdir(dir)
-        del self._dirstack[-1]
-        self._ignore = ignore
-
-    def _filter(self, files, pat = None):
-        if pat:
-            def keep(name, pat = pat):
-                return fnmatch.fnmatch(name, pat)
-            files = filter(keep, files)
-        files = filter(self.visible, files)
-        files.sort()
-        return files
-
-    def list(self, pat = None):
-        files = os.listdir(os.curdir)
-        return self._filter(files, pat)
-
-    def listfiles(self, pat = None):
-        files = os.listdir(os.curdir)
-        files = filter(os.path.isfile, files)
-        return self._filter(files, pat)
-
-    def listsubdirs(self, pat = None):
-        files = os.listdir(os.curdir)
-        files = filter(os.path.isdir, files)
-        return self._filter(files, pat)
-
-    def exists(self, name):
-        return self.visible(name) and os.path.exists(name)
-
-    def isdir(self, name):
-        return self.visible(name) and os.path.isdir(name)
-
-    def islink(self, name):
-        return self.visible(name) and os.path.islink(name)
-
-    def isfile(self, name):
-        return self.visible(name) and os.path.isfile(name)
-
-    def sum(self, name):
-        self.checkfile(name)
-        BUFFERSIZE = 1024*8
-        f = open(name)
-        sum = md5.new()
-        while 1:
-            buffer = f.read(BUFFERSIZE)
-            if not buffer:
-                break
-            sum.update(buffer)
-        return sum.digest()
-
-    def size(self, name):
-        self.checkfile(name)
-        return os.stat(name)[ST_SIZE]
-
-    def mtime(self, name):
-        self.checkfile(name)
-        return time.localtime(os.stat(name)[ST_MTIME])
-
-    def stat(self, name):
-        self.checkfile(name)
-        size = os.stat(name)[ST_SIZE]
-        mtime = time.localtime(os.stat(name)[ST_MTIME])
-        return size, mtime
-
-    def info(self, name):
-        sum = self.sum(name)
-        size = os.stat(name)[ST_SIZE]
-        mtime = time.localtime(os.stat(name)[ST_MTIME])
-        return sum, size, mtime
-
-    def _list(self, function, list):
-        if list is None:
-            list = self.listfiles()
-        res = []
-        for name in list:
-            try:
-                res.append((name, function(name)))
-            except (os.error, IOError):
-                res.append((name, None))
-        return res
-
-    def sumlist(self, list = None):
-        return self._list(self.sum, list)
-
-    def statlist(self, list = None):
-        return self._list(self.stat, list)
-
-    def mtimelist(self, list = None):
-        return self._list(self.mtime, list)
-
-    def sizelist(self, list = None):
-        return self._list(self.size, list)
-
-    def infolist(self, list = None):
-        return self._list(self.info, list)
-
-    def _dict(self, function, list):
-        if list is None:
-            list = self.listfiles()
-        dict = {}
-        for name in list:
-            try:
-                dict[name] = function(name)
-            except (os.error, IOError):
-                pass
-        return dict
-
-    def sumdict(self, list = None):
-        return self.dict(self.sum, list)
-
-    def sizedict(self, list = None):
-        return self.dict(self.size, list)
-
-    def mtimedict(self, list = None):
-        return self.dict(self.mtime, list)
-
-    def statdict(self, list = None):
-        return self.dict(self.stat, list)
-
-    def infodict(self, list = None):
-        return self._dict(self.info, list)
-
-    def read(self, name, offset = 0, length = -1):
-        self.checkfile(name)
-        f = open(name)
-        f.seek(offset)
-        if length == 0:
-            data = ''
-        elif length < 0:
-            data = f.read()
-        else:
-            data = f.read(length)
-        f.close()
-        return data
-
-    def create(self, name):
-        self.check(name)
-        if os.path.exists(name):
-            self.checkfile(name)
-            bname = name + '~'
-            try:
-                os.unlink(bname)
-            except os.error:
-                pass
-            os.rename(name, bname)
-        f = open(name, 'w')
-        f.close()
-
-    def write(self, name, data, offset = 0):
-        self.checkfile(name)
-        f = open(name, 'r+')
-        f.seek(offset)
-        f.write(data)
-        f.close()
-
-    def mkdir(self, name):
-        self.check(name)
-        os.mkdir(name, 0777)
-
-    def rmdir(self, name):
-        self.check(name)
-        os.rmdir(name)
-
-
-class FSProxyServer(FSProxyLocal, server.Server):
-
-    def __init__(self, address, verbose = server.VERBOSE):
-        FSProxyLocal.__init__(self)
-        server.Server.__init__(self, address, verbose)
-
-    def _close(self):
-        server.Server._close(self)
-        FSProxyLocal._close(self)
-
-    def _serve(self):
-        server.Server._serve(self)
-        # Retreat into start directory
-        while self._dirstack: self.back()
-
-
-class FSProxyClient(client.Client):
-
-    def __init__(self, address, verbose = client.VERBOSE):
-        client.Client.__init__(self, address, verbose)
-
-
-def test():
-    import string
-    import sys
-    if sys.argv[1:]:
-        port = string.atoi(sys.argv[1])
-    else:
-        port = 4127
-    proxy = FSProxyServer(('', port))
-    proxy._serverloop()
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/RCSProxy.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/RCSProxy.py
deleted file mode 100644
index b4b0d92..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/RCSProxy.py
+++ /dev/null
@@ -1,198 +0,0 @@
-#! /usr/bin/env python
-
-"""RCS Proxy.
-
-Provide a simplified interface on RCS files, locally or remotely.
-The functionality is geared towards implementing some sort of
-remote CVS like utility.  It is modeled after the similar module
-FSProxy.
-
-The module defines two classes:
-
-RCSProxyLocal  -- used for local access
-RCSProxyServer -- used on the server side of remote access
-
-The corresponding client class, RCSProxyClient, is defined in module
-rcsclient.
-
-The remote classes are instantiated with an IP address and an optional
-verbosity flag.
-"""
-
-import server
-import md5
-import os
-import fnmatch
-import string
-import tempfile
-import rcslib
-
-
-class DirSupport:
-
-    def __init__(self):
-        self._dirstack = []
-
-    def __del__(self):
-        self._close()
-
-    def _close(self):
-        while self._dirstack:
-            self.back()
-
-    def pwd(self):
-        return os.getcwd()
-
-    def cd(self, name):
-        save = os.getcwd()
-        os.chdir(name)
-        self._dirstack.append(save)
-
-    def back(self):
-        if not self._dirstack:
-            raise os.error, "empty directory stack"
-        dir = self._dirstack[-1]
-        os.chdir(dir)
-        del self._dirstack[-1]
-
-    def listsubdirs(self, pat = None):
-        files = os.listdir(os.curdir)
-        files = filter(os.path.isdir, files)
-        return self._filter(files, pat)
-
-    def isdir(self, name):
-        return os.path.isdir(name)
-
-    def mkdir(self, name):
-        os.mkdir(name, 0777)
-
-    def rmdir(self, name):
-        os.rmdir(name)
-
-
-class RCSProxyLocal(rcslib.RCS, DirSupport):
-
-    def __init__(self):
-        rcslib.RCS.__init__(self)
-        DirSupport.__init__(self)
-
-    def __del__(self):
-        DirSupport.__del__(self)
-        rcslib.RCS.__del__(self)
-
-    def sumlist(self, list = None):
-        return self._list(self.sum, list)
-
-    def sumdict(self, list = None):
-        return self._dict(self.sum, list)
-
-    def sum(self, name_rev):
-        f = self._open(name_rev)
-        BUFFERSIZE = 1024*8
-        sum = md5.new()
-        while 1:
-            buffer = f.read(BUFFERSIZE)
-            if not buffer:
-                break
-            sum.update(buffer)
-        self._closepipe(f)
-        return sum.digest()
-
-    def get(self, name_rev):
-        f = self._open(name_rev)
-        data = f.read()
-        self._closepipe(f)
-        return data
-
-    def put(self, name_rev, data, message=None):
-        name, rev = self._unmangle(name_rev)
-        f = open(name, 'w')
-        f.write(data)
-        f.close()
-        self.checkin(name_rev, message)
-        self._remove(name)
-
-    def _list(self, function, list = None):
-        """INTERNAL: apply FUNCTION to all files in LIST.
-
-        Return a list of the results.
-
-        The list defaults to all files in the directory if None.
-
-        """
-        if list is None:
-            list = self.listfiles()
-        res = []
-        for name in list:
-            try:
-                res.append((name, function(name)))
-            except (os.error, IOError):
-                res.append((name, None))
-        return res
-
-    def _dict(self, function, list = None):
-        """INTERNAL: apply FUNCTION to all files in LIST.
-
-        Return a dictionary mapping files to results.
-
-        The list defaults to all files in the directory if None.
-
-        """
-        if list is None:
-            list = self.listfiles()
-        dict = {}
-        for name in list:
-            try:
-                dict[name] = function(name)
-            except (os.error, IOError):
-                pass
-        return dict
-
-
-class RCSProxyServer(RCSProxyLocal, server.SecureServer):
-
-    def __init__(self, address, verbose = server.VERBOSE):
-        RCSProxyLocal.__init__(self)
-        server.SecureServer.__init__(self, address, verbose)
-
-    def _close(self):
-        server.SecureServer._close(self)
-        RCSProxyLocal._close(self)
-
-    def _serve(self):
-        server.SecureServer._serve(self)
-        # Retreat into start directory
-        while self._dirstack: self.back()
-
-
-def test_server():
-    import string
-    import sys
-    if sys.argv[1:]:
-        port = string.atoi(sys.argv[1])
-    else:
-        port = 4127
-    proxy = RCSProxyServer(('', port))
-    proxy._serverloop()
-
-
-def test():
-    import sys
-    if not sys.argv[1:] or sys.argv[1] and sys.argv[1][0] in '0123456789':
-        test_server()
-        sys.exit(0)
-    proxy = RCSProxyLocal()
-    what = sys.argv[1]
-    if hasattr(proxy, what):
-        attr = getattr(proxy, what)
-        if callable(attr):
-            print apply(attr, tuple(sys.argv[2:]))
-        else:
-            print repr(attr)
-    else:
-        print "%s: no such attribute" % what
-        sys.exit(2)
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/README b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/README
deleted file mode 100644
index c8137e9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/README
+++ /dev/null
@@ -1,121 +0,0 @@
-Filesystem, RCS and CVS client and server classes
-=================================================
-
-*** See the security warning at the end of this file! ***
-
-This directory contains various modules and classes that support
-remote file system operations.
-
-CVS stuff
----------
-
-rcvs			Script to put in your bin directory
-rcvs.py			Remote CVS client command line interface
-
-cvslib.py		CVS admin files classes (used by rrcs)
-cvslock.py		CVS locking algorithms
-
-RCS stuff
----------
-
-rrcs			Script to put in your bin directory
-rrcs.py			Remote RCS client command line interface
-
-rcsclient.py		Return an RCSProxyClient instance
-			(has reasonable default server/port/directory)
-
-RCSProxy.py		RCS proxy and server classes (on top of rcslib.py)
-
-rcslib.py		Local-only RCS base class (affects stdout &
-			local work files)
-
-FSProxy stuff
--------------
-
-sumtree.py		Old demo for FSProxy
-cmptree.py		First FSProxy client (used to sync from the Mac)
-FSProxy.py		Filesystem interface classes
-
-Generic client/server stuff
----------------------------
-
-client.py		Client class
-server.py		Server class
-
-security.py		Security mix-in class (not very secure I think)
-
-Other generic stuff
--------------------
-
-cmdfw.py		CommandFrameWork class
-			(used by rcvs, should be used by rrcs as well)
-
-
-Client/Server operation
------------------------
-
-The Client and Server classes implement a simple-minded RPC protocol,
-using Python's pickle module to transfer arguments, return values and
-exceptions with the most generality.  The Server class is instantiated
-with a port number on which it should listen for requests; the Client
-class is instantiated with a host name and a port number where it
-should connect to.  Once a client is connected, a TCP connection is
-maintained between client and server.
-
-The Server class currently handles only one connection at a time;
-however it could be rewritten to allow various modes of operations,
-using multiple threads or processes or the select() system call as
-desired to serve multiple clients simultaneously (when using select(),
-still handling one request at a time).  This would not require
-rewriting of the Client class.  It may also be possible to adapt the
-code to use UDP instead of TCP, but then both classes will have to be
-rewritten (and unless extensive acknowlegements and request serial
-numbers are used, the server should handle duplicate requests, so its
-semantics should be idempotent -- shrudder).
-
-Even though the FSProxy and RCSProxy modules define client classes,
-the client class is fully generic -- what methods it supports is
-determined entirely by the server.  The server class, however, must be
-derived from.  This is generally done as follows:
-
-	from server import Server
-	from client import Client
-
-	# Define a class that performs the operations locally
-	class MyClassLocal:
-		def __init__(self): ...
-		def _close(self): ...
-
-	# Derive a server class using multiple inheritance
-	class MyClassServer(MyClassLocal, Server):
-		def __init__(self, address):
-			# Must initialize MyClassLocal as well as Server
-			MyClassLocal.__init__(self)
-			Server.__init__(self, address)
-		def _close(self):
-			Server._close()
-			MyClassLocal._close()
-
-	# A dummy client class
-	class MyClassClient(Client): pass
-
-Note that because MyClassLocal isn't used in the definition of
-MyClassClient, it would actually be better to place it in a separate
-module so the definition of MyClassLocal isn't executed when we only
-instantiate a client.
-
-The modules client and server should probably be renamed to Client and
-Server in order to match the class names.
-
-
-*** Security warning: this version requires that you have a file
-$HOME/.python_keyfile at the server and client side containing two
-comma- separated numbers.  The security system at the moment makes no
-guarantees of actuallng being secure -- however it requires that the
-key file exists and contains the same numbers at both ends for this to
-work.  (You can specify an alternative keyfile in $PYTHON_KEYFILE).
-Have a look at the Security class in security.py for details;
-basically, if the key file contains (x, y), then the security server
-class chooses a random number z (the challenge) in the range
-10..100000 and the client must be able to produce pow(z, x, y)
-(i.e. z**x mod y).
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/client.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/client.py
deleted file mode 100644
index 41a5bcc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/client.py
+++ /dev/null
@@ -1,157 +0,0 @@
-"""RPC Client module."""
-
-import sys
-import socket
-import pickle
-import __builtin__
-import os
-
-
-# Default verbosity (0 = silent, 1 = print connections, 2 = print requests too)
-VERBOSE = 1
-
-
-class Client:
-
-    """RPC Client class.  No need to derive a class -- it's fully generic."""
-
-    def __init__(self, address, verbose = VERBOSE):
-        self._pre_init(address, verbose)
-        self._post_init()
-
-    def _pre_init(self, address, verbose = VERBOSE):
-        if type(address) == type(0):
-            address = ('', address)
-        self._address = address
-        self._verbose = verbose
-        if self._verbose: print "Connecting to %s ..." % repr(address)
-        self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self._socket.connect(address)
-        if self._verbose: print "Connected."
-        self._lastid = 0 # Last id for which a reply has been received
-        self._nextid = 1 # Id of next request
-        self._replies = {} # Unprocessed replies
-        self._rf = self._socket.makefile('r')
-        self._wf = self._socket.makefile('w')
-
-    def _post_init(self):
-        self._methods = self._call('.methods')
-
-    def __del__(self):
-        self._close()
-
-    def _close(self):
-        if self._rf: self._rf.close()
-        self._rf = None
-        if self._wf: self._wf.close()
-        self._wf = None
-        if self._socket: self._socket.close()
-        self._socket = None
-
-    def __getattr__(self, name):
-        if name in self._methods:
-            method = _stub(self, name)
-            setattr(self, name, method) # XXX circular reference
-            return method
-        raise AttributeError, name
-
-    def _setverbose(self, verbose):
-        self._verbose = verbose
-
-    def _call(self, name, *args):
-        return self._vcall(name, args)
-
-    def _vcall(self, name, args):
-        return self._recv(self._vsend(name, args))
-
-    def _send(self, name, *args):
-        return self._vsend(name, args)
-
-    def _send_noreply(self, name, *args):
-        return self._vsend(name, args, 0)
-
-    def _vsend_noreply(self, name, args):
-        return self._vsend(name, args, 0)
-
-    def _vsend(self, name, args, wantreply = 1):
-        id = self._nextid
-        self._nextid = id+1
-        if not wantreply: id = -id
-        request = (name, args, id)
-        if self._verbose > 1: print "sending request: %s" % repr(request)
-        wp = pickle.Pickler(self._wf)
-        wp.dump(request)
-        return id
-
-    def _recv(self, id):
-        exception, value, rid = self._vrecv(id)
-        if rid != id:
-            raise RuntimeError, "request/reply id mismatch: %d/%d" % (id, rid)
-        if exception is None:
-            return value
-        x = exception
-        if hasattr(__builtin__, exception):
-            x = getattr(__builtin__, exception)
-        elif exception in ('posix.error', 'mac.error'):
-            x = os.error
-        if x == exception:
-            exception = x
-        raise exception, value
-
-    def _vrecv(self, id):
-        self._flush()
-        if self._replies.has_key(id):
-            if self._verbose > 1: print "retrieving previous reply, id = %d" % id
-            reply = self._replies[id]
-            del self._replies[id]
-            return reply
-        aid = abs(id)
-        while 1:
-            if self._verbose > 1: print "waiting for reply, id = %d" % id
-            rp = pickle.Unpickler(self._rf)
-            reply = rp.load()
-            del rp
-            if self._verbose > 1: print "got reply: %s" % repr(reply)
-            rid = reply[2]
-            arid = abs(rid)
-            if arid == aid:
-                if self._verbose > 1: print "got it"
-                return reply
-            self._replies[rid] = reply
-            if arid > aid:
-                if self._verbose > 1: print "got higher id, assume all ok"
-                return (None, None, id)
-
-    def _flush(self):
-        self._wf.flush()
-
-
-from security import Security
-
-
-class SecureClient(Client, Security):
-
-    def __init__(self, *args):
-        import string
-        apply(self._pre_init, args)
-        Security.__init__(self)
-        self._wf.flush()
-        line = self._rf.readline()
-        challenge = string.atoi(string.strip(line))
-        response = self._encode_challenge(challenge)
-        line = repr(long(response))
-        if line[-1] in 'Ll': line = line[:-1]
-        self._wf.write(line + '\n')
-        self._wf.flush()
-        self._post_init()
-
-class _stub:
-
-    """Helper class for Client -- each instance serves as a method of the client."""
-
-    def __init__(self, client, name):
-        self._client = client
-        self._name = name
-
-    def __call__(self, *args):
-        return self._client._vcall(self._name, args)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cmdfw.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cmdfw.py
deleted file mode 100644
index 96cc257..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cmdfw.py
+++ /dev/null
@@ -1,144 +0,0 @@
-"Framework for command line interfaces like CVS.  See class CmdFrameWork."
-
-
-class CommandFrameWork:
-
-    """Framework class for command line interfaces like CVS.
-
-    The general command line structure is
-
-            command [flags] subcommand [subflags] [argument] ...
-
-    There's a class variable GlobalFlags which specifies the
-    global flags options.  Subcommands are defined by defining
-    methods named do_<subcommand>.  Flags for the subcommand are
-    defined by defining class or instance variables named
-    flags_<subcommand>.  If there's no command, method default()
-    is called.  The __doc__ strings for the do_ methods are used
-    for the usage message, printed after the general usage message
-    which is the class variable UsageMessage.  The class variable
-    PostUsageMessage is printed after all the do_ methods' __doc__
-    strings.  The method's return value can be a suggested exit
-    status.  [XXX Need to rewrite this to clarify it.]
-
-    Common usage is to derive a class, instantiate it, and then call its
-    run() method; by default this takes its arguments from sys.argv[1:].
-    """
-
-    UsageMessage = \
-      "usage: (name)s [flags] subcommand [subflags] [argument] ..."
-
-    PostUsageMessage = None
-
-    GlobalFlags = ''
-
-    def __init__(self):
-        """Constructor, present for completeness."""
-        pass
-
-    def run(self, args = None):
-        """Process flags, subcommand and options, then run it."""
-        import getopt, sys
-        if args is None: args = sys.argv[1:]
-        try:
-            opts, args = getopt.getopt(args, self.GlobalFlags)
-        except getopt.error, msg:
-            return self.usage(msg)
-        self.options(opts)
-        if not args:
-            self.ready()
-            return self.default()
-        else:
-            cmd = args[0]
-            mname = 'do_' + cmd
-            fname = 'flags_' + cmd
-            try:
-                method = getattr(self, mname)
-            except AttributeError:
-                return self.usage("command %r unknown" % (cmd,))
-            try:
-                flags = getattr(self, fname)
-            except AttributeError:
-                flags = ''
-            try:
-                opts, args = getopt.getopt(args[1:], flags)
-            except getopt.error, msg:
-                return self.usage(
-                        "subcommand %s: " % cmd + str(msg))
-            self.ready()
-            return method(opts, args)
-
-    def options(self, opts):
-        """Process the options retrieved by getopt.
-        Override this if you have any options."""
-        if opts:
-            print "-"*40
-            print "Options:"
-            for o, a in opts:
-                print 'option', o, 'value', repr(a)
-            print "-"*40
-
-    def ready(self):
-        """Called just before calling the subcommand."""
-        pass
-
-    def usage(self, msg = None):
-        """Print usage message.  Return suitable exit code (2)."""
-        if msg: print msg
-        print self.UsageMessage % {'name': self.__class__.__name__}
-        docstrings = {}
-        c = self.__class__
-        while 1:
-            for name in dir(c):
-                if name[:3] == 'do_':
-                    if docstrings.has_key(name):
-                        continue
-                    try:
-                        doc = getattr(c, name).__doc__
-                    except:
-                        doc = None
-                    if doc:
-                        docstrings[name] = doc
-            if not c.__bases__:
-                break
-            c = c.__bases__[0]
-        if docstrings:
-            print "where subcommand can be:"
-            names = docstrings.keys()
-            names.sort()
-            for name in names:
-                print docstrings[name]
-        if self.PostUsageMessage:
-            print self.PostUsageMessage
-        return 2
-
-    def default(self):
-        """Default method, called when no subcommand is given.
-        You should always override this."""
-        print "Nobody expects the Spanish Inquisition!"
-
-
-def test():
-    """Test script -- called when this module is run as a script."""
-    import sys
-    class Hello(CommandFrameWork):
-        def do_hello(self, opts, args):
-            "hello -- print 'hello world', needs no arguments"
-            print "Hello, world"
-    x = Hello()
-    tests = [
-            [],
-            ['hello'],
-            ['spam'],
-            ['-x'],
-            ['hello', '-x'],
-            None,
-            ]
-    for t in tests:
-        print '-'*10, t, '-'*10
-        sts = x.run(t)
-        print "Exit status:", repr(sts)
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cmptree.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cmptree.py
deleted file mode 100644
index 2f8a8a8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cmptree.py
+++ /dev/null
@@ -1,208 +0,0 @@
-"""Compare local and remote dictionaries and transfer differing files -- like rdist."""
-
-import sys
-from repr import repr
-import FSProxy
-import time
-import os
-
-def main():
-    pwd = os.getcwd()
-    s = raw_input("chdir [%s] " % pwd)
-    if s:
-        os.chdir(s)
-        pwd = os.getcwd()
-    host = ask("host", 'voorn.cwi.nl')
-    port = 4127
-    verbose = 1
-    mode = ''
-    print """\
-Mode should be a string of characters, indicating what to do with differences.
-r - read different files to local file system
-w - write different files to remote file system
-c - create new files, either remote or local
-d - delete disappearing files, either remote or local
-"""
-    s = raw_input("mode [%s] " % mode)
-    if s: mode = s
-    address = (host, port)
-    t1 = time.time()
-    local = FSProxy.FSProxyLocal()
-    remote = FSProxy.FSProxyClient(address, verbose)
-    compare(local, remote, mode)
-    remote._close()
-    local._close()
-    t2 = time.time()
-    dt = t2-t1
-    mins, secs = divmod(dt, 60)
-    print mins, "minutes and", round(secs), "seconds"
-    raw_input("[Return to exit] ")
-
-def ask(prompt, default):
-    s = raw_input("%s [%s] " % (prompt, default))
-    return s or default
-
-def askint(prompt, default):
-    s = raw_input("%s [%s] " % (prompt, str(default)))
-    if s: return string.atoi(s)
-    return default
-
-def compare(local, remote, mode):
-    print
-    print "PWD =", repr(os.getcwd())
-    sums_id = remote._send('sumlist')
-    subdirs_id = remote._send('listsubdirs')
-    remote._flush()
-    print "calculating local sums ..."
-    lsumdict = {}
-    for name, info in local.sumlist():
-        lsumdict[name] = info
-    print "getting remote sums ..."
-    sums = remote._recv(sums_id)
-    print "got", len(sums)
-    rsumdict = {}
-    for name, rsum in sums:
-        rsumdict[name] = rsum
-        if not lsumdict.has_key(name):
-            print repr(name), "only remote"
-            if 'r' in mode and 'c' in mode:
-                recvfile(local, remote, name)
-        else:
-            lsum = lsumdict[name]
-            if lsum != rsum:
-                print repr(name),
-                rmtime = remote.mtime(name)
-                lmtime = local.mtime(name)
-                if rmtime > lmtime:
-                    print "remote newer",
-                    if 'r' in mode:
-                        recvfile(local, remote, name)
-                elif lmtime > rmtime:
-                    print "local newer",
-                    if 'w' in mode:
-                        sendfile(local, remote, name)
-                else:
-                    print "same mtime but different sum?!?!",
-                print
-    for name in lsumdict.keys():
-        if not rsumdict.keys():
-            print repr(name), "only locally",
-            fl()
-            if 'w' in mode and 'c' in mode:
-                sendfile(local, remote, name)
-            elif 'r' in mode and 'd' in mode:
-                os.unlink(name)
-                print "removed."
-            print
-    print "gettin subdirs ..."
-    subdirs = remote._recv(subdirs_id)
-    common = []
-    for name in subdirs:
-        if local.isdir(name):
-            print "Common subdirectory", repr(name)
-            common.append(name)
-        else:
-            print "Remote subdirectory", repr(name), "not found locally"
-            if 'r' in mode and 'c' in mode:
-                pr = "Create local subdirectory %s? [y] " % \
-                     repr(name)
-                if 'y' in mode:
-                    ok = 'y'
-                else:
-                    ok = ask(pr, "y")
-                if ok[:1] in ('y', 'Y'):
-                    local.mkdir(name)
-                    print "Subdirectory %s made" % \
-                            repr(name)
-                    common.append(name)
-    lsubdirs = local.listsubdirs()
-    for name in lsubdirs:
-        if name not in subdirs:
-            print "Local subdirectory", repr(name), "not found remotely"
-    for name in common:
-        print "Entering subdirectory", repr(name)
-        local.cd(name)
-        remote.cd(name)
-        compare(local, remote, mode)
-        remote.back()
-        local.back()
-
-def sendfile(local, remote, name):
-    try:
-        remote.create(name)
-    except (IOError, os.error), msg:
-        print "cannot create:", msg
-        return
-
-    print "sending ...",
-    fl()
-
-    data = open(name).read()
-
-    t1 = time.time()
-
-    remote._send_noreply('write', name, data)
-    remote._flush()
-
-    t2 = time.time()
-
-    dt = t2-t1
-    print len(data), "bytes in", round(dt), "seconds",
-    if dt:
-        print "i.e.", round(len(data)/dt), "bytes/sec",
-    print
-
-def recvfile(local, remote, name):
-    ok = 0
-    try:
-        rv = recvfile_real(local, remote, name)
-        ok = 1
-        return rv
-    finally:
-        if not ok:
-            print "*** recvfile of %r failed, deleting" % (name,)
-            local.delete(name)
-
-def recvfile_real(local, remote, name):
-    try:
-        local.create(name)
-    except (IOError, os.error), msg:
-        print "cannot create:", msg
-        return
-
-    print "receiving ...",
-    fl()
-
-    f = open(name, 'w')
-    t1 = time.time()
-
-    length = 4*1024
-    offset = 0
-    id = remote._send('read', name, offset, length)
-    remote._flush()
-    while 1:
-        newoffset = offset + length
-        newid = remote._send('read', name, newoffset, length)
-        data = remote._recv(id)
-        id = newid
-        if not data: break
-        f.seek(offset)
-        f.write(data)
-        offset = newoffset
-    size = f.tell()
-
-    t2 = time.time()
-    f.close()
-
-    dt = t2-t1
-    print size, "bytes in", round(dt), "seconds",
-    if dt:
-        print "i.e.", size//dt, "bytes/sec",
-    print
-    remote._recv(id) # ignored
-
-def fl():
-    sys.stdout.flush()
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cvslib.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cvslib.py
deleted file mode 100644
index 41c5979..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cvslib.py
+++ /dev/null
@@ -1,364 +0,0 @@
-"""Utilities for CVS administration."""
-
-import string
-import os
-import time
-import md5
-import fnmatch
-
-if not hasattr(time, 'timezone'):
-    time.timezone = 0
-
-class File:
-
-    """Represent a file's status.
-
-    Instance variables:
-
-    file -- the filename (no slashes), None if uninitialized
-    lseen -- true if the data for the local file is up to date
-    eseen -- true if the data from the CVS/Entries entry is up to date
-             (this implies that the entry must be written back)
-    rseen -- true if the data for the remote file is up to date
-    proxy -- RCSProxy instance used to contact the server, or None
-
-    Note that lseen and rseen don't necessary mean that a local
-    or remote file *exists* -- they indicate that we've checked it.
-    However, eseen means that this instance corresponds to an
-    entry in the CVS/Entries file.
-
-    If lseen is true:
-
-    lsum -- checksum of the local file, None if no local file
-    lctime -- ctime of the local file, None if no local file
-    lmtime -- mtime of the local file, None if no local file
-
-    If eseen is true:
-
-    erev -- revision, None if this is a no revision (not '0')
-    enew -- true if this is an uncommitted added file
-    edeleted -- true if this is an uncommitted removed file
-    ectime -- ctime of last local file corresponding to erev
-    emtime -- mtime of last local file corresponding to erev
-    extra -- 5th string from CVS/Entries file
-
-    If rseen is true:
-
-    rrev -- revision of head, None if non-existent
-    rsum -- checksum of that revision, Non if non-existent
-
-    If eseen and rseen are both true:
-
-    esum -- checksum of revision erev, None if no revision
-
-    Note
-    """
-
-    def __init__(self, file = None):
-        if file and '/' in file:
-            raise ValueError, "no slash allowed in file"
-        self.file = file
-        self.lseen = self.eseen = self.rseen = 0
-        self.proxy = None
-
-    def __cmp__(self, other):
-        return cmp(self.file, other.file)
-
-    def getlocal(self):
-        try:
-            self.lmtime, self.lctime = os.stat(self.file)[-2:]
-        except os.error:
-            self.lmtime = self.lctime = self.lsum = None
-        else:
-            self.lsum = md5.new(open(self.file).read()).digest()
-        self.lseen = 1
-
-    def getentry(self, line):
-        words = string.splitfields(line, '/')
-        if self.file and words[1] != self.file:
-            raise ValueError, "file name mismatch"
-        self.file = words[1]
-        self.erev = words[2]
-        self.edeleted = 0
-        self.enew = 0
-        self.ectime = self.emtime = None
-        if self.erev[:1] == '-':
-            self.edeleted = 1
-            self.erev = self.erev[1:]
-        if self.erev == '0':
-            self.erev = None
-            self.enew = 1
-        else:
-            dates = words[3]
-            self.ectime = unctime(dates[:24])
-            self.emtime = unctime(dates[25:])
-        self.extra = words[4]
-        if self.rseen:
-            self.getesum()
-        self.eseen = 1
-
-    def getremote(self, proxy = None):
-        if proxy:
-            self.proxy = proxy
-        try:
-            self.rrev = self.proxy.head(self.file)
-        except (os.error, IOError):
-            self.rrev = None
-        if self.rrev:
-            self.rsum = self.proxy.sum(self.file)
-        else:
-            self.rsum = None
-        if self.eseen:
-            self.getesum()
-        self.rseen = 1
-
-    def getesum(self):
-        if self.erev == self.rrev:
-            self.esum = self.rsum
-        elif self.erev:
-            name = (self.file, self.erev)
-            self.esum = self.proxy.sum(name)
-        else:
-            self.esum = None
-
-    def putentry(self):
-        """Return a line suitable for inclusion in CVS/Entries.
-
-        The returned line is terminated by a newline.
-        If no entry should be written for this file,
-        return "".
-        """
-        if not self.eseen:
-            return ""
-
-        rev = self.erev or '0'
-        if self.edeleted:
-            rev = '-' + rev
-        if self.enew:
-            dates = 'Initial ' + self.file
-        else:
-            dates = gmctime(self.ectime) + ' ' + \
-                    gmctime(self.emtime)
-        return "/%s/%s/%s/%s/\n" % (
-                self.file,
-                rev,
-                dates,
-                self.extra)
-
-    def report(self):
-        print '-'*50
-        def r(key, repr=repr, self=self):
-            try:
-                value = repr(getattr(self, key))
-            except AttributeError:
-                value = "?"
-            print "%-15s:" % key, value
-        r("file")
-        if self.lseen:
-            r("lsum", hexify)
-            r("lctime", gmctime)
-            r("lmtime", gmctime)
-        if self.eseen:
-            r("erev")
-            r("enew")
-            r("edeleted")
-            r("ectime", gmctime)
-            r("emtime", gmctime)
-        if self.rseen:
-            r("rrev")
-            r("rsum", hexify)
-            if self.eseen:
-                r("esum", hexify)
-
-
-class CVS:
-
-    """Represent the contents of a CVS admin file (and more).
-
-    Class variables:
-
-    FileClass -- the class to be instantiated for entries
-                 (this should be derived from class File above)
-    IgnoreList -- shell patterns for local files to be ignored
-
-    Instance variables:
-
-    entries -- a dictionary containing File instances keyed by
-               their file name
-    proxy -- an RCSProxy instance, or None
-    """
-
-    FileClass = File
-
-    IgnoreList = ['.*', '@*', ',*', '*~', '*.o', '*.a', '*.so', '*.pyc']
-
-    def __init__(self):
-        self.entries = {}
-        self.proxy = None
-
-    def setproxy(self, proxy):
-        if proxy is self.proxy:
-            return
-        self.proxy = proxy
-        for e in self.entries.values():
-            e.rseen = 0
-
-    def getentries(self):
-        """Read the contents of CVS/Entries"""
-        self.entries = {}
-        f = self.cvsopen("Entries")
-        while 1:
-            line = f.readline()
-            if not line: break
-            e = self.FileClass()
-            e.getentry(line)
-            self.entries[e.file] = e
-        f.close()
-
-    def putentries(self):
-        """Write CVS/Entries back"""
-        f = self.cvsopen("Entries", 'w')
-        for e in self.values():
-            f.write(e.putentry())
-        f.close()
-
-    def getlocalfiles(self):
-        list = self.entries.keys()
-        addlist = os.listdir(os.curdir)
-        for name in addlist:
-            if name in list:
-                continue
-            if not self.ignored(name):
-                list.append(name)
-        list.sort()
-        for file in list:
-            try:
-                e = self.entries[file]
-            except KeyError:
-                e = self.entries[file] = self.FileClass(file)
-            e.getlocal()
-
-    def getremotefiles(self, proxy = None):
-        if proxy:
-            self.proxy = proxy
-        if not self.proxy:
-            raise RuntimeError, "no RCS proxy"
-        addlist = self.proxy.listfiles()
-        for file in addlist:
-            try:
-                e = self.entries[file]
-            except KeyError:
-                e = self.entries[file] = self.FileClass(file)
-            e.getremote(self.proxy)
-
-    def report(self):
-        for e in self.values():
-            e.report()
-        print '-'*50
-
-    def keys(self):
-        keys = self.entries.keys()
-        keys.sort()
-        return keys
-
-    def values(self):
-        def value(key, self=self):
-            return self.entries[key]
-        return map(value, self.keys())
-
-    def items(self):
-        def item(key, self=self):
-            return (key, self.entries[key])
-        return map(item, self.keys())
-
-    def cvsexists(self, file):
-        file = os.path.join("CVS", file)
-        return os.path.exists(file)
-
-    def cvsopen(self, file, mode = 'r'):
-        file = os.path.join("CVS", file)
-        if 'r' not in mode:
-            self.backup(file)
-        return open(file, mode)
-
-    def backup(self, file):
-        if os.path.isfile(file):
-            bfile = file + '~'
-            try: os.unlink(bfile)
-            except os.error: pass
-            os.rename(file, bfile)
-
-    def ignored(self, file):
-        if os.path.isdir(file): return True
-        for pat in self.IgnoreList:
-            if fnmatch.fnmatch(file, pat): return True
-        return False
-
-
-# hexify and unhexify are useful to print MD5 checksums in hex format
-
-hexify_format = '%02x' * 16
-def hexify(sum):
-    "Return a hex representation of a 16-byte string (e.g. an MD5 digest)"
-    if sum is None:
-        return "None"
-    return hexify_format % tuple(map(ord, sum))
-
-def unhexify(hexsum):
-    "Return the original from a hexified string"
-    if hexsum == "None":
-        return None
-    sum = ''
-    for i in range(0, len(hexsum), 2):
-        sum = sum + chr(string.atoi(hexsum[i:i+2], 16))
-    return sum
-
-
-unctime_monthmap = {}
-def unctime(date):
-    if date == "None": return None
-    if not unctime_monthmap:
-        months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
-                  'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
-        i = 0
-        for m in months:
-            i = i+1
-            unctime_monthmap[m] = i
-    words = string.split(date) # Day Mon DD HH:MM:SS YEAR
-    year = string.atoi(words[4])
-    month = unctime_monthmap[words[1]]
-    day = string.atoi(words[2])
-    [hh, mm, ss] = map(string.atoi, string.splitfields(words[3], ':'))
-    ss = ss - time.timezone
-    return time.mktime((year, month, day, hh, mm, ss, 0, 0, 0))
-
-def gmctime(t):
-    if t is None: return "None"
-    return time.asctime(time.gmtime(t))
-
-def test_unctime():
-    now = int(time.time())
-    t = time.gmtime(now)
-    at = time.asctime(t)
-    print 'GMT', now, at
-    print 'timezone', time.timezone
-    print 'local', time.ctime(now)
-    u = unctime(at)
-    print 'unctime()', u
-    gu = time.gmtime(u)
-    print '->', gu
-    print time.asctime(gu)
-
-def test():
-    x = CVS()
-    x.getentries()
-    x.getlocalfiles()
-##      x.report()
-    import rcsclient
-    proxy = rcsclient.openrcsclient()
-    x.getremotefiles(proxy)
-    x.report()
-
-
-if __name__ == "__main__":
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cvslock.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cvslock.py
deleted file mode 100644
index 95f5c58..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/cvslock.py
+++ /dev/null
@@ -1,280 +0,0 @@
-"""CVS locking algorithm.
-
-CVS locking strategy
-====================
-
-As reverse engineered from the CVS 1.3 sources (file lock.c):
-
-- Locking is done on a per repository basis (but a process can hold
-write locks for multiple directories); all lock files are placed in
-the repository and have names beginning with "#cvs.".
-
-- Before even attempting to lock, a file "#cvs.tfl.<pid>" is created
-(and removed again), to test that we can write the repository.  [The
-algorithm can still be fooled (1) if the repository's mode is changed
-while attempting to lock; (2) if this file exists and is writable but
-the directory is not.]
-
-- While creating the actual read/write lock files (which may exist for
-a long time), a "meta-lock" is held.  The meta-lock is a directory
-named "#cvs.lock" in the repository.  The meta-lock is also held while
-a write lock is held.
-
-- To set a read lock:
-
-        - acquire the meta-lock
-        - create the file "#cvs.rfl.<pid>"
-        - release the meta-lock
-
-- To set a write lock:
-
-        - acquire the meta-lock
-        - check that there are no files called "#cvs.rfl.*"
-                - if there are, release the meta-lock, sleep, try again
-        - create the file "#cvs.wfl.<pid>"
-
-- To release a write lock:
-
-        - remove the file "#cvs.wfl.<pid>"
-        - rmdir the meta-lock
-
-- To release a read lock:
-
-        - remove the file "#cvs.rfl.<pid>"
-
-
-Additional notes
-----------------
-
-- A process should read-lock at most one repository at a time.
-
-- A process may write-lock as many repositories as it wishes (to avoid
-deadlocks, I presume it should always lock them top-down in the
-directory hierarchy).
-
-- A process should make sure it removes all its lock files and
-directories when it crashes.
-
-- Limitation: one user id should not be committing files into the same
-repository at the same time.
-
-
-Turn this into Python code
---------------------------
-
-rl = ReadLock(repository, waittime)
-
-wl = WriteLock(repository, waittime)
-
-list = MultipleWriteLock([repository1, repository2, ...], waittime)
-
-"""
-
-
-import os
-import time
-import stat
-import pwd
-
-
-# Default wait time
-DELAY = 10
-
-
-# XXX This should be the same on all Unix versions
-EEXIST = 17
-
-
-# Files used for locking (must match cvs.h in the CVS sources)
-CVSLCK = "#cvs.lck"
-CVSRFL = "#cvs.rfl."
-CVSWFL = "#cvs.wfl."
-
-
-class Error:
-
-    def __init__(self, msg):
-        self.msg = msg
-
-    def __repr__(self):
-        return repr(self.msg)
-
-    def __str__(self):
-        return str(self.msg)
-
-
-class Locked(Error):
-    pass
-
-
-class Lock:
-
-    def __init__(self, repository = ".", delay = DELAY):
-        self.repository = repository
-        self.delay = delay
-        self.lockdir = None
-        self.lockfile = None
-        pid = repr(os.getpid())
-        self.cvslck = self.join(CVSLCK)
-        self.cvsrfl = self.join(CVSRFL + pid)
-        self.cvswfl = self.join(CVSWFL + pid)
-
-    def __del__(self):
-        print "__del__"
-        self.unlock()
-
-    def setlockdir(self):
-        while 1:
-            try:
-                self.lockdir = self.cvslck
-                os.mkdir(self.cvslck, 0777)
-                return
-            except os.error, msg:
-                self.lockdir = None
-                if msg[0] == EEXIST:
-                    try:
-                        st = os.stat(self.cvslck)
-                    except os.error:
-                        continue
-                    self.sleep(st)
-                    continue
-                raise Error("failed to lock %s: %s" % (
-                        self.repository, msg))
-
-    def unlock(self):
-        self.unlockfile()
-        self.unlockdir()
-
-    def unlockfile(self):
-        if self.lockfile:
-            print "unlink", self.lockfile
-            try:
-                os.unlink(self.lockfile)
-            except os.error:
-                pass
-            self.lockfile = None
-
-    def unlockdir(self):
-        if self.lockdir:
-            print "rmdir", self.lockdir
-            try:
-                os.rmdir(self.lockdir)
-            except os.error:
-                pass
-            self.lockdir = None
-
-    def sleep(self, st):
-        sleep(st, self.repository, self.delay)
-
-    def join(self, name):
-        return os.path.join(self.repository, name)
-
-
-def sleep(st, repository, delay):
-    if delay <= 0:
-        raise Locked(st)
-    uid = st[stat.ST_UID]
-    try:
-        pwent = pwd.getpwuid(uid)
-        user = pwent[0]
-    except KeyError:
-        user = "uid %d" % uid
-    print "[%s]" % time.ctime(time.time())[11:19],
-    print "Waiting for %s's lock in" % user, repository
-    time.sleep(delay)
-
-
-class ReadLock(Lock):
-
-    def __init__(self, repository, delay = DELAY):
-        Lock.__init__(self, repository, delay)
-        ok = 0
-        try:
-            self.setlockdir()
-            self.lockfile = self.cvsrfl
-            fp = open(self.lockfile, 'w')
-            fp.close()
-            ok = 1
-        finally:
-            if not ok:
-                self.unlockfile()
-            self.unlockdir()
-
-
-class WriteLock(Lock):
-
-    def __init__(self, repository, delay = DELAY):
-        Lock.__init__(self, repository, delay)
-        self.setlockdir()
-        while 1:
-            uid = self.readers_exist()
-            if not uid:
-                break
-            self.unlockdir()
-            self.sleep(uid)
-        self.lockfile = self.cvswfl
-        fp = open(self.lockfile, 'w')
-        fp.close()
-
-    def readers_exist(self):
-        n = len(CVSRFL)
-        for name in os.listdir(self.repository):
-            if name[:n] == CVSRFL:
-                try:
-                    st = os.stat(self.join(name))
-                except os.error:
-                    continue
-                return st
-        return None
-
-
-def MultipleWriteLock(repositories, delay = DELAY):
-    while 1:
-        locks = []
-        for r in repositories:
-            try:
-                locks.append(WriteLock(r, 0))
-            except Locked, instance:
-                del locks
-                break
-        else:
-            break
-        sleep(instance.msg, r, delay)
-    return list
-
-
-def test():
-    import sys
-    if sys.argv[1:]:
-        repository = sys.argv[1]
-    else:
-        repository = "."
-    rl = None
-    wl = None
-    try:
-        print "attempting write lock ..."
-        wl = WriteLock(repository)
-        print "got it."
-        wl.unlock()
-        print "attempting read lock ..."
-        rl = ReadLock(repository)
-        print "got it."
-        rl.unlock()
-    finally:
-        print [1]
-        sys.exc_traceback = None
-        print [2]
-        if rl:
-            rl.unlock()
-        print [3]
-        if wl:
-            wl.unlock()
-        print [4]
-        rl = None
-        print [5]
-        wl = None
-        print [6]
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/mac.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/mac.py
deleted file mode 100644
index 43a904e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/mac.py
+++ /dev/null
@@ -1,19 +0,0 @@
-import sys
-import string
-import rcvs
-
-def main():
-    while 1:
-        try:
-            line = raw_input('$ ')
-        except EOFError:
-            break
-        words = string.split(line)
-        if not words:
-            continue
-        if words[0] != 'rcvs':
-            words.insert(0, 'rcvs')
-        sys.argv = words
-        rcvs.main()
-
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/makechangelog.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/makechangelog.py
deleted file mode 100644
index 2f5519f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/makechangelog.py
+++ /dev/null
@@ -1,109 +0,0 @@
-#! /usr/bin/env python
-
-"""Turn a pile of RCS log output into ChangeLog file entries.
-
-"""
-
-import sys
-import string
-import re
-import getopt
-import time
-
-def main():
-    args = sys.argv[1:]
-    opts, args = getopt.getopt(args, 'p:')
-    prefix = ''
-    for o, a in opts:
-        if p == '-p': prefix = a
-
-    f = sys.stdin
-    allrevs = []
-    while 1:
-        file = getnextfile(f)
-        if not file: break
-        revs = []
-        while 1:
-            rev = getnextrev(f, file)
-            if not rev:
-                break
-            revs.append(rev)
-        if revs:
-            allrevs[len(allrevs):] = revs
-    allrevs.sort()
-    allrevs.reverse()
-    for rev in allrevs:
-        formatrev(rev, prefix)
-
-parsedateprog = re.compile(
-    '^date: ([0-9]+)/([0-9]+)/([0-9]+) ' +
-    '([0-9]+):([0-9]+):([0-9]+);  author: ([^ ;]+)')
-
-authormap = {
-    'guido': 'Guido van Rossum  <guido@cnri.reston.va.us>',
-    'jack': 'Jack Jansen  <jack@cwi.nl>',
-    'sjoerd': 'Sjoerd Mullender  <sjoerd@cwi.nl>',
-    }
-
-def formatrev(rev, prefix):
-    dateline, file, revline, log = rev
-    if parsedateprog.match(dateline) >= 0:
-        fields = parsedateprog.group(1, 2, 3, 4, 5, 6)
-        author = parsedateprog.group(7)
-        if authormap.has_key(author): author = authormap[author]
-        tfields = map(string.atoi, fields) + [0, 0, 0]
-        tfields[5] = tfields[5] - time.timezone
-        t = time.mktime(tuple(tfields))
-        print time.ctime(t), '', author
-        words = string.split(log)
-        words[:0] = ['*', prefix + file + ':']
-        maxcol = 72-8
-        col = maxcol
-        for word in words:
-            if col > 0 and col + len(word) >= maxcol:
-                print
-                print '\t' + word,
-                col = -1
-            else:
-                print word,
-            col = col + 1 + len(word)
-        print
-        print
-
-startprog = re.compile("^Working file: (.*)$")
-
-def getnextfile(f):
-    while 1:
-        line = f.readline()
-        if not line: return None
-        if startprog.match(line) >= 0:
-            file = startprog.group(1)
-            # Skip until first revision
-            while 1:
-                line = f.readline()
-                if not line: return None
-                if line[:10] == '='*10: return None
-                if line[:10] == '-'*10: break
-##              print "Skipped", line,
-            return file
-##      else:
-##          print "Ignored", line,
-
-def getnextrev(f, file):
-    # This is called when we are positioned just after a '---' separator
-    revline = f.readline()
-    dateline = f.readline()
-    log = ''
-    while 1:
-        line = f.readline()
-        if not line: break
-        if line[:10] == '='*10:
-            # Ignore the *last* log entry for each file since it
-            # is the revision since which we are logging.
-            return None
-        if line[:10] == '-'*10: break
-        log = log + line
-    return dateline, file, revline, log
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcsbump b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcsbump
deleted file mode 100644
index 775de71..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcsbump
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env python
-# -*- python -*-
-#
-# guido's version, from rcsbump,v 1.2 1995/06/22 21:27:27 bwarsaw Exp
-#
-# Python script for bumping up an RCS major revision number.
-
-import sys
-import re
-import rcslib
-import string
-
-WITHLOCK = 1
-majorrev_re = re.compile('^[0-9]+')
-
-dir = rcslib.RCS()
-
-if sys.argv[1:]:
-    files = sys.argv[1:]
-else:
-    files = dir.listfiles()
-
-for file in files:
-    # get the major revnumber of the file
-    headbranch = dir.info(file)['head']
-    majorrev_re.match(headbranch)
-    majorrev = string.atoi(majorrev_re.group(0)) + 1
-
-    if not dir.islocked(file):
-        dir.checkout(file, WITHLOCK)
-
-    msg = "Bumping major revision number (to %d)" % majorrev
-    dir.checkin((file, "%s.0" % majorrev), msg, "-f")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcsclient.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcsclient.py
deleted file mode 100644
index dfa9436..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcsclient.py
+++ /dev/null
@@ -1,71 +0,0 @@
-"""Customize this file to change the default client etc.
-
-(In general, it is probably be better to make local operation the
-default and to require something like an RCSSERVER environment
-variable to enable remote operation.)
-
-"""
-
-import string
-import os
-
-# These defaults don't belong here -- they should be taken from the
-# environment or from a hidden file in the current directory
-
-HOST = 'voorn.cwi.nl'
-PORT = 4127
-VERBOSE = 1
-LOCAL = 0
-
-import client
-
-
-class RCSProxyClient(client.SecureClient):
-
-    def __init__(self, address, verbose = client.VERBOSE):
-        client.SecureClient.__init__(self, address, verbose)
-
-
-def openrcsclient(opts = []):
-    "open an RCSProxy client based on a list of options returned by getopt"
-    import RCSProxy
-    host = HOST
-    port = PORT
-    verbose = VERBOSE
-    local = LOCAL
-    directory = None
-    for o, a in opts:
-        if o == '-h':
-            host = a
-            if ':' in host:
-                i = string.find(host, ':')
-                host, p = host[:i], host[i+1:]
-                if p:
-                    port = string.atoi(p)
-        if o == '-p':
-            port = string.atoi(a)
-        if o == '-d':
-            directory = a
-        if o == '-v':
-            verbose = verbose + 1
-        if o == '-q':
-            verbose = 0
-        if o == '-L':
-            local = 1
-    if local:
-        import RCSProxy
-        x = RCSProxy.RCSProxyLocal()
-    else:
-        address = (host, port)
-        x = RCSProxyClient(address, verbose)
-    if not directory:
-        try:
-            directory = open(os.path.join("CVS", "Repository")).readline()
-        except IOError:
-            pass
-        else:
-            if directory[-1] == '\n':
-                directory = directory[:-1]
-    if directory:
-        x.cd(directory)
-    return x
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcslib.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcslib.py
deleted file mode 100644
index 7d6ce9f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcslib.py
+++ /dev/null
@@ -1,334 +0,0 @@
-"""RCS interface module.
-
-Defines the class RCS, which represents a directory with rcs version
-files and (possibly) corresponding work files.
-
-"""
-
-
-import fnmatch
-import os
-import re
-import string
-import tempfile
-
-
-class RCS:
-
-    """RCS interface class (local filesystem version).
-
-    An instance of this class represents a directory with rcs version
-    files and (possible) corresponding work files.
-
-    Methods provide access to most rcs operations such as
-    checkin/checkout, access to the rcs metadata (revisions, logs,
-    branches etc.) as well as some filesystem operations such as
-    listing all rcs version files.
-
-    XXX BUGS / PROBLEMS
-
-    - The instance always represents the current directory so it's not
-    very useful to have more than one instance around simultaneously
-
-    """
-
-    # Characters allowed in work file names
-    okchars = string.ascii_letters + string.digits + '-_=+'
-
-    def __init__(self):
-        """Constructor."""
-        pass
-
-    def __del__(self):
-        """Destructor."""
-        pass
-
-    # --- Informational methods about a single file/revision ---
-
-    def log(self, name_rev, otherflags = ''):
-        """Return the full log text for NAME_REV as a string.
-
-        Optional OTHERFLAGS are passed to rlog.
-
-        """
-        f = self._open(name_rev, 'rlog ' + otherflags)
-        data = f.read()
-        status = self._closepipe(f)
-        if status:
-            data = data + "%s: %s" % status
-        elif data[-1] == '\n':
-            data = data[:-1]
-        return data
-
-    def head(self, name_rev):
-        """Return the head revision for NAME_REV"""
-        dict = self.info(name_rev)
-        return dict['head']
-
-    def info(self, name_rev):
-        """Return a dictionary of info (from rlog -h) for NAME_REV
-
-        The dictionary's keys are the keywords that rlog prints
-        (e.g. 'head' and its values are the corresponding data
-        (e.g. '1.3').
-
-        XXX symbolic names and locks are not returned
-
-        """
-        f = self._open(name_rev, 'rlog -h')
-        dict = {}
-        while 1:
-            line = f.readline()
-            if not line: break
-            if line[0] == '\t':
-                # XXX could be a lock or symbolic name
-                # Anything else?
-                continue
-            i = string.find(line, ':')
-            if i > 0:
-                key, value = line[:i], string.strip(line[i+1:])
-                dict[key] = value
-        status = self._closepipe(f)
-        if status:
-            raise IOError, status
-        return dict
-
-    # --- Methods that change files ---
-
-    def lock(self, name_rev):
-        """Set an rcs lock on NAME_REV."""
-        name, rev = self.checkfile(name_rev)
-        cmd = "rcs -l%s %s" % (rev, name)
-        return self._system(cmd)
-
-    def unlock(self, name_rev):
-        """Clear an rcs lock on NAME_REV."""
-        name, rev = self.checkfile(name_rev)
-        cmd = "rcs -u%s %s" % (rev, name)
-        return self._system(cmd)
-
-    def checkout(self, name_rev, withlock=0, otherflags=""):
-        """Check out NAME_REV to its work file.
-
-        If optional WITHLOCK is set, check out locked, else unlocked.
-
-        The optional OTHERFLAGS is passed to co without
-        interpretation.
-
-        Any output from co goes to directly to stdout.
-
-        """
-        name, rev = self.checkfile(name_rev)
-        if withlock: lockflag = "-l"
-        else: lockflag = "-u"
-        cmd = 'co %s%s %s %s' % (lockflag, rev, otherflags, name)
-        return self._system(cmd)
-
-    def checkin(self, name_rev, message=None, otherflags=""):
-        """Check in NAME_REV from its work file.
-
-        The optional MESSAGE argument becomes the checkin message
-        (default "<none>" if None); or the file description if this is
-        a new file.
-
-        The optional OTHERFLAGS argument is passed to ci without
-        interpretation.
-
-        Any output from ci goes to directly to stdout.
-
-        """
-        name, rev = self._unmangle(name_rev)
-        new = not self.isvalid(name)
-        if not message: message = "<none>"
-        if message and message[-1] != '\n':
-            message = message + '\n'
-        lockflag = "-u"
-        if new:
-            f = tempfile.NamedTemporaryFile()
-            f.write(message)
-            f.flush()
-            cmd = 'ci %s%s -t%s %s %s' % \
-                  (lockflag, rev, f.name, otherflags, name)
-        else:
-            message = re.sub(r'([\"$`])', r'\\\1', message)
-            cmd = 'ci %s%s -m"%s" %s %s' % \
-                  (lockflag, rev, message, otherflags, name)
-        return self._system(cmd)
-
-    # --- Exported support methods ---
-
-    def listfiles(self, pat = None):
-        """Return a list of all version files matching optional PATTERN."""
-        files = os.listdir(os.curdir)
-        files = filter(self._isrcs, files)
-        if os.path.isdir('RCS'):
-            files2 = os.listdir('RCS')
-            files2 = filter(self._isrcs, files2)
-            files = files + files2
-        files = map(self.realname, files)
-        return self._filter(files, pat)
-
-    def isvalid(self, name):
-        """Test whether NAME has a version file associated."""
-        namev = self.rcsname(name)
-        return (os.path.isfile(namev) or
-                os.path.isfile(os.path.join('RCS', namev)))
-
-    def rcsname(self, name):
-        """Return the pathname of the version file for NAME.
-
-        The argument can be a work file name or a version file name.
-        If the version file does not exist, the name of the version
-        file that would be created by "ci" is returned.
-
-        """
-        if self._isrcs(name): namev = name
-        else: namev = name + ',v'
-        if os.path.isfile(namev): return namev
-        namev = os.path.join('RCS', os.path.basename(namev))
-        if os.path.isfile(namev): return namev
-        if os.path.isdir('RCS'):
-            return os.path.join('RCS', namev)
-        else:
-            return namev
-
-    def realname(self, namev):
-        """Return the pathname of the work file for NAME.
-
-        The argument can be a work file name or a version file name.
-        If the work file does not exist, the name of the work file
-        that would be created by "co" is returned.
-
-        """
-        if self._isrcs(namev): name = namev[:-2]
-        else: name = namev
-        if os.path.isfile(name): return name
-        name = os.path.basename(name)
-        return name
-
-    def islocked(self, name_rev):
-        """Test whether FILE (which must have a version file) is locked.
-
-        XXX This does not tell you which revision number is locked and
-        ignores any revision you may pass in (by virtue of using rlog
-        -L -R).
-
-        """
-        f = self._open(name_rev, 'rlog -L -R')
-        line = f.readline()
-        status = self._closepipe(f)
-        if status:
-            raise IOError, status
-        if not line: return None
-        if line[-1] == '\n':
-            line = line[:-1]
-        return self.realname(name_rev) == self.realname(line)
-
-    def checkfile(self, name_rev):
-        """Normalize NAME_REV into a (NAME, REV) tuple.
-
-        Raise an exception if there is no corresponding version file.
-
-        """
-        name, rev = self._unmangle(name_rev)
-        if not self.isvalid(name):
-            raise os.error, 'not an rcs file %r' % (name,)
-        return name, rev
-
-    # --- Internal methods ---
-
-    def _open(self, name_rev, cmd = 'co -p', rflag = '-r'):
-        """INTERNAL: open a read pipe to NAME_REV using optional COMMAND.
-
-        Optional FLAG is used to indicate the revision (default -r).
-
-        Default COMMAND is "co -p".
-
-        Return a file object connected by a pipe to the command's
-        output.
-
-        """
-        name, rev = self.checkfile(name_rev)
-        namev = self.rcsname(name)
-        if rev:
-            cmd = cmd + ' ' + rflag + rev
-        return os.popen("%s %r" % (cmd, namev))
-
-    def _unmangle(self, name_rev):
-        """INTERNAL: Normalize NAME_REV argument to (NAME, REV) tuple.
-
-        Raise an exception if NAME contains invalid characters.
-
-        A NAME_REV argument is either NAME string (implying REV='') or
-        a tuple of the form (NAME, REV).
-
-        """
-        if type(name_rev) == type(''):
-            name_rev = name, rev = name_rev, ''
-        else:
-            name, rev = name_rev
-        for c in rev:
-            if c not in self.okchars:
-                raise ValueError, "bad char in rev"
-        return name_rev
-
-    def _closepipe(self, f):
-        """INTERNAL: Close PIPE and print its exit status if nonzero."""
-        sts = f.close()
-        if not sts: return None
-        detail, reason = divmod(sts, 256)
-        if reason == 0: return 'exit', detail   # Exit status
-        signal = reason&0x7F
-        if signal == 0x7F:
-            code = 'stopped'
-            signal = detail
-        else:
-            code = 'killed'
-        if reason&0x80:
-            code = code + '(coredump)'
-        return code, signal
-
-    def _system(self, cmd):
-        """INTERNAL: run COMMAND in a subshell.
-
-        Standard input for the command is taken from /dev/null.
-
-        Raise IOError when the exit status is not zero.
-
-        Return whatever the calling method should return; normally
-        None.
-
-        A derived class may override this method and redefine it to
-        capture stdout/stderr of the command and return it.
-
-        """
-        cmd = cmd + " </dev/null"
-        sts = os.system(cmd)
-        if sts: raise IOError, "command exit status %d" % sts
-
-    def _filter(self, files, pat = None):
-        """INTERNAL: Return a sorted copy of the given list of FILES.
-
-        If a second PATTERN argument is given, only files matching it
-        are kept.  No check for valid filenames is made.
-
-        """
-        if pat:
-            def keep(name, pat = pat):
-                return fnmatch.fnmatch(name, pat)
-            files = filter(keep, files)
-        else:
-            files = files[:]
-        files.sort()
-        return files
-
-    def _remove(self, fn):
-        """INTERNAL: remove FILE without complaints."""
-        try:
-            os.unlink(fn)
-        except os.error:
-            pass
-
-    def _isrcs(self, name):
-        """INTERNAL: Test whether NAME ends in ',v'."""
-        return name[-2:] == ',v'
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcvs b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcvs
deleted file mode 100644
index a44a3af..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcvs
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env python
-
-import addpack
-addpack.addpack('/home/guido/src/python/Demo/pdist')
-
-import rcvs
-
-rcvs.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcvs.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcvs.py
deleted file mode 100644
index a4ca948..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rcvs.py
+++ /dev/null
@@ -1,477 +0,0 @@
-#! /usr/bin/env python
-
-"""Remote CVS -- command line interface"""
-
-# XXX To do:
-#
-# Bugs:
-# - if the remote file is deleted, "rcvs update" will fail
-#
-# Functionality:
-# - cvs rm
-# - descend into directories (alraedy done for update)
-# - conflict resolution
-# - other relevant commands?
-# - branches
-#
-# - Finesses:
-# - retain file mode's x bits
-# - complain when "nothing known about filename"
-# - edit log message the way CVS lets you edit it
-# - cvs diff -rREVA -rREVB
-# - send mail the way CVS sends it
-#
-# Performance:
-# - cache remote checksums (for every revision ever seen!)
-# - translate symbolic revisions to numeric revisions
-#
-# Reliability:
-# - remote locking
-#
-# Security:
-# - Authenticated RPC?
-
-
-from cvslib import CVS, File
-import md5
-import os
-import string
-import sys
-from cmdfw import CommandFrameWork
-
-
-DEF_LOCAL = 1                           # Default -l
-
-
-class MyFile(File):
-
-    def action(self):
-        """Return a code indicating the update status of this file.
-
-        The possible return values are:
-
-        '=' -- everything's fine
-        '0' -- file doesn't exist anywhere
-        '?' -- exists locally only
-        'A' -- new locally
-        'R' -- deleted locally
-        'U' -- changed remotely, no changes locally
-               (includes new remotely or deleted remotely)
-        'M' -- changed locally, no changes remotely
-        'C' -- conflict: changed locally as well as remotely
-               (includes cases where the file has been added
-               or removed locally and remotely)
-        'D' -- deleted remotely
-        'N' -- new remotely
-        'r' -- get rid of entry
-        'c' -- create entry
-        'u' -- update entry
-
-        (and probably others :-)
-        """
-        if not self.lseen:
-            self.getlocal()
-        if not self.rseen:
-            self.getremote()
-        if not self.eseen:
-            if not self.lsum:
-                if not self.rsum: return '0' # Never heard of
-                else:
-                    return 'N' # New remotely
-            else: # self.lsum
-                if not self.rsum: return '?' # Local only
-                # Local and remote, but no entry
-                if self.lsum == self.rsum:
-                    return 'c' # Restore entry only
-                else: return 'C' # Real conflict
-        else: # self.eseen
-            if not self.lsum:
-                if self.edeleted:
-                    if self.rsum: return 'R' # Removed
-                    else: return 'r' # Get rid of entry
-                else: # not self.edeleted
-                    if self.rsum:
-                        print "warning:",
-                        print self.file,
-                        print "was lost"
-                        return 'U'
-                    else: return 'r' # Get rid of entry
-            else: # self.lsum
-                if not self.rsum:
-                    if self.enew: return 'A' # New locally
-                    else: return 'D' # Deleted remotely
-                else: # self.rsum
-                    if self.enew:
-                        if self.lsum == self.rsum:
-                            return 'u'
-                        else:
-                            return 'C'
-                    if self.lsum == self.esum:
-                        if self.esum == self.rsum:
-                            return '='
-                        else:
-                            return 'U'
-                    elif self.esum == self.rsum:
-                        return 'M'
-                    elif self.lsum == self.rsum:
-                        return 'u'
-                    else:
-                        return 'C'
-
-    def update(self):
-        code = self.action()
-        if code == '=': return
-        print code, self.file
-        if code in ('U', 'N'):
-            self.get()
-        elif code == 'C':
-            print "%s: conflict resolution not yet implemented" % \
-                  self.file
-        elif code == 'D':
-            remove(self.file)
-            self.eseen = 0
-        elif code == 'r':
-            self.eseen = 0
-        elif code in ('c', 'u'):
-            self.eseen = 1
-            self.erev = self.rrev
-            self.enew = 0
-            self.edeleted = 0
-            self.esum = self.rsum
-            self.emtime, self.ectime = os.stat(self.file)[-2:]
-            self.extra = ''
-
-    def commit(self, message = ""):
-        code = self.action()
-        if code in ('A', 'M'):
-            self.put(message)
-            return 1
-        elif code == 'R':
-            print "%s: committing removes not yet implemented" % \
-                  self.file
-        elif code == 'C':
-            print "%s: conflict resolution not yet implemented" % \
-                  self.file
-
-    def diff(self, opts = []):
-        self.action()           # To update lseen, rseen
-        flags = ''
-        rev = self.rrev
-        # XXX should support two rev options too!
-        for o, a in opts:
-            if o == '-r':
-                rev = a
-            else:
-                flags = flags + ' ' + o + a
-        if rev == self.rrev and self.lsum == self.rsum:
-            return
-        flags = flags[1:]
-        fn = self.file
-        data = self.proxy.get((fn, rev))
-        sum = md5.new(data).digest()
-        if self.lsum == sum:
-            return
-        import tempfile
-        tf = tempfile.NamedTemporaryFile()
-        tf.write(data)
-        tf.flush()
-        print 'diff %s -r%s %s' % (flags, rev, fn)
-        sts = os.system('diff %s %s %s' % (flags, tf.name, fn))
-        if sts:
-            print '='*70
-
-    def commitcheck(self):
-        return self.action() != 'C'
-
-    def put(self, message = ""):
-        print "Checking in", self.file, "..."
-        data = open(self.file).read()
-        if not self.enew:
-            self.proxy.lock(self.file)
-        messages = self.proxy.put(self.file, data, message)
-        if messages:
-            print messages
-        self.setentry(self.proxy.head(self.file), self.lsum)
-
-    def get(self):
-        data = self.proxy.get(self.file)
-        f = open(self.file, 'w')
-        f.write(data)
-        f.close()
-        self.setentry(self.rrev, self.rsum)
-
-    def log(self, otherflags):
-        print self.proxy.log(self.file, otherflags)
-
-    def add(self):
-        self.eseen = 0          # While we're hacking...
-        self.esum = self.lsum
-        self.emtime, self.ectime = 0, 0
-        self.erev = ''
-        self.enew = 1
-        self.edeleted = 0
-        self.eseen = 1          # Done
-        self.extra = ''
-
-    def setentry(self, erev, esum):
-        self.eseen = 0          # While we're hacking...
-        self.esum = esum
-        self.emtime, self.ectime = os.stat(self.file)[-2:]
-        self.erev = erev
-        self.enew = 0
-        self.edeleted = 0
-        self.eseen = 1          # Done
-        self.extra = ''
-
-
-SENDMAIL = "/usr/lib/sendmail -t"
-MAILFORM = """To: %s
-Subject: CVS changes: %s
-
-...Message from rcvs...
-
-Committed files:
-        %s
-
-Log message:
-        %s
-"""
-
-
-class RCVS(CVS):
-
-    FileClass = MyFile
-
-    def __init__(self):
-        CVS.__init__(self)
-
-    def update(self, files):
-        for e in self.whichentries(files, 1):
-            e.update()
-
-    def commit(self, files, message = ""):
-        list = self.whichentries(files)
-        if not list: return
-        ok = 1
-        for e in list:
-            if not e.commitcheck():
-                ok = 0
-        if not ok:
-            print "correct above errors first"
-            return
-        if not message:
-            message = raw_input("One-liner: ")
-        committed = []
-        for e in list:
-            if e.commit(message):
-                committed.append(e.file)
-        self.mailinfo(committed, message)
-
-    def mailinfo(self, files, message = ""):
-        towhom = "sjoerd@cwi.nl, jack@cwi.nl" # XXX
-        mailtext = MAILFORM % (towhom, string.join(files),
-                                string.join(files), message)
-        print '-'*70
-        print mailtext
-        print '-'*70
-        ok = raw_input("OK to mail to %s? " % towhom)
-        if string.lower(string.strip(ok)) in ('y', 'ye', 'yes'):
-            p = os.popen(SENDMAIL, "w")
-            p.write(mailtext)
-            sts = p.close()
-            if sts:
-                print "Sendmail exit status %s" % str(sts)
-            else:
-                print "Mail sent."
-        else:
-            print "No mail sent."
-
-    def report(self, files):
-        for e in self.whichentries(files):
-            e.report()
-
-    def diff(self, files, opts):
-        for e in self.whichentries(files):
-            e.diff(opts)
-
-    def add(self, files):
-        if not files:
-            raise RuntimeError, "'cvs add' needs at least one file"
-        list = []
-        for e in self.whichentries(files, 1):
-            e.add()
-
-    def rm(self, files):
-        if not files:
-            raise RuntimeError, "'cvs rm' needs at least one file"
-        raise RuntimeError, "'cvs rm' not yet imlemented"
-
-    def log(self, files, opts):
-        flags = ''
-        for o, a in opts:
-            flags = flags + ' ' + o + a
-        for e in self.whichentries(files):
-            e.log(flags)
-
-    def whichentries(self, files, localfilestoo = 0):
-        if files:
-            list = []
-            for file in files:
-                if self.entries.has_key(file):
-                    e = self.entries[file]
-                else:
-                    e = self.FileClass(file)
-                    self.entries[file] = e
-                list.append(e)
-        else:
-            list = self.entries.values()
-            for file in self.proxy.listfiles():
-                if self.entries.has_key(file):
-                    continue
-                e = self.FileClass(file)
-                self.entries[file] = e
-                list.append(e)
-            if localfilestoo:
-                for file in os.listdir(os.curdir):
-                    if not self.entries.has_key(file) \
-                       and not self.ignored(file):
-                        e = self.FileClass(file)
-                        self.entries[file] = e
-                        list.append(e)
-            list.sort()
-        if self.proxy:
-            for e in list:
-                if e.proxy is None:
-                    e.proxy = self.proxy
-        return list
-
-
-class rcvs(CommandFrameWork):
-
-    GlobalFlags = 'd:h:p:qvL'
-    UsageMessage = \
-"usage: rcvs [-d directory] [-h host] [-p port] [-q] [-v] [subcommand arg ...]"
-    PostUsageMessage = \
-            "If no subcommand is given, the status of all files is listed"
-
-    def __init__(self):
-        """Constructor."""
-        CommandFrameWork.__init__(self)
-        self.proxy = None
-        self.cvs = RCVS()
-
-    def close(self):
-        if self.proxy:
-            self.proxy._close()
-        self.proxy = None
-
-    def recurse(self):
-        self.close()
-        names = os.listdir(os.curdir)
-        for name in names:
-            if name == os.curdir or name == os.pardir:
-                continue
-            if name == "CVS":
-                continue
-            if not os.path.isdir(name):
-                continue
-            if os.path.islink(name):
-                continue
-            print "--- entering subdirectory", name, "---"
-            os.chdir(name)
-            try:
-                if os.path.isdir("CVS"):
-                    self.__class__().run()
-                else:
-                    self.recurse()
-            finally:
-                os.chdir(os.pardir)
-                print "--- left subdirectory", name, "---"
-
-    def options(self, opts):
-        self.opts = opts
-
-    def ready(self):
-        import rcsclient
-        self.proxy = rcsclient.openrcsclient(self.opts)
-        self.cvs.setproxy(self.proxy)
-        self.cvs.getentries()
-
-    def default(self):
-        self.cvs.report([])
-
-    def do_report(self, opts, files):
-        self.cvs.report(files)
-
-    def do_update(self, opts, files):
-        """update [-l] [-R] [file] ..."""
-        local = DEF_LOCAL
-        for o, a in opts:
-            if o == '-l': local = 1
-            if o == '-R': local = 0
-        self.cvs.update(files)
-        self.cvs.putentries()
-        if not local and not files:
-            self.recurse()
-    flags_update = '-lR'
-    do_up = do_update
-    flags_up = flags_update
-
-    def do_commit(self, opts, files):
-        """commit [-m message] [file] ..."""
-        message = ""
-        for o, a in opts:
-            if o == '-m': message = a
-        self.cvs.commit(files, message)
-        self.cvs.putentries()
-    flags_commit = 'm:'
-    do_com = do_commit
-    flags_com = flags_commit
-
-    def do_diff(self, opts, files):
-        """diff [difflags] [file] ..."""
-        self.cvs.diff(files, opts)
-    flags_diff = 'cbitwcefhnlr:sD:S:'
-    do_dif = do_diff
-    flags_dif = flags_diff
-
-    def do_add(self, opts, files):
-        """add file ..."""
-        if not files:
-            print "'rcvs add' requires at least one file"
-            return
-        self.cvs.add(files)
-        self.cvs.putentries()
-
-    def do_remove(self, opts, files):
-        """remove file ..."""
-        if not files:
-            print "'rcvs remove' requires at least one file"
-            return
-        self.cvs.remove(files)
-        self.cvs.putentries()
-    do_rm = do_remove
-
-    def do_log(self, opts, files):
-        """log [rlog-options] [file] ..."""
-        self.cvs.log(files, opts)
-    flags_log = 'bhLNRtd:s:V:r:'
-
-
-def remove(fn):
-    try:
-        os.unlink(fn)
-    except os.error:
-        pass
-
-
-def main():
-    r = rcvs()
-    try:
-        r.run()
-    finally:
-        r.close()
-
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rrcs b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rrcs
deleted file mode 100644
index 7a6871c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rrcs
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env python
-
-import addpack
-addpack.addpack('/home/guido/src/python/Demo/pdist')
-
-import rrcs
-
-rrcs.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rrcs.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rrcs.py
deleted file mode 100644
index ede0051..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/rrcs.py
+++ /dev/null
@@ -1,160 +0,0 @@
-#! /usr/bin/env python
-
-"Remote RCS -- command line interface"
-
-import sys
-import os
-import getopt
-import string
-import md5
-import tempfile
-from rcsclient import openrcsclient
-
-def main():
-    sys.stdout = sys.stderr
-    try:
-        opts, rest = getopt.getopt(sys.argv[1:], 'h:p:d:qvL')
-        if not rest:
-            cmd = 'head'
-        else:
-            cmd, rest = rest[0], rest[1:]
-        if not commands.has_key(cmd):
-            raise getopt.error, "unknown command"
-        coptset, func = commands[cmd]
-        copts, files = getopt.getopt(rest, coptset)
-    except getopt.error, msg:
-        print msg
-        print "usage: rrcs [options] command [options] [file] ..."
-        print "where command can be:"
-        print "      ci|put      # checkin the given files"
-        print "      co|get      # checkout"
-        print "      info        # print header info"
-        print "      head        # print revision of head branch"
-        print "      list        # list filename if valid"
-        print "      log         # print full log"
-        print "      diff        # diff rcs file and work file"
-        print "if no files are given, all remote rcs files are assumed"
-        sys.exit(2)
-    x = openrcsclient(opts)
-    if not files:
-        files = x.listfiles()
-    for fn in files:
-        try:
-            func(x, copts, fn)
-        except (IOError, os.error), msg:
-            print "%s: %s" % (fn, msg)
-
-def checkin(x, copts, fn):
-    f = open(fn)
-    data = f.read()
-    f.close()
-    new = not x.isvalid(fn)
-    if not new and same(x, copts, fn, data):
-        print "%s: unchanged since last checkin" % fn
-        return
-    print "Checking in", fn, "..."
-    message = asklogmessage(new)
-    messages = x.put(fn, data, message)
-    if messages:
-        print messages
-
-def checkout(x, copts, fn):
-    data = x.get(fn)
-    f = open(fn, 'w')
-    f.write(data)
-    f.close()
-
-def lock(x, copts, fn):
-    x.lock(fn)
-
-def unlock(x, copts, fn):
-    x.unlock(fn)
-
-def info(x, copts, fn):
-    dict = x.info(fn)
-    keys = dict.keys()
-    keys.sort()
-    for key in keys:
-        print key + ':', dict[key]
-    print '='*70
-
-def head(x, copts, fn):
-    head = x.head(fn)
-    print fn, head
-
-def list(x, copts, fn):
-    if x.isvalid(fn):
-        print fn
-
-def log(x, copts, fn):
-    flags = ''
-    for o, a in copts:
-        flags = flags + ' ' + o + a
-    flags = flags[1:]
-    messages = x.log(fn, flags)
-    print messages
-
-def diff(x, copts, fn):
-    if same(x, copts, fn):
-        return
-    flags = ''
-    for o, a in copts:
-        flags = flags + ' ' + o + a
-    flags = flags[1:]
-    data = x.get(fn)
-    tf = tempfile.NamedTemporaryFile()
-    tf.write(data)
-    tf.flush()
-    print 'diff %s -r%s %s' % (flags, x.head(fn), fn)
-    sts = os.system('diff %s %s %s' % (flags, tf.name, fn))
-    if sts:
-        print '='*70
-
-def same(x, copts, fn, data = None):
-    if data is None:
-        f = open(fn)
-        data = f.read()
-        f.close()
-    lsum = md5.new(data).digest()
-    rsum = x.sum(fn)
-    return lsum == rsum
-
-def asklogmessage(new):
-    if new:
-        print "enter description,",
-    else:
-        print "enter log message,",
-    print "terminate with single '.' or end of file:"
-    if new:
-        print "NOTE: This is NOT the log message!"
-    message = ""
-    while 1:
-        sys.stderr.write(">> ")
-        sys.stderr.flush()
-        line = sys.stdin.readline()
-        if not line or line == '.\n': break
-        message = message + line
-    return message
-
-def remove(fn):
-    try:
-        os.unlink(fn)
-    except os.error:
-        pass
-
-commands = {
-        'ci': ('', checkin),
-        'put': ('', checkin),
-        'co': ('', checkout),
-        'get': ('', checkout),
-        'info': ('', info),
-        'head': ('', head),
-        'list': ('', list),
-        'lock': ('', lock),
-        'unlock': ('', unlock),
-        'log': ('bhLRtd:l:r:s:w:V:', log),
-        'diff': ('c', diff),
-        }
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/security.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/security.py
deleted file mode 100644
index 051ace8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/security.py
+++ /dev/null
@@ -1,33 +0,0 @@
-class Security:
-
-    def __init__(self):
-        import os
-        env = os.environ
-        if env.has_key('PYTHON_KEYFILE'):
-            keyfile = env['PYTHON_KEYFILE']
-        else:
-            keyfile = '.python_keyfile'
-            if env.has_key('HOME'):
-                keyfile = os.path.join(env['HOME'], keyfile)
-            if not os.path.exists(keyfile):
-                import sys
-                for dir in sys.path:
-                    kf = os.path.join(dir, keyfile)
-                    if os.path.exists(kf):
-                        keyfile = kf
-                        break
-        try:
-            self._key = eval(open(keyfile).readline())
-        except IOError:
-            raise IOError, "python keyfile %s: cannot open" % keyfile
-
-    def _generate_challenge(self):
-        import random
-        return random.randint(100, 100000)
-
-    def _compare_challenge_response(self, challenge, response):
-        return self._encode_challenge(challenge) == response
-
-    def _encode_challenge(self, challenge):
-        p, m = self._key
-        return pow(long(challenge), p, m)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/server.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/server.py
deleted file mode 100644
index c7a4491..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/server.py
+++ /dev/null
@@ -1,145 +0,0 @@
-"""RPC Server module."""
-
-import sys
-import socket
-import pickle
-from fnmatch import fnmatch
-from repr import repr
-
-
-# Default verbosity (0 = silent, 1 = print connections, 2 = print requests too)
-VERBOSE = 1
-
-
-class Server:
-
-    """RPC Server class.  Derive a class to implement a particular service."""
-
-    def __init__(self, address, verbose = VERBOSE):
-        if type(address) == type(0):
-            address = ('', address)
-        self._address = address
-        self._verbose = verbose
-        self._socket = None
-        self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self._socket.bind(address)
-        self._socket.listen(1)
-        self._listening = 1
-
-    def _setverbose(self, verbose):
-        self._verbose = verbose
-
-    def __del__(self):
-        self._close()
-
-    def _close(self):
-        self._listening = 0
-        if self._socket:
-            self._socket.close()
-        self._socket = None
-
-    def _serverloop(self):
-        while self._listening:
-            self._serve()
-
-    def _serve(self):
-        if self._verbose: print "Wait for connection ..."
-        conn, address = self._socket.accept()
-        if self._verbose: print "Accepted connection from %s" % repr(address)
-        if not self._verify(conn, address):
-            print "*** Connection from %s refused" % repr(address)
-            conn.close()
-            return
-        rf = conn.makefile('r')
-        wf = conn.makefile('w')
-        ok = 1
-        while ok:
-            wf.flush()
-            if self._verbose > 1: print "Wait for next request ..."
-            ok = self._dorequest(rf, wf)
-
-    _valid = ['192.16.201.*', '192.16.197.*', '132.151.1.*', '129.6.64.*']
-
-    def _verify(self, conn, address):
-        host, port = address
-        for pat in self._valid:
-            if fnmatch(host, pat): return 1
-        return 0
-
-    def _dorequest(self, rf, wf):
-        rp = pickle.Unpickler(rf)
-        try:
-            request = rp.load()
-        except EOFError:
-            return 0
-        if self._verbose > 1: print "Got request: %s" % repr(request)
-        try:
-            methodname, args, id = request
-            if '.' in methodname:
-                reply = (None, self._special(methodname, args), id)
-            elif methodname[0] == '_':
-                raise NameError, "illegal method name %s" % repr(methodname)
-            else:
-                method = getattr(self, methodname)
-                reply = (None, apply(method, args), id)
-        except:
-            reply = (sys.exc_type, sys.exc_value, id)
-        if id < 0 and reply[:2] == (None, None):
-            if self._verbose > 1: print "Suppress reply"
-            return 1
-        if self._verbose > 1: print "Send reply: %s" % repr(reply)
-        wp = pickle.Pickler(wf)
-        wp.dump(reply)
-        return 1
-
-    def _special(self, methodname, args):
-        if methodname == '.methods':
-            if not hasattr(self, '_methods'):
-                self._methods = tuple(self._listmethods())
-            return self._methods
-        raise NameError, "unrecognized special method name %s" % repr(methodname)
-
-    def _listmethods(self, cl=None):
-        if not cl: cl = self.__class__
-        names = cl.__dict__.keys()
-        names = filter(lambda x: x[0] != '_', names)
-        names.sort()
-        for base in cl.__bases__:
-            basenames = self._listmethods(base)
-            basenames = filter(lambda x, names=names: x not in names, basenames)
-            names[len(names):] = basenames
-        return names
-
-
-from security import Security
-
-
-class SecureServer(Server, Security):
-
-    def __init__(self, *args):
-        apply(Server.__init__, (self,) + args)
-        Security.__init__(self)
-
-    def _verify(self, conn, address):
-        import string
-        challenge = self._generate_challenge()
-        conn.send("%d\n" % challenge)
-        response = ""
-        while "\n" not in response and len(response) < 100:
-            data = conn.recv(100)
-            if not data:
-                break
-            response = response + data
-        try:
-            response = string.atol(string.strip(response))
-        except string.atol_error:
-            if self._verbose > 0:
-                print "Invalid response syntax", repr(response)
-            return 0
-        if not self._compare_challenge_response(challenge, response):
-            if self._verbose > 0:
-                print "Invalid response value", repr(response)
-            return 0
-        if self._verbose > 1:
-            print "Response matches challenge.  Go ahead!"
-        return 1
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/sumtree.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/sumtree.py
deleted file mode 100644
index 3c82282..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/pdist/sumtree.py
+++ /dev/null
@@ -1,24 +0,0 @@
-import time
-import FSProxy
-
-def main():
-    t1 = time.time()
-    #proxy = FSProxy.FSProxyClient(('voorn.cwi.nl', 4127))
-    proxy = FSProxy.FSProxyLocal()
-    sumtree(proxy)
-    proxy._close()
-    t2 = time.time()
-    print t2-t1, "seconds"
-    raw_input("[Return to exit] ")
-
-def sumtree(proxy):
-    print "PWD =", proxy.pwd()
-    files = proxy.listfiles()
-    proxy.infolist(files)
-    subdirs = proxy.listsubdirs()
-    for name in subdirs:
-        proxy.cd(name)
-        sumtree(proxy)
-        proxy.back()
-
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/README b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/README
deleted file mode 100644
index 6550e67..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/README
+++ /dev/null
@@ -1,22 +0,0 @@
-This directory contains a collection of executable Python scripts.
-
-See also the Tools/scripts directory!
-
-beer.py			Print the classic 'bottles of beer' list
-eqfix.py		Fix .py files to use the correct equality test operator
-fact.py			Factorize numbers
-find-uname.py		Search for Unicode characters using regexps
-from.py			Summarize mailbox
-lpwatch.py		Watch BSD line printer queues
-makedir.py		Like mkdir -p
-markov.py		Markov chain simulation of words or characters
-mboxconvert.py		Convert MH or MMDF mailboxes to unix mailbox format
-morse.py		Produce morse code (audible or on AIFF file)
-newslist.py		List all newsgroups on a NNTP server as HTML pages
-pi.py			Print all digits of pi -- given enough time and memory
-pp.py			Emulate some Perl command line options
-primes.py		Print prime numbers
-queens.py		Dijkstra's solution to Wirth's "N Queens problem"
-script.py		Equivalent to BSD script(1) -- by Steen Lumholt
-unbirthday.py		Print unbirthday count
-update.py		Update a bunch of files according to a script.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/beer.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/beer.py
deleted file mode 100644
index f1ff58b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/beer.py
+++ /dev/null
@@ -1,20 +0,0 @@
-#! /usr/bin/env python
-
-# By GvR, demystified after a version by Fredrik Lundh.
-
-import sys
-
-n = 100
-if sys.argv[1:]:
-    n = int(sys.argv[1])
-
-def bottle(n):
-    if n == 0: return "no more bottles of beer"
-    if n == 1: return "one bottle of beer"
-    return str(n) + " bottles of beer"
-
-for i in range(n, 0, -1):
-    print bottle(i), "on the wall,"
-    print bottle(i) + "."
-    print "Take one down, pass it around,"
-    print bottle(i-1), "on the wall."
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/eqfix.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/eqfix.py
deleted file mode 100644
index fc903c5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/eqfix.py
+++ /dev/null
@@ -1,198 +0,0 @@
-#! /usr/bin/env python
-
-# Fix Python source files to use the new equality test operator, i.e.,
-#       if x = y: ...
-# is changed to
-#       if x == y: ...
-# The script correctly tokenizes the Python program to reliably
-# distinguish between assignments and equality tests.
-#
-# Command line arguments are files or directories to be processed.
-# Directories are searched recursively for files whose name looks
-# like a python module.
-# Symbolic links are always ignored (except as explicit directory
-# arguments).  Of course, the original file is kept as a back-up
-# (with a "~" attached to its name).
-# It complains about binaries (files containing null bytes)
-# and about files that are ostensibly not Python files: if the first
-# line starts with '#!' and does not contain the string 'python'.
-#
-# Changes made are reported to stdout in a diff-like format.
-#
-# Undoubtedly you can do this using find and sed or perl, but this is
-# a nice example of Python code that recurses down a directory tree
-# and uses regular expressions.  Also note several subtleties like
-# preserving the file's mode and avoiding to even write a temp file
-# when no changes are needed for a file.
-#
-# NB: by changing only the function fixline() you can turn this
-# into a program for a different change to Python programs...
-
-import sys
-import re
-import os
-from stat import *
-import string
-
-err = sys.stderr.write
-dbg = err
-rep = sys.stdout.write
-
-def main():
-    bad = 0
-    if not sys.argv[1:]: # No arguments
-        err('usage: ' + sys.argv[0] + ' file-or-directory ...\n')
-        sys.exit(2)
-    for arg in sys.argv[1:]:
-        if os.path.isdir(arg):
-            if recursedown(arg): bad = 1
-        elif os.path.islink(arg):
-            err(arg + ': will not process symbolic links\n')
-            bad = 1
-        else:
-            if fix(arg): bad = 1
-    sys.exit(bad)
-
-ispythonprog = re.compile('^[a-zA-Z0-9_]+\.py$')
-def ispython(name):
-    return ispythonprog.match(name) >= 0
-
-def recursedown(dirname):
-    dbg('recursedown(%r)\n' % (dirname,))
-    bad = 0
-    try:
-        names = os.listdir(dirname)
-    except os.error, msg:
-        err('%s: cannot list directory: %r\n' % (dirname, msg))
-        return 1
-    names.sort()
-    subdirs = []
-    for name in names:
-        if name in (os.curdir, os.pardir): continue
-        fullname = os.path.join(dirname, name)
-        if os.path.islink(fullname): pass
-        elif os.path.isdir(fullname):
-            subdirs.append(fullname)
-        elif ispython(name):
-            if fix(fullname): bad = 1
-    for fullname in subdirs:
-        if recursedown(fullname): bad = 1
-    return bad
-
-def fix(filename):
-##      dbg('fix(%r)\n' % (dirname,))
-    try:
-        f = open(filename, 'r')
-    except IOError, msg:
-        err('%s: cannot open: %r\n' % (filename, msg))
-        return 1
-    head, tail = os.path.split(filename)
-    tempname = os.path.join(head, '@' + tail)
-    g = None
-    # If we find a match, we rewind the file and start over but
-    # now copy everything to a temp file.
-    lineno = 0
-    while 1:
-        line = f.readline()
-        if not line: break
-        lineno = lineno + 1
-        if g is None and '\0' in line:
-            # Check for binary files
-            err(filename + ': contains null bytes; not fixed\n')
-            f.close()
-            return 1
-        if lineno == 1 and g is None and line[:2] == '#!':
-            # Check for non-Python scripts
-            words = string.split(line[2:])
-            if words and re.search('[pP]ython', words[0]) < 0:
-                msg = filename + ': ' + words[0]
-                msg = msg + ' script; not fixed\n'
-                err(msg)
-                f.close()
-                return 1
-        while line[-2:] == '\\\n':
-            nextline = f.readline()
-            if not nextline: break
-            line = line + nextline
-            lineno = lineno + 1
-        newline = fixline(line)
-        if newline != line:
-            if g is None:
-                try:
-                    g = open(tempname, 'w')
-                except IOError, msg:
-                    f.close()
-                    err('%s: cannot create: %r\n' % (tempname, msg))
-                    return 1
-                f.seek(0)
-                lineno = 0
-                rep(filename + ':\n')
-                continue # restart from the beginning
-            rep(repr(lineno) + '\n')
-            rep('< ' + line)
-            rep('> ' + newline)
-        if g is not None:
-            g.write(newline)
-
-    # End of file
-    f.close()
-    if not g: return 0 # No changes
-
-    # Finishing touch -- move files
-
-    # First copy the file's mode to the temp file
-    try:
-        statbuf = os.stat(filename)
-        os.chmod(tempname, statbuf[ST_MODE] & 07777)
-    except os.error, msg:
-        err('%s: warning: chmod failed (%r)\n' % (tempname, msg))
-    # Then make a backup of the original file as filename~
-    try:
-        os.rename(filename, filename + '~')
-    except os.error, msg:
-        err('%s: warning: backup failed (%r)\n' % (filename, msg))
-    # Now move the temp file to the original file
-    try:
-        os.rename(tempname, filename)
-    except os.error, msg:
-        err('%s: rename failed (%r)\n' % (filename, msg))
-        return 1
-    # Return succes
-    return 0
-
-
-from tokenize import tokenprog
-
-match = {'if':':', 'elif':':', 'while':':', 'return':'\n', \
-         '(':')', '[':']', '{':'}', '`':'`'}
-
-def fixline(line):
-    # Quick check for easy case
-    if '=' not in line: return line
-
-    i, n = 0, len(line)
-    stack = []
-    while i < n:
-        j = tokenprog.match(line, i)
-        if j < 0:
-            # A bad token; forget about the rest of this line
-            print '(Syntax error:)'
-            print line,
-            return line
-        a, b = tokenprog.regs[3] # Location of the token proper
-        token = line[a:b]
-        i = i+j
-        if stack and token == stack[-1]:
-            del stack[-1]
-        elif match.has_key(token):
-            stack.append(match[token])
-        elif token == '=' and stack:
-            line = line[:a] + '==' + line[b:]
-            i, n = a + len('=='), len(line)
-        elif token == '==' and not stack:
-            print '(Warning: \'==\' at top level:)'
-            print line,
-    return line
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/fact.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/fact.py
deleted file mode 100644
index 2068c85..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/fact.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /usr/bin/env python
-
-# Factorize numbers.
-# The algorithm is not efficient, but easy to understand.
-# If there are large factors, it will take forever to find them,
-# because we try all odd numbers between 3 and sqrt(n)...
-
-import sys
-from math import sqrt
-
-def fact(n):
-    if n < 1:
-        raise ValueError('fact() argument should be >= 1')
-    if n == 1:
-        return []  # special case
-    res = []
-    # Treat even factors special, so we can use i += 2 later
-    while n % 2 == 0:
-        res.append(2)
-        n //= 2
-    # Try odd numbers up to sqrt(n)
-    limit = sqrt(n+1)
-    i = 3
-    while i <= limit:
-        if n % i == 0:
-            res.append(i)
-            n //= i
-            limit = sqrt(n+1)
-        else:
-            i += 2
-    if n != 1:
-        res.append(n)
-    return res
-
-def main():
-    if len(sys.argv) > 1:
-        source = sys.argv[1:]
-    else:
-        source = iter(raw_input, '')
-    for arg in source:
-        try:
-            n = int(arg)
-        except ValueError:
-            print arg, 'is not an integer'
-        else:
-            print n, fact(n)
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/find-uname.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/find-uname.py
deleted file mode 100644
index 1213643..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/find-uname.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-
-"""
-For each argument on the command line, look for it in the set of all Unicode
-names.  Arguments are treated as case-insensitive regular expressions, e.g.:
-
-    % find-uname 'small letter a$' 'horizontal line'
-    *** small letter a$ matches ***
-    LATIN SMALL LETTER A (97)
-    COMBINING LATIN SMALL LETTER A (867)
-    CYRILLIC SMALL LETTER A (1072)
-    PARENTHESIZED LATIN SMALL LETTER A (9372)
-    CIRCLED LATIN SMALL LETTER A (9424)
-    FULLWIDTH LATIN SMALL LETTER A (65345)
-    *** horizontal line matches ***
-    HORIZONTAL LINE EXTENSION (9135)
-"""
-
-import unicodedata
-import sys
-import re
-
-def main(args):
-    unicode_names = []
-    for ix in range(sys.maxunicode+1):
-        try:
-            unicode_names.append((ix, unicodedata.name(unichr(ix))))
-        except ValueError: # no name for the character
-            pass
-    for arg in args:
-        pat = re.compile(arg, re.I)
-        matches = [(y,x) for (x,y) in unicode_names
-                   if pat.search(y) is not None]
-        if matches:
-            print "***", arg, "matches", "***"
-            for match in matches:
-                print "%s (%d)" % match
-
-if __name__ == "__main__":
-    main(sys.argv[1:])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/from.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/from.py
deleted file mode 100644
index c7fcb9f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/from.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#! /usr/bin/env python
-
-# Print From and Subject of messages in $MAIL.
-# Extension to multiple mailboxes and other bells & whistles are left
-# as exercises for the reader.
-
-import sys, os
-
-# Open mailbox file.  Exits with exception when this fails.
-
-try:
-    mailbox = os.environ['MAIL']
-except (AttributeError, KeyError):
-    sys.stderr.write('No environment variable $MAIL\n')
-    sys.exit(2)
-
-try:
-    mail = open(mailbox)
-except IOError:
-    sys.exit('Cannot open mailbox file: ' + mailbox)
-
-while 1:
-    line = mail.readline()
-    if not line:
-        break # EOF
-    if line.startswith('From '):
-        # Start of message found
-        print line[:-1],
-        while 1:
-            line = mail.readline()
-            if not line or line == '\n':
-                break
-            if line.startswith('Subject: '):
-                print repr(line[9:-1]),
-        print
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/lpwatch.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/lpwatch.py
deleted file mode 100644
index 61e937f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/lpwatch.py
+++ /dev/null
@@ -1,102 +0,0 @@
-#! /usr/bin/env python
-
-# Watch line printer queue(s).
-# Intended for BSD 4.3 lpq.
-
-import os
-import sys
-import time
-
-DEF_PRINTER = 'psc'
-DEF_DELAY = 10
-
-def main():
-    delay = DEF_DELAY # XXX Use getopt() later
-    try:
-        thisuser = os.environ['LOGNAME']
-    except:
-        thisuser = os.environ['USER']
-    printers = sys.argv[1:]
-    if printers:
-        # Strip '-P' from printer names just in case
-        # the user specified it...
-        for i, name in enumerate(printers):
-            if name[:2] == '-P':
-                printers[i] = name[2:]
-    else:
-        if os.environ.has_key('PRINTER'):
-            printers = [os.environ['PRINTER']]
-        else:
-            printers = [DEF_PRINTER]
-
-    clearhome = os.popen('clear', 'r').read()
-
-    while True:
-        text = clearhome
-        for name in printers:
-            text += makestatus(name, thisuser) + '\n'
-        print text
-        time.sleep(delay)
-
-def makestatus(name, thisuser):
-    pipe = os.popen('lpq -P' + name + ' 2>&1', 'r')
-    lines = []
-    users = {}
-    aheadbytes = 0
-    aheadjobs = 0
-    userseen = False
-    totalbytes = 0
-    totaljobs = 0
-    for line in pipe:
-        fields = line.split()
-        n = len(fields)
-        if len(fields) >= 6 and fields[n-1] == 'bytes':
-            rank, user, job = fields[0:3]
-            files = fields[3:-2]
-            bytes = int(fields[n-2])
-            if user == thisuser:
-                userseen = True
-            elif not userseen:
-                aheadbytes += bytes
-                aheadjobs += 1
-            totalbytes += bytes
-            totaljobs += 1
-            ujobs, ubytes = users.get(user, (0, 0))
-            ujobs += 1
-            ubytes += bytes
-            users[user] = ujobs, ubytes
-        else:
-            if fields and fields[0] != 'Rank':
-                line = line.strip()
-                if line == 'no entries':
-                    line = name + ': idle'
-                elif line[-22:] == ' is ready and printing':
-                    line = name
-                lines.append(line)
-
-    if totaljobs:
-        line = '%d K' % ((totalbytes+1023) // 1024)
-        if totaljobs != len(users):
-            line += ' (%d jobs)' % totaljobs
-        if len(users) == 1:
-            line += ' for %s' % (users.keys()[0],)
-        else:
-            line += ' for %d users' % len(users)
-            if userseen:
-                if aheadjobs == 0:
-                    line += ' (%s first)' % thisuser
-                else:
-                    line += ' (%d K before %s)' % (
-                        (aheadbytes+1023) // 1024, thisuser)
-        lines.append(line)
-
-    sts = pipe.close()
-    if sts:
-        lines.append('lpq exit status %r' % (sts,))
-    return ': '.join(lines)
-
-if __name__ == "__main__":
-    try:
-        main()
-    except KeyboardInterrupt:
-        pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/makedir.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/makedir.py
deleted file mode 100644
index 294502f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/makedir.py
+++ /dev/null
@@ -1,21 +0,0 @@
-#! /usr/bin/env python
-
-# Like mkdir, but also make intermediate directories if necessary.
-# It is not an error if the given directory already exists (as long
-# as it is a directory).
-# Errors are not treated specially -- you just get a Python exception.
-
-import sys, os
-
-def main():
-    for p in sys.argv[1:]:
-        makedirs(p)
-
-def makedirs(p):
-    if p and not os.path.isdir(p):
-        head, tail = os.path.split(p)
-        makedirs(head)
-        os.mkdir(p, 0777)
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/markov.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/markov.py
deleted file mode 100644
index 993c3f6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/markov.py
+++ /dev/null
@@ -1,121 +0,0 @@
-#! /usr/bin/env python
-
-class Markov:
-    def __init__(self, histsize, choice):
-        self.histsize = histsize
-        self.choice = choice
-        self.trans = {}
-
-    def add(self, state, next):
-        self.trans.setdefault(state, []).append(next)
-
-    def put(self, seq):
-        n = self.histsize
-        add = self.add
-        add(None, seq[:0])
-        for i in range(len(seq)):
-            add(seq[max(0, i-n):i], seq[i:i+1])
-        add(seq[len(seq)-n:], None)
-
-    def get(self):
-        choice = self.choice
-        trans = self.trans
-        n = self.histsize
-        seq = choice(trans[None])
-        while True:
-            subseq = seq[max(0, len(seq)-n):]
-            options = trans[subseq]
-            next = choice(options)
-            if not next:
-                break
-            seq += next
-        return seq
-
-
-def test():
-    import sys, random, getopt
-    args = sys.argv[1:]
-    try:
-        opts, args = getopt.getopt(args, '0123456789cdwq')
-    except getopt.error:
-        print 'Usage: %s [-#] [-cddqw] [file] ...' % sys.argv[0]
-        print 'Options:'
-        print '-#: 1-digit history size (default 2)'
-        print '-c: characters (default)'
-        print '-w: words'
-        print '-d: more debugging output'
-        print '-q: no debugging output'
-        print 'Input files (default stdin) are split in paragraphs'
-        print 'separated blank lines and each paragraph is split'
-        print 'in words by whitespace, then reconcatenated with'
-        print 'exactly one space separating words.'
-        print 'Output consists of paragraphs separated by blank'
-        print 'lines, where lines are no longer than 72 characters.'
-        sys.exit(2)
-    histsize = 2
-    do_words = False
-    debug = 1
-    for o, a in opts:
-        if '-0' <= o <= '-9': histsize = int(o[1:])
-        if o == '-c': do_words = False
-        if o == '-d': debug += 1
-        if o == '-q': debug = 0
-        if o == '-w': do_words = True
-    if not args:
-        args = ['-']
-
-    m = Markov(histsize, random.choice)
-    try:
-        for filename in args:
-            if filename == '-':
-                f = sys.stdin
-                if f.isatty():
-                    print 'Sorry, need stdin from file'
-                    continue
-            else:
-                f = open(filename, 'r')
-            if debug: print 'processing', filename, '...'
-            text = f.read()
-            f.close()
-            paralist = text.split('\n\n')
-            for para in paralist:
-                if debug > 1: print 'feeding ...'
-                words = para.split()
-                if words:
-                    if do_words:
-                        data = tuple(words)
-                    else:
-                        data = ' '.join(words)
-                    m.put(data)
-    except KeyboardInterrupt:
-        print 'Interrupted -- continue with data read so far'
-    if not m.trans:
-        print 'No valid input files'
-        return
-    if debug: print 'done.'
-
-    if debug > 1:
-        for key in m.trans.keys():
-            if key is None or len(key) < histsize:
-                print repr(key), m.trans[key]
-        if histsize == 0: print repr(''), m.trans['']
-        print
-    while True:
-        data = m.get()
-        if do_words:
-            words = data
-        else:
-            words = data.split()
-        n = 0
-        limit = 72
-        for w in words:
-            if n + len(w) > limit:
-                print
-                n = 0
-            print w,
-            n += len(w) + 1
-        print
-        print
-
-if __name__ == "__main__":
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/mboxconvert.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/mboxconvert.py
deleted file mode 100644
index 41d59d6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/mboxconvert.py
+++ /dev/null
@@ -1,124 +0,0 @@
-#! /usr/bin/env python
-
-# Convert  MH directories (1 message per file) or MMDF mailboxes (4x^A
-# delimited) to unix mailbox (From ... delimited) on stdout.
-# If -f is given, files contain one message per file (e.g. MH messages)
-
-import rfc822
-import sys
-import time
-import os
-import stat
-import getopt
-import re
-
-def main():
-    dofile = mmdf
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'f')
-    except getopt.error, msg:
-        sys.stderr.write('%s\n' % msg)
-        sys.exit(2)
-    for o, a in opts:
-        if o == '-f':
-            dofile = message
-    if not args:
-        args = ['-']
-    sts = 0
-    for arg in args:
-        if arg == '-' or arg == '':
-            sts = dofile(sys.stdin) or sts
-        elif os.path.isdir(arg):
-            sts = mh(arg) or sts
-        elif os.path.isfile(arg):
-            try:
-                f = open(arg)
-            except IOError, msg:
-                sys.stderr.write('%s: %s\n' % (arg, msg))
-                sts = 1
-                continue
-            sts = dofile(f) or sts
-            f.close()
-        else:
-            sys.stderr.write('%s: not found\n' % arg)
-            sts = 1
-    if sts:
-        sys.exit(sts)
-
-numeric = re.compile('[1-9][0-9]*')
-
-def mh(dir):
-    sts = 0
-    msgs = os.listdir(dir)
-    for msg in msgs:
-        if numeric.match(msg) != len(msg):
-            continue
-        fn = os.path.join(dir, msg)
-        try:
-            f = open(fn)
-        except IOError, msg:
-            sys.stderr.write('%s: %s\n' % (fn, msg))
-            sts = 1
-            continue
-        sts = message(f) or sts
-    return sts
-
-def mmdf(f):
-    sts = 0
-    while 1:
-        line = f.readline()
-        if not line:
-            break
-        if line == '\1\1\1\1\n':
-            sts = message(f, line) or sts
-        else:
-            sys.stderr.write(
-                    'Bad line in MMFD mailbox: %r\n' % (line,))
-    return sts
-
-counter = 0 # for generating unique Message-ID headers
-
-def message(f, delimiter = ''):
-    sts = 0
-    # Parse RFC822 header
-    m = rfc822.Message(f)
-    # Write unix header line
-    fullname, email = m.getaddr('From')
-    tt = m.getdate('Date')
-    if tt:
-        t = time.mktime(tt)
-    else:
-        sys.stderr.write(
-                'Unparseable date: %r\n' % (m.getheader('Date'),))
-        t = os.fstat(f.fileno())[stat.ST_MTIME]
-    print 'From', email, time.ctime(t)
-    # Copy RFC822 header
-    for line in m.headers:
-        print line,
-    # Invent Message-ID header if none is present
-    if not m.has_key('message-id'):
-        global counter
-        counter = counter + 1
-        msgid = "<%s.%d>" % (hex(t), counter)
-        sys.stderr.write("Adding Message-ID %s (From %s)\n" %
-                         (msgid, email))
-        print "Message-ID:", msgid
-    print
-    # Copy body
-    while 1:
-        line = f.readline()
-        if line == delimiter:
-            break
-        if not line:
-            sys.stderr.write('Unexpected EOF in message\n')
-            sts = 1
-            break
-        if line[:5] == 'From ':
-            line = '>' + line
-        print line,
-    # Print trailing newline
-    print
-    return sts
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/morse.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/morse.py
deleted file mode 100644
index 138a186..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/morse.py
+++ /dev/null
@@ -1,138 +0,0 @@
-#! /usr/bin/env python
-
-# DAH should be three DOTs.
-# Space between DOTs and DAHs should be one DOT.
-# Space between two letters should be one DAH.
-# Space between two words should be DOT DAH DAH.
-
-import sys, math, audiodev
-
-DOT = 30
-DAH = 3 * DOT
-OCTAVE = 2                              # 1 == 441 Hz, 2 == 882 Hz, ...
-
-morsetab = {
-        'A': '.-',              'a': '.-',
-        'B': '-...',            'b': '-...',
-        'C': '-.-.',            'c': '-.-.',
-        'D': '-..',             'd': '-..',
-        'E': '.',               'e': '.',
-        'F': '..-.',            'f': '..-.',
-        'G': '--.',             'g': '--.',
-        'H': '....',            'h': '....',
-        'I': '..',              'i': '..',
-        'J': '.---',            'j': '.---',
-        'K': '-.-',             'k': '-.-',
-        'L': '.-..',            'l': '.-..',
-        'M': '--',              'm': '--',
-        'N': '-.',              'n': '-.',
-        'O': '---',             'o': '---',
-        'P': '.--.',            'p': '.--.',
-        'Q': '--.-',            'q': '--.-',
-        'R': '.-.',             'r': '.-.',
-        'S': '...',             's': '...',
-        'T': '-',               't': '-',
-        'U': '..-',             'u': '..-',
-        'V': '...-',            'v': '...-',
-        'W': '.--',             'w': '.--',
-        'X': '-..-',            'x': '-..-',
-        'Y': '-.--',            'y': '-.--',
-        'Z': '--..',            'z': '--..',
-        '0': '-----',           ',': '--..--',
-        '1': '.----',           '.': '.-.-.-',
-        '2': '..---',           '?': '..--..',
-        '3': '...--',           ';': '-.-.-.',
-        '4': '....-',           ':': '---...',
-        '5': '.....',           "'": '.----.',
-        '6': '-....',           '-': '-....-',
-        '7': '--...',           '/': '-..-.',
-        '8': '---..',           '(': '-.--.-',
-        '9': '----.',           ')': '-.--.-',
-        ' ': ' ',               '_': '..--.-',
-}
-
-nowave = '\0' * 200
-
-# If we play at 44.1 kHz (which we do), then if we produce one sine
-# wave in 100 samples, we get a tone of 441 Hz.  If we produce two
-# sine waves in these 100 samples, we get a tone of 882 Hz.  882 Hz
-# appears to be a nice one for playing morse code.
-def mkwave(octave):
-    sinewave = ''
-    for i in range(100):
-        val = int(math.sin(math.pi * i * octave / 50.0) * 30000)
-        sinewave += chr((val >> 8) & 255) + chr(val & 255)
-    return sinewave
-
-defaultwave = mkwave(OCTAVE)
-
-def main():
-    import getopt
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'o:p:')
-    except getopt.error:
-        sys.stderr.write('Usage ' + sys.argv[0] +
-                         ' [ -o outfile ] [ -p octave ] [ words ] ...\n')
-        sys.exit(1)
-    dev = None
-    wave = defaultwave
-    for o, a in opts:
-        if o == '-o':
-            import aifc
-            dev = aifc.open(a, 'w')
-            dev.setframerate(44100)
-            dev.setsampwidth(2)
-            dev.setnchannels(1)
-        if o == '-p':
-            wave = mkwave(int(a))
-    if not dev:
-        import audiodev
-        dev = audiodev.AudioDev()
-        dev.setoutrate(44100)
-        dev.setsampwidth(2)
-        dev.setnchannels(1)
-        dev.close = dev.stop
-        dev.writeframesraw = dev.writeframes
-    if args:
-        source = [' '.join(args)]
-    else:
-        source = iter(sys.stdin.readline, '')
-    for line in source:
-        mline = morse(line)
-        play(mline, dev, wave)
-        if hasattr(dev, 'wait'):
-            dev.wait()
-    dev.close()
-
-# Convert a string to morse code with \001 between the characters in
-# the string.
-def morse(line):
-    res = ''
-    for c in line:
-        try:
-            res += morsetab[c] + '\001'
-        except KeyError:
-            pass
-    return res
-
-# Play a line of morse code.
-def play(line, dev, wave):
-    for c in line:
-        if c == '.':
-            sine(dev, DOT, wave)
-        elif c == '-':
-            sine(dev, DAH, wave)
-        else:                   # space
-            pause(dev, DAH + DOT)
-        pause(dev, DOT)
-
-def sine(dev, length, wave):
-    for i in range(length):
-        dev.writeframesraw(wave)
-
-def pause(dev, length):
-    for i in range(length):
-        dev.writeframesraw(nowave)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/newslist.doc b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/newslist.doc
deleted file mode 100644
index d02e96f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/newslist.doc
+++ /dev/null
@@ -1,59 +0,0 @@
-                             NEWSLIST
-                             ========    
-            A program to assist HTTP browsing of newsgroups
-            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-WWW browsers such as NCSA Mosaic allow the user to read newsgroup
-articles by specifying the group name in a URL eg 'news:comp.answers'.
-
-To browse through many groups, though, (and there are several thousand
-of them) you really need a page or pages containing links to all the
-groups. There are some good ones out there, for example,
-
-    http://info.cern.ch/hypertext/DataSources/News/Groups/Overview.html
-
-is the standard one at CERN, but it only shows the groups available there,
-which may be rather different from those available on your machine.
-
-Newslist is a program which creates a hierarchy of pages for you based
-on the groups available from YOUR server. It is written in python - a
-splendid interpreted object-oriented language which I suggest you get
-right now from the directory /pub/python at ftp.cwi.nl, if you haven't
-already got it.
-
-You should be able to see some sample output by looking at:
-   http://pelican.cl.cam.ac.uk/newspage/root.html
-
-Descriptions of newsgroups can be added from a file with one group
-per line. eg:
-
-	alt.foo   Articles about foo
-	comp.bar  Programming in 'bar' and related languages
-
-A suitable list detailing most groups can be found at ftp.uu.net in
-/uunet-info/newsgroups.gz.
-
-Make sure you read the information at the beginning of the program source and
-configure the variables before running.
-
-In addition to python, you need:
-
-	An NNTP-based news feed.
-	A directory in which to put the pages.
-
-The programming is not very beautiful, but it works!  It comes with no
-warranty, express or implied, but with the hope that some others may
-find it useful.
-
-Comments, improvements & suggestions welcomed.
-Quentin Stafford-Fraser
-
- ----------------------------------------------------------------------
-                       Quentin Stafford-Fraser
-            http://pelican.cl.cam.ac.uk/people/qs101/me.html
- 
- Cambridge University Computer Lab        Rank Xerox Cambridge EuroPARC
- qs101@cl.cam.ac.uk                           fraser@europarc.xerox.com
- Tel: +44 223 334411                                Tel: +44 223 341521
- Fax: +44 223 334679                                Fax: +44 223 341510
- ----------------------------------------------------------------------
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/newslist.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/newslist.py
deleted file mode 100644
index 5462520..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/newslist.py
+++ /dev/null
@@ -1,362 +0,0 @@
-#! /usr/bin/env python
-#######################################################################
-# Newslist  $Revision$
-#
-# Syntax:
-#    newslist [ -a ]
-#
-# This is a program to create a directory full of HTML pages
-# which between them contain links to all the newsgroups available
-# on your server.
-#
-# The -a option causes a complete list of all groups to be read from
-# the server rather than just the ones which have appeared since last
-# execution. This recreates the local list from scratch. Use this on
-# the first invocation of the program, and from time to time thereafter.
-#   When new groups are first created they may appear on your server as
-# empty groups. By default, empty groups are ignored by the -a option.
-# However, these new groups will not be created again, and so will not
-# appear in the server's list of 'new groups' at a later date. Hence it
-# won't appear until you do a '-a' after some articles have appeared.
-#
-# I should really keep a list of ignored empty groups and re-check them
-# for articles on every run, but I haven't got around to it yet.
-#
-# This assumes an NNTP news feed.
-#
-# Feel free to copy, distribute and modify this code for
-# non-commercial use. If you make any useful modifications, let me
-# know!
-#
-# (c) Quentin Stafford-Fraser 1994
-# fraser@europarc.xerox.com                     qs101@cl.cam.ac.uk
-#                                                                     #
-#######################################################################
-import sys, nntplib, marshal, time, os
-
-#######################################################################
-# Check these variables before running!                               #
-
-# Top directory.
-# Filenames which don't start with / are taken as being relative to this.
-topdir = os.path.expanduser('~/newspage')
-
-# The name of your NNTP host
-# eg.
-#    newshost = 'nntp-serv.cl.cam.ac.uk'
-# or use following to get the name from the NNTPSERVER environment
-# variable:
-#    newshost = os.environ['NNTPSERVER']
-newshost = 'news.example.com'
-
-# The filename for a local cache of the newsgroup list
-treefile = 'grouptree'
-
-# The filename for descriptions of newsgroups
-# I found a suitable one at ftp.uu.net in /uunet-info/newgroups.gz
-# You can set this to '' if you don't wish to use one.
-descfile = 'newsgroups'
-
-# The directory in which HTML pages should be created
-# eg.
-#   pagedir  = '/usr/local/lib/html/newspage'
-#   pagedir  = 'pages'
-pagedir  = topdir
-
-# The html prefix which will refer to this directory
-# eg.
-#   httppref = '/newspage/',
-# or leave blank for relative links between pages: (Recommended)
-#   httppref = ''
-httppref = ''
-
-# The name of the 'root' news page in this directory.
-# A .html suffix will be added.
-rootpage = 'root'
-
-# Set skipempty to 0 if you wish to see links to empty groups as well.
-# Only affects the -a option.
-skipempty = 1
-
-# pagelinkicon can contain html to put an icon after links to
-# further pages. This helps to make important links stand out.
-# Set to '' if not wanted, or '...' is quite a good one.
-pagelinkicon = '... <img src="http://pelican.cl.cam.ac.uk/icons/page.xbm"> '
-
-# ---------------------------------------------------------------------
-# Less important personal preferences:
-
-# Sublistsize controls the maximum number of items the will appear as
-# an indented sub-list before the whole thing is moved onto a different
-# page. The smaller this is, the more pages you will have, but the
-# shorter each will be.
-sublistsize = 4
-
-# That should be all.                                                 #
-#######################################################################
-
-for dir in os.curdir, os.environ['HOME']:
-    rcfile = os.path.join(dir, '.newslistrc.py')
-    if os.path.exists(rcfile):
-        print rcfile
-        execfile(rcfile)
-        break
-
-from nntplib import NNTP
-from stat import *
-
-rcsrev = '$Revision$'
-rcsrev = ' '.join(filter(lambda s: '$' not in s, rcsrev.split()))
-desc = {}
-
-# Make (possibly) relative filenames into absolute ones
-treefile = os.path.join(topdir,treefile)
-descfile = os.path.join(topdir,descfile)
-page = os.path.join(topdir,pagedir)
-
-# First the bits for creating trees ---------------------------
-
-# Addtotree creates/augments a tree from a list of group names
-def addtotree(tree, groups):
-    print 'Updating tree...'
-    for i in groups:
-        parts = i.split('.')
-        makeleaf(tree, parts)
-
-# Makeleaf makes a leaf and the branch leading to it if necessary
-def makeleaf(tree,path):
-    j = path[0]
-    l = len(path)
-
-    if j not in tree:
-        tree[j] = {}
-    if l == 1:
-        tree[j]['.'] = '.'
-    if l > 1:
-        makeleaf(tree[j],path[1:])
-
-# Then the bits for outputting trees as pages ----------------
-
-# Createpage creates an HTML file named <root>.html containing links
-# to those groups beginning with <root>.
-
-def createpage(root, tree, p):
-    filename = os.path.join(pagedir, root+'.html')
-    if root == rootpage:
-        detail = ''
-    else:
-        detail = ' under ' + root
-    with open(filename, 'w') as f:
-        # f.write('Content-Type: text/html\n')
-        f.write('<html>\n<head>\n')
-        f.write('<title>Newsgroups available%s</title>\n' % detail)
-        f.write('</head>\n<body>\n')
-        f.write('<h1>Newsgroups available%s</h1>\n' % detail)
-        f.write('<a href="%s%s.html">Back to top level</a><p>\n' %
-                (httppref, rootpage))
-        printtree(f, tree, 0, p)
-        f.write('\n<p>')
-        f.write("<i>This page automatically created by 'newslist' v. %s." %
-                rcsrev)
-        f.write(time.ctime(time.time()) + '</i>\n')
-        f.write('</body>\n</html>\n')
-
-# Printtree prints the groups as a bulleted list.  Groups with
-# more than <sublistsize> subgroups will be put on a separate page.
-# Other sets of subgroups are just indented.
-
-def printtree(f, tree, indent, p):
-    l = len(tree)
-
-    if l > sublistsize and indent > 0:
-        # Create a new page and a link to it
-        f.write('<li><b><a href="%s%s.html">' % (httppref, p[1:]))
-        f.write(p[1:] + '.*')
-        f.write('</a></b>%s\n' % pagelinkicon)
-        createpage(p[1:], tree, p)
-        return
-
-    kl = tree.keys()
-
-    if l > 1:
-        kl.sort()
-        if indent > 0:
-            # Create a sub-list
-            f.write('<li>%s\n<ul>' % p[1:])
-        else:
-            # Create a main list
-            f.write('<ul>')
-        indent = indent + 1
-
-    for i in kl:
-        if i == '.':
-            # Output a newsgroup
-            f.write('<li><a href="news:%s">%s</a> ' % (p[1:], p[1:]))
-            if p[1:] in desc:
-                f.write('     <i>%s</i>\n' % desc[p[1:]])
-            else:
-                f.write('\n')
-        else:
-            # Output a hierarchy
-            printtree(f, tree[i], indent, p+'.'+i)
-
-    if l > 1:
-        f.write('\n</ul>')
-
-# Reading descriptions file ---------------------------------------
-
-# This returns a dict mapping group name to its description
-
-def readdesc(descfile):
-    global desc
-    desc = {}
-
-    if descfile == '':
-        return
-
-    try:
-        with open(descfile, 'r') as d:
-            print 'Reading descriptions...'
-            for l in d:
-                bits = l.split()
-                try:
-                    grp = bits[0]
-                    dsc = ' '.join(bits[1:])
-                    if len(dsc) > 1:
-                        desc[grp] = dsc
-                except IndexError:
-                    pass
-    except IOError:
-        print 'Failed to open description file ' + descfile
-        return
-
-# Check that ouput directory exists, ------------------------------
-# and offer to create it if not
-
-def checkopdir(pagedir):
-    if not os.path.isdir(pagedir):
-        print 'Directory %s does not exist.' % pagedir
-        print 'Shall I create it for you? (y/n)'
-        if sys.stdin.readline()[0] == 'y':
-            try:
-                os.mkdir(pagedir, 0777)
-            except:
-                print 'Sorry - failed!'
-                sys.exit(1)
-        else:
-            print 'OK. Exiting.'
-            sys.exit(1)
-
-# Read and write current local tree ----------------------------------
-
-def readlocallist(treefile):
-    print 'Reading current local group list...'
-    tree = {}
-    try:
-        treetime = time.localtime(os.stat(treefile)[ST_MTIME])
-    except:
-        print '\n*** Failed to open local group cache '+treefile
-        print 'If this is the first time you have run newslist, then'
-        print 'use the -a option to create it.'
-        sys.exit(1)
-    treedate = '%02d%02d%02d' % (treetime[0] % 100, treetime[1], treetime[2])
-    try:
-        with open(treefile, 'rb') as dump:
-            tree = marshal.load(dump)
-    except IOError:
-        print 'Cannot open local group list ' + treefile
-    return (tree, treedate)
-
-def writelocallist(treefile, tree):
-    try:
-        with open(treefile, 'wb') as dump:
-            groups = marshal.dump(tree, dump)
-        print 'Saved list to %s\n' % treefile
-    except:
-        print 'Sorry - failed to write to local group cache', treefile
-        print 'Does it (or its directory) have the correct permissions?'
-        sys.exit(1)
-
-# Return list of all groups on server -----------------------------
-
-def getallgroups(server):
-    print 'Getting list of all groups...'
-    treedate = '010101'
-    info = server.list()[1]
-    groups = []
-    print 'Processing...'
-    if skipempty:
-        print '\nIgnoring following empty groups:'
-    for i in info:
-        grpname = i[0].split()[0]
-        if skipempty and int(i[1]) < int(i[2]):
-            print grpname + ' ',
-        else:
-            groups.append(grpname)
-    print '\n'
-    if skipempty:
-        print '(End of empty groups)'
-    return groups
-
-# Return list of new groups on server -----------------------------
-
-def getnewgroups(server, treedate):
-    print 'Getting list of new groups since start of %s...' % treedate,
-    info = server.newgroups(treedate, '000001')[1]
-    print 'got %d.' % len(info)
-    print 'Processing...',
-    groups = []
-    for i in info:
-        grpname = i.split()[0]
-        groups.append(grpname)
-    print 'Done'
-    return groups
-
-# Now the main program --------------------------------------------
-
-def main():
-    tree = {}
-
-    # Check that the output directory exists
-    checkopdir(pagedir)
-
-    try:
-        print 'Connecting to %s...' % newshost
-        if sys.version[0] == '0':
-            s = NNTP.init(newshost)
-        else:
-            s = NNTP(newshost)
-        connected = True
-    except (nntplib.error_temp, nntplib.error_perm), x:
-        print 'Error connecting to host:', x
-        print 'I\'ll try to use just the local list.'
-        connected = False
-
-    # If -a is specified, read the full list of groups from server
-    if connected and len(sys.argv) > 1 and sys.argv[1] == '-a':
-        groups = getallgroups(s)
-
-    # Otherwise just read the local file and then add
-    # groups created since local file last modified.
-    else:
-
-        (tree, treedate) = readlocallist(treefile)
-        if connected:
-            groups = getnewgroups(s, treedate)
-
-    if connected:
-        addtotree(tree, groups)
-        writelocallist(treefile,tree)
-
-    # Read group descriptions
-    readdesc(descfile)
-
-    print 'Creating pages...'
-    createpage(rootpage, tree, '')
-    print 'Done'
-
-if __name__ == "__main__":
-    main()
-
-# That's all folks
-######################################################################
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/pi.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/pi.py
deleted file mode 100644
index f46fcff..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/pi.py
+++ /dev/null
@@ -1,33 +0,0 @@
-#! /usr/bin/env python
-
-# Print digits of pi forever.
-#
-# The algorithm, using Python's 'long' integers ("bignums"), works
-# with continued fractions, and was conceived by Lambert Meertens.
-#
-# See also the ABC Programmer's Handbook, by Geurts, Meertens & Pemberton,
-# published by Prentice-Hall (UK) Ltd., 1990.
-
-import sys
-
-def main():
-    k, a, b, a1, b1 = 2, 4, 1, 12, 4
-    while True:
-        # Next approximation
-        p, q, k = k*k, 2*k+1, k+1
-        a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
-        # Print common digits
-        d, d1 = a//b, a1//b1
-        while d == d1:
-            output(d)
-            a, a1 = 10*(a%b), 10*(a1%b1)
-            d, d1 = a//b, a1//b1
-
-def output(d):
-    # Use write() to avoid spaces between the digits
-    sys.stdout.write(str(d))
-    # Flush so the output is seen immediately
-    sys.stdout.flush()
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/pp.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/pp.py
deleted file mode 100644
index ccc7bc0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/pp.py
+++ /dev/null
@@ -1,129 +0,0 @@
-#! /usr/bin/env python
-
-# Emulate some Perl command line options.
-# Usage: pp [-a] [-c] [-d] [-e scriptline] [-F fieldsep] [-n] [-p] [file] ...
-# Where the options mean the following:
-#   -a            : together with -n or -p, splits each line into list F
-#   -c            : check syntax only, do not execute any code
-#   -d            : run the script under the debugger, pdb
-#   -e scriptline : gives one line of the Python script; may be repeated
-#   -F fieldsep   : sets the field separator for the -a option [not in Perl]
-#   -n            : runs the script for each line of input
-#   -p            : prints the line after the script has run
-# When no script lines have been passed, the first file argument
-# contains the script.  With -n or -p, the remaining arguments are
-# read as input to the script, line by line.  If a file is '-'
-# or missing, standard input is read.
-
-# XXX To do:
-# - add -i extension option (change files in place)
-# - make a single loop over the files and lines (changes effect of 'break')?
-# - add an option to specify the record separator
-# - except for -n/-p, run directly from the file if at all possible
-
-import sys
-import getopt
-
-FS = ''
-SCRIPT = []
-AFLAG = 0
-CFLAG = 0
-DFLAG = 0
-NFLAG = 0
-PFLAG = 0
-
-try:
-    optlist, ARGS = getopt.getopt(sys.argv[1:], 'acde:F:np')
-except getopt.error, msg:
-    sys.stderr.write('%s: %s\n' % (sys.argv[0], msg))
-    sys.exit(2)
-
-for option, optarg in optlist:
-    if option == '-a':
-        AFLAG = 1
-    elif option == '-c':
-        CFLAG = 1
-    elif option == '-d':
-        DFLAG = 1
-    elif option == '-e':
-        for line in optarg.split('\n'):
-            SCRIPT.append(line)
-    elif option == '-F':
-        FS = optarg
-    elif option == '-n':
-        NFLAG = 1
-        PFLAG = 0
-    elif option == '-p':
-        NFLAG = 1
-        PFLAG = 1
-    else:
-        print option, 'not recognized???'
-
-if not ARGS: ARGS.append('-')
-
-if not SCRIPT:
-    if ARGS[0] == '-':
-        fp = sys.stdin
-    else:
-        fp = open(ARGS[0], 'r')
-    while 1:
-        line = fp.readline()
-        if not line: break
-        SCRIPT.append(line[:-1])
-    del fp
-    del ARGS[0]
-    if not ARGS: ARGS.append('-')
-
-if CFLAG:
-    prologue = ['if 0:']
-    epilogue = []
-elif NFLAG:
-    # Note that it is on purpose that AFLAG and PFLAG are
-    # tested dynamically each time through the loop
-    prologue = [
-            'LINECOUNT = 0',
-            'for FILE in ARGS:',
-            '   \tif FILE == \'-\':',
-            '   \t   \tFP = sys.stdin',
-            '   \telse:',
-            '   \t   \tFP = open(FILE, \'r\')',
-            '   \tLINENO = 0',
-            '   \twhile 1:',
-            '   \t   \tLINE = FP.readline()',
-            '   \t   \tif not LINE: break',
-            '   \t   \tLINENO = LINENO + 1',
-            '   \t   \tLINECOUNT = LINECOUNT + 1',
-            '   \t   \tL = LINE[:-1]',
-            '   \t   \taflag = AFLAG',
-            '   \t   \tif aflag:',
-            '   \t   \t   \tif FS: F = L.split(FS)',
-            '   \t   \t   \telse: F = L.split()'
-            ]
-    epilogue = [
-            '   \t   \tif not PFLAG: continue',
-            '   \t   \tif aflag:',
-            '   \t   \t   \tif FS: print FS.join(F)',
-            '   \t   \t   \telse: print \' \'.join(F)',
-            '   \t   \telse: print L',
-            ]
-else:
-    prologue = ['if 1:']
-    epilogue = []
-
-# Note that we indent using tabs only, so that any indentation style
-# used in 'command' will come out right after re-indentation.
-
-program = '\n'.join(prologue) + '\n'
-for line in SCRIPT:
-    program += '   \t   \t' + line + '\n'
-program += '\n'.join(epilogue) + '\n'
-
-import tempfile
-fp = tempfile.NamedTemporaryFile()
-fp.write(program)
-fp.flush()
-if DFLAG:
-    import pdb
-    pdb.run('execfile(%r)' % (fp.name,))
-else:
-    execfile(fp.name)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/primes.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/primes.py
deleted file mode 100644
index 6c6a152..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/primes.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /usr/bin/env python
-
-# Print prime numbers in a given range
-
-def primes(min, max):
-    if max >= 2 >= min:
-        print 2
-    primes = [2]
-    i = 3
-    while i <= max:
-        for p in primes:
-            if i % p == 0 or p*p > i:
-                break
-        if i % p != 0:
-            primes.append(i)
-            if i >= min:
-                print i
-        i += 2
-
-def main():
-    import sys
-    min, max = 2, 0x7fffffff
-    if sys.argv[1:]:
-        min = int(sys.argv[1])
-        if sys.argv[2:]:
-            max = int(sys.argv[2])
-    primes(min, max)
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/queens.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/queens.py
deleted file mode 100644
index 5d212ed..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/queens.py
+++ /dev/null
@@ -1,85 +0,0 @@
-#! /usr/bin/env python
-
-"""N queens problem.
-
-The (well-known) problem is due to Niklaus Wirth.
-
-This solution is inspired by Dijkstra (Structured Programming).  It is
-a classic recursive backtracking approach.
-
-"""
-
-N = 8                                   # Default; command line overrides
-
-class Queens:
-
-    def __init__(self, n=N):
-        self.n = n
-        self.reset()
-
-    def reset(self):
-        n = self.n
-        self.y = [None] * n             # Where is the queen in column x
-        self.row = [0] * n              # Is row[y] safe?
-        self.up = [0] * (2*n-1)         # Is upward diagonal[x-y] safe?
-        self.down = [0] * (2*n-1)       # Is downward diagonal[x+y] safe?
-        self.nfound = 0                 # Instrumentation
-
-    def solve(self, x=0):               # Recursive solver
-        for y in range(self.n):
-            if self.safe(x, y):
-                self.place(x, y)
-                if x+1 == self.n:
-                    self.display()
-                else:
-                    self.solve(x+1)
-                self.remove(x, y)
-
-    def safe(self, x, y):
-        return not self.row[y] and not self.up[x-y] and not self.down[x+y]
-
-    def place(self, x, y):
-        self.y[x] = y
-        self.row[y] = 1
-        self.up[x-y] = 1
-        self.down[x+y] = 1
-
-    def remove(self, x, y):
-        self.y[x] = None
-        self.row[y] = 0
-        self.up[x-y] = 0
-        self.down[x+y] = 0
-
-    silent = 0                          # If true, count solutions only
-
-    def display(self):
-        self.nfound = self.nfound + 1
-        if self.silent:
-            return
-        print '+-' + '--'*self.n + '+'
-        for y in range(self.n-1, -1, -1):
-            print '|',
-            for x in range(self.n):
-                if self.y[x] == y:
-                    print "Q",
-                else:
-                    print ".",
-            print '|'
-        print '+-' + '--'*self.n + '+'
-
-def main():
-    import sys
-    silent = 0
-    n = N
-    if sys.argv[1:2] == ['-n']:
-        silent = 1
-        del sys.argv[1]
-    if sys.argv[1:]:
-        n = int(sys.argv[1])
-    q = Queens(n)
-    q.silent = silent
-    q.solve()
-    print "Found", q.nfound, "solutions."
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/script.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/script.py
deleted file mode 100644
index 8098dfc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/script.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#! /usr/bin/env python
-
-# script.py -- Make typescript of terminal session.
-# Usage:
-#       -a      Append to typescript.
-#       -p      Use Python as shell.
-# Author: Steen Lumholt.
-
-
-import os, time, sys, getopt
-import pty
-
-def read(fd):
-    data = os.read(fd, 1024)
-    script.write(data)
-    return data
-
-shell = 'sh'
-filename = 'typescript'
-mode = 'w'
-if os.environ.has_key('SHELL'):
-    shell = os.environ['SHELL']
-
-try:
-    opts, args = getopt.getopt(sys.argv[1:], 'ap')
-except getopt.error, msg:
-    print '%s: %s' % (sys.argv[0], msg)
-    sys.exit(2)
-
-for o, a in opts:
-    if o == '-a':
-        mode = 'a'
-    elif o == '-p':
-        shell = 'python'
-
-script = open(filename, mode)
-
-sys.stdout.write('Script started, file is %s\n' % filename)
-script.write('Script started on %s\n' % time.ctime(time.time()))
-pty.spawn(shell, read)
-script.write('Script done on %s\n' % time.ctime(time.time()))
-sys.stdout.write('Script done, file is %s\n' % filename)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/unbirthday.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/unbirthday.py
deleted file mode 100644
index e4dbb1a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/unbirthday.py
+++ /dev/null
@@ -1,104 +0,0 @@
-#! /usr/bin/env python
-
-# Calculate your unbirthday count (see Alice in Wonderland).
-# This is defined as the number of days from your birth until today
-# that weren't your birthday.  (The day you were born is not counted).
-# Leap years make it interesting.
-
-import sys
-import time
-import calendar
-
-def main():
-    if sys.argv[1:]:
-        year = int(sys.argv[1])
-    else:
-        year = int(raw_input('In which year were you born? '))
-    if 0 <= year < 100:
-        print "I'll assume that by", year,
-        year = year + 1900
-        print 'you mean', year, 'and not the early Christian era'
-    elif not (1850 <= year <= time.localtime()[0]):
-        print "It's hard to believe you were born in", year
-        return
-
-    if sys.argv[2:]:
-        month = int(sys.argv[2])
-    else:
-        month = int(raw_input('And in which month? (1-12) '))
-    if not (1 <= month <= 12):
-        print 'There is no month numbered', month
-        return
-
-    if sys.argv[3:]:
-        day = int(sys.argv[3])
-    else:
-        day = int(raw_input('And on what day of that month? (1-31) '))
-    if month == 2 and calendar.isleap(year):
-        maxday = 29
-    else:
-        maxday = calendar.mdays[month]
-    if not (1 <= day <= maxday):
-        print 'There are no', day, 'days in that month!'
-        return
-
-    bdaytuple = (year, month, day)
-    bdaydate = mkdate(bdaytuple)
-    print 'You were born on', format(bdaytuple)
-
-    todaytuple = time.localtime()[:3]
-    todaydate = mkdate(todaytuple)
-    print 'Today is', format(todaytuple)
-
-    if bdaytuple > todaytuple:
-        print 'You are a time traveler.  Go back to the future!'
-        return
-
-    if bdaytuple == todaytuple:
-        print 'You were born today.  Have a nice life!'
-        return
-
-    days = todaydate - bdaydate
-    print 'You have lived', days, 'days'
-
-    age = 0
-    for y in range(year, todaytuple[0] + 1):
-        if bdaytuple < (y, month, day) <= todaytuple:
-            age = age + 1
-
-    print 'You are', age, 'years old'
-
-    if todaytuple[1:] == bdaytuple[1:]:
-        print 'Congratulations!  Today is your', nth(age), 'birthday'
-        print 'Yesterday was your',
-    else:
-        print 'Today is your',
-    print nth(days - age), 'unbirthday'
-
-def format((year, month, day)):
-    return '%d %s %d' % (day, calendar.month_name[month], year)
-
-def nth(n):
-    if n == 1: return '1st'
-    if n == 2: return '2nd'
-    if n == 3: return '3rd'
-    return '%dth' % n
-
-def mkdate((year, month, day)):
-    # January 1st, in 0 A.D. is arbitrarily defined to be day 1,
-    # even though that day never actually existed and the calendar
-    # was different then...
-    days = year*365                  # years, roughly
-    days = days + (year+3)//4        # plus leap years, roughly
-    days = days - (year+99)//100     # minus non-leap years every century
-    days = days + (year+399)//400    # plus leap years every 4 centirues
-    for i in range(1, month):
-        if i == 2 and calendar.isleap(year):
-            days = days + 29
-        else:
-            days = days + calendar.mdays[i]
-    days = days + day
-    return days
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/update.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/update.py
deleted file mode 100644
index 17f101c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/update.py
+++ /dev/null
@@ -1,92 +0,0 @@
-#! /usr/bin/env python
-
-# Update a bunch of files according to a script.
-# The input file contains lines of the form <filename>:<lineno>:<text>,
-# meaning that the given line of the given file is to be replaced
-# by the given text.  This is useful for performing global substitutions
-# on grep output:
-
-import os
-import sys
-import re
-
-pat = '^([^: \t\n]+):([1-9][0-9]*):'
-prog = re.compile(pat)
-
-class FileObj:
-    def __init__(self, filename):
-        self.filename = filename
-        self.changed = 0
-        try:
-            self.lines = open(filename, 'r').readlines()
-        except IOError, msg:
-            print '*** Can\'t open "%s":' % filename, msg
-            self.lines = None
-            return
-        print 'diffing', self.filename
-
-    def finish(self):
-        if not self.changed:
-            print 'no changes to', self.filename
-            return
-        try:
-            os.rename(self.filename, self.filename + '~')
-            fp = open(self.filename, 'w')
-        except (os.error, IOError), msg:
-            print '*** Can\'t rewrite "%s":' % self.filename, msg
-            return
-        print 'writing', self.filename
-        for line in self.lines:
-            fp.write(line)
-        fp.close()
-        self.changed = 0
-
-    def process(self, lineno, rest):
-        if self.lines is None:
-            print '(not processed): %s:%s:%s' % (
-                      self.filename, lineno, rest),
-            return
-        i = eval(lineno) - 1
-        if not 0 <= i < len(self.lines):
-            print '*** Line number out of range: %s:%s:%s' % (
-                      self.filename, lineno, rest),
-            return
-        if self.lines[i] == rest:
-            print '(no change): %s:%s:%s' % (
-                      self.filename, lineno, rest),
-            return
-        if not self.changed:
-            self.changed = 1
-        print '%sc%s' % (lineno, lineno)
-        print '<', self.lines[i],
-        print '---'
-        self.lines[i] = rest
-        print '>', self.lines[i],
-
-def main():
-    if sys.argv[1:]:
-        try:
-            fp = open(sys.argv[1], 'r')
-        except IOError, msg:
-            print 'Can\'t open "%s":' % sys.argv[1], msg
-            sys.exit(1)
-    else:
-        fp = sys.stdin
-    curfile = None
-    while 1:
-        line = fp.readline()
-        if not line:
-            if curfile: curfile.finish()
-            break
-        n = prog.match(line)
-        if n < 0:
-            print 'Funny line:', line,
-            continue
-        filename, lineno = prog.group(1, 2)
-        if not curfile or filename <> curfile.filename:
-            if curfile: curfile.finish()
-            curfile = FileObj(filename)
-        curfile.process(lineno, line[n:])
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/README b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/README
deleted file mode 100644
index 69618fc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/README
+++ /dev/null
@@ -1,14 +0,0 @@
-This directory contains some demonstrations of the socket module:
-
-broadcast.py	 	Broadcast the time to radio.py.
-echosvr.py		About the simplest TCP server possible.
-finger.py		Client for the 'finger' protocol.
-ftp.py			A very simple ftp client.
-gopher.py		A simple gopher client.
-mcast.py		IPv4/v6 multicast example
-radio.py		Receive time broadcasts from broadcast.py.
-telnet.py		Client for the 'telnet' protocol.
-throughput.py		Client and server to measure TCP throughput.
-unixclient.py		Unix socket example, client side
-unixserver.py		Unix socket example, server side
-udpecho.py		Client and server for the UDP echo protocol.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/broadcast.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/broadcast.py
deleted file mode 100644
index f022240..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/broadcast.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# Send UDP broadcast packets
-
-MYPORT = 50000
-
-import sys, time
-from socket import *
-
-s = socket(AF_INET, SOCK_DGRAM)
-s.bind(('', 0))
-s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
-
-while 1:
-    data = repr(time.time()) + '\n'
-    s.sendto(data, ('<broadcast>', MYPORT))
-    time.sleep(2)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/echosvr.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/echosvr.py
deleted file mode 100644
index 893a486..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/echosvr.py
+++ /dev/null
@@ -1,31 +0,0 @@
-#! /usr/bin/env python
-
-# Python implementation of an 'echo' tcp server: echo all data it receives.
-#
-# This is the simplest possible server, servicing a single request only.
-
-import sys
-from socket import *
-
-# The standard echo port isn't very useful, it requires root permissions!
-# ECHO_PORT = 7
-ECHO_PORT = 50000 + 7
-BUFSIZE = 1024
-
-def main():
-    if len(sys.argv) > 1:
-        port = int(eval(sys.argv[1]))
-    else:
-        port = ECHO_PORT
-    s = socket(AF_INET, SOCK_STREAM)
-    s.bind(('', port))
-    s.listen(1)
-    conn, (remotehost, remoteport) = s.accept()
-    print 'connected by', remotehost, remoteport
-    while 1:
-        data = conn.recv(BUFSIZE)
-        if not data:
-            break
-        conn.send(data)
-
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/finger.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/finger.py
deleted file mode 100644
index 9cd854c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/finger.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#! /usr/bin/env python
-
-# Python interface to the Internet finger daemon.
-#
-# Usage: finger [options] [user][@host] ...
-#
-# If no host is given, the finger daemon on the local host is contacted.
-# Options are passed uninterpreted to the finger daemon!
-
-
-import sys, string
-from socket import *
-
-
-# Hardcode the number of the finger port here.
-# It's not likely to change soon...
-#
-FINGER_PORT = 79
-
-
-# Function to do one remote finger invocation.
-# Output goes directly to stdout (although this can be changed).
-#
-def finger(host, args):
-    s = socket(AF_INET, SOCK_STREAM)
-    s.connect((host, FINGER_PORT))
-    s.send(args + '\n')
-    while 1:
-        buf = s.recv(1024)
-        if not buf: break
-        sys.stdout.write(buf)
-    sys.stdout.flush()
-
-
-# Main function: argument parsing.
-#
-def main():
-    options = ''
-    i = 1
-    while i < len(sys.argv) and sys.argv[i][:1] == '-':
-        options = options + sys.argv[i] + ' '
-        i = i+1
-    args = sys.argv[i:]
-    if not args:
-        args = ['']
-    for arg in args:
-        if '@' in arg:
-            at = string.index(arg, '@')
-            host = arg[at+1:]
-            arg = arg[:at]
-        else:
-            host = ''
-        finger(host, options + arg)
-
-
-# Call the main function.
-#
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/ftp.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/ftp.py
deleted file mode 100644
index 3acdabf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/ftp.py
+++ /dev/null
@@ -1,146 +0,0 @@
-# A simple FTP client.
-#
-# The information to write this program was gathered from RFC 959,
-# but this is not a complete implementation!  Yet it shows how a simple
-# FTP client can be built, and you are welcome to extend it to suit
-# it to your needs...
-#
-# How it works (assuming you've read the RFC):
-#
-# User commands are passed uninterpreted to the server.  However, the
-# user never needs to send a PORT command.  Rather, the client opens a
-# port right away and sends the appropriate PORT command to the server.
-# When a response code 150 is received, this port is used to receive
-# the data (which is written to stdout in this version), and when the
-# data is exhausted, a new port is opened and a corresponding PORT
-# command sent.  In order to avoid errors when reusing ports quickly
-# (and because there is no s.getsockname() method in Python yet) we
-# cycle through a number of ports in the 50000 range.
-
-
-import sys, posix, string
-from socket import *
-
-
-BUFSIZE = 1024
-
-# Default port numbers used by the FTP protocol.
-#
-FTP_PORT = 21
-FTP_DATA_PORT = FTP_PORT - 1
-
-# Change the data port to something not needing root permissions.
-#
-FTP_DATA_PORT = FTP_DATA_PORT + 50000
-
-
-# Main program (called at the end of this file).
-#
-def main():
-    hostname = sys.argv[1]
-    control(hostname)
-
-
-# Control process (user interface and user protocol interpreter).
-#
-def control(hostname):
-    #
-    # Create control connection
-    #
-    s = socket(AF_INET, SOCK_STREAM)
-    s.connect((hostname, FTP_PORT))
-    f = s.makefile('r') # Reading the replies is easier from a file...
-    #
-    # Control loop
-    #
-    r = None
-    while 1:
-        code = getreply(f)
-        if code in ('221', 'EOF'): break
-        if code == '150':
-            getdata(r)
-            code = getreply(f)
-            r = None
-        if not r:
-            r = newdataport(s, f)
-        cmd = getcommand()
-        if not cmd: break
-        s.send(cmd + '\r\n')
-
-
-# Create a new data port and send a PORT command to the server for it.
-# (Cycle through a number of ports to avoid problems with reusing
-# a port within a short time.)
-#
-nextport = 0
-#
-def newdataport(s, f):
-    global nextport
-    port = nextport + FTP_DATA_PORT
-    nextport = (nextport+1) % 16
-    r = socket(AF_INET, SOCK_STREAM)
-    r.bind((gethostbyname(gethostname()), port))
-    r.listen(1)
-    sendportcmd(s, f, port)
-    return r
-
-
-# Send an appropriate port command.
-#
-def sendportcmd(s, f, port):
-    hostname = gethostname()
-    hostaddr = gethostbyname(hostname)
-    hbytes = string.splitfields(hostaddr, '.')
-    pbytes = [repr(port//256), repr(port%256)]
-    bytes = hbytes + pbytes
-    cmd = 'PORT ' + string.joinfields(bytes, ',')
-    s.send(cmd + '\r\n')
-    code = getreply(f)
-
-
-# Process an ftp reply and return the 3-digit reply code (as a string).
-# The reply should be a line of text starting with a 3-digit number.
-# If the 4th char is '-', it is a multi-line reply and is
-# terminate by a line starting with the same 3-digit number.
-# Any text while receiving the reply is echoed to the file.
-#
-def getreply(f):
-    line = f.readline()
-    if not line: return 'EOF'
-    print line,
-    code = line[:3]
-    if line[3:4] == '-':
-        while 1:
-            line = f.readline()
-            if not line: break # Really an error
-            print line,
-            if line[:3] == code and line[3:4] != '-': break
-    return code
-
-
-# Get the data from the data connection.
-#
-def getdata(r):
-    print '(accepting data connection)'
-    conn, host = r.accept()
-    print '(data connection accepted)'
-    while 1:
-        data = conn.recv(BUFSIZE)
-        if not data: break
-        sys.stdout.write(data)
-    print '(end of data connection)'
-
-# Get a command from the user.
-#
-def getcommand():
-    try:
-        while 1:
-            line = raw_input('ftp.py> ')
-            if line: return line
-    except EOFError:
-        return ''
-
-
-# Call the main program.
-#
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/gopher.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/gopher.py
deleted file mode 100644
index e47eca5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/gopher.py
+++ /dev/null
@@ -1,347 +0,0 @@
-#! /usr/bin/env python
-
-# A simple gopher client.
-#
-# Usage: gopher [ [selector] host [port] ]
-
-import string
-import sys
-import os
-import socket
-
-# Default selector, host and port
-DEF_SELECTOR = ''
-DEF_HOST     = 'gopher.micro.umn.edu'
-DEF_PORT     = 70
-
-# Recognized file types
-T_TEXTFILE  = '0'
-T_MENU      = '1'
-T_CSO       = '2'
-T_ERROR     = '3'
-T_BINHEX    = '4'
-T_DOS       = '5'
-T_UUENCODE  = '6'
-T_SEARCH    = '7'
-T_TELNET    = '8'
-T_BINARY    = '9'
-T_REDUNDANT = '+'
-T_SOUND     = 's'
-
-# Dictionary mapping types to strings
-typename = {'0': '<TEXT>', '1': '<DIR>', '2': '<CSO>', '3': '<ERROR>', \
-        '4': '<BINHEX>', '5': '<DOS>', '6': '<UUENCODE>', '7': '<SEARCH>', \
-        '8': '<TELNET>', '9': '<BINARY>', '+': '<REDUNDANT>', 's': '<SOUND>'}
-
-# Oft-used characters and strings
-CRLF = '\r\n'
-TAB = '\t'
-
-# Open a TCP connection to a given host and port
-def open_socket(host, port):
-    if not port:
-        port = DEF_PORT
-    elif type(port) == type(''):
-        port = string.atoi(port)
-    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-    s.connect((host, port))
-    return s
-
-# Send a selector to a given host and port, return a file with the reply
-def send_request(selector, host, port):
-    s = open_socket(host, port)
-    s.send(selector + CRLF)
-    s.shutdown(1)
-    return s.makefile('r')
-
-# Get a menu in the form of a list of entries
-def get_menu(selector, host, port):
-    f = send_request(selector, host, port)
-    list = []
-    while 1:
-        line = f.readline()
-        if not line:
-            print '(Unexpected EOF from server)'
-            break
-        if line[-2:] == CRLF:
-            line = line[:-2]
-        elif line[-1:] in CRLF:
-            line = line[:-1]
-        if line == '.':
-            break
-        if not line:
-            print '(Empty line from server)'
-            continue
-        typechar = line[0]
-        parts = string.splitfields(line[1:], TAB)
-        if len(parts) < 4:
-            print '(Bad line from server: %r)' % (line,)
-            continue
-        if len(parts) > 4:
-            print '(Extra info from server: %r)' % (parts[4:],)
-        parts.insert(0, typechar)
-        list.append(parts)
-    f.close()
-    return list
-
-# Get a text file as a list of lines, with trailing CRLF stripped
-def get_textfile(selector, host, port):
-    list = []
-    get_alt_textfile(selector, host, port, list.append)
-    return list
-
-# Get a text file and pass each line to a function, with trailing CRLF stripped
-def get_alt_textfile(selector, host, port, func):
-    f = send_request(selector, host, port)
-    while 1:
-        line = f.readline()
-        if not line:
-            print '(Unexpected EOF from server)'
-            break
-        if line[-2:] == CRLF:
-            line = line[:-2]
-        elif line[-1:] in CRLF:
-            line = line[:-1]
-        if line == '.':
-            break
-        if line[:2] == '..':
-            line = line[1:]
-        func(line)
-    f.close()
-
-# Get a binary file as one solid data block
-def get_binary(selector, host, port):
-    f = send_request(selector, host, port)
-    data = f.read()
-    f.close()
-    return data
-
-# Get a binary file and pass each block to a function
-def get_alt_binary(selector, host, port, func, blocksize):
-    f = send_request(selector, host, port)
-    while 1:
-        data = f.read(blocksize)
-        if not data:
-            break
-        func(data)
-
-# A *very* simple interactive browser
-
-# Browser main command, has default arguments
-def browser(*args):
-    selector = DEF_SELECTOR
-    host = DEF_HOST
-    port = DEF_PORT
-    n = len(args)
-    if n > 0 and args[0]:
-        selector = args[0]
-    if n > 1 and args[1]:
-        host = args[1]
-    if n > 2 and args[2]:
-        port = args[2]
-    if n > 3:
-        raise RuntimeError, 'too many args'
-    try:
-        browse_menu(selector, host, port)
-    except socket.error, msg:
-        print 'Socket error:', msg
-        sys.exit(1)
-    except KeyboardInterrupt:
-        print '\n[Goodbye]'
-
-# Browse a menu
-def browse_menu(selector, host, port):
-    list = get_menu(selector, host, port)
-    while 1:
-        print '----- MENU -----'
-        print 'Selector:', repr(selector)
-        print 'Host:', host, ' Port:', port
-        print
-        for i in range(len(list)):
-            item = list[i]
-            typechar, description = item[0], item[1]
-            print string.rjust(repr(i+1), 3) + ':', description,
-            if typename.has_key(typechar):
-                print typename[typechar]
-            else:
-                print '<TYPE=' + repr(typechar) + '>'
-        print
-        while 1:
-            try:
-                str = raw_input('Choice [CR == up a level]: ')
-            except EOFError:
-                print
-                return
-            if not str:
-                return
-            try:
-                choice = string.atoi(str)
-            except string.atoi_error:
-                print 'Choice must be a number; try again:'
-                continue
-            if not 0 < choice <= len(list):
-                print 'Choice out of range; try again:'
-                continue
-            break
-        item = list[choice-1]
-        typechar = item[0]
-        [i_selector, i_host, i_port] = item[2:5]
-        if typebrowser.has_key(typechar):
-            browserfunc = typebrowser[typechar]
-            try:
-                browserfunc(i_selector, i_host, i_port)
-            except (IOError, socket.error):
-                print '***', sys.exc_type, ':', sys.exc_value
-        else:
-            print 'Unsupported object type'
-
-# Browse a text file
-def browse_textfile(selector, host, port):
-    x = None
-    try:
-        p = os.popen('${PAGER-more}', 'w')
-        x = SaveLines(p)
-        get_alt_textfile(selector, host, port, x.writeln)
-    except IOError, msg:
-        print 'IOError:', msg
-    if x:
-        x.close()
-    f = open_savefile()
-    if not f:
-        return
-    x = SaveLines(f)
-    try:
-        get_alt_textfile(selector, host, port, x.writeln)
-        print 'Done.'
-    except IOError, msg:
-        print 'IOError:', msg
-    x.close()
-
-# Browse a search index
-def browse_search(selector, host, port):
-    while 1:
-        print '----- SEARCH -----'
-        print 'Selector:', repr(selector)
-        print 'Host:', host, ' Port:', port
-        print
-        try:
-            query = raw_input('Query [CR == up a level]: ')
-        except EOFError:
-            print
-            break
-        query = string.strip(query)
-        if not query:
-            break
-        if '\t' in query:
-            print 'Sorry, queries cannot contain tabs'
-            continue
-        browse_menu(selector + TAB + query, host, port)
-
-# "Browse" telnet-based information, i.e. open a telnet session
-def browse_telnet(selector, host, port):
-    if selector:
-        print 'Log in as', repr(selector)
-    if type(port) <> type(''):
-        port = repr(port)
-    sts = os.system('set -x; exec telnet ' + host + ' ' + port)
-    if sts:
-        print 'Exit status:', sts
-
-# "Browse" a binary file, i.e. save it to a file
-def browse_binary(selector, host, port):
-    f = open_savefile()
-    if not f:
-        return
-    x = SaveWithProgress(f)
-    get_alt_binary(selector, host, port, x.write, 8*1024)
-    x.close()
-
-# "Browse" a sound file, i.e. play it or save it
-def browse_sound(selector, host, port):
-    browse_binary(selector, host, port)
-
-# Dictionary mapping types to browser functions
-typebrowser = {'0': browse_textfile, '1': browse_menu, \
-        '4': browse_binary, '5': browse_binary, '6': browse_textfile, \
-        '7': browse_search, \
-        '8': browse_telnet, '9': browse_binary, 's': browse_sound}
-
-# Class used to save lines, appending a newline to each line
-class SaveLines:
-    def __init__(self, f):
-        self.f = f
-    def writeln(self, line):
-        self.f.write(line + '\n')
-    def close(self):
-        sts = self.f.close()
-        if sts:
-            print 'Exit status:', sts
-
-# Class used to save data while showing progress
-class SaveWithProgress:
-    def __init__(self, f):
-        self.f = f
-    def write(self, data):
-        sys.stdout.write('#')
-        sys.stdout.flush()
-        self.f.write(data)
-    def close(self):
-        print
-        sts = self.f.close()
-        if sts:
-            print 'Exit status:', sts
-
-# Ask for and open a save file, or return None if not to save
-def open_savefile():
-    try:
-        savefile = raw_input( \
-    'Save as file [CR == don\'t save; |pipeline or ~user/... OK]: ')
-    except EOFError:
-        print
-        return None
-    savefile = string.strip(savefile)
-    if not savefile:
-        return None
-    if savefile[0] == '|':
-        cmd = string.strip(savefile[1:])
-        try:
-            p = os.popen(cmd, 'w')
-        except IOError, msg:
-            print repr(cmd), ':', msg
-            return None
-        print 'Piping through', repr(cmd), '...'
-        return p
-    if savefile[0] == '~':
-        savefile = os.path.expanduser(savefile)
-    try:
-        f = open(savefile, 'w')
-    except IOError, msg:
-        print repr(savefile), ':', msg
-        return None
-    print 'Saving to', repr(savefile), '...'
-    return f
-
-# Test program
-def test():
-    if sys.argv[4:]:
-        print 'usage: gopher [ [selector] host [port] ]'
-        sys.exit(2)
-    elif sys.argv[3:]:
-        browser(sys.argv[1], sys.argv[2], sys.argv[3])
-    elif sys.argv[2:]:
-        try:
-            port = string.atoi(sys.argv[2])
-            selector = ''
-            host = sys.argv[1]
-        except string.atoi_error:
-            selector = sys.argv[1]
-            host = sys.argv[2]
-            port = ''
-        browser(selector, host, port)
-    elif sys.argv[1:]:
-        browser('', sys.argv[1])
-    else:
-        browser()
-
-# Call the test program as a main program
-test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/mcast.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/mcast.py
deleted file mode 100644
index 55d405e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/mcast.py
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/env python
-#
-# Send/receive UDP multicast packets.
-# Requires that your OS kernel supports IP multicast.
-#
-# Usage:
-#   mcast -s (sender, IPv4)
-#   mcast -s -6 (sender, IPv6)
-#   mcast    (receivers, IPv4)
-#   mcast  -6  (receivers, IPv6)
-
-MYPORT = 8123
-MYGROUP_4 = '225.0.0.250'
-MYGROUP_6 = 'ff15:7079:7468:6f6e:6465:6d6f:6d63:6173'
-MYTTL = 1 # Increase to reach other networks
-
-import time
-import struct
-import socket
-import sys
-
-def main():
-    group = MYGROUP_6 if "-6" in sys.argv[1:] else MYGROUP_4
-
-    if "-s" in sys.argv[1:]:
-        sender(group)
-    else:
-        receiver(group)
-
-
-def sender(group):
-    addrinfo = socket.getaddrinfo(group, None)[0]
-
-    s = socket.socket(addrinfo[0], socket.SOCK_DGRAM)
-
-    # Set Time-to-live (optional)
-    ttl_bin = struct.pack('@i', MYTTL)
-    if addrinfo[0] == socket.AF_INET: # IPv4
-        s.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, ttl_bin)
-    else:
-        s.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_MULTICAST_HOPS, ttl_bin)
-
-    while True:
-        data = repr(time.time())
-        s.sendto(data + '\0', (addrinfo[4][0], MYPORT))
-        time.sleep(1)
-
-
-def receiver(group):
-    # Look up multicast group address in name server and find out IP version
-    addrinfo = socket.getaddrinfo(group, None)[0]
-
-    # Create a socket
-    s = socket.socket(addrinfo[0], socket.SOCK_DGRAM)
-
-    # Allow multiple copies of this program on one machine
-    # (not strictly needed)
-    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-
-    # Bind it to the port
-    s.bind(('', MYPORT))
-
-    group_bin = socket.inet_pton(addrinfo[0], addrinfo[4][0])
-    # Join group
-    if addrinfo[0] == socket.AF_INET: # IPv4
-        mreq = group_bin + struct.pack('=I', socket.INADDR_ANY)
-        s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
-    else:
-        mreq = group_bin + struct.pack('@I', 0)
-        s.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_JOIN_GROUP, mreq)
-
-    # Loop, printing any data we receive
-    while True:
-        data, sender = s.recvfrom(1500)
-        while data[-1:] == '\0': data = data[:-1] # Strip trailing \0's
-        print (str(sender) + '  ' + repr(data))
-
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/radio.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/radio.py
deleted file mode 100644
index 084ef88..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/radio.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Receive UDP packets transmitted by a broadcasting service
-
-MYPORT = 50000
-
-import sys
-from socket import *
-
-s = socket(AF_INET, SOCK_DGRAM)
-s.bind(('', MYPORT))
-
-while 1:
-    data, wherefrom = s.recvfrom(1500, 0)
-    sys.stderr.write(repr(wherefrom) + '\n')
-    sys.stdout.write(data)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/rpython.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/rpython.py
deleted file mode 100644
index a28de1d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/rpython.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#! /usr/bin/env python
-
-# Remote python client.
-# Execute Python commands remotely and send output back.
-
-import sys
-import string
-from socket import *
-
-PORT = 4127
-BUFSIZE = 1024
-
-def main():
-    if len(sys.argv) < 3:
-        print "usage: rpython host command"
-        sys.exit(2)
-    host = sys.argv[1]
-    port = PORT
-    i = string.find(host, ':')
-    if i >= 0:
-        port = string.atoi(port[i+1:])
-        host = host[:i]
-    command = string.join(sys.argv[2:])
-    s = socket(AF_INET, SOCK_STREAM)
-    s.connect((host, port))
-    s.send(command)
-    s.shutdown(1)
-    reply = ''
-    while 1:
-        data = s.recv(BUFSIZE)
-        if not data: break
-        reply = reply + data
-    print reply,
-
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/rpythond.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/rpythond.py
deleted file mode 100644
index 50653fb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/rpythond.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#! /usr/bin/env python
-
-# Remote python server.
-# Execute Python commands remotely and send output back.
-# WARNING: This version has a gaping security hole -- it accepts requests
-# from any host on the Internet!
-
-import sys
-from socket import *
-import StringIO
-import traceback
-
-PORT = 4127
-BUFSIZE = 1024
-
-def main():
-    if len(sys.argv) > 1:
-        port = int(eval(sys.argv[1]))
-    else:
-        port = PORT
-    s = socket(AF_INET, SOCK_STREAM)
-    s.bind(('', port))
-    s.listen(1)
-    while 1:
-        conn, (remotehost, remoteport) = s.accept()
-        print 'connected by', remotehost, remoteport
-        request = ''
-        while 1:
-            data = conn.recv(BUFSIZE)
-            if not data:
-                break
-            request = request + data
-        reply = execute(request)
-        conn.send(reply)
-        conn.close()
-
-def execute(request):
-    stdout = sys.stdout
-    stderr = sys.stderr
-    sys.stdout = sys.stderr = fakefile = StringIO.StringIO()
-    try:
-        try:
-            exec request in {}, {}
-        except:
-            print
-            traceback.print_exc(100)
-    finally:
-        sys.stderr = stderr
-        sys.stdout = stdout
-    return fakefile.getvalue()
-
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/telnet.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/telnet.py
deleted file mode 100644
index 1702392..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/telnet.py
+++ /dev/null
@@ -1,109 +0,0 @@
-#! /usr/bin/env python
-
-# Minimal interface to the Internet telnet protocol.
-#
-# It refuses all telnet options and does not recognize any of the other
-# telnet commands, but can still be used to connect in line-by-line mode.
-# It's also useful to play with a number of other services,
-# like time, finger, smtp and even ftp.
-#
-# Usage: telnet host [port]
-#
-# The port may be a service name or a decimal port number;
-# it defaults to 'telnet'.
-
-
-import sys, posix, time
-from socket import *
-
-BUFSIZE = 1024
-
-# Telnet protocol characters
-
-IAC  = chr(255) # Interpret as command
-DONT = chr(254)
-DO   = chr(253)
-WONT = chr(252)
-WILL = chr(251)
-
-def main():
-    host = sys.argv[1]
-    try:
-        hostaddr = gethostbyname(host)
-    except error:
-        sys.stderr.write(sys.argv[1] + ': bad host name\n')
-        sys.exit(2)
-    #
-    if len(sys.argv) > 2:
-        servname = sys.argv[2]
-    else:
-        servname = 'telnet'
-    #
-    if '0' <= servname[:1] <= '9':
-        port = eval(servname)
-    else:
-        try:
-            port = getservbyname(servname, 'tcp')
-        except error:
-            sys.stderr.write(servname + ': bad tcp service name\n')
-            sys.exit(2)
-    #
-    s = socket(AF_INET, SOCK_STREAM)
-    #
-    try:
-        s.connect((host, port))
-    except error, msg:
-        sys.stderr.write('connect failed: ' + repr(msg) + '\n')
-        sys.exit(1)
-    #
-    pid = posix.fork()
-    #
-    if pid == 0:
-        # child -- read stdin, write socket
-        while 1:
-            line = sys.stdin.readline()
-            s.send(line)
-    else:
-        # parent -- read socket, write stdout
-        iac = 0         # Interpret next char as command
-        opt = ''        # Interpret next char as option
-        while 1:
-            data = s.recv(BUFSIZE)
-            if not data:
-                # EOF; kill child and exit
-                sys.stderr.write( '(Closed by remote host)\n')
-                posix.kill(pid, 9)
-                sys.exit(1)
-            cleandata = ''
-            for c in data:
-                if opt:
-                    print ord(c)
-                    s.send(opt + c)
-                    opt = ''
-                elif iac:
-                    iac = 0
-                    if c == IAC:
-                        cleandata = cleandata + c
-                    elif c in (DO, DONT):
-                        if c == DO: print '(DO)',
-                        else: print '(DONT)',
-                        opt = IAC + WONT
-                    elif c in (WILL, WONT):
-                        if c == WILL: print '(WILL)',
-                        else: print '(WONT)',
-                        opt = IAC + DONT
-                    else:
-                        print '(command)', ord(c)
-                elif c == IAC:
-                    iac = 1
-                    print '(IAC)',
-                else:
-                    cleandata = cleandata + c
-            sys.stdout.write(cleandata)
-            sys.stdout.flush()
-
-
-try:
-    main()
-except KeyboardInterrupt:
-    pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/throughput.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/throughput.py
deleted file mode 100644
index 6ac76af..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/throughput.py
+++ /dev/null
@@ -1,93 +0,0 @@
-#! /usr/bin/env python
-
-# Test network throughput.
-#
-# Usage:
-# 1) on host_A: throughput -s [port]                    # start a server
-# 2) on host_B: throughput -c  count host_A [port]      # start a client
-#
-# The server will service multiple clients until it is killed.
-#
-# The client performs one transfer of count*BUFSIZE bytes and
-# measures the time it takes (roundtrip!).
-
-
-import sys, time
-from socket import *
-
-MY_PORT = 50000 + 42
-
-BUFSIZE = 1024
-
-
-def main():
-    if len(sys.argv) < 2:
-        usage()
-    if sys.argv[1] == '-s':
-        server()
-    elif sys.argv[1] == '-c':
-        client()
-    else:
-        usage()
-
-
-def usage():
-    sys.stdout = sys.stderr
-    print 'Usage:    (on host_A) throughput -s [port]'
-    print 'and then: (on host_B) throughput -c count host_A [port]'
-    sys.exit(2)
-
-
-def server():
-    if len(sys.argv) > 2:
-        port = eval(sys.argv[2])
-    else:
-        port = MY_PORT
-    s = socket(AF_INET, SOCK_STREAM)
-    s.bind(('', port))
-    s.listen(1)
-    print 'Server ready...'
-    while 1:
-        conn, (host, remoteport) = s.accept()
-        while 1:
-            data = conn.recv(BUFSIZE)
-            if not data:
-                break
-            del data
-        conn.send('OK\n')
-        conn.close()
-        print 'Done with', host, 'port', remoteport
-
-
-def client():
-    if len(sys.argv) < 4:
-        usage()
-    count = int(eval(sys.argv[2]))
-    host = sys.argv[3]
-    if len(sys.argv) > 4:
-        port = eval(sys.argv[4])
-    else:
-        port = MY_PORT
-    testdata = 'x' * (BUFSIZE-1) + '\n'
-    t1 = time.time()
-    s = socket(AF_INET, SOCK_STREAM)
-    t2 = time.time()
-    s.connect((host, port))
-    t3 = time.time()
-    i = 0
-    while i < count:
-        i = i+1
-        s.send(testdata)
-    s.shutdown(1) # Send EOF
-    t4 = time.time()
-    data = s.recv(BUFSIZE)
-    t5 = time.time()
-    print data
-    print 'Raw timers:', t1, t2, t3, t4, t5
-    print 'Intervals:', t2-t1, t3-t2, t4-t3, t5-t4
-    print 'Total:', t5-t1
-    print 'Throughput:', round((BUFSIZE*count*0.001) / (t5-t1), 3),
-    print 'K/sec.'
-
-
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/udpecho.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/udpecho.py
deleted file mode 100644
index ea7d396..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/udpecho.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#! /usr/bin/env python
-
-# Client and server for udp (datagram) echo.
-#
-# Usage: udpecho -s [port]            (to start a server)
-# or:    udpecho -c host [port] <file (client)
-
-import sys
-from socket import *
-
-ECHO_PORT = 50000 + 7
-BUFSIZE = 1024
-
-def main():
-    if len(sys.argv) < 2:
-        usage()
-    if sys.argv[1] == '-s':
-        server()
-    elif sys.argv[1] == '-c':
-        client()
-    else:
-        usage()
-
-def usage():
-    sys.stdout = sys.stderr
-    print 'Usage: udpecho -s [port]            (server)'
-    print 'or:    udpecho -c host [port] <file (client)'
-    sys.exit(2)
-
-def server():
-    if len(sys.argv) > 2:
-        port = eval(sys.argv[2])
-    else:
-        port = ECHO_PORT
-    s = socket(AF_INET, SOCK_DGRAM)
-    s.bind(('', port))
-    print 'udp echo server ready'
-    while 1:
-        data, addr = s.recvfrom(BUFSIZE)
-        print 'server received %r from %r' % (data, addr)
-        s.sendto(data, addr)
-
-def client():
-    if len(sys.argv) < 3:
-        usage()
-    host = sys.argv[2]
-    if len(sys.argv) > 3:
-        port = eval(sys.argv[3])
-    else:
-        port = ECHO_PORT
-    addr = host, port
-    s = socket(AF_INET, SOCK_DGRAM)
-    s.bind(('', 0))
-    print 'udp echo client ready, reading stdin'
-    while 1:
-        line = sys.stdin.readline()
-        if not line:
-            break
-        s.sendto(line, addr)
-        data, fromaddr = s.recvfrom(BUFSIZE)
-        print 'client received %r from %r' % (data, fromaddr)
-
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unicast.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unicast.py
deleted file mode 100644
index 9d36f45..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unicast.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Send UDP broadcast packets
-
-MYPORT = 50000
-
-import sys, time
-from socket import *
-
-s = socket(AF_INET, SOCK_DGRAM)
-s.bind(('', 0))
-
-while 1:
-    data = repr(time.time()) + '\n'
-    s.sendto(data, ('', MYPORT))
-    time.sleep(2)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unixclient.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unixclient.py
deleted file mode 100644
index 369e225..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unixclient.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Echo client demo using Unix sockets
-# Piet van Oostrum
-
-from socket import *
-
-FILE = 'unix-socket'
-s = socket(AF_UNIX, SOCK_STREAM)
-s.connect(FILE)
-s.send('Hello, world')
-data = s.recv(1024)
-s.close()
-print 'Received', repr(data)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unixserver.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unixserver.py
deleted file mode 100644
index a597b3b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/sockets/unixserver.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Echo server demo using Unix sockets (handles one connection only)
-# Piet van Oostrum
-
-import os
-from socket import *
-
-FILE = 'unix-socket'
-s = socket(AF_UNIX, SOCK_STREAM)
-s.bind(FILE)
-
-print 'Sock name is: ['+s.getsockname()+']'
-
-# Wait for a connection
-s.listen(1)
-conn, addr = s.accept()
-
-while True:
-    data = conn.recv(1024)
-    if not data:
-        break
-    conn.send(data)
-
-conn.close()
-os.unlink(FILE)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/xml/elem_count.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/xml/elem_count.py
deleted file mode 100644
index 73ac380..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/xml/elem_count.py
+++ /dev/null
@@ -1,42 +0,0 @@
-"""
-A simple demo that reads in an XML document and displays the number of
-elements and attributes as well as a tally of elements and attributes by name.
-"""
-
-import sys
-from collections import defaultdict
-
-from xml.sax import make_parser, handler
-
-class FancyCounter(handler.ContentHandler):
-
-    def __init__(self):
-        self._elems = 0
-        self._attrs = 0
-        self._elem_types = defaultdict(int)
-        self._attr_types = defaultdict(int)
-
-    def startElement(self, name, attrs):
-        self._elems += 1
-        self._attrs += len(attrs)
-        self._elem_types[name] += 1
-
-        for name in attrs.keys():
-            self._attr_types[name] += 1
-
-    def endDocument(self):
-        print "There were", self._elems, "elements."
-        print "There were", self._attrs, "attributes."
-
-        print "---ELEMENT TYPES"
-        for pair in  self._elem_types.items():
-            print "%20s %d" % pair
-
-        print "---ATTRIBUTE TYPES"
-        for pair in  self._attr_types.items():
-            print "%20s %d" % pair
-
-if __name__ == '__main__':
-    parser = make_parser()
-    parser.setContentHandler(FancyCounter())
-    parser.parse(sys.argv[1])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/xml/roundtrip.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/xml/roundtrip.py
deleted file mode 100644
index 921b2b8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/xml/roundtrip.py
+++ /dev/null
@@ -1,46 +0,0 @@
-"""
-A simple demo that reads in an XML document and spits out an equivalent,
-but not necessarily identical, document.
-"""
-
-import sys
-
-from xml.sax import saxutils, handler, make_parser
-
-# --- The ContentHandler
-
-class ContentGenerator(handler.ContentHandler):
-
-    def __init__(self, out=sys.stdout):
-        handler.ContentHandler.__init__(self)
-        self._out = out
-
-    # ContentHandler methods
-
-    def startDocument(self):
-        self._out.write('<?xml version="1.0" encoding="iso-8859-1"?>\n')
-
-    def startElement(self, name, attrs):
-        self._out.write('<' + name)
-        for (name, value) in attrs.items():
-            self._out.write(' %s="%s"' % (name, saxutils.escape(value)))
-        self._out.write('>')
-
-    def endElement(self, name):
-        self._out.write('</%s>' % name)
-
-    def characters(self, content):
-        self._out.write(saxutils.escape(content))
-
-    def ignorableWhitespace(self, content):
-        self._out.write(content)
-
-    def processingInstruction(self, target, data):
-        self._out.write('<?%s %s?>' % (target, data))
-
-# --- The main program
-
-if __name__ == '__main__':
-    parser = make_parser()
-    parser.setContentHandler(ContentGenerator())
-    parser.parse(sys.argv[1])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/xml/rss2html.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/xml/rss2html.py
deleted file mode 100644
index e9bb76d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/xml/rss2html.py
+++ /dev/null
@@ -1,97 +0,0 @@
-"""
-A demo that reads in an RSS XML document and emits an HTML file containing
-a list of the individual items in the feed.
-"""
-
-import sys
-import codecs
-
-from xml.sax import make_parser, handler
-
-# --- Templates
-
-top = """\
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-  <title>%s</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-</head>
-
-<body>
-<h1>%s</h1>
-"""
-
-bottom = """
-</ul>
-
-<hr>
-<address>
-Converted to HTML by rss2html.py.
-</address>
-
-</body>
-</html>
-"""
-
-# --- The ContentHandler
-
-class RSSHandler(handler.ContentHandler):
-
-    def __init__(self, out=sys.stdout):
-        handler.ContentHandler.__init__(self)
-        self._out = codecs.getwriter('utf-8')(out)
-
-        self._text = ""
-        self._parent = None
-        self._list_started = False
-        self._title = None
-        self._link = None
-        self._descr = ""
-
-    # ContentHandler methods
-
-    def startElement(self, name, attrs):
-        if name == "channel" or name == "image" or name == "item":
-            self._parent = name
-
-        self._text = ""
-
-    def endElement(self, name):
-        if self._parent == "channel":
-            if name == "title":
-                self._out.write(top % (self._text, self._text))
-            elif name == "description":
-                self._out.write("<p>%s</p>\n" % self._text)
-
-        elif self._parent == "item":
-            if name == "title":
-                self._title = self._text
-            elif name == "link":
-                self._link = self._text
-            elif name == "description":
-                self._descr = self._text
-            elif name == "item":
-                if not self._list_started:
-                    self._out.write("<ul>\n")
-                    self._list_started = True
-
-                self._out.write('  <li><a href="%s">%s</a> %s\n' %
-                                (self._link, self._title, self._descr))
-
-                self._title = None
-                self._link = None
-                self._descr = ""
-
-        if name == "rss":
-            self._out.write(bottom)
-
-    def characters(self, content):
-        self._text = self._text + content
-
-# --- Main program
-
-if __name__ == '__main__':
-    parser = make_parser()
-    parser.setContentHandler(RSSHandler())
-    parser.parse(sys.argv[1])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/zlib/minigzip.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/zlib/minigzip.py
deleted file mode 100644
index 9b08b53..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/zlib/minigzip.py
+++ /dev/null
@@ -1,133 +0,0 @@
-#!/usr/bin/env python
-# Demo program for zlib; it compresses or decompresses files, but *doesn't*
-# delete the original.  This doesn't support all of gzip's options.
-#
-# The 'gzip' module in the standard library provides a more complete
-# implementation of gzip-format files.
-
-import zlib, sys, os
-
-FTEXT, FHCRC, FEXTRA, FNAME, FCOMMENT = 1, 2, 4, 8, 16
-
-def write32(output, value):
-    output.write(chr(value & 255)) ; value=value // 256
-    output.write(chr(value & 255)) ; value=value // 256
-    output.write(chr(value & 255)) ; value=value // 256
-    output.write(chr(value & 255))
-
-def read32(input):
-    v = ord(input.read(1))
-    v += (ord(input.read(1)) << 8 )
-    v += (ord(input.read(1)) << 16)
-    v += (ord(input.read(1)) << 24)
-    return v
-
-def compress (filename, input, output):
-    output.write('\037\213\010')        # Write the header, ...
-    output.write(chr(FNAME))            # ... flag byte ...
-
-    statval = os.stat(filename)           # ... modification time ...
-    mtime = statval[8]
-    write32(output, mtime)
-    output.write('\002')                # ... slowest compression alg. ...
-    output.write('\377')                # ... OS (=unknown) ...
-    output.write(filename+'\000')       # ... original filename ...
-
-    crcval = zlib.crc32("")
-    compobj = zlib.compressobj(9, zlib.DEFLATED, -zlib.MAX_WBITS,
-                             zlib.DEF_MEM_LEVEL, 0)
-    while True:
-        data = input.read(1024)
-        if data == "":
-            break
-        crcval = zlib.crc32(data, crcval)
-        output.write(compobj.compress(data))
-    output.write(compobj.flush())
-    write32(output, crcval)             # ... the CRC ...
-    write32(output, statval[6])         # and the file size.
-
-def decompress (input, output):
-    magic = input.read(2)
-    if magic != '\037\213':
-        print 'Not a gzipped file'
-        sys.exit(0)
-    if ord(input.read(1)) != 8:
-        print 'Unknown compression method'
-        sys.exit(0)
-    flag = ord(input.read(1))
-    input.read(4+1+1)                   # Discard modification time,
-                                        # extra flags, and OS byte.
-    if flag & FEXTRA:
-        # Read & discard the extra field, if present
-        xlen = ord(input.read(1))
-        xlen += 256*ord(input.read(1))
-        input.read(xlen)
-    if flag & FNAME:
-        # Read and discard a null-terminated string containing the filename
-        while True:
-            s = input.read(1)
-            if s == '\0': break
-    if flag & FCOMMENT:
-        # Read and discard a null-terminated string containing a comment
-        while True:
-            s=input.read(1)
-            if s=='\0': break
-    if flag & FHCRC:
-        input.read(2)                   # Read & discard the 16-bit header CRC
-
-    decompobj = zlib.decompressobj(-zlib.MAX_WBITS)
-    crcval = zlib.crc32("")
-    length = 0
-    while True:
-        data=input.read(1024)
-        if data == "":
-            break
-        decompdata = decompobj.decompress(data)
-        output.write(decompdata)
-        length += len(decompdata)
-        crcval = zlib.crc32(decompdata, crcval)
-
-    decompdata = decompobj.flush()
-    output.write(decompdata)
-    length += len(decompdata)
-    crcval = zlib.crc32(decompdata, crcval)
-
-    # We've read to the end of the file, so we have to rewind in order
-    # to reread the 8 bytes containing the CRC and the file size.  The
-    # decompressor is smart and knows when to stop, so feeding it
-    # extra data is harmless.
-    input.seek(-8, 2)
-    crc32 = read32(input)
-    isize = read32(input)
-    if crc32 != crcval:
-        print 'CRC check failed.'
-    if isize != length:
-        print 'Incorrect length of data produced'
-
-def main():
-    if len(sys.argv)!=2:
-        print 'Usage: minigzip.py <filename>'
-        print '  The file will be compressed or decompressed.'
-        sys.exit(0)
-
-    filename = sys.argv[1]
-    if filename.endswith('.gz'):
-        compressing = False
-        outputname = filename[:-3]
-    else:
-        compressing = True
-        outputname = filename + '.gz'
-
-    input = open(filename, 'rb')
-    output = open(outputname, 'wb')
-
-    if compressing:
-        compress(filename, input, output)
-    else:
-        decompress(input, output)
-
-    input.close()
-    output.close()
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/zlib/zlibdemo.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/zlib/zlibdemo.py
deleted file mode 100644
index 7562874..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Demo/zlib/zlibdemo.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env python
-
-# Takes an optional filename, defaulting to this file itself.
-# Reads the file and compresses the content using level 1 and level 9
-# compression, printing a summary of the results.
-
-import zlib, sys
-
-def main():
-    if len(sys.argv) > 1:
-        filename = sys.argv[1]
-    else:
-        filename = sys.argv[0]
-    print 'Reading', filename
-
-    f = open(filename, 'rb')           # Get the data to compress
-    s = f.read()
-    f.close()
-
-    # First, we'll compress the string in one step
-    comptext = zlib.compress(s, 1)
-    decomp = zlib.decompress(comptext)
-
-    print '1-step compression: (level 1)'
-    print '    Original:', len(s), 'Compressed:', len(comptext),
-    print 'Uncompressed:', len(decomp)
-
-    # Now, let's compress the string in stages; set chunk to work in smaller steps
-
-    chunk = 256
-    compressor = zlib.compressobj(9)
-    decompressor = zlib.decompressobj()
-    comptext = decomp = ''
-    for i in range(0, len(s), chunk):
-        comptext = comptext+compressor.compress(s[i:i+chunk])
-    # Don't forget to call flush()!!
-    comptext = comptext + compressor.flush()
-
-    for i in range(0, len(comptext), chunk):
-        decomp = decomp + decompressor.decompress(comptext[i:i+chunk])
-    decomp=decomp+decompressor.flush()
-
-    print 'Progressive compression (level 9):'
-    print '    Original:', len(s), 'Compressed:', len(comptext),
-    print 'Uncompressed:', len(decomp)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Grammar/Grammar b/AppPkg/Applications/Python/Python-2.7.2/Grammar/Grammar
deleted file mode 100644
index a321787..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Grammar/Grammar
+++ /dev/null
@@ -1,142 +0,0 @@
-# Grammar for Python
-
-# Note:  Changing the grammar specified in this file will most likely
-#        require corresponding changes in the parser module
-#        (../Modules/parsermodule.c).  If you can't make the changes to
-#        that module yourself, please co-ordinate the required changes
-#        with someone who can; ask around on python-dev for help.  Fred
-#        Drake <fdrake@acm.org> will probably be listening there.
-
-# NOTE WELL: You should also follow all the steps listed in PEP 306,
-# "How to Change Python's Grammar"
-
-# Start symbols for the grammar:
-#       single_input is a single interactive statement;
-#       file_input is a module or sequence of commands read from an input file;
-#       eval_input is the input for the eval() and input() functions.
-# NB: compound_stmt in single_input is followed by extra NEWLINE!
-single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE
-file_input: (NEWLINE | stmt)* ENDMARKER
-eval_input: testlist NEWLINE* ENDMARKER
-
-decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
-decorators: decorator+
-decorated: decorators (classdef | funcdef)
-funcdef: 'def' NAME parameters ':' suite
-parameters: '(' [varargslist] ')'
-varargslist: ((fpdef ['=' test] ',')*
-              ('*' NAME [',' '**' NAME] | '**' NAME) |
-              fpdef ['=' test] (',' fpdef ['=' test])* [','])
-fpdef: NAME | '(' fplist ')'
-fplist: fpdef (',' fpdef)* [',']
-
-stmt: simple_stmt | compound_stmt
-simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
-small_stmt: (expr_stmt | print_stmt  | del_stmt | pass_stmt | flow_stmt |
-             import_stmt | global_stmt | exec_stmt | assert_stmt)
-expr_stmt: testlist (augassign (yield_expr|testlist) |
-                     ('=' (yield_expr|testlist))*)
-augassign: ('+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' |
-            '<<=' | '>>=' | '**=' | '//=')
-# For normal assignments, additional restrictions enforced by the interpreter
-print_stmt: 'print' ( [ test (',' test)* [','] ] |
-                      '>>' test [ (',' test)+ [','] ] )
-del_stmt: 'del' exprlist
-pass_stmt: 'pass'
-flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt
-break_stmt: 'break'
-continue_stmt: 'continue'
-return_stmt: 'return' [testlist]
-yield_stmt: yield_expr
-raise_stmt: 'raise' [test [',' test [',' test]]]
-import_stmt: import_name | import_from
-import_name: 'import' dotted_as_names
-import_from: ('from' ('.'* dotted_name | '.'+)
-              'import' ('*' | '(' import_as_names ')' | import_as_names))
-import_as_name: NAME ['as' NAME]
-dotted_as_name: dotted_name ['as' NAME]
-import_as_names: import_as_name (',' import_as_name)* [',']
-dotted_as_names: dotted_as_name (',' dotted_as_name)*
-dotted_name: NAME ('.' NAME)*
-global_stmt: 'global' NAME (',' NAME)*
-exec_stmt: 'exec' expr ['in' test [',' test]]
-assert_stmt: 'assert' test [',' test]
-
-compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated
-if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite]
-while_stmt: 'while' test ':' suite ['else' ':' suite]
-for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite]
-try_stmt: ('try' ':' suite
-           ((except_clause ':' suite)+
-            ['else' ':' suite]
-            ['finally' ':' suite] |
-           'finally' ':' suite))
-with_stmt: 'with' with_item (',' with_item)*  ':' suite
-with_item: test ['as' expr]
-# NB compile.c makes sure that the default except clause is last
-except_clause: 'except' [test [('as' | ',') test]]
-suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT
-
-# Backward compatibility cruft to support:
-# [ x for x in lambda: True, lambda: False if x() ]
-# even while also allowing:
-# lambda x: 5 if x else 2
-# (But not a mix of the two)
-testlist_safe: old_test [(',' old_test)+ [',']]
-old_test: or_test | old_lambdef
-old_lambdef: 'lambda' [varargslist] ':' old_test
-
-test: or_test ['if' or_test 'else' test] | lambdef
-or_test: and_test ('or' and_test)*
-and_test: not_test ('and' not_test)*
-not_test: 'not' not_test | comparison
-comparison: expr (comp_op expr)*
-comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not'
-expr: xor_expr ('|' xor_expr)*
-xor_expr: and_expr ('^' and_expr)*
-and_expr: shift_expr ('&' shift_expr)*
-shift_expr: arith_expr (('<<'|'>>') arith_expr)*
-arith_expr: term (('+'|'-') term)*
-term: factor (('*'|'/'|'%'|'//') factor)*
-factor: ('+'|'-'|'~') factor | power
-power: atom trailer* ['**' factor]
-atom: ('(' [yield_expr|testlist_comp] ')' |
-       '[' [listmaker] ']' |
-       '{' [dictorsetmaker] '}' |
-       '`' testlist1 '`' |
-       NAME | NUMBER | STRING+)
-listmaker: test ( list_for | (',' test)* [','] )
-testlist_comp: test ( comp_for | (',' test)* [','] )
-lambdef: 'lambda' [varargslist] ':' test
-trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME
-subscriptlist: subscript (',' subscript)* [',']
-subscript: '.' '.' '.' | test | [test] ':' [test] [sliceop]
-sliceop: ':' [test]
-exprlist: expr (',' expr)* [',']
-testlist: test (',' test)* [',']
-dictorsetmaker: ( (test ':' test (comp_for | (',' test ':' test)* [','])) |
-                  (test (comp_for | (',' test)* [','])) )
-
-classdef: 'class' NAME ['(' [testlist] ')'] ':' suite
-
-arglist: (argument ',')* (argument [',']
-                         |'*' test (',' argument)* [',' '**' test] 
-                         |'**' test)
-# The reason that keywords are test nodes instead of NAME is that using NAME
-# results in an ambiguity. ast.c makes sure it's a NAME.
-argument: test [comp_for] | test '=' test
-
-list_iter: list_for | list_if
-list_for: 'for' exprlist 'in' testlist_safe [list_iter]
-list_if: 'if' old_test [list_iter]
-
-comp_iter: comp_for | comp_if
-comp_for: 'for' exprlist 'in' or_test [comp_iter]
-comp_if: 'if' old_test [comp_iter]
-
-testlist1: test (',' test)*
-
-# not used in grammar, but may appear in "node" passed from Parser to Compiler
-encoding_decl: NAME
-
-yield_expr: 'yield' [testlist]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/Python-ast.h b/AppPkg/Applications/Python/Python-2.7.2/Include/Python-ast.h
deleted file mode 100644
index d794c32..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/Python-ast.h
+++ /dev/null
@@ -1,535 +0,0 @@
-/* File automatically generated by Parser/asdl_c.py. */
-
-#include "asdl.h"
-
-typedef struct _mod *mod_ty;
-
-typedef struct _stmt *stmt_ty;
-
-typedef struct _expr *expr_ty;
-
-typedef enum _expr_context { Load=1, Store=2, Del=3, AugLoad=4, AugStore=5,
-                             Param=6 } expr_context_ty;
-
-typedef struct _slice *slice_ty;
-
-typedef enum _boolop { And=1, Or=2 } boolop_ty;
-
-typedef enum _operator { Add=1, Sub=2, Mult=3, Div=4, Mod=5, Pow=6, LShift=7,
-                         RShift=8, BitOr=9, BitXor=10, BitAnd=11, FloorDiv=12 }
-                         operator_ty;
-
-typedef enum _unaryop { Invert=1, Not=2, UAdd=3, USub=4 } unaryop_ty;
-
-typedef enum _cmpop { Eq=1, NotEq=2, Lt=3, LtE=4, Gt=5, GtE=6, Is=7, IsNot=8,
-                      In=9, NotIn=10 } cmpop_ty;
-
-typedef struct _comprehension *comprehension_ty;
-
-typedef struct _excepthandler *excepthandler_ty;
-
-typedef struct _arguments *arguments_ty;
-
-typedef struct _keyword *keyword_ty;
-
-typedef struct _alias *alias_ty;
-
-
-enum _mod_kind {Module_kind=1, Interactive_kind=2, Expression_kind=3,
-                 Suite_kind=4};
-struct _mod {
-        enum _mod_kind kind;
-        union {
-                struct {
-                        asdl_seq *body;
-                } Module;
-                
-                struct {
-                        asdl_seq *body;
-                } Interactive;
-                
-                struct {
-                        expr_ty body;
-                } Expression;
-                
-                struct {
-                        asdl_seq *body;
-                } Suite;
-                
-        } v;
-};
-
-enum _stmt_kind {FunctionDef_kind=1, ClassDef_kind=2, Return_kind=3,
-                  Delete_kind=4, Assign_kind=5, AugAssign_kind=6, Print_kind=7,
-                  For_kind=8, While_kind=9, If_kind=10, With_kind=11,
-                  Raise_kind=12, TryExcept_kind=13, TryFinally_kind=14,
-                  Assert_kind=15, Import_kind=16, ImportFrom_kind=17,
-                  Exec_kind=18, Global_kind=19, Expr_kind=20, Pass_kind=21,
-                  Break_kind=22, Continue_kind=23};
-struct _stmt {
-        enum _stmt_kind kind;
-        union {
-                struct {
-                        identifier name;
-                        arguments_ty args;
-                        asdl_seq *body;
-                        asdl_seq *decorator_list;
-                } FunctionDef;
-                
-                struct {
-                        identifier name;
-                        asdl_seq *bases;
-                        asdl_seq *body;
-                        asdl_seq *decorator_list;
-                } ClassDef;
-                
-                struct {
-                        expr_ty value;
-                } Return;
-                
-                struct {
-                        asdl_seq *targets;
-                } Delete;
-                
-                struct {
-                        asdl_seq *targets;
-                        expr_ty value;
-                } Assign;
-                
-                struct {
-                        expr_ty target;
-                        operator_ty op;
-                        expr_ty value;
-                } AugAssign;
-                
-                struct {
-                        expr_ty dest;
-                        asdl_seq *values;
-                        bool nl;
-                } Print;
-                
-                struct {
-                        expr_ty target;
-                        expr_ty iter;
-                        asdl_seq *body;
-                        asdl_seq *orelse;
-                } For;
-                
-                struct {
-                        expr_ty test;
-                        asdl_seq *body;
-                        asdl_seq *orelse;
-                } While;
-                
-                struct {
-                        expr_ty test;
-                        asdl_seq *body;
-                        asdl_seq *orelse;
-                } If;
-                
-                struct {
-                        expr_ty context_expr;
-                        expr_ty optional_vars;
-                        asdl_seq *body;
-                } With;
-                
-                struct {
-                        expr_ty type;
-                        expr_ty inst;
-                        expr_ty tback;
-                } Raise;
-                
-                struct {
-                        asdl_seq *body;
-                        asdl_seq *handlers;
-                        asdl_seq *orelse;
-                } TryExcept;
-                
-                struct {
-                        asdl_seq *body;
-                        asdl_seq *finalbody;
-                } TryFinally;
-                
-                struct {
-                        expr_ty test;
-                        expr_ty msg;
-                } Assert;
-                
-                struct {
-                        asdl_seq *names;
-                } Import;
-                
-                struct {
-                        identifier module;
-                        asdl_seq *names;
-                        int level;
-                } ImportFrom;
-                
-                struct {
-                        expr_ty body;
-                        expr_ty globals;
-                        expr_ty locals;
-                } Exec;
-                
-                struct {
-                        asdl_seq *names;
-                } Global;
-                
-                struct {
-                        expr_ty value;
-                } Expr;
-                
-        } v;
-        int lineno;
-        int col_offset;
-};
-
-enum _expr_kind {BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, Lambda_kind=4,
-                  IfExp_kind=5, Dict_kind=6, Set_kind=7, ListComp_kind=8,
-                  SetComp_kind=9, DictComp_kind=10, GeneratorExp_kind=11,
-                  Yield_kind=12, Compare_kind=13, Call_kind=14, Repr_kind=15,
-                  Num_kind=16, Str_kind=17, Attribute_kind=18,
-                  Subscript_kind=19, Name_kind=20, List_kind=21, Tuple_kind=22};
-struct _expr {
-        enum _expr_kind kind;
-        union {
-                struct {
-                        boolop_ty op;
-                        asdl_seq *values;
-                } BoolOp;
-                
-                struct {
-                        expr_ty left;
-                        operator_ty op;
-                        expr_ty right;
-                } BinOp;
-                
-                struct {
-                        unaryop_ty op;
-                        expr_ty operand;
-                } UnaryOp;
-                
-                struct {
-                        arguments_ty args;
-                        expr_ty body;
-                } Lambda;
-                
-                struct {
-                        expr_ty test;
-                        expr_ty body;
-                        expr_ty orelse;
-                } IfExp;
-                
-                struct {
-                        asdl_seq *keys;
-                        asdl_seq *values;
-                } Dict;
-                
-                struct {
-                        asdl_seq *elts;
-                } Set;
-                
-                struct {
-                        expr_ty elt;
-                        asdl_seq *generators;
-                } ListComp;
-                
-                struct {
-                        expr_ty elt;
-                        asdl_seq *generators;
-                } SetComp;
-                
-                struct {
-                        expr_ty key;
-                        expr_ty value;
-                        asdl_seq *generators;
-                } DictComp;
-                
-                struct {
-                        expr_ty elt;
-                        asdl_seq *generators;
-                } GeneratorExp;
-                
-                struct {
-                        expr_ty value;
-                } Yield;
-                
-                struct {
-                        expr_ty left;
-                        asdl_int_seq *ops;
-                        asdl_seq *comparators;
-                } Compare;
-                
-                struct {
-                        expr_ty func;
-                        asdl_seq *args;
-                        asdl_seq *keywords;
-                        expr_ty starargs;
-                        expr_ty kwargs;
-                } Call;
-                
-                struct {
-                        expr_ty value;
-                } Repr;
-                
-                struct {
-                        object n;
-                } Num;
-                
-                struct {
-                        string s;
-                } Str;
-                
-                struct {
-                        expr_ty value;
-                        identifier attr;
-                        expr_context_ty ctx;
-                } Attribute;
-                
-                struct {
-                        expr_ty value;
-                        slice_ty slice;
-                        expr_context_ty ctx;
-                } Subscript;
-                
-                struct {
-                        identifier id;
-                        expr_context_ty ctx;
-                } Name;
-                
-                struct {
-                        asdl_seq *elts;
-                        expr_context_ty ctx;
-                } List;
-                
-                struct {
-                        asdl_seq *elts;
-                        expr_context_ty ctx;
-                } Tuple;
-                
-        } v;
-        int lineno;
-        int col_offset;
-};
-
-enum _slice_kind {Ellipsis_kind=1, Slice_kind=2, ExtSlice_kind=3, Index_kind=4};
-struct _slice {
-        enum _slice_kind kind;
-        union {
-                struct {
-                        expr_ty lower;
-                        expr_ty upper;
-                        expr_ty step;
-                } Slice;
-                
-                struct {
-                        asdl_seq *dims;
-                } ExtSlice;
-                
-                struct {
-                        expr_ty value;
-                } Index;
-                
-        } v;
-};
-
-struct _comprehension {
-        expr_ty target;
-        expr_ty iter;
-        asdl_seq *ifs;
-};
-
-enum _excepthandler_kind {ExceptHandler_kind=1};
-struct _excepthandler {
-        enum _excepthandler_kind kind;
-        union {
-                struct {
-                        expr_ty type;
-                        expr_ty name;
-                        asdl_seq *body;
-                } ExceptHandler;
-                
-        } v;
-        int lineno;
-        int col_offset;
-};
-
-struct _arguments {
-        asdl_seq *args;
-        identifier vararg;
-        identifier kwarg;
-        asdl_seq *defaults;
-};
-
-struct _keyword {
-        identifier arg;
-        expr_ty value;
-};
-
-struct _alias {
-        identifier name;
-        identifier asname;
-};
-
-
-#define Module(a0, a1) _Py_Module(a0, a1)
-mod_ty _Py_Module(asdl_seq * body, PyArena *arena);
-#define Interactive(a0, a1) _Py_Interactive(a0, a1)
-mod_ty _Py_Interactive(asdl_seq * body, PyArena *arena);
-#define Expression(a0, a1) _Py_Expression(a0, a1)
-mod_ty _Py_Expression(expr_ty body, PyArena *arena);
-#define Suite(a0, a1) _Py_Suite(a0, a1)
-mod_ty _Py_Suite(asdl_seq * body, PyArena *arena);
-#define FunctionDef(a0, a1, a2, a3, a4, a5, a6) _Py_FunctionDef(a0, a1, a2, a3, a4, a5, a6)
-stmt_ty _Py_FunctionDef(identifier name, arguments_ty args, asdl_seq * body,
-                        asdl_seq * decorator_list, int lineno, int col_offset,
-                        PyArena *arena);
-#define ClassDef(a0, a1, a2, a3, a4, a5, a6) _Py_ClassDef(a0, a1, a2, a3, a4, a5, a6)
-stmt_ty _Py_ClassDef(identifier name, asdl_seq * bases, asdl_seq * body,
-                     asdl_seq * decorator_list, int lineno, int col_offset,
-                     PyArena *arena);
-#define Return(a0, a1, a2, a3) _Py_Return(a0, a1, a2, a3)
-stmt_ty _Py_Return(expr_ty value, int lineno, int col_offset, PyArena *arena);
-#define Delete(a0, a1, a2, a3) _Py_Delete(a0, a1, a2, a3)
-stmt_ty _Py_Delete(asdl_seq * targets, int lineno, int col_offset, PyArena
-                   *arena);
-#define Assign(a0, a1, a2, a3, a4) _Py_Assign(a0, a1, a2, a3, a4)
-stmt_ty _Py_Assign(asdl_seq * targets, expr_ty value, int lineno, int
-                   col_offset, PyArena *arena);
-#define AugAssign(a0, a1, a2, a3, a4, a5) _Py_AugAssign(a0, a1, a2, a3, a4, a5)
-stmt_ty _Py_AugAssign(expr_ty target, operator_ty op, expr_ty value, int
-                      lineno, int col_offset, PyArena *arena);
-#define Print(a0, a1, a2, a3, a4, a5) _Py_Print(a0, a1, a2, a3, a4, a5)
-stmt_ty _Py_Print(expr_ty dest, asdl_seq * values, bool nl, int lineno, int
-                  col_offset, PyArena *arena);
-#define For(a0, a1, a2, a3, a4, a5, a6) _Py_For(a0, a1, a2, a3, a4, a5, a6)
-stmt_ty _Py_For(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq *
-                orelse, int lineno, int col_offset, PyArena *arena);
-#define While(a0, a1, a2, a3, a4, a5) _Py_While(a0, a1, a2, a3, a4, a5)
-stmt_ty _Py_While(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno,
-                  int col_offset, PyArena *arena);
-#define If(a0, a1, a2, a3, a4, a5) _Py_If(a0, a1, a2, a3, a4, a5)
-stmt_ty _Py_If(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno,
-               int col_offset, PyArena *arena);
-#define With(a0, a1, a2, a3, a4, a5) _Py_With(a0, a1, a2, a3, a4, a5)
-stmt_ty _Py_With(expr_ty context_expr, expr_ty optional_vars, asdl_seq * body,
-                 int lineno, int col_offset, PyArena *arena);
-#define Raise(a0, a1, a2, a3, a4, a5) _Py_Raise(a0, a1, a2, a3, a4, a5)
-stmt_ty _Py_Raise(expr_ty type, expr_ty inst, expr_ty tback, int lineno, int
-                  col_offset, PyArena *arena);
-#define TryExcept(a0, a1, a2, a3, a4, a5) _Py_TryExcept(a0, a1, a2, a3, a4, a5)
-stmt_ty _Py_TryExcept(asdl_seq * body, asdl_seq * handlers, asdl_seq * orelse,
-                      int lineno, int col_offset, PyArena *arena);
-#define TryFinally(a0, a1, a2, a3, a4) _Py_TryFinally(a0, a1, a2, a3, a4)
-stmt_ty _Py_TryFinally(asdl_seq * body, asdl_seq * finalbody, int lineno, int
-                       col_offset, PyArena *arena);
-#define Assert(a0, a1, a2, a3, a4) _Py_Assert(a0, a1, a2, a3, a4)
-stmt_ty _Py_Assert(expr_ty test, expr_ty msg, int lineno, int col_offset,
-                   PyArena *arena);
-#define Import(a0, a1, a2, a3) _Py_Import(a0, a1, a2, a3)
-stmt_ty _Py_Import(asdl_seq * names, int lineno, int col_offset, PyArena
-                   *arena);
-#define ImportFrom(a0, a1, a2, a3, a4, a5) _Py_ImportFrom(a0, a1, a2, a3, a4, a5)
-stmt_ty _Py_ImportFrom(identifier module, asdl_seq * names, int level, int
-                       lineno, int col_offset, PyArena *arena);
-#define Exec(a0, a1, a2, a3, a4, a5) _Py_Exec(a0, a1, a2, a3, a4, a5)
-stmt_ty _Py_Exec(expr_ty body, expr_ty globals, expr_ty locals, int lineno, int
-                 col_offset, PyArena *arena);
-#define Global(a0, a1, a2, a3) _Py_Global(a0, a1, a2, a3)
-stmt_ty _Py_Global(asdl_seq * names, int lineno, int col_offset, PyArena
-                   *arena);
-#define Expr(a0, a1, a2, a3) _Py_Expr(a0, a1, a2, a3)
-stmt_ty _Py_Expr(expr_ty value, int lineno, int col_offset, PyArena *arena);
-#define Pass(a0, a1, a2) _Py_Pass(a0, a1, a2)
-stmt_ty _Py_Pass(int lineno, int col_offset, PyArena *arena);
-#define Break(a0, a1, a2) _Py_Break(a0, a1, a2)
-stmt_ty _Py_Break(int lineno, int col_offset, PyArena *arena);
-#define Continue(a0, a1, a2) _Py_Continue(a0, a1, a2)
-stmt_ty _Py_Continue(int lineno, int col_offset, PyArena *arena);
-#define BoolOp(a0, a1, a2, a3, a4) _Py_BoolOp(a0, a1, a2, a3, a4)
-expr_ty _Py_BoolOp(boolop_ty op, asdl_seq * values, int lineno, int col_offset,
-                   PyArena *arena);
-#define BinOp(a0, a1, a2, a3, a4, a5) _Py_BinOp(a0, a1, a2, a3, a4, a5)
-expr_ty _Py_BinOp(expr_ty left, operator_ty op, expr_ty right, int lineno, int
-                  col_offset, PyArena *arena);
-#define UnaryOp(a0, a1, a2, a3, a4) _Py_UnaryOp(a0, a1, a2, a3, a4)
-expr_ty _Py_UnaryOp(unaryop_ty op, expr_ty operand, int lineno, int col_offset,
-                    PyArena *arena);
-#define Lambda(a0, a1, a2, a3, a4) _Py_Lambda(a0, a1, a2, a3, a4)
-expr_ty _Py_Lambda(arguments_ty args, expr_ty body, int lineno, int col_offset,
-                   PyArena *arena);
-#define IfExp(a0, a1, a2, a3, a4, a5) _Py_IfExp(a0, a1, a2, a3, a4, a5)
-expr_ty _Py_IfExp(expr_ty test, expr_ty body, expr_ty orelse, int lineno, int
-                  col_offset, PyArena *arena);
-#define Dict(a0, a1, a2, a3, a4) _Py_Dict(a0, a1, a2, a3, a4)
-expr_ty _Py_Dict(asdl_seq * keys, asdl_seq * values, int lineno, int
-                 col_offset, PyArena *arena);
-#define Set(a0, a1, a2, a3) _Py_Set(a0, a1, a2, a3)
-expr_ty _Py_Set(asdl_seq * elts, int lineno, int col_offset, PyArena *arena);
-#define ListComp(a0, a1, a2, a3, a4) _Py_ListComp(a0, a1, a2, a3, a4)
-expr_ty _Py_ListComp(expr_ty elt, asdl_seq * generators, int lineno, int
-                     col_offset, PyArena *arena);
-#define SetComp(a0, a1, a2, a3, a4) _Py_SetComp(a0, a1, a2, a3, a4)
-expr_ty _Py_SetComp(expr_ty elt, asdl_seq * generators, int lineno, int
-                    col_offset, PyArena *arena);
-#define DictComp(a0, a1, a2, a3, a4, a5) _Py_DictComp(a0, a1, a2, a3, a4, a5)
-expr_ty _Py_DictComp(expr_ty key, expr_ty value, asdl_seq * generators, int
-                     lineno, int col_offset, PyArena *arena);
-#define GeneratorExp(a0, a1, a2, a3, a4) _Py_GeneratorExp(a0, a1, a2, a3, a4)
-expr_ty _Py_GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int
-                         col_offset, PyArena *arena);
-#define Yield(a0, a1, a2, a3) _Py_Yield(a0, a1, a2, a3)
-expr_ty _Py_Yield(expr_ty value, int lineno, int col_offset, PyArena *arena);
-#define Compare(a0, a1, a2, a3, a4, a5) _Py_Compare(a0, a1, a2, a3, a4, a5)
-expr_ty _Py_Compare(expr_ty left, asdl_int_seq * ops, asdl_seq * comparators,
-                    int lineno, int col_offset, PyArena *arena);
-#define Call(a0, a1, a2, a3, a4, a5, a6, a7) _Py_Call(a0, a1, a2, a3, a4, a5, a6, a7)
-expr_ty _Py_Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, expr_ty
-                 starargs, expr_ty kwargs, int lineno, int col_offset, PyArena
-                 *arena);
-#define Repr(a0, a1, a2, a3) _Py_Repr(a0, a1, a2, a3)
-expr_ty _Py_Repr(expr_ty value, int lineno, int col_offset, PyArena *arena);
-#define Num(a0, a1, a2, a3) _Py_Num(a0, a1, a2, a3)
-expr_ty _Py_Num(object n, int lineno, int col_offset, PyArena *arena);
-#define Str(a0, a1, a2, a3) _Py_Str(a0, a1, a2, a3)
-expr_ty _Py_Str(string s, int lineno, int col_offset, PyArena *arena);
-#define Attribute(a0, a1, a2, a3, a4, a5) _Py_Attribute(a0, a1, a2, a3, a4, a5)
-expr_ty _Py_Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int
-                      lineno, int col_offset, PyArena *arena);
-#define Subscript(a0, a1, a2, a3, a4, a5) _Py_Subscript(a0, a1, a2, a3, a4, a5)
-expr_ty _Py_Subscript(expr_ty value, slice_ty slice, expr_context_ty ctx, int
-                      lineno, int col_offset, PyArena *arena);
-#define Name(a0, a1, a2, a3, a4) _Py_Name(a0, a1, a2, a3, a4)
-expr_ty _Py_Name(identifier id, expr_context_ty ctx, int lineno, int
-                 col_offset, PyArena *arena);
-#define List(a0, a1, a2, a3, a4) _Py_List(a0, a1, a2, a3, a4)
-expr_ty _Py_List(asdl_seq * elts, expr_context_ty ctx, int lineno, int
-                 col_offset, PyArena *arena);
-#define Tuple(a0, a1, a2, a3, a4) _Py_Tuple(a0, a1, a2, a3, a4)
-expr_ty _Py_Tuple(asdl_seq * elts, expr_context_ty ctx, int lineno, int
-                  col_offset, PyArena *arena);
-#define Ellipsis(a0) _Py_Ellipsis(a0)
-slice_ty _Py_Ellipsis(PyArena *arena);
-#define Slice(a0, a1, a2, a3) _Py_Slice(a0, a1, a2, a3)
-slice_ty _Py_Slice(expr_ty lower, expr_ty upper, expr_ty step, PyArena *arena);
-#define ExtSlice(a0, a1) _Py_ExtSlice(a0, a1)
-slice_ty _Py_ExtSlice(asdl_seq * dims, PyArena *arena);
-#define Index(a0, a1) _Py_Index(a0, a1)
-slice_ty _Py_Index(expr_ty value, PyArena *arena);
-#define comprehension(a0, a1, a2, a3) _Py_comprehension(a0, a1, a2, a3)
-comprehension_ty _Py_comprehension(expr_ty target, expr_ty iter, asdl_seq *
-                                   ifs, PyArena *arena);
-#define ExceptHandler(a0, a1, a2, a3, a4, a5) _Py_ExceptHandler(a0, a1, a2, a3, a4, a5)
-excepthandler_ty _Py_ExceptHandler(expr_ty type, expr_ty name, asdl_seq * body,
-                                   int lineno, int col_offset, PyArena *arena);
-#define arguments(a0, a1, a2, a3, a4) _Py_arguments(a0, a1, a2, a3, a4)
-arguments_ty _Py_arguments(asdl_seq * args, identifier vararg, identifier
-                           kwarg, asdl_seq * defaults, PyArena *arena);
-#define keyword(a0, a1, a2) _Py_keyword(a0, a1, a2)
-keyword_ty _Py_keyword(identifier arg, expr_ty value, PyArena *arena);
-#define alias(a0, a1, a2) _Py_alias(a0, a1, a2)
-alias_ty _Py_alias(identifier name, identifier asname, PyArena *arena);
-
-PyObject* PyAST_mod2obj(mod_ty t);
-mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode);
-int PyAST_Check(PyObject* obj);
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/Python.h b/AppPkg/Applications/Python/Python-2.7.2/Include/Python.h
deleted file mode 100644
index 5abad47..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/Python.h
+++ /dev/null
@@ -1,178 +0,0 @@
-#ifndef Py_PYTHON_H
-#define Py_PYTHON_H
-/* Since this is a "meta-include" file, no #ifdef __cplusplus / extern "C" { */
-
-/* Include nearly all Python header files */
-
-#include "patchlevel.h"
-#include "pyconfig.h"
-#include "pymacconfig.h"
-
-/* Cyclic gc is always enabled, starting with release 2.3a1.  Supply the
- * old symbol for the benefit of extension modules written before then
- * that may be conditionalizing on it.  The core doesn't use it anymore.
- */
-#ifndef WITH_CYCLE_GC
-#define WITH_CYCLE_GC 1
-#endif
-
-#include <limits.h>
-
-#ifndef UCHAR_MAX
-#error "Something's broken.  UCHAR_MAX should be defined in limits.h."
-#endif
-
-#if UCHAR_MAX != 255
-#error "Python's source code assumes C's unsigned char is an 8-bit type."
-#endif
-
-#if defined(__sgi) && defined(WITH_THREAD) && !defined(_SGI_MP_SOURCE)
-#define _SGI_MP_SOURCE
-#endif
-
-#include <stdio.h>
-#ifndef NULL
-#   error "Python.h requires that stdio.h define NULL."
-#endif
-
-#include <string.h>
-#ifdef HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-/* For size_t? */
-#ifdef HAVE_STDDEF_H
-#include <stddef.h>
-#endif
-
-/* CAUTION:  Build setups should ensure that NDEBUG is defined on the
- * compiler command line when building Python in release mode; else
- * assert() calls won't be removed.
- */
-#include <assert.h>
-
-#include "pyport.h"
-
-/* pyconfig.h or pyport.h may or may not define DL_IMPORT */
-#ifndef DL_IMPORT	/* declarations for DLL import/export */
-#define DL_IMPORT(RTYPE) RTYPE
-#endif
-#ifndef DL_EXPORT	/* declarations for DLL import/export */
-#define DL_EXPORT(RTYPE) RTYPE
-#endif
-
-/* Debug-mode build with pymalloc implies PYMALLOC_DEBUG.
- *  PYMALLOC_DEBUG is in error if pymalloc is not in use.
- */
-#if defined(Py_DEBUG) && defined(WITH_PYMALLOC) && !defined(PYMALLOC_DEBUG)
-#define PYMALLOC_DEBUG
-#endif
-#if defined(PYMALLOC_DEBUG) && !defined(WITH_PYMALLOC)
-#error "PYMALLOC_DEBUG requires WITH_PYMALLOC"
-#endif
-#include "pymath.h"
-#include "pymem.h"
-
-#include "object.h"
-#include "objimpl.h"
-
-#include "pydebug.h"
-
-#include "unicodeobject.h"
-#include "intobject.h"
-#include "boolobject.h"
-#include "longobject.h"
-#include "floatobject.h"
-#ifndef WITHOUT_COMPLEX
-#include "complexobject.h"
-#endif
-#include "rangeobject.h"
-#include "stringobject.h"
-#include "memoryobject.h"
-#include "bufferobject.h"
-#include "bytesobject.h"
-#include "bytearrayobject.h"
-#include "tupleobject.h"
-#include "listobject.h"
-#include "dictobject.h"
-#include "enumobject.h"
-#include "setobject.h"
-#include "methodobject.h"
-#include "moduleobject.h"
-#include "funcobject.h"
-#include "classobject.h"
-#include "fileobject.h"
-#include "cobject.h"
-#include "pycapsule.h"
-#include "traceback.h"
-#include "sliceobject.h"
-#include "cellobject.h"
-#include "iterobject.h"
-#include "genobject.h"
-#include "descrobject.h"
-#include "warnings.h"
-#include "weakrefobject.h"
-
-#include "codecs.h"
-#include "pyerrors.h"
-
-#include "pystate.h"
-
-#include "pyarena.h"
-#include "modsupport.h"
-#include "pythonrun.h"
-#include "ceval.h"
-#include "sysmodule.h"
-#include "intrcheck.h"
-#include "import.h"
-
-#include "abstract.h"
-
-#include "compile.h"
-#include "eval.h"
-
-#include "pyctype.h"
-#include "pystrtod.h"
-#include "pystrcmp.h"
-#include "dtoa.h"
-
-/* _Py_Mangle is defined in compile.c */
-PyAPI_FUNC(PyObject*) _Py_Mangle(PyObject *p, PyObject *name);
-
-/* PyArg_GetInt is deprecated and should not be used, use PyArg_Parse(). */
-#define PyArg_GetInt(v, a)	PyArg_Parse((v), "i", (a))
-
-/* PyArg_NoArgs should not be necessary.
-   Set ml_flags in the PyMethodDef to METH_NOARGS. */
-#define PyArg_NoArgs(v)		PyArg_Parse(v, "")
-
-/* Argument must be a char or an int in [-128, 127] or [0, 255]. */
-#define Py_CHARMASK(c)		((unsigned char)((c) & 0xff))
-
-#include "pyfpe.h"
-
-/* These definitions must match corresponding definitions in graminit.h.
-   There's code in compile.c that checks that they are the same. */
-#define Py_single_input 256
-#define Py_file_input 257
-#define Py_eval_input 258
-
-#ifdef HAVE_PTH
-/* GNU pth user-space thread support */
-#include <pth.h>
-#endif
-
-/* Define macros for inline documentation. */
-#define PyDoc_VAR(name) static char name[]
-#define PyDoc_STRVAR(name,str) PyDoc_VAR(name) = PyDoc_STR(str)
-#ifdef WITH_DOC_STRINGS
-#define PyDoc_STR(str) str
-#else
-#define PyDoc_STR(str) ""
-#endif
-
-#endif /* !Py_PYTHON_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/abstract.h b/AppPkg/Applications/Python/Python-2.7.2/Include/abstract.h
deleted file mode 100644
index 241fd44..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/abstract.h
+++ /dev/null
@@ -1,1396 +0,0 @@
-#ifndef Py_ABSTRACTOBJECT_H
-#define Py_ABSTRACTOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef PY_SSIZE_T_CLEAN
-#define PyObject_CallFunction _PyObject_CallFunction_SizeT
-#define PyObject_CallMethod _PyObject_CallMethod_SizeT
-#endif
-
-/* Abstract Object Interface (many thanks to Jim Fulton) */
-
-/*
-   PROPOSAL: A Generic Python Object Interface for Python C Modules
-
-Problem
-
-  Python modules written in C that must access Python objects must do
-  so through routines whose interfaces are described by a set of
-  include files.  Unfortunately, these routines vary according to the
-  object accessed.  To use these routines, the C programmer must check
-  the type of the object being used and must call a routine based on
-  the object type.  For example, to access an element of a sequence,
-  the programmer must determine whether the sequence is a list or a
-  tuple:
-
-    if(is_tupleobject(o))
-      e=gettupleitem(o,i)
-    else if(is_listitem(o))
-      e=getlistitem(o,i)
-
-  If the programmer wants to get an item from another type of object
-  that provides sequence behavior, there is no clear way to do it
-  correctly.
-
-  The persistent programmer may peruse object.h and find that the
-  _typeobject structure provides a means of invoking up to (currently
-  about) 41 special operators.  So, for example, a routine can get an
-  item from any object that provides sequence behavior. However, to
-  use this mechanism, the programmer must make their code dependent on
-  the current Python implementation.
-
-  Also, certain semantics, especially memory management semantics, may
-  differ by the type of object being used.  Unfortunately, these
-  semantics are not clearly described in the current include files.
-  An abstract interface providing more consistent semantics is needed.
-
-Proposal
-
-  I propose the creation of a standard interface (with an associated
-  library of routines and/or macros) for generically obtaining the
-  services of Python objects.  This proposal can be viewed as one
-  components of a Python C interface consisting of several components.
-
-  From the viewpoint of C access to Python services, we have (as
-  suggested by Guido in off-line discussions):
-
-  - "Very high level layer": two or three functions that let you exec or
-    eval arbitrary Python code given as a string in a module whose name is
-    given, passing C values in and getting C values out using
-    mkvalue/getargs style format strings.  This does not require the user
-    to declare any variables of type "PyObject *".  This should be enough
-    to write a simple application that gets Python code from the user,
-    execs it, and returns the output or errors.  (Error handling must also
-    be part of this API.)
-
-  - "Abstract objects layer": which is the subject of this proposal.
-    It has many functions operating on objects, and lest you do many
-    things from C that you can also write in Python, without going
-    through the Python parser.
-
-  - "Concrete objects layer": This is the public type-dependent
-    interface provided by the standard built-in types, such as floats,
-    strings, and lists.  This interface exists and is currently
-    documented by the collection of include files provided with the
-    Python distributions.
-
-  From the point of view of Python accessing services provided by C
-  modules:
-
-  - "Python module interface": this interface consist of the basic
-    routines used to define modules and their members.  Most of the
-    current extensions-writing guide deals with this interface.
-
-  - "Built-in object interface": this is the interface that a new
-    built-in type must provide and the mechanisms and rules that a
-    developer of a new built-in type must use and follow.
-
-  This proposal is a "first-cut" that is intended to spur
-  discussion. See especially the lists of notes.
-
-  The Python C object interface will provide four protocols: object,
-  numeric, sequence, and mapping.  Each protocol consists of a
-  collection of related operations.  If an operation that is not
-  provided by a particular type is invoked, then a standard exception,
-  NotImplementedError is raised with a operation name as an argument.
-  In addition, for convenience this interface defines a set of
-  constructors for building objects of built-in types.  This is needed
-  so new objects can be returned from C functions that otherwise treat
-  objects generically.
-
-Memory Management
-
-  For all of the functions described in this proposal, if a function
-  retains a reference to a Python object passed as an argument, then the
-  function will increase the reference count of the object.  It is
-  unnecessary for the caller to increase the reference count of an
-  argument in anticipation of the object's retention.
-
-  All Python objects returned from functions should be treated as new
-  objects.  Functions that return objects assume that the caller will
-  retain a reference and the reference count of the object has already
-  been incremented to account for this fact.  A caller that does not
-  retain a reference to an object that is returned from a function
-  must decrement the reference count of the object (using
-  DECREF(object)) to prevent memory leaks.
-
-  Note that the behavior mentioned here is different from the current
-  behavior for some objects (e.g. lists and tuples) when certain
-  type-specific routines are called directly (e.g. setlistitem).  The
-  proposed abstraction layer will provide a consistent memory
-  management interface, correcting for inconsistent behavior for some
-  built-in types.
-
-Protocols
-
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
-
-/*  Object Protocol: */
-
-     /* Implemented elsewhere:
-
-     int PyObject_Print(PyObject *o, FILE *fp, int flags);
-
-     Print an object, o, on file, fp.  Returns -1 on
-     error.  The flags argument is used to enable certain printing
-     options. The only option currently supported is Py_Print_RAW.
-
-     (What should be said about Py_Print_RAW?)
-
-       */
-
-     /* Implemented elsewhere:
-
-     int PyObject_HasAttrString(PyObject *o, char *attr_name);
-
-     Returns 1 if o has the attribute attr_name, and 0 otherwise.
-     This is equivalent to the Python expression:
-     hasattr(o,attr_name).
-
-     This function always succeeds.
-
-       */
-
-     /* Implemented elsewhere:
-
-     PyObject* PyObject_GetAttrString(PyObject *o, char *attr_name);
-
-     Retrieve an attributed named attr_name form object o.
-     Returns the attribute value on success, or NULL on failure.
-     This is the equivalent of the Python expression: o.attr_name.
-
-       */
-
-     /* Implemented elsewhere:
-
-     int PyObject_HasAttr(PyObject *o, PyObject *attr_name);
-
-     Returns 1 if o has the attribute attr_name, and 0 otherwise.
-     This is equivalent to the Python expression:
-     hasattr(o,attr_name).
-
-     This function always succeeds.
-
-       */
-
-     /* Implemented elsewhere:
-
-     PyObject* PyObject_GetAttr(PyObject *o, PyObject *attr_name);
-
-     Retrieve an attributed named attr_name form object o.
-     Returns the attribute value on success, or NULL on failure.
-     This is the equivalent of the Python expression: o.attr_name.
-
-       */
-
-
-     /* Implemented elsewhere:
-
-     int PyObject_SetAttrString(PyObject *o, char *attr_name, PyObject *v);
-
-     Set the value of the attribute named attr_name, for object o,
-     to the value, v. Returns -1 on failure.  This is
-     the equivalent of the Python statement: o.attr_name=v.
-
-       */
-
-     /* Implemented elsewhere:
-
-     int PyObject_SetAttr(PyObject *o, PyObject *attr_name, PyObject *v);
-
-     Set the value of the attribute named attr_name, for object o,
-     to the value, v. Returns -1 on failure.  This is
-     the equivalent of the Python statement: o.attr_name=v.
-
-       */
-
-     /* implemented as a macro:
-
-     int PyObject_DelAttrString(PyObject *o, char *attr_name);
-
-     Delete attribute named attr_name, for object o. Returns
-     -1 on failure.  This is the equivalent of the Python
-     statement: del o.attr_name.
-
-       */
-#define  PyObject_DelAttrString(O,A) PyObject_SetAttrString((O),(A),NULL)
-
-     /* implemented as a macro:
-
-     int PyObject_DelAttr(PyObject *o, PyObject *attr_name);
-
-     Delete attribute named attr_name, for object o. Returns -1
-     on failure.  This is the equivalent of the Python
-     statement: del o.attr_name.
-
-       */
-#define  PyObject_DelAttr(O,A) PyObject_SetAttr((O),(A),NULL)
-
-     PyAPI_FUNC(int) PyObject_Cmp(PyObject *o1, PyObject *o2, int *result);
-
-       /*
-     Compare the values of o1 and o2 using a routine provided by
-     o1, if one exists, otherwise with a routine provided by o2.
-     The result of the comparison is returned in result.  Returns
-     -1 on failure.  This is the equivalent of the Python
-     statement: result=cmp(o1,o2).
-
-       */
-
-     /* Implemented elsewhere:
-
-     int PyObject_Compare(PyObject *o1, PyObject *o2);
-
-     Compare the values of o1 and o2 using a routine provided by
-     o1, if one exists, otherwise with a routine provided by o2.
-     Returns the result of the comparison on success.  On error,
-     the value returned is undefined. This is equivalent to the
-     Python expression: cmp(o1,o2).
-
-       */
-
-     /* Implemented elsewhere:
-
-     PyObject *PyObject_Repr(PyObject *o);
-
-     Compute the string representation of object, o.  Returns the
-     string representation on success, NULL on failure.  This is
-     the equivalent of the Python expression: repr(o).
-
-     Called by the repr() built-in function and by reverse quotes.
-
-       */
-
-     /* Implemented elsewhere:
-
-     PyObject *PyObject_Str(PyObject *o);
-
-     Compute the string representation of object, o.  Returns the
-     string representation on success, NULL on failure.  This is
-     the equivalent of the Python expression: str(o).)
-
-     Called by the str() built-in function and by the print
-     statement.
-
-       */
-
-     /* Implemented elsewhere:
-
-     PyObject *PyObject_Unicode(PyObject *o);
-
-     Compute the unicode representation of object, o.  Returns the
-     unicode representation on success, NULL on failure.  This is
-     the equivalent of the Python expression: unistr(o).)
-
-     Called by the unistr() built-in function.
-
-       */
-
-       /* Declared elsewhere
-
-     PyAPI_FUNC(int) PyCallable_Check(PyObject *o);
-
-     Determine if the object, o, is callable.  Return 1 if the
-     object is callable and 0 otherwise.
-
-     This function always succeeds.
-
-       */
-
-
-
-     PyAPI_FUNC(PyObject *) PyObject_Call(PyObject *callable_object,
-                                         PyObject *args, PyObject *kw);
-
-       /*
-     Call a callable Python object, callable_object, with
-     arguments and keywords arguments.  The 'args' argument can not be
-     NULL, but the 'kw' argument can be NULL.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyObject_CallObject(PyObject *callable_object,
-                                               PyObject *args);
-
-       /*
-     Call a callable Python object, callable_object, with
-     arguments given by the tuple, args.  If no arguments are
-     needed, then args may be NULL.  Returns the result of the
-     call on success, or NULL on failure.  This is the equivalent
-     of the Python expression: apply(o,args).
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyObject_CallFunction(PyObject *callable_object,
-                                                 char *format, ...);
-
-       /*
-     Call a callable Python object, callable_object, with a
-     variable number of C arguments. The C arguments are described
-     using a mkvalue-style format string. The format may be NULL,
-     indicating that no arguments are provided.  Returns the
-     result of the call on success, or NULL on failure.  This is
-     the equivalent of the Python expression: apply(o,args).
-
-       */
-
-
-     PyAPI_FUNC(PyObject *) PyObject_CallMethod(PyObject *o, char *m,
-                                               char *format, ...);
-
-       /*
-     Call the method named m of object o with a variable number of
-     C arguments.  The C arguments are described by a mkvalue
-     format string.  The format may be NULL, indicating that no
-     arguments are provided. Returns the result of the call on
-     success, or NULL on failure.  This is the equivalent of the
-     Python expression: o.method(args).
-       */
-
-     PyAPI_FUNC(PyObject *) _PyObject_CallFunction_SizeT(PyObject *callable,
-                                                         char *format, ...);
-     PyAPI_FUNC(PyObject *) _PyObject_CallMethod_SizeT(PyObject *o,
-                                                       char *name,
-                                                       char *format, ...);
-
-     PyAPI_FUNC(PyObject *) PyObject_CallFunctionObjArgs(PyObject *callable,
-                                                        ...);
-
-       /*
-     Call a callable Python object, callable_object, with a
-     variable number of C arguments.  The C arguments are provided
-     as PyObject * values, terminated by a NULL.  Returns the
-     result of the call on success, or NULL on failure.  This is
-     the equivalent of the Python expression: apply(o,args).
-       */
-
-
-     PyAPI_FUNC(PyObject *) PyObject_CallMethodObjArgs(PyObject *o,
-                                                      PyObject *m, ...);
-
-       /*
-     Call the method named m of object o with a variable number of
-     C arguments.  The C arguments are provided as PyObject *
-     values, terminated by NULL.  Returns the result of the call
-     on success, or NULL on failure.  This is the equivalent of
-     the Python expression: o.method(args).
-       */
-
-
-     /* Implemented elsewhere:
-
-     long PyObject_Hash(PyObject *o);
-
-     Compute and return the hash, hash_value, of an object, o.  On
-     failure, return -1.  This is the equivalent of the Python
-     expression: hash(o).
-
-       */
-
-
-     /* Implemented elsewhere:
-
-     int PyObject_IsTrue(PyObject *o);
-
-     Returns 1 if the object, o, is considered to be true, 0 if o is
-     considered to be false and -1 on failure. This is equivalent to the
-     Python expression: not not o
-
-       */
-
-     /* Implemented elsewhere:
-
-     int PyObject_Not(PyObject *o);
-
-     Returns 0 if the object, o, is considered to be true, 1 if o is
-     considered to be false and -1 on failure. This is equivalent to the
-     Python expression: not o
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyObject_Type(PyObject *o);
-
-       /*
-     On success, returns a type object corresponding to the object
-     type of object o. On failure, returns NULL.  This is
-     equivalent to the Python expression: type(o).
-       */
-
-     PyAPI_FUNC(Py_ssize_t) PyObject_Size(PyObject *o);
-
-       /*
-     Return the size of object o.  If the object, o, provides
-     both sequence and mapping protocols, the sequence size is
-     returned. On error, -1 is returned.  This is the equivalent
-     to the Python expression: len(o).
-
-       */
-
-       /* For DLL compatibility */
-#undef PyObject_Length
-     PyAPI_FUNC(Py_ssize_t) PyObject_Length(PyObject *o);
-#define PyObject_Length PyObject_Size
-
-     PyAPI_FUNC(Py_ssize_t) _PyObject_LengthHint(PyObject *o, Py_ssize_t);
-
-       /*
-     Guess the size of object o using len(o) or o.__length_hint__().
-     If neither of those return a non-negative value, then return the
-     default value.  If one of the calls fails, this function returns -1.
-       */
-
-     PyAPI_FUNC(PyObject *) PyObject_GetItem(PyObject *o, PyObject *key);
-
-       /*
-     Return element of o corresponding to the object, key, or NULL
-     on failure. This is the equivalent of the Python expression:
-     o[key].
-
-       */
-
-     PyAPI_FUNC(int) PyObject_SetItem(PyObject *o, PyObject *key, PyObject *v);
-
-       /*
-     Map the object, key, to the value, v.  Returns
-     -1 on failure.  This is the equivalent of the Python
-     statement: o[key]=v.
-       */
-
-     PyAPI_FUNC(int) PyObject_DelItemString(PyObject *o, char *key);
-
-       /*
-     Remove the mapping for object, key, from the object *o.
-     Returns -1 on failure.  This is equivalent to
-     the Python statement: del o[key].
-       */
-
-     PyAPI_FUNC(int) PyObject_DelItem(PyObject *o, PyObject *key);
-
-       /*
-     Delete the mapping for key from *o.  Returns -1 on failure.
-     This is the equivalent of the Python statement: del o[key].
-       */
-
-     PyAPI_FUNC(int) PyObject_AsCharBuffer(PyObject *obj,
-                                          const char **buffer,
-                                          Py_ssize_t *buffer_len);
-
-       /*
-      Takes an arbitrary object which must support the (character,
-      single segment) buffer interface and returns a pointer to a
-      read-only memory location useable as character based input
-      for subsequent processing.
-
-      0 is returned on success.  buffer and buffer_len are only
-      set in case no error occurs. Otherwise, -1 is returned and
-      an exception set.
-
-       */
-
-     PyAPI_FUNC(int) PyObject_CheckReadBuffer(PyObject *obj);
-
-      /*
-      Checks whether an arbitrary object supports the (character,
-      single segment) buffer interface.  Returns 1 on success, 0
-      on failure.
-
-      */
-
-     PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj,
-                                          const void **buffer,
-                                          Py_ssize_t *buffer_len);
-
-       /*
-      Same as PyObject_AsCharBuffer() except that this API expects
-      (readable, single segment) buffer interface and returns a
-      pointer to a read-only memory location which can contain
-      arbitrary data.
-
-      0 is returned on success.  buffer and buffer_len are only
-      set in case no error occurs.  Otherwise, -1 is returned and
-      an exception set.
-
-       */
-
-     PyAPI_FUNC(int) PyObject_AsWriteBuffer(PyObject *obj,
-                                           void **buffer,
-                                           Py_ssize_t *buffer_len);
-
-       /*
-      Takes an arbitrary object which must support the (writeable,
-      single segment) buffer interface and returns a pointer to a
-      writeable memory location in buffer of size buffer_len.
-
-      0 is returned on success.  buffer and buffer_len are only
-      set in case no error occurs. Otherwise, -1 is returned and
-      an exception set.
-
-       */
-
-    /* new buffer API */
-
-#define PyObject_CheckBuffer(obj) \
-    (((obj)->ob_type->tp_as_buffer != NULL) &&                          \
-     (PyType_HasFeature((obj)->ob_type, Py_TPFLAGS_HAVE_NEWBUFFER)) && \
-     ((obj)->ob_type->tp_as_buffer->bf_getbuffer != NULL))
-
-    /* Return 1 if the getbuffer function is available, otherwise
-       return 0 */
-
-     PyAPI_FUNC(int) PyObject_GetBuffer(PyObject *obj, Py_buffer *view,
-                                        int flags);
-
-    /* This is a C-API version of the getbuffer function call.  It checks
-       to make sure object has the required function pointer and issues the
-       call.  Returns -1 and raises an error on failure and returns 0 on
-       success
-    */
-
-
-     PyAPI_FUNC(void *) PyBuffer_GetPointer(Py_buffer *view, Py_ssize_t *indices);
-
-    /* Get the memory area pointed to by the indices for the buffer given.
-       Note that view->ndim is the assumed size of indices
-    */
-
-     PyAPI_FUNC(int) PyBuffer_SizeFromFormat(const char *);
-
-    /* Return the implied itemsize of the data-format area from a
-       struct-style description */
-
-
-
-     PyAPI_FUNC(int) PyBuffer_ToContiguous(void *buf, Py_buffer *view,
-                                           Py_ssize_t len, char fort);
-
-     PyAPI_FUNC(int) PyBuffer_FromContiguous(Py_buffer *view, void *buf,
-                                             Py_ssize_t len, char fort);
-
-
-    /* Copy len bytes of data from the contiguous chunk of memory
-       pointed to by buf into the buffer exported by obj.  Return
-       0 on success and return -1 and raise a PyBuffer_Error on
-       error (i.e. the object does not have a buffer interface or
-       it is not working).
-
-       If fort is 'F' and the object is multi-dimensional,
-       then the data will be copied into the array in
-       Fortran-style (first dimension varies the fastest).  If
-       fort is 'C', then the data will be copied into the array
-       in C-style (last dimension varies the fastest).  If fort
-       is 'A', then it does not matter and the copy will be made
-       in whatever way is more efficient.
-
-    */
-
-     PyAPI_FUNC(int) PyObject_CopyData(PyObject *dest, PyObject *src);
-
-    /* Copy the data from the src buffer to the buffer of destination
-     */
-
-     PyAPI_FUNC(int) PyBuffer_IsContiguous(Py_buffer *view, char fort);
-
-
-     PyAPI_FUNC(void) PyBuffer_FillContiguousStrides(int ndims,
-                                                    Py_ssize_t *shape,
-                                                    Py_ssize_t *strides,
-                                                    int itemsize,
-                                                    char fort);
-
-    /*  Fill the strides array with byte-strides of a contiguous
-        (Fortran-style if fort is 'F' or C-style otherwise)
-        array of the given shape with the given number of bytes
-        per element.
-    */
-
-     PyAPI_FUNC(int) PyBuffer_FillInfo(Py_buffer *view, PyObject *o, void *buf,
-                                       Py_ssize_t len, int readonly,
-                                       int flags);
-
-    /* Fills in a buffer-info structure correctly for an exporter
-       that can only share a contiguous chunk of memory of
-       "unsigned bytes" of the given length. Returns 0 on success
-       and -1 (with raising an error) on error.
-     */
-
-     PyAPI_FUNC(void) PyBuffer_Release(Py_buffer *view);
-
-       /* Releases a Py_buffer obtained from getbuffer ParseTuple's s*.
-    */
-
-     PyAPI_FUNC(PyObject *) PyObject_Format(PyObject* obj,
-                                            PyObject *format_spec);
-       /*
-     Takes an arbitrary object and returns the result of
-     calling obj.__format__(format_spec).
-       */
-
-/* Iterators */
-
-     PyAPI_FUNC(PyObject *) PyObject_GetIter(PyObject *);
-     /* Takes an object and returns an iterator for it.
-    This is typically a new iterator but if the argument
-    is an iterator, this returns itself. */
-
-#define PyIter_Check(obj) \
-    (PyType_HasFeature((obj)->ob_type, Py_TPFLAGS_HAVE_ITER) && \
-     (obj)->ob_type->tp_iternext != NULL && \
-     (obj)->ob_type->tp_iternext != &_PyObject_NextNotImplemented)
-
-     PyAPI_FUNC(PyObject *) PyIter_Next(PyObject *);
-     /* Takes an iterator object and calls its tp_iternext slot,
-    returning the next value.  If the iterator is exhausted,
-    this returns NULL without setting an exception.
-    NULL with an exception means an error occurred. */
-
-/*  Number Protocol:*/
-
-     PyAPI_FUNC(int) PyNumber_Check(PyObject *o);
-
-       /*
-     Returns 1 if the object, o, provides numeric protocols, and
-     false otherwise.
-
-     This function always succeeds.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Add(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of adding o1 and o2, or null on failure.
-     This is the equivalent of the Python expression: o1+o2.
-
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Subtract(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of subtracting o2 from o1, or null on
-     failure.  This is the equivalent of the Python expression:
-     o1-o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Multiply(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of multiplying o1 and o2, or null on
-     failure.  This is the equivalent of the Python expression:
-     o1*o2.
-
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Divide(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of dividing o1 by o2, or null on failure.
-     This is the equivalent of the Python expression: o1/o2.
-
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_FloorDivide(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of dividing o1 by o2 giving an integral result,
-     or null on failure.
-     This is the equivalent of the Python expression: o1//o2.
-
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_TrueDivide(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of dividing o1 by o2 giving a float result,
-     or null on failure.
-     This is the equivalent of the Python expression: o1/o2.
-
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Remainder(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the remainder of dividing o1 by o2, or null on
-     failure.  This is the equivalent of the Python expression:
-     o1%o2.
-
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Divmod(PyObject *o1, PyObject *o2);
-
-       /*
-     See the built-in function divmod.  Returns NULL on failure.
-     This is the equivalent of the Python expression:
-     divmod(o1,o2).
-
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Power(PyObject *o1, PyObject *o2,
-                                          PyObject *o3);
-
-       /*
-     See the built-in function pow.  Returns NULL on failure.
-     This is the equivalent of the Python expression:
-     pow(o1,o2,o3), where o3 is optional.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Negative(PyObject *o);
-
-       /*
-     Returns the negation of o on success, or null on failure.
-     This is the equivalent of the Python expression: -o.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Positive(PyObject *o);
-
-       /*
-     Returns the (what?) of o on success, or NULL on failure.
-     This is the equivalent of the Python expression: +o.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Absolute(PyObject *o);
-
-       /*
-     Returns the absolute value of o, or null on failure.  This is
-     the equivalent of the Python expression: abs(o).
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Invert(PyObject *o);
-
-       /*
-     Returns the bitwise negation of o on success, or NULL on
-     failure.  This is the equivalent of the Python expression:
-     ~o.
-
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Lshift(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of left shifting o1 by o2 on success, or
-     NULL on failure.  This is the equivalent of the Python
-     expression: o1 << o2.
-
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Rshift(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of right shifting o1 by o2 on success, or
-     NULL on failure.  This is the equivalent of the Python
-     expression: o1 >> o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_And(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of bitwise and of o1 and o2 on success, or
-     NULL on failure. This is the equivalent of the Python
-     expression: o1&o2.
-
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Xor(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the bitwise exclusive or of o1 by o2 on success, or
-     NULL on failure.  This is the equivalent of the Python
-     expression: o1^o2.
-
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Or(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of bitwise or on o1 and o2 on success, or
-     NULL on failure.  This is the equivalent of the Python
-     expression: o1|o2.
-
-       */
-
-     /* Implemented elsewhere:
-
-     int PyNumber_Coerce(PyObject **p1, PyObject **p2);
-
-     This function takes the addresses of two variables of type
-     PyObject*.
-
-     If the objects pointed to by *p1 and *p2 have the same type,
-     increment their reference count and return 0 (success).
-     If the objects can be converted to a common numeric type,
-     replace *p1 and *p2 by their converted value (with 'new'
-     reference counts), and return 0.
-     If no conversion is possible, or if some other error occurs,
-     return -1 (failure) and don't increment the reference counts.
-     The call PyNumber_Coerce(&o1, &o2) is equivalent to the Python
-     statement o1, o2 = coerce(o1, o2).
-
-       */
-
-#define PyIndex_Check(obj) \
-   ((obj)->ob_type->tp_as_number != NULL && \
-    PyType_HasFeature((obj)->ob_type, Py_TPFLAGS_HAVE_INDEX) && \
-    (obj)->ob_type->tp_as_number->nb_index != NULL)
-
-     PyAPI_FUNC(PyObject *) PyNumber_Index(PyObject *o);
-
-       /*
-     Returns the object converted to a Python long or int
-     or NULL with an error raised on failure.
-       */
-
-     PyAPI_FUNC(Py_ssize_t) PyNumber_AsSsize_t(PyObject *o, PyObject *exc);
-
-       /*
-     Returns the Integral instance converted to an int. The
-     instance is expected to be int or long or have an __int__
-     method. Steals integral's reference. error_format will be
-     used to create the TypeError if integral isn't actually an
-     Integral instance. error_format should be a format string
-     that can accept a char* naming integral's type.
-       */
-
-     PyAPI_FUNC(PyObject *) _PyNumber_ConvertIntegralToInt(
-         PyObject *integral,
-         const char* error_format);
-
-       /*
-    Returns the object converted to Py_ssize_t by going through
-    PyNumber_Index first.  If an overflow error occurs while
-    converting the int-or-long to Py_ssize_t, then the second argument
-    is the error-type to return.  If it is NULL, then the overflow error
-    is cleared and the value is clipped.
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Int(PyObject *o);
-
-       /*
-     Returns the o converted to an integer object on success, or
-     NULL on failure.  This is the equivalent of the Python
-     expression: int(o).
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Long(PyObject *o);
-
-       /*
-     Returns the o converted to a long integer object on success,
-     or NULL on failure.  This is the equivalent of the Python
-     expression: long(o).
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_Float(PyObject *o);
-
-       /*
-     Returns the o converted to a float object on success, or NULL
-     on failure.  This is the equivalent of the Python expression:
-     float(o).
-       */
-
-/*  In-place variants of (some of) the above number protocol functions */
-
-     PyAPI_FUNC(PyObject *) PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of adding o2 to o1, possibly in-place, or null
-     on failure.  This is the equivalent of the Python expression:
-     o1 += o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of subtracting o2 from o1, possibly in-place or
-     null on failure.  This is the equivalent of the Python expression:
-     o1 -= o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of multiplying o1 by o2, possibly in-place, or
-     null on failure.  This is the equivalent of the Python expression:
-     o1 *= o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_InPlaceDivide(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of dividing o1 by o2, possibly in-place, or null
-     on failure.  This is the equivalent of the Python expression:
-     o1 /= o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_InPlaceFloorDivide(PyObject *o1,
-                                                       PyObject *o2);
-
-       /*
-     Returns the result of dividing o1 by o2 giving an integral result,
-     possibly in-place, or null on failure.
-     This is the equivalent of the Python expression:
-     o1 /= o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_InPlaceTrueDivide(PyObject *o1,
-                                                      PyObject *o2);
-
-       /*
-     Returns the result of dividing o1 by o2 giving a float result,
-     possibly in-place, or null on failure.
-     This is the equivalent of the Python expression:
-     o1 /= o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_InPlaceRemainder(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the remainder of dividing o1 by o2, possibly in-place, or
-     null on failure.  This is the equivalent of the Python expression:
-     o1 %= o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_InPlacePower(PyObject *o1, PyObject *o2,
-                                                 PyObject *o3);
-
-       /*
-     Returns the result of raising o1 to the power of o2, possibly
-     in-place, or null on failure.  This is the equivalent of the Python
-     expression: o1 **= o2, or pow(o1, o2, o3) if o3 is present.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_InPlaceLshift(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of left shifting o1 by o2, possibly in-place, or
-     null on failure.  This is the equivalent of the Python expression:
-     o1 <<= o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_InPlaceRshift(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of right shifting o1 by o2, possibly in-place or
-     null on failure.  This is the equivalent of the Python expression:
-     o1 >>= o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_InPlaceAnd(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of bitwise and of o1 and o2, possibly in-place,
-     or null on failure. This is the equivalent of the Python
-     expression: o1 &= o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_InPlaceXor(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the bitwise exclusive or of o1 by o2, possibly in-place, or
-     null on failure.  This is the equivalent of the Python expression:
-     o1 ^= o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PyNumber_InPlaceOr(PyObject *o1, PyObject *o2);
-
-       /*
-     Returns the result of bitwise or of o1 and o2, possibly in-place,
-     or null on failure.  This is the equivalent of the Python
-     expression: o1 |= o2.
-
-       */
-
-
-     PyAPI_FUNC(PyObject *) PyNumber_ToBase(PyObject *n, int base);
-
-       /*
-     Returns the integer n converted to a string with a base, with a base
-     marker of 0b, 0o or 0x prefixed if applicable.
-     If n is not an int object, it is converted with PyNumber_Index first.
-       */
-
-
-/*  Sequence protocol:*/
-
-     PyAPI_FUNC(int) PySequence_Check(PyObject *o);
-
-       /*
-     Return 1 if the object provides sequence protocol, and zero
-     otherwise.
-
-     This function always succeeds.
-
-       */
-
-     PyAPI_FUNC(Py_ssize_t) PySequence_Size(PyObject *o);
-
-       /*
-     Return the size of sequence object o, or -1 on failure.
-
-       */
-
-       /* For DLL compatibility */
-#undef PySequence_Length
-     PyAPI_FUNC(Py_ssize_t) PySequence_Length(PyObject *o);
-#define PySequence_Length PySequence_Size
-
-
-     PyAPI_FUNC(PyObject *) PySequence_Concat(PyObject *o1, PyObject *o2);
-
-       /*
-     Return the concatenation of o1 and o2 on success, and NULL on
-     failure.   This is the equivalent of the Python
-     expression: o1+o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PySequence_Repeat(PyObject *o, Py_ssize_t count);
-
-       /*
-     Return the result of repeating sequence object o count times,
-     or NULL on failure.  This is the equivalent of the Python
-     expression: o1*count.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PySequence_GetItem(PyObject *o, Py_ssize_t i);
-
-       /*
-     Return the ith element of o, or NULL on failure. This is the
-     equivalent of the Python expression: o[i].
-       */
-
-     PyAPI_FUNC(PyObject *) PySequence_GetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2);
-
-       /*
-     Return the slice of sequence object o between i1 and i2, or
-     NULL on failure. This is the equivalent of the Python
-     expression: o[i1:i2].
-
-       */
-
-     PyAPI_FUNC(int) PySequence_SetItem(PyObject *o, Py_ssize_t i, PyObject *v);
-
-       /*
-     Assign object v to the ith element of o.  Returns
-     -1 on failure.  This is the equivalent of the Python
-     statement: o[i]=v.
-
-       */
-
-     PyAPI_FUNC(int) PySequence_DelItem(PyObject *o, Py_ssize_t i);
-
-       /*
-     Delete the ith element of object v.  Returns
-     -1 on failure.  This is the equivalent of the Python
-     statement: del o[i].
-       */
-
-     PyAPI_FUNC(int) PySequence_SetSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2,
-                                        PyObject *v);
-
-       /*
-     Assign the sequence object, v, to the slice in sequence
-     object, o, from i1 to i2.  Returns -1 on failure. This is the
-     equivalent of the Python statement: o[i1:i2]=v.
-       */
-
-     PyAPI_FUNC(int) PySequence_DelSlice(PyObject *o, Py_ssize_t i1, Py_ssize_t i2);
-
-       /*
-     Delete the slice in sequence object, o, from i1 to i2.
-     Returns -1 on failure. This is the equivalent of the Python
-     statement: del o[i1:i2].
-       */
-
-     PyAPI_FUNC(PyObject *) PySequence_Tuple(PyObject *o);
-
-       /*
-     Returns the sequence, o, as a tuple on success, and NULL on failure.
-     This is equivalent to the Python expression: tuple(o)
-       */
-
-
-     PyAPI_FUNC(PyObject *) PySequence_List(PyObject *o);
-       /*
-     Returns the sequence, o, as a list on success, and NULL on failure.
-     This is equivalent to the Python expression: list(o)
-       */
-
-     PyAPI_FUNC(PyObject *) PySequence_Fast(PyObject *o, const char* m);
-       /*
-     Returns the sequence, o, as a tuple, unless it's already a
-     tuple or list.  Use PySequence_Fast_GET_ITEM to access the
-     members of this list, and PySequence_Fast_GET_SIZE to get its length.
-
-     Returns NULL on failure.  If the object does not support iteration,
-     raises a TypeError exception with m as the message text.
-       */
-
-#define PySequence_Fast_GET_SIZE(o) \
-    (PyList_Check(o) ? PyList_GET_SIZE(o) : PyTuple_GET_SIZE(o))
-       /*
-     Return the size of o, assuming that o was returned by
-     PySequence_Fast and is not NULL.
-       */
-
-#define PySequence_Fast_GET_ITEM(o, i)\
-     (PyList_Check(o) ? PyList_GET_ITEM(o, i) : PyTuple_GET_ITEM(o, i))
-       /*
-     Return the ith element of o, assuming that o was returned by
-     PySequence_Fast, and that i is within bounds.
-       */
-
-#define PySequence_ITEM(o, i)\
-    ( Py_TYPE(o)->tp_as_sequence->sq_item(o, i) )
-       /* Assume tp_as_sequence and sq_item exist and that i does not
-      need to be corrected for a negative index
-       */
-
-#define PySequence_Fast_ITEMS(sf) \
-    (PyList_Check(sf) ? ((PyListObject *)(sf))->ob_item \
-                      : ((PyTupleObject *)(sf))->ob_item)
-    /* Return a pointer to the underlying item array for
-       an object retured by PySequence_Fast */
-
-     PyAPI_FUNC(Py_ssize_t) PySequence_Count(PyObject *o, PyObject *value);
-
-       /*
-     Return the number of occurrences on value on o, that is,
-     return the number of keys for which o[key]==value.  On
-     failure, return -1.  This is equivalent to the Python
-     expression: o.count(value).
-       */
-
-     PyAPI_FUNC(int) PySequence_Contains(PyObject *seq, PyObject *ob);
-       /*
-     Return -1 if error; 1 if ob in seq; 0 if ob not in seq.
-     Use __contains__ if possible, else _PySequence_IterSearch().
-       */
-
-#define PY_ITERSEARCH_COUNT    1
-#define PY_ITERSEARCH_INDEX    2
-#define PY_ITERSEARCH_CONTAINS 3
-     PyAPI_FUNC(Py_ssize_t) _PySequence_IterSearch(PyObject *seq,
-                                        PyObject *obj, int operation);
-    /*
-      Iterate over seq.  Result depends on the operation:
-      PY_ITERSEARCH_COUNT:  return # of times obj appears in seq; -1 if
-        error.
-      PY_ITERSEARCH_INDEX:  return 0-based index of first occurrence of
-        obj in seq; set ValueError and return -1 if none found;
-        also return -1 on error.
-      PY_ITERSEARCH_CONTAINS:  return 1 if obj in seq, else 0; -1 on
-        error.
-    */
-
-/* For DLL-level backwards compatibility */
-#undef PySequence_In
-     PyAPI_FUNC(int) PySequence_In(PyObject *o, PyObject *value);
-
-/* For source-level backwards compatibility */
-#define PySequence_In PySequence_Contains
-
-       /*
-     Determine if o contains value.  If an item in o is equal to
-     X, return 1, otherwise return 0.  On error, return -1.  This
-     is equivalent to the Python expression: value in o.
-       */
-
-     PyAPI_FUNC(Py_ssize_t) PySequence_Index(PyObject *o, PyObject *value);
-
-       /*
-     Return the first index for which o[i]=value.  On error,
-     return -1.    This is equivalent to the Python
-     expression: o.index(value).
-       */
-
-/* In-place versions of some of the above Sequence functions. */
-
-     PyAPI_FUNC(PyObject *) PySequence_InPlaceConcat(PyObject *o1, PyObject *o2);
-
-       /*
-     Append o2 to o1, in-place when possible. Return the resulting
-     object, which could be o1, or NULL on failure.  This is the
-     equivalent of the Python expression: o1 += o2.
-
-       */
-
-     PyAPI_FUNC(PyObject *) PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count);
-
-       /*
-     Repeat o1 by count, in-place when possible. Return the resulting
-     object, which could be o1, or NULL on failure.  This is the
-     equivalent of the Python expression: o1 *= count.
-
-       */
-
-/*  Mapping protocol:*/
-
-     PyAPI_FUNC(int) PyMapping_Check(PyObject *o);
-
-       /*
-     Return 1 if the object provides mapping protocol, and zero
-     otherwise.
-
-     This function always succeeds.
-       */
-
-     PyAPI_FUNC(Py_ssize_t) PyMapping_Size(PyObject *o);
-
-       /*
-     Returns the number of keys in object o on success, and -1 on
-     failure.  For objects that do not provide sequence protocol,
-     this is equivalent to the Python expression: len(o).
-       */
-
-       /* For DLL compatibility */
-#undef PyMapping_Length
-     PyAPI_FUNC(Py_ssize_t) PyMapping_Length(PyObject *o);
-#define PyMapping_Length PyMapping_Size
-
-
-     /* implemented as a macro:
-
-     int PyMapping_DelItemString(PyObject *o, char *key);
-
-     Remove the mapping for object, key, from the object *o.
-     Returns -1 on failure.  This is equivalent to
-     the Python statement: del o[key].
-       */
-#define PyMapping_DelItemString(O,K) PyObject_DelItemString((O),(K))
-
-     /* implemented as a macro:
-
-     int PyMapping_DelItem(PyObject *o, PyObject *key);
-
-     Remove the mapping for object, key, from the object *o.
-     Returns -1 on failure.  This is equivalent to
-     the Python statement: del o[key].
-       */
-#define PyMapping_DelItem(O,K) PyObject_DelItem((O),(K))
-
-     PyAPI_FUNC(int) PyMapping_HasKeyString(PyObject *o, char *key);
-
-       /*
-     On success, return 1 if the mapping object has the key, key,
-     and 0 otherwise.  This is equivalent to the Python expression:
-     o.has_key(key).
-
-     This function always succeeds.
-       */
-
-     PyAPI_FUNC(int) PyMapping_HasKey(PyObject *o, PyObject *key);
-
-       /*
-     Return 1 if the mapping object has the key, key,
-     and 0 otherwise.  This is equivalent to the Python expression:
-     o.has_key(key).
-
-     This function always succeeds.
-
-       */
-
-     /* Implemented as macro:
-
-     PyObject *PyMapping_Keys(PyObject *o);
-
-     On success, return a list of the keys in object o.  On
-     failure, return NULL. This is equivalent to the Python
-     expression: o.keys().
-       */
-#define PyMapping_Keys(O) PyObject_CallMethod(O,"keys",NULL)
-
-     /* Implemented as macro:
-
-     PyObject *PyMapping_Values(PyObject *o);
-
-     On success, return a list of the values in object o.  On
-     failure, return NULL. This is equivalent to the Python
-     expression: o.values().
-       */
-#define PyMapping_Values(O) PyObject_CallMethod(O,"values",NULL)
-
-     /* Implemented as macro:
-
-     PyObject *PyMapping_Items(PyObject *o);
-
-     On success, return a list of the items in object o, where
-     each item is a tuple containing a key-value pair.  On
-     failure, return NULL. This is equivalent to the Python
-     expression: o.items().
-
-       */
-#define PyMapping_Items(O) PyObject_CallMethod(O,"items",NULL)
-
-     PyAPI_FUNC(PyObject *) PyMapping_GetItemString(PyObject *o, char *key);
-
-       /*
-     Return element of o corresponding to the object, key, or NULL
-     on failure. This is the equivalent of the Python expression:
-     o[key].
-       */
-
-     PyAPI_FUNC(int) PyMapping_SetItemString(PyObject *o, char *key,
-                                            PyObject *value);
-
-       /*
-     Map the object, key, to the value, v.  Returns
-     -1 on failure.  This is the equivalent of the Python
-     statement: o[key]=v.
-      */
-
-
-PyAPI_FUNC(int) PyObject_IsInstance(PyObject *object, PyObject *typeorclass);
-      /* isinstance(object, typeorclass) */
-
-PyAPI_FUNC(int) PyObject_IsSubclass(PyObject *object, PyObject *typeorclass);
-      /* issubclass(object, typeorclass) */
-
-
-PyAPI_FUNC(int) _PyObject_RealIsInstance(PyObject *inst, PyObject *cls);
-
-PyAPI_FUNC(int) _PyObject_RealIsSubclass(PyObject *derived, PyObject *cls);
-
-
-/* For internal use by buffer API functions */
-PyAPI_FUNC(void) _Py_add_one_to_index_F(int nd, Py_ssize_t *index,
-                                        const Py_ssize_t *shape);
-PyAPI_FUNC(void) _Py_add_one_to_index_C(int nd, Py_ssize_t *index,
-                                        const Py_ssize_t *shape);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* Py_ABSTRACTOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/asdl.h b/AppPkg/Applications/Python/Python-2.7.2/Include/asdl.h
deleted file mode 100644
index d72b2f8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/asdl.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef Py_ASDL_H
-#define Py_ASDL_H
-
-typedef PyObject * identifier;
-typedef PyObject * string;
-typedef PyObject * object;
-
-#ifndef __cplusplus
-typedef enum {false, true} bool;
-#endif
-
-/* It would be nice if the code generated by asdl_c.py was completely
-   independent of Python, but it is a goal the requires too much work
-   at this stage.  So, for example, I'll represent identifiers as
-   interned Python strings.
-*/
-
-/* XXX A sequence should be typed so that its use can be typechecked. */
-
-typedef struct {
-    int size;
-    void *elements[1];
-} asdl_seq;
-
-typedef struct {
-    int size;
-    int elements[1];
-} asdl_int_seq;
-
-asdl_seq *asdl_seq_new(int size, PyArena *arena);
-asdl_int_seq *asdl_int_seq_new(int size, PyArena *arena);
-
-#define asdl_seq_GET(S, I) (S)->elements[(I)]
-#define asdl_seq_LEN(S) ((S) == NULL ? 0 : (S)->size)
-#ifdef Py_DEBUG
-#define asdl_seq_SET(S, I, V) { \
-        int _asdl_i = (I); \
-        assert((S) && _asdl_i < (S)->size); \
-        (S)->elements[_asdl_i] = (V); \
-}
-#else
-#define asdl_seq_SET(S, I, V) (S)->elements[I] = (V)
-#endif
-
-#endif /* !Py_ASDL_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/ast.h b/AppPkg/Applications/Python/Python-2.7.2/Include/ast.h
deleted file mode 100644
index 77dbe5f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/ast.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef Py_AST_H
-#define Py_AST_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(mod_ty) PyAST_FromNode(const node *, PyCompilerFlags *flags,
-				  const char *, PyArena *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_AST_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/bitset.h b/AppPkg/Applications/Python/Python-2.7.2/Include/bitset.h
deleted file mode 100644
index 028acdf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/bitset.h
+++ /dev/null
@@ -1,32 +0,0 @@
-
-#ifndef Py_BITSET_H
-#define Py_BITSET_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Bitset interface */
-
-#define BYTE		char
-
-typedef BYTE *bitset;
-
-bitset newbitset(int nbits);
-void delbitset(bitset bs);
-#define testbit(ss, ibit) (((ss)[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0)
-int addbit(bitset bs, int ibit); /* Returns 0 if already set */
-int samebitset(bitset bs1, bitset bs2, int nbits);
-void mergebitset(bitset bs1, bitset bs2, int nbits);
-
-#define BITSPERBYTE	(8*sizeof(BYTE))
-#define NBYTES(nbits)	(((nbits) + BITSPERBYTE - 1) / BITSPERBYTE)
-
-#define BIT2BYTE(ibit)	((ibit) / BITSPERBYTE)
-#define BIT2SHIFT(ibit)	((ibit) % BITSPERBYTE)
-#define BIT2MASK(ibit)	(1 << BIT2SHIFT(ibit))
-#define BYTE2BIT(ibyte)	((ibyte) * BITSPERBYTE)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_BITSET_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/boolobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/boolobject.h
deleted file mode 100644
index 9dd0e43..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/boolobject.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Boolean object interface */
-
-#ifndef Py_BOOLOBJECT_H
-#define Py_BOOLOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-typedef PyIntObject PyBoolObject;
-
-PyAPI_DATA(PyTypeObject) PyBool_Type;
-
-#define PyBool_Check(x) (Py_TYPE(x) == &PyBool_Type)
-
-/* Py_False and Py_True are the only two bools in existence.
-Don't forget to apply Py_INCREF() when returning either!!! */
-
-/* Don't use these directly */
-PyAPI_DATA(PyIntObject) _Py_ZeroStruct, _Py_TrueStruct;
-
-/* Use these macros */
-#define Py_False ((PyObject *) &_Py_ZeroStruct)
-#define Py_True ((PyObject *) &_Py_TrueStruct)
-
-/* Macros for returning Py_True or Py_False, respectively */
-#define Py_RETURN_TRUE return Py_INCREF(Py_True), Py_True
-#define Py_RETURN_FALSE return Py_INCREF(Py_False), Py_False
-
-/* Function to return a bool from a C long */
-PyAPI_FUNC(PyObject *) PyBool_FromLong(long);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_BOOLOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/bufferobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/bufferobject.h
deleted file mode 100644
index 6c33a8b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/bufferobject.h
+++ /dev/null
@@ -1,33 +0,0 @@
-
-/* Buffer object interface */
-
-/* Note: the object's structure is private */
-
-#ifndef Py_BUFFEROBJECT_H
-#define Py_BUFFEROBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-PyAPI_DATA(PyTypeObject) PyBuffer_Type;
-
-#define PyBuffer_Check(op) (Py_TYPE(op) == &PyBuffer_Type)
-
-#define Py_END_OF_BUFFER	(-1)
-
-PyAPI_FUNC(PyObject *) PyBuffer_FromObject(PyObject *base,
-                                           Py_ssize_t offset, Py_ssize_t size);
-PyAPI_FUNC(PyObject *) PyBuffer_FromReadWriteObject(PyObject *base,
-                                                    Py_ssize_t offset,
-                                                    Py_ssize_t size);
-
-PyAPI_FUNC(PyObject *) PyBuffer_FromMemory(void *ptr, Py_ssize_t size);
-PyAPI_FUNC(PyObject *) PyBuffer_FromReadWriteMemory(void *ptr, Py_ssize_t size);
-
-PyAPI_FUNC(PyObject *) PyBuffer_New(Py_ssize_t size);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_BUFFEROBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/bytearrayobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/bytearrayobject.h
deleted file mode 100644
index 6d5af4d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/bytearrayobject.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* ByteArray object interface */
-
-#ifndef Py_BYTEARRAYOBJECT_H
-#define Py_BYTEARRAYOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdarg.h>
-
-/* Type PyByteArrayObject represents a mutable array of bytes.
- * The Python API is that of a sequence;
- * the bytes are mapped to ints in [0, 256).
- * Bytes are not characters; they may be used to encode characters.
- * The only way to go between bytes and str/unicode is via encoding
- * and decoding.
- * For the convenience of C programmers, the bytes type is considered
- * to contain a char pointer, not an unsigned char pointer.
- */
-
-/* Object layout */
-typedef struct {
-    PyObject_VAR_HEAD
-    /* XXX(nnorwitz): should ob_exports be Py_ssize_t? */
-    int ob_exports; /* how many buffer exports */
-    Py_ssize_t ob_alloc; /* How many bytes allocated */
-    char *ob_bytes;
-} PyByteArrayObject;
-
-/* Type object */
-PyAPI_DATA(PyTypeObject) PyByteArray_Type;
-PyAPI_DATA(PyTypeObject) PyByteArrayIter_Type;
-
-/* Type check macros */
-#define PyByteArray_Check(self) PyObject_TypeCheck(self, &PyByteArray_Type)
-#define PyByteArray_CheckExact(self) (Py_TYPE(self) == &PyByteArray_Type)
-
-/* Direct API functions */
-PyAPI_FUNC(PyObject *) PyByteArray_FromObject(PyObject *);
-PyAPI_FUNC(PyObject *) PyByteArray_Concat(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyByteArray_FromStringAndSize(const char *, Py_ssize_t);
-PyAPI_FUNC(Py_ssize_t) PyByteArray_Size(PyObject *);
-PyAPI_FUNC(char *) PyByteArray_AsString(PyObject *);
-PyAPI_FUNC(int) PyByteArray_Resize(PyObject *, Py_ssize_t);
-
-/* Macros, trading safety for speed */
-#define PyByteArray_AS_STRING(self) \
-    (assert(PyByteArray_Check(self)), \
-     Py_SIZE(self) ? ((PyByteArrayObject *)(self))->ob_bytes : _PyByteArray_empty_string)
-#define PyByteArray_GET_SIZE(self)  (assert(PyByteArray_Check(self)),Py_SIZE(self))
-
-PyAPI_DATA(char) _PyByteArray_empty_string[];
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_BYTEARRAYOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/bytes_methods.h b/AppPkg/Applications/Python/Python-2.7.2/Include/bytes_methods.h
deleted file mode 100644
index 64ba0aa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/bytes_methods.h
+++ /dev/null
@@ -1,75 +0,0 @@
-#ifndef Py_BYTES_CTYPE_H
-#define Py_BYTES_CTYPE_H
-
-/*
- * The internal implementation behind PyString (bytes) and PyBytes (buffer)
- * methods of the given names, they operate on ASCII byte strings.
- */
-extern PyObject* _Py_bytes_isspace(const char *cptr, Py_ssize_t len);
-extern PyObject* _Py_bytes_isalpha(const char *cptr, Py_ssize_t len);
-extern PyObject* _Py_bytes_isalnum(const char *cptr, Py_ssize_t len);
-extern PyObject* _Py_bytes_isdigit(const char *cptr, Py_ssize_t len);
-extern PyObject* _Py_bytes_islower(const char *cptr, Py_ssize_t len);
-extern PyObject* _Py_bytes_isupper(const char *cptr, Py_ssize_t len);
-extern PyObject* _Py_bytes_istitle(const char *cptr, Py_ssize_t len);
-
-/* These store their len sized answer in the given preallocated *result arg. */
-extern void _Py_bytes_lower(char *result, const char *cptr, Py_ssize_t len);
-extern void _Py_bytes_upper(char *result, const char *cptr, Py_ssize_t len);
-extern void _Py_bytes_title(char *result, char *s, Py_ssize_t len);
-extern void _Py_bytes_capitalize(char *result, char *s, Py_ssize_t len);
-extern void _Py_bytes_swapcase(char *result, char *s, Py_ssize_t len);
-
-/* Shared __doc__ strings. */
-extern const char _Py_isspace__doc__[];
-extern const char _Py_isalpha__doc__[];
-extern const char _Py_isalnum__doc__[];
-extern const char _Py_isdigit__doc__[];
-extern const char _Py_islower__doc__[];
-extern const char _Py_isupper__doc__[];
-extern const char _Py_istitle__doc__[];
-extern const char _Py_lower__doc__[];
-extern const char _Py_upper__doc__[];
-extern const char _Py_title__doc__[];
-extern const char _Py_capitalize__doc__[];
-extern const char _Py_swapcase__doc__[];
-
-/* These are left in for backward compatibility and will be removed
-   in 2.8/3.2 */
-#define ISLOWER(c)  Py_ISLOWER(c)
-#define ISUPPER(c)  Py_ISUPPER(c)
-#define ISALPHA(c)  Py_ISALPHA(c)
-#define ISDIGIT(c)  Py_ISDIGIT(c)
-#define ISXDIGIT(c) Py_ISXDIGIT(c)
-#define ISALNUM(c)  Py_ISALNUM(c)
-#define ISSPACE(c)  Py_ISSPACE(c)
-
-#undef islower
-#define islower(c) undefined_islower(c)
-#undef isupper
-#define isupper(c) undefined_isupper(c)
-#undef isalpha
-#define isalpha(c) undefined_isalpha(c)
-#undef isdigit
-#define isdigit(c) undefined_isdigit(c)
-#undef isxdigit
-#define isxdigit(c) undefined_isxdigit(c)
-#undef isalnum
-#define isalnum(c) undefined_isalnum(c)
-#undef isspace
-#define isspace(c) undefined_isspace(c)
-
-/* These are left in for backward compatibility and will be removed
-   in 2.8/3.2 */
-#define TOLOWER(c) Py_TOLOWER(c)
-#define TOUPPER(c) Py_TOUPPER(c)
-
-#undef tolower
-#define tolower(c) undefined_tolower(c)
-#undef toupper
-#define toupper(c) undefined_toupper(c)
-
-/* this is needed because some docs are shared from the .o, not static */
-#define PyDoc_STRVAR_shared(name,str) const char name[] = PyDoc_STR(str)
-
-#endif /* !Py_BYTES_CTYPE_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/bytesobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/bytesobject.h
deleted file mode 100644
index d60bdc0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/bytesobject.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#define PyBytesObject PyStringObject
-#define PyBytes_Type PyString_Type
-
-#define PyBytes_Check PyString_Check
-#define PyBytes_CheckExact PyString_CheckExact 
-#define PyBytes_CHECK_INTERNED PyString_CHECK_INTERNED
-#define PyBytes_AS_STRING PyString_AS_STRING
-#define PyBytes_GET_SIZE PyString_GET_SIZE
-#define Py_TPFLAGS_BYTES_SUBCLASS Py_TPFLAGS_STRING_SUBCLASS
-
-#define PyBytes_FromStringAndSize PyString_FromStringAndSize
-#define PyBytes_FromString PyString_FromString
-#define PyBytes_FromFormatV PyString_FromFormatV
-#define PyBytes_FromFormat PyString_FromFormat
-#define PyBytes_Size PyString_Size
-#define PyBytes_AsString PyString_AsString
-#define PyBytes_Repr PyString_Repr
-#define PyBytes_Concat PyString_Concat
-#define PyBytes_ConcatAndDel PyString_ConcatAndDel
-#define _PyBytes_Resize _PyString_Resize
-#define _PyBytes_Eq _PyString_Eq
-#define PyBytes_Format PyString_Format
-#define _PyBytes_FormatLong _PyString_FormatLong
-#define PyBytes_DecodeEscape PyString_DecodeEscape
-#define _PyBytes_Join _PyString_Join
-#define PyBytes_AsStringAndSize PyString_AsStringAndSize
-#define _PyBytes_InsertThousandsGrouping _PyString_InsertThousandsGrouping
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/cStringIO.h b/AppPkg/Applications/Python/Python-2.7.2/Include/cStringIO.h
deleted file mode 100644
index d8fdde4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/cStringIO.h
+++ /dev/null
@@ -1,73 +0,0 @@
-#ifndef Py_CSTRINGIO_H
-#define Py_CSTRINGIO_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
-
-  This header provides access to cStringIO objects from C.
-  Functions are provided for calling cStringIO objects and
-  macros are provided for testing whether you have cStringIO 
-  objects.
-
-  Before calling any of the functions or macros, you must initialize
-  the routines with:
-
-    PycString_IMPORT
-
-  This would typically be done in your init function.
-
-*/
-
-#define PycStringIO_CAPSULE_NAME "cStringIO.cStringIO_CAPI"
-
-#define PycString_IMPORT \
-  PycStringIO = ((struct PycStringIO_CAPI*)PyCapsule_Import(\
-    PycStringIO_CAPSULE_NAME, 0))
-
-/* Basic functions to manipulate cStringIO objects from C */
-
-static struct PycStringIO_CAPI {
-  
- /* Read a string from an input object.  If the last argument
-    is -1, the remainder will be read.
-    */
-  int(*cread)(PyObject *, char **, Py_ssize_t);
-
- /* Read a line from an input object.  Returns the length of the read
-    line as an int and a pointer inside the object buffer as char** (so
-    the caller doesn't have to provide its own buffer as destination).
-    */
-  int(*creadline)(PyObject *, char **);
-
-  /* Write a string to an output object*/
-  int(*cwrite)(PyObject *, const char *, Py_ssize_t);
-
-  /* Get the output object as a Python string (returns new reference). */
-  PyObject *(*cgetvalue)(PyObject *);
-
-  /* Create a new output object */
-  PyObject *(*NewOutput)(int);
-
-  /* Create an input object from a Python string
-     (copies the Python string reference).
-     */
-  PyObject *(*NewInput)(PyObject *);
-
-  /* The Python types for cStringIO input and output objects.
-     Note that you can do input on an output object.
-     */
-  PyTypeObject *InputType, *OutputType;
-
-} *PycStringIO;
-
-/* These can be used to test if you have one */
-#define PycStringIO_InputCheck(O) \
-  (Py_TYPE(O)==PycStringIO->InputType)
-#define PycStringIO_OutputCheck(O) \
-  (Py_TYPE(O)==PycStringIO->OutputType)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_CSTRINGIO_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/cellobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/cellobject.h
deleted file mode 100644
index 8d27f35..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/cellobject.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Cell object interface */
-
-#ifndef Py_CELLOBJECT_H
-#define Py_CELLOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-	PyObject_HEAD
-	PyObject *ob_ref;	/* Content of the cell or NULL when empty */
-} PyCellObject;
-
-PyAPI_DATA(PyTypeObject) PyCell_Type;
-
-#define PyCell_Check(op) (Py_TYPE(op) == &PyCell_Type)
-
-PyAPI_FUNC(PyObject *) PyCell_New(PyObject *);
-PyAPI_FUNC(PyObject *) PyCell_Get(PyObject *);
-PyAPI_FUNC(int) PyCell_Set(PyObject *, PyObject *);
-
-#define PyCell_GET(op) (((PyCellObject *)(op))->ob_ref)
-#define PyCell_SET(op, v) (((PyCellObject *)(op))->ob_ref = v)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_TUPLEOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/ceval.h b/AppPkg/Applications/Python/Python-2.7.2/Include/ceval.h
deleted file mode 100644
index 58b2ded..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/ceval.h
+++ /dev/null
@@ -1,153 +0,0 @@
-#ifndef Py_CEVAL_H
-#define Py_CEVAL_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Interface to random parts in ceval.c */
-
-PyAPI_FUNC(PyObject *) PyEval_CallObjectWithKeywords(
-    PyObject *, PyObject *, PyObject *);
-
-/* Inline this */
-#define PyEval_CallObject(func,arg) \
-    PyEval_CallObjectWithKeywords(func, arg, (PyObject *)NULL)
-
-PyAPI_FUNC(PyObject *) PyEval_CallFunction(PyObject *obj,
-                                           const char *format, ...);
-PyAPI_FUNC(PyObject *) PyEval_CallMethod(PyObject *obj,
-                                         const char *methodname,
-                                         const char *format, ...);
-
-PyAPI_FUNC(void) PyEval_SetProfile(Py_tracefunc, PyObject *);
-PyAPI_FUNC(void) PyEval_SetTrace(Py_tracefunc, PyObject *);
-
-struct _frame; /* Avoid including frameobject.h */
-
-PyAPI_FUNC(PyObject *) PyEval_GetBuiltins(void);
-PyAPI_FUNC(PyObject *) PyEval_GetGlobals(void);
-PyAPI_FUNC(PyObject *) PyEval_GetLocals(void);
-PyAPI_FUNC(struct _frame *) PyEval_GetFrame(void);
-PyAPI_FUNC(int) PyEval_GetRestricted(void);
-
-/* Look at the current frame's (if any) code's co_flags, and turn on
-   the corresponding compiler flags in cf->cf_flags.  Return 1 if any
-   flag was set, else return 0. */
-PyAPI_FUNC(int) PyEval_MergeCompilerFlags(PyCompilerFlags *cf);
-
-PyAPI_FUNC(int) Py_FlushLine(void);
-
-PyAPI_FUNC(int) Py_AddPendingCall(int (*func)(void *), void *arg);
-PyAPI_FUNC(int) Py_MakePendingCalls(void);
-
-/* Protection against deeply nested recursive calls */
-PyAPI_FUNC(void) Py_SetRecursionLimit(int);
-PyAPI_FUNC(int) Py_GetRecursionLimit(void);
-
-#define Py_EnterRecursiveCall(where)                                    \
-            (_Py_MakeRecCheck(PyThreadState_GET()->recursion_depth) &&  \
-             _Py_CheckRecursiveCall(where))
-#define Py_LeaveRecursiveCall()                         \
-            (--PyThreadState_GET()->recursion_depth)
-PyAPI_FUNC(int) _Py_CheckRecursiveCall(char *where);
-PyAPI_DATA(int) _Py_CheckRecursionLimit;
-#ifdef USE_STACKCHECK
-#  define _Py_MakeRecCheck(x)  (++(x) > --_Py_CheckRecursionLimit)
-#else
-#  define _Py_MakeRecCheck(x)  (++(x) > _Py_CheckRecursionLimit)
-#endif
-
-PyAPI_FUNC(const char *) PyEval_GetFuncName(PyObject *);
-PyAPI_FUNC(const char *) PyEval_GetFuncDesc(PyObject *);
-
-PyAPI_FUNC(PyObject *) PyEval_GetCallStats(PyObject *);
-PyAPI_FUNC(PyObject *) PyEval_EvalFrame(struct _frame *);
-PyAPI_FUNC(PyObject *) PyEval_EvalFrameEx(struct _frame *f, int exc);
-
-/* this used to be handled on a per-thread basis - now just two globals */
-PyAPI_DATA(volatile int) _Py_Ticker;
-PyAPI_DATA(int) _Py_CheckInterval;
-
-/* Interface for threads.
-
-   A module that plans to do a blocking system call (or something else
-   that lasts a long time and doesn't touch Python data) can allow other
-   threads to run as follows:
-
-    ...preparations here...
-    Py_BEGIN_ALLOW_THREADS
-    ...blocking system call here...
-    Py_END_ALLOW_THREADS
-    ...interpret result here...
-
-   The Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS pair expands to a
-   {}-surrounded block.
-   To leave the block in the middle (e.g., with return), you must insert
-   a line containing Py_BLOCK_THREADS before the return, e.g.
-
-    if (...premature_exit...) {
-        Py_BLOCK_THREADS
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-
-   An alternative is:
-
-    Py_BLOCK_THREADS
-    if (...premature_exit...) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    Py_UNBLOCK_THREADS
-
-   For convenience, that the value of 'errno' is restored across
-   Py_END_ALLOW_THREADS and Py_BLOCK_THREADS.
-
-   WARNING: NEVER NEST CALLS TO Py_BEGIN_ALLOW_THREADS AND
-   Py_END_ALLOW_THREADS!!!
-
-   The function PyEval_InitThreads() should be called only from
-   initthread() in "threadmodule.c".
-
-   Note that not yet all candidates have been converted to use this
-   mechanism!
-*/
-
-PyAPI_FUNC(PyThreadState *) PyEval_SaveThread(void);
-PyAPI_FUNC(void) PyEval_RestoreThread(PyThreadState *);
-
-#ifdef WITH_THREAD
-
-PyAPI_FUNC(int)  PyEval_ThreadsInitialized(void);
-PyAPI_FUNC(void) PyEval_InitThreads(void);
-PyAPI_FUNC(void) PyEval_AcquireLock(void);
-PyAPI_FUNC(void) PyEval_ReleaseLock(void);
-PyAPI_FUNC(void) PyEval_AcquireThread(PyThreadState *tstate);
-PyAPI_FUNC(void) PyEval_ReleaseThread(PyThreadState *tstate);
-PyAPI_FUNC(void) PyEval_ReInitThreads(void);
-
-#define Py_BEGIN_ALLOW_THREADS { \
-                        PyThreadState *_save; \
-                        _save = PyEval_SaveThread();
-#define Py_BLOCK_THREADS        PyEval_RestoreThread(_save);
-#define Py_UNBLOCK_THREADS      _save = PyEval_SaveThread();
-#define Py_END_ALLOW_THREADS    PyEval_RestoreThread(_save); \
-                 }
-
-#else /* !WITH_THREAD */
-
-#define Py_BEGIN_ALLOW_THREADS {
-#define Py_BLOCK_THREADS
-#define Py_UNBLOCK_THREADS
-#define Py_END_ALLOW_THREADS }
-
-#endif /* !WITH_THREAD */
-
-PyAPI_FUNC(int) _PyEval_SliceIndex(PyObject *, Py_ssize_t *);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_CEVAL_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/classobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/classobject.h
deleted file mode 100644
index 8e42e53..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/classobject.h
+++ /dev/null
@@ -1,83 +0,0 @@
-
-/* Class object interface */
-
-/* Revealing some structures (not for general use) */
-
-#ifndef Py_CLASSOBJECT_H
-#define Py_CLASSOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-    PyObject_HEAD
-    PyObject	*cl_bases;	/* A tuple of class objects */
-    PyObject	*cl_dict;	/* A dictionary */
-    PyObject	*cl_name;	/* A string */
-    /* The following three are functions or NULL */
-    PyObject	*cl_getattr;
-    PyObject	*cl_setattr;
-    PyObject	*cl_delattr;
-    PyObject    *cl_weakreflist; /* List of weak references */
-} PyClassObject;
-
-typedef struct {
-    PyObject_HEAD
-    PyClassObject *in_class;	/* The class object */
-    PyObject	  *in_dict;	/* A dictionary */
-    PyObject	  *in_weakreflist; /* List of weak references */
-} PyInstanceObject;
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *im_func;   /* The callable object implementing the method */
-    PyObject *im_self;   /* The instance it is bound to, or NULL */
-    PyObject *im_class;  /* The class that asked for the method */
-    PyObject *im_weakreflist; /* List of weak references */
-} PyMethodObject;
-
-PyAPI_DATA(PyTypeObject) PyClass_Type, PyInstance_Type, PyMethod_Type;
-
-#define PyClass_Check(op) ((op)->ob_type == &PyClass_Type)
-#define PyInstance_Check(op) ((op)->ob_type == &PyInstance_Type)
-#define PyMethod_Check(op) ((op)->ob_type == &PyMethod_Type)
-
-PyAPI_FUNC(PyObject *) PyClass_New(PyObject *, PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyInstance_New(PyObject *, PyObject *,
-                                            PyObject *);
-PyAPI_FUNC(PyObject *) PyInstance_NewRaw(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyMethod_New(PyObject *, PyObject *, PyObject *);
-
-PyAPI_FUNC(PyObject *) PyMethod_Function(PyObject *);
-PyAPI_FUNC(PyObject *) PyMethod_Self(PyObject *);
-PyAPI_FUNC(PyObject *) PyMethod_Class(PyObject *);
-
-/* Look up attribute with name (a string) on instance object pinst, using
- * only the instance and base class dicts.  If a descriptor is found in
- * a class dict, the descriptor is returned without calling it.
- * Returns NULL if nothing found, else a borrowed reference to the
- * value associated with name in the dict in which name was found.
- * The point of this routine is that it never calls arbitrary Python
- * code, so is always "safe":  all it does is dict lookups.  The function
- * can't fail, never sets an exception, and NULL is not an error (it just
- * means "not found").
- */
-PyAPI_FUNC(PyObject *) _PyInstance_Lookup(PyObject *pinst, PyObject *name);
-
-/* Macros for direct access to these values. Type checks are *not*
-   done, so use with care. */
-#define PyMethod_GET_FUNCTION(meth) \
-        (((PyMethodObject *)meth) -> im_func)
-#define PyMethod_GET_SELF(meth) \
-	(((PyMethodObject *)meth) -> im_self)
-#define PyMethod_GET_CLASS(meth) \
-	(((PyMethodObject *)meth) -> im_class)
-
-PyAPI_FUNC(int) PyClass_IsSubclass(PyObject *, PyObject *);
-
-PyAPI_FUNC(int) PyMethod_ClearFreeList(void);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_CLASSOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/cobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/cobject.h
deleted file mode 100644
index 11a8b43..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/cobject.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-   CObjects are marked Pending Deprecation as of Python 2.7.
-   The full schedule for 2.x is as follows:
-     - CObjects are marked Pending Deprecation in Python 2.7.
-     - CObjects will be marked Deprecated in Python 2.8
-       (if there is one).
-     - CObjects will be removed in Python 2.9 (if there is one).
-
-   Additionally, for the Python 3.x series:
-     - CObjects were marked Deprecated in Python 3.1.
-     - CObjects will be removed in Python 3.2.
-
-   You should switch all use of CObjects to capsules.  Capsules
-   have a safer and more consistent API.  For more information,
-   see Include/pycapsule.h, or read the "Capsules" topic in
-   the "Python/C API Reference Manual".
-
-   Python 2.7 no longer uses CObjects itself; all objects which
-   were formerly CObjects are now capsules.  Note that this change
-   does not by itself break binary compatibility with extensions
-   built for previous versions of Python--PyCObject_AsVoidPtr()
-   has been changed to also understand capsules.
-
-*/
-
-/* original file header comment follows: */
-
-/* C objects to be exported from one extension module to another.
- 
-   C objects are used for communication between extension modules.
-   They provide a way for an extension module to export a C interface
-   to other extension modules, so that extension modules can use the
-   Python import mechanism to link to one another.
-
-*/
-
-#ifndef Py_COBJECT_H
-#define Py_COBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_DATA(PyTypeObject) PyCObject_Type;
-
-#define PyCObject_Check(op) (Py_TYPE(op) == &PyCObject_Type)
-
-/* Create a PyCObject from a pointer to a C object and an optional
-   destructor function.  If the second argument is non-null, then it
-   will be called with the first argument if and when the PyCObject is
-   destroyed.
-
-*/
-PyAPI_FUNC(PyObject *) PyCObject_FromVoidPtr(
-	void *cobj, void (*destruct)(void*));
-
-
-/* Create a PyCObject from a pointer to a C object, a description object,
-   and an optional destructor function.  If the third argument is non-null,
-   then it will be called with the first and second arguments if and when 
-   the PyCObject is destroyed.
-*/
-PyAPI_FUNC(PyObject *) PyCObject_FromVoidPtrAndDesc(
-	void *cobj, void *desc, void (*destruct)(void*,void*));
-
-/* Retrieve a pointer to a C object from a PyCObject. */
-PyAPI_FUNC(void *) PyCObject_AsVoidPtr(PyObject *);
-
-/* Retrieve a pointer to a description object from a PyCObject. */
-PyAPI_FUNC(void *) PyCObject_GetDesc(PyObject *);
-
-/* Import a pointer to a C object from a module using a PyCObject. */
-PyAPI_FUNC(void *) PyCObject_Import(char *module_name, char *cobject_name);
-
-/* Modify a C object. Fails (==0) if object has a destructor. */
-PyAPI_FUNC(int) PyCObject_SetVoidPtr(PyObject *self, void *cobj);
-
-
-typedef struct {
-    PyObject_HEAD
-    void *cobject;
-    void *desc;
-    void (*destructor)(void *);
-} PyCObject;
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_COBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/code.h b/AppPkg/Applications/Python/Python-2.7.2/Include/code.h
deleted file mode 100644
index 4015159..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/code.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Definitions for bytecode */
-
-#ifndef Py_CODE_H
-#define Py_CODE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Bytecode object */
-typedef struct {
-    PyObject_HEAD
-    int co_argcount;		/* #arguments, except *args */
-    int co_nlocals;		/* #local variables */
-    int co_stacksize;		/* #entries needed for evaluation stack */
-    int co_flags;		/* CO_..., see below */
-    PyObject *co_code;		/* instruction opcodes */
-    PyObject *co_consts;	/* list (constants used) */
-    PyObject *co_names;		/* list of strings (names used) */
-    PyObject *co_varnames;	/* tuple of strings (local variable names) */
-    PyObject *co_freevars;	/* tuple of strings (free variable names) */
-    PyObject *co_cellvars;      /* tuple of strings (cell variable names) */
-    /* The rest doesn't count for hash/cmp */
-    PyObject *co_filename;	/* string (where it was loaded from) */
-    PyObject *co_name;		/* string (name, for reference) */
-    int co_firstlineno;		/* first source line number */
-    PyObject *co_lnotab;	/* string (encoding addr<->lineno mapping) See
-				   Objects/lnotab_notes.txt for details. */
-    void *co_zombieframe;     /* for optimization only (see frameobject.c) */
-    PyObject *co_weakreflist;   /* to support weakrefs to code objects */
-} PyCodeObject;
-
-/* Masks for co_flags above */
-#define CO_OPTIMIZED	0x0001
-#define CO_NEWLOCALS	0x0002
-#define CO_VARARGS	0x0004
-#define CO_VARKEYWORDS	0x0008
-#define CO_NESTED       0x0010
-#define CO_GENERATOR    0x0020
-/* The CO_NOFREE flag is set if there are no free or cell variables.
-   This information is redundant, but it allows a single flag test
-   to determine whether there is any extra work to be done when the
-   call frame it setup.
-*/
-#define CO_NOFREE       0x0040
-
-#if 0
-/* This is no longer used.  Stopped defining in 2.5, do not re-use. */
-#define CO_GENERATOR_ALLOWED    0x1000
-#endif
-#define CO_FUTURE_DIVISION    	0x2000
-#define CO_FUTURE_ABSOLUTE_IMPORT 0x4000 /* do absolute imports by default */
-#define CO_FUTURE_WITH_STATEMENT  0x8000
-#define CO_FUTURE_PRINT_FUNCTION  0x10000
-#define CO_FUTURE_UNICODE_LITERALS 0x20000
-
-/* This should be defined if a future statement modifies the syntax.
-   For example, when a keyword is added.
-*/
-#if 1
-#define PY_PARSER_REQUIRES_FUTURE_KEYWORD
-#endif
-
-#define CO_MAXBLOCKS 20 /* Max static block nesting within a function */
-
-PyAPI_DATA(PyTypeObject) PyCode_Type;
-
-#define PyCode_Check(op) (Py_TYPE(op) == &PyCode_Type)
-#define PyCode_GetNumFree(op) (PyTuple_GET_SIZE((op)->co_freevars))
-
-/* Public interface */
-PyAPI_FUNC(PyCodeObject *) PyCode_New(
-	int, int, int, int, PyObject *, PyObject *, PyObject *, PyObject *,
-	PyObject *, PyObject *, PyObject *, PyObject *, int, PyObject *); 
-        /* same as struct above */
-
-/* Creates a new empty code object with the specified source location. */
-PyAPI_FUNC(PyCodeObject *)
-PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno);
-
-/* Return the line number associated with the specified bytecode index
-   in this code object.  If you just need the line number of a frame,
-   use PyFrame_GetLineNumber() instead. */
-PyAPI_FUNC(int) PyCode_Addr2Line(PyCodeObject *, int);
-
-/* for internal use only */
-#define _PyCode_GETCODEPTR(co, pp) \
-	((*Py_TYPE((co)->co_code)->tp_as_buffer->bf_getreadbuffer) \
-	 ((co)->co_code, 0, (void **)(pp)))
-
-typedef struct _addr_pair {
-        int ap_lower;
-        int ap_upper;
-} PyAddrPair;
-
-/* Update *bounds to describe the first and one-past-the-last instructions in the
-   same line as lasti.  Return the number of that line.
-*/
-PyAPI_FUNC(int) _PyCode_CheckLineNumber(PyCodeObject* co,
-                                        int lasti, PyAddrPair *bounds);
-
-PyAPI_FUNC(PyObject*) PyCode_Optimize(PyObject *code, PyObject* consts,
-                                      PyObject *names, PyObject *lineno_obj);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_CODE_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/codecs.h b/AppPkg/Applications/Python/Python-2.7.2/Include/codecs.h
deleted file mode 100644
index 79c19a8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/codecs.h
+++ /dev/null
@@ -1,167 +0,0 @@
-#ifndef Py_CODECREGISTRY_H
-#define Py_CODECREGISTRY_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* ------------------------------------------------------------------------
-
-   Python Codec Registry and support functions
-
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-Copyright (c) Corporation for National Research Initiatives.
-
-   ------------------------------------------------------------------------ */
-
-/* Register a new codec search function.
-
-   As side effect, this tries to load the encodings package, if not
-   yet done, to make sure that it is always first in the list of
-   search functions.
-
-   The search_function's refcount is incremented by this function. */
-
-PyAPI_FUNC(int) PyCodec_Register(
-       PyObject *search_function
-       );
-
-/* Codec register lookup API.
-
-   Looks up the given encoding and returns a CodecInfo object with
-   function attributes which implement the different aspects of
-   processing the encoding.
-
-   The encoding string is looked up converted to all lower-case
-   characters. This makes encodings looked up through this mechanism
-   effectively case-insensitive.
-
-   If no codec is found, a KeyError is set and NULL returned.
-
-   As side effect, this tries to load the encodings package, if not
-   yet done. This is part of the lazy load strategy for the encodings
-   package.
-
- */
-
-PyAPI_FUNC(PyObject *) _PyCodec_Lookup(
-       const char *encoding
-       );
-
-/* Generic codec based encoding API.
-
-   object is passed through the encoder function found for the given
-   encoding using the error handling method defined by errors. errors
-   may be NULL to use the default method defined for the codec.
-   
-   Raises a LookupError in case no encoder can be found.
-
- */
-
-PyAPI_FUNC(PyObject *) PyCodec_Encode(
-       PyObject *object,
-       const char *encoding,
-       const char *errors
-       );
-
-/* Generic codec based decoding API.
-
-   object is passed through the decoder function found for the given
-   encoding using the error handling method defined by errors. errors
-   may be NULL to use the default method defined for the codec.
-   
-   Raises a LookupError in case no encoder can be found.
-
- */
-
-PyAPI_FUNC(PyObject *) PyCodec_Decode(
-       PyObject *object,
-       const char *encoding,
-       const char *errors
-       );
-
-/* --- Codec Lookup APIs -------------------------------------------------- 
-
-   All APIs return a codec object with incremented refcount and are
-   based on _PyCodec_Lookup().  The same comments w/r to the encoding
-   name also apply to these APIs.
-
-*/
-
-/* Get an encoder function for the given encoding. */
-
-PyAPI_FUNC(PyObject *) PyCodec_Encoder(
-       const char *encoding
-       );
-
-/* Get a decoder function for the given encoding. */
-
-PyAPI_FUNC(PyObject *) PyCodec_Decoder(
-       const char *encoding
-       );
-
-/* Get a IncrementalEncoder object for the given encoding. */
-
-PyAPI_FUNC(PyObject *) PyCodec_IncrementalEncoder(
-       const char *encoding,
-       const char *errors
-       );
-
-/* Get a IncrementalDecoder object function for the given encoding. */
-
-PyAPI_FUNC(PyObject *) PyCodec_IncrementalDecoder(
-       const char *encoding,
-       const char *errors
-       );
-
-/* Get a StreamReader factory function for the given encoding. */
-
-PyAPI_FUNC(PyObject *) PyCodec_StreamReader(
-       const char *encoding,
-       PyObject *stream,
-       const char *errors
-       );
-
-/* Get a StreamWriter factory function for the given encoding. */
-
-PyAPI_FUNC(PyObject *) PyCodec_StreamWriter(
-       const char *encoding,
-       PyObject *stream,
-       const char *errors
-       );
-
-/* Unicode encoding error handling callback registry API */
-
-/* Register the error handling callback function error under the given
-   name. This function will be called by the codec when it encounters
-   unencodable characters/undecodable bytes and doesn't know the
-   callback name, when name is specified as the error parameter
-   in the call to the encode/decode function.
-   Return 0 on success, -1 on error */
-PyAPI_FUNC(int) PyCodec_RegisterError(const char *name, PyObject *error);
-
-/* Lookup the error handling callback function registered under the given
-   name. As a special case NULL can be passed, in which case
-   the error handling callback for "strict" will be returned. */
-PyAPI_FUNC(PyObject *) PyCodec_LookupError(const char *name);
-
-/* raise exc as an exception */
-PyAPI_FUNC(PyObject *) PyCodec_StrictErrors(PyObject *exc);
-
-/* ignore the unicode error, skipping the faulty input */
-PyAPI_FUNC(PyObject *) PyCodec_IgnoreErrors(PyObject *exc);
-
-/* replace the unicode encode error with ? or U+FFFD */
-PyAPI_FUNC(PyObject *) PyCodec_ReplaceErrors(PyObject *exc);
-
-/* replace the unicode encode error with XML character references */
-PyAPI_FUNC(PyObject *) PyCodec_XMLCharRefReplaceErrors(PyObject *exc);
-
-/* replace the unicode encode error with backslash escapes (\x, \u and \U) */
-PyAPI_FUNC(PyObject *) PyCodec_BackslashReplaceErrors(PyObject *exc);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_CODECREGISTRY_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/compile.h b/AppPkg/Applications/Python/Python-2.7.2/Include/compile.h
deleted file mode 100644
index 22cb75f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/compile.h
+++ /dev/null
@@ -1,40 +0,0 @@
-
-#ifndef Py_COMPILE_H
-#define Py_COMPILE_H
-
-#include "code.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Public interface */
-struct _node; /* Declare the existence of this type */
-PyAPI_FUNC(PyCodeObject *) PyNode_Compile(struct _node *, const char *);
-
-/* Future feature support */
-
-typedef struct {
-    int ff_features;      /* flags set by future statements */
-    int ff_lineno;        /* line number of last future statement */
-} PyFutureFeatures;
-
-#define FUTURE_NESTED_SCOPES "nested_scopes"
-#define FUTURE_GENERATORS "generators"
-#define FUTURE_DIVISION "division"
-#define FUTURE_ABSOLUTE_IMPORT "absolute_import"
-#define FUTURE_WITH_STATEMENT "with_statement"
-#define FUTURE_PRINT_FUNCTION "print_function"
-#define FUTURE_UNICODE_LITERALS "unicode_literals"
-
-
-struct _mod; /* Declare the existence of this type */
-PyAPI_FUNC(PyCodeObject *) PyAST_Compile(struct _mod *, const char *,
-					PyCompilerFlags *, PyArena *);
-PyAPI_FUNC(PyFutureFeatures *) PyFuture_FromAST(struct _mod *, const char *);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_COMPILE_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/complexobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/complexobject.h
deleted file mode 100644
index 747048a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/complexobject.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Complex number structure */
-
-#ifndef Py_COMPLEXOBJECT_H
-#define Py_COMPLEXOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-    double real;
-    double imag;
-} Py_complex;
-
-/* Operations on complex numbers from complexmodule.c */
-
-#define c_sum _Py_c_sum
-#define c_diff _Py_c_diff
-#define c_neg _Py_c_neg
-#define c_prod _Py_c_prod
-#define c_quot _Py_c_quot
-#define c_pow _Py_c_pow
-#define c_abs _Py_c_abs
-
-PyAPI_FUNC(Py_complex) c_sum(Py_complex, Py_complex);
-PyAPI_FUNC(Py_complex) c_diff(Py_complex, Py_complex);
-PyAPI_FUNC(Py_complex) c_neg(Py_complex);
-PyAPI_FUNC(Py_complex) c_prod(Py_complex, Py_complex);
-PyAPI_FUNC(Py_complex) c_quot(Py_complex, Py_complex);
-PyAPI_FUNC(Py_complex) c_pow(Py_complex, Py_complex);
-PyAPI_FUNC(double) c_abs(Py_complex);
-
-
-/* Complex object interface */
-
-/*
-PyComplexObject represents a complex number with double-precision
-real and imaginary parts.
-*/
-
-typedef struct {
-    PyObject_HEAD
-    Py_complex cval;
-} PyComplexObject;     
-
-PyAPI_DATA(PyTypeObject) PyComplex_Type;
-
-#define PyComplex_Check(op) PyObject_TypeCheck(op, &PyComplex_Type)
-#define PyComplex_CheckExact(op) (Py_TYPE(op) == &PyComplex_Type)
-
-PyAPI_FUNC(PyObject *) PyComplex_FromCComplex(Py_complex);
-PyAPI_FUNC(PyObject *) PyComplex_FromDoubles(double real, double imag);
-
-PyAPI_FUNC(double) PyComplex_RealAsDouble(PyObject *op);
-PyAPI_FUNC(double) PyComplex_ImagAsDouble(PyObject *op);
-PyAPI_FUNC(Py_complex) PyComplex_AsCComplex(PyObject *op);
-
-/* Format the object based on the format_spec, as defined in PEP 3101
-   (Advanced String Formatting). */
-PyAPI_FUNC(PyObject *) _PyComplex_FormatAdvanced(PyObject *obj,
-                                                 char *format_spec,
-                                                 Py_ssize_t format_spec_len);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_COMPLEXOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/datetime.h b/AppPkg/Applications/Python/Python-2.7.2/Include/datetime.h
deleted file mode 100644
index afd8141..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/datetime.h
+++ /dev/null
@@ -1,239 +0,0 @@
-/*  datetime.h
- */
-
-#ifndef DATETIME_H
-#define DATETIME_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Fields are packed into successive bytes, each viewed as unsigned and
- * big-endian, unless otherwise noted:
- *
- * byte offset
- *  0           year     2 bytes, 1-9999
- *  2           month    1 byte, 1-12
- *  3           day      1 byte, 1-31
- *  4           hour     1 byte, 0-23
- *  5           minute   1 byte, 0-59
- *  6           second   1 byte, 0-59
- *  7           usecond  3 bytes, 0-999999
- * 10
- */
-
-/* # of bytes for year, month, and day. */
-#define _PyDateTime_DATE_DATASIZE 4
-
-/* # of bytes for hour, minute, second, and usecond. */
-#define _PyDateTime_TIME_DATASIZE 6
-
-/* # of bytes for year, month, day, hour, minute, second, and usecond. */
-#define _PyDateTime_DATETIME_DATASIZE 10
-
-
-typedef struct
-{
-    PyObject_HEAD
-    long hashcode;              /* -1 when unknown */
-    int days;                   /* -MAX_DELTA_DAYS <= days <= MAX_DELTA_DAYS */
-    int seconds;                /* 0 <= seconds < 24*3600 is invariant */
-    int microseconds;           /* 0 <= microseconds < 1000000 is invariant */
-} PyDateTime_Delta;
-
-typedef struct
-{
-    PyObject_HEAD               /* a pure abstract base clase */
-} PyDateTime_TZInfo;
-
-
-/* The datetime and time types have hashcodes, and an optional tzinfo member,
- * present if and only if hastzinfo is true.
- */
-#define _PyTZINFO_HEAD          \
-    PyObject_HEAD               \
-    long hashcode;              \
-    char hastzinfo;             /* boolean flag */
-
-/* No _PyDateTime_BaseTZInfo is allocated; it's just to have something
- * convenient to cast to, when getting at the hastzinfo member of objects
- * starting with _PyTZINFO_HEAD.
- */
-typedef struct
-{
-    _PyTZINFO_HEAD
-} _PyDateTime_BaseTZInfo;
-
-/* All time objects are of PyDateTime_TimeType, but that can be allocated
- * in two ways, with or without a tzinfo member.  Without is the same as
- * tzinfo == None, but consumes less memory.  _PyDateTime_BaseTime is an
- * internal struct used to allocate the right amount of space for the
- * "without" case.
- */
-#define _PyDateTime_TIMEHEAD    \
-    _PyTZINFO_HEAD              \
-    unsigned char data[_PyDateTime_TIME_DATASIZE];
-
-typedef struct
-{
-    _PyDateTime_TIMEHEAD
-} _PyDateTime_BaseTime;         /* hastzinfo false */
-
-typedef struct
-{
-    _PyDateTime_TIMEHEAD
-    PyObject *tzinfo;
-} PyDateTime_Time;              /* hastzinfo true */
-
-
-/* All datetime objects are of PyDateTime_DateTimeType, but that can be
- * allocated in two ways too, just like for time objects above.  In addition,
- * the plain date type is a base class for datetime, so it must also have
- * a hastzinfo member (although it's unused there).
- */
-typedef struct
-{
-    _PyTZINFO_HEAD
-    unsigned char data[_PyDateTime_DATE_DATASIZE];
-} PyDateTime_Date;
-
-#define _PyDateTime_DATETIMEHEAD        \
-    _PyTZINFO_HEAD                      \
-    unsigned char data[_PyDateTime_DATETIME_DATASIZE];
-
-typedef struct
-{
-    _PyDateTime_DATETIMEHEAD
-} _PyDateTime_BaseDateTime;     /* hastzinfo false */
-
-typedef struct
-{
-    _PyDateTime_DATETIMEHEAD
-    PyObject *tzinfo;
-} PyDateTime_DateTime;          /* hastzinfo true */
-
-
-/* Apply for date and datetime instances. */
-#define PyDateTime_GET_YEAR(o)     ((((PyDateTime_Date*)o)->data[0] << 8) | \
-                     ((PyDateTime_Date*)o)->data[1])
-#define PyDateTime_GET_MONTH(o)    (((PyDateTime_Date*)o)->data[2])
-#define PyDateTime_GET_DAY(o)      (((PyDateTime_Date*)o)->data[3])
-
-#define PyDateTime_DATE_GET_HOUR(o)        (((PyDateTime_DateTime*)o)->data[4])
-#define PyDateTime_DATE_GET_MINUTE(o)      (((PyDateTime_DateTime*)o)->data[5])
-#define PyDateTime_DATE_GET_SECOND(o)      (((PyDateTime_DateTime*)o)->data[6])
-#define PyDateTime_DATE_GET_MICROSECOND(o)              \
-    ((((PyDateTime_DateTime*)o)->data[7] << 16) |       \
-     (((PyDateTime_DateTime*)o)->data[8] << 8)  |       \
-      ((PyDateTime_DateTime*)o)->data[9])
-
-/* Apply for time instances. */
-#define PyDateTime_TIME_GET_HOUR(o)        (((PyDateTime_Time*)o)->data[0])
-#define PyDateTime_TIME_GET_MINUTE(o)      (((PyDateTime_Time*)o)->data[1])
-#define PyDateTime_TIME_GET_SECOND(o)      (((PyDateTime_Time*)o)->data[2])
-#define PyDateTime_TIME_GET_MICROSECOND(o)              \
-    ((((PyDateTime_Time*)o)->data[3] << 16) |           \
-     (((PyDateTime_Time*)o)->data[4] << 8)  |           \
-      ((PyDateTime_Time*)o)->data[5])
-
-
-/* Define structure for C API. */
-typedef struct {
-    /* type objects */
-    PyTypeObject *DateType;
-    PyTypeObject *DateTimeType;
-    PyTypeObject *TimeType;
-    PyTypeObject *DeltaType;
-    PyTypeObject *TZInfoType;
-
-    /* constructors */
-    PyObject *(*Date_FromDate)(int, int, int, PyTypeObject*);
-    PyObject *(*DateTime_FromDateAndTime)(int, int, int, int, int, int, int,
-        PyObject*, PyTypeObject*);
-    PyObject *(*Time_FromTime)(int, int, int, int, PyObject*, PyTypeObject*);
-    PyObject *(*Delta_FromDelta)(int, int, int, int, PyTypeObject*);
-
-    /* constructors for the DB API */
-    PyObject *(*DateTime_FromTimestamp)(PyObject*, PyObject*, PyObject*);
-    PyObject *(*Date_FromTimestamp)(PyObject*, PyObject*);
-
-} PyDateTime_CAPI;
-
-#define PyDateTime_CAPSULE_NAME "datetime.datetime_CAPI"
-
-
-/* "magic" constant used to partially protect against developer mistakes. */
-#define DATETIME_API_MAGIC 0x414548d5
-
-#ifdef Py_BUILD_CORE
-
-/* Macros for type checking when building the Python core. */
-#define PyDate_Check(op) PyObject_TypeCheck(op, &PyDateTime_DateType)
-#define PyDate_CheckExact(op) (Py_TYPE(op) == &PyDateTime_DateType)
-
-#define PyDateTime_Check(op) PyObject_TypeCheck(op, &PyDateTime_DateTimeType)
-#define PyDateTime_CheckExact(op) (Py_TYPE(op) == &PyDateTime_DateTimeType)
-
-#define PyTime_Check(op) PyObject_TypeCheck(op, &PyDateTime_TimeType)
-#define PyTime_CheckExact(op) (Py_TYPE(op) == &PyDateTime_TimeType)
-
-#define PyDelta_Check(op) PyObject_TypeCheck(op, &PyDateTime_DeltaType)
-#define PyDelta_CheckExact(op) (Py_TYPE(op) == &PyDateTime_DeltaType)
-
-#define PyTZInfo_Check(op) PyObject_TypeCheck(op, &PyDateTime_TZInfoType)
-#define PyTZInfo_CheckExact(op) (Py_TYPE(op) == &PyDateTime_TZInfoType)
-
-#else
-
-/* Define global variable for the C API and a macro for setting it. */
-static PyDateTime_CAPI *PyDateTimeAPI = NULL;
-
-#define PyDateTime_IMPORT \
-    PyDateTimeAPI = (PyDateTime_CAPI *)PyCapsule_Import(PyDateTime_CAPSULE_NAME, 0)
-
-/* Macros for type checking when not building the Python core. */
-#define PyDate_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DateType)
-#define PyDate_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->DateType)
-
-#define PyDateTime_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DateTimeType)
-#define PyDateTime_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->DateTimeType)
-
-#define PyTime_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->TimeType)
-#define PyTime_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->TimeType)
-
-#define PyDelta_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->DeltaType)
-#define PyDelta_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->DeltaType)
-
-#define PyTZInfo_Check(op) PyObject_TypeCheck(op, PyDateTimeAPI->TZInfoType)
-#define PyTZInfo_CheckExact(op) (Py_TYPE(op) == PyDateTimeAPI->TZInfoType)
-
-/* Macros for accessing constructors in a simplified fashion. */
-#define PyDate_FromDate(year, month, day) \
-    PyDateTimeAPI->Date_FromDate(year, month, day, PyDateTimeAPI->DateType)
-
-#define PyDateTime_FromDateAndTime(year, month, day, hour, min, sec, usec) \
-    PyDateTimeAPI->DateTime_FromDateAndTime(year, month, day, hour, \
-        min, sec, usec, Py_None, PyDateTimeAPI->DateTimeType)
-
-#define PyTime_FromTime(hour, minute, second, usecond) \
-    PyDateTimeAPI->Time_FromTime(hour, minute, second, usecond, \
-        Py_None, PyDateTimeAPI->TimeType)
-
-#define PyDelta_FromDSU(days, seconds, useconds) \
-    PyDateTimeAPI->Delta_FromDelta(days, seconds, useconds, 1, \
-        PyDateTimeAPI->DeltaType)
-
-/* Macros supporting the DB API. */
-#define PyDateTime_FromTimestamp(args) \
-    PyDateTimeAPI->DateTime_FromTimestamp( \
-        (PyObject*) (PyDateTimeAPI->DateTimeType), args, NULL)
-
-#define PyDate_FromTimestamp(args) \
-    PyDateTimeAPI->Date_FromTimestamp( \
-        (PyObject*) (PyDateTimeAPI->DateType), args)
-
-#endif  /* Py_BUILD_CORE */
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/descrobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/descrobject.h
deleted file mode 100644
index 5a9c3e1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/descrobject.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* Descriptors */
-#ifndef Py_DESCROBJECT_H
-#define Py_DESCROBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef PyObject *(*getter)(PyObject *, void *);
-typedef int (*setter)(PyObject *, PyObject *, void *);
-
-typedef struct PyGetSetDef {
-    char *name;
-    getter get;
-    setter set;
-    char *doc;
-    void *closure;
-} PyGetSetDef;
-
-typedef PyObject *(*wrapperfunc)(PyObject *self, PyObject *args,
-                                 void *wrapped);
-
-typedef PyObject *(*wrapperfunc_kwds)(PyObject *self, PyObject *args,
-                                      void *wrapped, PyObject *kwds);
-
-struct wrapperbase {
-    char *name;
-    int offset;
-    void *function;
-    wrapperfunc wrapper;
-    char *doc;
-    int flags;
-    PyObject *name_strobj;
-};
-
-/* Flags for above struct */
-#define PyWrapperFlag_KEYWORDS 1 /* wrapper function takes keyword args */
-
-/* Various kinds of descriptor objects */
-
-#define PyDescr_COMMON \
-    PyObject_HEAD \
-    PyTypeObject *d_type; \
-    PyObject *d_name
-
-typedef struct {
-    PyDescr_COMMON;
-} PyDescrObject;
-
-typedef struct {
-    PyDescr_COMMON;
-    PyMethodDef *d_method;
-} PyMethodDescrObject;
-
-typedef struct {
-    PyDescr_COMMON;
-    struct PyMemberDef *d_member;
-} PyMemberDescrObject;
-
-typedef struct {
-    PyDescr_COMMON;
-    PyGetSetDef *d_getset;
-} PyGetSetDescrObject;
-
-typedef struct {
-    PyDescr_COMMON;
-    struct wrapperbase *d_base;
-    void *d_wrapped; /* This can be any function pointer */
-} PyWrapperDescrObject;
-
-PyAPI_DATA(PyTypeObject) PyWrapperDescr_Type;
-PyAPI_DATA(PyTypeObject) PyDictProxy_Type;
-PyAPI_DATA(PyTypeObject) PyGetSetDescr_Type;
-PyAPI_DATA(PyTypeObject) PyMemberDescr_Type;
-
-PyAPI_FUNC(PyObject *) PyDescr_NewMethod(PyTypeObject *, PyMethodDef *);
-PyAPI_FUNC(PyObject *) PyDescr_NewClassMethod(PyTypeObject *, PyMethodDef *);
-PyAPI_FUNC(PyObject *) PyDescr_NewMember(PyTypeObject *,
-                                               struct PyMemberDef *);
-PyAPI_FUNC(PyObject *) PyDescr_NewGetSet(PyTypeObject *,
-                                               struct PyGetSetDef *);
-PyAPI_FUNC(PyObject *) PyDescr_NewWrapper(PyTypeObject *,
-                                                struct wrapperbase *, void *);
-#define PyDescr_IsData(d) (Py_TYPE(d)->tp_descr_set != NULL)
-
-PyAPI_FUNC(PyObject *) PyDictProxy_New(PyObject *);
-PyAPI_FUNC(PyObject *) PyWrapper_New(PyObject *, PyObject *);
-
-
-PyAPI_DATA(PyTypeObject) PyProperty_Type;
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_DESCROBJECT_H */
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/dictobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/dictobject.h
deleted file mode 100644
index 0f3ab17..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/dictobject.h
+++ /dev/null
@@ -1,156 +0,0 @@
-#ifndef Py_DICTOBJECT_H
-#define Py_DICTOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Dictionary object type -- mapping from hashable object to object */
-
-/* The distribution includes a separate file, Objects/dictnotes.txt,
-   describing explorations into dictionary design and optimization.
-   It covers typical dictionary use patterns, the parameters for
-   tuning dictionaries, and several ideas for possible optimizations.
-*/
-
-/*
-There are three kinds of slots in the table:
-
-1. Unused.  me_key == me_value == NULL
-   Does not hold an active (key, value) pair now and never did.  Unused can
-   transition to Active upon key insertion.  This is the only case in which
-   me_key is NULL, and is each slot's initial state.
-
-2. Active.  me_key != NULL and me_key != dummy and me_value != NULL
-   Holds an active (key, value) pair.  Active can transition to Dummy upon
-   key deletion.  This is the only case in which me_value != NULL.
-
-3. Dummy.  me_key == dummy and me_value == NULL
-   Previously held an active (key, value) pair, but that was deleted and an
-   active pair has not yet overwritten the slot.  Dummy can transition to
-   Active upon key insertion.  Dummy slots cannot be made Unused again
-   (cannot have me_key set to NULL), else the probe sequence in case of
-   collision would have no way to know they were once active.
-
-Note: .popitem() abuses the me_hash field of an Unused or Dummy slot to
-hold a search finger.  The me_hash field of Unused or Dummy slots has no
-meaning otherwise.
-*/
-
-/* PyDict_MINSIZE is the minimum size of a dictionary.  This many slots are
- * allocated directly in the dict object (in the ma_smalltable member).
- * It must be a power of 2, and at least 4.  8 allows dicts with no more
- * than 5 active entries to live in ma_smalltable (and so avoid an
- * additional malloc); instrumentation suggested this suffices for the
- * majority of dicts (consisting mostly of usually-small instance dicts and
- * usually-small dicts created to pass keyword arguments).
- */
-#define PyDict_MINSIZE 8
-
-typedef struct {
-    /* Cached hash code of me_key.  Note that hash codes are C longs.
-     * We have to use Py_ssize_t instead because dict_popitem() abuses
-     * me_hash to hold a search finger.
-     */
-    Py_ssize_t me_hash;
-    PyObject *me_key;
-    PyObject *me_value;
-} PyDictEntry;
-
-/*
-To ensure the lookup algorithm terminates, there must be at least one Unused
-slot (NULL key) in the table.
-The value ma_fill is the number of non-NULL keys (sum of Active and Dummy);
-ma_used is the number of non-NULL, non-dummy keys (== the number of non-NULL
-values == the number of Active items).
-To avoid slowing down lookups on a near-full table, we resize the table when
-it's two-thirds full.
-*/
-typedef struct _dictobject PyDictObject;
-struct _dictobject {
-    PyObject_HEAD
-    Py_ssize_t ma_fill;  /* # Active + # Dummy */
-    Py_ssize_t ma_used;  /* # Active */
-
-    /* The table contains ma_mask + 1 slots, and that's a power of 2.
-     * We store the mask instead of the size because the mask is more
-     * frequently needed.
-     */
-    Py_ssize_t ma_mask;
-
-    /* ma_table points to ma_smalltable for small tables, else to
-     * additional malloc'ed memory.  ma_table is never NULL!  This rule
-     * saves repeated runtime null-tests in the workhorse getitem and
-     * setitem calls.
-     */
-    PyDictEntry *ma_table;
-    PyDictEntry *(*ma_lookup)(PyDictObject *mp, PyObject *key, long hash);
-    PyDictEntry ma_smalltable[PyDict_MINSIZE];
-};
-
-PyAPI_DATA(PyTypeObject) PyDict_Type;
-PyAPI_DATA(PyTypeObject) PyDictIterKey_Type;
-PyAPI_DATA(PyTypeObject) PyDictIterValue_Type;
-PyAPI_DATA(PyTypeObject) PyDictIterItem_Type;
-PyAPI_DATA(PyTypeObject) PyDictKeys_Type;
-PyAPI_DATA(PyTypeObject) PyDictItems_Type;
-PyAPI_DATA(PyTypeObject) PyDictValues_Type;
-
-#define PyDict_Check(op) \
-                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_DICT_SUBCLASS)
-#define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type)
-#define PyDictKeys_Check(op) (Py_TYPE(op) == &PyDictKeys_Type)
-#define PyDictItems_Check(op) (Py_TYPE(op) == &PyDictItems_Type)
-#define PyDictValues_Check(op) (Py_TYPE(op) == &PyDictValues_Type)
-/* This excludes Values, since they are not sets. */
-# define PyDictViewSet_Check(op) \
-    (PyDictKeys_Check(op) || PyDictItems_Check(op))
-
-PyAPI_FUNC(PyObject *) PyDict_New(void);
-PyAPI_FUNC(PyObject *) PyDict_GetItem(PyObject *mp, PyObject *key);
-PyAPI_FUNC(int) PyDict_SetItem(PyObject *mp, PyObject *key, PyObject *item);
-PyAPI_FUNC(int) PyDict_DelItem(PyObject *mp, PyObject *key);
-PyAPI_FUNC(void) PyDict_Clear(PyObject *mp);
-PyAPI_FUNC(int) PyDict_Next(
-    PyObject *mp, Py_ssize_t *pos, PyObject **key, PyObject **value);
-PyAPI_FUNC(int) _PyDict_Next(
-    PyObject *mp, Py_ssize_t *pos, PyObject **key, PyObject **value, long *hash);
-PyAPI_FUNC(PyObject *) PyDict_Keys(PyObject *mp);
-PyAPI_FUNC(PyObject *) PyDict_Values(PyObject *mp);
-PyAPI_FUNC(PyObject *) PyDict_Items(PyObject *mp);
-PyAPI_FUNC(Py_ssize_t) PyDict_Size(PyObject *mp);
-PyAPI_FUNC(PyObject *) PyDict_Copy(PyObject *mp);
-PyAPI_FUNC(int) PyDict_Contains(PyObject *mp, PyObject *key);
-PyAPI_FUNC(int) _PyDict_Contains(PyObject *mp, PyObject *key, long hash);
-PyAPI_FUNC(PyObject *) _PyDict_NewPresized(Py_ssize_t minused);
-PyAPI_FUNC(void) _PyDict_MaybeUntrack(PyObject *mp);
-
-/* PyDict_Update(mp, other) is equivalent to PyDict_Merge(mp, other, 1). */
-PyAPI_FUNC(int) PyDict_Update(PyObject *mp, PyObject *other);
-
-/* PyDict_Merge updates/merges from a mapping object (an object that
-   supports PyMapping_Keys() and PyObject_GetItem()).  If override is true,
-   the last occurrence of a key wins, else the first.  The Python
-   dict.update(other) is equivalent to PyDict_Merge(dict, other, 1).
-*/
-PyAPI_FUNC(int) PyDict_Merge(PyObject *mp,
-                                   PyObject *other,
-                                   int override);
-
-/* PyDict_MergeFromSeq2 updates/merges from an iterable object producing
-   iterable objects of length 2.  If override is true, the last occurrence
-   of a key wins, else the first.  The Python dict constructor dict(seq2)
-   is equivalent to dict={}; PyDict_MergeFromSeq(dict, seq2, 1).
-*/
-PyAPI_FUNC(int) PyDict_MergeFromSeq2(PyObject *d,
-                                           PyObject *seq2,
-                                           int override);
-
-PyAPI_FUNC(PyObject *) PyDict_GetItemString(PyObject *dp, const char *key);
-PyAPI_FUNC(int) PyDict_SetItemString(PyObject *dp, const char *key, PyObject *item);
-PyAPI_FUNC(int) PyDict_DelItemString(PyObject *dp, const char *key);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_DICTOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/dtoa.h b/AppPkg/Applications/Python/Python-2.7.2/Include/dtoa.h
deleted file mode 100644
index c7e80bc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/dtoa.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef PY_NO_SHORT_FLOAT_REPR
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(double) _Py_dg_strtod(const char *str, char **ptr);
-PyAPI_FUNC(char *) _Py_dg_dtoa(double d, int mode, int ndigits,
-                        int *decpt, int *sign, char **rve);
-PyAPI_FUNC(void) _Py_dg_freedtoa(char *s);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/enumobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/enumobject.h
deleted file mode 100644
index 42dc2d2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/enumobject.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef Py_ENUMOBJECT_H
-#define Py_ENUMOBJECT_H
-
-/* Enumerate Object */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_DATA(PyTypeObject) PyEnum_Type;
-PyAPI_DATA(PyTypeObject) PyReversed_Type;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_ENUMOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/errcode.h b/AppPkg/Applications/Python/Python-2.7.2/Include/errcode.h
deleted file mode 100644
index 295295c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/errcode.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef Py_ERRCODE_H
-#define Py_ERRCODE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Error codes passed around between file input, tokenizer, parser and
-   interpreter.  This is necessary so we can turn them into Python
-   exceptions at a higher level.  Note that some errors have a
-   slightly different meaning when passed from the tokenizer to the
-   parser than when passed from the parser to the interpreter; e.g.
-   the parser only returns E_EOF when it hits EOF immediately, and it
-   never returns E_OK. */
-
-#define E_OK		10	/* No error */
-#define E_EOF		11	/* End Of File */
-#define E_INTR		12	/* Interrupted */
-#define E_TOKEN		13	/* Bad token */
-#define E_SYNTAX	14	/* Syntax error */
-#define E_NOMEM		15	/* Ran out of memory */
-#define E_DONE		16	/* Parsing complete */
-#define E_ERROR		17	/* Execution error */
-#define E_TABSPACE	18	/* Inconsistent mixing of tabs and spaces */
-#define E_OVERFLOW      19	/* Node had too many children */
-#define E_TOODEEP	20	/* Too many indentation levels */
-#define E_DEDENT	21	/* No matching outer block for dedent */
-#define E_DECODE	22	/* Error in decoding into Unicode */
-#define E_EOFS		23	/* EOF in triple-quoted string */
-#define E_EOLS		24	/* EOL in single-quoted string */
-#define E_LINECONT	25	/* Unexpected characters after a line continuation */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_ERRCODE_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/eval.h b/AppPkg/Applications/Python/Python-2.7.2/Include/eval.h
deleted file mode 100644
index fe1d47a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/eval.h
+++ /dev/null
@@ -1,25 +0,0 @@
-
-/* Interface to execute compiled code */
-
-#ifndef Py_EVAL_H
-#define Py_EVAL_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(PyObject *) PyEval_EvalCode(PyCodeObject *, PyObject *, PyObject *);
-
-PyAPI_FUNC(PyObject *) PyEval_EvalCodeEx(PyCodeObject *co,
-					PyObject *globals,
-					PyObject *locals,
-					PyObject **args, int argc,
-					PyObject **kwds, int kwdc,
-					PyObject **defs, int defc,
-					PyObject *closure);
-
-PyAPI_FUNC(PyObject *) _PyEval_CallTracing(PyObject *func, PyObject *args);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_EVAL_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/fileobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/fileobject.h
deleted file mode 100644
index f1fdde2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/fileobject.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/** @file
-    File object interface.
-
-    Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-
-/* File object interface */
-
-#ifndef Py_FILEOBJECT_H
-#define Py_FILEOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-    PyObject_HEAD
-    FILE *f_fp;
-    PyObject *f_name;
-    PyObject *f_mode;
-    int (*f_close)(FILE *);
-    int f_softspace;            /* Flag used by 'print' command */
-    int f_binary;               /* Flag which indicates whether the file is
-                               open in binary (1) or text (0) mode */
-    char* f_buf;                /* Allocated readahead buffer */
-    char* f_bufend;             /* Points after last occupied position */
-    char* f_bufptr;             /* Current buffer position */
-    char *f_setbuf;             /* Buffer for setbuf(3) and setvbuf(3) */
-    int f_univ_newline;         /* Handle any newline convention */
-    int f_newlinetypes;         /* Types of newlines seen */
-    int f_skipnextlf;           /* Skip next \n */
-    PyObject *f_encoding;
-    PyObject *f_errors;
-    PyObject *weakreflist; /* List of weak references */
-    int unlocked_count;         /* Num. currently running sections of code
-                               using f_fp with the GIL released. */
-    int readable;
-    int writable;
-} PyFileObject;
-
-PyAPI_DATA(PyTypeObject) PyFile_Type;
-
-#define PyFile_Check(op) PyObject_TypeCheck(op, &PyFile_Type)
-#define PyFile_CheckExact(op) (Py_TYPE(op) == &PyFile_Type)
-
-PyAPI_FUNC(PyObject *) PyFile_FromString(char *, char *);
-PyAPI_FUNC(void) PyFile_SetBufSize(PyObject *, int);
-PyAPI_FUNC(int) PyFile_SetEncoding(PyObject *, const char *);
-PyAPI_FUNC(int) PyFile_SetEncodingAndErrors(PyObject *, const char *, char *errors);
-PyAPI_FUNC(PyObject *) PyFile_FromFile(FILE *, char *, char *,
-                                             int (*)(FILE *));
-PyAPI_FUNC(FILE *) PyFile_AsFile(PyObject *);
-PyAPI_FUNC(void) PyFile_IncUseCount(PyFileObject *);
-PyAPI_FUNC(void) PyFile_DecUseCount(PyFileObject *);
-PyAPI_FUNC(PyObject *) PyFile_Name(PyObject *);
-PyAPI_FUNC(PyObject *) PyFile_GetLine(PyObject *, int);
-PyAPI_FUNC(int) PyFile_WriteObject(PyObject *, PyObject *, int);
-PyAPI_FUNC(int) PyFile_SoftSpace(PyObject *, int);
-PyAPI_FUNC(int) PyFile_WriteString(const char *, PyObject *);
-PyAPI_FUNC(int) PyObject_AsFileDescriptor(PyObject *);
-
-/* The default encoding used by the platform file system APIs
-   If non-NULL, this is different than the default encoding for strings
-*/
-PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding;
-
-/* Routines to replace fread() and fgets() which accept any of \r, \n
-   or \r\n as line terminators.
-*/
-#define PY_STDIOTEXTMODE "b"
-char *Py_UniversalNewlineFgets(char *, int, FILE*, PyObject *);
-size_t Py_UniversalNewlineFread(char *, size_t, FILE *, PyObject *);
-
-/* A routine to do sanity checking on the file mode string.  returns
-   non-zero on if an exception occurred
-*/
-int _PyFile_SanitizeMode(char *mode);
-
-//#if defined _MSC_VER && _MSC_VER >= 1400
-/* A routine to check if a file descriptor is valid on Windows.  Returns 0
- * and sets errno to EBADF if it isn't.  This is to avoid Assertions
- * from various functions in the Windows CRT beginning with
- * Visual Studio 2005
- */
-//int _PyVerify_fd(int fd);
-//#elif defined _MSC_VER && _MSC_VER >= 1200
-/* fdopen doesn't set errno EBADF and crashes for large fd on debug build */
-//#define _PyVerify_fd(fd) (_get_osfhandle(fd) >= 0)
-//#else
-#define _PyVerify_fd(A) (1) /* dummy */
-//#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_FILEOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/floatobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/floatobject.h
deleted file mode 100644
index 92c69fe..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/floatobject.h
+++ /dev/null
@@ -1,140 +0,0 @@
-
-/* Float object interface */
-
-/*
-PyFloatObject represents a (double precision) floating point number.
-*/
-
-#ifndef Py_FLOATOBJECT_H
-#define Py_FLOATOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-    PyObject_HEAD
-    double ob_fval;
-} PyFloatObject;
-
-PyAPI_DATA(PyTypeObject) PyFloat_Type;
-
-#define PyFloat_Check(op) PyObject_TypeCheck(op, &PyFloat_Type)
-#define PyFloat_CheckExact(op) (Py_TYPE(op) == &PyFloat_Type)
-
-/* The str() precision PyFloat_STR_PRECISION is chosen so that in most cases,
-   the rounding noise created by various operations is suppressed, while
-   giving plenty of precision for practical use. */
-
-#define PyFloat_STR_PRECISION 12
-
-#ifdef Py_NAN
-#define Py_RETURN_NAN return PyFloat_FromDouble(Py_NAN)
-#endif
-
-#define Py_RETURN_INF(sign) do					\
-	if (copysign(1., sign) == 1.) {				\
-		return PyFloat_FromDouble(Py_HUGE_VAL);	\
-	} else {						\
-		return PyFloat_FromDouble(-Py_HUGE_VAL);	\
-	} while(0)
-
-PyAPI_FUNC(double) PyFloat_GetMax(void);
-PyAPI_FUNC(double) PyFloat_GetMin(void);
-PyAPI_FUNC(PyObject *) PyFloat_GetInfo(void);
-
-/* Return Python float from string PyObject.  Second argument ignored on
-   input, and, if non-NULL, NULL is stored into *junk (this tried to serve a
-   purpose once but can't be made to work as intended). */
-PyAPI_FUNC(PyObject *) PyFloat_FromString(PyObject*, char** junk);
-
-/* Return Python float from C double. */
-PyAPI_FUNC(PyObject *) PyFloat_FromDouble(double);
-
-/* Extract C double from Python float.  The macro version trades safety for
-   speed. */
-PyAPI_FUNC(double) PyFloat_AsDouble(PyObject *);
-#define PyFloat_AS_DOUBLE(op) (((PyFloatObject *)(op))->ob_fval)
-
-/* Write repr(v) into the char buffer argument, followed by null byte.  The
-   buffer must be "big enough"; >= 100 is very safe.
-   PyFloat_AsReprString(buf, x) strives to print enough digits so that
-   PyFloat_FromString(buf) then reproduces x exactly. */
-PyAPI_FUNC(void) PyFloat_AsReprString(char*, PyFloatObject *v);
-
-/* Write str(v) into the char buffer argument, followed by null byte.  The
-   buffer must be "big enough"; >= 100 is very safe.  Note that it's
-   unusual to be able to get back the float you started with from
-   PyFloat_AsString's result -- use PyFloat_AsReprString() if you want to
-   preserve precision across conversions. */
-PyAPI_FUNC(void) PyFloat_AsString(char*, PyFloatObject *v);
-
-/* _PyFloat_{Pack,Unpack}{4,8}
- *
- * The struct and pickle (at least) modules need an efficient platform-
- * independent way to store floating-point values as byte strings.
- * The Pack routines produce a string from a C double, and the Unpack
- * routines produce a C double from such a string.  The suffix (4 or 8)
- * specifies the number of bytes in the string.
- *
- * On platforms that appear to use (see _PyFloat_Init()) IEEE-754 formats
- * these functions work by copying bits.  On other platforms, the formats the
- * 4- byte format is identical to the IEEE-754 single precision format, and
- * the 8-byte format to the IEEE-754 double precision format, although the
- * packing of INFs and NaNs (if such things exist on the platform) isn't
- * handled correctly, and attempting to unpack a string containing an IEEE
- * INF or NaN will raise an exception.
- *
- * On non-IEEE platforms with more precision, or larger dynamic range, than
- * 754 supports, not all values can be packed; on non-IEEE platforms with less
- * precision, or smaller dynamic range, not all values can be unpacked.  What
- * happens in such cases is partly accidental (alas).
- */
-
-/* The pack routines write 4 or 8 bytes, starting at p.  le is a bool
- * argument, true if you want the string in little-endian format (exponent
- * last, at p+3 or p+7), false if you want big-endian format (exponent
- * first, at p).
- * Return value:  0 if all is OK, -1 if error (and an exception is
- * set, most likely OverflowError).
- * There are two problems on non-IEEE platforms:
- * 1):  What this does is undefined if x is a NaN or infinity.
- * 2):  -0.0 and +0.0 produce the same string.
- */
-PyAPI_FUNC(int) _PyFloat_Pack4(double x, unsigned char *p, int le);
-PyAPI_FUNC(int) _PyFloat_Pack8(double x, unsigned char *p, int le);
-
-/* Used to get the important decimal digits of a double */
-PyAPI_FUNC(int) _PyFloat_Digits(char *buf, double v, int *signum);
-PyAPI_FUNC(void) _PyFloat_DigitsInit(void);
-
-/* The unpack routines read 4 or 8 bytes, starting at p.  le is a bool
- * argument, true if the string is in little-endian format (exponent
- * last, at p+3 or p+7), false if big-endian (exponent first, at p).
- * Return value:  The unpacked double.  On error, this is -1.0 and
- * PyErr_Occurred() is true (and an exception is set, most likely
- * OverflowError).  Note that on a non-IEEE platform this will refuse
- * to unpack a string that represents a NaN or infinity.
- */
-PyAPI_FUNC(double) _PyFloat_Unpack4(const unsigned char *p, int le);
-PyAPI_FUNC(double) _PyFloat_Unpack8(const unsigned char *p, int le);
-
-/* free list api */
-PyAPI_FUNC(int) PyFloat_ClearFreeList(void);
-
-/* Format the object based on the format_spec, as defined in PEP 3101
-   (Advanced String Formatting). */
-PyAPI_FUNC(PyObject *) _PyFloat_FormatAdvanced(PyObject *obj,
-					       char *format_spec,
-					       Py_ssize_t format_spec_len);
-
-/* Round a C double x to the closest multiple of 10**-ndigits.  Returns a
-   Python float on success, or NULL (with an appropriate exception set) on
-   failure.  Used in builtin_round in bltinmodule.c. */
-PyAPI_FUNC(PyObject *) _Py_double_round(double x, int ndigits);
-
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_FLOATOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/frameobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/frameobject.h
deleted file mode 100644
index 2298ed3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/frameobject.h
+++ /dev/null
@@ -1,89 +0,0 @@
-
-/* Frame object interface */
-
-#ifndef Py_FRAMEOBJECT_H
-#define Py_FRAMEOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-    int b_type;			/* what kind of block this is */
-    int b_handler;		/* where to jump to find handler */
-    int b_level;		/* value stack level to pop to */
-} PyTryBlock;
-
-typedef struct _frame {
-    PyObject_VAR_HEAD
-    struct _frame *f_back;	/* previous frame, or NULL */
-    PyCodeObject *f_code;	/* code segment */
-    PyObject *f_builtins;	/* builtin symbol table (PyDictObject) */
-    PyObject *f_globals;	/* global symbol table (PyDictObject) */
-    PyObject *f_locals;		/* local symbol table (any mapping) */
-    PyObject **f_valuestack;	/* points after the last local */
-    /* Next free slot in f_valuestack.  Frame creation sets to f_valuestack.
-       Frame evaluation usually NULLs it, but a frame that yields sets it
-       to the current stack top. */
-    PyObject **f_stacktop;
-    PyObject *f_trace;		/* Trace function */
-
-    /* If an exception is raised in this frame, the next three are used to
-     * record the exception info (if any) originally in the thread state.  See
-     * comments before set_exc_info() -- it's not obvious.
-     * Invariant:  if _type is NULL, then so are _value and _traceback.
-     * Desired invariant:  all three are NULL, or all three are non-NULL.  That
-     * one isn't currently true, but "should be".
-     */
-    PyObject *f_exc_type, *f_exc_value, *f_exc_traceback;
-
-    PyThreadState *f_tstate;
-    int f_lasti;		/* Last instruction if called */
-    /* Call PyFrame_GetLineNumber() instead of reading this field
-       directly.  As of 2.3 f_lineno is only valid when tracing is
-       active (i.e. when f_trace is set).  At other times we use
-       PyCode_Addr2Line to calculate the line from the current
-       bytecode index. */
-    int f_lineno;		/* Current line number */
-    int f_iblock;		/* index in f_blockstack */
-    PyTryBlock f_blockstack[CO_MAXBLOCKS]; /* for try and loop blocks */
-    PyObject *f_localsplus[1];	/* locals+stack, dynamically sized */
-} PyFrameObject;
-
-
-/* Standard object interface */
-
-PyAPI_DATA(PyTypeObject) PyFrame_Type;
-
-#define PyFrame_Check(op) ((op)->ob_type == &PyFrame_Type)
-#define PyFrame_IsRestricted(f) \
-	((f)->f_builtins != (f)->f_tstate->interp->builtins)
-
-PyAPI_FUNC(PyFrameObject *) PyFrame_New(PyThreadState *, PyCodeObject *,
-                                       PyObject *, PyObject *);
-
-
-/* The rest of the interface is specific for frame objects */
-
-/* Block management functions */
-
-PyAPI_FUNC(void) PyFrame_BlockSetup(PyFrameObject *, int, int, int);
-PyAPI_FUNC(PyTryBlock *) PyFrame_BlockPop(PyFrameObject *);
-
-/* Extend the value stack */
-
-PyAPI_FUNC(PyObject **) PyFrame_ExtendStack(PyFrameObject *, int, int);
-
-/* Conversions between "fast locals" and locals in dictionary */
-
-PyAPI_FUNC(void) PyFrame_LocalsToFast(PyFrameObject *, int);
-PyAPI_FUNC(void) PyFrame_FastToLocals(PyFrameObject *);
-
-PyAPI_FUNC(int) PyFrame_ClearFreeList(void);
-
-/* Return the line of code the frame is currently executing. */
-PyAPI_FUNC(int) PyFrame_GetLineNumber(PyFrameObject *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_FRAMEOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/funcobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/funcobject.h
deleted file mode 100644
index 07c05ce..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/funcobject.h
+++ /dev/null
@@ -1,76 +0,0 @@
-
-/* Function object interface */
-
-#ifndef Py_FUNCOBJECT_H
-#define Py_FUNCOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Function objects and code objects should not be confused with each other:
- *
- * Function objects are created by the execution of the 'def' statement.
- * They reference a code object in their func_code attribute, which is a
- * purely syntactic object, i.e. nothing more than a compiled version of some
- * source code lines.  There is one code object per source code "fragment",
- * but each code object can be referenced by zero or many function objects
- * depending only on how many times the 'def' statement in the source was
- * executed so far.
- */
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *func_code;	/* A code object */
-    PyObject *func_globals;	/* A dictionary (other mappings won't do) */
-    PyObject *func_defaults;	/* NULL or a tuple */
-    PyObject *func_closure;	/* NULL or a tuple of cell objects */
-    PyObject *func_doc;		/* The __doc__ attribute, can be anything */
-    PyObject *func_name;	/* The __name__ attribute, a string object */
-    PyObject *func_dict;	/* The __dict__ attribute, a dict or NULL */
-    PyObject *func_weakreflist;	/* List of weak references */
-    PyObject *func_module;	/* The __module__ attribute, can be anything */
-
-    /* Invariant:
-     *     func_closure contains the bindings for func_code->co_freevars, so
-     *     PyTuple_Size(func_closure) == PyCode_GetNumFree(func_code)
-     *     (func_closure may be NULL if PyCode_GetNumFree(func_code) == 0).
-     */
-} PyFunctionObject;
-
-PyAPI_DATA(PyTypeObject) PyFunction_Type;
-
-#define PyFunction_Check(op) (Py_TYPE(op) == &PyFunction_Type)
-
-PyAPI_FUNC(PyObject *) PyFunction_New(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyFunction_GetCode(PyObject *);
-PyAPI_FUNC(PyObject *) PyFunction_GetGlobals(PyObject *);
-PyAPI_FUNC(PyObject *) PyFunction_GetModule(PyObject *);
-PyAPI_FUNC(PyObject *) PyFunction_GetDefaults(PyObject *);
-PyAPI_FUNC(int) PyFunction_SetDefaults(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyFunction_GetClosure(PyObject *);
-PyAPI_FUNC(int) PyFunction_SetClosure(PyObject *, PyObject *);
-
-/* Macros for direct access to these values. Type checks are *not*
-   done, so use with care. */
-#define PyFunction_GET_CODE(func) \
-        (((PyFunctionObject *)func) -> func_code)
-#define PyFunction_GET_GLOBALS(func) \
-	(((PyFunctionObject *)func) -> func_globals)
-#define PyFunction_GET_MODULE(func) \
-	(((PyFunctionObject *)func) -> func_module)
-#define PyFunction_GET_DEFAULTS(func) \
-	(((PyFunctionObject *)func) -> func_defaults)
-#define PyFunction_GET_CLOSURE(func) \
-	(((PyFunctionObject *)func) -> func_closure)
-
-/* The classmethod and staticmethod types lives here, too */
-PyAPI_DATA(PyTypeObject) PyClassMethod_Type;
-PyAPI_DATA(PyTypeObject) PyStaticMethod_Type;
-
-PyAPI_FUNC(PyObject *) PyClassMethod_New(PyObject *);
-PyAPI_FUNC(PyObject *) PyStaticMethod_New(PyObject *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_FUNCOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/genobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/genobject.h
deleted file mode 100644
index ab9680d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/genobject.h
+++ /dev/null
@@ -1,40 +0,0 @@
-
-/* Generator object interface */
-
-#ifndef Py_GENOBJECT_H
-#define Py_GENOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct _frame; /* Avoid including frameobject.h */
-
-typedef struct {
-	PyObject_HEAD
-	/* The gi_ prefix is intended to remind of generator-iterator. */
-
-	/* Note: gi_frame can be NULL if the generator is "finished" */
-	struct _frame *gi_frame;
-
-	/* True if generator is being executed. */
-	int gi_running;
-    
-	/* The code object backing the generator */
-	PyObject *gi_code;
-
-	/* List of weak reference. */
-	PyObject *gi_weakreflist;
-} PyGenObject;
-
-PyAPI_DATA(PyTypeObject) PyGen_Type;
-
-#define PyGen_Check(op) PyObject_TypeCheck(op, &PyGen_Type)
-#define PyGen_CheckExact(op) (Py_TYPE(op) == &PyGen_Type)
-
-PyAPI_FUNC(PyObject *) PyGen_New(struct _frame *);
-PyAPI_FUNC(int) PyGen_NeedsFinalizing(PyGenObject *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_GENOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/graminit.h b/AppPkg/Applications/Python/Python-2.7.2/Include/graminit.h
deleted file mode 100644
index b083e9d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/graminit.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Generated by Parser/pgen */
-
-#define single_input 256
-#define file_input 257
-#define eval_input 258
-#define decorator 259
-#define decorators 260
-#define decorated 261
-#define funcdef 262
-#define parameters 263
-#define varargslist 264
-#define fpdef 265
-#define fplist 266
-#define stmt 267
-#define simple_stmt 268
-#define small_stmt 269
-#define expr_stmt 270
-#define augassign 271
-#define print_stmt 272
-#define del_stmt 273
-#define pass_stmt 274
-#define flow_stmt 275
-#define break_stmt 276
-#define continue_stmt 277
-#define return_stmt 278
-#define yield_stmt 279
-#define raise_stmt 280
-#define import_stmt 281
-#define import_name 282
-#define import_from 283
-#define import_as_name 284
-#define dotted_as_name 285
-#define import_as_names 286
-#define dotted_as_names 287
-#define dotted_name 288
-#define global_stmt 289
-#define exec_stmt 290
-#define assert_stmt 291
-#define compound_stmt 292
-#define if_stmt 293
-#define while_stmt 294
-#define for_stmt 295
-#define try_stmt 296
-#define with_stmt 297
-#define with_item 298
-#define except_clause 299
-#define suite 300
-#define testlist_safe 301
-#define old_test 302
-#define old_lambdef 303
-#define test 304
-#define or_test 305
-#define and_test 306
-#define not_test 307
-#define comparison 308
-#define comp_op 309
-#define expr 310
-#define xor_expr 311
-#define and_expr 312
-#define shift_expr 313
-#define arith_expr 314
-#define term 315
-#define factor 316
-#define power 317
-#define atom 318
-#define listmaker 319
-#define testlist_comp 320
-#define lambdef 321
-#define trailer 322
-#define subscriptlist 323
-#define subscript 324
-#define sliceop 325
-#define exprlist 326
-#define testlist 327
-#define dictorsetmaker 328
-#define classdef 329
-#define arglist 330
-#define argument 331
-#define list_iter 332
-#define list_for 333
-#define list_if 334
-#define comp_iter 335
-#define comp_for 336
-#define comp_if 337
-#define testlist1 338
-#define encoding_decl 339
-#define yield_expr 340
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/grammar.h b/AppPkg/Applications/Python/Python-2.7.2/Include/grammar.h
deleted file mode 100644
index f82ee9c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/grammar.h
+++ /dev/null
@@ -1,93 +0,0 @@
-
-/* Grammar interface */
-
-#ifndef Py_GRAMMAR_H
-#define Py_GRAMMAR_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "bitset.h" /* Sigh... */
-
-/* A label of an arc */
-
-typedef struct {
-    int		 lb_type;
-    char	*lb_str;
-} label;
-
-#define EMPTY 0		/* Label number 0 is by definition the empty label */
-
-/* A list of labels */
-
-typedef struct {
-    int		 ll_nlabels;
-    label	*ll_label;
-} labellist;
-
-/* An arc from one state to another */
-
-typedef struct {
-    short	a_lbl;		/* Label of this arc */
-    short	a_arrow;	/* State where this arc goes to */
-} arc;
-
-/* A state in a DFA */
-
-typedef struct {
-    int		 s_narcs;
-    arc		*s_arc;		/* Array of arcs */
-	
-    /* Optional accelerators */
-    int		 s_lower;	/* Lowest label index */
-    int		 s_upper;	/* Highest label index */
-    int		*s_accel;	/* Accelerator */
-    int		 s_accept;	/* Nonzero for accepting state */
-} state;
-
-/* A DFA */
-
-typedef struct {
-    int		 d_type;	/* Non-terminal this represents */
-    char	*d_name;	/* For printing */
-    int		 d_initial;	/* Initial state */
-    int		 d_nstates;
-    state	*d_state;	/* Array of states */
-    bitset	 d_first;
-} dfa;
-
-/* A grammar */
-
-typedef struct {
-    int		 g_ndfas;
-    dfa		*g_dfa;		/* Array of DFAs */
-    labellist	 g_ll;
-    int		 g_start;	/* Start symbol of the grammar */
-    int		 g_accel;	/* Set if accelerators present */
-} grammar;
-
-/* FUNCTIONS */
-
-grammar *newgrammar(int start);
-dfa *adddfa(grammar *g, int type, char *name);
-int addstate(dfa *d);
-void addarc(dfa *d, int from, int to, int lbl);
-dfa *PyGrammar_FindDFA(grammar *g, int type);
-
-int addlabel(labellist *ll, int type, char *str);
-int findlabel(labellist *ll, int type, char *str);
-char *PyGrammar_LabelRepr(label *lb);
-void translatelabels(grammar *g);
-
-void addfirstsets(grammar *g);
-
-void PyGrammar_AddAccelerators(grammar *g);
-void PyGrammar_RemoveAccelerators(grammar *);
-
-void printgrammar(grammar *g, FILE *fp);
-void printnonterminals(grammar *g, FILE *fp);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_GRAMMAR_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/import.h b/AppPkg/Applications/Python/Python-2.7.2/Include/import.h
deleted file mode 100644
index 4847596..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/import.h
+++ /dev/null
@@ -1,71 +0,0 @@
-
-/* Module definition and import interface */
-
-#ifndef Py_IMPORT_H
-#define Py_IMPORT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(long) PyImport_GetMagicNumber(void);
-PyAPI_FUNC(PyObject *) PyImport_ExecCodeModule(char *name, PyObject *co);
-PyAPI_FUNC(PyObject *) PyImport_ExecCodeModuleEx(
-	char *name, PyObject *co, char *pathname);
-PyAPI_FUNC(PyObject *) PyImport_GetModuleDict(void);
-PyAPI_FUNC(PyObject *) PyImport_AddModule(const char *name);
-PyAPI_FUNC(PyObject *) PyImport_ImportModule(const char *name);
-PyAPI_FUNC(PyObject *) PyImport_ImportModuleNoBlock(const char *);
-PyAPI_FUNC(PyObject *) PyImport_ImportModuleLevel(char *name,
-	PyObject *globals, PyObject *locals, PyObject *fromlist, int level);
-
-#define PyImport_ImportModuleEx(n, g, l, f) \
-	PyImport_ImportModuleLevel(n, g, l, f, -1)
-
-PyAPI_FUNC(PyObject *) PyImport_GetImporter(PyObject *path);
-PyAPI_FUNC(PyObject *) PyImport_Import(PyObject *name);
-PyAPI_FUNC(PyObject *) PyImport_ReloadModule(PyObject *m);
-PyAPI_FUNC(void) PyImport_Cleanup(void);
-PyAPI_FUNC(int) PyImport_ImportFrozenModule(char *);
-
-#ifdef WITH_THREAD
-PyAPI_FUNC(void) _PyImport_AcquireLock(void);
-PyAPI_FUNC(int) _PyImport_ReleaseLock(void);
-#else
-#define _PyImport_AcquireLock()
-#define _PyImport_ReleaseLock() 1
-#endif
-
-PyAPI_FUNC(struct filedescr *) _PyImport_FindModule(
-	const char *, PyObject *, char *, size_t, FILE **, PyObject **);
-PyAPI_FUNC(int) _PyImport_IsScript(struct filedescr *);
-PyAPI_FUNC(void) _PyImport_ReInitLock(void);
-
-PyAPI_FUNC(PyObject *)_PyImport_FindExtension(char *, char *);
-PyAPI_FUNC(PyObject *)_PyImport_FixupExtension(char *, char *);
-
-struct _inittab {
-    char *name;
-    void (*initfunc)(void);
-};
-
-PyAPI_DATA(PyTypeObject) PyNullImporter_Type;
-PyAPI_DATA(struct _inittab *) PyImport_Inittab;
-
-PyAPI_FUNC(int) PyImport_AppendInittab(const char *name, void (*initfunc)(void));
-PyAPI_FUNC(int) PyImport_ExtendInittab(struct _inittab *newtab);
-
-struct _frozen {
-    char *name;
-    unsigned char *code;
-    int size;
-};
-
-/* Embedding apps may change this pointer to point to their favorite
-   collection of frozen modules: */
-
-PyAPI_DATA(struct _frozen *) PyImport_FrozenModules;
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_IMPORT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/intobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/intobject.h
deleted file mode 100644
index dc08017..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/intobject.h
+++ /dev/null
@@ -1,80 +0,0 @@
-
-/* Integer object interface */
-
-/*
-PyIntObject represents a (long) integer.  This is an immutable object;
-an integer cannot change its value after creation.
-
-There are functions to create new integer objects, to test an object
-for integer-ness, and to get the integer value.  The latter functions
-returns -1 and sets errno to EBADF if the object is not an PyIntObject.
-None of the functions should be applied to nil objects.
-
-The type PyIntObject is (unfortunately) exposed here so we can declare
-_Py_TrueStruct and _Py_ZeroStruct in boolobject.h; don't use this.
-*/
-
-#ifndef Py_INTOBJECT_H
-#define Py_INTOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-    PyObject_HEAD
-    long ob_ival;
-} PyIntObject;
-
-PyAPI_DATA(PyTypeObject) PyInt_Type;
-
-#define PyInt_Check(op) \
-		 PyType_FastSubclass((op)->ob_type, Py_TPFLAGS_INT_SUBCLASS)
-#define PyInt_CheckExact(op) ((op)->ob_type == &PyInt_Type)
-
-PyAPI_FUNC(PyObject *) PyInt_FromString(char*, char**, int);
-#ifdef Py_USING_UNICODE
-PyAPI_FUNC(PyObject *) PyInt_FromUnicode(Py_UNICODE*, Py_ssize_t, int);
-#endif
-PyAPI_FUNC(PyObject *) PyInt_FromLong(long);
-PyAPI_FUNC(PyObject *) PyInt_FromSize_t(size_t);
-PyAPI_FUNC(PyObject *) PyInt_FromSsize_t(Py_ssize_t);
-PyAPI_FUNC(long) PyInt_AsLong(PyObject *);
-PyAPI_FUNC(Py_ssize_t) PyInt_AsSsize_t(PyObject *);
-PyAPI_FUNC(unsigned long) PyInt_AsUnsignedLongMask(PyObject *);
-#ifdef HAVE_LONG_LONG
-PyAPI_FUNC(unsigned PY_LONG_LONG) PyInt_AsUnsignedLongLongMask(PyObject *);
-#endif
-
-PyAPI_FUNC(long) PyInt_GetMax(void);
-
-/* Macro, trading safety for speed */
-#define PyInt_AS_LONG(op) (((PyIntObject *)(op))->ob_ival)
-
-/* These aren't really part of the Int object, but they're handy; the protos
- * are necessary for systems that need the magic of PyAPI_FUNC and that want
- * to have stropmodule as a dynamically loaded module instead of building it
- * into the main Python shared library/DLL.  Guido thinks I'm weird for
- * building it this way.  :-)  [cjh]
- */
-PyAPI_FUNC(unsigned long) PyOS_strtoul(char *, char **, int);
-PyAPI_FUNC(long) PyOS_strtol(char *, char **, int);
-
-/* free list api */
-PyAPI_FUNC(int) PyInt_ClearFreeList(void);
-
-/* Convert an integer to the given base.  Returns a string.
-   If base is 2, 8 or 16, add the proper prefix '0b', '0o' or '0x'.
-   If newstyle is zero, then use the pre-2.6 behavior of octal having
-   a leading "0" */
-PyAPI_FUNC(PyObject*) _PyInt_Format(PyIntObject* v, int base, int newstyle);
-
-/* Format the object based on the format_spec, as defined in PEP 3101
-   (Advanced String Formatting). */
-PyAPI_FUNC(PyObject *) _PyInt_FormatAdvanced(PyObject *obj,
-					     char *format_spec,
-					     Py_ssize_t format_spec_len);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_INTOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/intrcheck.h b/AppPkg/Applications/Python/Python-2.7.2/Include/intrcheck.h
deleted file mode 100644
index 11d759e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/intrcheck.h
+++ /dev/null
@@ -1,15 +0,0 @@
-
-#ifndef Py_INTRCHECK_H
-#define Py_INTRCHECK_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(int) PyOS_InterruptOccurred(void);
-PyAPI_FUNC(void) PyOS_InitInterrupts(void);
-PyAPI_FUNC(void) PyOS_AfterFork(void);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_INTRCHECK_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/iterobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/iterobject.h
deleted file mode 100644
index ac49cb6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/iterobject.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef Py_ITEROBJECT_H
-#define Py_ITEROBJECT_H
-/* Iterators (the basic kind, over a sequence) */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_DATA(PyTypeObject) PySeqIter_Type;
-
-#define PySeqIter_Check(op) (Py_TYPE(op) == &PySeqIter_Type)
-
-PyAPI_FUNC(PyObject *) PySeqIter_New(PyObject *);
-
-PyAPI_DATA(PyTypeObject) PyCallIter_Type;
-
-#define PyCallIter_Check(op) (Py_TYPE(op) == &PyCallIter_Type)
-
-PyAPI_FUNC(PyObject *) PyCallIter_New(PyObject *, PyObject *);
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_ITEROBJECT_H */
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/listobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/listobject.h
deleted file mode 100644
index 04aca45..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/listobject.h
+++ /dev/null
@@ -1,68 +0,0 @@
-
-/* List object interface */
-
-/*
-Another generally useful object type is an list of object pointers.
-This is a mutable type: the list items can be changed, and items can be
-added or removed.  Out-of-range indices or non-list objects are ignored.
-
-*** WARNING *** PyList_SetItem does not increment the new item's reference
-count, but does decrement the reference count of the item it replaces,
-if not nil.  It does *decrement* the reference count if it is *not*
-inserted in the list.  Similarly, PyList_GetItem does not increment the
-returned item's reference count.
-*/
-
-#ifndef Py_LISTOBJECT_H
-#define Py_LISTOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-    PyObject_VAR_HEAD
-    /* Vector of pointers to list elements.  list[0] is ob_item[0], etc. */
-    PyObject **ob_item;
-
-    /* ob_item contains space for 'allocated' elements.  The number
-     * currently in use is ob_size.
-     * Invariants:
-     *     0 <= ob_size <= allocated
-     *     len(list) == ob_size
-     *     ob_item == NULL implies ob_size == allocated == 0
-     * list.sort() temporarily sets allocated to -1 to detect mutations.
-     *
-     * Items must normally not be NULL, except during construction when
-     * the list is not yet visible outside the function that builds it.
-     */
-    Py_ssize_t allocated;
-} PyListObject;
-
-PyAPI_DATA(PyTypeObject) PyList_Type;
-
-#define PyList_Check(op) \
-		PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
-#define PyList_CheckExact(op) (Py_TYPE(op) == &PyList_Type)
-
-PyAPI_FUNC(PyObject *) PyList_New(Py_ssize_t size);
-PyAPI_FUNC(Py_ssize_t) PyList_Size(PyObject *);
-PyAPI_FUNC(PyObject *) PyList_GetItem(PyObject *, Py_ssize_t);
-PyAPI_FUNC(int) PyList_SetItem(PyObject *, Py_ssize_t, PyObject *);
-PyAPI_FUNC(int) PyList_Insert(PyObject *, Py_ssize_t, PyObject *);
-PyAPI_FUNC(int) PyList_Append(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyList_GetSlice(PyObject *, Py_ssize_t, Py_ssize_t);
-PyAPI_FUNC(int) PyList_SetSlice(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *);
-PyAPI_FUNC(int) PyList_Sort(PyObject *);
-PyAPI_FUNC(int) PyList_Reverse(PyObject *);
-PyAPI_FUNC(PyObject *) PyList_AsTuple(PyObject *);
-PyAPI_FUNC(PyObject *) _PyList_Extend(PyListObject *, PyObject *);
-
-/* Macro, trading safety for speed */
-#define PyList_GET_ITEM(op, i) (((PyListObject *)(op))->ob_item[i])
-#define PyList_SET_ITEM(op, i, v) (((PyListObject *)(op))->ob_item[i] = (v))
-#define PyList_GET_SIZE(op)    Py_SIZE(op)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_LISTOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/longintrepr.h b/AppPkg/Applications/Python/Python-2.7.2/Include/longintrepr.h
deleted file mode 100644
index 3d1cd25..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/longintrepr.h
+++ /dev/null
@@ -1,103 +0,0 @@
-#ifndef Py_LONGINTREPR_H
-#define Py_LONGINTREPR_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* This is published for the benefit of "friend" marshal.c only. */
-
-/* Parameters of the long integer representation.  There are two different
-   sets of parameters: one set for 30-bit digits, stored in an unsigned 32-bit
-   integer type, and one set for 15-bit digits with each digit stored in an
-   unsigned short.  The value of PYLONG_BITS_IN_DIGIT, defined either at
-   configure time or in pyport.h, is used to decide which digit size to use.
-
-   Type 'digit' should be able to hold 2*PyLong_BASE-1, and type 'twodigits'
-   should be an unsigned integer type able to hold all integers up to
-   PyLong_BASE*PyLong_BASE-1.  x_sub assumes that 'digit' is an unsigned type,
-   and that overflow is handled by taking the result modulo 2**N for some N >
-   PyLong_SHIFT.  The majority of the code doesn't care about the precise
-   value of PyLong_SHIFT, but there are some notable exceptions:
-
-   - long_pow() requires that PyLong_SHIFT be divisible by 5
-
-   - PyLong_{As,From}ByteArray require that PyLong_SHIFT be at least 8
-
-   - long_hash() requires that PyLong_SHIFT is *strictly* less than the number
-     of bits in an unsigned long, as do the PyLong <-> long (or unsigned long)
-     conversion functions
-
-   - the long <-> size_t/Py_ssize_t conversion functions expect that
-     PyLong_SHIFT is strictly less than the number of bits in a size_t
-
-   - the marshal code currently expects that PyLong_SHIFT is a multiple of 15
-
-  The values 15 and 30 should fit all of the above requirements, on any
-  platform.
-*/
-
-#if PYLONG_BITS_IN_DIGIT == 30
-#if !(defined HAVE_UINT64_T && defined HAVE_UINT32_T &&          \
-      defined HAVE_INT64_T && defined HAVE_INT32_T)
-#error "30-bit long digits requested, but the necessary types are not available on this platform"
-#endif
-typedef PY_UINT32_T digit;
-typedef PY_INT32_T sdigit; /* signed variant of digit */
-typedef PY_UINT64_T twodigits;
-typedef PY_INT64_T stwodigits; /* signed variant of twodigits */
-#define PyLong_SHIFT	30
-#define _PyLong_DECIMAL_SHIFT	9 /* max(e such that 10**e fits in a digit) */
-#define _PyLong_DECIMAL_BASE	((digit)1000000000) /* 10 ** DECIMAL_SHIFT */
-#elif PYLONG_BITS_IN_DIGIT == 15
-typedef unsigned short digit;
-typedef short sdigit; /* signed variant of digit */
-typedef unsigned long twodigits;
-typedef long stwodigits; /* signed variant of twodigits */
-#define PyLong_SHIFT	15
-#define _PyLong_DECIMAL_SHIFT	4 /* max(e such that 10**e fits in a digit) */
-#define _PyLong_DECIMAL_BASE	((digit)10000) /* 10 ** DECIMAL_SHIFT */
-#else
-#error "PYLONG_BITS_IN_DIGIT should be 15 or 30"
-#endif
-#define PyLong_BASE	((digit)1 << PyLong_SHIFT)
-#define PyLong_MASK	((digit)(PyLong_BASE - 1))
-
-/* b/w compatibility with Python 2.5 */
-#define SHIFT	PyLong_SHIFT
-#define BASE	PyLong_BASE
-#define MASK	PyLong_MASK
-
-#if PyLong_SHIFT % 5 != 0
-#error "longobject.c requires that PyLong_SHIFT be divisible by 5"
-#endif
-
-/* Long integer representation.
-   The absolute value of a number is equal to
-   	SUM(for i=0 through abs(ob_size)-1) ob_digit[i] * 2**(SHIFT*i)
-   Negative numbers are represented with ob_size < 0;
-   zero is represented by ob_size == 0.
-   In a normalized number, ob_digit[abs(ob_size)-1] (the most significant
-   digit) is never zero.  Also, in all cases, for all valid i,
-   	0 <= ob_digit[i] <= MASK.
-   The allocation function takes care of allocating extra memory
-   so that ob_digit[0] ... ob_digit[abs(ob_size)-1] are actually available.
-
-   CAUTION:  Generic code manipulating subtypes of PyVarObject has to
-   aware that longs abuse  ob_size's sign bit.
-*/
-
-struct _longobject {
-	PyObject_VAR_HEAD
-	digit ob_digit[1];
-};
-
-PyAPI_FUNC(PyLongObject *) _PyLong_New(Py_ssize_t);
-
-/* Return a copy of src. */
-PyAPI_FUNC(PyObject *) _PyLong_Copy(PyLongObject *src);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_LONGINTREPR_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/longobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/longobject.h
deleted file mode 100644
index ba5bf46..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/longobject.h
+++ /dev/null
@@ -1,134 +0,0 @@
-#ifndef Py_LONGOBJECT_H
-#define Py_LONGOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Long (arbitrary precision) integer object interface */
-
-typedef struct _longobject PyLongObject; /* Revealed in longintrepr.h */
-
-PyAPI_DATA(PyTypeObject) PyLong_Type;
-
-#define PyLong_Check(op) \
-		PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
-#define PyLong_CheckExact(op) (Py_TYPE(op) == &PyLong_Type)
-
-PyAPI_FUNC(PyObject *) PyLong_FromLong(long);
-PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLong(unsigned long);
-PyAPI_FUNC(PyObject *) PyLong_FromDouble(double);
-PyAPI_FUNC(PyObject *) PyLong_FromSize_t(size_t);
-PyAPI_FUNC(PyObject *) PyLong_FromSsize_t(Py_ssize_t);
-PyAPI_FUNC(long) PyLong_AsLong(PyObject *);
-PyAPI_FUNC(long) PyLong_AsLongAndOverflow(PyObject *, int *);
-PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLong(PyObject *);
-PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLongMask(PyObject *);
-PyAPI_FUNC(Py_ssize_t) PyLong_AsSsize_t(PyObject *);
-PyAPI_FUNC(PyObject *) PyLong_GetInfo(void);
-
-/* For use by intobject.c only */
-#define _PyLong_AsSsize_t PyLong_AsSsize_t
-#define _PyLong_FromSize_t PyLong_FromSize_t
-#define _PyLong_FromSsize_t PyLong_FromSsize_t
-PyAPI_DATA(int) _PyLong_DigitValue[256];
-
-/* _PyLong_Frexp returns a double x and an exponent e such that the
-   true value is approximately equal to x * 2**e.  e is >= 0.  x is
-   0.0 if and only if the input is 0 (in which case, e and x are both
-   zeroes); otherwise, 0.5 <= abs(x) < 1.0.  On overflow, which is
-   possible if the number of bits doesn't fit into a Py_ssize_t, sets
-   OverflowError and returns -1.0 for x, 0 for e. */
-PyAPI_FUNC(double) _PyLong_Frexp(PyLongObject *a, Py_ssize_t *e);
-
-PyAPI_FUNC(double) PyLong_AsDouble(PyObject *);
-PyAPI_FUNC(PyObject *) PyLong_FromVoidPtr(void *);
-PyAPI_FUNC(void *) PyLong_AsVoidPtr(PyObject *);
-
-#ifdef HAVE_LONG_LONG
-PyAPI_FUNC(PyObject *) PyLong_FromLongLong(PY_LONG_LONG);
-PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLongLong(unsigned PY_LONG_LONG);
-PyAPI_FUNC(PY_LONG_LONG) PyLong_AsLongLong(PyObject *);
-PyAPI_FUNC(unsigned PY_LONG_LONG) PyLong_AsUnsignedLongLong(PyObject *);
-PyAPI_FUNC(unsigned PY_LONG_LONG) PyLong_AsUnsignedLongLongMask(PyObject *);
-PyAPI_FUNC(PY_LONG_LONG) PyLong_AsLongLongAndOverflow(PyObject *, int *);
-#endif /* HAVE_LONG_LONG */
-
-PyAPI_FUNC(PyObject *) PyLong_FromString(char *, char **, int);
-#ifdef Py_USING_UNICODE
-PyAPI_FUNC(PyObject *) PyLong_FromUnicode(Py_UNICODE*, Py_ssize_t, int);
-#endif
-
-/* _PyLong_Sign.  Return 0 if v is 0, -1 if v < 0, +1 if v > 0.
-   v must not be NULL, and must be a normalized long.
-   There are no error cases.
-*/
-PyAPI_FUNC(int) _PyLong_Sign(PyObject *v);
-
-
-/* _PyLong_NumBits.  Return the number of bits needed to represent the
-   absolute value of a long.  For example, this returns 1 for 1 and -1, 2
-   for 2 and -2, and 2 for 3 and -3.  It returns 0 for 0.
-   v must not be NULL, and must be a normalized long.
-   (size_t)-1 is returned and OverflowError set if the true result doesn't
-   fit in a size_t.
-*/
-PyAPI_FUNC(size_t) _PyLong_NumBits(PyObject *v);
-
-/* _PyLong_FromByteArray:  View the n unsigned bytes as a binary integer in
-   base 256, and return a Python long with the same numeric value.
-   If n is 0, the integer is 0.  Else:
-   If little_endian is 1/true, bytes[n-1] is the MSB and bytes[0] the LSB;
-   else (little_endian is 0/false) bytes[0] is the MSB and bytes[n-1] the
-   LSB.
-   If is_signed is 0/false, view the bytes as a non-negative integer.
-   If is_signed is 1/true, view the bytes as a 2's-complement integer,
-   non-negative if bit 0x80 of the MSB is clear, negative if set.
-   Error returns:
-   + Return NULL with the appropriate exception set if there's not
-     enough memory to create the Python long.
-*/
-PyAPI_FUNC(PyObject *) _PyLong_FromByteArray(
-	const unsigned char* bytes, size_t n,
-	int little_endian, int is_signed);
-
-/* _PyLong_AsByteArray: Convert the least-significant 8*n bits of long
-   v to a base-256 integer, stored in array bytes.  Normally return 0,
-   return -1 on error.
-   If little_endian is 1/true, store the MSB at bytes[n-1] and the LSB at
-   bytes[0]; else (little_endian is 0/false) store the MSB at bytes[0] and
-   the LSB at bytes[n-1].
-   If is_signed is 0/false, it's an error if v < 0; else (v >= 0) n bytes
-   are filled and there's nothing special about bit 0x80 of the MSB.
-   If is_signed is 1/true, bytes is filled with the 2's-complement
-   representation of v's value.  Bit 0x80 of the MSB is the sign bit.
-   Error returns (-1):
-   + is_signed is 0 and v < 0.  TypeError is set in this case, and bytes
-     isn't altered.
-   + n isn't big enough to hold the full mathematical value of v.  For
-     example, if is_signed is 0 and there are more digits in the v than
-     fit in n; or if is_signed is 1, v < 0, and n is just 1 bit shy of
-     being large enough to hold a sign bit.  OverflowError is set in this
-     case, but bytes holds the least-signficant n bytes of the true value.
-*/
-PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,
-	unsigned char* bytes, size_t n,
-	int little_endian, int is_signed);
-
-/* _PyLong_Format: Convert the long to a string object with given base,
-   appending a base prefix of 0[box] if base is 2, 8 or 16.
-   Add a trailing "L" if addL is non-zero.
-   If newstyle is zero, then use the pre-2.6 behavior of octal having
-   a leading "0", instead of the prefix "0o" */
-PyAPI_FUNC(PyObject *) _PyLong_Format(PyObject *aa, int base, int addL, int newstyle);
-
-/* Format the object based on the format_spec, as defined in PEP 3101
-   (Advanced String Formatting). */
-PyAPI_FUNC(PyObject *) _PyLong_FormatAdvanced(PyObject *obj,
-					      char *format_spec,
-					      Py_ssize_t format_spec_len);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_LONGOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/marshal.h b/AppPkg/Applications/Python/Python-2.7.2/Include/marshal.h
deleted file mode 100644
index 43ac538..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/marshal.h
+++ /dev/null
@@ -1,25 +0,0 @@
-
-/* Interface for marshal.c */
-
-#ifndef Py_MARSHAL_H
-#define Py_MARSHAL_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define Py_MARSHAL_VERSION 2
-
-PyAPI_FUNC(void) PyMarshal_WriteLongToFile(long, FILE *, int);
-PyAPI_FUNC(void) PyMarshal_WriteObjectToFile(PyObject *, FILE *, int);
-PyAPI_FUNC(PyObject *) PyMarshal_WriteObjectToString(PyObject *, int);
-
-PyAPI_FUNC(long) PyMarshal_ReadLongFromFile(FILE *);
-PyAPI_FUNC(int) PyMarshal_ReadShortFromFile(FILE *);
-PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromFile(FILE *);
-PyAPI_FUNC(PyObject *) PyMarshal_ReadLastObjectFromFile(FILE *);
-PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromString(char *, Py_ssize_t);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_MARSHAL_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/memoryobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/memoryobject.h
deleted file mode 100644
index ca5064e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/memoryobject.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Memory view object. In Python this is available as "memoryview". */
-
-#ifndef Py_MEMORYOBJECT_H
-#define Py_MEMORYOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_DATA(PyTypeObject) PyMemoryView_Type;
-
-#define PyMemoryView_Check(op) (Py_TYPE(op) == &PyMemoryView_Type)
-
-/* Get a pointer to the underlying Py_buffer of a memoryview object. */
-#define PyMemoryView_GET_BUFFER(op) (&((PyMemoryViewObject *)(op))->view)
-/* Get a pointer to the PyObject from which originates a memoryview object. */
-#define PyMemoryView_GET_BASE(op) (((PyMemoryViewObject *)(op))->view.obj)
-
-
-PyAPI_FUNC(PyObject *) PyMemoryView_GetContiguous(PyObject *base, 
-						  int buffertype, 
-						  char fort);
-
-    /* Return a contiguous chunk of memory representing the buffer
-       from an object in a memory view object.  If a copy is made then the
-       base object for the memory view will be a *new* bytes object. 
-       
-       Otherwise, the base-object will be the object itself and no 
-       data-copying will be done. 
-
-       The buffertype argument can be PyBUF_READ, PyBUF_WRITE,
-       PyBUF_SHADOW to determine whether the returned buffer
-       should be READONLY, WRITABLE, or set to update the
-       original buffer if a copy must be made.  If buffertype is
-       PyBUF_WRITE and the buffer is not contiguous an error will
-       be raised.  In this circumstance, the user can use
-       PyBUF_SHADOW to ensure that a a writable temporary
-       contiguous buffer is returned.  The contents of this
-       contiguous buffer will be copied back into the original
-       object after the memoryview object is deleted as long as
-       the original object is writable and allows setting an
-       exclusive write lock. If this is not allowed by the
-       original object, then a BufferError is raised.
-       
-       If the object is multi-dimensional and if fortran is 'F',
-       the first dimension of the underlying array will vary the
-       fastest in the buffer.  If fortran is 'C', then the last
-       dimension will vary the fastest (C-style contiguous).  If
-       fortran is 'A', then it does not matter and you will get
-       whatever the object decides is more efficient.  
-
-       A new reference is returned that must be DECREF'd when finished.
-    */
-
-PyAPI_FUNC(PyObject *) PyMemoryView_FromObject(PyObject *base);
-
-PyAPI_FUNC(PyObject *) PyMemoryView_FromBuffer(Py_buffer *info);
-    /* create new if bufptr is NULL 
-        will be a new bytesobject in base */
-
-
-/* The struct is declared here so that macros can work, but it shouldn't
-   be considered public. Don't access those fields directly, use the macros
-   and functions instead! */
-typedef struct {
-    PyObject_HEAD
-    PyObject *base;
-    Py_buffer view;
-} PyMemoryViewObject;
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_MEMORYOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/metagrammar.h b/AppPkg/Applications/Python/Python-2.7.2/Include/metagrammar.h
deleted file mode 100644
index 1fb471a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/metagrammar.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef Py_METAGRAMMAR_H
-#define Py_METAGRAMMAR_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#define MSTART 256
-#define RULE 257
-#define RHS 258
-#define ALT 259
-#define ITEM 260
-#define ATOM 261
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_METAGRAMMAR_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/methodobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/methodobject.h
deleted file mode 100644
index 8b28288..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/methodobject.h
+++ /dev/null
@@ -1,93 +0,0 @@
-
-/* Method object interface */
-
-#ifndef Py_METHODOBJECT_H
-#define Py_METHODOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* This is about the type 'builtin_function_or_method',
-   not Python methods in user-defined classes.  See classobject.h
-   for the latter. */
-
-PyAPI_DATA(PyTypeObject) PyCFunction_Type;
-
-#define PyCFunction_Check(op) (Py_TYPE(op) == &PyCFunction_Type)
-
-typedef PyObject *(*PyCFunction)(PyObject *, PyObject *);
-typedef PyObject *(*PyCFunctionWithKeywords)(PyObject *, PyObject *,
-					     PyObject *);
-typedef PyObject *(*PyNoArgsFunction)(PyObject *);
-
-PyAPI_FUNC(PyCFunction) PyCFunction_GetFunction(PyObject *);
-PyAPI_FUNC(PyObject *) PyCFunction_GetSelf(PyObject *);
-PyAPI_FUNC(int) PyCFunction_GetFlags(PyObject *);
-
-/* Macros for direct access to these values. Type checks are *not*
-   done, so use with care. */
-#define PyCFunction_GET_FUNCTION(func) \
-        (((PyCFunctionObject *)func) -> m_ml -> ml_meth)
-#define PyCFunction_GET_SELF(func) \
-	(((PyCFunctionObject *)func) -> m_self)
-#define PyCFunction_GET_FLAGS(func) \
-	(((PyCFunctionObject *)func) -> m_ml -> ml_flags)
-PyAPI_FUNC(PyObject *) PyCFunction_Call(PyObject *, PyObject *, PyObject *);
-
-struct PyMethodDef {
-    const char	*ml_name;	/* The name of the built-in function/method */
-    PyCFunction  ml_meth;	/* The C function that implements it */
-    int		 ml_flags;	/* Combination of METH_xxx flags, which mostly
-				   describe the args expected by the C func */
-    const char	*ml_doc;	/* The __doc__ attribute, or NULL */
-};
-typedef struct PyMethodDef PyMethodDef;
-
-PyAPI_FUNC(PyObject *) Py_FindMethod(PyMethodDef[], PyObject *, const char *);
-
-#define PyCFunction_New(ML, SELF) PyCFunction_NewEx((ML), (SELF), NULL)
-PyAPI_FUNC(PyObject *) PyCFunction_NewEx(PyMethodDef *, PyObject *, 
-					 PyObject *);
-
-/* Flag passed to newmethodobject */
-#define METH_OLDARGS  0x0000
-#define METH_VARARGS  0x0001
-#define METH_KEYWORDS 0x0002
-/* METH_NOARGS and METH_O must not be combined with the flags above. */
-#define METH_NOARGS   0x0004
-#define METH_O        0x0008
-
-/* METH_CLASS and METH_STATIC are a little different; these control
-   the construction of methods for a class.  These cannot be used for
-   functions in modules. */
-#define METH_CLASS    0x0010
-#define METH_STATIC   0x0020
-
-/* METH_COEXIST allows a method to be entered eventhough a slot has
-   already filled the entry.  When defined, the flag allows a separate
-   method, "__contains__" for example, to coexist with a defined 
-   slot like sq_contains. */
-
-#define METH_COEXIST   0x0040
-
-typedef struct PyMethodChain {
-    PyMethodDef *methods;		/* Methods of this type */
-    struct PyMethodChain *link;	/* NULL or base type */
-} PyMethodChain;
-
-PyAPI_FUNC(PyObject *) Py_FindMethodInChain(PyMethodChain *, PyObject *,
-                                            const char *);
-
-typedef struct {
-    PyObject_HEAD
-    PyMethodDef *m_ml; /* Description of the C function to call */
-    PyObject    *m_self; /* Passed as 'self' arg to the C func, can be NULL */
-    PyObject    *m_module; /* The __module__ attribute, can be anything */
-} PyCFunctionObject;
-
-PyAPI_FUNC(int) PyCFunction_ClearFreeList(void);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_METHODOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/modsupport.h b/AppPkg/Applications/Python/Python-2.7.2/Include/modsupport.h
deleted file mode 100644
index 8a8cf8d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/modsupport.h
+++ /dev/null
@@ -1,134 +0,0 @@
-
-#ifndef Py_MODSUPPORT_H
-#define Py_MODSUPPORT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Module support interface */
-
-#include <stdarg.h>
-
-/* If PY_SSIZE_T_CLEAN is defined, each functions treats #-specifier
-   to mean Py_ssize_t */
-#ifdef PY_SSIZE_T_CLEAN
-#define PyArg_Parse			_PyArg_Parse_SizeT
-#define PyArg_ParseTuple		_PyArg_ParseTuple_SizeT
-#define PyArg_ParseTupleAndKeywords	_PyArg_ParseTupleAndKeywords_SizeT
-#define PyArg_VaParse			_PyArg_VaParse_SizeT
-#define PyArg_VaParseTupleAndKeywords	_PyArg_VaParseTupleAndKeywords_SizeT
-#define Py_BuildValue			_Py_BuildValue_SizeT
-#define Py_VaBuildValue			_Py_VaBuildValue_SizeT
-#else
-PyAPI_FUNC(PyObject *) _Py_VaBuildValue_SizeT(const char *, va_list);
-#endif
-
-PyAPI_FUNC(int) PyArg_Parse(PyObject *, const char *, ...);
-PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, ...) Py_FORMAT_PARSETUPLE(PyArg_ParseTuple, 2, 3);
-PyAPI_FUNC(int) PyArg_ParseTupleAndKeywords(PyObject *, PyObject *,
-                                                  const char *, char **, ...);
-PyAPI_FUNC(int) PyArg_UnpackTuple(PyObject *, const char *, Py_ssize_t, Py_ssize_t, ...);
-PyAPI_FUNC(PyObject *) Py_BuildValue(const char *, ...);
-PyAPI_FUNC(PyObject *) _Py_BuildValue_SizeT(const char *, ...);
-PyAPI_FUNC(int) _PyArg_NoKeywords(const char *funcname, PyObject *kw);
-
-PyAPI_FUNC(int) PyArg_VaParse(PyObject *, const char *, va_list);
-PyAPI_FUNC(int) PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *,
-                                                  const char *, char **, va_list);
-PyAPI_FUNC(PyObject *) Py_VaBuildValue(const char *, va_list);
-
-PyAPI_FUNC(int) PyModule_AddObject(PyObject *, const char *, PyObject *);
-PyAPI_FUNC(int) PyModule_AddIntConstant(PyObject *, const char *, long);
-PyAPI_FUNC(int) PyModule_AddStringConstant(PyObject *, const char *, const char *);
-#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
-#define PyModule_AddStringMacro(m, c) PyModule_AddStringConstant(m, #c, c)
-
-#define PYTHON_API_VERSION 1013
-#define PYTHON_API_STRING "1013"
-/* The API version is maintained (independently from the Python version)
-   so we can detect mismatches between the interpreter and dynamically
-   loaded modules.  These are diagnosed by an error message but
-   the module is still loaded (because the mismatch can only be tested
-   after loading the module).  The error message is intended to
-   explain the core dump a few seconds later.
-
-   The symbol PYTHON_API_STRING defines the same value as a string
-   literal.  *** PLEASE MAKE SURE THE DEFINITIONS MATCH. ***
-
-   Please add a line or two to the top of this log for each API
-   version change:
-
-   22-Feb-2006  MvL	1013	PEP 353 - long indices for sequence lengths
-
-   19-Aug-2002  GvR	1012	Changes to string object struct for
-   				interning changes, saving 3 bytes.
-
-   17-Jul-2001	GvR	1011	Descr-branch, just to be on the safe side
-
-   25-Jan-2001  FLD     1010    Parameters added to PyCode_New() and
-                                PyFrame_New(); Python 2.1a2
-
-   14-Mar-2000  GvR     1009    Unicode API added
-
-   3-Jan-1999	GvR	1007	Decided to change back!  (Don't reuse 1008!)
-
-   3-Dec-1998	GvR	1008	Python 1.5.2b1
-
-   18-Jan-1997	GvR	1007	string interning and other speedups
-
-   11-Oct-1996	GvR	renamed Py_Ellipses to Py_Ellipsis :-(
-
-   30-Jul-1996	GvR	Slice and ellipses syntax added
-
-   23-Jul-1996	GvR	For 1.4 -- better safe than sorry this time :-)
-
-   7-Nov-1995	GvR	Keyword arguments (should've been done at 1.3 :-( )
-
-   10-Jan-1995	GvR	Renamed globals to new naming scheme
-
-   9-Jan-1995	GvR	Initial version (incompatible with older API)
-*/
-
-#ifdef MS_WINDOWS
-/* Special defines for Windows versions used to live here.  Things
-   have changed, and the "Version" is now in a global string variable.
-   Reason for this is that this for easier branding of a "custom DLL"
-   without actually needing a recompile.  */
-#endif /* MS_WINDOWS */
-
-#if SIZEOF_SIZE_T != SIZEOF_INT
-/* On a 64-bit system, rename the Py_InitModule4 so that 2.4
-   modules cannot get loaded into a 2.5 interpreter */
-#define Py_InitModule4 Py_InitModule4_64
-#endif
-
-#ifdef Py_TRACE_REFS
- /* When we are tracing reference counts, rename Py_InitModule4 so
-    modules compiled with incompatible settings will generate a
-    link-time error. */
- #if SIZEOF_SIZE_T != SIZEOF_INT
- #undef Py_InitModule4
- #define Py_InitModule4 Py_InitModule4TraceRefs_64
- #else
- #define Py_InitModule4 Py_InitModule4TraceRefs
- #endif
-#endif
-
-PyAPI_FUNC(PyObject *) Py_InitModule4(const char *name, PyMethodDef *methods,
-                                      const char *doc, PyObject *self,
-                                      int apiver);
-
-#define Py_InitModule(name, methods) \
-	Py_InitModule4(name, methods, (char *)NULL, (PyObject *)NULL, \
-		       PYTHON_API_VERSION)
-
-#define Py_InitModule3(name, methods, doc) \
-	Py_InitModule4(name, methods, doc, (PyObject *)NULL, \
-		       PYTHON_API_VERSION)
-
-PyAPI_DATA(char *) _Py_PackageContext;
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_MODSUPPORT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/moduleobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/moduleobject.h
deleted file mode 100644
index ff16ad2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/moduleobject.h
+++ /dev/null
@@ -1,24 +0,0 @@
-
-/* Module object interface */
-
-#ifndef Py_MODULEOBJECT_H
-#define Py_MODULEOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_DATA(PyTypeObject) PyModule_Type;
-
-#define PyModule_Check(op) PyObject_TypeCheck(op, &PyModule_Type)
-#define PyModule_CheckExact(op) (Py_TYPE(op) == &PyModule_Type)
-
-PyAPI_FUNC(PyObject *) PyModule_New(const char *);
-PyAPI_FUNC(PyObject *) PyModule_GetDict(PyObject *);
-PyAPI_FUNC(char *) PyModule_GetName(PyObject *);
-PyAPI_FUNC(char *) PyModule_GetFilename(PyObject *);
-PyAPI_FUNC(void) _PyModule_Clear(PyObject *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_MODULEOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/node.h b/AppPkg/Applications/Python/Python-2.7.2/Include/node.h
deleted file mode 100644
index 7bab3c7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/node.h
+++ /dev/null
@@ -1,40 +0,0 @@
-
-/* Parse tree node interface */
-
-#ifndef Py_NODE_H
-#define Py_NODE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct _node {
-    short		n_type;
-    char		*n_str;
-    int			n_lineno;
-    int			n_col_offset;
-    int			n_nchildren;
-    struct _node	*n_child;
-} node;
-
-PyAPI_FUNC(node *) PyNode_New(int type);
-PyAPI_FUNC(int) PyNode_AddChild(node *n, int type,
-                                      char *str, int lineno, int col_offset);
-PyAPI_FUNC(void) PyNode_Free(node *n);
-
-/* Node access functions */
-#define NCH(n)		((n)->n_nchildren)
-	
-#define CHILD(n, i)	(&(n)->n_child[i])
-#define RCHILD(n, i)	(CHILD(n, NCH(n) + i))
-#define TYPE(n)		((n)->n_type)
-#define STR(n)		((n)->n_str)
-
-/* Assert that the type of a node is what we expect */
-#define REQ(n, type) assert(TYPE(n) == (type))
-
-PyAPI_FUNC(void) PyNode_ListTree(node *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_NODE_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/object.h b/AppPkg/Applications/Python/Python-2.7.2/Include/object.h
deleted file mode 100644
index 27ba8b3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/object.h
+++ /dev/null
@@ -1,986 +0,0 @@
-#ifndef Py_OBJECT_H
-#define Py_OBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Object and type object interface */
-
-/*
-Objects are structures allocated on the heap.  Special rules apply to
-the use of objects to ensure they are properly garbage-collected.
-Objects are never allocated statically or on the stack; they must be
-accessed through special macros and functions only.  (Type objects are
-exceptions to the first rule; the standard types are represented by
-statically initialized type objects, although work on type/class unification
-for Python 2.2 made it possible to have heap-allocated type objects too).
-
-An object has a 'reference count' that is increased or decreased when a
-pointer to the object is copied or deleted; when the reference count
-reaches zero there are no references to the object left and it can be
-removed from the heap.
-
-An object has a 'type' that determines what it represents and what kind
-of data it contains.  An object's type is fixed when it is created.
-Types themselves are represented as objects; an object contains a
-pointer to the corresponding type object.  The type itself has a type
-pointer pointing to the object representing the type 'type', which
-contains a pointer to itself!).
-
-Objects do not float around in memory; once allocated an object keeps
-the same size and address.  Objects that must hold variable-size data
-can contain pointers to variable-size parts of the object.  Not all
-objects of the same type have the same size; but the size cannot change
-after allocation.  (These restrictions are made so a reference to an
-object can be simply a pointer -- moving an object would require
-updating all the pointers, and changing an object's size would require
-moving it if there was another object right next to it.)
-
-Objects are always accessed through pointers of the type 'PyObject *'.
-The type 'PyObject' is a structure that only contains the reference count
-and the type pointer.  The actual memory allocated for an object
-contains other data that can only be accessed after casting the pointer
-to a pointer to a longer structure type.  This longer type must start
-with the reference count and type fields; the macro PyObject_HEAD should be
-used for this (to accommodate for future changes).  The implementation
-of a particular object type can cast the object pointer to the proper
-type and back.
-
-A standard interface exists for objects that contain an array of items
-whose size is determined when the object is allocated.
-*/
-
-/* Py_DEBUG implies Py_TRACE_REFS. */
-#if defined(Py_DEBUG) && !defined(Py_TRACE_REFS)
-#define Py_TRACE_REFS
-#endif
-
-/* Py_TRACE_REFS implies Py_REF_DEBUG. */
-#if defined(Py_TRACE_REFS) && !defined(Py_REF_DEBUG)
-#define Py_REF_DEBUG
-#endif
-
-#ifdef Py_TRACE_REFS
-/* Define pointers to support a doubly-linked list of all live heap objects. */
-#define _PyObject_HEAD_EXTRA            \
-    struct _object *_ob_next;           \
-    struct _object *_ob_prev;
-
-#define _PyObject_EXTRA_INIT 0, 0,
-
-#else
-#define _PyObject_HEAD_EXTRA
-#define _PyObject_EXTRA_INIT
-#endif
-
-/* PyObject_HEAD defines the initial segment of every PyObject. */
-#define PyObject_HEAD                   \
-    _PyObject_HEAD_EXTRA                \
-    Py_ssize_t ob_refcnt;               \
-    struct _typeobject *ob_type;
-
-#define PyObject_HEAD_INIT(type)        \
-    _PyObject_EXTRA_INIT                \
-    1, type,
-
-#define PyVarObject_HEAD_INIT(type, size)       \
-    PyObject_HEAD_INIT(type) size,
-
-/* PyObject_VAR_HEAD defines the initial segment of all variable-size
- * container objects.  These end with a declaration of an array with 1
- * element, but enough space is malloc'ed so that the array actually
- * has room for ob_size elements.  Note that ob_size is an element count,
- * not necessarily a byte count.
- */
-#define PyObject_VAR_HEAD               \
-    PyObject_HEAD                       \
-    Py_ssize_t ob_size; /* Number of items in variable part */
-#define Py_INVALID_SIZE (Py_ssize_t)-1
-
-/* Nothing is actually declared to be a PyObject, but every pointer to
- * a Python object can be cast to a PyObject*.  This is inheritance built
- * by hand.  Similarly every pointer to a variable-size Python object can,
- * in addition, be cast to PyVarObject*.
- */
-typedef struct _object {
-    PyObject_HEAD
-} PyObject;
-
-typedef struct {
-    PyObject_VAR_HEAD
-} PyVarObject;
-
-#define Py_REFCNT(ob)           (((PyObject*)(ob))->ob_refcnt)
-#define Py_TYPE(ob)             (((PyObject*)(ob))->ob_type)
-#define Py_SIZE(ob)             (((PyVarObject*)(ob))->ob_size)
-
-/*
-Type objects contain a string containing the type name (to help somewhat
-in debugging), the allocation parameters (see PyObject_New() and
-PyObject_NewVar()),
-and methods for accessing objects of the type.  Methods are optional, a
-nil pointer meaning that particular kind of access is not available for
-this type.  The Py_DECREF() macro uses the tp_dealloc method without
-checking for a nil pointer; it should always be implemented except if
-the implementation can guarantee that the reference count will never
-reach zero (e.g., for statically allocated type objects).
-
-NB: the methods for certain type groups are now contained in separate
-method blocks.
-*/
-
-typedef PyObject * (*unaryfunc)(PyObject *);
-typedef PyObject * (*binaryfunc)(PyObject *, PyObject *);
-typedef PyObject * (*ternaryfunc)(PyObject *, PyObject *, PyObject *);
-typedef int (*inquiry)(PyObject *);
-typedef Py_ssize_t (*lenfunc)(PyObject *);
-typedef int (*coercion)(PyObject **, PyObject **);
-typedef PyObject *(*intargfunc)(PyObject *, int) Py_DEPRECATED(2.5);
-typedef PyObject *(*intintargfunc)(PyObject *, int, int) Py_DEPRECATED(2.5);
-typedef PyObject *(*ssizeargfunc)(PyObject *, Py_ssize_t);
-typedef PyObject *(*ssizessizeargfunc)(PyObject *, Py_ssize_t, Py_ssize_t);
-typedef int(*intobjargproc)(PyObject *, int, PyObject *);
-typedef int(*intintobjargproc)(PyObject *, int, int, PyObject *);
-typedef int(*ssizeobjargproc)(PyObject *, Py_ssize_t, PyObject *);
-typedef int(*ssizessizeobjargproc)(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *);
-typedef int(*objobjargproc)(PyObject *, PyObject *, PyObject *);
-
-
-
-/* int-based buffer interface */
-typedef int (*getreadbufferproc)(PyObject *, int, void **);
-typedef int (*getwritebufferproc)(PyObject *, int, void **);
-typedef int (*getsegcountproc)(PyObject *, int *);
-typedef int (*getcharbufferproc)(PyObject *, int, char **);
-/* ssize_t-based buffer interface */
-typedef Py_ssize_t (*readbufferproc)(PyObject *, Py_ssize_t, void **);
-typedef Py_ssize_t (*writebufferproc)(PyObject *, Py_ssize_t, void **);
-typedef Py_ssize_t (*segcountproc)(PyObject *, Py_ssize_t *);
-typedef Py_ssize_t (*charbufferproc)(PyObject *, Py_ssize_t, char **);
-
-
-/* Py3k buffer interface */
-typedef struct bufferinfo {
-    void *buf;
-    PyObject *obj;        /* owned reference */
-    Py_ssize_t len;
-    Py_ssize_t itemsize;  /* This is Py_ssize_t so it can be
-                             pointed to by strides in simple case.*/
-    int readonly;
-    int ndim;
-    char *format;
-    Py_ssize_t *shape;
-    Py_ssize_t *strides;
-    Py_ssize_t *suboffsets;
-    Py_ssize_t smalltable[2];  /* static store for shape and strides of
-                                  mono-dimensional buffers. */
-    void *internal;
-} Py_buffer;
-
-typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
-typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
-
-    /* Flags for getting buffers */
-#define PyBUF_SIMPLE 0
-#define PyBUF_WRITABLE 0x0001
-/*  we used to include an E, backwards compatible alias  */
-#define PyBUF_WRITEABLE PyBUF_WRITABLE
-#define PyBUF_FORMAT 0x0004
-#define PyBUF_ND 0x0008
-#define PyBUF_STRIDES (0x0010 | PyBUF_ND)
-#define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
-#define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
-#define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
-#define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
-
-#define PyBUF_CONTIG (PyBUF_ND | PyBUF_WRITABLE)
-#define PyBUF_CONTIG_RO (PyBUF_ND)
-
-#define PyBUF_STRIDED (PyBUF_STRIDES | PyBUF_WRITABLE)
-#define PyBUF_STRIDED_RO (PyBUF_STRIDES)
-
-#define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_WRITABLE | PyBUF_FORMAT)
-#define PyBUF_RECORDS_RO (PyBUF_STRIDES | PyBUF_FORMAT)
-
-#define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_WRITABLE | PyBUF_FORMAT)
-#define PyBUF_FULL_RO (PyBUF_INDIRECT | PyBUF_FORMAT)
-
-
-#define PyBUF_READ  0x100
-#define PyBUF_WRITE 0x200
-#define PyBUF_SHADOW 0x400
-/* end Py3k buffer interface */
-
-typedef int (*objobjproc)(PyObject *, PyObject *);
-typedef int (*visitproc)(PyObject *, void *);
-typedef int (*traverseproc)(PyObject *, visitproc, void *);
-
-typedef struct {
-    /* For numbers without flag bit Py_TPFLAGS_CHECKTYPES set, all
-       arguments are guaranteed to be of the object's type (modulo
-       coercion hacks -- i.e. if the type's coercion function
-       returns other types, then these are allowed as well).  Numbers that
-       have the Py_TPFLAGS_CHECKTYPES flag bit set should check *both*
-       arguments for proper type and implement the necessary conversions
-       in the slot functions themselves. */
-
-    binaryfunc nb_add;
-    binaryfunc nb_subtract;
-    binaryfunc nb_multiply;
-    binaryfunc nb_divide;
-    binaryfunc nb_remainder;
-    binaryfunc nb_divmod;
-    ternaryfunc nb_power;
-    unaryfunc nb_negative;
-    unaryfunc nb_positive;
-    unaryfunc nb_absolute;
-    inquiry nb_nonzero;
-    unaryfunc nb_invert;
-    binaryfunc nb_lshift;
-    binaryfunc nb_rshift;
-    binaryfunc nb_and;
-    binaryfunc nb_xor;
-    binaryfunc nb_or;
-    coercion nb_coerce;
-    unaryfunc nb_int;
-    unaryfunc nb_long;
-    unaryfunc nb_float;
-    unaryfunc nb_oct;
-    unaryfunc nb_hex;
-    /* Added in release 2.0 */
-    binaryfunc nb_inplace_add;
-    binaryfunc nb_inplace_subtract;
-    binaryfunc nb_inplace_multiply;
-    binaryfunc nb_inplace_divide;
-    binaryfunc nb_inplace_remainder;
-    ternaryfunc nb_inplace_power;
-    binaryfunc nb_inplace_lshift;
-    binaryfunc nb_inplace_rshift;
-    binaryfunc nb_inplace_and;
-    binaryfunc nb_inplace_xor;
-    binaryfunc nb_inplace_or;
-
-    /* Added in release 2.2 */
-    /* The following require the Py_TPFLAGS_HAVE_CLASS flag */
-    binaryfunc nb_floor_divide;
-    binaryfunc nb_true_divide;
-    binaryfunc nb_inplace_floor_divide;
-    binaryfunc nb_inplace_true_divide;
-
-    /* Added in release 2.5 */
-    unaryfunc nb_index;
-} PyNumberMethods;
-
-typedef struct {
-    lenfunc sq_length;
-    binaryfunc sq_concat;
-    ssizeargfunc sq_repeat;
-    ssizeargfunc sq_item;
-    ssizessizeargfunc sq_slice;
-    ssizeobjargproc sq_ass_item;
-    ssizessizeobjargproc sq_ass_slice;
-    objobjproc sq_contains;
-    /* Added in release 2.0 */
-    binaryfunc sq_inplace_concat;
-    ssizeargfunc sq_inplace_repeat;
-} PySequenceMethods;
-
-typedef struct {
-    lenfunc mp_length;
-    binaryfunc mp_subscript;
-    objobjargproc mp_ass_subscript;
-} PyMappingMethods;
-
-typedef struct {
-    readbufferproc bf_getreadbuffer;
-    writebufferproc bf_getwritebuffer;
-    segcountproc bf_getsegcount;
-    charbufferproc bf_getcharbuffer;
-    getbufferproc bf_getbuffer;
-    releasebufferproc bf_releasebuffer;
-} PyBufferProcs;
-
-
-typedef void (*freefunc)(void *);
-typedef void (*destructor)(PyObject *);
-typedef int (*printfunc)(PyObject *, FILE *, int);
-typedef PyObject *(*getattrfunc)(PyObject *, char *);
-typedef PyObject *(*getattrofunc)(PyObject *, PyObject *);
-typedef int (*setattrfunc)(PyObject *, char *, PyObject *);
-typedef int (*setattrofunc)(PyObject *, PyObject *, PyObject *);
-typedef int (*cmpfunc)(PyObject *, PyObject *);
-typedef PyObject *(*reprfunc)(PyObject *);
-typedef long (*hashfunc)(PyObject *);
-typedef PyObject *(*richcmpfunc) (PyObject *, PyObject *, int);
-typedef PyObject *(*getiterfunc) (PyObject *);
-typedef PyObject *(*iternextfunc) (PyObject *);
-typedef PyObject *(*descrgetfunc) (PyObject *, PyObject *, PyObject *);
-typedef int (*descrsetfunc) (PyObject *, PyObject *, PyObject *);
-typedef int (*initproc)(PyObject *, PyObject *, PyObject *);
-typedef PyObject *(*newfunc)(struct _typeobject *, PyObject *, PyObject *);
-typedef PyObject *(*allocfunc)(struct _typeobject *, Py_ssize_t);
-
-typedef struct _typeobject {
-    PyObject_VAR_HEAD
-    const char *tp_name; /* For printing, in format "<module>.<name>" */
-    Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */
-
-    /* Methods to implement standard operations */
-
-    destructor tp_dealloc;
-    printfunc tp_print;
-    getattrfunc tp_getattr;
-    setattrfunc tp_setattr;
-    cmpfunc tp_compare;
-    reprfunc tp_repr;
-
-    /* Method suites for standard classes */
-
-    PyNumberMethods *tp_as_number;
-    PySequenceMethods *tp_as_sequence;
-    PyMappingMethods *tp_as_mapping;
-
-    /* More standard operations (here for binary compatibility) */
-
-    hashfunc tp_hash;
-    ternaryfunc tp_call;
-    reprfunc tp_str;
-    getattrofunc tp_getattro;
-    setattrofunc tp_setattro;
-
-    /* Functions to access object as input/output buffer */
-    PyBufferProcs *tp_as_buffer;
-
-    /* Flags to define presence of optional/expanded features */
-    long tp_flags;
-
-    const char *tp_doc; /* Documentation string */
-
-    /* Assigned meaning in release 2.0 */
-    /* call function for all accessible objects */
-    traverseproc tp_traverse;
-
-    /* delete references to contained objects */
-    inquiry tp_clear;
-
-    /* Assigned meaning in release 2.1 */
-    /* rich comparisons */
-    richcmpfunc tp_richcompare;
-
-    /* weak reference enabler */
-    Py_ssize_t tp_weaklistoffset;
-
-    /* Added in release 2.2 */
-    /* Iterators */
-    getiterfunc tp_iter;
-    iternextfunc tp_iternext;
-
-    /* Attribute descriptor and subclassing stuff */
-    struct PyMethodDef *tp_methods;
-    struct PyMemberDef *tp_members;
-    struct PyGetSetDef *tp_getset;
-    struct _typeobject *tp_base;
-    PyObject *tp_dict;
-    descrgetfunc tp_descr_get;
-    descrsetfunc tp_descr_set;
-    Py_ssize_t tp_dictoffset;
-    initproc tp_init;
-    allocfunc tp_alloc;
-    newfunc tp_new;
-    freefunc tp_free; /* Low-level free-memory routine */
-    inquiry tp_is_gc; /* For PyObject_IS_GC */
-    PyObject *tp_bases;
-    PyObject *tp_mro; /* method resolution order */
-    PyObject *tp_cache;
-    PyObject *tp_subclasses;
-    PyObject *tp_weaklist;
-    destructor tp_del;
-
-    /* Type attribute cache version tag. Added in version 2.6 */
-    unsigned int tp_version_tag;
-
-#ifdef COUNT_ALLOCS
-    /* these must be last and never explicitly initialized */
-    Py_ssize_t tp_allocs;
-    Py_ssize_t tp_frees;
-    Py_ssize_t tp_maxalloc;
-    struct _typeobject *tp_prev;
-    struct _typeobject *tp_next;
-#endif
-} PyTypeObject;
-
-
-/* The *real* layout of a type object when allocated on the heap */
-typedef struct _heaptypeobject {
-    /* Note: there's a dependency on the order of these members
-       in slotptr() in typeobject.c . */
-    PyTypeObject ht_type;
-    PyNumberMethods as_number;
-    PyMappingMethods as_mapping;
-    PySequenceMethods as_sequence; /* as_sequence comes after as_mapping,
-                                      so that the mapping wins when both
-                                      the mapping and the sequence define
-                                      a given operator (e.g. __getitem__).
-                                      see add_operators() in typeobject.c . */
-    PyBufferProcs as_buffer;
-    PyObject *ht_name, *ht_slots;
-    /* here are optional user slots, followed by the members. */
-} PyHeapTypeObject;
-
-/* access macro to the members which are floating "behind" the object */
-#define PyHeapType_GET_MEMBERS(etype) \
-    ((PyMemberDef *)(((char *)etype) + Py_TYPE(etype)->tp_basicsize))
-
-
-/* Generic type check */
-PyAPI_FUNC(int) PyType_IsSubtype(PyTypeObject *, PyTypeObject *);
-#define PyObject_TypeCheck(ob, tp) \
-    (Py_TYPE(ob) == (tp) || PyType_IsSubtype(Py_TYPE(ob), (tp)))
-
-PyAPI_DATA(PyTypeObject) PyType_Type; /* built-in 'type' */
-PyAPI_DATA(PyTypeObject) PyBaseObject_Type; /* built-in 'object' */
-PyAPI_DATA(PyTypeObject) PySuper_Type; /* built-in 'super' */
-
-#define PyType_Check(op) \
-    PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TYPE_SUBCLASS)
-#define PyType_CheckExact(op) (Py_TYPE(op) == &PyType_Type)
-
-PyAPI_FUNC(int) PyType_Ready(PyTypeObject *);
-PyAPI_FUNC(PyObject *) PyType_GenericAlloc(PyTypeObject *, Py_ssize_t);
-PyAPI_FUNC(PyObject *) PyType_GenericNew(PyTypeObject *,
-                                               PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) _PyType_Lookup(PyTypeObject *, PyObject *);
-PyAPI_FUNC(PyObject *) _PyObject_LookupSpecial(PyObject *, char *, PyObject **);
-PyAPI_FUNC(unsigned int) PyType_ClearCache(void);
-PyAPI_FUNC(void) PyType_Modified(PyTypeObject *);
-
-/* Generic operations on objects */
-PyAPI_FUNC(int) PyObject_Print(PyObject *, FILE *, int);
-PyAPI_FUNC(void) _PyObject_Dump(PyObject *);
-PyAPI_FUNC(PyObject *) PyObject_Repr(PyObject *);
-PyAPI_FUNC(PyObject *) _PyObject_Str(PyObject *);
-PyAPI_FUNC(PyObject *) PyObject_Str(PyObject *);
-#define PyObject_Bytes PyObject_Str
-#ifdef Py_USING_UNICODE
-PyAPI_FUNC(PyObject *) PyObject_Unicode(PyObject *);
-#endif
-PyAPI_FUNC(int) PyObject_Compare(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyObject_RichCompare(PyObject *, PyObject *, int);
-PyAPI_FUNC(int) PyObject_RichCompareBool(PyObject *, PyObject *, int);
-PyAPI_FUNC(PyObject *) PyObject_GetAttrString(PyObject *, const char *);
-PyAPI_FUNC(int) PyObject_SetAttrString(PyObject *, const char *, PyObject *);
-PyAPI_FUNC(int) PyObject_HasAttrString(PyObject *, const char *);
-PyAPI_FUNC(PyObject *) PyObject_GetAttr(PyObject *, PyObject *);
-PyAPI_FUNC(int) PyObject_SetAttr(PyObject *, PyObject *, PyObject *);
-PyAPI_FUNC(int) PyObject_HasAttr(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject **) _PyObject_GetDictPtr(PyObject *);
-PyAPI_FUNC(PyObject *) PyObject_SelfIter(PyObject *);
-PyAPI_FUNC(PyObject *) _PyObject_NextNotImplemented(PyObject *);
-PyAPI_FUNC(PyObject *) PyObject_GenericGetAttr(PyObject *, PyObject *);
-PyAPI_FUNC(int) PyObject_GenericSetAttr(PyObject *,
-                                              PyObject *, PyObject *);
-PyAPI_FUNC(long) PyObject_Hash(PyObject *);
-PyAPI_FUNC(long) PyObject_HashNotImplemented(PyObject *);
-PyAPI_FUNC(int) PyObject_IsTrue(PyObject *);
-PyAPI_FUNC(int) PyObject_Not(PyObject *);
-PyAPI_FUNC(int) PyCallable_Check(PyObject *);
-PyAPI_FUNC(int) PyNumber_Coerce(PyObject **, PyObject **);
-PyAPI_FUNC(int) PyNumber_CoerceEx(PyObject **, PyObject **);
-
-PyAPI_FUNC(void) PyObject_ClearWeakRefs(PyObject *);
-
-/* A slot function whose address we need to compare */
-extern int _PyObject_SlotCompare(PyObject *, PyObject *);
-/* Same as PyObject_Generic{Get,Set}Attr, but passing the attributes
-   dict as the last parameter. */
-PyAPI_FUNC(PyObject *)
-_PyObject_GenericGetAttrWithDict(PyObject *, PyObject *, PyObject *);
-PyAPI_FUNC(int)
-_PyObject_GenericSetAttrWithDict(PyObject *, PyObject *,
-                                 PyObject *, PyObject *);
-
-
-/* PyObject_Dir(obj) acts like Python __builtin__.dir(obj), returning a
-   list of strings.  PyObject_Dir(NULL) is like __builtin__.dir(),
-   returning the names of the current locals.  In this case, if there are
-   no current locals, NULL is returned, and PyErr_Occurred() is false.
-*/
-PyAPI_FUNC(PyObject *) PyObject_Dir(PyObject *);
-
-
-/* Helpers for printing recursive container types */
-PyAPI_FUNC(int) Py_ReprEnter(PyObject *);
-PyAPI_FUNC(void) Py_ReprLeave(PyObject *);
-
-/* Helpers for hash functions */
-PyAPI_FUNC(long) _Py_HashDouble(double);
-PyAPI_FUNC(long) _Py_HashPointer(void*);
-
-/* Helper for passing objects to printf and the like */
-#define PyObject_REPR(obj) PyString_AS_STRING(PyObject_Repr(obj))
-
-/* Flag bits for printing: */
-#define Py_PRINT_RAW    1       /* No string quotes etc. */
-
-/*
-`Type flags (tp_flags)
-
-These flags are used to extend the type structure in a backwards-compatible
-fashion. Extensions can use the flags to indicate (and test) when a given
-type structure contains a new feature. The Python core will use these when
-introducing new functionality between major revisions (to avoid mid-version
-changes in the PYTHON_API_VERSION).
-
-Arbitration of the flag bit positions will need to be coordinated among
-all extension writers who publically release their extensions (this will
-be fewer than you might expect!)..
-
-Python 1.5.2 introduced the bf_getcharbuffer slot into PyBufferProcs.
-
-Type definitions should use Py_TPFLAGS_DEFAULT for their tp_flags value.
-
-Code can use PyType_HasFeature(type_ob, flag_value) to test whether the
-given type object has a specified feature.
-
-NOTE: when building the core, Py_TPFLAGS_DEFAULT includes
-Py_TPFLAGS_HAVE_VERSION_TAG; outside the core, it doesn't.  This is so
-that extensions that modify tp_dict of their own types directly don't
-break, since this was allowed in 2.5.  In 3.0 they will have to
-manually remove this flag though!
-*/
-
-/* PyBufferProcs contains bf_getcharbuffer */
-#define Py_TPFLAGS_HAVE_GETCHARBUFFER  (1L<<0)
-
-/* PySequenceMethods contains sq_contains */
-#define Py_TPFLAGS_HAVE_SEQUENCE_IN (1L<<1)
-
-/* This is here for backwards compatibility.  Extensions that use the old GC
- * API will still compile but the objects will not be tracked by the GC. */
-#define Py_TPFLAGS_GC 0 /* used to be (1L<<2) */
-
-/* PySequenceMethods and PyNumberMethods contain in-place operators */
-#define Py_TPFLAGS_HAVE_INPLACEOPS (1L<<3)
-
-/* PyNumberMethods do their own coercion */
-#define Py_TPFLAGS_CHECKTYPES (1L<<4)
-
-/* tp_richcompare is defined */
-#define Py_TPFLAGS_HAVE_RICHCOMPARE (1L<<5)
-
-/* Objects which are weakly referencable if their tp_weaklistoffset is >0 */
-#define Py_TPFLAGS_HAVE_WEAKREFS (1L<<6)
-
-/* tp_iter is defined */
-#define Py_TPFLAGS_HAVE_ITER (1L<<7)
-
-/* New members introduced by Python 2.2 exist */
-#define Py_TPFLAGS_HAVE_CLASS (1L<<8)
-
-/* Set if the type object is dynamically allocated */
-#define Py_TPFLAGS_HEAPTYPE (1L<<9)
-
-/* Set if the type allows subclassing */
-#define Py_TPFLAGS_BASETYPE (1L<<10)
-
-/* Set if the type is 'ready' -- fully initialized */
-#define Py_TPFLAGS_READY (1L<<12)
-
-/* Set while the type is being 'readied', to prevent recursive ready calls */
-#define Py_TPFLAGS_READYING (1L<<13)
-
-/* Objects support garbage collection (see objimp.h) */
-#define Py_TPFLAGS_HAVE_GC (1L<<14)
-
-/* These two bits are preserved for Stackless Python, next after this is 17 */
-#ifdef STACKLESS
-#define Py_TPFLAGS_HAVE_STACKLESS_EXTENSION (3L<<15)
-#else
-#define Py_TPFLAGS_HAVE_STACKLESS_EXTENSION 0
-#endif
-
-/* Objects support nb_index in PyNumberMethods */
-#define Py_TPFLAGS_HAVE_INDEX (1L<<17)
-
-/* Objects support type attribute cache */
-#define Py_TPFLAGS_HAVE_VERSION_TAG   (1L<<18)
-#define Py_TPFLAGS_VALID_VERSION_TAG  (1L<<19)
-
-/* Type is abstract and cannot be instantiated */
-#define Py_TPFLAGS_IS_ABSTRACT (1L<<20)
-
-/* Has the new buffer protocol */
-#define Py_TPFLAGS_HAVE_NEWBUFFER (1L<<21)
-
-/* These flags are used to determine if a type is a subclass. */
-#define Py_TPFLAGS_INT_SUBCLASS         (1L<<23)
-#define Py_TPFLAGS_LONG_SUBCLASS        (1L<<24)
-#define Py_TPFLAGS_LIST_SUBCLASS        (1L<<25)
-#define Py_TPFLAGS_TUPLE_SUBCLASS       (1L<<26)
-#define Py_TPFLAGS_STRING_SUBCLASS      (1L<<27)
-#define Py_TPFLAGS_UNICODE_SUBCLASS     (1L<<28)
-#define Py_TPFLAGS_DICT_SUBCLASS        (1L<<29)
-#define Py_TPFLAGS_BASE_EXC_SUBCLASS    (1L<<30)
-#define Py_TPFLAGS_TYPE_SUBCLASS        (1L<<31)
-
-#define Py_TPFLAGS_DEFAULT_EXTERNAL ( \
-                 Py_TPFLAGS_HAVE_GETCHARBUFFER | \
-                 Py_TPFLAGS_HAVE_SEQUENCE_IN | \
-                 Py_TPFLAGS_HAVE_INPLACEOPS | \
-                 Py_TPFLAGS_HAVE_RICHCOMPARE | \
-                 Py_TPFLAGS_HAVE_WEAKREFS | \
-                 Py_TPFLAGS_HAVE_ITER | \
-                 Py_TPFLAGS_HAVE_CLASS | \
-                 Py_TPFLAGS_HAVE_STACKLESS_EXTENSION | \
-                 Py_TPFLAGS_HAVE_INDEX | \
-                 0)
-#define Py_TPFLAGS_DEFAULT_CORE (Py_TPFLAGS_DEFAULT_EXTERNAL | \
-                 Py_TPFLAGS_HAVE_VERSION_TAG)
-
-#ifdef Py_BUILD_CORE
-#define Py_TPFLAGS_DEFAULT Py_TPFLAGS_DEFAULT_CORE
-#else
-#define Py_TPFLAGS_DEFAULT Py_TPFLAGS_DEFAULT_EXTERNAL
-#endif
-
-#define PyType_HasFeature(t,f)  (((t)->tp_flags & (f)) != 0)
-#define PyType_FastSubclass(t,f)  PyType_HasFeature(t,f)
-
-
-/*
-The macros Py_INCREF(op) and Py_DECREF(op) are used to increment or decrement
-reference counts.  Py_DECREF calls the object's deallocator function when
-the refcount falls to 0; for
-objects that don't contain references to other objects or heap memory
-this can be the standard function free().  Both macros can be used
-wherever a void expression is allowed.  The argument must not be a
-NULL pointer.  If it may be NULL, use Py_XINCREF/Py_XDECREF instead.
-The macro _Py_NewReference(op) initialize reference counts to 1, and
-in special builds (Py_REF_DEBUG, Py_TRACE_REFS) performs additional
-bookkeeping appropriate to the special build.
-
-We assume that the reference count field can never overflow; this can
-be proven when the size of the field is the same as the pointer size, so
-we ignore the possibility.  Provided a C int is at least 32 bits (which
-is implicitly assumed in many parts of this code), that's enough for
-about 2**31 references to an object.
-
-XXX The following became out of date in Python 2.2, but I'm not sure
-XXX what the full truth is now.  Certainly, heap-allocated type objects
-XXX can and should be deallocated.
-Type objects should never be deallocated; the type pointer in an object
-is not considered to be a reference to the type object, to save
-complications in the deallocation function.  (This is actually a
-decision that's up to the implementer of each new type so if you want,
-you can count such references to the type object.)
-
-*** WARNING*** The Py_DECREF macro must have a side-effect-free argument
-since it may evaluate its argument multiple times.  (The alternative
-would be to mace it a proper function or assign it to a global temporary
-variable first, both of which are slower; and in a multi-threaded
-environment the global variable trick is not safe.)
-*/
-
-/* First define a pile of simple helper macros, one set per special
- * build symbol.  These either expand to the obvious things, or to
- * nothing at all when the special mode isn't in effect.  The main
- * macros can later be defined just once then, yet expand to different
- * things depending on which special build options are and aren't in effect.
- * Trust me <wink>:  while painful, this is 20x easier to understand than,
- * e.g, defining _Py_NewReference five different times in a maze of nested
- * #ifdefs (we used to do that -- it was impenetrable).
- */
-#ifdef Py_REF_DEBUG
-PyAPI_DATA(Py_ssize_t) _Py_RefTotal;
-PyAPI_FUNC(void) _Py_NegativeRefcount(const char *fname,
-                                            int lineno, PyObject *op);
-PyAPI_FUNC(PyObject *) _PyDict_Dummy(void);
-PyAPI_FUNC(PyObject *) _PySet_Dummy(void);
-PyAPI_FUNC(Py_ssize_t) _Py_GetRefTotal(void);
-#define _Py_INC_REFTOTAL        _Py_RefTotal++
-#define _Py_DEC_REFTOTAL        _Py_RefTotal--
-#define _Py_REF_DEBUG_COMMA     ,
-#define _Py_CHECK_REFCNT(OP)                                    \
-{       if (((PyObject*)OP)->ob_refcnt < 0)                             \
-                _Py_NegativeRefcount(__FILE__, __LINE__,        \
-                                     (PyObject *)(OP));         \
-}
-#else
-#define _Py_INC_REFTOTAL
-#define _Py_DEC_REFTOTAL
-#define _Py_REF_DEBUG_COMMA
-#define _Py_CHECK_REFCNT(OP)    /* a semicolon */;
-#endif /* Py_REF_DEBUG */
-
-#ifdef COUNT_ALLOCS
-PyAPI_FUNC(void) inc_count(PyTypeObject *);
-PyAPI_FUNC(void) dec_count(PyTypeObject *);
-#define _Py_INC_TPALLOCS(OP)    inc_count(Py_TYPE(OP))
-#define _Py_INC_TPFREES(OP)     dec_count(Py_TYPE(OP))
-#define _Py_DEC_TPFREES(OP)     Py_TYPE(OP)->tp_frees--
-#define _Py_COUNT_ALLOCS_COMMA  ,
-#else
-#define _Py_INC_TPALLOCS(OP)
-#define _Py_INC_TPFREES(OP)
-#define _Py_DEC_TPFREES(OP)
-#define _Py_COUNT_ALLOCS_COMMA
-#endif /* COUNT_ALLOCS */
-
-#ifdef Py_TRACE_REFS
-/* Py_TRACE_REFS is such major surgery that we call external routines. */
-PyAPI_FUNC(void) _Py_NewReference(PyObject *);
-PyAPI_FUNC(void) _Py_ForgetReference(PyObject *);
-PyAPI_FUNC(void) _Py_Dealloc(PyObject *);
-PyAPI_FUNC(void) _Py_PrintReferences(FILE *);
-PyAPI_FUNC(void) _Py_PrintReferenceAddresses(FILE *);
-PyAPI_FUNC(void) _Py_AddToAllObjects(PyObject *, int force);
-
-#else
-/* Without Py_TRACE_REFS, there's little enough to do that we expand code
- * inline.
- */
-#define _Py_NewReference(op) (                          \
-    _Py_INC_TPALLOCS(op) _Py_COUNT_ALLOCS_COMMA         \
-    _Py_INC_REFTOTAL  _Py_REF_DEBUG_COMMA               \
-    Py_REFCNT(op) = 1)
-
-#define _Py_ForgetReference(op) _Py_INC_TPFREES(op)
-
-#define _Py_Dealloc(op) (                               \
-    _Py_INC_TPFREES(op) _Py_COUNT_ALLOCS_COMMA          \
-    (*Py_TYPE(op)->tp_dealloc)((PyObject *)(op)))
-#endif /* !Py_TRACE_REFS */
-
-#define Py_INCREF(op) (                         \
-    _Py_INC_REFTOTAL  _Py_REF_DEBUG_COMMA       \
-    ((PyObject*)(op))->ob_refcnt++)
-
-#define Py_DECREF(op)                                   \
-    do {                                                \
-        if (_Py_DEC_REFTOTAL  _Py_REF_DEBUG_COMMA       \
-        --((PyObject*)(op))->ob_refcnt != 0)            \
-            _Py_CHECK_REFCNT(op)                        \
-        else                                            \
-        _Py_Dealloc((PyObject *)(op));                  \
-    } while (0)
-
-/* Safely decref `op` and set `op` to NULL, especially useful in tp_clear
- * and tp_dealloc implementatons.
- *
- * Note that "the obvious" code can be deadly:
- *
- *     Py_XDECREF(op);
- *     op = NULL;
- *
- * Typically, `op` is something like self->containee, and `self` is done
- * using its `containee` member.  In the code sequence above, suppose
- * `containee` is non-NULL with a refcount of 1.  Its refcount falls to
- * 0 on the first line, which can trigger an arbitrary amount of code,
- * possibly including finalizers (like __del__ methods or weakref callbacks)
- * coded in Python, which in turn can release the GIL and allow other threads
- * to run, etc.  Such code may even invoke methods of `self` again, or cause
- * cyclic gc to trigger, but-- oops! --self->containee still points to the
- * object being torn down, and it may be in an insane state while being torn
- * down.  This has in fact been a rich historic source of miserable (rare &
- * hard-to-diagnose) segfaulting (and other) bugs.
- *
- * The safe way is:
- *
- *      Py_CLEAR(op);
- *
- * That arranges to set `op` to NULL _before_ decref'ing, so that any code
- * triggered as a side-effect of `op` getting torn down no longer believes
- * `op` points to a valid object.
- *
- * There are cases where it's safe to use the naive code, but they're brittle.
- * For example, if `op` points to a Python integer, you know that destroying
- * one of those can't cause problems -- but in part that relies on that
- * Python integers aren't currently weakly referencable.  Best practice is
- * to use Py_CLEAR() even if you can't think of a reason for why you need to.
- */
-#define Py_CLEAR(op)                            \
-    do {                                        \
-        if (op) {                               \
-            PyObject *_py_tmp = (PyObject *)(op);               \
-            (op) = NULL;                        \
-            Py_DECREF(_py_tmp);                 \
-        }                                       \
-    } while (0)
-
-/* Macros to use in case the object pointer may be NULL: */
-#define Py_XINCREF(op) do { if ((op) == NULL) ; else Py_INCREF(op); } while (0)
-#define Py_XDECREF(op) do { if ((op) == NULL) ; else Py_DECREF(op); } while (0)
-
-/*
-These are provided as conveniences to Python runtime embedders, so that
-they can have object code that is not dependent on Python compilation flags.
-*/
-PyAPI_FUNC(void) Py_IncRef(PyObject *);
-PyAPI_FUNC(void) Py_DecRef(PyObject *);
-
-/*
-_Py_NoneStruct is an object of undefined type which can be used in contexts
-where NULL (nil) is not suitable (since NULL often means 'error').
-
-Don't forget to apply Py_INCREF() when returning this value!!!
-*/
-PyAPI_DATA(PyObject) _Py_NoneStruct; /* Don't use this directly */
-#define Py_None (&_Py_NoneStruct)
-
-/* Macro for returning Py_None from a function */
-#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None
-
-/*
-Py_NotImplemented is a singleton used to signal that an operation is
-not implemented for a given type combination.
-*/
-PyAPI_DATA(PyObject) _Py_NotImplementedStruct; /* Don't use this directly */
-#define Py_NotImplemented (&_Py_NotImplementedStruct)
-
-/* Rich comparison opcodes */
-#define Py_LT 0
-#define Py_LE 1
-#define Py_EQ 2
-#define Py_NE 3
-#define Py_GT 4
-#define Py_GE 5
-
-/* Maps Py_LT to Py_GT, ..., Py_GE to Py_LE.
- * Defined in object.c.
- */
-PyAPI_DATA(int) _Py_SwappedOp[];
-
-/*
-Define staticforward and statichere for source compatibility with old
-C extensions.
-
-The staticforward define was needed to support certain broken C
-compilers (notably SCO ODT 3.0, perhaps early AIX as well) botched the
-static keyword when it was used with a forward declaration of a static
-initialized structure.  Standard C allows the forward declaration with
-static, and we've decided to stop catering to broken C compilers.
-(In fact, we expect that the compilers are all fixed eight years later.)
-*/
-
-#define staticforward static
-#define statichere static
-
-
-/*
-More conventions
-================
-
-Argument Checking
------------------
-
-Functions that take objects as arguments normally don't check for nil
-arguments, but they do check the type of the argument, and return an
-error if the function doesn't apply to the type.
-
-Failure Modes
--------------
-
-Functions may fail for a variety of reasons, including running out of
-memory.  This is communicated to the caller in two ways: an error string
-is set (see errors.h), and the function result differs: functions that
-normally return a pointer return NULL for failure, functions returning
-an integer return -1 (which could be a legal return value too!), and
-other functions return 0 for success and -1 for failure.
-Callers should always check for errors before using the result.  If
-an error was set, the caller must either explicitly clear it, or pass
-the error on to its caller.
-
-Reference Counts
-----------------
-
-It takes a while to get used to the proper usage of reference counts.
-
-Functions that create an object set the reference count to 1; such new
-objects must be stored somewhere or destroyed again with Py_DECREF().
-Some functions that 'store' objects, such as PyTuple_SetItem() and
-PyList_SetItem(),
-don't increment the reference count of the object, since the most
-frequent use is to store a fresh object.  Functions that 'retrieve'
-objects, such as PyTuple_GetItem() and PyDict_GetItemString(), also
-don't increment
-the reference count, since most frequently the object is only looked at
-quickly.  Thus, to retrieve an object and store it again, the caller
-must call Py_INCREF() explicitly.
-
-NOTE: functions that 'consume' a reference count, like
-PyList_SetItem(), consume the reference even if the object wasn't
-successfully stored, to simplify error handling.
-
-It seems attractive to make other functions that take an object as
-argument consume a reference count; however, this may quickly get
-confusing (even the current practice is already confusing).  Consider
-it carefully, it may save lots of calls to Py_INCREF() and Py_DECREF() at
-times.
-*/
-
-
-/* Trashcan mechanism, thanks to Christian Tismer.
-
-When deallocating a container object, it's possible to trigger an unbounded
-chain of deallocations, as each Py_DECREF in turn drops the refcount on "the
-next" object in the chain to 0.  This can easily lead to stack faults, and
-especially in threads (which typically have less stack space to work with).
-
-A container object that participates in cyclic gc can avoid this by
-bracketing the body of its tp_dealloc function with a pair of macros:
-
-static void
-mytype_dealloc(mytype *p)
-{
-    ... declarations go here ...
-
-    PyObject_GC_UnTrack(p);        // must untrack first
-    Py_TRASHCAN_SAFE_BEGIN(p)
-    ... The body of the deallocator goes here, including all calls ...
-    ... to Py_DECREF on contained objects.                         ...
-    Py_TRASHCAN_SAFE_END(p)
-}
-
-CAUTION:  Never return from the middle of the body!  If the body needs to
-"get out early", put a label immediately before the Py_TRASHCAN_SAFE_END
-call, and goto it.  Else the call-depth counter (see below) will stay
-above 0 forever, and the trashcan will never get emptied.
-
-How it works:  The BEGIN macro increments a call-depth counter.  So long
-as this counter is small, the body of the deallocator is run directly without
-further ado.  But if the counter gets large, it instead adds p to a list of
-objects to be deallocated later, skips the body of the deallocator, and
-resumes execution after the END macro.  The tp_dealloc routine then returns
-without deallocating anything (and so unbounded call-stack depth is avoided).
-
-When the call stack finishes unwinding again, code generated by the END macro
-notices this, and calls another routine to deallocate all the objects that
-may have been added to the list of deferred deallocations.  In effect, a
-chain of N deallocations is broken into N / PyTrash_UNWIND_LEVEL pieces,
-with the call stack never exceeding a depth of PyTrash_UNWIND_LEVEL.
-*/
-
-PyAPI_FUNC(void) _PyTrash_deposit_object(PyObject*);
-PyAPI_FUNC(void) _PyTrash_destroy_chain(void);
-PyAPI_DATA(int) _PyTrash_delete_nesting;
-PyAPI_DATA(PyObject *) _PyTrash_delete_later;
-
-#define PyTrash_UNWIND_LEVEL 50
-
-#define Py_TRASHCAN_SAFE_BEGIN(op) \
-    if (_PyTrash_delete_nesting < PyTrash_UNWIND_LEVEL) { \
-        ++_PyTrash_delete_nesting;
-        /* The body of the deallocator is here. */
-#define Py_TRASHCAN_SAFE_END(op) \
-        --_PyTrash_delete_nesting; \
-        if (_PyTrash_delete_later && _PyTrash_delete_nesting <= 0) \
-            _PyTrash_destroy_chain(); \
-    } \
-    else \
-        _PyTrash_deposit_object((PyObject*)op);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_OBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/objimpl.h b/AppPkg/Applications/Python/Python-2.7.2/Include/objimpl.h
deleted file mode 100644
index 79d7e2d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/objimpl.h
+++ /dev/null
@@ -1,354 +0,0 @@
-/* The PyObject_ memory family:  high-level object memory interfaces.
-   See pymem.h for the low-level PyMem_ family.
-*/
-
-#ifndef Py_OBJIMPL_H
-#define Py_OBJIMPL_H
-
-#include "pymem.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* BEWARE:
-
-   Each interface exports both functions and macros.  Extension modules should
-   use the functions, to ensure binary compatibility across Python versions.
-   Because the Python implementation is free to change internal details, and
-   the macros may (or may not) expose details for speed, if you do use the
-   macros you must recompile your extensions with each Python release.
-
-   Never mix calls to PyObject_ memory functions with calls to the platform
-   malloc/realloc/ calloc/free, or with calls to PyMem_.
-*/
-
-/*
-Functions and macros for modules that implement new object types.
-
- - PyObject_New(type, typeobj) allocates memory for a new object of the given
-   type, and initializes part of it.  'type' must be the C structure type used
-   to represent the object, and 'typeobj' the address of the corresponding
-   type object.  Reference count and type pointer are filled in; the rest of
-   the bytes of the object are *undefined*!  The resulting expression type is
-   'type *'.  The size of the object is determined by the tp_basicsize field
-   of the type object.
-
- - PyObject_NewVar(type, typeobj, n) is similar but allocates a variable-size
-   object with room for n items.  In addition to the refcount and type pointer
-   fields, this also fills in the ob_size field.
-
- - PyObject_Del(op) releases the memory allocated for an object.  It does not
-   run a destructor -- it only frees the memory.  PyObject_Free is identical.
-
- - PyObject_Init(op, typeobj) and PyObject_InitVar(op, typeobj, n) don't
-   allocate memory.  Instead of a 'type' parameter, they take a pointer to a
-   new object (allocated by an arbitrary allocator), and initialize its object
-   header fields.
-
-Note that objects created with PyObject_{New, NewVar} are allocated using the
-specialized Python allocator (implemented in obmalloc.c), if WITH_PYMALLOC is
-enabled.  In addition, a special debugging allocator is used if PYMALLOC_DEBUG
-is also #defined.
-
-In case a specific form of memory management is needed (for example, if you
-must use the platform malloc heap(s), or shared memory, or C++ local storage or
-operator new), you must first allocate the object with your custom allocator,
-then pass its pointer to PyObject_{Init, InitVar} for filling in its Python-
-specific fields:  reference count, type pointer, possibly others.  You should
-be aware that Python no control over these objects because they don't
-cooperate with the Python memory manager.  Such objects may not be eligible
-for automatic garbage collection and you have to make sure that they are
-released accordingly whenever their destructor gets called (cf. the specific
-form of memory management you're using).
-
-Unless you have specific memory management requirements, use
-PyObject_{New, NewVar, Del}.
-*/
-
-/*
- * Raw object memory interface
- * ===========================
- */
-
-/* Functions to call the same malloc/realloc/free as used by Python's
-   object allocator.  If WITH_PYMALLOC is enabled, these may differ from
-   the platform malloc/realloc/free.  The Python object allocator is
-   designed for fast, cache-conscious allocation of many "small" objects,
-   and with low hidden memory overhead.
-
-   PyObject_Malloc(0) returns a unique non-NULL pointer if possible.
-
-   PyObject_Realloc(NULL, n) acts like PyObject_Malloc(n).
-   PyObject_Realloc(p != NULL, 0) does not return  NULL, or free the memory
-   at p.
-
-   Returned pointers must be checked for NULL explicitly; no action is
-   performed on failure other than to return NULL (no warning it printed, no
-   exception is set, etc).
-
-   For allocating objects, use PyObject_{New, NewVar} instead whenever
-   possible.  The PyObject_{Malloc, Realloc, Free} family is exposed
-   so that you can exploit Python's small-block allocator for non-object
-   uses.  If you must use these routines to allocate object memory, make sure
-   the object gets initialized via PyObject_{Init, InitVar} after obtaining
-   the raw memory.
-*/
-PyAPI_FUNC(void *) PyObject_Malloc(size_t);
-PyAPI_FUNC(void *) PyObject_Realloc(void *, size_t);
-PyAPI_FUNC(void) PyObject_Free(void *);
-
-
-/* Macros */
-#ifdef WITH_PYMALLOC
-#ifdef PYMALLOC_DEBUG   /* WITH_PYMALLOC && PYMALLOC_DEBUG */
-PyAPI_FUNC(void *) _PyObject_DebugMalloc(size_t nbytes);
-PyAPI_FUNC(void *) _PyObject_DebugRealloc(void *p, size_t nbytes);
-PyAPI_FUNC(void) _PyObject_DebugFree(void *p);
-PyAPI_FUNC(void) _PyObject_DebugDumpAddress(const void *p);
-PyAPI_FUNC(void) _PyObject_DebugCheckAddress(const void *p);
-PyAPI_FUNC(void) _PyObject_DebugMallocStats(void);
-PyAPI_FUNC(void *) _PyObject_DebugMallocApi(char api, size_t nbytes);
-PyAPI_FUNC(void *) _PyObject_DebugReallocApi(char api, void *p, size_t nbytes);
-PyAPI_FUNC(void) _PyObject_DebugFreeApi(char api, void *p);
-PyAPI_FUNC(void) _PyObject_DebugCheckAddressApi(char api, const void *p);
-PyAPI_FUNC(void *) _PyMem_DebugMalloc(size_t nbytes);
-PyAPI_FUNC(void *) _PyMem_DebugRealloc(void *p, size_t nbytes);
-PyAPI_FUNC(void) _PyMem_DebugFree(void *p);
-#define PyObject_MALLOC         _PyObject_DebugMalloc
-#define PyObject_Malloc         _PyObject_DebugMalloc
-#define PyObject_REALLOC        _PyObject_DebugRealloc
-#define PyObject_Realloc        _PyObject_DebugRealloc
-#define PyObject_FREE           _PyObject_DebugFree
-#define PyObject_Free           _PyObject_DebugFree
-
-#else   /* WITH_PYMALLOC && ! PYMALLOC_DEBUG */
-#define PyObject_MALLOC         PyObject_Malloc
-#define PyObject_REALLOC        PyObject_Realloc
-#define PyObject_FREE           PyObject_Free
-#endif
-
-#else   /* ! WITH_PYMALLOC */
-#define PyObject_MALLOC         PyMem_MALLOC
-#define PyObject_REALLOC        PyMem_REALLOC
-#define PyObject_FREE           PyMem_FREE
-
-#endif  /* WITH_PYMALLOC */
-
-#define PyObject_Del            PyObject_Free
-#define PyObject_DEL            PyObject_FREE
-
-/* for source compatibility with 2.2 */
-#define _PyObject_Del           PyObject_Free
-
-/*
- * Generic object allocator interface
- * ==================================
- */
-
-/* Functions */
-PyAPI_FUNC(PyObject *) PyObject_Init(PyObject *, PyTypeObject *);
-PyAPI_FUNC(PyVarObject *) PyObject_InitVar(PyVarObject *,
-                                                 PyTypeObject *, Py_ssize_t);
-PyAPI_FUNC(PyObject *) _PyObject_New(PyTypeObject *);
-PyAPI_FUNC(PyVarObject *) _PyObject_NewVar(PyTypeObject *, Py_ssize_t);
-
-#define PyObject_New(type, typeobj) \
-                ( (type *) _PyObject_New(typeobj) )
-#define PyObject_NewVar(type, typeobj, n) \
-                ( (type *) _PyObject_NewVar((typeobj), (n)) )
-
-/* Macros trading binary compatibility for speed. See also pymem.h.
-   Note that these macros expect non-NULL object pointers.*/
-#define PyObject_INIT(op, typeobj) \
-    ( Py_TYPE(op) = (typeobj), _Py_NewReference((PyObject *)(op)), (op) )
-#define PyObject_INIT_VAR(op, typeobj, size) \
-    ( Py_SIZE(op) = (size), PyObject_INIT((op), (typeobj)) )
-
-#define _PyObject_SIZE(typeobj) ( (typeobj)->tp_basicsize )
-
-/* _PyObject_VAR_SIZE returns the number of bytes (as size_t) allocated for a
-   vrbl-size object with nitems items, exclusive of gc overhead (if any).  The
-   value is rounded up to the closest multiple of sizeof(void *), in order to
-   ensure that pointer fields at the end of the object are correctly aligned
-   for the platform (this is of special importance for subclasses of, e.g.,
-   str or long, so that pointers can be stored after the embedded data).
-
-   Note that there's no memory wastage in doing this, as malloc has to
-   return (at worst) pointer-aligned memory anyway.
-*/
-#if ((SIZEOF_VOID_P - 1) & SIZEOF_VOID_P) != 0
-#   error "_PyObject_VAR_SIZE requires SIZEOF_VOID_P be a power of 2"
-#endif
-
-#define _PyObject_VAR_SIZE(typeobj, nitems)     \
-    (size_t)                                    \
-    ( ( (typeobj)->tp_basicsize +               \
-        (nitems)*(typeobj)->tp_itemsize +       \
-        (SIZEOF_VOID_P - 1)                     \
-      ) & ~(SIZEOF_VOID_P - 1)                  \
-    )
-
-#define PyObject_NEW(type, typeobj) \
-( (type *) PyObject_Init( \
-    (PyObject *) PyObject_MALLOC( _PyObject_SIZE(typeobj) ), (typeobj)) )
-
-#define PyObject_NEW_VAR(type, typeobj, n) \
-( (type *) PyObject_InitVar( \
-      (PyVarObject *) PyObject_MALLOC(_PyObject_VAR_SIZE((typeobj),(n)) ),\
-      (typeobj), (n)) )
-
-/* This example code implements an object constructor with a custom
-   allocator, where PyObject_New is inlined, and shows the important
-   distinction between two steps (at least):
-       1) the actual allocation of the object storage;
-       2) the initialization of the Python specific fields
-      in this storage with PyObject_{Init, InitVar}.
-
-   PyObject *
-   YourObject_New(...)
-   {
-       PyObject *op;
-
-       op = (PyObject *) Your_Allocator(_PyObject_SIZE(YourTypeStruct));
-       if (op == NULL)
-       return PyErr_NoMemory();
-
-       PyObject_Init(op, &YourTypeStruct);
-
-       op->ob_field = value;
-       ...
-       return op;
-   }
-
-   Note that in C++, the use of the new operator usually implies that
-   the 1st step is performed automatically for you, so in a C++ class
-   constructor you would start directly with PyObject_Init/InitVar
-*/
-
-/*
- * Garbage Collection Support
- * ==========================
- */
-
-/* C equivalent of gc.collect(). */
-PyAPI_FUNC(Py_ssize_t) PyGC_Collect(void);
-
-/* Test if a type has a GC head */
-#define PyType_IS_GC(t) PyType_HasFeature((t), Py_TPFLAGS_HAVE_GC)
-
-/* Test if an object has a GC head */
-#define PyObject_IS_GC(o) (PyType_IS_GC(Py_TYPE(o)) && \
-    (Py_TYPE(o)->tp_is_gc == NULL || Py_TYPE(o)->tp_is_gc(o)))
-
-PyAPI_FUNC(PyVarObject *) _PyObject_GC_Resize(PyVarObject *, Py_ssize_t);
-#define PyObject_GC_Resize(type, op, n) \
-                ( (type *) _PyObject_GC_Resize((PyVarObject *)(op), (n)) )
-
-/* for source compatibility with 2.2 */
-#define _PyObject_GC_Del PyObject_GC_Del
-
-/* GC information is stored BEFORE the object structure. */
-typedef union _gc_head {
-    struct {
-        union _gc_head *gc_next;
-        union _gc_head *gc_prev;
-        Py_ssize_t gc_refs;
-    } gc;
-    long double dummy;  /* force worst-case alignment */
-} PyGC_Head;
-
-extern PyGC_Head *_PyGC_generation0;
-
-#define _Py_AS_GC(o) ((PyGC_Head *)(o)-1)
-
-#define _PyGC_REFS_UNTRACKED                    (-2)
-#define _PyGC_REFS_REACHABLE                    (-3)
-#define _PyGC_REFS_TENTATIVELY_UNREACHABLE      (-4)
-
-/* Tell the GC to track this object.  NB: While the object is tracked the
- * collector it must be safe to call the ob_traverse method. */
-#define _PyObject_GC_TRACK(o) do { \
-    PyGC_Head *g = _Py_AS_GC(o); \
-    if (g->gc.gc_refs != _PyGC_REFS_UNTRACKED) \
-        Py_FatalError("GC object already tracked"); \
-    g->gc.gc_refs = _PyGC_REFS_REACHABLE; \
-    g->gc.gc_next = _PyGC_generation0; \
-    g->gc.gc_prev = _PyGC_generation0->gc.gc_prev; \
-    g->gc.gc_prev->gc.gc_next = g; \
-    _PyGC_generation0->gc.gc_prev = g; \
-    } while (0);
-
-/* Tell the GC to stop tracking this object.
- * gc_next doesn't need to be set to NULL, but doing so is a good
- * way to provoke memory errors if calling code is confused.
- */
-#define _PyObject_GC_UNTRACK(o) do { \
-    PyGC_Head *g = _Py_AS_GC(o); \
-    assert(g->gc.gc_refs != _PyGC_REFS_UNTRACKED); \
-    g->gc.gc_refs = _PyGC_REFS_UNTRACKED; \
-    g->gc.gc_prev->gc.gc_next = g->gc.gc_next; \
-    g->gc.gc_next->gc.gc_prev = g->gc.gc_prev; \
-    g->gc.gc_next = NULL; \
-    } while (0);
-
-/* True if the object is currently tracked by the GC. */
-#define _PyObject_GC_IS_TRACKED(o) \
-    ((_Py_AS_GC(o))->gc.gc_refs != _PyGC_REFS_UNTRACKED)
-
-/* True if the object may be tracked by the GC in the future, or already is.
-   This can be useful to implement some optimizations. */
-#define _PyObject_GC_MAY_BE_TRACKED(obj) \
-    (PyObject_IS_GC(obj) && \
-        (!PyTuple_CheckExact(obj) || _PyObject_GC_IS_TRACKED(obj)))
-
-
-PyAPI_FUNC(PyObject *) _PyObject_GC_Malloc(size_t);
-PyAPI_FUNC(PyObject *) _PyObject_GC_New(PyTypeObject *);
-PyAPI_FUNC(PyVarObject *) _PyObject_GC_NewVar(PyTypeObject *, Py_ssize_t);
-PyAPI_FUNC(void) PyObject_GC_Track(void *);
-PyAPI_FUNC(void) PyObject_GC_UnTrack(void *);
-PyAPI_FUNC(void) PyObject_GC_Del(void *);
-
-#define PyObject_GC_New(type, typeobj) \
-                ( (type *) _PyObject_GC_New(typeobj) )
-#define PyObject_GC_NewVar(type, typeobj, n) \
-                ( (type *) _PyObject_GC_NewVar((typeobj), (n)) )
-
-
-/* Utility macro to help write tp_traverse functions.
- * To use this macro, the tp_traverse function must name its arguments
- * "visit" and "arg".  This is intended to keep tp_traverse functions
- * looking as much alike as possible.
- */
-#define Py_VISIT(op)                                                    \
-    do {                                                                \
-        if (op) {                                                       \
-            int vret = visit((PyObject *)(op), arg);                    \
-            if (vret)                                                   \
-                return vret;                                            \
-        }                                                               \
-    } while (0)
-
-/* This is here for the sake of backwards compatibility.  Extensions that
- * use the old GC API will still compile but the objects will not be
- * tracked by the GC. */
-#define PyGC_HEAD_SIZE 0
-#define PyObject_GC_Init(op)
-#define PyObject_GC_Fini(op)
-#define PyObject_AS_GC(op) (op)
-#define PyObject_FROM_GC(op) (op)
-
-
-/* Test if a type supports weak references */
-#define PyType_SUPPORTS_WEAKREFS(t) \
-    (PyType_HasFeature((t), Py_TPFLAGS_HAVE_WEAKREFS) \
-     && ((t)->tp_weaklistoffset > 0))
-
-#define PyObject_GET_WEAKREFS_LISTPTR(o) \
-    ((PyObject **) (((char *) (o)) + Py_TYPE(o)->tp_weaklistoffset))
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_OBJIMPL_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/opcode.h b/AppPkg/Applications/Python/Python-2.7.2/Include/opcode.h
deleted file mode 100644
index fe2a690..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/opcode.h
+++ /dev/null
@@ -1,162 +0,0 @@
-#ifndef Py_OPCODE_H
-#define Py_OPCODE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Instruction opcodes for compiled code */
-
-#define STOP_CODE	0
-#define POP_TOP		1
-#define ROT_TWO		2
-#define ROT_THREE	3
-#define DUP_TOP		4
-#define ROT_FOUR	5
-#define NOP		9
-
-#define UNARY_POSITIVE	10
-#define UNARY_NEGATIVE	11
-#define UNARY_NOT	12
-#define UNARY_CONVERT	13
-
-#define UNARY_INVERT	15
-
-#define BINARY_POWER	19
-
-#define BINARY_MULTIPLY	20
-#define BINARY_DIVIDE	21
-#define BINARY_MODULO	22
-#define BINARY_ADD	23
-#define BINARY_SUBTRACT	24
-#define BINARY_SUBSCR	25
-#define BINARY_FLOOR_DIVIDE 26
-#define BINARY_TRUE_DIVIDE 27
-#define INPLACE_FLOOR_DIVIDE 28
-#define INPLACE_TRUE_DIVIDE 29
-
-#define SLICE		30
-/* Also uses 31-33 */
-
-#define STORE_SLICE	40
-/* Also uses 41-43 */
-
-#define DELETE_SLICE	50
-/* Also uses 51-53 */
-
-#define STORE_MAP	54
-#define INPLACE_ADD	55
-#define INPLACE_SUBTRACT	56
-#define INPLACE_MULTIPLY	57
-#define INPLACE_DIVIDE	58
-#define INPLACE_MODULO	59
-#define STORE_SUBSCR	60
-#define DELETE_SUBSCR	61
-
-#define BINARY_LSHIFT	62
-#define BINARY_RSHIFT	63
-#define BINARY_AND	64
-#define BINARY_XOR	65
-#define BINARY_OR	66
-#define INPLACE_POWER	67
-#define GET_ITER	68
-
-#define PRINT_EXPR	70
-#define PRINT_ITEM	71
-#define PRINT_NEWLINE	72
-#define PRINT_ITEM_TO   73
-#define PRINT_NEWLINE_TO 74
-#define INPLACE_LSHIFT	75
-#define INPLACE_RSHIFT	76
-#define INPLACE_AND	77
-#define INPLACE_XOR	78
-#define INPLACE_OR	79
-#define BREAK_LOOP	80
-#define WITH_CLEANUP    81
-#define LOAD_LOCALS	82
-#define RETURN_VALUE	83
-#define IMPORT_STAR	84
-#define EXEC_STMT	85
-#define YIELD_VALUE	86
-#define POP_BLOCK	87
-#define END_FINALLY	88
-#define BUILD_CLASS	89
-
-#define HAVE_ARGUMENT	90	/* Opcodes from here have an argument: */
-
-#define STORE_NAME	90	/* Index in name list */
-#define DELETE_NAME	91	/* "" */
-#define UNPACK_SEQUENCE	92	/* Number of sequence items */
-#define FOR_ITER	93
-#define LIST_APPEND	94
-
-#define STORE_ATTR	95	/* Index in name list */
-#define DELETE_ATTR	96	/* "" */
-#define STORE_GLOBAL	97	/* "" */
-#define DELETE_GLOBAL	98	/* "" */
-#define DUP_TOPX	99	/* number of items to duplicate */
-#define LOAD_CONST	100	/* Index in const list */
-#define LOAD_NAME	101	/* Index in name list */
-#define BUILD_TUPLE	102	/* Number of tuple items */
-#define BUILD_LIST	103	/* Number of list items */
-#define BUILD_SET	104     /* Number of set items */
-#define BUILD_MAP	105	/* Always zero for now */
-#define LOAD_ATTR	106	/* Index in name list */
-#define COMPARE_OP	107	/* Comparison operator */
-#define IMPORT_NAME	108	/* Index in name list */
-#define IMPORT_FROM	109	/* Index in name list */
-#define JUMP_FORWARD	110	/* Number of bytes to skip */
-
-#define JUMP_IF_FALSE_OR_POP 111 /* Target byte offset from beginning
-                                    of code */
-#define JUMP_IF_TRUE_OR_POP 112	/* "" */
-#define JUMP_ABSOLUTE	113	/* "" */
-#define POP_JUMP_IF_FALSE 114	/* "" */
-#define POP_JUMP_IF_TRUE 115	/* "" */
-
-#define LOAD_GLOBAL	116	/* Index in name list */
-
-#define CONTINUE_LOOP	119	/* Start of loop (absolute) */
-#define SETUP_LOOP	120	/* Target address (relative) */
-#define SETUP_EXCEPT	121	/* "" */
-#define SETUP_FINALLY	122	/* "" */
-
-#define LOAD_FAST	124	/* Local variable number */
-#define STORE_FAST	125	/* Local variable number */
-#define DELETE_FAST	126	/* Local variable number */
-
-#define RAISE_VARARGS	130	/* Number of raise arguments (1, 2 or 3) */
-/* CALL_FUNCTION_XXX opcodes defined below depend on this definition */
-#define CALL_FUNCTION	131	/* #args + (#kwargs<<8) */
-#define MAKE_FUNCTION	132	/* #defaults */
-#define BUILD_SLICE 	133	/* Number of items */
-
-#define MAKE_CLOSURE    134     /* #free vars */
-#define LOAD_CLOSURE    135     /* Load free variable from closure */
-#define LOAD_DEREF      136     /* Load and dereference from closure cell */ 
-#define STORE_DEREF     137     /* Store into cell */ 
-
-/* The next 3 opcodes must be contiguous and satisfy
-   (CALL_FUNCTION_VAR - CALL_FUNCTION) & 3 == 1  */
-#define CALL_FUNCTION_VAR          140	/* #args + (#kwargs<<8) */
-#define CALL_FUNCTION_KW           141	/* #args + (#kwargs<<8) */
-#define CALL_FUNCTION_VAR_KW       142	/* #args + (#kwargs<<8) */
-
-#define SETUP_WITH 143
-
-/* Support for opargs more than 16 bits long */
-#define EXTENDED_ARG  145
-
-#define SET_ADD         146
-#define MAP_ADD         147
-
-
-enum cmp_op {PyCmp_LT=Py_LT, PyCmp_LE=Py_LE, PyCmp_EQ=Py_EQ, PyCmp_NE=Py_NE, PyCmp_GT=Py_GT, PyCmp_GE=Py_GE,
-	     PyCmp_IN, PyCmp_NOT_IN, PyCmp_IS, PyCmp_IS_NOT, PyCmp_EXC_MATCH, PyCmp_BAD};
-
-#define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_OPCODE_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/osdefs.h b/AppPkg/Applications/Python/Python-2.7.2/Include/osdefs.h
deleted file mode 100644
index bf6ec11..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/osdefs.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/** @file
-    Operating system dependencies.
-
-    Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-#ifndef Py_OSDEFS_H
-#define Py_OSDEFS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Mod by chrish: QNX has WATCOM, but isn't DOS */
-#if !defined(__QNX__) && !defined(UEFI_C_SOURCE)
-#if defined(MS_WINDOWS) || defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__DJGPP__) || defined(PYOS_OS2)
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-#define MAXPATHLEN 260
-#define SEP '/'
-#define ALTSEP '\\'
-#else
-#define SEP '\\'
-#define ALTSEP '/'
-#define MAXPATHLEN 256
-#endif
-#define DELIM ';'
-#endif
-#endif
-
-#ifdef RISCOS
-#define SEP '.'
-#define MAXPATHLEN 256
-#define DELIM ','
-#endif
-
-
-/* Filename separator */
-#ifndef SEP
-#define SEP     '/'
-#define ALTSEP  '\\'
-#endif
-
-/* Max pathname length */
-#ifndef MAXPATHLEN
-#if defined(PATH_MAX) && PATH_MAX > 1024
-#define MAXPATHLEN PATH_MAX
-#else
-#define MAXPATHLEN 1024
-#endif
-#endif
-
-/* Search path entry delimiter */
-#ifndef DELIM
-  #ifdef  UEFI_C_SOURCE
-    #define DELIM   ';'
-    #define DELIM_STR   ";"
-  #else
-    #define DELIM   ':'
-  #endif
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_OSDEFS_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/parsetok.h b/AppPkg/Applications/Python/Python-2.7.2/Include/parsetok.h
deleted file mode 100644
index 915bdba..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/parsetok.h
+++ /dev/null
@@ -1,64 +0,0 @@
-
-/* Parser-tokenizer link interface */
-
-#ifndef Py_PARSETOK_H
-#define Py_PARSETOK_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-    int error;
-    const char *filename;
-    int lineno;
-    int offset;
-    char *text;
-    int token;
-    int expected;
-} perrdetail;
-
-#if 0
-#define PyPARSE_YIELD_IS_KEYWORD	0x0001
-#endif
-
-#define PyPARSE_DONT_IMPLY_DEDENT	0x0002
-
-#if 0
-#define PyPARSE_WITH_IS_KEYWORD		0x0003
-#endif
-
-#define PyPARSE_PRINT_IS_FUNCTION       0x0004
-#define PyPARSE_UNICODE_LITERALS        0x0008
-
-
-
-PyAPI_FUNC(node *) PyParser_ParseString(const char *, grammar *, int,
-                                              perrdetail *);
-PyAPI_FUNC(node *) PyParser_ParseFile (FILE *, const char *, grammar *, int,
-                                             char *, char *, perrdetail *);
-
-PyAPI_FUNC(node *) PyParser_ParseStringFlags(const char *, grammar *, int,
-                                              perrdetail *, int);
-PyAPI_FUNC(node *) PyParser_ParseFileFlags(FILE *, const char *, grammar *,
-						 int, char *, char *,
-						 perrdetail *, int);
-PyAPI_FUNC(node *) PyParser_ParseFileFlagsEx(FILE *, const char *, grammar *,
-						 int, char *, char *,
-						 perrdetail *, int *);
-
-PyAPI_FUNC(node *) PyParser_ParseStringFlagsFilename(const char *,
-					      const char *,
-					      grammar *, int,
-                                              perrdetail *, int);
-PyAPI_FUNC(node *) PyParser_ParseStringFlagsFilenameEx(const char *,
-					      const char *,
-					      grammar *, int,
-                                              perrdetail *, int *);
-
-/* Note that he following function is defined in pythonrun.c not parsetok.c. */
-PyAPI_FUNC(void) PyParser_SetError(perrdetail *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PARSETOK_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/patchlevel.h b/AppPkg/Applications/Python/Python-2.7.2/Include/patchlevel.h
deleted file mode 100644
index f4bbba3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/patchlevel.h
+++ /dev/null
@@ -1,43 +0,0 @@
-
-/* Newfangled version identification scheme.
-
-   This scheme was added in Python 1.5.2b2; before that time, only PATCHLEVEL
-   was available.  To test for presence of the scheme, test for
-   defined(PY_MAJOR_VERSION).
-
-   When the major or minor version changes, the VERSION variable in
-   configure.in must also be changed.
-
-   There is also (independent) API version information in modsupport.h.
-*/
-
-/* Values for PY_RELEASE_LEVEL */
-#define PY_RELEASE_LEVEL_ALPHA	0xA
-#define PY_RELEASE_LEVEL_BETA	0xB
-#define PY_RELEASE_LEVEL_GAMMA	0xC     /* For release candidates */
-#define PY_RELEASE_LEVEL_FINAL	0xF	/* Serial should be 0 here */
-					/* Higher for patch releases */
-
-/* Version parsed out into numeric values */
-/*--start constants--*/
-#define PY_MAJOR_VERSION	2
-#define PY_MINOR_VERSION	7
-#define PY_MICRO_VERSION	2
-#define PY_RELEASE_LEVEL	PY_RELEASE_LEVEL_FINAL
-#define PY_RELEASE_SERIAL	0
-
-/* Version as a string */
-#define PY_VERSION      	"2.7.2"
-/*--end constants--*/
-
-/* Subversion Revision number of this file (not of the repository). Empty
-   since Mercurial migration. */
-#define PY_PATCHLEVEL_REVISION  ""
-
-/* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2.
-   Use this for numeric comparisons, e.g. #if PY_VERSION_HEX >= ... */
-#define PY_VERSION_HEX ((PY_MAJOR_VERSION << 24) | \
-			(PY_MINOR_VERSION << 16) | \
-			(PY_MICRO_VERSION <<  8) | \
-			(PY_RELEASE_LEVEL <<  4) | \
-			(PY_RELEASE_SERIAL << 0))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pgen.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pgen.h
deleted file mode 100644
index af84852..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pgen.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef Py_PGEN_H
-#define Py_PGEN_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Parser generator interface */
-
-extern grammar *meta_grammar(void);
-
-struct _node;
-extern grammar *pgen(struct _node *);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PGEN_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pgenheaders.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pgenheaders.h
deleted file mode 100644
index 7aac4e2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pgenheaders.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef Py_PGENHEADERS_H
-#define Py_PGENHEADERS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Include files and extern declarations used by most of the parser. */
-
-#include "Python.h"
-
-PyAPI_FUNC(void) PySys_WriteStdout(const char *format, ...)
-			Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
-PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...)
-			Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
-
-#define addarc _Py_addarc
-#define addbit _Py_addbit
-#define adddfa _Py_adddfa
-#define addfirstsets _Py_addfirstsets
-#define addlabel _Py_addlabel
-#define addstate _Py_addstate
-#define delbitset _Py_delbitset
-#define dumptree _Py_dumptree
-#define findlabel _Py_findlabel
-#define mergebitset _Py_mergebitset
-#define meta_grammar _Py_meta_grammar
-#define newbitset _Py_newbitset
-#define newgrammar _Py_newgrammar
-#define pgen _Py_pgen
-#define printgrammar _Py_printgrammar
-#define printnonterminals _Py_printnonterminals
-#define printtree _Py_printtree
-#define samebitset _Py_samebitset
-#define showtree _Py_showtree
-#define tok_dump _Py_tok_dump
-#define translatelabels _Py_translatelabels
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PGENHEADERS_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/py_curses.h b/AppPkg/Applications/Python/Python-2.7.2/Include/py_curses.h
deleted file mode 100644
index 2120607..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/py_curses.h
+++ /dev/null
@@ -1,176 +0,0 @@
-
-#ifndef Py_CURSES_H
-#define Py_CURSES_H
-
-#ifdef __APPLE__
-/*
-** On Mac OS X 10.2 [n]curses.h and stdlib.h use different guards
-** against multiple definition of wchar_t.
-*/
-#ifdef	_BSD_WCHAR_T_DEFINED_
-#define _WCHAR_T
-#endif
-
-/* the following define is necessary for OS X 10.6; without it, the
-   Apple-supplied ncurses.h sets NCURSES_OPAQUE to 1, and then Python
-   can't get at the WINDOW flags field. */
-#define NCURSES_OPAQUE 0
-#endif /* __APPLE__ */
-
-#ifdef __FreeBSD__
-/*
-** On FreeBSD, [n]curses.h and stdlib.h/wchar.h use different guards
-** against multiple definition of wchar_t and wint_t.
-*/
-#ifdef	_XOPEN_SOURCE_EXTENDED
-#ifndef __FreeBSD_version
-#include <osreldate.h>
-#endif
-#if __FreeBSD_version >= 500000
-#ifndef __wchar_t
-#define __wchar_t
-#endif
-#ifndef __wint_t
-#define __wint_t
-#endif
-#else
-#ifndef _WCHAR_T
-#define _WCHAR_T
-#endif
-#ifndef _WINT_T
-#define _WINT_T
-#endif
-#endif
-#endif
-#endif
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#else
-#include <curses.h>
-#ifdef HAVE_TERM_H
-/* for tigetstr, which is not declared in SysV curses */
-#include <term.h>
-#endif
-#endif
-
-#ifdef HAVE_NCURSES_H
-/* configure was checking <curses.h>, but we will
-   use <ncurses.h>, which has all these features. */
-#ifndef WINDOW_HAS_FLAGS
-#define WINDOW_HAS_FLAGS 1
-#endif
-#ifndef MVWDELCH_IS_EXPRESSION
-#define MVWDELCH_IS_EXPRESSION 1
-#endif
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define PyCurses_API_pointers 4
-
-/* Type declarations */
-
-typedef struct {
-	PyObject_HEAD
-	WINDOW *win;
-} PyCursesWindowObject;
-
-#define PyCursesWindow_Check(v)	 (Py_TYPE(v) == &PyCursesWindow_Type)
-
-#define PyCurses_CAPSULE_NAME "_curses._C_API"
-
-
-#ifdef CURSES_MODULE
-/* This section is used when compiling _cursesmodule.c */
-
-#else
-/* This section is used in modules that use the _cursesmodule API */
-
-static void **PyCurses_API;
-
-#define PyCursesWindow_Type (*(PyTypeObject *) PyCurses_API[0])
-#define PyCursesSetupTermCalled  {if (! ((int (*)(void))PyCurses_API[1]) () ) return NULL;}
-#define PyCursesInitialised      {if (! ((int (*)(void))PyCurses_API[2]) () ) return NULL;}
-#define PyCursesInitialisedColor {if (! ((int (*)(void))PyCurses_API[3]) () ) return NULL;}
-
-#define import_curses() \
-    PyCurses_API = (void **)PyCapsule_Import(PyCurses_CAPSULE_NAME, 1);
-
-#endif
-
-/* general error messages */
-static char *catchall_ERR  = "curses function returned ERR";
-static char *catchall_NULL = "curses function returned NULL";
-
-/* Function Prototype Macros - They are ugly but very, very useful. ;-)
-
-   X - function name
-   TYPE - parameter Type
-   ERGSTR - format string for construction of the return value
-   PARSESTR - format string for argument parsing
-   */
-
-#define NoArgNoReturnFunction(X) \
-static PyObject *PyCurses_ ## X (PyObject *self) \
-{ \
-  PyCursesInitialised \
-  return PyCursesCheckERR(X(), # X); }
-
-#define NoArgOrFlagNoReturnFunction(X) \
-static PyObject *PyCurses_ ## X (PyObject *self, PyObject *args) \
-{ \
-  int flag = 0; \
-  PyCursesInitialised \
-  switch(PyTuple_Size(args)) { \
-  case 0: \
-    return PyCursesCheckERR(X(), # X); \
-  case 1: \
-    if (!PyArg_ParseTuple(args, "i;True(1) or False(0)", &flag)) return NULL; \
-    if (flag) return PyCursesCheckERR(X(), # X); \
-    else return PyCursesCheckERR(no ## X (), # X); \
-  default: \
-    PyErr_SetString(PyExc_TypeError, # X " requires 0 or 1 arguments"); \
-    return NULL; } }
-
-#define NoArgReturnIntFunction(X) \
-static PyObject *PyCurses_ ## X (PyObject *self) \
-{ \
- PyCursesInitialised \
- return PyInt_FromLong((long) X()); }
-
-
-#define NoArgReturnStringFunction(X) \
-static PyObject *PyCurses_ ## X (PyObject *self) \
-{ \
-  PyCursesInitialised \
-  return PyString_FromString(X()); }
-
-#define NoArgTrueFalseFunction(X) \
-static PyObject *PyCurses_ ## X (PyObject *self) \
-{ \
-  PyCursesInitialised \
-  if (X () == FALSE) { \
-    Py_INCREF(Py_False); \
-    return Py_False; \
-  } \
-  Py_INCREF(Py_True); \
-  return Py_True; }
-
-#define NoArgNoReturnVoidFunction(X) \
-static PyObject *PyCurses_ ## X (PyObject *self) \
-{ \
-  PyCursesInitialised \
-  X(); \
-  Py_INCREF(Py_None); \
-  return Py_None; }
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !defined(Py_CURSES_H) */
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pyarena.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pyarena.h
deleted file mode 100644
index fec1afa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pyarena.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* An arena-like memory interface for the compiler.
- */
-
-#ifndef Py_PYARENA_H
-#define Py_PYARENA_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-  typedef struct _arena PyArena;
-
-  /* PyArena_New() and PyArena_Free() create a new arena and free it,
-     respectively.  Once an arena has been created, it can be used
-     to allocate memory via PyArena_Malloc().  Pointers to PyObject can
-     also be registered with the arena via PyArena_AddPyObject(), and the
-     arena will ensure that the PyObjects stay alive at least until
-     PyArena_Free() is called.  When an arena is freed, all the memory it
-     allocated is freed, the arena releases internal references to registered
-     PyObject*, and none of its pointers are valid.
-     XXX (tim) What does "none of its pointers are valid" mean?  Does it
-     XXX mean that pointers previously obtained via PyArena_Malloc() are
-     XXX no longer valid?  (That's clearly true, but not sure that's what
-     XXX the text is trying to say.)
-
-     PyArena_New() returns an arena pointer.  On error, it
-     returns a negative number and sets an exception.
-     XXX (tim):  Not true.  On error, PyArena_New() actually returns NULL,
-     XXX and looks like it may or may not set an exception (e.g., if the
-     XXX internal PyList_New(0) returns NULL, PyArena_New() passes that on
-     XXX and an exception is set; OTOH, if the internal
-     XXX block_new(DEFAULT_BLOCK_SIZE) returns NULL, that's passed on but
-     XXX an exception is not set in that case).
-  */
-  PyAPI_FUNC(PyArena *) PyArena_New(void);
-  PyAPI_FUNC(void) PyArena_Free(PyArena *);
-
-  /* Mostly like malloc(), return the address of a block of memory spanning
-   * `size` bytes, or return NULL (without setting an exception) if enough
-   * new memory can't be obtained.  Unlike malloc(0), PyArena_Malloc() with
-   * size=0 does not guarantee to return a unique pointer (the pointer
-   * returned may equal one or more other pointers obtained from
-   * PyArena_Malloc()).
-   * Note that pointers obtained via PyArena_Malloc() must never be passed to
-   * the system free() or realloc(), or to any of Python's similar memory-
-   * management functions.  PyArena_Malloc()-obtained pointers remain valid
-   * until PyArena_Free(ar) is called, at which point all pointers obtained
-   * from the arena `ar` become invalid simultaneously.
-   */
-  PyAPI_FUNC(void *) PyArena_Malloc(PyArena *, size_t size);
-
-  /* This routine isn't a proper arena allocation routine.  It takes
-   * a PyObject* and records it so that it can be DECREFed when the
-   * arena is freed.
-   */
-  PyAPI_FUNC(int) PyArena_AddPyObject(PyArena *, PyObject *);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_PYARENA_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pycapsule.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pycapsule.h
deleted file mode 100644
index d414435..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pycapsule.h
+++ /dev/null
@@ -1,56 +0,0 @@
-
-/* Capsule objects let you wrap a C "void *" pointer in a Python
-   object.  They're a way of passing data through the Python interpreter
-   without creating your own custom type.
-
-   Capsules are used for communication between extension modules.
-   They provide a way for an extension module to export a C interface
-   to other extension modules, so that extension modules can use the
-   Python import mechanism to link to one another.
-
-   For more information, please see "c-api/capsule.html" in the
-   documentation.
-*/
-
-#ifndef Py_CAPSULE_H
-#define Py_CAPSULE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_DATA(PyTypeObject) PyCapsule_Type;
-
-typedef void (*PyCapsule_Destructor)(PyObject *);
-
-#define PyCapsule_CheckExact(op) (Py_TYPE(op) == &PyCapsule_Type)
-
-
-PyAPI_FUNC(PyObject *) PyCapsule_New(
-    void *pointer,
-    const char *name,
-    PyCapsule_Destructor destructor);
-
-PyAPI_FUNC(void *) PyCapsule_GetPointer(PyObject *capsule, const char *name);
-
-PyAPI_FUNC(PyCapsule_Destructor) PyCapsule_GetDestructor(PyObject *capsule);
-
-PyAPI_FUNC(const char *) PyCapsule_GetName(PyObject *capsule);
-
-PyAPI_FUNC(void *) PyCapsule_GetContext(PyObject *capsule);
-
-PyAPI_FUNC(int) PyCapsule_IsValid(PyObject *capsule, const char *name);
-
-PyAPI_FUNC(int) PyCapsule_SetPointer(PyObject *capsule, void *pointer);
-
-PyAPI_FUNC(int) PyCapsule_SetDestructor(PyObject *capsule, PyCapsule_Destructor destructor);
-
-PyAPI_FUNC(int) PyCapsule_SetName(PyObject *capsule, const char *name);
-
-PyAPI_FUNC(int) PyCapsule_SetContext(PyObject *capsule, void *context);
-
-PyAPI_FUNC(void *) PyCapsule_Import(const char *name, int no_block);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_CAPSULE_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pyctype.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pyctype.h
deleted file mode 100644
index 82feefb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pyctype.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef PYCTYPE_H
-#define PYCTYPE_H
-
-#define PY_CTF_LOWER  0x01
-#define PY_CTF_UPPER  0x02
-#define PY_CTF_ALPHA  (PY_CTF_LOWER|PY_CTF_UPPER)
-#define PY_CTF_DIGIT  0x04
-#define PY_CTF_ALNUM  (PY_CTF_ALPHA|PY_CTF_DIGIT)
-#define PY_CTF_SPACE  0x08
-#define PY_CTF_XDIGIT 0x10
-
-extern const unsigned int _Py_ctype_table[256];
-
-/* Unlike their C counterparts, the following macros are not meant to
- * handle an int with any of the values [EOF, 0-UCHAR_MAX]. The argument
- * must be a signed/unsigned char. */
-#define Py_ISLOWER(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_LOWER)
-#define Py_ISUPPER(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_UPPER)
-#define Py_ISALPHA(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALPHA)
-#define Py_ISDIGIT(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_DIGIT)
-#define Py_ISXDIGIT(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_XDIGIT)
-#define Py_ISALNUM(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALNUM)
-#define Py_ISSPACE(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_SPACE)
-
-extern const unsigned char _Py_ctype_tolower[256];
-extern const unsigned char _Py_ctype_toupper[256];
-
-#define Py_TOLOWER(c) (_Py_ctype_tolower[Py_CHARMASK(c)])
-#define Py_TOUPPER(c) (_Py_ctype_toupper[Py_CHARMASK(c)])
-
-#endif /* !PYCTYPE_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pydebug.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pydebug.h
deleted file mode 100644
index cc6363b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pydebug.h
+++ /dev/null
@@ -1,40 +0,0 @@
-
-#ifndef Py_PYDEBUG_H
-#define Py_PYDEBUG_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_DATA(int) Py_DebugFlag;
-PyAPI_DATA(int) Py_VerboseFlag;
-PyAPI_DATA(int) Py_InteractiveFlag;
-PyAPI_DATA(int) Py_InspectFlag;
-PyAPI_DATA(int) Py_OptimizeFlag;
-PyAPI_DATA(int) Py_NoSiteFlag;
-PyAPI_DATA(int) Py_BytesWarningFlag;
-PyAPI_DATA(int) Py_UseClassExceptionsFlag;
-PyAPI_DATA(int) Py_FrozenFlag;
-PyAPI_DATA(int) Py_TabcheckFlag;
-PyAPI_DATA(int) Py_UnicodeFlag;
-PyAPI_DATA(int) Py_IgnoreEnvironmentFlag;
-PyAPI_DATA(int) Py_DivisionWarningFlag;
-PyAPI_DATA(int) Py_DontWriteBytecodeFlag;
-PyAPI_DATA(int) Py_NoUserSiteDirectory;
-/* _XXX Py_QnewFlag should go away in 3.0.  It's true iff -Qnew is passed,
-  on the command line, and is used in 2.2 by ceval.c to make all "/" divisions
-  true divisions (which they will be in 3.0). */
-PyAPI_DATA(int) _Py_QnewFlag;
-/* Warn about 3.x issues */
-PyAPI_DATA(int) Py_Py3kWarningFlag;
-
-/* this is a wrapper around getenv() that pays attention to
-   Py_IgnoreEnvironmentFlag.  It should be used for getting variables like
-   PYTHONPATH and PYTHONHOME from the environment */
-#define Py_GETENV(s) (Py_IgnoreEnvironmentFlag ? NULL : getenv(s))
-
-PyAPI_FUNC(void) Py_FatalError(const char *message);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PYDEBUG_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pyerrors.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pyerrors.h
deleted file mode 100644
index 4d4444c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pyerrors.h
+++ /dev/null
@@ -1,328 +0,0 @@
-#ifndef Py_ERRORS_H
-#define Py_ERRORS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Error objects */
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *dict;
-    PyObject *args;
-    PyObject *message;
-} PyBaseExceptionObject;
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *dict;
-    PyObject *args;
-    PyObject *message;
-    PyObject *msg;
-    PyObject *filename;
-    PyObject *lineno;
-    PyObject *offset;
-    PyObject *text;
-    PyObject *print_file_and_line;
-} PySyntaxErrorObject;
-
-#ifdef Py_USING_UNICODE
-typedef struct {
-    PyObject_HEAD
-    PyObject *dict;
-    PyObject *args;
-    PyObject *message;
-    PyObject *encoding;
-    PyObject *object;
-    Py_ssize_t start;
-    Py_ssize_t end;
-    PyObject *reason;
-} PyUnicodeErrorObject;
-#endif
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *dict;
-    PyObject *args;
-    PyObject *message;
-    PyObject *code;
-} PySystemExitObject;
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *dict;
-    PyObject *args;
-    PyObject *message;
-    PyObject *myerrno;
-    PyObject *strerror;
-    PyObject *filename;
-} PyEnvironmentErrorObject;
-
-#ifdef MS_WINDOWS
-typedef struct {
-    PyObject_HEAD
-    PyObject *dict;
-    PyObject *args;
-    PyObject *message;
-    PyObject *myerrno;
-    PyObject *strerror;
-    PyObject *filename;
-    PyObject *winerror;
-} PyWindowsErrorObject;
-#endif
-
-/* Error handling definitions */
-
-PyAPI_FUNC(void) PyErr_SetNone(PyObject *);
-PyAPI_FUNC(void) PyErr_SetObject(PyObject *, PyObject *);
-PyAPI_FUNC(void) PyErr_SetString(PyObject *, const char *);
-PyAPI_FUNC(PyObject *) PyErr_Occurred(void);
-PyAPI_FUNC(void) PyErr_Clear(void);
-PyAPI_FUNC(void) PyErr_Fetch(PyObject **, PyObject **, PyObject **);
-PyAPI_FUNC(void) PyErr_Restore(PyObject *, PyObject *, PyObject *);
-
-#ifdef Py_DEBUG
-#define _PyErr_OCCURRED() PyErr_Occurred()
-#else
-#define _PyErr_OCCURRED() (_PyThreadState_Current->curexc_type)
-#endif
-
-/* Error testing and normalization */
-PyAPI_FUNC(int) PyErr_GivenExceptionMatches(PyObject *, PyObject *);
-PyAPI_FUNC(int) PyErr_ExceptionMatches(PyObject *);
-PyAPI_FUNC(void) PyErr_NormalizeException(PyObject**, PyObject**, PyObject**);
-
-/* */
-
-#define PyExceptionClass_Check(x)                                       \
-    (PyClass_Check((x)) || (PyType_Check((x)) &&                        \
-      PyType_FastSubclass((PyTypeObject*)(x), Py_TPFLAGS_BASE_EXC_SUBCLASS)))
-
-#define PyExceptionInstance_Check(x)                    \
-    (PyInstance_Check((x)) ||                           \
-     PyType_FastSubclass((x)->ob_type, Py_TPFLAGS_BASE_EXC_SUBCLASS))
-
-#define PyExceptionClass_Name(x)                                   \
-    (PyClass_Check((x))                                            \
-     ? PyString_AS_STRING(((PyClassObject*)(x))->cl_name)          \
-     : (char *)(((PyTypeObject*)(x))->tp_name))
-
-#define PyExceptionInstance_Class(x)                                    \
-    ((PyInstance_Check((x))                                             \
-      ? (PyObject*)((PyInstanceObject*)(x))->in_class                   \
-      : (PyObject*)((x)->ob_type)))
-
-
-/* Predefined exceptions */
-
-PyAPI_DATA(PyObject *) PyExc_BaseException;
-PyAPI_DATA(PyObject *) PyExc_Exception;
-PyAPI_DATA(PyObject *) PyExc_StopIteration;
-PyAPI_DATA(PyObject *) PyExc_GeneratorExit;
-PyAPI_DATA(PyObject *) PyExc_StandardError;
-PyAPI_DATA(PyObject *) PyExc_ArithmeticError;
-PyAPI_DATA(PyObject *) PyExc_LookupError;
-
-PyAPI_DATA(PyObject *) PyExc_AssertionError;
-PyAPI_DATA(PyObject *) PyExc_AttributeError;
-PyAPI_DATA(PyObject *) PyExc_EOFError;
-PyAPI_DATA(PyObject *) PyExc_FloatingPointError;
-PyAPI_DATA(PyObject *) PyExc_EnvironmentError;
-PyAPI_DATA(PyObject *) PyExc_IOError;
-PyAPI_DATA(PyObject *) PyExc_OSError;
-PyAPI_DATA(PyObject *) PyExc_ImportError;
-PyAPI_DATA(PyObject *) PyExc_IndexError;
-PyAPI_DATA(PyObject *) PyExc_KeyError;
-PyAPI_DATA(PyObject *) PyExc_KeyboardInterrupt;
-PyAPI_DATA(PyObject *) PyExc_MemoryError;
-PyAPI_DATA(PyObject *) PyExc_NameError;
-PyAPI_DATA(PyObject *) PyExc_OverflowError;
-PyAPI_DATA(PyObject *) PyExc_RuntimeError;
-PyAPI_DATA(PyObject *) PyExc_NotImplementedError;
-PyAPI_DATA(PyObject *) PyExc_SyntaxError;
-PyAPI_DATA(PyObject *) PyExc_IndentationError;
-PyAPI_DATA(PyObject *) PyExc_TabError;
-PyAPI_DATA(PyObject *) PyExc_ReferenceError;
-PyAPI_DATA(PyObject *) PyExc_SystemError;
-PyAPI_DATA(PyObject *) PyExc_SystemExit;
-PyAPI_DATA(PyObject *) PyExc_TypeError;
-PyAPI_DATA(PyObject *) PyExc_UnboundLocalError;
-PyAPI_DATA(PyObject *) PyExc_UnicodeError;
-PyAPI_DATA(PyObject *) PyExc_UnicodeEncodeError;
-PyAPI_DATA(PyObject *) PyExc_UnicodeDecodeError;
-PyAPI_DATA(PyObject *) PyExc_UnicodeTranslateError;
-PyAPI_DATA(PyObject *) PyExc_ValueError;
-PyAPI_DATA(PyObject *) PyExc_ZeroDivisionError;
-#ifdef MS_WINDOWS
-PyAPI_DATA(PyObject *) PyExc_WindowsError;
-#endif
-#ifdef __VMS
-PyAPI_DATA(PyObject *) PyExc_VMSError;
-#endif
-
-PyAPI_DATA(PyObject *) PyExc_BufferError;
-
-PyAPI_DATA(PyObject *) PyExc_MemoryErrorInst;
-PyAPI_DATA(PyObject *) PyExc_RecursionErrorInst;
-
-/* Predefined warning categories */
-PyAPI_DATA(PyObject *) PyExc_Warning;
-PyAPI_DATA(PyObject *) PyExc_UserWarning;
-PyAPI_DATA(PyObject *) PyExc_DeprecationWarning;
-PyAPI_DATA(PyObject *) PyExc_PendingDeprecationWarning;
-PyAPI_DATA(PyObject *) PyExc_SyntaxWarning;
-PyAPI_DATA(PyObject *) PyExc_RuntimeWarning;
-PyAPI_DATA(PyObject *) PyExc_FutureWarning;
-PyAPI_DATA(PyObject *) PyExc_ImportWarning;
-PyAPI_DATA(PyObject *) PyExc_UnicodeWarning;
-PyAPI_DATA(PyObject *) PyExc_BytesWarning;
-
-
-/* Convenience functions */
-
-PyAPI_FUNC(int) PyErr_BadArgument(void);
-PyAPI_FUNC(PyObject *) PyErr_NoMemory(void);
-PyAPI_FUNC(PyObject *) PyErr_SetFromErrno(PyObject *);
-PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilenameObject(
-    PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilename(
-    PyObject *, const char *);
-#ifdef MS_WINDOWS
-PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithUnicodeFilename(
-    PyObject *, const Py_UNICODE *);
-#endif /* MS_WINDOWS */
-
-PyAPI_FUNC(PyObject *) PyErr_Format(PyObject *, const char *, ...)
-                        Py_GCC_ATTRIBUTE((format(printf, 2, 3)));
-
-#ifdef MS_WINDOWS
-PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilenameObject(
-    int, const char *);
-PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilename(
-    int, const char *);
-PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithUnicodeFilename(
-    int, const Py_UNICODE *);
-PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErr(int);
-PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObject(
-    PyObject *,int, PyObject *);
-PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilename(
-    PyObject *,int, const char *);
-PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithUnicodeFilename(
-    PyObject *,int, const Py_UNICODE *);
-PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErr(PyObject *, int);
-#endif /* MS_WINDOWS */
-
-/* Export the old function so that the existing API remains available: */
-PyAPI_FUNC(void) PyErr_BadInternalCall(void);
-PyAPI_FUNC(void) _PyErr_BadInternalCall(char *filename, int lineno);
-/* Mask the old API with a call to the new API for code compiled under
-   Python 2.0: */
-#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
-
-/* Function to create a new exception */
-PyAPI_FUNC(PyObject *) PyErr_NewException(
-    char *name, PyObject *base, PyObject *dict);
-PyAPI_FUNC(PyObject *) PyErr_NewExceptionWithDoc(
-    char *name, char *doc, PyObject *base, PyObject *dict);
-PyAPI_FUNC(void) PyErr_WriteUnraisable(PyObject *);
-
-/* In sigcheck.c or signalmodule.c */
-PyAPI_FUNC(int) PyErr_CheckSignals(void);
-PyAPI_FUNC(void) PyErr_SetInterrupt(void);
-
-/* In signalmodule.c */
-int PySignal_SetWakeupFd(int fd);
-
-/* Support for adding program text to SyntaxErrors */
-PyAPI_FUNC(void) PyErr_SyntaxLocation(const char *, int);
-PyAPI_FUNC(PyObject *) PyErr_ProgramText(const char *, int);
-
-#ifdef Py_USING_UNICODE
-/* The following functions are used to create and modify unicode
-   exceptions from C */
-
-/* create a UnicodeDecodeError object */
-PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_Create(
-    const char *, const char *, Py_ssize_t, Py_ssize_t, Py_ssize_t, const char *);
-
-/* create a UnicodeEncodeError object */
-PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_Create(
-    const char *, const Py_UNICODE *, Py_ssize_t, Py_ssize_t, Py_ssize_t, const char *);
-
-/* create a UnicodeTranslateError object */
-PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_Create(
-    const Py_UNICODE *, Py_ssize_t, Py_ssize_t, Py_ssize_t, const char *);
-
-/* get the encoding attribute */
-PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetEncoding(PyObject *);
-PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetEncoding(PyObject *);
-
-/* get the object attribute */
-PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetObject(PyObject *);
-PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetObject(PyObject *);
-PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_GetObject(PyObject *);
-
-/* get the value of the start attribute (the int * may not be NULL)
-   return 0 on success, -1 on failure */
-PyAPI_FUNC(int) PyUnicodeEncodeError_GetStart(PyObject *, Py_ssize_t *);
-PyAPI_FUNC(int) PyUnicodeDecodeError_GetStart(PyObject *, Py_ssize_t *);
-PyAPI_FUNC(int) PyUnicodeTranslateError_GetStart(PyObject *, Py_ssize_t *);
-
-/* assign a new value to the start attribute
-   return 0 on success, -1 on failure */
-PyAPI_FUNC(int) PyUnicodeEncodeError_SetStart(PyObject *, Py_ssize_t);
-PyAPI_FUNC(int) PyUnicodeDecodeError_SetStart(PyObject *, Py_ssize_t);
-PyAPI_FUNC(int) PyUnicodeTranslateError_SetStart(PyObject *, Py_ssize_t);
-
-/* get the value of the end attribute (the int *may not be NULL)
- return 0 on success, -1 on failure */
-PyAPI_FUNC(int) PyUnicodeEncodeError_GetEnd(PyObject *, Py_ssize_t *);
-PyAPI_FUNC(int) PyUnicodeDecodeError_GetEnd(PyObject *, Py_ssize_t *);
-PyAPI_FUNC(int) PyUnicodeTranslateError_GetEnd(PyObject *, Py_ssize_t *);
-
-/* assign a new value to the end attribute
-   return 0 on success, -1 on failure */
-PyAPI_FUNC(int) PyUnicodeEncodeError_SetEnd(PyObject *, Py_ssize_t);
-PyAPI_FUNC(int) PyUnicodeDecodeError_SetEnd(PyObject *, Py_ssize_t);
-PyAPI_FUNC(int) PyUnicodeTranslateError_SetEnd(PyObject *, Py_ssize_t);
-
-/* get the value of the reason attribute */
-PyAPI_FUNC(PyObject *) PyUnicodeEncodeError_GetReason(PyObject *);
-PyAPI_FUNC(PyObject *) PyUnicodeDecodeError_GetReason(PyObject *);
-PyAPI_FUNC(PyObject *) PyUnicodeTranslateError_GetReason(PyObject *);
-
-/* assign a new value to the reason attribute
-   return 0 on success, -1 on failure */
-PyAPI_FUNC(int) PyUnicodeEncodeError_SetReason(
-    PyObject *, const char *);
-PyAPI_FUNC(int) PyUnicodeDecodeError_SetReason(
-    PyObject *, const char *);
-PyAPI_FUNC(int) PyUnicodeTranslateError_SetReason(
-    PyObject *, const char *);
-#endif
-
-
-/* These APIs aren't really part of the error implementation, but
-   often needed to format error messages; the native C lib APIs are
-   not available on all platforms, which is why we provide emulations
-   for those platforms in Python/mysnprintf.c,
-   WARNING:  The return value of snprintf varies across platforms; do
-   not rely on any particular behavior; eventually the C99 defn may
-   be reliable.
-*/
-#if defined(MS_WIN32) && !defined(HAVE_SNPRINTF)
-# define HAVE_SNPRINTF
-# define snprintf _snprintf
-# define vsnprintf _vsnprintf
-#endif
-
-#include <stdarg.h>
-PyAPI_FUNC(int) PyOS_snprintf(char *str, size_t size, const char  *format, ...)
-                        Py_GCC_ATTRIBUTE((format(printf, 3, 4)));
-PyAPI_FUNC(int) PyOS_vsnprintf(char *str, size_t size, const char  *format, va_list va)
-                        Py_GCC_ATTRIBUTE((format(printf, 3, 0)));
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_ERRORS_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pyexpat.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pyexpat.h
deleted file mode 100644
index fdce988..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pyexpat.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Stuff to export relevant 'expat' entry points from pyexpat to other
- * parser modules, such as cElementTree. */
-
-/* note: you must import expat.h before importing this module! */
-
-#define PyExpat_CAPI_MAGIC  "pyexpat.expat_CAPI 1.0"
-#define PyExpat_CAPSULE_NAME "pyexpat.expat_CAPI"
-
-struct PyExpat_CAPI 
-{
-    char* magic; /* set to PyExpat_CAPI_MAGIC */
-    int size; /* set to sizeof(struct PyExpat_CAPI) */
-    int MAJOR_VERSION;
-    int MINOR_VERSION;
-    int MICRO_VERSION;
-    /* pointers to selected expat functions.  add new functions at
-       the end, if needed */
-    const XML_LChar * (*ErrorString)(enum XML_Error code);
-    enum XML_Error (*GetErrorCode)(XML_Parser parser);
-    XML_Size (*GetErrorColumnNumber)(XML_Parser parser);
-    XML_Size (*GetErrorLineNumber)(XML_Parser parser);
-    enum XML_Status (*Parse)(
-        XML_Parser parser, const char *s, int len, int isFinal);
-    XML_Parser (*ParserCreate_MM)(
-        const XML_Char *encoding, const XML_Memory_Handling_Suite *memsuite,
-        const XML_Char *namespaceSeparator);
-    void (*ParserFree)(XML_Parser parser);
-    void (*SetCharacterDataHandler)(
-        XML_Parser parser, XML_CharacterDataHandler handler);
-    void (*SetCommentHandler)(
-        XML_Parser parser, XML_CommentHandler handler);
-    void (*SetDefaultHandlerExpand)(
-        XML_Parser parser, XML_DefaultHandler handler);
-    void (*SetElementHandler)(
-        XML_Parser parser, XML_StartElementHandler start,
-        XML_EndElementHandler end);
-    void (*SetNamespaceDeclHandler)(
-        XML_Parser parser, XML_StartNamespaceDeclHandler start,
-        XML_EndNamespaceDeclHandler end);
-    void (*SetProcessingInstructionHandler)(
-        XML_Parser parser, XML_ProcessingInstructionHandler handler);
-    void (*SetUnknownEncodingHandler)(
-        XML_Parser parser, XML_UnknownEncodingHandler handler,
-        void *encodingHandlerData);
-    void (*SetUserData)(XML_Parser parser, void *userData);
-    /* always add new stuff to the end! */
-};
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pyfpe.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pyfpe.h
deleted file mode 100644
index 4da66ef..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pyfpe.h
+++ /dev/null
@@ -1,176 +0,0 @@
-#ifndef Py_PYFPE_H
-#define Py_PYFPE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
-     ---------------------------------------------------------------------  
-    /                       Copyright (c) 1996.                           \ 
-   |          The Regents of the University of California.                 |
-   |                        All rights reserved.                           |
-   |                                                                       |
-   |   Permission to use, copy, modify, and distribute this software for   |
-   |   any purpose without fee is hereby granted, provided that this en-   |
-   |   tire notice is included in all copies of any software which is or   |
-   |   includes  a  copy  or  modification  of  this software and in all   |
-   |   copies of the supporting documentation for such software.           |
-   |                                                                       |
-   |   This  work was produced at the University of California, Lawrence   |
-   |   Livermore National Laboratory under  contract  no.  W-7405-ENG-48   |
-   |   between  the  U.S.  Department  of  Energy and The Regents of the   |
-   |   University of California for the operation of UC LLNL.              |
-   |                                                                       |
-   |                              DISCLAIMER                               |
-   |                                                                       |
-   |   This  software was prepared as an account of work sponsored by an   |
-   |   agency of the United States Government. Neither the United States   |
-   |   Government  nor the University of California nor any of their em-   |
-   |   ployees, makes any warranty, express or implied, or  assumes  any   |
-   |   liability  or  responsibility  for the accuracy, completeness, or   |
-   |   usefulness of any information,  apparatus,  product,  or  process   |
-   |   disclosed,   or  represents  that  its  use  would  not  infringe   |
-   |   privately-owned rights. Reference herein to any specific  commer-   |
-   |   cial  products,  process,  or  service  by trade name, trademark,   |
-   |   manufacturer, or otherwise, does not  necessarily  constitute  or   |
-   |   imply  its endorsement, recommendation, or favoring by the United   |
-   |   States Government or the University of California. The views  and   |
-   |   opinions  of authors expressed herein do not necessarily state or   |
-   |   reflect those of the United States Government or  the  University   |
-   |   of  California,  and shall not be used for advertising or product   |
-    \  endorsement purposes.                                              / 
-     ---------------------------------------------------------------------  
-*/
-
-/*
- *       Define macros for handling SIGFPE.
- *       Lee Busby, LLNL, November, 1996
- *       busby1@llnl.gov
- * 
- *********************************************
- * Overview of the system for handling SIGFPE:
- * 
- * This file (Include/pyfpe.h) defines a couple of "wrapper" macros for
- * insertion into your Python C code of choice. Their proper use is
- * discussed below. The file Python/pyfpe.c defines a pair of global
- * variables PyFPE_jbuf and PyFPE_counter which are used by the signal
- * handler for SIGFPE to decide if a particular exception was protected
- * by the macros. The signal handler itself, and code for enabling the
- * generation of SIGFPE in the first place, is in a (new) Python module
- * named fpectl. This module is standard in every respect. It can be loaded
- * either statically or dynamically as you choose, and like any other
- * Python module, has no effect until you import it.
- * 
- * In the general case, there are three steps toward handling SIGFPE in any
- * Python code:
- * 
- * 1) Add the *_PROTECT macros to your C code as required to protect
- *    dangerous floating point sections.
- * 
- * 2) Turn on the inclusion of the code by adding the ``--with-fpectl''
- *    flag at the time you run configure.  If the fpectl or other modules
- *    which use the *_PROTECT macros are to be dynamically loaded, be
- *    sure they are compiled with WANT_SIGFPE_HANDLER defined.
- * 
- * 3) When python is built and running, import fpectl, and execute
- *    fpectl.turnon_sigfpe(). This sets up the signal handler and enables
- *    generation of SIGFPE whenever an exception occurs. From this point
- *    on, any properly trapped SIGFPE should result in the Python
- *    FloatingPointError exception.
- * 
- * Step 1 has been done already for the Python kernel code, and should be
- * done soon for the NumPy array package.  Step 2 is usually done once at
- * python install time. Python's behavior with respect to SIGFPE is not
- * changed unless you also do step 3. Thus you can control this new
- * facility at compile time, or run time, or both.
- * 
- ******************************** 
- * Using the macros in your code:
- * 
- * static PyObject *foobar(PyObject *self,PyObject *args)
- * {
- *     ....
- *     PyFPE_START_PROTECT("Error in foobar", return 0)
- *     result = dangerous_op(somearg1, somearg2, ...);
- *     PyFPE_END_PROTECT(result)
- *     ....
- * }
- * 
- * If a floating point error occurs in dangerous_op, foobar returns 0 (NULL),
- * after setting the associated value of the FloatingPointError exception to
- * "Error in foobar". ``Dangerous_op'' can be a single operation, or a block
- * of code, function calls, or any combination, so long as no alternate
- * return is possible before the PyFPE_END_PROTECT macro is reached.
- * 
- * The macros can only be used in a function context where an error return
- * can be recognized as signaling a Python exception. (Generally, most
- * functions that return a PyObject * will qualify.)
- * 
- * Guido's original design suggestion for PyFPE_START_PROTECT and
- * PyFPE_END_PROTECT had them open and close a local block, with a locally
- * defined jmp_buf and jmp_buf pointer. This would allow recursive nesting
- * of the macros. The Ansi C standard makes it clear that such local
- * variables need to be declared with the "volatile" type qualifier to keep
- * setjmp from corrupting their values. Some current implementations seem
- * to be more restrictive. For example, the HPUX man page for setjmp says
- * 
- *   Upon the return from a setjmp() call caused by a longjmp(), the
- *   values of any non-static local variables belonging to the routine
- *   from which setjmp() was called are undefined. Code which depends on
- *   such values is not guaranteed to be portable.
- * 
- * I therefore decided on a more limited form of nesting, using a counter
- * variable (PyFPE_counter) to keep track of any recursion.  If an exception
- * occurs in an ``inner'' pair of macros, the return will apparently
- * come from the outermost level.
- * 
- */
-
-#ifdef WANT_SIGFPE_HANDLER
-#include <signal.h>
-#include <setjmp.h>
-#include <math.h>
-extern jmp_buf PyFPE_jbuf;
-extern int PyFPE_counter;
-extern double PyFPE_dummy(void *);
-
-#define PyFPE_START_PROTECT(err_string, leave_stmt) \
-if (!PyFPE_counter++ && setjmp(PyFPE_jbuf)) { \
-	PyErr_SetString(PyExc_FloatingPointError, err_string); \
-	PyFPE_counter = 0; \
-	leave_stmt; \
-}
-
-/*
- * This (following) is a heck of a way to decrement a counter. However,
- * unless the macro argument is provided, code optimizers will sometimes move
- * this statement so that it gets executed *before* the unsafe expression
- * which we're trying to protect.  That pretty well messes things up,
- * of course.
- * 
- * If the expression(s) you're trying to protect don't happen to return a
- * value, you will need to manufacture a dummy result just to preserve the
- * correct ordering of statements.  Note that the macro passes the address
- * of its argument (so you need to give it something which is addressable).
- * If your expression returns multiple results, pass the last such result
- * to PyFPE_END_PROTECT.
- * 
- * Note that PyFPE_dummy returns a double, which is cast to int.
- * This seeming insanity is to tickle the Floating Point Unit (FPU).
- * If an exception has occurred in a preceding floating point operation,
- * some architectures (notably Intel 80x86) will not deliver the interrupt
- * until the *next* floating point operation.  This is painful if you've
- * already decremented PyFPE_counter.
- */
-#define PyFPE_END_PROTECT(v) PyFPE_counter -= (int)PyFPE_dummy(&(v));
-
-#else
-
-#define PyFPE_START_PROTECT(err_string, leave_stmt)
-#define PyFPE_END_PROTECT(v)
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PYFPE_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pygetopt.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pygetopt.h
deleted file mode 100644
index 8031346..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pygetopt.h
+++ /dev/null
@@ -1,17 +0,0 @@
-
-#ifndef Py_PYGETOPT_H
-#define Py_PYGETOPT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_DATA(int) _PyOS_opterr;
-PyAPI_DATA(int) _PyOS_optind;
-PyAPI_DATA(char *) _PyOS_optarg;
-
-PyAPI_FUNC(int) _PyOS_GetOpt(int argc, char **argv, char *optstring);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PYGETOPT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pymacconfig.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pymacconfig.h
deleted file mode 100644
index f647b47..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pymacconfig.h
+++ /dev/null
@@ -1,102 +0,0 @@
-#ifndef PYMACCONFIG_H
-#define PYMACCONFIG_H
-     /*
-      * This file moves some of the autoconf magic to compile-time
-      * when building on MacOSX. This is needed for building 4-way
-      * universal binaries and for 64-bit universal binaries because
-      * the values redefined below aren't configure-time constant but
-      * only compile-time constant in these scenarios.
-      */
-
-#if defined(__APPLE__)
-
-# undef SIZEOF_LONG
-# undef SIZEOF_PTHREAD_T
-# undef SIZEOF_SIZE_T
-# undef SIZEOF_TIME_T
-# undef SIZEOF_VOID_P
-# undef SIZEOF__BOOL
-# undef SIZEOF_UINTPTR_T
-# undef SIZEOF_PTHREAD_T
-# undef WORDS_BIGENDIAN
-# undef DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754
-# undef DOUBLE_IS_BIG_ENDIAN_IEEE754
-# undef DOUBLE_IS_LITTLE_ENDIAN_IEEE754
-# undef HAVE_GCC_ASM_FOR_X87
-
-#    undef VA_LIST_IS_ARRAY
-#    if defined(__LP64__) && defined(__x86_64__)
-#        define VA_LIST_IS_ARRAY 1
-#    endif
-
-#    undef HAVE_LARGEFILE_SUPPORT
-#    ifndef __LP64__
-#         define HAVE_LARGEFILE_SUPPORT 1
-#    endif
-
-#    undef SIZEOF_LONG
-#    ifdef __LP64__
-#        define SIZEOF__BOOL            1
-#        define SIZEOF__BOOL            1
-#        define SIZEOF_LONG             8
-#        define SIZEOF_PTHREAD_T        8
-#        define SIZEOF_SIZE_T           8
-#        define SIZEOF_TIME_T           8
-#        define SIZEOF_VOID_P           8
-#        define SIZEOF_UINTPTR_T        8
-#        define SIZEOF_PTHREAD_T        8
-#    else
-#        ifdef __ppc__
-#           define SIZEOF__BOOL         4
-#        else
-#           define SIZEOF__BOOL         1
-#        endif
-#        define SIZEOF_LONG             4
-#        define SIZEOF_PTHREAD_T        4
-#        define SIZEOF_SIZE_T           4
-#        define SIZEOF_TIME_T           4
-#        define SIZEOF_VOID_P           4
-#        define SIZEOF_UINTPTR_T        4
-#        define SIZEOF_PTHREAD_T        4
-#    endif
-
-#    if defined(__LP64__)
-     /* MacOSX 10.4 (the first release to support 64-bit code
-      * at all) only supports 64-bit in the UNIX layer.
-      * Therefore surpress the toolbox-glue in 64-bit mode.
-      */
-
-    /* In 64-bit mode setpgrp always has no argments, in 32-bit
-     * mode that depends on the compilation environment
-     */
-#       undef SETPGRP_HAVE_ARG
-
-#    endif
-
-#ifdef __BIG_ENDIAN__
-#define WORDS_BIGENDIAN 1
-#define DOUBLE_IS_BIG_ENDIAN_IEEE754
-#else
-#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754
-#endif /* __BIG_ENDIAN */
-
-#ifdef __i386__
-# define HAVE_GCC_ASM_FOR_X87
-#endif
-
-    /*
-     * The definition in pyconfig.h is only valid on the OS release
-     * where configure ran on and not necessarily for all systems where
-     * the executable can be used on.
-     *
-     * Specifically: OSX 10.4 has limited supported for '%zd', while
-     * 10.5 has full support for '%zd'. A binary built on 10.5 won't
-     * work properly on 10.4 unless we surpress the definition
-     * of PY_FORMAT_SIZE_T
-     */
-#undef  PY_FORMAT_SIZE_T
-
-
-#endif /* defined(_APPLE__) */
-
-#endif /* PYMACCONFIG_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pymactoolbox.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pymactoolbox.h
deleted file mode 100644
index a0ac1c2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pymactoolbox.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
-** pymactoolbox.h - globals defined in mactoolboxglue.c
-*/
-#ifndef Py_PYMACTOOLBOX_H
-#define Py_PYMACTOOLBOX_H
-#ifdef __cplusplus
-	extern "C" {
-#endif
-
-#include <Carbon/Carbon.h>
-
-#ifndef __LP64__
-#include <QuickTime/QuickTime.h>
-#endif /* !__LP64__ */
-
-/*
-** Helper routines for error codes and such.
-*/
-char *PyMac_StrError(int);			/* strerror with mac errors */
-extern PyObject *PyMac_OSErrException;		/* Exception for OSErr */
-PyObject *PyMac_GetOSErrException(void);	/* Initialize & return it */
-PyObject *PyErr_Mac(PyObject *, int);		/* Exception with a mac error */
-PyObject *PyMac_Error(OSErr);			/* Uses PyMac_GetOSErrException */
-#ifndef __LP64__ 
-extern OSErr PyMac_GetFullPathname(FSSpec *, char *, int); /* convert
-							      fsspec->path */
-#endif /* __LP64__ */
-
-/*
-** These conversion routines are defined in mactoolboxglue.c itself.
-*/
-int PyMac_GetOSType(PyObject *, OSType *);	/* argument parser for OSType */
-PyObject *PyMac_BuildOSType(OSType);		/* Convert OSType to PyObject */
-
-PyObject *PyMac_BuildNumVersion(NumVersion);/* Convert NumVersion to PyObject */
-
-int PyMac_GetStr255(PyObject *, Str255);	/* argument parser for Str255 */
-PyObject *PyMac_BuildStr255(Str255);		/* Convert Str255 to PyObject */
-PyObject *PyMac_BuildOptStr255(Str255);		/* Convert Str255 to PyObject,
-						   NULL to None */
-
-int PyMac_GetRect(PyObject *, Rect *);		/* argument parser for Rect */
-PyObject *PyMac_BuildRect(Rect *);		/* Convert Rect to PyObject */
-
-int PyMac_GetPoint(PyObject *, Point *);	/* argument parser for Point */
-PyObject *PyMac_BuildPoint(Point);		/* Convert Point to PyObject */
-
-int PyMac_GetEventRecord(PyObject *, EventRecord *); /* argument parser for
-							EventRecord */
-PyObject *PyMac_BuildEventRecord(EventRecord *); /* Convert EventRecord to
-						    PyObject */
-
-int PyMac_GetFixed(PyObject *, Fixed *);	/* argument parser for Fixed */
-PyObject *PyMac_BuildFixed(Fixed);		/* Convert Fixed to PyObject */
-int PyMac_Getwide(PyObject *, wide *);		/* argument parser for wide */
-PyObject *PyMac_Buildwide(wide *);		/* Convert wide to PyObject */
-
-/*
-** The rest of the routines are implemented by extension modules. If they are
-** dynamically loaded mactoolboxglue will contain a stub implementation of the
-** routine, which imports the module, whereupon the module's init routine will
-** communicate the routine pointer back to the stub.
-** If USE_TOOLBOX_OBJECT_GLUE is not defined there is no glue code, and the
-** extension modules simply declare the routine. This is the case for static
-** builds (and could be the case for MacPython CFM builds, because CFM extension
-** modules can reference each other without problems).
-*/
-
-#ifdef USE_TOOLBOX_OBJECT_GLUE
-/*
-** These macros are used in the module init code. If we use toolbox object glue
-** it sets the function pointer to point to the real function.
-*/
-#define PyMac_INIT_TOOLBOX_OBJECT_NEW(object, rtn) { \
-	extern PyObject *(*PyMacGluePtr_##rtn)(object); \
-	PyMacGluePtr_##rtn = _##rtn; \
-}
-#define PyMac_INIT_TOOLBOX_OBJECT_CONVERT(object, rtn) { \
-	extern int (*PyMacGluePtr_##rtn)(PyObject *, object *); \
-	PyMacGluePtr_##rtn = _##rtn; \
-}
-#else
-/*
-** If we don't use toolbox object glue the init macros are empty. Moreover, we define
-** _xxx_New to be the same as xxx_New, and the code in mactoolboxglue isn't included.
-*/
-#define PyMac_INIT_TOOLBOX_OBJECT_NEW(object, rtn)
-#define PyMac_INIT_TOOLBOX_OBJECT_CONVERT(object, rtn)
-#endif /* USE_TOOLBOX_OBJECT_GLUE */
-
-/* macfs exports */
-#ifndef __LP64__
-int PyMac_GetFSSpec(PyObject *, FSSpec *);	/* argument parser for FSSpec */
-PyObject *PyMac_BuildFSSpec(FSSpec *);		/* Convert FSSpec to PyObject */
-#endif /* !__LP64__ */
-
-int PyMac_GetFSRef(PyObject *, FSRef *);	/* argument parser for FSRef */
-PyObject *PyMac_BuildFSRef(FSRef *);		/* Convert FSRef to PyObject */
-
-/* AE exports */
-extern PyObject *AEDesc_New(AppleEvent *); /* XXXX Why passed by address?? */
-extern PyObject *AEDesc_NewBorrowed(AppleEvent *);
-extern int AEDesc_Convert(PyObject *, AppleEvent *);
-
-/* Cm exports */
-extern PyObject *CmpObj_New(Component);
-extern int CmpObj_Convert(PyObject *, Component *);
-extern PyObject *CmpInstObj_New(ComponentInstance);
-extern int CmpInstObj_Convert(PyObject *, ComponentInstance *);
-
-/* Ctl exports */
-#ifndef __LP64__
-extern PyObject *CtlObj_New(ControlHandle);
-extern int CtlObj_Convert(PyObject *, ControlHandle *);
-#endif /* !__LP64__ */
-
-/* Dlg exports */
-#ifndef __LP64__
-extern PyObject *DlgObj_New(DialogPtr);
-extern int DlgObj_Convert(PyObject *, DialogPtr *);
-extern PyObject *DlgObj_WhichDialog(DialogPtr);
-#endif /* !__LP64__ */
-
-/* Drag exports */
-#ifndef __LP64__
-extern PyObject *DragObj_New(DragReference);
-extern int DragObj_Convert(PyObject *, DragReference *);
-#endif /* !__LP64__ */
-
-/* List exports */
-#ifndef __LP64__
-extern PyObject *ListObj_New(ListHandle);
-extern int ListObj_Convert(PyObject *, ListHandle *);
-#endif /* !__LP64__ */
-
-/* Menu exports */
-#ifndef __LP64__
-extern PyObject *MenuObj_New(MenuHandle);
-extern int MenuObj_Convert(PyObject *, MenuHandle *);
-#endif /* !__LP64__ */
-
-/* Qd exports */
-#ifndef __LP64__
-extern PyObject *GrafObj_New(GrafPtr);
-extern int GrafObj_Convert(PyObject *, GrafPtr *);
-extern PyObject *BMObj_New(BitMapPtr);
-extern int BMObj_Convert(PyObject *, BitMapPtr *);
-extern PyObject *QdRGB_New(RGBColor *);
-extern int QdRGB_Convert(PyObject *, RGBColor *);
-#endif /* !__LP64__ */
-
-/* Qdoffs exports */
-#ifndef __LP64__
-extern PyObject *GWorldObj_New(GWorldPtr);
-extern int GWorldObj_Convert(PyObject *, GWorldPtr *);
-#endif /* !__LP64__ */
-
-/* Qt exports */
-#ifndef __LP64__
-extern PyObject *TrackObj_New(Track);
-extern int TrackObj_Convert(PyObject *, Track *);
-extern PyObject *MovieObj_New(Movie);
-extern int MovieObj_Convert(PyObject *, Movie *);
-extern PyObject *MovieCtlObj_New(MovieController);
-extern int MovieCtlObj_Convert(PyObject *, MovieController *);
-extern PyObject *TimeBaseObj_New(TimeBase);
-extern int TimeBaseObj_Convert(PyObject *, TimeBase *);
-extern PyObject *UserDataObj_New(UserData);
-extern int UserDataObj_Convert(PyObject *, UserData *);
-extern PyObject *MediaObj_New(Media);
-extern int MediaObj_Convert(PyObject *, Media *);
-#endif /* !__LP64__ */
-
-/* Res exports */
-extern PyObject *ResObj_New(Handle);
-extern int ResObj_Convert(PyObject *, Handle *);
-extern PyObject *OptResObj_New(Handle);
-extern int OptResObj_Convert(PyObject *, Handle *);
-
-/* TE exports */
-#ifndef __LP64__
-extern PyObject *TEObj_New(TEHandle);
-extern int TEObj_Convert(PyObject *, TEHandle *);
-#endif /* !__LP64__ */
-
-/* Win exports */
-#ifndef __LP64__
-extern PyObject *WinObj_New(WindowPtr);
-extern int WinObj_Convert(PyObject *, WindowPtr *);
-extern PyObject *WinObj_WhichWindow(WindowPtr);
-#endif /* !__LP64__ */
-
-/* CF exports */
-extern PyObject *CFObj_New(CFTypeRef);
-extern int CFObj_Convert(PyObject *, CFTypeRef *);
-extern PyObject *CFTypeRefObj_New(CFTypeRef);
-extern int CFTypeRefObj_Convert(PyObject *, CFTypeRef *);
-extern PyObject *CFStringRefObj_New(CFStringRef);
-extern int CFStringRefObj_Convert(PyObject *, CFStringRef *);
-extern PyObject *CFMutableStringRefObj_New(CFMutableStringRef);
-extern int CFMutableStringRefObj_Convert(PyObject *, CFMutableStringRef *);
-extern PyObject *CFArrayRefObj_New(CFArrayRef);
-extern int CFArrayRefObj_Convert(PyObject *, CFArrayRef *);
-extern PyObject *CFMutableArrayRefObj_New(CFMutableArrayRef);
-extern int CFMutableArrayRefObj_Convert(PyObject *, CFMutableArrayRef *);
-extern PyObject *CFDictionaryRefObj_New(CFDictionaryRef);
-extern int CFDictionaryRefObj_Convert(PyObject *, CFDictionaryRef *);
-extern PyObject *CFMutableDictionaryRefObj_New(CFMutableDictionaryRef);
-extern int CFMutableDictionaryRefObj_Convert(PyObject *, CFMutableDictionaryRef *);
-extern PyObject *CFURLRefObj_New(CFURLRef);
-extern int CFURLRefObj_Convert(PyObject *, CFURLRef *);
-extern int OptionalCFURLRefObj_Convert(PyObject *, CFURLRef *);
-
-#ifdef __cplusplus
-	}
-#endif
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pymath.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pymath.h
deleted file mode 100644
index f63ddb7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pymath.h
+++ /dev/null
@@ -1,192 +0,0 @@
-#ifndef Py_PYMATH_H
-#define Py_PYMATH_H
-
-#include "pyconfig.h" /* include for defines */
-
-/**************************************************************************
-Symbols and macros to supply platform-independent interfaces to mathematical
-functions and constants
-**************************************************************************/
-
-/* Python provides implementations for copysign, round and hypot in
- * Python/pymath.c just in case your math library doesn't provide the
- * functions.
- *
- *Note: PC/pyconfig.h defines copysign as _copysign
- */
-#ifndef HAVE_COPYSIGN
-extern double copysign(double, double);
-#endif
-
-#ifndef HAVE_ROUND
-extern double round(double);
-#endif
-
-#ifndef HAVE_HYPOT
-extern double hypot(double, double);
-#endif
-
-/* extra declarations */
-#ifndef _MSC_VER
-#ifndef __STDC__
-extern double fmod (double, double);
-extern double frexp (double, int *);
-extern double ldexp (double, int);
-extern double modf (double, double *);
-extern double pow(double, double);
-#endif /* __STDC__ */
-#endif /* _MSC_VER */
-
-#ifdef _OSF_SOURCE
-/* OSF1 5.1 doesn't make these available with XOPEN_SOURCE_EXTENDED defined */
-extern int finite(double);
-extern double copysign(double, double);
-#endif
-
-/* High precision defintion of pi and e (Euler)
- * The values are taken from libc6's math.h.
- */
-#ifndef Py_MATH_PIl
-#define Py_MATH_PIl 3.1415926535897932384626433832795029L
-#endif
-#ifndef Py_MATH_PI
-#define Py_MATH_PI 3.14159265358979323846
-#endif
-
-#ifndef Py_MATH_El
-#define Py_MATH_El 2.7182818284590452353602874713526625L
-#endif
-
-#ifndef Py_MATH_E
-#define Py_MATH_E 2.7182818284590452354
-#endif
-
-/* On x86, Py_FORCE_DOUBLE forces a floating-point number out of an x87 FPU
-   register and into a 64-bit memory location, rounding from extended
-   precision to double precision in the process.  On other platforms it does
-   nothing. */
-
-/* we take double rounding as evidence of x87 usage */
-#ifndef Py_FORCE_DOUBLE
-#  ifdef X87_DOUBLE_ROUNDING
-PyAPI_FUNC(double) _Py_force_double(double);
-#    define Py_FORCE_DOUBLE(X) (_Py_force_double(X))
-#  else
-#    define Py_FORCE_DOUBLE(X) (X)
-#  endif
-#endif
-
-#ifdef HAVE_GCC_ASM_FOR_X87
-PyAPI_FUNC(unsigned short) _Py_get_387controlword(void);
-PyAPI_FUNC(void) _Py_set_387controlword(unsigned short);
-#endif
-
-/* Py_IS_NAN(X)
- * Return 1 if float or double arg is a NaN, else 0.
- * Caution:
- *     X is evaluated more than once.
- *     This may not work on all platforms.  Each platform has *some*
- *     way to spell this, though -- override in pyconfig.h if you have
- *     a platform where it doesn't work.
- * Note: PC/pyconfig.h defines Py_IS_NAN as _isnan
- */
-#ifndef Py_IS_NAN
-#if defined HAVE_DECL_ISNAN && HAVE_DECL_ISNAN == 1
-#define Py_IS_NAN(X) isnan(X)
-#else
-#define Py_IS_NAN(X) ((X) != (X))
-#endif
-#endif
-
-/* Py_IS_INFINITY(X)
- * Return 1 if float or double arg is an infinity, else 0.
- * Caution:
- *    X is evaluated more than once.
- *    This implementation may set the underflow flag if |X| is very small;
- *    it really can't be implemented correctly (& easily) before C99.
- *    Override in pyconfig.h if you have a better spelling on your platform.
- *  Py_FORCE_DOUBLE is used to avoid getting false negatives from a
- *    non-infinite value v sitting in an 80-bit x87 register such that
- *    v becomes infinite when spilled from the register to 64-bit memory.
- * Note: PC/pyconfig.h defines Py_IS_INFINITY as _isinf
- */
-#ifndef Py_IS_INFINITY
-#  if defined HAVE_DECL_ISINF && HAVE_DECL_ISINF == 1
-#    define Py_IS_INFINITY(X) isinf(X)
-#  else
-#    define Py_IS_INFINITY(X) ((X) &&                                   \
-                               (Py_FORCE_DOUBLE(X)*0.5 == Py_FORCE_DOUBLE(X)))
-#  endif
-#endif
-
-/* Py_IS_FINITE(X)
- * Return 1 if float or double arg is neither infinite nor NAN, else 0.
- * Some compilers (e.g. VisualStudio) have intrisics for this, so a special
- * macro for this particular test is useful
- * Note: PC/pyconfig.h defines Py_IS_FINITE as _finite
- */
-#ifndef Py_IS_FINITE
-#if defined HAVE_DECL_ISFINITE && HAVE_DECL_ISFINITE == 1
-#define Py_IS_FINITE(X) isfinite(X)
-#elif defined HAVE_FINITE
-#define Py_IS_FINITE(X) finite(X)
-#else
-#define Py_IS_FINITE(X) (!Py_IS_INFINITY(X) && !Py_IS_NAN(X))
-#endif
-#endif
-
-/* HUGE_VAL is supposed to expand to a positive double infinity.  Python
- * uses Py_HUGE_VAL instead because some platforms are broken in this
- * respect.  We used to embed code in pyport.h to try to worm around that,
- * but different platforms are broken in conflicting ways.  If you're on
- * a platform where HUGE_VAL is defined incorrectly, fiddle your Python
- * config to #define Py_HUGE_VAL to something that works on your platform.
- */
-#ifndef Py_HUGE_VAL
-#define Py_HUGE_VAL HUGE_VAL
-#endif
-
-/* Py_NAN
- * A value that evaluates to a NaN. On IEEE 754 platforms INF*0 or
- * INF/INF works. Define Py_NO_NAN in pyconfig.h if your platform
- * doesn't support NaNs.
- */
-#if !defined(Py_NAN) && !defined(Py_NO_NAN)
-#define Py_NAN (Py_HUGE_VAL * 0.)
-#endif
-
-/* Py_OVERFLOWED(X)
- * Return 1 iff a libm function overflowed.  Set errno to 0 before calling
- * a libm function, and invoke this macro after, passing the function
- * result.
- * Caution:
- *    This isn't reliable.  C99 no longer requires libm to set errno under
- *	  any exceptional condition, but does require +- HUGE_VAL return
- *	  values on overflow.  A 754 box *probably* maps HUGE_VAL to a
- *	  double infinity, and we're cool if that's so, unless the input
- *	  was an infinity and an infinity is the expected result.  A C89
- *	  system sets errno to ERANGE, so we check for that too.  We're
- *	  out of luck if a C99 754 box doesn't map HUGE_VAL to +Inf, or
- *	  if the returned result is a NaN, or if a C89 box returns HUGE_VAL
- *	  in non-overflow cases.
- *    X is evaluated more than once.
- * Some platforms have better way to spell this, so expect some #ifdef'ery.
- *
- * OpenBSD uses 'isinf()' because a compiler bug on that platform causes
- * the longer macro version to be mis-compiled. This isn't optimal, and
- * should be removed once a newer compiler is available on that platform.
- * The system that had the failure was running OpenBSD 3.2 on Intel, with
- * gcc 2.95.3.
- *
- * According to Tim's checkin, the FreeBSD systems use isinf() to work
- * around a FPE bug on that platform.
- */
-#if defined(__FreeBSD__) || defined(__OpenBSD__)
-#define Py_OVERFLOWED(X) isinf(X)
-#else
-#define Py_OVERFLOWED(X) ((X) != 0.0 && (errno == ERANGE ||    \
-					 (X) == Py_HUGE_VAL || \
-					 (X) == -Py_HUGE_VAL))
-#endif
-
-#endif /* Py_PYMATH_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pymem.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pymem.h
deleted file mode 100644
index 27c72f1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pymem.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/* The PyMem_ family:  low-level memory allocation interfaces.
-   See objimpl.h for the PyObject_ memory family.
-*/
-
-#ifndef Py_PYMEM_H
-#define Py_PYMEM_H
-
-#include "pyport.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* BEWARE:
-
-   Each interface exports both functions and macros.  Extension modules should
-   use the functions, to ensure binary compatibility across Python versions.
-   Because the Python implementation is free to change internal details, and
-   the macros may (or may not) expose details for speed, if you do use the
-   macros you must recompile your extensions with each Python release.
-
-   Never mix calls to PyMem_ with calls to the platform malloc/realloc/
-   calloc/free.  For example, on Windows different DLLs may end up using
-   different heaps, and if you use PyMem_Malloc you'll get the memory from the
-   heap used by the Python DLL; it could be a disaster if you free()'ed that
-   directly in your own extension.  Using PyMem_Free instead ensures Python
-   can return the memory to the proper heap.  As another example, in
-   PYMALLOC_DEBUG mode, Python wraps all calls to all PyMem_ and PyObject_
-   memory functions in special debugging wrappers that add additional
-   debugging info to dynamic memory blocks.  The system routines have no idea
-   what to do with that stuff, and the Python wrappers have no idea what to do
-   with raw blocks obtained directly by the system routines then.
-
-   The GIL must be held when using these APIs.
-*/
-
-/*
- * Raw memory interface
- * ====================
- */
-
-/* Functions
-
-   Functions supplying platform-independent semantics for malloc/realloc/
-   free.  These functions make sure that allocating 0 bytes returns a distinct
-   non-NULL pointer (whenever possible -- if we're flat out of memory, NULL
-   may be returned), even if the platform malloc and realloc don't.
-   Returned pointers must be checked for NULL explicitly.  No action is
-   performed on failure (no exception is set, no warning is printed, etc).
-*/
-
-PyAPI_FUNC(void *) PyMem_Malloc(size_t);
-PyAPI_FUNC(void *) PyMem_Realloc(void *, size_t);
-PyAPI_FUNC(void) PyMem_Free(void *);
-
-/* Starting from Python 1.6, the wrappers Py_{Malloc,Realloc,Free} are
-   no longer supported. They used to call PyErr_NoMemory() on failure. */
-
-/* Macros. */
-#ifdef PYMALLOC_DEBUG
-/* Redirect all memory operations to Python's debugging allocator. */
-#define PyMem_MALLOC		_PyMem_DebugMalloc
-#define PyMem_REALLOC		_PyMem_DebugRealloc
-#define PyMem_FREE		_PyMem_DebugFree
-
-#else	/* ! PYMALLOC_DEBUG */
-
-/* PyMem_MALLOC(0) means malloc(1). Some systems would return NULL
-   for malloc(0), which would be treated as an error. Some platforms
-   would return a pointer with no memory behind it, which would break
-   pymalloc. To solve these problems, allocate an extra byte. */
-/* Returns NULL to indicate error if a negative size or size larger than
-   Py_ssize_t can represent is supplied.  Helps prevents security holes. */
-#define PyMem_MALLOC(n)		((size_t)(n) > (size_t)PY_SSIZE_T_MAX ? NULL \
-				: malloc((n) ? (n) : 1))
-#define PyMem_REALLOC(p, n)	((size_t)(n) > (size_t)PY_SSIZE_T_MAX  ? NULL \
-				: realloc((p), (n) ? (n) : 1))
-#define PyMem_FREE		free
-
-#endif	/* PYMALLOC_DEBUG */
-
-/*
- * Type-oriented memory interface
- * ==============================
- *
- * Allocate memory for n objects of the given type.  Returns a new pointer
- * or NULL if the request was too large or memory allocation failed.  Use
- * these macros rather than doing the multiplication yourself so that proper
- * overflow checking is always done.
- */
-
-#define PyMem_New(type, n) \
-  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :	\
-	( (type *) PyMem_Malloc((n) * sizeof(type)) ) )
-#define PyMem_NEW(type, n) \
-  ( ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :	\
-	( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
-
-/*
- * The value of (p) is always clobbered by this macro regardless of success.
- * The caller MUST check if (p) is NULL afterwards and deal with the memory
- * error if so.  This means the original value of (p) MUST be saved for the
- * caller's memory error handler to not lose track of it.
- */
-#define PyMem_Resize(p, type, n) \
-  ( (p) = ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :	\
-	(type *) PyMem_Realloc((p), (n) * sizeof(type)) )
-#define PyMem_RESIZE(p, type, n) \
-  ( (p) = ((size_t)(n) > PY_SSIZE_T_MAX / sizeof(type)) ? NULL :	\
-	(type *) PyMem_REALLOC((p), (n) * sizeof(type)) )
-
-/* PyMem{Del,DEL} are left over from ancient days, and shouldn't be used
- * anymore.  They're just confusing aliases for PyMem_{Free,FREE} now.
- */
-#define PyMem_Del		PyMem_Free
-#define PyMem_DEL		PyMem_FREE
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_PYMEM_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pyport.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pyport.h
deleted file mode 100644
index d1494d3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pyport.h
+++ /dev/null
@@ -1,918 +0,0 @@
-/** @file
-    Symbols and macros to supply platform-independent interfaces to basic
-    C language & library operations whose spellings vary across platforms.
-
-    Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-#ifndef Py_PYPORT_H
-#define Py_PYPORT_H
-
-#include "pyconfig.h" /* include for defines */
-
-/* Some versions of HP-UX & Solaris need inttypes.h for int32_t,
-   INT32_MAX, etc. */
-#ifdef HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-
-#ifdef HAVE_STDINT_H
-#include <stdint.h>
-#endif
-
-/**************************************************************************
-Symbols and macros to supply platform-independent interfaces to basic
-C language & library operations whose spellings vary across platforms.
-
-Please try to make documentation here as clear as possible:  by definition,
-the stuff here is trying to illuminate C's darkest corners.
-
-Config #defines referenced here:
-
-SIGNED_RIGHT_SHIFT_ZERO_FILLS
-Meaning:  To be defined iff i>>j does not extend the sign bit when i is a
-          signed integral type and i < 0.
-Used in:  Py_ARITHMETIC_RIGHT_SHIFT
-
-Py_DEBUG
-Meaning:  Extra checks compiled in for debug mode.
-Used in:  Py_SAFE_DOWNCAST
-
-HAVE_UINTPTR_T
-Meaning:  The C9X type uintptr_t is supported by the compiler
-Used in:  Py_uintptr_t
-
-HAVE_LONG_LONG
-Meaning:  The compiler supports the C type "long long"
-Used in:  PY_LONG_LONG
-
-**************************************************************************/
-
-
-/* For backward compatibility only. Obsolete, do not use. */
-#ifdef HAVE_PROTOTYPES
-#define Py_PROTO(x) x
-#else
-#define Py_PROTO(x) ()
-#endif
-#ifndef Py_FPROTO
-#define Py_FPROTO(x) Py_PROTO(x)
-#endif
-
-/* typedefs for some C9X-defined synonyms for integral types.
- *
- * The names in Python are exactly the same as the C9X names, except with a
- * Py_ prefix.  Until C9X is universally implemented, this is the only way
- * to ensure that Python gets reliable names that don't conflict with names
- * in non-Python code that are playing their own tricks to define the C9X
- * names.
- *
- * NOTE: don't go nuts here!  Python has no use for *most* of the C9X
- * integral synonyms.  Only define the ones we actually need.
- */
-
-#ifdef HAVE_LONG_LONG
-#ifndef PY_LONG_LONG
-#define PY_LONG_LONG long long
-#if defined(LLONG_MAX)
-/* If LLONG_MAX is defined in limits.h, use that. */
-#define PY_LLONG_MIN LLONG_MIN
-#define PY_LLONG_MAX LLONG_MAX
-#define PY_ULLONG_MAX ULLONG_MAX
-#elif defined(__LONG_LONG_MAX__)
-/* Otherwise, if GCC has a builtin define, use that. */
-#define PY_LLONG_MAX __LONG_LONG_MAX__
-#define PY_LLONG_MIN (-PY_LLONG_MAX-1)
-#define PY_ULLONG_MAX (__LONG_LONG_MAX__*2ULL + 1ULL)
-#else
-/* Otherwise, rely on two's complement. */
-#define PY_ULLONG_MAX (~0ULL)
-#define PY_LLONG_MAX  ((long long)(PY_ULLONG_MAX>>1))
-#define PY_LLONG_MIN (-PY_LLONG_MAX-1)
-#endif /* LLONG_MAX */
-#endif
-#endif /* HAVE_LONG_LONG */
-
-/* a build with 30-bit digits for Python long integers needs an exact-width
- * 32-bit unsigned integer type to store those digits.  (We could just use
- * type 'unsigned long', but that would be wasteful on a system where longs
- * are 64-bits.)  On Unix systems, the autoconf macro AC_TYPE_UINT32_T defines
- * uint32_t to be such a type unless stdint.h or inttypes.h defines uint32_t.
- * However, it doesn't set HAVE_UINT32_T, so we do that here.
- */
-#if (defined UINT32_MAX || defined uint32_t)
-#ifndef PY_UINT32_T
-#define HAVE_UINT32_T 1
-#define PY_UINT32_T uint32_t
-#endif
-#endif
-
-/* Macros for a 64-bit unsigned integer type; used for type 'twodigits' in the
- * long integer implementation, when 30-bit digits are enabled.
- */
-#if (defined UINT64_MAX || defined uint64_t)
-#ifndef PY_UINT64_T
-#define HAVE_UINT64_T 1
-#define PY_UINT64_T uint64_t
-#endif
-#endif
-
-/* Signed variants of the above */
-#if (defined INT32_MAX || defined int32_t)
-#ifndef PY_INT32_T
-#define HAVE_INT32_T 1
-#define PY_INT32_T int32_t
-#endif
-#endif
-#if (defined INT64_MAX || defined int64_t)
-#ifndef PY_INT64_T
-#define HAVE_INT64_T 1
-#define PY_INT64_T int64_t
-#endif
-#endif
-
-/* If PYLONG_BITS_IN_DIGIT is not defined then we'll use 30-bit digits if all
-   the necessary integer types are available, and we're on a 64-bit platform
-   (as determined by SIZEOF_VOID_P); otherwise we use 15-bit digits. */
-
-#ifndef PYLONG_BITS_IN_DIGIT
-#if (defined HAVE_UINT64_T && defined HAVE_INT64_T && \
-     defined HAVE_UINT32_T && defined HAVE_INT32_T && SIZEOF_VOID_P >= 8)
-#define PYLONG_BITS_IN_DIGIT 30
-#else
-#define PYLONG_BITS_IN_DIGIT 15
-#endif
-#endif
-
-/* uintptr_t is the C9X name for an unsigned integral type such that a
- * legitimate void* can be cast to uintptr_t and then back to void* again
- * without loss of information.  Similarly for intptr_t, wrt a signed
- * integral type.
- */
-#ifdef HAVE_UINTPTR_T
-typedef uintptr_t       Py_uintptr_t;
-typedef intptr_t        Py_intptr_t;
-
-#elif SIZEOF_VOID_P <= SIZEOF_INT
-typedef unsigned int    Py_uintptr_t;
-typedef int             Py_intptr_t;
-
-#elif SIZEOF_VOID_P <= SIZEOF_LONG
-typedef unsigned long   Py_uintptr_t;
-typedef long            Py_intptr_t;
-
-#elif defined(HAVE_LONG_LONG) && (SIZEOF_VOID_P <= SIZEOF_LONG_LONG)
-typedef unsigned PY_LONG_LONG   Py_uintptr_t;
-typedef PY_LONG_LONG            Py_intptr_t;
-
-#else
-#   error "Python needs a typedef for Py_uintptr_t in pyport.h."
-#endif /* HAVE_UINTPTR_T */
-
-/* Py_ssize_t is a signed integral type such that sizeof(Py_ssize_t) ==
- * sizeof(size_t).  C99 doesn't define such a thing directly (size_t is an
- * unsigned integral type).  See PEP 353 for details.
- */
-#ifdef HAVE_SSIZE_T
-typedef ssize_t         Py_ssize_t;
-#elif SIZEOF_VOID_P == SIZEOF_SIZE_T
-typedef Py_intptr_t     Py_ssize_t;
-#else
-#   error "Python needs a typedef for Py_ssize_t in pyport.h."
-#endif
-
-/* Largest possible value of size_t.
-   SIZE_MAX is part of C99, so it might be defined on some
-   platforms. If it is not defined, (size_t)-1 is a portable
-   definition for C89, due to the way signed->unsigned
-   conversion is defined. */
-#ifdef SIZE_MAX
-#define PY_SIZE_MAX SIZE_MAX
-#else
-#define PY_SIZE_MAX ((size_t)-1)
-#endif
-
-/* Largest positive value of type Py_ssize_t. */
-#define PY_SSIZE_T_MAX ((Py_ssize_t)(((size_t)-1)>>1))
-/* Smallest negative value of type Py_ssize_t. */
-#define PY_SSIZE_T_MIN (-PY_SSIZE_T_MAX-1)
-
-#if SIZEOF_PID_T > SIZEOF_LONG
-#   error "Python doesn't support sizeof(pid_t) > sizeof(long)"
-#endif
-
-/* PY_FORMAT_SIZE_T is a platform-specific modifier for use in a printf
- * format to convert an argument with the width of a size_t or Py_ssize_t.
- * C99 introduced "z" for this purpose, but not all platforms support that;
- * e.g., MS compilers use "I" instead.
- *
- * These "high level" Python format functions interpret "z" correctly on
- * all platforms (Python interprets the format string itself, and does whatever
- * the platform C requires to convert a size_t/Py_ssize_t argument):
- *
- *     PyString_FromFormat
- *     PyErr_Format
- *     PyString_FromFormatV
- *
- * Lower-level uses require that you interpolate the correct format modifier
- * yourself (e.g., calling printf, fprintf, sprintf, PyOS_snprintf); for
- * example,
- *
- *     Py_ssize_t index;
- *     fprintf(stderr, "index %" PY_FORMAT_SIZE_T "d sucks\n", index);
- *
- * That will expand to %ld, or %Id, or to something else correct for a
- * Py_ssize_t on the platform.
- */
-#ifndef PY_FORMAT_SIZE_T
-#   if SIZEOF_SIZE_T == SIZEOF_INT && !defined(__APPLE__)
-#       define PY_FORMAT_SIZE_T ""
-#   elif SIZEOF_SIZE_T == SIZEOF_LONG
-#       define PY_FORMAT_SIZE_T "l"
-#   elif defined(MS_WINDOWS)
-#       define PY_FORMAT_SIZE_T "I"
-#   else
-#       error "This platform's pyconfig.h needs to define PY_FORMAT_SIZE_T"
-#   endif
-#endif
-
-/* PY_FORMAT_LONG_LONG is analogous to PY_FORMAT_SIZE_T above, but for
- * the long long type instead of the size_t type.  It's only available
- * when HAVE_LONG_LONG is defined. The "high level" Python format
- * functions listed above will interpret "lld" or "llu" correctly on
- * all platforms.
- */
-#ifdef HAVE_LONG_LONG
-#   ifndef PY_FORMAT_LONG_LONG
-#       if defined(MS_WIN64) || defined(MS_WINDOWS)
-#           define PY_FORMAT_LONG_LONG "I64"
-#       else
-#           error "This platform's pyconfig.h needs to define PY_FORMAT_LONG_LONG"
-#       endif
-#   endif
-#endif
-
-/* Py_LOCAL can be used instead of static to get the fastest possible calling
- * convention for functions that are local to a given module.
- *
- * Py_LOCAL_INLINE does the same thing, and also explicitly requests inlining,
- * for platforms that support that.
- *
- * If PY_LOCAL_AGGRESSIVE is defined before python.h is included, more
- * "aggressive" inlining/optimizaion is enabled for the entire module.  This
- * may lead to code bloat, and may slow things down for those reasons.  It may
- * also lead to errors, if the code relies on pointer aliasing.  Use with
- * care.
- *
- * NOTE: You can only use this for functions that are entirely local to a
- * module; functions that are exported via method tables, callbacks, etc,
- * should keep using static.
- */
-
-#undef USE_INLINE /* XXX - set via configure? */
-
-#if defined(_MSC_VER)
-#if defined(PY_LOCAL_AGGRESSIVE)
-/* enable more aggressive optimization for visual studio */
-//#pragma optimize("agtw", on)
-#pragma optimize("gt", on)    // a and w are not legal for VS2005
-#endif
-/* ignore warnings if the compiler decides not to inline a function */
-#pragma warning(disable: 4710)
-/* fastest possible local call under MSVC */
-#define Py_LOCAL(type) static type __fastcall
-#define Py_LOCAL_INLINE(type) static __inline type __fastcall
-#elif defined(USE_INLINE)
-#define Py_LOCAL(type) static type
-#define Py_LOCAL_INLINE(type) static inline type
-#else
-#define Py_LOCAL(type) static type
-#define Py_LOCAL_INLINE(type) static type
-#endif
-
-/* Py_MEMCPY can be used instead of memcpy in cases where the copied blocks
- * are often very short.  While most platforms have highly optimized code for
- * large transfers, the setup costs for memcpy are often quite high.  MEMCPY
- * solves this by doing short copies "in line".
- */
-
-#if defined(_MSC_VER)
-#define Py_MEMCPY(target, source, length) do {                          \
-        size_t i_, n_ = (length);                                       \
-        char *t_ = (void*) (target);                                    \
-        const char *s_ = (void*) (source);                              \
-        if (n_ >= 16)                                                   \
-            memcpy(t_, s_, n_);                                         \
-        else                                                            \
-            for (i_ = 0; i_ < n_; i_++)                                 \
-                t_[i_] = s_[i_];                                        \
-    } while (0)
-#else
-#define Py_MEMCPY memcpy
-#endif
-
-#include <stdlib.h>
-
-#ifdef HAVE_IEEEFP_H
-#include <ieeefp.h>  /* needed for 'finite' declaration on some platforms */
-#endif
-
-#include <math.h> /* Moved here from the math section, before extern "C" */
-
-/********************************************
- * WRAPPER FOR <time.h> and/or <sys/time.h> *
- ********************************************/
-
-#ifdef TIME_WITH_SYS_TIME
-#include <sys/time.h>
-#include <time.h>
-#else /* !TIME_WITH_SYS_TIME */
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#else /* !HAVE_SYS_TIME_H */
-#include <time.h>
-#endif /* !HAVE_SYS_TIME_H */
-#endif /* !TIME_WITH_SYS_TIME */
-
-
-/******************************
- * WRAPPER FOR <sys/select.h> *
- ******************************/
-
-/* NB caller must include <sys/types.h> */
-
-#ifdef HAVE_SYS_SELECT_H
-
-#include <sys/select.h>
-
-#endif /* !HAVE_SYS_SELECT_H */
-
-/*******************************
- * stat() and fstat() fiddling *
- *******************************/
-
-/* We expect that stat and fstat exist on most systems.
- *  It's confirmed on Unix, Mac and Windows.
- *  If you don't have them, add
- *      #define DONT_HAVE_STAT
- * and/or
- *      #define DONT_HAVE_FSTAT
- * to your pyconfig.h. Python code beyond this should check HAVE_STAT and
- * HAVE_FSTAT instead.
- * Also
- *      #define HAVE_SYS_STAT_H
- * if <sys/stat.h> exists on your platform, and
- *      #define HAVE_STAT_H
- * if <stat.h> does.
- */
-#ifndef DONT_HAVE_STAT
-#define HAVE_STAT
-#endif
-
-#ifndef DONT_HAVE_FSTAT
-#define HAVE_FSTAT
-#endif
-
-#ifdef RISCOS
-#include <sys/types.h>
-#include "unixstuff.h"
-#endif
-
-#ifdef HAVE_SYS_STAT_H
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-#include <sys/types.h>
-#endif
-#include <sys/stat.h>
-#elif defined(HAVE_STAT_H)
-#include <stat.h>
-#endif
-
-#if defined(PYCC_VACPP)
-/* VisualAge C/C++ Failed to Define MountType Field in sys/stat.h */
-#define S_IFMT (S_IFDIR|S_IFCHR|S_IFREG)
-#endif
-
-#ifndef S_ISREG
-#define S_ISREG(x) (((x) & S_IFMT) == S_IFREG)
-#endif
-
-#ifndef S_ISDIR
-#define S_ISDIR(x) (((x) & S_IFMT) == S_IFDIR)
-#endif
-
-
-#ifdef __cplusplus
-/* Move this down here since some C++ #include's don't like to be included
-   inside an extern "C" */
-extern "C" {
-#endif
-
-
-/* Py_ARITHMETIC_RIGHT_SHIFT
- * C doesn't define whether a right-shift of a signed integer sign-extends
- * or zero-fills.  Here a macro to force sign extension:
- * Py_ARITHMETIC_RIGHT_SHIFT(TYPE, I, J)
- *    Return I >> J, forcing sign extension.  Arithmetically, return the
- *    floor of I/2**J.
- * Requirements:
- *    I should have signed integer type.  In the terminology of C99, this can
- *    be either one of the five standard signed integer types (signed char,
- *    short, int, long, long long) or an extended signed integer type.
- *    J is an integer >= 0 and strictly less than the number of bits in the
- *    type of I (because C doesn't define what happens for J outside that
- *    range either).
- *    TYPE used to specify the type of I, but is now ignored.  It's been left
- *    in for backwards compatibility with versions <= 2.6 or 3.0.
- * Caution:
- *    I may be evaluated more than once.
- */
-#ifdef SIGNED_RIGHT_SHIFT_ZERO_FILLS
-#define Py_ARITHMETIC_RIGHT_SHIFT(TYPE, I, J) \
-    ((I) < 0 ? -1-((-1-(I)) >> (J)) : (I) >> (J))
-#else
-#define Py_ARITHMETIC_RIGHT_SHIFT(TYPE, I, J) ((I) >> (J))
-#endif
-
-/* Py_FORCE_EXPANSION(X)
- * "Simply" returns its argument.  However, macro expansions within the
- * argument are evaluated.  This unfortunate trickery is needed to get
- * token-pasting to work as desired in some cases.
- */
-#define Py_FORCE_EXPANSION(X) X
-
-/* Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW)
- * Cast VALUE to type NARROW from type WIDE.  In Py_DEBUG mode, this
- * assert-fails if any information is lost.
- * Caution:
- *    VALUE may be evaluated more than once.
- */
-#ifdef Py_DEBUG
-#define Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) \
-    (assert((WIDE)(NARROW)(VALUE) == (VALUE)), (NARROW)(VALUE))
-#else
-#define Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) (NARROW)(VALUE)
-#endif
-
-/* Py_SET_ERRNO_ON_MATH_ERROR(x)
- * If a libm function did not set errno, but it looks like the result
- * overflowed or not-a-number, set errno to ERANGE or EDOM.  Set errno
- * to 0 before calling a libm function, and invoke this macro after,
- * passing the function result.
- * Caution:
- *    This isn't reliable.  See Py_OVERFLOWED comments.
- *    X is evaluated more than once.
- */
-#if defined(__FreeBSD__) || defined(__OpenBSD__) || (defined(__hpux) && defined(__ia64))
-#define _Py_SET_EDOM_FOR_NAN(X) if (isnan(X)) errno = EDOM;
-#else
-#define _Py_SET_EDOM_FOR_NAN(X) ;
-#endif
-#define Py_SET_ERRNO_ON_MATH_ERROR(X) \
-    do { \
-        if (errno == 0) { \
-            if ((X) == Py_HUGE_VAL || (X) == -Py_HUGE_VAL) \
-                errno = ERANGE; \
-            else _Py_SET_EDOM_FOR_NAN(X) \
-        } \
-    } while(0)
-
-/* Py_SET_ERANGE_ON_OVERFLOW(x)
- * An alias of Py_SET_ERRNO_ON_MATH_ERROR for backward-compatibility.
- */
-#define Py_SET_ERANGE_IF_OVERFLOW(X) Py_SET_ERRNO_ON_MATH_ERROR(X)
-
-/* Py_ADJUST_ERANGE1(x)
- * Py_ADJUST_ERANGE2(x, y)
- * Set errno to 0 before calling a libm function, and invoke one of these
- * macros after, passing the function result(s) (Py_ADJUST_ERANGE2 is useful
- * for functions returning complex results).  This makes two kinds of
- * adjustments to errno:  (A) If it looks like the platform libm set
- * errno=ERANGE due to underflow, clear errno. (B) If it looks like the
- * platform libm overflowed but didn't set errno, force errno to ERANGE.  In
- * effect, we're trying to force a useful implementation of C89 errno
- * behavior.
- * Caution:
- *    This isn't reliable.  See Py_OVERFLOWED comments.
- *    X and Y may be evaluated more than once.
- */
-#define Py_ADJUST_ERANGE1(X)                                            \
-    do {                                                                \
-        if (errno == 0) {                                               \
-            if ((X) == Py_HUGE_VAL || (X) == -Py_HUGE_VAL)              \
-                errno = ERANGE;                                         \
-        }                                                               \
-        else if (errno == ERANGE && (X) == 0.0)                         \
-            errno = 0;                                                  \
-    } while(0)
-
-#define Py_ADJUST_ERANGE2(X, Y)                                         \
-    do {                                                                \
-        if ((X) == Py_HUGE_VAL || (X) == -Py_HUGE_VAL ||                \
-            (Y) == Py_HUGE_VAL || (Y) == -Py_HUGE_VAL) {                \
-                        if (errno == 0)                                 \
-                                errno = ERANGE;                         \
-        }                                                               \
-        else if (errno == ERANGE)                                       \
-            errno = 0;                                                  \
-    } while(0)
-
-/*  The functions _Py_dg_strtod and _Py_dg_dtoa in Python/dtoa.c (which are
- *  required to support the short float repr introduced in Python 3.1) require
- *  that the floating-point unit that's being used for arithmetic operations
- *  on C doubles is set to use 53-bit precision.  It also requires that the
- *  FPU rounding mode is round-half-to-even, but that's less often an issue.
- *
- *  If your FPU isn't already set to 53-bit precision/round-half-to-even, and
- *  you want to make use of _Py_dg_strtod and _Py_dg_dtoa, then you should
- *
- *     #define HAVE_PY_SET_53BIT_PRECISION 1
- *
- *  and also give appropriate definitions for the following three macros:
- *
- *    _PY_SET_53BIT_PRECISION_START : store original FPU settings, and
- *        set FPU to 53-bit precision/round-half-to-even
- *    _PY_SET_53BIT_PRECISION_END : restore original FPU settings
- *    _PY_SET_53BIT_PRECISION_HEADER : any variable declarations needed to
- *        use the two macros above.
- *
- * The macros are designed to be used within a single C function: see
- * Python/pystrtod.c for an example of their use.
- */
-
-/* get and set x87 control word for gcc/x86 */
-#ifdef HAVE_GCC_ASM_FOR_X87
-#define HAVE_PY_SET_53BIT_PRECISION 1
-/* _Py_get/set_387controlword functions are defined in Python/pymath.c */
-#define _Py_SET_53BIT_PRECISION_HEADER                          \
-    unsigned short old_387controlword, new_387controlword
-#define _Py_SET_53BIT_PRECISION_START                                   \
-    do {                                                                \
-        old_387controlword = _Py_get_387controlword();                  \
-        new_387controlword = (old_387controlword & ~0x0f00) | 0x0200; \
-        if (new_387controlword != old_387controlword)                   \
-            _Py_set_387controlword(new_387controlword);                 \
-    } while (0)
-#define _Py_SET_53BIT_PRECISION_END                             \
-    if (new_387controlword != old_387controlword)               \
-        _Py_set_387controlword(old_387controlword)
-#endif
-
-/* default definitions are empty */
-#ifndef HAVE_PY_SET_53BIT_PRECISION
-#define _Py_SET_53BIT_PRECISION_HEADER
-#define _Py_SET_53BIT_PRECISION_START
-#define _Py_SET_53BIT_PRECISION_END
-#endif
-
-/* If we can't guarantee 53-bit precision, don't use the code
-   in Python/dtoa.c, but fall back to standard code.  This
-   means that repr of a float will be long (17 sig digits).
-
-   Realistically, there are two things that could go wrong:
-
-   (1) doubles aren't IEEE 754 doubles, or
-   (2) we're on x86 with the rounding precision set to 64-bits
-       (extended precision), and we don't know how to change
-       the rounding precision.
- */
-
-#if !defined(DOUBLE_IS_LITTLE_ENDIAN_IEEE754) && \
-    !defined(DOUBLE_IS_BIG_ENDIAN_IEEE754) && \
-    !defined(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754)
-#define PY_NO_SHORT_FLOAT_REPR
-#endif
-
-/* double rounding is symptomatic of use of extended precision on x86.  If
-   we're seeing double rounding, and we don't have any mechanism available for
-   changing the FPU rounding precision, then don't use Python/dtoa.c. */
-#if defined(X87_DOUBLE_ROUNDING) && !defined(HAVE_PY_SET_53BIT_PRECISION)
-#define PY_NO_SHORT_FLOAT_REPR
-#endif
-
-/* Py_DEPRECATED(version)
- * Declare a variable, type, or function deprecated.
- * Usage:
- *    extern int old_var Py_DEPRECATED(2.3);
- *    typedef int T1 Py_DEPRECATED(2.4);
- *    extern int x() Py_DEPRECATED(2.5);
- */
-#if defined(__GNUC__) && ((__GNUC__ >= 4) || \
-              (__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))
-#define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
-#else
-#define Py_DEPRECATED(VERSION_UNUSED)
-#endif
-
-/**************************************************************************
-Prototypes that are missing from the standard include files on some systems
-(and possibly only some versions of such systems.)
-
-Please be conservative with adding new ones, document them and enclose them
-in platform-specific #ifdefs.
-**************************************************************************/
-
-#ifdef SOLARIS
-/* Unchecked */
-extern int gethostname(char *, int);
-#endif
-
-#ifdef __BEOS__
-/* Unchecked */
-/* It's in the libs, but not the headers... - [cjh] */
-int shutdown( int, int );
-#endif
-
-#ifdef HAVE__GETPTY
-#include <sys/types.h>          /* we need to import mode_t */
-extern char * _getpty(int *, int, mode_t, int);
-#endif
-
-/* On QNX 6, struct termio must be declared by including sys/termio.h
-   if TCGETA, TCSETA, TCSETAW, or TCSETAF are used.  sys/termio.h must
-   be included before termios.h or it will generate an error. */
-#ifdef HAVE_SYS_TERMIO_H
-#include <sys/termio.h>
-#endif
-
-#if defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY)
-#if !defined(HAVE_PTY_H) && !defined(HAVE_LIBUTIL_H) && !defined(HAVE_UTIL_H)
-/* BSDI does not supply a prototype for the 'openpty' and 'forkpty'
-   functions, even though they are included in libutil. */
-#include <termios.h>
-extern int openpty(int *, int *, char *, struct termios *, struct winsize *);
-extern pid_t forkpty(int *, char *, struct termios *, struct winsize *);
-#endif /* !defined(HAVE_PTY_H) && !defined(HAVE_LIBUTIL_H) */
-#endif /* defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) */
-
-
-/* These are pulled from various places. It isn't obvious on what platforms
-   they are necessary, nor what the exact prototype should look like (which
-   is likely to vary between platforms!) If you find you need one of these
-   declarations, please move them to a platform-specific block and include
-   proper prototypes. */
-#if 0
-
-/* From Modules/resource.c */
-extern int getrusage();
-extern int getpagesize();
-
-/* From Python/sysmodule.c and Modules/posixmodule.c */
-extern int fclose(FILE *);
-
-/* From Modules/posixmodule.c */
-extern int fdatasync(int);
-#endif /* 0 */
-
-
-/* On 4.4BSD-descendants, ctype functions serves the whole range of
- * wchar_t character set rather than single byte code points only.
- * This characteristic can break some operations of string object
- * including str.upper() and str.split() on UTF-8 locales.  This
- * workaround was provided by Tim Robbins of FreeBSD project.
- */
-
-#ifdef __FreeBSD__
-#include <osreldate.h>
-#if __FreeBSD_version > 500039
-# define _PY_PORT_CTYPE_UTF8_ISSUE
-#endif
-#endif
-
-
-#if defined(__APPLE__)
-# define _PY_PORT_CTYPE_UTF8_ISSUE
-#endif
-
-#ifdef _PY_PORT_CTYPE_UTF8_ISSUE
-#include <ctype.h>
-#include <wctype.h>
-#undef isalnum
-#define isalnum(c) iswalnum(btowc(c))
-#undef isalpha
-#define isalpha(c) iswalpha(btowc(c))
-#undef islower
-#define islower(c) iswlower(btowc(c))
-#undef isspace
-#define isspace(c) iswspace(btowc(c))
-#undef isupper
-#define isupper(c) iswupper(btowc(c))
-#undef tolower
-#define tolower(c) towlower(btowc(c))
-#undef toupper
-#define toupper(c) towupper(btowc(c))
-#endif
-
-
-/* Declarations for symbol visibility.
-
-  PyAPI_FUNC(type): Declares a public Python API function and return type
-  PyAPI_DATA(type): Declares public Python data and its type
-  PyMODINIT_FUNC:   A Python module init function.  If these functions are
-                    inside the Python core, they are private to the core.
-                    If in an extension module, it may be declared with
-                    external linkage depending on the platform.
-
-  As a number of platforms support/require "__declspec(dllimport/dllexport)",
-  we support a HAVE_DECLSPEC_DLL macro to save duplication.
-*/
-
-/*
-  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().
-*/
-#if defined(__CYGWIN__) || defined(__BEOS__)
-#       define HAVE_DECLSPEC_DLL
-#endif
-
-/* only get special linkage if built as shared or platform is Cygwin */
-#if defined(Py_ENABLE_SHARED) || defined(__CYGWIN__)
-#       if defined(HAVE_DECLSPEC_DLL)
-#               ifdef Py_BUILD_CORE
-#                       define PyAPI_FUNC(RTYPE) __declspec(dllexport) RTYPE
-#                       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__)
-#                               define PyMODINIT_FUNC __declspec(dllexport) void
-#                       else /* __CYGWIN__ */
-#                               define PyMODINIT_FUNC void
-#                       endif /* __CYGWIN__ */
-#               else /* Py_BUILD_CORE */
-        /* Building an extension module, or an embedded situation */
-        /* public Python functions and data are imported */
-        /* 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__)
-#                               define PyAPI_FUNC(RTYPE) __declspec(dllimport) RTYPE
-#                       endif /* !__CYGWIN__ */
-#                       define PyAPI_DATA(RTYPE) extern __declspec(dllimport) RTYPE
-        /* module init functions outside the core must be exported */
-#                       if defined(__cplusplus)
-#                               define PyMODINIT_FUNC extern "C" __declspec(dllexport) void
-#                       else /* __cplusplus */
-#                               define PyMODINIT_FUNC __declspec(dllexport) void
-#                       endif /* __cplusplus */
-#               endif /* Py_BUILD_CORE */
-#       endif /* HAVE_DECLSPEC */
-#endif /* Py_ENABLE_SHARED */
-
-/* If no external linkage macros defined by now, create defaults */
-#ifndef PyAPI_FUNC
-#       define PyAPI_FUNC(RTYPE) RTYPE
-#endif
-#ifndef PyAPI_DATA
-#       define PyAPI_DATA(RTYPE) extern RTYPE
-#endif
-#ifndef PyMODINIT_FUNC
-#       if defined(__cplusplus)
-#               define PyMODINIT_FUNC extern "C" void
-#       else /* __cplusplus */
-#               define PyMODINIT_FUNC void
-#       endif /* __cplusplus */
-#endif
-
-/* Deprecated DL_IMPORT and DL_EXPORT macros */
-#if defined(Py_ENABLE_SHARED) && defined (HAVE_DECLSPEC_DLL)
-#       if defined(Py_BUILD_CORE)
-#               define DL_IMPORT(RTYPE) __declspec(dllexport) RTYPE
-#               define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE
-#       else
-#               define DL_IMPORT(RTYPE) __declspec(dllimport) RTYPE
-#               define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE
-#       endif
-#endif
-#ifndef DL_EXPORT
-#       define DL_EXPORT(RTYPE) RTYPE
-#endif
-#ifndef DL_IMPORT
-#       define DL_IMPORT(RTYPE) RTYPE
-#endif
-/* End of deprecated DL_* macros */
-
-/* If the fd manipulation macros aren't defined,
-   here is a set that should do the job */
-
-#if 0 /* disabled and probably obsolete */
-
-#ifndef FD_SETSIZE
-#define FD_SETSIZE      256
-#endif
-
-#ifndef FD_SET
-
-typedef long fd_mask;
-
-#define NFDBITS (sizeof(fd_mask) * NBBY)        /* bits per mask */
-#ifndef howmany
-#define howmany(x, y)   (((x)+((y)-1))/(y))
-#endif /* howmany */
-
-typedef struct fd_set {
-    fd_mask     fds_bits[howmany(FD_SETSIZE, NFDBITS)];
-} fd_set;
-
-#define FD_SET(n, p)    ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
-#define FD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
-#define FD_ISSET(n, p)  ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
-#define FD_ZERO(p)      memset((char *)(p), '\0', sizeof(*(p)))
-
-#endif /* FD_SET */
-
-#endif /* fd manipulation macros */
-
-
-/* limits.h constants that may be missing */
-
-#ifndef INT_MAX
-#define INT_MAX 2147483647
-#endif
-
-#ifndef LONG_MAX
-#if SIZEOF_LONG == 4
-#define LONG_MAX 0X7FFFFFFFL
-#elif SIZEOF_LONG == 8
-#define LONG_MAX 0X7FFFFFFFFFFFFFFFL
-#else
-#error "could not set LONG_MAX in pyport.h"
-#endif
-#endif
-
-#ifndef LONG_MIN
-#define LONG_MIN (-LONG_MAX-1)
-#endif
-
-#ifndef LONG_BIT
-#define LONG_BIT (8 * SIZEOF_LONG)
-#endif
-
-#if LONG_BIT != 8 * SIZEOF_LONG
-/* 04-Oct-2000 LONG_BIT is apparently (mis)defined as 64 on some recent
- * 32-bit platforms using gcc.  We try to catch that here at compile-time
- * rather than waiting for integer multiplication to trigger bogus
- * overflows.
- */
-#error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-/*
- * Hide GCC attributes from compilers that don't support them.
- */
-#if (!defined(__GNUC__) || __GNUC__ < 2 || \
-     (__GNUC__ == 2 && __GNUC_MINOR__ < 7) ) && \
-    !defined(RISCOS)
-#define Py_GCC_ATTRIBUTE(x)
-#else
-#define Py_GCC_ATTRIBUTE(x) __attribute__(x)
-#endif
-
-/*
- * Add PyArg_ParseTuple format where available.
- */
-#ifdef HAVE_ATTRIBUTE_FORMAT_PARSETUPLE
-#define Py_FORMAT_PARSETUPLE(func,p1,p2) __attribute__((format(func,p1,p2)))
-#else
-#define Py_FORMAT_PARSETUPLE(func,p1,p2)
-#endif
-
-/*
- * Specify alignment on compilers that support it.
- */
-#if defined(__GNUC__) && __GNUC__ >= 3
-#define Py_ALIGNED(x) __attribute__((aligned(x)))
-#else
-#define Py_ALIGNED(x)
-#endif
-
-/* Eliminate end-of-loop code not reached warnings from SunPro C
- * when using do{...}while(0) macros
- */
-#ifdef __SUNPRO_C
-#pragma error_messages (off,E_END_OF_LOOP_CODE_NOT_REACHED)
-#endif
-
-/*
- * Older Microsoft compilers don't support the C99 long long literal suffixes,
- * so these will be defined in PC/pyconfig.h for those compilers.
- */
-#ifndef Py_LL
-#define Py_LL(x) x##LL
-#endif
-
-#ifndef Py_ULL
-#define Py_ULL(x) Py_LL(x##U)
-#endif
-
-#endif /* Py_PYPORT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pystate.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pystate.h
deleted file mode 100644
index 6d11e49..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pystate.h
+++ /dev/null
@@ -1,198 +0,0 @@
-
-/* Thread and interpreter state structures and their interfaces */
-
-
-#ifndef Py_PYSTATE_H
-#define Py_PYSTATE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* State shared between threads */
-
-struct _ts; /* Forward */
-struct _is; /* Forward */
-
-typedef struct _is {
-
-    struct _is *next;
-    struct _ts *tstate_head;
-
-    PyObject *modules;
-    PyObject *sysdict;
-    PyObject *builtins;
-    PyObject *modules_reloading;
-
-    PyObject *codec_search_path;
-    PyObject *codec_search_cache;
-    PyObject *codec_error_registry;
-
-#ifdef HAVE_DLOPEN
-    int dlopenflags;
-#endif
-#ifdef WITH_TSC
-    int tscdump;
-#endif
-
-} PyInterpreterState;
-
-
-/* State unique per thread */
-
-struct _frame; /* Avoid including frameobject.h */
-
-/* Py_tracefunc return -1 when raising an exception, or 0 for success. */
-typedef int (*Py_tracefunc)(PyObject *, struct _frame *, int, PyObject *);
-
-/* The following values are used for 'what' for tracefunc functions: */
-#define PyTrace_CALL 0
-#define PyTrace_EXCEPTION 1
-#define PyTrace_LINE 2
-#define PyTrace_RETURN 3
-#define PyTrace_C_CALL 4
-#define PyTrace_C_EXCEPTION 5
-#define PyTrace_C_RETURN 6
-
-typedef struct _ts {
-    /* See Python/ceval.c for comments explaining most fields */
-
-    struct _ts *next;
-    PyInterpreterState *interp;
-
-    struct _frame *frame;
-    int recursion_depth;
-    /* 'tracing' keeps track of the execution depth when tracing/profiling.
-       This is to prevent the actual trace/profile code from being recorded in
-       the trace/profile. */
-    int tracing;
-    int use_tracing;
-
-    Py_tracefunc c_profilefunc;
-    Py_tracefunc c_tracefunc;
-    PyObject *c_profileobj;
-    PyObject *c_traceobj;
-
-    PyObject *curexc_type;
-    PyObject *curexc_value;
-    PyObject *curexc_traceback;
-
-    PyObject *exc_type;
-    PyObject *exc_value;
-    PyObject *exc_traceback;
-
-    PyObject *dict;  /* Stores per-thread state */
-
-    /* tick_counter is incremented whenever the check_interval ticker
-     * reaches zero. The purpose is to give a useful measure of the number
-     * of interpreted bytecode instructions in a given thread.  This
-     * extremely lightweight statistic collector may be of interest to
-     * profilers (like psyco.jit()), although nothing in the core uses it.
-     */
-    int tick_counter;
-
-    int gilstate_counter;
-
-    PyObject *async_exc; /* Asynchronous exception to raise */
-    long thread_id; /* Thread id where this tstate was created */
-
-    /* XXX signal handlers should also be here */
-
-} PyThreadState;
-
-
-PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_New(void);
-PyAPI_FUNC(void) PyInterpreterState_Clear(PyInterpreterState *);
-PyAPI_FUNC(void) PyInterpreterState_Delete(PyInterpreterState *);
-
-PyAPI_FUNC(PyThreadState *) PyThreadState_New(PyInterpreterState *);
-PyAPI_FUNC(PyThreadState *) _PyThreadState_Prealloc(PyInterpreterState *);
-PyAPI_FUNC(void) _PyThreadState_Init(PyThreadState *);
-PyAPI_FUNC(void) PyThreadState_Clear(PyThreadState *);
-PyAPI_FUNC(void) PyThreadState_Delete(PyThreadState *);
-#ifdef WITH_THREAD
-PyAPI_FUNC(void) PyThreadState_DeleteCurrent(void);
-PyAPI_FUNC(void) _PyGILState_Reinit(void);
-#endif
-
-PyAPI_FUNC(PyThreadState *) PyThreadState_Get(void);
-PyAPI_FUNC(PyThreadState *) PyThreadState_Swap(PyThreadState *);
-PyAPI_FUNC(PyObject *) PyThreadState_GetDict(void);
-PyAPI_FUNC(int) PyThreadState_SetAsyncExc(long, PyObject *);
-
-
-/* Variable and macro for in-line access to current thread state */
-
-PyAPI_DATA(PyThreadState *) _PyThreadState_Current;
-
-#ifdef Py_DEBUG
-#define PyThreadState_GET() PyThreadState_Get()
-#else
-#define PyThreadState_GET() (_PyThreadState_Current)
-#endif
-
-typedef
-    enum {PyGILState_LOCKED, PyGILState_UNLOCKED}
-        PyGILState_STATE;
-
-/* Ensure that the current thread is ready to call the Python
-   C API, regardless of the current state of Python, or of its
-   thread lock.  This may be called as many times as desired
-   by a thread so long as each call is matched with a call to
-   PyGILState_Release().  In general, other thread-state APIs may
-   be used between _Ensure() and _Release() calls, so long as the
-   thread-state is restored to its previous state before the Release().
-   For example, normal use of the Py_BEGIN_ALLOW_THREADS/
-   Py_END_ALLOW_THREADS macros are acceptable.
-
-   The return value is an opaque "handle" to the thread state when
-   PyGILState_Ensure() was called, and must be passed to
-   PyGILState_Release() to ensure Python is left in the same state. Even
-   though recursive calls are allowed, these handles can *not* be shared -
-   each unique call to PyGILState_Ensure must save the handle for its
-   call to PyGILState_Release.
-
-   When the function returns, the current thread will hold the GIL.
-
-   Failure is a fatal error.
-*/
-PyAPI_FUNC(PyGILState_STATE) PyGILState_Ensure(void);
-
-/* Release any resources previously acquired.  After this call, Python's
-   state will be the same as it was prior to the corresponding
-   PyGILState_Ensure() call (but generally this state will be unknown to
-   the caller, hence the use of the GILState API.)
-
-   Every call to PyGILState_Ensure must be matched by a call to
-   PyGILState_Release on the same thread.
-*/
-PyAPI_FUNC(void) PyGILState_Release(PyGILState_STATE);
-
-/* Helper/diagnostic function - get the current thread state for
-   this thread.  May return NULL if no GILState API has been used
-   on the current thread.  Note the main thread always has such a
-   thread-state, even if no auto-thread-state call has been made
-   on the main thread.
-*/
-PyAPI_FUNC(PyThreadState *) PyGILState_GetThisThreadState(void);
-
-/* The implementation of sys._current_frames()  Returns a dict mapping
-   thread id to that thread's current frame.
-*/
-PyAPI_FUNC(PyObject *) _PyThread_CurrentFrames(void);
-
-/* Routines for advanced debuggers, requested by David Beazley.
-   Don't use unless you know what you are doing! */
-PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_Head(void);
-PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_Next(PyInterpreterState *);
-PyAPI_FUNC(PyThreadState *) PyInterpreterState_ThreadHead(PyInterpreterState *);
-PyAPI_FUNC(PyThreadState *) PyThreadState_Next(PyThreadState *);
-
-typedef struct _frame *(*PyThreadFrameGetter)(PyThreadState *self_);
-
-/* hook for PyEval_GetFrame(), requested for Psyco */
-PyAPI_DATA(PyThreadFrameGetter) _PyThreadState_GetFrame;
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PYSTATE_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pystrcmp.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pystrcmp.h
deleted file mode 100644
index 542399d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pystrcmp.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef Py_STRCMP_H
-#define Py_STRCMP_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(int) PyOS_mystrnicmp(const char *, const char *, Py_ssize_t);
-PyAPI_FUNC(int) PyOS_mystricmp(const char *, const char *);
-
-#if defined(MS_WINDOWS) || defined(PYOS_OS2)
-#define PyOS_strnicmp strnicmp
-#define PyOS_stricmp stricmp
-#else
-#define PyOS_strnicmp PyOS_mystrnicmp
-#define PyOS_stricmp PyOS_mystricmp
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_STRCMP_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pystrtod.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pystrtod.h
deleted file mode 100644
index f2ecc60..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pystrtod.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef Py_STRTOD_H
-#define Py_STRTOD_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-PyAPI_FUNC(double) PyOS_ascii_strtod(const char *str, char **ptr);
-PyAPI_FUNC(double) PyOS_ascii_atof(const char *str);
-
-/* Deprecated in 2.7 and 3.1. Will disappear in 2.8 (if it exists) and 3.2 */
-PyAPI_FUNC(char *) PyOS_ascii_formatd(char *buffer, size_t buf_len,
-                                      const char *format, double d);
-PyAPI_FUNC(double) PyOS_string_to_double(const char *str,
-                                         char **endptr,
-                                         PyObject *overflow_exception);
-
-/* The caller is responsible for calling PyMem_Free to free the buffer
-   that's is returned. */
-PyAPI_FUNC(char *) PyOS_double_to_string(double val,
-                                         char format_code,
-                                         int precision,
-                                         int flags,
-                                         int *type);
-
-PyAPI_FUNC(double) _Py_parse_inf_or_nan(const char *p, char **endptr);
-
-
-/* PyOS_double_to_string's "flags" parameter can be set to 0 or more of: */
-#define Py_DTSF_SIGN      0x01 /* always add the sign */
-#define Py_DTSF_ADD_DOT_0 0x02 /* if the result is an integer add ".0" */
-#define Py_DTSF_ALT       0x04 /* "alternate" formatting. it's format_code
-                                  specific */
-
-/* PyOS_double_to_string's "type", if non-NULL, will be set to one of: */
-#define Py_DTST_FINITE 0
-#define Py_DTST_INFINITE 1
-#define Py_DTST_NAN 2
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_STRTOD_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pythonrun.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pythonrun.h
deleted file mode 100644
index 7584ee5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pythonrun.h
+++ /dev/null
@@ -1,178 +0,0 @@
-
-/* Interfaces to parse and execute pieces of python code */
-
-#ifndef Py_PYTHONRUN_H
-#define Py_PYTHONRUN_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define PyCF_MASK (CO_FUTURE_DIVISION | CO_FUTURE_ABSOLUTE_IMPORT | \
-                   CO_FUTURE_WITH_STATEMENT | CO_FUTURE_PRINT_FUNCTION | \
-                   CO_FUTURE_UNICODE_LITERALS)
-#define PyCF_MASK_OBSOLETE (CO_NESTED)
-#define PyCF_SOURCE_IS_UTF8  0x0100
-#define PyCF_DONT_IMPLY_DEDENT 0x0200
-#define PyCF_ONLY_AST 0x0400
-
-typedef struct {
-    int cf_flags;  /* bitmask of CO_xxx flags relevant to future */
-} PyCompilerFlags;
-
-PyAPI_FUNC(void) Py_SetProgramName(char *);
-PyAPI_FUNC(char *) Py_GetProgramName(void);
-
-PyAPI_FUNC(void) Py_SetPythonHome(char *);
-PyAPI_FUNC(char *) Py_GetPythonHome(void);
-
-PyAPI_FUNC(void) Py_Initialize(void);
-PyAPI_FUNC(void) Py_InitializeEx(int);
-PyAPI_FUNC(void) Py_Finalize(void);
-PyAPI_FUNC(int) Py_IsInitialized(void);
-PyAPI_FUNC(PyThreadState *) Py_NewInterpreter(void);
-PyAPI_FUNC(void) Py_EndInterpreter(PyThreadState *);
-
-PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *);
-PyAPI_FUNC(int) PyRun_AnyFileExFlags(FILE *, const char *, int, PyCompilerFlags *);
-PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *);
-PyAPI_FUNC(int) PyRun_SimpleFileExFlags(FILE *, const char *, int, PyCompilerFlags *);
-PyAPI_FUNC(int) PyRun_InteractiveOneFlags(FILE *, const char *, PyCompilerFlags *);
-PyAPI_FUNC(int) PyRun_InteractiveLoopFlags(FILE *, const char *, PyCompilerFlags *);
-
-PyAPI_FUNC(struct _mod *) PyParser_ASTFromString(const char *, const char *,
-                                                 int, PyCompilerFlags *flags,
-                                                 PyArena *);
-PyAPI_FUNC(struct _mod *) PyParser_ASTFromFile(FILE *, const char *, int,
-                                               char *, char *,
-                                               PyCompilerFlags *, int *,
-                                               PyArena *);
-#define PyParser_SimpleParseString(S, B) \
-    PyParser_SimpleParseStringFlags(S, B, 0)
-#define PyParser_SimpleParseFile(FP, S, B) \
-    PyParser_SimpleParseFileFlags(FP, S, B, 0)
-PyAPI_FUNC(struct _node *) PyParser_SimpleParseStringFlags(const char *, int,
-                                                          int);
-PyAPI_FUNC(struct _node *) PyParser_SimpleParseFileFlags(FILE *, const char *,
-                                                        int, int);
-
-PyAPI_FUNC(PyObject *) PyRun_StringFlags(const char *, int, PyObject *,
-                                         PyObject *, PyCompilerFlags *);
-
-PyAPI_FUNC(PyObject *) PyRun_FileExFlags(FILE *, const char *, int,
-                                         PyObject *, PyObject *, int,
-                                         PyCompilerFlags *);
-
-#define Py_CompileString(str, p, s) Py_CompileStringFlags(str, p, s, NULL)
-PyAPI_FUNC(PyObject *) Py_CompileStringFlags(const char *, const char *, int,
-                                             PyCompilerFlags *);
-PyAPI_FUNC(struct symtable *) Py_SymtableString(const char *, const char *, int);
-
-PyAPI_FUNC(void) PyErr_Print(void);
-PyAPI_FUNC(void) PyErr_PrintEx(int);
-PyAPI_FUNC(void) PyErr_Display(PyObject *, PyObject *, PyObject *);
-
-PyAPI_FUNC(int) Py_AtExit(void (*func)(void));
-
-PyAPI_FUNC(void) Py_Exit(int);
-
-PyAPI_FUNC(int) Py_FdIsInteractive(FILE *, const char *);
-
-/* Bootstrap */
-PyAPI_FUNC(int) Py_Main(int argc, char **argv);
-
-/* Use macros for a bunch of old variants */
-#define PyRun_String(str, s, g, l) PyRun_StringFlags(str, s, g, l, NULL)
-#define PyRun_AnyFile(fp, name) PyRun_AnyFileExFlags(fp, name, 0, NULL)
-#define PyRun_AnyFileEx(fp, name, closeit) \
-    PyRun_AnyFileExFlags(fp, name, closeit, NULL)
-#define PyRun_AnyFileFlags(fp, name, flags) \
-    PyRun_AnyFileExFlags(fp, name, 0, flags)
-#define PyRun_SimpleString(s) PyRun_SimpleStringFlags(s, NULL)
-#define PyRun_SimpleFile(f, p) PyRun_SimpleFileExFlags(f, p, 0, NULL)
-#define PyRun_SimpleFileEx(f, p, c) PyRun_SimpleFileExFlags(f, p, c, NULL)
-#define PyRun_InteractiveOne(f, p) PyRun_InteractiveOneFlags(f, p, NULL)
-#define PyRun_InteractiveLoop(f, p) PyRun_InteractiveLoopFlags(f, p, NULL)
-#define PyRun_File(fp, p, s, g, l) \
-    PyRun_FileExFlags(fp, p, s, g, l, 0, NULL)
-#define PyRun_FileEx(fp, p, s, g, l, c) \
-    PyRun_FileExFlags(fp, p, s, g, l, c, NULL)
-#define PyRun_FileFlags(fp, p, s, g, l, flags) \
-    PyRun_FileExFlags(fp, p, s, g, l, 0, flags)
-
-/* In getpath.c */
-PyAPI_FUNC(char *) Py_GetProgramFullPath(void);
-PyAPI_FUNC(char *) Py_GetPrefix(void);
-PyAPI_FUNC(char *) Py_GetExecPrefix(void);
-PyAPI_FUNC(char *) Py_GetPath(void);
-
-/* In their own files */
-PyAPI_FUNC(const char *) Py_GetVersion(void);
-PyAPI_FUNC(const char *) Py_GetPlatform(void);
-PyAPI_FUNC(const char *) Py_GetCopyright(void);
-PyAPI_FUNC(const char *) Py_GetCompiler(void);
-PyAPI_FUNC(const char *) Py_GetBuildInfo(void);
-PyAPI_FUNC(const char *) _Py_svnversion(void);
-PyAPI_FUNC(const char *) Py_SubversionRevision(void);
-PyAPI_FUNC(const char *) Py_SubversionShortBranch(void);
-PyAPI_FUNC(const char *) _Py_hgidentifier(void);
-PyAPI_FUNC(const char *) _Py_hgversion(void);
-
-/* Internal -- various one-time initializations */
-PyAPI_FUNC(PyObject *) _PyBuiltin_Init(void);
-PyAPI_FUNC(PyObject *) _PySys_Init(void);
-PyAPI_FUNC(void) _PyImport_Init(void);
-PyAPI_FUNC(void) _PyExc_Init(void);
-PyAPI_FUNC(void) _PyImportHooks_Init(void);
-PyAPI_FUNC(int) _PyFrame_Init(void);
-PyAPI_FUNC(int) _PyInt_Init(void);
-PyAPI_FUNC(int) _PyLong_Init(void);
-PyAPI_FUNC(void) _PyFloat_Init(void);
-PyAPI_FUNC(int) PyByteArray_Init(void);
-
-/* Various internal finalizers */
-PyAPI_FUNC(void) _PyExc_Fini(void);
-PyAPI_FUNC(void) _PyImport_Fini(void);
-PyAPI_FUNC(void) PyMethod_Fini(void);
-PyAPI_FUNC(void) PyFrame_Fini(void);
-PyAPI_FUNC(void) PyCFunction_Fini(void);
-PyAPI_FUNC(void) PyDict_Fini(void);
-PyAPI_FUNC(void) PyTuple_Fini(void);
-PyAPI_FUNC(void) PyList_Fini(void);
-PyAPI_FUNC(void) PySet_Fini(void);
-PyAPI_FUNC(void) PyString_Fini(void);
-PyAPI_FUNC(void) PyInt_Fini(void);
-PyAPI_FUNC(void) PyFloat_Fini(void);
-PyAPI_FUNC(void) PyOS_FiniInterrupts(void);
-PyAPI_FUNC(void) PyByteArray_Fini(void);
-
-/* Stuff with no proper home (yet) */
-PyAPI_FUNC(char *) PyOS_Readline(FILE *, FILE *, char *);
-PyAPI_DATA(int) (*PyOS_InputHook)(void);
-PyAPI_DATA(char) *(*PyOS_ReadlineFunctionPointer)(FILE *, FILE *, char *);
-PyAPI_DATA(PyThreadState*) _PyOS_ReadlineTState;
-
-/* Stack size, in "pointers" (so we get extra safety margins
-   on 64-bit platforms).  On a 32-bit platform, this translates
-   to a 8k margin. */
-#define PYOS_STACK_MARGIN 2048
-
-#if defined(WIN32) && !defined(MS_WIN64) && defined(_MSC_VER) && _MSC_VER >= 1300
-/* Enable stack checking under Microsoft C */
-#define USE_STACKCHECK
-#endif
-
-#ifdef USE_STACKCHECK
-/* Check that we aren't overflowing our stack */
-PyAPI_FUNC(int) PyOS_CheckStack(void);
-#endif
-
-/* Signals */
-typedef void (*PyOS_sighandler_t)(int);
-PyAPI_FUNC(PyOS_sighandler_t) PyOS_getsig(int);
-PyAPI_FUNC(PyOS_sighandler_t) PyOS_setsig(int, PyOS_sighandler_t);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PYTHONRUN_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/pythread.h b/AppPkg/Applications/Python/Python-2.7.2/Include/pythread.h
deleted file mode 100644
index d3c587b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/pythread.h
+++ /dev/null
@@ -1,41 +0,0 @@
-
-#ifndef Py_PYTHREAD_H
-#define Py_PYTHREAD_H
-
-typedef void *PyThread_type_lock;
-typedef void *PyThread_type_sema;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(void) PyThread_init_thread(void);
-PyAPI_FUNC(long) PyThread_start_new_thread(void (*)(void *), void *);
-PyAPI_FUNC(void) PyThread_exit_thread(void);
-PyAPI_FUNC(long) PyThread_get_thread_ident(void);
-
-PyAPI_FUNC(PyThread_type_lock) PyThread_allocate_lock(void);
-PyAPI_FUNC(void) PyThread_free_lock(PyThread_type_lock);
-PyAPI_FUNC(int) PyThread_acquire_lock(PyThread_type_lock, int);
-#define WAIT_LOCK	1
-#define NOWAIT_LOCK	0
-PyAPI_FUNC(void) PyThread_release_lock(PyThread_type_lock);
-
-PyAPI_FUNC(size_t) PyThread_get_stacksize(void);
-PyAPI_FUNC(int) PyThread_set_stacksize(size_t);
-
-/* Thread Local Storage (TLS) API */
-PyAPI_FUNC(int) PyThread_create_key(void);
-PyAPI_FUNC(void) PyThread_delete_key(int);
-PyAPI_FUNC(int) PyThread_set_key_value(int, void *);
-PyAPI_FUNC(void *) PyThread_get_key_value(int);
-PyAPI_FUNC(void) PyThread_delete_key_value(int key);
-
-/* Cleanup after a fork */
-PyAPI_FUNC(void) PyThread_ReInitTLS(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !Py_PYTHREAD_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/rangeobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/rangeobject.h
deleted file mode 100644
index b8dcb40..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/rangeobject.h
+++ /dev/null
@@ -1,28 +0,0 @@
-
-/* Range object interface */
-
-#ifndef Py_RANGEOBJECT_H
-#define Py_RANGEOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* This is about the type 'xrange', not the built-in function range(), which
-   returns regular lists. */
-
-/*
-A range object represents an integer range.  This is an immutable object;
-a range cannot change its value after creation.
-
-Range objects behave like the corresponding tuple objects except that
-they are represented by a start, stop, and step datamembers.
-*/
-
-PyAPI_DATA(PyTypeObject) PyRange_Type;
-
-#define PyRange_Check(op) (Py_TYPE(op) == &PyRange_Type)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_RANGEOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/setobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/setobject.h
deleted file mode 100644
index 6ded153..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/setobject.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/* Set object interface */
-
-#ifndef Py_SETOBJECT_H
-#define Py_SETOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/*
-There are three kinds of slots in the table:
-
-1. Unused:  key == NULL
-2. Active:  key != NULL and key != dummy
-3. Dummy:   key == dummy
-
-Note: .pop() abuses the hash field of an Unused or Dummy slot to
-hold a search finger.  The hash field of Unused or Dummy slots has
-no meaning otherwise.
-*/
-
-#define PySet_MINSIZE 8
-
-typedef struct {
-    long hash;      /* cached hash code for the entry key */
-    PyObject *key;
-} setentry;
-
-
-/*
-This data structure is shared by set and frozenset objects.
-*/
-
-typedef struct _setobject PySetObject;
-struct _setobject {
-    PyObject_HEAD
-
-    Py_ssize_t fill;  /* # Active + # Dummy */
-    Py_ssize_t used;  /* # Active */
-
-    /* The table contains mask + 1 slots, and that's a power of 2.
-     * We store the mask instead of the size because the mask is more
-     * frequently needed.
-     */
-    Py_ssize_t mask;
-
-    /* table points to smalltable for small tables, else to
-     * additional malloc'ed memory.  table is never NULL!  This rule
-     * saves repeated runtime null-tests.
-     */
-    setentry *table;
-    setentry *(*lookup)(PySetObject *so, PyObject *key, long hash);
-    setentry smalltable[PySet_MINSIZE];
-
-    long hash;                  /* only used by frozenset objects */
-    PyObject *weakreflist;      /* List of weak references */
-};
-
-PyAPI_DATA(PyTypeObject) PySet_Type;
-PyAPI_DATA(PyTypeObject) PyFrozenSet_Type;
-
-/* Invariants for frozensets:
- *     data is immutable.
- *     hash is the hash of the frozenset or -1 if not computed yet.
- * Invariants for sets:
- *     hash is -1
- */
-
-#define PyFrozenSet_CheckExact(ob) (Py_TYPE(ob) == &PyFrozenSet_Type)
-#define PyAnySet_CheckExact(ob) \
-    (Py_TYPE(ob) == &PySet_Type || Py_TYPE(ob) == &PyFrozenSet_Type)
-#define PyAnySet_Check(ob) \
-    (Py_TYPE(ob) == &PySet_Type || Py_TYPE(ob) == &PyFrozenSet_Type || \
-      PyType_IsSubtype(Py_TYPE(ob), &PySet_Type) || \
-      PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
-#define PySet_Check(ob) \
-    (Py_TYPE(ob) == &PySet_Type || \
-    PyType_IsSubtype(Py_TYPE(ob), &PySet_Type))
-#define   PyFrozenSet_Check(ob) \
-    (Py_TYPE(ob) == &PyFrozenSet_Type || \
-      PyType_IsSubtype(Py_TYPE(ob), &PyFrozenSet_Type))
-
-PyAPI_FUNC(PyObject *) PySet_New(PyObject *);
-PyAPI_FUNC(PyObject *) PyFrozenSet_New(PyObject *);
-PyAPI_FUNC(Py_ssize_t) PySet_Size(PyObject *anyset);
-#define PySet_GET_SIZE(so) (((PySetObject *)(so))->used)
-PyAPI_FUNC(int) PySet_Clear(PyObject *set);
-PyAPI_FUNC(int) PySet_Contains(PyObject *anyset, PyObject *key);
-PyAPI_FUNC(int) PySet_Discard(PyObject *set, PyObject *key);
-PyAPI_FUNC(int) PySet_Add(PyObject *set, PyObject *key);
-PyAPI_FUNC(int) _PySet_Next(PyObject *set, Py_ssize_t *pos, PyObject **key);
-PyAPI_FUNC(int) _PySet_NextEntry(PyObject *set, Py_ssize_t *pos, PyObject **key, long *hash);
-PyAPI_FUNC(PyObject *) PySet_Pop(PyObject *set);
-PyAPI_FUNC(int) _PySet_Update(PyObject *set, PyObject *iterable);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_SETOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/sliceobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/sliceobject.h
deleted file mode 100644
index 469921a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/sliceobject.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef Py_SLICEOBJECT_H
-#define Py_SLICEOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* The unique ellipsis object "..." */
-
-PyAPI_DATA(PyObject) _Py_EllipsisObject; /* Don't use this directly */
-
-#define Py_Ellipsis (&_Py_EllipsisObject)
-
-/* Slice object interface */
-
-/*
-
-A slice object containing start, stop, and step data members (the
-names are from range).  After much talk with Guido, it was decided to
-let these be any arbitrary python type.  Py_None stands for omitted values.
-*/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *start, *stop, *step;	/* not NULL */
-} PySliceObject;
-
-PyAPI_DATA(PyTypeObject) PySlice_Type;
-PyAPI_DATA(PyTypeObject) PyEllipsis_Type;
-
-#define PySlice_Check(op) (Py_TYPE(op) == &PySlice_Type)
-
-PyAPI_FUNC(PyObject *) PySlice_New(PyObject* start, PyObject* stop,
-                                  PyObject* step);
-PyAPI_FUNC(PyObject *) _PySlice_FromIndices(Py_ssize_t start, Py_ssize_t stop);
-PyAPI_FUNC(int) PySlice_GetIndices(PySliceObject *r, Py_ssize_t length,
-                                  Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step);
-PyAPI_FUNC(int) PySlice_GetIndicesEx(PySliceObject *r, Py_ssize_t length,
-				    Py_ssize_t *start, Py_ssize_t *stop, 
-				    Py_ssize_t *step, Py_ssize_t *slicelength);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_SLICEOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/stringobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/stringobject.h
deleted file mode 100644
index d20d986..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/stringobject.h
+++ /dev/null
@@ -1,210 +0,0 @@
-
-/* String (str/bytes) object interface */
-
-#ifndef Py_STRINGOBJECT_H
-#define Py_STRINGOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdarg.h>
-
-/*
-Type PyStringObject represents a character string.  An extra zero byte is
-reserved at the end to ensure it is zero-terminated, but a size is
-present so strings with null bytes in them can be represented.  This
-is an immutable object type.
-
-There are functions to create new string objects, to test
-an object for string-ness, and to get the
-string value.  The latter function returns a null pointer
-if the object is not of the proper type.
-There is a variant that takes an explicit size as well as a
-variant that assumes a zero-terminated string.  Note that none of the
-functions should be applied to nil objects.
-*/
-
-/* Caching the hash (ob_shash) saves recalculation of a string's hash value.
-   Interning strings (ob_sstate) tries to ensure that only one string
-   object with a given value exists, so equality tests can be one pointer
-   comparison.  This is generally restricted to strings that "look like"
-   Python identifiers, although the intern() builtin can be used to force
-   interning of any string.
-   Together, these sped the interpreter by up to 20%. */
-
-typedef struct {
-    PyObject_VAR_HEAD
-    long ob_shash;
-    int ob_sstate;
-    char ob_sval[1];
-
-    /* Invariants:
-     *     ob_sval contains space for 'ob_size+1' elements.
-     *     ob_sval[ob_size] == 0.
-     *     ob_shash is the hash of the string or -1 if not computed yet.
-     *     ob_sstate != 0 iff the string object is in stringobject.c's
-     *       'interned' dictionary; in this case the two references
-     *       from 'interned' to this object are *not counted* in ob_refcnt.
-     */
-} PyStringObject;
-
-#define SSTATE_NOT_INTERNED 0
-#define SSTATE_INTERNED_MORTAL 1
-#define SSTATE_INTERNED_IMMORTAL 2
-
-PyAPI_DATA(PyTypeObject) PyBaseString_Type;
-PyAPI_DATA(PyTypeObject) PyString_Type;
-
-#define PyString_Check(op) \
-                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_STRING_SUBCLASS)
-#define PyString_CheckExact(op) (Py_TYPE(op) == &PyString_Type)
-
-PyAPI_FUNC(PyObject *) PyString_FromStringAndSize(const char *, Py_ssize_t);
-PyAPI_FUNC(PyObject *) PyString_FromString(const char *);
-PyAPI_FUNC(PyObject *) PyString_FromFormatV(const char*, va_list)
-				Py_GCC_ATTRIBUTE((format(printf, 1, 0)));
-PyAPI_FUNC(PyObject *) PyString_FromFormat(const char*, ...)
-				Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
-PyAPI_FUNC(Py_ssize_t) PyString_Size(PyObject *);
-PyAPI_FUNC(char *) PyString_AsString(PyObject *);
-PyAPI_FUNC(PyObject *) PyString_Repr(PyObject *, int);
-PyAPI_FUNC(void) PyString_Concat(PyObject **, PyObject *);
-PyAPI_FUNC(void) PyString_ConcatAndDel(PyObject **, PyObject *);
-PyAPI_FUNC(int) _PyString_Resize(PyObject **, Py_ssize_t);
-PyAPI_FUNC(int) _PyString_Eq(PyObject *, PyObject*);
-PyAPI_FUNC(PyObject *) PyString_Format(PyObject *, PyObject *);
-PyAPI_FUNC(PyObject *) _PyString_FormatLong(PyObject*, int, int,
-						  int, char**, int*);
-PyAPI_FUNC(PyObject *) PyString_DecodeEscape(const char *, Py_ssize_t, 
-						   const char *, Py_ssize_t,
-						   const char *);
-
-PyAPI_FUNC(void) PyString_InternInPlace(PyObject **);
-PyAPI_FUNC(void) PyString_InternImmortal(PyObject **);
-PyAPI_FUNC(PyObject *) PyString_InternFromString(const char *);
-PyAPI_FUNC(void) _Py_ReleaseInternedStrings(void);
-
-/* Use only if you know it's a string */
-#define PyString_CHECK_INTERNED(op) (((PyStringObject *)(op))->ob_sstate)
-
-/* Macro, trading safety for speed */
-#define PyString_AS_STRING(op) (((PyStringObject *)(op))->ob_sval)
-#define PyString_GET_SIZE(op)  Py_SIZE(op)
-
-/* _PyString_Join(sep, x) is like sep.join(x).  sep must be PyStringObject*,
-   x must be an iterable object. */
-PyAPI_FUNC(PyObject *) _PyString_Join(PyObject *sep, PyObject *x);
-
-/* --- Generic Codecs ----------------------------------------------------- */
-
-/* Create an object by decoding the encoded string s of the
-   given size. */
-
-PyAPI_FUNC(PyObject*) PyString_Decode(
-    const char *s,              /* encoded string */
-    Py_ssize_t size,            /* size of buffer */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    );
-
-/* Encodes a char buffer of the given size and returns a 
-   Python object. */
-
-PyAPI_FUNC(PyObject*) PyString_Encode(
-    const char *s,              /* string char buffer */
-    Py_ssize_t size,            /* number of chars to encode */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    );
-
-/* Encodes a string object and returns the result as Python 
-   object. */
-
-PyAPI_FUNC(PyObject*) PyString_AsEncodedObject(
-    PyObject *str,	 	/* string object */
-    const char *encoding,	/* encoding */
-    const char *errors		/* error handling */
-    );
-
-/* Encodes a string object and returns the result as Python string
-   object.   
-   
-   If the codec returns an Unicode object, the object is converted
-   back to a string using the default encoding.
-
-   DEPRECATED - use PyString_AsEncodedObject() instead. */
-
-PyAPI_FUNC(PyObject*) PyString_AsEncodedString(
-    PyObject *str,	 	/* string object */
-    const char *encoding,	/* encoding */
-    const char *errors		/* error handling */
-    );
-
-/* Decodes a string object and returns the result as Python 
-   object. */
-
-PyAPI_FUNC(PyObject*) PyString_AsDecodedObject(
-    PyObject *str,	 	/* string object */
-    const char *encoding,	/* encoding */
-    const char *errors		/* error handling */
-    );
-
-/* Decodes a string object and returns the result as Python string
-   object.  
-   
-   If the codec returns an Unicode object, the object is converted
-   back to a string using the default encoding.
-
-   DEPRECATED - use PyString_AsDecodedObject() instead. */
-
-PyAPI_FUNC(PyObject*) PyString_AsDecodedString(
-    PyObject *str,	 	/* string object */
-    const char *encoding,	/* encoding */
-    const char *errors		/* error handling */
-    );
-
-/* Provides access to the internal data buffer and size of a string
-   object or the default encoded version of an Unicode object. Passing
-   NULL as *len parameter will force the string buffer to be
-   0-terminated (passing a string with embedded NULL characters will
-   cause an exception).  */
-
-PyAPI_FUNC(int) PyString_AsStringAndSize(
-    register PyObject *obj,	/* string or Unicode object */
-    register char **s,		/* pointer to buffer variable */
-    register Py_ssize_t *len	/* pointer to length variable or NULL
-				   (only possible for 0-terminated
-				   strings) */
-    );
-
-
-/* Using the current locale, insert the thousands grouping
-   into the string pointed to by buffer.  For the argument descriptions,
-   see Objects/stringlib/localeutil.h */
-PyAPI_FUNC(Py_ssize_t) _PyString_InsertThousandsGroupingLocale(char *buffer,
-                                  Py_ssize_t n_buffer,
-                                  char *digits,
-                                  Py_ssize_t n_digits,
-                                  Py_ssize_t min_width);
-
-/* Using explicit passed-in values, insert the thousands grouping
-   into the string pointed to by buffer.  For the argument descriptions,
-   see Objects/stringlib/localeutil.h */
-PyAPI_FUNC(Py_ssize_t) _PyString_InsertThousandsGrouping(char *buffer,
-                                  Py_ssize_t n_buffer,
-                                  char *digits,
-                                  Py_ssize_t n_digits,
-                                  Py_ssize_t min_width,
-                                  const char *grouping,
-                                  const char *thousands_sep);
-
-/* Format the object based on the format_spec, as defined in PEP 3101
-   (Advanced String Formatting). */
-PyAPI_FUNC(PyObject *) _PyBytes_FormatAdvanced(PyObject *obj,
-					       char *format_spec,
-					       Py_ssize_t format_spec_len);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_STRINGOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/structmember.h b/AppPkg/Applications/Python/Python-2.7.2/Include/structmember.h
deleted file mode 100644
index 8e2425b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/structmember.h
+++ /dev/null
@@ -1,99 +0,0 @@
-#ifndef Py_STRUCTMEMBER_H
-#define Py_STRUCTMEMBER_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Interface to map C struct members to Python object attributes */
-
-#include <stddef.h> /* For offsetof */
-
-/* The offsetof() macro calculates the offset of a structure member
-   in its structure.  Unfortunately this cannot be written down
-   portably, hence it is provided by a Standard C header file.
-   For pre-Standard C compilers, here is a version that usually works
-   (but watch out!): */
-
-#ifndef offsetof
-#define offsetof(type, member) ( (int) & ((type*)0) -> member )
-#endif
-
-/* An array of memberlist structures defines the name, type and offset
-   of selected members of a C structure.  These can be read by
-   PyMember_Get() and set by PyMember_Set() (except if their READONLY flag
-   is set).  The array must be terminated with an entry whose name
-   pointer is NULL. */
-
-struct memberlist {
-    /* Obsolete version, for binary backwards compatibility */
-    char *name;
-    int type;
-    int offset;
-    int flags;
-};
-
-typedef struct PyMemberDef {
-    /* Current version, use this */
-    char *name;
-    int type;
-    Py_ssize_t offset;
-    int flags;
-    char *doc;
-} PyMemberDef;
-
-/* Types */
-#define T_SHORT         0
-#define T_INT           1
-#define T_LONG          2
-#define T_FLOAT         3
-#define T_DOUBLE        4
-#define T_STRING        5
-#define T_OBJECT        6
-/* XXX the ordering here is weird for binary compatibility */
-#define T_CHAR          7       /* 1-character string */
-#define T_BYTE          8       /* 8-bit signed int */
-/* unsigned variants: */
-#define T_UBYTE         9
-#define T_USHORT        10
-#define T_UINT          11
-#define T_ULONG         12
-
-/* Added by Jack: strings contained in the structure */
-#define T_STRING_INPLACE        13
-
-/* Added by Lillo: bools contained in the structure (assumed char) */
-#define T_BOOL          14
-
-#define T_OBJECT_EX     16      /* Like T_OBJECT, but raises AttributeError
-                   when the value is NULL, instead of
-                   converting to None. */
-#ifdef HAVE_LONG_LONG
-#define T_LONGLONG      17
-#define T_ULONGLONG      18
-#endif /* HAVE_LONG_LONG */
-
-#define T_PYSSIZET       19 /* Py_ssize_t */
-
-
-/* Flags */
-#define READONLY        1
-#define RO              READONLY                /* Shorthand */
-#define READ_RESTRICTED 2
-#define PY_WRITE_RESTRICTED 4
-#define RESTRICTED      (READ_RESTRICTED | PY_WRITE_RESTRICTED)
-
-
-/* Obsolete API, for binary backwards compatibility */
-PyAPI_FUNC(PyObject *) PyMember_Get(const char *, struct memberlist *, const char *);
-PyAPI_FUNC(int) PyMember_Set(char *, struct memberlist *, const char *, PyObject *);
-
-/* Current API, use this */
-PyAPI_FUNC(PyObject *) PyMember_GetOne(const char *, struct PyMemberDef *);
-PyAPI_FUNC(int) PyMember_SetOne(char *, struct PyMemberDef *, PyObject *);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_STRUCTMEMBER_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/structseq.h b/AppPkg/Applications/Python/Python-2.7.2/Include/structseq.h
deleted file mode 100644
index 74b1a88..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/structseq.h
+++ /dev/null
@@ -1,41 +0,0 @@
-
-/* Tuple object interface */
-
-#ifndef Py_STRUCTSEQ_H
-#define Py_STRUCTSEQ_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct PyStructSequence_Field {
-	char *name;
-	char *doc;
-} PyStructSequence_Field;
-
-typedef struct PyStructSequence_Desc {
-	char *name;
-	char *doc;
-	struct PyStructSequence_Field *fields;
-	int n_in_sequence;
-} PyStructSequence_Desc;
-
-extern char* PyStructSequence_UnnamedField;
-
-PyAPI_FUNC(void) PyStructSequence_InitType(PyTypeObject *type,
-					   PyStructSequence_Desc *desc);
-
-PyAPI_FUNC(PyObject *) PyStructSequence_New(PyTypeObject* type);
-
-typedef struct {
-	PyObject_VAR_HEAD
-	PyObject *ob_item[1];
-} PyStructSequence;
-
-/* Macro, *only* to be used to fill in brand new objects */
-#define PyStructSequence_SET_ITEM(op, i, v) \
-	(((PyStructSequence *)(op))->ob_item[i] = v)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_STRUCTSEQ_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/symtable.h b/AppPkg/Applications/Python/Python-2.7.2/Include/symtable.h
deleted file mode 100644
index dd3e360..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/symtable.h
+++ /dev/null
@@ -1,98 +0,0 @@
-#ifndef Py_SYMTABLE_H
-#define Py_SYMTABLE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum _block_type { FunctionBlock, ClassBlock, ModuleBlock }
-    _Py_block_ty;
-
-struct _symtable_entry;
-
-struct symtable {
-    const char *st_filename; /* name of file being compiled */
-    struct _symtable_entry *st_cur; /* current symbol table entry */
-    struct _symtable_entry *st_top; /* module entry */
-    PyObject *st_symbols;    /* dictionary of symbol table entries */
-    PyObject *st_stack;      /* stack of namespace info */
-    PyObject *st_global;     /* borrowed ref to MODULE in st_symbols */
-    int st_nblocks;          /* number of blocks */
-    PyObject *st_private;        /* name of current class or NULL */
-    PyFutureFeatures *st_future; /* module's future features */
-};
-
-typedef struct _symtable_entry {
-    PyObject_HEAD
-    PyObject *ste_id;        /* int: key in st_symbols */
-    PyObject *ste_symbols;   /* dict: name to flags */
-    PyObject *ste_name;      /* string: name of block */
-    PyObject *ste_varnames;  /* list of variable names */
-    PyObject *ste_children;  /* list of child ids */
-    _Py_block_ty ste_type;   /* module, class, or function */
-    int ste_unoptimized;     /* false if namespace is optimized */
-    int ste_nested;      /* true if block is nested */
-    unsigned ste_free : 1;        /* true if block has free variables */
-    unsigned ste_child_free : 1;  /* true if a child block has free vars,
-                                     including free refs to globals */
-    unsigned ste_generator : 1;   /* true if namespace is a generator */
-    unsigned ste_varargs : 1;     /* true if block has varargs */
-    unsigned ste_varkeywords : 1; /* true if block has varkeywords */
-    unsigned ste_returns_value : 1;  /* true if namespace uses return with
-                                        an argument */
-    int ste_lineno;          /* first line of block */
-    int ste_opt_lineno;      /* lineno of last exec or import * */
-    int ste_tmpname;         /* counter for listcomp temp vars */
-    struct symtable *ste_table;
-} PySTEntryObject;
-
-PyAPI_DATA(PyTypeObject) PySTEntry_Type;
-
-#define PySTEntry_Check(op) (Py_TYPE(op) == &PySTEntry_Type)
-
-PyAPI_FUNC(int) PyST_GetScope(PySTEntryObject *, PyObject *);
-
-PyAPI_FUNC(struct symtable *) PySymtable_Build(mod_ty, const char *,
-                                              PyFutureFeatures *);
-PyAPI_FUNC(PySTEntryObject *) PySymtable_Lookup(struct symtable *, void *);
-
-PyAPI_FUNC(void) PySymtable_Free(struct symtable *);
-
-/* Flags for def-use information */
-
-#define DEF_GLOBAL 1           /* global stmt */
-#define DEF_LOCAL 2            /* assignment in code block */
-#define DEF_PARAM 2<<1         /* formal parameter */
-#define USE 2<<2               /* name is used */
-#define DEF_FREE 2<<3         /* name used but not defined in nested block */
-#define DEF_FREE_CLASS 2<<4    /* free variable from class's method */
-#define DEF_IMPORT 2<<5        /* assignment occurred via import */
-
-#define DEF_BOUND (DEF_LOCAL | DEF_PARAM | DEF_IMPORT)
-
-/* GLOBAL_EXPLICIT and GLOBAL_IMPLICIT are used internally by the symbol
-   table.  GLOBAL is returned from PyST_GetScope() for either of them.
-   It is stored in ste_symbols at bits 12-14.
-*/
-#define SCOPE_OFF 11
-#define SCOPE_MASK 7
-
-#define LOCAL 1
-#define GLOBAL_EXPLICIT 2
-#define GLOBAL_IMPLICIT 3
-#define FREE 4
-#define CELL 5
-
-/* The following three names are used for the ste_unoptimized bit field */
-#define OPT_IMPORT_STAR 1
-#define OPT_EXEC 2
-#define OPT_BARE_EXEC 4
-#define OPT_TOPLEVEL 8  /* top-level names, including eval and exec */
-
-#define GENERATOR 1
-#define GENERATOR_EXPRESSION 2
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_SYMTABLE_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/sysmodule.h b/AppPkg/Applications/Python/Python-2.7.2/Include/sysmodule.h
deleted file mode 100644
index 623d840..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/sysmodule.h
+++ /dev/null
@@ -1,32 +0,0 @@
-
-/* System module interface */
-
-#ifndef Py_SYSMODULE_H
-#define Py_SYSMODULE_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(PyObject *) PySys_GetObject(char *);
-PyAPI_FUNC(int) PySys_SetObject(char *, PyObject *);
-PyAPI_FUNC(FILE *) PySys_GetFile(char *, FILE *);
-PyAPI_FUNC(void) PySys_SetArgv(int, char **);
-PyAPI_FUNC(void) PySys_SetArgvEx(int, char **, int);
-PyAPI_FUNC(void) PySys_SetPath(char *);
-
-PyAPI_FUNC(void) PySys_WriteStdout(const char *format, ...)
-			Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
-PyAPI_FUNC(void) PySys_WriteStderr(const char *format, ...)
-			Py_GCC_ATTRIBUTE((format(printf, 1, 2)));
-
-PyAPI_DATA(PyObject *) _PySys_TraceFunc, *_PySys_ProfileFunc;
-PyAPI_DATA(int) _PySys_CheckInterval;
-
-PyAPI_FUNC(void) PySys_ResetWarnOptions(void);
-PyAPI_FUNC(void) PySys_AddWarnOption(char *);
-PyAPI_FUNC(int) PySys_HasWarnOptions(void);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_SYSMODULE_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/timefuncs.h b/AppPkg/Applications/Python/Python-2.7.2/Include/timefuncs.h
deleted file mode 100644
index e6d4b4c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/timefuncs.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*  timefuncs.h
- */
-
-/* Utility function related to timemodule.c. */
-
-#ifndef TIMEFUNCS_H
-#define TIMEFUNCS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Cast double x to time_t, but raise ValueError if x is too large
- * to fit in a time_t.  ValueError is set on return iff the return
- * value is (time_t)-1 and PyErr_Occurred().
- */
-PyAPI_FUNC(time_t) _PyTime_DoubleToTimet(double x);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif  /* TIMEFUNCS_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/token.h b/AppPkg/Applications/Python/Python-2.7.2/Include/token.h
deleted file mode 100644
index 438f04b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/token.h
+++ /dev/null
@@ -1,85 +0,0 @@
-
-/* Token types */
-
-#ifndef Py_TOKEN_H
-#define Py_TOKEN_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#undef TILDE   /* Prevent clash of our definition with system macro. Ex AIX, ioctl.h */
-
-#define ENDMARKER	0
-#define NAME		1
-#define NUMBER		2
-#define STRING		3
-#define NEWLINE		4
-#define INDENT		5
-#define DEDENT		6
-#define LPAR		7
-#define RPAR		8
-#define LSQB		9
-#define RSQB		10
-#define COLON		11
-#define COMMA		12
-#define SEMI		13
-#define PLUS		14
-#define MINUS		15
-#define STAR		16
-#define SLASH		17
-#define VBAR		18
-#define AMPER		19
-#define LESS		20
-#define GREATER		21
-#define EQUAL		22
-#define DOT		23
-#define PERCENT		24
-#define BACKQUOTE	25
-#define LBRACE		26
-#define RBRACE		27
-#define EQEQUAL		28
-#define NOTEQUAL	29
-#define LESSEQUAL	30
-#define GREATEREQUAL	31
-#define TILDE		32
-#define CIRCUMFLEX	33
-#define LEFTSHIFT	34
-#define RIGHTSHIFT	35
-#define DOUBLESTAR	36
-#define PLUSEQUAL	37
-#define MINEQUAL	38
-#define STAREQUAL	39
-#define SLASHEQUAL	40
-#define PERCENTEQUAL	41
-#define AMPEREQUAL	42
-#define VBAREQUAL	43
-#define CIRCUMFLEXEQUAL	44
-#define LEFTSHIFTEQUAL	45
-#define RIGHTSHIFTEQUAL	46
-#define DOUBLESTAREQUAL	47
-#define DOUBLESLASH	48
-#define DOUBLESLASHEQUAL 49
-#define AT              50	
-/* Don't forget to update the table _PyParser_TokenNames in tokenizer.c! */
-#define OP		51
-#define ERRORTOKEN	52
-#define N_TOKENS	53
-
-/* Special definitions for cooperation with parser */
-
-#define NT_OFFSET		256
-
-#define ISTERMINAL(x)		((x) < NT_OFFSET)
-#define ISNONTERMINAL(x)	((x) >= NT_OFFSET)
-#define ISEOF(x)		((x) == ENDMARKER)
-
-
-PyAPI_DATA(char *) _PyParser_TokenNames[]; /* Token names */
-PyAPI_FUNC(int) PyToken_OneChar(int);
-PyAPI_FUNC(int) PyToken_TwoChars(int, int);
-PyAPI_FUNC(int) PyToken_ThreeChars(int, int, int);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_TOKEN_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/traceback.h b/AppPkg/Applications/Python/Python-2.7.2/Include/traceback.h
deleted file mode 100644
index fce0607..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/traceback.h
+++ /dev/null
@@ -1,31 +0,0 @@
-
-#ifndef Py_TRACEBACK_H
-#define Py_TRACEBACK_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct _frame;
-
-/* Traceback interface */
-
-typedef struct _traceback {
-	PyObject_HEAD
-	struct _traceback *tb_next;
-	struct _frame *tb_frame;
-	int tb_lasti;
-	int tb_lineno;
-} PyTracebackObject;
-
-PyAPI_FUNC(int) PyTraceBack_Here(struct _frame *);
-PyAPI_FUNC(int) PyTraceBack_Print(PyObject *, PyObject *);
-PyAPI_FUNC(int) _Py_DisplaySourceLine(PyObject *, const char *, int, int);
-
-/* Reveal traceback type so we can typecheck traceback objects */
-PyAPI_DATA(PyTypeObject) PyTraceBack_Type;
-#define PyTraceBack_Check(v) (Py_TYPE(v) == &PyTraceBack_Type)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_TRACEBACK_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/tupleobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/tupleobject.h
deleted file mode 100644
index 8fdfd59..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/tupleobject.h
+++ /dev/null
@@ -1,61 +0,0 @@
-
-/* Tuple object interface */
-
-#ifndef Py_TUPLEOBJECT_H
-#define Py_TUPLEOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-Another generally useful object type is a tuple of object pointers.
-For Python, this is an immutable type.  C code can change the tuple items
-(but not their number), and even use tuples are general-purpose arrays of
-object references, but in general only brand new tuples should be mutated,
-not ones that might already have been exposed to Python code.
-
-*** WARNING *** PyTuple_SetItem does not increment the new item's reference
-count, but does decrement the reference count of the item it replaces,
-if not nil.  It does *decrement* the reference count if it is *not*
-inserted in the tuple.  Similarly, PyTuple_GetItem does not increment the
-returned item's reference count.
-*/
-
-typedef struct {
-    PyObject_VAR_HEAD
-    PyObject *ob_item[1];
-
-    /* ob_item contains space for 'ob_size' elements.
-     * Items must normally not be NULL, except during construction when
-     * the tuple is not yet visible outside the function that builds it.
-     */
-} PyTupleObject;
-
-PyAPI_DATA(PyTypeObject) PyTuple_Type;
-
-#define PyTuple_Check(op) \
-                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_TUPLE_SUBCLASS)
-#define PyTuple_CheckExact(op) (Py_TYPE(op) == &PyTuple_Type)
-
-PyAPI_FUNC(PyObject *) PyTuple_New(Py_ssize_t size);
-PyAPI_FUNC(Py_ssize_t) PyTuple_Size(PyObject *);
-PyAPI_FUNC(PyObject *) PyTuple_GetItem(PyObject *, Py_ssize_t);
-PyAPI_FUNC(int) PyTuple_SetItem(PyObject *, Py_ssize_t, PyObject *);
-PyAPI_FUNC(PyObject *) PyTuple_GetSlice(PyObject *, Py_ssize_t, Py_ssize_t);
-PyAPI_FUNC(int) _PyTuple_Resize(PyObject **, Py_ssize_t);
-PyAPI_FUNC(PyObject *) PyTuple_Pack(Py_ssize_t, ...);
-PyAPI_FUNC(void) _PyTuple_MaybeUntrack(PyObject *);
-
-/* Macro, trading safety for speed */
-#define PyTuple_GET_ITEM(op, i) (((PyTupleObject *)(op))->ob_item[i])
-#define PyTuple_GET_SIZE(op)    Py_SIZE(op)
-
-/* Macro, *only* to be used to fill in brand new tuples */
-#define PyTuple_SET_ITEM(op, i, v) (((PyTupleObject *)(op))->ob_item[i] = v)
-
-PyAPI_FUNC(int) PyTuple_ClearFreeList(void);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_TUPLEOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/ucnhash.h b/AppPkg/Applications/Python/Python-2.7.2/Include/ucnhash.h
deleted file mode 100644
index 8158730..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/ucnhash.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Unicode name database interface */
-
-#ifndef Py_UCNHASH_H
-#define Py_UCNHASH_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* revised ucnhash CAPI interface (exported through a "wrapper") */
-
-#define PyUnicodeData_CAPSULE_NAME "unicodedata.ucnhash_CAPI"
-
-typedef struct {
-
-    /* Size of this struct */
-    int size;
-
-    /* Get name for a given character code.  Returns non-zero if
-       success, zero if not.  Does not set Python exceptions. 
-       If self is NULL, data come from the default version of the database.
-       If it is not NULL, it should be a unicodedata.ucd_X_Y_Z object */
-    int (*getname)(PyObject *self, Py_UCS4 code, char* buffer, int buflen);
-
-    /* Get character code for a given name.  Same error handling
-       as for getname. */
-    int (*getcode)(PyObject *self, const char* name, int namelen, Py_UCS4* code);
-
-} _PyUnicode_Name_CAPI;
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_UCNHASH_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/unicodeobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/unicodeobject.h
deleted file mode 100644
index de52416..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/unicodeobject.h
+++ /dev/null
@@ -1,1413 +0,0 @@
-#ifndef Py_UNICODEOBJECT_H
-#define Py_UNICODEOBJECT_H
-
-#include <stdarg.h>
-
-/*
-
-Unicode implementation based on original code by Fredrik Lundh,
-modified by Marc-Andre Lemburg (mal@lemburg.com) according to the
-Unicode Integration Proposal (see file Misc/unicode.txt).
-
-Copyright (c) Corporation for National Research Initiatives.
-
-
- Original header:
- --------------------------------------------------------------------
-
- * Yet another Unicode string type for Python.  This type supports the
- * 16-bit Basic Multilingual Plane (BMP) only.
- *
- * Written by Fredrik Lundh, January 1999.
- *
- * Copyright (c) 1999 by Secret Labs AB.
- * Copyright (c) 1999 by Fredrik Lundh.
- *
- * fredrik@pythonware.com
- * http://www.pythonware.com
- *
- * --------------------------------------------------------------------
- * This Unicode String Type is
- *
- * Copyright (c) 1999 by Secret Labs AB
- * Copyright (c) 1999 by Fredrik Lundh
- *
- * By obtaining, using, and/or copying this software and/or its
- * associated documentation, you agree that you have read, understood,
- * and will comply with the following terms and conditions:
- *
- * Permission to use, copy, modify, and distribute this software and its
- * associated documentation for any purpose and without fee is hereby
- * granted, provided that the above copyright notice appears in all
- * copies, and that both that copyright notice and this permission notice
- * appear in supporting documentation, and that the name of Secret Labs
- * AB or the author not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission.
- *
- * SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
- * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- * -------------------------------------------------------------------- */
-
-#include <ctype.h>
-
-/* === Internal API ======================================================= */
-
-/* --- Internal Unicode Format -------------------------------------------- */
-
-#ifndef Py_USING_UNICODE
-
-#define PyUnicode_Check(op)                 0
-#define PyUnicode_CheckExact(op)            0
-
-#else
-
-/* FIXME: MvL's new implementation assumes that Py_UNICODE_SIZE is
-   properly set, but the default rules below doesn't set it.  I'll
-   sort this out some other day -- fredrik@pythonware.com */
-
-#ifndef Py_UNICODE_SIZE
-#error Must define Py_UNICODE_SIZE
-#endif
-
-/* Setting Py_UNICODE_WIDE enables UCS-4 storage.  Otherwise, Unicode
-   strings are stored as UCS-2 (with limited support for UTF-16) */
-
-#if Py_UNICODE_SIZE >= 4
-#define Py_UNICODE_WIDE
-#endif
-
-/* Set these flags if the platform has "wchar.h", "wctype.h" and the
-   wchar_t type is a 16-bit unsigned type */
-/* #define HAVE_WCHAR_H */
-/* #define HAVE_USABLE_WCHAR_T */
-
-/* Defaults for various platforms */
-#ifndef PY_UNICODE_TYPE
-
-/* Windows has a usable wchar_t type (unless we're using UCS-4) */
-# if defined(MS_WIN32) && Py_UNICODE_SIZE == 2
-#  define HAVE_USABLE_WCHAR_T
-#  define PY_UNICODE_TYPE wchar_t
-# endif
-
-# if defined(Py_UNICODE_WIDE)
-#  define PY_UNICODE_TYPE Py_UCS4
-# endif
-
-#endif
-
-/* If the compiler provides a wchar_t type we try to support it
-   through the interface functions PyUnicode_FromWideChar() and
-   PyUnicode_AsWideChar(). */
-
-#ifdef HAVE_USABLE_WCHAR_T
-# ifndef HAVE_WCHAR_H
-#  define HAVE_WCHAR_H
-# endif
-#endif
-
-#ifdef HAVE_WCHAR_H
-/* Work around a cosmetic bug in BSDI 4.x wchar.h; thanks to Thomas Wouters */
-# ifdef _HAVE_BSDI
-#  include <time.h>
-# endif
-#  include <wchar.h>
-#endif
-
-/*
- * Use this typedef when you need to represent a UTF-16 surrogate pair
- * as single unsigned integer.
- */
-#if SIZEOF_INT >= 4
-typedef unsigned int Py_UCS4;
-#elif SIZEOF_LONG >= 4
-typedef unsigned long Py_UCS4;
-#endif
-
-/* Py_UNICODE is the native Unicode storage format (code unit) used by
-   Python and represents a single Unicode element in the Unicode
-   type. */
-
-typedef PY_UNICODE_TYPE Py_UNICODE;
-
-/* --- UCS-2/UCS-4 Name Mangling ------------------------------------------ */
-
-/* Unicode API names are mangled to assure that UCS-2 and UCS-4 builds
-   produce different external names and thus cause import errors in
-   case Python interpreters and extensions with mixed compiled in
-   Unicode width assumptions are combined. */
-
-#ifndef Py_UNICODE_WIDE
-
-# define PyUnicode_AsASCIIString PyUnicodeUCS2_AsASCIIString
-# define PyUnicode_AsCharmapString PyUnicodeUCS2_AsCharmapString
-# define PyUnicode_AsEncodedObject PyUnicodeUCS2_AsEncodedObject
-# define PyUnicode_AsEncodedString PyUnicodeUCS2_AsEncodedString
-# define PyUnicode_AsLatin1String PyUnicodeUCS2_AsLatin1String
-# define PyUnicode_AsRawUnicodeEscapeString PyUnicodeUCS2_AsRawUnicodeEscapeString
-# define PyUnicode_AsUTF32String PyUnicodeUCS2_AsUTF32String
-# define PyUnicode_AsUTF16String PyUnicodeUCS2_AsUTF16String
-# define PyUnicode_AsUTF8String PyUnicodeUCS2_AsUTF8String
-# define PyUnicode_AsUnicode PyUnicodeUCS2_AsUnicode
-# define PyUnicode_AsUnicodeEscapeString PyUnicodeUCS2_AsUnicodeEscapeString
-# define PyUnicode_AsWideChar PyUnicodeUCS2_AsWideChar
-# define PyUnicode_ClearFreeList PyUnicodeUCS2_ClearFreelist
-# define PyUnicode_Compare PyUnicodeUCS2_Compare
-# define PyUnicode_Concat PyUnicodeUCS2_Concat
-# define PyUnicode_Contains PyUnicodeUCS2_Contains
-# define PyUnicode_Count PyUnicodeUCS2_Count
-# define PyUnicode_Decode PyUnicodeUCS2_Decode
-# define PyUnicode_DecodeASCII PyUnicodeUCS2_DecodeASCII
-# define PyUnicode_DecodeCharmap PyUnicodeUCS2_DecodeCharmap
-# define PyUnicode_DecodeLatin1 PyUnicodeUCS2_DecodeLatin1
-# define PyUnicode_DecodeRawUnicodeEscape PyUnicodeUCS2_DecodeRawUnicodeEscape
-# define PyUnicode_DecodeUTF32 PyUnicodeUCS2_DecodeUTF32
-# define PyUnicode_DecodeUTF32Stateful PyUnicodeUCS2_DecodeUTF32Stateful
-# define PyUnicode_DecodeUTF16 PyUnicodeUCS2_DecodeUTF16
-# define PyUnicode_DecodeUTF16Stateful PyUnicodeUCS2_DecodeUTF16Stateful
-# define PyUnicode_DecodeUTF8 PyUnicodeUCS2_DecodeUTF8
-# define PyUnicode_DecodeUTF8Stateful PyUnicodeUCS2_DecodeUTF8Stateful
-# define PyUnicode_DecodeUnicodeEscape PyUnicodeUCS2_DecodeUnicodeEscape
-# define PyUnicode_Encode PyUnicodeUCS2_Encode
-# define PyUnicode_EncodeASCII PyUnicodeUCS2_EncodeASCII
-# define PyUnicode_EncodeCharmap PyUnicodeUCS2_EncodeCharmap
-# define PyUnicode_EncodeDecimal PyUnicodeUCS2_EncodeDecimal
-# define PyUnicode_EncodeLatin1 PyUnicodeUCS2_EncodeLatin1
-# define PyUnicode_EncodeRawUnicodeEscape PyUnicodeUCS2_EncodeRawUnicodeEscape
-# define PyUnicode_EncodeUTF32 PyUnicodeUCS2_EncodeUTF32
-# define PyUnicode_EncodeUTF16 PyUnicodeUCS2_EncodeUTF16
-# define PyUnicode_EncodeUTF8 PyUnicodeUCS2_EncodeUTF8
-# define PyUnicode_EncodeUnicodeEscape PyUnicodeUCS2_EncodeUnicodeEscape
-# define PyUnicode_Find PyUnicodeUCS2_Find
-# define PyUnicode_Format PyUnicodeUCS2_Format
-# define PyUnicode_FromEncodedObject PyUnicodeUCS2_FromEncodedObject
-# define PyUnicode_FromFormat PyUnicodeUCS2_FromFormat
-# define PyUnicode_FromFormatV PyUnicodeUCS2_FromFormatV
-# define PyUnicode_FromObject PyUnicodeUCS2_FromObject
-# define PyUnicode_FromOrdinal PyUnicodeUCS2_FromOrdinal
-# define PyUnicode_FromString PyUnicodeUCS2_FromString
-# define PyUnicode_FromStringAndSize PyUnicodeUCS2_FromStringAndSize
-# define PyUnicode_FromUnicode PyUnicodeUCS2_FromUnicode
-# define PyUnicode_FromWideChar PyUnicodeUCS2_FromWideChar
-# define PyUnicode_GetDefaultEncoding PyUnicodeUCS2_GetDefaultEncoding
-# define PyUnicode_GetMax PyUnicodeUCS2_GetMax
-# define PyUnicode_GetSize PyUnicodeUCS2_GetSize
-# define PyUnicode_Join PyUnicodeUCS2_Join
-# define PyUnicode_Partition PyUnicodeUCS2_Partition
-# define PyUnicode_RPartition PyUnicodeUCS2_RPartition
-# define PyUnicode_RSplit PyUnicodeUCS2_RSplit
-# define PyUnicode_Replace PyUnicodeUCS2_Replace
-# define PyUnicode_Resize PyUnicodeUCS2_Resize
-# define PyUnicode_RichCompare PyUnicodeUCS2_RichCompare
-# define PyUnicode_SetDefaultEncoding PyUnicodeUCS2_SetDefaultEncoding
-# define PyUnicode_Split PyUnicodeUCS2_Split
-# define PyUnicode_Splitlines PyUnicodeUCS2_Splitlines
-# define PyUnicode_Tailmatch PyUnicodeUCS2_Tailmatch
-# define PyUnicode_Translate PyUnicodeUCS2_Translate
-# define PyUnicode_TranslateCharmap PyUnicodeUCS2_TranslateCharmap
-# define _PyUnicode_AsDefaultEncodedString _PyUnicodeUCS2_AsDefaultEncodedString
-# define _PyUnicode_Fini _PyUnicodeUCS2_Fini
-# define _PyUnicode_Init _PyUnicodeUCS2_Init
-# define _PyUnicode_IsAlpha _PyUnicodeUCS2_IsAlpha
-# define _PyUnicode_IsDecimalDigit _PyUnicodeUCS2_IsDecimalDigit
-# define _PyUnicode_IsDigit _PyUnicodeUCS2_IsDigit
-# define _PyUnicode_IsLinebreak _PyUnicodeUCS2_IsLinebreak
-# define _PyUnicode_IsLowercase _PyUnicodeUCS2_IsLowercase
-# define _PyUnicode_IsNumeric _PyUnicodeUCS2_IsNumeric
-# define _PyUnicode_IsTitlecase _PyUnicodeUCS2_IsTitlecase
-# define _PyUnicode_IsUppercase _PyUnicodeUCS2_IsUppercase
-# define _PyUnicode_IsWhitespace _PyUnicodeUCS2_IsWhitespace
-# define _PyUnicode_ToDecimalDigit _PyUnicodeUCS2_ToDecimalDigit
-# define _PyUnicode_ToDigit _PyUnicodeUCS2_ToDigit
-# define _PyUnicode_ToLowercase _PyUnicodeUCS2_ToLowercase
-# define _PyUnicode_ToNumeric _PyUnicodeUCS2_ToNumeric
-# define _PyUnicode_ToTitlecase _PyUnicodeUCS2_ToTitlecase
-# define _PyUnicode_ToUppercase _PyUnicodeUCS2_ToUppercase
-
-#else
-
-# define PyUnicode_AsASCIIString PyUnicodeUCS4_AsASCIIString
-# define PyUnicode_AsCharmapString PyUnicodeUCS4_AsCharmapString
-# define PyUnicode_AsEncodedObject PyUnicodeUCS4_AsEncodedObject
-# define PyUnicode_AsEncodedString PyUnicodeUCS4_AsEncodedString
-# define PyUnicode_AsLatin1String PyUnicodeUCS4_AsLatin1String
-# define PyUnicode_AsRawUnicodeEscapeString PyUnicodeUCS4_AsRawUnicodeEscapeString
-# define PyUnicode_AsUTF32String PyUnicodeUCS4_AsUTF32String
-# define PyUnicode_AsUTF16String PyUnicodeUCS4_AsUTF16String
-# define PyUnicode_AsUTF8String PyUnicodeUCS4_AsUTF8String
-# define PyUnicode_AsUnicode PyUnicodeUCS4_AsUnicode
-# define PyUnicode_AsUnicodeEscapeString PyUnicodeUCS4_AsUnicodeEscapeString
-# define PyUnicode_AsWideChar PyUnicodeUCS4_AsWideChar
-# define PyUnicode_ClearFreeList PyUnicodeUCS4_ClearFreelist
-# define PyUnicode_Compare PyUnicodeUCS4_Compare
-# define PyUnicode_Concat PyUnicodeUCS4_Concat
-# define PyUnicode_Contains PyUnicodeUCS4_Contains
-# define PyUnicode_Count PyUnicodeUCS4_Count
-# define PyUnicode_Decode PyUnicodeUCS4_Decode
-# define PyUnicode_DecodeASCII PyUnicodeUCS4_DecodeASCII
-# define PyUnicode_DecodeCharmap PyUnicodeUCS4_DecodeCharmap
-# define PyUnicode_DecodeLatin1 PyUnicodeUCS4_DecodeLatin1
-# define PyUnicode_DecodeRawUnicodeEscape PyUnicodeUCS4_DecodeRawUnicodeEscape
-# define PyUnicode_DecodeUTF32 PyUnicodeUCS4_DecodeUTF32
-# define PyUnicode_DecodeUTF32Stateful PyUnicodeUCS4_DecodeUTF32Stateful
-# define PyUnicode_DecodeUTF16 PyUnicodeUCS4_DecodeUTF16
-# define PyUnicode_DecodeUTF16Stateful PyUnicodeUCS4_DecodeUTF16Stateful
-# define PyUnicode_DecodeUTF8 PyUnicodeUCS4_DecodeUTF8
-# define PyUnicode_DecodeUTF8Stateful PyUnicodeUCS4_DecodeUTF8Stateful
-# define PyUnicode_DecodeUnicodeEscape PyUnicodeUCS4_DecodeUnicodeEscape
-# define PyUnicode_Encode PyUnicodeUCS4_Encode
-# define PyUnicode_EncodeASCII PyUnicodeUCS4_EncodeASCII
-# define PyUnicode_EncodeCharmap PyUnicodeUCS4_EncodeCharmap
-# define PyUnicode_EncodeDecimal PyUnicodeUCS4_EncodeDecimal
-# define PyUnicode_EncodeLatin1 PyUnicodeUCS4_EncodeLatin1
-# define PyUnicode_EncodeRawUnicodeEscape PyUnicodeUCS4_EncodeRawUnicodeEscape
-# define PyUnicode_EncodeUTF32 PyUnicodeUCS4_EncodeUTF32
-# define PyUnicode_EncodeUTF16 PyUnicodeUCS4_EncodeUTF16
-# define PyUnicode_EncodeUTF8 PyUnicodeUCS4_EncodeUTF8
-# define PyUnicode_EncodeUnicodeEscape PyUnicodeUCS4_EncodeUnicodeEscape
-# define PyUnicode_Find PyUnicodeUCS4_Find
-# define PyUnicode_Format PyUnicodeUCS4_Format
-# define PyUnicode_FromEncodedObject PyUnicodeUCS4_FromEncodedObject
-# define PyUnicode_FromFormat PyUnicodeUCS4_FromFormat
-# define PyUnicode_FromFormatV PyUnicodeUCS4_FromFormatV
-# define PyUnicode_FromObject PyUnicodeUCS4_FromObject
-# define PyUnicode_FromOrdinal PyUnicodeUCS4_FromOrdinal
-# define PyUnicode_FromString PyUnicodeUCS4_FromString
-# define PyUnicode_FromStringAndSize PyUnicodeUCS4_FromStringAndSize
-# define PyUnicode_FromUnicode PyUnicodeUCS4_FromUnicode
-# define PyUnicode_FromWideChar PyUnicodeUCS4_FromWideChar
-# define PyUnicode_GetDefaultEncoding PyUnicodeUCS4_GetDefaultEncoding
-# define PyUnicode_GetMax PyUnicodeUCS4_GetMax
-# define PyUnicode_GetSize PyUnicodeUCS4_GetSize
-# define PyUnicode_Join PyUnicodeUCS4_Join
-# define PyUnicode_Partition PyUnicodeUCS4_Partition
-# define PyUnicode_RPartition PyUnicodeUCS4_RPartition
-# define PyUnicode_RSplit PyUnicodeUCS4_RSplit
-# define PyUnicode_Replace PyUnicodeUCS4_Replace
-# define PyUnicode_Resize PyUnicodeUCS4_Resize
-# define PyUnicode_RichCompare PyUnicodeUCS4_RichCompare
-# define PyUnicode_SetDefaultEncoding PyUnicodeUCS4_SetDefaultEncoding
-# define PyUnicode_Split PyUnicodeUCS4_Split
-# define PyUnicode_Splitlines PyUnicodeUCS4_Splitlines
-# define PyUnicode_Tailmatch PyUnicodeUCS4_Tailmatch
-# define PyUnicode_Translate PyUnicodeUCS4_Translate
-# define PyUnicode_TranslateCharmap PyUnicodeUCS4_TranslateCharmap
-# define _PyUnicode_AsDefaultEncodedString _PyUnicodeUCS4_AsDefaultEncodedString
-# define _PyUnicode_Fini _PyUnicodeUCS4_Fini
-# define _PyUnicode_Init _PyUnicodeUCS4_Init
-# define _PyUnicode_IsAlpha _PyUnicodeUCS4_IsAlpha
-# define _PyUnicode_IsDecimalDigit _PyUnicodeUCS4_IsDecimalDigit
-# define _PyUnicode_IsDigit _PyUnicodeUCS4_IsDigit
-# define _PyUnicode_IsLinebreak _PyUnicodeUCS4_IsLinebreak
-# define _PyUnicode_IsLowercase _PyUnicodeUCS4_IsLowercase
-# define _PyUnicode_IsNumeric _PyUnicodeUCS4_IsNumeric
-# define _PyUnicode_IsTitlecase _PyUnicodeUCS4_IsTitlecase
-# define _PyUnicode_IsUppercase _PyUnicodeUCS4_IsUppercase
-# define _PyUnicode_IsWhitespace _PyUnicodeUCS4_IsWhitespace
-# define _PyUnicode_ToDecimalDigit _PyUnicodeUCS4_ToDecimalDigit
-# define _PyUnicode_ToDigit _PyUnicodeUCS4_ToDigit
-# define _PyUnicode_ToLowercase _PyUnicodeUCS4_ToLowercase
-# define _PyUnicode_ToNumeric _PyUnicodeUCS4_ToNumeric
-# define _PyUnicode_ToTitlecase _PyUnicodeUCS4_ToTitlecase
-# define _PyUnicode_ToUppercase _PyUnicodeUCS4_ToUppercase
-
-
-#endif
-
-/* --- Internal Unicode Operations ---------------------------------------- */
-
-/* If you want Python to use the compiler's wctype.h functions instead
-   of the ones supplied with Python, define WANT_WCTYPE_FUNCTIONS or
-   configure Python using --with-wctype-functions.  This reduces the
-   interpreter's code size. */
-
-#if defined(HAVE_USABLE_WCHAR_T) && defined(WANT_WCTYPE_FUNCTIONS)
-
-#include <wctype.h>
-
-#define Py_UNICODE_ISSPACE(ch) iswspace(ch)
-
-#define Py_UNICODE_ISLOWER(ch) iswlower(ch)
-#define Py_UNICODE_ISUPPER(ch) iswupper(ch)
-#define Py_UNICODE_ISTITLE(ch) _PyUnicode_IsTitlecase(ch)
-#define Py_UNICODE_ISLINEBREAK(ch) _PyUnicode_IsLinebreak(ch)
-
-#define Py_UNICODE_TOLOWER(ch) towlower(ch)
-#define Py_UNICODE_TOUPPER(ch) towupper(ch)
-#define Py_UNICODE_TOTITLE(ch) _PyUnicode_ToTitlecase(ch)
-
-#define Py_UNICODE_ISDECIMAL(ch) _PyUnicode_IsDecimalDigit(ch)
-#define Py_UNICODE_ISDIGIT(ch) _PyUnicode_IsDigit(ch)
-#define Py_UNICODE_ISNUMERIC(ch) _PyUnicode_IsNumeric(ch)
-
-#define Py_UNICODE_TODECIMAL(ch) _PyUnicode_ToDecimalDigit(ch)
-#define Py_UNICODE_TODIGIT(ch) _PyUnicode_ToDigit(ch)
-#define Py_UNICODE_TONUMERIC(ch) _PyUnicode_ToNumeric(ch)
-
-#define Py_UNICODE_ISALPHA(ch) iswalpha(ch)
-
-#else
-
-/* Since splitting on whitespace is an important use case, and
-   whitespace in most situations is solely ASCII whitespace, we
-   optimize for the common case by using a quick look-up table
-   _Py_ascii_whitespace (see below) with an inlined check.
-
- */
-#define Py_UNICODE_ISSPACE(ch) \
-    ((ch) < 128U ? _Py_ascii_whitespace[(ch)] : _PyUnicode_IsWhitespace(ch))
-
-#define Py_UNICODE_ISLOWER(ch) _PyUnicode_IsLowercase(ch)
-#define Py_UNICODE_ISUPPER(ch) _PyUnicode_IsUppercase(ch)
-#define Py_UNICODE_ISTITLE(ch) _PyUnicode_IsTitlecase(ch)
-#define Py_UNICODE_ISLINEBREAK(ch) _PyUnicode_IsLinebreak(ch)
-
-#define Py_UNICODE_TOLOWER(ch) _PyUnicode_ToLowercase(ch)
-#define Py_UNICODE_TOUPPER(ch) _PyUnicode_ToUppercase(ch)
-#define Py_UNICODE_TOTITLE(ch) _PyUnicode_ToTitlecase(ch)
-
-#define Py_UNICODE_ISDECIMAL(ch) _PyUnicode_IsDecimalDigit(ch)
-#define Py_UNICODE_ISDIGIT(ch) _PyUnicode_IsDigit(ch)
-#define Py_UNICODE_ISNUMERIC(ch) _PyUnicode_IsNumeric(ch)
-
-#define Py_UNICODE_TODECIMAL(ch) _PyUnicode_ToDecimalDigit(ch)
-#define Py_UNICODE_TODIGIT(ch) _PyUnicode_ToDigit(ch)
-#define Py_UNICODE_TONUMERIC(ch) _PyUnicode_ToNumeric(ch)
-
-#define Py_UNICODE_ISALPHA(ch) _PyUnicode_IsAlpha(ch)
-
-#endif
-
-#define Py_UNICODE_ISALNUM(ch) \
-       (Py_UNICODE_ISALPHA(ch) || \
-    Py_UNICODE_ISDECIMAL(ch) || \
-    Py_UNICODE_ISDIGIT(ch) || \
-    Py_UNICODE_ISNUMERIC(ch))
-
-#define Py_UNICODE_COPY(target, source, length)                         \
-    Py_MEMCPY((target), (source), (length)*sizeof(Py_UNICODE))
-
-#define Py_UNICODE_FILL(target, value, length) \
-    do {Py_ssize_t i_; Py_UNICODE *t_ = (target); Py_UNICODE v_ = (value);\
-    for (i_ = 0; i_ < (length); i_++) t_[i_] = v_;\
-    } while (0)
-
-/* Check if substring matches at given offset.  the offset must be
-   valid, and the substring must not be empty */
-
-#define Py_UNICODE_MATCH(string, offset, substring) \
-    ((*((string)->str + (offset)) == *((substring)->str)) && \
-    ((*((string)->str + (offset) + (substring)->length-1) == *((substring)->str + (substring)->length-1))) && \
-     !memcmp((string)->str + (offset), (substring)->str, (substring)->length*sizeof(Py_UNICODE)))
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* --- Unicode Type ------------------------------------------------------- */
-
-typedef struct {
-    PyObject_HEAD
-    Py_ssize_t length;          /* Length of raw Unicode data in buffer */
-    Py_UNICODE *str;            /* Raw Unicode buffer */
-    long hash;                  /* Hash value; -1 if not set */
-    PyObject *defenc;           /* (Default) Encoded version as Python
-                                   string, or NULL; this is used for
-                                   implementing the buffer protocol */
-} PyUnicodeObject;
-
-PyAPI_DATA(PyTypeObject) PyUnicode_Type;
-
-#define PyUnicode_Check(op) \
-                 PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_UNICODE_SUBCLASS)
-#define PyUnicode_CheckExact(op) (Py_TYPE(op) == &PyUnicode_Type)
-
-/* Fast access macros */
-#define PyUnicode_GET_SIZE(op) \
-    (((PyUnicodeObject *)(op))->length)
-#define PyUnicode_GET_DATA_SIZE(op) \
-    (((PyUnicodeObject *)(op))->length * sizeof(Py_UNICODE))
-#define PyUnicode_AS_UNICODE(op) \
-    (((PyUnicodeObject *)(op))->str)
-#define PyUnicode_AS_DATA(op) \
-    ((const char *)((PyUnicodeObject *)(op))->str)
-
-/* --- Constants ---------------------------------------------------------- */
-
-/* This Unicode character will be used as replacement character during
-   decoding if the errors argument is set to "replace". Note: the
-   Unicode character U+FFFD is the official REPLACEMENT CHARACTER in
-   Unicode 3.0. */
-
-#define Py_UNICODE_REPLACEMENT_CHARACTER ((Py_UNICODE) 0xFFFD)
-
-/* === Public API ========================================================= */
-
-/* --- Plain Py_UNICODE --------------------------------------------------- */
-
-/* Create a Unicode Object from the Py_UNICODE buffer u of the given
-   size.
-
-   u may be NULL which causes the contents to be undefined. It is the
-   user's responsibility to fill in the needed data afterwards. Note
-   that modifying the Unicode object contents after construction is
-   only allowed if u was set to NULL.
-
-   The buffer is copied into the new object. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_FromUnicode(
-    const Py_UNICODE *u,        /* Unicode buffer */
-    Py_ssize_t size             /* size of buffer */
-    );
-
-/* Similar to PyUnicode_FromUnicode(), but u points to Latin-1 encoded bytes */
-PyAPI_FUNC(PyObject*) PyUnicode_FromStringAndSize(
-    const char *u,        /* char buffer */
-    Py_ssize_t size       /* size of buffer */
-    );
-
-/* Similar to PyUnicode_FromUnicode(), but u points to null-terminated
-   Latin-1 encoded bytes */
-PyAPI_FUNC(PyObject*) PyUnicode_FromString(
-    const char *u        /* string */
-    );
-
-/* Return a read-only pointer to the Unicode object's internal
-   Py_UNICODE buffer. */
-
-PyAPI_FUNC(Py_UNICODE *) PyUnicode_AsUnicode(
-    PyObject *unicode           /* Unicode object */
-    );
-
-/* Get the length of the Unicode object. */
-
-PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize(
-    PyObject *unicode           /* Unicode object */
-    );
-
-/* Get the maximum ordinal for a Unicode character. */
-PyAPI_FUNC(Py_UNICODE) PyUnicode_GetMax(void);
-
-/* Resize an already allocated Unicode object to the new size length.
-
-   *unicode is modified to point to the new (resized) object and 0
-   returned on success.
-
-   This API may only be called by the function which also called the
-   Unicode constructor. The refcount on the object must be 1. Otherwise,
-   an error is returned.
-
-   Error handling is implemented as follows: an exception is set, -1
-   is returned and *unicode left untouched.
-
-*/
-
-PyAPI_FUNC(int) PyUnicode_Resize(
-    PyObject **unicode,         /* Pointer to the Unicode object */
-    Py_ssize_t length           /* New length */
-    );
-
-/* Coerce obj to an Unicode object and return a reference with
-   *incremented* refcount.
-
-   Coercion is done in the following way:
-
-   1. String and other char buffer compatible objects are decoded
-      under the assumptions that they contain data using the current
-      default encoding. Decoding is done in "strict" mode.
-
-   2. All other objects (including Unicode objects) raise an
-      exception.
-
-   The API returns NULL in case of an error. The caller is responsible
-   for decref'ing the returned objects.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_FromEncodedObject(
-    register PyObject *obj,     /* Object */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    );
-
-/* Coerce obj to an Unicode object and return a reference with
-   *incremented* refcount.
-
-   Unicode objects are passed back as-is (subclasses are converted to
-   true Unicode objects), all other objects are delegated to
-   PyUnicode_FromEncodedObject(obj, NULL, "strict") which results in
-   using the default encoding as basis for decoding the object.
-
-   The API returns NULL in case of an error. The caller is responsible
-   for decref'ing the returned objects.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_FromObject(
-    register PyObject *obj      /* Object */
-    );
-
-PyAPI_FUNC(PyObject *) PyUnicode_FromFormatV(const char*, va_list);
-PyAPI_FUNC(PyObject *) PyUnicode_FromFormat(const char*, ...);
-
-/* Format the object based on the format_spec, as defined in PEP 3101
-   (Advanced String Formatting). */
-PyAPI_FUNC(PyObject *) _PyUnicode_FormatAdvanced(PyObject *obj,
-                                                 Py_UNICODE *format_spec,
-                                                 Py_ssize_t format_spec_len);
-
-/* --- wchar_t support for platforms which support it --------------------- */
-
-#ifdef HAVE_WCHAR_H
-
-/* Create a Unicode Object from the whcar_t buffer w of the given
-   size.
-
-   The buffer is copied into the new object. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_FromWideChar(
-    register const wchar_t *w,  /* wchar_t buffer */
-    Py_ssize_t size             /* size of buffer */
-    );
-
-/* Copies the Unicode Object contents into the wchar_t buffer w.  At
-   most size wchar_t characters are copied.
-
-   Note that the resulting wchar_t string may or may not be
-   0-terminated.  It is the responsibility of the caller to make sure
-   that the wchar_t string is 0-terminated in case this is required by
-   the application.
-
-   Returns the number of wchar_t characters copied (excluding a
-   possibly trailing 0-termination character) or -1 in case of an
-   error. */
-
-PyAPI_FUNC(Py_ssize_t) PyUnicode_AsWideChar(
-    PyUnicodeObject *unicode,   /* Unicode object */
-    register wchar_t *w,        /* wchar_t buffer */
-    Py_ssize_t size             /* size of buffer */
-    );
-
-#endif
-
-/* --- Unicode ordinals --------------------------------------------------- */
-
-/* Create a Unicode Object from the given Unicode code point ordinal.
-
-   The ordinal must be in range(0x10000) on narrow Python builds
-   (UCS2), and range(0x110000) on wide builds (UCS4). A ValueError is
-   raised in case it is not.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_FromOrdinal(int ordinal);
-
-/* --- Free-list management ----------------------------------------------- */
-
-/* Clear the free list used by the Unicode implementation.
-
-   This can be used to release memory used for objects on the free
-   list back to the Python memory allocator.
-
-*/
-
-PyAPI_FUNC(int) PyUnicode_ClearFreeList(void);
-
-/* === Builtin Codecs =====================================================
-
-   Many of these APIs take two arguments encoding and errors. These
-   parameters encoding and errors have the same semantics as the ones
-   of the builtin unicode() API.
-
-   Setting encoding to NULL causes the default encoding to be used.
-
-   Error handling is set by errors which may also be set to NULL
-   meaning to use the default handling defined for the codec. Default
-   error handling for all builtin codecs is "strict" (ValueErrors are
-   raised).
-
-   The codecs all use a similar interface. Only deviation from the
-   generic ones are documented.
-
-*/
-
-/* --- Manage the default encoding ---------------------------------------- */
-
-/* Return a Python string holding the default encoded value of the
-   Unicode object.
-
-   The resulting string is cached in the Unicode object for subsequent
-   usage by this function. The cached version is needed to implement
-   the character buffer interface and will live (at least) as long as
-   the Unicode object itself.
-
-   The refcount of the string is *not* incremented.
-
-   *** Exported for internal use by the interpreter only !!! ***
-
-*/
-
-PyAPI_FUNC(PyObject *) _PyUnicode_AsDefaultEncodedString(
-    PyObject *, const char *);
-
-/* Returns the currently active default encoding.
-
-   The default encoding is currently implemented as run-time settable
-   process global.  This may change in future versions of the
-   interpreter to become a parameter which is managed on a per-thread
-   basis.
-
- */
-
-PyAPI_FUNC(const char*) PyUnicode_GetDefaultEncoding(void);
-
-/* Sets the currently active default encoding.
-
-   Returns 0 on success, -1 in case of an error.
-
- */
-
-PyAPI_FUNC(int) PyUnicode_SetDefaultEncoding(
-    const char *encoding        /* Encoding name in standard form */
-    );
-
-/* --- Generic Codecs ----------------------------------------------------- */
-
-/* Create a Unicode object by decoding the encoded string s of the
-   given size. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_Decode(
-    const char *s,              /* encoded string */
-    Py_ssize_t size,            /* size of buffer */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    );
-
-/* Encodes a Py_UNICODE buffer of the given size and returns a
-   Python string object. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_Encode(
-    const Py_UNICODE *s,        /* Unicode char buffer */
-    Py_ssize_t size,            /* number of Py_UNICODE chars to encode */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    );
-
-/* Encodes a Unicode object and returns the result as Python
-   object. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedObject(
-    PyObject *unicode,          /* Unicode object */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    );
-
-/* Encodes a Unicode object and returns the result as Python string
-   object. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedString(
-    PyObject *unicode,          /* Unicode object */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_BuildEncodingMap(
-    PyObject* string            /* 256 character map */
-   );
-
-
-/* --- UTF-7 Codecs ------------------------------------------------------- */
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF7(
-    const char *string,         /* UTF-7 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF7Stateful(
-    const char *string,         /* UTF-7 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    Py_ssize_t *consumed        /* bytes consumed */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF7(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,                  /* number of Py_UNICODE chars to encode */
-    int base64SetO,             /* Encode RFC2152 Set O characters in base64 */
-    int base64WhiteSpace,       /* Encode whitespace (sp, ht, nl, cr) in base64 */
-    const char *errors          /* error handling */
-    );
-
-/* --- UTF-8 Codecs ------------------------------------------------------- */
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF8(
-    const char *string,         /* UTF-8 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF8Stateful(
-    const char *string,         /* UTF-8 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    Py_ssize_t *consumed                /* bytes consumed */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsUTF8String(
-    PyObject *unicode           /* Unicode object */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF8(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,                  /* number of Py_UNICODE chars to encode */
-    const char *errors          /* error handling */
-    );
-
-/* --- UTF-32 Codecs ------------------------------------------------------ */
-
-/* Decodes length bytes from a UTF-32 encoded buffer string and returns
-   the corresponding Unicode object.
-
-   errors (if non-NULL) defines the error handling. It defaults
-   to "strict".
-
-   If byteorder is non-NULL, the decoder starts decoding using the
-   given byte order:
-
-    *byteorder == -1: little endian
-    *byteorder == 0:  native order
-    *byteorder == 1:  big endian
-
-   In native mode, the first four bytes of the stream are checked for a
-   BOM mark. If found, the BOM mark is analysed, the byte order
-   adjusted and the BOM skipped.  In the other modes, no BOM mark
-   interpretation is done. After completion, *byteorder is set to the
-   current byte order at the end of input data.
-
-   If byteorder is NULL, the codec starts in native order mode.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF32(
-    const char *string,         /* UTF-32 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    int *byteorder              /* pointer to byteorder to use
-                                   0=native;-1=LE,1=BE; updated on
-                                   exit */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF32Stateful(
-    const char *string,         /* UTF-32 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    int *byteorder,             /* pointer to byteorder to use
-                                   0=native;-1=LE,1=BE; updated on
-                                   exit */
-    Py_ssize_t *consumed        /* bytes consumed */
-    );
-
-/* Returns a Python string using the UTF-32 encoding in native byte
-   order. The string always starts with a BOM mark.  */
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsUTF32String(
-    PyObject *unicode           /* Unicode object */
-    );
-
-/* Returns a Python string object holding the UTF-32 encoded value of
-   the Unicode data.
-
-   If byteorder is not 0, output is written according to the following
-   byte order:
-
-   byteorder == -1: little endian
-   byteorder == 0:  native byte order (writes a BOM mark)
-   byteorder == 1:  big endian
-
-   If byteorder is 0, the output string will always start with the
-   Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark is
-   prepended.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF32(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,          /* number of Py_UNICODE chars to encode */
-    const char *errors,         /* error handling */
-    int byteorder               /* byteorder to use 0=BOM+native;-1=LE,1=BE */
-    );
-
-/* --- UTF-16 Codecs ------------------------------------------------------ */
-
-/* Decodes length bytes from a UTF-16 encoded buffer string and returns
-   the corresponding Unicode object.
-
-   errors (if non-NULL) defines the error handling. It defaults
-   to "strict".
-
-   If byteorder is non-NULL, the decoder starts decoding using the
-   given byte order:
-
-    *byteorder == -1: little endian
-    *byteorder == 0:  native order
-    *byteorder == 1:  big endian
-
-   In native mode, the first two bytes of the stream are checked for a
-   BOM mark. If found, the BOM mark is analysed, the byte order
-   adjusted and the BOM skipped.  In the other modes, no BOM mark
-   interpretation is done. After completion, *byteorder is set to the
-   current byte order at the end of input data.
-
-   If byteorder is NULL, the codec starts in native order mode.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF16(
-    const char *string,         /* UTF-16 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    int *byteorder              /* pointer to byteorder to use
-                                   0=native;-1=LE,1=BE; updated on
-                                   exit */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUTF16Stateful(
-    const char *string,         /* UTF-16 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    int *byteorder,             /* pointer to byteorder to use
-                                   0=native;-1=LE,1=BE; updated on
-                                   exit */
-    Py_ssize_t *consumed                /* bytes consumed */
-    );
-
-/* Returns a Python string using the UTF-16 encoding in native byte
-   order. The string always starts with a BOM mark.  */
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsUTF16String(
-    PyObject *unicode           /* Unicode object */
-    );
-
-/* Returns a Python string object holding the UTF-16 encoded value of
-   the Unicode data.
-
-   If byteorder is not 0, output is written according to the following
-   byte order:
-
-   byteorder == -1: little endian
-   byteorder == 0:  native byte order (writes a BOM mark)
-   byteorder == 1:  big endian
-
-   If byteorder is 0, the output string will always start with the
-   Unicode BOM mark (U+FEFF). In the other two modes, no BOM mark is
-   prepended.
-
-   Note that Py_UNICODE data is being interpreted as UTF-16 reduced to
-   UCS-2. This trick makes it possible to add full UTF-16 capabilities
-   at a later point without compromising the APIs.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,                  /* number of Py_UNICODE chars to encode */
-    const char *errors,         /* error handling */
-    int byteorder               /* byteorder to use 0=BOM+native;-1=LE,1=BE */
-    );
-
-/* --- Unicode-Escape Codecs ---------------------------------------------- */
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeUnicodeEscape(
-    const char *string,         /* Unicode-Escape encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsUnicodeEscapeString(
-    PyObject *unicode           /* Unicode object */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeUnicodeEscape(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length                   /* Number of Py_UNICODE chars to encode */
-    );
-
-/* --- Raw-Unicode-Escape Codecs ------------------------------------------ */
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeRawUnicodeEscape(
-    const char *string,         /* Raw-Unicode-Escape encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsRawUnicodeEscapeString(
-    PyObject *unicode           /* Unicode object */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeRawUnicodeEscape(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length                   /* Number of Py_UNICODE chars to encode */
-    );
-
-/* --- Unicode Internal Codec ---------------------------------------------
-
-    Only for internal use in _codecsmodule.c */
-
-PyObject *_PyUnicode_DecodeUnicodeInternal(
-    const char *string,
-    Py_ssize_t length,
-    const char *errors
-    );
-
-/* --- Latin-1 Codecs -----------------------------------------------------
-
-   Note: Latin-1 corresponds to the first 256 Unicode ordinals.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeLatin1(
-    const char *string,         /* Latin-1 encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsLatin1String(
-    PyObject *unicode           /* Unicode object */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeLatin1(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,                  /* Number of Py_UNICODE chars to encode */
-    const char *errors          /* error handling */
-    );
-
-/* --- ASCII Codecs -------------------------------------------------------
-
-   Only 7-bit ASCII data is excepted. All other codes generate errors.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeASCII(
-    const char *string,         /* ASCII encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsASCIIString(
-    PyObject *unicode           /* Unicode object */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeASCII(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,                  /* Number of Py_UNICODE chars to encode */
-    const char *errors          /* error handling */
-    );
-
-/* --- Character Map Codecs -----------------------------------------------
-
-   This codec uses mappings to encode and decode characters.
-
-   Decoding mappings must map single string characters to single
-   Unicode characters, integers (which are then interpreted as Unicode
-   ordinals) or None (meaning "undefined mapping" and causing an
-   error).
-
-   Encoding mappings must map single Unicode characters to single
-   string characters, integers (which are then interpreted as Latin-1
-   ordinals) or None (meaning "undefined mapping" and causing an
-   error).
-
-   If a character lookup fails with a LookupError, the character is
-   copied as-is meaning that its ordinal value will be interpreted as
-   Unicode or Latin-1 ordinal resp. Because of this mappings only need
-   to contain those mappings which map characters to different code
-   points.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeCharmap(
-    const char *string,         /* Encoded string */
-    Py_ssize_t length,          /* size of string */
-    PyObject *mapping,          /* character mapping
-                                   (char ordinal -> unicode ordinal) */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsCharmapString(
-    PyObject *unicode,          /* Unicode object */
-    PyObject *mapping           /* character mapping
-                                   (unicode ordinal -> char ordinal) */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeCharmap(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,          /* Number of Py_UNICODE chars to encode */
-    PyObject *mapping,          /* character mapping
-                                   (unicode ordinal -> char ordinal) */
-    const char *errors          /* error handling */
-    );
-
-/* Translate a Py_UNICODE buffer of the given length by applying a
-   character mapping table to it and return the resulting Unicode
-   object.
-
-   The mapping table must map Unicode ordinal integers to Unicode
-   ordinal integers or None (causing deletion of the character).
-
-   Mapping tables may be dictionaries or sequences. Unmapped character
-   ordinals (ones which cause a LookupError) are left untouched and
-   are copied as-is.
-
-*/
-
-PyAPI_FUNC(PyObject *) PyUnicode_TranslateCharmap(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,                  /* Number of Py_UNICODE chars to encode */
-    PyObject *table,            /* Translate table */
-    const char *errors          /* error handling */
-    );
-
-#ifdef MS_WIN32
-
-/* --- MBCS codecs for Windows -------------------------------------------- */
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeMBCS(
-    const char *string,         /* MBCS encoded string */
-    Py_ssize_t length,              /* size of string */
-    const char *errors          /* error handling */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_DecodeMBCSStateful(
-    const char *string,         /* MBCS encoded string */
-    Py_ssize_t length,          /* size of string */
-    const char *errors,         /* error handling */
-    Py_ssize_t *consumed        /* bytes consumed */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_AsMBCSString(
-    PyObject *unicode           /* Unicode object */
-    );
-
-PyAPI_FUNC(PyObject*) PyUnicode_EncodeMBCS(
-    const Py_UNICODE *data,     /* Unicode char buffer */
-    Py_ssize_t length,              /* Number of Py_UNICODE chars to encode */
-    const char *errors          /* error handling */
-    );
-
-#endif /* MS_WIN32 */
-
-/* --- Decimal Encoder ---------------------------------------------------- */
-
-/* Takes a Unicode string holding a decimal value and writes it into
-   an output buffer using standard ASCII digit codes.
-
-   The output buffer has to provide at least length+1 bytes of storage
-   area. The output string is 0-terminated.
-
-   The encoder converts whitespace to ' ', decimal characters to their
-   corresponding ASCII digit and all other Latin-1 characters except
-   \0 as-is. Characters outside this range (Unicode ordinals 1-256)
-   are treated as errors. This includes embedded NULL bytes.
-
-   Error handling is defined by the errors argument:
-
-      NULL or "strict": raise a ValueError
-      "ignore": ignore the wrong characters (these are not copied to the
-                output buffer)
-      "replace": replaces illegal characters with '?'
-
-   Returns 0 on success, -1 on failure.
-
-*/
-
-PyAPI_FUNC(int) PyUnicode_EncodeDecimal(
-    Py_UNICODE *s,              /* Unicode buffer */
-    Py_ssize_t length,                  /* Number of Py_UNICODE chars to encode */
-    char *output,               /* Output buffer; must have size >= length */
-    const char *errors          /* error handling */
-    );
-
-/* --- Methods & Slots ----------------------------------------------------
-
-   These are capable of handling Unicode objects and strings on input
-   (we refer to them as strings in the descriptions) and return
-   Unicode objects or integers as apporpriate. */
-
-/* Concat two strings giving a new Unicode string. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_Concat(
-    PyObject *left,             /* Left string */
-    PyObject *right             /* Right string */
-    );
-
-/* Split a string giving a list of Unicode strings.
-
-   If sep is NULL, splitting will be done at all whitespace
-   substrings. Otherwise, splits occur at the given separator.
-
-   At most maxsplit splits will be done. If negative, no limit is set.
-
-   Separators are not included in the resulting list.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_Split(
-    PyObject *s,                /* String to split */
-    PyObject *sep,              /* String separator */
-    Py_ssize_t maxsplit         /* Maxsplit count */
-    );
-
-/* Dito, but split at line breaks.
-
-   CRLF is considered to be one line break. Line breaks are not
-   included in the resulting list. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_Splitlines(
-    PyObject *s,                /* String to split */
-    int keepends                /* If true, line end markers are included */
-    );
-
-/* Partition a string using a given separator. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_Partition(
-    PyObject *s,                /* String to partition */
-    PyObject *sep               /* String separator */
-    );
-
-/* Partition a string using a given separator, searching from the end of the
-   string. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_RPartition(
-    PyObject *s,                /* String to partition */
-    PyObject *sep               /* String separator */
-    );
-
-/* Split a string giving a list of Unicode strings.
-
-   If sep is NULL, splitting will be done at all whitespace
-   substrings. Otherwise, splits occur at the given separator.
-
-   At most maxsplit splits will be done. But unlike PyUnicode_Split
-   PyUnicode_RSplit splits from the end of the string. If negative,
-   no limit is set.
-
-   Separators are not included in the resulting list.
-
-*/
-
-PyAPI_FUNC(PyObject*) PyUnicode_RSplit(
-    PyObject *s,                /* String to split */
-    PyObject *sep,              /* String separator */
-    Py_ssize_t maxsplit         /* Maxsplit count */
-    );
-
-/* Translate a string by applying a character mapping table to it and
-   return the resulting Unicode object.
-
-   The mapping table must map Unicode ordinal integers to Unicode
-   ordinal integers or None (causing deletion of the character).
-
-   Mapping tables may be dictionaries or sequences. Unmapped character
-   ordinals (ones which cause a LookupError) are left untouched and
-   are copied as-is.
-
-*/
-
-PyAPI_FUNC(PyObject *) PyUnicode_Translate(
-    PyObject *str,              /* String */
-    PyObject *table,            /* Translate table */
-    const char *errors          /* error handling */
-    );
-
-/* Join a sequence of strings using the given separator and return
-   the resulting Unicode string. */
-
-PyAPI_FUNC(PyObject*) PyUnicode_Join(
-    PyObject *separator,        /* Separator string */
-    PyObject *seq               /* Sequence object */
-    );
-
-/* Return 1 if substr matches str[start:end] at the given tail end, 0
-   otherwise. */
-
-PyAPI_FUNC(Py_ssize_t) PyUnicode_Tailmatch(
-    PyObject *str,              /* String */
-    PyObject *substr,           /* Prefix or Suffix string */
-    Py_ssize_t start,           /* Start index */
-    Py_ssize_t end,             /* Stop index */
-    int direction               /* Tail end: -1 prefix, +1 suffix */
-    );
-
-/* Return the first position of substr in str[start:end] using the
-   given search direction or -1 if not found. -2 is returned in case
-   an error occurred and an exception is set. */
-
-PyAPI_FUNC(Py_ssize_t) PyUnicode_Find(
-    PyObject *str,              /* String */
-    PyObject *substr,           /* Substring to find */
-    Py_ssize_t start,           /* Start index */
-    Py_ssize_t end,             /* Stop index */
-    int direction               /* Find direction: +1 forward, -1 backward */
-    );
-
-/* Count the number of occurrences of substr in str[start:end]. */
-
-PyAPI_FUNC(Py_ssize_t) PyUnicode_Count(
-    PyObject *str,              /* String */
-    PyObject *substr,           /* Substring to count */
-    Py_ssize_t start,           /* Start index */
-    Py_ssize_t end              /* Stop index */
-    );
-
-/* Replace at most maxcount occurrences of substr in str with replstr
-   and return the resulting Unicode object. */
-
-PyAPI_FUNC(PyObject *) PyUnicode_Replace(
-    PyObject *str,              /* String */
-    PyObject *substr,           /* Substring to find */
-    PyObject *replstr,          /* Substring to replace */
-    Py_ssize_t maxcount         /* Max. number of replacements to apply;
-                                   -1 = all */
-    );
-
-/* Compare two strings and return -1, 0, 1 for less than, equal,
-   greater than resp. */
-
-PyAPI_FUNC(int) PyUnicode_Compare(
-    PyObject *left,             /* Left string */
-    PyObject *right             /* Right string */
-    );
-
-/* Rich compare two strings and return one of the following:
-
-   - NULL in case an exception was raised
-   - Py_True or Py_False for successfuly comparisons
-   - Py_NotImplemented in case the type combination is unknown
-
-   Note that Py_EQ and Py_NE comparisons can cause a UnicodeWarning in
-   case the conversion of the arguments to Unicode fails with a
-   UnicodeDecodeError.
-
-   Possible values for op:
-
-     Py_GT, Py_GE, Py_EQ, Py_NE, Py_LT, Py_LE
-
-*/
-
-PyAPI_FUNC(PyObject *) PyUnicode_RichCompare(
-    PyObject *left,             /* Left string */
-    PyObject *right,            /* Right string */
-    int op                      /* Operation: Py_EQ, Py_NE, Py_GT, etc. */
-    );
-
-/* Apply a argument tuple or dictionary to a format string and return
-   the resulting Unicode string. */
-
-PyAPI_FUNC(PyObject *) PyUnicode_Format(
-    PyObject *format,           /* Format string */
-    PyObject *args              /* Argument tuple or dictionary */
-    );
-
-/* Checks whether element is contained in container and return 1/0
-   accordingly.
-
-   element has to coerce to an one element Unicode string. -1 is
-   returned in case of an error. */
-
-PyAPI_FUNC(int) PyUnicode_Contains(
-    PyObject *container,        /* Container string */
-    PyObject *element           /* Element string */
-    );
-
-/* Externally visible for str.strip(unicode) */
-PyAPI_FUNC(PyObject *) _PyUnicode_XStrip(
-    PyUnicodeObject *self,
-    int striptype,
-    PyObject *sepobj
-    );
-
-/* === Characters Type APIs =============================================== */
-
-/* Helper array used by Py_UNICODE_ISSPACE(). */
-
-PyAPI_DATA(const unsigned char) _Py_ascii_whitespace[];
-
-/* These should not be used directly. Use the Py_UNICODE_IS* and
-   Py_UNICODE_TO* macros instead.
-
-   These APIs are implemented in Objects/unicodectype.c.
-
-*/
-
-PyAPI_FUNC(int) _PyUnicode_IsLowercase(
-    Py_UNICODE ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsUppercase(
-    Py_UNICODE ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsTitlecase(
-    Py_UNICODE ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsWhitespace(
-    const Py_UNICODE ch         /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsLinebreak(
-    const Py_UNICODE ch         /* Unicode character */
-    );
-
-PyAPI_FUNC(Py_UNICODE) _PyUnicode_ToLowercase(
-    Py_UNICODE ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(Py_UNICODE) _PyUnicode_ToUppercase(
-    Py_UNICODE ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(Py_UNICODE) _PyUnicode_ToTitlecase(
-    Py_UNICODE ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_ToDecimalDigit(
-    Py_UNICODE ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_ToDigit(
-    Py_UNICODE ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(double) _PyUnicode_ToNumeric(
-    Py_UNICODE ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsDecimalDigit(
-    Py_UNICODE ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsDigit(
-    Py_UNICODE ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsNumeric(
-    Py_UNICODE ch       /* Unicode character */
-    );
-
-PyAPI_FUNC(int) _PyUnicode_IsAlpha(
-    Py_UNICODE ch       /* Unicode character */
-    );
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* Py_USING_UNICODE */
-#endif /* !Py_UNICODEOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/warnings.h b/AppPkg/Applications/Python/Python-2.7.2/Include/warnings.h
deleted file mode 100644
index bf8f963..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/warnings.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef Py_WARNINGS_H
-#define Py_WARNINGS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyAPI_FUNC(void) _PyWarnings_Init(void);
-
-PyAPI_FUNC(int) PyErr_WarnEx(PyObject *, const char *, Py_ssize_t);
-PyAPI_FUNC(int) PyErr_WarnExplicit(PyObject *, const char *, const char *, int,
-                                    const char *, PyObject *);
-
-#define PyErr_WarnPy3k(msg, stacklevel) \
-  (Py_Py3kWarningFlag ? PyErr_WarnEx(PyExc_DeprecationWarning, msg, stacklevel) : 0)
-
-/* DEPRECATED: Use PyErr_WarnEx() instead. */
-#define PyErr_Warn(category, msg) PyErr_WarnEx(category, msg, 1)
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_WARNINGS_H */
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Include/weakrefobject.h b/AppPkg/Applications/Python/Python-2.7.2/Include/weakrefobject.h
deleted file mode 100644
index 99596c5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Include/weakrefobject.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Weak references objects for Python. */
-
-#ifndef Py_WEAKREFOBJECT_H
-#define Py_WEAKREFOBJECT_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-typedef struct _PyWeakReference PyWeakReference;
-
-/* PyWeakReference is the base struct for the Python ReferenceType, ProxyType,
- * and CallableProxyType.
- */
-struct _PyWeakReference {
-    PyObject_HEAD
-
-    /* The object to which this is a weak reference, or Py_None if none.
-     * Note that this is a stealth reference:  wr_object's refcount is
-     * not incremented to reflect this pointer.
-     */
-    PyObject *wr_object;
-
-    /* A callable to invoke when wr_object dies, or NULL if none. */
-    PyObject *wr_callback;
-
-    /* A cache for wr_object's hash code.  As usual for hashes, this is -1
-     * if the hash code isn't known yet.
-     */
-    long hash;
-
-    /* If wr_object is weakly referenced, wr_object has a doubly-linked NULL-
-     * terminated list of weak references to it.  These are the list pointers.
-     * If wr_object goes away, wr_object is set to Py_None, and these pointers
-     * have no meaning then.
-     */
-    PyWeakReference *wr_prev;
-    PyWeakReference *wr_next;
-};
-
-PyAPI_DATA(PyTypeObject) _PyWeakref_RefType;
-PyAPI_DATA(PyTypeObject) _PyWeakref_ProxyType;
-PyAPI_DATA(PyTypeObject) _PyWeakref_CallableProxyType;
-
-#define PyWeakref_CheckRef(op) PyObject_TypeCheck(op, &_PyWeakref_RefType)
-#define PyWeakref_CheckRefExact(op) \
-        (Py_TYPE(op) == &_PyWeakref_RefType)
-#define PyWeakref_CheckProxy(op) \
-        ((Py_TYPE(op) == &_PyWeakref_ProxyType) || \
-         (Py_TYPE(op) == &_PyWeakref_CallableProxyType))
-
-/* This macro calls PyWeakref_CheckRef() last since that can involve a
-   function call; this makes it more likely that the function call
-   will be avoided. */
-#define PyWeakref_Check(op) \
-        (PyWeakref_CheckRef(op) || PyWeakref_CheckProxy(op))
-
-
-PyAPI_FUNC(PyObject *) PyWeakref_NewRef(PyObject *ob,
-                                              PyObject *callback);
-PyAPI_FUNC(PyObject *) PyWeakref_NewProxy(PyObject *ob,
-                                                PyObject *callback);
-PyAPI_FUNC(PyObject *) PyWeakref_GetObject(PyObject *ref);
-
-PyAPI_FUNC(Py_ssize_t) _PyWeakref_GetWeakrefCount(PyWeakReference *head);
-
-PyAPI_FUNC(void) _PyWeakref_ClearRef(PyWeakReference *self);
-
-#define PyWeakref_GET_OBJECT(ref) (((PyWeakReference *)(ref))->wr_object)
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_WEAKREFOBJECT_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/LICENSE b/AppPkg/Applications/Python/Python-2.7.2/LICENSE
deleted file mode 100644
index 1930f18..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/LICENSE
+++ /dev/null
@@ -1,279 +0,0 @@
-A. HISTORY OF THE SOFTWARE
-==========================
-
-Python was created in the early 1990s by Guido van Rossum at Stichting
-Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands
-as a successor of a language called ABC.  Guido remains Python's
-principal author, although it includes many contributions from others.
-
-In 1995, Guido continued his work on Python at the Corporation for
-National Research Initiatives (CNRI, see http://www.cnri.reston.va.us)
-in Reston, Virginia where he released several versions of the
-software.
-
-In May 2000, Guido and the Python core development team moved to
-BeOpen.com to form the BeOpen PythonLabs team.  In October of the same
-year, the PythonLabs team moved to Digital Creations (now Zope
-Corporation, see http://www.zope.com).  In 2001, the Python Software
-Foundation (PSF, see http://www.python.org/psf/) was formed, a
-non-profit organization created specifically to own Python-related
-Intellectual Property.  Zope Corporation is a sponsoring member of
-the PSF.
-
-All Python releases are Open Source (see http://www.opensource.org for
-the Open Source Definition).  Historically, most, but not all, Python
-releases have also been GPL-compatible; the table below summarizes
-the various releases.
-
-    Release         Derived     Year        Owner       GPL-
-                    from                                compatible? (1)
-
-    0.9.0 thru 1.2              1991-1995   CWI         yes
-    1.3 thru 1.5.2  1.2         1995-1999   CNRI        yes
-    1.6             1.5.2       2000        CNRI        no
-    2.0             1.6         2000        BeOpen.com  no
-    1.6.1           1.6         2001        CNRI        yes (2)
-    2.1             2.0+1.6.1   2001        PSF         no
-    2.0.1           2.0+1.6.1   2001        PSF         yes
-    2.1.1           2.1+2.0.1   2001        PSF         yes
-    2.2             2.1.1       2001        PSF         yes
-    2.1.2           2.1.1       2002        PSF         yes
-    2.1.3           2.1.2       2002        PSF         yes
-    2.2.1           2.2         2002        PSF         yes
-    2.2.2           2.2.1       2002        PSF         yes
-    2.2.3           2.2.2       2003        PSF         yes
-    2.3             2.2.2       2002-2003   PSF         yes
-    2.3.1           2.3         2002-2003   PSF         yes
-    2.3.2           2.3.1       2002-2003   PSF         yes
-    2.3.3           2.3.2       2002-2003   PSF         yes
-    2.3.4           2.3.3       2004        PSF         yes
-    2.3.5           2.3.4       2005        PSF         yes
-    2.4             2.3         2004        PSF         yes
-    2.4.1           2.4         2005        PSF         yes
-    2.4.2           2.4.1       2005        PSF         yes
-    2.4.3           2.4.2       2006        PSF         yes
-    2.4.4           2.4.3       2006        PSF         yes
-    2.5             2.4         2006        PSF         yes
-    2.5.1           2.5         2007        PSF         yes
-    2.5.2           2.5.1       2008        PSF         yes
-    2.5.3           2.5.2       2008        PSF         yes
-    2.6             2.5         2008        PSF         yes
-    2.6.1           2.6         2008        PSF         yes
-    2.6.2           2.6.1       2009        PSF         yes
-    2.6.3           2.6.2       2009        PSF         yes
-    2.6.4           2.6.3       2009        PSF         yes
-    2.6.5           2.6.4       2010        PSF         yes
-    2.7             2.6         2010        PSF         yes
-
-Footnotes:
-
-(1) GPL-compatible doesn't mean that we're distributing Python under
-    the GPL.  All Python licenses, unlike the GPL, let you distribute
-    a modified version without making your changes open source.  The
-    GPL-compatible licenses make it possible to combine Python with
-    other software that is released under the GPL; the others don't.
-
-(2) According to Richard Stallman, 1.6.1 is not GPL-compatible,
-    because its license has a choice of law clause.  According to
-    CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1
-    is "not incompatible" with the GPL.
-
-Thanks to the many outside volunteers who have worked under Guido's
-direction to make these releases possible.
-
-
-B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON
-===============================================================
-
-PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
---------------------------------------------
-
-1. This LICENSE AGREEMENT is between the Python Software Foundation
-("PSF"), and the Individual or Organization ("Licensee") accessing and
-otherwise using this software ("Python") in source or binary form and
-its associated documentation.
-
-2. Subject to the terms and conditions of this License Agreement, PSF hereby
-grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
-analyze, test, perform and/or display publicly, prepare derivative works,
-distribute, and otherwise use Python alone or in any derivative version,
-provided, however, that PSF's License Agreement and PSF's notice of copyright,
-i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-Python Software Foundation; All Rights Reserved" are retained in Python alone or
-in any derivative version prepared by Licensee.
-
-3. In the event Licensee prepares a derivative work that is based on
-or incorporates Python or any part thereof, and wants to make
-the derivative work available to others as provided herein, then
-Licensee hereby agrees to include in any such work a brief summary of
-the changes made to Python.
-
-4. PSF is making Python available to Licensee on an "AS IS"
-basis.  PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
-IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
-DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
-FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
-INFRINGE ANY THIRD PARTY RIGHTS.
-
-5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
-FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
-A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
-OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
-
-6. This License Agreement will automatically terminate upon a material
-breach of its terms and conditions.
-
-7. Nothing in this License Agreement shall be deemed to create any
-relationship of agency, partnership, or joint venture between PSF and
-Licensee.  This License Agreement does not grant permission to use PSF
-trademarks or trade name in a trademark sense to endorse or promote
-products or services of Licensee, or any third party.
-
-8. By copying, installing or otherwise using Python, Licensee
-agrees to be bound by the terms and conditions of this License
-Agreement.
-
-
-BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
--------------------------------------------
-
-BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
-
-1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
-office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
-Individual or Organization ("Licensee") accessing and otherwise using
-this software in source or binary form and its associated
-documentation ("the Software").
-
-2. Subject to the terms and conditions of this BeOpen Python License
-Agreement, BeOpen hereby grants Licensee a non-exclusive,
-royalty-free, world-wide license to reproduce, analyze, test, perform
-and/or display publicly, prepare derivative works, distribute, and
-otherwise use the Software alone or in any derivative version,
-provided, however, that the BeOpen Python License is retained in the
-Software, alone or in any derivative version prepared by Licensee.
-
-3. BeOpen is making the Software available to Licensee on an "AS IS"
-basis.  BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
-IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
-DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
-FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
-INFRINGE ANY THIRD PARTY RIGHTS.
-
-4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
-SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
-AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
-DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
-
-5. This License Agreement will automatically terminate upon a material
-breach of its terms and conditions.
-
-6. This License Agreement shall be governed by and interpreted in all
-respects by the law of the State of California, excluding conflict of
-law provisions.  Nothing in this License Agreement shall be deemed to
-create any relationship of agency, partnership, or joint venture
-between BeOpen and Licensee.  This License Agreement does not grant
-permission to use BeOpen trademarks or trade names in a trademark
-sense to endorse or promote products or services of Licensee, or any
-third party.  As an exception, the "BeOpen Python" logos available at
-http://www.pythonlabs.com/logos.html may be used according to the
-permissions granted on that web page.
-
-7. By copying, installing or otherwise using the software, Licensee
-agrees to be bound by the terms and conditions of this License
-Agreement.
-
-
-CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
----------------------------------------
-
-1. This LICENSE AGREEMENT is between the Corporation for National
-Research Initiatives, having an office at 1895 Preston White Drive,
-Reston, VA 20191 ("CNRI"), and the Individual or Organization
-("Licensee") accessing and otherwise using Python 1.6.1 software in
-source or binary form and its associated documentation.
-
-2. Subject to the terms and conditions of this License Agreement, CNRI
-hereby grants Licensee a nonexclusive, royalty-free, world-wide
-license to reproduce, analyze, test, perform and/or display publicly,
-prepare derivative works, distribute, and otherwise use Python 1.6.1
-alone or in any derivative version, provided, however, that CNRI's
-License Agreement and CNRI's notice of copyright, i.e., "Copyright (c)
-1995-2001 Corporation for National Research Initiatives; All Rights
-Reserved" are retained in Python 1.6.1 alone or in any derivative
-version prepared by Licensee.  Alternately, in lieu of CNRI's License
-Agreement, Licensee may substitute the following text (omitting the
-quotes): "Python 1.6.1 is made available subject to the terms and
-conditions in CNRI's License Agreement.  This Agreement together with
-Python 1.6.1 may be located on the Internet using the following
-unique, persistent identifier (known as a handle): 1895.22/1013.  This
-Agreement may also be obtained from a proxy server on the Internet
-using the following URL: http://hdl.handle.net/1895.22/1013".
-
-3. In the event Licensee prepares a derivative work that is based on
-or incorporates Python 1.6.1 or any part thereof, and wants to make
-the derivative work available to others as provided herein, then
-Licensee hereby agrees to include in any such work a brief summary of
-the changes made to Python 1.6.1.
-
-4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS"
-basis.  CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
-IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
-DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
-FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT
-INFRINGE ANY THIRD PARTY RIGHTS.
-
-5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
-1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
-A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1,
-OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
-
-6. This License Agreement will automatically terminate upon a material
-breach of its terms and conditions.
-
-7. This License Agreement shall be governed by the federal
-intellectual property law of the United States, including without
-limitation the federal copyright law, and, to the extent such
-U.S. federal law does not apply, by the law of the Commonwealth of
-Virginia, excluding Virginia's conflict of law provisions.
-Notwithstanding the foregoing, with regard to derivative works based
-on Python 1.6.1 that incorporate non-separable material that was
-previously distributed under the GNU General Public License (GPL), the
-law of the Commonwealth of Virginia shall govern this License
-Agreement only as to issues arising under or with respect to
-Paragraphs 4, 5, and 7 of this License Agreement.  Nothing in this
-License Agreement shall be deemed to create any relationship of
-agency, partnership, or joint venture between CNRI and Licensee.  This
-License Agreement does not grant permission to use CNRI trademarks or
-trade name in a trademark sense to endorse or promote products or
-services of Licensee, or any third party.
-
-8. By clicking on the "ACCEPT" button where indicated, or by copying,
-installing or otherwise using Python 1.6.1, Licensee agrees to be
-bound by the terms and conditions of this License Agreement.
-
-        ACCEPT
-
-
-CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
---------------------------------------------------
-
-Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
-The Netherlands.  All rights reserved.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Stichting Mathematisch
-Centrum or CWI not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior
-permission.
-
-STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
-THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
-FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/BaseHTTPServer.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/BaseHTTPServer.py
deleted file mode 100644
index 120bd78..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/BaseHTTPServer.py
+++ /dev/null
@@ -1,606 +0,0 @@
-"""HTTP server base class.
-
-Note: the class in this module doesn't implement any HTTP request; see
-SimpleHTTPServer for simple implementations of GET, HEAD and POST
-(including CGI scripts).  It does, however, optionally implement HTTP/1.1
-persistent connections, as of version 0.3.
-
-Contents:
-
-- BaseHTTPRequestHandler: HTTP request handler base class
-- test: test function
-
-XXX To do:
-
-- log requests even later (to capture byte count)
-- log user-agent header and other interesting goodies
-- send error log to separate file
-"""
-
-
-# See also:
-#
-# HTTP Working Group                                        T. Berners-Lee
-# INTERNET-DRAFT                                            R. T. Fielding
-# <draft-ietf-http-v10-spec-00.txt>                     H. Frystyk Nielsen
-# Expires September 8, 1995                                  March 8, 1995
-#
-# URL: http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-v10-spec-00.txt
-#
-# and
-#
-# Network Working Group                                      R. Fielding
-# Request for Comments: 2616                                       et al
-# Obsoletes: 2068                                              June 1999
-# Category: Standards Track
-#
-# URL: http://www.faqs.org/rfcs/rfc2616.html
-
-# Log files
-# ---------
-#
-# Here's a quote from the NCSA httpd docs about log file format.
-#
-# | The logfile format is as follows. Each line consists of:
-# |
-# | host rfc931 authuser [DD/Mon/YYYY:hh:mm:ss] "request" ddd bbbb
-# |
-# |        host: Either the DNS name or the IP number of the remote client
-# |        rfc931: Any information returned by identd for this person,
-# |                - otherwise.
-# |        authuser: If user sent a userid for authentication, the user name,
-# |                  - otherwise.
-# |        DD: Day
-# |        Mon: Month (calendar name)
-# |        YYYY: Year
-# |        hh: hour (24-hour format, the machine's timezone)
-# |        mm: minutes
-# |        ss: seconds
-# |        request: The first line of the HTTP request as sent by the client.
-# |        ddd: the status code returned by the server, - if not available.
-# |        bbbb: the total number of bytes sent,
-# |              *not including the HTTP/1.0 header*, - if not available
-# |
-# | You can determine the name of the file accessed through request.
-#
-# (Actually, the latter is only true if you know the server configuration
-# at the time the request was made!)
-
-__version__ = "0.3"
-
-__all__ = ["HTTPServer", "BaseHTTPRequestHandler"]
-
-import sys
-import time
-import socket # For gethostbyaddr()
-from warnings import filterwarnings, catch_warnings
-with catch_warnings():
-    if sys.py3kwarning:
-        filterwarnings("ignore", ".*mimetools has been removed",
-                        DeprecationWarning)
-    import mimetools
-import SocketServer
-
-# Default error message template
-DEFAULT_ERROR_MESSAGE = """\
-<head>
-<title>Error response</title>
-</head>
-<body>
-<h1>Error response</h1>
-<p>Error code %(code)d.
-<p>Message: %(message)s.
-<p>Error code explanation: %(code)s = %(explain)s.
-</body>
-"""
-
-DEFAULT_ERROR_CONTENT_TYPE = "text/html"
-
-def _quote_html(html):
-    return html.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
-
-class HTTPServer(SocketServer.TCPServer):
-
-    allow_reuse_address = 1    # Seems to make sense in testing environment
-
-    def server_bind(self):
-        """Override server_bind to store the server name."""
-        SocketServer.TCPServer.server_bind(self)
-        host, port = self.socket.getsockname()[:2]
-        self.server_name = socket.getfqdn(host)
-        self.server_port = port
-
-
-class BaseHTTPRequestHandler(SocketServer.StreamRequestHandler):
-
-    """HTTP request handler base class.
-
-    The following explanation of HTTP serves to guide you through the
-    code as well as to expose any misunderstandings I may have about
-    HTTP (so you don't need to read the code to figure out I'm wrong
-    :-).
-
-    HTTP (HyperText Transfer Protocol) is an extensible protocol on
-    top of a reliable stream transport (e.g. TCP/IP).  The protocol
-    recognizes three parts to a request:
-
-    1. One line identifying the request type and path
-    2. An optional set of RFC-822-style headers
-    3. An optional data part
-
-    The headers and data are separated by a blank line.
-
-    The first line of the request has the form
-
-    <command> <path> <version>
-
-    where <command> is a (case-sensitive) keyword such as GET or POST,
-    <path> is a string containing path information for the request,
-    and <version> should be the string "HTTP/1.0" or "HTTP/1.1".
-    <path> is encoded using the URL encoding scheme (using %xx to signify
-    the ASCII character with hex code xx).
-
-    The specification specifies that lines are separated by CRLF but
-    for compatibility with the widest range of clients recommends
-    servers also handle LF.  Similarly, whitespace in the request line
-    is treated sensibly (allowing multiple spaces between components
-    and allowing trailing whitespace).
-
-    Similarly, for output, lines ought to be separated by CRLF pairs
-    but most clients grok LF characters just fine.
-
-    If the first line of the request has the form
-
-    <command> <path>
-
-    (i.e. <version> is left out) then this is assumed to be an HTTP
-    0.9 request; this form has no optional headers and data part and
-    the reply consists of just the data.
-
-    The reply form of the HTTP 1.x protocol again has three parts:
-
-    1. One line giving the response code
-    2. An optional set of RFC-822-style headers
-    3. The data
-
-    Again, the headers and data are separated by a blank line.
-
-    The response code line has the form
-
-    <version> <responsecode> <responsestring>
-
-    where <version> is the protocol version ("HTTP/1.0" or "HTTP/1.1"),
-    <responsecode> is a 3-digit response code indicating success or
-    failure of the request, and <responsestring> is an optional
-    human-readable string explaining what the response code means.
-
-    This server parses the request and the headers, and then calls a
-    function specific to the request type (<command>).  Specifically,
-    a request SPAM will be handled by a method do_SPAM().  If no
-    such method exists the server sends an error response to the
-    client.  If it exists, it is called with no arguments:
-
-    do_SPAM()
-
-    Note that the request name is case sensitive (i.e. SPAM and spam
-    are different requests).
-
-    The various request details are stored in instance variables:
-
-    - client_address is the client IP address in the form (host,
-    port);
-
-    - command, path and version are the broken-down request line;
-
-    - headers is an instance of mimetools.Message (or a derived
-    class) containing the header information;
-
-    - rfile is a file object open for reading positioned at the
-    start of the optional input data part;
-
-    - wfile is a file object open for writing.
-
-    IT IS IMPORTANT TO ADHERE TO THE PROTOCOL FOR WRITING!
-
-    The first thing to be written must be the response line.  Then
-    follow 0 or more header lines, then a blank line, and then the
-    actual data (if any).  The meaning of the header lines depends on
-    the command executed by the server; in most cases, when data is
-    returned, there should be at least one header line of the form
-
-    Content-type: <type>/<subtype>
-
-    where <type> and <subtype> should be registered MIME types,
-    e.g. "text/html" or "text/plain".
-
-    """
-
-    # The Python system version, truncated to its first component.
-    sys_version = "Python/" + sys.version.split()[0]
-
-    # The server software version.  You may want to override this.
-    # The format is multiple whitespace-separated strings,
-    # where each string is of the form name[/version].
-    server_version = "BaseHTTP/" + __version__
-
-    # The default request version.  This only affects responses up until
-    # the point where the request line is parsed, so it mainly decides what
-    # the client gets back when sending a malformed request line.
-    # Most web servers default to HTTP 0.9, i.e. don't send a status line.
-    default_request_version = "HTTP/0.9"
-
-    def parse_request(self):
-        """Parse a request (internal).
-
-        The request should be stored in self.raw_requestline; the results
-        are in self.command, self.path, self.request_version and
-        self.headers.
-
-        Return True for success, False for failure; on failure, an
-        error is sent back.
-
-        """
-        self.command = None  # set in case of error on the first line
-        self.request_version = version = self.default_request_version
-        self.close_connection = 1
-        requestline = self.raw_requestline
-        if requestline[-2:] == '\r\n':
-            requestline = requestline[:-2]
-        elif requestline[-1:] == '\n':
-            requestline = requestline[:-1]
-        self.requestline = requestline
-        words = requestline.split()
-        if len(words) == 3:
-            [command, path, version] = words
-            if version[:5] != 'HTTP/':
-                self.send_error(400, "Bad request version (%r)" % version)
-                return False
-            try:
-                base_version_number = version.split('/', 1)[1]
-                version_number = base_version_number.split(".")
-                # RFC 2145 section 3.1 says there can be only one "." and
-                #   - major and minor numbers MUST be treated as
-                #      separate integers;
-                #   - HTTP/2.4 is a lower version than HTTP/2.13, which in
-                #      turn is lower than HTTP/12.3;
-                #   - Leading zeros MUST be ignored by recipients.
-                if len(version_number) != 2:
-                    raise ValueError
-                version_number = int(version_number[0]), int(version_number[1])
-            except (ValueError, IndexError):
-                self.send_error(400, "Bad request version (%r)" % version)
-                return False
-            if version_number >= (1, 1) and self.protocol_version >= "HTTP/1.1":
-                self.close_connection = 0
-            if version_number >= (2, 0):
-                self.send_error(505,
-                          "Invalid HTTP Version (%s)" % base_version_number)
-                return False
-        elif len(words) == 2:
-            [command, path] = words
-            self.close_connection = 1
-            if command != 'GET':
-                self.send_error(400,
-                                "Bad HTTP/0.9 request type (%r)" % command)
-                return False
-        elif not words:
-            return False
-        else:
-            self.send_error(400, "Bad request syntax (%r)" % requestline)
-            return False
-        self.command, self.path, self.request_version = command, path, version
-
-        # Examine the headers and look for a Connection directive
-        self.headers = self.MessageClass(self.rfile, 0)
-
-        conntype = self.headers.get('Connection', "")
-        if conntype.lower() == 'close':
-            self.close_connection = 1
-        elif (conntype.lower() == 'keep-alive' and
-              self.protocol_version >= "HTTP/1.1"):
-            self.close_connection = 0
-        return True
-
-    def handle_one_request(self):
-        """Handle a single HTTP request.
-
-        You normally don't need to override this method; see the class
-        __doc__ string for information on how to handle specific HTTP
-        commands such as GET and POST.
-
-        """
-        try:
-            self.raw_requestline = self.rfile.readline(65537)
-            if len(self.raw_requestline) > 65536:
-                self.requestline = ''
-                self.request_version = ''
-                self.command = ''
-                self.send_error(414)
-                return
-            if not self.raw_requestline:
-                self.close_connection = 1
-                return
-            if not self.parse_request():
-                # An error code has been sent, just exit
-                return
-            mname = 'do_' + self.command
-            if not hasattr(self, mname):
-                self.send_error(501, "Unsupported method (%r)" % self.command)
-                return
-            method = getattr(self, mname)
-            method()
-            self.wfile.flush() #actually send the response if not already done.
-        except socket.timeout, e:
-            #a read or a write timed out.  Discard this connection
-            self.log_error("Request timed out: %r", e)
-            self.close_connection = 1
-            return
-
-    def handle(self):
-        """Handle multiple requests if necessary."""
-        self.close_connection = 1
-
-        self.handle_one_request()
-        while not self.close_connection:
-            self.handle_one_request()
-
-    def send_error(self, code, message=None):
-        """Send and log an error reply.
-
-        Arguments are the error code, and a detailed message.
-        The detailed message defaults to the short entry matching the
-        response code.
-
-        This sends an error response (so it must be called before any
-        output has been generated), logs the error, and finally sends
-        a piece of HTML explaining the error to the user.
-
-        """
-
-        try:
-            short, long = self.responses[code]
-        except KeyError:
-            short, long = '???', '???'
-        if message is None:
-            message = short
-        explain = long
-        self.log_error("code %d, message %s", code, message)
-        # using _quote_html to prevent Cross Site Scripting attacks (see bug #1100201)
-        content = (self.error_message_format %
-                   {'code': code, 'message': _quote_html(message), 'explain': explain})
-        self.send_response(code, message)
-        self.send_header("Content-Type", self.error_content_type)
-        self.send_header('Connection', 'close')
-        self.end_headers()
-        if self.command != 'HEAD' and code >= 200 and code not in (204, 304):
-            self.wfile.write(content)
-
-    error_message_format = DEFAULT_ERROR_MESSAGE
-    error_content_type = DEFAULT_ERROR_CONTENT_TYPE
-
-    def send_response(self, code, message=None):
-        """Send the response header and log the response code.
-
-        Also send two standard headers with the server software
-        version and the current date.
-
-        """
-        self.log_request(code)
-        if message is None:
-            if code in self.responses:
-                message = self.responses[code][0]
-            else:
-                message = ''
-        if self.request_version != 'HTTP/0.9':
-            self.wfile.write("%s %d %s\r\n" %
-                             (self.protocol_version, code, message))
-            # print (self.protocol_version, code, message)
-        self.send_header('Server', self.version_string())
-        self.send_header('Date', self.date_time_string())
-
-    def send_header(self, keyword, value):
-        """Send a MIME header."""
-        if self.request_version != 'HTTP/0.9':
-            self.wfile.write("%s: %s\r\n" % (keyword, value))
-
-        if keyword.lower() == 'connection':
-            if value.lower() == 'close':
-                self.close_connection = 1
-            elif value.lower() == 'keep-alive':
-                self.close_connection = 0
-
-    def end_headers(self):
-        """Send the blank line ending the MIME headers."""
-        if self.request_version != 'HTTP/0.9':
-            self.wfile.write("\r\n")
-
-    def log_request(self, code='-', size='-'):
-        """Log an accepted request.
-
-        This is called by send_response().
-
-        """
-
-        self.log_message('"%s" %s %s',
-                         self.requestline, str(code), str(size))
-
-    def log_error(self, format, *args):
-        """Log an error.
-
-        This is called when a request cannot be fulfilled.  By
-        default it passes the message on to log_message().
-
-        Arguments are the same as for log_message().
-
-        XXX This should go to the separate error log.
-
-        """
-
-        self.log_message(format, *args)
-
-    def log_message(self, format, *args):
-        """Log an arbitrary message.
-
-        This is used by all other logging functions.  Override
-        it if you have specific logging wishes.
-
-        The first argument, FORMAT, is a format string for the
-        message to be logged.  If the format string contains
-        any % escapes requiring parameters, they should be
-        specified as subsequent arguments (it's just like
-        printf!).
-
-        The client host and current date/time are prefixed to
-        every message.
-
-        """
-
-        sys.stderr.write("%s - - [%s] %s\n" %
-                         (self.address_string(),
-                          self.log_date_time_string(),
-                          format%args))
-
-    def version_string(self):
-        """Return the server software version string."""
-        return self.server_version + ' ' + self.sys_version
-
-    def date_time_string(self, timestamp=None):
-        """Return the current date and time formatted for a message header."""
-        if timestamp is None:
-            timestamp = time.time()
-        year, month, day, hh, mm, ss, wd, y, z = time.gmtime(timestamp)
-        s = "%s, %02d %3s %4d %02d:%02d:%02d GMT" % (
-                self.weekdayname[wd],
-                day, self.monthname[month], year,
-                hh, mm, ss)
-        return s
-
-    def log_date_time_string(self):
-        """Return the current time formatted for logging."""
-        now = time.time()
-        year, month, day, hh, mm, ss, x, y, z = time.localtime(now)
-        s = "%02d/%3s/%04d %02d:%02d:%02d" % (
-                day, self.monthname[month], year, hh, mm, ss)
-        return s
-
-    weekdayname = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
-
-    monthname = [None,
-                 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
-                 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
-
-    def address_string(self):
-        """Return the client address formatted for logging.
-
-        This version looks up the full hostname using gethostbyaddr(),
-        and tries to find a name that contains at least one dot.
-
-        """
-
-        host, port = self.client_address[:2]
-        return socket.getfqdn(host)
-
-    # Essentially static class variables
-
-    # The version of the HTTP protocol we support.
-    # Set this to HTTP/1.1 to enable automatic keepalive
-    protocol_version = "HTTP/1.0"
-
-    # The Message-like class used to parse headers
-    MessageClass = mimetools.Message
-
-    # Table mapping response codes to messages; entries have the
-    # form {code: (shortmessage, longmessage)}.
-    # See RFC 2616.
-    responses = {
-        100: ('Continue', 'Request received, please continue'),
-        101: ('Switching Protocols',
-              'Switching to new protocol; obey Upgrade header'),
-
-        200: ('OK', 'Request fulfilled, document follows'),
-        201: ('Created', 'Document created, URL follows'),
-        202: ('Accepted',
-              'Request accepted, processing continues off-line'),
-        203: ('Non-Authoritative Information', 'Request fulfilled from cache'),
-        204: ('No Content', 'Request fulfilled, nothing follows'),
-        205: ('Reset Content', 'Clear input form for further input.'),
-        206: ('Partial Content', 'Partial content follows.'),
-
-        300: ('Multiple Choices',
-              'Object has several resources -- see URI list'),
-        301: ('Moved Permanently', 'Object moved permanently -- see URI list'),
-        302: ('Found', 'Object moved temporarily -- see URI list'),
-        303: ('See Other', 'Object moved -- see Method and URL list'),
-        304: ('Not Modified',
-              'Document has not changed since given time'),
-        305: ('Use Proxy',
-              'You must use proxy specified in Location to access this '
-              'resource.'),
-        307: ('Temporary Redirect',
-              'Object moved temporarily -- see URI list'),
-
-        400: ('Bad Request',
-              'Bad request syntax or unsupported method'),
-        401: ('Unauthorized',
-              'No permission -- see authorization schemes'),
-        402: ('Payment Required',
-              'No payment -- see charging schemes'),
-        403: ('Forbidden',
-              'Request forbidden -- authorization will not help'),
-        404: ('Not Found', 'Nothing matches the given URI'),
-        405: ('Method Not Allowed',
-              'Specified method is invalid for this resource.'),
-        406: ('Not Acceptable', 'URI not available in preferred format.'),
-        407: ('Proxy Authentication Required', 'You must authenticate with '
-              'this proxy before proceeding.'),
-        408: ('Request Timeout', 'Request timed out; try again later.'),
-        409: ('Conflict', 'Request conflict.'),
-        410: ('Gone',
-              'URI no longer exists and has been permanently removed.'),
-        411: ('Length Required', 'Client must specify Content-Length.'),
-        412: ('Precondition Failed', 'Precondition in headers is false.'),
-        413: ('Request Entity Too Large', 'Entity is too large.'),
-        414: ('Request-URI Too Long', 'URI is too long.'),
-        415: ('Unsupported Media Type', 'Entity body in unsupported format.'),
-        416: ('Requested Range Not Satisfiable',
-              'Cannot satisfy request range.'),
-        417: ('Expectation Failed',
-              'Expect condition could not be satisfied.'),
-
-        500: ('Internal Server Error', 'Server got itself in trouble'),
-        501: ('Not Implemented',
-              'Server does not support this operation'),
-        502: ('Bad Gateway', 'Invalid responses from another server/proxy.'),
-        503: ('Service Unavailable',
-              'The server cannot process the request due to a high load'),
-        504: ('Gateway Timeout',
-              'The gateway server did not receive a timely response'),
-        505: ('HTTP Version Not Supported', 'Cannot fulfill request.'),
-        }
-
-
-def test(HandlerClass = BaseHTTPRequestHandler,
-         ServerClass = HTTPServer, protocol="HTTP/1.0"):
-    """Test the HTTP request handler class.
-
-    This runs an HTTP server on port 8000 (or the first command line
-    argument).
-
-    """
-
-    if sys.argv[1:]:
-        port = int(sys.argv[1])
-    else:
-        port = 8000
-    server_address = ('', port)
-
-    HandlerClass.protocol_version = protocol
-    httpd = ServerClass(server_address, HandlerClass)
-
-    sa = httpd.socket.getsockname()
-    print "Serving HTTP on", sa[0], "port", sa[1], "..."
-    httpd.serve_forever()
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/Bastion.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/Bastion.py
deleted file mode 100644
index 9ab2f12..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/Bastion.py
+++ /dev/null
@@ -1,180 +0,0 @@
-"""Bastionification utility.
-
-A bastion (for another object -- the 'original') is an object that has
-the same methods as the original but does not give access to its
-instance variables.  Bastions have a number of uses, but the most
-obvious one is to provide code executing in restricted mode with a
-safe interface to an object implemented in unrestricted mode.
-
-The bastionification routine has an optional second argument which is
-a filter function.  Only those methods for which the filter method
-(called with the method name as argument) returns true are accessible.
-The default filter method returns true unless the method name begins
-with an underscore.
-
-There are a number of possible implementations of bastions.  We use a
-'lazy' approach where the bastion's __getattr__() discipline does all
-the work for a particular method the first time it is used.  This is
-usually fastest, especially if the user doesn't call all available
-methods.  The retrieved methods are stored as instance variables of
-the bastion, so the overhead is only occurred on the first use of each
-method.
-
-Detail: the bastion class has a __repr__() discipline which includes
-the repr() of the original object.  This is precomputed when the
-bastion is created.
-
-"""
-from warnings import warnpy3k
-warnpy3k("the Bastion module has been removed in Python 3.0", stacklevel=2)
-del warnpy3k
-
-__all__ = ["BastionClass", "Bastion"]
-
-from types import MethodType
-
-
-class BastionClass:
-
-    """Helper class used by the Bastion() function.
-
-    You could subclass this and pass the subclass as the bastionclass
-    argument to the Bastion() function, as long as the constructor has
-    the same signature (a get() function and a name for the object).
-
-    """
-
-    def __init__(self, get, name):
-        """Constructor.
-
-        Arguments:
-
-        get - a function that gets the attribute value (by name)
-        name - a human-readable name for the original object
-               (suggestion: use repr(object))
-
-        """
-        self._get_ = get
-        self._name_ = name
-
-    def __repr__(self):
-        """Return a representation string.
-
-        This includes the name passed in to the constructor, so that
-        if you print the bastion during debugging, at least you have
-        some idea of what it is.
-
-        """
-        return "<Bastion for %s>" % self._name_
-
-    def __getattr__(self, name):
-        """Get an as-yet undefined attribute value.
-
-        This calls the get() function that was passed to the
-        constructor.  The result is stored as an instance variable so
-        that the next time the same attribute is requested,
-        __getattr__() won't be invoked.
-
-        If the get() function raises an exception, this is simply
-        passed on -- exceptions are not cached.
-
-        """
-        attribute = self._get_(name)
-        self.__dict__[name] = attribute
-        return attribute
-
-
-def Bastion(object, filter = lambda name: name[:1] != '_',
-            name=None, bastionclass=BastionClass):
-    """Create a bastion for an object, using an optional filter.
-
-    See the Bastion module's documentation for background.
-
-    Arguments:
-
-    object - the original object
-    filter - a predicate that decides whether a function name is OK;
-             by default all names are OK that don't start with '_'
-    name - the name of the object; default repr(object)
-    bastionclass - class used to create the bastion; default BastionClass
-
-    """
-
-    raise RuntimeError, "This code is not secure in Python 2.2 and later"
-
-    # Note: we define *two* ad-hoc functions here, get1 and get2.
-    # Both are intended to be called in the same way: get(name).
-    # It is clear that the real work (getting the attribute
-    # from the object and calling the filter) is done in get1.
-    # Why can't we pass get1 to the bastion?  Because the user
-    # would be able to override the filter argument!  With get2,
-    # overriding the default argument is no security loophole:
-    # all it does is call it.
-    # Also notice that we can't place the object and filter as
-    # instance variables on the bastion object itself, since
-    # the user has full access to all instance variables!
-
-    def get1(name, object=object, filter=filter):
-        """Internal function for Bastion().  See source comments."""
-        if filter(name):
-            attribute = getattr(object, name)
-            if type(attribute) == MethodType:
-                return attribute
-        raise AttributeError, name
-
-    def get2(name, get1=get1):
-        """Internal function for Bastion().  See source comments."""
-        return get1(name)
-
-    if name is None:
-        name = repr(object)
-    return bastionclass(get2, name)
-
-
-def _test():
-    """Test the Bastion() function."""
-    class Original:
-        def __init__(self):
-            self.sum = 0
-        def add(self, n):
-            self._add(n)
-        def _add(self, n):
-            self.sum = self.sum + n
-        def total(self):
-            return self.sum
-    o = Original()
-    b = Bastion(o)
-    testcode = """if 1:
-    b.add(81)
-    b.add(18)
-    print "b.total() =", b.total()
-    try:
-        print "b.sum =", b.sum,
-    except:
-        print "inaccessible"
-    else:
-        print "accessible"
-    try:
-        print "b._add =", b._add,
-    except:
-        print "inaccessible"
-    else:
-        print "accessible"
-    try:
-        print "b._get_.func_defaults =", map(type, b._get_.func_defaults),
-    except:
-        print "inaccessible"
-    else:
-        print "accessible"
-    \n"""
-    exec testcode
-    print '='*20, "Using rexec:", '='*20
-    import rexec
-    r = rexec.RExec()
-    m = r.add_module('__main__')
-    m.b = b
-    r.r_exec(testcode)
-
-
-if __name__ == '__main__':
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/CGIHTTPServer.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/CGIHTTPServer.py
deleted file mode 100644
index 9c7f9df..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/CGIHTTPServer.py
+++ /dev/null
@@ -1,374 +0,0 @@
-"""CGI-savvy HTTP Server.
-
-This module builds on SimpleHTTPServer by implementing GET and POST
-requests to cgi-bin scripts.
-
-If the os.fork() function is not present (e.g. on Windows),
-os.popen2() is used as a fallback, with slightly altered semantics; if
-that function is not present either (e.g. on Macintosh), only Python
-scripts are supported, and they are executed by the current process.
-
-In all cases, the implementation is intentionally naive -- all
-requests are executed sychronously.
-
-SECURITY WARNING: DON'T USE THIS CODE UNLESS YOU ARE INSIDE A FIREWALL
--- it may execute arbitrary Python code or external programs.
-
-Note that status code 200 is sent prior to execution of a CGI script, so
-scripts cannot send other status codes such as 302 (redirect).
-"""
-
-
-__version__ = "0.4"
-
-__all__ = ["CGIHTTPRequestHandler"]
-
-import os
-import sys
-import urllib
-import BaseHTTPServer
-import SimpleHTTPServer
-import select
-import copy
-
-
-class CGIHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
-
-    """Complete HTTP server with GET, HEAD and POST commands.
-
-    GET and HEAD also support running CGI scripts.
-
-    The POST command is *only* implemented for CGI scripts.
-
-    """
-
-    # Determine platform specifics
-    have_fork = hasattr(os, 'fork')
-    have_popen2 = hasattr(os, 'popen2')
-    have_popen3 = hasattr(os, 'popen3')
-
-    # Make rfile unbuffered -- we need to read one line and then pass
-    # the rest to a subprocess, so we can't use buffered input.
-    rbufsize = 0
-
-    def do_POST(self):
-        """Serve a POST request.
-
-        This is only implemented for CGI scripts.
-
-        """
-
-        if self.is_cgi():
-            self.run_cgi()
-        else:
-            self.send_error(501, "Can only POST to CGI scripts")
-
-    def send_head(self):
-        """Version of send_head that support CGI scripts"""
-        if self.is_cgi():
-            return self.run_cgi()
-        else:
-            return SimpleHTTPServer.SimpleHTTPRequestHandler.send_head(self)
-
-    def is_cgi(self):
-        """Test whether self.path corresponds to a CGI script.
-
-        Returns True and updates the cgi_info attribute to the tuple
-        (dir, rest) if self.path requires running a CGI script.
-        Returns False otherwise.
-
-        If any exception is raised, the caller should assume that
-        self.path was rejected as invalid and act accordingly.
-
-        The default implementation tests whether the normalized url
-        path begins with one of the strings in self.cgi_directories
-        (and the next character is a '/' or the end of the string).
-        """
-        splitpath = _url_collapse_path_split(self.path)
-        if splitpath[0] in self.cgi_directories:
-            self.cgi_info = splitpath
-            return True
-        return False
-
-    cgi_directories = ['/cgi-bin', '/htbin']
-
-    def is_executable(self, path):
-        """Test whether argument path is an executable file."""
-        return executable(path)
-
-    def is_python(self, path):
-        """Test whether argument path is a Python script."""
-        head, tail = os.path.splitext(path)
-        return tail.lower() in (".py", ".pyw")
-
-    def run_cgi(self):
-        """Execute a CGI script."""
-        path = self.path
-        dir, rest = self.cgi_info
-
-        i = path.find('/', len(dir) + 1)
-        while i >= 0:
-            nextdir = path[:i]
-            nextrest = path[i+1:]
-
-            scriptdir = self.translate_path(nextdir)
-            if os.path.isdir(scriptdir):
-                dir, rest = nextdir, nextrest
-                i = path.find('/', len(dir) + 1)
-            else:
-                break
-
-        # find an explicit query string, if present.
-        i = rest.rfind('?')
-        if i >= 0:
-            rest, query = rest[:i], rest[i+1:]
-        else:
-            query = ''
-
-        # dissect the part after the directory name into a script name &
-        # a possible additional path, to be stored in PATH_INFO.
-        i = rest.find('/')
-        if i >= 0:
-            script, rest = rest[:i], rest[i:]
-        else:
-            script, rest = rest, ''
-
-        scriptname = dir + '/' + script
-        scriptfile = self.translate_path(scriptname)
-        if not os.path.exists(scriptfile):
-            self.send_error(404, "No such CGI script (%r)" % scriptname)
-            return
-        if not os.path.isfile(scriptfile):
-            self.send_error(403, "CGI script is not a plain file (%r)" %
-                            scriptname)
-            return
-        ispy = self.is_python(scriptname)
-        if not ispy:
-            if not (self.have_fork or self.have_popen2 or self.have_popen3):
-                self.send_error(403, "CGI script is not a Python script (%r)" %
-                                scriptname)
-                return
-            if not self.is_executable(scriptfile):
-                self.send_error(403, "CGI script is not executable (%r)" %
-                                scriptname)
-                return
-
-        # Reference: http://hoohoo.ncsa.uiuc.edu/cgi/env.html
-        # XXX Much of the following could be prepared ahead of time!
-        env = copy.deepcopy(os.environ)
-        env['SERVER_SOFTWARE'] = self.version_string()
-        env['SERVER_NAME'] = self.server.server_name
-        env['GATEWAY_INTERFACE'] = 'CGI/1.1'
-        env['SERVER_PROTOCOL'] = self.protocol_version
-        env['SERVER_PORT'] = str(self.server.server_port)
-        env['REQUEST_METHOD'] = self.command
-        uqrest = urllib.unquote(rest)
-        env['PATH_INFO'] = uqrest
-        env['PATH_TRANSLATED'] = self.translate_path(uqrest)
-        env['SCRIPT_NAME'] = scriptname
-        if query:
-            env['QUERY_STRING'] = query
-        host = self.address_string()
-        if host != self.client_address[0]:
-            env['REMOTE_HOST'] = host
-        env['REMOTE_ADDR'] = self.client_address[0]
-        authorization = self.headers.getheader("authorization")
-        if authorization:
-            authorization = authorization.split()
-            if len(authorization) == 2:
-                import base64, binascii
-                env['AUTH_TYPE'] = authorization[0]
-                if authorization[0].lower() == "basic":
-                    try:
-                        authorization = base64.decodestring(authorization[1])
-                    except binascii.Error:
-                        pass
-                    else:
-                        authorization = authorization.split(':')
-                        if len(authorization) == 2:
-                            env['REMOTE_USER'] = authorization[0]
-        # XXX REMOTE_IDENT
-        if self.headers.typeheader is None:
-            env['CONTENT_TYPE'] = self.headers.type
-        else:
-            env['CONTENT_TYPE'] = self.headers.typeheader
-        length = self.headers.getheader('content-length')
-        if length:
-            env['CONTENT_LENGTH'] = length
-        referer = self.headers.getheader('referer')
-        if referer:
-            env['HTTP_REFERER'] = referer
-        accept = []
-        for line in self.headers.getallmatchingheaders('accept'):
-            if line[:1] in "\t\n\r ":
-                accept.append(line.strip())
-            else:
-                accept = accept + line[7:].split(',')
-        env['HTTP_ACCEPT'] = ','.join(accept)
-        ua = self.headers.getheader('user-agent')
-        if ua:
-            env['HTTP_USER_AGENT'] = ua
-        co = filter(None, self.headers.getheaders('cookie'))
-        if co:
-            env['HTTP_COOKIE'] = ', '.join(co)
-        # XXX Other HTTP_* headers
-        # Since we're setting the env in the parent, provide empty
-        # values to override previously set values
-        for k in ('QUERY_STRING', 'REMOTE_HOST', 'CONTENT_LENGTH',
-                  'HTTP_USER_AGENT', 'HTTP_COOKIE', 'HTTP_REFERER'):
-            env.setdefault(k, "")
-
-        self.send_response(200, "Script output follows")
-
-        decoded_query = query.replace('+', ' ')
-
-        if self.have_fork:
-            # Unix -- fork as we should
-            args = [script]
-            if '=' not in decoded_query:
-                args.append(decoded_query)
-            nobody = nobody_uid()
-            self.wfile.flush() # Always flush before forking
-            pid = os.fork()
-            if pid != 0:
-                # Parent
-                pid, sts = os.waitpid(pid, 0)
-                # throw away additional data [see bug #427345]
-                while select.select([self.rfile], [], [], 0)[0]:
-                    if not self.rfile.read(1):
-                        break
-                if sts:
-                    self.log_error("CGI script exit status %#x", sts)
-                return
-            # Child
-            try:
-                try:
-                    os.setuid(nobody)
-                except os.error:
-                    pass
-                os.dup2(self.rfile.fileno(), 0)
-                os.dup2(self.wfile.fileno(), 1)
-                os.execve(scriptfile, args, env)
-            except:
-                self.server.handle_error(self.request, self.client_address)
-                os._exit(127)
-
-        else:
-            # Non Unix - use subprocess
-            import subprocess
-            cmdline = [scriptfile]
-            if self.is_python(scriptfile):
-                interp = sys.executable
-                if interp.lower().endswith("w.exe"):
-                    # On Windows, use python.exe, not pythonw.exe
-                    interp = interp[:-5] + interp[-4:]
-                cmdline = [interp, '-u'] + cmdline
-            if '=' not in query:
-                cmdline.append(query)
-
-            self.log_message("command: %s", subprocess.list2cmdline(cmdline))
-            try:
-                nbytes = int(length)
-            except (TypeError, ValueError):
-                nbytes = 0
-            p = subprocess.Popen(cmdline,
-                                 stdin = subprocess.PIPE,
-                                 stdout = subprocess.PIPE,
-                                 stderr = subprocess.PIPE,
-                                 env = env
-                                )
-            if self.command.lower() == "post" and nbytes > 0:
-                data = self.rfile.read(nbytes)
-            else:
-                data = None
-            # throw away additional data [see bug #427345]
-            while select.select([self.rfile._sock], [], [], 0)[0]:
-                if not self.rfile._sock.recv(1):
-                    break
-            stdout, stderr = p.communicate(data)
-            self.wfile.write(stdout)
-            if stderr:
-                self.log_error('%s', stderr)
-            p.stderr.close()
-            p.stdout.close()
-            status = p.returncode
-            if status:
-                self.log_error("CGI script exit status %#x", status)
-            else:
-                self.log_message("CGI script exited OK")
-
-
-# TODO(gregory.p.smith): Move this into an appropriate library.
-def _url_collapse_path_split(path):
-    """
-    Given a URL path, remove extra '/'s and '.' path elements and collapse
-    any '..' references.
-
-    Implements something akin to RFC-2396 5.2 step 6 to parse relative paths.
-
-    Returns: A tuple of (head, tail) where tail is everything after the final /
-    and head is everything before it.  Head will always start with a '/' and,
-    if it contains anything else, never have a trailing '/'.
-
-    Raises: IndexError if too many '..' occur within the path.
-    """
-    # Similar to os.path.split(os.path.normpath(path)) but specific to URL
-    # path semantics rather than local operating system semantics.
-    path_parts = []
-    for part in path.split('/'):
-        if part == '.':
-            path_parts.append('')
-        else:
-            path_parts.append(part)
-    # Filter out blank non trailing parts before consuming the '..'.
-    path_parts = [part for part in path_parts[:-1] if part] + path_parts[-1:]
-    if path_parts:
-        tail_part = path_parts.pop()
-    else:
-        tail_part = ''
-    head_parts = []
-    for part in path_parts:
-        if part == '..':
-            head_parts.pop()
-        else:
-            head_parts.append(part)
-    if tail_part and tail_part == '..':
-        head_parts.pop()
-        tail_part = ''
-    return ('/' + '/'.join(head_parts), tail_part)
-
-
-nobody = None
-
-def nobody_uid():
-    """Internal routine to get nobody's uid"""
-    global nobody
-    if nobody:
-        return nobody
-    try:
-        import pwd
-    except ImportError:
-        return -1
-    try:
-        nobody = pwd.getpwnam('nobody')[2]
-    except KeyError:
-        nobody = 1 + max(map(lambda x: x[2], pwd.getpwall()))
-    return nobody
-
-
-def executable(path):
-    """Test for executable file."""
-    try:
-        st = os.stat(path)
-    except os.error:
-        return False
-    return st.st_mode & 0111 != 0
-
-
-def test(HandlerClass = CGIHTTPRequestHandler,
-         ServerClass = BaseHTTPServer.HTTPServer):
-    SimpleHTTPServer.test(HandlerClass, ServerClass)
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/ConfigParser.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/ConfigParser.py
deleted file mode 100644
index 033edda..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/ConfigParser.py
+++ /dev/null
@@ -1,745 +0,0 @@
-"""Configuration file parser.
-
-A setup file consists of sections, lead by a "[section]" header,
-and followed by "name: value" entries, with continuations and such in
-the style of RFC 822.
-
-The option values can contain format strings which refer to other values in
-the same section, or values in a special [DEFAULT] section.
-
-For example:
-
-    something: %(dir)s/whatever
-
-would resolve the "%(dir)s" to the value of dir.  All reference
-expansions are done late, on demand.
-
-Intrinsic defaults can be specified by passing them into the
-ConfigParser constructor as a dictionary.
-
-class:
-
-ConfigParser -- responsible for parsing a list of
-                configuration files, and managing the parsed database.
-
-    methods:
-
-    __init__(defaults=None)
-        create the parser and specify a dictionary of intrinsic defaults.  The
-        keys must be strings, the values must be appropriate for %()s string
-        interpolation.  Note that `__name__' is always an intrinsic default;
-        its value is the section's name.
-
-    sections()
-        return all the configuration section names, sans DEFAULT
-
-    has_section(section)
-        return whether the given section exists
-
-    has_option(section, option)
-        return whether the given option exists in the given section
-
-    options(section)
-        return list of configuration options for the named section
-
-    read(filenames)
-        read and parse the list of named configuration files, given by
-        name.  A single filename is also allowed.  Non-existing files
-        are ignored.  Return list of successfully read files.
-
-    readfp(fp, filename=None)
-        read and parse one configuration file, given as a file object.
-        The filename defaults to fp.name; it is only used in error
-        messages (if fp has no `name' attribute, the string `<???>' is used).
-
-    get(section, option, raw=False, vars=None)
-        return a string value for the named option.  All % interpolations are
-        expanded in the return values, based on the defaults passed into the
-        constructor and the DEFAULT section.  Additional substitutions may be
-        provided using the `vars' argument, which must be a dictionary whose
-        contents override any pre-existing defaults.
-
-    getint(section, options)
-        like get(), but convert value to an integer
-
-    getfloat(section, options)
-        like get(), but convert value to a float
-
-    getboolean(section, options)
-        like get(), but convert value to a boolean (currently case
-        insensitively defined as 0, false, no, off for False, and 1, true,
-        yes, on for True).  Returns False or True.
-
-    items(section, raw=False, vars=None)
-        return a list of tuples with (name, value) for each option
-        in the section.
-
-    remove_section(section)
-        remove the given file section and all its options
-
-    remove_option(section, option)
-        remove the given option from the given section
-
-    set(section, option, value)
-        set the given option
-
-    write(fp)
-        write the configuration state in .ini format
-"""
-
-try:
-    from collections import OrderedDict as _default_dict
-except ImportError:
-    # fallback for setup.py which hasn't yet built _collections
-    _default_dict = dict
-
-import re
-
-__all__ = ["NoSectionError", "DuplicateSectionError", "NoOptionError",
-           "InterpolationError", "InterpolationDepthError",
-           "InterpolationSyntaxError", "ParsingError",
-           "MissingSectionHeaderError",
-           "ConfigParser", "SafeConfigParser", "RawConfigParser",
-           "DEFAULTSECT", "MAX_INTERPOLATION_DEPTH"]
-
-DEFAULTSECT = "DEFAULT"
-
-MAX_INTERPOLATION_DEPTH = 10
-
-
-
-# exception classes
-class Error(Exception):
-    """Base class for ConfigParser exceptions."""
-
-    def _get_message(self):
-        """Getter for 'message'; needed only to override deprecation in
-        BaseException."""
-        return self.__message
-
-    def _set_message(self, value):
-        """Setter for 'message'; needed only to override deprecation in
-        BaseException."""
-        self.__message = value
-
-    # BaseException.message has been deprecated since Python 2.6.  To prevent
-    # DeprecationWarning from popping up over this pre-existing attribute, use
-    # a new property that takes lookup precedence.
-    message = property(_get_message, _set_message)
-
-    def __init__(self, msg=''):
-        self.message = msg
-        Exception.__init__(self, msg)
-
-    def __repr__(self):
-        return self.message
-
-    __str__ = __repr__
-
-class NoSectionError(Error):
-    """Raised when no section matches a requested option."""
-
-    def __init__(self, section):
-        Error.__init__(self, 'No section: %r' % (section,))
-        self.section = section
-
-class DuplicateSectionError(Error):
-    """Raised when a section is multiply-created."""
-
-    def __init__(self, section):
-        Error.__init__(self, "Section %r already exists" % section)
-        self.section = section
-
-class NoOptionError(Error):
-    """A requested option was not found."""
-
-    def __init__(self, option, section):
-        Error.__init__(self, "No option %r in section: %r" %
-                       (option, section))
-        self.option = option
-        self.section = section
-
-class InterpolationError(Error):
-    """Base class for interpolation-related exceptions."""
-
-    def __init__(self, option, section, msg):
-        Error.__init__(self, msg)
-        self.option = option
-        self.section = section
-
-class InterpolationMissingOptionError(InterpolationError):
-    """A string substitution required a setting which was not available."""
-
-    def __init__(self, option, section, rawval, reference):
-        msg = ("Bad value substitution:\n"
-               "\tsection: [%s]\n"
-               "\toption : %s\n"
-               "\tkey    : %s\n"
-               "\trawval : %s\n"
-               % (section, option, reference, rawval))
-        InterpolationError.__init__(self, option, section, msg)
-        self.reference = reference
-
-class InterpolationSyntaxError(InterpolationError):
-    """Raised when the source text into which substitutions are made
-    does not conform to the required syntax."""
-
-class InterpolationDepthError(InterpolationError):
-    """Raised when substitutions are nested too deeply."""
-
-    def __init__(self, option, section, rawval):
-        msg = ("Value interpolation too deeply recursive:\n"
-               "\tsection: [%s]\n"
-               "\toption : %s\n"
-               "\trawval : %s\n"
-               % (section, option, rawval))
-        InterpolationError.__init__(self, option, section, msg)
-
-class ParsingError(Error):
-    """Raised when a configuration file does not follow legal syntax."""
-
-    def __init__(self, filename):
-        Error.__init__(self, 'File contains parsing errors: %s' % filename)
-        self.filename = filename
-        self.errors = []
-
-    def append(self, lineno, line):
-        self.errors.append((lineno, line))
-        self.message += '\n\t[line %2d]: %s' % (lineno, line)
-
-class MissingSectionHeaderError(ParsingError):
-    """Raised when a key-value pair is found before any section header."""
-
-    def __init__(self, filename, lineno, line):
-        Error.__init__(
-            self,
-            'File contains no section headers.\nfile: %s, line: %d\n%r' %
-            (filename, lineno, line))
-        self.filename = filename
-        self.lineno = lineno
-        self.line = line
-
-
-class RawConfigParser:
-    def __init__(self, defaults=None, dict_type=_default_dict,
-                 allow_no_value=False):
-        self._dict = dict_type
-        self._sections = self._dict()
-        self._defaults = self._dict()
-        if allow_no_value:
-            self._optcre = self.OPTCRE_NV
-        else:
-            self._optcre = self.OPTCRE
-        if defaults:
-            for key, value in defaults.items():
-                self._defaults[self.optionxform(key)] = value
-
-    def defaults(self):
-        return self._defaults
-
-    def sections(self):
-        """Return a list of section names, excluding [DEFAULT]"""
-        # self._sections will never have [DEFAULT] in it
-        return self._sections.keys()
-
-    def add_section(self, section):
-        """Create a new section in the configuration.
-
-        Raise DuplicateSectionError if a section by the specified name
-        already exists. Raise ValueError if name is DEFAULT or any of it's
-        case-insensitive variants.
-        """
-        if section.lower() == "default":
-            raise ValueError, 'Invalid section name: %s' % section
-
-        if section in self._sections:
-            raise DuplicateSectionError(section)
-        self._sections[section] = self._dict()
-
-    def has_section(self, section):
-        """Indicate whether the named section is present in the configuration.
-
-        The DEFAULT section is not acknowledged.
-        """
-        return section in self._sections
-
-    def options(self, section):
-        """Return a list of option names for the given section name."""
-        try:
-            opts = self._sections[section].copy()
-        except KeyError:
-            raise NoSectionError(section)
-        opts.update(self._defaults)
-        if '__name__' in opts:
-            del opts['__name__']
-        return opts.keys()
-
-    def read(self, filenames):
-        """Read and parse a filename or a list of filenames.
-
-        Files that cannot be opened are silently ignored; this is
-        designed so that you can specify a list of potential
-        configuration file locations (e.g. current directory, user's
-        home directory, systemwide directory), and all existing
-        configuration files in the list will be read.  A single
-        filename may also be given.
-
-        Return list of successfully read files.
-        """
-        if isinstance(filenames, basestring):
-            filenames = [filenames]
-        read_ok = []
-        for filename in filenames:
-            try:
-                fp = open(filename)
-            except IOError:
-                continue
-            self._read(fp, filename)
-            fp.close()
-            read_ok.append(filename)
-        return read_ok
-
-    def readfp(self, fp, filename=None):
-        """Like read() but the argument must be a file-like object.
-
-        The `fp' argument must have a `readline' method.  Optional
-        second argument is the `filename', which if not given, is
-        taken from fp.name.  If fp has no `name' attribute, `<???>' is
-        used.
-
-        """
-        if filename is None:
-            try:
-                filename = fp.name
-            except AttributeError:
-                filename = '<???>'
-        self._read(fp, filename)
-
-    def get(self, section, option):
-        opt = self.optionxform(option)
-        if section not in self._sections:
-            if section != DEFAULTSECT:
-                raise NoSectionError(section)
-            if opt in self._defaults:
-                return self._defaults[opt]
-            else:
-                raise NoOptionError(option, section)
-        elif opt in self._sections[section]:
-            return self._sections[section][opt]
-        elif opt in self._defaults:
-            return self._defaults[opt]
-        else:
-            raise NoOptionError(option, section)
-
-    def items(self, section):
-        try:
-            d2 = self._sections[section]
-        except KeyError:
-            if section != DEFAULTSECT:
-                raise NoSectionError(section)
-            d2 = self._dict()
-        d = self._defaults.copy()
-        d.update(d2)
-        if "__name__" in d:
-            del d["__name__"]
-        return d.items()
-
-    def _get(self, section, conv, option):
-        return conv(self.get(section, option))
-
-    def getint(self, section, option):
-        return self._get(section, int, option)
-
-    def getfloat(self, section, option):
-        return self._get(section, float, option)
-
-    _boolean_states = {'1': True, 'yes': True, 'true': True, 'on': True,
-                       '0': False, 'no': False, 'false': False, 'off': False}
-
-    def getboolean(self, section, option):
-        v = self.get(section, option)
-        if v.lower() not in self._boolean_states:
-            raise ValueError, 'Not a boolean: %s' % v
-        return self._boolean_states[v.lower()]
-
-    def optionxform(self, optionstr):
-        return optionstr.lower()
-
-    def has_option(self, section, option):
-        """Check for the existence of a given option in a given section."""
-        if not section or section == DEFAULTSECT:
-            option = self.optionxform(option)
-            return option in self._defaults
-        elif section not in self._sections:
-            return False
-        else:
-            option = self.optionxform(option)
-            return (option in self._sections[section]
-                    or option in self._defaults)
-
-    def set(self, section, option, value=None):
-        """Set an option."""
-        if not section or section == DEFAULTSECT:
-            sectdict = self._defaults
-        else:
-            try:
-                sectdict = self._sections[section]
-            except KeyError:
-                raise NoSectionError(section)
-        sectdict[self.optionxform(option)] = value
-
-    def write(self, fp):
-        """Write an .ini-format representation of the configuration state."""
-        if self._defaults:
-            fp.write("[%s]\n" % DEFAULTSECT)
-            for (key, value) in self._defaults.items():
-                fp.write("%s = %s\n" % (key, str(value).replace('\n', '\n\t')))
-            fp.write("\n")
-        for section in self._sections:
-            fp.write("[%s]\n" % section)
-            for (key, value) in self._sections[section].items():
-                if key == "__name__":
-                    continue
-                if (value is not None) or (self._optcre == self.OPTCRE):
-                    key = " = ".join((key, str(value).replace('\n', '\n\t')))
-                fp.write("%s\n" % (key))
-            fp.write("\n")
-
-    def remove_option(self, section, option):
-        """Remove an option."""
-        if not section or section == DEFAULTSECT:
-            sectdict = self._defaults
-        else:
-            try:
-                sectdict = self._sections[section]
-            except KeyError:
-                raise NoSectionError(section)
-        option = self.optionxform(option)
-        existed = option in sectdict
-        if existed:
-            del sectdict[option]
-        return existed
-
-    def remove_section(self, section):
-        """Remove a file section."""
-        existed = section in self._sections
-        if existed:
-            del self._sections[section]
-        return existed
-
-    #
-    # Regular expressions for parsing section headers and options.
-    #
-    SECTCRE = re.compile(
-        r'\['                                 # [
-        r'(?P<header>[^]]+)'                  # very permissive!
-        r'\]'                                 # ]
-        )
-    OPTCRE = re.compile(
-        r'(?P<option>[^:=\s][^:=]*)'          # very permissive!
-        r'\s*(?P<vi>[:=])\s*'                 # any number of space/tab,
-                                              # followed by separator
-                                              # (either : or =), followed
-                                              # by any # space/tab
-        r'(?P<value>.*)$'                     # everything up to eol
-        )
-    OPTCRE_NV = re.compile(
-        r'(?P<option>[^:=\s][^:=]*)'          # very permissive!
-        r'\s*(?:'                             # any number of space/tab,
-        r'(?P<vi>[:=])\s*'                    # optionally followed by
-                                              # separator (either : or
-                                              # =), followed by any #
-                                              # space/tab
-        r'(?P<value>.*))?$'                   # everything up to eol
-        )
-
-    def _read(self, fp, fpname):
-        """Parse a sectioned setup file.
-
-        The sections in setup file contains a title line at the top,
-        indicated by a name in square brackets (`[]'), plus key/value
-        options lines, indicated by `name: value' format lines.
-        Continuations are represented by an embedded newline then
-        leading whitespace.  Blank lines, lines beginning with a '#',
-        and just about everything else are ignored.
-        """
-        cursect = None                        # None, or a dictionary
-        optname = None
-        lineno = 0
-        e = None                              # None, or an exception
-        while True:
-            line = fp.readline()
-            if not line:
-                break
-            lineno = lineno + 1
-            # comment or blank line?
-            if line.strip() == '' or line[0] in '#;':
-                continue
-            if line.split(None, 1)[0].lower() == 'rem' and line[0] in "rR":
-                # no leading whitespace
-                continue
-            # continuation line?
-            if line[0].isspace() and cursect is not None and optname:
-                value = line.strip()
-                if value:
-                    cursect[optname].append(value)
-            # a section header or option header?
-            else:
-                # is it a section header?
-                mo = self.SECTCRE.match(line)
-                if mo:
-                    sectname = mo.group('header')
-                    if sectname in self._sections:
-                        cursect = self._sections[sectname]
-                    elif sectname == DEFAULTSECT:
-                        cursect = self._defaults
-                    else:
-                        cursect = self._dict()
-                        cursect['__name__'] = sectname
-                        self._sections[sectname] = cursect
-                    # So sections can't start with a continuation line
-                    optname = None
-                # no section header in the file?
-                elif cursect is None:
-                    raise MissingSectionHeaderError(fpname, lineno, line)
-                # an option line?
-                else:
-                    mo = self._optcre.match(line)
-                    if mo:
-                        optname, vi, optval = mo.group('option', 'vi', 'value')
-                        optname = self.optionxform(optname.rstrip())
-                        # This check is fine because the OPTCRE cannot
-                        # match if it would set optval to None
-                        if optval is not None:
-                            if vi in ('=', ':') and ';' in optval:
-                                # ';' is a comment delimiter only if it follows
-                                # a spacing character
-                                pos = optval.find(';')
-                                if pos != -1 and optval[pos-1].isspace():
-                                    optval = optval[:pos]
-                            optval = optval.strip()
-                            # allow empty values
-                            if optval == '""':
-                                optval = ''
-                            cursect[optname] = [optval]
-                        else:
-                            # valueless option handling
-                            cursect[optname] = optval
-                    else:
-                        # a non-fatal parsing error occurred.  set up the
-                        # exception but keep going. the exception will be
-                        # raised at the end of the file and will contain a
-                        # list of all bogus lines
-                        if not e:
-                            e = ParsingError(fpname)
-                        e.append(lineno, repr(line))
-        # if any parsing errors occurred, raise an exception
-        if e:
-            raise e
-
-        # join the multi-line values collected while reading
-        all_sections = [self._defaults]
-        all_sections.extend(self._sections.values())
-        for options in all_sections:
-            for name, val in options.items():
-                if isinstance(val, list):
-                    options[name] = '\n'.join(val)
-
-import UserDict as _UserDict
-
-class _Chainmap(_UserDict.DictMixin):
-    """Combine multiple mappings for successive lookups.
-
-    For example, to emulate Python's normal lookup sequence:
-
-        import __builtin__
-        pylookup = _Chainmap(locals(), globals(), vars(__builtin__))
-    """
-
-    def __init__(self, *maps):
-        self._maps = maps
-
-    def __getitem__(self, key):
-        for mapping in self._maps:
-            try:
-                return mapping[key]
-            except KeyError:
-                pass
-        raise KeyError(key)
-
-    def keys(self):
-        result = []
-        seen = set()
-        for mapping in self_maps:
-            for key in mapping:
-                if key not in seen:
-                    result.append(key)
-                    seen.add(key)
-        return result
-
-class ConfigParser(RawConfigParser):
-
-    def get(self, section, option, raw=False, vars=None):
-        """Get an option value for a given section.
-
-        If `vars' is provided, it must be a dictionary. The option is looked up
-        in `vars' (if provided), `section', and in `defaults' in that order.
-
-        All % interpolations are expanded in the return values, unless the
-        optional argument `raw' is true. Values for interpolation keys are
-        looked up in the same manner as the option.
-
-        The section DEFAULT is special.
-        """
-        sectiondict = {}
-        try:
-            sectiondict = self._sections[section]
-        except KeyError:
-            if section != DEFAULTSECT:
-                raise NoSectionError(section)
-        # Update with the entry specific variables
-        vardict = {}
-        if vars:
-            for key, value in vars.items():
-                vardict[self.optionxform(key)] = value
-        d = _Chainmap(vardict, sectiondict, self._defaults)
-        option = self.optionxform(option)
-        try:
-            value = d[option]
-        except KeyError:
-            raise NoOptionError(option, section)
-
-        if raw or value is None:
-            return value
-        else:
-            return self._interpolate(section, option, value, d)
-
-    def items(self, section, raw=False, vars=None):
-        """Return a list of tuples with (name, value) for each option
-        in the section.
-
-        All % interpolations are expanded in the return values, based on the
-        defaults passed into the constructor, unless the optional argument
-        `raw' is true.  Additional substitutions may be provided using the
-        `vars' argument, which must be a dictionary whose contents overrides
-        any pre-existing defaults.
-
-        The section DEFAULT is special.
-        """
-        d = self._defaults.copy()
-        try:
-            d.update(self._sections[section])
-        except KeyError:
-            if section != DEFAULTSECT:
-                raise NoSectionError(section)
-        # Update with the entry specific variables
-        if vars:
-            for key, value in vars.items():
-                d[self.optionxform(key)] = value
-        options = d.keys()
-        if "__name__" in options:
-            options.remove("__name__")
-        if raw:
-            return [(option, d[option])
-                    for option in options]
-        else:
-            return [(option, self._interpolate(section, option, d[option], d))
-                    for option in options]
-
-    def _interpolate(self, section, option, rawval, vars):
-        # do the string interpolation
-        value = rawval
-        depth = MAX_INTERPOLATION_DEPTH
-        while depth:                    # Loop through this until it's done
-            depth -= 1
-            if value and "%(" in value:
-                value = self._KEYCRE.sub(self._interpolation_replace, value)
-                try:
-                    value = value % vars
-                except KeyError, e:
-                    raise InterpolationMissingOptionError(
-                        option, section, rawval, e.args[0])
-            else:
-                break
-        if value and "%(" in value:
-            raise InterpolationDepthError(option, section, rawval)
-        return value
-
-    _KEYCRE = re.compile(r"%\(([^)]*)\)s|.")
-
-    def _interpolation_replace(self, match):
-        s = match.group(1)
-        if s is None:
-            return match.group()
-        else:
-            return "%%(%s)s" % self.optionxform(s)
-
-
-class SafeConfigParser(ConfigParser):
-
-    def _interpolate(self, section, option, rawval, vars):
-        # do the string interpolation
-        L = []
-        self._interpolate_some(option, L, rawval, section, vars, 1)
-        return ''.join(L)
-
-    _interpvar_re = re.compile(r"%\(([^)]+)\)s")
-
-    def _interpolate_some(self, option, accum, rest, section, map, depth):
-        if depth > MAX_INTERPOLATION_DEPTH:
-            raise InterpolationDepthError(option, section, rest)
-        while rest:
-            p = rest.find("%")
-            if p < 0:
-                accum.append(rest)
-                return
-            if p > 0:
-                accum.append(rest[:p])
-                rest = rest[p:]
-            # p is no longer used
-            c = rest[1:2]
-            if c == "%":
-                accum.append("%")
-                rest = rest[2:]
-            elif c == "(":
-                m = self._interpvar_re.match(rest)
-                if m is None:
-                    raise InterpolationSyntaxError(option, section,
-                        "bad interpolation variable reference %r" % rest)
-                var = self.optionxform(m.group(1))
-                rest = rest[m.end():]
-                try:
-                    v = map[var]
-                except KeyError:
-                    raise InterpolationMissingOptionError(
-                        option, section, rest, var)
-                if "%" in v:
-                    self._interpolate_some(option, accum, v,
-                                           section, map, depth + 1)
-                else:
-                    accum.append(v)
-            else:
-                raise InterpolationSyntaxError(
-                    option, section,
-                    "'%%' must be followed by '%%' or '(', found: %r" % (rest,))
-
-    def set(self, section, option, value=None):
-        """Set an option.  Extend ConfigParser.set: check for string values."""
-        # The only legal non-string value if we allow valueless
-        # options is None, so we need to check if the value is a
-        # string if:
-        # - we do not allow valueless options, or
-        # - we allow valueless options but the value is not None
-        if self._optcre is self.OPTCRE or value:
-            if not isinstance(value, basestring):
-                raise TypeError("option values must be strings")
-        if value is not None:
-            # check for bad percent signs:
-            # first, replace all "good" interpolations
-            tmp_value = value.replace('%%', '')
-            tmp_value = self._interpvar_re.sub('', tmp_value)
-            # then, check if there's a lone percent sign left
-            if '%' in tmp_value:
-                raise ValueError("invalid interpolation syntax in %r at "
-                                "position %d" % (value, tmp_value.find('%')))
-        ConfigParser.set(self, section, option, value)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/Cookie.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/Cookie.py
deleted file mode 100644
index 3377f5b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/Cookie.py
+++ /dev/null
@@ -1,761 +0,0 @@
-#!/usr/bin/env python
-#
-
-####
-# Copyright 2000 by Timothy O'Malley <timo@alum.mit.edu>
-#
-#                All Rights Reserved
-#
-# Permission to use, copy, modify, and distribute this software
-# and its documentation for any purpose and without fee is hereby
-# granted, provided that the above copyright notice appear in all
-# copies and that both that copyright notice and this permission
-# notice appear in supporting documentation, and that the name of
-# Timothy O'Malley  not be used in advertising or publicity
-# pertaining to distribution of the software without specific, written
-# prior permission.
-#
-# Timothy O'Malley DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS, IN NO EVENT SHALL Timothy O'Malley BE LIABLE FOR
-# ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-#
-####
-#
-# Id: Cookie.py,v 2.29 2000/08/23 05:28:49 timo Exp
-#   by Timothy O'Malley <timo@alum.mit.edu>
-#
-#  Cookie.py is a Python module for the handling of HTTP
-#  cookies as a Python dictionary.  See RFC 2109 for more
-#  information on cookies.
-#
-#  The original idea to treat Cookies as a dictionary came from
-#  Dave Mitchell (davem@magnet.com) in 1995, when he released the
-#  first version of nscookie.py.
-#
-####
-
-r"""
-Here's a sample session to show how to use this module.
-At the moment, this is the only documentation.
-
-The Basics
-----------
-
-Importing is easy..
-
-   >>> import Cookie
-
-Most of the time you start by creating a cookie.  Cookies come in
-three flavors, each with slightly different encoding semantics, but
-more on that later.
-
-   >>> C = Cookie.SimpleCookie()
-   >>> C = Cookie.SerialCookie()
-   >>> C = Cookie.SmartCookie()
-
-[Note: Long-time users of Cookie.py will remember using
-Cookie.Cookie() to create an Cookie object.  Although deprecated, it
-is still supported by the code.  See the Backward Compatibility notes
-for more information.]
-
-Once you've created your Cookie, you can add values just as if it were
-a dictionary.
-
-   >>> C = Cookie.SmartCookie()
-   >>> C["fig"] = "newton"
-   >>> C["sugar"] = "wafer"
-   >>> C.output()
-   'Set-Cookie: fig=newton\r\nSet-Cookie: sugar=wafer'
-
-Notice that the printable representation of a Cookie is the
-appropriate format for a Set-Cookie: header.  This is the
-default behavior.  You can change the header and printed
-attributes by using the .output() function
-
-   >>> C = Cookie.SmartCookie()
-   >>> C["rocky"] = "road"
-   >>> C["rocky"]["path"] = "/cookie"
-   >>> print C.output(header="Cookie:")
-   Cookie: rocky=road; Path=/cookie
-   >>> print C.output(attrs=[], header="Cookie:")
-   Cookie: rocky=road
-
-The load() method of a Cookie extracts cookies from a string.  In a
-CGI script, you would use this method to extract the cookies from the
-HTTP_COOKIE environment variable.
-
-   >>> C = Cookie.SmartCookie()
-   >>> C.load("chips=ahoy; vienna=finger")
-   >>> C.output()
-   'Set-Cookie: chips=ahoy\r\nSet-Cookie: vienna=finger'
-
-The load() method is darn-tootin smart about identifying cookies
-within a string.  Escaped quotation marks, nested semicolons, and other
-such trickeries do not confuse it.
-
-   >>> C = Cookie.SmartCookie()
-   >>> C.load('keebler="E=everybody; L=\\"Loves\\"; fudge=\\012;";')
-   >>> print C
-   Set-Cookie: keebler="E=everybody; L=\"Loves\"; fudge=\012;"
-
-Each element of the Cookie also supports all of the RFC 2109
-Cookie attributes.  Here's an example which sets the Path
-attribute.
-
-   >>> C = Cookie.SmartCookie()
-   >>> C["oreo"] = "doublestuff"
-   >>> C["oreo"]["path"] = "/"
-   >>> print C
-   Set-Cookie: oreo=doublestuff; Path=/
-
-Each dictionary element has a 'value' attribute, which gives you
-back the value associated with the key.
-
-   >>> C = Cookie.SmartCookie()
-   >>> C["twix"] = "none for you"
-   >>> C["twix"].value
-   'none for you'
-
-
-A Bit More Advanced
--------------------
-
-As mentioned before, there are three different flavors of Cookie
-objects, each with different encoding/decoding semantics.  This
-section briefly discusses the differences.
-
-SimpleCookie
-
-The SimpleCookie expects that all values should be standard strings.
-Just to be sure, SimpleCookie invokes the str() builtin to convert
-the value to a string, when the values are set dictionary-style.
-
-   >>> C = Cookie.SimpleCookie()
-   >>> C["number"] = 7
-   >>> C["string"] = "seven"
-   >>> C["number"].value
-   '7'
-   >>> C["string"].value
-   'seven'
-   >>> C.output()
-   'Set-Cookie: number=7\r\nSet-Cookie: string=seven'
-
-
-SerialCookie
-
-The SerialCookie expects that all values should be serialized using
-cPickle (or pickle, if cPickle isn't available).  As a result of
-serializing, SerialCookie can save almost any Python object to a
-value, and recover the exact same object when the cookie has been
-returned.  (SerialCookie can yield some strange-looking cookie
-values, however.)
-
-   >>> C = Cookie.SerialCookie()
-   >>> C["number"] = 7
-   >>> C["string"] = "seven"
-   >>> C["number"].value
-   7
-   >>> C["string"].value
-   'seven'
-   >>> C.output()
-   'Set-Cookie: number="I7\\012."\r\nSet-Cookie: string="S\'seven\'\\012p1\\012."'
-
-Be warned, however, if SerialCookie cannot de-serialize a value (because
-it isn't a valid pickle'd object), IT WILL RAISE AN EXCEPTION.
-
-
-SmartCookie
-
-The SmartCookie combines aspects of each of the other two flavors.
-When setting a value in a dictionary-fashion, the SmartCookie will
-serialize (ala cPickle) the value *if and only if* it isn't a
-Python string.  String objects are *not* serialized.  Similarly,
-when the load() method parses out values, it attempts to de-serialize
-the value.  If it fails, then it fallsback to treating the value
-as a string.
-
-   >>> C = Cookie.SmartCookie()
-   >>> C["number"] = 7
-   >>> C["string"] = "seven"
-   >>> C["number"].value
-   7
-   >>> C["string"].value
-   'seven'
-   >>> C.output()
-   'Set-Cookie: number="I7\\012."\r\nSet-Cookie: string=seven'
-
-
-Backwards Compatibility
------------------------
-
-In order to keep compatibilty with earlier versions of Cookie.py,
-it is still possible to use Cookie.Cookie() to create a Cookie.  In
-fact, this simply returns a SmartCookie.
-
-   >>> C = Cookie.Cookie()
-   >>> print C.__class__.__name__
-   SmartCookie
-
-
-Finis.
-"""  #"
-#     ^
-#     |----helps out font-lock
-
-#
-# Import our required modules
-#
-import string
-
-try:
-    from cPickle import dumps, loads
-except ImportError:
-    from pickle import dumps, loads
-
-import re, warnings
-
-__all__ = ["CookieError","BaseCookie","SimpleCookie","SerialCookie",
-           "SmartCookie","Cookie"]
-
-_nulljoin = ''.join
-_semispacejoin = '; '.join
-_spacejoin = ' '.join
-
-#
-# Define an exception visible to External modules
-#
-class CookieError(Exception):
-    pass
-
-
-# These quoting routines conform to the RFC2109 specification, which in
-# turn references the character definitions from RFC2068.  They provide
-# a two-way quoting algorithm.  Any non-text character is translated
-# into a 4 character sequence: a forward-slash followed by the
-# three-digit octal equivalent of the character.  Any '\' or '"' is
-# quoted with a preceeding '\' slash.
-#
-# These are taken from RFC2068 and RFC2109.
-#       _LegalChars       is the list of chars which don't require "'s
-#       _Translator       hash-table for fast quoting
-#
-_LegalChars       = string.ascii_letters + string.digits + "!#$%&'*+-.^_`|~"
-_Translator       = {
-    '\000' : '\\000',  '\001' : '\\001',  '\002' : '\\002',
-    '\003' : '\\003',  '\004' : '\\004',  '\005' : '\\005',
-    '\006' : '\\006',  '\007' : '\\007',  '\010' : '\\010',
-    '\011' : '\\011',  '\012' : '\\012',  '\013' : '\\013',
-    '\014' : '\\014',  '\015' : '\\015',  '\016' : '\\016',
-    '\017' : '\\017',  '\020' : '\\020',  '\021' : '\\021',
-    '\022' : '\\022',  '\023' : '\\023',  '\024' : '\\024',
-    '\025' : '\\025',  '\026' : '\\026',  '\027' : '\\027',
-    '\030' : '\\030',  '\031' : '\\031',  '\032' : '\\032',
-    '\033' : '\\033',  '\034' : '\\034',  '\035' : '\\035',
-    '\036' : '\\036',  '\037' : '\\037',
-
-    # Because of the way browsers really handle cookies (as opposed
-    # to what the RFC says) we also encode , and ;
-
-    ',' : '\\054', ';' : '\\073',
-
-    '"' : '\\"',       '\\' : '\\\\',
-
-    '\177' : '\\177',  '\200' : '\\200',  '\201' : '\\201',
-    '\202' : '\\202',  '\203' : '\\203',  '\204' : '\\204',
-    '\205' : '\\205',  '\206' : '\\206',  '\207' : '\\207',
-    '\210' : '\\210',  '\211' : '\\211',  '\212' : '\\212',
-    '\213' : '\\213',  '\214' : '\\214',  '\215' : '\\215',
-    '\216' : '\\216',  '\217' : '\\217',  '\220' : '\\220',
-    '\221' : '\\221',  '\222' : '\\222',  '\223' : '\\223',
-    '\224' : '\\224',  '\225' : '\\225',  '\226' : '\\226',
-    '\227' : '\\227',  '\230' : '\\230',  '\231' : '\\231',
-    '\232' : '\\232',  '\233' : '\\233',  '\234' : '\\234',
-    '\235' : '\\235',  '\236' : '\\236',  '\237' : '\\237',
-    '\240' : '\\240',  '\241' : '\\241',  '\242' : '\\242',
-    '\243' : '\\243',  '\244' : '\\244',  '\245' : '\\245',
-    '\246' : '\\246',  '\247' : '\\247',  '\250' : '\\250',
-    '\251' : '\\251',  '\252' : '\\252',  '\253' : '\\253',
-    '\254' : '\\254',  '\255' : '\\255',  '\256' : '\\256',
-    '\257' : '\\257',  '\260' : '\\260',  '\261' : '\\261',
-    '\262' : '\\262',  '\263' : '\\263',  '\264' : '\\264',
-    '\265' : '\\265',  '\266' : '\\266',  '\267' : '\\267',
-    '\270' : '\\270',  '\271' : '\\271',  '\272' : '\\272',
-    '\273' : '\\273',  '\274' : '\\274',  '\275' : '\\275',
-    '\276' : '\\276',  '\277' : '\\277',  '\300' : '\\300',
-    '\301' : '\\301',  '\302' : '\\302',  '\303' : '\\303',
-    '\304' : '\\304',  '\305' : '\\305',  '\306' : '\\306',
-    '\307' : '\\307',  '\310' : '\\310',  '\311' : '\\311',
-    '\312' : '\\312',  '\313' : '\\313',  '\314' : '\\314',
-    '\315' : '\\315',  '\316' : '\\316',  '\317' : '\\317',
-    '\320' : '\\320',  '\321' : '\\321',  '\322' : '\\322',
-    '\323' : '\\323',  '\324' : '\\324',  '\325' : '\\325',
-    '\326' : '\\326',  '\327' : '\\327',  '\330' : '\\330',
-    '\331' : '\\331',  '\332' : '\\332',  '\333' : '\\333',
-    '\334' : '\\334',  '\335' : '\\335',  '\336' : '\\336',
-    '\337' : '\\337',  '\340' : '\\340',  '\341' : '\\341',
-    '\342' : '\\342',  '\343' : '\\343',  '\344' : '\\344',
-    '\345' : '\\345',  '\346' : '\\346',  '\347' : '\\347',
-    '\350' : '\\350',  '\351' : '\\351',  '\352' : '\\352',
-    '\353' : '\\353',  '\354' : '\\354',  '\355' : '\\355',
-    '\356' : '\\356',  '\357' : '\\357',  '\360' : '\\360',
-    '\361' : '\\361',  '\362' : '\\362',  '\363' : '\\363',
-    '\364' : '\\364',  '\365' : '\\365',  '\366' : '\\366',
-    '\367' : '\\367',  '\370' : '\\370',  '\371' : '\\371',
-    '\372' : '\\372',  '\373' : '\\373',  '\374' : '\\374',
-    '\375' : '\\375',  '\376' : '\\376',  '\377' : '\\377'
-    }
-
-_idmap = ''.join(chr(x) for x in xrange(256))
-
-def _quote(str, LegalChars=_LegalChars,
-           idmap=_idmap, translate=string.translate):
-    #
-    # If the string does not need to be double-quoted,
-    # then just return the string.  Otherwise, surround
-    # the string in doublequotes and precede quote (with a \)
-    # special characters.
-    #
-    if "" == translate(str, idmap, LegalChars):
-        return str
-    else:
-        return '"' + _nulljoin( map(_Translator.get, str, str) ) + '"'
-# end _quote
-
-
-_OctalPatt = re.compile(r"\\[0-3][0-7][0-7]")
-_QuotePatt = re.compile(r"[\\].")
-
-def _unquote(str):
-    # If there aren't any doublequotes,
-    # then there can't be any special characters.  See RFC 2109.
-    if  len(str) < 2:
-        return str
-    if str[0] != '"' or str[-1] != '"':
-        return str
-
-    # We have to assume that we must decode this string.
-    # Down to work.
-
-    # Remove the "s
-    str = str[1:-1]
-
-    # Check for special sequences.  Examples:
-    #    \012 --> \n
-    #    \"   --> "
-    #
-    i = 0
-    n = len(str)
-    res = []
-    while 0 <= i < n:
-        Omatch = _OctalPatt.search(str, i)
-        Qmatch = _QuotePatt.search(str, i)
-        if not Omatch and not Qmatch:              # Neither matched
-            res.append(str[i:])
-            break
-        # else:
-        j = k = -1
-        if Omatch: j = Omatch.start(0)
-        if Qmatch: k = Qmatch.start(0)
-        if Qmatch and ( not Omatch or k < j ):     # QuotePatt matched
-            res.append(str[i:k])
-            res.append(str[k+1])
-            i = k+2
-        else:                                      # OctalPatt matched
-            res.append(str[i:j])
-            res.append( chr( int(str[j+1:j+4], 8) ) )
-            i = j+4
-    return _nulljoin(res)
-# end _unquote
-
-# The _getdate() routine is used to set the expiration time in
-# the cookie's HTTP header.      By default, _getdate() returns the
-# current time in the appropriate "expires" format for a
-# Set-Cookie header.     The one optional argument is an offset from
-# now, in seconds.      For example, an offset of -3600 means "one hour ago".
-# The offset may be a floating point number.
-#
-
-_weekdayname = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
-
-_monthname = [None,
-              'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
-              'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
-
-def _getdate(future=0, weekdayname=_weekdayname, monthname=_monthname):
-    from time import gmtime, time
-    now = time()
-    year, month, day, hh, mm, ss, wd, y, z = gmtime(now + future)
-    return "%s, %02d-%3s-%4d %02d:%02d:%02d GMT" % \
-           (weekdayname[wd], day, monthname[month], year, hh, mm, ss)
-
-
-#
-# A class to hold ONE key,value pair.
-# In a cookie, each such pair may have several attributes.
-#       so this class is used to keep the attributes associated
-#       with the appropriate key,value pair.
-# This class also includes a coded_value attribute, which
-#       is used to hold the network representation of the
-#       value.  This is most useful when Python objects are
-#       pickled for network transit.
-#
-
-class Morsel(dict):
-    # RFC 2109 lists these attributes as reserved:
-    #   path       comment         domain
-    #   max-age    secure      version
-    #
-    # For historical reasons, these attributes are also reserved:
-    #   expires
-    #
-    # This is an extension from Microsoft:
-    #   httponly
-    #
-    # This dictionary provides a mapping from the lowercase
-    # variant on the left to the appropriate traditional
-    # formatting on the right.
-    _reserved = { "expires" : "expires",
-                   "path"        : "Path",
-                   "comment" : "Comment",
-                   "domain"      : "Domain",
-                   "max-age" : "Max-Age",
-                   "secure"      : "secure",
-                   "httponly"  : "httponly",
-                   "version" : "Version",
-                   }
-
-    def __init__(self):
-        # Set defaults
-        self.key = self.value = self.coded_value = None
-
-        # Set default attributes
-        for K in self._reserved:
-            dict.__setitem__(self, K, "")
-    # end __init__
-
-    def __setitem__(self, K, V):
-        K = K.lower()
-        if not K in self._reserved:
-            raise CookieError("Invalid Attribute %s" % K)
-        dict.__setitem__(self, K, V)
-    # end __setitem__
-
-    def isReservedKey(self, K):
-        return K.lower() in self._reserved
-    # end isReservedKey
-
-    def set(self, key, val, coded_val,
-            LegalChars=_LegalChars,
-            idmap=_idmap, translate=string.translate):
-        # First we verify that the key isn't a reserved word
-        # Second we make sure it only contains legal characters
-        if key.lower() in self._reserved:
-            raise CookieError("Attempt to set a reserved key: %s" % key)
-        if "" != translate(key, idmap, LegalChars):
-            raise CookieError("Illegal key value: %s" % key)
-
-        # It's a good key, so save it.
-        self.key                 = key
-        self.value               = val
-        self.coded_value         = coded_val
-    # end set
-
-    def output(self, attrs=None, header = "Set-Cookie:"):
-        return "%s %s" % ( header, self.OutputString(attrs) )
-
-    __str__ = output
-
-    def __repr__(self):
-        return '<%s: %s=%s>' % (self.__class__.__name__,
-                                self.key, repr(self.value) )
-
-    def js_output(self, attrs=None):
-        # Print javascript
-        return """
-        <script type="text/javascript">
-        <!-- begin hiding
-        document.cookie = \"%s\";
-        // end hiding -->
-        </script>
-        """ % ( self.OutputString(attrs).replace('"',r'\"'), )
-    # end js_output()
-
-    def OutputString(self, attrs=None):
-        # Build up our result
-        #
-        result = []
-        RA = result.append
-
-        # First, the key=value pair
-        RA("%s=%s" % (self.key, self.coded_value))
-
-        # Now add any defined attributes
-        if attrs is None:
-            attrs = self._reserved
-        items = self.items()
-        items.sort()
-        for K,V in items:
-            if V == "": continue
-            if K not in attrs: continue
-            if K == "expires" and type(V) == type(1):
-                RA("%s=%s" % (self._reserved[K], _getdate(V)))
-            elif K == "max-age" and type(V) == type(1):
-                RA("%s=%d" % (self._reserved[K], V))
-            elif K == "secure":
-                RA(str(self._reserved[K]))
-            elif K == "httponly":
-                RA(str(self._reserved[K]))
-            else:
-                RA("%s=%s" % (self._reserved[K], V))
-
-        # Return the result
-        return _semispacejoin(result)
-    # end OutputString
-# end Morsel class
-
-
-
-#
-# Pattern for finding cookie
-#
-# This used to be strict parsing based on the RFC2109 and RFC2068
-# specifications.  I have since discovered that MSIE 3.0x doesn't
-# follow the character rules outlined in those specs.  As a
-# result, the parsing rules here are less strict.
-#
-
-_LegalCharsPatt  = r"[\w\d!#%&'~_`><@,:/\$\*\+\-\.\^\|\)\(\?\}\{\=]"
-_CookiePattern = re.compile(
-    r"(?x)"                       # This is a Verbose pattern
-    r"(?P<key>"                   # Start of group 'key'
-    ""+ _LegalCharsPatt +"+?"     # Any word of at least one letter, nongreedy
-    r")"                          # End of group 'key'
-    r"\s*=\s*"                    # Equal Sign
-    r"(?P<val>"                   # Start of group 'val'
-    r'"(?:[^\\"]|\\.)*"'            # Any doublequoted string
-    r"|"                            # or
-    r"\w{3},\s[\w\d-]{9,11}\s[\d:]{8}\sGMT" # Special case for "expires" attr
-    r"|"                            # or
-    ""+ _LegalCharsPatt +"*"        # Any word or empty string
-    r")"                          # End of group 'val'
-    r"\s*;?"                      # Probably ending in a semi-colon
-    )
-
-
-# At long last, here is the cookie class.
-#   Using this class is almost just like using a dictionary.
-# See this module's docstring for example usage.
-#
-class BaseCookie(dict):
-    # A container class for a set of Morsels
-    #
-
-    def value_decode(self, val):
-        """real_value, coded_value = value_decode(STRING)
-        Called prior to setting a cookie's value from the network
-        representation.  The VALUE is the value read from HTTP
-        header.
-        Override this function to modify the behavior of cookies.
-        """
-        return val, val
-    # end value_encode
-
-    def value_encode(self, val):
-        """real_value, coded_value = value_encode(VALUE)
-        Called prior to setting a cookie's value from the dictionary
-        representation.  The VALUE is the value being assigned.
-        Override this function to modify the behavior of cookies.
-        """
-        strval = str(val)
-        return strval, strval
-    # end value_encode
-
-    def __init__(self, input=None):
-        if input: self.load(input)
-    # end __init__
-
-    def __set(self, key, real_value, coded_value):
-        """Private method for setting a cookie's value"""
-        M = self.get(key, Morsel())
-        M.set(key, real_value, coded_value)
-        dict.__setitem__(self, key, M)
-    # end __set
-
-    def __setitem__(self, key, value):
-        """Dictionary style assignment."""
-        rval, cval = self.value_encode(value)
-        self.__set(key, rval, cval)
-    # end __setitem__
-
-    def output(self, attrs=None, header="Set-Cookie:", sep="\015\012"):
-        """Return a string suitable for HTTP."""
-        result = []
-        items = self.items()
-        items.sort()
-        for K,V in items:
-            result.append( V.output(attrs, header) )
-        return sep.join(result)
-    # end output
-
-    __str__ = output
-
-    def __repr__(self):
-        L = []
-        items = self.items()
-        items.sort()
-        for K,V in items:
-            L.append( '%s=%s' % (K,repr(V.value) ) )
-        return '<%s: %s>' % (self.__class__.__name__, _spacejoin(L))
-
-    def js_output(self, attrs=None):
-        """Return a string suitable for JavaScript."""
-        result = []
-        items = self.items()
-        items.sort()
-        for K,V in items:
-            result.append( V.js_output(attrs) )
-        return _nulljoin(result)
-    # end js_output
-
-    def load(self, rawdata):
-        """Load cookies from a string (presumably HTTP_COOKIE) or
-        from a dictionary.  Loading cookies from a dictionary 'd'
-        is equivalent to calling:
-            map(Cookie.__setitem__, d.keys(), d.values())
-        """
-        if type(rawdata) == type(""):
-            self.__ParseString(rawdata)
-        else:
-            # self.update() wouldn't call our custom __setitem__
-            for k, v in rawdata.items():
-                self[k] = v
-        return
-    # end load()
-
-    def __ParseString(self, str, patt=_CookiePattern):
-        i = 0            # Our starting point
-        n = len(str)     # Length of string
-        M = None         # current morsel
-
-        while 0 <= i < n:
-            # Start looking for a cookie
-            match = patt.search(str, i)
-            if not match: break          # No more cookies
-
-            K,V = match.group("key"), match.group("val")
-            i = match.end(0)
-
-            # Parse the key, value in case it's metainfo
-            if K[0] == "$":
-                # We ignore attributes which pertain to the cookie
-                # mechanism as a whole.  See RFC 2109.
-                # (Does anyone care?)
-                if M:
-                    M[ K[1:] ] = V
-            elif K.lower() in Morsel._reserved:
-                if M:
-                    M[ K ] = _unquote(V)
-            else:
-                rval, cval = self.value_decode(V)
-                self.__set(K, rval, cval)
-                M = self[K]
-    # end __ParseString
-# end BaseCookie class
-
-class SimpleCookie(BaseCookie):
-    """SimpleCookie
-    SimpleCookie supports strings as cookie values.  When setting
-    the value using the dictionary assignment notation, SimpleCookie
-    calls the builtin str() to convert the value to a string.  Values
-    received from HTTP are kept as strings.
-    """
-    def value_decode(self, val):
-        return _unquote( val ), val
-    def value_encode(self, val):
-        strval = str(val)
-        return strval, _quote( strval )
-# end SimpleCookie
-
-class SerialCookie(BaseCookie):
-    """SerialCookie
-    SerialCookie supports arbitrary objects as cookie values. All
-    values are serialized (using cPickle) before being sent to the
-    client.  All incoming values are assumed to be valid Pickle
-    representations.  IF AN INCOMING VALUE IS NOT IN A VALID PICKLE
-    FORMAT, THEN AN EXCEPTION WILL BE RAISED.
-
-    Note: Large cookie values add overhead because they must be
-    retransmitted on every HTTP transaction.
-
-    Note: HTTP has a 2k limit on the size of a cookie.  This class
-    does not check for this limit, so be careful!!!
-    """
-    def __init__(self, input=None):
-        warnings.warn("SerialCookie class is insecure; do not use it",
-                      DeprecationWarning)
-        BaseCookie.__init__(self, input)
-    # end __init__
-    def value_decode(self, val):
-        # This could raise an exception!
-        return loads( _unquote(val) ), val
-    def value_encode(self, val):
-        return val, _quote( dumps(val) )
-# end SerialCookie
-
-class SmartCookie(BaseCookie):
-    """SmartCookie
-    SmartCookie supports arbitrary objects as cookie values.  If the
-    object is a string, then it is quoted.  If the object is not a
-    string, however, then SmartCookie will use cPickle to serialize
-    the object into a string representation.
-
-    Note: Large cookie values add overhead because they must be
-    retransmitted on every HTTP transaction.
-
-    Note: HTTP has a 2k limit on the size of a cookie.  This class
-    does not check for this limit, so be careful!!!
-    """
-    def __init__(self, input=None):
-        warnings.warn("Cookie/SmartCookie class is insecure; do not use it",
-                      DeprecationWarning)
-        BaseCookie.__init__(self, input)
-    # end __init__
-    def value_decode(self, val):
-        strval = _unquote(val)
-        try:
-            return loads(strval), val
-        except:
-            return strval, val
-    def value_encode(self, val):
-        if type(val) == type(""):
-            return val, _quote(val)
-        else:
-            return val, _quote( dumps(val) )
-# end SmartCookie
-
-
-###########################################################
-# Backwards Compatibility:  Don't break any existing code!
-
-# We provide Cookie() as an alias for SmartCookie()
-Cookie = SmartCookie
-
-#
-###########################################################
-
-def _test():
-    import doctest, Cookie
-    return doctest.testmod(Cookie)
-
-if __name__ == "__main__":
-    _test()
-
-
-#Local Variables:
-#tab-width: 4
-#end:
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/DocXMLRPCServer.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/DocXMLRPCServer.py
deleted file mode 100644
index 2f74563..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/DocXMLRPCServer.py
+++ /dev/null
@@ -1,279 +0,0 @@
-"""Self documenting XML-RPC Server.
-
-This module can be used to create XML-RPC servers that
-serve pydoc-style documentation in response to HTTP
-GET requests. This documentation is dynamically generated
-based on the functions and methods registered with the
-server.
-
-This module is built upon the pydoc and SimpleXMLRPCServer
-modules.
-"""
-
-import pydoc
-import inspect
-import re
-import sys
-
-from SimpleXMLRPCServer import (SimpleXMLRPCServer,
-            SimpleXMLRPCRequestHandler,
-            CGIXMLRPCRequestHandler,
-            resolve_dotted_attribute)
-
-class ServerHTMLDoc(pydoc.HTMLDoc):
-    """Class used to generate pydoc HTML document for a server"""
-
-    def markup(self, text, escape=None, funcs={}, classes={}, methods={}):
-        """Mark up some plain text, given a context of symbols to look for.
-        Each context dictionary maps object names to anchor names."""
-        escape = escape or self.escape
-        results = []
-        here = 0
-
-        # XXX Note that this regular expression does not allow for the
-        # hyperlinking of arbitrary strings being used as method
-        # names. Only methods with names consisting of word characters
-        # and '.'s are hyperlinked.
-        pattern = re.compile(r'\b((http|ftp)://\S+[\w/]|'
-                                r'RFC[- ]?(\d+)|'
-                                r'PEP[- ]?(\d+)|'
-                                r'(self\.)?((?:\w|\.)+))\b')
-        while 1:
-            match = pattern.search(text, here)
-            if not match: break
-            start, end = match.span()
-            results.append(escape(text[here:start]))
-
-            all, scheme, rfc, pep, selfdot, name = match.groups()
-            if scheme:
-                url = escape(all).replace('"', '&quot;')
-                results.append('<a href="%s">%s</a>' % (url, url))
-            elif rfc:
-                url = 'http://www.rfc-editor.org/rfc/rfc%d.txt' % int(rfc)
-                results.append('<a href="%s">%s</a>' % (url, escape(all)))
-            elif pep:
-                url = 'http://www.python.org/dev/peps/pep-%04d/' % int(pep)
-                results.append('<a href="%s">%s</a>' % (url, escape(all)))
-            elif text[end:end+1] == '(':
-                results.append(self.namelink(name, methods, funcs, classes))
-            elif selfdot:
-                results.append('self.<strong>%s</strong>' % name)
-            else:
-                results.append(self.namelink(name, classes))
-            here = end
-        results.append(escape(text[here:]))
-        return ''.join(results)
-
-    def docroutine(self, object, name, mod=None,
-                   funcs={}, classes={}, methods={}, cl=None):
-        """Produce HTML documentation for a function or method object."""
-
-        anchor = (cl and cl.__name__ or '') + '-' + name
-        note = ''
-
-        title = '<a name="%s"><strong>%s</strong></a>' % (
-            self.escape(anchor), self.escape(name))
-
-        if inspect.ismethod(object):
-            args, varargs, varkw, defaults = inspect.getargspec(object.im_func)
-            # exclude the argument bound to the instance, it will be
-            # confusing to the non-Python user
-            argspec = inspect.formatargspec (
-                    args[1:],
-                    varargs,
-                    varkw,
-                    defaults,
-                    formatvalue=self.formatvalue
-                )
-        elif inspect.isfunction(object):
-            args, varargs, varkw, defaults = inspect.getargspec(object)
-            argspec = inspect.formatargspec(
-                args, varargs, varkw, defaults, formatvalue=self.formatvalue)
-        else:
-            argspec = '(...)'
-
-        if isinstance(object, tuple):
-            argspec = object[0] or argspec
-            docstring = object[1] or ""
-        else:
-            docstring = pydoc.getdoc(object)
-
-        decl = title + argspec + (note and self.grey(
-               '<font face="helvetica, arial">%s</font>' % note))
-
-        doc = self.markup(
-            docstring, self.preformat, funcs, classes, methods)
-        doc = doc and '<dd><tt>%s</tt></dd>' % doc
-        return '<dl><dt>%s</dt>%s</dl>\n' % (decl, doc)
-
-    def docserver(self, server_name, package_documentation, methods):
-        """Produce HTML documentation for an XML-RPC server."""
-
-        fdict = {}
-        for key, value in methods.items():
-            fdict[key] = '#-' + key
-            fdict[value] = fdict[key]
-
-        server_name = self.escape(server_name)
-        head = '<big><big><strong>%s</strong></big></big>' % server_name
-        result = self.heading(head, '#ffffff', '#7799ee')
-
-        doc = self.markup(package_documentation, self.preformat, fdict)
-        doc = doc and '<tt>%s</tt>' % doc
-        result = result + '<p>%s</p>\n' % doc
-
-        contents = []
-        method_items = sorted(methods.items())
-        for key, value in method_items:
-            contents.append(self.docroutine(value, key, funcs=fdict))
-        result = result + self.bigsection(
-            'Methods', '#ffffff', '#eeaa77', pydoc.join(contents))
-
-        return result
-
-class XMLRPCDocGenerator:
-    """Generates documentation for an XML-RPC server.
-
-    This class is designed as mix-in and should not
-    be constructed directly.
-    """
-
-    def __init__(self):
-        # setup variables used for HTML documentation
-        self.server_name = 'XML-RPC Server Documentation'
-        self.server_documentation = \
-            "This server exports the following methods through the XML-RPC "\
-            "protocol."
-        self.server_title = 'XML-RPC Server Documentation'
-
-    def set_server_title(self, server_title):
-        """Set the HTML title of the generated server documentation"""
-
-        self.server_title = server_title
-
-    def set_server_name(self, server_name):
-        """Set the name of the generated HTML server documentation"""
-
-        self.server_name = server_name
-
-    def set_server_documentation(self, server_documentation):
-        """Set the documentation string for the entire server."""
-
-        self.server_documentation = server_documentation
-
-    def generate_html_documentation(self):
-        """generate_html_documentation() => html documentation for the server
-
-        Generates HTML documentation for the server using introspection for
-        installed functions and instances that do not implement the
-        _dispatch method. Alternatively, instances can choose to implement
-        the _get_method_argstring(method_name) method to provide the
-        argument string used in the documentation and the
-        _methodHelp(method_name) method to provide the help text used
-        in the documentation."""
-
-        methods = {}
-
-        for method_name in self.system_listMethods():
-            if method_name in self.funcs:
-                method = self.funcs[method_name]
-            elif self.instance is not None:
-                method_info = [None, None] # argspec, documentation
-                if hasattr(self.instance, '_get_method_argstring'):
-                    method_info[0] = self.instance._get_method_argstring(method_name)
-                if hasattr(self.instance, '_methodHelp'):
-                    method_info[1] = self.instance._methodHelp(method_name)
-
-                method_info = tuple(method_info)
-                if method_info != (None, None):
-                    method = method_info
-                elif not hasattr(self.instance, '_dispatch'):
-                    try:
-                        method = resolve_dotted_attribute(
-                                    self.instance,
-                                    method_name
-                                    )
-                    except AttributeError:
-                        method = method_info
-                else:
-                    method = method_info
-            else:
-                assert 0, "Could not find method in self.functions and no "\
-                          "instance installed"
-
-            methods[method_name] = method
-
-        documenter = ServerHTMLDoc()
-        documentation = documenter.docserver(
-                                self.server_name,
-                                self.server_documentation,
-                                methods
-                            )
-
-        return documenter.page(self.server_title, documentation)
-
-class DocXMLRPCRequestHandler(SimpleXMLRPCRequestHandler):
-    """XML-RPC and documentation request handler class.
-
-    Handles all HTTP POST requests and attempts to decode them as
-    XML-RPC requests.
-
-    Handles all HTTP GET requests and interprets them as requests
-    for documentation.
-    """
-
-    def do_GET(self):
-        """Handles the HTTP GET request.
-
-        Interpret all HTTP GET requests as requests for server
-        documentation.
-        """
-        # Check that the path is legal
-        if not self.is_rpc_path_valid():
-            self.report_404()
-            return
-
-        response = self.server.generate_html_documentation()
-        self.send_response(200)
-        self.send_header("Content-type", "text/html")
-        self.send_header("Content-length", str(len(response)))
-        self.end_headers()
-        self.wfile.write(response)
-
-class DocXMLRPCServer(  SimpleXMLRPCServer,
-                        XMLRPCDocGenerator):
-    """XML-RPC and HTML documentation server.
-
-    Adds the ability to serve server documentation to the capabilities
-    of SimpleXMLRPCServer.
-    """
-
-    def __init__(self, addr, requestHandler=DocXMLRPCRequestHandler,
-                 logRequests=1, allow_none=False, encoding=None,
-                 bind_and_activate=True):
-        SimpleXMLRPCServer.__init__(self, addr, requestHandler, logRequests,
-                                    allow_none, encoding, bind_and_activate)
-        XMLRPCDocGenerator.__init__(self)
-
-class DocCGIXMLRPCRequestHandler(   CGIXMLRPCRequestHandler,
-                                    XMLRPCDocGenerator):
-    """Handler for XML-RPC data and documentation requests passed through
-    CGI"""
-
-    def handle_get(self):
-        """Handles the HTTP GET request.
-
-        Interpret all HTTP GET requests as requests for server
-        documentation.
-        """
-
-        response = self.generate_html_documentation()
-
-        print 'Content-Type: text/html'
-        print 'Content-Length: %d' % len(response)
-        print
-        sys.stdout.write(response)
-
-    def __init__(self):
-        CGIXMLRPCRequestHandler.__init__(self)
-        XMLRPCDocGenerator.__init__(self)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/HTMLParser.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/HTMLParser.py
deleted file mode 100644
index 4f0d5de..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/HTMLParser.py
+++ /dev/null
@@ -1,393 +0,0 @@
-"""A parser for HTML and XHTML."""
-
-# This file is based on sgmllib.py, but the API is slightly different.
-
-# XXX There should be a way to distinguish between PCDATA (parsed
-# character data -- the normal case), RCDATA (replaceable character
-# data -- only char and entity references and end tags are special)
-# and CDATA (character data -- only end tags are special).
-
-
-import markupbase
-import re
-
-# Regular expressions used for parsing
-
-interesting_normal = re.compile('[&<]')
-interesting_cdata = re.compile(r'<(/|\Z)')
-incomplete = re.compile('&[a-zA-Z#]')
-
-entityref = re.compile('&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]')
-charref = re.compile('&#(?:[0-9]+|[xX][0-9a-fA-F]+)[^0-9a-fA-F]')
-
-starttagopen = re.compile('<[a-zA-Z]')
-piclose = re.compile('>')
-commentclose = re.compile(r'--\s*>')
-tagfind = re.compile('[a-zA-Z][-.a-zA-Z0-9:_]*')
-attrfind = re.compile(
-    r'\s*([a-zA-Z_][-.:a-zA-Z_0-9]*)(\s*=\s*'
-    r'(\'[^\']*\'|"[^"]*"|[^\s"\'=<>`]*))?')
-
-locatestarttagend = re.compile(r"""
-  <[a-zA-Z][-.a-zA-Z0-9:_]*          # tag name
-  (?:\s+                             # whitespace before attribute name
-    (?:[a-zA-Z_][-.:a-zA-Z0-9_]*     # attribute name
-      (?:\s*=\s*                     # value indicator
-        (?:'[^']*'                   # LITA-enclosed value
-          |\"[^\"]*\"                # LIT-enclosed value
-          |[^'\">\s]+                # bare value
-         )
-       )?
-     )
-   )*
-  \s*                                # trailing whitespace
-""", re.VERBOSE)
-endendtag = re.compile('>')
-endtagfind = re.compile('</\s*([a-zA-Z][-.a-zA-Z0-9:_]*)\s*>')
-
-
-class HTMLParseError(Exception):
-    """Exception raised for all parse errors."""
-
-    def __init__(self, msg, position=(None, None)):
-        assert msg
-        self.msg = msg
-        self.lineno = position[0]
-        self.offset = position[1]
-
-    def __str__(self):
-        result = self.msg
-        if self.lineno is not None:
-            result = result + ", at line %d" % self.lineno
-        if self.offset is not None:
-            result = result + ", column %d" % (self.offset + 1)
-        return result
-
-
-class HTMLParser(markupbase.ParserBase):
-    """Find tags and other markup and call handler functions.
-
-    Usage:
-        p = HTMLParser()
-        p.feed(data)
-        ...
-        p.close()
-
-    Start tags are handled by calling self.handle_starttag() or
-    self.handle_startendtag(); end tags by self.handle_endtag().  The
-    data between tags is passed from the parser to the derived class
-    by calling self.handle_data() with the data as argument (the data
-    may be split up in arbitrary chunks).  Entity references are
-    passed by calling self.handle_entityref() with the entity
-    reference as the argument.  Numeric character references are
-    passed to self.handle_charref() with the string containing the
-    reference as the argument.
-    """
-
-    CDATA_CONTENT_ELEMENTS = ("script", "style")
-
-
-    def __init__(self):
-        """Initialize and reset this instance."""
-        self.reset()
-
-    def reset(self):
-        """Reset this instance.  Loses all unprocessed data."""
-        self.rawdata = ''
-        self.lasttag = '???'
-        self.interesting = interesting_normal
-        markupbase.ParserBase.reset(self)
-
-    def feed(self, data):
-        r"""Feed data to the parser.
-
-        Call this as often as you want, with as little or as much text
-        as you want (may include '\n').
-        """
-        self.rawdata = self.rawdata + data
-        self.goahead(0)
-
-    def close(self):
-        """Handle any buffered data."""
-        self.goahead(1)
-
-    def error(self, message):
-        raise HTMLParseError(message, self.getpos())
-
-    __starttag_text = None
-
-    def get_starttag_text(self):
-        """Return full source of start tag: '<...>'."""
-        return self.__starttag_text
-
-    def set_cdata_mode(self):
-        self.interesting = interesting_cdata
-
-    def clear_cdata_mode(self):
-        self.interesting = interesting_normal
-
-    # Internal -- handle data as far as reasonable.  May leave state
-    # and data to be processed by a subsequent call.  If 'end' is
-    # true, force handling all data as if followed by EOF marker.
-    def goahead(self, end):
-        rawdata = self.rawdata
-        i = 0
-        n = len(rawdata)
-        while i < n:
-            match = self.interesting.search(rawdata, i) # < or &
-            if match:
-                j = match.start()
-            else:
-                j = n
-            if i < j: self.handle_data(rawdata[i:j])
-            i = self.updatepos(i, j)
-            if i == n: break
-            startswith = rawdata.startswith
-            if startswith('<', i):
-                if starttagopen.match(rawdata, i): # < + letter
-                    k = self.parse_starttag(i)
-                elif startswith("</", i):
-                    k = self.parse_endtag(i)
-                elif startswith("<!--", i):
-                    k = self.parse_comment(i)
-                elif startswith("<?", i):
-                    k = self.parse_pi(i)
-                elif startswith("<!", i):
-                    k = self.parse_declaration(i)
-                elif (i + 1) < n:
-                    self.handle_data("<")
-                    k = i + 1
-                else:
-                    break
-                if k < 0:
-                    if end:
-                        self.error("EOF in middle of construct")
-                    break
-                i = self.updatepos(i, k)
-            elif startswith("&#", i):
-                match = charref.match(rawdata, i)
-                if match:
-                    name = match.group()[2:-1]
-                    self.handle_charref(name)
-                    k = match.end()
-                    if not startswith(';', k-1):
-                        k = k - 1
-                    i = self.updatepos(i, k)
-                    continue
-                else:
-                    if ";" in rawdata[i:]: #bail by consuming &#
-                        self.handle_data(rawdata[0:2])
-                        i = self.updatepos(i, 2)
-                    break
-            elif startswith('&', i):
-                match = entityref.match(rawdata, i)
-                if match:
-                    name = match.group(1)
-                    self.handle_entityref(name)
-                    k = match.end()
-                    if not startswith(';', k-1):
-                        k = k - 1
-                    i = self.updatepos(i, k)
-                    continue
-                match = incomplete.match(rawdata, i)
-                if match:
-                    # match.group() will contain at least 2 chars
-                    if end and match.group() == rawdata[i:]:
-                        self.error("EOF in middle of entity or char ref")
-                    # incomplete
-                    break
-                elif (i + 1) < n:
-                    # not the end of the buffer, and can't be confused
-                    # with some other construct
-                    self.handle_data("&")
-                    i = self.updatepos(i, i + 1)
-                else:
-                    break
-            else:
-                assert 0, "interesting.search() lied"
-        # end while
-        if end and i < n:
-            self.handle_data(rawdata[i:n])
-            i = self.updatepos(i, n)
-        self.rawdata = rawdata[i:]
-
-    # Internal -- parse processing instr, return end or -1 if not terminated
-    def parse_pi(self, i):
-        rawdata = self.rawdata
-        assert rawdata[i:i+2] == '<?', 'unexpected call to parse_pi()'
-        match = piclose.search(rawdata, i+2) # >
-        if not match:
-            return -1
-        j = match.start()
-        self.handle_pi(rawdata[i+2: j])
-        j = match.end()
-        return j
-
-    # Internal -- handle starttag, return end or -1 if not terminated
-    def parse_starttag(self, i):
-        self.__starttag_text = None
-        endpos = self.check_for_whole_start_tag(i)
-        if endpos < 0:
-            return endpos
-        rawdata = self.rawdata
-        self.__starttag_text = rawdata[i:endpos]
-
-        # Now parse the data between i+1 and j into a tag and attrs
-        attrs = []
-        match = tagfind.match(rawdata, i+1)
-        assert match, 'unexpected call to parse_starttag()'
-        k = match.end()
-        self.lasttag = tag = rawdata[i+1:k].lower()
-
-        while k < endpos:
-            m = attrfind.match(rawdata, k)
-            if not m:
-                break
-            attrname, rest, attrvalue = m.group(1, 2, 3)
-            if not rest:
-                attrvalue = None
-            elif attrvalue[:1] == '\'' == attrvalue[-1:] or \
-                 attrvalue[:1] == '"' == attrvalue[-1:]:
-                attrvalue = attrvalue[1:-1]
-                attrvalue = self.unescape(attrvalue)
-            attrs.append((attrname.lower(), attrvalue))
-            k = m.end()
-
-        end = rawdata[k:endpos].strip()
-        if end not in (">", "/>"):
-            lineno, offset = self.getpos()
-            if "\n" in self.__starttag_text:
-                lineno = lineno + self.__starttag_text.count("\n")
-                offset = len(self.__starttag_text) \
-                         - self.__starttag_text.rfind("\n")
-            else:
-                offset = offset + len(self.__starttag_text)
-            self.error("junk characters in start tag: %r"
-                       % (rawdata[k:endpos][:20],))
-        if end.endswith('/>'):
-            # XHTML-style empty tag: <span attr="value" />
-            self.handle_startendtag(tag, attrs)
-        else:
-            self.handle_starttag(tag, attrs)
-            if tag in self.CDATA_CONTENT_ELEMENTS:
-                self.set_cdata_mode()
-        return endpos
-
-    # Internal -- check to see if we have a complete starttag; return end
-    # or -1 if incomplete.
-    def check_for_whole_start_tag(self, i):
-        rawdata = self.rawdata
-        m = locatestarttagend.match(rawdata, i)
-        if m:
-            j = m.end()
-            next = rawdata[j:j+1]
-            if next == ">":
-                return j + 1
-            if next == "/":
-                if rawdata.startswith("/>", j):
-                    return j + 2
-                if rawdata.startswith("/", j):
-                    # buffer boundary
-                    return -1
-                # else bogus input
-                self.updatepos(i, j + 1)
-                self.error("malformed empty start tag")
-            if next == "":
-                # end of input
-                return -1
-            if next in ("abcdefghijklmnopqrstuvwxyz=/"
-                        "ABCDEFGHIJKLMNOPQRSTUVWXYZ"):
-                # end of input in or before attribute value, or we have the
-                # '/' from a '/>' ending
-                return -1
-            self.updatepos(i, j)
-            self.error("malformed start tag")
-        raise AssertionError("we should not get here!")
-
-    # Internal -- parse endtag, return end or -1 if incomplete
-    def parse_endtag(self, i):
-        rawdata = self.rawdata
-        assert rawdata[i:i+2] == "</", "unexpected call to parse_endtag"
-        match = endendtag.search(rawdata, i+1) # >
-        if not match:
-            return -1
-        j = match.end()
-        match = endtagfind.match(rawdata, i) # </ + tag + >
-        if not match:
-            self.error("bad end tag: %r" % (rawdata[i:j],))
-        tag = match.group(1)
-        self.handle_endtag(tag.lower())
-        self.clear_cdata_mode()
-        return j
-
-    # Overridable -- finish processing of start+end tag: <tag.../>
-    def handle_startendtag(self, tag, attrs):
-        self.handle_starttag(tag, attrs)
-        self.handle_endtag(tag)
-
-    # Overridable -- handle start tag
-    def handle_starttag(self, tag, attrs):
-        pass
-
-    # Overridable -- handle end tag
-    def handle_endtag(self, tag):
-        pass
-
-    # Overridable -- handle character reference
-    def handle_charref(self, name):
-        pass
-
-    # Overridable -- handle entity reference
-    def handle_entityref(self, name):
-        pass
-
-    # Overridable -- handle data
-    def handle_data(self, data):
-        pass
-
-    # Overridable -- handle comment
-    def handle_comment(self, data):
-        pass
-
-    # Overridable -- handle declaration
-    def handle_decl(self, decl):
-        pass
-
-    # Overridable -- handle processing instruction
-    def handle_pi(self, data):
-        pass
-
-    def unknown_decl(self, data):
-        self.error("unknown declaration: %r" % (data,))
-
-    # Internal -- helper to remove special character quoting
-    entitydefs = None
-    def unescape(self, s):
-        if '&' not in s:
-            return s
-        def replaceEntities(s):
-            s = s.groups()[0]
-            try:
-                if s[0] == "#":
-                    s = s[1:]
-                    if s[0] in ['x','X']:
-                        c = int(s[1:], 16)
-                    else:
-                        c = int(s)
-                    return unichr(c)
-            except ValueError:
-                return '&#'+s+';'
-            else:
-                # Cannot use name2codepoint directly, because HTMLParser supports apos,
-                # which is not part of HTML 4
-                import htmlentitydefs
-                if HTMLParser.entitydefs is None:
-                    entitydefs = HTMLParser.entitydefs = {'apos':u"'"}
-                    for k, v in htmlentitydefs.name2codepoint.iteritems():
-                        entitydefs[k] = unichr(v)
-                try:
-                    return self.entitydefs[s]
-                except KeyError:
-                    return '&'+s+';'
-
-        return re.sub(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));", replaceEntities, s)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/MimeWriter.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/MimeWriter.py
deleted file mode 100644
index 6e8bd09..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/MimeWriter.py
+++ /dev/null
@@ -1,186 +0,0 @@
-"""Generic MIME writer.
-
-This module defines the class MimeWriter.  The MimeWriter class implements
-a basic formatter for creating MIME multi-part files.  It doesn't seek around
-the output file nor does it use large amounts of buffer space. You must write
-the parts out in the order that they should occur in the final file.
-MimeWriter does buffer the headers you add, allowing you to rearrange their
-order.
-
-"""
-
-
-import mimetools
-
-__all__ = ["MimeWriter"]
-
-import warnings
-
-warnings.warn("the MimeWriter module is deprecated; use the email package instead",
-                DeprecationWarning, 2)
-
-class MimeWriter:
-
-    """Generic MIME writer.
-
-    Methods:
-
-    __init__()
-    addheader()
-    flushheaders()
-    startbody()
-    startmultipartbody()
-    nextpart()
-    lastpart()
-
-    A MIME writer is much more primitive than a MIME parser.  It
-    doesn't seek around on the output file, and it doesn't use large
-    amounts of buffer space, so you have to write the parts in the
-    order they should occur on the output file.  It does buffer the
-    headers you add, allowing you to rearrange their order.
-
-    General usage is:
-
-    f = <open the output file>
-    w = MimeWriter(f)
-    ...call w.addheader(key, value) 0 or more times...
-
-    followed by either:
-
-    f = w.startbody(content_type)
-    ...call f.write(data) for body data...
-
-    or:
-
-    w.startmultipartbody(subtype)
-    for each part:
-        subwriter = w.nextpart()
-        ...use the subwriter's methods to create the subpart...
-    w.lastpart()
-
-    The subwriter is another MimeWriter instance, and should be
-    treated in the same way as the toplevel MimeWriter.  This way,
-    writing recursive body parts is easy.
-
-    Warning: don't forget to call lastpart()!
-
-    XXX There should be more state so calls made in the wrong order
-    are detected.
-
-    Some special cases:
-
-    - startbody() just returns the file passed to the constructor;
-      but don't use this knowledge, as it may be changed.
-
-    - startmultipartbody() actually returns a file as well;
-      this can be used to write the initial 'if you can read this your
-      mailer is not MIME-aware' message.
-
-    - If you call flushheaders(), the headers accumulated so far are
-      written out (and forgotten); this is useful if you don't need a
-      body part at all, e.g. for a subpart of type message/rfc822
-      that's (mis)used to store some header-like information.
-
-    - Passing a keyword argument 'prefix=<flag>' to addheader(),
-      start*body() affects where the header is inserted; 0 means
-      append at the end, 1 means insert at the start; default is
-      append for addheader(), but insert for start*body(), which use
-      it to determine where the Content-Type header goes.
-
-    """
-
-    def __init__(self, fp):
-        self._fp = fp
-        self._headers = []
-
-    def addheader(self, key, value, prefix=0):
-        """Add a header line to the MIME message.
-
-        The key is the name of the header, where the value obviously provides
-        the value of the header. The optional argument prefix determines
-        where the header is inserted; 0 means append at the end, 1 means
-        insert at the start. The default is to append.
-
-        """
-        lines = value.split("\n")
-        while lines and not lines[-1]: del lines[-1]
-        while lines and not lines[0]: del lines[0]
-        for i in range(1, len(lines)):
-            lines[i] = "    " + lines[i].strip()
-        value = "\n".join(lines) + "\n"
-        line = key + ": " + value
-        if prefix:
-            self._headers.insert(0, line)
-        else:
-            self._headers.append(line)
-
-    def flushheaders(self):
-        """Writes out and forgets all headers accumulated so far.
-
-        This is useful if you don't need a body part at all; for example,
-        for a subpart of type message/rfc822 that's (mis)used to store some
-        header-like information.
-
-        """
-        self._fp.writelines(self._headers)
-        self._headers = []
-
-    def startbody(self, ctype, plist=[], prefix=1):
-        """Returns a file-like object for writing the body of the message.
-
-        The content-type is set to the provided ctype, and the optional
-        parameter, plist, provides additional parameters for the
-        content-type declaration.  The optional argument prefix determines
-        where the header is inserted; 0 means append at the end, 1 means
-        insert at the start. The default is to insert at the start.
-
-        """
-        for name, value in plist:
-            ctype = ctype + ';\n %s=\"%s\"' % (name, value)
-        self.addheader("Content-Type", ctype, prefix=prefix)
-        self.flushheaders()
-        self._fp.write("\n")
-        return self._fp
-
-    def startmultipartbody(self, subtype, boundary=None, plist=[], prefix=1):
-        """Returns a file-like object for writing the body of the message.
-
-        Additionally, this method initializes the multi-part code, where the
-        subtype parameter provides the multipart subtype, the boundary
-        parameter may provide a user-defined boundary specification, and the
-        plist parameter provides optional parameters for the subtype.  The
-        optional argument, prefix, determines where the header is inserted;
-        0 means append at the end, 1 means insert at the start. The default
-        is to insert at the start.  Subparts should be created using the
-        nextpart() method.
-
-        """
-        self._boundary = boundary or mimetools.choose_boundary()
-        return self.startbody("multipart/" + subtype,
-                              [("boundary", self._boundary)] + plist,
-                              prefix=prefix)
-
-    def nextpart(self):
-        """Returns a new instance of MimeWriter which represents an
-        individual part in a multipart message.
-
-        This may be used to write the part as well as used for creating
-        recursively complex multipart messages. The message must first be
-        initialized with the startmultipartbody() method before using the
-        nextpart() method.
-
-        """
-        self._fp.write("\n--" + self._boundary + "\n")
-        return self.__class__(self._fp)
-
-    def lastpart(self):
-        """This is used to designate the last part of a multipart message.
-
-        It should always be used when writing multipart messages.
-
-        """
-        self._fp.write("\n--" + self._boundary + "--\n")
-
-
-if __name__ == '__main__':
-    import test.test_MimeWriter
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/Queue.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/Queue.py
deleted file mode 100644
index 3c5376f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/Queue.py
+++ /dev/null
@@ -1,244 +0,0 @@
-"""A multi-producer, multi-consumer queue."""
-
-from time import time as _time
-try:
-    import threading as _threading
-except ImportError:
-    import dummy_threading as _threading
-from collections import deque
-import heapq
-
-__all__ = ['Empty', 'Full', 'Queue', 'PriorityQueue', 'LifoQueue']
-
-class Empty(Exception):
-    "Exception raised by Queue.get(block=0)/get_nowait()."
-    pass
-
-class Full(Exception):
-    "Exception raised by Queue.put(block=0)/put_nowait()."
-    pass
-
-class Queue:
-    """Create a queue object with a given maximum size.
-
-    If maxsize is <= 0, the queue size is infinite.
-    """
-    def __init__(self, maxsize=0):
-        self.maxsize = maxsize
-        self._init(maxsize)
-        # mutex must be held whenever the queue is mutating.  All methods
-        # that acquire mutex must release it before returning.  mutex
-        # is shared between the three conditions, so acquiring and
-        # releasing the conditions also acquires and releases mutex.
-        self.mutex = _threading.Lock()
-        # Notify not_empty whenever an item is added to the queue; a
-        # thread waiting to get is notified then.
-        self.not_empty = _threading.Condition(self.mutex)
-        # Notify not_full whenever an item is removed from the queue;
-        # a thread waiting to put is notified then.
-        self.not_full = _threading.Condition(self.mutex)
-        # Notify all_tasks_done whenever the number of unfinished tasks
-        # drops to zero; thread waiting to join() is notified to resume
-        self.all_tasks_done = _threading.Condition(self.mutex)
-        self.unfinished_tasks = 0
-
-    def task_done(self):
-        """Indicate that a formerly enqueued task is complete.
-
-        Used by Queue consumer threads.  For each get() used to fetch a task,
-        a subsequent call to task_done() tells the queue that the processing
-        on the task is complete.
-
-        If a join() is currently blocking, it will resume when all items
-        have been processed (meaning that a task_done() call was received
-        for every item that had been put() into the queue).
-
-        Raises a ValueError if called more times than there were items
-        placed in the queue.
-        """
-        self.all_tasks_done.acquire()
-        try:
-            unfinished = self.unfinished_tasks - 1
-            if unfinished <= 0:
-                if unfinished < 0:
-                    raise ValueError('task_done() called too many times')
-                self.all_tasks_done.notify_all()
-            self.unfinished_tasks = unfinished
-        finally:
-            self.all_tasks_done.release()
-
-    def join(self):
-        """Blocks until all items in the Queue have been gotten and processed.
-
-        The count of unfinished tasks goes up whenever an item is added to the
-        queue. The count goes down whenever a consumer thread calls task_done()
-        to indicate the item was retrieved and all work on it is complete.
-
-        When the count of unfinished tasks drops to zero, join() unblocks.
-        """
-        self.all_tasks_done.acquire()
-        try:
-            while self.unfinished_tasks:
-                self.all_tasks_done.wait()
-        finally:
-            self.all_tasks_done.release()
-
-    def qsize(self):
-        """Return the approximate size of the queue (not reliable!)."""
-        self.mutex.acquire()
-        n = self._qsize()
-        self.mutex.release()
-        return n
-
-    def empty(self):
-        """Return True if the queue is empty, False otherwise (not reliable!)."""
-        self.mutex.acquire()
-        n = not self._qsize()
-        self.mutex.release()
-        return n
-
-    def full(self):
-        """Return True if the queue is full, False otherwise (not reliable!)."""
-        self.mutex.acquire()
-        n = 0 < self.maxsize == self._qsize()
-        self.mutex.release()
-        return n
-
-    def put(self, item, block=True, timeout=None):
-        """Put an item into the queue.
-
-        If optional args 'block' is true and 'timeout' is None (the default),
-        block if necessary until a free slot is available. If 'timeout' is
-        a positive number, it blocks at most 'timeout' seconds and raises
-        the Full exception if no free slot was available within that time.
-        Otherwise ('block' is false), put an item on the queue if a free slot
-        is immediately available, else raise the Full exception ('timeout'
-        is ignored in that case).
-        """
-        self.not_full.acquire()
-        try:
-            if self.maxsize > 0:
-                if not block:
-                    if self._qsize() == self.maxsize:
-                        raise Full
-                elif timeout is None:
-                    while self._qsize() == self.maxsize:
-                        self.not_full.wait()
-                elif timeout < 0:
-                    raise ValueError("'timeout' must be a positive number")
-                else:
-                    endtime = _time() + timeout
-                    while self._qsize() == self.maxsize:
-                        remaining = endtime - _time()
-                        if remaining <= 0.0:
-                            raise Full
-                        self.not_full.wait(remaining)
-            self._put(item)
-            self.unfinished_tasks += 1
-            self.not_empty.notify()
-        finally:
-            self.not_full.release()
-
-    def put_nowait(self, item):
-        """Put an item into the queue without blocking.
-
-        Only enqueue the item if a free slot is immediately available.
-        Otherwise raise the Full exception.
-        """
-        return self.put(item, False)
-
-    def get(self, block=True, timeout=None):
-        """Remove and return an item from the queue.
-
-        If optional args 'block' is true and 'timeout' is None (the default),
-        block if necessary until an item is available. If 'timeout' is
-        a positive number, it blocks at most 'timeout' seconds and raises
-        the Empty exception if no item was available within that time.
-        Otherwise ('block' is false), return an item if one is immediately
-        available, else raise the Empty exception ('timeout' is ignored
-        in that case).
-        """
-        self.not_empty.acquire()
-        try:
-            if not block:
-                if not self._qsize():
-                    raise Empty
-            elif timeout is None:
-                while not self._qsize():
-                    self.not_empty.wait()
-            elif timeout < 0:
-                raise ValueError("'timeout' must be a positive number")
-            else:
-                endtime = _time() + timeout
-                while not self._qsize():
-                    remaining = endtime - _time()
-                    if remaining <= 0.0:
-                        raise Empty
-                    self.not_empty.wait(remaining)
-            item = self._get()
-            self.not_full.notify()
-            return item
-        finally:
-            self.not_empty.release()
-
-    def get_nowait(self):
-        """Remove and return an item from the queue without blocking.
-
-        Only get an item if one is immediately available. Otherwise
-        raise the Empty exception.
-        """
-        return self.get(False)
-
-    # Override these methods to implement other queue organizations
-    # (e.g. stack or priority queue).
-    # These will only be called with appropriate locks held
-
-    # Initialize the queue representation
-    def _init(self, maxsize):
-        self.queue = deque()
-
-    def _qsize(self, len=len):
-        return len(self.queue)
-
-    # Put a new item in the queue
-    def _put(self, item):
-        self.queue.append(item)
-
-    # Get an item from the queue
-    def _get(self):
-        return self.queue.popleft()
-
-
-class PriorityQueue(Queue):
-    '''Variant of Queue that retrieves open entries in priority order (lowest first).
-
-    Entries are typically tuples of the form:  (priority number, data).
-    '''
-
-    def _init(self, maxsize):
-        self.queue = []
-
-    def _qsize(self, len=len):
-        return len(self.queue)
-
-    def _put(self, item, heappush=heapq.heappush):
-        heappush(self.queue, item)
-
-    def _get(self, heappop=heapq.heappop):
-        return heappop(self.queue)
-
-
-class LifoQueue(Queue):
-    '''Variant of Queue that retrieves most recently added entries first.'''
-
-    def _init(self, maxsize):
-        self.queue = []
-
-    def _qsize(self, len=len):
-        return len(self.queue)
-
-    def _put(self, item):
-        self.queue.append(item)
-
-    def _get(self):
-        return self.queue.pop()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/SimpleHTTPServer.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/SimpleHTTPServer.py
deleted file mode 100644
index cfaf83c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/SimpleHTTPServer.py
+++ /dev/null
@@ -1,220 +0,0 @@
-"""Simple HTTP Server.
-
-This module builds on BaseHTTPServer by implementing the standard GET
-and HEAD requests in a fairly straightforward manner.
-
-"""
-
-
-__version__ = "0.6"
-
-__all__ = ["SimpleHTTPRequestHandler"]
-
-import os
-import posixpath
-import BaseHTTPServer
-import urllib
-import cgi
-import sys
-import shutil
-import mimetypes
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-
-class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
-
-    """Simple HTTP request handler with GET and HEAD commands.
-
-    This serves files from the current directory and any of its
-    subdirectories.  The MIME type for files is determined by
-    calling the .guess_type() method.
-
-    The GET and HEAD requests are identical except that the HEAD
-    request omits the actual contents of the file.
-
-    """
-
-    server_version = "SimpleHTTP/" + __version__
-
-    def do_GET(self):
-        """Serve a GET request."""
-        f = self.send_head()
-        if f:
-            self.copyfile(f, self.wfile)
-            f.close()
-
-    def do_HEAD(self):
-        """Serve a HEAD request."""
-        f = self.send_head()
-        if f:
-            f.close()
-
-    def send_head(self):
-        """Common code for GET and HEAD commands.
-
-        This sends the response code and MIME headers.
-
-        Return value is either a file object (which has to be copied
-        to the outputfile by the caller unless the command was HEAD,
-        and must be closed by the caller under all circumstances), or
-        None, in which case the caller has nothing further to do.
-
-        """
-        path = self.translate_path(self.path)
-        f = None
-        if os.path.isdir(path):
-            if not self.path.endswith('/'):
-                # redirect browser - doing basically what apache does
-                self.send_response(301)
-                self.send_header("Location", self.path + "/")
-                self.end_headers()
-                return None
-            for index in "index.html", "index.htm":
-                index = os.path.join(path, index)
-                if os.path.exists(index):
-                    path = index
-                    break
-            else:
-                return self.list_directory(path)
-        ctype = self.guess_type(path)
-        try:
-            # Always read in binary mode. Opening files in text mode may cause
-            # newline translations, making the actual size of the content
-            # transmitted *less* than the content-length!
-            f = open(path, 'rb')
-        except IOError:
-            self.send_error(404, "File not found")
-            return None
-        self.send_response(200)
-        self.send_header("Content-type", ctype)
-        fs = os.fstat(f.fileno())
-        self.send_header("Content-Length", str(fs[6]))
-        self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
-        self.end_headers()
-        return f
-
-    def list_directory(self, path):
-        """Helper to produce a directory listing (absent index.html).
-
-        Return value is either a file object, or None (indicating an
-        error).  In either case, the headers are sent, making the
-        interface the same as for send_head().
-
-        """
-        try:
-            list = os.listdir(path)
-        except os.error:
-            self.send_error(404, "No permission to list directory")
-            return None
-        list.sort(key=lambda a: a.lower())
-        f = StringIO()
-        displaypath = cgi.escape(urllib.unquote(self.path))
-        f.write('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">')
-        f.write("<html>\n<title>Directory listing for %s</title>\n" % displaypath)
-        f.write("<body>\n<h2>Directory listing for %s</h2>\n" % displaypath)
-        f.write("<hr>\n<ul>\n")
-        for name in list:
-            fullname = os.path.join(path, name)
-            displayname = linkname = name
-            # Append / for directories or @ for symbolic links
-            if os.path.isdir(fullname):
-                displayname = name + "/"
-                linkname = name + "/"
-            if os.path.islink(fullname):
-                displayname = name + "@"
-                # Note: a link to a directory displays with @ and links with /
-            f.write('<li><a href="%s">%s</a>\n'
-                    % (urllib.quote(linkname), cgi.escape(displayname)))
-        f.write("</ul>\n<hr>\n</body>\n</html>\n")
-        length = f.tell()
-        f.seek(0)
-        self.send_response(200)
-        encoding = sys.getfilesystemencoding()
-        self.send_header("Content-type", "text/html; charset=%s" % encoding)
-        self.send_header("Content-Length", str(length))
-        self.end_headers()
-        return f
-
-    def translate_path(self, path):
-        """Translate a /-separated PATH to the local filename syntax.
-
-        Components that mean special things to the local file system
-        (e.g. drive or directory names) are ignored.  (XXX They should
-        probably be diagnosed.)
-
-        """
-        # abandon query parameters
-        path = path.split('?',1)[0]
-        path = path.split('#',1)[0]
-        path = posixpath.normpath(urllib.unquote(path))
-        words = path.split('/')
-        words = filter(None, words)
-        path = os.getcwd()
-        for word in words:
-            drive, word = os.path.splitdrive(word)
-            head, word = os.path.split(word)
-            if word in (os.curdir, os.pardir): continue
-            path = os.path.join(path, word)
-        return path
-
-    def copyfile(self, source, outputfile):
-        """Copy all data between two file objects.
-
-        The SOURCE argument is a file object open for reading
-        (or anything with a read() method) and the DESTINATION
-        argument is a file object open for writing (or
-        anything with a write() method).
-
-        The only reason for overriding this would be to change
-        the block size or perhaps to replace newlines by CRLF
-        -- note however that this the default server uses this
-        to copy binary data as well.
-
-        """
-        shutil.copyfileobj(source, outputfile)
-
-    def guess_type(self, path):
-        """Guess the type of a file.
-
-        Argument is a PATH (a filename).
-
-        Return value is a string of the form type/subtype,
-        usable for a MIME Content-type header.
-
-        The default implementation looks the file's extension
-        up in the table self.extensions_map, using application/octet-stream
-        as a default; however it would be permissible (if
-        slow) to look inside the data to make a better guess.
-
-        """
-
-        base, ext = posixpath.splitext(path)
-        if ext in self.extensions_map:
-            return self.extensions_map[ext]
-        ext = ext.lower()
-        if ext in self.extensions_map:
-            return self.extensions_map[ext]
-        else:
-            return self.extensions_map['']
-
-    if not mimetypes.inited:
-        mimetypes.init() # try to read system mime.types
-    extensions_map = mimetypes.types_map.copy()
-    extensions_map.update({
-        '': 'application/octet-stream', # Default
-        '.py': 'text/plain',
-        '.c': 'text/plain',
-        '.h': 'text/plain',
-        })
-
-
-def test(HandlerClass = SimpleHTTPRequestHandler,
-         ServerClass = BaseHTTPServer.HTTPServer):
-    BaseHTTPServer.test(HandlerClass, ServerClass)
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/SimpleXMLRPCServer.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/SimpleXMLRPCServer.py
deleted file mode 100644
index c57e27c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/SimpleXMLRPCServer.py
+++ /dev/null
@@ -1,704 +0,0 @@
-"""Simple XML-RPC Server.
-
-This module can be used to create simple XML-RPC servers
-by creating a server and either installing functions, a
-class instance, or by extending the SimpleXMLRPCServer
-class.
-
-It can also be used to handle XML-RPC requests in a CGI
-environment using CGIXMLRPCRequestHandler.
-
-A list of possible usage patterns follows:
-
-1. Install functions:
-
-server = SimpleXMLRPCServer(("localhost", 8000))
-server.register_function(pow)
-server.register_function(lambda x,y: x+y, 'add')
-server.serve_forever()
-
-2. Install an instance:
-
-class MyFuncs:
-    def __init__(self):
-        # make all of the string functions available through
-        # string.func_name
-        import string
-        self.string = string
-    def _listMethods(self):
-        # implement this method so that system.listMethods
-        # knows to advertise the strings methods
-        return list_public_methods(self) + \
-                ['string.' + method for method in list_public_methods(self.string)]
-    def pow(self, x, y): return pow(x, y)
-    def add(self, x, y) : return x + y
-
-server = SimpleXMLRPCServer(("localhost", 8000))
-server.register_introspection_functions()
-server.register_instance(MyFuncs())
-server.serve_forever()
-
-3. Install an instance with custom dispatch method:
-
-class Math:
-    def _listMethods(self):
-        # this method must be present for system.listMethods
-        # to work
-        return ['add', 'pow']
-    def _methodHelp(self, method):
-        # this method must be present for system.methodHelp
-        # to work
-        if method == 'add':
-            return "add(2,3) => 5"
-        elif method == 'pow':
-            return "pow(x, y[, z]) => number"
-        else:
-            # By convention, return empty
-            # string if no help is available
-            return ""
-    def _dispatch(self, method, params):
-        if method == 'pow':
-            return pow(*params)
-        elif method == 'add':
-            return params[0] + params[1]
-        else:
-            raise 'bad method'
-
-server = SimpleXMLRPCServer(("localhost", 8000))
-server.register_introspection_functions()
-server.register_instance(Math())
-server.serve_forever()
-
-4. Subclass SimpleXMLRPCServer:
-
-class MathServer(SimpleXMLRPCServer):
-    def _dispatch(self, method, params):
-        try:
-            # We are forcing the 'export_' prefix on methods that are
-            # callable through XML-RPC to prevent potential security
-            # problems
-            func = getattr(self, 'export_' + method)
-        except AttributeError:
-            raise Exception('method "%s" is not supported' % method)
-        else:
-            return func(*params)
-
-    def export_add(self, x, y):
-        return x + y
-
-server = MathServer(("localhost", 8000))
-server.serve_forever()
-
-5. CGI script:
-
-server = CGIXMLRPCRequestHandler()
-server.register_function(pow)
-server.handle_request()
-"""
-
-# Written by Brian Quinlan (brian@sweetapp.com).
-# Based on code written by Fredrik Lundh.
-
-import xmlrpclib
-from xmlrpclib import Fault
-import SocketServer
-import BaseHTTPServer
-import sys
-import os
-import traceback
-import re
-try:
-    import fcntl
-except ImportError:
-    fcntl = None
-
-def resolve_dotted_attribute(obj, attr, allow_dotted_names=True):
-    """resolve_dotted_attribute(a, 'b.c.d') => a.b.c.d
-
-    Resolves a dotted attribute name to an object.  Raises
-    an AttributeError if any attribute in the chain starts with a '_'.
-
-    If the optional allow_dotted_names argument is false, dots are not
-    supported and this function operates similar to getattr(obj, attr).
-    """
-
-    if allow_dotted_names:
-        attrs = attr.split('.')
-    else:
-        attrs = [attr]
-
-    for i in attrs:
-        if i.startswith('_'):
-            raise AttributeError(
-                'attempt to access private attribute "%s"' % i
-                )
-        else:
-            obj = getattr(obj,i)
-    return obj
-
-def list_public_methods(obj):
-    """Returns a list of attribute strings, found in the specified
-    object, which represent callable attributes"""
-
-    return [member for member in dir(obj)
-                if not member.startswith('_') and
-                    hasattr(getattr(obj, member), '__call__')]
-
-def remove_duplicates(lst):
-    """remove_duplicates([2,2,2,1,3,3]) => [3,1,2]
-
-    Returns a copy of a list without duplicates. Every list
-    item must be hashable and the order of the items in the
-    resulting list is not defined.
-    """
-    u = {}
-    for x in lst:
-        u[x] = 1
-
-    return u.keys()
-
-class SimpleXMLRPCDispatcher:
-    """Mix-in class that dispatches XML-RPC requests.
-
-    This class is used to register XML-RPC method handlers
-    and then to dispatch them. This class doesn't need to be
-    instanced directly when used by SimpleXMLRPCServer but it
-    can be instanced when used by the MultiPathXMLRPCServer.
-    """
-
-    def __init__(self, allow_none=False, encoding=None):
-        self.funcs = {}
-        self.instance = None
-        self.allow_none = allow_none
-        self.encoding = encoding
-
-    def register_instance(self, instance, allow_dotted_names=False):
-        """Registers an instance to respond to XML-RPC requests.
-
-        Only one instance can be installed at a time.
-
-        If the registered instance has a _dispatch method then that
-        method will be called with the name of the XML-RPC method and
-        its parameters as a tuple
-        e.g. instance._dispatch('add',(2,3))
-
-        If the registered instance does not have a _dispatch method
-        then the instance will be searched to find a matching method
-        and, if found, will be called. Methods beginning with an '_'
-        are considered private and will not be called by
-        SimpleXMLRPCServer.
-
-        If a registered function matches a XML-RPC request, then it
-        will be called instead of the registered instance.
-
-        If the optional allow_dotted_names argument is true and the
-        instance does not have a _dispatch method, method names
-        containing dots are supported and resolved, as long as none of
-        the name segments start with an '_'.
-
-            *** SECURITY WARNING: ***
-
-            Enabling the allow_dotted_names options allows intruders
-            to access your module's global variables and may allow
-            intruders to execute arbitrary code on your machine.  Only
-            use this option on a secure, closed network.
-
-        """
-
-        self.instance = instance
-        self.allow_dotted_names = allow_dotted_names
-
-    def register_function(self, function, name = None):
-        """Registers a function to respond to XML-RPC requests.
-
-        The optional name argument can be used to set a Unicode name
-        for the function.
-        """
-
-        if name is None:
-            name = function.__name__
-        self.funcs[name] = function
-
-    def register_introspection_functions(self):
-        """Registers the XML-RPC introspection methods in the system
-        namespace.
-
-        see http://xmlrpc.usefulinc.com/doc/reserved.html
-        """
-
-        self.funcs.update({'system.listMethods' : self.system_listMethods,
-                      'system.methodSignature' : self.system_methodSignature,
-                      'system.methodHelp' : self.system_methodHelp})
-
-    def register_multicall_functions(self):
-        """Registers the XML-RPC multicall method in the system
-        namespace.
-
-        see http://www.xmlrpc.com/discuss/msgReader$1208"""
-
-        self.funcs.update({'system.multicall' : self.system_multicall})
-
-    def _marshaled_dispatch(self, data, dispatch_method = None, path = None):
-        """Dispatches an XML-RPC method from marshalled (XML) data.
-
-        XML-RPC methods are dispatched from the marshalled (XML) data
-        using the _dispatch method and the result is returned as
-        marshalled data. For backwards compatibility, a dispatch
-        function can be provided as an argument (see comment in
-        SimpleXMLRPCRequestHandler.do_POST) but overriding the
-        existing method through subclassing is the preferred means
-        of changing method dispatch behavior.
-        """
-
-        try:
-            params, method = xmlrpclib.loads(data)
-
-            # generate response
-            if dispatch_method is not None:
-                response = dispatch_method(method, params)
-            else:
-                response = self._dispatch(method, params)
-            # wrap response in a singleton tuple
-            response = (response,)
-            response = xmlrpclib.dumps(response, methodresponse=1,
-                                       allow_none=self.allow_none, encoding=self.encoding)
-        except Fault, fault:
-            response = xmlrpclib.dumps(fault, allow_none=self.allow_none,
-                                       encoding=self.encoding)
-        except:
-            # report exception back to server
-            exc_type, exc_value, exc_tb = sys.exc_info()
-            response = xmlrpclib.dumps(
-                xmlrpclib.Fault(1, "%s:%s" % (exc_type, exc_value)),
-                encoding=self.encoding, allow_none=self.allow_none,
-                )
-
-        return response
-
-    def system_listMethods(self):
-        """system.listMethods() => ['add', 'subtract', 'multiple']
-
-        Returns a list of the methods supported by the server."""
-
-        methods = self.funcs.keys()
-        if self.instance is not None:
-            # Instance can implement _listMethod to return a list of
-            # methods
-            if hasattr(self.instance, '_listMethods'):
-                methods = remove_duplicates(
-                        methods + self.instance._listMethods()
-                    )
-            # if the instance has a _dispatch method then we
-            # don't have enough information to provide a list
-            # of methods
-            elif not hasattr(self.instance, '_dispatch'):
-                methods = remove_duplicates(
-                        methods + list_public_methods(self.instance)
-                    )
-        methods.sort()
-        return methods
-
-    def system_methodSignature(self, method_name):
-        """system.methodSignature('add') => [double, int, int]
-
-        Returns a list describing the signature of the method. In the
-        above example, the add method takes two integers as arguments
-        and returns a double result.
-
-        This server does NOT support system.methodSignature."""
-
-        # See http://xmlrpc.usefulinc.com/doc/sysmethodsig.html
-
-        return 'signatures not supported'
-
-    def system_methodHelp(self, method_name):
-        """system.methodHelp('add') => "Adds two integers together"
-
-        Returns a string containing documentation for the specified method."""
-
-        method = None
-        if method_name in self.funcs:
-            method = self.funcs[method_name]
-        elif self.instance is not None:
-            # Instance can implement _methodHelp to return help for a method
-            if hasattr(self.instance, '_methodHelp'):
-                return self.instance._methodHelp(method_name)
-            # if the instance has a _dispatch method then we
-            # don't have enough information to provide help
-            elif not hasattr(self.instance, '_dispatch'):
-                try:
-                    method = resolve_dotted_attribute(
-                                self.instance,
-                                method_name,
-                                self.allow_dotted_names
-                                )
-                except AttributeError:
-                    pass
-
-        # Note that we aren't checking that the method actually
-        # be a callable object of some kind
-        if method is None:
-            return ""
-        else:
-            import pydoc
-            return pydoc.getdoc(method)
-
-    def system_multicall(self, call_list):
-        """system.multicall([{'methodName': 'add', 'params': [2, 2]}, ...]) => \
-[[4], ...]
-
-        Allows the caller to package multiple XML-RPC calls into a single
-        request.
-
-        See http://www.xmlrpc.com/discuss/msgReader$1208
-        """
-
-        results = []
-        for call in call_list:
-            method_name = call['methodName']
-            params = call['params']
-
-            try:
-                # XXX A marshalling error in any response will fail the entire
-                # multicall. If someone cares they should fix this.
-                results.append([self._dispatch(method_name, params)])
-            except Fault, fault:
-                results.append(
-                    {'faultCode' : fault.faultCode,
-                     'faultString' : fault.faultString}
-                    )
-            except:
-                exc_type, exc_value, exc_tb = sys.exc_info()
-                results.append(
-                    {'faultCode' : 1,
-                     'faultString' : "%s:%s" % (exc_type, exc_value)}
-                    )
-        return results
-
-    def _dispatch(self, method, params):
-        """Dispatches the XML-RPC method.
-
-        XML-RPC calls are forwarded to a registered function that
-        matches the called XML-RPC method name. If no such function
-        exists then the call is forwarded to the registered instance,
-        if available.
-
-        If the registered instance has a _dispatch method then that
-        method will be called with the name of the XML-RPC method and
-        its parameters as a tuple
-        e.g. instance._dispatch('add',(2,3))
-
-        If the registered instance does not have a _dispatch method
-        then the instance will be searched to find a matching method
-        and, if found, will be called.
-
-        Methods beginning with an '_' are considered private and will
-        not be called.
-        """
-
-        func = None
-        try:
-            # check to see if a matching function has been registered
-            func = self.funcs[method]
-        except KeyError:
-            if self.instance is not None:
-                # check for a _dispatch method
-                if hasattr(self.instance, '_dispatch'):
-                    return self.instance._dispatch(method, params)
-                else:
-                    # call instance method directly
-                    try:
-                        func = resolve_dotted_attribute(
-                            self.instance,
-                            method,
-                            self.allow_dotted_names
-                            )
-                    except AttributeError:
-                        pass
-
-        if func is not None:
-            return func(*params)
-        else:
-            raise Exception('method "%s" is not supported' % method)
-
-class SimpleXMLRPCRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
-    """Simple XML-RPC request handler class.
-
-    Handles all HTTP POST requests and attempts to decode them as
-    XML-RPC requests.
-    """
-
-    # Class attribute listing the accessible path components;
-    # paths not on this list will result in a 404 error.
-    rpc_paths = ('/', '/RPC2')
-
-    #if not None, encode responses larger than this, if possible
-    encode_threshold = 1400 #a common MTU
-
-    #Override form StreamRequestHandler: full buffering of output
-    #and no Nagle.
-    wbufsize = -1
-    disable_nagle_algorithm = True
-
-    # a re to match a gzip Accept-Encoding
-    aepattern = re.compile(r"""
-                            \s* ([^\s;]+) \s*            #content-coding
-                            (;\s* q \s*=\s* ([0-9\.]+))? #q
-                            """, re.VERBOSE | re.IGNORECASE)
-
-    def accept_encodings(self):
-        r = {}
-        ae = self.headers.get("Accept-Encoding", "")
-        for e in ae.split(","):
-            match = self.aepattern.match(e)
-            if match:
-                v = match.group(3)
-                v = float(v) if v else 1.0
-                r[match.group(1)] = v
-        return r
-
-    def is_rpc_path_valid(self):
-        if self.rpc_paths:
-            return self.path in self.rpc_paths
-        else:
-            # If .rpc_paths is empty, just assume all paths are legal
-            return True
-
-    def do_POST(self):
-        """Handles the HTTP POST request.
-
-        Attempts to interpret all HTTP POST requests as XML-RPC calls,
-        which are forwarded to the server's _dispatch method for handling.
-        """
-
-        # Check that the path is legal
-        if not self.is_rpc_path_valid():
-            self.report_404()
-            return
-
-        try:
-            # Get arguments by reading body of request.
-            # We read this in chunks to avoid straining
-            # socket.read(); around the 10 or 15Mb mark, some platforms
-            # begin to have problems (bug #792570).
-            max_chunk_size = 10*1024*1024
-            size_remaining = int(self.headers["content-length"])
-            L = []
-            while size_remaining:
-                chunk_size = min(size_remaining, max_chunk_size)
-                L.append(self.rfile.read(chunk_size))
-                size_remaining -= len(L[-1])
-            data = ''.join(L)
-
-            data = self.decode_request_content(data)
-            if data is None:
-                return #response has been sent
-
-            # In previous versions of SimpleXMLRPCServer, _dispatch
-            # could be overridden in this class, instead of in
-            # SimpleXMLRPCDispatcher. To maintain backwards compatibility,
-            # check to see if a subclass implements _dispatch and dispatch
-            # using that method if present.
-            response = self.server._marshaled_dispatch(
-                    data, getattr(self, '_dispatch', None), self.path
-                )
-        except Exception, e: # This should only happen if the module is buggy
-            # internal error, report as HTTP server error
-            self.send_response(500)
-
-            # Send information about the exception if requested
-            if hasattr(self.server, '_send_traceback_header') and \
-                    self.server._send_traceback_header:
-                self.send_header("X-exception", str(e))
-                self.send_header("X-traceback", traceback.format_exc())
-
-            self.send_header("Content-length", "0")
-            self.end_headers()
-        else:
-            # got a valid XML RPC response
-            self.send_response(200)
-            self.send_header("Content-type", "text/xml")
-            if self.encode_threshold is not None:
-                if len(response) > self.encode_threshold:
-                    q = self.accept_encodings().get("gzip", 0)
-                    if q:
-                        try:
-                            response = xmlrpclib.gzip_encode(response)
-                            self.send_header("Content-Encoding", "gzip")
-                        except NotImplementedError:
-                            pass
-            self.send_header("Content-length", str(len(response)))
-            self.end_headers()
-            self.wfile.write(response)
-
-    def decode_request_content(self, data):
-        #support gzip encoding of request
-        encoding = self.headers.get("content-encoding", "identity").lower()
-        if encoding == "identity":
-            return data
-        if encoding == "gzip":
-            try:
-                return xmlrpclib.gzip_decode(data)
-            except NotImplementedError:
-                self.send_response(501, "encoding %r not supported" % encoding)
-            except ValueError:
-                self.send_response(400, "error decoding gzip content")
-        else:
-            self.send_response(501, "encoding %r not supported" % encoding)
-        self.send_header("Content-length", "0")
-        self.end_headers()
-
-    def report_404 (self):
-            # Report a 404 error
-        self.send_response(404)
-        response = 'No such page'
-        self.send_header("Content-type", "text/plain")
-        self.send_header("Content-length", str(len(response)))
-        self.end_headers()
-        self.wfile.write(response)
-
-    def log_request(self, code='-', size='-'):
-        """Selectively log an accepted request."""
-
-        if self.server.logRequests:
-            BaseHTTPServer.BaseHTTPRequestHandler.log_request(self, code, size)
-
-class SimpleXMLRPCServer(SocketServer.TCPServer,
-                         SimpleXMLRPCDispatcher):
-    """Simple XML-RPC server.
-
-    Simple XML-RPC server that allows functions and a single instance
-    to be installed to handle requests. The default implementation
-    attempts to dispatch XML-RPC calls to the functions or instance
-    installed in the server. Override the _dispatch method inhereted
-    from SimpleXMLRPCDispatcher to change this behavior.
-    """
-
-    allow_reuse_address = True
-
-    # Warning: this is for debugging purposes only! Never set this to True in
-    # production code, as will be sending out sensitive information (exception
-    # and stack trace details) when exceptions are raised inside
-    # SimpleXMLRPCRequestHandler.do_POST
-    _send_traceback_header = False
-
-    def __init__(self, addr, requestHandler=SimpleXMLRPCRequestHandler,
-                 logRequests=True, allow_none=False, encoding=None, bind_and_activate=True):
-        self.logRequests = logRequests
-
-        SimpleXMLRPCDispatcher.__init__(self, allow_none, encoding)
-        SocketServer.TCPServer.__init__(self, addr, requestHandler, bind_and_activate)
-
-        # [Bug #1222790] If possible, set close-on-exec flag; if a
-        # method spawns a subprocess, the subprocess shouldn't have
-        # the listening socket open.
-        if fcntl is not None and hasattr(fcntl, 'FD_CLOEXEC'):
-            flags = fcntl.fcntl(self.fileno(), fcntl.F_GETFD)
-            flags |= fcntl.FD_CLOEXEC
-            fcntl.fcntl(self.fileno(), fcntl.F_SETFD, flags)
-
-class MultiPathXMLRPCServer(SimpleXMLRPCServer):
-    """Multipath XML-RPC Server
-    This specialization of SimpleXMLRPCServer allows the user to create
-    multiple Dispatcher instances and assign them to different
-    HTTP request paths.  This makes it possible to run two or more
-    'virtual XML-RPC servers' at the same port.
-    Make sure that the requestHandler accepts the paths in question.
-    """
-    def __init__(self, addr, requestHandler=SimpleXMLRPCRequestHandler,
-                 logRequests=True, allow_none=False, encoding=None, bind_and_activate=True):
-
-        SimpleXMLRPCServer.__init__(self, addr, requestHandler, logRequests, allow_none,
-                                    encoding, bind_and_activate)
-        self.dispatchers = {}
-        self.allow_none = allow_none
-        self.encoding = encoding
-
-    def add_dispatcher(self, path, dispatcher):
-        self.dispatchers[path] = dispatcher
-        return dispatcher
-
-    def get_dispatcher(self, path):
-        return self.dispatchers[path]
-
-    def _marshaled_dispatch(self, data, dispatch_method = None, path = None):
-        try:
-            response = self.dispatchers[path]._marshaled_dispatch(
-               data, dispatch_method, path)
-        except:
-            # report low level exception back to server
-            # (each dispatcher should have handled their own
-            # exceptions)
-            exc_type, exc_value = sys.exc_info()[:2]
-            response = xmlrpclib.dumps(
-                xmlrpclib.Fault(1, "%s:%s" % (exc_type, exc_value)),
-                encoding=self.encoding, allow_none=self.allow_none)
-        return response
-
-class CGIXMLRPCRequestHandler(SimpleXMLRPCDispatcher):
-    """Simple handler for XML-RPC data passed through CGI."""
-
-    def __init__(self, allow_none=False, encoding=None):
-        SimpleXMLRPCDispatcher.__init__(self, allow_none, encoding)
-
-    def handle_xmlrpc(self, request_text):
-        """Handle a single XML-RPC request"""
-
-        response = self._marshaled_dispatch(request_text)
-
-        print 'Content-Type: text/xml'
-        print 'Content-Length: %d' % len(response)
-        print
-        sys.stdout.write(response)
-
-    def handle_get(self):
-        """Handle a single HTTP GET request.
-
-        Default implementation indicates an error because
-        XML-RPC uses the POST method.
-        """
-
-        code = 400
-        message, explain = \
-                 BaseHTTPServer.BaseHTTPRequestHandler.responses[code]
-
-        response = BaseHTTPServer.DEFAULT_ERROR_MESSAGE % \
-            {
-             'code' : code,
-             'message' : message,
-             'explain' : explain
-            }
-        print 'Status: %d %s' % (code, message)
-        print 'Content-Type: %s' % BaseHTTPServer.DEFAULT_ERROR_CONTENT_TYPE
-        print 'Content-Length: %d' % len(response)
-        print
-        sys.stdout.write(response)
-
-    def handle_request(self, request_text = None):
-        """Handle a single XML-RPC request passed through a CGI post method.
-
-        If no XML data is given then it is read from stdin. The resulting
-        XML-RPC response is printed to stdout along with the correct HTTP
-        headers.
-        """
-
-        if request_text is None and \
-            os.environ.get('REQUEST_METHOD', None) == 'GET':
-            self.handle_get()
-        else:
-            # POST data is normally available through stdin
-            try:
-                length = int(os.environ.get('CONTENT_LENGTH', None))
-            except (TypeError, ValueError):
-                length = -1
-            if request_text is None:
-                request_text = sys.stdin.read(length)
-
-            self.handle_xmlrpc(request_text)
-
-if __name__ == '__main__':
-    print 'Running XML-RPC server on port 8000'
-    server = SimpleXMLRPCServer(("localhost", 8000))
-    server.register_function(pow)
-    server.register_function(lambda x,y: x+y, 'add')
-    server.serve_forever()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/SocketServer.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/SocketServer.py
deleted file mode 100644
index 64439d5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/SocketServer.py
+++ /dev/null
@@ -1,716 +0,0 @@
-"""Generic socket server classes.
-
-This module tries to capture the various aspects of defining a server:
-
-For socket-based servers:
-
-- address family:
-        - AF_INET{,6}: IP (Internet Protocol) sockets (default)
-        - AF_UNIX: Unix domain sockets
-        - others, e.g. AF_DECNET are conceivable (see <socket.h>
-- socket type:
-        - SOCK_STREAM (reliable stream, e.g. TCP)
-        - SOCK_DGRAM (datagrams, e.g. UDP)
-
-For request-based servers (including socket-based):
-
-- client address verification before further looking at the request
-        (This is actually a hook for any processing that needs to look
-         at the request before anything else, e.g. logging)
-- how to handle multiple requests:
-        - synchronous (one request is handled at a time)
-        - forking (each request is handled by a new process)
-        - threading (each request is handled by a new thread)
-
-The classes in this module favor the server type that is simplest to
-write: a synchronous TCP/IP server.  This is bad class design, but
-save some typing.  (There's also the issue that a deep class hierarchy
-slows down method lookups.)
-
-There are five classes in an inheritance diagram, four of which represent
-synchronous servers of four types:
-
-        +------------+
-        | BaseServer |
-        +------------+
-              |
-              v
-        +-----------+        +------------------+
-        | TCPServer |------->| UnixStreamServer |
-        +-----------+        +------------------+
-              |
-              v
-        +-----------+        +--------------------+
-        | UDPServer |------->| UnixDatagramServer |
-        +-----------+        +--------------------+
-
-Note that UnixDatagramServer derives from UDPServer, not from
-UnixStreamServer -- the only difference between an IP and a Unix
-stream server is the address family, which is simply repeated in both
-unix server classes.
-
-Forking and threading versions of each type of server can be created
-using the ForkingMixIn and ThreadingMixIn mix-in classes.  For
-instance, a threading UDP server class is created as follows:
-
-        class ThreadingUDPServer(ThreadingMixIn, UDPServer): pass
-
-The Mix-in class must come first, since it overrides a method defined
-in UDPServer! Setting the various member variables also changes
-the behavior of the underlying server mechanism.
-
-To implement a service, you must derive a class from
-BaseRequestHandler and redefine its handle() method.  You can then run
-various versions of the service by combining one of the server classes
-with your request handler class.
-
-The request handler class must be different for datagram or stream
-services.  This can be hidden by using the request handler
-subclasses StreamRequestHandler or DatagramRequestHandler.
-
-Of course, you still have to use your head!
-
-For instance, it makes no sense to use a forking server if the service
-contains state in memory that can be modified by requests (since the
-modifications in the child process would never reach the initial state
-kept in the parent process and passed to each child).  In this case,
-you can use a threading server, but you will probably have to use
-locks to avoid two requests that come in nearly simultaneous to apply
-conflicting changes to the server state.
-
-On the other hand, if you are building e.g. an HTTP server, where all
-data is stored externally (e.g. in the file system), a synchronous
-class will essentially render the service "deaf" while one request is
-being handled -- which may be for a very long time if a client is slow
-to reqd all the data it has requested.  Here a threading or forking
-server is appropriate.
-
-In some cases, it may be appropriate to process part of a request
-synchronously, but to finish processing in a forked child depending on
-the request data.  This can be implemented by using a synchronous
-server and doing an explicit fork in the request handler class
-handle() method.
-
-Another approach to handling multiple simultaneous requests in an
-environment that supports neither threads nor fork (or where these are
-too expensive or inappropriate for the service) is to maintain an
-explicit table of partially finished requests and to use select() to
-decide which request to work on next (or whether to handle a new
-incoming request).  This is particularly important for stream services
-where each client can potentially be connected for a long time (if
-threads or subprocesses cannot be used).
-
-Future work:
-- Standard classes for Sun RPC (which uses either UDP or TCP)
-- Standard mix-in classes to implement various authentication
-  and encryption schemes
-- Standard framework for select-based multiplexing
-
-XXX Open problems:
-- What to do with out-of-band data?
-
-BaseServer:
-- split generic "request" functionality out into BaseServer class.
-  Copyright (C) 2000  Luke Kenneth Casson Leighton <lkcl@samba.org>
-
-  example: read entries from a SQL database (requires overriding
-  get_request() to return a table entry from the database).
-  entry is processed by a RequestHandlerClass.
-
-"""
-
-# Author of the BaseServer patch: Luke Kenneth Casson Leighton
-
-# XXX Warning!
-# There is a test suite for this module, but it cannot be run by the
-# standard regression test.
-# To run it manually, run Lib/test/test_socketserver.py.
-
-__version__ = "0.4"
-
-
-import socket
-import select
-import sys
-import os
-try:
-    import threading
-except ImportError:
-    import dummy_threading as threading
-
-__all__ = ["TCPServer","UDPServer","ForkingUDPServer","ForkingTCPServer",
-           "ThreadingUDPServer","ThreadingTCPServer","BaseRequestHandler",
-           "StreamRequestHandler","DatagramRequestHandler",
-           "ThreadingMixIn", "ForkingMixIn"]
-if hasattr(socket, "AF_UNIX"):
-    __all__.extend(["UnixStreamServer","UnixDatagramServer",
-                    "ThreadingUnixStreamServer",
-                    "ThreadingUnixDatagramServer"])
-
-class BaseServer:
-
-    """Base class for server classes.
-
-    Methods for the caller:
-
-    - __init__(server_address, RequestHandlerClass)
-    - serve_forever(poll_interval=0.5)
-    - shutdown()
-    - handle_request()  # if you do not use serve_forever()
-    - fileno() -> int   # for select()
-
-    Methods that may be overridden:
-
-    - server_bind()
-    - server_activate()
-    - get_request() -> request, client_address
-    - handle_timeout()
-    - verify_request(request, client_address)
-    - server_close()
-    - process_request(request, client_address)
-    - shutdown_request(request)
-    - close_request(request)
-    - handle_error()
-
-    Methods for derived classes:
-
-    - finish_request(request, client_address)
-
-    Class variables that may be overridden by derived classes or
-    instances:
-
-    - timeout
-    - address_family
-    - socket_type
-    - allow_reuse_address
-
-    Instance variables:
-
-    - RequestHandlerClass
-    - socket
-
-    """
-
-    timeout = None
-
-    def __init__(self, server_address, RequestHandlerClass):
-        """Constructor.  May be extended, do not override."""
-        self.server_address = server_address
-        self.RequestHandlerClass = RequestHandlerClass
-        self.__is_shut_down = threading.Event()
-        self.__shutdown_request = False
-
-    def server_activate(self):
-        """Called by constructor to activate the server.
-
-        May be overridden.
-
-        """
-        pass
-
-    def serve_forever(self, poll_interval=0.5):
-        """Handle one request at a time until shutdown.
-
-        Polls for shutdown every poll_interval seconds. Ignores
-        self.timeout. If you need to do periodic tasks, do them in
-        another thread.
-        """
-        self.__is_shut_down.clear()
-        try:
-            while not self.__shutdown_request:
-                # XXX: Consider using another file descriptor or
-                # connecting to the socket to wake this up instead of
-                # polling. Polling reduces our responsiveness to a
-                # shutdown request and wastes cpu at all other times.
-                r, w, e = select.select([self], [], [], poll_interval)
-                if self in r:
-                    self._handle_request_noblock()
-        finally:
-            self.__shutdown_request = False
-            self.__is_shut_down.set()
-
-    def shutdown(self):
-        """Stops the serve_forever loop.
-
-        Blocks until the loop has finished. This must be called while
-        serve_forever() is running in another thread, or it will
-        deadlock.
-        """
-        self.__shutdown_request = True
-        self.__is_shut_down.wait()
-
-    # The distinction between handling, getting, processing and
-    # finishing a request is fairly arbitrary.  Remember:
-    #
-    # - handle_request() is the top-level call.  It calls
-    #   select, get_request(), verify_request() and process_request()
-    # - get_request() is different for stream or datagram sockets
-    # - process_request() is the place that may fork a new process
-    #   or create a new thread to finish the request
-    # - finish_request() instantiates the request handler class;
-    #   this constructor will handle the request all by itself
-
-    def handle_request(self):
-        """Handle one request, possibly blocking.
-
-        Respects self.timeout.
-        """
-        # Support people who used socket.settimeout() to escape
-        # handle_request before self.timeout was available.
-        timeout = self.socket.gettimeout()
-        if timeout is None:
-            timeout = self.timeout
-        elif self.timeout is not None:
-            timeout = min(timeout, self.timeout)
-        fd_sets = select.select([self], [], [], timeout)
-        if not fd_sets[0]:
-            self.handle_timeout()
-            return
-        self._handle_request_noblock()
-
-    def _handle_request_noblock(self):
-        """Handle one request, without blocking.
-
-        I assume that select.select has returned that the socket is
-        readable before this function was called, so there should be
-        no risk of blocking in get_request().
-        """
-        try:
-            request, client_address = self.get_request()
-        except socket.error:
-            return
-        if self.verify_request(request, client_address):
-            try:
-                self.process_request(request, client_address)
-            except:
-                self.handle_error(request, client_address)
-                self.shutdown_request(request)
-
-    def handle_timeout(self):
-        """Called if no new request arrives within self.timeout.
-
-        Overridden by ForkingMixIn.
-        """
-        pass
-
-    def verify_request(self, request, client_address):
-        """Verify the request.  May be overridden.
-
-        Return True if we should proceed with this request.
-
-        """
-        return True
-
-    def process_request(self, request, client_address):
-        """Call finish_request.
-
-        Overridden by ForkingMixIn and ThreadingMixIn.
-
-        """
-        self.finish_request(request, client_address)
-        self.shutdown_request(request)
-
-    def server_close(self):
-        """Called to clean-up the server.
-
-        May be overridden.
-
-        """
-        pass
-
-    def finish_request(self, request, client_address):
-        """Finish one request by instantiating RequestHandlerClass."""
-        self.RequestHandlerClass(request, client_address, self)
-
-    def shutdown_request(self, request):
-        """Called to shutdown and close an individual request."""
-        self.close_request(request)
-
-    def close_request(self, request):
-        """Called to clean up an individual request."""
-        pass
-
-    def handle_error(self, request, client_address):
-        """Handle an error gracefully.  May be overridden.
-
-        The default is to print a traceback and continue.
-
-        """
-        print '-'*40
-        print 'Exception happened during processing of request from',
-        print client_address
-        import traceback
-        traceback.print_exc() # XXX But this goes to stderr!
-        print '-'*40
-
-
-class TCPServer(BaseServer):
-
-    """Base class for various socket-based server classes.
-
-    Defaults to synchronous IP stream (i.e., TCP).
-
-    Methods for the caller:
-
-    - __init__(server_address, RequestHandlerClass, bind_and_activate=True)
-    - serve_forever(poll_interval=0.5)
-    - shutdown()
-    - handle_request()  # if you don't use serve_forever()
-    - fileno() -> int   # for select()
-
-    Methods that may be overridden:
-
-    - server_bind()
-    - server_activate()
-    - get_request() -> request, client_address
-    - handle_timeout()
-    - verify_request(request, client_address)
-    - process_request(request, client_address)
-    - shutdown_request(request)
-    - close_request(request)
-    - handle_error()
-
-    Methods for derived classes:
-
-    - finish_request(request, client_address)
-
-    Class variables that may be overridden by derived classes or
-    instances:
-
-    - timeout
-    - address_family
-    - socket_type
-    - request_queue_size (only for stream sockets)
-    - allow_reuse_address
-
-    Instance variables:
-
-    - server_address
-    - RequestHandlerClass
-    - socket
-
-    """
-
-    address_family = socket.AF_INET
-
-    socket_type = socket.SOCK_STREAM
-
-    request_queue_size = 5
-
-    allow_reuse_address = False
-
-    def __init__(self, server_address, RequestHandlerClass, bind_and_activate=True):
-        """Constructor.  May be extended, do not override."""
-        BaseServer.__init__(self, server_address, RequestHandlerClass)
-        self.socket = socket.socket(self.address_family,
-                                    self.socket_type)
-        if bind_and_activate:
-            self.server_bind()
-            self.server_activate()
-
-    def server_bind(self):
-        """Called by constructor to bind the socket.
-
-        May be overridden.
-
-        """
-        if self.allow_reuse_address:
-            self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-        self.socket.bind(self.server_address)
-        self.server_address = self.socket.getsockname()
-
-    def server_activate(self):
-        """Called by constructor to activate the server.
-
-        May be overridden.
-
-        """
-        self.socket.listen(self.request_queue_size)
-
-    def server_close(self):
-        """Called to clean-up the server.
-
-        May be overridden.
-
-        """
-        self.socket.close()
-
-    def fileno(self):
-        """Return socket file number.
-
-        Interface required by select().
-
-        """
-        return self.socket.fileno()
-
-    def get_request(self):
-        """Get the request and client address from the socket.
-
-        May be overridden.
-
-        """
-        return self.socket.accept()
-
-    def shutdown_request(self, request):
-        """Called to shutdown and close an individual request."""
-        try:
-            #explicitly shutdown.  socket.close() merely releases
-            #the socket and waits for GC to perform the actual close.
-            request.shutdown(socket.SHUT_WR)
-        except socket.error:
-            pass #some platforms may raise ENOTCONN here
-        self.close_request(request)
-
-    def close_request(self, request):
-        """Called to clean up an individual request."""
-        request.close()
-
-
-class UDPServer(TCPServer):
-
-    """UDP server class."""
-
-    allow_reuse_address = False
-
-    socket_type = socket.SOCK_DGRAM
-
-    max_packet_size = 8192
-
-    def get_request(self):
-        data, client_addr = self.socket.recvfrom(self.max_packet_size)
-        return (data, self.socket), client_addr
-
-    def server_activate(self):
-        # No need to call listen() for UDP.
-        pass
-
-    def shutdown_request(self, request):
-        # No need to shutdown anything.
-        self.close_request(request)
-
-    def close_request(self, request):
-        # No need to close anything.
-        pass
-
-class ForkingMixIn:
-
-    """Mix-in class to handle each request in a new process."""
-
-    timeout = 300
-    active_children = None
-    max_children = 40
-
-    def collect_children(self):
-        """Internal routine to wait for children that have exited."""
-        if self.active_children is None: return
-        while len(self.active_children) >= self.max_children:
-            # XXX: This will wait for any child process, not just ones
-            # spawned by this library. This could confuse other
-            # libraries that expect to be able to wait for their own
-            # children.
-            try:
-                pid, status = os.waitpid(0, 0)
-            except os.error:
-                pid = None
-            if pid not in self.active_children: continue
-            self.active_children.remove(pid)
-
-        # XXX: This loop runs more system calls than it ought
-        # to. There should be a way to put the active_children into a
-        # process group and then use os.waitpid(-pgid) to wait for any
-        # of that set, but I couldn't find a way to allocate pgids
-        # that couldn't collide.
-        for child in self.active_children:
-            try:
-                pid, status = os.waitpid(child, os.WNOHANG)
-            except os.error:
-                pid = None
-            if not pid: continue
-            try:
-                self.active_children.remove(pid)
-            except ValueError, e:
-                raise ValueError('%s. x=%d and list=%r' % (e.message, pid,
-                                                           self.active_children))
-
-    def handle_timeout(self):
-        """Wait for zombies after self.timeout seconds of inactivity.
-
-        May be extended, do not override.
-        """
-        self.collect_children()
-
-    def process_request(self, request, client_address):
-        """Fork a new subprocess to process the request."""
-        self.collect_children()
-        pid = os.fork()
-        if pid:
-            # Parent process
-            if self.active_children is None:
-                self.active_children = []
-            self.active_children.append(pid)
-            self.close_request(request) #close handle in parent process
-            return
-        else:
-            # Child process.
-            # This must never return, hence os._exit()!
-            try:
-                self.finish_request(request, client_address)
-                self.shutdown_request(request)
-                os._exit(0)
-            except:
-                try:
-                    self.handle_error(request, client_address)
-                    self.shutdown_request(request)
-                finally:
-                    os._exit(1)
-
-
-class ThreadingMixIn:
-    """Mix-in class to handle each request in a new thread."""
-
-    # Decides how threads will act upon termination of the
-    # main process
-    daemon_threads = False
-
-    def process_request_thread(self, request, client_address):
-        """Same as in BaseServer but as a thread.
-
-        In addition, exception handling is done here.
-
-        """
-        try:
-            self.finish_request(request, client_address)
-            self.shutdown_request(request)
-        except:
-            self.handle_error(request, client_address)
-            self.shutdown_request(request)
-
-    def process_request(self, request, client_address):
-        """Start a new thread to process the request."""
-        t = threading.Thread(target = self.process_request_thread,
-                             args = (request, client_address))
-        if self.daemon_threads:
-            t.setDaemon (1)
-        t.start()
-
-
-class ForkingUDPServer(ForkingMixIn, UDPServer): pass
-class ForkingTCPServer(ForkingMixIn, TCPServer): pass
-
-class ThreadingUDPServer(ThreadingMixIn, UDPServer): pass
-class ThreadingTCPServer(ThreadingMixIn, TCPServer): pass
-
-if hasattr(socket, 'AF_UNIX'):
-
-    class UnixStreamServer(TCPServer):
-        address_family = socket.AF_UNIX
-
-    class UnixDatagramServer(UDPServer):
-        address_family = socket.AF_UNIX
-
-    class ThreadingUnixStreamServer(ThreadingMixIn, UnixStreamServer): pass
-
-    class ThreadingUnixDatagramServer(ThreadingMixIn, UnixDatagramServer): pass
-
-class BaseRequestHandler:
-
-    """Base class for request handler classes.
-
-    This class is instantiated for each request to be handled.  The
-    constructor sets the instance variables request, client_address
-    and server, and then calls the handle() method.  To implement a
-    specific service, all you need to do is to derive a class which
-    defines a handle() method.
-
-    The handle() method can find the request as self.request, the
-    client address as self.client_address, and the server (in case it
-    needs access to per-server information) as self.server.  Since a
-    separate instance is created for each request, the handle() method
-    can define arbitrary other instance variariables.
-
-    """
-
-    def __init__(self, request, client_address, server):
-        self.request = request
-        self.client_address = client_address
-        self.server = server
-        self.setup()
-        try:
-            self.handle()
-        finally:
-            self.finish()
-
-    def setup(self):
-        pass
-
-    def handle(self):
-        pass
-
-    def finish(self):
-        pass
-
-
-# The following two classes make it possible to use the same service
-# class for stream or datagram servers.
-# Each class sets up these instance variables:
-# - rfile: a file object from which receives the request is read
-# - wfile: a file object to which the reply is written
-# When the handle() method returns, wfile is flushed properly
-
-
-class StreamRequestHandler(BaseRequestHandler):
-
-    """Define self.rfile and self.wfile for stream sockets."""
-
-    # Default buffer sizes for rfile, wfile.
-    # We default rfile to buffered because otherwise it could be
-    # really slow for large data (a getc() call per byte); we make
-    # wfile unbuffered because (a) often after a write() we want to
-    # read and we need to flush the line; (b) big writes to unbuffered
-    # files are typically optimized by stdio even when big reads
-    # aren't.
-    rbufsize = -1
-    wbufsize = 0
-
-    # A timeout to apply to the request socket, if not None.
-    timeout = None
-
-    # Disable nagle algorithm for this socket, if True.
-    # Use only when wbufsize != 0, to avoid small packets.
-    disable_nagle_algorithm = False
-
-    def setup(self):
-        self.connection = self.request
-        if self.timeout is not None:
-            self.connection.settimeout(self.timeout)
-        if self.disable_nagle_algorithm:
-            self.connection.setsockopt(socket.IPPROTO_TCP,
-                                       socket.TCP_NODELAY, True)
-        self.rfile = self.connection.makefile('rb', self.rbufsize)
-        self.wfile = self.connection.makefile('wb', self.wbufsize)
-
-    def finish(self):
-        if not self.wfile.closed:
-            self.wfile.flush()
-        self.wfile.close()
-        self.rfile.close()
-
-
-class DatagramRequestHandler(BaseRequestHandler):
-
-    # XXX Regrettably, I cannot get this working on Linux;
-    # s.recvfrom() doesn't return a meaningful client address.
-
-    """Define self.rfile and self.wfile for datagram sockets."""
-
-    def setup(self):
-        try:
-            from cStringIO import StringIO
-        except ImportError:
-            from StringIO import StringIO
-        self.packet, self.socket = self.request
-        self.rfile = StringIO(self.packet)
-        self.wfile = StringIO()
-
-    def finish(self):
-        self.socket.sendto(self.wfile.getvalue(), self.client_address)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/StringIO.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/StringIO.py
deleted file mode 100644
index 6fe0e80..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/StringIO.py
+++ /dev/null
@@ -1,324 +0,0 @@
-r"""File-like objects that read from or write to a string buffer.
-
-This implements (nearly) all stdio methods.
-
-f = StringIO()      # ready for writing
-f = StringIO(buf)   # ready for reading
-f.close()           # explicitly release resources held
-flag = f.isatty()   # always false
-pos = f.tell()      # get current position
-f.seek(pos)         # set current position
-f.seek(pos, mode)   # mode 0: absolute; 1: relative; 2: relative to EOF
-buf = f.read()      # read until EOF
-buf = f.read(n)     # read up to n bytes
-buf = f.readline()  # read until end of line ('\n') or EOF
-list = f.readlines()# list of f.readline() results until EOF
-f.truncate([size])  # truncate file at to at most size (default: current pos)
-f.write(buf)        # write at current position
-f.writelines(list)  # for line in list: f.write(line)
-f.getvalue()        # return whole file's contents as a string
-
-Notes:
-- Using a real file is often faster (but less convenient).
-- There's also a much faster implementation in C, called cStringIO, but
-  it's not subclassable.
-- fileno() is left unimplemented so that code which uses it triggers
-  an exception early.
-- Seeking far beyond EOF and then writing will insert real null
-  bytes that occupy space in the buffer.
-- There's a simple test set (see end of this file).
-"""
-try:
-    from errno import EINVAL
-except ImportError:
-    EINVAL = 22
-
-__all__ = ["StringIO"]
-
-def _complain_ifclosed(closed):
-    if closed:
-        raise ValueError, "I/O operation on closed file"
-
-class StringIO:
-    """class StringIO([buffer])
-
-    When a StringIO object is created, it can be initialized to an existing
-    string by passing the string to the constructor. If no string is given,
-    the StringIO will start empty.
-
-    The StringIO object can accept either Unicode or 8-bit strings, but
-    mixing the two may take some care. If both are used, 8-bit strings that
-    cannot be interpreted as 7-bit ASCII (that use the 8th bit) will cause
-    a UnicodeError to be raised when getvalue() is called.
-    """
-    def __init__(self, buf = ''):
-        # Force self.buf to be a string or unicode
-        if not isinstance(buf, basestring):
-            buf = str(buf)
-        self.buf = buf
-        self.len = len(buf)
-        self.buflist = []
-        self.pos = 0
-        self.closed = False
-        self.softspace = 0
-
-    def __iter__(self):
-        return self
-
-    def next(self):
-        """A file object is its own iterator, for example iter(f) returns f
-        (unless f is closed). When a file is used as an iterator, typically
-        in a for loop (for example, for line in f: print line), the next()
-        method is called repeatedly. This method returns the next input line,
-        or raises StopIteration when EOF is hit.
-        """
-        _complain_ifclosed(self.closed)
-        r = self.readline()
-        if not r:
-            raise StopIteration
-        return r
-
-    def close(self):
-        """Free the memory buffer.
-        """
-        if not self.closed:
-            self.closed = True
-            del self.buf, self.pos
-
-    def isatty(self):
-        """Returns False because StringIO objects are not connected to a
-        tty-like device.
-        """
-        _complain_ifclosed(self.closed)
-        return False
-
-    def seek(self, pos, mode = 0):
-        """Set the file's current position.
-
-        The mode argument is optional and defaults to 0 (absolute file
-        positioning); other values are 1 (seek relative to the current
-        position) and 2 (seek relative to the file's end).
-
-        There is no return value.
-        """
-        _complain_ifclosed(self.closed)
-        if self.buflist:
-            self.buf += ''.join(self.buflist)
-            self.buflist = []
-        if mode == 1:
-            pos += self.pos
-        elif mode == 2:
-            pos += self.len
-        self.pos = max(0, pos)
-
-    def tell(self):
-        """Return the file's current position."""
-        _complain_ifclosed(self.closed)
-        return self.pos
-
-    def read(self, n = -1):
-        """Read at most size bytes from the file
-        (less if the read hits EOF before obtaining size bytes).
-
-        If the size argument is negative or omitted, read all data until EOF
-        is reached. The bytes are returned as a string object. An empty
-        string is returned when EOF is encountered immediately.
-        """
-        _complain_ifclosed(self.closed)
-        if self.buflist:
-            self.buf += ''.join(self.buflist)
-            self.buflist = []
-        if n is None or n < 0:
-            newpos = self.len
-        else:
-            newpos = min(self.pos+n, self.len)
-        r = self.buf[self.pos:newpos]
-        self.pos = newpos
-        return r
-
-    def readline(self, length=None):
-        r"""Read one entire line from the file.
-
-        A trailing newline character is kept in the string (but may be absent
-        when a file ends with an incomplete line). If the size argument is
-        present and non-negative, it is a maximum byte count (including the
-        trailing newline) and an incomplete line may be returned.
-
-        An empty string is returned only when EOF is encountered immediately.
-
-        Note: Unlike stdio's fgets(), the returned string contains null
-        characters ('\0') if they occurred in the input.
-        """
-        _complain_ifclosed(self.closed)
-        if self.buflist:
-            self.buf += ''.join(self.buflist)
-            self.buflist = []
-        i = self.buf.find('\n', self.pos)
-        if i < 0:
-            newpos = self.len
-        else:
-            newpos = i+1
-        if length is not None and length > 0:
-            if self.pos + length < newpos:
-                newpos = self.pos + length
-        r = self.buf[self.pos:newpos]
-        self.pos = newpos
-        return r
-
-    def readlines(self, sizehint = 0):
-        """Read until EOF using readline() and return a list containing the
-        lines thus read.
-
-        If the optional sizehint argument is present, instead of reading up
-        to EOF, whole lines totalling approximately sizehint bytes (or more
-        to accommodate a final whole line).
-        """
-        total = 0
-        lines = []
-        line = self.readline()
-        while line:
-            lines.append(line)
-            total += len(line)
-            if 0 < sizehint <= total:
-                break
-            line = self.readline()
-        return lines
-
-    def truncate(self, size=None):
-        """Truncate the file's size.
-
-        If the optional size argument is present, the file is truncated to
-        (at most) that size. The size defaults to the current position.
-        The current file position is not changed unless the position
-        is beyond the new file size.
-
-        If the specified size exceeds the file's current size, the
-        file remains unchanged.
-        """
-        _complain_ifclosed(self.closed)
-        if size is None:
-            size = self.pos
-        elif size < 0:
-            raise IOError(EINVAL, "Negative size not allowed")
-        elif size < self.pos:
-            self.pos = size
-        self.buf = self.getvalue()[:size]
-        self.len = size
-
-    def write(self, s):
-        """Write a string to the file.
-
-        There is no return value.
-        """
-        _complain_ifclosed(self.closed)
-        if not s: return
-        # Force s to be a string or unicode
-        if not isinstance(s, basestring):
-            s = str(s)
-        spos = self.pos
-        slen = self.len
-        if spos == slen:
-            self.buflist.append(s)
-            self.len = self.pos = spos + len(s)
-            return
-        if spos > slen:
-            self.buflist.append('\0'*(spos - slen))
-            slen = spos
-        newpos = spos + len(s)
-        if spos < slen:
-            if self.buflist:
-                self.buf += ''.join(self.buflist)
-            self.buflist = [self.buf[:spos], s, self.buf[newpos:]]
-            self.buf = ''
-            if newpos > slen:
-                slen = newpos
-        else:
-            self.buflist.append(s)
-            slen = newpos
-        self.len = slen
-        self.pos = newpos
-
-    def writelines(self, iterable):
-        """Write a sequence of strings to the file. The sequence can be any
-        iterable object producing strings, typically a list of strings. There
-        is no return value.
-
-        (The name is intended to match readlines(); writelines() does not add
-        line separators.)
-        """
-        write = self.write
-        for line in iterable:
-            write(line)
-
-    def flush(self):
-        """Flush the internal buffer
-        """
-        _complain_ifclosed(self.closed)
-
-    def getvalue(self):
-        """
-        Retrieve the entire contents of the "file" at any time before
-        the StringIO object's close() method is called.
-
-        The StringIO object can accept either Unicode or 8-bit strings,
-        but mixing the two may take some care. If both are used, 8-bit
-        strings that cannot be interpreted as 7-bit ASCII (that use the
-        8th bit) will cause a UnicodeError to be raised when getvalue()
-        is called.
-        """
-        _complain_ifclosed(self.closed)
-        if self.buflist:
-            self.buf += ''.join(self.buflist)
-            self.buflist = []
-        return self.buf
-
-
-# A little test suite
-
-def test():
-    import sys
-    if sys.argv[1:]:
-        file = sys.argv[1]
-    else:
-        file = '/etc/passwd'
-    lines = open(file, 'r').readlines()
-    text = open(file, 'r').read()
-    f = StringIO()
-    for line in lines[:-2]:
-        f.write(line)
-    f.writelines(lines[-2:])
-    if f.getvalue() != text:
-        raise RuntimeError, 'write failed'
-    length = f.tell()
-    print 'File length =', length
-    f.seek(len(lines[0]))
-    f.write(lines[1])
-    f.seek(0)
-    print 'First line =', repr(f.readline())
-    print 'Position =', f.tell()
-    line = f.readline()
-    print 'Second line =', repr(line)
-    f.seek(-len(line), 1)
-    line2 = f.read(len(line))
-    if line != line2:
-        raise RuntimeError, 'bad result after seek back'
-    f.seek(len(line2), 1)
-    list = f.readlines()
-    line = list[-1]
-    f.seek(f.tell() - len(line))
-    line2 = f.read()
-    if line != line2:
-        raise RuntimeError, 'bad result after seek back from EOF'
-    print 'Read', len(list), 'more lines'
-    print 'File length =', f.tell()
-    if f.tell() != length:
-        raise RuntimeError, 'bad length'
-    f.truncate(length/2)
-    f.seek(0, 2)
-    print 'Truncated length =', f.tell()
-    if f.tell() != length/2:
-        raise RuntimeError, 'truncate did not adjust length'
-    f.close()
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/UserDict.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/UserDict.py
deleted file mode 100644
index 67822a3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/UserDict.py
+++ /dev/null
@@ -1,180 +0,0 @@
-"""A more or less complete user-defined wrapper around dictionary objects."""
-
-class UserDict:
-    def __init__(self, dict=None, **kwargs):
-        self.data = {}
-        if dict is not None:
-            self.update(dict)
-        if len(kwargs):
-            self.update(kwargs)
-    def __repr__(self): return repr(self.data)
-    def __cmp__(self, dict):
-        if isinstance(dict, UserDict):
-            return cmp(self.data, dict.data)
-        else:
-            return cmp(self.data, dict)
-    __hash__ = None # Avoid Py3k warning
-    def __len__(self): return len(self.data)
-    def __getitem__(self, key):
-        if key in self.data:
-            return self.data[key]
-        if hasattr(self.__class__, "__missing__"):
-            return self.__class__.__missing__(self, key)
-        raise KeyError(key)
-    def __setitem__(self, key, item): self.data[key] = item
-    def __delitem__(self, key): del self.data[key]
-    def clear(self): self.data.clear()
-    def copy(self):
-        if self.__class__ is UserDict:
-            return UserDict(self.data.copy())
-        import copy
-        data = self.data
-        try:
-            self.data = {}
-            c = copy.copy(self)
-        finally:
-            self.data = data
-        c.update(self)
-        return c
-    def keys(self): return self.data.keys()
-    def items(self): return self.data.items()
-    def iteritems(self): return self.data.iteritems()
-    def iterkeys(self): return self.data.iterkeys()
-    def itervalues(self): return self.data.itervalues()
-    def values(self): return self.data.values()
-    def has_key(self, key): return key in self.data
-    def update(self, dict=None, **kwargs):
-        if dict is None:
-            pass
-        elif isinstance(dict, UserDict):
-            self.data.update(dict.data)
-        elif isinstance(dict, type({})) or not hasattr(dict, 'items'):
-            self.data.update(dict)
-        else:
-            for k, v in dict.items():
-                self[k] = v
-        if len(kwargs):
-            self.data.update(kwargs)
-    def get(self, key, failobj=None):
-        if key not in self:
-            return failobj
-        return self[key]
-    def setdefault(self, key, failobj=None):
-        if key not in self:
-            self[key] = failobj
-        return self[key]
-    def pop(self, key, *args):
-        return self.data.pop(key, *args)
-    def popitem(self):
-        return self.data.popitem()
-    def __contains__(self, key):
-        return key in self.data
-    @classmethod
-    def fromkeys(cls, iterable, value=None):
-        d = cls()
-        for key in iterable:
-            d[key] = value
-        return d
-
-class IterableUserDict(UserDict):
-    def __iter__(self):
-        return iter(self.data)
-
-import _abcoll
-_abcoll.MutableMapping.register(IterableUserDict)
-
-
-class DictMixin:
-    # Mixin defining all dictionary methods for classes that already have
-    # a minimum dictionary interface including getitem, setitem, delitem,
-    # and keys. Without knowledge of the subclass constructor, the mixin
-    # does not define __init__() or copy().  In addition to the four base
-    # methods, progressively more efficiency comes with defining
-    # __contains__(), __iter__(), and iteritems().
-
-    # second level definitions support higher levels
-    def __iter__(self):
-        for k in self.keys():
-            yield k
-    def has_key(self, key):
-        try:
-            self[key]
-        except KeyError:
-            return False
-        return True
-    def __contains__(self, key):
-        return self.has_key(key)
-
-    # third level takes advantage of second level definitions
-    def iteritems(self):
-        for k in self:
-            yield (k, self[k])
-    def iterkeys(self):
-        return self.__iter__()
-
-    # fourth level uses definitions from lower levels
-    def itervalues(self):
-        for _, v in self.iteritems():
-            yield v
-    def values(self):
-        return [v for _, v in self.iteritems()]
-    def items(self):
-        return list(self.iteritems())
-    def clear(self):
-        for key in self.keys():
-            del self[key]
-    def setdefault(self, key, default=None):
-        try:
-            return self[key]
-        except KeyError:
-            self[key] = default
-        return default
-    def pop(self, key, *args):
-        if len(args) > 1:
-            raise TypeError, "pop expected at most 2 arguments, got "\
-                              + repr(1 + len(args))
-        try:
-            value = self[key]
-        except KeyError:
-            if args:
-                return args[0]
-            raise
-        del self[key]
-        return value
-    def popitem(self):
-        try:
-            k, v = self.iteritems().next()
-        except StopIteration:
-            raise KeyError, 'container is empty'
-        del self[k]
-        return (k, v)
-    def update(self, other=None, **kwargs):
-        # Make progressively weaker assumptions about "other"
-        if other is None:
-            pass
-        elif hasattr(other, 'iteritems'):  # iteritems saves memory and lookups
-            for k, v in other.iteritems():
-                self[k] = v
-        elif hasattr(other, 'keys'):
-            for k in other.keys():
-                self[k] = other[k]
-        else:
-            for k, v in other:
-                self[k] = v
-        if kwargs:
-            self.update(kwargs)
-    def get(self, key, default=None):
-        try:
-            return self[key]
-        except KeyError:
-            return default
-    def __repr__(self):
-        return repr(dict(self.iteritems()))
-    def __cmp__(self, other):
-        if other is None:
-            return 1
-        if isinstance(other, DictMixin):
-            other = dict(other.iteritems())
-        return cmp(dict(self.iteritems()), other)
-    def __len__(self):
-        return len(self.keys())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/UserList.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/UserList.py
deleted file mode 100644
index 51d58b0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/UserList.py
+++ /dev/null
@@ -1,88 +0,0 @@
-"""A more or less complete user-defined wrapper around list objects."""
-
-import collections
-
-class UserList(collections.MutableSequence):
-    def __init__(self, initlist=None):
-        self.data = []
-        if initlist is not None:
-            # XXX should this accept an arbitrary sequence?
-            if type(initlist) == type(self.data):
-                self.data[:] = initlist
-            elif isinstance(initlist, UserList):
-                self.data[:] = initlist.data[:]
-            else:
-                self.data = list(initlist)
-    def __repr__(self): return repr(self.data)
-    def __lt__(self, other): return self.data <  self.__cast(other)
-    def __le__(self, other): return self.data <= self.__cast(other)
-    def __eq__(self, other): return self.data == self.__cast(other)
-    def __ne__(self, other): return self.data != self.__cast(other)
-    def __gt__(self, other): return self.data >  self.__cast(other)
-    def __ge__(self, other): return self.data >= self.__cast(other)
-    def __cast(self, other):
-        if isinstance(other, UserList): return other.data
-        else: return other
-    def __cmp__(self, other):
-        return cmp(self.data, self.__cast(other))
-    __hash__ = None # Mutable sequence, so not hashable
-    def __contains__(self, item): return item in self.data
-    def __len__(self): return len(self.data)
-    def __getitem__(self, i): return self.data[i]
-    def __setitem__(self, i, item): self.data[i] = item
-    def __delitem__(self, i): del self.data[i]
-    def __getslice__(self, i, j):
-        i = max(i, 0); j = max(j, 0)
-        return self.__class__(self.data[i:j])
-    def __setslice__(self, i, j, other):
-        i = max(i, 0); j = max(j, 0)
-        if isinstance(other, UserList):
-            self.data[i:j] = other.data
-        elif isinstance(other, type(self.data)):
-            self.data[i:j] = other
-        else:
-            self.data[i:j] = list(other)
-    def __delslice__(self, i, j):
-        i = max(i, 0); j = max(j, 0)
-        del self.data[i:j]
-    def __add__(self, other):
-        if isinstance(other, UserList):
-            return self.__class__(self.data + other.data)
-        elif isinstance(other, type(self.data)):
-            return self.__class__(self.data + other)
-        else:
-            return self.__class__(self.data + list(other))
-    def __radd__(self, other):
-        if isinstance(other, UserList):
-            return self.__class__(other.data + self.data)
-        elif isinstance(other, type(self.data)):
-            return self.__class__(other + self.data)
-        else:
-            return self.__class__(list(other) + self.data)
-    def __iadd__(self, other):
-        if isinstance(other, UserList):
-            self.data += other.data
-        elif isinstance(other, type(self.data)):
-            self.data += other
-        else:
-            self.data += list(other)
-        return self
-    def __mul__(self, n):
-        return self.__class__(self.data*n)
-    __rmul__ = __mul__
-    def __imul__(self, n):
-        self.data *= n
-        return self
-    def append(self, item): self.data.append(item)
-    def insert(self, i, item): self.data.insert(i, item)
-    def pop(self, i=-1): return self.data.pop(i)
-    def remove(self, item): self.data.remove(item)
-    def count(self, item): return self.data.count(item)
-    def index(self, item, *args): return self.data.index(item, *args)
-    def reverse(self): self.data.reverse()
-    def sort(self, *args, **kwds): self.data.sort(*args, **kwds)
-    def extend(self, other):
-        if isinstance(other, UserList):
-            self.data.extend(other.data)
-        else:
-            self.data.extend(other)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/UserString.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/UserString.py
deleted file mode 100644
index b74bede..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/UserString.py
+++ /dev/null
@@ -1,228 +0,0 @@
-#!/usr/bin/env python
-## vim:ts=4:et:nowrap
-"""A user-defined wrapper around string objects
-
-Note: string objects have grown methods in Python 1.6
-This module requires Python 1.6 or later.
-"""
-import sys
-import collections
-
-__all__ = ["UserString","MutableString"]
-
-class UserString(collections.Sequence):
-    def __init__(self, seq):
-        if isinstance(seq, basestring):
-            self.data = seq
-        elif isinstance(seq, UserString):
-            self.data = seq.data[:]
-        else:
-            self.data = str(seq)
-    def __str__(self): return str(self.data)
-    def __repr__(self): return repr(self.data)
-    def __int__(self): return int(self.data)
-    def __long__(self): return long(self.data)
-    def __float__(self): return float(self.data)
-    def __complex__(self): return complex(self.data)
-    def __hash__(self): return hash(self.data)
-
-    def __cmp__(self, string):
-        if isinstance(string, UserString):
-            return cmp(self.data, string.data)
-        else:
-            return cmp(self.data, string)
-    def __contains__(self, char):
-        return char in self.data
-
-    def __len__(self): return len(self.data)
-    def __getitem__(self, index): return self.__class__(self.data[index])
-    def __getslice__(self, start, end):
-        start = max(start, 0); end = max(end, 0)
-        return self.__class__(self.data[start:end])
-
-    def __add__(self, other):
-        if isinstance(other, UserString):
-            return self.__class__(self.data + other.data)
-        elif isinstance(other, basestring):
-            return self.__class__(self.data + other)
-        else:
-            return self.__class__(self.data + str(other))
-    def __radd__(self, other):
-        if isinstance(other, basestring):
-            return self.__class__(other + self.data)
-        else:
-            return self.__class__(str(other) + self.data)
-    def __mul__(self, n):
-        return self.__class__(self.data*n)
-    __rmul__ = __mul__
-    def __mod__(self, args):
-        return self.__class__(self.data % args)
-
-    # the following methods are defined in alphabetical order:
-    def capitalize(self): return self.__class__(self.data.capitalize())
-    def center(self, width, *args):
-        return self.__class__(self.data.center(width, *args))
-    def count(self, sub, start=0, end=sys.maxint):
-        return self.data.count(sub, start, end)
-    def decode(self, encoding=None, errors=None): # XXX improve this?
-        if encoding:
-            if errors:
-                return self.__class__(self.data.decode(encoding, errors))
-            else:
-                return self.__class__(self.data.decode(encoding))
-        else:
-            return self.__class__(self.data.decode())
-    def encode(self, encoding=None, errors=None): # XXX improve this?
-        if encoding:
-            if errors:
-                return self.__class__(self.data.encode(encoding, errors))
-            else:
-                return self.__class__(self.data.encode(encoding))
-        else:
-            return self.__class__(self.data.encode())
-    def endswith(self, suffix, start=0, end=sys.maxint):
-        return self.data.endswith(suffix, start, end)
-    def expandtabs(self, tabsize=8):
-        return self.__class__(self.data.expandtabs(tabsize))
-    def find(self, sub, start=0, end=sys.maxint):
-        return self.data.find(sub, start, end)
-    def index(self, sub, start=0, end=sys.maxint):
-        return self.data.index(sub, start, end)
-    def isalpha(self): return self.data.isalpha()
-    def isalnum(self): return self.data.isalnum()
-    def isdecimal(self): return self.data.isdecimal()
-    def isdigit(self): return self.data.isdigit()
-    def islower(self): return self.data.islower()
-    def isnumeric(self): return self.data.isnumeric()
-    def isspace(self): return self.data.isspace()
-    def istitle(self): return self.data.istitle()
-    def isupper(self): return self.data.isupper()
-    def join(self, seq): return self.data.join(seq)
-    def ljust(self, width, *args):
-        return self.__class__(self.data.ljust(width, *args))
-    def lower(self): return self.__class__(self.data.lower())
-    def lstrip(self, chars=None): return self.__class__(self.data.lstrip(chars))
-    def partition(self, sep):
-        return self.data.partition(sep)
-    def replace(self, old, new, maxsplit=-1):
-        return self.__class__(self.data.replace(old, new, maxsplit))
-    def rfind(self, sub, start=0, end=sys.maxint):
-        return self.data.rfind(sub, start, end)
-    def rindex(self, sub, start=0, end=sys.maxint):
-        return self.data.rindex(sub, start, end)
-    def rjust(self, width, *args):
-        return self.__class__(self.data.rjust(width, *args))
-    def rpartition(self, sep):
-        return self.data.rpartition(sep)
-    def rstrip(self, chars=None): return self.__class__(self.data.rstrip(chars))
-    def split(self, sep=None, maxsplit=-1):
-        return self.data.split(sep, maxsplit)
-    def rsplit(self, sep=None, maxsplit=-1):
-        return self.data.rsplit(sep, maxsplit)
-    def splitlines(self, keepends=0): return self.data.splitlines(keepends)
-    def startswith(self, prefix, start=0, end=sys.maxint):
-        return self.data.startswith(prefix, start, end)
-    def strip(self, chars=None): return self.__class__(self.data.strip(chars))
-    def swapcase(self): return self.__class__(self.data.swapcase())
-    def title(self): return self.__class__(self.data.title())
-    def translate(self, *args):
-        return self.__class__(self.data.translate(*args))
-    def upper(self): return self.__class__(self.data.upper())
-    def zfill(self, width): return self.__class__(self.data.zfill(width))
-
-class MutableString(UserString, collections.MutableSequence):
-    """mutable string objects
-
-    Python strings are immutable objects.  This has the advantage, that
-    strings may be used as dictionary keys.  If this property isn't needed
-    and you insist on changing string values in place instead, you may cheat
-    and use MutableString.
-
-    But the purpose of this class is an educational one: to prevent
-    people from inventing their own mutable string class derived
-    from UserString and than forget thereby to remove (override) the
-    __hash__ method inherited from UserString.  This would lead to
-    errors that would be very hard to track down.
-
-    A faster and better solution is to rewrite your program using lists."""
-    def __init__(self, string=""):
-        from warnings import warnpy3k
-        warnpy3k('the class UserString.MutableString has been removed in '
-                    'Python 3.0', stacklevel=2)
-        self.data = string
-
-    # We inherit object.__hash__, so we must deny this explicitly
-    __hash__ = None
-
-    def __setitem__(self, index, sub):
-        if isinstance(index, slice):
-            if isinstance(sub, UserString):
-                sub = sub.data
-            elif not isinstance(sub, basestring):
-                sub = str(sub)
-            start, stop, step = index.indices(len(self.data))
-            if step == -1:
-                start, stop = stop+1, start+1
-                sub = sub[::-1]
-            elif step != 1:
-                # XXX(twouters): I guess we should be reimplementing
-                # the extended slice assignment/deletion algorithm here...
-                raise TypeError, "invalid step in slicing assignment"
-            start = min(start, stop)
-            self.data = self.data[:start] + sub + self.data[stop:]
-        else:
-            if index < 0:
-                index += len(self.data)
-            if index < 0 or index >= len(self.data): raise IndexError
-            self.data = self.data[:index] + sub + self.data[index+1:]
-    def __delitem__(self, index):
-        if isinstance(index, slice):
-            start, stop, step = index.indices(len(self.data))
-            if step == -1:
-                start, stop = stop+1, start+1
-            elif step != 1:
-                # XXX(twouters): see same block in __setitem__
-                raise TypeError, "invalid step in slicing deletion"
-            start = min(start, stop)
-            self.data = self.data[:start] + self.data[stop:]
-        else:
-            if index < 0:
-                index += len(self.data)
-            if index < 0 or index >= len(self.data): raise IndexError
-            self.data = self.data[:index] + self.data[index+1:]
-    def __setslice__(self, start, end, sub):
-        start = max(start, 0); end = max(end, 0)
-        if isinstance(sub, UserString):
-            self.data = self.data[:start]+sub.data+self.data[end:]
-        elif isinstance(sub, basestring):
-            self.data = self.data[:start]+sub+self.data[end:]
-        else:
-            self.data =  self.data[:start]+str(sub)+self.data[end:]
-    def __delslice__(self, start, end):
-        start = max(start, 0); end = max(end, 0)
-        self.data = self.data[:start] + self.data[end:]
-    def immutable(self):
-        return UserString(self.data)
-    def __iadd__(self, other):
-        if isinstance(other, UserString):
-            self.data += other.data
-        elif isinstance(other, basestring):
-            self.data += other
-        else:
-            self.data += str(other)
-        return self
-    def __imul__(self, n):
-        self.data *= n
-        return self
-    def insert(self, index, value):
-        self[index:index] = value
-
-if __name__ == "__main__":
-    # execute the regression test to stdout, if called as a script:
-    import os
-    called_in_dir, called_as = os.path.split(sys.argv[0])
-    called_as, py = os.path.splitext(called_as)
-    if '-q' in sys.argv:
-        from test import test_support
-        test_support.verbose = 0
-    __import__('test.test_' + called_as.lower())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/_LWPCookieJar.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/_LWPCookieJar.py
deleted file mode 100644
index e0ccee6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/_LWPCookieJar.py
+++ /dev/null
@@ -1,170 +0,0 @@
-"""Load / save to libwww-perl (LWP) format files.
-
-Actually, the format is slightly extended from that used by LWP's
-(libwww-perl's) HTTP::Cookies, to avoid losing some RFC 2965 information
-not recorded by LWP.
-
-It uses the version string "2.0", though really there isn't an LWP Cookies
-2.0 format.  This indicates that there is extra information in here
-(domain_dot and # port_spec) while still being compatible with
-libwww-perl, I hope.
-
-"""
-
-import time, re
-from cookielib import (_warn_unhandled_exception, FileCookieJar, LoadError,
-                       Cookie, MISSING_FILENAME_TEXT,
-                       join_header_words, split_header_words,
-                       iso2time, time2isoz)
-
-def lwp_cookie_str(cookie):
-    """Return string representation of Cookie in an the LWP cookie file format.
-
-    Actually, the format is extended a bit -- see module docstring.
-
-    """
-    h = [(cookie.name, cookie.value),
-         ("path", cookie.path),
-         ("domain", cookie.domain)]
-    if cookie.port is not None: h.append(("port", cookie.port))
-    if cookie.path_specified: h.append(("path_spec", None))
-    if cookie.port_specified: h.append(("port_spec", None))
-    if cookie.domain_initial_dot: h.append(("domain_dot", None))
-    if cookie.secure: h.append(("secure", None))
-    if cookie.expires: h.append(("expires",
-                               time2isoz(float(cookie.expires))))
-    if cookie.discard: h.append(("discard", None))
-    if cookie.comment: h.append(("comment", cookie.comment))
-    if cookie.comment_url: h.append(("commenturl", cookie.comment_url))
-
-    keys = cookie._rest.keys()
-    keys.sort()
-    for k in keys:
-        h.append((k, str(cookie._rest[k])))
-
-    h.append(("version", str(cookie.version)))
-
-    return join_header_words([h])
-
-class LWPCookieJar(FileCookieJar):
-    """
-    The LWPCookieJar saves a sequence of"Set-Cookie3" lines.
-    "Set-Cookie3" is the format used by the libwww-perl libary, not known
-    to be compatible with any browser, but which is easy to read and
-    doesn't lose information about RFC 2965 cookies.
-
-    Additional methods
-
-    as_lwp_str(ignore_discard=True, ignore_expired=True)
-
-    """
-
-    def as_lwp_str(self, ignore_discard=True, ignore_expires=True):
-        """Return cookies as a string of "\n"-separated "Set-Cookie3" headers.
-
-        ignore_discard and ignore_expires: see docstring for FileCookieJar.save
-
-        """
-        now = time.time()
-        r = []
-        for cookie in self:
-            if not ignore_discard and cookie.discard:
-                continue
-            if not ignore_expires and cookie.is_expired(now):
-                continue
-            r.append("Set-Cookie3: %s" % lwp_cookie_str(cookie))
-        return "\n".join(r+[""])
-
-    def save(self, filename=None, ignore_discard=False, ignore_expires=False):
-        if filename is None:
-            if self.filename is not None: filename = self.filename
-            else: raise ValueError(MISSING_FILENAME_TEXT)
-
-        f = open(filename, "w")
-        try:
-            # There really isn't an LWP Cookies 2.0 format, but this indicates
-            # that there is extra information in here (domain_dot and
-            # port_spec) while still being compatible with libwww-perl, I hope.
-            f.write("#LWP-Cookies-2.0\n")
-            f.write(self.as_lwp_str(ignore_discard, ignore_expires))
-        finally:
-            f.close()
-
-    def _really_load(self, f, filename, ignore_discard, ignore_expires):
-        magic = f.readline()
-        if not re.search(self.magic_re, magic):
-            msg = ("%r does not look like a Set-Cookie3 (LWP) format "
-                   "file" % filename)
-            raise LoadError(msg)
-
-        now = time.time()
-
-        header = "Set-Cookie3:"
-        boolean_attrs = ("port_spec", "path_spec", "domain_dot",
-                         "secure", "discard")
-        value_attrs = ("version",
-                       "port", "path", "domain",
-                       "expires",
-                       "comment", "commenturl")
-
-        try:
-            while 1:
-                line = f.readline()
-                if line == "": break
-                if not line.startswith(header):
-                    continue
-                line = line[len(header):].strip()
-
-                for data in split_header_words([line]):
-                    name, value = data[0]
-                    standard = {}
-                    rest = {}
-                    for k in boolean_attrs:
-                        standard[k] = False
-                    for k, v in data[1:]:
-                        if k is not None:
-                            lc = k.lower()
-                        else:
-                            lc = None
-                        # don't lose case distinction for unknown fields
-                        if (lc in value_attrs) or (lc in boolean_attrs):
-                            k = lc
-                        if k in boolean_attrs:
-                            if v is None: v = True
-                            standard[k] = v
-                        elif k in value_attrs:
-                            standard[k] = v
-                        else:
-                            rest[k] = v
-
-                    h = standard.get
-                    expires = h("expires")
-                    discard = h("discard")
-                    if expires is not None:
-                        expires = iso2time(expires)
-                    if expires is None:
-                        discard = True
-                    domain = h("domain")
-                    domain_specified = domain.startswith(".")
-                    c = Cookie(h("version"), name, value,
-                               h("port"), h("port_spec"),
-                               domain, domain_specified, h("domain_dot"),
-                               h("path"), h("path_spec"),
-                               h("secure"),
-                               expires,
-                               discard,
-                               h("comment"),
-                               h("commenturl"),
-                               rest)
-                    if not ignore_discard and c.discard:
-                        continue
-                    if not ignore_expires and c.is_expired(now):
-                        continue
-                    self.set_cookie(c)
-
-        except IOError:
-            raise
-        except Exception:
-            _warn_unhandled_exception()
-            raise LoadError("invalid Set-Cookie3 format file %r: %r" %
-                            (filename, line))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/_MozillaCookieJar.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/_MozillaCookieJar.py
deleted file mode 100644
index 290340b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/_MozillaCookieJar.py
+++ /dev/null
@@ -1,149 +0,0 @@
-"""Mozilla / Netscape cookie loading / saving."""
-
-import re, time
-
-from cookielib import (_warn_unhandled_exception, FileCookieJar, LoadError,
-                       Cookie, MISSING_FILENAME_TEXT)
-
-class MozillaCookieJar(FileCookieJar):
-    """
-
-    WARNING: you may want to backup your browser's cookies file if you use
-    this class to save cookies.  I *think* it works, but there have been
-    bugs in the past!
-
-    This class differs from CookieJar only in the format it uses to save and
-    load cookies to and from a file.  This class uses the Mozilla/Netscape
-    `cookies.txt' format.  lynx uses this file format, too.
-
-    Don't expect cookies saved while the browser is running to be noticed by
-    the browser (in fact, Mozilla on unix will overwrite your saved cookies if
-    you change them on disk while it's running; on Windows, you probably can't
-    save at all while the browser is running).
-
-    Note that the Mozilla/Netscape format will downgrade RFC2965 cookies to
-    Netscape cookies on saving.
-
-    In particular, the cookie version and port number information is lost,
-    together with information about whether or not Path, Port and Discard were
-    specified by the Set-Cookie2 (or Set-Cookie) header, and whether or not the
-    domain as set in the HTTP header started with a dot (yes, I'm aware some
-    domains in Netscape files start with a dot and some don't -- trust me, you
-    really don't want to know any more about this).
-
-    Note that though Mozilla and Netscape use the same format, they use
-    slightly different headers.  The class saves cookies using the Netscape
-    header by default (Mozilla can cope with that).
-
-    """
-    magic_re = "#( Netscape)? HTTP Cookie File"
-    header = """\
-# Netscape HTTP Cookie File
-# http://www.netscape.com/newsref/std/cookie_spec.html
-# This is a generated file!  Do not edit.
-
-"""
-
-    def _really_load(self, f, filename, ignore_discard, ignore_expires):
-        now = time.time()
-
-        magic = f.readline()
-        if not re.search(self.magic_re, magic):
-            f.close()
-            raise LoadError(
-                "%r does not look like a Netscape format cookies file" %
-                filename)
-
-        try:
-            while 1:
-                line = f.readline()
-                if line == "": break
-
-                # last field may be absent, so keep any trailing tab
-                if line.endswith("\n"): line = line[:-1]
-
-                # skip comments and blank lines XXX what is $ for?
-                if (line.strip().startswith(("#", "$")) or
-                    line.strip() == ""):
-                    continue
-
-                domain, domain_specified, path, secure, expires, name, value = \
-                        line.split("\t")
-                secure = (secure == "TRUE")
-                domain_specified = (domain_specified == "TRUE")
-                if name == "":
-                    # cookies.txt regards 'Set-Cookie: foo' as a cookie
-                    # with no name, whereas cookielib regards it as a
-                    # cookie with no value.
-                    name = value
-                    value = None
-
-                initial_dot = domain.startswith(".")
-                assert domain_specified == initial_dot
-
-                discard = False
-                if expires == "":
-                    expires = None
-                    discard = True
-
-                # assume path_specified is false
-                c = Cookie(0, name, value,
-                           None, False,
-                           domain, domain_specified, initial_dot,
-                           path, False,
-                           secure,
-                           expires,
-                           discard,
-                           None,
-                           None,
-                           {})
-                if not ignore_discard and c.discard:
-                    continue
-                if not ignore_expires and c.is_expired(now):
-                    continue
-                self.set_cookie(c)
-
-        except IOError:
-            raise
-        except Exception:
-            _warn_unhandled_exception()
-            raise LoadError("invalid Netscape format cookies file %r: %r" %
-                            (filename, line))
-
-    def save(self, filename=None, ignore_discard=False, ignore_expires=False):
-        if filename is None:
-            if self.filename is not None: filename = self.filename
-            else: raise ValueError(MISSING_FILENAME_TEXT)
-
-        f = open(filename, "w")
-        try:
-            f.write(self.header)
-            now = time.time()
-            for cookie in self:
-                if not ignore_discard and cookie.discard:
-                    continue
-                if not ignore_expires and cookie.is_expired(now):
-                    continue
-                if cookie.secure: secure = "TRUE"
-                else: secure = "FALSE"
-                if cookie.domain.startswith("."): initial_dot = "TRUE"
-                else: initial_dot = "FALSE"
-                if cookie.expires is not None:
-                    expires = str(cookie.expires)
-                else:
-                    expires = ""
-                if cookie.value is None:
-                    # cookies.txt regards 'Set-Cookie: foo' as a cookie
-                    # with no name, whereas cookielib regards it as a
-                    # cookie with no value.
-                    name = ""
-                    value = cookie.name
-                else:
-                    name = cookie.name
-                    value = cookie.value
-                f.write(
-                    "\t".join([cookie.domain, initial_dot, cookie.path,
-                               secure, expires, name, value])+
-                    "\n")
-        finally:
-            f.close()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/__future__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/__future__.py
deleted file mode 100644
index bc37542..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/__future__.py
+++ /dev/null
@@ -1,128 +0,0 @@
-"""Record of phased-in incompatible language changes.
-
-Each line is of the form:
-
-    FeatureName = "_Feature(" OptionalRelease "," MandatoryRelease ","
-                              CompilerFlag ")"
-
-where, normally, OptionalRelease < MandatoryRelease, and both are 5-tuples
-of the same form as sys.version_info:
-
-    (PY_MAJOR_VERSION, # the 2 in 2.1.0a3; an int
-     PY_MINOR_VERSION, # the 1; an int
-     PY_MICRO_VERSION, # the 0; an int
-     PY_RELEASE_LEVEL, # "alpha", "beta", "candidate" or "final"; string
-     PY_RELEASE_SERIAL # the 3; an int
-    )
-
-OptionalRelease records the first release in which
-
-    from __future__ import FeatureName
-
-was accepted.
-
-In the case of MandatoryReleases that have not yet occurred,
-MandatoryRelease predicts the release in which the feature will become part
-of the language.
-
-Else MandatoryRelease records when the feature became part of the language;
-in releases at or after that, modules no longer need
-
-    from __future__ import FeatureName
-
-to use the feature in question, but may continue to use such imports.
-
-MandatoryRelease may also be None, meaning that a planned feature got
-dropped.
-
-Instances of class _Feature have two corresponding methods,
-.getOptionalRelease() and .getMandatoryRelease().
-
-CompilerFlag is the (bitfield) flag that should be passed in the fourth
-argument to the builtin function compile() to enable the feature in
-dynamically compiled code.  This flag is stored in the .compiler_flag
-attribute on _Future instances.  These values must match the appropriate
-#defines of CO_xxx flags in Include/compile.h.
-
-No feature line is ever to be deleted from this file.
-"""
-
-all_feature_names = [
-    "nested_scopes",
-    "generators",
-    "division",
-    "absolute_import",
-    "with_statement",
-    "print_function",
-    "unicode_literals",
-]
-
-__all__ = ["all_feature_names"] + all_feature_names
-
-# The CO_xxx symbols are defined here under the same names used by
-# compile.h, so that an editor search will find them here.  However,
-# they're not exported in __all__, because they don't really belong to
-# this module.
-CO_NESTED            = 0x0010   # nested_scopes
-CO_GENERATOR_ALLOWED = 0        # generators (obsolete, was 0x1000)
-CO_FUTURE_DIVISION   = 0x2000   # division
-CO_FUTURE_ABSOLUTE_IMPORT = 0x4000 # perform absolute imports by default
-CO_FUTURE_WITH_STATEMENT  = 0x8000   # with statement
-CO_FUTURE_PRINT_FUNCTION  = 0x10000   # print function
-CO_FUTURE_UNICODE_LITERALS = 0x20000 # unicode string literals
-
-class _Feature:
-    def __init__(self, optionalRelease, mandatoryRelease, compiler_flag):
-        self.optional = optionalRelease
-        self.mandatory = mandatoryRelease
-        self.compiler_flag = compiler_flag
-
-    def getOptionalRelease(self):
-        """Return first release in which this feature was recognized.
-
-        This is a 5-tuple, of the same form as sys.version_info.
-        """
-
-        return self.optional
-
-    def getMandatoryRelease(self):
-        """Return release in which this feature will become mandatory.
-
-        This is a 5-tuple, of the same form as sys.version_info, or, if
-        the feature was dropped, is None.
-        """
-
-        return self.mandatory
-
-    def __repr__(self):
-        return "_Feature" + repr((self.optional,
-                                  self.mandatory,
-                                  self.compiler_flag))
-
-nested_scopes = _Feature((2, 1, 0, "beta",  1),
-                         (2, 2, 0, "alpha", 0),
-                         CO_NESTED)
-
-generators = _Feature((2, 2, 0, "alpha", 1),
-                      (2, 3, 0, "final", 0),
-                      CO_GENERATOR_ALLOWED)
-
-division = _Feature((2, 2, 0, "alpha", 2),
-                    (3, 0, 0, "alpha", 0),
-                    CO_FUTURE_DIVISION)
-
-absolute_import = _Feature((2, 5, 0, "alpha", 1),
-                           (2, 7, 0, "alpha", 0),
-                           CO_FUTURE_ABSOLUTE_IMPORT)
-
-with_statement = _Feature((2, 5, 0, "alpha", 1),
-                          (2, 6, 0, "alpha", 0),
-                          CO_FUTURE_WITH_STATEMENT)
-
-print_function = _Feature((2, 6, 0, "alpha", 2),
-                          (3, 0, 0, "alpha", 0),
-                          CO_FUTURE_PRINT_FUNCTION)
-
-unicode_literals = _Feature((2, 6, 0, "alpha", 2),
-                            (3, 0, 0, "alpha", 0),
-                            CO_FUTURE_UNICODE_LITERALS)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/__phello__.foo.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/__phello__.foo.py
deleted file mode 100644
index 89f96d3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/__phello__.foo.py
+++ /dev/null
@@ -1 +0,0 @@
-# This file exists as a helper for the test.test_frozen module.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/_abcoll.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/_abcoll.py
deleted file mode 100644
index 80d518c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/_abcoll.py
+++ /dev/null
@@ -1,601 +0,0 @@
-# Copyright 2007 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Abstract Base Classes (ABCs) for collections, according to PEP 3119.
-
-DON'T USE THIS MODULE DIRECTLY!  The classes here should be imported
-via collections; they are defined here only to alleviate certain
-bootstrapping issues.  Unit tests are in test_collections.
-"""
-
-from abc import ABCMeta, abstractmethod
-import sys
-
-__all__ = ["Hashable", "Iterable", "Iterator",
-           "Sized", "Container", "Callable",
-           "Set", "MutableSet",
-           "Mapping", "MutableMapping",
-           "MappingView", "KeysView", "ItemsView", "ValuesView",
-           "Sequence", "MutableSequence",
-           ]
-
-### ONE-TRICK PONIES ###
-
-def _hasattr(C, attr):
-    try:
-        return any(attr in B.__dict__ for B in C.__mro__)
-    except AttributeError:
-        # Old-style class
-        return hasattr(C, attr)
-
-
-class Hashable:
-    __metaclass__ = ABCMeta
-
-    @abstractmethod
-    def __hash__(self):
-        return 0
-
-    @classmethod
-    def __subclasshook__(cls, C):
-        if cls is Hashable:
-            try:
-                for B in C.__mro__:
-                    if "__hash__" in B.__dict__:
-                        if B.__dict__["__hash__"]:
-                            return True
-                        break
-            except AttributeError:
-                # Old-style class
-                if getattr(C, "__hash__", None):
-                    return True
-        return NotImplemented
-
-
-class Iterable:
-    __metaclass__ = ABCMeta
-
-    @abstractmethod
-    def __iter__(self):
-        while False:
-            yield None
-
-    @classmethod
-    def __subclasshook__(cls, C):
-        if cls is Iterable:
-            if _hasattr(C, "__iter__"):
-                return True
-        return NotImplemented
-
-Iterable.register(str)
-
-
-class Iterator(Iterable):
-
-    @abstractmethod
-    def next(self):
-        raise StopIteration
-
-    def __iter__(self):
-        return self
-
-    @classmethod
-    def __subclasshook__(cls, C):
-        if cls is Iterator:
-            if _hasattr(C, "next") and _hasattr(C, "__iter__"):
-                return True
-        return NotImplemented
-
-
-class Sized:
-    __metaclass__ = ABCMeta
-
-    @abstractmethod
-    def __len__(self):
-        return 0
-
-    @classmethod
-    def __subclasshook__(cls, C):
-        if cls is Sized:
-            if _hasattr(C, "__len__"):
-                return True
-        return NotImplemented
-
-
-class Container:
-    __metaclass__ = ABCMeta
-
-    @abstractmethod
-    def __contains__(self, x):
-        return False
-
-    @classmethod
-    def __subclasshook__(cls, C):
-        if cls is Container:
-            if _hasattr(C, "__contains__"):
-                return True
-        return NotImplemented
-
-
-class Callable:
-    __metaclass__ = ABCMeta
-
-    @abstractmethod
-    def __call__(self, *args, **kwds):
-        return False
-
-    @classmethod
-    def __subclasshook__(cls, C):
-        if cls is Callable:
-            if _hasattr(C, "__call__"):
-                return True
-        return NotImplemented
-
-
-### SETS ###
-
-
-class Set(Sized, Iterable, Container):
-    """A set is a finite, iterable container.
-
-    This class provides concrete generic implementations of all
-    methods except for __contains__, __iter__ and __len__.
-
-    To override the comparisons (presumably for speed, as the
-    semantics are fixed), all you have to do is redefine __le__ and
-    then the other operations will automatically follow suit.
-    """
-
-    def __le__(self, other):
-        if not isinstance(other, Set):
-            return NotImplemented
-        if len(self) > len(other):
-            return False
-        for elem in self:
-            if elem not in other:
-                return False
-        return True
-
-    def __lt__(self, other):
-        if not isinstance(other, Set):
-            return NotImplemented
-        return len(self) < len(other) and self.__le__(other)
-
-    def __gt__(self, other):
-        if not isinstance(other, Set):
-            return NotImplemented
-        return other < self
-
-    def __ge__(self, other):
-        if not isinstance(other, Set):
-            return NotImplemented
-        return other <= self
-
-    def __eq__(self, other):
-        if not isinstance(other, Set):
-            return NotImplemented
-        return len(self) == len(other) and self.__le__(other)
-
-    def __ne__(self, other):
-        return not (self == other)
-
-    @classmethod
-    def _from_iterable(cls, it):
-        '''Construct an instance of the class from any iterable input.
-
-        Must override this method if the class constructor signature
-        does not accept an iterable for an input.
-        '''
-        return cls(it)
-
-    def __and__(self, other):
-        if not isinstance(other, Iterable):
-            return NotImplemented
-        return self._from_iterable(value for value in other if value in self)
-
-    def isdisjoint(self, other):
-        for value in other:
-            if value in self:
-                return False
-        return True
-
-    def __or__(self, other):
-        if not isinstance(other, Iterable):
-            return NotImplemented
-        chain = (e for s in (self, other) for e in s)
-        return self._from_iterable(chain)
-
-    def __sub__(self, other):
-        if not isinstance(other, Set):
-            if not isinstance(other, Iterable):
-                return NotImplemented
-            other = self._from_iterable(other)
-        return self._from_iterable(value for value in self
-                                   if value not in other)
-
-    def __xor__(self, other):
-        if not isinstance(other, Set):
-            if not isinstance(other, Iterable):
-                return NotImplemented
-            other = self._from_iterable(other)
-        return (self - other) | (other - self)
-
-    # Sets are not hashable by default, but subclasses can change this
-    __hash__ = None
-
-    def _hash(self):
-        """Compute the hash value of a set.
-
-        Note that we don't define __hash__: not all sets are hashable.
-        But if you define a hashable set type, its __hash__ should
-        call this function.
-
-        This must be compatible __eq__.
-
-        All sets ought to compare equal if they contain the same
-        elements, regardless of how they are implemented, and
-        regardless of the order of the elements; so there's not much
-        freedom for __eq__ or __hash__.  We match the algorithm used
-        by the built-in frozenset type.
-        """
-        MAX = sys.maxint
-        MASK = 2 * MAX + 1
-        n = len(self)
-        h = 1927868237 * (n + 1)
-        h &= MASK
-        for x in self:
-            hx = hash(x)
-            h ^= (hx ^ (hx << 16) ^ 89869747)  * 3644798167
-            h &= MASK
-        h = h * 69069 + 907133923
-        h &= MASK
-        if h > MAX:
-            h -= MASK + 1
-        if h == -1:
-            h = 590923713
-        return h
-
-Set.register(frozenset)
-
-
-class MutableSet(Set):
-
-    @abstractmethod
-    def add(self, value):
-        """Add an element."""
-        raise NotImplementedError
-
-    @abstractmethod
-    def discard(self, value):
-        """Remove an element.  Do not raise an exception if absent."""
-        raise NotImplementedError
-
-    def remove(self, value):
-        """Remove an element. If not a member, raise a KeyError."""
-        if value not in self:
-            raise KeyError(value)
-        self.discard(value)
-
-    def pop(self):
-        """Return the popped value.  Raise KeyError if empty."""
-        it = iter(self)
-        try:
-            value = next(it)
-        except StopIteration:
-            raise KeyError
-        self.discard(value)
-        return value
-
-    def clear(self):
-        """This is slow (creates N new iterators!) but effective."""
-        try:
-            while True:
-                self.pop()
-        except KeyError:
-            pass
-
-    def __ior__(self, it):
-        for value in it:
-            self.add(value)
-        return self
-
-    def __iand__(self, it):
-        for value in (self - it):
-            self.discard(value)
-        return self
-
-    def __ixor__(self, it):
-        if it is self:
-            self.clear()
-        else:
-            if not isinstance(it, Set):
-                it = self._from_iterable(it)
-            for value in it:
-                if value in self:
-                    self.discard(value)
-                else:
-                    self.add(value)
-        return self
-
-    def __isub__(self, it):
-        if it is self:
-            self.clear()
-        else:
-            for value in it:
-                self.discard(value)
-        return self
-
-MutableSet.register(set)
-
-
-### MAPPINGS ###
-
-
-class Mapping(Sized, Iterable, Container):
-
-    @abstractmethod
-    def __getitem__(self, key):
-        raise KeyError
-
-    def get(self, key, default=None):
-        try:
-            return self[key]
-        except KeyError:
-            return default
-
-    def __contains__(self, key):
-        try:
-            self[key]
-        except KeyError:
-            return False
-        else:
-            return True
-
-    def iterkeys(self):
-        return iter(self)
-
-    def itervalues(self):
-        for key in self:
-            yield self[key]
-
-    def iteritems(self):
-        for key in self:
-            yield (key, self[key])
-
-    def keys(self):
-        return list(self)
-
-    def items(self):
-        return [(key, self[key]) for key in self]
-
-    def values(self):
-        return [self[key] for key in self]
-
-    # Mappings are not hashable by default, but subclasses can change this
-    __hash__ = None
-
-    def __eq__(self, other):
-        if not isinstance(other, Mapping):
-            return NotImplemented
-        return dict(self.items()) == dict(other.items())
-
-    def __ne__(self, other):
-        return not (self == other)
-
-class MappingView(Sized):
-
-    def __init__(self, mapping):
-        self._mapping = mapping
-
-    def __len__(self):
-        return len(self._mapping)
-
-    def __repr__(self):
-        return '{0.__class__.__name__}({0._mapping!r})'.format(self)
-
-
-class KeysView(MappingView, Set):
-
-    @classmethod
-    def _from_iterable(self, it):
-        return set(it)
-
-    def __contains__(self, key):
-        return key in self._mapping
-
-    def __iter__(self):
-        for key in self._mapping:
-            yield key
-
-
-class ItemsView(MappingView, Set):
-
-    @classmethod
-    def _from_iterable(self, it):
-        return set(it)
-
-    def __contains__(self, item):
-        key, value = item
-        try:
-            v = self._mapping[key]
-        except KeyError:
-            return False
-        else:
-            return v == value
-
-    def __iter__(self):
-        for key in self._mapping:
-            yield (key, self._mapping[key])
-
-
-class ValuesView(MappingView):
-
-    def __contains__(self, value):
-        for key in self._mapping:
-            if value == self._mapping[key]:
-                return True
-        return False
-
-    def __iter__(self):
-        for key in self._mapping:
-            yield self._mapping[key]
-
-
-class MutableMapping(Mapping):
-
-    @abstractmethod
-    def __setitem__(self, key, value):
-        raise KeyError
-
-    @abstractmethod
-    def __delitem__(self, key):
-        raise KeyError
-
-    __marker = object()
-
-    def pop(self, key, default=__marker):
-        try:
-            value = self[key]
-        except KeyError:
-            if default is self.__marker:
-                raise
-            return default
-        else:
-            del self[key]
-            return value
-
-    def popitem(self):
-        try:
-            key = next(iter(self))
-        except StopIteration:
-            raise KeyError
-        value = self[key]
-        del self[key]
-        return key, value
-
-    def clear(self):
-        try:
-            while True:
-                self.popitem()
-        except KeyError:
-            pass
-
-    def update(*args, **kwds):
-        if len(args) > 2:
-            raise TypeError("update() takes at most 2 positional "
-                            "arguments ({} given)".format(len(args)))
-        elif not args:
-            raise TypeError("update() takes at least 1 argument (0 given)")
-        self = args[0]
-        other = args[1] if len(args) >= 2 else ()
-
-        if isinstance(other, Mapping):
-            for key in other:
-                self[key] = other[key]
-        elif hasattr(other, "keys"):
-            for key in other.keys():
-                self[key] = other[key]
-        else:
-            for key, value in other:
-                self[key] = value
-        for key, value in kwds.items():
-            self[key] = value
-
-    def setdefault(self, key, default=None):
-        try:
-            return self[key]
-        except KeyError:
-            self[key] = default
-        return default
-
-MutableMapping.register(dict)
-
-
-### SEQUENCES ###
-
-
-class Sequence(Sized, Iterable, Container):
-    """All the operations on a read-only sequence.
-
-    Concrete subclasses must override __new__ or __init__,
-    __getitem__, and __len__.
-    """
-
-    @abstractmethod
-    def __getitem__(self, index):
-        raise IndexError
-
-    def __iter__(self):
-        i = 0
-        try:
-            while True:
-                v = self[i]
-                yield v
-                i += 1
-        except IndexError:
-            return
-
-    def __contains__(self, value):
-        for v in self:
-            if v == value:
-                return True
-        return False
-
-    def __reversed__(self):
-        for i in reversed(range(len(self))):
-            yield self[i]
-
-    def index(self, value):
-        for i, v in enumerate(self):
-            if v == value:
-                return i
-        raise ValueError
-
-    def count(self, value):
-        return sum(1 for v in self if v == value)
-
-Sequence.register(tuple)
-Sequence.register(basestring)
-Sequence.register(buffer)
-Sequence.register(xrange)
-
-
-class MutableSequence(Sequence):
-
-    @abstractmethod
-    def __setitem__(self, index, value):
-        raise IndexError
-
-    @abstractmethod
-    def __delitem__(self, index):
-        raise IndexError
-
-    @abstractmethod
-    def insert(self, index, value):
-        raise IndexError
-
-    def append(self, value):
-        self.insert(len(self), value)
-
-    def reverse(self):
-        n = len(self)
-        for i in range(n//2):
-            self[i], self[n-i-1] = self[n-i-1], self[i]
-
-    def extend(self, values):
-        for v in values:
-            self.append(v)
-
-    def pop(self, index=-1):
-        v = self[index]
-        del self[index]
-        return v
-
-    def remove(self, value):
-        del self[self.index(value)]
-
-    def __iadd__(self, values):
-        self.extend(values)
-        return self
-
-MutableSequence.register(list)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/_pyio.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/_pyio.py
deleted file mode 100644
index ae67281..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/_pyio.py
+++ /dev/null
@@ -1,2006 +0,0 @@
-"""
-Python implementation of the io module.
-"""
-
-from __future__ import (print_function, unicode_literals)
-
-import os
-import abc
-import codecs
-import warnings
-# Import thread instead of threading to reduce startup cost
-try:
-    from thread import allocate_lock as Lock
-except ImportError:
-    from dummy_thread import allocate_lock as Lock
-
-import io
-from io import (__all__, SEEK_SET, SEEK_CUR, SEEK_END)
-from errno import EINTR
-
-__metaclass__ = type
-
-# open() uses st_blksize whenever we can
-DEFAULT_BUFFER_SIZE = 8 * 1024  # bytes
-
-# NOTE: Base classes defined here are registered with the "official" ABCs
-# defined in io.py. We don't use real inheritance though, because we don't
-# want to inherit the C implementations.
-
-
-class BlockingIOError(IOError):
-
-    """Exception raised when I/O would block on a non-blocking I/O stream."""
-
-    def __init__(self, errno, strerror, characters_written=0):
-        super(IOError, self).__init__(errno, strerror)
-        if not isinstance(characters_written, (int, long)):
-            raise TypeError("characters_written must be a integer")
-        self.characters_written = characters_written
-
-
-def open(file, mode="r", buffering=-1,
-         encoding=None, errors=None,
-         newline=None, closefd=True):
-
-    r"""Open file and return a stream.  Raise IOError upon failure.
-
-    file is either a text or byte string giving the name (and the path
-    if the file isn't in the current working directory) of the file to
-    be opened or an integer file descriptor of the file to be
-    wrapped. (If a file descriptor is given, it is closed when the
-    returned I/O object is closed, unless closefd is set to False.)
-
-    mode is an optional string that specifies the mode in which the file
-    is opened. It defaults to 'r' which means open for reading in text
-    mode.  Other common values are 'w' for writing (truncating the file if
-    it already exists), and 'a' for appending (which on some Unix systems,
-    means that all writes append to the end of the file regardless of the
-    current seek position). In text mode, if encoding is not specified the
-    encoding used is platform dependent. (For reading and writing raw
-    bytes use binary mode and leave encoding unspecified.) The available
-    modes are:
-
-    ========= ===============================================================
-    Character Meaning
-    --------- ---------------------------------------------------------------
-    'r'       open for reading (default)
-    'w'       open for writing, truncating the file first
-    'a'       open for writing, appending to the end of the file if it exists
-    'b'       binary mode
-    't'       text mode (default)
-    '+'       open a disk file for updating (reading and writing)
-    'U'       universal newline mode (for backwards compatibility; unneeded
-              for new code)
-    ========= ===============================================================
-
-    The default mode is 'rt' (open for reading text). For binary random
-    access, the mode 'w+b' opens and truncates the file to 0 bytes, while
-    'r+b' opens the file without truncation.
-
-    Python distinguishes between files opened in binary and text modes,
-    even when the underlying operating system doesn't. Files opened in
-    binary mode (appending 'b' to the mode argument) return contents as
-    bytes objects without any decoding. In text mode (the default, or when
-    't' is appended to the mode argument), the contents of the file are
-    returned as strings, the bytes having been first decoded using a
-    platform-dependent encoding or using the specified encoding if given.
-
-    buffering is an optional integer used to set the buffering policy.
-    Pass 0 to switch buffering off (only allowed in binary mode), 1 to select
-    line buffering (only usable in text mode), and an integer > 1 to indicate
-    the size of a fixed-size chunk buffer.  When no buffering argument is
-    given, the default buffering policy works as follows:
-
-    * Binary files are buffered in fixed-size chunks; the size of the buffer
-      is chosen using a heuristic trying to determine the underlying device's
-      "block size" and falling back on `io.DEFAULT_BUFFER_SIZE`.
-      On many systems, the buffer will typically be 4096 or 8192 bytes long.
-
-    * "Interactive" text files (files for which isatty() returns True)
-      use line buffering.  Other text files use the policy described above
-      for binary files.
-
-    encoding is the name of the encoding used to decode or encode the
-    file. This should only be used in text mode. The default encoding is
-    platform dependent, but any encoding supported by Python can be
-    passed.  See the codecs module for the list of supported encodings.
-
-    errors is an optional string that specifies how encoding errors are to
-    be handled---this argument should not be used in binary mode. Pass
-    'strict' to raise a ValueError exception if there is an encoding error
-    (the default of None has the same effect), or pass 'ignore' to ignore
-    errors. (Note that ignoring encoding errors can lead to data loss.)
-    See the documentation for codecs.register for a list of the permitted
-    encoding error strings.
-
-    newline controls how universal newlines works (it only applies to text
-    mode). It can be None, '', '\n', '\r', and '\r\n'.  It works as
-    follows:
-
-    * On input, if newline is None, universal newlines mode is
-      enabled. Lines in the input can end in '\n', '\r', or '\r\n', and
-      these are translated into '\n' before being returned to the
-      caller. If it is '', universal newline mode is enabled, but line
-      endings are returned to the caller untranslated. If it has any of
-      the other legal values, input lines are only terminated by the given
-      string, and the line ending is returned to the caller untranslated.
-
-    * On output, if newline is None, any '\n' characters written are
-      translated to the system default line separator, os.linesep. If
-      newline is '', no translation takes place. If newline is any of the
-      other legal values, any '\n' characters written are translated to
-      the given string.
-
-    If closefd is False, the underlying file descriptor will be kept open
-    when the file is closed. This does not work when a file name is given
-    and must be True in that case.
-
-    open() returns a file object whose type depends on the mode, and
-    through which the standard file operations such as reading and writing
-    are performed. When open() is used to open a file in a text mode ('w',
-    'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open
-    a file in a binary mode, the returned class varies: in read binary
-    mode, it returns a BufferedReader; in write binary and append binary
-    modes, it returns a BufferedWriter, and in read/write mode, it returns
-    a BufferedRandom.
-
-    It is also possible to use a string or bytearray as a file for both
-    reading and writing. For strings StringIO can be used like a file
-    opened in a text mode, and for bytes a BytesIO can be used like a file
-    opened in a binary mode.
-    """
-    if not isinstance(file, (basestring, int, long)):
-        raise TypeError("invalid file: %r" % file)
-    if not isinstance(mode, basestring):
-        raise TypeError("invalid mode: %r" % mode)
-    if not isinstance(buffering, (int, long)):
-        raise TypeError("invalid buffering: %r" % buffering)
-    if encoding is not None and not isinstance(encoding, basestring):
-        raise TypeError("invalid encoding: %r" % encoding)
-    if errors is not None and not isinstance(errors, basestring):
-        raise TypeError("invalid errors: %r" % errors)
-    modes = set(mode)
-    if modes - set("arwb+tU") or len(mode) > len(modes):
-        raise ValueError("invalid mode: %r" % mode)
-    reading = "r" in modes
-    writing = "w" in modes
-    appending = "a" in modes
-    updating = "+" in modes
-    text = "t" in modes
-    binary = "b" in modes
-    if "U" in modes:
-        if writing or appending:
-            raise ValueError("can't use U and writing mode at once")
-        reading = True
-    if text and binary:
-        raise ValueError("can't have text and binary mode at once")
-    if reading + writing + appending > 1:
-        raise ValueError("can't have read/write/append mode at once")
-    if not (reading or writing or appending):
-        raise ValueError("must have exactly one of read/write/append mode")
-    if binary and encoding is not None:
-        raise ValueError("binary mode doesn't take an encoding argument")
-    if binary and errors is not None:
-        raise ValueError("binary mode doesn't take an errors argument")
-    if binary and newline is not None:
-        raise ValueError("binary mode doesn't take a newline argument")
-    raw = FileIO(file,
-                 (reading and "r" or "") +
-                 (writing and "w" or "") +
-                 (appending and "a" or "") +
-                 (updating and "+" or ""),
-                 closefd)
-    line_buffering = False
-    if buffering == 1 or buffering < 0 and raw.isatty():
-        buffering = -1
-        line_buffering = True
-    if buffering < 0:
-        buffering = DEFAULT_BUFFER_SIZE
-        try:
-            bs = os.fstat(raw.fileno()).st_blksize
-        except (os.error, AttributeError):
-            pass
-        else:
-            if bs > 1:
-                buffering = bs
-    if buffering < 0:
-        raise ValueError("invalid buffering size")
-    if buffering == 0:
-        if binary:
-            return raw
-        raise ValueError("can't have unbuffered text I/O")
-    if updating:
-        buffer = BufferedRandom(raw, buffering)
-    elif writing or appending:
-        buffer = BufferedWriter(raw, buffering)
-    elif reading:
-        buffer = BufferedReader(raw, buffering)
-    else:
-        raise ValueError("unknown mode: %r" % mode)
-    if binary:
-        return buffer
-    text = TextIOWrapper(buffer, encoding, errors, newline, line_buffering)
-    text.mode = mode
-    return text
-
-
-class DocDescriptor:
-    """Helper for builtins.open.__doc__
-    """
-    def __get__(self, obj, typ):
-        return (
-            "open(file, mode='r', buffering=-1, encoding=None, "
-                 "errors=None, newline=None, closefd=True)\n\n" +
-            open.__doc__)
-
-class OpenWrapper:
-    """Wrapper for builtins.open
-
-    Trick so that open won't become a bound method when stored
-    as a class variable (as dbm.dumb does).
-
-    See initstdio() in Python/pythonrun.c.
-    """
-    __doc__ = DocDescriptor()
-
-    def __new__(cls, *args, **kwargs):
-        return open(*args, **kwargs)
-
-
-class UnsupportedOperation(ValueError, IOError):
-    pass
-
-
-class IOBase:
-    __metaclass__ = abc.ABCMeta
-
-    """The abstract base class for all I/O classes, acting on streams of
-    bytes. There is no public constructor.
-
-    This class provides dummy implementations for many methods that
-    derived classes can override selectively; the default implementations
-    represent a file that cannot be read, written or seeked.
-
-    Even though IOBase does not declare read, readinto, or write because
-    their signatures will vary, implementations and clients should
-    consider those methods part of the interface. Also, implementations
-    may raise a IOError when operations they do not support are called.
-
-    The basic type used for binary data read from or written to a file is
-    bytes. bytearrays are accepted too, and in some cases (such as
-    readinto) needed. Text I/O classes work with str data.
-
-    Note that calling any method (even inquiries) on a closed stream is
-    undefined. Implementations may raise IOError in this case.
-
-    IOBase (and its subclasses) support the iterator protocol, meaning
-    that an IOBase object can be iterated over yielding the lines in a
-    stream.
-
-    IOBase also supports the :keyword:`with` statement. In this example,
-    fp is closed after the suite of the with statement is complete:
-
-    with open('spam.txt', 'r') as fp:
-        fp.write('Spam and eggs!')
-    """
-
-    ### Internal ###
-
-    def _unsupported(self, name):
-        """Internal: raise an exception for unsupported operations."""
-        raise UnsupportedOperation("%s.%s() not supported" %
-                                   (self.__class__.__name__, name))
-
-    ### Positioning ###
-
-    def seek(self, pos, whence=0):
-        """Change stream position.
-
-        Change the stream position to byte offset offset. offset is
-        interpreted relative to the position indicated by whence.  Values
-        for whence are:
-
-        * 0 -- start of stream (the default); offset should be zero or positive
-        * 1 -- current stream position; offset may be negative
-        * 2 -- end of stream; offset is usually negative
-
-        Return the new absolute position.
-        """
-        self._unsupported("seek")
-
-    def tell(self):
-        """Return current stream position."""
-        return self.seek(0, 1)
-
-    def truncate(self, pos=None):
-        """Truncate file to size bytes.
-
-        Size defaults to the current IO position as reported by tell().  Return
-        the new size.
-        """
-        self._unsupported("truncate")
-
-    ### Flush and close ###
-
-    def flush(self):
-        """Flush write buffers, if applicable.
-
-        This is not implemented for read-only and non-blocking streams.
-        """
-        self._checkClosed()
-        # XXX Should this return the number of bytes written???
-
-    __closed = False
-
-    def close(self):
-        """Flush and close the IO object.
-
-        This method has no effect if the file is already closed.
-        """
-        if not self.__closed:
-            self.flush()
-            self.__closed = True
-
-    def __del__(self):
-        """Destructor.  Calls close()."""
-        # The try/except block is in case this is called at program
-        # exit time, when it's possible that globals have already been
-        # deleted, and then the close() call might fail.  Since
-        # there's nothing we can do about such failures and they annoy
-        # the end users, we suppress the traceback.
-        try:
-            self.close()
-        except:
-            pass
-
-    ### Inquiries ###
-
-    def seekable(self):
-        """Return whether object supports random access.
-
-        If False, seek(), tell() and truncate() will raise IOError.
-        This method may need to do a test seek().
-        """
-        return False
-
-    def _checkSeekable(self, msg=None):
-        """Internal: raise an IOError if file is not seekable
-        """
-        if not self.seekable():
-            raise IOError("File or stream is not seekable."
-                          if msg is None else msg)
-
-
-    def readable(self):
-        """Return whether object was opened for reading.
-
-        If False, read() will raise IOError.
-        """
-        return False
-
-    def _checkReadable(self, msg=None):
-        """Internal: raise an IOError if file is not readable
-        """
-        if not self.readable():
-            raise IOError("File or stream is not readable."
-                          if msg is None else msg)
-
-    def writable(self):
-        """Return whether object was opened for writing.
-
-        If False, write() and truncate() will raise IOError.
-        """
-        return False
-
-    def _checkWritable(self, msg=None):
-        """Internal: raise an IOError if file is not writable
-        """
-        if not self.writable():
-            raise IOError("File or stream is not writable."
-                          if msg is None else msg)
-
-    @property
-    def closed(self):
-        """closed: bool.  True iff the file has been closed.
-
-        For backwards compatibility, this is a property, not a predicate.
-        """
-        return self.__closed
-
-    def _checkClosed(self, msg=None):
-        """Internal: raise an ValueError if file is closed
-        """
-        if self.closed:
-            raise ValueError("I/O operation on closed file."
-                             if msg is None else msg)
-
-    ### Context manager ###
-
-    def __enter__(self):
-        """Context management protocol.  Returns self."""
-        self._checkClosed()
-        return self
-
-    def __exit__(self, *args):
-        """Context management protocol.  Calls close()"""
-        self.close()
-
-    ### Lower-level APIs ###
-
-    # XXX Should these be present even if unimplemented?
-
-    def fileno(self):
-        """Returns underlying file descriptor if one exists.
-
-        An IOError is raised if the IO object does not use a file descriptor.
-        """
-        self._unsupported("fileno")
-
-    def isatty(self):
-        """Return whether this is an 'interactive' stream.
-
-        Return False if it can't be determined.
-        """
-        self._checkClosed()
-        return False
-
-    ### Readline[s] and writelines ###
-
-    def readline(self, limit=-1):
-        r"""Read and return a line from the stream.
-
-        If limit is specified, at most limit bytes will be read.
-
-        The line terminator is always b'\n' for binary files; for text
-        files, the newlines argument to open can be used to select the line
-        terminator(s) recognized.
-        """
-        # For backwards compatibility, a (slowish) readline().
-        if hasattr(self, "peek"):
-            def nreadahead():
-                readahead = self.peek(1)
-                if not readahead:
-                    return 1
-                n = (readahead.find(b"\n") + 1) or len(readahead)
-                if limit >= 0:
-                    n = min(n, limit)
-                return n
-        else:
-            def nreadahead():
-                return 1
-        if limit is None:
-            limit = -1
-        elif not isinstance(limit, (int, long)):
-            raise TypeError("limit must be an integer")
-        res = bytearray()
-        while limit < 0 or len(res) < limit:
-            b = self.read(nreadahead())
-            if not b:
-                break
-            res += b
-            if res.endswith(b"\n"):
-                break
-        return bytes(res)
-
-    def __iter__(self):
-        self._checkClosed()
-        return self
-
-    def next(self):
-        line = self.readline()
-        if not line:
-            raise StopIteration
-        return line
-
-    def readlines(self, hint=None):
-        """Return a list of lines from the stream.
-
-        hint can be specified to control the number of lines read: no more
-        lines will be read if the total size (in bytes/characters) of all
-        lines so far exceeds hint.
-        """
-        if hint is not None and not isinstance(hint, (int, long)):
-            raise TypeError("integer or None expected")
-        if hint is None or hint <= 0:
-            return list(self)
-        n = 0
-        lines = []
-        for line in self:
-            lines.append(line)
-            n += len(line)
-            if n >= hint:
-                break
-        return lines
-
-    def writelines(self, lines):
-        self._checkClosed()
-        for line in lines:
-            self.write(line)
-
-io.IOBase.register(IOBase)
-
-
-class RawIOBase(IOBase):
-
-    """Base class for raw binary I/O."""
-
-    # The read() method is implemented by calling readinto(); derived
-    # classes that want to support read() only need to implement
-    # readinto() as a primitive operation.  In general, readinto() can be
-    # more efficient than read().
-
-    # (It would be tempting to also provide an implementation of
-    # readinto() in terms of read(), in case the latter is a more suitable
-    # primitive operation, but that would lead to nasty recursion in case
-    # a subclass doesn't implement either.)
-
-    def read(self, n=-1):
-        """Read and return up to n bytes.
-
-        Returns an empty bytes object on EOF, or None if the object is
-        set not to block and has no data to read.
-        """
-        if n is None:
-            n = -1
-        if n < 0:
-            return self.readall()
-        b = bytearray(n.__index__())
-        n = self.readinto(b)
-        if n is None:
-            return None
-        del b[n:]
-        return bytes(b)
-
-    def readall(self):
-        """Read until EOF, using multiple read() call."""
-        res = bytearray()
-        while True:
-            data = self.read(DEFAULT_BUFFER_SIZE)
-            if not data:
-                break
-            res += data
-        if res:
-            return bytes(res)
-        else:
-            # b'' or None
-            return data
-
-    def readinto(self, b):
-        """Read up to len(b) bytes into b.
-
-        Returns number of bytes read (0 for EOF), or None if the object
-        is set not to block and has no data to read.
-        """
-        self._unsupported("readinto")
-
-    def write(self, b):
-        """Write the given buffer to the IO stream.
-
-        Returns the number of bytes written, which may be less than len(b).
-        """
-        self._unsupported("write")
-
-io.RawIOBase.register(RawIOBase)
-from _io import FileIO
-RawIOBase.register(FileIO)
-
-
-class BufferedIOBase(IOBase):
-
-    """Base class for buffered IO objects.
-
-    The main difference with RawIOBase is that the read() method
-    supports omitting the size argument, and does not have a default
-    implementation that defers to readinto().
-
-    In addition, read(), readinto() and write() may raise
-    BlockingIOError if the underlying raw stream is in non-blocking
-    mode and not ready; unlike their raw counterparts, they will never
-    return None.
-
-    A typical implementation should not inherit from a RawIOBase
-    implementation, but wrap one.
-    """
-
-    def read(self, n=None):
-        """Read and return up to n bytes.
-
-        If the argument is omitted, None, or negative, reads and
-        returns all data until EOF.
-
-        If the argument is positive, and the underlying raw stream is
-        not 'interactive', multiple raw reads may be issued to satisfy
-        the byte count (unless EOF is reached first).  But for
-        interactive raw streams (XXX and for pipes?), at most one raw
-        read will be issued, and a short result does not imply that
-        EOF is imminent.
-
-        Returns an empty bytes array on EOF.
-
-        Raises BlockingIOError if the underlying raw stream has no
-        data at the moment.
-        """
-        self._unsupported("read")
-
-    def read1(self, n=None):
-        """Read up to n bytes with at most one read() system call."""
-        self._unsupported("read1")
-
-    def readinto(self, b):
-        """Read up to len(b) bytes into b.
-
-        Like read(), this may issue multiple reads to the underlying raw
-        stream, unless the latter is 'interactive'.
-
-        Returns the number of bytes read (0 for EOF).
-
-        Raises BlockingIOError if the underlying raw stream has no
-        data at the moment.
-        """
-        # XXX This ought to work with anything that supports the buffer API
-        data = self.read(len(b))
-        n = len(data)
-        try:
-            b[:n] = data
-        except TypeError as err:
-            import array
-            if not isinstance(b, array.array):
-                raise err
-            b[:n] = array.array(b'b', data)
-        return n
-
-    def write(self, b):
-        """Write the given buffer to the IO stream.
-
-        Return the number of bytes written, which is never less than
-        len(b).
-
-        Raises BlockingIOError if the buffer is full and the
-        underlying raw stream cannot accept more data at the moment.
-        """
-        self._unsupported("write")
-
-    def detach(self):
-        """
-        Separate the underlying raw stream from the buffer and return it.
-
-        After the raw stream has been detached, the buffer is in an unusable
-        state.
-        """
-        self._unsupported("detach")
-
-io.BufferedIOBase.register(BufferedIOBase)
-
-
-class _BufferedIOMixin(BufferedIOBase):
-
-    """A mixin implementation of BufferedIOBase with an underlying raw stream.
-
-    This passes most requests on to the underlying raw stream.  It
-    does *not* provide implementations of read(), readinto() or
-    write().
-    """
-
-    def __init__(self, raw):
-        self._raw = raw
-
-    ### Positioning ###
-
-    def seek(self, pos, whence=0):
-        new_position = self.raw.seek(pos, whence)
-        if new_position < 0:
-            raise IOError("seek() returned an invalid position")
-        return new_position
-
-    def tell(self):
-        pos = self.raw.tell()
-        if pos < 0:
-            raise IOError("tell() returned an invalid position")
-        return pos
-
-    def truncate(self, pos=None):
-        # Flush the stream.  We're mixing buffered I/O with lower-level I/O,
-        # and a flush may be necessary to synch both views of the current
-        # file state.
-        self.flush()
-
-        if pos is None:
-            pos = self.tell()
-        # XXX: Should seek() be used, instead of passing the position
-        # XXX  directly to truncate?
-        return self.raw.truncate(pos)
-
-    ### Flush and close ###
-
-    def flush(self):
-        if self.closed:
-            raise ValueError("flush of closed file")
-        self.raw.flush()
-
-    def close(self):
-        if self.raw is not None and not self.closed:
-            self.flush()
-            self.raw.close()
-
-    def detach(self):
-        if self.raw is None:
-            raise ValueError("raw stream already detached")
-        self.flush()
-        raw = self._raw
-        self._raw = None
-        return raw
-
-    ### Inquiries ###
-
-    def seekable(self):
-        return self.raw.seekable()
-
-    def readable(self):
-        return self.raw.readable()
-
-    def writable(self):
-        return self.raw.writable()
-
-    @property
-    def raw(self):
-        return self._raw
-
-    @property
-    def closed(self):
-        return self.raw.closed
-
-    @property
-    def name(self):
-        return self.raw.name
-
-    @property
-    def mode(self):
-        return self.raw.mode
-
-    def __repr__(self):
-        clsname = self.__class__.__name__
-        try:
-            name = self.name
-        except AttributeError:
-            return "<_pyio.{0}>".format(clsname)
-        else:
-            return "<_pyio.{0} name={1!r}>".format(clsname, name)
-
-    ### Lower-level APIs ###
-
-    def fileno(self):
-        return self.raw.fileno()
-
-    def isatty(self):
-        return self.raw.isatty()
-
-
-class BytesIO(BufferedIOBase):
-
-    """Buffered I/O implementation using an in-memory bytes buffer."""
-
-    def __init__(self, initial_bytes=None):
-        buf = bytearray()
-        if initial_bytes is not None:
-            buf.extend(initial_bytes)
-        self._buffer = buf
-        self._pos = 0
-
-    def __getstate__(self):
-        if self.closed:
-            raise ValueError("__getstate__ on closed file")
-        return self.__dict__.copy()
-
-    def getvalue(self):
-        """Return the bytes value (contents) of the buffer
-        """
-        if self.closed:
-            raise ValueError("getvalue on closed file")
-        return bytes(self._buffer)
-
-    def read(self, n=None):
-        if self.closed:
-            raise ValueError("read from closed file")
-        if n is None:
-            n = -1
-        if not isinstance(n, (int, long)):
-            raise TypeError("integer argument expected, got {0!r}".format(
-                type(n)))
-        if n < 0:
-            n = len(self._buffer)
-        if len(self._buffer) <= self._pos:
-            return b""
-        newpos = min(len(self._buffer), self._pos + n)
-        b = self._buffer[self._pos : newpos]
-        self._pos = newpos
-        return bytes(b)
-
-    def read1(self, n):
-        """This is the same as read.
-        """
-        return self.read(n)
-
-    def write(self, b):
-        if self.closed:
-            raise ValueError("write to closed file")
-        if isinstance(b, unicode):
-            raise TypeError("can't write unicode to binary stream")
-        n = len(b)
-        if n == 0:
-            return 0
-        pos = self._pos
-        if pos > len(self._buffer):
-            # Inserts null bytes between the current end of the file
-            # and the new write position.
-            padding = b'\x00' * (pos - len(self._buffer))
-            self._buffer += padding
-        self._buffer[pos:pos + n] = b
-        self._pos += n
-        return n
-
-    def seek(self, pos, whence=0):
-        if self.closed:
-            raise ValueError("seek on closed file")
-        try:
-            pos.__index__
-        except AttributeError:
-            raise TypeError("an integer is required")
-        if whence == 0:
-            if pos < 0:
-                raise ValueError("negative seek position %r" % (pos,))
-            self._pos = pos
-        elif whence == 1:
-            self._pos = max(0, self._pos + pos)
-        elif whence == 2:
-            self._pos = max(0, len(self._buffer) + pos)
-        else:
-            raise ValueError("invalid whence value")
-        return self._pos
-
-    def tell(self):
-        if self.closed:
-            raise ValueError("tell on closed file")
-        return self._pos
-
-    def truncate(self, pos=None):
-        if self.closed:
-            raise ValueError("truncate on closed file")
-        if pos is None:
-            pos = self._pos
-        else:
-            try:
-                pos.__index__
-            except AttributeError:
-                raise TypeError("an integer is required")
-            if pos < 0:
-                raise ValueError("negative truncate position %r" % (pos,))
-        del self._buffer[pos:]
-        return pos
-
-    def readable(self):
-        return True
-
-    def writable(self):
-        return True
-
-    def seekable(self):
-        return True
-
-
-class BufferedReader(_BufferedIOMixin):
-
-    """BufferedReader(raw[, buffer_size])
-
-    A buffer for a readable, sequential BaseRawIO object.
-
-    The constructor creates a BufferedReader for the given readable raw
-    stream and buffer_size. If buffer_size is omitted, DEFAULT_BUFFER_SIZE
-    is used.
-    """
-
-    def __init__(self, raw, buffer_size=DEFAULT_BUFFER_SIZE):
-        """Create a new buffered reader using the given readable raw IO object.
-        """
-        if not raw.readable():
-            raise IOError('"raw" argument must be readable.')
-
-        _BufferedIOMixin.__init__(self, raw)
-        if buffer_size <= 0:
-            raise ValueError("invalid buffer size")
-        self.buffer_size = buffer_size
-        self._reset_read_buf()
-        self._read_lock = Lock()
-
-    def _reset_read_buf(self):
-        self._read_buf = b""
-        self._read_pos = 0
-
-    def read(self, n=None):
-        """Read n bytes.
-
-        Returns exactly n bytes of data unless the underlying raw IO
-        stream reaches EOF or if the call would block in non-blocking
-        mode. If n is negative, read until EOF or until read() would
-        block.
-        """
-        if n is not None and n < -1:
-            raise ValueError("invalid number of bytes to read")
-        with self._read_lock:
-            return self._read_unlocked(n)
-
-    def _read_unlocked(self, n=None):
-        nodata_val = b""
-        empty_values = (b"", None)
-        buf = self._read_buf
-        pos = self._read_pos
-
-        # Special case for when the number of bytes to read is unspecified.
-        if n is None or n == -1:
-            self._reset_read_buf()
-            chunks = [buf[pos:]]  # Strip the consumed bytes.
-            current_size = 0
-            while True:
-                # Read until EOF or until read() would block.
-                try:
-                    chunk = self.raw.read()
-                except IOError as e:
-                    if e.errno != EINTR:
-                        raise
-                    continue
-                if chunk in empty_values:
-                    nodata_val = chunk
-                    break
-                current_size += len(chunk)
-                chunks.append(chunk)
-            return b"".join(chunks) or nodata_val
-
-        # The number of bytes to read is specified, return at most n bytes.
-        avail = len(buf) - pos  # Length of the available buffered data.
-        if n <= avail:
-            # Fast path: the data to read is fully buffered.
-            self._read_pos += n
-            return buf[pos:pos+n]
-        # Slow path: read from the stream until enough bytes are read,
-        # or until an EOF occurs or until read() would block.
-        chunks = [buf[pos:]]
-        wanted = max(self.buffer_size, n)
-        while avail < n:
-            try:
-                chunk = self.raw.read(wanted)
-            except IOError as e:
-                if e.errno != EINTR:
-                    raise
-                continue
-            if chunk in empty_values:
-                nodata_val = chunk
-                break
-            avail += len(chunk)
-            chunks.append(chunk)
-        # n is more then avail only when an EOF occurred or when
-        # read() would have blocked.
-        n = min(n, avail)
-        out = b"".join(chunks)
-        self._read_buf = out[n:]  # Save the extra data in the buffer.
-        self._read_pos = 0
-        return out[:n] if out else nodata_val
-
-    def peek(self, n=0):
-        """Returns buffered bytes without advancing the position.
-
-        The argument indicates a desired minimal number of bytes; we
-        do at most one raw read to satisfy it.  We never return more
-        than self.buffer_size.
-        """
-        with self._read_lock:
-            return self._peek_unlocked(n)
-
-    def _peek_unlocked(self, n=0):
-        want = min(n, self.buffer_size)
-        have = len(self._read_buf) - self._read_pos
-        if have < want or have <= 0:
-            to_read = self.buffer_size - have
-            while True:
-                try:
-                    current = self.raw.read(to_read)
-                except IOError as e:
-                    if e.errno != EINTR:
-                        raise
-                    continue
-                break
-            if current:
-                self._read_buf = self._read_buf[self._read_pos:] + current
-                self._read_pos = 0
-        return self._read_buf[self._read_pos:]
-
-    def read1(self, n):
-        """Reads up to n bytes, with at most one read() system call."""
-        # Returns up to n bytes.  If at least one byte is buffered, we
-        # only return buffered bytes.  Otherwise, we do one raw read.
-        if n < 0:
-            raise ValueError("number of bytes to read must be positive")
-        if n == 0:
-            return b""
-        with self._read_lock:
-            self._peek_unlocked(1)
-            return self._read_unlocked(
-                min(n, len(self._read_buf) - self._read_pos))
-
-    def tell(self):
-        return _BufferedIOMixin.tell(self) - len(self._read_buf) + self._read_pos
-
-    def seek(self, pos, whence=0):
-        if not (0 <= whence <= 2):
-            raise ValueError("invalid whence value")
-        with self._read_lock:
-            if whence == 1:
-                pos -= len(self._read_buf) - self._read_pos
-            pos = _BufferedIOMixin.seek(self, pos, whence)
-            self._reset_read_buf()
-            return pos
-
-class BufferedWriter(_BufferedIOMixin):
-
-    """A buffer for a writeable sequential RawIO object.
-
-    The constructor creates a BufferedWriter for the given writeable raw
-    stream. If the buffer_size is not given, it defaults to
-    DEFAULT_BUFFER_SIZE.
-    """
-
-    _warning_stack_offset = 2
-
-    def __init__(self, raw,
-                 buffer_size=DEFAULT_BUFFER_SIZE, max_buffer_size=None):
-        if not raw.writable():
-            raise IOError('"raw" argument must be writable.')
-
-        _BufferedIOMixin.__init__(self, raw)
-        if buffer_size <= 0:
-            raise ValueError("invalid buffer size")
-        if max_buffer_size is not None:
-            warnings.warn("max_buffer_size is deprecated", DeprecationWarning,
-                          self._warning_stack_offset)
-        self.buffer_size = buffer_size
-        self._write_buf = bytearray()
-        self._write_lock = Lock()
-
-    def write(self, b):
-        if self.closed:
-            raise ValueError("write to closed file")
-        if isinstance(b, unicode):
-            raise TypeError("can't write unicode to binary stream")
-        with self._write_lock:
-            # XXX we can implement some more tricks to try and avoid
-            # partial writes
-            if len(self._write_buf) > self.buffer_size:
-                # We're full, so let's pre-flush the buffer
-                try:
-                    self._flush_unlocked()
-                except BlockingIOError as e:
-                    # We can't accept anything else.
-                    # XXX Why not just let the exception pass through?
-                    raise BlockingIOError(e.errno, e.strerror, 0)
-            before = len(self._write_buf)
-            self._write_buf.extend(b)
-            written = len(self._write_buf) - before
-            if len(self._write_buf) > self.buffer_size:
-                try:
-                    self._flush_unlocked()
-                except BlockingIOError as e:
-                    if len(self._write_buf) > self.buffer_size:
-                        # We've hit the buffer_size. We have to accept a partial
-                        # write and cut back our buffer.
-                        overage = len(self._write_buf) - self.buffer_size
-                        written -= overage
-                        self._write_buf = self._write_buf[:self.buffer_size]
-                        raise BlockingIOError(e.errno, e.strerror, written)
-            return written
-
-    def truncate(self, pos=None):
-        with self._write_lock:
-            self._flush_unlocked()
-            if pos is None:
-                pos = self.raw.tell()
-            return self.raw.truncate(pos)
-
-    def flush(self):
-        with self._write_lock:
-            self._flush_unlocked()
-
-    def _flush_unlocked(self):
-        if self.closed:
-            raise ValueError("flush of closed file")
-        written = 0
-        try:
-            while self._write_buf:
-                try:
-                    n = self.raw.write(self._write_buf)
-                except IOError as e:
-                    if e.errno != EINTR:
-                        raise
-                    continue
-                if n > len(self._write_buf) or n < 0:
-                    raise IOError("write() returned incorrect number of bytes")
-                del self._write_buf[:n]
-                written += n
-        except BlockingIOError as e:
-            n = e.characters_written
-            del self._write_buf[:n]
-            written += n
-            raise BlockingIOError(e.errno, e.strerror, written)
-
-    def tell(self):
-        return _BufferedIOMixin.tell(self) + len(self._write_buf)
-
-    def seek(self, pos, whence=0):
-        if not (0 <= whence <= 2):
-            raise ValueError("invalid whence")
-        with self._write_lock:
-            self._flush_unlocked()
-            return _BufferedIOMixin.seek(self, pos, whence)
-
-
-class BufferedRWPair(BufferedIOBase):
-
-    """A buffered reader and writer object together.
-
-    A buffered reader object and buffered writer object put together to
-    form a sequential IO object that can read and write. This is typically
-    used with a socket or two-way pipe.
-
-    reader and writer are RawIOBase objects that are readable and
-    writeable respectively. If the buffer_size is omitted it defaults to
-    DEFAULT_BUFFER_SIZE.
-    """
-
-    # XXX The usefulness of this (compared to having two separate IO
-    # objects) is questionable.
-
-    def __init__(self, reader, writer,
-                 buffer_size=DEFAULT_BUFFER_SIZE, max_buffer_size=None):
-        """Constructor.
-
-        The arguments are two RawIO instances.
-        """
-        if max_buffer_size is not None:
-            warnings.warn("max_buffer_size is deprecated", DeprecationWarning, 2)
-
-        if not reader.readable():
-            raise IOError('"reader" argument must be readable.')
-
-        if not writer.writable():
-            raise IOError('"writer" argument must be writable.')
-
-        self.reader = BufferedReader(reader, buffer_size)
-        self.writer = BufferedWriter(writer, buffer_size)
-
-    def read(self, n=None):
-        if n is None:
-            n = -1
-        return self.reader.read(n)
-
-    def readinto(self, b):
-        return self.reader.readinto(b)
-
-    def write(self, b):
-        return self.writer.write(b)
-
-    def peek(self, n=0):
-        return self.reader.peek(n)
-
-    def read1(self, n):
-        return self.reader.read1(n)
-
-    def readable(self):
-        return self.reader.readable()
-
-    def writable(self):
-        return self.writer.writable()
-
-    def flush(self):
-        return self.writer.flush()
-
-    def close(self):
-        self.writer.close()
-        self.reader.close()
-
-    def isatty(self):
-        return self.reader.isatty() or self.writer.isatty()
-
-    @property
-    def closed(self):
-        return self.writer.closed
-
-
-class BufferedRandom(BufferedWriter, BufferedReader):
-
-    """A buffered interface to random access streams.
-
-    The constructor creates a reader and writer for a seekable stream,
-    raw, given in the first argument. If the buffer_size is omitted it
-    defaults to DEFAULT_BUFFER_SIZE.
-    """
-
-    _warning_stack_offset = 3
-
-    def __init__(self, raw,
-                 buffer_size=DEFAULT_BUFFER_SIZE, max_buffer_size=None):
-        raw._checkSeekable()
-        BufferedReader.__init__(self, raw, buffer_size)
-        BufferedWriter.__init__(self, raw, buffer_size, max_buffer_size)
-
-    def seek(self, pos, whence=0):
-        if not (0 <= whence <= 2):
-            raise ValueError("invalid whence")
-        self.flush()
-        if self._read_buf:
-            # Undo read ahead.
-            with self._read_lock:
-                self.raw.seek(self._read_pos - len(self._read_buf), 1)
-        # First do the raw seek, then empty the read buffer, so that
-        # if the raw seek fails, we don't lose buffered data forever.
-        pos = self.raw.seek(pos, whence)
-        with self._read_lock:
-            self._reset_read_buf()
-        if pos < 0:
-            raise IOError("seek() returned invalid position")
-        return pos
-
-    def tell(self):
-        if self._write_buf:
-            return BufferedWriter.tell(self)
-        else:
-            return BufferedReader.tell(self)
-
-    def truncate(self, pos=None):
-        if pos is None:
-            pos = self.tell()
-        # Use seek to flush the read buffer.
-        return BufferedWriter.truncate(self, pos)
-
-    def read(self, n=None):
-        if n is None:
-            n = -1
-        self.flush()
-        return BufferedReader.read(self, n)
-
-    def readinto(self, b):
-        self.flush()
-        return BufferedReader.readinto(self, b)
-
-    def peek(self, n=0):
-        self.flush()
-        return BufferedReader.peek(self, n)
-
-    def read1(self, n):
-        self.flush()
-        return BufferedReader.read1(self, n)
-
-    def write(self, b):
-        if self._read_buf:
-            # Undo readahead
-            with self._read_lock:
-                self.raw.seek(self._read_pos - len(self._read_buf), 1)
-                self._reset_read_buf()
-        return BufferedWriter.write(self, b)
-
-
-class TextIOBase(IOBase):
-
-    """Base class for text I/O.
-
-    This class provides a character and line based interface to stream
-    I/O. There is no readinto method because Python's character strings
-    are immutable. There is no public constructor.
-    """
-
-    def read(self, n=-1):
-        """Read at most n characters from stream.
-
-        Read from underlying buffer until we have n characters or we hit EOF.
-        If n is negative or omitted, read until EOF.
-        """
-        self._unsupported("read")
-
-    def write(self, s):
-        """Write string s to stream."""
-        self._unsupported("write")
-
-    def truncate(self, pos=None):
-        """Truncate size to pos."""
-        self._unsupported("truncate")
-
-    def readline(self):
-        """Read until newline or EOF.
-
-        Returns an empty string if EOF is hit immediately.
-        """
-        self._unsupported("readline")
-
-    def detach(self):
-        """
-        Separate the underlying buffer from the TextIOBase and return it.
-
-        After the underlying buffer has been detached, the TextIO is in an
-        unusable state.
-        """
-        self._unsupported("detach")
-
-    @property
-    def encoding(self):
-        """Subclasses should override."""
-        return None
-
-    @property
-    def newlines(self):
-        """Line endings translated so far.
-
-        Only line endings translated during reading are considered.
-
-        Subclasses should override.
-        """
-        return None
-
-    @property
-    def errors(self):
-        """Error setting of the decoder or encoder.
-
-        Subclasses should override."""
-        return None
-
-io.TextIOBase.register(TextIOBase)
-
-
-class IncrementalNewlineDecoder(codecs.IncrementalDecoder):
-    r"""Codec used when reading a file in universal newlines mode.  It wraps
-    another incremental decoder, translating \r\n and \r into \n.  It also
-    records the types of newlines encountered.  When used with
-    translate=False, it ensures that the newline sequence is returned in
-    one piece.
-    """
-    def __init__(self, decoder, translate, errors='strict'):
-        codecs.IncrementalDecoder.__init__(self, errors=errors)
-        self.translate = translate
-        self.decoder = decoder
-        self.seennl = 0
-        self.pendingcr = False
-
-    def decode(self, input, final=False):
-        # decode input (with the eventual \r from a previous pass)
-        if self.decoder is None:
-            output = input
-        else:
-            output = self.decoder.decode(input, final=final)
-        if self.pendingcr and (output or final):
-            output = "\r" + output
-            self.pendingcr = False
-
-        # retain last \r even when not translating data:
-        # then readline() is sure to get \r\n in one pass
-        if output.endswith("\r") and not final:
-            output = output[:-1]
-            self.pendingcr = True
-
-        # Record which newlines are read
-        crlf = output.count('\r\n')
-        cr = output.count('\r') - crlf
-        lf = output.count('\n') - crlf
-        self.seennl |= (lf and self._LF) | (cr and self._CR) \
-                    | (crlf and self._CRLF)
-
-        if self.translate:
-            if crlf:
-                output = output.replace("\r\n", "\n")
-            if cr:
-                output = output.replace("\r", "\n")
-
-        return output
-
-    def getstate(self):
-        if self.decoder is None:
-            buf = b""
-            flag = 0
-        else:
-            buf, flag = self.decoder.getstate()
-        flag <<= 1
-        if self.pendingcr:
-            flag |= 1
-        return buf, flag
-
-    def setstate(self, state):
-        buf, flag = state
-        self.pendingcr = bool(flag & 1)
-        if self.decoder is not None:
-            self.decoder.setstate((buf, flag >> 1))
-
-    def reset(self):
-        self.seennl = 0
-        self.pendingcr = False
-        if self.decoder is not None:
-            self.decoder.reset()
-
-    _LF = 1
-    _CR = 2
-    _CRLF = 4
-
-    @property
-    def newlines(self):
-        return (None,
-                "\n",
-                "\r",
-                ("\r", "\n"),
-                "\r\n",
-                ("\n", "\r\n"),
-                ("\r", "\r\n"),
-                ("\r", "\n", "\r\n")
-               )[self.seennl]
-
-
-class TextIOWrapper(TextIOBase):
-
-    r"""Character and line based layer over a BufferedIOBase object, buffer.
-
-    encoding gives the name of the encoding that the stream will be
-    decoded or encoded with. It defaults to locale.getpreferredencoding.
-
-    errors determines the strictness of encoding and decoding (see the
-    codecs.register) and defaults to "strict".
-
-    newline can be None, '', '\n', '\r', or '\r\n'.  It controls the
-    handling of line endings. If it is None, universal newlines is
-    enabled.  With this enabled, on input, the lines endings '\n', '\r',
-    or '\r\n' are translated to '\n' before being returned to the
-    caller. Conversely, on output, '\n' is translated to the system
-    default line seperator, os.linesep. If newline is any other of its
-    legal values, that newline becomes the newline when the file is read
-    and it is returned untranslated. On output, '\n' is converted to the
-    newline.
-
-    If line_buffering is True, a call to flush is implied when a call to
-    write contains a newline character.
-    """
-
-    _CHUNK_SIZE = 2048
-
-    def __init__(self, buffer, encoding=None, errors=None, newline=None,
-                 line_buffering=False):
-        if newline is not None and not isinstance(newline, basestring):
-            raise TypeError("illegal newline type: %r" % (type(newline),))
-        if newline not in (None, "", "\n", "\r", "\r\n"):
-            raise ValueError("illegal newline value: %r" % (newline,))
-        if encoding is None:
-            try:
-                import locale
-            except ImportError:
-                # Importing locale may fail if Python is being built
-                encoding = "ascii"
-            else:
-                encoding = locale.getpreferredencoding()
-
-        if not isinstance(encoding, basestring):
-            raise ValueError("invalid encoding: %r" % encoding)
-
-        if errors is None:
-            errors = "strict"
-        else:
-            if not isinstance(errors, basestring):
-                raise ValueError("invalid errors: %r" % errors)
-
-        self._buffer = buffer
-        self._line_buffering = line_buffering
-        self._encoding = encoding
-        self._errors = errors
-        self._readuniversal = not newline
-        self._readtranslate = newline is None
-        self._readnl = newline
-        self._writetranslate = newline != ''
-        self._writenl = newline or os.linesep
-        self._encoder = None
-        self._decoder = None
-        self._decoded_chars = ''  # buffer for text returned from decoder
-        self._decoded_chars_used = 0  # offset into _decoded_chars for read()
-        self._snapshot = None  # info for reconstructing decoder state
-        self._seekable = self._telling = self.buffer.seekable()
-
-        if self._seekable and self.writable():
-            position = self.buffer.tell()
-            if position != 0:
-                try:
-                    self._get_encoder().setstate(0)
-                except LookupError:
-                    # Sometimes the encoder doesn't exist
-                    pass
-
-    # self._snapshot is either None, or a tuple (dec_flags, next_input)
-    # where dec_flags is the second (integer) item of the decoder state
-    # and next_input is the chunk of input bytes that comes next after the
-    # snapshot point.  We use this to reconstruct decoder states in tell().
-
-    # Naming convention:
-    #   - "bytes_..." for integer variables that count input bytes
-    #   - "chars_..." for integer variables that count decoded characters
-
-    def __repr__(self):
-        try:
-            name = self.name
-        except AttributeError:
-            return "<_pyio.TextIOWrapper encoding='{0}'>".format(self.encoding)
-        else:
-            return "<_pyio.TextIOWrapper name={0!r} encoding='{1}'>".format(
-                name, self.encoding)
-
-    @property
-    def encoding(self):
-        return self._encoding
-
-    @property
-    def errors(self):
-        return self._errors
-
-    @property
-    def line_buffering(self):
-        return self._line_buffering
-
-    @property
-    def buffer(self):
-        return self._buffer
-
-    def seekable(self):
-        return self._seekable
-
-    def readable(self):
-        return self.buffer.readable()
-
-    def writable(self):
-        return self.buffer.writable()
-
-    def flush(self):
-        self.buffer.flush()
-        self._telling = self._seekable
-
-    def close(self):
-        if self.buffer is not None and not self.closed:
-            self.flush()
-            self.buffer.close()
-
-    @property
-    def closed(self):
-        return self.buffer.closed
-
-    @property
-    def name(self):
-        return self.buffer.name
-
-    def fileno(self):
-        return self.buffer.fileno()
-
-    def isatty(self):
-        return self.buffer.isatty()
-
-    def write(self, s):
-        if self.closed:
-            raise ValueError("write to closed file")
-        if not isinstance(s, unicode):
-            raise TypeError("can't write %s to text stream" %
-                            s.__class__.__name__)
-        length = len(s)
-        haslf = (self._writetranslate or self._line_buffering) and "\n" in s
-        if haslf and self._writetranslate and self._writenl != "\n":
-            s = s.replace("\n", self._writenl)
-        encoder = self._encoder or self._get_encoder()
-        # XXX What if we were just reading?
-        b = encoder.encode(s)
-        self.buffer.write(b)
-        if self._line_buffering and (haslf or "\r" in s):
-            self.flush()
-        self._snapshot = None
-        if self._decoder:
-            self._decoder.reset()
-        return length
-
-    def _get_encoder(self):
-        make_encoder = codecs.getincrementalencoder(self._encoding)
-        self._encoder = make_encoder(self._errors)
-        return self._encoder
-
-    def _get_decoder(self):
-        make_decoder = codecs.getincrementaldecoder(self._encoding)
-        decoder = make_decoder(self._errors)
-        if self._readuniversal:
-            decoder = IncrementalNewlineDecoder(decoder, self._readtranslate)
-        self._decoder = decoder
-        return decoder
-
-    # The following three methods implement an ADT for _decoded_chars.
-    # Text returned from the decoder is buffered here until the client
-    # requests it by calling our read() or readline() method.
-    def _set_decoded_chars(self, chars):
-        """Set the _decoded_chars buffer."""
-        self._decoded_chars = chars
-        self._decoded_chars_used = 0
-
-    def _get_decoded_chars(self, n=None):
-        """Advance into the _decoded_chars buffer."""
-        offset = self._decoded_chars_used
-        if n is None:
-            chars = self._decoded_chars[offset:]
-        else:
-            chars = self._decoded_chars[offset:offset + n]
-        self._decoded_chars_used += len(chars)
-        return chars
-
-    def _rewind_decoded_chars(self, n):
-        """Rewind the _decoded_chars buffer."""
-        if self._decoded_chars_used < n:
-            raise AssertionError("rewind decoded_chars out of bounds")
-        self._decoded_chars_used -= n
-
-    def _read_chunk(self):
-        """
-        Read and decode the next chunk of data from the BufferedReader.
-        """
-
-        # The return value is True unless EOF was reached.  The decoded
-        # string is placed in self._decoded_chars (replacing its previous
-        # value).  The entire input chunk is sent to the decoder, though
-        # some of it may remain buffered in the decoder, yet to be
-        # converted.
-
-        if self._decoder is None:
-            raise ValueError("no decoder")
-
-        if self._telling:
-            # To prepare for tell(), we need to snapshot a point in the
-            # file where the decoder's input buffer is empty.
-
-            dec_buffer, dec_flags = self._decoder.getstate()
-            # Given this, we know there was a valid snapshot point
-            # len(dec_buffer) bytes ago with decoder state (b'', dec_flags).
-
-        # Read a chunk, decode it, and put the result in self._decoded_chars.
-        input_chunk = self.buffer.read1(self._CHUNK_SIZE)
-        eof = not input_chunk
-        self._set_decoded_chars(self._decoder.decode(input_chunk, eof))
-
-        if self._telling:
-            # At the snapshot point, len(dec_buffer) bytes before the read,
-            # the next input to be decoded is dec_buffer + input_chunk.
-            self._snapshot = (dec_flags, dec_buffer + input_chunk)
-
-        return not eof
-
-    def _pack_cookie(self, position, dec_flags=0,
-                           bytes_to_feed=0, need_eof=0, chars_to_skip=0):
-        # The meaning of a tell() cookie is: seek to position, set the
-        # decoder flags to dec_flags, read bytes_to_feed bytes, feed them
-        # into the decoder with need_eof as the EOF flag, then skip
-        # chars_to_skip characters of the decoded result.  For most simple
-        # decoders, tell() will often just give a byte offset in the file.
-        return (position | (dec_flags<<64) | (bytes_to_feed<<128) |
-               (chars_to_skip<<192) | bool(need_eof)<<256)
-
-    def _unpack_cookie(self, bigint):
-        rest, position = divmod(bigint, 1<<64)
-        rest, dec_flags = divmod(rest, 1<<64)
-        rest, bytes_to_feed = divmod(rest, 1<<64)
-        need_eof, chars_to_skip = divmod(rest, 1<<64)
-        return position, dec_flags, bytes_to_feed, need_eof, chars_to_skip
-
-    def tell(self):
-        if not self._seekable:
-            raise IOError("underlying stream is not seekable")
-        if not self._telling:
-            raise IOError("telling position disabled by next() call")
-        self.flush()
-        position = self.buffer.tell()
-        decoder = self._decoder
-        if decoder is None or self._snapshot is None:
-            if self._decoded_chars:
-                # This should never happen.
-                raise AssertionError("pending decoded text")
-            return position
-
-        # Skip backward to the snapshot point (see _read_chunk).
-        dec_flags, next_input = self._snapshot
-        position -= len(next_input)
-
-        # How many decoded characters have been used up since the snapshot?
-        chars_to_skip = self._decoded_chars_used
-        if chars_to_skip == 0:
-            # We haven't moved from the snapshot point.
-            return self._pack_cookie(position, dec_flags)
-
-        # Starting from the snapshot position, we will walk the decoder
-        # forward until it gives us enough decoded characters.
-        saved_state = decoder.getstate()
-        try:
-            # Note our initial start point.
-            decoder.setstate((b'', dec_flags))
-            start_pos = position
-            start_flags, bytes_fed, chars_decoded = dec_flags, 0, 0
-            need_eof = 0
-
-            # Feed the decoder one byte at a time.  As we go, note the
-            # nearest "safe start point" before the current location
-            # (a point where the decoder has nothing buffered, so seek()
-            # can safely start from there and advance to this location).
-            for next_byte in next_input:
-                bytes_fed += 1
-                chars_decoded += len(decoder.decode(next_byte))
-                dec_buffer, dec_flags = decoder.getstate()
-                if not dec_buffer and chars_decoded <= chars_to_skip:
-                    # Decoder buffer is empty, so this is a safe start point.
-                    start_pos += bytes_fed
-                    chars_to_skip -= chars_decoded
-                    start_flags, bytes_fed, chars_decoded = dec_flags, 0, 0
-                if chars_decoded >= chars_to_skip:
-                    break
-            else:
-                # We didn't get enough decoded data; signal EOF to get more.
-                chars_decoded += len(decoder.decode(b'', final=True))
-                need_eof = 1
-                if chars_decoded < chars_to_skip:
-                    raise IOError("can't reconstruct logical file position")
-
-            # The returned cookie corresponds to the last safe start point.
-            return self._pack_cookie(
-                start_pos, start_flags, bytes_fed, need_eof, chars_to_skip)
-        finally:
-            decoder.setstate(saved_state)
-
-    def truncate(self, pos=None):
-        self.flush()
-        if pos is None:
-            pos = self.tell()
-        return self.buffer.truncate(pos)
-
-    def detach(self):
-        if self.buffer is None:
-            raise ValueError("buffer is already detached")
-        self.flush()
-        buffer = self._buffer
-        self._buffer = None
-        return buffer
-
-    def seek(self, cookie, whence=0):
-        if self.closed:
-            raise ValueError("tell on closed file")
-        if not self._seekable:
-            raise IOError("underlying stream is not seekable")
-        if whence == 1: # seek relative to current position
-            if cookie != 0:
-                raise IOError("can't do nonzero cur-relative seeks")
-            # Seeking to the current position should attempt to
-            # sync the underlying buffer with the current position.
-            whence = 0
-            cookie = self.tell()
-        if whence == 2: # seek relative to end of file
-            if cookie != 0:
-                raise IOError("can't do nonzero end-relative seeks")
-            self.flush()
-            position = self.buffer.seek(0, 2)
-            self._set_decoded_chars('')
-            self._snapshot = None
-            if self._decoder:
-                self._decoder.reset()
-            return position
-        if whence != 0:
-            raise ValueError("invalid whence (%r, should be 0, 1 or 2)" %
-                             (whence,))
-        if cookie < 0:
-            raise ValueError("negative seek position %r" % (cookie,))
-        self.flush()
-
-        # The strategy of seek() is to go back to the safe start point
-        # and replay the effect of read(chars_to_skip) from there.
-        start_pos, dec_flags, bytes_to_feed, need_eof, chars_to_skip = \
-            self._unpack_cookie(cookie)
-
-        # Seek back to the safe start point.
-        self.buffer.seek(start_pos)
-        self._set_decoded_chars('')
-        self._snapshot = None
-
-        # Restore the decoder to its state from the safe start point.
-        if cookie == 0 and self._decoder:
-            self._decoder.reset()
-        elif self._decoder or dec_flags or chars_to_skip:
-            self._decoder = self._decoder or self._get_decoder()
-            self._decoder.setstate((b'', dec_flags))
-            self._snapshot = (dec_flags, b'')
-
-        if chars_to_skip:
-            # Just like _read_chunk, feed the decoder and save a snapshot.
-            input_chunk = self.buffer.read(bytes_to_feed)
-            self._set_decoded_chars(
-                self._decoder.decode(input_chunk, need_eof))
-            self._snapshot = (dec_flags, input_chunk)
-
-            # Skip chars_to_skip of the decoded characters.
-            if len(self._decoded_chars) < chars_to_skip:
-                raise IOError("can't restore logical file position")
-            self._decoded_chars_used = chars_to_skip
-
-        # Finally, reset the encoder (merely useful for proper BOM handling)
-        try:
-            encoder = self._encoder or self._get_encoder()
-        except LookupError:
-            # Sometimes the encoder doesn't exist
-            pass
-        else:
-            if cookie != 0:
-                encoder.setstate(0)
-            else:
-                encoder.reset()
-        return cookie
-
-    def read(self, n=None):
-        self._checkReadable()
-        if n is None:
-            n = -1
-        decoder = self._decoder or self._get_decoder()
-        try:
-            n.__index__
-        except AttributeError:
-            raise TypeError("an integer is required")
-        if n < 0:
-            # Read everything.
-            result = (self._get_decoded_chars() +
-                      decoder.decode(self.buffer.read(), final=True))
-            self._set_decoded_chars('')
-            self._snapshot = None
-            return result
-        else:
-            # Keep reading chunks until we have n characters to return.
-            eof = False
-            result = self._get_decoded_chars(n)
-            while len(result) < n and not eof:
-                eof = not self._read_chunk()
-                result += self._get_decoded_chars(n - len(result))
-            return result
-
-    def next(self):
-        self._telling = False
-        line = self.readline()
-        if not line:
-            self._snapshot = None
-            self._telling = self._seekable
-            raise StopIteration
-        return line
-
-    def readline(self, limit=None):
-        if self.closed:
-            raise ValueError("read from closed file")
-        if limit is None:
-            limit = -1
-        elif not isinstance(limit, (int, long)):
-            raise TypeError("limit must be an integer")
-
-        # Grab all the decoded text (we will rewind any extra bits later).
-        line = self._get_decoded_chars()
-
-        start = 0
-        # Make the decoder if it doesn't already exist.
-        if not self._decoder:
-            self._get_decoder()
-
-        pos = endpos = None
-        while True:
-            if self._readtranslate:
-                # Newlines are already translated, only search for \n
-                pos = line.find('\n', start)
-                if pos >= 0:
-                    endpos = pos + 1
-                    break
-                else:
-                    start = len(line)
-
-            elif self._readuniversal:
-                # Universal newline search. Find any of \r, \r\n, \n
-                # The decoder ensures that \r\n are not split in two pieces
-
-                # In C we'd look for these in parallel of course.
-                nlpos = line.find("\n", start)
-                crpos = line.find("\r", start)
-                if crpos == -1:
-                    if nlpos == -1:
-                        # Nothing found
-                        start = len(line)
-                    else:
-                        # Found \n
-                        endpos = nlpos + 1
-                        break
-                elif nlpos == -1:
-                    # Found lone \r
-                    endpos = crpos + 1
-                    break
-                elif nlpos < crpos:
-                    # Found \n
-                    endpos = nlpos + 1
-                    break
-                elif nlpos == crpos + 1:
-                    # Found \r\n
-                    endpos = crpos + 2
-                    break
-                else:
-                    # Found \r
-                    endpos = crpos + 1
-                    break
-            else:
-                # non-universal
-                pos = line.find(self._readnl)
-                if pos >= 0:
-                    endpos = pos + len(self._readnl)
-                    break
-
-            if limit >= 0 and len(line) >= limit:
-                endpos = limit  # reached length limit
-                break
-
-            # No line ending seen yet - get more data'
-            while self._read_chunk():
-                if self._decoded_chars:
-                    break
-            if self._decoded_chars:
-                line += self._get_decoded_chars()
-            else:
-                # end of file
-                self._set_decoded_chars('')
-                self._snapshot = None
-                return line
-
-        if limit >= 0 and endpos > limit:
-            endpos = limit  # don't exceed limit
-
-        # Rewind _decoded_chars to just after the line ending we found.
-        self._rewind_decoded_chars(len(line) - endpos)
-        return line[:endpos]
-
-    @property
-    def newlines(self):
-        return self._decoder.newlines if self._decoder else None
-
-
-class StringIO(TextIOWrapper):
-    """Text I/O implementation using an in-memory buffer.
-
-    The initial_value argument sets the value of object.  The newline
-    argument is like the one of TextIOWrapper's constructor.
-    """
-
-    def __init__(self, initial_value="", newline="\n"):
-        super(StringIO, self).__init__(BytesIO(),
-                                       encoding="utf-8",
-                                       errors="strict",
-                                       newline=newline)
-        # Issue #5645: make universal newlines semantics the same as in the
-        # C version, even under Windows.
-        if newline is None:
-            self._writetranslate = False
-        if initial_value:
-            if not isinstance(initial_value, unicode):
-                initial_value = unicode(initial_value)
-            self.write(initial_value)
-            self.seek(0)
-
-    def getvalue(self):
-        self.flush()
-        return self.buffer.getvalue().decode(self._encoding, self._errors)
-
-    def __repr__(self):
-        # TextIOWrapper tells the encoding in its repr. In StringIO,
-        # that's a implementation detail.
-        return object.__repr__(self)
-
-    @property
-    def errors(self):
-        return None
-
-    @property
-    def encoding(self):
-        return None
-
-    def detach(self):
-        # This doesn't make sense on StringIO.
-        self._unsupported("detach")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/_strptime.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/_strptime.py
deleted file mode 100644
index d15d5fe..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/_strptime.py
+++ /dev/null
@@ -1,454 +0,0 @@
-"""Strptime-related classes and functions.
-
-CLASSES:
-    LocaleTime -- Discovers and stores locale-specific time information
-    TimeRE -- Creates regexes for pattern matching a string of text containing
-                time information
-
-FUNCTIONS:
-    _getlang -- Figure out what language is being used for the locale
-    strptime -- Calculates the time struct represented by the passed-in string
-
-"""
-import time
-import locale
-import calendar
-from re import compile as re_compile
-from re import IGNORECASE
-from re import escape as re_escape
-from datetime import date as datetime_date
-try:
-    from thread import allocate_lock as _thread_allocate_lock
-except:
-    from dummy_thread import allocate_lock as _thread_allocate_lock
-
-__all__ = []
-
-def _getlang():
-    # Figure out what the current language is set to.
-    return locale.getlocale(locale.LC_TIME)
-
-class LocaleTime(object):
-    """Stores and handles locale-specific information related to time.
-
-    ATTRIBUTES:
-        f_weekday -- full weekday names (7-item list)
-        a_weekday -- abbreviated weekday names (7-item list)
-        f_month -- full month names (13-item list; dummy value in [0], which
-                    is added by code)
-        a_month -- abbreviated month names (13-item list, dummy value in
-                    [0], which is added by code)
-        am_pm -- AM/PM representation (2-item list)
-        LC_date_time -- format string for date/time representation (string)
-        LC_date -- format string for date representation (string)
-        LC_time -- format string for time representation (string)
-        timezone -- daylight- and non-daylight-savings timezone representation
-                    (2-item list of sets)
-        lang -- Language used by instance (2-item tuple)
-    """
-
-    def __init__(self):
-        """Set all attributes.
-
-        Order of methods called matters for dependency reasons.
-
-        The locale language is set at the offset and then checked again before
-        exiting.  This is to make sure that the attributes were not set with a
-        mix of information from more than one locale.  This would most likely
-        happen when using threads where one thread calls a locale-dependent
-        function while another thread changes the locale while the function in
-        the other thread is still running.  Proper coding would call for
-        locks to prevent changing the locale while locale-dependent code is
-        running.  The check here is done in case someone does not think about
-        doing this.
-
-        Only other possible issue is if someone changed the timezone and did
-        not call tz.tzset .  That is an issue for the programmer, though,
-        since changing the timezone is worthless without that call.
-
-        """
-        self.lang = _getlang()
-        self.__calc_weekday()
-        self.__calc_month()
-        self.__calc_am_pm()
-        self.__calc_timezone()
-        self.__calc_date_time()
-        if _getlang() != self.lang:
-            raise ValueError("locale changed during initialization")
-
-    def __pad(self, seq, front):
-        # Add '' to seq to either the front (is True), else the back.
-        seq = list(seq)
-        if front:
-            seq.insert(0, '')
-        else:
-            seq.append('')
-        return seq
-
-    def __calc_weekday(self):
-        # Set self.a_weekday and self.f_weekday using the calendar
-        # module.
-        a_weekday = [calendar.day_abbr[i].lower() for i in range(7)]
-        f_weekday = [calendar.day_name[i].lower() for i in range(7)]
-        self.a_weekday = a_weekday
-        self.f_weekday = f_weekday
-
-    def __calc_month(self):
-        # Set self.f_month and self.a_month using the calendar module.
-        a_month = [calendar.month_abbr[i].lower() for i in range(13)]
-        f_month = [calendar.month_name[i].lower() for i in range(13)]
-        self.a_month = a_month
-        self.f_month = f_month
-
-    def __calc_am_pm(self):
-        # Set self.am_pm by using time.strftime().
-
-        # The magic date (1999,3,17,hour,44,55,2,76,0) is not really that
-        # magical; just happened to have used it everywhere else where a
-        # static date was needed.
-        am_pm = []
-        for hour in (01,22):
-            time_tuple = time.struct_time((1999,3,17,hour,44,55,2,76,0))
-            am_pm.append(time.strftime("%p", time_tuple).lower())
-        self.am_pm = am_pm
-
-    def __calc_date_time(self):
-        # Set self.date_time, self.date, & self.time by using
-        # time.strftime().
-
-        # Use (1999,3,17,22,44,55,2,76,0) for magic date because the amount of
-        # overloaded numbers is minimized.  The order in which searches for
-        # values within the format string is very important; it eliminates
-        # possible ambiguity for what something represents.
-        time_tuple = time.struct_time((1999,3,17,22,44,55,2,76,0))
-        date_time = [None, None, None]
-        date_time[0] = time.strftime("%c", time_tuple).lower()
-        date_time[1] = time.strftime("%x", time_tuple).lower()
-        date_time[2] = time.strftime("%X", time_tuple).lower()
-        replacement_pairs = [('%', '%%'), (self.f_weekday[2], '%A'),
-                    (self.f_month[3], '%B'), (self.a_weekday[2], '%a'),
-                    (self.a_month[3], '%b'), (self.am_pm[1], '%p'),
-                    ('1999', '%Y'), ('99', '%y'), ('22', '%H'),
-                    ('44', '%M'), ('55', '%S'), ('76', '%j'),
-                    ('17', '%d'), ('03', '%m'), ('3', '%m'),
-                    # '3' needed for when no leading zero.
-                    ('2', '%w'), ('10', '%I')]
-        replacement_pairs.extend([(tz, "%Z") for tz_values in self.timezone
-                                                for tz in tz_values])
-        for offset,directive in ((0,'%c'), (1,'%x'), (2,'%X')):
-            current_format = date_time[offset]
-            for old, new in replacement_pairs:
-                # Must deal with possible lack of locale info
-                # manifesting itself as the empty string (e.g., Swedish's
-                # lack of AM/PM info) or a platform returning a tuple of empty
-                # strings (e.g., MacOS 9 having timezone as ('','')).
-                if old:
-                    current_format = current_format.replace(old, new)
-            # If %W is used, then Sunday, 2005-01-03 will fall on week 0 since
-            # 2005-01-03 occurs before the first Monday of the year.  Otherwise
-            # %U is used.
-            time_tuple = time.struct_time((1999,1,3,1,1,1,6,3,0))
-            if '00' in time.strftime(directive, time_tuple):
-                U_W = '%W'
-            else:
-                U_W = '%U'
-            date_time[offset] = current_format.replace('11', U_W)
-        self.LC_date_time = date_time[0]
-        self.LC_date = date_time[1]
-        self.LC_time = date_time[2]
-
-    def __calc_timezone(self):
-        # Set self.timezone by using time.tzname.
-        # Do not worry about possibility of time.tzname[0] == timetzname[1]
-        # and time.daylight; handle that in strptime .
-        try:
-            time.tzset()
-        except AttributeError:
-            pass
-        no_saving = frozenset(["utc", "gmt", time.tzname[0].lower()])
-        if time.daylight:
-            has_saving = frozenset([time.tzname[1].lower()])
-        else:
-            has_saving = frozenset()
-        self.timezone = (no_saving, has_saving)
-
-
-class TimeRE(dict):
-    """Handle conversion from format directives to regexes."""
-
-    def __init__(self, locale_time=None):
-        """Create keys/values.
-
-        Order of execution is important for dependency reasons.
-
-        """
-        if locale_time:
-            self.locale_time = locale_time
-        else:
-            self.locale_time = LocaleTime()
-        base = super(TimeRE, self)
-        base.__init__({
-            # The " \d" part of the regex is to make %c from ANSI C work
-            'd': r"(?P<d>3[0-1]|[1-2]\d|0[1-9]|[1-9]| [1-9])",
-            'f': r"(?P<f>[0-9]{1,6})",
-            'H': r"(?P<H>2[0-3]|[0-1]\d|\d)",
-            'I': r"(?P<I>1[0-2]|0[1-9]|[1-9])",
-            'j': r"(?P<j>36[0-6]|3[0-5]\d|[1-2]\d\d|0[1-9]\d|00[1-9]|[1-9]\d|0[1-9]|[1-9])",
-            'm': r"(?P<m>1[0-2]|0[1-9]|[1-9])",
-            'M': r"(?P<M>[0-5]\d|\d)",
-            'S': r"(?P<S>6[0-1]|[0-5]\d|\d)",
-            'U': r"(?P<U>5[0-3]|[0-4]\d|\d)",
-            'w': r"(?P<w>[0-6])",
-            # W is set below by using 'U'
-            'y': r"(?P<y>\d\d)",
-            #XXX: Does 'Y' need to worry about having less or more than
-            #     4 digits?
-            'Y': r"(?P<Y>\d\d\d\d)",
-            'A': self.__seqToRE(self.locale_time.f_weekday, 'A'),
-            'a': self.__seqToRE(self.locale_time.a_weekday, 'a'),
-            'B': self.__seqToRE(self.locale_time.f_month[1:], 'B'),
-            'b': self.__seqToRE(self.locale_time.a_month[1:], 'b'),
-            'p': self.__seqToRE(self.locale_time.am_pm, 'p'),
-            'Z': self.__seqToRE((tz for tz_names in self.locale_time.timezone
-                                        for tz in tz_names),
-                                'Z'),
-            '%': '%'})
-        base.__setitem__('W', base.__getitem__('U').replace('U', 'W'))
-        base.__setitem__('c', self.pattern(self.locale_time.LC_date_time))
-        base.__setitem__('x', self.pattern(self.locale_time.LC_date))
-        base.__setitem__('X', self.pattern(self.locale_time.LC_time))
-
-    def __seqToRE(self, to_convert, directive):
-        """Convert a list to a regex string for matching a directive.
-
-        Want possible matching values to be from longest to shortest.  This
-        prevents the possibility of a match occuring for a value that also
-        a substring of a larger value that should have matched (e.g., 'abc'
-        matching when 'abcdef' should have been the match).
-
-        """
-        to_convert = sorted(to_convert, key=len, reverse=True)
-        for value in to_convert:
-            if value != '':
-                break
-        else:
-            return ''
-        regex = '|'.join(re_escape(stuff) for stuff in to_convert)
-        regex = '(?P<%s>%s' % (directive, regex)
-        return '%s)' % regex
-
-    def pattern(self, format):
-        """Return regex pattern for the format string.
-
-        Need to make sure that any characters that might be interpreted as
-        regex syntax are escaped.
-
-        """
-        processed_format = ''
-        # The sub() call escapes all characters that might be misconstrued
-        # as regex syntax.  Cannot use re.escape since we have to deal with
-        # format directives (%m, etc.).
-        regex_chars = re_compile(r"([\\.^$*+?\(\){}\[\]|])")
-        format = regex_chars.sub(r"\\\1", format)
-        whitespace_replacement = re_compile('\s+')
-        format = whitespace_replacement.sub('\s+', format)
-        while '%' in format:
-            directive_index = format.index('%')+1
-            processed_format = "%s%s%s" % (processed_format,
-                                           format[:directive_index-1],
-                                           self[format[directive_index]])
-            format = format[directive_index+1:]
-        return "%s%s" % (processed_format, format)
-
-    def compile(self, format):
-        """Return a compiled re object for the format string."""
-        return re_compile(self.pattern(format), IGNORECASE)
-
-_cache_lock = _thread_allocate_lock()
-# DO NOT modify _TimeRE_cache or _regex_cache without acquiring the cache lock
-# first!
-_TimeRE_cache = TimeRE()
-_CACHE_MAX_SIZE = 5 # Max number of regexes stored in _regex_cache
-_regex_cache = {}
-
-def _calc_julian_from_U_or_W(year, week_of_year, day_of_week, week_starts_Mon):
-    """Calculate the Julian day based on the year, week of the year, and day of
-    the week, with week_start_day representing whether the week of the year
-    assumes the week starts on Sunday or Monday (6 or 0)."""
-    first_weekday = datetime_date(year, 1, 1).weekday()
-    # If we are dealing with the %U directive (week starts on Sunday), it's
-    # easier to just shift the view to Sunday being the first day of the
-    # week.
-    if not week_starts_Mon:
-        first_weekday = (first_weekday + 1) % 7
-        day_of_week = (day_of_week + 1) % 7
-    # Need to watch out for a week 0 (when the first day of the year is not
-    # the same as that specified by %U or %W).
-    week_0_length = (7 - first_weekday) % 7
-    if week_of_year == 0:
-        return 1 + day_of_week - first_weekday
-    else:
-        days_to_week = week_0_length + (7 * (week_of_year - 1))
-        return 1 + days_to_week + day_of_week
-
-
-def _strptime(data_string, format="%a %b %d %H:%M:%S %Y"):
-    """Return a time struct based on the input string and the format string."""
-    global _TimeRE_cache, _regex_cache
-    with _cache_lock:
-        if _getlang() != _TimeRE_cache.locale_time.lang:
-            _TimeRE_cache = TimeRE()
-            _regex_cache.clear()
-        if len(_regex_cache) > _CACHE_MAX_SIZE:
-            _regex_cache.clear()
-        locale_time = _TimeRE_cache.locale_time
-        format_regex = _regex_cache.get(format)
-        if not format_regex:
-            try:
-                format_regex = _TimeRE_cache.compile(format)
-            # KeyError raised when a bad format is found; can be specified as
-            # \\, in which case it was a stray % but with a space after it
-            except KeyError, err:
-                bad_directive = err.args[0]
-                if bad_directive == "\\":
-                    bad_directive = "%"
-                del err
-                raise ValueError("'%s' is a bad directive in format '%s'" %
-                                    (bad_directive, format))
-            # IndexError only occurs when the format string is "%"
-            except IndexError:
-                raise ValueError("stray %% in format '%s'" % format)
-            _regex_cache[format] = format_regex
-    found = format_regex.match(data_string)
-    if not found:
-        raise ValueError("time data %r does not match format %r" %
-                         (data_string, format))
-    if len(data_string) != found.end():
-        raise ValueError("unconverted data remains: %s" %
-                          data_string[found.end():])
-    year = 1900
-    month = day = 1
-    hour = minute = second = fraction = 0
-    tz = -1
-    # Default to -1 to signify that values not known; not critical to have,
-    # though
-    week_of_year = -1
-    week_of_year_start = -1
-    # weekday and julian defaulted to -1 so as to signal need to calculate
-    # values
-    weekday = julian = -1
-    found_dict = found.groupdict()
-    for group_key in found_dict.iterkeys():
-        # Directives not explicitly handled below:
-        #   c, x, X
-        #      handled by making out of other directives
-        #   U, W
-        #      worthless without day of the week
-        if group_key == 'y':
-            year = int(found_dict['y'])
-            # Open Group specification for strptime() states that a %y
-            #value in the range of [00, 68] is in the century 2000, while
-            #[69,99] is in the century 1900
-            if year <= 68:
-                year += 2000
-            else:
-                year += 1900
-        elif group_key == 'Y':
-            year = int(found_dict['Y'])
-        elif group_key == 'm':
-            month = int(found_dict['m'])
-        elif group_key == 'B':
-            month = locale_time.f_month.index(found_dict['B'].lower())
-        elif group_key == 'b':
-            month = locale_time.a_month.index(found_dict['b'].lower())
-        elif group_key == 'd':
-            day = int(found_dict['d'])
-        elif group_key == 'H':
-            hour = int(found_dict['H'])
-        elif group_key == 'I':
-            hour = int(found_dict['I'])
-            ampm = found_dict.get('p', '').lower()
-            # If there was no AM/PM indicator, we'll treat this like AM
-            if ampm in ('', locale_time.am_pm[0]):
-                # We're in AM so the hour is correct unless we're
-                # looking at 12 midnight.
-                # 12 midnight == 12 AM == hour 0
-                if hour == 12:
-                    hour = 0
-            elif ampm == locale_time.am_pm[1]:
-                # We're in PM so we need to add 12 to the hour unless
-                # we're looking at 12 noon.
-                # 12 noon == 12 PM == hour 12
-                if hour != 12:
-                    hour += 12
-        elif group_key == 'M':
-            minute = int(found_dict['M'])
-        elif group_key == 'S':
-            second = int(found_dict['S'])
-        elif group_key == 'f':
-            s = found_dict['f']
-            # Pad to always return microseconds.
-            s += "0" * (6 - len(s))
-            fraction = int(s)
-        elif group_key == 'A':
-            weekday = locale_time.f_weekday.index(found_dict['A'].lower())
-        elif group_key == 'a':
-            weekday = locale_time.a_weekday.index(found_dict['a'].lower())
-        elif group_key == 'w':
-            weekday = int(found_dict['w'])
-            if weekday == 0:
-                weekday = 6
-            else:
-                weekday -= 1
-        elif group_key == 'j':
-            julian = int(found_dict['j'])
-        elif group_key in ('U', 'W'):
-            week_of_year = int(found_dict[group_key])
-            if group_key == 'U':
-                # U starts week on Sunday.
-                week_of_year_start = 6
-            else:
-                # W starts week on Monday.
-                week_of_year_start = 0
-        elif group_key == 'Z':
-            # Since -1 is default value only need to worry about setting tz if
-            # it can be something other than -1.
-            found_zone = found_dict['Z'].lower()
-            for value, tz_values in enumerate(locale_time.timezone):
-                if found_zone in tz_values:
-                    # Deal with bad locale setup where timezone names are the
-                    # same and yet time.daylight is true; too ambiguous to
-                    # be able to tell what timezone has daylight savings
-                    if (time.tzname[0] == time.tzname[1] and
-                       time.daylight and found_zone not in ("utc", "gmt")):
-                        break
-                    else:
-                        tz = value
-                        break
-    # If we know the week of the year and what day of that week, we can figure
-    # out the Julian day of the year.
-    if julian == -1 and week_of_year != -1 and weekday != -1:
-        week_starts_Mon = True if week_of_year_start == 0 else False
-        julian = _calc_julian_from_U_or_W(year, week_of_year, weekday,
-                                            week_starts_Mon)
-    # Cannot pre-calculate datetime_date() since can change in Julian
-    # calculation and thus could have different value for the day of the week
-    # calculation.
-    if julian == -1:
-        # Need to add 1 to result since first day of the year is 1, not 0.
-        julian = datetime_date(year, month, day).toordinal() - \
-                  datetime_date(year, 1, 1).toordinal() + 1
-    else:  # Assume that if they bothered to include Julian day it will
-           # be accurate.
-        datetime_result = datetime_date.fromordinal((julian - 1) + datetime_date(year, 1, 1).toordinal())
-        year = datetime_result.year
-        month = datetime_result.month
-        day = datetime_result.day
-    if weekday == -1:
-        weekday = datetime_date(year, month, day).weekday()
-    return (time.struct_time((year, month, day,
-                              hour, minute, second,
-                              weekday, julian, tz)), fraction)
-
-def _strptime_time(data_string, format="%a %b %d %H:%M:%S %Y"):
-    return _strptime(data_string, format)[0]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/_weakrefset.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/_weakrefset.py
deleted file mode 100644
index a9fe184..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/_weakrefset.py
+++ /dev/null
@@ -1,216 +0,0 @@
-# Access WeakSet through the weakref module.
-# This code is separated-out because it is needed
-# by abc.py to load everything else at startup.
-
-from _weakref import ref
-
-__all__ = ['WeakSet']
-
-
-class _IterationGuard(object):
-    # This context manager registers itself in the current iterators of the
-    # weak container, such as to delay all removals until the context manager
-    # exits.
-    # This technique should be relatively thread-safe (since sets are).
-
-    def __init__(self, weakcontainer):
-        # Don't create cycles
-        self.weakcontainer = ref(weakcontainer)
-
-    def __enter__(self):
-        w = self.weakcontainer()
-        if w is not None:
-            w._iterating.add(self)
-        return self
-
-    def __exit__(self, e, t, b):
-        w = self.weakcontainer()
-        if w is not None:
-            s = w._iterating
-            s.remove(self)
-            if not s:
-                w._commit_removals()
-
-
-class WeakSet(object):
-    def __init__(self, data=None):
-        self.data = set()
-        def _remove(item, selfref=ref(self)):
-            self = selfref()
-            if self is not None:
-                if self._iterating:
-                    self._pending_removals.append(item)
-                else:
-                    self.data.discard(item)
-        self._remove = _remove
-        # A list of keys to be removed
-        self._pending_removals = []
-        self._iterating = set()
-        if data is not None:
-            self.update(data)
-
-    def _commit_removals(self):
-        l = self._pending_removals
-        discard = self.data.discard
-        while l:
-            discard(l.pop())
-
-    def __iter__(self):
-        with _IterationGuard(self):
-            for itemref in self.data:
-                item = itemref()
-                if item is not None:
-                    yield item
-
-    def __len__(self):
-        return sum(x() is not None for x in self.data)
-
-    def __contains__(self, item):
-        try:
-            wr = ref(item)
-        except TypeError:
-            return False
-        return wr in self.data
-
-    def __reduce__(self):
-        return (self.__class__, (list(self),),
-                getattr(self, '__dict__', None))
-
-    __hash__ = None
-
-    def add(self, item):
-        if self._pending_removals:
-            self._commit_removals()
-        self.data.add(ref(item, self._remove))
-
-    def clear(self):
-        if self._pending_removals:
-            self._commit_removals()
-        self.data.clear()
-
-    def copy(self):
-        return self.__class__(self)
-
-    def pop(self):
-        if self._pending_removals:
-            self._commit_removals()
-        while True:
-            try:
-                itemref = self.data.pop()
-            except KeyError:
-                raise KeyError('pop from empty WeakSet')
-            item = itemref()
-            if item is not None:
-                return item
-
-    def remove(self, item):
-        if self._pending_removals:
-            self._commit_removals()
-        self.data.remove(ref(item))
-
-    def discard(self, item):
-        if self._pending_removals:
-            self._commit_removals()
-        self.data.discard(ref(item))
-
-    def update(self, other):
-        if self._pending_removals:
-            self._commit_removals()
-        if isinstance(other, self.__class__):
-            self.data.update(other.data)
-        else:
-            for element in other:
-                self.add(element)
-
-    def __ior__(self, other):
-        self.update(other)
-        return self
-
-    # Helper functions for simple delegating methods.
-    def _apply(self, other, method):
-        if not isinstance(other, self.__class__):
-            other = self.__class__(other)
-        newdata = method(other.data)
-        newset = self.__class__()
-        newset.data = newdata
-        return newset
-
-    def difference(self, other):
-        return self._apply(other, self.data.difference)
-    __sub__ = difference
-
-    def difference_update(self, other):
-        if self._pending_removals:
-            self._commit_removals()
-        if self is other:
-            self.data.clear()
-        else:
-            self.data.difference_update(ref(item) for item in other)
-    def __isub__(self, other):
-        if self._pending_removals:
-            self._commit_removals()
-        if self is other:
-            self.data.clear()
-        else:
-            self.data.difference_update(ref(item) for item in other)
-        return self
-
-    def intersection(self, other):
-        return self._apply(other, self.data.intersection)
-    __and__ = intersection
-
-    def intersection_update(self, other):
-        if self._pending_removals:
-            self._commit_removals()
-        self.data.intersection_update(ref(item) for item in other)
-    def __iand__(self, other):
-        if self._pending_removals:
-            self._commit_removals()
-        self.data.intersection_update(ref(item) for item in other)
-        return self
-
-    def issubset(self, other):
-        return self.data.issubset(ref(item) for item in other)
-    __lt__ = issubset
-
-    def __le__(self, other):
-        return self.data <= set(ref(item) for item in other)
-
-    def issuperset(self, other):
-        return self.data.issuperset(ref(item) for item in other)
-    __gt__ = issuperset
-
-    def __ge__(self, other):
-        return self.data >= set(ref(item) for item in other)
-
-    def __eq__(self, other):
-        if not isinstance(other, self.__class__):
-            return NotImplemented
-        return self.data == set(ref(item) for item in other)
-
-    def symmetric_difference(self, other):
-        return self._apply(other, self.data.symmetric_difference)
-    __xor__ = symmetric_difference
-
-    def symmetric_difference_update(self, other):
-        if self._pending_removals:
-            self._commit_removals()
-        if self is other:
-            self.data.clear()
-        else:
-            self.data.symmetric_difference_update(ref(item) for item in other)
-    def __ixor__(self, other):
-        if self._pending_removals:
-            self._commit_removals()
-        if self is other:
-            self.data.clear()
-        else:
-            self.data.symmetric_difference_update(ref(item) for item in other)
-        return self
-
-    def union(self, other):
-        return self._apply(other, self.data.union)
-    __or__ = union
-
-    def isdisjoint(self, other):
-        return len(self.intersection(other)) == 0
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/abc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/abc.py
deleted file mode 100644
index 0e1bfec..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/abc.py
+++ /dev/null
@@ -1,185 +0,0 @@
-# Copyright 2007 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Abstract Base Classes (ABCs) according to PEP 3119."""
-
-import types
-
-from _weakrefset import WeakSet
-
-# Instance of old-style class
-class _C: pass
-_InstanceType = type(_C())
-
-
-def abstractmethod(funcobj):
-    """A decorator indicating abstract methods.
-
-    Requires that the metaclass is ABCMeta or derived from it.  A
-    class that has a metaclass derived from ABCMeta cannot be
-    instantiated unless all of its abstract methods are overridden.
-    The abstract methods can be called using any of the normal
-    'super' call mechanisms.
-
-    Usage:
-
-        class C:
-            __metaclass__ = ABCMeta
-            @abstractmethod
-            def my_abstract_method(self, ...):
-                ...
-    """
-    funcobj.__isabstractmethod__ = True
-    return funcobj
-
-
-class abstractproperty(property):
-    """A decorator indicating abstract properties.
-
-    Requires that the metaclass is ABCMeta or derived from it.  A
-    class that has a metaclass derived from ABCMeta cannot be
-    instantiated unless all of its abstract properties are overridden.
-    The abstract properties can be called using any of the normal
-    'super' call mechanisms.
-
-    Usage:
-
-        class C:
-            __metaclass__ = ABCMeta
-            @abstractproperty
-            def my_abstract_property(self):
-                ...
-
-    This defines a read-only property; you can also define a read-write
-    abstract property using the 'long' form of property declaration:
-
-        class C:
-            __metaclass__ = ABCMeta
-            def getx(self): ...
-            def setx(self, value): ...
-            x = abstractproperty(getx, setx)
-    """
-    __isabstractmethod__ = True
-
-
-class ABCMeta(type):
-
-    """Metaclass for defining Abstract Base Classes (ABCs).
-
-    Use this metaclass to create an ABC.  An ABC can be subclassed
-    directly, and then acts as a mix-in class.  You can also register
-    unrelated concrete classes (even built-in classes) and unrelated
-    ABCs as 'virtual subclasses' -- these and their descendants will
-    be considered subclasses of the registering ABC by the built-in
-    issubclass() function, but the registering ABC won't show up in
-    their MRO (Method Resolution Order) nor will method
-    implementations defined by the registering ABC be callable (not
-    even via super()).
-
-    """
-
-    # A global counter that is incremented each time a class is
-    # registered as a virtual subclass of anything.  It forces the
-    # negative cache to be cleared before its next use.
-    _abc_invalidation_counter = 0
-
-    def __new__(mcls, name, bases, namespace):
-        cls = super(ABCMeta, mcls).__new__(mcls, name, bases, namespace)
-        # Compute set of abstract method names
-        abstracts = set(name
-                     for name, value in namespace.items()
-                     if getattr(value, "__isabstractmethod__", False))
-        for base in bases:
-            for name in getattr(base, "__abstractmethods__", set()):
-                value = getattr(cls, name, None)
-                if getattr(value, "__isabstractmethod__", False):
-                    abstracts.add(name)
-        cls.__abstractmethods__ = frozenset(abstracts)
-        # Set up inheritance registry
-        cls._abc_registry = WeakSet()
-        cls._abc_cache = WeakSet()
-        cls._abc_negative_cache = WeakSet()
-        cls._abc_negative_cache_version = ABCMeta._abc_invalidation_counter
-        return cls
-
-    def register(cls, subclass):
-        """Register a virtual subclass of an ABC."""
-        if not isinstance(subclass, (type, types.ClassType)):
-            raise TypeError("Can only register classes")
-        if issubclass(subclass, cls):
-            return  # Already a subclass
-        # Subtle: test for cycles *after* testing for "already a subclass";
-        # this means we allow X.register(X) and interpret it as a no-op.
-        if issubclass(cls, subclass):
-            # This would create a cycle, which is bad for the algorithm below
-            raise RuntimeError("Refusing to create an inheritance cycle")
-        cls._abc_registry.add(subclass)
-        ABCMeta._abc_invalidation_counter += 1  # Invalidate negative cache
-
-    def _dump_registry(cls, file=None):
-        """Debug helper to print the ABC registry."""
-        print >> file, "Class: %s.%s" % (cls.__module__, cls.__name__)
-        print >> file, "Inv.counter: %s" % ABCMeta._abc_invalidation_counter
-        for name in sorted(cls.__dict__.keys()):
-            if name.startswith("_abc_"):
-                value = getattr(cls, name)
-                print >> file, "%s: %r" % (name, value)
-
-    def __instancecheck__(cls, instance):
-        """Override for isinstance(instance, cls)."""
-        # Inline the cache checking when it's simple.
-        subclass = getattr(instance, '__class__', None)
-        if subclass is not None and subclass in cls._abc_cache:
-            return True
-        subtype = type(instance)
-        # Old-style instances
-        if subtype is _InstanceType:
-            subtype = subclass
-        if subtype is subclass or subclass is None:
-            if (cls._abc_negative_cache_version ==
-                ABCMeta._abc_invalidation_counter and
-                subtype in cls._abc_negative_cache):
-                return False
-            # Fall back to the subclass check.
-            return cls.__subclasscheck__(subtype)
-        return (cls.__subclasscheck__(subclass) or
-                cls.__subclasscheck__(subtype))
-
-    def __subclasscheck__(cls, subclass):
-        """Override for issubclass(subclass, cls)."""
-        # Check cache
-        if subclass in cls._abc_cache:
-            return True
-        # Check negative cache; may have to invalidate
-        if cls._abc_negative_cache_version < ABCMeta._abc_invalidation_counter:
-            # Invalidate the negative cache
-            cls._abc_negative_cache = WeakSet()
-            cls._abc_negative_cache_version = ABCMeta._abc_invalidation_counter
-        elif subclass in cls._abc_negative_cache:
-            return False
-        # Check the subclass hook
-        ok = cls.__subclasshook__(subclass)
-        if ok is not NotImplemented:
-            assert isinstance(ok, bool)
-            if ok:
-                cls._abc_cache.add(subclass)
-            else:
-                cls._abc_negative_cache.add(subclass)
-            return ok
-        # Check if it's a direct subclass
-        if cls in getattr(subclass, '__mro__', ()):
-            cls._abc_cache.add(subclass)
-            return True
-        # Check if it's a subclass of a registered class (recursive)
-        for rcls in cls._abc_registry:
-            if issubclass(subclass, rcls):
-                cls._abc_cache.add(subclass)
-                return True
-        # Check if it's a subclass of a subclass (recursive)
-        for scls in cls.__subclasses__():
-            if issubclass(subclass, scls):
-                cls._abc_cache.add(subclass)
-                return True
-        # No dice; update negative cache
-        cls._abc_negative_cache.add(subclass)
-        return False
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/aifc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/aifc.py
deleted file mode 100644
index 44e8406..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/aifc.py
+++ /dev/null
@@ -1,957 +0,0 @@
-"""Stuff to parse AIFF-C and AIFF files.
-
-Unless explicitly stated otherwise, the description below is true
-both for AIFF-C files and AIFF files.
-
-An AIFF-C file has the following structure.
-
-  +-----------------+
-  | FORM            |
-  +-----------------+
-  | <size>          |
-  +----+------------+
-  |    | AIFC       |
-  |    +------------+
-  |    | <chunks>   |
-  |    |    .       |
-  |    |    .       |
-  |    |    .       |
-  +----+------------+
-
-An AIFF file has the string "AIFF" instead of "AIFC".
-
-A chunk consists of an identifier (4 bytes) followed by a size (4 bytes,
-big endian order), followed by the data.  The size field does not include
-the size of the 8 byte header.
-
-The following chunk types are recognized.
-
-  FVER
-      <version number of AIFF-C defining document> (AIFF-C only).
-  MARK
-      <# of markers> (2 bytes)
-      list of markers:
-          <marker ID> (2 bytes, must be > 0)
-          <position> (4 bytes)
-          <marker name> ("pstring")
-  COMM
-      <# of channels> (2 bytes)
-      <# of sound frames> (4 bytes)
-      <size of the samples> (2 bytes)
-      <sampling frequency> (10 bytes, IEEE 80-bit extended
-          floating point)
-      in AIFF-C files only:
-      <compression type> (4 bytes)
-      <human-readable version of compression type> ("pstring")
-  SSND
-      <offset> (4 bytes, not used by this program)
-      <blocksize> (4 bytes, not used by this program)
-      <sound data>
-
-A pstring consists of 1 byte length, a string of characters, and 0 or 1
-byte pad to make the total length even.
-
-Usage.
-
-Reading AIFF files:
-  f = aifc.open(file, 'r')
-where file is either the name of a file or an open file pointer.
-The open file pointer must have methods read(), seek(), and close().
-In some types of audio files, if the setpos() method is not used,
-the seek() method is not necessary.
-
-This returns an instance of a class with the following public methods:
-  getnchannels()  -- returns number of audio channels (1 for
-             mono, 2 for stereo)
-  getsampwidth()  -- returns sample width in bytes
-  getframerate()  -- returns sampling frequency
-  getnframes()    -- returns number of audio frames
-  getcomptype()   -- returns compression type ('NONE' for AIFF files)
-  getcompname()   -- returns human-readable version of
-             compression type ('not compressed' for AIFF files)
-  getparams() -- returns a tuple consisting of all of the
-             above in the above order
-  getmarkers()    -- get the list of marks in the audio file or None
-             if there are no marks
-  getmark(id) -- get mark with the specified id (raises an error
-             if the mark does not exist)
-  readframes(n)   -- returns at most n frames of audio
-  rewind()    -- rewind to the beginning of the audio stream
-  setpos(pos) -- seek to the specified position
-  tell()      -- return the current position
-  close()     -- close the instance (make it unusable)
-The position returned by tell(), the position given to setpos() and
-the position of marks are all compatible and have nothing to do with
-the actual position in the file.
-The close() method is called automatically when the class instance
-is destroyed.
-
-Writing AIFF files:
-  f = aifc.open(file, 'w')
-where file is either the name of a file or an open file pointer.
-The open file pointer must have methods write(), tell(), seek(), and
-close().
-
-This returns an instance of a class with the following public methods:
-  aiff()      -- create an AIFF file (AIFF-C default)
-  aifc()      -- create an AIFF-C file
-  setnchannels(n) -- set the number of channels
-  setsampwidth(n) -- set the sample width
-  setframerate(n) -- set the frame rate
-  setnframes(n)   -- set the number of frames
-  setcomptype(type, name)
-          -- set the compression type and the
-             human-readable compression type
-  setparams(tuple)
-          -- set all parameters at once
-  setmark(id, pos, name)
-          -- add specified mark to the list of marks
-  tell()      -- return current position in output file (useful
-             in combination with setmark())
-  writeframesraw(data)
-          -- write audio frames without pathing up the
-             file header
-  writeframes(data)
-          -- write audio frames and patch up the file header
-  close()     -- patch up the file header and close the
-             output file
-You should set the parameters before the first writeframesraw or
-writeframes.  The total number of frames does not need to be set,
-but when it is set to the correct value, the header does not have to
-be patched up.
-It is best to first set all parameters, perhaps possibly the
-compression type, and then write audio frames using writeframesraw.
-When all frames have been written, either call writeframes('') or
-close() to patch up the sizes in the header.
-Marks can be added anytime.  If there are any marks, ypu must call
-close() after all frames have been written.
-The close() method is called automatically when the class instance
-is destroyed.
-
-When a file is opened with the extension '.aiff', an AIFF file is
-written, otherwise an AIFF-C file is written.  This default can be
-changed by calling aiff() or aifc() before the first writeframes or
-writeframesraw.
-"""
-
-import struct
-import __builtin__
-
-__all__ = ["Error","open","openfp"]
-
-class Error(Exception):
-    pass
-
-_AIFC_version = 0xA2805140L     # Version 1 of AIFF-C
-
-def _read_long(file):
-    try:
-        return struct.unpack('>l', file.read(4))[0]
-    except struct.error:
-        raise EOFError
-
-def _read_ulong(file):
-    try:
-        return struct.unpack('>L', file.read(4))[0]
-    except struct.error:
-        raise EOFError
-
-def _read_short(file):
-    try:
-        return struct.unpack('>h', file.read(2))[0]
-    except struct.error:
-        raise EOFError
-
-def _read_string(file):
-    length = ord(file.read(1))
-    if length == 0:
-        data = ''
-    else:
-        data = file.read(length)
-    if length & 1 == 0:
-        dummy = file.read(1)
-    return data
-
-_HUGE_VAL = 1.79769313486231e+308 # See <limits.h>
-
-def _read_float(f): # 10 bytes
-    expon = _read_short(f) # 2 bytes
-    sign = 1
-    if expon < 0:
-        sign = -1
-        expon = expon + 0x8000
-    himant = _read_ulong(f) # 4 bytes
-    lomant = _read_ulong(f) # 4 bytes
-    if expon == himant == lomant == 0:
-        f = 0.0
-    elif expon == 0x7FFF:
-        f = _HUGE_VAL
-    else:
-        expon = expon - 16383
-        f = (himant * 0x100000000L + lomant) * pow(2.0, expon - 63)
-    return sign * f
-
-def _write_short(f, x):
-    f.write(struct.pack('>h', x))
-
-def _write_long(f, x):
-    f.write(struct.pack('>L', x))
-
-def _write_string(f, s):
-    if len(s) > 255:
-        raise ValueError("string exceeds maximum pstring length")
-    f.write(chr(len(s)))
-    f.write(s)
-    if len(s) & 1 == 0:
-        f.write(chr(0))
-
-def _write_float(f, x):
-    import math
-    if x < 0:
-        sign = 0x8000
-        x = x * -1
-    else:
-        sign = 0
-    if x == 0:
-        expon = 0
-        himant = 0
-        lomant = 0
-    else:
-        fmant, expon = math.frexp(x)
-        if expon > 16384 or fmant >= 1:     # Infinity or NaN
-            expon = sign|0x7FFF
-            himant = 0
-            lomant = 0
-        else:                   # Finite
-            expon = expon + 16382
-            if expon < 0:           # denormalized
-                fmant = math.ldexp(fmant, expon)
-                expon = 0
-            expon = expon | sign
-            fmant = math.ldexp(fmant, 32)
-            fsmant = math.floor(fmant)
-            himant = long(fsmant)
-            fmant = math.ldexp(fmant - fsmant, 32)
-            fsmant = math.floor(fmant)
-            lomant = long(fsmant)
-    _write_short(f, expon)
-    _write_long(f, himant)
-    _write_long(f, lomant)
-
-from chunk import Chunk
-
-class Aifc_read:
-    # Variables used in this class:
-    #
-    # These variables are available to the user though appropriate
-    # methods of this class:
-    # _file -- the open file with methods read(), close(), and seek()
-    #       set through the __init__() method
-    # _nchannels -- the number of audio channels
-    #       available through the getnchannels() method
-    # _nframes -- the number of audio frames
-    #       available through the getnframes() method
-    # _sampwidth -- the number of bytes per audio sample
-    #       available through the getsampwidth() method
-    # _framerate -- the sampling frequency
-    #       available through the getframerate() method
-    # _comptype -- the AIFF-C compression type ('NONE' if AIFF)
-    #       available through the getcomptype() method
-    # _compname -- the human-readable AIFF-C compression type
-    #       available through the getcomptype() method
-    # _markers -- the marks in the audio file
-    #       available through the getmarkers() and getmark()
-    #       methods
-    # _soundpos -- the position in the audio stream
-    #       available through the tell() method, set through the
-    #       setpos() method
-    #
-    # These variables are used internally only:
-    # _version -- the AIFF-C version number
-    # _decomp -- the decompressor from builtin module cl
-    # _comm_chunk_read -- 1 iff the COMM chunk has been read
-    # _aifc -- 1 iff reading an AIFF-C file
-    # _ssnd_seek_needed -- 1 iff positioned correctly in audio
-    #       file for readframes()
-    # _ssnd_chunk -- instantiation of a chunk class for the SSND chunk
-    # _framesize -- size of one frame in the file
-
-    def initfp(self, file):
-        self._version = 0
-        self._decomp = None
-        self._convert = None
-        self._markers = []
-        self._soundpos = 0
-        self._file = file
-        chunk = Chunk(file)
-        if chunk.getname() != 'FORM':
-            raise Error, 'file does not start with FORM id'
-        formdata = chunk.read(4)
-        if formdata == 'AIFF':
-            self._aifc = 0
-        elif formdata == 'AIFC':
-            self._aifc = 1
-        else:
-            raise Error, 'not an AIFF or AIFF-C file'
-        self._comm_chunk_read = 0
-        while 1:
-            self._ssnd_seek_needed = 1
-            try:
-                chunk = Chunk(self._file)
-            except EOFError:
-                break
-            chunkname = chunk.getname()
-            if chunkname == 'COMM':
-                self._read_comm_chunk(chunk)
-                self._comm_chunk_read = 1
-            elif chunkname == 'SSND':
-                self._ssnd_chunk = chunk
-                dummy = chunk.read(8)
-                self._ssnd_seek_needed = 0
-            elif chunkname == 'FVER':
-                self._version = _read_ulong(chunk)
-            elif chunkname == 'MARK':
-                self._readmark(chunk)
-            chunk.skip()
-        if not self._comm_chunk_read or not self._ssnd_chunk:
-            raise Error, 'COMM chunk and/or SSND chunk missing'
-        if self._aifc and self._decomp:
-            import cl
-            params = [cl.ORIGINAL_FORMAT, 0,
-                  cl.BITS_PER_COMPONENT, self._sampwidth * 8,
-                  cl.FRAME_RATE, self._framerate]
-            if self._nchannels == 1:
-                params[1] = cl.MONO
-            elif self._nchannels == 2:
-                params[1] = cl.STEREO_INTERLEAVED
-            else:
-                raise Error, 'cannot compress more than 2 channels'
-            self._decomp.SetParams(params)
-
-    def __init__(self, f):
-        if type(f) == type(''):
-            f = __builtin__.open(f, 'rb')
-        # else, assume it is an open file object already
-        self.initfp(f)
-
-    #
-    # User visible methods.
-    #
-    def getfp(self):
-        return self._file
-
-    def rewind(self):
-        self._ssnd_seek_needed = 1
-        self._soundpos = 0
-
-    def close(self):
-        if self._decomp:
-            self._decomp.CloseDecompressor()
-            self._decomp = None
-        self._file.close()
-
-    def tell(self):
-        return self._soundpos
-
-    def getnchannels(self):
-        return self._nchannels
-
-    def getnframes(self):
-        return self._nframes
-
-    def getsampwidth(self):
-        return self._sampwidth
-
-    def getframerate(self):
-        return self._framerate
-
-    def getcomptype(self):
-        return self._comptype
-
-    def getcompname(self):
-        return self._compname
-
-##  def getversion(self):
-##      return self._version
-
-    def getparams(self):
-        return self.getnchannels(), self.getsampwidth(), \
-              self.getframerate(), self.getnframes(), \
-              self.getcomptype(), self.getcompname()
-
-    def getmarkers(self):
-        if len(self._markers) == 0:
-            return None
-        return self._markers
-
-    def getmark(self, id):
-        for marker in self._markers:
-            if id == marker[0]:
-                return marker
-        raise Error, 'marker %r does not exist' % (id,)
-
-    def setpos(self, pos):
-        if pos < 0 or pos > self._nframes:
-            raise Error, 'position not in range'
-        self._soundpos = pos
-        self._ssnd_seek_needed = 1
-
-    def readframes(self, nframes):
-        if self._ssnd_seek_needed:
-            self._ssnd_chunk.seek(0)
-            dummy = self._ssnd_chunk.read(8)
-            pos = self._soundpos * self._framesize
-            if pos:
-                self._ssnd_chunk.seek(pos + 8)
-            self._ssnd_seek_needed = 0
-        if nframes == 0:
-            return ''
-        data = self._ssnd_chunk.read(nframes * self._framesize)
-        if self._convert and data:
-            data = self._convert(data)
-        self._soundpos = self._soundpos + len(data) // (self._nchannels * self._sampwidth)
-        return data
-
-    #
-    # Internal methods.
-    #
-
-    def _decomp_data(self, data):
-        import cl
-        dummy = self._decomp.SetParam(cl.FRAME_BUFFER_SIZE,
-                          len(data) * 2)
-        return self._decomp.Decompress(len(data) // self._nchannels,
-                           data)
-
-    def _ulaw2lin(self, data):
-        import audioop
-        return audioop.ulaw2lin(data, 2)
-
-    def _adpcm2lin(self, data):
-        import audioop
-        if not hasattr(self, '_adpcmstate'):
-            # first time
-            self._adpcmstate = None
-        data, self._adpcmstate = audioop.adpcm2lin(data, 2,
-                               self._adpcmstate)
-        return data
-
-    def _read_comm_chunk(self, chunk):
-        self._nchannels = _read_short(chunk)
-        self._nframes = _read_long(chunk)
-        self._sampwidth = (_read_short(chunk) + 7) // 8
-        self._framerate = int(_read_float(chunk))
-        self._framesize = self._nchannels * self._sampwidth
-        if self._aifc:
-            #DEBUG: SGI's soundeditor produces a bad size :-(
-            kludge = 0
-            if chunk.chunksize == 18:
-                kludge = 1
-                print 'Warning: bad COMM chunk size'
-                chunk.chunksize = 23
-            #DEBUG end
-            self._comptype = chunk.read(4)
-            #DEBUG start
-            if kludge:
-                length = ord(chunk.file.read(1))
-                if length & 1 == 0:
-                    length = length + 1
-                chunk.chunksize = chunk.chunksize + length
-                chunk.file.seek(-1, 1)
-            #DEBUG end
-            self._compname = _read_string(chunk)
-            if self._comptype != 'NONE':
-                if self._comptype == 'G722':
-                    try:
-                        import audioop
-                    except ImportError:
-                        pass
-                    else:
-                        self._convert = self._adpcm2lin
-                        self._framesize = self._framesize // 4
-                        return
-                # for ULAW and ALAW try Compression Library
-                try:
-                    import cl
-                except ImportError:
-                    if self._comptype == 'ULAW':
-                        try:
-                            import audioop
-                            self._convert = self._ulaw2lin
-                            self._framesize = self._framesize // 2
-                            return
-                        except ImportError:
-                            pass
-                    raise Error, 'cannot read compressed AIFF-C files'
-                if self._comptype == 'ULAW':
-                    scheme = cl.G711_ULAW
-                    self._framesize = self._framesize // 2
-                elif self._comptype == 'ALAW':
-                    scheme = cl.G711_ALAW
-                    self._framesize = self._framesize // 2
-                else:
-                    raise Error, 'unsupported compression type'
-                self._decomp = cl.OpenDecompressor(scheme)
-                self._convert = self._decomp_data
-        else:
-            self._comptype = 'NONE'
-            self._compname = 'not compressed'
-
-    def _readmark(self, chunk):
-        nmarkers = _read_short(chunk)
-        # Some files appear to contain invalid counts.
-        # Cope with this by testing for EOF.
-        try:
-            for i in range(nmarkers):
-                id = _read_short(chunk)
-                pos = _read_long(chunk)
-                name = _read_string(chunk)
-                if pos or name:
-                    # some files appear to have
-                    # dummy markers consisting of
-                    # a position 0 and name ''
-                    self._markers.append((id, pos, name))
-        except EOFError:
-            print 'Warning: MARK chunk contains only',
-            print len(self._markers),
-            if len(self._markers) == 1: print 'marker',
-            else: print 'markers',
-            print 'instead of', nmarkers
-
-class Aifc_write:
-    # Variables used in this class:
-    #
-    # These variables are user settable through appropriate methods
-    # of this class:
-    # _file -- the open file with methods write(), close(), tell(), seek()
-    #       set through the __init__() method
-    # _comptype -- the AIFF-C compression type ('NONE' in AIFF)
-    #       set through the setcomptype() or setparams() method
-    # _compname -- the human-readable AIFF-C compression type
-    #       set through the setcomptype() or setparams() method
-    # _nchannels -- the number of audio channels
-    #       set through the setnchannels() or setparams() method
-    # _sampwidth -- the number of bytes per audio sample
-    #       set through the setsampwidth() or setparams() method
-    # _framerate -- the sampling frequency
-    #       set through the setframerate() or setparams() method
-    # _nframes -- the number of audio frames written to the header
-    #       set through the setnframes() or setparams() method
-    # _aifc -- whether we're writing an AIFF-C file or an AIFF file
-    #       set through the aifc() method, reset through the
-    #       aiff() method
-    #
-    # These variables are used internally only:
-    # _version -- the AIFF-C version number
-    # _comp -- the compressor from builtin module cl
-    # _nframeswritten -- the number of audio frames actually written
-    # _datalength -- the size of the audio samples written to the header
-    # _datawritten -- the size of the audio samples actually written
-
-    def __init__(self, f):
-        if type(f) == type(''):
-            filename = f
-            f = __builtin__.open(f, 'wb')
-        else:
-            # else, assume it is an open file object already
-            filename = '???'
-        self.initfp(f)
-        if filename[-5:] == '.aiff':
-            self._aifc = 0
-        else:
-            self._aifc = 1
-
-    def initfp(self, file):
-        self._file = file
-        self._version = _AIFC_version
-        self._comptype = 'NONE'
-        self._compname = 'not compressed'
-        self._comp = None
-        self._convert = None
-        self._nchannels = 0
-        self._sampwidth = 0
-        self._framerate = 0
-        self._nframes = 0
-        self._nframeswritten = 0
-        self._datawritten = 0
-        self._datalength = 0
-        self._markers = []
-        self._marklength = 0
-        self._aifc = 1      # AIFF-C is default
-
-    def __del__(self):
-        if self._file:
-            self.close()
-
-    #
-    # User visible methods.
-    #
-    def aiff(self):
-        if self._nframeswritten:
-            raise Error, 'cannot change parameters after starting to write'
-        self._aifc = 0
-
-    def aifc(self):
-        if self._nframeswritten:
-            raise Error, 'cannot change parameters after starting to write'
-        self._aifc = 1
-
-    def setnchannels(self, nchannels):
-        if self._nframeswritten:
-            raise Error, 'cannot change parameters after starting to write'
-        if nchannels < 1:
-            raise Error, 'bad # of channels'
-        self._nchannels = nchannels
-
-    def getnchannels(self):
-        if not self._nchannels:
-            raise Error, 'number of channels not set'
-        return self._nchannels
-
-    def setsampwidth(self, sampwidth):
-        if self._nframeswritten:
-            raise Error, 'cannot change parameters after starting to write'
-        if sampwidth < 1 or sampwidth > 4:
-            raise Error, 'bad sample width'
-        self._sampwidth = sampwidth
-
-    def getsampwidth(self):
-        if not self._sampwidth:
-            raise Error, 'sample width not set'
-        return self._sampwidth
-
-    def setframerate(self, framerate):
-        if self._nframeswritten:
-            raise Error, 'cannot change parameters after starting to write'
-        if framerate <= 0:
-            raise Error, 'bad frame rate'
-        self._framerate = framerate
-
-    def getframerate(self):
-        if not self._framerate:
-            raise Error, 'frame rate not set'
-        return self._framerate
-
-    def setnframes(self, nframes):
-        if self._nframeswritten:
-            raise Error, 'cannot change parameters after starting to write'
-        self._nframes = nframes
-
-    def getnframes(self):
-        return self._nframeswritten
-
-    def setcomptype(self, comptype, compname):
-        if self._nframeswritten:
-            raise Error, 'cannot change parameters after starting to write'
-        if comptype not in ('NONE', 'ULAW', 'ALAW', 'G722'):
-            raise Error, 'unsupported compression type'
-        self._comptype = comptype
-        self._compname = compname
-
-    def getcomptype(self):
-        return self._comptype
-
-    def getcompname(self):
-        return self._compname
-
-##  def setversion(self, version):
-##      if self._nframeswritten:
-##          raise Error, 'cannot change parameters after starting to write'
-##      self._version = version
-
-    def setparams(self, info):
-        nchannels, sampwidth, framerate, nframes, comptype, compname = info
-        if self._nframeswritten:
-            raise Error, 'cannot change parameters after starting to write'
-        if comptype not in ('NONE', 'ULAW', 'ALAW', 'G722'):
-            raise Error, 'unsupported compression type'
-        self.setnchannels(nchannels)
-        self.setsampwidth(sampwidth)
-        self.setframerate(framerate)
-        self.setnframes(nframes)
-        self.setcomptype(comptype, compname)
-
-    def getparams(self):
-        if not self._nchannels or not self._sampwidth or not self._framerate:
-            raise Error, 'not all parameters set'
-        return self._nchannels, self._sampwidth, self._framerate, \
-              self._nframes, self._comptype, self._compname
-
-    def setmark(self, id, pos, name):
-        if id <= 0:
-            raise Error, 'marker ID must be > 0'
-        if pos < 0:
-            raise Error, 'marker position must be >= 0'
-        if type(name) != type(''):
-            raise Error, 'marker name must be a string'
-        for i in range(len(self._markers)):
-            if id == self._markers[i][0]:
-                self._markers[i] = id, pos, name
-                return
-        self._markers.append((id, pos, name))
-
-    def getmark(self, id):
-        for marker in self._markers:
-            if id == marker[0]:
-                return marker
-        raise Error, 'marker %r does not exist' % (id,)
-
-    def getmarkers(self):
-        if len(self._markers) == 0:
-            return None
-        return self._markers
-
-    def tell(self):
-        return self._nframeswritten
-
-    def writeframesraw(self, data):
-        self._ensure_header_written(len(data))
-        nframes = len(data) // (self._sampwidth * self._nchannels)
-        if self._convert:
-            data = self._convert(data)
-        self._file.write(data)
-        self._nframeswritten = self._nframeswritten + nframes
-        self._datawritten = self._datawritten + len(data)
-
-    def writeframes(self, data):
-        self.writeframesraw(data)
-        if self._nframeswritten != self._nframes or \
-              self._datalength != self._datawritten:
-            self._patchheader()
-
-    def close(self):
-        self._ensure_header_written(0)
-        if self._datawritten & 1:
-            # quick pad to even size
-            self._file.write(chr(0))
-            self._datawritten = self._datawritten + 1
-        self._writemarkers()
-        if self._nframeswritten != self._nframes or \
-              self._datalength != self._datawritten or \
-              self._marklength:
-            self._patchheader()
-        if self._comp:
-            self._comp.CloseCompressor()
-            self._comp = None
-        # Prevent ref cycles
-        self._convert = None
-        self._file.close()
-
-    #
-    # Internal methods.
-    #
-
-    def _comp_data(self, data):
-        import cl
-        dummy = self._comp.SetParam(cl.FRAME_BUFFER_SIZE, len(data))
-        dummy = self._comp.SetParam(cl.COMPRESSED_BUFFER_SIZE, len(data))
-        return self._comp.Compress(self._nframes, data)
-
-    def _lin2ulaw(self, data):
-        import audioop
-        return audioop.lin2ulaw(data, 2)
-
-    def _lin2adpcm(self, data):
-        import audioop
-        if not hasattr(self, '_adpcmstate'):
-            self._adpcmstate = None
-        data, self._adpcmstate = audioop.lin2adpcm(data, 2,
-                               self._adpcmstate)
-        return data
-
-    def _ensure_header_written(self, datasize):
-        if not self._nframeswritten:
-            if self._comptype in ('ULAW', 'ALAW'):
-                if not self._sampwidth:
-                    self._sampwidth = 2
-                if self._sampwidth != 2:
-                    raise Error, 'sample width must be 2 when compressing with ULAW or ALAW'
-            if self._comptype == 'G722':
-                if not self._sampwidth:
-                    self._sampwidth = 2
-                if self._sampwidth != 2:
-                    raise Error, 'sample width must be 2 when compressing with G7.22 (ADPCM)'
-            if not self._nchannels:
-                raise Error, '# channels not specified'
-            if not self._sampwidth:
-                raise Error, 'sample width not specified'
-            if not self._framerate:
-                raise Error, 'sampling rate not specified'
-            self._write_header(datasize)
-
-    def _init_compression(self):
-        if self._comptype == 'G722':
-            self._convert = self._lin2adpcm
-            return
-        try:
-            import cl
-        except ImportError:
-            if self._comptype == 'ULAW':
-                try:
-                    import audioop
-                    self._convert = self._lin2ulaw
-                    return
-                except ImportError:
-                    pass
-            raise Error, 'cannot write compressed AIFF-C files'
-        if self._comptype == 'ULAW':
-            scheme = cl.G711_ULAW
-        elif self._comptype == 'ALAW':
-            scheme = cl.G711_ALAW
-        else:
-            raise Error, 'unsupported compression type'
-        self._comp = cl.OpenCompressor(scheme)
-        params = [cl.ORIGINAL_FORMAT, 0,
-              cl.BITS_PER_COMPONENT, self._sampwidth * 8,
-              cl.FRAME_RATE, self._framerate,
-              cl.FRAME_BUFFER_SIZE, 100,
-              cl.COMPRESSED_BUFFER_SIZE, 100]
-        if self._nchannels == 1:
-            params[1] = cl.MONO
-        elif self._nchannels == 2:
-            params[1] = cl.STEREO_INTERLEAVED
-        else:
-            raise Error, 'cannot compress more than 2 channels'
-        self._comp.SetParams(params)
-        # the compressor produces a header which we ignore
-        dummy = self._comp.Compress(0, '')
-        self._convert = self._comp_data
-
-    def _write_header(self, initlength):
-        if self._aifc and self._comptype != 'NONE':
-            self._init_compression()
-        self._file.write('FORM')
-        if not self._nframes:
-            self._nframes = initlength // (self._nchannels * self._sampwidth)
-        self._datalength = self._nframes * self._nchannels * self._sampwidth
-        if self._datalength & 1:
-            self._datalength = self._datalength + 1
-        if self._aifc:
-            if self._comptype in ('ULAW', 'ALAW'):
-                self._datalength = self._datalength // 2
-                if self._datalength & 1:
-                    self._datalength = self._datalength + 1
-            elif self._comptype == 'G722':
-                self._datalength = (self._datalength + 3) // 4
-                if self._datalength & 1:
-                    self._datalength = self._datalength + 1
-        self._form_length_pos = self._file.tell()
-        commlength = self._write_form_length(self._datalength)
-        if self._aifc:
-            self._file.write('AIFC')
-            self._file.write('FVER')
-            _write_long(self._file, 4)
-            _write_long(self._file, self._version)
-        else:
-            self._file.write('AIFF')
-        self._file.write('COMM')
-        _write_long(self._file, commlength)
-        _write_short(self._file, self._nchannels)
-        self._nframes_pos = self._file.tell()
-        _write_long(self._file, self._nframes)
-        _write_short(self._file, self._sampwidth * 8)
-        _write_float(self._file, self._framerate)
-        if self._aifc:
-            self._file.write(self._comptype)
-            _write_string(self._file, self._compname)
-        self._file.write('SSND')
-        self._ssnd_length_pos = self._file.tell()
-        _write_long(self._file, self._datalength + 8)
-        _write_long(self._file, 0)
-        _write_long(self._file, 0)
-
-    def _write_form_length(self, datalength):
-        if self._aifc:
-            commlength = 18 + 5 + len(self._compname)
-            if commlength & 1:
-                commlength = commlength + 1
-            verslength = 12
-        else:
-            commlength = 18
-            verslength = 0
-        _write_long(self._file, 4 + verslength + self._marklength + \
-                    8 + commlength + 16 + datalength)
-        return commlength
-
-    def _patchheader(self):
-        curpos = self._file.tell()
-        if self._datawritten & 1:
-            datalength = self._datawritten + 1
-            self._file.write(chr(0))
-        else:
-            datalength = self._datawritten
-        if datalength == self._datalength and \
-              self._nframes == self._nframeswritten and \
-              self._marklength == 0:
-            self._file.seek(curpos, 0)
-            return
-        self._file.seek(self._form_length_pos, 0)
-        dummy = self._write_form_length(datalength)
-        self._file.seek(self._nframes_pos, 0)
-        _write_long(self._file, self._nframeswritten)
-        self._file.seek(self._ssnd_length_pos, 0)
-        _write_long(self._file, datalength + 8)
-        self._file.seek(curpos, 0)
-        self._nframes = self._nframeswritten
-        self._datalength = datalength
-
-    def _writemarkers(self):
-        if len(self._markers) == 0:
-            return
-        self._file.write('MARK')
-        length = 2
-        for marker in self._markers:
-            id, pos, name = marker
-            length = length + len(name) + 1 + 6
-            if len(name) & 1 == 0:
-                length = length + 1
-        _write_long(self._file, length)
-        self._marklength = length + 8
-        _write_short(self._file, len(self._markers))
-        for marker in self._markers:
-            id, pos, name = marker
-            _write_short(self._file, id)
-            _write_long(self._file, pos)
-            _write_string(self._file, name)
-
-def open(f, mode=None):
-    if mode is None:
-        if hasattr(f, 'mode'):
-            mode = f.mode
-        else:
-            mode = 'rb'
-    if mode in ('r', 'rb'):
-        return Aifc_read(f)
-    elif mode in ('w', 'wb'):
-        return Aifc_write(f)
-    else:
-        raise Error, "mode must be 'r', 'rb', 'w', or 'wb'"
-
-openfp = open # B/W compatibility
-
-if __name__ == '__main__':
-    import sys
-    if not sys.argv[1:]:
-        sys.argv.append('/usr/demos/data/audio/bach.aiff')
-    fn = sys.argv[1]
-    f = open(fn, 'r')
-    print "Reading", fn
-    print "nchannels =", f.getnchannels()
-    print "nframes   =", f.getnframes()
-    print "sampwidth =", f.getsampwidth()
-    print "framerate =", f.getframerate()
-    print "comptype  =", f.getcomptype()
-    print "compname  =", f.getcompname()
-    if sys.argv[2:]:
-        gn = sys.argv[2]
-        print "Writing", gn
-        g = open(gn, 'w')
-        g.setparams(f.getparams())
-        while 1:
-            data = f.readframes(1024)
-            if not data:
-                break
-            g.writeframes(data)
-        g.close()
-        f.close()
-        print "Done."
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/antigravity.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/antigravity.py
deleted file mode 100644
index 1225144..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/antigravity.py
+++ /dev/null
@@ -1,4 +0,0 @@
-
-import webbrowser
-
-webbrowser.open("http://xkcd.com/353/")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/anydbm.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/anydbm.py
deleted file mode 100644
index c61a782..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/anydbm.py
+++ /dev/null
@@ -1,85 +0,0 @@
-"""Generic interface to all dbm clones.
-
-Instead of
-
-        import dbm
-        d = dbm.open(file, 'w', 0666)
-
-use
-
-        import anydbm
-        d = anydbm.open(file, 'w')
-
-The returned object is a dbhash, gdbm, dbm or dumbdbm object,
-dependent on the type of database being opened (determined by whichdb
-module) in the case of an existing dbm. If the dbm does not exist and
-the create or new flag ('c' or 'n') was specified, the dbm type will
-be determined by the availability of the modules (tested in the above
-order).
-
-It has the following interface (key and data are strings):
-
-        d[key] = data   # store data at key (may override data at
-                        # existing key)
-        data = d[key]   # retrieve data at key (raise KeyError if no
-                        # such key)
-        del d[key]      # delete data stored at key (raises KeyError
-                        # if no such key)
-        flag = key in d   # true if the key exists
-        list = d.keys() # return a list of all existing keys (slow!)
-
-Future versions may change the order in which implementations are
-tested for existence, and add interfaces to other dbm-like
-implementations.
-"""
-
-class error(Exception):
-    pass
-
-_names = ['dbhash', 'gdbm', 'dbm', 'dumbdbm']
-_errors = [error]
-_defaultmod = None
-
-for _name in _names:
-    try:
-        _mod = __import__(_name)
-    except ImportError:
-        continue
-    if not _defaultmod:
-        _defaultmod = _mod
-    _errors.append(_mod.error)
-
-if not _defaultmod:
-    raise ImportError, "no dbm clone found; tried %s" % _names
-
-error = tuple(_errors)
-
-def open(file, flag='r', mode=0666):
-    """Open or create database at path given by *file*.
-
-    Optional argument *flag* can be 'r' (default) for read-only access, 'w'
-    for read-write access of an existing database, 'c' for read-write access
-    to a new or existing database, and 'n' for read-write access to a new
-    database.
-
-    Note: 'r' and 'w' fail if the database doesn't exist; 'c' creates it
-    only if it doesn't exist; and 'n' always creates a new database.
-    """
-
-    # guess the type of an existing database
-    from whichdb import whichdb
-    result=whichdb(file)
-    if result is None:
-        # db doesn't exist
-        if 'c' in flag or 'n' in flag:
-            # file doesn't exist and the new
-            # flag was used so use default type
-            mod = _defaultmod
-        else:
-            raise error, "need 'c' or 'n' flag to open new db"
-    elif result == "":
-        # db type cannot be determined
-        raise error, "db type could not be determined"
-    else:
-        mod = __import__(result)
-    return mod.open(file, flag, mode)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/argparse.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/argparse.py
deleted file mode 100644
index ef43e91..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/argparse.py
+++ /dev/null
@@ -1,2347 +0,0 @@
-# Author: Steven J. Bethard <steven.bethard@gmail.com>.
-
-"""Command-line parsing library
-
-This module is an optparse-inspired command-line parsing library that:
-
-    - handles both optional and positional arguments
-    - produces highly informative usage messages
-    - supports parsers that dispatch to sub-parsers
-
-The following is a simple usage example that sums integers from the
-command-line and writes the result to a file::
-
-    parser = argparse.ArgumentParser(
-        description='sum the integers at the command line')
-    parser.add_argument(
-        'integers', metavar='int', nargs='+', type=int,
-        help='an integer to be summed')
-    parser.add_argument(
-        '--log', default=sys.stdout, type=argparse.FileType('w'),
-        help='the file where the sum should be written')
-    args = parser.parse_args()
-    args.log.write('%s' % sum(args.integers))
-    args.log.close()
-
-The module contains the following public classes:
-
-    - ArgumentParser -- The main entry point for command-line parsing. As the
-        example above shows, the add_argument() method is used to populate
-        the parser with actions for optional and positional arguments. Then
-        the parse_args() method is invoked to convert the args at the
-        command-line into an object with attributes.
-
-    - ArgumentError -- The exception raised by ArgumentParser objects when
-        there are errors with the parser's actions. Errors raised while
-        parsing the command-line are caught by ArgumentParser and emitted
-        as command-line messages.
-
-    - FileType -- A factory for defining types of files to be created. As the
-        example above shows, instances of FileType are typically passed as
-        the type= argument of add_argument() calls.
-
-    - Action -- The base class for parser actions. Typically actions are
-        selected by passing strings like 'store_true' or 'append_const' to
-        the action= argument of add_argument(). However, for greater
-        customization of ArgumentParser actions, subclasses of Action may
-        be defined and passed as the action= argument.
-
-    - HelpFormatter, RawDescriptionHelpFormatter, RawTextHelpFormatter,
-        ArgumentDefaultsHelpFormatter -- Formatter classes which
-        may be passed as the formatter_class= argument to the
-        ArgumentParser constructor. HelpFormatter is the default,
-        RawDescriptionHelpFormatter and RawTextHelpFormatter tell the parser
-        not to change the formatting for help text, and
-        ArgumentDefaultsHelpFormatter adds information about argument defaults
-        to the help.
-
-All other classes in this module are considered implementation details.
-(Also note that HelpFormatter and RawDescriptionHelpFormatter are only
-considered public as object names -- the API of the formatter objects is
-still considered an implementation detail.)
-"""
-
-__version__ = '1.1'
-__all__ = [
-    'ArgumentParser',
-    'ArgumentError',
-    'ArgumentTypeError',
-    'FileType',
-    'HelpFormatter',
-    'ArgumentDefaultsHelpFormatter',
-    'RawDescriptionHelpFormatter',
-    'RawTextHelpFormatter',
-    'Namespace',
-    'Action',
-    'ONE_OR_MORE',
-    'OPTIONAL',
-    'PARSER',
-    'REMAINDER',
-    'SUPPRESS',
-    'ZERO_OR_MORE',
-]
-
-
-import collections as _collections
-import copy as _copy
-import os as _os
-import re as _re
-import sys as _sys
-import textwrap as _textwrap
-
-from gettext import gettext as _
-
-
-def _callable(obj):
-    return hasattr(obj, '__call__') or hasattr(obj, '__bases__')
-
-
-SUPPRESS = '==SUPPRESS=='
-
-OPTIONAL = '?'
-ZERO_OR_MORE = '*'
-ONE_OR_MORE = '+'
-PARSER = 'A...'
-REMAINDER = '...'
-_UNRECOGNIZED_ARGS_ATTR = '_unrecognized_args'
-
-# =============================
-# Utility functions and classes
-# =============================
-
-class _AttributeHolder(object):
-    """Abstract base class that provides __repr__.
-
-    The __repr__ method returns a string in the format::
-        ClassName(attr=name, attr=name, ...)
-    The attributes are determined either by a class-level attribute,
-    '_kwarg_names', or by inspecting the instance __dict__.
-    """
-
-    def __repr__(self):
-        type_name = type(self).__name__
-        arg_strings = []
-        for arg in self._get_args():
-            arg_strings.append(repr(arg))
-        for name, value in self._get_kwargs():
-            arg_strings.append('%s=%r' % (name, value))
-        return '%s(%s)' % (type_name, ', '.join(arg_strings))
-
-    def _get_kwargs(self):
-        return sorted(self.__dict__.items())
-
-    def _get_args(self):
-        return []
-
-
-def _ensure_value(namespace, name, value):
-    if getattr(namespace, name, None) is None:
-        setattr(namespace, name, value)
-    return getattr(namespace, name)
-
-
-# ===============
-# Formatting Help
-# ===============
-
-class HelpFormatter(object):
-    """Formatter for generating usage messages and argument help strings.
-
-    Only the name of this class is considered a public API. All the methods
-    provided by the class are considered an implementation detail.
-    """
-
-    def __init__(self,
-                 prog,
-                 indent_increment=2,
-                 max_help_position=24,
-                 width=None):
-
-        # default setting for width
-        if width is None:
-            try:
-                width = int(_os.environ['COLUMNS'])
-            except (KeyError, ValueError):
-                width = 80
-            width -= 2
-
-        self._prog = prog
-        self._indent_increment = indent_increment
-        self._max_help_position = max_help_position
-        self._width = width
-
-        self._current_indent = 0
-        self._level = 0
-        self._action_max_length = 0
-
-        self._root_section = self._Section(self, None)
-        self._current_section = self._root_section
-
-        self._whitespace_matcher = _re.compile(r'\s+')
-        self._long_break_matcher = _re.compile(r'\n\n\n+')
-
-    # ===============================
-    # Section and indentation methods
-    # ===============================
-    def _indent(self):
-        self._current_indent += self._indent_increment
-        self._level += 1
-
-    def _dedent(self):
-        self._current_indent -= self._indent_increment
-        assert self._current_indent >= 0, 'Indent decreased below 0.'
-        self._level -= 1
-
-    class _Section(object):
-
-        def __init__(self, formatter, parent, heading=None):
-            self.formatter = formatter
-            self.parent = parent
-            self.heading = heading
-            self.items = []
-
-        def format_help(self):
-            # format the indented section
-            if self.parent is not None:
-                self.formatter._indent()
-            join = self.formatter._join_parts
-            for func, args in self.items:
-                func(*args)
-            item_help = join([func(*args) for func, args in self.items])
-            if self.parent is not None:
-                self.formatter._dedent()
-
-            # return nothing if the section was empty
-            if not item_help:
-                return ''
-
-            # add the heading if the section was non-empty
-            if self.heading is not SUPPRESS and self.heading is not None:
-                current_indent = self.formatter._current_indent
-                heading = '%*s%s:\n' % (current_indent, '', self.heading)
-            else:
-                heading = ''
-
-            # join the section-initial newline, the heading and the help
-            return join(['\n', heading, item_help, '\n'])
-
-    def _add_item(self, func, args):
-        self._current_section.items.append((func, args))
-
-    # ========================
-    # Message building methods
-    # ========================
-    def start_section(self, heading):
-        self._indent()
-        section = self._Section(self, self._current_section, heading)
-        self._add_item(section.format_help, [])
-        self._current_section = section
-
-    def end_section(self):
-        self._current_section = self._current_section.parent
-        self._dedent()
-
-    def add_text(self, text):
-        if text is not SUPPRESS and text is not None:
-            self._add_item(self._format_text, [text])
-
-    def add_usage(self, usage, actions, groups, prefix=None):
-        if usage is not SUPPRESS:
-            args = usage, actions, groups, prefix
-            self._add_item(self._format_usage, args)
-
-    def add_argument(self, action):
-        if action.help is not SUPPRESS:
-
-            # find all invocations
-            get_invocation = self._format_action_invocation
-            invocations = [get_invocation(action)]
-            for subaction in self._iter_indented_subactions(action):
-                invocations.append(get_invocation(subaction))
-
-            # update the maximum item length
-            invocation_length = max([len(s) for s in invocations])
-            action_length = invocation_length + self._current_indent
-            self._action_max_length = max(self._action_max_length,
-                                          action_length)
-
-            # add the item to the list
-            self._add_item(self._format_action, [action])
-
-    def add_arguments(self, actions):
-        for action in actions:
-            self.add_argument(action)
-
-    # =======================
-    # Help-formatting methods
-    # =======================
-    def format_help(self):
-        help = self._root_section.format_help()
-        if help:
-            help = self._long_break_matcher.sub('\n\n', help)
-            help = help.strip('\n') + '\n'
-        return help
-
-    def _join_parts(self, part_strings):
-        return ''.join([part
-                        for part in part_strings
-                        if part and part is not SUPPRESS])
-
-    def _format_usage(self, usage, actions, groups, prefix):
-        if prefix is None:
-            prefix = _('usage: ')
-
-        # if usage is specified, use that
-        if usage is not None:
-            usage = usage % dict(prog=self._prog)
-
-        # if no optionals or positionals are available, usage is just prog
-        elif usage is None and not actions:
-            usage = '%(prog)s' % dict(prog=self._prog)
-
-        # if optionals and positionals are available, calculate usage
-        elif usage is None:
-            prog = '%(prog)s' % dict(prog=self._prog)
-
-            # split optionals from positionals
-            optionals = []
-            positionals = []
-            for action in actions:
-                if action.option_strings:
-                    optionals.append(action)
-                else:
-                    positionals.append(action)
-
-            # build full usage string
-            format = self._format_actions_usage
-            action_usage = format(optionals + positionals, groups)
-            usage = ' '.join([s for s in [prog, action_usage] if s])
-
-            # wrap the usage parts if it's too long
-            text_width = self._width - self._current_indent
-            if len(prefix) + len(usage) > text_width:
-
-                # break usage into wrappable parts
-                part_regexp = r'\(.*?\)+|\[.*?\]+|\S+'
-                opt_usage = format(optionals, groups)
-                pos_usage = format(positionals, groups)
-                opt_parts = _re.findall(part_regexp, opt_usage)
-                pos_parts = _re.findall(part_regexp, pos_usage)
-                assert ' '.join(opt_parts) == opt_usage
-                assert ' '.join(pos_parts) == pos_usage
-
-                # helper for wrapping lines
-                def get_lines(parts, indent, prefix=None):
-                    lines = []
-                    line = []
-                    if prefix is not None:
-                        line_len = len(prefix) - 1
-                    else:
-                        line_len = len(indent) - 1
-                    for part in parts:
-                        if line_len + 1 + len(part) > text_width:
-                            lines.append(indent + ' '.join(line))
-                            line = []
-                            line_len = len(indent) - 1
-                        line.append(part)
-                        line_len += len(part) + 1
-                    if line:
-                        lines.append(indent + ' '.join(line))
-                    if prefix is not None:
-                        lines[0] = lines[0][len(indent):]
-                    return lines
-
-                # if prog is short, follow it with optionals or positionals
-                if len(prefix) + len(prog) <= 0.75 * text_width:
-                    indent = ' ' * (len(prefix) + len(prog) + 1)
-                    if opt_parts:
-                        lines = get_lines([prog] + opt_parts, indent, prefix)
-                        lines.extend(get_lines(pos_parts, indent))
-                    elif pos_parts:
-                        lines = get_lines([prog] + pos_parts, indent, prefix)
-                    else:
-                        lines = [prog]
-
-                # if prog is long, put it on its own line
-                else:
-                    indent = ' ' * len(prefix)
-                    parts = opt_parts + pos_parts
-                    lines = get_lines(parts, indent)
-                    if len(lines) > 1:
-                        lines = []
-                        lines.extend(get_lines(opt_parts, indent))
-                        lines.extend(get_lines(pos_parts, indent))
-                    lines = [prog] + lines
-
-                # join lines into usage
-                usage = '\n'.join(lines)
-
-        # prefix with 'usage:'
-        return '%s%s\n\n' % (prefix, usage)
-
-    def _format_actions_usage(self, actions, groups):
-        # find group indices and identify actions in groups
-        group_actions = set()
-        inserts = {}
-        for group in groups:
-            try:
-                start = actions.index(group._group_actions[0])
-            except ValueError:
-                continue
-            else:
-                end = start + len(group._group_actions)
-                if actions[start:end] == group._group_actions:
-                    for action in group._group_actions:
-                        group_actions.add(action)
-                    if not group.required:
-                        if start in inserts:
-                            inserts[start] += ' ['
-                        else:
-                            inserts[start] = '['
-                        inserts[end] = ']'
-                    else:
-                        if start in inserts:
-                            inserts[start] += ' ('
-                        else:
-                            inserts[start] = '('
-                        inserts[end] = ')'
-                    for i in range(start + 1, end):
-                        inserts[i] = '|'
-
-        # collect all actions format strings
-        parts = []
-        for i, action in enumerate(actions):
-
-            # suppressed arguments are marked with None
-            # remove | separators for suppressed arguments
-            if action.help is SUPPRESS:
-                parts.append(None)
-                if inserts.get(i) == '|':
-                    inserts.pop(i)
-                elif inserts.get(i + 1) == '|':
-                    inserts.pop(i + 1)
-
-            # produce all arg strings
-            elif not action.option_strings:
-                part = self._format_args(action, action.dest)
-
-                # if it's in a group, strip the outer []
-                if action in group_actions:
-                    if part[0] == '[' and part[-1] == ']':
-                        part = part[1:-1]
-
-                # add the action string to the list
-                parts.append(part)
-
-            # produce the first way to invoke the option in brackets
-            else:
-                option_string = action.option_strings[0]
-
-                # if the Optional doesn't take a value, format is:
-                #    -s or --long
-                if action.nargs == 0:
-                    part = '%s' % option_string
-
-                # if the Optional takes a value, format is:
-                #    -s ARGS or --long ARGS
-                else:
-                    default = action.dest.upper()
-                    args_string = self._format_args(action, default)
-                    part = '%s %s' % (option_string, args_string)
-
-                # make it look optional if it's not required or in a group
-                if not action.required and action not in group_actions:
-                    part = '[%s]' % part
-
-                # add the action string to the list
-                parts.append(part)
-
-        # insert things at the necessary indices
-        for i in sorted(inserts, reverse=True):
-            parts[i:i] = [inserts[i]]
-
-        # join all the action items with spaces
-        text = ' '.join([item for item in parts if item is not None])
-
-        # clean up separators for mutually exclusive groups
-        open = r'[\[(]'
-        close = r'[\])]'
-        text = _re.sub(r'(%s) ' % open, r'\1', text)
-        text = _re.sub(r' (%s)' % close, r'\1', text)
-        text = _re.sub(r'%s *%s' % (open, close), r'', text)
-        text = _re.sub(r'\(([^|]*)\)', r'\1', text)
-        text = text.strip()
-
-        # return the text
-        return text
-
-    def _format_text(self, text):
-        if '%(prog)' in text:
-            text = text % dict(prog=self._prog)
-        text_width = self._width - self._current_indent
-        indent = ' ' * self._current_indent
-        return self._fill_text(text, text_width, indent) + '\n\n'
-
-    def _format_action(self, action):
-        # determine the required width and the entry label
-        help_position = min(self._action_max_length + 2,
-                            self._max_help_position)
-        help_width = self._width - help_position
-        action_width = help_position - self._current_indent - 2
-        action_header = self._format_action_invocation(action)
-
-        # ho nelp; start on same line and add a final newline
-        if not action.help:
-            tup = self._current_indent, '', action_header
-            action_header = '%*s%s\n' % tup
-
-        # short action name; start on the same line and pad two spaces
-        elif len(action_header) <= action_width:
-            tup = self._current_indent, '', action_width, action_header
-            action_header = '%*s%-*s  ' % tup
-            indent_first = 0
-
-        # long action name; start on the next line
-        else:
-            tup = self._current_indent, '', action_header
-            action_header = '%*s%s\n' % tup
-            indent_first = help_position
-
-        # collect the pieces of the action help
-        parts = [action_header]
-
-        # if there was help for the action, add lines of help text
-        if action.help:
-            help_text = self._expand_help(action)
-            help_lines = self._split_lines(help_text, help_width)
-            parts.append('%*s%s\n' % (indent_first, '', help_lines[0]))
-            for line in help_lines[1:]:
-                parts.append('%*s%s\n' % (help_position, '', line))
-
-        # or add a newline if the description doesn't end with one
-        elif not action_header.endswith('\n'):
-            parts.append('\n')
-
-        # if there are any sub-actions, add their help as well
-        for subaction in self._iter_indented_subactions(action):
-            parts.append(self._format_action(subaction))
-
-        # return a single string
-        return self._join_parts(parts)
-
-    def _format_action_invocation(self, action):
-        if not action.option_strings:
-            metavar, = self._metavar_formatter(action, action.dest)(1)
-            return metavar
-
-        else:
-            parts = []
-
-            # if the Optional doesn't take a value, format is:
-            #    -s, --long
-            if action.nargs == 0:
-                parts.extend(action.option_strings)
-
-            # if the Optional takes a value, format is:
-            #    -s ARGS, --long ARGS
-            else:
-                default = action.dest.upper()
-                args_string = self._format_args(action, default)
-                for option_string in action.option_strings:
-                    parts.append('%s %s' % (option_string, args_string))
-
-            return ', '.join(parts)
-
-    def _metavar_formatter(self, action, default_metavar):
-        if action.metavar is not None:
-            result = action.metavar
-        elif action.choices is not None:
-            choice_strs = [str(choice) for choice in action.choices]
-            result = '{%s}' % ','.join(choice_strs)
-        else:
-            result = default_metavar
-
-        def format(tuple_size):
-            if isinstance(result, tuple):
-                return result
-            else:
-                return (result, ) * tuple_size
-        return format
-
-    def _format_args(self, action, default_metavar):
-        get_metavar = self._metavar_formatter(action, default_metavar)
-        if action.nargs is None:
-            result = '%s' % get_metavar(1)
-        elif action.nargs == OPTIONAL:
-            result = '[%s]' % get_metavar(1)
-        elif action.nargs == ZERO_OR_MORE:
-            result = '[%s [%s ...]]' % get_metavar(2)
-        elif action.nargs == ONE_OR_MORE:
-            result = '%s [%s ...]' % get_metavar(2)
-        elif action.nargs == REMAINDER:
-            result = '...'
-        elif action.nargs == PARSER:
-            result = '%s ...' % get_metavar(1)
-        else:
-            formats = ['%s' for _ in range(action.nargs)]
-            result = ' '.join(formats) % get_metavar(action.nargs)
-        return result
-
-    def _expand_help(self, action):
-        params = dict(vars(action), prog=self._prog)
-        for name in list(params):
-            if params[name] is SUPPRESS:
-                del params[name]
-        for name in list(params):
-            if hasattr(params[name], '__name__'):
-                params[name] = params[name].__name__
-        if params.get('choices') is not None:
-            choices_str = ', '.join([str(c) for c in params['choices']])
-            params['choices'] = choices_str
-        return self._get_help_string(action) % params
-
-    def _iter_indented_subactions(self, action):
-        try:
-            get_subactions = action._get_subactions
-        except AttributeError:
-            pass
-        else:
-            self._indent()
-            for subaction in get_subactions():
-                yield subaction
-            self._dedent()
-
-    def _split_lines(self, text, width):
-        text = self._whitespace_matcher.sub(' ', text).strip()
-        return _textwrap.wrap(text, width)
-
-    def _fill_text(self, text, width, indent):
-        text = self._whitespace_matcher.sub(' ', text).strip()
-        return _textwrap.fill(text, width, initial_indent=indent,
-                                           subsequent_indent=indent)
-
-    def _get_help_string(self, action):
-        return action.help
-
-
-class RawDescriptionHelpFormatter(HelpFormatter):
-    """Help message formatter which retains any formatting in descriptions.
-
-    Only the name of this class is considered a public API. All the methods
-    provided by the class are considered an implementation detail.
-    """
-
-    def _fill_text(self, text, width, indent):
-        return ''.join([indent + line for line in text.splitlines(True)])
-
-
-class RawTextHelpFormatter(RawDescriptionHelpFormatter):
-    """Help message formatter which retains formatting of all help text.
-
-    Only the name of this class is considered a public API. All the methods
-    provided by the class are considered an implementation detail.
-    """
-
-    def _split_lines(self, text, width):
-        return text.splitlines()
-
-
-class ArgumentDefaultsHelpFormatter(HelpFormatter):
-    """Help message formatter which adds default values to argument help.
-
-    Only the name of this class is considered a public API. All the methods
-    provided by the class are considered an implementation detail.
-    """
-
-    def _get_help_string(self, action):
-        help = action.help
-        if '%(default)' not in action.help:
-            if action.default is not SUPPRESS:
-                defaulting_nargs = [OPTIONAL, ZERO_OR_MORE]
-                if action.option_strings or action.nargs in defaulting_nargs:
-                    help += ' (default: %(default)s)'
-        return help
-
-
-# =====================
-# Options and Arguments
-# =====================
-
-def _get_action_name(argument):
-    if argument is None:
-        return None
-    elif argument.option_strings:
-        return  '/'.join(argument.option_strings)
-    elif argument.metavar not in (None, SUPPRESS):
-        return argument.metavar
-    elif argument.dest not in (None, SUPPRESS):
-        return argument.dest
-    else:
-        return None
-
-
-class ArgumentError(Exception):
-    """An error from creating or using an argument (optional or positional).
-
-    The string value of this exception is the message, augmented with
-    information about the argument that caused it.
-    """
-
-    def __init__(self, argument, message):
-        self.argument_name = _get_action_name(argument)
-        self.message = message
-
-    def __str__(self):
-        if self.argument_name is None:
-            format = '%(message)s'
-        else:
-            format = 'argument %(argument_name)s: %(message)s'
-        return format % dict(message=self.message,
-                             argument_name=self.argument_name)
-
-
-class ArgumentTypeError(Exception):
-    """An error from trying to convert a command line string to a type."""
-    pass
-
-
-# ==============
-# Action classes
-# ==============
-
-class Action(_AttributeHolder):
-    """Information about how to convert command line strings to Python objects.
-
-    Action objects are used by an ArgumentParser to represent the information
-    needed to parse a single argument from one or more strings from the
-    command line. The keyword arguments to the Action constructor are also
-    all attributes of Action instances.
-
-    Keyword Arguments:
-
-        - option_strings -- A list of command-line option strings which
-            should be associated with this action.
-
-        - dest -- The name of the attribute to hold the created object(s)
-
-        - nargs -- The number of command-line arguments that should be
-            consumed. By default, one argument will be consumed and a single
-            value will be produced.  Other values include:
-                - N (an integer) consumes N arguments (and produces a list)
-                - '?' consumes zero or one arguments
-                - '*' consumes zero or more arguments (and produces a list)
-                - '+' consumes one or more arguments (and produces a list)
-            Note that the difference between the default and nargs=1 is that
-            with the default, a single value will be produced, while with
-            nargs=1, a list containing a single value will be produced.
-
-        - const -- The value to be produced if the option is specified and the
-            option uses an action that takes no values.
-
-        - default -- The value to be produced if the option is not specified.
-
-        - type -- The type which the command-line arguments should be converted
-            to, should be one of 'string', 'int', 'float', 'complex' or a
-            callable object that accepts a single string argument. If None,
-            'string' is assumed.
-
-        - choices -- A container of values that should be allowed. If not None,
-            after a command-line argument has been converted to the appropriate
-            type, an exception will be raised if it is not a member of this
-            collection.
-
-        - required -- True if the action must always be specified at the
-            command line. This is only meaningful for optional command-line
-            arguments.
-
-        - help -- The help string describing the argument.
-
-        - metavar -- The name to be used for the option's argument with the
-            help string. If None, the 'dest' value will be used as the name.
-    """
-
-    def __init__(self,
-                 option_strings,
-                 dest,
-                 nargs=None,
-                 const=None,
-                 default=None,
-                 type=None,
-                 choices=None,
-                 required=False,
-                 help=None,
-                 metavar=None):
-        self.option_strings = option_strings
-        self.dest = dest
-        self.nargs = nargs
-        self.const = const
-        self.default = default
-        self.type = type
-        self.choices = choices
-        self.required = required
-        self.help = help
-        self.metavar = metavar
-
-    def _get_kwargs(self):
-        names = [
-            'option_strings',
-            'dest',
-            'nargs',
-            'const',
-            'default',
-            'type',
-            'choices',
-            'help',
-            'metavar',
-        ]
-        return [(name, getattr(self, name)) for name in names]
-
-    def __call__(self, parser, namespace, values, option_string=None):
-        raise NotImplementedError(_('.__call__() not defined'))
-
-
-class _StoreAction(Action):
-
-    def __init__(self,
-                 option_strings,
-                 dest,
-                 nargs=None,
-                 const=None,
-                 default=None,
-                 type=None,
-                 choices=None,
-                 required=False,
-                 help=None,
-                 metavar=None):
-        if nargs == 0:
-            raise ValueError('nargs for store actions must be > 0; if you '
-                             'have nothing to store, actions such as store '
-                             'true or store const may be more appropriate')
-        if const is not None and nargs != OPTIONAL:
-            raise ValueError('nargs must be %r to supply const' % OPTIONAL)
-        super(_StoreAction, self).__init__(
-            option_strings=option_strings,
-            dest=dest,
-            nargs=nargs,
-            const=const,
-            default=default,
-            type=type,
-            choices=choices,
-            required=required,
-            help=help,
-            metavar=metavar)
-
-    def __call__(self, parser, namespace, values, option_string=None):
-        setattr(namespace, self.dest, values)
-
-
-class _StoreConstAction(Action):
-
-    def __init__(self,
-                 option_strings,
-                 dest,
-                 const,
-                 default=None,
-                 required=False,
-                 help=None,
-                 metavar=None):
-        super(_StoreConstAction, self).__init__(
-            option_strings=option_strings,
-            dest=dest,
-            nargs=0,
-            const=const,
-            default=default,
-            required=required,
-            help=help)
-
-    def __call__(self, parser, namespace, values, option_string=None):
-        setattr(namespace, self.dest, self.const)
-
-
-class _StoreTrueAction(_StoreConstAction):
-
-    def __init__(self,
-                 option_strings,
-                 dest,
-                 default=False,
-                 required=False,
-                 help=None):
-        super(_StoreTrueAction, self).__init__(
-            option_strings=option_strings,
-            dest=dest,
-            const=True,
-            default=default,
-            required=required,
-            help=help)
-
-
-class _StoreFalseAction(_StoreConstAction):
-
-    def __init__(self,
-                 option_strings,
-                 dest,
-                 default=True,
-                 required=False,
-                 help=None):
-        super(_StoreFalseAction, self).__init__(
-            option_strings=option_strings,
-            dest=dest,
-            const=False,
-            default=default,
-            required=required,
-            help=help)
-
-
-class _AppendAction(Action):
-
-    def __init__(self,
-                 option_strings,
-                 dest,
-                 nargs=None,
-                 const=None,
-                 default=None,
-                 type=None,
-                 choices=None,
-                 required=False,
-                 help=None,
-                 metavar=None):
-        if nargs == 0:
-            raise ValueError('nargs for append actions must be > 0; if arg '
-                             'strings are not supplying the value to append, '
-                             'the append const action may be more appropriate')
-        if const is not None and nargs != OPTIONAL:
-            raise ValueError('nargs must be %r to supply const' % OPTIONAL)
-        super(_AppendAction, self).__init__(
-            option_strings=option_strings,
-            dest=dest,
-            nargs=nargs,
-            const=const,
-            default=default,
-            type=type,
-            choices=choices,
-            required=required,
-            help=help,
-            metavar=metavar)
-
-    def __call__(self, parser, namespace, values, option_string=None):
-        items = _copy.copy(_ensure_value(namespace, self.dest, []))
-        items.append(values)
-        setattr(namespace, self.dest, items)
-
-
-class _AppendConstAction(Action):
-
-    def __init__(self,
-                 option_strings,
-                 dest,
-                 const,
-                 default=None,
-                 required=False,
-                 help=None,
-                 metavar=None):
-        super(_AppendConstAction, self).__init__(
-            option_strings=option_strings,
-            dest=dest,
-            nargs=0,
-            const=const,
-            default=default,
-            required=required,
-            help=help,
-            metavar=metavar)
-
-    def __call__(self, parser, namespace, values, option_string=None):
-        items = _copy.copy(_ensure_value(namespace, self.dest, []))
-        items.append(self.const)
-        setattr(namespace, self.dest, items)
-
-
-class _CountAction(Action):
-
-    def __init__(self,
-                 option_strings,
-                 dest,
-                 default=None,
-                 required=False,
-                 help=None):
-        super(_CountAction, self).__init__(
-            option_strings=option_strings,
-            dest=dest,
-            nargs=0,
-            default=default,
-            required=required,
-            help=help)
-
-    def __call__(self, parser, namespace, values, option_string=None):
-        new_count = _ensure_value(namespace, self.dest, 0) + 1
-        setattr(namespace, self.dest, new_count)
-
-
-class _HelpAction(Action):
-
-    def __init__(self,
-                 option_strings,
-                 dest=SUPPRESS,
-                 default=SUPPRESS,
-                 help=None):
-        super(_HelpAction, self).__init__(
-            option_strings=option_strings,
-            dest=dest,
-            default=default,
-            nargs=0,
-            help=help)
-
-    def __call__(self, parser, namespace, values, option_string=None):
-        parser.print_help()
-        parser.exit()
-
-
-class _VersionAction(Action):
-
-    def __init__(self,
-                 option_strings,
-                 version=None,
-                 dest=SUPPRESS,
-                 default=SUPPRESS,
-                 help="show program's version number and exit"):
-        super(_VersionAction, self).__init__(
-            option_strings=option_strings,
-            dest=dest,
-            default=default,
-            nargs=0,
-            help=help)
-        self.version = version
-
-    def __call__(self, parser, namespace, values, option_string=None):
-        version = self.version
-        if version is None:
-            version = parser.version
-        formatter = parser._get_formatter()
-        formatter.add_text(version)
-        parser.exit(message=formatter.format_help())
-
-
-class _SubParsersAction(Action):
-
-    class _ChoicesPseudoAction(Action):
-
-        def __init__(self, name, help):
-            sup = super(_SubParsersAction._ChoicesPseudoAction, self)
-            sup.__init__(option_strings=[], dest=name, help=help)
-
-    def __init__(self,
-                 option_strings,
-                 prog,
-                 parser_class,
-                 dest=SUPPRESS,
-                 help=None,
-                 metavar=None):
-
-        self._prog_prefix = prog
-        self._parser_class = parser_class
-        self._name_parser_map = _collections.OrderedDict()
-        self._choices_actions = []
-
-        super(_SubParsersAction, self).__init__(
-            option_strings=option_strings,
-            dest=dest,
-            nargs=PARSER,
-            choices=self._name_parser_map,
-            help=help,
-            metavar=metavar)
-
-    def add_parser(self, name, **kwargs):
-        # set prog from the existing prefix
-        if kwargs.get('prog') is None:
-            kwargs['prog'] = '%s %s' % (self._prog_prefix, name)
-
-        # create a pseudo-action to hold the choice help
-        if 'help' in kwargs:
-            help = kwargs.pop('help')
-            choice_action = self._ChoicesPseudoAction(name, help)
-            self._choices_actions.append(choice_action)
-
-        # create the parser and add it to the map
-        parser = self._parser_class(**kwargs)
-        self._name_parser_map[name] = parser
-        return parser
-
-    def _get_subactions(self):
-        return self._choices_actions
-
-    def __call__(self, parser, namespace, values, option_string=None):
-        parser_name = values[0]
-        arg_strings = values[1:]
-
-        # set the parser name if requested
-        if self.dest is not SUPPRESS:
-            setattr(namespace, self.dest, parser_name)
-
-        # select the parser
-        try:
-            parser = self._name_parser_map[parser_name]
-        except KeyError:
-            tup = parser_name, ', '.join(self._name_parser_map)
-            msg = _('unknown parser %r (choices: %s)') % tup
-            raise ArgumentError(self, msg)
-
-        # parse all the remaining options into the namespace
-        # store any unrecognized options on the object, so that the top
-        # level parser can decide what to do with them
-        namespace, arg_strings = parser.parse_known_args(arg_strings, namespace)
-        if arg_strings:
-            vars(namespace).setdefault(_UNRECOGNIZED_ARGS_ATTR, [])
-            getattr(namespace, _UNRECOGNIZED_ARGS_ATTR).extend(arg_strings)
-
-
-# ==============
-# Type classes
-# ==============
-
-class FileType(object):
-    """Factory for creating file object types
-
-    Instances of FileType are typically passed as type= arguments to the
-    ArgumentParser add_argument() method.
-
-    Keyword Arguments:
-        - mode -- A string indicating how the file is to be opened. Accepts the
-            same values as the builtin open() function.
-        - bufsize -- The file's desired buffer size. Accepts the same values as
-            the builtin open() function.
-    """
-
-    def __init__(self, mode='r', bufsize=-1):
-        self._mode = mode
-        self._bufsize = bufsize
-
-    def __call__(self, string):
-        # the special argument "-" means sys.std{in,out}
-        if string == '-':
-            if 'r' in self._mode:
-                return _sys.stdin
-            elif 'w' in self._mode:
-                return _sys.stdout
-            else:
-                msg = _('argument "-" with mode %r') % self._mode
-                raise ValueError(msg)
-
-        # all other arguments are used as file names
-        try:
-            return open(string, self._mode, self._bufsize)
-        except IOError as e:
-            message = _("can't open '%s': %s")
-            raise ArgumentTypeError(message % (string, e))
-
-    def __repr__(self):
-        args = self._mode, self._bufsize
-        args_str = ', '.join(repr(arg) for arg in args if arg != -1)
-        return '%s(%s)' % (type(self).__name__, args_str)
-
-# ===========================
-# Optional and Positional Parsing
-# ===========================
-
-class Namespace(_AttributeHolder):
-    """Simple object for storing attributes.
-
-    Implements equality by attribute names and values, and provides a simple
-    string representation.
-    """
-
-    def __init__(self, **kwargs):
-        for name in kwargs:
-            setattr(self, name, kwargs[name])
-
-    __hash__ = None
-
-    def __eq__(self, other):
-        return vars(self) == vars(other)
-
-    def __ne__(self, other):
-        return not (self == other)
-
-    def __contains__(self, key):
-        return key in self.__dict__
-
-
-class _ActionsContainer(object):
-
-    def __init__(self,
-                 description,
-                 prefix_chars,
-                 argument_default,
-                 conflict_handler):
-        super(_ActionsContainer, self).__init__()
-
-        self.description = description
-        self.argument_default = argument_default
-        self.prefix_chars = prefix_chars
-        self.conflict_handler = conflict_handler
-
-        # set up registries
-        self._registries = {}
-
-        # register actions
-        self.register('action', None, _StoreAction)
-        self.register('action', 'store', _StoreAction)
-        self.register('action', 'store_const', _StoreConstAction)
-        self.register('action', 'store_true', _StoreTrueAction)
-        self.register('action', 'store_false', _StoreFalseAction)
-        self.register('action', 'append', _AppendAction)
-        self.register('action', 'append_const', _AppendConstAction)
-        self.register('action', 'count', _CountAction)
-        self.register('action', 'help', _HelpAction)
-        self.register('action', 'version', _VersionAction)
-        self.register('action', 'parsers', _SubParsersAction)
-
-        # raise an exception if the conflict handler is invalid
-        self._get_handler()
-
-        # action storage
-        self._actions = []
-        self._option_string_actions = {}
-
-        # groups
-        self._action_groups = []
-        self._mutually_exclusive_groups = []
-
-        # defaults storage
-        self._defaults = {}
-
-        # determines whether an "option" looks like a negative number
-        self._negative_number_matcher = _re.compile(r'^-\d+$|^-\d*\.\d+$')
-
-        # whether or not there are any optionals that look like negative
-        # numbers -- uses a list so it can be shared and edited
-        self._has_negative_number_optionals = []
-
-    # ====================
-    # Registration methods
-    # ====================
-    def register(self, registry_name, value, object):
-        registry = self._registries.setdefault(registry_name, {})
-        registry[value] = object
-
-    def _registry_get(self, registry_name, value, default=None):
-        return self._registries[registry_name].get(value, default)
-
-    # ==================================
-    # Namespace default accessor methods
-    # ==================================
-    def set_defaults(self, **kwargs):
-        self._defaults.update(kwargs)
-
-        # if these defaults match any existing arguments, replace
-        # the previous default on the object with the new one
-        for action in self._actions:
-            if action.dest in kwargs:
-                action.default = kwargs[action.dest]
-
-    def get_default(self, dest):
-        for action in self._actions:
-            if action.dest == dest and action.default is not None:
-                return action.default
-        return self._defaults.get(dest, None)
-
-
-    # =======================
-    # Adding argument actions
-    # =======================
-    def add_argument(self, *args, **kwargs):
-        """
-        add_argument(dest, ..., name=value, ...)
-        add_argument(option_string, option_string, ..., name=value, ...)
-        """
-
-        # if no positional args are supplied or only one is supplied and
-        # it doesn't look like an option string, parse a positional
-        # argument
-        chars = self.prefix_chars
-        if not args or len(args) == 1 and args[0][0] not in chars:
-            if args and 'dest' in kwargs:
-                raise ValueError('dest supplied twice for positional argument')
-            kwargs = self._get_positional_kwargs(*args, **kwargs)
-
-        # otherwise, we're adding an optional argument
-        else:
-            kwargs = self._get_optional_kwargs(*args, **kwargs)
-
-        # if no default was supplied, use the parser-level default
-        if 'default' not in kwargs:
-            dest = kwargs['dest']
-            if dest in self._defaults:
-                kwargs['default'] = self._defaults[dest]
-            elif self.argument_default is not None:
-                kwargs['default'] = self.argument_default
-
-        # create the action object, and add it to the parser
-        action_class = self._pop_action_class(kwargs)
-        if not _callable(action_class):
-            raise ValueError('unknown action "%s"' % (action_class,))
-        action = action_class(**kwargs)
-
-        # raise an error if the action type is not callable
-        type_func = self._registry_get('type', action.type, action.type)
-        if not _callable(type_func):
-            raise ValueError('%r is not callable' % (type_func,))
-
-        # raise an error if the metavar does not match the type
-        if hasattr(self, "_get_formatter"):
-            try:
-                self._get_formatter()._format_args(action, None)
-            except TypeError:
-                raise ValueError("length of metavar tuple does not match nargs")
-
-        return self._add_action(action)
-
-    def add_argument_group(self, *args, **kwargs):
-        group = _ArgumentGroup(self, *args, **kwargs)
-        self._action_groups.append(group)
-        return group
-
-    def add_mutually_exclusive_group(self, **kwargs):
-        group = _MutuallyExclusiveGroup(self, **kwargs)
-        self._mutually_exclusive_groups.append(group)
-        return group
-
-    def _add_action(self, action):
-        # resolve any conflicts
-        self._check_conflict(action)
-
-        # add to actions list
-        self._actions.append(action)
-        action.container = self
-
-        # index the action by any option strings it has
-        for option_string in action.option_strings:
-            self._option_string_actions[option_string] = action
-
-        # set the flag if any option strings look like negative numbers
-        for option_string in action.option_strings:
-            if self._negative_number_matcher.match(option_string):
-                if not self._has_negative_number_optionals:
-                    self._has_negative_number_optionals.append(True)
-
-        # return the created action
-        return action
-
-    def _remove_action(self, action):
-        self._actions.remove(action)
-
-    def _add_container_actions(self, container):
-        # collect groups by titles
-        title_group_map = {}
-        for group in self._action_groups:
-            if group.title in title_group_map:
-                msg = _('cannot merge actions - two groups are named %r')
-                raise ValueError(msg % (group.title))
-            title_group_map[group.title] = group
-
-        # map each action to its group
-        group_map = {}
-        for group in container._action_groups:
-
-            # if a group with the title exists, use that, otherwise
-            # create a new group matching the container's group
-            if group.title not in title_group_map:
-                title_group_map[group.title] = self.add_argument_group(
-                    title=group.title,
-                    description=group.description,
-                    conflict_handler=group.conflict_handler)
-
-            # map the actions to their new group
-            for action in group._group_actions:
-                group_map[action] = title_group_map[group.title]
-
-        # add container's mutually exclusive groups
-        # NOTE: if add_mutually_exclusive_group ever gains title= and
-        # description= then this code will need to be expanded as above
-        for group in container._mutually_exclusive_groups:
-            mutex_group = self.add_mutually_exclusive_group(
-                required=group.required)
-
-            # map the actions to their new mutex group
-            for action in group._group_actions:
-                group_map[action] = mutex_group
-
-        # add all actions to this container or their group
-        for action in container._actions:
-            group_map.get(action, self)._add_action(action)
-
-    def _get_positional_kwargs(self, dest, **kwargs):
-        # make sure required is not specified
-        if 'required' in kwargs:
-            msg = _("'required' is an invalid argument for positionals")
-            raise TypeError(msg)
-
-        # mark positional arguments as required if at least one is
-        # always required
-        if kwargs.get('nargs') not in [OPTIONAL, ZERO_OR_MORE]:
-            kwargs['required'] = True
-        if kwargs.get('nargs') == ZERO_OR_MORE and 'default' not in kwargs:
-            kwargs['required'] = True
-
-        # return the keyword arguments with no option strings
-        return dict(kwargs, dest=dest, option_strings=[])
-
-    def _get_optional_kwargs(self, *args, **kwargs):
-        # determine short and long option strings
-        option_strings = []
-        long_option_strings = []
-        for option_string in args:
-            # error on strings that don't start with an appropriate prefix
-            if not option_string[0] in self.prefix_chars:
-                msg = _('invalid option string %r: '
-                        'must start with a character %r')
-                tup = option_string, self.prefix_chars
-                raise ValueError(msg % tup)
-
-            # strings starting with two prefix characters are long options
-            option_strings.append(option_string)
-            if option_string[0] in self.prefix_chars:
-                if len(option_string) > 1:
-                    if option_string[1] in self.prefix_chars:
-                        long_option_strings.append(option_string)
-
-        # infer destination, '--foo-bar' -> 'foo_bar' and '-x' -> 'x'
-        dest = kwargs.pop('dest', None)
-        if dest is None:
-            if long_option_strings:
-                dest_option_string = long_option_strings[0]
-            else:
-                dest_option_string = option_strings[0]
-            dest = dest_option_string.lstrip(self.prefix_chars)
-            if not dest:
-                msg = _('dest= is required for options like %r')
-                raise ValueError(msg % option_string)
-            dest = dest.replace('-', '_')
-
-        # return the updated keyword arguments
-        return dict(kwargs, dest=dest, option_strings=option_strings)
-
-    def _pop_action_class(self, kwargs, default=None):
-        action = kwargs.pop('action', default)
-        return self._registry_get('action', action, action)
-
-    def _get_handler(self):
-        # determine function from conflict handler string
-        handler_func_name = '_handle_conflict_%s' % self.conflict_handler
-        try:
-            return getattr(self, handler_func_name)
-        except AttributeError:
-            msg = _('invalid conflict_resolution value: %r')
-            raise ValueError(msg % self.conflict_handler)
-
-    def _check_conflict(self, action):
-
-        # find all options that conflict with this option
-        confl_optionals = []
-        for option_string in action.option_strings:
-            if option_string in self._option_string_actions:
-                confl_optional = self._option_string_actions[option_string]
-                confl_optionals.append((option_string, confl_optional))
-
-        # resolve any conflicts
-        if confl_optionals:
-            conflict_handler = self._get_handler()
-            conflict_handler(action, confl_optionals)
-
-    def _handle_conflict_error(self, action, conflicting_actions):
-        message = _('conflicting option string(s): %s')
-        conflict_string = ', '.join([option_string
-                                     for option_string, action
-                                     in conflicting_actions])
-        raise ArgumentError(action, message % conflict_string)
-
-    def _handle_conflict_resolve(self, action, conflicting_actions):
-
-        # remove all conflicting options
-        for option_string, action in conflicting_actions:
-
-            # remove the conflicting option
-            action.option_strings.remove(option_string)
-            self._option_string_actions.pop(option_string, None)
-
-            # if the option now has no option string, remove it from the
-            # container holding it
-            if not action.option_strings:
-                action.container._remove_action(action)
-
-
-class _ArgumentGroup(_ActionsContainer):
-
-    def __init__(self, container, title=None, description=None, **kwargs):
-        # add any missing keyword arguments by checking the container
-        update = kwargs.setdefault
-        update('conflict_handler', container.conflict_handler)
-        update('prefix_chars', container.prefix_chars)
-        update('argument_default', container.argument_default)
-        super_init = super(_ArgumentGroup, self).__init__
-        super_init(description=description, **kwargs)
-
-        # group attributes
-        self.title = title
-        self._group_actions = []
-
-        # share most attributes with the container
-        self._registries = container._registries
-        self._actions = container._actions
-        self._option_string_actions = container._option_string_actions
-        self._defaults = container._defaults
-        self._has_negative_number_optionals = \
-            container._has_negative_number_optionals
-        self._mutually_exclusive_groups = container._mutually_exclusive_groups
-
-    def _add_action(self, action):
-        action = super(_ArgumentGroup, self)._add_action(action)
-        self._group_actions.append(action)
-        return action
-
-    def _remove_action(self, action):
-        super(_ArgumentGroup, self)._remove_action(action)
-        self._group_actions.remove(action)
-
-
-class _MutuallyExclusiveGroup(_ArgumentGroup):
-
-    def __init__(self, container, required=False):
-        super(_MutuallyExclusiveGroup, self).__init__(container)
-        self.required = required
-        self._container = container
-
-    def _add_action(self, action):
-        if action.required:
-            msg = _('mutually exclusive arguments must be optional')
-            raise ValueError(msg)
-        action = self._container._add_action(action)
-        self._group_actions.append(action)
-        return action
-
-    def _remove_action(self, action):
-        self._container._remove_action(action)
-        self._group_actions.remove(action)
-
-
-class ArgumentParser(_AttributeHolder, _ActionsContainer):
-    """Object for parsing command line strings into Python objects.
-
-    Keyword Arguments:
-        - prog -- The name of the program (default: sys.argv[0])
-        - usage -- A usage message (default: auto-generated from arguments)
-        - description -- A description of what the program does
-        - epilog -- Text following the argument descriptions
-        - parents -- Parsers whose arguments should be copied into this one
-        - formatter_class -- HelpFormatter class for printing help messages
-        - prefix_chars -- Characters that prefix optional arguments
-        - fromfile_prefix_chars -- Characters that prefix files containing
-            additional arguments
-        - argument_default -- The default value for all arguments
-        - conflict_handler -- String indicating how to handle conflicts
-        - add_help -- Add a -h/-help option
-    """
-
-    def __init__(self,
-                 prog=None,
-                 usage=None,
-                 description=None,
-                 epilog=None,
-                 version=None,
-                 parents=[],
-                 formatter_class=HelpFormatter,
-                 prefix_chars='-',
-                 fromfile_prefix_chars=None,
-                 argument_default=None,
-                 conflict_handler='error',
-                 add_help=True):
-
-        if version is not None:
-            import warnings
-            warnings.warn(
-                """The "version" argument to ArgumentParser is deprecated. """
-                """Please use """
-                """"add_argument(..., action='version', version="N", ...)" """
-                """instead""", DeprecationWarning)
-
-        superinit = super(ArgumentParser, self).__init__
-        superinit(description=description,
-                  prefix_chars=prefix_chars,
-                  argument_default=argument_default,
-                  conflict_handler=conflict_handler)
-
-        # default setting for prog
-        if prog is None:
-            prog = _os.path.basename(_sys.argv[0])
-
-        self.prog = prog
-        self.usage = usage
-        self.epilog = epilog
-        self.version = version
-        self.formatter_class = formatter_class
-        self.fromfile_prefix_chars = fromfile_prefix_chars
-        self.add_help = add_help
-
-        add_group = self.add_argument_group
-        self._positionals = add_group(_('positional arguments'))
-        self._optionals = add_group(_('optional arguments'))
-        self._subparsers = None
-
-        # register types
-        def identity(string):
-            return string
-        self.register('type', None, identity)
-
-        # add help and version arguments if necessary
-        # (using explicit default to override global argument_default)
-        default_prefix = '-' if '-' in prefix_chars else prefix_chars[0]
-        if self.add_help:
-            self.add_argument(
-                default_prefix+'h', default_prefix*2+'help',
-                action='help', default=SUPPRESS,
-                help=_('show this help message and exit'))
-        if self.version:
-            self.add_argument(
-                default_prefix+'v', default_prefix*2+'version',
-                action='version', default=SUPPRESS,
-                version=self.version,
-                help=_("show program's version number and exit"))
-
-        # add parent arguments and defaults
-        for parent in parents:
-            self._add_container_actions(parent)
-            try:
-                defaults = parent._defaults
-            except AttributeError:
-                pass
-            else:
-                self._defaults.update(defaults)
-
-    # =======================
-    # Pretty __repr__ methods
-    # =======================
-    def _get_kwargs(self):
-        names = [
-            'prog',
-            'usage',
-            'description',
-            'version',
-            'formatter_class',
-            'conflict_handler',
-            'add_help',
-        ]
-        return [(name, getattr(self, name)) for name in names]
-
-    # ==================================
-    # Optional/Positional adding methods
-    # ==================================
-    def add_subparsers(self, **kwargs):
-        if self._subparsers is not None:
-            self.error(_('cannot have multiple subparser arguments'))
-
-        # add the parser class to the arguments if it's not present
-        kwargs.setdefault('parser_class', type(self))
-
-        if 'title' in kwargs or 'description' in kwargs:
-            title = _(kwargs.pop('title', 'subcommands'))
-            description = _(kwargs.pop('description', None))
-            self._subparsers = self.add_argument_group(title, description)
-        else:
-            self._subparsers = self._positionals
-
-        # prog defaults to the usage message of this parser, skipping
-        # optional arguments and with no "usage:" prefix
-        if kwargs.get('prog') is None:
-            formatter = self._get_formatter()
-            positionals = self._get_positional_actions()
-            groups = self._mutually_exclusive_groups
-            formatter.add_usage(self.usage, positionals, groups, '')
-            kwargs['prog'] = formatter.format_help().strip()
-
-        # create the parsers action and add it to the positionals list
-        parsers_class = self._pop_action_class(kwargs, 'parsers')
-        action = parsers_class(option_strings=[], **kwargs)
-        self._subparsers._add_action(action)
-
-        # return the created parsers action
-        return action
-
-    def _add_action(self, action):
-        if action.option_strings:
-            self._optionals._add_action(action)
-        else:
-            self._positionals._add_action(action)
-        return action
-
-    def _get_optional_actions(self):
-        return [action
-                for action in self._actions
-                if action.option_strings]
-
-    def _get_positional_actions(self):
-        return [action
-                for action in self._actions
-                if not action.option_strings]
-
-    # =====================================
-    # Command line argument parsing methods
-    # =====================================
-    def parse_args(self, args=None, namespace=None):
-        args, argv = self.parse_known_args(args, namespace)
-        if argv:
-            msg = _('unrecognized arguments: %s')
-            self.error(msg % ' '.join(argv))
-        return args
-
-    def parse_known_args(self, args=None, namespace=None):
-        # args default to the system args
-        if args is None:
-            args = _sys.argv[1:]
-
-        # default Namespace built from parser defaults
-        if namespace is None:
-            namespace = Namespace()
-
-        # add any action defaults that aren't present
-        for action in self._actions:
-            if action.dest is not SUPPRESS:
-                if not hasattr(namespace, action.dest):
-                    if action.default is not SUPPRESS:
-                        default = action.default
-                        if isinstance(action.default, basestring):
-                            default = self._get_value(action, default)
-                        setattr(namespace, action.dest, default)
-
-        # add any parser defaults that aren't present
-        for dest in self._defaults:
-            if not hasattr(namespace, dest):
-                setattr(namespace, dest, self._defaults[dest])
-
-        # parse the arguments and exit if there are any errors
-        try:
-            namespace, args = self._parse_known_args(args, namespace)
-            if hasattr(namespace, _UNRECOGNIZED_ARGS_ATTR):
-                args.extend(getattr(namespace, _UNRECOGNIZED_ARGS_ATTR))
-                delattr(namespace, _UNRECOGNIZED_ARGS_ATTR)
-            return namespace, args
-        except ArgumentError:
-            err = _sys.exc_info()[1]
-            self.error(str(err))
-
-    def _parse_known_args(self, arg_strings, namespace):
-        # replace arg strings that are file references
-        if self.fromfile_prefix_chars is not None:
-            arg_strings = self._read_args_from_files(arg_strings)
-
-        # map all mutually exclusive arguments to the other arguments
-        # they can't occur with
-        action_conflicts = {}
-        for mutex_group in self._mutually_exclusive_groups:
-            group_actions = mutex_group._group_actions
-            for i, mutex_action in enumerate(mutex_group._group_actions):
-                conflicts = action_conflicts.setdefault(mutex_action, [])
-                conflicts.extend(group_actions[:i])
-                conflicts.extend(group_actions[i + 1:])
-
-        # find all option indices, and determine the arg_string_pattern
-        # which has an 'O' if there is an option at an index,
-        # an 'A' if there is an argument, or a '-' if there is a '--'
-        option_string_indices = {}
-        arg_string_pattern_parts = []
-        arg_strings_iter = iter(arg_strings)
-        for i, arg_string in enumerate(arg_strings_iter):
-
-            # all args after -- are non-options
-            if arg_string == '--':
-                arg_string_pattern_parts.append('-')
-                for arg_string in arg_strings_iter:
-                    arg_string_pattern_parts.append('A')
-
-            # otherwise, add the arg to the arg strings
-            # and note the index if it was an option
-            else:
-                option_tuple = self._parse_optional(arg_string)
-                if option_tuple is None:
-                    pattern = 'A'
-                else:
-                    option_string_indices[i] = option_tuple
-                    pattern = 'O'
-                arg_string_pattern_parts.append(pattern)
-
-        # join the pieces together to form the pattern
-        arg_strings_pattern = ''.join(arg_string_pattern_parts)
-
-        # converts arg strings to the appropriate and then takes the action
-        seen_actions = set()
-        seen_non_default_actions = set()
-
-        def take_action(action, argument_strings, option_string=None):
-            seen_actions.add(action)
-            argument_values = self._get_values(action, argument_strings)
-
-            # error if this argument is not allowed with other previously
-            # seen arguments, assuming that actions that use the default
-            # value don't really count as "present"
-            if argument_values is not action.default:
-                seen_non_default_actions.add(action)
-                for conflict_action in action_conflicts.get(action, []):
-                    if conflict_action in seen_non_default_actions:
-                        msg = _('not allowed with argument %s')
-                        action_name = _get_action_name(conflict_action)
-                        raise ArgumentError(action, msg % action_name)
-
-            # take the action if we didn't receive a SUPPRESS value
-            # (e.g. from a default)
-            if argument_values is not SUPPRESS:
-                action(self, namespace, argument_values, option_string)
-
-        # function to convert arg_strings into an optional action
-        def consume_optional(start_index):
-
-            # get the optional identified at this index
-            option_tuple = option_string_indices[start_index]
-            action, option_string, explicit_arg = option_tuple
-
-            # identify additional optionals in the same arg string
-            # (e.g. -xyz is the same as -x -y -z if no args are required)
-            match_argument = self._match_argument
-            action_tuples = []
-            while True:
-
-                # if we found no optional action, skip it
-                if action is None:
-                    extras.append(arg_strings[start_index])
-                    return start_index + 1
-
-                # if there is an explicit argument, try to match the
-                # optional's string arguments to only this
-                if explicit_arg is not None:
-                    arg_count = match_argument(action, 'A')
-
-                    # if the action is a single-dash option and takes no
-                    # arguments, try to parse more single-dash options out
-                    # of the tail of the option string
-                    chars = self.prefix_chars
-                    if arg_count == 0 and option_string[1] not in chars:
-                        action_tuples.append((action, [], option_string))
-                        char = option_string[0]
-                        option_string = char + explicit_arg[0]
-                        new_explicit_arg = explicit_arg[1:] or None
-                        optionals_map = self._option_string_actions
-                        if option_string in optionals_map:
-                            action = optionals_map[option_string]
-                            explicit_arg = new_explicit_arg
-                        else:
-                            msg = _('ignored explicit argument %r')
-                            raise ArgumentError(action, msg % explicit_arg)
-
-                    # if the action expect exactly one argument, we've
-                    # successfully matched the option; exit the loop
-                    elif arg_count == 1:
-                        stop = start_index + 1
-                        args = [explicit_arg]
-                        action_tuples.append((action, args, option_string))
-                        break
-
-                    # error if a double-dash option did not use the
-                    # explicit argument
-                    else:
-                        msg = _('ignored explicit argument %r')
-                        raise ArgumentError(action, msg % explicit_arg)
-
-                # if there is no explicit argument, try to match the
-                # optional's string arguments with the following strings
-                # if successful, exit the loop
-                else:
-                    start = start_index + 1
-                    selected_patterns = arg_strings_pattern[start:]
-                    arg_count = match_argument(action, selected_patterns)
-                    stop = start + arg_count
-                    args = arg_strings[start:stop]
-                    action_tuples.append((action, args, option_string))
-                    break
-
-            # add the Optional to the list and return the index at which
-            # the Optional's string args stopped
-            assert action_tuples
-            for action, args, option_string in action_tuples:
-                take_action(action, args, option_string)
-            return stop
-
-        # the list of Positionals left to be parsed; this is modified
-        # by consume_positionals()
-        positionals = self._get_positional_actions()
-
-        # function to convert arg_strings into positional actions
-        def consume_positionals(start_index):
-            # match as many Positionals as possible
-            match_partial = self._match_arguments_partial
-            selected_pattern = arg_strings_pattern[start_index:]
-            arg_counts = match_partial(positionals, selected_pattern)
-
-            # slice off the appropriate arg strings for each Positional
-            # and add the Positional and its args to the list
-            for action, arg_count in zip(positionals, arg_counts):
-                args = arg_strings[start_index: start_index + arg_count]
-                start_index += arg_count
-                take_action(action, args)
-
-            # slice off the Positionals that we just parsed and return the
-            # index at which the Positionals' string args stopped
-            positionals[:] = positionals[len(arg_counts):]
-            return start_index
-
-        # consume Positionals and Optionals alternately, until we have
-        # passed the last option string
-        extras = []
-        start_index = 0
-        if option_string_indices:
-            max_option_string_index = max(option_string_indices)
-        else:
-            max_option_string_index = -1
-        while start_index <= max_option_string_index:
-
-            # consume any Positionals preceding the next option
-            next_option_string_index = min([
-                index
-                for index in option_string_indices
-                if index >= start_index])
-            if start_index != next_option_string_index:
-                positionals_end_index = consume_positionals(start_index)
-
-                # only try to parse the next optional if we didn't consume
-                # the option string during the positionals parsing
-                if positionals_end_index > start_index:
-                    start_index = positionals_end_index
-                    continue
-                else:
-                    start_index = positionals_end_index
-
-            # if we consumed all the positionals we could and we're not
-            # at the index of an option string, there were extra arguments
-            if start_index not in option_string_indices:
-                strings = arg_strings[start_index:next_option_string_index]
-                extras.extend(strings)
-                start_index = next_option_string_index
-
-            # consume the next optional and any arguments for it
-            start_index = consume_optional(start_index)
-
-        # consume any positionals following the last Optional
-        stop_index = consume_positionals(start_index)
-
-        # if we didn't consume all the argument strings, there were extras
-        extras.extend(arg_strings[stop_index:])
-
-        # if we didn't use all the Positional objects, there were too few
-        # arg strings supplied.
-        if positionals:
-            self.error(_('too few arguments'))
-
-        # make sure all required actions were present
-        for action in self._actions:
-            if action.required:
-                if action not in seen_actions:
-                    name = _get_action_name(action)
-                    self.error(_('argument %s is required') % name)
-
-        # make sure all required groups had one option present
-        for group in self._mutually_exclusive_groups:
-            if group.required:
-                for action in group._group_actions:
-                    if action in seen_non_default_actions:
-                        break
-
-                # if no actions were used, report the error
-                else:
-                    names = [_get_action_name(action)
-                             for action in group._group_actions
-                             if action.help is not SUPPRESS]
-                    msg = _('one of the arguments %s is required')
-                    self.error(msg % ' '.join(names))
-
-        # return the updated namespace and the extra arguments
-        return namespace, extras
-
-    def _read_args_from_files(self, arg_strings):
-        # expand arguments referencing files
-        new_arg_strings = []
-        for arg_string in arg_strings:
-
-            # for regular arguments, just add them back into the list
-            if arg_string[0] not in self.fromfile_prefix_chars:
-                new_arg_strings.append(arg_string)
-
-            # replace arguments referencing files with the file content
-            else:
-                try:
-                    args_file = open(arg_string[1:])
-                    try:
-                        arg_strings = []
-                        for arg_line in args_file.read().splitlines():
-                            for arg in self.convert_arg_line_to_args(arg_line):
-                                arg_strings.append(arg)
-                        arg_strings = self._read_args_from_files(arg_strings)
-                        new_arg_strings.extend(arg_strings)
-                    finally:
-                        args_file.close()
-                except IOError:
-                    err = _sys.exc_info()[1]
-                    self.error(str(err))
-
-        # return the modified argument list
-        return new_arg_strings
-
-    def convert_arg_line_to_args(self, arg_line):
-        return [arg_line]
-
-    def _match_argument(self, action, arg_strings_pattern):
-        # match the pattern for this action to the arg strings
-        nargs_pattern = self._get_nargs_pattern(action)
-        match = _re.match(nargs_pattern, arg_strings_pattern)
-
-        # raise an exception if we weren't able to find a match
-        if match is None:
-            nargs_errors = {
-                None: _('expected one argument'),
-                OPTIONAL: _('expected at most one argument'),
-                ONE_OR_MORE: _('expected at least one argument'),
-            }
-            default = _('expected %s argument(s)') % action.nargs
-            msg = nargs_errors.get(action.nargs, default)
-            raise ArgumentError(action, msg)
-
-        # return the number of arguments matched
-        return len(match.group(1))
-
-    def _match_arguments_partial(self, actions, arg_strings_pattern):
-        # progressively shorten the actions list by slicing off the
-        # final actions until we find a match
-        result = []
-        for i in range(len(actions), 0, -1):
-            actions_slice = actions[:i]
-            pattern = ''.join([self._get_nargs_pattern(action)
-                               for action in actions_slice])
-            match = _re.match(pattern, arg_strings_pattern)
-            if match is not None:
-                result.extend([len(string) for string in match.groups()])
-                break
-
-        # return the list of arg string counts
-        return result
-
-    def _parse_optional(self, arg_string):
-        # if it's an empty string, it was meant to be a positional
-        if not arg_string:
-            return None
-
-        # if it doesn't start with a prefix, it was meant to be positional
-        if not arg_string[0] in self.prefix_chars:
-            return None
-
-        # if the option string is present in the parser, return the action
-        if arg_string in self._option_string_actions:
-            action = self._option_string_actions[arg_string]
-            return action, arg_string, None
-
-        # if it's just a single character, it was meant to be positional
-        if len(arg_string) == 1:
-            return None
-
-        # if the option string before the "=" is present, return the action
-        if '=' in arg_string:
-            option_string, explicit_arg = arg_string.split('=', 1)
-            if option_string in self._option_string_actions:
-                action = self._option_string_actions[option_string]
-                return action, option_string, explicit_arg
-
-        # search through all possible prefixes of the option string
-        # and all actions in the parser for possible interpretations
-        option_tuples = self._get_option_tuples(arg_string)
-
-        # if multiple actions match, the option string was ambiguous
-        if len(option_tuples) > 1:
-            options = ', '.join([option_string
-                for action, option_string, explicit_arg in option_tuples])
-            tup = arg_string, options
-            self.error(_('ambiguous option: %s could match %s') % tup)
-
-        # if exactly one action matched, this segmentation is good,
-        # so return the parsed action
-        elif len(option_tuples) == 1:
-            option_tuple, = option_tuples
-            return option_tuple
-
-        # if it was not found as an option, but it looks like a negative
-        # number, it was meant to be positional
-        # unless there are negative-number-like options
-        if self._negative_number_matcher.match(arg_string):
-            if not self._has_negative_number_optionals:
-                return None
-
-        # if it contains a space, it was meant to be a positional
-        if ' ' in arg_string:
-            return None
-
-        # it was meant to be an optional but there is no such option
-        # in this parser (though it might be a valid option in a subparser)
-        return None, arg_string, None
-
-    def _get_option_tuples(self, option_string):
-        result = []
-
-        # option strings starting with two prefix characters are only
-        # split at the '='
-        chars = self.prefix_chars
-        if option_string[0] in chars and option_string[1] in chars:
-            if '=' in option_string:
-                option_prefix, explicit_arg = option_string.split('=', 1)
-            else:
-                option_prefix = option_string
-                explicit_arg = None
-            for option_string in self._option_string_actions:
-                if option_string.startswith(option_prefix):
-                    action = self._option_string_actions[option_string]
-                    tup = action, option_string, explicit_arg
-                    result.append(tup)
-
-        # single character options can be concatenated with their arguments
-        # but multiple character options always have to have their argument
-        # separate
-        elif option_string[0] in chars and option_string[1] not in chars:
-            option_prefix = option_string
-            explicit_arg = None
-            short_option_prefix = option_string[:2]
-            short_explicit_arg = option_string[2:]
-
-            for option_string in self._option_string_actions:
-                if option_string == short_option_prefix:
-                    action = self._option_string_actions[option_string]
-                    tup = action, option_string, short_explicit_arg
-                    result.append(tup)
-                elif option_string.startswith(option_prefix):
-                    action = self._option_string_actions[option_string]
-                    tup = action, option_string, explicit_arg
-                    result.append(tup)
-
-        # shouldn't ever get here
-        else:
-            self.error(_('unexpected option string: %s') % option_string)
-
-        # return the collected option tuples
-        return result
-
-    def _get_nargs_pattern(self, action):
-        # in all examples below, we have to allow for '--' args
-        # which are represented as '-' in the pattern
-        nargs = action.nargs
-
-        # the default (None) is assumed to be a single argument
-        if nargs is None:
-            nargs_pattern = '(-*A-*)'
-
-        # allow zero or one arguments
-        elif nargs == OPTIONAL:
-            nargs_pattern = '(-*A?-*)'
-
-        # allow zero or more arguments
-        elif nargs == ZERO_OR_MORE:
-            nargs_pattern = '(-*[A-]*)'
-
-        # allow one or more arguments
-        elif nargs == ONE_OR_MORE:
-            nargs_pattern = '(-*A[A-]*)'
-
-        # allow any number of options or arguments
-        elif nargs == REMAINDER:
-            nargs_pattern = '([-AO]*)'
-
-        # allow one argument followed by any number of options or arguments
-        elif nargs == PARSER:
-            nargs_pattern = '(-*A[-AO]*)'
-
-        # all others should be integers
-        else:
-            nargs_pattern = '(-*%s-*)' % '-*'.join('A' * nargs)
-
-        # if this is an optional action, -- is not allowed
-        if action.option_strings:
-            nargs_pattern = nargs_pattern.replace('-*', '')
-            nargs_pattern = nargs_pattern.replace('-', '')
-
-        # return the pattern
-        return nargs_pattern
-
-    # ========================
-    # Value conversion methods
-    # ========================
-    def _get_values(self, action, arg_strings):
-        # for everything but PARSER args, strip out '--'
-        if action.nargs not in [PARSER, REMAINDER]:
-            arg_strings = [s for s in arg_strings if s != '--']
-
-        # optional argument produces a default when not present
-        if not arg_strings and action.nargs == OPTIONAL:
-            if action.option_strings:
-                value = action.const
-            else:
-                value = action.default
-            if isinstance(value, basestring):
-                value = self._get_value(action, value)
-                self._check_value(action, value)
-
-        # when nargs='*' on a positional, if there were no command-line
-        # args, use the default if it is anything other than None
-        elif (not arg_strings and action.nargs == ZERO_OR_MORE and
-              not action.option_strings):
-            if action.default is not None:
-                value = action.default
-            else:
-                value = arg_strings
-            self._check_value(action, value)
-
-        # single argument or optional argument produces a single value
-        elif len(arg_strings) == 1 and action.nargs in [None, OPTIONAL]:
-            arg_string, = arg_strings
-            value = self._get_value(action, arg_string)
-            self._check_value(action, value)
-
-        # REMAINDER arguments convert all values, checking none
-        elif action.nargs == REMAINDER:
-            value = [self._get_value(action, v) for v in arg_strings]
-
-        # PARSER arguments convert all values, but check only the first
-        elif action.nargs == PARSER:
-            value = [self._get_value(action, v) for v in arg_strings]
-            self._check_value(action, value[0])
-
-        # all other types of nargs produce a list
-        else:
-            value = [self._get_value(action, v) for v in arg_strings]
-            for v in value:
-                self._check_value(action, v)
-
-        # return the converted value
-        return value
-
-    def _get_value(self, action, arg_string):
-        type_func = self._registry_get('type', action.type, action.type)
-        if not _callable(type_func):
-            msg = _('%r is not callable')
-            raise ArgumentError(action, msg % type_func)
-
-        # convert the value to the appropriate type
-        try:
-            result = type_func(arg_string)
-
-        # ArgumentTypeErrors indicate errors
-        except ArgumentTypeError:
-            name = getattr(action.type, '__name__', repr(action.type))
-            msg = str(_sys.exc_info()[1])
-            raise ArgumentError(action, msg)
-
-        # TypeErrors or ValueErrors also indicate errors
-        except (TypeError, ValueError):
-            name = getattr(action.type, '__name__', repr(action.type))
-            msg = _('invalid %s value: %r')
-            raise ArgumentError(action, msg % (name, arg_string))
-
-        # return the converted value
-        return result
-
-    def _check_value(self, action, value):
-        # converted value must be one of the choices (if specified)
-        if action.choices is not None and value not in action.choices:
-            tup = value, ', '.join(map(repr, action.choices))
-            msg = _('invalid choice: %r (choose from %s)') % tup
-            raise ArgumentError(action, msg)
-
-    # =======================
-    # Help-formatting methods
-    # =======================
-    def format_usage(self):
-        formatter = self._get_formatter()
-        formatter.add_usage(self.usage, self._actions,
-                            self._mutually_exclusive_groups)
-        return formatter.format_help()
-
-    def format_help(self):
-        formatter = self._get_formatter()
-
-        # usage
-        formatter.add_usage(self.usage, self._actions,
-                            self._mutually_exclusive_groups)
-
-        # description
-        formatter.add_text(self.description)
-
-        # positionals, optionals and user-defined groups
-        for action_group in self._action_groups:
-            formatter.start_section(action_group.title)
-            formatter.add_text(action_group.description)
-            formatter.add_arguments(action_group._group_actions)
-            formatter.end_section()
-
-        # epilog
-        formatter.add_text(self.epilog)
-
-        # determine help from format above
-        return formatter.format_help()
-
-    def format_version(self):
-        import warnings
-        warnings.warn(
-            'The format_version method is deprecated -- the "version" '
-            'argument to ArgumentParser is no longer supported.',
-            DeprecationWarning)
-        formatter = self._get_formatter()
-        formatter.add_text(self.version)
-        return formatter.format_help()
-
-    def _get_formatter(self):
-        return self.formatter_class(prog=self.prog)
-
-    # =====================
-    # Help-printing methods
-    # =====================
-    def print_usage(self, file=None):
-        if file is None:
-            file = _sys.stdout
-        self._print_message(self.format_usage(), file)
-
-    def print_help(self, file=None):
-        if file is None:
-            file = _sys.stdout
-        self._print_message(self.format_help(), file)
-
-    def print_version(self, file=None):
-        import warnings
-        warnings.warn(
-            'The print_version method is deprecated -- the "version" '
-            'argument to ArgumentParser is no longer supported.',
-            DeprecationWarning)
-        self._print_message(self.format_version(), file)
-
-    def _print_message(self, message, file=None):
-        if message:
-            if file is None:
-                file = _sys.stderr
-            file.write(message)
-
-    # ===============
-    # Exiting methods
-    # ===============
-    def exit(self, status=0, message=None):
-        if message:
-            self._print_message(message, _sys.stderr)
-        _sys.exit(status)
-
-    def error(self, message):
-        """error(message: string)
-
-        Prints a usage message incorporating the message to stderr and
-        exits.
-
-        If you override this in a subclass, it should not return -- it
-        should either exit or raise an exception.
-        """
-        self.print_usage(_sys.stderr)
-        self.exit(2, _('%s: error: %s\n') % (self.prog, message))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/ast.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/ast.py
deleted file mode 100644
index 4070c39..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/ast.py
+++ /dev/null
@@ -1,311 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-    ast
-    ~~~
-
-    The `ast` module helps Python applications to process trees of the Python
-    abstract syntax grammar.  The abstract syntax itself might change with
-    each Python release; this module helps to find out programmatically what
-    the current grammar looks like and allows modifications of it.
-
-    An abstract syntax tree can be generated by passing `ast.PyCF_ONLY_AST` as
-    a flag to the `compile()` builtin function or by using the `parse()`
-    function from this module.  The result will be a tree of objects whose
-    classes all inherit from `ast.AST`.
-
-    A modified abstract syntax tree can be compiled into a Python code object
-    using the built-in `compile()` function.
-
-    Additionally various helper functions are provided that make working with
-    the trees simpler.  The main intention of the helper functions and this
-    module in general is to provide an easy to use interface for libraries
-    that work tightly with the python syntax (template engines for example).
-
-
-    :copyright: Copyright 2008 by Armin Ronacher.
-    :license: Python License.
-"""
-from _ast import *
-from _ast import __version__
-
-
-def parse(source, filename='<unknown>', mode='exec'):
-    """
-    Parse the source into an AST node.
-    Equivalent to compile(source, filename, mode, PyCF_ONLY_AST).
-    """
-    return compile(source, filename, mode, PyCF_ONLY_AST)
-
-
-def literal_eval(node_or_string):
-    """
-    Safely evaluate an expression node or a string containing a Python
-    expression.  The string or node provided may only consist of the following
-    Python literal structures: strings, numbers, tuples, lists, dicts, booleans,
-    and None.
-    """
-    _safe_names = {'None': None, 'True': True, 'False': False}
-    if isinstance(node_or_string, basestring):
-        node_or_string = parse(node_or_string, mode='eval')
-    if isinstance(node_or_string, Expression):
-        node_or_string = node_or_string.body
-    def _convert(node):
-        if isinstance(node, Str):
-            return node.s
-        elif isinstance(node, Num):
-            return node.n
-        elif isinstance(node, Tuple):
-            return tuple(map(_convert, node.elts))
-        elif isinstance(node, List):
-            return list(map(_convert, node.elts))
-        elif isinstance(node, Dict):
-            return dict((_convert(k), _convert(v)) for k, v
-                        in zip(node.keys, node.values))
-        elif isinstance(node, Name):
-            if node.id in _safe_names:
-                return _safe_names[node.id]
-        elif isinstance(node, BinOp) and \
-             isinstance(node.op, (Add, Sub)) and \
-             isinstance(node.right, Num) and \
-             isinstance(node.right.n, complex) and \
-             isinstance(node.left, Num) and \
-             isinstance(node.left.n, (int, long, float)):
-            left = node.left.n
-            right = node.right.n
-            if isinstance(node.op, Add):
-                return left + right
-            else:
-                return left - right
-        raise ValueError('malformed string')
-    return _convert(node_or_string)
-
-
-def dump(node, annotate_fields=True, include_attributes=False):
-    """
-    Return a formatted dump of the tree in *node*.  This is mainly useful for
-    debugging purposes.  The returned string will show the names and the values
-    for fields.  This makes the code impossible to evaluate, so if evaluation is
-    wanted *annotate_fields* must be set to False.  Attributes such as line
-    numbers and column offsets are not dumped by default.  If this is wanted,
-    *include_attributes* can be set to True.
-    """
-    def _format(node):
-        if isinstance(node, AST):
-            fields = [(a, _format(b)) for a, b in iter_fields(node)]
-            rv = '%s(%s' % (node.__class__.__name__, ', '.join(
-                ('%s=%s' % field for field in fields)
-                if annotate_fields else
-                (b for a, b in fields)
-            ))
-            if include_attributes and node._attributes:
-                rv += fields and ', ' or ' '
-                rv += ', '.join('%s=%s' % (a, _format(getattr(node, a)))
-                                for a in node._attributes)
-            return rv + ')'
-        elif isinstance(node, list):
-            return '[%s]' % ', '.join(_format(x) for x in node)
-        return repr(node)
-    if not isinstance(node, AST):
-        raise TypeError('expected AST, got %r' % node.__class__.__name__)
-    return _format(node)
-
-
-def copy_location(new_node, old_node):
-    """
-    Copy source location (`lineno` and `col_offset` attributes) from
-    *old_node* to *new_node* if possible, and return *new_node*.
-    """
-    for attr in 'lineno', 'col_offset':
-        if attr in old_node._attributes and attr in new_node._attributes \
-           and hasattr(old_node, attr):
-            setattr(new_node, attr, getattr(old_node, attr))
-    return new_node
-
-
-def fix_missing_locations(node):
-    """
-    When you compile a node tree with compile(), the compiler expects lineno and
-    col_offset attributes for every node that supports them.  This is rather
-    tedious to fill in for generated nodes, so this helper adds these attributes
-    recursively where not already set, by setting them to the values of the
-    parent node.  It works recursively starting at *node*.
-    """
-    def _fix(node, lineno, col_offset):
-        if 'lineno' in node._attributes:
-            if not hasattr(node, 'lineno'):
-                node.lineno = lineno
-            else:
-                lineno = node.lineno
-        if 'col_offset' in node._attributes:
-            if not hasattr(node, 'col_offset'):
-                node.col_offset = col_offset
-            else:
-                col_offset = node.col_offset
-        for child in iter_child_nodes(node):
-            _fix(child, lineno, col_offset)
-    _fix(node, 1, 0)
-    return node
-
-
-def increment_lineno(node, n=1):
-    """
-    Increment the line number of each node in the tree starting at *node* by *n*.
-    This is useful to "move code" to a different location in a file.
-    """
-    for child in walk(node):
-        if 'lineno' in child._attributes:
-            child.lineno = getattr(child, 'lineno', 0) + n
-    return node
-
-
-def iter_fields(node):
-    """
-    Yield a tuple of ``(fieldname, value)`` for each field in ``node._fields``
-    that is present on *node*.
-    """
-    for field in node._fields:
-        try:
-            yield field, getattr(node, field)
-        except AttributeError:
-            pass
-
-
-def iter_child_nodes(node):
-    """
-    Yield all direct child nodes of *node*, that is, all fields that are nodes
-    and all items of fields that are lists of nodes.
-    """
-    for name, field in iter_fields(node):
-        if isinstance(field, AST):
-            yield field
-        elif isinstance(field, list):
-            for item in field:
-                if isinstance(item, AST):
-                    yield item
-
-
-def get_docstring(node, clean=True):
-    """
-    Return the docstring for the given node or None if no docstring can
-    be found.  If the node provided does not have docstrings a TypeError
-    will be raised.
-    """
-    if not isinstance(node, (FunctionDef, ClassDef, Module)):
-        raise TypeError("%r can't have docstrings" % node.__class__.__name__)
-    if node.body and isinstance(node.body[0], Expr) and \
-       isinstance(node.body[0].value, Str):
-        if clean:
-            import inspect
-            return inspect.cleandoc(node.body[0].value.s)
-        return node.body[0].value.s
-
-
-def walk(node):
-    """
-    Recursively yield all descendant nodes in the tree starting at *node*
-    (including *node* itself), in no specified order.  This is useful if you
-    only want to modify nodes in place and don't care about the context.
-    """
-    from collections import deque
-    todo = deque([node])
-    while todo:
-        node = todo.popleft()
-        todo.extend(iter_child_nodes(node))
-        yield node
-
-
-class NodeVisitor(object):
-    """
-    A node visitor base class that walks the abstract syntax tree and calls a
-    visitor function for every node found.  This function may return a value
-    which is forwarded by the `visit` method.
-
-    This class is meant to be subclassed, with the subclass adding visitor
-    methods.
-
-    Per default the visitor functions for the nodes are ``'visit_'`` +
-    class name of the node.  So a `TryFinally` node visit function would
-    be `visit_TryFinally`.  This behavior can be changed by overriding
-    the `visit` method.  If no visitor function exists for a node
-    (return value `None`) the `generic_visit` visitor is used instead.
-
-    Don't use the `NodeVisitor` if you want to apply changes to nodes during
-    traversing.  For this a special visitor exists (`NodeTransformer`) that
-    allows modifications.
-    """
-
-    def visit(self, node):
-        """Visit a node."""
-        method = 'visit_' + node.__class__.__name__
-        visitor = getattr(self, method, self.generic_visit)
-        return visitor(node)
-
-    def generic_visit(self, node):
-        """Called if no explicit visitor function exists for a node."""
-        for field, value in iter_fields(node):
-            if isinstance(value, list):
-                for item in value:
-                    if isinstance(item, AST):
-                        self.visit(item)
-            elif isinstance(value, AST):
-                self.visit(value)
-
-
-class NodeTransformer(NodeVisitor):
-    """
-    A :class:`NodeVisitor` subclass that walks the abstract syntax tree and
-    allows modification of nodes.
-
-    The `NodeTransformer` will walk the AST and use the return value of the
-    visitor methods to replace or remove the old node.  If the return value of
-    the visitor method is ``None``, the node will be removed from its location,
-    otherwise it is replaced with the return value.  The return value may be the
-    original node in which case no replacement takes place.
-
-    Here is an example transformer that rewrites all occurrences of name lookups
-    (``foo``) to ``data['foo']``::
-
-       class RewriteName(NodeTransformer):
-
-           def visit_Name(self, node):
-               return copy_location(Subscript(
-                   value=Name(id='data', ctx=Load()),
-                   slice=Index(value=Str(s=node.id)),
-                   ctx=node.ctx
-               ), node)
-
-    Keep in mind that if the node you're operating on has child nodes you must
-    either transform the child nodes yourself or call the :meth:`generic_visit`
-    method for the node first.
-
-    For nodes that were part of a collection of statements (that applies to all
-    statement nodes), the visitor may also return a list of nodes rather than
-    just a single node.
-
-    Usually you use the transformer like this::
-
-       node = YourTransformer().visit(node)
-    """
-
-    def generic_visit(self, node):
-        for field, old_value in iter_fields(node):
-            old_value = getattr(node, field, None)
-            if isinstance(old_value, list):
-                new_values = []
-                for value in old_value:
-                    if isinstance(value, AST):
-                        value = self.visit(value)
-                        if value is None:
-                            continue
-                        elif not isinstance(value, AST):
-                            new_values.extend(value)
-                            continue
-                    new_values.append(value)
-                old_value[:] = new_values
-            elif isinstance(old_value, AST):
-                new_node = self.visit(old_value)
-                if new_node is None:
-                    delattr(node, field)
-                else:
-                    setattr(node, field, new_node)
-        return node
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/asynchat.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/asynchat.py
deleted file mode 100644
index d1ad9b3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/asynchat.py
+++ /dev/null
@@ -1,314 +0,0 @@
-# -*- Mode: Python; tab-width: 4 -*-
-#       Id: asynchat.py,v 2.26 2000/09/07 22:29:26 rushing Exp
-#       Author: Sam Rushing <rushing@nightmare.com>
-
-# ======================================================================
-# Copyright 1996 by Sam Rushing
-#
-#                         All Rights Reserved
-#
-# Permission to use, copy, modify, and distribute this software and
-# its documentation for any purpose and without fee is hereby
-# granted, provided that the above copyright notice appear in all
-# copies and that both that copyright notice and this permission
-# notice appear in supporting documentation, and that the name of Sam
-# Rushing not be used in advertising or publicity pertaining to
-# distribution of the software without specific, written prior
-# permission.
-#
-# SAM RUSHING DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
-# NO EVENT SHALL SAM RUSHING BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
-# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
-# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# ======================================================================
-
-r"""A class supporting chat-style (command/response) protocols.
-
-This class adds support for 'chat' style protocols - where one side
-sends a 'command', and the other sends a response (examples would be
-the common internet protocols - smtp, nntp, ftp, etc..).
-
-The handle_read() method looks at the input stream for the current
-'terminator' (usually '\r\n' for single-line responses, '\r\n.\r\n'
-for multi-line output), calling self.found_terminator() on its
-receipt.
-
-for example:
-Say you build an async nntp client using this class.  At the start
-of the connection, you'll have self.terminator set to '\r\n', in
-order to process the single-line greeting.  Just before issuing a
-'LIST' command you'll set it to '\r\n.\r\n'.  The output of the LIST
-command will be accumulated (using your own 'collect_incoming_data'
-method) up to the terminator, and then control will be returned to
-you - by calling your self.found_terminator() method.
-"""
-
-import socket
-import asyncore
-from collections import deque
-from sys import py3kwarning
-from warnings import filterwarnings, catch_warnings
-
-class async_chat (asyncore.dispatcher):
-    """This is an abstract class.  You must derive from this class, and add
-    the two methods collect_incoming_data() and found_terminator()"""
-
-    # these are overridable defaults
-
-    ac_in_buffer_size       = 4096
-    ac_out_buffer_size      = 4096
-
-    def __init__ (self, sock=None, map=None):
-        # for string terminator matching
-        self.ac_in_buffer = ''
-
-        # we use a list here rather than cStringIO for a few reasons...
-        # del lst[:] is faster than sio.truncate(0)
-        # lst = [] is faster than sio.truncate(0)
-        # cStringIO will be gaining unicode support in py3k, which
-        # will negatively affect the performance of bytes compared to
-        # a ''.join() equivalent
-        self.incoming = []
-
-        # we toss the use of the "simple producer" and replace it with
-        # a pure deque, which the original fifo was a wrapping of
-        self.producer_fifo = deque()
-        asyncore.dispatcher.__init__ (self, sock, map)
-
-    def collect_incoming_data(self, data):
-        raise NotImplementedError("must be implemented in subclass")
-
-    def _collect_incoming_data(self, data):
-        self.incoming.append(data)
-
-    def _get_data(self):
-        d = ''.join(self.incoming)
-        del self.incoming[:]
-        return d
-
-    def found_terminator(self):
-        raise NotImplementedError("must be implemented in subclass")
-
-    def set_terminator (self, term):
-        "Set the input delimiter.  Can be a fixed string of any length, an integer, or None"
-        self.terminator = term
-
-    def get_terminator (self):
-        return self.terminator
-
-    # grab some more data from the socket,
-    # throw it to the collector method,
-    # check for the terminator,
-    # if found, transition to the next state.
-
-    def handle_read (self):
-
-        try:
-            data = self.recv (self.ac_in_buffer_size)
-        except socket.error, why:
-            self.handle_error()
-            return
-
-        self.ac_in_buffer = self.ac_in_buffer + data
-
-        # Continue to search for self.terminator in self.ac_in_buffer,
-        # while calling self.collect_incoming_data.  The while loop
-        # is necessary because we might read several data+terminator
-        # combos with a single recv(4096).
-
-        while self.ac_in_buffer:
-            lb = len(self.ac_in_buffer)
-            terminator = self.get_terminator()
-            if not terminator:
-                # no terminator, collect it all
-                self.collect_incoming_data (self.ac_in_buffer)
-                self.ac_in_buffer = ''
-            elif isinstance(terminator, int) or isinstance(terminator, long):
-                # numeric terminator
-                n = terminator
-                if lb < n:
-                    self.collect_incoming_data (self.ac_in_buffer)
-                    self.ac_in_buffer = ''
-                    self.terminator = self.terminator - lb
-                else:
-                    self.collect_incoming_data (self.ac_in_buffer[:n])
-                    self.ac_in_buffer = self.ac_in_buffer[n:]
-                    self.terminator = 0
-                    self.found_terminator()
-            else:
-                # 3 cases:
-                # 1) end of buffer matches terminator exactly:
-                #    collect data, transition
-                # 2) end of buffer matches some prefix:
-                #    collect data to the prefix
-                # 3) end of buffer does not match any prefix:
-                #    collect data
-                terminator_len = len(terminator)
-                index = self.ac_in_buffer.find(terminator)
-                if index != -1:
-                    # we found the terminator
-                    if index > 0:
-                        # don't bother reporting the empty string (source of subtle bugs)
-                        self.collect_incoming_data (self.ac_in_buffer[:index])
-                    self.ac_in_buffer = self.ac_in_buffer[index+terminator_len:]
-                    # This does the Right Thing if the terminator is changed here.
-                    self.found_terminator()
-                else:
-                    # check for a prefix of the terminator
-                    index = find_prefix_at_end (self.ac_in_buffer, terminator)
-                    if index:
-                        if index != lb:
-                            # we found a prefix, collect up to the prefix
-                            self.collect_incoming_data (self.ac_in_buffer[:-index])
-                            self.ac_in_buffer = self.ac_in_buffer[-index:]
-                        break
-                    else:
-                        # no prefix, collect it all
-                        self.collect_incoming_data (self.ac_in_buffer)
-                        self.ac_in_buffer = ''
-
-    def handle_write (self):
-        self.initiate_send()
-
-    def handle_close (self):
-        self.close()
-
-    def push (self, data):
-        sabs = self.ac_out_buffer_size
-        if len(data) > sabs:
-            for i in xrange(0, len(data), sabs):
-                self.producer_fifo.append(data[i:i+sabs])
-        else:
-            self.producer_fifo.append(data)
-        self.initiate_send()
-
-    def push_with_producer (self, producer):
-        self.producer_fifo.append(producer)
-        self.initiate_send()
-
-    def readable (self):
-        "predicate for inclusion in the readable for select()"
-        # cannot use the old predicate, it violates the claim of the
-        # set_terminator method.
-
-        # return (len(self.ac_in_buffer) <= self.ac_in_buffer_size)
-        return 1
-
-    def writable (self):
-        "predicate for inclusion in the writable for select()"
-        return self.producer_fifo or (not self.connected)
-
-    def close_when_done (self):
-        "automatically close this channel once the outgoing queue is empty"
-        self.producer_fifo.append(None)
-
-    def initiate_send(self):
-        while self.producer_fifo and self.connected:
-            first = self.producer_fifo[0]
-            # handle empty string/buffer or None entry
-            if not first:
-                del self.producer_fifo[0]
-                if first is None:
-                    self.handle_close()
-                    return
-
-            # handle classic producer behavior
-            obs = self.ac_out_buffer_size
-            try:
-                with catch_warnings():
-                    if py3kwarning:
-                        filterwarnings("ignore", ".*buffer", DeprecationWarning)
-                    data = buffer(first, 0, obs)
-            except TypeError:
-                data = first.more()
-                if data:
-                    self.producer_fifo.appendleft(data)
-                else:
-                    del self.producer_fifo[0]
-                continue
-
-            # send the data
-            try:
-                num_sent = self.send(data)
-            except socket.error:
-                self.handle_error()
-                return
-
-            if num_sent:
-                if num_sent < len(data) or obs < len(first):
-                    self.producer_fifo[0] = first[num_sent:]
-                else:
-                    del self.producer_fifo[0]
-            # we tried to send some actual data
-            return
-
-    def discard_buffers (self):
-        # Emergencies only!
-        self.ac_in_buffer = ''
-        del self.incoming[:]
-        self.producer_fifo.clear()
-
-class simple_producer:
-
-    def __init__ (self, data, buffer_size=512):
-        self.data = data
-        self.buffer_size = buffer_size
-
-    def more (self):
-        if len (self.data) > self.buffer_size:
-            result = self.data[:self.buffer_size]
-            self.data = self.data[self.buffer_size:]
-            return result
-        else:
-            result = self.data
-            self.data = ''
-            return result
-
-class fifo:
-    def __init__ (self, list=None):
-        if not list:
-            self.list = deque()
-        else:
-            self.list = deque(list)
-
-    def __len__ (self):
-        return len(self.list)
-
-    def is_empty (self):
-        return not self.list
-
-    def first (self):
-        return self.list[0]
-
-    def push (self, data):
-        self.list.append(data)
-
-    def pop (self):
-        if self.list:
-            return (1, self.list.popleft())
-        else:
-            return (0, None)
-
-# Given 'haystack', see if any prefix of 'needle' is at its end.  This
-# assumes an exact match has already been checked.  Return the number of
-# characters matched.
-# for example:
-# f_p_a_e ("qwerty\r", "\r\n") => 1
-# f_p_a_e ("qwertydkjf", "\r\n") => 0
-# f_p_a_e ("qwerty\r\n", "\r\n") => <undefined>
-
-# this could maybe be made faster with a computed regex?
-# [answer: no; circa Python-2.0, Jan 2001]
-# new python:   28961/s
-# old python:   18307/s
-# re:        12820/s
-# regex:     14035/s
-
-def find_prefix_at_end (haystack, needle):
-    l = len(needle) - 1
-    while l and not haystack.endswith(needle[:l]):
-        l -= 1
-    return l
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/asyncore.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/asyncore.py
deleted file mode 100644
index 6813140..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/asyncore.py
+++ /dev/null
@@ -1,655 +0,0 @@
-# -*- Mode: Python -*-
-#   Id: asyncore.py,v 2.51 2000/09/07 22:29:26 rushing Exp
-#   Author: Sam Rushing <rushing@nightmare.com>
-
-# ======================================================================
-# Copyright 1996 by Sam Rushing
-#
-#                         All Rights Reserved
-#
-# Permission to use, copy, modify, and distribute this software and
-# its documentation for any purpose and without fee is hereby
-# granted, provided that the above copyright notice appear in all
-# copies and that both that copyright notice and this permission
-# notice appear in supporting documentation, and that the name of Sam
-# Rushing not be used in advertising or publicity pertaining to
-# distribution of the software without specific, written prior
-# permission.
-#
-# SAM RUSHING DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
-# NO EVENT SHALL SAM RUSHING BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
-# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
-# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# ======================================================================
-
-"""Basic infrastructure for asynchronous socket service clients and servers.
-
-There are only two ways to have a program on a single processor do "more
-than one thing at a time".  Multi-threaded programming is the simplest and
-most popular way to do it, but there is another very different technique,
-that lets you have nearly all the advantages of multi-threading, without
-actually using multiple threads. it's really only practical if your program
-is largely I/O bound. If your program is CPU bound, then pre-emptive
-scheduled threads are probably what you really need. Network servers are
-rarely CPU-bound, however.
-
-If your operating system supports the select() system call in its I/O
-library (and nearly all do), then you can use it to juggle multiple
-communication channels at once; doing other work while your I/O is taking
-place in the "background."  Although this strategy can seem strange and
-complex, especially at first, it is in many ways easier to understand and
-control than multi-threaded programming. The module documented here solves
-many of the difficult problems for you, making the task of building
-sophisticated high-performance network servers and clients a snap.
-"""
-
-import select
-import socket
-import sys
-import time
-import warnings
-
-import os
-from errno import EALREADY, EINPROGRESS, EWOULDBLOCK, ECONNRESET, EINVAL, \
-     ENOTCONN, ESHUTDOWN, EINTR, EISCONN, EBADF, ECONNABORTED, EPIPE, EAGAIN, \
-     errorcode
-
-_DISCONNECTED = frozenset((ECONNRESET, ENOTCONN, ESHUTDOWN, ECONNABORTED, EPIPE,
-                           EBADF))
-
-try:
-    socket_map
-except NameError:
-    socket_map = {}
-
-def _strerror(err):
-    try:
-        return os.strerror(err)
-    except (ValueError, OverflowError, NameError):
-        if err in errorcode:
-            return errorcode[err]
-        return "Unknown error %s" %err
-
-class ExitNow(Exception):
-    pass
-
-_reraised_exceptions = (ExitNow, KeyboardInterrupt, SystemExit)
-
-def read(obj):
-    try:
-        obj.handle_read_event()
-    except _reraised_exceptions:
-        raise
-    except:
-        obj.handle_error()
-
-def write(obj):
-    try:
-        obj.handle_write_event()
-    except _reraised_exceptions:
-        raise
-    except:
-        obj.handle_error()
-
-def _exception(obj):
-    try:
-        obj.handle_expt_event()
-    except _reraised_exceptions:
-        raise
-    except:
-        obj.handle_error()
-
-def readwrite(obj, flags):
-    try:
-        if flags & select.POLLIN:
-            obj.handle_read_event()
-        if flags & select.POLLOUT:
-            obj.handle_write_event()
-        if flags & select.POLLPRI:
-            obj.handle_expt_event()
-        if flags & (select.POLLHUP | select.POLLERR | select.POLLNVAL):
-            obj.handle_close()
-    except socket.error, e:
-        if e.args[0] not in _DISCONNECTED:
-            obj.handle_error()
-        else:
-            obj.handle_close()
-    except _reraised_exceptions:
-        raise
-    except:
-        obj.handle_error()
-
-def poll(timeout=0.0, map=None):
-    if map is None:
-        map = socket_map
-    if map:
-        r = []; w = []; e = []
-        for fd, obj in map.items():
-            is_r = obj.readable()
-            is_w = obj.writable()
-            if is_r:
-                r.append(fd)
-            if is_w:
-                w.append(fd)
-            if is_r or is_w:
-                e.append(fd)
-        if [] == r == w == e:
-            time.sleep(timeout)
-            return
-
-        try:
-            r, w, e = select.select(r, w, e, timeout)
-        except select.error, err:
-            if err.args[0] != EINTR:
-                raise
-            else:
-                return
-
-        for fd in r:
-            obj = map.get(fd)
-            if obj is None:
-                continue
-            read(obj)
-
-        for fd in w:
-            obj = map.get(fd)
-            if obj is None:
-                continue
-            write(obj)
-
-        for fd in e:
-            obj = map.get(fd)
-            if obj is None:
-                continue
-            _exception(obj)
-
-def poll2(timeout=0.0, map=None):
-    # Use the poll() support added to the select module in Python 2.0
-    if map is None:
-        map = socket_map
-    if timeout is not None:
-        # timeout is in milliseconds
-        timeout = int(timeout*1000)
-    pollster = select.poll()
-    if map:
-        for fd, obj in map.items():
-            flags = 0
-            if obj.readable():
-                flags |= select.POLLIN | select.POLLPRI
-            if obj.writable():
-                flags |= select.POLLOUT
-            if flags:
-                # Only check for exceptions if object was either readable
-                # or writable.
-                flags |= select.POLLERR | select.POLLHUP | select.POLLNVAL
-                pollster.register(fd, flags)
-        try:
-            r = pollster.poll(timeout)
-        except select.error, err:
-            if err.args[0] != EINTR:
-                raise
-            r = []
-        for fd, flags in r:
-            obj = map.get(fd)
-            if obj is None:
-                continue
-            readwrite(obj, flags)
-
-poll3 = poll2                           # Alias for backward compatibility
-
-def loop(timeout=30.0, use_poll=False, map=None, count=None):
-    if map is None:
-        map = socket_map
-
-    if use_poll and hasattr(select, 'poll'):
-        poll_fun = poll2
-    else:
-        poll_fun = poll
-
-    if count is None:
-        while map:
-            poll_fun(timeout, map)
-
-    else:
-        while map and count > 0:
-            poll_fun(timeout, map)
-            count = count - 1
-
-class dispatcher:
-
-    debug = False
-    connected = False
-    accepting = False
-    closing = False
-    addr = None
-    ignore_log_types = frozenset(['warning'])
-
-    def __init__(self, sock=None, map=None):
-        if map is None:
-            self._map = socket_map
-        else:
-            self._map = map
-
-        self._fileno = None
-
-        if sock:
-            # Set to nonblocking just to make sure for cases where we
-            # get a socket from a blocking source.
-            sock.setblocking(0)
-            self.set_socket(sock, map)
-            self.connected = True
-            # The constructor no longer requires that the socket
-            # passed be connected.
-            try:
-                self.addr = sock.getpeername()
-            except socket.error, err:
-                if err.args[0] == ENOTCONN:
-                    # To handle the case where we got an unconnected
-                    # socket.
-                    self.connected = False
-                else:
-                    # The socket is broken in some unknown way, alert
-                    # the user and remove it from the map (to prevent
-                    # polling of broken sockets).
-                    self.del_channel(map)
-                    raise
-        else:
-            self.socket = None
-
-    def __repr__(self):
-        status = [self.__class__.__module__+"."+self.__class__.__name__]
-        if self.accepting and self.addr:
-            status.append('listening')
-        elif self.connected:
-            status.append('connected')
-        if self.addr is not None:
-            try:
-                status.append('%s:%d' % self.addr)
-            except TypeError:
-                status.append(repr(self.addr))
-        return '<%s at %#x>' % (' '.join(status), id(self))
-
-    __str__ = __repr__
-
-    def add_channel(self, map=None):
-        #self.log_info('adding channel %s' % self)
-        if map is None:
-            map = self._map
-        map[self._fileno] = self
-
-    def del_channel(self, map=None):
-        fd = self._fileno
-        if map is None:
-            map = self._map
-        if fd in map:
-            #self.log_info('closing channel %d:%s' % (fd, self))
-            del map[fd]
-        self._fileno = None
-
-    def create_socket(self, family, type):
-        self.family_and_type = family, type
-        sock = socket.socket(family, type)
-        sock.setblocking(0)
-        self.set_socket(sock)
-
-    def set_socket(self, sock, map=None):
-        self.socket = sock
-##        self.__dict__['socket'] = sock
-        self._fileno = sock.fileno()
-        self.add_channel(map)
-
-    def set_reuse_addr(self):
-        # try to re-use a server port if possible
-        try:
-            self.socket.setsockopt(
-                socket.SOL_SOCKET, socket.SO_REUSEADDR,
-                self.socket.getsockopt(socket.SOL_SOCKET,
-                                       socket.SO_REUSEADDR) | 1
-                )
-        except socket.error:
-            pass
-
-    # ==================================================
-    # predicates for select()
-    # these are used as filters for the lists of sockets
-    # to pass to select().
-    # ==================================================
-
-    def readable(self):
-        return True
-
-    def writable(self):
-        return True
-
-    # ==================================================
-    # socket object methods.
-    # ==================================================
-
-    def listen(self, num):
-        self.accepting = True
-        if os.name == 'nt' and num > 5:
-            num = 5
-        return self.socket.listen(num)
-
-    def bind(self, addr):
-        self.addr = addr
-        return self.socket.bind(addr)
-
-    def connect(self, address):
-        self.connected = False
-        err = self.socket.connect_ex(address)
-        if err in (EINPROGRESS, EALREADY, EWOULDBLOCK) \
-        or err == EINVAL and os.name in ('nt', 'ce'):
-            return
-        if err in (0, EISCONN):
-            self.addr = address
-            self.handle_connect_event()
-        else:
-            raise socket.error(err, errorcode[err])
-
-    def accept(self):
-        # XXX can return either an address pair or None
-        try:
-            conn, addr = self.socket.accept()
-        except TypeError:
-            return None
-        except socket.error as why:
-            if why.args[0] in (EWOULDBLOCK, ECONNABORTED, EAGAIN):
-                return None
-            else:
-                raise
-        else:
-            return conn, addr
-
-    def send(self, data):
-        try:
-            result = self.socket.send(data)
-            return result
-        except socket.error, why:
-            if why.args[0] == EWOULDBLOCK:
-                return 0
-            elif why.args[0] in _DISCONNECTED:
-                self.handle_close()
-                return 0
-            else:
-                raise
-
-    def recv(self, buffer_size):
-        try:
-            data = self.socket.recv(buffer_size)
-            if not data:
-                # a closed connection is indicated by signaling
-                # a read condition, and having recv() return 0.
-                self.handle_close()
-                return ''
-            else:
-                return data
-        except socket.error, why:
-            # winsock sometimes throws ENOTCONN
-            if why.args[0] in _DISCONNECTED:
-                self.handle_close()
-                return ''
-            else:
-                raise
-
-    def close(self):
-        self.connected = False
-        self.accepting = False
-        self.del_channel()
-        try:
-            self.socket.close()
-        except socket.error, why:
-            if why.args[0] not in (ENOTCONN, EBADF):
-                raise
-
-    # cheap inheritance, used to pass all other attribute
-    # references to the underlying socket object.
-    def __getattr__(self, attr):
-        try:
-            retattr = getattr(self.socket, attr)
-        except AttributeError:
-            raise AttributeError("%s instance has no attribute '%s'"
-                                 %(self.__class__.__name__, attr))
-        else:
-            msg = "%(me)s.%(attr)s is deprecated. Use %(me)s.socket.%(attr)s " \
-                  "instead." % {'me': self.__class__.__name__, 'attr':attr}
-            warnings.warn(msg, DeprecationWarning, stacklevel=2)
-            return retattr
-
-    # log and log_info may be overridden to provide more sophisticated
-    # logging and warning methods. In general, log is for 'hit' logging
-    # and 'log_info' is for informational, warning and error logging.
-
-    def log(self, message):
-        sys.stderr.write('log: %s\n' % str(message))
-
-    def log_info(self, message, type='info'):
-        if type not in self.ignore_log_types:
-            print '%s: %s' % (type, message)
-
-    def handle_read_event(self):
-        if self.accepting:
-            # accepting sockets are never connected, they "spawn" new
-            # sockets that are connected
-            self.handle_accept()
-        elif not self.connected:
-            self.handle_connect_event()
-            self.handle_read()
-        else:
-            self.handle_read()
-
-    def handle_connect_event(self):
-        err = self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)
-        if err != 0:
-            raise socket.error(err, _strerror(err))
-        self.handle_connect()
-        self.connected = True
-
-    def handle_write_event(self):
-        if self.accepting:
-            # Accepting sockets shouldn't get a write event.
-            # We will pretend it didn't happen.
-            return
-
-        if not self.connected:
-            #check for errors
-            err = self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)
-            if err != 0:
-                raise socket.error(err, _strerror(err))
-
-            self.handle_connect_event()
-        self.handle_write()
-
-    def handle_expt_event(self):
-        # handle_expt_event() is called if there might be an error on the
-        # socket, or if there is OOB data
-        # check for the error condition first
-        err = self.socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)
-        if err != 0:
-            # we can get here when select.select() says that there is an
-            # exceptional condition on the socket
-            # since there is an error, we'll go ahead and close the socket
-            # like we would in a subclassed handle_read() that received no
-            # data
-            self.handle_close()
-        else:
-            self.handle_expt()
-
-    def handle_error(self):
-        nil, t, v, tbinfo = compact_traceback()
-
-        # sometimes a user repr method will crash.
-        try:
-            self_repr = repr(self)
-        except:
-            self_repr = '<__repr__(self) failed for object at %0x>' % id(self)
-
-        self.log_info(
-            'uncaptured python exception, closing channel %s (%s:%s %s)' % (
-                self_repr,
-                t,
-                v,
-                tbinfo
-                ),
-            'error'
-            )
-        self.handle_close()
-
-    def handle_expt(self):
-        self.log_info('unhandled incoming priority event', 'warning')
-
-    def handle_read(self):
-        self.log_info('unhandled read event', 'warning')
-
-    def handle_write(self):
-        self.log_info('unhandled write event', 'warning')
-
-    def handle_connect(self):
-        self.log_info('unhandled connect event', 'warning')
-
-    def handle_accept(self):
-        self.log_info('unhandled accept event', 'warning')
-
-    def handle_close(self):
-        self.log_info('unhandled close event', 'warning')
-        self.close()
-
-# ---------------------------------------------------------------------------
-# adds simple buffered output capability, useful for simple clients.
-# [for more sophisticated usage use asynchat.async_chat]
-# ---------------------------------------------------------------------------
-
-class dispatcher_with_send(dispatcher):
-
-    def __init__(self, sock=None, map=None):
-        dispatcher.__init__(self, sock, map)
-        self.out_buffer = ''
-
-    def initiate_send(self):
-        num_sent = 0
-        num_sent = dispatcher.send(self, self.out_buffer[:512])
-        self.out_buffer = self.out_buffer[num_sent:]
-
-    def handle_write(self):
-        self.initiate_send()
-
-    def writable(self):
-        return (not self.connected) or len(self.out_buffer)
-
-    def send(self, data):
-        if self.debug:
-            self.log_info('sending %s' % repr(data))
-        self.out_buffer = self.out_buffer + data
-        self.initiate_send()
-
-# ---------------------------------------------------------------------------
-# used for debugging.
-# ---------------------------------------------------------------------------
-
-def compact_traceback():
-    t, v, tb = sys.exc_info()
-    tbinfo = []
-    if not tb: # Must have a traceback
-        raise AssertionError("traceback does not exist")
-    while tb:
-        tbinfo.append((
-            tb.tb_frame.f_code.co_filename,
-            tb.tb_frame.f_code.co_name,
-            str(tb.tb_lineno)
-            ))
-        tb = tb.tb_next
-
-    # just to be safe
-    del tb
-
-    file, function, line = tbinfo[-1]
-    info = ' '.join(['[%s|%s|%s]' % x for x in tbinfo])
-    return (file, function, line), t, v, info
-
-def close_all(map=None, ignore_all=False):
-    if map is None:
-        map = socket_map
-    for x in map.values():
-        try:
-            x.close()
-        except OSError, x:
-            if x.args[0] == EBADF:
-                pass
-            elif not ignore_all:
-                raise
-        except _reraised_exceptions:
-            raise
-        except:
-            if not ignore_all:
-                raise
-    map.clear()
-
-# Asynchronous File I/O:
-#
-# After a little research (reading man pages on various unixen, and
-# digging through the linux kernel), I've determined that select()
-# isn't meant for doing asynchronous file i/o.
-# Heartening, though - reading linux/mm/filemap.c shows that linux
-# supports asynchronous read-ahead.  So _MOST_ of the time, the data
-# will be sitting in memory for us already when we go to read it.
-#
-# What other OS's (besides NT) support async file i/o?  [VMS?]
-#
-# Regardless, this is useful for pipes, and stdin/stdout...
-
-if os.name == 'posix':
-    import fcntl
-
-    class file_wrapper:
-        # Here we override just enough to make a file
-        # look like a socket for the purposes of asyncore.
-        # The passed fd is automatically os.dup()'d
-
-        def __init__(self, fd):
-            self.fd = os.dup(fd)
-
-        def recv(self, *args):
-            return os.read(self.fd, *args)
-
-        def send(self, *args):
-            return os.write(self.fd, *args)
-
-        def getsockopt(self, level, optname, buflen=None):
-            if (level == socket.SOL_SOCKET and
-                optname == socket.SO_ERROR and
-                not buflen):
-                return 0
-            raise NotImplementedError("Only asyncore specific behaviour "
-                                      "implemented.")
-
-        read = recv
-        write = send
-
-        def close(self):
-            os.close(self.fd)
-
-        def fileno(self):
-            return self.fd
-
-    class file_dispatcher(dispatcher):
-
-        def __init__(self, fd, map=None):
-            dispatcher.__init__(self, None, map)
-            self.connected = True
-            try:
-                fd = fd.fileno()
-            except AttributeError:
-                pass
-            self.set_file(fd)
-            # set it to non-blocking mode
-            flags = fcntl.fcntl(fd, fcntl.F_GETFL, 0)
-            flags = flags | os.O_NONBLOCK
-            fcntl.fcntl(fd, fcntl.F_SETFL, flags)
-
-        def set_file(self, fd):
-            self.socket = file_wrapper(fd)
-            self._fileno = self.socket.fileno()
-            self.add_channel()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/atexit.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/atexit.py
deleted file mode 100644
index 6c2769c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/atexit.py
+++ /dev/null
@@ -1,65 +0,0 @@
-"""
-atexit.py - allow programmer to define multiple exit functions to be executed
-upon normal program termination.
-
-One public function, register, is defined.
-"""
-
-__all__ = ["register"]
-
-import sys
-
-_exithandlers = []
-def _run_exitfuncs():
-    """run any registered exit functions
-
-    _exithandlers is traversed in reverse order so functions are executed
-    last in, first out.
-    """
-
-    exc_info = None
-    while _exithandlers:
-        func, targs, kargs = _exithandlers.pop()
-        try:
-            func(*targs, **kargs)
-        except SystemExit:
-            exc_info = sys.exc_info()
-        except:
-            import traceback
-            print >> sys.stderr, "Error in atexit._run_exitfuncs:"
-            traceback.print_exc()
-            exc_info = sys.exc_info()
-
-    if exc_info is not None:
-        raise exc_info[0], exc_info[1], exc_info[2]
-
-
-def register(func, *targs, **kargs):
-    """register a function to be executed upon normal program termination
-
-    func - function to be called at exit
-    targs - optional arguments to pass to func
-    kargs - optional keyword arguments to pass to func
-
-    func is returned to facilitate usage as a decorator.
-    """
-    _exithandlers.append((func, targs, kargs))
-    return func
-
-if hasattr(sys, "exitfunc"):
-    # Assume it's another registered exit function - append it to our list
-    register(sys.exitfunc)
-sys.exitfunc = _run_exitfuncs
-
-if __name__ == "__main__":
-    def x1():
-        print "running x1"
-    def x2(n):
-        print "running x2(%r)" % (n,)
-    def x3(n, kwd=None):
-        print "running x3(%r, kwd=%r)" % (n, kwd)
-
-    register(x1)
-    register(x2, 12)
-    register(x3, 5, "bar")
-    register(x3, "no kwd args")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/base64.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/base64.py
deleted file mode 100644
index 5728049..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/base64.py
+++ /dev/null
@@ -1,360 +0,0 @@
-#! /usr/bin/env python
-
-"""RFC 3548: Base16, Base32, Base64 Data Encodings"""
-
-# Modified 04-Oct-1995 by Jack Jansen to use binascii module
-# Modified 30-Dec-2003 by Barry Warsaw to add full RFC 3548 support
-
-import re
-import struct
-import binascii
-
-
-__all__ = [
-    # Legacy interface exports traditional RFC 1521 Base64 encodings
-    'encode', 'decode', 'encodestring', 'decodestring',
-    # Generalized interface for other encodings
-    'b64encode', 'b64decode', 'b32encode', 'b32decode',
-    'b16encode', 'b16decode',
-    # Standard Base64 encoding
-    'standard_b64encode', 'standard_b64decode',
-    # Some common Base64 alternatives.  As referenced by RFC 3458, see thread
-    # starting at:
-    #
-    # http://zgp.org/pipermail/p2p-hackers/2001-September/000316.html
-    'urlsafe_b64encode', 'urlsafe_b64decode',
-    ]
-
-_translation = [chr(_x) for _x in range(256)]
-EMPTYSTRING = ''
-
-
-def _translate(s, altchars):
-    translation = _translation[:]
-    for k, v in altchars.items():
-        translation[ord(k)] = v
-    return s.translate(''.join(translation))
-
-
-\f
-# Base64 encoding/decoding uses binascii
-
-def b64encode(s, altchars=None):
-    """Encode a string using Base64.
-
-    s is the string to encode.  Optional altchars must be a string of at least
-    length 2 (additional characters are ignored) which specifies an
-    alternative alphabet for the '+' and '/' characters.  This allows an
-    application to e.g. generate url or filesystem safe Base64 strings.
-
-    The encoded string is returned.
-    """
-    # Strip off the trailing newline
-    encoded = binascii.b2a_base64(s)[:-1]
-    if altchars is not None:
-        return _translate(encoded, {'+': altchars[0], '/': altchars[1]})
-    return encoded
-
-
-def b64decode(s, altchars=None):
-    """Decode a Base64 encoded string.
-
-    s is the string to decode.  Optional altchars must be a string of at least
-    length 2 (additional characters are ignored) which specifies the
-    alternative alphabet used instead of the '+' and '/' characters.
-
-    The decoded string is returned.  A TypeError is raised if s were
-    incorrectly padded or if there are non-alphabet characters present in the
-    string.
-    """
-    if altchars is not None:
-        s = _translate(s, {altchars[0]: '+', altchars[1]: '/'})
-    try:
-        return binascii.a2b_base64(s)
-    except binascii.Error, msg:
-        # Transform this exception for consistency
-        raise TypeError(msg)
-
-
-def standard_b64encode(s):
-    """Encode a string using the standard Base64 alphabet.
-
-    s is the string to encode.  The encoded string is returned.
-    """
-    return b64encode(s)
-
-def standard_b64decode(s):
-    """Decode a string encoded with the standard Base64 alphabet.
-
-    s is the string to decode.  The decoded string is returned.  A TypeError
-    is raised if the string is incorrectly padded or if there are non-alphabet
-    characters present in the string.
-    """
-    return b64decode(s)
-
-def urlsafe_b64encode(s):
-    """Encode a string using a url-safe Base64 alphabet.
-
-    s is the string to encode.  The encoded string is returned.  The alphabet
-    uses '-' instead of '+' and '_' instead of '/'.
-    """
-    return b64encode(s, '-_')
-
-def urlsafe_b64decode(s):
-    """Decode a string encoded with the standard Base64 alphabet.
-
-    s is the string to decode.  The decoded string is returned.  A TypeError
-    is raised if the string is incorrectly padded or if there are non-alphabet
-    characters present in the string.
-
-    The alphabet uses '-' instead of '+' and '_' instead of '/'.
-    """
-    return b64decode(s, '-_')
-
-
-\f
-# Base32 encoding/decoding must be done in Python
-_b32alphabet = {
-    0: 'A',  9: 'J', 18: 'S', 27: '3',
-    1: 'B', 10: 'K', 19: 'T', 28: '4',
-    2: 'C', 11: 'L', 20: 'U', 29: '5',
-    3: 'D', 12: 'M', 21: 'V', 30: '6',
-    4: 'E', 13: 'N', 22: 'W', 31: '7',
-    5: 'F', 14: 'O', 23: 'X',
-    6: 'G', 15: 'P', 24: 'Y',
-    7: 'H', 16: 'Q', 25: 'Z',
-    8: 'I', 17: 'R', 26: '2',
-    }
-
-_b32tab = _b32alphabet.items()
-_b32tab.sort()
-_b32tab = [v for k, v in _b32tab]
-_b32rev = dict([(v, long(k)) for k, v in _b32alphabet.items()])
-
-
-def b32encode(s):
-    """Encode a string using Base32.
-
-    s is the string to encode.  The encoded string is returned.
-    """
-    parts = []
-    quanta, leftover = divmod(len(s), 5)
-    # Pad the last quantum with zero bits if necessary
-    if leftover:
-        s += ('\0' * (5 - leftover))
-        quanta += 1
-    for i in range(quanta):
-        # c1 and c2 are 16 bits wide, c3 is 8 bits wide.  The intent of this
-        # code is to process the 40 bits in units of 5 bits.  So we take the 1
-        # leftover bit of c1 and tack it onto c2.  Then we take the 2 leftover
-        # bits of c2 and tack them onto c3.  The shifts and masks are intended
-        # to give us values of exactly 5 bits in width.
-        c1, c2, c3 = struct.unpack('!HHB', s[i*5:(i+1)*5])
-        c2 += (c1 & 1) << 16 # 17 bits wide
-        c3 += (c2 & 3) << 8  # 10 bits wide
-        parts.extend([_b32tab[c1 >> 11],         # bits 1 - 5
-                      _b32tab[(c1 >> 6) & 0x1f], # bits 6 - 10
-                      _b32tab[(c1 >> 1) & 0x1f], # bits 11 - 15
-                      _b32tab[c2 >> 12],         # bits 16 - 20 (1 - 5)
-                      _b32tab[(c2 >> 7) & 0x1f], # bits 21 - 25 (6 - 10)
-                      _b32tab[(c2 >> 2) & 0x1f], # bits 26 - 30 (11 - 15)
-                      _b32tab[c3 >> 5],          # bits 31 - 35 (1 - 5)
-                      _b32tab[c3 & 0x1f],        # bits 36 - 40 (1 - 5)
-                      ])
-    encoded = EMPTYSTRING.join(parts)
-    # Adjust for any leftover partial quanta
-    if leftover == 1:
-        return encoded[:-6] + '======'
-    elif leftover == 2:
-        return encoded[:-4] + '===='
-    elif leftover == 3:
-        return encoded[:-3] + '==='
-    elif leftover == 4:
-        return encoded[:-1] + '='
-    return encoded
-
-
-def b32decode(s, casefold=False, map01=None):
-    """Decode a Base32 encoded string.
-
-    s is the string to decode.  Optional casefold is a flag specifying whether
-    a lowercase alphabet is acceptable as input.  For security purposes, the
-    default is False.
-
-    RFC 3548 allows for optional mapping of the digit 0 (zero) to the letter O
-    (oh), and for optional mapping of the digit 1 (one) to either the letter I
-    (eye) or letter L (el).  The optional argument map01 when not None,
-    specifies which letter the digit 1 should be mapped to (when map01 is not
-    None, the digit 0 is always mapped to the letter O).  For security
-    purposes the default is None, so that 0 and 1 are not allowed in the
-    input.
-
-    The decoded string is returned.  A TypeError is raised if s were
-    incorrectly padded or if there are non-alphabet characters present in the
-    string.
-    """
-    quanta, leftover = divmod(len(s), 8)
-    if leftover:
-        raise TypeError('Incorrect padding')
-    # Handle section 2.4 zero and one mapping.  The flag map01 will be either
-    # False, or the character to map the digit 1 (one) to.  It should be
-    # either L (el) or I (eye).
-    if map01:
-        s = _translate(s, {'0': 'O', '1': map01})
-    if casefold:
-        s = s.upper()
-    # Strip off pad characters from the right.  We need to count the pad
-    # characters because this will tell us how many null bytes to remove from
-    # the end of the decoded string.
-    padchars = 0
-    mo = re.search('(?P<pad>[=]*)$', s)
-    if mo:
-        padchars = len(mo.group('pad'))
-        if padchars > 0:
-            s = s[:-padchars]
-    # Now decode the full quanta
-    parts = []
-    acc = 0
-    shift = 35
-    for c in s:
-        val = _b32rev.get(c)
-        if val is None:
-            raise TypeError('Non-base32 digit found')
-        acc += _b32rev[c] << shift
-        shift -= 5
-        if shift < 0:
-            parts.append(binascii.unhexlify('%010x' % acc))
-            acc = 0
-            shift = 35
-    # Process the last, partial quanta
-    last = binascii.unhexlify('%010x' % acc)
-    if padchars == 0:
-        last = ''                       # No characters
-    elif padchars == 1:
-        last = last[:-1]
-    elif padchars == 3:
-        last = last[:-2]
-    elif padchars == 4:
-        last = last[:-3]
-    elif padchars == 6:
-        last = last[:-4]
-    else:
-        raise TypeError('Incorrect padding')
-    parts.append(last)
-    return EMPTYSTRING.join(parts)
-
-
-\f
-# RFC 3548, Base 16 Alphabet specifies uppercase, but hexlify() returns
-# lowercase.  The RFC also recommends against accepting input case
-# insensitively.
-def b16encode(s):
-    """Encode a string using Base16.
-
-    s is the string to encode.  The encoded string is returned.
-    """
-    return binascii.hexlify(s).upper()
-
-
-def b16decode(s, casefold=False):
-    """Decode a Base16 encoded string.
-
-    s is the string to decode.  Optional casefold is a flag specifying whether
-    a lowercase alphabet is acceptable as input.  For security purposes, the
-    default is False.
-
-    The decoded string is returned.  A TypeError is raised if s were
-    incorrectly padded or if there are non-alphabet characters present in the
-    string.
-    """
-    if casefold:
-        s = s.upper()
-    if re.search('[^0-9A-F]', s):
-        raise TypeError('Non-base16 digit found')
-    return binascii.unhexlify(s)
-
-
-\f
-# Legacy interface.  This code could be cleaned up since I don't believe
-# binascii has any line length limitations.  It just doesn't seem worth it
-# though.
-
-MAXLINESIZE = 76 # Excluding the CRLF
-MAXBINSIZE = (MAXLINESIZE//4)*3
-
-def encode(input, output):
-    """Encode a file."""
-    while True:
-        s = input.read(MAXBINSIZE)
-        if not s:
-            break
-        while len(s) < MAXBINSIZE:
-            ns = input.read(MAXBINSIZE-len(s))
-            if not ns:
-                break
-            s += ns
-        line = binascii.b2a_base64(s)
-        output.write(line)
-
-
-def decode(input, output):
-    """Decode a file."""
-    while True:
-        line = input.readline()
-        if not line:
-            break
-        s = binascii.a2b_base64(line)
-        output.write(s)
-
-
-def encodestring(s):
-    """Encode a string into multiple lines of base-64 data."""
-    pieces = []
-    for i in range(0, len(s), MAXBINSIZE):
-        chunk = s[i : i + MAXBINSIZE]
-        pieces.append(binascii.b2a_base64(chunk))
-    return "".join(pieces)
-
-
-def decodestring(s):
-    """Decode a string."""
-    return binascii.a2b_base64(s)
-
-
-\f
-# Useable as a script...
-def test():
-    """Small test program"""
-    import sys, getopt
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'deut')
-    except getopt.error, msg:
-        sys.stdout = sys.stderr
-        print msg
-        print """usage: %s [-d|-e|-u|-t] [file|-]
-        -d, -u: decode
-        -e: encode (default)
-        -t: encode and decode string 'Aladdin:open sesame'"""%sys.argv[0]
-        sys.exit(2)
-    func = encode
-    for o, a in opts:
-        if o == '-e': func = encode
-        if o == '-d': func = decode
-        if o == '-u': func = decode
-        if o == '-t': test1(); return
-    if args and args[0] != '-':
-        with open(args[0], 'rb') as f:
-            func(f, sys.stdout)
-    else:
-        func(sys.stdin, sys.stdout)
-
-
-def test1():
-    s0 = "Aladdin:open sesame"
-    s1 = encodestring(s0)
-    s2 = decodestring(s1)
-    print s0, repr(s1), s2
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/bdb.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/bdb.py
deleted file mode 100644
index 49c839f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/bdb.py
+++ /dev/null
@@ -1,632 +0,0 @@
-"""Debugger basics"""
-
-import fnmatch
-import sys
-import os
-import types
-
-__all__ = ["BdbQuit","Bdb","Breakpoint"]
-
-class BdbQuit(Exception):
-    """Exception to give up completely"""
-
-
-class Bdb:
-
-    """Generic Python debugger base class.
-
-    This class takes care of details of the trace facility;
-    a derived class should implement user interaction.
-    The standard debugger class (pdb.Pdb) is an example.
-    """
-
-    def __init__(self, skip=None):
-        self.skip = set(skip) if skip else None
-        self.breaks = {}
-        self.fncache = {}
-
-    def canonic(self, filename):
-        if filename == "<" + filename[1:-1] + ">":
-            return filename
-        canonic = self.fncache.get(filename)
-        if not canonic:
-            canonic = os.path.abspath(filename)
-            canonic = os.path.normcase(canonic)
-            self.fncache[filename] = canonic
-        return canonic
-
-    def reset(self):
-        import linecache
-        linecache.checkcache()
-        self.botframe = None
-        self._set_stopinfo(None, None)
-
-    def trace_dispatch(self, frame, event, arg):
-        if self.quitting:
-            return # None
-        if event == 'line':
-            return self.dispatch_line(frame)
-        if event == 'call':
-            return self.dispatch_call(frame, arg)
-        if event == 'return':
-            return self.dispatch_return(frame, arg)
-        if event == 'exception':
-            return self.dispatch_exception(frame, arg)
-        if event == 'c_call':
-            return self.trace_dispatch
-        if event == 'c_exception':
-            return self.trace_dispatch
-        if event == 'c_return':
-            return self.trace_dispatch
-        print 'bdb.Bdb.dispatch: unknown debugging event:', repr(event)
-        return self.trace_dispatch
-
-    def dispatch_line(self, frame):
-        if self.stop_here(frame) or self.break_here(frame):
-            self.user_line(frame)
-            if self.quitting: raise BdbQuit
-        return self.trace_dispatch
-
-    def dispatch_call(self, frame, arg):
-        # XXX 'arg' is no longer used
-        if self.botframe is None:
-            # First call of dispatch since reset()
-            self.botframe = frame.f_back # (CT) Note that this may also be None!
-            return self.trace_dispatch
-        if not (self.stop_here(frame) or self.break_anywhere(frame)):
-            # No need to trace this function
-            return # None
-        self.user_call(frame, arg)
-        if self.quitting: raise BdbQuit
-        return self.trace_dispatch
-
-    def dispatch_return(self, frame, arg):
-        if self.stop_here(frame) or frame == self.returnframe:
-            self.user_return(frame, arg)
-            if self.quitting: raise BdbQuit
-        return self.trace_dispatch
-
-    def dispatch_exception(self, frame, arg):
-        if self.stop_here(frame):
-            self.user_exception(frame, arg)
-            if self.quitting: raise BdbQuit
-        return self.trace_dispatch
-
-    # Normally derived classes don't override the following
-    # methods, but they may if they want to redefine the
-    # definition of stopping and breakpoints.
-
-    def is_skipped_module(self, module_name):
-        for pattern in self.skip:
-            if fnmatch.fnmatch(module_name, pattern):
-                return True
-        return False
-
-    def stop_here(self, frame):
-        # (CT) stopframe may now also be None, see dispatch_call.
-        # (CT) the former test for None is therefore removed from here.
-        if self.skip and \
-               self.is_skipped_module(frame.f_globals.get('__name__')):
-            return False
-        if frame is self.stopframe:
-            if self.stoplineno == -1:
-                return False
-            return frame.f_lineno >= self.stoplineno
-        while frame is not None and frame is not self.stopframe:
-            if frame is self.botframe:
-                return True
-            frame = frame.f_back
-        return False
-
-    def break_here(self, frame):
-        filename = self.canonic(frame.f_code.co_filename)
-        if not filename in self.breaks:
-            return False
-        lineno = frame.f_lineno
-        if not lineno in self.breaks[filename]:
-            # The line itself has no breakpoint, but maybe the line is the
-            # first line of a function with breakpoint set by function name.
-            lineno = frame.f_code.co_firstlineno
-            if not lineno in self.breaks[filename]:
-                return False
-
-        # flag says ok to delete temp. bp
-        (bp, flag) = effective(filename, lineno, frame)
-        if bp:
-            self.currentbp = bp.number
-            if (flag and bp.temporary):
-                self.do_clear(str(bp.number))
-            return True
-        else:
-            return False
-
-    def do_clear(self, arg):
-        raise NotImplementedError, "subclass of bdb must implement do_clear()"
-
-    def break_anywhere(self, frame):
-        return self.canonic(frame.f_code.co_filename) in self.breaks
-
-    # Derived classes should override the user_* methods
-    # to gain control.
-
-    def user_call(self, frame, argument_list):
-        """This method is called when there is the remote possibility
-        that we ever need to stop in this function."""
-        pass
-
-    def user_line(self, frame):
-        """This method is called when we stop or break at this line."""
-        pass
-
-    def user_return(self, frame, return_value):
-        """This method is called when a return trap is set here."""
-        pass
-
-    def user_exception(self, frame, exc_info):
-        exc_type, exc_value, exc_traceback = exc_info
-        """This method is called if an exception occurs,
-        but only if we are to stop at or just below this level."""
-        pass
-
-    def _set_stopinfo(self, stopframe, returnframe, stoplineno=0):
-        self.stopframe = stopframe
-        self.returnframe = returnframe
-        self.quitting = 0
-        # stoplineno >= 0 means: stop at line >= the stoplineno
-        # stoplineno -1 means: don't stop at all
-        self.stoplineno = stoplineno
-
-    # Derived classes and clients can call the following methods
-    # to affect the stepping state.
-
-    def set_until(self, frame): #the name "until" is borrowed from gdb
-        """Stop when the line with the line no greater than the current one is
-        reached or when returning from current frame"""
-        self._set_stopinfo(frame, frame, frame.f_lineno+1)
-
-    def set_step(self):
-        """Stop after one line of code."""
-        self._set_stopinfo(None, None)
-
-    def set_next(self, frame):
-        """Stop on the next line in or below the given frame."""
-        self._set_stopinfo(frame, None)
-
-    def set_return(self, frame):
-        """Stop when returning from the given frame."""
-        self._set_stopinfo(frame.f_back, frame)
-
-    def set_trace(self, frame=None):
-        """Start debugging from `frame`.
-
-        If frame is not specified, debugging starts from caller's frame.
-        """
-        if frame is None:
-            frame = sys._getframe().f_back
-        self.reset()
-        while frame:
-            frame.f_trace = self.trace_dispatch
-            self.botframe = frame
-            frame = frame.f_back
-        self.set_step()
-        sys.settrace(self.trace_dispatch)
-
-    def set_continue(self):
-        # Don't stop except at breakpoints or when finished
-        self._set_stopinfo(self.botframe, None, -1)
-        if not self.breaks:
-            # no breakpoints; run without debugger overhead
-            sys.settrace(None)
-            frame = sys._getframe().f_back
-            while frame and frame is not self.botframe:
-                del frame.f_trace
-                frame = frame.f_back
-
-    def set_quit(self):
-        self.stopframe = self.botframe
-        self.returnframe = None
-        self.quitting = 1
-        sys.settrace(None)
-
-    # Derived classes and clients can call the following methods
-    # to manipulate breakpoints.  These methods return an
-    # error message is something went wrong, None if all is well.
-    # Set_break prints out the breakpoint line and file:lineno.
-    # Call self.get_*break*() to see the breakpoints or better
-    # for bp in Breakpoint.bpbynumber: if bp: bp.bpprint().
-
-    def set_break(self, filename, lineno, temporary=0, cond = None,
-                  funcname=None):
-        filename = self.canonic(filename)
-        import linecache # Import as late as possible
-        line = linecache.getline(filename, lineno)
-        if not line:
-            return 'Line %s:%d does not exist' % (filename,
-                                   lineno)
-        if not filename in self.breaks:
-            self.breaks[filename] = []
-        list = self.breaks[filename]
-        if not lineno in list:
-            list.append(lineno)
-        bp = Breakpoint(filename, lineno, temporary, cond, funcname)
-
-    def _prune_breaks(self, filename, lineno):
-        if (filename, lineno) not in Breakpoint.bplist:
-            self.breaks[filename].remove(lineno)
-        if not self.breaks[filename]:
-            del self.breaks[filename]
-
-    def clear_break(self, filename, lineno):
-        filename = self.canonic(filename)
-        if not filename in self.breaks:
-            return 'There are no breakpoints in %s' % filename
-        if lineno not in self.breaks[filename]:
-            return 'There is no breakpoint at %s:%d' % (filename,
-                                    lineno)
-        # If there's only one bp in the list for that file,line
-        # pair, then remove the breaks entry
-        for bp in Breakpoint.bplist[filename, lineno][:]:
-            bp.deleteMe()
-        self._prune_breaks(filename, lineno)
-
-    def clear_bpbynumber(self, arg):
-        try:
-            number = int(arg)
-        except:
-            return 'Non-numeric breakpoint number (%s)' % arg
-        try:
-            bp = Breakpoint.bpbynumber[number]
-        except IndexError:
-            return 'Breakpoint number (%d) out of range' % number
-        if not bp:
-            return 'Breakpoint (%d) already deleted' % number
-        bp.deleteMe()
-        self._prune_breaks(bp.file, bp.line)
-
-    def clear_all_file_breaks(self, filename):
-        filename = self.canonic(filename)
-        if not filename in self.breaks:
-            return 'There are no breakpoints in %s' % filename
-        for line in self.breaks[filename]:
-            blist = Breakpoint.bplist[filename, line]
-            for bp in blist:
-                bp.deleteMe()
-        del self.breaks[filename]
-
-    def clear_all_breaks(self):
-        if not self.breaks:
-            return 'There are no breakpoints'
-        for bp in Breakpoint.bpbynumber:
-            if bp:
-                bp.deleteMe()
-        self.breaks = {}
-
-    def get_break(self, filename, lineno):
-        filename = self.canonic(filename)
-        return filename in self.breaks and \
-            lineno in self.breaks[filename]
-
-    def get_breaks(self, filename, lineno):
-        filename = self.canonic(filename)
-        return filename in self.breaks and \
-            lineno in self.breaks[filename] and \
-            Breakpoint.bplist[filename, lineno] or []
-
-    def get_file_breaks(self, filename):
-        filename = self.canonic(filename)
-        if filename in self.breaks:
-            return self.breaks[filename]
-        else:
-            return []
-
-    def get_all_breaks(self):
-        return self.breaks
-
-    # Derived classes and clients can call the following method
-    # to get a data structure representing a stack trace.
-
-    def get_stack(self, f, t):
-        stack = []
-        if t and t.tb_frame is f:
-            t = t.tb_next
-        while f is not None:
-            stack.append((f, f.f_lineno))
-            if f is self.botframe:
-                break
-            f = f.f_back
-        stack.reverse()
-        i = max(0, len(stack) - 1)
-        while t is not None:
-            stack.append((t.tb_frame, t.tb_lineno))
-            t = t.tb_next
-        if f is None:
-            i = max(0, len(stack) - 1)
-        return stack, i
-
-    #
-
-    def format_stack_entry(self, frame_lineno, lprefix=': '):
-        import linecache, repr
-        frame, lineno = frame_lineno
-        filename = self.canonic(frame.f_code.co_filename)
-        s = '%s(%r)' % (filename, lineno)
-        if frame.f_code.co_name:
-            s = s + frame.f_code.co_name
-        else:
-            s = s + "<lambda>"
-        if '__args__' in frame.f_locals:
-            args = frame.f_locals['__args__']
-        else:
-            args = None
-        if args:
-            s = s + repr.repr(args)
-        else:
-            s = s + '()'
-        if '__return__' in frame.f_locals:
-            rv = frame.f_locals['__return__']
-            s = s + '->'
-            s = s + repr.repr(rv)
-        line = linecache.getline(filename, lineno, frame.f_globals)
-        if line: s = s + lprefix + line.strip()
-        return s
-
-    # The following two methods can be called by clients to use
-    # a debugger to debug a statement, given as a string.
-
-    def run(self, cmd, globals=None, locals=None):
-        if globals is None:
-            import __main__
-            globals = __main__.__dict__
-        if locals is None:
-            locals = globals
-        self.reset()
-        sys.settrace(self.trace_dispatch)
-        if not isinstance(cmd, types.CodeType):
-            cmd = cmd+'\n'
-        try:
-            exec cmd in globals, locals
-        except BdbQuit:
-            pass
-        finally:
-            self.quitting = 1
-            sys.settrace(None)
-
-    def runeval(self, expr, globals=None, locals=None):
-        if globals is None:
-            import __main__
-            globals = __main__.__dict__
-        if locals is None:
-            locals = globals
-        self.reset()
-        sys.settrace(self.trace_dispatch)
-        if not isinstance(expr, types.CodeType):
-            expr = expr+'\n'
-        try:
-            return eval(expr, globals, locals)
-        except BdbQuit:
-            pass
-        finally:
-            self.quitting = 1
-            sys.settrace(None)
-
-    def runctx(self, cmd, globals, locals):
-        # B/W compatibility
-        self.run(cmd, globals, locals)
-
-    # This method is more useful to debug a single function call.
-
-    def runcall(self, func, *args, **kwds):
-        self.reset()
-        sys.settrace(self.trace_dispatch)
-        res = None
-        try:
-            res = func(*args, **kwds)
-        except BdbQuit:
-            pass
-        finally:
-            self.quitting = 1
-            sys.settrace(None)
-        return res
-
-
-def set_trace():
-    Bdb().set_trace()
-
-
-class Breakpoint:
-
-    """Breakpoint class
-
-    Implements temporary breakpoints, ignore counts, disabling and
-    (re)-enabling, and conditionals.
-
-    Breakpoints are indexed by number through bpbynumber and by
-    the file,line tuple using bplist.  The former points to a
-    single instance of class Breakpoint.  The latter points to a
-    list of such instances since there may be more than one
-    breakpoint per line.
-
-    """
-
-    # XXX Keeping state in the class is a mistake -- this means
-    # you cannot have more than one active Bdb instance.
-
-    next = 1        # Next bp to be assigned
-    bplist = {}     # indexed by (file, lineno) tuple
-    bpbynumber = [None] # Each entry is None or an instance of Bpt
-                # index 0 is unused, except for marking an
-                # effective break .... see effective()
-
-    def __init__(self, file, line, temporary=0, cond=None, funcname=None):
-        self.funcname = funcname
-        # Needed if funcname is not None.
-        self.func_first_executable_line = None
-        self.file = file    # This better be in canonical form!
-        self.line = line
-        self.temporary = temporary
-        self.cond = cond
-        self.enabled = 1
-        self.ignore = 0
-        self.hits = 0
-        self.number = Breakpoint.next
-        Breakpoint.next = Breakpoint.next + 1
-        # Build the two lists
-        self.bpbynumber.append(self)
-        if (file, line) in self.bplist:
-            self.bplist[file, line].append(self)
-        else:
-            self.bplist[file, line] = [self]
-
-
-    def deleteMe(self):
-        index = (self.file, self.line)
-        self.bpbynumber[self.number] = None   # No longer in list
-        self.bplist[index].remove(self)
-        if not self.bplist[index]:
-            # No more bp for this f:l combo
-            del self.bplist[index]
-
-    def enable(self):
-        self.enabled = 1
-
-    def disable(self):
-        self.enabled = 0
-
-    def bpprint(self, out=None):
-        if out is None:
-            out = sys.stdout
-        if self.temporary:
-            disp = 'del  '
-        else:
-            disp = 'keep '
-        if self.enabled:
-            disp = disp + 'yes  '
-        else:
-            disp = disp + 'no   '
-        print >>out, '%-4dbreakpoint   %s at %s:%d' % (self.number, disp,
-                                                       self.file, self.line)
-        if self.cond:
-            print >>out, '\tstop only if %s' % (self.cond,)
-        if self.ignore:
-            print >>out, '\tignore next %d hits' % (self.ignore)
-        if (self.hits):
-            if (self.hits > 1): ss = 's'
-            else: ss = ''
-            print >>out, ('\tbreakpoint already hit %d time%s' %
-                          (self.hits, ss))
-
-# -----------end of Breakpoint class----------
-
-def checkfuncname(b, frame):
-    """Check whether we should break here because of `b.funcname`."""
-    if not b.funcname:
-        # Breakpoint was set via line number.
-        if b.line != frame.f_lineno:
-            # Breakpoint was set at a line with a def statement and the function
-            # defined is called: don't break.
-            return False
-        return True
-
-    # Breakpoint set via function name.
-
-    if frame.f_code.co_name != b.funcname:
-        # It's not a function call, but rather execution of def statement.
-        return False
-
-    # We are in the right frame.
-    if not b.func_first_executable_line:
-        # The function is entered for the 1st time.
-        b.func_first_executable_line = frame.f_lineno
-
-    if  b.func_first_executable_line != frame.f_lineno:
-        # But we are not at the first line number: don't break.
-        return False
-    return True
-
-# Determines if there is an effective (active) breakpoint at this
-# line of code.  Returns breakpoint number or 0 if none
-def effective(file, line, frame):
-    """Determine which breakpoint for this file:line is to be acted upon.
-
-    Called only if we know there is a bpt at this
-    location.  Returns breakpoint that was triggered and a flag
-    that indicates if it is ok to delete a temporary bp.
-
-    """
-    possibles = Breakpoint.bplist[file,line]
-    for i in range(0, len(possibles)):
-        b = possibles[i]
-        if b.enabled == 0:
-            continue
-        if not checkfuncname(b, frame):
-            continue
-        # Count every hit when bp is enabled
-        b.hits = b.hits + 1
-        if not b.cond:
-            # If unconditional, and ignoring,
-            # go on to next, else break
-            if b.ignore > 0:
-                b.ignore = b.ignore -1
-                continue
-            else:
-                # breakpoint and marker that's ok
-                # to delete if temporary
-                return (b,1)
-        else:
-            # Conditional bp.
-            # Ignore count applies only to those bpt hits where the
-            # condition evaluates to true.
-            try:
-                val = eval(b.cond, frame.f_globals,
-                       frame.f_locals)
-                if val:
-                    if b.ignore > 0:
-                        b.ignore = b.ignore -1
-                        # continue
-                    else:
-                        return (b,1)
-                # else:
-                #   continue
-            except:
-                # if eval fails, most conservative
-                # thing is to stop on breakpoint
-                # regardless of ignore count.
-                # Don't delete temporary,
-                # as another hint to user.
-                return (b,0)
-    return (None, None)
-
-# -------------------- testing --------------------
-
-class Tdb(Bdb):
-    def user_call(self, frame, args):
-        name = frame.f_code.co_name
-        if not name: name = '???'
-        print '+++ call', name, args
-    def user_line(self, frame):
-        import linecache
-        name = frame.f_code.co_name
-        if not name: name = '???'
-        fn = self.canonic(frame.f_code.co_filename)
-        line = linecache.getline(fn, frame.f_lineno, frame.f_globals)
-        print '+++', fn, frame.f_lineno, name, ':', line.strip()
-    def user_return(self, frame, retval):
-        print '+++ return', retval
-    def user_exception(self, frame, exc_stuff):
-        print '+++ exception', exc_stuff
-        self.set_continue()
-
-def foo(n):
-    print 'foo(', n, ')'
-    x = bar(n*10)
-    print 'bar returned', x
-
-def bar(a):
-    print 'bar(', a, ')'
-    return a/2
-
-def test():
-    t = Tdb()
-    t.run('import bdb; bdb.foo(10)')
-
-# end
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/binhex.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/binhex.py
deleted file mode 100644
index 46fcc42..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/binhex.py
+++ /dev/null
@@ -1,508 +0,0 @@
-"""Macintosh binhex compression/decompression.
-
-easy interface:
-binhex(inputfilename, outputfilename)
-hexbin(inputfilename, outputfilename)
-"""
-
-#
-# Jack Jansen, CWI, August 1995.
-#
-# The module is supposed to be as compatible as possible. Especially the
-# easy interface should work "as expected" on any platform.
-# XXXX Note: currently, textfiles appear in mac-form on all platforms.
-# We seem to lack a simple character-translate in python.
-# (we should probably use ISO-Latin-1 on all but the mac platform).
-# XXXX The simple routines are too simple: they expect to hold the complete
-# files in-core. Should be fixed.
-# XXXX It would be nice to handle AppleDouble format on unix
-# (for servers serving macs).
-# XXXX I don't understand what happens when you get 0x90 times the same byte on
-# input. The resulting code (xx 90 90) would appear to be interpreted as an
-# escaped *value* of 0x90. All coders I've seen appear to ignore this nicety...
-#
-import sys
-import os
-import struct
-import binascii
-
-__all__ = ["binhex","hexbin","Error"]
-
-class Error(Exception):
-    pass
-
-# States (what have we written)
-[_DID_HEADER, _DID_DATA, _DID_RSRC] = range(3)
-
-# Various constants
-REASONABLY_LARGE=32768  # Minimal amount we pass the rle-coder
-LINELEN=64
-RUNCHAR=chr(0x90)   # run-length introducer
-
-#
-# This code is no longer byte-order dependent
-
-#
-# Workarounds for non-mac machines.
-try:
-    from Carbon.File import FSSpec, FInfo
-    from MacOS import openrf
-
-    def getfileinfo(name):
-        finfo = FSSpec(name).FSpGetFInfo()
-        dir, file = os.path.split(name)
-        # XXX Get resource/data sizes
-        fp = open(name, 'rb')
-        fp.seek(0, 2)
-        dlen = fp.tell()
-        fp = openrf(name, '*rb')
-        fp.seek(0, 2)
-        rlen = fp.tell()
-        return file, finfo, dlen, rlen
-
-    def openrsrc(name, *mode):
-        if not mode:
-            mode = '*rb'
-        else:
-            mode = '*' + mode[0]
-        return openrf(name, mode)
-
-except ImportError:
-    #
-    # Glue code for non-macintosh usage
-    #
-
-    class FInfo:
-        def __init__(self):
-            self.Type = '????'
-            self.Creator = '????'
-            self.Flags = 0
-
-    def getfileinfo(name):
-        finfo = FInfo()
-        # Quick check for textfile
-        fp = open(name)
-        data = open(name).read(256)
-        for c in data:
-            if not c.isspace() and (c<' ' or ord(c) > 0x7f):
-                break
-        else:
-            finfo.Type = 'TEXT'
-        fp.seek(0, 2)
-        dsize = fp.tell()
-        fp.close()
-        dir, file = os.path.split(name)
-        file = file.replace(':', '-', 1)
-        return file, finfo, dsize, 0
-
-    class openrsrc:
-        def __init__(self, *args):
-            pass
-
-        def read(self, *args):
-            return ''
-
-        def write(self, *args):
-            pass
-
-        def close(self):
-            pass
-
-class _Hqxcoderengine:
-    """Write data to the coder in 3-byte chunks"""
-
-    def __init__(self, ofp):
-        self.ofp = ofp
-        self.data = ''
-        self.hqxdata = ''
-        self.linelen = LINELEN-1
-
-    def write(self, data):
-        self.data = self.data + data
-        datalen = len(self.data)
-        todo = (datalen//3)*3
-        data = self.data[:todo]
-        self.data = self.data[todo:]
-        if not data:
-            return
-        self.hqxdata = self.hqxdata + binascii.b2a_hqx(data)
-        self._flush(0)
-
-    def _flush(self, force):
-        first = 0
-        while first <= len(self.hqxdata)-self.linelen:
-            last = first + self.linelen
-            self.ofp.write(self.hqxdata[first:last]+'\n')
-            self.linelen = LINELEN
-            first = last
-        self.hqxdata = self.hqxdata[first:]
-        if force:
-            self.ofp.write(self.hqxdata + ':\n')
-
-    def close(self):
-        if self.data:
-            self.hqxdata = \
-                 self.hqxdata + binascii.b2a_hqx(self.data)
-        self._flush(1)
-        self.ofp.close()
-        del self.ofp
-
-class _Rlecoderengine:
-    """Write data to the RLE-coder in suitably large chunks"""
-
-    def __init__(self, ofp):
-        self.ofp = ofp
-        self.data = ''
-
-    def write(self, data):
-        self.data = self.data + data
-        if len(self.data) < REASONABLY_LARGE:
-            return
-        rledata = binascii.rlecode_hqx(self.data)
-        self.ofp.write(rledata)
-        self.data = ''
-
-    def close(self):
-        if self.data:
-            rledata = binascii.rlecode_hqx(self.data)
-            self.ofp.write(rledata)
-        self.ofp.close()
-        del self.ofp
-
-class BinHex:
-    def __init__(self, name_finfo_dlen_rlen, ofp):
-        name, finfo, dlen, rlen = name_finfo_dlen_rlen
-        if type(ofp) == type(''):
-            ofname = ofp
-            ofp = open(ofname, 'w')
-        ofp.write('(This file must be converted with BinHex 4.0)\n\n:')
-        hqxer = _Hqxcoderengine(ofp)
-        self.ofp = _Rlecoderengine(hqxer)
-        self.crc = 0
-        if finfo is None:
-            finfo = FInfo()
-        self.dlen = dlen
-        self.rlen = rlen
-        self._writeinfo(name, finfo)
-        self.state = _DID_HEADER
-
-    def _writeinfo(self, name, finfo):
-        nl = len(name)
-        if nl > 63:
-            raise Error, 'Filename too long'
-        d = chr(nl) + name + '\0'
-        d2 = finfo.Type + finfo.Creator
-
-        # Force all structs to be packed with big-endian
-        d3 = struct.pack('>h', finfo.Flags)
-        d4 = struct.pack('>ii', self.dlen, self.rlen)
-        info = d + d2 + d3 + d4
-        self._write(info)
-        self._writecrc()
-
-    def _write(self, data):
-        self.crc = binascii.crc_hqx(data, self.crc)
-        self.ofp.write(data)
-
-    def _writecrc(self):
-        # XXXX Should this be here??
-        # self.crc = binascii.crc_hqx('\0\0', self.crc)
-        if self.crc < 0:
-            fmt = '>h'
-        else:
-            fmt = '>H'
-        self.ofp.write(struct.pack(fmt, self.crc))
-        self.crc = 0
-
-    def write(self, data):
-        if self.state != _DID_HEADER:
-            raise Error, 'Writing data at the wrong time'
-        self.dlen = self.dlen - len(data)
-        self._write(data)
-
-    def close_data(self):
-        if self.dlen != 0:
-            raise Error, 'Incorrect data size, diff=%r' % (self.rlen,)
-        self._writecrc()
-        self.state = _DID_DATA
-
-    def write_rsrc(self, data):
-        if self.state < _DID_DATA:
-            self.close_data()
-        if self.state != _DID_DATA:
-            raise Error, 'Writing resource data at the wrong time'
-        self.rlen = self.rlen - len(data)
-        self._write(data)
-
-    def close(self):
-        if self.state < _DID_DATA:
-            self.close_data()
-        if self.state != _DID_DATA:
-            raise Error, 'Close at the wrong time'
-        if self.rlen != 0:
-            raise Error, \
-                  "Incorrect resource-datasize, diff=%r" % (self.rlen,)
-        self._writecrc()
-        self.ofp.close()
-        self.state = None
-        del self.ofp
-
-def binhex(inp, out):
-    """(infilename, outfilename) - Create binhex-encoded copy of a file"""
-    finfo = getfileinfo(inp)
-    ofp = BinHex(finfo, out)
-
-    ifp = open(inp, 'rb')
-    # XXXX Do textfile translation on non-mac systems
-    while 1:
-        d = ifp.read(128000)
-        if not d: break
-        ofp.write(d)
-    ofp.close_data()
-    ifp.close()
-
-    ifp = openrsrc(inp, 'rb')
-    while 1:
-        d = ifp.read(128000)
-        if not d: break
-        ofp.write_rsrc(d)
-    ofp.close()
-    ifp.close()
-
-class _Hqxdecoderengine:
-    """Read data via the decoder in 4-byte chunks"""
-
-    def __init__(self, ifp):
-        self.ifp = ifp
-        self.eof = 0
-
-    def read(self, totalwtd):
-        """Read at least wtd bytes (or until EOF)"""
-        decdata = ''
-        wtd = totalwtd
-        #
-        # The loop here is convoluted, since we don't really now how
-        # much to decode: there may be newlines in the incoming data.
-        while wtd > 0:
-            if self.eof: return decdata
-            wtd = ((wtd+2)//3)*4
-            data = self.ifp.read(wtd)
-            #
-            # Next problem: there may not be a complete number of
-            # bytes in what we pass to a2b. Solve by yet another
-            # loop.
-            #
-            while 1:
-                try:
-                    decdatacur, self.eof = \
-                            binascii.a2b_hqx(data)
-                    break
-                except binascii.Incomplete:
-                    pass
-                newdata = self.ifp.read(1)
-                if not newdata:
-                    raise Error, \
-                          'Premature EOF on binhex file'
-                data = data + newdata
-            decdata = decdata + decdatacur
-            wtd = totalwtd - len(decdata)
-            if not decdata and not self.eof:
-                raise Error, 'Premature EOF on binhex file'
-        return decdata
-
-    def close(self):
-        self.ifp.close()
-
-class _Rledecoderengine:
-    """Read data via the RLE-coder"""
-
-    def __init__(self, ifp):
-        self.ifp = ifp
-        self.pre_buffer = ''
-        self.post_buffer = ''
-        self.eof = 0
-
-    def read(self, wtd):
-        if wtd > len(self.post_buffer):
-            self._fill(wtd-len(self.post_buffer))
-        rv = self.post_buffer[:wtd]
-        self.post_buffer = self.post_buffer[wtd:]
-        return rv
-
-    def _fill(self, wtd):
-        self.pre_buffer = self.pre_buffer + self.ifp.read(wtd+4)
-        if self.ifp.eof:
-            self.post_buffer = self.post_buffer + \
-                binascii.rledecode_hqx(self.pre_buffer)
-            self.pre_buffer = ''
-            return
-
-        #
-        # Obfuscated code ahead. We have to take care that we don't
-        # end up with an orphaned RUNCHAR later on. So, we keep a couple
-        # of bytes in the buffer, depending on what the end of
-        # the buffer looks like:
-        # '\220\0\220' - Keep 3 bytes: repeated \220 (escaped as \220\0)
-        # '?\220' - Keep 2 bytes: repeated something-else
-        # '\220\0' - Escaped \220: Keep 2 bytes.
-        # '?\220?' - Complete repeat sequence: decode all
-        # otherwise: keep 1 byte.
-        #
-        mark = len(self.pre_buffer)
-        if self.pre_buffer[-3:] == RUNCHAR + '\0' + RUNCHAR:
-            mark = mark - 3
-        elif self.pre_buffer[-1] == RUNCHAR:
-            mark = mark - 2
-        elif self.pre_buffer[-2:] == RUNCHAR + '\0':
-            mark = mark - 2
-        elif self.pre_buffer[-2] == RUNCHAR:
-            pass # Decode all
-        else:
-            mark = mark - 1
-
-        self.post_buffer = self.post_buffer + \
-            binascii.rledecode_hqx(self.pre_buffer[:mark])
-        self.pre_buffer = self.pre_buffer[mark:]
-
-    def close(self):
-        self.ifp.close()
-
-class HexBin:
-    def __init__(self, ifp):
-        if type(ifp) == type(''):
-            ifp = open(ifp)
-        #
-        # Find initial colon.
-        #
-        while 1:
-            ch = ifp.read(1)
-            if not ch:
-                raise Error, "No binhex data found"
-            # Cater for \r\n terminated lines (which show up as \n\r, hence
-            # all lines start with \r)
-            if ch == '\r':
-                continue
-            if ch == ':':
-                break
-            if ch != '\n':
-                dummy = ifp.readline()
-
-        hqxifp = _Hqxdecoderengine(ifp)
-        self.ifp = _Rledecoderengine(hqxifp)
-        self.crc = 0
-        self._readheader()
-
-    def _read(self, len):
-        data = self.ifp.read(len)
-        self.crc = binascii.crc_hqx(data, self.crc)
-        return data
-
-    def _checkcrc(self):
-        filecrc = struct.unpack('>h', self.ifp.read(2))[0] & 0xffff
-        #self.crc = binascii.crc_hqx('\0\0', self.crc)
-        # XXXX Is this needed??
-        self.crc = self.crc & 0xffff
-        if filecrc != self.crc:
-            raise Error, 'CRC error, computed %x, read %x' \
-                  %(self.crc, filecrc)
-        self.crc = 0
-
-    def _readheader(self):
-        len = self._read(1)
-        fname = self._read(ord(len))
-        rest = self._read(1+4+4+2+4+4)
-        self._checkcrc()
-
-        type = rest[1:5]
-        creator = rest[5:9]
-        flags = struct.unpack('>h', rest[9:11])[0]
-        self.dlen = struct.unpack('>l', rest[11:15])[0]
-        self.rlen = struct.unpack('>l', rest[15:19])[0]
-
-        self.FName = fname
-        self.FInfo = FInfo()
-        self.FInfo.Creator = creator
-        self.FInfo.Type = type
-        self.FInfo.Flags = flags
-
-        self.state = _DID_HEADER
-
-    def read(self, *n):
-        if self.state != _DID_HEADER:
-            raise Error, 'Read data at wrong time'
-        if n:
-            n = n[0]
-            n = min(n, self.dlen)
-        else:
-            n = self.dlen
-        rv = ''
-        while len(rv) < n:
-            rv = rv + self._read(n-len(rv))
-        self.dlen = self.dlen - n
-        return rv
-
-    def close_data(self):
-        if self.state != _DID_HEADER:
-            raise Error, 'close_data at wrong time'
-        if self.dlen:
-            dummy = self._read(self.dlen)
-        self._checkcrc()
-        self.state = _DID_DATA
-
-    def read_rsrc(self, *n):
-        if self.state == _DID_HEADER:
-            self.close_data()
-        if self.state != _DID_DATA:
-            raise Error, 'Read resource data at wrong time'
-        if n:
-            n = n[0]
-            n = min(n, self.rlen)
-        else:
-            n = self.rlen
-        self.rlen = self.rlen - n
-        return self._read(n)
-
-    def close(self):
-        if self.rlen:
-            dummy = self.read_rsrc(self.rlen)
-        self._checkcrc()
-        self.state = _DID_RSRC
-        self.ifp.close()
-
-def hexbin(inp, out):
-    """(infilename, outfilename) - Decode binhexed file"""
-    ifp = HexBin(inp)
-    finfo = ifp.FInfo
-    if not out:
-        out = ifp.FName
-
-    ofp = open(out, 'wb')
-    # XXXX Do translation on non-mac systems
-    while 1:
-        d = ifp.read(128000)
-        if not d: break
-        ofp.write(d)
-    ofp.close()
-    ifp.close_data()
-
-    d = ifp.read_rsrc(128000)
-    if d:
-        ofp = openrsrc(out, 'wb')
-        ofp.write(d)
-        while 1:
-            d = ifp.read_rsrc(128000)
-            if not d: break
-            ofp.write(d)
-        ofp.close()
-
-    ifp.close()
-
-def _test():
-    fname = sys.argv[1]
-    binhex(fname, fname+'.hqx')
-    hexbin(fname+'.hqx', fname+'.viahqx')
-    #hexbin(fname, fname+'.unpacked')
-    sys.exit(1)
-
-if __name__ == '__main__':
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/bisect.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/bisect.py
deleted file mode 100644
index d1016d9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/bisect.py
+++ /dev/null
@@ -1,92 +0,0 @@
-"""Bisection algorithms."""
-
-def insort_right(a, x, lo=0, hi=None):
-    """Insert item x in list a, and keep it sorted assuming a is sorted.
-
-    If x is already in a, insert it to the right of the rightmost x.
-
-    Optional args lo (default 0) and hi (default len(a)) bound the
-    slice of a to be searched.
-    """
-
-    if lo < 0:
-        raise ValueError('lo must be non-negative')
-    if hi is None:
-        hi = len(a)
-    while lo < hi:
-        mid = (lo+hi)//2
-        if x < a[mid]: hi = mid
-        else: lo = mid+1
-    a.insert(lo, x)
-
-insort = insort_right   # backward compatibility
-
-def bisect_right(a, x, lo=0, hi=None):
-    """Return the index where to insert item x in list a, assuming a is sorted.
-
-    The return value i is such that all e in a[:i] have e <= x, and all e in
-    a[i:] have e > x.  So if x already appears in the list, a.insert(x) will
-    insert just after the rightmost x already there.
-
-    Optional args lo (default 0) and hi (default len(a)) bound the
-    slice of a to be searched.
-    """
-
-    if lo < 0:
-        raise ValueError('lo must be non-negative')
-    if hi is None:
-        hi = len(a)
-    while lo < hi:
-        mid = (lo+hi)//2
-        if x < a[mid]: hi = mid
-        else: lo = mid+1
-    return lo
-
-bisect = bisect_right   # backward compatibility
-
-def insort_left(a, x, lo=0, hi=None):
-    """Insert item x in list a, and keep it sorted assuming a is sorted.
-
-    If x is already in a, insert it to the left of the leftmost x.
-
-    Optional args lo (default 0) and hi (default len(a)) bound the
-    slice of a to be searched.
-    """
-
-    if lo < 0:
-        raise ValueError('lo must be non-negative')
-    if hi is None:
-        hi = len(a)
-    while lo < hi:
-        mid = (lo+hi)//2
-        if a[mid] < x: lo = mid+1
-        else: hi = mid
-    a.insert(lo, x)
-
-
-def bisect_left(a, x, lo=0, hi=None):
-    """Return the index where to insert item x in list a, assuming a is sorted.
-
-    The return value i is such that all e in a[:i] have e < x, and all e in
-    a[i:] have e >= x.  So if x already appears in the list, a.insert(x) will
-    insert just before the leftmost x already there.
-
-    Optional args lo (default 0) and hi (default len(a)) bound the
-    slice of a to be searched.
-    """
-
-    if lo < 0:
-        raise ValueError('lo must be non-negative')
-    if hi is None:
-        hi = len(a)
-    while lo < hi:
-        mid = (lo+hi)//2
-        if a[mid] < x: lo = mid+1
-        else: hi = mid
-    return lo
-
-# Overwrite above definitions with a fast C implementation
-try:
-    from _bisect import *
-except ImportError:
-    pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/cProfile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/cProfile.py
deleted file mode 100644
index dfe2822..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/cProfile.py
+++ /dev/null
@@ -1,199 +0,0 @@
-#! /usr/bin/env python
-
-"""Python interface for the 'lsprof' profiler.
-   Compatible with the 'profile' module.
-"""
-
-__all__ = ["run", "runctx", "help", "Profile"]
-
-import _lsprof
-
-# ____________________________________________________________
-# Simple interface
-
-def run(statement, filename=None, sort=-1):
-    """Run statement under profiler optionally saving results in filename
-
-    This function takes a single argument that can be passed to the
-    "exec" statement, and an optional file name.  In all cases this
-    routine attempts to "exec" its first argument and gather profiling
-    statistics from the execution. If no file name is present, then this
-    function automatically prints a simple profiling report, sorted by the
-    standard name string (file/line/function-name) that is presented in
-    each line.
-    """
-    prof = Profile()
-    result = None
-    try:
-        try:
-            prof = prof.run(statement)
-        except SystemExit:
-            pass
-    finally:
-        if filename is not None:
-            prof.dump_stats(filename)
-        else:
-            result = prof.print_stats(sort)
-    return result
-
-def runctx(statement, globals, locals, filename=None, sort=-1):
-    """Run statement under profiler, supplying your own globals and locals,
-    optionally saving results in filename.
-
-    statement and filename have the same semantics as profile.run
-    """
-    prof = Profile()
-    result = None
-    try:
-        try:
-            prof = prof.runctx(statement, globals, locals)
-        except SystemExit:
-            pass
-    finally:
-        if filename is not None:
-            prof.dump_stats(filename)
-        else:
-            result = prof.print_stats(sort)
-    return result
-
-# Backwards compatibility.
-def help():
-    print "Documentation for the profile/cProfile modules can be found "
-    print "in the Python Library Reference, section 'The Python Profiler'."
-
-# ____________________________________________________________
-
-class Profile(_lsprof.Profiler):
-    """Profile(custom_timer=None, time_unit=None, subcalls=True, builtins=True)
-
-    Builds a profiler object using the specified timer function.
-    The default timer is a fast built-in one based on real time.
-    For custom timer functions returning integers, time_unit can
-    be a float specifying a scale (i.e. how long each integer unit
-    is, in seconds).
-    """
-
-    # Most of the functionality is in the base class.
-    # This subclass only adds convenient and backward-compatible methods.
-
-    def print_stats(self, sort=-1):
-        import pstats
-        pstats.Stats(self).strip_dirs().sort_stats(sort).print_stats()
-
-    def dump_stats(self, file):
-        import marshal
-        f = open(file, 'wb')
-        self.create_stats()
-        marshal.dump(self.stats, f)
-        f.close()
-
-    def create_stats(self):
-        self.disable()
-        self.snapshot_stats()
-
-    def snapshot_stats(self):
-        entries = self.getstats()
-        self.stats = {}
-        callersdicts = {}
-        # call information
-        for entry in entries:
-            func = label(entry.code)
-            nc = entry.callcount         # ncalls column of pstats (before '/')
-            cc = nc - entry.reccallcount # ncalls column of pstats (after '/')
-            tt = entry.inlinetime        # tottime column of pstats
-            ct = entry.totaltime         # cumtime column of pstats
-            callers = {}
-            callersdicts[id(entry.code)] = callers
-            self.stats[func] = cc, nc, tt, ct, callers
-        # subcall information
-        for entry in entries:
-            if entry.calls:
-                func = label(entry.code)
-                for subentry in entry.calls:
-                    try:
-                        callers = callersdicts[id(subentry.code)]
-                    except KeyError:
-                        continue
-                    nc = subentry.callcount
-                    cc = nc - subentry.reccallcount
-                    tt = subentry.inlinetime
-                    ct = subentry.totaltime
-                    if func in callers:
-                        prev = callers[func]
-                        nc += prev[0]
-                        cc += prev[1]
-                        tt += prev[2]
-                        ct += prev[3]
-                    callers[func] = nc, cc, tt, ct
-
-    # The following two methods can be called by clients to use
-    # a profiler to profile a statement, given as a string.
-
-    def run(self, cmd):
-        import __main__
-        dict = __main__.__dict__
-        return self.runctx(cmd, dict, dict)
-
-    def runctx(self, cmd, globals, locals):
-        self.enable()
-        try:
-            exec cmd in globals, locals
-        finally:
-            self.disable()
-        return self
-
-    # This method is more useful to profile a single function call.
-    def runcall(self, func, *args, **kw):
-        self.enable()
-        try:
-            return func(*args, **kw)
-        finally:
-            self.disable()
-
-# ____________________________________________________________
-
-def label(code):
-    if isinstance(code, str):
-        return ('~', 0, code)    # built-in functions ('~' sorts at the end)
-    else:
-        return (code.co_filename, code.co_firstlineno, code.co_name)
-
-# ____________________________________________________________
-
-def main():
-    import os, sys
-    from optparse import OptionParser
-    usage = "cProfile.py [-o output_file_path] [-s sort] scriptfile [arg] ..."
-    parser = OptionParser(usage=usage)
-    parser.allow_interspersed_args = False
-    parser.add_option('-o', '--outfile', dest="outfile",
-        help="Save stats to <outfile>", default=None)
-    parser.add_option('-s', '--sort', dest="sort",
-        help="Sort order when printing to stdout, based on pstats.Stats class",
-        default=-1)
-
-    if not sys.argv[1:]:
-        parser.print_usage()
-        sys.exit(2)
-
-    (options, args) = parser.parse_args()
-    sys.argv[:] = args
-
-    if len(args) > 0:
-        progname = args[0]
-        sys.path.insert(0, os.path.dirname(progname))
-        with open(progname, 'rb') as fp:
-            code = compile(fp.read(), progname, 'exec')
-        globs = {
-            '__file__': progname,
-            '__name__': '__main__',
-            '__package__': None,
-        }
-        runctx(code, globs, None, options.outfile, options.sort)
-    else:
-        parser.print_usage()
-    return parser
-
-# When invoked as main program, invoke the profiler on a script
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/calendar.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/calendar.py
deleted file mode 100644
index 72ace40..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/calendar.py
+++ /dev/null
@@ -1,708 +0,0 @@
-"""Calendar printing functions
-
-Note when comparing these calendars to the ones printed by cal(1): By
-default, these calendars have Monday as the first day of the week, and
-Sunday as the last (the European convention). Use setfirstweekday() to
-set the first day of the week (0=Monday, 6=Sunday)."""
-
-import sys
-import datetime
-import locale as _locale
-
-__all__ = ["IllegalMonthError", "IllegalWeekdayError", "setfirstweekday",
-           "firstweekday", "isleap", "leapdays", "weekday", "monthrange",
-           "monthcalendar", "prmonth", "month", "prcal", "calendar",
-           "timegm", "month_name", "month_abbr", "day_name", "day_abbr"]
-
-# Exception raised for bad input (with string parameter for details)
-error = ValueError
-
-# Exceptions raised for bad input
-class IllegalMonthError(ValueError):
-    def __init__(self, month):
-        self.month = month
-    def __str__(self):
-        return "bad month number %r; must be 1-12" % self.month
-
-
-class IllegalWeekdayError(ValueError):
-    def __init__(self, weekday):
-        self.weekday = weekday
-    def __str__(self):
-        return "bad weekday number %r; must be 0 (Monday) to 6 (Sunday)" % self.weekday
-
-
-# Constants for months referenced later
-January = 1
-February = 2
-
-# Number of days per month (except for February in leap years)
-mdays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
-
-# This module used to have hard-coded lists of day and month names, as
-# English strings.  The classes following emulate a read-only version of
-# that, but supply localized names.  Note that the values are computed
-# fresh on each call, in case the user changes locale between calls.
-
-class _localized_month:
-
-    _months = [datetime.date(2001, i+1, 1).strftime for i in range(12)]
-    _months.insert(0, lambda x: "")
-
-    def __init__(self, format):
-        self.format = format
-
-    def __getitem__(self, i):
-        funcs = self._months[i]
-        if isinstance(i, slice):
-            return [f(self.format) for f in funcs]
-        else:
-            return funcs(self.format)
-
-    def __len__(self):
-        return 13
-
-
-class _localized_day:
-
-    # January 1, 2001, was a Monday.
-    _days = [datetime.date(2001, 1, i+1).strftime for i in range(7)]
-
-    def __init__(self, format):
-        self.format = format
-
-    def __getitem__(self, i):
-        funcs = self._days[i]
-        if isinstance(i, slice):
-            return [f(self.format) for f in funcs]
-        else:
-            return funcs(self.format)
-
-    def __len__(self):
-        return 7
-
-
-# Full and abbreviated names of weekdays
-day_name = _localized_day('%A')
-day_abbr = _localized_day('%a')
-
-# Full and abbreviated names of months (1-based arrays!!!)
-month_name = _localized_month('%B')
-month_abbr = _localized_month('%b')
-
-# Constants for weekdays
-(MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)
-
-
-def isleap(year):
-    """Return True for leap years, False for non-leap years."""
-    return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
-
-
-def leapdays(y1, y2):
-    """Return number of leap years in range [y1, y2).
-       Assume y1 <= y2."""
-    y1 -= 1
-    y2 -= 1
-    return (y2//4 - y1//4) - (y2//100 - y1//100) + (y2//400 - y1//400)
-
-
-def weekday(year, month, day):
-    """Return weekday (0-6 ~ Mon-Sun) for year (1970-...), month (1-12),
-       day (1-31)."""
-    return datetime.date(year, month, day).weekday()
-
-
-def monthrange(year, month):
-    """Return weekday (0-6 ~ Mon-Sun) and number of days (28-31) for
-       year, month."""
-    if not 1 <= month <= 12:
-        raise IllegalMonthError(month)
-    day1 = weekday(year, month, 1)
-    ndays = mdays[month] + (month == February and isleap(year))
-    return day1, ndays
-
-
-class Calendar(object):
-    """
-    Base calendar class. This class doesn't do any formatting. It simply
-    provides data to subclasses.
-    """
-
-    def __init__(self, firstweekday=0):
-        self.firstweekday = firstweekday # 0 = Monday, 6 = Sunday
-
-    def getfirstweekday(self):
-        return self._firstweekday % 7
-
-    def setfirstweekday(self, firstweekday):
-        self._firstweekday = firstweekday
-
-    firstweekday = property(getfirstweekday, setfirstweekday)
-
-    def iterweekdays(self):
-        """
-        Return a iterator for one week of weekday numbers starting with the
-        configured first one.
-        """
-        for i in range(self.firstweekday, self.firstweekday + 7):
-            yield i%7
-
-    def itermonthdates(self, year, month):
-        """
-        Return an iterator for one month. The iterator will yield datetime.date
-        values and will always iterate through complete weeks, so it will yield
-        dates outside the specified month.
-        """
-        date = datetime.date(year, month, 1)
-        # Go back to the beginning of the week
-        days = (date.weekday() - self.firstweekday) % 7
-        date -= datetime.timedelta(days=days)
-        oneday = datetime.timedelta(days=1)
-        while True:
-            yield date
-            date += oneday
-            if date.month != month and date.weekday() == self.firstweekday:
-                break
-
-    def itermonthdays2(self, year, month):
-        """
-        Like itermonthdates(), but will yield (day number, weekday number)
-        tuples. For days outside the specified month the day number is 0.
-        """
-        for date in self.itermonthdates(year, month):
-            if date.month != month:
-                yield (0, date.weekday())
-            else:
-                yield (date.day, date.weekday())
-
-    def itermonthdays(self, year, month):
-        """
-        Like itermonthdates(), but will yield day numbers. For days outside
-        the specified month the day number is 0.
-        """
-        for date in self.itermonthdates(year, month):
-            if date.month != month:
-                yield 0
-            else:
-                yield date.day
-
-    def monthdatescalendar(self, year, month):
-        """
-        Return a matrix (list of lists) representing a month's calendar.
-        Each row represents a week; week entries are datetime.date values.
-        """
-        dates = list(self.itermonthdates(year, month))
-        return [ dates[i:i+7] for i in range(0, len(dates), 7) ]
-
-    def monthdays2calendar(self, year, month):
-        """
-        Return a matrix representing a month's calendar.
-        Each row represents a week; week entries are
-        (day number, weekday number) tuples. Day numbers outside this month
-        are zero.
-        """
-        days = list(self.itermonthdays2(year, month))
-        return [ days[i:i+7] for i in range(0, len(days), 7) ]
-
-    def monthdayscalendar(self, year, month):
-        """
-        Return a matrix representing a month's calendar.
-        Each row represents a week; days outside this month are zero.
-        """
-        days = list(self.itermonthdays(year, month))
-        return [ days[i:i+7] for i in range(0, len(days), 7) ]
-
-    def yeardatescalendar(self, year, width=3):
-        """
-        Return the data for the specified year ready for formatting. The return
-        value is a list of month rows. Each month row contains upto width months.
-        Each month contains between 4 and 6 weeks and each week contains 1-7
-        days. Days are datetime.date objects.
-        """
-        months = [
-            self.monthdatescalendar(year, i)
-            for i in range(January, January+12)
-        ]
-        return [months[i:i+width] for i in range(0, len(months), width) ]
-
-    def yeardays2calendar(self, year, width=3):
-        """
-        Return the data for the specified year ready for formatting (similar to
-        yeardatescalendar()). Entries in the week lists are
-        (day number, weekday number) tuples. Day numbers outside this month are
-        zero.
-        """
-        months = [
-            self.monthdays2calendar(year, i)
-            for i in range(January, January+12)
-        ]
-        return [months[i:i+width] for i in range(0, len(months), width) ]
-
-    def yeardayscalendar(self, year, width=3):
-        """
-        Return the data for the specified year ready for formatting (similar to
-        yeardatescalendar()). Entries in the week lists are day numbers.
-        Day numbers outside this month are zero.
-        """
-        months = [
-            self.monthdayscalendar(year, i)
-            for i in range(January, January+12)
-        ]
-        return [months[i:i+width] for i in range(0, len(months), width) ]
-
-
-class TextCalendar(Calendar):
-    """
-    Subclass of Calendar that outputs a calendar as a simple plain text
-    similar to the UNIX program cal.
-    """
-
-    def prweek(self, theweek, width):
-        """
-        Print a single week (no newline).
-        """
-        print self.formatweek(theweek, width),
-
-    def formatday(self, day, weekday, width):
-        """
-        Returns a formatted day.
-        """
-        if day == 0:
-            s = ''
-        else:
-            s = '%2i' % day             # right-align single-digit days
-        return s.center(width)
-
-    def formatweek(self, theweek, width):
-        """
-        Returns a single week in a string (no newline).
-        """
-        return ' '.join(self.formatday(d, wd, width) for (d, wd) in theweek)
-
-    def formatweekday(self, day, width):
-        """
-        Returns a formatted week day name.
-        """
-        if width >= 9:
-            names = day_name
-        else:
-            names = day_abbr
-        return names[day][:width].center(width)
-
-    def formatweekheader(self, width):
-        """
-        Return a header for a week.
-        """
-        return ' '.join(self.formatweekday(i, width) for i in self.iterweekdays())
-
-    def formatmonthname(self, theyear, themonth, width, withyear=True):
-        """
-        Return a formatted month name.
-        """
-        s = month_name[themonth]
-        if withyear:
-            s = "%s %r" % (s, theyear)
-        return s.center(width)
-
-    def prmonth(self, theyear, themonth, w=0, l=0):
-        """
-        Print a month's calendar.
-        """
-        print self.formatmonth(theyear, themonth, w, l),
-
-    def formatmonth(self, theyear, themonth, w=0, l=0):
-        """
-        Return a month's calendar string (multi-line).
-        """
-        w = max(2, w)
-        l = max(1, l)
-        s = self.formatmonthname(theyear, themonth, 7 * (w + 1) - 1)
-        s = s.rstrip()
-        s += '\n' * l
-        s += self.formatweekheader(w).rstrip()
-        s += '\n' * l
-        for week in self.monthdays2calendar(theyear, themonth):
-            s += self.formatweek(week, w).rstrip()
-            s += '\n' * l
-        return s
-
-    def formatyear(self, theyear, w=2, l=1, c=6, m=3):
-        """
-        Returns a year's calendar as a multi-line string.
-        """
-        w = max(2, w)
-        l = max(1, l)
-        c = max(2, c)
-        colwidth = (w + 1) * 7 - 1
-        v = []
-        a = v.append
-        a(repr(theyear).center(colwidth*m+c*(m-1)).rstrip())
-        a('\n'*l)
-        header = self.formatweekheader(w)
-        for (i, row) in enumerate(self.yeardays2calendar(theyear, m)):
-            # months in this row
-            months = range(m*i+1, min(m*(i+1)+1, 13))
-            a('\n'*l)
-            names = (self.formatmonthname(theyear, k, colwidth, False)
-                     for k in months)
-            a(formatstring(names, colwidth, c).rstrip())
-            a('\n'*l)
-            headers = (header for k in months)
-            a(formatstring(headers, colwidth, c).rstrip())
-            a('\n'*l)
-            # max number of weeks for this row
-            height = max(len(cal) for cal in row)
-            for j in range(height):
-                weeks = []
-                for cal in row:
-                    if j >= len(cal):
-                        weeks.append('')
-                    else:
-                        weeks.append(self.formatweek(cal[j], w))
-                a(formatstring(weeks, colwidth, c).rstrip())
-                a('\n' * l)
-        return ''.join(v)
-
-    def pryear(self, theyear, w=0, l=0, c=6, m=3):
-        """Print a year's calendar."""
-        print self.formatyear(theyear, w, l, c, m)
-
-
-class HTMLCalendar(Calendar):
-    """
-    This calendar returns complete HTML pages.
-    """
-
-    # CSS classes for the day <td>s
-    cssclasses = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]
-
-    def formatday(self, day, weekday):
-        """
-        Return a day as a table cell.
-        """
-        if day == 0:
-            return '<td class="noday">&nbsp;</td>' # day outside month
-        else:
-            return '<td class="%s">%d</td>' % (self.cssclasses[weekday], day)
-
-    def formatweek(self, theweek):
-        """
-        Return a complete week as a table row.
-        """
-        s = ''.join(self.formatday(d, wd) for (d, wd) in theweek)
-        return '<tr>%s</tr>' % s
-
-    def formatweekday(self, day):
-        """
-        Return a weekday name as a table header.
-        """
-        return '<th class="%s">%s</th>' % (self.cssclasses[day], day_abbr[day])
-
-    def formatweekheader(self):
-        """
-        Return a header for a week as a table row.
-        """
-        s = ''.join(self.formatweekday(i) for i in self.iterweekdays())
-        return '<tr>%s</tr>' % s
-
-    def formatmonthname(self, theyear, themonth, withyear=True):
-        """
-        Return a month name as a table row.
-        """
-        if withyear:
-            s = '%s %s' % (month_name[themonth], theyear)
-        else:
-            s = '%s' % month_name[themonth]
-        return '<tr><th colspan="7" class="month">%s</th></tr>' % s
-
-    def formatmonth(self, theyear, themonth, withyear=True):
-        """
-        Return a formatted month as a table.
-        """
-        v = []
-        a = v.append
-        a('<table border="0" cellpadding="0" cellspacing="0" class="month">')
-        a('\n')
-        a(self.formatmonthname(theyear, themonth, withyear=withyear))
-        a('\n')
-        a(self.formatweekheader())
-        a('\n')
-        for week in self.monthdays2calendar(theyear, themonth):
-            a(self.formatweek(week))
-            a('\n')
-        a('</table>')
-        a('\n')
-        return ''.join(v)
-
-    def formatyear(self, theyear, width=3):
-        """
-        Return a formatted year as a table of tables.
-        """
-        v = []
-        a = v.append
-        width = max(width, 1)
-        a('<table border="0" cellpadding="0" cellspacing="0" class="year">')
-        a('\n')
-        a('<tr><th colspan="%d" class="year">%s</th></tr>' % (width, theyear))
-        for i in range(January, January+12, width):
-            # months in this row
-            months = range(i, min(i+width, 13))
-            a('<tr>')
-            for m in months:
-                a('<td>')
-                a(self.formatmonth(theyear, m, withyear=False))
-                a('</td>')
-            a('</tr>')
-        a('</table>')
-        return ''.join(v)
-
-    def formatyearpage(self, theyear, width=3, css='calendar.css', encoding=None):
-        """
-        Return a formatted year as a complete HTML page.
-        """
-        if encoding is None:
-            encoding = sys.getdefaultencoding()
-        v = []
-        a = v.append
-        a('<?xml version="1.0" encoding="%s"?>\n' % encoding)
-        a('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n')
-        a('<html>\n')
-        a('<head>\n')
-        a('<meta http-equiv="Content-Type" content="text/html; charset=%s" />\n' % encoding)
-        if css is not None:
-            a('<link rel="stylesheet" type="text/css" href="%s" />\n' % css)
-        a('<title>Calendar for %d</title>\n' % theyear)
-        a('</head>\n')
-        a('<body>\n')
-        a(self.formatyear(theyear, width))
-        a('</body>\n')
-        a('</html>\n')
-        return ''.join(v).encode(encoding, "xmlcharrefreplace")
-
-
-class TimeEncoding:
-    def __init__(self, locale):
-        self.locale = locale
-
-    def __enter__(self):
-        self.oldlocale = _locale.getlocale(_locale.LC_TIME)
-        _locale.setlocale(_locale.LC_TIME, self.locale)
-
-    def __exit__(self, *args):
-        _locale.setlocale(_locale.LC_TIME, self.oldlocale)
-
-
-class LocaleTextCalendar(TextCalendar):
-    """
-    This class can be passed a locale name in the constructor and will return
-    month and weekday names in the specified locale. If this locale includes
-    an encoding all strings containing month and weekday names will be returned
-    as unicode.
-    """
-
-    def __init__(self, firstweekday=0, locale=None):
-        TextCalendar.__init__(self, firstweekday)
-        if locale is None:
-            locale = _locale.getdefaultlocale()
-        self.locale = locale
-
-    def formatweekday(self, day, width):
-        with TimeEncoding(self.locale) as encoding:
-            if width >= 9:
-                names = day_name
-            else:
-                names = day_abbr
-            name = names[day]
-            if encoding is not None:
-                name = name.decode(encoding)
-            return name[:width].center(width)
-
-    def formatmonthname(self, theyear, themonth, width, withyear=True):
-        with TimeEncoding(self.locale) as encoding:
-            s = month_name[themonth]
-            if encoding is not None:
-                s = s.decode(encoding)
-            if withyear:
-                s = "%s %r" % (s, theyear)
-            return s.center(width)
-
-
-class LocaleHTMLCalendar(HTMLCalendar):
-    """
-    This class can be passed a locale name in the constructor and will return
-    month and weekday names in the specified locale. If this locale includes
-    an encoding all strings containing month and weekday names will be returned
-    as unicode.
-    """
-    def __init__(self, firstweekday=0, locale=None):
-        HTMLCalendar.__init__(self, firstweekday)
-        if locale is None:
-            locale = _locale.getdefaultlocale()
-        self.locale = locale
-
-    def formatweekday(self, day):
-        with TimeEncoding(self.locale) as encoding:
-            s = day_abbr[day]
-            if encoding is not None:
-                s = s.decode(encoding)
-            return '<th class="%s">%s</th>' % (self.cssclasses[day], s)
-
-    def formatmonthname(self, theyear, themonth, withyear=True):
-        with TimeEncoding(self.locale) as encoding:
-            s = month_name[themonth]
-            if encoding is not None:
-                s = s.decode(encoding)
-            if withyear:
-                s = '%s %s' % (s, theyear)
-            return '<tr><th colspan="7" class="month">%s</th></tr>' % s
-
-
-# Support for old module level interface
-c = TextCalendar()
-
-firstweekday = c.getfirstweekday
-
-def setfirstweekday(firstweekday):
-    try:
-        firstweekday.__index__
-    except AttributeError:
-        raise IllegalWeekdayError(firstweekday)
-    if not MONDAY <= firstweekday <= SUNDAY:
-        raise IllegalWeekdayError(firstweekday)
-    c.firstweekday = firstweekday
-
-monthcalendar = c.monthdayscalendar
-prweek = c.prweek
-week = c.formatweek
-weekheader = c.formatweekheader
-prmonth = c.prmonth
-month = c.formatmonth
-calendar = c.formatyear
-prcal = c.pryear
-
-
-# Spacing of month columns for multi-column year calendar
-_colwidth = 7*3 - 1         # Amount printed by prweek()
-_spacing = 6                # Number of spaces between columns
-
-
-def format(cols, colwidth=_colwidth, spacing=_spacing):
-    """Prints multi-column formatting for year calendars"""
-    print formatstring(cols, colwidth, spacing)
-
-
-def formatstring(cols, colwidth=_colwidth, spacing=_spacing):
-    """Returns a string formatted from n strings, centered within n columns."""
-    spacing *= ' '
-    return spacing.join(c.center(colwidth) for c in cols)
-
-
-EPOCH = 1970
-_EPOCH_ORD = datetime.date(EPOCH, 1, 1).toordinal()
-
-
-def timegm(tuple):
-    """Unrelated but handy function to calculate Unix timestamp from GMT."""
-    year, month, day, hour, minute, second = tuple[:6]
-    days = datetime.date(year, month, 1).toordinal() - _EPOCH_ORD + day - 1
-    hours = days*24 + hour
-    minutes = hours*60 + minute
-    seconds = minutes*60 + second
-    return seconds
-
-
-def main(args):
-    import optparse
-    parser = optparse.OptionParser(usage="usage: %prog [options] [year [month]]")
-    parser.add_option(
-        "-w", "--width",
-        dest="width", type="int", default=2,
-        help="width of date column (default 2, text only)"
-    )
-    parser.add_option(
-        "-l", "--lines",
-        dest="lines", type="int", default=1,
-        help="number of lines for each week (default 1, text only)"
-    )
-    parser.add_option(
-        "-s", "--spacing",
-        dest="spacing", type="int", default=6,
-        help="spacing between months (default 6, text only)"
-    )
-    parser.add_option(
-        "-m", "--months",
-        dest="months", type="int", default=3,
-        help="months per row (default 3, text only)"
-    )
-    parser.add_option(
-        "-c", "--css",
-        dest="css", default="calendar.css",
-        help="CSS to use for page (html only)"
-    )
-    parser.add_option(
-        "-L", "--locale",
-        dest="locale", default=None,
-        help="locale to be used from month and weekday names"
-    )
-    parser.add_option(
-        "-e", "--encoding",
-        dest="encoding", default=None,
-        help="Encoding to use for output"
-    )
-    parser.add_option(
-        "-t", "--type",
-        dest="type", default="text",
-        choices=("text", "html"),
-        help="output type (text or html)"
-    )
-
-    (options, args) = parser.parse_args(args)
-
-    if options.locale and not options.encoding:
-        parser.error("if --locale is specified --encoding is required")
-        sys.exit(1)
-
-    locale = options.locale, options.encoding
-
-    if options.type == "html":
-        if options.locale:
-            cal = LocaleHTMLCalendar(locale=locale)
-        else:
-            cal = HTMLCalendar()
-        encoding = options.encoding
-        if encoding is None:
-            encoding = sys.getdefaultencoding()
-        optdict = dict(encoding=encoding, css=options.css)
-        if len(args) == 1:
-            print cal.formatyearpage(datetime.date.today().year, **optdict)
-        elif len(args) == 2:
-            print cal.formatyearpage(int(args[1]), **optdict)
-        else:
-            parser.error("incorrect number of arguments")
-            sys.exit(1)
-    else:
-        if options.locale:
-            cal = LocaleTextCalendar(locale=locale)
-        else:
-            cal = TextCalendar()
-        optdict = dict(w=options.width, l=options.lines)
-        if len(args) != 3:
-            optdict["c"] = options.spacing
-            optdict["m"] = options.months
-        if len(args) == 1:
-            result = cal.formatyear(datetime.date.today().year, **optdict)
-        elif len(args) == 2:
-            result = cal.formatyear(int(args[1]), **optdict)
-        elif len(args) == 3:
-            result = cal.formatmonth(int(args[1]), int(args[2]), **optdict)
-        else:
-            parser.error("incorrect number of arguments")
-            sys.exit(1)
-        if options.encoding:
-            result = result.encode(options.encoding)
-        print result
-
-
-if __name__ == "__main__":
-    main(sys.argv)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/cgi.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/cgi.py
deleted file mode 100644
index c3d95b8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/cgi.py
+++ /dev/null
@@ -1,1051 +0,0 @@
-#! /usr/local/bin/python
-
-# NOTE: the above "/usr/local/bin/python" is NOT a mistake.  It is
-# intentionally NOT "/usr/bin/env python".  On many systems
-# (e.g. Solaris), /usr/local/bin is not in $PATH as passed to CGI
-# scripts, and /usr/local/bin is the default directory where Python is
-# installed, so /usr/bin/env would be unable to find python.  Granted,
-# binary installations by Linux vendors often install Python in
-# /usr/bin.  So let those vendors patch cgi.py to match their choice
-# of installation.
-
-"""Support module for CGI (Common Gateway Interface) scripts.
-
-This module defines a number of utilities for use by CGI scripts
-written in Python.
-"""
-
-# XXX Perhaps there should be a slimmed version that doesn't contain
-# all those backwards compatible and debugging classes and functions?
-
-# History
-# -------
-#
-# Michael McLay started this module.  Steve Majewski changed the
-# interface to SvFormContentDict and FormContentDict.  The multipart
-# parsing was inspired by code submitted by Andreas Paepcke.  Guido van
-# Rossum rewrote, reformatted and documented the module and is currently
-# responsible for its maintenance.
-#
-
-__version__ = "2.6"
-
-
-# Imports
-# =======
-
-from operator import attrgetter
-import sys
-import os
-import urllib
-import UserDict
-import urlparse
-
-from warnings import filterwarnings, catch_warnings, warn
-with catch_warnings():
-    if sys.py3kwarning:
-        filterwarnings("ignore", ".*mimetools has been removed",
-                       DeprecationWarning)
-        filterwarnings("ignore", ".*rfc822 has been removed",
-                       DeprecationWarning)
-    import mimetools
-    import rfc822
-
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-__all__ = ["MiniFieldStorage", "FieldStorage", "FormContentDict",
-           "SvFormContentDict", "InterpFormContentDict", "FormContent",
-           "parse", "parse_qs", "parse_qsl", "parse_multipart",
-           "parse_header", "print_exception", "print_environ",
-           "print_form", "print_directory", "print_arguments",
-           "print_environ_usage", "escape"]
-
-# Logging support
-# ===============
-
-logfile = ""            # Filename to log to, if not empty
-logfp = None            # File object to log to, if not None
-
-def initlog(*allargs):
-    """Write a log message, if there is a log file.
-
-    Even though this function is called initlog(), you should always
-    use log(); log is a variable that is set either to initlog
-    (initially), to dolog (once the log file has been opened), or to
-    nolog (when logging is disabled).
-
-    The first argument is a format string; the remaining arguments (if
-    any) are arguments to the % operator, so e.g.
-        log("%s: %s", "a", "b")
-    will write "a: b" to the log file, followed by a newline.
-
-    If the global logfp is not None, it should be a file object to
-    which log data is written.
-
-    If the global logfp is None, the global logfile may be a string
-    giving a filename to open, in append mode.  This file should be
-    world writable!!!  If the file can't be opened, logging is
-    silently disabled (since there is no safe place where we could
-    send an error message).
-
-    """
-    global logfp, log
-    if logfile and not logfp:
-        try:
-            logfp = open(logfile, "a")
-        except IOError:
-            pass
-    if not logfp:
-        log = nolog
-    else:
-        log = dolog
-    log(*allargs)
-
-def dolog(fmt, *args):
-    """Write a log message to the log file.  See initlog() for docs."""
-    logfp.write(fmt%args + "\n")
-
-def nolog(*allargs):
-    """Dummy function, assigned to log when logging is disabled."""
-    pass
-
-log = initlog           # The current logging function
-
-
-# Parsing functions
-# =================
-
-# Maximum input we will accept when REQUEST_METHOD is POST
-# 0 ==> unlimited input
-maxlen = 0
-
-def parse(fp=None, environ=os.environ, keep_blank_values=0, strict_parsing=0):
-    """Parse a query in the environment or from a file (default stdin)
-
-        Arguments, all optional:
-
-        fp              : file pointer; default: sys.stdin
-
-        environ         : environment dictionary; default: os.environ
-
-        keep_blank_values: flag indicating whether blank values in
-            percent-encoded forms should be treated as blank strings.
-            A true value indicates that blanks should be retained as
-            blank strings.  The default false value indicates that
-            blank values are to be ignored and treated as if they were
-            not included.
-
-        strict_parsing: flag indicating what to do with parsing errors.
-            If false (the default), errors are silently ignored.
-            If true, errors raise a ValueError exception.
-    """
-    if fp is None:
-        fp = sys.stdin
-    if not 'REQUEST_METHOD' in environ:
-        environ['REQUEST_METHOD'] = 'GET'       # For testing stand-alone
-    if environ['REQUEST_METHOD'] == 'POST':
-        ctype, pdict = parse_header(environ['CONTENT_TYPE'])
-        if ctype == 'multipart/form-data':
-            return parse_multipart(fp, pdict)
-        elif ctype == 'application/x-www-form-urlencoded':
-            clength = int(environ['CONTENT_LENGTH'])
-            if maxlen and clength > maxlen:
-                raise ValueError, 'Maximum content length exceeded'
-            qs = fp.read(clength)
-        else:
-            qs = ''                     # Unknown content-type
-        if 'QUERY_STRING' in environ:
-            if qs: qs = qs + '&'
-            qs = qs + environ['QUERY_STRING']
-        elif sys.argv[1:]:
-            if qs: qs = qs + '&'
-            qs = qs + sys.argv[1]
-        environ['QUERY_STRING'] = qs    # XXX Shouldn't, really
-    elif 'QUERY_STRING' in environ:
-        qs = environ['QUERY_STRING']
-    else:
-        if sys.argv[1:]:
-            qs = sys.argv[1]
-        else:
-            qs = ""
-        environ['QUERY_STRING'] = qs    # XXX Shouldn't, really
-    return urlparse.parse_qs(qs, keep_blank_values, strict_parsing)
-
-
-# parse query string function called from urlparse,
-# this is done in order to maintain backward compatiblity.
-
-def parse_qs(qs, keep_blank_values=0, strict_parsing=0):
-    """Parse a query given as a string argument."""
-    warn("cgi.parse_qs is deprecated, use urlparse.parse_qs instead",
-         PendingDeprecationWarning, 2)
-    return urlparse.parse_qs(qs, keep_blank_values, strict_parsing)
-
-
-def parse_qsl(qs, keep_blank_values=0, strict_parsing=0):
-    """Parse a query given as a string argument."""
-    warn("cgi.parse_qsl is deprecated, use urlparse.parse_qsl instead",
-         PendingDeprecationWarning, 2)
-    return urlparse.parse_qsl(qs, keep_blank_values, strict_parsing)
-
-def parse_multipart(fp, pdict):
-    """Parse multipart input.
-
-    Arguments:
-    fp   : input file
-    pdict: dictionary containing other parameters of content-type header
-
-    Returns a dictionary just like parse_qs(): keys are the field names, each
-    value is a list of values for that field.  This is easy to use but not
-    much good if you are expecting megabytes to be uploaded -- in that case,
-    use the FieldStorage class instead which is much more flexible.  Note
-    that content-type is the raw, unparsed contents of the content-type
-    header.
-
-    XXX This does not parse nested multipart parts -- use FieldStorage for
-    that.
-
-    XXX This should really be subsumed by FieldStorage altogether -- no
-    point in having two implementations of the same parsing algorithm.
-    Also, FieldStorage protects itself better against certain DoS attacks
-    by limiting the size of the data read in one chunk.  The API here
-    does not support that kind of protection.  This also affects parse()
-    since it can call parse_multipart().
-
-    """
-    boundary = ""
-    if 'boundary' in pdict:
-        boundary = pdict['boundary']
-    if not valid_boundary(boundary):
-        raise ValueError,  ('Invalid boundary in multipart form: %r'
-                            % (boundary,))
-
-    nextpart = "--" + boundary
-    lastpart = "--" + boundary + "--"
-    partdict = {}
-    terminator = ""
-
-    while terminator != lastpart:
-        bytes = -1
-        data = None
-        if terminator:
-            # At start of next part.  Read headers first.
-            headers = mimetools.Message(fp)
-            clength = headers.getheader('content-length')
-            if clength:
-                try:
-                    bytes = int(clength)
-                except ValueError:
-                    pass
-            if bytes > 0:
-                if maxlen and bytes > maxlen:
-                    raise ValueError, 'Maximum content length exceeded'
-                data = fp.read(bytes)
-            else:
-                data = ""
-        # Read lines until end of part.
-        lines = []
-        while 1:
-            line = fp.readline()
-            if not line:
-                terminator = lastpart # End outer loop
-                break
-            if line[:2] == "--":
-                terminator = line.strip()
-                if terminator in (nextpart, lastpart):
-                    break
-            lines.append(line)
-        # Done with part.
-        if data is None:
-            continue
-        if bytes < 0:
-            if lines:
-                # Strip final line terminator
-                line = lines[-1]
-                if line[-2:] == "\r\n":
-                    line = line[:-2]
-                elif line[-1:] == "\n":
-                    line = line[:-1]
-                lines[-1] = line
-                data = "".join(lines)
-        line = headers['content-disposition']
-        if not line:
-            continue
-        key, params = parse_header(line)
-        if key != 'form-data':
-            continue
-        if 'name' in params:
-            name = params['name']
-        else:
-            continue
-        if name in partdict:
-            partdict[name].append(data)
-        else:
-            partdict[name] = [data]
-
-    return partdict
-
-
-def _parseparam(s):
-    while s[:1] == ';':
-        s = s[1:]
-        end = s.find(';')
-        while end > 0 and s.count('"', 0, end) % 2:
-            end = s.find(';', end + 1)
-        if end < 0:
-            end = len(s)
-        f = s[:end]
-        yield f.strip()
-        s = s[end:]
-
-def parse_header(line):
-    """Parse a Content-type like header.
-
-    Return the main content-type and a dictionary of options.
-
-    """
-    parts = _parseparam(';' + line)
-    key = parts.next()
-    pdict = {}
-    for p in parts:
-        i = p.find('=')
-        if i >= 0:
-            name = p[:i].strip().lower()
-            value = p[i+1:].strip()
-            if len(value) >= 2 and value[0] == value[-1] == '"':
-                value = value[1:-1]
-                value = value.replace('\\\\', '\\').replace('\\"', '"')
-            pdict[name] = value
-    return key, pdict
-
-
-# Classes for field storage
-# =========================
-
-class MiniFieldStorage:
-
-    """Like FieldStorage, for use when no file uploads are possible."""
-
-    # Dummy attributes
-    filename = None
-    list = None
-    type = None
-    file = None
-    type_options = {}
-    disposition = None
-    disposition_options = {}
-    headers = {}
-
-    def __init__(self, name, value):
-        """Constructor from field name and value."""
-        self.name = name
-        self.value = value
-        # self.file = StringIO(value)
-
-    def __repr__(self):
-        """Return printable representation."""
-        return "MiniFieldStorage(%r, %r)" % (self.name, self.value)
-
-
-class FieldStorage:
-
-    """Store a sequence of fields, reading multipart/form-data.
-
-    This class provides naming, typing, files stored on disk, and
-    more.  At the top level, it is accessible like a dictionary, whose
-    keys are the field names.  (Note: None can occur as a field name.)
-    The items are either a Python list (if there's multiple values) or
-    another FieldStorage or MiniFieldStorage object.  If it's a single
-    object, it has the following attributes:
-
-    name: the field name, if specified; otherwise None
-
-    filename: the filename, if specified; otherwise None; this is the
-        client side filename, *not* the file name on which it is
-        stored (that's a temporary file you don't deal with)
-
-    value: the value as a *string*; for file uploads, this
-        transparently reads the file every time you request the value
-
-    file: the file(-like) object from which you can read the data;
-        None if the data is stored a simple string
-
-    type: the content-type, or None if not specified
-
-    type_options: dictionary of options specified on the content-type
-        line
-
-    disposition: content-disposition, or None if not specified
-
-    disposition_options: dictionary of corresponding options
-
-    headers: a dictionary(-like) object (sometimes rfc822.Message or a
-        subclass thereof) containing *all* headers
-
-    The class is subclassable, mostly for the purpose of overriding
-    the make_file() method, which is called internally to come up with
-    a file open for reading and writing.  This makes it possible to
-    override the default choice of storing all files in a temporary
-    directory and unlinking them as soon as they have been opened.
-
-    """
-
-    def __init__(self, fp=None, headers=None, outerboundary="",
-                 environ=os.environ, keep_blank_values=0, strict_parsing=0):
-        """Constructor.  Read multipart/* until last part.
-
-        Arguments, all optional:
-
-        fp              : file pointer; default: sys.stdin
-            (not used when the request method is GET)
-
-        headers         : header dictionary-like object; default:
-            taken from environ as per CGI spec
-
-        outerboundary   : terminating multipart boundary
-            (for internal use only)
-
-        environ         : environment dictionary; default: os.environ
-
-        keep_blank_values: flag indicating whether blank values in
-            percent-encoded forms should be treated as blank strings.
-            A true value indicates that blanks should be retained as
-            blank strings.  The default false value indicates that
-            blank values are to be ignored and treated as if they were
-            not included.
-
-        strict_parsing: flag indicating what to do with parsing errors.
-            If false (the default), errors are silently ignored.
-            If true, errors raise a ValueError exception.
-
-        """
-        method = 'GET'
-        self.keep_blank_values = keep_blank_values
-        self.strict_parsing = strict_parsing
-        if 'REQUEST_METHOD' in environ:
-            method = environ['REQUEST_METHOD'].upper()
-        self.qs_on_post = None
-        if method == 'GET' or method == 'HEAD':
-            if 'QUERY_STRING' in environ:
-                qs = environ['QUERY_STRING']
-            elif sys.argv[1:]:
-                qs = sys.argv[1]
-            else:
-                qs = ""
-            fp = StringIO(qs)
-            if headers is None:
-                headers = {'content-type':
-                           "application/x-www-form-urlencoded"}
-        if headers is None:
-            headers = {}
-            if method == 'POST':
-                # Set default content-type for POST to what's traditional
-                headers['content-type'] = "application/x-www-form-urlencoded"
-            if 'CONTENT_TYPE' in environ:
-                headers['content-type'] = environ['CONTENT_TYPE']
-            if 'QUERY_STRING' in environ:
-                self.qs_on_post = environ['QUERY_STRING']
-            if 'CONTENT_LENGTH' in environ:
-                headers['content-length'] = environ['CONTENT_LENGTH']
-        self.fp = fp or sys.stdin
-        self.headers = headers
-        self.outerboundary = outerboundary
-
-        # Process content-disposition header
-        cdisp, pdict = "", {}
-        if 'content-disposition' in self.headers:
-            cdisp, pdict = parse_header(self.headers['content-disposition'])
-        self.disposition = cdisp
-        self.disposition_options = pdict
-        self.name = None
-        if 'name' in pdict:
-            self.name = pdict['name']
-        self.filename = None
-        if 'filename' in pdict:
-            self.filename = pdict['filename']
-
-        # Process content-type header
-        #
-        # Honor any existing content-type header.  But if there is no
-        # content-type header, use some sensible defaults.  Assume
-        # outerboundary is "" at the outer level, but something non-false
-        # inside a multi-part.  The default for an inner part is text/plain,
-        # but for an outer part it should be urlencoded.  This should catch
-        # bogus clients which erroneously forget to include a content-type
-        # header.
-        #
-        # See below for what we do if there does exist a content-type header,
-        # but it happens to be something we don't understand.
-        if 'content-type' in self.headers:
-            ctype, pdict = parse_header(self.headers['content-type'])
-        elif self.outerboundary or method != 'POST':
-            ctype, pdict = "text/plain", {}
-        else:
-            ctype, pdict = 'application/x-www-form-urlencoded', {}
-        self.type = ctype
-        self.type_options = pdict
-        self.innerboundary = ""
-        if 'boundary' in pdict:
-            self.innerboundary = pdict['boundary']
-        clen = -1
-        if 'content-length' in self.headers:
-            try:
-                clen = int(self.headers['content-length'])
-            except ValueError:
-                pass
-            if maxlen and clen > maxlen:
-                raise ValueError, 'Maximum content length exceeded'
-        self.length = clen
-
-        self.list = self.file = None
-        self.done = 0
-        if ctype == 'application/x-www-form-urlencoded':
-            self.read_urlencoded()
-        elif ctype[:10] == 'multipart/':
-            self.read_multi(environ, keep_blank_values, strict_parsing)
-        else:
-            self.read_single()
-
-    def __repr__(self):
-        """Return a printable representation."""
-        return "FieldStorage(%r, %r, %r)" % (
-                self.name, self.filename, self.value)
-
-    def __iter__(self):
-        return iter(self.keys())
-
-    def __getattr__(self, name):
-        if name != 'value':
-            raise AttributeError, name
-        if self.file:
-            self.file.seek(0)
-            value = self.file.read()
-            self.file.seek(0)
-        elif self.list is not None:
-            value = self.list
-        else:
-            value = None
-        return value
-
-    def __getitem__(self, key):
-        """Dictionary style indexing."""
-        if self.list is None:
-            raise TypeError, "not indexable"
-        found = []
-        for item in self.list:
-            if item.name == key: found.append(item)
-        if not found:
-            raise KeyError, key
-        if len(found) == 1:
-            return found[0]
-        else:
-            return found
-
-    def getvalue(self, key, default=None):
-        """Dictionary style get() method, including 'value' lookup."""
-        if key in self:
-            value = self[key]
-            if type(value) is type([]):
-                return map(attrgetter('value'), value)
-            else:
-                return value.value
-        else:
-            return default
-
-    def getfirst(self, key, default=None):
-        """ Return the first value received."""
-        if key in self:
-            value = self[key]
-            if type(value) is type([]):
-                return value[0].value
-            else:
-                return value.value
-        else:
-            return default
-
-    def getlist(self, key):
-        """ Return list of received values."""
-        if key in self:
-            value = self[key]
-            if type(value) is type([]):
-                return map(attrgetter('value'), value)
-            else:
-                return [value.value]
-        else:
-            return []
-
-    def keys(self):
-        """Dictionary style keys() method."""
-        if self.list is None:
-            raise TypeError, "not indexable"
-        return list(set(item.name for item in self.list))
-
-    def has_key(self, key):
-        """Dictionary style has_key() method."""
-        if self.list is None:
-            raise TypeError, "not indexable"
-        return any(item.name == key for item in self.list)
-
-    def __contains__(self, key):
-        """Dictionary style __contains__ method."""
-        if self.list is None:
-            raise TypeError, "not indexable"
-        return any(item.name == key for item in self.list)
-
-    def __len__(self):
-        """Dictionary style len(x) support."""
-        return len(self.keys())
-
-    def __nonzero__(self):
-        return bool(self.list)
-
-    def read_urlencoded(self):
-        """Internal: read data in query string format."""
-        qs = self.fp.read(self.length)
-        if self.qs_on_post:
-            qs += '&' + self.qs_on_post
-        self.list = list = []
-        for key, value in urlparse.parse_qsl(qs, self.keep_blank_values,
-                                            self.strict_parsing):
-            list.append(MiniFieldStorage(key, value))
-        self.skip_lines()
-
-    FieldStorageClass = None
-
-    def read_multi(self, environ, keep_blank_values, strict_parsing):
-        """Internal: read a part that is itself multipart."""
-        ib = self.innerboundary
-        if not valid_boundary(ib):
-            raise ValueError, 'Invalid boundary in multipart form: %r' % (ib,)
-        self.list = []
-        if self.qs_on_post:
-            for key, value in urlparse.parse_qsl(self.qs_on_post,
-                                self.keep_blank_values, self.strict_parsing):
-                self.list.append(MiniFieldStorage(key, value))
-            FieldStorageClass = None
-
-        klass = self.FieldStorageClass or self.__class__
-        part = klass(self.fp, {}, ib,
-                     environ, keep_blank_values, strict_parsing)
-        # Throw first part away
-        while not part.done:
-            headers = rfc822.Message(self.fp)
-            part = klass(self.fp, headers, ib,
-                         environ, keep_blank_values, strict_parsing)
-            self.list.append(part)
-        self.skip_lines()
-
-    def read_single(self):
-        """Internal: read an atomic part."""
-        if self.length >= 0:
-            self.read_binary()
-            self.skip_lines()
-        else:
-            self.read_lines()
-        self.file.seek(0)
-
-    bufsize = 8*1024            # I/O buffering size for copy to file
-
-    def read_binary(self):
-        """Internal: read binary data."""
-        self.file = self.make_file('b')
-        todo = self.length
-        if todo >= 0:
-            while todo > 0:
-                data = self.fp.read(min(todo, self.bufsize))
-                if not data:
-                    self.done = -1
-                    break
-                self.file.write(data)
-                todo = todo - len(data)
-
-    def read_lines(self):
-        """Internal: read lines until EOF or outerboundary."""
-        self.file = self.__file = StringIO()
-        if self.outerboundary:
-            self.read_lines_to_outerboundary()
-        else:
-            self.read_lines_to_eof()
-
-    def __write(self, line):
-        if self.__file is not None:
-            if self.__file.tell() + len(line) > 1000:
-                self.file = self.make_file('')
-                self.file.write(self.__file.getvalue())
-                self.__file = None
-        self.file.write(line)
-
-    def read_lines_to_eof(self):
-        """Internal: read lines until EOF."""
-        while 1:
-            line = self.fp.readline(1<<16)
-            if not line:
-                self.done = -1
-                break
-            self.__write(line)
-
-    def read_lines_to_outerboundary(self):
-        """Internal: read lines until outerboundary."""
-        next = "--" + self.outerboundary
-        last = next + "--"
-        delim = ""
-        last_line_lfend = True
-        while 1:
-            line = self.fp.readline(1<<16)
-            if not line:
-                self.done = -1
-                break
-            if line[:2] == "--" and last_line_lfend:
-                strippedline = line.strip()
-                if strippedline == next:
-                    break
-                if strippedline == last:
-                    self.done = 1
-                    break
-            odelim = delim
-            if line[-2:] == "\r\n":
-                delim = "\r\n"
-                line = line[:-2]
-                last_line_lfend = True
-            elif line[-1] == "\n":
-                delim = "\n"
-                line = line[:-1]
-                last_line_lfend = True
-            else:
-                delim = ""
-                last_line_lfend = False
-            self.__write(odelim + line)
-
-    def skip_lines(self):
-        """Internal: skip lines until outer boundary if defined."""
-        if not self.outerboundary or self.done:
-            return
-        next = "--" + self.outerboundary
-        last = next + "--"
-        last_line_lfend = True
-        while 1:
-            line = self.fp.readline(1<<16)
-            if not line:
-                self.done = -1
-                break
-            if line[:2] == "--" and last_line_lfend:
-                strippedline = line.strip()
-                if strippedline == next:
-                    break
-                if strippedline == last:
-                    self.done = 1
-                    break
-            last_line_lfend = line.endswith('\n')
-
-    def make_file(self, binary=None):
-        """Overridable: return a readable & writable file.
-
-        The file will be used as follows:
-        - data is written to it
-        - seek(0)
-        - data is read from it
-
-        The 'binary' argument is unused -- the file is always opened
-        in binary mode.
-
-        This version opens a temporary file for reading and writing,
-        and immediately deletes (unlinks) it.  The trick (on Unix!) is
-        that the file can still be used, but it can't be opened by
-        another process, and it will automatically be deleted when it
-        is closed or when the current process terminates.
-
-        If you want a more permanent file, you derive a class which
-        overrides this method.  If you want a visible temporary file
-        that is nevertheless automatically deleted when the script
-        terminates, try defining a __del__ method in a derived class
-        which unlinks the temporary files you have created.
-
-        """
-        import tempfile
-        return tempfile.TemporaryFile("w+b")
-
-
-
-# Backwards Compatibility Classes
-# ===============================
-
-class FormContentDict(UserDict.UserDict):
-    """Form content as dictionary with a list of values per field.
-
-    form = FormContentDict()
-
-    form[key] -> [value, value, ...]
-    key in form -> Boolean
-    form.keys() -> [key, key, ...]
-    form.values() -> [[val, val, ...], [val, val, ...], ...]
-    form.items() ->  [(key, [val, val, ...]), (key, [val, val, ...]), ...]
-    form.dict == {key: [val, val, ...], ...}
-
-    """
-    def __init__(self, environ=os.environ, keep_blank_values=0, strict_parsing=0):
-        self.dict = self.data = parse(environ=environ,
-                                      keep_blank_values=keep_blank_values,
-                                      strict_parsing=strict_parsing)
-        self.query_string = environ['QUERY_STRING']
-
-
-class SvFormContentDict(FormContentDict):
-    """Form content as dictionary expecting a single value per field.
-
-    If you only expect a single value for each field, then form[key]
-    will return that single value.  It will raise an IndexError if
-    that expectation is not true.  If you expect a field to have
-    possible multiple values, than you can use form.getlist(key) to
-    get all of the values.  values() and items() are a compromise:
-    they return single strings where there is a single value, and
-    lists of strings otherwise.
-
-    """
-    def __getitem__(self, key):
-        if len(self.dict[key]) > 1:
-            raise IndexError, 'expecting a single value'
-        return self.dict[key][0]
-    def getlist(self, key):
-        return self.dict[key]
-    def values(self):
-        result = []
-        for value in self.dict.values():
-            if len(value) == 1:
-                result.append(value[0])
-            else: result.append(value)
-        return result
-    def items(self):
-        result = []
-        for key, value in self.dict.items():
-            if len(value) == 1:
-                result.append((key, value[0]))
-            else: result.append((key, value))
-        return result
-
-
-class InterpFormContentDict(SvFormContentDict):
-    """This class is present for backwards compatibility only."""
-    def __getitem__(self, key):
-        v = SvFormContentDict.__getitem__(self, key)
-        if v[0] in '0123456789+-.':
-            try: return int(v)
-            except ValueError:
-                try: return float(v)
-                except ValueError: pass
-        return v.strip()
-    def values(self):
-        result = []
-        for key in self.keys():
-            try:
-                result.append(self[key])
-            except IndexError:
-                result.append(self.dict[key])
-        return result
-    def items(self):
-        result = []
-        for key in self.keys():
-            try:
-                result.append((key, self[key]))
-            except IndexError:
-                result.append((key, self.dict[key]))
-        return result
-
-
-class FormContent(FormContentDict):
-    """This class is present for backwards compatibility only."""
-    def values(self, key):
-        if key in self.dict :return self.dict[key]
-        else: return None
-    def indexed_value(self, key, location):
-        if key in self.dict:
-            if len(self.dict[key]) > location:
-                return self.dict[key][location]
-            else: return None
-        else: return None
-    def value(self, key):
-        if key in self.dict: return self.dict[key][0]
-        else: return None
-    def length(self, key):
-        return len(self.dict[key])
-    def stripped(self, key):
-        if key in self.dict: return self.dict[key][0].strip()
-        else: return None
-    def pars(self):
-        return self.dict
-
-
-# Test/debug code
-# ===============
-
-def test(environ=os.environ):
-    """Robust test CGI script, usable as main program.
-
-    Write minimal HTTP headers and dump all information provided to
-    the script in HTML form.
-
-    """
-    print "Content-type: text/html"
-    print
-    sys.stderr = sys.stdout
-    try:
-        form = FieldStorage()   # Replace with other classes to test those
-        print_directory()
-        print_arguments()
-        print_form(form)
-        print_environ(environ)
-        print_environ_usage()
-        def f():
-            exec "testing print_exception() -- <I>italics?</I>"
-        def g(f=f):
-            f()
-        print "<H3>What follows is a test, not an actual exception:</H3>"
-        g()
-    except:
-        print_exception()
-
-    print "<H1>Second try with a small maxlen...</H1>"
-
-    global maxlen
-    maxlen = 50
-    try:
-        form = FieldStorage()   # Replace with other classes to test those
-        print_directory()
-        print_arguments()
-        print_form(form)
-        print_environ(environ)
-    except:
-        print_exception()
-
-def print_exception(type=None, value=None, tb=None, limit=None):
-    if type is None:
-        type, value, tb = sys.exc_info()
-    import traceback
-    print
-    print "<H3>Traceback (most recent call last):</H3>"
-    list = traceback.format_tb(tb, limit) + \
-           traceback.format_exception_only(type, value)
-    print "<PRE>%s<B>%s</B></PRE>" % (
-        escape("".join(list[:-1])),
-        escape(list[-1]),
-        )
-    del tb
-
-def print_environ(environ=os.environ):
-    """Dump the shell environment as HTML."""
-    keys = environ.keys()
-    keys.sort()
-    print
-    print "<H3>Shell Environment:</H3>"
-    print "<DL>"
-    for key in keys:
-        print "<DT>", escape(key), "<DD>", escape(environ[key])
-    print "</DL>"
-    print
-
-def print_form(form):
-    """Dump the contents of a form as HTML."""
-    keys = form.keys()
-    keys.sort()
-    print
-    print "<H3>Form Contents:</H3>"
-    if not keys:
-        print "<P>No form fields."
-    print "<DL>"
-    for key in keys:
-        print "<DT>" + escape(key) + ":",
-        value = form[key]
-        print "<i>" + escape(repr(type(value))) + "</i>"
-        print "<DD>" + escape(repr(value))
-    print "</DL>"
-    print
-
-def print_directory():
-    """Dump the current directory as HTML."""
-    print
-    print "<H3>Current Working Directory:</H3>"
-    try:
-        pwd = os.getcwd()
-    except os.error, msg:
-        print "os.error:", escape(str(msg))
-    else:
-        print escape(pwd)
-    print
-
-def print_arguments():
-    print
-    print "<H3>Command Line Arguments:</H3>"
-    print
-    print sys.argv
-    print
-
-def print_environ_usage():
-    """Dump a list of environment variables used by CGI as HTML."""
-    print """
-<H3>These environment variables could have been set:</H3>
-<UL>
-<LI>AUTH_TYPE
-<LI>CONTENT_LENGTH
-<LI>CONTENT_TYPE
-<LI>DATE_GMT
-<LI>DATE_LOCAL
-<LI>DOCUMENT_NAME
-<LI>DOCUMENT_ROOT
-<LI>DOCUMENT_URI
-<LI>GATEWAY_INTERFACE
-<LI>LAST_MODIFIED
-<LI>PATH
-<LI>PATH_INFO
-<LI>PATH_TRANSLATED
-<LI>QUERY_STRING
-<LI>REMOTE_ADDR
-<LI>REMOTE_HOST
-<LI>REMOTE_IDENT
-<LI>REMOTE_USER
-<LI>REQUEST_METHOD
-<LI>SCRIPT_NAME
-<LI>SERVER_NAME
-<LI>SERVER_PORT
-<LI>SERVER_PROTOCOL
-<LI>SERVER_ROOT
-<LI>SERVER_SOFTWARE
-</UL>
-In addition, HTTP headers sent by the server may be passed in the
-environment as well.  Here are some common variable names:
-<UL>
-<LI>HTTP_ACCEPT
-<LI>HTTP_CONNECTION
-<LI>HTTP_HOST
-<LI>HTTP_PRAGMA
-<LI>HTTP_REFERER
-<LI>HTTP_USER_AGENT
-</UL>
-"""
-
-
-# Utilities
-# =========
-
-def escape(s, quote=None):
-    '''Replace special characters "&", "<" and ">" to HTML-safe sequences.
-    If the optional flag quote is true, the quotation mark character (")
-    is also translated.'''
-    s = s.replace("&", "&amp;") # Must be done first!
-    s = s.replace("<", "&lt;")
-    s = s.replace(">", "&gt;")
-    if quote:
-        s = s.replace('"', "&quot;")
-    return s
-
-def valid_boundary(s, _vb_pattern="^[ -~]{0,200}[!-~]$"):
-    import re
-    return re.match(_vb_pattern, s)
-
-# Invoke mainline
-# ===============
-
-# Call test() when this file is run as a script (not imported as a module)
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/cgitb.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/cgitb.py
deleted file mode 100644
index e6e9117..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/cgitb.py
+++ /dev/null
@@ -1,318 +0,0 @@
-"""More comprehensive traceback formatting for Python scripts.
-
-To enable this module, do:
-
-    import cgitb; cgitb.enable()
-
-at the top of your script.  The optional arguments to enable() are:
-
-    display     - if true, tracebacks are displayed in the web browser
-    logdir      - if set, tracebacks are written to files in this directory
-    context     - number of lines of source code to show for each stack frame
-    format      - 'text' or 'html' controls the output format
-
-By default, tracebacks are displayed but not saved, the context is 5 lines
-and the output format is 'html' (for backwards compatibility with the
-original use of this module)
-
-Alternatively, if you have caught an exception and want cgitb to display it
-for you, call cgitb.handler().  The optional argument to handler() is a
-3-item tuple (etype, evalue, etb) just like the value of sys.exc_info().
-The default handler displays output as HTML.
-
-"""
-import inspect
-import keyword
-import linecache
-import os
-import pydoc
-import sys
-import tempfile
-import time
-import tokenize
-import traceback
-import types
-
-def reset():
-    """Return a string that resets the CGI and browser to a known state."""
-    return '''<!--: spam
-Content-Type: text/html
-
-<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> -->
-<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> --> -->
-</font> </font> </font> </script> </object> </blockquote> </pre>
-</table> </table> </table> </table> </table> </font> </font> </font>'''
-
-__UNDEF__ = []                          # a special sentinel object
-def small(text):
-    if text:
-        return '<small>' + text + '</small>'
-    else:
-        return ''
-
-def strong(text):
-    if text:
-        return '<strong>' + text + '</strong>'
-    else:
-        return ''
-
-def grey(text):
-    if text:
-        return '<font color="#909090">' + text + '</font>'
-    else:
-        return ''
-
-def lookup(name, frame, locals):
-    """Find the value for a given name in the given environment."""
-    if name in locals:
-        return 'local', locals[name]
-    if name in frame.f_globals:
-        return 'global', frame.f_globals[name]
-    if '__builtins__' in frame.f_globals:
-        builtins = frame.f_globals['__builtins__']
-        if type(builtins) is type({}):
-            if name in builtins:
-                return 'builtin', builtins[name]
-        else:
-            if hasattr(builtins, name):
-                return 'builtin', getattr(builtins, name)
-    return None, __UNDEF__
-
-def scanvars(reader, frame, locals):
-    """Scan one logical line of Python and look up values of variables used."""
-    vars, lasttoken, parent, prefix, value = [], None, None, '', __UNDEF__
-    for ttype, token, start, end, line in tokenize.generate_tokens(reader):
-        if ttype == tokenize.NEWLINE: break
-        if ttype == tokenize.NAME and token not in keyword.kwlist:
-            if lasttoken == '.':
-                if parent is not __UNDEF__:
-                    value = getattr(parent, token, __UNDEF__)
-                    vars.append((prefix + token, prefix, value))
-            else:
-                where, value = lookup(token, frame, locals)
-                vars.append((token, where, value))
-        elif token == '.':
-            prefix += lasttoken + '.'
-            parent = value
-        else:
-            parent, prefix = None, ''
-        lasttoken = token
-    return vars
-
-def html(einfo, context=5):
-    """Return a nice HTML document describing a given traceback."""
-    etype, evalue, etb = einfo
-    if type(etype) is types.ClassType:
-        etype = etype.__name__
-    pyver = 'Python ' + sys.version.split()[0] + ': ' + sys.executable
-    date = time.ctime(time.time())
-    head = '<body bgcolor="#f0f0f8">' + pydoc.html.heading(
-        '<big><big>%s</big></big>' %
-        strong(pydoc.html.escape(str(etype))),
-        '#ffffff', '#6622aa', pyver + '<br>' + date) + '''
-<p>A problem occurred in a Python script.  Here is the sequence of
-function calls leading up to the error, in the order they occurred.</p>'''
-
-    indent = '<tt>' + small('&nbsp;' * 5) + '&nbsp;</tt>'
-    frames = []
-    records = inspect.getinnerframes(etb, context)
-    for frame, file, lnum, func, lines, index in records:
-        if file:
-            file = os.path.abspath(file)
-            link = '<a href="file://%s">%s</a>' % (file, pydoc.html.escape(file))
-        else:
-            file = link = '?'
-        args, varargs, varkw, locals = inspect.getargvalues(frame)
-        call = ''
-        if func != '?':
-            call = 'in ' + strong(func) + \
-                inspect.formatargvalues(args, varargs, varkw, locals,
-                    formatvalue=lambda value: '=' + pydoc.html.repr(value))
-
-        highlight = {}
-        def reader(lnum=[lnum]):
-            highlight[lnum[0]] = 1
-            try: return linecache.getline(file, lnum[0])
-            finally: lnum[0] += 1
-        vars = scanvars(reader, frame, locals)
-
-        rows = ['<tr><td bgcolor="#d8bbff">%s%s %s</td></tr>' %
-                ('<big>&nbsp;</big>', link, call)]
-        if index is not None:
-            i = lnum - index
-            for line in lines:
-                num = small('&nbsp;' * (5-len(str(i))) + str(i)) + '&nbsp;'
-                if i in highlight:
-                    line = '<tt>=&gt;%s%s</tt>' % (num, pydoc.html.preformat(line))
-                    rows.append('<tr><td bgcolor="#ffccee">%s</td></tr>' % line)
-                else:
-                    line = '<tt>&nbsp;&nbsp;%s%s</tt>' % (num, pydoc.html.preformat(line))
-                    rows.append('<tr><td>%s</td></tr>' % grey(line))
-                i += 1
-
-        done, dump = {}, []
-        for name, where, value in vars:
-            if name in done: continue
-            done[name] = 1
-            if value is not __UNDEF__:
-                if where in ('global', 'builtin'):
-                    name = ('<em>%s</em> ' % where) + strong(name)
-                elif where == 'local':
-                    name = strong(name)
-                else:
-                    name = where + strong(name.split('.')[-1])
-                dump.append('%s&nbsp;= %s' % (name, pydoc.html.repr(value)))
-            else:
-                dump.append(name + ' <em>undefined</em>')
-
-        rows.append('<tr><td>%s</td></tr>' % small(grey(', '.join(dump))))
-        frames.append('''
-<table width="100%%" cellspacing=0 cellpadding=0 border=0>
-%s</table>''' % '\n'.join(rows))
-
-    exception = ['<p>%s: %s' % (strong(pydoc.html.escape(str(etype))),
-                                pydoc.html.escape(str(evalue)))]
-    if isinstance(evalue, BaseException):
-        for name in dir(evalue):
-            if name[:1] == '_': continue
-            value = pydoc.html.repr(getattr(evalue, name))
-            exception.append('\n<br>%s%s&nbsp;=\n%s' % (indent, name, value))
-
-    return head + ''.join(frames) + ''.join(exception) + '''
-
-
-<!-- The above is a description of an error in a Python program, formatted
-     for a Web browser because the 'cgitb' module was enabled.  In case you
-     are not reading this in a Web browser, here is the original traceback:
-
-%s
--->
-''' % pydoc.html.escape(
-          ''.join(traceback.format_exception(etype, evalue, etb)))
-
-def text(einfo, context=5):
-    """Return a plain text document describing a given traceback."""
-    etype, evalue, etb = einfo
-    if type(etype) is types.ClassType:
-        etype = etype.__name__
-    pyver = 'Python ' + sys.version.split()[0] + ': ' + sys.executable
-    date = time.ctime(time.time())
-    head = "%s\n%s\n%s\n" % (str(etype), pyver, date) + '''
-A problem occurred in a Python script.  Here is the sequence of
-function calls leading up to the error, in the order they occurred.
-'''
-
-    frames = []
-    records = inspect.getinnerframes(etb, context)
-    for frame, file, lnum, func, lines, index in records:
-        file = file and os.path.abspath(file) or '?'
-        args, varargs, varkw, locals = inspect.getargvalues(frame)
-        call = ''
-        if func != '?':
-            call = 'in ' + func + \
-                inspect.formatargvalues(args, varargs, varkw, locals,
-                    formatvalue=lambda value: '=' + pydoc.text.repr(value))
-
-        highlight = {}
-        def reader(lnum=[lnum]):
-            highlight[lnum[0]] = 1
-            try: return linecache.getline(file, lnum[0])
-            finally: lnum[0] += 1
-        vars = scanvars(reader, frame, locals)
-
-        rows = [' %s %s' % (file, call)]
-        if index is not None:
-            i = lnum - index
-            for line in lines:
-                num = '%5d ' % i
-                rows.append(num+line.rstrip())
-                i += 1
-
-        done, dump = {}, []
-        for name, where, value in vars:
-            if name in done: continue
-            done[name] = 1
-            if value is not __UNDEF__:
-                if where == 'global': name = 'global ' + name
-                elif where != 'local': name = where + name.split('.')[-1]
-                dump.append('%s = %s' % (name, pydoc.text.repr(value)))
-            else:
-                dump.append(name + ' undefined')
-
-        rows.append('\n'.join(dump))
-        frames.append('\n%s\n' % '\n'.join(rows))
-
-    exception = ['%s: %s' % (str(etype), str(evalue))]
-    if isinstance(evalue, BaseException):
-        for name in dir(evalue):
-            value = pydoc.text.repr(getattr(evalue, name))
-            exception.append('\n%s%s = %s' % (" "*4, name, value))
-
-    return head + ''.join(frames) + ''.join(exception) + '''
-
-The above is a description of an error in a Python program.  Here is
-the original traceback:
-
-%s
-''' % ''.join(traceback.format_exception(etype, evalue, etb))
-
-class Hook:
-    """A hook to replace sys.excepthook that shows tracebacks in HTML."""
-
-    def __init__(self, display=1, logdir=None, context=5, file=None,
-                 format="html"):
-        self.display = display          # send tracebacks to browser if true
-        self.logdir = logdir            # log tracebacks to files if not None
-        self.context = context          # number of source code lines per frame
-        self.file = file or sys.stdout  # place to send the output
-        self.format = format
-
-    def __call__(self, etype, evalue, etb):
-        self.handle((etype, evalue, etb))
-
-    def handle(self, info=None):
-        info = info or sys.exc_info()
-        if self.format == "html":
-            self.file.write(reset())
-
-        formatter = (self.format=="html") and html or text
-        plain = False
-        try:
-            doc = formatter(info, self.context)
-        except:                         # just in case something goes wrong
-            doc = ''.join(traceback.format_exception(*info))
-            plain = True
-
-        if self.display:
-            if plain:
-                doc = doc.replace('&', '&amp;').replace('<', '&lt;')
-                self.file.write('<pre>' + doc + '</pre>\n')
-            else:
-                self.file.write(doc + '\n')
-        else:
-            self.file.write('<p>A problem occurred in a Python script.\n')
-
-        if self.logdir is not None:
-            suffix = ['.txt', '.html'][self.format=="html"]
-            (fd, path) = tempfile.mkstemp(suffix=suffix, dir=self.logdir)
-            try:
-                file = os.fdopen(fd, 'w')
-                file.write(doc)
-                file.close()
-                msg = '<p> %s contains the description of this error.' % path
-            except:
-                msg = '<p> Tried to save traceback to %s, but failed.' % path
-            self.file.write(msg + '\n')
-        try:
-            self.file.flush()
-        except: pass
-
-handler = Hook().handle
-def enable(display=1, logdir=None, context=5, format="html"):
-    """Install an exception handler that formats tracebacks as HTML.
-
-    The optional argument 'display' can be set to 0 to suppress sending the
-    traceback to the browser, and 'logdir' can be set to a directory to cause
-    tracebacks to be written to files there."""
-    sys.excepthook = Hook(display=display, logdir=logdir,
-                          context=context, format=format)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/chunk.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/chunk.py
deleted file mode 100644
index ef24bf9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/chunk.py
+++ /dev/null
@@ -1,167 +0,0 @@
-"""Simple class to read IFF chunks.
-
-An IFF chunk (used in formats such as AIFF, TIFF, RMFF (RealMedia File
-Format)) has the following structure:
-
-+----------------+
-| ID (4 bytes)   |
-+----------------+
-| size (4 bytes) |
-+----------------+
-| data           |
-| ...            |
-+----------------+
-
-The ID is a 4-byte string which identifies the type of chunk.
-
-The size field (a 32-bit value, encoded using big-endian byte order)
-gives the size of the whole chunk, including the 8-byte header.
-
-Usually an IFF-type file consists of one or more chunks.  The proposed
-usage of the Chunk class defined here is to instantiate an instance at
-the start of each chunk and read from the instance until it reaches
-the end, after which a new instance can be instantiated.  At the end
-of the file, creating a new instance will fail with a EOFError
-exception.
-
-Usage:
-while True:
-    try:
-        chunk = Chunk(file)
-    except EOFError:
-        break
-    chunktype = chunk.getname()
-    while True:
-        data = chunk.read(nbytes)
-        if not data:
-            pass
-        # do something with data
-
-The interface is file-like.  The implemented methods are:
-read, close, seek, tell, isatty.
-Extra methods are: skip() (called by close, skips to the end of the chunk),
-getname() (returns the name (ID) of the chunk)
-
-The __init__ method has one required argument, a file-like object
-(including a chunk instance), and one optional argument, a flag which
-specifies whether or not chunks are aligned on 2-byte boundaries.  The
-default is 1, i.e. aligned.
-"""
-
-class Chunk:
-    def __init__(self, file, align=True, bigendian=True, inclheader=False):
-        import struct
-        self.closed = False
-        self.align = align      # whether to align to word (2-byte) boundaries
-        if bigendian:
-            strflag = '>'
-        else:
-            strflag = '<'
-        self.file = file
-        self.chunkname = file.read(4)
-        if len(self.chunkname) < 4:
-            raise EOFError
-        try:
-            self.chunksize = struct.unpack(strflag+'L', file.read(4))[0]
-        except struct.error:
-            raise EOFError
-        if inclheader:
-            self.chunksize = self.chunksize - 8 # subtract header
-        self.size_read = 0
-        try:
-            self.offset = self.file.tell()
-        except (AttributeError, IOError):
-            self.seekable = False
-        else:
-            self.seekable = True
-
-    def getname(self):
-        """Return the name (ID) of the current chunk."""
-        return self.chunkname
-
-    def getsize(self):
-        """Return the size of the current chunk."""
-        return self.chunksize
-
-    def close(self):
-        if not self.closed:
-            self.skip()
-            self.closed = True
-
-    def isatty(self):
-        if self.closed:
-            raise ValueError, "I/O operation on closed file"
-        return False
-
-    def seek(self, pos, whence=0):
-        """Seek to specified position into the chunk.
-        Default position is 0 (start of chunk).
-        If the file is not seekable, this will result in an error.
-        """
-
-        if self.closed:
-            raise ValueError, "I/O operation on closed file"
-        if not self.seekable:
-            raise IOError, "cannot seek"
-        if whence == 1:
-            pos = pos + self.size_read
-        elif whence == 2:
-            pos = pos + self.chunksize
-        if pos < 0 or pos > self.chunksize:
-            raise RuntimeError
-        self.file.seek(self.offset + pos, 0)
-        self.size_read = pos
-
-    def tell(self):
-        if self.closed:
-            raise ValueError, "I/O operation on closed file"
-        return self.size_read
-
-    def read(self, size=-1):
-        """Read at most size bytes from the chunk.
-        If size is omitted or negative, read until the end
-        of the chunk.
-        """
-
-        if self.closed:
-            raise ValueError, "I/O operation on closed file"
-        if self.size_read >= self.chunksize:
-            return ''
-        if size < 0:
-            size = self.chunksize - self.size_read
-        if size > self.chunksize - self.size_read:
-            size = self.chunksize - self.size_read
-        data = self.file.read(size)
-        self.size_read = self.size_read + len(data)
-        if self.size_read == self.chunksize and \
-           self.align and \
-           (self.chunksize & 1):
-            dummy = self.file.read(1)
-            self.size_read = self.size_read + len(dummy)
-        return data
-
-    def skip(self):
-        """Skip the rest of the chunk.
-        If you are not interested in the contents of the chunk,
-        this method should be called so that the file points to
-        the start of the next chunk.
-        """
-
-        if self.closed:
-            raise ValueError, "I/O operation on closed file"
-        if self.seekable:
-            try:
-                n = self.chunksize - self.size_read
-                # maybe fix alignment
-                if self.align and (self.chunksize & 1):
-                    n = n + 1
-                self.file.seek(n, 1)
-                self.size_read = self.size_read + n
-                return
-            except IOError:
-                pass
-        while self.size_read < self.chunksize:
-            n = min(8192, self.chunksize - self.size_read)
-            dummy = self.read(n)
-            if not dummy:
-                raise EOFError
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/cmd.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/cmd.py
deleted file mode 100644
index 66641f9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/cmd.py
+++ /dev/null
@@ -1,401 +0,0 @@
-"""A generic class to build line-oriented command interpreters.
-
-Interpreters constructed with this class obey the following conventions:
-
-1. End of file on input is processed as the command 'EOF'.
-2. A command is parsed out of each line by collecting the prefix composed
-   of characters in the identchars member.
-3. A command `foo' is dispatched to a method 'do_foo()'; the do_ method
-   is passed a single argument consisting of the remainder of the line.
-4. Typing an empty line repeats the last command.  (Actually, it calls the
-   method `emptyline', which may be overridden in a subclass.)
-5. There is a predefined `help' method.  Given an argument `topic', it
-   calls the command `help_topic'.  With no arguments, it lists all topics
-   with defined help_ functions, broken into up to three topics; documented
-   commands, miscellaneous help topics, and undocumented commands.
-6. The command '?' is a synonym for `help'.  The command '!' is a synonym
-   for `shell', if a do_shell method exists.
-7. If completion is enabled, completing commands will be done automatically,
-   and completing of commands args is done by calling complete_foo() with
-   arguments text, line, begidx, endidx.  text is string we are matching
-   against, all returned matches must begin with it.  line is the current
-   input line (lstripped), begidx and endidx are the beginning and end
-   indexes of the text being matched, which could be used to provide
-   different completion depending upon which position the argument is in.
-
-The `default' method may be overridden to intercept commands for which there
-is no do_ method.
-
-The `completedefault' method may be overridden to intercept completions for
-commands that have no complete_ method.
-
-The data member `self.ruler' sets the character used to draw separator lines
-in the help messages.  If empty, no ruler line is drawn.  It defaults to "=".
-
-If the value of `self.intro' is nonempty when the cmdloop method is called,
-it is printed out on interpreter startup.  This value may be overridden
-via an optional argument to the cmdloop() method.
-
-The data members `self.doc_header', `self.misc_header', and
-`self.undoc_header' set the headers used for the help function's
-listings of documented functions, miscellaneous topics, and undocumented
-functions respectively.
-
-These interpreters use raw_input; thus, if the readline module is loaded,
-they automatically support Emacs-like command history and editing features.
-"""
-
-import string
-
-__all__ = ["Cmd"]
-
-PROMPT = '(Cmd) '
-IDENTCHARS = string.ascii_letters + string.digits + '_'
-
-class Cmd:
-    """A simple framework for writing line-oriented command interpreters.
-
-    These are often useful for test harnesses, administrative tools, and
-    prototypes that will later be wrapped in a more sophisticated interface.
-
-    A Cmd instance or subclass instance is a line-oriented interpreter
-    framework.  There is no good reason to instantiate Cmd itself; rather,
-    it's useful as a superclass of an interpreter class you define yourself
-    in order to inherit Cmd's methods and encapsulate action methods.
-
-    """
-    prompt = PROMPT
-    identchars = IDENTCHARS
-    ruler = '='
-    lastcmd = ''
-    intro = None
-    doc_leader = ""
-    doc_header = "Documented commands (type help <topic>):"
-    misc_header = "Miscellaneous help topics:"
-    undoc_header = "Undocumented commands:"
-    nohelp = "*** No help on %s"
-    use_rawinput = 1
-
-    def __init__(self, completekey='tab', stdin=None, stdout=None):
-        """Instantiate a line-oriented interpreter framework.
-
-        The optional argument 'completekey' is the readline name of a
-        completion key; it defaults to the Tab key. If completekey is
-        not None and the readline module is available, command completion
-        is done automatically. The optional arguments stdin and stdout
-        specify alternate input and output file objects; if not specified,
-        sys.stdin and sys.stdout are used.
-
-        """
-        import sys
-        if stdin is not None:
-            self.stdin = stdin
-        else:
-            self.stdin = sys.stdin
-        if stdout is not None:
-            self.stdout = stdout
-        else:
-            self.stdout = sys.stdout
-        self.cmdqueue = []
-        self.completekey = completekey
-
-    def cmdloop(self, intro=None):
-        """Repeatedly issue a prompt, accept input, parse an initial prefix
-        off the received input, and dispatch to action methods, passing them
-        the remainder of the line as argument.
-
-        """
-
-        self.preloop()
-        if self.use_rawinput and self.completekey:
-            try:
-                import readline
-                self.old_completer = readline.get_completer()
-                readline.set_completer(self.complete)
-                readline.parse_and_bind(self.completekey+": complete")
-            except ImportError:
-                pass
-        try:
-            if intro is not None:
-                self.intro = intro
-            if self.intro:
-                self.stdout.write(str(self.intro)+"\n")
-            stop = None
-            while not stop:
-                if self.cmdqueue:
-                    line = self.cmdqueue.pop(0)
-                else:
-                    if self.use_rawinput:
-                        try:
-                            line = raw_input(self.prompt)
-                        except EOFError:
-                            line = 'EOF'
-                    else:
-                        self.stdout.write(self.prompt)
-                        self.stdout.flush()
-                        line = self.stdin.readline()
-                        if not len(line):
-                            line = 'EOF'
-                        else:
-                            line = line.rstrip('\r\n')
-                line = self.precmd(line)
-                stop = self.onecmd(line)
-                stop = self.postcmd(stop, line)
-            self.postloop()
-        finally:
-            if self.use_rawinput and self.completekey:
-                try:
-                    import readline
-                    readline.set_completer(self.old_completer)
-                except ImportError:
-                    pass
-
-
-    def precmd(self, line):
-        """Hook method executed just before the command line is
-        interpreted, but after the input prompt is generated and issued.
-
-        """
-        return line
-
-    def postcmd(self, stop, line):
-        """Hook method executed just after a command dispatch is finished."""
-        return stop
-
-    def preloop(self):
-        """Hook method executed once when the cmdloop() method is called."""
-        pass
-
-    def postloop(self):
-        """Hook method executed once when the cmdloop() method is about to
-        return.
-
-        """
-        pass
-
-    def parseline(self, line):
-        """Parse the line into a command name and a string containing
-        the arguments.  Returns a tuple containing (command, args, line).
-        'command' and 'args' may be None if the line couldn't be parsed.
-        """
-        line = line.strip()
-        if not line:
-            return None, None, line
-        elif line[0] == '?':
-            line = 'help ' + line[1:]
-        elif line[0] == '!':
-            if hasattr(self, 'do_shell'):
-                line = 'shell ' + line[1:]
-            else:
-                return None, None, line
-        i, n = 0, len(line)
-        while i < n and line[i] in self.identchars: i = i+1
-        cmd, arg = line[:i], line[i:].strip()
-        return cmd, arg, line
-
-    def onecmd(self, line):
-        """Interpret the argument as though it had been typed in response
-        to the prompt.
-
-        This may be overridden, but should not normally need to be;
-        see the precmd() and postcmd() methods for useful execution hooks.
-        The return value is a flag indicating whether interpretation of
-        commands by the interpreter should stop.
-
-        """
-        cmd, arg, line = self.parseline(line)
-        if not line:
-            return self.emptyline()
-        if cmd is None:
-            return self.default(line)
-        self.lastcmd = line
-        if cmd == '':
-            return self.default(line)
-        else:
-            try:
-                func = getattr(self, 'do_' + cmd)
-            except AttributeError:
-                return self.default(line)
-            return func(arg)
-
-    def emptyline(self):
-        """Called when an empty line is entered in response to the prompt.
-
-        If this method is not overridden, it repeats the last nonempty
-        command entered.
-
-        """
-        if self.lastcmd:
-            return self.onecmd(self.lastcmd)
-
-    def default(self, line):
-        """Called on an input line when the command prefix is not recognized.
-
-        If this method is not overridden, it prints an error message and
-        returns.
-
-        """
-        self.stdout.write('*** Unknown syntax: %s\n'%line)
-
-    def completedefault(self, *ignored):
-        """Method called to complete an input line when no command-specific
-        complete_*() method is available.
-
-        By default, it returns an empty list.
-
-        """
-        return []
-
-    def completenames(self, text, *ignored):
-        dotext = 'do_'+text
-        return [a[3:] for a in self.get_names() if a.startswith(dotext)]
-
-    def complete(self, text, state):
-        """Return the next possible completion for 'text'.
-
-        If a command has not been entered, then complete against command list.
-        Otherwise try to call complete_<command> to get list of completions.
-        """
-        if state == 0:
-            import readline
-            origline = readline.get_line_buffer()
-            line = origline.lstrip()
-            stripped = len(origline) - len(line)
-            begidx = readline.get_begidx() - stripped
-            endidx = readline.get_endidx() - stripped
-            if begidx>0:
-                cmd, args, foo = self.parseline(line)
-                if cmd == '':
-                    compfunc = self.completedefault
-                else:
-                    try:
-                        compfunc = getattr(self, 'complete_' + cmd)
-                    except AttributeError:
-                        compfunc = self.completedefault
-            else:
-                compfunc = self.completenames
-            self.completion_matches = compfunc(text, line, begidx, endidx)
-        try:
-            return self.completion_matches[state]
-        except IndexError:
-            return None
-
-    def get_names(self):
-        # This method used to pull in base class attributes
-        # at a time dir() didn't do it yet.
-        return dir(self.__class__)
-
-    def complete_help(self, *args):
-        commands = set(self.completenames(*args))
-        topics = set(a[5:] for a in self.get_names()
-                     if a.startswith('help_' + args[0]))
-        return list(commands | topics)
-
-    def do_help(self, arg):
-        if arg:
-            # XXX check arg syntax
-            try:
-                func = getattr(self, 'help_' + arg)
-            except AttributeError:
-                try:
-                    doc=getattr(self, 'do_' + arg).__doc__
-                    if doc:
-                        self.stdout.write("%s\n"%str(doc))
-                        return
-                except AttributeError:
-                    pass
-                self.stdout.write("%s\n"%str(self.nohelp % (arg,)))
-                return
-            func()
-        else:
-            names = self.get_names()
-            cmds_doc = []
-            cmds_undoc = []
-            help = {}
-            for name in names:
-                if name[:5] == 'help_':
-                    help[name[5:]]=1
-            names.sort()
-            # There can be duplicates if routines overridden
-            prevname = ''
-            for name in names:
-                if name[:3] == 'do_':
-                    if name == prevname:
-                        continue
-                    prevname = name
-                    cmd=name[3:]
-                    if cmd in help:
-                        cmds_doc.append(cmd)
-                        del help[cmd]
-                    elif getattr(self, name).__doc__:
-                        cmds_doc.append(cmd)
-                    else:
-                        cmds_undoc.append(cmd)
-            self.stdout.write("%s\n"%str(self.doc_leader))
-            self.print_topics(self.doc_header,   cmds_doc,   15,80)
-            self.print_topics(self.misc_header,  help.keys(),15,80)
-            self.print_topics(self.undoc_header, cmds_undoc, 15,80)
-
-    def print_topics(self, header, cmds, cmdlen, maxcol):
-        if cmds:
-            self.stdout.write("%s\n"%str(header))
-            if self.ruler:
-                self.stdout.write("%s\n"%str(self.ruler * len(header)))
-            self.columnize(cmds, maxcol-1)
-            self.stdout.write("\n")
-
-    def columnize(self, list, displaywidth=80):
-        """Display a list of strings as a compact set of columns.
-
-        Each column is only as wide as necessary.
-        Columns are separated by two spaces (one was not legible enough).
-        """
-        if not list:
-            self.stdout.write("<empty>\n")
-            return
-        nonstrings = [i for i in range(len(list))
-                        if not isinstance(list[i], str)]
-        if nonstrings:
-            raise TypeError, ("list[i] not a string for i in %s" %
-                              ", ".join(map(str, nonstrings)))
-        size = len(list)
-        if size == 1:
-            self.stdout.write('%s\n'%str(list[0]))
-            return
-        # Try every row count from 1 upwards
-        for nrows in range(1, len(list)):
-            ncols = (size+nrows-1) // nrows
-            colwidths = []
-            totwidth = -2
-            for col in range(ncols):
-                colwidth = 0
-                for row in range(nrows):
-                    i = row + nrows*col
-                    if i >= size:
-                        break
-                    x = list[i]
-                    colwidth = max(colwidth, len(x))
-                colwidths.append(colwidth)
-                totwidth += colwidth + 2
-                if totwidth > displaywidth:
-                    break
-            if totwidth <= displaywidth:
-                break
-        else:
-            nrows = len(list)
-            ncols = 1
-            colwidths = [0]
-        for row in range(nrows):
-            texts = []
-            for col in range(ncols):
-                i = row + nrows*col
-                if i >= size:
-                    x = ""
-                else:
-                    x = list[i]
-                texts.append(x)
-            while texts and not texts[-1]:
-                del texts[-1]
-            for col in range(len(texts)):
-                texts[col] = texts[col].ljust(colwidths[col])
-            self.stdout.write("%s\n"%str("  ".join(texts)))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/code.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/code.py
deleted file mode 100644
index 44ca592..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/code.py
+++ /dev/null
@@ -1,310 +0,0 @@
-"""Utilities needed to emulate Python's interactive interpreter.
-
-"""
-
-# Inspired by similar code by Jeff Epler and Fredrik Lundh.
-
-
-import sys
-import traceback
-from codeop import CommandCompiler, compile_command
-
-__all__ = ["InteractiveInterpreter", "InteractiveConsole", "interact",
-           "compile_command"]
-
-def softspace(file, newvalue):
-    oldvalue = 0
-    try:
-        oldvalue = file.softspace
-    except AttributeError:
-        pass
-    try:
-        file.softspace = newvalue
-    except (AttributeError, TypeError):
-        # "attribute-less object" or "read-only attributes"
-        pass
-    return oldvalue
-
-class InteractiveInterpreter:
-    """Base class for InteractiveConsole.
-
-    This class deals with parsing and interpreter state (the user's
-    namespace); it doesn't deal with input buffering or prompting or
-    input file naming (the filename is always passed in explicitly).
-
-    """
-
-    def __init__(self, locals=None):
-        """Constructor.
-
-        The optional 'locals' argument specifies the dictionary in
-        which code will be executed; it defaults to a newly created
-        dictionary with key "__name__" set to "__console__" and key
-        "__doc__" set to None.
-
-        """
-        if locals is None:
-            locals = {"__name__": "__console__", "__doc__": None}
-        self.locals = locals
-        self.compile = CommandCompiler()
-
-    def runsource(self, source, filename="<input>", symbol="single"):
-        """Compile and run some source in the interpreter.
-
-        Arguments are as for compile_command().
-
-        One several things can happen:
-
-        1) The input is incorrect; compile_command() raised an
-        exception (SyntaxError or OverflowError).  A syntax traceback
-        will be printed by calling the showsyntaxerror() method.
-
-        2) The input is incomplete, and more input is required;
-        compile_command() returned None.  Nothing happens.
-
-        3) The input is complete; compile_command() returned a code
-        object.  The code is executed by calling self.runcode() (which
-        also handles run-time exceptions, except for SystemExit).
-
-        The return value is True in case 2, False in the other cases (unless
-        an exception is raised).  The return value can be used to
-        decide whether to use sys.ps1 or sys.ps2 to prompt the next
-        line.
-
-        """
-        try:
-            code = self.compile(source, filename, symbol)
-        except (OverflowError, SyntaxError, ValueError):
-            # Case 1
-            self.showsyntaxerror(filename)
-            return False
-
-        if code is None:
-            # Case 2
-            return True
-
-        # Case 3
-        self.runcode(code)
-        return False
-
-    def runcode(self, code):
-        """Execute a code object.
-
-        When an exception occurs, self.showtraceback() is called to
-        display a traceback.  All exceptions are caught except
-        SystemExit, which is reraised.
-
-        A note about KeyboardInterrupt: this exception may occur
-        elsewhere in this code, and may not always be caught.  The
-        caller should be prepared to deal with it.
-
-        """
-        try:
-            exec code in self.locals
-        except SystemExit:
-            raise
-        except:
-            self.showtraceback()
-        else:
-            if softspace(sys.stdout, 0):
-                print
-
-    def showsyntaxerror(self, filename=None):
-        """Display the syntax error that just occurred.
-
-        This doesn't display a stack trace because there isn't one.
-
-        If a filename is given, it is stuffed in the exception instead
-        of what was there before (because Python's parser always uses
-        "<string>" when reading from a string).
-
-        The output is written by self.write(), below.
-
-        """
-        type, value, sys.last_traceback = sys.exc_info()
-        sys.last_type = type
-        sys.last_value = value
-        if filename and type is SyntaxError:
-            # Work hard to stuff the correct filename in the exception
-            try:
-                msg, (dummy_filename, lineno, offset, line) = value
-            except:
-                # Not the format we expect; leave it alone
-                pass
-            else:
-                # Stuff in the right filename
-                value = SyntaxError(msg, (filename, lineno, offset, line))
-                sys.last_value = value
-        list = traceback.format_exception_only(type, value)
-        map(self.write, list)
-
-    def showtraceback(self):
-        """Display the exception that just occurred.
-
-        We remove the first stack item because it is our own code.
-
-        The output is written by self.write(), below.
-
-        """
-        try:
-            type, value, tb = sys.exc_info()
-            sys.last_type = type
-            sys.last_value = value
-            sys.last_traceback = tb
-            tblist = traceback.extract_tb(tb)
-            del tblist[:1]
-            list = traceback.format_list(tblist)
-            if list:
-                list.insert(0, "Traceback (most recent call last):\n")
-            list[len(list):] = traceback.format_exception_only(type, value)
-        finally:
-            tblist = tb = None
-        map(self.write, list)
-
-    def write(self, data):
-        """Write a string.
-
-        The base implementation writes to sys.stderr; a subclass may
-        replace this with a different implementation.
-
-        """
-        sys.stderr.write(data)
-
-
-class InteractiveConsole(InteractiveInterpreter):
-    """Closely emulate the behavior of the interactive Python interpreter.
-
-    This class builds on InteractiveInterpreter and adds prompting
-    using the familiar sys.ps1 and sys.ps2, and input buffering.
-
-    """
-
-    def __init__(self, locals=None, filename="<console>"):
-        """Constructor.
-
-        The optional locals argument will be passed to the
-        InteractiveInterpreter base class.
-
-        The optional filename argument should specify the (file)name
-        of the input stream; it will show up in tracebacks.
-
-        """
-        InteractiveInterpreter.__init__(self, locals)
-        self.filename = filename
-        self.resetbuffer()
-
-    def resetbuffer(self):
-        """Reset the input buffer."""
-        self.buffer = []
-
-    def interact(self, banner=None):
-        """Closely emulate the interactive Python console.
-
-        The optional banner argument specify the banner to print
-        before the first interaction; by default it prints a banner
-        similar to the one printed by the real Python interpreter,
-        followed by the current class name in parentheses (so as not
-        to confuse this with the real interpreter -- since it's so
-        close!).
-
-        """
-        try:
-            sys.ps1
-        except AttributeError:
-            sys.ps1 = ">>> "
-        try:
-            sys.ps2
-        except AttributeError:
-            sys.ps2 = "... "
-        cprt = 'Type "help", "copyright", "credits" or "license" for more information.'
-        if banner is None:
-            self.write("Python %s on %s\n%s\n(%s)\n" %
-                       (sys.version, sys.platform, cprt,
-                        self.__class__.__name__))
-        else:
-            self.write("%s\n" % str(banner))
-        more = 0
-        while 1:
-            try:
-                if more:
-                    prompt = sys.ps2
-                else:
-                    prompt = sys.ps1
-                try:
-                    line = self.raw_input(prompt)
-                    # Can be None if sys.stdin was redefined
-                    encoding = getattr(sys.stdin, "encoding", None)
-                    if encoding and not isinstance(line, unicode):
-                        line = line.decode(encoding)
-                except EOFError:
-                    self.write("\n")
-                    break
-                else:
-                    more = self.push(line)
-            except KeyboardInterrupt:
-                self.write("\nKeyboardInterrupt\n")
-                self.resetbuffer()
-                more = 0
-
-    def push(self, line):
-        """Push a line to the interpreter.
-
-        The line should not have a trailing newline; it may have
-        internal newlines.  The line is appended to a buffer and the
-        interpreter's runsource() method is called with the
-        concatenated contents of the buffer as source.  If this
-        indicates that the command was executed or invalid, the buffer
-        is reset; otherwise, the command is incomplete, and the buffer
-        is left as it was after the line was appended.  The return
-        value is 1 if more input is required, 0 if the line was dealt
-        with in some way (this is the same as runsource()).
-
-        """
-        self.buffer.append(line)
-        source = "\n".join(self.buffer)
-        more = self.runsource(source, self.filename)
-        if not more:
-            self.resetbuffer()
-        return more
-
-    def raw_input(self, prompt=""):
-        """Write a prompt and read a line.
-
-        The returned line does not include the trailing newline.
-        When the user enters the EOF key sequence, EOFError is raised.
-
-        The base implementation uses the built-in function
-        raw_input(); a subclass may replace this with a different
-        implementation.
-
-        """
-        return raw_input(prompt)
-
-
-def interact(banner=None, readfunc=None, local=None):
-    """Closely emulate the interactive Python interpreter.
-
-    This is a backwards compatible interface to the InteractiveConsole
-    class.  When readfunc is not specified, it attempts to import the
-    readline module to enable GNU readline if it is available.
-
-    Arguments (all optional, all default to None):
-
-    banner -- passed to InteractiveConsole.interact()
-    readfunc -- if not None, replaces InteractiveConsole.raw_input()
-    local -- passed to InteractiveInterpreter.__init__()
-
-    """
-    console = InteractiveConsole(local)
-    if readfunc is not None:
-        console.raw_input = readfunc
-    else:
-        try:
-            import readline
-        except ImportError:
-            pass
-    console.interact(banner)
-
-
-if __name__ == "__main__":
-    interact()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/codecs.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/codecs.py
deleted file mode 100644
index c0e95f9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/codecs.py
+++ /dev/null
@@ -1,1098 +0,0 @@
-""" codecs -- Python Codec Registry, API and helpers.
-
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""#"
-
-import __builtin__, sys
-
-### Registry and builtin stateless codec functions
-
-try:
-    from _codecs import *
-except ImportError, why:
-    raise SystemError('Failed to load the builtin codecs: %s' % why)
-
-__all__ = ["register", "lookup", "open", "EncodedFile", "BOM", "BOM_BE",
-           "BOM_LE", "BOM32_BE", "BOM32_LE", "BOM64_BE", "BOM64_LE",
-           "BOM_UTF8", "BOM_UTF16", "BOM_UTF16_LE", "BOM_UTF16_BE",
-           "BOM_UTF32", "BOM_UTF32_LE", "BOM_UTF32_BE",
-           "strict_errors", "ignore_errors", "replace_errors",
-           "xmlcharrefreplace_errors",
-           "register_error", "lookup_error"]
-
-### Constants
-
-#
-# Byte Order Mark (BOM = ZERO WIDTH NO-BREAK SPACE = U+FEFF)
-# and its possible byte string values
-# for UTF8/UTF16/UTF32 output and little/big endian machines
-#
-
-# UTF-8
-BOM_UTF8 = '\xef\xbb\xbf'
-
-# UTF-16, little endian
-BOM_LE = BOM_UTF16_LE = '\xff\xfe'
-
-# UTF-16, big endian
-BOM_BE = BOM_UTF16_BE = '\xfe\xff'
-
-# UTF-32, little endian
-BOM_UTF32_LE = '\xff\xfe\x00\x00'
-
-# UTF-32, big endian
-BOM_UTF32_BE = '\x00\x00\xfe\xff'
-
-if sys.byteorder == 'little':
-
-    # UTF-16, native endianness
-    BOM = BOM_UTF16 = BOM_UTF16_LE
-
-    # UTF-32, native endianness
-    BOM_UTF32 = BOM_UTF32_LE
-
-else:
-
-    # UTF-16, native endianness
-    BOM = BOM_UTF16 = BOM_UTF16_BE
-
-    # UTF-32, native endianness
-    BOM_UTF32 = BOM_UTF32_BE
-
-# Old broken names (don't use in new code)
-BOM32_LE = BOM_UTF16_LE
-BOM32_BE = BOM_UTF16_BE
-BOM64_LE = BOM_UTF32_LE
-BOM64_BE = BOM_UTF32_BE
-
-
-### Codec base classes (defining the API)
-
-class CodecInfo(tuple):
-
-    def __new__(cls, encode, decode, streamreader=None, streamwriter=None,
-        incrementalencoder=None, incrementaldecoder=None, name=None):
-        self = tuple.__new__(cls, (encode, decode, streamreader, streamwriter))
-        self.name = name
-        self.encode = encode
-        self.decode = decode
-        self.incrementalencoder = incrementalencoder
-        self.incrementaldecoder = incrementaldecoder
-        self.streamwriter = streamwriter
-        self.streamreader = streamreader
-        return self
-
-    def __repr__(self):
-        return "<%s.%s object for encoding %s at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, id(self))
-
-class Codec:
-
-    """ Defines the interface for stateless encoders/decoders.
-
-        The .encode()/.decode() methods may use different error
-        handling schemes by providing the errors argument. These
-        string values are predefined:
-
-         'strict' - raise a ValueError error (or a subclass)
-         'ignore' - ignore the character and continue with the next
-         'replace' - replace with a suitable replacement character;
-                    Python will use the official U+FFFD REPLACEMENT
-                    CHARACTER for the builtin Unicode codecs on
-                    decoding and '?' on encoding.
-         'xmlcharrefreplace' - Replace with the appropriate XML
-                               character reference (only for encoding).
-         'backslashreplace'  - Replace with backslashed escape sequences
-                               (only for encoding).
-
-        The set of allowed values can be extended via register_error.
-
-    """
-    def encode(self, input, errors='strict'):
-
-        """ Encodes the object input and returns a tuple (output
-            object, length consumed).
-
-            errors defines the error handling to apply. It defaults to
-            'strict' handling.
-
-            The method may not store state in the Codec instance. Use
-            StreamCodec for codecs which have to keep state in order to
-            make encoding/decoding efficient.
-
-            The encoder must be able to handle zero length input and
-            return an empty object of the output object type in this
-            situation.
-
-        """
-        raise NotImplementedError
-
-    def decode(self, input, errors='strict'):
-
-        """ Decodes the object input and returns a tuple (output
-            object, length consumed).
-
-            input must be an object which provides the bf_getreadbuf
-            buffer slot. Python strings, buffer objects and memory
-            mapped files are examples of objects providing this slot.
-
-            errors defines the error handling to apply. It defaults to
-            'strict' handling.
-
-            The method may not store state in the Codec instance. Use
-            StreamCodec for codecs which have to keep state in order to
-            make encoding/decoding efficient.
-
-            The decoder must be able to handle zero length input and
-            return an empty object of the output object type in this
-            situation.
-
-        """
-        raise NotImplementedError
-
-class IncrementalEncoder(object):
-    """
-    An IncrementalEncoder encodes an input in multiple steps. The input can be
-    passed piece by piece to the encode() method. The IncrementalEncoder remembers
-    the state of the Encoding process between calls to encode().
-    """
-    def __init__(self, errors='strict'):
-        """
-        Creates an IncrementalEncoder instance.
-
-        The IncrementalEncoder may use different error handling schemes by
-        providing the errors keyword argument. See the module docstring
-        for a list of possible values.
-        """
-        self.errors = errors
-        self.buffer = ""
-
-    def encode(self, input, final=False):
-        """
-        Encodes input and returns the resulting object.
-        """
-        raise NotImplementedError
-
-    def reset(self):
-        """
-        Resets the encoder to the initial state.
-        """
-
-    def getstate(self):
-        """
-        Return the current state of the encoder.
-        """
-        return 0
-
-    def setstate(self, state):
-        """
-        Set the current state of the encoder. state must have been
-        returned by getstate().
-        """
-
-class BufferedIncrementalEncoder(IncrementalEncoder):
-    """
-    This subclass of IncrementalEncoder can be used as the baseclass for an
-    incremental encoder if the encoder must keep some of the output in a
-    buffer between calls to encode().
-    """
-    def __init__(self, errors='strict'):
-        IncrementalEncoder.__init__(self, errors)
-        self.buffer = "" # unencoded input that is kept between calls to encode()
-
-    def _buffer_encode(self, input, errors, final):
-        # Overwrite this method in subclasses: It must encode input
-        # and return an (output, length consumed) tuple
-        raise NotImplementedError
-
-    def encode(self, input, final=False):
-        # encode input (taking the buffer into account)
-        data = self.buffer + input
-        (result, consumed) = self._buffer_encode(data, self.errors, final)
-        # keep unencoded input until the next call
-        self.buffer = data[consumed:]
-        return result
-
-    def reset(self):
-        IncrementalEncoder.reset(self)
-        self.buffer = ""
-
-    def getstate(self):
-        return self.buffer or 0
-
-    def setstate(self, state):
-        self.buffer = state or ""
-
-class IncrementalDecoder(object):
-    """
-    An IncrementalDecoder decodes an input in multiple steps. The input can be
-    passed piece by piece to the decode() method. The IncrementalDecoder
-    remembers the state of the decoding process between calls to decode().
-    """
-    def __init__(self, errors='strict'):
-        """
-        Creates a IncrementalDecoder instance.
-
-        The IncrementalDecoder may use different error handling schemes by
-        providing the errors keyword argument. See the module docstring
-        for a list of possible values.
-        """
-        self.errors = errors
-
-    def decode(self, input, final=False):
-        """
-        Decodes input and returns the resulting object.
-        """
-        raise NotImplementedError
-
-    def reset(self):
-        """
-        Resets the decoder to the initial state.
-        """
-
-    def getstate(self):
-        """
-        Return the current state of the decoder.
-
-        This must be a (buffered_input, additional_state_info) tuple.
-        buffered_input must be a bytes object containing bytes that
-        were passed to decode() that have not yet been converted.
-        additional_state_info must be a non-negative integer
-        representing the state of the decoder WITHOUT yet having
-        processed the contents of buffered_input.  In the initial state
-        and after reset(), getstate() must return (b"", 0).
-        """
-        return (b"", 0)
-
-    def setstate(self, state):
-        """
-        Set the current state of the decoder.
-
-        state must have been returned by getstate().  The effect of
-        setstate((b"", 0)) must be equivalent to reset().
-        """
-
-class BufferedIncrementalDecoder(IncrementalDecoder):
-    """
-    This subclass of IncrementalDecoder can be used as the baseclass for an
-    incremental decoder if the decoder must be able to handle incomplete byte
-    sequences.
-    """
-    def __init__(self, errors='strict'):
-        IncrementalDecoder.__init__(self, errors)
-        self.buffer = "" # undecoded input that is kept between calls to decode()
-
-    def _buffer_decode(self, input, errors, final):
-        # Overwrite this method in subclasses: It must decode input
-        # and return an (output, length consumed) tuple
-        raise NotImplementedError
-
-    def decode(self, input, final=False):
-        # decode input (taking the buffer into account)
-        data = self.buffer + input
-        (result, consumed) = self._buffer_decode(data, self.errors, final)
-        # keep undecoded input until the next call
-        self.buffer = data[consumed:]
-        return result
-
-    def reset(self):
-        IncrementalDecoder.reset(self)
-        self.buffer = ""
-
-    def getstate(self):
-        # additional state info is always 0
-        return (self.buffer, 0)
-
-    def setstate(self, state):
-        # ignore additional state info
-        self.buffer = state[0]
-
-#
-# The StreamWriter and StreamReader class provide generic working
-# interfaces which can be used to implement new encoding submodules
-# very easily. See encodings/utf_8.py for an example on how this is
-# done.
-#
-
-class StreamWriter(Codec):
-
-    def __init__(self, stream, errors='strict'):
-
-        """ Creates a StreamWriter instance.
-
-            stream must be a file-like object open for writing
-            (binary) data.
-
-            The StreamWriter may use different error handling
-            schemes by providing the errors keyword argument. These
-            parameters are predefined:
-
-             'strict' - raise a ValueError (or a subclass)
-             'ignore' - ignore the character and continue with the next
-             'replace'- replace with a suitable replacement character
-             'xmlcharrefreplace' - Replace with the appropriate XML
-                                   character reference.
-             'backslashreplace'  - Replace with backslashed escape
-                                   sequences (only for encoding).
-
-            The set of allowed parameter values can be extended via
-            register_error.
-        """
-        self.stream = stream
-        self.errors = errors
-
-    def write(self, object):
-
-        """ Writes the object's contents encoded to self.stream.
-        """
-        data, consumed = self.encode(object, self.errors)
-        self.stream.write(data)
-
-    def writelines(self, list):
-
-        """ Writes the concatenated list of strings to the stream
-            using .write().
-        """
-        self.write(''.join(list))
-
-    def reset(self):
-
-        """ Flushes and resets the codec buffers used for keeping state.
-
-            Calling this method should ensure that the data on the
-            output is put into a clean state, that allows appending
-            of new fresh data without having to rescan the whole
-            stream to recover state.
-
-        """
-        pass
-
-    def seek(self, offset, whence=0):
-        self.stream.seek(offset, whence)
-        if whence == 0 and offset == 0:
-            self.reset()
-
-    def __getattr__(self, name,
-                    getattr=getattr):
-
-        """ Inherit all other methods from the underlying stream.
-        """
-        return getattr(self.stream, name)
-
-    def __enter__(self):
-        return self
-
-    def __exit__(self, type, value, tb):
-        self.stream.close()
-
-###
-
-class StreamReader(Codec):
-
-    def __init__(self, stream, errors='strict'):
-
-        """ Creates a StreamReader instance.
-
-            stream must be a file-like object open for reading
-            (binary) data.
-
-            The StreamReader may use different error handling
-            schemes by providing the errors keyword argument. These
-            parameters are predefined:
-
-             'strict' - raise a ValueError (or a subclass)
-             'ignore' - ignore the character and continue with the next
-             'replace'- replace with a suitable replacement character;
-
-            The set of allowed parameter values can be extended via
-            register_error.
-        """
-        self.stream = stream
-        self.errors = errors
-        self.bytebuffer = ""
-        # For str->str decoding this will stay a str
-        # For str->unicode decoding the first read will promote it to unicode
-        self.charbuffer = ""
-        self.linebuffer = None
-
-    def decode(self, input, errors='strict'):
-        raise NotImplementedError
-
-    def read(self, size=-1, chars=-1, firstline=False):
-
-        """ Decodes data from the stream self.stream and returns the
-            resulting object.
-
-            chars indicates the number of characters to read from the
-            stream. read() will never return more than chars
-            characters, but it might return less, if there are not enough
-            characters available.
-
-            size indicates the approximate maximum number of bytes to
-            read from the stream for decoding purposes. The decoder
-            can modify this setting as appropriate. The default value
-            -1 indicates to read and decode as much as possible.  size
-            is intended to prevent having to decode huge files in one
-            step.
-
-            If firstline is true, and a UnicodeDecodeError happens
-            after the first line terminator in the input only the first line
-            will be returned, the rest of the input will be kept until the
-            next call to read().
-
-            The method should use a greedy read strategy meaning that
-            it should read as much data as is allowed within the
-            definition of the encoding and the given size, e.g.  if
-            optional encoding endings or state markers are available
-            on the stream, these should be read too.
-        """
-        # If we have lines cached, first merge them back into characters
-        if self.linebuffer:
-            self.charbuffer = "".join(self.linebuffer)
-            self.linebuffer = None
-
-        # read until we get the required number of characters (if available)
-        while True:
-            # can the request can be satisfied from the character buffer?
-            if chars < 0:
-                if size < 0:
-                    if self.charbuffer:
-                        break
-                elif len(self.charbuffer) >= size:
-                    break
-            else:
-                if len(self.charbuffer) >= chars:
-                    break
-            # we need more data
-            if size < 0:
-                newdata = self.stream.read()
-            else:
-                newdata = self.stream.read(size)
-            # decode bytes (those remaining from the last call included)
-            data = self.bytebuffer + newdata
-            try:
-                newchars, decodedbytes = self.decode(data, self.errors)
-            except UnicodeDecodeError, exc:
-                if firstline:
-                    newchars, decodedbytes = self.decode(data[:exc.start], self.errors)
-                    lines = newchars.splitlines(True)
-                    if len(lines)<=1:
-                        raise
-                else:
-                    raise
-            # keep undecoded bytes until the next call
-            self.bytebuffer = data[decodedbytes:]
-            # put new characters in the character buffer
-            self.charbuffer += newchars
-            # there was no data available
-            if not newdata:
-                break
-        if chars < 0:
-            # Return everything we've got
-            result = self.charbuffer
-            self.charbuffer = ""
-        else:
-            # Return the first chars characters
-            result = self.charbuffer[:chars]
-            self.charbuffer = self.charbuffer[chars:]
-        return result
-
-    def readline(self, size=None, keepends=True):
-
-        """ Read one line from the input stream and return the
-            decoded data.
-
-            size, if given, is passed as size argument to the
-            read() method.
-
-        """
-        # If we have lines cached from an earlier read, return
-        # them unconditionally
-        if self.linebuffer:
-            line = self.linebuffer[0]
-            del self.linebuffer[0]
-            if len(self.linebuffer) == 1:
-                # revert to charbuffer mode; we might need more data
-                # next time
-                self.charbuffer = self.linebuffer[0]
-                self.linebuffer = None
-            if not keepends:
-                line = line.splitlines(False)[0]
-            return line
-
-        readsize = size or 72
-        line = ""
-        # If size is given, we call read() only once
-        while True:
-            data = self.read(readsize, firstline=True)
-            if data:
-                # If we're at a "\r" read one extra character (which might
-                # be a "\n") to get a proper line ending. If the stream is
-                # temporarily exhausted we return the wrong line ending.
-                if data.endswith("\r"):
-                    data += self.read(size=1, chars=1)
-
-            line += data
-            lines = line.splitlines(True)
-            if lines:
-                if len(lines) > 1:
-                    # More than one line result; the first line is a full line
-                    # to return
-                    line = lines[0]
-                    del lines[0]
-                    if len(lines) > 1:
-                        # cache the remaining lines
-                        lines[-1] += self.charbuffer
-                        self.linebuffer = lines
-                        self.charbuffer = None
-                    else:
-                        # only one remaining line, put it back into charbuffer
-                        self.charbuffer = lines[0] + self.charbuffer
-                    if not keepends:
-                        line = line.splitlines(False)[0]
-                    break
-                line0withend = lines[0]
-                line0withoutend = lines[0].splitlines(False)[0]
-                if line0withend != line0withoutend: # We really have a line end
-                    # Put the rest back together and keep it until the next call
-                    self.charbuffer = "".join(lines[1:]) + self.charbuffer
-                    if keepends:
-                        line = line0withend
-                    else:
-                        line = line0withoutend
-                    break
-            # we didn't get anything or this was our only try
-            if not data or size is not None:
-                if line and not keepends:
-                    line = line.splitlines(False)[0]
-                break
-            if readsize<8000:
-                readsize *= 2
-        return line
-
-    def readlines(self, sizehint=None, keepends=True):
-
-        """ Read all lines available on the input stream
-            and return them as list of lines.
-
-            Line breaks are implemented using the codec's decoder
-            method and are included in the list entries.
-
-            sizehint, if given, is ignored since there is no efficient
-            way to finding the true end-of-line.
-
-        """
-        data = self.read()
-        return data.splitlines(keepends)
-
-    def reset(self):
-
-        """ Resets the codec buffers used for keeping state.
-
-            Note that no stream repositioning should take place.
-            This method is primarily intended to be able to recover
-            from decoding errors.
-
-        """
-        self.bytebuffer = ""
-        self.charbuffer = u""
-        self.linebuffer = None
-
-    def seek(self, offset, whence=0):
-        """ Set the input stream's current position.
-
-            Resets the codec buffers used for keeping state.
-        """
-        self.stream.seek(offset, whence)
-        self.reset()
-
-    def next(self):
-
-        """ Return the next decoded line from the input stream."""
-        line = self.readline()
-        if line:
-            return line
-        raise StopIteration
-
-    def __iter__(self):
-        return self
-
-    def __getattr__(self, name,
-                    getattr=getattr):
-
-        """ Inherit all other methods from the underlying stream.
-        """
-        return getattr(self.stream, name)
-
-    def __enter__(self):
-        return self
-
-    def __exit__(self, type, value, tb):
-        self.stream.close()
-
-###
-
-class StreamReaderWriter:
-
-    """ StreamReaderWriter instances allow wrapping streams which
-        work in both read and write modes.
-
-        The design is such that one can use the factory functions
-        returned by the codec.lookup() function to construct the
-        instance.
-
-    """
-    # Optional attributes set by the file wrappers below
-    encoding = 'unknown'
-
-    def __init__(self, stream, Reader, Writer, errors='strict'):
-
-        """ Creates a StreamReaderWriter instance.
-
-            stream must be a Stream-like object.
-
-            Reader, Writer must be factory functions or classes
-            providing the StreamReader, StreamWriter interface resp.
-
-            Error handling is done in the same way as defined for the
-            StreamWriter/Readers.
-
-        """
-        self.stream = stream
-        self.reader = Reader(stream, errors)
-        self.writer = Writer(stream, errors)
-        self.errors = errors
-
-    def read(self, size=-1):
-
-        return self.reader.read(size)
-
-    def readline(self, size=None):
-
-        return self.reader.readline(size)
-
-    def readlines(self, sizehint=None):
-
-        return self.reader.readlines(sizehint)
-
-    def next(self):
-
-        """ Return the next decoded line from the input stream."""
-        return self.reader.next()
-
-    def __iter__(self):
-        return self
-
-    def write(self, data):
-
-        return self.writer.write(data)
-
-    def writelines(self, list):
-
-        return self.writer.writelines(list)
-
-    def reset(self):
-
-        self.reader.reset()
-        self.writer.reset()
-
-    def seek(self, offset, whence=0):
-        self.stream.seek(offset, whence)
-        self.reader.reset()
-        if whence == 0 and offset == 0:
-            self.writer.reset()
-
-    def __getattr__(self, name,
-                    getattr=getattr):
-
-        """ Inherit all other methods from the underlying stream.
-        """
-        return getattr(self.stream, name)
-
-    # these are needed to make "with codecs.open(...)" work properly
-
-    def __enter__(self):
-        return self
-
-    def __exit__(self, type, value, tb):
-        self.stream.close()
-
-###
-
-class StreamRecoder:
-
-    """ StreamRecoder instances provide a frontend - backend
-        view of encoding data.
-
-        They use the complete set of APIs returned by the
-        codecs.lookup() function to implement their task.
-
-        Data written to the stream is first decoded into an
-        intermediate format (which is dependent on the given codec
-        combination) and then written to the stream using an instance
-        of the provided Writer class.
-
-        In the other direction, data is read from the stream using a
-        Reader instance and then return encoded data to the caller.
-
-    """
-    # Optional attributes set by the file wrappers below
-    data_encoding = 'unknown'
-    file_encoding = 'unknown'
-
-    def __init__(self, stream, encode, decode, Reader, Writer,
-                 errors='strict'):
-
-        """ Creates a StreamRecoder instance which implements a two-way
-            conversion: encode and decode work on the frontend (the
-            input to .read() and output of .write()) while
-            Reader and Writer work on the backend (reading and
-            writing to the stream).
-
-            You can use these objects to do transparent direct
-            recodings from e.g. latin-1 to utf-8 and back.
-
-            stream must be a file-like object.
-
-            encode, decode must adhere to the Codec interface, Reader,
-            Writer must be factory functions or classes providing the
-            StreamReader, StreamWriter interface resp.
-
-            encode and decode are needed for the frontend translation,
-            Reader and Writer for the backend translation. Unicode is
-            used as intermediate encoding.
-
-            Error handling is done in the same way as defined for the
-            StreamWriter/Readers.
-
-        """
-        self.stream = stream
-        self.encode = encode
-        self.decode = decode
-        self.reader = Reader(stream, errors)
-        self.writer = Writer(stream, errors)
-        self.errors = errors
-
-    def read(self, size=-1):
-
-        data = self.reader.read(size)
-        data, bytesencoded = self.encode(data, self.errors)
-        return data
-
-    def readline(self, size=None):
-
-        if size is None:
-            data = self.reader.readline()
-        else:
-            data = self.reader.readline(size)
-        data, bytesencoded = self.encode(data, self.errors)
-        return data
-
-    def readlines(self, sizehint=None):
-
-        data = self.reader.read()
-        data, bytesencoded = self.encode(data, self.errors)
-        return data.splitlines(1)
-
-    def next(self):
-
-        """ Return the next decoded line from the input stream."""
-        data = self.reader.next()
-        data, bytesencoded = self.encode(data, self.errors)
-        return data
-
-    def __iter__(self):
-        return self
-
-    def write(self, data):
-
-        data, bytesdecoded = self.decode(data, self.errors)
-        return self.writer.write(data)
-
-    def writelines(self, list):
-
-        data = ''.join(list)
-        data, bytesdecoded = self.decode(data, self.errors)
-        return self.writer.write(data)
-
-    def reset(self):
-
-        self.reader.reset()
-        self.writer.reset()
-
-    def __getattr__(self, name,
-                    getattr=getattr):
-
-        """ Inherit all other methods from the underlying stream.
-        """
-        return getattr(self.stream, name)
-
-    def __enter__(self):
-        return self
-
-    def __exit__(self, type, value, tb):
-        self.stream.close()
-
-### Shortcuts
-
-def open(filename, mode='rb', encoding=None, errors='strict', buffering=1):
-
-    """ Open an encoded file using the given mode and return
-        a wrapped version providing transparent encoding/decoding.
-
-        Note: The wrapped version will only accept the object format
-        defined by the codecs, i.e. Unicode objects for most builtin
-        codecs. Output is also codec dependent and will usually be
-        Unicode as well.
-
-        Files are always opened in binary mode, even if no binary mode
-        was specified. This is done to avoid data loss due to encodings
-        using 8-bit values. The default file mode is 'rb' meaning to
-        open the file in binary read mode.
-
-        encoding specifies the encoding which is to be used for the
-        file.
-
-        errors may be given to define the error handling. It defaults
-        to 'strict' which causes ValueErrors to be raised in case an
-        encoding error occurs.
-
-        buffering has the same meaning as for the builtin open() API.
-        It defaults to line buffered.
-
-        The returned wrapped file object provides an extra attribute
-        .encoding which allows querying the used encoding. This
-        attribute is only available if an encoding was specified as
-        parameter.
-
-    """
-    if encoding is not None:
-        if 'U' in mode:
-            # No automatic conversion of '\n' is done on reading and writing
-            mode = mode.strip().replace('U', '')
-            if mode[:1] not in set('rwa'):
-                mode = 'r' + mode
-        if 'b' not in mode:
-            # Force opening of the file in binary mode
-            mode = mode + 'b'
-    file = __builtin__.open(filename, mode, buffering)
-    if encoding is None:
-        return file
-    info = lookup(encoding)
-    srw = StreamReaderWriter(file, info.streamreader, info.streamwriter, errors)
-    # Add attributes to simplify introspection
-    srw.encoding = encoding
-    return srw
-
-def EncodedFile(file, data_encoding, file_encoding=None, errors='strict'):
-
-    """ Return a wrapped version of file which provides transparent
-        encoding translation.
-
-        Strings written to the wrapped file are interpreted according
-        to the given data_encoding and then written to the original
-        file as string using file_encoding. The intermediate encoding
-        will usually be Unicode but depends on the specified codecs.
-
-        Strings are read from the file using file_encoding and then
-        passed back to the caller as string using data_encoding.
-
-        If file_encoding is not given, it defaults to data_encoding.
-
-        errors may be given to define the error handling. It defaults
-        to 'strict' which causes ValueErrors to be raised in case an
-        encoding error occurs.
-
-        The returned wrapped file object provides two extra attributes
-        .data_encoding and .file_encoding which reflect the given
-        parameters of the same name. The attributes can be used for
-        introspection by Python programs.
-
-    """
-    if file_encoding is None:
-        file_encoding = data_encoding
-    data_info = lookup(data_encoding)
-    file_info = lookup(file_encoding)
-    sr = StreamRecoder(file, data_info.encode, data_info.decode,
-                       file_info.streamreader, file_info.streamwriter, errors)
-    # Add attributes to simplify introspection
-    sr.data_encoding = data_encoding
-    sr.file_encoding = file_encoding
-    return sr
-
-### Helpers for codec lookup
-
-def getencoder(encoding):
-
-    """ Lookup up the codec for the given encoding and return
-        its encoder function.
-
-        Raises a LookupError in case the encoding cannot be found.
-
-    """
-    return lookup(encoding).encode
-
-def getdecoder(encoding):
-
-    """ Lookup up the codec for the given encoding and return
-        its decoder function.
-
-        Raises a LookupError in case the encoding cannot be found.
-
-    """
-    return lookup(encoding).decode
-
-def getincrementalencoder(encoding):
-
-    """ Lookup up the codec for the given encoding and return
-        its IncrementalEncoder class or factory function.
-
-        Raises a LookupError in case the encoding cannot be found
-        or the codecs doesn't provide an incremental encoder.
-
-    """
-    encoder = lookup(encoding).incrementalencoder
-    if encoder is None:
-        raise LookupError(encoding)
-    return encoder
-
-def getincrementaldecoder(encoding):
-
-    """ Lookup up the codec for the given encoding and return
-        its IncrementalDecoder class or factory function.
-
-        Raises a LookupError in case the encoding cannot be found
-        or the codecs doesn't provide an incremental decoder.
-
-    """
-    decoder = lookup(encoding).incrementaldecoder
-    if decoder is None:
-        raise LookupError(encoding)
-    return decoder
-
-def getreader(encoding):
-
-    """ Lookup up the codec for the given encoding and return
-        its StreamReader class or factory function.
-
-        Raises a LookupError in case the encoding cannot be found.
-
-    """
-    return lookup(encoding).streamreader
-
-def getwriter(encoding):
-
-    """ Lookup up the codec for the given encoding and return
-        its StreamWriter class or factory function.
-
-        Raises a LookupError in case the encoding cannot be found.
-
-    """
-    return lookup(encoding).streamwriter
-
-def iterencode(iterator, encoding, errors='strict', **kwargs):
-    """
-    Encoding iterator.
-
-    Encodes the input strings from the iterator using a IncrementalEncoder.
-
-    errors and kwargs are passed through to the IncrementalEncoder
-    constructor.
-    """
-    encoder = getincrementalencoder(encoding)(errors, **kwargs)
-    for input in iterator:
-        output = encoder.encode(input)
-        if output:
-            yield output
-    output = encoder.encode("", True)
-    if output:
-        yield output
-
-def iterdecode(iterator, encoding, errors='strict', **kwargs):
-    """
-    Decoding iterator.
-
-    Decodes the input strings from the iterator using a IncrementalDecoder.
-
-    errors and kwargs are passed through to the IncrementalDecoder
-    constructor.
-    """
-    decoder = getincrementaldecoder(encoding)(errors, **kwargs)
-    for input in iterator:
-        output = decoder.decode(input)
-        if output:
-            yield output
-    output = decoder.decode("", True)
-    if output:
-        yield output
-
-### Helpers for charmap-based codecs
-
-def make_identity_dict(rng):
-
-    """ make_identity_dict(rng) -> dict
-
-        Return a dictionary where elements of the rng sequence are
-        mapped to themselves.
-
-    """
-    res = {}
-    for i in rng:
-        res[i]=i
-    return res
-
-def make_encoding_map(decoding_map):
-
-    """ Creates an encoding map from a decoding map.
-
-        If a target mapping in the decoding map occurs multiple
-        times, then that target is mapped to None (undefined mapping),
-        causing an exception when encountered by the charmap codec
-        during translation.
-
-        One example where this happens is cp875.py which decodes
-        multiple character to \u001a.
-
-    """
-    m = {}
-    for k,v in decoding_map.items():
-        if not v in m:
-            m[v] = k
-        else:
-            m[v] = None
-    return m
-
-### error handlers
-
-try:
-    strict_errors = lookup_error("strict")
-    ignore_errors = lookup_error("ignore")
-    replace_errors = lookup_error("replace")
-    xmlcharrefreplace_errors = lookup_error("xmlcharrefreplace")
-    backslashreplace_errors = lookup_error("backslashreplace")
-except LookupError:
-    # In --disable-unicode builds, these error handler are missing
-    strict_errors = None
-    ignore_errors = None
-    replace_errors = None
-    xmlcharrefreplace_errors = None
-    backslashreplace_errors = None
-
-# Tell modulefinder that using codecs probably needs the encodings
-# package
-_false = 0
-if _false:
-    import encodings
-
-### Tests
-
-if __name__ == '__main__':
-
-    # Make stdout translate Latin-1 output into UTF-8 output
-    sys.stdout = EncodedFile(sys.stdout, 'latin-1', 'utf-8')
-
-    # Have stdin translate Latin-1 input into UTF-8 input
-    sys.stdin = EncodedFile(sys.stdin, 'utf-8', 'latin-1')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/codeop.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/codeop.py
deleted file mode 100644
index f492816..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/codeop.py
+++ /dev/null
@@ -1,168 +0,0 @@
-r"""Utilities to compile possibly incomplete Python source code.
-
-This module provides two interfaces, broadly similar to the builtin
-function compile(), which take program text, a filename and a 'mode'
-and:
-
-- Return code object if the command is complete and valid
-- Return None if the command is incomplete
-- Raise SyntaxError, ValueError or OverflowError if the command is a
-  syntax error (OverflowError and ValueError can be produced by
-  malformed literals).
-
-Approach:
-
-First, check if the source consists entirely of blank lines and
-comments; if so, replace it with 'pass', because the built-in
-parser doesn't always do the right thing for these.
-
-Compile three times: as is, with \n, and with \n\n appended.  If it
-compiles as is, it's complete.  If it compiles with one \n appended,
-we expect more.  If it doesn't compile either way, we compare the
-error we get when compiling with \n or \n\n appended.  If the errors
-are the same, the code is broken.  But if the errors are different, we
-expect more.  Not intuitive; not even guaranteed to hold in future
-releases; but this matches the compiler's behavior from Python 1.4
-through 2.2, at least.
-
-Caveat:
-
-It is possible (but not likely) that the parser stops parsing with a
-successful outcome before reaching the end of the source; in this
-case, trailing symbols may be ignored instead of causing an error.
-For example, a backslash followed by two newlines may be followed by
-arbitrary garbage.  This will be fixed once the API for the parser is
-better.
-
-The two interfaces are:
-
-compile_command(source, filename, symbol):
-
-    Compiles a single command in the manner described above.
-
-CommandCompiler():
-
-    Instances of this class have __call__ methods identical in
-    signature to compile_command; the difference is that if the
-    instance compiles program text containing a __future__ statement,
-    the instance 'remembers' and compiles all subsequent program texts
-    with the statement in force.
-
-The module also provides another class:
-
-Compile():
-
-    Instances of this class act like the built-in function compile,
-    but with 'memory' in the sense described above.
-"""
-
-import __future__
-
-_features = [getattr(__future__, fname)
-             for fname in __future__.all_feature_names]
-
-__all__ = ["compile_command", "Compile", "CommandCompiler"]
-
-PyCF_DONT_IMPLY_DEDENT = 0x200          # Matches pythonrun.h
-
-def _maybe_compile(compiler, source, filename, symbol):
-    # Check for source consisting of only blank lines and comments
-    for line in source.split("\n"):
-        line = line.strip()
-        if line and line[0] != '#':
-            break               # Leave it alone
-    else:
-        if symbol != "eval":
-            source = "pass"     # Replace it with a 'pass' statement
-
-    err = err1 = err2 = None
-    code = code1 = code2 = None
-
-    try:
-        code = compiler(source, filename, symbol)
-    except SyntaxError, err:
-        pass
-
-    try:
-        code1 = compiler(source + "\n", filename, symbol)
-    except SyntaxError, err1:
-        pass
-
-    try:
-        code2 = compiler(source + "\n\n", filename, symbol)
-    except SyntaxError, err2:
-        pass
-
-    if code:
-        return code
-    if not code1 and repr(err1) == repr(err2):
-        raise SyntaxError, err1
-
-def _compile(source, filename, symbol):
-    return compile(source, filename, symbol, PyCF_DONT_IMPLY_DEDENT)
-
-def compile_command(source, filename="<input>", symbol="single"):
-    r"""Compile a command and determine whether it is incomplete.
-
-    Arguments:
-
-    source -- the source string; may contain \n characters
-    filename -- optional filename from which source was read; default
-                "<input>"
-    symbol -- optional grammar start symbol; "single" (default) or "eval"
-
-    Return value / exceptions raised:
-
-    - Return a code object if the command is complete and valid
-    - Return None if the command is incomplete
-    - Raise SyntaxError, ValueError or OverflowError if the command is a
-      syntax error (OverflowError and ValueError can be produced by
-      malformed literals).
-    """
-    return _maybe_compile(_compile, source, filename, symbol)
-
-class Compile:
-    """Instances of this class behave much like the built-in compile
-    function, but if one is used to compile text containing a future
-    statement, it "remembers" and compiles all subsequent program texts
-    with the statement in force."""
-    def __init__(self):
-        self.flags = PyCF_DONT_IMPLY_DEDENT
-
-    def __call__(self, source, filename, symbol):
-        codeob = compile(source, filename, symbol, self.flags, 1)
-        for feature in _features:
-            if codeob.co_flags & feature.compiler_flag:
-                self.flags |= feature.compiler_flag
-        return codeob
-
-class CommandCompiler:
-    """Instances of this class have __call__ methods identical in
-    signature to compile_command; the difference is that if the
-    instance compiles program text containing a __future__ statement,
-    the instance 'remembers' and compiles all subsequent program texts
-    with the statement in force."""
-
-    def __init__(self,):
-        self.compiler = Compile()
-
-    def __call__(self, source, filename="<input>", symbol="single"):
-        r"""Compile a command and determine whether it is incomplete.
-
-        Arguments:
-
-        source -- the source string; may contain \n characters
-        filename -- optional filename from which source was read;
-                    default "<input>"
-        symbol -- optional grammar start symbol; "single" (default) or
-                  "eval"
-
-        Return value / exceptions raised:
-
-        - Return a code object if the command is complete and valid
-        - Return None if the command is incomplete
-        - Raise SyntaxError, ValueError or OverflowError if the command is a
-          syntax error (OverflowError and ValueError can be produced by
-          malformed literals).
-        """
-        return _maybe_compile(self.compiler, source, filename, symbol)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/collections.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/collections.py
deleted file mode 100644
index 261da58..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/collections.py
+++ /dev/null
@@ -1,667 +0,0 @@
-__all__ = ['Counter', 'deque', 'defaultdict', 'namedtuple', 'OrderedDict']
-# For bootstrapping reasons, the collection ABCs are defined in _abcoll.py.
-# They should however be considered an integral part of collections.py.
-from _abcoll import *
-import _abcoll
-__all__ += _abcoll.__all__
-
-from _collections import deque, defaultdict
-from operator import itemgetter as _itemgetter
-from keyword import iskeyword as _iskeyword
-import sys as _sys
-import heapq as _heapq
-from itertools import repeat as _repeat, chain as _chain, starmap as _starmap
-
-try:
-    from thread import get_ident as _get_ident
-except ImportError:
-    from dummy_thread import get_ident as _get_ident
-
-
-################################################################################
-### OrderedDict
-################################################################################
-
-class OrderedDict(dict):
-    'Dictionary that remembers insertion order'
-    # An inherited dict maps keys to values.
-    # The inherited dict provides __getitem__, __len__, __contains__, and get.
-    # The remaining methods are order-aware.
-    # Big-O running times for all methods are the same as regular dictionaries.
-
-    # The internal self.__map dict maps keys to links in a doubly linked list.
-    # The circular doubly linked list starts and ends with a sentinel element.
-    # The sentinel element never gets deleted (this simplifies the algorithm).
-    # Each link is stored as a list of length three:  [PREV, NEXT, KEY].
-
-    def __init__(self, *args, **kwds):
-        '''Initialize an ordered dictionary.  The signature is the same as
-        regular dictionaries, but keyword arguments are not recommended because
-        their insertion order is arbitrary.
-
-        '''
-        if len(args) > 1:
-            raise TypeError('expected at most 1 arguments, got %d' % len(args))
-        try:
-            self.__root
-        except AttributeError:
-            self.__root = root = []                     # sentinel node
-            root[:] = [root, root, None]
-            self.__map = {}
-        self.__update(*args, **kwds)
-
-    def __setitem__(self, key, value, PREV=0, NEXT=1, dict_setitem=dict.__setitem__):
-        'od.__setitem__(i, y) <==> od[i]=y'
-        # Setting a new item creates a new link at the end of the linked list,
-        # and the inherited dictionary is updated with the new key/value pair.
-        if key not in self:
-            root = self.__root
-            last = root[PREV]
-            last[NEXT] = root[PREV] = self.__map[key] = [last, root, key]
-        dict_setitem(self, key, value)
-
-    def __delitem__(self, key, PREV=0, NEXT=1, dict_delitem=dict.__delitem__):
-        'od.__delitem__(y) <==> del od[y]'
-        # Deleting an existing item uses self.__map to find the link which gets
-        # removed by updating the links in the predecessor and successor nodes.
-        dict_delitem(self, key)
-        link_prev, link_next, key = self.__map.pop(key)
-        link_prev[NEXT] = link_next
-        link_next[PREV] = link_prev
-
-    def __iter__(self):
-        'od.__iter__() <==> iter(od)'
-        # Traverse the linked list in order.
-        NEXT, KEY = 1, 2
-        root = self.__root
-        curr = root[NEXT]
-        while curr is not root:
-            yield curr[KEY]
-            curr = curr[NEXT]
-
-    def __reversed__(self):
-        'od.__reversed__() <==> reversed(od)'
-        # Traverse the linked list in reverse order.
-        PREV, KEY = 0, 2
-        root = self.__root
-        curr = root[PREV]
-        while curr is not root:
-            yield curr[KEY]
-            curr = curr[PREV]
-
-    def clear(self):
-        'od.clear() -> None.  Remove all items from od.'
-        for node in self.__map.itervalues():
-            del node[:]
-        root = self.__root
-        root[:] = [root, root, None]
-        self.__map.clear()
-        dict.clear(self)
-
-    # -- the following methods do not depend on the internal structure --
-
-    def keys(self):
-        'od.keys() -> list of keys in od'
-        return list(self)
-
-    def values(self):
-        'od.values() -> list of values in od'
-        return [self[key] for key in self]
-
-    def items(self):
-        'od.items() -> list of (key, value) pairs in od'
-        return [(key, self[key]) for key in self]
-
-    def iterkeys(self):
-        'od.iterkeys() -> an iterator over the keys in od'
-        return iter(self)
-
-    def itervalues(self):
-        'od.itervalues -> an iterator over the values in od'
-        for k in self:
-            yield self[k]
-
-    def iteritems(self):
-        'od.iteritems -> an iterator over the (key, value) pairs in od'
-        for k in self:
-            yield (k, self[k])
-
-    update = MutableMapping.update
-
-    __update = update # let subclasses override update without breaking __init__
-
-    __marker = object()
-
-    def pop(self, key, default=__marker):
-        '''od.pop(k[,d]) -> v, remove specified key and return the corresponding
-        value.  If key is not found, d is returned if given, otherwise KeyError
-        is raised.
-
-        '''
-        if key in self:
-            result = self[key]
-            del self[key]
-            return result
-        if default is self.__marker:
-            raise KeyError(key)
-        return default
-
-    def setdefault(self, key, default=None):
-        'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od'
-        if key in self:
-            return self[key]
-        self[key] = default
-        return default
-
-    def popitem(self, last=True):
-        '''od.popitem() -> (k, v), return and remove a (key, value) pair.
-        Pairs are returned in LIFO order if last is true or FIFO order if false.
-
-        '''
-        if not self:
-            raise KeyError('dictionary is empty')
-        key = next(reversed(self) if last else iter(self))
-        value = self.pop(key)
-        return key, value
-
-    def __repr__(self, _repr_running={}):
-        'od.__repr__() <==> repr(od)'
-        call_key = id(self), _get_ident()
-        if call_key in _repr_running:
-            return '...'
-        _repr_running[call_key] = 1
-        try:
-            if not self:
-                return '%s()' % (self.__class__.__name__,)
-            return '%s(%r)' % (self.__class__.__name__, self.items())
-        finally:
-            del _repr_running[call_key]
-
-    def __reduce__(self):
-        'Return state information for pickling'
-        items = [[k, self[k]] for k in self]
-        inst_dict = vars(self).copy()
-        for k in vars(OrderedDict()):
-            inst_dict.pop(k, None)
-        if inst_dict:
-            return (self.__class__, (items,), inst_dict)
-        return self.__class__, (items,)
-
-    def copy(self):
-        'od.copy() -> a shallow copy of od'
-        return self.__class__(self)
-
-    @classmethod
-    def fromkeys(cls, iterable, value=None):
-        '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S.
-        If not specified, the value defaults to None.
-
-        '''
-        self = cls()
-        for key in iterable:
-            self[key] = value
-        return self
-
-    def __eq__(self, other):
-        '''od.__eq__(y) <==> od==y.  Comparison to another OD is order-sensitive
-        while comparison to a regular mapping is order-insensitive.
-
-        '''
-        if isinstance(other, OrderedDict):
-            return len(self)==len(other) and self.items() == other.items()
-        return dict.__eq__(self, other)
-
-    def __ne__(self, other):
-        'od.__ne__(y) <==> od!=y'
-        return not self == other
-
-    # -- the following methods support python 3.x style dictionary views --
-
-    def viewkeys(self):
-        "od.viewkeys() -> a set-like object providing a view on od's keys"
-        return KeysView(self)
-
-    def viewvalues(self):
-        "od.viewvalues() -> an object providing a view on od's values"
-        return ValuesView(self)
-
-    def viewitems(self):
-        "od.viewitems() -> a set-like object providing a view on od's items"
-        return ItemsView(self)
-
-
-################################################################################
-### namedtuple
-################################################################################
-
-def namedtuple(typename, field_names, verbose=False, rename=False):
-    """Returns a new subclass of tuple with named fields.
-
-    >>> Point = namedtuple('Point', 'x y')
-    >>> Point.__doc__                   # docstring for the new class
-    'Point(x, y)'
-    >>> p = Point(11, y=22)             # instantiate with positional args or keywords
-    >>> p[0] + p[1]                     # indexable like a plain tuple
-    33
-    >>> x, y = p                        # unpack like a regular tuple
-    >>> x, y
-    (11, 22)
-    >>> p.x + p.y                       # fields also accessable by name
-    33
-    >>> d = p._asdict()                 # convert to a dictionary
-    >>> d['x']
-    11
-    >>> Point(**d)                      # convert from a dictionary
-    Point(x=11, y=22)
-    >>> p._replace(x=100)               # _replace() is like str.replace() but targets named fields
-    Point(x=100, y=22)
-
-    """
-
-    # Parse and validate the field names.  Validation serves two purposes,
-    # generating informative error messages and preventing template injection attacks.
-    if isinstance(field_names, basestring):
-        field_names = field_names.replace(',', ' ').split() # names separated by whitespace and/or commas
-    field_names = tuple(map(str, field_names))
-    if rename:
-        names = list(field_names)
-        seen = set()
-        for i, name in enumerate(names):
-            if (not all(c.isalnum() or c=='_' for c in name) or _iskeyword(name)
-                or not name or name[0].isdigit() or name.startswith('_')
-                or name in seen):
-                names[i] = '_%d' % i
-            seen.add(name)
-        field_names = tuple(names)
-    for name in (typename,) + field_names:
-        if not all(c.isalnum() or c=='_' for c in name):
-            raise ValueError('Type names and field names can only contain alphanumeric characters and underscores: %r' % name)
-        if _iskeyword(name):
-            raise ValueError('Type names and field names cannot be a keyword: %r' % name)
-        if name[0].isdigit():
-            raise ValueError('Type names and field names cannot start with a number: %r' % name)
-    seen_names = set()
-    for name in field_names:
-        if name.startswith('_') and not rename:
-            raise ValueError('Field names cannot start with an underscore: %r' % name)
-        if name in seen_names:
-            raise ValueError('Encountered duplicate field name: %r' % name)
-        seen_names.add(name)
-
-    # Create and fill-in the class template
-    numfields = len(field_names)
-    argtxt = repr(field_names).replace("'", "")[1:-1]   # tuple repr without parens or quotes
-    reprtxt = ', '.join('%s=%%r' % name for name in field_names)
-    template = '''class %(typename)s(tuple):
-        '%(typename)s(%(argtxt)s)' \n
-        __slots__ = () \n
-        _fields = %(field_names)r \n
-        def __new__(_cls, %(argtxt)s):
-            'Create new instance of %(typename)s(%(argtxt)s)'
-            return _tuple.__new__(_cls, (%(argtxt)s)) \n
-        @classmethod
-        def _make(cls, iterable, new=tuple.__new__, len=len):
-            'Make a new %(typename)s object from a sequence or iterable'
-            result = new(cls, iterable)
-            if len(result) != %(numfields)d:
-                raise TypeError('Expected %(numfields)d arguments, got %%d' %% len(result))
-            return result \n
-        def __repr__(self):
-            'Return a nicely formatted representation string'
-            return '%(typename)s(%(reprtxt)s)' %% self \n
-        def _asdict(self):
-            'Return a new OrderedDict which maps field names to their values'
-            return OrderedDict(zip(self._fields, self)) \n
-        def _replace(_self, **kwds):
-            'Return a new %(typename)s object replacing specified fields with new values'
-            result = _self._make(map(kwds.pop, %(field_names)r, _self))
-            if kwds:
-                raise ValueError('Got unexpected field names: %%r' %% kwds.keys())
-            return result \n
-        def __getnewargs__(self):
-            'Return self as a plain tuple.  Used by copy and pickle.'
-            return tuple(self) \n\n''' % locals()
-    for i, name in enumerate(field_names):
-        template += "        %s = _property(_itemgetter(%d), doc='Alias for field number %d')\n" % (name, i, i)
-    if verbose:
-        print template
-
-    # Execute the template string in a temporary namespace and
-    # support tracing utilities by setting a value for frame.f_globals['__name__']
-    namespace = dict(_itemgetter=_itemgetter, __name__='namedtuple_%s' % typename,
-                     OrderedDict=OrderedDict, _property=property, _tuple=tuple)
-    try:
-        exec template in namespace
-    except SyntaxError, e:
-        raise SyntaxError(e.message + ':\n' + template)
-    result = namespace[typename]
-
-    # For pickling to work, the __module__ variable needs to be set to the frame
-    # where the named tuple is created.  Bypass this step in enviroments where
-    # sys._getframe is not defined (Jython for example) or sys._getframe is not
-    # defined for arguments greater than 0 (IronPython).
-    try:
-        result.__module__ = _sys._getframe(1).f_globals.get('__name__', '__main__')
-    except (AttributeError, ValueError):
-        pass
-
-    return result
-
-
-########################################################################
-###  Counter
-########################################################################
-
-class Counter(dict):
-    '''Dict subclass for counting hashable items.  Sometimes called a bag
-    or multiset.  Elements are stored as dictionary keys and their counts
-    are stored as dictionary values.
-
-    >>> c = Counter('abcdeabcdabcaba')  # count elements from a string
-
-    >>> c.most_common(3)                # three most common elements
-    [('a', 5), ('b', 4), ('c', 3)]
-    >>> sorted(c)                       # list all unique elements
-    ['a', 'b', 'c', 'd', 'e']
-    >>> ''.join(sorted(c.elements()))   # list elements with repetitions
-    'aaaaabbbbcccdde'
-    >>> sum(c.values())                 # total of all counts
-    15
-
-    >>> c['a']                          # count of letter 'a'
-    5
-    >>> for elem in 'shazam':           # update counts from an iterable
-    ...     c[elem] += 1                # by adding 1 to each element's count
-    >>> c['a']                          # now there are seven 'a'
-    7
-    >>> del c['b']                      # remove all 'b'
-    >>> c['b']                          # now there are zero 'b'
-    0
-
-    >>> d = Counter('simsalabim')       # make another counter
-    >>> c.update(d)                     # add in the second counter
-    >>> c['a']                          # now there are nine 'a'
-    9
-
-    >>> c.clear()                       # empty the counter
-    >>> c
-    Counter()
-
-    Note:  If a count is set to zero or reduced to zero, it will remain
-    in the counter until the entry is deleted or the counter is cleared:
-
-    >>> c = Counter('aaabbc')
-    >>> c['b'] -= 2                     # reduce the count of 'b' by two
-    >>> c.most_common()                 # 'b' is still in, but its count is zero
-    [('a', 3), ('c', 1), ('b', 0)]
-
-    '''
-    # References:
-    #   http://en.wikipedia.org/wiki/Multiset
-    #   http://www.gnu.org/software/smalltalk/manual-base/html_node/Bag.html
-    #   http://www.demo2s.com/Tutorial/Cpp/0380__set-multiset/Catalog0380__set-multiset.htm
-    #   http://code.activestate.com/recipes/259174/
-    #   Knuth, TAOCP Vol. II section 4.6.3
-
-    def __init__(self, iterable=None, **kwds):
-        '''Create a new, empty Counter object.  And if given, count elements
-        from an input iterable.  Or, initialize the count from another mapping
-        of elements to their counts.
-
-        >>> c = Counter()                           # a new, empty counter
-        >>> c = Counter('gallahad')                 # a new counter from an iterable
-        >>> c = Counter({'a': 4, 'b': 2})           # a new counter from a mapping
-        >>> c = Counter(a=4, b=2)                   # a new counter from keyword args
-
-        '''
-        super(Counter, self).__init__()
-        self.update(iterable, **kwds)
-
-    def __missing__(self, key):
-        'The count of elements not in the Counter is zero.'
-        # Needed so that self[missing_item] does not raise KeyError
-        return 0
-
-    def most_common(self, n=None):
-        '''List the n most common elements and their counts from the most
-        common to the least.  If n is None, then list all element counts.
-
-        >>> Counter('abcdeabcdabcaba').most_common(3)
-        [('a', 5), ('b', 4), ('c', 3)]
-
-        '''
-        # Emulate Bag.sortedByCount from Smalltalk
-        if n is None:
-            return sorted(self.iteritems(), key=_itemgetter(1), reverse=True)
-        return _heapq.nlargest(n, self.iteritems(), key=_itemgetter(1))
-
-    def elements(self):
-        '''Iterator over elements repeating each as many times as its count.
-
-        >>> c = Counter('ABCABC')
-        >>> sorted(c.elements())
-        ['A', 'A', 'B', 'B', 'C', 'C']
-
-        # Knuth's example for prime factors of 1836:  2**2 * 3**3 * 17**1
-        >>> prime_factors = Counter({2: 2, 3: 3, 17: 1})
-        >>> product = 1
-        >>> for factor in prime_factors.elements():     # loop over factors
-        ...     product *= factor                       # and multiply them
-        >>> product
-        1836
-
-        Note, if an element's count has been set to zero or is a negative
-        number, elements() will ignore it.
-
-        '''
-        # Emulate Bag.do from Smalltalk and Multiset.begin from C++.
-        return _chain.from_iterable(_starmap(_repeat, self.iteritems()))
-
-    # Override dict methods where necessary
-
-    @classmethod
-    def fromkeys(cls, iterable, v=None):
-        # There is no equivalent method for counters because setting v=1
-        # means that no element can have a count greater than one.
-        raise NotImplementedError(
-            'Counter.fromkeys() is undefined.  Use Counter(iterable) instead.')
-
-    def update(self, iterable=None, **kwds):
-        '''Like dict.update() but add counts instead of replacing them.
-
-        Source can be an iterable, a dictionary, or another Counter instance.
-
-        >>> c = Counter('which')
-        >>> c.update('witch')           # add elements from another iterable
-        >>> d = Counter('watch')
-        >>> c.update(d)                 # add elements from another counter
-        >>> c['h']                      # four 'h' in which, witch, and watch
-        4
-
-        '''
-        # The regular dict.update() operation makes no sense here because the
-        # replace behavior results in the some of original untouched counts
-        # being mixed-in with all of the other counts for a mismash that
-        # doesn't have a straight-forward interpretation in most counting
-        # contexts.  Instead, we implement straight-addition.  Both the inputs
-        # and outputs are allowed to contain zero and negative counts.
-
-        if iterable is not None:
-            if isinstance(iterable, Mapping):
-                if self:
-                    self_get = self.get
-                    for elem, count in iterable.iteritems():
-                        self[elem] = self_get(elem, 0) + count
-                else:
-                    super(Counter, self).update(iterable) # fast path when counter is empty
-            else:
-                self_get = self.get
-                for elem in iterable:
-                    self[elem] = self_get(elem, 0) + 1
-        if kwds:
-            self.update(kwds)
-
-    def subtract(self, iterable=None, **kwds):
-        '''Like dict.update() but subtracts counts instead of replacing them.
-        Counts can be reduced below zero.  Both the inputs and outputs are
-        allowed to contain zero and negative counts.
-
-        Source can be an iterable, a dictionary, or another Counter instance.
-
-        >>> c = Counter('which')
-        >>> c.subtract('witch')             # subtract elements from another iterable
-        >>> c.subtract(Counter('watch'))    # subtract elements from another counter
-        >>> c['h']                          # 2 in which, minus 1 in witch, minus 1 in watch
-        0
-        >>> c['w']                          # 1 in which, minus 1 in witch, minus 1 in watch
-        -1
-
-        '''
-        if iterable is not None:
-            self_get = self.get
-            if isinstance(iterable, Mapping):
-                for elem, count in iterable.items():
-                    self[elem] = self_get(elem, 0) - count
-            else:
-                for elem in iterable:
-                    self[elem] = self_get(elem, 0) - 1
-        if kwds:
-            self.subtract(kwds)
-
-    def copy(self):
-        'Return a shallow copy.'
-        return self.__class__(self)
-
-    def __reduce__(self):
-        return self.__class__, (dict(self),)
-
-    def __delitem__(self, elem):
-        'Like dict.__delitem__() but does not raise KeyError for missing values.'
-        if elem in self:
-            super(Counter, self).__delitem__(elem)
-
-    def __repr__(self):
-        if not self:
-            return '%s()' % self.__class__.__name__
-        items = ', '.join(map('%r: %r'.__mod__, self.most_common()))
-        return '%s({%s})' % (self.__class__.__name__, items)
-
-    # Multiset-style mathematical operations discussed in:
-    #       Knuth TAOCP Volume II section 4.6.3 exercise 19
-    #       and at http://en.wikipedia.org/wiki/Multiset
-    #
-    # Outputs guaranteed to only include positive counts.
-    #
-    # To strip negative and zero counts, add-in an empty counter:
-    #       c += Counter()
-
-    def __add__(self, other):
-        '''Add counts from two counters.
-
-        >>> Counter('abbb') + Counter('bcc')
-        Counter({'b': 4, 'c': 2, 'a': 1})
-
-        '''
-        if not isinstance(other, Counter):
-            return NotImplemented
-        result = Counter()
-        for elem, count in self.items():
-            newcount = count + other[elem]
-            if newcount > 0:
-                result[elem] = newcount
-        for elem, count in other.items():
-            if elem not in self and count > 0:
-                result[elem] = count
-        return result
-
-    def __sub__(self, other):
-        ''' Subtract count, but keep only results with positive counts.
-
-        >>> Counter('abbbc') - Counter('bccd')
-        Counter({'b': 2, 'a': 1})
-
-        '''
-        if not isinstance(other, Counter):
-            return NotImplemented
-        result = Counter()
-        for elem, count in self.items():
-            newcount = count - other[elem]
-            if newcount > 0:
-                result[elem] = newcount
-        for elem, count in other.items():
-            if elem not in self and count < 0:
-                result[elem] = 0 - count
-        return result
-
-    def __or__(self, other):
-        '''Union is the maximum of value in either of the input counters.
-
-        >>> Counter('abbb') | Counter('bcc')
-        Counter({'b': 3, 'c': 2, 'a': 1})
-
-        '''
-        if not isinstance(other, Counter):
-            return NotImplemented
-        result = Counter()
-        for elem, count in self.items():
-            other_count = other[elem]
-            newcount = other_count if count < other_count else count
-            if newcount > 0:
-                result[elem] = newcount
-        for elem, count in other.items():
-            if elem not in self and count > 0:
-                result[elem] = count
-        return result
-
-    def __and__(self, other):
-        ''' Intersection is the minimum of corresponding counts.
-
-        >>> Counter('abbb') & Counter('bcc')
-        Counter({'b': 1})
-
-        '''
-        if not isinstance(other, Counter):
-            return NotImplemented
-        result = Counter()
-        for elem, count in self.items():
-            other_count = other[elem]
-            newcount = count if count < other_count else other_count
-            if newcount > 0:
-                result[elem] = newcount
-        return result
-
-
-if __name__ == '__main__':
-    # verify that instances can be pickled
-    from cPickle import loads, dumps
-    Point = namedtuple('Point', 'x, y', True)
-    p = Point(x=10, y=20)
-    assert p == loads(dumps(p))
-
-    # test and demonstrate ability to override methods
-    class Point(namedtuple('Point', 'x y')):
-        __slots__ = ()
-        @property
-        def hypot(self):
-            return (self.x ** 2 + self.y ** 2) ** 0.5
-        def __str__(self):
-            return 'Point: x=%6.3f  y=%6.3f  hypot=%6.3f' % (self.x, self.y, self.hypot)
-
-    for p in Point(3, 4), Point(14, 5/7.):
-        print p
-
-    class Point(namedtuple('Point', 'x y')):
-        'Point class with optimized _make() and _replace() without error-checking'
-        __slots__ = ()
-        _make = classmethod(tuple.__new__)
-        def _replace(self, _map=map, **kwds):
-            return self._make(_map(kwds.get, ('x', 'y'), self))
-
-    print Point(11, 22)._replace(x=100)
-
-    Point3D = namedtuple('Point3D', Point._fields + ('z',))
-    print Point3D.__doc__
-
-    import doctest
-    TestResults = namedtuple('TestResults', 'failed attempted')
-    print TestResults(*doctest.testmod())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/colorsys.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/colorsys.py
deleted file mode 100644
index 194fea7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/colorsys.py
+++ /dev/null
@@ -1,156 +0,0 @@
-"""Conversion functions between RGB and other color systems.
-
-This modules provides two functions for each color system ABC:
-
-  rgb_to_abc(r, g, b) --> a, b, c
-  abc_to_rgb(a, b, c) --> r, g, b
-
-All inputs and outputs are triples of floats in the range [0.0...1.0]
-(with the exception of I and Q, which covers a slightly larger range).
-Inputs outside the valid range may cause exceptions or invalid outputs.
-
-Supported color systems:
-RGB: Red, Green, Blue components
-YIQ: Luminance, Chrominance (used by composite video signals)
-HLS: Hue, Luminance, Saturation
-HSV: Hue, Saturation, Value
-"""
-
-# References:
-# http://en.wikipedia.org/wiki/YIQ
-# http://en.wikipedia.org/wiki/HLS_color_space
-# http://en.wikipedia.org/wiki/HSV_color_space
-
-__all__ = ["rgb_to_yiq","yiq_to_rgb","rgb_to_hls","hls_to_rgb",
-           "rgb_to_hsv","hsv_to_rgb"]
-
-# Some floating point constants
-
-ONE_THIRD = 1.0/3.0
-ONE_SIXTH = 1.0/6.0
-TWO_THIRD = 2.0/3.0
-
-# YIQ: used by composite video signals (linear combinations of RGB)
-# Y: perceived grey level (0.0 == black, 1.0 == white)
-# I, Q: color components
-
-def rgb_to_yiq(r, g, b):
-    y = 0.30*r + 0.59*g + 0.11*b
-    i = 0.60*r - 0.28*g - 0.32*b
-    q = 0.21*r - 0.52*g + 0.31*b
-    return (y, i, q)
-
-def yiq_to_rgb(y, i, q):
-    r = y + 0.948262*i + 0.624013*q
-    g = y - 0.276066*i - 0.639810*q
-    b = y - 1.105450*i + 1.729860*q
-    if r < 0.0:
-        r = 0.0
-    if g < 0.0:
-        g = 0.0
-    if b < 0.0:
-        b = 0.0
-    if r > 1.0:
-        r = 1.0
-    if g > 1.0:
-        g = 1.0
-    if b > 1.0:
-        b = 1.0
-    return (r, g, b)
-
-
-# HLS: Hue, Luminance, Saturation
-# H: position in the spectrum
-# L: color lightness
-# S: color saturation
-
-def rgb_to_hls(r, g, b):
-    maxc = max(r, g, b)
-    minc = min(r, g, b)
-    # XXX Can optimize (maxc+minc) and (maxc-minc)
-    l = (minc+maxc)/2.0
-    if minc == maxc:
-        return 0.0, l, 0.0
-    if l <= 0.5:
-        s = (maxc-minc) / (maxc+minc)
-    else:
-        s = (maxc-minc) / (2.0-maxc-minc)
-    rc = (maxc-r) / (maxc-minc)
-    gc = (maxc-g) / (maxc-minc)
-    bc = (maxc-b) / (maxc-minc)
-    if r == maxc:
-        h = bc-gc
-    elif g == maxc:
-        h = 2.0+rc-bc
-    else:
-        h = 4.0+gc-rc
-    h = (h/6.0) % 1.0
-    return h, l, s
-
-def hls_to_rgb(h, l, s):
-    if s == 0.0:
-        return l, l, l
-    if l <= 0.5:
-        m2 = l * (1.0+s)
-    else:
-        m2 = l+s-(l*s)
-    m1 = 2.0*l - m2
-    return (_v(m1, m2, h+ONE_THIRD), _v(m1, m2, h), _v(m1, m2, h-ONE_THIRD))
-
-def _v(m1, m2, hue):
-    hue = hue % 1.0
-    if hue < ONE_SIXTH:
-        return m1 + (m2-m1)*hue*6.0
-    if hue < 0.5:
-        return m2
-    if hue < TWO_THIRD:
-        return m1 + (m2-m1)*(TWO_THIRD-hue)*6.0
-    return m1
-
-
-# HSV: Hue, Saturation, Value
-# H: position in the spectrum
-# S: color saturation ("purity")
-# V: color brightness
-
-def rgb_to_hsv(r, g, b):
-    maxc = max(r, g, b)
-    minc = min(r, g, b)
-    v = maxc
-    if minc == maxc:
-        return 0.0, 0.0, v
-    s = (maxc-minc) / maxc
-    rc = (maxc-r) / (maxc-minc)
-    gc = (maxc-g) / (maxc-minc)
-    bc = (maxc-b) / (maxc-minc)
-    if r == maxc:
-        h = bc-gc
-    elif g == maxc:
-        h = 2.0+rc-bc
-    else:
-        h = 4.0+gc-rc
-    h = (h/6.0) % 1.0
-    return h, s, v
-
-def hsv_to_rgb(h, s, v):
-    if s == 0.0:
-        return v, v, v
-    i = int(h*6.0) # XXX assume int() truncates!
-    f = (h*6.0) - i
-    p = v*(1.0 - s)
-    q = v*(1.0 - s*f)
-    t = v*(1.0 - s*(1.0-f))
-    i = i%6
-    if i == 0:
-        return v, t, p
-    if i == 1:
-        return q, v, p
-    if i == 2:
-        return p, v, t
-    if i == 3:
-        return p, q, v
-    if i == 4:
-        return t, p, v
-    if i == 5:
-        return v, p, q
-    # Cannot get here
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/commands.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/commands.py
deleted file mode 100644
index 89b3574..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/commands.py
+++ /dev/null
@@ -1,90 +0,0 @@
-"""Execute shell commands via os.popen() and return status, output.
-
-Interface summary:
-
-       import commands
-
-       outtext = commands.getoutput(cmd)
-       (exitstatus, outtext) = commands.getstatusoutput(cmd)
-       outtext = commands.getstatus(file)  # returns output of "ls -ld file"
-
-A trailing newline is removed from the output string.
-
-Encapsulates the basic operation:
-
-      pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
-      text = pipe.read()
-      sts = pipe.close()
-
- [Note:  it would be nice to add functions to interpret the exit status.]
-"""
-from warnings import warnpy3k
-warnpy3k("the commands module has been removed in Python 3.0; "
-         "use the subprocess module instead", stacklevel=2)
-del warnpy3k
-
-__all__ = ["getstatusoutput","getoutput","getstatus"]
-
-# Module 'commands'
-#
-# Various tools for executing commands and looking at their output and status.
-#
-# NB This only works (and is only relevant) for UNIX.
-
-
-# Get 'ls -l' status for an object into a string
-#
-def getstatus(file):
-    """Return output of "ls -ld <file>" in a string."""
-    import warnings
-    warnings.warn("commands.getstatus() is deprecated", DeprecationWarning, 2)
-    return getoutput('ls -ld' + mkarg(file))
-
-
-# Get the output from a shell command into a string.
-# The exit status is ignored; a trailing newline is stripped.
-# Assume the command will work with '{ ... ; } 2>&1' around it..
-#
-def getoutput(cmd):
-    """Return output (stdout or stderr) of executing cmd in a shell."""
-    return getstatusoutput(cmd)[1]
-
-
-# Ditto but preserving the exit status.
-# Returns a pair (sts, output)
-#
-def getstatusoutput(cmd):
-    """Return (status, output) of executing cmd in a shell."""
-    import os
-    pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
-    text = pipe.read()
-    sts = pipe.close()
-    if sts is None: sts = 0
-    if text[-1:] == '\n': text = text[:-1]
-    return sts, text
-
-
-# Make command argument from directory and pathname (prefix space, add quotes).
-#
-def mk2arg(head, x):
-    import os
-    return mkarg(os.path.join(head, x))
-
-
-# Make a shell command argument from a string.
-# Return a string beginning with a space followed by a shell-quoted
-# version of the argument.
-# Two strategies: enclose in single quotes if it contains none;
-# otherwise, enclose in double quotes and prefix quotable characters
-# with backslash.
-#
-def mkarg(x):
-    if '\'' not in x:
-        return ' \'' + x + '\''
-    s = ' "'
-    for c in x:
-        if c in '\\$"`':
-            s = s + '\\'
-        s = s + c
-    s = s + '"'
-    return s
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/compileall.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/compileall.py
deleted file mode 100644
index 1dd126a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/compileall.py
+++ /dev/null
@@ -1,214 +0,0 @@
-"""Module/script to "compile" all .py files to .pyc (or .pyo) file.
-
-When called as a script with arguments, this compiles the directories
-given as arguments recursively; the -l option prevents it from
-recursing into directories.
-
-Without arguments, if compiles all modules on sys.path, without
-recursing into subdirectories.  (Even though it should do so for
-packages -- for now, you'll have to deal with packages separately.)
-
-See module py_compile for details of the actual byte-compilation.
-"""
-import os
-import sys
-import py_compile
-import struct
-import imp
-
-__all__ = ["compile_dir","compile_file","compile_path"]
-
-def compile_dir(dir, maxlevels=10, ddir=None,
-                force=0, rx=None, quiet=0):
-    """Byte-compile all modules in the given directory tree.
-
-    Arguments (only dir is required):
-
-    dir:       the directory to byte-compile
-    maxlevels: maximum recursion level (default 10)
-    ddir:      if given, purported directory name (this is the
-               directory name that will show up in error messages)
-    force:     if 1, force compilation, even if timestamps are up-to-date
-    quiet:     if 1, be quiet during compilation
-    """
-    if not quiet:
-        print 'Listing', dir, '...'
-    try:
-        names = os.listdir(dir)
-    except os.error:
-        print "Can't list", dir
-        names = []
-    names.sort()
-    success = 1
-    for name in names:
-        fullname = os.path.join(dir, name)
-        if ddir is not None:
-            dfile = os.path.join(ddir, name)
-        else:
-            dfile = None
-        if not os.path.isdir(fullname):
-            if not compile_file(fullname, ddir, force, rx, quiet):
-                success = 0
-        elif maxlevels > 0 and \
-             name != os.curdir and name != os.pardir and \
-             os.path.isdir(fullname) and \
-             not os.path.islink(fullname):
-            if not compile_dir(fullname, maxlevels - 1, dfile, force, rx,
-                               quiet):
-                success = 0
-    return success
-
-def compile_file(fullname, ddir=None, force=0, rx=None, quiet=0):
-    """Byte-compile one file.
-
-    Arguments (only fullname is required):
-
-    fullname:  the file to byte-compile
-    ddir:      if given, purported directory name (this is the
-               directory name that will show up in error messages)
-    force:     if 1, force compilation, even if timestamps are up-to-date
-    quiet:     if 1, be quiet during compilation
-    """
-    success = 1
-    name = os.path.basename(fullname)
-    if ddir is not None:
-        dfile = os.path.join(ddir, name)
-    else:
-        dfile = None
-    if rx is not None:
-        mo = rx.search(fullname)
-        if mo:
-            return success
-    if os.path.isfile(fullname):
-        head, tail = name[:-3], name[-3:]
-        if tail == '.py':
-            if not force:
-                try:
-                    mtime = int(os.stat(fullname).st_mtime)
-                    expect = struct.pack('<4sl', imp.get_magic(), mtime)
-                    cfile = fullname + (__debug__ and 'c' or 'o')
-                    with open(cfile, 'rb') as chandle:
-                        actual = chandle.read(8)
-                    if expect == actual:
-                        return success
-                except IOError:
-                    pass
-            if not quiet:
-                print 'Compiling', fullname, '...'
-            try:
-                ok = py_compile.compile(fullname, None, dfile, True)
-            except py_compile.PyCompileError,err:
-                if quiet:
-                    print 'Compiling', fullname, '...'
-                print err.msg
-                success = 0
-            except IOError, e:
-                print "Sorry", e
-                success = 0
-            else:
-                if ok == 0:
-                    success = 0
-    return success
-
-def compile_path(skip_curdir=1, maxlevels=0, force=0, quiet=0):
-    """Byte-compile all module on sys.path.
-
-    Arguments (all optional):
-
-    skip_curdir: if true, skip current directory (default true)
-    maxlevels:   max recursion level (default 0)
-    force: as for compile_dir() (default 0)
-    quiet: as for compile_dir() (default 0)
-    """
-    success = 1
-    for dir in sys.path:
-        if (not dir or dir == os.curdir) and skip_curdir:
-            print 'Skipping current directory'
-        else:
-            success = success and compile_dir(dir, maxlevels, None,
-                                              force, quiet=quiet)
-    return success
-
-def expand_args(args, flist):
-    """read names in flist and append to args"""
-    expanded = args[:]
-    if flist:
-        try:
-            if flist == '-':
-                fd = sys.stdin
-            else:
-                fd = open(flist)
-            while 1:
-                line = fd.readline()
-                if not line:
-                    break
-                expanded.append(line[:-1])
-        except IOError:
-            print "Error reading file list %s" % flist
-            raise
-    return expanded
-
-def main():
-    """Script main program."""
-    import getopt
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'lfqd:x:i:')
-    except getopt.error, msg:
-        print msg
-        print "usage: python compileall.py [-l] [-f] [-q] [-d destdir] " \
-              "[-x regexp] [-i list] [directory|file ...]"
-        print "-l: don't recurse down"
-        print "-f: force rebuild even if timestamps are up-to-date"
-        print "-q: quiet operation"
-        print "-d destdir: purported directory name for error messages"
-        print "   if no directory arguments, -l sys.path is assumed"
-        print "-x regexp: skip files matching the regular expression regexp"
-        print "   the regexp is searched for in the full path of the file"
-        print "-i list: expand list with its content (file and directory names)"
-        sys.exit(2)
-    maxlevels = 10
-    ddir = None
-    force = 0
-    quiet = 0
-    rx = None
-    flist = None
-    for o, a in opts:
-        if o == '-l': maxlevels = 0
-        if o == '-d': ddir = a
-        if o == '-f': force = 1
-        if o == '-q': quiet = 1
-        if o == '-x':
-            import re
-            rx = re.compile(a)
-        if o == '-i': flist = a
-    if ddir:
-        if len(args) != 1 and not os.path.isdir(args[0]):
-            print "-d destdir require exactly one directory argument"
-            sys.exit(2)
-    success = 1
-    try:
-        if args or flist:
-            try:
-                if flist:
-                    args = expand_args(args, flist)
-            except IOError:
-                success = 0
-            if success:
-                for arg in args:
-                    if os.path.isdir(arg):
-                        if not compile_dir(arg, maxlevels, ddir,
-                                           force, rx, quiet):
-                            success = 0
-                    else:
-                        if not compile_file(arg, ddir, force, rx, quiet):
-                            success = 0
-        else:
-            success = compile_path()
-    except KeyboardInterrupt:
-        print "\n[interrupt]"
-        success = 0
-    return success
-
-if __name__ == '__main__':
-    exit_status = int(not main())
-    sys.exit(exit_status)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/__init__.py
deleted file mode 100644
index c49ea7a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/__init__.py
+++ /dev/null
@@ -1,31 +0,0 @@
-"""Package for parsing and compiling Python source code
-
-There are several functions defined at the top level that are imported
-from modules contained in the package.
-
-parse(buf, mode="exec") -> AST
-    Converts a string containing Python source code to an abstract
-    syntax tree (AST).  The AST is defined in compiler.ast.
-
-parseFile(path) -> AST
-    The same as parse(open(path))
-
-walk(ast, visitor, verbose=None)
-    Does a pre-order walk over the ast using the visitor instance.
-    See compiler.visitor for details.
-
-compile(source, filename, mode, flags=None, dont_inherit=None)
-    Returns a code object.  A replacement for the builtin compile() function.
-
-compileFile(filename)
-    Generates a .pyc file by compiling filename.
-"""
-
-import warnings
-
-warnings.warn("The compiler package is deprecated and removed in Python 3.x.",
-              DeprecationWarning, stacklevel=2)
-
-from compiler.transformer import parse, parseFile
-from compiler.visitor import walk
-from compiler.pycodegen import compile, compileFile
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/ast.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/ast.py
deleted file mode 100644
index 319c5db..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/ast.py
+++ /dev/null
@@ -1,1419 +0,0 @@
-"""Python abstract syntax node definitions
-
-This file is automatically generated by Tools/compiler/astgen.py
-"""
-from compiler.consts import CO_VARARGS, CO_VARKEYWORDS
-
-def flatten(seq):
-    l = []
-    for elt in seq:
-        t = type(elt)
-        if t is tuple or t is list:
-            for elt2 in flatten(elt):
-                l.append(elt2)
-        else:
-            l.append(elt)
-    return l
-
-def flatten_nodes(seq):
-    return [n for n in flatten(seq) if isinstance(n, Node)]
-
-nodes = {}
-
-class Node:
-    """Abstract base class for ast nodes."""
-    def getChildren(self):
-        pass # implemented by subclasses
-    def __iter__(self):
-        for n in self.getChildren():
-            yield n
-    def asList(self): # for backwards compatibility
-        return self.getChildren()
-    def getChildNodes(self):
-        pass # implemented by subclasses
-
-class EmptyNode(Node):
-    pass
-
-class Expression(Node):
-    # Expression is an artificial node class to support "eval"
-    nodes["expression"] = "Expression"
-    def __init__(self, node):
-        self.node = node
-
-    def getChildren(self):
-        return self.node,
-
-    def getChildNodes(self):
-        return self.node,
-
-    def __repr__(self):
-        return "Expression(%s)" % (repr(self.node))
-
-class Add(Node):
-    def __init__(self, leftright, lineno=None):
-        self.left = leftright[0]
-        self.right = leftright[1]
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.left, self.right
-
-    def getChildNodes(self):
-        return self.left, self.right
-
-    def __repr__(self):
-        return "Add((%s, %s))" % (repr(self.left), repr(self.right))
-
-class And(Node):
-    def __init__(self, nodes, lineno=None):
-        self.nodes = nodes
-        self.lineno = lineno
-
-    def getChildren(self):
-        return tuple(flatten(self.nodes))
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "And(%s)" % (repr(self.nodes),)
-
-class AssAttr(Node):
-    def __init__(self, expr, attrname, flags, lineno=None):
-        self.expr = expr
-        self.attrname = attrname
-        self.flags = flags
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.expr, self.attrname, self.flags
-
-    def getChildNodes(self):
-        return self.expr,
-
-    def __repr__(self):
-        return "AssAttr(%s, %s, %s)" % (repr(self.expr), repr(self.attrname), repr(self.flags))
-
-class AssList(Node):
-    def __init__(self, nodes, lineno=None):
-        self.nodes = nodes
-        self.lineno = lineno
-
-    def getChildren(self):
-        return tuple(flatten(self.nodes))
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "AssList(%s)" % (repr(self.nodes),)
-
-class AssName(Node):
-    def __init__(self, name, flags, lineno=None):
-        self.name = name
-        self.flags = flags
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.name, self.flags
-
-    def getChildNodes(self):
-        return ()
-
-    def __repr__(self):
-        return "AssName(%s, %s)" % (repr(self.name), repr(self.flags))
-
-class AssTuple(Node):
-    def __init__(self, nodes, lineno=None):
-        self.nodes = nodes
-        self.lineno = lineno
-
-    def getChildren(self):
-        return tuple(flatten(self.nodes))
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "AssTuple(%s)" % (repr(self.nodes),)
-
-class Assert(Node):
-    def __init__(self, test, fail, lineno=None):
-        self.test = test
-        self.fail = fail
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.test)
-        children.append(self.fail)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.test)
-        if self.fail is not None:
-            nodelist.append(self.fail)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Assert(%s, %s)" % (repr(self.test), repr(self.fail))
-
-class Assign(Node):
-    def __init__(self, nodes, expr, lineno=None):
-        self.nodes = nodes
-        self.expr = expr
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.extend(flatten(self.nodes))
-        children.append(self.expr)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        nodelist.append(self.expr)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Assign(%s, %s)" % (repr(self.nodes), repr(self.expr))
-
-class AugAssign(Node):
-    def __init__(self, node, op, expr, lineno=None):
-        self.node = node
-        self.op = op
-        self.expr = expr
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.node, self.op, self.expr
-
-    def getChildNodes(self):
-        return self.node, self.expr
-
-    def __repr__(self):
-        return "AugAssign(%s, %s, %s)" % (repr(self.node), repr(self.op), repr(self.expr))
-
-class Backquote(Node):
-    def __init__(self, expr, lineno=None):
-        self.expr = expr
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.expr,
-
-    def getChildNodes(self):
-        return self.expr,
-
-    def __repr__(self):
-        return "Backquote(%s)" % (repr(self.expr),)
-
-class Bitand(Node):
-    def __init__(self, nodes, lineno=None):
-        self.nodes = nodes
-        self.lineno = lineno
-
-    def getChildren(self):
-        return tuple(flatten(self.nodes))
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Bitand(%s)" % (repr(self.nodes),)
-
-class Bitor(Node):
-    def __init__(self, nodes, lineno=None):
-        self.nodes = nodes
-        self.lineno = lineno
-
-    def getChildren(self):
-        return tuple(flatten(self.nodes))
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Bitor(%s)" % (repr(self.nodes),)
-
-class Bitxor(Node):
-    def __init__(self, nodes, lineno=None):
-        self.nodes = nodes
-        self.lineno = lineno
-
-    def getChildren(self):
-        return tuple(flatten(self.nodes))
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Bitxor(%s)" % (repr(self.nodes),)
-
-class Break(Node):
-    def __init__(self, lineno=None):
-        self.lineno = lineno
-
-    def getChildren(self):
-        return ()
-
-    def getChildNodes(self):
-        return ()
-
-    def __repr__(self):
-        return "Break()"
-
-class CallFunc(Node):
-    def __init__(self, node, args, star_args = None, dstar_args = None, lineno=None):
-        self.node = node
-        self.args = args
-        self.star_args = star_args
-        self.dstar_args = dstar_args
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.node)
-        children.extend(flatten(self.args))
-        children.append(self.star_args)
-        children.append(self.dstar_args)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.node)
-        nodelist.extend(flatten_nodes(self.args))
-        if self.star_args is not None:
-            nodelist.append(self.star_args)
-        if self.dstar_args is not None:
-            nodelist.append(self.dstar_args)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "CallFunc(%s, %s, %s, %s)" % (repr(self.node), repr(self.args), repr(self.star_args), repr(self.dstar_args))
-
-class Class(Node):
-    def __init__(self, name, bases, doc, code, decorators = None, lineno=None):
-        self.name = name
-        self.bases = bases
-        self.doc = doc
-        self.code = code
-        self.decorators = decorators
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.name)
-        children.extend(flatten(self.bases))
-        children.append(self.doc)
-        children.append(self.code)
-        children.append(self.decorators)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.bases))
-        nodelist.append(self.code)
-        if self.decorators is not None:
-            nodelist.append(self.decorators)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Class(%s, %s, %s, %s, %s)" % (repr(self.name), repr(self.bases), repr(self.doc), repr(self.code), repr(self.decorators))
-
-class Compare(Node):
-    def __init__(self, expr, ops, lineno=None):
-        self.expr = expr
-        self.ops = ops
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.expr)
-        children.extend(flatten(self.ops))
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.expr)
-        nodelist.extend(flatten_nodes(self.ops))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Compare(%s, %s)" % (repr(self.expr), repr(self.ops))
-
-class Const(Node):
-    def __init__(self, value, lineno=None):
-        self.value = value
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.value,
-
-    def getChildNodes(self):
-        return ()
-
-    def __repr__(self):
-        return "Const(%s)" % (repr(self.value),)
-
-class Continue(Node):
-    def __init__(self, lineno=None):
-        self.lineno = lineno
-
-    def getChildren(self):
-        return ()
-
-    def getChildNodes(self):
-        return ()
-
-    def __repr__(self):
-        return "Continue()"
-
-class Decorators(Node):
-    def __init__(self, nodes, lineno=None):
-        self.nodes = nodes
-        self.lineno = lineno
-
-    def getChildren(self):
-        return tuple(flatten(self.nodes))
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Decorators(%s)" % (repr(self.nodes),)
-
-class Dict(Node):
-    def __init__(self, items, lineno=None):
-        self.items = items
-        self.lineno = lineno
-
-    def getChildren(self):
-        return tuple(flatten(self.items))
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.items))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Dict(%s)" % (repr(self.items),)
-
-class Discard(Node):
-    def __init__(self, expr, lineno=None):
-        self.expr = expr
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.expr,
-
-    def getChildNodes(self):
-        return self.expr,
-
-    def __repr__(self):
-        return "Discard(%s)" % (repr(self.expr),)
-
-class Div(Node):
-    def __init__(self, leftright, lineno=None):
-        self.left = leftright[0]
-        self.right = leftright[1]
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.left, self.right
-
-    def getChildNodes(self):
-        return self.left, self.right
-
-    def __repr__(self):
-        return "Div((%s, %s))" % (repr(self.left), repr(self.right))
-
-class Ellipsis(Node):
-    def __init__(self, lineno=None):
-        self.lineno = lineno
-
-    def getChildren(self):
-        return ()
-
-    def getChildNodes(self):
-        return ()
-
-    def __repr__(self):
-        return "Ellipsis()"
-
-class Exec(Node):
-    def __init__(self, expr, locals, globals, lineno=None):
-        self.expr = expr
-        self.locals = locals
-        self.globals = globals
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.expr)
-        children.append(self.locals)
-        children.append(self.globals)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.expr)
-        if self.locals is not None:
-            nodelist.append(self.locals)
-        if self.globals is not None:
-            nodelist.append(self.globals)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Exec(%s, %s, %s)" % (repr(self.expr), repr(self.locals), repr(self.globals))
-
-class FloorDiv(Node):
-    def __init__(self, leftright, lineno=None):
-        self.left = leftright[0]
-        self.right = leftright[1]
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.left, self.right
-
-    def getChildNodes(self):
-        return self.left, self.right
-
-    def __repr__(self):
-        return "FloorDiv((%s, %s))" % (repr(self.left), repr(self.right))
-
-class For(Node):
-    def __init__(self, assign, list, body, else_, lineno=None):
-        self.assign = assign
-        self.list = list
-        self.body = body
-        self.else_ = else_
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.assign)
-        children.append(self.list)
-        children.append(self.body)
-        children.append(self.else_)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.assign)
-        nodelist.append(self.list)
-        nodelist.append(self.body)
-        if self.else_ is not None:
-            nodelist.append(self.else_)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "For(%s, %s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.body), repr(self.else_))
-
-class From(Node):
-    def __init__(self, modname, names, level, lineno=None):
-        self.modname = modname
-        self.names = names
-        self.level = level
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.modname, self.names, self.level
-
-    def getChildNodes(self):
-        return ()
-
-    def __repr__(self):
-        return "From(%s, %s, %s)" % (repr(self.modname), repr(self.names), repr(self.level))
-
-class Function(Node):
-    def __init__(self, decorators, name, argnames, defaults, flags, doc, code, lineno=None):
-        self.decorators = decorators
-        self.name = name
-        self.argnames = argnames
-        self.defaults = defaults
-        self.flags = flags
-        self.doc = doc
-        self.code = code
-        self.lineno = lineno
-        self.varargs = self.kwargs = None
-        if flags & CO_VARARGS:
-            self.varargs = 1
-        if flags & CO_VARKEYWORDS:
-            self.kwargs = 1
-
-
-    def getChildren(self):
-        children = []
-        children.append(self.decorators)
-        children.append(self.name)
-        children.append(self.argnames)
-        children.extend(flatten(self.defaults))
-        children.append(self.flags)
-        children.append(self.doc)
-        children.append(self.code)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        if self.decorators is not None:
-            nodelist.append(self.decorators)
-        nodelist.extend(flatten_nodes(self.defaults))
-        nodelist.append(self.code)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Function(%s, %s, %s, %s, %s, %s, %s)" % (repr(self.decorators), repr(self.name), repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.doc), repr(self.code))
-
-class GenExpr(Node):
-    def __init__(self, code, lineno=None):
-        self.code = code
-        self.lineno = lineno
-        self.argnames = ['.0']
-        self.varargs = self.kwargs = None
-
-
-    def getChildren(self):
-        return self.code,
-
-    def getChildNodes(self):
-        return self.code,
-
-    def __repr__(self):
-        return "GenExpr(%s)" % (repr(self.code),)
-
-class GenExprFor(Node):
-    def __init__(self, assign, iter, ifs, lineno=None):
-        self.assign = assign
-        self.iter = iter
-        self.ifs = ifs
-        self.lineno = lineno
-        self.is_outmost = False
-
-    def getChildren(self):
-        children = []
-        children.append(self.assign)
-        children.append(self.iter)
-        children.extend(flatten(self.ifs))
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.assign)
-        nodelist.append(self.iter)
-        nodelist.extend(flatten_nodes(self.ifs))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "GenExprFor(%s, %s, %s)" % (repr(self.assign), repr(self.iter), repr(self.ifs))
-
-class GenExprIf(Node):
-    def __init__(self, test, lineno=None):
-        self.test = test
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.test,
-
-    def getChildNodes(self):
-        return self.test,
-
-    def __repr__(self):
-        return "GenExprIf(%s)" % (repr(self.test),)
-
-class GenExprInner(Node):
-    def __init__(self, expr, quals, lineno=None):
-        self.expr = expr
-        self.quals = quals
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.expr)
-        children.extend(flatten(self.quals))
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.expr)
-        nodelist.extend(flatten_nodes(self.quals))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "GenExprInner(%s, %s)" % (repr(self.expr), repr(self.quals))
-
-class Getattr(Node):
-    def __init__(self, expr, attrname, lineno=None):
-        self.expr = expr
-        self.attrname = attrname
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.expr, self.attrname
-
-    def getChildNodes(self):
-        return self.expr,
-
-    def __repr__(self):
-        return "Getattr(%s, %s)" % (repr(self.expr), repr(self.attrname))
-
-class Global(Node):
-    def __init__(self, names, lineno=None):
-        self.names = names
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.names,
-
-    def getChildNodes(self):
-        return ()
-
-    def __repr__(self):
-        return "Global(%s)" % (repr(self.names),)
-
-class If(Node):
-    def __init__(self, tests, else_, lineno=None):
-        self.tests = tests
-        self.else_ = else_
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.extend(flatten(self.tests))
-        children.append(self.else_)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.tests))
-        if self.else_ is not None:
-            nodelist.append(self.else_)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "If(%s, %s)" % (repr(self.tests), repr(self.else_))
-
-class IfExp(Node):
-    def __init__(self, test, then, else_, lineno=None):
-        self.test = test
-        self.then = then
-        self.else_ = else_
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.test, self.then, self.else_
-
-    def getChildNodes(self):
-        return self.test, self.then, self.else_
-
-    def __repr__(self):
-        return "IfExp(%s, %s, %s)" % (repr(self.test), repr(self.then), repr(self.else_))
-
-class Import(Node):
-    def __init__(self, names, lineno=None):
-        self.names = names
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.names,
-
-    def getChildNodes(self):
-        return ()
-
-    def __repr__(self):
-        return "Import(%s)" % (repr(self.names),)
-
-class Invert(Node):
-    def __init__(self, expr, lineno=None):
-        self.expr = expr
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.expr,
-
-    def getChildNodes(self):
-        return self.expr,
-
-    def __repr__(self):
-        return "Invert(%s)" % (repr(self.expr),)
-
-class Keyword(Node):
-    def __init__(self, name, expr, lineno=None):
-        self.name = name
-        self.expr = expr
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.name, self.expr
-
-    def getChildNodes(self):
-        return self.expr,
-
-    def __repr__(self):
-        return "Keyword(%s, %s)" % (repr(self.name), repr(self.expr))
-
-class Lambda(Node):
-    def __init__(self, argnames, defaults, flags, code, lineno=None):
-        self.argnames = argnames
-        self.defaults = defaults
-        self.flags = flags
-        self.code = code
-        self.lineno = lineno
-        self.varargs = self.kwargs = None
-        if flags & CO_VARARGS:
-            self.varargs = 1
-        if flags & CO_VARKEYWORDS:
-            self.kwargs = 1
-
-
-    def getChildren(self):
-        children = []
-        children.append(self.argnames)
-        children.extend(flatten(self.defaults))
-        children.append(self.flags)
-        children.append(self.code)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.defaults))
-        nodelist.append(self.code)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Lambda(%s, %s, %s, %s)" % (repr(self.argnames), repr(self.defaults), repr(self.flags), repr(self.code))
-
-class LeftShift(Node):
-    def __init__(self, leftright, lineno=None):
-        self.left = leftright[0]
-        self.right = leftright[1]
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.left, self.right
-
-    def getChildNodes(self):
-        return self.left, self.right
-
-    def __repr__(self):
-        return "LeftShift((%s, %s))" % (repr(self.left), repr(self.right))
-
-class List(Node):
-    def __init__(self, nodes, lineno=None):
-        self.nodes = nodes
-        self.lineno = lineno
-
-    def getChildren(self):
-        return tuple(flatten(self.nodes))
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "List(%s)" % (repr(self.nodes),)
-
-class ListComp(Node):
-    def __init__(self, expr, quals, lineno=None):
-        self.expr = expr
-        self.quals = quals
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.expr)
-        children.extend(flatten(self.quals))
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.expr)
-        nodelist.extend(flatten_nodes(self.quals))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "ListComp(%s, %s)" % (repr(self.expr), repr(self.quals))
-
-class ListCompFor(Node):
-    def __init__(self, assign, list, ifs, lineno=None):
-        self.assign = assign
-        self.list = list
-        self.ifs = ifs
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.assign)
-        children.append(self.list)
-        children.extend(flatten(self.ifs))
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.assign)
-        nodelist.append(self.list)
-        nodelist.extend(flatten_nodes(self.ifs))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "ListCompFor(%s, %s, %s)" % (repr(self.assign), repr(self.list), repr(self.ifs))
-
-class ListCompIf(Node):
-    def __init__(self, test, lineno=None):
-        self.test = test
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.test,
-
-    def getChildNodes(self):
-        return self.test,
-
-    def __repr__(self):
-        return "ListCompIf(%s)" % (repr(self.test),)
-
-class SetComp(Node):
-    def __init__(self, expr, quals, lineno=None):
-        self.expr = expr
-        self.quals = quals
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.expr)
-        children.extend(flatten(self.quals))
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.expr)
-        nodelist.extend(flatten_nodes(self.quals))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "SetComp(%s, %s)" % (repr(self.expr), repr(self.quals))
-
-class DictComp(Node):
-    def __init__(self, key, value, quals, lineno=None):
-        self.key = key
-        self.value = value
-        self.quals = quals
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.key)
-        children.append(self.value)
-        children.extend(flatten(self.quals))
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.key)
-        nodelist.append(self.value)
-        nodelist.extend(flatten_nodes(self.quals))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "DictComp(%s, %s, %s)" % (repr(self.key), repr(self.value), repr(self.quals))
-
-class Mod(Node):
-    def __init__(self, leftright, lineno=None):
-        self.left = leftright[0]
-        self.right = leftright[1]
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.left, self.right
-
-    def getChildNodes(self):
-        return self.left, self.right
-
-    def __repr__(self):
-        return "Mod((%s, %s))" % (repr(self.left), repr(self.right))
-
-class Module(Node):
-    def __init__(self, doc, node, lineno=None):
-        self.doc = doc
-        self.node = node
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.doc, self.node
-
-    def getChildNodes(self):
-        return self.node,
-
-    def __repr__(self):
-        return "Module(%s, %s)" % (repr(self.doc), repr(self.node))
-
-class Mul(Node):
-    def __init__(self, leftright, lineno=None):
-        self.left = leftright[0]
-        self.right = leftright[1]
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.left, self.right
-
-    def getChildNodes(self):
-        return self.left, self.right
-
-    def __repr__(self):
-        return "Mul((%s, %s))" % (repr(self.left), repr(self.right))
-
-class Name(Node):
-    def __init__(self, name, lineno=None):
-        self.name = name
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.name,
-
-    def getChildNodes(self):
-        return ()
-
-    def __repr__(self):
-        return "Name(%s)" % (repr(self.name),)
-
-class Not(Node):
-    def __init__(self, expr, lineno=None):
-        self.expr = expr
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.expr,
-
-    def getChildNodes(self):
-        return self.expr,
-
-    def __repr__(self):
-        return "Not(%s)" % (repr(self.expr),)
-
-class Or(Node):
-    def __init__(self, nodes, lineno=None):
-        self.nodes = nodes
-        self.lineno = lineno
-
-    def getChildren(self):
-        return tuple(flatten(self.nodes))
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Or(%s)" % (repr(self.nodes),)
-
-class Pass(Node):
-    def __init__(self, lineno=None):
-        self.lineno = lineno
-
-    def getChildren(self):
-        return ()
-
-    def getChildNodes(self):
-        return ()
-
-    def __repr__(self):
-        return "Pass()"
-
-class Power(Node):
-    def __init__(self, leftright, lineno=None):
-        self.left = leftright[0]
-        self.right = leftright[1]
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.left, self.right
-
-    def getChildNodes(self):
-        return self.left, self.right
-
-    def __repr__(self):
-        return "Power((%s, %s))" % (repr(self.left), repr(self.right))
-
-class Print(Node):
-    def __init__(self, nodes, dest, lineno=None):
-        self.nodes = nodes
-        self.dest = dest
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.extend(flatten(self.nodes))
-        children.append(self.dest)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        if self.dest is not None:
-            nodelist.append(self.dest)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Print(%s, %s)" % (repr(self.nodes), repr(self.dest))
-
-class Printnl(Node):
-    def __init__(self, nodes, dest, lineno=None):
-        self.nodes = nodes
-        self.dest = dest
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.extend(flatten(self.nodes))
-        children.append(self.dest)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        if self.dest is not None:
-            nodelist.append(self.dest)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Printnl(%s, %s)" % (repr(self.nodes), repr(self.dest))
-
-class Raise(Node):
-    def __init__(self, expr1, expr2, expr3, lineno=None):
-        self.expr1 = expr1
-        self.expr2 = expr2
-        self.expr3 = expr3
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.expr1)
-        children.append(self.expr2)
-        children.append(self.expr3)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        if self.expr1 is not None:
-            nodelist.append(self.expr1)
-        if self.expr2 is not None:
-            nodelist.append(self.expr2)
-        if self.expr3 is not None:
-            nodelist.append(self.expr3)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Raise(%s, %s, %s)" % (repr(self.expr1), repr(self.expr2), repr(self.expr3))
-
-class Return(Node):
-    def __init__(self, value, lineno=None):
-        self.value = value
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.value,
-
-    def getChildNodes(self):
-        return self.value,
-
-    def __repr__(self):
-        return "Return(%s)" % (repr(self.value),)
-
-class RightShift(Node):
-    def __init__(self, leftright, lineno=None):
-        self.left = leftright[0]
-        self.right = leftright[1]
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.left, self.right
-
-    def getChildNodes(self):
-        return self.left, self.right
-
-    def __repr__(self):
-        return "RightShift((%s, %s))" % (repr(self.left), repr(self.right))
-
-class Set(Node):
-    def __init__(self, nodes, lineno=None):
-        self.nodes = nodes
-        self.lineno = lineno
-
-    def getChildren(self):
-        return tuple(flatten(self.nodes))
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Set(%s)" % (repr(self.nodes),)
-
-class Slice(Node):
-    def __init__(self, expr, flags, lower, upper, lineno=None):
-        self.expr = expr
-        self.flags = flags
-        self.lower = lower
-        self.upper = upper
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.expr)
-        children.append(self.flags)
-        children.append(self.lower)
-        children.append(self.upper)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.expr)
-        if self.lower is not None:
-            nodelist.append(self.lower)
-        if self.upper is not None:
-            nodelist.append(self.upper)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Slice(%s, %s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.lower), repr(self.upper))
-
-class Sliceobj(Node):
-    def __init__(self, nodes, lineno=None):
-        self.nodes = nodes
-        self.lineno = lineno
-
-    def getChildren(self):
-        return tuple(flatten(self.nodes))
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Sliceobj(%s)" % (repr(self.nodes),)
-
-class Stmt(Node):
-    def __init__(self, nodes, lineno=None):
-        self.nodes = nodes
-        self.lineno = lineno
-
-    def getChildren(self):
-        return tuple(flatten(self.nodes))
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Stmt(%s)" % (repr(self.nodes),)
-
-class Sub(Node):
-    def __init__(self, leftright, lineno=None):
-        self.left = leftright[0]
-        self.right = leftright[1]
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.left, self.right
-
-    def getChildNodes(self):
-        return self.left, self.right
-
-    def __repr__(self):
-        return "Sub((%s, %s))" % (repr(self.left), repr(self.right))
-
-class Subscript(Node):
-    def __init__(self, expr, flags, subs, lineno=None):
-        self.expr = expr
-        self.flags = flags
-        self.subs = subs
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.expr)
-        children.append(self.flags)
-        children.extend(flatten(self.subs))
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.expr)
-        nodelist.extend(flatten_nodes(self.subs))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Subscript(%s, %s, %s)" % (repr(self.expr), repr(self.flags), repr(self.subs))
-
-class TryExcept(Node):
-    def __init__(self, body, handlers, else_, lineno=None):
-        self.body = body
-        self.handlers = handlers
-        self.else_ = else_
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.body)
-        children.extend(flatten(self.handlers))
-        children.append(self.else_)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.body)
-        nodelist.extend(flatten_nodes(self.handlers))
-        if self.else_ is not None:
-            nodelist.append(self.else_)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "TryExcept(%s, %s, %s)" % (repr(self.body), repr(self.handlers), repr(self.else_))
-
-class TryFinally(Node):
-    def __init__(self, body, final, lineno=None):
-        self.body = body
-        self.final = final
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.body, self.final
-
-    def getChildNodes(self):
-        return self.body, self.final
-
-    def __repr__(self):
-        return "TryFinally(%s, %s)" % (repr(self.body), repr(self.final))
-
-class Tuple(Node):
-    def __init__(self, nodes, lineno=None):
-        self.nodes = nodes
-        self.lineno = lineno
-
-    def getChildren(self):
-        return tuple(flatten(self.nodes))
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.extend(flatten_nodes(self.nodes))
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "Tuple(%s)" % (repr(self.nodes),)
-
-class UnaryAdd(Node):
-    def __init__(self, expr, lineno=None):
-        self.expr = expr
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.expr,
-
-    def getChildNodes(self):
-        return self.expr,
-
-    def __repr__(self):
-        return "UnaryAdd(%s)" % (repr(self.expr),)
-
-class UnarySub(Node):
-    def __init__(self, expr, lineno=None):
-        self.expr = expr
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.expr,
-
-    def getChildNodes(self):
-        return self.expr,
-
-    def __repr__(self):
-        return "UnarySub(%s)" % (repr(self.expr),)
-
-class While(Node):
-    def __init__(self, test, body, else_, lineno=None):
-        self.test = test
-        self.body = body
-        self.else_ = else_
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.test)
-        children.append(self.body)
-        children.append(self.else_)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.test)
-        nodelist.append(self.body)
-        if self.else_ is not None:
-            nodelist.append(self.else_)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "While(%s, %s, %s)" % (repr(self.test), repr(self.body), repr(self.else_))
-
-class With(Node):
-    def __init__(self, expr, vars, body, lineno=None):
-        self.expr = expr
-        self.vars = vars
-        self.body = body
-        self.lineno = lineno
-
-    def getChildren(self):
-        children = []
-        children.append(self.expr)
-        children.append(self.vars)
-        children.append(self.body)
-        return tuple(children)
-
-    def getChildNodes(self):
-        nodelist = []
-        nodelist.append(self.expr)
-        if self.vars is not None:
-            nodelist.append(self.vars)
-        nodelist.append(self.body)
-        return tuple(nodelist)
-
-    def __repr__(self):
-        return "With(%s, %s, %s)" % (repr(self.expr), repr(self.vars), repr(self.body))
-
-class Yield(Node):
-    def __init__(self, value, lineno=None):
-        self.value = value
-        self.lineno = lineno
-
-    def getChildren(self):
-        return self.value,
-
-    def getChildNodes(self):
-        return self.value,
-
-    def __repr__(self):
-        return "Yield(%s)" % (repr(self.value),)
-
-for name, obj in globals().items():
-    if isinstance(obj, type) and issubclass(obj, Node):
-        nodes[name.lower()] = obj
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/consts.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/consts.py
deleted file mode 100644
index c7f9b82..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/consts.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# operation flags
-OP_ASSIGN = 'OP_ASSIGN'
-OP_DELETE = 'OP_DELETE'
-OP_APPLY = 'OP_APPLY'
-
-SC_LOCAL = 1
-SC_GLOBAL_IMPLICIT = 2
-SC_GLOBAL_EXPLICT = 3
-SC_FREE = 4
-SC_CELL = 5
-SC_UNKNOWN = 6
-
-CO_OPTIMIZED = 0x0001
-CO_NEWLOCALS = 0x0002
-CO_VARARGS = 0x0004
-CO_VARKEYWORDS = 0x0008
-CO_NESTED = 0x0010
-CO_GENERATOR = 0x0020
-CO_GENERATOR_ALLOWED = 0
-CO_FUTURE_DIVISION = 0x2000
-CO_FUTURE_ABSIMPORT = 0x4000
-CO_FUTURE_WITH_STATEMENT = 0x8000
-CO_FUTURE_PRINT_FUNCTION = 0x10000
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/future.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/future.py
deleted file mode 100644
index 8b70924..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/future.py
+++ /dev/null
@@ -1,74 +0,0 @@
-"""Parser for future statements
-
-"""
-
-from compiler import ast, walk
-
-def is_future(stmt):
-    """Return true if statement is a well-formed future statement"""
-    if not isinstance(stmt, ast.From):
-        return 0
-    if stmt.modname == "__future__":
-        return 1
-    else:
-        return 0
-
-class FutureParser:
-
-    features = ("nested_scopes", "generators", "division",
-                "absolute_import", "with_statement", "print_function",
-                "unicode_literals")
-
-    def __init__(self):
-        self.found = {} # set
-
-    def visitModule(self, node):
-        stmt = node.node
-        for s in stmt.nodes:
-            if not self.check_stmt(s):
-                break
-
-    def check_stmt(self, stmt):
-        if is_future(stmt):
-            for name, asname in stmt.names:
-                if name in self.features:
-                    self.found[name] = 1
-                else:
-                    raise SyntaxError, \
-                          "future feature %s is not defined" % name
-            stmt.valid_future = 1
-            return 1
-        return 0
-
-    def get_features(self):
-        """Return list of features enabled by future statements"""
-        return self.found.keys()
-
-class BadFutureParser:
-    """Check for invalid future statements"""
-
-    def visitFrom(self, node):
-        if hasattr(node, 'valid_future'):
-            return
-        if node.modname != "__future__":
-            return
-        raise SyntaxError, "invalid future statement " + repr(node)
-
-def find_futures(node):
-    p1 = FutureParser()
-    p2 = BadFutureParser()
-    walk(node, p1)
-    walk(node, p2)
-    return p1.get_features()
-
-if __name__ == "__main__":
-    import sys
-    from compiler import parseFile, walk
-
-    for file in sys.argv[1:]:
-        print file
-        tree = parseFile(file)
-        v = FutureParser()
-        walk(tree, v)
-        print v.found
-        print
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/misc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/misc.py
deleted file mode 100644
index 67e231f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/misc.py
+++ /dev/null
@@ -1,73 +0,0 @@
-
-def flatten(tup):
-    elts = []
-    for elt in tup:
-        if isinstance(elt, tuple):
-            elts = elts + flatten(elt)
-        else:
-            elts.append(elt)
-    return elts
-
-class Set:
-    def __init__(self):
-        self.elts = {}
-    def __len__(self):
-        return len(self.elts)
-    def __contains__(self, elt):
-        return elt in self.elts
-    def add(self, elt):
-        self.elts[elt] = elt
-    def elements(self):
-        return self.elts.keys()
-    def has_elt(self, elt):
-        return elt in self.elts
-    def remove(self, elt):
-        del self.elts[elt]
-    def copy(self):
-        c = Set()
-        c.elts.update(self.elts)
-        return c
-
-class Stack:
-    def __init__(self):
-        self.stack = []
-        self.pop = self.stack.pop
-    def __len__(self):
-        return len(self.stack)
-    def push(self, elt):
-        self.stack.append(elt)
-    def top(self):
-        return self.stack[-1]
-    def __getitem__(self, index): # needed by visitContinue()
-        return self.stack[index]
-
-MANGLE_LEN = 256 # magic constant from compile.c
-
-def mangle(name, klass):
-    if not name.startswith('__'):
-        return name
-    if len(name) + 2 >= MANGLE_LEN:
-        return name
-    if name.endswith('__'):
-        return name
-    try:
-        i = 0
-        while klass[i] == '_':
-            i = i + 1
-    except IndexError:
-        return name
-    klass = klass[i:]
-
-    tlen = len(klass) + len(name)
-    if tlen > MANGLE_LEN:
-        klass = klass[:MANGLE_LEN-tlen]
-
-    return "_%s%s" % (klass, name)
-
-def set_filename(filename, tree):
-    """Set the filename attribute to filename on every node in tree"""
-    worklist = [tree]
-    while worklist:
-        node = worklist.pop(0)
-        node.filename = filename
-        worklist.extend(node.getChildNodes())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/pyassem.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/pyassem.py
deleted file mode 100644
index ffefd7f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/pyassem.py
+++ /dev/null
@@ -1,763 +0,0 @@
-"""A flow graph representation for Python bytecode"""
-
-import dis
-import types
-import sys
-
-from compiler import misc
-from compiler.consts \
-     import CO_OPTIMIZED, CO_NEWLOCALS, CO_VARARGS, CO_VARKEYWORDS
-
-class FlowGraph:
-    def __init__(self):
-        self.current = self.entry = Block()
-        self.exit = Block("exit")
-        self.blocks = misc.Set()
-        self.blocks.add(self.entry)
-        self.blocks.add(self.exit)
-
-    def startBlock(self, block):
-        if self._debug:
-            if self.current:
-                print "end", repr(self.current)
-                print "    next", self.current.next
-                print "    prev", self.current.prev
-                print "   ", self.current.get_children()
-            print repr(block)
-        self.current = block
-
-    def nextBlock(self, block=None):
-        # XXX think we need to specify when there is implicit transfer
-        # from one block to the next.  might be better to represent this
-        # with explicit JUMP_ABSOLUTE instructions that are optimized
-        # out when they are unnecessary.
-        #
-        # I think this strategy works: each block has a child
-        # designated as "next" which is returned as the last of the
-        # children.  because the nodes in a graph are emitted in
-        # reverse post order, the "next" block will always be emitted
-        # immediately after its parent.
-        # Worry: maintaining this invariant could be tricky
-        if block is None:
-            block = self.newBlock()
-
-        # Note: If the current block ends with an unconditional control
-        # transfer, then it is techically incorrect to add an implicit
-        # transfer to the block graph. Doing so results in code generation
-        # for unreachable blocks.  That doesn't appear to be very common
-        # with Python code and since the built-in compiler doesn't optimize
-        # it out we don't either.
-        self.current.addNext(block)
-        self.startBlock(block)
-
-    def newBlock(self):
-        b = Block()
-        self.blocks.add(b)
-        return b
-
-    def startExitBlock(self):
-        self.startBlock(self.exit)
-
-    _debug = 0
-
-    def _enable_debug(self):
-        self._debug = 1
-
-    def _disable_debug(self):
-        self._debug = 0
-
-    def emit(self, *inst):
-        if self._debug:
-            print "\t", inst
-        if len(inst) == 2 and isinstance(inst[1], Block):
-            self.current.addOutEdge(inst[1])
-        self.current.emit(inst)
-
-    def getBlocksInOrder(self):
-        """Return the blocks in reverse postorder
-
-        i.e. each node appears before all of its successors
-        """
-        order = order_blocks(self.entry, self.exit)
-        return order
-
-    def getBlocks(self):
-        return self.blocks.elements()
-
-    def getRoot(self):
-        """Return nodes appropriate for use with dominator"""
-        return self.entry
-
-    def getContainedGraphs(self):
-        l = []
-        for b in self.getBlocks():
-            l.extend(b.getContainedGraphs())
-        return l
-
-
-def order_blocks(start_block, exit_block):
-    """Order blocks so that they are emitted in the right order"""
-    # Rules:
-    # - when a block has a next block, the next block must be emitted just after
-    # - when a block has followers (relative jumps), it must be emitted before
-    #   them
-    # - all reachable blocks must be emitted
-    order = []
-
-    # Find all the blocks to be emitted.
-    remaining = set()
-    todo = [start_block]
-    while todo:
-        b = todo.pop()
-        if b in remaining:
-            continue
-        remaining.add(b)
-        for c in b.get_children():
-            if c not in remaining:
-                todo.append(c)
-
-    # A block is dominated by another block if that block must be emitted
-    # before it.
-    dominators = {}
-    for b in remaining:
-        if __debug__ and b.next:
-            assert b is b.next[0].prev[0], (b, b.next)
-        # Make sure every block appears in dominators, even if no
-        # other block must precede it.
-        dominators.setdefault(b, set())
-        # preceeding blocks dominate following blocks
-        for c in b.get_followers():
-            while 1:
-                dominators.setdefault(c, set()).add(b)
-                # Any block that has a next pointer leading to c is also
-                # dominated because the whole chain will be emitted at once.
-                # Walk backwards and add them all.
-                if c.prev and c.prev[0] is not b:
-                    c = c.prev[0]
-                else:
-                    break
-
-    def find_next():
-        # Find a block that can be emitted next.
-        for b in remaining:
-            for c in dominators[b]:
-                if c in remaining:
-                    break # can't emit yet, dominated by a remaining block
-            else:
-                return b
-        assert 0, 'circular dependency, cannot find next block'
-
-    b = start_block
-    while 1:
-        order.append(b)
-        remaining.discard(b)
-        if b.next:
-            b = b.next[0]
-            continue
-        elif b is not exit_block and not b.has_unconditional_transfer():
-            order.append(exit_block)
-        if not remaining:
-            break
-        b = find_next()
-    return order
-
-
-class Block:
-    _count = 0
-
-    def __init__(self, label=''):
-        self.insts = []
-        self.outEdges = set()
-        self.label = label
-        self.bid = Block._count
-        self.next = []
-        self.prev = []
-        Block._count = Block._count + 1
-
-    def __repr__(self):
-        if self.label:
-            return "<block %s id=%d>" % (self.label, self.bid)
-        else:
-            return "<block id=%d>" % (self.bid)
-
-    def __str__(self):
-        insts = map(str, self.insts)
-        return "<block %s %d:\n%s>" % (self.label, self.bid,
-                                       '\n'.join(insts))
-
-    def emit(self, inst):
-        op = inst[0]
-        self.insts.append(inst)
-
-    def getInstructions(self):
-        return self.insts
-
-    def addOutEdge(self, block):
-        self.outEdges.add(block)
-
-    def addNext(self, block):
-        self.next.append(block)
-        assert len(self.next) == 1, map(str, self.next)
-        block.prev.append(self)
-        assert len(block.prev) == 1, map(str, block.prev)
-
-    _uncond_transfer = ('RETURN_VALUE', 'RAISE_VARARGS',
-                        'JUMP_ABSOLUTE', 'JUMP_FORWARD', 'CONTINUE_LOOP',
-                        )
-
-    def has_unconditional_transfer(self):
-        """Returns True if there is an unconditional transfer to an other block
-        at the end of this block. This means there is no risk for the bytecode
-        executer to go past this block's bytecode."""
-        try:
-            op, arg = self.insts[-1]
-        except (IndexError, ValueError):
-            return
-        return op in self._uncond_transfer
-
-    def get_children(self):
-        return list(self.outEdges) + self.next
-
-    def get_followers(self):
-        """Get the whole list of followers, including the next block."""
-        followers = set(self.next)
-        # Blocks that must be emitted *after* this one, because of
-        # bytecode offsets (e.g. relative jumps) pointing to them.
-        for inst in self.insts:
-            if inst[0] in PyFlowGraph.hasjrel:
-                followers.add(inst[1])
-        return followers
-
-    def getContainedGraphs(self):
-        """Return all graphs contained within this block.
-
-        For example, a MAKE_FUNCTION block will contain a reference to
-        the graph for the function body.
-        """
-        contained = []
-        for inst in self.insts:
-            if len(inst) == 1:
-                continue
-            op = inst[1]
-            if hasattr(op, 'graph'):
-                contained.append(op.graph)
-        return contained
-
-# flags for code objects
-
-# the FlowGraph is transformed in place; it exists in one of these states
-RAW = "RAW"
-FLAT = "FLAT"
-CONV = "CONV"
-DONE = "DONE"
-
-class PyFlowGraph(FlowGraph):
-    super_init = FlowGraph.__init__
-
-    def __init__(self, name, filename, args=(), optimized=0, klass=None):
-        self.super_init()
-        self.name = name
-        self.filename = filename
-        self.docstring = None
-        self.args = args # XXX
-        self.argcount = getArgCount(args)
-        self.klass = klass
-        if optimized:
-            self.flags = CO_OPTIMIZED | CO_NEWLOCALS
-        else:
-            self.flags = 0
-        self.consts = []
-        self.names = []
-        # Free variables found by the symbol table scan, including
-        # variables used only in nested scopes, are included here.
-        self.freevars = []
-        self.cellvars = []
-        # The closure list is used to track the order of cell
-        # variables and free variables in the resulting code object.
-        # The offsets used by LOAD_CLOSURE/LOAD_DEREF refer to both
-        # kinds of variables.
-        self.closure = []
-        self.varnames = list(args) or []
-        for i in range(len(self.varnames)):
-            var = self.varnames[i]
-            if isinstance(var, TupleArg):
-                self.varnames[i] = var.getName()
-        self.stage = RAW
-
-    def setDocstring(self, doc):
-        self.docstring = doc
-
-    def setFlag(self, flag):
-        self.flags = self.flags | flag
-        if flag == CO_VARARGS:
-            self.argcount = self.argcount - 1
-
-    def checkFlag(self, flag):
-        if self.flags & flag:
-            return 1
-
-    def setFreeVars(self, names):
-        self.freevars = list(names)
-
-    def setCellVars(self, names):
-        self.cellvars = names
-
-    def getCode(self):
-        """Get a Python code object"""
-        assert self.stage == RAW
-        self.computeStackDepth()
-        self.flattenGraph()
-        assert self.stage == FLAT
-        self.convertArgs()
-        assert self.stage == CONV
-        self.makeByteCode()
-        assert self.stage == DONE
-        return self.newCodeObject()
-
-    def dump(self, io=None):
-        if io:
-            save = sys.stdout
-            sys.stdout = io
-        pc = 0
-        for t in self.insts:
-            opname = t[0]
-            if opname == "SET_LINENO":
-                print
-            if len(t) == 1:
-                print "\t", "%3d" % pc, opname
-                pc = pc + 1
-            else:
-                print "\t", "%3d" % pc, opname, t[1]
-                pc = pc + 3
-        if io:
-            sys.stdout = save
-
-    def computeStackDepth(self):
-        """Compute the max stack depth.
-
-        Approach is to compute the stack effect of each basic block.
-        Then find the path through the code with the largest total
-        effect.
-        """
-        depth = {}
-        exit = None
-        for b in self.getBlocks():
-            depth[b] = findDepth(b.getInstructions())
-
-        seen = {}
-
-        def max_depth(b, d):
-            if b in seen:
-                return d
-            seen[b] = 1
-            d = d + depth[b]
-            children = b.get_children()
-            if children:
-                return max([max_depth(c, d) for c in children])
-            else:
-                if not b.label == "exit":
-                    return max_depth(self.exit, d)
-                else:
-                    return d
-
-        self.stacksize = max_depth(self.entry, 0)
-
-    def flattenGraph(self):
-        """Arrange the blocks in order and resolve jumps"""
-        assert self.stage == RAW
-        self.insts = insts = []
-        pc = 0
-        begin = {}
-        end = {}
-        for b in self.getBlocksInOrder():
-            begin[b] = pc
-            for inst in b.getInstructions():
-                insts.append(inst)
-                if len(inst) == 1:
-                    pc = pc + 1
-                elif inst[0] != "SET_LINENO":
-                    # arg takes 2 bytes
-                    pc = pc + 3
-            end[b] = pc
-        pc = 0
-        for i in range(len(insts)):
-            inst = insts[i]
-            if len(inst) == 1:
-                pc = pc + 1
-            elif inst[0] != "SET_LINENO":
-                pc = pc + 3
-            opname = inst[0]
-            if opname in self.hasjrel:
-                oparg = inst[1]
-                offset = begin[oparg] - pc
-                insts[i] = opname, offset
-            elif opname in self.hasjabs:
-                insts[i] = opname, begin[inst[1]]
-        self.stage = FLAT
-
-    hasjrel = set()
-    for i in dis.hasjrel:
-        hasjrel.add(dis.opname[i])
-    hasjabs = set()
-    for i in dis.hasjabs:
-        hasjabs.add(dis.opname[i])
-
-    def convertArgs(self):
-        """Convert arguments from symbolic to concrete form"""
-        assert self.stage == FLAT
-        self.consts.insert(0, self.docstring)
-        self.sort_cellvars()
-        for i in range(len(self.insts)):
-            t = self.insts[i]
-            if len(t) == 2:
-                opname, oparg = t
-                conv = self._converters.get(opname, None)
-                if conv:
-                    self.insts[i] = opname, conv(self, oparg)
-        self.stage = CONV
-
-    def sort_cellvars(self):
-        """Sort cellvars in the order of varnames and prune from freevars.
-        """
-        cells = {}
-        for name in self.cellvars:
-            cells[name] = 1
-        self.cellvars = [name for name in self.varnames
-                         if name in cells]
-        for name in self.cellvars:
-            del cells[name]
-        self.cellvars = self.cellvars + cells.keys()
-        self.closure = self.cellvars + self.freevars
-
-    def _lookupName(self, name, list):
-        """Return index of name in list, appending if necessary
-
-        This routine uses a list instead of a dictionary, because a
-        dictionary can't store two different keys if the keys have the
-        same value but different types, e.g. 2 and 2L.  The compiler
-        must treat these two separately, so it does an explicit type
-        comparison before comparing the values.
-        """
-        t = type(name)
-        for i in range(len(list)):
-            if t == type(list[i]) and list[i] == name:
-                return i
-        end = len(list)
-        list.append(name)
-        return end
-
-    _converters = {}
-    def _convert_LOAD_CONST(self, arg):
-        if hasattr(arg, 'getCode'):
-            arg = arg.getCode()
-        return self._lookupName(arg, self.consts)
-
-    def _convert_LOAD_FAST(self, arg):
-        self._lookupName(arg, self.names)
-        return self._lookupName(arg, self.varnames)
-    _convert_STORE_FAST = _convert_LOAD_FAST
-    _convert_DELETE_FAST = _convert_LOAD_FAST
-
-    def _convert_LOAD_NAME(self, arg):
-        if self.klass is None:
-            self._lookupName(arg, self.varnames)
-        return self._lookupName(arg, self.names)
-
-    def _convert_NAME(self, arg):
-        if self.klass is None:
-            self._lookupName(arg, self.varnames)
-        return self._lookupName(arg, self.names)
-    _convert_STORE_NAME = _convert_NAME
-    _convert_DELETE_NAME = _convert_NAME
-    _convert_IMPORT_NAME = _convert_NAME
-    _convert_IMPORT_FROM = _convert_NAME
-    _convert_STORE_ATTR = _convert_NAME
-    _convert_LOAD_ATTR = _convert_NAME
-    _convert_DELETE_ATTR = _convert_NAME
-    _convert_LOAD_GLOBAL = _convert_NAME
-    _convert_STORE_GLOBAL = _convert_NAME
-    _convert_DELETE_GLOBAL = _convert_NAME
-
-    def _convert_DEREF(self, arg):
-        self._lookupName(arg, self.names)
-        self._lookupName(arg, self.varnames)
-        return self._lookupName(arg, self.closure)
-    _convert_LOAD_DEREF = _convert_DEREF
-    _convert_STORE_DEREF = _convert_DEREF
-
-    def _convert_LOAD_CLOSURE(self, arg):
-        self._lookupName(arg, self.varnames)
-        return self._lookupName(arg, self.closure)
-
-    _cmp = list(dis.cmp_op)
-    def _convert_COMPARE_OP(self, arg):
-        return self._cmp.index(arg)
-
-    # similarly for other opcodes...
-
-    for name, obj in locals().items():
-        if name[:9] == "_convert_":
-            opname = name[9:]
-            _converters[opname] = obj
-    del name, obj, opname
-
-    def makeByteCode(self):
-        assert self.stage == CONV
-        self.lnotab = lnotab = LineAddrTable()
-        for t in self.insts:
-            opname = t[0]
-            if len(t) == 1:
-                lnotab.addCode(self.opnum[opname])
-            else:
-                oparg = t[1]
-                if opname == "SET_LINENO":
-                    lnotab.nextLine(oparg)
-                    continue
-                hi, lo = twobyte(oparg)
-                try:
-                    lnotab.addCode(self.opnum[opname], lo, hi)
-                except ValueError:
-                    print opname, oparg
-                    print self.opnum[opname], lo, hi
-                    raise
-        self.stage = DONE
-
-    opnum = {}
-    for num in range(len(dis.opname)):
-        opnum[dis.opname[num]] = num
-    del num
-
-    def newCodeObject(self):
-        assert self.stage == DONE
-        if (self.flags & CO_NEWLOCALS) == 0:
-            nlocals = 0
-        else:
-            nlocals = len(self.varnames)
-        argcount = self.argcount
-        if self.flags & CO_VARKEYWORDS:
-            argcount = argcount - 1
-        return types.CodeType(argcount, nlocals, self.stacksize, self.flags,
-                        self.lnotab.getCode(), self.getConsts(),
-                        tuple(self.names), tuple(self.varnames),
-                        self.filename, self.name, self.lnotab.firstline,
-                        self.lnotab.getTable(), tuple(self.freevars),
-                        tuple(self.cellvars))
-
-    def getConsts(self):
-        """Return a tuple for the const slot of the code object
-
-        Must convert references to code (MAKE_FUNCTION) to code
-        objects recursively.
-        """
-        l = []
-        for elt in self.consts:
-            if isinstance(elt, PyFlowGraph):
-                elt = elt.getCode()
-            l.append(elt)
-        return tuple(l)
-
-def isJump(opname):
-    if opname[:4] == 'JUMP':
-        return 1
-
-class TupleArg:
-    """Helper for marking func defs with nested tuples in arglist"""
-    def __init__(self, count, names):
-        self.count = count
-        self.names = names
-    def __repr__(self):
-        return "TupleArg(%s, %s)" % (self.count, self.names)
-    def getName(self):
-        return ".%d" % self.count
-
-def getArgCount(args):
-    argcount = len(args)
-    if args:
-        for arg in args:
-            if isinstance(arg, TupleArg):
-                numNames = len(misc.flatten(arg.names))
-                argcount = argcount - numNames
-    return argcount
-
-def twobyte(val):
-    """Convert an int argument into high and low bytes"""
-    assert isinstance(val, int)
-    return divmod(val, 256)
-
-class LineAddrTable:
-    """lnotab
-
-    This class builds the lnotab, which is documented in compile.c.
-    Here's a brief recap:
-
-    For each SET_LINENO instruction after the first one, two bytes are
-    added to lnotab.  (In some cases, multiple two-byte entries are
-    added.)  The first byte is the distance in bytes between the
-    instruction for the last SET_LINENO and the current SET_LINENO.
-    The second byte is offset in line numbers.  If either offset is
-    greater than 255, multiple two-byte entries are added -- see
-    compile.c for the delicate details.
-    """
-
-    def __init__(self):
-        self.code = []
-        self.codeOffset = 0
-        self.firstline = 0
-        self.lastline = 0
-        self.lastoff = 0
-        self.lnotab = []
-
-    def addCode(self, *args):
-        for arg in args:
-            self.code.append(chr(arg))
-        self.codeOffset = self.codeOffset + len(args)
-
-    def nextLine(self, lineno):
-        if self.firstline == 0:
-            self.firstline = lineno
-            self.lastline = lineno
-        else:
-            # compute deltas
-            addr = self.codeOffset - self.lastoff
-            line = lineno - self.lastline
-            # Python assumes that lineno always increases with
-            # increasing bytecode address (lnotab is unsigned char).
-            # Depending on when SET_LINENO instructions are emitted
-            # this is not always true.  Consider the code:
-            #     a = (1,
-            #          b)
-            # In the bytecode stream, the assignment to "a" occurs
-            # after the loading of "b".  This works with the C Python
-            # compiler because it only generates a SET_LINENO instruction
-            # for the assignment.
-            if line >= 0:
-                push = self.lnotab.append
-                while addr > 255:
-                    push(255); push(0)
-                    addr -= 255
-                while line > 255:
-                    push(addr); push(255)
-                    line -= 255
-                    addr = 0
-                if addr > 0 or line > 0:
-                    push(addr); push(line)
-                self.lastline = lineno
-                self.lastoff = self.codeOffset
-
-    def getCode(self):
-        return ''.join(self.code)
-
-    def getTable(self):
-        return ''.join(map(chr, self.lnotab))
-
-class StackDepthTracker:
-    # XXX 1. need to keep track of stack depth on jumps
-    # XXX 2. at least partly as a result, this code is broken
-
-    def findDepth(self, insts, debug=0):
-        depth = 0
-        maxDepth = 0
-        for i in insts:
-            opname = i[0]
-            if debug:
-                print i,
-            delta = self.effect.get(opname, None)
-            if delta is not None:
-                depth = depth + delta
-            else:
-                # now check patterns
-                for pat, pat_delta in self.patterns:
-                    if opname[:len(pat)] == pat:
-                        delta = pat_delta
-                        depth = depth + delta
-                        break
-                # if we still haven't found a match
-                if delta is None:
-                    meth = getattr(self, opname, None)
-                    if meth is not None:
-                        depth = depth + meth(i[1])
-            if depth > maxDepth:
-                maxDepth = depth
-            if debug:
-                print depth, maxDepth
-        return maxDepth
-
-    effect = {
-        'POP_TOP': -1,
-        'DUP_TOP': 1,
-        'LIST_APPEND': -1,
-        'SET_ADD': -1,
-        'MAP_ADD': -2,
-        'SLICE+1': -1,
-        'SLICE+2': -1,
-        'SLICE+3': -2,
-        'STORE_SLICE+0': -1,
-        'STORE_SLICE+1': -2,
-        'STORE_SLICE+2': -2,
-        'STORE_SLICE+3': -3,
-        'DELETE_SLICE+0': -1,
-        'DELETE_SLICE+1': -2,
-        'DELETE_SLICE+2': -2,
-        'DELETE_SLICE+3': -3,
-        'STORE_SUBSCR': -3,
-        'DELETE_SUBSCR': -2,
-        # PRINT_EXPR?
-        'PRINT_ITEM': -1,
-        'RETURN_VALUE': -1,
-        'YIELD_VALUE': -1,
-        'EXEC_STMT': -3,
-        'BUILD_CLASS': -2,
-        'STORE_NAME': -1,
-        'STORE_ATTR': -2,
-        'DELETE_ATTR': -1,
-        'STORE_GLOBAL': -1,
-        'BUILD_MAP': 1,
-        'COMPARE_OP': -1,
-        'STORE_FAST': -1,
-        'IMPORT_STAR': -1,
-        'IMPORT_NAME': -1,
-        'IMPORT_FROM': 1,
-        'LOAD_ATTR': 0, # unlike other loads
-        # close enough...
-        'SETUP_EXCEPT': 3,
-        'SETUP_FINALLY': 3,
-        'FOR_ITER': 1,
-        'WITH_CLEANUP': -1,
-        }
-    # use pattern match
-    patterns = [
-        ('BINARY_', -1),
-        ('LOAD_', 1),
-        ]
-
-    def UNPACK_SEQUENCE(self, count):
-        return count-1
-    def BUILD_TUPLE(self, count):
-        return -count+1
-    def BUILD_LIST(self, count):
-        return -count+1
-    def BUILD_SET(self, count):
-        return -count+1
-    def CALL_FUNCTION(self, argc):
-        hi, lo = divmod(argc, 256)
-        return -(lo + hi * 2)
-    def CALL_FUNCTION_VAR(self, argc):
-        return self.CALL_FUNCTION(argc)-1
-    def CALL_FUNCTION_KW(self, argc):
-        return self.CALL_FUNCTION(argc)-1
-    def CALL_FUNCTION_VAR_KW(self, argc):
-        return self.CALL_FUNCTION(argc)-2
-    def MAKE_FUNCTION(self, argc):
-        return -argc
-    def MAKE_CLOSURE(self, argc):
-        # XXX need to account for free variables too!
-        return -argc
-    def BUILD_SLICE(self, argc):
-        if argc == 2:
-            return -1
-        elif argc == 3:
-            return -2
-    def DUP_TOPX(self, argc):
-        return argc
-
-findDepth = StackDepthTracker().findDepth
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/pycodegen.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/pycodegen.py
deleted file mode 100644
index a2a083f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/pycodegen.py
+++ /dev/null
@@ -1,1555 +0,0 @@
-import imp
-import os
-import marshal
-import struct
-import sys
-from cStringIO import StringIO
-
-from compiler import ast, parse, walk, syntax
-from compiler import pyassem, misc, future, symbols
-from compiler.consts import SC_LOCAL, SC_GLOBAL_IMPLICIT, SC_GLOBAL_EXPLICT, \
-     SC_FREE, SC_CELL
-from compiler.consts import (CO_VARARGS, CO_VARKEYWORDS, CO_NEWLOCALS,
-     CO_NESTED, CO_GENERATOR, CO_FUTURE_DIVISION,
-     CO_FUTURE_ABSIMPORT, CO_FUTURE_WITH_STATEMENT, CO_FUTURE_PRINT_FUNCTION)
-from compiler.pyassem import TupleArg
-
-# XXX The version-specific code can go, since this code only works with 2.x.
-# Do we have Python 1.x or Python 2.x?
-try:
-    VERSION = sys.version_info[0]
-except AttributeError:
-    VERSION = 1
-
-callfunc_opcode_info = {
-    # (Have *args, Have **args) : opcode
-    (0,0) : "CALL_FUNCTION",
-    (1,0) : "CALL_FUNCTION_VAR",
-    (0,1) : "CALL_FUNCTION_KW",
-    (1,1) : "CALL_FUNCTION_VAR_KW",
-}
-
-LOOP = 1
-EXCEPT = 2
-TRY_FINALLY = 3
-END_FINALLY = 4
-
-def compileFile(filename, display=0):
-    f = open(filename, 'U')
-    buf = f.read()
-    f.close()
-    mod = Module(buf, filename)
-    try:
-        mod.compile(display)
-    except SyntaxError:
-        raise
-    else:
-        f = open(filename + "c", "wb")
-        mod.dump(f)
-        f.close()
-
-def compile(source, filename, mode, flags=None, dont_inherit=None):
-    """Replacement for builtin compile() function"""
-    if flags is not None or dont_inherit is not None:
-        raise RuntimeError, "not implemented yet"
-
-    if mode == "single":
-        gen = Interactive(source, filename)
-    elif mode == "exec":
-        gen = Module(source, filename)
-    elif mode == "eval":
-        gen = Expression(source, filename)
-    else:
-        raise ValueError("compile() 3rd arg must be 'exec' or "
-                         "'eval' or 'single'")
-    gen.compile()
-    return gen.code
-
-class AbstractCompileMode:
-
-    mode = None # defined by subclass
-
-    def __init__(self, source, filename):
-        self.source = source
-        self.filename = filename
-        self.code = None
-
-    def _get_tree(self):
-        tree = parse(self.source, self.mode)
-        misc.set_filename(self.filename, tree)
-        syntax.check(tree)
-        return tree
-
-    def compile(self):
-        pass # implemented by subclass
-
-    def getCode(self):
-        return self.code
-
-class Expression(AbstractCompileMode):
-
-    mode = "eval"
-
-    def compile(self):
-        tree = self._get_tree()
-        gen = ExpressionCodeGenerator(tree)
-        self.code = gen.getCode()
-
-class Interactive(AbstractCompileMode):
-
-    mode = "single"
-
-    def compile(self):
-        tree = self._get_tree()
-        gen = InteractiveCodeGenerator(tree)
-        self.code = gen.getCode()
-
-class Module(AbstractCompileMode):
-
-    mode = "exec"
-
-    def compile(self, display=0):
-        tree = self._get_tree()
-        gen = ModuleCodeGenerator(tree)
-        if display:
-            import pprint
-            print pprint.pprint(tree)
-        self.code = gen.getCode()
-
-    def dump(self, f):
-        f.write(self.getPycHeader())
-        marshal.dump(self.code, f)
-
-    MAGIC = imp.get_magic()
-
-    def getPycHeader(self):
-        # compile.c uses marshal to write a long directly, with
-        # calling the interface that would also generate a 1-byte code
-        # to indicate the type of the value.  simplest way to get the
-        # same effect is to call marshal and then skip the code.
-        mtime = os.path.getmtime(self.filename)
-        mtime = struct.pack('<i', mtime)
-        return self.MAGIC + mtime
-
-class LocalNameFinder:
-    """Find local names in scope"""
-    def __init__(self, names=()):
-        self.names = misc.Set()
-        self.globals = misc.Set()
-        for name in names:
-            self.names.add(name)
-
-    # XXX list comprehensions and for loops
-
-    def getLocals(self):
-        for elt in self.globals.elements():
-            if self.names.has_elt(elt):
-                self.names.remove(elt)
-        return self.names
-
-    def visitDict(self, node):
-        pass
-
-    def visitGlobal(self, node):
-        for name in node.names:
-            self.globals.add(name)
-
-    def visitFunction(self, node):
-        self.names.add(node.name)
-
-    def visitLambda(self, node):
-        pass
-
-    def visitImport(self, node):
-        for name, alias in node.names:
-            self.names.add(alias or name)
-
-    def visitFrom(self, node):
-        for name, alias in node.names:
-            self.names.add(alias or name)
-
-    def visitClass(self, node):
-        self.names.add(node.name)
-
-    def visitAssName(self, node):
-        self.names.add(node.name)
-
-def is_constant_false(node):
-    if isinstance(node, ast.Const):
-        if not node.value:
-            return 1
-    return 0
-
-class CodeGenerator:
-    """Defines basic code generator for Python bytecode
-
-    This class is an abstract base class.  Concrete subclasses must
-    define an __init__() that defines self.graph and then calls the
-    __init__() defined in this class.
-
-    The concrete class must also define the class attributes
-    NameFinder, FunctionGen, and ClassGen.  These attributes can be
-    defined in the initClass() method, which is a hook for
-    initializing these methods after all the classes have been
-    defined.
-    """
-
-    optimized = 0 # is namespace access optimized?
-    __initialized = None
-    class_name = None # provide default for instance variable
-
-    def __init__(self):
-        if self.__initialized is None:
-            self.initClass()
-            self.__class__.__initialized = 1
-        self.checkClass()
-        self.locals = misc.Stack()
-        self.setups = misc.Stack()
-        self.last_lineno = None
-        self._setupGraphDelegation()
-        self._div_op = "BINARY_DIVIDE"
-
-        # XXX set flags based on future features
-        futures = self.get_module().futures
-        for feature in futures:
-            if feature == "division":
-                self.graph.setFlag(CO_FUTURE_DIVISION)
-                self._div_op = "BINARY_TRUE_DIVIDE"
-            elif feature == "absolute_import":
-                self.graph.setFlag(CO_FUTURE_ABSIMPORT)
-            elif feature == "with_statement":
-                self.graph.setFlag(CO_FUTURE_WITH_STATEMENT)
-            elif feature == "print_function":
-                self.graph.setFlag(CO_FUTURE_PRINT_FUNCTION)
-
-    def initClass(self):
-        """This method is called once for each class"""
-
-    def checkClass(self):
-        """Verify that class is constructed correctly"""
-        try:
-            assert hasattr(self, 'graph')
-            assert getattr(self, 'NameFinder')
-            assert getattr(self, 'FunctionGen')
-            assert getattr(self, 'ClassGen')
-        except AssertionError, msg:
-            intro = "Bad class construction for %s" % self.__class__.__name__
-            raise AssertionError, intro
-
-    def _setupGraphDelegation(self):
-        self.emit = self.graph.emit
-        self.newBlock = self.graph.newBlock
-        self.startBlock = self.graph.startBlock
-        self.nextBlock = self.graph.nextBlock
-        self.setDocstring = self.graph.setDocstring
-
-    def getCode(self):
-        """Return a code object"""
-        return self.graph.getCode()
-
-    def mangle(self, name):
-        if self.class_name is not None:
-            return misc.mangle(name, self.class_name)
-        else:
-            return name
-
-    def parseSymbols(self, tree):
-        s = symbols.SymbolVisitor()
-        walk(tree, s)
-        return s.scopes
-
-    def get_module(self):
-        raise RuntimeError, "should be implemented by subclasses"
-
-    # Next five methods handle name access
-
-    def isLocalName(self, name):
-        return self.locals.top().has_elt(name)
-
-    def storeName(self, name):
-        self._nameOp('STORE', name)
-
-    def loadName(self, name):
-        self._nameOp('LOAD', name)
-
-    def delName(self, name):
-        self._nameOp('DELETE', name)
-
-    def _nameOp(self, prefix, name):
-        name = self.mangle(name)
-        scope = self.scope.check_name(name)
-        if scope == SC_LOCAL:
-            if not self.optimized:
-                self.emit(prefix + '_NAME', name)
-            else:
-                self.emit(prefix + '_FAST', name)
-        elif scope == SC_GLOBAL_EXPLICT:
-            self.emit(prefix + '_GLOBAL', name)
-        elif scope == SC_GLOBAL_IMPLICIT:
-            if not self.optimized:
-                self.emit(prefix + '_NAME', name)
-            else:
-                self.emit(prefix + '_GLOBAL', name)
-        elif scope == SC_FREE or scope == SC_CELL:
-            self.emit(prefix + '_DEREF', name)
-        else:
-            raise RuntimeError, "unsupported scope for var %s: %d" % \
-                  (name, scope)
-
-    def _implicitNameOp(self, prefix, name):
-        """Emit name ops for names generated implicitly by for loops
-
-        The interpreter generates names that start with a period or
-        dollar sign.  The symbol table ignores these names because
-        they aren't present in the program text.
-        """
-        if self.optimized:
-            self.emit(prefix + '_FAST', name)
-        else:
-            self.emit(prefix + '_NAME', name)
-
-    # The set_lineno() function and the explicit emit() calls for
-    # SET_LINENO below are only used to generate the line number table.
-    # As of Python 2.3, the interpreter does not have a SET_LINENO
-    # instruction.  pyassem treats SET_LINENO opcodes as a special case.
-
-    def set_lineno(self, node, force=False):
-        """Emit SET_LINENO if necessary.
-
-        The instruction is considered necessary if the node has a
-        lineno attribute and it is different than the last lineno
-        emitted.
-
-        Returns true if SET_LINENO was emitted.
-
-        There are no rules for when an AST node should have a lineno
-        attribute.  The transformer and AST code need to be reviewed
-        and a consistent policy implemented and documented.  Until
-        then, this method works around missing line numbers.
-        """
-        lineno = getattr(node, 'lineno', None)
-        if lineno is not None and (lineno != self.last_lineno
-                                   or force):
-            self.emit('SET_LINENO', lineno)
-            self.last_lineno = lineno
-            return True
-        return False
-
-    # The first few visitor methods handle nodes that generator new
-    # code objects.  They use class attributes to determine what
-    # specialized code generators to use.
-
-    NameFinder = LocalNameFinder
-    FunctionGen = None
-    ClassGen = None
-
-    def visitModule(self, node):
-        self.scopes = self.parseSymbols(node)
-        self.scope = self.scopes[node]
-        self.emit('SET_LINENO', 0)
-        if node.doc:
-            self.emit('LOAD_CONST', node.doc)
-            self.storeName('__doc__')
-        lnf = walk(node.node, self.NameFinder(), verbose=0)
-        self.locals.push(lnf.getLocals())
-        self.visit(node.node)
-        self.emit('LOAD_CONST', None)
-        self.emit('RETURN_VALUE')
-
-    def visitExpression(self, node):
-        self.set_lineno(node)
-        self.scopes = self.parseSymbols(node)
-        self.scope = self.scopes[node]
-        self.visit(node.node)
-        self.emit('RETURN_VALUE')
-
-    def visitFunction(self, node):
-        self._visitFuncOrLambda(node, isLambda=0)
-        if node.doc:
-            self.setDocstring(node.doc)
-        self.storeName(node.name)
-
-    def visitLambda(self, node):
-        self._visitFuncOrLambda(node, isLambda=1)
-
-    def _visitFuncOrLambda(self, node, isLambda=0):
-        if not isLambda and node.decorators:
-            for decorator in node.decorators.nodes:
-                self.visit(decorator)
-            ndecorators = len(node.decorators.nodes)
-        else:
-            ndecorators = 0
-
-        gen = self.FunctionGen(node, self.scopes, isLambda,
-                               self.class_name, self.get_module())
-        walk(node.code, gen)
-        gen.finish()
-        self.set_lineno(node)
-        for default in node.defaults:
-            self.visit(default)
-        self._makeClosure(gen, len(node.defaults))
-        for i in range(ndecorators):
-            self.emit('CALL_FUNCTION', 1)
-
-    def visitClass(self, node):
-        gen = self.ClassGen(node, self.scopes,
-                            self.get_module())
-        walk(node.code, gen)
-        gen.finish()
-        self.set_lineno(node)
-        self.emit('LOAD_CONST', node.name)
-        for base in node.bases:
-            self.visit(base)
-        self.emit('BUILD_TUPLE', len(node.bases))
-        self._makeClosure(gen, 0)
-        self.emit('CALL_FUNCTION', 0)
-        self.emit('BUILD_CLASS')
-        self.storeName(node.name)
-
-    # The rest are standard visitor methods
-
-    # The next few implement control-flow statements
-
-    def visitIf(self, node):
-        end = self.newBlock()
-        numtests = len(node.tests)
-        for i in range(numtests):
-            test, suite = node.tests[i]
-            if is_constant_false(test):
-                # XXX will need to check generator stuff here
-                continue
-            self.set_lineno(test)
-            self.visit(test)
-            nextTest = self.newBlock()
-            self.emit('POP_JUMP_IF_FALSE', nextTest)
-            self.nextBlock()
-            self.visit(suite)
-            self.emit('JUMP_FORWARD', end)
-            self.startBlock(nextTest)
-        if node.else_:
-            self.visit(node.else_)
-        self.nextBlock(end)
-
-    def visitWhile(self, node):
-        self.set_lineno(node)
-
-        loop = self.newBlock()
-        else_ = self.newBlock()
-
-        after = self.newBlock()
-        self.emit('SETUP_LOOP', after)
-
-        self.nextBlock(loop)
-        self.setups.push((LOOP, loop))
-
-        self.set_lineno(node, force=True)
-        self.visit(node.test)
-        self.emit('POP_JUMP_IF_FALSE', else_ or after)
-
-        self.nextBlock()
-        self.visit(node.body)
-        self.emit('JUMP_ABSOLUTE', loop)
-
-        self.startBlock(else_) # or just the POPs if not else clause
-        self.emit('POP_BLOCK')
-        self.setups.pop()
-        if node.else_:
-            self.visit(node.else_)
-        self.nextBlock(after)
-
-    def visitFor(self, node):
-        start = self.newBlock()
-        anchor = self.newBlock()
-        after = self.newBlock()
-        self.setups.push((LOOP, start))
-
-        self.set_lineno(node)
-        self.emit('SETUP_LOOP', after)
-        self.visit(node.list)
-        self.emit('GET_ITER')
-
-        self.nextBlock(start)
-        self.set_lineno(node, force=1)
-        self.emit('FOR_ITER', anchor)
-        self.visit(node.assign)
-        self.visit(node.body)
-        self.emit('JUMP_ABSOLUTE', start)
-        self.nextBlock(anchor)
-        self.emit('POP_BLOCK')
-        self.setups.pop()
-        if node.else_:
-            self.visit(node.else_)
-        self.nextBlock(after)
-
-    def visitBreak(self, node):
-        if not self.setups:
-            raise SyntaxError, "'break' outside loop (%s, %d)" % \
-                  (node.filename, node.lineno)
-        self.set_lineno(node)
-        self.emit('BREAK_LOOP')
-
-    def visitContinue(self, node):
-        if not self.setups:
-            raise SyntaxError, "'continue' outside loop (%s, %d)" % \
-                  (node.filename, node.lineno)
-        kind, block = self.setups.top()
-        if kind == LOOP:
-            self.set_lineno(node)
-            self.emit('JUMP_ABSOLUTE', block)
-            self.nextBlock()
-        elif kind == EXCEPT or kind == TRY_FINALLY:
-            self.set_lineno(node)
-            # find the block that starts the loop
-            top = len(self.setups)
-            while top > 0:
-                top = top - 1
-                kind, loop_block = self.setups[top]
-                if kind == LOOP:
-                    break
-            if kind != LOOP:
-                raise SyntaxError, "'continue' outside loop (%s, %d)" % \
-                      (node.filename, node.lineno)
-            self.emit('CONTINUE_LOOP', loop_block)
-            self.nextBlock()
-        elif kind == END_FINALLY:
-            msg = "'continue' not allowed inside 'finally' clause (%s, %d)"
-            raise SyntaxError, msg % (node.filename, node.lineno)
-
-    def visitTest(self, node, jump):
-        end = self.newBlock()
-        for child in node.nodes[:-1]:
-            self.visit(child)
-            self.emit(jump, end)
-            self.nextBlock()
-        self.visit(node.nodes[-1])
-        self.nextBlock(end)
-
-    def visitAnd(self, node):
-        self.visitTest(node, 'JUMP_IF_FALSE_OR_POP')
-
-    def visitOr(self, node):
-        self.visitTest(node, 'JUMP_IF_TRUE_OR_POP')
-
-    def visitIfExp(self, node):
-        endblock = self.newBlock()
-        elseblock = self.newBlock()
-        self.visit(node.test)
-        self.emit('POP_JUMP_IF_FALSE', elseblock)
-        self.visit(node.then)
-        self.emit('JUMP_FORWARD', endblock)
-        self.nextBlock(elseblock)
-        self.visit(node.else_)
-        self.nextBlock(endblock)
-
-    def visitCompare(self, node):
-        self.visit(node.expr)
-        cleanup = self.newBlock()
-        for op, code in node.ops[:-1]:
-            self.visit(code)
-            self.emit('DUP_TOP')
-            self.emit('ROT_THREE')
-            self.emit('COMPARE_OP', op)
-            self.emit('JUMP_IF_FALSE_OR_POP', cleanup)
-            self.nextBlock()
-        # now do the last comparison
-        if node.ops:
-            op, code = node.ops[-1]
-            self.visit(code)
-            self.emit('COMPARE_OP', op)
-        if len(node.ops) > 1:
-            end = self.newBlock()
-            self.emit('JUMP_FORWARD', end)
-            self.startBlock(cleanup)
-            self.emit('ROT_TWO')
-            self.emit('POP_TOP')
-            self.nextBlock(end)
-
-    # list comprehensions
-    def visitListComp(self, node):
-        self.set_lineno(node)
-        # setup list
-        self.emit('BUILD_LIST', 0)
-
-        stack = []
-        for i, for_ in zip(range(len(node.quals)), node.quals):
-            start, anchor = self.visit(for_)
-            cont = None
-            for if_ in for_.ifs:
-                if cont is None:
-                    cont = self.newBlock()
-                self.visit(if_, cont)
-            stack.insert(0, (start, cont, anchor))
-
-        self.visit(node.expr)
-        self.emit('LIST_APPEND', len(node.quals) + 1)
-
-        for start, cont, anchor in stack:
-            if cont:
-                self.nextBlock(cont)
-            self.emit('JUMP_ABSOLUTE', start)
-            self.startBlock(anchor)
-
-    def visitSetComp(self, node):
-        self.set_lineno(node)
-        # setup list
-        self.emit('BUILD_SET', 0)
-
-        stack = []
-        for i, for_ in zip(range(len(node.quals)), node.quals):
-            start, anchor = self.visit(for_)
-            cont = None
-            for if_ in for_.ifs:
-                if cont is None:
-                    cont = self.newBlock()
-                self.visit(if_, cont)
-            stack.insert(0, (start, cont, anchor))
-
-        self.visit(node.expr)
-        self.emit('SET_ADD', len(node.quals) + 1)
-
-        for start, cont, anchor in stack:
-            if cont:
-                self.nextBlock(cont)
-            self.emit('JUMP_ABSOLUTE', start)
-            self.startBlock(anchor)
-
-    def visitDictComp(self, node):
-        self.set_lineno(node)
-        # setup list
-        self.emit('BUILD_MAP', 0)
-
-        stack = []
-        for i, for_ in zip(range(len(node.quals)), node.quals):
-            start, anchor = self.visit(for_)
-            cont = None
-            for if_ in for_.ifs:
-                if cont is None:
-                    cont = self.newBlock()
-                self.visit(if_, cont)
-            stack.insert(0, (start, cont, anchor))
-
-        self.visit(node.value)
-        self.visit(node.key)
-        self.emit('MAP_ADD', len(node.quals) + 1)
-
-        for start, cont, anchor in stack:
-            if cont:
-                self.nextBlock(cont)
-            self.emit('JUMP_ABSOLUTE', start)
-            self.startBlock(anchor)
-
-    def visitListCompFor(self, node):
-        start = self.newBlock()
-        anchor = self.newBlock()
-
-        self.visit(node.list)
-        self.emit('GET_ITER')
-        self.nextBlock(start)
-        self.set_lineno(node, force=True)
-        self.emit('FOR_ITER', anchor)
-        self.nextBlock()
-        self.visit(node.assign)
-        return start, anchor
-
-    def visitListCompIf(self, node, branch):
-        self.set_lineno(node, force=True)
-        self.visit(node.test)
-        self.emit('POP_JUMP_IF_FALSE', branch)
-        self.newBlock()
-
-    def _makeClosure(self, gen, args):
-        frees = gen.scope.get_free_vars()
-        if frees:
-            for name in frees:
-                self.emit('LOAD_CLOSURE', name)
-            self.emit('BUILD_TUPLE', len(frees))
-            self.emit('LOAD_CONST', gen)
-            self.emit('MAKE_CLOSURE', args)
-        else:
-            self.emit('LOAD_CONST', gen)
-            self.emit('MAKE_FUNCTION', args)
-
-    def visitGenExpr(self, node):
-        gen = GenExprCodeGenerator(node, self.scopes, self.class_name,
-                                   self.get_module())
-        walk(node.code, gen)
-        gen.finish()
-        self.set_lineno(node)
-        self._makeClosure(gen, 0)
-        # precomputation of outmost iterable
-        self.visit(node.code.quals[0].iter)
-        self.emit('GET_ITER')
-        self.emit('CALL_FUNCTION', 1)
-
-    def visitGenExprInner(self, node):
-        self.set_lineno(node)
-        # setup list
-
-        stack = []
-        for i, for_ in zip(range(len(node.quals)), node.quals):
-            start, anchor, end = self.visit(for_)
-            cont = None
-            for if_ in for_.ifs:
-                if cont is None:
-                    cont = self.newBlock()
-                self.visit(if_, cont)
-            stack.insert(0, (start, cont, anchor, end))
-
-        self.visit(node.expr)
-        self.emit('YIELD_VALUE')
-        self.emit('POP_TOP')
-
-        for start, cont, anchor, end in stack:
-            if cont:
-                self.nextBlock(cont)
-            self.emit('JUMP_ABSOLUTE', start)
-            self.startBlock(anchor)
-            self.emit('POP_BLOCK')
-            self.setups.pop()
-            self.nextBlock(end)
-
-        self.emit('LOAD_CONST', None)
-
-    def visitGenExprFor(self, node):
-        start = self.newBlock()
-        anchor = self.newBlock()
-        end = self.newBlock()
-
-        self.setups.push((LOOP, start))
-        self.emit('SETUP_LOOP', end)
-
-        if node.is_outmost:
-            self.loadName('.0')
-        else:
-            self.visit(node.iter)
-            self.emit('GET_ITER')
-
-        self.nextBlock(start)
-        self.set_lineno(node, force=True)
-        self.emit('FOR_ITER', anchor)
-        self.nextBlock()
-        self.visit(node.assign)
-        return start, anchor, end
-
-    def visitGenExprIf(self, node, branch):
-        self.set_lineno(node, force=True)
-        self.visit(node.test)
-        self.emit('POP_JUMP_IF_FALSE', branch)
-        self.newBlock()
-
-    # exception related
-
-    def visitAssert(self, node):
-        # XXX would be interesting to implement this via a
-        # transformation of the AST before this stage
-        if __debug__:
-            end = self.newBlock()
-            self.set_lineno(node)
-            # XXX AssertionError appears to be special case -- it is always
-            # loaded as a global even if there is a local name.  I guess this
-            # is a sort of renaming op.
-            self.nextBlock()
-            self.visit(node.test)
-            self.emit('POP_JUMP_IF_TRUE', end)
-            self.nextBlock()
-            self.emit('LOAD_GLOBAL', 'AssertionError')
-            if node.fail:
-                self.visit(node.fail)
-                self.emit('RAISE_VARARGS', 2)
-            else:
-                self.emit('RAISE_VARARGS', 1)
-            self.nextBlock(end)
-
-    def visitRaise(self, node):
-        self.set_lineno(node)
-        n = 0
-        if node.expr1:
-            self.visit(node.expr1)
-            n = n + 1
-        if node.expr2:
-            self.visit(node.expr2)
-            n = n + 1
-        if node.expr3:
-            self.visit(node.expr3)
-            n = n + 1
-        self.emit('RAISE_VARARGS', n)
-
-    def visitTryExcept(self, node):
-        body = self.newBlock()
-        handlers = self.newBlock()
-        end = self.newBlock()
-        if node.else_:
-            lElse = self.newBlock()
-        else:
-            lElse = end
-        self.set_lineno(node)
-        self.emit('SETUP_EXCEPT', handlers)
-        self.nextBlock(body)
-        self.setups.push((EXCEPT, body))
-        self.visit(node.body)
-        self.emit('POP_BLOCK')
-        self.setups.pop()
-        self.emit('JUMP_FORWARD', lElse)
-        self.startBlock(handlers)
-
-        last = len(node.handlers) - 1
-        for i in range(len(node.handlers)):
-            expr, target, body = node.handlers[i]
-            self.set_lineno(expr)
-            if expr:
-                self.emit('DUP_TOP')
-                self.visit(expr)
-                self.emit('COMPARE_OP', 'exception match')
-                next = self.newBlock()
-                self.emit('POP_JUMP_IF_FALSE', next)
-                self.nextBlock()
-            self.emit('POP_TOP')
-            if target:
-                self.visit(target)
-            else:
-                self.emit('POP_TOP')
-            self.emit('POP_TOP')
-            self.visit(body)
-            self.emit('JUMP_FORWARD', end)
-            if expr:
-                self.nextBlock(next)
-            else:
-                self.nextBlock()
-        self.emit('END_FINALLY')
-        if node.else_:
-            self.nextBlock(lElse)
-            self.visit(node.else_)
-        self.nextBlock(end)
-
-    def visitTryFinally(self, node):
-        body = self.newBlock()
-        final = self.newBlock()
-        self.set_lineno(node)
-        self.emit('SETUP_FINALLY', final)
-        self.nextBlock(body)
-        self.setups.push((TRY_FINALLY, body))
-        self.visit(node.body)
-        self.emit('POP_BLOCK')
-        self.setups.pop()
-        self.emit('LOAD_CONST', None)
-        self.nextBlock(final)
-        self.setups.push((END_FINALLY, final))
-        self.visit(node.final)
-        self.emit('END_FINALLY')
-        self.setups.pop()
-
-    __with_count = 0
-
-    def visitWith(self, node):
-        body = self.newBlock()
-        final = self.newBlock()
-        self.__with_count += 1
-        valuevar = "_[%d]" % self.__with_count
-        self.set_lineno(node)
-        self.visit(node.expr)
-        self.emit('DUP_TOP')
-        self.emit('LOAD_ATTR', '__exit__')
-        self.emit('ROT_TWO')
-        self.emit('LOAD_ATTR', '__enter__')
-        self.emit('CALL_FUNCTION', 0)
-        if node.vars is None:
-            self.emit('POP_TOP')
-        else:
-            self._implicitNameOp('STORE', valuevar)
-        self.emit('SETUP_FINALLY', final)
-        self.nextBlock(body)
-        self.setups.push((TRY_FINALLY, body))
-        if node.vars is not None:
-            self._implicitNameOp('LOAD', valuevar)
-            self._implicitNameOp('DELETE', valuevar)
-            self.visit(node.vars)
-        self.visit(node.body)
-        self.emit('POP_BLOCK')
-        self.setups.pop()
-        self.emit('LOAD_CONST', None)
-        self.nextBlock(final)
-        self.setups.push((END_FINALLY, final))
-        self.emit('WITH_CLEANUP')
-        self.emit('END_FINALLY')
-        self.setups.pop()
-        self.__with_count -= 1
-
-    # misc
-
-    def visitDiscard(self, node):
-        self.set_lineno(node)
-        self.visit(node.expr)
-        self.emit('POP_TOP')
-
-    def visitConst(self, node):
-        self.emit('LOAD_CONST', node.value)
-
-    def visitKeyword(self, node):
-        self.emit('LOAD_CONST', node.name)
-        self.visit(node.expr)
-
-    def visitGlobal(self, node):
-        # no code to generate
-        pass
-
-    def visitName(self, node):
-        self.set_lineno(node)
-        self.loadName(node.name)
-
-    def visitPass(self, node):
-        self.set_lineno(node)
-
-    def visitImport(self, node):
-        self.set_lineno(node)
-        level = 0 if self.graph.checkFlag(CO_FUTURE_ABSIMPORT) else -1
-        for name, alias in node.names:
-            if VERSION > 1:
-                self.emit('LOAD_CONST', level)
-                self.emit('LOAD_CONST', None)
-            self.emit('IMPORT_NAME', name)
-            mod = name.split(".")[0]
-            if alias:
-                self._resolveDots(name)
-                self.storeName(alias)
-            else:
-                self.storeName(mod)
-
-    def visitFrom(self, node):
-        self.set_lineno(node)
-        level = node.level
-        if level == 0 and not self.graph.checkFlag(CO_FUTURE_ABSIMPORT):
-            level = -1
-        fromlist = tuple(name for (name, alias) in node.names)
-        if VERSION > 1:
-            self.emit('LOAD_CONST', level)
-            self.emit('LOAD_CONST', fromlist)
-        self.emit('IMPORT_NAME', node.modname)
-        for name, alias in node.names:
-            if VERSION > 1:
-                if name == '*':
-                    self.namespace = 0
-                    self.emit('IMPORT_STAR')
-                    # There can only be one name w/ from ... import *
-                    assert len(node.names) == 1
-                    return
-                else:
-                    self.emit('IMPORT_FROM', name)
-                    self._resolveDots(name)
-                    self.storeName(alias or name)
-            else:
-                self.emit('IMPORT_FROM', name)
-        self.emit('POP_TOP')
-
-    def _resolveDots(self, name):
-        elts = name.split(".")
-        if len(elts) == 1:
-            return
-        for elt in elts[1:]:
-            self.emit('LOAD_ATTR', elt)
-
-    def visitGetattr(self, node):
-        self.visit(node.expr)
-        self.emit('LOAD_ATTR', self.mangle(node.attrname))
-
-    # next five implement assignments
-
-    def visitAssign(self, node):
-        self.set_lineno(node)
-        self.visit(node.expr)
-        dups = len(node.nodes) - 1
-        for i in range(len(node.nodes)):
-            elt = node.nodes[i]
-            if i < dups:
-                self.emit('DUP_TOP')
-            if isinstance(elt, ast.Node):
-                self.visit(elt)
-
-    def visitAssName(self, node):
-        if node.flags == 'OP_ASSIGN':
-            self.storeName(node.name)
-        elif node.flags == 'OP_DELETE':
-            self.set_lineno(node)
-            self.delName(node.name)
-        else:
-            print "oops", node.flags
-
-    def visitAssAttr(self, node):
-        self.visit(node.expr)
-        if node.flags == 'OP_ASSIGN':
-            self.emit('STORE_ATTR', self.mangle(node.attrname))
-        elif node.flags == 'OP_DELETE':
-            self.emit('DELETE_ATTR', self.mangle(node.attrname))
-        else:
-            print "warning: unexpected flags:", node.flags
-            print node
-
-    def _visitAssSequence(self, node, op='UNPACK_SEQUENCE'):
-        if findOp(node) != 'OP_DELETE':
-            self.emit(op, len(node.nodes))
-        for child in node.nodes:
-            self.visit(child)
-
-    if VERSION > 1:
-        visitAssTuple = _visitAssSequence
-        visitAssList = _visitAssSequence
-    else:
-        def visitAssTuple(self, node):
-            self._visitAssSequence(node, 'UNPACK_TUPLE')
-
-        def visitAssList(self, node):
-            self._visitAssSequence(node, 'UNPACK_LIST')
-
-    # augmented assignment
-
-    def visitAugAssign(self, node):
-        self.set_lineno(node)
-        aug_node = wrap_aug(node.node)
-        self.visit(aug_node, "load")
-        self.visit(node.expr)
-        self.emit(self._augmented_opcode[node.op])
-        self.visit(aug_node, "store")
-
-    _augmented_opcode = {
-        '+=' : 'INPLACE_ADD',
-        '-=' : 'INPLACE_SUBTRACT',
-        '*=' : 'INPLACE_MULTIPLY',
-        '/=' : 'INPLACE_DIVIDE',
-        '//=': 'INPLACE_FLOOR_DIVIDE',
-        '%=' : 'INPLACE_MODULO',
-        '**=': 'INPLACE_POWER',
-        '>>=': 'INPLACE_RSHIFT',
-        '<<=': 'INPLACE_LSHIFT',
-        '&=' : 'INPLACE_AND',
-        '^=' : 'INPLACE_XOR',
-        '|=' : 'INPLACE_OR',
-        }
-
-    def visitAugName(self, node, mode):
-        if mode == "load":
-            self.loadName(node.name)
-        elif mode == "store":
-            self.storeName(node.name)
-
-    def visitAugGetattr(self, node, mode):
-        if mode == "load":
-            self.visit(node.expr)
-            self.emit('DUP_TOP')
-            self.emit('LOAD_ATTR', self.mangle(node.attrname))
-        elif mode == "store":
-            self.emit('ROT_TWO')
-            self.emit('STORE_ATTR', self.mangle(node.attrname))
-
-    def visitAugSlice(self, node, mode):
-        if mode == "load":
-            self.visitSlice(node, 1)
-        elif mode == "store":
-            slice = 0
-            if node.lower:
-                slice = slice | 1
-            if node.upper:
-                slice = slice | 2
-            if slice == 0:
-                self.emit('ROT_TWO')
-            elif slice == 3:
-                self.emit('ROT_FOUR')
-            else:
-                self.emit('ROT_THREE')
-            self.emit('STORE_SLICE+%d' % slice)
-
-    def visitAugSubscript(self, node, mode):
-        if mode == "load":
-            self.visitSubscript(node, 1)
-        elif mode == "store":
-            self.emit('ROT_THREE')
-            self.emit('STORE_SUBSCR')
-
-    def visitExec(self, node):
-        self.visit(node.expr)
-        if node.locals is None:
-            self.emit('LOAD_CONST', None)
-        else:
-            self.visit(node.locals)
-        if node.globals is None:
-            self.emit('DUP_TOP')
-        else:
-            self.visit(node.globals)
-        self.emit('EXEC_STMT')
-
-    def visitCallFunc(self, node):
-        pos = 0
-        kw = 0
-        self.set_lineno(node)
-        self.visit(node.node)
-        for arg in node.args:
-            self.visit(arg)
-            if isinstance(arg, ast.Keyword):
-                kw = kw + 1
-            else:
-                pos = pos + 1
-        if node.star_args is not None:
-            self.visit(node.star_args)
-        if node.dstar_args is not None:
-            self.visit(node.dstar_args)
-        have_star = node.star_args is not None
-        have_dstar = node.dstar_args is not None
-        opcode = callfunc_opcode_info[have_star, have_dstar]
-        self.emit(opcode, kw << 8 | pos)
-
-    def visitPrint(self, node, newline=0):
-        self.set_lineno(node)
-        if node.dest:
-            self.visit(node.dest)
-        for child in node.nodes:
-            if node.dest:
-                self.emit('DUP_TOP')
-            self.visit(child)
-            if node.dest:
-                self.emit('ROT_TWO')
-                self.emit('PRINT_ITEM_TO')
-            else:
-                self.emit('PRINT_ITEM')
-        if node.dest and not newline:
-            self.emit('POP_TOP')
-
-    def visitPrintnl(self, node):
-        self.visitPrint(node, newline=1)
-        if node.dest:
-            self.emit('PRINT_NEWLINE_TO')
-        else:
-            self.emit('PRINT_NEWLINE')
-
-    def visitReturn(self, node):
-        self.set_lineno(node)
-        self.visit(node.value)
-        self.emit('RETURN_VALUE')
-
-    def visitYield(self, node):
-        self.set_lineno(node)
-        self.visit(node.value)
-        self.emit('YIELD_VALUE')
-
-    # slice and subscript stuff
-
-    def visitSlice(self, node, aug_flag=None):
-        # aug_flag is used by visitAugSlice
-        self.visit(node.expr)
-        slice = 0
-        if node.lower:
-            self.visit(node.lower)
-            slice = slice | 1
-        if node.upper:
-            self.visit(node.upper)
-            slice = slice | 2
-        if aug_flag:
-            if slice == 0:
-                self.emit('DUP_TOP')
-            elif slice == 3:
-                self.emit('DUP_TOPX', 3)
-            else:
-                self.emit('DUP_TOPX', 2)
-        if node.flags == 'OP_APPLY':
-            self.emit('SLICE+%d' % slice)
-        elif node.flags == 'OP_ASSIGN':
-            self.emit('STORE_SLICE+%d' % slice)
-        elif node.flags == 'OP_DELETE':
-            self.emit('DELETE_SLICE+%d' % slice)
-        else:
-            print "weird slice", node.flags
-            raise
-
-    def visitSubscript(self, node, aug_flag=None):
-        self.visit(node.expr)
-        for sub in node.subs:
-            self.visit(sub)
-        if len(node.subs) > 1:
-            self.emit('BUILD_TUPLE', len(node.subs))
-        if aug_flag:
-            self.emit('DUP_TOPX', 2)
-        if node.flags == 'OP_APPLY':
-            self.emit('BINARY_SUBSCR')
-        elif node.flags == 'OP_ASSIGN':
-            self.emit('STORE_SUBSCR')
-        elif node.flags == 'OP_DELETE':
-            self.emit('DELETE_SUBSCR')
-
-    # binary ops
-
-    def binaryOp(self, node, op):
-        self.visit(node.left)
-        self.visit(node.right)
-        self.emit(op)
-
-    def visitAdd(self, node):
-        return self.binaryOp(node, 'BINARY_ADD')
-
-    def visitSub(self, node):
-        return self.binaryOp(node, 'BINARY_SUBTRACT')
-
-    def visitMul(self, node):
-        return self.binaryOp(node, 'BINARY_MULTIPLY')
-
-    def visitDiv(self, node):
-        return self.binaryOp(node, self._div_op)
-
-    def visitFloorDiv(self, node):
-        return self.binaryOp(node, 'BINARY_FLOOR_DIVIDE')
-
-    def visitMod(self, node):
-        return self.binaryOp(node, 'BINARY_MODULO')
-
-    def visitPower(self, node):
-        return self.binaryOp(node, 'BINARY_POWER')
-
-    def visitLeftShift(self, node):
-        return self.binaryOp(node, 'BINARY_LSHIFT')
-
-    def visitRightShift(self, node):
-        return self.binaryOp(node, 'BINARY_RSHIFT')
-
-    # unary ops
-
-    def unaryOp(self, node, op):
-        self.visit(node.expr)
-        self.emit(op)
-
-    def visitInvert(self, node):
-        return self.unaryOp(node, 'UNARY_INVERT')
-
-    def visitUnarySub(self, node):
-        return self.unaryOp(node, 'UNARY_NEGATIVE')
-
-    def visitUnaryAdd(self, node):
-        return self.unaryOp(node, 'UNARY_POSITIVE')
-
-    def visitUnaryInvert(self, node):
-        return self.unaryOp(node, 'UNARY_INVERT')
-
-    def visitNot(self, node):
-        return self.unaryOp(node, 'UNARY_NOT')
-
-    def visitBackquote(self, node):
-        return self.unaryOp(node, 'UNARY_CONVERT')
-
-    # bit ops
-
-    def bitOp(self, nodes, op):
-        self.visit(nodes[0])
-        for node in nodes[1:]:
-            self.visit(node)
-            self.emit(op)
-
-    def visitBitand(self, node):
-        return self.bitOp(node.nodes, 'BINARY_AND')
-
-    def visitBitor(self, node):
-        return self.bitOp(node.nodes, 'BINARY_OR')
-
-    def visitBitxor(self, node):
-        return self.bitOp(node.nodes, 'BINARY_XOR')
-
-    # object constructors
-
-    def visitEllipsis(self, node):
-        self.emit('LOAD_CONST', Ellipsis)
-
-    def visitTuple(self, node):
-        self.set_lineno(node)
-        for elt in node.nodes:
-            self.visit(elt)
-        self.emit('BUILD_TUPLE', len(node.nodes))
-
-    def visitList(self, node):
-        self.set_lineno(node)
-        for elt in node.nodes:
-            self.visit(elt)
-        self.emit('BUILD_LIST', len(node.nodes))
-
-    def visitSet(self, node):
-        self.set_lineno(node)
-        for elt in node.nodes:
-            self.visit(elt)
-        self.emit('BUILD_SET', len(node.nodes))
-
-    def visitSliceobj(self, node):
-        for child in node.nodes:
-            self.visit(child)
-        self.emit('BUILD_SLICE', len(node.nodes))
-
-    def visitDict(self, node):
-        self.set_lineno(node)
-        self.emit('BUILD_MAP', 0)
-        for k, v in node.items:
-            self.emit('DUP_TOP')
-            self.visit(k)
-            self.visit(v)
-            self.emit('ROT_THREE')
-            self.emit('STORE_SUBSCR')
-
-class NestedScopeMixin:
-    """Defines initClass() for nested scoping (Python 2.2-compatible)"""
-    def initClass(self):
-        self.__class__.NameFinder = LocalNameFinder
-        self.__class__.FunctionGen = FunctionCodeGenerator
-        self.__class__.ClassGen = ClassCodeGenerator
-
-class ModuleCodeGenerator(NestedScopeMixin, CodeGenerator):
-    __super_init = CodeGenerator.__init__
-
-    scopes = None
-
-    def __init__(self, tree):
-        self.graph = pyassem.PyFlowGraph("<module>", tree.filename)
-        self.futures = future.find_futures(tree)
-        self.__super_init()
-        walk(tree, self)
-
-    def get_module(self):
-        return self
-
-class ExpressionCodeGenerator(NestedScopeMixin, CodeGenerator):
-    __super_init = CodeGenerator.__init__
-
-    scopes = None
-    futures = ()
-
-    def __init__(self, tree):
-        self.graph = pyassem.PyFlowGraph("<expression>", tree.filename)
-        self.__super_init()
-        walk(tree, self)
-
-    def get_module(self):
-        return self
-
-class InteractiveCodeGenerator(NestedScopeMixin, CodeGenerator):
-
-    __super_init = CodeGenerator.__init__
-
-    scopes = None
-    futures = ()
-
-    def __init__(self, tree):
-        self.graph = pyassem.PyFlowGraph("<interactive>", tree.filename)
-        self.__super_init()
-        self.set_lineno(tree)
-        walk(tree, self)
-        self.emit('RETURN_VALUE')
-
-    def get_module(self):
-        return self
-
-    def visitDiscard(self, node):
-        # XXX Discard means it's an expression.  Perhaps this is a bad
-        # name.
-        self.visit(node.expr)
-        self.emit('PRINT_EXPR')
-
-class AbstractFunctionCode:
-    optimized = 1
-    lambdaCount = 0
-
-    def __init__(self, func, scopes, isLambda, class_name, mod):
-        self.class_name = class_name
-        self.module = mod
-        if isLambda:
-            klass = FunctionCodeGenerator
-            name = "<lambda.%d>" % klass.lambdaCount
-            klass.lambdaCount = klass.lambdaCount + 1
-        else:
-            name = func.name
-
-        args, hasTupleArg = generateArgList(func.argnames)
-        self.graph = pyassem.PyFlowGraph(name, func.filename, args,
-                                         optimized=1)
-        self.isLambda = isLambda
-        self.super_init()
-
-        if not isLambda and func.doc:
-            self.setDocstring(func.doc)
-
-        lnf = walk(func.code, self.NameFinder(args), verbose=0)
-        self.locals.push(lnf.getLocals())
-        if func.varargs:
-            self.graph.setFlag(CO_VARARGS)
-        if func.kwargs:
-            self.graph.setFlag(CO_VARKEYWORDS)
-        self.set_lineno(func)
-        if hasTupleArg:
-            self.generateArgUnpack(func.argnames)
-
-    def get_module(self):
-        return self.module
-
-    def finish(self):
-        self.graph.startExitBlock()
-        if not self.isLambda:
-            self.emit('LOAD_CONST', None)
-        self.emit('RETURN_VALUE')
-
-    def generateArgUnpack(self, args):
-        for i in range(len(args)):
-            arg = args[i]
-            if isinstance(arg, tuple):
-                self.emit('LOAD_FAST', '.%d' % (i * 2))
-                self.unpackSequence(arg)
-
-    def unpackSequence(self, tup):
-        if VERSION > 1:
-            self.emit('UNPACK_SEQUENCE', len(tup))
-        else:
-            self.emit('UNPACK_TUPLE', len(tup))
-        for elt in tup:
-            if isinstance(elt, tuple):
-                self.unpackSequence(elt)
-            else:
-                self._nameOp('STORE', elt)
-
-    unpackTuple = unpackSequence
-
-class FunctionCodeGenerator(NestedScopeMixin, AbstractFunctionCode,
-                            CodeGenerator):
-    super_init = CodeGenerator.__init__ # call be other init
-    scopes = None
-
-    __super_init = AbstractFunctionCode.__init__
-
-    def __init__(self, func, scopes, isLambda, class_name, mod):
-        self.scopes = scopes
-        self.scope = scopes[func]
-        self.__super_init(func, scopes, isLambda, class_name, mod)
-        self.graph.setFreeVars(self.scope.get_free_vars())
-        self.graph.setCellVars(self.scope.get_cell_vars())
-        if self.scope.generator is not None:
-            self.graph.setFlag(CO_GENERATOR)
-
-class GenExprCodeGenerator(NestedScopeMixin, AbstractFunctionCode,
-                           CodeGenerator):
-    super_init = CodeGenerator.__init__ # call be other init
-    scopes = None
-
-    __super_init = AbstractFunctionCode.__init__
-
-    def __init__(self, gexp, scopes, class_name, mod):
-        self.scopes = scopes
-        self.scope = scopes[gexp]
-        self.__super_init(gexp, scopes, 1, class_name, mod)
-        self.graph.setFreeVars(self.scope.get_free_vars())
-        self.graph.setCellVars(self.scope.get_cell_vars())
-        self.graph.setFlag(CO_GENERATOR)
-
-class AbstractClassCode:
-
-    def __init__(self, klass, scopes, module):
-        self.class_name = klass.name
-        self.module = module
-        self.graph = pyassem.PyFlowGraph(klass.name, klass.filename,
-                                           optimized=0, klass=1)
-        self.super_init()
-        lnf = walk(klass.code, self.NameFinder(), verbose=0)
-        self.locals.push(lnf.getLocals())
-        self.graph.setFlag(CO_NEWLOCALS)
-        if klass.doc:
-            self.setDocstring(klass.doc)
-
-    def get_module(self):
-        return self.module
-
-    def finish(self):
-        self.graph.startExitBlock()
-        self.emit('LOAD_LOCALS')
-        self.emit('RETURN_VALUE')
-
-class ClassCodeGenerator(NestedScopeMixin, AbstractClassCode, CodeGenerator):
-    super_init = CodeGenerator.__init__
-    scopes = None
-
-    __super_init = AbstractClassCode.__init__
-
-    def __init__(self, klass, scopes, module):
-        self.scopes = scopes
-        self.scope = scopes[klass]
-        self.__super_init(klass, scopes, module)
-        self.graph.setFreeVars(self.scope.get_free_vars())
-        self.graph.setCellVars(self.scope.get_cell_vars())
-        self.set_lineno(klass)
-        self.emit("LOAD_GLOBAL", "__name__")
-        self.storeName("__module__")
-        if klass.doc:
-            self.emit("LOAD_CONST", klass.doc)
-            self.storeName('__doc__')
-
-def generateArgList(arglist):
-    """Generate an arg list marking TupleArgs"""
-    args = []
-    extra = []
-    count = 0
-    for i in range(len(arglist)):
-        elt = arglist[i]
-        if isinstance(elt, str):
-            args.append(elt)
-        elif isinstance(elt, tuple):
-            args.append(TupleArg(i * 2, elt))
-            extra.extend(misc.flatten(elt))
-            count = count + 1
-        else:
-            raise ValueError, "unexpect argument type:", elt
-    return args + extra, count
-
-def findOp(node):
-    """Find the op (DELETE, LOAD, STORE) in an AssTuple tree"""
-    v = OpFinder()
-    walk(node, v, verbose=0)
-    return v.op
-
-class OpFinder:
-    def __init__(self):
-        self.op = None
-    def visitAssName(self, node):
-        if self.op is None:
-            self.op = node.flags
-        elif self.op != node.flags:
-            raise ValueError, "mixed ops in stmt"
-    visitAssAttr = visitAssName
-    visitSubscript = visitAssName
-
-class Delegator:
-    """Base class to support delegation for augmented assignment nodes
-
-    To generator code for augmented assignments, we use the following
-    wrapper classes.  In visitAugAssign, the left-hand expression node
-    is visited twice.  The first time the visit uses the normal method
-    for that node .  The second time the visit uses a different method
-    that generates the appropriate code to perform the assignment.
-    These delegator classes wrap the original AST nodes in order to
-    support the variant visit methods.
-    """
-    def __init__(self, obj):
-        self.obj = obj
-
-    def __getattr__(self, attr):
-        return getattr(self.obj, attr)
-
-class AugGetattr(Delegator):
-    pass
-
-class AugName(Delegator):
-    pass
-
-class AugSlice(Delegator):
-    pass
-
-class AugSubscript(Delegator):
-    pass
-
-wrapper = {
-    ast.Getattr: AugGetattr,
-    ast.Name: AugName,
-    ast.Slice: AugSlice,
-    ast.Subscript: AugSubscript,
-    }
-
-def wrap_aug(node):
-    return wrapper[node.__class__](node)
-
-if __name__ == "__main__":
-    for file in sys.argv[1:]:
-        compileFile(file)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/symbols.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/symbols.py
deleted file mode 100644
index 6f63e3a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/symbols.py
+++ /dev/null
@@ -1,462 +0,0 @@
-"""Module symbol-table generator"""
-
-from compiler import ast
-from compiler.consts import SC_LOCAL, SC_GLOBAL_IMPLICIT, SC_GLOBAL_EXPLICT, \
-    SC_FREE, SC_CELL, SC_UNKNOWN
-from compiler.misc import mangle
-import types
-
-
-import sys
-
-MANGLE_LEN = 256
-
-class Scope:
-    # XXX how much information do I need about each name?
-    def __init__(self, name, module, klass=None):
-        self.name = name
-        self.module = module
-        self.defs = {}
-        self.uses = {}
-        self.globals = {}
-        self.params = {}
-        self.frees = {}
-        self.cells = {}
-        self.children = []
-        # nested is true if the class could contain free variables,
-        # i.e. if it is nested within another function.
-        self.nested = None
-        self.generator = None
-        self.klass = None
-        if klass is not None:
-            for i in range(len(klass)):
-                if klass[i] != '_':
-                    self.klass = klass[i:]
-                    break
-
-    def __repr__(self):
-        return "<%s: %s>" % (self.__class__.__name__, self.name)
-
-    def mangle(self, name):
-        if self.klass is None:
-            return name
-        return mangle(name, self.klass)
-
-    def add_def(self, name):
-        self.defs[self.mangle(name)] = 1
-
-    def add_use(self, name):
-        self.uses[self.mangle(name)] = 1
-
-    def add_global(self, name):
-        name = self.mangle(name)
-        if name in self.uses or name in self.defs:
-            pass # XXX warn about global following def/use
-        if name in self.params:
-            raise SyntaxError, "%s in %s is global and parameter" % \
-                  (name, self.name)
-        self.globals[name] = 1
-        self.module.add_def(name)
-
-    def add_param(self, name):
-        name = self.mangle(name)
-        self.defs[name] = 1
-        self.params[name] = 1
-
-    def get_names(self):
-        d = {}
-        d.update(self.defs)
-        d.update(self.uses)
-        d.update(self.globals)
-        return d.keys()
-
-    def add_child(self, child):
-        self.children.append(child)
-
-    def get_children(self):
-        return self.children
-
-    def DEBUG(self):
-        print >> sys.stderr, self.name, self.nested and "nested" or ""
-        print >> sys.stderr, "\tglobals: ", self.globals
-        print >> sys.stderr, "\tcells: ", self.cells
-        print >> sys.stderr, "\tdefs: ", self.defs
-        print >> sys.stderr, "\tuses: ", self.uses
-        print >> sys.stderr, "\tfrees:", self.frees
-
-    def check_name(self, name):
-        """Return scope of name.
-
-        The scope of a name could be LOCAL, GLOBAL, FREE, or CELL.
-        """
-        if name in self.globals:
-            return SC_GLOBAL_EXPLICT
-        if name in self.cells:
-            return SC_CELL
-        if name in self.defs:
-            return SC_LOCAL
-        if self.nested and (name in self.frees or name in self.uses):
-            return SC_FREE
-        if self.nested:
-            return SC_UNKNOWN
-        else:
-            return SC_GLOBAL_IMPLICIT
-
-    def get_free_vars(self):
-        if not self.nested:
-            return ()
-        free = {}
-        free.update(self.frees)
-        for name in self.uses.keys():
-            if name not in self.defs and name not in self.globals:
-                free[name] = 1
-        return free.keys()
-
-    def handle_children(self):
-        for child in self.children:
-            frees = child.get_free_vars()
-            globals = self.add_frees(frees)
-            for name in globals:
-                child.force_global(name)
-
-    def force_global(self, name):
-        """Force name to be global in scope.
-
-        Some child of the current node had a free reference to name.
-        When the child was processed, it was labelled a free
-        variable.  Now that all its enclosing scope have been
-        processed, the name is known to be a global or builtin.  So
-        walk back down the child chain and set the name to be global
-        rather than free.
-
-        Be careful to stop if a child does not think the name is
-        free.
-        """
-        self.globals[name] = 1
-        if name in self.frees:
-            del self.frees[name]
-        for child in self.children:
-            if child.check_name(name) == SC_FREE:
-                child.force_global(name)
-
-    def add_frees(self, names):
-        """Process list of free vars from nested scope.
-
-        Returns a list of names that are either 1) declared global in the
-        parent or 2) undefined in a top-level parent.  In either case,
-        the nested scope should treat them as globals.
-        """
-        child_globals = []
-        for name in names:
-            sc = self.check_name(name)
-            if self.nested:
-                if sc == SC_UNKNOWN or sc == SC_FREE \
-                   or isinstance(self, ClassScope):
-                    self.frees[name] = 1
-                elif sc == SC_GLOBAL_IMPLICIT:
-                    child_globals.append(name)
-                elif isinstance(self, FunctionScope) and sc == SC_LOCAL:
-                    self.cells[name] = 1
-                elif sc != SC_CELL:
-                    child_globals.append(name)
-            else:
-                if sc == SC_LOCAL:
-                    self.cells[name] = 1
-                elif sc != SC_CELL:
-                    child_globals.append(name)
-        return child_globals
-
-    def get_cell_vars(self):
-        return self.cells.keys()
-
-class ModuleScope(Scope):
-    __super_init = Scope.__init__
-
-    def __init__(self):
-        self.__super_init("global", self)
-
-class FunctionScope(Scope):
-    pass
-
-class GenExprScope(Scope):
-    __super_init = Scope.__init__
-
-    __counter = 1
-
-    def __init__(self, module, klass=None):
-        i = self.__counter
-        self.__counter += 1
-        self.__super_init("generator expression<%d>"%i, module, klass)
-        self.add_param('.0')
-
-    def get_names(self):
-        keys = Scope.get_names(self)
-        return keys
-
-class LambdaScope(FunctionScope):
-    __super_init = Scope.__init__
-
-    __counter = 1
-
-    def __init__(self, module, klass=None):
-        i = self.__counter
-        self.__counter += 1
-        self.__super_init("lambda.%d" % i, module, klass)
-
-class ClassScope(Scope):
-    __super_init = Scope.__init__
-
-    def __init__(self, name, module):
-        self.__super_init(name, module, name)
-
-class SymbolVisitor:
-    def __init__(self):
-        self.scopes = {}
-        self.klass = None
-
-    # node that define new scopes
-
-    def visitModule(self, node):
-        scope = self.module = self.scopes[node] = ModuleScope()
-        self.visit(node.node, scope)
-
-    visitExpression = visitModule
-
-    def visitFunction(self, node, parent):
-        if node.decorators:
-            self.visit(node.decorators, parent)
-        parent.add_def(node.name)
-        for n in node.defaults:
-            self.visit(n, parent)
-        scope = FunctionScope(node.name, self.module, self.klass)
-        if parent.nested or isinstance(parent, FunctionScope):
-            scope.nested = 1
-        self.scopes[node] = scope
-        self._do_args(scope, node.argnames)
-        self.visit(node.code, scope)
-        self.handle_free_vars(scope, parent)
-
-    def visitGenExpr(self, node, parent):
-        scope = GenExprScope(self.module, self.klass);
-        if parent.nested or isinstance(parent, FunctionScope) \
-                or isinstance(parent, GenExprScope):
-            scope.nested = 1
-
-        self.scopes[node] = scope
-        self.visit(node.code, scope)
-
-        self.handle_free_vars(scope, parent)
-
-    def visitGenExprInner(self, node, scope):
-        for genfor in node.quals:
-            self.visit(genfor, scope)
-
-        self.visit(node.expr, scope)
-
-    def visitGenExprFor(self, node, scope):
-        self.visit(node.assign, scope, 1)
-        self.visit(node.iter, scope)
-        for if_ in node.ifs:
-            self.visit(if_, scope)
-
-    def visitGenExprIf(self, node, scope):
-        self.visit(node.test, scope)
-
-    def visitLambda(self, node, parent, assign=0):
-        # Lambda is an expression, so it could appear in an expression
-        # context where assign is passed.  The transformer should catch
-        # any code that has a lambda on the left-hand side.
-        assert not assign
-
-        for n in node.defaults:
-            self.visit(n, parent)
-        scope = LambdaScope(self.module, self.klass)
-        if parent.nested or isinstance(parent, FunctionScope):
-            scope.nested = 1
-        self.scopes[node] = scope
-        self._do_args(scope, node.argnames)
-        self.visit(node.code, scope)
-        self.handle_free_vars(scope, parent)
-
-    def _do_args(self, scope, args):
-        for name in args:
-            if type(name) == types.TupleType:
-                self._do_args(scope, name)
-            else:
-                scope.add_param(name)
-
-    def handle_free_vars(self, scope, parent):
-        parent.add_child(scope)
-        scope.handle_children()
-
-    def visitClass(self, node, parent):
-        parent.add_def(node.name)
-        for n in node.bases:
-            self.visit(n, parent)
-        scope = ClassScope(node.name, self.module)
-        if parent.nested or isinstance(parent, FunctionScope):
-            scope.nested = 1
-        if node.doc is not None:
-            scope.add_def('__doc__')
-        scope.add_def('__module__')
-        self.scopes[node] = scope
-        prev = self.klass
-        self.klass = node.name
-        self.visit(node.code, scope)
-        self.klass = prev
-        self.handle_free_vars(scope, parent)
-
-    # name can be a def or a use
-
-    # XXX a few calls and nodes expect a third "assign" arg that is
-    # true if the name is being used as an assignment.  only
-    # expressions contained within statements may have the assign arg.
-
-    def visitName(self, node, scope, assign=0):
-        if assign:
-            scope.add_def(node.name)
-        else:
-            scope.add_use(node.name)
-
-    # operations that bind new names
-
-    def visitFor(self, node, scope):
-        self.visit(node.assign, scope, 1)
-        self.visit(node.list, scope)
-        self.visit(node.body, scope)
-        if node.else_:
-            self.visit(node.else_, scope)
-
-    def visitFrom(self, node, scope):
-        for name, asname in node.names:
-            if name == "*":
-                continue
-            scope.add_def(asname or name)
-
-    def visitImport(self, node, scope):
-        for name, asname in node.names:
-            i = name.find(".")
-            if i > -1:
-                name = name[:i]
-            scope.add_def(asname or name)
-
-    def visitGlobal(self, node, scope):
-        for name in node.names:
-            scope.add_global(name)
-
-    def visitAssign(self, node, scope):
-        """Propagate assignment flag down to child nodes.
-
-        The Assign node doesn't itself contains the variables being
-        assigned to.  Instead, the children in node.nodes are visited
-        with the assign flag set to true.  When the names occur in
-        those nodes, they are marked as defs.
-
-        Some names that occur in an assignment target are not bound by
-        the assignment, e.g. a name occurring inside a slice.  The
-        visitor handles these nodes specially; they do not propagate
-        the assign flag to their children.
-        """
-        for n in node.nodes:
-            self.visit(n, scope, 1)
-        self.visit(node.expr, scope)
-
-    def visitAssName(self, node, scope, assign=1):
-        scope.add_def(node.name)
-
-    def visitAssAttr(self, node, scope, assign=0):
-        self.visit(node.expr, scope, 0)
-
-    def visitSubscript(self, node, scope, assign=0):
-        self.visit(node.expr, scope, 0)
-        for n in node.subs:
-            self.visit(n, scope, 0)
-
-    def visitSlice(self, node, scope, assign=0):
-        self.visit(node.expr, scope, 0)
-        if node.lower:
-            self.visit(node.lower, scope, 0)
-        if node.upper:
-            self.visit(node.upper, scope, 0)
-
-    def visitAugAssign(self, node, scope):
-        # If the LHS is a name, then this counts as assignment.
-        # Otherwise, it's just use.
-        self.visit(node.node, scope)
-        if isinstance(node.node, ast.Name):
-            self.visit(node.node, scope, 1) # XXX worry about this
-        self.visit(node.expr, scope)
-
-    # prune if statements if tests are false
-
-    _const_types = types.StringType, types.IntType, types.FloatType
-
-    def visitIf(self, node, scope):
-        for test, body in node.tests:
-            if isinstance(test, ast.Const):
-                if type(test.value) in self._const_types:
-                    if not test.value:
-                        continue
-            self.visit(test, scope)
-            self.visit(body, scope)
-        if node.else_:
-            self.visit(node.else_, scope)
-
-    # a yield statement signals a generator
-
-    def visitYield(self, node, scope):
-        scope.generator = 1
-        self.visit(node.value, scope)
-
-def list_eq(l1, l2):
-    return sorted(l1) == sorted(l2)
-
-if __name__ == "__main__":
-    import sys
-    from compiler import parseFile, walk
-    import symtable
-
-    def get_names(syms):
-        return [s for s in [s.get_name() for s in syms.get_symbols()]
-                if not (s.startswith('_[') or s.startswith('.'))]
-
-    for file in sys.argv[1:]:
-        print file
-        f = open(file)
-        buf = f.read()
-        f.close()
-        syms = symtable.symtable(buf, file, "exec")
-        mod_names = get_names(syms)
-        tree = parseFile(file)
-        s = SymbolVisitor()
-        walk(tree, s)
-
-        # compare module-level symbols
-        names2 = s.scopes[tree].get_names()
-
-        if not list_eq(mod_names, names2):
-            print
-            print "oops", file
-            print sorted(mod_names)
-            print sorted(names2)
-            sys.exit(-1)
-
-        d = {}
-        d.update(s.scopes)
-        del d[tree]
-        scopes = d.values()
-        del d
-
-        for s in syms.get_symbols():
-            if s.is_namespace():
-                l = [sc for sc in scopes
-                     if sc.name == s.get_name()]
-                if len(l) > 1:
-                    print "skipping", s.get_name()
-                else:
-                    if not list_eq(get_names(s.get_namespace()),
-                                   l[0].get_names()):
-                        print s.get_name()
-                        print sorted(get_names(s.get_namespace()))
-                        print sorted(l[0].get_names())
-                        sys.exit(-1)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/syntax.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/syntax.py
deleted file mode 100644
index c38aa01..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/syntax.py
+++ /dev/null
@@ -1,46 +0,0 @@
-"""Check for errs in the AST.
-
-The Python parser does not catch all syntax errors.  Others, like
-assignments with invalid targets, are caught in the code generation
-phase.
-
-The compiler package catches some errors in the transformer module.
-But it seems clearer to write checkers that use the AST to detect
-errors.
-"""
-
-from compiler import ast, walk
-
-def check(tree, multi=None):
-    v = SyntaxErrorChecker(multi)
-    walk(tree, v)
-    return v.errors
-
-class SyntaxErrorChecker:
-    """A visitor to find syntax errors in the AST."""
-
-    def __init__(self, multi=None):
-        """Create new visitor object.
-
-        If optional argument multi is not None, then print messages
-        for each error rather than raising a SyntaxError for the
-        first.
-        """
-        self.multi = multi
-        self.errors = 0
-
-    def error(self, node, msg):
-        self.errors = self.errors + 1
-        if self.multi is not None:
-            print "%s:%s: %s" % (node.filename, node.lineno, msg)
-        else:
-            raise SyntaxError, "%s (%s:%s)" % (msg, node.filename, node.lineno)
-
-    def visitAssign(self, node):
-        # the transformer module handles many of these
-        pass
-##        for target in node.nodes:
-##            if isinstance(target, ast.AssList):
-##                if target.lineno is None:
-##                    target.lineno = node.lineno
-##                self.error(target, "can't assign to list comprehension")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/transformer.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/transformer.py
deleted file mode 100644
index 55271fc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/transformer.py
+++ /dev/null
@@ -1,1535 +0,0 @@
-"""Parse tree transformation module.
-
-Transforms Python source code into an abstract syntax tree (AST)
-defined in the ast module.
-
-The simplest ways to invoke this module are via parse and parseFile.
-parse(buf) -> AST
-parseFile(path) -> AST
-"""
-
-# Original version written by Greg Stein (gstein@lyra.org)
-#                         and Bill Tutt (rassilon@lima.mudlib.org)
-# February 1997.
-#
-# Modifications and improvements for Python 2.0 by Jeremy Hylton and
-# Mark Hammond
-#
-# Some fixes to try to have correct line number on almost all nodes
-# (except Module, Discard and Stmt) added by Sylvain Thenault
-#
-# Portions of this file are:
-# Copyright (C) 1997-1998 Greg Stein. All Rights Reserved.
-#
-# This module is provided under a BSD-ish license. See
-#   http://www.opensource.org/licenses/bsd-license.html
-# and replace OWNER, ORGANIZATION, and YEAR as appropriate.
-
-from compiler.ast import *
-import parser
-import symbol
-import token
-
-class WalkerError(StandardError):
-    pass
-
-from compiler.consts import CO_VARARGS, CO_VARKEYWORDS
-from compiler.consts import OP_ASSIGN, OP_DELETE, OP_APPLY
-
-def parseFile(path):
-    f = open(path, "U")
-    # XXX The parser API tolerates files without a trailing newline,
-    # but not strings without a trailing newline.  Always add an extra
-    # newline to the file contents, since we're going through the string
-    # version of the API.
-    src = f.read() + "\n"
-    f.close()
-    return parse(src)
-
-def parse(buf, mode="exec"):
-    if mode == "exec" or mode == "single":
-        return Transformer().parsesuite(buf)
-    elif mode == "eval":
-        return Transformer().parseexpr(buf)
-    else:
-        raise ValueError("compile() arg 3 must be"
-                         " 'exec' or 'eval' or 'single'")
-
-def asList(nodes):
-    l = []
-    for item in nodes:
-        if hasattr(item, "asList"):
-            l.append(item.asList())
-        else:
-            if type(item) is type( (None, None) ):
-                l.append(tuple(asList(item)))
-            elif type(item) is type( [] ):
-                l.append(asList(item))
-            else:
-                l.append(item)
-    return l
-
-def extractLineNo(ast):
-    if not isinstance(ast[1], tuple):
-        # get a terminal node
-        return ast[2]
-    for child in ast[1:]:
-        if isinstance(child, tuple):
-            lineno = extractLineNo(child)
-            if lineno is not None:
-                return lineno
-
-def Node(*args):
-    kind = args[0]
-    if kind in nodes:
-        try:
-            return nodes[kind](*args[1:])
-        except TypeError:
-            print nodes[kind], len(args), args
-            raise
-    else:
-        raise WalkerError, "Can't find appropriate Node type: %s" % str(args)
-        #return apply(ast.Node, args)
-
-class Transformer:
-    """Utility object for transforming Python parse trees.
-
-    Exposes the following methods:
-        tree = transform(ast_tree)
-        tree = parsesuite(text)
-        tree = parseexpr(text)
-        tree = parsefile(fileob | filename)
-    """
-
-    def __init__(self):
-        self._dispatch = {}
-        for value, name in symbol.sym_name.items():
-            if hasattr(self, name):
-                self._dispatch[value] = getattr(self, name)
-        self._dispatch[token.NEWLINE] = self.com_NEWLINE
-        self._atom_dispatch = {token.LPAR: self.atom_lpar,
-                               token.LSQB: self.atom_lsqb,
-                               token.LBRACE: self.atom_lbrace,
-                               token.BACKQUOTE: self.atom_backquote,
-                               token.NUMBER: self.atom_number,
-                               token.STRING: self.atom_string,
-                               token.NAME: self.atom_name,
-                               }
-        self.encoding = None
-
-    def transform(self, tree):
-        """Transform an AST into a modified parse tree."""
-        if not (isinstance(tree, tuple) or isinstance(tree, list)):
-            tree = parser.st2tuple(tree, line_info=1)
-        return self.compile_node(tree)
-
-    def parsesuite(self, text):
-        """Return a modified parse tree for the given suite text."""
-        return self.transform(parser.suite(text))
-
-    def parseexpr(self, text):
-        """Return a modified parse tree for the given expression text."""
-        return self.transform(parser.expr(text))
-
-    def parsefile(self, file):
-        """Return a modified parse tree for the contents of the given file."""
-        if type(file) == type(''):
-            file = open(file)
-        return self.parsesuite(file.read())
-
-    # --------------------------------------------------------------
-    #
-    # PRIVATE METHODS
-    #
-
-    def compile_node(self, node):
-        ### emit a line-number node?
-        n = node[0]
-
-        if n == symbol.encoding_decl:
-            self.encoding = node[2]
-            node = node[1]
-            n = node[0]
-
-        if n == symbol.single_input:
-            return self.single_input(node[1:])
-        if n == symbol.file_input:
-            return self.file_input(node[1:])
-        if n == symbol.eval_input:
-            return self.eval_input(node[1:])
-        if n == symbol.lambdef:
-            return self.lambdef(node[1:])
-        if n == symbol.funcdef:
-            return self.funcdef(node[1:])
-        if n == symbol.classdef:
-            return self.classdef(node[1:])
-
-        raise WalkerError, ('unexpected node type', n)
-
-    def single_input(self, node):
-        ### do we want to do anything about being "interactive" ?
-
-        # NEWLINE | simple_stmt | compound_stmt NEWLINE
-        n = node[0][0]
-        if n != token.NEWLINE:
-            return self.com_stmt(node[0])
-
-        return Pass()
-
-    def file_input(self, nodelist):
-        doc = self.get_docstring(nodelist, symbol.file_input)
-        if doc is not None:
-            i = 1
-        else:
-            i = 0
-        stmts = []
-        for node in nodelist[i:]:
-            if node[0] != token.ENDMARKER and node[0] != token.NEWLINE:
-                self.com_append_stmt(stmts, node)
-        return Module(doc, Stmt(stmts))
-
-    def eval_input(self, nodelist):
-        # from the built-in function input()
-        ### is this sufficient?
-        return Expression(self.com_node(nodelist[0]))
-
-    def decorator_name(self, nodelist):
-        listlen = len(nodelist)
-        assert listlen >= 1 and listlen % 2 == 1
-
-        item = self.atom_name(nodelist)
-        i = 1
-        while i < listlen:
-            assert nodelist[i][0] == token.DOT
-            assert nodelist[i + 1][0] == token.NAME
-            item = Getattr(item, nodelist[i + 1][1])
-            i += 2
-
-        return item
-
-    def decorator(self, nodelist):
-        # '@' dotted_name [ '(' [arglist] ')' ]
-        assert len(nodelist) in (3, 5, 6)
-        assert nodelist[0][0] == token.AT
-        assert nodelist[-1][0] == token.NEWLINE
-
-        assert nodelist[1][0] == symbol.dotted_name
-        funcname = self.decorator_name(nodelist[1][1:])
-
-        if len(nodelist) > 3:
-            assert nodelist[2][0] == token.LPAR
-            expr = self.com_call_function(funcname, nodelist[3])
-        else:
-            expr = funcname
-
-        return expr
-
-    def decorators(self, nodelist):
-        # decorators: decorator ([NEWLINE] decorator)* NEWLINE
-        items = []
-        for dec_nodelist in nodelist:
-            assert dec_nodelist[0] == symbol.decorator
-            items.append(self.decorator(dec_nodelist[1:]))
-        return Decorators(items)
-
-    def decorated(self, nodelist):
-        assert nodelist[0][0] == symbol.decorators
-        if nodelist[1][0] == symbol.funcdef:
-            n = [nodelist[0]] + list(nodelist[1][1:])
-            return self.funcdef(n)
-        elif nodelist[1][0] == symbol.classdef:
-            decorators = self.decorators(nodelist[0][1:])
-            cls = self.classdef(nodelist[1][1:])
-            cls.decorators = decorators
-            return cls
-        raise WalkerError()
-
-    def funcdef(self, nodelist):
-        #                    -6   -5    -4         -3  -2    -1
-        # funcdef: [decorators] 'def' NAME parameters ':' suite
-        # parameters: '(' [varargslist] ')'
-
-        if len(nodelist) == 6:
-            assert nodelist[0][0] == symbol.decorators
-            decorators = self.decorators(nodelist[0][1:])
-        else:
-            assert len(nodelist) == 5
-            decorators = None
-
-        lineno = nodelist[-4][2]
-        name = nodelist[-4][1]
-        args = nodelist[-3][2]
-
-        if args[0] == symbol.varargslist:
-            names, defaults, flags = self.com_arglist(args[1:])
-        else:
-            names = defaults = ()
-            flags = 0
-        doc = self.get_docstring(nodelist[-1])
-
-        # code for function
-        code = self.com_node(nodelist[-1])
-
-        if doc is not None:
-            assert isinstance(code, Stmt)
-            assert isinstance(code.nodes[0], Discard)
-            del code.nodes[0]
-        return Function(decorators, name, names, defaults, flags, doc, code,
-                     lineno=lineno)
-
-    def lambdef(self, nodelist):
-        # lambdef: 'lambda' [varargslist] ':' test
-        if nodelist[2][0] == symbol.varargslist:
-            names, defaults, flags = self.com_arglist(nodelist[2][1:])
-        else:
-            names = defaults = ()
-            flags = 0
-
-        # code for lambda
-        code = self.com_node(nodelist[-1])
-
-        return Lambda(names, defaults, flags, code, lineno=nodelist[1][2])
-    old_lambdef = lambdef
-
-    def classdef(self, nodelist):
-        # classdef: 'class' NAME ['(' [testlist] ')'] ':' suite
-
-        name = nodelist[1][1]
-        doc = self.get_docstring(nodelist[-1])
-        if nodelist[2][0] == token.COLON:
-            bases = []
-        elif nodelist[3][0] == token.RPAR:
-            bases = []
-        else:
-            bases = self.com_bases(nodelist[3])
-
-        # code for class
-        code = self.com_node(nodelist[-1])
-
-        if doc is not None:
-            assert isinstance(code, Stmt)
-            assert isinstance(code.nodes[0], Discard)
-            del code.nodes[0]
-
-        return Class(name, bases, doc, code, lineno=nodelist[1][2])
-
-    def stmt(self, nodelist):
-        return self.com_stmt(nodelist[0])
-
-    small_stmt = stmt
-    flow_stmt = stmt
-    compound_stmt = stmt
-
-    def simple_stmt(self, nodelist):
-        # small_stmt (';' small_stmt)* [';'] NEWLINE
-        stmts = []
-        for i in range(0, len(nodelist), 2):
-            self.com_append_stmt(stmts, nodelist[i])
-        return Stmt(stmts)
-
-    def parameters(self, nodelist):
-        raise WalkerError
-
-    def varargslist(self, nodelist):
-        raise WalkerError
-
-    def fpdef(self, nodelist):
-        raise WalkerError
-
-    def fplist(self, nodelist):
-        raise WalkerError
-
-    def dotted_name(self, nodelist):
-        raise WalkerError
-
-    def comp_op(self, nodelist):
-        raise WalkerError
-
-    def trailer(self, nodelist):
-        raise WalkerError
-
-    def sliceop(self, nodelist):
-        raise WalkerError
-
-    def argument(self, nodelist):
-        raise WalkerError
-
-    # --------------------------------------------------------------
-    #
-    # STATEMENT NODES  (invoked by com_node())
-    #
-
-    def expr_stmt(self, nodelist):
-        # augassign testlist | testlist ('=' testlist)*
-        en = nodelist[-1]
-        exprNode = self.lookup_node(en)(en[1:])
-        if len(nodelist) == 1:
-            return Discard(exprNode, lineno=exprNode.lineno)
-        if nodelist[1][0] == token.EQUAL:
-            nodesl = []
-            for i in range(0, len(nodelist) - 2, 2):
-                nodesl.append(self.com_assign(nodelist[i], OP_ASSIGN))
-            return Assign(nodesl, exprNode, lineno=nodelist[1][2])
-        else:
-            lval = self.com_augassign(nodelist[0])
-            op = self.com_augassign_op(nodelist[1])
-            return AugAssign(lval, op[1], exprNode, lineno=op[2])
-        raise WalkerError, "can't get here"
-
-    def print_stmt(self, nodelist):
-        # print ([ test (',' test)* [','] ] | '>>' test [ (',' test)+ [','] ])
-        items = []
-        if len(nodelist) == 1:
-            start = 1
-            dest = None
-        elif nodelist[1][0] == token.RIGHTSHIFT:
-            assert len(nodelist) == 3 \
-                   or nodelist[3][0] == token.COMMA
-            dest = self.com_node(nodelist[2])
-            start = 4
-        else:
-            dest = None
-            start = 1
-        for i in range(start, len(nodelist), 2):
-            items.append(self.com_node(nodelist[i]))
-        if nodelist[-1][0] == token.COMMA:
-            return Print(items, dest, lineno=nodelist[0][2])
-        return Printnl(items, dest, lineno=nodelist[0][2])
-
-    def del_stmt(self, nodelist):
-        return self.com_assign(nodelist[1], OP_DELETE)
-
-    def pass_stmt(self, nodelist):
-        return Pass(lineno=nodelist[0][2])
-
-    def break_stmt(self, nodelist):
-        return Break(lineno=nodelist[0][2])
-
-    def continue_stmt(self, nodelist):
-        return Continue(lineno=nodelist[0][2])
-
-    def return_stmt(self, nodelist):
-        # return: [testlist]
-        if len(nodelist) < 2:
-            return Return(Const(None), lineno=nodelist[0][2])
-        return Return(self.com_node(nodelist[1]), lineno=nodelist[0][2])
-
-    def yield_stmt(self, nodelist):
-        expr = self.com_node(nodelist[0])
-        return Discard(expr, lineno=expr.lineno)
-
-    def yield_expr(self, nodelist):
-        if len(nodelist) > 1:
-            value = self.com_node(nodelist[1])
-        else:
-            value = Const(None)
-        return Yield(value, lineno=nodelist[0][2])
-
-    def raise_stmt(self, nodelist):
-        # raise: [test [',' test [',' test]]]
-        if len(nodelist) > 5:
-            expr3 = self.com_node(nodelist[5])
-        else:
-            expr3 = None
-        if len(nodelist) > 3:
-            expr2 = self.com_node(nodelist[3])
-        else:
-            expr2 = None
-        if len(nodelist) > 1:
-            expr1 = self.com_node(nodelist[1])
-        else:
-            expr1 = None
-        return Raise(expr1, expr2, expr3, lineno=nodelist[0][2])
-
-    def import_stmt(self, nodelist):
-        # import_stmt: import_name | import_from
-        assert len(nodelist) == 1
-        return self.com_node(nodelist[0])
-
-    def import_name(self, nodelist):
-        # import_name: 'import' dotted_as_names
-        return Import(self.com_dotted_as_names(nodelist[1]),
-                      lineno=nodelist[0][2])
-
-    def import_from(self, nodelist):
-        # import_from: 'from' ('.'* dotted_name | '.') 'import' ('*' |
-        #    '(' import_as_names ')' | import_as_names)
-        assert nodelist[0][1] == 'from'
-        idx = 1
-        while nodelist[idx][1] == '.':
-            idx += 1
-        level = idx - 1
-        if nodelist[idx][0] == symbol.dotted_name:
-            fromname = self.com_dotted_name(nodelist[idx])
-            idx += 1
-        else:
-            fromname = ""
-        assert nodelist[idx][1] == 'import'
-        if nodelist[idx + 1][0] == token.STAR:
-            return From(fromname, [('*', None)], level,
-                        lineno=nodelist[0][2])
-        else:
-            node = nodelist[idx + 1 + (nodelist[idx + 1][0] == token.LPAR)]
-            return From(fromname, self.com_import_as_names(node), level,
-                        lineno=nodelist[0][2])
-
-    def global_stmt(self, nodelist):
-        # global: NAME (',' NAME)*
-        names = []
-        for i in range(1, len(nodelist), 2):
-            names.append(nodelist[i][1])
-        return Global(names, lineno=nodelist[0][2])
-
-    def exec_stmt(self, nodelist):
-        # exec_stmt: 'exec' expr ['in' expr [',' expr]]
-        expr1 = self.com_node(nodelist[1])
-        if len(nodelist) >= 4:
-            expr2 = self.com_node(nodelist[3])
-            if len(nodelist) >= 6:
-                expr3 = self.com_node(nodelist[5])
-            else:
-                expr3 = None
-        else:
-            expr2 = expr3 = None
-
-        return Exec(expr1, expr2, expr3, lineno=nodelist[0][2])
-
-    def assert_stmt(self, nodelist):
-        # 'assert': test, [',' test]
-        expr1 = self.com_node(nodelist[1])
-        if (len(nodelist) == 4):
-            expr2 = self.com_node(nodelist[3])
-        else:
-            expr2 = None
-        return Assert(expr1, expr2, lineno=nodelist[0][2])
-
-    def if_stmt(self, nodelist):
-        # if: test ':' suite ('elif' test ':' suite)* ['else' ':' suite]
-        tests = []
-        for i in range(0, len(nodelist) - 3, 4):
-            testNode = self.com_node(nodelist[i + 1])
-            suiteNode = self.com_node(nodelist[i + 3])
-            tests.append((testNode, suiteNode))
-
-        if len(nodelist) % 4 == 3:
-            elseNode = self.com_node(nodelist[-1])
-##      elseNode.lineno = nodelist[-1][1][2]
-        else:
-            elseNode = None
-        return If(tests, elseNode, lineno=nodelist[0][2])
-
-    def while_stmt(self, nodelist):
-        # 'while' test ':' suite ['else' ':' suite]
-
-        testNode = self.com_node(nodelist[1])
-        bodyNode = self.com_node(nodelist[3])
-
-        if len(nodelist) > 4:
-            elseNode = self.com_node(nodelist[6])
-        else:
-            elseNode = None
-
-        return While(testNode, bodyNode, elseNode, lineno=nodelist[0][2])
-
-    def for_stmt(self, nodelist):
-        # 'for' exprlist 'in' exprlist ':' suite ['else' ':' suite]
-
-        assignNode = self.com_assign(nodelist[1], OP_ASSIGN)
-        listNode = self.com_node(nodelist[3])
-        bodyNode = self.com_node(nodelist[5])
-
-        if len(nodelist) > 8:
-            elseNode = self.com_node(nodelist[8])
-        else:
-            elseNode = None
-
-        return For(assignNode, listNode, bodyNode, elseNode,
-                   lineno=nodelist[0][2])
-
-    def try_stmt(self, nodelist):
-        return self.com_try_except_finally(nodelist)
-
-    def with_stmt(self, nodelist):
-        return self.com_with(nodelist)
-
-    def with_var(self, nodelist):
-        return self.com_with_var(nodelist)
-
-    def suite(self, nodelist):
-        # simple_stmt | NEWLINE INDENT NEWLINE* (stmt NEWLINE*)+ DEDENT
-        if len(nodelist) == 1:
-            return self.com_stmt(nodelist[0])
-
-        stmts = []
-        for node in nodelist:
-            if node[0] == symbol.stmt:
-                self.com_append_stmt(stmts, node)
-        return Stmt(stmts)
-
-    # --------------------------------------------------------------
-    #
-    # EXPRESSION NODES  (invoked by com_node())
-    #
-
-    def testlist(self, nodelist):
-        # testlist: expr (',' expr)* [',']
-        # testlist_safe: test [(',' test)+ [',']]
-        # exprlist: expr (',' expr)* [',']
-        return self.com_binary(Tuple, nodelist)
-
-    testlist_safe = testlist # XXX
-    testlist1 = testlist
-    exprlist = testlist
-
-    def testlist_comp(self, nodelist):
-        # test ( comp_for | (',' test)* [','] )
-        assert nodelist[0][0] == symbol.test
-        if len(nodelist) == 2 and nodelist[1][0] == symbol.comp_for:
-            test = self.com_node(nodelist[0])
-            return self.com_generator_expression(test, nodelist[1])
-        return self.testlist(nodelist)
-
-    def test(self, nodelist):
-        # or_test ['if' or_test 'else' test] | lambdef
-        if len(nodelist) == 1 and nodelist[0][0] == symbol.lambdef:
-            return self.lambdef(nodelist[0])
-        then = self.com_node(nodelist[0])
-        if len(nodelist) > 1:
-            assert len(nodelist) == 5
-            assert nodelist[1][1] == 'if'
-            assert nodelist[3][1] == 'else'
-            test = self.com_node(nodelist[2])
-            else_ = self.com_node(nodelist[4])
-            return IfExp(test, then, else_, lineno=nodelist[1][2])
-        return then
-
-    def or_test(self, nodelist):
-        # and_test ('or' and_test)* | lambdef
-        if len(nodelist) == 1 and nodelist[0][0] == symbol.lambdef:
-            return self.lambdef(nodelist[0])
-        return self.com_binary(Or, nodelist)
-    old_test = or_test
-
-    def and_test(self, nodelist):
-        # not_test ('and' not_test)*
-        return self.com_binary(And, nodelist)
-
-    def not_test(self, nodelist):
-        # 'not' not_test | comparison
-        result = self.com_node(nodelist[-1])
-        if len(nodelist) == 2:
-            return Not(result, lineno=nodelist[0][2])
-        return result
-
-    def comparison(self, nodelist):
-        # comparison: expr (comp_op expr)*
-        node = self.com_node(nodelist[0])
-        if len(nodelist) == 1:
-            return node
-
-        results = []
-        for i in range(2, len(nodelist), 2):
-            nl = nodelist[i-1]
-
-            # comp_op: '<' | '>' | '=' | '>=' | '<=' | '<>' | '!=' | '=='
-            #          | 'in' | 'not' 'in' | 'is' | 'is' 'not'
-            n = nl[1]
-            if n[0] == token.NAME:
-                type = n[1]
-                if len(nl) == 3:
-                    if type == 'not':
-                        type = 'not in'
-                    else:
-                        type = 'is not'
-            else:
-                type = _cmp_types[n[0]]
-
-            lineno = nl[1][2]
-            results.append((type, self.com_node(nodelist[i])))
-
-        # we need a special "compare" node so that we can distinguish
-        #   3 < x < 5   from    (3 < x) < 5
-        # the two have very different semantics and results (note that the
-        # latter form is always true)
-
-        return Compare(node, results, lineno=lineno)
-
-    def expr(self, nodelist):
-        # xor_expr ('|' xor_expr)*
-        return self.com_binary(Bitor, nodelist)
-
-    def xor_expr(self, nodelist):
-        # xor_expr ('^' xor_expr)*
-        return self.com_binary(Bitxor, nodelist)
-
-    def and_expr(self, nodelist):
-        # xor_expr ('&' xor_expr)*
-        return self.com_binary(Bitand, nodelist)
-
-    def shift_expr(self, nodelist):
-        # shift_expr ('<<'|'>>' shift_expr)*
-        node = self.com_node(nodelist[0])
-        for i in range(2, len(nodelist), 2):
-            right = self.com_node(nodelist[i])
-            if nodelist[i-1][0] == token.LEFTSHIFT:
-                node = LeftShift([node, right], lineno=nodelist[1][2])
-            elif nodelist[i-1][0] == token.RIGHTSHIFT:
-                node = RightShift([node, right], lineno=nodelist[1][2])
-            else:
-                raise ValueError, "unexpected token: %s" % nodelist[i-1][0]
-        return node
-
-    def arith_expr(self, nodelist):
-        node = self.com_node(nodelist[0])
-        for i in range(2, len(nodelist), 2):
-            right = self.com_node(nodelist[i])
-            if nodelist[i-1][0] == token.PLUS:
-                node = Add([node, right], lineno=nodelist[1][2])
-            elif nodelist[i-1][0] == token.MINUS:
-                node = Sub([node, right], lineno=nodelist[1][2])
-            else:
-                raise ValueError, "unexpected token: %s" % nodelist[i-1][0]
-        return node
-
-    def term(self, nodelist):
-        node = self.com_node(nodelist[0])
-        for i in range(2, len(nodelist), 2):
-            right = self.com_node(nodelist[i])
-            t = nodelist[i-1][0]
-            if t == token.STAR:
-                node = Mul([node, right])
-            elif t == token.SLASH:
-                node = Div([node, right])
-            elif t == token.PERCENT:
-                node = Mod([node, right])
-            elif t == token.DOUBLESLASH:
-                node = FloorDiv([node, right])
-            else:
-                raise ValueError, "unexpected token: %s" % t
-            node.lineno = nodelist[1][2]
-        return node
-
-    def factor(self, nodelist):
-        elt = nodelist[0]
-        t = elt[0]
-        node = self.lookup_node(nodelist[-1])(nodelist[-1][1:])
-        # need to handle (unary op)constant here...
-        if t == token.PLUS:
-            return UnaryAdd(node, lineno=elt[2])
-        elif t == token.MINUS:
-            return UnarySub(node, lineno=elt[2])
-        elif t == token.TILDE:
-            node = Invert(node, lineno=elt[2])
-        return node
-
-    def power(self, nodelist):
-        # power: atom trailer* ('**' factor)*
-        node = self.com_node(nodelist[0])
-        for i in range(1, len(nodelist)):
-            elt = nodelist[i]
-            if elt[0] == token.DOUBLESTAR:
-                return Power([node, self.com_node(nodelist[i+1])],
-                             lineno=elt[2])
-
-            node = self.com_apply_trailer(node, elt)
-
-        return node
-
-    def atom(self, nodelist):
-        return self._atom_dispatch[nodelist[0][0]](nodelist)
-
-    def atom_lpar(self, nodelist):
-        if nodelist[1][0] == token.RPAR:
-            return Tuple((), lineno=nodelist[0][2])
-        return self.com_node(nodelist[1])
-
-    def atom_lsqb(self, nodelist):
-        if nodelist[1][0] == token.RSQB:
-            return List((), lineno=nodelist[0][2])
-        return self.com_list_constructor(nodelist[1])
-
-    def atom_lbrace(self, nodelist):
-        if nodelist[1][0] == token.RBRACE:
-            return Dict((), lineno=nodelist[0][2])
-        return self.com_dictorsetmaker(nodelist[1])
-
-    def atom_backquote(self, nodelist):
-        return Backquote(self.com_node(nodelist[1]))
-
-    def atom_number(self, nodelist):
-        ### need to verify this matches compile.c
-        k = eval(nodelist[0][1])
-        return Const(k, lineno=nodelist[0][2])
-
-    def decode_literal(self, lit):
-        if self.encoding:
-            # this is particularly fragile & a bit of a
-            # hack... changes in compile.c:parsestr and
-            # tokenizer.c must be reflected here.
-            if self.encoding not in ['utf-8', 'iso-8859-1']:
-                lit = unicode(lit, 'utf-8').encode(self.encoding)
-            return eval("# coding: %s\n%s" % (self.encoding, lit))
-        else:
-            return eval(lit)
-
-    def atom_string(self, nodelist):
-        k = ''
-        for node in nodelist:
-            k += self.decode_literal(node[1])
-        return Const(k, lineno=nodelist[0][2])
-
-    def atom_name(self, nodelist):
-        return Name(nodelist[0][1], lineno=nodelist[0][2])
-
-    # --------------------------------------------------------------
-    #
-    # INTERNAL PARSING UTILITIES
-    #
-
-    # The use of com_node() introduces a lot of extra stack frames,
-    # enough to cause a stack overflow compiling test.test_parser with
-    # the standard interpreter recursionlimit.  The com_node() is a
-    # convenience function that hides the dispatch details, but comes
-    # at a very high cost.  It is more efficient to dispatch directly
-    # in the callers.  In these cases, use lookup_node() and call the
-    # dispatched node directly.
-
-    def lookup_node(self, node):
-        return self._dispatch[node[0]]
-
-    def com_node(self, node):
-        # Note: compile.c has handling in com_node for del_stmt, pass_stmt,
-        #       break_stmt, stmt, small_stmt, flow_stmt, simple_stmt,
-        #       and compound_stmt.
-        #       We'll just dispatch them.
-        return self._dispatch[node[0]](node[1:])
-
-    def com_NEWLINE(self, *args):
-        # A ';' at the end of a line can make a NEWLINE token appear
-        # here, Render it harmless. (genc discards ('discard',
-        # ('const', xxxx)) Nodes)
-        return Discard(Const(None))
-
-    def com_arglist(self, nodelist):
-        # varargslist:
-        #     (fpdef ['=' test] ',')* ('*' NAME [',' '**' NAME] | '**' NAME)
-        #   | fpdef ['=' test] (',' fpdef ['=' test])* [',']
-        # fpdef: NAME | '(' fplist ')'
-        # fplist: fpdef (',' fpdef)* [',']
-        names = []
-        defaults = []
-        flags = 0
-
-        i = 0
-        while i < len(nodelist):
-            node = nodelist[i]
-            if node[0] == token.STAR or node[0] == token.DOUBLESTAR:
-                if node[0] == token.STAR:
-                    node = nodelist[i+1]
-                    if node[0] == token.NAME:
-                        names.append(node[1])
-                        flags = flags | CO_VARARGS
-                        i = i + 3
-
-                if i < len(nodelist):
-                    # should be DOUBLESTAR
-                    t = nodelist[i][0]
-                    if t == token.DOUBLESTAR:
-                        node = nodelist[i+1]
-                    else:
-                        raise ValueError, "unexpected token: %s" % t
-                    names.append(node[1])
-                    flags = flags | CO_VARKEYWORDS
-
-                break
-
-            # fpdef: NAME | '(' fplist ')'
-            names.append(self.com_fpdef(node))
-
-            i = i + 1
-            if i < len(nodelist) and nodelist[i][0] == token.EQUAL:
-                defaults.append(self.com_node(nodelist[i + 1]))
-                i = i + 2
-            elif len(defaults):
-                # we have already seen an argument with default, but here
-                # came one without
-                raise SyntaxError, "non-default argument follows default argument"
-
-            # skip the comma
-            i = i + 1
-
-        return names, defaults, flags
-
-    def com_fpdef(self, node):
-        # fpdef: NAME | '(' fplist ')'
-        if node[1][0] == token.LPAR:
-            return self.com_fplist(node[2])
-        return node[1][1]
-
-    def com_fplist(self, node):
-        # fplist: fpdef (',' fpdef)* [',']
-        if len(node) == 2:
-            return self.com_fpdef(node[1])
-        list = []
-        for i in range(1, len(node), 2):
-            list.append(self.com_fpdef(node[i]))
-        return tuple(list)
-
-    def com_dotted_name(self, node):
-        # String together the dotted names and return the string
-        name = ""
-        for n in node:
-            if type(n) == type(()) and n[0] == 1:
-                name = name + n[1] + '.'
-        return name[:-1]
-
-    def com_dotted_as_name(self, node):
-        assert node[0] == symbol.dotted_as_name
-        node = node[1:]
-        dot = self.com_dotted_name(node[0][1:])
-        if len(node) == 1:
-            return dot, None
-        assert node[1][1] == 'as'
-        assert node[2][0] == token.NAME
-        return dot, node[2][1]
-
-    def com_dotted_as_names(self, node):
-        assert node[0] == symbol.dotted_as_names
-        node = node[1:]
-        names = [self.com_dotted_as_name(node[0])]
-        for i in range(2, len(node), 2):
-            names.append(self.com_dotted_as_name(node[i]))
-        return names
-
-    def com_import_as_name(self, node):
-        assert node[0] == symbol.import_as_name
-        node = node[1:]
-        assert node[0][0] == token.NAME
-        if len(node) == 1:
-            return node[0][1], None
-        assert node[1][1] == 'as', node
-        assert node[2][0] == token.NAME
-        return node[0][1], node[2][1]
-
-    def com_import_as_names(self, node):
-        assert node[0] == symbol.import_as_names
-        node = node[1:]
-        names = [self.com_import_as_name(node[0])]
-        for i in range(2, len(node), 2):
-            names.append(self.com_import_as_name(node[i]))
-        return names
-
-    def com_bases(self, node):
-        bases = []
-        for i in range(1, len(node), 2):
-            bases.append(self.com_node(node[i]))
-        return bases
-
-    def com_try_except_finally(self, nodelist):
-        # ('try' ':' suite
-        #  ((except_clause ':' suite)+ ['else' ':' suite] ['finally' ':' suite]
-        #   | 'finally' ':' suite))
-
-        if nodelist[3][0] == token.NAME:
-            # first clause is a finally clause: only try-finally
-            return TryFinally(self.com_node(nodelist[2]),
-                              self.com_node(nodelist[5]),
-                              lineno=nodelist[0][2])
-
-        #tryexcept:  [TryNode, [except_clauses], elseNode)]
-        clauses = []
-        elseNode = None
-        finallyNode = None
-        for i in range(3, len(nodelist), 3):
-            node = nodelist[i]
-            if node[0] == symbol.except_clause:
-                # except_clause: 'except' [expr [(',' | 'as') expr]] */
-                if len(node) > 2:
-                    expr1 = self.com_node(node[2])
-                    if len(node) > 4:
-                        expr2 = self.com_assign(node[4], OP_ASSIGN)
-                    else:
-                        expr2 = None
-                else:
-                    expr1 = expr2 = None
-                clauses.append((expr1, expr2, self.com_node(nodelist[i+2])))
-
-            if node[0] == token.NAME:
-                if node[1] == 'else':
-                    elseNode = self.com_node(nodelist[i+2])
-                elif node[1] == 'finally':
-                    finallyNode = self.com_node(nodelist[i+2])
-        try_except = TryExcept(self.com_node(nodelist[2]), clauses, elseNode,
-                               lineno=nodelist[0][2])
-        if finallyNode:
-            return TryFinally(try_except, finallyNode, lineno=nodelist[0][2])
-        else:
-            return try_except
-
-    def com_with(self, nodelist):
-        # with_stmt: 'with' with_item (',' with_item)* ':' suite
-        body = self.com_node(nodelist[-1])
-        for i in range(len(nodelist) - 3, 0, -2):
-            ret = self.com_with_item(nodelist[i], body, nodelist[0][2])
-            if i == 1:
-                return ret
-            body = ret
-
-    def com_with_item(self, nodelist, body, lineno):
-        # with_item: test ['as' expr]
-        if len(nodelist) == 4:
-            var = self.com_assign(nodelist[3], OP_ASSIGN)
-        else:
-            var = None
-        expr = self.com_node(nodelist[1])
-        return With(expr, var, body, lineno=lineno)
-
-    def com_augassign_op(self, node):
-        assert node[0] == symbol.augassign
-        return node[1]
-
-    def com_augassign(self, node):
-        """Return node suitable for lvalue of augmented assignment
-
-        Names, slices, and attributes are the only allowable nodes.
-        """
-        l = self.com_node(node)
-        if l.__class__ in (Name, Slice, Subscript, Getattr):
-            return l
-        raise SyntaxError, "can't assign to %s" % l.__class__.__name__
-
-    def com_assign(self, node, assigning):
-        # return a node suitable for use as an "lvalue"
-        # loop to avoid trivial recursion
-        while 1:
-            t = node[0]
-            if t in (symbol.exprlist, symbol.testlist, symbol.testlist_safe, symbol.testlist_comp):
-                if len(node) > 2:
-                    return self.com_assign_tuple(node, assigning)
-                node = node[1]
-            elif t in _assign_types:
-                if len(node) > 2:
-                    raise SyntaxError, "can't assign to operator"
-                node = node[1]
-            elif t == symbol.power:
-                if node[1][0] != symbol.atom:
-                    raise SyntaxError, "can't assign to operator"
-                if len(node) > 2:
-                    primary = self.com_node(node[1])
-                    for i in range(2, len(node)-1):
-                        ch = node[i]
-                        if ch[0] == token.DOUBLESTAR:
-                            raise SyntaxError, "can't assign to operator"
-                        primary = self.com_apply_trailer(primary, ch)
-                    return self.com_assign_trailer(primary, node[-1],
-                                                   assigning)
-                node = node[1]
-            elif t == symbol.atom:
-                t = node[1][0]
-                if t == token.LPAR:
-                    node = node[2]
-                    if node[0] == token.RPAR:
-                        raise SyntaxError, "can't assign to ()"
-                elif t == token.LSQB:
-                    node = node[2]
-                    if node[0] == token.RSQB:
-                        raise SyntaxError, "can't assign to []"
-                    return self.com_assign_list(node, assigning)
-                elif t == token.NAME:
-                    return self.com_assign_name(node[1], assigning)
-                else:
-                    raise SyntaxError, "can't assign to literal"
-            else:
-                raise SyntaxError, "bad assignment (%s)" % t
-
-    def com_assign_tuple(self, node, assigning):
-        assigns = []
-        for i in range(1, len(node), 2):
-            assigns.append(self.com_assign(node[i], assigning))
-        return AssTuple(assigns, lineno=extractLineNo(node))
-
-    def com_assign_list(self, node, assigning):
-        assigns = []
-        for i in range(1, len(node), 2):
-            if i + 1 < len(node):
-                if node[i + 1][0] == symbol.list_for:
-                    raise SyntaxError, "can't assign to list comprehension"
-                assert node[i + 1][0] == token.COMMA, node[i + 1]
-            assigns.append(self.com_assign(node[i], assigning))
-        return AssList(assigns, lineno=extractLineNo(node))
-
-    def com_assign_name(self, node, assigning):
-        return AssName(node[1], assigning, lineno=node[2])
-
-    def com_assign_trailer(self, primary, node, assigning):
-        t = node[1][0]
-        if t == token.DOT:
-            return self.com_assign_attr(primary, node[2], assigning)
-        if t == token.LSQB:
-            return self.com_subscriptlist(primary, node[2], assigning)
-        if t == token.LPAR:
-            raise SyntaxError, "can't assign to function call"
-        raise SyntaxError, "unknown trailer type: %s" % t
-
-    def com_assign_attr(self, primary, node, assigning):
-        return AssAttr(primary, node[1], assigning, lineno=node[-1])
-
-    def com_binary(self, constructor, nodelist):
-        "Compile 'NODE (OP NODE)*' into (type, [ node1, ..., nodeN ])."
-        l = len(nodelist)
-        if l == 1:
-            n = nodelist[0]
-            return self.lookup_node(n)(n[1:])
-        items = []
-        for i in range(0, l, 2):
-            n = nodelist[i]
-            items.append(self.lookup_node(n)(n[1:]))
-        return constructor(items, lineno=extractLineNo(nodelist))
-
-    def com_stmt(self, node):
-        result = self.lookup_node(node)(node[1:])
-        assert result is not None
-        if isinstance(result, Stmt):
-            return result
-        return Stmt([result])
-
-    def com_append_stmt(self, stmts, node):
-        result = self.lookup_node(node)(node[1:])
-        assert result is not None
-        if isinstance(result, Stmt):
-            stmts.extend(result.nodes)
-        else:
-            stmts.append(result)
-
-    def com_list_constructor(self, nodelist):
-        # listmaker: test ( list_for | (',' test)* [','] )
-        values = []
-        for i in range(1, len(nodelist)):
-            if nodelist[i][0] == symbol.list_for:
-                assert len(nodelist[i:]) == 1
-                return self.com_list_comprehension(values[0],
-                                                   nodelist[i])
-            elif nodelist[i][0] == token.COMMA:
-                continue
-            values.append(self.com_node(nodelist[i]))
-        return List(values, lineno=values[0].lineno)
-
-    def com_list_comprehension(self, expr, node):
-        return self.com_comprehension(expr, None, node, 'list')
-
-    def com_comprehension(self, expr1, expr2, node, type):
-        # list_iter: list_for | list_if
-        # list_for: 'for' exprlist 'in' testlist [list_iter]
-        # list_if: 'if' test [list_iter]
-
-        # XXX should raise SyntaxError for assignment
-        # XXX(avassalotti) Set and dict comprehensions should have generator
-        #                  semantics. In other words, they shouldn't leak
-        #                  variables outside of the comprehension's scope.
-
-        lineno = node[1][2]
-        fors = []
-        while node:
-            t = node[1][1]
-            if t == 'for':
-                assignNode = self.com_assign(node[2], OP_ASSIGN)
-                compNode = self.com_node(node[4])
-                newfor = ListCompFor(assignNode, compNode, [])
-                newfor.lineno = node[1][2]
-                fors.append(newfor)
-                if len(node) == 5:
-                    node = None
-                elif type == 'list':
-                    node = self.com_list_iter(node[5])
-                else:
-                    node = self.com_comp_iter(node[5])
-            elif t == 'if':
-                test = self.com_node(node[2])
-                newif = ListCompIf(test, lineno=node[1][2])
-                newfor.ifs.append(newif)
-                if len(node) == 3:
-                    node = None
-                elif type == 'list':
-                    node = self.com_list_iter(node[3])
-                else:
-                    node = self.com_comp_iter(node[3])
-            else:
-                raise SyntaxError, \
-                      ("unexpected comprehension element: %s %d"
-                       % (node, lineno))
-        if type == 'list':
-            return ListComp(expr1, fors, lineno=lineno)
-        elif type == 'set':
-            return SetComp(expr1, fors, lineno=lineno)
-        elif type == 'dict':
-            return DictComp(expr1, expr2, fors, lineno=lineno)
-        else:
-            raise ValueError("unexpected comprehension type: " + repr(type))
-
-    def com_list_iter(self, node):
-        assert node[0] == symbol.list_iter
-        return node[1]
-
-    def com_comp_iter(self, node):
-        assert node[0] == symbol.comp_iter
-        return node[1]
-
-    def com_generator_expression(self, expr, node):
-        # comp_iter: comp_for | comp_if
-        # comp_for: 'for' exprlist 'in' test [comp_iter]
-        # comp_if: 'if' test [comp_iter]
-
-        lineno = node[1][2]
-        fors = []
-        while node:
-            t = node[1][1]
-            if t == 'for':
-                assignNode = self.com_assign(node[2], OP_ASSIGN)
-                genNode = self.com_node(node[4])
-                newfor = GenExprFor(assignNode, genNode, [],
-                                    lineno=node[1][2])
-                fors.append(newfor)
-                if (len(node)) == 5:
-                    node = None
-                else:
-                    node = self.com_comp_iter(node[5])
-            elif t == 'if':
-                test = self.com_node(node[2])
-                newif = GenExprIf(test, lineno=node[1][2])
-                newfor.ifs.append(newif)
-                if len(node) == 3:
-                    node = None
-                else:
-                    node = self.com_comp_iter(node[3])
-            else:
-                raise SyntaxError, \
-                        ("unexpected generator expression element: %s %d"
-                         % (node, lineno))
-        fors[0].is_outmost = True
-        return GenExpr(GenExprInner(expr, fors), lineno=lineno)
-
-    def com_dictorsetmaker(self, nodelist):
-        # dictorsetmaker: ( (test ':' test (comp_for | (',' test ':' test)* [','])) |
-        #                   (test (comp_for | (',' test)* [','])) )
-        assert nodelist[0] == symbol.dictorsetmaker
-        nodelist = nodelist[1:]
-        if len(nodelist) == 1 or nodelist[1][0] == token.COMMA:
-            # set literal
-            items = []
-            for i in range(0, len(nodelist), 2):
-                items.append(self.com_node(nodelist[i]))
-            return Set(items, lineno=items[0].lineno)
-        elif nodelist[1][0] == symbol.comp_for:
-            # set comprehension
-            expr = self.com_node(nodelist[0])
-            return self.com_comprehension(expr, None, nodelist[1], 'set')
-        elif len(nodelist) > 3 and nodelist[3][0] == symbol.comp_for:
-            # dict comprehension
-            assert nodelist[1][0] == token.COLON
-            key = self.com_node(nodelist[0])
-            value = self.com_node(nodelist[2])
-            return self.com_comprehension(key, value, nodelist[3], 'dict')
-        else:
-            # dict literal
-            items = []
-            for i in range(0, len(nodelist), 4):
-                items.append((self.com_node(nodelist[i]),
-                              self.com_node(nodelist[i+2])))
-            return Dict(items, lineno=items[0][0].lineno)
-
-    def com_apply_trailer(self, primaryNode, nodelist):
-        t = nodelist[1][0]
-        if t == token.LPAR:
-            return self.com_call_function(primaryNode, nodelist[2])
-        if t == token.DOT:
-            return self.com_select_member(primaryNode, nodelist[2])
-        if t == token.LSQB:
-            return self.com_subscriptlist(primaryNode, nodelist[2], OP_APPLY)
-
-        raise SyntaxError, 'unknown node type: %s' % t
-
-    def com_select_member(self, primaryNode, nodelist):
-        if nodelist[0] != token.NAME:
-            raise SyntaxError, "member must be a name"
-        return Getattr(primaryNode, nodelist[1], lineno=nodelist[2])
-
-    def com_call_function(self, primaryNode, nodelist):
-        if nodelist[0] == token.RPAR:
-            return CallFunc(primaryNode, [], lineno=extractLineNo(nodelist))
-        args = []
-        kw = 0
-        star_node = dstar_node = None
-        len_nodelist = len(nodelist)
-        i = 1
-        while i < len_nodelist:
-            node = nodelist[i]
-
-            if node[0]==token.STAR:
-                if star_node is not None:
-                    raise SyntaxError, 'already have the varargs indentifier'
-                star_node = self.com_node(nodelist[i+1])
-                i = i + 3
-                continue
-            elif node[0]==token.DOUBLESTAR:
-                if dstar_node is not None:
-                    raise SyntaxError, 'already have the kwargs indentifier'
-                dstar_node = self.com_node(nodelist[i+1])
-                i = i + 3
-                continue
-
-            # positional or named parameters
-            kw, result = self.com_argument(node, kw, star_node)
-
-            if len_nodelist != 2 and isinstance(result, GenExpr) \
-               and len(node) == 3 and node[2][0] == symbol.comp_for:
-                # allow f(x for x in y), but reject f(x for x in y, 1)
-                # should use f((x for x in y), 1) instead of f(x for x in y, 1)
-                raise SyntaxError, 'generator expression needs parenthesis'
-
-            args.append(result)
-            i = i + 2
-
-        return CallFunc(primaryNode, args, star_node, dstar_node,
-                        lineno=extractLineNo(nodelist))
-
-    def com_argument(self, nodelist, kw, star_node):
-        if len(nodelist) == 3 and nodelist[2][0] == symbol.comp_for:
-            test = self.com_node(nodelist[1])
-            return 0, self.com_generator_expression(test, nodelist[2])
-        if len(nodelist) == 2:
-            if kw:
-                raise SyntaxError, "non-keyword arg after keyword arg"
-            if star_node:
-                raise SyntaxError, "only named arguments may follow *expression"
-            return 0, self.com_node(nodelist[1])
-        result = self.com_node(nodelist[3])
-        n = nodelist[1]
-        while len(n) == 2 and n[0] != token.NAME:
-            n = n[1]
-        if n[0] != token.NAME:
-            raise SyntaxError, "keyword can't be an expression (%s)"%n[0]
-        node = Keyword(n[1], result, lineno=n[2])
-        return 1, node
-
-    def com_subscriptlist(self, primary, nodelist, assigning):
-        # slicing:      simple_slicing | extended_slicing
-        # simple_slicing:   primary "[" short_slice "]"
-        # extended_slicing: primary "[" slice_list "]"
-        # slice_list:   slice_item ("," slice_item)* [","]
-
-        # backwards compat slice for '[i:j]'
-        if len(nodelist) == 2:
-            sub = nodelist[1]
-            if (sub[1][0] == token.COLON or \
-                            (len(sub) > 2 and sub[2][0] == token.COLON)) and \
-                            sub[-1][0] != symbol.sliceop:
-                return self.com_slice(primary, sub, assigning)
-
-        subscripts = []
-        for i in range(1, len(nodelist), 2):
-            subscripts.append(self.com_subscript(nodelist[i]))
-        return Subscript(primary, assigning, subscripts,
-                         lineno=extractLineNo(nodelist))
-
-    def com_subscript(self, node):
-        # slice_item: expression | proper_slice | ellipsis
-        ch = node[1]
-        t = ch[0]
-        if t == token.DOT and node[2][0] == token.DOT:
-            return Ellipsis()
-        if t == token.COLON or len(node) > 2:
-            return self.com_sliceobj(node)
-        return self.com_node(ch)
-
-    def com_sliceobj(self, node):
-        # proper_slice: short_slice | long_slice
-        # short_slice:  [lower_bound] ":" [upper_bound]
-        # long_slice:   short_slice ":" [stride]
-        # lower_bound:  expression
-        # upper_bound:  expression
-        # stride:       expression
-        #
-        # Note: a stride may be further slicing...
-
-        items = []
-
-        if node[1][0] == token.COLON:
-            items.append(Const(None))
-            i = 2
-        else:
-            items.append(self.com_node(node[1]))
-            # i == 2 is a COLON
-            i = 3
-
-        if i < len(node) and node[i][0] == symbol.test:
-            items.append(self.com_node(node[i]))
-            i = i + 1
-        else:
-            items.append(Const(None))
-
-        # a short_slice has been built. look for long_slice now by looking
-        # for strides...
-        for j in range(i, len(node)):
-            ch = node[j]
-            if len(ch) == 2:
-                items.append(Const(None))
-            else:
-                items.append(self.com_node(ch[2]))
-        return Sliceobj(items, lineno=extractLineNo(node))
-
-    def com_slice(self, primary, node, assigning):
-        # short_slice:  [lower_bound] ":" [upper_bound]
-        lower = upper = None
-        if len(node) == 3:
-            if node[1][0] == token.COLON:
-                upper = self.com_node(node[2])
-            else:
-                lower = self.com_node(node[1])
-        elif len(node) == 4:
-            lower = self.com_node(node[1])
-            upper = self.com_node(node[3])
-        return Slice(primary, assigning, lower, upper,
-                     lineno=extractLineNo(node))
-
-    def get_docstring(self, node, n=None):
-        if n is None:
-            n = node[0]
-            node = node[1:]
-        if n == symbol.suite:
-            if len(node) == 1:
-                return self.get_docstring(node[0])
-            for sub in node:
-                if sub[0] == symbol.stmt:
-                    return self.get_docstring(sub)
-            return None
-        if n == symbol.file_input:
-            for sub in node:
-                if sub[0] == symbol.stmt:
-                    return self.get_docstring(sub)
-            return None
-        if n == symbol.atom:
-            if node[0][0] == token.STRING:
-                s = ''
-                for t in node:
-                    s = s + eval(t[1])
-                return s
-            return None
-        if n == symbol.stmt or n == symbol.simple_stmt \
-           or n == symbol.small_stmt:
-            return self.get_docstring(node[0])
-        if n in _doc_nodes and len(node) == 1:
-            return self.get_docstring(node[0])
-        return None
-
-
-_doc_nodes = [
-    symbol.expr_stmt,
-    symbol.testlist,
-    symbol.testlist_safe,
-    symbol.test,
-    symbol.or_test,
-    symbol.and_test,
-    symbol.not_test,
-    symbol.comparison,
-    symbol.expr,
-    symbol.xor_expr,
-    symbol.and_expr,
-    symbol.shift_expr,
-    symbol.arith_expr,
-    symbol.term,
-    symbol.factor,
-    symbol.power,
-    ]
-
-# comp_op: '<' | '>' | '=' | '>=' | '<=' | '<>' | '!=' | '=='
-#             | 'in' | 'not' 'in' | 'is' | 'is' 'not'
-_cmp_types = {
-    token.LESS : '<',
-    token.GREATER : '>',
-    token.EQEQUAL : '==',
-    token.EQUAL : '==',
-    token.LESSEQUAL : '<=',
-    token.GREATEREQUAL : '>=',
-    token.NOTEQUAL : '!=',
-    }
-
-_legal_node_types = [
-    symbol.funcdef,
-    symbol.classdef,
-    symbol.stmt,
-    symbol.small_stmt,
-    symbol.flow_stmt,
-    symbol.simple_stmt,
-    symbol.compound_stmt,
-    symbol.expr_stmt,
-    symbol.print_stmt,
-    symbol.del_stmt,
-    symbol.pass_stmt,
-    symbol.break_stmt,
-    symbol.continue_stmt,
-    symbol.return_stmt,
-    symbol.raise_stmt,
-    symbol.import_stmt,
-    symbol.global_stmt,
-    symbol.exec_stmt,
-    symbol.assert_stmt,
-    symbol.if_stmt,
-    symbol.while_stmt,
-    symbol.for_stmt,
-    symbol.try_stmt,
-    symbol.with_stmt,
-    symbol.suite,
-    symbol.testlist,
-    symbol.testlist_safe,
-    symbol.test,
-    symbol.and_test,
-    symbol.not_test,
-    symbol.comparison,
-    symbol.exprlist,
-    symbol.expr,
-    symbol.xor_expr,
-    symbol.and_expr,
-    symbol.shift_expr,
-    symbol.arith_expr,
-    symbol.term,
-    symbol.factor,
-    symbol.power,
-    symbol.atom,
-    ]
-
-if hasattr(symbol, 'yield_stmt'):
-    _legal_node_types.append(symbol.yield_stmt)
-if hasattr(symbol, 'yield_expr'):
-    _legal_node_types.append(symbol.yield_expr)
-
-_assign_types = [
-    symbol.test,
-    symbol.or_test,
-    symbol.and_test,
-    symbol.not_test,
-    symbol.comparison,
-    symbol.expr,
-    symbol.xor_expr,
-    symbol.and_expr,
-    symbol.shift_expr,
-    symbol.arith_expr,
-    symbol.term,
-    symbol.factor,
-    ]
-
-_names = {}
-for k, v in symbol.sym_name.items():
-    _names[k] = v
-for k, v in token.tok_name.items():
-    _names[k] = v
-
-def debug_tree(tree):
-    l = []
-    for elt in tree:
-        if isinstance(elt, int):
-            l.append(_names.get(elt, elt))
-        elif isinstance(elt, str):
-            l.append(elt)
-        else:
-            l.append(debug_tree(elt))
-    return l
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/visitor.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/visitor.py
deleted file mode 100644
index b8f8042..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/compiler/visitor.py
+++ /dev/null
@@ -1,113 +0,0 @@
-from compiler import ast
-
-# XXX should probably rename ASTVisitor to ASTWalker
-# XXX can it be made even more generic?
-
-class ASTVisitor:
-    """Performs a depth-first walk of the AST
-
-    The ASTVisitor will walk the AST, performing either a preorder or
-    postorder traversal depending on which method is called.
-
-    methods:
-    preorder(tree, visitor)
-    postorder(tree, visitor)
-        tree: an instance of ast.Node
-        visitor: an instance with visitXXX methods
-
-    The ASTVisitor is responsible for walking over the tree in the
-    correct order.  For each node, it checks the visitor argument for
-    a method named 'visitNodeType' where NodeType is the name of the
-    node's class, e.g. Class.  If the method exists, it is called
-    with the node as its sole argument.
-
-    The visitor method for a particular node type can control how
-    child nodes are visited during a preorder walk.  (It can't control
-    the order during a postorder walk, because it is called _after_
-    the walk has occurred.)  The ASTVisitor modifies the visitor
-    argument by adding a visit method to the visitor; this method can
-    be used to visit a child node of arbitrary type.
-    """
-
-    VERBOSE = 0
-
-    def __init__(self):
-        self.node = None
-        self._cache = {}
-
-    def default(self, node, *args):
-        for child in node.getChildNodes():
-            self.dispatch(child, *args)
-
-    def dispatch(self, node, *args):
-        self.node = node
-        klass = node.__class__
-        meth = self._cache.get(klass, None)
-        if meth is None:
-            className = klass.__name__
-            meth = getattr(self.visitor, 'visit' + className, self.default)
-            self._cache[klass] = meth
-##        if self.VERBOSE > 0:
-##            className = klass.__name__
-##            if self.VERBOSE == 1:
-##                if meth == 0:
-##                    print "dispatch", className
-##            else:
-##                print "dispatch", className, (meth and meth.__name__ or '')
-        return meth(node, *args)
-
-    def preorder(self, tree, visitor, *args):
-        """Do preorder walk of tree using visitor"""
-        self.visitor = visitor
-        visitor.visit = self.dispatch
-        self.dispatch(tree, *args) # XXX *args make sense?
-
-class ExampleASTVisitor(ASTVisitor):
-    """Prints examples of the nodes that aren't visited
-
-    This visitor-driver is only useful for development, when it's
-    helpful to develop a visitor incrementally, and get feedback on what
-    you still have to do.
-    """
-    examples = {}
-
-    def dispatch(self, node, *args):
-        self.node = node
-        meth = self._cache.get(node.__class__, None)
-        className = node.__class__.__name__
-        if meth is None:
-            meth = getattr(self.visitor, 'visit' + className, 0)
-            self._cache[node.__class__] = meth
-        if self.VERBOSE > 1:
-            print "dispatch", className, (meth and meth.__name__ or '')
-        if meth:
-            meth(node, *args)
-        elif self.VERBOSE > 0:
-            klass = node.__class__
-            if klass not in self.examples:
-                self.examples[klass] = klass
-                print
-                print self.visitor
-                print klass
-                for attr in dir(node):
-                    if attr[0] != '_':
-                        print "\t", "%-12.12s" % attr, getattr(node, attr)
-                print
-            return self.default(node, *args)
-
-# XXX this is an API change
-
-_walker = ASTVisitor
-def walk(tree, visitor, walker=None, verbose=None):
-    if walker is None:
-        walker = _walker()
-    if verbose is not None:
-        walker.VERBOSE = verbose
-    walker.preorder(tree, visitor)
-    return walker.visitor
-
-def dumpNode(node):
-    print node.__class__
-    for attr in dir(node):
-        if attr[0] != '_':
-            print "\t", "%-10.10s" % attr, getattr(node, attr)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/contextlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/contextlib.py
deleted file mode 100644
index 3552ebc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/contextlib.py
+++ /dev/null
@@ -1,154 +0,0 @@
-"""Utilities for with-statement contexts.  See PEP 343."""
-
-import sys
-from functools import wraps
-from warnings import warn
-
-__all__ = ["contextmanager", "nested", "closing"]
-
-class GeneratorContextManager(object):
-    """Helper for @contextmanager decorator."""
-
-    def __init__(self, gen):
-        self.gen = gen
-
-    def __enter__(self):
-        try:
-            return self.gen.next()
-        except StopIteration:
-            raise RuntimeError("generator didn't yield")
-
-    def __exit__(self, type, value, traceback):
-        if type is None:
-            try:
-                self.gen.next()
-            except StopIteration:
-                return
-            else:
-                raise RuntimeError("generator didn't stop")
-        else:
-            if value is None:
-                # Need to force instantiation so we can reliably
-                # tell if we get the same exception back
-                value = type()
-            try:
-                self.gen.throw(type, value, traceback)
-                raise RuntimeError("generator didn't stop after throw()")
-            except StopIteration, exc:
-                # Suppress the exception *unless* it's the same exception that
-                # was passed to throw().  This prevents a StopIteration
-                # raised inside the "with" statement from being suppressed
-                return exc is not value
-            except:
-                # only re-raise if it's *not* the exception that was
-                # passed to throw(), because __exit__() must not raise
-                # an exception unless __exit__() itself failed.  But throw()
-                # has to raise the exception to signal propagation, so this
-                # fixes the impedance mismatch between the throw() protocol
-                # and the __exit__() protocol.
-                #
-                if sys.exc_info()[1] is not value:
-                    raise
-
-
-def contextmanager(func):
-    """@contextmanager decorator.
-
-    Typical usage:
-
-        @contextmanager
-        def some_generator(<arguments>):
-            <setup>
-            try:
-                yield <value>
-            finally:
-                <cleanup>
-
-    This makes this:
-
-        with some_generator(<arguments>) as <variable>:
-            <body>
-
-    equivalent to this:
-
-        <setup>
-        try:
-            <variable> = <value>
-            <body>
-        finally:
-            <cleanup>
-
-    """
-    @wraps(func)
-    def helper(*args, **kwds):
-        return GeneratorContextManager(func(*args, **kwds))
-    return helper
-
-
-@contextmanager
-def nested(*managers):
-    """Combine multiple context managers into a single nested context manager.
-
-   This function has been deprecated in favour of the multiple manager form
-   of the with statement.
-
-   The one advantage of this function over the multiple manager form of the
-   with statement is that argument unpacking allows it to be
-   used with a variable number of context managers as follows:
-
-      with nested(*managers):
-          do_something()
-
-    """
-    warn("With-statements now directly support multiple context managers",
-         DeprecationWarning, 3)
-    exits = []
-    vars = []
-    exc = (None, None, None)
-    try:
-        for mgr in managers:
-            exit = mgr.__exit__
-            enter = mgr.__enter__
-            vars.append(enter())
-            exits.append(exit)
-        yield vars
-    except:
-        exc = sys.exc_info()
-    finally:
-        while exits:
-            exit = exits.pop()
-            try:
-                if exit(*exc):
-                    exc = (None, None, None)
-            except:
-                exc = sys.exc_info()
-        if exc != (None, None, None):
-            # Don't rely on sys.exc_info() still containing
-            # the right information. Another exception may
-            # have been raised and caught by an exit method
-            raise exc[0], exc[1], exc[2]
-
-
-class closing(object):
-    """Context to automatically close something at the end of a block.
-
-    Code like this:
-
-        with closing(<module>.open(<arguments>)) as f:
-            <block>
-
-    is equivalent to this:
-
-        f = <module>.open(<arguments>)
-        try:
-            <block>
-        finally:
-            f.close()
-
-    """
-    def __init__(self, thing):
-        self.thing = thing
-    def __enter__(self):
-        return self.thing
-    def __exit__(self, *exc_info):
-        self.thing.close()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/cookielib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/cookielib.py
deleted file mode 100644
index 78e5224..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/cookielib.py
+++ /dev/null
@@ -1,1794 +0,0 @@
-"""HTTP cookie handling for web clients.
-
-This module has (now fairly distant) origins in Gisle Aas' Perl module
-HTTP::Cookies, from the libwww-perl library.
-
-Docstrings, comments and debug strings in this code refer to the
-attributes of the HTTP cookie system as cookie-attributes, to distinguish
-them clearly from Python attributes.
-
-Class diagram (note that BSDDBCookieJar and the MSIE* classes are not
-distributed with the Python standard library, but are available from
-http://wwwsearch.sf.net/):
-
-                        CookieJar____
-                        /     \      \
-            FileCookieJar      \      \
-             /    |   \         \      \
- MozillaCookieJar | LWPCookieJar \      \
-                  |               |      \
-                  |   ---MSIEBase |       \
-                  |  /      |     |        \
-                  | /   MSIEDBCookieJar BSDDBCookieJar
-                  |/
-               MSIECookieJar
-
-"""
-
-__all__ = ['Cookie', 'CookieJar', 'CookiePolicy', 'DefaultCookiePolicy',
-           'FileCookieJar', 'LWPCookieJar', 'lwp_cookie_str', 'LoadError',
-           'MozillaCookieJar']
-
-import re, urlparse, copy, time, urllib
-try:
-    import threading as _threading
-except ImportError:
-    import dummy_threading as _threading
-import httplib  # only for the default HTTP port
-from calendar import timegm
-
-debug = False   # set to True to enable debugging via the logging module
-logger = None
-
-def _debug(*args):
-    if not debug:
-        return
-    global logger
-    if not logger:
-        import logging
-        logger = logging.getLogger("cookielib")
-    return logger.debug(*args)
-
-
-DEFAULT_HTTP_PORT = str(httplib.HTTP_PORT)
-MISSING_FILENAME_TEXT = ("a filename was not supplied (nor was the CookieJar "
-                         "instance initialised with one)")
-
-def _warn_unhandled_exception():
-    # There are a few catch-all except: statements in this module, for
-    # catching input that's bad in unexpected ways.  Warn if any
-    # exceptions are caught there.
-    import warnings, traceback, StringIO
-    f = StringIO.StringIO()
-    traceback.print_exc(None, f)
-    msg = f.getvalue()
-    warnings.warn("cookielib bug!\n%s" % msg, stacklevel=2)
-
-
-# Date/time conversion
-# -----------------------------------------------------------------------------
-
-EPOCH_YEAR = 1970
-def _timegm(tt):
-    year, month, mday, hour, min, sec = tt[:6]
-    if ((year >= EPOCH_YEAR) and (1 <= month <= 12) and (1 <= mday <= 31) and
-        (0 <= hour <= 24) and (0 <= min <= 59) and (0 <= sec <= 61)):
-        return timegm(tt)
-    else:
-        return None
-
-DAYS = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
-MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
-          "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
-MONTHS_LOWER = []
-for month in MONTHS: MONTHS_LOWER.append(month.lower())
-
-def time2isoz(t=None):
-    """Return a string representing time in seconds since epoch, t.
-
-    If the function is called without an argument, it will use the current
-    time.
-
-    The format of the returned string is like "YYYY-MM-DD hh:mm:ssZ",
-    representing Universal Time (UTC, aka GMT).  An example of this format is:
-
-    1994-11-24 08:49:37Z
-
-    """
-    if t is None: t = time.time()
-    year, mon, mday, hour, min, sec = time.gmtime(t)[:6]
-    return "%04d-%02d-%02d %02d:%02d:%02dZ" % (
-        year, mon, mday, hour, min, sec)
-
-def time2netscape(t=None):
-    """Return a string representing time in seconds since epoch, t.
-
-    If the function is called without an argument, it will use the current
-    time.
-
-    The format of the returned string is like this:
-
-    Wed, DD-Mon-YYYY HH:MM:SS GMT
-
-    """
-    if t is None: t = time.time()
-    year, mon, mday, hour, min, sec, wday = time.gmtime(t)[:7]
-    return "%s %02d-%s-%04d %02d:%02d:%02d GMT" % (
-        DAYS[wday], mday, MONTHS[mon-1], year, hour, min, sec)
-
-
-UTC_ZONES = {"GMT": None, "UTC": None, "UT": None, "Z": None}
-
-TIMEZONE_RE = re.compile(r"^([-+])?(\d\d?):?(\d\d)?$")
-def offset_from_tz_string(tz):
-    offset = None
-    if tz in UTC_ZONES:
-        offset = 0
-    else:
-        m = TIMEZONE_RE.search(tz)
-        if m:
-            offset = 3600 * int(m.group(2))
-            if m.group(3):
-                offset = offset + 60 * int(m.group(3))
-            if m.group(1) == '-':
-                offset = -offset
-    return offset
-
-def _str2time(day, mon, yr, hr, min, sec, tz):
-    # translate month name to number
-    # month numbers start with 1 (January)
-    try:
-        mon = MONTHS_LOWER.index(mon.lower())+1
-    except ValueError:
-        # maybe it's already a number
-        try:
-            imon = int(mon)
-        except ValueError:
-            return None
-        if 1 <= imon <= 12:
-            mon = imon
-        else:
-            return None
-
-    # make sure clock elements are defined
-    if hr is None: hr = 0
-    if min is None: min = 0
-    if sec is None: sec = 0
-
-    yr = int(yr)
-    day = int(day)
-    hr = int(hr)
-    min = int(min)
-    sec = int(sec)
-
-    if yr < 1000:
-        # find "obvious" year
-        cur_yr = time.localtime(time.time())[0]
-        m = cur_yr % 100
-        tmp = yr
-        yr = yr + cur_yr - m
-        m = m - tmp
-        if abs(m) > 50:
-            if m > 0: yr = yr + 100
-            else: yr = yr - 100
-
-    # convert UTC time tuple to seconds since epoch (not timezone-adjusted)
-    t = _timegm((yr, mon, day, hr, min, sec, tz))
-
-    if t is not None:
-        # adjust time using timezone string, to get absolute time since epoch
-        if tz is None:
-            tz = "UTC"
-        tz = tz.upper()
-        offset = offset_from_tz_string(tz)
-        if offset is None:
-            return None
-        t = t - offset
-
-    return t
-
-STRICT_DATE_RE = re.compile(
-    r"^[SMTWF][a-z][a-z], (\d\d) ([JFMASOND][a-z][a-z]) "
-    "(\d\d\d\d) (\d\d):(\d\d):(\d\d) GMT$")
-WEEKDAY_RE = re.compile(
-    r"^(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)[a-z]*,?\s*", re.I)
-LOOSE_HTTP_DATE_RE = re.compile(
-    r"""^
-    (\d\d?)            # day
-       (?:\s+|[-\/])
-    (\w+)              # month
-        (?:\s+|[-\/])
-    (\d+)              # year
-    (?:
-          (?:\s+|:)    # separator before clock
-       (\d\d?):(\d\d)  # hour:min
-       (?::(\d\d))?    # optional seconds
-    )?                 # optional clock
-       \s*
-    ([-+]?\d{2,4}|(?![APap][Mm]\b)[A-Za-z]+)? # timezone
-       \s*
-    (?:\(\w+\))?       # ASCII representation of timezone in parens.
-       \s*$""", re.X)
-def http2time(text):
-    """Returns time in seconds since epoch of time represented by a string.
-
-    Return value is an integer.
-
-    None is returned if the format of str is unrecognized, the time is outside
-    the representable range, or the timezone string is not recognized.  If the
-    string contains no timezone, UTC is assumed.
-
-    The timezone in the string may be numerical (like "-0800" or "+0100") or a
-    string timezone (like "UTC", "GMT", "BST" or "EST").  Currently, only the
-    timezone strings equivalent to UTC (zero offset) are known to the function.
-
-    The function loosely parses the following formats:
-
-    Wed, 09 Feb 1994 22:23:32 GMT       -- HTTP format
-    Tuesday, 08-Feb-94 14:15:29 GMT     -- old rfc850 HTTP format
-    Tuesday, 08-Feb-1994 14:15:29 GMT   -- broken rfc850 HTTP format
-    09 Feb 1994 22:23:32 GMT            -- HTTP format (no weekday)
-    08-Feb-94 14:15:29 GMT              -- rfc850 format (no weekday)
-    08-Feb-1994 14:15:29 GMT            -- broken rfc850 format (no weekday)
-
-    The parser ignores leading and trailing whitespace.  The time may be
-    absent.
-
-    If the year is given with only 2 digits, the function will select the
-    century that makes the year closest to the current date.
-
-    """
-    # fast exit for strictly conforming string
-    m = STRICT_DATE_RE.search(text)
-    if m:
-        g = m.groups()
-        mon = MONTHS_LOWER.index(g[1].lower()) + 1
-        tt = (int(g[2]), mon, int(g[0]),
-              int(g[3]), int(g[4]), float(g[5]))
-        return _timegm(tt)
-
-    # No, we need some messy parsing...
-
-    # clean up
-    text = text.lstrip()
-    text = WEEKDAY_RE.sub("", text, 1)  # Useless weekday
-
-    # tz is time zone specifier string
-    day, mon, yr, hr, min, sec, tz = [None]*7
-
-    # loose regexp parse
-    m = LOOSE_HTTP_DATE_RE.search(text)
-    if m is not None:
-        day, mon, yr, hr, min, sec, tz = m.groups()
-    else:
-        return None  # bad format
-
-    return _str2time(day, mon, yr, hr, min, sec, tz)
-
-ISO_DATE_RE = re.compile(
-    """^
-    (\d{4})              # year
-       [-\/]?
-    (\d\d?)              # numerical month
-       [-\/]?
-    (\d\d?)              # day
-   (?:
-         (?:\s+|[-:Tt])  # separator before clock
-      (\d\d?):?(\d\d)    # hour:min
-      (?::?(\d\d(?:\.\d*)?))?  # optional seconds (and fractional)
-   )?                    # optional clock
-      \s*
-   ([-+]?\d\d?:?(:?\d\d)?
-    |Z|z)?               # timezone  (Z is "zero meridian", i.e. GMT)
-      \s*$""", re.X)
-def iso2time(text):
-    """
-    As for http2time, but parses the ISO 8601 formats:
-
-    1994-02-03 14:15:29 -0100    -- ISO 8601 format
-    1994-02-03 14:15:29          -- zone is optional
-    1994-02-03                   -- only date
-    1994-02-03T14:15:29          -- Use T as separator
-    19940203T141529Z             -- ISO 8601 compact format
-    19940203                     -- only date
-
-    """
-    # clean up
-    text = text.lstrip()
-
-    # tz is time zone specifier string
-    day, mon, yr, hr, min, sec, tz = [None]*7
-
-    # loose regexp parse
-    m = ISO_DATE_RE.search(text)
-    if m is not None:
-        # XXX there's an extra bit of the timezone I'm ignoring here: is
-        #   this the right thing to do?
-        yr, mon, day, hr, min, sec, tz, _ = m.groups()
-    else:
-        return None  # bad format
-
-    return _str2time(day, mon, yr, hr, min, sec, tz)
-
-
-# Header parsing
-# -----------------------------------------------------------------------------
-
-def unmatched(match):
-    """Return unmatched part of re.Match object."""
-    start, end = match.span(0)
-    return match.string[:start]+match.string[end:]
-
-HEADER_TOKEN_RE =        re.compile(r"^\s*([^=\s;,]+)")
-HEADER_QUOTED_VALUE_RE = re.compile(r"^\s*=\s*\"([^\"\\]*(?:\\.[^\"\\]*)*)\"")
-HEADER_VALUE_RE =        re.compile(r"^\s*=\s*([^\s;,]*)")
-HEADER_ESCAPE_RE = re.compile(r"\\(.)")
-def split_header_words(header_values):
-    r"""Parse header values into a list of lists containing key,value pairs.
-
-    The function knows how to deal with ",", ";" and "=" as well as quoted
-    values after "=".  A list of space separated tokens are parsed as if they
-    were separated by ";".
-
-    If the header_values passed as argument contains multiple values, then they
-    are treated as if they were a single value separated by comma ",".
-
-    This means that this function is useful for parsing header fields that
-    follow this syntax (BNF as from the HTTP/1.1 specification, but we relax
-    the requirement for tokens).
-
-      headers           = #header
-      header            = (token | parameter) *( [";"] (token | parameter))
-
-      token             = 1*<any CHAR except CTLs or separators>
-      separators        = "(" | ")" | "<" | ">" | "@"
-                        | "," | ";" | ":" | "\" | <">
-                        | "/" | "[" | "]" | "?" | "="
-                        | "{" | "}" | SP | HT
-
-      quoted-string     = ( <"> *(qdtext | quoted-pair ) <"> )
-      qdtext            = <any TEXT except <">>
-      quoted-pair       = "\" CHAR
-
-      parameter         = attribute "=" value
-      attribute         = token
-      value             = token | quoted-string
-
-    Each header is represented by a list of key/value pairs.  The value for a
-    simple token (not part of a parameter) is None.  Syntactically incorrect
-    headers will not necessarily be parsed as you would want.
-
-    This is easier to describe with some examples:
-
-    >>> split_header_words(['foo="bar"; port="80,81"; discard, bar=baz'])
-    [[('foo', 'bar'), ('port', '80,81'), ('discard', None)], [('bar', 'baz')]]
-    >>> split_header_words(['text/html; charset="iso-8859-1"'])
-    [[('text/html', None), ('charset', 'iso-8859-1')]]
-    >>> split_header_words([r'Basic realm="\"foo\bar\""'])
-    [[('Basic', None), ('realm', '"foobar"')]]
-
-    """
-    assert not isinstance(header_values, basestring)
-    result = []
-    for text in header_values:
-        orig_text = text
-        pairs = []
-        while text:
-            m = HEADER_TOKEN_RE.search(text)
-            if m:
-                text = unmatched(m)
-                name = m.group(1)
-                m = HEADER_QUOTED_VALUE_RE.search(text)
-                if m:  # quoted value
-                    text = unmatched(m)
-                    value = m.group(1)
-                    value = HEADER_ESCAPE_RE.sub(r"\1", value)
-                else:
-                    m = HEADER_VALUE_RE.search(text)
-                    if m:  # unquoted value
-                        text = unmatched(m)
-                        value = m.group(1)
-                        value = value.rstrip()
-                    else:
-                        # no value, a lone token
-                        value = None
-                pairs.append((name, value))
-            elif text.lstrip().startswith(","):
-                # concatenated headers, as per RFC 2616 section 4.2
-                text = text.lstrip()[1:]
-                if pairs: result.append(pairs)
-                pairs = []
-            else:
-                # skip junk
-                non_junk, nr_junk_chars = re.subn("^[=\s;]*", "", text)
-                assert nr_junk_chars > 0, (
-                    "split_header_words bug: '%s', '%s', %s" %
-                    (orig_text, text, pairs))
-                text = non_junk
-        if pairs: result.append(pairs)
-    return result
-
-HEADER_JOIN_ESCAPE_RE = re.compile(r"([\"\\])")
-def join_header_words(lists):
-    """Do the inverse (almost) of the conversion done by split_header_words.
-
-    Takes a list of lists of (key, value) pairs and produces a single header
-    value.  Attribute values are quoted if needed.
-
-    >>> join_header_words([[("text/plain", None), ("charset", "iso-8859/1")]])
-    'text/plain; charset="iso-8859/1"'
-    >>> join_header_words([[("text/plain", None)], [("charset", "iso-8859/1")]])
-    'text/plain, charset="iso-8859/1"'
-
-    """
-    headers = []
-    for pairs in lists:
-        attr = []
-        for k, v in pairs:
-            if v is not None:
-                if not re.search(r"^\w+$", v):
-                    v = HEADER_JOIN_ESCAPE_RE.sub(r"\\\1", v)  # escape " and \
-                    v = '"%s"' % v
-                k = "%s=%s" % (k, v)
-            attr.append(k)
-        if attr: headers.append("; ".join(attr))
-    return ", ".join(headers)
-
-def _strip_quotes(text):
-    if text.startswith('"'):
-        text = text[1:]
-    if text.endswith('"'):
-        text = text[:-1]
-    return text
-
-def parse_ns_headers(ns_headers):
-    """Ad-hoc parser for Netscape protocol cookie-attributes.
-
-    The old Netscape cookie format for Set-Cookie can for instance contain
-    an unquoted "," in the expires field, so we have to use this ad-hoc
-    parser instead of split_header_words.
-
-    XXX This may not make the best possible effort to parse all the crap
-    that Netscape Cookie headers contain.  Ronald Tschalar's HTTPClient
-    parser is probably better, so could do worse than following that if
-    this ever gives any trouble.
-
-    Currently, this is also used for parsing RFC 2109 cookies.
-
-    """
-    known_attrs = ("expires", "domain", "path", "secure",
-                   # RFC 2109 attrs (may turn up in Netscape cookies, too)
-                   "version", "port", "max-age")
-
-    result = []
-    for ns_header in ns_headers:
-        pairs = []
-        version_set = False
-        for ii, param in enumerate(re.split(r";\s*", ns_header)):
-            param = param.rstrip()
-            if param == "": continue
-            if "=" not in param:
-                k, v = param, None
-            else:
-                k, v = re.split(r"\s*=\s*", param, 1)
-                k = k.lstrip()
-            if ii != 0:
-                lc = k.lower()
-                if lc in known_attrs:
-                    k = lc
-                if k == "version":
-                    # This is an RFC 2109 cookie.
-                    v = _strip_quotes(v)
-                    version_set = True
-                if k == "expires":
-                    # convert expires date to seconds since epoch
-                    v = http2time(_strip_quotes(v))  # None if invalid
-            pairs.append((k, v))
-
-        if pairs:
-            if not version_set:
-                pairs.append(("version", "0"))
-            result.append(pairs)
-
-    return result
-
-
-IPV4_RE = re.compile(r"\.\d+$")
-def is_HDN(text):
-    """Return True if text is a host domain name."""
-    # XXX
-    # This may well be wrong.  Which RFC is HDN defined in, if any (for
-    #  the purposes of RFC 2965)?
-    # For the current implementation, what about IPv6?  Remember to look
-    #  at other uses of IPV4_RE also, if change this.
-    if IPV4_RE.search(text):
-        return False
-    if text == "":
-        return False
-    if text[0] == "." or text[-1] == ".":
-        return False
-    return True
-
-def domain_match(A, B):
-    """Return True if domain A domain-matches domain B, according to RFC 2965.
-
-    A and B may be host domain names or IP addresses.
-
-    RFC 2965, section 1:
-
-    Host names can be specified either as an IP address or a HDN string.
-    Sometimes we compare one host name with another.  (Such comparisons SHALL
-    be case-insensitive.)  Host A's name domain-matches host B's if
-
-         *  their host name strings string-compare equal; or
-
-         * A is a HDN string and has the form NB, where N is a non-empty
-            name string, B has the form .B', and B' is a HDN string.  (So,
-            x.y.com domain-matches .Y.com but not Y.com.)
-
-    Note that domain-match is not a commutative operation: a.b.c.com
-    domain-matches .c.com, but not the reverse.
-
-    """
-    # Note that, if A or B are IP addresses, the only relevant part of the
-    # definition of the domain-match algorithm is the direct string-compare.
-    A = A.lower()
-    B = B.lower()
-    if A == B:
-        return True
-    if not is_HDN(A):
-        return False
-    i = A.rfind(B)
-    if i == -1 or i == 0:
-        # A does not have form NB, or N is the empty string
-        return False
-    if not B.startswith("."):
-        return False
-    if not is_HDN(B[1:]):
-        return False
-    return True
-
-def liberal_is_HDN(text):
-    """Return True if text is a sort-of-like a host domain name.
-
-    For accepting/blocking domains.
-
-    """
-    if IPV4_RE.search(text):
-        return False
-    return True
-
-def user_domain_match(A, B):
-    """For blocking/accepting domains.
-
-    A and B may be host domain names or IP addresses.
-
-    """
-    A = A.lower()
-    B = B.lower()
-    if not (liberal_is_HDN(A) and liberal_is_HDN(B)):
-        if A == B:
-            # equal IP addresses
-            return True
-        return False
-    initial_dot = B.startswith(".")
-    if initial_dot and A.endswith(B):
-        return True
-    if not initial_dot and A == B:
-        return True
-    return False
-
-cut_port_re = re.compile(r":\d+$")
-def request_host(request):
-    """Return request-host, as defined by RFC 2965.
-
-    Variation from RFC: returned value is lowercased, for convenient
-    comparison.
-
-    """
-    url = request.get_full_url()
-    host = urlparse.urlparse(url)[1]
-    if host == "":
-        host = request.get_header("Host", "")
-
-    # remove port, if present
-    host = cut_port_re.sub("", host, 1)
-    return host.lower()
-
-def eff_request_host(request):
-    """Return a tuple (request-host, effective request-host name).
-
-    As defined by RFC 2965, except both are lowercased.
-
-    """
-    erhn = req_host = request_host(request)
-    if req_host.find(".") == -1 and not IPV4_RE.search(req_host):
-        erhn = req_host + ".local"
-    return req_host, erhn
-
-def request_path(request):
-    """Path component of request-URI, as defined by RFC 2965."""
-    url = request.get_full_url()
-    parts = urlparse.urlsplit(url)
-    path = escape_path(parts.path)
-    if not path.startswith("/"):
-        # fix bad RFC 2396 absoluteURI
-        path = "/" + path
-    return path
-
-def request_port(request):
-    host = request.get_host()
-    i = host.find(':')
-    if i >= 0:
-        port = host[i+1:]
-        try:
-            int(port)
-        except ValueError:
-            _debug("nonnumeric port: '%s'", port)
-            return None
-    else:
-        port = DEFAULT_HTTP_PORT
-    return port
-
-# Characters in addition to A-Z, a-z, 0-9, '_', '.', and '-' that don't
-# need to be escaped to form a valid HTTP URL (RFCs 2396 and 1738).
-HTTP_PATH_SAFE = "%/;:@&=+$,!~*'()"
-ESCAPED_CHAR_RE = re.compile(r"%([0-9a-fA-F][0-9a-fA-F])")
-def uppercase_escaped_char(match):
-    return "%%%s" % match.group(1).upper()
-def escape_path(path):
-    """Escape any invalid characters in HTTP URL, and uppercase all escapes."""
-    # There's no knowing what character encoding was used to create URLs
-    # containing %-escapes, but since we have to pick one to escape invalid
-    # path characters, we pick UTF-8, as recommended in the HTML 4.0
-    # specification:
-    # http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.2.1
-    # And here, kind of: draft-fielding-uri-rfc2396bis-03
-    # (And in draft IRI specification: draft-duerst-iri-05)
-    # (And here, for new URI schemes: RFC 2718)
-    if isinstance(path, unicode):
-        path = path.encode("utf-8")
-    path = urllib.quote(path, HTTP_PATH_SAFE)
-    path = ESCAPED_CHAR_RE.sub(uppercase_escaped_char, path)
-    return path
-
-def reach(h):
-    """Return reach of host h, as defined by RFC 2965, section 1.
-
-    The reach R of a host name H is defined as follows:
-
-       *  If
-
-          -  H is the host domain name of a host; and,
-
-          -  H has the form A.B; and
-
-          -  A has no embedded (that is, interior) dots; and
-
-          -  B has at least one embedded dot, or B is the string "local".
-             then the reach of H is .B.
-
-       *  Otherwise, the reach of H is H.
-
-    >>> reach("www.acme.com")
-    '.acme.com'
-    >>> reach("acme.com")
-    'acme.com'
-    >>> reach("acme.local")
-    '.local'
-
-    """
-    i = h.find(".")
-    if i >= 0:
-        #a = h[:i]  # this line is only here to show what a is
-        b = h[i+1:]
-        i = b.find(".")
-        if is_HDN(h) and (i >= 0 or b == "local"):
-            return "."+b
-    return h
-
-def is_third_party(request):
-    """
-
-    RFC 2965, section 3.3.6:
-
-        An unverifiable transaction is to a third-party host if its request-
-        host U does not domain-match the reach R of the request-host O in the
-        origin transaction.
-
-    """
-    req_host = request_host(request)
-    if not domain_match(req_host, reach(request.get_origin_req_host())):
-        return True
-    else:
-        return False
-
-
-class Cookie:
-    """HTTP Cookie.
-
-    This class represents both Netscape and RFC 2965 cookies.
-
-    This is deliberately a very simple class.  It just holds attributes.  It's
-    possible to construct Cookie instances that don't comply with the cookie
-    standards.  CookieJar.make_cookies is the factory function for Cookie
-    objects -- it deals with cookie parsing, supplying defaults, and
-    normalising to the representation used in this class.  CookiePolicy is
-    responsible for checking them to see whether they should be accepted from
-    and returned to the server.
-
-    Note that the port may be present in the headers, but unspecified ("Port"
-    rather than"Port=80", for example); if this is the case, port is None.
-
-    """
-
-    def __init__(self, version, name, value,
-                 port, port_specified,
-                 domain, domain_specified, domain_initial_dot,
-                 path, path_specified,
-                 secure,
-                 expires,
-                 discard,
-                 comment,
-                 comment_url,
-                 rest,
-                 rfc2109=False,
-                 ):
-
-        if version is not None: version = int(version)
-        if expires is not None: expires = int(expires)
-        if port is None and port_specified is True:
-            raise ValueError("if port is None, port_specified must be false")
-
-        self.version = version
-        self.name = name
-        self.value = value
-        self.port = port
-        self.port_specified = port_specified
-        # normalise case, as per RFC 2965 section 3.3.3
-        self.domain = domain.lower()
-        self.domain_specified = domain_specified
-        # Sigh.  We need to know whether the domain given in the
-        # cookie-attribute had an initial dot, in order to follow RFC 2965
-        # (as clarified in draft errata).  Needed for the returned $Domain
-        # value.
-        self.domain_initial_dot = domain_initial_dot
-        self.path = path
-        self.path_specified = path_specified
-        self.secure = secure
-        self.expires = expires
-        self.discard = discard
-        self.comment = comment
-        self.comment_url = comment_url
-        self.rfc2109 = rfc2109
-
-        self._rest = copy.copy(rest)
-
-    def has_nonstandard_attr(self, name):
-        return name in self._rest
-    def get_nonstandard_attr(self, name, default=None):
-        return self._rest.get(name, default)
-    def set_nonstandard_attr(self, name, value):
-        self._rest[name] = value
-
-    def is_expired(self, now=None):
-        if now is None: now = time.time()
-        if (self.expires is not None) and (self.expires <= now):
-            return True
-        return False
-
-    def __str__(self):
-        if self.port is None: p = ""
-        else: p = ":"+self.port
-        limit = self.domain + p + self.path
-        if self.value is not None:
-            namevalue = "%s=%s" % (self.name, self.value)
-        else:
-            namevalue = self.name
-        return "<Cookie %s for %s>" % (namevalue, limit)
-
-    def __repr__(self):
-        args = []
-        for name in ("version", "name", "value",
-                     "port", "port_specified",
-                     "domain", "domain_specified", "domain_initial_dot",
-                     "path", "path_specified",
-                     "secure", "expires", "discard", "comment", "comment_url",
-                     ):
-            attr = getattr(self, name)
-            args.append("%s=%s" % (name, repr(attr)))
-        args.append("rest=%s" % repr(self._rest))
-        args.append("rfc2109=%s" % repr(self.rfc2109))
-        return "Cookie(%s)" % ", ".join(args)
-
-
-class CookiePolicy:
-    """Defines which cookies get accepted from and returned to server.
-
-    May also modify cookies, though this is probably a bad idea.
-
-    The subclass DefaultCookiePolicy defines the standard rules for Netscape
-    and RFC 2965 cookies -- override that if you want a customised policy.
-
-    """
-    def set_ok(self, cookie, request):
-        """Return true if (and only if) cookie should be accepted from server.
-
-        Currently, pre-expired cookies never get this far -- the CookieJar
-        class deletes such cookies itself.
-
-        """
-        raise NotImplementedError()
-
-    def return_ok(self, cookie, request):
-        """Return true if (and only if) cookie should be returned to server."""
-        raise NotImplementedError()
-
-    def domain_return_ok(self, domain, request):
-        """Return false if cookies should not be returned, given cookie domain.
-        """
-        return True
-
-    def path_return_ok(self, path, request):
-        """Return false if cookies should not be returned, given cookie path.
-        """
-        return True
-
-
-class DefaultCookiePolicy(CookiePolicy):
-    """Implements the standard rules for accepting and returning cookies."""
-
-    DomainStrictNoDots = 1
-    DomainStrictNonDomain = 2
-    DomainRFC2965Match = 4
-
-    DomainLiberal = 0
-    DomainStrict = DomainStrictNoDots|DomainStrictNonDomain
-
-    def __init__(self,
-                 blocked_domains=None, allowed_domains=None,
-                 netscape=True, rfc2965=False,
-                 rfc2109_as_netscape=None,
-                 hide_cookie2=False,
-                 strict_domain=False,
-                 strict_rfc2965_unverifiable=True,
-                 strict_ns_unverifiable=False,
-                 strict_ns_domain=DomainLiberal,
-                 strict_ns_set_initial_dollar=False,
-                 strict_ns_set_path=False,
-                 ):
-        """Constructor arguments should be passed as keyword arguments only."""
-        self.netscape = netscape
-        self.rfc2965 = rfc2965
-        self.rfc2109_as_netscape = rfc2109_as_netscape
-        self.hide_cookie2 = hide_cookie2
-        self.strict_domain = strict_domain
-        self.strict_rfc2965_unverifiable = strict_rfc2965_unverifiable
-        self.strict_ns_unverifiable = strict_ns_unverifiable
-        self.strict_ns_domain = strict_ns_domain
-        self.strict_ns_set_initial_dollar = strict_ns_set_initial_dollar
-        self.strict_ns_set_path = strict_ns_set_path
-
-        if blocked_domains is not None:
-            self._blocked_domains = tuple(blocked_domains)
-        else:
-            self._blocked_domains = ()
-
-        if allowed_domains is not None:
-            allowed_domains = tuple(allowed_domains)
-        self._allowed_domains = allowed_domains
-
-    def blocked_domains(self):
-        """Return the sequence of blocked domains (as a tuple)."""
-        return self._blocked_domains
-    def set_blocked_domains(self, blocked_domains):
-        """Set the sequence of blocked domains."""
-        self._blocked_domains = tuple(blocked_domains)
-
-    def is_blocked(self, domain):
-        for blocked_domain in self._blocked_domains:
-            if user_domain_match(domain, blocked_domain):
-                return True
-        return False
-
-    def allowed_domains(self):
-        """Return None, or the sequence of allowed domains (as a tuple)."""
-        return self._allowed_domains
-    def set_allowed_domains(self, allowed_domains):
-        """Set the sequence of allowed domains, or None."""
-        if allowed_domains is not None:
-            allowed_domains = tuple(allowed_domains)
-        self._allowed_domains = allowed_domains
-
-    def is_not_allowed(self, domain):
-        if self._allowed_domains is None:
-            return False
-        for allowed_domain in self._allowed_domains:
-            if user_domain_match(domain, allowed_domain):
-                return False
-        return True
-
-    def set_ok(self, cookie, request):
-        """
-        If you override .set_ok(), be sure to call this method.  If it returns
-        false, so should your subclass (assuming your subclass wants to be more
-        strict about which cookies to accept).
-
-        """
-        _debug(" - checking cookie %s=%s", cookie.name, cookie.value)
-
-        assert cookie.name is not None
-
-        for n in "version", "verifiability", "name", "path", "domain", "port":
-            fn_name = "set_ok_"+n
-            fn = getattr(self, fn_name)
-            if not fn(cookie, request):
-                return False
-
-        return True
-
-    def set_ok_version(self, cookie, request):
-        if cookie.version is None:
-            # Version is always set to 0 by parse_ns_headers if it's a Netscape
-            # cookie, so this must be an invalid RFC 2965 cookie.
-            _debug("   Set-Cookie2 without version attribute (%s=%s)",
-                   cookie.name, cookie.value)
-            return False
-        if cookie.version > 0 and not self.rfc2965:
-            _debug("   RFC 2965 cookies are switched off")
-            return False
-        elif cookie.version == 0 and not self.netscape:
-            _debug("   Netscape cookies are switched off")
-            return False
-        return True
-
-    def set_ok_verifiability(self, cookie, request):
-        if request.is_unverifiable() and is_third_party(request):
-            if cookie.version > 0 and self.strict_rfc2965_unverifiable:
-                _debug("   third-party RFC 2965 cookie during "
-                             "unverifiable transaction")
-                return False
-            elif cookie.version == 0 and self.strict_ns_unverifiable:
-                _debug("   third-party Netscape cookie during "
-                             "unverifiable transaction")
-                return False
-        return True
-
-    def set_ok_name(self, cookie, request):
-        # Try and stop servers setting V0 cookies designed to hack other
-        # servers that know both V0 and V1 protocols.
-        if (cookie.version == 0 and self.strict_ns_set_initial_dollar and
-            cookie.name.startswith("$")):
-            _debug("   illegal name (starts with '$'): '%s'", cookie.name)
-            return False
-        return True
-
-    def set_ok_path(self, cookie, request):
-        if cookie.path_specified:
-            req_path = request_path(request)
-            if ((cookie.version > 0 or
-                 (cookie.version == 0 and self.strict_ns_set_path)) and
-                not req_path.startswith(cookie.path)):
-                _debug("   path attribute %s is not a prefix of request "
-                       "path %s", cookie.path, req_path)
-                return False
-        return True
-
-    def set_ok_domain(self, cookie, request):
-        if self.is_blocked(cookie.domain):
-            _debug("   domain %s is in user block-list", cookie.domain)
-            return False
-        if self.is_not_allowed(cookie.domain):
-            _debug("   domain %s is not in user allow-list", cookie.domain)
-            return False
-        if cookie.domain_specified:
-            req_host, erhn = eff_request_host(request)
-            domain = cookie.domain
-            if self.strict_domain and (domain.count(".") >= 2):
-                # XXX This should probably be compared with the Konqueror
-                # (kcookiejar.cpp) and Mozilla implementations, but it's a
-                # losing battle.
-                i = domain.rfind(".")
-                j = domain.rfind(".", 0, i)
-                if j == 0:  # domain like .foo.bar
-                    tld = domain[i+1:]
-                    sld = domain[j+1:i]
-                    if sld.lower() in ("co", "ac", "com", "edu", "org", "net",
-                       "gov", "mil", "int", "aero", "biz", "cat", "coop",
-                       "info", "jobs", "mobi", "museum", "name", "pro",
-                       "travel", "eu") and len(tld) == 2:
-                        # domain like .co.uk
-                        _debug("   country-code second level domain %s", domain)
-                        return False
-            if domain.startswith("."):
-                undotted_domain = domain[1:]
-            else:
-                undotted_domain = domain
-            embedded_dots = (undotted_domain.find(".") >= 0)
-            if not embedded_dots and domain != ".local":
-                _debug("   non-local domain %s contains no embedded dot",
-                       domain)
-                return False
-            if cookie.version == 0:
-                if (not erhn.endswith(domain) and
-                    (not erhn.startswith(".") and
-                     not ("."+erhn).endswith(domain))):
-                    _debug("   effective request-host %s (even with added "
-                           "initial dot) does not end end with %s",
-                           erhn, domain)
-                    return False
-            if (cookie.version > 0 or
-                (self.strict_ns_domain & self.DomainRFC2965Match)):
-                if not domain_match(erhn, domain):
-                    _debug("   effective request-host %s does not domain-match "
-                           "%s", erhn, domain)
-                    return False
-            if (cookie.version > 0 or
-                (self.strict_ns_domain & self.DomainStrictNoDots)):
-                host_prefix = req_host[:-len(domain)]
-                if (host_prefix.find(".") >= 0 and
-                    not IPV4_RE.search(req_host)):
-                    _debug("   host prefix %s for domain %s contains a dot",
-                           host_prefix, domain)
-                    return False
-        return True
-
-    def set_ok_port(self, cookie, request):
-        if cookie.port_specified:
-            req_port = request_port(request)
-            if req_port is None:
-                req_port = "80"
-            else:
-                req_port = str(req_port)
-            for p in cookie.port.split(","):
-                try:
-                    int(p)
-                except ValueError:
-                    _debug("   bad port %s (not numeric)", p)
-                    return False
-                if p == req_port:
-                    break
-            else:
-                _debug("   request port (%s) not found in %s",
-                       req_port, cookie.port)
-                return False
-        return True
-
-    def return_ok(self, cookie, request):
-        """
-        If you override .return_ok(), be sure to call this method.  If it
-        returns false, so should your subclass (assuming your subclass wants to
-        be more strict about which cookies to return).
-
-        """
-        # Path has already been checked by .path_return_ok(), and domain
-        # blocking done by .domain_return_ok().
-        _debug(" - checking cookie %s=%s", cookie.name, cookie.value)
-
-        for n in "version", "verifiability", "secure", "expires", "port", "domain":
-            fn_name = "return_ok_"+n
-            fn = getattr(self, fn_name)
-            if not fn(cookie, request):
-                return False
-        return True
-
-    def return_ok_version(self, cookie, request):
-        if cookie.version > 0 and not self.rfc2965:
-            _debug("   RFC 2965 cookies are switched off")
-            return False
-        elif cookie.version == 0 and not self.netscape:
-            _debug("   Netscape cookies are switched off")
-            return False
-        return True
-
-    def return_ok_verifiability(self, cookie, request):
-        if request.is_unverifiable() and is_third_party(request):
-            if cookie.version > 0 and self.strict_rfc2965_unverifiable:
-                _debug("   third-party RFC 2965 cookie during unverifiable "
-                       "transaction")
-                return False
-            elif cookie.version == 0 and self.strict_ns_unverifiable:
-                _debug("   third-party Netscape cookie during unverifiable "
-                       "transaction")
-                return False
-        return True
-
-    def return_ok_secure(self, cookie, request):
-        if cookie.secure and request.get_type() != "https":
-            _debug("   secure cookie with non-secure request")
-            return False
-        return True
-
-    def return_ok_expires(self, cookie, request):
-        if cookie.is_expired(self._now):
-            _debug("   cookie expired")
-            return False
-        return True
-
-    def return_ok_port(self, cookie, request):
-        if cookie.port:
-            req_port = request_port(request)
-            if req_port is None:
-                req_port = "80"
-            for p in cookie.port.split(","):
-                if p == req_port:
-                    break
-            else:
-                _debug("   request port %s does not match cookie port %s",
-                       req_port, cookie.port)
-                return False
-        return True
-
-    def return_ok_domain(self, cookie, request):
-        req_host, erhn = eff_request_host(request)
-        domain = cookie.domain
-
-        # strict check of non-domain cookies: Mozilla does this, MSIE5 doesn't
-        if (cookie.version == 0 and
-            (self.strict_ns_domain & self.DomainStrictNonDomain) and
-            not cookie.domain_specified and domain != erhn):
-            _debug("   cookie with unspecified domain does not string-compare "
-                   "equal to request domain")
-            return False
-
-        if cookie.version > 0 and not domain_match(erhn, domain):
-            _debug("   effective request-host name %s does not domain-match "
-                   "RFC 2965 cookie domain %s", erhn, domain)
-            return False
-        if cookie.version == 0 and not ("."+erhn).endswith(domain):
-            _debug("   request-host %s does not match Netscape cookie domain "
-                   "%s", req_host, domain)
-            return False
-        return True
-
-    def domain_return_ok(self, domain, request):
-        # Liberal check of.  This is here as an optimization to avoid
-        # having to load lots of MSIE cookie files unless necessary.
-        req_host, erhn = eff_request_host(request)
-        if not req_host.startswith("."):
-            req_host = "."+req_host
-        if not erhn.startswith("."):
-            erhn = "."+erhn
-        if not (req_host.endswith(domain) or erhn.endswith(domain)):
-            #_debug("   request domain %s does not match cookie domain %s",
-            #       req_host, domain)
-            return False
-
-        if self.is_blocked(domain):
-            _debug("   domain %s is in user block-list", domain)
-            return False
-        if self.is_not_allowed(domain):
-            _debug("   domain %s is not in user allow-list", domain)
-            return False
-
-        return True
-
-    def path_return_ok(self, path, request):
-        _debug("- checking cookie path=%s", path)
-        req_path = request_path(request)
-        if not req_path.startswith(path):
-            _debug("  %s does not path-match %s", req_path, path)
-            return False
-        return True
-
-
-def vals_sorted_by_key(adict):
-    keys = adict.keys()
-    keys.sort()
-    return map(adict.get, keys)
-
-def deepvalues(mapping):
-    """Iterates over nested mapping, depth-first, in sorted order by key."""
-    values = vals_sorted_by_key(mapping)
-    for obj in values:
-        mapping = False
-        try:
-            obj.items
-        except AttributeError:
-            pass
-        else:
-            mapping = True
-            for subobj in deepvalues(obj):
-                yield subobj
-        if not mapping:
-            yield obj
-
-
-# Used as second parameter to dict.get() method, to distinguish absent
-# dict key from one with a None value.
-class Absent: pass
-
-class CookieJar:
-    """Collection of HTTP cookies.
-
-    You may not need to know about this class: try
-    urllib2.build_opener(HTTPCookieProcessor).open(url).
-
-    """
-
-    non_word_re = re.compile(r"\W")
-    quote_re = re.compile(r"([\"\\])")
-    strict_domain_re = re.compile(r"\.?[^.]*")
-    domain_re = re.compile(r"[^.]*")
-    dots_re = re.compile(r"^\.+")
-
-    magic_re = r"^\#LWP-Cookies-(\d+\.\d+)"
-
-    def __init__(self, policy=None):
-        if policy is None:
-            policy = DefaultCookiePolicy()
-        self._policy = policy
-
-        self._cookies_lock = _threading.RLock()
-        self._cookies = {}
-
-    def set_policy(self, policy):
-        self._policy = policy
-
-    def _cookies_for_domain(self, domain, request):
-        cookies = []
-        if not self._policy.domain_return_ok(domain, request):
-            return []
-        _debug("Checking %s for cookies to return", domain)
-        cookies_by_path = self._cookies[domain]
-        for path in cookies_by_path.keys():
-            if not self._policy.path_return_ok(path, request):
-                continue
-            cookies_by_name = cookies_by_path[path]
-            for cookie in cookies_by_name.values():
-                if not self._policy.return_ok(cookie, request):
-                    _debug("   not returning cookie")
-                    continue
-                _debug("   it's a match")
-                cookies.append(cookie)
-        return cookies
-
-    def _cookies_for_request(self, request):
-        """Return a list of cookies to be returned to server."""
-        cookies = []
-        for domain in self._cookies.keys():
-            cookies.extend(self._cookies_for_domain(domain, request))
-        return cookies
-
-    def _cookie_attrs(self, cookies):
-        """Return a list of cookie-attributes to be returned to server.
-
-        like ['foo="bar"; $Path="/"', ...]
-
-        The $Version attribute is also added when appropriate (currently only
-        once per request).
-
-        """
-        # add cookies in order of most specific (ie. longest) path first
-        cookies.sort(key=lambda arg: len(arg.path), reverse=True)
-
-        version_set = False
-
-        attrs = []
-        for cookie in cookies:
-            # set version of Cookie header
-            # XXX
-            # What should it be if multiple matching Set-Cookie headers have
-            #  different versions themselves?
-            # Answer: there is no answer; was supposed to be settled by
-            #  RFC 2965 errata, but that may never appear...
-            version = cookie.version
-            if not version_set:
-                version_set = True
-                if version > 0:
-                    attrs.append("$Version=%s" % version)
-
-            # quote cookie value if necessary
-            # (not for Netscape protocol, which already has any quotes
-            #  intact, due to the poorly-specified Netscape Cookie: syntax)
-            if ((cookie.value is not None) and
-                self.non_word_re.search(cookie.value) and version > 0):
-                value = self.quote_re.sub(r"\\\1", cookie.value)
-            else:
-                value = cookie.value
-
-            # add cookie-attributes to be returned in Cookie header
-            if cookie.value is None:
-                attrs.append(cookie.name)
-            else:
-                attrs.append("%s=%s" % (cookie.name, value))
-            if version > 0:
-                if cookie.path_specified:
-                    attrs.append('$Path="%s"' % cookie.path)
-                if cookie.domain.startswith("."):
-                    domain = cookie.domain
-                    if (not cookie.domain_initial_dot and
-                        domain.startswith(".")):
-                        domain = domain[1:]
-                    attrs.append('$Domain="%s"' % domain)
-                if cookie.port is not None:
-                    p = "$Port"
-                    if cookie.port_specified:
-                        p = p + ('="%s"' % cookie.port)
-                    attrs.append(p)
-
-        return attrs
-
-    def add_cookie_header(self, request):
-        """Add correct Cookie: header to request (urllib2.Request object).
-
-        The Cookie2 header is also added unless policy.hide_cookie2 is true.
-
-        """
-        _debug("add_cookie_header")
-        self._cookies_lock.acquire()
-        try:
-
-            self._policy._now = self._now = int(time.time())
-
-            cookies = self._cookies_for_request(request)
-
-            attrs = self._cookie_attrs(cookies)
-            if attrs:
-                if not request.has_header("Cookie"):
-                    request.add_unredirected_header(
-                        "Cookie", "; ".join(attrs))
-
-            # if necessary, advertise that we know RFC 2965
-            if (self._policy.rfc2965 and not self._policy.hide_cookie2 and
-                not request.has_header("Cookie2")):
-                for cookie in cookies:
-                    if cookie.version != 1:
-                        request.add_unredirected_header("Cookie2", '$Version="1"')
-                        break
-
-        finally:
-            self._cookies_lock.release()
-
-        self.clear_expired_cookies()
-
-    def _normalized_cookie_tuples(self, attrs_set):
-        """Return list of tuples containing normalised cookie information.
-
-        attrs_set is the list of lists of key,value pairs extracted from
-        the Set-Cookie or Set-Cookie2 headers.
-
-        Tuples are name, value, standard, rest, where name and value are the
-        cookie name and value, standard is a dictionary containing the standard
-        cookie-attributes (discard, secure, version, expires or max-age,
-        domain, path and port) and rest is a dictionary containing the rest of
-        the cookie-attributes.
-
-        """
-        cookie_tuples = []
-
-        boolean_attrs = "discard", "secure"
-        value_attrs = ("version",
-                       "expires", "max-age",
-                       "domain", "path", "port",
-                       "comment", "commenturl")
-
-        for cookie_attrs in attrs_set:
-            name, value = cookie_attrs[0]
-
-            # Build dictionary of standard cookie-attributes (standard) and
-            # dictionary of other cookie-attributes (rest).
-
-            # Note: expiry time is normalised to seconds since epoch.  V0
-            # cookies should have the Expires cookie-attribute, and V1 cookies
-            # should have Max-Age, but since V1 includes RFC 2109 cookies (and
-            # since V0 cookies may be a mish-mash of Netscape and RFC 2109), we
-            # accept either (but prefer Max-Age).
-            max_age_set = False
-
-            bad_cookie = False
-
-            standard = {}
-            rest = {}
-            for k, v in cookie_attrs[1:]:
-                lc = k.lower()
-                # don't lose case distinction for unknown fields
-                if lc in value_attrs or lc in boolean_attrs:
-                    k = lc
-                if k in boolean_attrs and v is None:
-                    # boolean cookie-attribute is present, but has no value
-                    # (like "discard", rather than "port=80")
-                    v = True
-                if k in standard:
-                    # only first value is significant
-                    continue
-                if k == "domain":
-                    if v is None:
-                        _debug("   missing value for domain attribute")
-                        bad_cookie = True
-                        break
-                    # RFC 2965 section 3.3.3
-                    v = v.lower()
-                if k == "expires":
-                    if max_age_set:
-                        # Prefer max-age to expires (like Mozilla)
-                        continue
-                    if v is None:
-                        _debug("   missing or invalid value for expires "
-                              "attribute: treating as session cookie")
-                        continue
-                if k == "max-age":
-                    max_age_set = True
-                    try:
-                        v = int(v)
-                    except ValueError:
-                        _debug("   missing or invalid (non-numeric) value for "
-                              "max-age attribute")
-                        bad_cookie = True
-                        break
-                    # convert RFC 2965 Max-Age to seconds since epoch
-                    # XXX Strictly you're supposed to follow RFC 2616
-                    #   age-calculation rules.  Remember that zero Max-Age is a
-                    #   is a request to discard (old and new) cookie, though.
-                    k = "expires"
-                    v = self._now + v
-                if (k in value_attrs) or (k in boolean_attrs):
-                    if (v is None and
-                        k not in ("port", "comment", "commenturl")):
-                        _debug("   missing value for %s attribute" % k)
-                        bad_cookie = True
-                        break
-                    standard[k] = v
-                else:
-                    rest[k] = v
-
-            if bad_cookie:
-                continue
-
-            cookie_tuples.append((name, value, standard, rest))
-
-        return cookie_tuples
-
-    def _cookie_from_cookie_tuple(self, tup, request):
-        # standard is dict of standard cookie-attributes, rest is dict of the
-        # rest of them
-        name, value, standard, rest = tup
-
-        domain = standard.get("domain", Absent)
-        path = standard.get("path", Absent)
-        port = standard.get("port", Absent)
-        expires = standard.get("expires", Absent)
-
-        # set the easy defaults
-        version = standard.get("version", None)
-        if version is not None:
-            try:
-                version = int(version)
-            except ValueError:
-                return None  # invalid version, ignore cookie
-        secure = standard.get("secure", False)
-        # (discard is also set if expires is Absent)
-        discard = standard.get("discard", False)
-        comment = standard.get("comment", None)
-        comment_url = standard.get("commenturl", None)
-
-        # set default path
-        if path is not Absent and path != "":
-            path_specified = True
-            path = escape_path(path)
-        else:
-            path_specified = False
-            path = request_path(request)
-            i = path.rfind("/")
-            if i != -1:
-                if version == 0:
-                    # Netscape spec parts company from reality here
-                    path = path[:i]
-                else:
-                    path = path[:i+1]
-            if len(path) == 0: path = "/"
-
-        # set default domain
-        domain_specified = domain is not Absent
-        # but first we have to remember whether it starts with a dot
-        domain_initial_dot = False
-        if domain_specified:
-            domain_initial_dot = bool(domain.startswith("."))
-        if domain is Absent:
-            req_host, erhn = eff_request_host(request)
-            domain = erhn
-        elif not domain.startswith("."):
-            domain = "."+domain
-
-        # set default port
-        port_specified = False
-        if port is not Absent:
-            if port is None:
-                # Port attr present, but has no value: default to request port.
-                # Cookie should then only be sent back on that port.
-                port = request_port(request)
-            else:
-                port_specified = True
-                port = re.sub(r"\s+", "", port)
-        else:
-            # No port attr present.  Cookie can be sent back on any port.
-            port = None
-
-        # set default expires and discard
-        if expires is Absent:
-            expires = None
-            discard = True
-        elif expires <= self._now:
-            # Expiry date in past is request to delete cookie.  This can't be
-            # in DefaultCookiePolicy, because can't delete cookies there.
-            try:
-                self.clear(domain, path, name)
-            except KeyError:
-                pass
-            _debug("Expiring cookie, domain='%s', path='%s', name='%s'",
-                   domain, path, name)
-            return None
-
-        return Cookie(version,
-                      name, value,
-                      port, port_specified,
-                      domain, domain_specified, domain_initial_dot,
-                      path, path_specified,
-                      secure,
-                      expires,
-                      discard,
-                      comment,
-                      comment_url,
-                      rest)
-
-    def _cookies_from_attrs_set(self, attrs_set, request):
-        cookie_tuples = self._normalized_cookie_tuples(attrs_set)
-
-        cookies = []
-        for tup in cookie_tuples:
-            cookie = self._cookie_from_cookie_tuple(tup, request)
-            if cookie: cookies.append(cookie)
-        return cookies
-
-    def _process_rfc2109_cookies(self, cookies):
-        rfc2109_as_ns = getattr(self._policy, 'rfc2109_as_netscape', None)
-        if rfc2109_as_ns is None:
-            rfc2109_as_ns = not self._policy.rfc2965
-        for cookie in cookies:
-            if cookie.version == 1:
-                cookie.rfc2109 = True
-                if rfc2109_as_ns:
-                    # treat 2109 cookies as Netscape cookies rather than
-                    # as RFC2965 cookies
-                    cookie.version = 0
-
-    def make_cookies(self, response, request):
-        """Return sequence of Cookie objects extracted from response object."""
-        # get cookie-attributes for RFC 2965 and Netscape protocols
-        headers = response.info()
-        rfc2965_hdrs = headers.getheaders("Set-Cookie2")
-        ns_hdrs = headers.getheaders("Set-Cookie")
-
-        rfc2965 = self._policy.rfc2965
-        netscape = self._policy.netscape
-
-        if ((not rfc2965_hdrs and not ns_hdrs) or
-            (not ns_hdrs and not rfc2965) or
-            (not rfc2965_hdrs and not netscape) or
-            (not netscape and not rfc2965)):
-            return []  # no relevant cookie headers: quick exit
-
-        try:
-            cookies = self._cookies_from_attrs_set(
-                split_header_words(rfc2965_hdrs), request)
-        except Exception:
-            _warn_unhandled_exception()
-            cookies = []
-
-        if ns_hdrs and netscape:
-            try:
-                # RFC 2109 and Netscape cookies
-                ns_cookies = self._cookies_from_attrs_set(
-                    parse_ns_headers(ns_hdrs), request)
-            except Exception:
-                _warn_unhandled_exception()
-                ns_cookies = []
-            self._process_rfc2109_cookies(ns_cookies)
-
-            # Look for Netscape cookies (from Set-Cookie headers) that match
-            # corresponding RFC 2965 cookies (from Set-Cookie2 headers).
-            # For each match, keep the RFC 2965 cookie and ignore the Netscape
-            # cookie (RFC 2965 section 9.1).  Actually, RFC 2109 cookies are
-            # bundled in with the Netscape cookies for this purpose, which is
-            # reasonable behaviour.
-            if rfc2965:
-                lookup = {}
-                for cookie in cookies:
-                    lookup[(cookie.domain, cookie.path, cookie.name)] = None
-
-                def no_matching_rfc2965(ns_cookie, lookup=lookup):
-                    key = ns_cookie.domain, ns_cookie.path, ns_cookie.name
-                    return key not in lookup
-                ns_cookies = filter(no_matching_rfc2965, ns_cookies)
-
-            if ns_cookies:
-                cookies.extend(ns_cookies)
-
-        return cookies
-
-    def set_cookie_if_ok(self, cookie, request):
-        """Set a cookie if policy says it's OK to do so."""
-        self._cookies_lock.acquire()
-        try:
-            self._policy._now = self._now = int(time.time())
-
-            if self._policy.set_ok(cookie, request):
-                self.set_cookie(cookie)
-
-
-        finally:
-            self._cookies_lock.release()
-
-    def set_cookie(self, cookie):
-        """Set a cookie, without checking whether or not it should be set."""
-        c = self._cookies
-        self._cookies_lock.acquire()
-        try:
-            if cookie.domain not in c: c[cookie.domain] = {}
-            c2 = c[cookie.domain]
-            if cookie.path not in c2: c2[cookie.path] = {}
-            c3 = c2[cookie.path]
-            c3[cookie.name] = cookie
-        finally:
-            self._cookies_lock.release()
-
-    def extract_cookies(self, response, request):
-        """Extract cookies from response, where allowable given the request."""
-        _debug("extract_cookies: %s", response.info())
-        self._cookies_lock.acquire()
-        try:
-            self._policy._now = self._now = int(time.time())
-
-            for cookie in self.make_cookies(response, request):
-                if self._policy.set_ok(cookie, request):
-                    _debug(" setting cookie: %s", cookie)
-                    self.set_cookie(cookie)
-        finally:
-            self._cookies_lock.release()
-
-    def clear(self, domain=None, path=None, name=None):
-        """Clear some cookies.
-
-        Invoking this method without arguments will clear all cookies.  If
-        given a single argument, only cookies belonging to that domain will be
-        removed.  If given two arguments, cookies belonging to the specified
-        path within that domain are removed.  If given three arguments, then
-        the cookie with the specified name, path and domain is removed.
-
-        Raises KeyError if no matching cookie exists.
-
-        """
-        if name is not None:
-            if (domain is None) or (path is None):
-                raise ValueError(
-                    "domain and path must be given to remove a cookie by name")
-            del self._cookies[domain][path][name]
-        elif path is not None:
-            if domain is None:
-                raise ValueError(
-                    "domain must be given to remove cookies by path")
-            del self._cookies[domain][path]
-        elif domain is not None:
-            del self._cookies[domain]
-        else:
-            self._cookies = {}
-
-    def clear_session_cookies(self):
-        """Discard all session cookies.
-
-        Note that the .save() method won't save session cookies anyway, unless
-        you ask otherwise by passing a true ignore_discard argument.
-
-        """
-        self._cookies_lock.acquire()
-        try:
-            for cookie in self:
-                if cookie.discard:
-                    self.clear(cookie.domain, cookie.path, cookie.name)
-        finally:
-            self._cookies_lock.release()
-
-    def clear_expired_cookies(self):
-        """Discard all expired cookies.
-
-        You probably don't need to call this method: expired cookies are never
-        sent back to the server (provided you're using DefaultCookiePolicy),
-        this method is called by CookieJar itself every so often, and the
-        .save() method won't save expired cookies anyway (unless you ask
-        otherwise by passing a true ignore_expires argument).
-
-        """
-        self._cookies_lock.acquire()
-        try:
-            now = time.time()
-            for cookie in self:
-                if cookie.is_expired(now):
-                    self.clear(cookie.domain, cookie.path, cookie.name)
-        finally:
-            self._cookies_lock.release()
-
-    def __iter__(self):
-        return deepvalues(self._cookies)
-
-    def __len__(self):
-        """Return number of contained cookies."""
-        i = 0
-        for cookie in self: i = i + 1
-        return i
-
-    def __repr__(self):
-        r = []
-        for cookie in self: r.append(repr(cookie))
-        return "<%s[%s]>" % (self.__class__, ", ".join(r))
-
-    def __str__(self):
-        r = []
-        for cookie in self: r.append(str(cookie))
-        return "<%s[%s]>" % (self.__class__, ", ".join(r))
-
-
-# derives from IOError for backwards-compatibility with Python 2.4.0
-class LoadError(IOError): pass
-
-class FileCookieJar(CookieJar):
-    """CookieJar that can be loaded from and saved to a file."""
-
-    def __init__(self, filename=None, delayload=False, policy=None):
-        """
-        Cookies are NOT loaded from the named file until either the .load() or
-        .revert() method is called.
-
-        """
-        CookieJar.__init__(self, policy)
-        if filename is not None:
-            try:
-                filename+""
-            except:
-                raise ValueError("filename must be string-like")
-        self.filename = filename
-        self.delayload = bool(delayload)
-
-    def save(self, filename=None, ignore_discard=False, ignore_expires=False):
-        """Save cookies to a file."""
-        raise NotImplementedError()
-
-    def load(self, filename=None, ignore_discard=False, ignore_expires=False):
-        """Load cookies from a file."""
-        if filename is None:
-            if self.filename is not None: filename = self.filename
-            else: raise ValueError(MISSING_FILENAME_TEXT)
-
-        f = open(filename)
-        try:
-            self._really_load(f, filename, ignore_discard, ignore_expires)
-        finally:
-            f.close()
-
-    def revert(self, filename=None,
-               ignore_discard=False, ignore_expires=False):
-        """Clear all cookies and reload cookies from a saved file.
-
-        Raises LoadError (or IOError) if reversion is not successful; the
-        object's state will not be altered if this happens.
-
-        """
-        if filename is None:
-            if self.filename is not None: filename = self.filename
-            else: raise ValueError(MISSING_FILENAME_TEXT)
-
-        self._cookies_lock.acquire()
-        try:
-
-            old_state = copy.deepcopy(self._cookies)
-            self._cookies = {}
-            try:
-                self.load(filename, ignore_discard, ignore_expires)
-            except (LoadError, IOError):
-                self._cookies = old_state
-                raise
-
-        finally:
-            self._cookies_lock.release()
-
-from _LWPCookieJar import LWPCookieJar, lwp_cookie_str
-from _MozillaCookieJar import MozillaCookieJar
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/copy.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/copy.py
deleted file mode 100644
index c9792f7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/copy.py
+++ /dev/null
@@ -1,433 +0,0 @@
-"""Generic (shallow and deep) copying operations.
-
-Interface summary:
-
-        import copy
-
-        x = copy.copy(y)        # make a shallow copy of y
-        x = copy.deepcopy(y)    # make a deep copy of y
-
-For module specific errors, copy.Error is raised.
-
-The difference between shallow and deep copying is only relevant for
-compound objects (objects that contain other objects, like lists or
-class instances).
-
-- A shallow copy constructs a new compound object and then (to the
-  extent possible) inserts *the same objects* into it that the
-  original contains.
-
-- A deep copy constructs a new compound object and then, recursively,
-  inserts *copies* into it of the objects found in the original.
-
-Two problems often exist with deep copy operations that don't exist
-with shallow copy operations:
-
- a) recursive objects (compound objects that, directly or indirectly,
-    contain a reference to themselves) may cause a recursive loop
-
- b) because deep copy copies *everything* it may copy too much, e.g.
-    administrative data structures that should be shared even between
-    copies
-
-Python's deep copy operation avoids these problems by:
-
- a) keeping a table of objects already copied during the current
-    copying pass
-
- b) letting user-defined classes override the copying operation or the
-    set of components copied
-
-This version does not copy types like module, class, function, method,
-nor stack trace, stack frame, nor file, socket, window, nor array, nor
-any similar types.
-
-Classes can use the same interfaces to control copying that they use
-to control pickling: they can define methods called __getinitargs__(),
-__getstate__() and __setstate__().  See the documentation for module
-"pickle" for information on these methods.
-"""
-
-import types
-import weakref
-from copy_reg import dispatch_table
-
-class Error(Exception):
-    pass
-error = Error   # backward compatibility
-
-try:
-    from org.python.core import PyStringMap
-except ImportError:
-    PyStringMap = None
-
-__all__ = ["Error", "copy", "deepcopy"]
-
-def copy(x):
-    """Shallow copy operation on arbitrary Python objects.
-
-    See the module's __doc__ string for more info.
-    """
-
-    cls = type(x)
-
-    copier = _copy_dispatch.get(cls)
-    if copier:
-        return copier(x)
-
-    copier = getattr(cls, "__copy__", None)
-    if copier:
-        return copier(x)
-
-    reductor = dispatch_table.get(cls)
-    if reductor:
-        rv = reductor(x)
-    else:
-        reductor = getattr(x, "__reduce_ex__", None)
-        if reductor:
-            rv = reductor(2)
-        else:
-            reductor = getattr(x, "__reduce__", None)
-            if reductor:
-                rv = reductor()
-            else:
-                raise Error("un(shallow)copyable object of type %s" % cls)
-
-    return _reconstruct(x, rv, 0)
-
-
-_copy_dispatch = d = {}
-
-def _copy_immutable(x):
-    return x
-for t in (type(None), int, long, float, bool, str, tuple,
-          frozenset, type, xrange, types.ClassType,
-          types.BuiltinFunctionType, type(Ellipsis),
-          types.FunctionType, weakref.ref):
-    d[t] = _copy_immutable
-for name in ("ComplexType", "UnicodeType", "CodeType"):
-    t = getattr(types, name, None)
-    if t is not None:
-        d[t] = _copy_immutable
-
-def _copy_with_constructor(x):
-    return type(x)(x)
-for t in (list, dict, set):
-    d[t] = _copy_with_constructor
-
-def _copy_with_copy_method(x):
-    return x.copy()
-if PyStringMap is not None:
-    d[PyStringMap] = _copy_with_copy_method
-
-def _copy_inst(x):
-    if hasattr(x, '__copy__'):
-        return x.__copy__()
-    if hasattr(x, '__getinitargs__'):
-        args = x.__getinitargs__()
-        y = x.__class__(*args)
-    else:
-        y = _EmptyClass()
-        y.__class__ = x.__class__
-    if hasattr(x, '__getstate__'):
-        state = x.__getstate__()
-    else:
-        state = x.__dict__
-    if hasattr(y, '__setstate__'):
-        y.__setstate__(state)
-    else:
-        y.__dict__.update(state)
-    return y
-d[types.InstanceType] = _copy_inst
-
-del d
-
-def deepcopy(x, memo=None, _nil=[]):
-    """Deep copy operation on arbitrary Python objects.
-
-    See the module's __doc__ string for more info.
-    """
-
-    if memo is None:
-        memo = {}
-
-    d = id(x)
-    y = memo.get(d, _nil)
-    if y is not _nil:
-        return y
-
-    cls = type(x)
-
-    copier = _deepcopy_dispatch.get(cls)
-    if copier:
-        y = copier(x, memo)
-    else:
-        try:
-            issc = issubclass(cls, type)
-        except TypeError: # cls is not a class (old Boost; see SF #502085)
-            issc = 0
-        if issc:
-            y = _deepcopy_atomic(x, memo)
-        else:
-            copier = getattr(x, "__deepcopy__", None)
-            if copier:
-                y = copier(memo)
-            else:
-                reductor = dispatch_table.get(cls)
-                if reductor:
-                    rv = reductor(x)
-                else:
-                    reductor = getattr(x, "__reduce_ex__", None)
-                    if reductor:
-                        rv = reductor(2)
-                    else:
-                        reductor = getattr(x, "__reduce__", None)
-                        if reductor:
-                            rv = reductor()
-                        else:
-                            raise Error(
-                                "un(deep)copyable object of type %s" % cls)
-                y = _reconstruct(x, rv, 1, memo)
-
-    memo[d] = y
-    _keep_alive(x, memo) # Make sure x lives at least as long as d
-    return y
-
-_deepcopy_dispatch = d = {}
-
-def _deepcopy_atomic(x, memo):
-    return x
-d[type(None)] = _deepcopy_atomic
-d[type(Ellipsis)] = _deepcopy_atomic
-d[int] = _deepcopy_atomic
-d[long] = _deepcopy_atomic
-d[float] = _deepcopy_atomic
-d[bool] = _deepcopy_atomic
-try:
-    d[complex] = _deepcopy_atomic
-except NameError:
-    pass
-d[str] = _deepcopy_atomic
-try:
-    d[unicode] = _deepcopy_atomic
-except NameError:
-    pass
-try:
-    d[types.CodeType] = _deepcopy_atomic
-except AttributeError:
-    pass
-d[type] = _deepcopy_atomic
-d[xrange] = _deepcopy_atomic
-d[types.ClassType] = _deepcopy_atomic
-d[types.BuiltinFunctionType] = _deepcopy_atomic
-d[types.FunctionType] = _deepcopy_atomic
-d[weakref.ref] = _deepcopy_atomic
-
-def _deepcopy_list(x, memo):
-    y = []
-    memo[id(x)] = y
-    for a in x:
-        y.append(deepcopy(a, memo))
-    return y
-d[list] = _deepcopy_list
-
-def _deepcopy_tuple(x, memo):
-    y = []
-    for a in x:
-        y.append(deepcopy(a, memo))
-    d = id(x)
-    try:
-        return memo[d]
-    except KeyError:
-        pass
-    for i in range(len(x)):
-        if x[i] is not y[i]:
-            y = tuple(y)
-            break
-    else:
-        y = x
-    memo[d] = y
-    return y
-d[tuple] = _deepcopy_tuple
-
-def _deepcopy_dict(x, memo):
-    y = {}
-    memo[id(x)] = y
-    for key, value in x.iteritems():
-        y[deepcopy(key, memo)] = deepcopy(value, memo)
-    return y
-d[dict] = _deepcopy_dict
-if PyStringMap is not None:
-    d[PyStringMap] = _deepcopy_dict
-
-def _deepcopy_method(x, memo): # Copy instance methods
-    return type(x)(x.im_func, deepcopy(x.im_self, memo), x.im_class)
-_deepcopy_dispatch[types.MethodType] = _deepcopy_method
-
-def _keep_alive(x, memo):
-    """Keeps a reference to the object x in the memo.
-
-    Because we remember objects by their id, we have
-    to assure that possibly temporary objects are kept
-    alive by referencing them.
-    We store a reference at the id of the memo, which should
-    normally not be used unless someone tries to deepcopy
-    the memo itself...
-    """
-    try:
-        memo[id(memo)].append(x)
-    except KeyError:
-        # aha, this is the first one :-)
-        memo[id(memo)]=[x]
-
-def _deepcopy_inst(x, memo):
-    if hasattr(x, '__deepcopy__'):
-        return x.__deepcopy__(memo)
-    if hasattr(x, '__getinitargs__'):
-        args = x.__getinitargs__()
-        args = deepcopy(args, memo)
-        y = x.__class__(*args)
-    else:
-        y = _EmptyClass()
-        y.__class__ = x.__class__
-    memo[id(x)] = y
-    if hasattr(x, '__getstate__'):
-        state = x.__getstate__()
-    else:
-        state = x.__dict__
-    state = deepcopy(state, memo)
-    if hasattr(y, '__setstate__'):
-        y.__setstate__(state)
-    else:
-        y.__dict__.update(state)
-    return y
-d[types.InstanceType] = _deepcopy_inst
-
-def _reconstruct(x, info, deep, memo=None):
-    if isinstance(info, str):
-        return x
-    assert isinstance(info, tuple)
-    if memo is None:
-        memo = {}
-    n = len(info)
-    assert n in (2, 3, 4, 5)
-    callable, args = info[:2]
-    if n > 2:
-        state = info[2]
-    else:
-        state = {}
-    if n > 3:
-        listiter = info[3]
-    else:
-        listiter = None
-    if n > 4:
-        dictiter = info[4]
-    else:
-        dictiter = None
-    if deep:
-        args = deepcopy(args, memo)
-    y = callable(*args)
-    memo[id(x)] = y
-
-    if state:
-        if deep:
-            state = deepcopy(state, memo)
-        if hasattr(y, '__setstate__'):
-            y.__setstate__(state)
-        else:
-            if isinstance(state, tuple) and len(state) == 2:
-                state, slotstate = state
-            else:
-                slotstate = None
-            if state is not None:
-                y.__dict__.update(state)
-            if slotstate is not None:
-                for key, value in slotstate.iteritems():
-                    setattr(y, key, value)
-
-    if listiter is not None:
-        for item in listiter:
-            if deep:
-                item = deepcopy(item, memo)
-            y.append(item)
-    if dictiter is not None:
-        for key, value in dictiter:
-            if deep:
-                key = deepcopy(key, memo)
-                value = deepcopy(value, memo)
-            y[key] = value
-    return y
-
-del d
-
-del types
-
-# Helper for instance creation without calling __init__
-class _EmptyClass:
-    pass
-
-def _test():
-    l = [None, 1, 2L, 3.14, 'xyzzy', (1, 2L), [3.14, 'abc'],
-         {'abc': 'ABC'}, (), [], {}]
-    l1 = copy(l)
-    print l1==l
-    l1 = map(copy, l)
-    print l1==l
-    l1 = deepcopy(l)
-    print l1==l
-    class C:
-        def __init__(self, arg=None):
-            self.a = 1
-            self.arg = arg
-            if __name__ == '__main__':
-                import sys
-                file = sys.argv[0]
-            else:
-                file = __file__
-            self.fp = open(file)
-            self.fp.close()
-        def __getstate__(self):
-            return {'a': self.a, 'arg': self.arg}
-        def __setstate__(self, state):
-            for key, value in state.iteritems():
-                setattr(self, key, value)
-        def __deepcopy__(self, memo=None):
-            new = self.__class__(deepcopy(self.arg, memo))
-            new.a = self.a
-            return new
-    c = C('argument sketch')
-    l.append(c)
-    l2 = copy(l)
-    print l == l2
-    print l
-    print l2
-    l2 = deepcopy(l)
-    print l == l2
-    print l
-    print l2
-    l.append({l[1]: l, 'xyz': l[2]})
-    l3 = copy(l)
-    import repr
-    print map(repr.repr, l)
-    print map(repr.repr, l1)
-    print map(repr.repr, l2)
-    print map(repr.repr, l3)
-    l3 = deepcopy(l)
-    import repr
-    print map(repr.repr, l)
-    print map(repr.repr, l1)
-    print map(repr.repr, l2)
-    print map(repr.repr, l3)
-    class odict(dict):
-        def __init__(self, d = {}):
-            self.a = 99
-            dict.__init__(self, d)
-        def __setitem__(self, k, i):
-            dict.__setitem__(self, k, i)
-            self.a
-    o = odict({"A" : "B"})
-    x = deepcopy(o)
-    print(o, x)
-
-if __name__ == '__main__':
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/copy_reg.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/copy_reg.py
deleted file mode 100644
index 72db74d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/copy_reg.py
+++ /dev/null
@@ -1,201 +0,0 @@
-"""Helper to provide extensibility for pickle/cPickle.
-
-This is only useful to add pickle support for extension types defined in
-C, not for instances of user-defined classes.
-"""
-
-from types import ClassType as _ClassType
-
-__all__ = ["pickle", "constructor",
-           "add_extension", "remove_extension", "clear_extension_cache"]
-
-dispatch_table = {}
-
-def pickle(ob_type, pickle_function, constructor_ob=None):
-    if type(ob_type) is _ClassType:
-        raise TypeError("copy_reg is not intended for use with classes")
-
-    if not hasattr(pickle_function, '__call__'):
-        raise TypeError("reduction functions must be callable")
-    dispatch_table[ob_type] = pickle_function
-
-    # The constructor_ob function is a vestige of safe for unpickling.
-    # There is no reason for the caller to pass it anymore.
-    if constructor_ob is not None:
-        constructor(constructor_ob)
-
-def constructor(object):
-    if not hasattr(object, '__call__'):
-        raise TypeError("constructors must be callable")
-
-# Example: provide pickling support for complex numbers.
-
-try:
-    complex
-except NameError:
-    pass
-else:
-
-    def pickle_complex(c):
-        return complex, (c.real, c.imag)
-
-    pickle(complex, pickle_complex, complex)
-
-# Support for pickling new-style objects
-
-def _reconstructor(cls, base, state):
-    if base is object:
-        obj = object.__new__(cls)
-    else:
-        obj = base.__new__(cls, state)
-        if base.__init__ != object.__init__:
-            base.__init__(obj, state)
-    return obj
-
-_HEAPTYPE = 1<<9
-
-# Python code for object.__reduce_ex__ for protocols 0 and 1
-
-def _reduce_ex(self, proto):
-    assert proto < 2
-    for base in self.__class__.__mro__:
-        if hasattr(base, '__flags__') and not base.__flags__ & _HEAPTYPE:
-            break
-    else:
-        base = object # not really reachable
-    if base is object:
-        state = None
-    else:
-        if base is self.__class__:
-            raise TypeError, "can't pickle %s objects" % base.__name__
-        state = base(self)
-    args = (self.__class__, base, state)
-    try:
-        getstate = self.__getstate__
-    except AttributeError:
-        if getattr(self, "__slots__", None):
-            raise TypeError("a class that defines __slots__ without "
-                            "defining __getstate__ cannot be pickled")
-        try:
-            dict = self.__dict__
-        except AttributeError:
-            dict = None
-    else:
-        dict = getstate()
-    if dict:
-        return _reconstructor, args, dict
-    else:
-        return _reconstructor, args
-
-# Helper for __reduce_ex__ protocol 2
-
-def __newobj__(cls, *args):
-    return cls.__new__(cls, *args)
-
-def _slotnames(cls):
-    """Return a list of slot names for a given class.
-
-    This needs to find slots defined by the class and its bases, so we
-    can't simply return the __slots__ attribute.  We must walk down
-    the Method Resolution Order and concatenate the __slots__ of each
-    class found there.  (This assumes classes don't modify their
-    __slots__ attribute to misrepresent their slots after the class is
-    defined.)
-    """
-
-    # Get the value from a cache in the class if possible
-    names = cls.__dict__.get("__slotnames__")
-    if names is not None:
-        return names
-
-    # Not cached -- calculate the value
-    names = []
-    if not hasattr(cls, "__slots__"):
-        # This class has no slots
-        pass
-    else:
-        # Slots found -- gather slot names from all base classes
-        for c in cls.__mro__:
-            if "__slots__" in c.__dict__:
-                slots = c.__dict__['__slots__']
-                # if class has a single slot, it can be given as a string
-                if isinstance(slots, basestring):
-                    slots = (slots,)
-                for name in slots:
-                    # special descriptors
-                    if name in ("__dict__", "__weakref__"):
-                        continue
-                    # mangled names
-                    elif name.startswith('__') and not name.endswith('__'):
-                        names.append('_%s%s' % (c.__name__, name))
-                    else:
-                        names.append(name)
-
-    # Cache the outcome in the class if at all possible
-    try:
-        cls.__slotnames__ = names
-    except:
-        pass # But don't die if we can't
-
-    return names
-
-# A registry of extension codes.  This is an ad-hoc compression
-# mechanism.  Whenever a global reference to <module>, <name> is about
-# to be pickled, the (<module>, <name>) tuple is looked up here to see
-# if it is a registered extension code for it.  Extension codes are
-# universal, so that the meaning of a pickle does not depend on
-# context.  (There are also some codes reserved for local use that
-# don't have this restriction.)  Codes are positive ints; 0 is
-# reserved.
-
-_extension_registry = {}                # key -> code
-_inverted_registry = {}                 # code -> key
-_extension_cache = {}                   # code -> object
-# Don't ever rebind those names:  cPickle grabs a reference to them when
-# it's initialized, and won't see a rebinding.
-
-def add_extension(module, name, code):
-    """Register an extension code."""
-    code = int(code)
-    if not 1 <= code <= 0x7fffffff:
-        raise ValueError, "code out of range"
-    key = (module, name)
-    if (_extension_registry.get(key) == code and
-        _inverted_registry.get(code) == key):
-        return # Redundant registrations are benign
-    if key in _extension_registry:
-        raise ValueError("key %s is already registered with code %s" %
-                         (key, _extension_registry[key]))
-    if code in _inverted_registry:
-        raise ValueError("code %s is already in use for key %s" %
-                         (code, _inverted_registry[code]))
-    _extension_registry[key] = code
-    _inverted_registry[code] = key
-
-def remove_extension(module, name, code):
-    """Unregister an extension code.  For testing only."""
-    key = (module, name)
-    if (_extension_registry.get(key) != code or
-        _inverted_registry.get(code) != key):
-        raise ValueError("key %s is not registered with code %s" %
-                         (key, code))
-    del _extension_registry[key]
-    del _inverted_registry[code]
-    if code in _extension_cache:
-        del _extension_cache[code]
-
-def clear_extension_cache():
-    _extension_cache.clear()
-
-# Standard extension code assignments
-
-# Reserved ranges
-
-# First  Last Count  Purpose
-#     1   127   127  Reserved for Python standard library
-#   128   191    64  Reserved for Zope
-#   192   239    48  Reserved for 3rd parties
-#   240   255    16  Reserved for private use (will never be assigned)
-#   256   Inf   Inf  Reserved for future assignment
-
-# Extension codes are assigned by the Python Software Foundation.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/csv.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/csv.py
deleted file mode 100644
index 9a2a4b2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/csv.py
+++ /dev/null
@@ -1,451 +0,0 @@
-
-"""
-csv.py - read/write/investigate CSV files
-"""
-
-import re
-from functools import reduce
-from _csv import Error, __version__, writer, reader, register_dialect, \
-                 unregister_dialect, get_dialect, list_dialects, \
-                 field_size_limit, \
-                 QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE, \
-                 __doc__
-from _csv import Dialect as _Dialect
-
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-__all__ = [ "QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE",
-            "Error", "Dialect", "__doc__", "excel", "excel_tab",
-            "field_size_limit", "reader", "writer",
-            "register_dialect", "get_dialect", "list_dialects", "Sniffer",
-            "unregister_dialect", "__version__", "DictReader", "DictWriter" ]
-
-class Dialect:
-    """Describe an Excel dialect.
-
-    This must be subclassed (see csv.excel).  Valid attributes are:
-    delimiter, quotechar, escapechar, doublequote, skipinitialspace,
-    lineterminator, quoting.
-
-    """
-    _name = ""
-    _valid = False
-    # placeholders
-    delimiter = None
-    quotechar = None
-    escapechar = None
-    doublequote = None
-    skipinitialspace = None
-    lineterminator = None
-    quoting = None
-
-    def __init__(self):
-        if self.__class__ != Dialect:
-            self._valid = True
-        self._validate()
-
-    def _validate(self):
-        try:
-            _Dialect(self)
-        except TypeError, e:
-            # We do this for compatibility with py2.3
-            raise Error(str(e))
-
-class excel(Dialect):
-    """Describe the usual properties of Excel-generated CSV files."""
-    delimiter = ','
-    quotechar = '"'
-    doublequote = True
-    skipinitialspace = False
-    lineterminator = '\r\n'
-    quoting = QUOTE_MINIMAL
-register_dialect("excel", excel)
-
-class excel_tab(excel):
-    """Describe the usual properties of Excel-generated TAB-delimited files."""
-    delimiter = '\t'
-register_dialect("excel-tab", excel_tab)
-
-
-class DictReader:
-    def __init__(self, f, fieldnames=None, restkey=None, restval=None,
-                 dialect="excel", *args, **kwds):
-        self._fieldnames = fieldnames   # list of keys for the dict
-        self.restkey = restkey          # key to catch long rows
-        self.restval = restval          # default value for short rows
-        self.reader = reader(f, dialect, *args, **kwds)
-        self.dialect = dialect
-        self.line_num = 0
-
-    def __iter__(self):
-        return self
-
-    @property
-    def fieldnames(self):
-        if self._fieldnames is None:
-            try:
-                self._fieldnames = self.reader.next()
-            except StopIteration:
-                pass
-        self.line_num = self.reader.line_num
-        return self._fieldnames
-
-    @fieldnames.setter
-    def fieldnames(self, value):
-        self._fieldnames = value
-
-    def next(self):
-        if self.line_num == 0:
-            # Used only for its side effect.
-            self.fieldnames
-        row = self.reader.next()
-        self.line_num = self.reader.line_num
-
-        # unlike the basic reader, we prefer not to return blanks,
-        # because we will typically wind up with a dict full of None
-        # values
-        while row == []:
-            row = self.reader.next()
-        d = dict(zip(self.fieldnames, row))
-        lf = len(self.fieldnames)
-        lr = len(row)
-        if lf < lr:
-            d[self.restkey] = row[lf:]
-        elif lf > lr:
-            for key in self.fieldnames[lr:]:
-                d[key] = self.restval
-        return d
-
-
-class DictWriter:
-    def __init__(self, f, fieldnames, restval="", extrasaction="raise",
-                 dialect="excel", *args, **kwds):
-        self.fieldnames = fieldnames    # list of keys for the dict
-        self.restval = restval          # for writing short dicts
-        if extrasaction.lower() not in ("raise", "ignore"):
-            raise ValueError, \
-                  ("extrasaction (%s) must be 'raise' or 'ignore'" %
-                   extrasaction)
-        self.extrasaction = extrasaction
-        self.writer = writer(f, dialect, *args, **kwds)
-
-    def writeheader(self):
-        header = dict(zip(self.fieldnames, self.fieldnames))
-        self.writerow(header)
-
-    def _dict_to_list(self, rowdict):
-        if self.extrasaction == "raise":
-            wrong_fields = [k for k in rowdict if k not in self.fieldnames]
-            if wrong_fields:
-                raise ValueError("dict contains fields not in fieldnames: " +
-                                 ", ".join(wrong_fields))
-        return [rowdict.get(key, self.restval) for key in self.fieldnames]
-
-    def writerow(self, rowdict):
-        return self.writer.writerow(self._dict_to_list(rowdict))
-
-    def writerows(self, rowdicts):
-        rows = []
-        for rowdict in rowdicts:
-            rows.append(self._dict_to_list(rowdict))
-        return self.writer.writerows(rows)
-
-# Guard Sniffer's type checking against builds that exclude complex()
-try:
-    complex
-except NameError:
-    complex = float
-
-class Sniffer:
-    '''
-    "Sniffs" the format of a CSV file (i.e. delimiter, quotechar)
-    Returns a Dialect object.
-    '''
-    def __init__(self):
-        # in case there is more than one possible delimiter
-        self.preferred = [',', '\t', ';', ' ', ':']
-
-
-    def sniff(self, sample, delimiters=None):
-        """
-        Returns a dialect (or None) corresponding to the sample
-        """
-
-        quotechar, doublequote, delimiter, skipinitialspace = \
-                   self._guess_quote_and_delimiter(sample, delimiters)
-        if not delimiter:
-            delimiter, skipinitialspace = self._guess_delimiter(sample,
-                                                                delimiters)
-
-        if not delimiter:
-            raise Error, "Could not determine delimiter"
-
-        class dialect(Dialect):
-            _name = "sniffed"
-            lineterminator = '\r\n'
-            quoting = QUOTE_MINIMAL
-            # escapechar = ''
-
-        dialect.doublequote = doublequote
-        dialect.delimiter = delimiter
-        # _csv.reader won't accept a quotechar of ''
-        dialect.quotechar = quotechar or '"'
-        dialect.skipinitialspace = skipinitialspace
-
-        return dialect
-
-
-    def _guess_quote_and_delimiter(self, data, delimiters):
-        """
-        Looks for text enclosed between two identical quotes
-        (the probable quotechar) which are preceded and followed
-        by the same character (the probable delimiter).
-        For example:
-                         ,'some text',
-        The quote with the most wins, same with the delimiter.
-        If there is no quotechar the delimiter can't be determined
-        this way.
-        """
-
-        matches = []
-        for restr in ('(?P<delim>[^\w\n"\'])(?P<space> ?)(?P<quote>["\']).*?(?P=quote)(?P=delim)', # ,".*?",
-                      '(?:^|\n)(?P<quote>["\']).*?(?P=quote)(?P<delim>[^\w\n"\'])(?P<space> ?)',   #  ".*?",
-                      '(?P<delim>>[^\w\n"\'])(?P<space> ?)(?P<quote>["\']).*?(?P=quote)(?:$|\n)',  # ,".*?"
-                      '(?:^|\n)(?P<quote>["\']).*?(?P=quote)(?:$|\n)'):                            #  ".*?" (no delim, no space)
-            regexp = re.compile(restr, re.DOTALL | re.MULTILINE)
-            matches = regexp.findall(data)
-            if matches:
-                break
-
-        if not matches:
-            # (quotechar, doublequote, delimiter, skipinitialspace)
-            return ('', False, None, 0)
-        quotes = {}
-        delims = {}
-        spaces = 0
-        for m in matches:
-            n = regexp.groupindex['quote'] - 1
-            key = m[n]
-            if key:
-                quotes[key] = quotes.get(key, 0) + 1
-            try:
-                n = regexp.groupindex['delim'] - 1
-                key = m[n]
-            except KeyError:
-                continue
-            if key and (delimiters is None or key in delimiters):
-                delims[key] = delims.get(key, 0) + 1
-            try:
-                n = regexp.groupindex['space'] - 1
-            except KeyError:
-                continue
-            if m[n]:
-                spaces += 1
-
-        quotechar = reduce(lambda a, b, quotes = quotes:
-                           (quotes[a] > quotes[b]) and a or b, quotes.keys())
-
-        if delims:
-            delim = reduce(lambda a, b, delims = delims:
-                           (delims[a] > delims[b]) and a or b, delims.keys())
-            skipinitialspace = delims[delim] == spaces
-            if delim == '\n': # most likely a file with a single column
-                delim = ''
-        else:
-            # there is *no* delimiter, it's a single column of quoted data
-            delim = ''
-            skipinitialspace = 0
-
-        # if we see an extra quote between delimiters, we've got a
-        # double quoted format
-        dq_regexp = re.compile(r"((%(delim)s)|^)\W*%(quote)s[^%(delim)s\n]*%(quote)s[^%(delim)s\n]*%(quote)s\W*((%(delim)s)|$)" % \
-                               {'delim':delim, 'quote':quotechar}, re.MULTILINE)
-
-
-
-        if dq_regexp.search(data):
-            doublequote = True
-        else:
-            doublequote = False
-
-        return (quotechar, doublequote, delim, skipinitialspace)
-
-
-    def _guess_delimiter(self, data, delimiters):
-        """
-        The delimiter /should/ occur the same number of times on
-        each row. However, due to malformed data, it may not. We don't want
-        an all or nothing approach, so we allow for small variations in this
-        number.
-          1) build a table of the frequency of each character on every line.
-          2) build a table of frequencies of this frequency (meta-frequency?),
-             e.g.  'x occurred 5 times in 10 rows, 6 times in 1000 rows,
-             7 times in 2 rows'
-          3) use the mode of the meta-frequency to determine the /expected/
-             frequency for that character
-          4) find out how often the character actually meets that goal
-          5) the character that best meets its goal is the delimiter
-        For performance reasons, the data is evaluated in chunks, so it can
-        try and evaluate the smallest portion of the data possible, evaluating
-        additional chunks as necessary.
-        """
-
-        data = filter(None, data.split('\n'))
-
-        ascii = [chr(c) for c in range(127)] # 7-bit ASCII
-
-        # build frequency tables
-        chunkLength = min(10, len(data))
-        iteration = 0
-        charFrequency = {}
-        modes = {}
-        delims = {}
-        start, end = 0, min(chunkLength, len(data))
-        while start < len(data):
-            iteration += 1
-            for line in data[start:end]:
-                for char in ascii:
-                    metaFrequency = charFrequency.get(char, {})
-                    # must count even if frequency is 0
-                    freq = line.count(char)
-                    # value is the mode
-                    metaFrequency[freq] = metaFrequency.get(freq, 0) + 1
-                    charFrequency[char] = metaFrequency
-
-            for char in charFrequency.keys():
-                items = charFrequency[char].items()
-                if len(items) == 1 and items[0][0] == 0:
-                    continue
-                # get the mode of the frequencies
-                if len(items) > 1:
-                    modes[char] = reduce(lambda a, b: a[1] > b[1] and a or b,
-                                         items)
-                    # adjust the mode - subtract the sum of all
-                    # other frequencies
-                    items.remove(modes[char])
-                    modes[char] = (modes[char][0], modes[char][1]
-                                   - reduce(lambda a, b: (0, a[1] + b[1]),
-                                            items)[1])
-                else:
-                    modes[char] = items[0]
-
-            # build a list of possible delimiters
-            modeList = modes.items()
-            total = float(chunkLength * iteration)
-            # (rows of consistent data) / (number of rows) = 100%
-            consistency = 1.0
-            # minimum consistency threshold
-            threshold = 0.9
-            while len(delims) == 0 and consistency >= threshold:
-                for k, v in modeList:
-                    if v[0] > 0 and v[1] > 0:
-                        if ((v[1]/total) >= consistency and
-                            (delimiters is None or k in delimiters)):
-                            delims[k] = v
-                consistency -= 0.01
-
-            if len(delims) == 1:
-                delim = delims.keys()[0]
-                skipinitialspace = (data[0].count(delim) ==
-                                    data[0].count("%c " % delim))
-                return (delim, skipinitialspace)
-
-            # analyze another chunkLength lines
-            start = end
-            end += chunkLength
-
-        if not delims:
-            return ('', 0)
-
-        # if there's more than one, fall back to a 'preferred' list
-        if len(delims) > 1:
-            for d in self.preferred:
-                if d in delims.keys():
-                    skipinitialspace = (data[0].count(d) ==
-                                        data[0].count("%c " % d))
-                    return (d, skipinitialspace)
-
-        # nothing else indicates a preference, pick the character that
-        # dominates(?)
-        items = [(v,k) for (k,v) in delims.items()]
-        items.sort()
-        delim = items[-1][1]
-
-        skipinitialspace = (data[0].count(delim) ==
-                            data[0].count("%c " % delim))
-        return (delim, skipinitialspace)
-
-
-    def has_header(self, sample):
-        # Creates a dictionary of types of data in each column. If any
-        # column is of a single type (say, integers), *except* for the first
-        # row, then the first row is presumed to be labels. If the type
-        # can't be determined, it is assumed to be a string in which case
-        # the length of the string is the determining factor: if all of the
-        # rows except for the first are the same length, it's a header.
-        # Finally, a 'vote' is taken at the end for each column, adding or
-        # subtracting from the likelihood of the first row being a header.
-
-        rdr = reader(StringIO(sample), self.sniff(sample))
-
-        header = rdr.next() # assume first row is header
-
-        columns = len(header)
-        columnTypes = {}
-        for i in range(columns): columnTypes[i] = None
-
-        checked = 0
-        for row in rdr:
-            # arbitrary number of rows to check, to keep it sane
-            if checked > 20:
-                break
-            checked += 1
-
-            if len(row) != columns:
-                continue # skip rows that have irregular number of columns
-
-            for col in columnTypes.keys():
-
-                for thisType in [int, long, float, complex]:
-                    try:
-                        thisType(row[col])
-                        break
-                    except (ValueError, OverflowError):
-                        pass
-                else:
-                    # fallback to length of string
-                    thisType = len(row[col])
-
-                # treat longs as ints
-                if thisType == long:
-                    thisType = int
-
-                if thisType != columnTypes[col]:
-                    if columnTypes[col] is None: # add new column type
-                        columnTypes[col] = thisType
-                    else:
-                        # type is inconsistent, remove column from
-                        # consideration
-                        del columnTypes[col]
-
-        # finally, compare results against first row and "vote"
-        # on whether it's a header
-        hasHeader = 0
-        for col, colType in columnTypes.items():
-            if type(colType) == type(0): # it's a length
-                if len(header[col]) != colType:
-                    hasHeader += 1
-                else:
-                    hasHeader -= 1
-            else: # attempt typecast
-                try:
-                    colType(header[col])
-                except (ValueError, TypeError):
-                    hasHeader += 1
-                else:
-                    hasHeader -= 1
-
-        return hasHeader > 0
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/dbhash.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/dbhash.py
deleted file mode 100644
index 22a5dff..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/dbhash.py
+++ /dev/null
@@ -1,18 +0,0 @@
-"""Provide a (g)dbm-compatible interface to bsddb.hashopen."""
-
-import sys
-import warnings
-warnings.warnpy3k("in 3.x, the dbhash module has been removed", stacklevel=2)
-try:
-    import bsddb
-except ImportError:
-    # prevent a second import of this module from spuriously succeeding
-    del sys.modules[__name__]
-    raise
-
-__all__ = ["error","open"]
-
-error = bsddb.error                     # Exported for anydbm
-
-def open(file, flag = 'r', mode=0666):
-    return bsddb.hashopen(file, flag, mode)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/decimal.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/decimal.py
deleted file mode 100644
index 994d15c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/decimal.py
+++ /dev/null
@@ -1,6149 +0,0 @@
-# Copyright (c) 2004 Python Software Foundation.
-# All rights reserved.
-
-# Written by Eric Price <eprice at tjhsst.edu>
-#    and Facundo Batista <facundo at taniquetil.com.ar>
-#    and Raymond Hettinger <python at rcn.com>
-#    and Aahz <aahz at pobox.com>
-#    and Tim Peters
-
-# This module is currently Py2.3 compatible and should be kept that way
-# unless a major compelling advantage arises.  IOW, 2.3 compatibility is
-# strongly preferred, but not guaranteed.
-
-# Also, this module should be kept in sync with the latest updates of
-# the IBM specification as it evolves.  Those updates will be treated
-# as bug fixes (deviation from the spec is a compatibility, usability
-# bug) and will be backported.  At this point the spec is stabilizing
-# and the updates are becoming fewer, smaller, and less significant.
-
-"""
-This is a Py2.3 implementation of decimal floating point arithmetic based on
-the General Decimal Arithmetic Specification:
-
-    www2.hursley.ibm.com/decimal/decarith.html
-
-and IEEE standard 854-1987:
-
-    www.cs.berkeley.edu/~ejr/projects/754/private/drafts/854-1987/dir.html
-
-Decimal floating point has finite precision with arbitrarily large bounds.
-
-The purpose of this module is to support arithmetic using familiar
-"schoolhouse" rules and to avoid some of the tricky representation
-issues associated with binary floating point.  The package is especially
-useful for financial applications or for contexts where users have
-expectations that are at odds with binary floating point (for instance,
-in binary floating point, 1.00 % 0.1 gives 0.09999999999999995 instead
-of the expected Decimal('0.00') returned by decimal floating point).
-
-Here are some examples of using the decimal module:
-
->>> from decimal import *
->>> setcontext(ExtendedContext)
->>> Decimal(0)
-Decimal('0')
->>> Decimal('1')
-Decimal('1')
->>> Decimal('-.0123')
-Decimal('-0.0123')
->>> Decimal(123456)
-Decimal('123456')
->>> Decimal('123.45e12345678901234567890')
-Decimal('1.2345E+12345678901234567892')
->>> Decimal('1.33') + Decimal('1.27')
-Decimal('2.60')
->>> Decimal('12.34') + Decimal('3.87') - Decimal('18.41')
-Decimal('-2.20')
->>> dig = Decimal(1)
->>> print dig / Decimal(3)
-0.333333333
->>> getcontext().prec = 18
->>> print dig / Decimal(3)
-0.333333333333333333
->>> print dig.sqrt()
-1
->>> print Decimal(3).sqrt()
-1.73205080756887729
->>> print Decimal(3) ** 123
-4.85192780976896427E+58
->>> inf = Decimal(1) / Decimal(0)
->>> print inf
-Infinity
->>> neginf = Decimal(-1) / Decimal(0)
->>> print neginf
--Infinity
->>> print neginf + inf
-NaN
->>> print neginf * inf
--Infinity
->>> print dig / 0
-Infinity
->>> getcontext().traps[DivisionByZero] = 1
->>> print dig / 0
-Traceback (most recent call last):
-  ...
-  ...
-  ...
-DivisionByZero: x / 0
->>> c = Context()
->>> c.traps[InvalidOperation] = 0
->>> print c.flags[InvalidOperation]
-0
->>> c.divide(Decimal(0), Decimal(0))
-Decimal('NaN')
->>> c.traps[InvalidOperation] = 1
->>> print c.flags[InvalidOperation]
-1
->>> c.flags[InvalidOperation] = 0
->>> print c.flags[InvalidOperation]
-0
->>> print c.divide(Decimal(0), Decimal(0))
-Traceback (most recent call last):
-  ...
-  ...
-  ...
-InvalidOperation: 0 / 0
->>> print c.flags[InvalidOperation]
-1
->>> c.flags[InvalidOperation] = 0
->>> c.traps[InvalidOperation] = 0
->>> print c.divide(Decimal(0), Decimal(0))
-NaN
->>> print c.flags[InvalidOperation]
-1
->>>
-"""
-
-__all__ = [
-    # Two major classes
-    'Decimal', 'Context',
-
-    # Contexts
-    'DefaultContext', 'BasicContext', 'ExtendedContext',
-
-    # Exceptions
-    'DecimalException', 'Clamped', 'InvalidOperation', 'DivisionByZero',
-    'Inexact', 'Rounded', 'Subnormal', 'Overflow', 'Underflow',
-
-    # Constants for use in setting up contexts
-    'ROUND_DOWN', 'ROUND_HALF_UP', 'ROUND_HALF_EVEN', 'ROUND_CEILING',
-    'ROUND_FLOOR', 'ROUND_UP', 'ROUND_HALF_DOWN', 'ROUND_05UP',
-
-    # Functions for manipulating contexts
-    'setcontext', 'getcontext', 'localcontext'
-]
-
-__version__ = '1.70'    # Highest version of the spec this complies with
-
-import copy as _copy
-import math as _math
-import numbers as _numbers
-
-try:
-    from collections import namedtuple as _namedtuple
-    DecimalTuple = _namedtuple('DecimalTuple', 'sign digits exponent')
-except ImportError:
-    DecimalTuple = lambda *args: args
-
-# Rounding
-ROUND_DOWN = 'ROUND_DOWN'
-ROUND_HALF_UP = 'ROUND_HALF_UP'
-ROUND_HALF_EVEN = 'ROUND_HALF_EVEN'
-ROUND_CEILING = 'ROUND_CEILING'
-ROUND_FLOOR = 'ROUND_FLOOR'
-ROUND_UP = 'ROUND_UP'
-ROUND_HALF_DOWN = 'ROUND_HALF_DOWN'
-ROUND_05UP = 'ROUND_05UP'
-
-# Errors
-
-class DecimalException(ArithmeticError):
-    """Base exception class.
-
-    Used exceptions derive from this.
-    If an exception derives from another exception besides this (such as
-    Underflow (Inexact, Rounded, Subnormal) that indicates that it is only
-    called if the others are present.  This isn't actually used for
-    anything, though.
-
-    handle  -- Called when context._raise_error is called and the
-               trap_enabler is not set.  First argument is self, second is the
-               context.  More arguments can be given, those being after
-               the explanation in _raise_error (For example,
-               context._raise_error(NewError, '(-x)!', self._sign) would
-               call NewError().handle(context, self._sign).)
-
-    To define a new exception, it should be sufficient to have it derive
-    from DecimalException.
-    """
-    def handle(self, context, *args):
-        pass
-
-
-class Clamped(DecimalException):
-    """Exponent of a 0 changed to fit bounds.
-
-    This occurs and signals clamped if the exponent of a result has been
-    altered in order to fit the constraints of a specific concrete
-    representation.  This may occur when the exponent of a zero result would
-    be outside the bounds of a representation, or when a large normal
-    number would have an encoded exponent that cannot be represented.  In
-    this latter case, the exponent is reduced to fit and the corresponding
-    number of zero digits are appended to the coefficient ("fold-down").
-    """
-
-class InvalidOperation(DecimalException):
-    """An invalid operation was performed.
-
-    Various bad things cause this:
-
-    Something creates a signaling NaN
-    -INF + INF
-    0 * (+-)INF
-    (+-)INF / (+-)INF
-    x % 0
-    (+-)INF % x
-    x._rescale( non-integer )
-    sqrt(-x) , x > 0
-    0 ** 0
-    x ** (non-integer)
-    x ** (+-)INF
-    An operand is invalid
-
-    The result of the operation after these is a quiet positive NaN,
-    except when the cause is a signaling NaN, in which case the result is
-    also a quiet NaN, but with the original sign, and an optional
-    diagnostic information.
-    """
-    def handle(self, context, *args):
-        if args:
-            ans = _dec_from_triple(args[0]._sign, args[0]._int, 'n', True)
-            return ans._fix_nan(context)
-        return _NaN
-
-class ConversionSyntax(InvalidOperation):
-    """Trying to convert badly formed string.
-
-    This occurs and signals invalid-operation if an string is being
-    converted to a number and it does not conform to the numeric string
-    syntax.  The result is [0,qNaN].
-    """
-    def handle(self, context, *args):
-        return _NaN
-
-class DivisionByZero(DecimalException, ZeroDivisionError):
-    """Division by 0.
-
-    This occurs and signals division-by-zero if division of a finite number
-    by zero was attempted (during a divide-integer or divide operation, or a
-    power operation with negative right-hand operand), and the dividend was
-    not zero.
-
-    The result of the operation is [sign,inf], where sign is the exclusive
-    or of the signs of the operands for divide, or is 1 for an odd power of
-    -0, for power.
-    """
-
-    def handle(self, context, sign, *args):
-        return _SignedInfinity[sign]
-
-class DivisionImpossible(InvalidOperation):
-    """Cannot perform the division adequately.
-
-    This occurs and signals invalid-operation if the integer result of a
-    divide-integer or remainder operation had too many digits (would be
-    longer than precision).  The result is [0,qNaN].
-    """
-
-    def handle(self, context, *args):
-        return _NaN
-
-class DivisionUndefined(InvalidOperation, ZeroDivisionError):
-    """Undefined result of division.
-
-    This occurs and signals invalid-operation if division by zero was
-    attempted (during a divide-integer, divide, or remainder operation), and
-    the dividend is also zero.  The result is [0,qNaN].
-    """
-
-    def handle(self, context, *args):
-        return _NaN
-
-class Inexact(DecimalException):
-    """Had to round, losing information.
-
-    This occurs and signals inexact whenever the result of an operation is
-    not exact (that is, it needed to be rounded and any discarded digits
-    were non-zero), or if an overflow or underflow condition occurs.  The
-    result in all cases is unchanged.
-
-    The inexact signal may be tested (or trapped) to determine if a given
-    operation (or sequence of operations) was inexact.
-    """
-
-class InvalidContext(InvalidOperation):
-    """Invalid context.  Unknown rounding, for example.
-
-    This occurs and signals invalid-operation if an invalid context was
-    detected during an operation.  This can occur if contexts are not checked
-    on creation and either the precision exceeds the capability of the
-    underlying concrete representation or an unknown or unsupported rounding
-    was specified.  These aspects of the context need only be checked when
-    the values are required to be used.  The result is [0,qNaN].
-    """
-
-    def handle(self, context, *args):
-        return _NaN
-
-class Rounded(DecimalException):
-    """Number got rounded (not  necessarily changed during rounding).
-
-    This occurs and signals rounded whenever the result of an operation is
-    rounded (that is, some zero or non-zero digits were discarded from the
-    coefficient), or if an overflow or underflow condition occurs.  The
-    result in all cases is unchanged.
-
-    The rounded signal may be tested (or trapped) to determine if a given
-    operation (or sequence of operations) caused a loss of precision.
-    """
-
-class Subnormal(DecimalException):
-    """Exponent < Emin before rounding.
-
-    This occurs and signals subnormal whenever the result of a conversion or
-    operation is subnormal (that is, its adjusted exponent is less than
-    Emin, before any rounding).  The result in all cases is unchanged.
-
-    The subnormal signal may be tested (or trapped) to determine if a given
-    or operation (or sequence of operations) yielded a subnormal result.
-    """
-
-class Overflow(Inexact, Rounded):
-    """Numerical overflow.
-
-    This occurs and signals overflow if the adjusted exponent of a result
-    (from a conversion or from an operation that is not an attempt to divide
-    by zero), after rounding, would be greater than the largest value that
-    can be handled by the implementation (the value Emax).
-
-    The result depends on the rounding mode:
-
-    For round-half-up and round-half-even (and for round-half-down and
-    round-up, if implemented), the result of the operation is [sign,inf],
-    where sign is the sign of the intermediate result.  For round-down, the
-    result is the largest finite number that can be represented in the
-    current precision, with the sign of the intermediate result.  For
-    round-ceiling, the result is the same as for round-down if the sign of
-    the intermediate result is 1, or is [0,inf] otherwise.  For round-floor,
-    the result is the same as for round-down if the sign of the intermediate
-    result is 0, or is [1,inf] otherwise.  In all cases, Inexact and Rounded
-    will also be raised.
-    """
-
-    def handle(self, context, sign, *args):
-        if context.rounding in (ROUND_HALF_UP, ROUND_HALF_EVEN,
-                                ROUND_HALF_DOWN, ROUND_UP):
-            return _SignedInfinity[sign]
-        if sign == 0:
-            if context.rounding == ROUND_CEILING:
-                return _SignedInfinity[sign]
-            return _dec_from_triple(sign, '9'*context.prec,
-                            context.Emax-context.prec+1)
-        if sign == 1:
-            if context.rounding == ROUND_FLOOR:
-                return _SignedInfinity[sign]
-            return _dec_from_triple(sign, '9'*context.prec,
-                             context.Emax-context.prec+1)
-
-
-class Underflow(Inexact, Rounded, Subnormal):
-    """Numerical underflow with result rounded to 0.
-
-    This occurs and signals underflow if a result is inexact and the
-    adjusted exponent of the result would be smaller (more negative) than
-    the smallest value that can be handled by the implementation (the value
-    Emin).  That is, the result is both inexact and subnormal.
-
-    The result after an underflow will be a subnormal number rounded, if
-    necessary, so that its exponent is not less than Etiny.  This may result
-    in 0 with the sign of the intermediate result and an exponent of Etiny.
-
-    In all cases, Inexact, Rounded, and Subnormal will also be raised.
-    """
-
-# List of public traps and flags
-_signals = [Clamped, DivisionByZero, Inexact, Overflow, Rounded,
-           Underflow, InvalidOperation, Subnormal]
-
-# Map conditions (per the spec) to signals
-_condition_map = {ConversionSyntax:InvalidOperation,
-                  DivisionImpossible:InvalidOperation,
-                  DivisionUndefined:InvalidOperation,
-                  InvalidContext:InvalidOperation}
-
-##### Context Functions ##################################################
-
-# The getcontext() and setcontext() function manage access to a thread-local
-# current context.  Py2.4 offers direct support for thread locals.  If that
-# is not available, use threading.currentThread() which is slower but will
-# work for older Pythons.  If threads are not part of the build, create a
-# mock threading object with threading.local() returning the module namespace.
-
-try:
-    import threading
-except ImportError:
-    # Python was compiled without threads; create a mock object instead
-    import sys
-    class MockThreading(object):
-        def local(self, sys=sys):
-            return sys.modules[__name__]
-    threading = MockThreading()
-    del sys, MockThreading
-
-try:
-    threading.local
-
-except AttributeError:
-
-    # To fix reloading, force it to create a new context
-    # Old contexts have different exceptions in their dicts, making problems.
-    if hasattr(threading.currentThread(), '__decimal_context__'):
-        del threading.currentThread().__decimal_context__
-
-    def setcontext(context):
-        """Set this thread's context to context."""
-        if context in (DefaultContext, BasicContext, ExtendedContext):
-            context = context.copy()
-            context.clear_flags()
-        threading.currentThread().__decimal_context__ = context
-
-    def getcontext():
-        """Returns this thread's context.
-
-        If this thread does not yet have a context, returns
-        a new context and sets this thread's context.
-        New contexts are copies of DefaultContext.
-        """
-        try:
-            return threading.currentThread().__decimal_context__
-        except AttributeError:
-            context = Context()
-            threading.currentThread().__decimal_context__ = context
-            return context
-
-else:
-
-    local = threading.local()
-    if hasattr(local, '__decimal_context__'):
-        del local.__decimal_context__
-
-    def getcontext(_local=local):
-        """Returns this thread's context.
-
-        If this thread does not yet have a context, returns
-        a new context and sets this thread's context.
-        New contexts are copies of DefaultContext.
-        """
-        try:
-            return _local.__decimal_context__
-        except AttributeError:
-            context = Context()
-            _local.__decimal_context__ = context
-            return context
-
-    def setcontext(context, _local=local):
-        """Set this thread's context to context."""
-        if context in (DefaultContext, BasicContext, ExtendedContext):
-            context = context.copy()
-            context.clear_flags()
-        _local.__decimal_context__ = context
-
-    del threading, local        # Don't contaminate the namespace
-
-def localcontext(ctx=None):
-    """Return a context manager for a copy of the supplied context
-
-    Uses a copy of the current context if no context is specified
-    The returned context manager creates a local decimal context
-    in a with statement:
-        def sin(x):
-             with localcontext() as ctx:
-                 ctx.prec += 2
-                 # Rest of sin calculation algorithm
-                 # uses a precision 2 greater than normal
-             return +s  # Convert result to normal precision
-
-         def sin(x):
-             with localcontext(ExtendedContext):
-                 # Rest of sin calculation algorithm
-                 # uses the Extended Context from the
-                 # General Decimal Arithmetic Specification
-             return +s  # Convert result to normal context
-
-    >>> setcontext(DefaultContext)
-    >>> print getcontext().prec
-    28
-    >>> with localcontext():
-    ...     ctx = getcontext()
-    ...     ctx.prec += 2
-    ...     print ctx.prec
-    ...
-    30
-    >>> with localcontext(ExtendedContext):
-    ...     print getcontext().prec
-    ...
-    9
-    >>> print getcontext().prec
-    28
-    """
-    if ctx is None: ctx = getcontext()
-    return _ContextManager(ctx)
-
-
-##### Decimal class #######################################################
-
-class Decimal(object):
-    """Floating point class for decimal arithmetic."""
-
-    __slots__ = ('_exp','_int','_sign', '_is_special')
-    # Generally, the value of the Decimal instance is given by
-    #  (-1)**_sign * _int * 10**_exp
-    # Special values are signified by _is_special == True
-
-    # We're immutable, so use __new__ not __init__
-    def __new__(cls, value="0", context=None):
-        """Create a decimal point instance.
-
-        >>> Decimal('3.14')              # string input
-        Decimal('3.14')
-        >>> Decimal((0, (3, 1, 4), -2))  # tuple (sign, digit_tuple, exponent)
-        Decimal('3.14')
-        >>> Decimal(314)                 # int or long
-        Decimal('314')
-        >>> Decimal(Decimal(314))        # another decimal instance
-        Decimal('314')
-        >>> Decimal('  3.14  \\n')        # leading and trailing whitespace okay
-        Decimal('3.14')
-        """
-
-        # Note that the coefficient, self._int, is actually stored as
-        # a string rather than as a tuple of digits.  This speeds up
-        # the "digits to integer" and "integer to digits" conversions
-        # that are used in almost every arithmetic operation on
-        # Decimals.  This is an internal detail: the as_tuple function
-        # and the Decimal constructor still deal with tuples of
-        # digits.
-
-        self = object.__new__(cls)
-
-        # From a string
-        # REs insist on real strings, so we can too.
-        if isinstance(value, basestring):
-            m = _parser(value.strip())
-            if m is None:
-                if context is None:
-                    context = getcontext()
-                return context._raise_error(ConversionSyntax,
-                                "Invalid literal for Decimal: %r" % value)
-
-            if m.group('sign') == "-":
-                self._sign = 1
-            else:
-                self._sign = 0
-            intpart = m.group('int')
-            if intpart is not None:
-                # finite number
-                fracpart = m.group('frac') or ''
-                exp = int(m.group('exp') or '0')
-                self._int = str(int(intpart+fracpart))
-                self._exp = exp - len(fracpart)
-                self._is_special = False
-            else:
-                diag = m.group('diag')
-                if diag is not None:
-                    # NaN
-                    self._int = str(int(diag or '0')).lstrip('0')
-                    if m.group('signal'):
-                        self._exp = 'N'
-                    else:
-                        self._exp = 'n'
-                else:
-                    # infinity
-                    self._int = '0'
-                    self._exp = 'F'
-                self._is_special = True
-            return self
-
-        # From an integer
-        if isinstance(value, (int,long)):
-            if value >= 0:
-                self._sign = 0
-            else:
-                self._sign = 1
-            self._exp = 0
-            self._int = str(abs(value))
-            self._is_special = False
-            return self
-
-        # From another decimal
-        if isinstance(value, Decimal):
-            self._exp  = value._exp
-            self._sign = value._sign
-            self._int  = value._int
-            self._is_special  = value._is_special
-            return self
-
-        # From an internal working value
-        if isinstance(value, _WorkRep):
-            self._sign = value.sign
-            self._int = str(value.int)
-            self._exp = int(value.exp)
-            self._is_special = False
-            return self
-
-        # tuple/list conversion (possibly from as_tuple())
-        if isinstance(value, (list,tuple)):
-            if len(value) != 3:
-                raise ValueError('Invalid tuple size in creation of Decimal '
-                                 'from list or tuple.  The list or tuple '
-                                 'should have exactly three elements.')
-            # process sign.  The isinstance test rejects floats
-            if not (isinstance(value[0], (int, long)) and value[0] in (0,1)):
-                raise ValueError("Invalid sign.  The first value in the tuple "
-                                 "should be an integer; either 0 for a "
-                                 "positive number or 1 for a negative number.")
-            self._sign = value[0]
-            if value[2] == 'F':
-                # infinity: value[1] is ignored
-                self._int = '0'
-                self._exp = value[2]
-                self._is_special = True
-            else:
-                # process and validate the digits in value[1]
-                digits = []
-                for digit in value[1]:
-                    if isinstance(digit, (int, long)) and 0 <= digit <= 9:
-                        # skip leading zeros
-                        if digits or digit != 0:
-                            digits.append(digit)
-                    else:
-                        raise ValueError("The second value in the tuple must "
-                                         "be composed of integers in the range "
-                                         "0 through 9.")
-                if value[2] in ('n', 'N'):
-                    # NaN: digits form the diagnostic
-                    self._int = ''.join(map(str, digits))
-                    self._exp = value[2]
-                    self._is_special = True
-                elif isinstance(value[2], (int, long)):
-                    # finite number: digits give the coefficient
-                    self._int = ''.join(map(str, digits or [0]))
-                    self._exp = value[2]
-                    self._is_special = False
-                else:
-                    raise ValueError("The third value in the tuple must "
-                                     "be an integer, or one of the "
-                                     "strings 'F', 'n', 'N'.")
-            return self
-
-        if isinstance(value, float):
-            value = Decimal.from_float(value)
-            self._exp  = value._exp
-            self._sign = value._sign
-            self._int  = value._int
-            self._is_special  = value._is_special
-            return self
-
-        raise TypeError("Cannot convert %r to Decimal" % value)
-
-    # @classmethod, but @decorator is not valid Python 2.3 syntax, so
-    # don't use it (see notes on Py2.3 compatibility at top of file)
-    def from_float(cls, f):
-        """Converts a float to a decimal number, exactly.
-
-        Note that Decimal.from_float(0.1) is not the same as Decimal('0.1').
-        Since 0.1 is not exactly representable in binary floating point, the
-        value is stored as the nearest representable value which is
-        0x1.999999999999ap-4.  The exact equivalent of the value in decimal
-        is 0.1000000000000000055511151231257827021181583404541015625.
-
-        >>> Decimal.from_float(0.1)
-        Decimal('0.1000000000000000055511151231257827021181583404541015625')
-        >>> Decimal.from_float(float('nan'))
-        Decimal('NaN')
-        >>> Decimal.from_float(float('inf'))
-        Decimal('Infinity')
-        >>> Decimal.from_float(-float('inf'))
-        Decimal('-Infinity')
-        >>> Decimal.from_float(-0.0)
-        Decimal('-0')
-
-        """
-        if isinstance(f, (int, long)):        # handle integer inputs
-            return cls(f)
-        if _math.isinf(f) or _math.isnan(f):  # raises TypeError if not a float
-            return cls(repr(f))
-        if _math.copysign(1.0, f) == 1.0:
-            sign = 0
-        else:
-            sign = 1
-        n, d = abs(f).as_integer_ratio()
-        k = d.bit_length() - 1
-        result = _dec_from_triple(sign, str(n*5**k), -k)
-        if cls is Decimal:
-            return result
-        else:
-            return cls(result)
-    from_float = classmethod(from_float)
-
-    def _isnan(self):
-        """Returns whether the number is not actually one.
-
-        0 if a number
-        1 if NaN
-        2 if sNaN
-        """
-        if self._is_special:
-            exp = self._exp
-            if exp == 'n':
-                return 1
-            elif exp == 'N':
-                return 2
-        return 0
-
-    def _isinfinity(self):
-        """Returns whether the number is infinite
-
-        0 if finite or not a number
-        1 if +INF
-        -1 if -INF
-        """
-        if self._exp == 'F':
-            if self._sign:
-                return -1
-            return 1
-        return 0
-
-    def _check_nans(self, other=None, context=None):
-        """Returns whether the number is not actually one.
-
-        if self, other are sNaN, signal
-        if self, other are NaN return nan
-        return 0
-
-        Done before operations.
-        """
-
-        self_is_nan = self._isnan()
-        if other is None:
-            other_is_nan = False
-        else:
-            other_is_nan = other._isnan()
-
-        if self_is_nan or other_is_nan:
-            if context is None:
-                context = getcontext()
-
-            if self_is_nan == 2:
-                return context._raise_error(InvalidOperation, 'sNaN',
-                                        self)
-            if other_is_nan == 2:
-                return context._raise_error(InvalidOperation, 'sNaN',
-                                        other)
-            if self_is_nan:
-                return self._fix_nan(context)
-
-            return other._fix_nan(context)
-        return 0
-
-    def _compare_check_nans(self, other, context):
-        """Version of _check_nans used for the signaling comparisons
-        compare_signal, __le__, __lt__, __ge__, __gt__.
-
-        Signal InvalidOperation if either self or other is a (quiet
-        or signaling) NaN.  Signaling NaNs take precedence over quiet
-        NaNs.
-
-        Return 0 if neither operand is a NaN.
-
-        """
-        if context is None:
-            context = getcontext()
-
-        if self._is_special or other._is_special:
-            if self.is_snan():
-                return context._raise_error(InvalidOperation,
-                                            'comparison involving sNaN',
-                                            self)
-            elif other.is_snan():
-                return context._raise_error(InvalidOperation,
-                                            'comparison involving sNaN',
-                                            other)
-            elif self.is_qnan():
-                return context._raise_error(InvalidOperation,
-                                            'comparison involving NaN',
-                                            self)
-            elif other.is_qnan():
-                return context._raise_error(InvalidOperation,
-                                            'comparison involving NaN',
-                                            other)
-        return 0
-
-    def __nonzero__(self):
-        """Return True if self is nonzero; otherwise return False.
-
-        NaNs and infinities are considered nonzero.
-        """
-        return self._is_special or self._int != '0'
-
-    def _cmp(self, other):
-        """Compare the two non-NaN decimal instances self and other.
-
-        Returns -1 if self < other, 0 if self == other and 1
-        if self > other.  This routine is for internal use only."""
-
-        if self._is_special or other._is_special:
-            self_inf = self._isinfinity()
-            other_inf = other._isinfinity()
-            if self_inf == other_inf:
-                return 0
-            elif self_inf < other_inf:
-                return -1
-            else:
-                return 1
-
-        # check for zeros;  Decimal('0') == Decimal('-0')
-        if not self:
-            if not other:
-                return 0
-            else:
-                return -((-1)**other._sign)
-        if not other:
-            return (-1)**self._sign
-
-        # If different signs, neg one is less
-        if other._sign < self._sign:
-            return -1
-        if self._sign < other._sign:
-            return 1
-
-        self_adjusted = self.adjusted()
-        other_adjusted = other.adjusted()
-        if self_adjusted == other_adjusted:
-            self_padded = self._int + '0'*(self._exp - other._exp)
-            other_padded = other._int + '0'*(other._exp - self._exp)
-            if self_padded == other_padded:
-                return 0
-            elif self_padded < other_padded:
-                return -(-1)**self._sign
-            else:
-                return (-1)**self._sign
-        elif self_adjusted > other_adjusted:
-            return (-1)**self._sign
-        else: # self_adjusted < other_adjusted
-            return -((-1)**self._sign)
-
-    # Note: The Decimal standard doesn't cover rich comparisons for
-    # Decimals.  In particular, the specification is silent on the
-    # subject of what should happen for a comparison involving a NaN.
-    # We take the following approach:
-    #
-    #   == comparisons involving a quiet NaN always return False
-    #   != comparisons involving a quiet NaN always return True
-    #   == or != comparisons involving a signaling NaN signal
-    #      InvalidOperation, and return False or True as above if the
-    #      InvalidOperation is not trapped.
-    #   <, >, <= and >= comparisons involving a (quiet or signaling)
-    #      NaN signal InvalidOperation, and return False if the
-    #      InvalidOperation is not trapped.
-    #
-    # This behavior is designed to conform as closely as possible to
-    # that specified by IEEE 754.
-
-    def __eq__(self, other, context=None):
-        other = _convert_other(other, allow_float=True)
-        if other is NotImplemented:
-            return other
-        if self._check_nans(other, context):
-            return False
-        return self._cmp(other) == 0
-
-    def __ne__(self, other, context=None):
-        other = _convert_other(other, allow_float=True)
-        if other is NotImplemented:
-            return other
-        if self._check_nans(other, context):
-            return True
-        return self._cmp(other) != 0
-
-    def __lt__(self, other, context=None):
-        other = _convert_other(other, allow_float=True)
-        if other is NotImplemented:
-            return other
-        ans = self._compare_check_nans(other, context)
-        if ans:
-            return False
-        return self._cmp(other) < 0
-
-    def __le__(self, other, context=None):
-        other = _convert_other(other, allow_float=True)
-        if other is NotImplemented:
-            return other
-        ans = self._compare_check_nans(other, context)
-        if ans:
-            return False
-        return self._cmp(other) <= 0
-
-    def __gt__(self, other, context=None):
-        other = _convert_other(other, allow_float=True)
-        if other is NotImplemented:
-            return other
-        ans = self._compare_check_nans(other, context)
-        if ans:
-            return False
-        return self._cmp(other) > 0
-
-    def __ge__(self, other, context=None):
-        other = _convert_other(other, allow_float=True)
-        if other is NotImplemented:
-            return other
-        ans = self._compare_check_nans(other, context)
-        if ans:
-            return False
-        return self._cmp(other) >= 0
-
-    def compare(self, other, context=None):
-        """Compares one to another.
-
-        -1 => a < b
-        0  => a = b
-        1  => a > b
-        NaN => one is NaN
-        Like __cmp__, but returns Decimal instances.
-        """
-        other = _convert_other(other, raiseit=True)
-
-        # Compare(NaN, NaN) = NaN
-        if (self._is_special or other and other._is_special):
-            ans = self._check_nans(other, context)
-            if ans:
-                return ans
-
-        return Decimal(self._cmp(other))
-
-    def __hash__(self):
-        """x.__hash__() <==> hash(x)"""
-        # Decimal integers must hash the same as the ints
-        #
-        # The hash of a nonspecial noninteger Decimal must depend only
-        # on the value of that Decimal, and not on its representation.
-        # For example: hash(Decimal('100E-1')) == hash(Decimal('10')).
-
-        # Equality comparisons involving signaling nans can raise an
-        # exception; since equality checks are implicitly and
-        # unpredictably used when checking set and dict membership, we
-        # prevent signaling nans from being used as set elements or
-        # dict keys by making __hash__ raise an exception.
-        if self._is_special:
-            if self.is_snan():
-                raise TypeError('Cannot hash a signaling NaN value.')
-            elif self.is_nan():
-                # 0 to match hash(float('nan'))
-                return 0
-            else:
-                # values chosen to match hash(float('inf')) and
-                # hash(float('-inf')).
-                if self._sign:
-                    return -271828
-                else:
-                    return 314159
-
-        # In Python 2.7, we're allowing comparisons (but not
-        # arithmetic operations) between floats and Decimals;  so if
-        # a Decimal instance is exactly representable as a float then
-        # its hash should match that of the float.
-        self_as_float = float(self)
-        if Decimal.from_float(self_as_float) == self:
-            return hash(self_as_float)
-
-        if self._isinteger():
-            op = _WorkRep(self.to_integral_value())
-            # to make computation feasible for Decimals with large
-            # exponent, we use the fact that hash(n) == hash(m) for
-            # any two nonzero integers n and m such that (i) n and m
-            # have the same sign, and (ii) n is congruent to m modulo
-            # 2**64-1.  So we can replace hash((-1)**s*c*10**e) with
-            # hash((-1)**s*c*pow(10, e, 2**64-1).
-            return hash((-1)**op.sign*op.int*pow(10, op.exp, 2**64-1))
-        # The value of a nonzero nonspecial Decimal instance is
-        # faithfully represented by the triple consisting of its sign,
-        # its adjusted exponent, and its coefficient with trailing
-        # zeros removed.
-        return hash((self._sign,
-                     self._exp+len(self._int),
-                     self._int.rstrip('0')))
-
-    def as_tuple(self):
-        """Represents the number as a triple tuple.
-
-        To show the internals exactly as they are.
-        """
-        return DecimalTuple(self._sign, tuple(map(int, self._int)), self._exp)
-
-    def __repr__(self):
-        """Represents the number as an instance of Decimal."""
-        # Invariant:  eval(repr(d)) == d
-        return "Decimal('%s')" % str(self)
-
-    def __str__(self, eng=False, context=None):
-        """Return string representation of the number in scientific notation.
-
-        Captures all of the information in the underlying representation.
-        """
-
-        sign = ['', '-'][self._sign]
-        if self._is_special:
-            if self._exp == 'F':
-                return sign + 'Infinity'
-            elif self._exp == 'n':
-                return sign + 'NaN' + self._int
-            else: # self._exp == 'N'
-                return sign + 'sNaN' + self._int
-
-        # number of digits of self._int to left of decimal point
-        leftdigits = self._exp + len(self._int)
-
-        # dotplace is number of digits of self._int to the left of the
-        # decimal point in the mantissa of the output string (that is,
-        # after adjusting the exponent)
-        if self._exp <= 0 and leftdigits > -6:
-            # no exponent required
-            dotplace = leftdigits
-        elif not eng:
-            # usual scientific notation: 1 digit on left of the point
-            dotplace = 1
-        elif self._int == '0':
-            # engineering notation, zero
-            dotplace = (leftdigits + 1) % 3 - 1
-        else:
-            # engineering notation, nonzero
-            dotplace = (leftdigits - 1) % 3 + 1
-
-        if dotplace <= 0:
-            intpart = '0'
-            fracpart = '.' + '0'*(-dotplace) + self._int
-        elif dotplace >= len(self._int):
-            intpart = self._int+'0'*(dotplace-len(self._int))
-            fracpart = ''
-        else:
-            intpart = self._int[:dotplace]
-            fracpart = '.' + self._int[dotplace:]
-        if leftdigits == dotplace:
-            exp = ''
-        else:
-            if context is None:
-                context = getcontext()
-            exp = ['e', 'E'][context.capitals] + "%+d" % (leftdigits-dotplace)
-
-        return sign + intpart + fracpart + exp
-
-    def to_eng_string(self, context=None):
-        """Convert to engineering-type string.
-
-        Engineering notation has an exponent which is a multiple of 3, so there
-        are up to 3 digits left of the decimal place.
-
-        Same rules for when in exponential and when as a value as in __str__.
-        """
-        return self.__str__(eng=True, context=context)
-
-    def __neg__(self, context=None):
-        """Returns a copy with the sign switched.
-
-        Rounds, if it has reason.
-        """
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-        if context is None:
-            context = getcontext()
-
-        if not self and context.rounding != ROUND_FLOOR:
-            # -Decimal('0') is Decimal('0'), not Decimal('-0'), except
-            # in ROUND_FLOOR rounding mode.
-            ans = self.copy_abs()
-        else:
-            ans = self.copy_negate()
-
-        return ans._fix(context)
-
-    def __pos__(self, context=None):
-        """Returns a copy, unless it is a sNaN.
-
-        Rounds the number (if more then precision digits)
-        """
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-        if context is None:
-            context = getcontext()
-
-        if not self and context.rounding != ROUND_FLOOR:
-            # + (-0) = 0, except in ROUND_FLOOR rounding mode.
-            ans = self.copy_abs()
-        else:
-            ans = Decimal(self)
-
-        return ans._fix(context)
-
-    def __abs__(self, round=True, context=None):
-        """Returns the absolute value of self.
-
-        If the keyword argument 'round' is false, do not round.  The
-        expression self.__abs__(round=False) is equivalent to
-        self.copy_abs().
-        """
-        if not round:
-            return self.copy_abs()
-
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-        if self._sign:
-            ans = self.__neg__(context=context)
-        else:
-            ans = self.__pos__(context=context)
-
-        return ans
-
-    def __add__(self, other, context=None):
-        """Returns self + other.
-
-        -INF + INF (or the reverse) cause InvalidOperation errors.
-        """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if context is None:
-            context = getcontext()
-
-        if self._is_special or other._is_special:
-            ans = self._check_nans(other, context)
-            if ans:
-                return ans
-
-            if self._isinfinity():
-                # If both INF, same sign => same as both, opposite => error.
-                if self._sign != other._sign and other._isinfinity():
-                    return context._raise_error(InvalidOperation, '-INF + INF')
-                return Decimal(self)
-            if other._isinfinity():
-                return Decimal(other)  # Can't both be infinity here
-
-        exp = min(self._exp, other._exp)
-        negativezero = 0
-        if context.rounding == ROUND_FLOOR and self._sign != other._sign:
-            # If the answer is 0, the sign should be negative, in this case.
-            negativezero = 1
-
-        if not self and not other:
-            sign = min(self._sign, other._sign)
-            if negativezero:
-                sign = 1
-            ans = _dec_from_triple(sign, '0', exp)
-            ans = ans._fix(context)
-            return ans
-        if not self:
-            exp = max(exp, other._exp - context.prec-1)
-            ans = other._rescale(exp, context.rounding)
-            ans = ans._fix(context)
-            return ans
-        if not other:
-            exp = max(exp, self._exp - context.prec-1)
-            ans = self._rescale(exp, context.rounding)
-            ans = ans._fix(context)
-            return ans
-
-        op1 = _WorkRep(self)
-        op2 = _WorkRep(other)
-        op1, op2 = _normalize(op1, op2, context.prec)
-
-        result = _WorkRep()
-        if op1.sign != op2.sign:
-            # Equal and opposite
-            if op1.int == op2.int:
-                ans = _dec_from_triple(negativezero, '0', exp)
-                ans = ans._fix(context)
-                return ans
-            if op1.int < op2.int:
-                op1, op2 = op2, op1
-                # OK, now abs(op1) > abs(op2)
-            if op1.sign == 1:
-                result.sign = 1
-                op1.sign, op2.sign = op2.sign, op1.sign
-            else:
-                result.sign = 0
-                # So we know the sign, and op1 > 0.
-        elif op1.sign == 1:
-            result.sign = 1
-            op1.sign, op2.sign = (0, 0)
-        else:
-            result.sign = 0
-        # Now, op1 > abs(op2) > 0
-
-        if op2.sign == 0:
-            result.int = op1.int + op2.int
-        else:
-            result.int = op1.int - op2.int
-
-        result.exp = op1.exp
-        ans = Decimal(result)
-        ans = ans._fix(context)
-        return ans
-
-    __radd__ = __add__
-
-    def __sub__(self, other, context=None):
-        """Return self - other"""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if self._is_special or other._is_special:
-            ans = self._check_nans(other, context=context)
-            if ans:
-                return ans
-
-        # self - other is computed as self + other.copy_negate()
-        return self.__add__(other.copy_negate(), context=context)
-
-    def __rsub__(self, other, context=None):
-        """Return other - self"""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        return other.__sub__(self, context=context)
-
-    def __mul__(self, other, context=None):
-        """Return self * other.
-
-        (+-) INF * 0 (or its reverse) raise InvalidOperation.
-        """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if context is None:
-            context = getcontext()
-
-        resultsign = self._sign ^ other._sign
-
-        if self._is_special or other._is_special:
-            ans = self._check_nans(other, context)
-            if ans:
-                return ans
-
-            if self._isinfinity():
-                if not other:
-                    return context._raise_error(InvalidOperation, '(+-)INF * 0')
-                return _SignedInfinity[resultsign]
-
-            if other._isinfinity():
-                if not self:
-                    return context._raise_error(InvalidOperation, '0 * (+-)INF')
-                return _SignedInfinity[resultsign]
-
-        resultexp = self._exp + other._exp
-
-        # Special case for multiplying by zero
-        if not self or not other:
-            ans = _dec_from_triple(resultsign, '0', resultexp)
-            # Fixing in case the exponent is out of bounds
-            ans = ans._fix(context)
-            return ans
-
-        # Special case for multiplying by power of 10
-        if self._int == '1':
-            ans = _dec_from_triple(resultsign, other._int, resultexp)
-            ans = ans._fix(context)
-            return ans
-        if other._int == '1':
-            ans = _dec_from_triple(resultsign, self._int, resultexp)
-            ans = ans._fix(context)
-            return ans
-
-        op1 = _WorkRep(self)
-        op2 = _WorkRep(other)
-
-        ans = _dec_from_triple(resultsign, str(op1.int * op2.int), resultexp)
-        ans = ans._fix(context)
-
-        return ans
-    __rmul__ = __mul__
-
-    def __truediv__(self, other, context=None):
-        """Return self / other."""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return NotImplemented
-
-        if context is None:
-            context = getcontext()
-
-        sign = self._sign ^ other._sign
-
-        if self._is_special or other._is_special:
-            ans = self._check_nans(other, context)
-            if ans:
-                return ans
-
-            if self._isinfinity() and other._isinfinity():
-                return context._raise_error(InvalidOperation, '(+-)INF/(+-)INF')
-
-            if self._isinfinity():
-                return _SignedInfinity[sign]
-
-            if other._isinfinity():
-                context._raise_error(Clamped, 'Division by infinity')
-                return _dec_from_triple(sign, '0', context.Etiny())
-
-        # Special cases for zeroes
-        if not other:
-            if not self:
-                return context._raise_error(DivisionUndefined, '0 / 0')
-            return context._raise_error(DivisionByZero, 'x / 0', sign)
-
-        if not self:
-            exp = self._exp - other._exp
-            coeff = 0
-        else:
-            # OK, so neither = 0, INF or NaN
-            shift = len(other._int) - len(self._int) + context.prec + 1
-            exp = self._exp - other._exp - shift
-            op1 = _WorkRep(self)
-            op2 = _WorkRep(other)
-            if shift >= 0:
-                coeff, remainder = divmod(op1.int * 10**shift, op2.int)
-            else:
-                coeff, remainder = divmod(op1.int, op2.int * 10**-shift)
-            if remainder:
-                # result is not exact; adjust to ensure correct rounding
-                if coeff % 5 == 0:
-                    coeff += 1
-            else:
-                # result is exact; get as close to ideal exponent as possible
-                ideal_exp = self._exp - other._exp
-                while exp < ideal_exp and coeff % 10 == 0:
-                    coeff //= 10
-                    exp += 1
-
-        ans = _dec_from_triple(sign, str(coeff), exp)
-        return ans._fix(context)
-
-    def _divide(self, other, context):
-        """Return (self // other, self % other), to context.prec precision.
-
-        Assumes that neither self nor other is a NaN, that self is not
-        infinite and that other is nonzero.
-        """
-        sign = self._sign ^ other._sign
-        if other._isinfinity():
-            ideal_exp = self._exp
-        else:
-            ideal_exp = min(self._exp, other._exp)
-
-        expdiff = self.adjusted() - other.adjusted()
-        if not self or other._isinfinity() or expdiff <= -2:
-            return (_dec_from_triple(sign, '0', 0),
-                    self._rescale(ideal_exp, context.rounding))
-        if expdiff <= context.prec:
-            op1 = _WorkRep(self)
-            op2 = _WorkRep(other)
-            if op1.exp >= op2.exp:
-                op1.int *= 10**(op1.exp - op2.exp)
-            else:
-                op2.int *= 10**(op2.exp - op1.exp)
-            q, r = divmod(op1.int, op2.int)
-            if q < 10**context.prec:
-                return (_dec_from_triple(sign, str(q), 0),
-                        _dec_from_triple(self._sign, str(r), ideal_exp))
-
-        # Here the quotient is too large to be representable
-        ans = context._raise_error(DivisionImpossible,
-                                   'quotient too large in //, % or divmod')
-        return ans, ans
-
-    def __rtruediv__(self, other, context=None):
-        """Swaps self/other and returns __truediv__."""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-        return other.__truediv__(self, context=context)
-
-    __div__ = __truediv__
-    __rdiv__ = __rtruediv__
-
-    def __divmod__(self, other, context=None):
-        """
-        Return (self // other, self % other)
-        """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if context is None:
-            context = getcontext()
-
-        ans = self._check_nans(other, context)
-        if ans:
-            return (ans, ans)
-
-        sign = self._sign ^ other._sign
-        if self._isinfinity():
-            if other._isinfinity():
-                ans = context._raise_error(InvalidOperation, 'divmod(INF, INF)')
-                return ans, ans
-            else:
-                return (_SignedInfinity[sign],
-                        context._raise_error(InvalidOperation, 'INF % x'))
-
-        if not other:
-            if not self:
-                ans = context._raise_error(DivisionUndefined, 'divmod(0, 0)')
-                return ans, ans
-            else:
-                return (context._raise_error(DivisionByZero, 'x // 0', sign),
-                        context._raise_error(InvalidOperation, 'x % 0'))
-
-        quotient, remainder = self._divide(other, context)
-        remainder = remainder._fix(context)
-        return quotient, remainder
-
-    def __rdivmod__(self, other, context=None):
-        """Swaps self/other and returns __divmod__."""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-        return other.__divmod__(self, context=context)
-
-    def __mod__(self, other, context=None):
-        """
-        self % other
-        """
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if context is None:
-            context = getcontext()
-
-        ans = self._check_nans(other, context)
-        if ans:
-            return ans
-
-        if self._isinfinity():
-            return context._raise_error(InvalidOperation, 'INF % x')
-        elif not other:
-            if self:
-                return context._raise_error(InvalidOperation, 'x % 0')
-            else:
-                return context._raise_error(DivisionUndefined, '0 % 0')
-
-        remainder = self._divide(other, context)[1]
-        remainder = remainder._fix(context)
-        return remainder
-
-    def __rmod__(self, other, context=None):
-        """Swaps self/other and returns __mod__."""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-        return other.__mod__(self, context=context)
-
-    def remainder_near(self, other, context=None):
-        """
-        Remainder nearest to 0-  abs(remainder-near) <= other/2
-        """
-        if context is None:
-            context = getcontext()
-
-        other = _convert_other(other, raiseit=True)
-
-        ans = self._check_nans(other, context)
-        if ans:
-            return ans
-
-        # self == +/-infinity -> InvalidOperation
-        if self._isinfinity():
-            return context._raise_error(InvalidOperation,
-                                        'remainder_near(infinity, x)')
-
-        # other == 0 -> either InvalidOperation or DivisionUndefined
-        if not other:
-            if self:
-                return context._raise_error(InvalidOperation,
-                                            'remainder_near(x, 0)')
-            else:
-                return context._raise_error(DivisionUndefined,
-                                            'remainder_near(0, 0)')
-
-        # other = +/-infinity -> remainder = self
-        if other._isinfinity():
-            ans = Decimal(self)
-            return ans._fix(context)
-
-        # self = 0 -> remainder = self, with ideal exponent
-        ideal_exponent = min(self._exp, other._exp)
-        if not self:
-            ans = _dec_from_triple(self._sign, '0', ideal_exponent)
-            return ans._fix(context)
-
-        # catch most cases of large or small quotient
-        expdiff = self.adjusted() - other.adjusted()
-        if expdiff >= context.prec + 1:
-            # expdiff >= prec+1 => abs(self/other) > 10**prec
-            return context._raise_error(DivisionImpossible)
-        if expdiff <= -2:
-            # expdiff <= -2 => abs(self/other) < 0.1
-            ans = self._rescale(ideal_exponent, context.rounding)
-            return ans._fix(context)
-
-        # adjust both arguments to have the same exponent, then divide
-        op1 = _WorkRep(self)
-        op2 = _WorkRep(other)
-        if op1.exp >= op2.exp:
-            op1.int *= 10**(op1.exp - op2.exp)
-        else:
-            op2.int *= 10**(op2.exp - op1.exp)
-        q, r = divmod(op1.int, op2.int)
-        # remainder is r*10**ideal_exponent; other is +/-op2.int *
-        # 10**ideal_exponent.   Apply correction to ensure that
-        # abs(remainder) <= abs(other)/2
-        if 2*r + (q&1) > op2.int:
-            r -= op2.int
-            q += 1
-
-        if q >= 10**context.prec:
-            return context._raise_error(DivisionImpossible)
-
-        # result has same sign as self unless r is negative
-        sign = self._sign
-        if r < 0:
-            sign = 1-sign
-            r = -r
-
-        ans = _dec_from_triple(sign, str(r), ideal_exponent)
-        return ans._fix(context)
-
-    def __floordiv__(self, other, context=None):
-        """self // other"""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if context is None:
-            context = getcontext()
-
-        ans = self._check_nans(other, context)
-        if ans:
-            return ans
-
-        if self._isinfinity():
-            if other._isinfinity():
-                return context._raise_error(InvalidOperation, 'INF // INF')
-            else:
-                return _SignedInfinity[self._sign ^ other._sign]
-
-        if not other:
-            if self:
-                return context._raise_error(DivisionByZero, 'x // 0',
-                                            self._sign ^ other._sign)
-            else:
-                return context._raise_error(DivisionUndefined, '0 // 0')
-
-        return self._divide(other, context)[0]
-
-    def __rfloordiv__(self, other, context=None):
-        """Swaps self/other and returns __floordiv__."""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-        return other.__floordiv__(self, context=context)
-
-    def __float__(self):
-        """Float representation."""
-        return float(str(self))
-
-    def __int__(self):
-        """Converts self to an int, truncating if necessary."""
-        if self._is_special:
-            if self._isnan():
-                raise ValueError("Cannot convert NaN to integer")
-            elif self._isinfinity():
-                raise OverflowError("Cannot convert infinity to integer")
-        s = (-1)**self._sign
-        if self._exp >= 0:
-            return s*int(self._int)*10**self._exp
-        else:
-            return s*int(self._int[:self._exp] or '0')
-
-    __trunc__ = __int__
-
-    def real(self):
-        return self
-    real = property(real)
-
-    def imag(self):
-        return Decimal(0)
-    imag = property(imag)
-
-    def conjugate(self):
-        return self
-
-    def __complex__(self):
-        return complex(float(self))
-
-    def __long__(self):
-        """Converts to a long.
-
-        Equivalent to long(int(self))
-        """
-        return long(self.__int__())
-
-    def _fix_nan(self, context):
-        """Decapitate the payload of a NaN to fit the context"""
-        payload = self._int
-
-        # maximum length of payload is precision if _clamp=0,
-        # precision-1 if _clamp=1.
-        max_payload_len = context.prec - context._clamp
-        if len(payload) > max_payload_len:
-            payload = payload[len(payload)-max_payload_len:].lstrip('0')
-            return _dec_from_triple(self._sign, payload, self._exp, True)
-        return Decimal(self)
-
-    def _fix(self, context):
-        """Round if it is necessary to keep self within prec precision.
-
-        Rounds and fixes the exponent.  Does not raise on a sNaN.
-
-        Arguments:
-        self - Decimal instance
-        context - context used.
-        """
-
-        if self._is_special:
-            if self._isnan():
-                # decapitate payload if necessary
-                return self._fix_nan(context)
-            else:
-                # self is +/-Infinity; return unaltered
-                return Decimal(self)
-
-        # if self is zero then exponent should be between Etiny and
-        # Emax if _clamp==0, and between Etiny and Etop if _clamp==1.
-        Etiny = context.Etiny()
-        Etop = context.Etop()
-        if not self:
-            exp_max = [context.Emax, Etop][context._clamp]
-            new_exp = min(max(self._exp, Etiny), exp_max)
-            if new_exp != self._exp:
-                context._raise_error(Clamped)
-                return _dec_from_triple(self._sign, '0', new_exp)
-            else:
-                return Decimal(self)
-
-        # exp_min is the smallest allowable exponent of the result,
-        # equal to max(self.adjusted()-context.prec+1, Etiny)
-        exp_min = len(self._int) + self._exp - context.prec
-        if exp_min > Etop:
-            # overflow: exp_min > Etop iff self.adjusted() > Emax
-            ans = context._raise_error(Overflow, 'above Emax', self._sign)
-            context._raise_error(Inexact)
-            context._raise_error(Rounded)
-            return ans
-
-        self_is_subnormal = exp_min < Etiny
-        if self_is_subnormal:
-            exp_min = Etiny
-
-        # round if self has too many digits
-        if self._exp < exp_min:
-            digits = len(self._int) + self._exp - exp_min
-            if digits < 0:
-                self = _dec_from_triple(self._sign, '1', exp_min-1)
-                digits = 0
-            rounding_method = self._pick_rounding_function[context.rounding]
-            changed = rounding_method(self, digits)
-            coeff = self._int[:digits] or '0'
-            if changed > 0:
-                coeff = str(int(coeff)+1)
-                if len(coeff) > context.prec:
-                    coeff = coeff[:-1]
-                    exp_min += 1
-
-            # check whether the rounding pushed the exponent out of range
-            if exp_min > Etop:
-                ans = context._raise_error(Overflow, 'above Emax', self._sign)
-            else:
-                ans = _dec_from_triple(self._sign, coeff, exp_min)
-
-            # raise the appropriate signals, taking care to respect
-            # the precedence described in the specification
-            if changed and self_is_subnormal:
-                context._raise_error(Underflow)
-            if self_is_subnormal:
-                context._raise_error(Subnormal)
-            if changed:
-                context._raise_error(Inexact)
-            context._raise_error(Rounded)
-            if not ans:
-                # raise Clamped on underflow to 0
-                context._raise_error(Clamped)
-            return ans
-
-        if self_is_subnormal:
-            context._raise_error(Subnormal)
-
-        # fold down if _clamp == 1 and self has too few digits
-        if context._clamp == 1 and self._exp > Etop:
-            context._raise_error(Clamped)
-            self_padded = self._int + '0'*(self._exp - Etop)
-            return _dec_from_triple(self._sign, self_padded, Etop)
-
-        # here self was representable to begin with; return unchanged
-        return Decimal(self)
-
-    # for each of the rounding functions below:
-    #   self is a finite, nonzero Decimal
-    #   prec is an integer satisfying 0 <= prec < len(self._int)
-    #
-    # each function returns either -1, 0, or 1, as follows:
-    #   1 indicates that self should be rounded up (away from zero)
-    #   0 indicates that self should be truncated, and that all the
-    #     digits to be truncated are zeros (so the value is unchanged)
-    #  -1 indicates that there are nonzero digits to be truncated
-
-    def _round_down(self, prec):
-        """Also known as round-towards-0, truncate."""
-        if _all_zeros(self._int, prec):
-            return 0
-        else:
-            return -1
-
-    def _round_up(self, prec):
-        """Rounds away from 0."""
-        return -self._round_down(prec)
-
-    def _round_half_up(self, prec):
-        """Rounds 5 up (away from 0)"""
-        if self._int[prec] in '56789':
-            return 1
-        elif _all_zeros(self._int, prec):
-            return 0
-        else:
-            return -1
-
-    def _round_half_down(self, prec):
-        """Round 5 down"""
-        if _exact_half(self._int, prec):
-            return -1
-        else:
-            return self._round_half_up(prec)
-
-    def _round_half_even(self, prec):
-        """Round 5 to even, rest to nearest."""
-        if _exact_half(self._int, prec) and \
-                (prec == 0 or self._int[prec-1] in '02468'):
-            return -1
-        else:
-            return self._round_half_up(prec)
-
-    def _round_ceiling(self, prec):
-        """Rounds up (not away from 0 if negative.)"""
-        if self._sign:
-            return self._round_down(prec)
-        else:
-            return -self._round_down(prec)
-
-    def _round_floor(self, prec):
-        """Rounds down (not towards 0 if negative)"""
-        if not self._sign:
-            return self._round_down(prec)
-        else:
-            return -self._round_down(prec)
-
-    def _round_05up(self, prec):
-        """Round down unless digit prec-1 is 0 or 5."""
-        if prec and self._int[prec-1] not in '05':
-            return self._round_down(prec)
-        else:
-            return -self._round_down(prec)
-
-    _pick_rounding_function = dict(
-        ROUND_DOWN = _round_down,
-        ROUND_UP = _round_up,
-        ROUND_HALF_UP = _round_half_up,
-        ROUND_HALF_DOWN = _round_half_down,
-        ROUND_HALF_EVEN = _round_half_even,
-        ROUND_CEILING = _round_ceiling,
-        ROUND_FLOOR = _round_floor,
-        ROUND_05UP = _round_05up,
-    )
-
-    def fma(self, other, third, context=None):
-        """Fused multiply-add.
-
-        Returns self*other+third with no rounding of the intermediate
-        product self*other.
-
-        self and other are multiplied together, with no rounding of
-        the result.  The third operand is then added to the result,
-        and a single final rounding is performed.
-        """
-
-        other = _convert_other(other, raiseit=True)
-
-        # compute product; raise InvalidOperation if either operand is
-        # a signaling NaN or if the product is zero times infinity.
-        if self._is_special or other._is_special:
-            if context is None:
-                context = getcontext()
-            if self._exp == 'N':
-                return context._raise_error(InvalidOperation, 'sNaN', self)
-            if other._exp == 'N':
-                return context._raise_error(InvalidOperation, 'sNaN', other)
-            if self._exp == 'n':
-                product = self
-            elif other._exp == 'n':
-                product = other
-            elif self._exp == 'F':
-                if not other:
-                    return context._raise_error(InvalidOperation,
-                                                'INF * 0 in fma')
-                product = _SignedInfinity[self._sign ^ other._sign]
-            elif other._exp == 'F':
-                if not self:
-                    return context._raise_error(InvalidOperation,
-                                                '0 * INF in fma')
-                product = _SignedInfinity[self._sign ^ other._sign]
-        else:
-            product = _dec_from_triple(self._sign ^ other._sign,
-                                       str(int(self._int) * int(other._int)),
-                                       self._exp + other._exp)
-
-        third = _convert_other(third, raiseit=True)
-        return product.__add__(third, context)
-
-    def _power_modulo(self, other, modulo, context=None):
-        """Three argument version of __pow__"""
-
-        # if can't convert other and modulo to Decimal, raise
-        # TypeError; there's no point returning NotImplemented (no
-        # equivalent of __rpow__ for three argument pow)
-        other = _convert_other(other, raiseit=True)
-        modulo = _convert_other(modulo, raiseit=True)
-
-        if context is None:
-            context = getcontext()
-
-        # deal with NaNs: if there are any sNaNs then first one wins,
-        # (i.e. behaviour for NaNs is identical to that of fma)
-        self_is_nan = self._isnan()
-        other_is_nan = other._isnan()
-        modulo_is_nan = modulo._isnan()
-        if self_is_nan or other_is_nan or modulo_is_nan:
-            if self_is_nan == 2:
-                return context._raise_error(InvalidOperation, 'sNaN',
-                                        self)
-            if other_is_nan == 2:
-                return context._raise_error(InvalidOperation, 'sNaN',
-                                        other)
-            if modulo_is_nan == 2:
-                return context._raise_error(InvalidOperation, 'sNaN',
-                                        modulo)
-            if self_is_nan:
-                return self._fix_nan(context)
-            if other_is_nan:
-                return other._fix_nan(context)
-            return modulo._fix_nan(context)
-
-        # check inputs: we apply same restrictions as Python's pow()
-        if not (self._isinteger() and
-                other._isinteger() and
-                modulo._isinteger()):
-            return context._raise_error(InvalidOperation,
-                                        'pow() 3rd argument not allowed '
-                                        'unless all arguments are integers')
-        if other < 0:
-            return context._raise_error(InvalidOperation,
-                                        'pow() 2nd argument cannot be '
-                                        'negative when 3rd argument specified')
-        if not modulo:
-            return context._raise_error(InvalidOperation,
-                                        'pow() 3rd argument cannot be 0')
-
-        # additional restriction for decimal: the modulus must be less
-        # than 10**prec in absolute value
-        if modulo.adjusted() >= context.prec:
-            return context._raise_error(InvalidOperation,
-                                        'insufficient precision: pow() 3rd '
-                                        'argument must not have more than '
-                                        'precision digits')
-
-        # define 0**0 == NaN, for consistency with two-argument pow
-        # (even though it hurts!)
-        if not other and not self:
-            return context._raise_error(InvalidOperation,
-                                        'at least one of pow() 1st argument '
-                                        'and 2nd argument must be nonzero ;'
-                                        '0**0 is not defined')
-
-        # compute sign of result
-        if other._iseven():
-            sign = 0
-        else:
-            sign = self._sign
-
-        # convert modulo to a Python integer, and self and other to
-        # Decimal integers (i.e. force their exponents to be >= 0)
-        modulo = abs(int(modulo))
-        base = _WorkRep(self.to_integral_value())
-        exponent = _WorkRep(other.to_integral_value())
-
-        # compute result using integer pow()
-        base = (base.int % modulo * pow(10, base.exp, modulo)) % modulo
-        for i in xrange(exponent.exp):
-            base = pow(base, 10, modulo)
-        base = pow(base, exponent.int, modulo)
-
-        return _dec_from_triple(sign, str(base), 0)
-
-    def _power_exact(self, other, p):
-        """Attempt to compute self**other exactly.
-
-        Given Decimals self and other and an integer p, attempt to
-        compute an exact result for the power self**other, with p
-        digits of precision.  Return None if self**other is not
-        exactly representable in p digits.
-
-        Assumes that elimination of special cases has already been
-        performed: self and other must both be nonspecial; self must
-        be positive and not numerically equal to 1; other must be
-        nonzero.  For efficiency, other._exp should not be too large,
-        so that 10**abs(other._exp) is a feasible calculation."""
-
-        # In the comments below, we write x for the value of self and
-        # y for the value of other.  Write x = xc*10**xe and y =
-        # yc*10**ye.
-
-        # The main purpose of this method is to identify the *failure*
-        # of x**y to be exactly representable with as little effort as
-        # possible.  So we look for cheap and easy tests that
-        # eliminate the possibility of x**y being exact.  Only if all
-        # these tests are passed do we go on to actually compute x**y.
-
-        # Here's the main idea.  First normalize both x and y.  We
-        # express y as a rational m/n, with m and n relatively prime
-        # and n>0.  Then for x**y to be exactly representable (at
-        # *any* precision), xc must be the nth power of a positive
-        # integer and xe must be divisible by n.  If m is negative
-        # then additionally xc must be a power of either 2 or 5, hence
-        # a power of 2**n or 5**n.
-        #
-        # There's a limit to how small |y| can be: if y=m/n as above
-        # then:
-        #
-        #  (1) if xc != 1 then for the result to be representable we
-        #      need xc**(1/n) >= 2, and hence also xc**|y| >= 2.  So
-        #      if |y| <= 1/nbits(xc) then xc < 2**nbits(xc) <=
-        #      2**(1/|y|), hence xc**|y| < 2 and the result is not
-        #      representable.
-        #
-        #  (2) if xe != 0, |xe|*(1/n) >= 1, so |xe|*|y| >= 1.  Hence if
-        #      |y| < 1/|xe| then the result is not representable.
-        #
-        # Note that since x is not equal to 1, at least one of (1) and
-        # (2) must apply.  Now |y| < 1/nbits(xc) iff |yc|*nbits(xc) <
-        # 10**-ye iff len(str(|yc|*nbits(xc)) <= -ye.
-        #
-        # There's also a limit to how large y can be, at least if it's
-        # positive: the normalized result will have coefficient xc**y,
-        # so if it's representable then xc**y < 10**p, and y <
-        # p/log10(xc).  Hence if y*log10(xc) >= p then the result is
-        # not exactly representable.
-
-        # if len(str(abs(yc*xe)) <= -ye then abs(yc*xe) < 10**-ye,
-        # so |y| < 1/xe and the result is not representable.
-        # Similarly, len(str(abs(yc)*xc_bits)) <= -ye implies |y|
-        # < 1/nbits(xc).
-
-        x = _WorkRep(self)
-        xc, xe = x.int, x.exp
-        while xc % 10 == 0:
-            xc //= 10
-            xe += 1
-
-        y = _WorkRep(other)
-        yc, ye = y.int, y.exp
-        while yc % 10 == 0:
-            yc //= 10
-            ye += 1
-
-        # case where xc == 1: result is 10**(xe*y), with xe*y
-        # required to be an integer
-        if xc == 1:
-            xe *= yc
-            # result is now 10**(xe * 10**ye);  xe * 10**ye must be integral
-            while xe % 10 == 0:
-                xe //= 10
-                ye += 1
-            if ye < 0:
-                return None
-            exponent = xe * 10**ye
-            if y.sign == 1:
-                exponent = -exponent
-            # if other is a nonnegative integer, use ideal exponent
-            if other._isinteger() and other._sign == 0:
-                ideal_exponent = self._exp*int(other)
-                zeros = min(exponent-ideal_exponent, p-1)
-            else:
-                zeros = 0
-            return _dec_from_triple(0, '1' + '0'*zeros, exponent-zeros)
-
-        # case where y is negative: xc must be either a power
-        # of 2 or a power of 5.
-        if y.sign == 1:
-            last_digit = xc % 10
-            if last_digit in (2,4,6,8):
-                # quick test for power of 2
-                if xc & -xc != xc:
-                    return None
-                # now xc is a power of 2; e is its exponent
-                e = _nbits(xc)-1
-                # find e*y and xe*y; both must be integers
-                if ye >= 0:
-                    y_as_int = yc*10**ye
-                    e = e*y_as_int
-                    xe = xe*y_as_int
-                else:
-                    ten_pow = 10**-ye
-                    e, remainder = divmod(e*yc, ten_pow)
-                    if remainder:
-                        return None
-                    xe, remainder = divmod(xe*yc, ten_pow)
-                    if remainder:
-                        return None
-
-                if e*65 >= p*93: # 93/65 > log(10)/log(5)
-                    return None
-                xc = 5**e
-
-            elif last_digit == 5:
-                # e >= log_5(xc) if xc is a power of 5; we have
-                # equality all the way up to xc=5**2658
-                e = _nbits(xc)*28//65
-                xc, remainder = divmod(5**e, xc)
-                if remainder:
-                    return None
-                while xc % 5 == 0:
-                    xc //= 5
-                    e -= 1
-                if ye >= 0:
-                    y_as_integer = yc*10**ye
-                    e = e*y_as_integer
-                    xe = xe*y_as_integer
-                else:
-                    ten_pow = 10**-ye
-                    e, remainder = divmod(e*yc, ten_pow)
-                    if remainder:
-                        return None
-                    xe, remainder = divmod(xe*yc, ten_pow)
-                    if remainder:
-                        return None
-                if e*3 >= p*10: # 10/3 > log(10)/log(2)
-                    return None
-                xc = 2**e
-            else:
-                return None
-
-            if xc >= 10**p:
-                return None
-            xe = -e-xe
-            return _dec_from_triple(0, str(xc), xe)
-
-        # now y is positive; find m and n such that y = m/n
-        if ye >= 0:
-            m, n = yc*10**ye, 1
-        else:
-            if xe != 0 and len(str(abs(yc*xe))) <= -ye:
-                return None
-            xc_bits = _nbits(xc)
-            if xc != 1 and len(str(abs(yc)*xc_bits)) <= -ye:
-                return None
-            m, n = yc, 10**(-ye)
-            while m % 2 == n % 2 == 0:
-                m //= 2
-                n //= 2
-            while m % 5 == n % 5 == 0:
-                m //= 5
-                n //= 5
-
-        # compute nth root of xc*10**xe
-        if n > 1:
-            # if 1 < xc < 2**n then xc isn't an nth power
-            if xc != 1 and xc_bits <= n:
-                return None
-
-            xe, rem = divmod(xe, n)
-            if rem != 0:
-                return None
-
-            # compute nth root of xc using Newton's method
-            a = 1L << -(-_nbits(xc)//n) # initial estimate
-            while True:
-                q, r = divmod(xc, a**(n-1))
-                if a <= q:
-                    break
-                else:
-                    a = (a*(n-1) + q)//n
-            if not (a == q and r == 0):
-                return None
-            xc = a
-
-        # now xc*10**xe is the nth root of the original xc*10**xe
-        # compute mth power of xc*10**xe
-
-        # if m > p*100//_log10_lb(xc) then m > p/log10(xc), hence xc**m >
-        # 10**p and the result is not representable.
-        if xc > 1 and m > p*100//_log10_lb(xc):
-            return None
-        xc = xc**m
-        xe *= m
-        if xc > 10**p:
-            return None
-
-        # by this point the result *is* exactly representable
-        # adjust the exponent to get as close as possible to the ideal
-        # exponent, if necessary
-        str_xc = str(xc)
-        if other._isinteger() and other._sign == 0:
-            ideal_exponent = self._exp*int(other)
-            zeros = min(xe-ideal_exponent, p-len(str_xc))
-        else:
-            zeros = 0
-        return _dec_from_triple(0, str_xc+'0'*zeros, xe-zeros)
-
-    def __pow__(self, other, modulo=None, context=None):
-        """Return self ** other [ % modulo].
-
-        With two arguments, compute self**other.
-
-        With three arguments, compute (self**other) % modulo.  For the
-        three argument form, the following restrictions on the
-        arguments hold:
-
-         - all three arguments must be integral
-         - other must be nonnegative
-         - either self or other (or both) must be nonzero
-         - modulo must be nonzero and must have at most p digits,
-           where p is the context precision.
-
-        If any of these restrictions is violated the InvalidOperation
-        flag is raised.
-
-        The result of pow(self, other, modulo) is identical to the
-        result that would be obtained by computing (self**other) %
-        modulo with unbounded precision, but is computed more
-        efficiently.  It is always exact.
-        """
-
-        if modulo is not None:
-            return self._power_modulo(other, modulo, context)
-
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-
-        if context is None:
-            context = getcontext()
-
-        # either argument is a NaN => result is NaN
-        ans = self._check_nans(other, context)
-        if ans:
-            return ans
-
-        # 0**0 = NaN (!), x**0 = 1 for nonzero x (including +/-Infinity)
-        if not other:
-            if not self:
-                return context._raise_error(InvalidOperation, '0 ** 0')
-            else:
-                return _One
-
-        # result has sign 1 iff self._sign is 1 and other is an odd integer
-        result_sign = 0
-        if self._sign == 1:
-            if other._isinteger():
-                if not other._iseven():
-                    result_sign = 1
-            else:
-                # -ve**noninteger = NaN
-                # (-0)**noninteger = 0**noninteger
-                if self:
-                    return context._raise_error(InvalidOperation,
-                        'x ** y with x negative and y not an integer')
-            # negate self, without doing any unwanted rounding
-            self = self.copy_negate()
-
-        # 0**(+ve or Inf)= 0; 0**(-ve or -Inf) = Infinity
-        if not self:
-            if other._sign == 0:
-                return _dec_from_triple(result_sign, '0', 0)
-            else:
-                return _SignedInfinity[result_sign]
-
-        # Inf**(+ve or Inf) = Inf; Inf**(-ve or -Inf) = 0
-        if self._isinfinity():
-            if other._sign == 0:
-                return _SignedInfinity[result_sign]
-            else:
-                return _dec_from_triple(result_sign, '0', 0)
-
-        # 1**other = 1, but the choice of exponent and the flags
-        # depend on the exponent of self, and on whether other is a
-        # positive integer, a negative integer, or neither
-        if self == _One:
-            if other._isinteger():
-                # exp = max(self._exp*max(int(other), 0),
-                # 1-context.prec) but evaluating int(other) directly
-                # is dangerous until we know other is small (other
-                # could be 1e999999999)
-                if other._sign == 1:
-                    multiplier = 0
-                elif other > context.prec:
-                    multiplier = context.prec
-                else:
-                    multiplier = int(other)
-
-                exp = self._exp * multiplier
-                if exp < 1-context.prec:
-                    exp = 1-context.prec
-                    context._raise_error(Rounded)
-            else:
-                context._raise_error(Inexact)
-                context._raise_error(Rounded)
-                exp = 1-context.prec
-
-            return _dec_from_triple(result_sign, '1'+'0'*-exp, exp)
-
-        # compute adjusted exponent of self
-        self_adj = self.adjusted()
-
-        # self ** infinity is infinity if self > 1, 0 if self < 1
-        # self ** -infinity is infinity if self < 1, 0 if self > 1
-        if other._isinfinity():
-            if (other._sign == 0) == (self_adj < 0):
-                return _dec_from_triple(result_sign, '0', 0)
-            else:
-                return _SignedInfinity[result_sign]
-
-        # from here on, the result always goes through the call
-        # to _fix at the end of this function.
-        ans = None
-        exact = False
-
-        # crude test to catch cases of extreme overflow/underflow.  If
-        # log10(self)*other >= 10**bound and bound >= len(str(Emax))
-        # then 10**bound >= 10**len(str(Emax)) >= Emax+1 and hence
-        # self**other >= 10**(Emax+1), so overflow occurs.  The test
-        # for underflow is similar.
-        bound = self._log10_exp_bound() + other.adjusted()
-        if (self_adj >= 0) == (other._sign == 0):
-            # self > 1 and other +ve, or self < 1 and other -ve
-            # possibility of overflow
-            if bound >= len(str(context.Emax)):
-                ans = _dec_from_triple(result_sign, '1', context.Emax+1)
-        else:
-            # self > 1 and other -ve, or self < 1 and other +ve
-            # possibility of underflow to 0
-            Etiny = context.Etiny()
-            if bound >= len(str(-Etiny)):
-                ans = _dec_from_triple(result_sign, '1', Etiny-1)
-
-        # try for an exact result with precision +1
-        if ans is None:
-            ans = self._power_exact(other, context.prec + 1)
-            if ans is not None:
-                if result_sign == 1:
-                    ans = _dec_from_triple(1, ans._int, ans._exp)
-                exact = True
-
-        # usual case: inexact result, x**y computed directly as exp(y*log(x))
-        if ans is None:
-            p = context.prec
-            x = _WorkRep(self)
-            xc, xe = x.int, x.exp
-            y = _WorkRep(other)
-            yc, ye = y.int, y.exp
-            if y.sign == 1:
-                yc = -yc
-
-            # compute correctly rounded result:  start with precision +3,
-            # then increase precision until result is unambiguously roundable
-            extra = 3
-            while True:
-                coeff, exp = _dpower(xc, xe, yc, ye, p+extra)
-                if coeff % (5*10**(len(str(coeff))-p-1)):
-                    break
-                extra += 3
-
-            ans = _dec_from_triple(result_sign, str(coeff), exp)
-
-        # unlike exp, ln and log10, the power function respects the
-        # rounding mode; no need to switch to ROUND_HALF_EVEN here
-
-        # There's a difficulty here when 'other' is not an integer and
-        # the result is exact.  In this case, the specification
-        # requires that the Inexact flag be raised (in spite of
-        # exactness), but since the result is exact _fix won't do this
-        # for us.  (Correspondingly, the Underflow signal should also
-        # be raised for subnormal results.)  We can't directly raise
-        # these signals either before or after calling _fix, since
-        # that would violate the precedence for signals.  So we wrap
-        # the ._fix call in a temporary context, and reraise
-        # afterwards.
-        if exact and not other._isinteger():
-            # pad with zeros up to length context.prec+1 if necessary; this
-            # ensures that the Rounded signal will be raised.
-            if len(ans._int) <= context.prec:
-                expdiff = context.prec + 1 - len(ans._int)
-                ans = _dec_from_triple(ans._sign, ans._int+'0'*expdiff,
-                                       ans._exp-expdiff)
-
-            # create a copy of the current context, with cleared flags/traps
-            newcontext = context.copy()
-            newcontext.clear_flags()
-            for exception in _signals:
-                newcontext.traps[exception] = 0
-
-            # round in the new context
-            ans = ans._fix(newcontext)
-
-            # raise Inexact, and if necessary, Underflow
-            newcontext._raise_error(Inexact)
-            if newcontext.flags[Subnormal]:
-                newcontext._raise_error(Underflow)
-
-            # propagate signals to the original context; _fix could
-            # have raised any of Overflow, Underflow, Subnormal,
-            # Inexact, Rounded, Clamped.  Overflow needs the correct
-            # arguments.  Note that the order of the exceptions is
-            # important here.
-            if newcontext.flags[Overflow]:
-                context._raise_error(Overflow, 'above Emax', ans._sign)
-            for exception in Underflow, Subnormal, Inexact, Rounded, Clamped:
-                if newcontext.flags[exception]:
-                    context._raise_error(exception)
-
-        else:
-            ans = ans._fix(context)
-
-        return ans
-
-    def __rpow__(self, other, context=None):
-        """Swaps self/other and returns __pow__."""
-        other = _convert_other(other)
-        if other is NotImplemented:
-            return other
-        return other.__pow__(self, context=context)
-
-    def normalize(self, context=None):
-        """Normalize- strip trailing 0s, change anything equal to 0 to 0e0"""
-
-        if context is None:
-            context = getcontext()
-
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-        dup = self._fix(context)
-        if dup._isinfinity():
-            return dup
-
-        if not dup:
-            return _dec_from_triple(dup._sign, '0', 0)
-        exp_max = [context.Emax, context.Etop()][context._clamp]
-        end = len(dup._int)
-        exp = dup._exp
-        while dup._int[end-1] == '0' and exp < exp_max:
-            exp += 1
-            end -= 1
-        return _dec_from_triple(dup._sign, dup._int[:end], exp)
-
-    def quantize(self, exp, rounding=None, context=None, watchexp=True):
-        """Quantize self so its exponent is the same as that of exp.
-
-        Similar to self._rescale(exp._exp) but with error checking.
-        """
-        exp = _convert_other(exp, raiseit=True)
-
-        if context is None:
-            context = getcontext()
-        if rounding is None:
-            rounding = context.rounding
-
-        if self._is_special or exp._is_special:
-            ans = self._check_nans(exp, context)
-            if ans:
-                return ans
-
-            if exp._isinfinity() or self._isinfinity():
-                if exp._isinfinity() and self._isinfinity():
-                    return Decimal(self)  # if both are inf, it is OK
-                return context._raise_error(InvalidOperation,
-                                        'quantize with one INF')
-
-        # if we're not watching exponents, do a simple rescale
-        if not watchexp:
-            ans = self._rescale(exp._exp, rounding)
-            # raise Inexact and Rounded where appropriate
-            if ans._exp > self._exp:
-                context._raise_error(Rounded)
-                if ans != self:
-                    context._raise_error(Inexact)
-            return ans
-
-        # exp._exp should be between Etiny and Emax
-        if not (context.Etiny() <= exp._exp <= context.Emax):
-            return context._raise_error(InvalidOperation,
-                   'target exponent out of bounds in quantize')
-
-        if not self:
-            ans = _dec_from_triple(self._sign, '0', exp._exp)
-            return ans._fix(context)
-
-        self_adjusted = self.adjusted()
-        if self_adjusted > context.Emax:
-            return context._raise_error(InvalidOperation,
-                                        'exponent of quantize result too large for current context')
-        if self_adjusted - exp._exp + 1 > context.prec:
-            return context._raise_error(InvalidOperation,
-                                        'quantize result has too many digits for current context')
-
-        ans = self._rescale(exp._exp, rounding)
-        if ans.adjusted() > context.Emax:
-            return context._raise_error(InvalidOperation,
-                                        'exponent of quantize result too large for current context')
-        if len(ans._int) > context.prec:
-            return context._raise_error(InvalidOperation,
-                                        'quantize result has too many digits for current context')
-
-        # raise appropriate flags
-        if ans and ans.adjusted() < context.Emin:
-            context._raise_error(Subnormal)
-        if ans._exp > self._exp:
-            if ans != self:
-                context._raise_error(Inexact)
-            context._raise_error(Rounded)
-
-        # call to fix takes care of any necessary folddown, and
-        # signals Clamped if necessary
-        ans = ans._fix(context)
-        return ans
-
-    def same_quantum(self, other):
-        """Return True if self and other have the same exponent; otherwise
-        return False.
-
-        If either operand is a special value, the following rules are used:
-           * return True if both operands are infinities
-           * return True if both operands are NaNs
-           * otherwise, return False.
-        """
-        other = _convert_other(other, raiseit=True)
-        if self._is_special or other._is_special:
-            return (self.is_nan() and other.is_nan() or
-                    self.is_infinite() and other.is_infinite())
-        return self._exp == other._exp
-
-    def _rescale(self, exp, rounding):
-        """Rescale self so that the exponent is exp, either by padding with zeros
-        or by truncating digits, using the given rounding mode.
-
-        Specials are returned without change.  This operation is
-        quiet: it raises no flags, and uses no information from the
-        context.
-
-        exp = exp to scale to (an integer)
-        rounding = rounding mode
-        """
-        if self._is_special:
-            return Decimal(self)
-        if not self:
-            return _dec_from_triple(self._sign, '0', exp)
-
-        if self._exp >= exp:
-            # pad answer with zeros if necessary
-            return _dec_from_triple(self._sign,
-                                        self._int + '0'*(self._exp - exp), exp)
-
-        # too many digits; round and lose data.  If self.adjusted() <
-        # exp-1, replace self by 10**(exp-1) before rounding
-        digits = len(self._int) + self._exp - exp
-        if digits < 0:
-            self = _dec_from_triple(self._sign, '1', exp-1)
-            digits = 0
-        this_function = self._pick_rounding_function[rounding]
-        changed = this_function(self, digits)
-        coeff = self._int[:digits] or '0'
-        if changed == 1:
-            coeff = str(int(coeff)+1)
-        return _dec_from_triple(self._sign, coeff, exp)
-
-    def _round(self, places, rounding):
-        """Round a nonzero, nonspecial Decimal to a fixed number of
-        significant figures, using the given rounding mode.
-
-        Infinities, NaNs and zeros are returned unaltered.
-
-        This operation is quiet: it raises no flags, and uses no
-        information from the context.
-
-        """
-        if places <= 0:
-            raise ValueError("argument should be at least 1 in _round")
-        if self._is_special or not self:
-            return Decimal(self)
-        ans = self._rescale(self.adjusted()+1-places, rounding)
-        # it can happen that the rescale alters the adjusted exponent;
-        # for example when rounding 99.97 to 3 significant figures.
-        # When this happens we end up with an extra 0 at the end of
-        # the number; a second rescale fixes this.
-        if ans.adjusted() != self.adjusted():
-            ans = ans._rescale(ans.adjusted()+1-places, rounding)
-        return ans
-
-    def to_integral_exact(self, rounding=None, context=None):
-        """Rounds to a nearby integer.
-
-        If no rounding mode is specified, take the rounding mode from
-        the context.  This method raises the Rounded and Inexact flags
-        when appropriate.
-
-        See also: to_integral_value, which does exactly the same as
-        this method except that it doesn't raise Inexact or Rounded.
-        """
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-            return Decimal(self)
-        if self._exp >= 0:
-            return Decimal(self)
-        if not self:
-            return _dec_from_triple(self._sign, '0', 0)
-        if context is None:
-            context = getcontext()
-        if rounding is None:
-            rounding = context.rounding
-        ans = self._rescale(0, rounding)
-        if ans != self:
-            context._raise_error(Inexact)
-        context._raise_error(Rounded)
-        return ans
-
-    def to_integral_value(self, rounding=None, context=None):
-        """Rounds to the nearest integer, without raising inexact, rounded."""
-        if context is None:
-            context = getcontext()
-        if rounding is None:
-            rounding = context.rounding
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-            return Decimal(self)
-        if self._exp >= 0:
-            return Decimal(self)
-        else:
-            return self._rescale(0, rounding)
-
-    # the method name changed, but we provide also the old one, for compatibility
-    to_integral = to_integral_value
-
-    def sqrt(self, context=None):
-        """Return the square root of self."""
-        if context is None:
-            context = getcontext()
-
-        if self._is_special:
-            ans = self._check_nans(context=context)
-            if ans:
-                return ans
-
-            if self._isinfinity() and self._sign == 0:
-                return Decimal(self)
-
-        if not self:
-            # exponent = self._exp // 2.  sqrt(-0) = -0
-            ans = _dec_from_triple(self._sign, '0', self._exp // 2)
-            return ans._fix(context)
-
-        if self._sign == 1:
-            return context._raise_error(InvalidOperation, 'sqrt(-x), x > 0')
-
-        # At this point self represents a positive number.  Let p be
-        # the desired precision and express self in the form c*100**e
-        # with c a positive real number and e an integer, c and e
-        # being chosen so that 100**(p-1) <= c < 100**p.  Then the
-        # (exact) square root of self is sqrt(c)*10**e, and 10**(p-1)
-        # <= sqrt(c) < 10**p, so the closest representable Decimal at
-        # precision p is n*10**e where n = round_half_even(sqrt(c)),
-        # the closest integer to sqrt(c) with the even integer chosen
-        # in the case of a tie.
-        #
-        # To ensure correct rounding in all cases, we use the
-        # following trick: we compute the square root to an extra
-        # place (precision p+1 instead of precision p), rounding down.
-        # Then, if the result is inexact and its last digit is 0 or 5,
-        # we increase the last digit to 1 or 6 respectively; if it's
-        # exact we leave the last digit alone.  Now the final round to
-        # p places (or fewer in the case of underflow) will round
-        # correctly and raise the appropriate flags.
-
-        # use an extra digit of precision
-        prec = context.prec+1
-
-        # write argument in the form c*100**e where e = self._exp//2
-        # is the 'ideal' exponent, to be used if the square root is
-        # exactly representable.  l is the number of 'digits' of c in
-        # base 100, so that 100**(l-1) <= c < 100**l.
-        op = _WorkRep(self)
-        e = op.exp >> 1
-        if op.exp & 1:
-            c = op.int * 10
-            l = (len(self._int) >> 1) + 1
-        else:
-            c = op.int
-            l = len(self._int)+1 >> 1
-
-        # rescale so that c has exactly prec base 100 'digits'
-        shift = prec-l
-        if shift >= 0:
-            c *= 100**shift
-            exact = True
-        else:
-            c, remainder = divmod(c, 100**-shift)
-            exact = not remainder
-        e -= shift
-
-        # find n = floor(sqrt(c)) using Newton's method
-        n = 10**prec
-        while True:
-            q = c//n
-            if n <= q:
-                break
-            else:
-                n = n + q >> 1
-        exact = exact and n*n == c
-
-        if exact:
-            # result is exact; rescale to use ideal exponent e
-            if shift >= 0:
-                # assert n % 10**shift == 0
-                n //= 10**shift
-            else:
-                n *= 10**-shift
-            e += shift
-        else:
-            # result is not exact; fix last digit as described above
-            if n % 5 == 0:
-                n += 1
-
-        ans = _dec_from_triple(0, str(n), e)
-
-        # round, and fit to current context
-        context = context._shallow_copy()
-        rounding = context._set_rounding(ROUND_HALF_EVEN)
-        ans = ans._fix(context)
-        context.rounding = rounding
-
-        return ans
-
-    def max(self, other, context=None):
-        """Returns the larger value.
-
-        Like max(self, other) except if one is not a number, returns
-        NaN (and signals if one is sNaN).  Also rounds.
-        """
-        other = _convert_other(other, raiseit=True)
-
-        if context is None:
-            context = getcontext()
-
-        if self._is_special or other._is_special:
-            # If one operand is a quiet NaN and the other is number, then the
-            # number is always returned
-            sn = self._isnan()
-            on = other._isnan()
-            if sn or on:
-                if on == 1 and sn == 0:
-                    return self._fix(context)
-                if sn == 1 and on == 0:
-                    return other._fix(context)
-                return self._check_nans(other, context)
-
-        c = self._cmp(other)
-        if c == 0:
-            # If both operands are finite and equal in numerical value
-            # then an ordering is applied:
-            #
-            # If the signs differ then max returns the operand with the
-            # positive sign and min returns the operand with the negative sign
-            #
-            # If the signs are the same then the exponent is used to select
-            # the result.  This is exactly the ordering used in compare_total.
-            c = self.compare_total(other)
-
-        if c == -1:
-            ans = other
-        else:
-            ans = self
-
-        return ans._fix(context)
-
-    def min(self, other, context=None):
-        """Returns the smaller value.
-
-        Like min(self, other) except if one is not a number, returns
-        NaN (and signals if one is sNaN).  Also rounds.
-        """
-        other = _convert_other(other, raiseit=True)
-
-        if context is None:
-            context = getcontext()
-
-        if self._is_special or other._is_special:
-            # If one operand is a quiet NaN and the other is number, then the
-            # number is always returned
-            sn = self._isnan()
-            on = other._isnan()
-            if sn or on:
-                if on == 1 and sn == 0:
-                    return self._fix(context)
-                if sn == 1 and on == 0:
-                    return other._fix(context)
-                return self._check_nans(other, context)
-
-        c = self._cmp(other)
-        if c == 0:
-            c = self.compare_total(other)
-
-        if c == -1:
-            ans = self
-        else:
-            ans = other
-
-        return ans._fix(context)
-
-    def _isinteger(self):
-        """Returns whether self is an integer"""
-        if self._is_special:
-            return False
-        if self._exp >= 0:
-            return True
-        rest = self._int[self._exp:]
-        return rest == '0'*len(rest)
-
-    def _iseven(self):
-        """Returns True if self is even.  Assumes self is an integer."""
-        if not self or self._exp > 0:
-            return True
-        return self._int[-1+self._exp] in '02468'
-
-    def adjusted(self):
-        """Return the adjusted exponent of self"""
-        try:
-            return self._exp + len(self._int) - 1
-        # If NaN or Infinity, self._exp is string
-        except TypeError:
-            return 0
-
-    def canonical(self, context=None):
-        """Returns the same Decimal object.
-
-        As we do not have different encodings for the same number, the
-        received object already is in its canonical form.
-        """
-        return self
-
-    def compare_signal(self, other, context=None):
-        """Compares self to the other operand numerically.
-
-        It's pretty much like compare(), but all NaNs signal, with signaling
-        NaNs taking precedence over quiet NaNs.
-        """
-        other = _convert_other(other, raiseit = True)
-        ans = self._compare_check_nans(other, context)
-        if ans:
-            return ans
-        return self.compare(other, context=context)
-
-    def compare_total(self, other):
-        """Compares self to other using the abstract representations.
-
-        This is not like the standard compare, which use their numerical
-        value. Note that a total ordering is defined for all possible abstract
-        representations.
-        """
-        other = _convert_other(other, raiseit=True)
-
-        # if one is negative and the other is positive, it's easy
-        if self._sign and not other._sign:
-            return _NegativeOne
-        if not self._sign and other._sign:
-            return _One
-        sign = self._sign
-
-        # let's handle both NaN types
-        self_nan = self._isnan()
-        other_nan = other._isnan()
-        if self_nan or other_nan:
-            if self_nan == other_nan:
-                # compare payloads as though they're integers
-                self_key = len(self._int), self._int
-                other_key = len(other._int), other._int
-                if self_key < other_key:
-                    if sign:
-                        return _One
-                    else:
-                        return _NegativeOne
-                if self_key > other_key:
-                    if sign:
-                        return _NegativeOne
-                    else:
-                        return _One
-                return _Zero
-
-            if sign:
-                if self_nan == 1:
-                    return _NegativeOne
-                if other_nan == 1:
-                    return _One
-                if self_nan == 2:
-                    return _NegativeOne
-                if other_nan == 2:
-                    return _One
-            else:
-                if self_nan == 1:
-                    return _One
-                if other_nan == 1:
-                    return _NegativeOne
-                if self_nan == 2:
-                    return _One
-                if other_nan == 2:
-                    return _NegativeOne
-
-        if self < other:
-            return _NegativeOne
-        if self > other:
-            return _One
-
-        if self._exp < other._exp:
-            if sign:
-                return _One
-            else:
-                return _NegativeOne
-        if self._exp > other._exp:
-            if sign:
-                return _NegativeOne
-            else:
-                return _One
-        return _Zero
-
-
-    def compare_total_mag(self, other):
-        """Compares self to other using abstract repr., ignoring sign.
-
-        Like compare_total, but with operand's sign ignored and assumed to be 0.
-        """
-        other = _convert_other(other, raiseit=True)
-
-        s = self.copy_abs()
-        o = other.copy_abs()
-        return s.compare_total(o)
-
-    def copy_abs(self):
-        """Returns a copy with the sign set to 0. """
-        return _dec_from_triple(0, self._int, self._exp, self._is_special)
-
-    def copy_negate(self):
-        """Returns a copy with the sign inverted."""
-        if self._sign:
-            return _dec_from_triple(0, self._int, self._exp, self._is_special)
-        else:
-            return _dec_from_triple(1, self._int, self._exp, self._is_special)
-
-    def copy_sign(self, other):
-        """Returns self with the sign of other."""
-        other = _convert_other(other, raiseit=True)
-        return _dec_from_triple(other._sign, self._int,
-                                self._exp, self._is_special)
-
-    def exp(self, context=None):
-        """Returns e ** self."""
-
-        if context is None:
-            context = getcontext()
-
-        # exp(NaN) = NaN
-        ans = self._check_nans(context=context)
-        if ans:
-            return ans
-
-        # exp(-Infinity) = 0
-        if self._isinfinity() == -1:
-            return _Zero
-
-        # exp(0) = 1
-        if not self:
-            return _One
-
-        # exp(Infinity) = Infinity
-        if self._isinfinity() == 1:
-            return Decimal(self)
-
-        # the result is now guaranteed to be inexact (the true
-        # mathematical result is transcendental). There's no need to
-        # raise Rounded and Inexact here---they'll always be raised as
-        # a result of the call to _fix.
-        p = context.prec
-        adj = self.adjusted()
-
-        # we only need to do any computation for quite a small range
-        # of adjusted exponents---for example, -29 <= adj <= 10 for
-        # the default context.  For smaller exponent the result is
-        # indistinguishable from 1 at the given precision, while for
-        # larger exponent the result either overflows or underflows.
-        if self._sign == 0 and adj > len(str((context.Emax+1)*3)):
-            # overflow
-            ans = _dec_from_triple(0, '1', context.Emax+1)
-        elif self._sign == 1 and adj > len(str((-context.Etiny()+1)*3)):
-            # underflow to 0
-            ans = _dec_from_triple(0, '1', context.Etiny()-1)
-        elif self._sign == 0 and adj < -p:
-            # p+1 digits; final round will raise correct flags
-            ans = _dec_from_triple(0, '1' + '0'*(p-1) + '1', -p)
-        elif self._sign == 1 and adj < -p-1:
-            # p+1 digits; final round will raise correct flags
-            ans = _dec_from_triple(0, '9'*(p+1), -p-1)
-        # general case
-        else:
-            op = _WorkRep(self)
-            c, e = op.int, op.exp
-            if op.sign == 1:
-                c = -c
-
-            # compute correctly rounded result: increase precision by
-            # 3 digits at a time until we get an unambiguously
-            # roundable result
-            extra = 3
-            while True:
-                coeff, exp = _dexp(c, e, p+extra)
-                if coeff % (5*10**(len(str(coeff))-p-1)):
-                    break
-                extra += 3
-
-            ans = _dec_from_triple(0, str(coeff), exp)
-
-        # at this stage, ans should round correctly with *any*
-        # rounding mode, not just with ROUND_HALF_EVEN
-        context = context._shallow_copy()
-        rounding = context._set_rounding(ROUND_HALF_EVEN)
-        ans = ans._fix(context)
-        context.rounding = rounding
-
-        return ans
-
-    def is_canonical(self):
-        """Return True if self is canonical; otherwise return False.
-
-        Currently, the encoding of a Decimal instance is always
-        canonical, so this method returns True for any Decimal.
-        """
-        return True
-
-    def is_finite(self):
-        """Return True if self is finite; otherwise return False.
-
-        A Decimal instance is considered finite if it is neither
-        infinite nor a NaN.
-        """
-        return not self._is_special
-
-    def is_infinite(self):
-        """Return True if self is infinite; otherwise return False."""
-        return self._exp == 'F'
-
-    def is_nan(self):
-        """Return True if self is a qNaN or sNaN; otherwise return False."""
-        return self._exp in ('n', 'N')
-
-    def is_normal(self, context=None):
-        """Return True if self is a normal number; otherwise return False."""
-        if self._is_special or not self:
-            return False
-        if context is None:
-            context = getcontext()
-        return context.Emin <= self.adjusted()
-
-    def is_qnan(self):
-        """Return True if self is a quiet NaN; otherwise return False."""
-        return self._exp == 'n'
-
-    def is_signed(self):
-        """Return True if self is negative; otherwise return False."""
-        return self._sign == 1
-
-    def is_snan(self):
-        """Return True if self is a signaling NaN; otherwise return False."""
-        return self._exp == 'N'
-
-    def is_subnormal(self, context=None):
-        """Return True if self is subnormal; otherwise return False."""
-        if self._is_special or not self:
-            return False
-        if context is None:
-            context = getcontext()
-        return self.adjusted() < context.Emin
-
-    def is_zero(self):
-        """Return True if self is a zero; otherwise return False."""
-        return not self._is_special and self._int == '0'
-
-    def _ln_exp_bound(self):
-        """Compute a lower bound for the adjusted exponent of self.ln().
-        In other words, compute r such that self.ln() >= 10**r.  Assumes
-        that self is finite and positive and that self != 1.
-        """
-
-        # for 0.1 <= x <= 10 we use the inequalities 1-1/x <= ln(x) <= x-1
-        adj = self._exp + len(self._int) - 1
-        if adj >= 1:
-            # argument >= 10; we use 23/10 = 2.3 as a lower bound for ln(10)
-            return len(str(adj*23//10)) - 1
-        if adj <= -2:
-            # argument <= 0.1
-            return len(str((-1-adj)*23//10)) - 1
-        op = _WorkRep(self)
-        c, e = op.int, op.exp
-        if adj == 0:
-            # 1 < self < 10
-            num = str(c-10**-e)
-            den = str(c)
-            return len(num) - len(den) - (num < den)
-        # adj == -1, 0.1 <= self < 1
-        return e + len(str(10**-e - c)) - 1
-
-
-    def ln(self, context=None):
-        """Returns the natural (base e) logarithm of self."""
-
-        if context is None:
-            context = getcontext()
-
-        # ln(NaN) = NaN
-        ans = self._check_nans(context=context)
-        if ans:
-            return ans
-
-        # ln(0.0) == -Infinity
-        if not self:
-            return _NegativeInfinity
-
-        # ln(Infinity) = Infinity
-        if self._isinfinity() == 1:
-            return _Infinity
-
-        # ln(1.0) == 0.0
-        if self == _One:
-            return _Zero
-
-        # ln(negative) raises InvalidOperation
-        if self._sign == 1:
-            return context._raise_error(InvalidOperation,
-                                        'ln of a negative value')
-
-        # result is irrational, so necessarily inexact
-        op = _WorkRep(self)
-        c, e = op.int, op.exp
-        p = context.prec
-
-        # correctly rounded result: repeatedly increase precision by 3
-        # until we get an unambiguously roundable result
-        places = p - self._ln_exp_bound() + 2 # at least p+3 places
-        while True:
-            coeff = _dlog(c, e, places)
-            # assert len(str(abs(coeff)))-p >= 1
-            if coeff % (5*10**(len(str(abs(coeff)))-p-1)):
-                break
-            places += 3
-        ans = _dec_from_triple(int(coeff<0), str(abs(coeff)), -places)
-
-        context = context._shallow_copy()
-        rounding = context._set_rounding(ROUND_HALF_EVEN)
-        ans = ans._fix(context)
-        context.rounding = rounding
-        return ans
-
-    def _log10_exp_bound(self):
-        """Compute a lower bound for the adjusted exponent of self.log10().
-        In other words, find r such that self.log10() >= 10**r.
-        Assumes that self is finite and positive and that self != 1.
-        """
-
-        # For x >= 10 or x < 0.1 we only need a bound on the integer
-        # part of log10(self), and this comes directly from the
-        # exponent of x.  For 0.1 <= x <= 10 we use the inequalities
-        # 1-1/x <= log(x) <= x-1. If x > 1 we have |log10(x)| >
-        # (1-1/x)/2.31 > 0.  If x < 1 then |log10(x)| > (1-x)/2.31 > 0
-
-        adj = self._exp + len(self._int) - 1
-        if adj >= 1:
-            # self >= 10
-            return len(str(adj))-1
-        if adj <= -2:
-            # self < 0.1
-            return len(str(-1-adj))-1
-        op = _WorkRep(self)
-        c, e = op.int, op.exp
-        if adj == 0:
-            # 1 < self < 10
-            num = str(c-10**-e)
-            den = str(231*c)
-            return len(num) - len(den) - (num < den) + 2
-        # adj == -1, 0.1 <= self < 1
-        num = str(10**-e-c)
-        return len(num) + e - (num < "231") - 1
-
-    def log10(self, context=None):
-        """Returns the base 10 logarithm of self."""
-
-        if context is None:
-            context = getcontext()
-
-        # log10(NaN) = NaN
-        ans = self._check_nans(context=context)
-        if ans:
-            return ans
-
-        # log10(0.0) == -Infinity
-        if not self:
-            return _NegativeInfinity
-
-        # log10(Infinity) = Infinity
-        if self._isinfinity() == 1:
-            return _Infinity
-
-        # log10(negative or -Infinity) raises InvalidOperation
-        if self._sign == 1:
-            return context._raise_error(InvalidOperation,
-                                        'log10 of a negative value')
-
-        # log10(10**n) = n
-        if self._int[0] == '1' and self._int[1:] == '0'*(len(self._int) - 1):
-            # answer may need rounding
-            ans = Decimal(self._exp + len(self._int) - 1)
-        else:
-            # result is irrational, so necessarily inexact
-            op = _WorkRep(self)
-            c, e = op.int, op.exp
-            p = context.prec
-
-            # correctly rounded result: repeatedly increase precision
-            # until result is unambiguously roundable
-            places = p-self._log10_exp_bound()+2
-            while True:
-                coeff = _dlog10(c, e, places)
-                # assert len(str(abs(coeff)))-p >= 1
-                if coeff % (5*10**(len(str(abs(coeff)))-p-1)):
-                    break
-                places += 3
-            ans = _dec_from_triple(int(coeff<0), str(abs(coeff)), -places)
-
-        context = context._shallow_copy()
-        rounding = context._set_rounding(ROUND_HALF_EVEN)
-        ans = ans._fix(context)
-        context.rounding = rounding
-        return ans
-
-    def logb(self, context=None):
-        """ Returns the exponent of the magnitude of self's MSD.
-
-        The result is the integer which is the exponent of the magnitude
-        of the most significant digit of self (as though it were truncated
-        to a single digit while maintaining the value of that digit and
-        without limiting the resulting exponent).
-        """
-        # logb(NaN) = NaN
-        ans = self._check_nans(context=context)
-        if ans:
-            return ans
-
-        if context is None:
-            context = getcontext()
-
-        # logb(+/-Inf) = +Inf
-        if self._isinfinity():
-            return _Infinity
-
-        # logb(0) = -Inf, DivisionByZero
-        if not self:
-            return context._raise_error(DivisionByZero, 'logb(0)', 1)
-
-        # otherwise, simply return the adjusted exponent of self, as a
-        # Decimal.  Note that no attempt is made to fit the result
-        # into the current context.
-        ans = Decimal(self.adjusted())
-        return ans._fix(context)
-
-    def _islogical(self):
-        """Return True if self is a logical operand.
-
-        For being logical, it must be a finite number with a sign of 0,
-        an exponent of 0, and a coefficient whose digits must all be
-        either 0 or 1.
-        """
-        if self._sign != 0 or self._exp != 0:
-            return False
-        for dig in self._int:
-            if dig not in '01':
-                return False
-        return True
-
-    def _fill_logical(self, context, opa, opb):
-        dif = context.prec - len(opa)
-        if dif > 0:
-            opa = '0'*dif + opa
-        elif dif < 0:
-            opa = opa[-context.prec:]
-        dif = context.prec - len(opb)
-        if dif > 0:
-            opb = '0'*dif + opb
-        elif dif < 0:
-            opb = opb[-context.prec:]
-        return opa, opb
-
-    def logical_and(self, other, context=None):
-        """Applies an 'and' operation between self and other's digits."""
-        if context is None:
-            context = getcontext()
-
-        other = _convert_other(other, raiseit=True)
-
-        if not self._islogical() or not other._islogical():
-            return context._raise_error(InvalidOperation)
-
-        # fill to context.prec
-        (opa, opb) = self._fill_logical(context, self._int, other._int)
-
-        # make the operation, and clean starting zeroes
-        result = "".join([str(int(a)&int(b)) for a,b in zip(opa,opb)])
-        return _dec_from_triple(0, result.lstrip('0') or '0', 0)
-
-    def logical_invert(self, context=None):
-        """Invert all its digits."""
-        if context is None:
-            context = getcontext()
-        return self.logical_xor(_dec_from_triple(0,'1'*context.prec,0),
-                                context)
-
-    def logical_or(self, other, context=None):
-        """Applies an 'or' operation between self and other's digits."""
-        if context is None:
-            context = getcontext()
-
-        other = _convert_other(other, raiseit=True)
-
-        if not self._islogical() or not other._islogical():
-            return context._raise_error(InvalidOperation)
-
-        # fill to context.prec
-        (opa, opb) = self._fill_logical(context, self._int, other._int)
-
-        # make the operation, and clean starting zeroes
-        result = "".join([str(int(a)|int(b)) for a,b in zip(opa,opb)])
-        return _dec_from_triple(0, result.lstrip('0') or '0', 0)
-
-    def logical_xor(self, other, context=None):
-        """Applies an 'xor' operation between self and other's digits."""
-        if context is None:
-            context = getcontext()
-
-        other = _convert_other(other, raiseit=True)
-
-        if not self._islogical() or not other._islogical():
-            return context._raise_error(InvalidOperation)
-
-        # fill to context.prec
-        (opa, opb) = self._fill_logical(context, self._int, other._int)
-
-        # make the operation, and clean starting zeroes
-        result = "".join([str(int(a)^int(b)) for a,b in zip(opa,opb)])
-        return _dec_from_triple(0, result.lstrip('0') or '0', 0)
-
-    def max_mag(self, other, context=None):
-        """Compares the values numerically with their sign ignored."""
-        other = _convert_other(other, raiseit=True)
-
-        if context is None:
-            context = getcontext()
-
-        if self._is_special or other._is_special:
-            # If one operand is a quiet NaN and the other is number, then the
-            # number is always returned
-            sn = self._isnan()
-            on = other._isnan()
-            if sn or on:
-                if on == 1 and sn == 0:
-                    return self._fix(context)
-                if sn == 1 and on == 0:
-                    return other._fix(context)
-                return self._check_nans(other, context)
-
-        c = self.copy_abs()._cmp(other.copy_abs())
-        if c == 0:
-            c = self.compare_total(other)
-
-        if c == -1:
-            ans = other
-        else:
-            ans = self
-
-        return ans._fix(context)
-
-    def min_mag(self, other, context=None):
-        """Compares the values numerically with their sign ignored."""
-        other = _convert_other(other, raiseit=True)
-
-        if context is None:
-            context = getcontext()
-
-        if self._is_special or other._is_special:
-            # If one operand is a quiet NaN and the other is number, then the
-            # number is always returned
-            sn = self._isnan()
-            on = other._isnan()
-            if sn or on:
-                if on == 1 and sn == 0:
-                    return self._fix(context)
-                if sn == 1 and on == 0:
-                    return other._fix(context)
-                return self._check_nans(other, context)
-
-        c = self.copy_abs()._cmp(other.copy_abs())
-        if c == 0:
-            c = self.compare_total(other)
-
-        if c == -1:
-            ans = self
-        else:
-            ans = other
-
-        return ans._fix(context)
-
-    def next_minus(self, context=None):
-        """Returns the largest representable number smaller than itself."""
-        if context is None:
-            context = getcontext()
-
-        ans = self._check_nans(context=context)
-        if ans:
-            return ans
-
-        if self._isinfinity() == -1:
-            return _NegativeInfinity
-        if self._isinfinity() == 1:
-            return _dec_from_triple(0, '9'*context.prec, context.Etop())
-
-        context = context.copy()
-        context._set_rounding(ROUND_FLOOR)
-        context._ignore_all_flags()
-        new_self = self._fix(context)
-        if new_self != self:
-            return new_self
-        return self.__sub__(_dec_from_triple(0, '1', context.Etiny()-1),
-                            context)
-
-    def next_plus(self, context=None):
-        """Returns the smallest representable number larger than itself."""
-        if context is None:
-            context = getcontext()
-
-        ans = self._check_nans(context=context)
-        if ans:
-            return ans
-
-        if self._isinfinity() == 1:
-            return _Infinity
-        if self._isinfinity() == -1:
-            return _dec_from_triple(1, '9'*context.prec, context.Etop())
-
-        context = context.copy()
-        context._set_rounding(ROUND_CEILING)
-        context._ignore_all_flags()
-        new_self = self._fix(context)
-        if new_self != self:
-            return new_self
-        return self.__add__(_dec_from_triple(0, '1', context.Etiny()-1),
-                            context)
-
-    def next_toward(self, other, context=None):
-        """Returns the number closest to self, in the direction towards other.
-
-        The result is the closest representable number to self
-        (excluding self) that is in the direction towards other,
-        unless both have the same value.  If the two operands are
-        numerically equal, then the result is a copy of self with the
-        sign set to be the same as the sign of other.
-        """
-        other = _convert_other(other, raiseit=True)
-
-        if context is None:
-            context = getcontext()
-
-        ans = self._check_nans(other, context)
-        if ans:
-            return ans
-
-        comparison = self._cmp(other)
-        if comparison == 0:
-            return self.copy_sign(other)
-
-        if comparison == -1:
-            ans = self.next_plus(context)
-        else: # comparison == 1
-            ans = self.next_minus(context)
-
-        # decide which flags to raise using value of ans
-        if ans._isinfinity():
-            context._raise_error(Overflow,
-                                 'Infinite result from next_toward',
-                                 ans._sign)
-            context._raise_error(Inexact)
-            context._raise_error(Rounded)
-        elif ans.adjusted() < context.Emin:
-            context._raise_error(Underflow)
-            context._raise_error(Subnormal)
-            context._raise_error(Inexact)
-            context._raise_error(Rounded)
-            # if precision == 1 then we don't raise Clamped for a
-            # result 0E-Etiny.
-            if not ans:
-                context._raise_error(Clamped)
-
-        return ans
-
-    def number_class(self, context=None):
-        """Returns an indication of the class of self.
-
-        The class is one of the following strings:
-          sNaN
-          NaN
-          -Infinity
-          -Normal
-          -Subnormal
-          -Zero
-          +Zero
-          +Subnormal
-          +Normal
-          +Infinity
-        """
-        if self.is_snan():
-            return "sNaN"
-        if self.is_qnan():
-            return "NaN"
-        inf = self._isinfinity()
-        if inf == 1:
-            return "+Infinity"
-        if inf == -1:
-            return "-Infinity"
-        if self.is_zero():
-            if self._sign:
-                return "-Zero"
-            else:
-                return "+Zero"
-        if context is None:
-            context = getcontext()
-        if self.is_subnormal(context=context):
-            if self._sign:
-                return "-Subnormal"
-            else:
-                return "+Subnormal"
-        # just a normal, regular, boring number, :)
-        if self._sign:
-            return "-Normal"
-        else:
-            return "+Normal"
-
-    def radix(self):
-        """Just returns 10, as this is Decimal, :)"""
-        return Decimal(10)
-
-    def rotate(self, other, context=None):
-        """Returns a rotated copy of self, value-of-other times."""
-        if context is None:
-            context = getcontext()
-
-        other = _convert_other(other, raiseit=True)
-
-        ans = self._check_nans(other, context)
-        if ans:
-            return ans
-
-        if other._exp != 0:
-            return context._raise_error(InvalidOperation)
-        if not (-context.prec <= int(other) <= context.prec):
-            return context._raise_error(InvalidOperation)
-
-        if self._isinfinity():
-            return Decimal(self)
-
-        # get values, pad if necessary
-        torot = int(other)
-        rotdig = self._int
-        topad = context.prec - len(rotdig)
-        if topad > 0:
-            rotdig = '0'*topad + rotdig
-        elif topad < 0:
-            rotdig = rotdig[-topad:]
-
-        # let's rotate!
-        rotated = rotdig[torot:] + rotdig[:torot]
-        return _dec_from_triple(self._sign,
-                                rotated.lstrip('0') or '0', self._exp)
-
-    def scaleb(self, other, context=None):
-        """Returns self operand after adding the second value to its exp."""
-        if context is None:
-            context = getcontext()
-
-        other = _convert_other(other, raiseit=True)
-
-        ans = self._check_nans(other, context)
-        if ans:
-            return ans
-
-        if other._exp != 0:
-            return context._raise_error(InvalidOperation)
-        liminf = -2 * (context.Emax + context.prec)
-        limsup =  2 * (context.Emax + context.prec)
-        if not (liminf <= int(other) <= limsup):
-            return context._raise_error(InvalidOperation)
-
-        if self._isinfinity():
-            return Decimal(self)
-
-        d = _dec_from_triple(self._sign, self._int, self._exp + int(other))
-        d = d._fix(context)
-        return d
-
-    def shift(self, other, context=None):
-        """Returns a shifted copy of self, value-of-other times."""
-        if context is None:
-            context = getcontext()
-
-        other = _convert_other(other, raiseit=True)
-
-        ans = self._check_nans(other, context)
-        if ans:
-            return ans
-
-        if other._exp != 0:
-            return context._raise_error(InvalidOperation)
-        if not (-context.prec <= int(other) <= context.prec):
-            return context._raise_error(InvalidOperation)
-
-        if self._isinfinity():
-            return Decimal(self)
-
-        # get values, pad if necessary
-        torot = int(other)
-        rotdig = self._int
-        topad = context.prec - len(rotdig)
-        if topad > 0:
-            rotdig = '0'*topad + rotdig
-        elif topad < 0:
-            rotdig = rotdig[-topad:]
-
-        # let's shift!
-        if torot < 0:
-            shifted = rotdig[:torot]
-        else:
-            shifted = rotdig + '0'*torot
-            shifted = shifted[-context.prec:]
-
-        return _dec_from_triple(self._sign,
-                                    shifted.lstrip('0') or '0', self._exp)
-
-    # Support for pickling, copy, and deepcopy
-    def __reduce__(self):
-        return (self.__class__, (str(self),))
-
-    def __copy__(self):
-        if type(self) is Decimal:
-            return self     # I'm immutable; therefore I am my own clone
-        return self.__class__(str(self))
-
-    def __deepcopy__(self, memo):
-        if type(self) is Decimal:
-            return self     # My components are also immutable
-        return self.__class__(str(self))
-
-    # PEP 3101 support.  the _localeconv keyword argument should be
-    # considered private: it's provided for ease of testing only.
-    def __format__(self, specifier, context=None, _localeconv=None):
-        """Format a Decimal instance according to the given specifier.
-
-        The specifier should be a standard format specifier, with the
-        form described in PEP 3101.  Formatting types 'e', 'E', 'f',
-        'F', 'g', 'G', 'n' and '%' are supported.  If the formatting
-        type is omitted it defaults to 'g' or 'G', depending on the
-        value of context.capitals.
-        """
-
-        # Note: PEP 3101 says that if the type is not present then
-        # there should be at least one digit after the decimal point.
-        # We take the liberty of ignoring this requirement for
-        # Decimal---it's presumably there to make sure that
-        # format(float, '') behaves similarly to str(float).
-        if context is None:
-            context = getcontext()
-
-        spec = _parse_format_specifier(specifier, _localeconv=_localeconv)
-
-        # special values don't care about the type or precision
-        if self._is_special:
-            sign = _format_sign(self._sign, spec)
-            body = str(self.copy_abs())
-            return _format_align(sign, body, spec)
-
-        # a type of None defaults to 'g' or 'G', depending on context
-        if spec['type'] is None:
-            spec['type'] = ['g', 'G'][context.capitals]
-
-        # if type is '%', adjust exponent of self accordingly
-        if spec['type'] == '%':
-            self = _dec_from_triple(self._sign, self._int, self._exp+2)
-
-        # round if necessary, taking rounding mode from the context
-        rounding = context.rounding
-        precision = spec['precision']
-        if precision is not None:
-            if spec['type'] in 'eE':
-                self = self._round(precision+1, rounding)
-            elif spec['type'] in 'fF%':
-                self = self._rescale(-precision, rounding)
-            elif spec['type'] in 'gG' and len(self._int) > precision:
-                self = self._round(precision, rounding)
-        # special case: zeros with a positive exponent can't be
-        # represented in fixed point; rescale them to 0e0.
-        if not self and self._exp > 0 and spec['type'] in 'fF%':
-            self = self._rescale(0, rounding)
-
-        # figure out placement of the decimal point
-        leftdigits = self._exp + len(self._int)
-        if spec['type'] in 'eE':
-            if not self and precision is not None:
-                dotplace = 1 - precision
-            else:
-                dotplace = 1
-        elif spec['type'] in 'fF%':
-            dotplace = leftdigits
-        elif spec['type'] in 'gG':
-            if self._exp <= 0 and leftdigits > -6:
-                dotplace = leftdigits
-            else:
-                dotplace = 1
-
-        # find digits before and after decimal point, and get exponent
-        if dotplace < 0:
-            intpart = '0'
-            fracpart = '0'*(-dotplace) + self._int
-        elif dotplace > len(self._int):
-            intpart = self._int + '0'*(dotplace-len(self._int))
-            fracpart = ''
-        else:
-            intpart = self._int[:dotplace] or '0'
-            fracpart = self._int[dotplace:]
-        exp = leftdigits-dotplace
-
-        # done with the decimal-specific stuff;  hand over the rest
-        # of the formatting to the _format_number function
-        return _format_number(self._sign, intpart, fracpart, exp, spec)
-
-def _dec_from_triple(sign, coefficient, exponent, special=False):
-    """Create a decimal instance directly, without any validation,
-    normalization (e.g. removal of leading zeros) or argument
-    conversion.
-
-    This function is for *internal use only*.
-    """
-
-    self = object.__new__(Decimal)
-    self._sign = sign
-    self._int = coefficient
-    self._exp = exponent
-    self._is_special = special
-
-    return self
-
-# Register Decimal as a kind of Number (an abstract base class).
-# However, do not register it as Real (because Decimals are not
-# interoperable with floats).
-_numbers.Number.register(Decimal)
-
-
-##### Context class #######################################################
-
-class _ContextManager(object):
-    """Context manager class to support localcontext().
-
-      Sets a copy of the supplied context in __enter__() and restores
-      the previous decimal context in __exit__()
-    """
-    def __init__(self, new_context):
-        self.new_context = new_context.copy()
-    def __enter__(self):
-        self.saved_context = getcontext()
-        setcontext(self.new_context)
-        return self.new_context
-    def __exit__(self, t, v, tb):
-        setcontext(self.saved_context)
-
-class Context(object):
-    """Contains the context for a Decimal instance.
-
-    Contains:
-    prec - precision (for use in rounding, division, square roots..)
-    rounding - rounding type (how you round)
-    traps - If traps[exception] = 1, then the exception is
-                    raised when it is caused.  Otherwise, a value is
-                    substituted in.
-    flags  - When an exception is caused, flags[exception] is set.
-             (Whether or not the trap_enabler is set)
-             Should be reset by user of Decimal instance.
-    Emin -   Minimum exponent
-    Emax -   Maximum exponent
-    capitals -      If 1, 1*10^1 is printed as 1E+1.
-                    If 0, printed as 1e1
-    _clamp - If 1, change exponents if too high (Default 0)
-    """
-
-    def __init__(self, prec=None, rounding=None,
-                 traps=None, flags=None,
-                 Emin=None, Emax=None,
-                 capitals=None, _clamp=0,
-                 _ignored_flags=None):
-        # Set defaults; for everything except flags and _ignored_flags,
-        # inherit from DefaultContext.
-        try:
-            dc = DefaultContext
-        except NameError:
-            pass
-
-        self.prec = prec if prec is not None else dc.prec
-        self.rounding = rounding if rounding is not None else dc.rounding
-        self.Emin = Emin if Emin is not None else dc.Emin
-        self.Emax = Emax if Emax is not None else dc.Emax
-        self.capitals = capitals if capitals is not None else dc.capitals
-        self._clamp = _clamp if _clamp is not None else dc._clamp
-
-        if _ignored_flags is None:
-            self._ignored_flags = []
-        else:
-            self._ignored_flags = _ignored_flags
-
-        if traps is None:
-            self.traps = dc.traps.copy()
-        elif not isinstance(traps, dict):
-            self.traps = dict((s, int(s in traps)) for s in _signals)
-        else:
-            self.traps = traps
-
-        if flags is None:
-            self.flags = dict.fromkeys(_signals, 0)
-        elif not isinstance(flags, dict):
-            self.flags = dict((s, int(s in flags)) for s in _signals)
-        else:
-            self.flags = flags
-
-    def __repr__(self):
-        """Show the current context."""
-        s = []
-        s.append('Context(prec=%(prec)d, rounding=%(rounding)s, '
-                 'Emin=%(Emin)d, Emax=%(Emax)d, capitals=%(capitals)d'
-                 % vars(self))
-        names = [f.__name__ for f, v in self.flags.items() if v]
-        s.append('flags=[' + ', '.join(names) + ']')
-        names = [t.__name__ for t, v in self.traps.items() if v]
-        s.append('traps=[' + ', '.join(names) + ']')
-        return ', '.join(s) + ')'
-
-    def clear_flags(self):
-        """Reset all flags to zero"""
-        for flag in self.flags:
-            self.flags[flag] = 0
-
-    def _shallow_copy(self):
-        """Returns a shallow copy from self."""
-        nc = Context(self.prec, self.rounding, self.traps,
-                     self.flags, self.Emin, self.Emax,
-                     self.capitals, self._clamp, self._ignored_flags)
-        return nc
-
-    def copy(self):
-        """Returns a deep copy from self."""
-        nc = Context(self.prec, self.rounding, self.traps.copy(),
-                     self.flags.copy(), self.Emin, self.Emax,
-                     self.capitals, self._clamp, self._ignored_flags)
-        return nc
-    __copy__ = copy
-
-    def _raise_error(self, condition, explanation = None, *args):
-        """Handles an error
-
-        If the flag is in _ignored_flags, returns the default response.
-        Otherwise, it sets the flag, then, if the corresponding
-        trap_enabler is set, it reraises the exception.  Otherwise, it returns
-        the default value after setting the flag.
-        """
-        error = _condition_map.get(condition, condition)
-        if error in self._ignored_flags:
-            # Don't touch the flag
-            return error().handle(self, *args)
-
-        self.flags[error] = 1
-        if not self.traps[error]:
-            # The errors define how to handle themselves.
-            return condition().handle(self, *args)
-
-        # Errors should only be risked on copies of the context
-        # self._ignored_flags = []
-        raise error(explanation)
-
-    def _ignore_all_flags(self):
-        """Ignore all flags, if they are raised"""
-        return self._ignore_flags(*_signals)
-
-    def _ignore_flags(self, *flags):
-        """Ignore the flags, if they are raised"""
-        # Do not mutate-- This way, copies of a context leave the original
-        # alone.
-        self._ignored_flags = (self._ignored_flags + list(flags))
-        return list(flags)
-
-    def _regard_flags(self, *flags):
-        """Stop ignoring the flags, if they are raised"""
-        if flags and isinstance(flags[0], (tuple,list)):
-            flags = flags[0]
-        for flag in flags:
-            self._ignored_flags.remove(flag)
-
-    # We inherit object.__hash__, so we must deny this explicitly
-    __hash__ = None
-
-    def Etiny(self):
-        """Returns Etiny (= Emin - prec + 1)"""
-        return int(self.Emin - self.prec + 1)
-
-    def Etop(self):
-        """Returns maximum exponent (= Emax - prec + 1)"""
-        return int(self.Emax - self.prec + 1)
-
-    def _set_rounding(self, type):
-        """Sets the rounding type.
-
-        Sets the rounding type, and returns the current (previous)
-        rounding type.  Often used like:
-
-        context = context.copy()
-        # so you don't change the calling context
-        # if an error occurs in the middle.
-        rounding = context._set_rounding(ROUND_UP)
-        val = self.__sub__(other, context=context)
-        context._set_rounding(rounding)
-
-        This will make it round up for that operation.
-        """
-        rounding = self.rounding
-        self.rounding= type
-        return rounding
-
-    def create_decimal(self, num='0'):
-        """Creates a new Decimal instance but using self as context.
-
-        This method implements the to-number operation of the
-        IBM Decimal specification."""
-
-        if isinstance(num, basestring) and num != num.strip():
-            return self._raise_error(ConversionSyntax,
-                                     "no trailing or leading whitespace is "
-                                     "permitted.")
-
-        d = Decimal(num, context=self)
-        if d._isnan() and len(d._int) > self.prec - self._clamp:
-            return self._raise_error(ConversionSyntax,
-                                     "diagnostic info too long in NaN")
-        return d._fix(self)
-
-    def create_decimal_from_float(self, f):
-        """Creates a new Decimal instance from a float but rounding using self
-        as the context.
-
-        >>> context = Context(prec=5, rounding=ROUND_DOWN)
-        >>> context.create_decimal_from_float(3.1415926535897932)
-        Decimal('3.1415')
-        >>> context = Context(prec=5, traps=[Inexact])
-        >>> context.create_decimal_from_float(3.1415926535897932)
-        Traceback (most recent call last):
-            ...
-        Inexact: None
-
-        """
-        d = Decimal.from_float(f)       # An exact conversion
-        return d._fix(self)             # Apply the context rounding
-
-    # Methods
-    def abs(self, a):
-        """Returns the absolute value of the operand.
-
-        If the operand is negative, the result is the same as using the minus
-        operation on the operand.  Otherwise, the result is the same as using
-        the plus operation on the operand.
-
-        >>> ExtendedContext.abs(Decimal('2.1'))
-        Decimal('2.1')
-        >>> ExtendedContext.abs(Decimal('-100'))
-        Decimal('100')
-        >>> ExtendedContext.abs(Decimal('101.5'))
-        Decimal('101.5')
-        >>> ExtendedContext.abs(Decimal('-101.5'))
-        Decimal('101.5')
-        >>> ExtendedContext.abs(-1)
-        Decimal('1')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.__abs__(context=self)
-
-    def add(self, a, b):
-        """Return the sum of the two operands.
-
-        >>> ExtendedContext.add(Decimal('12'), Decimal('7.00'))
-        Decimal('19.00')
-        >>> ExtendedContext.add(Decimal('1E+2'), Decimal('1.01E+4'))
-        Decimal('1.02E+4')
-        >>> ExtendedContext.add(1, Decimal(2))
-        Decimal('3')
-        >>> ExtendedContext.add(Decimal(8), 5)
-        Decimal('13')
-        >>> ExtendedContext.add(5, 5)
-        Decimal('10')
-        """
-        a = _convert_other(a, raiseit=True)
-        r = a.__add__(b, context=self)
-        if r is NotImplemented:
-            raise TypeError("Unable to convert %s to Decimal" % b)
-        else:
-            return r
-
-    def _apply(self, a):
-        return str(a._fix(self))
-
-    def canonical(self, a):
-        """Returns the same Decimal object.
-
-        As we do not have different encodings for the same number, the
-        received object already is in its canonical form.
-
-        >>> ExtendedContext.canonical(Decimal('2.50'))
-        Decimal('2.50')
-        """
-        return a.canonical(context=self)
-
-    def compare(self, a, b):
-        """Compares values numerically.
-
-        If the signs of the operands differ, a value representing each operand
-        ('-1' if the operand is less than zero, '0' if the operand is zero or
-        negative zero, or '1' if the operand is greater than zero) is used in
-        place of that operand for the comparison instead of the actual
-        operand.
-
-        The comparison is then effected by subtracting the second operand from
-        the first and then returning a value according to the result of the
-        subtraction: '-1' if the result is less than zero, '0' if the result is
-        zero or negative zero, or '1' if the result is greater than zero.
-
-        >>> ExtendedContext.compare(Decimal('2.1'), Decimal('3'))
-        Decimal('-1')
-        >>> ExtendedContext.compare(Decimal('2.1'), Decimal('2.1'))
-        Decimal('0')
-        >>> ExtendedContext.compare(Decimal('2.1'), Decimal('2.10'))
-        Decimal('0')
-        >>> ExtendedContext.compare(Decimal('3'), Decimal('2.1'))
-        Decimal('1')
-        >>> ExtendedContext.compare(Decimal('2.1'), Decimal('-3'))
-        Decimal('1')
-        >>> ExtendedContext.compare(Decimal('-3'), Decimal('2.1'))
-        Decimal('-1')
-        >>> ExtendedContext.compare(1, 2)
-        Decimal('-1')
-        >>> ExtendedContext.compare(Decimal(1), 2)
-        Decimal('-1')
-        >>> ExtendedContext.compare(1, Decimal(2))
-        Decimal('-1')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.compare(b, context=self)
-
-    def compare_signal(self, a, b):
-        """Compares the values of the two operands numerically.
-
-        It's pretty much like compare(), but all NaNs signal, with signaling
-        NaNs taking precedence over quiet NaNs.
-
-        >>> c = ExtendedContext
-        >>> c.compare_signal(Decimal('2.1'), Decimal('3'))
-        Decimal('-1')
-        >>> c.compare_signal(Decimal('2.1'), Decimal('2.1'))
-        Decimal('0')
-        >>> c.flags[InvalidOperation] = 0
-        >>> print c.flags[InvalidOperation]
-        0
-        >>> c.compare_signal(Decimal('NaN'), Decimal('2.1'))
-        Decimal('NaN')
-        >>> print c.flags[InvalidOperation]
-        1
-        >>> c.flags[InvalidOperation] = 0
-        >>> print c.flags[InvalidOperation]
-        0
-        >>> c.compare_signal(Decimal('sNaN'), Decimal('2.1'))
-        Decimal('NaN')
-        >>> print c.flags[InvalidOperation]
-        1
-        >>> c.compare_signal(-1, 2)
-        Decimal('-1')
-        >>> c.compare_signal(Decimal(-1), 2)
-        Decimal('-1')
-        >>> c.compare_signal(-1, Decimal(2))
-        Decimal('-1')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.compare_signal(b, context=self)
-
-    def compare_total(self, a, b):
-        """Compares two operands using their abstract representation.
-
-        This is not like the standard compare, which use their numerical
-        value. Note that a total ordering is defined for all possible abstract
-        representations.
-
-        >>> ExtendedContext.compare_total(Decimal('12.73'), Decimal('127.9'))
-        Decimal('-1')
-        >>> ExtendedContext.compare_total(Decimal('-127'),  Decimal('12'))
-        Decimal('-1')
-        >>> ExtendedContext.compare_total(Decimal('12.30'), Decimal('12.3'))
-        Decimal('-1')
-        >>> ExtendedContext.compare_total(Decimal('12.30'), Decimal('12.30'))
-        Decimal('0')
-        >>> ExtendedContext.compare_total(Decimal('12.3'),  Decimal('12.300'))
-        Decimal('1')
-        >>> ExtendedContext.compare_total(Decimal('12.3'),  Decimal('NaN'))
-        Decimal('-1')
-        >>> ExtendedContext.compare_total(1, 2)
-        Decimal('-1')
-        >>> ExtendedContext.compare_total(Decimal(1), 2)
-        Decimal('-1')
-        >>> ExtendedContext.compare_total(1, Decimal(2))
-        Decimal('-1')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.compare_total(b)
-
-    def compare_total_mag(self, a, b):
-        """Compares two operands using their abstract representation ignoring sign.
-
-        Like compare_total, but with operand's sign ignored and assumed to be 0.
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.compare_total_mag(b)
-
-    def copy_abs(self, a):
-        """Returns a copy of the operand with the sign set to 0.
-
-        >>> ExtendedContext.copy_abs(Decimal('2.1'))
-        Decimal('2.1')
-        >>> ExtendedContext.copy_abs(Decimal('-100'))
-        Decimal('100')
-        >>> ExtendedContext.copy_abs(-1)
-        Decimal('1')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.copy_abs()
-
-    def copy_decimal(self, a):
-        """Returns a copy of the decimal object.
-
-        >>> ExtendedContext.copy_decimal(Decimal('2.1'))
-        Decimal('2.1')
-        >>> ExtendedContext.copy_decimal(Decimal('-1.00'))
-        Decimal('-1.00')
-        >>> ExtendedContext.copy_decimal(1)
-        Decimal('1')
-        """
-        a = _convert_other(a, raiseit=True)
-        return Decimal(a)
-
-    def copy_negate(self, a):
-        """Returns a copy of the operand with the sign inverted.
-
-        >>> ExtendedContext.copy_negate(Decimal('101.5'))
-        Decimal('-101.5')
-        >>> ExtendedContext.copy_negate(Decimal('-101.5'))
-        Decimal('101.5')
-        >>> ExtendedContext.copy_negate(1)
-        Decimal('-1')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.copy_negate()
-
-    def copy_sign(self, a, b):
-        """Copies the second operand's sign to the first one.
-
-        In detail, it returns a copy of the first operand with the sign
-        equal to the sign of the second operand.
-
-        >>> ExtendedContext.copy_sign(Decimal( '1.50'), Decimal('7.33'))
-        Decimal('1.50')
-        >>> ExtendedContext.copy_sign(Decimal('-1.50'), Decimal('7.33'))
-        Decimal('1.50')
-        >>> ExtendedContext.copy_sign(Decimal( '1.50'), Decimal('-7.33'))
-        Decimal('-1.50')
-        >>> ExtendedContext.copy_sign(Decimal('-1.50'), Decimal('-7.33'))
-        Decimal('-1.50')
-        >>> ExtendedContext.copy_sign(1, -2)
-        Decimal('-1')
-        >>> ExtendedContext.copy_sign(Decimal(1), -2)
-        Decimal('-1')
-        >>> ExtendedContext.copy_sign(1, Decimal(-2))
-        Decimal('-1')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.copy_sign(b)
-
-    def divide(self, a, b):
-        """Decimal division in a specified context.
-
-        >>> ExtendedContext.divide(Decimal('1'), Decimal('3'))
-        Decimal('0.333333333')
-        >>> ExtendedContext.divide(Decimal('2'), Decimal('3'))
-        Decimal('0.666666667')
-        >>> ExtendedContext.divide(Decimal('5'), Decimal('2'))
-        Decimal('2.5')
-        >>> ExtendedContext.divide(Decimal('1'), Decimal('10'))
-        Decimal('0.1')
-        >>> ExtendedContext.divide(Decimal('12'), Decimal('12'))
-        Decimal('1')
-        >>> ExtendedContext.divide(Decimal('8.00'), Decimal('2'))
-        Decimal('4.00')
-        >>> ExtendedContext.divide(Decimal('2.400'), Decimal('2.0'))
-        Decimal('1.20')
-        >>> ExtendedContext.divide(Decimal('1000'), Decimal('100'))
-        Decimal('10')
-        >>> ExtendedContext.divide(Decimal('1000'), Decimal('1'))
-        Decimal('1000')
-        >>> ExtendedContext.divide(Decimal('2.40E+6'), Decimal('2'))
-        Decimal('1.20E+6')
-        >>> ExtendedContext.divide(5, 5)
-        Decimal('1')
-        >>> ExtendedContext.divide(Decimal(5), 5)
-        Decimal('1')
-        >>> ExtendedContext.divide(5, Decimal(5))
-        Decimal('1')
-        """
-        a = _convert_other(a, raiseit=True)
-        r = a.__div__(b, context=self)
-        if r is NotImplemented:
-            raise TypeError("Unable to convert %s to Decimal" % b)
-        else:
-            return r
-
-    def divide_int(self, a, b):
-        """Divides two numbers and returns the integer part of the result.
-
-        >>> ExtendedContext.divide_int(Decimal('2'), Decimal('3'))
-        Decimal('0')
-        >>> ExtendedContext.divide_int(Decimal('10'), Decimal('3'))
-        Decimal('3')
-        >>> ExtendedContext.divide_int(Decimal('1'), Decimal('0.3'))
-        Decimal('3')
-        >>> ExtendedContext.divide_int(10, 3)
-        Decimal('3')
-        >>> ExtendedContext.divide_int(Decimal(10), 3)
-        Decimal('3')
-        >>> ExtendedContext.divide_int(10, Decimal(3))
-        Decimal('3')
-        """
-        a = _convert_other(a, raiseit=True)
-        r = a.__floordiv__(b, context=self)
-        if r is NotImplemented:
-            raise TypeError("Unable to convert %s to Decimal" % b)
-        else:
-            return r
-
-    def divmod(self, a, b):
-        """Return (a // b, a % b).
-
-        >>> ExtendedContext.divmod(Decimal(8), Decimal(3))
-        (Decimal('2'), Decimal('2'))
-        >>> ExtendedContext.divmod(Decimal(8), Decimal(4))
-        (Decimal('2'), Decimal('0'))
-        >>> ExtendedContext.divmod(8, 4)
-        (Decimal('2'), Decimal('0'))
-        >>> ExtendedContext.divmod(Decimal(8), 4)
-        (Decimal('2'), Decimal('0'))
-        >>> ExtendedContext.divmod(8, Decimal(4))
-        (Decimal('2'), Decimal('0'))
-        """
-        a = _convert_other(a, raiseit=True)
-        r = a.__divmod__(b, context=self)
-        if r is NotImplemented:
-            raise TypeError("Unable to convert %s to Decimal" % b)
-        else:
-            return r
-
-    def exp(self, a):
-        """Returns e ** a.
-
-        >>> c = ExtendedContext.copy()
-        >>> c.Emin = -999
-        >>> c.Emax = 999
-        >>> c.exp(Decimal('-Infinity'))
-        Decimal('0')
-        >>> c.exp(Decimal('-1'))
-        Decimal('0.367879441')
-        >>> c.exp(Decimal('0'))
-        Decimal('1')
-        >>> c.exp(Decimal('1'))
-        Decimal('2.71828183')
-        >>> c.exp(Decimal('0.693147181'))
-        Decimal('2.00000000')
-        >>> c.exp(Decimal('+Infinity'))
-        Decimal('Infinity')
-        >>> c.exp(10)
-        Decimal('22026.4658')
-        """
-        a =_convert_other(a, raiseit=True)
-        return a.exp(context=self)
-
-    def fma(self, a, b, c):
-        """Returns a multiplied by b, plus c.
-
-        The first two operands are multiplied together, using multiply,
-        the third operand is then added to the result of that
-        multiplication, using add, all with only one final rounding.
-
-        >>> ExtendedContext.fma(Decimal('3'), Decimal('5'), Decimal('7'))
-        Decimal('22')
-        >>> ExtendedContext.fma(Decimal('3'), Decimal('-5'), Decimal('7'))
-        Decimal('-8')
-        >>> ExtendedContext.fma(Decimal('888565290'), Decimal('1557.96930'), Decimal('-86087.7578'))
-        Decimal('1.38435736E+12')
-        >>> ExtendedContext.fma(1, 3, 4)
-        Decimal('7')
-        >>> ExtendedContext.fma(1, Decimal(3), 4)
-        Decimal('7')
-        >>> ExtendedContext.fma(1, 3, Decimal(4))
-        Decimal('7')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.fma(b, c, context=self)
-
-    def is_canonical(self, a):
-        """Return True if the operand is canonical; otherwise return False.
-
-        Currently, the encoding of a Decimal instance is always
-        canonical, so this method returns True for any Decimal.
-
-        >>> ExtendedContext.is_canonical(Decimal('2.50'))
-        True
-        """
-        return a.is_canonical()
-
-    def is_finite(self, a):
-        """Return True if the operand is finite; otherwise return False.
-
-        A Decimal instance is considered finite if it is neither
-        infinite nor a NaN.
-
-        >>> ExtendedContext.is_finite(Decimal('2.50'))
-        True
-        >>> ExtendedContext.is_finite(Decimal('-0.3'))
-        True
-        >>> ExtendedContext.is_finite(Decimal('0'))
-        True
-        >>> ExtendedContext.is_finite(Decimal('Inf'))
-        False
-        >>> ExtendedContext.is_finite(Decimal('NaN'))
-        False
-        >>> ExtendedContext.is_finite(1)
-        True
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.is_finite()
-
-    def is_infinite(self, a):
-        """Return True if the operand is infinite; otherwise return False.
-
-        >>> ExtendedContext.is_infinite(Decimal('2.50'))
-        False
-        >>> ExtendedContext.is_infinite(Decimal('-Inf'))
-        True
-        >>> ExtendedContext.is_infinite(Decimal('NaN'))
-        False
-        >>> ExtendedContext.is_infinite(1)
-        False
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.is_infinite()
-
-    def is_nan(self, a):
-        """Return True if the operand is a qNaN or sNaN;
-        otherwise return False.
-
-        >>> ExtendedContext.is_nan(Decimal('2.50'))
-        False
-        >>> ExtendedContext.is_nan(Decimal('NaN'))
-        True
-        >>> ExtendedContext.is_nan(Decimal('-sNaN'))
-        True
-        >>> ExtendedContext.is_nan(1)
-        False
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.is_nan()
-
-    def is_normal(self, a):
-        """Return True if the operand is a normal number;
-        otherwise return False.
-
-        >>> c = ExtendedContext.copy()
-        >>> c.Emin = -999
-        >>> c.Emax = 999
-        >>> c.is_normal(Decimal('2.50'))
-        True
-        >>> c.is_normal(Decimal('0.1E-999'))
-        False
-        >>> c.is_normal(Decimal('0.00'))
-        False
-        >>> c.is_normal(Decimal('-Inf'))
-        False
-        >>> c.is_normal(Decimal('NaN'))
-        False
-        >>> c.is_normal(1)
-        True
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.is_normal(context=self)
-
-    def is_qnan(self, a):
-        """Return True if the operand is a quiet NaN; otherwise return False.
-
-        >>> ExtendedContext.is_qnan(Decimal('2.50'))
-        False
-        >>> ExtendedContext.is_qnan(Decimal('NaN'))
-        True
-        >>> ExtendedContext.is_qnan(Decimal('sNaN'))
-        False
-        >>> ExtendedContext.is_qnan(1)
-        False
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.is_qnan()
-
-    def is_signed(self, a):
-        """Return True if the operand is negative; otherwise return False.
-
-        >>> ExtendedContext.is_signed(Decimal('2.50'))
-        False
-        >>> ExtendedContext.is_signed(Decimal('-12'))
-        True
-        >>> ExtendedContext.is_signed(Decimal('-0'))
-        True
-        >>> ExtendedContext.is_signed(8)
-        False
-        >>> ExtendedContext.is_signed(-8)
-        True
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.is_signed()
-
-    def is_snan(self, a):
-        """Return True if the operand is a signaling NaN;
-        otherwise return False.
-
-        >>> ExtendedContext.is_snan(Decimal('2.50'))
-        False
-        >>> ExtendedContext.is_snan(Decimal('NaN'))
-        False
-        >>> ExtendedContext.is_snan(Decimal('sNaN'))
-        True
-        >>> ExtendedContext.is_snan(1)
-        False
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.is_snan()
-
-    def is_subnormal(self, a):
-        """Return True if the operand is subnormal; otherwise return False.
-
-        >>> c = ExtendedContext.copy()
-        >>> c.Emin = -999
-        >>> c.Emax = 999
-        >>> c.is_subnormal(Decimal('2.50'))
-        False
-        >>> c.is_subnormal(Decimal('0.1E-999'))
-        True
-        >>> c.is_subnormal(Decimal('0.00'))
-        False
-        >>> c.is_subnormal(Decimal('-Inf'))
-        False
-        >>> c.is_subnormal(Decimal('NaN'))
-        False
-        >>> c.is_subnormal(1)
-        False
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.is_subnormal(context=self)
-
-    def is_zero(self, a):
-        """Return True if the operand is a zero; otherwise return False.
-
-        >>> ExtendedContext.is_zero(Decimal('0'))
-        True
-        >>> ExtendedContext.is_zero(Decimal('2.50'))
-        False
-        >>> ExtendedContext.is_zero(Decimal('-0E+2'))
-        True
-        >>> ExtendedContext.is_zero(1)
-        False
-        >>> ExtendedContext.is_zero(0)
-        True
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.is_zero()
-
-    def ln(self, a):
-        """Returns the natural (base e) logarithm of the operand.
-
-        >>> c = ExtendedContext.copy()
-        >>> c.Emin = -999
-        >>> c.Emax = 999
-        >>> c.ln(Decimal('0'))
-        Decimal('-Infinity')
-        >>> c.ln(Decimal('1.000'))
-        Decimal('0')
-        >>> c.ln(Decimal('2.71828183'))
-        Decimal('1.00000000')
-        >>> c.ln(Decimal('10'))
-        Decimal('2.30258509')
-        >>> c.ln(Decimal('+Infinity'))
-        Decimal('Infinity')
-        >>> c.ln(1)
-        Decimal('0')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.ln(context=self)
-
-    def log10(self, a):
-        """Returns the base 10 logarithm of the operand.
-
-        >>> c = ExtendedContext.copy()
-        >>> c.Emin = -999
-        >>> c.Emax = 999
-        >>> c.log10(Decimal('0'))
-        Decimal('-Infinity')
-        >>> c.log10(Decimal('0.001'))
-        Decimal('-3')
-        >>> c.log10(Decimal('1.000'))
-        Decimal('0')
-        >>> c.log10(Decimal('2'))
-        Decimal('0.301029996')
-        >>> c.log10(Decimal('10'))
-        Decimal('1')
-        >>> c.log10(Decimal('70'))
-        Decimal('1.84509804')
-        >>> c.log10(Decimal('+Infinity'))
-        Decimal('Infinity')
-        >>> c.log10(0)
-        Decimal('-Infinity')
-        >>> c.log10(1)
-        Decimal('0')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.log10(context=self)
-
-    def logb(self, a):
-        """ Returns the exponent of the magnitude of the operand's MSD.
-
-        The result is the integer which is the exponent of the magnitude
-        of the most significant digit of the operand (as though the
-        operand were truncated to a single digit while maintaining the
-        value of that digit and without limiting the resulting exponent).
-
-        >>> ExtendedContext.logb(Decimal('250'))
-        Decimal('2')
-        >>> ExtendedContext.logb(Decimal('2.50'))
-        Decimal('0')
-        >>> ExtendedContext.logb(Decimal('0.03'))
-        Decimal('-2')
-        >>> ExtendedContext.logb(Decimal('0'))
-        Decimal('-Infinity')
-        >>> ExtendedContext.logb(1)
-        Decimal('0')
-        >>> ExtendedContext.logb(10)
-        Decimal('1')
-        >>> ExtendedContext.logb(100)
-        Decimal('2')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.logb(context=self)
-
-    def logical_and(self, a, b):
-        """Applies the logical operation 'and' between each operand's digits.
-
-        The operands must be both logical numbers.
-
-        >>> ExtendedContext.logical_and(Decimal('0'), Decimal('0'))
-        Decimal('0')
-        >>> ExtendedContext.logical_and(Decimal('0'), Decimal('1'))
-        Decimal('0')
-        >>> ExtendedContext.logical_and(Decimal('1'), Decimal('0'))
-        Decimal('0')
-        >>> ExtendedContext.logical_and(Decimal('1'), Decimal('1'))
-        Decimal('1')
-        >>> ExtendedContext.logical_and(Decimal('1100'), Decimal('1010'))
-        Decimal('1000')
-        >>> ExtendedContext.logical_and(Decimal('1111'), Decimal('10'))
-        Decimal('10')
-        >>> ExtendedContext.logical_and(110, 1101)
-        Decimal('100')
-        >>> ExtendedContext.logical_and(Decimal(110), 1101)
-        Decimal('100')
-        >>> ExtendedContext.logical_and(110, Decimal(1101))
-        Decimal('100')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.logical_and(b, context=self)
-
-    def logical_invert(self, a):
-        """Invert all the digits in the operand.
-
-        The operand must be a logical number.
-
-        >>> ExtendedContext.logical_invert(Decimal('0'))
-        Decimal('111111111')
-        >>> ExtendedContext.logical_invert(Decimal('1'))
-        Decimal('111111110')
-        >>> ExtendedContext.logical_invert(Decimal('111111111'))
-        Decimal('0')
-        >>> ExtendedContext.logical_invert(Decimal('101010101'))
-        Decimal('10101010')
-        >>> ExtendedContext.logical_invert(1101)
-        Decimal('111110010')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.logical_invert(context=self)
-
-    def logical_or(self, a, b):
-        """Applies the logical operation 'or' between each operand's digits.
-
-        The operands must be both logical numbers.
-
-        >>> ExtendedContext.logical_or(Decimal('0'), Decimal('0'))
-        Decimal('0')
-        >>> ExtendedContext.logical_or(Decimal('0'), Decimal('1'))
-        Decimal('1')
-        >>> ExtendedContext.logical_or(Decimal('1'), Decimal('0'))
-        Decimal('1')
-        >>> ExtendedContext.logical_or(Decimal('1'), Decimal('1'))
-        Decimal('1')
-        >>> ExtendedContext.logical_or(Decimal('1100'), Decimal('1010'))
-        Decimal('1110')
-        >>> ExtendedContext.logical_or(Decimal('1110'), Decimal('10'))
-        Decimal('1110')
-        >>> ExtendedContext.logical_or(110, 1101)
-        Decimal('1111')
-        >>> ExtendedContext.logical_or(Decimal(110), 1101)
-        Decimal('1111')
-        >>> ExtendedContext.logical_or(110, Decimal(1101))
-        Decimal('1111')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.logical_or(b, context=self)
-
-    def logical_xor(self, a, b):
-        """Applies the logical operation 'xor' between each operand's digits.
-
-        The operands must be both logical numbers.
-
-        >>> ExtendedContext.logical_xor(Decimal('0'), Decimal('0'))
-        Decimal('0')
-        >>> ExtendedContext.logical_xor(Decimal('0'), Decimal('1'))
-        Decimal('1')
-        >>> ExtendedContext.logical_xor(Decimal('1'), Decimal('0'))
-        Decimal('1')
-        >>> ExtendedContext.logical_xor(Decimal('1'), Decimal('1'))
-        Decimal('0')
-        >>> ExtendedContext.logical_xor(Decimal('1100'), Decimal('1010'))
-        Decimal('110')
-        >>> ExtendedContext.logical_xor(Decimal('1111'), Decimal('10'))
-        Decimal('1101')
-        >>> ExtendedContext.logical_xor(110, 1101)
-        Decimal('1011')
-        >>> ExtendedContext.logical_xor(Decimal(110), 1101)
-        Decimal('1011')
-        >>> ExtendedContext.logical_xor(110, Decimal(1101))
-        Decimal('1011')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.logical_xor(b, context=self)
-
-    def max(self, a, b):
-        """max compares two values numerically and returns the maximum.
-
-        If either operand is a NaN then the general rules apply.
-        Otherwise, the operands are compared as though by the compare
-        operation.  If they are numerically equal then the left-hand operand
-        is chosen as the result.  Otherwise the maximum (closer to positive
-        infinity) of the two operands is chosen as the result.
-
-        >>> ExtendedContext.max(Decimal('3'), Decimal('2'))
-        Decimal('3')
-        >>> ExtendedContext.max(Decimal('-10'), Decimal('3'))
-        Decimal('3')
-        >>> ExtendedContext.max(Decimal('1.0'), Decimal('1'))
-        Decimal('1')
-        >>> ExtendedContext.max(Decimal('7'), Decimal('NaN'))
-        Decimal('7')
-        >>> ExtendedContext.max(1, 2)
-        Decimal('2')
-        >>> ExtendedContext.max(Decimal(1), 2)
-        Decimal('2')
-        >>> ExtendedContext.max(1, Decimal(2))
-        Decimal('2')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.max(b, context=self)
-
-    def max_mag(self, a, b):
-        """Compares the values numerically with their sign ignored.
-
-        >>> ExtendedContext.max_mag(Decimal('7'), Decimal('NaN'))
-        Decimal('7')
-        >>> ExtendedContext.max_mag(Decimal('7'), Decimal('-10'))
-        Decimal('-10')
-        >>> ExtendedContext.max_mag(1, -2)
-        Decimal('-2')
-        >>> ExtendedContext.max_mag(Decimal(1), -2)
-        Decimal('-2')
-        >>> ExtendedContext.max_mag(1, Decimal(-2))
-        Decimal('-2')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.max_mag(b, context=self)
-
-    def min(self, a, b):
-        """min compares two values numerically and returns the minimum.
-
-        If either operand is a NaN then the general rules apply.
-        Otherwise, the operands are compared as though by the compare
-        operation.  If they are numerically equal then the left-hand operand
-        is chosen as the result.  Otherwise the minimum (closer to negative
-        infinity) of the two operands is chosen as the result.
-
-        >>> ExtendedContext.min(Decimal('3'), Decimal('2'))
-        Decimal('2')
-        >>> ExtendedContext.min(Decimal('-10'), Decimal('3'))
-        Decimal('-10')
-        >>> ExtendedContext.min(Decimal('1.0'), Decimal('1'))
-        Decimal('1.0')
-        >>> ExtendedContext.min(Decimal('7'), Decimal('NaN'))
-        Decimal('7')
-        >>> ExtendedContext.min(1, 2)
-        Decimal('1')
-        >>> ExtendedContext.min(Decimal(1), 2)
-        Decimal('1')
-        >>> ExtendedContext.min(1, Decimal(29))
-        Decimal('1')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.min(b, context=self)
-
-    def min_mag(self, a, b):
-        """Compares the values numerically with their sign ignored.
-
-        >>> ExtendedContext.min_mag(Decimal('3'), Decimal('-2'))
-        Decimal('-2')
-        >>> ExtendedContext.min_mag(Decimal('-3'), Decimal('NaN'))
-        Decimal('-3')
-        >>> ExtendedContext.min_mag(1, -2)
-        Decimal('1')
-        >>> ExtendedContext.min_mag(Decimal(1), -2)
-        Decimal('1')
-        >>> ExtendedContext.min_mag(1, Decimal(-2))
-        Decimal('1')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.min_mag(b, context=self)
-
-    def minus(self, a):
-        """Minus corresponds to unary prefix minus in Python.
-
-        The operation is evaluated using the same rules as subtract; the
-        operation minus(a) is calculated as subtract('0', a) where the '0'
-        has the same exponent as the operand.
-
-        >>> ExtendedContext.minus(Decimal('1.3'))
-        Decimal('-1.3')
-        >>> ExtendedContext.minus(Decimal('-1.3'))
-        Decimal('1.3')
-        >>> ExtendedContext.minus(1)
-        Decimal('-1')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.__neg__(context=self)
-
-    def multiply(self, a, b):
-        """multiply multiplies two operands.
-
-        If either operand is a special value then the general rules apply.
-        Otherwise, the operands are multiplied together
-        ('long multiplication'), resulting in a number which may be as long as
-        the sum of the lengths of the two operands.
-
-        >>> ExtendedContext.multiply(Decimal('1.20'), Decimal('3'))
-        Decimal('3.60')
-        >>> ExtendedContext.multiply(Decimal('7'), Decimal('3'))
-        Decimal('21')
-        >>> ExtendedContext.multiply(Decimal('0.9'), Decimal('0.8'))
-        Decimal('0.72')
-        >>> ExtendedContext.multiply(Decimal('0.9'), Decimal('-0'))
-        Decimal('-0.0')
-        >>> ExtendedContext.multiply(Decimal('654321'), Decimal('654321'))
-        Decimal('4.28135971E+11')
-        >>> ExtendedContext.multiply(7, 7)
-        Decimal('49')
-        >>> ExtendedContext.multiply(Decimal(7), 7)
-        Decimal('49')
-        >>> ExtendedContext.multiply(7, Decimal(7))
-        Decimal('49')
-        """
-        a = _convert_other(a, raiseit=True)
-        r = a.__mul__(b, context=self)
-        if r is NotImplemented:
-            raise TypeError("Unable to convert %s to Decimal" % b)
-        else:
-            return r
-
-    def next_minus(self, a):
-        """Returns the largest representable number smaller than a.
-
-        >>> c = ExtendedContext.copy()
-        >>> c.Emin = -999
-        >>> c.Emax = 999
-        >>> ExtendedContext.next_minus(Decimal('1'))
-        Decimal('0.999999999')
-        >>> c.next_minus(Decimal('1E-1007'))
-        Decimal('0E-1007')
-        >>> ExtendedContext.next_minus(Decimal('-1.00000003'))
-        Decimal('-1.00000004')
-        >>> c.next_minus(Decimal('Infinity'))
-        Decimal('9.99999999E+999')
-        >>> c.next_minus(1)
-        Decimal('0.999999999')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.next_minus(context=self)
-
-    def next_plus(self, a):
-        """Returns the smallest representable number larger than a.
-
-        >>> c = ExtendedContext.copy()
-        >>> c.Emin = -999
-        >>> c.Emax = 999
-        >>> ExtendedContext.next_plus(Decimal('1'))
-        Decimal('1.00000001')
-        >>> c.next_plus(Decimal('-1E-1007'))
-        Decimal('-0E-1007')
-        >>> ExtendedContext.next_plus(Decimal('-1.00000003'))
-        Decimal('-1.00000002')
-        >>> c.next_plus(Decimal('-Infinity'))
-        Decimal('-9.99999999E+999')
-        >>> c.next_plus(1)
-        Decimal('1.00000001')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.next_plus(context=self)
-
-    def next_toward(self, a, b):
-        """Returns the number closest to a, in direction towards b.
-
-        The result is the closest representable number from the first
-        operand (but not the first operand) that is in the direction
-        towards the second operand, unless the operands have the same
-        value.
-
-        >>> c = ExtendedContext.copy()
-        >>> c.Emin = -999
-        >>> c.Emax = 999
-        >>> c.next_toward(Decimal('1'), Decimal('2'))
-        Decimal('1.00000001')
-        >>> c.next_toward(Decimal('-1E-1007'), Decimal('1'))
-        Decimal('-0E-1007')
-        >>> c.next_toward(Decimal('-1.00000003'), Decimal('0'))
-        Decimal('-1.00000002')
-        >>> c.next_toward(Decimal('1'), Decimal('0'))
-        Decimal('0.999999999')
-        >>> c.next_toward(Decimal('1E-1007'), Decimal('-100'))
-        Decimal('0E-1007')
-        >>> c.next_toward(Decimal('-1.00000003'), Decimal('-10'))
-        Decimal('-1.00000004')
-        >>> c.next_toward(Decimal('0.00'), Decimal('-0.0000'))
-        Decimal('-0.00')
-        >>> c.next_toward(0, 1)
-        Decimal('1E-1007')
-        >>> c.next_toward(Decimal(0), 1)
-        Decimal('1E-1007')
-        >>> c.next_toward(0, Decimal(1))
-        Decimal('1E-1007')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.next_toward(b, context=self)
-
-    def normalize(self, a):
-        """normalize reduces an operand to its simplest form.
-
-        Essentially a plus operation with all trailing zeros removed from the
-        result.
-
-        >>> ExtendedContext.normalize(Decimal('2.1'))
-        Decimal('2.1')
-        >>> ExtendedContext.normalize(Decimal('-2.0'))
-        Decimal('-2')
-        >>> ExtendedContext.normalize(Decimal('1.200'))
-        Decimal('1.2')
-        >>> ExtendedContext.normalize(Decimal('-120'))
-        Decimal('-1.2E+2')
-        >>> ExtendedContext.normalize(Decimal('120.00'))
-        Decimal('1.2E+2')
-        >>> ExtendedContext.normalize(Decimal('0.00'))
-        Decimal('0')
-        >>> ExtendedContext.normalize(6)
-        Decimal('6')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.normalize(context=self)
-
-    def number_class(self, a):
-        """Returns an indication of the class of the operand.
-
-        The class is one of the following strings:
-          -sNaN
-          -NaN
-          -Infinity
-          -Normal
-          -Subnormal
-          -Zero
-          +Zero
-          +Subnormal
-          +Normal
-          +Infinity
-
-        >>> c = Context(ExtendedContext)
-        >>> c.Emin = -999
-        >>> c.Emax = 999
-        >>> c.number_class(Decimal('Infinity'))
-        '+Infinity'
-        >>> c.number_class(Decimal('1E-10'))
-        '+Normal'
-        >>> c.number_class(Decimal('2.50'))
-        '+Normal'
-        >>> c.number_class(Decimal('0.1E-999'))
-        '+Subnormal'
-        >>> c.number_class(Decimal('0'))
-        '+Zero'
-        >>> c.number_class(Decimal('-0'))
-        '-Zero'
-        >>> c.number_class(Decimal('-0.1E-999'))
-        '-Subnormal'
-        >>> c.number_class(Decimal('-1E-10'))
-        '-Normal'
-        >>> c.number_class(Decimal('-2.50'))
-        '-Normal'
-        >>> c.number_class(Decimal('-Infinity'))
-        '-Infinity'
-        >>> c.number_class(Decimal('NaN'))
-        'NaN'
-        >>> c.number_class(Decimal('-NaN'))
-        'NaN'
-        >>> c.number_class(Decimal('sNaN'))
-        'sNaN'
-        >>> c.number_class(123)
-        '+Normal'
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.number_class(context=self)
-
-    def plus(self, a):
-        """Plus corresponds to unary prefix plus in Python.
-
-        The operation is evaluated using the same rules as add; the
-        operation plus(a) is calculated as add('0', a) where the '0'
-        has the same exponent as the operand.
-
-        >>> ExtendedContext.plus(Decimal('1.3'))
-        Decimal('1.3')
-        >>> ExtendedContext.plus(Decimal('-1.3'))
-        Decimal('-1.3')
-        >>> ExtendedContext.plus(-1)
-        Decimal('-1')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.__pos__(context=self)
-
-    def power(self, a, b, modulo=None):
-        """Raises a to the power of b, to modulo if given.
-
-        With two arguments, compute a**b.  If a is negative then b
-        must be integral.  The result will be inexact unless b is
-        integral and the result is finite and can be expressed exactly
-        in 'precision' digits.
-
-        With three arguments, compute (a**b) % modulo.  For the
-        three argument form, the following restrictions on the
-        arguments hold:
-
-         - all three arguments must be integral
-         - b must be nonnegative
-         - at least one of a or b must be nonzero
-         - modulo must be nonzero and have at most 'precision' digits
-
-        The result of pow(a, b, modulo) is identical to the result
-        that would be obtained by computing (a**b) % modulo with
-        unbounded precision, but is computed more efficiently.  It is
-        always exact.
-
-        >>> c = ExtendedContext.copy()
-        >>> c.Emin = -999
-        >>> c.Emax = 999
-        >>> c.power(Decimal('2'), Decimal('3'))
-        Decimal('8')
-        >>> c.power(Decimal('-2'), Decimal('3'))
-        Decimal('-8')
-        >>> c.power(Decimal('2'), Decimal('-3'))
-        Decimal('0.125')
-        >>> c.power(Decimal('1.7'), Decimal('8'))
-        Decimal('69.7575744')
-        >>> c.power(Decimal('10'), Decimal('0.301029996'))
-        Decimal('2.00000000')
-        >>> c.power(Decimal('Infinity'), Decimal('-1'))
-        Decimal('0')
-        >>> c.power(Decimal('Infinity'), Decimal('0'))
-        Decimal('1')
-        >>> c.power(Decimal('Infinity'), Decimal('1'))
-        Decimal('Infinity')
-        >>> c.power(Decimal('-Infinity'), Decimal('-1'))
-        Decimal('-0')
-        >>> c.power(Decimal('-Infinity'), Decimal('0'))
-        Decimal('1')
-        >>> c.power(Decimal('-Infinity'), Decimal('1'))
-        Decimal('-Infinity')
-        >>> c.power(Decimal('-Infinity'), Decimal('2'))
-        Decimal('Infinity')
-        >>> c.power(Decimal('0'), Decimal('0'))
-        Decimal('NaN')
-
-        >>> c.power(Decimal('3'), Decimal('7'), Decimal('16'))
-        Decimal('11')
-        >>> c.power(Decimal('-3'), Decimal('7'), Decimal('16'))
-        Decimal('-11')
-        >>> c.power(Decimal('-3'), Decimal('8'), Decimal('16'))
-        Decimal('1')
-        >>> c.power(Decimal('3'), Decimal('7'), Decimal('-16'))
-        Decimal('11')
-        >>> c.power(Decimal('23E12345'), Decimal('67E189'), Decimal('123456789'))
-        Decimal('11729830')
-        >>> c.power(Decimal('-0'), Decimal('17'), Decimal('1729'))
-        Decimal('-0')
-        >>> c.power(Decimal('-23'), Decimal('0'), Decimal('65537'))
-        Decimal('1')
-        >>> ExtendedContext.power(7, 7)
-        Decimal('823543')
-        >>> ExtendedContext.power(Decimal(7), 7)
-        Decimal('823543')
-        >>> ExtendedContext.power(7, Decimal(7), 2)
-        Decimal('1')
-        """
-        a = _convert_other(a, raiseit=True)
-        r = a.__pow__(b, modulo, context=self)
-        if r is NotImplemented:
-            raise TypeError("Unable to convert %s to Decimal" % b)
-        else:
-            return r
-
-    def quantize(self, a, b):
-        """Returns a value equal to 'a' (rounded), having the exponent of 'b'.
-
-        The coefficient of the result is derived from that of the left-hand
-        operand.  It may be rounded using the current rounding setting (if the
-        exponent is being increased), multiplied by a positive power of ten (if
-        the exponent is being decreased), or is unchanged (if the exponent is
-        already equal to that of the right-hand operand).
-
-        Unlike other operations, if the length of the coefficient after the
-        quantize operation would be greater than precision then an Invalid
-        operation condition is raised.  This guarantees that, unless there is
-        an error condition, the exponent of the result of a quantize is always
-        equal to that of the right-hand operand.
-
-        Also unlike other operations, quantize will never raise Underflow, even
-        if the result is subnormal and inexact.
-
-        >>> ExtendedContext.quantize(Decimal('2.17'), Decimal('0.001'))
-        Decimal('2.170')
-        >>> ExtendedContext.quantize(Decimal('2.17'), Decimal('0.01'))
-        Decimal('2.17')
-        >>> ExtendedContext.quantize(Decimal('2.17'), Decimal('0.1'))
-        Decimal('2.2')
-        >>> ExtendedContext.quantize(Decimal('2.17'), Decimal('1e+0'))
-        Decimal('2')
-        >>> ExtendedContext.quantize(Decimal('2.17'), Decimal('1e+1'))
-        Decimal('0E+1')
-        >>> ExtendedContext.quantize(Decimal('-Inf'), Decimal('Infinity'))
-        Decimal('-Infinity')
-        >>> ExtendedContext.quantize(Decimal('2'), Decimal('Infinity'))
-        Decimal('NaN')
-        >>> ExtendedContext.quantize(Decimal('-0.1'), Decimal('1'))
-        Decimal('-0')
-        >>> ExtendedContext.quantize(Decimal('-0'), Decimal('1e+5'))
-        Decimal('-0E+5')
-        >>> ExtendedContext.quantize(Decimal('+35236450.6'), Decimal('1e-2'))
-        Decimal('NaN')
-        >>> ExtendedContext.quantize(Decimal('-35236450.6'), Decimal('1e-2'))
-        Decimal('NaN')
-        >>> ExtendedContext.quantize(Decimal('217'), Decimal('1e-1'))
-        Decimal('217.0')
-        >>> ExtendedContext.quantize(Decimal('217'), Decimal('1e-0'))
-        Decimal('217')
-        >>> ExtendedContext.quantize(Decimal('217'), Decimal('1e+1'))
-        Decimal('2.2E+2')
-        >>> ExtendedContext.quantize(Decimal('217'), Decimal('1e+2'))
-        Decimal('2E+2')
-        >>> ExtendedContext.quantize(1, 2)
-        Decimal('1')
-        >>> ExtendedContext.quantize(Decimal(1), 2)
-        Decimal('1')
-        >>> ExtendedContext.quantize(1, Decimal(2))
-        Decimal('1')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.quantize(b, context=self)
-
-    def radix(self):
-        """Just returns 10, as this is Decimal, :)
-
-        >>> ExtendedContext.radix()
-        Decimal('10')
-        """
-        return Decimal(10)
-
-    def remainder(self, a, b):
-        """Returns the remainder from integer division.
-
-        The result is the residue of the dividend after the operation of
-        calculating integer division as described for divide-integer, rounded
-        to precision digits if necessary.  The sign of the result, if
-        non-zero, is the same as that of the original dividend.
-
-        This operation will fail under the same conditions as integer division
-        (that is, if integer division on the same two operands would fail, the
-        remainder cannot be calculated).
-
-        >>> ExtendedContext.remainder(Decimal('2.1'), Decimal('3'))
-        Decimal('2.1')
-        >>> ExtendedContext.remainder(Decimal('10'), Decimal('3'))
-        Decimal('1')
-        >>> ExtendedContext.remainder(Decimal('-10'), Decimal('3'))
-        Decimal('-1')
-        >>> ExtendedContext.remainder(Decimal('10.2'), Decimal('1'))
-        Decimal('0.2')
-        >>> ExtendedContext.remainder(Decimal('10'), Decimal('0.3'))
-        Decimal('0.1')
-        >>> ExtendedContext.remainder(Decimal('3.6'), Decimal('1.3'))
-        Decimal('1.0')
-        >>> ExtendedContext.remainder(22, 6)
-        Decimal('4')
-        >>> ExtendedContext.remainder(Decimal(22), 6)
-        Decimal('4')
-        >>> ExtendedContext.remainder(22, Decimal(6))
-        Decimal('4')
-        """
-        a = _convert_other(a, raiseit=True)
-        r = a.__mod__(b, context=self)
-        if r is NotImplemented:
-            raise TypeError("Unable to convert %s to Decimal" % b)
-        else:
-            return r
-
-    def remainder_near(self, a, b):
-        """Returns to be "a - b * n", where n is the integer nearest the exact
-        value of "x / b" (if two integers are equally near then the even one
-        is chosen).  If the result is equal to 0 then its sign will be the
-        sign of a.
-
-        This operation will fail under the same conditions as integer division
-        (that is, if integer division on the same two operands would fail, the
-        remainder cannot be calculated).
-
-        >>> ExtendedContext.remainder_near(Decimal('2.1'), Decimal('3'))
-        Decimal('-0.9')
-        >>> ExtendedContext.remainder_near(Decimal('10'), Decimal('6'))
-        Decimal('-2')
-        >>> ExtendedContext.remainder_near(Decimal('10'), Decimal('3'))
-        Decimal('1')
-        >>> ExtendedContext.remainder_near(Decimal('-10'), Decimal('3'))
-        Decimal('-1')
-        >>> ExtendedContext.remainder_near(Decimal('10.2'), Decimal('1'))
-        Decimal('0.2')
-        >>> ExtendedContext.remainder_near(Decimal('10'), Decimal('0.3'))
-        Decimal('0.1')
-        >>> ExtendedContext.remainder_near(Decimal('3.6'), Decimal('1.3'))
-        Decimal('-0.3')
-        >>> ExtendedContext.remainder_near(3, 11)
-        Decimal('3')
-        >>> ExtendedContext.remainder_near(Decimal(3), 11)
-        Decimal('3')
-        >>> ExtendedContext.remainder_near(3, Decimal(11))
-        Decimal('3')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.remainder_near(b, context=self)
-
-    def rotate(self, a, b):
-        """Returns a rotated copy of a, b times.
-
-        The coefficient of the result is a rotated copy of the digits in
-        the coefficient of the first operand.  The number of places of
-        rotation is taken from the absolute value of the second operand,
-        with the rotation being to the left if the second operand is
-        positive or to the right otherwise.
-
-        >>> ExtendedContext.rotate(Decimal('34'), Decimal('8'))
-        Decimal('400000003')
-        >>> ExtendedContext.rotate(Decimal('12'), Decimal('9'))
-        Decimal('12')
-        >>> ExtendedContext.rotate(Decimal('123456789'), Decimal('-2'))
-        Decimal('891234567')
-        >>> ExtendedContext.rotate(Decimal('123456789'), Decimal('0'))
-        Decimal('123456789')
-        >>> ExtendedContext.rotate(Decimal('123456789'), Decimal('+2'))
-        Decimal('345678912')
-        >>> ExtendedContext.rotate(1333333, 1)
-        Decimal('13333330')
-        >>> ExtendedContext.rotate(Decimal(1333333), 1)
-        Decimal('13333330')
-        >>> ExtendedContext.rotate(1333333, Decimal(1))
-        Decimal('13333330')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.rotate(b, context=self)
-
-    def same_quantum(self, a, b):
-        """Returns True if the two operands have the same exponent.
-
-        The result is never affected by either the sign or the coefficient of
-        either operand.
-
-        >>> ExtendedContext.same_quantum(Decimal('2.17'), Decimal('0.001'))
-        False
-        >>> ExtendedContext.same_quantum(Decimal('2.17'), Decimal('0.01'))
-        True
-        >>> ExtendedContext.same_quantum(Decimal('2.17'), Decimal('1'))
-        False
-        >>> ExtendedContext.same_quantum(Decimal('Inf'), Decimal('-Inf'))
-        True
-        >>> ExtendedContext.same_quantum(10000, -1)
-        True
-        >>> ExtendedContext.same_quantum(Decimal(10000), -1)
-        True
-        >>> ExtendedContext.same_quantum(10000, Decimal(-1))
-        True
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.same_quantum(b)
-
-    def scaleb (self, a, b):
-        """Returns the first operand after adding the second value its exp.
-
-        >>> ExtendedContext.scaleb(Decimal('7.50'), Decimal('-2'))
-        Decimal('0.0750')
-        >>> ExtendedContext.scaleb(Decimal('7.50'), Decimal('0'))
-        Decimal('7.50')
-        >>> ExtendedContext.scaleb(Decimal('7.50'), Decimal('3'))
-        Decimal('7.50E+3')
-        >>> ExtendedContext.scaleb(1, 4)
-        Decimal('1E+4')
-        >>> ExtendedContext.scaleb(Decimal(1), 4)
-        Decimal('1E+4')
-        >>> ExtendedContext.scaleb(1, Decimal(4))
-        Decimal('1E+4')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.scaleb(b, context=self)
-
-    def shift(self, a, b):
-        """Returns a shifted copy of a, b times.
-
-        The coefficient of the result is a shifted copy of the digits
-        in the coefficient of the first operand.  The number of places
-        to shift is taken from the absolute value of the second operand,
-        with the shift being to the left if the second operand is
-        positive or to the right otherwise.  Digits shifted into the
-        coefficient are zeros.
-
-        >>> ExtendedContext.shift(Decimal('34'), Decimal('8'))
-        Decimal('400000000')
-        >>> ExtendedContext.shift(Decimal('12'), Decimal('9'))
-        Decimal('0')
-        >>> ExtendedContext.shift(Decimal('123456789'), Decimal('-2'))
-        Decimal('1234567')
-        >>> ExtendedContext.shift(Decimal('123456789'), Decimal('0'))
-        Decimal('123456789')
-        >>> ExtendedContext.shift(Decimal('123456789'), Decimal('+2'))
-        Decimal('345678900')
-        >>> ExtendedContext.shift(88888888, 2)
-        Decimal('888888800')
-        >>> ExtendedContext.shift(Decimal(88888888), 2)
-        Decimal('888888800')
-        >>> ExtendedContext.shift(88888888, Decimal(2))
-        Decimal('888888800')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.shift(b, context=self)
-
-    def sqrt(self, a):
-        """Square root of a non-negative number to context precision.
-
-        If the result must be inexact, it is rounded using the round-half-even
-        algorithm.
-
-        >>> ExtendedContext.sqrt(Decimal('0'))
-        Decimal('0')
-        >>> ExtendedContext.sqrt(Decimal('-0'))
-        Decimal('-0')
-        >>> ExtendedContext.sqrt(Decimal('0.39'))
-        Decimal('0.624499800')
-        >>> ExtendedContext.sqrt(Decimal('100'))
-        Decimal('10')
-        >>> ExtendedContext.sqrt(Decimal('1'))
-        Decimal('1')
-        >>> ExtendedContext.sqrt(Decimal('1.0'))
-        Decimal('1.0')
-        >>> ExtendedContext.sqrt(Decimal('1.00'))
-        Decimal('1.0')
-        >>> ExtendedContext.sqrt(Decimal('7'))
-        Decimal('2.64575131')
-        >>> ExtendedContext.sqrt(Decimal('10'))
-        Decimal('3.16227766')
-        >>> ExtendedContext.sqrt(2)
-        Decimal('1.41421356')
-        >>> ExtendedContext.prec
-        9
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.sqrt(context=self)
-
-    def subtract(self, a, b):
-        """Return the difference between the two operands.
-
-        >>> ExtendedContext.subtract(Decimal('1.3'), Decimal('1.07'))
-        Decimal('0.23')
-        >>> ExtendedContext.subtract(Decimal('1.3'), Decimal('1.30'))
-        Decimal('0.00')
-        >>> ExtendedContext.subtract(Decimal('1.3'), Decimal('2.07'))
-        Decimal('-0.77')
-        >>> ExtendedContext.subtract(8, 5)
-        Decimal('3')
-        >>> ExtendedContext.subtract(Decimal(8), 5)
-        Decimal('3')
-        >>> ExtendedContext.subtract(8, Decimal(5))
-        Decimal('3')
-        """
-        a = _convert_other(a, raiseit=True)
-        r = a.__sub__(b, context=self)
-        if r is NotImplemented:
-            raise TypeError("Unable to convert %s to Decimal" % b)
-        else:
-            return r
-
-    def to_eng_string(self, a):
-        """Converts a number to a string, using scientific notation.
-
-        The operation is not affected by the context.
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.to_eng_string(context=self)
-
-    def to_sci_string(self, a):
-        """Converts a number to a string, using scientific notation.
-
-        The operation is not affected by the context.
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.__str__(context=self)
-
-    def to_integral_exact(self, a):
-        """Rounds to an integer.
-
-        When the operand has a negative exponent, the result is the same
-        as using the quantize() operation using the given operand as the
-        left-hand-operand, 1E+0 as the right-hand-operand, and the precision
-        of the operand as the precision setting; Inexact and Rounded flags
-        are allowed in this operation.  The rounding mode is taken from the
-        context.
-
-        >>> ExtendedContext.to_integral_exact(Decimal('2.1'))
-        Decimal('2')
-        >>> ExtendedContext.to_integral_exact(Decimal('100'))
-        Decimal('100')
-        >>> ExtendedContext.to_integral_exact(Decimal('100.0'))
-        Decimal('100')
-        >>> ExtendedContext.to_integral_exact(Decimal('101.5'))
-        Decimal('102')
-        >>> ExtendedContext.to_integral_exact(Decimal('-101.5'))
-        Decimal('-102')
-        >>> ExtendedContext.to_integral_exact(Decimal('10E+5'))
-        Decimal('1.0E+6')
-        >>> ExtendedContext.to_integral_exact(Decimal('7.89E+77'))
-        Decimal('7.89E+77')
-        >>> ExtendedContext.to_integral_exact(Decimal('-Inf'))
-        Decimal('-Infinity')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.to_integral_exact(context=self)
-
-    def to_integral_value(self, a):
-        """Rounds to an integer.
-
-        When the operand has a negative exponent, the result is the same
-        as using the quantize() operation using the given operand as the
-        left-hand-operand, 1E+0 as the right-hand-operand, and the precision
-        of the operand as the precision setting, except that no flags will
-        be set.  The rounding mode is taken from the context.
-
-        >>> ExtendedContext.to_integral_value(Decimal('2.1'))
-        Decimal('2')
-        >>> ExtendedContext.to_integral_value(Decimal('100'))
-        Decimal('100')
-        >>> ExtendedContext.to_integral_value(Decimal('100.0'))
-        Decimal('100')
-        >>> ExtendedContext.to_integral_value(Decimal('101.5'))
-        Decimal('102')
-        >>> ExtendedContext.to_integral_value(Decimal('-101.5'))
-        Decimal('-102')
-        >>> ExtendedContext.to_integral_value(Decimal('10E+5'))
-        Decimal('1.0E+6')
-        >>> ExtendedContext.to_integral_value(Decimal('7.89E+77'))
-        Decimal('7.89E+77')
-        >>> ExtendedContext.to_integral_value(Decimal('-Inf'))
-        Decimal('-Infinity')
-        """
-        a = _convert_other(a, raiseit=True)
-        return a.to_integral_value(context=self)
-
-    # the method name changed, but we provide also the old one, for compatibility
-    to_integral = to_integral_value
-
-class _WorkRep(object):
-    __slots__ = ('sign','int','exp')
-    # sign: 0 or 1
-    # int:  int or long
-    # exp:  None, int, or string
-
-    def __init__(self, value=None):
-        if value is None:
-            self.sign = None
-            self.int = 0
-            self.exp = None
-        elif isinstance(value, Decimal):
-            self.sign = value._sign
-            self.int = int(value._int)
-            self.exp = value._exp
-        else:
-            # assert isinstance(value, tuple)
-            self.sign = value[0]
-            self.int = value[1]
-            self.exp = value[2]
-
-    def __repr__(self):
-        return "(%r, %r, %r)" % (self.sign, self.int, self.exp)
-
-    __str__ = __repr__
-
-
-
-def _normalize(op1, op2, prec = 0):
-    """Normalizes op1, op2 to have the same exp and length of coefficient.
-
-    Done during addition.
-    """
-    if op1.exp < op2.exp:
-        tmp = op2
-        other = op1
-    else:
-        tmp = op1
-        other = op2
-
-    # Let exp = min(tmp.exp - 1, tmp.adjusted() - precision - 1).
-    # Then adding 10**exp to tmp has the same effect (after rounding)
-    # as adding any positive quantity smaller than 10**exp; similarly
-    # for subtraction.  So if other is smaller than 10**exp we replace
-    # it with 10**exp.  This avoids tmp.exp - other.exp getting too large.
-    tmp_len = len(str(tmp.int))
-    other_len = len(str(other.int))
-    exp = tmp.exp + min(-1, tmp_len - prec - 2)
-    if other_len + other.exp - 1 < exp:
-        other.int = 1
-        other.exp = exp
-
-    tmp.int *= 10 ** (tmp.exp - other.exp)
-    tmp.exp = other.exp
-    return op1, op2
-
-##### Integer arithmetic functions used by ln, log10, exp and __pow__ #####
-
-# This function from Tim Peters was taken from here:
-# http://mail.python.org/pipermail/python-list/1999-July/007758.html
-# The correction being in the function definition is for speed, and
-# the whole function is not resolved with math.log because of avoiding
-# the use of floats.
-def _nbits(n, correction = {
-        '0': 4, '1': 3, '2': 2, '3': 2,
-        '4': 1, '5': 1, '6': 1, '7': 1,
-        '8': 0, '9': 0, 'a': 0, 'b': 0,
-        'c': 0, 'd': 0, 'e': 0, 'f': 0}):
-    """Number of bits in binary representation of the positive integer n,
-    or 0 if n == 0.
-    """
-    if n < 0:
-        raise ValueError("The argument to _nbits should be nonnegative.")
-    hex_n = "%x" % n
-    return 4*len(hex_n) - correction[hex_n[0]]
-
-def _sqrt_nearest(n, a):
-    """Closest integer to the square root of the positive integer n.  a is
-    an initial approximation to the square root.  Any positive integer
-    will do for a, but the closer a is to the square root of n the
-    faster convergence will be.
-
-    """
-    if n <= 0 or a <= 0:
-        raise ValueError("Both arguments to _sqrt_nearest should be positive.")
-
-    b=0
-    while a != b:
-        b, a = a, a--n//a>>1
-    return a
-
-def _rshift_nearest(x, shift):
-    """Given an integer x and a nonnegative integer shift, return closest
-    integer to x / 2**shift; use round-to-even in case of a tie.
-
-    """
-    b, q = 1L << shift, x >> shift
-    return q + (2*(x & (b-1)) + (q&1) > b)
-
-def _div_nearest(a, b):
-    """Closest integer to a/b, a and b positive integers; rounds to even
-    in the case of a tie.
-
-    """
-    q, r = divmod(a, b)
-    return q + (2*r + (q&1) > b)
-
-def _ilog(x, M, L = 8):
-    """Integer approximation to M*log(x/M), with absolute error boundable
-    in terms only of x/M.
-
-    Given positive integers x and M, return an integer approximation to
-    M * log(x/M).  For L = 8 and 0.1 <= x/M <= 10 the difference
-    between the approximation and the exact result is at most 22.  For
-    L = 8 and 1.0 <= x/M <= 10.0 the difference is at most 15.  In
-    both cases these are upper bounds on the error; it will usually be
-    much smaller."""
-
-    # The basic algorithm is the following: let log1p be the function
-    # log1p(x) = log(1+x).  Then log(x/M) = log1p((x-M)/M).  We use
-    # the reduction
-    #
-    #    log1p(y) = 2*log1p(y/(1+sqrt(1+y)))
-    #
-    # repeatedly until the argument to log1p is small (< 2**-L in
-    # absolute value).  For small y we can use the Taylor series
-    # expansion
-    #
-    #    log1p(y) ~ y - y**2/2 + y**3/3 - ... - (-y)**T/T
-    #
-    # truncating at T such that y**T is small enough.  The whole
-    # computation is carried out in a form of fixed-point arithmetic,
-    # with a real number z being represented by an integer
-    # approximation to z*M.  To avoid loss of precision, the y below
-    # is actually an integer approximation to 2**R*y*M, where R is the
-    # number of reductions performed so far.
-
-    y = x-M
-    # argument reduction; R = number of reductions performed
-    R = 0
-    while (R <= L and long(abs(y)) << L-R >= M or
-           R > L and abs(y) >> R-L >= M):
-        y = _div_nearest(long(M*y) << 1,
-                         M + _sqrt_nearest(M*(M+_rshift_nearest(y, R)), M))
-        R += 1
-
-    # Taylor series with T terms
-    T = -int(-10*len(str(M))//(3*L))
-    yshift = _rshift_nearest(y, R)
-    w = _div_nearest(M, T)
-    for k in xrange(T-1, 0, -1):
-        w = _div_nearest(M, k) - _div_nearest(yshift*w, M)
-
-    return _div_nearest(w*y, M)
-
-def _dlog10(c, e, p):
-    """Given integers c, e and p with c > 0, p >= 0, compute an integer
-    approximation to 10**p * log10(c*10**e), with an absolute error of
-    at most 1.  Assumes that c*10**e is not exactly 1."""
-
-    # increase precision by 2; compensate for this by dividing
-    # final result by 100
-    p += 2
-
-    # write c*10**e as d*10**f with either:
-    #   f >= 0 and 1 <= d <= 10, or
-    #   f <= 0 and 0.1 <= d <= 1.
-    # Thus for c*10**e close to 1, f = 0
-    l = len(str(c))
-    f = e+l - (e+l >= 1)
-
-    if p > 0:
-        M = 10**p
-        k = e+p-f
-        if k >= 0:
-            c *= 10**k
-        else:
-            c = _div_nearest(c, 10**-k)
-
-        log_d = _ilog(c, M) # error < 5 + 22 = 27
-        log_10 = _log10_digits(p) # error < 1
-        log_d = _div_nearest(log_d*M, log_10)
-        log_tenpower = f*M # exact
-    else:
-        log_d = 0  # error < 2.31
-        log_tenpower = _div_nearest(f, 10**-p) # error < 0.5
-
-    return _div_nearest(log_tenpower+log_d, 100)
-
-def _dlog(c, e, p):
-    """Given integers c, e and p with c > 0, compute an integer
-    approximation to 10**p * log(c*10**e), with an absolute error of
-    at most 1.  Assumes that c*10**e is not exactly 1."""
-
-    # Increase precision by 2. The precision increase is compensated
-    # for at the end with a division by 100.
-    p += 2
-
-    # rewrite c*10**e as d*10**f with either f >= 0 and 1 <= d <= 10,
-    # or f <= 0 and 0.1 <= d <= 1.  Then we can compute 10**p * log(c*10**e)
-    # as 10**p * log(d) + 10**p*f * log(10).
-    l = len(str(c))
-    f = e+l - (e+l >= 1)
-
-    # compute approximation to 10**p*log(d), with error < 27
-    if p > 0:
-        k = e+p-f
-        if k >= 0:
-            c *= 10**k
-        else:
-            c = _div_nearest(c, 10**-k)  # error of <= 0.5 in c
-
-        # _ilog magnifies existing error in c by a factor of at most 10
-        log_d = _ilog(c, 10**p) # error < 5 + 22 = 27
-    else:
-        # p <= 0: just approximate the whole thing by 0; error < 2.31
-        log_d = 0
-
-    # compute approximation to f*10**p*log(10), with error < 11.
-    if f:
-        extra = len(str(abs(f)))-1
-        if p + extra >= 0:
-            # error in f * _log10_digits(p+extra) < |f| * 1 = |f|
-            # after division, error < |f|/10**extra + 0.5 < 10 + 0.5 < 11
-            f_log_ten = _div_nearest(f*_log10_digits(p+extra), 10**extra)
-        else:
-            f_log_ten = 0
-    else:
-        f_log_ten = 0
-
-    # error in sum < 11+27 = 38; error after division < 0.38 + 0.5 < 1
-    return _div_nearest(f_log_ten + log_d, 100)
-
-class _Log10Memoize(object):
-    """Class to compute, store, and allow retrieval of, digits of the
-    constant log(10) = 2.302585....  This constant is needed by
-    Decimal.ln, Decimal.log10, Decimal.exp and Decimal.__pow__."""
-    def __init__(self):
-        self.digits = "23025850929940456840179914546843642076011014886"
-
-    def getdigits(self, p):
-        """Given an integer p >= 0, return floor(10**p)*log(10).
-
-        For example, self.getdigits(3) returns 2302.
-        """
-        # digits are stored as a string, for quick conversion to
-        # integer in the case that we've already computed enough
-        # digits; the stored digits should always be correct
-        # (truncated, not rounded to nearest).
-        if p < 0:
-            raise ValueError("p should be nonnegative")
-
-        if p >= len(self.digits):
-            # compute p+3, p+6, p+9, ... digits; continue until at
-            # least one of the extra digits is nonzero
-            extra = 3
-            while True:
-                # compute p+extra digits, correct to within 1ulp
-                M = 10**(p+extra+2)
-                digits = str(_div_nearest(_ilog(10*M, M), 100))
-                if digits[-extra:] != '0'*extra:
-                    break
-                extra += 3
-            # keep all reliable digits so far; remove trailing zeros
-            # and next nonzero digit
-            self.digits = digits.rstrip('0')[:-1]
-        return int(self.digits[:p+1])
-
-_log10_digits = _Log10Memoize().getdigits
-
-def _iexp(x, M, L=8):
-    """Given integers x and M, M > 0, such that x/M is small in absolute
-    value, compute an integer approximation to M*exp(x/M).  For 0 <=
-    x/M <= 2.4, the absolute error in the result is bounded by 60 (and
-    is usually much smaller)."""
-
-    # Algorithm: to compute exp(z) for a real number z, first divide z
-    # by a suitable power R of 2 so that |z/2**R| < 2**-L.  Then
-    # compute expm1(z/2**R) = exp(z/2**R) - 1 using the usual Taylor
-    # series
-    #
-    #     expm1(x) = x + x**2/2! + x**3/3! + ...
-    #
-    # Now use the identity
-    #
-    #     expm1(2x) = expm1(x)*(expm1(x)+2)
-    #
-    # R times to compute the sequence expm1(z/2**R),
-    # expm1(z/2**(R-1)), ... , exp(z/2), exp(z).
-
-    # Find R such that x/2**R/M <= 2**-L
-    R = _nbits((long(x)<<L)//M)
-
-    # Taylor series.  (2**L)**T > M
-    T = -int(-10*len(str(M))//(3*L))
-    y = _div_nearest(x, T)
-    Mshift = long(M)<<R
-    for i in xrange(T-1, 0, -1):
-        y = _div_nearest(x*(Mshift + y), Mshift * i)
-
-    # Expansion
-    for k in xrange(R-1, -1, -1):
-        Mshift = long(M)<<(k+2)
-        y = _div_nearest(y*(y+Mshift), Mshift)
-
-    return M+y
-
-def _dexp(c, e, p):
-    """Compute an approximation to exp(c*10**e), with p decimal places of
-    precision.
-
-    Returns integers d, f such that:
-
-      10**(p-1) <= d <= 10**p, and
-      (d-1)*10**f < exp(c*10**e) < (d+1)*10**f
-
-    In other words, d*10**f is an approximation to exp(c*10**e) with p
-    digits of precision, and with an error in d of at most 1.  This is
-    almost, but not quite, the same as the error being < 1ulp: when d
-    = 10**(p-1) the error could be up to 10 ulp."""
-
-    # we'll call iexp with M = 10**(p+2), giving p+3 digits of precision
-    p += 2
-
-    # compute log(10) with extra precision = adjusted exponent of c*10**e
-    extra = max(0, e + len(str(c)) - 1)
-    q = p + extra
-
-    # compute quotient c*10**e/(log(10)) = c*10**(e+q)/(log(10)*10**q),
-    # rounding down
-    shift = e+q
-    if shift >= 0:
-        cshift = c*10**shift
-    else:
-        cshift = c//10**-shift
-    quot, rem = divmod(cshift, _log10_digits(q))
-
-    # reduce remainder back to original precision
-    rem = _div_nearest(rem, 10**extra)
-
-    # error in result of _iexp < 120;  error after division < 0.62
-    return _div_nearest(_iexp(rem, 10**p), 1000), quot - p + 3
-
-def _dpower(xc, xe, yc, ye, p):
-    """Given integers xc, xe, yc and ye representing Decimals x = xc*10**xe and
-    y = yc*10**ye, compute x**y.  Returns a pair of integers (c, e) such that:
-
-      10**(p-1) <= c <= 10**p, and
-      (c-1)*10**e < x**y < (c+1)*10**e
-
-    in other words, c*10**e is an approximation to x**y with p digits
-    of precision, and with an error in c of at most 1.  (This is
-    almost, but not quite, the same as the error being < 1ulp: when c
-    == 10**(p-1) we can only guarantee error < 10ulp.)
-
-    We assume that: x is positive and not equal to 1, and y is nonzero.
-    """
-
-    # Find b such that 10**(b-1) <= |y| <= 10**b
-    b = len(str(abs(yc))) + ye
-
-    # log(x) = lxc*10**(-p-b-1), to p+b+1 places after the decimal point
-    lxc = _dlog(xc, xe, p+b+1)
-
-    # compute product y*log(x) = yc*lxc*10**(-p-b-1+ye) = pc*10**(-p-1)
-    shift = ye-b
-    if shift >= 0:
-        pc = lxc*yc*10**shift
-    else:
-        pc = _div_nearest(lxc*yc, 10**-shift)
-
-    if pc == 0:
-        # we prefer a result that isn't exactly 1; this makes it
-        # easier to compute a correctly rounded result in __pow__
-        if ((len(str(xc)) + xe >= 1) == (yc > 0)): # if x**y > 1:
-            coeff, exp = 10**(p-1)+1, 1-p
-        else:
-            coeff, exp = 10**p-1, -p
-    else:
-        coeff, exp = _dexp(pc, -(p+1), p+1)
-        coeff = _div_nearest(coeff, 10)
-        exp += 1
-
-    return coeff, exp
-
-def _log10_lb(c, correction = {
-        '1': 100, '2': 70, '3': 53, '4': 40, '5': 31,
-        '6': 23, '7': 16, '8': 10, '9': 5}):
-    """Compute a lower bound for 100*log10(c) for a positive integer c."""
-    if c <= 0:
-        raise ValueError("The argument to _log10_lb should be nonnegative.")
-    str_c = str(c)
-    return 100*len(str_c) - correction[str_c[0]]
-
-##### Helper Functions ####################################################
-
-def _convert_other(other, raiseit=False, allow_float=False):
-    """Convert other to Decimal.
-
-    Verifies that it's ok to use in an implicit construction.
-    If allow_float is true, allow conversion from float;  this
-    is used in the comparison methods (__eq__ and friends).
-
-    """
-    if isinstance(other, Decimal):
-        return other
-    if isinstance(other, (int, long)):
-        return Decimal(other)
-    if allow_float and isinstance(other, float):
-        return Decimal.from_float(other)
-
-    if raiseit:
-        raise TypeError("Unable to convert %s to Decimal" % other)
-    return NotImplemented
-
-##### Setup Specific Contexts ############################################
-
-# The default context prototype used by Context()
-# Is mutable, so that new contexts can have different default values
-
-DefaultContext = Context(
-        prec=28, rounding=ROUND_HALF_EVEN,
-        traps=[DivisionByZero, Overflow, InvalidOperation],
-        flags=[],
-        Emax=999999999,
-        Emin=-999999999,
-        capitals=1
-)
-
-# Pre-made alternate contexts offered by the specification
-# Don't change these; the user should be able to select these
-# contexts and be able to reproduce results from other implementations
-# of the spec.
-
-BasicContext = Context(
-        prec=9, rounding=ROUND_HALF_UP,
-        traps=[DivisionByZero, Overflow, InvalidOperation, Clamped, Underflow],
-        flags=[],
-)
-
-ExtendedContext = Context(
-        prec=9, rounding=ROUND_HALF_EVEN,
-        traps=[],
-        flags=[],
-)
-
-
-##### crud for parsing strings #############################################
-#
-# Regular expression used for parsing numeric strings.  Additional
-# comments:
-#
-# 1. Uncomment the two '\s*' lines to allow leading and/or trailing
-# whitespace.  But note that the specification disallows whitespace in
-# a numeric string.
-#
-# 2. For finite numbers (not infinities and NaNs) the body of the
-# number between the optional sign and the optional exponent must have
-# at least one decimal digit, possibly after the decimal point.  The
-# lookahead expression '(?=\d|\.\d)' checks this.
-
-import re
-_parser = re.compile(r"""        # A numeric string consists of:
-#    \s*
-    (?P<sign>[-+])?              # an optional sign, followed by either...
-    (
-        (?=\d|\.\d)              # ...a number (with at least one digit)
-        (?P<int>\d*)             # having a (possibly empty) integer part
-        (\.(?P<frac>\d*))?       # followed by an optional fractional part
-        (E(?P<exp>[-+]?\d+))?    # followed by an optional exponent, or...
-    |
-        Inf(inity)?              # ...an infinity, or...
-    |
-        (?P<signal>s)?           # ...an (optionally signaling)
-        NaN                      # NaN
-        (?P<diag>\d*)            # with (possibly empty) diagnostic info.
-    )
-#    \s*
-    \Z
-""", re.VERBOSE | re.IGNORECASE | re.UNICODE).match
-
-_all_zeros = re.compile('0*$').match
-_exact_half = re.compile('50*$').match
-
-##### PEP3101 support functions ##############################################
-# The functions in this section have little to do with the Decimal
-# class, and could potentially be reused or adapted for other pure
-# Python numeric classes that want to implement __format__
-#
-# A format specifier for Decimal looks like:
-#
-#   [[fill]align][sign][0][minimumwidth][,][.precision][type]
-
-_parse_format_specifier_regex = re.compile(r"""\A
-(?:
-   (?P<fill>.)?
-   (?P<align>[<>=^])
-)?
-(?P<sign>[-+ ])?
-(?P<zeropad>0)?
-(?P<minimumwidth>(?!0)\d+)?
-(?P<thousands_sep>,)?
-(?:\.(?P<precision>0|(?!0)\d+))?
-(?P<type>[eEfFgGn%])?
-\Z
-""", re.VERBOSE)
-
-del re
-
-# The locale module is only needed for the 'n' format specifier.  The
-# rest of the PEP 3101 code functions quite happily without it, so we
-# don't care too much if locale isn't present.
-try:
-    import locale as _locale
-except ImportError:
-    pass
-
-def _parse_format_specifier(format_spec, _localeconv=None):
-    """Parse and validate a format specifier.
-
-    Turns a standard numeric format specifier into a dict, with the
-    following entries:
-
-      fill: fill character to pad field to minimum width
-      align: alignment type, either '<', '>', '=' or '^'
-      sign: either '+', '-' or ' '
-      minimumwidth: nonnegative integer giving minimum width
-      zeropad: boolean, indicating whether to pad with zeros
-      thousands_sep: string to use as thousands separator, or ''
-      grouping: grouping for thousands separators, in format
-        used by localeconv
-      decimal_point: string to use for decimal point
-      precision: nonnegative integer giving precision, or None
-      type: one of the characters 'eEfFgG%', or None
-      unicode: boolean (always True for Python 3.x)
-
-    """
-    m = _parse_format_specifier_regex.match(format_spec)
-    if m is None:
-        raise ValueError("Invalid format specifier: " + format_spec)
-
-    # get the dictionary
-    format_dict = m.groupdict()
-
-    # zeropad; defaults for fill and alignment.  If zero padding
-    # is requested, the fill and align fields should be absent.
-    fill = format_dict['fill']
-    align = format_dict['align']
-    format_dict['zeropad'] = (format_dict['zeropad'] is not None)
-    if format_dict['zeropad']:
-        if fill is not None:
-            raise ValueError("Fill character conflicts with '0'"
-                             " in format specifier: " + format_spec)
-        if align is not None:
-            raise ValueError("Alignment conflicts with '0' in "
-                             "format specifier: " + format_spec)
-    format_dict['fill'] = fill or ' '
-    # PEP 3101 originally specified that the default alignment should
-    # be left;  it was later agreed that right-aligned makes more sense
-    # for numeric types.  See http://bugs.python.org/issue6857.
-    format_dict['align'] = align or '>'
-
-    # default sign handling: '-' for negative, '' for positive
-    if format_dict['sign'] is None:
-        format_dict['sign'] = '-'
-
-    # minimumwidth defaults to 0; precision remains None if not given
-    format_dict['minimumwidth'] = int(format_dict['minimumwidth'] or '0')
-    if format_dict['precision'] is not None:
-        format_dict['precision'] = int(format_dict['precision'])
-
-    # if format type is 'g' or 'G' then a precision of 0 makes little
-    # sense; convert it to 1.  Same if format type is unspecified.
-    if format_dict['precision'] == 0:
-        if format_dict['type'] is None or format_dict['type'] in 'gG':
-            format_dict['precision'] = 1
-
-    # determine thousands separator, grouping, and decimal separator, and
-    # add appropriate entries to format_dict
-    if format_dict['type'] == 'n':
-        # apart from separators, 'n' behaves just like 'g'
-        format_dict['type'] = 'g'
-        if _localeconv is None:
-            _localeconv = _locale.localeconv()
-        if format_dict['thousands_sep'] is not None:
-            raise ValueError("Explicit thousands separator conflicts with "
-                             "'n' type in format specifier: " + format_spec)
-        format_dict['thousands_sep'] = _localeconv['thousands_sep']
-        format_dict['grouping'] = _localeconv['grouping']
-        format_dict['decimal_point'] = _localeconv['decimal_point']
-    else:
-        if format_dict['thousands_sep'] is None:
-            format_dict['thousands_sep'] = ''
-        format_dict['grouping'] = [3, 0]
-        format_dict['decimal_point'] = '.'
-
-    # record whether return type should be str or unicode
-    format_dict['unicode'] = isinstance(format_spec, unicode)
-
-    return format_dict
-
-def _format_align(sign, body, spec):
-    """Given an unpadded, non-aligned numeric string 'body' and sign
-    string 'sign', add padding and alignment conforming to the given
-    format specifier dictionary 'spec' (as produced by
-    parse_format_specifier).
-
-    Also converts result to unicode if necessary.
-
-    """
-    # how much extra space do we have to play with?
-    minimumwidth = spec['minimumwidth']
-    fill = spec['fill']
-    padding = fill*(minimumwidth - len(sign) - len(body))
-
-    align = spec['align']
-    if align == '<':
-        result = sign + body + padding
-    elif align == '>':
-        result = padding + sign + body
-    elif align == '=':
-        result = sign + padding + body
-    elif align == '^':
-        half = len(padding)//2
-        result = padding[:half] + sign + body + padding[half:]
-    else:
-        raise ValueError('Unrecognised alignment field')
-
-    # make sure that result is unicode if necessary
-    if spec['unicode']:
-        result = unicode(result)
-
-    return result
-
-def _group_lengths(grouping):
-    """Convert a localeconv-style grouping into a (possibly infinite)
-    iterable of integers representing group lengths.
-
-    """
-    # The result from localeconv()['grouping'], and the input to this
-    # function, should be a list of integers in one of the
-    # following three forms:
-    #
-    #   (1) an empty list, or
-    #   (2) nonempty list of positive integers + [0]
-    #   (3) list of positive integers + [locale.CHAR_MAX], or
-
-    from itertools import chain, repeat
-    if not grouping:
-        return []
-    elif grouping[-1] == 0 and len(grouping) >= 2:
-        return chain(grouping[:-1], repeat(grouping[-2]))
-    elif grouping[-1] == _locale.CHAR_MAX:
-        return grouping[:-1]
-    else:
-        raise ValueError('unrecognised format for grouping')
-
-def _insert_thousands_sep(digits, spec, min_width=1):
-    """Insert thousands separators into a digit string.
-
-    spec is a dictionary whose keys should include 'thousands_sep' and
-    'grouping'; typically it's the result of parsing the format
-    specifier using _parse_format_specifier.
-
-    The min_width keyword argument gives the minimum length of the
-    result, which will be padded on the left with zeros if necessary.
-
-    If necessary, the zero padding adds an extra '0' on the left to
-    avoid a leading thousands separator.  For example, inserting
-    commas every three digits in '123456', with min_width=8, gives
-    '0,123,456', even though that has length 9.
-
-    """
-
-    sep = spec['thousands_sep']
-    grouping = spec['grouping']
-
-    groups = []
-    for l in _group_lengths(grouping):
-        if l <= 0:
-            raise ValueError("group length should be positive")
-        # max(..., 1) forces at least 1 digit to the left of a separator
-        l = min(max(len(digits), min_width, 1), l)
-        groups.append('0'*(l - len(digits)) + digits[-l:])
-        digits = digits[:-l]
-        min_width -= l
-        if not digits and min_width <= 0:
-            break
-        min_width -= len(sep)
-    else:
-        l = max(len(digits), min_width, 1)
-        groups.append('0'*(l - len(digits)) + digits[-l:])
-    return sep.join(reversed(groups))
-
-def _format_sign(is_negative, spec):
-    """Determine sign character."""
-
-    if is_negative:
-        return '-'
-    elif spec['sign'] in ' +':
-        return spec['sign']
-    else:
-        return ''
-
-def _format_number(is_negative, intpart, fracpart, exp, spec):
-    """Format a number, given the following data:
-
-    is_negative: true if the number is negative, else false
-    intpart: string of digits that must appear before the decimal point
-    fracpart: string of digits that must come after the point
-    exp: exponent, as an integer
-    spec: dictionary resulting from parsing the format specifier
-
-    This function uses the information in spec to:
-      insert separators (decimal separator and thousands separators)
-      format the sign
-      format the exponent
-      add trailing '%' for the '%' type
-      zero-pad if necessary
-      fill and align if necessary
-    """
-
-    sign = _format_sign(is_negative, spec)
-
-    if fracpart:
-        fracpart = spec['decimal_point'] + fracpart
-
-    if exp != 0 or spec['type'] in 'eE':
-        echar = {'E': 'E', 'e': 'e', 'G': 'E', 'g': 'e'}[spec['type']]
-        fracpart += "{0}{1:+}".format(echar, exp)
-    if spec['type'] == '%':
-        fracpart += '%'
-
-    if spec['zeropad']:
-        min_width = spec['minimumwidth'] - len(fracpart) - len(sign)
-    else:
-        min_width = 0
-    intpart = _insert_thousands_sep(intpart, spec, min_width)
-
-    return _format_align(sign, intpart+fracpart, spec)
-
-
-##### Useful Constants (internal use only) ################################
-
-# Reusable defaults
-_Infinity = Decimal('Inf')
-_NegativeInfinity = Decimal('-Inf')
-_NaN = Decimal('NaN')
-_Zero = Decimal(0)
-_One = Decimal(1)
-_NegativeOne = Decimal(-1)
-
-# _SignedInfinity[sign] is infinity w/ that sign
-_SignedInfinity = (_Infinity, _NegativeInfinity)
-
-
-
-if __name__ == '__main__':
-    import doctest, sys
-    doctest.testmod(sys.modules[__name__])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/difflib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/difflib.py
deleted file mode 100644
index 878c1c6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/difflib.py
+++ /dev/null
@@ -1,2059 +0,0 @@
-#! /usr/bin/env python
-
-"""
-Module difflib -- helpers for computing deltas between objects.
-
-Function get_close_matches(word, possibilities, n=3, cutoff=0.6):
-    Use SequenceMatcher to return list of the best "good enough" matches.
-
-Function context_diff(a, b):
-    For two lists of strings, return a delta in context diff format.
-
-Function ndiff(a, b):
-    Return a delta: the difference between `a` and `b` (lists of strings).
-
-Function restore(delta, which):
-    Return one of the two sequences that generated an ndiff delta.
-
-Function unified_diff(a, b):
-    For two lists of strings, return a delta in unified diff format.
-
-Class SequenceMatcher:
-    A flexible class for comparing pairs of sequences of any type.
-
-Class Differ:
-    For producing human-readable deltas from sequences of lines of text.
-
-Class HtmlDiff:
-    For producing HTML side by side comparison with change highlights.
-"""
-
-__all__ = ['get_close_matches', 'ndiff', 'restore', 'SequenceMatcher',
-           'Differ','IS_CHARACTER_JUNK', 'IS_LINE_JUNK', 'context_diff',
-           'unified_diff', 'HtmlDiff', 'Match']
-
-import heapq
-from collections import namedtuple as _namedtuple
-from functools import reduce
-
-Match = _namedtuple('Match', 'a b size')
-
-def _calculate_ratio(matches, length):
-    if length:
-        return 2.0 * matches / length
-    return 1.0
-
-class SequenceMatcher:
-
-    """
-    SequenceMatcher is a flexible class for comparing pairs of sequences of
-    any type, so long as the sequence elements are hashable.  The basic
-    algorithm predates, and is a little fancier than, an algorithm
-    published in the late 1980's by Ratcliff and Obershelp under the
-    hyperbolic name "gestalt pattern matching".  The basic idea is to find
-    the longest contiguous matching subsequence that contains no "junk"
-    elements (R-O doesn't address junk).  The same idea is then applied
-    recursively to the pieces of the sequences to the left and to the right
-    of the matching subsequence.  This does not yield minimal edit
-    sequences, but does tend to yield matches that "look right" to people.
-
-    SequenceMatcher tries to compute a "human-friendly diff" between two
-    sequences.  Unlike e.g. UNIX(tm) diff, the fundamental notion is the
-    longest *contiguous* & junk-free matching subsequence.  That's what
-    catches peoples' eyes.  The Windows(tm) windiff has another interesting
-    notion, pairing up elements that appear uniquely in each sequence.
-    That, and the method here, appear to yield more intuitive difference
-    reports than does diff.  This method appears to be the least vulnerable
-    to synching up on blocks of "junk lines", though (like blank lines in
-    ordinary text files, or maybe "<P>" lines in HTML files).  That may be
-    because this is the only method of the 3 that has a *concept* of
-    "junk" <wink>.
-
-    Example, comparing two strings, and considering blanks to be "junk":
-
-    >>> s = SequenceMatcher(lambda x: x == " ",
-    ...                     "private Thread currentThread;",
-    ...                     "private volatile Thread currentThread;")
-    >>>
-
-    .ratio() returns a float in [0, 1], measuring the "similarity" of the
-    sequences.  As a rule of thumb, a .ratio() value over 0.6 means the
-    sequences are close matches:
-
-    >>> print round(s.ratio(), 3)
-    0.866
-    >>>
-
-    If you're only interested in where the sequences match,
-    .get_matching_blocks() is handy:
-
-    >>> for block in s.get_matching_blocks():
-    ...     print "a[%d] and b[%d] match for %d elements" % block
-    a[0] and b[0] match for 8 elements
-    a[8] and b[17] match for 21 elements
-    a[29] and b[38] match for 0 elements
-
-    Note that the last tuple returned by .get_matching_blocks() is always a
-    dummy, (len(a), len(b), 0), and this is the only case in which the last
-    tuple element (number of elements matched) is 0.
-
-    If you want to know how to change the first sequence into the second,
-    use .get_opcodes():
-
-    >>> for opcode in s.get_opcodes():
-    ...     print "%6s a[%d:%d] b[%d:%d]" % opcode
-     equal a[0:8] b[0:8]
-    insert a[8:8] b[8:17]
-     equal a[8:29] b[17:38]
-
-    See the Differ class for a fancy human-friendly file differencer, which
-    uses SequenceMatcher both to compare sequences of lines, and to compare
-    sequences of characters within similar (near-matching) lines.
-
-    See also function get_close_matches() in this module, which shows how
-    simple code building on SequenceMatcher can be used to do useful work.
-
-    Timing:  Basic R-O is cubic time worst case and quadratic time expected
-    case.  SequenceMatcher is quadratic time for the worst case and has
-    expected-case behavior dependent in a complicated way on how many
-    elements the sequences have in common; best case time is linear.
-
-    Methods:
-
-    __init__(isjunk=None, a='', b='')
-        Construct a SequenceMatcher.
-
-    set_seqs(a, b)
-        Set the two sequences to be compared.
-
-    set_seq1(a)
-        Set the first sequence to be compared.
-
-    set_seq2(b)
-        Set the second sequence to be compared.
-
-    find_longest_match(alo, ahi, blo, bhi)
-        Find longest matching block in a[alo:ahi] and b[blo:bhi].
-
-    get_matching_blocks()
-        Return list of triples describing matching subsequences.
-
-    get_opcodes()
-        Return list of 5-tuples describing how to turn a into b.
-
-    ratio()
-        Return a measure of the sequences' similarity (float in [0,1]).
-
-    quick_ratio()
-        Return an upper bound on .ratio() relatively quickly.
-
-    real_quick_ratio()
-        Return an upper bound on ratio() very quickly.
-    """
-
-    def __init__(self, isjunk=None, a='', b='', autojunk=True):
-        """Construct a SequenceMatcher.
-
-        Optional arg isjunk is None (the default), or a one-argument
-        function that takes a sequence element and returns true iff the
-        element is junk.  None is equivalent to passing "lambda x: 0", i.e.
-        no elements are considered to be junk.  For example, pass
-            lambda x: x in " \\t"
-        if you're comparing lines as sequences of characters, and don't
-        want to synch up on blanks or hard tabs.
-
-        Optional arg a is the first of two sequences to be compared.  By
-        default, an empty string.  The elements of a must be hashable.  See
-        also .set_seqs() and .set_seq1().
-
-        Optional arg b is the second of two sequences to be compared.  By
-        default, an empty string.  The elements of b must be hashable. See
-        also .set_seqs() and .set_seq2().
-
-        Optional arg autojunk should be set to False to disable the
-        "automatic junk heuristic" that treats popular elements as junk
-        (see module documentation for more information).
-        """
-
-        # Members:
-        # a
-        #      first sequence
-        # b
-        #      second sequence; differences are computed as "what do
-        #      we need to do to 'a' to change it into 'b'?"
-        # b2j
-        #      for x in b, b2j[x] is a list of the indices (into b)
-        #      at which x appears; junk elements do not appear
-        # fullbcount
-        #      for x in b, fullbcount[x] == the number of times x
-        #      appears in b; only materialized if really needed (used
-        #      only for computing quick_ratio())
-        # matching_blocks
-        #      a list of (i, j, k) triples, where a[i:i+k] == b[j:j+k];
-        #      ascending & non-overlapping in i and in j; terminated by
-        #      a dummy (len(a), len(b), 0) sentinel
-        # opcodes
-        #      a list of (tag, i1, i2, j1, j2) tuples, where tag is
-        #      one of
-        #          'replace'   a[i1:i2] should be replaced by b[j1:j2]
-        #          'delete'    a[i1:i2] should be deleted
-        #          'insert'    b[j1:j2] should be inserted
-        #          'equal'     a[i1:i2] == b[j1:j2]
-        # isjunk
-        #      a user-supplied function taking a sequence element and
-        #      returning true iff the element is "junk" -- this has
-        #      subtle but helpful effects on the algorithm, which I'll
-        #      get around to writing up someday <0.9 wink>.
-        #      DON'T USE!  Only __chain_b uses this.  Use isbjunk.
-        # isbjunk
-        #      for x in b, isbjunk(x) == isjunk(x) but much faster;
-        #      it's really the __contains__ method of a hidden dict.
-        #      DOES NOT WORK for x in a!
-        # isbpopular
-        #      for x in b, isbpopular(x) is true iff b is reasonably long
-        #      (at least 200 elements) and x accounts for more than 1 + 1% of
-        #      its elements (when autojunk is enabled).
-        #      DOES NOT WORK for x in a!
-
-        self.isjunk = isjunk
-        self.a = self.b = None
-        self.autojunk = autojunk
-        self.set_seqs(a, b)
-
-    def set_seqs(self, a, b):
-        """Set the two sequences to be compared.
-
-        >>> s = SequenceMatcher()
-        >>> s.set_seqs("abcd", "bcde")
-        >>> s.ratio()
-        0.75
-        """
-
-        self.set_seq1(a)
-        self.set_seq2(b)
-
-    def set_seq1(self, a):
-        """Set the first sequence to be compared.
-
-        The second sequence to be compared is not changed.
-
-        >>> s = SequenceMatcher(None, "abcd", "bcde")
-        >>> s.ratio()
-        0.75
-        >>> s.set_seq1("bcde")
-        >>> s.ratio()
-        1.0
-        >>>
-
-        SequenceMatcher computes and caches detailed information about the
-        second sequence, so if you want to compare one sequence S against
-        many sequences, use .set_seq2(S) once and call .set_seq1(x)
-        repeatedly for each of the other sequences.
-
-        See also set_seqs() and set_seq2().
-        """
-
-        if a is self.a:
-            return
-        self.a = a
-        self.matching_blocks = self.opcodes = None
-
-    def set_seq2(self, b):
-        """Set the second sequence to be compared.
-
-        The first sequence to be compared is not changed.
-
-        >>> s = SequenceMatcher(None, "abcd", "bcde")
-        >>> s.ratio()
-        0.75
-        >>> s.set_seq2("abcd")
-        >>> s.ratio()
-        1.0
-        >>>
-
-        SequenceMatcher computes and caches detailed information about the
-        second sequence, so if you want to compare one sequence S against
-        many sequences, use .set_seq2(S) once and call .set_seq1(x)
-        repeatedly for each of the other sequences.
-
-        See also set_seqs() and set_seq1().
-        """
-
-        if b is self.b:
-            return
-        self.b = b
-        self.matching_blocks = self.opcodes = None
-        self.fullbcount = None
-        self.__chain_b()
-
-    # For each element x in b, set b2j[x] to a list of the indices in
-    # b where x appears; the indices are in increasing order; note that
-    # the number of times x appears in b is len(b2j[x]) ...
-    # when self.isjunk is defined, junk elements don't show up in this
-    # map at all, which stops the central find_longest_match method
-    # from starting any matching block at a junk element ...
-    # also creates the fast isbjunk function ...
-    # b2j also does not contain entries for "popular" elements, meaning
-    # elements that account for more than 1 + 1% of the total elements, and
-    # when the sequence is reasonably large (>= 200 elements); this can
-    # be viewed as an adaptive notion of semi-junk, and yields an enormous
-    # speedup when, e.g., comparing program files with hundreds of
-    # instances of "return NULL;" ...
-    # note that this is only called when b changes; so for cross-product
-    # kinds of matches, it's best to call set_seq2 once, then set_seq1
-    # repeatedly
-
-    def __chain_b(self):
-        # Because isjunk is a user-defined (not C) function, and we test
-        # for junk a LOT, it's important to minimize the number of calls.
-        # Before the tricks described here, __chain_b was by far the most
-        # time-consuming routine in the whole module!  If anyone sees
-        # Jim Roskind, thank him again for profile.py -- I never would
-        # have guessed that.
-        # The first trick is to build b2j ignoring the possibility
-        # of junk.  I.e., we don't call isjunk at all yet.  Throwing
-        # out the junk later is much cheaper than building b2j "right"
-        # from the start.
-        b = self.b
-        self.b2j = b2j = {}
-
-        for i, elt in enumerate(b):
-            indices = b2j.setdefault(elt, [])
-            indices.append(i)
-
-        # Purge junk elements
-        junk = set()
-        isjunk = self.isjunk
-        if isjunk:
-            for elt in list(b2j.keys()):  # using list() since b2j is modified
-                if isjunk(elt):
-                    junk.add(elt)
-                    del b2j[elt]
-
-        # Purge popular elements that are not junk
-        popular = set()
-        n = len(b)
-        if self.autojunk and n >= 200:
-            ntest = n // 100 + 1
-            for elt, idxs in list(b2j.items()):
-                if len(idxs) > ntest:
-                    popular.add(elt)
-                    del b2j[elt]
-
-        # Now for x in b, isjunk(x) == x in junk, but the latter is much faster.
-        # Sicne the number of *unique* junk elements is probably small, the
-        # memory burden of keeping this set alive is likely trivial compared to
-        # the size of b2j.
-        self.isbjunk = junk.__contains__
-        self.isbpopular = popular.__contains__
-
-    def find_longest_match(self, alo, ahi, blo, bhi):
-        """Find longest matching block in a[alo:ahi] and b[blo:bhi].
-
-        If isjunk is not defined:
-
-        Return (i,j,k) such that a[i:i+k] is equal to b[j:j+k], where
-            alo <= i <= i+k <= ahi
-            blo <= j <= j+k <= bhi
-        and for all (i',j',k') meeting those conditions,
-            k >= k'
-            i <= i'
-            and if i == i', j <= j'
-
-        In other words, of all maximal matching blocks, return one that
-        starts earliest in a, and of all those maximal matching blocks that
-        start earliest in a, return the one that starts earliest in b.
-
-        >>> s = SequenceMatcher(None, " abcd", "abcd abcd")
-        >>> s.find_longest_match(0, 5, 0, 9)
-        Match(a=0, b=4, size=5)
-
-        If isjunk is defined, first the longest matching block is
-        determined as above, but with the additional restriction that no
-        junk element appears in the block.  Then that block is extended as
-        far as possible by matching (only) junk elements on both sides.  So
-        the resulting block never matches on junk except as identical junk
-        happens to be adjacent to an "interesting" match.
-
-        Here's the same example as before, but considering blanks to be
-        junk.  That prevents " abcd" from matching the " abcd" at the tail
-        end of the second sequence directly.  Instead only the "abcd" can
-        match, and matches the leftmost "abcd" in the second sequence:
-
-        >>> s = SequenceMatcher(lambda x: x==" ", " abcd", "abcd abcd")
-        >>> s.find_longest_match(0, 5, 0, 9)
-        Match(a=1, b=0, size=4)
-
-        If no blocks match, return (alo, blo, 0).
-
-        >>> s = SequenceMatcher(None, "ab", "c")
-        >>> s.find_longest_match(0, 2, 0, 1)
-        Match(a=0, b=0, size=0)
-        """
-
-        # CAUTION:  stripping common prefix or suffix would be incorrect.
-        # E.g.,
-        #    ab
-        #    acab
-        # Longest matching block is "ab", but if common prefix is
-        # stripped, it's "a" (tied with "b").  UNIX(tm) diff does so
-        # strip, so ends up claiming that ab is changed to acab by
-        # inserting "ca" in the middle.  That's minimal but unintuitive:
-        # "it's obvious" that someone inserted "ac" at the front.
-        # Windiff ends up at the same place as diff, but by pairing up
-        # the unique 'b's and then matching the first two 'a's.
-
-        a, b, b2j, isbjunk = self.a, self.b, self.b2j, self.isbjunk
-        besti, bestj, bestsize = alo, blo, 0
-        # find longest junk-free match
-        # during an iteration of the loop, j2len[j] = length of longest
-        # junk-free match ending with a[i-1] and b[j]
-        j2len = {}
-        nothing = []
-        for i in xrange(alo, ahi):
-            # look at all instances of a[i] in b; note that because
-            # b2j has no junk keys, the loop is skipped if a[i] is junk
-            j2lenget = j2len.get
-            newj2len = {}
-            for j in b2j.get(a[i], nothing):
-                # a[i] matches b[j]
-                if j < blo:
-                    continue
-                if j >= bhi:
-                    break
-                k = newj2len[j] = j2lenget(j-1, 0) + 1
-                if k > bestsize:
-                    besti, bestj, bestsize = i-k+1, j-k+1, k
-            j2len = newj2len
-
-        # Extend the best by non-junk elements on each end.  In particular,
-        # "popular" non-junk elements aren't in b2j, which greatly speeds
-        # the inner loop above, but also means "the best" match so far
-        # doesn't contain any junk *or* popular non-junk elements.
-        while besti > alo and bestj > blo and \
-              not isbjunk(b[bestj-1]) and \
-              a[besti-1] == b[bestj-1]:
-            besti, bestj, bestsize = besti-1, bestj-1, bestsize+1
-        while besti+bestsize < ahi and bestj+bestsize < bhi and \
-              not isbjunk(b[bestj+bestsize]) and \
-              a[besti+bestsize] == b[bestj+bestsize]:
-            bestsize += 1
-
-        # Now that we have a wholly interesting match (albeit possibly
-        # empty!), we may as well suck up the matching junk on each
-        # side of it too.  Can't think of a good reason not to, and it
-        # saves post-processing the (possibly considerable) expense of
-        # figuring out what to do with it.  In the case of an empty
-        # interesting match, this is clearly the right thing to do,
-        # because no other kind of match is possible in the regions.
-        while besti > alo and bestj > blo and \
-              isbjunk(b[bestj-1]) and \
-              a[besti-1] == b[bestj-1]:
-            besti, bestj, bestsize = besti-1, bestj-1, bestsize+1
-        while besti+bestsize < ahi and bestj+bestsize < bhi and \
-              isbjunk(b[bestj+bestsize]) and \
-              a[besti+bestsize] == b[bestj+bestsize]:
-            bestsize = bestsize + 1
-
-        return Match(besti, bestj, bestsize)
-
-    def get_matching_blocks(self):
-        """Return list of triples describing matching subsequences.
-
-        Each triple is of the form (i, j, n), and means that
-        a[i:i+n] == b[j:j+n].  The triples are monotonically increasing in
-        i and in j.  New in Python 2.5, it's also guaranteed that if
-        (i, j, n) and (i', j', n') are adjacent triples in the list, and
-        the second is not the last triple in the list, then i+n != i' or
-        j+n != j'.  IOW, adjacent triples never describe adjacent equal
-        blocks.
-
-        The last triple is a dummy, (len(a), len(b), 0), and is the only
-        triple with n==0.
-
-        >>> s = SequenceMatcher(None, "abxcd", "abcd")
-        >>> s.get_matching_blocks()
-        [Match(a=0, b=0, size=2), Match(a=3, b=2, size=2), Match(a=5, b=4, size=0)]
-        """
-
-        if self.matching_blocks is not None:
-            return self.matching_blocks
-        la, lb = len(self.a), len(self.b)
-
-        # This is most naturally expressed as a recursive algorithm, but
-        # at least one user bumped into extreme use cases that exceeded
-        # the recursion limit on their box.  So, now we maintain a list
-        # ('queue`) of blocks we still need to look at, and append partial
-        # results to `matching_blocks` in a loop; the matches are sorted
-        # at the end.
-        queue = [(0, la, 0, lb)]
-        matching_blocks = []
-        while queue:
-            alo, ahi, blo, bhi = queue.pop()
-            i, j, k = x = self.find_longest_match(alo, ahi, blo, bhi)
-            # a[alo:i] vs b[blo:j] unknown
-            # a[i:i+k] same as b[j:j+k]
-            # a[i+k:ahi] vs b[j+k:bhi] unknown
-            if k:   # if k is 0, there was no matching block
-                matching_blocks.append(x)
-                if alo < i and blo < j:
-                    queue.append((alo, i, blo, j))
-                if i+k < ahi and j+k < bhi:
-                    queue.append((i+k, ahi, j+k, bhi))
-        matching_blocks.sort()
-
-        # It's possible that we have adjacent equal blocks in the
-        # matching_blocks list now.  Starting with 2.5, this code was added
-        # to collapse them.
-        i1 = j1 = k1 = 0
-        non_adjacent = []
-        for i2, j2, k2 in matching_blocks:
-            # Is this block adjacent to i1, j1, k1?
-            if i1 + k1 == i2 and j1 + k1 == j2:
-                # Yes, so collapse them -- this just increases the length of
-                # the first block by the length of the second, and the first
-                # block so lengthened remains the block to compare against.
-                k1 += k2
-            else:
-                # Not adjacent.  Remember the first block (k1==0 means it's
-                # the dummy we started with), and make the second block the
-                # new block to compare against.
-                if k1:
-                    non_adjacent.append((i1, j1, k1))
-                i1, j1, k1 = i2, j2, k2
-        if k1:
-            non_adjacent.append((i1, j1, k1))
-
-        non_adjacent.append( (la, lb, 0) )
-        self.matching_blocks = non_adjacent
-        return map(Match._make, self.matching_blocks)
-
-    def get_opcodes(self):
-        """Return list of 5-tuples describing how to turn a into b.
-
-        Each tuple is of the form (tag, i1, i2, j1, j2).  The first tuple
-        has i1 == j1 == 0, and remaining tuples have i1 == the i2 from the
-        tuple preceding it, and likewise for j1 == the previous j2.
-
-        The tags are strings, with these meanings:
-
-        'replace':  a[i1:i2] should be replaced by b[j1:j2]
-        'delete':   a[i1:i2] should be deleted.
-                    Note that j1==j2 in this case.
-        'insert':   b[j1:j2] should be inserted at a[i1:i1].
-                    Note that i1==i2 in this case.
-        'equal':    a[i1:i2] == b[j1:j2]
-
-        >>> a = "qabxcd"
-        >>> b = "abycdf"
-        >>> s = SequenceMatcher(None, a, b)
-        >>> for tag, i1, i2, j1, j2 in s.get_opcodes():
-        ...    print ("%7s a[%d:%d] (%s) b[%d:%d] (%s)" %
-        ...           (tag, i1, i2, a[i1:i2], j1, j2, b[j1:j2]))
-         delete a[0:1] (q) b[0:0] ()
-          equal a[1:3] (ab) b[0:2] (ab)
-        replace a[3:4] (x) b[2:3] (y)
-          equal a[4:6] (cd) b[3:5] (cd)
-         insert a[6:6] () b[5:6] (f)
-        """
-
-        if self.opcodes is not None:
-            return self.opcodes
-        i = j = 0
-        self.opcodes = answer = []
-        for ai, bj, size in self.get_matching_blocks():
-            # invariant:  we've pumped out correct diffs to change
-            # a[:i] into b[:j], and the next matching block is
-            # a[ai:ai+size] == b[bj:bj+size].  So we need to pump
-            # out a diff to change a[i:ai] into b[j:bj], pump out
-            # the matching block, and move (i,j) beyond the match
-            tag = ''
-            if i < ai and j < bj:
-                tag = 'replace'
-            elif i < ai:
-                tag = 'delete'
-            elif j < bj:
-                tag = 'insert'
-            if tag:
-                answer.append( (tag, i, ai, j, bj) )
-            i, j = ai+size, bj+size
-            # the list of matching blocks is terminated by a
-            # sentinel with size 0
-            if size:
-                answer.append( ('equal', ai, i, bj, j) )
-        return answer
-
-    def get_grouped_opcodes(self, n=3):
-        """ Isolate change clusters by eliminating ranges with no changes.
-
-        Return a generator of groups with upto n lines of context.
-        Each group is in the same format as returned by get_opcodes().
-
-        >>> from pprint import pprint
-        >>> a = map(str, range(1,40))
-        >>> b = a[:]
-        >>> b[8:8] = ['i']     # Make an insertion
-        >>> b[20] += 'x'       # Make a replacement
-        >>> b[23:28] = []      # Make a deletion
-        >>> b[30] += 'y'       # Make another replacement
-        >>> pprint(list(SequenceMatcher(None,a,b).get_grouped_opcodes()))
-        [[('equal', 5, 8, 5, 8), ('insert', 8, 8, 8, 9), ('equal', 8, 11, 9, 12)],
-         [('equal', 16, 19, 17, 20),
-          ('replace', 19, 20, 20, 21),
-          ('equal', 20, 22, 21, 23),
-          ('delete', 22, 27, 23, 23),
-          ('equal', 27, 30, 23, 26)],
-         [('equal', 31, 34, 27, 30),
-          ('replace', 34, 35, 30, 31),
-          ('equal', 35, 38, 31, 34)]]
-        """
-
-        codes = self.get_opcodes()
-        if not codes:
-            codes = [("equal", 0, 1, 0, 1)]
-        # Fixup leading and trailing groups if they show no changes.
-        if codes[0][0] == 'equal':
-            tag, i1, i2, j1, j2 = codes[0]
-            codes[0] = tag, max(i1, i2-n), i2, max(j1, j2-n), j2
-        if codes[-1][0] == 'equal':
-            tag, i1, i2, j1, j2 = codes[-1]
-            codes[-1] = tag, i1, min(i2, i1+n), j1, min(j2, j1+n)
-
-        nn = n + n
-        group = []
-        for tag, i1, i2, j1, j2 in codes:
-            # End the current group and start a new one whenever
-            # there is a large range with no changes.
-            if tag == 'equal' and i2-i1 > nn:
-                group.append((tag, i1, min(i2, i1+n), j1, min(j2, j1+n)))
-                yield group
-                group = []
-                i1, j1 = max(i1, i2-n), max(j1, j2-n)
-            group.append((tag, i1, i2, j1 ,j2))
-        if group and not (len(group)==1 and group[0][0] == 'equal'):
-            yield group
-
-    def ratio(self):
-        """Return a measure of the sequences' similarity (float in [0,1]).
-
-        Where T is the total number of elements in both sequences, and
-        M is the number of matches, this is 2.0*M / T.
-        Note that this is 1 if the sequences are identical, and 0 if
-        they have nothing in common.
-
-        .ratio() is expensive to compute if you haven't already computed
-        .get_matching_blocks() or .get_opcodes(), in which case you may
-        want to try .quick_ratio() or .real_quick_ratio() first to get an
-        upper bound.
-
-        >>> s = SequenceMatcher(None, "abcd", "bcde")
-        >>> s.ratio()
-        0.75
-        >>> s.quick_ratio()
-        0.75
-        >>> s.real_quick_ratio()
-        1.0
-        """
-
-        matches = reduce(lambda sum, triple: sum + triple[-1],
-                         self.get_matching_blocks(), 0)
-        return _calculate_ratio(matches, len(self.a) + len(self.b))
-
-    def quick_ratio(self):
-        """Return an upper bound on ratio() relatively quickly.
-
-        This isn't defined beyond that it is an upper bound on .ratio(), and
-        is faster to compute.
-        """
-
-        # viewing a and b as multisets, set matches to the cardinality
-        # of their intersection; this counts the number of matches
-        # without regard to order, so is clearly an upper bound
-        if self.fullbcount is None:
-            self.fullbcount = fullbcount = {}
-            for elt in self.b:
-                fullbcount[elt] = fullbcount.get(elt, 0) + 1
-        fullbcount = self.fullbcount
-        # avail[x] is the number of times x appears in 'b' less the
-        # number of times we've seen it in 'a' so far ... kinda
-        avail = {}
-        availhas, matches = avail.__contains__, 0
-        for elt in self.a:
-            if availhas(elt):
-                numb = avail[elt]
-            else:
-                numb = fullbcount.get(elt, 0)
-            avail[elt] = numb - 1
-            if numb > 0:
-                matches = matches + 1
-        return _calculate_ratio(matches, len(self.a) + len(self.b))
-
-    def real_quick_ratio(self):
-        """Return an upper bound on ratio() very quickly.
-
-        This isn't defined beyond that it is an upper bound on .ratio(), and
-        is faster to compute than either .ratio() or .quick_ratio().
-        """
-
-        la, lb = len(self.a), len(self.b)
-        # can't have more matches than the number of elements in the
-        # shorter sequence
-        return _calculate_ratio(min(la, lb), la + lb)
-
-def get_close_matches(word, possibilities, n=3, cutoff=0.6):
-    """Use SequenceMatcher to return list of the best "good enough" matches.
-
-    word is a sequence for which close matches are desired (typically a
-    string).
-
-    possibilities is a list of sequences against which to match word
-    (typically a list of strings).
-
-    Optional arg n (default 3) is the maximum number of close matches to
-    return.  n must be > 0.
-
-    Optional arg cutoff (default 0.6) is a float in [0, 1].  Possibilities
-    that don't score at least that similar to word are ignored.
-
-    The best (no more than n) matches among the possibilities are returned
-    in a list, sorted by similarity score, most similar first.
-
-    >>> get_close_matches("appel", ["ape", "apple", "peach", "puppy"])
-    ['apple', 'ape']
-    >>> import keyword as _keyword
-    >>> get_close_matches("wheel", _keyword.kwlist)
-    ['while']
-    >>> get_close_matches("apple", _keyword.kwlist)
-    []
-    >>> get_close_matches("accept", _keyword.kwlist)
-    ['except']
-    """
-
-    if not n >  0:
-        raise ValueError("n must be > 0: %r" % (n,))
-    if not 0.0 <= cutoff <= 1.0:
-        raise ValueError("cutoff must be in [0.0, 1.0]: %r" % (cutoff,))
-    result = []
-    s = SequenceMatcher()
-    s.set_seq2(word)
-    for x in possibilities:
-        s.set_seq1(x)
-        if s.real_quick_ratio() >= cutoff and \
-           s.quick_ratio() >= cutoff and \
-           s.ratio() >= cutoff:
-            result.append((s.ratio(), x))
-
-    # Move the best scorers to head of list
-    result = heapq.nlargest(n, result)
-    # Strip scores for the best n matches
-    return [x for score, x in result]
-
-def _count_leading(line, ch):
-    """
-    Return number of `ch` characters at the start of `line`.
-
-    Example:
-
-    >>> _count_leading('   abc', ' ')
-    3
-    """
-
-    i, n = 0, len(line)
-    while i < n and line[i] == ch:
-        i += 1
-    return i
-
-class Differ:
-    r"""
-    Differ is a class for comparing sequences of lines of text, and
-    producing human-readable differences or deltas.  Differ uses
-    SequenceMatcher both to compare sequences of lines, and to compare
-    sequences of characters within similar (near-matching) lines.
-
-    Each line of a Differ delta begins with a two-letter code:
-
-        '- '    line unique to sequence 1
-        '+ '    line unique to sequence 2
-        '  '    line common to both sequences
-        '? '    line not present in either input sequence
-
-    Lines beginning with '? ' attempt to guide the eye to intraline
-    differences, and were not present in either input sequence.  These lines
-    can be confusing if the sequences contain tab characters.
-
-    Note that Differ makes no claim to produce a *minimal* diff.  To the
-    contrary, minimal diffs are often counter-intuitive, because they synch
-    up anywhere possible, sometimes accidental matches 100 pages apart.
-    Restricting synch points to contiguous matches preserves some notion of
-    locality, at the occasional cost of producing a longer diff.
-
-    Example: Comparing two texts.
-
-    First we set up the texts, sequences of individual single-line strings
-    ending with newlines (such sequences can also be obtained from the
-    `readlines()` method of file-like objects):
-
-    >>> text1 = '''  1. Beautiful is better than ugly.
-    ...   2. Explicit is better than implicit.
-    ...   3. Simple is better than complex.
-    ...   4. Complex is better than complicated.
-    ... '''.splitlines(1)
-    >>> len(text1)
-    4
-    >>> text1[0][-1]
-    '\n'
-    >>> text2 = '''  1. Beautiful is better than ugly.
-    ...   3.   Simple is better than complex.
-    ...   4. Complicated is better than complex.
-    ...   5. Flat is better than nested.
-    ... '''.splitlines(1)
-
-    Next we instantiate a Differ object:
-
-    >>> d = Differ()
-
-    Note that when instantiating a Differ object we may pass functions to
-    filter out line and character 'junk'.  See Differ.__init__ for details.
-
-    Finally, we compare the two:
-
-    >>> result = list(d.compare(text1, text2))
-
-    'result' is a list of strings, so let's pretty-print it:
-
-    >>> from pprint import pprint as _pprint
-    >>> _pprint(result)
-    ['    1. Beautiful is better than ugly.\n',
-     '-   2. Explicit is better than implicit.\n',
-     '-   3. Simple is better than complex.\n',
-     '+   3.   Simple is better than complex.\n',
-     '?     ++\n',
-     '-   4. Complex is better than complicated.\n',
-     '?            ^                     ---- ^\n',
-     '+   4. Complicated is better than complex.\n',
-     '?           ++++ ^                      ^\n',
-     '+   5. Flat is better than nested.\n']
-
-    As a single multi-line string it looks like this:
-
-    >>> print ''.join(result),
-        1. Beautiful is better than ugly.
-    -   2. Explicit is better than implicit.
-    -   3. Simple is better than complex.
-    +   3.   Simple is better than complex.
-    ?     ++
-    -   4. Complex is better than complicated.
-    ?            ^                     ---- ^
-    +   4. Complicated is better than complex.
-    ?           ++++ ^                      ^
-    +   5. Flat is better than nested.
-
-    Methods:
-
-    __init__(linejunk=None, charjunk=None)
-        Construct a text differencer, with optional filters.
-
-    compare(a, b)
-        Compare two sequences of lines; generate the resulting delta.
-    """
-
-    def __init__(self, linejunk=None, charjunk=None):
-        """
-        Construct a text differencer, with optional filters.
-
-        The two optional keyword parameters are for filter functions:
-
-        - `linejunk`: A function that should accept a single string argument,
-          and return true iff the string is junk. The module-level function
-          `IS_LINE_JUNK` may be used to filter out lines without visible
-          characters, except for at most one splat ('#').  It is recommended
-          to leave linejunk None; as of Python 2.3, the underlying
-          SequenceMatcher class has grown an adaptive notion of "noise" lines
-          that's better than any static definition the author has ever been
-          able to craft.
-
-        - `charjunk`: A function that should accept a string of length 1. The
-          module-level function `IS_CHARACTER_JUNK` may be used to filter out
-          whitespace characters (a blank or tab; **note**: bad idea to include
-          newline in this!).  Use of IS_CHARACTER_JUNK is recommended.
-        """
-
-        self.linejunk = linejunk
-        self.charjunk = charjunk
-
-    def compare(self, a, b):
-        r"""
-        Compare two sequences of lines; generate the resulting delta.
-
-        Each sequence must contain individual single-line strings ending with
-        newlines. Such sequences can be obtained from the `readlines()` method
-        of file-like objects.  The delta generated also consists of newline-
-        terminated strings, ready to be printed as-is via the writeline()
-        method of a file-like object.
-
-        Example:
-
-        >>> print ''.join(Differ().compare('one\ntwo\nthree\n'.splitlines(1),
-        ...                                'ore\ntree\nemu\n'.splitlines(1))),
-        - one
-        ?  ^
-        + ore
-        ?  ^
-        - two
-        - three
-        ?  -
-        + tree
-        + emu
-        """
-
-        cruncher = SequenceMatcher(self.linejunk, a, b)
-        for tag, alo, ahi, blo, bhi in cruncher.get_opcodes():
-            if tag == 'replace':
-                g = self._fancy_replace(a, alo, ahi, b, blo, bhi)
-            elif tag == 'delete':
-                g = self._dump('-', a, alo, ahi)
-            elif tag == 'insert':
-                g = self._dump('+', b, blo, bhi)
-            elif tag == 'equal':
-                g = self._dump(' ', a, alo, ahi)
-            else:
-                raise ValueError, 'unknown tag %r' % (tag,)
-
-            for line in g:
-                yield line
-
-    def _dump(self, tag, x, lo, hi):
-        """Generate comparison results for a same-tagged range."""
-        for i in xrange(lo, hi):
-            yield '%s %s' % (tag, x[i])
-
-    def _plain_replace(self, a, alo, ahi, b, blo, bhi):
-        assert alo < ahi and blo < bhi
-        # dump the shorter block first -- reduces the burden on short-term
-        # memory if the blocks are of very different sizes
-        if bhi - blo < ahi - alo:
-            first  = self._dump('+', b, blo, bhi)
-            second = self._dump('-', a, alo, ahi)
-        else:
-            first  = self._dump('-', a, alo, ahi)
-            second = self._dump('+', b, blo, bhi)
-
-        for g in first, second:
-            for line in g:
-                yield line
-
-    def _fancy_replace(self, a, alo, ahi, b, blo, bhi):
-        r"""
-        When replacing one block of lines with another, search the blocks
-        for *similar* lines; the best-matching pair (if any) is used as a
-        synch point, and intraline difference marking is done on the
-        similar pair. Lots of work, but often worth it.
-
-        Example:
-
-        >>> d = Differ()
-        >>> results = d._fancy_replace(['abcDefghiJkl\n'], 0, 1,
-        ...                            ['abcdefGhijkl\n'], 0, 1)
-        >>> print ''.join(results),
-        - abcDefghiJkl
-        ?    ^  ^  ^
-        + abcdefGhijkl
-        ?    ^  ^  ^
-        """
-
-        # don't synch up unless the lines have a similarity score of at
-        # least cutoff; best_ratio tracks the best score seen so far
-        best_ratio, cutoff = 0.74, 0.75
-        cruncher = SequenceMatcher(self.charjunk)
-        eqi, eqj = None, None   # 1st indices of equal lines (if any)
-
-        # search for the pair that matches best without being identical
-        # (identical lines must be junk lines, & we don't want to synch up
-        # on junk -- unless we have to)
-        for j in xrange(blo, bhi):
-            bj = b[j]
-            cruncher.set_seq2(bj)
-            for i in xrange(alo, ahi):
-                ai = a[i]
-                if ai == bj:
-                    if eqi is None:
-                        eqi, eqj = i, j
-                    continue
-                cruncher.set_seq1(ai)
-                # computing similarity is expensive, so use the quick
-                # upper bounds first -- have seen this speed up messy
-                # compares by a factor of 3.
-                # note that ratio() is only expensive to compute the first
-                # time it's called on a sequence pair; the expensive part
-                # of the computation is cached by cruncher
-                if cruncher.real_quick_ratio() > best_ratio and \
-                      cruncher.quick_ratio() > best_ratio and \
-                      cruncher.ratio() > best_ratio:
-                    best_ratio, best_i, best_j = cruncher.ratio(), i, j
-        if best_ratio < cutoff:
-            # no non-identical "pretty close" pair
-            if eqi is None:
-                # no identical pair either -- treat it as a straight replace
-                for line in self._plain_replace(a, alo, ahi, b, blo, bhi):
-                    yield line
-                return
-            # no close pair, but an identical pair -- synch up on that
-            best_i, best_j, best_ratio = eqi, eqj, 1.0
-        else:
-            # there's a close pair, so forget the identical pair (if any)
-            eqi = None
-
-        # a[best_i] very similar to b[best_j]; eqi is None iff they're not
-        # identical
-
-        # pump out diffs from before the synch point
-        for line in self._fancy_helper(a, alo, best_i, b, blo, best_j):
-            yield line
-
-        # do intraline marking on the synch pair
-        aelt, belt = a[best_i], b[best_j]
-        if eqi is None:
-            # pump out a '-', '?', '+', '?' quad for the synched lines
-            atags = btags = ""
-            cruncher.set_seqs(aelt, belt)
-            for tag, ai1, ai2, bj1, bj2 in cruncher.get_opcodes():
-                la, lb = ai2 - ai1, bj2 - bj1
-                if tag == 'replace':
-                    atags += '^' * la
-                    btags += '^' * lb
-                elif tag == 'delete':
-                    atags += '-' * la
-                elif tag == 'insert':
-                    btags += '+' * lb
-                elif tag == 'equal':
-                    atags += ' ' * la
-                    btags += ' ' * lb
-                else:
-                    raise ValueError, 'unknown tag %r' % (tag,)
-            for line in self._qformat(aelt, belt, atags, btags):
-                yield line
-        else:
-            # the synch pair is identical
-            yield '  ' + aelt
-
-        # pump out diffs from after the synch point
-        for line in self._fancy_helper(a, best_i+1, ahi, b, best_j+1, bhi):
-            yield line
-
-    def _fancy_helper(self, a, alo, ahi, b, blo, bhi):
-        g = []
-        if alo < ahi:
-            if blo < bhi:
-                g = self._fancy_replace(a, alo, ahi, b, blo, bhi)
-            else:
-                g = self._dump('-', a, alo, ahi)
-        elif blo < bhi:
-            g = self._dump('+', b, blo, bhi)
-
-        for line in g:
-            yield line
-
-    def _qformat(self, aline, bline, atags, btags):
-        r"""
-        Format "?" output and deal with leading tabs.
-
-        Example:
-
-        >>> d = Differ()
-        >>> results = d._qformat('\tabcDefghiJkl\n', '\tabcdefGhijkl\n',
-        ...                      '  ^ ^  ^      ', '  ^ ^  ^      ')
-        >>> for line in results: print repr(line)
-        ...
-        '- \tabcDefghiJkl\n'
-        '? \t ^ ^  ^\n'
-        '+ \tabcdefGhijkl\n'
-        '? \t ^ ^  ^\n'
-        """
-
-        # Can hurt, but will probably help most of the time.
-        common = min(_count_leading(aline, "\t"),
-                     _count_leading(bline, "\t"))
-        common = min(common, _count_leading(atags[:common], " "))
-        common = min(common, _count_leading(btags[:common], " "))
-        atags = atags[common:].rstrip()
-        btags = btags[common:].rstrip()
-
-        yield "- " + aline
-        if atags:
-            yield "? %s%s\n" % ("\t" * common, atags)
-
-        yield "+ " + bline
-        if btags:
-            yield "? %s%s\n" % ("\t" * common, btags)
-
-# With respect to junk, an earlier version of ndiff simply refused to
-# *start* a match with a junk element.  The result was cases like this:
-#     before: private Thread currentThread;
-#     after:  private volatile Thread currentThread;
-# If you consider whitespace to be junk, the longest contiguous match
-# not starting with junk is "e Thread currentThread".  So ndiff reported
-# that "e volatil" was inserted between the 't' and the 'e' in "private".
-# While an accurate view, to people that's absurd.  The current version
-# looks for matching blocks that are entirely junk-free, then extends the
-# longest one of those as far as possible but only with matching junk.
-# So now "currentThread" is matched, then extended to suck up the
-# preceding blank; then "private" is matched, and extended to suck up the
-# following blank; then "Thread" is matched; and finally ndiff reports
-# that "volatile " was inserted before "Thread".  The only quibble
-# remaining is that perhaps it was really the case that " volatile"
-# was inserted after "private".  I can live with that <wink>.
-
-import re
-
-def IS_LINE_JUNK(line, pat=re.compile(r"\s*#?\s*$").match):
-    r"""
-    Return 1 for ignorable line: iff `line` is blank or contains a single '#'.
-
-    Examples:
-
-    >>> IS_LINE_JUNK('\n')
-    True
-    >>> IS_LINE_JUNK('  #   \n')
-    True
-    >>> IS_LINE_JUNK('hello\n')
-    False
-    """
-
-    return pat(line) is not None
-
-def IS_CHARACTER_JUNK(ch, ws=" \t"):
-    r"""
-    Return 1 for ignorable character: iff `ch` is a space or tab.
-
-    Examples:
-
-    >>> IS_CHARACTER_JUNK(' ')
-    True
-    >>> IS_CHARACTER_JUNK('\t')
-    True
-    >>> IS_CHARACTER_JUNK('\n')
-    False
-    >>> IS_CHARACTER_JUNK('x')
-    False
-    """
-
-    return ch in ws
-
-
-########################################################################
-###  Unified Diff
-########################################################################
-
-def _format_range_unified(start, stop):
-    'Convert range to the "ed" format'
-    # Per the diff spec at http://www.unix.org/single_unix_specification/
-    beginning = start + 1     # lines start numbering with one
-    length = stop - start
-    if length == 1:
-        return '{}'.format(beginning)
-    if not length:
-        beginning -= 1        # empty ranges begin at line just before the range
-    return '{},{}'.format(beginning, length)
-
-def unified_diff(a, b, fromfile='', tofile='', fromfiledate='',
-                 tofiledate='', n=3, lineterm='\n'):
-    r"""
-    Compare two sequences of lines; generate the delta as a unified diff.
-
-    Unified diffs are a compact way of showing line changes and a few
-    lines of context.  The number of context lines is set by 'n' which
-    defaults to three.
-
-    By default, the diff control lines (those with ---, +++, or @@) are
-    created with a trailing newline.  This is helpful so that inputs
-    created from file.readlines() result in diffs that are suitable for
-    file.writelines() since both the inputs and outputs have trailing
-    newlines.
-
-    For inputs that do not have trailing newlines, set the lineterm
-    argument to "" so that the output will be uniformly newline free.
-
-    The unidiff format normally has a header for filenames and modification
-    times.  Any or all of these may be specified using strings for
-    'fromfile', 'tofile', 'fromfiledate', and 'tofiledate'.
-    The modification times are normally expressed in the ISO 8601 format.
-
-    Example:
-
-    >>> for line in unified_diff('one two three four'.split(),
-    ...             'zero one tree four'.split(), 'Original', 'Current',
-    ...             '2005-01-26 23:30:50', '2010-04-02 10:20:52',
-    ...             lineterm=''):
-    ...     print line                  # doctest: +NORMALIZE_WHITESPACE
-    --- Original        2005-01-26 23:30:50
-    +++ Current         2010-04-02 10:20:52
-    @@ -1,4 +1,4 @@
-    +zero
-     one
-    -two
-    -three
-    +tree
-     four
-    """
-
-    started = False
-    for group in SequenceMatcher(None,a,b).get_grouped_opcodes(n):
-        if not started:
-            started = True
-            fromdate = '\t{}'.format(fromfiledate) if fromfiledate else ''
-            todate = '\t{}'.format(tofiledate) if tofiledate else ''
-            yield '--- {}{}{}'.format(fromfile, fromdate, lineterm)
-            yield '+++ {}{}{}'.format(tofile, todate, lineterm)
-
-        first, last = group[0], group[-1]
-        file1_range = _format_range_unified(first[1], last[2])
-        file2_range = _format_range_unified(first[3], last[4])
-        yield '@@ -{} +{} @@{}'.format(file1_range, file2_range, lineterm)
-
-        for tag, i1, i2, j1, j2 in group:
-            if tag == 'equal':
-                for line in a[i1:i2]:
-                    yield ' ' + line
-                continue
-            if tag in ('replace', 'delete'):
-                for line in a[i1:i2]:
-                    yield '-' + line
-            if tag in ('replace', 'insert'):
-                for line in b[j1:j2]:
-                    yield '+' + line
-
-
-########################################################################
-###  Context Diff
-########################################################################
-
-def _format_range_context(start, stop):
-    'Convert range to the "ed" format'
-    # Per the diff spec at http://www.unix.org/single_unix_specification/
-    beginning = start + 1     # lines start numbering with one
-    length = stop - start
-    if not length:
-        beginning -= 1        # empty ranges begin at line just before the range
-    if length <= 1:
-        return '{}'.format(beginning)
-    return '{},{}'.format(beginning, beginning + length - 1)
-
-# See http://www.unix.org/single_unix_specification/
-def context_diff(a, b, fromfile='', tofile='',
-                 fromfiledate='', tofiledate='', n=3, lineterm='\n'):
-    r"""
-    Compare two sequences of lines; generate the delta as a context diff.
-
-    Context diffs are a compact way of showing line changes and a few
-    lines of context.  The number of context lines is set by 'n' which
-    defaults to three.
-
-    By default, the diff control lines (those with *** or ---) are
-    created with a trailing newline.  This is helpful so that inputs
-    created from file.readlines() result in diffs that are suitable for
-    file.writelines() since both the inputs and outputs have trailing
-    newlines.
-
-    For inputs that do not have trailing newlines, set the lineterm
-    argument to "" so that the output will be uniformly newline free.
-
-    The context diff format normally has a header for filenames and
-    modification times.  Any or all of these may be specified using
-    strings for 'fromfile', 'tofile', 'fromfiledate', and 'tofiledate'.
-    The modification times are normally expressed in the ISO 8601 format.
-    If not specified, the strings default to blanks.
-
-    Example:
-
-    >>> print ''.join(context_diff('one\ntwo\nthree\nfour\n'.splitlines(1),
-    ...       'zero\none\ntree\nfour\n'.splitlines(1), 'Original', 'Current')),
-    *** Original
-    --- Current
-    ***************
-    *** 1,4 ****
-      one
-    ! two
-    ! three
-      four
-    --- 1,4 ----
-    + zero
-      one
-    ! tree
-      four
-    """
-
-    prefix = dict(insert='+ ', delete='- ', replace='! ', equal='  ')
-    started = False
-    for group in SequenceMatcher(None,a,b).get_grouped_opcodes(n):
-        if not started:
-            started = True
-            fromdate = '\t{}'.format(fromfiledate) if fromfiledate else ''
-            todate = '\t{}'.format(tofiledate) if tofiledate else ''
-            yield '*** {}{}{}'.format(fromfile, fromdate, lineterm)
-            yield '--- {}{}{}'.format(tofile, todate, lineterm)
-
-        first, last = group[0], group[-1]
-        yield '***************' + lineterm
-
-        file1_range = _format_range_context(first[1], last[2])
-        yield '*** {} ****{}'.format(file1_range, lineterm)
-
-        if any(tag in ('replace', 'delete') for tag, _, _, _, _ in group):
-            for tag, i1, i2, _, _ in group:
-                if tag != 'insert':
-                    for line in a[i1:i2]:
-                        yield prefix[tag] + line
-
-        file2_range = _format_range_context(first[3], last[4])
-        yield '--- {} ----{}'.format(file2_range, lineterm)
-
-        if any(tag in ('replace', 'insert') for tag, _, _, _, _ in group):
-            for tag, _, _, j1, j2 in group:
-                if tag != 'delete':
-                    for line in b[j1:j2]:
-                        yield prefix[tag] + line
-
-def ndiff(a, b, linejunk=None, charjunk=IS_CHARACTER_JUNK):
-    r"""
-    Compare `a` and `b` (lists of strings); return a `Differ`-style delta.
-
-    Optional keyword parameters `linejunk` and `charjunk` are for filter
-    functions (or None):
-
-    - linejunk: A function that should accept a single string argument, and
-      return true iff the string is junk.  The default is None, and is
-      recommended; as of Python 2.3, an adaptive notion of "noise" lines is
-      used that does a good job on its own.
-
-    - charjunk: A function that should accept a string of length 1. The
-      default is module-level function IS_CHARACTER_JUNK, which filters out
-      whitespace characters (a blank or tab; note: bad idea to include newline
-      in this!).
-
-    Tools/scripts/ndiff.py is a command-line front-end to this function.
-
-    Example:
-
-    >>> diff = ndiff('one\ntwo\nthree\n'.splitlines(1),
-    ...              'ore\ntree\nemu\n'.splitlines(1))
-    >>> print ''.join(diff),
-    - one
-    ?  ^
-    + ore
-    ?  ^
-    - two
-    - three
-    ?  -
-    + tree
-    + emu
-    """
-    return Differ(linejunk, charjunk).compare(a, b)
-
-def _mdiff(fromlines, tolines, context=None, linejunk=None,
-           charjunk=IS_CHARACTER_JUNK):
-    r"""Returns generator yielding marked up from/to side by side differences.
-
-    Arguments:
-    fromlines -- list of text lines to compared to tolines
-    tolines -- list of text lines to be compared to fromlines
-    context -- number of context lines to display on each side of difference,
-               if None, all from/to text lines will be generated.
-    linejunk -- passed on to ndiff (see ndiff documentation)
-    charjunk -- passed on to ndiff (see ndiff documentation)
-
-    This function returns an interator which returns a tuple:
-    (from line tuple, to line tuple, boolean flag)
-
-    from/to line tuple -- (line num, line text)
-        line num -- integer or None (to indicate a context separation)
-        line text -- original line text with following markers inserted:
-            '\0+' -- marks start of added text
-            '\0-' -- marks start of deleted text
-            '\0^' -- marks start of changed text
-            '\1' -- marks end of added/deleted/changed text
-
-    boolean flag -- None indicates context separation, True indicates
-        either "from" or "to" line contains a change, otherwise False.
-
-    This function/iterator was originally developed to generate side by side
-    file difference for making HTML pages (see HtmlDiff class for example
-    usage).
-
-    Note, this function utilizes the ndiff function to generate the side by
-    side difference markup.  Optional ndiff arguments may be passed to this
-    function and they in turn will be passed to ndiff.
-    """
-    import re
-
-    # regular expression for finding intraline change indices
-    change_re = re.compile('(\++|\-+|\^+)')
-
-    # create the difference iterator to generate the differences
-    diff_lines_iterator = ndiff(fromlines,tolines,linejunk,charjunk)
-
-    def _make_line(lines, format_key, side, num_lines=[0,0]):
-        """Returns line of text with user's change markup and line formatting.
-
-        lines -- list of lines from the ndiff generator to produce a line of
-                 text from.  When producing the line of text to return, the
-                 lines used are removed from this list.
-        format_key -- '+' return first line in list with "add" markup around
-                          the entire line.
-                      '-' return first line in list with "delete" markup around
-                          the entire line.
-                      '?' return first line in list with add/delete/change
-                          intraline markup (indices obtained from second line)
-                      None return first line in list with no markup
-        side -- indice into the num_lines list (0=from,1=to)
-        num_lines -- from/to current line number.  This is NOT intended to be a
-                     passed parameter.  It is present as a keyword argument to
-                     maintain memory of the current line numbers between calls
-                     of this function.
-
-        Note, this function is purposefully not defined at the module scope so
-        that data it needs from its parent function (within whose context it
-        is defined) does not need to be of module scope.
-        """
-        num_lines[side] += 1
-        # Handle case where no user markup is to be added, just return line of
-        # text with user's line format to allow for usage of the line number.
-        if format_key is None:
-            return (num_lines[side],lines.pop(0)[2:])
-        # Handle case of intraline changes
-        if format_key == '?':
-            text, markers = lines.pop(0), lines.pop(0)
-            # find intraline changes (store change type and indices in tuples)
-            sub_info = []
-            def record_sub_info(match_object,sub_info=sub_info):
-                sub_info.append([match_object.group(1)[0],match_object.span()])
-                return match_object.group(1)
-            change_re.sub(record_sub_info,markers)
-            # process each tuple inserting our special marks that won't be
-            # noticed by an xml/html escaper.
-            for key,(begin,end) in sub_info[::-1]:
-                text = text[0:begin]+'\0'+key+text[begin:end]+'\1'+text[end:]
-            text = text[2:]
-        # Handle case of add/delete entire line
-        else:
-            text = lines.pop(0)[2:]
-            # if line of text is just a newline, insert a space so there is
-            # something for the user to highlight and see.
-            if not text:
-                text = ' '
-            # insert marks that won't be noticed by an xml/html escaper.
-            text = '\0' + format_key + text + '\1'
-        # Return line of text, first allow user's line formatter to do its
-        # thing (such as adding the line number) then replace the special
-        # marks with what the user's change markup.
-        return (num_lines[side],text)
-
-    def _line_iterator():
-        """Yields from/to lines of text with a change indication.
-
-        This function is an iterator.  It itself pulls lines from a
-        differencing iterator, processes them and yields them.  When it can
-        it yields both a "from" and a "to" line, otherwise it will yield one
-        or the other.  In addition to yielding the lines of from/to text, a
-        boolean flag is yielded to indicate if the text line(s) have
-        differences in them.
-
-        Note, this function is purposefully not defined at the module scope so
-        that data it needs from its parent function (within whose context it
-        is defined) does not need to be of module scope.
-        """
-        lines = []
-        num_blanks_pending, num_blanks_to_yield = 0, 0
-        while True:
-            # Load up next 4 lines so we can look ahead, create strings which
-            # are a concatenation of the first character of each of the 4 lines
-            # so we can do some very readable comparisons.
-            while len(lines) < 4:
-                try:
-                    lines.append(diff_lines_iterator.next())
-                except StopIteration:
-                    lines.append('X')
-            s = ''.join([line[0] for line in lines])
-            if s.startswith('X'):
-                # When no more lines, pump out any remaining blank lines so the
-                # corresponding add/delete lines get a matching blank line so
-                # all line pairs get yielded at the next level.
-                num_blanks_to_yield = num_blanks_pending
-            elif s.startswith('-?+?'):
-                # simple intraline change
-                yield _make_line(lines,'?',0), _make_line(lines,'?',1), True
-                continue
-            elif s.startswith('--++'):
-                # in delete block, add block coming: we do NOT want to get
-                # caught up on blank lines yet, just process the delete line
-                num_blanks_pending -= 1
-                yield _make_line(lines,'-',0), None, True
-                continue
-            elif s.startswith(('--?+', '--+', '- ')):
-                # in delete block and see a intraline change or unchanged line
-                # coming: yield the delete line and then blanks
-                from_line,to_line = _make_line(lines,'-',0), None
-                num_blanks_to_yield,num_blanks_pending = num_blanks_pending-1,0
-            elif s.startswith('-+?'):
-                # intraline change
-                yield _make_line(lines,None,0), _make_line(lines,'?',1), True
-                continue
-            elif s.startswith('-?+'):
-                # intraline change
-                yield _make_line(lines,'?',0), _make_line(lines,None,1), True
-                continue
-            elif s.startswith('-'):
-                # delete FROM line
-                num_blanks_pending -= 1
-                yield _make_line(lines,'-',0), None, True
-                continue
-            elif s.startswith('+--'):
-                # in add block, delete block coming: we do NOT want to get
-                # caught up on blank lines yet, just process the add line
-                num_blanks_pending += 1
-                yield None, _make_line(lines,'+',1), True
-                continue
-            elif s.startswith(('+ ', '+-')):
-                # will be leaving an add block: yield blanks then add line
-                from_line, to_line = None, _make_line(lines,'+',1)
-                num_blanks_to_yield,num_blanks_pending = num_blanks_pending+1,0
-            elif s.startswith('+'):
-                # inside an add block, yield the add line
-                num_blanks_pending += 1
-                yield None, _make_line(lines,'+',1), True
-                continue
-            elif s.startswith(' '):
-                # unchanged text, yield it to both sides
-                yield _make_line(lines[:],None,0),_make_line(lines,None,1),False
-                continue
-            # Catch up on the blank lines so when we yield the next from/to
-            # pair, they are lined up.
-            while(num_blanks_to_yield < 0):
-                num_blanks_to_yield += 1
-                yield None,('','\n'),True
-            while(num_blanks_to_yield > 0):
-                num_blanks_to_yield -= 1
-                yield ('','\n'),None,True
-            if s.startswith('X'):
-                raise StopIteration
-            else:
-                yield from_line,to_line,True
-
-    def _line_pair_iterator():
-        """Yields from/to lines of text with a change indication.
-
-        This function is an iterator.  It itself pulls lines from the line
-        iterator.  Its difference from that iterator is that this function
-        always yields a pair of from/to text lines (with the change
-        indication).  If necessary it will collect single from/to lines
-        until it has a matching pair from/to pair to yield.
-
-        Note, this function is purposefully not defined at the module scope so
-        that data it needs from its parent function (within whose context it
-        is defined) does not need to be of module scope.
-        """
-        line_iterator = _line_iterator()
-        fromlines,tolines=[],[]
-        while True:
-            # Collecting lines of text until we have a from/to pair
-            while (len(fromlines)==0 or len(tolines)==0):
-                from_line, to_line, found_diff =line_iterator.next()
-                if from_line is not None:
-                    fromlines.append((from_line,found_diff))
-                if to_line is not None:
-                    tolines.append((to_line,found_diff))
-            # Once we have a pair, remove them from the collection and yield it
-            from_line, fromDiff = fromlines.pop(0)
-            to_line, to_diff = tolines.pop(0)
-            yield (from_line,to_line,fromDiff or to_diff)
-
-    # Handle case where user does not want context differencing, just yield
-    # them up without doing anything else with them.
-    line_pair_iterator = _line_pair_iterator()
-    if context is None:
-        while True:
-            yield line_pair_iterator.next()
-    # Handle case where user wants context differencing.  We must do some
-    # storage of lines until we know for sure that they are to be yielded.
-    else:
-        context += 1
-        lines_to_write = 0
-        while True:
-            # Store lines up until we find a difference, note use of a
-            # circular queue because we only need to keep around what
-            # we need for context.
-            index, contextLines = 0, [None]*(context)
-            found_diff = False
-            while(found_diff is False):
-                from_line, to_line, found_diff = line_pair_iterator.next()
-                i = index % context
-                contextLines[i] = (from_line, to_line, found_diff)
-                index += 1
-            # Yield lines that we have collected so far, but first yield
-            # the user's separator.
-            if index > context:
-                yield None, None, None
-                lines_to_write = context
-            else:
-                lines_to_write = index
-                index = 0
-            while(lines_to_write):
-                i = index % context
-                index += 1
-                yield contextLines[i]
-                lines_to_write -= 1
-            # Now yield the context lines after the change
-            lines_to_write = context-1
-            while(lines_to_write):
-                from_line, to_line, found_diff = line_pair_iterator.next()
-                # If another change within the context, extend the context
-                if found_diff:
-                    lines_to_write = context-1
-                else:
-                    lines_to_write -= 1
-                yield from_line, to_line, found_diff
-
-
-_file_template = """
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html>
-
-<head>
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=ISO-8859-1" />
-    <title></title>
-    <style type="text/css">%(styles)s
-    </style>
-</head>
-
-<body>
-    %(table)s%(legend)s
-</body>
-
-</html>"""
-
-_styles = """
-        table.diff {font-family:Courier; border:medium;}
-        .diff_header {background-color:#e0e0e0}
-        td.diff_header {text-align:right}
-        .diff_next {background-color:#c0c0c0}
-        .diff_add {background-color:#aaffaa}
-        .diff_chg {background-color:#ffff77}
-        .diff_sub {background-color:#ffaaaa}"""
-
-_table_template = """
-    <table class="diff" id="difflib_chg_%(prefix)s_top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        %(header_row)s
-        <tbody>
-%(data_rows)s        </tbody>
-    </table>"""
-
-_legend = """
-    <table class="diff" summary="Legends">
-        <tr> <th colspan="2"> Legends </th> </tr>
-        <tr> <td> <table border="" summary="Colors">
-                      <tr><th> Colors </th> </tr>
-                      <tr><td class="diff_add">&nbsp;Added&nbsp;</td></tr>
-                      <tr><td class="diff_chg">Changed</td> </tr>
-                      <tr><td class="diff_sub">Deleted</td> </tr>
-                  </table></td>
-             <td> <table border="" summary="Links">
-                      <tr><th colspan="2"> Links </th> </tr>
-                      <tr><td>(f)irst change</td> </tr>
-                      <tr><td>(n)ext change</td> </tr>
-                      <tr><td>(t)op</td> </tr>
-                  </table></td> </tr>
-    </table>"""
-
-class HtmlDiff(object):
-    """For producing HTML side by side comparison with change highlights.
-
-    This class can be used to create an HTML table (or a complete HTML file
-    containing the table) showing a side by side, line by line comparison
-    of text with inter-line and intra-line change highlights.  The table can
-    be generated in either full or contextual difference mode.
-
-    The following methods are provided for HTML generation:
-
-    make_table -- generates HTML for a single side by side table
-    make_file -- generates complete HTML file with a single side by side table
-
-    See tools/scripts/diff.py for an example usage of this class.
-    """
-
-    _file_template = _file_template
-    _styles = _styles
-    _table_template = _table_template
-    _legend = _legend
-    _default_prefix = 0
-
-    def __init__(self,tabsize=8,wrapcolumn=None,linejunk=None,
-                 charjunk=IS_CHARACTER_JUNK):
-        """HtmlDiff instance initializer
-
-        Arguments:
-        tabsize -- tab stop spacing, defaults to 8.
-        wrapcolumn -- column number where lines are broken and wrapped,
-            defaults to None where lines are not wrapped.
-        linejunk,charjunk -- keyword arguments passed into ndiff() (used to by
-            HtmlDiff() to generate the side by side HTML differences).  See
-            ndiff() documentation for argument default values and descriptions.
-        """
-        self._tabsize = tabsize
-        self._wrapcolumn = wrapcolumn
-        self._linejunk = linejunk
-        self._charjunk = charjunk
-
-    def make_file(self,fromlines,tolines,fromdesc='',todesc='',context=False,
-                  numlines=5):
-        """Returns HTML file of side by side comparison with change highlights
-
-        Arguments:
-        fromlines -- list of "from" lines
-        tolines -- list of "to" lines
-        fromdesc -- "from" file column header string
-        todesc -- "to" file column header string
-        context -- set to True for contextual differences (defaults to False
-            which shows full differences).
-        numlines -- number of context lines.  When context is set True,
-            controls number of lines displayed before and after the change.
-            When context is False, controls the number of lines to place
-            the "next" link anchors before the next change (so click of
-            "next" link jumps to just before the change).
-        """
-
-        return self._file_template % dict(
-            styles = self._styles,
-            legend = self._legend,
-            table = self.make_table(fromlines,tolines,fromdesc,todesc,
-                                    context=context,numlines=numlines))
-
-    def _tab_newline_replace(self,fromlines,tolines):
-        """Returns from/to line lists with tabs expanded and newlines removed.
-
-        Instead of tab characters being replaced by the number of spaces
-        needed to fill in to the next tab stop, this function will fill
-        the space with tab characters.  This is done so that the difference
-        algorithms can identify changes in a file when tabs are replaced by
-        spaces and vice versa.  At the end of the HTML generation, the tab
-        characters will be replaced with a nonbreakable space.
-        """
-        def expand_tabs(line):
-            # hide real spaces
-            line = line.replace(' ','\0')
-            # expand tabs into spaces
-            line = line.expandtabs(self._tabsize)
-            # replace spaces from expanded tabs back into tab characters
-            # (we'll replace them with markup after we do differencing)
-            line = line.replace(' ','\t')
-            return line.replace('\0',' ').rstrip('\n')
-        fromlines = [expand_tabs(line) for line in fromlines]
-        tolines = [expand_tabs(line) for line in tolines]
-        return fromlines,tolines
-
-    def _split_line(self,data_list,line_num,text):
-        """Builds list of text lines by splitting text lines at wrap point
-
-        This function will determine if the input text line needs to be
-        wrapped (split) into separate lines.  If so, the first wrap point
-        will be determined and the first line appended to the output
-        text line list.  This function is used recursively to handle
-        the second part of the split line to further split it.
-        """
-        # if blank line or context separator, just add it to the output list
-        if not line_num:
-            data_list.append((line_num,text))
-            return
-
-        # if line text doesn't need wrapping, just add it to the output list
-        size = len(text)
-        max = self._wrapcolumn
-        if (size <= max) or ((size -(text.count('\0')*3)) <= max):
-            data_list.append((line_num,text))
-            return
-
-        # scan text looking for the wrap point, keeping track if the wrap
-        # point is inside markers
-        i = 0
-        n = 0
-        mark = ''
-        while n < max and i < size:
-            if text[i] == '\0':
-                i += 1
-                mark = text[i]
-                i += 1
-            elif text[i] == '\1':
-                i += 1
-                mark = ''
-            else:
-                i += 1
-                n += 1
-
-        # wrap point is inside text, break it up into separate lines
-        line1 = text[:i]
-        line2 = text[i:]
-
-        # if wrap point is inside markers, place end marker at end of first
-        # line and start marker at beginning of second line because each
-        # line will have its own table tag markup around it.
-        if mark:
-            line1 = line1 + '\1'
-            line2 = '\0' + mark + line2
-
-        # tack on first line onto the output list
-        data_list.append((line_num,line1))
-
-        # use this routine again to wrap the remaining text
-        self._split_line(data_list,'>',line2)
-
-    def _line_wrapper(self,diffs):
-        """Returns iterator that splits (wraps) mdiff text lines"""
-
-        # pull from/to data and flags from mdiff iterator
-        for fromdata,todata,flag in diffs:
-            # check for context separators and pass them through
-            if flag is None:
-                yield fromdata,todata,flag
-                continue
-            (fromline,fromtext),(toline,totext) = fromdata,todata
-            # for each from/to line split it at the wrap column to form
-            # list of text lines.
-            fromlist,tolist = [],[]
-            self._split_line(fromlist,fromline,fromtext)
-            self._split_line(tolist,toline,totext)
-            # yield from/to line in pairs inserting blank lines as
-            # necessary when one side has more wrapped lines
-            while fromlist or tolist:
-                if fromlist:
-                    fromdata = fromlist.pop(0)
-                else:
-                    fromdata = ('',' ')
-                if tolist:
-                    todata = tolist.pop(0)
-                else:
-                    todata = ('',' ')
-                yield fromdata,todata,flag
-
-    def _collect_lines(self,diffs):
-        """Collects mdiff output into separate lists
-
-        Before storing the mdiff from/to data into a list, it is converted
-        into a single line of text with HTML markup.
-        """
-
-        fromlist,tolist,flaglist = [],[],[]
-        # pull from/to data and flags from mdiff style iterator
-        for fromdata,todata,flag in diffs:
-            try:
-                # store HTML markup of the lines into the lists
-                fromlist.append(self._format_line(0,flag,*fromdata))
-                tolist.append(self._format_line(1,flag,*todata))
-            except TypeError:
-                # exceptions occur for lines where context separators go
-                fromlist.append(None)
-                tolist.append(None)
-            flaglist.append(flag)
-        return fromlist,tolist,flaglist
-
-    def _format_line(self,side,flag,linenum,text):
-        """Returns HTML markup of "from" / "to" text lines
-
-        side -- 0 or 1 indicating "from" or "to" text
-        flag -- indicates if difference on line
-        linenum -- line number (used for line number column)
-        text -- line text to be marked up
-        """
-        try:
-            linenum = '%d' % linenum
-            id = ' id="%s%s"' % (self._prefix[side],linenum)
-        except TypeError:
-            # handle blank lines where linenum is '>' or ''
-            id = ''
-        # replace those things that would get confused with HTML symbols
-        text=text.replace("&","&amp;").replace(">","&gt;").replace("<","&lt;")
-
-        # make space non-breakable so they don't get compressed or line wrapped
-        text = text.replace(' ','&nbsp;').rstrip()
-
-        return '<td class="diff_header"%s>%s</td><td nowrap="nowrap">%s</td>' \
-               % (id,linenum,text)
-
-    def _make_prefix(self):
-        """Create unique anchor prefixes"""
-
-        # Generate a unique anchor prefix so multiple tables
-        # can exist on the same HTML page without conflicts.
-        fromprefix = "from%d_" % HtmlDiff._default_prefix
-        toprefix = "to%d_" % HtmlDiff._default_prefix
-        HtmlDiff._default_prefix += 1
-        # store prefixes so line format method has access
-        self._prefix = [fromprefix,toprefix]
-
-    def _convert_flags(self,fromlist,tolist,flaglist,context,numlines):
-        """Makes list of "next" links"""
-
-        # all anchor names will be generated using the unique "to" prefix
-        toprefix = self._prefix[1]
-
-        # process change flags, generating middle column of next anchors/links
-        next_id = ['']*len(flaglist)
-        next_href = ['']*len(flaglist)
-        num_chg, in_change = 0, False
-        last = 0
-        for i,flag in enumerate(flaglist):
-            if flag:
-                if not in_change:
-                    in_change = True
-                    last = i
-                    # at the beginning of a change, drop an anchor a few lines
-                    # (the context lines) before the change for the previous
-                    # link
-                    i = max([0,i-numlines])
-                    next_id[i] = ' id="difflib_chg_%s_%d"' % (toprefix,num_chg)
-                    # at the beginning of a change, drop a link to the next
-                    # change
-                    num_chg += 1
-                    next_href[last] = '<a href="#difflib_chg_%s_%d">n</a>' % (
-                         toprefix,num_chg)
-            else:
-                in_change = False
-        # check for cases where there is no content to avoid exceptions
-        if not flaglist:
-            flaglist = [False]
-            next_id = ['']
-            next_href = ['']
-            last = 0
-            if context:
-                fromlist = ['<td></td><td>&nbsp;No Differences Found&nbsp;</td>']
-                tolist = fromlist
-            else:
-                fromlist = tolist = ['<td></td><td>&nbsp;Empty File&nbsp;</td>']
-        # if not a change on first line, drop a link
-        if not flaglist[0]:
-            next_href[0] = '<a href="#difflib_chg_%s_0">f</a>' % toprefix
-        # redo the last link to link to the top
-        next_href[last] = '<a href="#difflib_chg_%s_top">t</a>' % (toprefix)
-
-        return fromlist,tolist,flaglist,next_href,next_id
-
-    def make_table(self,fromlines,tolines,fromdesc='',todesc='',context=False,
-                   numlines=5):
-        """Returns HTML table of side by side comparison with change highlights
-
-        Arguments:
-        fromlines -- list of "from" lines
-        tolines -- list of "to" lines
-        fromdesc -- "from" file column header string
-        todesc -- "to" file column header string
-        context -- set to True for contextual differences (defaults to False
-            which shows full differences).
-        numlines -- number of context lines.  When context is set True,
-            controls number of lines displayed before and after the change.
-            When context is False, controls the number of lines to place
-            the "next" link anchors before the next change (so click of
-            "next" link jumps to just before the change).
-        """
-
-        # make unique anchor prefixes so that multiple tables may exist
-        # on the same page without conflict.
-        self._make_prefix()
-
-        # change tabs to spaces before it gets more difficult after we insert
-        # markkup
-        fromlines,tolines = self._tab_newline_replace(fromlines,tolines)
-
-        # create diffs iterator which generates side by side from/to data
-        if context:
-            context_lines = numlines
-        else:
-            context_lines = None
-        diffs = _mdiff(fromlines,tolines,context_lines,linejunk=self._linejunk,
-                      charjunk=self._charjunk)
-
-        # set up iterator to wrap lines that exceed desired width
-        if self._wrapcolumn:
-            diffs = self._line_wrapper(diffs)
-
-        # collect up from/to lines and flags into lists (also format the lines)
-        fromlist,tolist,flaglist = self._collect_lines(diffs)
-
-        # process change flags, generating middle column of next anchors/links
-        fromlist,tolist,flaglist,next_href,next_id = self._convert_flags(
-            fromlist,tolist,flaglist,context,numlines)
-
-        s = []
-        fmt = '            <tr><td class="diff_next"%s>%s</td>%s' + \
-              '<td class="diff_next">%s</td>%s</tr>\n'
-        for i in range(len(flaglist)):
-            if flaglist[i] is None:
-                # mdiff yields None on separator lines skip the bogus ones
-                # generated for the first line
-                if i > 0:
-                    s.append('        </tbody>        \n        <tbody>\n')
-            else:
-                s.append( fmt % (next_id[i],next_href[i],fromlist[i],
-                                           next_href[i],tolist[i]))
-        if fromdesc or todesc:
-            header_row = '<thead><tr>%s%s%s%s</tr></thead>' % (
-                '<th class="diff_next"><br /></th>',
-                '<th colspan="2" class="diff_header">%s</th>' % fromdesc,
-                '<th class="diff_next"><br /></th>',
-                '<th colspan="2" class="diff_header">%s</th>' % todesc)
-        else:
-            header_row = ''
-
-        table = self._table_template % dict(
-            data_rows=''.join(s),
-            header_row=header_row,
-            prefix=self._prefix[1])
-
-        return table.replace('\0+','<span class="diff_add">'). \
-                     replace('\0-','<span class="diff_sub">'). \
-                     replace('\0^','<span class="diff_chg">'). \
-                     replace('\1','</span>'). \
-                     replace('\t','&nbsp;')
-
-del re
-
-def restore(delta, which):
-    r"""
-    Generate one of the two sequences that generated a delta.
-
-    Given a `delta` produced by `Differ.compare()` or `ndiff()`, extract
-    lines originating from file 1 or 2 (parameter `which`), stripping off line
-    prefixes.
-
-    Examples:
-
-    >>> diff = ndiff('one\ntwo\nthree\n'.splitlines(1),
-    ...              'ore\ntree\nemu\n'.splitlines(1))
-    >>> diff = list(diff)
-    >>> print ''.join(restore(diff, 1)),
-    one
-    two
-    three
-    >>> print ''.join(restore(diff, 2)),
-    ore
-    tree
-    emu
-    """
-    try:
-        tag = {1: "- ", 2: "+ "}[int(which)]
-    except KeyError:
-        raise ValueError, ('unknown delta choice (must be 1 or 2): %r'
-                           % which)
-    prefixes = ("  ", tag)
-    for line in delta:
-        if line[:2] in prefixes:
-            yield line[2:]
-
-def _test():
-    import doctest, difflib
-    return doctest.testmod(difflib)
-
-if __name__ == "__main__":
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/dircache.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/dircache.py
deleted file mode 100644
index 64135dd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/dircache.py
+++ /dev/null
@@ -1,41 +0,0 @@
-"""Read and cache directory listings.
-
-The listdir() routine returns a sorted list of the files in a directory,
-using a cache to avoid reading the directory more often than necessary.
-The annotate() routine appends slashes to directories."""
-from warnings import warnpy3k
-warnpy3k("the dircache module has been removed in Python 3.0", stacklevel=2)
-del warnpy3k
-
-import os
-
-__all__ = ["listdir", "opendir", "annotate", "reset"]
-
-cache = {}
-
-def reset():
-    """Reset the cache completely."""
-    global cache
-    cache = {}
-
-def listdir(path):
-    """List directory contents, using cache."""
-    try:
-        cached_mtime, list = cache[path]
-        del cache[path]
-    except KeyError:
-        cached_mtime, list = -1, []
-    mtime = os.stat(path).st_mtime
-    if mtime != cached_mtime:
-        list = os.listdir(path)
-        list.sort()
-    cache[path] = mtime, list
-    return list
-
-opendir = listdir # XXX backward compatibility
-
-def annotate(head, list):
-    """Add '/' suffixes to directories."""
-    for i in range(len(list)):
-        if os.path.isdir(os.path.join(head, list[i])):
-            list[i] = list[i] + '/'
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/dis.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/dis.py
deleted file mode 100644
index cdb9c59..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/dis.py
+++ /dev/null
@@ -1,224 +0,0 @@
-"""Disassembler of Python byte code into mnemonics."""
-
-import sys
-import types
-
-from opcode import *
-from opcode import __all__ as _opcodes_all
-
-__all__ = ["dis", "disassemble", "distb", "disco",
-           "findlinestarts", "findlabels"] + _opcodes_all
-del _opcodes_all
-
-_have_code = (types.MethodType, types.FunctionType, types.CodeType,
-              types.ClassType, type)
-
-def dis(x=None):
-    """Disassemble classes, methods, functions, or code.
-
-    With no argument, disassemble the last traceback.
-
-    """
-    if x is None:
-        distb()
-        return
-    if isinstance(x, types.InstanceType):
-        x = x.__class__
-    if hasattr(x, 'im_func'):
-        x = x.im_func
-    if hasattr(x, 'func_code'):
-        x = x.func_code
-    if hasattr(x, '__dict__'):
-        items = x.__dict__.items()
-        items.sort()
-        for name, x1 in items:
-            if isinstance(x1, _have_code):
-                print "Disassembly of %s:" % name
-                try:
-                    dis(x1)
-                except TypeError, msg:
-                    print "Sorry:", msg
-                print
-    elif hasattr(x, 'co_code'):
-        disassemble(x)
-    elif isinstance(x, str):
-        disassemble_string(x)
-    else:
-        raise TypeError, \
-              "don't know how to disassemble %s objects" % \
-              type(x).__name__
-
-def distb(tb=None):
-    """Disassemble a traceback (default: last traceback)."""
-    if tb is None:
-        try:
-            tb = sys.last_traceback
-        except AttributeError:
-            raise RuntimeError, "no last traceback to disassemble"
-        while tb.tb_next: tb = tb.tb_next
-    disassemble(tb.tb_frame.f_code, tb.tb_lasti)
-
-def disassemble(co, lasti=-1):
-    """Disassemble a code object."""
-    code = co.co_code
-    labels = findlabels(code)
-    linestarts = dict(findlinestarts(co))
-    n = len(code)
-    i = 0
-    extended_arg = 0
-    free = None
-    while i < n:
-        c = code[i]
-        op = ord(c)
-        if i in linestarts:
-            if i > 0:
-                print
-            print "%3d" % linestarts[i],
-        else:
-            print '   ',
-
-        if i == lasti: print '-->',
-        else: print '   ',
-        if i in labels: print '>>',
-        else: print '  ',
-        print repr(i).rjust(4),
-        print opname[op].ljust(20),
-        i = i+1
-        if op >= HAVE_ARGUMENT:
-            oparg = ord(code[i]) + ord(code[i+1])*256 + extended_arg
-            extended_arg = 0
-            i = i+2
-            if op == EXTENDED_ARG:
-                extended_arg = oparg*65536L
-            print repr(oparg).rjust(5),
-            if op in hasconst:
-                print '(' + repr(co.co_consts[oparg]) + ')',
-            elif op in hasname:
-                print '(' + co.co_names[oparg] + ')',
-            elif op in hasjrel:
-                print '(to ' + repr(i + oparg) + ')',
-            elif op in haslocal:
-                print '(' + co.co_varnames[oparg] + ')',
-            elif op in hascompare:
-                print '(' + cmp_op[oparg] + ')',
-            elif op in hasfree:
-                if free is None:
-                    free = co.co_cellvars + co.co_freevars
-                print '(' + free[oparg] + ')',
-        print
-
-def disassemble_string(code, lasti=-1, varnames=None, names=None,
-                       constants=None):
-    labels = findlabels(code)
-    n = len(code)
-    i = 0
-    while i < n:
-        c = code[i]
-        op = ord(c)
-        if i == lasti: print '-->',
-        else: print '   ',
-        if i in labels: print '>>',
-        else: print '  ',
-        print repr(i).rjust(4),
-        print opname[op].ljust(15),
-        i = i+1
-        if op >= HAVE_ARGUMENT:
-            oparg = ord(code[i]) + ord(code[i+1])*256
-            i = i+2
-            print repr(oparg).rjust(5),
-            if op in hasconst:
-                if constants:
-                    print '(' + repr(constants[oparg]) + ')',
-                else:
-                    print '(%d)'%oparg,
-            elif op in hasname:
-                if names is not None:
-                    print '(' + names[oparg] + ')',
-                else:
-                    print '(%d)'%oparg,
-            elif op in hasjrel:
-                print '(to ' + repr(i + oparg) + ')',
-            elif op in haslocal:
-                if varnames:
-                    print '(' + varnames[oparg] + ')',
-                else:
-                    print '(%d)' % oparg,
-            elif op in hascompare:
-                print '(' + cmp_op[oparg] + ')',
-        print
-
-disco = disassemble                     # XXX For backwards compatibility
-
-def findlabels(code):
-    """Detect all offsets in a byte code which are jump targets.
-
-    Return the list of offsets.
-
-    """
-    labels = []
-    n = len(code)
-    i = 0
-    while i < n:
-        c = code[i]
-        op = ord(c)
-        i = i+1
-        if op >= HAVE_ARGUMENT:
-            oparg = ord(code[i]) + ord(code[i+1])*256
-            i = i+2
-            label = -1
-            if op in hasjrel:
-                label = i+oparg
-            elif op in hasjabs:
-                label = oparg
-            if label >= 0:
-                if label not in labels:
-                    labels.append(label)
-    return labels
-
-def findlinestarts(code):
-    """Find the offsets in a byte code which are start of lines in the source.
-
-    Generate pairs (offset, lineno) as described in Python/compile.c.
-
-    """
-    byte_increments = [ord(c) for c in code.co_lnotab[0::2]]
-    line_increments = [ord(c) for c in code.co_lnotab[1::2]]
-
-    lastlineno = None
-    lineno = code.co_firstlineno
-    addr = 0
-    for byte_incr, line_incr in zip(byte_increments, line_increments):
-        if byte_incr:
-            if lineno != lastlineno:
-                yield (addr, lineno)
-                lastlineno = lineno
-            addr += byte_incr
-        lineno += line_incr
-    if lineno != lastlineno:
-        yield (addr, lineno)
-
-def _test():
-    """Simple test program to disassemble a file."""
-    if sys.argv[1:]:
-        if sys.argv[2:]:
-            sys.stderr.write("usage: python dis.py [-|file]\n")
-            sys.exit(2)
-        fn = sys.argv[1]
-        if not fn or fn == "-":
-            fn = None
-    else:
-        fn = None
-    if fn is None:
-        f = sys.stdin
-    else:
-        f = open(fn)
-    source = f.read()
-    if fn is not None:
-        f.close()
-    else:
-        fn = "<stdin>"
-    code = compile(source, fn, "exec")
-    dis(code)
-
-if __name__ == "__main__":
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/README b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/README
deleted file mode 100644
index 8d593a1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/README
+++ /dev/null
@@ -1,13 +0,0 @@
-This directory contains the Distutils package.
-
-There's a full documentation available at:
-
-    http://docs.python.org/distutils/
-
-The Distutils-SIG web page is also a good starting point:
-
-    http://www.python.org/sigs/distutils-sig/
-
-WARNING : Distutils must remain compatible with 2.3
-
-$Id$
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/__init__.py
deleted file mode 100644
index 32fed3f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/__init__.py
+++ /dev/null
@@ -1,19 +0,0 @@
-"""distutils
-
-The main package for the Python Module Distribution Utilities.  Normally
-used from a setup script as
-
-   from distutils.core import setup
-
-   setup (...)
-"""
-
-__revision__ = "$Id$"
-
-# Distutils version
-#
-# Updated automatically by the Python release process.
-#
-#--start constants--
-__version__ = "2.7.2"
-#--end constants--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/archive_util.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/archive_util.py
deleted file mode 100644
index 4af5c77..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/archive_util.py
+++ /dev/null
@@ -1,243 +0,0 @@
-"""distutils.archive_util
-
-Utility functions for creating archive files (tarballs, zip files,
-that sort of thing)."""
-
-__revision__ = "$Id$"
-
-import os
-from warnings import warn
-import sys
-
-from distutils.errors import DistutilsExecError
-from distutils.spawn import spawn
-from distutils.dir_util import mkpath
-from distutils import log
-
-try:
-    from pwd import getpwnam
-except ImportError:
-    getpwnam = None
-
-try:
-    from grp import getgrnam
-except ImportError:
-    getgrnam = None
-
-def _get_gid(name):
-    """Returns a gid, given a group name."""
-    if getgrnam is None or name is None:
-        return None
-    try:
-        result = getgrnam(name)
-    except KeyError:
-        result = None
-    if result is not None:
-        return result[2]
-    return None
-
-def _get_uid(name):
-    """Returns an uid, given a user name."""
-    if getpwnam is None or name is None:
-        return None
-    try:
-        result = getpwnam(name)
-    except KeyError:
-        result = None
-    if result is not None:
-        return result[2]
-    return None
-
-def make_tarball(base_name, base_dir, compress="gzip", verbose=0, dry_run=0,
-                 owner=None, group=None):
-    """Create a (possibly compressed) tar file from all the files under
-    'base_dir'.
-
-    'compress' must be "gzip" (the default), "compress", "bzip2", or None.
-    (compress will be deprecated in Python 3.2)
-
-    'owner' and 'group' can be used to define an owner and a group for the
-    archive that is being built. If not provided, the current owner and group
-    will be used.
-
-    The output tar file will be named 'base_dir' +  ".tar", possibly plus
-    the appropriate compression extension (".gz", ".bz2" or ".Z").
-
-    Returns the output filename.
-    """
-    tar_compression = {'gzip': 'gz', 'bzip2': 'bz2', None: '', 'compress': ''}
-    compress_ext = {'gzip': '.gz', 'bzip2': '.bz2', 'compress': '.Z'}
-
-    # flags for compression program, each element of list will be an argument
-    if compress is not None and compress not in compress_ext.keys():
-        raise ValueError, \
-              ("bad value for 'compress': must be None, 'gzip', 'bzip2' "
-               "or 'compress'")
-
-    archive_name = base_name + '.tar'
-    if compress != 'compress':
-        archive_name += compress_ext.get(compress, '')
-
-    mkpath(os.path.dirname(archive_name), dry_run=dry_run)
-
-    # creating the tarball
-    import tarfile  # late import so Python build itself doesn't break
-
-    log.info('Creating tar archive')
-
-    uid = _get_uid(owner)
-    gid = _get_gid(group)
-
-    def _set_uid_gid(tarinfo):
-        if gid is not None:
-            tarinfo.gid = gid
-            tarinfo.gname = group
-        if uid is not None:
-            tarinfo.uid = uid
-            tarinfo.uname = owner
-        return tarinfo
-
-    if not dry_run:
-        tar = tarfile.open(archive_name, 'w|%s' % tar_compression[compress])
-        try:
-            tar.add(base_dir, filter=_set_uid_gid)
-        finally:
-            tar.close()
-
-    # compression using `compress`
-    if compress == 'compress':
-        warn("'compress' will be deprecated.", PendingDeprecationWarning)
-        # the option varies depending on the platform
-        compressed_name = archive_name + compress_ext[compress]
-        if sys.platform == 'win32':
-            cmd = [compress, archive_name, compressed_name]
-        else:
-            cmd = [compress, '-f', archive_name]
-        spawn(cmd, dry_run=dry_run)
-        return compressed_name
-
-    return archive_name
-
-def make_zipfile(base_name, base_dir, verbose=0, dry_run=0):
-    """Create a zip file from all the files under 'base_dir'.
-
-    The output zip file will be named 'base_name' + ".zip".  Uses either the
-    "zipfile" Python module (if available) or the InfoZIP "zip" utility
-    (if installed and found on the default search path).  If neither tool is
-    available, raises DistutilsExecError.  Returns the name of the output zip
-    file.
-    """
-    try:
-        import zipfile
-    except ImportError:
-        zipfile = None
-
-    zip_filename = base_name + ".zip"
-    mkpath(os.path.dirname(zip_filename), dry_run=dry_run)
-
-    # If zipfile module is not available, try spawning an external
-    # 'zip' command.
-    if zipfile is None:
-        if verbose:
-            zipoptions = "-r"
-        else:
-            zipoptions = "-rq"
-
-        try:
-            spawn(["zip", zipoptions, zip_filename, base_dir],
-                  dry_run=dry_run)
-        except DistutilsExecError:
-            # XXX really should distinguish between "couldn't find
-            # external 'zip' command" and "zip failed".
-            raise DistutilsExecError, \
-                  ("unable to create zip file '%s': "
-                   "could neither import the 'zipfile' module nor "
-                   "find a standalone zip utility") % zip_filename
-
-    else:
-        log.info("creating '%s' and adding '%s' to it",
-                 zip_filename, base_dir)
-
-        if not dry_run:
-            zip = zipfile.ZipFile(zip_filename, "w",
-                                  compression=zipfile.ZIP_DEFLATED)
-
-            for dirpath, dirnames, filenames in os.walk(base_dir):
-                for name in filenames:
-                    path = os.path.normpath(os.path.join(dirpath, name))
-                    if os.path.isfile(path):
-                        zip.write(path, path)
-                        log.info("adding '%s'" % path)
-            zip.close()
-
-    return zip_filename
-
-ARCHIVE_FORMATS = {
-    'gztar': (make_tarball, [('compress', 'gzip')], "gzip'ed tar-file"),
-    'bztar': (make_tarball, [('compress', 'bzip2')], "bzip2'ed tar-file"),
-    'ztar':  (make_tarball, [('compress', 'compress')], "compressed tar file"),
-    'tar':   (make_tarball, [('compress', None)], "uncompressed tar file"),
-    'zip':   (make_zipfile, [],"ZIP file")
-    }
-
-def check_archive_formats(formats):
-    """Returns the first format from the 'format' list that is unknown.
-
-    If all formats are known, returns None
-    """
-    for format in formats:
-        if format not in ARCHIVE_FORMATS:
-            return format
-    return None
-
-def make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,
-                 dry_run=0, owner=None, group=None):
-    """Create an archive file (eg. zip or tar).
-
-    'base_name' is the name of the file to create, minus any format-specific
-    extension; 'format' is the archive format: one of "zip", "tar", "ztar",
-    or "gztar".
-
-    'root_dir' is a directory that will be the root directory of the
-    archive; ie. we typically chdir into 'root_dir' before creating the
-    archive.  'base_dir' is the directory where we start archiving from;
-    ie. 'base_dir' will be the common prefix of all files and
-    directories in the archive.  'root_dir' and 'base_dir' both default
-    to the current directory.  Returns the name of the archive file.
-
-    'owner' and 'group' are used when creating a tar archive. By default,
-    uses the current owner and group.
-    """
-    save_cwd = os.getcwd()
-    if root_dir is not None:
-        log.debug("changing into '%s'", root_dir)
-        base_name = os.path.abspath(base_name)
-        if not dry_run:
-            os.chdir(root_dir)
-
-    if base_dir is None:
-        base_dir = os.curdir
-
-    kwargs = {'dry_run': dry_run}
-
-    try:
-        format_info = ARCHIVE_FORMATS[format]
-    except KeyError:
-        raise ValueError, "unknown archive format '%s'" % format
-
-    func = format_info[0]
-    for arg, val in format_info[1]:
-        kwargs[arg] = val
-
-    if format != 'zip':
-        kwargs['owner'] = owner
-        kwargs['group'] = group
-
-    try:
-        filename = func(base_name, base_dir, **kwargs)
-    finally:
-        if root_dir is not None:
-            log.debug("changing back to '%s'", save_cwd)
-            os.chdir(save_cwd)
-
-    return filename
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/bcppcompiler.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/bcppcompiler.py
deleted file mode 100644
index 9c7d3ef..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/bcppcompiler.py
+++ /dev/null
@@ -1,394 +0,0 @@
-"""distutils.bcppcompiler
-
-Contains BorlandCCompiler, an implementation of the abstract CCompiler class
-for the Borland C++ compiler.
-"""
-
-# This implementation by Lyle Johnson, based on the original msvccompiler.py
-# module and using the directions originally published by Gordon Williams.
-
-# XXX looks like there's a LOT of overlap between these two classes:
-# someone should sit down and factor out the common code as
-# WindowsCCompiler!  --GPW
-
-__revision__ = "$Id$"
-
-import os
-
-from distutils.errors import (DistutilsExecError, CompileError, LibError,
-                              LinkError, UnknownFileError)
-from distutils.ccompiler import CCompiler, gen_preprocess_options
-from distutils.file_util import write_file
-from distutils.dep_util import newer
-from distutils import log
-
-class BCPPCompiler(CCompiler) :
-    """Concrete class that implements an interface to the Borland C/C++
-    compiler, as defined by the CCompiler abstract class.
-    """
-
-    compiler_type = 'bcpp'
-
-    # Just set this so CCompiler's constructor doesn't barf.  We currently
-    # don't use the 'set_executables()' bureaucracy provided by CCompiler,
-    # as it really isn't necessary for this sort of single-compiler class.
-    # Would be nice to have a consistent interface with UnixCCompiler,
-    # though, so it's worth thinking about.
-    executables = {}
-
-    # Private class data (need to distinguish C from C++ source for compiler)
-    _c_extensions = ['.c']
-    _cpp_extensions = ['.cc', '.cpp', '.cxx']
-
-    # Needed for the filename generation methods provided by the
-    # base class, CCompiler.
-    src_extensions = _c_extensions + _cpp_extensions
-    obj_extension = '.obj'
-    static_lib_extension = '.lib'
-    shared_lib_extension = '.dll'
-    static_lib_format = shared_lib_format = '%s%s'
-    exe_extension = '.exe'
-
-
-    def __init__ (self,
-                  verbose=0,
-                  dry_run=0,
-                  force=0):
-
-        CCompiler.__init__ (self, verbose, dry_run, force)
-
-        # These executables are assumed to all be in the path.
-        # Borland doesn't seem to use any special registry settings to
-        # indicate their installation locations.
-
-        self.cc = "bcc32.exe"
-        self.linker = "ilink32.exe"
-        self.lib = "tlib.exe"
-
-        self.preprocess_options = None
-        self.compile_options = ['/tWM', '/O2', '/q', '/g0']
-        self.compile_options_debug = ['/tWM', '/Od', '/q', '/g0']
-
-        self.ldflags_shared = ['/Tpd', '/Gn', '/q', '/x']
-        self.ldflags_shared_debug = ['/Tpd', '/Gn', '/q', '/x']
-        self.ldflags_static = []
-        self.ldflags_exe = ['/Gn', '/q', '/x']
-        self.ldflags_exe_debug = ['/Gn', '/q', '/x','/r']
-
-
-    # -- Worker methods ------------------------------------------------
-
-    def compile(self, sources,
-                output_dir=None, macros=None, include_dirs=None, debug=0,
-                extra_preargs=None, extra_postargs=None, depends=None):
-
-        macros, objects, extra_postargs, pp_opts, build = \
-                self._setup_compile(output_dir, macros, include_dirs, sources,
-                                    depends, extra_postargs)
-        compile_opts = extra_preargs or []
-        compile_opts.append ('-c')
-        if debug:
-            compile_opts.extend (self.compile_options_debug)
-        else:
-            compile_opts.extend (self.compile_options)
-
-        for obj in objects:
-            try:
-                src, ext = build[obj]
-            except KeyError:
-                continue
-            # XXX why do the normpath here?
-            src = os.path.normpath(src)
-            obj = os.path.normpath(obj)
-            # XXX _setup_compile() did a mkpath() too but before the normpath.
-            # Is it possible to skip the normpath?
-            self.mkpath(os.path.dirname(obj))
-
-            if ext == '.res':
-                # This is already a binary file -- skip it.
-                continue # the 'for' loop
-            if ext == '.rc':
-                # This needs to be compiled to a .res file -- do it now.
-                try:
-                    self.spawn (["brcc32", "-fo", obj, src])
-                except DistutilsExecError, msg:
-                    raise CompileError, msg
-                continue # the 'for' loop
-
-            # The next two are both for the real compiler.
-            if ext in self._c_extensions:
-                input_opt = ""
-            elif ext in self._cpp_extensions:
-                input_opt = "-P"
-            else:
-                # Unknown file type -- no extra options.  The compiler
-                # will probably fail, but let it just in case this is a
-                # file the compiler recognizes even if we don't.
-                input_opt = ""
-
-            output_opt = "-o" + obj
-
-            # Compiler command line syntax is: "bcc32 [options] file(s)".
-            # Note that the source file names must appear at the end of
-            # the command line.
-            try:
-                self.spawn ([self.cc] + compile_opts + pp_opts +
-                            [input_opt, output_opt] +
-                            extra_postargs + [src])
-            except DistutilsExecError, msg:
-                raise CompileError, msg
-
-        return objects
-
-    # compile ()
-
-
-    def create_static_lib (self,
-                           objects,
-                           output_libname,
-                           output_dir=None,
-                           debug=0,
-                           target_lang=None):
-
-        (objects, output_dir) = self._fix_object_args (objects, output_dir)
-        output_filename = \
-            self.library_filename (output_libname, output_dir=output_dir)
-
-        if self._need_link (objects, output_filename):
-            lib_args = [output_filename, '/u'] + objects
-            if debug:
-                pass                    # XXX what goes here?
-            try:
-                self.spawn ([self.lib] + lib_args)
-            except DistutilsExecError, msg:
-                raise LibError, msg
-        else:
-            log.debug("skipping %s (up-to-date)", output_filename)
-
-    # create_static_lib ()
-
-
-    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):
-
-        # XXX this ignores 'build_temp'!  should follow the lead of
-        # msvccompiler.py
-
-        (objects, output_dir) = self._fix_object_args (objects, output_dir)
-        (libraries, library_dirs, runtime_library_dirs) = \
-            self._fix_lib_args (libraries, library_dirs, runtime_library_dirs)
-
-        if runtime_library_dirs:
-            log.warn("I don't know what to do with 'runtime_library_dirs': %s",
-                     str(runtime_library_dirs))
-
-        if output_dir is not None:
-            output_filename = os.path.join (output_dir, output_filename)
-
-        if self._need_link (objects, output_filename):
-
-            # Figure out linker args based on type of target.
-            if target_desc == CCompiler.EXECUTABLE:
-                startup_obj = 'c0w32'
-                if debug:
-                    ld_args = self.ldflags_exe_debug[:]
-                else:
-                    ld_args = self.ldflags_exe[:]
-            else:
-                startup_obj = 'c0d32'
-                if debug:
-                    ld_args = self.ldflags_shared_debug[:]
-                else:
-                    ld_args = self.ldflags_shared[:]
-
-
-            # Create a temporary exports file for use by the linker
-            if export_symbols is None:
-                def_file = ''
-            else:
-                head, tail = os.path.split (output_filename)
-                modname, ext = os.path.splitext (tail)
-                temp_dir = os.path.dirname(objects[0]) # preserve tree structure
-                def_file = os.path.join (temp_dir, '%s.def' % modname)
-                contents = ['EXPORTS']
-                for sym in (export_symbols or []):
-                    contents.append('  %s=_%s' % (sym, sym))
-                self.execute(write_file, (def_file, contents),
-                             "writing %s" % def_file)
-
-            # Borland C++ has problems with '/' in paths
-            objects2 = map(os.path.normpath, objects)
-            # split objects in .obj and .res files
-            # Borland C++ needs them at different positions in the command line
-            objects = [startup_obj]
-            resources = []
-            for file in objects2:
-                (base, ext) = os.path.splitext(os.path.normcase(file))
-                if ext == '.res':
-                    resources.append(file)
-                else:
-                    objects.append(file)
-
-
-            for l in library_dirs:
-                ld_args.append("/L%s" % os.path.normpath(l))
-            ld_args.append("/L.") # we sometimes use relative paths
-
-            # list of object files
-            ld_args.extend(objects)
-
-            # XXX the command-line syntax for Borland C++ is a bit wonky;
-            # certain filenames are jammed together in one big string, but
-            # comma-delimited.  This doesn't mesh too well with the
-            # Unix-centric attitude (with a DOS/Windows quoting hack) of
-            # 'spawn()', so constructing the argument list is a bit
-            # awkward.  Note that doing the obvious thing and jamming all
-            # the filenames and commas into one argument would be wrong,
-            # because 'spawn()' would quote any filenames with spaces in
-            # them.  Arghghh!.  Apparently it works fine as coded...
-
-            # name of dll/exe file
-            ld_args.extend([',',output_filename])
-            # no map file and start libraries
-            ld_args.append(',,')
-
-            for lib in libraries:
-                # see if we find it and if there is a bcpp specific lib
-                # (xxx_bcpp.lib)
-                libfile = self.find_library_file(library_dirs, lib, debug)
-                if libfile is None:
-                    ld_args.append(lib)
-                    # probably a BCPP internal library -- don't warn
-                else:
-                    # full name which prefers bcpp_xxx.lib over xxx.lib
-                    ld_args.append(libfile)
-
-            # some default libraries
-            ld_args.append ('import32')
-            ld_args.append ('cw32mt')
-
-            # def file for export symbols
-            ld_args.extend([',',def_file])
-            # add resource files
-            ld_args.append(',')
-            ld_args.extend(resources)
-
-
-            if extra_preargs:
-                ld_args[:0] = extra_preargs
-            if extra_postargs:
-                ld_args.extend(extra_postargs)
-
-            self.mkpath (os.path.dirname (output_filename))
-            try:
-                self.spawn ([self.linker] + ld_args)
-            except DistutilsExecError, msg:
-                raise LinkError, msg
-
-        else:
-            log.debug("skipping %s (up-to-date)", output_filename)
-
-    # link ()
-
-    # -- Miscellaneous methods -----------------------------------------
-
-
-    def find_library_file (self, dirs, lib, debug=0):
-        # List of effective library names to try, in order of preference:
-        # xxx_bcpp.lib is better than xxx.lib
-        # and xxx_d.lib is better than xxx.lib if debug is set
-        #
-        # The "_bcpp" suffix is to handle a Python installation for people
-        # with multiple compilers (primarily Distutils hackers, I suspect
-        # ;-).  The idea is they'd have one static library for each
-        # compiler they care about, since (almost?) every Windows compiler
-        # seems to have a different format for static libraries.
-        if debug:
-            dlib = (lib + "_d")
-            try_names = (dlib + "_bcpp", lib + "_bcpp", dlib, lib)
-        else:
-            try_names = (lib + "_bcpp", lib)
-
-        for dir in dirs:
-            for name in try_names:
-                libfile = os.path.join(dir, self.library_filename(name))
-                if os.path.exists(libfile):
-                    return libfile
-        else:
-            # Oops, didn't find it in *any* of 'dirs'
-            return None
-
-    # overwrite the one from CCompiler to support rc and res-files
-    def object_filenames (self,
-                          source_filenames,
-                          strip_dir=0,
-                          output_dir=''):
-        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','.res']):
-                raise UnknownFileError, \
-                      "unknown file type '%s' (from '%s')" % \
-                      (ext, src_name)
-            if strip_dir:
-                base = os.path.basename (base)
-            if ext == '.res':
-                # these can go unchanged
-                obj_names.append (os.path.join (output_dir, base + ext))
-            elif ext == '.rc':
-                # these need to be compiled to .res-files
-                obj_names.append (os.path.join (output_dir, base + '.res'))
-            else:
-                obj_names.append (os.path.join (output_dir,
-                                            base + self.obj_extension))
-        return obj_names
-
-    # object_filenames ()
-
-    def preprocess (self,
-                    source,
-                    output_file=None,
-                    macros=None,
-                    include_dirs=None,
-                    extra_preargs=None,
-                    extra_postargs=None):
-
-        (_, macros, include_dirs) = \
-            self._fix_compile_args(None, macros, include_dirs)
-        pp_opts = gen_preprocess_options(macros, include_dirs)
-        pp_args = ['cpp32.exe'] + pp_opts
-        if output_file is not None:
-            pp_args.append('-o' + output_file)
-        if extra_preargs:
-            pp_args[:0] = extra_preargs
-        if extra_postargs:
-            pp_args.extend(extra_postargs)
-        pp_args.append(source)
-
-        # We need to preprocess: either we're being forced to, or the
-        # source file is newer than the target (or the target doesn't
-        # exist).
-        if self.force or output_file is None or newer(source, output_file):
-            if output_file:
-                self.mkpath(os.path.dirname(output_file))
-            try:
-                self.spawn(pp_args)
-            except DistutilsExecError, msg:
-                print msg
-                raise CompileError, msg
-
-    # preprocess()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/ccompiler.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/ccompiler.py
deleted file mode 100644
index 88a1d21..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/ccompiler.py
+++ /dev/null
@@ -1,1145 +0,0 @@
-"""distutils.ccompiler
-
-Contains CCompiler, an abstract base class that defines the interface
-for the Distutils compiler abstraction model."""
-
-__revision__ = "$Id$"
-
-import sys
-import os
-import re
-
-from distutils.errors import (CompileError, LinkError, UnknownFileError,
-                              DistutilsPlatformError, DistutilsModuleError)
-from distutils.spawn import spawn
-from distutils.file_util import move_file
-from distutils.dir_util import mkpath
-from distutils.dep_util import newer_group
-from distutils.util import split_quoted, execute
-from distutils import log
-
-_sysconfig = __import__('sysconfig')
-
-def customize_compiler(compiler):
-    """Do any platform-specific customization of a CCompiler instance.
-
-    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":
-        (cc, cxx, opt, cflags, ccshared, ldshared, so_ext, ar, ar_flags) = \
-            _sysconfig.get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
-                                       'CCSHARED', 'LDSHARED', 'SO', 'AR',
-                                       'ARFLAGS')
-
-        if 'CC' in os.environ:
-            cc = os.environ['CC']
-        if 'CXX' in os.environ:
-            cxx = os.environ['CXX']
-        if 'LDSHARED' in os.environ:
-            ldshared = os.environ['LDSHARED']
-        if 'CPP' in os.environ:
-            cpp = os.environ['CPP']
-        else:
-            cpp = cc + " -E"           # not always
-        if 'LDFLAGS' in os.environ:
-            ldshared = ldshared + ' ' + os.environ['LDFLAGS']
-        if 'CFLAGS' in os.environ:
-            cflags = opt + ' ' + os.environ['CFLAGS']
-            ldshared = ldshared + ' ' + os.environ['CFLAGS']
-        if 'CPPFLAGS' in os.environ:
-            cpp = cpp + ' ' + os.environ['CPPFLAGS']
-            cflags = cflags + ' ' + os.environ['CPPFLAGS']
-            ldshared = ldshared + ' ' + os.environ['CPPFLAGS']
-        if 'AR' in os.environ:
-            ar = os.environ['AR']
-        if 'ARFLAGS' in os.environ:
-            archiver = ar + ' ' + os.environ['ARFLAGS']
-        else:
-            archiver = ar + ' ' + ar_flags
-
-        cc_cmd = cc + ' ' + cflags
-        compiler.set_executables(
-            preprocessor=cpp,
-            compiler=cc_cmd,
-            compiler_so=cc_cmd + ' ' + ccshared,
-            compiler_cxx=cxx,
-            linker_so=ldshared,
-            linker_exe=cc,
-            archiver=archiver)
-
-        compiler.shared_lib_extension = so_ext
-
-class CCompiler:
-    """Abstract base class to define the interface that must be implemented
-    by real compiler classes.  Also has some utility methods used by
-    several compiler classes.
-
-    The basic idea behind a compiler abstraction class is that each
-    instance can be used for all the compile/link steps in building a
-    single project.  Thus, attributes common to all of those compile and
-    link steps -- include directories, macros to define, libraries to link
-    against, etc. -- are attributes of the compiler instance.  To allow for
-    variability in how individual files are treated, most of those
-    attributes may be varied on a per-compilation or per-link basis.
-    """
-
-    # 'compiler_type' is a class attribute that identifies this class.  It
-    # keeps code that wants to know what kind of compiler it's dealing with
-    # from having to import all possible compiler classes just to do an
-    # 'isinstance'.  In concrete CCompiler subclasses, 'compiler_type'
-    # should really, really be one of the keys of the 'compiler_class'
-    # dictionary (see below -- used by the 'new_compiler()' factory
-    # function) -- authors of new compiler interface classes are
-    # responsible for updating 'compiler_class'!
-    compiler_type = None
-
-    # XXX things not handled by this compiler abstraction model:
-    #   * client can't provide additional options for a compiler,
-    #     e.g. warning, optimization, debugging flags.  Perhaps this
-    #     should be the domain of concrete compiler abstraction classes
-    #     (UnixCCompiler, MSVCCompiler, etc.) -- or perhaps the base
-    #     class should have methods for the common ones.
-    #   * can't completely override the include or library searchg
-    #     path, ie. no "cc -I -Idir1 -Idir2" or "cc -L -Ldir1 -Ldir2".
-    #     I'm not sure how widely supported this is even by Unix
-    #     compilers, much less on other platforms.  And I'm even less
-    #     sure how useful it is; maybe for cross-compiling, but
-    #     support for that is a ways off.  (And anyways, cross
-    #     compilers probably have a dedicated binary with the
-    #     right paths compiled in.  I hope.)
-    #   * can't do really freaky things with the library list/library
-    #     dirs, e.g. "-Ldir1 -lfoo -Ldir2 -lfoo" to link against
-    #     different versions of libfoo.a in different locations.  I
-    #     think this is useless without the ability to null out the
-    #     library search path anyways.
-
-
-    # Subclasses that rely on the standard filename generation methods
-    # implemented below should override these; see the comment near
-    # those methods ('object_filenames()' et. al.) for details:
-    src_extensions = None               # list of strings
-    obj_extension = None                # string
-    static_lib_extension = None
-    shared_lib_extension = None         # string
-    static_lib_format = None            # format string
-    shared_lib_format = None            # prob. same as static_lib_format
-    exe_extension = None                # string
-
-    # Default language settings. language_map is used to detect a source
-    # file or Extension target language, checking source filenames.
-    # language_order is used to detect the language precedence, when deciding
-    # what language to use when mixing source types. For example, if some
-    # extension has two files with ".c" extension, and one with ".cpp", it
-    # is still linked as c++.
-    language_map = {".c"   : "c",
-                    ".cc"  : "c++",
-                    ".cpp" : "c++",
-                    ".cxx" : "c++",
-                    ".m"   : "objc",
-                   }
-    language_order = ["c++", "objc", "c"]
-
-    def __init__ (self, verbose=0, dry_run=0, force=0):
-        self.dry_run = dry_run
-        self.force = force
-        self.verbose = verbose
-
-        # 'output_dir': a common output directory for object, library,
-        # shared object, and shared library files
-        self.output_dir = None
-
-        # 'macros': a list of macro definitions (or undefinitions).  A
-        # macro definition is a 2-tuple (name, value), where the value is
-        # either a string or None (no explicit value).  A macro
-        # undefinition is a 1-tuple (name,).
-        self.macros = []
-
-        # 'include_dirs': a list of directories to search for include files
-        self.include_dirs = []
-
-        # 'libraries': a list of libraries to include in any link
-        # (library names, not filenames: eg. "foo" not "libfoo.a")
-        self.libraries = []
-
-        # 'library_dirs': a list of directories to search for libraries
-        self.library_dirs = []
-
-        # 'runtime_library_dirs': a list of directories to search for
-        # shared libraries/objects at runtime
-        self.runtime_library_dirs = []
-
-        # 'objects': a list of object files (or similar, such as explicitly
-        # named library files) to include on any link
-        self.objects = []
-
-        for key in self.executables.keys():
-            self.set_executable(key, self.executables[key])
-
-    def set_executables(self, **args):
-        """Define the executables (and options for them) that will be run
-        to perform the various stages of compilation.  The exact set of
-        executables that may be specified here depends on the compiler
-        class (via the 'executables' class attribute), but most will have:
-          compiler      the C/C++ compiler
-          linker_so     linker used to create shared objects and libraries
-          linker_exe    linker used to create binary executables
-          archiver      static library creator
-
-        On platforms with a command-line (Unix, DOS/Windows), each of these
-        is a string that will be split into executable name and (optional)
-        list of arguments.  (Splitting the string is done similarly to how
-        Unix shells operate: words are delimited by spaces, but quotes and
-        backslashes can override this.  See
-        'distutils.util.split_quoted()'.)
-        """
-
-        # Note that some CCompiler implementation classes will define class
-        # attributes 'cpp', 'cc', etc. with hard-coded executable names;
-        # this is appropriate when a compiler class is for exactly one
-        # compiler/OS combination (eg. MSVCCompiler).  Other compiler
-        # classes (UnixCCompiler, in particular) are driven by information
-        # discovered at run-time, since there are many different ways to do
-        # basically the same things with Unix C compilers.
-
-        for key in args.keys():
-            if key not in self.executables:
-                raise ValueError, \
-                      "unknown executable '%s' for class %s" % \
-                      (key, self.__class__.__name__)
-            self.set_executable(key, args[key])
-
-    def set_executable(self, key, value):
-        if isinstance(value, str):
-            setattr(self, key, split_quoted(value))
-        else:
-            setattr(self, key, value)
-
-    def _find_macro(self, name):
-        i = 0
-        for defn in self.macros:
-            if defn[0] == name:
-                return i
-            i = i + 1
-        return None
-
-    def _check_macro_definitions(self, definitions):
-        """Ensures that every element of 'definitions' is a valid macro
-        definition, ie. either (name,value) 2-tuple or a (name,) tuple.  Do
-        nothing if all definitions are OK, raise TypeError otherwise.
-        """
-        for defn in definitions:
-            if not (isinstance(defn, tuple) and
-                    (len (defn) == 1 or
-                     (len (defn) == 2 and
-                      (isinstance(defn[1], str) or defn[1] is None))) and
-                    isinstance(defn[0], str)):
-                raise TypeError, \
-                      ("invalid macro definition '%s': " % defn) + \
-                      "must be tuple (string,), (string, string), or " + \
-                      "(string, None)"
-
-
-    # -- Bookkeeping methods -------------------------------------------
-
-    def define_macro(self, name, value=None):
-        """Define a preprocessor macro for all compilations driven by this
-        compiler object.  The optional parameter 'value' should be a
-        string; if it is not supplied, then the macro will be defined
-        without an explicit value and the exact outcome depends on the
-        compiler used (XXX true? does ANSI say anything about this?)
-        """
-        # Delete from the list of macro definitions/undefinitions if
-        # already there (so that this one will take precedence).
-        i = self._find_macro (name)
-        if i is not None:
-            del self.macros[i]
-
-        defn = (name, value)
-        self.macros.append (defn)
-
-    def undefine_macro(self, name):
-        """Undefine a preprocessor macro for all compilations driven by
-        this compiler object.  If the same macro is defined by
-        'define_macro()' and undefined by 'undefine_macro()' the last call
-        takes precedence (including multiple redefinitions or
-        undefinitions).  If the macro is redefined/undefined on a
-        per-compilation basis (ie. in the call to 'compile()'), then that
-        takes precedence.
-        """
-        # Delete from the list of macro definitions/undefinitions if
-        # already there (so that this one will take precedence).
-        i = self._find_macro (name)
-        if i is not None:
-            del self.macros[i]
-
-        undefn = (name,)
-        self.macros.append (undefn)
-
-    def add_include_dir(self, dir):
-        """Add 'dir' to the list of directories that will be searched for
-        header files.  The compiler is instructed to search directories in
-        the order in which they are supplied by successive calls to
-        'add_include_dir()'.
-        """
-        self.include_dirs.append (dir)
-
-    def set_include_dirs(self, dirs):
-        """Set the list of directories that will be searched to 'dirs' (a
-        list of strings).  Overrides any preceding calls to
-        'add_include_dir()'; subsequence calls to 'add_include_dir()' add
-        to the list passed to 'set_include_dirs()'.  This does not affect
-        any list of standard include directories that the compiler may
-        search by default.
-        """
-        self.include_dirs = dirs[:]
-
-    def add_library(self, libname):
-        """Add 'libname' to the list of libraries that will be included in
-        all links driven by this compiler object.  Note that 'libname'
-        should *not* be the name of a file containing a library, but the
-        name of the library itself: the actual filename will be inferred by
-        the linker, the compiler, or the compiler class (depending on the
-        platform).
-
-        The linker will be instructed to link against libraries in the
-        order they were supplied to 'add_library()' and/or
-        'set_libraries()'.  It is perfectly valid to duplicate library
-        names; the linker will be instructed to link against libraries as
-        many times as they are mentioned.
-        """
-        self.libraries.append (libname)
-
-    def set_libraries(self, libnames):
-        """Set the list of libraries to be included in all links driven by
-        this compiler object to 'libnames' (a list of strings).  This does
-        not affect any standard system libraries that the linker may
-        include by default.
-        """
-        self.libraries = libnames[:]
-
-
-    def add_library_dir(self, dir):
-        """Add 'dir' to the list of directories that will be searched for
-        libraries specified to 'add_library()' and 'set_libraries()'.  The
-        linker will be instructed to search for libraries in the order they
-        are supplied to 'add_library_dir()' and/or 'set_library_dirs()'.
-        """
-        self.library_dirs.append(dir)
-
-    def set_library_dirs(self, dirs):
-        """Set the list of library search directories to 'dirs' (a list of
-        strings).  This does not affect any standard library search path
-        that the linker may search by default.
-        """
-        self.library_dirs = dirs[:]
-
-    def add_runtime_library_dir(self, dir):
-        """Add 'dir' to the list of directories that will be searched for
-        shared libraries at runtime.
-        """
-        self.runtime_library_dirs.append(dir)
-
-    def set_runtime_library_dirs(self, dirs):
-        """Set the list of directories to search for shared libraries at
-        runtime to 'dirs' (a list of strings).  This does not affect any
-        standard search path that the runtime linker may search by
-        default.
-        """
-        self.runtime_library_dirs = dirs[:]
-
-    def add_link_object(self, object):
-        """Add 'object' to the list of object files (or analogues, such as
-        explicitly named library files or the output of "resource
-        compilers") to be included in every link driven by this compiler
-        object.
-        """
-        self.objects.append(object)
-
-    def set_link_objects(self, objects):
-        """Set the list of object files (or analogues) to be included in
-        every link to 'objects'.  This does not affect any standard object
-        files that the linker may include by default (such as system
-        libraries).
-        """
-        self.objects = objects[:]
-
-
-    # -- Private utility methods --------------------------------------
-    # (here for the convenience of subclasses)
-
-    # Helper method to prep compiler in subclass compile() methods
-
-    def _setup_compile(self, outdir, macros, incdirs, sources, depends,
-                       extra):
-        """Process arguments and decide which source files to compile."""
-        if outdir is None:
-            outdir = self.output_dir
-        elif not isinstance(outdir, str):
-            raise TypeError, "'output_dir' must be a string or None"
-
-        if macros is None:
-            macros = self.macros
-        elif isinstance(macros, list):
-            macros = macros + (self.macros or [])
-        else:
-            raise TypeError, "'macros' (if supplied) must be a list of tuples"
-
-        if incdirs is None:
-            incdirs = self.include_dirs
-        elif isinstance(incdirs, (list, tuple)):
-            incdirs = list(incdirs) + (self.include_dirs or [])
-        else:
-            raise TypeError, \
-                  "'include_dirs' (if supplied) must be a list of strings"
-
-        if extra is None:
-            extra = []
-
-        # Get the list of expected output (object) files
-        objects = self.object_filenames(sources,
-                                        strip_dir=0,
-                                        output_dir=outdir)
-        assert len(objects) == len(sources)
-
-        pp_opts = gen_preprocess_options(macros, incdirs)
-
-        build = {}
-        for i in range(len(sources)):
-            src = sources[i]
-            obj = objects[i]
-            ext = os.path.splitext(src)[1]
-            self.mkpath(os.path.dirname(obj))
-            build[obj] = (src, ext)
-
-        return macros, objects, extra, pp_opts, build
-
-    def _get_cc_args(self, pp_opts, debug, before):
-        # works for unixccompiler, emxccompiler, cygwinccompiler
-        cc_args = pp_opts + ['-c']
-        if debug:
-            cc_args[:0] = ['-g']
-        if before:
-            cc_args[:0] = before
-        return cc_args
-
-    def _fix_compile_args(self, output_dir, macros, include_dirs):
-        """Typecheck and fix-up some of the arguments to the 'compile()'
-        method, and return fixed-up values.  Specifically: if 'output_dir'
-        is None, replaces it with 'self.output_dir'; ensures that 'macros'
-        is a list, and augments it with 'self.macros'; ensures that
-        'include_dirs' is a list, and augments it with 'self.include_dirs'.
-        Guarantees that the returned values are of the correct type,
-        i.e. for 'output_dir' either string or None, and for 'macros' and
-        'include_dirs' either list or None.
-        """
-        if output_dir is None:
-            output_dir = self.output_dir
-        elif not isinstance(output_dir, str):
-            raise TypeError, "'output_dir' must be a string or None"
-
-        if macros is None:
-            macros = self.macros
-        elif isinstance(macros, list):
-            macros = macros + (self.macros or [])
-        else:
-            raise TypeError, "'macros' (if supplied) must be a list of tuples"
-
-        if include_dirs is None:
-            include_dirs = self.include_dirs
-        elif isinstance(include_dirs, (list, tuple)):
-            include_dirs = list (include_dirs) + (self.include_dirs or [])
-        else:
-            raise TypeError, \
-                  "'include_dirs' (if supplied) must be a list of strings"
-
-        return output_dir, macros, include_dirs
-
-    def _fix_object_args(self, objects, output_dir):
-        """Typecheck and fix up some arguments supplied to various methods.
-        Specifically: ensure that 'objects' is a list; if output_dir is
-        None, replace with self.output_dir.  Return fixed versions of
-        'objects' and 'output_dir'.
-        """
-        if not isinstance(objects, (list, tuple)):
-            raise TypeError, \
-                  "'objects' must be a list or tuple of strings"
-        objects = list (objects)
-
-        if output_dir is None:
-            output_dir = self.output_dir
-        elif not isinstance(output_dir, str):
-            raise TypeError, "'output_dir' must be a string or None"
-
-        return (objects, output_dir)
-
-    def _fix_lib_args(self, libraries, library_dirs, runtime_library_dirs):
-        """Typecheck and fix up some of the arguments supplied to the
-        'link_*' methods.  Specifically: ensure that all arguments are
-        lists, and augment them with their permanent versions
-        (eg. 'self.libraries' augments 'libraries').  Return a tuple with
-        fixed versions of all arguments.
-        """
-        if libraries is None:
-            libraries = self.libraries
-        elif isinstance(libraries, (list, tuple)):
-            libraries = list (libraries) + (self.libraries or [])
-        else:
-            raise TypeError, \
-                  "'libraries' (if supplied) must be a list of strings"
-
-        if library_dirs is None:
-            library_dirs = self.library_dirs
-        elif isinstance(library_dirs, (list, tuple)):
-            library_dirs = list (library_dirs) + (self.library_dirs or [])
-        else:
-            raise TypeError, \
-                  "'library_dirs' (if supplied) must be a list of strings"
-
-        if runtime_library_dirs is None:
-            runtime_library_dirs = self.runtime_library_dirs
-        elif isinstance(runtime_library_dirs, (list, tuple)):
-            runtime_library_dirs = (list (runtime_library_dirs) +
-                                    (self.runtime_library_dirs or []))
-        else:
-            raise TypeError, \
-                  "'runtime_library_dirs' (if supplied) " + \
-                  "must be a list of strings"
-
-        return (libraries, library_dirs, runtime_library_dirs)
-
-    def _need_link(self, objects, output_file):
-        """Return true if we need to relink the files listed in 'objects'
-        to recreate 'output_file'.
-        """
-        if self.force:
-            return 1
-        else:
-            if self.dry_run:
-                newer = newer_group (objects, output_file, missing='newer')
-            else:
-                newer = newer_group (objects, output_file)
-            return newer
-
-    def detect_language(self, sources):
-        """Detect the language of a given file, or list of files. Uses
-        language_map, and language_order to do the job.
-        """
-        if not isinstance(sources, list):
-            sources = [sources]
-        lang = None
-        index = len(self.language_order)
-        for source in sources:
-            base, ext = os.path.splitext(source)
-            extlang = self.language_map.get(ext)
-            try:
-                extindex = self.language_order.index(extlang)
-                if extindex < index:
-                    lang = extlang
-                    index = extindex
-            except ValueError:
-                pass
-        return lang
-
-    # -- Worker methods ------------------------------------------------
-    # (must be implemented by subclasses)
-
-    def preprocess(self, source, output_file=None, macros=None,
-                   include_dirs=None, extra_preargs=None, extra_postargs=None):
-        """Preprocess a single C/C++ source file, named in 'source'.
-        Output will be written to file named 'output_file', or stdout if
-        'output_file' not supplied.  'macros' is a list of macro
-        definitions as for 'compile()', which will augment the macros set
-        with 'define_macro()' and 'undefine_macro()'.  'include_dirs' is a
-        list of directory names that will be added to the default list.
-
-        Raises PreprocessError on failure.
-        """
-        pass
-
-    def compile(self, sources, output_dir=None, macros=None,
-                include_dirs=None, debug=0, extra_preargs=None,
-                extra_postargs=None, depends=None):
-        """Compile one or more source files.
-
-        'sources' must be a list of filenames, most likely C/C++
-        files, but in reality anything that can be handled by a
-        particular compiler and compiler class (eg. MSVCCompiler can
-        handle resource files in 'sources').  Return a list of object
-        filenames, one per source filename in 'sources'.  Depending on
-        the implementation, not all source files will necessarily be
-        compiled, but all corresponding object filenames will be
-        returned.
-
-        If 'output_dir' is given, object files will be put under it, while
-        retaining their original path component.  That is, "foo/bar.c"
-        normally compiles to "foo/bar.o" (for a Unix implementation); if
-        'output_dir' is "build", then it would compile to
-        "build/foo/bar.o".
-
-        'macros', if given, must be a list of macro definitions.  A macro
-        definition is either a (name, value) 2-tuple or a (name,) 1-tuple.
-        The former defines a macro; if the value is None, the macro is
-        defined without an explicit value.  The 1-tuple case undefines a
-        macro.  Later definitions/redefinitions/ undefinitions take
-        precedence.
-
-        'include_dirs', if given, must be a list of strings, the
-        directories to add to the default include file search path for this
-        compilation only.
-
-        'debug' is a boolean; if true, the compiler will be instructed to
-        output debug symbols in (or alongside) the object file(s).
-
-        'extra_preargs' and 'extra_postargs' are implementation- dependent.
-        On platforms that have the notion of a command-line (e.g. Unix,
-        DOS/Windows), they are most likely lists of strings: extra
-        command-line arguments to prepand/append to the compiler command
-        line.  On other platforms, consult the implementation class
-        documentation.  In any event, they are intended as an escape hatch
-        for those occasions when the abstract compiler framework doesn't
-        cut the mustard.
-
-        'depends', if given, is a list of filenames that all targets
-        depend on.  If a source file is older than any file in
-        depends, then the source file will be recompiled.  This
-        supports dependency tracking, but only at a coarse
-        granularity.
-
-        Raises CompileError on failure.
-        """
-        # A concrete compiler class can either override this method
-        # entirely or implement _compile().
-
-        macros, objects, extra_postargs, pp_opts, build = \
-                self._setup_compile(output_dir, macros, include_dirs, sources,
-                                    depends, extra_postargs)
-        cc_args = self._get_cc_args(pp_opts, debug, extra_preargs)
-
-        for obj in objects:
-            try:
-                src, ext = build[obj]
-            except KeyError:
-                continue
-            self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
-
-        # Return *all* object filenames, not just the ones we just built.
-        return objects
-
-    def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
-        """Compile 'src' to product 'obj'."""
-
-        # A concrete compiler class that does not override compile()
-        # should implement _compile().
-        pass
-
-    def create_static_lib(self, objects, output_libname, output_dir=None,
-                          debug=0, target_lang=None):
-        """Link a bunch of stuff together to create a static library file.
-        The "bunch of stuff" consists of the list of object files supplied
-        as 'objects', the extra object files supplied to
-        'add_link_object()' and/or 'set_link_objects()', the libraries
-        supplied to 'add_library()' and/or 'set_libraries()', and the
-        libraries supplied as 'libraries' (if any).
-
-        'output_libname' should be a library name, not a filename; the
-        filename will be inferred from the library name.  'output_dir' is
-        the directory where the library file will be put.
-
-        'debug' is a boolean; if true, debugging information will be
-        included in the library (note that on most platforms, it is the
-        compile step where this matters: the 'debug' flag is included here
-        just for consistency).
-
-        'target_lang' is the target language for which the given objects
-        are being compiled. This allows specific linkage time treatment of
-        certain languages.
-
-        Raises LibError on failure.
-        """
-        pass
-
-    # values for target_desc parameter in link()
-    SHARED_OBJECT = "shared_object"
-    SHARED_LIBRARY = "shared_library"
-    EXECUTABLE = "executable"
-
-    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 a bunch of stuff together to create an executable or
-        shared library file.
-
-        The "bunch of stuff" consists of the list of object files supplied
-        as 'objects'.  'output_filename' should be a filename.  If
-        'output_dir' is supplied, 'output_filename' is relative to it
-        (i.e. 'output_filename' can provide directory components if
-        needed).
-
-        'libraries' is a list of libraries to link against.  These are
-        library names, not filenames, since they're translated into
-        filenames in a platform-specific way (eg. "foo" becomes "libfoo.a"
-        on Unix and "foo.lib" on DOS/Windows).  However, they can include a
-        directory component, which means the linker will look in that
-        specific directory rather than searching all the normal locations.
-
-        'library_dirs', if supplied, should be a list of directories to
-        search for libraries that were specified as bare library names
-        (ie. no directory component).  These are on top of the system
-        default and those supplied to 'add_library_dir()' and/or
-        'set_library_dirs()'.  'runtime_library_dirs' is a list of
-        directories that will be embedded into the shared library and used
-        to search for other shared libraries that *it* depends on at
-        run-time.  (This may only be relevant on Unix.)
-
-        'export_symbols' is a list of symbols that the shared library will
-        export.  (This appears to be relevant only on Windows.)
-
-        'debug' is as for 'compile()' and 'create_static_lib()', with the
-        slight distinction that it actually matters on most platforms (as
-        opposed to 'create_static_lib()', which includes a 'debug' flag
-        mostly for form's sake).
-
-        'extra_preargs' and 'extra_postargs' are as for 'compile()' (except
-        of course that they supply command-line arguments for the
-        particular linker being used).
-
-        'target_lang' is the target language for which the given objects
-        are being compiled. This allows specific linkage time treatment of
-        certain languages.
-
-        Raises LinkError on failure.
-        """
-        raise NotImplementedError
-
-
-    # Old 'link_*()' methods, rewritten to use the new 'link()' method.
-
-    def link_shared_lib(self, objects, output_libname, 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):
-        self.link(CCompiler.SHARED_LIBRARY, objects,
-                  self.library_filename(output_libname, lib_type='shared'),
-                  output_dir,
-                  libraries, library_dirs, runtime_library_dirs,
-                  export_symbols, debug,
-                  extra_preargs, extra_postargs, build_temp, target_lang)
-
-
-    def link_shared_object(self, 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):
-        self.link(CCompiler.SHARED_OBJECT, objects,
-                  output_filename, output_dir,
-                  libraries, library_dirs, runtime_library_dirs,
-                  export_symbols, debug,
-                  extra_preargs, extra_postargs, build_temp, target_lang)
-
-    def link_executable(self, objects, output_progname, output_dir=None,
-                        libraries=None, library_dirs=None,
-                        runtime_library_dirs=None, debug=0, extra_preargs=None,
-                        extra_postargs=None, target_lang=None):
-        self.link(CCompiler.EXECUTABLE, objects,
-                  self.executable_filename(output_progname), output_dir,
-                  libraries, library_dirs, runtime_library_dirs, None,
-                  debug, extra_preargs, extra_postargs, None, target_lang)
-
-
-    # -- Miscellaneous methods -----------------------------------------
-    # These are all used by the 'gen_lib_options() function; there is
-    # no appropriate default implementation so subclasses should
-    # implement all of these.
-
-    def library_dir_option(self, dir):
-        """Return the compiler option to add 'dir' to the list of
-        directories searched for libraries.
-        """
-        raise NotImplementedError
-
-    def runtime_library_dir_option(self, dir):
-        """Return the compiler option to add 'dir' to the list of
-        directories searched for runtime libraries.
-        """
-        raise NotImplementedError
-
-    def library_option(self, lib):
-        """Return the compiler option to add 'dir' to the list of libraries
-        linked into the shared library or executable.
-        """
-        raise NotImplementedError
-
-    def has_function(self, funcname, includes=None, include_dirs=None,
-                     libraries=None, library_dirs=None):
-        """Return a boolean indicating whether funcname is supported on
-        the current platform.  The optional arguments can be used to
-        augment the compilation environment.
-        """
-
-        # this can't be included at module scope because it tries to
-        # import math which might not be available at that point - maybe
-        # the necessary logic should just be inlined?
-        import tempfile
-        if includes is None:
-            includes = []
-        if include_dirs is None:
-            include_dirs = []
-        if libraries is None:
-            libraries = []
-        if library_dirs is None:
-            library_dirs = []
-        fd, fname = tempfile.mkstemp(".c", funcname, text=True)
-        f = os.fdopen(fd, "w")
-        try:
-            for incl in includes:
-                f.write("""#include "%s"\n""" % incl)
-            f.write("""\
-main (int argc, char **argv) {
-    %s();
-}
-""" % funcname)
-        finally:
-            f.close()
-        try:
-            objects = self.compile([fname], include_dirs=include_dirs)
-        except CompileError:
-            return False
-
-        try:
-            self.link_executable(objects, "a.out",
-                                 libraries=libraries,
-                                 library_dirs=library_dirs)
-        except (LinkError, TypeError):
-            return False
-        return True
-
-    def find_library_file (self, dirs, lib, debug=0):
-        """Search the specified list of directories for a static or shared
-        library file 'lib' and return the full path to that file.  If
-        'debug' true, look for a debugging version (if that makes sense on
-        the current platform).  Return None if 'lib' wasn't found in any of
-        the specified directories.
-        """
-        raise NotImplementedError
-
-    # -- Filename generation methods -----------------------------------
-
-    # The default implementation of the filename generating methods are
-    # prejudiced towards the Unix/DOS/Windows view of the world:
-    #   * object files are named by replacing the source file extension
-    #     (eg. .c/.cpp -> .o/.obj)
-    #   * library files (shared or static) are named by plugging the
-    #     library name and extension into a format string, eg.
-    #     "lib%s.%s" % (lib_name, ".a") for Unix static libraries
-    #   * executables are named by appending an extension (possibly
-    #     empty) to the program name: eg. progname + ".exe" for
-    #     Windows
-    #
-    # To reduce redundant code, these methods expect to find
-    # several attributes in the current object (presumably defined
-    # as class attributes):
-    #   * src_extensions -
-    #     list of C/C++ source file extensions, eg. ['.c', '.cpp']
-    #   * obj_extension -
-    #     object file extension, eg. '.o' or '.obj'
-    #   * static_lib_extension -
-    #     extension for static library files, eg. '.a' or '.lib'
-    #   * shared_lib_extension -
-    #     extension for shared library/object files, eg. '.so', '.dll'
-    #   * static_lib_format -
-    #     format string for generating static library filenames,
-    #     eg. 'lib%s.%s' or '%s.%s'
-    #   * shared_lib_format
-    #     format string for generating shared library filenames
-    #     (probably same as static_lib_format, since the extension
-    #     is one of the intended parameters to the format string)
-    #   * exe_extension -
-    #     extension for executable files, eg. '' or '.exe'
-
-    def object_filenames(self, source_filenames, strip_dir=0, output_dir=''):
-        if output_dir is None:
-            output_dir = ''
-        obj_names = []
-        for src_name in source_filenames:
-            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:
-                raise UnknownFileError, \
-                      "unknown file type '%s' (from '%s')" % (ext, src_name)
-            if strip_dir:
-                base = os.path.basename(base)
-            obj_names.append(os.path.join(output_dir,
-                                          base + self.obj_extension))
-        return obj_names
-
-    def shared_object_filename(self, basename, strip_dir=0, output_dir=''):
-        assert output_dir is not None
-        if strip_dir:
-            basename = os.path.basename (basename)
-        return os.path.join(output_dir, basename + self.shared_lib_extension)
-
-    def executable_filename(self, basename, strip_dir=0, output_dir=''):
-        assert output_dir is not None
-        if strip_dir:
-            basename = os.path.basename (basename)
-        return os.path.join(output_dir, basename + (self.exe_extension or ''))
-
-    def library_filename(self, libname, lib_type='static',     # or 'shared'
-                         strip_dir=0, output_dir=''):
-        assert output_dir is not None
-        if lib_type not in ("static", "shared", "dylib"):
-            raise ValueError, "'lib_type' must be \"static\", \"shared\" or \"dylib\""
-        fmt = getattr(self, lib_type + "_lib_format")
-        ext = getattr(self, lib_type + "_lib_extension")
-
-        dir, base = os.path.split (libname)
-        filename = fmt % (base, ext)
-        if strip_dir:
-            dir = ''
-
-        return os.path.join(output_dir, dir, filename)
-
-
-    # -- Utility methods -----------------------------------------------
-
-    def announce(self, msg, level=1):
-        log.debug(msg)
-
-    def debug_print(self, msg):
-        from distutils.debug import DEBUG
-        if DEBUG:
-            print msg
-
-    def warn(self, msg):
-        sys.stderr.write("warning: %s\n" % msg)
-
-    def execute(self, func, args, msg=None, level=1):
-        execute(func, args, msg, self.dry_run)
-
-    def spawn(self, cmd):
-        spawn(cmd, dry_run=self.dry_run)
-
-    def move_file(self, src, dst):
-        return move_file(src, dst, dry_run=self.dry_run)
-
-    def mkpath(self, name, mode=0777):
-        mkpath(name, mode, dry_run=self.dry_run)
-
-
-# class CCompiler
-
-
-# Map a sys.platform/os.name ('posix', 'nt') to the default compiler
-# type for that platform. Keys are interpreted as re match
-# patterns. Order is important; platform mappings are preferred over
-# OS names.
-_default_compilers = (
-
-    # Platform string mappings
-
-    # on a cygwin built python we can use gcc like an ordinary UNIXish
-    # compiler
-    ('cygwin.*', 'unix'),
-    ('os2emx', 'emx'),
-
-    # OS name mappings
-    ('posix', 'unix'),
-    ('nt', 'msvc'),
-
-    )
-
-def get_default_compiler(osname=None, platform=None):
-    """ Determine the default compiler to use for the given platform.
-
-        osname should be one of the standard Python OS names (i.e. the
-        ones returned by os.name) and platform the common value
-        returned by sys.platform for the platform in question.
-
-        The default values are os.name and sys.platform in case the
-        parameters are not given.
-
-    """
-    if osname is None:
-        osname = os.name
-    if platform is None:
-        platform = sys.platform
-    for pattern, compiler in _default_compilers:
-        if re.match(pattern, platform) is not None or \
-           re.match(pattern, osname) is not None:
-            return compiler
-    # Default to Unix compiler
-    return 'unix'
-
-# Map compiler types to (module_name, class_name) pairs -- ie. where to
-# find the code that implements an interface to this compiler.  (The module
-# is assumed to be in the 'distutils' package.)
-compiler_class = { 'unix':    ('unixccompiler', 'UnixCCompiler',
-                               "standard UNIX-style compiler"),
-                   'msvc':    ('msvccompiler', 'MSVCCompiler',
-                               "Microsoft Visual C++"),
-                   'cygwin':  ('cygwinccompiler', 'CygwinCCompiler',
-                               "Cygwin port of GNU C Compiler for Win32"),
-                   'mingw32': ('cygwinccompiler', 'Mingw32CCompiler',
-                               "Mingw32 port of GNU C Compiler for Win32"),
-                   'bcpp':    ('bcppcompiler', 'BCPPCompiler',
-                               "Borland C++ Compiler"),
-                   'emx':     ('emxccompiler', 'EMXCCompiler',
-                               "EMX port of GNU C Compiler for OS/2"),
-                 }
-
-def show_compilers():
-    """Print list of available compilers (used by the "--help-compiler"
-    options to "build", "build_ext", "build_clib").
-    """
-    # XXX this "knows" that the compiler option it's describing is
-    # "--compiler", which just happens to be the case for the three
-    # commands that use it.
-    from distutils.fancy_getopt import FancyGetopt
-    compilers = []
-    for compiler in compiler_class.keys():
-        compilers.append(("compiler="+compiler, None,
-                          compiler_class[compiler][2]))
-    compilers.sort()
-    pretty_printer = FancyGetopt(compilers)
-    pretty_printer.print_help("List of available compilers:")
-
-
-def new_compiler(plat=None, compiler=None, verbose=0, dry_run=0, force=0):
-    """Generate an instance of some CCompiler subclass for the supplied
-    platform/compiler combination.  'plat' defaults to 'os.name'
-    (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler
-    for that platform.  Currently only 'posix' and 'nt' are supported, and
-    the default compilers are "traditional Unix interface" (UnixCCompiler
-    class) and Visual C++ (MSVCCompiler class).  Note that it's perfectly
-    possible to ask for a Unix compiler object under Windows, and a
-    Microsoft compiler object under Unix -- if you supply a value for
-    'compiler', 'plat' is ignored.
-    """
-    if plat is None:
-        plat = os.name
-
-    try:
-        if compiler is None:
-            compiler = get_default_compiler(plat)
-
-        (module_name, class_name, long_description) = compiler_class[compiler]
-    except KeyError:
-        msg = "don't know how to compile C/C++ code on platform '%s'" % plat
-        if compiler is not None:
-            msg = msg + " with '%s' compiler" % compiler
-        raise DistutilsPlatformError, msg
-
-    try:
-        module_name = "distutils." + module_name
-        __import__ (module_name)
-        module = sys.modules[module_name]
-        klass = vars(module)[class_name]
-    except ImportError:
-        raise DistutilsModuleError, \
-              "can't compile C/C++ code: unable to load module '%s'" % \
-              module_name
-    except KeyError:
-        raise DistutilsModuleError, \
-              ("can't compile C/C++ code: unable to find class '%s' " +
-               "in module '%s'") % (class_name, module_name)
-
-    # XXX The None is necessary to preserve backwards compatibility
-    # with classes that expect verbose to be the first positional
-    # argument.
-    return klass(None, dry_run, force)
-
-
-def gen_preprocess_options(macros, include_dirs):
-    """Generate C pre-processor options (-D, -U, -I) as used by at least
-    two types of compilers: the typical Unix compiler and Visual C++.
-    'macros' is the usual thing, a list of 1- or 2-tuples, where (name,)
-    means undefine (-U) macro 'name', and (name,value) means define (-D)
-    macro 'name' to 'value'.  'include_dirs' is just a list of directory
-    names to be added to the header file search path (-I).  Returns a list
-    of command-line options suitable for either Unix compilers or Visual
-    C++.
-    """
-    # XXX it would be nice (mainly aesthetic, and so we don't generate
-    # stupid-looking command lines) to go over 'macros' and eliminate
-    # redundant definitions/undefinitions (ie. ensure that only the
-    # latest mention of a particular macro winds up on the command
-    # line).  I don't think it's essential, though, since most (all?)
-    # Unix C compilers only pay attention to the latest -D or -U
-    # mention of a macro on their command line.  Similar situation for
-    # 'include_dirs'.  I'm punting on both for now.  Anyways, weeding out
-    # redundancies like this should probably be the province of
-    # CCompiler, since the data structures used are inherited from it
-    # and therefore common to all CCompiler classes.
-
-    pp_opts = []
-    for macro in macros:
-
-        if not (isinstance(macro, tuple) and
-                1 <= len (macro) <= 2):
-            raise TypeError, \
-                  ("bad macro definition '%s': " +
-                   "each element of 'macros' list must be a 1- or 2-tuple") % \
-                  macro
-
-        if len (macro) == 1:        # undefine this macro
-            pp_opts.append ("-U%s" % macro[0])
-        elif len (macro) == 2:
-            if macro[1] is None:    # define with no explicit value
-                pp_opts.append ("-D%s" % macro[0])
-            else:
-                # XXX *don't* need to be clever about quoting the
-                # macro value here, because we're going to avoid the
-                # shell at all costs when we spawn the command!
-                pp_opts.append ("-D%s=%s" % macro)
-
-    for dir in include_dirs:
-        pp_opts.append ("-I%s" % dir)
-
-    return pp_opts
-
-
-def gen_lib_options(compiler, library_dirs, runtime_library_dirs, libraries):
-    """Generate linker options for searching library directories and
-    linking with specific libraries.
-
-    'libraries' and 'library_dirs' are, respectively, lists of library names
-    (not filenames!) and search directories.  Returns a list of command-line
-    options suitable for use with some compiler (depending on the two format
-    strings passed in).
-    """
-    lib_opts = []
-
-    for dir in library_dirs:
-        lib_opts.append(compiler.library_dir_option(dir))
-
-    for dir in runtime_library_dirs:
-        opt = compiler.runtime_library_dir_option(dir)
-        if isinstance(opt, list):
-            lib_opts.extend(opt)
-        else:
-            lib_opts.append(opt)
-
-    # XXX it's important that we *not* remove redundant library mentions!
-    # sometimes you really do have to say "-lfoo -lbar -lfoo" in order to
-    # resolve all symbols.  I just hope we never have to say "-lfoo obj.o
-    # -lbar" to get things to work -- that's certainly a possibility, but a
-    # pretty nasty way to arrange your C code.
-
-    for lib in libraries:
-        lib_dir, lib_name = os.path.split(lib)
-        if lib_dir != '':
-            lib_file = compiler.find_library_file([lib_dir], lib_name)
-            if lib_file is not None:
-                lib_opts.append(lib_file)
-            else:
-                compiler.warn("no library file corresponding to "
-                              "'%s' found (skipping)" % lib)
-        else:
-            lib_opts.append(compiler.library_option(lib))
-
-    return lib_opts
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/cmd.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/cmd.py
deleted file mode 100644
index ed7822a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/cmd.py
+++ /dev/null
@@ -1,457 +0,0 @@
-"""distutils.cmd
-
-Provides the Command class, the base class for the command classes
-in the distutils.command package.
-"""
-
-__revision__ = "$Id$"
-
-import sys, os, re
-from distutils.errors import DistutilsOptionError
-from distutils import util, dir_util, file_util, archive_util, dep_util
-from distutils import log
-
-class Command:
-    """Abstract base class for defining command classes, the "worker bees"
-    of the Distutils.  A useful analogy for command classes is to think of
-    them as subroutines with local variables called "options".  The options
-    are "declared" in 'initialize_options()' and "defined" (given their
-    final values, aka "finalized") in 'finalize_options()', both of which
-    must be defined by every command class.  The distinction between the
-    two is necessary because option values might come from the outside
-    world (command line, config file, ...), and any options dependent on
-    other options must be computed *after* these outside influences have
-    been processed -- hence 'finalize_options()'.  The "body" of the
-    subroutine, where it does all its work based on the values of its
-    options, is the 'run()' method, which must also be implemented by every
-    command class.
-    """
-
-    # 'sub_commands' formalizes the notion of a "family" of commands,
-    # eg. "install" as the parent with sub-commands "install_lib",
-    # "install_headers", etc.  The parent of a family of commands
-    # defines 'sub_commands' as a class attribute; it's a list of
-    #    (command_name : string, predicate : unbound_method | string | None)
-    # tuples, where 'predicate' is a method of the parent command that
-    # determines whether the corresponding command is applicable in the
-    # current situation.  (Eg. we "install_headers" is only applicable if
-    # we have any C header files to install.)  If 'predicate' is None,
-    # that command is always applicable.
-    #
-    # 'sub_commands' is usually defined at the *end* of a class, because
-    # predicates can be unbound methods, so they must already have been
-    # defined.  The canonical example is the "install" command.
-    sub_commands = []
-
-
-    # -- Creation/initialization methods -------------------------------
-
-    def __init__(self, dist):
-        """Create and initialize a new Command object.  Most importantly,
-        invokes the 'initialize_options()' method, which is the real
-        initializer and depends on the actual command being
-        instantiated.
-        """
-        # late import because of mutual dependence between these classes
-        from distutils.dist import Distribution
-
-        if not isinstance(dist, Distribution):
-            raise TypeError, "dist must be a Distribution instance"
-        if self.__class__ is Command:
-            raise RuntimeError, "Command is an abstract class"
-
-        self.distribution = dist
-        self.initialize_options()
-
-        # Per-command versions of the global flags, so that the user can
-        # customize Distutils' behaviour command-by-command and let some
-        # commands fall back on the Distribution's behaviour.  None means
-        # "not defined, check self.distribution's copy", while 0 or 1 mean
-        # false and true (duh).  Note that this means figuring out the real
-        # value of each flag is a touch complicated -- hence "self._dry_run"
-        # will be handled by __getattr__, below.
-        # XXX This needs to be fixed.
-        self._dry_run = None
-
-        # verbose is largely ignored, but needs to be set for
-        # backwards compatibility (I think)?
-        self.verbose = dist.verbose
-
-        # Some commands define a 'self.force' option to ignore file
-        # timestamps, but methods defined *here* assume that
-        # 'self.force' exists for all commands.  So define it here
-        # just to be safe.
-        self.force = None
-
-        # The 'help' flag is just used for command-line parsing, so
-        # none of that complicated bureaucracy is needed.
-        self.help = 0
-
-        # 'finalized' records whether or not 'finalize_options()' has been
-        # called.  'finalize_options()' itself should not pay attention to
-        # this flag: it is the business of 'ensure_finalized()', which
-        # always calls 'finalize_options()', to respect/update it.
-        self.finalized = 0
-
-    # XXX A more explicit way to customize dry_run would be better.
-    def __getattr__(self, attr):
-        if attr == 'dry_run':
-            myval = getattr(self, "_" + attr)
-            if myval is None:
-                return getattr(self.distribution, attr)
-            else:
-                return myval
-        else:
-            raise AttributeError, attr
-
-    def ensure_finalized(self):
-        if not self.finalized:
-            self.finalize_options()
-        self.finalized = 1
-
-    # Subclasses must define:
-    #   initialize_options()
-    #     provide default values for all options; may be customized by
-    #     setup script, by options from config file(s), or by command-line
-    #     options
-    #   finalize_options()
-    #     decide on the final values for all options; this is called
-    #     after all possible intervention from the outside world
-    #     (command-line, option file, etc.) has been processed
-    #   run()
-    #     run the command: do whatever it is we're here to do,
-    #     controlled by the command's various option values
-
-    def initialize_options(self):
-        """Set default values for all the options that this command
-        supports.  Note that these defaults may be overridden by other
-        commands, by the setup script, by config files, or by the
-        command-line.  Thus, this is not the place to code dependencies
-        between options; generally, 'initialize_options()' implementations
-        are just a bunch of "self.foo = None" assignments.
-
-        This method must be implemented by all command classes.
-        """
-        raise RuntimeError, \
-              "abstract method -- subclass %s must override" % self.__class__
-
-    def finalize_options(self):
-        """Set final values for all the options that this command supports.
-        This is always called as late as possible, ie.  after any option
-        assignments from the command-line or from other commands have been
-        done.  Thus, this is the place to code option dependencies: if
-        'foo' depends on 'bar', then it is safe to set 'foo' from 'bar' as
-        long as 'foo' still has the same value it was assigned in
-        'initialize_options()'.
-
-        This method must be implemented by all command classes.
-        """
-        raise RuntimeError, \
-              "abstract method -- subclass %s must override" % self.__class__
-
-
-    def dump_options(self, header=None, indent=""):
-        from distutils.fancy_getopt import longopt_xlate
-        if header is None:
-            header = "command options for '%s':" % self.get_command_name()
-        self.announce(indent + header, level=log.INFO)
-        indent = indent + "  "
-        for (option, _, _) in self.user_options:
-            option = option.translate(longopt_xlate)
-            if option[-1] == "=":
-                option = option[:-1]
-            value = getattr(self, option)
-            self.announce(indent + "%s = %s" % (option, value),
-                          level=log.INFO)
-
-    def run(self):
-        """A command's raison d'etre: carry out the action it exists to
-        perform, controlled by the options initialized in
-        'initialize_options()', customized by other commands, the setup
-        script, the command-line, and config files, and finalized in
-        'finalize_options()'.  All terminal output and filesystem
-        interaction should be done by 'run()'.
-
-        This method must be implemented by all command classes.
-        """
-        raise RuntimeError, \
-              "abstract method -- subclass %s must override" % self.__class__
-
-    def announce(self, msg, level=1):
-        """If the current verbosity level is of greater than or equal to
-        'level' print 'msg' to stdout.
-        """
-        log.log(level, msg)
-
-    def debug_print(self, msg):
-        """Print 'msg' to stdout if the global DEBUG (taken from the
-        DISTUTILS_DEBUG environment variable) flag is true.
-        """
-        from distutils.debug import DEBUG
-        if DEBUG:
-            print msg
-            sys.stdout.flush()
-
-
-    # -- Option validation methods -------------------------------------
-    # (these are very handy in writing the 'finalize_options()' method)
-    #
-    # NB. the general philosophy here is to ensure that a particular option
-    # value meets certain type and value constraints.  If not, we try to
-    # force it into conformance (eg. if we expect a list but have a string,
-    # split the string on comma and/or whitespace).  If we can't force the
-    # option into conformance, raise DistutilsOptionError.  Thus, command
-    # classes need do nothing more than (eg.)
-    #   self.ensure_string_list('foo')
-    # and they can be guaranteed that thereafter, self.foo will be
-    # a list of strings.
-
-    def _ensure_stringlike(self, option, what, default=None):
-        val = getattr(self, option)
-        if val is None:
-            setattr(self, option, default)
-            return default
-        elif not isinstance(val, str):
-            raise DistutilsOptionError, \
-                  "'%s' must be a %s (got `%s`)" % (option, what, val)
-        return val
-
-    def ensure_string(self, option, default=None):
-        """Ensure that 'option' is a string; if not defined, set it to
-        'default'.
-        """
-        self._ensure_stringlike(option, "string", default)
-
-    def ensure_string_list(self, option):
-        """Ensure that 'option' is a list of strings.  If 'option' is
-        currently a string, we split it either on /,\s*/ or /\s+/, so
-        "foo bar baz", "foo,bar,baz", and "foo,   bar baz" all become
-        ["foo", "bar", "baz"].
-        """
-        val = getattr(self, option)
-        if val is None:
-            return
-        elif isinstance(val, str):
-            setattr(self, option, re.split(r',\s*|\s+', val))
-        else:
-            if isinstance(val, list):
-                # checks if all elements are str
-                ok = 1
-                for element in val:
-                    if not isinstance(element, str):
-                        ok = 0
-                        break
-            else:
-                ok = 0
-
-            if not ok:
-                raise DistutilsOptionError, \
-                    "'%s' must be a list of strings (got %r)" % \
-                        (option, val)
-
-
-    def _ensure_tested_string(self, option, tester,
-                              what, error_fmt, default=None):
-        val = self._ensure_stringlike(option, what, default)
-        if val is not None and not tester(val):
-            raise DistutilsOptionError, \
-                  ("error in '%s' option: " + error_fmt) % (option, val)
-
-    def ensure_filename(self, option):
-        """Ensure that 'option' is the name of an existing file."""
-        self._ensure_tested_string(option, os.path.isfile,
-                                   "filename",
-                                   "'%s' does not exist or is not a file")
-
-    def ensure_dirname(self, option):
-        self._ensure_tested_string(option, os.path.isdir,
-                                   "directory name",
-                                   "'%s' does not exist or is not a directory")
-
-
-    # -- Convenience methods for commands ------------------------------
-
-    def get_command_name(self):
-        if hasattr(self, 'command_name'):
-            return self.command_name
-        else:
-            return self.__class__.__name__
-
-    def set_undefined_options(self, src_cmd, *option_pairs):
-        """Set the values of any "undefined" options from corresponding
-        option values in some other command object.  "Undefined" here means
-        "is None", which is the convention used to indicate that an option
-        has not been changed between 'initialize_options()' and
-        'finalize_options()'.  Usually called from 'finalize_options()' for
-        options that depend on some other command rather than another
-        option of the same command.  'src_cmd' is the other command from
-        which option values will be taken (a command object will be created
-        for it if necessary); the remaining arguments are
-        '(src_option,dst_option)' tuples which mean "take the value of
-        'src_option' in the 'src_cmd' command object, and copy it to
-        'dst_option' in the current command object".
-        """
-
-        # Option_pairs: list of (src_option, dst_option) tuples
-
-        src_cmd_obj = self.distribution.get_command_obj(src_cmd)
-        src_cmd_obj.ensure_finalized()
-        for (src_option, dst_option) in option_pairs:
-            if getattr(self, dst_option) is None:
-                setattr(self, dst_option,
-                        getattr(src_cmd_obj, src_option))
-
-
-    def get_finalized_command(self, command, create=1):
-        """Wrapper around Distribution's 'get_command_obj()' method: find
-        (create if necessary and 'create' is true) the command object for
-        'command', call its 'ensure_finalized()' method, and return the
-        finalized command object.
-        """
-        cmd_obj = self.distribution.get_command_obj(command, create)
-        cmd_obj.ensure_finalized()
-        return cmd_obj
-
-    # XXX rename to 'get_reinitialized_command()'? (should do the
-    # same in dist.py, if so)
-    def reinitialize_command(self, command, reinit_subcommands=0):
-        return self.distribution.reinitialize_command(
-            command, reinit_subcommands)
-
-    def run_command(self, command):
-        """Run some other command: uses the 'run_command()' method of
-        Distribution, which creates and finalizes the command object if
-        necessary and then invokes its 'run()' method.
-        """
-        self.distribution.run_command(command)
-
-    def get_sub_commands(self):
-        """Determine the sub-commands that are relevant in the current
-        distribution (ie., that need to be run).  This is based on the
-        'sub_commands' class attribute: each tuple in that list may include
-        a method that we call to determine if the subcommand needs to be
-        run for the current distribution.  Return a list of command names.
-        """
-        commands = []
-        for (cmd_name, method) in self.sub_commands:
-            if method is None or method(self):
-                commands.append(cmd_name)
-        return commands
-
-
-    # -- External world manipulation -----------------------------------
-
-    def warn(self, msg):
-        log.warn("warning: %s: %s\n" %
-                (self.get_command_name(), msg))
-
-    def execute(self, func, args, msg=None, level=1):
-        util.execute(func, args, msg, dry_run=self.dry_run)
-
-    def mkpath(self, name, mode=0777):
-        dir_util.mkpath(name, mode, dry_run=self.dry_run)
-
-    def copy_file(self, infile, outfile,
-                   preserve_mode=1, preserve_times=1, link=None, level=1):
-        """Copy a file respecting verbose, dry-run and force flags.  (The
-        former two default to whatever is in the Distribution object, and
-        the latter defaults to false for commands that don't define it.)"""
-
-        return file_util.copy_file(
-            infile, outfile,
-            preserve_mode, preserve_times,
-            not self.force,
-            link,
-            dry_run=self.dry_run)
-
-    def copy_tree(self, infile, outfile,
-                   preserve_mode=1, preserve_times=1, preserve_symlinks=0,
-                   level=1):
-        """Copy an entire directory tree respecting verbose, dry-run,
-        and force flags.
-        """
-        return dir_util.copy_tree(
-            infile, outfile,
-            preserve_mode,preserve_times,preserve_symlinks,
-            not self.force,
-            dry_run=self.dry_run)
-
-    def move_file (self, src, dst, level=1):
-        """Move a file respecting dry-run flag."""
-        return file_util.move_file(src, dst, dry_run = self.dry_run)
-
-    def spawn (self, cmd, search_path=1, level=1):
-        """Spawn an external command respecting dry-run flag."""
-        from distutils.spawn import spawn
-        spawn(cmd, search_path, dry_run= self.dry_run)
-
-    def make_archive(self, base_name, format, root_dir=None, base_dir=None,
-                     owner=None, group=None):
-        return archive_util.make_archive(base_name, format, root_dir,
-                                         base_dir, dry_run=self.dry_run,
-                                         owner=owner, group=group)
-
-    def make_file(self, infiles, outfile, func, args,
-                  exec_msg=None, skip_msg=None, level=1):
-        """Special case of 'execute()' for operations that process one or
-        more input files and generate one output file.  Works just like
-        'execute()', except the operation is skipped and a different
-        message printed if 'outfile' already exists and is newer than all
-        files listed in 'infiles'.  If the command defined 'self.force',
-        and it is true, then the command is unconditionally run -- does no
-        timestamp checks.
-        """
-        if skip_msg is None:
-            skip_msg = "skipping %s (inputs unchanged)" % outfile
-
-        # Allow 'infiles' to be a single string
-        if isinstance(infiles, str):
-            infiles = (infiles,)
-        elif not isinstance(infiles, (list, tuple)):
-            raise TypeError, \
-                  "'infiles' must be a string, or a list or tuple of strings"
-
-        if exec_msg is None:
-            exec_msg = "generating %s from %s" % \
-                       (outfile, ', '.join(infiles))
-
-        # If 'outfile' must be regenerated (either because it doesn't
-        # exist, is out-of-date, or the 'force' flag is true) then
-        # perform the action that presumably regenerates it
-        if self.force or dep_util.newer_group(infiles, outfile):
-            self.execute(func, args, exec_msg, level)
-
-        # Otherwise, print the "skip" message
-        else:
-            log.debug(skip_msg)
-
-# XXX 'install_misc' class not currently used -- it was the base class for
-# both 'install_scripts' and 'install_data', but they outgrew it.  It might
-# still be useful for 'install_headers', though, so I'm keeping it around
-# for the time being.
-
-class install_misc(Command):
-    """Common base class for installing some files in a subdirectory.
-    Currently used by install_data and install_scripts.
-    """
-
-    user_options = [('install-dir=', 'd', "directory to install the files to")]
-
-    def initialize_options (self):
-        self.install_dir = None
-        self.outfiles = []
-
-    def _install_dir_from(self, dirname):
-        self.set_undefined_options('install', (dirname, 'install_dir'))
-
-    def _copy_files(self, filelist):
-        self.outfiles = []
-        if not filelist:
-            return
-        self.mkpath(self.install_dir)
-        for f in filelist:
-            self.copy_file(f, self.install_dir)
-            self.outfiles.append(os.path.join(self.install_dir, f))
-
-    def get_outputs(self):
-        return self.outfiles
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/__init__.py
deleted file mode 100644
index d7e1ad6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/__init__.py
+++ /dev/null
@@ -1,33 +0,0 @@
-"""distutils.command
-
-Package containing implementation of all the standard Distutils
-commands."""
-
-__revision__ = "$Id$"
-
-__all__ = ['build',
-           'build_py',
-           'build_ext',
-           'build_clib',
-           'build_scripts',
-           'clean',
-           'install',
-           'install_lib',
-           'install_headers',
-           'install_scripts',
-           'install_data',
-           'sdist',
-           'register',
-           'bdist',
-           'bdist_dumb',
-           'bdist_rpm',
-           'bdist_wininst',
-           'upload',
-           'check',
-           # These two are reserved for future use:
-           #'bdist_sdux',
-           #'bdist_pkgtool',
-           # Note:
-           # bdist_packager is not included because it only provides
-           # an abstract base class
-          ]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist.py
deleted file mode 100644
index 470c2db..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist.py
+++ /dev/null
@@ -1,146 +0,0 @@
-"""distutils.command.bdist
-
-Implements the Distutils 'bdist' command (create a built [binary]
-distribution)."""
-
-__revision__ = "$Id$"
-
-import os
-
-from distutils.util import get_platform
-from distutils.core import Command
-from distutils.errors import DistutilsPlatformError, DistutilsOptionError
-
-
-def show_formats():
-    """Print list of available formats (arguments to "--format" option).
-    """
-    from distutils.fancy_getopt import FancyGetopt
-    formats = []
-    for format in bdist.format_commands:
-        formats.append(("formats=" + format, None,
-                        bdist.format_command[format][1]))
-    pretty_printer = FancyGetopt(formats)
-    pretty_printer.print_help("List of available distribution formats:")
-
-
-class bdist(Command):
-
-    description = "create a built (binary) distribution"
-
-    user_options = [('bdist-base=', 'b',
-                     "temporary directory for creating built distributions"),
-                    ('plat-name=', 'p',
-                     "platform name to embed in generated filenames "
-                     "(default: %s)" % get_platform()),
-                    ('formats=', None,
-                     "formats for distribution (comma-separated list)"),
-                    ('dist-dir=', 'd',
-                     "directory to put final built distributions in "
-                     "[default: dist]"),
-                    ('skip-build', None,
-                     "skip rebuilding everything (for testing/debugging)"),
-                    ('owner=', 'u',
-                     "Owner name used when creating a tar file"
-                     " [default: current user]"),
-                    ('group=', 'g',
-                     "Group name used when creating a tar file"
-                     " [default: current group]"),
-                   ]
-
-    boolean_options = ['skip-build']
-
-    help_options = [
-        ('help-formats', None,
-         "lists available distribution formats", show_formats),
-        ]
-
-    # The following commands do not take a format option from bdist
-    no_format_option = ('bdist_rpm',)
-
-    # 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',
-                      'os2': 'zip'}
-
-    # Establish the preferred order (for the --help-formats option).
-    format_commands = ['rpm', 'gztar', 'bztar', 'ztar', 'tar',
-                       'wininst', 'zip', 'msi']
-
-    # And the real information.
-    format_command = {'rpm':   ('bdist_rpm',  "RPM distribution"),
-                      'gztar': ('bdist_dumb', "gzip'ed tar file"),
-                      'bztar': ('bdist_dumb', "bzip2'ed tar file"),
-                      'ztar':  ('bdist_dumb', "compressed tar file"),
-                      'tar':   ('bdist_dumb', "tar file"),
-                      'wininst': ('bdist_wininst',
-                                  "Windows executable installer"),
-                      'zip':   ('bdist_dumb', "ZIP file"),
-                      'msi':   ('bdist_msi',  "Microsoft Installer")
-                      }
-
-
-    def initialize_options(self):
-        self.bdist_base = None
-        self.plat_name = None
-        self.formats = None
-        self.dist_dir = None
-        self.skip_build = 0
-        self.group = None
-        self.owner = None
-
-    def finalize_options(self):
-        # have to finalize 'plat_name' before 'bdist_base'
-        if self.plat_name is None:
-            if self.skip_build:
-                self.plat_name = get_platform()
-            else:
-                self.plat_name = self.get_finalized_command('build').plat_name
-
-        # 'bdist_base' -- parent of per-built-distribution-format
-        # temporary directories (eg. we'll probably have
-        # "build/bdist.<plat>/dumb", "build/bdist.<plat>/rpm", etc.)
-        if self.bdist_base is None:
-            build_base = self.get_finalized_command('build').build_base
-            self.bdist_base = os.path.join(build_base,
-                                           'bdist.' + self.plat_name)
-
-        self.ensure_string_list('formats')
-        if self.formats is None:
-            try:
-                self.formats = [self.default_format[os.name]]
-            except KeyError:
-                raise DistutilsPlatformError, \
-                      "don't know how to create built distributions " + \
-                      "on platform %s" % os.name
-
-        if self.dist_dir is None:
-            self.dist_dir = "dist"
-
-    def run(self):
-        # Figure out which sub-commands we need to run.
-        commands = []
-        for format in self.formats:
-            try:
-                commands.append(self.format_command[format][0])
-            except KeyError:
-                raise DistutilsOptionError, "invalid format '%s'" % format
-
-        # Reinitialize and run each command.
-        for i in range(len(self.formats)):
-            cmd_name = commands[i]
-            sub_cmd = self.reinitialize_command(cmd_name)
-            if cmd_name not in self.no_format_option:
-                sub_cmd.format = self.formats[i]
-
-            # passing the owner and group names for tar archiving
-            if cmd_name == 'bdist_dumb':
-                sub_cmd.owner = self.owner
-                sub_cmd.group = self.group
-
-            # If we're going to need to run this command again, tell it to
-            # keep its temporary files around so subsequent runs go faster.
-            if cmd_name in commands[i+1:]:
-                sub_cmd.keep_temp = 1
-            self.run_command(cmd_name)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_dumb.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_dumb.py
deleted file mode 100644
index 5dd31ed..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_dumb.py
+++ /dev/null
@@ -1,132 +0,0 @@
-"""distutils.command.bdist_dumb
-
-Implements the Distutils 'bdist_dumb' command (create a "dumb" built
-distribution -- i.e., just an archive to be unpacked under $prefix or
-$exec_prefix)."""
-
-__revision__ = "$Id$"
-
-import os
-
-from sysconfig import get_python_version
-
-from distutils.util import get_platform
-from distutils.core import Command
-from distutils.dir_util import remove_tree, ensure_relative
-from distutils.errors import DistutilsPlatformError
-from distutils import log
-
-class bdist_dumb (Command):
-
-    description = 'create a "dumb" built distribution'
-
-    user_options = [('bdist-dir=', 'd',
-                     "temporary directory for creating the distribution"),
-                    ('plat-name=', 'p',
-                     "platform name to embed in generated filenames "
-                     "(default: %s)" % get_platform()),
-                    ('format=', 'f',
-                     "archive format to create (tar, ztar, gztar, zip)"),
-                    ('keep-temp', 'k',
-                     "keep the pseudo-installation tree around after " +
-                     "creating the distribution archive"),
-                    ('dist-dir=', 'd',
-                     "directory to put final built distributions in"),
-                    ('skip-build', None,
-                     "skip rebuilding everything (for testing/debugging)"),
-                    ('relative', None,
-                     "build the archive using relative paths"
-                     "(default: false)"),
-                    ('owner=', 'u',
-                     "Owner name used when creating a tar file"
-                     " [default: current user]"),
-                    ('group=', 'g',
-                     "Group name used when creating a tar file"
-                     " [default: current group]"),
-                   ]
-
-    boolean_options = ['keep-temp', 'skip-build', 'relative']
-
-    default_format = { 'posix': 'gztar',
-                       'nt': 'zip',
-                       'os2': 'zip' }
-
-
-    def initialize_options (self):
-        self.bdist_dir = None
-        self.plat_name = None
-        self.format = None
-        self.keep_temp = 0
-        self.dist_dir = None
-        self.skip_build = 0
-        self.relative = 0
-        self.owner = None
-        self.group = None
-
-    def finalize_options(self):
-        if self.bdist_dir is None:
-            bdist_base = self.get_finalized_command('bdist').bdist_base
-            self.bdist_dir = os.path.join(bdist_base, 'dumb')
-
-        if self.format is None:
-            try:
-                self.format = self.default_format[os.name]
-            except KeyError:
-                raise DistutilsPlatformError, \
-                      ("don't know how to create dumb built distributions " +
-                       "on platform %s") % os.name
-
-        self.set_undefined_options('bdist',
-                                   ('dist_dir', 'dist_dir'),
-                                   ('plat_name', 'plat_name'))
-
-    def run(self):
-        if not self.skip_build:
-            self.run_command('build')
-
-        install = self.reinitialize_command('install', reinit_subcommands=1)
-        install.root = self.bdist_dir
-        install.skip_build = self.skip_build
-        install.warn_dir = 0
-
-        log.info("installing to %s" % self.bdist_dir)
-        self.run_command('install')
-
-        # And make an archive relative to the root of the
-        # pseudo-installation tree.
-        archive_basename = "%s.%s" % (self.distribution.get_fullname(),
-                                      self.plat_name)
-
-        # OS/2 objects to any ":" characters in a filename (such as when
-        # a timestamp is used in a version) so change them to hyphens.
-        if os.name == "os2":
-            archive_basename = archive_basename.replace(":", "-")
-
-        pseudoinstall_root = os.path.join(self.dist_dir, archive_basename)
-        if not self.relative:
-            archive_root = self.bdist_dir
-        else:
-            if (self.distribution.has_ext_modules() and
-                (install.install_base != install.install_platbase)):
-                raise DistutilsPlatformError, \
-                      ("can't make a dumb built distribution where "
-                       "base and platbase are different (%s, %s)"
-                       % (repr(install.install_base),
-                          repr(install.install_platbase)))
-            else:
-                archive_root = os.path.join(self.bdist_dir,
-                                   ensure_relative(install.install_base))
-
-        # Make the archive
-        filename = self.make_archive(pseudoinstall_root,
-                                     self.format, root_dir=archive_root,
-                                     owner=self.owner, group=self.group)
-        if self.distribution.has_ext_modules():
-            pyversion = get_python_version()
-        else:
-            pyversion = 'any'
-        self.distribution.dist_files.append(('bdist_dumb', pyversion,
-                                             filename))
-
-        if not self.keep_temp:
-            remove_tree(self.bdist_dir, dry_run=self.dry_run)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_msi.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_msi.py
deleted file mode 100644
index ff580d1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_msi.py
+++ /dev/null
@@ -1,738 +0,0 @@
-# -*- coding: iso-8859-1 -*-
-# Copyright (C) 2005, 2006 Martin von Löwis
-# Licensed to PSF under a Contributor Agreement.
-# The bdist_wininst command proper
-# based on bdist_wininst
-"""
-Implements the bdist_msi command.
-"""
-import sys, os
-from sysconfig import get_python_version
-
-from distutils.core import Command
-from distutils.dir_util import remove_tree
-from distutils.version import StrictVersion
-from distutils.errors import DistutilsOptionError
-from distutils import log
-from distutils.util import get_platform
-
-import msilib
-from msilib import schema, sequence, text
-from msilib import Directory, Feature, Dialog, add_data
-
-class PyDialog(Dialog):
-    """Dialog class with a fixed layout: controls at the top, then a ruler,
-    then a list of buttons: back, next, cancel. Optionally a bitmap at the
-    left."""
-    def __init__(self, *args, **kw):
-        """Dialog(database, name, x, y, w, h, attributes, title, first,
-        default, cancel, bitmap=true)"""
-        Dialog.__init__(self, *args)
-        ruler = self.h - 36
-        #if kw.get("bitmap", True):
-        #    self.bitmap("Bitmap", 0, 0, bmwidth, ruler, "PythonWin")
-        self.line("BottomLine", 0, ruler, self.w, 0)
-
-    def title(self, title):
-        "Set the title text of the dialog at the top."
-        # name, x, y, w, h, flags=Visible|Enabled|Transparent|NoPrefix,
-        # text, in VerdanaBold10
-        self.text("Title", 15, 10, 320, 60, 0x30003,
-                  r"{\VerdanaBold10}%s" % title)
-
-    def back(self, title, next, name = "Back", active = 1):
-        """Add a back button with a given title, the tab-next button,
-        its name in the Control table, possibly initially disabled.
-
-        Return the button, so that events can be associated"""
-        if active:
-            flags = 3 # Visible|Enabled
-        else:
-            flags = 1 # Visible
-        return self.pushbutton(name, 180, self.h-27 , 56, 17, flags, title, next)
-
-    def cancel(self, title, next, name = "Cancel", active = 1):
-        """Add a cancel button with a given title, the tab-next button,
-        its name in the Control table, possibly initially disabled.
-
-        Return the button, so that events can be associated"""
-        if active:
-            flags = 3 # Visible|Enabled
-        else:
-            flags = 1 # Visible
-        return self.pushbutton(name, 304, self.h-27, 56, 17, flags, title, next)
-
-    def next(self, title, next, name = "Next", active = 1):
-        """Add a Next button with a given title, the tab-next button,
-        its name in the Control table, possibly initially disabled.
-
-        Return the button, so that events can be associated"""
-        if active:
-            flags = 3 # Visible|Enabled
-        else:
-            flags = 1 # Visible
-        return self.pushbutton(name, 236, self.h-27, 56, 17, flags, title, next)
-
-    def xbutton(self, name, title, next, xpos):
-        """Add a button with a given title, the tab-next button,
-        its name in the Control table, giving its x position; the
-        y-position is aligned with the other buttons.
-
-        Return the button, so that events can be associated"""
-        return self.pushbutton(name, int(self.w*xpos - 28), self.h-27, 56, 17, 3, title, next)
-
-class bdist_msi (Command):
-
-    description = "create a Microsoft Installer (.msi) binary distribution"
-
-    user_options = [('bdist-dir=', None,
-                     "temporary directory for creating the distribution"),
-                    ('plat-name=', 'p',
-                     "platform name to embed in generated filenames "
-                     "(default: %s)" % get_platform()),
-                    ('keep-temp', 'k',
-                     "keep the pseudo-installation tree around after " +
-                     "creating the distribution archive"),
-                    ('target-version=', None,
-                     "require a specific python version" +
-                     " on the target system"),
-                    ('no-target-compile', 'c',
-                     "do not compile .py to .pyc on the target system"),
-                    ('no-target-optimize', 'o',
-                     "do not compile .py to .pyo (optimized)"
-                     "on the target system"),
-                    ('dist-dir=', 'd',
-                     "directory to put final built distributions in"),
-                    ('skip-build', None,
-                     "skip rebuilding everything (for testing/debugging)"),
-                    ('install-script=', None,
-                     "basename of installation script to be run after"
-                     "installation or before deinstallation"),
-                    ('pre-install-script=', None,
-                     "Fully qualified filename of a script to be run before "
-                     "any files are installed.  This script need not be in the "
-                     "distribution"),
-                   ]
-
-    boolean_options = ['keep-temp', 'no-target-compile', 'no-target-optimize',
-                       'skip-build']
-
-    all_versions = ['2.0', '2.1', '2.2', '2.3', '2.4',
-                    '2.5', '2.6', '2.7', '2.8', '2.9',
-                    '3.0', '3.1', '3.2', '3.3', '3.4',
-                    '3.5', '3.6', '3.7', '3.8', '3.9']
-    other_version = 'X'
-
-    def initialize_options (self):
-        self.bdist_dir = None
-        self.plat_name = None
-        self.keep_temp = 0
-        self.no_target_compile = 0
-        self.no_target_optimize = 0
-        self.target_version = None
-        self.dist_dir = None
-        self.skip_build = 0
-        self.install_script = None
-        self.pre_install_script = None
-        self.versions = None
-
-    def finalize_options (self):
-        if self.bdist_dir is None:
-            bdist_base = self.get_finalized_command('bdist').bdist_base
-            self.bdist_dir = os.path.join(bdist_base, 'msi')
-        short_version = get_python_version()
-        if (not self.target_version) and self.distribution.has_ext_modules():
-            self.target_version = short_version
-        if self.target_version:
-            self.versions = [self.target_version]
-            if not self.skip_build and self.distribution.has_ext_modules()\
-               and self.target_version != short_version:
-                raise DistutilsOptionError, \
-                      "target version can only be %s, or the '--skip-build'" \
-                      " option must be specified" % (short_version,)
-        else:
-            self.versions = list(self.all_versions)
-
-        self.set_undefined_options('bdist',
-                                   ('dist_dir', 'dist_dir'),
-                                   ('plat_name', 'plat_name'),
-                                   )
-
-        if self.pre_install_script:
-            raise DistutilsOptionError, "the pre-install-script feature is not yet implemented"
-
-        if self.install_script:
-            for script in self.distribution.scripts:
-                if self.install_script == os.path.basename(script):
-                    break
-            else:
-                raise DistutilsOptionError, \
-                      "install_script '%s' not found in scripts" % \
-                      self.install_script
-        self.install_script_key = None
-    # finalize_options()
-
-
-    def run (self):
-        if not self.skip_build:
-            self.run_command('build')
-
-        install = self.reinitialize_command('install', reinit_subcommands=1)
-        install.prefix = self.bdist_dir
-        install.skip_build = self.skip_build
-        install.warn_dir = 0
-
-        install_lib = self.reinitialize_command('install_lib')
-        # we do not want to include pyc or pyo files
-        install_lib.compile = 0
-        install_lib.optimize = 0
-
-        if self.distribution.has_ext_modules():
-            # If we are building an installer for a Python version other
-            # than the one we are currently running, then we need to ensure
-            # our build_lib reflects the other Python version rather than ours.
-            # Note that for target_version!=sys.version, we must have skipped the
-            # build step, so there is no issue with enforcing the build of this
-            # version.
-            target_version = self.target_version
-            if not target_version:
-                assert self.skip_build, "Should have already checked this"
-                target_version = sys.version[0:3]
-            plat_specifier = ".%s-%s" % (self.plat_name, target_version)
-            build = self.get_finalized_command('build')
-            build.build_lib = os.path.join(build.build_base,
-                                           'lib' + plat_specifier)
-
-        log.info("installing to %s", self.bdist_dir)
-        install.ensure_finalized()
-
-        # avoid warning of 'install_lib' about installing
-        # into a directory not in sys.path
-        sys.path.insert(0, os.path.join(self.bdist_dir, 'PURELIB'))
-
-        install.run()
-
-        del sys.path[0]
-
-        self.mkpath(self.dist_dir)
-        fullname = self.distribution.get_fullname()
-        installer_name = self.get_installer_filename(fullname)
-        installer_name = os.path.abspath(installer_name)
-        if os.path.exists(installer_name): os.unlink(installer_name)
-
-        metadata = self.distribution.metadata
-        author = metadata.author
-        if not author:
-            author = metadata.maintainer
-        if not author:
-            author = "UNKNOWN"
-        version = metadata.get_version()
-        # ProductVersion must be strictly numeric
-        # XXX need to deal with prerelease versions
-        sversion = "%d.%d.%d" % StrictVersion(version).version
-        # Prefix ProductName with Python x.y, so that
-        # it sorts together with the other Python packages
-        # in Add-Remove-Programs (APR)
-        fullname = self.distribution.get_fullname()
-        if self.target_version:
-            product_name = "Python %s %s" % (self.target_version, fullname)
-        else:
-            product_name = "Python %s" % (fullname)
-        self.db = msilib.init_database(installer_name, schema,
-                product_name, msilib.gen_uuid(),
-                sversion, author)
-        msilib.add_tables(self.db, sequence)
-        props = [('DistVersion', version)]
-        email = metadata.author_email or metadata.maintainer_email
-        if email:
-            props.append(("ARPCONTACT", email))
-        if metadata.url:
-            props.append(("ARPURLINFOABOUT", metadata.url))
-        if props:
-            add_data(self.db, 'Property', props)
-
-        self.add_find_python()
-        self.add_files()
-        self.add_scripts()
-        self.add_ui()
-        self.db.Commit()
-
-        if hasattr(self.distribution, 'dist_files'):
-            tup = 'bdist_msi', self.target_version or 'any', fullname
-            self.distribution.dist_files.append(tup)
-
-        if not self.keep_temp:
-            remove_tree(self.bdist_dir, dry_run=self.dry_run)
-
-    def add_files(self):
-        db = self.db
-        cab = msilib.CAB("distfiles")
-        rootdir = os.path.abspath(self.bdist_dir)
-
-        root = Directory(db, cab, None, rootdir, "TARGETDIR", "SourceDir")
-        f = Feature(db, "Python", "Python", "Everything",
-                    0, 1, directory="TARGETDIR")
-
-        items = [(f, root, '')]
-        for version in self.versions + [self.other_version]:
-            target = "TARGETDIR" + version
-            name = default = "Python" + version
-            desc = "Everything"
-            if version is self.other_version:
-                title = "Python from another location"
-                level = 2
-            else:
-                title = "Python %s from registry" % version
-                level = 1
-            f = Feature(db, name, title, desc, 1, level, directory=target)
-            dir = Directory(db, cab, root, rootdir, target, default)
-            items.append((f, dir, version))
-        db.Commit()
-
-        seen = {}
-        for feature, dir, version in items:
-            todo = [dir]
-            while todo:
-                dir = todo.pop()
-                for file in os.listdir(dir.absolute):
-                    afile = os.path.join(dir.absolute, file)
-                    if os.path.isdir(afile):
-                        short = "%s|%s" % (dir.make_short(file), file)
-                        default = file + version
-                        newdir = Directory(db, cab, dir, file, default, short)
-                        todo.append(newdir)
-                    else:
-                        if not dir.component:
-                            dir.start_component(dir.logical, feature, 0)
-                        if afile not in seen:
-                            key = seen[afile] = dir.add_file(file)
-                            if file==self.install_script:
-                                if self.install_script_key:
-                                    raise DistutilsOptionError(
-                                          "Multiple files with name %s" % file)
-                                self.install_script_key = '[#%s]' % key
-                        else:
-                            key = seen[afile]
-                            add_data(self.db, "DuplicateFile",
-                                [(key + version, dir.component, key, None, dir.logical)])
-            db.Commit()
-        cab.commit(db)
-
-    def add_find_python(self):
-        """Adds code to the installer to compute the location of Python.
-
-        Properties PYTHON.MACHINE.X.Y and PYTHON.USER.X.Y will be set from the
-        registry for each version of Python.
-
-        Properties TARGETDIRX.Y will be set from PYTHON.USER.X.Y if defined,
-        else from PYTHON.MACHINE.X.Y.
-
-        Properties PYTHONX.Y will be set to TARGETDIRX.Y\\python.exe"""
-
-        start = 402
-        for ver in self.versions:
-            install_path = r"SOFTWARE\Python\PythonCore\%s\InstallPath" % ver
-            machine_reg = "python.machine." + ver
-            user_reg = "python.user." + ver
-            machine_prop = "PYTHON.MACHINE." + ver
-            user_prop = "PYTHON.USER." + ver
-            machine_action = "PythonFromMachine" + ver
-            user_action = "PythonFromUser" + ver
-            exe_action = "PythonExe" + ver
-            target_dir_prop = "TARGETDIR" + ver
-            exe_prop = "PYTHON" + ver
-            if msilib.Win64:
-                # type: msidbLocatorTypeRawValue + msidbLocatorType64bit
-                Type = 2+16
-            else:
-                Type = 2
-            add_data(self.db, "RegLocator",
-                    [(machine_reg, 2, install_path, None, Type),
-                     (user_reg, 1, install_path, None, Type)])
-            add_data(self.db, "AppSearch",
-                    [(machine_prop, machine_reg),
-                     (user_prop, user_reg)])
-            add_data(self.db, "CustomAction",
-                    [(machine_action, 51+256, target_dir_prop, "[" + machine_prop + "]"),
-                     (user_action, 51+256, target_dir_prop, "[" + user_prop + "]"),
-                     (exe_action, 51+256, exe_prop, "[" + target_dir_prop + "]\\python.exe"),
-                    ])
-            add_data(self.db, "InstallExecuteSequence",
-                    [(machine_action, machine_prop, start),
-                     (user_action, user_prop, start + 1),
-                     (exe_action, None, start + 2),
-                    ])
-            add_data(self.db, "InstallUISequence",
-                    [(machine_action, machine_prop, start),
-                     (user_action, user_prop, start + 1),
-                     (exe_action, None, start + 2),
-                    ])
-            add_data(self.db, "Condition",
-                    [("Python" + ver, 0, "NOT TARGETDIR" + ver)])
-            start += 4
-            assert start < 500
-
-    def add_scripts(self):
-        if self.install_script:
-            start = 6800
-            for ver in self.versions + [self.other_version]:
-                install_action = "install_script." + ver
-                exe_prop = "PYTHON" + ver
-                add_data(self.db, "CustomAction",
-                        [(install_action, 50, exe_prop, self.install_script_key)])
-                add_data(self.db, "InstallExecuteSequence",
-                        [(install_action, "&Python%s=3" % ver, start)])
-                start += 1
-        # XXX pre-install scripts are currently refused in finalize_options()
-        #     but if this feature is completed, it will also need to add
-        #     entries for each version as the above code does
-        if self.pre_install_script:
-            scriptfn = os.path.join(self.bdist_dir, "preinstall.bat")
-            f = open(scriptfn, "w")
-            # The batch file will be executed with [PYTHON], so that %1
-            # is the path to the Python interpreter; %0 will be the path
-            # of the batch file.
-            # rem ="""
-            # %1 %0
-            # exit
-            # """
-            # <actual script>
-            f.write('rem ="""\n%1 %0\nexit\n"""\n')
-            f.write(open(self.pre_install_script).read())
-            f.close()
-            add_data(self.db, "Binary",
-                [("PreInstall", msilib.Binary(scriptfn))
-                ])
-            add_data(self.db, "CustomAction",
-                [("PreInstall", 2, "PreInstall", None)
-                ])
-            add_data(self.db, "InstallExecuteSequence",
-                    [("PreInstall", "NOT Installed", 450)])
-
-
-    def add_ui(self):
-        db = self.db
-        x = y = 50
-        w = 370
-        h = 300
-        title = "[ProductName] Setup"
-
-        # see "Dialog Style Bits"
-        modal = 3      # visible | modal
-        modeless = 1   # visible
-
-        # UI customization properties
-        add_data(db, "Property",
-                 # See "DefaultUIFont Property"
-                 [("DefaultUIFont", "DlgFont8"),
-                  # See "ErrorDialog Style Bit"
-                  ("ErrorDialog", "ErrorDlg"),
-                  ("Progress1", "Install"),   # modified in maintenance type dlg
-                  ("Progress2", "installs"),
-                  ("MaintenanceForm_Action", "Repair"),
-                  # possible values: ALL, JUSTME
-                  ("WhichUsers", "ALL")
-                 ])
-
-        # Fonts, see "TextStyle Table"
-        add_data(db, "TextStyle",
-                 [("DlgFont8", "Tahoma", 9, None, 0),
-                  ("DlgFontBold8", "Tahoma", 8, None, 1), #bold
-                  ("VerdanaBold10", "Verdana", 10, None, 1),
-                  ("VerdanaRed9", "Verdana", 9, 255, 0),
-                 ])
-
-        # UI Sequences, see "InstallUISequence Table", "Using a Sequence Table"
-        # Numbers indicate sequence; see sequence.py for how these action integrate
-        add_data(db, "InstallUISequence",
-                 [("PrepareDlg", "Not Privileged or Windows9x or Installed", 140),
-                  ("WhichUsersDlg", "Privileged and not Windows9x and not Installed", 141),
-                  # In the user interface, assume all-users installation if privileged.
-                  ("SelectFeaturesDlg", "Not Installed", 1230),
-                  # XXX no support for resume installations yet
-                  #("ResumeDlg", "Installed AND (RESUME OR Preselected)", 1240),
-                  ("MaintenanceTypeDlg", "Installed AND NOT RESUME AND NOT Preselected", 1250),
-                  ("ProgressDlg", None, 1280)])
-
-        add_data(db, 'ActionText', text.ActionText)
-        add_data(db, 'UIText', text.UIText)
-        #####################################################################
-        # Standard dialogs: FatalError, UserExit, ExitDialog
-        fatal=PyDialog(db, "FatalError", x, y, w, h, modal, title,
-                     "Finish", "Finish", "Finish")
-        fatal.title("[ProductName] Installer ended prematurely")
-        fatal.back("< Back", "Finish", active = 0)
-        fatal.cancel("Cancel", "Back", active = 0)
-        fatal.text("Description1", 15, 70, 320, 80, 0x30003,
-                   "[ProductName] setup ended prematurely because of an error.  Your system has not been modified.  To install this program at a later time, please run the installation again.")
-        fatal.text("Description2", 15, 155, 320, 20, 0x30003,
-                   "Click the Finish button to exit the Installer.")
-        c=fatal.next("Finish", "Cancel", name="Finish")
-        c.event("EndDialog", "Exit")
-
-        user_exit=PyDialog(db, "UserExit", x, y, w, h, modal, title,
-                     "Finish", "Finish", "Finish")
-        user_exit.title("[ProductName] Installer was interrupted")
-        user_exit.back("< Back", "Finish", active = 0)
-        user_exit.cancel("Cancel", "Back", active = 0)
-        user_exit.text("Description1", 15, 70, 320, 80, 0x30003,
-                   "[ProductName] setup was interrupted.  Your system has not been modified.  "
-                   "To install this program at a later time, please run the installation again.")
-        user_exit.text("Description2", 15, 155, 320, 20, 0x30003,
-                   "Click the Finish button to exit the Installer.")
-        c = user_exit.next("Finish", "Cancel", name="Finish")
-        c.event("EndDialog", "Exit")
-
-        exit_dialog = PyDialog(db, "ExitDialog", x, y, w, h, modal, title,
-                             "Finish", "Finish", "Finish")
-        exit_dialog.title("Completing the [ProductName] Installer")
-        exit_dialog.back("< Back", "Finish", active = 0)
-        exit_dialog.cancel("Cancel", "Back", active = 0)
-        exit_dialog.text("Description", 15, 235, 320, 20, 0x30003,
-                   "Click the Finish button to exit the Installer.")
-        c = exit_dialog.next("Finish", "Cancel", name="Finish")
-        c.event("EndDialog", "Return")
-
-        #####################################################################
-        # Required dialog: FilesInUse, ErrorDlg
-        inuse = PyDialog(db, "FilesInUse",
-                         x, y, w, h,
-                         19,                # KeepModeless|Modal|Visible
-                         title,
-                         "Retry", "Retry", "Retry", bitmap=False)
-        inuse.text("Title", 15, 6, 200, 15, 0x30003,
-                   r"{\DlgFontBold8}Files in Use")
-        inuse.text("Description", 20, 23, 280, 20, 0x30003,
-               "Some files that need to be updated are currently in use.")
-        inuse.text("Text", 20, 55, 330, 50, 3,
-                   "The following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.")
-        inuse.control("List", "ListBox", 20, 107, 330, 130, 7, "FileInUseProcess",
-                      None, None, None)
-        c=inuse.back("Exit", "Ignore", name="Exit")
-        c.event("EndDialog", "Exit")
-        c=inuse.next("Ignore", "Retry", name="Ignore")
-        c.event("EndDialog", "Ignore")
-        c=inuse.cancel("Retry", "Exit", name="Retry")
-        c.event("EndDialog","Retry")
-
-        # See "Error Dialog". See "ICE20" for the required names of the controls.
-        error = Dialog(db, "ErrorDlg",
-                       50, 10, 330, 101,
-                       65543,       # Error|Minimize|Modal|Visible
-                       title,
-                       "ErrorText", None, None)
-        error.text("ErrorText", 50,9,280,48,3, "")
-        #error.control("ErrorIcon", "Icon", 15, 9, 24, 24, 5242881, None, "py.ico", None, None)
-        error.pushbutton("N",120,72,81,21,3,"No",None).event("EndDialog","ErrorNo")
-        error.pushbutton("Y",240,72,81,21,3,"Yes",None).event("EndDialog","ErrorYes")
-        error.pushbutton("A",0,72,81,21,3,"Abort",None).event("EndDialog","ErrorAbort")
-        error.pushbutton("C",42,72,81,21,3,"Cancel",None).event("EndDialog","ErrorCancel")
-        error.pushbutton("I",81,72,81,21,3,"Ignore",None).event("EndDialog","ErrorIgnore")
-        error.pushbutton("O",159,72,81,21,3,"Ok",None).event("EndDialog","ErrorOk")
-        error.pushbutton("R",198,72,81,21,3,"Retry",None).event("EndDialog","ErrorRetry")
-
-        #####################################################################
-        # Global "Query Cancel" dialog
-        cancel = Dialog(db, "CancelDlg", 50, 10, 260, 85, 3, title,
-                        "No", "No", "No")
-        cancel.text("Text", 48, 15, 194, 30, 3,
-                    "Are you sure you want to cancel [ProductName] installation?")
-        #cancel.control("Icon", "Icon", 15, 15, 24, 24, 5242881, None,
-        #               "py.ico", None, None)
-        c=cancel.pushbutton("Yes", 72, 57, 56, 17, 3, "Yes", "No")
-        c.event("EndDialog", "Exit")
-
-        c=cancel.pushbutton("No", 132, 57, 56, 17, 3, "No", "Yes")
-        c.event("EndDialog", "Return")
-
-        #####################################################################
-        # Global "Wait for costing" dialog
-        costing = Dialog(db, "WaitForCostingDlg", 50, 10, 260, 85, modal, title,
-                         "Return", "Return", "Return")
-        costing.text("Text", 48, 15, 194, 30, 3,
-                     "Please wait while the installer finishes determining your disk space requirements.")
-        c = costing.pushbutton("Return", 102, 57, 56, 17, 3, "Return", None)
-        c.event("EndDialog", "Exit")
-
-        #####################################################################
-        # Preparation dialog: no user input except cancellation
-        prep = PyDialog(db, "PrepareDlg", x, y, w, h, modeless, title,
-                        "Cancel", "Cancel", "Cancel")
-        prep.text("Description", 15, 70, 320, 40, 0x30003,
-                  "Please wait while the Installer prepares to guide you through the installation.")
-        prep.title("Welcome to the [ProductName] Installer")
-        c=prep.text("ActionText", 15, 110, 320, 20, 0x30003, "Pondering...")
-        c.mapping("ActionText", "Text")
-        c=prep.text("ActionData", 15, 135, 320, 30, 0x30003, None)
-        c.mapping("ActionData", "Text")
-        prep.back("Back", None, active=0)
-        prep.next("Next", None, active=0)
-        c=prep.cancel("Cancel", None)
-        c.event("SpawnDialog", "CancelDlg")
-
-        #####################################################################
-        # Feature (Python directory) selection
-        seldlg = PyDialog(db, "SelectFeaturesDlg", x, y, w, h, modal, title,
-                        "Next", "Next", "Cancel")
-        seldlg.title("Select Python Installations")
-
-        seldlg.text("Hint", 15, 30, 300, 20, 3,
-                    "Select the Python locations where %s should be installed."
-                    % self.distribution.get_fullname())
-
-        seldlg.back("< Back", None, active=0)
-        c = seldlg.next("Next >", "Cancel")
-        order = 1
-        c.event("[TARGETDIR]", "[SourceDir]", ordering=order)
-        for version in self.versions + [self.other_version]:
-            order += 1
-            c.event("[TARGETDIR]", "[TARGETDIR%s]" % version,
-                    "FEATURE_SELECTED AND &Python%s=3" % version,
-                    ordering=order)
-        c.event("SpawnWaitDialog", "WaitForCostingDlg", ordering=order + 1)
-        c.event("EndDialog", "Return", ordering=order + 2)
-        c = seldlg.cancel("Cancel", "Features")
-        c.event("SpawnDialog", "CancelDlg")
-
-        c = seldlg.control("Features", "SelectionTree", 15, 60, 300, 120, 3,
-                           "FEATURE", None, "PathEdit", None)
-        c.event("[FEATURE_SELECTED]", "1")
-        ver = self.other_version
-        install_other_cond = "FEATURE_SELECTED AND &Python%s=3" % ver
-        dont_install_other_cond = "FEATURE_SELECTED AND &Python%s<>3" % ver
-
-        c = seldlg.text("Other", 15, 200, 300, 15, 3,
-                        "Provide an alternate Python location")
-        c.condition("Enable", install_other_cond)
-        c.condition("Show", install_other_cond)
-        c.condition("Disable", dont_install_other_cond)
-        c.condition("Hide", dont_install_other_cond)
-
-        c = seldlg.control("PathEdit", "PathEdit", 15, 215, 300, 16, 1,
-                           "TARGETDIR" + ver, None, "Next", None)
-        c.condition("Enable", install_other_cond)
-        c.condition("Show", install_other_cond)
-        c.condition("Disable", dont_install_other_cond)
-        c.condition("Hide", dont_install_other_cond)
-
-        #####################################################################
-        # Disk cost
-        cost = PyDialog(db, "DiskCostDlg", x, y, w, h, modal, title,
-                        "OK", "OK", "OK", bitmap=False)
-        cost.text("Title", 15, 6, 200, 15, 0x30003,
-                  "{\DlgFontBold8}Disk Space Requirements")
-        cost.text("Description", 20, 20, 280, 20, 0x30003,
-                  "The disk space required for the installation of the selected features.")
-        cost.text("Text", 20, 53, 330, 60, 3,
-                  "The highlighted volumes (if any) do not have enough disk space "
-              "available for the currently selected features.  You can either "
-              "remove some files from the highlighted volumes, or choose to "
-              "install less features onto local drive(s), or select different "
-              "destination drive(s).")
-        cost.control("VolumeList", "VolumeCostList", 20, 100, 330, 150, 393223,
-                     None, "{120}{70}{70}{70}{70}", None, None)
-        cost.xbutton("OK", "Ok", None, 0.5).event("EndDialog", "Return")
-
-        #####################################################################
-        # WhichUsers Dialog. Only available on NT, and for privileged users.
-        # This must be run before FindRelatedProducts, because that will
-        # take into account whether the previous installation was per-user
-        # or per-machine. We currently don't support going back to this
-        # dialog after "Next" was selected; to support this, we would need to
-        # find how to reset the ALLUSERS property, and how to re-run
-        # FindRelatedProducts.
-        # On Windows9x, the ALLUSERS property is ignored on the command line
-        # and in the Property table, but installer fails according to the documentation
-        # if a dialog attempts to set ALLUSERS.
-        whichusers = PyDialog(db, "WhichUsersDlg", x, y, w, h, modal, title,
-                            "AdminInstall", "Next", "Cancel")
-        whichusers.title("Select whether to install [ProductName] for all users of this computer.")
-        # A radio group with two options: allusers, justme
-        g = whichusers.radiogroup("AdminInstall", 15, 60, 260, 50, 3,
-                                  "WhichUsers", "", "Next")
-        g.add("ALL", 0, 5, 150, 20, "Install for all users")
-        g.add("JUSTME", 0, 25, 150, 20, "Install just for me")
-
-        whichusers.back("Back", None, active=0)
-
-        c = whichusers.next("Next >", "Cancel")
-        c.event("[ALLUSERS]", "1", 'WhichUsers="ALL"', 1)
-        c.event("EndDialog", "Return", ordering = 2)
-
-        c = whichusers.cancel("Cancel", "AdminInstall")
-        c.event("SpawnDialog", "CancelDlg")
-
-        #####################################################################
-        # Installation Progress dialog (modeless)
-        progress = PyDialog(db, "ProgressDlg", x, y, w, h, modeless, title,
-                            "Cancel", "Cancel", "Cancel", bitmap=False)
-        progress.text("Title", 20, 15, 200, 15, 0x30003,
-                      "{\DlgFontBold8}[Progress1] [ProductName]")
-        progress.text("Text", 35, 65, 300, 30, 3,
-                      "Please wait while the Installer [Progress2] [ProductName]. "
-                      "This may take several minutes.")
-        progress.text("StatusLabel", 35, 100, 35, 20, 3, "Status:")
-
-        c=progress.text("ActionText", 70, 100, w-70, 20, 3, "Pondering...")
-        c.mapping("ActionText", "Text")
-
-        #c=progress.text("ActionData", 35, 140, 300, 20, 3, None)
-        #c.mapping("ActionData", "Text")
-
-        c=progress.control("ProgressBar", "ProgressBar", 35, 120, 300, 10, 65537,
-                           None, "Progress done", None, None)
-        c.mapping("SetProgress", "Progress")
-
-        progress.back("< Back", "Next", active=False)
-        progress.next("Next >", "Cancel", active=False)
-        progress.cancel("Cancel", "Back").event("SpawnDialog", "CancelDlg")
-
-        ###################################################################
-        # Maintenance type: repair/uninstall
-        maint = PyDialog(db, "MaintenanceTypeDlg", x, y, w, h, modal, title,
-                         "Next", "Next", "Cancel")
-        maint.title("Welcome to the [ProductName] Setup Wizard")
-        maint.text("BodyText", 15, 63, 330, 42, 3,
-                   "Select whether you want to repair or remove [ProductName].")
-        g=maint.radiogroup("RepairRadioGroup", 15, 108, 330, 60, 3,
-                            "MaintenanceForm_Action", "", "Next")
-        #g.add("Change", 0, 0, 200, 17, "&Change [ProductName]")
-        g.add("Repair", 0, 18, 200, 17, "&Repair [ProductName]")
-        g.add("Remove", 0, 36, 200, 17, "Re&move [ProductName]")
-
-        maint.back("< Back", None, active=False)
-        c=maint.next("Finish", "Cancel")
-        # Change installation: Change progress dialog to "Change", then ask
-        # for feature selection
-        #c.event("[Progress1]", "Change", 'MaintenanceForm_Action="Change"', 1)
-        #c.event("[Progress2]", "changes", 'MaintenanceForm_Action="Change"', 2)
-
-        # Reinstall: Change progress dialog to "Repair", then invoke reinstall
-        # Also set list of reinstalled features to "ALL"
-        c.event("[REINSTALL]", "ALL", 'MaintenanceForm_Action="Repair"', 5)
-        c.event("[Progress1]", "Repairing", 'MaintenanceForm_Action="Repair"', 6)
-        c.event("[Progress2]", "repairs", 'MaintenanceForm_Action="Repair"', 7)
-        c.event("Reinstall", "ALL", 'MaintenanceForm_Action="Repair"', 8)
-
-        # Uninstall: Change progress to "Remove", then invoke uninstall
-        # Also set list of removed features to "ALL"
-        c.event("[REMOVE]", "ALL", 'MaintenanceForm_Action="Remove"', 11)
-        c.event("[Progress1]", "Removing", 'MaintenanceForm_Action="Remove"', 12)
-        c.event("[Progress2]", "removes", 'MaintenanceForm_Action="Remove"', 13)
-        c.event("Remove", "ALL", 'MaintenanceForm_Action="Remove"', 14)
-
-        # Close dialog when maintenance action scheduled
-        c.event("EndDialog", "Return", 'MaintenanceForm_Action<>"Change"', 20)
-        #c.event("NewDialog", "SelectFeaturesDlg", 'MaintenanceForm_Action="Change"', 21)
-
-        maint.cancel("Cancel", "RepairRadioGroup").event("SpawnDialog", "CancelDlg")
-
-    def get_installer_filename(self, fullname):
-        # Factored out to allow overriding in subclasses
-        if self.target_version:
-            base_name = "%s.%s-py%s.msi" % (fullname, self.plat_name,
-                                            self.target_version)
-        else:
-            base_name = "%s.%s.msi" % (fullname, self.plat_name)
-        installer_name = os.path.join(self.dist_dir, base_name)
-        return installer_name
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_rpm.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_rpm.py
deleted file mode 100644
index 3173077..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_rpm.py
+++ /dev/null
@@ -1,575 +0,0 @@
-"""distutils.command.bdist_rpm
-
-Implements the Distutils 'bdist_rpm' command (create RPM source and binary
-distributions)."""
-
-__revision__ = "$Id$"
-
-import sys
-import os
-import string
-
-from distutils.core import Command
-from distutils.debug import DEBUG
-from distutils.file_util import write_file
-from distutils.errors import (DistutilsOptionError, DistutilsPlatformError,
-                              DistutilsFileError, DistutilsExecError)
-from distutils import log
-
-class bdist_rpm (Command):
-
-    description = "create an RPM distribution"
-
-    user_options = [
-        ('bdist-base=', None,
-         "base directory for creating built distributions"),
-        ('rpm-base=', None,
-         "base directory for creating RPMs (defaults to \"rpm\" under "
-         "--bdist-base; must be specified for RPM 2)"),
-        ('dist-dir=', 'd',
-         "directory to put final RPM files in "
-         "(and .spec files if --spec-only)"),
-        ('python=', None,
-         "path to Python interpreter to hard-code in the .spec file "
-         "(default: \"python\")"),
-        ('fix-python', None,
-         "hard-code the exact path to the current Python interpreter in "
-         "the .spec file"),
-        ('spec-only', None,
-         "only regenerate spec file"),
-        ('source-only', None,
-         "only generate source RPM"),
-        ('binary-only', None,
-         "only generate binary RPM"),
-        ('use-bzip2', None,
-         "use bzip2 instead of gzip to create source distribution"),
-
-        # More meta-data: too RPM-specific to put in the setup script,
-        # but needs to go in the .spec file -- so we make these options
-        # to "bdist_rpm".  The idea is that packagers would put this
-        # info in setup.cfg, although they are of course free to
-        # supply it on the command line.
-        ('distribution-name=', None,
-         "name of the (Linux) distribution to which this "
-         "RPM applies (*not* the name of the module distribution!)"),
-        ('group=', None,
-         "package classification [default: \"Development/Libraries\"]"),
-        ('release=', None,
-         "RPM release number"),
-        ('serial=', None,
-         "RPM serial number"),
-        ('vendor=', None,
-         "RPM \"vendor\" (eg. \"Joe Blow <joe@example.com>\") "
-         "[default: maintainer or author from setup script]"),
-        ('packager=', None,
-         "RPM packager (eg. \"Jane Doe <jane@example.net>\")"
-         "[default: vendor]"),
-        ('doc-files=', None,
-         "list of documentation files (space or comma-separated)"),
-        ('changelog=', None,
-         "RPM changelog"),
-        ('icon=', None,
-         "name of icon file"),
-        ('provides=', None,
-         "capabilities provided by this package"),
-        ('requires=', None,
-         "capabilities required by this package"),
-        ('conflicts=', None,
-         "capabilities which conflict with this package"),
-        ('build-requires=', None,
-         "capabilities required to build this package"),
-        ('obsoletes=', None,
-         "capabilities made obsolete by this package"),
-        ('no-autoreq', None,
-         "do not automatically calculate dependencies"),
-
-        # Actions to take when building RPM
-        ('keep-temp', 'k',
-         "don't clean up RPM build directory"),
-        ('no-keep-temp', None,
-         "clean up RPM build directory [default]"),
-        ('use-rpm-opt-flags', None,
-         "compile with RPM_OPT_FLAGS when building from source RPM"),
-        ('no-rpm-opt-flags', None,
-         "do not pass any RPM CFLAGS to compiler"),
-        ('rpm3-mode', None,
-         "RPM 3 compatibility mode (default)"),
-        ('rpm2-mode', None,
-         "RPM 2 compatibility mode"),
-
-        # Add the hooks necessary for specifying custom scripts
-        ('prep-script=', None,
-         "Specify a script for the PREP phase of RPM building"),
-        ('build-script=', None,
-         "Specify a script for the BUILD phase of RPM building"),
-
-        ('pre-install=', None,
-         "Specify a script for the pre-INSTALL phase of RPM building"),
-        ('install-script=', None,
-         "Specify a script for the INSTALL phase of RPM building"),
-        ('post-install=', None,
-         "Specify a script for the post-INSTALL phase of RPM building"),
-
-        ('pre-uninstall=', None,
-         "Specify a script for the pre-UNINSTALL phase of RPM building"),
-        ('post-uninstall=', None,
-         "Specify a script for the post-UNINSTALL phase of RPM building"),
-
-        ('clean-script=', None,
-         "Specify a script for the CLEAN phase of RPM building"),
-
-        ('verify-script=', None,
-         "Specify a script for the VERIFY phase of the RPM build"),
-
-        # Allow a packager to explicitly force an architecture
-        ('force-arch=', None,
-         "Force an architecture onto the RPM build process"),
-
-        ('quiet', 'q',
-         "Run the INSTALL phase of RPM building in quiet mode"),
-        ]
-
-    boolean_options = ['keep-temp', 'use-rpm-opt-flags', 'rpm3-mode',
-                       'no-autoreq', 'quiet']
-
-    negative_opt = {'no-keep-temp': 'keep-temp',
-                    'no-rpm-opt-flags': 'use-rpm-opt-flags',
-                    'rpm2-mode': 'rpm3-mode'}
-
-
-    def initialize_options (self):
-        self.bdist_base = None
-        self.rpm_base = None
-        self.dist_dir = None
-        self.python = None
-        self.fix_python = None
-        self.spec_only = None
-        self.binary_only = None
-        self.source_only = None
-        self.use_bzip2 = None
-
-        self.distribution_name = None
-        self.group = None
-        self.release = None
-        self.serial = None
-        self.vendor = None
-        self.packager = None
-        self.doc_files = None
-        self.changelog = None
-        self.icon = None
-
-        self.prep_script = None
-        self.build_script = None
-        self.install_script = None
-        self.clean_script = None
-        self.verify_script = None
-        self.pre_install = None
-        self.post_install = None
-        self.pre_uninstall = None
-        self.post_uninstall = None
-        self.prep = None
-        self.provides = None
-        self.requires = None
-        self.conflicts = None
-        self.build_requires = None
-        self.obsoletes = None
-
-        self.keep_temp = 0
-        self.use_rpm_opt_flags = 1
-        self.rpm3_mode = 1
-        self.no_autoreq = 0
-
-        self.force_arch = None
-        self.quiet = 0
-
-    # initialize_options()
-
-
-    def finalize_options (self):
-        self.set_undefined_options('bdist', ('bdist_base', 'bdist_base'))
-        if self.rpm_base is None:
-            if not self.rpm3_mode:
-                raise DistutilsOptionError, \
-                      "you must specify --rpm-base in RPM 2 mode"
-            self.rpm_base = os.path.join(self.bdist_base, "rpm")
-
-        if self.python is None:
-            if self.fix_python:
-                self.python = sys.executable
-            else:
-                self.python = "python"
-        elif self.fix_python:
-            raise DistutilsOptionError, \
-                  "--python and --fix-python are mutually exclusive options"
-
-        if os.name != 'posix':
-            raise DistutilsPlatformError, \
-                  ("don't know how to create RPM "
-                   "distributions on platform %s" % os.name)
-        if self.binary_only and self.source_only:
-            raise DistutilsOptionError, \
-                  "cannot supply both '--source-only' and '--binary-only'"
-
-        # don't pass CFLAGS to pure python distributions
-        if not self.distribution.has_ext_modules():
-            self.use_rpm_opt_flags = 0
-
-        self.set_undefined_options('bdist', ('dist_dir', 'dist_dir'))
-        self.finalize_package_data()
-
-    # finalize_options()
-
-    def finalize_package_data (self):
-        self.ensure_string('group', "Development/Libraries")
-        self.ensure_string('vendor',
-                           "%s <%s>" % (self.distribution.get_contact(),
-                                        self.distribution.get_contact_email()))
-        self.ensure_string('packager')
-        self.ensure_string_list('doc_files')
-        if isinstance(self.doc_files, list):
-            for readme in ('README', 'README.txt'):
-                if os.path.exists(readme) and readme not in self.doc_files:
-                    self.doc_files.append(readme)
-
-        self.ensure_string('release', "1")
-        self.ensure_string('serial')   # should it be an int?
-
-        self.ensure_string('distribution_name')
-
-        self.ensure_string('changelog')
-          # Format changelog correctly
-        self.changelog = self._format_changelog(self.changelog)
-
-        self.ensure_filename('icon')
-
-        self.ensure_filename('prep_script')
-        self.ensure_filename('build_script')
-        self.ensure_filename('install_script')
-        self.ensure_filename('clean_script')
-        self.ensure_filename('verify_script')
-        self.ensure_filename('pre_install')
-        self.ensure_filename('post_install')
-        self.ensure_filename('pre_uninstall')
-        self.ensure_filename('post_uninstall')
-
-        # XXX don't forget we punted on summaries and descriptions -- they
-        # should be handled here eventually!
-
-        # Now *this* is some meta-data that belongs in the setup script...
-        self.ensure_string_list('provides')
-        self.ensure_string_list('requires')
-        self.ensure_string_list('conflicts')
-        self.ensure_string_list('build_requires')
-        self.ensure_string_list('obsoletes')
-
-        self.ensure_string('force_arch')
-    # finalize_package_data ()
-
-
-    def run (self):
-
-        if DEBUG:
-            print "before _get_package_data():"
-            print "vendor =", self.vendor
-            print "packager =", self.packager
-            print "doc_files =", self.doc_files
-            print "changelog =", self.changelog
-
-        # make directories
-        if self.spec_only:
-            spec_dir = self.dist_dir
-            self.mkpath(spec_dir)
-        else:
-            rpm_dir = {}
-            for d in ('SOURCES', 'SPECS', 'BUILD', 'RPMS', 'SRPMS'):
-                rpm_dir[d] = os.path.join(self.rpm_base, d)
-                self.mkpath(rpm_dir[d])
-            spec_dir = rpm_dir['SPECS']
-
-        # Spec file goes into 'dist_dir' if '--spec-only specified',
-        # build/rpm.<plat> otherwise.
-        spec_path = os.path.join(spec_dir,
-                                 "%s.spec" % self.distribution.get_name())
-        self.execute(write_file,
-                     (spec_path,
-                      self._make_spec_file()),
-                     "writing '%s'" % spec_path)
-
-        if self.spec_only: # stop if requested
-            return
-
-        # Make a source distribution and copy to SOURCES directory with
-        # optional icon.
-        saved_dist_files = self.distribution.dist_files[:]
-        sdist = self.reinitialize_command('sdist')
-        if self.use_bzip2:
-            sdist.formats = ['bztar']
-        else:
-            sdist.formats = ['gztar']
-        self.run_command('sdist')
-        self.distribution.dist_files = saved_dist_files
-
-        source = sdist.get_archive_files()[0]
-        source_dir = rpm_dir['SOURCES']
-        self.copy_file(source, source_dir)
-
-        if self.icon:
-            if os.path.exists(self.icon):
-                self.copy_file(self.icon, source_dir)
-            else:
-                raise DistutilsFileError, \
-                      "icon file '%s' does not exist" % self.icon
-
-
-        # build package
-        log.info("building RPMs")
-        rpm_cmd = ['rpm']
-        if os.path.exists('/usr/bin/rpmbuild') or \
-           os.path.exists('/bin/rpmbuild'):
-            rpm_cmd = ['rpmbuild']
-
-        if self.source_only: # what kind of RPMs?
-            rpm_cmd.append('-bs')
-        elif self.binary_only:
-            rpm_cmd.append('-bb')
-        else:
-            rpm_cmd.append('-ba')
-        if self.rpm3_mode:
-            rpm_cmd.extend(['--define',
-                             '_topdir %s' % os.path.abspath(self.rpm_base)])
-        if not self.keep_temp:
-            rpm_cmd.append('--clean')
-
-        if self.quiet:
-            rpm_cmd.append('--quiet')
-
-        rpm_cmd.append(spec_path)
-        # Determine the binary rpm names that should be built out of this spec
-        # file
-        # Note that some of these may not be really built (if the file
-        # list is empty)
-        nvr_string = "%{name}-%{version}-%{release}"
-        src_rpm = nvr_string + ".src.rpm"
-        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)
-
-        out = os.popen(q_cmd)
-        try:
-            binary_rpms = []
-            source_rpm = None
-            while 1:
-                line = out.readline()
-                if not line:
-                    break
-                l = string.split(string.strip(line))
-                assert(len(l) == 2)
-                binary_rpms.append(l[1])
-                # The source rpm is named after the first entry in the spec file
-                if source_rpm is None:
-                    source_rpm = l[0]
-
-            status = out.close()
-            if status:
-                raise DistutilsExecError("Failed to execute: %s" % repr(q_cmd))
-
-        finally:
-            out.close()
-
-        self.spawn(rpm_cmd)
-
-        if not self.dry_run:
-            if not self.binary_only:
-                srpm = os.path.join(rpm_dir['SRPMS'], source_rpm)
-                assert(os.path.exists(srpm))
-                self.move_file(srpm, self.dist_dir)
-
-            if not self.source_only:
-                for rpm in binary_rpms:
-                    rpm = os.path.join(rpm_dir['RPMS'], rpm)
-                    if os.path.exists(rpm):
-                        self.move_file(rpm, self.dist_dir)
-    # run()
-
-    def _dist_path(self, path):
-        return os.path.join(self.dist_dir, os.path.basename(path))
-
-    def _make_spec_file(self):
-        """Generate the text of an RPM spec file and return it as a
-        list of strings (one per line).
-        """
-        # definitions and headers
-        spec_file = [
-            '%define name ' + self.distribution.get_name(),
-            '%define version ' + self.distribution.get_version().replace('-','_'),
-            '%define unmangled_version ' + self.distribution.get_version(),
-            '%define release ' + self.release.replace('-','_'),
-            '',
-            'Summary: ' + self.distribution.get_description(),
-            ]
-
-        # put locale summaries into spec file
-        # XXX not supported for now (hard to put a dictionary
-        # in a config file -- arg!)
-        #for locale in self.summaries.keys():
-        #    spec_file.append('Summary(%s): %s' % (locale,
-        #                                          self.summaries[locale]))
-
-        spec_file.extend([
-            'Name: %{name}',
-            'Version: %{version}',
-            'Release: %{release}',])
-
-        # XXX yuck! this filename is available from the "sdist" command,
-        # but only after it has run: and we create the spec file before
-        # running "sdist", in case of --spec-only.
-        if self.use_bzip2:
-            spec_file.append('Source0: %{name}-%{unmangled_version}.tar.bz2')
-        else:
-            spec_file.append('Source0: %{name}-%{unmangled_version}.tar.gz')
-
-        spec_file.extend([
-            'License: ' + self.distribution.get_license(),
-            'Group: ' + self.group,
-            'BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot',
-            'Prefix: %{_prefix}', ])
-
-        if not self.force_arch:
-            # noarch if no extension modules
-            if not self.distribution.has_ext_modules():
-                spec_file.append('BuildArch: noarch')
-        else:
-            spec_file.append( 'BuildArch: %s' % self.force_arch )
-
-        for field in ('Vendor',
-                      'Packager',
-                      'Provides',
-                      'Requires',
-                      'Conflicts',
-                      'Obsoletes',
-                      ):
-            val = getattr(self, string.lower(field))
-            if isinstance(val, list):
-                spec_file.append('%s: %s' % (field, string.join(val)))
-            elif val is not None:
-                spec_file.append('%s: %s' % (field, val))
-
-
-        if self.distribution.get_url() != 'UNKNOWN':
-            spec_file.append('Url: ' + self.distribution.get_url())
-
-        if self.distribution_name:
-            spec_file.append('Distribution: ' + self.distribution_name)
-
-        if self.build_requires:
-            spec_file.append('BuildRequires: ' +
-                             string.join(self.build_requires))
-
-        if self.icon:
-            spec_file.append('Icon: ' + os.path.basename(self.icon))
-
-        if self.no_autoreq:
-            spec_file.append('AutoReq: 0')
-
-        spec_file.extend([
-            '',
-            '%description',
-            self.distribution.get_long_description()
-            ])
-
-        # put locale descriptions into spec file
-        # XXX again, suppressed because config file syntax doesn't
-        # easily support this ;-(
-        #for locale in self.descriptions.keys():
-        #    spec_file.extend([
-        #        '',
-        #        '%description -l ' + locale,
-        #        self.descriptions[locale],
-        #        ])
-
-        # rpm scripts
-        # figure out default build script
-        def_setup_call = "%s %s" % (self.python,os.path.basename(sys.argv[0]))
-        def_build = "%s build" % def_setup_call
-        if self.use_rpm_opt_flags:
-            def_build = 'env CFLAGS="$RPM_OPT_FLAGS" ' + def_build
-
-        # insert contents of files
-
-        # XXX this is kind of misleading: user-supplied options are files
-        # that we open and interpolate into the spec file, but the defaults
-        # are just text that we drop in as-is.  Hmmm.
-
-        install_cmd = ('%s install -O1 --root=$RPM_BUILD_ROOT '
-                       '--record=INSTALLED_FILES') % def_setup_call
-
-        script_options = [
-            ('prep', 'prep_script', "%setup -n %{name}-%{unmangled_version}"),
-            ('build', 'build_script', def_build),
-            ('install', 'install_script', install_cmd),
-            ('clean', 'clean_script', "rm -rf $RPM_BUILD_ROOT"),
-            ('verifyscript', 'verify_script', None),
-            ('pre', 'pre_install', None),
-            ('post', 'post_install', None),
-            ('preun', 'pre_uninstall', None),
-            ('postun', 'post_uninstall', None),
-        ]
-
-        for (rpm_opt, attr, default) in script_options:
-            # Insert contents of file referred to, if no file is referred to
-            # use 'default' as contents of script
-            val = getattr(self, attr)
-            if val or default:
-                spec_file.extend([
-                    '',
-                    '%' + rpm_opt,])
-                if val:
-                    spec_file.extend(string.split(open(val, 'r').read(), '\n'))
-                else:
-                    spec_file.append(default)
-
-
-        # files section
-        spec_file.extend([
-            '',
-            '%files -f INSTALLED_FILES',
-            '%defattr(-,root,root)',
-            ])
-
-        if self.doc_files:
-            spec_file.append('%doc ' + string.join(self.doc_files))
-
-        if self.changelog:
-            spec_file.extend([
-                '',
-                '%changelog',])
-            spec_file.extend(self.changelog)
-
-        return spec_file
-
-    # _make_spec_file ()
-
-    def _format_changelog(self, changelog):
-        """Format the changelog correctly and convert it to a list of strings
-        """
-        if not changelog:
-            return changelog
-        new_changelog = []
-        for line in string.split(string.strip(changelog), '\n'):
-            line = string.strip(line)
-            if line[0] == '*':
-                new_changelog.extend(['', line])
-            elif line[0] == '-':
-                new_changelog.append(line)
-            else:
-                new_changelog.append('  ' + line)
-
-        # strip trailing newline inserted by first changelog entry
-        if not new_changelog[0]:
-            del new_changelog[0]
-
-        return new_changelog
-
-    # _format_changelog()
-
-# class bdist_rpm
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_wininst.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_wininst.py
deleted file mode 100644
index 518b298..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/bdist_wininst.py
+++ /dev/null
@@ -1,364 +0,0 @@
-"""distutils.command.bdist_wininst
-
-Implements the Distutils 'bdist_wininst' command: create a windows installer
-exe-program."""
-
-__revision__ = "$Id$"
-
-import sys
-import os
-import string
-
-from sysconfig import get_python_version
-
-from distutils.core import Command
-from distutils.dir_util import remove_tree
-from distutils.errors import DistutilsOptionError, DistutilsPlatformError
-from distutils import log
-from distutils.util import get_platform
-
-class bdist_wininst (Command):
-
-    description = "create an executable installer for MS Windows"
-
-    user_options = [('bdist-dir=', None,
-                     "temporary directory for creating the distribution"),
-                    ('plat-name=', 'p',
-                     "platform name to embed in generated filenames "
-                     "(default: %s)" % get_platform()),
-                    ('keep-temp', 'k',
-                     "keep the pseudo-installation tree around after " +
-                     "creating the distribution archive"),
-                    ('target-version=', None,
-                     "require a specific python version" +
-                     " on the target system"),
-                    ('no-target-compile', 'c',
-                     "do not compile .py to .pyc on the target system"),
-                    ('no-target-optimize', 'o',
-                     "do not compile .py to .pyo (optimized)"
-                     "on the target system"),
-                    ('dist-dir=', 'd',
-                     "directory to put final built distributions in"),
-                    ('bitmap=', 'b',
-                     "bitmap to use for the installer instead of python-powered logo"),
-                    ('title=', 't',
-                     "title to display on the installer background instead of default"),
-                    ('skip-build', None,
-                     "skip rebuilding everything (for testing/debugging)"),
-                    ('install-script=', None,
-                     "basename of installation script to be run after"
-                     "installation or before deinstallation"),
-                    ('pre-install-script=', None,
-                     "Fully qualified filename of a script to be run before "
-                     "any files are installed.  This script need not be in the "
-                     "distribution"),
-                    ('user-access-control=', None,
-                     "specify Vista's UAC handling - 'none'/default=no "
-                     "handling, 'auto'=use UAC if target Python installed for "
-                     "all users, 'force'=always use UAC"),
-                   ]
-
-    boolean_options = ['keep-temp', 'no-target-compile', 'no-target-optimize',
-                       'skip-build']
-
-    def initialize_options (self):
-        self.bdist_dir = None
-        self.plat_name = None
-        self.keep_temp = 0
-        self.no_target_compile = 0
-        self.no_target_optimize = 0
-        self.target_version = None
-        self.dist_dir = None
-        self.bitmap = None
-        self.title = None
-        self.skip_build = 0
-        self.install_script = None
-        self.pre_install_script = None
-        self.user_access_control = None
-
-    # initialize_options()
-
-
-    def finalize_options (self):
-        if self.bdist_dir is None:
-            if self.skip_build and self.plat_name:
-                # If build is skipped and plat_name is overridden, bdist will
-                # not see the correct 'plat_name' - so set that up manually.
-                bdist = self.distribution.get_command_obj('bdist')
-                bdist.plat_name = self.plat_name
-                # next the command will be initialized using that name
-            bdist_base = self.get_finalized_command('bdist').bdist_base
-            self.bdist_dir = os.path.join(bdist_base, 'wininst')
-        if not self.target_version:
-            self.target_version = ""
-        if not self.skip_build and self.distribution.has_ext_modules():
-            short_version = get_python_version()
-            if self.target_version and self.target_version != short_version:
-                raise DistutilsOptionError, \
-                      "target version can only be %s, or the '--skip-build'" \
-                      " option must be specified" % (short_version,)
-            self.target_version = short_version
-
-        self.set_undefined_options('bdist',
-                                   ('dist_dir', 'dist_dir'),
-                                   ('plat_name', 'plat_name'),
-                                  )
-
-        if self.install_script:
-            for script in self.distribution.scripts:
-                if self.install_script == os.path.basename(script):
-                    break
-            else:
-                raise DistutilsOptionError, \
-                      "install_script '%s' not found in scripts" % \
-                      self.install_script
-    # finalize_options()
-
-
-    def run (self):
-        if (sys.platform != "win32" and
-            (self.distribution.has_ext_modules() or
-             self.distribution.has_c_libraries())):
-            raise DistutilsPlatformError \
-                  ("distribution contains extensions and/or C libraries; "
-                   "must be compiled on a Windows 32 platform")
-
-        if not self.skip_build:
-            self.run_command('build')
-
-        install = self.reinitialize_command('install', reinit_subcommands=1)
-        install.root = self.bdist_dir
-        install.skip_build = self.skip_build
-        install.warn_dir = 0
-        install.plat_name = self.plat_name
-
-        install_lib = self.reinitialize_command('install_lib')
-        # we do not want to include pyc or pyo files
-        install_lib.compile = 0
-        install_lib.optimize = 0
-
-        if self.distribution.has_ext_modules():
-            # If we are building an installer for a Python version other
-            # than the one we are currently running, then we need to ensure
-            # our build_lib reflects the other Python version rather than ours.
-            # Note that for target_version!=sys.version, we must have skipped the
-            # build step, so there is no issue with enforcing the build of this
-            # version.
-            target_version = self.target_version
-            if not target_version:
-                assert self.skip_build, "Should have already checked this"
-                target_version = sys.version[0:3]
-            plat_specifier = ".%s-%s" % (self.plat_name, target_version)
-            build = self.get_finalized_command('build')
-            build.build_lib = os.path.join(build.build_base,
-                                           'lib' + plat_specifier)
-
-        # Use a custom scheme for the zip-file, because we have to decide
-        # at installation time which scheme to use.
-        for key in ('purelib', 'platlib', 'headers', 'scripts', 'data'):
-            value = string.upper(key)
-            if key == 'headers':
-                value = value + '/Include/$dist_name'
-            setattr(install,
-                    'install_' + key,
-                    value)
-
-        log.info("installing to %s", self.bdist_dir)
-        install.ensure_finalized()
-
-        # avoid warning of 'install_lib' about installing
-        # into a directory not in sys.path
-        sys.path.insert(0, os.path.join(self.bdist_dir, 'PURELIB'))
-
-        install.run()
-
-        del sys.path[0]
-
-        # And make an archive relative to the root of the
-        # pseudo-installation tree.
-        from tempfile import mktemp
-        archive_basename = mktemp()
-        fullname = self.distribution.get_fullname()
-        arcname = self.make_archive(archive_basename, "zip",
-                                    root_dir=self.bdist_dir)
-        # create an exe containing the zip-file
-        self.create_exe(arcname, fullname, self.bitmap)
-        if self.distribution.has_ext_modules():
-            pyversion = get_python_version()
-        else:
-            pyversion = 'any'
-        self.distribution.dist_files.append(('bdist_wininst', pyversion,
-                                             self.get_installer_filename(fullname)))
-        # remove the zip-file again
-        log.debug("removing temporary file '%s'", arcname)
-        os.remove(arcname)
-
-        if not self.keep_temp:
-            remove_tree(self.bdist_dir, dry_run=self.dry_run)
-
-    # run()
-
-    def get_inidata (self):
-        # Return data describing the installation.
-
-        lines = []
-        metadata = self.distribution.metadata
-
-        # Write the [metadata] section.
-        lines.append("[metadata]")
-
-        # 'info' will be displayed in the installer's dialog box,
-        # describing the items to be installed.
-        info = (metadata.long_description or '') + '\n'
-
-        # Escape newline characters
-        def escape(s):
-            return string.replace(s, "\n", "\\n")
-
-        for name in ["author", "author_email", "description", "maintainer",
-                     "maintainer_email", "name", "url", "version"]:
-            data = getattr(metadata, name, "")
-            if data:
-                info = info + ("\n    %s: %s" % \
-                               (string.capitalize(name), escape(data)))
-                lines.append("%s=%s" % (name, escape(data)))
-
-        # The [setup] section contains entries controlling
-        # the installer runtime.
-        lines.append("\n[Setup]")
-        if self.install_script:
-            lines.append("install_script=%s" % self.install_script)
-        lines.append("info=%s" % escape(info))
-        lines.append("target_compile=%d" % (not self.no_target_compile))
-        lines.append("target_optimize=%d" % (not self.no_target_optimize))
-        if self.target_version:
-            lines.append("target_version=%s" % self.target_version)
-        if self.user_access_control:
-            lines.append("user_access_control=%s" % self.user_access_control)
-
-        title = self.title or self.distribution.get_fullname()
-        lines.append("title=%s" % escape(title))
-        import time
-        import distutils
-        build_info = "Built %s with distutils-%s" % \
-                     (time.ctime(time.time()), distutils.__version__)
-        lines.append("build_info=%s" % build_info)
-        return string.join(lines, "\n")
-
-    # get_inidata()
-
-    def create_exe (self, arcname, fullname, bitmap=None):
-        import struct
-
-        self.mkpath(self.dist_dir)
-
-        cfgdata = self.get_inidata()
-
-        installer_name = self.get_installer_filename(fullname)
-        self.announce("creating %s" % installer_name)
-
-        if bitmap:
-            bitmapdata = open(bitmap, "rb").read()
-            bitmaplen = len(bitmapdata)
-        else:
-            bitmaplen = 0
-
-        file = open(installer_name, "wb")
-        file.write(self.get_exe_bytes())
-        if bitmap:
-            file.write(bitmapdata)
-
-        # Convert cfgdata from unicode to ascii, mbcs encoded
-        try:
-            unicode
-        except NameError:
-            pass
-        else:
-            if isinstance(cfgdata, unicode):
-                cfgdata = cfgdata.encode("mbcs")
-
-        # Append the pre-install script
-        cfgdata = cfgdata + "\0"
-        if self.pre_install_script:
-            script_data = open(self.pre_install_script, "r").read()
-            cfgdata = cfgdata + script_data + "\n\0"
-        else:
-            # empty pre-install script
-            cfgdata = cfgdata + "\0"
-        file.write(cfgdata)
-
-        # The 'magic number' 0x1234567B is used to make sure that the
-        # binary layout of 'cfgdata' is what the wininst.exe binary
-        # expects.  If the layout changes, increment that number, make
-        # the corresponding changes to the wininst.exe sources, and
-        # recompile them.
-        header = struct.pack("<iii",
-                             0x1234567B,       # tag
-                             len(cfgdata),     # length
-                             bitmaplen,        # number of bytes in bitmap
-                             )
-        file.write(header)
-        file.write(open(arcname, "rb").read())
-
-    # create_exe()
-
-    def get_installer_filename(self, fullname):
-        # Factored out to allow overriding in subclasses
-        if self.target_version:
-            # if we create an installer for a specific python version,
-            # it's better to include this in the name
-            installer_name = os.path.join(self.dist_dir,
-                                          "%s.%s-py%s.exe" %
-                                           (fullname, self.plat_name, self.target_version))
-        else:
-            installer_name = os.path.join(self.dist_dir,
-                                          "%s.%s.exe" % (fullname, self.plat_name))
-        return installer_name
-    # get_installer_filename()
-
-    def get_exe_bytes (self):
-        from distutils.msvccompiler import get_build_version
-        # If a target-version other than the current version has been
-        # specified, then using the MSVC version from *this* build is no good.
-        # Without actually finding and executing the target version and parsing
-        # its sys.version, we just hard-code our knowledge of old versions.
-        # NOTE: Possible alternative is to allow "--target-version" to
-        # specify a Python executable rather than a simple version string.
-        # We can then execute this program to obtain any info we need, such
-        # as the real sys.version string for the build.
-        cur_version = get_python_version()
-        if self.target_version and self.target_version != cur_version:
-            # If the target version is *later* than us, then we assume they
-            # use what we use
-            # string compares seem wrong, but are what sysconfig.py itself uses
-            if self.target_version > cur_version:
-                bv = get_build_version()
-            else:
-                if self.target_version < "2.4":
-                    bv = 6.0
-                else:
-                    bv = 7.1
-        else:
-            # for current version - use authoritative check.
-            bv = get_build_version()
-
-        # wininst-x.y.exe is in the same directory as this file
-        directory = os.path.dirname(__file__)
-        # we must use a wininst-x.y.exe built with the same C compiler
-        # used for python.  XXX What about mingw, borland, and so on?
-
-        # if plat_name starts with "win" but is not "win32"
-        # we want to strip "win" and leave the rest (e.g. -amd64)
-        # for all other cases, we don't want any suffix
-        if self.plat_name != 'win32' and self.plat_name[:3] == 'win':
-            sfix = self.plat_name[3:]
-        else:
-            sfix = ''
-
-        filename = os.path.join(directory, "wininst-%.1f%s.exe" % (bv, sfix))
-        f = open(filename, "rb")
-        try:
-            return f.read()
-        finally:
-            f.close()
-# class bdist_wininst
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build.py
deleted file mode 100644
index 4aac5fd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build.py
+++ /dev/null
@@ -1,147 +0,0 @@
-"""distutils.command.build
-
-Implements the Distutils 'build' command."""
-
-__revision__ = "$Id$"
-
-import sys, os
-
-from distutils.util import get_platform
-from distutils.core import Command
-from distutils.errors import DistutilsOptionError
-
-def show_compilers():
-    from distutils.ccompiler import show_compilers
-    show_compilers()
-
-class build(Command):
-
-    description = "build everything needed to install"
-
-    user_options = [
-        ('build-base=', 'b',
-         "base directory for build library"),
-        ('build-purelib=', None,
-         "build directory for platform-neutral distributions"),
-        ('build-platlib=', None,
-         "build directory for platform-specific distributions"),
-        ('build-lib=', None,
-         "build directory for all distribution (defaults to either " +
-         "build-purelib or build-platlib"),
-        ('build-scripts=', None,
-         "build directory for scripts"),
-        ('build-temp=', 't',
-         "temporary build directory"),
-        ('plat-name=', 'p',
-         "platform name to build for, if supported "
-         "(default: %s)" % get_platform()),
-        ('compiler=', 'c',
-         "specify the compiler type"),
-        ('debug', 'g',
-         "compile extensions and libraries with debugging information"),
-        ('force', 'f',
-         "forcibly build everything (ignore file timestamps)"),
-        ('executable=', 'e',
-         "specify final destination interpreter path (build.py)"),
-        ]
-
-    boolean_options = ['debug', 'force']
-
-    help_options = [
-        ('help-compiler', None,
-         "list available compilers", show_compilers),
-        ]
-
-    def initialize_options(self):
-        self.build_base = 'build'
-        # these are decided only after 'build_base' has its final value
-        # (unless overridden by the user or client)
-        self.build_purelib = None
-        self.build_platlib = None
-        self.build_lib = None
-        self.build_temp = None
-        self.build_scripts = None
-        self.compiler = None
-        self.plat_name = None
-        self.debug = None
-        self.force = 0
-        self.executable = None
-
-    def finalize_options(self):
-        if self.plat_name is None:
-            self.plat_name = get_platform()
-        else:
-            # plat-name only supported for windows (other platforms are
-            # supported via ./configure flags, if at all).  Avoid misleading
-            # other platforms.
-            if os.name != 'nt':
-                raise DistutilsOptionError(
-                            "--plat-name only supported on Windows (try "
-                            "using './configure --help' on your platform)")
-
-        plat_specifier = ".%s-%s" % (self.plat_name, sys.version[0:3])
-
-        # Make it so Python 2.x and Python 2.x with --with-pydebug don't
-        # share the same build directories. Doing so confuses the build
-        # process for C modules
-        if hasattr(sys, 'gettotalrefcount'):
-            plat_specifier += '-pydebug'
-
-        # 'build_purelib' and 'build_platlib' just default to 'lib' and
-        # 'lib.<plat>' under the base build directory.  We only use one of
-        # them for a given distribution, though --
-        if self.build_purelib is None:
-            self.build_purelib = os.path.join(self.build_base, 'lib')
-        if self.build_platlib is None:
-            self.build_platlib = os.path.join(self.build_base,
-                                              'lib' + plat_specifier)
-
-        # 'build_lib' is the actual directory that we will use for this
-        # particular module distribution -- if user didn't supply it, pick
-        # one of 'build_purelib' or 'build_platlib'.
-        if self.build_lib is None:
-            if self.distribution.ext_modules:
-                self.build_lib = self.build_platlib
-            else:
-                self.build_lib = self.build_purelib
-
-        # 'build_temp' -- temporary directory for compiler turds,
-        # "build/temp.<plat>"
-        if self.build_temp is None:
-            self.build_temp = os.path.join(self.build_base,
-                                           'temp' + plat_specifier)
-        if self.build_scripts is None:
-            self.build_scripts = os.path.join(self.build_base,
-                                              'scripts-' + sys.version[0:3])
-
-        if self.executable is None:
-            self.executable = os.path.normpath(sys.executable)
-
-    def run(self):
-        # Run all relevant sub-commands.  This will be some subset of:
-        #  - build_py      - pure Python modules
-        #  - build_clib    - standalone C libraries
-        #  - build_ext     - Python extensions
-        #  - build_scripts - (Python) scripts
-        for cmd_name in self.get_sub_commands():
-            self.run_command(cmd_name)
-
-    # -- Predicates for the sub-command list ---------------------------
-
-    def has_pure_modules (self):
-        return self.distribution.has_pure_modules()
-
-    def has_c_libraries (self):
-        return self.distribution.has_c_libraries()
-
-    def has_ext_modules (self):
-        return self.distribution.has_ext_modules()
-
-    def has_scripts (self):
-        return self.distribution.has_scripts()
-
-    sub_commands = [('build_py',      has_pure_modules),
-                    ('build_clib',    has_c_libraries),
-                    ('build_ext',     has_ext_modules),
-                    ('build_scripts', has_scripts),
-                   ]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_clib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_clib.py
deleted file mode 100644
index 6234666..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_clib.py
+++ /dev/null
@@ -1,209 +0,0 @@
-"""distutils.command.build_clib
-
-Implements the Distutils 'build_clib' command, to build a C/C++ library
-that is included in the module distribution and needed by an extension
-module."""
-
-__revision__ = "$Id$"
-
-
-# XXX this module has *lots* of code ripped-off quite transparently from
-# build_ext.py -- not surprisingly really, as the work required to build
-# a static library from a collection of C source files is not really all
-# that different from what's required to build a shared object file from
-# a collection of C source files.  Nevertheless, I haven't done the
-# necessary refactoring to account for the overlap in code between the
-# two modules, mainly because a number of subtle details changed in the
-# cut 'n paste.  Sigh.
-
-import os
-from distutils.core import Command
-from distutils.errors import DistutilsSetupError
-from distutils.ccompiler import customize_compiler
-from distutils import log
-
-def show_compilers():
-    from distutils.ccompiler import show_compilers
-    show_compilers()
-
-
-class build_clib(Command):
-
-    description = "build C/C++ libraries used by Python extensions"
-
-    user_options = [
-        ('build-clib=', 'b',
-         "directory to build C/C++ libraries to"),
-        ('build-temp=', 't',
-         "directory to put temporary build by-products"),
-        ('debug', 'g',
-         "compile with debugging information"),
-        ('force', 'f',
-         "forcibly build everything (ignore file timestamps)"),
-        ('compiler=', 'c',
-         "specify the compiler type"),
-        ]
-
-    boolean_options = ['debug', 'force']
-
-    help_options = [
-        ('help-compiler', None,
-         "list available compilers", show_compilers),
-        ]
-
-    def initialize_options(self):
-        self.build_clib = None
-        self.build_temp = None
-
-        # List of libraries to build
-        self.libraries = None
-
-        # Compilation options for all libraries
-        self.include_dirs = None
-        self.define = None
-        self.undef = None
-        self.debug = None
-        self.force = 0
-        self.compiler = None
-
-
-    def finalize_options(self):
-        # This might be confusing: both build-clib and build-temp default
-        # to build-temp as defined by the "build" command.  This is because
-        # I think that C libraries are really just temporary build
-        # by-products, at least from the point of view of building Python
-        # extensions -- but I want to keep my options open.
-        self.set_undefined_options('build',
-                                   ('build_temp', 'build_clib'),
-                                   ('build_temp', 'build_temp'),
-                                   ('compiler', 'compiler'),
-                                   ('debug', 'debug'),
-                                   ('force', 'force'))
-
-        self.libraries = self.distribution.libraries
-        if self.libraries:
-            self.check_library_list(self.libraries)
-
-        if self.include_dirs is None:
-            self.include_dirs = self.distribution.include_dirs or []
-        if isinstance(self.include_dirs, str):
-            self.include_dirs = self.include_dirs.split(os.pathsep)
-
-        # XXX same as for build_ext -- what about 'self.define' and
-        # 'self.undef' ?
-
-    def run(self):
-        if not self.libraries:
-            return
-
-        # Yech -- this is cut 'n pasted from build_ext.py!
-        from distutils.ccompiler import new_compiler
-        self.compiler = new_compiler(compiler=self.compiler,
-                                     dry_run=self.dry_run,
-                                     force=self.force)
-        customize_compiler(self.compiler)
-
-        if self.include_dirs is not None:
-            self.compiler.set_include_dirs(self.include_dirs)
-        if self.define is not None:
-            # 'define' option is a list of (name,value) tuples
-            for (name,value) in self.define:
-                self.compiler.define_macro(name, value)
-        if self.undef is not None:
-            for macro in self.undef:
-                self.compiler.undefine_macro(macro)
-
-        self.build_libraries(self.libraries)
-
-
-    def check_library_list(self, libraries):
-        """Ensure that the list of libraries is valid.
-
-        `library` is presumably provided as a command option 'libraries'.
-        This method checks that it is a list of 2-tuples, where the tuples
-        are (library_name, build_info_dict).
-
-        Raise DistutilsSetupError if the structure is invalid anywhere;
-        just returns otherwise.
-        """
-        if not isinstance(libraries, list):
-            raise DistutilsSetupError, \
-                  "'libraries' option must be a list of tuples"
-
-        for lib in libraries:
-            if not isinstance(lib, tuple) and len(lib) != 2:
-                raise DistutilsSetupError, \
-                      "each element of 'libraries' must a 2-tuple"
-
-            name, build_info = lib
-
-            if not isinstance(name, str):
-                raise DistutilsSetupError, \
-                      "first element of each tuple in 'libraries' " + \
-                      "must be a string (the library name)"
-            if '/' in name or (os.sep != '/' and os.sep in name):
-                raise DistutilsSetupError, \
-                      ("bad library name '%s': " +
-                       "may not contain directory separators") % \
-                      lib[0]
-
-            if not isinstance(build_info, dict):
-                raise DistutilsSetupError, \
-                      "second element of each tuple in 'libraries' " + \
-                      "must be a dictionary (build info)"
-
-    def get_library_names(self):
-        # Assume the library list is valid -- 'check_library_list()' is
-        # called from 'finalize_options()', so it should be!
-        if not self.libraries:
-            return None
-
-        lib_names = []
-        for (lib_name, build_info) in self.libraries:
-            lib_names.append(lib_name)
-        return lib_names
-
-
-    def get_source_files(self):
-        self.check_library_list(self.libraries)
-        filenames = []
-        for (lib_name, build_info) in self.libraries:
-            sources = build_info.get('sources')
-            if sources is None or not isinstance(sources, (list, tuple)):
-                raise DistutilsSetupError, \
-                      ("in 'libraries' option (library '%s'), "
-                       "'sources' must be present and must be "
-                       "a list of source filenames") % lib_name
-
-            filenames.extend(sources)
-        return filenames
-
-    def build_libraries(self, libraries):
-        for (lib_name, build_info) in libraries:
-            sources = build_info.get('sources')
-            if sources is None or not isinstance(sources, (list, tuple)):
-                raise DistutilsSetupError, \
-                      ("in 'libraries' option (library '%s'), " +
-                       "'sources' must be present and must be " +
-                       "a list of source filenames") % lib_name
-            sources = list(sources)
-
-            log.info("building '%s' library", lib_name)
-
-            # First, compile the source code to object files in the library
-            # directory.  (This should probably change to putting object
-            # files in a temporary build directory.)
-            macros = build_info.get('macros')
-            include_dirs = build_info.get('include_dirs')
-            objects = self.compiler.compile(sources,
-                                            output_dir=self.build_temp,
-                                            macros=macros,
-                                            include_dirs=include_dirs,
-                                            debug=self.debug)
-
-            # Now "link" the object files together into a static library.
-            # (On Unix at least, this isn't really linking -- it just
-            # builds an archive.  Whatever.)
-            self.compiler.create_static_lib(objects, lib_name,
-                                            output_dir=self.build_clib,
-                                            debug=self.debug)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_ext.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_ext.py
deleted file mode 100644
index c29652b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_ext.py
+++ /dev/null
@@ -1,769 +0,0 @@
-"""distutils.command.build_ext
-
-Implements the Distutils 'build_ext' command, for building extension
-modules (currently limited to C extensions, should accommodate C++
-extensions ASAP)."""
-
-# This module should be kept compatible with Python 2.1.
-
-__revision__ = "$Id$"
-
-import sys, os, string, re
-from types import *
-from site import USER_BASE, USER_SITE
-from distutils.core import Command
-from distutils.errors import *
-from distutils.sysconfig import customize_compiler, get_python_version
-from distutils.dep_util import newer_group
-from distutils.extension import Extension
-from distutils.util import get_platform
-from distutils import log
-
-if os.name == 'nt':
-    from distutils.msvccompiler import get_build_version
-    MSVC_VERSION = int(get_build_version())
-
-# An extension name is just a dot-separated list of Python NAMEs (ie.
-# the same as a fully-qualified module name).
-extension_name_re = re.compile \
-    (r'^[a-zA-Z_][a-zA-Z_0-9]*(\.[a-zA-Z_][a-zA-Z_0-9]*)*$')
-
-
-def show_compilers ():
-    from distutils.ccompiler import show_compilers
-    show_compilers()
-
-
-class build_ext (Command):
-
-    description = "build C/C++ extensions (compile/link to build directory)"
-
-    # XXX thoughts on how to deal with complex command-line options like
-    # these, i.e. how to make it so fancy_getopt can suck them off the
-    # command line and make it look like setup.py defined the appropriate
-    # lists of tuples of what-have-you.
-    #   - each command needs a callback to process its command-line options
-    #   - Command.__init__() needs access to its share of the whole
-    #     command line (must ultimately come from
-    #     Distribution.parse_command_line())
-    #   - it then calls the current command class' option-parsing
-    #     callback to deal with weird options like -D, which have to
-    #     parse the option text and churn out some custom data
-    #     structure
-    #   - that data structure (in this case, a list of 2-tuples)
-    #     will then be present in the command object by the time
-    #     we get to finalize_options() (i.e. the constructor
-    #     takes care of both command-line and client options
-    #     in between initialize_options() and finalize_options())
-
-    sep_by = " (separated by '%s')" % os.pathsep
-    user_options = [
-        ('build-lib=', 'b',
-         "directory for compiled extension modules"),
-        ('build-temp=', 't',
-         "directory for temporary files (build by-products)"),
-        ('plat-name=', 'p',
-         "platform name to cross-compile for, if supported "
-         "(default: %s)" % get_platform()),
-        ('inplace', 'i',
-         "ignore build-lib and put compiled extensions into the source " +
-         "directory alongside your pure Python modules"),
-        ('include-dirs=', 'I',
-         "list of directories to search for header files" + sep_by),
-        ('define=', 'D',
-         "C preprocessor macros to define"),
-        ('undef=', 'U',
-         "C preprocessor macros to undefine"),
-        ('libraries=', 'l',
-         "external C libraries to link with"),
-        ('library-dirs=', 'L',
-         "directories to search for external C libraries" + sep_by),
-        ('rpath=', 'R',
-         "directories to search for shared C libraries at runtime"),
-        ('link-objects=', 'O',
-         "extra explicit link objects to include in the link"),
-        ('debug', 'g',
-         "compile/link with debugging information"),
-        ('force', 'f',
-         "forcibly build everything (ignore file timestamps)"),
-        ('compiler=', 'c',
-         "specify the compiler type"),
-        ('swig-cpp', None,
-         "make SWIG create C++ files (default is C)"),
-        ('swig-opts=', None,
-         "list of SWIG command line options"),
-        ('swig=', None,
-         "path to the SWIG executable"),
-        ('user', None,
-         "add user include, library and rpath"),
-        ]
-
-    boolean_options = ['inplace', 'debug', 'force', 'swig-cpp', 'user']
-
-    help_options = [
-        ('help-compiler', None,
-         "list available compilers", show_compilers),
-        ]
-
-    def initialize_options (self):
-        self.extensions = None
-        self.build_lib = None
-        self.plat_name = None
-        self.build_temp = None
-        self.inplace = 0
-        self.package = None
-
-        self.include_dirs = None
-        self.define = None
-        self.undef = None
-        self.libraries = None
-        self.library_dirs = None
-        self.rpath = None
-        self.link_objects = None
-        self.debug = None
-        self.force = None
-        self.compiler = None
-        self.swig = None
-        self.swig_cpp = None
-        self.swig_opts = None
-        self.user = None
-
-    def finalize_options(self):
-        from distutils import sysconfig
-
-        self.set_undefined_options('build',
-                                   ('build_lib', 'build_lib'),
-                                   ('build_temp', 'build_temp'),
-                                   ('compiler', 'compiler'),
-                                   ('debug', 'debug'),
-                                   ('force', 'force'),
-                                   ('plat_name', 'plat_name'),
-                                   )
-
-        if self.package is None:
-            self.package = self.distribution.ext_package
-
-        self.extensions = self.distribution.ext_modules
-
-        # Make sure Python's include directories (for Python.h, pyconfig.h,
-        # etc.) are in the include search path.
-        py_include = sysconfig.get_python_inc()
-        plat_py_include = sysconfig.get_python_inc(plat_specific=1)
-        if self.include_dirs is None:
-            self.include_dirs = self.distribution.include_dirs or []
-        if isinstance(self.include_dirs, str):
-            self.include_dirs = self.include_dirs.split(os.pathsep)
-
-        # Put the Python "system" include dir at the end, so that
-        # any local include dirs take precedence.
-        self.include_dirs.append(py_include)
-        if plat_py_include != py_include:
-            self.include_dirs.append(plat_py_include)
-
-        if isinstance(self.libraries, str):
-            self.libraries = [self.libraries]
-
-        # Life is easier if we're not forever checking for None, so
-        # simplify these options to empty lists if unset
-        if self.libraries is None:
-            self.libraries = []
-        if self.library_dirs is None:
-            self.library_dirs = []
-        elif type(self.library_dirs) is StringType:
-            self.library_dirs = string.split(self.library_dirs, os.pathsep)
-
-        if self.rpath is None:
-            self.rpath = []
-        elif type(self.rpath) is StringType:
-            self.rpath = string.split(self.rpath, os.pathsep)
-
-        # for extensions under windows use different directories
-        # for Release and Debug builds.
-        # also Python's library directory must be appended to library_dirs
-        if os.name == 'nt':
-            # the 'libs' directory is for binary installs - we assume that
-            # must be the *native* platform.  But we don't really support
-            # cross-compiling via a binary install anyway, so we let it go.
-            self.library_dirs.append(os.path.join(sys.exec_prefix, 'libs'))
-            if self.debug:
-                self.build_temp = os.path.join(self.build_temp, "Debug")
-            else:
-                self.build_temp = os.path.join(self.build_temp, "Release")
-
-            # Append the source distribution include and library directories,
-            # this allows distutils on windows to work in the source tree
-            self.include_dirs.append(os.path.join(sys.exec_prefix, 'PC'))
-            if MSVC_VERSION == 9:
-                # Use the .lib files for the correct architecture
-                if self.plat_name == 'win32':
-                    suffix = ''
-                else:
-                    # win-amd64 or win-ia64
-                    suffix = self.plat_name[4:]
-                new_lib = os.path.join(sys.exec_prefix, 'PCbuild')
-                if suffix:
-                    new_lib = os.path.join(new_lib, suffix)
-                self.library_dirs.append(new_lib)
-
-            elif MSVC_VERSION == 8:
-                self.library_dirs.append(os.path.join(sys.exec_prefix,
-                                         'PC', 'VS8.0'))
-            elif MSVC_VERSION == 7:
-                self.library_dirs.append(os.path.join(sys.exec_prefix,
-                                         'PC', 'VS7.1'))
-            else:
-                self.library_dirs.append(os.path.join(sys.exec_prefix,
-                                         'PC', 'VC6'))
-
-        # OS/2 (EMX) doesn't support Debug vs Release builds, but has the
-        # import libraries in its "Config" subdirectory
-        if os.name == 'os2':
-            self.library_dirs.append(os.path.join(sys.exec_prefix, 'Config'))
-
-        # for extensions under Cygwin and AtheOS Python's library directory must be
-        # appended to library_dirs
-        if sys.platform[:6] == 'cygwin' or sys.platform[:6] == 'atheos':
-            if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")):
-                # building third party extensions
-                self.library_dirs.append(os.path.join(sys.prefix, "lib",
-                                                      "python" + get_python_version(),
-                                                      "config"))
-            else:
-                # building python standard extensions
-                self.library_dirs.append('.')
-
-        # for extensions under Linux or Solaris with a shared Python library,
-        # Python's library directory must be appended to library_dirs
-        sysconfig.get_config_var('Py_ENABLE_SHARED')
-        if ((sys.platform.startswith('linux') or sys.platform.startswith('gnu')
-             or sys.platform.startswith('sunos'))
-            and sysconfig.get_config_var('Py_ENABLE_SHARED')):
-            if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")):
-                # building third party extensions
-                self.library_dirs.append(sysconfig.get_config_var('LIBDIR'))
-            else:
-                # building python standard extensions
-                self.library_dirs.append('.')
-
-        # The argument parsing will result in self.define being a string, but
-        # it has to be a list of 2-tuples.  All the preprocessor symbols
-        # specified by the 'define' option will be set to '1'.  Multiple
-        # symbols can be separated with commas.
-
-        if self.define:
-            defines = self.define.split(',')
-            self.define = map(lambda symbol: (symbol, '1'), defines)
-
-        # The option for macros to undefine is also a string from the
-        # option parsing, but has to be a list.  Multiple symbols can also
-        # be separated with commas here.
-        if self.undef:
-            self.undef = self.undef.split(',')
-
-        if self.swig_opts is None:
-            self.swig_opts = []
-        else:
-            self.swig_opts = self.swig_opts.split(' ')
-
-        # Finally add the user include and library directories if requested
-        if self.user:
-            user_include = os.path.join(USER_BASE, "include")
-            user_lib = os.path.join(USER_BASE, "lib")
-            if os.path.isdir(user_include):
-                self.include_dirs.append(user_include)
-            if os.path.isdir(user_lib):
-                self.library_dirs.append(user_lib)
-                self.rpath.append(user_lib)
-
-    def run(self):
-        from distutils.ccompiler import new_compiler
-
-        # 'self.extensions', as supplied by setup.py, is a list of
-        # Extension instances.  See the documentation for Extension (in
-        # distutils.extension) for details.
-        #
-        # For backwards compatibility with Distutils 0.8.2 and earlier, we
-        # also allow the 'extensions' list to be a list of tuples:
-        #    (ext_name, build_info)
-        # where build_info is a dictionary containing everything that
-        # Extension instances do except the name, with a few things being
-        # differently named.  We convert these 2-tuples to Extension
-        # instances as needed.
-
-        if not self.extensions:
-            return
-
-        # If we were asked to build any C/C++ libraries, make sure that the
-        # directory where we put them is in the library search path for
-        # linking extensions.
-        if self.distribution.has_c_libraries():
-            build_clib = self.get_finalized_command('build_clib')
-            self.libraries.extend(build_clib.get_library_names() or [])
-            self.library_dirs.append(build_clib.build_clib)
-
-        # Setup the CCompiler object that we'll use to do all the
-        # compiling and linking
-        self.compiler = new_compiler(compiler=self.compiler,
-                                     verbose=self.verbose,
-                                     dry_run=self.dry_run,
-                                     force=self.force)
-        customize_compiler(self.compiler)
-        # If we are cross-compiling, init the compiler now (if we are not
-        # cross-compiling, init would not hurt, but people may rely on
-        # late initialization of compiler even if they shouldn't...)
-        if os.name == 'nt' and self.plat_name != get_platform():
-            self.compiler.initialize(self.plat_name)
-
-        # And make sure that any compile/link-related options (which might
-        # come from the command-line or from the setup script) are set in
-        # that CCompiler object -- that way, they automatically apply to
-        # all compiling and linking done here.
-        if self.include_dirs is not None:
-            self.compiler.set_include_dirs(self.include_dirs)
-        if self.define is not None:
-            # 'define' option is a list of (name,value) tuples
-            for (name, value) in self.define:
-                self.compiler.define_macro(name, value)
-        if self.undef is not None:
-            for macro in self.undef:
-                self.compiler.undefine_macro(macro)
-        if self.libraries is not None:
-            self.compiler.set_libraries(self.libraries)
-        if self.library_dirs is not None:
-            self.compiler.set_library_dirs(self.library_dirs)
-        if self.rpath is not None:
-            self.compiler.set_runtime_library_dirs(self.rpath)
-        if self.link_objects is not None:
-            self.compiler.set_link_objects(self.link_objects)
-
-        # Now actually compile and link everything.
-        self.build_extensions()
-
-    def check_extensions_list(self, extensions):
-        """Ensure that the list of extensions (presumably provided as a
-        command option 'extensions') is valid, i.e. it is a list of
-        Extension objects.  We also support the old-style list of 2-tuples,
-        where the tuples are (ext_name, build_info), which are converted to
-        Extension instances here.
-
-        Raise DistutilsSetupError if the structure is invalid anywhere;
-        just returns otherwise.
-        """
-        if not isinstance(extensions, list):
-            raise DistutilsSetupError, \
-                  "'ext_modules' option must be a list of Extension instances"
-
-        for i, ext in enumerate(extensions):
-            if isinstance(ext, Extension):
-                continue                # OK! (assume type-checking done
-                                        # by Extension constructor)
-
-            if not isinstance(ext, tuple) or len(ext) != 2:
-                raise DistutilsSetupError, \
-                      ("each element of 'ext_modules' option must be an "
-                       "Extension instance or 2-tuple")
-
-            ext_name, build_info = ext
-
-            log.warn(("old-style (ext_name, build_info) tuple found in "
-                      "ext_modules for extension '%s'"
-                      "-- please convert to Extension instance" % ext_name))
-
-            if not (isinstance(ext_name, str) and
-                    extension_name_re.match(ext_name)):
-                raise DistutilsSetupError, \
-                      ("first element of each tuple in 'ext_modules' "
-                       "must be the extension name (a string)")
-
-            if not isinstance(build_info, dict):
-                raise DistutilsSetupError, \
-                      ("second element of each tuple in 'ext_modules' "
-                       "must be a dictionary (build info)")
-
-            # OK, the (ext_name, build_info) dict is type-safe: convert it
-            # to an Extension instance.
-            ext = Extension(ext_name, build_info['sources'])
-
-            # Easy stuff: one-to-one mapping from dict elements to
-            # instance attributes.
-            for key in ('include_dirs', 'library_dirs', 'libraries',
-                        'extra_objects', 'extra_compile_args',
-                        'extra_link_args'):
-                val = build_info.get(key)
-                if val is not None:
-                    setattr(ext, key, val)
-
-            # Medium-easy stuff: same syntax/semantics, different names.
-            ext.runtime_library_dirs = build_info.get('rpath')
-            if 'def_file' in build_info:
-                log.warn("'def_file' element of build info dict "
-                         "no longer supported")
-
-            # Non-trivial stuff: 'macros' split into 'define_macros'
-            # and 'undef_macros'.
-            macros = build_info.get('macros')
-            if macros:
-                ext.define_macros = []
-                ext.undef_macros = []
-                for macro in macros:
-                    if not (isinstance(macro, tuple) and len(macro) in (1, 2)):
-                        raise DistutilsSetupError, \
-                              ("'macros' element of build info dict "
-                               "must be 1- or 2-tuple")
-                    if len(macro) == 1:
-                        ext.undef_macros.append(macro[0])
-                    elif len(macro) == 2:
-                        ext.define_macros.append(macro)
-
-            extensions[i] = ext
-
-    def get_source_files(self):
-        self.check_extensions_list(self.extensions)
-        filenames = []
-
-        # Wouldn't it be neat if we knew the names of header files too...
-        for ext in self.extensions:
-            filenames.extend(ext.sources)
-
-        return filenames
-
-    def get_outputs(self):
-        # Sanity check the 'extensions' list -- can't assume this is being
-        # done in the same run as a 'build_extensions()' call (in fact, we
-        # can probably assume that it *isn't*!).
-        self.check_extensions_list(self.extensions)
-
-        # And build the list of output (built) filenames.  Note that this
-        # ignores the 'inplace' flag, and assumes everything goes in the
-        # "build" tree.
-        outputs = []
-        for ext in self.extensions:
-            outputs.append(self.get_ext_fullpath(ext.name))
-        return outputs
-
-    def build_extensions(self):
-        # First, sanity-check the 'extensions' list
-        self.check_extensions_list(self.extensions)
-
-        for ext in self.extensions:
-            self.build_extension(ext)
-
-    def build_extension(self, ext):
-        sources = ext.sources
-        if sources is None or type(sources) not in (ListType, TupleType):
-            raise DistutilsSetupError, \
-                  ("in 'ext_modules' option (extension '%s'), " +
-                   "'sources' must be present and must be " +
-                   "a list of source filenames") % ext.name
-        sources = list(sources)
-
-        ext_path = self.get_ext_fullpath(ext.name)
-        depends = sources + ext.depends
-        if not (self.force or newer_group(depends, ext_path, 'newer')):
-            log.debug("skipping '%s' extension (up-to-date)", ext.name)
-            return
-        else:
-            log.info("building '%s' extension", ext.name)
-
-        # First, scan the sources for SWIG definition files (.i), run
-        # SWIG on 'em to create .c files, and modify the sources list
-        # accordingly.
-        sources = self.swig_sources(sources, ext)
-
-        # Next, compile the source code to object files.
-
-        # XXX not honouring 'define_macros' or 'undef_macros' -- the
-        # CCompiler API needs to change to accommodate this, and I
-        # want to do one thing at a time!
-
-        # Two possible sources for extra compiler arguments:
-        #   - 'extra_compile_args' in Extension object
-        #   - CFLAGS environment variable (not particularly
-        #     elegant, but people seem to expect it and I
-        #     guess it's useful)
-        # The environment variable should take precedence, and
-        # any sensible compiler will give precedence to later
-        # command line args.  Hence we combine them in order:
-        extra_args = ext.extra_compile_args or []
-
-        macros = ext.define_macros[:]
-        for undef in ext.undef_macros:
-            macros.append((undef,))
-
-        objects = self.compiler.compile(sources,
-                                         output_dir=self.build_temp,
-                                         macros=macros,
-                                         include_dirs=ext.include_dirs,
-                                         debug=self.debug,
-                                         extra_postargs=extra_args,
-                                         depends=ext.depends)
-
-        # XXX -- this is a Vile HACK!
-        #
-        # The setup.py script for Python on Unix needs to be able to
-        # get this list so it can perform all the clean up needed to
-        # avoid keeping object files around when cleaning out a failed
-        # build of an extension module.  Since Distutils does not
-        # track dependencies, we have to get rid of intermediates to
-        # ensure all the intermediates will be properly re-built.
-        #
-        self._built_objects = objects[:]
-
-        # Now link the object files together into a "shared object" --
-        # of course, first we have to figure out all the other things
-        # that go into the mix.
-        if ext.extra_objects:
-            objects.extend(ext.extra_objects)
-        extra_args = ext.extra_link_args or []
-
-        # Detect target language, if not provided
-        language = ext.language or self.compiler.detect_language(sources)
-
-        self.compiler.link_shared_object(
-            objects, ext_path,
-            libraries=self.get_libraries(ext),
-            library_dirs=ext.library_dirs,
-            runtime_library_dirs=ext.runtime_library_dirs,
-            extra_postargs=extra_args,
-            export_symbols=self.get_export_symbols(ext),
-            debug=self.debug,
-            build_temp=self.build_temp,
-            target_lang=language)
-
-
-    def swig_sources (self, sources, extension):
-
-        """Walk the list of source files in 'sources', looking for SWIG
-        interface (.i) files.  Run SWIG on all that are found, and
-        return a modified 'sources' list with SWIG source files replaced
-        by the generated C (or C++) files.
-        """
-
-        new_sources = []
-        swig_sources = []
-        swig_targets = {}
-
-        # XXX this drops generated C/C++ files into the source tree, which
-        # is fine for developers who want to distribute the generated
-        # source -- but there should be an option to put SWIG output in
-        # the temp dir.
-
-        if self.swig_cpp:
-            log.warn("--swig-cpp is deprecated - use --swig-opts=-c++")
-
-        if self.swig_cpp or ('-c++' in self.swig_opts) or \
-           ('-c++' in extension.swig_opts):
-            target_ext = '.cpp'
-        else:
-            target_ext = '.c'
-
-        for source in sources:
-            (base, ext) = os.path.splitext(source)
-            if ext == ".i":             # SWIG interface file
-                new_sources.append(base + '_wrap' + target_ext)
-                swig_sources.append(source)
-                swig_targets[source] = new_sources[-1]
-            else:
-                new_sources.append(source)
-
-        if not swig_sources:
-            return new_sources
-
-        swig = self.swig or self.find_swig()
-        swig_cmd = [swig, "-python"]
-        swig_cmd.extend(self.swig_opts)
-        if self.swig_cpp:
-            swig_cmd.append("-c++")
-
-        # Do not override commandline arguments
-        if not self.swig_opts:
-            for o in extension.swig_opts:
-                swig_cmd.append(o)
-
-        for source in swig_sources:
-            target = swig_targets[source]
-            log.info("swigging %s to %s", source, target)
-            self.spawn(swig_cmd + ["-o", target, source])
-
-        return new_sources
-
-    # swig_sources ()
-
-    def find_swig (self):
-        """Return the name of the SWIG executable.  On Unix, this is
-        just "swig" -- it should be in the PATH.  Tries a bit harder on
-        Windows.
-        """
-
-        if os.name == "posix":
-            return "swig"
-        elif os.name == "nt":
-
-            # Look for SWIG in its standard installation directory on
-            # Windows (or so I presume!).  If we find it there, great;
-            # if not, act like Unix and assume it's in the PATH.
-            for vers in ("1.3", "1.2", "1.1"):
-                fn = os.path.join("c:\\swig%s" % vers, "swig.exe")
-                if os.path.isfile(fn):
-                    return fn
-            else:
-                return "swig.exe"
-
-        elif os.name == "os2":
-            # assume swig available in the PATH.
-            return "swig.exe"
-
-        else:
-            raise DistutilsPlatformError, \
-                  ("I don't know how to find (much less run) SWIG "
-                   "on platform '%s'") % os.name
-
-    # find_swig ()
-
-    # -- Name generators -----------------------------------------------
-    # (extension names, filenames, whatever)
-    def get_ext_fullpath(self, ext_name):
-        """Returns the path of the filename for a given extension.
-
-        The file is located in `build_lib` or directly in the package
-        (inplace option).
-        """
-        # makes sure the extension name is only using dots
-        all_dots = string.maketrans('/'+os.sep, '..')
-        ext_name = ext_name.translate(all_dots)
-
-        fullname = self.get_ext_fullname(ext_name)
-        modpath = fullname.split('.')
-        filename = self.get_ext_filename(ext_name)
-        filename = os.path.split(filename)[-1]
-
-        if not self.inplace:
-            # no further work needed
-            # returning :
-            #   build_dir/package/path/filename
-            filename = os.path.join(*modpath[:-1]+[filename])
-            return os.path.join(self.build_lib, filename)
-
-        # the inplace option requires to find the package directory
-        # using the build_py command for that
-        package = '.'.join(modpath[0:-1])
-        build_py = self.get_finalized_command('build_py')
-        package_dir = os.path.abspath(build_py.get_package_dir(package))
-
-        # returning
-        #   package_dir/filename
-        return os.path.join(package_dir, filename)
-
-    def get_ext_fullname(self, ext_name):
-        """Returns the fullname of a given extension name.
-
-        Adds the `package.` prefix"""
-        if self.package is None:
-            return ext_name
-        else:
-            return self.package + '.' + ext_name
-
-    def get_ext_filename(self, ext_name):
-        r"""Convert the name of an extension (eg. "foo.bar") into the name
-        of the file from which it will be loaded (eg. "foo/bar.so", or
-        "foo\bar.pyd").
-        """
-        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]
-        # extensions in debug_mode are named 'module_d.pyd' under windows
-        so_ext = get_config_var('SO')
-        if os.name == 'nt' and self.debug:
-            return os.path.join(*ext_path) + '_d' + so_ext
-        return os.path.join(*ext_path) + so_ext
-
-    def get_export_symbols (self, ext):
-        """Return the list of symbols that a shared extension has to
-        export.  This either uses 'ext.export_symbols' or, if it's not
-        provided, "init" + module_name.  Only relevant on Windows, where
-        the .pyd file (DLL) must export the module "init" function.
-        """
-        initfunc_name = "init" + ext.name.split('.')[-1]
-        if initfunc_name not in ext.export_symbols:
-            ext.export_symbols.append(initfunc_name)
-        return ext.export_symbols
-
-    def get_libraries (self, ext):
-        """Return the list of libraries to link against when building a
-        shared extension.  On most platforms, this is just 'ext.libraries';
-        on Windows and OS/2, we add the Python library (eg. python20.dll).
-        """
-        # The python library is always needed on Windows.  For MSVC, this
-        # is redundant, since the library is mentioned in a pragma in
-        # pyconfig.h that MSVC groks.  The other Windows compilers all seem
-        # to need it mentioned explicitly, though, so that's what we do.
-        # Append '_d' to the python import library on debug builds.
-        if sys.platform == "win32":
-            from distutils.msvccompiler import MSVCCompiler
-            if not isinstance(self.compiler, MSVCCompiler):
-                template = "python%d%d"
-                if self.debug:
-                    template = template + '_d'
-                pythonlib = (template %
-                       (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff))
-                # don't extend ext.libraries, it may be shared with other
-                # extensions, it is a reference to the original list
-                return ext.libraries + [pythonlib]
-            else:
-                return ext.libraries
-        elif sys.platform == "os2emx":
-            # EMX/GCC requires the python library explicitly, and I
-            # believe VACPP does as well (though not confirmed) - AIM Apr01
-            template = "python%d%d"
-            # debug versions of the main DLL aren't supported, at least
-            # not at this time - AIM Apr01
-            #if self.debug:
-            #    template = template + '_d'
-            pythonlib = (template %
-                   (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff))
-            # don't extend ext.libraries, it may be shared with other
-            # extensions, it is a reference to the original list
-            return ext.libraries + [pythonlib]
-        elif sys.platform[:6] == "cygwin":
-            template = "python%d.%d"
-            pythonlib = (template %
-                   (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff))
-            # don't extend ext.libraries, it may be shared with other
-            # extensions, it is a reference to the original list
-            return ext.libraries + [pythonlib]
-        elif sys.platform[:6] == "atheos":
-            from distutils import sysconfig
-
-            template = "python%d.%d"
-            pythonlib = (template %
-                   (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff))
-            # Get SHLIBS from Makefile
-            extra = []
-            for lib in sysconfig.get_config_var('SHLIBS').split():
-                if lib.startswith('-l'):
-                    extra.append(lib[2:])
-                else:
-                    extra.append(lib)
-            # don't extend ext.libraries, it may be shared with other
-            # extensions, it is a reference to the original list
-            return ext.libraries + [pythonlib, "m"] + extra
-
-        elif sys.platform == 'darwin':
-            # Don't use the default code below
-            return ext.libraries
-        elif sys.platform[:3] == 'aix':
-            # Don't use the default code below
-            return ext.libraries
-        else:
-            from distutils import sysconfig
-            if sysconfig.get_config_var('Py_ENABLE_SHARED'):
-                template = "python%d.%d"
-                pythonlib = (template %
-                             (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff))
-                return ext.libraries + [pythonlib]
-            else:
-                return ext.libraries
-
-# class build_ext
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_py.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_py.py
deleted file mode 100644
index 8f87ba0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_py.py
+++ /dev/null
@@ -1,393 +0,0 @@
-"""distutils.command.build_py
-
-Implements the Distutils 'build_py' command."""
-
-__revision__ = "$Id$"
-
-import os
-import sys
-from glob import glob
-
-from distutils.core import Command
-from distutils.errors import DistutilsOptionError, DistutilsFileError
-from distutils.util import convert_path
-from distutils import log
-
-class build_py(Command):
-
-    description = "\"build\" pure Python modules (copy to build directory)"
-
-    user_options = [
-        ('build-lib=', 'd', "directory to \"build\" (copy) to"),
-        ('compile', 'c', "compile .py to .pyc"),
-        ('no-compile', None, "don't compile .py files [default]"),
-        ('optimize=', 'O',
-         "also compile with optimization: -O1 for \"python -O\", "
-         "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"),
-        ('force', 'f', "forcibly build everything (ignore file timestamps)"),
-        ]
-
-    boolean_options = ['compile', 'force']
-    negative_opt = {'no-compile' : 'compile'}
-
-    def initialize_options(self):
-        self.build_lib = None
-        self.py_modules = None
-        self.package = None
-        self.package_data = None
-        self.package_dir = None
-        self.compile = 0
-        self.optimize = 0
-        self.force = None
-
-    def finalize_options(self):
-        self.set_undefined_options('build',
-                                   ('build_lib', 'build_lib'),
-                                   ('force', 'force'))
-
-        # Get the distribution options that are aliases for build_py
-        # options -- list of packages and list of modules.
-        self.packages = self.distribution.packages
-        self.py_modules = self.distribution.py_modules
-        self.package_data = self.distribution.package_data
-        self.package_dir = {}
-        if self.distribution.package_dir:
-            for name, path in self.distribution.package_dir.items():
-                self.package_dir[name] = convert_path(path)
-        self.data_files = self.get_data_files()
-
-        # Ick, copied straight from install_lib.py (fancy_getopt needs a
-        # type system!  Hell, *everything* needs a type system!!!)
-        if not isinstance(self.optimize, int):
-            try:
-                self.optimize = int(self.optimize)
-                assert 0 <= self.optimize <= 2
-            except (ValueError, AssertionError):
-                raise DistutilsOptionError("optimize must be 0, 1, or 2")
-
-    def run(self):
-        # XXX copy_file by default preserves atime and mtime.  IMHO this is
-        # the right thing to do, but perhaps it should be an option -- in
-        # particular, a site administrator might want installed files to
-        # reflect the time of installation rather than the last
-        # modification time before the installed release.
-
-        # XXX copy_file by default preserves mode, which appears to be the
-        # wrong thing to do: if a file is read-only in the working
-        # directory, we want it to be installed read/write so that the next
-        # installation of the same module distribution can overwrite it
-        # without problems.  (This might be a Unix-specific issue.)  Thus
-        # we turn off 'preserve_mode' when copying to the build directory,
-        # since the build directory is supposed to be exactly what the
-        # installation will look like (ie. we preserve mode when
-        # installing).
-
-        # Two options control which modules will be installed: 'packages'
-        # and 'py_modules'.  The former lets us work with whole packages, not
-        # specifying individual modules at all; the latter is for
-        # specifying modules one-at-a-time.
-
-        if self.py_modules:
-            self.build_modules()
-        if self.packages:
-            self.build_packages()
-            self.build_package_data()
-
-        self.byte_compile(self.get_outputs(include_bytecode=0))
-
-    def get_data_files(self):
-        """Generate list of '(package,src_dir,build_dir,filenames)' tuples"""
-        data = []
-        if not self.packages:
-            return data
-        for package in self.packages:
-            # Locate package source directory
-            src_dir = self.get_package_dir(package)
-
-            # Compute package build directory
-            build_dir = os.path.join(*([self.build_lib] + package.split('.')))
-
-            # Length of path to strip from found files
-            plen = 0
-            if src_dir:
-                plen = len(src_dir)+1
-
-            # Strip directory from globbed filenames
-            filenames = [
-                file[plen:] for file in self.find_data_files(package, src_dir)
-                ]
-            data.append((package, src_dir, build_dir, filenames))
-        return data
-
-    def find_data_files(self, package, src_dir):
-        """Return filenames for package's data files in 'src_dir'"""
-        globs = (self.package_data.get('', [])
-                 + self.package_data.get(package, []))
-        files = []
-        for pattern in globs:
-            # Each pattern has to be converted to a platform-specific path
-            filelist = glob(os.path.join(src_dir, convert_path(pattern)))
-            # Files that match more than one pattern are only added once
-            files.extend([fn for fn in filelist if fn not in files])
-        return files
-
-    def build_package_data(self):
-        """Copy data files into build directory"""
-        for package, src_dir, build_dir, filenames in self.data_files:
-            for filename in filenames:
-                target = os.path.join(build_dir, filename)
-                self.mkpath(os.path.dirname(target))
-                self.copy_file(os.path.join(src_dir, filename), target,
-                               preserve_mode=False)
-
-    def get_package_dir(self, package):
-        """Return the directory, relative to the top of the source
-           distribution, where package 'package' should be found
-           (at least according to the 'package_dir' option, if any)."""
-
-        path = package.split('.')
-
-        if not self.package_dir:
-            if path:
-                return os.path.join(*path)
-            else:
-                return ''
-        else:
-            tail = []
-            while path:
-                try:
-                    pdir = self.package_dir['.'.join(path)]
-                except KeyError:
-                    tail.insert(0, path[-1])
-                    del path[-1]
-                else:
-                    tail.insert(0, pdir)
-                    return os.path.join(*tail)
-            else:
-                # Oops, got all the way through 'path' without finding a
-                # match in package_dir.  If package_dir defines a directory
-                # for the root (nameless) package, then fallback on it;
-                # otherwise, we might as well have not consulted
-                # package_dir at all, as we just use the directory implied
-                # by 'tail' (which should be the same as the original value
-                # of 'path' at this point).
-                pdir = self.package_dir.get('')
-                if pdir is not None:
-                    tail.insert(0, pdir)
-
-                if tail:
-                    return os.path.join(*tail)
-                else:
-                    return ''
-
-    def check_package(self, package, package_dir):
-        # Empty dir name means current directory, which we can probably
-        # assume exists.  Also, os.path.exists and isdir don't know about
-        # my "empty string means current dir" convention, so we have to
-        # circumvent them.
-        if package_dir != "":
-            if not os.path.exists(package_dir):
-                raise DistutilsFileError(
-                      "package directory '%s' does not exist" % package_dir)
-            if not os.path.isdir(package_dir):
-                raise DistutilsFileError(
-                       "supposed package directory '%s' exists, "
-                       "but is not a directory" % package_dir)
-
-        # Require __init__.py for all but the "root package"
-        if package:
-            init_py = os.path.join(package_dir, "__init__.py")
-            if os.path.isfile(init_py):
-                return init_py
-            else:
-                log.warn(("package init file '%s' not found " +
-                          "(or not a regular file)"), init_py)
-
-        # Either not in a package at all (__init__.py not expected), or
-        # __init__.py doesn't exist -- so don't return the filename.
-        return None
-
-    def check_module(self, module, module_file):
-        if not os.path.isfile(module_file):
-            log.warn("file %s (for module %s) not found", module_file, module)
-            return False
-        else:
-            return True
-
-    def find_package_modules(self, package, package_dir):
-        self.check_package(package, package_dir)
-        module_files = glob(os.path.join(package_dir, "*.py"))
-        modules = []
-        setup_script = os.path.abspath(self.distribution.script_name)
-
-        for f in module_files:
-            abs_f = os.path.abspath(f)
-            if abs_f != setup_script:
-                module = os.path.splitext(os.path.basename(f))[0]
-                modules.append((package, module, f))
-            else:
-                self.debug_print("excluding %s" % setup_script)
-        return modules
-
-    def find_modules(self):
-        """Finds individually-specified Python modules, ie. those listed by
-        module name in 'self.py_modules'.  Returns a list of tuples (package,
-        module_base, filename): 'package' is a tuple of the path through
-        package-space to the module; 'module_base' is the bare (no
-        packages, no dots) module name, and 'filename' is the path to the
-        ".py" file (relative to the distribution root) that implements the
-        module.
-        """
-        # Map package names to tuples of useful info about the package:
-        #    (package_dir, checked)
-        # package_dir - the directory where we'll find source files for
-        #   this package
-        # checked - true if we have checked that the package directory
-        #   is valid (exists, contains __init__.py, ... ?)
-        packages = {}
-
-        # List of (package, module, filename) tuples to return
-        modules = []
-
-        # We treat modules-in-packages almost the same as toplevel modules,
-        # just the "package" for a toplevel is empty (either an empty
-        # string or empty list, depending on context).  Differences:
-        #   - don't check for __init__.py in directory for empty package
-        for module in self.py_modules:
-            path = module.split('.')
-            package = '.'.join(path[0:-1])
-            module_base = path[-1]
-
-            try:
-                (package_dir, checked) = packages[package]
-            except KeyError:
-                package_dir = self.get_package_dir(package)
-                checked = 0
-
-            if not checked:
-                init_py = self.check_package(package, package_dir)
-                packages[package] = (package_dir, 1)
-                if init_py:
-                    modules.append((package, "__init__", init_py))
-
-            # XXX perhaps we should also check for just .pyc files
-            # (so greedy closed-source bastards can distribute Python
-            # modules too)
-            module_file = os.path.join(package_dir, module_base + ".py")
-            if not self.check_module(module, module_file):
-                continue
-
-            modules.append((package, module_base, module_file))
-
-        return modules
-
-    def find_all_modules(self):
-        """Compute the list of all modules that will be built, whether
-        they are specified one-module-at-a-time ('self.py_modules') or
-        by whole packages ('self.packages').  Return a list of tuples
-        (package, module, module_file), just like 'find_modules()' and
-        'find_package_modules()' do."""
-        modules = []
-        if self.py_modules:
-            modules.extend(self.find_modules())
-        if self.packages:
-            for package in self.packages:
-                package_dir = self.get_package_dir(package)
-                m = self.find_package_modules(package, package_dir)
-                modules.extend(m)
-        return modules
-
-    def get_source_files(self):
-        return [module[-1] for module in self.find_all_modules()]
-
-    def get_module_outfile(self, build_dir, package, module):
-        outfile_path = [build_dir] + list(package) + [module + ".py"]
-        return os.path.join(*outfile_path)
-
-    def get_outputs(self, include_bytecode=1):
-        modules = self.find_all_modules()
-        outputs = []
-        for (package, module, module_file) in modules:
-            package = package.split('.')
-            filename = self.get_module_outfile(self.build_lib, package, module)
-            outputs.append(filename)
-            if include_bytecode:
-                if self.compile:
-                    outputs.append(filename + "c")
-                if self.optimize > 0:
-                    outputs.append(filename + "o")
-
-        outputs += [
-            os.path.join(build_dir, filename)
-            for package, src_dir, build_dir, filenames in self.data_files
-            for filename in filenames
-            ]
-
-        return outputs
-
-    def build_module(self, module, module_file, package):
-        if isinstance(package, str):
-            package = package.split('.')
-        elif not isinstance(package, (list, tuple)):
-            raise TypeError(
-                  "'package' must be a string (dot-separated), list, or tuple")
-
-        # Now put the module source file into the "build" area -- this is
-        # easy, we just copy it somewhere under self.build_lib (the build
-        # directory for Python source).
-        outfile = self.get_module_outfile(self.build_lib, package, module)
-        dir = os.path.dirname(outfile)
-        self.mkpath(dir)
-        return self.copy_file(module_file, outfile, preserve_mode=0)
-
-    def build_modules(self):
-        modules = self.find_modules()
-        for (package, module, module_file) in modules:
-
-            # Now "build" the module -- ie. copy the source file to
-            # self.build_lib (the build directory for Python source).
-            # (Actually, it gets copied to the directory for this package
-            # under self.build_lib.)
-            self.build_module(module, module_file, package)
-
-    def build_packages(self):
-        for package in self.packages:
-
-            # Get list of (package, module, module_file) tuples based on
-            # scanning the package directory.  'package' is only included
-            # in the tuple so that 'find_modules()' and
-            # 'find_package_tuples()' have a consistent interface; it's
-            # ignored here (apart from a sanity check).  Also, 'module' is
-            # the *unqualified* module name (ie. no dots, no package -- we
-            # already know its package!), and 'module_file' is the path to
-            # the .py file, relative to the current directory
-            # (ie. including 'package_dir').
-            package_dir = self.get_package_dir(package)
-            modules = self.find_package_modules(package, package_dir)
-
-            # Now loop over the modules we found, "building" each one (just
-            # copy it to self.build_lib).
-            for (package_, module, module_file) in modules:
-                assert package == package_
-                self.build_module(module, module_file, package)
-
-    def byte_compile(self, files):
-        if sys.dont_write_bytecode:
-            self.warn('byte-compiling is disabled, skipping.')
-            return
-
-        from distutils.util import byte_compile
-        prefix = self.build_lib
-        if prefix[-1] != os.sep:
-            prefix = prefix + os.sep
-
-        # XXX this code is essentially the same as the 'byte_compile()
-        # method of the "install_lib" command, except for the determination
-        # of the 'prefix' string.  Hmmm.
-
-        if self.compile:
-            byte_compile(files, optimize=0,
-                         force=self.force, prefix=prefix, dry_run=self.dry_run)
-        if self.optimize > 0:
-            byte_compile(files, optimize=self.optimize,
-                         force=self.force, prefix=prefix, dry_run=self.dry_run)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_scripts.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_scripts.py
deleted file mode 100644
index 217808f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/build_scripts.py
+++ /dev/null
@@ -1,131 +0,0 @@
-"""distutils.command.build_scripts
-
-Implements the Distutils 'build_scripts' command."""
-
-__revision__ = "$Id$"
-
-import os, re
-from stat import ST_MODE
-from distutils.core import Command
-from distutils.dep_util import newer
-from distutils.util import convert_path
-from distutils import log
-
-# check if Python is called on the first line with this expression
-first_line_re = re.compile('^#!.*python[0-9.]*([ \t].*)?$')
-
-class build_scripts (Command):
-
-    description = "\"build\" scripts (copy and fixup #! line)"
-
-    user_options = [
-        ('build-dir=', 'd', "directory to \"build\" (copy) to"),
-        ('force', 'f', "forcibly build everything (ignore file timestamps"),
-        ('executable=', 'e', "specify final destination interpreter path"),
-        ]
-
-    boolean_options = ['force']
-
-
-    def initialize_options (self):
-        self.build_dir = None
-        self.scripts = None
-        self.force = None
-        self.executable = None
-        self.outfiles = None
-
-    def finalize_options (self):
-        self.set_undefined_options('build',
-                                   ('build_scripts', 'build_dir'),
-                                   ('force', 'force'),
-                                   ('executable', 'executable'))
-        self.scripts = self.distribution.scripts
-
-    def get_source_files(self):
-        return self.scripts
-
-    def run (self):
-        if not self.scripts:
-            return
-        self.copy_scripts()
-
-
-    def copy_scripts (self):
-        """Copy each script listed in 'self.scripts'; if it's marked as a
-        Python script in the Unix way (first line matches 'first_line_re',
-        ie. starts with "\#!" and contains "python"), then adjust the first
-        line to refer to the current Python interpreter as we copy.
-        """
-        _sysconfig = __import__('sysconfig')
-        self.mkpath(self.build_dir)
-        outfiles = []
-        for script in self.scripts:
-            adjust = 0
-            script = convert_path(script)
-            outfile = os.path.join(self.build_dir, os.path.basename(script))
-            outfiles.append(outfile)
-
-            if not self.force and not newer(script, outfile):
-                log.debug("not copying %s (up-to-date)", script)
-                continue
-
-            # Always open the file, but ignore failures in dry-run mode --
-            # that way, we'll get accurate feedback if we can read the
-            # script.
-            try:
-                f = open(script, "r")
-            except IOError:
-                if not self.dry_run:
-                    raise
-                f = None
-            else:
-                first_line = f.readline()
-                if not first_line:
-                    self.warn("%s is an empty file (skipping)" % script)
-                    continue
-
-                match = first_line_re.match(first_line)
-                if match:
-                    adjust = 1
-                    post_interp = match.group(1) or ''
-
-            if adjust:
-                log.info("copying and adjusting %s -> %s", script,
-                         self.build_dir)
-                if not self.dry_run:
-                    outf = open(outfile, "w")
-                    if not _sysconfig.is_python_build():
-                        outf.write("#!%s%s\n" %
-                                   (self.executable,
-                                    post_interp))
-                    else:
-                        outf.write("#!%s%s\n" %
-                                   (os.path.join(
-                            _sysconfig.get_config_var("BINDIR"),
-                           "python%s%s" % (_sysconfig.get_config_var("VERSION"),
-                                           _sysconfig.get_config_var("EXE"))),
-                                    post_interp))
-                    outf.writelines(f.readlines())
-                    outf.close()
-                if f:
-                    f.close()
-            else:
-                if f:
-                    f.close()
-                self.copy_file(script, outfile)
-
-        if os.name == 'posix':
-            for file in outfiles:
-                if self.dry_run:
-                    log.info("changing mode of %s", file)
-                else:
-                    oldmode = os.stat(file)[ST_MODE] & 07777
-                    newmode = (oldmode | 0555) & 07777
-                    if newmode != oldmode:
-                        log.info("changing mode of %s from %o to %o",
-                                 file, oldmode, newmode)
-                        os.chmod(file, newmode)
-
-    # copy_scripts ()
-
-# class build_scripts
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/check.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/check.py
deleted file mode 100644
index bfef779..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/check.py
+++ /dev/null
@@ -1,143 +0,0 @@
-"""distutils.command.check
-
-Implements the Distutils 'check' command.
-"""
-__revision__ = "$Id$"
-
-from distutils.core import Command
-from distutils.errors import DistutilsSetupError
-
-try:
-    # docutils is installed
-    from docutils.utils import Reporter
-    from docutils.parsers.rst import Parser
-    from docutils import frontend
-    from docutils import nodes
-    from StringIO import StringIO
-
-    class SilentReporter(Reporter):
-
-        def __init__(self, source, report_level, halt_level, stream=None,
-                     debug=0, encoding='ascii', error_handler='replace'):
-            self.messages = []
-            Reporter.__init__(self, source, report_level, halt_level, stream,
-                              debug, encoding, error_handler)
-
-        def system_message(self, level, message, *children, **kwargs):
-            self.messages.append((level, message, children, kwargs))
-
-    HAS_DOCUTILS = True
-except ImportError:
-    # docutils is not installed
-    HAS_DOCUTILS = False
-
-class check(Command):
-    """This command checks the meta-data of the package.
-    """
-    description = ("perform some checks on the package")
-    user_options = [('metadata', 'm', 'Verify meta-data'),
-                    ('restructuredtext', 'r',
-                     ('Checks if long string meta-data syntax '
-                      'are reStructuredText-compliant')),
-                    ('strict', 's',
-                     'Will exit with an error if a check fails')]
-
-    boolean_options = ['metadata', 'restructuredtext', 'strict']
-
-    def initialize_options(self):
-        """Sets default values for options."""
-        self.restructuredtext = 0
-        self.metadata = 1
-        self.strict = 0
-        self._warnings = 0
-
-    def finalize_options(self):
-        pass
-
-    def warn(self, msg):
-        """Counts the number of warnings that occurs."""
-        self._warnings += 1
-        return Command.warn(self, msg)
-
-    def run(self):
-        """Runs the command."""
-        # perform the various tests
-        if self.metadata:
-            self.check_metadata()
-        if self.restructuredtext:
-            if HAS_DOCUTILS:
-                self.check_restructuredtext()
-            elif self.strict:
-                raise DistutilsSetupError('The docutils package is needed.')
-
-        # let's raise an error in strict mode, if we have at least
-        # one warning
-        if self.strict and self._warnings > 0:
-            raise DistutilsSetupError('Please correct your package.')
-
-    def check_metadata(self):
-        """Ensures that all required elements of meta-data are supplied.
-
-        name, version, URL, (author and author_email) or
-        (maintainer and maintainer_email)).
-
-        Warns if any are missing.
-        """
-        metadata = self.distribution.metadata
-
-        missing = []
-        for attr in ('name', 'version', 'url'):
-            if not (hasattr(metadata, attr) and getattr(metadata, attr)):
-                missing.append(attr)
-
-        if missing:
-            self.warn("missing required meta-data: %s"  % ', '.join(missing))
-        if metadata.author:
-            if not metadata.author_email:
-                self.warn("missing meta-data: if 'author' supplied, " +
-                          "'author_email' must be supplied too")
-        elif metadata.maintainer:
-            if not metadata.maintainer_email:
-                self.warn("missing meta-data: if 'maintainer' supplied, " +
-                          "'maintainer_email' must be supplied too")
-        else:
-            self.warn("missing meta-data: either (author and author_email) " +
-                      "or (maintainer and maintainer_email) " +
-                      "must be supplied")
-
-    def check_restructuredtext(self):
-        """Checks if the long string fields are reST-compliant."""
-        data = self.distribution.get_long_description()
-        for warning in self._check_rst_data(data):
-            line = warning[-1].get('line')
-            if line is None:
-                warning = warning[1]
-            else:
-                warning = '%s (line %s)' % (warning[1], line)
-            self.warn(warning)
-
-    def _check_rst_data(self, data):
-        """Returns warnings when the provided data doesn't compile."""
-        source_path = StringIO()
-        parser = Parser()
-        settings = frontend.OptionParser().get_default_values()
-        settings.tab_width = 4
-        settings.pep_references = None
-        settings.rfc_references = None
-        reporter = SilentReporter(source_path,
-                          settings.report_level,
-                          settings.halt_level,
-                          stream=settings.warning_stream,
-                          debug=settings.debug,
-                          encoding=settings.error_encoding,
-                          error_handler=settings.error_encoding_error_handler)
-
-        document = nodes.document(settings, reporter, source=source_path)
-        document.note_source(source_path, -1)
-        try:
-            parser.parse(data, document)
-        except AttributeError:
-            reporter.messages.append((-1, 'Could not finish the parsing.',
-                                      '', {}))
-
-        return reporter.messages
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/clean.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/clean.py
deleted file mode 100644
index 14d503d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/clean.py
+++ /dev/null
@@ -1,80 +0,0 @@
-"""distutils.command.clean
-
-Implements the Distutils 'clean' command."""
-
-# contributed by Bastian Kleineidam <calvin@cs.uni-sb.de>, added 2000-03-18
-
-__revision__ = "$Id$"
-
-import os
-from distutils.core import Command
-from distutils.dir_util import remove_tree
-from distutils import log
-
-class clean(Command):
-
-    description = "clean up temporary files from 'build' command"
-    user_options = [
-        ('build-base=', 'b',
-         "base build directory (default: 'build.build-base')"),
-        ('build-lib=', None,
-         "build directory for all modules (default: 'build.build-lib')"),
-        ('build-temp=', 't',
-         "temporary build directory (default: 'build.build-temp')"),
-        ('build-scripts=', None,
-         "build directory for scripts (default: 'build.build-scripts')"),
-        ('bdist-base=', None,
-         "temporary directory for built distributions"),
-        ('all', 'a',
-         "remove all build output, not just temporary by-products")
-    ]
-
-    boolean_options = ['all']
-
-    def initialize_options(self):
-        self.build_base = None
-        self.build_lib = None
-        self.build_temp = None
-        self.build_scripts = None
-        self.bdist_base = None
-        self.all = None
-
-    def finalize_options(self):
-        self.set_undefined_options('build',
-                                   ('build_base', 'build_base'),
-                                   ('build_lib', 'build_lib'),
-                                   ('build_scripts', 'build_scripts'),
-                                   ('build_temp', 'build_temp'))
-        self.set_undefined_options('bdist',
-                                   ('bdist_base', 'bdist_base'))
-
-    def run(self):
-        # remove the build/temp.<plat> directory (unless it's already
-        # gone)
-        if os.path.exists(self.build_temp):
-            remove_tree(self.build_temp, dry_run=self.dry_run)
-        else:
-            log.debug("'%s' does not exist -- can't clean it",
-                      self.build_temp)
-
-        if self.all:
-            # remove build directories
-            for directory in (self.build_lib,
-                              self.bdist_base,
-                              self.build_scripts):
-                if os.path.exists(directory):
-                    remove_tree(directory, dry_run=self.dry_run)
-                else:
-                    log.warn("'%s' does not exist -- can't clean it",
-                             directory)
-
-        # just for the heck of it, try to remove the base build directory:
-        # we might have emptied it right now, but if not we don't care
-        if not self.dry_run:
-            try:
-                os.rmdir(self.build_base)
-                log.info("removing '%s'", self.build_base)
-            except OSError:
-                pass
-
-# class clean
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/command_template b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/command_template
deleted file mode 100644
index e7346e9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/command_template
+++ /dev/null
@@ -1,45 +0,0 @@
-"""distutils.command.x
-
-Implements the Distutils 'x' command.
-"""
-
-# created 2000/mm/dd, John Doe
-
-__revision__ = "$Id$"
-
-from distutils.core import Command
-
-
-class x (Command):
-
-    # Brief (40-50 characters) description of the command
-    description = ""
-
-    # List of option tuples: long name, short name (None if no short
-    # name), and help string.
-    user_options = [('', '',
-                     ""),
-                   ]
-
-
-    def initialize_options (self):
-        self. = None
-        self. = None
-        self. = None
-
-    # initialize_options()
-
-
-    def finalize_options (self):
-        if self.x is None:
-            self.x = 
-
-    # finalize_options()
-
-
-    def run (self):
-
-
-    # run()
-
-# class x
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/config.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/config.py
deleted file mode 100644
index 2d134b4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/config.py
+++ /dev/null
@@ -1,357 +0,0 @@
-"""distutils.command.config
-
-Implements the Distutils 'config' command, a (mostly) empty command class
-that exists mainly to be sub-classed by specific module distributions and
-applications.  The idea is that while every "config" command is different,
-at least they're all named the same, and users always see "config" in the
-list of standard commands.  Also, this is a good place to put common
-configure-like tasks: "try to compile this C code", or "figure out where
-this header file lives".
-"""
-
-__revision__ = "$Id$"
-
-import os
-import re
-
-from distutils.core import Command
-from distutils.errors import DistutilsExecError
-from distutils.ccompiler import customize_compiler
-from distutils import log
-
-LANG_EXT = {'c': '.c', 'c++': '.cxx'}
-
-class config(Command):
-
-    description = "prepare to build"
-
-    user_options = [
-        ('compiler=', None,
-         "specify the compiler type"),
-        ('cc=', None,
-         "specify the compiler executable"),
-        ('include-dirs=', 'I',
-         "list of directories to search for header files"),
-        ('define=', 'D',
-         "C preprocessor macros to define"),
-        ('undef=', 'U',
-         "C preprocessor macros to undefine"),
-        ('libraries=', 'l',
-         "external C libraries to link with"),
-        ('library-dirs=', 'L',
-         "directories to search for external C libraries"),
-
-        ('noisy', None,
-         "show every action (compile, link, run, ...) taken"),
-        ('dump-source', None,
-         "dump generated source files before attempting to compile them"),
-        ]
-
-
-    # The three standard command methods: since the "config" command
-    # does nothing by default, these are empty.
-
-    def initialize_options(self):
-        self.compiler = None
-        self.cc = None
-        self.include_dirs = None
-        self.libraries = None
-        self.library_dirs = None
-
-        # maximal output for now
-        self.noisy = 1
-        self.dump_source = 1
-
-        # list of temporary files generated along-the-way that we have
-        # to clean at some point
-        self.temp_files = []
-
-    def finalize_options(self):
-        if self.include_dirs is None:
-            self.include_dirs = self.distribution.include_dirs or []
-        elif isinstance(self.include_dirs, str):
-            self.include_dirs = self.include_dirs.split(os.pathsep)
-
-        if self.libraries is None:
-            self.libraries = []
-        elif isinstance(self.libraries, str):
-            self.libraries = [self.libraries]
-
-        if self.library_dirs is None:
-            self.library_dirs = []
-        elif isinstance(self.library_dirs, str):
-            self.library_dirs = self.library_dirs.split(os.pathsep)
-
-    def run(self):
-        pass
-
-
-    # Utility methods for actual "config" commands.  The interfaces are
-    # loosely based on Autoconf macros of similar names.  Sub-classes
-    # may use these freely.
-
-    def _check_compiler(self):
-        """Check that 'self.compiler' really is a CCompiler object;
-        if not, make it one.
-        """
-        # We do this late, and only on-demand, because this is an expensive
-        # import.
-        from distutils.ccompiler import CCompiler, new_compiler
-        if not isinstance(self.compiler, CCompiler):
-            self.compiler = new_compiler(compiler=self.compiler,
-                                         dry_run=self.dry_run, force=1)
-            customize_compiler(self.compiler)
-            if self.include_dirs:
-                self.compiler.set_include_dirs(self.include_dirs)
-            if self.libraries:
-                self.compiler.set_libraries(self.libraries)
-            if self.library_dirs:
-                self.compiler.set_library_dirs(self.library_dirs)
-
-
-    def _gen_temp_sourcefile(self, body, headers, lang):
-        filename = "_configtest" + LANG_EXT[lang]
-        file = open(filename, "w")
-        if headers:
-            for header in headers:
-                file.write("#include <%s>\n" % header)
-            file.write("\n")
-        file.write(body)
-        if body[-1] != "\n":
-            file.write("\n")
-        file.close()
-        return filename
-
-    def _preprocess(self, body, headers, include_dirs, lang):
-        src = self._gen_temp_sourcefile(body, headers, lang)
-        out = "_configtest.i"
-        self.temp_files.extend([src, out])
-        self.compiler.preprocess(src, out, include_dirs=include_dirs)
-        return (src, out)
-
-    def _compile(self, body, headers, include_dirs, lang):
-        src = self._gen_temp_sourcefile(body, headers, lang)
-        if self.dump_source:
-            dump_file(src, "compiling '%s':" % src)
-        (obj,) = self.compiler.object_filenames([src])
-        self.temp_files.extend([src, obj])
-        self.compiler.compile([src], include_dirs=include_dirs)
-        return (src, obj)
-
-    def _link(self, body, headers, include_dirs, libraries, library_dirs,
-              lang):
-        (src, obj) = self._compile(body, headers, include_dirs, lang)
-        prog = os.path.splitext(os.path.basename(src))[0]
-        self.compiler.link_executable([obj], prog,
-                                      libraries=libraries,
-                                      library_dirs=library_dirs,
-                                      target_lang=lang)
-
-        if self.compiler.exe_extension is not None:
-            prog = prog + self.compiler.exe_extension
-        self.temp_files.append(prog)
-
-        return (src, obj, prog)
-
-    def _clean(self, *filenames):
-        if not filenames:
-            filenames = self.temp_files
-            self.temp_files = []
-        log.info("removing: %s", ' '.join(filenames))
-        for filename in filenames:
-            try:
-                os.remove(filename)
-            except OSError:
-                pass
-
-
-    # XXX these ignore the dry-run flag: what to do, what to do? even if
-    # you want a dry-run build, you still need some sort of configuration
-    # info.  My inclination is to make it up to the real config command to
-    # consult 'dry_run', and assume a default (minimal) configuration if
-    # true.  The problem with trying to do it here is that you'd have to
-    # return either true or false from all the 'try' methods, neither of
-    # which is correct.
-
-    # XXX need access to the header search path and maybe default macros.
-
-    def try_cpp(self, body=None, headers=None, include_dirs=None, lang="c"):
-        """Construct a source file from 'body' (a string containing lines
-        of C/C++ code) and 'headers' (a list of header files to include)
-        and run it through the preprocessor.  Return true if the
-        preprocessor succeeded, false if there were any errors.
-        ('body' probably isn't of much use, but what the heck.)
-        """
-        from distutils.ccompiler import CompileError
-        self._check_compiler()
-        ok = 1
-        try:
-            self._preprocess(body, headers, include_dirs, lang)
-        except CompileError:
-            ok = 0
-
-        self._clean()
-        return ok
-
-    def search_cpp(self, pattern, body=None, headers=None, include_dirs=None,
-                   lang="c"):
-        """Construct a source file (just like 'try_cpp()'), run it through
-        the preprocessor, and return true if any line of the output matches
-        'pattern'.  'pattern' should either be a compiled regex object or a
-        string containing a regex.  If both 'body' and 'headers' are None,
-        preprocesses an empty file -- which can be useful to determine the
-        symbols the preprocessor and compiler set by default.
-        """
-        self._check_compiler()
-        src, out = self._preprocess(body, headers, include_dirs, lang)
-
-        if isinstance(pattern, str):
-            pattern = re.compile(pattern)
-
-        file = open(out)
-        match = 0
-        while 1:
-            line = file.readline()
-            if line == '':
-                break
-            if pattern.search(line):
-                match = 1
-                break
-
-        file.close()
-        self._clean()
-        return match
-
-    def try_compile(self, body, headers=None, include_dirs=None, lang="c"):
-        """Try to compile a source file built from 'body' and 'headers'.
-        Return true on success, false otherwise.
-        """
-        from distutils.ccompiler import CompileError
-        self._check_compiler()
-        try:
-            self._compile(body, headers, include_dirs, lang)
-            ok = 1
-        except CompileError:
-            ok = 0
-
-        log.info(ok and "success!" or "failure.")
-        self._clean()
-        return ok
-
-    def try_link(self, body, headers=None, include_dirs=None, libraries=None,
-                 library_dirs=None, lang="c"):
-        """Try to compile and link a source file, built from 'body' and
-        'headers', to executable form.  Return true on success, false
-        otherwise.
-        """
-        from distutils.ccompiler import CompileError, LinkError
-        self._check_compiler()
-        try:
-            self._link(body, headers, include_dirs,
-                       libraries, library_dirs, lang)
-            ok = 1
-        except (CompileError, LinkError):
-            ok = 0
-
-        log.info(ok and "success!" or "failure.")
-        self._clean()
-        return ok
-
-    def try_run(self, body, headers=None, include_dirs=None, libraries=None,
-                library_dirs=None, lang="c"):
-        """Try to compile, link to an executable, and run a program
-        built from 'body' and 'headers'.  Return true on success, false
-        otherwise.
-        """
-        from distutils.ccompiler import CompileError, LinkError
-        self._check_compiler()
-        try:
-            src, obj, exe = self._link(body, headers, include_dirs,
-                                       libraries, library_dirs, lang)
-            self.spawn([exe])
-            ok = 1
-        except (CompileError, LinkError, DistutilsExecError):
-            ok = 0
-
-        log.info(ok and "success!" or "failure.")
-        self._clean()
-        return ok
-
-
-    # -- High-level methods --------------------------------------------
-    # (these are the ones that are actually likely to be useful
-    # when implementing a real-world config command!)
-
-    def check_func(self, func, headers=None, include_dirs=None,
-                   libraries=None, library_dirs=None, decl=0, call=0):
-
-        """Determine if function 'func' is available by constructing a
-        source file that refers to 'func', and compiles and links it.
-        If everything succeeds, returns true; otherwise returns false.
-
-        The constructed source file starts out by including the header
-        files listed in 'headers'.  If 'decl' is true, it then declares
-        'func' (as "int func()"); you probably shouldn't supply 'headers'
-        and set 'decl' true in the same call, or you might get errors about
-        a conflicting declarations for 'func'.  Finally, the constructed
-        'main()' function either references 'func' or (if 'call' is true)
-        calls it.  'libraries' and 'library_dirs' are used when
-        linking.
-        """
-
-        self._check_compiler()
-        body = []
-        if decl:
-            body.append("int %s ();" % func)
-        body.append("int main () {")
-        if call:
-            body.append("  %s();" % func)
-        else:
-            body.append("  %s;" % func)
-        body.append("}")
-        body = "\n".join(body) + "\n"
-
-        return self.try_link(body, headers, include_dirs,
-                             libraries, library_dirs)
-
-    # check_func ()
-
-    def check_lib(self, library, library_dirs=None, headers=None,
-                  include_dirs=None, other_libraries=[]):
-        """Determine if 'library' is available to be linked against,
-        without actually checking that any particular symbols are provided
-        by it.  'headers' will be used in constructing the source file to
-        be compiled, but the only effect of this is to check if all the
-        header files listed are available.  Any libraries listed in
-        'other_libraries' will be included in the link, in case 'library'
-        has symbols that depend on other libraries.
-        """
-        self._check_compiler()
-        return self.try_link("int main (void) { }",
-                             headers, include_dirs,
-                             [library]+other_libraries, library_dirs)
-
-    def check_header(self, header, include_dirs=None, library_dirs=None,
-                     lang="c"):
-        """Determine if the system header file named by 'header_file'
-        exists and can be found by the preprocessor; return true if so,
-        false otherwise.
-        """
-        return self.try_cpp(body="/* No body */", headers=[header],
-                            include_dirs=include_dirs)
-
-
-def dump_file(filename, head=None):
-    """Dumps a file content into log.info.
-
-    If head is not None, will be dumped before the file content.
-    """
-    if head is None:
-        log.info('%s' % filename)
-    else:
-        log.info(head)
-    file = open(filename)
-    try:
-        log.info(file.read())
-    finally:
-        file.close()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install.py
deleted file mode 100644
index 0f8eb80..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install.py
+++ /dev/null
@@ -1,672 +0,0 @@
-"""distutils.command.install
-
-Implements the Distutils 'install' command."""
-
-from distutils import log
-
-# This module should be kept compatible with Python 2.1.
-
-__revision__ = "$Id$"
-
-import sys, os, string
-from types import *
-from distutils.core import Command
-from distutils.debug import DEBUG
-from distutils.sysconfig import get_config_vars
-from distutils.errors import DistutilsPlatformError
-from distutils.file_util import write_file
-from distutils.util import convert_path, subst_vars, change_root
-from distutils.util import get_platform
-from distutils.errors import DistutilsOptionError
-from site import USER_BASE
-from site import USER_SITE
-
-
-if sys.version < "2.2":
-    WINDOWS_SCHEME = {
-        'purelib': '$base',
-        'platlib': '$base',
-        'headers': '$base/Include/$dist_name',
-        'scripts': '$base/Scripts',
-        'data'   : '$base',
-    }
-else:
-    WINDOWS_SCHEME = {
-        'purelib': '$base/Lib/site-packages',
-        'platlib': '$base/Lib/site-packages',
-        'headers': '$base/Include/$dist_name',
-        'scripts': '$base/Scripts',
-        'data'   : '$base',
-    }
-
-INSTALL_SCHEMES = {
-    'unix_prefix': {
-        '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',
-        },
-    'unix_home': {
-        'purelib': '$base/lib/python',
-        'platlib': '$base/lib/python',
-        'headers': '$base/include/python/$dist_name',
-        'scripts': '$base/bin',
-        'data'   : '$base',
-        },
-    'unix_user': {
-        'purelib': '$usersite',
-        'platlib': '$usersite',
-        'headers': '$userbase/include/python$py_version_short/$dist_name',
-        'scripts': '$userbase/bin',
-        'data'   : '$userbase',
-        },
-    'nt': WINDOWS_SCHEME,
-    'nt_user': {
-        'purelib': '$usersite',
-        'platlib': '$usersite',
-        'headers': '$userbase/Python$py_version_nodot/Include/$dist_name',
-        'scripts': '$userbase/Scripts',
-        'data'   : '$userbase',
-        },
-    'os2': {
-        'purelib': '$base/Lib/site-packages',
-        'platlib': '$base/Lib/site-packages',
-        'headers': '$base/Include/$dist_name',
-        'scripts': '$base/Scripts',
-        'data'   : '$base',
-        },
-    'os2_home': {
-        'purelib': '$usersite',
-        'platlib': '$usersite',
-        'headers': '$userbase/include/python$py_version_short/$dist_name',
-        'scripts': '$userbase/bin',
-        'data'   : '$userbase',
-        },
-    }
-
-# The keys to an installation scheme; if any new types of files are to be
-# installed, be sure to add an entry to every installation scheme above,
-# and to SCHEME_KEYS here.
-SCHEME_KEYS = ('purelib', 'platlib', 'headers', 'scripts', 'data')
-
-
-class install (Command):
-
-    description = "install everything from build directory"
-
-    user_options = [
-        # Select installation scheme and set base director(y|ies)
-        ('prefix=', None,
-         "installation prefix"),
-        ('exec-prefix=', None,
-         "(Unix only) prefix for platform-specific files"),
-        ('home=', None,
-         "(Unix only) home directory to install under"),
-        ('user', None,
-         "install in user site-package '%s'" % USER_SITE),
-
-        # Or, just set the base director(y|ies)
-        ('install-base=', None,
-         "base installation directory (instead of --prefix or --home)"),
-        ('install-platbase=', None,
-         "base installation directory for platform-specific files " +
-         "(instead of --exec-prefix or --home)"),
-        ('root=', None,
-         "install everything relative to this alternate root directory"),
-
-        # Or, explicitly set the installation scheme
-        ('install-purelib=', None,
-         "installation directory for pure Python module distributions"),
-        ('install-platlib=', None,
-         "installation directory for non-pure module distributions"),
-        ('install-lib=', None,
-         "installation directory for all module distributions " +
-         "(overrides --install-purelib and --install-platlib)"),
-
-        ('install-headers=', None,
-         "installation directory for C/C++ headers"),
-        ('install-scripts=', None,
-         "installation directory for Python scripts"),
-        ('install-data=', None,
-         "installation directory for data files"),
-
-        # Byte-compilation options -- see install_lib.py for details, as
-        # these are duplicated from there (but only install_lib does
-        # anything with them).
-        ('compile', 'c', "compile .py to .pyc [default]"),
-        ('no-compile', None, "don't compile .py files"),
-        ('optimize=', 'O',
-         "also compile with optimization: -O1 for \"python -O\", "
-         "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"),
-
-        # Miscellaneous control options
-        ('force', 'f',
-         "force installation (overwrite any existing files)"),
-        ('skip-build', None,
-         "skip rebuilding everything (for testing/debugging)"),
-
-        # Where to install documentation (eventually!)
-        #('doc-format=', None, "format of documentation to generate"),
-        #('install-man=', None, "directory for Unix man pages"),
-        #('install-html=', None, "directory for HTML documentation"),
-        #('install-info=', None, "directory for GNU info files"),
-
-        ('record=', None,
-         "filename in which to record list of installed files"),
-        ]
-
-    boolean_options = ['compile', 'force', 'skip-build', 'user']
-    negative_opt = {'no-compile' : 'compile'}
-
-
-    def initialize_options (self):
-
-        # High-level options: these select both an installation base
-        # and scheme.
-        self.prefix = None
-        self.exec_prefix = None
-        self.home = None
-        self.user = 0
-
-        # These select only the installation base; it's up to the user to
-        # specify the installation scheme (currently, that means supplying
-        # the --install-{platlib,purelib,scripts,data} options).
-        self.install_base = None
-        self.install_platbase = None
-        self.root = None
-
-        # These options are the actual installation directories; if not
-        # supplied by the user, they are filled in using the installation
-        # scheme implied by prefix/exec-prefix/home and the contents of
-        # that installation scheme.
-        self.install_purelib = None     # for pure module distributions
-        self.install_platlib = None     # non-pure (dists w/ extensions)
-        self.install_headers = None     # for C/C++ headers
-        self.install_lib = None         # set to either purelib or platlib
-        self.install_scripts = None
-        self.install_data = None
-        self.install_userbase = USER_BASE
-        self.install_usersite = USER_SITE
-
-        self.compile = None
-        self.optimize = None
-
-        # These two are for putting non-packagized distributions into their
-        # own directory and creating a .pth file if it makes sense.
-        # 'extra_path' comes from the setup file; 'install_path_file' can
-        # be turned off if it makes no sense to install a .pth file.  (But
-        # better to install it uselessly than to guess wrong and not
-        # install it when it's necessary and would be used!)  Currently,
-        # 'install_path_file' is always true unless some outsider meddles
-        # with it.
-        self.extra_path = None
-        self.install_path_file = 1
-
-        # 'force' forces installation, even if target files are not
-        # out-of-date.  'skip_build' skips running the "build" command,
-        # handy if you know it's not necessary.  'warn_dir' (which is *not*
-        # a user option, it's just there so the bdist_* commands can turn
-        # it off) determines whether we warn about installing to a
-        # directory not in sys.path.
-        self.force = 0
-        self.skip_build = 0
-        self.warn_dir = 1
-
-        # These are only here as a conduit from the 'build' command to the
-        # 'install_*' commands that do the real work.  ('build_base' isn't
-        # actually used anywhere, but it might be useful in future.)  They
-        # are not user options, because if the user told the install
-        # command where the build directory is, that wouldn't affect the
-        # build command.
-        self.build_base = None
-        self.build_lib = None
-
-        # Not defined yet because we don't know anything about
-        # documentation yet.
-        #self.install_man = None
-        #self.install_html = None
-        #self.install_info = None
-
-        self.record = None
-
-
-    # -- Option finalizing methods -------------------------------------
-    # (This is rather more involved than for most commands,
-    # because this is where the policy for installing third-
-    # party Python modules on various platforms given a wide
-    # array of user input is decided.  Yes, it's quite complex!)
-
-    def finalize_options (self):
-
-        # This method (and its pliant slaves, like 'finalize_unix()',
-        # 'finalize_other()', and 'select_scheme()') is where the default
-        # installation directories for modules, extension modules, and
-        # anything else we care to install from a Python module
-        # distribution.  Thus, this code makes a pretty important policy
-        # statement about how third-party stuff is added to a Python
-        # installation!  Note that the actual work of installation is done
-        # by the relatively simple 'install_*' commands; they just take
-        # their orders from the installation directory options determined
-        # here.
-
-        # Check for errors/inconsistencies in the options; first, stuff
-        # that's wrong on any platform.
-
-        if ((self.prefix or self.exec_prefix or self.home) and
-            (self.install_base or self.install_platbase)):
-            raise DistutilsOptionError, \
-                  ("must supply either prefix/exec-prefix/home or " +
-                   "install-base/install-platbase -- not both")
-
-        if self.home and (self.prefix or self.exec_prefix):
-            raise DistutilsOptionError, \
-                  "must supply either home or prefix/exec-prefix -- not both"
-
-        if self.user and (self.prefix or self.exec_prefix or self.home or
-                self.install_base or self.install_platbase):
-            raise DistutilsOptionError("can't combine user with with prefix/"
-                                       "exec_prefix/home or install_(plat)base")
-
-        # Next, stuff that's wrong (or dubious) only on certain platforms.
-        if os.name != "posix":
-            if self.exec_prefix:
-                self.warn("exec-prefix option ignored on this platform")
-                self.exec_prefix = None
-
-        # Now the interesting logic -- so interesting that we farm it out
-        # to other methods.  The goal of these methods is to set the final
-        # values for the install_{lib,scripts,data,...}  options, using as
-        # input a heady brew of prefix, exec_prefix, home, install_base,
-        # install_platbase, user-supplied versions of
-        # install_{purelib,platlib,lib,scripts,data,...}, and the
-        # INSTALL_SCHEME dictionary above.  Phew!
-
-        self.dump_dirs("pre-finalize_{unix,other}")
-
-        if os.name == 'posix':
-            self.finalize_unix()
-        else:
-            self.finalize_other()
-
-        self.dump_dirs("post-finalize_{unix,other}()")
-
-        # Expand configuration variables, tilde, etc. in self.install_base
-        # and self.install_platbase -- that way, we can use $base or
-        # $platbase in the other installation directories and not worry
-        # about needing recursive variable expansion (shudder).
-
-        py_version = (string.split(sys.version))[0]
-        (prefix, exec_prefix) = get_config_vars('prefix', 'exec_prefix')
-        self.config_vars = {'dist_name': self.distribution.get_name(),
-                            'dist_version': self.distribution.get_version(),
-                            'dist_fullname': self.distribution.get_fullname(),
-                            'py_version': py_version,
-                            'py_version_short': py_version[0:3],
-                            'py_version_nodot': py_version[0] + py_version[2],
-                            'sys_prefix': prefix,
-                            'prefix': prefix,
-                            'sys_exec_prefix': exec_prefix,
-                            'exec_prefix': exec_prefix,
-                            'userbase': self.install_userbase,
-                            'usersite': self.install_usersite,
-                           }
-        self.expand_basedirs()
-
-        self.dump_dirs("post-expand_basedirs()")
-
-        # Now define config vars for the base directories so we can expand
-        # everything else.
-        self.config_vars['base'] = self.install_base
-        self.config_vars['platbase'] = self.install_platbase
-
-        if DEBUG:
-            from pprint import pprint
-            print "config vars:"
-            pprint(self.config_vars)
-
-        # Expand "~" and configuration variables in the installation
-        # directories.
-        self.expand_dirs()
-
-        self.dump_dirs("post-expand_dirs()")
-
-        # Create directories in the home dir:
-        if self.user:
-            self.create_home_path()
-
-        # Pick the actual directory to install all modules to: either
-        # install_purelib or install_platlib, depending on whether this
-        # module distribution is pure or not.  Of course, if the user
-        # already specified install_lib, use their selection.
-        if self.install_lib is None:
-            if self.distribution.ext_modules: # has extensions: non-pure
-                self.install_lib = self.install_platlib
-            else:
-                self.install_lib = self.install_purelib
-
-
-        # Convert directories from Unix /-separated syntax to the local
-        # convention.
-        self.convert_paths('lib', 'purelib', 'platlib',
-                           'scripts', 'data', 'headers',
-                           'userbase', 'usersite')
-
-        # Well, we're not actually fully completely finalized yet: we still
-        # have to deal with 'extra_path', which is the hack for allowing
-        # non-packagized module distributions (hello, Numerical Python!) to
-        # get their own directories.
-        self.handle_extra_path()
-        self.install_libbase = self.install_lib # needed for .pth file
-        self.install_lib = os.path.join(self.install_lib, self.extra_dirs)
-
-        # If a new root directory was supplied, make all the installation
-        # dirs relative to it.
-        if self.root is not None:
-            self.change_roots('libbase', 'lib', 'purelib', 'platlib',
-                              'scripts', 'data', 'headers')
-
-        self.dump_dirs("after prepending root")
-
-        # Find out the build directories, ie. where to install from.
-        self.set_undefined_options('build',
-                                   ('build_base', 'build_base'),
-                                   ('build_lib', 'build_lib'))
-
-        # Punt on doc directories for now -- after all, we're punting on
-        # documentation completely!
-
-    # finalize_options ()
-
-
-    def dump_dirs (self, msg):
-        if DEBUG:
-            from distutils.fancy_getopt import longopt_xlate
-            print msg + ":"
-            for opt in self.user_options:
-                opt_name = opt[0]
-                if opt_name[-1] == "=":
-                    opt_name = opt_name[0:-1]
-                if opt_name in self.negative_opt:
-                    opt_name = string.translate(self.negative_opt[opt_name],
-                                                longopt_xlate)
-                    val = not getattr(self, opt_name)
-                else:
-                    opt_name = string.translate(opt_name, longopt_xlate)
-                    val = getattr(self, opt_name)
-                print "  %s: %s" % (opt_name, val)
-
-
-    def finalize_unix (self):
-
-        if self.install_base is not None or self.install_platbase is not None:
-            if ((self.install_lib is None and
-                 self.install_purelib is None and
-                 self.install_platlib is None) or
-                self.install_headers is None or
-                self.install_scripts is None or
-                self.install_data is None):
-                raise DistutilsOptionError, \
-                      ("install-base or install-platbase supplied, but "
-                      "installation scheme is incomplete")
-            return
-
-        if self.user:
-            if self.install_userbase is None:
-                raise DistutilsPlatformError(
-                    "User base directory is not specified")
-            self.install_base = self.install_platbase = self.install_userbase
-            self.select_scheme("unix_user")
-        elif self.home is not None:
-            self.install_base = self.install_platbase = self.home
-            self.select_scheme("unix_home")
-        else:
-            if self.prefix is None:
-                if self.exec_prefix is not None:
-                    raise DistutilsOptionError, \
-                          "must not supply exec-prefix without prefix"
-
-                self.prefix = os.path.normpath(sys.prefix)
-                self.exec_prefix = os.path.normpath(sys.exec_prefix)
-
-            else:
-                if self.exec_prefix is None:
-                    self.exec_prefix = self.prefix
-
-            self.install_base = self.prefix
-            self.install_platbase = self.exec_prefix
-            self.select_scheme("unix_prefix")
-
-    # finalize_unix ()
-
-
-    def finalize_other (self):          # Windows and Mac OS for now
-
-        if self.user:
-            if self.install_userbase is None:
-                raise DistutilsPlatformError(
-                    "User base directory is not specified")
-            self.install_base = self.install_platbase = self.install_userbase
-            self.select_scheme(os.name + "_user")
-        elif self.home is not None:
-            self.install_base = self.install_platbase = self.home
-            self.select_scheme("unix_home")
-        else:
-            if self.prefix is None:
-                self.prefix = os.path.normpath(sys.prefix)
-
-            self.install_base = self.install_platbase = self.prefix
-            try:
-                self.select_scheme(os.name)
-            except KeyError:
-                raise DistutilsPlatformError, \
-                      "I don't know how to install stuff on '%s'" % os.name
-
-    # finalize_other ()
-
-
-    def select_scheme (self, name):
-        # it's the caller's problem if they supply a bad name!
-        scheme = INSTALL_SCHEMES[name]
-        for key in SCHEME_KEYS:
-            attrname = 'install_' + key
-            if getattr(self, attrname) is None:
-                setattr(self, attrname, scheme[key])
-
-
-    def _expand_attrs (self, attrs):
-        for attr in attrs:
-            val = getattr(self, attr)
-            if val is not None:
-                if os.name == 'posix' or os.name == 'nt':
-                    val = os.path.expanduser(val)
-                val = subst_vars(val, self.config_vars)
-                setattr(self, attr, val)
-
-
-    def expand_basedirs (self):
-        self._expand_attrs(['install_base',
-                            'install_platbase',
-                            'root'])
-
-    def expand_dirs (self):
-        self._expand_attrs(['install_purelib',
-                            'install_platlib',
-                            'install_lib',
-                            'install_headers',
-                            'install_scripts',
-                            'install_data',])
-
-
-    def convert_paths (self, *names):
-        for name in names:
-            attr = "install_" + name
-            setattr(self, attr, convert_path(getattr(self, attr)))
-
-
-    def handle_extra_path (self):
-
-        if self.extra_path is None:
-            self.extra_path = self.distribution.extra_path
-
-        if self.extra_path is not None:
-            if type(self.extra_path) is StringType:
-                self.extra_path = string.split(self.extra_path, ',')
-
-            if len(self.extra_path) == 1:
-                path_file = extra_dirs = self.extra_path[0]
-            elif len(self.extra_path) == 2:
-                (path_file, extra_dirs) = self.extra_path
-            else:
-                raise DistutilsOptionError, \
-                      ("'extra_path' option must be a list, tuple, or "
-                      "comma-separated string with 1 or 2 elements")
-
-            # convert to local form in case Unix notation used (as it
-            # should be in setup scripts)
-            extra_dirs = convert_path(extra_dirs)
-
-        else:
-            path_file = None
-            extra_dirs = ''
-
-        # XXX should we warn if path_file and not extra_dirs? (in which
-        # case the path file would be harmless but pointless)
-        self.path_file = path_file
-        self.extra_dirs = extra_dirs
-
-    # handle_extra_path ()
-
-
-    def change_roots (self, *names):
-        for name in names:
-            attr = "install_" + name
-            setattr(self, attr, change_root(self.root, getattr(self, attr)))
-
-    def create_home_path(self):
-        """Create directories under ~
-        """
-        if not self.user:
-            return
-        home = convert_path(os.path.expanduser("~"))
-        for name, path in self.config_vars.iteritems():
-            if path.startswith(home) and not os.path.isdir(path):
-                self.debug_print("os.makedirs('%s', 0700)" % path)
-                os.makedirs(path, 0700)
-
-    # -- Command execution methods -------------------------------------
-
-    def run (self):
-
-        # Obviously have to build before we can install
-        if not self.skip_build:
-            self.run_command('build')
-            # If we built for any other platform, we can't install.
-            build_plat = self.distribution.get_command_obj('build').plat_name
-            # check warn_dir - it is a clue that the 'install' is happening
-            # internally, and not to sys.path, so we don't check the platform
-            # matches what we are running.
-            if self.warn_dir and build_plat != get_platform():
-                raise DistutilsPlatformError("Can't install when "
-                                             "cross-compiling")
-
-        # Run all sub-commands (at least those that need to be run)
-        for cmd_name in self.get_sub_commands():
-            self.run_command(cmd_name)
-
-        if self.path_file:
-            self.create_path_file()
-
-        # write list of installed files, if requested.
-        if self.record:
-            outputs = self.get_outputs()
-            if self.root:               # strip any package prefix
-                root_len = len(self.root)
-                for counter in xrange(len(outputs)):
-                    outputs[counter] = outputs[counter][root_len:]
-            self.execute(write_file,
-                         (self.record, outputs),
-                         "writing list of installed files to '%s'" %
-                         self.record)
-
-        sys_path = map(os.path.normpath, sys.path)
-        sys_path = map(os.path.normcase, sys_path)
-        install_lib = os.path.normcase(os.path.normpath(self.install_lib))
-        if (self.warn_dir and
-            not (self.path_file and self.install_path_file) and
-            install_lib not in sys_path):
-            log.debug(("modules installed to '%s', which is not in "
-                       "Python's module search path (sys.path) -- "
-                       "you'll have to change the search path yourself"),
-                       self.install_lib)
-
-    # run ()
-
-    def create_path_file (self):
-        filename = os.path.join(self.install_libbase,
-                                self.path_file + ".pth")
-        if self.install_path_file:
-            self.execute(write_file,
-                         (filename, [self.extra_dirs]),
-                         "creating %s" % filename)
-        else:
-            self.warn("path file '%s' not created" % filename)
-
-
-    # -- Reporting methods ---------------------------------------------
-
-    def get_outputs (self):
-        # Assemble the outputs of all the sub-commands.
-        outputs = []
-        for cmd_name in self.get_sub_commands():
-            cmd = self.get_finalized_command(cmd_name)
-            # Add the contents of cmd.get_outputs(), ensuring
-            # that outputs doesn't contain duplicate entries
-            for filename in cmd.get_outputs():
-                if filename not in outputs:
-                    outputs.append(filename)
-
-        if self.path_file and self.install_path_file:
-            outputs.append(os.path.join(self.install_libbase,
-                                        self.path_file + ".pth"))
-
-        return outputs
-
-    def get_inputs (self):
-        # XXX gee, this looks familiar ;-(
-        inputs = []
-        for cmd_name in self.get_sub_commands():
-            cmd = self.get_finalized_command(cmd_name)
-            inputs.extend(cmd.get_inputs())
-
-        return inputs
-
-
-    # -- Predicates for sub-command list -------------------------------
-
-    def has_lib (self):
-        """Return true if the current distribution has any Python
-        modules to install."""
-        return (self.distribution.has_pure_modules() or
-                self.distribution.has_ext_modules())
-
-    def has_headers (self):
-        return self.distribution.has_headers()
-
-    def has_scripts (self):
-        return self.distribution.has_scripts()
-
-    def has_data (self):
-        return self.distribution.has_data_files()
-
-
-    # 'sub_commands': a list of commands this command might have to run to
-    # get its work done.  See cmd.py for more info.
-    sub_commands = [('install_lib',     has_lib),
-                    ('install_headers', has_headers),
-                    ('install_scripts', has_scripts),
-                    ('install_data',    has_data),
-                    ('install_egg_info', lambda self:True),
-                   ]
-
-# class install
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_data.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_data.py
deleted file mode 100644
index d502e30..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_data.py
+++ /dev/null
@@ -1,81 +0,0 @@
-"""distutils.command.install_data
-
-Implements the Distutils 'install_data' command, for installing
-platform-independent data files."""
-
-# contributed by Bastian Kleineidam
-
-__revision__ = "$Id$"
-
-import os
-from distutils.core import Command
-from distutils.util import change_root, convert_path
-
-class install_data(Command):
-
-    description = "install data files"
-
-    user_options = [
-        ('install-dir=', 'd',
-         "base directory for installing data files "
-         "(default: installation base dir)"),
-        ('root=', None,
-         "install everything relative to this alternate root directory"),
-        ('force', 'f', "force installation (overwrite existing files)"),
-        ]
-
-    boolean_options = ['force']
-
-    def initialize_options(self):
-        self.install_dir = None
-        self.outfiles = []
-        self.root = None
-        self.force = 0
-        self.data_files = self.distribution.data_files
-        self.warn_dir = 1
-
-    def finalize_options(self):
-        self.set_undefined_options('install',
-                                   ('install_data', 'install_dir'),
-                                   ('root', 'root'),
-                                   ('force', 'force'),
-                                  )
-
-    def run(self):
-        self.mkpath(self.install_dir)
-        for f in self.data_files:
-            if isinstance(f, str):
-                # it's a simple file, so copy it
-                f = convert_path(f)
-                if self.warn_dir:
-                    self.warn("setup script did not provide a directory for "
-                              "'%s' -- installing right in '%s'" %
-                              (f, self.install_dir))
-                (out, _) = self.copy_file(f, self.install_dir)
-                self.outfiles.append(out)
-            else:
-                # it's a tuple with path to install to and a list of files
-                dir = convert_path(f[0])
-                if not os.path.isabs(dir):
-                    dir = os.path.join(self.install_dir, dir)
-                elif self.root:
-                    dir = change_root(self.root, dir)
-                self.mkpath(dir)
-
-                if f[1] == []:
-                    # If there are no files listed, the user must be
-                    # trying to create an empty directory, so add the
-                    # directory to the list of output files.
-                    self.outfiles.append(dir)
-                else:
-                    # Copy files, adding them to the list of output files.
-                    for data in f[1]:
-                        data = convert_path(data)
-                        (out, _) = self.copy_file(data, dir)
-                        self.outfiles.append(out)
-
-    def get_inputs(self):
-        return self.data_files or []
-
-    def get_outputs(self):
-        return self.outfiles
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_egg_info.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_egg_info.py
deleted file mode 100644
index 3ddea81..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_egg_info.py
+++ /dev/null
@@ -1,78 +0,0 @@
-"""distutils.command.install_egg_info
-
-Implements the Distutils 'install_egg_info' command, for installing
-a package's PKG-INFO metadata."""
-
-
-from distutils.cmd import Command
-from distutils import log, dir_util
-import os, sys, re
-
-class install_egg_info(Command):
-    """Install an .egg-info file for the package"""
-
-    description = "Install package's PKG-INFO metadata as an .egg-info file"
-    user_options = [
-        ('install-dir=', 'd', "directory to install to"),
-    ]
-
-    def initialize_options(self):
-        self.install_dir = None
-
-    def finalize_options(self):
-        self.set_undefined_options('install_lib',('install_dir','install_dir'))
-        basename = "%s-%s-py%s.egg-info" % (
-            to_filename(safe_name(self.distribution.get_name())),
-            to_filename(safe_version(self.distribution.get_version())),
-            sys.version[:3]
-        )
-        self.target = os.path.join(self.install_dir, basename)
-        self.outputs = [self.target]
-
-    def run(self):
-        target = self.target
-        if os.path.isdir(target) and not os.path.islink(target):
-            dir_util.remove_tree(target, dry_run=self.dry_run)
-        elif os.path.exists(target):
-            self.execute(os.unlink,(self.target,),"Removing "+target)
-        elif not os.path.isdir(self.install_dir):
-            self.execute(os.makedirs, (self.install_dir,),
-                         "Creating "+self.install_dir)
-        log.info("Writing %s", target)
-        if not self.dry_run:
-            f = open(target, 'w')
-            self.distribution.metadata.write_pkg_file(f)
-            f.close()
-
-    def get_outputs(self):
-        return self.outputs
-
-
-# The following routines are taken from setuptools' pkg_resources module and
-# can be replaced by importing them from pkg_resources once it is included
-# in the stdlib.
-
-def safe_name(name):
-    """Convert an arbitrary string to a standard distribution name
-
-    Any runs of non-alphanumeric/. characters are replaced with a single '-'.
-    """
-    return re.sub('[^A-Za-z0-9.]+', '-', name)
-
-
-def safe_version(version):
-    """Convert an arbitrary string to a standard version string
-
-    Spaces become dots, and all other non-alphanumeric characters become
-    dashes, with runs of multiple dashes condensed to a single dash.
-    """
-    version = version.replace(' ','.')
-    return re.sub('[^A-Za-z0-9.]+', '-', version)
-
-
-def to_filename(name):
-    """Convert a project or version name to its filename-escaped form
-
-    Any '-' characters are currently replaced with '_'.
-    """
-    return name.replace('-','_')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_headers.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_headers.py
deleted file mode 100644
index 7088e5e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_headers.py
+++ /dev/null
@@ -1,51 +0,0 @@
-"""distutils.command.install_headers
-
-Implements the Distutils 'install_headers' command, to install C/C++ header
-files to the Python include directory."""
-
-__revision__ = "$Id$"
-
-from distutils.core import Command
-
-
-# XXX force is never used
-class install_headers(Command):
-
-    description = "install C/C++ header files"
-
-    user_options = [('install-dir=', 'd',
-                     "directory to install header files to"),
-                    ('force', 'f',
-                     "force installation (overwrite existing files)"),
-                   ]
-
-    boolean_options = ['force']
-
-    def initialize_options(self):
-        self.install_dir = None
-        self.force = 0
-        self.outfiles = []
-
-    def finalize_options(self):
-        self.set_undefined_options('install',
-                                   ('install_headers', 'install_dir'),
-                                   ('force', 'force'))
-
-
-    def run(self):
-        headers = self.distribution.headers
-        if not headers:
-            return
-
-        self.mkpath(self.install_dir)
-        for header in headers:
-            (out, _) = self.copy_file(header, self.install_dir)
-            self.outfiles.append(out)
-
-    def get_inputs(self):
-        return self.distribution.headers or []
-
-    def get_outputs(self):
-        return self.outfiles
-
-# class install_headers
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_lib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_lib.py
deleted file mode 100644
index 8a8b610..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_lib.py
+++ /dev/null
@@ -1,219 +0,0 @@
-"""distutils.command.install_lib
-
-Implements the Distutils 'install_lib' command
-(install all Python modules)."""
-
-__revision__ = "$Id$"
-
-import os
-import sys
-
-from distutils.core import Command
-from distutils.errors import DistutilsOptionError
-
-
-# Extension for Python source files.
-if hasattr(os, 'extsep'):
-    PYTHON_SOURCE_EXTENSION = os.extsep + "py"
-else:
-    PYTHON_SOURCE_EXTENSION = ".py"
-
-class install_lib(Command):
-
-    description = "install all Python modules (extensions and pure Python)"
-
-    # The byte-compilation options are a tad confusing.  Here are the
-    # possible scenarios:
-    #   1) no compilation at all (--no-compile --no-optimize)
-    #   2) compile .pyc only (--compile --no-optimize; default)
-    #   3) compile .pyc and "level 1" .pyo (--compile --optimize)
-    #   4) compile "level 1" .pyo only (--no-compile --optimize)
-    #   5) compile .pyc and "level 2" .pyo (--compile --optimize-more)
-    #   6) compile "level 2" .pyo only (--no-compile --optimize-more)
-    #
-    # The UI for this is two option, 'compile' and 'optimize'.
-    # 'compile' is strictly boolean, and only decides whether to
-    # generate .pyc files.  'optimize' is three-way (0, 1, or 2), and
-    # decides both whether to generate .pyo files and what level of
-    # optimization to use.
-
-    user_options = [
-        ('install-dir=', 'd', "directory to install to"),
-        ('build-dir=','b', "build directory (where to install from)"),
-        ('force', 'f', "force installation (overwrite existing files)"),
-        ('compile', 'c', "compile .py to .pyc [default]"),
-        ('no-compile', None, "don't compile .py files"),
-        ('optimize=', 'O',
-         "also compile with optimization: -O1 for \"python -O\", "
-         "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"),
-        ('skip-build', None, "skip the build steps"),
-        ]
-
-    boolean_options = ['force', 'compile', 'skip-build']
-    negative_opt = {'no-compile' : 'compile'}
-
-    def initialize_options(self):
-        # let the 'install' command dictate our installation directory
-        self.install_dir = None
-        self.build_dir = None
-        self.force = 0
-        self.compile = None
-        self.optimize = None
-        self.skip_build = None
-
-    def finalize_options(self):
-        # Get all the information we need to install pure Python modules
-        # from the umbrella 'install' command -- build (source) directory,
-        # install (target) directory, and whether to compile .py files.
-        self.set_undefined_options('install',
-                                   ('build_lib', 'build_dir'),
-                                   ('install_lib', 'install_dir'),
-                                   ('force', 'force'),
-                                   ('compile', 'compile'),
-                                   ('optimize', 'optimize'),
-                                   ('skip_build', 'skip_build'),
-                                  )
-
-        if self.compile is None:
-            self.compile = 1
-        if self.optimize is None:
-            self.optimize = 0
-
-        if not isinstance(self.optimize, int):
-            try:
-                self.optimize = int(self.optimize)
-                if self.optimize not in (0, 1, 2):
-                    raise AssertionError
-            except (ValueError, AssertionError):
-                raise DistutilsOptionError, "optimize must be 0, 1, or 2"
-
-    def run(self):
-        # Make sure we have built everything we need first
-        self.build()
-
-        # Install everything: simply dump the entire contents of the build
-        # directory to the installation directory (that's the beauty of
-        # having a build directory!)
-        outfiles = self.install()
-
-        # (Optionally) compile .py to .pyc
-        if outfiles is not None and self.distribution.has_pure_modules():
-            self.byte_compile(outfiles)
-
-    # -- Top-level worker functions ------------------------------------
-    # (called from 'run()')
-
-    def build(self):
-        if not self.skip_build:
-            if self.distribution.has_pure_modules():
-                self.run_command('build_py')
-            if self.distribution.has_ext_modules():
-                self.run_command('build_ext')
-
-    def install(self):
-        if os.path.isdir(self.build_dir):
-            outfiles = self.copy_tree(self.build_dir, self.install_dir)
-        else:
-            self.warn("'%s' does not exist -- no Python modules to install" %
-                      self.build_dir)
-            return
-        return outfiles
-
-    def byte_compile(self, files):
-        if sys.dont_write_bytecode:
-            self.warn('byte-compiling is disabled, skipping.')
-            return
-
-        from distutils.util import byte_compile
-
-        # Get the "--root" directory supplied to the "install" command,
-        # and use it as a prefix to strip off the purported filename
-        # encoded in bytecode files.  This is far from complete, but it
-        # should at least generate usable bytecode in RPM distributions.
-        install_root = self.get_finalized_command('install').root
-
-        if self.compile:
-            byte_compile(files, optimize=0,
-                         force=self.force, prefix=install_root,
-                         dry_run=self.dry_run)
-        if self.optimize > 0:
-            byte_compile(files, optimize=self.optimize,
-                         force=self.force, prefix=install_root,
-                         verbose=self.verbose, dry_run=self.dry_run)
-
-
-    # -- Utility methods -----------------------------------------------
-
-    def _mutate_outputs(self, has_any, build_cmd, cmd_option, output_dir):
-        if not has_any:
-            return []
-
-        build_cmd = self.get_finalized_command(build_cmd)
-        build_files = build_cmd.get_outputs()
-        build_dir = getattr(build_cmd, cmd_option)
-
-        prefix_len = len(build_dir) + len(os.sep)
-        outputs = []
-        for file in build_files:
-            outputs.append(os.path.join(output_dir, file[prefix_len:]))
-
-        return outputs
-
-    def _bytecode_filenames(self, py_filenames):
-        bytecode_files = []
-        for py_file in py_filenames:
-            # Since build_py handles package data installation, the
-            # list of outputs can contain more than just .py files.
-            # Make sure we only report bytecode for the .py files.
-            ext = os.path.splitext(os.path.normcase(py_file))[1]
-            if ext != PYTHON_SOURCE_EXTENSION:
-                continue
-            if self.compile:
-                bytecode_files.append(py_file + "c")
-            if self.optimize > 0:
-                bytecode_files.append(py_file + "o")
-
-        return bytecode_files
-
-
-    # -- External interface --------------------------------------------
-    # (called by outsiders)
-
-    def get_outputs(self):
-        """Return the list of files that would be installed if this command
-        were actually run.  Not affected by the "dry-run" flag or whether
-        modules have actually been built yet.
-        """
-        pure_outputs = \
-            self._mutate_outputs(self.distribution.has_pure_modules(),
-                                 'build_py', 'build_lib',
-                                 self.install_dir)
-        if self.compile:
-            bytecode_outputs = self._bytecode_filenames(pure_outputs)
-        else:
-            bytecode_outputs = []
-
-        ext_outputs = \
-            self._mutate_outputs(self.distribution.has_ext_modules(),
-                                 'build_ext', 'build_lib',
-                                 self.install_dir)
-
-        return pure_outputs + bytecode_outputs + ext_outputs
-
-    def get_inputs(self):
-        """Get the list of files that are input to this command, ie. the
-        files that get installed as they are named in the build tree.
-        The files in this list correspond one-to-one to the output
-        filenames returned by 'get_outputs()'.
-        """
-        inputs = []
-
-        if self.distribution.has_pure_modules():
-            build_py = self.get_finalized_command('build_py')
-            inputs.extend(build_py.get_outputs())
-
-        if self.distribution.has_ext_modules():
-            build_ext = self.get_finalized_command('build_ext')
-            inputs.extend(build_ext.get_outputs())
-
-        return inputs
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_scripts.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_scripts.py
deleted file mode 100644
index 07a856c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/install_scripts.py
+++ /dev/null
@@ -1,64 +0,0 @@
-"""distutils.command.install_scripts
-
-Implements the Distutils 'install_scripts' command, for installing
-Python scripts."""
-
-# contributed by Bastian Kleineidam
-
-__revision__ = "$Id$"
-
-import os
-from distutils.core import Command
-from distutils import log
-from stat import ST_MODE
-
-class install_scripts (Command):
-
-    description = "install scripts (Python or otherwise)"
-
-    user_options = [
-        ('install-dir=', 'd', "directory to install scripts to"),
-        ('build-dir=','b', "build directory (where to install from)"),
-        ('force', 'f', "force installation (overwrite existing files)"),
-        ('skip-build', None, "skip the build steps"),
-    ]
-
-    boolean_options = ['force', 'skip-build']
-
-
-    def initialize_options (self):
-        self.install_dir = None
-        self.force = 0
-        self.build_dir = None
-        self.skip_build = None
-
-    def finalize_options (self):
-        self.set_undefined_options('build', ('build_scripts', 'build_dir'))
-        self.set_undefined_options('install',
-                                   ('install_scripts', 'install_dir'),
-                                   ('force', 'force'),
-                                   ('skip_build', 'skip_build'),
-                                  )
-
-    def run (self):
-        if not self.skip_build:
-            self.run_command('build_scripts')
-        self.outfiles = self.copy_tree(self.build_dir, self.install_dir)
-        if os.name == 'posix':
-            # Set the executable bits (owner, group, and world) on
-            # all the scripts we just installed.
-            for file in self.get_outputs():
-                if self.dry_run:
-                    log.info("changing mode of %s", file)
-                else:
-                    mode = ((os.stat(file)[ST_MODE]) | 0555) & 07777
-                    log.info("changing mode of %s to %o", file, mode)
-                    os.chmod(file, mode)
-
-    def get_inputs (self):
-        return self.distribution.scripts or []
-
-    def get_outputs(self):
-        return self.outfiles or []
-
-# class install_scripts
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/register.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/register.py
deleted file mode 100644
index bffd286..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/register.py
+++ /dev/null
@@ -1,307 +0,0 @@
-"""distutils.command.register
-
-Implements the Distutils 'register' command (register with the repository).
-"""
-
-# created 2002/10/21, Richard Jones
-
-__revision__ = "$Id$"
-
-import urllib2
-import getpass
-import urlparse
-import StringIO
-from warnings import warn
-
-from distutils.core import PyPIRCCommand
-from distutils import log
-
-class register(PyPIRCCommand):
-
-    description = ("register the distribution with the Python package index")
-    user_options = PyPIRCCommand.user_options + [
-        ('list-classifiers', None,
-         'list the valid Trove classifiers'),
-        ('strict', None ,
-         'Will stop the registering if the meta-data are not fully compliant')
-        ]
-    boolean_options = PyPIRCCommand.boolean_options + [
-        'verify', 'list-classifiers', 'strict']
-
-    sub_commands = [('check', lambda self: True)]
-
-    def initialize_options(self):
-        PyPIRCCommand.initialize_options(self)
-        self.list_classifiers = 0
-        self.strict = 0
-
-    def finalize_options(self):
-        PyPIRCCommand.finalize_options(self)
-        # setting options for the `check` subcommand
-        check_options = {'strict': ('register', self.strict),
-                         'restructuredtext': ('register', 1)}
-        self.distribution.command_options['check'] = check_options
-
-    def run(self):
-        self.finalize_options()
-        self._set_config()
-
-        # Run sub commands
-        for cmd_name in self.get_sub_commands():
-            self.run_command(cmd_name)
-
-        if self.dry_run:
-            self.verify_metadata()
-        elif self.list_classifiers:
-            self.classifiers()
-        else:
-            self.send_metadata()
-
-    def check_metadata(self):
-        """Deprecated API."""
-        warn("distutils.command.register.check_metadata is deprecated, \
-              use the check command instead", PendingDeprecationWarning)
-        check = self.distribution.get_command_obj('check')
-        check.ensure_finalized()
-        check.strict = self.strict
-        check.restructuredtext = 1
-        check.run()
-
-    def _set_config(self):
-        ''' Reads the configuration file and set attributes.
-        '''
-        config = self._read_pypirc()
-        if config != {}:
-            self.username = config['username']
-            self.password = config['password']
-            self.repository = config['repository']
-            self.realm = config['realm']
-            self.has_config = True
-        else:
-            if self.repository not in ('pypi', self.DEFAULT_REPOSITORY):
-                raise ValueError('%s not found in .pypirc' % self.repository)
-            if self.repository == 'pypi':
-                self.repository = self.DEFAULT_REPOSITORY
-            self.has_config = False
-
-    def classifiers(self):
-        ''' Fetch the list of classifiers from the server.
-        '''
-        response = urllib2.urlopen(self.repository+'?:action=list_classifiers')
-        log.info(response.read())
-
-    def verify_metadata(self):
-        ''' Send the metadata to the package index server to be checked.
-        '''
-        # send the info to the server and report the result
-        (code, result) = self.post_to_server(self.build_post_data('verify'))
-        log.info('Server response (%s): %s' % (code, result))
-
-
-    def send_metadata(self):
-        ''' Send the metadata to the package index server.
-
-            Well, do the following:
-            1. figure who the user is, and then
-            2. send the data as a Basic auth'ed POST.
-
-            First we try to read the username/password from $HOME/.pypirc,
-            which is a ConfigParser-formatted file with a section
-            [distutils] containing username and password entries (both
-            in clear text). Eg:
-
-                [distutils]
-                index-servers =
-                    pypi
-
-                [pypi]
-                username: fred
-                password: sekrit
-
-            Otherwise, to figure who the user is, we offer the user three
-            choices:
-
-             1. use existing login,
-             2. register as a new user, or
-             3. set the password to a random string and email the user.
-
-        '''
-        # see if we can short-cut and get the username/password from the
-        # config
-        if self.has_config:
-            choice = '1'
-            username = self.username
-            password = self.password
-        else:
-            choice = 'x'
-            username = password = ''
-
-        # get the user's login info
-        choices = '1 2 3 4'.split()
-        while choice not in choices:
-            self.announce('''\
-We need to know who you are, so please choose either:
- 1. use your existing login,
- 2. register as a new user,
- 3. have the server generate a new password for you (and email it to you), or
- 4. quit
-Your selection [default 1]: ''', log.INFO)
-
-            choice = raw_input()
-            if not choice:
-                choice = '1'
-            elif choice not in choices:
-                print 'Please choose one of the four options!'
-
-        if choice == '1':
-            # get the username and password
-            while not username:
-                username = raw_input('Username: ')
-            while not password:
-                password = getpass.getpass('Password: ')
-
-            # set up the authentication
-            auth = urllib2.HTTPPasswordMgr()
-            host = urlparse.urlparse(self.repository)[1]
-            auth.add_password(self.realm, host, username, password)
-            # send the info to the server and report the result
-            code, result = self.post_to_server(self.build_post_data('submit'),
-                auth)
-            self.announce('Server response (%s): %s' % (code, result),
-                          log.INFO)
-
-            # possibly save the login
-            if code == 200:
-                if self.has_config:
-                    # sharing the password in the distribution instance
-                    # so the upload command can reuse it
-                    self.distribution.password = password
-                else:
-                    self.announce(('I can store your PyPI login so future '
-                                   'submissions will be faster.'), log.INFO)
-                    self.announce('(the login will be stored in %s)' % \
-                                  self._get_rc_file(), log.INFO)
-                    choice = 'X'
-                    while choice.lower() not in 'yn':
-                        choice = raw_input('Save your login (y/N)?')
-                        if not choice:
-                            choice = 'n'
-                    if choice.lower() == 'y':
-                        self._store_pypirc(username, password)
-
-        elif choice == '2':
-            data = {':action': 'user'}
-            data['name'] = data['password'] = data['email'] = ''
-            data['confirm'] = None
-            while not data['name']:
-                data['name'] = raw_input('Username: ')
-            while data['password'] != data['confirm']:
-                while not data['password']:
-                    data['password'] = getpass.getpass('Password: ')
-                while not data['confirm']:
-                    data['confirm'] = getpass.getpass(' Confirm: ')
-                if data['password'] != data['confirm']:
-                    data['password'] = ''
-                    data['confirm'] = None
-                    print "Password and confirm don't match!"
-            while not data['email']:
-                data['email'] = raw_input('   EMail: ')
-            code, result = self.post_to_server(data)
-            if code != 200:
-                log.info('Server response (%s): %s' % (code, result))
-            else:
-                log.info('You will receive an email shortly.')
-                log.info(('Follow the instructions in it to '
-                          'complete registration.'))
-        elif choice == '3':
-            data = {':action': 'password_reset'}
-            data['email'] = ''
-            while not data['email']:
-                data['email'] = raw_input('Your email address: ')
-            code, result = self.post_to_server(data)
-            log.info('Server response (%s): %s' % (code, result))
-
-    def build_post_data(self, action):
-        # figure the data to send - the metadata plus some additional
-        # information used by the package server
-        meta = self.distribution.metadata
-        data = {
-            ':action': action,
-            'metadata_version' : '1.0',
-            'name': meta.get_name(),
-            'version': meta.get_version(),
-            'summary': meta.get_description(),
-            'home_page': meta.get_url(),
-            'author': meta.get_contact(),
-            'author_email': meta.get_contact_email(),
-            'license': meta.get_licence(),
-            'description': meta.get_long_description(),
-            'keywords': meta.get_keywords(),
-            'platform': meta.get_platforms(),
-            'classifiers': meta.get_classifiers(),
-            'download_url': meta.get_download_url(),
-            # PEP 314
-            'provides': meta.get_provides(),
-            'requires': meta.get_requires(),
-            'obsoletes': meta.get_obsoletes(),
-        }
-        if data['provides'] or data['requires'] or data['obsoletes']:
-            data['metadata_version'] = '1.1'
-        return data
-
-    def post_to_server(self, data, auth=None):
-        ''' Post a query to the server, and return a string response.
-        '''
-        if 'name' in data:
-            self.announce('Registering %s to %s' % (data['name'],
-                                                   self.repository),
-                                                   log.INFO)
-        # Build up the MIME payload for the urllib2 POST data
-        boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
-        sep_boundary = '\n--' + boundary
-        end_boundary = sep_boundary + '--'
-        body = StringIO.StringIO()
-        for key, value in data.items():
-            # handle multiple entries for the same name
-            if type(value) not in (type([]), type( () )):
-                value = [value]
-            for value in value:
-                body.write(sep_boundary)
-                body.write('\nContent-Disposition: form-data; name="%s"'%key)
-                body.write("\n\n")
-                body.write(value)
-                if value and value[-1] == '\r':
-                    body.write('\n')  # write an extra newline (lurve Macs)
-        body.write(end_boundary)
-        body.write("\n")
-        body = body.getvalue()
-
-        # build the Request
-        headers = {
-            'Content-type': 'multipart/form-data; boundary=%s; charset=utf-8'%boundary,
-            'Content-length': str(len(body))
-        }
-        req = urllib2.Request(self.repository, body, headers)
-
-        # handle HTTP and include the Basic Auth handler
-        opener = urllib2.build_opener(
-            urllib2.HTTPBasicAuthHandler(password_mgr=auth)
-        )
-        data = ''
-        try:
-            result = opener.open(req)
-        except urllib2.HTTPError, e:
-            if self.show_response:
-                data = e.fp.read()
-            result = e.code, e.msg
-        except urllib2.URLError, e:
-            result = 500, str(e)
-        else:
-            if self.show_response:
-                data = result.read()
-            result = 200, 'OK'
-        if self.show_response:
-            dashes = '-' * 75
-            self.announce('%s%s%s' % (dashes, data, dashes))
-
-        return result
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/sdist.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/sdist.py
deleted file mode 100644
index 5ad1848..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/sdist.py
+++ /dev/null
@@ -1,464 +0,0 @@
-"""distutils.command.sdist
-
-Implements the Distutils 'sdist' command (create a source distribution)."""
-
-__revision__ = "$Id$"
-
-import os
-import string
-import sys
-from glob import glob
-from warnings import warn
-
-from distutils.core import Command
-from distutils import dir_util, dep_util, file_util, archive_util
-from distutils.text_file import TextFile
-from distutils.errors import (DistutilsPlatformError, DistutilsOptionError,
-                              DistutilsTemplateError)
-from distutils.filelist import FileList
-from distutils import log
-from distutils.util import convert_path
-
-def show_formats():
-    """Print all possible values for the 'formats' option (used by
-    the "--help-formats" command-line option).
-    """
-    from distutils.fancy_getopt import FancyGetopt
-    from distutils.archive_util import ARCHIVE_FORMATS
-    formats = []
-    for format in ARCHIVE_FORMATS.keys():
-        formats.append(("formats=" + format, None,
-                        ARCHIVE_FORMATS[format][2]))
-    formats.sort()
-    FancyGetopt(formats).print_help(
-        "List of available source distribution formats:")
-
-class sdist(Command):
-
-    description = "create a source distribution (tarball, zip file, etc.)"
-
-    def checking_metadata(self):
-        """Callable used for the check sub-command.
-
-        Placed here so user_options can view it"""
-        return self.metadata_check
-
-    user_options = [
-        ('template=', 't',
-         "name of manifest template file [default: MANIFEST.in]"),
-        ('manifest=', 'm',
-         "name of manifest file [default: MANIFEST]"),
-        ('use-defaults', None,
-         "include the default file set in the manifest "
-         "[default; disable with --no-defaults]"),
-        ('no-defaults', None,
-         "don't include the default file set"),
-        ('prune', None,
-         "specifically exclude files/directories that should not be "
-         "distributed (build tree, RCS/CVS dirs, etc.) "
-         "[default; disable with --no-prune]"),
-        ('no-prune', None,
-         "don't automatically exclude anything"),
-        ('manifest-only', 'o',
-         "just regenerate the manifest and then stop "
-         "(implies --force-manifest)"),
-        ('force-manifest', 'f',
-         "forcibly regenerate the manifest and carry on as usual. "
-         "Deprecated: now the manifest is always regenerated."),
-        ('formats=', None,
-         "formats for source distribution (comma-separated list)"),
-        ('keep-temp', 'k',
-         "keep the distribution tree around after creating " +
-         "archive file(s)"),
-        ('dist-dir=', 'd',
-         "directory to put the source distribution archive(s) in "
-         "[default: dist]"),
-        ('metadata-check', None,
-         "Ensure that all required elements of meta-data "
-         "are supplied. Warn if any missing. [default]"),
-        ('owner=', 'u',
-         "Owner name used when creating a tar file [default: current user]"),
-        ('group=', 'g',
-         "Group name used when creating a tar file [default: current group]"),
-        ]
-
-    boolean_options = ['use-defaults', 'prune',
-                       'manifest-only', 'force-manifest',
-                       'keep-temp', 'metadata-check']
-
-    help_options = [
-        ('help-formats', None,
-         "list available distribution formats", show_formats),
-        ]
-
-    negative_opt = {'no-defaults': 'use-defaults',
-                    'no-prune': 'prune' }
-
-    default_format = {'posix': 'gztar',
-                      'nt': 'zip' }
-
-    sub_commands = [('check', checking_metadata)]
-
-    def initialize_options(self):
-        # 'template' and 'manifest' are, respectively, the names of
-        # the manifest template and manifest file.
-        self.template = None
-        self.manifest = None
-
-        # 'use_defaults': if true, we will include the default file set
-        # in the manifest
-        self.use_defaults = 1
-        self.prune = 1
-
-        self.manifest_only = 0
-        self.force_manifest = 0
-
-        self.formats = None
-        self.keep_temp = 0
-        self.dist_dir = None
-
-        self.archive_files = None
-        self.metadata_check = 1
-        self.owner = None
-        self.group = None
-
-    def finalize_options(self):
-        if self.manifest is None:
-            self.manifest = "MANIFEST"
-        if self.template is None:
-            self.template = "MANIFEST.in"
-
-        self.ensure_string_list('formats')
-        if self.formats is None:
-            try:
-                self.formats = [self.default_format[os.name]]
-            except KeyError:
-                raise DistutilsPlatformError, \
-                      "don't know how to create source distributions " + \
-                      "on platform %s" % os.name
-
-        bad_format = archive_util.check_archive_formats(self.formats)
-        if bad_format:
-            raise DistutilsOptionError, \
-                  "unknown archive format '%s'" % bad_format
-
-        if self.dist_dir is None:
-            self.dist_dir = "dist"
-
-    def run(self):
-        # 'filelist' contains the list of files that will make up the
-        # manifest
-        self.filelist = FileList()
-
-        # Run sub commands
-        for cmd_name in self.get_sub_commands():
-            self.run_command(cmd_name)
-
-        # Do whatever it takes to get the list of files to process
-        # (process the manifest template, read an existing manifest,
-        # whatever).  File list is accumulated in 'self.filelist'.
-        self.get_file_list()
-
-        # If user just wanted us to regenerate the manifest, stop now.
-        if self.manifest_only:
-            return
-
-        # Otherwise, go ahead and create the source distribution tarball,
-        # or zipfile, or whatever.
-        self.make_distribution()
-
-    def check_metadata(self):
-        """Deprecated API."""
-        warn("distutils.command.sdist.check_metadata is deprecated, \
-              use the check command instead", PendingDeprecationWarning)
-        check = self.distribution.get_command_obj('check')
-        check.ensure_finalized()
-        check.run()
-
-    def get_file_list(self):
-        """Figure out the list of files to include in the source
-        distribution, and put it in 'self.filelist'.  This might involve
-        reading the manifest template (and writing the manifest), or just
-        reading the manifest, or just using the default file set -- it all
-        depends on the user's options.
-        """
-        # new behavior:
-        # the file list is recalculated everytime because
-        # even if MANIFEST.in or setup.py are not changed
-        # the user might have added some files in the tree that
-        # need to be included.
-        #
-        #  This makes --force the default and only behavior.
-        template_exists = os.path.isfile(self.template)
-        if not template_exists:
-            self.warn(("manifest template '%s' does not exist " +
-                        "(using default file list)") %
-                        self.template)
-        self.filelist.findall()
-
-        if self.use_defaults:
-            self.add_defaults()
-
-        if template_exists:
-            self.read_template()
-
-        if self.prune:
-            self.prune_file_list()
-
-        self.filelist.sort()
-        self.filelist.remove_duplicates()
-        self.write_manifest()
-
-    def add_defaults(self):
-        """Add all the default files to self.filelist:
-          - README or README.txt
-          - setup.py
-          - test/test*.py
-          - all pure Python modules mentioned in setup script
-          - all files pointed by package_data (build_py)
-          - all files defined in data_files.
-          - all files defined as scripts.
-          - all C sources listed as part of extensions or C libraries
-            in the setup script (doesn't catch C headers!)
-        Warns if (README or README.txt) or setup.py are missing; everything
-        else is optional.
-        """
-
-        standards = [('README', 'README.txt'), self.distribution.script_name]
-        for fn in standards:
-            if isinstance(fn, tuple):
-                alts = fn
-                got_it = 0
-                for fn in alts:
-                    if os.path.exists(fn):
-                        got_it = 1
-                        self.filelist.append(fn)
-                        break
-
-                if not got_it:
-                    self.warn("standard file not found: should have one of " +
-                              string.join(alts, ', '))
-            else:
-                if os.path.exists(fn):
-                    self.filelist.append(fn)
-                else:
-                    self.warn("standard file '%s' not found" % fn)
-
-        optional = ['test/test*.py', 'setup.cfg']
-        for pattern in optional:
-            files = filter(os.path.isfile, glob(pattern))
-            if files:
-                self.filelist.extend(files)
-
-        # build_py is used to get:
-        #  - python modules
-        #  - files defined in package_data
-        build_py = self.get_finalized_command('build_py')
-
-        # getting python files
-        if self.distribution.has_pure_modules():
-            self.filelist.extend(build_py.get_source_files())
-
-        # getting package_data files
-        # (computed in build_py.data_files by build_py.finalize_options)
-        for pkg, src_dir, build_dir, filenames in build_py.data_files:
-            for filename in filenames:
-                self.filelist.append(os.path.join(src_dir, filename))
-
-        # getting distribution.data_files
-        if self.distribution.has_data_files():
-            for item in self.distribution.data_files:
-                if isinstance(item, str): # plain file
-                    item = convert_path(item)
-                    if os.path.isfile(item):
-                        self.filelist.append(item)
-                else:    # a (dirname, filenames) tuple
-                    dirname, filenames = item
-                    for f in filenames:
-                        f = convert_path(f)
-                        if os.path.isfile(f):
-                            self.filelist.append(f)
-
-        if self.distribution.has_ext_modules():
-            build_ext = self.get_finalized_command('build_ext')
-            self.filelist.extend(build_ext.get_source_files())
-
-        if self.distribution.has_c_libraries():
-            build_clib = self.get_finalized_command('build_clib')
-            self.filelist.extend(build_clib.get_source_files())
-
-        if self.distribution.has_scripts():
-            build_scripts = self.get_finalized_command('build_scripts')
-            self.filelist.extend(build_scripts.get_source_files())
-
-    def read_template(self):
-        """Read and parse manifest template file named by self.template.
-
-        (usually "MANIFEST.in") The parsing and processing is done by
-        'self.filelist', which updates itself accordingly.
-        """
-        log.info("reading manifest template '%s'", self.template)
-        template = TextFile(self.template,
-                            strip_comments=1,
-                            skip_blanks=1,
-                            join_lines=1,
-                            lstrip_ws=1,
-                            rstrip_ws=1,
-                            collapse_join=1)
-
-        try:
-            while 1:
-                line = template.readline()
-                if line is None:            # end of file
-                    break
-
-                try:
-                    self.filelist.process_template_line(line)
-                except DistutilsTemplateError, msg:
-                    self.warn("%s, line %d: %s" % (template.filename,
-                                                   template.current_line,
-                                                   msg))
-        finally:
-            template.close()
-
-    def prune_file_list(self):
-        """Prune off branches that might slip into the file list as created
-        by 'read_template()', but really don't belong there:
-          * the build tree (typically "build")
-          * the release tree itself (only an issue if we ran "sdist"
-            previously with --keep-temp, or it aborted)
-          * any RCS, CVS, .svn, .hg, .git, .bzr, _darcs directories
-        """
-        build = self.get_finalized_command('build')
-        base_dir = self.distribution.get_fullname()
-
-        self.filelist.exclude_pattern(None, prefix=build.build_base)
-        self.filelist.exclude_pattern(None, prefix=base_dir)
-
-        # pruning out vcs directories
-        # both separators are used under win32
-        if sys.platform == 'win32':
-            seps = r'/|\\'
-        else:
-            seps = '/'
-
-        vcs_dirs = ['RCS', 'CVS', r'\.svn', r'\.hg', r'\.git', r'\.bzr',
-                    '_darcs']
-        vcs_ptrn = r'(^|%s)(%s)(%s).*' % (seps, '|'.join(vcs_dirs), seps)
-        self.filelist.exclude_pattern(vcs_ptrn, is_regex=1)
-
-    def write_manifest(self):
-        """Write the file list in 'self.filelist' (presumably as filled in
-        by 'add_defaults()' and 'read_template()') to the manifest file
-        named by 'self.manifest'.
-        """
-        if os.path.isfile(self.manifest):
-            fp = open(self.manifest)
-            try:
-                first_line = fp.readline()
-            finally:
-                fp.close()
-
-            if first_line != '# file GENERATED by distutils, do NOT edit\n':
-                log.info("not writing to manually maintained "
-                         "manifest file '%s'" % self.manifest)
-                return
-
-        content = self.filelist.files[:]
-        content.insert(0, '# file GENERATED by distutils, do NOT edit')
-        self.execute(file_util.write_file, (self.manifest, content),
-                     "writing manifest file '%s'" % self.manifest)
-
-    def read_manifest(self):
-        """Read the manifest file (named by 'self.manifest') and use it to
-        fill in 'self.filelist', the list of files to include in the source
-        distribution.
-        """
-        log.info("reading manifest file '%s'", self.manifest)
-        manifest = open(self.manifest)
-        while 1:
-            line = manifest.readline()
-            if line == '':              # end of file
-                break
-            if line[-1] == '\n':
-                line = line[0:-1]
-            self.filelist.append(line)
-        manifest.close()
-
-    def make_release_tree(self, base_dir, files):
-        """Create the directory tree that will become the source
-        distribution archive.  All directories implied by the filenames in
-        'files' are created under 'base_dir', and then we hard link or copy
-        (if hard linking is unavailable) those files into place.
-        Essentially, this duplicates the developer's source tree, but in a
-        directory named after the distribution, containing only the files
-        to be distributed.
-        """
-        # Create all the directories under 'base_dir' necessary to
-        # put 'files' there; the 'mkpath()' is just so we don't die
-        # if the manifest happens to be empty.
-        self.mkpath(base_dir)
-        dir_util.create_tree(base_dir, files, dry_run=self.dry_run)
-
-        # And walk over the list of files, either making a hard link (if
-        # os.link exists) to each one that doesn't already exist in its
-        # corresponding location under 'base_dir', or copying each file
-        # that's out-of-date in 'base_dir'.  (Usually, all files will be
-        # out-of-date, because by default we blow away 'base_dir' when
-        # we're done making the distribution archives.)
-
-        if hasattr(os, 'link'):        # can make hard links on this system
-            link = 'hard'
-            msg = "making hard links in %s..." % base_dir
-        else:                           # nope, have to copy
-            link = None
-            msg = "copying files to %s..." % base_dir
-
-        if not files:
-            log.warn("no files to distribute -- empty manifest?")
-        else:
-            log.info(msg)
-        for file in files:
-            if not os.path.isfile(file):
-                log.warn("'%s' not a regular file -- skipping" % file)
-            else:
-                dest = os.path.join(base_dir, file)
-                self.copy_file(file, dest, link=link)
-
-        self.distribution.metadata.write_pkg_info(base_dir)
-
-    def make_distribution(self):
-        """Create the source distribution(s).  First, we create the release
-        tree with 'make_release_tree()'; then, we create all required
-        archive files (according to 'self.formats') from the release tree.
-        Finally, we clean up by blowing away the release tree (unless
-        'self.keep_temp' is true).  The list of archive files created is
-        stored so it can be retrieved later by 'get_archive_files()'.
-        """
-        # Don't warn about missing meta-data here -- should be (and is!)
-        # done elsewhere.
-        base_dir = self.distribution.get_fullname()
-        base_name = os.path.join(self.dist_dir, base_dir)
-
-        self.make_release_tree(base_dir, self.filelist.files)
-        archive_files = []              # remember names of files we create
-        # tar archive must be created last to avoid overwrite and remove
-        if 'tar' in self.formats:
-            self.formats.append(self.formats.pop(self.formats.index('tar')))
-
-        for fmt in self.formats:
-            file = self.make_archive(base_name, fmt, base_dir=base_dir,
-                                     owner=self.owner, group=self.group)
-            archive_files.append(file)
-            self.distribution.dist_files.append(('sdist', '', file))
-
-        self.archive_files = archive_files
-
-        if not self.keep_temp:
-            dir_util.remove_tree(base_dir, dry_run=self.dry_run)
-
-    def get_archive_files(self):
-        """Return the list of archive files created when the command
-        was run, or None if the command hasn't run yet.
-        """
-        return self.archive_files
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/upload.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/upload.py
deleted file mode 100644
index 564fe4a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/upload.py
+++ /dev/null
@@ -1,194 +0,0 @@
-"""distutils.command.upload
-
-Implements the Distutils 'upload' subcommand (upload package to PyPI)."""
-import os
-import socket
-import platform
-from urllib2 import urlopen, Request, HTTPError
-from base64 import standard_b64encode
-import urlparse
-import cStringIO as StringIO
-from hashlib import md5
-
-from distutils.errors import DistutilsOptionError
-from distutils.core import PyPIRCCommand
-from distutils.spawn import spawn
-from distutils import log
-
-class upload(PyPIRCCommand):
-
-    description = "upload binary package to PyPI"
-
-    user_options = PyPIRCCommand.user_options + [
-        ('sign', 's',
-         'sign files to upload using gpg'),
-        ('identity=', 'i', 'GPG identity used to sign files'),
-        ]
-
-    boolean_options = PyPIRCCommand.boolean_options + ['sign']
-
-    def initialize_options(self):
-        PyPIRCCommand.initialize_options(self)
-        self.username = ''
-        self.password = ''
-        self.show_response = 0
-        self.sign = False
-        self.identity = None
-
-    def finalize_options(self):
-        PyPIRCCommand.finalize_options(self)
-        if self.identity and not self.sign:
-            raise DistutilsOptionError(
-                "Must use --sign for --identity to have meaning"
-            )
-        config = self._read_pypirc()
-        if config != {}:
-            self.username = config['username']
-            self.password = config['password']
-            self.repository = config['repository']
-            self.realm = config['realm']
-
-        # getting the password from the distribution
-        # if previously set by the register command
-        if not self.password and self.distribution.password:
-            self.password = self.distribution.password
-
-    def run(self):
-        if not self.distribution.dist_files:
-            raise DistutilsOptionError("No dist file created in earlier command")
-        for command, pyversion, filename in self.distribution.dist_files:
-            self.upload_file(command, pyversion, filename)
-
-    def upload_file(self, command, pyversion, filename):
-        # Makes sure the repository URL is compliant
-        schema, netloc, url, params, query, fragments = \
-            urlparse.urlparse(self.repository)
-        if params or query or fragments:
-            raise AssertionError("Incompatible url %s" % self.repository)
-
-        if schema not in ('http', 'https'):
-            raise AssertionError("unsupported schema " + schema)
-
-        # Sign if requested
-        if self.sign:
-            gpg_args = ["gpg", "--detach-sign", "-a", filename]
-            if self.identity:
-                gpg_args[2:2] = ["--local-user", self.identity]
-            spawn(gpg_args,
-                  dry_run=self.dry_run)
-
-        # Fill in the data - send all the meta-data in case we need to
-        # register a new release
-        f = open(filename,'rb')
-        try:
-            content = f.read()
-        finally:
-            f.close()
-        meta = self.distribution.metadata
-        data = {
-            # action
-            ':action': 'file_upload',
-            'protcol_version': '1',
-
-            # identify release
-            'name': meta.get_name(),
-            'version': meta.get_version(),
-
-            # file content
-            'content': (os.path.basename(filename),content),
-            'filetype': command,
-            'pyversion': pyversion,
-            'md5_digest': md5(content).hexdigest(),
-
-            # additional meta-data
-            'metadata_version' : '1.0',
-            'summary': meta.get_description(),
-            'home_page': meta.get_url(),
-            'author': meta.get_contact(),
-            'author_email': meta.get_contact_email(),
-            'license': meta.get_licence(),
-            'description': meta.get_long_description(),
-            'keywords': meta.get_keywords(),
-            'platform': meta.get_platforms(),
-            'classifiers': meta.get_classifiers(),
-            'download_url': meta.get_download_url(),
-            # PEP 314
-            'provides': meta.get_provides(),
-            'requires': meta.get_requires(),
-            'obsoletes': meta.get_obsoletes(),
-            }
-        comment = ''
-        if command == 'bdist_rpm':
-            dist, version, id = platform.dist()
-            if dist:
-                comment = 'built for %s %s' % (dist, version)
-        elif command == 'bdist_dumb':
-            comment = 'built for %s' % platform.platform(terse=1)
-        data['comment'] = comment
-
-        if self.sign:
-            data['gpg_signature'] = (os.path.basename(filename) + ".asc",
-                                     open(filename+".asc").read())
-
-        # set up the authentication
-        auth = "Basic " + standard_b64encode(self.username + ":" +
-                                             self.password)
-
-        # Build up the MIME payload for the POST data
-        boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
-        sep_boundary = '\n--' + boundary
-        end_boundary = sep_boundary + '--'
-        body = StringIO.StringIO()
-        for key, value in data.items():
-            # handle multiple entries for the same name
-            if not isinstance(value, list):
-                value = [value]
-            for value in value:
-                if isinstance(value, tuple):
-                    fn = ';filename="%s"' % value[0]
-                    value = value[1]
-                else:
-                    fn = ""
-
-                body.write(sep_boundary)
-                body.write('\nContent-Disposition: form-data; name="%s"'%key)
-                body.write(fn)
-                body.write("\n\n")
-                body.write(value)
-                if value and value[-1] == '\r':
-                    body.write('\n')  # write an extra newline (lurve Macs)
-        body.write(end_boundary)
-        body.write("\n")
-        body = body.getvalue()
-
-        self.announce("Submitting %s to %s" % (filename, self.repository), log.INFO)
-
-        # build the Request
-        headers = {'Content-type':
-                        'multipart/form-data; boundary=%s' % boundary,
-                   'Content-length': str(len(body)),
-                   'Authorization': auth}
-
-        request = Request(self.repository, data=body,
-                          headers=headers)
-        # send the data
-        try:
-            result = urlopen(request)
-            status = result.getcode()
-            reason = result.msg
-            if self.show_response:
-                msg = '\n'.join(('-' * 75, r.read(), '-' * 75))
-                self.announce(msg, log.INFO)
-        except socket.error, e:
-            self.announce(str(e), log.ERROR)
-            return
-        except HTTPError, e:
-            status = e.code
-            reason = e.msg
-
-        if status == 200:
-            self.announce('Server response (%s): %s' % (status, reason),
-                          log.INFO)
-        else:
-            self.announce('Upload failed (%s): %s' % (status, reason),
-                          log.ERROR)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-6.0.exe b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-6.0.exe
deleted file mode 100644
index f57c855a613e2de2b00fff1df431b8d08d171077..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 61440
zcmeFad0bOR_dk9i0fGXF3W|!FYE%?dEMlQS4YG&=8Vrjl;)-4)Duu+QZqSfQyr$Kv
zt!-`9YFq7MZQZC^Wm9lz#T8uYR@)~CR#b{;)qLOQ-bAp=^L#$v=lgp7et#5SCv#`!
z%*>f{&YU@O<|f9CUCD?Th7kj-R)#4+N`ET;^FMqzFpNi+eICp%*Y95_aESf>g#>m+
zwmdUy&h)HFv*c4I&7M6+C!d@y&(hD9&zLQb7^RWVnlm-Mue*B-g{|w{;xOsq&HYmC
zaPUyK)MDg6JJ3D#2c%JlUPvwD^L~6vcvOFQbKlftq@NxLO)W=S_*G_V3DTHdnW?2n
z?;E@GspH4J_;mD)DJ-@9<BZgi3=``hW<I!}iniBXW26o(9h@0vB1%>YrB^eM$^e;^
zR|(I^6W{31o-z!WLU{Od<Uf(&^Y-*vHD9}81H<g1r)vx|rZr#m|K=l;VOW8HzwEEC
zE`7cZHJNGnAo?cSQY7|2IZFFxO`W8h#4sb2C`F&VVo=)bPleLH0va>1H!5}j<hB%v
z{ZGX(g?+QKv!<YcpX)U|$N?3AW`8PSlx8LWJpRLhe>m_D2max}KOFdn1OIT~9}fJ(
zfqyvg4+s9?z<<kuBu=MrGd4)`4CpD5%TRbGbBh!*P0nCOm#IxnvU;VyqGGr@V?#=c
zZbI@AXU6LFMJ7tB48L3TJ+(}-)$0KA#zK7?<87TZnPsz7jMm9|&QR)B<C3g(u%1gv
zX(*BDeb~Ji!s@k)uy5<!pTj)joEoL)#!VO>Sg1-XN#tq`wQicEWNuJ7umc<Rqh(=;
zUZQs?i<IDi%_Olo)R|tAl%%oh-K>>{Myo0EvDCPXioH&tm7!6j?_kx-t$G<SEN!e-
zD@X#Jd#is3lA%$pb5#rE)btC{%cXfY`7YhGj@CrEu@Lj^D-5G`e0~&tcOHGWfX;q_
z30H5lwRJ(;l$7dskp+^j1%}p&_%d^3z1phxvFg38UKOB^Tl|=c)M{|>Eb<|GPrWOi
ztMFU{#_K(kwBjTbTt)#nLFHT(W(vMbsqbL)&91@VH9eA&lC+K*t5*SVG^R+2wUUdJ
zD39pd5gtvS%@L%MC<hM$3n!$FJ1THF*sxe8(QxA>Ny$><T2QSGHb<6g8MP&IEW>b-
zZl=g`F49wFiafzZdTWDOCR@drBC81LZeWAjH2!Rq<-v<UUF>5h^)VLe+>BOTZ#8Qn
z!a5R~SZz5nfMJwJz|l6SbXT)yi5fBH0%96~qqdwK!9a&nbp8Uuf#wJ`?E)J@^fHp8
zH|C<ToJ@iIO5LI`<5J9c0(ZnVpWIqsXb0%UjAZ6m(Jj9)H!fc0S8TAf%?(k<I5{VC
zji$Jprp2{p@yj}KU}25Skp7sNW?0aINm}Yb+BX5L;UcebKpEi8jqELYDEd8jusX)U
zQEH4tL?w5KIz}Xx8bk0bJ(SehP}tY(Ms%6t>ZFH8%0<Ue>LaR<9vbE&is~&oB|S8%
zgQ#2-S8GbVW{zmz*%W!%Y^-`}wW=+hF%jW8+7#JnFLgvI7uSdx=7dU8b!~)lRszne
zEmy}dOiGFk)#_D<`5V$b8FQW!b!m#UK=OuQMyE7I)^m~d)&R>+w1DQ-@j0uP8td6m
zDl--WQJQy=^fuCyi}N&#%h3+4^yMJE1GRWI3d^@~6Y|R?c}I0Ea~}57i;gg<D*YWB
znq>r$2Euu&M?zSEh10kwH#MJlsI7Co1x%~nqSi8&wvTB=lFD=iF1REChIOuIyj6c$
zZAp7Vwcf@;Y2HcDXjtsc=)Aee$0{`!c~g2w)dB=sw9eK<Z%oEkWQ}|r0wb_u5I9jC
zfDf9MPq{VF@>MdXnJqR&dfJJ72PIGx>7fZ7xVSn|xnGs7#uVpi$)QS;fQ+9@FMA^v
z<+d62`-5DDQB?|hTrSCZn5uIk{y3^)G-_L0s~0g5YFWJ#gasB>uf_yn=**FBYSwM1
z3dYRM>g9HUghN)!aeN6%v?9wa5h8gJr9kkK2({yB>Hddy4wj(5ZkJn22GlTU0D5GS
zlJ#<yrNO<nK#?GdKvs<`?BZ7BHxrUM^6_60s7tZ+q4#2gsfQr{i`0*}QUyNLC<Cnr
z7wtfS{;_qS)hiTpPoeeQ%Wy<8EcfXNRAv2yN>;(QT~lRmOC|yK32RXNWInK9ip<7F
zuna0=^&)~mWm{X3z&M^S81pFgCwoRq&33RUx7Hu)G%2tl$)v9}>FZ4Tn<jm|N&ncS
zZ?t-iftgVrS=>_1uHOYCE&^xFkvG-m$T~nhpcY^OTn1cIvnzqsOil{Y&M3YScr<YX
zsC7tU)kv{zKI=Mzy50&MhW45h8%ML5K;R^5Yb#;s2&&H)>aF@~R1>d8l|;=dP*szO
zc32X8xsOoJQ2Ce;eJ#HvtomBM(qE{&2@cdKL-cjJj#m9mzHuF2A0gD2Qhmn|eZ8(H
zUs=yrDp1)@&2D_gK0%ZaN6j#^@hp^;6=SAqtrhDo34TF76oiA(T1$0WhtYg5-smNi
zRwk?aQ%6{(jmjfBXC6_4p_?*RuZdt6tg!+(YEEK}r+VQ*sB5+YQlK1=Y<xT|0n$!0
z+OUOSNi)%S(h@pKONca(WF3nUpx0_j*aL)Z(;Hv~$w*bb)X?A*>N~fV0{Z4i8FY_<
znL;-#m7skdtzwwiQdzX%F+?M!jWb%OkJgQg)^(1S8vlj-CIxhw6l66r)IlQ&ZK-r`
zq%4UGiUt`)*JR1uVoxYGiyH{6AQ{%T^*nHsS;uAt6Vj^RMjrwxAc4FawdHFRLFt!j
z1B42;4*jFH**t3|+lbJ$CIT)C2sxMm#H#I!GOO1j`^p^1R#ClW<!JParK<0adP`S~
zQuFR}-IPAxjl-CuB}rNd6aqb2;Z1UNRxcHvP0pJ_v0PJ3QQ{O+5Iypqoxt0`!laN$
z$w6YOE=X;Tlc?k2@<8R8R^WtJDyEoZ=RFpL*GhqCpkURavc@@|m&`M!&_)P?{pzq2
zlE{+KXob*7z|qQB*>2)c5JPO{6(O)t&?Q5y%COi?s%r<YOYj%@fr25VYPy}#B$*=%
zlcCobJrsppmDa&D9^6wQqiykS%7cf2M_D<#j~D*54(tKg9b`a8G)UtH4Zx>bW3ALW
zz(ezdoRB}5a~Siqw2BAI)k#{ZR;uAT1=CE<u+Ta|p(Bt_vfNe+I4!i~Q(DjPl)~{v
z|7swBK7qUlP&6SeuyEYbVi_Fz+5)=Wu^dKg%y6VMZw;oCyVy;JwJbG$fegIt#gb&p
zr+C~HOA7$@mDkBEpzw+bA5?)}k@zA}Tgri2CRV7R-(YPWEQ3GKSTBE6b3p<4gnkKC
za0IarC0oz4Oqq&dpV%@R(UxCPsF?sM)W8&Z=FXP{(^_k<b;Od$q!mC6=Ld!9N4J56
zG%LfP0MN<kh8hMD!Hhm633>-i9~!@I6V+-NPTj&B?IEg&AFUNbx4c4$jhm?fDXG;<
z4rJR=Lk98I*~IHfeFX7x#ah%laE;dUT;gL6UU0pZ@vHEQd_0;<Z1hX46BUhq*RS{#
z>{Vo)Uu2`GOvv#xd!rZH#K=y;L?x-UVob^RYs?yIk%Q4e4V|j=u4JFQ7-RzraSmHU
z8o7zgQPM&1KL<8aHHez%TUovWb70m2OuV^DD}hEAg7NG+d|*z{DKc)Be4st3>R9-o
zN_1p1^^{g(Sfmg;E^#i1My^EfhOESq&n$K-@TRf?H!M5LhLH@z<taSztVv8VSVksG
z^X_7BZkIxiGOiD)L7!rXU*`ua_X30obYD~*dWz?1$}*|Z4G%>YGL8<QzxoN9^J)dH
zl98o*rd3JSbNlO{27FTu&z59}NroZRmUCzZ9n!GGgQntxLa`R&WjR!#=A5z66rqsm
zTH^$$bB~6*z`ky);Yu**fSf@z3Mkf?^AvJavGezk8Q`^*^fXW5gHl0JK>)A5I07^J
zaK3|H_73FFIvDU*9n?4#h*1uq)YED}Pb3Yl6REFOWK-xQ>lutps?5(J-$p5&ULzEq
z`jJ|PKOu6Rh@wN}0VcC|z+Lo_%+}c-<S=HI^ReIsD~Ic4IgUqcPSttn`Y(rtrg*dO
z+6LzG$s62Hov1Y?chVM%2|c8wXl!Hg{DA94t(MzbsW1n!_ShwO-j7xD)h1gtyOLJ7
z0xONZEU2cB)oUGZi)DsJM|~G-5Mfw@c$5>Q!bG}VA~JL)vwE#TgBlsX?+Y`#8$)z8
zZ);J&_23%K5em6RZ8?Q{Jo>6FMR+oldgd$=w@cNvLYX&PPBO84By=%Pj4~g!Wi@5#
zF-2`-C_mep7%orY53RNvB&BTu1X`1mS&|t`>JAChdVuWoVy#1sqgIs68!ePKGg%YT
z5Yrf!TS^N|u*kW!<VeB4)C68qv+ePkfQFUr#eO*+jtUv3Oy0+J!5N_s5H%VN92}e@
zBG;F}(ZS-wE~2ludU^ABQsZM3QK%#u#Bh-^9D<Z3HcXv&u(!_B9JfARZ7IMBoA!07
zaT^+NL1e7aCp?_T@UB@4uhZv+l317!_JB}=Lm2tPJfUVI)o8HOJfl;e#=3z@K_R%h
z6y^Q0$XX|q=t9YTP6GKjNy0Ys)arW*!>KiF4z+@PujJy~lGN;bLe}&KDWtWMZ$nnG
z+4M0iIMg)rJP!~vA&oC0RIS4poZSn=GMKWn!+G1}hUaId><Z>BSg*N#$gJt&V8r&}
z0qVU=ffWzqj7^8FfpAgaivmH!_S#yZLe5vvs<dQC(Ar^4^<4B~!@>e4Z|={%)STiC
zA$LIGjSl{9mu2~Fl~nd7bOH<Q`Arp8qG?O500v7$VHd5w3%)^bX&RhLGN?azqw6z>
zHdLwc9O|AK0~?*sX=(LNYW)RI88?X3H?YCfhy2l`Bwnc#%bW&aK?4iI0aaweP&E@X
zP2>wm`*=H|u?&rd(JttM#;GYfcYf(<EIm;Ot77R+l^dy&Nwl<i2yL>=aN&(T`O5wn
z;JFn(6d15E-kZc|k)k{zxECph$g9wG$U&gPi`@Y>Bqzdg4k9GWR#eg96y!2OfP-Cc
z!(iLASD}BVl0K)x_tL=D$SuXUDb_$ohL-GnpjvienoV82gPdW|7#Lv85KVQ1*;IRn
z(RkoRVE5iNmeJ4!yJhsGNZOm!TZ&-SCPGhbw2}X^j^CO>SpR?1pCkIi!ZJ4KTH$zU
z3FCW%k)f{Ws5~Clg>)X)Wm7PSgl3V)O!kuo6${?Dp*zozl+A=fehD98<$~y(PaYs!
zRe%ThX{D4R(0HCLpeKqZo@ciRkMM=qHNxX#Jmv|H_15zU(D5F=o<eFPlvi}&h}P-`
zhv*x1AtCz5x&d_D><4GYFYssxjv^C5gmi6@Nn%ZukS|N8G>a$kxs=WiiH+Qm8j+zK
zs~amiw^j|c;13g6%YhBaCTtLaNBQHUN*q?xAl+MpvlKUo%&|IYKdoPW4QgycsZ9Eg
z7IsqNvjX(s$?+6Z?0Xdk#?oOi3OP=OYi@?ZDWr7>UEmWtgq*FzTy3ind0(}4jY0=}
zY_;IG7-+O@@u=2;tmQdme>K85pWNl+S;9`*L<o?1t0J8J`0a<AD~4Z~$DvC>xHNm=
zR7zeF4v%CKu-!x1&Bk?fGFN{K;>sc))5c;wFBF2<^-uwB5Jh%CCU0x8#*BHGt+2+-
zkzd$0VL5eRJr6W^t6Y#LnqXttN?{iusfjZ=*7KNYXa2z5tOgVbH6(d|p^a^~9T0(m
z^b%V?mhQ;X077GHrOiLitz7|vG)aM%lCf2IMG(#Ih4dM80H1~;)uFSXE<Ra}0KfJ8
zCaN+N$`LllZg5_34X%PvuFg=ZP~O)E*bc~MqYk!@-NMg|x1vIc+H#%`Jj$S6)sDn4
z+#*<>f`$|XKT~WAiywv?RKO1gf2UF?2-;;YXd=W`M>O#q3>jZ9&0CNDSRKZ;3<&2>
zOPP2E#W+rQ?LZ$0*K?h|zyoH*uK*lhwo*B5MtTXN!PYYrU5N;GfFQ})!i`I*ukn)Z
zWxiXD<;GBfyJ9868(PBJ0xYx@mE<Ubp#~bu?cZTu1xo<l)U;$L5<!(HO(EuaZKQ57
zXZv+Pe7pwQ^}n_VRp=FV0@C2>0t=N@Iwg+wx`82)jk^Ab$Ljo*bvj>u$@8l{*&+vX
zXwBnTMNw{}Rp$unjYVJ9wCH&Y<^3EzEB0X=h+Ic0Z=q7@iFkFMjTIirScM9Yq#eG(
zBP<l_Ej-rYQ7k;xlHEeYTzN&B_dZC1$&%*1#XmGk^Gy81V`*Lv|4^@6NFlYk6m)xq
zZ6s-);TltvPjy4sT4Dg^#@?id&3rI3kwQe9DJFWbd<V%j3DZ?u2Li9ra72dfCif|w
z2eW>L1U6G-7strW6#wNSYd2FAm5a1&ric{Ql?XnDT}Xyn9|%cICLj=Tx8!6*EOB<F
z#o2{|mk4X2PIz*|(=(KsOV3uE4^}OI$b`+vIG|$q6Q&NAYmdhumxPYZarMdZ$y#x8
z^1)P4nM~mnH&_K_nJ&oC=%n}2%97c~`@x0g0VlYu8_;z!Ye5ZGQY^+tLplf@B)^6m
zbQUV7p-7L}c$3`Dvp~e^vgg1*;L`%xOyM(fJaJowEZ6A-KKc9^;Zx0SL0elxayWrm
z&ST~fCf_}RJ=6`NDYW6R>xf=kiJ>$aYk<vbR%A1Z#+xvyf?Z5v=L_^1O65W@xDmG*
zYStM}J8teU2vFgc!Y3u>Km;ANG&I@diG0iEEO_Rq8Wz_&=zVOhS>i7n-HZ+>4oiU{
zVGhmRAvRbbN2pO-ss@uu^;QujWUKk(qd#>;5l>ljl8D)!e<I1&4hfM=E!6@&^;jZy
zRv{2ay+dg1O%ykY>l&Zq#f71*L65;}vID$pg}XV(!BDE=O%2)2rhZ5P*j>&0Qd`{k
zxyV%qw@`Vr2?6>4Vlp^V@QiIf5wMER2)1QVKyePs=YzmPM8=Y&dE216_Rv^fjF4gA
zH%N`UNT~y@A-q#5&Fh8i!E2BZcZ8hQ4#?&VqCEUfcVuAN>2$zmeuoe8R54xC;<~cP
z`l%=}ErxA38*51-{K4DO4m8*b#sEQWc@%0dNK#vFBf|$^K|YpWN3)rl#`8NLt0H`>
z7pXkdCK)lhf4hOY(GEq9uBTef2B7V8Yqa^^%453OFy(*5WF40>v{QLK#=sb#!E_;c
z`>bHSOp$e#=m)edljn-FAg)ySIcpu&NtOjzub`LC&faR<uqw6=#^>2&+-y5>O<TU6
ztw5!rP-Ux6Nf9>W|NRcl3Og|luw-Tsibc#>#<TlZy2n8O!anLrkw5;ROWUNOG$3co
zpjx1iq>!iuzYPc2Gi(k>v&)&hSqkWZAr>#_!Z<SBHS_tSUtj}#Rxfo@QxFV_AsjJ7
zg2+ABds@`kZJPS#9YUP5NDX;hK6K<T<`3~w3NHS2yfp1-)3HGBRIm|(6rBIy=eAb6
z^Iwnp=Usl<MQsNG+GcHgD{ZL!j>~Vuwp|wcX|r7xj(!~WQ)fszBo5o?6WT`Ou(8(j
z5Acy{@SwaP&HITjs1wd=$|7mrX}+LVns*croZd}&SDLpEkHH?&yl;?FIClVq!d0c<
zZHN?o7hV^VpdIW9OrS}Hv?BgujV(awpZsiW*vXc)P*GdZKk>0vgm)3r5C|iwRPj=$
zweljj__BGJljw-zv1L&RD5_7!TPI$zJOY-;l2)Q4Nk^C#ITIZi?Cx+QajdBaMl{hF
zDM_hu(K;eN<S@pZe!#ws=hjl#gpUo|cDNv6hl7)VC=7k7S@A&?)UBQ@MYA1FD6#Kt
z{MxtK2V6*|@rOS$w<)$)Jal-GM%ywau+Y4?G_c|R=jO$@|E&A`bFR}=Y!F(v&-tpA
zCjE;0pC4in&`2taEDQjfO^ZvdXYl?9?iNhAe+=>mI!+l?S30Vgvd9xNfnq(6bxwB=
zz(r98ih$tK8HNQl^-VRigqqV`g__2un%P24V_&Kvf9x^FUoilsH26C3&lI@^=ED^E
zg*kEs#$PE%ok_pTq(5NNZ!L@5g0%rl<O}L}=01O+?ZplN6QL61)*1^ptKbOeMS+DS
z)@!_rnP3m^2C)<;#%aeE_~MTY6d$JhZ;H~PilWP8?4JecaOj~+Mq30Q66SfHTe}7%
znT;9Htup?T@}Pm`Y0$Mbe3ywTC*aR>(@R45lS;ND^#z)8Yjc3jZ{-y96<n8mOoHs~
zO;Wl>`O+RZm*udr!qn(I$Wxkw=yL>>5h{6I2!{#xKLfEVCE{(OAYYgnZjcUye8-zT
z1e6l@(>Q9)L2Amz9wOJR5{F!w7Mlb)B9<?BbL~cDLJx@u;6*ecCc=i|ddEURXAmOb
zXmOhij%wIo0ns*gpG=I6`!Qd>^qf$-nW8Hw^nR|8q9fWCyj(P_q<JssoBT-)%b=94
z2i*u6@^j;Fsae{LHSA54V=6XsT70L%+!Hlyg;30vBTcky48qBe?mIm#VOVJJ;a;(P
z3vUPupRMs{3wfl4cBHNr9|0-WvPM7(x9s8{bT3<mpsHqW&LA3x(e-8v__jlAZFTKo
zrFWo+U5St9HeP|t$4N;xGdKcR!f`~USU1I}gqNH)k>Eg_3)CnB9JF7mP@XOT?Qv!j
zDrpg3-AXbRChO*Ki)EZ%!oRdL&0uw$I|;9+=tnM(c2MO!3|KTG=V9QI&N&Zf>)di4
zX6coxBhKzoHGzC`#JNS(s8KaNaXYJ(&_(8DQod5R&=z_pLK~IujMW)6s>UhbBT6+2
z412dmgt2mZ5H&<Z0mV=)(OAql-!~veO%?~sy9z!L48>&;ED8Tc#x-jt%PfWI!Ep>P
zY6yM>i<L%x1OixS#+#F>{VO1FHD2DJXt`G{2%3g*+u=n$QiO^4XnwzoEfcTb+=2N_
zpl0?P1~<IFP{|FVOFlK;oNI*urdEcJBzUNVoutMQ#j6gTb9Gt~9_#Ulq>)OFG+FS8
z<m)9Rn~ht@LR0Vs5q;SGl^|CrgwL~)JnJf9__OH1R&rJ-As>VbBKM6grxN}cEwnv!
zfC_{#hpjhuBZ|n}AjU)e+G?9S+1dzm<kqw#+=qPiA}vM)bnxB_%;Z^+2fsRUt6GT2
zA~G*@qETz6nZ{S)x*TLf!@{|sYk1P$r5OBqtrYJ(AdCHo%|Q?FHTj&^A|&+YNl+C%
zz*B;p=JRD}W#<t^6fgs9rz(D;srb~6!z|%TP(Z`Ycu9DBB3wIOgQCV1qcuf%88xRT
zGfdk8=l#G2#C=nAq8vGGm%`x-`>*Yt4LODc(cVe?nUf!?*{QSUMV^0N5@5mi>WJ$n
zUE3t~8qY>h)eQBS73Yr|Ye498agqOK7K55*k@erqLj3$J8vhrwNYcKH_#~WOk^t|M
zr|2EiaMO%zlp)w*iA;LXSxa%_1e$qDO)JiQ44zQRxh@xn8LmmN&ML47$oQn;jgS9V
z{jK5qEAS*s(K&z?6c<E9CTqvpFJaCHT2qu|DZ17w?RYgGmxc1AD6gjI>5`1j5;@(N
za19$!0yB}S@U)!hC)jjpUJ5D`latFL6beNlY8NSdfg!gYllTZDXW`vPKFUZ347y7A
zA03i-yuUpnf!(-~--6lEJ-;ppo2R!LVZS8HqIwDi%LZXJ<>>$BbOT0DMAQH3kdr7J
zarg_;&}9CU^Xz=X$IpO3XPca<J_)cC0Xd5l3T8ZQQ=nDB%D^w^L-Qp94dR(>N$(2=
zr_j+R4Yv;@JKo&W#g-)nby)R*R>NY62*+L%{LRI+rp1qODcJ&Z#;f1S?0{lOxH=U3
z0Q`G406FVivBi_R#a^s)1&R*}Yc8?gd>z&*nMzUvxYu}58uOw0{aRmpcoYhO`<uEV
z>UbT*&KrLV8GqUnF%vO5Ad`b5`%Z>ow7wI}Mykg<Pkk^h-W;LTK#RdkdN42OU#M!n
zBHG$lgizJAEOergHKjRQf~YT;cfL!(;Ne}-I+K_SQ^w(~<GMv14d8&G%r_Z(gakuD
ziH(<F?&tvYZ>TjU!dV2H0x1N8H`dXTUcVU%Q!0kpMQ3hAcd1OPV6S2N?0VvX-~bvL
zoux)K_9;WU1#yl#rp$>h`B9L=zfvH5<882t3tERBw2r3njpGn?wgx0yO#Xr>q<Iqv
zA+nJRwoT0(DN(a4_#x=RKv|-X5o%Zp9;z*)Y%TR&g|W~)r@8|^dD-B_-v<}Sxv4&Y
zBFm-A<Y`Isx*}8k8~D(CkVVZ0c`@0t43TTn4v96gwz`~{#=i@vED?@}c;jE1_cawq
zKCa&OhrZZmed#(hA4T1)MlVaYoO&dT@{u*Nz9zjnW@vLv93DI3a<XP<a}3`<U>qV0
zd2<ZU<`^!?77-tfkF-EF#2jMLk#*7)3*b&b-qyL0Hkn)OZ*n50pH>DJvH<Jyxn+rE
zSd&G_2))@}4qQ`3EH*5D%%G(naT!ud?A8cDvQyC>t3fz4c-G)0(OP?bJ*#S7DbuQi
z8rGkR?S~4BwSnGX=J$BqQi-hr_;kaY=85?7e@aS8Qu0AQ+)55n5;Y=!h^0%{B;jUt
zGr6_oa<^i)6w_o*06|@Cg2-69!ez<VWht5{+|{Zrq#3+T*11@E-v>{%hCzhH=(}=*
z8qpfxC7^W+$B{AtaQXu*T4HTV%@F=;EQ_GvylLs8()nne+4UG0TwwT>Lq^<%%|ua+
z6B~;JS{h$Tt$7nCyte^Y20pCqD<PsJoK_fUHoqjxF(|GwaO3VrE(+G(I+XC=%1GkF
zDS!1P4!SVwNH}7w-~!-laPx^TZn$xA5|gC4pGl155+$g@i-@s~w{TzU?H4A)mm3V0
zuI2%<z|*F7c#+i9PWX<4)OZh+<qlq$G@!MvHG2*78Etv(Jiq8JqDEOPT~UFQ8!1s9
z)46l!{gT9fr%Yb--ke{Qn2VEfPkC?FFG^x^@LPf#WZ?n|)=HZ9Hd@+V;^2|6hk$md
z=qwGzzWJ9)E@MbAcfC-NfRMQwum6kH8m*(H%L&^3d|<`VCKjc*yx?E&1Sc&nzUX|B
zivu{wJB)GOkUA<%4tPJ%<SiV9NZ-BK0~o`u?jN6{$=Ou$MDsr`K_SLf@hM##H`GU2
zq>C~|`<O;}nnp-WBfQIo27t4SNn(l?o1)!J(Q;F?uPNH!6dhoS4mL%Hn)3ska8OZs
z;vmA9qBBg<YEyJ9f(Hdyq1F-%M4FGS4sX8kmM15;ztp%Dec}~6&tR$X13dCyu~I&e
z=H(+3vP5oL;;nB{7A4;?9{$J@-;gB=e61-;QGqNM<;w<i$JT@}WRe_vm9k7PNh`o%
z&^n=ni&e;!Crwd4i(O3fB@ZsZMLSjWNIcZ=Fu<giEEXBAOAQYti`p3;N|&}yGDRy)
z^9NW+9EMVH+Jq7{I!CVxL#f2H#3zlP!Gw|m7(4X+jAa`74wxG^-Un|K)p6kiXli<2
zE=Ey6oH}!ji}M9>@%Tm)Pn{`zfW8F|dwlJ<l8}YI`Zhq`$0Oe`EetR%^fzgI=?og<
z>-T^=qAbel4b#Rg9N>4CD=MmXy#Fy*Zn!SGzXb^Bs4P4H<1nTef4ntS;ujO3EH}j}
zJm)%de9CD8&=ehr9%1s;j(&A$e@ti(G`}L9uh2W**F5D{C-g7WPcVfCaN)jbrf`3H
zBddg4NLkTCu2NY6LLmcTXinp=tjKl}oib_sg+p}{cX)Y=4Yk3>LX9+UnHSd37#~^`
zi|8@h&3IIr_X-~IMH+oeE?SJdaT4W~E%nZ2A~(zoSe#mx$juB*;sTPn`C=|S7&G+c
zS{feum=Y9nyqe$*H`SBgtV0@#vH-ZR6cA(Pwi3jKcRmcI!6i^`xm964n+nZ|kr<Ea
zTMA=T>)K$<C$encl}4*HuM|1yp0?cgXKsu#9F|b$qT(pj^Fv^`tP2g{5=UL+pe`IN
z>fpfJiHV7p(F%wm+*|7iXK=s~Ko@)jaa@eII^Gf_RN_X$l%bH7(HAEe?r`<v)=0wT
z#=^32xLk1cT*_1dP%ta{caY|NL0HgYuBf{ek44ucMb#2fQQ+xsyCD1EuJN?gNQ;EW
zIhAumn)67aYmFrqTc+|(U94ibqUzQB5Q?H|F}NlpoiCCYZi|)Wb3M^47Ra))Fz;v}
zSF=D3ylvA(Ov$A2w8VBs_X!Fg;EpM}C3$e#aKjOrjES1U0u0AoO>JmGm`Z;dM;JMP
zMn=EY?NCN+?MYmnjm&@GYN*5%F4M_~F3?01s6LB3r-ssNC`>@%P;XBvJcL3nMs7T+
zlN4DbhHDNmcj2;zQb%2P8aE%_ILeW92lsh__(BF>cLg;(>4AlTx64G1;9QN9;fXxE
z3(@xjI&DTDFL60ZJnOnJmdF$a<>QBW$vzC0O+}H#8)Cs|J&SJ1wDhW^Z+@(zSAK$`
zw;=rBKMX9Qft{Q5E#di*|4QEk3Ou=r+#6Q3HsSjoF>=h&gzxM9dFGgM0*HuE^y0$3
zN2@J+Uuc>+&4^|%CcTM~H5?Y}<`OA=%<rRw;q@Q7*o+f@OOGjBr2|tu|AK-)@;>NK
z6x4VKb8;yQ<5j;*gq_1ikxlbsR50JM3Lh9VJ|%0xtGh;SJgtl7M$3$+vD$-mgE)<x
zd)1T6R&k@f{hpc!gedRL75i0k$DlRA_{Ofc&HObtem?l#t|!%T8d<{;M_nh#)Q1F?
z6mNN54pLxbpypHxt>H8(zlWl`*!IcPkjc@gxEK`~thG{XdEqKh&y<Or@yW9lS2-K;
zO#IXVA@HccU+Est{$VsJe)gc=U)P6=_pwc+D~3_V%d<OR@L-}3(h6Q4q43Wax3Y$-
zKua)c{7LbV`Y2CkeZ>#vsB6zJQb-#Ypyge7OJt`Uh(x;3&`!S8c*O%+*dzoW5Zg2j
z7i9RJWzxL&Y}5D>4FZq;^#l~pO~CiRoPf*!Xab#{p8zZ@2|!|}+)+2`neDmf{y)%Y
z@7(M3i*9gw?8b&!3}Z7IZ3A!fR*o#St}Xad^w8CC-2t8t6wl@q(Thm%f_ZxhTPYYw
zn+VE8EkRYa2YMoN!<)kie?t;)a!A3lE|77_z0QE9q8l>NvB1;Ib&A$S*J1O#MaM)%
z5NND0Od$VCKdowt7jQBBzFL6Y(?--XZ<HnoL=C0G2WhlG6#Oo=lQi!XkhvJ_zxaaO
z_lD~(XDoizWg;|V$X-+@pxW?6l&#?R$1TYHm3<KLWdBJ1iNh(2DMrkDDshH~qIuca
zcB99u@J$EDG7)CZcWb!qSp5i`p~CQ3S+)xLm*9%ZvT(I*A?3!9O(+v#=XloOsI7qr
zi|Se7E)-&dv_aG^LPJqURH9oVo<><i_4au|1XP~wXP&Cy*XLQ({?&YVG@B?Yxbg?5
z1qFeX$1%XZOP#=Y)qT+egb<^mj!6zsP4E-uftI>7?<1H6<w?681Eq51G31U>Em^hE
zL?4+Vgxh#OjSLmgyzQQv4{AM8EBCt#g2-(7!r=l!bGszxEe5KnE7+&%51<Z)Cmz||
z$O`?6%wNsYqe*IAa*OCoC`A@0uEG>Eky6MK9)s9$ql+mfm5Z4;w8$bh-1f+Q*cpf>
z%~YDOblDS{?lHr|&eCP~@K_ek;uB&Z%g)8H%9zybaf1CLE#k?U@Hgbxl}N)%_j)F-
zgc<}MU0z;f5gBfacyV5LnP!UBWTM+J6W?{#=XfrF&&DXrvwH^~t!ZiA!W#pUFW1zM
z&`iS)h5xEyvwk)k=&)jr$uK#X!eh;=>);TKHisvu<I5Pbf7&+Y@Jt-yEn_eZ^4#Fl
z;alLCuue{E4=&0M5`KTEtWEh=Q2qtvpK$<NJ2)_r(@Yhe3IQ#K))<A0Nw9fYTukhU
zZWWx{D(Rkc%5zW$)!a}LRv7xQ2@A;Ng^G%snnaNmZ{CjNjkfbjL5B+ZInD4$mOWa!
z=X+%}saSRo>hm^CqrFcQ3Y|s)!?vSkU7UvILuu)Qq0>wWF#?k@VKBNn8Uoj|=+hkU
zsJz8@>&IEC<28TTv4CdpyVBMzRs?BG-emM9-5VP-8y)%ccEV63!iuHU`YCvZ8MFdV
zpyEFI5#|vhWi>n$+j><rjo0L#gLI!L9+B5)?EPmfhj8U%rOsXW&P6p5<`FLFsTWaw
z1v38Ada(5Zq-MP!CdK!%)KJv2$l~Jn2*(S5(8!4Ha0{nG!$b=wicTpjg|)B_6}%nA
z-p*OMg~Z8)nMj8XH!WoKztSS*G!wa)siI>cF|72pUqPio*%2!gR^l&}66iL)B<lzr
zg<3jTifB8bZ~T*D>c}y$d-Iv3hVP*_Oowb@0_B%eo^UWeRF^NCOJ$l2S_AmPjC}=+
zQO84N%NSJRbTU<Kh9-<gBtre%fSy<hbj}Dx=d>uQdr@b25bU+V>YOz_7Z!_N8O|C{
z$e@N6j;~2g8!SQwZpg_-n*vPp#cESbuxVzfWf5cx+yvp+#{~!nKAisO7*1{faN?`}
z7HjxV>&X-A=?CTaK(?)?yTG#R{=ZpI_I9+M&~{#F-f3yxw_rm<ah=q-0}tqzR3A3!
z7%==rc($)gJYr3rxrIroimGLzQ&`-b=PG3VaXz5_q<i2#orkK>O81#N&ODsoe-fIA
zL%%>DB`W3>(SG<m)@%sUOMV!v9z|ba5Z-*COBKfQq3-8xMSB%3InaB?f)A`|fvmjK
zq^8)a=<wSPGpe44qd-HkT!%ciA*OmdpI1Heg5;z<u_!d$keW2nWg;@QTud~SJQ9nk
zJ1wSFsD8%Z=s%m5OTf2JB1Q%JMaMt_3W>%tktg5dm}eMjGH!NZJQJdS^FhY^!6>Sq
z8AW@$XF}wKw-ZDB?}VrRx57(nIxnrkfzCGh{~P(K1@r%(<kwKldl%0f4+)87H|-{Z
zU`aYL5xjs9L9q#FxLrWBx&4m?6k!ukgiS!CG5q3<@%K9hl@ADsiI{75k}cSxtNWn)
zGErL^H&%gzxioJnQHE9Shh-1}Zzt667=lqs-sPDqqs#!2#+TNC->DiLuLk&?5+PWH
zJgqA_2hjoxp4*-~hQJ+;v(%A_>d=NFKt4oKlN*JT8JQO}!IMT+<1EMr9r`bCg-_pn
z>cyYVUcNNS(BZbeeDqLG{vbCSmP#;Q)l=|@=t|zVNU8C1jViwt-`0xx*^mZPCB>1X
zdFL?mXRbZH)nnsz)Bc3`QFDJ1O!PxfASu>i1oi_gTi#g=Fll^X%fn@y#+wG_9gYCC
zuBBgj{AkOsa3^Y9`Ny5)vH$U)fujj=1wDcDT)DodaC|_F;<*C^aZq#&rMGa9po}uc
zTj!46$fv1*JZmO49Vy!L%EZrdHUB813FkMTFqQv@2`j^WbQ;?T1sFka(fJ^r^!2H=
zh^ZndN<m^FP)GX|WNwOgqxqN?h$oo(o8o0@*dk2f!Q%^{TnvvXgmO9{OEEt%o~e=0
z6TkESp_h0WI$0n_2MA<h+ngDy_b@2E7x%}86QB%}Ar=a8P-e76af^=w<Gk0VOhjj6
zqL1Rr0)0B*C5gF_GDLqvv7-iXQ4+sfT#_eF+J{AzCR_w0d2%s6T)0GZ5<|uK=z{RI
zjs6fUy=2r1Kl6i7gI^iKQXSx3)=0S|1aiFnDiN)@0M8ibIto=q1#mb;i5^_&cr@^|
z;kwGu*iyQ-ctq}v98iQaU`(j-wrQllUW~q7=qM-Fw+H=jQ>8|i8iA>})Ugqb3e19^
zKohI62bB*~G5v?Dm{WieBUH@yfC(`wMiC250DK&$VpJpX6$3y8;1XcpDBOLhRm|6b
z7vojTfYB<ZSE7oMB&(RQfNf(`%nK=K50H&jF%5wC#;KSsfQNt~XrBNu0^S4I1L_p~
zm*Dz8n2VxcI_l4jRA8U!&8aXaT?-*5e+s?;H`0eo@{J!Y1nA46`0xdO7(uvcNP8B7
z1~(+quObv~xHO?l8N~LV)zO$#k1GE46{;}QhSGa~C{}YaM5MV?MZySkY^&cn)(0yk
zfXj5_R5GsI@Ayb_UVs%EEBb-_FD{boQUt>N$VGFJ1Gw>_DDdUt0#M-3MXHhW;o@SE
zQ{Yj~#U(tuA{fIh4vt1eu&o5a2J$~VsVvm+yEI!a-80l-D0lqKHA9JnJ1%PE^JlIR
zlBki&C|-oG-E}+3iSwm<PN1Pox~K5W9ls0U+t95tecV=+)YuL?6`3>!6eJ+L07nZ~
z6mY`euS9n%<6{bPPMrJ49`px+DvQGJ6y!Tszeko`Xk)l0rJi&Hl~viTrF*nIjX(2L
zJt3;fzoWs<{0#JjxNdhu-($JZNd;qrH2fsq|7>cZ7+vufQ^T|d)3gFXk$qY!ep;$O
zO-u2oX>FD1iks%4tO8xQ0eChG&@W8nujj^($5mq@Kl@c-ZXC@`CZd8n=rw{n;#Z`!
zP}oTNI{jXPpGBFWh?Xv+O$PP;n3B(MT%-2JgRkFV5ibm-MQT_Dj`<yi02AoEvpmcp
zEGjPFS>I5TtvsBq0VeQ8<$f8^Cg3P7*;8!TeEhZv-#!S)N*Io&p?*Y70y<W4mL{|s
zpQgdHy@jrtYB7Y2`@xSV4)21^eaWnTQt<g_pMCb=26yY!?Z}lpYQFRGc#xUj7WOlN
zFEQK_foSkALH{EP>8y|dMNG4y!&D_W%vCQR?huvlQ4<Yb9k!j>={-x7J)dAI35IHs
z;h`hx&b&*o2%a_!p(p3%D)i(`+NH$KmmROvDF#SiD}uqUi9~BP#`nhFM!rfJL%|`=
zQsYk*C?rR!#(S$==UNuYkOy2tS14*6ZOHRQ8INCr5QN$7FskWCO)hZ9?W-4^M0aa6
z55*;fIm&?o^4LJ|3wni4bYB3|;CIA{qAI2^nQ3wGgf!FmP_n_Hf*CT@F5=cGXg9^r
znUHH9N&*5z0BHTkYVeVei0_)O01}>4lkhQhZhOJM!6_h;nP!cMjW)-|Myr&?S-0`y
z3+sW(Iq$cJ$nXZ2w~fEk42x2u8NG9i;dh7Zd&&~3nk&Yq%y>y3!sRLG_{zzqp~T||
z%%%z-?hfFTo2dmSGZc$WGE)l!BQB%wDKPwRH5f`4mC$dmFr=^OUx)r*rgQ|}HlQ??
z(RZSBB%|*@shZKZGaPX;JeAI^sF6k0xEqc*)<_ITL^UGA5pf8<tc+it!zX_n;EFND
zh-lGizf<#jU;~uSy<<F`j2{J9i4m7{#>VG_sp!10v*8P>VC<rjrl)Ce1!m(v=^%GO
z;1@z1;*4pc1aa&%E>=8pn&=pg=i=Fj4T&=ig<?Zv=d8=zdY%gq$fdafAUF~ibKRtS
z6Cx>Mk&pp-Z9#w2OyUuIA-JEAVNOWMP$^5YD!4L(h1rKa*Q!%S>)MhpQn3VT1f`HI
zRWVo+{xu;5Y83UMFRDY90}58!bHMVa-wdc}14+;zR856#gy#Sh^RlJ0upCnHwC@=3
zdjoF=UNTr6%xWv05z&%Vi4M#->J8dKXH3IPGTqO5R$%X69*Y>FPNA5_Ib)sr_dcE<
zt7s+NTdq8|*bSnWVVV(&)-`>Wbdl~QjDS<umb;OYIba$mmH`>6LI^zaMB+DswIGb{
zO+x*S+fQ`IxhK3?lmj`!JYX%R!-yKqZr{Rp!p}|m{Qw^+MBjjZz0D)6wn-Te>zq$n
zjED7)U^-fwqpjV(hncLdaSXgoBtvVaSz{AoA)$m=26I;EJ7e`D+<FbYb1M||B?9ie
zbgv^KiDBRa*#=MP>#mRu+N(feaJS!-b!Zta&AX4S97}*Ue6m)=+z1foWA@Ca>G&N-
z2XdY;vuDdQ*OZmna<eWWR=RhvUm3pAA|>3gp`hs$>ar{tAR4prwM|7-fr*D21g&*I
zSH608uGl6OIy`XapDo*bx0Rd+E`2=nBUU*;EReKcc@b<MWDGrB=~z7sv|<I2CM+-R
zU1GdVl2YN$t(8pxy73ra&d19x@xe-AvfnGq`Rid%?xny>Ajq4Va24Ef?(i84#*vxa
zUVo1LE-U|n|N75qVw}`0=EaDNr>NW{1;aOjAgn`EE4(j23z2+gG7Nl1@bEB-SOXs8
zm)sr}-H{0qbu3^#IpJ_waL<wZ@Gh=AvYd0PDHT1;wc7G`DCNrV(*+Y+7L6+*SJ9Jx
z5h`thFiMHxcUg8IzVh8ty2n{m9wmAhqyO#s-ng>B(+8=W2Mze)Qmz<%wJa*h{e6cQ
zmd9(yKx@HQ+h(Ud_$iUQRdl;0XU(mls)BK}C`DK=IOgC7OZOx>;Ac)Lb+n}-TPn7t
zPPWw9mb%zdi7j=tr7dh}OIzw@OWkd$hb@&-Dtd@-LgP1B=8*=|YXJOA?s8>^c+TL4
z=)r?H?vd0O1%&bRo<#{}1g=P5Bd>zP9wz?(bOMGNnSBoQV*`H>)pJwgrNq&c8n{PX
zS(;tyf*L*hq;KHgGd4V^(DmTu(@-SR`QWCkRiN#voby?$hTX+od0<J{Nc~mAQ+Z;t
z^tFy;37;0-aSC*xb1*dTGUxw+dYK9mKFxWqRU2^eaE`0ODv=e{cvBsE;Znqb=lFLq
z0zHjt4k%}!Ll(5YVrz}N68PPm*vNNqn7fEo`-ct=3wQW|;<bDaC1~>Bkw6_hPel_6
z+{M7de<Hy~z+ujxCjspP4+oZT6?ouTVP^nM9*ha}<Qc<NHDg5k|G<YP3If4|W(~nX
zo}j;CLX!}lBZI37JohI#2vRu5`SWt1DV+P0Fq()UHZ&1I3=zgB?I1B8rVdIBzsg5R
zjkhQs|5Th6&7Cj0<rwJDM3umgMT*v3=yxPv5cZ_0SAn7@fuVMa48Mv;aAo@Mj13dU
z>$(d5$G=g{n`sX!#-%)WI>q@k7RTYE{1@<GXvwz}S4$|k(S0ILv)1lY`OgggGn4<+
z@t^bYNsA<Y5WUQ8MlV^Oxz+UChdzuBe0g>)T>Da^19zR1a4NByUP{+m*_;h{opj=C
z6*F}c%m$;LYU)m@p_ava>ZWuHHjnX-@w4Av{um|2;GS?1q!`@CP=YTOqL6b>D220w
z_i+_`PR-{w$tlBZP6eW+6-;VKCwU3JUg*ZAVle#X6?JF%2}7}NJ3xX2AC@1G-4sjh
z>1&N^@HNh8Wcc6Rid>2B=WN9B-4hL2F*RYR37v!trHW0KObi!*FKXrt?y7$|3J=Sj
zUoO#!L%ZtlQIWV=k$mnw)A$N=<Q8<d1MM0jD;#w2gd)$@c;pP0&#fZdn%}f7#?Wtc
zS-t3+S!zqzS^5p>b!bydV@2YJWjR+<Tt4DD;4;13%cWba`h0vP3iT(f-RqE8yL%J8
z*xTsCfw8y?sCZAZ#M(Uob=K~|_$2wE=AXa+A8}wGE+>a>WtbNMa)1ZmG0JKIRe*8;
z{aHR@m`4Em%RpHIU^!qtAOf%mFcB~SK!5)5_JaW<0Am0dfJK1ifR6wN0Y3n402%;o
z0i8c)m;gW&U@U+IECM*Au6{FqVHZ&M8N(=$rU3>3EP(TXazFuKBj7DS9$+@01=`bJ
z0@}p_1_K5Hd;lH*G2rnwhPem01-J-EL)mP=tAIBE9|E=m4gh`t4E-E*BlSSq0iXZ`
z0A2<-0)9XrrGO>iWj^37z<R(ZfE|E+fKtE@fGWTZKpo%_z!~ji0B=B7fIna$U@#yG
zFcOdim<Z4Ubbv*G*8y(<J_LLM*a6rFpufrJm;Ty9Hex`-Ck*oopbBsTZ~(9sum<ot
zU@m|KOavqV1_NFM^Z<AQ#DII?>rFrfpcJqRuodtgfc}1fuIvMBwdqWFR{A7edc=&Z
z^eMVISqtR8-LrcUUfiV2q#5b+Moo*Fk&$jI6>zBlwV5+!PybW7P%vZmv<!3_IeV%+
zD_y70nw>50J{5i1%AYH=l?|UgL-%6yivE3H>>G$SsYDF^Cc5B5q6WwqPf0e@n%>=#
zWC8*h#<h@<xwOFZM1UOmjYtVU2cSa!8tR?#JO<#6{7R;cixSWC0l~;uFs)p0<so4K
zzR2%DiVh_CfN13F&|Zw^1b`>wCHV>M{qU><3_yK3+QYa?FiVL7`K?F^KMxRryany4
zKg>qrgZw(i(?x^lMSxJ`t1utjkxDWE{>T>~bpxyb#3J8__98rw2DHZbn=yVjJZAx3
zM13j7Z;9v0fUd}ILFx#24KNh>n`jRPO2z_khvB*g<A>w<Rlv*0pT+oX@T>*&Mt&Dk
z;^%U}2;}S0-U-i1fVPYZQ)%M@=}6`R2BQ81#zzoHG7ZoJ`7e+Xzh4JLAzzF3u6RxZ
zbVhzX#-D=cC4j-mU&i=|en}8Rk@Q9W08$UY8-S6>Keov~9{E<7zriN|SCH?I`eO7?
z^iBf2fc!^DvF%H80b$7BKt0iu0%(u?TQ>PGKt2Td(>D3fKpyJv`VCT|*8~`j{5`ZM
zc_sq97@5S;L6E;5`5@FEv&lal`R>SnhLrea1Vkc#3++k%;{lzJf6pfW#mEmr{-RC(
zvyktD{63_lPi8<I@{iD-<WD-&2J<hm$v+!;$iel9P5#8wZpeRvl<*CJaO8hMdy@Y+
z0Ql_swoU#Ekyj#r-X{N<$V0DP_aG&G;s7zoH=sSuCmGPLnf&J={}Sqdu*rWq@;#B?
zj+Dk*1{j9?uV_#FoB+VOb^XvL|E0(eLH>$O{&SG;hx|dLq)%@GMj`+7Kdk>E^iT4i
z2#^DR6H*3{15hD<9rYytF#vDmSJ~u0ANgS9Pub+pBJYd**GNfT`G9ET@1i})|L@lS
zQJegy0!IP-ZAb|}4-kPo9OCEJ|GPH%+t>dEoBT6??+^TMk-7m^0Ai7Ui1sAUzgz!@
zZStQCoUXwC7^x%RHNa5he@1(f$5=oI<k#Bd|0?n?BY(~&e=YL8k>8D!__-V~0{P$2
zp5*^`>;HS3{HFn@2k^f{O8kBu5QY40v?uwe0Xif9fldBPkROcvk2d+wM!qld-y!t?
zya5=A{FDE%{!7q5(K`w70`NB@bpYf7!jS(7^+Zn!pgr=d|FHhg*yKM0^}SHP6DiSa
z0t`p~KH8H!|8D&sx5+;pINgE&Ia1=65fF)d4ce1FjR$l>{(YPL7b8Ci`AatW&qBTr
z^81mx1I&Op<bOwdlK<bW|1z8WrvRrL@IOUL_y#~Y^8Z46lK(hBN95nJ$$ug8O5`hT
z@}G&kAM$&Vwghm17~~(IJ<aFu*8fSH{HFt_C-A>QO5-g93`717+7mzR>wkky{`U2M
z)h7Qr!08A4LrA57HvyxNw=y#P&Q3erZ?ti0#dLIXkhOAhV%j@7h`pS`m`+X(Dw&gr
z@pf`>^mKZG@o{pHw{~)6IygB<+B)SjDv&O7azy)Fv~N%Cy<0iCP<v-Dr%BX)qRdH5
z?M0qW{i%IGYbSSV@7C6-NNA7$|DZLQ6uh$OiZ|9;FiyC`5i@R#h;hf)c0F*u0>$ug
zrp(DAXG)%tK6|>3l}};Qr_5|#PX8gZy_Cx5PRf`uRX%k_wr<kwDd}?EoH_Dold|NK
zCsDIM*H6KJ)ZMH+V}>q0Yf?r(`)E}A$3C;=+3E09o|R9Y@r=5x^i24F&FY@-PiRRb
z&6+fOfqhDIvYN=vUNCF&oQ&*eeG_>$Jo~WE>ayWsrcaem&X_Z0rX2@EKdToibPF;u
zK{kET)buR*l&mT8Su?U{P0~$a8U5^;v**m4Ew|Od$(-J73_IWLE$w_4_&aaL?5T6+
z$+Ks?n*OYxDRX9JW~FCm&zLh?J}X_v&Y225S)yXZ01=>ZG0yma%Ybq~0bnD5>PXJB
zGAHR~Oon?rH$96wp}9=fPn!n1)3dVXWC?T2M#+pRGty`4Fvu+U*bJ`$HjHc?9Pn99
z_|wSU{zKht&^0?9oSQmhiVovULLYLwGtE27^6)vC3$kWRXLa)aAt6D1UJM8blE+QT
znkf&PngMbs1R#dSIzxLU(BBr&U3chfE2a(84)=~-m~M<86UZo;a7M#SVX_$mvzaMj
zeq!jYO8S%i;a@AXrGKq$|JtA@`sZo;=fw#BWXw^f6zv_bMg$sY{kWrLd*%hEKNH4G
zVse=x#=#-i!NJi%<REr%c91x@ImjHm9pnxH4l0L<&BwQoX&;M5X^VgD@Xs6n+T&jb
z{OgE+KKR!O|L|4`b-}zH;4;sDlE<(6;$7cuUpmX>&3bKS(8p7%H?N)g;fwi~Jhl{E
zUeLMv+_n4*r{D35-Q)V*qOX^@^eOn)s!oSiPL=KLbWgrR8~w_+_pgK<%v*f+VuzZW
zKhBEZeYU>Lc*c;lE~8E1)|pdZeK`3^?a}n*qf#9_FJw4RnKDTF=r?zXxm-S5nI@YN
zdoyg}xvW>Fe{|}mD0J9aam*8=`{|jxTYUUz>+Yb8b>9p<e{}yP)x!f{{FG7kqCWL%
z<VpAQms19v`uvN43q4+DuEgiWSC+S(RB>o`{jL|fmF`S>ckRBD(vQC@_^`mySCa2E
z;hPI?M-<g9zh1UzPQO;M?3m9xO)47HXWE{XVVCDRzjDdpfc*5j-m-IdOvbNY>9Tu|
z^T#(2Z3sMDVEO2%%lrWk8R;8aUElUz=W%_%yLM@xL9-<9WK3P<kUHg;`uLeMCr`@o
zsR~Fpj$|g^yS>&qW8udR9gFHEuO*jCe>-wvN4mOtZ|hqH2f0Q0-#)(D>Bq^#`&{(8
zzv#@0^w_h%kD2sM+z;`)U)C`PHs1)?e>Uvnt0OAcRt=g}dTPt>_2<uMt7n8izA$@0
zRQ~iYD+(rF%<dzO__>oPa6)X0&yFr~|1tCxC-rAxjy+|vmIq&#yB+Pmn@!$noFjKV
zJMG&IHz)nz@$gF8x}z6*bzN7nW7pQovUY=ZrsTTs>Z?rsZts^F`wHcTg4=s`9(vF1
z#vajor@z*P3_Ex0t9hqC@al0%Y-oEqyLHPcKjkT>t{JSI<-T>S_SKdrJ#KzrbzR+a
zJJaIp4_y{Vtd`cD-Yi+h-gD^uwAgvZ_~gkCj!#d|d1YWm`+qsloISVW*{9e1&X~r&
zdQo;_#E;YGT>bXp!#fAx2tT;D-MKe*Otfr1e}2j8Q=3YQtAa=0yE^Lb^!=x%Cm;Ca
zN9Wx`Vg`N_ebLXoDz;;buNp>(22Olc99D8?;?=~f)3@GvV|M=q2WLdB*g5HV2g9@j
z8&A*aKJW%RdhI;76QW@)_kY{gv1`8`PKgJV`wsiI{O+5##_sYHYj>u8YOO5pf3jjX
z_u&QqPTQ}H+fh9A{T}zG)UMyG)wftZ%W<2t>-r%BJ!*{8U9#FFGfuCKIJDOD)q)$_
z{k~op+;NZF`){0n%l+WFpZDImyy%6ims*}ZedhI{H_qN|-1#Fr+i<bV_iYd6j_dJl
z!}WPP=FA(m*ZY^TlKf2kCebma^R(2K4y~*oroTC3`{c$m)|rzcPiC~8f1}05Ur)PN
zCK$vci+74bCiR&9>4UZtE8>RD7=CHq?7<_nr?y`nd;Y?-mRD7E%Bq(%+Yf9z{Nes9
zOHY0?tlGLez~|m~-z_iRcPwD_PR%EqcPX3(R_t5tT={*k<SPk>reEmR_tj}T3r0*T
zb?nHFU*k8Y_e%#`?%MQ*TS>>OPGik?9N|<kOj!Sp?O&Tb@Wm2MA3yQojH!|J^A^AU
z>DZ*Qx5GwBmR~3zzQ6d?a?71Z$1l|X<Th&e7ja9r?|!3?;lq<Y>z2j0E*>H4c0qF{
zvwr?tVRt4aR&MX>`OEH?DtE8*c{|VGl(MelYlscKf9X-59q%0<xNZFSdB6B%WLU2b
z2|N3t$Jp;bQsk}u$!o(3dDJ(bPMWvv;3wBDcmGv!-=Z*FDM|n4@Ws!zj~`#NAu7W6
z#LPJ}o@CD5KC^$wow2>;{;n=9X9fGTzCSSP>NhUqkGztQc{?C|X8nWvz4z}a?*EZ~
zm5*t_MwgYpAK1`tpE=KC!If>@gYSG3YF%(Y`(U(1ySU@wu+ZLD#yE{yP#3Xea`m!4
zql%CCBwTV>?zKj>-@|OMbo-?ELhvE?!yAKR>-WF#=BIDB_~C7H8&~E;YIOg~NN)0@
z*~c{3=Ov8azt1aU<L2{2%=zzlyuC`juJTH&Z70f3Ke}GK`uL;YQY$BCb^2w&%qzPS
zR2%X}rHpCq(YAdzFX_e1V8#1k-3EO+^GW(IV}DuH-Sv3#)ZmJdo42oWxUpfm_X{UJ
z4V?JoK<}@vE57`-V#uyOhSnQ0zHxp1b4B#gTV9%qUQtVaXXmBgXjm|$-`;4&KwU@I
zPC>m}i|-xK#OyRjkIuZ3zM%h|B@>_C|K(qYil01Pw5sCVppC~*JQ}#%u-|3Xd-D?x
zd>xYh>DHKa24#zF>$)C&wA(fR_;%T-@pmS8WYkA}Kjgx!6&}U9@YZARJ9Z1ZRg{@g
zloK|uYFOpKcbtFe^Ty%b%*T0o9S?L^9`?$({bSj6mU-b9E@X`DJgSe^ge3#r*7xby
z^G6?MaBF7Wx0?QjjVmW_=T2#Mzt#3|{g27@cS_fMT72i++ZP(D54ddKYWCSX^Gg5q
zz3=ok-d-^C*cZ{6XXbPq-`KZz)b;BFuT0zMa(L;K1WQ8K^!sr?-~YyOOYydj(^usM
z^w_weSHbqfHy>`e^5o?c_s=hUVmWzW=C+(CW50QKu<M3zmImj2zC+>Tf7i<;=*6hs
zowMilciDA4Gy1oRnehV+QLoPXX8e?qm5+`~f4P48#O@Oh&3TpAMzntWtCro&d&)C6
zeqajQpBFX0o5&?2xI^g>ul`0458t8dMokxOOIT9)XhCA`@yW4W4hQF^)puL>!KWTO
zFTd^eSw|+}=dt}qJ$`rc<jN||f*;zAx;{K<$s_gJK9vj4`ka{DX1Te~=>2aGSY_GY
zrQ*Uy=i2*A(!MNCA2xecbVk388ogy;>zB8=xOUSfC?tOALt5Qj@afwhM;~}|TE|se
zdiGxa-L(V9?`<+y)J(qeq_EqaUoL!i{eb7=icj5#7?$@~^3AFt-zq9H8@-OtP)7YS
z^woJ!#_gV&ez|_^lEW{#YJQy?9R1+y?XCrN8(MD)JTYW>))U2QTK_L;iyda4%@d^@
zjB>oZ)zzh@__*^oi_BtU+fhyh@ohZbRGyNaH@@S3{Z69W)Q25hHLI&6E&6=eV$iVE
zmYJJ-_zXLGvs34JA9d-~X=3LuTK4Ps{-oO-im!g|{oC#t?aS{4wYIK%(B_jKU$<Hn
zn=SJk8|u|9;Hl@UZxpnRyZLInYf*8*mHuyryz$mi<+qJ3Uk?2>Vo1xp*9VV&xiB<c
z?Ko&myR?CG7O#J4V9CWGhi%>i@(v~U-+69rz^$2QUi{IaRp82>XDU8@b6fYP{qOWV
zI<8NT*tp5v7WUlOwd=dT$i40>Uhv&Dzjv1_`~0FNKJN8Oi^0D2KCkpCnY+{fz4G7s
ze)-W${R++RWj^@Vm{+!^bk2S^@N$+<_to?KM#ay~y4y|{`TjZm{L7{#qxQrsZ7XqK
z{KDjui?--;7Od_(bpEl8;#Z#>JF;*`-vb%TB9_d$@+f#t^~y)HGhW|4b6o8_t>fta
zY*6t18Iq-6O&;PkYs$3G{U*g1RZl!y`APau-%XvmPt<jqdB(Nr^5d1!?KXK0AK66{
zvp~OU#N#PfMjdzc8Tr=Uv9TZjxGrwpd!<od)j1Dq7^#XZQoI%s@#6Pk*<+-t-oFeV
z+GzzBu4eBhOm_@S9DG2Z?0SB0(u%@H&Hm3`9(}`ek^0<{gYlM-8)L6(<l|nyJuT(y
zWn0D!SXDD#^n0(=v5|AqX7&4WLQcn^>w8~$aP8NVU*EX!arRHCJ41h&dEx25UYuU=
zvy=O)H-ks?xFeO{{59#rk7_5?PrQBeMnB7${M*&b2Yz1jUFwWmbp>snl$}2H_`{5M
zo^EqawED|BJnHyr)$c<~KYXa)p4u2)&D>vVD8AQYP+ncD<fyxA!d&Y&`yK!7(OUC^
z@2#U6CXSzfA^D|!RUW3t7ejs;eCfb%uUz3a?7VvVh2MVsIp(FyRc<pY?@Zfveoxh%
zv$@~&IVavSxgzj~ji<DkznmH0L2+94H0^NDHS0^4^uBmxxXQciL{f6`@1bi;K6>p;
z(OOHZ!mVG$9p7;HO-Sl!`Q276kLp|^PK3{T{re7Q3QzX=*6|0`+h47k_juOIzC-=q
zYVTXUdi~%}-u^sc>O1#tbzOTn=h~XavI84Ve!1ksx7!4--?ZS-2Z}kn*R^q)_wI=O
z{oh}F>i&BHK_;`ygqRg+*WKTk!JT}w_Jf?|mmUn|UK=hp?e2CYKY!|bhC?1>Ui)Q7
z=bTd)FXtwlSe-ZJlX&CH-tCsTXPtX}W5tba@9dLr{XsnKvxl>{e7<OY&Gwkqy}oMw
z#hfp@ANleN@7%ke_Nxi}WNxB<OW2UTAD8xO+;~6y<xQVGS+x0scMg73kzKm`U+tZD
z9sE?a$MpScd)+R5|Bdo%>CVa0;a?}Fb353smHQ_|d+l>>&=mAvzv|mv%dZ?TT=V(v
zV%pe4w+E~{Nb5g+`hfzj-1W0xzuMh8`JKsczF2qVrOOj$cK<fG@`F3RyACfOC0RW6
z+IMptmN`@w96CSZ$13f;z<F1%CCR3Y*^t~`{V3pLi{}Q}qgNWg7+PMq@amVJmQ4?r
zWa)d%`QiJ_rC+Y~@^01V_q|(&d|2VVtf%E<hoNs~fAod?$d04KUX={~>cx%Y%HQzb
zJzd$Nf?4*>j9_&?w+XfH+`!LpFMH?bL8q3zp1$ka%Ri1C_2$VTzJc>zm)*Se)4VaG
z-K%b^*hBG+n;QM<N;kX{-8-P`*ip$J-e{OJeCcY*Z)J-=Rh{!Ld^~Gp#fBiiz1_@*
zz2DxjacS?K?T0<tw@4o5_|}{CvImyvt%JsRzCUKj)^2-NcItoT!6uXT<Xlhb)?;5>
zcUgKcZ(@n_>CBC3d)xW^l2Wj(KJ=<rtnpvPr>^BJnc>mz_`;dd^GZIFx*soNzs~Me
zCY}_#vEagQ>*hqPw4QmqL_O`-jxSwIitG8Uhp)<M&yhPjwrtLK^XahTQtr~q=^?A;
zpZ2ToGJCb?K@a7$mG2qyhxA)@d(7%y2@@lB^>=A>ySg>5^S+aJKdHU?)>BhK->B*B
z-cNAM>{+`%y6%-L{bG*><UG8T_^-$*>o*RW`LN7zrX4%5C`-D0!SR>I-`uXgo~p7Y
zjO@P7(vY3cZEt($rM8W#*Tf(69DG30rTT@i`HAm-Re6m&wj(uAxhLgz+NqxtcPvp4
zJJ-I}n(=~ivTM|`i~py+?|^D5X&atI1W`dy!2)V5Afg~x5U~-Op!6a|FoqNege0cW
zbg_WFqAOxq!~)2wND)OvQ0yHWhy}&9z^Y)u0*d_4+?$Y~?*Hxi&U?P|7cPf8GtZP~
z=4n&z%;aU=n2Sr+trOizdt;K<<h6k@>)8?;%K)21&GlI?1Y-wvIlW9PD$}NLZ;kEA
z)62ef9zDXP&kXmEhdx9P8Iz)$wkoz{Wa@ybEwq`J8e`3KoKKyiwA{+z(jyG#q<oH>
zXzH;gWoO9ycSE0d?icAcH=*+5x|^XdUmdAtc(2nen^0F6U*&|tiw75%|84nr#rjz+
z3uaTr5Vf?3Z6`BNYTP?bDYX(DKIo&_MQ@wCctGoj>lwPs<{y>TT<CGFN@wG~k^`nr
zy8Wz&MrSONanIk=p~TPqo^wOI{gUMJkav6ir>FF7$ewtx<?0+=NA-HQXx7Si*Vh_5
zJglXEVSB}mZW=dm6a9Xku}^8mwpVrMn+n$Ka_knW{kES5&vjRc*Y?Q|tcE9z-?}ly
z^SinE)?>cL->PfVdd>@36Qf@<?z*{E_I{UDx{fcVb)qd!JQ1Dz<gZ?zf@ik`*14ok
z^?Ns1eF@)zIrYw;*H@pvkv$>7n!d0i#Q2P$U}f}ziu%iEg%tw=yXNhxc{Z^3hsAOG
zW>)g9^vc(c*&n>C?AXNf36w?Ovv)k-syD2gRl1eH%Wz$mK6hE!y!%r}RSQSC9J~Gd
z+r?^{n_m>=&3Dn-GtfNGz<KH|d$T~n*E63U)MX}zc@4_Wy&8YLyYzSFG44C{&ed4|
zV>B#M>b04pwrYAE*N8gXPZZI(zK)eKK8?M3kM@HVW8xkb?R|2$Zs3+%RVy@)xQ<N7
zTX6Dak(tJZ(gDc>j_R-@a%t~B9GmByR6?)rfB(*JQIDRzYP?hEm3VvUg<kyBS?tJt
zr&>ar;#YAlz3xp3_F$>=tD1XEVXf_=^>LDbcF~omGw1GH`m^0(^Td-oJ-azm?auUD
zT1#6px)w%`FWlE`m!HaiaN<(Mf#N3HG57d?IX(`SJ*?2WvH#|jK;tTl176k0=3=GS
zqSA7v{@}xng|iCI4!v=F^VXu189hv>MQM!AE4rNTUX`EMt!~(8;ezD>;jX%;nFID8
z;hIf}en{Uyc`#2s^%kwT;jWJ9yu76=)sGYo+FAN6qqgYI*jSBAyL+IfaVeVn*41dI
z_FWjEb)rku6tiSDf6EJ2FeNh5tI?3p3|-2xxc5F3x%1UGzcHX>%wN)_@$|<YXZ<<3
zRp)yit@B)6QuOz?V=ESfJ{s^?@4lJKn%fILe7)n!am!~0*c5tQ-&2gFcTQM5o$)w>
zKIPu#%Dp$wM%}Jx{A$muix?-U`gSmEh131HMdc1^W|Fa;20Z_>t1IJ?)`Cl(o##y+
zPNn}@(oIL_Qg_-i|L{U1ns8~sG437B>&$06=TtXokEptonp>Va<U-}X!+`};`j{Wq
zT72|m@T616`3K(=CDOK)798nx<Y{+l-mPta-<>}3k6ST^)E*e?NgnDa{>AFn^LO^7
zB(123sqqm(`<`jv=(b6-6>c`j8UC9_THf0pn;e#R*>h_k<$X9$z3ltvQ2&rcoUkkX
z_*U}-k?JqM-!X_@d3)p&o%``YVUK29Z94W?xUQt3sn5|8`?<O6?p9RnsoiyRQ-bxq
zva=qK-+SLY5%w;#*gtGqq531|e5;xFv_{@P)YZV%s?&^5bhY@okLNa=*%$WM&r-0i
z!HHKAcZFH7rkI=9-$-~X-8=lL)z$7Xn@@C`-f0L`|CnEA<I(4iPb$ej+0A6+;h>Gd
z1rcgxm91HY<u@!xRi&+-U7a&vJG(6RHS4{xEMm_NYSgB#J2cg^Uuj!S6KjMm?Tq|;
zZ7!X$<Y`fS@A-KnbGjcfu-<rU-S+2qOSBd|Y&hEO!Q;WpZr{4|?#@%Y@J9t-2Hj5-
zEH2T%_UV}MY+-IpP2Z!_V^(wtdePb=Lc~>{bXk|uEqFaAt@TT24v!hxdRw1=!!f<<
z)7VO_TlMa0iM|s%6_jO#88gf0>VJ0OO?R6rh<T86Gh#+nMbJar$KALS?oE1|U7X`n
zeIo7L^!ytOEec!fPM&;kc=>qQDxZQ)7Q+tj$vj?e)%jYb`X=9M{}Ds0!b%Ic@#bfl
zGm1jO4XCEVk-s1ARx;sC_jS91IzKirqc*^Y6omR2SklK>g)SLs=5vP4Kd1IvOrzth
zpsZyc^pp!1t5$WnS$4vuxuJH|UyW5)4itKHFU(1BOG`9cw>;JG#*DI_UOrVrbz&Pu
zx0wy}jpjL(eiI5`^fpW_tn8eal(NJiHE=u1?wf1Y{2<%v%C;9VAt9}NzTqAEw8z(i
zw9_^x4conDr`}&#`A)Qw>=@>|+M3MT59Ke<R3{F*e=eUB5|Z<$gVWAe!pN&8(V`aK
zM9at=nrTo&Hx12EJq@j+9y?imI3J>s|3>6HuQ8Hial-V&=iQcNM^+jp%Qk4FkL$Cu
z_^Wo(+T%vq)p3*a8>}TC;#wnWolEHF41No!Hl6%7&ZBc(Xo5qThuQK6zJ}+2*IPwd
zt9`;Yb7*a1sdZJEb^1B2!6zDByQXBV@3l7Ndhk`G=~!v$ENBj09aH0T`S^(t-#zJk
zy%lSxRV1fqZ>g?K^}KL3TlaNM^R17~S2l@5D}y8BUJS7HEvydoNZP5d-7}zv-q3!-
ztVQ>y45e@9v_xhtfCT{mE1E{`<<@LUa?YN<t9Cven{{=tX>rTkgTrbL9iCQRzq4ne
z*)q+1{w3#O`^$aw{{EWaG~y{ICVcd?xKCEYoR1FBG?1$GG#x+Fr}(|M^V)(qPPJ%m
zLWAYY7azWVZz(IiTb{h&>Xq~<iL0!dw<T+w$Sd}Z-Iv9gI4Lo8=8)9vu9}6-mvnNj
ztY9>RcsMokwWF%0U6Yn+ulW$v)BbPzQ0i&E==8l9`l2mXmDAUmy-?3Uh3AS5l9J}p
zSM?7MIx*WmrZzQ*Usa`N<}t9lRRUwUf!U6!$nepzRMay)(b8viPUwb>g+4bQHJ;Ny
z+tBFWP?q)kr>c~@IU2=vM-A8R+hJK9xfB)vE=R__xh--&@Fm1RSmR`B&aJkpS$Iw(
z9j5;*w-1~l)cg<64YJGjS|lZhjo6uP{Onv#QA_pCriu?&ZEn=I%wLopS-dqrs3m`=
z=G6U3)(b}&4$B>{q4#c}snZw@%NU8XsOGR&WckN<r$j4ONPf(f=1TWlH7|NJ!2-aO
z%A~c2QhLrfvUX^<Khi}PlTOfAb{ZPu)Zdz~VW~ImtckYv(lC!yy9D3tPJVICr(8p?
zEM9DVZcysb#yJJrS%3Vgm-6trFEaS%VHs2z8oKp*oX<U%8jn7n%?Y#SSDI}Oy=r*J
zZ0)LE<5Es|4?0nste##~J}2SB>*<`bgM8;?fy^g;v`tT|+M${n*<FVDM(9rCj7-Uj
zd$zvVIb(0K0r%u8)8X&06hC=YzINBCmg>-|7Y##u7uTHB$}0b6yee_pwB-B*QTecA
zyeoQN>|Qucn%xo;|Bw?|crGERvED~>!e?je=pxOWyj?wazFjr#>ex-gT8M8kl(L8k
zos#Yds7@t;8k+kas$VI4rM7lKerFH;rP{r`ihA6fv|ek=(u(eW4K<qmo7i3MZSv`w
zX4bV^@boE$#(P8qo?V(gXm`xOfpZ6pFc{tKK>s()?S1z@F6+lD{Md8+`-{Ckr?%?m
z8E5K9T$A-C2lej#-D0SI(Yp9P@z30>-JG6GTtBLE(xr{-Y`T3pHqD`a^3-KX-6o&1
z@t#8U<XFw=6EI=NZ^H5S&sdG?n@zFwFHN%8e79iC?a05!>QWvJi+sMpD0_X@@CM88
z#%8lG4Gnd39g;qLKJCTUA%ll~&@+uaY%=nA^`H^o<~o^7?K;nFo?+vtg6K2mA1`hj
zJz@7j(YCdx<^{a`EEyP>BYrq`Ys@Ai!)Py$k<vcz#In2F9TQeQj9obMh{tbQUGx{+
z2pt@^NV+%HZs4YPwe-vL&tGog7n|osB{(b>S~ph<nm5!%7B1sQ#JrvzZs|?seXt%M
zdT3!6R+Qc}=E(irxpk+#IGL4q*zA*kaffs|9`=N{*17Tu%|&llpP4>`+-D@q;ykKZ
z-`ou~ueb&s-RPG3D8uROw$$nBZx1=zx_@$5GVC<{+877h9sv?Nmlvk?tJe(heHZTO
zH<lXaFDsrp>u80h&zDncylwtG;klsqQ?HVQyFpJU*3PE+JPzc(Sr)K&d0xn?<Z;0x
zzIK`;bPQq~9353N-eA#_&-0Ex&AU<mmn5U=#pHtEm*1-*pBIIVc^0qLxxsjbb^SA1
zkJr1?X1$r)$gCax^jY1T6}MmQw_5c#FZg6jucEi#Zr-}^eG5OW)lWUUxxdb+ulM2&
zn$phNeF@HyeL!{2@5>SwzD=59{LaZ=w^5V+`^PII_k3Qvx%rbv>$R%bkh%AcPw>D0
zZKd{useetZp7*i%aly{jk3J5*^>D(>=arG&?^R@T8}2mRJ95`7e{p%}UbUO)*T>#|
zA&R&)tbfS4Ip1~8?)ZK9`TM2`7y8<|l=;uPdS>(FucvP>*?mg4cJmdtL;EhTKezMZ
zrTOPCb<=%!)j>mgZCRB4jZ?S#U#A{3OFoohyCLdZ%*K&+=9}tF`lVz}-LZx3yMObL
zzu*7<WYM{u#TUM$B^<o5!@5_>AI)*QQVWH{w#IbswcYZ>jBOuo{<e1Ic#AbN85--f
zYUZrJv6{DP(I2l@+kJkpQq5(_it|GY6SuKfED6vqT{JNF#o~weZzgTJ>buk{leN50
zUz=rj#ah`<%hUJKj&J#st9E_=UO`jNtJnpHM)aI{P<Wu{frICbvfeH3n>qH?=)E$(
z=!~P&=;>cZoZV$(|6$L9mOpowZ26<`tfc&~dcT)PY_m#^F1fZc|JsA@1wHa6<+=0-
z&0Wp$J5f0#{J5SoqsZrz`my94mc`Yp4xco9l2{rv=YC1*xHq`}FDee>{Hb|yb<e^>
z_3J~o_)n;QJH{xI@$ipI>tp8*n>75^#bcH5<P&x!EC9@?C@p#)aqrQS$1!6ASUR&j
z`}yyz&9G>0*4f$H?!cFMkLRDd7<M7+piJDw{@Qh+@#cdIMP|Bv^``AT`gM8V^0fXp
zYKQNZthdWOPdm^he)^^KF^8u1U3YPI*GXZ8`O8uHXisb2me-8#O9S6No$`Fka?Y~l
zHy_zNIecTiM^MaIlWBiH(^=*n5c8Mqn|oScyh_90j{LIAdCShTK|?G|pQibHEOZfm
zy6~~frn|OTzeRmJ)pz{Pa`&}EkB;1#()ZkO(}n5BTc-D;(rF8H8rN^!=Un@Fd+&fL
zL-$P!upF@A$jV)xZ}*PA5pm%1z8)nDHEPt)%uSk;F1q!?u+P!P?4m$dy~mSpmc3lc
zOIY+|{*}?%XJVWquW0qyEy)YNz*M_1qN*s})j^p0@!Rdz4fR~lgjx3|7-%0G?slZJ
zt;ycphVzEqSL|8*Ah-X-u*!uaZ^b5W5)5jbWc;~P;<gRk<k8bsjMx<L=CH$D-|k;D
zEC;&ndz|_1#_{hPAHQ}oFIwrly-(Qd;Uen1x6UUnxsI-W(6q>c<@nMsa$5S1+ld#N
zPFscdiCfh}{48X`mEaoB9CzPV+fTKrMmeijNc1N(=&LQU{Zc%2_#cDo1`XTl7fWCL
zr1H?%;M~h^0*_4cdwz4ybkBs`*4O>+hE5vHzrWl`^WvDgm!fs+mYBRryR*ToDR0TM
zSqz&1OPj3qnu&wP3SMX}JKd$wCNt`!ZOz`!-<F;3<1%9Op^xq}#te!6uqsVAC3R#;
zENx5GfY`=MGfz3^nBQuloQj}xGd`!xG4wE<7#FfLWy|xS@7}vb_UrtyGGXq^(3|TR
z)kj{HX|D5*FRYsoj-0B>VF6&pW6QrSShLm-sc2$ui%3(`fCYe3%ISLt4-2gHx@h_g
z5W8>7xIUuw==^26JucKpH|kVfGd)nU&$^$k)1r*%q4&;nWpm>xI^r8S-!DrpZTH{%
zZb(Dll<6%8CuTe9&bb=xR<C~j-AdL&2jjKuFZ9}`(Q#h%O#{dI80X!8wXLGGpy_;F
zH^*IT`n}Z--Q~*Dn7rMqBx$(SgOrV1$D5mf_cZoBwl%G``rDe2c|FI~=*MJRnP1mk
z<+8uiv=@#i5*O3{dXgMHJNQ#Cm%6}~cYae-`AgIX-<isEIKTS(p9vGPZ&WO#TMNz@
zhb)L*S#b7peMR7a3SrHzysjU54}3OrU)<teS9q2CW3=;+mF)_qB%GhPBm4WJVR~Di
zTculdTW9DcSjN@QntFd;*(hQ4sNZiNbJ0{={5G%X#pXR)F7plY%m>=vn(F*j5NKBS
z;L{neu;k3Ex!HrH-LJ=Uk1>C*?yUZf(whnv0HIUF8#&eg5bh@5=b(s(lP|3U1aMyk
z{HN|FGvRkN_yb@x5uUDu>F+_v1hyils=(G{KstbpQpszQ1^f45%c@i*T`s`JK{{I%
znD0I)8(_m!@`?fW4Dy=nf;jnO`X}tOhjhPsI?fMtoFDj~I6vTn?1g>;9&F#|!9F(F
zTm^f3?1kh>0T%(erwyM4vlrqm{)#k0K4<J0b2gukT#%<&DB_5vaX#T3jubX)QW2TE
z9o&-{#(_9{4>x;XS9w-6kLtsbx-unFM{>6nU}=Av0di<jrgNnD$O2s|74t%6QjP?m
z6_j@88_;-pPL;C_kjenr^Mw+QGgAPYs1P4x!wGzOQ5?iT4nm0ooN~Y+Utt@(KgOq0
zr*SGJ(@`$fPY|VgvI4eg@?i@Y?A`->Q*mBsHjB<?<9%uH)A1BnA(QRO3l+njFG%r>
z;wIxud3JGtSLn}UbL_*JVssT!v6y@(F^7W=At#|2w#&Ieev)Q~5sr|Tfs8Q@Hz8Zb
zm$wT_m0{Q{au1thEFJkH2M(Vj<q%{;<H%a^qM@-+IWADZMF5Pl`5Ep5Bo>50iKD3A
z9El7F6Alc4-D@$JcAjFMP|TCY+4GsWZJ!ZfwU@zWNdeJl+~6h^m?H0ToR<tJN<a=u
z8DT*_z&K3VE?jMQW)zl};ZTn#VYKpm3&48flsJtK7FQMy`EsH}D!Dicm?u*j4moBz
zdb>NeNnHs=PFp)6&`N_SO~{f#i+V#%1#BhdParq~<H_U+V1uO-PUjORk#eHkI6x*A
zr0<UGIAJ`2JVg>vo$F6*QzT>n`WlL-P@=-gQJ4}A{4f_N#FrBbJUBp&k%)liQZ5~h
z#~3`Bn4G8wQ4@L6whDCuYVbKs3CF=6wO~qvdx_!(^dZs0X&YPy8SsWZtg!nJry?;T
zv>7?@B(Ud^72Z}PT0->|GX)ZS-bW5Z=pn_E!--U;F~;=<PD@}*<TgU0$p9TCQ~gA2
z$g02(Kf@F*j8TLF<y<DiSTf&Jyn$jsL@^;mz#BgwM{k8a@R7@{M`#4DJo-Svk^_XY
z7xM9L%+6FC@Q`6Ea~;RoMS>=9&;{`GA%`NLl|pBQSk5ivAqN*bo)nZ9&PK^0K0?^J
zYbTaT!V#M8;3BWaY+OgeaLnYyAu$elh&TcW;1<lsVJ{g+95;)}mvJx%g<+VZKo%uW
z6W=}!q*#U_P+?^r28NL4PM#|iLrBF12pzGNVImtH(H&;dJr&hNV)!9O4xjHB%VB|4
zq$3|^M^}ZAAEkm(Vub_EwoqZyDoYfH&{ph|;ElwkI99-deZxnHba(@C3HE^*gVSXM
z4Cg2!d{IELGuTHI7(nHc0*h)WjA)5K9so&*V)9{QFr4V4FxtSUaXtY?KZnZ2<_#56
zB@z}>z=czB6ov>YE{I0^sA59P5emVnz~Hc{Tq(2-g;Kc^5Jluq<w7STK(16S3!8L=
zJg8hQpWqw==OJQyQ5Za7DBQS0<;H-af>b9ley$W7e6*Gd)nkJ7g+Mu#gymD^>WAtP
zgA2VKP~sxaBNg)Dj3U&KMQmr*gOVkr7xud{7*U}NmQ2iuV!{EGz0`T27*do4tsqI@
zP34Ahq!M(BY&{T=1$jga27@UMgCkd=$`H`Y&1aUqw=dC|qT7hUiRDR=Ghzg=MA*uK
zsvs9C0YvK&gUO0w^93jXN&pm5V4I*w3F-m$gYFp;N5Rft1_RhElRyCMAM8a&=nu%r
zj*v;D3@)1oHHaW<09&A=i0$Y?GR!4Ii^&oga7d6r?&iLX>&4=Tq>ON)GZl|T=qO^a
zK*7X9J{Kg!ldz9crdTQyxd^yIIywh(0L<sHp#3KaKlpeceT1Ja6QP?F23SIofEk5Q
z0hC5^HkHC4WMDakL2&g~qvH-(2L(DP&_RL!dnka{BXDii3TzSnRp@W|q}wQWUxWJu
z{_n}dik9K@X90%OWB0#GuMZgyK)P<=?f@4~3!*jP!l^mL2UiDNUvT?^I~iOJa7TgL
z2i)G^Qo&UNw>P+7^5Fao{6EsSh4UZeQx4&JJ!SY5ggf_xGdJ@1TnHzq#P5Lc5tZ-;
z2p{dM%<m)QN@HNq8|=noiG>mf1(U-?Nw9owA)nX;<5?>7&@d|a@8pRh=TnSOVJu=R
zPRlb`(9=jcFu_4wm{6z$5%jJMu}}ydUL=eHVT=c1iHO6388Cw@<ipt}28^V`5m^F5
z5)MNE7>B{HrMft{GMqfzePL!z_&vQnrhC)fd|>uVgkcWs=Hbpzg5_`@U%I!ipC{mI
zmre<m!yO!b;AV192N!QgdtVRlz#r2894*gB_w;n2`@&#U6`z}<yWcPH5nu#!&R_|Q
zqs&BbmJKGOl3=)#f-D00u*5u(6hq)gN$tH|JfXeLj&uh{Zy)68O80eju|uAI-j3Ln
zKpKINCXuniX(a8)dj=He!HD+C?;_yJ1jHFBnm{O}F{7D0*s}tYcNpDHhxr%D04IX}
z<m66*$H4NDyAz~_Q&v(T96Q5&r75^V8*U^SPBSCVWzj5RjbafD#{GrjNSN-n-JM`E
zLNx(y7f0#>LmWIg$H%sQ6;Bt3!8BPQmHZe9c^x<sf=FamE>XErswf~0ZUkigMI_)S
zrWr6-=ZLvX7RSWJ6HoCa#N4-CRexNs`BiZeiDUu%!}tsMud<f&tF$-~PHJgk0f*4w
zJRp$BhGryz6S~M8#`17FjfSV&G<<4J9wA@CQO0?|p*ms|PA2e{3Gk4crby=t0SV1p
z2<H-!Z#Yjv^XJ7g#cWy(kI#p*afG4+N*WyPixbM=AR(OAgV}=EoMzAG!SO?Pm<bY`
zh9M|VAmh;BP@_FQfXT;DJYJ^3*p~(*mWkwLo8z`S2nEBXG<*(`<{1Y^1_i?<3UmaM
zY2<(x`AA_}9L6E;uMiOljo3zPa+FSHq{$5v+>K#QT#tbOKbBgBnL_SDISvJg#K0BG
z;ARb;fT*CDm=BBNaOLFX0^x`wjnH~AXPyj<6?+sdCY%S_6T_4cit&#{D9V7mKvP9_
z&^j?-1BhIc&4Dm@#@xPQKscB+*eLBQS)pLkv4_K-!A6o`VpWjO$C9h8a~mxrG?TW<
zDcUvy(zV&_pUTAY2onQ7zK;Z3VF_j+h?&sb9EgI~&v1;0-~j>phx9BWQfUKZf_R>&
zeFKT&5t6r{4I$15@(KM5;1P4o<P0RaMd~o}hG}UWu2~y*q2BEzF%+)_5j<^|U&sY9
zHmA98u^a;f;TS2DBIZQH?JQVmSumpt<IwQ&Tu4gDx&nv10vstwc$j1qjYZ(I17obv
zf?r5{453Gatb4{WJVc;%uukR#XKg_?U;&E(c2vGl;u#06X87=;M6j4fEd5~_WH`a3
zl2{4`KQ>WfVVIa1g;(SVelt`Tf{~HL2<EVG1~^ItJs_|NCWV-roJlHvb2*G=BF2`O
zkOvPZUw^u{qg=S!$r#qBAH)oK2KqXCxI25eIZiRc{RylBVS14#atFgTkTCC8@DMBh
zKk!j*?zFHe!}<!gfDaNzBc+ni6P27alKIdzv2mT5@b4K17K{N4nXpRd;X_(8a#e?1
z!)7o-WiV^!2^b7W>naq4F`UH0s98cD+fxcNaWX%-#*6FV83$bm1D5?H9A6pmfrK&a
zpb$1uE|JFGN!~3o+&M9jhh!jTC0-U+@=gv1uC<4|5Zqyq4!L>^<+hEe<OK`??Izb-
zL1H<voFOzb84UxCBxW(Nz5rI)oG%O;g6kLq^!_0^vKVJUgEcIggB^{ix(#hMkvYUj
z0!-@)dMo3z3Hv4CfDPuv(W3Dh8nG(LXT}i{CT9d;Q$cZ%#hA7-VO5MM5sFhSOWxO$
z!!)RqnJ7+fkta@^2t5o~WFjZofB8UX!s3v9lBuaF&4ui0<f?|(FJJ^=6gb)_YP1n}
zoNbKUXpoMOm!BvBbWpYlFIM12!EJ7!=xm|9p`0kJ@8Qg77>+1Uk~3L&-J3=n`IdBr
zPL8n7QA}1iPk`?bP?!J`j)%o~kPP^oXF3Kl?ESpG9o>Byc=1#LbM>&NyE5G9_RcQu
zjv!aC@+`MQ3Mu9S3t_m#Ht$LrF03Y?>j0y{cNHnF#7{kEn>E3-Qnpo9XCMaZfaAqr
zP2@O9#j$~AK%WifL^<pUAjv6Tv!h9*Y#|JrkxH0@SFFau7z6Z~=0gmjlza~+0mQ&l
zVW<H;@+20<!M;Mr4}B#JPM|iVMgNHs*xt9}J30I!Y^K77kZ2VBjY4h-9*dL(nvv}U
zLB#?>+E=W6#4;a2llFMz9QX$TbCLMLq8(j8XGie_P#%;7t7P!)p>13X!y+)U&~@XF
zIczX;LPCs8R9AwbZ^3tVVKD})1yo>Sduazo4lfD93L?&;Sh|yIAVNZ+2q!}Vp@6VK
zOqo=O!!UASVZbl)A~~-aBoPpTI~bVoH2|AQ1dDn^IZ$Cdb&`*1;M+MF7Rvi2MOfZJ
z;QJTA@PQO@0XzAIJUl637zuh{qX3Um7RgZtM+`$p;))0s@p+0!i;WnhCH&;9QvU4<
z%I4xhqC|@A+Ynlq5JcabxJv^V$%a8B24kMuv_Zk<K^QD!C|)I2;)m4mt&P<DU%*Kd
z2X|J;sU;T~C<>X$m%ZEUuv{HE?7;|(4>=fu^;TdcTpdB)@WzAj5t)tsZ_;#aD~GuB
zLs<r^%@&7(su0WXcpCg4v0ZI#{lR)cT~t+?U?hgM>oNeUgvkvz)C*w5l%w6WLItjv
zir_XtTGeR_QJzXSfaqclF&LA`<R0ay41a9wsyb4paiRBaKLweFameirOb@v{Safec
z9)WlzeF>WZ-6m!yj8h<Pj5!Uo01wddbioWRAp==}x4#&M3pDtS6bjM|gBwUh$T}(a
zpzL@Y1|}6m3T~Xi3}r^aw4C4@F^6hPf=h<ge?C7B3@q8Fg~rJhM1sgZUR73!Ix^t{
z4=)<(sFZDa--=i1h4>RTA(JS9Ed%>W)`G<i!zvH=%Y^Y*in^P?M;lrwz7mI_7&nOG
z@CZuzP?X*dUk3#`D9}NH4hnQopo0P(6zHHp2L(DP&_RL!hbTZLzN^y^TGSa@1veHi
zYTq~t!s|WoJ>>_u8p3yo0&o#*M?<OL!c-IGf{W8%B%;96_K>rxCv9Pchk`WK;4XYc
zu+1gmZ6Ei4fb0A;Nh8zK0B%tOcd6n968U5O3ZZnB^!HxFJ_5X%K>j?bhu<Dh3ERGd
z{RS%OO&}d^(<u0-AgC-n>6(Po?uEBeynOi*RaaM|ii!$!^5jXBl$3<*?CcP%_aaM6
zOEhA{2-LT4U!<d>1J^)zfsMGWD1-P)fl&Q_@A>~FUqfpvCJ;E_QF-HFdpHrUSI`CG
zze7CEhJWj{?TtO{;Y3)G4`YCM0uj!n`uqsT<tXyC9x287T90IAmbO9wf~3DaJQGK&
z=KJbB8>49UrrQO<JJ1`y>2|X*{Cj-^;l~gFwafR3W{mS?=pdwbC_|^W4t~QAH=GCf
z_j&?uOuP{eE9=>8I|H(P^|GYXErYy3Hu0NI4^n{#5wSWm+U5JCqX$+0MAOU6(9r{Q
zfKaD5N46|eM<2@jL?iq}tbV(E&9=JGGF*DI?Q~lw_?r$8x?KQK4;)MSn;@)O&ri@8
zq=!of%<@01cHln*gvGJo*M}zljE`=KOUL+}y#q*mI)F8(8A5;${4<)perjKD4qL|v
zT8Z1IpP5Otj}336w;A9#7I1IYLBGOB&`^%mnV>CTvLq->(wT1gBR(2#0Kqf8OyC*t
zli+10tv6sK;rQMAhxUENqCm<>5S9`6CuHX<h>ijd@?z)z13j@YW|n?e$Rv1575*cH
z#FBCg?QY*bPz3lX((ej=sK+72KlT!Sa4?5e`G-}3lyuU?Z^b{MBl0ko<M#PT$*->`
zU3nW-+DWt-huiCWy`m)2#c%n)oUUXT>Oi1V=xu#HDfz9WOT0;GRqzo@64n_Koig7i
zpcFjc372?dA0e%z3@K$(MgQ9H$x9`1k<u!ED`m4?K2ig*%7X>~9s-vf6UM3!?UeJb
zT|QC+Tbn`IgGfFRT8FiO(2?n0ZL--eAE|*LgV?sn@hP+p<HI)KpYRcqALwN{n`mWw
ze7crxviSo(Quna%1FwE+A88Fp=0Qe<od=G&d}{(NC;9X<JwfjkviVDVn2!3Gj)d$h
z`KNaX*Wp+Az=kMv-J7nXOW3kz+xGJEbG}c6#*@0PhyBP1x3f*}N%{OaAF1)A9t45*
zgZj7Adr}{8(}<^yE~Lg|d53?j{h6htU!nIH-iA&|Plc+>ds{5yik?^LS71}&gA(+w
zd~NmoSE-eW{>SrC;FsYrxA0?&PC1h!!TFSY0^)->NQz|ma4qozA&BAz_np(=p9!N!
z3E|_wHx?d(1174E=WlRl`e)eHTH6T$h9$@sM%z3hhd;RSkY9}0kUs`OeE6e*i%XP3
z3>h{eQVRh}Lvct5wGe}k1->Y#j|@^`%;o^Iha5bJi3GnpKw}|}2LD2NdI9)x=`x6;
z0Th>GPqcsq5R98li*xeidBcgc%J$RXl%KNR=BjN)YF%=ny@Q~=iKvBW?_y;<jKQ_3
z$WtBY7Y=vCQ-Hvj9<8l-^sV|(p^QCH28^HOX>jb1{DD|_{!{$v-o_u?Qa=2%i1v$s
z;!>zDN&WVmVL}W~9z)Vi2Atv`_+1p0XHl2Mo~397DuiEpX!wyPL^|Bwm1qLAmsGqZ
z$g>?*2f!kh*9h}0?gtETM?Ym3l+hPx7J<GKI1-gL_?L7i>-h&!&$s_r&opGGQcst5
zlB!CN|GLh=QCmBT1{wo&p%Q#vgq)zI0zw;v1l6%z(?GKEpW^vZ4*rvR`UzxLp{M^l
zT?z$mgb{Vc8bfNxKgkBxOBb*T3f;w;j%|igGcj+Yp)?M}D72CVrQ%d!0HqN=_~izW
zHDx)NGXI2=M#!O*kWXBO1ZKC`VkoVH9h8af#E(|v-&uoywg8w*i$E6tK%aoGuRxBX
z06W$tKDZ39S7K;I7$MIRfQ$wH!#C|8pq2_|%U$>l2tr3bf$Y5|WOE77RMkqV%HEGS
zRP^y*=)#Zk1?b@UPuZDY%a=liNcqRTLpbm&l(6mCvS7>qZ!9zJLlixVQe&X{|DxTv
ym8AVPA?!Cv=fxP@@pMq2g905C=%7Fc1v)6uL4ghmbWos!0v#0Spuqou6!>2)!}0(C

diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-7.1.exe b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-7.1.exe
deleted file mode 100644
index 1433bc1ad3775ec9277e13ca8bdca3a5dbc23643..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 65536
zcmeFa3s_WD_dkAy8DLO!Mg>Jhopdx3Gz>9lPzPZU1$1z@h>BOx<A|4F#!IPz!xZCj
zO5e1stSqgxt9hj~<)+}J#4DI)XjTWoL?uO2=l5CX%m{XQ-}n3b{+{Rm{GUgB);VYI
zz4qE`ueJ8tYwvx|m@sZ7BV`yy25>kSrVw}f(+byre+iH<Oxqq`w`I0_efwCUB>vmS
zlGvF!s(IOSXJk*At(rDv&YZa>)znN?wt0?f<{VY@XoG6@+>FfrZQ8U_J4w6m8!<QX
z{NoWW7;}15L=4i=$DfOc67Itzw8A|=NSB;mD5T%IrxEUBPK$UYxQ_td?t4QbqH&Kr
z-zVaXP;X&`9`~aM#d-^x`U&+uJGID3cZo=6<}{Xg_@^H0bqo_Pkuj&wXk%SCHH<>i
zTH@J?nTMQ}V(yhJ+?9Y_N^8Yuq)EQ?=ejdW2#@ga=O$c{5Yn#ugJPld<QELHot_#P
zW^8*Q>;KIq7p#g5{4Kryrp$#Vlsq*V7vgW8^NySAPsK2k`)6lNF->8Z>l)<d0<_LM
zZmvHqa{G&DOm1J~76DYwJ8rH&ElT=l=VVVqhR|2^S-`8oy~UqaY^6ocqsK=QcqD;G
z5_lwmM-q4>fkzT}B!Nc~cqD;G5_lwmf0957XHt7xZz}RFz)0q@)IO=)VzttcJA^UK
zGfqfx_-5p38Lq*4GcC<DDfNH{<M3UZi=1l99}e^5MkdwayBcY0k-3BQib;{m<}TAR
zMt8?4OPP0_XR1-+IF*)mvs7vJXLq3qhwmQ3zG7<g5at1o2{C4F{G{}dBJIS|WUk&)
z?`=p)<pvi5JLKkW)GP`&%gvtUIyn~3ObVMz#LV)P6obR;?WnReIc&PS3hPUh?YkYd
zEKO2#7l&EpFe`z<cW^iyU<rKgs{I2<mL|Q)OE0oh_hh(PrO3Y|kn}dXIg(Y@BJ{Vv
z*o@Kb;a1GO1@s*vI$O3(%hawH6Gl(eO-rkN14$s6TA^v9RLHaI8ubpdzr*b3@ZAFb
zxFvTfORt9nHz6Hv_Az_mc_W_dAb7J+icyw=jP=NXBq*P&Mo%Gk1<?)zZT3?%Ue_lj
zCB^7waQLnRj=`prJE}OHTywzOiSVfV>{{SKE6FOzAf#y0#PJ73DTi5>DCGt&U7nJv
zu&x2u#xT3C!pP|PdE*#{(|Ox;6`amTYttR!bbiJ#*3Y74Y`SVfx)yR%Z%aQJ!{2%e
zs7w4UW&YM8leg7j>Z@lN;MH{{G?|`1Fpyz12O!Z7C~Tu=>xml~`T}Nd0!PoE9Ld0j
z(o8`j!pW8hb)7<PhMSe7M?dt%z#mP6{>r>#(Bm5PcoKKO*`K_6+LHpm=#kPMFTETX
z>CGi714}G?$GmWToV!OV*JMk$WLr{impx;Wg%s5(Etz+j>6S&Un3NaVlJ!l3XgFOB
z2b6(++^D|N+tNSshUnuYZVIc;jbZYJ>f@v`g*6<{ihU{FEk*t9-o%$Jp+T{4luCLC
zx&G2h#lGSG(wM%|V~TyFyGSdf3H7$*8hdo-?l#>yyS4hh!=dN9qa)&TtWDSC%5_67
zm(YYB=0?aTm^z60tO^p<^FNMdn6xw}s>8P${kLTLF!p?RB5Bj{(7Yv#F==eNMo!o0
z2<Eq;1}v{ZNI855Vmw>Ql-433D)PUF${ji%F2Tnxt3W-}GFO20E>z<|EAxap-eP*W
zJpZ7nb?)sa&C&zR1g-h16OA89tbuWX>rqfvNYQjI##=Ak+Ugzi{X|TMnb#W`zT;gQ
zkz_JGfeR_gf#I0%ljty?)AJMWQK_G`NRfXOJX)6cF(yAwcUP<Dbe9zSw5`A(Z}e~^
z`=K+=EQjuHIGn(W!H`64FfP<B{|ZM4|3xagnIp65d|b@FjvN?@V&9}LTtb7iBCy(7
zVoUJhbE%LtpcMM@gsT#Zd}j}z{F7dWQ&AcyE|=%to?vn(`M7E040>l>hc5{cW?8!p
zjD-}{zKRaQ(b;w0de*yC3uor-@C~XZ<&c+hOD{!^QOeJjG7Ot^5(vHlVre=J-TzQe
z!iWBSy}WvIpq9bWpva`8npG@Ijr&%@kf4eXR*xk7;z^`85RzSY_wN`qr8#Msec3Rg
z5E_4(=%|0yLJoDB5XaudMaVGUbqsR&hN16iG`^p(9FPysyMF{l**~F>RSR{u^RBw&
z65yXO24(ja0t>FlZf%0dU@{J0VhCJzbY_Wy6Xb$64-!4)177MrhnVu}gWS;1keews
zbG^;nU^8E`nHz29yEbzZR021nIk2R)o?TZ4CoYv>IO;Cx?Yag)BcL9@1I__z^z2Gt
zwa}BAtTRTa1R1ekfLlolyAXGWujv8lEF!%LHVo^vCpV2@3xL4M^^SI8)6rC3AeKAK
zHB^$QN0D65s!>!o5A`r4gnWN7pP~G*;pTc_NI1;(LSc|tcnK1y(}bHFOkEx3OG4!a
zp*&hFFQf9V;pRru<3eGhP^d;>Cq26!g)LPHb<_>FTTjARSs8k&H##uxQV<s$$we>V
zwAN6WQ8GrL;s+`bG%{J!UkG88Hfau+JOo5Jnr==wd>2Ao@WyK3=sCF~k;=sfv8=@i
zNP}@evx$i`1jst=sKXXPBrR0qLqq5w4I#2X(zP5dz^=pS#_l0(r`-T6R0&IiIlzL`
zh<08*ZPeR!O4uF)Hw7{*<)How8pUw2Wy)AFVu;0^CeB!sIo32j*3>;#Vf_{9_o89b
zWFW61K?IseX)h>t>69s4sBD>*DXvkba!Y(**ep&KAogI4Z^voirm}7=GA2!|eGN23
zR=@&9H+ud{WWnfPFb0bSYy;?{v_(JbraGB0wI>G7i3kPg0n}>jk35HOzH4L-Vymf~
zUpWSJF;vaHQO@^7D|K%?M5gRvGLo?eOH+(;hwn;Iav+-I8XUe6c(!@G7mwkZW{Z)f
z*+S`2i0nk!h7_fQ>*RY$sHRZ8JwdKdM92e^XWBs$zGdiQic9tw5WZ_grh(${tw3R&
zM}eT32STBV5DW)4U?wD$rJ&Mkv66^mRI<wbB%x3hiCHj&kRs8REcIH;5^sg66QV9L
zUKARd043GZsf!`St}9A~U8D8M$mFVx5?eZ?mw|+_)f;KIZigIXRUn@z{uw3g9yf+k
zU?Uo=af7wE>J5%6qXZF}4@89Y-u0)@Prh9uM6ORUDvSyP*DVYMjuR}bPBdse(kc8E
zy@=DwNHL}3gup2RU(g>21n?)a$AY6t6GMu|A1qNKpsz2aQyYFiYNLmv6#1(egfL6I
z>G(-u{S*mA*-PZ9{6~0vFN+2M{HtJ-*+3Bt6ESEksNxono1U)#YPn238TJj)Ho!9k
z34-<2qnHa#!WH%<7U@}D%Ao3LR#l~C*n7@I5$Xyf3MG@Eg*vz*pS*?gFdA!}jcync
z^JoN+z=cK~zGFc)q=<TD8LS7NjA@u<Ffq)S!&6{)z|;bTYj}@JjSQ!6WshwutxOza
zl)<)qV@Zq~r~(-&v;t)3QbP&#HaOMmO*BF?aK(Ic+9=_g9H+VDyBwn6Mk5ng8K}EE
zhD&Y=Om2`Ck9i}o<QV*wt|3s@BrO+H0?!esPm>t=DY&Q<y-|iP1r(##Za5!v_{zWy
zt*Xpk<ez+fkPIopI&3vr<a^|fQuadrx$u$N!BoZEj{gF}fm;i<3GQlQDJ;4Of@jy_
zf<D2f$hq+aK)Y4lwdhv0^uPw9G_lmOSS@o~>QNYrRH@k;Nx7SlSmIvjM|p+b7<T--
zqZo$ESNq`Ekep)SN2MzAuc2{nyIO@jt{<5}zY+$r4}_O{49Wz00E+hA$MbYexx(s=
zhhm<bqXhid-a~c4tYB42@^lZZD#dYXw-O^!sA>?zk_t5qL=$@c6sp073@pi@IeV{|
zZG>)E4n-(AWi7HrtCgnqSOJ>a#3Ec^Uv!pmrD$|u?qF&K92@NUY88sug$KwD2-Zq=
zny>apu4t%WKrmk{ff;j@K;Q`%0o4Nn1OJXdoqM4S`A|wDjRsI6ZE)S<aWzVv2A$$K
zftJaXg+3HGIi=NWwA#l!$|(5@BG-*L+D8#!Dti^u1&vg;!S$d;=lIj{kOiwn=*1t#
zBPOTXe31UzW??CQ>>JL8xdMs?cM}o4!PbVXg|~r1TAIPxmLLxd1*)~&SxbvPkhjMy
zA;^B5UMRLXi`gwSx}!1D*mI(3`ePLfeDGyyax?dEgc61$R6sdGCQPimG@=ACCDyX2
zP^T2;eX(cP;)t)7b$K;H53b1`tyUTI{4tc{F+k53<H=Iyle<{fX@aR8^8DBe(h2{*
zNMeBudH#C-RZ7xhn%*f;p|^E$T)sL8R_$^~8s`8AaipfQq%)SxoqP&31KpWrMoFEU
zQJN|^E##BVoqC=$5qlcr^U7#|i5@wxo&qVvmxhqDdbTs;#u!*-Ip)iB1S)V$<QibO
zo>(LF1ERrTK!AgFgl=6q0v(2-S;XAv@Kp(T3hP~D(N>8JjdD6A7D1X)C#K0S%+KUw
zPgs|z=L<)ov(T8rx)~L?P;%Cwi3sN|qHC5HZ2GjA6Au@{?h$ja2%~sdVAO7<5(8$M
z2Yi|*vfkiQGzhLCO>?7MSMQD-Qv`+2DPSKfNrWW=x8}#i=JW<OmukVkS8)m6DSGxz
zF=>054AN00)FH3fqWfqT5^C;wep@gzX`+xts7A?HtlbM`O1QF<BLv^%jpqlh>^%A{
zdawEY$gP<Y;KaVh1I&B78Y3RgS%ym;l#7f2WQZzumDY;|Dxn|=^5e7Qs4W>=J0Db>
zSQx+*&Ha^1-7&!ta(mQ%An;GKEGtZ_WU`lF6ELEOCslZf<|(xj7%VY`S+w>V<OaK?
zZg5)p-~o`0so!9lP!-lwD0|=xoP0iHrM26r_NM}8++Z@_kejxC6pyB)2u7V;?w*7J
z4J;_fY1$~7g`Or088Xxn{D^@c77M3cI24s9q?y_XL(jlJj!bwJzBd)Fr$Q!~?{FK|
z#Lx7k;fh7CB0mTXJT$_G0Ruk9?>#kYq-hR_;YHd$iYiQ9a<S3j%Wi=fQj-xlhY}LM
z2}M|(61$AJ!NIO`Vz3=LYe8T2D_!#udl}$sRD8)5+H0UCLu+;+Q2FglOA@amWf{!E
z0i%bgY8t{$a1o5fgP;Oe^lsqCz!qGd(T8@@ULk5}qE{=*g~t$iqxhu|evmPRvqArc
zo*U?4U|DaP+F^OgM+(&7WQY_kmDAx}$mZc)-irm3uq=w0$$wI#GBFyr^cDn?wt-M6
zE)jNExzLlKLJ=TaU4aM0X=QZBM&oI=ke+Ba@ie<pd_*k7t`;Bf;xS)*Y;>H)2AvS$
zn`ujJq~^RS3cIzYA>rmGQ+T-fu4y1GH=jf>6Bu$Z97~a0FripeY?C{Z<rK@(DvkF+
z&tL~wKO{GC2kNAj3XE=y=)8J8%tBa9U@V8+OtoQx2stP$AGNZ`x|@n!#aK&mgUKE1
zQ+Ct%6~>^!sg$aeZ)jkrBtOUi1s_h}nD)L`p<xUi7Oha=WU2AC6ip+m!`20^m?2bb
z1N!P5jYtRR9jnzQ;A2XIyk$V6X-hzL3}X3*kc0Ht#`*A?u%9K)q|J-~S@0_2+E18%
zxcM@~h4~yvipr(li>p$KlCXFrmw@RW#%{N+rIoq<AebxH-KB}eaazm-vm0Ro++f<-
z0h@xa#Tc{ZqqpK1v+F)}PQof8;5ZF5M5|n=KdNA2*hJedK+=<Bavi79)9%88yG02&
z5=%()L1G=}Y&$R-4VmRmI(%;=sR6OFqskc{=hd$OLxz-)v#FRWe6_@Ln+m#ymf>nC
z*6uqA?h;e=*x+}ZevgVQMJjBYV>UP~h6X=^QLe#Krq<jr2Rj$YcB=`#kKHKrOz@&&
zj-Ed)Y&<GqUbSu{Fq|Ur_rXINHb2vx150Rz8(btbrqw&D#Ej5Au8d|zoMpt5Ai?nT
zMn(QQ&|^(#n;#e@td{2C860Cd;adnA*skZgZN~$8C5!+pU$#&_O-5!pc7q)!Xm=$#
zOaetxu!R$svH<H@(=!5D1AlRtC|#Kb+Z#s0`V?5GD=p1chrtXC{FOi8UPVs;+0?aW
zClf<e$W0^R`EDYz=(FoMATiMZ>-ryiglbTQpMW;FhL9pnwMm1ey=hRmuE{h2`?01V
zO@k>w81lksPvun*4vl#%t7w-STmEkF-Wc@d&4XU>P<{{bv*HlifyzyE7d+GidLmh!
zX5+<2a#j)IBUwj)_y`Zh`iYMXc$A5c_2jp(W3D-`$bSng!DT7(|0O&$De`T?!(Byw
zuJF)kdY-n_=F_IzvuqP-^90wFrnzq#%GQ$r&^PuHJ!}v*Gm~kHXantu?yV>yy{4eM
zddDE(HCYZQG2P_dr}bd=&(OdI+S$c2as%!Ea=Q8rw2R8=_zkopg>fZCjNwv}rQRP(
z3Rs4gLa^_anu;AutX*kv_Mpv6Y$Bsfd<w?X1C+Y64@R6nMy;^OgwM!2qGf~?rU{2@
zcgG@?0>bu$#?-`AqbxOb?*wp}O4}(+E_O@HO`(=1ceB4ynabWh3@NnSa6-uXE=Z@c
zJW4Q<<Y*riX(6<i;u>!7IhdS*c6#jAOB8mV1R_S4D+T!hp9aW=Xy8-ei8Br)xo#(M
z71AfftDfD6y3UFea00VZz$_q4fjl;Qhzxd9Xu@IF62HzIOIa+&0Gr<;%jp!Ym*7%G
zzlhCTkv~hBO56-?!fA${^+3>$lRGp5RD`97Nl7?RL02O+O+I<DP_v~79t5hECG`@s
zzq2+=@?~RN@BzbNX=6z2L(6c84HMZBOZ0s85OS%0TH=I!wXl2)B2u*D>DQ7a61LA@
zSaR0Gjaa6ddXb+-3=x;8un|Ypp)~dqvYXXaBcud%p=n2`KdhJhfDl??hZuUWlxYQ5
zLw>WF4jBNuy(KL@?=AF2rQN%c@>_HW$p06e!IDA{Y|D;7RJ2BL4ueA4=iomX3=v{y
zEJcyO8K&#n8q1Fp6Aa=8g>^d;7!=_`;HJob0?ED1X;|d}3R=4$nLC)$h&S6H0oP8e
z19slGxKN~u?%I|#l<OKZkYif{-)^_olSYJvH{S_7I5WlqLC@cbaAl<E`71~W8?ay>
z!>_B|PE`|ynUB>HzQdPH9%hq@J-UB8fqK&nMS-r5Ue5-j?n7g=<=iS@dOI;yf5v3p
zUSMdZ@>Pi=T#Xwv@9Gu2mrd8e$KIl8nIc!L1#zSz^x5d9PvI9~yn<g^JNxOK&1%^O
zIG+cd@pjI{bsdFrwi1PwBCWGLElr$||K~F_E6&7Nz>=H6RxI|M5j}&s-{>3z^u>A9
zhj#vig)U8#ma^d7je`lriHSpOQL*G)z?w_X6wP94C4un1u!ZsDy6YASOTUnth*^F0
zDb1T;Fbr{t86HaEx!H%;GYrO{i?$FDVx2{1DBz9-T~PefekpA({{4RG#DmSt0<(MJ
zdMHv1{=*)cT3x|^Bg!8R`Dqq)E(B<rb<V9cp$apuFbz9rS<I&`W?2OK37Ahkpy}`g
zOr!VEvG4>;tc}70Vx&4eXwE3|e-bhp#I>5HSdo8R$f#H3AH)M^_SRfe<bRFFu(pc)
zt+>;6ZW5HjRj1)?h%|E#!4^_r9qbWwpxK0sQsH2YEky2L;%rRVsr(w4sB_al`L0ol
zcM&FHBaF0CBWRt*%2V8ubN1ox(gW(d{NiwM)R>C5PJCkp1Pqa-?W6}%4lu29CrcR2
z?g%5XtZ4*BH1VjDr`35H-LO9-8Eenn<C@0v>S^0V*c*1vaG~N1hadsFFm%<kvhTDo
zw?^_5EoL||$2GSJW8di?)YhVj!s3tIZJP5H4-;ObF}6+%DY7pq3%PmY6Z;aJe>Qyb
z3D<2!E{w_h6QO9O&Aj5qC;J#VRv6{FqF{*GwxrB)0`Gs|Y{7=}$It+vW0g^TzN?lg
z*BzM!6vt_db2@tfF0!(a1q9FTa4aZkY%ZBCmK^UXmNYe&%n?hP`cnzTV|UU1ih;<b
z#@9lAHr;Bt51Z~&yKV*AU#UWw&Ai=a-eWUwD%Wkq*nlSr0(XLNA3o6bWd}ltFbN84
ztwkI32n5X1kfKsYjSylcxwdyhS=uMYYR9?pB`g_ef0)j{X_pQ~w7cv^3m(@d9Tq)w
z$mra`hlT~2=hd$UOLl7(Y^z+jQW`vr6?iapw0tuUMee{~;BA(N3oDfzH=+fe^6GPe
zEllOK=_`gV1?U9%+q-0RO{y3AU|p8W#*1CkFCzy9PIIyQ98GzI8irhKhl%GugD@*4
z<87kQShyK(a0VFpMsR!BP)goS?dT1AsVW<PltQ;EEOM1bOcE4`@Sh6q+MDu33dz{O
zi*80t)(giwJZ(CI5fR6TLs<l01~yDYbhh1ZGTO%ZSb&gwO3d9ryDP}_dnl83M~tlm
zy%<<|ODdpE@uY!ekjplLZ)_O~eG^WpS(=Ou>?P!*D^7M=eKQ$-Pd2cXVm4cWdosU1
z6e~YE@ATm#G0+ghJ<ETEXb1zJtqWp{1f=I(NIiLf5h<QuEh0tn+l2?yGyG5#)y>Zx
zOzkkHzHFgTcc`<jsWZIv7G$w2ad~Ls6{UO_YS(X2!3y~(EKzB%oA#*0mz>@s#eq3b
zn9&4C&~>On>48YQ_L)hkWJP#&E5%xrYMRR}QF3Ov@Y2q7i^FaH6uh2d9<@AHqRqV>
zym(~p?U1G2b8pWvdFS5FHfyv8Jle$6g$TC;9<5?VkFI+hr?W;m9b{e-JzhjBvpb=U
zF7UwUj2T_$UeGp1I~oFeqfUypa{CZB#6%(Oq4Kc<VSKc2!wn{ngW+8*MOVvp=cMo?
z!W$Vijw+TxNRfi&7+%y6;|dldjp7LGRHB;TPO5jWfWq~7d4qP#eU&ir>1ekTUeqH)
zn2bxy^Ic4tc>U%o+-DM1bDc1F<Nbvy3<A{F<ITBt*uXR@aY;dhO4uoSEKz)YP|P(L
zrFitiBX0hbbD-ISPj;h@rP{3<$wSlT3wHG3_jAFnn2DHYJw?{lV)N%9KxfWLF^6Ih
zF0=qwwt{kmWwcm#-yX^kw>g~D*!9RFcY{41qU$Ve8Dtxy?Yd19Q*a*g#ZxpGv7v+a
zUf?EAf<465x=ng<M;1HtA`ye$Fx{43?eJX;wqapWT<AhP8L!bE{Ar^C@3J6?`H0O0
z1-vC8q<ph*qc=}NH_`(lCFqG2@=(hqBid0w4=|lZ2p!G9)i@r#L@YrY8s65k;@cBZ
z#&iR+n$oO}H1TEB+{c;W##UJGhup-zZ<<M(tD@;rTzp~vb-uG9Lz7_IFGW~$3QftO
zCg_^{U)@uJ{Ct(bLhRKQ$4{n?DQt}(MsU>v^??@`mK*E9=tKJ=|C?S6Ztg|)|E3q-
z5BH+!f6$8*<1^TwM9@nb5MuH)v)jbd_ZpClv4lyMDiwP@jI?iDPd!hoYsa<W@q}E?
zYq>1aQX|JWtHdB6=Q9y+eEh$nmoLyO^dV2tJ(va*j^EL8s&TyQ5ax7<BTZADW@@iB
zrt5`$Sr|{6=EpQM9g@*nBDWV4Wni@@;3g)hefT3!iauSDpN7KZ)YS55wOU<?(#7fk
zV5pqSBw>e<<Av~1*kz;z1|22*SBoS85AmO{nEJ~S3F5|yJZ-+xIln0slc%2^+kPqh
z;zrsER$|eIWBq?v-9XSqsQSNJ<Rptr9N~a8B2`%BJXqfd`)5Gd1WD&+_$LVqoW*K2
zlTOnVcvZ7X$P4z+a)`i!1R?X8{UP8q#4i}=d1a(K!QIor7N3SPjQS9VWr<vhWv>nK
z=8}5blDjyRY=u7K)$dex;BjcUHbTl!e9s0W<(MzyeTXdPVv`q8{E=CAmh}_LFjmP`
zk{KYp#*5PE50&pW2Dr9IVGuaKX*foN*Fx=r^XJL=)0~K&OaK9LIaso910TkKNp>rh
z<DI8|Xcupe&}g8+;H%i1ANnhbT8@a0t`Q*?H4h7ubW~kg?#57}1@|tH6dfMk6>YG|
zxJXR`-a2kr+|>dJSjq!ZF-J^BQ!rxdS-88Oz|Ftm)|!l95n>9VEf~D9j+%J=Mmr3y
zR0g*TVvWRinbN3cYtVgm9mzm+fR-i?g;no{nIMzLK1Tyn?oNmN$jB95DNwxp8brl~
zt_KC9n=QR*Ja(NO!Ku70NK}O)e-a_+nz%4$*X%mEo?Rg{K?eq!QgfVG!qVoUo*(V3
zY3?buh3dJrU2qk2gBO2qouS~Sb`P@nv*#$%QsnnUqV{*lp=BeBTQ>4kD*qC8uE{#&
z4qbh11qn@f7fw?uE)Vg>zasxj%GTYj-TWt7YztbZE-hQpw<s|yQ~6_e#8%#S=o;%X
zTVh7E#KhvUD-I{?hPA{9_!GuH!ceuu@M($RnaWFr-FO`j(~xo4i`F$LRxCm|0ew5>
zL)+wTF~6yZnJ0}(gph?8mk$j~48yu?LdMpc^X0(R)g)relDiCQnz1iKMv2)PTaavq
zIIhJ-gHIh^60LWYH?rE6g-WAVEMbEv+qJ0R9XII>W?_!UDV59-jH|aJm{0Btn@KB8
zN!=@Kw^BfqLX{{UV(HK|MLb#EKw&L~-0j$nG`dBmYi&>&OGmgY#kwr*CW>dZdY&vp
z@X01mzV8jl)Myz@NQ}8Bj;mq2_?CdiEh0Qh1S9AV=8YuUw7Q|fXDs>17hFpZt;yf$
z!LCEY@Cjp)E%*epCp(WEiaQ&R8>}?3ifRikPJC|zp$uYJM4I3QQ6W|<c*qroWFb0;
zqYRw52U3WFu~&c`;j4@kVLRpTKH{JQv#x|A!w6mnd;?BC@!^Iymms&vTgI6rNG@59
zBD{zg?{*pIwSIw-N_^a4;d|N#DnpLjI^ji9TPN`w2Zi-IILjOIe9FM~ruJ+N`ZI=K
zc3K#8^uE8QM6se0cW#tibI8<&I~|xJ3p{4?rT69nV`N-{lDjWNvw<;kn<Q{4PLNkZ
zOoF#k<iCcR&X+g@Bou;onCNT+?R^U`lbl175bim#APHOMdc6KG(;JL#e2*hE`}xC*
zqfR_>ad;uT-U&(ao&g}f*i!-t3ISt+AGD4Fn*{F%+Wf?&5ZSvgy9aH!%>9E?)H$a~
z9%=c<C8=dNDn4dP;D-5YicK-LSby6{AKOT|ZKPlMuwY1*vB_<*GFz;-EmmcV4Y0)q
z*<yojv0=8@2zx=WI~FQhA1p)|TWppsR&R@q$L2vHMyR6{4Uy$zs>7Rag6GK%8=$am
z0!_SP=M$!|zKuuW6D!RvMScMi;Y(GvrGDmC<uR%)>4-;`281tF<Flq1btRHqOaL3)
z8|H;=$P^XqQd4f0Pb|b@&@ri$i&rZ(M{P0wOFV50<+sitL_1b|M>foIJJ_a|FOga<
zC@i<-i#u6vD_&@yVvAMV77pY|9hNfL#7U)k5C>JYrA%&H>OWEF!KBhcI6KgOATk4e
z1Ln=8`{RwG1}<tKb<G^W#i<KPQYUJ-ga9y?D1Jz!DYr!pG`GTHPbeK<8vcBMxdV{D
z7LYI6o)5M?A7nEG&>A!@An+D<KvSIE7p{$aeqi7=uDH0??ZyXOh2?_u#zr83P<d1^
z+F@*QL3nGbG%zk$Q(=o&`^@*?gga*lMpY1y-a+SU-2xj>|BzT8Xo1D10FgT0*E|;3
zAkr7hC)uKcxu}4Nwx}R_Bde5qo|4krT$QF0j6w%u)0`nlQ<>u~J!UfmiHquH=?MCk
zS?a^AMFvIwOTHLGWBq9fvzQ)Zy{!io`Oo4JAJUjxbFng{ty3tiX>Il>mwKaTz~c1E
zWNubO3KyKpEtGLlVd!B1*V=O1-<G6S;nf5`gsDFCW*zPk$O}gJiZwLD%x@>E4exwd
z%EC%v+$x9KesTgVCr)lXXl^aGQETdeHt#8O0#;fbiu^L96gxX|-=4TQ+Ol6x#HA%M
zC>NSQbJ=HZM#<ewy1_j-c+?>wSCW&H`7vs!A<EC_hG1~u0YDF2LOCwZPoKz#iiJ3l
zuw|*0<@DhM!|kuV+a9+lm9?lmN=f|UNKqRM19O1BM3Mg~VZn;I;@%EC7T3s&Yvt17
zkmFzVK=Rf#>v4sZ28n=kEcc=!_m14u9z!g?T<d4DYZ<P%_En(?b#bi>Qd5%67t1YI
zWSWZkKByKCWMz4z-((=yvOo>F;<QC{$!753<GX`=lG-1*V~a1#ZymQ>bi+79M{SY8
zmP1~)4%8uZWdOA!wj4_>gKljn<dIk(C#lXs;y*|=LT-yvnv}#Bc%lx}p2V5c&9WL~
zCLwc}Ul3*PLnarevK}<ai+Q=FMgn&irMy|@X6jAt79bi&K5o4seL*1s(7~5I!HvLr
zNKwd@a;Y06SLbfIr^@L;{Cx+aE%*~Ot|E<RUl7}p+9F|mLNiahn!&KCEav^77PR(w
z@nxlvUX=_eh*v*RkfiP_DnIN`4NIwEk7j#Idbs7kvp10gAFeX*B3XhB-+RQV&_^4-
z*ZXVF(d8sC5v_iLi}D+z=XX8U+;i#?^<GAH6Q{hnUuK$5tn{<fkv=2XKWwpuB>s^f
zTa?xWq4@j_2Y;4*=wCRfYb*B2vpiBT{c<U04kt%W%a7B-eaEZ);mm|Pc?-eZ4Jzw#
zQ!F<|X+4h79%dTM8C2YJK3tBL8{-#v-###0bA7%nu!=hbs|mvwyM9jh*V6g<<GWoS
zD&q{wn+M!X-Jnx{QdmkN|Dp=4z{$YODHm458MJ}7rPna+ldB<@W6*MOT5?!x6qxd&
zwBVj8mwMnTh!saU>+wwTGyx&xpeSF(PM-mh)G49&;6BLIk4yA-cBCho(Il#Jx}fne
z;t$#iTOO?rDv-5vL}|fG7)pZ3@NxIo9L@ehXw1#jSs0|yHV!~5;2m0U4n$&ItmtB2
zVLjg#R@kfre=ytJ4ZL9}c0;Mif798G&rl)c;NN#Z{ZI!2{+Au_{I5FD?col<!;%8z
zF3#OdqaXO5>uvrEi}uUAK)>jQpvUEG{K(miLEVrmf|nytZR!Y#7vJ`>T#z90f#ErW
zB6<-CQLx}I;VVT4=`@~lX=`v*+ZL3_-3ab*(m${yxEwOD>@(zC@-8sosraH&dMM=h
za+A7!@dfxiKj|T9F%%jvHWMPe(odtB_6xW;VO}l7?CE6cB|qdQiA)Wn#Rplm$Q0r(
zy}Kg+7?8O*%)j_R?pw<R&l7xLZMhWH81fgjNhr45ljf*}`Eessf9D^h0^2`Od?Go<
z+u~$Gq>^B{EnSd<X*V`qi!UAA%BASJK-O}_t@aKiLzz+W0TwOnFUbpq<x%<oj#6XE
zCzMMub3CYU&{;u>LG>VWJ2KHhnjmD*S-G?;3PF~br&d-|xvO7L0p;fe+B4L`_&kZy
zzw3{H=2S%`S8?mOXdv+NSO&OesY@$hBmF@EN{G`EVbTLk6Y_+6prNkFe;;l^bJXR>
zz^O`e2&qF<N?vUY@kg!*+igOeMve+-ey&K(AEiDhRRvxHL*%vs5O4vZrC(AB9s@;0
z3jV3~ZJ2}QUfY~r<b{4i;_rIdwpnXE@`~vrlw#hUtF*;UraN?rh(Tt#*uxe#fs30w
zteBTsuC&d&-5rQFLk4wN@e-X?BdomLUGdU&JeEhXxIzu&*||7Y6E`7eyy*YPiUf8h
z{R2BLBQmgxT|UX1U<M%vmsb??Qp**opw0`P({1sFc_15U6G&%&g6BfSY>cKNr*Fu?
zy4LoMf-@lfa?NzaY6f-~;#UKk{j=RdixqoZmQ7-dinqVofPi3(Jt|3`Sk93DGj^~?
z&BG#|AB%2K<c63IUxA~;CKZi6geVoH`~fgor}1s1^kYarkN~E3NMJH&$dDcj2QQZP
zXoZVQaz<HPT>Qvhm7Mn~#m-ZjQ!oeZ{0LH3BxpF51!Rgsr6tW(V#tfPtVjAr-34Xf
zLks(yZn>k(8Kc<wt)`YtET<3AyaLzgqKQnAXbdo%Gg|id(@}jG4Sfi7x-BVA6f!yt
zLD$AY;bs;z?TK!h%L3Uz&OwA%|1Dt=%|*M)Nfsl5EGB;{s3~^E$IStuAi+;qilrE_
zG+IA`%+P~&kO@rO-#pSjQmUy%gyI~p>gM*E<8!d?A0r?N_Kdmz1iueQJ`N)8DG-;|
zMcYSug3=Sj^?B&{FXO>U1xPKZU{6Y*@`9zfbusT5cn8aiAn?dYuX4|4z`~@@PnI6j
zREc9@EeZrbin*P0aL<z@pPz^O@DaA>S@Ul+NIAn~E-piQC_Ii;Ec*>yS~OiTLg6L;
z)+mAQv`d%;*(l6X!WYwYLSOuoVVWo~a7FV4WQK2o8oEP1F^kg6DNQ(NAEqnh&8Iv=
z7L5UXFyk5lWA%wJ*>VPjSe<0(?XZL~*on|T)SwSW0<ANWK%53e?Gr={52C-eI6Sgv
z<iTUnE5q68gbZ$I-~`z8G{Iuaz#A#$7+bJyp-gX!3$x9N;1@%;z)cdDeO$1(;KS;V
zmf=+QPb<FKuP}!HGM;=ep1#w33uNbbx&|zl?f;wc<f=#G33V5g<sVn%e+4nzENM_!
zx8MPE$@Jlq4gn)bif7lj#3RP!iOcAewzyU)J%+)}`K&@R2<ro)r`U<`=`>7*M!Ns}
z@%9nI{FBto9Owdlw6sJpMAzc;P>UwWE`??=der^JMg;c(l3KLoPvjSDLVYa_Iq-Xe
z#|2|rWGnwTnJK0!TKslGk7^fSDR8qyWkMR$5K}utNNXQNL1AP)@yN7XRM-r$<x+CB
zTwE-ST!+Ebn+DS=6hDw}>|b5WS>U@m5vK+J(nDYYnZ#qc)JLE=_5p^ToSRD-50n_x
zvXQZWa*Fx~PSI8Gff5DfZ9^0PGv(?3t@0)|ua{P1LFerJ|Be3iqWk|(`ny>oL>CVN
z4;86p2hAp;Vo5u3(Sm}ogW^=s2$zCra{I3p6zx<{v{ON3F~Z=D3kp00lMfD$i=OWa
zk{RNoAIO(WJ5syxYAnnZ`7aP>80CQ&2GNLiA_5O#GfE?bJoA;57$`La&^QP@R)^))
zz`$ctY*ryn<BHZnG{C~<cjgXZ;||MNBBZ4<)S(?9f8wY)jKa!{+zYDU$)K(C5cLCs
zLCf3W8c;w~f@tj(K&=cL;iTnnhH(lDxjFDuqVuYqhDYqK<bQ=bRbFn;7PJ%UI?z8S
z(hw@7eI!NxDfIk7XisnTIAz^DKVko<WjqNX27(e;ikFPUe1Ksq1dG8ogFk$El#(;}
zQNu#O5v(`04y;HV!~ceGqRvZr+(r@mpBEZfnvhgL36ke3%#Vx92kcQiw16N9N)I9T
zG8Ph)(8T$f+JG9xG(4we>LxcYDLM<rB=quC;ZaE)E@;_d%Kr}?)<pT649*rR(SjJF
z3!8X~7c=Uyr;1Hc+9Vb?>S&&V&TWa_)F0a-*(BQlTcUCzrU+Y9Sb8ChixDuzt(-1M
z(w-j#&(z83NtpTnL?uxPB8y}ofQ?K{o3kR!Z7mwVB?B<w1ZyId*b9X^C^3dtUl#U(
zvEJ)YE~T|G@kjg0B7Y{}rO3EZO6>kdU`7q*V&s9BxfCC)wD(J^Y&Zx=@!{h9xhT2x
zD4L4%H-+M}jR8<By=2r5Kl6jFhQM-cOLakXS*PGqu#w{zScTo1Gl-0_uA{B0m|za8
zDCw;;T@QvFw_MO#np!K?l#I-~m<x`u28@faUa^e|GRr{Qla_Kab7%06FjZmotP_Qb
zLmem6C_pcS4m67zb5O-_Ei+(*mN^C(Ia14f3z!tAWz_Mo1i%LgT1GnxpBMlt0cQbU
zkH*=DUdwz5cq&oL3>>3no=Da*@>DG|4zPKwmU%1<^#RIpTIMF;&GA}hBj7e*DC#Ex
ztbjKGt_^kC{FmeSKa7j<hwuk*qtuvZ`f^(I$<#{RlRt)7fE(q{r35675jW_|V}$Js
z{4j!e(lGJC7Br+GS9}qz_Qs(J9m-&D|3MkGN#!V7hoUqpu+&G;dw<B*b4u(;a}(4_
zBkl3+{@_@DjFez*o;RmeautDxN7?g(9k5vGcNBkdI`T`=*zQLvmeUR7(j$-&z$FAD
zBZ$-Kk@Dvf;*nD0QN<-BJvbs5%Pk3uMM0P|2b&EPfA~;dgyj!Kj!Lm}m}D4t_(YAR
zRL&iiHVNqyHH0K>qCDC!!e@8Aj&iaB#m*zBs8sAMI&n4d4CFR!lhT~9Nvp7S!c0Xj
zjR6Nq*j_-Og(C_CVTe~^dzA}&3Mx*P_h$;`y+BpQ;CBiNJZj%0&o0)n)F_COX^^Hm
zr@dmQQQ+}sfvbDORmC^d*omKko|Mq*s`Oh77h0*HZLo%)#QX2M7J=5)f73N|YY25K
z1RS}#r4_oR{Y$shf9cjHrKzO3ADU|Lg%f}Wy#W7WNB+KVLVH{-I`VU1HTuR;-;`3y
zxC*M#+=0Mi4Nu!fiWlkk5(0TmmO57P5=}BF4?>sxN8nwUzIX@-+%FZBq2U#lRghTV
zekd@B);r51C6O@+1s>*`bvc^-IR;<?Us@5E1#1G1hR>Pi#1{5%oAF(ZfUTqvs2UMS
z+$4dpmgAez>inA<&+!vUHJ73ZCHGyRz#QHMoBy<3f3NV9k3atS)<y2}u`9Zj0&0QB
z@<gy%&=LMKNyxEWmV#->FUkA^GHI=l1VfzYM2D+NlFZjHA0de;Xj>NxS?zbO+37t?
z<UM>tSCTBXQp;^OvYiEI;SqeC7$PN)<yuhkAnVd#=F3UcnA8Im%ZlN!>vX8CNBe%5
z+bC8kXJ~VX<LiQ`0GSj>)%k5wnY_w%3`M|obcCYE(uN{m<O%qt*n+To??*BHsL2`b
zuxs>!NNler`!F0r*kdHLA&&_Jzo1v-PUi)14S@&TX;;M-skAK#n>5ju9zi}hLUcox
z`o-L8HO;2@ITH%aBS=AjXaJ4>cmpm;$@tcM1(5JOAqAI=`JKi12CD!aGu;s#A8U_~
zkJV~QvajIB7uErl^Vsd$BEuV8eopyLw=A9z%a}dlEPqIHu4_uEXub?rrS+^ioXc0!
z@|9CgM^4)VaGP3O+DITNZ(A!)X(^G}l(tqDMpjPWDKNrsHCW0Pm(p*qFl4WwZvy>i
z=spr}8_+$TF?XZ;D8}4{?s~@D$#THma$hmOvQ8OO*T!<dtxj$^Agz;H4#>jsu`+&n
z4p(70z?Gnj(XrCwfyWm1!33z7f7N<C6+a5F5-l$6j)~75T`~D$X2S=n5bWa8=BMch
z1?J#C>7Z~yloz%*WLeXtNwWCqT)b@5bm<{1&t-G4Hzb>9DUw;5x@Vu`)(KL8Le9<)
z2E#fW%=J?2O48AeMN$^@wGs5D+hik!Oh`W|%bt{!rPY*XS90YRp7|PcuEV5>HFcy|
zgnt=k1fvLeMay7F1l5HXvdHR3AF4x_0}D5~QostL-wdeh08LOMR7{y2#OGjS3%aGX
zunJo7am^Trdqb{-oV7S4cD;kvh^R@XL<?pt^#*UDHKt`2x$Xy))tLL2$72uCq*hPo
zJTOj!`W`NbSGQB_s?Z!-;tka+(amUe`?`Khdnk4hM)0wk<=zxz4xG-(lt6~55Q2a_
zndFVlS};cECJ}*$T`Ri7+&#f9s(>7AAGikHVWdrV@2?O$;pZj;ze9`^ZoUb+e)f?L
zXQ!<DO&-U1>wfbcxQ^ELSVymK;U;VA+(NDp%dnd1j`*Z_XecS3L7&y;?il^pZmj`z
zZiRX^-A*fZxnU<U5^^Bl;G=la3%WslEjSG8^}D74HDeX|H!ziB2+)L2-im}94d(pq
zJ_XdBz{4P*5*V}lv_4Uzsmf8=O-b>JT|)xP@kxt<a3hC-r(-C~=FvbbdK2L6inJ0P
zkFbbVD*>qha~rP2sTEp0aHk&(+XC;ETw5Ia_!LC1l0YrcbYMj>d>?cSJ6-8kI~=@X
z1dt^xFX>xqy+WGO;>@j`Qvs%Qw67BO%gzd$m11YV)l>+_!#>>8A!osmA64Nhxx?K4
z6Fk~c+Pq(UNc^5F|3?1iPpD&@!Y&ikh=h-{!lr=0*MlL9Lt8t%FF*s4VrFs-LPCu2
z(2C3e8RM7SZWmuwiaY8Uz-9`<5whT%Bk%S#9C>7W<kiw$dOOeIOkbrtSB{@9nAEy>
zd?|&BKJ<%F6DNtSlv@5!=7ivr@79W)9@2^!>Fqf4?+;Vs%0rItB{H{e;)hGQ63}X0
zT$=aC7GDgHWrx6P;TN0dOuY3|GIzQ7N^8!MS4TyK<7rSzF<!9D!4H=1Op)McPU-IE
zyi1*Tne*=Myn8tBp3b}6dG~VOTRHEoop*2Ny^ZtU)_GUZU3wc|LgP1B7LWzgYXCw|
zu5so21j*op=+><S?vBD51B7&X&!QAPf>adCD5~Hvhspjw?SQ3D>FNXh*ubAu^-z}t
zEpgPPo7^3)e4<P1q8UB7(iiyGtv7E~n)(R(xmheV`QxOlU5N9jobzA9!tdg&Jft*o
zl=(-?eN}R*Vp&)6g!hZDx`#+;9SqAm#|6F3zOIFak8?h2*jI7zaEhzOC{Y&I`B53D
zaA~rTQ^LC#AwE|2Eufr$4e_Xb-dP)GC5XE@nN=XLpZgx8_D=-%i)Z*DvNZyQQdIfh
zu|NbK=AxMe?)#Aae__GNz<w@BU;*_*_J@>mm3R<D;SvCK9)bz+5d_0kw-7|<{~(8E
z4niP=78M~ufuX+>LbDPcVuPy=IrSGkh*~(s1qphfE}Z&{GMbqnF*Gwl0ukFM>mW7m
zCjzCG-&CU&*2}aXe_xgz%bhO1>=q(v=1P>uVs(2i;v3R07`xX@RpjViNQ8?c%Wtxg
zT)Fuh>&;2&rk-N_@o!A?(!^Vp<Ap`&1M9~6G#<<0gTe=RaI_R#%4+4bxzU@&lGV{W
zOSqbZ>q6nWSh(imN@NDpyWBZ#@!NJ~2yd*+YL3yDCfY$Yua=7X(Zwne(drTCmsus;
z1y0UsW%^R1iCz1J7B3xRuwcSSuQ7;UBsr?4=Y=JVGxy+PBcv60i4qZ#xxHdnq~GAy
zaFnJVgIlA9$=#NIsqS&hSNZTgZRcMPDGGn136FJcEsIQT=U=2WkF;V<kxh3A-zVXR
z#C=uZJI&H&;bnBr(q=K;@Es8{xi%U2<PAT7<Lf7+CJU+ed?>+eFaeQYiMIJbv>e_|
zbwbPFJ^9MH^v<J_X!7(9H|t%57iHzR@O40DO(^Gw<LSK#M2>!@yBgn#jzz+*tHj4Y
zM*tPrACQBDrA%ehm1#<s;Oj2_7cid2%7`38<ko=*zOm+W!A>x~{#@=6p<0msOsUB|
zJiW%8wA=%at&rsrgTlH7TlyxuburWk+MlA%P2DDm$pgQ2`YC?9qSaXX88Ccb#a}!D
zM~~m&EecP+WcI{24)wrw_%`5LmmJa4+!`MZr`IS}7uynQVC*2)h$6hUYm!krF}2xf
zg45yWZaFVo!b$8l1rXn9rCcV@nNM1lTw(;WcLlNxbu!_ugFC>h(VbF9?<UIcEu;Lw
zf-cM+j^05?vZNqZ$ig=cJbjvr{i;&>`6T`r+7y3JF)g;#=*?~-6QX5Bx$aU0p7WLn
zx165zOX8gF630+@=cug1$0=IkjCio<F3IXn@f6|^jY6W4B+{r9Y0&MzqA`|eIC^^%
z+lVLVB4PMR$b}&AZt4+MHBZZAyoU^i7K%z*wA%rJHTWz8Z}QtRc|E7Y=NPpAho20`
z$G8m{8wkA=-z#L;+R&r$@lzt&QKKD4?*QQ%jO(MnM-q4>fkzT}B!Nc~cqD;G5_lwm
zM-q4>fkzT}B!Nc~cqD=Uzezw_$T0jahG_y!#q$`z_jvA)yFb7iK!07fF^n8Qe@Q4e
z0dfH=0P6rB1NHzi0Q9$FJMsY^14;nr0lxv<b}&pwKwrQRfF3X%@El+v%GcqZgmzfK
zQozfAjexCywY%}Z0ODQ^-~rJ9BkGI=!~+Ha`T%?YazFuS-2@K(o&K6(z5|p2b^<m5
z)&pJx)Bt`1+y}Hm8{Gl@0Yd=sfQf)?KrUc8;A6l}KndUopc-%yuo(5{050P>1NRAl
zF@W=sArH6?xC`+3ieZ$1E&w&4KOhV+44?;$155|Z11tnA1FQhN26zYXA>ebsPCyah
z5a1->9N-tgb-;aq2ijHwx&YLG{(xryBLVcc47||aNyw=J@Y+tu5c*RCIs!ZZO~|VU
zoC8z<wgWx{d=2~p+;agYz(l|pKn!3YKn-XQkO3NidkH{)WoUB?;2me%QQ4VOOqtO$
zvooie=4LNa1@z8&g76Zi%uAV>xnT74n3-9b&Rh|fGEh2i=A0RS$rm$b&Y7MCqPjU5
zs_aaYIeSiys&@uxI`bdObmoniGt=}`%Yp&@pXwiiIunQ){7t4WDCBy8lJSw}FzxA^
zF8Mq_FvEBiF-lLo<tCpDP$9h@cf!vFXpyc#Io>9hj|KQ4y^`tRsloF?Kp4`MOgqnZ
zc*a(qJOJq}xPySa01%6G1M180oCNS;eC0o(ejuJrfPpBlKz;1m$<a%>8tF~A6MjA*
z8fhN&i5_|*_eXjy<Kt<-^I|{*($(lsCp>2Xf{-r6-5an15RY^d>PzuF2GAbuZ$SIK
z@SF{J3gu;JA8(q-rviE+y%Bdez%sxvq%Wa91SlT|=z{cWv>%1%=K#+jeG=_=z_St1
z7ikP$ImvT5U?kFwsE-4Gc?zH-qeWLbctSh!`G7$vKZ5r0a)^97pbyfY;!g5@5fFoP
zJ?eYmc_IKG0DG-N`_u5e6fgwob7;RSp7Cylyg$-=aBmBE888azyH5QlBHa%Cw>b6x
zEYbr|UIO~W?-ameNWYIewvgp{fJme-qMZ0i19V3EUrzlmLOLAj<4*n0L>lJrwH0^b
z*9I7Y^mWuHeI^5Z8KvA!BI@6abSTOXIrX23bZ?|T#+~G41?Z5zjQXVibU-(x-*oDK
z3DSd+{@$to*+}<8`fJ?Dp6q}Gr0<|U>7Q(-1NvX;)PD}r(1X_jr~XN%y^#J8cfz*-
zqLBUt^-2HZ0g$uTYfk+?kF*Bq(@y=*LK=4M1*ah=d*T3bNZ&+#>Q5@5Qw#ksK>BHv
zf9KTy45S}N`g7c=y_W#Pk^T+!NuJmwmt)*|z2nsX3rG(|`n*&BbCG@$>Akp<J-q@L
zjr9HhF#d}{pY%T&paTATxHEuUfEMWsC@1}o1^6Mo%BlZ_NQWVP%&C7C=>Vj^#GUk2
z0Ek8U8tRk&|7rXmbm~6?IBMW;#+~r<0ntd~XzZc!|AtfluJM1yssAkC2Lb;p+`R!S
z0P#rQMt#!fKaKzWPW?{>PEX)}fV&%D8DJRFKchbBV;rCh(rcXhe-7zqkUr(qzY*!a
zNMo{iX#D?<`lSDV8voxq^*<dreNg{1+)3Uq0%DN9g8HQYiGc1%zwOljQly6<{ex5g
zbCB+j^f$P-1-uLxh4j7uF#bzHpY%Tk@EGtn;4T5=0V0w93FX938lW@Mul{NLpK$7b
zCd!{c`8M2%UmIWq(l=0_^!ZQY|FBd4nZW4{{7-Nvd07EEr0Y<h>?s}44e7U>`d@<d
zV5HAF^*<Zwen{`ey$!$)NI?1z)F=J_)A%oU>VFz=dIA3<+zH<Th(h{T)F=Iq2XsaH
zb*KKHM_Pk)l~ez-kPbw87w)YA93T$qTc}U{`KR%J)T#d&z<C__U*Jydy#yGJ^i|X+
zdAi2`yH5SP#{Z8_{m%u?lfd7Hy8`eEU^LPWMv33w?S%IpJGi%Fy1Gl0?cCj&&h8SK
zuX`lZ&0V5Zx=R^9cZr*i`(up1yF}IA-HYksE|GV1&ttS;UFq(I`gy3|nd<wsbN8hB
z9=`5VsQzT7yNv2fecT67{owZQZK%F?NB3f}KK@_C_T*CVDW?~{WNXE^<K0df<BbEr
zHaH4yi!(rQj2LIy+-wS_R9TsGW|&yjG&XbEtd{v1Q%qA_xs*SDO4iH_RmRL5)08>W
zGF7Izb5+x)WUHo5p=y6EpEfrmvqgT^OjBm|l&mLRtx@TpY38VMG7+gf$e%j%0e9J%
z^AP{FD0`TmSd&<qJ!Q@!SC{5yH?y0wX!g{(Sve1A6MIfPSF;bwau8u=W~ioS&7C&O
zg@dLal#2zXMf1=>HgifwX0~ct_B7S(nK`qkn5MCedCsgka~I4}Im-}a&S=qwOYW|k
zF1d^HT`+S_#@q#}oSDyMKA<yg?(BKlnK?N#=gv{h&NQ)eGZ-e|Wi8_m=n7B*7(k<4
z%hUiW0fhi6BR$WaH^nq_D#GLWnb|~y`ZCo#eLDEg%+8*hP3f6)a*#7~+RV&3CNwe|
zF*YMufD<FfgaCYYGyZf6xBpZ&2Yk)Rgyb@2PBWpMDWIWp1=B*HtcsdDZ&CKl8LUY)
zAUr&@-&4WCp{j%_*|SuU8ChV5j;Up^SPxjQ9QNA^w%Z2w+K%bKbi(_{J(ylhAQQr9
zm?*};Ok;8w3$uYKWqxAlYfJi5{^?&k)TMvzo&P$368-aW{_|zTe@f;cQ-=Byj1iFs
z8b57NvorG;Gk}R?rZ9O-F(Z-WNhEF(sYE96kjN$85~ajXqLKtlw35j!+jq6;YKvOw
zh<}~%&kz4P<6js2>xzH=_}2~pwD?DVuLXN92%6INx33eu-soI5+w+x1<Gj!hrqym(
zlkv_|1!voCEIhZUd+n*3f-}co4~*aG_08fhmwNUq{B>2geJeARySiOhZ863^`_+x}
zk$dx(ocz8^-K8I9C+;}eSZ+OGNm-lKp=i^rjOT7oy;pxQbNT2A5}z|!9@C}`R^0i$
zjoe<LnxmPhoEd*9a`LI{XJ@>B?2<HM_(@sZJ!_levv#!l;LfHUp;>FU4m*8t_gU@j
zJ)i!RRsEEC!jHP6ZBCy{8+`1OPlM0&d4@Tkn44Ht(Q!)Uz8#I*AL~`NE#-|hUmsO`
z@J-=6g>C`z0{2N<&v+kD*S7xhrNwifY!}at{iNHJ;=%o<?_3#qZobE}XC-@7$Jh2%
zp1NwYe)(*V9XmZfxU}!xkduY{`v*N24!q4MUf$&On%~;C7k0NXzR+**Z29Y18LK1{
zrv1{GIBV9_DOvv2!I{=k%+%{w)_7z+|AC}yaie@$YMJ8q1825m>T7qkzg)PNTU_wf
z-5<OCFm*(~?|pA9KCvP*{^TEHr)*95E^)^*CT7oui^023Mt<<)$f`BfgJ+i=+xSQ0
z=@Z7<nNfGo%o!L{Fyphz!pYy~^pi#Z+)WxXDZbUm2N$>bA>vtg{l}4Rk1Lg}_r9p|
zKG=H)o4U<9SLJnb`d9B>n(|%S+vg{)J$UAco@*<&Y~NH>-f8f*w7fRk`)ekAv+J|0
zuZvWc!Yezs?R(Sv;!f$C$G<d%4?lJJiv`Eu_U&_4X6bk?r+w>bKjmvORu3`GZnJ5e
z@wwJV+g^Ix;q~g{pEIq#e8+Q1^s9=7;~V5JvDYQt@0WPYOi!J9>+p=s+-C=6b^g_3
z)|~lWPu{NyJYgI6-1o{OBY&7N_s6ep-@dx{<*2>8I-PoX%Vd7T>C;PJJ@#H%Np;wm
z>pzaZHe>g(8L4|d{J~?#(6~WcW4{k<Qyt&6)fYEMN(W7TP8L~ub@GqNKhD^6_2oGO
z7VVuGvtrwn!(A-X_pCoYxA&ln?3gtRypKqSx8D6#N4K6&_Hj?%tND6=K<jU|{%hR!
zK$&sdgpV9mB?FFD?%>`z6V&bV^W(RaWW3eq`n39W8;s^wug-Sc?BTU;=%BWB))}7J
z9a0(hWh3{k@p-QB;^%>1J|EU~r}tYgAOBaIy{CTOb@klh$9_E9`sDEwFAlqS@><ij
zAJ{pT?|XdPac|!EK40CuuwcvF1;cmw{W4BoFb}^~d`ROleL`zVJI6bjugv^>YSRhF
ztSP#qSsfQ%Y_<Nk<87*vEV5B0+oa)B`po#~R>#Se3BzZOIJ;oZkdek?pPw6d`pop!
zKWZB^)lVBf-?MrDJG;-naCGbNTE~uH|Lfm;v%KW%L&2|ZGkmyVyV`wF<=3xzRDJtI
z>iML7GtTtt|J?L#g(IhwxpigJR|n4R`}E${+uwWHyR_?%?&IuN-4IkUOyq#BotI4=
z^i-*#U!ZJ%R)(%|!IBq08kbW3TI6W?@-r19c9$Gm&R@NA_)OzZ-lKPXny~cq9WVE@
zymQol?MsR6OGYYtoiUu4*SPRskyocASAE{!=a(H%SM6Bq|60DqJ#B5*WqzBPx6a<_
zx8=>lgEpt9FZjhjE6efY(8!bTv>o^D`|A8PKl#49LKU<1qbUnE@BQ!sf9==G8@$?b
zzBF^|{_j8jJUzYc-I(ZrBeUktyf<(D=d%WcUme$173AgFdUlw9`x}E|e%$Jre&E@p
zc~^onXEols(RcUGk^%3VSNYopuJ>H|$DVgPeQnQgyXgGp-eFg_MmQGT$k`jq8<%w5
z9~sg2{8;zViyESrPOW{Z-{_J9{z+#g%Y9dCcek}$_+B5DoC(|4X8-!I_{QCjz4Fm(
zt-gEB-ocAGG9h+Am5!TwXU-wRg#}6JyTA6$TEF4+P<z4aZC_iZUt4v)-R2|Z$M0OI
zfA#R4-zQW}&F=QgqFLv6Bx&ExADuR~ecO(md-*E9pBJWnE3((%k7nJ={AJuPi+g(=
zPR$6b9JS%|Rg#PEF86!v$VVZQ@9pXP#Rc_ezf}(1-p|th-K?!%FMgtqJ$TvIQ29j6
z(m&V*nHO&^8v5j}SoI)NSFdiNecQ{f?=i$}v&W8^cRq8`fU8R<-@oz8ulq{w-Cw+_
z^3>q<hmYJDwA`}WbJd#*llFWWp83(HxV08dtIcbB9=x-|tKjhG%F*dpC$-ILjQMux
znb|AamYAa2kGtX4EAn#jysYBf$OYBIs|LO9@k_s#_wQgn$j|S(r_1ulXUFdz$FAiU
zM4dU4HLm;Ue!i2I4)R{tuj}JK_%lP=Gi$#x46v+UIrVeym|@4iI__`$A+_;p+3Jr<
zuAX}B%+1<8o}X{B`|p}{e!#lESNmG8ESh!b)7W_@=5|eQ>fbl!!i7QSr?2<i|H8B+
zKB;Hsjf9_XY<1gMvbpPwRr$ev*1!8i;ph7=-G2A{y=RWxIQ{%R{^*`rn{)4t+xo^3
zuXne;5SIVR7PWuSHDAxrr(*hc&si|QbNhvPvA<W&N*rW~d2Yeh^l782?i^P9a^d)q
z9Y=24^Q&q`wtwx5*1haIE9R|#+ZMSyKPJ7G)H5rrOW9E00oJx{1BR^~Jwv)VX=%}&
zMag-Gr^ff#AC@<<vDezSKWe+}+-trccV&`(9yeh0-8ZIAt*SOG`mWRH3nNmN-qEk=
zSM~f!|07d7EVuU?v-`DytN7hLD$lI<sK2pv;%6n9!{@Au&3baZ!ORb8|IB7juU^I^
zwLCC$XuC^`K6>qg*gdaI@49N^<9(NZQ?uvr_4n+RbyLsZE9!Oimowj7*yD4z@}o9G
zEzA2X-MVV%SL(`nO}>X`YGQsF_S}Md<9E!;Jl8mG>Hep^48P3}i@o*b=U#;k@3wz0
z<jBzF+4t11()fScSR$EoGGCguH^%MUCNIyrlEWTb7u#jlj-%ZR6FanhMRQDX+WLB%
z3s;l9Gj4bBGQ3(XZ`JReR)dF6XgzO3AOGP8FLmp_;Qby?ber7$)7DRReQU~<E+s#H
z;`jTGnVl=HhqiaDz188vK3}$56`!N@85iN(EBL<8b1xTmOt|!1r<$0Au&SU}!e9Q^
zLCsf9t)GebEqZ9{{1=Ced8Q~LQ|~r-Y^RBX<}O+H^q|u3LnWL22IlWe9kA`xn&8W`
zPCWI4q+Q6$pJ%B*dS!F(`va~%esFxhKJf`tdp-a7`kp=C_(kP=L;YC5_Jw_Woc}s7
zX7b%9o^3TGpwa)?ex>ub1-)7Ed;ibgfBMNH`<wG_{W|v9&(pf+yb*FP+rRg#3j#+c
z&d<Kq$)tPhlzHJf+tSfH<6h_}Z?ojFsYe%YH03UOwfnGzht|uUyLafo^IQ7w$$BYz
z>Fo1&!sgblyfY{3#T~Q8*Do--jTyj(hTWJcf8mR%Lw#pYoBm1Ql*HoN$tSBm%>3z_
zjEt|PJ*V4e*33{Hu8QsSp6`fJJq&S+%&SJ;opyfoVK4tt|JpS!{(~RZCait4Ear;_
zkKs2*X?4ZwWzo@3eH)oGR-x_t%ZOp!R&Y^z_FB>mw~*u^d(5d`r+1~SC~7k7{`i?O
z7kw7%Pc7Y>$cJAX_oG2I{>3ZP)4qIZ<Jf_#>e8iuJTYOMZtld{PkuHjw`=HyUC-XC
z`R(YJ7tef<^V5WF5x>kjbN|<;W)%MH-sZVWVI%uoRj4lgmh#T~^-~%rU%7PgN&ZB^
zmD=TlKB@a=!pzGJg&ppdA3t{YovhdIZ}v!b1Sz}R>H1vtAH&Mtxo!S@LQ`xlbK?a|
z$@M;i^BdZw##~z+>D9O)@bK?<*4S@->ll4=a{9tEsZW1h-PU&Z`|zKJoZa*Lv*)>Y
zxBYnhvEP6AIqvCm)!wtJu1?>4dS~_3lX+YFosw;wS{d@)`eVj<znn<#qCT#?KXL!#
ztJjq+?fd<K5n8|UBPppRe?+V)eSg`B;x&A`qD@~U9DaBIE6~)zifip!A2fMJABmd%
z;<sH+6dmpNmD_jP*S=V_;O^{|{f7nqt8+l@tLuh*_}V8)8LwZz+;h$T+?v%*<$K;e
z`q|QVUh5FH?!85K-d4}uv9^Qzf;UF)9`M$ZV>jLm4z<}mC&jIpc%jY9Gr6O$)W4m(
z{Oqk^+_Die+m2ob3JNmbwCrm;cG)jmy5}DI{#;(tkyrDleVAx{#;?;$ZL&|jxW4k@
z=GVVgZTe0&{o~tnHh!{rVcq9(?VtFf{ikz3>wVy}PyO<)ee`5q$cOWj%^M?!?)sqY
ziKg{8qMmv0<9mxYy#4y#_bYSCcKq7eWBcBZv^#CzF5BgO_S>zRFBRLSDn@*noXKrr
zdsgk96zlu7$4x`wfOV_B+P?h!9!rh?H{VYjx9`fpwR>s&XU^DD$W?fK{M#2h+NZug
z^_8a@&Od!_(yZQJg;l+MHDLSx<)h_GGHSk=D|ty$Rk-i;$RDbW*FzTkSd*fhHul}r
z&iXsSAMif!D(^ho^y#pQqUV47?4$A-QSxkapSj<CJMV?h*7*9h>-Wd5jYHq5^n2-X
z{%DtBujIV{sp`O%gTtSb5BcJ$_2VmE_S-Q-)2fnrY3s}|{gd94>R-Qz|DNlm*MA;-
z?4=hox7R%L!?@9}932`EvfxGKrOQ7p7(1p-^%X6<FR|&proe`>cVCa~8{Bi;=+t*E
z-kdw)g;(XjmoNE0?R^P2l->LAV~A8lMT%-#s1(s6t&CmShb+-FW?>jJ(=4`nrD!ju
zMcU9pc`Kn5kxF}7q#`Y(w}rQ&MT)}zKF>45sNV1YUjOTNecyL|pT{-NIp;phea^j|
z<vHg#Z23^<!jCYQveao4&Wzr4MJFjWZMostA@*%&mys!?t(%)PzScP$nd38PkB`NX
z(WkczGrj+H|GJR7;e+}gxp}NsWqEP@;!Dcqg0w|v2J5}{&ChI_U8Ci+>P^YL=dm#y
z^+}~mLmeV69q6xCdM!9dH2#_r-6<`<>Ps@;W=qHYA2Dw12Hok87dVeCP#<U6>-5#e
z>_Z3F_R|}h{ba@R%AgsEk>wMbM)0;Nel?iI-m*Jxt;M9o_deUkdoH#)WvcS6U(FHc
z;b-rD%y?I`wS8T_v0c#MJ)R`N*ms2vAC^>4a=Kv>+w#QgjV)tunnh^KwYd9(gUv1q
z`>&5GogVNq%dOVmvcuCwKe?`1w01+5cH?yIZ<Z^S_KlreG-gEoNJ^yFt`n8dH{8tj
zpEB#T@B2mfUU_B5xY<7(@~(qBa#o<K-I~X5>L*`cnUElOkn(<9PK)~%+JcuWXPWxV
zj8olw_%(0Jh~5`htA%CE%sW(TdG6xsAH61xcN{#=<;#iB;iD!eX{M}?ES``&tZFBD
z{*9(c<1B{@7Zlpc)7g{|y+ui1qh=Vo?o3Jz`1En~t6oDwofpSceo43&_~z~DYMMua
zYRUBayyz-BEVyW7QQ6<7HETC7V3^QbDn==#gzP?-aZcsYMTPTbyi>=is=c*#y9kGM
zjK7nvxq9gtaqYGKx2rU^9w|O%Xs0>Ed~|qvtb~2_k%mI_;`Xe&!aX-cH%EOu<ZYj%
z)0jEqc-yT-nzqUf&f$!8AMb23uz6ZX`NnjQn$$9N_%_Pp90Th4irsJPueO}rxZk#K
zp!$a)DjcW%#qN7%KQS8{KW*36B)4{B<6Q-w20yCnQU)vu*chQ*JN1sSS>{p4^_sS?
zEfmQs;tInPpZ_(m*?(c1Z@pvkT(6HKl~;0Y=yM<Zd1u4byP4Bt%qhz&0t_zkPOb}I
zR?%?tGQVP&Z=am~wJ(Pc`n)3Q$oxu9>A+m|h@<}dOA2OOjZuhg&)oZJm)4lRW@%<T
zcfEwe+U(UOOCHaiSk0g4Sa5&)hZRbyJ6`AKEOk^nINUf#*I{nCwUICH`=#b5^%;pl
z?jtg@Z$;nfC*DpkV1HEZRgLsNLd7JhL7hHvm#X_&m9Wc01R+hE>lx|OQkXjqsy|sf
zIqGTtq2~|lhwm(}TB~~6X+liSvU6|pja0UrAC@@mj0Q6#oBZi>!4ik~VoLSU#}EDp
zd-n2e(}O(sxcjTF4df;-V1^#K&=%Mdy`FXB-5>>jSB5gTs<r<d#-`qCUuN;h*PS>T
ziykhfygU%JL^xaV<-Pez5A4g;R<)(~$qSv9ccj%SH<|mS@J7Y4q87`^kGOx?*7!@F
zR;b-QdT)-eL6yld_iAkB^-A~H^JR4Hk*AvS7M#31`tI2syYkPa_a8^fPoec%+xu$2
zs@$Bu^<yUSm#y&$cGA2^A9nOK+h|VsQ_2>FCrgx*%gIHJ4>b&z<g8k!d^&GL>iL)H
zb@>mbM5^34&>w4=nxuLpp;kRvXL*QPVehaxMu|-B&esfoh0sv<COs}aa23ns(WgMn
zg{!>dy{<y~(v`iNE`I5M*_)MJb#=g*dbbV5`G5Z?Si3Cn*{~X|$3~7D?=SoO{ect9
zIhXD;Gtd3b!6HojpwQ&Syqa{%oJTt<58b;QcE6(OyEUgiWGb)f$MK-Gc8?e5m)R&8
ziKZwHd-Z1@C)zW$WjEY<Etx%*MESG0uZG5re&p5O!Fl>*{;HD&><6lM=r2<jRkx^*
zuey<(U6wrRTIG>bz9;7lHa?}c;><b!Sr^W7kH624Bkw+c^0eaV7yZOJ<-7lWXg_0L
zdBh2&Ck9%gr`mCUG5QYJ&YTsm78Wu$I>hhDOZB^bx2bl(jfYud|4>QE`Otrx&6?f^
z%ZDp`3g#%6w0{ls4v1w1l@8&WE#ZYKziEG<8@}%Tgy$NMqy2)O&AZi7P{U6sZfqHR
zrr3IMcEZDoii36g?`?}Qe^heWwdRw@y~3c68AaYf7J16g9CFR(KT@0U_(UIFCo{!)
z%@n2R#Wjl?FC7W0@iOHlG}>{Bqe|%~Hx{wuhU)Xn(>#J-nBD3Zv7@lBz2Yd6c7azf
zgGpD;&MMA5*LU26Q+`|hPlhO!RCXNBE4yntu_|T5!s@JHdzdBJ?--v9Bq0a)lESw2
z*{iCY`BvS`LZ}k7su$)xaL4(1D_`VC4_cZtA*<hMUGuHw342~WELL0gwDC;eCp9Bi
z-!Fgg@xcqL;Abbljd&c#TT!fiyScz%AwN5!R_Ba;#M<6|uRHpO2-wQAZfYv@_20}&
z>G&3y#i56G+}GybwN2~uBC=Agyun2&&U1$1$&$lC2K2JU+Fu<x_Re#85l^!2h0Lp}
z@Ox@m)0aK{(X0=dMOoD9!jvoaxp$YF<aN}aJNHTN=Gl_<)RWsx#+*8sakk8?*X>H>
zZJyQM<40Eooj=KrHoi=smmd(UOETn7*nX;S@$^gm688J`s?jwfHNuA!3>%_rN||gH
zxN?FK^%9eNMd^=-CffymhgZ8&lCE8^THpI#NugtFW8M0{nyN~V<+=9D%ZhPMi8D%A
zldN}lUdaG=YSn0s$R@#kdLw14aaN_*^t{)D^pf)`d&R{kt<+8S-GgQ7WE-_U$uuk7
z{W>Bbpo7cRdqA<Mx$UQ(vLk-XfsLtJe;v-XBNt~z&_CAIX4HKydvmEeZp`B=xvYSI
ztUqn+Qs44JZ;cBVv~gybhGvls{TlnKs7@T9XC78#XZHDOfJ*Lrf#;H@P?kxd;peXh
zOiNC$(@T_WQAwLRIJM}zdi<ud`kB>HvvV8GMW3TOLh2lfDOYs=@ToSO{UOS=SAAfN
zO^K_~nkSxmSGQ}eSJ<RpXqhp(F7CW}Rf&1p6}6FtO-_B14sRZ~Dd~>?Elkz6($s<1
z8n_{%mU{DSVSwksG_Ka#O%@f2N$NYRE0f)>-OAK_SKC_trL}aMFtE};H0t#*OV7M&
zU)T6lZS?^@{k2998DlPZJZCgz534Qo@G@8c@Ge!=cPTSxDkNqd)LEbUV#?uLBMpn%
z79Sr|d*YNuSwrf8IHT37x!fBLV~&<lwf_DdV>kW<D<XK3MO3rd7>6^%RCUEl0}Q9l
zrxtzkaM*M*id8LG9Mfp}=Jn_H_O_Dq56cpl-6~C+6Sv;1b$6mlVNQ`}<dMUy8MES&
z=Z{Lx?4z33dP5_tbS<qhz}2pas~%Qmaa&xXzVWl)0PDXgqe&OJf{TwLD6u=uD(w@D
zUMr_#c~^>b<Kvf5)(;K#D_m$DQJ3t;t*X*8avk2!EQU5#*J$rtOz&AiGBzMB&Xl?#
zD{#x!JnFq?O;@xpH#T`UmK@&RT$S`NOQop(jNYardrhlDSHS|n&Csa#_XQ5ez6I#=
zYwZk;+0|yX%de=U!StWu{Fyb1l>7OWZf40Llla7-@u_JBFRx_fw^gUMRD8ZQ^KM<+
z(%8(<qFuRuZMmtcbC1TGFQ2G4CVQHS*2m$7c9T_1BSa2@+EebKWnZH0;>;KUxe=wU
zl`iGAulu*a0>Jai_)RC02FyFXX>{LxX@cwVg_L!QqXX=QnsZf5wJa`=Q&(RV<eF?1
z<C&@G71esdDX?_K3iB%?l1Dc!I;nnm-=A7ZPhWXrx<6b^{VD?kcioAiK60#e9qiT`
zvtVhZ(T>1ddJl{?tsgiwsnBCYVO^qfT2<Min9uL*StZB04v9PoHEq(&0cLfhRaG*3
zkMRuAv|vq0Ivn+KbCE;(p+sHwx%Gx)Kb00ee_OU`|An^dz^d1cqX!k$o>Mzq_QPO(
zoP|YVZj7L8OaZ4<>zmbUyIBj{BBGzNLi4V~_%$_9Ri}S-Fb~gH&C1z7Aoas~i(6B+
zjcLQb#VC}7OjnG5z$4ie`>LoOd8%Am@>XfnvfN&-+N;zDy65-5H*2%n&Q%rtyc%m&
zhqf?#KiWp^lVa4TufP2qJ%fXSVJ~mkk2nx9eE8yF<8>$XJvQ_`eUHx3nvx-$ye|W$
zeY!sIYjTHXjzNZo$SF~4w%?#Z?IxqO^An;6N56D7ceZ;zWAntySvR&O%<TKEz`~|s
z_T1I+eP>^o=`n}o#xh$p*k}6QKlsxgUoxAjlc`|peLmh~$HSA8?}z?9MN{F~n9x^S
z^fNaf9@}WzZeX<V#^^w2r%`ERmy%!a8Z~mvXD!3XQ{yI_tsXJ{$6~v2bNehYTB6r9
z@nrZV<1g2DPnv$<xM26D3rl?7d=(A%%@RJHvMXYnzFxSy>jd%Ok3z}AJ+?9Ho<=U8
zf7<mAwcgsx?goyGiWMJ<v>LuGS}E=3(yKSyxJAa<VKFvq_~xzEyw)xCp?RyhArbEu
z2Ag`2IG@d@1)f;mn-QjEL7#Axy}16OJ1e8|0h4*|FZL+Kvq8@}n;a@j$&On42hXRD
zaG94ViE^!G{BY4zEp_rcv(-8IS-Rcj-O2XKA5Pd>x-{FY9CML!d$NsXe;<*R<7-3f
z4I77fehhZ=nnDWlmK4ohaHc|)`t8C-kC}fKx-A>@!o4`=q2G%cbqmSV8ejJN)jo&T
z<OIA;oa#URyW%3gtsm|9q_Em)y0Oo{E;;ie=WfGaqV%fQvrqcJX|D=>l^-<uWwcta
zMuU0g4KK<4-yKL<@P2U<y>8Nrm-X-0-hX@4Z2jLH|8s2v^FRE!SAMO1CpV?TOF6T3
zsK&(akD_&3QZ8G4^Usoe#_AnDmBcOo5I@J@qn)>AlPYEVm(mFbzi!&m+U(kKyDBnZ
z@uRcTy&wNrr~YK_Uo)zgd?~6qnY!WGmyzX9r_X;?8QSkrMJBuPLF1#-4~=qHlm#AA
zx|eom%Kg`Zkn%A@1FkG;*SNfQ``D|G4P&n9SUQ$?FSvDS$L#MH@2@;?L9=d0sq={=
zH#c8Ny?$fq)f;^^Ki;xY5#L@NW_|a<{h@bA1xAS{k}S7`{fO8)!OD1B{kS1X8FTmU
zWO^RmG3xJ6+n>i?NiDkeEhXmo-M!`mllHYn?N83*kJ%N`Yv3N!!g;$t-}__Jx@jgG
z=hIXY)M^)PzPo|5K6c-`4OU;DtW$Dax%TSlytv)WwJUwp&&LkWe!b%9<9qSjZh5Y9
z&tR+>tTS`<L!nyci?XyM<g+{fWGme{dWhGO^)_<ZiSYyGALkz%aP0V1{lgzu=wwWJ
zJL!<bD?I&-1tsm<_{;leT7N#ctnJSO#XI-qT^5y{QXcZ=wB_OAGb?Ye%f0=i-^u<t
zvvM5!2WD?zc@<WU3O=jlK+C5#D;Fg0H7%-Mf9jmx^SJYViyjvzPkoR2|NNpL)}N}^
zHw?%-(Xcsir}y;g50mvnX;1f6nipI-HLmfG-mdHU=bkewVF6%X#rgbCA&;ItuZfuA
z!_ZjZHpDx%F5RTHRU>tf)v<3&YL;HO9(3*Safz_E_3b-+gB{103yd^%v@8yt`MyS{
zEM@53y0HgDo2|01l8^O{w!e`!`NUkEgzF3Y%nHiOU4xZPax>@bd`IiI%J;*IIj?rE
zVXa<s@7c`fr|xcc^^2G?&f@Qv8mm2gBL1>`|48kd`}yDx6Ta<t*qM6SZ<LAQixh9y
z<&OO3YhQYAduVz1kFXyXbf%@2xojGJW<qL`&Xuu-%hS%b*$*L6$jdaEHg7%RQ1^Au
zAfGv-k68Ga4%>2i-Ttrl2Zi4aId=0%|KjB;waS+k$1h3~l)u&+e5NTg-`7d2X7;_3
zH>)@?vCo&5PEx-V;SgG?*8hMgC-@p&>Du_J{4^&Ue)5+e_dB*Uu-#%7Jf5zrUNF}A
zbT7+shq4>5>h)WDaK)4Cp)-Oimrp2<Ox(sB(KO58t76>lE$qZe7Hh|E^Lc;DX0d0#
zZz`t4osZOHe7t+MeQV7-JLCLyo_hudy&EeaE&1S3c*AK@^^=xZ6Nc>@uTYD$z4zm;
zwOlj{9vrp4zwl+i^iuy?w=5UW4$J1cWc{oSYem}A8?}{IT7D~<J9gj5`VnJxc|}q-
zJg+=4#XtMzd*9Quyk6Z~WbYP}-SKY7!@yZ1xsTV_sa~I4|3;9IuyWk{lm}bfTXI&u
zTtJ)YV><KjX4SY6Q+Th{R$uI$H!~yboMr8yUO!e}9PBuL(uprF^Cpi9|GYj$GbwpO
zaU^+X)v(B>8}lzXWEq#YDO?Dlu+zULEz)x}oDmg}nzZxP=#QVALx=SGQW>-OP2jx*
zTJ`C-C8`M?(RuaLgE70RGFSjuTVwjS31h+LQ57xp-61JTDzE@>Ug6@S<EMCLTD?`N
z!-Ouo)9;M$IJ0!MX8&uo;;kB0w+)XKA2A=IX&0LwKKjvBwq$X%f`;&JR{KrSjXmCn
zK8|YCNwRM{J|ojsbJ4AE=LY3FAJ;LS+8AtNexua2Op0=+Y#Tn6YLN5z?e2>6CtI%8
z_qE->amWYt!2M1fmDzjTi{r<dJxSWSYnrifyPJV$!LF3L>K_{emJFC$s~wSPW_(9;
zz2i|ui`TY=aVyAwJx>f@=-)ihvEH}squ1PI?n>p659ZQsu5P&VXUz1>yA{hR=DbS=
z0n5VIoxFUrp~81q1;2KGPM^<%hQFMDBx=RLQcmU32=&~8lKuV)F;{2o&1{byqqXam
zS(;hj1U+}&YPR;_xsR8WOypNj+<w2nQB`Thhn)P^I}WNjF4fI39&TMe*Wo+Q*QowU
z^CkD7#Ee_nnIpvg?nJW-=-aD%DSvDjL;?!{`?c{mW~cB|7~M00o(uRJLl@q3oaDhh
zTkt~<3J35lF*^KY;r-xGmxghm^py?Uhh>i$Y$Y2Pi(${@V8>v4oe#h^=E_oGm;-FN
zQd$Xn_~p`-0c<LyTPp_>=R+QV;s1wSntdz4e!y0@Z*t{50GI&E6TntR*|YvE?1PV$
zg}S>v=MaELK%bs-2>)l!AuusFAz#1}ileB(ES4BHZ7N~Jd4q0nH+m2Y;;dbrtv#Kl
zOg3h6xfrIaNM(tg=pwN#vFplKnzQp%1LRnsV9yexqYD(VSjY*Kh*=_lE+Tb1=YY9L
zbIP4@fK<kqHJ2}9Ina5qnF<?#u%QH=oG=!)7PH}tY~Zv53VHH7;T(idu1?N!B~vhl
zq8Ber{)7cqq{xM>V6cl1@Fk<X&};^U$wd3pz&ene_;jWdCr}7`zaT{@$yve`bF88O
zFW;NPWLXE(g_sAVV$ivELKX}A8?)mJVcVQD<R@s>h@l8+8CV3u;ml`BxYBk(sWk|;
zfY{4s8%e>IVKyu-OU%N_h9wZS;)FwEp>k}XfFlnWwf$E(6-dkrf)cNgJXj(L5GELQ
zxxp^BF^G0<LJnWZ5l2~b>8NcpQGRO)Y?|cZjYbWgBL|b^HA8ucfUE>;ahHrRARl0q
zpqxazP_<p?VMt!`p&nuU@UC+%09%MsqBK;rC-4Red9uO;a=A)nFgLn57;?<F^>DH6
zl)7pKDQ&IzKr3y$G(JNDEt*B5vUtoc%3sIeD2yAO!-I{M0Vo|cN+f25IkSLF3`nnr
zS+RmRJZXvqpgP+d->!(u0PLM3x$#AEoTNheVjFIdBNXDviUb~1kRn6^pt+b$!E6x*
zH##CGW`@^9nzXY*hCmH2i!Nf>SY!QAYH;5wI0JnMv~Z#bL5Y9|>}AC?@l*sxxZDV{
z;fP@GBO|!8NbFCNr;yGQp>sb{AoQ6EZY)-4R~lzjZ{V~Dwni2xAc-ad6s(ZsC165U
z8UC##YA`=S7Lsw92qVeVh86_Dj#-uv7b4(|7uD87W)C(?<<>PY1XUiJjqoBuS@XGQ
zSEdUI1zaV_%4nlFt5A>_7N!n<F65Bqn<3L#K9ch((vXd#6-Nxp3unco5Go&b@LCBa
zqF@ZOw{etK<Aws%5jPz3Sy9*v6mk`?co0A>c!$F75|%J(0i7#hArMx9V75F-m^97X
z?r9)J3xYs}yYk#d5NrGpmo!%yf)I)e5DHe_6~?nsFpA9rikqyOn6d&`TrSr(lEnb4
zNWrKMwoWo355}zdUOWyQ&f>r>Wl$5?1!~PF&^hvm9m}A>07D13WNG+ZmXrp)6v3!5
zf`R6*NU-^pA&A1TH^?VK8<N#fERO;EkCpIrXd`kz<O4GZJFRgT%At(=!hqtM$cGo0
zL1GgEkLi<W;Ub<ifYp$~=v>%f3?m%{S|_+a%Ev?KkCE8OJYtH9A`yemW5X>{3N!&U
zoEMHYlZ3dHz_6nz6&S2s5?c(k!Lmtg5r{IDPGUnR#lv=!*bLMqVAwtqo6W^Je;nn(
zW33fv9DX32)g!SZz|cXez6d{Cj5-YL2??r42kQ-i;fe$dQ<SPNHduki2D$<zv{4>0
zANse8P(ud3E!q}J77<=73Zv1&0%;71kQPRdgj0v4C7@Vh><hGlAVC_59mEogFm<B!
zK)|JtM?j;|=)xd4x)t3O0(v=97g&2tH^sZun;4BjV?}brSSv=j^D&waLxAihC>`dE
z>Jb(Qd!Lb2zYVGJ#Mn*};U33mbVeAH%fm{*7bXfK3c+}Q5vmjhwh*cy!YrU15F98n
z3`>PL5DSS20$^`p4>X1qLT+Y=L?ouMnH;F`N}|TF^*RjS2ET>~vx(4Nq68WoPNWgL
z$UmamGgtyKEg0{-g;SvKgj6tW;PddR<}1*oz9-NMP;?=m%LYk1fh-<XOc#nJ0!JR3
zPr*ne8WJK71L)WavIT-2Cg8xx8}~CM0!)KM1B)!+(ZevT5=tW^<dy;rm!$&0gk-1Z
z>7hUm1$rp(dkUa+1{9-o$rAH?V2S-GA>1aZ`wraa@OvZ;W6}quzYH*x9=ZQrdTq#e
z4AS)lcQ3d@!QBWhoQ}h|;A(*D39b&fv%!VaT-Zc#2ZK8ZToSlS;0^-!+eJ&P4t~$H
zEzxD;_)`Yq2Cc5}1qk;VVhOW4;>m_^j9mO)2%nY<Z-MX`ov!>;K3g0CgIa%Q4nxQn
zLCBvN4vPGxa|h|f#UG7Vpa+Fs`+t%rjF>Oc0{M{`Q+6tz#=r+y(A8mVm@vo%G3d=`
zLOvflm{1tyVR%?1U@>4UL}T;0aE6HnBjsR>D1jylhAtY$S(r7|(Z-2p=j!4~mHOR0
zT<tw5&QzG);&Cv?b#`^3b%CXDswc(6)5{HTbxYR;mcngpsqml4+-w{@Y^^<AJ$!#k
z|7)}~AH~hhhT;i>O?iCIwk}@3!H0t}m{a<TV4PzlfHP|_*%bN1-4H|(7?mO92*e12
zVN`1mM>lA%gDu6z)`N<<IZ-^F9IY@nFArPf!c++3@yQ|yBbZFkj<`=icJ2#ruk_9V
zwuFbDg(CC#Vlq9P&VjutFgb_OE9$oi2H4^BCnj$qG{%*VO6?#uoTd`<;dmLk{eUdv
z3VE!)Xe`-?IDbVpiPVq8V6g4Y7ly)gwsSRM+<5r}s9h|vBMcqT<QpB&`dvIl7zEQ`
zo>=sAB;>VWiEttjS=o5yCd#9LG^i1f^*51#AD>3RT%09j(;2LBj&5iQFT&@x-KzTY
z$o+T4iA17h@Ply;@Lz6J|GTs(5lU)mVgiTF;M^aOXeL=-)Cb_kFxG}sXk;{<CZp47
z(g^7iO;?;N9G=5R$wUGV2@eg4$+C2w5D<|)_;CIZ^9<&Q$ljc2x{yhZ;BdKc1`bzr
zKuLxpd{KM}92kUCc`%w68k4QL95`m^0y90F(=fE-@FXlU9A30W2Q9e>iiUt>7;BP&
z#1etDY-7}R8$NHWn2gRFlHH=<XdrK_NQMq)GMN})VpK6qdxKc`Jrx2xp*~ZeNvul|
z8Oc(^1b1K<<JVwdfFDV%%uHb}d?^kYh`_++OW+0#4iB%O5TEY~qfq6f<pSaGql?gb
zA!~^Qj1_YtIU<+?+7m$+;fnE(Maas4yg*Y~cF;N@U;~I$lZ}BeXhz(<Vn8?;rO)iL
zuSA9X3C9`^dHU;%{PFoAmy0B~tInOY5Ru1qR!-Ko@sO_5X8%$ql1CVDbJ4vc$O?-P
z13}FA#>PMtw3>io1UL_H&_ASS;E`Q6K*EdW2)Z{AFCN3BE$BpuGJ<?U{{nb~EF&oc
z32qTOjCsI}C<@iAle<vwZju;?)_QQBcFWIagBTl=9oa~Zfq`&b6iN}Y!r>McB(w~e
z!343$=ol^}#bsTFLs|ir7$iJMG?C1}@mYZ}mTAFnBt8PyBV5+qqG+xH&^nml+rgPy
zkPTR%qJbTiE`+#6L91z0PM81|%kZT=B!e_Nn8e|W0^mm`O2`iq(!<b-8_sW<{E`5s
zFVbfK7=uEf2Lv|3WD9YVHA~KKEQOKB36Ukn<-yg?)0^U9D;2J8GKTc&Co#j^d_5gp
zT^wAUZRhBt{sdNe5WR?#w<F;mp+LANN6JH_`2WC1sku`_rVQyT*a9v{7@3etTu<b3
zk_qNR*Th71ro+!I3M?267Aj#C&Xr17Gh)?-Sfi%V0wpk)=J04VNbAJs1<~w;{ICUl
z4%1C6l;tPZa8VuHqM!?*!Lpu+<tYI^5HOk*6vD*I#nV{ZNxMaw3o8Qh5DY}DM9bb?
zypzI#Yu(|FICp4-L#(1gxt${_X#t}^yNUHwkXTkEYZTc?LPkJ+kx>N9=fNr)bNNA|
zP#q(H-ajSBOs1NUVU3DxV@1ZRK9jr<&m5pH0;cr=y_Im8xcw5bzy`CT$l+*>3}1ER
z(xY$*lQIIgsh~KR$>h#5Vbu#S5sH&9OWM~H!!)RqkswNHk!Q@90X+;@WIQL)e^H?`
zVX%lk$<WY{>_~JqQdL9i0x*Km_no94Hc1~m4m0(g$&e10mtQCWbm(dmS_D9if-Am3
z(V2W{Ls?-+--GGlFdXSRF-~Wob!{?!v|H2%Iyu}rhtV0q93HwWKxP66I2snCK{DWT
zm~ZP#v-a}vuyygIp~X=d%*oZ7;zV<%SUWhn*n(Wa%CgiB$)uPKEQH|_)3^^|xR9EF
zt^<q=-%Z4*62J7Eoz?`=s;jN?Is-9K2NW*^Ya+!-D9%i12K3orPP&FYJ_I?XYieYX
zn8}A>GbR^ip%tPjFvb9VCR6btR2Sd<2>?Fulo@J3kGbIs-(X*%<A=Ty1}9J(!lM5|
z31siP@tqic;WkrdLkKjo{zfLZIFAKg1sW0U1VKdtLfBWNeE2dPPLu9<q#XDM0do|2
z!6F%jM`4C>cu*dc1glSQ_gCk*7KTM&WTERuA8VLk<oLK4jgw#Lg}w#d&4t7mtQJs#
zj_jos7&){A2kUnzi)=|us(~2B=L=9Wj0dY`$fZlfeB{E&fq?+O$%{#OO(TeaVQ|+1
z9aj61nZ#hR3@-;NjHXi3F%5iyAi{iUza$GwI|y{o0vJA!A~s+r-jIhQ#tkD*4`dYJ
z>5@falmV9^fQdp^K``*oPk35n#2_v1CuWt>Z&Oe<8x0agVr1V&k%Rak`X2b58Nf&;
z3?dO2@pNV<6l@-Z!7>J-RopK8kQ%<F5t{!SIAP-8ZVD;2q#^@FVMfwr=}tQ=RYw+c
zBnHNZ7!1MsCNL7Nh#+oq<G}cc$j1CPY5H`QgJ15^RR*Ke76*c=;LGD^8vGxzU7c<H
z$$CLu<W(AHB!YG8G632IlNxTQ7r^i-N4IH(99%XPL2ZDv^3xW)Jh^TFqX=2}U`!;D
zdb&ns=wo6Z`H?c24ZU~wDToEaA+<L!J!ErWk-PhN1me5si`xw7HW52voC0x^jme+|
zXn>BU3q}%D9(sEVVYons??izh%`muuM7XRIau3Rm#$jMmL8Rbj8N^U}7);A?zTtDI
z&LpU0SZ(KWqrkuteOh3YR6#@-(Z|cnDqcrAe1PGELmj(hTiUmx)o(ufM2*WN7Q>W)
z{UmC^U<V<UhkIm#I1E|c$H7Mxav-|;h9(;~2%^vks_Rkc^7i<8D9}TJ9t!kOpoaoI
z6zHKq4+VNC&_jV93j9Ar0TTXQoeVqtdqJzr@tywi%~OCKRB$)uFK{K;)r13MVY?WX
z3|^ROV%gxL^w)n$Pt2;GLtOVq0aJw!^dGtdAw<ACKkj$N6L5`RCTRqm3~-Z=u#*oh
zkVqf%?--UQm;TWY*hfH;#ljx^cDR3EE^G<^>VA-1`f-pHwP_;!6fmePJZY-9)9r<}
zQM`Hc2CJ^F#wsc*uyg0mVe#?tn3a_k2J5|;si`S8e*Ab$M@I+K(9nSEo_oVT3h2Pn
z@vjtc4&Z<G{Qr`#v7-YK2psUpy-~0`91l0h=mPQW5RbBTz&{=Dd?QbHI3AYeLl__)
zM}#uTKR?4!IkJ2mr_ZB&9j7xg&UZinf`q?2JOf3`=lkxl5TR)Gpji3A+t&lVDOL*+
zyuG0j_ag{^y5(yo8=!pY8W^T^B3)yU271Fk#kdOa_68hofWI*m?y6_2<vhst-QAQz
zG4*o?*+g#&#ZM0IhsSEn>z1!sLkp_jOxDUs*U$oVfKX!)OR_pcLmSF#CgXlQR=Zoi
zR!dE287jTi(%#Yz{_FulvGT#|fno`N3xwtC*$j=rv{31QS^9_64*Vy8uqYP%+R(&b
z@li}s=?I^LhYx{I1F-tFLJ07Ie_pHmFYOz|Vru9^D^dHjGcxe@G2xAA?EpB61>8F{
zu;1asX(+|&fYTN*nc@^C=u9#F86O!n0Oy%j2Jj5{iSsgpJP0rnaP%JZQ~SOnQ6OZ*
z56KApaM}3|q9cQYyjXevL{B7)8Ry$&G6|mZGXH5@VhOp0c6V<dC<6TN*mjvdG@y{|
zhyPPq`~?F16F#I0grpNLddq&ej!45uj^+8@&_GDO%$2rLuAO+BQMkLlH^@pNT=bUy
zq;w_1PzM~HOm7<+2+8jtT>MQ)tBj9Gl90|2=(_SX1Et_;$6fr5e7Lj{GSnrTa{AYa
zPg*L0i;!07yGu5^<s&o@sXS-^;K6Z8F(Itl&`v4uy5%D@u%i`}-H+fCu60NYa2>IC
z@087M`3MaJ8AP^4ich9>2p_Tm|AY^hd|!9dg?KBw<I^<ll+B;;5xR$jA9(dk`v_}5
zFb^`y>^yMH@ka}2Il-r2=?Qu-lg;1aLv++ebi`%9i+@@tP#u1U4{V4`*F7j2nz$`%
zwd^i0zvgSkHJ;FQE#$}aQ9C>Jo{-O9^AQ?P=z$+-Kd65<y(jbmH4T3{=|X5cl6Uwa
z?aw$*_+@&J;GO8Y=qXcmX>W^UT-Nh;`DNJT_|OIVSH8}A{;SkoiT=0eQ-Bk>h+F8f
z#4b1xBf+H#xj2N1u`n?v!2}S3aUBd5o#9?{GW_T;dKBS47JOsjU~m9L{&D*Q?neI#
zyISiM(V5?sm?w<3Id~3laHAo=5Mx6A2nccEj|?s<Q4BFeSRYT#2PhfNXz-yHLhv!b
z7Y6l_KuUz!7+}_rg99<4;CBINB*c;7$Csw(fghDFfjBZiQ90Il3m5=FxQVnVCr6q$
z7*E^PeljLsZ)5qkVoJTUp}ixZy>VC@-rf~m@h}EgCt+^NK)+zP3tj;TjOfwPfkxl*
z4++XR2xS1BrD;&?&-}r;fc>ZV)31|1sHI%^G4S>afZ}4PFG2n8oS{PuM;b%WO#+-^
z!RaOWC${$rxASnSGY|fwL*vgh!4snPuEVB7dkMu`3FpA%vDyF@p|nPbXHh?4fU`#m
z`=JaSpjimkj^l{ys=~jdJ5kSlcs)P-V?9$aE4g|)c9T?jdi?iw298=<DX3tRfi5JR
z&#{;tE}cjl_&C*(T$4ev(Vy)3Sq}b_dfE)KE7Q~el`aJWH-hlGB8?$5<ey{%>7^rB
z1)1(5O-DAPOEVE~!=W@5#K^Rg0i~i;K>#J=KKKs}K$Wg?5M}-eCmEMRF)p8|3=zz3
zk;Uk;4pvYmvJ*dBjelni{@DT`F2#Z@?!%gauWvz)!T>wcB`&x$uvbE8MG!8}B7jT*
z{=+xzpP=v`xVk;?zaDTMX$IMQhs)+lpsBo-l$X7qameZ8ztDxB<qOck^PjRazn3qW
z3=#5=dWT@(S0HZNk!3-a|KC_<)Q8A=lrD{d>i>&&qgE33dmL`R2|BMp;GU<40zDMy
gp+FA>dMMCCfgTF<P@snbJrwAnKo14}FQmYK0W7s)p#T5?

diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-8.0.exe b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-8.0.exe
deleted file mode 100644
index 7403bfabf5cc10c13ef2b6a2ea276b4f6d26ff37..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 61440
zcmeFa4_Fk}^*=nzF1R4Nt3o6ZlTE~g1T`dRDgl#4SwzF)Dgu&-h_E=U2n1&QlZt^X
zq>SUHwl%43ZEC7*ZR@wSiT@Iff)GJt8vjMnn8YM}(;;gcl2AoMGw<iznME|F-+tfU
z`#$gUK2PvDGjso)d+s^so_p?@JFD~Yb)1poI1@lsIc^W`^k-++e}Cyl@z6V78_Mkn
zee2FWhK#rFoXeM1+bXLn7FQK6wG|bXmsbe3MQ&S_SZ*sVx24X?vMsGBc25{GBrHZp
zy|FQQcSqNp&H&6BKd$owq}BWH?L5cs$(?7}{r=8(aUb=`5SBmc6HDhiNOyE)bw16?
zAMI>q_X&Fa``CR>X%SDj10!)cI4;9r;vPFT22a}G1<q&~Y%p`&LZoZ8yziCbZUt0Q
z+O9n#O?;xiz@6g^tZY=JfeT_Ks6_4P!tVVyR=V*o9Jh&{E^wSOf*$_w{T<tWgN!O6
zJB@&wBAg(&R|qKibv`ac*Fyb{Tj0-z+zD01g+d|6jhlsB;N)ET9k;-r9bHe*s&V1b
z$ZY};PPz~Hvm<9hRdrPn^4M4};K2qs1{m;XzhNi?ioSdNjsxFu;5!a{$ARxS@Er%f
z<G^<u_>KeLao{@+e8++Rhd9vCBn(?)u0JdcuDx=<XgtKtw~L>(<j6uyc*7-2y%*hN
z%VjYUx$>$QYgX+eoKWeRpQA?3d(zIy-3^!W@`QriLm`|RxuFs{9p0~0@g5JCt46Lz
zx}ixN(eQV{lFJ{fvU8qb^&M|(xPMTt$DqEGmv^bfDn|3W(S;hhj%xp17;;_BLm~6i
zMEQw={Dda^f|hLgqW5BWR!*)wWfN*AT-uA4O^Kpe9MtA8V;j!p@U?_YH0R`GsbaW#
z#@nk(jy_An4=6iQK`U>sQM^qRZK`NR4P}I?svrq;?(X^umAt(!A=IUj<G(*qv{~vY
zbbzX!AT`_8(1h_$(7N#iUEhm1mQ~-WRp%qB?OfL;z3m{h&CBch8Iq_Zgb_X?%kw#U
zT&ftYicxB0C+L%F`Y6lg0tYW3ohU|#p?E%zXFnJ(M&x)*Imp<83~++-<qnJ#e76wp
z$-vF`f!qGOb8>P#L0M{~8M4Zf9A@>5>@X)C5=T-!8a}URQpvV~2MJ9D3!XTvae1=0
z#%j)z^UXQAmWJm+wP&)=(eB|~N^us)$&PTz(Jnh8?2_ZC?1=JA=6Q@(a&%Co&l4`W
zr2JE9%Gw7}wI<rz8Vw~2Z%~E%T)YeQ{G+Iv$)(&jk>ipMfukc(IK;&#qtIi*SU}7r
z)Nv^b(>Ul*o-j_U5HqlXe`La?MA1rejKWy5l$JS=Uu$?8MjVb27s!X$czoMp?2vNZ
zMLSgFrB%()oHwL~eHfJ7(2lF**eEv~We;oRh7R_yRc<(ihb;M*6squL7(b0m372PE
z;|_Y2TO`K@<H5Q_*JHsUQhvSUTql?kn*77P?rmI&cV!rtll%1TP}qV6vX6R6c<Tuz
z4W!k*(S+3D7THnjn`o3*-)H>FShJz-5!YjeAWMT8v75R_U5^<}mWDnMYB`W|ySHhA
zFWjh#YbECn%YjUr@d$FGjmInprbipo?lT^@9GG>R5rWuYeAAa|xLtBI`W$;)Qg*HK
z_H2;t*pn_fHc^)HD$=rZ6WCLmY@RPzk;zwrn=a*ND9OvCN@}DDZ1cLeaK6;wJ(6R+
z?AYj?%n3=7W4r9wuEs0Xs0(e~!BT4EM5^9uZD>M8OZ|R~PIYXNom+gScC<q)u^pt|
zMlCe_#jHU%5=#A7s!Ey49n?QaV{}bd#jTdzY2hwhhPu>cQK+Jd>s=mB`5Fy0Rl18R
z9hhZCvAQf`wkkHdl(c_QX;ed#Mu)d%D<?$Bj%{|A>{w?xU=ITk>pdZA_Er$AXQ_^D
ziH>cSwM)KM)vm{IA=0DU)dWR$VJOumjDV523`xs@g4-}`*}22m9tS-Ko1Ht9MJQox
zwKDR@u<A}^>La>;AgAxAd=%_hV@RGan3C@ogHj&LnoVugNMengU*Gi}=tyYlI)L%O
z-pz)wyCQ$#FJvaVz^eu=d%X6_d@;km#$0<Pe$|ZHD+#M_uf0+(gx6lF5+Al73K^2-
ze~{e{g@mQen&rRSWA-`wW}}N$8uydK#9*p6t1(1&^riVtjYHGyvtR*#Q2;x>;Bd=J
zTMv@u7R+c<i#B<x5Mxp!)2aE`)N^)>Vl!0<R1|~v^ax1ic+6^KJ!+wTxZJI^$df`|
z+J?$`QkqGcL{Bi}n34jUlHmiVWFv?9J7o*1a5?hM4M>R(^SlUrk$tdopzt={MafB>
z?^0&$5unWjvuaV5pNtX^%%T6ygd^AIsC6Bfh}>K(S23sy<;SS9^e)86n;`Q~O1Pwo
zwd%xwZfv41CIcI@`46RezYbf~i89{CNSF^kXe5xeYATR@M1I0s3zWw*X|AtD3Uhtp
zKQ{o8hs*If>Y>Fj+aL{8SSSrEehg^x^88JNIJ|#s{@)ObTu_C&i}67NtkyR0D<|Pn
zuKfBwdXmI-lDJ+H8zpgrByN(#jcVk!Dm#p7&227z<Fe~{1wy;B(9Gv(bom_X0UH48
z0BZsDfLa&74vj#U#;+Lgd=MC1!dh)|@f)^dFoqm{EADFKR;??ui!Vbf|4(GcCfV%E
z-Z+QfgL0QT40H^3@u?{6s)oE#j&aJ+tJyBCD29sW1&ZofQM6XXQPC6>C5r2WQLO1Y
zRz6NE?*zBHMziwu!tF2utjc;;B~`1^N>#3ci;3a}9mNJ#9;20SqVjVn=S^&YTU;I$
z);0(F(hG%yRg=vggD-o_98esEHdA0l*78EXoB|2}i?T84kPyO<n?cC6gc`XWT<Y45
zUKl=Lq6%6~t&mqRdvsNheI()n(xc%Sq(|G4)E8yg%{~aJ7trJ4o4_9|djU~JKvY48
zTU4=66?;{&M~$?jUrdN(y7Bv{wytfcHHm{(@~s0hY2B~8ST;b}9DU?zrJ^~10b1&7
z*Z`Zv_o9uftzkW$iD~K?Egu~<Vy?)OXr{u%W~rw^P^mg;AvJYuQzxb4fp4eQw7^?^
z428?ruoaxah_<<SpsQ6QZ9sqtLQCp>TB*KJb<c$Avg%nb<zplm7S>!nEj#-d)80eA
z&aSAe9C;F%gIu|n-?*IA`ZQlpclb-E`7(Nv96flPuRZqRF++Ro#p7h{u^W%E+T%s_
zbi$>i_a%p7sjtWUP89ourxV2<;i*KiR}d4$ZlN+!yeKSz_!slhXr!K$dy~G-6Q=N1
zLZN2&@n(A1%*;o2ABNxw*-YkazXFLo0Yjl?_qx=FP_@U~8sR-;eN6mRc64thLm@jZ
zZl;MTJCx02{J<h3b2I{OTSmaWar9jq{1x7|g8DwqTj?%2Fbuv=8xf7OTYIE&>Z9-H
z31gJbhfb91d{DrL!->v|mikc0EYaC(si(JKiOz0I{bk~dv&T~Z4?HBDwbXyYGQhF-
zD5Kd@{|?LOwA7Q&C5z^y&n@+@;c@a%Oa05Z&&KpiC0(MuL|&eFXAa*E60xB`rnkus
zRa-|-t#F~|b*(`Qeh13=i$<v9qz>>&jobvSRkJV3ZOZ3RRL$21V||VtuB<jkFKVLF
zT80Jgi#S29Y4=SJR{oq0ih6Rfd5E-YT{JYU9%ek0bBGH&1ou(R?#`1Oy^sxRB%_Ax
z=*{zod4iaEgD8CNt#G2Dj0tZkbAT)`bFWFGw_h5`Bn`%4T>_+kx?D&C@tU+CBDp)E
zDXBw9N_6xI4<$N!ga;BGy~4PpZXuTE+G(VHP_#BBn2ptpfy%uNV4V=8o(8RQo8Rbd
zSDAND8>sA@To0Bc_;28nJc-yUD^giZG<uq{gT@Ue?`=Z&S=s6t^|ZIi=AtKWt8K6C
zu$@zm!xf_*#NqsU)KcEO4Ckv|?fNINRfw@EgTV8=TqzYOBYQBP3GsFvF=3R)ZwsW}
z(eMZQp$($dyDBD%v(#@O(H2t&Utt^2W{O#eXW);Ld$INq)swd1>IsrNJRA%TWU`6U
z_?LygC!!x*eW{ZTP#N+|<Zf?kY{Mntdkkxi@&};J0>WsY=@AcA+K5WVLs^GRlR5RB
z9OcVPstRSSMXt9s#y^;M5i#!}mt3L<Y<USOMwwTzApZ#{q-I3TcsG1)A|^B?I?Ory
z>4mZIh|A^k^@4lQaS_WVHw+Amya*2Es5>d&*U*P6DA~vQ4A*ki$Zk~ehcvR%{yHYq
ziR;ew)dy3f9JJb_wenc`R!|zKILXfD1T6$iGZUH?C_C};n<;1AMbmZU!fmo*l?&Gz
z^F%ffx6?o!X2>SpQhxz*NymL1-G$0@AunCHJ>AmqG14z7uw~?hKZgYEFwHAL`BRqN
z4y#-f0fW2|R5V|(!WZK47CtaxPorusA2c9iLDzc1!1nAe-|I9&<wYzN{zaa6o&(ar
z=mxHH{vy49VL0`D5ljH_0c$Y<d1_=UhQeIB@9_$iE1#rtEJM5-<;wT|3F-PrU5Dq?
zb$Ez}O$l$=3zSN<WK5h5KRw}+9u_d>cnmyfuZ4)Ak&v9+>xB)X6)iK1)^GS%8%gH0
zJ;xf`aouJf@d`|}8Z6_~Aet(fXjNyscs#(d#x_1&ijogKQ2=k<J0%`V0VhoLPU!~k
zIWaK@%88!Wlf1iMqEguv=HYzlLuVV0&GDGXz}lJ4!B5{zjiAY>tU2aon7efsBVf-1
zI@~~lmK!$WDmfc{89~?#TXV1>h8wyGnO@~C-^8GV6Vga&guX4VskJnGhN8MhzMnI3
zxG-$afmDc0d9M%5?dm{5(m~7Gzv3=unv;$QL*&zOIi|SdQY29umu8Zkjd5va`D@7#
zx7x(KGi?S#aFV0mQvVY)CAU>Cnvc=IXDC<2dgMa2?C1@WpQq*LBs3wQqAoK*vFklS
z$}4}@x02W}3y&c`7j<dI!HZOWI2EW@4KhGTwBwPTwOEHyAQ@ywy=2s43o!M5%zp|f
zxenN9XhAfzgeKWX%wn#{93ZNDgS1#*1)`z;jo@=`g6fa(IXcnlS|qinb$Id^a&s~N
zP(aSpdn8>J^Ku0w;pp?$gj+BXu`?AS5ew2*HXvGo=3OtNFNDW@&V6jVhb&k|gOtAq
zHjL1R<^AmP6@CTCO*lMT`-7_PgU^QqkfdWc@c3v@S?U>&0WqT;SS66&Z#x8iRjO04
z_jBcVEFMdiJlcf<^&}5{0prleWTbPHS$dr?529Rq)RWl!)BOzaC!>PTu@6$%4sn8_
zf&~dp`f3@2W`_@2IkxfXR@FW6R*q8^AU81hhHVz;OT!*qSqyL?uwl|kj;(EuT3XTD
z9QD5%gD@20C1Rs`hUcE<utjpv776=nbcb14i?GB7H8KNj5%<B4XYW2z71})IZ&4$8
z)G7h*N9OR`k<YKgMIB&25qW^C%GXmHcqyn2tB?J{8F>nE*oDbD3`6x;aly<bw>As2
ztqf&yx5tRbN<88wP>zpAL}4ll5rJ}Y_mQJZ-3m!My1^{W<@r>75)&d8Q;z{F;AuI#
zPe$ygC+=9BqtC<5k+XZ_vb&AVbAA?g@OZBaPGcNAoi;7Suq*@?U8(k%tYEMD=r#5-
z-O9|BYs{8<AGldp6K*vi?$NLriCpD*7~q%4R!}%Dg3NanN|_DEOmP7-1tsU=?oy^e
zC9qs?YJ<2N`aZ+1;n+2X$&)sr64<5{xp)P#Bk$CXsn7pQPt;<`Vv7$-7Wl^?)>yZ~
zJQ;Y!k)9xQUTLC6T7Q`5z^E^61<JWc0-977v+jCJ<|vaLE12>`K>_5?eZCbyIh(%~
zN4FB*&5{~OnPtZ+e%(`~6b;2lN;~J%^_LW|P|v{1(1v(E#-4>gUqdBwv3-fgjM+)Z
z+O!<-OpT02Cs+#`?m%sSh|CbF4TLD^%WL(7sL8hrum{nu9OZG)PK%SJ;UF-`lSsp;
z#OFB5^F)(+nk5@n0STY1<sk0mYap}jVgmtDRO(W968S{3xPqrZOTY<A`ZBMrVIhiw
zkttvcM$fJs3`gBbXb=Zvgo~5Vtt*SKrM5eXHCVTZ(>_9+<KlnbUm!h4@pr8_fP@2*
z8+fGdWL#v7>Ss^=$5_@i=Bbg?2*y=*mcce)Rt%Yf_2rF9ZI#7*>T`Ka5PxwK)B|>_
zR*htm#ES?ql&z8)0=&9d-$bD-+UMr%2W_?3li8<G6LFaGXLJa*#7k@+yr2aR(<$(h
z--e6k*(GC~N+YUW?ikf{xx;v9GhtfL0@u_Ov^r$ZM5J28a3sw^EKw7@$3%I1tnlfS
z-zEnpR;yGW6OJsoJ|+q`uaXJ>Tiy|4Ln7Bw|2`-he~@H7p5~Ac2R~{k<^ZaXLyZGp
z<GCcM&C+lM6`K`uzsSq(`V>ihItt90>Yt4{>N|`xtSN=QGJtol>l~CvepC4yEmL`H
zs~sq#>|-pOJZD}8vrzO-Llb;xt1uj|P=p~KF5SgHtC!SHA#9*E%U2&`LngoO`=puy
zdx+d<<Z3e;1hDyzw?~{fCD7E?-!%PZP5r@pB9ITUn5Y;yNFMTNGA|yZKK*mlljxJC
zKBK!)r;c9vq{c*unI6M8D$1jYmID-T$>l!-Yk?z|?+!drm_vE~VT_+=`<yj+gv;Ai
z1JpO|7P=C}|4i>#ZlpQj+Dllnq#>j)N;)v)<z?x8F-~CPMXlE8t?U>B?M=wDA$~vZ
zV#ShP%r68sp2bcsKE;$1TdJd|54ya)LE;@+ghdapoJSQ#dO#LdAhT*a7{8UpnY58@
zPb9hqwpH%J=27nTrN-D0URj57JjS||T0Fr4s$FFoIbRrtyeK^!Q>dX>ZbDwPOPRxx
zRPNFl%0}x?mFr{Tp~(UBJuyMe&E-j0Jn1$>OL`BXi6)Q1ALKFSGTV-PwwCC&eQiuM
zaL_I*;b=mWa(OZkw$e<~J%)KOA$1pHX;K7U@N7XBZ2GfFj}7?QTq%Ejn`6VK8q71i
zG2E~g51_{9Tsu40V}k3oKfM{&0s^tZ3MI7(lf1pbVzkGa%g3YYbrChJ0TO!4<)csn
zV(l0N8ZtGV(gFGGr`0b9wwT;z-h^6+d+90KTB9;;VK>u$i2|>1;gFO^3%IiMN$u+5
zPpv|ZhK39_YMx>>X<MV^yVOa92EG_Y1Ne3{2;_KM(^YW;zhgjFASSm_QyK(wQOJUF
zHZ3x|&INy&55bxUui59=2p43n#uKc5QJ7Tgh$6}#IBZsltgpAG(IDPR<vj6|UooI>
zXf02!q)r1Hm9D$IMuk2i#r!?eyC^%BC*q)s&F1-pN?fN#MxY-MGYZ6{5;0nx>*&$*
zcxrQvm>9yKa|?U$^;#`H0@>H(V`V8OAM~qES^<j5ZJcxplMzu=Fy7m02VW6w$MZEj
z^u%|5e*i9*^5{b}5ZiSF*?$UkQ2Bo~60Cj!mJS?6LKCq`_L078Yv$QW<VkKt8p|f$
zBYew_4*Es9&eU#FzuLjSfHIzT@jIZh&<B2i&XIcP%wwBswn;{0q@ig6ds#%x$kTQ}
z6#rsm==&d#u@H{n9$NO4MwIl=(~VZ}=k;y4W@0b=`c^zhHR~+(t1-RmSUz(@>&Nt`
zIrx5-hI*v&0(cU=kh0W2hE(m8S_le>N08t<RzvrgZz+kj*cu!~n)U_EEFowON1Mg9
zUCQQ(95je!G@+79dG=ZcVRR`XGW5aXHGnY6=cC%QnJwkFQky`O!J0*H4<^DIXn{4n
zMWx`^^-(ow2}RQ=WFO(eOBEovPIdK=n_i6$Cs4J<8>{g_Ph(v|Q`*~rf^^&@$69SD
zEK(;qYLys83)Tq_lVr6*PmoJ~TRGfC+u(4ry^$_{9-&99&)z?la5&f$z4MRYC*M$r
zwd2N+-st|2-pLz6dM9}nxT9Sdi`w<(^7OR;UO)8*-EtAtz)lf0Hn7PRPw%F*h_1Nq
zQ0k-&U?(lz*d{2@OD0#EKBt-0p@A#Iv3@<_Ph(CIqV$J^5w4tX>`^pz5r-=&ACtRG
zA!7`ZFz4jx+YRPX(EdJFZrA}b0}Izk=6HT{-$8qR(qXpeU+^GJy-i5cUKXK2lNyg}
zxEilKjiS6fHX)<gYE=v^?Vkk~Fk7)P(O*P$xUd_+3tKSX=jedY&eI}df0~JzRu?@d
zS<7KuokZ&aA5S@w;}q=^I$Q^0kjzy@J;|Gq)KUy10#Q`NY}qNzmU&Vaz|Pdd1^E60
zWVft7M=REVS{GaOvuKl`_3g@H(~90!aV1jzb{G;+3!6Mmo+RMO^SLUvW2<VxmKRBw
z6uuT!u@`2kNFFy;Y?UXSrw7Qf9eT|2&`S0ZKQwDL7<AOV(WzN8yb+&`4K;0vS#W03
zJPg|N1V&67;tptY!@HLHpQ5AOX`Xz<gtb7pc8=-LAa1%R3>!*P4@Adt*a__I)0R5K
z{Mlwe+fdL#m&4X}*4Kd5-Txq%hG<+kXeCnsCrr2{hfimm1z7{C_U}jNjhyx-J#fP2
z|8x{nu8pGV|6~;A>qoKhe=&+2&%<yo5l|%&XeYtMpam^-BncU5mi-}EP~p{zJury1
z=%-)-P6+%j+SF@p_C#SeDcSc2CJSw-B9H~YG8#9;)QEswC;<ekCbi*>5$({Qfx_55
z`7YWEKn=Q+E<@sf!vTl19DWnr5($p6;-8>zx9eS~o|T=O+m;#=vld*CR>j1kify1R
zr*}2-_<$)tKweyK7QL|e9}Kxx>08Y>xEP_Ga3EzB9%4Q;PMgt-j<=PVPG+R1K&5NN
zn;Bx=NE2z>!3bu+@lr*e(r=H?==Qk(RSUDnurJJRbi?q0kLWeE-yG-2ih2eWHW0$r
z_(Q4VVz}B>F)>{J6T+?VxmJKfXb^*?VxYbw?96zp%pOm+j`s0z+<_c3`KU4#nRTrs
zO=bk=QIIbdDP<)J`VHY0EUa+WckaMF;a%_R6c97!dcq{JUdmqw4_?Y|l=3$f2)ATq
z@muS#)zZ9fbk;Qo=A7SxJcM)=3$RisMF>U3b;$I;!>?s!n58uGq?SAclQ)P|E>QVS
zPpq~VLkZSVaah)YV&p6Ld_qy{f5KeD<?}hVFn(d^3gZssYN`Jb#3PR;#YZ^~T_Li#
z#igW<LvFW>!%_Q9@h<gbo_{bBnR<%mMmN>N`nCmzkr}k?b*f`sV$C`n6Iv^oeza<|
zw=GO=YrYWVnvL^;z)wR0ah7^o6265Vu}&826W;B2P!Wrpp8z|F_Xz9Qf_Z^aZuP|Q
zb1^{Pii^%hZ*Pcp7A-M<U0X2iVKMAlwqus^H&~u~3iCvsbQJA9L5SRLkl}Bb8r67s
z8oA2GxWIIJl&U#u<;gTY=C}6M(n^H2#+uZEOfj9O?Uzg8^)})yT6btz+r{DP;ks(D
zPAbNKP^`w%a1rD6SY7-kAkx*Y%YX_R`n3bliz9NCA0u1|Rtdc7Xzcn6n)Va2;)a?N
z^_q{Uj`dx1PPD(~!T~h}tf%@&G6rOe(YeavD|jnK>Oi)%MVO8grovR!vB^KBzscl*
zP0YE<RcbQ2zc^-K@t|BK6eQ)T4ls8^5>BtJU5{aE5?uz}C0mO1DH!znN1z|AXL+^R
zrPRQy$xF=N1k3^sxo*O13)+z!!*m6KTDUsGj~53ld+We#tH;i-M+On4>w@CKdtGvG
zXijR2@#=eNG2V)_wzY^wgskr3Jcz4*0-pj4<%SEmX5pj~-qx_=U%80NCmi;hWV<N^
zCs2FkDYWgk>~5xafjKOUyw`6;8~qLb8Te!LI<P+t*Ij1E$LLftiAiqg#FfHx-V5R0
zrXpyd`Vgdz6HR<O6j~oJ9dJ^!>!EkxnNfAD#R(+jsSoi@*H`iwmA`*PwiY{FFzEW;
zQT@i_1@bZzf{trt9~-b^t;V4ISYl8IC<{dK1F!!7<M;mNXE0NkL&NuiL_Btr%aX`O
z&t3}7OnP6KMu$%xp~EMMbogW<9X`1q4oMtNW{74M2(UcgEa5N!&IXVZBlapYp+|6$
z;A`Vhz#(=hKtJ(|Lx}K$=&&4nN7{c{PCrrv-W>lB0q1K6m4HTz$^H)w4a$a_G}PWc
z)ZG(M8(Pz85yF}tjvIoc+445_NTE_%K`iyJf~PD}D$E=Ic@V;n@d%aDCK2M&>M)V<
zq(#~K8wn;fB*?+{<KVRRzG7e%Wf9g_T00&Bra(aT`qvveGM>H8NR0{Sk3m4Xc3pd!
zks4#x0-o9MboZf#-uLOQb7Tvbnd`oO0Fy<Ct^1l@V^|tm$i@X?ndoCcxU1`T)MOIn
z;9ViYWwh(amd4ZBmbPHp@S+?}Gl-z@Cn_wV3M^wIG7eA(Qofv<sT>>&bDA7KKTjCK
z9Qa)256H>O%T>1Go_)v^&nX?)AmUi++sZ2!nWe3d1$N9kiactu86^ZeMQx~Z$4lez
zp2pj1#&o*97N>)6<u}r36~^|{>Le;wo_`NGy;Im>QA_=4P|G(CsKx*54#I6ZL{|!`
z<Yp;zPmpqwD>axeMqNdGXCRIr1BZ8tfEFCv+6sw$I%);_<tI{Nz#KiT#GTbQz80Jw
zuA~6B?keeY(Hrwh!Ut4Q{~pzaj($`IW$XY{PZYpDu8lEUIc`Bde4GU_<m1r0H4049
z_X+}bb)Inv?_wW?P1W5fPiT_zyL~l1fAqxvaY4=>VT`hHUVg1YKZyYAbAU60{gT)u
z)wHUS3t{Z#NwK)%#J$hagqr8u934Glp$U$oOE^*k7zkEU(~7JzWTArVUa%G=J=aQ>
zY9-<$S_uwA0UK*mu9cL;Qwd)B_O&_IBI1E%mb!<J#NIfs$J<EBv5j84w>j3?P%h=~
zkn;CQ`FH`l#l-55Lw&Z#(PsFs#@sl=>F|*{=^~<)@|3lx{5nnhZ07RrCF_#KU+^M$
z+JOt+s(M^`D6+mrAw%WwP!O#t@*=YFV(OSyOMZ)0qW6bNdw(U5i?4-dW$~?AExp(A
zjp!9`y?3zOceLEiq*ut?a$P1VhbN4ummOLB`hi%0o2)?=zZSWCEiO2}#74z7@H|D0
zviM4^2@7~CF))L!&352YIuWU$;JX%042LiE5;3HqiQ?PBAk1o7;seHr(#c3e&4^c8
z{QJ&;nziULgZ&iw&4IDdq6R!otsJEg(~x#Vo2e^tSm3~dy&i`J8X&MNo@T2y5%&@e
zuTrQ}KBjz$hU9629OVJ58vdfhDO4_weyIoa$_UsSRu7YhbR(fY;8NmxFeLvJ_GJ(q
zu%S)`n_U>~3E?NBH;myTvaxDlew%X-gd@)%l6yb_i<Gu=%mm{Q6~#<4VoV7qa3;hl
zr$i?m6w)MDv@|<Hnr)V5N42HI8$h<NF+LdDXO&zg$ravakKk&NblD_VtmGOex#A_)
zWXY8*rI$(RE-5`Dp{d35^}H4e#NeC`IAW>a0yMRgAFwq10uOZFY_df==7KG4(q(aw
z=j$#nN)lJwq}5SkSX-LSo`<QhIyP~23_dqXi<yHY9}gpn0P(U|HOGdrCAHxtMxWn_
zF<6t{meQhY21zT-m(Ti#$;X?onx=ZMfHHH9(fgsrH@nw+b<lE4j+7oFt(d3;L$~w%
z5jdm*TrqI*S4Vfz>txT>dDu6%*)!&WV{P`ip&+Ww?wYrjQuDwCY^D$tfs?U3+Piup
z4t$7r%9$}((N12V?cDNMHJ3=k+q|@iVu-!#*Jy$xX=$<IFsgTA>dB9!w0J3PoRkwA
zS74RXVv{<mqU2fOuDJHu>avN-(mTj3g?mflIe$uAT6|Iq48$^{l;0;$4@Zb2uEiy%
zO*E#(yOgP@D&rhMYj|9TFdD^KC?p*BYB;0?@xYJ1{G$zN@p5LooD-XLL^Kg@Idfdn
zk?LS$yOcQ&2h_9^t#Y>6doex>ryq~y<O;Lps%V^foS8T^TyP`?iNT3eO=7b5k-=g}
zTSz#@B~J~PXIkY2lfCZqoV+?&a&*c;pjMu0f<J|*m>lBmjh37jVSpv)g=K@G70g<p
zA2p`oxp~m+G%Rf5cnx3I!<ca1nqGJxtMP;r29{mJRA;aJ_Q{Wo=Tt`@@OazIUe#K4
zc59H3QuoyzG9AF8H9J?i^>!#_T9hZq=TKaS9LgPs99=TLSy4C?z|beWi&9`{3n88E
z`YW7jInCxRv66Rh@}|eDm(t7zOTC0r%dVE@3ugJv<}S0b*>gw2iM-37H=Gcklv`pf
z$!39$1hv_twmgS<T?;(TaJ1iqmU)}a-p@=)nK9^QnO<ofReA!IaEMKXmVi_#EkZHe
zN&_@E`^}e6dOr^Gz8Ol?rNl#+((NEMzq@N3QOG)4K{!StiJ@2Dr*UXLD+Px*jYAi}
z8Dj^SggR(lbrwvn{mLvYunOUAQ#D#o4Mp(qatn8XWz8q7&By{9z=AL~T<?bl$y{<d
z&B_G{w#Iygu@h9f8uPn|nXg2nKGXzcrh%miYFh|AIS^*6zDFahg)rhHz?%?et2&Ri
zT6acio=NW~UT$et%#9Ei?$$=fr_`?rVr=$Dp<h4soAk|o;Q=v*=>0zS?fqH@^m~i^
zX5EJ>no8+rIn&0vmQuq1&5)Z$T{mPfmqu*@3f9OZct|Wd6>kjr*3l23LRw%Kz<`K<
z)9cKe^on=}6P3xk(8{%ikU7#wu+%?`XF11?1JX&yr0gCT3`dW*riT-XFvy0(!bCX*
zJ2HGSDBLHfM94Fu;ttB$J;q~6$CsJn+Wkh^*)v;qcEG?G+h;4vZ8T*9Ou@0Y9ty5P
z3_G*}$Q~!5?sfDU9DVnu*}bc=w`@2PuJNe^wlX9nK$}^p(e&bvC{8%cG{a;_k(@n@
zFrsLbJUhDKgp_?u7=|Gv&9+sC%FbhrreSKD9g1lNZAs4Fs#cv_Bd?J&7UVEmC=`uq
z_d0tG&OQoXOwouLz_Dn~%P1QZpv)SeY}mh}EM_2OvHvk;GUoTqDcd}lv1tHhG2j=R
zP)(LW!ps4)d>K`~`DE&!<@k0l3dhxHmZv|5DgBQyFq$k#f~u)Ygq&kdIGoaaHFV5z
zEZE4D(&O0~O{Fsm_?>1@N;5hozH2zxLz7vzGM9ksTl%*Jtc=_;mcxXC`S{RkY)&}5
zX6Y9&o|wDFW@8I5OH<=DLjhczcXc?-dm)iXheVYtBLW0y#;+{|BgP^S9&D+{x1G$^
ztTu7NNcnB=hl5V~<F2%YfM)o@-CcuG?p2L}sW+3V-<(%Q%>cA`FBp#d@nxKhC*v%y
z!U^}M3!~G8;pyTyux}#R*A{|_$N5LMg}}ga{z&<d@^{2#+Cqj?5-T4jI1GN!EKo43
zs}T-DKV{$>G6SsJOGP&)=NjwYlv^$zA4@+3*W6`IYGy)=AR*q1*0f^TfsxD&j2rAU
zrUT}+rM?VPA5$IQCa{T)4^;w>H0Le#kD|3cOT<p)wvkjjFkKxN4USGo8}qj7Fx1Yg
z4h?Y7{Ou$U?dRYf!3Hd#Qrg01e=za!4m%#Cv|@U;c$-XE485NXty{hDc2;dZ2C#g%
zcXjdY%i+}U;4hYT&OZn2?)G7zb|QhT`D^fW9mBNcj23*7UnXza9q#N{3sbWTT@7mX
z8%w0r%t|$lM;G4DjB*;Els3QWxIY3<mfa=?)h+QBr&V&O<6X^<sQSeBEV;72%reO!
zrDgbD=*HqT$CozOHM@-?!{8a=ORJ>MU!Q}R;WQAx&j;4~Q$+7NnjmZ(!%)A=2m~7W
zZ=&F)<ja|JnSUr}W~7g4kxg}SJNydEuEX$I9UaS?DQPY7Ua?kZ21@*QX*ib?&Vg=_
zW!F*W31P8Mx>9uxNsN_dMTzV@S0ZJk>FnrQ0_K-^YtC84Jj<?D{~a2>dv3%RK;}yi
zB7AZ?aP<Nu#+{F^iyi_N%kI>)auCYqjJL^1x<89;X9)i=%dS)6;{p6_F#9*<fp4lY
zsTcT<ob-GCMVJOLOh*6rG{T<y_J)J{8(yJ?PkWmNH~R;9-5p$B+!5myIkQ;K;f<LK
zX)OcM%PM8&Gwp$}w7KkkWR#`;0}}hU3SV8eu#JQAb4>aMWgU!Azx1bR2se`Se@qiE
zlP{68JJL&}xlH@uz+RNoij8Rt6QOs{459s-e2s{%1)9dm&^TAW#?8YEhGoTV9Icab
z+CpC{sa=pVa$v{02U$-Y-wGs}4FbbLs^-_#TnvJ6s<P0L?8Jw%7o>EofET57D-=dT
zUaypHa!Cs&ORJNWPR3p{Ty?nV2tK8UOU_O?-3s4aHX}wXp$R;8*wo$dYoM@lS_a#z
z%p7x4Hm&o=Yf@6EaG*&;&4AnaZ7ROJwZ2JvVY9W{(jZ~Dh@Uhs?ZyPi?uMsg+0|}5
z!urDc4K;%Yh)z#_YCHxS&^J}{KdSZ5f1`hAhh^70%uXaU8IQod208K(OtX`UWw-O3
zu^E$Yz>G5<NqT$vE0$f(vovP{vn}v!ttYLQGVS8vwh-7%uIu;kF}K<TBxzOZ`Z*=-
z0dv5UT<VYoyC<ckw}oISgDlhGvLq(;R>x>G??8p?rZ6##HZw`9)2q&7;FxnCVZ??U
zJI%eekO;z(IZsY=-9!Q<gzb6>%)3DXt{aWa^49-7=Uq2&{vR-N*Z2D$a2`ndZQZwX
zek(0;0iL>ur{k$J>=Vc?5^pn88G9r9*=q-Tb$>hiM#2KzVC*F<ndwY5!4*SVDv281
z$!X)_92bp_3yEo|%gAwxr+#;0LbZk5f^NJu7qN<7L0WcPKutL_HK~2s__%g#y_x44
zk8duQ4K}95-s|j%bM*LwaUo^1BVTfMEVI(9$Idv)L6Vv{FH#dD9^<IWML65^kZG5*
zJJ*<1N2gtN_B4ix-I_CfKl=7ZX>>eEbT~WLq}fqTbzW>VXqKQW3<ciRW{~<{MD#Vc
zO?w}B^F0`b&o+nJ$P7~>3~Bhm5Xo^th;tFmjtgGwzUjvx5R7Vt-{B8dvdFa>;3mq)
zsSex@G?QDz(KmAd!4B-7;RGh7MG2wcaTIv$pR0SOZ6R=w8S%o?giBaCfc#n%U8ijU
zp=ur$BR^?Dw2%U<9I$G3o<$oh&;APM-nxE_3kD-0LIEPDT7gXpg2yBwG{H<Fz9Fqd
z9nCStE&@T^^WY}u$4S-m2pFO@+0~mFRqyIpPD3JEy^loI+yhR6IY}v2A(|d*%t{Bo
zc!C)i(iVbkE9dF!G7&vB_!9k8+;o$ie*vK%!*sKuAi}T!aU?Tr;wk*-%DY0W7R4DL
zfvIprAc5m>j>wmu9uFMw-Y5(+=+#=HI0(C{9Mk1<qfU4~vKx;ZbCMy>+;O4__(I@G
zo5UgBn)4j}YR`GR>BPv+cZqn*>zlz@rrWtk((T+Cz^oZ|?k#|8rk%S8c=j<n7oB0}
zwg5P%ox2;505}Oq&a`ts20SqfZD-rLsdMbyg)G#WYv&%#wsXG)Ovth0+hRL6G}q4k
z4Df3}4}gB_$c(Q-5u1YE3HKr_hW+VXvV9`$^;ksiIKs8dqP5tZw<H=bP!OV`nBoEo
zDw-{SPK^mih?CB7=e6MA2EC<a&+HX|okW*zl3ms;IqETA#;spT&QtP{IA?f{Tp67!
zuLz%Id|Pt1`qn<IVy%{($K=dd$q5g0oaAgmm`rjiawg_^hnzVXE2Es5EIGrmkl>R$
zteTmwsR(9a<vaNi%=Ant`>1B8rR;Xu8ScGesUGchgqx>Xc8x#{XSgA|PkY7#70Aw`
zV}LZfQx0DvIlJZTZp|A!xwP+IC)VX&%dR60hjACCV-dg9Y!zo-YPKU>3QMQ2lW2iO
zGP}=s94ab@|LEVM5nr9&{He8ZBr~gcLYxZAF5$lq)L~;?J>&-Zdi8}TyAL!Ovazd%
zXYn76teuVQ0!HS)oe_NkbBbZZYWzijWR!m^$r!Kj21o><iQq=|MG#sYN8JzLX)job
z(&`b&5Ad1tsE*E}UJy<Fu@PL9@ooCsan9DH<CbUtfjJX*JSn?L%I>xNfL^}A6we?Q
zI+cdQ;@z_IeB2QOl1Gy8UA?yv)nVjiXLrh)Vbc+7YaA*5)BhNPr?cUHI?q#0XK$QS
zLG9`VsHr+grfY^zpMjcRT*FP}kDwd_x*i!(hGBO5$7uaJd#UP(Z+41bT>$DH@717X
z8NR9i@)%iM5}9`I(jFs`*Eo`{DUBm>O-J{C!&LCw(7}<L)xcgcsBz@-P8KH`PA&0d
zXdJmLWX%l2^hQfk{;BHkCDk0WJTnFs(LW9$Pg*CjH?~L7LhX;Z)NB*XnsekIf?RTm
zbYtucZ|*Y2oo)Wm2uUFNAVXKf;pxan@FCrp<G#lbXY|c7Favuk?oDrVF#J`7ed6A(
zYi1ivII@oL0x4&*l$NahuvA&hrn-x3A&<b}2giJTJSJzaz%OT&<;bFt>%o_r5eZFs
zzMAAO|CpfS-F!_Yej7{5?pQVqJHp3&sgC3ll}kx-R#tr`hj}dXB&=$Vo|42>j$|=3
z9j{rCs_w>Oj{uq(FBoFwp@$q%_Ct<a4JA?yev&9kGI&Ew@=$hbBOjdWvcW4$P^Zgp
zOEuvo-c`<IP7F<fC6Juq%RWnVnyazwo8`AHyXQKSjcVN06;D&?vd{41<?8CN#B5$D
zN6%uZC#XcqzCEu*P8||mVoV*9oPr(hkkP1od)222YGQWfvU^GrBfc+;!eG9SjhQ1_
zc1Dy)$tl<xf8Uqkj4n|P)01i{u|hiexFbT!3?bU<>{i<xol)x`8iz6uH~+)*>j6t)
zPhJhe<-mp?;v?WIQcdT94*f}Kb9B>7Z$D%Zf#2UiWFI-qzr{ct;a=xORenUuwzAoV
zb7M6;zI*NS&BV{YUBJAOvhnHidC^*TbvyPgRc3f#UH@V;Ekbgd*0kT}v^F|#m7ONb
zZpZ}_t-B@+Y{tpf?A!eJuD+d>gv!~9@$j06VU5{QFqb8A_^=Ymd7D49#OuC|L-mCT
zC*<}xrxov1XuIPCZWt=-Nxv~a!WaIld$S|tbIl(ILAh!o@MBL=(ygLD;e;<;WexiL
zLB~IBI4)joI3a}k9#_YlHJ-y-`mWbu3i4%;o`hO<hnBz;=l6-XCQ;a>4Z@ZkAQ~p)
z6hx3h?oYNEA6Gw1Cv#vq#=MzCb2-9NKN1=ERX0vFf=y6;U-A#>^HFdtu6?Sp`Q%5y
zSRE@l!bv9)e|7X)c1OjXY&fxcM2hMNx7)EH1E-BAP_ODkFi<{r@*_hwm+0WZU~x!Y
z4M)7Scz?r)ijeVw=oo%%L=I{GD5x<!NDf)!G&g1h8RQVm|Muo9(5;Lh_&^uBR$<j+
zG6*oz4q^Cb61BoDfk6oHoXlP~yu3#m9T1gO#->bmMoHm64e*dL@FZj4V2FOqo5myZ
zSz=+syW-2TgFHr@q%+`WuR0{Cfb5*F9opH7ZJhUwh3r5JrmhuJ*PM&;ukFpBS?h56
zkK>X$#2AboFA<F0dp@U(?y8`;ZsXTUy_RRrLX+ZpyJ&3zV;c@z>i>#I?^jmKGj({V
z`)Ye681qa!F{WiNB@#|t{t_KwO4s=*z2^zk!^<V(7nWVK4aTq8JxISB^}9*G2kZ9`
z{XR&)oArCBeh<^{gY|p3ejlRWhw66=-Hl&+oAGsF!*bG_LkTDL(;zQjlG_f@gZu?3
zzN})dU9~jKKovS>{Sn5)2DzUNtXVPre>wuM-x?SMeP!y8v+OcFX6#Neehu+|`6?6I
z=MdWGavKKoxqQ%n_jNVoL#z(w@aHscHssIct91I(I`|OY6Xvs5t=<|loz%a4>{alE
z6QVC2GzudvyKYP97;_eHjS@`1+yIj{6}%F$keO{Bll(=2<(U^rIkL^op9V|WeF-7P
z%knX}6qa4*#~ha<p5L(E&Lu?ra>E8Y-r$aDMy#4rz>^Tsuwf%^x1hm6gd)Z?%ccgZ
zZQ1ocbwv%%jX6#Yw2l)@&$9;qf9v7e2*w=$569qLYPS6^Idzj>RD?4d=qCUZYs^)t
zOhiFUME7EQL^A3Z5QNn)qig++Y1U<A#Qf-!4~lP)hLB3!l5h-?A(eQZM43h^(N(bE
z@-e*Jmgi#6aYDq;H_?6}oOTh)i*Rc4T8^q?=VR}nj$O#EJiC^$YbCBpL+ArXG3d*d
zu4k~yAD!*Xh%v{t!$UPTk2*ZKIj`$JsAYfdpg=A~an!L*z;N`sKdNbpYsW{<$HuhF
ztz$VH%T8*q3X_}j*2|n^ifI{7$4(kJe;0q}5}el91!MVA?;BXWO);$pLFl9&BsS9{
zzk@D&=(3$kBKy!CJJYqf3F#WM$E=(H(RnSNdHm$R0NHC;F=zwcNsBc;`N6lXmE;!m
zK^|}t`Y>s@;+N?Cid<<r(1#N!_=PN-aXE%s*qz~HEFAW~lqSDVU$+7?zKukQ{~YpO
z>P2mohk5Q$@~Kn*{VWU7QJXZ03i+c|xU}M;+y^@H@_=!0*97z_O*#sC0~ki}O;m9Y
zRs0I0&&z8IruJ}EIG7f576|G<x85n{^LChoQ9Rw1VyX(1;rKimKUshua6#@%5x^qH
zOX7t!A<4Go8TC!HCGO<JscS;;9EQA*G?e<gFF9HbLI{312QNcCVe{~-8}$1Xz#Dd6
zRX4YTKJS!$xN;)Ce2BCHZSq~>VESFIPRsgcYz!^Cnotmq0;0l1SkwH^BK&{|Ybd-S
z*KEZ>e93E(-3s>L*Wsj7M<z7&P9aWkVhBFXM^cx}OVqu81e^eBt7q;Zd#H@Zs9Q?v
zrVy#l$Jx)g&3-8viMl<MMgRSd=(p@{jH0Y7gTZWJ6z)ODKIPq0kKCcl-oz*xd-3QW
z=G`N(tUZ*a;1P#f<z`RNW*Rz9c|yVPn|+aUamO(y4jkTW!bOdY2etAL?vS0s8Q92i
zEY$}^mCP^2Qi9vu0}(1$L4a}=Z17Im*h~Wr=RYi?_A#iGr@X*QHlRcmL#ZPhWn<DR
zTT#+A2{RU3e0+I~)aH&BpdWIIu93&+I{GMGC$-acN-M4<Ya_eaZAd4(jc#JM;C<{i
zb`QIa-+|l49|kM9!D-oip50BGFW~NTm^WXfbi)OlLTn3;#j^qbUZTRy=fRV<;A6Ok
znz*L6;8S=qaQgN{YUn_dmufK<so^{x@sl@D+RZk!^ca*fj3AG+v<aDf`*z|%D;~X5
zr~)VAhY*!?s>2iR{?EADQROh%tX`5t1iz4GHGQmwLuHVIJShhG>S=tk&`IAJ;=mB3
zVIyhz3t<h+gwgBn)2q{o#ZG*OMH0m01)t*rj`!pDa743mCWu2+>bxp;;$$pCs!3YB
zKwlL^Gui8!sL-1eXtc5kgtVZW=h2o0W=zUF3|#w7hrDzgp4$@(f)CIosZH*#w#Xrv
zD?#cp?;%st<*Lu=o2A@6@l=N{-&P0XH$ySVu*xu}C3T5VeX{LxO0u!JZZgyQ?u5f7
zbt|F<8!$cP<`&%w!}6Qt^kieZWp_$MR*q%&lOYKw8ZPDfQq57zZpV*qN8sfMUWJ9q
z^UTJxNncfkdk-4CO|eO*t3F}B*o^V<wV+KY$DoOouhBf4qtFj-(!`$vw>j>hYmV|`
z%AlM$*&frZ+;RCB-ahLb!=4;=0kb0E@D!NBCXK{va~t2>&jtDxb!-&Isg8|iqvfB+
zR4InMh}}4+iQka3`T%hk;2^O*@dJ*&gg0E0Tfy;jggo`$u#>=9(&Ek3t_9(OV*FYH
z{_+aoWXb=XKbw|B?UxJmJHOoxrKE*VIgg5X6V`&SmN+9>L<9W@kaC=5hhua@@Vh%X
zISRNyOV5H9NP$J+tc)P9yO%L3EB8R=C-%KbZF`}r_<@Ut79sTVvCT9){0s2~Bz}W2
zaw~LO7W)$D>%DDwPUyz(b?WyW?9P6lCvp$fbMz!Qx)bo3nK)?wEMWEzZun9hBp)K@
zv0Iu%v|m0gO`;AK6u<#c$7Vc9oQz=CD0Yoz*I0HP$FA|Xe)sns2masVK>Mp4cN*{r
zCd>ptG$0Ic6?vZmb^+)wWGBb<?9iUekv9i06%Y@23a|#S0k8-_e^t9U?peSKfIk3U
z1N;^65#SOaY&ZG>JP5D@<^sw9@#x16m<uRIy;Hb91vs*w<8}aE1Uv^201E+A0e1t2
z1317(uXEfvKr3J!+Pw(a251G$0lqZAWWZg3;Q$WMgE9}`BLMwnpluGI7*GaS251EQ
z8n6S<iGHpELJr`+y#wIPKG%)(Lnw;@3<taj9&QD^4A=)a1ULpb2j~R!0KNv8VSucF
z+W;|u2LZ`|nSi-~`G8_T89)H61~dYG40sW+74R}(AK(b!6ySZpr+^;7*MN|H=mQW1
zxC<~2FcsheEChG}Re)N+bAT5Bn*iGYuK|t$IsrWZ6UJu4c<Jv2$ZHE=J0J>j4+HeT
z%~Jp!fOf!ZfNg-E0~!HO0X%?tfSG`Y0QUiI1B3v+0Ip8~?*sk{*ax7$O7Mz)CUyZJ
z@E2EN4?J?&y!Je;%3Ub9Q%kGdMM6c@N?YvM>U*h@v#>I!)V+LGNm^-{ThG<%QU*#Z
zOUoC3BVWrXEiWkpQb&2Qt;#KkRpr&TvBkit=U<np=glZD6&@T|@W6xzCnTWFe85t7
zb#>ulcfq2H6<l$E(t;vJIpHk<MFW!DVz*FGRZ$@n@Jrk)QBLXVN_SCdVOc>*MOm@C
zs-Ut^;5iLLK{a1dB@~GQH!W*MYDPiYtjxJt`m<}!tm$)7oLQWno;J(roRwK{EnCme
znwv6bZng`3X*l$H*Ru8eR7cihb7#3yXUuU-n>%Yx-VOD?S**89ak)}c=BD)HXNaAS
z%<P-=$FjMM(na&DO9l7%%EF>0U|uyCsiWYsimFO01<JuE4b$e#aACaZj+9i#oGi|j
zkuo=9##AceT-kFR^gN@yS|}`oNJ}fqZ6$@^cJTx%FR!pwi$%Om<EbWlv3yB+#qx3+
z<Abgr)u@}5KHV*3X+lV2GH^izDO`zIUc~Uye|=iG49E)?mAN^tns=9#B|JExxU7sz
zV_n*W3Y#V|TR>vAd&XAZV;gUCS5;M1+2U7>UBP9!h1`m&B~Z?OosPYCU<IPZEzBsY
zD9@-UVne!Fc}mq{ajCmpsJ^ifZByOVjDg?=N;Q6r8`uTv(BN)fi2i4b?y8kD$^~~-
zNnw#Yc81GcRb5&w(8Riq)M*vkjAQ&SFLK|kuj=aRRe(~U<)&58G=i3wK6TT&REesV
z;hr@sZEkML9LIduN`bE^*KgA*s@(I(7Ec&kJYN?&4TNyJ^5&+`%1oc-bW9mb@|>0B
zAf|IUg=L~!d*liV7Kx>0LTPzH0q0tY%!0Ivs-=YjYrhgKEpQc9RlDbkl_X){Tv;#`
z4T>2KmY$ZTt3yGidpXKyE%LxF6+m@T1feQRsDfOnot_UyU!Ol?X(i@zfp&9N6pO5*
zIbwM^Su0KNCrlvaomL^1728PZDk|OOw#tfX(9P6*ye3`S*y=Ei#<bFM#!~bPOa)n`
zOF{oNTC!GF7Z4#;i<fEjuL*&ri4QIiF3@;MHMIZkH?wdlF=3Vn3QBBC-AiG8@5H*Y
z2<xs+ufV(Up98zc>x60ZPp3{(yCFm(H?6Sz9>G>tQCMu#q=^|>HL#^kYeaPm0l+Vm
zE_K^<v2hQ?$J?BR#cms>%)|P)CseNF9z;Gf|I;ceSLy|UHvMI@mbt5zSHaR~6|V7B
zpR0nKWKxKwh0HX!x>$rgSq6p{+lopS)BlQVTUxldw8&O2E?wlVvc*=r-L^%=m=6WZ
zOCh#u0i@i^%>}{LwmB6`3(IN#ij|;~#&fN|D)(YE0tPfIu2^m>Dl4q6*6L1huOMEt
zcDbx{8Y@H|`yZHdOP?yNDn`SyGW@^GObdYC25YynLaeeCRV=L(fq8;$T3Kn)5?dzz
zYhY%LD!|8b(QN~_A%h}!8RfcHl%f=()5z3tGkcj;Q6ela#0<O1oU6WJ!s&v{A=3al
zKuv5(g@_du|1Y#Q(kgHTWBOK{u=f?D7i5ohy||}3Fg#6{gq4+yFG5ve`C>O$$xOl6
zVi*82yU<rM4Yqz7$S$Bu(l?qoI;ZeMR22ceyG~R4=_O_aXl9H64jng?CosM$_md(P
z_u_H3<vjiqYTNR{YBoRrEt&ux@TasIooFbS{tN8?*49?P2@pmZEJ=W7efSkNvD*DG
zm(A1+E1W*5?;2Y@e-0+(GWXbOQk}bO<3$@~j;$Ua(8;oj#di@emSeu&P@RjP7;l^7
zUTjO9YGbDDVcQd|asJq97|*Z)I$Q0AeB3K-m=B_xOD(OgEGt~eEQ8J;W{XMH;~(tD
z`IsA%5g37PATE8rX)X_F8eh4RwZ>O@iHVpwkQi&J*|jVvc9A}3@4N3l+l+y0JZ3<Z
z;4Zd}&AWf>()-8aA^qX8P8;emd-DxWkWO50PjxB~q^J;W#T87DnAl5cg7AgQ+;AL9
zN=l1LvBcU6i;Cdj*{Vtx^FnnP6pl%5X<-pxTJEL>fho!It96A(pXrY|@(QM9&za-M
zoLi8c<(L!5%a}DSC8NNZGA(^ZrUU-+jpHkUVS$73tpfxe*R=&fx1O+HTB`|Rni(Lq
z#@YZ(wnd^K5aHjL{mYqUfzlHV*LXD0R-**{QF#?s7k#Xn!G0J+huy*QbIrY&r-`AY
z%FPz8YN5CSt}8bn?XIfATLRc_*m-@;yQVMmv#vRRfrSO#bFMOXVYM5R4#o@f4?aJr
zVXNkVrBUYut)QhPWaz2|niqH37FS^CbKI5KOF%=4VF)Rkl;z?6T+9`uF{2idM{tc7
zsO=WqG!2N3Z{%xJgA)UDR9~K{?)WM;Nw3XcT^#P>J2@yVtvA)SLfA|s0{eziWNFQq
zDf>_Ah4tftogav&s9)z7k%1$F!H}Z<K-RN`it?^A3CO*cr%z0b33+VEy>3|@kRMoz
zY5b@=aM`A;|3~IqKd-f!*gxZl-T`KW^_NoRrbQC-S$|kwh$#(i(D)HH&<fj1sw$RV
zzob4&NOawUOI}i1we$v`2<6xK%v2txm$?!g)SP>8f~~M>F&TealE#aKkFL2@74Z0U
zp8^gRDlvayZ1vb8sskquo}#UCWdW`3(3GSB&lB`KTWl5WFle2H?>4IvUK3pFw6em*
zNR!_O$5eAgp|^yEyi85)zybIz70lVpfM-S}+WH#sKW|pQh!tMj?}+73l~xAqpSEZ*
z^ju(1*54sDgwkm<_U1k#H^*IAymEj+B|cp5(JX=wMfTTyeV^bT=B;f;2@~}-2`@v0
zfSjKqp8N+)wUy+{GN0*s1X$<bDJ`xZ2d|7gsHs?%1K!k4Jg0uENihTFjuiwv*rjfv
zkeo)My<BslIjmN+#n*ia#C^1Mg)Xl^S{Eu}ZnWuur7fvoF$r9C-w=19RA74s&3UWT
ze02;)^H|9M6vAEA=J{OaVFap>24c5UR<_a>SU(r7)Sc04@Se=WK>NmYxv&bW9OW+@
zgwD-~AmFz#BFxp?@IiOrxe^f1aiL9|br7tnc_F}t^d{V?el5U`^aYgT6A|+~KorvJ
zxDkVr@Vo*r8R=u(utE6T3BPm0nPZXOjyn*T8v*G^ccZ-t&vOA0T%`G9w2#9x47GV8
z%G=Q%?;Ol9Z{`@Jx8hFq>j9}qD`-#n5K=HlBfWu(7?g$QRe)rqJ20M+c!pDH9*6WE
z+`|ED0U1d5qP-E%Si#N1(f?-jKL*d3;pPWX-irPQ;~CDD8E#kT7TkjX&j6+(-HG;K
zp!spYZAh<2|I_gN6yRZ`Poe)2c=iD9LwX19#LqQ=nMn7beK4ML0Jm`TN!y4)33$ei
z&ioL{kD`AIo=X6CBfSlG;`g(FG^8)0eJGw60B%QmBl?G#F|P(Zg7kUxKMK#~05}7o
z`*0r$cn*+>be}H&*+>t=_`SOPpG5irlph3sq8Dm!#wIcJ*SH%1b$}G4KSDXtgMgCx
zR-}Kd%O6XsIT7g-y8KI#hBXU)8F!*r0?a`A3$!PBW&<KQt2xM^$sdN)JPGATbooP3
z&0~@N1MbAH27m+UPtl&_pAQ&~^v`wq*C0Iw>2tdLVcgB*k$w$#(kCCliS$*pC;5}k
zjKKI?boo~!4LO7!(&bM)9fS05ai{uTz%-;kL3@(_69Diz^aWl1-$yzL>C?LWmmm$j
z4&8-2>5~k24CzZ~Pvgl2j2s|;cr5h8%AtSN<&WTl`5vVIggf>31Hg2o|AF?z&jJAE
zZRm@-{GUepQKaA3<quP1z8~rRxRXBp5HJhrum6Yn-wgaD|Ahb>>c50L2dD+uk^T_n
zB>#DUD5QU+%YOyZlaW5I%b!O&7U{p>PV#C5q$B+~+LQdhZT=tD<zI|CF{uB0+^K#&
zAQkB@v?qM?0nteROqc&Eq?3_8tINL(>2XNEihDR<Eg%EwD`-#h{I>c3hA#g_sB;(U
z{|5IUz%ziUNdGt5lRO>=+=le?y8NF)`eCHs(dF+!`aYz0;!gZr1DJ{QKhd7#|84XC
zEnWU4sB<^!{}=AW?`HvNNdFz}N&X7}w<G;aUH+?)egx_FborMfJpt+0aUTkJ4v>lT
zzy62$-vazZZz14L)ZdJ|0Z<1>LHc8q6Fqr=Tao_B4fFq`F8@-L-;45Ba3^{tzzn3n
zM0=9wx6S`Ib@{tdXDsUf5qIKO1Hgf_AMHv0`GC<#|3a644boGPepi?OQl!Tty%+Z(
z03X1K^jBz4^8dE^-=@pI2zADw{_k+7`d+{^r2mHYB>yJ>qmcfoF8}W%orLrmUH(gu
zjzfAk?t=j`;4!2xqdkr1+vfk<y8IWT&ONCAXWXg39{{E!{TbR5KLhjsSGxQI^Zx@~
z{uQWmKk6UA-2(U_U>4FUXT|S^kHnYRBZ7x<qk;|AVZp)Nt-%IUWN->MI@n;h1{=Ak
zU_($u@SR+Au)#JwIF!3B*kHaTxQ?@fbZc-B+Sj4|t<*khSnwcf9}*c{NbMI|gH6=l
z7!mvcwT~YjJcQbZ-xA!cwa5RhHk?cfKBErBSFK@OFgKVpap5>MFoX-@hT`A=D26{)
zR8d7Qi)>}?^2GuV-_KpNWMDoE>FK$YuX#=s(4!C;+|LTcv8!y0-~uvyH<TAu6uSrH
zmm#uPRaka^pf@VL5ofgx{^hr}(Mkht7GZy@<Emo&)dB6OYrQalk|S~vb6go{#I}I?
zP^wohT~tw4-A_+7-k`aQZHvk(;NohXU;(?v1Fb*{y7BPE-SC{Nifl_us}UqG;<3lo
z-ks=Wc!{>SpN?yM53~&MUE`k~^sL7Iq#qACyj2LTPyi8rGhb1x$!RIxewE@ai>=>d
zCZD*Z1oR+wfS^93c|e3li%xS)vU-hb0k7YdUaL>rl0Yg@R*wG4-QY-ZDSO9*ATSsI
zLpv7(pdT-b!rct$dk$$p2cU_bQDzIgEMzYN5jv?{$pS>S2NDw}jYsr(6864TOKd5{
zWgwf*wwR!?A<$kk^fwH;I|TYVj2pp?<VJCKaAUYQE`dwprg2$Z5m(K5xy@V)_c6yl
z0Ks^zH~brhw)Ahf{%-^@(Z2}&UnHmfvvP;IR<t)@j%YN{{279lw{mxK4{#}nxYu#b
zoWW3MFa#Nl29qJgU^avstcECq%@A*}8y2E@fA4`l1AS31x8UDM{ENcBTk-EU{2PUT
z(fBtS|Lpije=o!jT0X9D=s#YY9s09dTbB;{VUMSB(r=2oHa}nd;)9Lv4&Acn{L0(A
z-nr0t_QX%)GIoW&zUnWl2aVtJw;zo@u&&s;d-NB!?Vj`}U;Xm^l>PNJr_SBx?|g6R
z?4752+8R!Jb2gNXXxh4@_^B(4{&n%Nd(Eu*hKRFeAw@+~ELZ<I#O!Ogl_xE*mS%LO
zEPSWx$;H1u-f2vpe#-RNzZ!;|Sh6$hH&?groK&{q<*BC+?|s*PW#6`s%Q_wu=YQaM
zd&ueYc~g%6aa;V^yC3G>pItlqO#3Z`#}4f5*>UHX)>m?V_WWyaTYmHUo)`B7#hM#~
z3tm1Oeki7E@Lztgs^b1(8T`CIjxKDTGQMQjx|H+FLY{oru+Mg4!+q9wK9d^$^5h*m
zcZK|>^T4kXPVG^CeR$A{iB~wwb6Z1Sh}tmp!@Wa1PmiCn)cn)3;vX627k$z*d&!bT
zg=Ntl@$QC9ZqXNie?Fw_`@b=aYVI*VliO<f=b^LP-L9_P!#~}#UtZPtYTpN=-&-_e
z{JF?4SDjqz&N%heyuz2Af1SPaVS(GX`J?!~r&50N!OSzycT8E@dVI@QJ*Q84x=N?@
zoh_f3*0}h;j_p}^u6n#F^}k0O6ACiI{&0BJkoS_G40in?CFmZjb@2XYZQ+N<?&Nb{
zX{fM;o+^3uSDl4_9eU;c1se{Zz4xvS$F}d-dZumUlvncVhU}P-H2?M8|5f%{lg+#5
z@4H?(@bmDGb{T(u;x9tt^mjh}^YRnFjJ*3@llPYM)x!rDeO#YZy#5i-(ji+P_dGTD
z?V+8&R6~Dq&!4!kzq~l8CiN$l?h~8MKj6PG-2U~!kkb6zMVH@P?5=(Cp|V^57P6##
z*{D-rUx+&?J^s`=>(QC-Ew1?B)hky%+yC6O{kuoL^W64@%I4FjSO4VrORWbxCeQie
zgIS+1-g|s;?!Mo?7qauw#~yk){aoCTj*L-Zf4(%+_|U?qOerm&E&L$+gT-4vd#?O}
zmHSK6*1l5s=55}ReVa~HjD6@Me$MmD!;c!L58nIgEkSqPe|K>9{-oF5h#ma;%Rhd6
zN1Vy?%KYD{XAVB__OYGvi)Y7;{?q$UY(H51i@U!ly0~$(M-2PP(xBgmgl>HFp`reU
z#e=Fw<Z{8!%slXX#8Z1d`cvFrzCU@?uJB(xcjCuG_P_JryFWX>>dp_|9enD<$!Dj2
zbn5foSKi~xz31+D>z4g>Pu%_Lr4N^HuUI~Pcho13n;R?f>-<NOLQ3WjHVji=bpNpQ
zPm6j_s!IwTZ<pP&;-j!l|2Q$^%v`T2^WZDS#KOB5|L*cF3y(Rcm(F;1dHEwVJ;(oa
z{_)diO9p>n?@sFYUe=%X{r-&?_rCx1+b>V=Qg_BjfARY3YYx74B>pF_Wc_yYj+o$w
zj=lDikTY-HoBRIU1B=g&nebG}D|==Zwg!#j^Vi2!-1oixgLl02TzJc<4}u@}eHJvH
z=6}iqqi%g>(L)cmWQ~tAy-`-|=viL#?C&1WX?r1MmU+$D_8EH*9$%w;cJ<A(Js*e9
z+PTfS`cFHb8}EJb?dT0Zm_7X9OzW7lStl!dR{S{Sv%>5%f0_{S$<FVc*|{P5g?evr
z-iA@nME#!o#k*I>Z~yt55B)wrfB7fTWo7CIkEWb@ap>c3{W_-p`Hv%iwbqvQ^6v_l
z|9<~(KU6;d+p#Z|81MTn?w8*<_lG~_=lg$^mKu9>Nk!?uDwq9f$peX>J$|2UT<D;|
zOD9JU|MH=<4_+RWf9T1%m4A<SFX_4b<$Zg19em)|;*X-GiJJzk`)c2>M!x2&AG-4W
z-;bUA*~`i5$}g+;rz@VCQE#Lq-}nB!;8`oXQ&%tQ`oZ{F2M<Nheb=xia=m@;P@h*B
z^V@@GCm$H{#-_;`J$vu`;qP7u`|At75ux1C`RNawamb6VmLJLbaQWQ)y{|=<ZQ6YL
zQD5UvhraM5*M>9i5BvSmwi8!By!ewhul{rX|JB}?fK&B-4IeYfSfr?g6f&hynJzL^
zLKKON_nKW?b0tM8g{07g22+DEA)=H@l&MUWp`SzpiG;$p_PJN+_y4``|9ijp`JU%}
zUdMCJ-h1s~?X~t=`<#2MwN8_r_tNe_*S369jifNc-R8WU{EJ2TxLQ4x#V!y;RnuI@
ziQN|6`&Y76nK>xeZoirtL-#HzLSRL8nu5)EiDXu%*sZ==_1n^+yh(1kY~eS=^eR8{
znbb<?1pjpMC%zjFRF^H#6I1jNWLvskl9%yYiOJTyNWC4NZNxzN{$QJl!R`-b<>M3k
zV`^WiCRbIDDMo}Av&5VaFfGa1Kuk;Dnh?5aUPgjQ<yb!3v8qgNL#uvkPPZYQ=jtu)
zCppV~w0JEB=|u@2A9%Vw2qE}4>ozIIGj~fzRpetSVPS$LOCktfdx|Zb5_<f#T3XyJ
zmKjR(SqCf5zbGxZ>a7r_#tYVJCi0=lr|dFM)S2X;=C2rfYc|yX=uBF9|Esu`;ocIK
z%=Ad10@pVAi<144N4^BQKD(*s*+3Sw8j+FI>FiW&BPFv`9JDv>F%=;W8oVFOrN365
zA?O$rCMTYpBvF`I(KVXXHomcXuyNmbPfdwyM##8D?m0EKq}+qbVK=hHgw_o3v8-RK
zBe{&?FVAwj(^Kzzt*fzOs7{c7u9f}vrm-rn?#}w^{OZxju%?bJym49VqLFu=dL~~w
zPACr3u@YrqaZ_IMNS#mq2q))i%>+Y7h78l-`(uGS4^`Q1TVA1jXz!3{!lg9Myf<-t
z*99@t_ZISozs}j&H8q<AzF1_~slO|D%;>Ci)4rEN)piRaBBgf}$E}O$DPCUNlFa;h
zFnI5+a-yzBjGmipvWahxBJaiw7B*2Aa9oihs`GROrp2Y`l|+*SW3H`|jJVfPQuXa}
zWbG%rw(<L-{oO71I!hM*s!iii4~-BH&W%wo607wb;j41qq|>b#<UhVA-<9}g$RfBx
ziOr<XPg(CrP9|I7*CgJ{3f1Zn-s57iNdJ{w%IQ2_hB53e)uDfr&c^boyoxz@e<b4(
zenX~0;{}}2;6B}WB%Y(Qf9HIM(IspqvCXXWq!Z_<>RPgUUKJP8t?XL5%>T-AiKRBn
zZnDb?Ua<YLq`dux!1sLT#ZSMj=bcRWu^?4EhbLwmg?pie3ZJOl#KNGcLVkm;phX=z
z2FguqqBlgHuG~~K!oE?ZPg|WmEL?5J#``KnBYIWyMSB&=2QDfpK5Si2mm#n&tjtV4
z@6}nkkFE`C-_r3YoO<snmKL3{azeg;RplOO@offnqWe}Qi-?@-7UmliTe13ffaLPF
zyHYwfza+fosjVIo@{)e&m$&Bp)9*63t|-agk38@B<Ab?Z=I&*ba|&;~g;vJ;OBovb
zc@He|*?i%ZZ@`=5!G?FX9^_}`IIzO5X8$#xkighwngP#}8H2{3J>HisQ{r}1JJ`K#
zOqtw!YRtneJl}QCXMY#^9r8}=l?R<!4`$h^^SRrTZb;c0Kj^i2*_2BB>z;$dT?P?S
zq;rR(a8;AuqRV{x+n1Yc4fKuK^2@%>u!>D+`{@FUZ7FXP3=+;i(#iVDtUJ72WAg*C
z!`j+wpA#tNTpE(y`kG5mp3pLK8ZdRFSJ<gm;%mm%Sg`Bl{SlMm>l=5xTe#ooRdA_s
z&xUsv?Iyx|!oQGq=N!FezAomI6~j*nON-6qz3#HNtV0CXcNTd4=;*7-dDoIc`O7j-
zrQ5Y-;=@|U!uL!ZL0!sQ#QV8~yZUw|UioZ0Wb>u#oor9Tu`j(5iZ?#pvvmIWwQ#}s
zllr<}iEi-|8O%E;*KjWx6AWtpsre{z)Hl;|M6VYcJQ!O3O<XnXE03AZz!?JD&{e6b
z?_*~pe>|Tw9Ja9vXfac|+st|VSL=qq)Lxf-_i8(ll-FLr;``h8Tb154&v$L=CuKC=
zY3_e{C|CLw<2Aclg%`<nE}q>DR!hX{xhM8ktU7b?QLtp|V|@*QC)K;m%73byeR$<?
z!-KOuJonSH462eUqG6>fpAPV_SNgDMS8KV4KVQ;tzec)<{)I+dR*e5I_fs;OQl}TM
z?v1^umKt}%)FJ-cN0GA?AsuH%o|Gij+zL*NTcCXLa^Tn{F>-#w0w(`+TZ-i`9H<*S
zFSq`9B#ZUdlY2WkqMT3EM1Q^%67l+n=841ljK}juA0IpBa6Yt*)BJFE_Og(=);EVt
zt7F6LQ;m;o6j*eW!~0cua_zf}_`AaCFBnPJM?J3H*dOpIb1Sbz7Vk~+t(A{&-4r-9
zkS6;{A=PiE?=^yYLCPbEk>o+GjhC;F@4tE}zVu2h<x&2J#mu)$(=_fJe}1@N{_E$t
zn{v4F?6~xEb`noyJBc(ETkG-NWga#ul)o5LbUUK0B(y{5Uh7_qvM=irN|F8(9ZL#N
zJY~DymzB?J7H=25_G_Ec8*A5<MaoT=`d8nsh%jV5;Lvf8Om~#7sj#eZ%iCs`ZwmhH
z9lN;g&6CU)8;!}O^ejx`9`hQxsrmH&zV=&bPaL&ay?w>WFP?iIymgjOfJgdg!8P^7
zT7jdhdTN$vMpLfb6n>mtsT;(qmbEr{&(kP@e8)}mYO$la&dNrz^Q}L}zx%rT$kF)s
zs&z-hiMKm8zO^unu2EmD;2+N2_3<x%^Bo+`Uo@P`j7KhyNPT^j6t5>KCt_h}miTU%
ztbZ_;_4|_pX&SEt?*DS%UYoRDsz5ZdLLe?F`Jm*g#k%8n_X`u~Pe%`N|LD<6S2bUF
z!CXCE^v<cJ@(n*OA9tzoTga9E>}Ds+!O}3Bhs^b!$$JYH33cx-%otK>=i7GVLwQ|C
zNU$@fY}GzjJ^zPSxHzhwIOR|zo-o>OOD=5ro<P<<HQDeh*of38sMNa4U{w+4Y7M44
zkNdN)T|G8mXi4_#LkF82H^c<gOARgeh-LU8zKL||eCRQC*_bcpu@a^>+PCFdM&`Gt
z8!Wq9Gm!eZ{q)4~LKz*$MHfuzJy(4$*8A$!CcCXtE@bre&JUaIFD9$Ijy?%(SmdPm
zz?&-~uu93QE7PdcQe)C|`^to#Val-+nf(1q{39BN8859;D-m1XyMhp~^ITR_$BAdz
zmI|Bh?EbR1?)}c}U?bgEi$71gt=MG8rgOCQL+{$BhohoAUnYK8oil2D%6eDV;f?a<
z8$;Qm)4Dwrma{$x=WtKmn18KP<KBbtUre$R`ir(~|DHAIC$ct<Cov+RR4QR<OT6&b
z%Ao+6OuhT}>Bj3*NCX$5y>UMRH%J=B$0b>P8xVcZwAj_aCb;Q)RGr<2Pj}j^cSNz3
zEA{3Fwdi0@B`Zp5Kgzcsi{51~XFJ*`!kFlC{$A=mmgWa^Wr`lRZ<(;M@}1xAy>wFI
zMG8;&z5<`lCtS~4xKF2--jvkgS*$GTmlEPjdfd!S7i2S$S>t`7lJZPs;F_6koIroZ
zhFjy+dwDi9_Zj%vA0K!TDX#sdhcMz`94I@wZdoj$HAmc}tnvJ(-p8YPCogYix8wY}
zn8kV9<x=AdDz6n+g{?n#I?iZ9M&?|Rsraw9o<v?RtCRlxo$Fr6C}!NykKozdt<E5P
zD74rwrsJ;#!<Ku-clYWisO=nB!F<?F+g9!6^%o}|*JLOKD-#YjT8TgO$UE-0zp?Mx
zBXZ-?-ScuTcXlmXICv;9eQT3*)q-43{~MN<%ZoNV4yFs4$hi3a9G@7wVzQ!#u~1YR
zKPkN2t5t1H8+na>QNx+9hZxz;b{FRC)91LlOeRNAPpw`{dbh{Vhr_RXQ)3*BmuF;G
z2fdi@bH=uaG{DT%hV<W`MJ}$7({{}{HsiZ2?vECGx(r44+NZ2fbU1sJ^YyW{fo}@0
zb-e0b7GK|TjP1@gso<Rb_dXO#vz#hh8nd*3+rcGU_}gHSmtI&Yp>0X)%LDFjyFLxQ
z%r_2gIPzqHTf!~}*Yx}2cB4TN#7g+!y``Z&vs=p;m#TdvE64Xu9>PzzIdkuQWkcw?
z;^^hA!q8Q>mGPx+J;#yplzI8C>+{pcG;<T&UKdw3-Ygl_SljIO*XDLh-#3jMH8<*1
zcZ;{k-862)Ha=}K4k@d(<zI1oD1TSpBhi|>XU`ShOW|5gUzljkbd2@!{FdAt_Fger
z^8TadPTP1M*e<<sha|1)_l9ta?zI<lLcMTF|0`}uubd;tneXH;Pb%w5=_!1v5WrG-
zg$o;97sr+!)ybJ4aL|RLnAKfXI>x~*zT4iC&ehd;NC<3?j}YaWzu95i-I&jQ5u{7m
zcbIkP!FR4lX2k54$Gio-Mkh)OKmIB@w%_jU(ssU9Y5kK8`v-r%+(tCWwKd<EZ~WqF
z3Fh;%Snl1H_7s9@^Vz0rb&uQ|8i#&rIrqA(^Jw{X%kh{_t4(38Hls8}fnn+U>+`l*
zzvb9pX~g8EvWlK?y_B7syK=s8xS3P_N@4Pmydu&|wimWtNqgHyIVD;u6S8X)M4mLI
z-`<_4x=7|W$Dx9ImYeS1b-VSYFjV+_S>7FnJMZTE<kX-4_)2%frF#D?#@FI}lsEjL
zf7!G1o^jX|#^LUw7UW`)-o;tN9?Ld)X&#oj>Hte(&R4Ej?W3$$>zC1eb8==bpZH;C
zW)(totXk}*=;h(c{9)pypx^NZsSfVeAPdL0TdGHk+R0I+{iBNtO0{gVqh2*OUhTPD
z7aOeHT>i+g{o9VZV#k5h5;I5jeCD@$xr$qxIiy;%<_T_7WY{uHU<|Tpx9NYF?%2Ll
z-Xp4C$GJ4H$~Nz02`O~RN^*Vj4ySjD)${$&7PIRzh|u#F?PL;{t+>0XH1{6+YN^{6
zr!Dhb7|WX`)ADO;<kz$$p4iitx%7fVdG=@fZ{of#S1;1L$IiRR#+>nqQ&HWU#qkIe
zX13sL*_Ola3WFBz%aO{Qe@9UHbbZu?_peGh_P^;bV1M1dBD|sg<-p5#noe)?MwYjR
zdK@a{e?D9!zK5Lc-ziX_>wk>ZqI;6d#goLm=@}0lyJa*nadN~i)7jQ_vVq^NW^?kq
zcL7Zt^?lnJLrpg@<dvs6ird!O@c+<v)-_P`@PD0I=dz`x(c+CpJ3C3KdDGX7l1!7f
z;=~Hw+?s=O`IEi(?tK$_cDFpjBrjG@?Do~vyS0i;&zqQIP20>QL|Yuo@<>54k8HOT
zS~&^QOOmC|+-5ITdN@DovISGSpfr7dB+~!Ig7Sp5igt&kq)i?=xK%J7@E_W|%OWk@
zkP!FeX-foaU3szoSbtB%UqdZbH}ehW=Vt~RB!)^y9Ze9b*;3AHY|<ji9WdnCVB1eP
zEtA=_Qz^fDp-@786H{nd++o3l-50P7fo$oq*BOdc=ezx_tR~&ugkBQV+n-x-CY}uw
zyK*v#@2|969pTapf7^kc&eWd4+7A!gLd9Aua*0+}nb);-l0K1Lt5^GZjyrFVcg+-*
zwCHDNVOzs1r0m|Vqd553iY51pr>WPFD^adka`49$`SLr*g<^b9u_UislvMJQGc5A%
z%8a%^mE3-1%3$E6OOIYDp+fM0d7Grl*FZz2Ub|rJazp8(uT6y>pW%z3i{vcUNEPh~
zEmLkOS5B_rSW!H*ZC+ej^n%E^7nao++vX;DJ&!TF6aJkh&+ZmmnO;qH<2x3q-WU_d
z8Q<2FVDzLqgXeSSSpE00s#tHkCQH}A?xh;0`E9!m!;<(pdCj@_L>G%Gd$y{I5-t$O
zUDNi%3jnh!ww2p!l^y6}GOr3mB)wBet6m{lGH!EAtTXGjdTn14Z>V%QTdrHBp4g3A
z6TXi>gLNd{5&fNH)dPnW#q<i6vI+Vy@=C7XYEtrThhAh}AhFHUCb(bzL-*js#CUnx
ztJ;|T)m6!=p%IE>=VMrkb4pAD($k0=Hiaf^6-mgL$Cf`<$(>ns%(~yoP-n=E)4fIg
zxlcLg$w3QVt&apz`Uh^F51Rc6A@Pb$x>3^I%qduYMTuZom=_^piIYX~9xeZ#1Piy8
z7CvdiW%Ct-tyc+3UsS_{-WDZbyvd>RCMPoOPMyv-se3zA!T+d#$gICS?aXjX+^bBM
zlHLNL$n=ZyZLUY)1;8`cz%LD+dN)U`1j(H`k}{+=#m<8jEXnZm-`-%5C_<k*_+Buh
z{F+=?jH5(SvUpcTX5n~S(rDvg^~Rc>@qHl~t|jMkEyi<`*wk)>DIZ)TB$mCNg>PV)
zq|RCvd4GzYXXkBW*V^wvI-!d8R=NIFV@=!ZJG;3?;RQfPQ&?nH9PgGpk)rIEl0Bb>
z6%&p#h+63^QFddI=Tm>Qnv?U0qhW$(uxSRv&cLzz+w7_i9a64Xo*+83H;*&z(sjPL
zH}6d`!C!{*7EN|`=UxPwH0yU7E;1Sm-nFku`m9~G&`asahz0B7igzq8?ulVeZmHcH
zJos6cSbob*FUG^yBw2PNuVRlV8%qYOn5heoI#DVvEwC%PL@(u9j3DV=gygDkRV5vt
zY9lY-A8)g3>FyU@SkifqBdzwActohWdQ5JxXRTO~a~0o+X1C6!J>&jCZ-}n>6~Pum
zeI{&5KlGIS3fVGqF7qaRjZm*vh!q>h|7Sy2?xMsH_R@o1r*t<9TlyR3s`5{ak^6I*
z4Ec|6E-)_Ss@oLJ5r3p{{?7hRwk4wutj)0|^Ae@!v0Lh@3W;C!T-sHsyZnm(vSl_)
zB?M*JZ!Y;_dqLnvd--DL{O`Q$zdc>>BVm#!M?96AvMq*B#bV*Y2{}>z!l<A{L0tyQ
z209%ZqSrKSsyrRFk$t2{UAs?3Ej)}}<^IMUs`N%g#l4Hnl`bA2uWx;*xK1F0PTs66
zOz!NfytNIk9~F4$-io=tKeaL=I&D?I{Diplo=Q<WgKZ+otM&<ZpA%UjHpnL#aC^1X
z-L~Ztzif0?tIhM0_7WOeljrwP=KIt0vPxHOd7h8F?`8hs2W8prObE+*&Odggke{)k
zl+U68Z{JrJHU}Sn6L4_r9m4}0to-|H>{bMZ_*@InToxO|nEY(t<7eY;B{JFW!P-a3
z%42OFW2bsu^TXX-{6Ft;lHWn^JgB_hF6$txy*r<}t<(*YP45F^VrtV%2Zwuqkwh5o
zI(9fm>NQmf>+@Y+wAEz!_AN2Kfrf4NzqSjpRc*5<IBk&dHbv*r`2=0&uUVTlwhwC`
z7JEQ=zE)d<%bcRA-z}+i;^b1(0VkuK3iOU<z9nkA3L4o=M(&^7vGIDb(f)<+j7x)G
zS-jiOvq#vZeK+Y#xcRlCIaZ%y)>%sYWY|mIY+-#%*1dDRU`WRguYz|uHGO|kQd+uI
z@+?10w79-6bX?mN#KF`rzD2pOOPK5PmBd|NY=&%mWZ!l5emU0g>4sv&M`z1>;|mJE
z{;I2gG7;~VIJuKKV{8fcnxD-<f}@F#G)F8meFw2#y>I2A2fv1?iVx_R@eHvM&U~+u
zy80vX?AWm3<nxvQE1TxKN@lIUj&r_N`)fm+*Y}e4yrdIvzpto&qqOyXlk5EE#tc&b
z%l_s&ucUJi)!JQStV@2O(9rGaQZKf|s$%a1_oItvRy}T&41OY@p<iyctNP(tm7fn9
z4qv&?({r}UAS?Y@bVbtB%6*S3*?9)4wOM?ghr4Ul+;3R&g1$&PCM!<kl>0CL(^8r;
zvAwGo$EB)WjCU}-aaQExw=*3f6-gyeMiPT>)m&6w5O--T@Nz;vS?ruY(}D}~#aqq~
z)*XmEzFzL+R%@0hj?TT&H7A@SLN0wiq50$WaYp^a#~zF3hn{yhcG#S=EM!@B_n|kf
zbz!m9rbmoZ?T;=J*ckrGn<L|0ZF0Ks-T3Py#uqoPd5mU$3fP||!MpVq`6lnpTaQ<!
z4IC0kRrn-(&3C6?N`X2dc|_vT<&9c{SND%!zfu~1DgP0r_BQk44|g=uN(&A@Kc4&i
z_53`poJ~3UTz1(fh&zj$M4ayO=~)+=3^NzST$C?qi@1GHs3Ww@VsC3{!n!Z${$E()
zNW9MW^aO8yR$sJTyqQwl*R?BMt>0W~QZA~vy}JJZt6>EBUWY>yya3qJSXTJWrTJ|~
zyT5|DJ@+o7#b!x8DRN_D+(`>HZ;p7i@4Nrh@k!b(UvE~e=P$_OXKx+!l;#oOQ@>X5
z^Qb^=;*y%4RaYp{n%R$qZ?XpIRwl2_QWJ=Jx@X=d$Nb!*Sgov)vUB`r>-k4^e|@L=
zKK>{%{Ak_VjUBgZq75zl6;`W%?BWjJVebEz#+PP}5#utauTmqI_2QErS%}C<zDqPS
zJg83|e)63)_LWB30ry|`1=c6kZjTf#kV=XZs8}U=F!}Dd?qYg^@P6*0=+o(XJwGli
zG*=Z(S2vemdg{*c%Rd?x`qjAHe3s5tdXS})`JqkN-ek}EZlOg5Lm7p;xAC>B)RliY
z;v5{(v9C&&^P#_<YZV9A6-tiN6I;e75-o+v+qB6E-+whsp6VkR1@CHA667peWpIZ{
zWA(M{{>MV|k6k_VI(x|m$EJf)^#L)l9?OR|iT_{-J%5T6BddN)BG&xNZEYLV`6Ddy
z%M8-nQwM79PMmK4tRqu+-1NdC$Iq)g>Ak+{6<2PPZF@Z$B4@w(!%kQA<ckfVPevao
zIxPx};PURWQmV4-G|Jp=I;k<-ldv-L#4!rLQa?ZAVU3XzwN;l^^ez`Ww=;lnqN6EG
z!7}^Vm)&<Z?R;OiSJx;wd-C(*S9Y6LxV0YDVSBo^_k(9t)Zx`%5?`J&9?d!2waa>=
zx%|eoXtvPh3Lf1Y;SX5zH>SGZ)9Ad$^eg<qB7F(jtnb^mtQGMaj7a2(OOPrJ5RPwI
z8ZcD3^}b%FO#L|BeHQ{L<wx9JAw$UxfmTUz@$W?kz8SbKX8PU~Z1cgcF3P&?&Zly=
zs2xH1y-H4)PD?Gk065kz|546<SF}jusO@=|L`D{P0Z>Nwp!wEq4@Ev!Hj|~^+s~)G
zkeDpk7tX`=q|@g#cgu6ho2BW>i+OZHQv5`lACr7-g6O!tYceOEQ7SK(T^kVT7l_jx
zzqKJ_Gtb^?KZ8Ez7X!!b-)M_RI*br{Mr8wy39-x8nTY4KemdV+mN)vimwof)lZ(G{
z+Fjn}%%XC^xHN2);_JB6=hn-}Oc;rq7M)A%Y5R53%8PehC%=D&qRb1P2>lxj>fM`*
zLk|i6)e+;j$8vaqe(&z_ft_jzZiksyyi~K*ethD^^<brpn#O|!WsisAR{Q;q=RJDX
z*SLFWBf0Z(&b+~e%euCv2Oe5b<=k|`pEI|p{IVro@Z${^GbTdB_|CmoOjcx%5;FD(
zC-JALwR)AWA-AnL(@><(#(3y!PGR@is~r0K1aoATY1OOg{q)!^-TQj@p|N93YISzT
za-aDxf=ETSXWE#U2l^J$!w!I9_wg&HL-$7+MGiv8ef)~))Rt>tC>jn}|NWN_6r@8q
zhZ-|yYLK&TQ@PnG3Q&b0$7m@kt2lw>0-PxS)lmauq~%e&>KW}&`JIafO7ONQg)a=^
z<DtH+ZV>4hPKR7nLp?;m#BVj2PoJ3qI|gQ7<^T%-^WUjM3``MK;OWV8M!TB;TL<k_
zX26W@LJxp-&FFguVCm4;C~s;s@Xs&7u!Uf@`>&3<*bxx#0M=zLb_Di6Dt3ee20qK4
zL~ox!6DJ~gIzv<ojOv*_3vL8{5l{!Q5423T(Ombj)ePWCvCWp^LvtM7O6&RCJ0E)N
zr2{`29WWq6&fL!6OGl&t)QNsp3<}JY))O_P#h-vy>%fDBOd;xln-}<PEJxT-1LQ7@
zMS}+{MH?bfppq&1H{1*1n=vPd_JGHdz^8zDG3@kkpBeoEt7dQmlQuBu1ANJ-FOY3d
zaBx7jb>K}+kNkTe-U4!Rh8Di`2EO0~uNeq<$!5+DL@g&<Z)^n9@g@>!tuRaIV{hw*
zK-eHg^^!NBM!A3y?5Fr)f~@%(P{|a$sL}M0Zz!~QH3g#vQNRwOGS%Om$_Z#wPrrjm
zfglE^PCy)3;>jc4fFn8?oV5dK{?D4IpO!Bebb8=KA%Zr~fKBz)Mt!M;sSz;Jv<x8s
zO~80ydKNS08j5M-9)48rK7v^xPnenOABXzExPGuyz*-W}3DFS<*u}rYsUEt3YwPA6
z+c*D~vUWNe_cX}?1dJc`(;?gY!s;~9`%^rT_dSV#na~3j+HQ{e;FE3&KHLOs6F@v1
zra3POv%?)BwY9MMXcR~<<9@lwKy$j?b$U~9nWms9Co~}J_wXy1=sMlzDFy*hjBJtP
zKW2r-0*5g`Y(NAVw}+W=V4BF=iq;|uxI{9;ebaI2f=Dj(J3So$0Tl=lZ0Jp#$o^9$
z8yfei<;{p{m^;-29$#GG(Oo(unXtSRvNr+yOlJUmpX%>}W<)LQ0Bc^1o*sF;PR|~f
z0tnXtf`KXGT%s}VcM~3*KU8i)ycon=Dk==Q;!f$m0&Sk!`kKx@pjH^tN?aajj&qm_
z>WP*^i|mGMPq)*f0>niC3iwf-rYlG`5#xkB^5LH9w_!?a!3&>&8PQ56WQZ)F>FrB#
z!Z2NJecCjJ>3}zQ*o|Gt(;7yuLJ)lG0N+dO$LxB<POJ^VHiHKtG(dpQsB8$qB4}ks
z#BZ1$J|f<u4j&WWN@#6fA_$dSfDo|e=`w911npe}qp4|P&frIgywRtkcp$sbKcj$P
z$cmM$KcfxVjYy-@j0rX>dne$cEE5>*+CvZrOabL6$Uxc_)p|hC6Kp5m4l<Yx%E8u#
zVHP+H^$4Q31`}pm*u>n4it8|}j=`Fi^+0WW$ncE!g%LcC!BAU_3AwzH?cvFX!5T$L
z@bJU(=&VU#BJHEN&RJnC*3C$wDj;?RB7``T?W|GE7l=;4M0F9xu+L~L*rL8Ol6)ZQ
z3pU6|0$*`gtc#I^oaC?;Mv^_+<T30GBZ=gOuWcXdgV%a7SW`S`7#z_2JP_IDI5qAd
zZ%!zOGlhrI+V6K$%!G+TvA6XgVb};G36EfbVb-WE2@wlks7$nt1LI(FrcfY`4iQsh
z@&a9gNI@`nD%tIfBuAnT1+%AO281VoN^n5*gBV}b9MEcDvP)}+vK$^(L4eNM)}7*L
zjp9VW{RG;;0Pe6);4Z4Nbk_FNnuB!ICXSf3xxFX4tAQmvCPi-z=Hhl>y^Z$tMn-B|
z1{l-c-NDTRn+NqE8qm}oW1r4j6ESrd8F|=((LUlfzQRPT7x05{KpX@Vsl^HR9p{13
z99(=M0td;#8R)2nHlEhVQPv$d&ab7GNz{@%%oCgf9EjGQWZYdH>!yxr4MC!;sn+h>
z0XM{DaUk0HIyyr5B_}c&jQ_tdSo?awJY2DO=m8-o$R0R3`*Hbm#Y7maX%Krl=sOFC
zAL5QZ(G!9^;kSP8b=3KJU_6LwKe8*)+TYfPLI%m!#3}djCcBY5tzqYtpoiNF(HmhV
zI&2Q0daq);7);!VL{Ch7W~~;O(8DJ9yAf7^@8l>xg0H7Oc#smXy$q(nJ6Jya=7nyB
zVD%2q5Y&00@nM!=f=^pOYzw-V{$uq9dVPvEjZH@IfPwbktMvHR1!009t_wIL*b}uN
z6bO=rb~GDP@TkQB5UmZBY4>yL?OGqCL~8~V-CSUb0Dgv3g5Q(S^AUl9ZqO))-2{yS
zHFCBGX->rR4!)k)6+DLnF%{q_RU=gyta05Hg|$MuS_69pJgb0f?!Wp4^gka4KQ|{o
zgMR|@QRtwh&9t-@(noNX(8^QPqW0-<qV_2L&)WZv>0;n)?@dPT_m<Q<HN}#)wzQBe
zmcJvHfQJCY?}M?~Aq|0a38bEoE{4<yQf^3<AqDS1Oc+w|Uc$H`T?FX}g&Lf>2hxR5
zegkPWobijMf7{=NvJd}s`5KhJFNWXj&>kIUpv<5)T^|Bvl^JCpD5pYuI%@OjxHbP5
zG@=NkIg87*X+z)%S`T!f_W)C4&#a%z&v9Um19Kdh<G>sT<~T6NfjJJ$abS)Ea~zoC
zz#IquUpPSh-OB)8|L}ii_{q%#sRpFz_cgq941okcsO{)5cnyUe`x~4QLoqOt0gnD{
zUI;0AZBh#<YTxs>_UPL+aM1mId;}Jl@dJ1YFB@dgH&UmLnQ-NQfb0DO-25NlP5=++
zgxDbvqNa<A01Np9bOC&-EDRP(jKHj^vRFU7ah_2Q8G!$r&uD+<8~kT&Mj3dF^KcEM
zbQl#$GK5_D^MKa?*oO}vu(q}~tg*2XyLay%78VwUX=-YsIH;JsygVi$A%O`92w>dY
z+z<wd6<+mEVkz*J79D;6wc~$FKlltbVh|*dnQ=wM*>JqvH^mpIpMZMQ4S!WLb^SXW
zZ#UHsVSs)(BGh%}@h2ROKh<yYP8sSqc_%fsY!V7kq~>SCQ&IKIem{5YK`6#{5Hu~|
zx_bw@5;XT9_(Weno<|S>&FVKSEROo6z*{!HtQ78r+~^7)+IS4`i9Q@Ij$biUo}TBJ
z#un)I(^#HBkhd@f*+f?Y!D0s70<Y!XGOOP(Hy=!WSeP$0g_{r10YdJDMBngKZhjbV
zSQyXawfwXCjcM=zWoYy<4P6Z#_|pXlLDL+c2dbs!N1;4(p2I*4#)n1+%(OqGEs)Ow
z#-dut^8<;0$48Jyqa%EJJIty0xB;uh7?c1X<hP6&|Bb$dL<jDbKqaD&KQ$Gn&jGF&
z-&ug8TEKml8~a!Ia30dI>fyWvO!7E~seC5L|A|i+5rD55Un;B_tS7#fslp2ZBNdLW
z3;&?+ClUp!j94HUffJXVpCCF@aF7>Gvp@KWgfX>jVoD|<Q#O^qgG($`Zh`LE^noJ4
zm&hij^q~)xrcRW_^N^qwp1FQV6{wO<P0@Ag#C3#LMshs6A64@E`lu<5#u;?tG^6rt
zeeatZiJGD-?WFOQT825`=%)0xua7GElhhQyQl)ij9g!p<ouQ(e?l%maf@1<t@hi&V
z(n^(~Y1y2if4}k3My2ASN-OO;Et|9YQ8f^$JZJ#m!Ew<rA*}pBCvEL!^`mOw<QOQs
z1$CWptwUOX>xi!LZ`qvHkE($ngJ^G|;hWMrgb(cj|AY^h{N2X#dvGde<KvP4Et`Mf
zqv{?Kepsu&(MR14sEY?3r}lYRG5ueopykwc`a3^C@26z*U*bc2<VSqOWq*48__EL(
z{uMshL#A|n2Z5Uh-^<1{X3NXp`win7Pt|okl*d*gI)CduRX+dTkE-!hJ+J`n2lbz&
z_f&mAq~XVJzECwD$vd1#`%}xP`6<0e@ZadB`8lQPw7V^m@u@rSbbbokjCGg>{ad-;
z^Zd73PdEDi-j5DGKZjNe9S|){kNPCIk1iL7m|#TA2lGWw;CO&cjLrb!eF?*93r~*}
zJV%7M(avDKH0v-r05QXUz<<Ab7|;jq4uiFs6SP7-%peVd{@$1al>DLO27khkq7i+d
zhFV^Uw<ZHr7z@P6Fbi+U*+b49=Hm-35oQ^HX+aNXsBwk-c7O&zoiLnaT6+)3qtSh#
zP8gtQ94(vzdw?L^)V8RnGp(-^-gcV)+4Gi}MJyw0Hqg5q=ncijae5C;*TXY8Cp~7w
z4E%F~7-@9CV8oBfN%V_k=0Oi*T!k^<`I*)R)&99YPz%R@*ZR!=y*`LiH#qHa`aOZ;
zJ}_S@_h+w+Ez~&EYN&kkg_R;=5EpdD5yE=Ns0@Cg<wK;y{y%www?p(E$CQ9xs^T36
zo1>XnwE>GaZANI#0{_4OG3w|p!x#d<GZ$<E#}PU`gMX9n)OlXQ=lS&?=b4CU&X}kE
zEJ>ZokN<qmu%a58bS&6f;0ryz&LNl%E}cjl$T-)LTnmF_qd#=~DFgqVIyww;JEf!l
zksjH>N;u;4MA|~tj(?I1q?7uvBTVTn(sHz4Olu`tS3eky2sKk0X%C~KR*nD_#&dyq
z-Sjw!EB}O37?(jGTsF}d6l@K&wx6*xXu_CikN9)P`1f{#nY-3(?MEvV0&;i>8-_Lg
z1Ty3f*pVK&L23<ql{c)bBQDDnfGEJ)gAKtSP<b@Wj055y;`%WRa`zdR%frCanLFf6
zx%(5x3|;&W^}vYmr)&W#IR3l#mwzo=Q}RQVdvsTDg0-^4_jI(QpdJ6;*^$w`W9m*a
zYfb(`nx~me-M3fc`!<!whww@j_|Os2-3|iJ2e`X=P*g?WlY1K}5Q5d+mLlywWkVtj
z_FEfmDef|U@**gtsWXX4@u3-#sEWwT$cd<N%o7$?ae%O>9u8pA6^NH-Kzs-^JhTd^
zn!>CP9Uyc*d|d!ODWodm@9d$lRzw&D=vNi_ZQ&uaOABn^w04+^Ohq156;YOvlUXmP
zC<mzse6k8RP6BIH6c*nHj6LD25~?Br%8F3uYX_eW04qvUFzxby36t!V?G)@b*vb>-
zm5B;=B5EqKf6iu#0NE*;W>cW@8;;XD-Cxa!U_{W?*59scZcfY0mFM^|Cl7P_Ft;C2
eH^#aBaBe@G+YjgV!@2!%Za+j1%KuyL2mc2HGCo}Z

diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-9.0-amd64.exe b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-9.0-amd64.exe
deleted file mode 100644
index 11d8011c717c3a1c54afbe00e002fab6d37766c6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 223744
zcmeF4dw5jU)$k{o3<)7|f-)KvVUSUyL5&U6z<|zyi8&(^iGqrXf<h516@(eYikdiy
zG91QBUwXHF?Y-63+P5tRyk!U^;eLrIXsh6*o?)aQS_lfB@3;1uNdls8-{<}Q`JU(F
zA!qj4*R|JLd+oK?UVER~8y|N#9S%nxf0pHNH1jL}0_yqSJaQb4lLoIm$?=!I8;3OK
zgf|YEH0zG}-nsMU+&=HtZ+WNRde>cZBHr7+;hh(~%X`ON-r$6Z-fzvB@r{d$iwk|3
zsvkP(KzrMqCzoaa?(-HdOY**BOzE;+>bLK*jr{KZ-ABt-tKWgk+STs|%hvMSHs>eH
zrt`aF%;05V^;@9QcZ?}kzt`L`eU{YyWj(2@b~t7{>~cK&!-h~c&wj^HN59;@4#(tN
zI!Gt^XYS@vqJjYxBVm$V^59?g*Rcg`g3N~p<w;6?wos-lIqgcaKT<XmBSFV6hdLck
zN#HrBWB)1qKJIk<_DqR5_TR2(u4CY_QD6NwH`g)E_2pSEihN^Xgk<wNpca6n@4^(l
z{&^jaX&23#acksOhhxba5~$PB#_tq<d;JT*J{Q^99IGdg5CA8o{GKhG*7GmmaI{=B
z*UqT=NMBW_Mtvb);G%i+=S`=m!U?!>4B+LuFXrp1{r`vl9SrDAYa^#D$!Tnf6py|*
z>TJuIqQ{as(Y+tHZrGs5r}zr=_-tQ^9*_7+uh(NAdP7E+ZoHuzAL&io+>J7<>irIP
zqd{Qh6dt;<-duRE{O-`3S|ST{V-p-=d4}JX>oCk%mleIZavPDB=K^AyTB4`wO;)78
zp76~3My?~FyTV4B^?JHcH(pyI<IH+JaBxjYbjXV5<;8RK)?7!nfJOmwuMn=bUT<>(
zd25clX|`oqx-rF9p&PS(Rk{)J1)8NMJ+|6Awe|QuX_K^T=~ta@Jn4IiT-8RZ*4U*R
zpBgDus%h^^Vq4rnQ;*H?RXD0E*H%}y=*H&ups%c+B+%ovJZA}9#(td+x|@DNwB<RO
zs92XXIv{MchKyG!Vm|Y^Wzpqdr|*e%)kO-84$Cu)T<I(HrZ*$gb>sCFGLWoJ5I4Se
za|(oBZPK<^<@Ee&T6eqA^QD%vz~tN+f|zz2F`a_T*H`4LiYr@E+X+ZU6)WS%>U2N9
z%=ZIA?&p{K9_Kfl2>Jq+=LYHyC&Ipfde;+^d;vwckZN;Nb<^Hxf#n&;TlzNwZJ8ja
za$9vm%M03Ax!BIB8>ZzsQ^K*MR@6i5?#6jSrG)1X({mlEItf#OH-lX*adob4Y_vRw
zrb_QNf>_J*ri7agW{OwZ#jlg%{T0F6!ig!qx{z@bEP7{I$e3RdGTzm0)~58P`Sp6k
zhxPPOGY%^*PHC~O0(aA^M8TEx)f-HVoos%vz~M;L<Or{LUl87jLu{kb_Z-1+!ZnLl
zGnvO<pP0Cx)G8S!73MXQg!5nY$t(&HPZC!B8r>X3iS%GqW~B&KbL4dnhrcyan&sv9
z84N+AWrZYKuUEdQvYP$wRMm9n`pxmV1W7--MacA|ub!g9X*ZRCfKoa?wY3^%+Zmp2
z18(-e$Kg=DNw?c$yX4yIt{48-uG0iDPtjA|a4osW>Ch`z>+we4<HUrGU-}#{Tgcd<
z87U)p)~DsO&pKFbd{l0Rja7Pll5b&b@2OhDqCtD=#=H9HaTq2spe!7p;hP-EhvD9*
zaCPN-GpqeG27OX(9C0T$5u;B(pgTX-r$2B(BJbkxbTjNsH(XXXJ|{Q2L2J0*Q8(V1
z7hUCk<tlG%)kXUBRl1Xr8}!w=U%6tCvxDbA=a!KBmFhE`TlGYdA1HKQuN|m6x9HQ?
z=+1R|Vwu8-o(L8U3K<=t@-0%q+$A}S^9pq<sf}74{aBB!wHVBa7gg2+&vqBG*6D|~
z)-URBO_2^xi=3X#BP9+z>wexfn{hicUIPy=RfR22?#*z;^bS4ISXA$zgS0kFHyBBJ
ztjZA?8wLhrq;5>|)!EI`+@Y=Egl2_|zGnYnA`IP)XkgF)6o#zTwZ?`}a(7<Xxi%CV
z>4+w4rN4FsnMTc%khEcAhHqLH40G70GM0|(mazy>4s9J<zi5axMe<LMOmRPdMN!bW
zs#FM7F%w|Rh&d^X0mMh;T8Z_V>!e1Q`2sRm1403%1_&5)rDz%S_UcB5`TZjz+uV(X
z$hg|3_aYwh1|fK2LXOCvK6Fg8Ue#2jX0-?XUG9YF5LBdxLDNEbB=wJ@v_(vy*7;s2
zw$8fJ82!#wM(~}2%9fC^P6%X^N?|Sp=7_7@rY*@U(XCaBgQtDo*b@CnAw(cOqldQS
z3{BsvJHh^eXRFJTf{i7?A=c<AkwK#`jvSj)5!gW92!ZQIO^LYbM_nB4Llc?>eQko*
zPH!<EV??DI=&(J(7>G|9LzNrMbJP_0q|cQ1hSf5(w5i%HN*>*EGjnUoSmbbQ;CHkA
zE3$@Zc6Mf()nuAor5ih$W+V5;Hd;#x8rMeV#;n{0cj{J4{oyIm>+7p37Tr)^Rr$a<
z^;LI8itDT9MXw~S%~_lt!=r6n4vgNyq?j9P|2%!M2=EH6xj=DPhiN_NaEvaD7LZf7
zTAfE1JB3**(z%QKsdq>oT_RIxpbdGzd|G8spuilMD4Ku(XB00*w-X)0W!_RRth?Sk
zX-keHc22+P%q@D{HCxh|d2bSZ!f@TJvbRL@^@M9J7`EqQrCCtl3Q;`GU)dGuMwhv2
za}ISDUo556lpY^5RKoEI=q34CfYh8W60A<JZMZtlCyOn?L|4~iWBz`*Kx4cS9jhmb
zrCsK&8)QCdiJngVgJ)16;rW3|IO7_pBPE<k%w5F5+|2KiJMQ`(^~h}KCG9Gew%+pW
zzS^nA?h{fbHs)?=EAl&$;bVS%o&Y{cMu^*7GbcwTg)^;IJ=R_l`>b%@d$ir}Hr4ir
zNbz(H)!r#ZrnfSc>duzRwLv3qm7<*GIh~3rKR~_GkBt<uJmr*6pGieGf^o_lG95rk
zujQ!&Fws?(`V<;q%SV~mMAMljXlYn2_?p@(^lbRBMTD~9T3SXeHtwF2nAk6UkV679
ze6t)pCad5=^{i9RX%1jD-mpB5n?#7+I}j-Ts*qFM25?MkmS;^JNPSyc1$&djj3Ham
zX!I?X$`LdHNts2_Z%R=jsw83|93?Lmh*e*GCTp3b%#~<5Ih~pzqs%m&nfmM0EEi4`
z&-n>eC5p>l$z^&E8fprmh<>AjvxvsFgRRs=r9gyzbwb){#D4#eLiQZ1gx*N5M<myU
z*<8A@%!ZmAk3R)WnOvIW%I}>^`Y83(Rb{dqWR6I^hrp0J>Lr!o4e@AO<(r(z_pIc5
zQRSNiQphw^WeP&r$&&MNL0cyCt&;h%Oy-5h)d-8LE)0-N-z1ap#$3VXQ`DfzOtGzU
ztthj3f;}6jgINShd(&u2W(3I!`mDMNYOAqpFp5*t6vHiH^%s;evimCDRVm~_AJv}{
zyK6n~mZy`2Wom+g)^5P6%j6P7l~|ttA_GMGG0bFnYNtw_OMQwLVc?DP0kUDWFzZdN
zVdHNIB0ZECUy87-O^o-3;^TMJCdQf2?0Pz^hVEFvf<f{sThbR=o<-LSw6rX}V17m>
zs$8pyr`5A4Wo)tF3)+pX)>|1^J6X2s);VK|%IHlZYZOF=Ysxt!+T-OZHG+1cAht{C
zgr`72NZ6BtsO*Aa%X2`Gn~60&NMTsq^895IvCN-Me^t0HK60~+9M@WYsOeE~EGl7z
z<@qzkMJxA)p<z9lZE?_^r1E;pGy59h?Z|m2%mRR93E5c$A>$DbOtan7s?4V-H;)Mk
zjCC^o^-Q76v}>2-F*zg`2i-E!9*|xL1eWLEL@BV;r%(Wy&YdUSdeYY+C}~(NxI)e-
zIo(_5lvyO<`JHsm*lBs1rIv)JLA|d>{#%}3*-_WoQDIpKe8-Ne%;qBMK|87>n~Q?8
z?Wp(RA`u~mDXcxq@=UVhU$W!F#xBdF*-_ugMzL7Ah$sX&Mds@M&)kjef@lB7?#7o1
zge4$k3QN-ORZ`mB_zM;DuDkI^DnN{y5E8}b3n#x$cXTxVn}jb^OC8p0gg-$Rv9e=s
z$(`bKNYsUWh2M;S5%q{rfBJfsCdu6{-MLYdYEC74*l5wL*JL7T^Ts~wGmi!NY~f}l
z7B4KNrf~e6(0EG6T}y6~Ss)z0P~$!A%BU(+7~HYd-eZ)Kz_q<r1NG9c1dCfe{u3p~
z;(wJjq8@+gDfuy6w+Wb)YxH<Evg-}HayQ)y$7@T2@oHwEkMwwLf#rGcYDLp((n7{2
zGM8AMEq2`LnK+^IOLo*jutB!4EEu1*qx{(@DD{0is>+U1%fd!G>L~NGDo9;-OO#Pt
z07$P9t(fL!iHqG|f~n$sk#kL!yU|OawrQ`s@iY~9&)q1tKGvA-Mwf~qa76klYVF4a
zYNga36~hYl4Fbycv6X<>G}fC|F4AMa7&*M=#D^%E@ElPPwCV|cn(3`)S$RcXO0kSl
z+;F2P6RuU{SotA3gXQ^8*v`5ZaadbmZbqNhjcZGdT4A2VwO(V>3uJPbKe|sOf3z-W
zR1en@0hd~HXl~t~yr)oa-p~BQKery+wcosW481Pj1>O^jL<f1@-0c?e@W3hh58$G<
zysE;sU{wx^`F2)!)~m)Q^YI&USVg9bni;Y^+)`VoS8g=x?xIVE%?*al4TjAPiEm8H
zauUj|8t1+2M%`S6oh1|-f?PWgHV(_Y6EZ%kHO!a5HipMbg+v(}OVC(@SXOqAjG?8T
zvD#zz_``%;$1DG$qu7~@&6ek1wYiQJpU6AQR^e02^A1tE(J5m~nKRbe?<$w&c~Rbw
z_ccz3StctSh9`1!P_41C+Gq<I473h2t!S`WxUrG^X^(k-y`t*()Eos#YabAl*yfWJ
z0*~dnO|`=sCezY2yesywJo^Z~BGy%Z`~2ce+?&K1U1DvR-eEo+m9_F-J>DneUlR%1
z#wL|982^2yU*Eh+`gN-4P}0$$(GKf{ZG+2oqy>??lAs%XsuvGKt7mrkDe)m=gXI}R
zKp9GmHCPHTk=$8@sU#q#lI-#X`WdYLC!=A{Vns5yRF5z8+9VXUKWrfPJxxrPVPm)D
z$rEVM_jsoPHE=%?1SC8c*ijJ3^1Nk7otKSbl&-g<W@n?oakE4j`x%oFznG}LF4mDt
zbY6!EZO(&UwLyerC;Uod=I;+%ECDwO^OBs4Kztq6b;dfN<`gkj&GzYH|3f}4LTwUp
zr&eGrMHG+P>#eK}ggJeeLYr&xSt8k#1!Rkg*(tng{&hIuWf>GJSB_#&_@swJ_xEsU
zKRTm06b6)OYvTA^hxVedsAhm+x~ma`nNy@WZ{_wIiI!)ugcHT}bk;NuWtlUI`tnj(
zQanFZIs{syQm&s;G~ms=?SN&`{glWrcwcz<Vx?+r4$4gT%9YaM_6(!0;4Q?Pz+`!z
z;jOv}A@~>Ra>jyimP=`ZpH*(lSS#)Twb*XY1wg}W7FNcjhjDalB6y+VU{lTfYAoFb
zt^%~TMKAAM(r<Cm8LTTC*G50-;c9AnQo2e;uOl>lyRtUw&ezrGC-D(!MwSM~X3e<<
zapf@UKN56oHuv9+ctSTXo_KAp!~CX-rNmz;AuQpUL_mX&QA!jIQA(b;gDD$BnNS(#
zhw<+W2;*l~<+j|y%H8ncG|X_!aP?<)^FbXkvXuJt1qUI2N2FS$N(FyvF%k$G$)LeR
zy~5F-qC|U{heCpFv6`Z;)nNrTCn#+X>yG6KlbFt1j7dwSTAo($kJUw_dHGJ_is0H#
zbBvNN#mgtEsp54}5?RLAX=<fxc}{}K>=m8>D29jM&l1qF2FiQGYUv4@*9J!B-$L<;
zCAIN!rM2<#-s_~BRg%YW{qT(LZhDCcCFYkJhsCxhTINdWZ<vXpvmRRS%W*fJ4sXTw
z<+>Z62ahU7jQ<28bL4SO%)$siKrvwPrb$%YwAS7D3|ZjYTj)UQJA@6^2gUXD3JYLC
z(EWS|M)j3BG^HhXqai#Bn};FYWCdaI_0oN#ePu4M;FZMGpQ*(1JS!*$Azm2$G8jGe
zq>BDN#AjxGPbqe4_1&SZs8C6NBPo3^jaS;B$#UBB8#0ECM%A48?S+CByX}=1QOG<Z
zL_oq|JQ%Z3>NNH%L+!`Ej$WM2X;$vDthASk-;iFh;=%53*GL1RPntuhxZ6-9m=<~+
znaOX%Y9YncTa=BYx9s(bWh9`-rkP?I*Np@1fnD{0l$Ad9?SUPl6fll-foq3sK&Yk8
z9fFo=2ms4-Zw*Ndu`*e{D;v9-QK%zV1kVyx(pI+@NH}I$k(cZ-X%AKG@p+6n%X7QR
ziabN4k0%_zNM})vtc6!+%fd8*5*k|_$m;q6eFY|we`2!%y2FvHd0C5n#SyKsJU>(%
z@7hM9g09-o3qy&zlK{Hb*`YOq64fOvuwKiPu9glW(nME&m^v)aG%BzqeQb4wvSV~F
zE@TiZ7IeLES~qu#xg%`+-q*sfv8uZAVELqiPiu|c{2Z)}M;*2COJaM@)~COrJ9joL
zDp2-pchi~VZt&lC-SCqmr$EX#(IlA+wtNP+<&vcNUvn=#1gOE0^9wNOPag-a*6ZaR
zgbL&*Uc4W}P5DIh(fjgVk~LuYX}Ymdi<jur^Y!u_=3l=h{oEh&x49dil|DncfLQhe
zbXk+wMiuLstaM$(2jh|PVtG!pGem9=8g3%O?9x?e37yT8*JcKJDN|3cng6~BO_LTP
zbzvH{XNKgrY0DP$#!)5Tb?16>!i!>Z+ZaNL55<T3EYGMba&5LvpNjs#3rKjj4#C`E
zu19goh#$Ho?0n%2ei1u@n5?x^On)2TgjwlRMWj?9*M*PlU}H9zofTvTr8MNdn<Nz7
z^>Eaz*1$w)3srXrDh${Ao^GnPsF+mjQ+K4F<td_2>Rf>aEY3wg;azPcs!8~Bh5`*4
zTbgg5Iddi`JG94GRk<zMm1}e)Q-hsJCX}zyH`&FQRk@buH2x;@SI3{)+u*l~zY2TW
z7f1!-7g3j?$2eigO-y-~=M=&#C0Ru<U<xHMGp~;M)kqQO#Xsfez_W=uH}>ct64#O@
zy=sbmcP!<Zn5Des`8#iR;Y3{_V(1%o`CC+ZDS2pX@4~;9>_TOVE>U6Rz|SNgSb@Bj
z=QAj2(@r4}+TDGdqMcxP>Mb`zwTw-gtzSLP`azr2+`@!!?yR7m@?B72>VR%4JVy#P
z-D{P$v9t1^vMFI8B9_^37R(so4}#1Gij@u~LgZQeFTVOrj)j)zd>~rkaMV-6HVayw
z&ovR`=j_WUIMc%MU;3U>CH`XTxUxybyXE<Wp)k|m79E5HUL01l<?n3O^dWwrIrb@$
zAPLWHDjJg#<(QN$&#lBu`c4{K!SoI0AXg``YL=DdX`2)U{>g%pItl6W2!NI<(F4R5
zBlXb^TfHz2V~;<t<(VNRS;;6&NWD%Kflhv-3LriKMUV#t_D!=j6hSi@3Y&QIy&>a1
zb~E4ArexMt_KW}-D-fuxuY)%5K5A2ZE^UZhFyPT3+Q(?Ic2y|>8)U5%^bHS|uPrAk
zSiYq^=o_s$TZ1BDe^|b1YZvNd0uzt1S-lAxFQtB4!rO8^FtIrRbmprU5wDow#*@35
zphEg#?2LVSmAmohprhf_5=MZ#=_SJE9<=qaan^c>Q;Tvx5M0?ae)BvssWlASt(NCg
zHHbjaVHM~wU5o-|^8=UCPQvq<(twp1`7Ig5WLvS)RPzgEZU$WPK8y#+%A?sx-H!az
zl|+g<qn1RKM5fQv8tyHrqW<VvmM2bi+6r0sA{c~bbIEIYzD=|}P*nFIlRlL?8deJ)
zY}p1=FhsDG$XcRj>IwAk#*Do)u}2KoIxZ9}o#;vzUC~yY?hyW@!Hr69tUQPv;4)>z
z6PtE};ATh!YdDVzd6db+i_i(w0cz#8)FouG+OiR{X1cKcaz_NkRA~V1dim?_<tSOp
z^GdYxj%Wd!Lb5TOMlWl6lPa=SZ%tu#sm~$xdB!tNvnhvAn#9=m9JwveB`QV6L1LMT
z>fML1?3p94usqPlgDZpq%ubXX;0xNzk{zN;-KfKs)IcnZAU!Vw2`DCZ`TOni!)28#
z@Q}8$o?o?yohtws>sS8BjtEb0(c{k)@M3wcB}vt6dA=sb5BR=HJuB3+Og+60<2A{o
ztM!KJB=T^yK<sY(uZ(G0w><la>Q>kk1tI?Uo9!_=O*NifLNh*<`ew^aTkoN70jT`*
zA}3Ual@yiRlQ39)W`*!P4OG5qbopDO3_7(gSVR<N#bvFwVx=?riE7im=jIwub$WX%
zt=Ee^alB499re+Z&4*xPP(DhJpLHI2(w8s}-VzNd;rSy!*(Jl90aVfJ$a`pqe&$;J
z&`u_Obd*o}QEklLr;8oVeE@C6RZlgo(W2O=xxCEh<$l?=E0kFJnRN@Y=LY3O&|HW3
zG*?_eqe?Vfep2@U2#^xna}|z5?#8DXn3Yz;o>kx^QXc!1^}=4FUizHJ%%FdbyXh@L
zp`=;D+bVbCNIIKZPZU$mQk^RO?UB=u6Cd`H>*dRH?P{3$jO~`^*Sv=lBffuy;B1w`
zJj$ifW`?lr7~9qS_z-!BB3<DWwPqNJRIfD~#Hd`VkCtbuRA-npKLkBHGBBZATJysy
zQ+PV+IrdHFNy~F7`Ifkb&}v{*dt^8i@F+sq8*wydc|K%_%d8QgbVhtJSN~KMG^?@w
z`}akIQu=I4Kcbd7y-GhzX&HS|It@`gBgg^02k~PQT6JxoWD^}g@@p@F!Hj6b%9W9B
zPm-egy7;)h&bP~AJ(VTJ6wC8X$(gAA{21YQGm*6WPo~b5`xJ#}ZHFBx^Xba{*~nHR
zmw46?x7hO=I=I;Lvr6^^KcQLHu_TJ+t+(9GmAL5#wdNmYA*=01@M|!AI5B1__2|Z8
z8Tw+eix*$imx%H$O9~bj<s#++qc%rBu4Uoa4cZvh&?c>UNw(4q$r`DV&2nsT=iVlI
zfhkOOJ1uI>@t&+`diX`D#*1&nIz!jb;|BsPMY9YU8_ikRKVn_E(X)d_aTQ7I;kfJ^
zH_9?BQT)u;Wa+Y(VJ_Lvzg5f_OI&|oR4#TsMw;QtA-_?)c^t-{dCCC!I_CbdONvH`
zk3)FC#nP+&U<zGQ?79`=7QrNl3Ru4==kqC%Qqm+|GN|pG7CJ3^IU%DCM~YtMWJ5=s
zVX_-K_GH>kvJyI)zOH+U3|GpiSSh1aYZi9Npe{sT;4)#8BKFmJ3*z*VCVVMjZAFId
z6vL?nX&KQ%X&73pB?#4n*V{r><OgP%jQiGom}oL~N#!Siy-wT^u|;0TB>OnS8G-Po
zklZ%b)vFlsN;o%Ph~j!(78ebN)woZL`4ev_li!pA?qHY94FPh=jw;dv_l6nW{(UHM
z%vWV1w2AdXup?hrQ*uqL%N0G>@{I5cF+H-L$c{HLVX(hQ0@Jqm09YP3FR)09z3QOv
z)C>Qp*b!%6tQf~oY!UX&h1bMJbkkD0mGI2YMw@S7UXjJpEY`gb2vhvz#!Q4+(;XT^
zh?e?fOW|#_Qf6DTYzdi-;%W*i-QWE2?J8n85fnHo&Rz-6%c$OFgPn4Q%If(KqOiG`
zcM@xOzNHB(7mwmcltrCsS*Bx(-b6l;sJ{>}nZqVaGpNYQ?xnWVm)Tj5$FU%|54ukV
z!9O0M5Ih7ue5AtK9?_4HajG2y?4qI%8YQeoBiK{P|1uyrMq=PqYX7ZcrAys_eTVY3
z#%l9vln+3E1~UVLaUnl&#yP`Ozi&}(fP6I}n{NxUGE1~YzPUlQ%(jOYTjpcDlADDV
zqNaS4a}!IoG67~<W;WlAeHhJV5c;>>gB_wf+Y2rm{Her4jApPXd^finT2X(%<s%dT
zWHqkL1K&{iovteB;SaySnDB^BD_k+xTp1@~y62g4Dm99I^bg|W7c2fV*W67S*3z%f
zQH4H0l~sjoUK4vknNqmS_ob3!dfwCRpGm1hTa|D=anC=f%=Y}ODn+}uR6}a1Y4`ja
z#H*IOyPWX+P%_y_EdCW>clW$&1}q2skWxl8^5M0KwtSE=&%!7pAH;Nvd*=p(!DL}Z
z!?no;5^P~0Q=_!#HNS;$u|ubIhl-WJac#<Av7&ptbUiE;6?+t$u*fp+1Q;UnBtrQ)
z?NR0$domW-MgbeE0f9j5cinoCSS#k*U|re+)-)CKky;|{CY)I!H7-zLS)I6>_7lcV
zHU=5OMl&z<V_wCjiI?B<(xcPrbjx)LOvyn08$Gf02zV)g{rghn5H77Q|7A|cl00TZ
z{Nn~pVB0<|Q-JLGFJhP~r#i#+sNlg^r!z^g{l8dY#d9ldGHtL5QF-nC|K8IDXxU5c
zf|gQIrSYF}Z4fq0c+Q~;vtl~BO|Dw%vz|bJD(PQHKytHa7OBfj%dc$(UkQ0(38KyB
zcTv!~7*3^TUwa_@9Cne-F4;+a?KUBb%yHs8E~eoR!H-gPZc^2|eB|!YtFBOuZ#Gxn
zAi1!9G$B3A)p#4Gv0Az=RlR8W5~cDE^2WxD8chq)Q_V|vT2{6-=4H#Xhh&5k!y~h}
zL<72lIJI&}pWi)wvcf!%=$@rO_X@L=XnQ_X+yPJhgQcBpRS5quA7%^zc=U=L4M|b#
zLXzP3@HKFX&M&SUgTT6Nf5Oyrmn6hpR;f^@C9=!ff^J`?>~IYq{#KA|xPG2XqCHj~
zC#HVPT)*^C>beF(PUnp(kDvp{;DMz^BHv{1utH>7pl8u%FKIFhzxOT{Q4n1zg0aH#
z{DIf*C6qKHBc_1fF=7OcRt8DNq<3-;JS~z@#x8S&SI!t%o*+i2%C-Kag7380BA?H7
zPhZw1i+p7{^IW#&BdHrpeX1;t{DOlgG$NH}`rRS58m^~vy8HbcF<9X$7%TMnBk{aT
zc+O=BX?sM0d^Or+{vU>ji*<P)#EsI^ff6g=VP9#nJZF<a>1R|V62sO9WVV`1ihv}|
zNWV*LkOU6QK3Hk{D_wO|QAt!hHQ5_GP}$OYW=m{`g}oEZlqjZlbve2rCPdTAe7mRv
z3po%<LsP-BEG8rt_?}asEcJ;TG5a;DxF7V6dnBgf7D}Aafw{|U!lcowhO1P{dh@Ph
zqfg63U!RGV258Tli4G8rZN==Eg`+ut3Q2QOYAUyx%WCA6fzJ9~&9=HYNGg97wM=%M
z33o})RGms!AZLX=uxxS!sj<D$C*Bi6nVIn?6=rRN!6fWaEQhaE+CgICN7${2fo?n#
z6WzAnsbWs%xw4)LRNRpZ1qaA3_DR5^D$ag&CKf$ox{AdLA()4V<7@eCSS_ScKCLug
zAVMDl5M~*B<!^js7W^v5vGOLn6=a+_;|gg|_C?)|EfSs3b5>$XaF|!B6fugp8-JZm
zDJ0NF;)RmP2zK&<xV`F#APF0ip13|o!>QUf9f2;d<+)>6b{76Vg9Vlp(*OumBz_J1
zC$Z_vrH2%sm}7aob^+G1xsid`LG4oCW)0e_)HB4YGL~moxdb<w5p~KTv%}6DB6iV?
znL^n=PK1xHUmS~%N!300Se@;)!pA6;V&miKY|5AnKF*Rv!Ia1n8z-Ya`wE;~3&^%k
z7E@!yHJr6auikAW_86Rei1C5~S)A0`r5<1f)vMI^6;FUi%d<g@9pGe|XaQNTgX3^w
z`%AAJ1<2+UxLEe-Xrq+<aQDmo%;+P^q30uImV6SLWbH7$%lW=oZcOiTGlVv=jGwj5
zlbIu10mX*qyW<q*l%wq5vuITaUn?m#NbdrYo*3~P43`SI>>#x1<*$92`LOXZsYtDx
z<cVu=!u4mhIz~m8>D_D3=<J8Vq8U~5tvAI^74evt&^prN8a2Z(spl|UY)=g)^&w)y
zgef;L5@BUeFIIlt@|?;T7QJ@Q)f6fJSiB1cWxNYAvyIx5j3_5J*^c}IUuJ!hnx~aO
zl|H4^r%YB$g`4bIv5u5#S@XWfRv}I~?6SzJraCdFFm~7(84T<v*<*#dU&L@du&U-$
z%SBii^9oord;sgHCGf|;j`XF7*g?|lw(2Fkh+W1!e7|Jg4@*QP!$Xqc=@oUtEkBa}
zAvKgdBwaQjuOXcc$O&(=0f}oXC=|`hXj|!!o=ke2m~K(ht<iJp!QLX$rys^b?|wNv
zdV+bRQ5Y}6uH2&06Lf2{wch=*+x&-$jqbw<T~!@eJUg$>ta?he1=;T4>_#Y_cUdUb
zR#5Ffy2z)+)^L<;Gu|6|@*St?fF*iC>~6dgQ{%B9{z<X`V$;ne1#xu5yWqPhbhXnl
z^B2F{B~CrBXAdfDHlJo;2?vZ<Y~nehObR}bBN#u4(Gu(G<8DIRgI0U>cGr1_a*>J{
zM-yjFW|)f4-lLB)UvQLUpX^qbe+D<Zmk+2aUl+}1)@|Ar{io`fxGCJAG7j9A(PqV}
zf?p#|%Cwf4W}9{{)f3`Vlo&IOMNL94!4068hMzr{EAvu)y4XCFvd_X?#Jj3HB`L>L
zT9m1@ib|<mOh*09ewce8$hS4CEwza*9#di!W&^Wt@9e*151Q=bHEVV1KabCTpJac-
zo{>esbJR#_=yso~CH2Mb)aaRJCEGJ;%zQVM2}*M#S95kT61LW)m6aUT-Y)nFD{wQ`
zQ!w8wWD__&^qAV8mrS>iNxD@axVr;TL)MyF|33H9dCJ1RNZfiRl;G!io|3pj=|%by
z&iS36HL0itX9ol*pt{sgz>T%W^1MKH-MGF4J8k%H*lAg#vtpLM;U^~J<J+jlvKM1{
z7E@Kan5fH@wtO$IFwz;a2p1cLwju!1gpJxsF_#?d-ppno$y7g$$wstr5fK@0xd2;o
zY~b|vma}EcG5bG{E4sS^uwq7*)Y~yLi}A&^j5p{STR>QDjX;5h*^#0B3Df(W3bqQ|
z&$p~hGp>`nN;r&os!Tif{JtB?km*V?=|iwHt6U_L>ooj_RO*F!(!xP}=G=`xpm&Gf
zJoC-iyG3E6T14%GAW~3OVPS#(rWBAD96#ZrT&rDj1ry_^le4xvr)R9nhhnRwnE7YK
zH&Cn=>y<LyC@{j)H`!o}Cbw$MDE=8)GLEfn3b=0-2wY8bASCNJBV(xn(TA9U1kr-G
z45F3kFT1BACXp}mM+_S5s(JpUCIo!QBj-r3Jm;tx+IDKW)sFg+%0kqB%X5_-_5Ey=
zX?gs1)RV#;_*06zT$vqpZ#Ig89-<(~$l@paIqkJljqX1jxm@>u6d9%aQ;`v2|L#ad
znAdVVawF#k{VDf%lW}H(;wR1&2XE_j%~0NpZLB`otlj?axh$%6pRrDcVSxT^MeV>J
z=dA9d4Fh$9xydF`$r~bai*HbQ`iX_lUi=+bM?$3!{X!iO!C`J-nM)lWm8bo}?mCno
z2A%)`nQS(ffGjm_Ui%3ld)ky;Qg(W9?Ujk9Q5ImCt)A%(dp<%mM@FbEpFZ%o;+<Nf
zqtX)Y$=H(*gJYS`K9tE#yjK^W%Q!yG<}>k+uz4PDl+ENcfByH(`McC|DrbRr2R*K|
zzI>DDhf;sS_4Cu|6z8QfmZ=KMGg&1d=X&;&i)os?SCOd)o-XpGu(Ud4ZGQ>e9I42z
z^4(1^9+VkFmTt>83V3F><svCrEMUfq9~$O#w7Yg;FA;>}A3_>E6FY)zJge2o=RU=a
z>=zKQ6Q!~{Nk`wO0QT$~sYeVtVnJ9JGLER3UXFUQ6>tjg%Ep6LXC+<9oao5p14$f%
zTue?8(LciCB3`xMF)hpA?rxk3ScWG8d`9tDp62^xVC0_x8^3ICxU)&JIWja*H8L^?
zB=uz(EgP#)>@@{<@jg5Y&F{QwStG|Bxxk72>SXF9XFKMYOwQkv6YFflsbaQt&7_@h
z;;ad;3n(0!->9q#=7d%ODJt%sGbn1_*Dh85PF48|$RkYoh?p&WJyl<A1966`)Acb%
zmW(v2l7vL@5E#H5wm~|jc6&|{x3~`TQKl+dwmeS^&ZXvYv=X_QUuof5T3A9w8Q}K~
z74j4}lZAvQdRll*5)#F)V1F^!t(W?C2tS^haR}-#&sU9rsbMr?+kUd%1$!=o__lX}
zY%1f3W7`5iod77lp}ru)Wri83BBzqUl`TVT2b5qUFhx%+^@$U&Y^E!%TV`(2AWb&~
z)LJ?qt8<JiK}Ugb(%XXomx|^p;~T3(m**{jrlEiooTZbs?oP#}10|~@WJ{~bi4y7E
zl#qP0$)`%;?|xP$v%Hs)>1DdzyP#b&233GqC7H>G%H>+VC)0d)W~uqEo|?Z)W_n_G
zdRivF3i+&h@=ISAQFQ5-KG_>|@ViSz;4aicK$g&6LDO^cf*qlmUn&!<dF|j1ei&t>
zHu_9{xvxUtW8qJQ8Q&<i&MmPwrEG!tazFAYff(FJs7D|omeyfT<#bQ0V!pE$$pj@>
z5yeTg%-i7}bv7U@M<3SP8_7SV&6n#03=|e}6@Tj#*~MrxH!>o0!?S=o?Fv|#fMCz*
z)Y7|xn+51h*}L(C#DHo(VV51H$`=1vtX`SYo5jLsH;*j?KXgimjp7n=CLZ_`)&G<X
z_JITZbOx%#kLAE<!V~FEiMs{@q~&>o^uz-zQRz!*g7Zzpf`(Q*|8Vl#{qNP?KT?EV
zJtbKLB+4F<Qi<Y!i774N`G?rrj5W4vRfC;-9=XZ*XK_Qy^y80qHqZ#$c<p0%6YbnV
zJ9jms*>0k{d8(gEIsDKhXJW+Jk|i-_9C7OOI%>YxtWDdR{bFch&V@_S+#WRllh{;}
zsAiX<)rfzHdtzdYC1zNogOX>Nr>K&VYs^u0sgQZM3Pb|wSL(<7g#t{BH2aKQ^u=t^
z2y|$NtHTM`Qxcc(+-oN>9ax@X#0TiPjs?3}yF+-Q1H11d=kVI5L`?B1=L#{Rs`tfL
z2(jffrsb)$V@CJHG@Nm~D4L4NLi943?9t0I7fXmwnwX-+7R@1D&k8W#V~gyh79yX+
zKn7qxA<Zo71hBX(4pgG)4&c1tnJUxU^u*{${TQSfo(Jp_FW^%MIiCb<*&OoH?=6yo
zWFE*&f~J~pKFC@iJr7^vD7hTb(~aWuF&@Vb=R9x{>@$S0S;Rr8^aLO{6A0AJH0B6d
zOjG_`J=T&F@dD&T+Si)<2+gRze@w=i=VT(K6@qVHB2vbDZ*%s9e{6M?vL!6?aSOuQ
zu<-`2>sz&Cs)Tz)a-zfB%X3$JWU<}o+|umkI<268>pUkf)y{Q6|62D$OPKkC&W_YW
zq5-h*EJ%#aNj=C5#Y^VbRMYG!ntQo3WVPC*v{;K3-D}rLT?KZn)P8q;e!X^RcXE&W
z&TVcjk=LKqg4S<U3fLVhRANKda~`&g9?C&pHUIH<cio~L+LheX&-hepXsLtqR^CK{
zYAn`TLTd!aeI$U|!2><Pk9&fj^aTIa6Fk@xJk%5H>Iok134YoW{H!N<q$hZ^C-`|!
z(6WO(W2?AfCn!sZq;}{XBMA!b*rt%}+-74W`?^k-(+N#Q<OQ?t#v<u3h;~2J0mU`W
zr6l*{2?oIO{?PwhSkPm8=-TCW*G|YZ|2=x-s6}<Zb(+Dx2@IX_FAW;oG-F55*r_Gc
zB^f^31)C>Xn63la)kcSw+*4AWXe`(dtE(I<1pjwz6V@+hNc?eqmJn(%l)tf3eyg2t
z1k2wXmuNg)#rjt*=ofS*aqwEe5J`@C$I5XmaJdFKKDUU<#T6TCYJp<w78!F1*H%_*
z_I(jD<udOs@|6aSt<~sOa{hG0pGemZZIe;tJJ^bW&b_>!hS3g_W@Sgx#OQ;M^?>gM
zE4OH|RxA29E%uq${m|Jm{EW}^<UUuh@)XIB-<f;)7D7Rz@q3~K5JTY(iK%RSR8%Hn
zN`sYo55qkY_pqagfn7N+Pmp7@bl1>wTn!;k34O5!iObed@V~C1=zm>9$^W{B0U&`&
zdhj3^%;Ew}9)}06DDh^nnS?aEdf}t%e+|o#;|Q|sSdz8`E0^^m=>Q?A#3_Q<0_1%b
z>hMb5yz8os^`T@cSNJ5>dIYc`_^RVr=9v0J##h!KiluU*f2zhC`oH1T-D)t%PD_c5
z)l%4;W*HVII;+W;c*((lgV}~|X8<uk5b8+ERH>GHrvOqgSQ^<c7`le|pmS?x&<s1c
z${9J2IZVS7z+xPvN*Oq69DpKJfaI=%?BID-PuzIK9zblD_6(qjdB>rH5mfqx5i}q>
zg5djsl+KPK+F%r&cntK^lI5N+)?$w&yOtA=ga2tQCmsv`(^>|ckc<DPwUmD8sG_D`
zqbh?JdsKB}xMyV9_&M@_119Ge2Ukz8NK=EWn@$WWo7(mO0}gwDt;r6s8#4n;MwW~)
z2HFV+SWg?-0rnMbs6qAzHCP#F@Hari->qNC-#8J<zAgi<R0f>a9&i*Kx`tWPnIyz4
zSjvb<rV55~Lml4G#5&cOtYlLm;y$=4Cz4y4!*z;zTlYji;zC8SzlE{k8Qa1}GF-k^
zd%=q$GR_!~!}U~V8<V*fcZ6asd7)T3C;EZ1+KGD>>r4i|_!D_Wg)zE}1IA9J(#UZ~
z<@+G(9B-_dO{!!(+~{Rr!?~8TfZjzP$?6YXm%BO0Yu-yEvdb<nvW)kdx2u@md9EcU
zaIif`Ze_HK8J%Vsk;aa#R^)<Xi%Y!9e3Gh;oS$Rfmz>exRlX&Q2Z1?zFWr1RS=7?O
z_G3W>7Izbuc`lniwvjSpU(8%e#{wg4+*%ei?uHg4!-iH;Yp}H#f-cjl!TE3vG6kwJ
zeFk+SWrRvYR!8~PU}A*@5E@x$8LL7lde&w<Ei?|l4AWw5pRuH`r~mSfVPul8goqyy
z5h9|>Hqo#$FI8K4VdtUFT~gERT4z`1J61=SMM(ko!^MaD;>&!GQ;hnl#H(=vZT=wl
z@|qmsuULC7<q}sGICr?0=XdUM?$BbZO4xrIx+;D4!Br*EnuDtX?xyVsPh*{GN%XDG
zT~^1?R*vLU8v`3OqZP^6X)7O{>0tTR>c%&tts$#LvQ{rHO~pj?5{|v&j+6)e+vfMz
zt#(@PX|W(vxm_`pICligxBXk7+E+9Q#2v=)N7Lsic*oG9`}sy6PKdy*aMk&aZWQ^f
zbwfLuWQIRsv<2MDU*lw#ERlP`PM;$$0%-D|B?9SrHl!d0)k@*#E8z#|Y!{sS5iI3F
zUx|Oe`{6QSu1)0~e)}>6_anGnu$Y_V!y)ZT)c(EEa>J%}c{0qQQvZ5)3<q0BuzY98
zN`lH*($bdXXp0@ued)V2V@)|4X==Xi%&<uLM!VGf8&6b1wc$_CAEV*BUjFwl);KUz
zdf<sl8*Ny=!{r@Jqqz&Jw8Z$M&Cfjj^wWoSZ{3r)GDlmY<%D8MC-T6lEe?FnJ6cHV
zQ5~Iu_bk*qM0<!zX5AR>6W&<NBImQ51%<@r+V5f5w;+9kTx-GM@(#({tKv+(Ql~<M
zfOF5AQti+$);gfO(sW-{t!mZ(`TTLU+-Y%{VBVWL!1DayDsQAvYtQrb1Ka6yP~Wd)
zk2YOG;Cu<lNfHMEJznjVY-f@U&aE!*N~WAzL%S?nQDEZtm+IwR=q|gQ!SX{KS<|^G
zgE8!)94FNSIl(v^jNB??4<Tb+=dNl7V^9qv25|tXQq_I6g*w%^VFUJ7PVnRScXgTW
z-x8S+A3HFv@xMrqYu<J(Ow*2dZhUNBd@NC8z45Wb;$th~V~5Ab2I6Cbdg37+JC7cJ
zsGf{un8x4a%9i%A102M(HY0m1(amIKg0W>(*a(%?61XJxX~~1bstqkzofv@0;8X8C
zgEHf@I(~If<V=Uvp$%;%l%oak1+%MCbAWgjd5upo0N2W5_9dFu>Z>ksH_1tOEp~Xa
zyXkiVPSe_Gp(>`fg!S01US`>QD;&`h!U2T7YsFxJTH}1cy;Tkl9^tcL$5iP?D4@o)
z)~ug{&2wUf+}?o6#+4X*Bz=t@A6M37-CGcwR^T}FcKT$aJ=vAV5VF8c!TrwI2kt~o
zSF9`lo|E<1Z5+G8iuvs_^HI>j$zNl9z?z7Y{q!<NY6=KyX4@EZmADhe<YHchFZ`BQ
zt#s3kRDq->Tw`!8Yu9G=C8}MU4b}y6T+Cg*knoN+P3gc{AFPZmRxqU-H<Yn6$R<?m
zzADEnLel6EV|<yx<r3{8vaSkP*CGAKRZ0KyjrP<NWQpB33`CJFHhs9G^Mly*3P=3D
zVdZy~8uty;jq6JM`{tn!jAv4kQ+4JmLnuN{W8AQGUHN^(jq$^cHU6XSnxndNd=*oU
zm|K5Drt*Dw`%qrWa=8VUk(%6t<A~omJl$%HAC`09@R8$(NAv8uD*Va$E@yjuT!m~5
z2!fdDpiM+^GpLd&OO8WleOT!4WV}?2H^N3L<lo?K+#+}~?kx-XkGLCKc?plawZz@X
z;aWmNqJ_bcw{q*PI9J6k?-%XUp3m|XyKac(^xXwv<LZ*IF;dQtS5?apT&m3D!T2wI
zPm#^ICuqzGNbGaGg@GlYy--4MWxk}kV~0<2KlU(dWOri?mNox6_hWJqF;_%ms?!9z
ze3sM*vB*>&?#48wRA6dOCh+HMV6_AelV>Hfj^b%pW%4njx!V7UyYaJ=shL@X!#dWc
z&Rrp^-D%>UqWM3b_jY_vNud5{L4>^{R{=be+D_|-);M-yZk4!Kb>fn;$Tuc<K_0g<
zuVL1T?aGPgxL4j@(s%w)9AJDE$-S(au))jACB}qOtr?gc<_K<QiPxZ+f2bLswC77)
zdY}So=81udeeRw2wr<qW*6N5eJ}b{|WQ4IsHKW>~ef#zUt_QgUaQ2pBl91#|BEClB
z=F9jh^lBE&I&30j8c+5Aa*Sj<dJ6OOnz)8yRpT`_qQ=JcA{&_VzpBUMXxeV87XaYT
zA!Q5a-IwiKUN}Cjq&;7TtV(gm-X~~G)iwWHn!DyL&Hp!dqZr~c1#EwXFn&?B!X$=d
zt}8Y4f#uihiM&(%$pv?muS?&qa9jA5-K+7&=ja*qmfAh~N*dnHy-nSHNrezR#(M5^
zkxkOqL(aA4&a><;^qt=y+;a~i@#bi|kkJ|}|2XXII)ADj9C^Era|1&m7{6U_&lj_@
z8WRFSzxj(4<l<AN8GqwU8s>ZHd9{1F*AksBgtq`Pq7KH`8gUyFbiZCUKR>wG*Waqq
zt8prDfw*}a?EVbs0p!nI-$Pw=APWnb-Ax}LMUe>_Je!XXOorivC|&_CewtKN<c@7;
zj48;LQ{by1tLTBO>feFv^b<o?YeSZrMa$r<AbOrHe^M=MSSV1+1(Yut&j)J?aw9i4
z932dUM6VUcJGq+a*^gzm5a(+(EI~#ay8U1tml!f$9wog!p9UR@(4R0~F-O^Q&B#bH
zRF^>N618bkBRDD%7Rrn10gE;fLf@q{LuR9r56RsH&W`4$lCcGcb{k2K&YR9vNi*-x
zmcjmx=pDuypL=wHIM%tA1v%)4j?<nm8cynUX1(Ozyja^2V`FT$JC-c)Pbgb}+n-CF
zN8hg07}cxJT|(3W=3^g7iGoAh1@d@xIQD*SY-8W}#i<c6s^TvS%Xyn#tt_CG-XzCS
z{RExmmZ0Bed9*zriH-BmjeQk^xnm0vWvNL#VyS{iS_x>epR2&=Y#?$>07>0+9W5K1
zhOX<}TmDf-7TsKYLTV~OXsmHRzwyu(#2X5kh~s}@O-g-@p2a8VS)qE8KxW*o<LLxv
zH?nU9$Nr<*UGon(ouAz*`XF-{o?tR&S(_VwGtWLliuEFHb@_(s@=wCf&am^d;Q6=f
z$IM|_3}uiamr<XCN1WovA5--S_|fhG{IF82Z5Y~y((WhDj*P@EfJcU|aweT?=tzcm
z?fHe$nUS{_xf}Zmz#0C1nhRR85F7)uB5-%%ei<6YK67zLA?2wlFLJT5sXZT)h{HyE
zY9Whh1^2t;KOx-Cd2btQw(hky$uw7!XRL|sa%yn<sF*1iIPoZz{j5tMNEijIhqKay
z+VdHl4$<c}n^Twy+Vh#`9BFh2$m~e&&5gBvo;t{^s35rY#1N>N+5LP?sozvo-yDGI
zqs0oO=F#j7b(&FAlI-d$Kx(6fpW6cg8N*quHFM?CF}O*c$I7EUU(h53oC6rK!>76*
zI|u!d>o{TYSjru_UNP}6$fN@IXPNlFY`w(YcnhLiB|RwtVe1E}DYYL3NA=2ph$qDB
zN#J#3a<41acEH#!zq<#6+jj;xBxN}h+vT=a$>49vi%*EeuU{CincHx95Gn3Q&Jx%@
z9prvw00D&0qF{WmqCMN6D=uS~v}W$ennm*`XU0_DFM~iRTeFBkmE7xO!zM2<b12ui
zF0ENiZ>^d|v9_b>zmS2Xq5ziz{c=J!;lV|x%=?F)m@rFEJR+-`aN@Cg%EbGJ;(Q08
z29^7f0@MsW@qH<wi|2yco)z~)?G*EO3{tEpPmv~!B$Dq9!0zFk)KVlvSY+%<CU3io
zi5so>X=#^=FlrV$Ya;Z~9TORt>E{p#cLGcs6J{wv*}01o_-x=0?SMNb8+nV34gedD
zF5_Ol*1zeV7vxr-l9{af=hxY$2>(a(&rvjN2hVoRXo{@2tW8R7bT1G3M)>#7d(*u<
z>>J^JKIr?ph%#fsqM7l=EV5E^`@+oN$SJ<BN2j=#Px6hx9Va&f@?G5(AE%7&SEMo4
zl^^Kb3y$24-=h{TDd=F(u)k*0DE5vsw#q4EC?Qx<;LIF3iH62#i8^PdjlvVR;Xg1>
zmXOU1B&&0;u|4)qK9#`<X+MSYGle(8#wWmOwlG33Q~1Hys(#76`C2)9IUAh&VVguz
zu1zO@hx=h!O+e<((Y?tWyZp@K<(RDlHNL|X95iYo-Td_%#ZU1^>ZKmVVKp$HVy_JI
zDa)q%$UwV8R)E5FUh^{K9#f;uY$#0&j}e$aG~^hFQfJGQRI|uh2fud@1kL|ybWbmy
zlMQ9XhpDH)-tk?a(hqT%?#0b+Q8)|*JDpm{z?n@SrqRFl98vrf)EWN;HIT5HszJCy
zmI&sz5mCoCq6SCL^mE*38h&j1aV~naMXwh7ywAKEjZ^Nh)4a=S<JXo{a|v&4{C-C@
zwh^|uxo03gClJ3UX#OYr{<Q`f3^EvGFru<8r}UuIP^x5Lg^j6`HHCRLh8Y;;Nuxsz
zG0n&`(j(O1S%QG*#X^*-bslz_6tD+VcbV>C**zp*;lms5#y^3C-|n|97C~bRn-|6w
z?CAw+^qM6o#j7-|b)CCmXU$q09J*2KOyM~(4j5!i%WXDnNH51*A(_5G!E_MmEijS7
z$Te68YDz|sNpr4snrbX-#2RZEn0&~A@eZ`Xp=-2GGw5WcT{C&CkyqbceYI>(x83t|
zRi6?9(lCN08!izYh0loeYtKK8{-mB}N$^{*yJ;>%=(hniv0caEsnj7DkRG<@pF%E_
zzW9VX<N7){Ff!7AVEzyVz1;t2WAqqt<iDp5sbSlPmHl%~=iZzez5GCXK06)`W5R66
zHSND6*P96LW5|Uq`^(5RO-a!na{XVXQe6g={{@w%{rgnPP@x&efYjYkCClr_NDMA=
z%g0kDvw&v4h))PZt}h|fV~pQ_n^58M14c~+Lr8PBjI0SS5DmAV0JBG}M^2^HYFX^!
zY!5BN*tN;)?^tkgd52LmoPfu;epop>8p>`e{<W#+D9P~JV$|rm^ZF|C6sP<05;C^w
z<y#po{<W;G*UBAV$#_k-j=Mw-fNP5}2(QB89o?_&Hi@hAQ6O2gUhz-Vo4b%7vD9gp
zZB!s9a*@)3J`$!CLrubtb~nzIfM`W`P^=k^%Sz24Bx^Z$<BMd^Of)md*Ng44W*Mb6
z^9h#foa%wWoEoept0R6EY4l!oVha_O;N<lNIx$;AkG&yu>!rqLRbpAJ$b!f~1IJE<
z{@t)!6!EOVN-5%|XyNBbwEbG@?2zi+)f@d2O4SgRdnZyY$iD1y<8*pp_eEBGDz~ym
zWP0@|kzdv;|D1u5o1yW=Qs->ygu0PwOKNl*^CHQ5+s$kNp6d7zseGK+wwJL=YNzt|
z0^Ex-siy~Kfn;sNZNebfkw${smN~ipJ-`IgOst51rmGT!yO`<JOc1XwWge*9%S<qG
z&ah~|*yW}757zuQmqt!EI^{B&zc4*;?KJX?ZCXcai0q-2-&~5}u}UjvD#^Kdpq3LY
z%9%QF<eY*?x&QBx^Fquf&`!=(VeD)jIY%hxeNRztJN}3n_1vh*Q%7zO?J(Ayxi+>t
zfZfp@T;=R=P6%r8THXJzXdcxS#$HrQ(!6L<GYfJ2=iU#xgNW?asa%j`pNA9|XpHG!
z*A1;q-1#nKTd)e7c*KYG1Z(a#T=%eJYn*vECYJTKJIhvM){N*qfe)|PjWrJ9iQV|H
zw83YNZlH}fBmH9c6*wY;WB$U(V7rDB*=0$No|9diy#BiIEw@-~$F*=BFaB|*k$k0_
zrIW_>n0hvw<J38^NO8MU5Uz$&`d4Bj_Rk--U|<llGB<h3m#duH&5257xM^50ep5yI
zG)XGwzL+-MiSE1I96@S)entB@S)|JaG&g}h>B1RVH1$6iz;e=0kJou)w*|=3vriE;
z`c_x6CoOx*k<siW<jw!OdwC&&+%sDaF*~<l)NpB5GChEg5V^26rTeK1&9w5hxIt?8
zidd_v{afa(u8xbxRn{hdj5%Hq>TY}m=yc<5kjmxy|HVt}-U2M{u?K<$^9vQtQ$Lf~
z%g&0_8dq>NTuXZ&%x`#!#&+j-&I};bt_bqYws~B4fZz0zD*~}Af?dhG0tJh6<RF!m
zR8@VTC$3tg3__UM&4I#7Mh%wE(<I&$kHDOoqVsDQIunZ66U%YO9$1u@rOr_Da-3$f
z`KqkS;}eR4@tT3{eZVkS%W@F(?`@LL>?xfN=dq{M5h;m{ERL3p)Pm7|N(<>mc4j|6
zdwH6&;oJKaSnqc$9F2j5u(7*wxCD%EgDk!~aGrV@%Z(T8{+uB%v2Rzgs&%XQ@c~WU
zqHk~9aKcEqUmYnev?cUjfqt((a!ys`Tw_8RIjW5{vJWELGVCyzvJFxsudo~&HEEo*
za4zc9nkQ4z+%78)wJ9XG-*8}aH4&mJX4Lr=YR%~1F>f>x!E;FS@3^NTT>f^Ljn?F6
zxmP9{e`;@<T`?I=Ynoop21-)r;#EFH^Kd3*T1KNjQR2h(fFW1Gdw`zve^pxN`?}oK
zzs4L1D0=*^D!vgG=R%ua6rwM)IqZ%AtCLM8`)h#qdA)+(`zL(+PHN{KlvmhQvc2{n
zS24d=2M9P>YV3^TEm3Q1mHmJAf9z`swL~pDnp~v9f_hEZct;!o0+K_QD*-C16VaTR
zA3sy=U$cPmj&*2@`+3=W&7B#{i3ICH<*!BmS#6xoDczUFszNzx3;OP2ZCMuW=Vb57
z%+>q{=kE*p-wG<5`M;tUg^a?sJYOKVIO5A;Ni*A*YvlRj>=ozckz@y|<Ch=<?nl|;
ze56!)jjFP^+PMkm=Uhg%d%@mn|4z+#O*1~Pc8}d@v^%%CpAQG?%D1`~Yoet&KaW}N
z1s`bs?GK!+`Ty>2<Qxr)`-ASLvk9n{=P_&W`Ckke&j*XHQ5|yzi{{cVJ{?yyFUpGG
zsC2%Z!#n_RLF82T^SRQ>+?nx3wUn|EF_*UV*ebf(HE#z^MMh!j=Kk!&h>O&f1Y>UJ
zN8?`m^o7m2s7fS!m*W#$0Jlkg%J+xMyR>Ep10l^x$D?86Us|*1+93m1w)N^`P@V5`
zQ-~K!M$lJ~7{^?{9njb|9LV1QB7G39G<tHwXV0;;nOCUBY)YIR<YRIL+7fmHv<ud-
z{gOjhYe7TH{US4iiwF49gC01AJ`uSjZ^Gg{pO{^)O80?A(<)oY!-7K%P0lozZ<J5!
z3B5Ys$7O)F%R2WsJIlA1|6PmcEz|sOL_d~gAkF|GE8|>|&fU7F>GkNRm2dhxBZY~v
z*3kCE=-hO!@fjIWnvyHzv(473nK=+o^<r?)zscSBq2gbdP^kp~crE6H=Zo~TO9n*+
z@(aytz58LW5{@%`zTnUgg8msk_6gPAtN095w(!Zvpx;EXC{y56yMt-Ix7eVS^Nk8J
zXo)EoI*g5-@A%)EKZw54%oI3C^KW~g&}y~TIJdE9u}5`@ItCaUGsJMVDsm_S5FhO~
zM)2;AHKKArHR)L}4lH9A4||Gt1@RS&r#ywD6o<{BVMch&92*b*EH`z%XevvRGAw3N
zXKsd6{?8(}$rrP5I7vqa5%3LdhjMZ%E;neTaW+%@5L`UPmjg|p2(qn{$)BFZ^PV^X
z5soK;|Fh^Xq+@z=S8gZ=ID<Y^?$VSTP=H@`#DtO~oN+w`3x-_Gzf0)C7XkU{wUfzF
zdsqK`IXDk|g9Ii}ov#&g?vTZT9IMyMSLuej$3}Diaf`7o)qoKV@w_f&vY}+1^Qf7_
zvtB*l*dyT$>iM#IKBt~PSI=eY`LKE}RL^g!=M?q4N<FL8^8)o8sGcXOr$aptq@@1$
z)N_z}&Qk4uQ$1&^=UwVKS3T#cXGA?0sOLiU{I+^7QqKp}(}w>c6>e0|ht+ejdM;7V
zrRsU=hXTWMX?gx!J!hzx>(o<M&r#|*Og#swXNh{|s^=%F)IZd7hkCBF>ru~V)$=L!
z{Em7ys^<droTZ*Os%Ka|FH_G7^&I<wKs8)F&sEP-^(<7+Bma=pf2yZf#jI4}Me6y0
zde*DwkJNK%ulTtte5HCmsc7-AYH^`@KE!jwhIIa@RS~}Em|T*>U0)xMS{3Cw`eZBW
z9u5}W|7Ol~4{n6fge8+9(WfT5mv0NL$jST*x&OG8=m2Wgp`B=6kv?H&Yi_J}a(ik=
zD7Ncz{Gj_pN7^s>yf`EMxl#S`$MtxB=7EBc#fLsbDKA`%Pa2L^9npiW?!f_vWa59Q
z;js9E&c_3zzaGCD7oMx}Pe}&&-N7Gw_?&vb+T?FPe_hcX>1BW%1YUP*fBq=J!!AN#
zhrFpm{F?HzUmji2E&J<>d~9SP<hnagpr`+6y{wzv5B-$cLm}eUgUS5J*AFIhBK^1=
z6Tlbe(1C-=+=zRoK?GCsOibcT;s=v?kzzY4PsQX3I+7_@^lCfclm!GAY^p?s5{{Yd
z$_Fjcf{@Xw@If1@0m0D65($FjUzR=uv-t9Yudz}g^0cr32)sDJ><SB-j9}q@iS1H&
z(^%fq_g86baO!Tl-n+iX^@dNynS0(}o2k&@F3l@+mj(+1dPB0Fcfj~iZ%9dw<^b<u
zqsVSA>~8JL-_`hsgbQ&HnN(QHYp6uxN+r%Kab-e8iQgshro`KT;W$a`eu?dhJ{@W>
zrG-#Km;AV60;El;6^QaL_8%NP9&*BXaB43CapirMMv6fA#^v@Rk|GdsdEG?H5~!|+
zK<sY{P8H&EqTK|_w+Y0D|GJy_H|Y~B>=I1ur(q!wAJ~OYArOcgU^k-`gya3A+ZB1{
z+vMq?x1tY+*Y2_D11*Fs-DI-qlk7#GaHc)MZ<pW~gog`3{iH%6LdcZ3T@trL;<f;n
zqL7eJJbl78WHx~ci0uDW^jQgg>~(mxflkY!Wvv!_w@W+d$O{`=If=xL7PZss@(%3?
z^J(Vk9pRx{L(^NYGzNf!aV3UcfM-;}LCxuo6uFmcPQFs6{{Sb+a3$Urcr0^)QHnW*
zxeZ_GS{C-qaUo-?83#>DDI<%z$FBEiK5jhM_G5+gN025X*)4J~@}L^R`OyQ9>qbr(
zlQ<5->fZyk&UK;K0jsuhE1X*pTH&xIU_))w)<`F)DxkDR>BjfC-@#(VVwMndu^m&^
z6LXdwb1FY}mLfaC#ZP*PUcT<&s{F_WOL7<I^{4y*7R-$JNItRAJ?WFb)<V2+9P%>{
z0lEsF%th1`%saOSR6!G<+t3~hDPM?g!T4s-=|-u_-PlAh)5yZc_wXW#EXcgxVfTSt
zd~)6f<2pOXq|9qgPY$}S03B}U_*&-m9Mwmu0#|dD;S@Uq!d_n8O`{=Lcdw2m7H>WB
zP4^d{{$II{Xn#GKESY&I$yNNhALE<9wj_1))$jo(j0*YOuu@}ZvHnsY@2pj4zG}s}
zn=7i68s{||uA$4Z)fM)g{OZmSoaXs{PHbAKBR0*;Ujg%-xKOgrj+U8`8B$<|&+B+W
znPS!D3*t`_FEwA}J};v+m0$_568)ORuaBp>Q5@B|o{BFoUhcU6B=ZugP=({A=`DJ*
zH7D>N;s&RW%zyA*bI~n?FjGu3&$vz9wB)f{!+?^t5^bc9l4X{8>6c}BI+LZ&ob+W`
z9+51Do2!oNKXE!9xLu#lX?bP-(91hSQ3reL&HDid<3W>b?u_JSUU%ak2uVt%oznOd
zd8aJ<aB|!n#Ga2EjTy`otS7mBoR_B~Wq-2)Q^0!joJ{hqBuKrHArkxc&32bjiR)0P
zXJra<uI~pdK@@<~`-Ph0i|u~^%2^KmP)bK^BtK=5A_ws<m+!fAKJm_Nqfvq5PCh@|
zH`X$maXC8fwDX4(Mg2p`!!Aw*NdX3le1eA`k`XDPL#fagYE;#&i;vH1T6=F{EIB$P
z^^Irw+(PzRPSb`~h$lAxE(j&Ns9KKnQ8o92k1ODZwnB$Yz(nKk1~XA~jT|*d?nYbR
z8lPCuwC&!)#FeFt;?nqd=6flEdn*;@_Ed;2@W7?UxKb@q<Y@j6U+6oBQqHZ^Yv4^Z
z*tzA-ZTaQvf;r=g;^RyC8E89%%58gGYIg5O6qH0Q5q9LCptLcrNL4`Lrj`d^iM0%F
zA6Ft~thkh^{}%M3PHX&t^l!5Fqp5Qy%6;~*`CWLMtArS8d{;%zX`s!h&mum>>c-!u
zyQ|;IeEtbmkuOvry_FwtkDV6I=3bThx8&|H;V3K}p%)zW$qR;Db=&89^GjpD{r>i4
zue=s=cIt=T={0<kdrreMTX#>`D%Mx09zR78Ewh8DvEB8zX{E|i*7T5!O;01-8y{Dq
z8;`f}t_m#{W4I3fxu#?H3oNE^t~=GJ?;y6xH5tFsXn}d}T*<<R5?z<GJFAZzS0JBc
zX0lqWvK3z<+4`DoGgbA}G_K^Jsv$S(iK#rfZR1LF(gh#8=j49ueh^Q5#6t$w`g=<q
zSY0`}5_?LjJ4y#cA^)mxEY`_477f;adPlXfn-64~g-BEREMlJeOjXmt=mqBUQvpW_
zuO4yI?hrX<Iwo)p*&?6rP*W)%^@|i~u_L*Q*7Ni|xJFxYQJ7I#QE7z|x8O|QTqKO}
zz!~a_FY$0&i9yX_9t52#U;5;bQ6C_Wq+#6P)1n1v_630@<s73*zij-)_c#S`v%N6t
zifzhG_aRsw?PI6QHw70@q%@7Qixjd$KKEmn6CyEMM(&D8f%c-fMy0Fj{R{b)y??UA
z2ps8iwHMJ5G3`)6NwidQM^BbqE^<YI;!d>j*4$d-ae=XN8|!ZE&?kJ6TEMLa-Yd0(
zEqRf?0r$%rW2uVt8QP&1Cpja-64n1Hk)uz)$BC{MORmK|dH$)fO?VC;o_97o66+QW
zjBUyT@ln2AxIS>Otsr_jZy`9p(n{aJTKtIfa0U%eyabINBu`%SES@>hQAS&AS8k-B
zL8g!Tdq7$AJpa)JL(QW|#&*Zq#7e%1E4JB67YCNK`En2LIMX`xw)3bWbtrzbWXO%=
z9(r3*lkF-5X(0A9#YaYadQdk@1gapnqz6g2`HUOJ5?q4FwGH0mZ`99z1e3WDqbcVA
z5lh&myztye*E8+H?OdF&ian@wF3y!#v-Jc&SHaXD%7=u!4uqLqO1PBmjf=B6;BCn>
z<{MOk=}{^siyTe^;dZrmW~==aDWa-XWsa*dTf}^|I~R4M3|uP8085P|1G<b>Dz|Y@
z*Bd!ZY|+!qUrb?4$On+Vx0A2fc9`RNXJBW?Vz=C&?1ya(b+iDldD6q2p&JBv=5sMZ
zLM`*Iu~JcSyUO&Y?MM)IS96iAs*JCJzeo$c&*mwaxl@lF-gVC+b=rW+k&s-rSlrOv
z)GyG=?53)_n{wJsO(7Gf3Zy%?O4YXUe%MIYoojO)5w5jZZ+ZZfaaWvv#*`~P+vU)?
z!~A1+kh?n5C!70d!~9WqWcLw*UIJRdE%t9d+5$GYWEUxq#5pV%!Y>St95MBM5sVC^
z)NRl)<lht>V%AV)kED^D-i)|;;z~y6wvhj|=<V7|V}J?ksyUa<Q~BN;x<JPZ)`Ot4
ze6#LffB*Ax@h$rbrhgf6{?_@wmYtS|{{uBkSj0}<VQzhbFg&?XeHCvWLracaaBD5q
zr5~^>q>_V_v%ho34u)yUn?LQ2O&~vYyJJ^KATgyZ*RC8SE<C2<(=!#@AH)kH#$*UB
zw7U^pJgiJc+(O-2qnH0(ZMJdJv(p?X`Iy=ks#?vPm(pdr%5sP}u;p${vPv>*85ODL
z357?F_`^%N?A6HiSF!cd711*JV5s^?pWt$?LMY!me+|Ypsf`c%Y`;N>d;wTN5#7m8
z$bT@x<`kFHwW;!yE6bGo7Ucwnb&1(7zQejvPE0sVLjVPfbA=KsRY}z{n+9bP&($)+
z?SiuPBOep^A;T@*Bn<`Zh-pg%CnQlCoBuFPy>Py?+{7(k%Yf3W!gui~7fAjn7@Et?
z&p&4#=|&HbfSzHX-MomVQfCvgS#%mBt3tjR$dy;jk=<i;h3M1f(eF7NkIVH}>&?qR
ztFgn5ZiCBuCfj4jBT5OX{zrUYsa5xPy1(1PSC-B;>)Fmq+;?icN-}$U7}{K4LsjkR
z3+;*%(q3k(Ya@ViwRFB2q^wbDX9(LZV@3y2Y&{F~qWp+ed}6PoISn5|12FihKK)ow
zE;2n-$4cX$e2TyxNymd!1xPXox3S;CUPFS-KgP<H?1aZY|2%qz`6?x;;18+-agdYD
zzaldqs9ze9-w}7b4d2CP5e^&w2pj(lC6Bt;H<?Ma7JF}S?VayU9&hCB8_R{T-U97q
z8G_o-P0@?Yg?8Onch`M9a6i7nZf^v2vmaRheGoR@DB5>LV`NA{^b}LRwP3sL!SSg#
z;m0eDBEIhN%&R#Z2-)w3CF~PPa@pu5a@puG2y}}1_I16>{ep7bf7GeOc^*|tWsedm
zH;eXL;qb~m;1l|!`>qg+hy>%8#_!>~QSo~UX2z%H@mItjHn^#9{8TT0xHfYsX?*H{
z)D_etAWPTE^hBd?hmcCfMV2pYkoVL4p&e(g9lBKIh))=h;+`*Bo7yK^KfigZQB@zS
zr#idnA1F$<Jbd@h?n8j?NgvjM>R=-qlMy$L(0z)1ymLEWpLDT$U7mTx$8<)ti07<m
zAAvu87mkF!T>>Y=YX<k?s|MVS_fSAqZ2>*8RHa*<A(^BpB)Rcq4YU6<$#*4B_9uA;
zeOE}tSa}b`L{q2hW$I&q=68Q6n5gm6@)Y*5r}(CEMLiza#FZWk16RhjY?Ds98~>@m
zItGTHWRf~b`k%tk--e--)+Z?#CU?V7mY&%g50fm<Xw^{Uj^l7}mK}Y~|FrGz{y_Er
z|FHHh;87OW<Nt0pO9CXkQHcZvi5e75(b#BBSkSC&;9c1u)*If@Sj1~7><TJK;wGBq
zWh-sf+SXQUZ`QV7t8F#lEg_JEi-1@y7cZ!7on^IR6$o<K|L4s6?q-R^_Sfgn^N@Yt
zdFOKG%$YN1&N*{t468wyQy4NP#&TuI2*pOlt}RLyGKk51`Qzaa6X0ac5R#{;b1v4i
zau`2px79;A&2<y?%)tmGtfAKk)T_6cR%FIZl!P@X56x1|PDHL^g@&7bCj4xz&CgC&
zf4rza?(xNWx|u{V!=J?hPgV>2Ez;!_c^|k!apD20pF`(McTX<is5<?Fk8Mz$Ps!{f
z5J0r&V0g4yzY!Ik$p#!xb%SY+yF1(U=|RuXZiL9I(d{IOBT#rT4~T+f+OajqwfnrP
zMUl}`%P~?*F^WRj=CjwvW!}7HHN^|scKfRu!Y8QpsC5p{A4>$>^(o(Hky8b*y^qq-
z&2`o~lq<5`oF$1BkCC_&PR`2l`=4s2zCm3{udGg3c9ld})OZg;`(PUzKbY1*`Aqfr
z@943kZ#>-hUuJ#R`?+aF=`ph_F-rhNElg)STpe;VcDjwPsN?E%HjILMe?}Z6dwsOL
z`;$4Y7sMA70XVPKMaPm}=3=M=l<Iw4%)5mws-Z;)+WQwqNIX5t;?vm3u8oa+Q9jn&
zA0Kf(=Cz7@S#mxn)QFEtYi4XHd#n}g-`lY}B;5oux4bu#JNXa6H8IP{R2w%@$#jQ^
z*SrN^Y0;VJ;S5^2D`ZGff8(U^MJha)zX!wKI-)-e=*mGpA~JNFRF4|Q9eI%o9f4ht
zs2=+RyQc|D{!GupUiA-%50Uy`(2!s)k-#0YS5|<|-ufwDd|T#>15q=eUK2l*(?mqn
zXX{0ygLcN;vjgP~JAMc^ac(?xM3H(FzdmF6EhR>h>vgA~v>3b|DclCc#&vWr`j4#(
zIkQ!yZqLqrKDpn1HIrNKfmlw8FVvu{nR7Ovyz#hz(mk)-SpJ<719fl~Jm|do0P_hF
zC2&OBsoAn?7Nxh~11J_6#_~BO8jemoV_ZPEzBgl*zO|R;E)renEEyMTub7}lt1x<k
zepCoAouipY@+R@8^UB8SHT(=xi$bg}utpdAGn3gzpI(zVTs88i!kCQCf^`I%z!3p<
zwNX9u6Pc5uF&!1<5VL!}Hs4ot(m$MGQ3<iXTn%k&A#T>SS9YYQV3l~S%+QOm`lYOG
zvH{KXt5<)F{jP4X`2N`%_A!fd90m9X0-dd!)>`&|CJRKtZvOwIUq`4-SMTW8BTj2s
z`t|FbBuBq~k@K3RU$1eJ9R2zk&TFrJeUy{p=+}$vS6jcX`{P+-R&K&DRy3zp>>c`k
zrXx_nCqG5=SUP8Twt+QvVF^T4Dj(*4h{-^n^5+b6Y_?LOEuSR!oIGu{O=^SWx^>ui
z7}CXJ2lbC@i|ocG7WAzS=T;pN`Mm0gkP&Eys)Rm~qw<ByW}v6fCbYqIGJrRrIY<ju
z#BQ~9RTq!{5}}E6m8^`K;L!0yV;OQ2T1%6ernxksnFtI2iO^>JRudXB`)tT*hSpUA
zZIz}uAX7d_+#xjGm+Z^D=oKMmv^nb2AT3#6sEwj<Y)&zgP7U?j!MQ%WgFew@zIjOB
zWJl?1hdD|2g7ny!%mw74t<Ov;R;8-c8=}dXfhMQu(7T{Q)?2~YMMZV7i5&NsQmVUx
zf;m2sohUQ0FvP^7Tfx{wrDV&Mo<o$&E`u#p^wRN(rFOAmis>>v@aC*CU)k2<FZH(7
zc4)b;YU?J7>9&?+mC4Xi1*$Q}T63c6JRck%e~2jM&`{AhmuqlWa?);pNi;l8edkwX
zwAOO{-L}{ClRD}N2EJSUd7~_ocWQ+j3gsy{R;~^YQoq8#TF0e`)|apal#mNGbX#xd
zG)*Iog>1rR1GWX2SfX%deW*<qQgs?|Ir2##5?Ax8X}2qR5`fi&2Sl$caV1OC)V-<H
zQmxNnNVwYr!DKB-cEg!{WQP8@SO8T^cC3dALaW!w9n$ZI2yX#@K2;noMiXHqa;|zD
zI_hVtC92p)!u_Eoaj2Rt`_}o=(ToV%AqaU<lw94Z;GWMzzP5S)M+9-aK~SmsOGHm>
zTAzdm)LJ){B?tIll06p_z-ZbI@miBgM(2|wJl>j`Pd#TDE%%d5Q2e0vrg7e@;Bc0;
zB_Nu+A*%TudMt(}_i?98!ka4@@_d%~KH2@&+o*8n+(3^|Nvv1D{Dl^60)+Aj4-o~x
zDs#_g*4yP<@ql|<GMxQ58!0)H|0W}R@86hgNR>xe-3URG*P7*tkmpmhOyi<cOG?f1
z15!g5T}$kO-u%YPDAwLoCIlm;-VLTY&D5*Wd&;;hm!9A-cfsvtIGrYrVW@&uSK<{)
z!RNGXG2e{MhBD@B8J%mtQKSW}EnM!6E={}gZVF#319OE?%eFMNxXga3C3v=sPx5O*
z5vOqAbZJObJ<#Ku5|%wFI#!!p9_1t5Ksl>Nv&L3H5T<OJ9!+kF2S!F<fcC{H5_5x=
z9V89oa-yiQ`t7$-$9mOMc>Gfa;Ud$gS@dZ(L^r=w_i38u3FhX?k5%(OMGHqfl1dJd
z{bD)@3R<E4RcbZby`WV<p!v<}CDHVyx=hb1Gk$AHju}nm%^_lWom>52p%70G!l%(B
z5(K#`cXxWm)mgcpOEflXgIT^7k>C_md~4OR1zOknWrOLXXG+nv>SAfg0~_wrbp$@I
zl1j>{M=BZPR`dF+;R>gQBQ>Zv&~G-Q2lI@3XEVl~9@}tos46`(W!O=ms-sPb2`5u$
znqQDzxjONZ5Jn#yrhU5|6n2Bc^YAFwC=A4JLmc^&AhFK+hZ(<zS}&NP?zu;L$8BYs
z)m(XucHu9vDj5C9t<f1F%qgfe=~^0<kJ_j-8#`fcE^raDCO!UTeBN|-Kllt)N?mJJ
zt~8g%XUH1R2b-t#SH8e0zfy*mvuo55jDF1FAaUslw3KHo7rmAVZI_T~c!+7@1KT?r
zT>eGlQe=s2AMNNzf=5wR%L*B^{-t((;2_gMWY9Wj5_jxLjgip7DpjFLu7KMOHmfpu
z?n{{dR|?1+iqD)4mkY&SEPI^SI*WUP7>j>vEbFoOP#)7`@o{D>tnXGaermPO_}vPg
zrKRQes~Ds7G`OlHNB!DPGbJs4mB+0fvJ<9d5}G6-{(H|&x|Ubf4R`6<wE9~P1NmEL
z=`U}h05{|MMb&H(J^<BshT^xQ(6po2g{+?QW8=B@x|Til>x3zispWY?&AhW85(u6l
zO>Iza4b$uRv*)>|#Kxaa4K69};hyvj>g4{44|0mHfJ9)R!RV@dT}4pODj|cAWn<RF
zQYceD6#tzND`OdqjXx6xz{#B~Kwp|qchMjZ?G+ZamRmhuVFNmymZXFL8swl;9V^L<
zUPu@ASAK?5zC<96u0+&b#s5zjPb#wSr4bM{0mWXh$Mf}&b)SC9;PJTrs&_lpFVjP3
zgJ;HG5E`Kp`RRpm%e;R2_~PkyAH#=MBGg1Bny4~E@?d|J%yTL^{m@E;{HR1zVWyG`
z`m5yYP9-}Sc#Z8)9{%%|kSvvG%4H`FVHNgQ!_L!KLaW%D^<}4UX)gPL1T+i1R<!>5
zstcQ!y3x0<OAZSx9$3q9qhdUv*mwk5^37CEFvWlowCn?-Y0AC?*ThYPs!mq6-iXtn
ze^0X4bz<>~w(U9bf})(&fm65m8#*d#TZT(<s<O5=Z@Omy6}jiZgpRC>iCf;{9RK2h
z{uXx&J1AV3*x|f3Cy6JL@F9`Mi^Sa@`Gv#yW5U<eSw;V4qsIhO137h>X|!55iqKvZ
zOs$bd2XQ#iX>?7{w`oo?d4*ZOBIt9^y?`*2^<TuVaI<r$vU|uO&ck&wXt^@|477~M
zBj6=!8rqC>2dT^L3ZCLldg_ipLY6WVKXeBK_F1p&H9u_>3>YtO3R-)E)=mP|UC!3W
zwhkB%?1CE^O(=Y@Abb%t9=HdBFq+QcuRppY*J$eT>ZgI|gYBmhqiK-+bp$R)GV#mb
z3}5AsPxTTXKk{`yPJtY5Si4|gbnh_ZyMsKi)UBu=dS}0kL8&9_mqAmu*u!#gD;H0)
zBF~Tx&C;@uZQ8Ef=C7V!w4l`=onJI~(KEq%F581g%r~tEyEh8ii9suQY+!LtU>thu
zNx&Jj+(FNqffiStn@#vYvwC=BdtxjfbX_IJl36ga_>=+uYO}<6Ku*_DYl&0q#obkX
zs{AaspDMT7A39y5rR;3oT7F_BscAeIOAfFA3N9Y_oCnccow_IS+82&XP(1gW95yKL
zj!!Hw0^NyiHfHOLrrmT*UsOS$P@`!bZ;VF{h?c)+*ZSTxnmedZgB-sQY3)_fu8h%O
z*m@QdC>V(jqxnpp5)Y9Zcg_->v}6`<zINk*8S>i^9!2Dh<S}XFOp&Y_Gk#sjEMWjf
z7)vVUt#SScaWx_gi=Au4g7R9cW`uTF^6yc8&&J+aYpt-h-qMyAC~ph++822Io_DOZ
zi9Pg1T4EI5M+){wt9-@-o5c(`B(Y8UX_>h~LB^5}5~F*4iN8p;#`!}Z#9eQJPo91;
z%H>*g2JH@Q9o3w?kalr0b5Lrnh@XGda=PrgrR@fqzGd|dL?1{rlc1)Jm$nn%*6n_A
z8^P?PD@_mCXupD3d-hYF(R4abkhanE1_g!2Z;(Hy+hgK;jav((5+a(}unyy`aj%V;
z!91th;}?07IMA8}e&6~9&C$K17By%)E{Av<s1jFQ?8H_VqgJYJ;C!t1P7E;%=F2Ii
z*_GQuVuzK`6Q$LU>LTGFC%n{b=Bn6dR>D|=)g#IXsK=9O<=OeI4V|viko)Xls-R34
zMlYe;g+$buluaZ6uX0oJIeT6iORl20o?FHP7fPMI^XuYn1ldC-mw59Yc5(^g()1%2
zA7&=kLAsVTxv(P~TH_D<t5G-+=qs}E`#jY|_YO85_&**}?TKfE`l35#8%=M6Or99B
zr+Jb=S|ER>>N)Zlxz!5x2+BK70Ia^I6#1At+)V3BkQCA&XtWsz7|bw^&!q*+9BM-{
zmMS&X?Md_!-7TALC|{Ep0Z@8IavSoYvoSq_MDTbs5g}XUro`>?BfO27u$ib58I-N%
z#hS`#us0JMWUM4lzOm%bBr{I=u#(?8kGP`22p6%*Tw0-_m%(DK6;2qgIm|%)J$Y)#
zYS7XPHWl*LF3t~(TPsH!j5<$epk<)$_#m_Tn8@G#R%c=cEn&aEBr7`QY<4fABfc7i
zZe*4jTL_VOPq+`2c;zaS;AkQ1B`grgai4|=>xw=KbtADXP2!mN^@%Y*VOodzIej%S
zXuTq$N3w_q5oD4$>c1jlQEl~O+R)h~Zm68W^A8PKW3R!E8vP<CWYmtG!sD`AaV7`|
zo@Yu3?+2!n6{~IS(KBPU`BDb^4U=mo0hmMa+Wg8*qz{sGY{<1k<N>2{ZIL`+S*|^j
z2fWEQ@Ho_;dIO*X)^-k<8BH7LO|-3Og4`alXq@>7ZY_qW{|A}NaP60Wh8cZtCp&Xx
z{T$0d`Fm^&%4&kX%|_D?DBI;(2Ln$I$B3gI-bNe&S@JdqIlDHf%O!hvJl=>;w>f;1
z(+dF?NDxt&{qXe9^qL7!f%tU7AaA>e<>sLVYBr<eTz8Z#9uTyK_)}|J+`$xEJw%>P
zGA()^)5p$?av;9d@wrbdVNDKMb^O208IZ+!Xo3j^!3Wd&i&Pw{9$+-h;GNq;h}wcH
zY{>es&hvravljPGe^qW-_)}zxHf~_K!Fb?CFmE)SAww1IIoW7>lp1*QhmYp38NQsq
zb>S2Fd!5mIFDwXi%BE4!3mcJZR%?yW1)=zj-sB8_`P%UD@@JI%DUtxs%@<PO+4B-V
zke}-lOZf3y+n&8mU%Ml@29YbApWtdk{lQG!#1k#t>a?)GTepx)3!Z0ZC#FcgrnTYu
zrsoUMgWFw?kgEGUorm!!hremOOsC&amDo1ORU4n~ma~SVLe<CJaZI3UGQN-JkaIEg
zI)sgAi@VOvmBmB!d(gA5_gz%%zfQ<GSCSK7fFiTL-SqTOX@a9`uEX_MVy8aqPe4kp
zXRk~ASaQ+h8xl+P)5hqISvInxI|v*n2I1%qMr*Giz5I0|zLDH~tR(Nv;pqC_T%%c7
z+q0J^E|8x)6Ef5M9MvDZhza<ZFb<h_j|o=*ERFQX9U8drhdgktwcz69RfomJL~!wS
ziY~@p2rfF(edlelC;gH*kgiaese{}%SN2=sd*td{p?(i~wx#P_>=EQXm3V@@g2p@{
z1aFd)pWB|jC^<7L=?F=xOI{>NLCH0l{y^61;zJ=gR)+Uz8QyUHe;V548B%FbZbwC+
zt*Eosb9_3))&kEIRJ`go9WN7XwuOfY`Jj`~v=%OuxtI6}Yb5GHZZBZ_R99+NzN%hX
zFRKS!)q<;9aMk#?GRj<>sBHNjecmked1ijvD+x^{{1@M-2g@LICN<2*{3E;ZI>HCb
z<lU`)yh(QLkCr{o_d4G@M$=q|E9g6DG~LWYZA)cP60hOew0>XKMy{amU*bcCA;Ywu
z6uv479v=!B^ghOYJIJwkuzwuBU;BA%*gHBr7d2g(X}r8zxjPsQ_WM4QL%}ufJ1PTJ
zbD@xDbQu%j=W(8dO!7@EL-tF%nZjwsB$|r6Co^9bdo(=>AT?$xU9?++k-VtR_b;PK
zZ|_qbEL9D@6C?Spz$&#bJ_=AP#OhchMo!%fnkKUjjdRAmO|6zdF~C~nw9tWqCNTnj
z9;yzP)!gBIS!%0oIkSv|@)5sIoHtGl{<<iAPY_5$6u1MwdAo%`%Nb@lot9nl4A~`f
zxq;)~3;vR4s@G7i^lpT-8pPQM9ecdJxz@!36w7w|MW1zL6~-bK^bgXzYpnxjpW>KR
z$JkZ^^*7`Nwodw9Gi+g!I)+t3jCJaTKHqd%JA<r~>L*#>A!#TrTn4Ev;4%c!hciAm
zU=6mmJDzyGR+E!e56Y5$tS0_a<gT^^Y+iPH1j5jUmXp=0{)-H;i{P|Jk*b`uvi%4B
zmw1c)0JG^vHKj{vb+b^&H1Uiu)YZCFiLNU-so@+KZiB(zn&QQxG?byLP~T+&EnP}I
zqe2KR)=I}?@N}4jqpRQfu1ryFRGNOsUbRN6j@S8HYpBiEA8S7YRGY{?YaFxJXthDq
zFnTz?d`M{+ov=FKU#$%qq>UVSQTlpqyq+;V$f1oq6{iM^I`qjXecwfvQvky>0~}++
zoSA8;m*5;)d-^z*2Es2~A{K-<#Tv%Y(tnvKx@A$xvJha$tYR)KN}FrdvuN71-QU_Q
zmVa_}y0a|*8!Ukz$Y%8GgR@kICu*Ph>tnYRizT3H^WnfXI$PCY{RcjRlpGRAXN2w3
zwv|$T423!JS+88`+H?(~S9%MyRPnt+f46i#rN;MWvFquzyJo|(YVB9R@?`p>*k~Xa
z_%b1R4)Gf@<I{>%Lsq}PDql<Ae23N*ir18=(0`F<dR87yhc#xszG}8q#n;(;6z-R?
zPl_BZCq+t^%OMIZ2jZU<ur?>LsOnQ9covSB?r;1+KBN7wa@pFy3Wq_-@)ccKBLi-?
z6P<AO4-s}~E^;K>f@53oSbaWs`e-Siyj-;XrFaqNe>D)n{}qTnef_z<te4*P=_{~E
zU*Esb?kns+tFO@y++W$zbU!b6*y$(5y_NUd{Uo|=^3rrKPx$KQ>;I?b9Xw~o^QAS1
zA5VajJ|3KQ_&(<RSAD$Yp{zb$z!p!&l5;S<eLUx@n_u)lHQ%?7TUH;wkL<^!kH_@W
zNbY~t$NL}5>f<fV=|1N6_VJ3ZZvH1193I7A-F)9Z?&>~#AB7{+$8R`|^qrUT`767b
znU{~r4k|q_qfO4dl=8jva`smP@yyi2Gl%~OM4x#%u%Bk~0fxSw?=;hQUgm#gN7M82
z`R`|q=TD;P@yzcX&&6CgE|ODUw%|0s7XKz;f&XvK_Z`pC{WMZ!_i<)FjTHS?eSH0U
zS$%w-Eww!_i+cO`Yc3!=Tpyk0KMWndk6+z<-#+^LX(Z2HOYU_V=}WWn`767bq1oip
zESlZW=+LZ`@1@xnR~^2m4iE>X9G+(XBM^OP_L6>@xy<hC!~HZPpZ~kQrXI-Z>jw=^
zU!{C+UpKBid|w?Pj`&}J=+oDm`e|mE-PfniKRin1^MBXZqq6(DXOYuaDc{@Izw3+5
zzdTDFAV&YMK=kSB!hV`5wdd)}cwill8I*oyN7KBhTn@Jg&lMTLaQYeDUfMfP53V@;
zh&s)m`#&{L{6c~U&;jH7Z5`3~7KzJH-?`h|Ps5HJ*l8YqjOBCX>MEk<9V!S0d|Nm!
zyzknGS4=8g_LUY3?RHD8EovJPl`A*-Ryg_eal5|fz<cG?e-J$4a16|u)+hA?pM3t`
z;3F2aYC^YfgV-Ql=?mgI)3+vECT?J(?D$1ouS)FWf!LT^+<}(!Q<%2J<2Lf4wrH~_
zz)*DGpTLJG9c;Hh_9CUC&SlSqEnRc~)27DHbZc#mVrz{8r`I1kh)<}sJLKClZ-k-a
zCE+I__aeQ~+{SVGcTCSN)3@i2L<p^h^*7V^E+;tftSdFk-_5{hJXdg(*uVj+C2&*<
zAR`G}=eSI2-p@mrTc<hxW&)8m!A70XiqZwG_rKIHmsOS^Y}Hxs1udoh6jw*SA<l|t
zr~{><(~wJR*fPpNMthejny^w8V7cLBjFi=GiC10SA=q1kcVl>!i7wx`*OD0$d$g>E
zJmT;pW=j+2ooW1rV!tmdlHd5vsgUvX$01LGrn2H6;VUioZ*`h`cA4?noN73jKkrn|
zjDQd{d_f!v@50C;ULi({=wPQ>;r$g;t>5o2<t5o}zV<Kjn8wq)f*uadzUfc>l?V=%
z8l7*3I5tVpn)RXb^_h4+a-A*+)p1cksJ|s}gvRKHc5A)md9U;B(&g)j6PS+w^i}2c
zz^2=m`lNiwTK`{`e<x@iSZew{yW?2XgVW_Zb6It9FIsEEl;q32qnGk2=zDt}Hwa~a
zDnDTQ4&GrWZqWG`k$>Nuvx&y+&=neyj!=1*1HblL=XeMGFS7d&8Ak5KP?5L`je+T*
z!aZ|On7I@}ld7?-)1F;*n5y^8Io766O^Am!9ZsT06&*|YS{YdE#wS7lbBm_N7`pRg
zFY2Kq`ZWD8q9-uAAzJ+$)fEYIi_VW-#Q?|b0VWqkjp%;9hOAE#>qWtZ_mYs7xCUub
zLoX_%7eezXq}GR8Wna%^Wmn%DOJl1YPgstxanCDkDtWW$T=LYZ@_ZF!y?x$9j<sCI
z-q+SgHg7YH0P&hQu8S9Fs`#fr$(#xQcD461ra+i!xK_DgYD|xEGrDj49WP1BCzCN<
z{&=Kl*F;Yxh9iB2T;}|@TF6H<Ua8{Q7z$8nkLEq*Nxq?ONPoD@{!pMl$g%Pl;K{c7
zSk!tbiG}OHMBbAN_V7DCm5F_lDkHz6(>or8cJBmNw*v|)Jxf?Em*W~g64&XI)n_9z
z1+<1MtHgM_#O1m~#((x?)z*KJfp(FTC?d$EJuztrr)Uv=3T|F!d%bk`L^;j&V<)L+
zE*h%CpJwy_vhQiO2kv%Gv)#u7-iV>NcLbUK`_pVED_8&U2M2?l-9k46`Q0796dnXi
zoF6u$6Z2E^@l^I0&*22sMywJJ2hp7em$7ViqllXw-J6OGsq_6KGQz1KS>kUg;5yKi
zV$iQ@*gGhklYH7wfJ}{tE47+I4#3seo>yA^2IZ#z^{ywvd?Os0LM2J$7AH8C95flV
z*nQsOp)6$W#2CCxf>}*%Y73ul?rF~hwUPJEj}IL<v+@0uF|+ZD9%CMHBHTm)8)&kc
z!^a7=#nF@C@^l!kJMc^1nF@I}1uItsn>)ho91kL9p?PeZ8Qq-fXxbD$xrxK?X8VpJ
zo{!~unDdO|OL(xIoZGZJ(jvv^hMt3R7NwNA_kzMMDbr}?BQlLPq>3-$p|L}f8~4rF
z;d0I6j8j|qEqku8o@K?cK@Ley)Vs{3ej%g6-`>iRxe?=?SP>wx^hz_eoi?=$humVu
z3nzGTIJf-C4{45ihhtnkmK1z9Q^lJewi9y!XrnGI@TSYE=V6BeY6oRWUzQIx69+FN
z6qfV6i4(*kC#;z}HoKELtd*tJzBy8FM?S0joR716)SF$nf-XQU!<dS2{=uT#%}Egk
z%`VAN7vUReT!=zcX8OtMoZ(=h&vbS4#P<Vi>(Kzrkx$F}+5&n^@9{Ho(_og3LD#bz
z4SPTJoO?(;jfbsAc&t6X(FyCHU~#s#5P>0H*uk^9^aafp^97O5N<#B;8jBbITE;(K
zIFBFoFIED&eg*HR^HptSHkt8}Q*@RIA%2oF=cEURAT&DRMrkfQih|cj-3dyQ$q;E~
zH5cvVq>3kzp60wZ27A{8@jocZKF?8ug~Zw#u=eV)R!1_vOQRE>fW=@1+YdIoyx)}<
zo&qhSqdan)pm_tY5aUYDII0J#<$0&rFkl_n<sY*@J|-XM=#M?}u{309{(_L8<Q;3z
zCoELRU97ot3Y1T>R_8@>lK+&1t8np9mAd$5HA;SCc`3xn!V9F{W9$#SR>|vNUPBzk
z^@h0Ai-xoZ!WhRBp(4{DCjbPHWHX~tBhw>ZIGi8#HCbun#S`qL(<Es)NlPVq(I6W!
zTP{LwBw)}<UEX`|vhhLWtFnC6#s@#10SmB@@|!BY|3T)C(C=&!RmD-iruU2s_wtI^
znYfwp*Ut=@J8>0nI;ckcJa^&({b`*R<|R(Yio^s-vFE5Nt`cl_i?8?5HS)Mtorj@Y
zes{xA<o8tP{j?SK`^(Uyq|2pA@_W7f#tRoQ*VW5s^BnVDG>h2+t-y-ycA^uWzmr~C
z?2^>Y=V}IIOvq+BiEi;Ls=ERomTK>r#Bq*PoAre^^1y*pVtXJ}bvIT|tA!hvwho45
zXIA@5BE^+$(Pd50$B;V;s)@hJmhYi9J3g$?sBOa&@%?c=iC&tcrIUZ)b}db}v}P17
zU2oQV5Aa~d&sr`&p3cT9X(>FoavKZoA1Rxhy3B6WEXhu-ini+3=Vj$A!_Ddu8<dW8
zX}q|cN7}fQHgr@SM)_f%Ot;AK)e|0>Pna67s>4}y8Oy3meZnU@fX^RrLQ;Q(B<-BH
z+c{5^oTATCt1>w`k(^Sy|H7P8S6wOj?;N!3SjlpbLs`UE_&zim^VZ_;s>0oRq>i96
zH5+@0&MW*`Z6dF_WTlfdP?BDeGhG|h#f%ZmArCq050dH69WGZ*(}J>FCG^5<|FS{k
z4H&g+LKZYB=b3&Jrd*HAk>+jOOWdudG7Z#q{7D{T^>9Ik;Fjn-e5oOEow}62OEDIE
zTT^@p#ciuS2H=vQHMbN4aQd9%7<J=nI)E`Paik`2vEk)2(k+yO8b6&UYt|3G=SH+0
z`4*iFK@VIk+$NU#8QM0j{t^*%h^Z7?{WKS$F~#O55Q*j7luxz|U7k1u?R}I=^^6zq
z#c2{x3^ORzaoVz;x{@b|fnNg<^Uk78Gw!@{6cxPhlH!(ks(gugU%5lxnrzqcn756O
zUEYUD9GL5B>+&w;Nw_2hR$VIv0ulqj+wMHiP8I(QhnSexMLDf=P=i27<?2-NJ*0zy
z$MzANx%ehtq7$}KnJY5L&i6hepDNxQce|ELQ+gdACuJH}3hXT4W~{Ig&MfEh8$a6a
zMX1ChlR86XVM4&SK1eRL^w;bv@bkh?qp7S&WK-;?@+*kexSN(LK1!-(i;++Bg7_Nv
z1!JImVbY-_yd;q5$fDzH5L{A55uD>WfDKw+K)X{drZ(P7!Sx;-IFhA;I|XbeM@8)V
zd*7cFc%1Ky>Fi;GQlejIgp$939;Aw|e!vaFWb-hECu!A86<6`dJS%`;^W$cY`ZIGQ
zRs7TvuqCx<Y!yiM#+8B@Eo}D6BC<EK3IlL-)rFq~;+b&PC*?8b9ZPa1$ROO&re&+J
znDoRWl1Jncs0uVNWz<3lTT2?wdV6bzq3IB!2sMRU;i~@hK|OV`)B#$LAvSK=j6nLt
zohhC<7sEt1CPxz#kimNwzb-kt)h7?0=_+3u<x`EQLrht6m>%i#qmEBSX_gy@x)#o&
zp@eP@g}*laB_j{sXh=8_a?8q)B`03iPx|CT)3F_Aha=(?6^=f&*1z!b3B+dS^S_Ay
z#Gjm+ryjw=uv879f)G9%5YbZU_&bHRd(KepeUi0BI|9ZdxgL>RRsH2kvM5Wg$0gS{
z`^&Y8T<YT2SmibcVrPBEboX=4HV~U|)pa>|Y)+`<hY32Q2e}{!d5L!g1CGZeQG|X$
z)q$!Cqv^*yFv6`AC(cy3RL(BKCucEqIPF9R`s4F*62u>pOh0fkdDX9;k>TU~(_}sn
zolL0!4>9j|bdJu*AnnwXcvP3$ptepD{1A+68YdMCLu68eDL?~8(|q#uMbi#efP^^c
zk^4BO(E?RLqoLSYg(T3gOW{bwv17)t7bQLxxx2gx5_xc0g=h10%j)rXJIRP}lg3%M
zkU}8K;_vWlt+=Iayr<jwnjByiUrDOu`jO-+v%HV-D_%>(yX+%kQfs-CVqQPaa}pY`
zk7miQqzH$4Qhq@)=i}LuzKjUs;$aN&Jj(QBtF<<;0e%cVS-D9B?d#ayODjVI)qmE7
zBZDMwpk?;C;w>mo@TtD_+EvPx4m4HTx6VSR&f-j+I2MvwSDNoUR_FnOXKH$#gc=}L
z!kebcG3htyl{!Jc*%7=J2W8N>&g4eW;eQ3m4Q=HHM%Ev{Yy#(5%aqAltvl3rNQWUa
z1U;#SbH_qcF9|l~XdxuDVujX$*WR?PXb4XTFapw_Dr%mqUYs|++-UlY*Kr*S2G)%0
zG`{;!UK-9F7rE6b-9%{yCE)ZV;9)M<H7w4f&=3kOV#D1fZwvn|C5gwZ+dW^mYv=tB
z#cF;33J>=0*_N)_csUO$5L`)D@k$gFEU)36)4d4S6RBFh9M=~KM<UK7GeeNZem4S5
zFZQ3(Z@A~Bx)S?r);ujEiR-{Sj?8&$S&8VE;D!|}Z_{AVo1<U2xzXHu?-e<(@gt-8
z67bCRsPV7mME~I_-w`Rcy5uNS`Va^H^jx1(>5sRFlQ-Y+wa;@7c-*v!Mb(8So;zhm
z4l0)81)tVh5B_Q8B_3DuNYZu>&7>_MjoTsPRyjo=hSZ8Zi2%31wC~O1vK6B8at$TP
z+2=>Nxh_z?=0^a>CEz_d#PZFtI=FQ5rncLtBM@)OAN?po9eSF>pLuB~O0PcjvVt{e
zKKHG9Rs?)27Uk8(FV5MU^aMN`qkD1CWguLHBF*%BO?zUL=QX?EW8&6VbbFBBYWh>R
zbe7WuO@CU-Q^2?Jp0FH(NZzjD<_2gqGnu;6;fMcAoIZDy;E$l74@NUMeWEu_a2oJD
zSk^!f9C1%rmMzHHPeOn<wTVK8<i~lDaIul%K&*J`l{v_4A^AJ<9R4Q1BVxxiz6A7_
z^Z2Xw4iMR!!-9Pj6Y5s(sD|&72evWIX`#E-b=67USYaN?cMkG&rwaF8LB$2W?gc~2
zyHnmIZ?VFJ{2jTCzp}U^w%&@A!MZL-6>-7EcWXLKOMGi*XACtnM4E}q5tP{UB6T8A
zaaJnpAghpjsrnmsEzWm{=&1FSJB8Hd4YgT`@2u%G87c6cHG^NHNu0W?M{fU)JRixk
z@qFQ0d3oO3seg)J;0LFx!r$==51od{r|+TSKAV}<BY!|@q=N6o-?Q_LY_@;Bi{w}0
zrvOt$fIq~3g9Q`4Gg(G{?{#**;>-Azg9WSvlD$H5N;kOOPEBClrs;oj#7K&4<(Ho=
z`lookom%)ZzuADXrPh^MlZOJ}&-fZSQ2>0z&Oh?|l3&BbSxW(|G$Hb{WSPe&fh7x!
z<UP@Y5>yuDfc1|6>vw$Cz=Z}6T>iAmAHQipZTvbnl}zKmpua|TERvn)3i_b$g3@;}
zN$=GyEZ1BBH?+SJqyy6p(*0La_u%DTO$n>`H`76Z<^3Z+)&(Otu(I%M-x_1dad169
z*Cjtt%!6;uJypCctOT-jOc!=&x8U<R7k6Ff2s}9!yyIK5Xe$r*<Vz)6khHkJPG-vF
zT=|=46S8kjq|oO*gC>oicHjv5JD>MVd3m%W`6;p@+;mKI!ZY8dvyoHuF*Nm;iCVez
zQ=K+gy#pbpyi0krKi_d4OPThzl(Kf(y;4N|nVd`QgbUM|Y#9|#RXhE1$tc>5?GObK
zIw5|SDkHP@_(OaZ>@#Dqi-^vt#D9sf`$}Z5e>>i;C#&~z0pR!rWu;$sc0CpMcmko`
zMsKns^80>-^oF{8Wyl)Btui&2rBcM@{}J`1<MI=0Yr{!?9hX1k>t6JM{{>l5%+_VI
zk6gRUJfkHY^S!-?9dkO;J8p{pXxk)~6Ilmp<I_@m64n|P0lfxzy5;+x9lgsB*B)jq
z0r8Og6MwvBx!mGZ-)-Ks`UkT3m9OEc;X?M;p4E3=Nr@nLu2jC~uC-R!i-*mGImSiZ
z`g~%B#Rq(wBBlQLVqx-pKHTCKxm2p7_N2*z)K7&OzRm(873#&ZzY4ut<q~}9vQsWx
z|9E#TS8`2c0rg&9FX7!*fi~inVFS!Wz^`8syNFvWuN-0C)YkBS2T|t}s=#|a*_-X#
z%tA(>Ef_a*lLNRiGTNRSs2;vxSBeWhR+;r{h-6e-KB9&DEep&&r$y^aVY?DokQQ`g
zf3#V8`J~*TLGsO3?}E>6e*f~<h&xEQeBdJBJ)mJDIRvzPz}opKVmDxA?j0cam+l9M
zU6jiW0W9ep=!$V*PVek6y~{CUy|eRQokh!OBZK-Ddt1ye_>%XDm!He@^?gOWe5Qe;
zTYn!~>$`+Gy7h7(w{`1-EbkQ;!yz+D_1^MN^j|*7!Lv;H<N7IoegEZumtFqNiw<c&
zvlcS3o!BvYZrgFPw2g2R0fjln&Yw+TPbW(%)`rSj{tVzULU&|Lus#urj~xPBh@Bs!
zYeRRZZCwK-!q#axvQLuoZR!=cijAT#vxq!kgbj`$_VXQittXH(SwwJ%kD(;g)*Dp)
zHz?a@qt2L4*Q+{X8uz;CnEW32rv3Y|^Ba-$P`q#<zuYs)H6-zxd~Sm+PqhUR&w9qr
z`FGs^akS@%c>`M6<GMN;+XJvxjqvDRjt)-3nDvO?3bg0ya~NaP2Y`p-K|-y2AE4Vw
z;_9~*Y33`uS9N54pPT+ZRDaLt1|G}Gb3rB#A%XAX1A!RNCQXzZoMf9;1Y`CAl0QaN
z9$T4^spm4Mp1fA}N3P_tYEo9k|E9|}aIq3}f!Sp%9KJowJRUVuS~Z{=xD7f!@#y48
zb@2G!PCk{X$HLsKYvQVw3=FS3Su-%K$SON0U3Tby3&Vbbdf71Cl~vEFnR>Ee=v|j&
zE?3AL*2XbyrV?9#Ddy}iliMS-!HOiuPP12}-+o_Kq*Qoiz{>MC_Bbn29`$5aq}Dsf
zdXCUMepv4r^q~(;0{gJe?RWNYA$_YX4FO-<g3%mFCx8S`$MV$bYJT5szvl5%&W*Hs
z`y0DxXlq{WX)7So)~ng>I|u8Focf`%EhIY(`le07p97v1&AZ{r-P+I*j0gKNW?f;1
zHOGWC?>XHwOn7tq7k16@P)@F9%ZKvh)>VIc;(MAM0|@L`AMzjUz@nKiH>BLON!T$^
zq=8NE<<bmzg)m@G76Z1mYBtTNpO2E+OmIm#wDTk~N7~~dd7K%YKi?HOYFQZwRl_UE
z7n?X=W&*)*cyMU=&~YzCbXPxTh8&iMOSplr;^B>nU$S=zmvP%zcz85X7#;#!3q$4|
zt+~h|9j!;|zq$GHe1trU&REMs**eNnGk*C9f^EF)hNzIGIEv5Vhs&1A5#ViRd|{Da
z&U_oscLZWr=kh<F{{>tzYsM#ha~hMq{J`SeQ7v)^&W!%c9r?EzkB=1c6h+eF+-iN*
zoEhCAU*LnxUxIRq!m>tiBFa^Psn-V7Aj)FPJI|!*N;W)AWwUk4r&cgml+);|@4nOR
z!ZAR$Uq;geer<cf?3Nt4j(LTzW6rL{fwD_GQ7O~81!b2ePcfdm%#9NqAs$xDJKA5)
zsin5_<DuNyL^yXpTdHn)fcX>c%2}M()E0T&npB__-g4$-HWGS;H7OT0El=pVfd{NR
zb~>#<Qo}m6?!AV1bh*~01+vl5`GAbBRY)cs-j{&(9o+OJ+p+B{4qqgvZxJq;CCw@I
z6s5%4qR&9br;bF;zuV&u7c>kkTHG{rHti*gNXZEw*)XtFQYhNeD40s-b?RRhIL<NR
zXx9NtPP!wnB+tbLL{%W-F~rBxXwUF@`P3IbuT-u-;cW<Y#n0Q`ryjY0yWRKt9CSfT
z>=CM5r=ECFtPPKr$rv7L4bo$*#TNA*b~ALT>8oxg!5_m%nbFoZCXP$O{65mkL-O`z
zvZ$$fm@1L*ACokxq{8%#9Lx$C4#?U(VrSHoiX086>8gWX(0A~?o1nb`v>#B>dl!-#
zyI&W!yszsw#&c)Xg(8*8>^43-i@LQXVM?jG>m4b{W?OFC))cDeevSB8*yn<F{*WjS
zqu;n5<VN=$jEwH`cJd68(Wmab!|iw%U!<XNPF5ysqx%j-j_mS2n#uVxIg@{l?%N+B
ztU-WaGu{U0n^lvWeBm&jyLwMkWAAB7oH%7H9yRncSnJFdAwBEgDkwZ<o7F=ccx2i2
z$_uMXlmIXS&)ZB|BGy^Bu&wgHC}3At*>`>WJ?ny=kB|u}Q2xwGG^W%6_Wn(|<Y`RF
z;b<c5kllD5d$$4j65!)Q85gEysTjfE$Gj$q%m)&uju11Ha1}LhNh%e)CpUIYL7@7E
zvQp!|xXuwMJE`ibvXjDNtERidV~ppjjOR?ZZ|}U~@(t8^_DBF~7?d0I{54p<F0u>2
za;i!qM7f%D+_HmI(2$=W^sLn1tf{#UI~*hIaD=c!PUf!*=OUaPqxoU-D9sR)1+Bsn
zv0VyFj7{RI^_lrePwbj}LgE#{=JX~K{+8HI6V)UCHG|!4v)rk{am2)%8t$x~oo+!c
z@mp^Lvm@`mfKl*#?ALK!>f(Wqi-K0Szp5mBM%Cr+@Yjszj^O@5w{PRT;h}iw>m&V~
z4fp)jpYN8`I?p=a#ydcMdrsBx$c7-c$U4tkb>)AJya3`FKM__hkizai$qko8KPlvf
zCExzYF)s+OPagGxF#BY|3wGaL(0#jxc*mC(1>*}o&efeVp3f5|H&ev16*+=8e0A2V
z1*n$cpiG`BlS%wGoL{Vg4bs(&yOx~oj(%jO=fFqIbRpX@tPueMe}qe*+5m%Dg~yak
z!!+R++ll&|cKSS?7R1b6eO5ZA<&08$e{SvdM_)~;))D})cB(d%9j5g&nZyXxw?oRr
zyzosV?h^(+*RoQ`T0L1Vc{j7O_jMUf3rIJuhwW+K?QhjtnioTZKE!fAp)KWx`hca#
z+$`51nAUeC^UkO{#l1`RODH~iPEf2m>%v3S=gj$J9!b}dWX3cw@E-T>`?@KYV>Az>
zmfha@Q(*)~vv|<htfduO-%@L0Zp^#<8m8UEeBz<&hk}^*kMi(0^h%}da6deFFctm6
zyO8)BYmDauQ;KH#V@>9h*Lt{TTe2kIx3e~WArorhFtRNU3?Fe`OOv}Ml*#m-IM#6c
zlVmx@tlzM>X}GM#l51KWxw_<glC$96u22r$b)~ok(JEZdi}cg03h1X98~I!P)#J81
z@p=WMRgRe`auOK0nw2@|dn=qTdY88z#)$S95z*}}W71m*T0cS8lqEsQ7FMDKW%fK;
zN7THKaf=LHhLDp|pYpfM`)!hdR+e*72wC27BtUm@?^*KT$S%D;u8m{Jt@i_M;X5&D
zb+DA+iyOYpw4z1w3F+%PiQR@*kyWY_R)>#{R&({EIuXE0l^WF3Yor>h<j@@MtQ-fr
zbPlOhB_8T6`L=$JR_Ky#;mOk2c~n&;35^M1Qfir<U*cK3(m(>Y5~*L=Y11SduMgX=
zQjJ<{KTnrWac|8;=~6d$7A%`Via`E{m3*-*$)K*5%<;RYzbuL`vbz~KvwHH*FvnUA
z+3yaL-g?zpk}tZbM^;+vg8Zy6$LcR#rCN3qZ(c`8OZ)C7zF?-WTgS{`#cUJ=2v&3L
z6|~VtYVW&^!ru2ZV(k2J|8#$=4QcUZQv}j!JLP~zk?hdPl7nyjd|+hB;;Mk&G#xbD
z9a#+k((9ek2Em0}Y}53_j_vB_p1+*|H{wGUkO4PDngyi&-V3Dt-V3C>X9M}{`CkGu
z;3i0ZA0TyFUmyeS7J(8?k`3pk@K}A1n7x1Hx<70~NBdhPkJ{19>T)7^*D9^GL+r@-
zWN`t2pu#U>Ha=t>5%O)~E?C0s;@3TsRf#(d!lQz`e9DWTP&>@%xHlijLqst0s!li^
z@{Eq$n_aKE{3wBLb6O628ODY;V_FUyqN?@xN7|sQWcf1LrK=rdMHq`)l4e@P9>!2z
z%KW7oJHv0kCiEdb8AwtUZ|Igqi0bttsKB@N-6L7c>>CmN*2aeSb9Qe%c6D@LDm)31
zE*RbC4p&6?<%CD8NuLPWA~0lmGB~=a2N2UFKEOzSbo+s1u0PtH6NohkGfw733wOe!
zQgOei9nyER7G45MEI*w1s>|g8PJEd>H0Cn`G4HuD)HZ!#hd;xw-!y-Tc{^lXw;F3?
zIAh)kyjhI}y3{i~cW4^?DJ`eR*XEipfeR#8?tx_F5L8)Oj@GYn?=jA-9-tomp6Ix>
zq<fnzVNoB!tZiH_w95}xB``<FS$3FA=OY>4F|s{^FAPxsWc6NZmnf%(*20~CSdP0k
zyHCxaeKg>VK;j~XO6Ck=wC%^LE;&L5vPbV`;^!Oc)iQZ^_P5>W8Z!IatJNyNP-mhM
z4_S{10fb^)S!s*bv}HrE8VKm~V6~1l+kxt#Q`3v#@9eJ=^M!lZou1FfzRos@D{VN%
ztGbq>F4u_Z#=a=!BE(+A5Vlu%sk1vpjUVmmks$d|!WPT<jaNffo|=P?6<q4ern%R)
zQgw$9f2akof|V*R{z9HUj4n}|g_(N(R<Wjwo7|@=(3na!_-yl;Sj8HArx9-@KGE%O
zAmYH;%Ztcq#=qOZPauANN-g+BKTu2oiq88UAfGGwr^=5LPw^0nW1Uz$z6@*Y2s7GK
zV?=*XYE47xG^6PWp5m9(Agd(<(F5+tNIQdNXSmjAYUBxdyC#0gxyciv2XZ2F$x$@-
zwwk6?n42+EU&DFQ222Bq(-tRX)LYbhSS<Z+3m0xv3gaK>q7tKNAP>R#Rb_7OrHdCo
z^`<zCtyK>*-&hWe=5zSWY;+d=Thks%8AYcZA6)1zb4CRN)Mh(Ki#qrCegHWEK+O2W
z8o}>Kv`ph@*WZfVK<lVg*4x`}(UX|*XamXVjD?5I__Ur#8P&S2*>UE>p>dzlQf#sJ
zM$51xWB%B$CIO^&cy20_mXJ|=JB=nh7s34PXghD2Rg1bHr==D#{iGlPmqJ$IVjO?;
z?w=WZ-y8U*T}Wlns10{1;M5TWI{u3mDh$QXx{~abyAcL2&C08O#coPmT++JE%GH9y
zQsv#ukXS>@f<$UkJwHb$A+`Hk`9pqMF=`LW5u|8mNgZ}7Vk5zb&GzlwnsjT4DG;VX
zOFCc@cZ0=(jm+0csFNGrW;3pG2&sWOYb!tY`wm1*c-V9trGma!!$(<NJB@a?rwf%b
zscJpjJkz>pM$q>L-!|}VkY|JbHbXrt-(qv8o3UG{VpZ~+vi10>F3@j%_k2Zt*XwUl
zjk?$^(?e9t|7rZ6A!ImPSbwkIhkd_a_8>QY)I+C`gbTj`E44LE+jYvH%Vbd|5G^+z
znAQ$RL5(etVQ!gCdMN(KS^U&i{#_g$Ye)@CDnmkSnkV=0Ea_E9$VQXgA`|p|WHfP<
z3WV-AnsDufZ%m9_9H^>yN2W5?bGR}sDAfF_I{P@r&$lvrsC95mb<CR#wQqlT2$2I%
z=Kqa3@+UXw`#kJ{+CXQ*Ck-<tpDqO$T<Io6>C4<PY<D=RrnWpLGt9pH&fe%*ud9_#
z;xDDw;@?1KJoVH^tSB<6|EaNo*<18r({v8?;;VK=YxFl%DN<XF&R{%Wle=76jS)ud
zRW(F*SXGr_ETsE2EZ#cn^JE^!9nK`6mj<FPK9yL89lDU3`m=tRz(~XhIRnZu18!Nc
z1xT)55aY_T3!o_su?V%erutji0#oyP^<&ZrqUE4<I|`@6^0|(`$_!eiMI*FW+od!c
z;J4uO_>BsAWD$_9cPTxTgo@xrkkFdS3<<eNfwP6`QRnYfy9Nrugy4s$NM;NB0F?kL
z2w}7WY{$mf%-~w#O{kUS4B5AJ9q$UpXPfOGc<G(bRK*%WMiU~w9<JG{1A5^SQk*}$
z>Nj*!#+{BL#Rq(5UHsb~sbQAXKm9x__h}n-yiJ=D4=h58$eql6N%DDynsqmJg~=#b
zFL7(FXONP)d<m#0@Jv4}_L^S@Vn%;PkUnYEtVvxylih2XX}5J=Eca<uNY(ymiaoL%
zdq!taqYp#GXwCZWqjbh<dXwWeuIkCTa&@cyLYOt3h_2EvH+9MF?A;6ANRC1v2p<!y
z-`Jb+J}I2ekH!+WrSF4Y{3-nLS$B!&1<i^xNCh2a!rit3hio(#qM~*2DSpYl+ONVM
zhbe#5-JO{Jx-3POna6VnSsT*i$L`3#5PTP(!+6J+=;Hp?gH*3hW@1#XX4*X19{X+s
z5Fv*CT7Cf}H>P2<?vwY}{UUIJ5I3&&AR{(8e@Z-e5v%IOa{U)-w4p0FIL)W&;S;!p
zL*rD1?-zXq9wnp)CdEcP4f+zV>4mSbK%imUdy3G>bhc5c$Z-seZ@M~%Qo;6raGQK+
zf=gBKhBWQN)vYU6v>tG+8+_9>wU`#Y5j+b0-y;M2XxS`zZ(J!fo;45TtVm`O;CQ}~
zdPJX4k(mN*r0B(cFI$sRQPU1mZE%AGLBWYLfPs8FqZ!CI6EZTDy94o=ZgLq-0u!=S
z$Y}QKr}^%QM)No9$DC`8W^s!EPXUdmwQ9jSX<3N?($vH!4*Z15leR}}1M!-hzAZ(y
zr3$sh!F9rC3(6$89?b8DL_T4<u`c3uc^5P;XNZnso&LtF<cqE>@uxaNzU}v{lbd+s
z#Vbh_7X3?X!H$4Ds9~YYXEfV!#t(WIoiDSEQ%A^Ft8A8b_mBFSI_GbcWfqDgdM+d0
z85mLFQa?pxmg$?rjWC|K5j5Evr#kp$;;;-i?<NAe#x?h`?vW8%QYM&|5j%Au?~N;E
zDAJ+#kZZ9Zj?rdBVLrr4Tb<!M>QjPLOIypu!t-qzqOqoRiDoMm>i0I-C@E#mXe+kc
zhArY{*-HYT*m_o#M)!H|St*yTH{S?=i7WU6_p0Z|jx(lx)q3soB2$+lvRet%%k#=*
zSIb4~j1lAVS2<Q?sJfC2ddDd9z25zYqm{^*j*u+n-l9?>+EG~RMpTg$)=}u>)bm<}
z;F?M<lh37)u=;eEd}dd~u=9PeDwXfxpKG#G#3YCpzdlYT(ifba<QTZUGoN+`g6+u+
zId?r`Vx}18F&waZpl3lKhBFTmPd?$m)eTCYyBRH;Jk=4^xz&}jg{84`*-QygzazbJ
zn;i3-h#?JhI6obU;exk>#7ozEw6Ms^1kKkHfJDeAzyZqskhLRVeabL^!#g<tygjXY
z3mwlsxmQM1w{Os+@f`S7w|fMwJB7o|RtJD6Dp3SoMS9<7Bky(2P>P4UOs4sivG;R(
zN9z6D!)@f2@fs!QK|z{E&l!;ndbZL*XUF#o)*_~vP2B2LXh&8i;lR53!Bj8T$e#kr
zr&Wvh#jC37hcL>*C(uDOx7j|4exvr)Sm9Dq<k}~p5*wtMHb{SCLnBbBH}$Y=Q2(a=
zj5hXBz66@a?x+&oy==7521{-;UO1IORzKH;iqDe)kFF^2i>g^Zo<ei#s;~e&ax@?P
zT6J4aDo<z(M(d}jtuiPeL(qy&2R76K2VsD`IVyvt=jt~{WiW_0zZJE01`BzyyK*;d
zM<`)~It$>{h$I+{{#r)nlOTIiWS$xNngLOsiUrv@QK<DvsnHMN1i(E&Tnul?6Z@Fd
z=$Jh9{k6Pzf#nY3t)NRyjb5nppo6svuP2>z+~LAh@wZ8h7Rqplx?oJ=%46inZ<emW
zaZs?=Pczo|IAC`9N65f*H44n~)Y&M)@WjqWk%L)7y%k>v!?DIzzS$f8-_Yl!=w~IR
zR}JtTTC;I-zy2P3p^fk2h68%MKVcZnSX3ujTKS}I6<paR&Z4Z%9^eOQd$O(HNEN%T
zAl^XXT~uK8q>AslQn<KQZ^)^O<=w&;w%B?wna!1)GnKZijj7^Gb>6k49*sF%u0=={
ze^b(;Q}R<BhtE^n7s*r>yVq7?1{|uzaQp?nLn)`hd|Y(ZNFC2cq7jO3qUbL5n#RVs
zNE=5*IcNo|L}TPt4b%@WG3~cG_S<y(?FRd8mi>0A{WjZvGwrwe_S-o9W;JMhO0}oh
z36DzxXDMW1(<aj+NVmtx14bDmOU6hxGfdmn;gMQ{HH;!x$x<&i9$Nvm1#!VqVLin(
zvInJYxUM2Sj6{oo$}f<szkCzcvEhP=#J%-rQIW3)zlC#M5q6Lp)Noj+GpyH8moUt`
zs9uKGF~&lZHf}+cRrqtN5(4JNv~3Y1Rs16c!YZ_6M~5+JQ>u8W9+|ajDdT5j-JT~T
z%Uo!@lwW78zPFM&xEVIckk5b@TuqTw@r~q+d8?%zLN=J1WR?l3tDkG#nGjR>46AUM
zZWFpWjshedCpx3G>P6OxRPiySIds!1Wg(us`G5{V6M~*+*)AC~%=*1-JXsQJ2x_ht
z-HGrQzt-(<+$Xba9{1BAIGR?Auor@=-I-t~=d$+5I$zU%Fu%rlZoNA0X2(lGfT?Nu
zb6E>{YFb__i}BmpRJNEO(NnpTM@g!DB~?D6n_VO0TZ7%HDipU5M_T@&!oX3WYOr`l
zfMz+drRL&a3ECn@SBccBZGF=+!GV*<$c|w4iK{SaPuGz-*=joGLB}KcmM@(fjZSz7
z9jWL#E$@Oe8P59Ebksa?MKWJbCcbJ9=a>$t6Vd!5%#dx%T}2{-r;1lz2DW3~g`#Ao
z^C#Mp)-u@~%Aj<!C4hp(TK|1=>H!g!$E^H_{c>R~<v7nRl|)CMEl}vM(2eCih1awl
z3U^|;%%aqPDFxXhpH&8&a$R=N>h$G@2aAl<RutVgY|f|rF{0>HT+3L9UFxEhcn<V%
z(tbfEsfHvFSQwqK>Qpfy>MI2rQ~Sxz88fosZS&{zSVdkMN)_y4hOGuZYXc#8l#6pe
z^z+Nw&JQFST)g-pDc71yC6%i?y^Ezssp7{j(g!HdpsGK2Q&qh1cCszs$4B)v`sl+}
z_<dbrVSt=!64(}R$!O2`J0?;5bV)oz663|k;f_GXm+6W_Rqyz9zX|D~W_`Dxs?Vls
zij-1>J_#@Q!=L)eS|C~Lk^3ZDou};rE6|y*?&&Z4+stcV`dOFg4vR`P+SFTZ%);7b
zXtSA~<=>RV9wC;m)1OrMYi9j6)5Ac9-pN;28zP`y{0?-6gk^8%IXX?-oZIDukT9nj
z?WZgEqS!{xYh;b4J4dkmiSOn{{5FROvQ`vDdmspwV)GHx!<Rr?zFyCvJ)1bbu|g9^
zc$ocqGOrNE$moRMkAW~Sm<mm(`E32{W9PTaCQ!(iwYu=P8TxdVlf9bk)fqz>7xa;Q
zR&VIdgFf;49FIB!)8%&gmcTM|=t4$6xF7Ggpb7df43a7FAf+-qn8Y)s<RYmR1Qx;d
zQX6^5vpJny80j!M$9|j5=t`MWUSy6?{fbI_5h(nrESIPc&*D}~Ir4}$XB{Z;t&-?;
zo|)0{^CyI>XI6i0ez;PH4Y7_QcLYlCz9cJm`DU|ypJxx2f%I0vcIBxMAg<-!x{(h{
zHu5Cj`jS0)3(^$X*$rK6Ru6`c;e>&^lo)kCkNe&FZgaUF<2Qo^OXvo7(&NZ6adV&w
zEN3rKq*ene5i7JcLV}v;5GN639&ZrR$l1fBEvuT3l)_`#A;HBmdum(GN5Z$Z67a}x
zeS~G6J7344tm+l-^{&7%g*6czFd_a2A*)&|8UGE1ET6!iAk%31D*3Q8=v!$tZ6Ph>
z>){3=9yqNzBgeERG@mWP={iwd*oQq?qVFUv5;m<perqL)#|S4N_b0EGZl&5n)h9=G
zrP?ys_|YK22D<zn+K7x=hRVyO&RhmQP|J0z=h_7&9z9smPEayHvi*bI>r#Oxb|RVv
zS$xdcgng``v}QCvCGVDZ8}EKR4W>{cJW1UEkAzSQflZZmu+{agT)03@1?8eNouf)n
zNZBaSrU?5qCga{4h~t{8JG4&_uHEkn6r=4ZAGZK972m3xUm0!>$-ZpDZ8kKKQajTm
zJJV%Orbq2eCa<7Ll(UPumZz?K57EJ2<NC*U>*@(;(jJ}|zjH#J2=llca^AO1n6R%s
z!WPpr^StWuGmIwbERO{|$}(<KwTH41sDHwTA|sW*Yg4svi?L*)EC$s>jHYq&P`}T#
z3J$7E*oOtIUuu+c)XDc=_-3=Z;9z(pi}gV+l_3(6EJy8ZDRU3X0nX~72O~SodhVzf
z4#+=tb{pqTU^d@DgZ|chAW>`Svi7J6p9FfY=0kEMAYI%GQsQQchGOFn24i((t+wR|
zqe)K8NPi#V_XYm5C={?yeqG&4#WHWiOUHCF&E~gGPjxds)T8#IVi6qms=;M`l&a!a
zkeF7VA0L0m%$Q+%_C?pGq7z1)rX6k`q6vB}Rw1MIHJC=K_?-(RYyenXkShM7PM)JZ
z^CP##3O^o8Kjx;fMJc0sE2#8sS(vkDTYO>;4s1*07J^WHTQ7FFm)MB@id38I>DvF%
z6UW^sE-biyEqLf=%if(Y7epr3Afi~w>cV?y&S=)7MmMUoJk7%x-6_JE5vWjy0Kn;1
zgqH`V0_vtvy$bktpdd^pKBa5yke36ZOO4Hw$-JGbihSF{?~Ck3g@`k~H3a112+bW*
z#S^JZTWwZ_pR??fkAB}Oqq&i)M0DYl^{q}>g1*TSIb9Z+CRLnAS)kzHn{S8F#EuwE
zxdX(LxNyKx1PCl(m-DF)Ala2+sY(?u2mdx84j4ut=}U%(0}Yydl$=4M_Kj5WiL@yI
z25?PWuNvn_o9on_{7T@v2B7vOBZE~1nvE{ksl3YSa0Q<=<q10pbHnWhHCakB2AD;5
zp?r{}GbPuiVC)iCB1IBwS-bH(M<3d9W)isVbF-W<i#=wlTd&23*ePKJ-fyyuvqb6D
ziDd|xe^dC(-UaIZcD+W!<2?=I^CpDP<gY7yT6%q=0kllsLfH!Uu1_ojeV3->8P3x5
zp1tqR*h+!nzg?RKdj&0rtW8h;Nv}<bHopA7tW71dHXXVwp+)@I+5yROXEp{vmZe|3
zdg!tQ@i@!U$1k!h?O;$s*73xNGn!uK*;$s>sSYSv;DmZ-2O0CGzerBscB4t`-hrxF
zxEr0d6*;}uI^Z`R>@t04{gt=KY*PYBtRn8DEK0k$AA&_i7Nye;S(L;n(nbT7rx&Hi
zo=q=GZ;Ki?jf+(*O0_IJt0I37#ZDJVZZ^`xd^2{|6|_i8Msp09{JxLF)uHOKmyj5)
zP=neeX;t`U_4v9z>rMl?S$7UGKi2vV=({oAwO5lKcpf};@9EOOs&Hp0HioLd;59Pb
z&he(5<3lIMFUbK$x_Jcy5_a?ZTxu>{^Ps<cB{Nm_=;soBLfgI8sn1^4G>NV*&)=}X
z>zZJ@5%{aF^0K2q+XjT<G9g}Kk#1_fU1}~rXtt+3d)~Eey~dIy<O@~bMu~f+MExH2
zg}YqppSLsUbZBO%`qo{T=2>NSQJ0&AMXxb|U2F|H^+$xC`oHz^QC1lv`U9!UD%=n6
zc2=6}*whFf79{5a$_IRKKuIufSzvD1<*JLFmb{uqjb_;cV~K`czZ;*N!%DKG310hU
zc6~dk4!d5jQlOI-jHc<bb*$eIij{T4{<`z2mw}i~lYweR-Dp}2bi#MO1x%XjqAJQ!
zf1*(>;;ahaDqkn_Rj=!KDo@K%3n(PikY%M8=31(*Wr5Ys3LApue>FW=0Rt_kV%4H2
zHq$!|s|Y0{Ls-w$C0taHW^EhPqT6gVL+I<&9A1Ex!#_V_xsj9^c1q&cylZ(}>uCyw
zIpq^WG4i!Qi(7f9QJ(?o>qo_rttkj;+Nm5LsgSkWznIIE+qjRG3u~L&!UOc7jU7}M
z8PaluTE3c!PN18~zaT!X$>?FMEve#rC!;*<PTA27eIrjtLNg|B)>WhDvb@KU5GyR<
zZx(+&WFNpvYJG~+uW<Ad`lXp{TVzbN_kAR+JG6KC2wDlmACm+70pG|qr2DOX#^eJy
zB|yMwdH>MuOMkvSrPAQPP2}t7I>hQW+jmHv@{)|Q=yW2dR(o%hrcaQ4-p?mxH+_NK
zwBMM#UtF*$+}pU=C9?Rs+_=*}47;^bRl}fZgu5@F%JltoF-ri&dx%>=fk<<#hT>-q
z0#=jmw>|@k&;7p7BQO64C>&j`#CT@I!KF#*yW&f^6I&LH9pZGY1rnGFVTsqNwJ&C{
zkp@O&KO30u)(T3}z>LoTv&#=_enEf%5jt`+4py>5W&>v5w+`v>uQ%Q&Yq7a!i}_nt
z1XtLYxpXm+d)o-PdF_*Vk<Wsy>3E&Ju|U}<a$%$F&O)9w<{kogz7{<3^{~Qiw1;vR
z5}tFi6RNYC=hL0%<9QxthwU6h*v@6>uS6>5??L_dfd0E*|J|qmexd*F)qi^kSSM4f
zsG*vWbE5fRYv@}sXQz&$edu0tnkXl~5JeeYP8-!L-$MA<O}OJoK+WYgg5GVM_T+Ka
z%a{JbH2(6{)k2$ufD&BJ0*BMs#NzBwRXry^GD_S=u!CZFvkS5fMs1gNy(bXz;F-iE
zsx+Q!-yJ9#nG2&%b=2UK@rd!9$9R5q`+NC=yM22(A`+jNO1@}3-;OfYOP=H^{cJSf
z3imw>Oi*}YCZBXH!-PvDK(;tpu_@$!p+n+L)>(Jv*ICC0t?yLTm4CRKyDYhR6Pja(
zYc#*bz%w6XCLFnDWA!=4eYU0dngVNLkH`e~{)QaZ#QpLd{Rz*}yK`BSz9&yUcX&89
zIKj1$t*1-04@OH9-|m^~Z(QiApL^T($QUy^;e)BH0pa7&Rc+--{pv=oUmBu$Ji;yU
zPf50><Z@<(!n!ha)>q4FFsa76D7UV@jx`&_C+}l|p1-lunvO3Q^746viTWm)Wew~o
z@|`pH=EON523|QcXx&*_`Ejs3RejnW7n|{GimWN0hkWnNImhna+;5n^y>klCgwM_M
z@2<@)jhrrSpaba@<8fkgm<;%QdiD%g&kqQIhdK{IVm4x!mX=PN^G6M^=u&Gqbp^@E
zC2VtX@%kWRx6k6cnOF$g9*brCBg~_fyDM2!-iqFx?~aT%>pPb}j@Ao9biAMeMg7ep
zn8pj(-3(Tn=4iByCHb=xNCpJD?AyGc!$F%q<0ncE1SxygU)5pOcZs$uTDB5(SaRE!
zc@ZkqQe1<s0~9kp_Qz7O#n$$0@$NY`x+vc*m$JhGm!k5PHR1-y&lJOKw5!PU9a!*J
zTh$US&^;J{-d-{So9TOd!3U1!CBvn)E@&M(WjgV%QMBbj@k94gqjmjS5B!?!#)eai
zR<kkl#w6B0>DXq|evG{_B}%zJL3<iNXC8KZuE;Po<|EDnPaUb&CDOXO#Z(~u@}TM*
z8=>J~bin~=GM9MQcP|?Q)v0&IGH<UyhMI)ADC2>9g$~@PW|C{ET`qFE9wy-d<G-WD
zJxFD(GGRAraBtDw+*}*G>VPYWiG?_!d|it4^)St+iXT50gGsh#Dl=$Kya8K}DED$r
zSb3aaYMU7y|E`=v*o7d)I*DED2vz$Vfx6&b8_|MZa5<j353lpv+Pr%HO}@f&v8K+w
z4qFF9KAC3}DbWu{ne7L?<}In|7&#ClqvP{ZkqOZW|96yVKTk%;Er}*L@+c?xhim<9
zvS8URCR)<FY&So|SspJWB4uME@TN*0tx|1*MwA&YHMAXrb*Ts|{m_KH_hXIJ9S6?2
zzQP}(shE3<zRYUuV>~m2(GP$#1)SRi&I7L9ff8tRGT@e^!ZpzesUrp4Qw{<5*u#J;
zHmYCZyQeELqXiye7)PtRUWl*f@k<bE0%p!sMfV<z6svRWJnHC7vE<c&eul5`t;v9X
zio^to7yg}R;!{N52lO65-vsEnvN8bq03M5yUsIpIqFYnz`0Xn(Iw&lDT0Vh5{HIxq
z9KPS@442G@ko7^ZeLwD|V{fKq!5G+@Vuk<VdPNv)bU|f-D^eN1V4(Uw66{j@eK?%F
zvPjdly76|GYtQCmH=X!JDo|NqlmBGwX2?ZFQ>@TGU=^X^MXBP~8FASO9m09UXl~j<
z2h7jL!26R9hXHCSLgX0zpb(Bd{*K=T@nX_`7eSE|t&i}J6i<}`wFfPNP(KRN1g03*
zGIYW&wHoM_R;KXVD1)`krMYOT#)$uf459ke`PK-G3^+Q;4n|t4IN!?cF}*I)Cvy*T
z6dy9z?ui@-)Edy}-QdS(cYC%}tP^09QylzEzD-a1!2xcS2q4mpNqSNf9XyQ!zS`#9
z5uH6%{6}a^YDTF|@l^4XyeCcFDKeeg$tP5?SS((_bTg$KI9q>Vowi&(VV!2~N#b-8
zY(J1IK~vh*xgn3Ty71u&c$8?2O1U#S+A&@CM=GS_cTq{Al*w3&^K0`@>6JctCOElP
zK7A-Vv*{$q&+k^3V}y}qmEB8QILvMlD5}X7jOA{OdXM3$6eq2XW@EdJr}nwWbk^jf
zz$)#m88|39qW~t+M)TB=e6#&SuN-k>gC|lYWFCDFvRgf!Sb%Mvf&6?ox*!v3!^^}7
z?B}SO<hIA|<GuJP%95_7tp#PXgo4D4IPG@POY0?OY<{U7Iu3!E@t&`CuMo2<8`4sv
zcC)ek{ULKb4Qm^kHr>e&_#QKkld)Zq;#BeN)evj9`W@O4CQ(8(3(=mOh__*FO)@{)
z<B3opUxk6utl!C?a$N`qN0g8JT`p|mE;WtESk>Up<TQMnSPLJ)U$<c``VzEE>xo{&
zjPv$jlaYzeB&X}$Emsxg%WuOCMO6*y2e~t|RAwS|yaj#P>p+bowWnj0uz2e^&Zc3O
z4wxr%0@gDlI^#)KbjI)bpYMwQ=t0)4y82Je`hQ3FO){2T!4lZGFO-Y<@&OUM;*(O*
zp25cb7zy!xJUGm_A2SSd;+HzMFoD;6#{DPhl;4-N0+K&^fRv#+H<r>RgLs04#g1jq
zvs_{+1+36B`>ld!{N<}9yw#OfM|Sw3qlt9%<w$)e+7avI+hHR08O^@}8PS6{sy@mC
zo}?p<2gG07>X;b+n)^RjKk6&1kK|GHJvpgWc9=ha2q1Oaf&Q!&cC5eEgx3prR_iDo
zUcc2w^e2h8cW9(P;yju4DD%}MVQO~3Khv|(tY0O6;|1Rg#>cN`0UaOo?6-dosBirl
zauN|)dC*5N&%SIdeomHfvYe?(`^)kJoy9iXsB!(}x=nJ`+v;Z6!^QBq5O;|aM!JoG
zbwdflt7;^m*?8d}Rm@y7Jj(f=!qmB-tb$0R0!)<}4CKI@Z`K2v>DkMrD@j9*MRQ?q
zn`9+Q$2F_6CEu*;hkN(l+3S<$>5U(W!dMzXLA?bp)1{gt1>)Ct%igyGFS(GlnVWoq
z%-ejKs&@+w#=JkRk$v~NSYZPXHuDboHqV_{+j2KIObkx>J0}htR2#dyfP^Yust56B
zoTN-6B}C{2)?M#q*@fqHScP9F0h8Q<vg?f|R6-&Vl+B`TqX|}x)p=H~Szi(K?0Uh4
z;i0<32$kqnl*{MiaXNzkK`u4uJ_!6C8-6MX-vlQ;$lVC%0=H*n%-hXFFm4Gq4f(dr
z^?wO)e?xs$!{H%^cO1<0dCn@!dpDI~Q1W#wXi6H^$Xj`pbJAzclh!Qa(7k)lJ!bTr
zRQMMD9t?kr4UWqlzD9oX#kp%ps<_}R(SUV@gQ0q^C|W68+aLY=sJdJJKE2LUhHyH7
z4wU&9*SfgMrz~Gw)13uy62h>Q%=4!LWd*QLM(GWZ!KoM79ChaV_AR)#)}mI#y?3>+
z<{A06xJyTUDY5VR4u%IbOv!IZE@B02^yAQyLf}{(ZQs=@!ep)QLnFZb8H2tq653Af
z8*sj$v=+-|s`#QaZNSeqW9+fpgpEsWHOYa($8&ki?_I2a{4E<+FH3Z?2uPEsNnW$d
z!(y27r&fwtE}HTfOD^QyDm(!&+3!?h4&nxOP33m5RknC6h;!M6-c9J#dWhcH=4JMH
zw#*(M`Pl>!ceH!!*=GEH8Sv!D=%NBwc#s*tfK}-{Y8MCAXxH?#6w)(?)8T_vE@mB5
zj-<xDe~=N@H*{=X@Qf{FIs2!KtfZI1Qj{KQL?QgLTaEplNG7(PS-pryFiSM<Vw)p!
zJ@irPDLZ9`q|DRX#*}w`NsepJ#1iq5jMTF$J!v$}*7pRX<M+EF<;%pmN3Fo?4_eqS
z`Z+G%m{@AYCbBMhTA7)y*u*ltdy~Tv7WQ{dERzCV6Z7TAj7=fe;KnH>Irwbp_Utns
zT3}qjR+SFfcVi>4SLkD$#`5b+3OE2b7Z2Yx>U->l8|zC_xQ#~ZxzI*16Rj`ePxjf?
z(%t8ku=Cz5lyz4T=dS%JSMsFjd0eH#k>;EhV$$ZIi%I6o74(w;MUK?x4)owr%^2vK
znm64OI^3R#(?~&Ur?s_aF;^fV>b_aC_|?=})eNab&rOAMo3}0c@bEjD!|%2IyK4kg
zyHeDk7|x>eHOTHGl4k=&<>ERFH_{T#97i+w!P64k+Gj8)MXOGY9ASTc=3JGMo#3`b
zul56g8I@z$ZmXsTU8wzR%8T<nQ$IsX>6j)Cd)_GQ*7Dx&f)4ECS>2?FI&6#BPG^bk
z6jm@F4IB5;v53qdECfFn2dtg4r0{<_|EH;%Z;HxoQ;=A_e)SnPpvrB%8aQVaq4`qf
zdm@#pvL{&>V_uW?OK|+ygth#Cq`eJ%RK@lGzsV*f5W)>YB#LO%AlQgTgBr3yb73PJ
z*;Fj3R6(Ob#EME`SFi;PZlc*-S7~dl_S=4?YFpcH`&Fw&pehLn3C|BIMp41%yR7mc
zEd){a_dYXsH=79k_xJztdXb$wbLRQX%$d)eIrA+DrPv6U=bX5WIP%qFaYJ5tp_m)&
zv-<EG$=}tVd5;-lc&PIjs%LdA5avKAmOw(g*?Aqwthu9wiLGH>?E<Xh_VHU{Kg)jQ
zSe!m7yDxaI#6DeOV+vwx_x)P6`_Wd3#p_S?0n;A#Z|ZXQ?@nA7(`t)eNL^H;d>weX
zviSnj`bsREvMNt1@|xCmfA~>tpt+pW-#r}o%7u_;sjB%8`a@=X)AN<QfcHFp#zXB;
zM5=aIOrCp^&v<Rk7~{2vvg<!X1pUy6xlL=m-1-o-Wneo&kM>zYQ0vzj<TV8|$DZv*
z!@U%TeZA4p#OkIT7bG09M9{kl$C8BOS7ZwiU^G_Xs3hZ1=QQJyg-jtvLp{X|b(%&4
z5Dt#9TInU!S!FbwuYATC4MUY<V&KkD=VYVd6ZLg{U{I*@W}_irebpHaf24*{d4)}`
zOjd{1WLJAufhk*)alFe724lr1ImSxYoRgkFo}NG~?3{1wjEX%LY0U}IY+OET$dEjC
zJ_k6wFb}_8Lgknqj1^ySwlmdL<w4PAEiz5~KEuo7jBB!?$%DpdIF$s+Cy}(z@D6#;
zU_@9OqN3*0BdxBOf%B@2muotGkw=SKpp%i}t+7_y8~&vF-J}jfNOZE4H#UI9wUaNe
zd^I&VF@B?dqu32`5hiyZU6u7~3OO;UtfKQHI-Da2BO-{Gsf<uW@4y-Ayw!LppLn6p
z+ZJvKb>40?93Xb6^DceP8|u7UTh0%4&I;Tb>YQUV2$~e?3>pnw>Va^c(fAe#EgQyH
zY+}3}$*4cJp|Fla$%FfR#T$Ivj>OKSWu!$`^;0bp>l1JHmi0$ijJFEef#MBJ6yB(%
zO2<Ork`_0X!9H>WtkzTyvs5*Fa&K+M)mRJjmza^Oze2{SiA^-sDXfHfB~tGg_SqMx
z?ze0IkZ3}#O0aJ-54~O($ebR&G?pH|G|{HfnbOlVm40sp1lK2=V$9BxpT2YY)HvJ}
zJ74v;q%n|`Dg#+H#>%SB*dY3kAMAPI*Q=%ucSe;})v3O7YdotKWLF>Vkg{d#g!`z3
zXS=Jc7P@Caw!Zlk%R!bpT;(}fWn6X83%XY;250HJl{AV^gq^e3(@5BF<;Bj;CN_XG
zNjp#|k5;x+GiDDTK-n=erX<ukY9aQD+Qib^h8P=-29<=l60VIGujbT1^6yQ%dX3O2
zFpIEQ?|M&((I6K-h=h#hUF$B1iUMP>UuFHbw*^h7kfWRenv0G-P3XdN&B$w0C05-Q
zd(+1(K90S3fe5mIN3FwL3VBUP)jeh_H#=9r)HUqEU;EZq$BR?i=D%%kCbFy&UTcf2
z8YLW%%;E|UPV|=_(hm+;Z^({>hc~$A&7-uR*OP8wh}W|pA;ZdD)0e}7B`O_Ycm`g4
zYiWxr{i&W#G3k)|UqZ348%4cm1lW*t4h<vA!=O*qA|%b@9W|+Fve7tR+DJP0LTR|{
zIa$JiBj~R~ucrm_<fB+g_+gF|WBu_>4=9qtm`yjzE`5@mvdt(C6nTpe6W*64nW|R$
ztu@w;7Ygm?QOQ&u(g1$(ecRrTAEeoVLHy0=7NJDxaFVpQv}F`CSs>`?T=-+36~hQN
z2Olz#2+PoDOK2Z`!85*vdtmAIJ-<(kh~P!mqdFWjCFjW7J2RXjJfx!AcT)h?9n<r5
z@Q<qav9r|=YZ7f!857f3x(e!St5TDbP9^*_|5PcpnAA_H<~k&GQk3=jaSA50vr;@X
zzpwlgE1A5hDT@{DR>^3b!lFCp?<~4%J(CrXm9DV}49HvdsM4bo5#S*$0{pI>h~El6
z@=%coA#&$#X%(EsqFBf{m%Dc|$J~^>eYYA0sScF$cSfL?zcT~5{GA(oOn4$E_DKEZ
zGr5GuD#~ZySUnR(UUV)42}fb{E*#A=PkdoiToN2ue_z^2wn|v;QeM%k2(Bnq{ud?v
z|7k=o75`~Q!v*rolsim*nP|_DUuM=p@{59lA-}A5S^UZhHAU_X%mcmJq}D6@lTnCS
zhcG#CrW`!ce>6Vgrd<HcPD4@Z%JRKNL%NL5ZUl!x^5}`^6U^n*_Itros;r<ImP|-S
z<X3oCS%;&K@H;lrcd0Dc-blc=HM&5Bd=(8QA`UT~*^y3%EhZU}>j|Q9G7fjJ&BTX;
zDTyEP`nC!|v|L9m44CA6cHlz(76;Da?})$v{+1Yx1v-W7sNp0P?WG-Q(QiT9q;0dJ
z2gMcIm>%7OLz-ij{Fy9&CdnUPmGu#I5a)#GT4?O2IMeA8CsPk}zxb6Lp1!1*DLNM}
z<<wg+d(pTVYX3;if{t(7=0zgP2GMPq*a87%Ctea~SJ<PRubPt_B#vERw1x|I@<8eV
zE+id9|G@JGPpo16Z<w7<J}E+OS5a-h&L-NQj^yE7^d6lkTR?D*ALSG$$_I=G*%$rm
zT43oz<K%VIUn;LH_Nj1{=+J*pL|Bdz5n;uowt$j#s2C+cN%z2Z@Vpm#0T*DeDEC<$
z`gPOGAo|Z=H$BTf>x6}!`4}bH9Or?+;c}m#<^bDj-nV4|P&!f^8S>cg4z~5y+f2~u
zUr`mIdx1J>D0G5MvbA!KDJSnGdT`4g<_k0@!HrNtKzf%Ke<Hb_gYd$&FqH1F<I-I9
z6nof<{yoi$&q33#2aOjKafyt!Q%*Y376whtE0yN6-^qNu&K3qe5zUokBs5QT(dhj=
z=ffJ>E<J>O2Kx}p@8ZafZrLGuhPW!zT?=ma*L}>+>^*ww%235_-UYtW>bv`pSr7{3
z*_Yj*`@dIwEsJVV=;*-t7ef4;5JQCsR}#-(ca{JTxxdz)AKJh43EDQKneXwTqK{qi
z)skK8k>#)^_hmjx^hl-jh@9&1B1YmK4&_yVhh-Ls8Qph^+!g7;%MY6z$gzxHVvQ=k
zH?J|iaD-ittj1m4Jg?OTM6tdUb<(z=VT~<lXt~!2?fy1Awt!3f;|mI58t&cYh3c}^
z*{GalYn$xOEds`I*Zl_ubC!KE#pLu%w4squGG*|dZmg&)=r@OB>kW1<LD$>u3tH59
zR!fR4E}1W~llOeP&YRHal}o<53+7ONeX4};y(R7${S&YuBk};5`s?=5xIZ{w^@QyT
z{D=o{ZD5E{pcYnMI#Ka-=0y^2^|e(OT@3!tJra8qg_XVLP_QQfV~b*g<-q7<h|=jt
z8OH>3OmdhqGJ^8IK*}fiJtX`o32S45YO&JY^q1W-cOFY4%0FcQDdiuI5#$`DR`r=$
zA637B$M_v1RI;B}jkq7KkDY4&?gy&S8|=sV7R4m+2eQ)#e2H6tD#z$+P$cF?bv_~Q
zqJ(|UBdr#<*xt39IUTVu&R@6xQ0x7`7hkc-*C&~(tJ&6r;<*mBRt9qI9V+ZB>CBHx
z<A+*NEeZcL`%r71(IDqET-MGDeRvGO3G>qM4Pl|(`>;F)=ln?lR~Oh@CdiOeU>9a1
zTlJR$x^g&X$wxvFI9V!{*$Ov|Ra|N`2!v~KNpfOd@f~?Sj1rTHHMS_;?%4;ZweS=#
z(%WYH<O`wdj9nL6S4at>m(vNH4h7B*9Xp0zi?vxUnMCrxIafB`&LQu*$v$`ARbqD~
z*PF)7YGxM(2Jv{-W(@wO+ts26%WQ2l?2{=6rf=pLttl;bvbu4t3<p4Jt+D^BM6wq3
z%Qa9MOCb}ur%Z&m<fwGs%1h28YFt)Z2b6x<yFO2!;Ix`i*+H%u<g7qm!hT@~xuS;)
zo+rrQcmchcb$7JM2`TuKTb_g6c!^97gKOM7F*zo$H=cyAHUni3e}@DZa;qd2Zrh;9
z5zgtUhyt{x?gd+%k<||;<-~iZ#%u2wOV`=Ix(6275c+UeD4GRoS+#+qLk-8tTt7Ty
z>bJ15(<+*2JT1)qP3tn+V=I$#NUmOKIxeDS+V`s_)%URydLkN-6@9}aaf-Rw{yja%
zb5ksneT}8<_Gfct-Uu?Oen%^uw(Nn639!MKzxGR}P>qYt!iR$jf8-hGX~&0@q^oRj
z?2&hQu!<x{nP^-w>S}#F$+m>%y^)p>3pDdFCWJXP(0ci;sP?>#*s$TrRI$cSKtiuO
z{}H&3VY8GCb+u<p;7ybHl1T#@z>+>a<uF|m$=`8|3j~qeyN3xLwl*+C#DN0vu<rn2
z8S7$hRyU1)4Heo`g*N{<=-0qjg?tUON1U*9b020BverfmD4pz8S}2lSJn>wHOw9>`
zwaeQyzi3pIwNENLlIERhmUGCm3553_!gS_KL#0b5!V@w(PWBeZVwoz$>yFWPa%45q
z{)AQ2>X5<?66&FvI>?@72Sa<|t4?A*cg$E?<FYfI@O`3wIU%~88=Ky;Te%l<hjsyc
zO~56#=jRtq@p2!xo}$QypKg)DQs~L@r&9iun9Ycwuc+OtAMs>DWwQ<V*~EDCyN{a2
z(laPT>m0fAz;5WCu@UcIITP_lW{%yeYSPR`xU&4Kz;-g2L43~Prm-(=enw?0ojt+J
zcIjDFhM7ga^7TgJ5E@7JSh9zb?e%W?MFmsb$`2S<+_DFYcJe25^m|(8p9A4QQ|M?l
zFxydo;QG+f?;8!=SBi&@&Inu{Iyy68gpSTt<q8as{+gI3JD!=!BRBvHW?uKlKH$hE
zNq7wLTvW3%Jr=zLw-@{OWoG)`Xb~SOiiAc7^JO-VOJn;qpgM9@di|)8L6FuXiX!&E
z?4J5-?~8)jct<~DPOF#}*j;gZ;Ju2w105Cf0&iAK4(QfOWKKCM(+@^hLMsiZ(n{aZ
zgfsdaenKXdS94hNyOrg8g1Pl&69WtC%f<%gnaz8(ULjWKhofm*=nW@Nx<SPnq}rix
z>jKyF_ov)H6v<QInvvS}1&mka{?@(|tq%24Z-ua)nmhhXH#2v9;N^<UGEz}&o#?$-
zq0ZE7wqp;7a%inL%?tYuO-bh%=xbk0^-~Yl1vcy=V!<}q?AaPFCWI2*Z9H-+D5lYH
zN^f0Gqv0d=y@ase%*4-lcsSvF-?q@t-`fMj_<NVpC@3gtj%0c=%eP=loHHm{GT<*e
zI))GP)oD_7tq~L-VKkn>1s28V(Nl5B`Kz_djNF|TijNRm<^YjC>;1~6vRGy)UK~7I
z2^U^c99jG?&ON>EFKwT!_?_$uE2K7pup@sc5(YHe+${(whmdJ}v74>6#s3nQjPx5-
z;%PI1N|-nDVE4+V3KUDdMf0)8BfH>P0)i}|xGdjtyijQO2QMJ5(QqkMak5{BpUz%p
z1`j6mpa}j_#!d@yDXNdF`?3siD5B(;%4SC6VWUx?PiswaRHeu=;_|wqa+W)n6cc4q
z<<QBi@>VvDbjm2I%sq-XyVEJ&;~Y*%&F#P3jV>Ztt22t5oXi5(>Z%J$lv;H+T7T63
z_*FkSk#+@XQ%W<w#@>uyvg)y)!$^M9bJ%DQTsaiKHPAa0uhJHslGQv{wF7ON$XVsK
zHp6|Z&&mEfwfYSUjB27)FrJh1q-4%Kj1#;})u&sEU440+b`pC^D#cl(2xD~?2aBvV
zs-0AC0M%RjV*Q=&u%XtqlqQYUrcwqlHBDvQ2NId9eE)4jZaU;-eh|RlsZL`u3*n)|
zT!;`JdQ1s6-eRS8HPYnp+7Jz(Eq1?`onuYa+W$j3-ZEB+;H5H+pc_^+)7w;0YP_c8
zwcJlI&QjcAZ(7cr1zIO_mXx+delczYzNtoN^l5N%Q_XT<=@=`TQZ&PKA7oxr!N$W!
zMC@oj8a==-qkWdquv^ao!1-<357g;%?Fa5ONU(C5-NxtymR2DP8;#q^rg>7)C^bT5
zo=D%(#HUObjfI5y0o`^>*|?r83r#c!&qOIyi&Pm)<6h&cPM_PxCfALK*YP#pra;kT
zP(dnY6A5Xz&<+)&D7C;fRaYw5&wOcWwL6B@i-S-UA{|sr#il%NwEPID7!ka-s{FIS
z)f|P^ADJ4c#?M>+;haow^SW5Cs^*Q}<`1jNKb*@+%hESlbYHJQim~1Z?ar!hwcS<e
zA2+wxxZl|R(U|N<Go%dA-qTUl{8_9}y+qQyTXY6?^Tg*HLf_opMX8I@I8RnFgsak>
zWmB1Z-{O!f+MtF~aj?KFmVKFz%c~^qS!FbA=htlB<z==TDGgj3ikAehs&aqsvjFz+
zv@Za_(~K)H;1|#f4EPDZTG9x8i?=kf0)S`mz<|yp=r+@LnXle0grx2jk)sy7ZJy7J
zhSTWY%5roDw1E+$@k`bPnd8_TjHI_o(W6%i_~SxcY8o1P2eJv5b9rh~2i|Qo=HLp&
z%Z$jwIDD<2xuaunbX6y{Cbxn#>Y7APrje?OKUX!BMX?Wx`|P!kzKFT?5=x9PQxOHL
zji<&RnvCyM)d=n7WJ$H?0$tmA#Es?>FTrZUWtww1N;ztYIuh`&j2=^+GpPZ|aloV^
z*?Rw!{Dnrx@HS5qZUp$B5y-XHn#BjD$7<<I(=BIIB*ofnKYWlOS=T8=W^@}3gM~n(
zf-CqtCpaJ!?>(P6G}m}o9svl&3xgwMKpBm46o_UN_d!}a-Jy@NIDb_vXBw})UfOOv
zz0C-1fuwYM8J6IT#uspV%fHrl-K0ar0?cAO?UEv;-4AL(c{s2cX@3pg)YMS)GeVbL
z&Y#3oA=9!%na)DUsYv3`kfRoVUA=6E?TnYCP+B773}H&qJZTU%8wJRX=?Pg;H&Aq!
zNKg*3_F|2%b^{jZ1Y*6lZ?$`;q!N7rdhO#qS2&HykZqxE`#AN}VO_@pqF>waGZ;#@
zfSi88p)*bQPHA8@_b|cD<T^efv`wHdQxRn?i;9U#+}@_L=+7ifMu1uxy5zzS5dzC%
zeY%1~Sm}kQr~<`{jmGs%eZ>c4yasa+t+JZmiN1_i8Z}XaNv<gWOz=r1wnUc@=8KG6
z>T@58Rnk9)*)qO6Ll2q2Y+vg$N*K<tHUok0vO8{*rqkmO&GgTAan*fa7K5wmsBltb
z+*WnPC2bOVcy;Y4P`KF#YI4qbW&|>d_XNsixKaxDyR^bcJF}}SWt1hpL42i+d0zW%
z%KBSoiA0vtHmo+4MuRY=@9+nS#MRYx<_6ZFDMsU)@Ji~u5CDhzc2?j5H6P?t1w9|g
ztE&Xu&3#Cj3mW-kDu`VX$ygd0>55(Ew8lm!Lf|%*+bOysT6br_i&N}&?uJO7)=?Vb
z^IfTJq53TnxQr7#+Fp$IPH~zb3Q|ZN-S5x{stMBfC%dDD7WhsR{Q5cSL;OVb1HBG^
zAn8#ak$|s2$V5j1(eN}{MK8z07*I2%ys=EhDsr48^9O2X0d8(+eG}jXwLB`86tqJL
z%QK5cN*ZN>4A6(%>HNt~te0x5pq6R2uIzqBvFTLX%-B@fV+M14k*YLrS)tGH+NoRE
zGxsGbXs{9|A|Ynnq`KssLOKGmxIplVf9(~_hf_c&X-|9bd$2>WugYO`{erZ+f|ttn
zy1XrLLG%@xPMBq=8j!I;&a}LPX?fcJN~-XYY?Qay*YH`oQ!V23!+f#J2t02;aFI$N
zIFiPi$tgy*$Oq+bVC>l1kAhAIZDur_OfJ%bTlsRXyhT-~F^pBGyrKy8F<uIh+|GQc
zNH7yQ#@lzUr1G00Ilto=ub!XOV?0L}D}gcpJ1pyGYe?z;3(In`PdyQqHHE8z|0$NG
z@n;9Wdb^IE{J+GnHWb6Y$HT8y{e^~5pjMB%tNXIY$FI)0^+foU-+He)e8ce(tViGN
zfnXh~i99XWvqjQdMz0ELg?d+q<P3_%#xJTgzpAXys@p;~5R5=rRpA#m;+)QJJHMuN
zOiuHGG&mQp_Ur)5ia*pH%i^qGA8*;!^EH+=^dv-Yu1bPsq2ASnWz~E_mqhaWe4((c
zr_o23A@QGMS#AFTmUZ(9OZPuNmFl!bAM8(;L^P)hmUTCBY;!Nu`apzSpsc-8SAnvo
zndNJF5fAdjd?4G0CfGxU;B`HqETlrF6<fXZ43yQTp{(mQwLn>Kfg-*5=OmPM&{*2f
z_Bg@&<>X>kbe<uT+c`#Ku5wHV$U5i%S<Hn}KED)hGQC2t`B`?_=~(ffB!57&FzjtM
zAMz6NtaLe3>MVt3*-h+L{BG_yFFl=d9ITZ-Y%x78fjMI%8P5ouH7x;WA=H@V`vcop
z?rJrhC6i{eY~`htUKU45Tx3L_S-#b16v0X+T;Vd2Fj&r#V3zW8z^ujiM-TBwfmz#>
z<BC9Y4=`&k%foTOtjCF9)-Ox}v(_>L`^m6L67~`=0cMrq_PUti&GdcIbNEm_sKBft
ze3{Kx2$*#esilv^@<nKEx*~`@2bPs5z83|1i*Ixf0|+SVL!hkpfwJBK%6bbZYnviZ
zWKAgq$`WI<Osx)-^+prU=!<FqYW00T0@W<Dxx*~Cg9FU^@`*-6NL8tPY+!-eyf3l)
zI!n|Ryy0hxS|l{|4S?3e+Eo|0iSM5VekiNd3@?9xf<7@Lyd)u5s{5dQeF_xS7RVKb
zeVe|<q*L&H#n*}6Gn?NNqdk&E>~xhgd=gtEE5-~3YUQP*#EHh&Kv${)QbSk=x?0u~
zu%7lnZ}^B!Din$x{+=jo9)+C~=p#io8lS}150eOUIKroehJOopzBqE{uCfjiAD?47
zOZ<d?s(C!&{<lb8G8MKBeFKDcDSIWO;U)#4eS>CUCf|erp^aA%T9y93ZQ*tJ-X19D
zFA&-V_)>1#?T}f%!)Pc2Y7+G94t_-jlK~}r<gQ}I7Mrh3!xt$Ov_(*~=7Z5Pg{E=U
z|AQow#@xCyiKG<?Og6(}=cWV;0V0ZHRqmL*Jc(z;`bn^&Q#9UDfRrLEAnWY2ub!%>
znY&+Oa0!mJS0<gC1rM2*#uU&E5s5SuH9+Nae;|0zJlRYvk?#bs)&QPEbgaQ7fVI7L
z2?c>Yw2W+jG(}MaACqysRmD9nsP+~?8f_vqX)6cC`G_16MN(zZ>8j#tP)!$6)rN8=
zizvXKoZo$@KqC_EO%bIP1PS_os`Mj?6kpbmn%BM8_E1b+G8q|P-jJ;HX2#NF(}PuT
zj4RRA33TmpzLNFj-U4k(19z)w5?ymTp=aY~CCYI@7qs^xe!3h2u$kXYR0C{IipRm&
z{-$6qn(N);Vr**#W80g=*u2T?RLj<-U~FpxH>uo@gR$w{kIzvTCGx+X{2iF>1N^!g
zck%VQaetvEmoAtso`Bi@_;eCxquEa)9WVA8*iY{Uk&+2+9`n#NZ_~&m)OPPD3TnIM
z4<cmh{j&6gu&V>LMV}!qQ&O<6>E?yqDMhvL7mJi_JiHfKR7Nh!(lSkepY&r4<4WRd
z-+-^>X+Ln5Ty|=N{*;}Su~h8hGzPL2uAhL`4w>m&*pvdT?Jye8Bj1Fe6+J@=QEmfq
z91=ZIU@K<(8~tIX|6p!4Z$3B8FPfx2HKev*#*sj3B?ThSLiVDAs+nb{2K#xNV<Z8v
zb`-iovpKzdwSJ`yxtsuiwVSHS_i@(I+^2j)U?N^BZEtxr39fDOHb<+<qjN8$Om9)2
zH9f$!SPHl%rGfSylzS*iRr9_C!e$>AVH0v)rbf_knrsV~uFbM^qhYCP6ViyzX5e_6
z5m4lip}$$YT6!foQ`U~#%;ufUgFrT{Xkctc<6;uzzLB+A$y4DZwj?OqPQofC>w_@G
zS0pr<UYZxUT;@<;>6cg?stshpZo%~Q4)c|}i4fhzpJX1UI(JlQk4UB+Yb>_K%j6=H
zvzf~NT?*tyY|dE7pz%vyZ3Xv8Y}Xrh8jV}jx8S)H1T}a*alv4NajD&3!*wFj0}$yT
z;JL$aq1uwqmB<3mohM<h&`_kk*>r!QN@xLLITh0*OI44TguhJZGO%E4@0qX6)76_0
zy@~c0rc=Ck)j?KE1*%DdItN$9?E;TUEfusjgH2=M5*kN5ReMtKx`4a7cz<Oxmko8+
z0<_fz`f;1Ls@N8!Z8fDd-6|<1FW8@eY9*02goTTRKvDu}`=%SxCZeK)w24q4$W~9J
zO&Cg)5gnv0%4Y&;+ko3A2Wi<1Q*SvAkqM=V1#%O&{c0ZMV((CaZZj0<R;58V9%ASM
z-L^_nOw|%;I&wz6d?(gECKdTkKyTqCI!qc8=<PQ}^*E%>66l+5I}v?_gw~6;A@@mg
z@~uM^0M|lTf(#5!HF>qWL(+;qMigmqrzdD@wWE;EQdpdH)|~%NB&V@BNnT-bH^4m_
zi+d8z0(+Tex;xY!hHilI@T9#00}y*CbV*cRc~P0gmf_`XDvAC`;t89podQ)6p_;)G
z%Mf3Yax$4dW6VZ+92<=>nIWCA%<I7IfgHxN$Wm_;pcuoO1_)%Y?ZSTKq1XfzmjIux
zx<&>^;Kx0IxT_{fD*p)(HyI!f7>=8+wd_B1j6kNhcu#;M8^$GA9Rp#5J-VwPS5uI<
zaJ?SzZ_u`bxLKdbud0D1>3}qD3IO*Z-^@}|WX!LZFi9H*$9OJ(X9Y&6vHti(J=T9F
z&4-}sKyUZ+DbSnOf!-=079jF!YDw*<BUbbP-mW5{(nAV@6wqz0WbJ^Eif;sXV}+co
zs?El1id5OgkguvTBCb^V$|Nim{Q))ZQRSlF=o(So6u?a;)GN%_C@?oXyla)<IER6%
zmgnF(45?{STFn@O{wOB*>=icEYy;}1nX5qkNJNdbWee8khT~+q2Z2E0KCv?cXgdhx
zrZ&Q{Ti68))OLjfwe43>o3q8f2ly-@XY?YLiXsd22nwnCV3}-15SIsYSYwY<Xj{J|
zVY|`zFR7X*9?X$!&S6V=SFjKWpnPrMlxTs1+vGkg%b$$7I7$>UMg*zmTD1t;X&PFa
zXBVF#LJs%Vw%|*nOe5D|?`9<xY!-m6(~HWoO`y?GPgh85?dB_iu+7Aew9WFp3wtpx
zFO0dpO&8j~1*y=6YS`t+EaA~)X?{#;^fE!b=uEoQzAH(N#*4Mv%ibNhUB-E7bUXx7
z_@>fmB~HO5oFkp#k`P62I2(UKC$`x6ctr>DNh+}=a6ww|GCPmdyVRTo0Z70-*Q21B
zsGi0JQ>rG75j#UBqEr&C=;B-g><%5ilrP0NA#|v1cxu%z%=vGz{VSjsoi8@Snb)QB
z3J4PzYfD<NcV)w}Ww?WVu*NmyP-SgeV30ioa(&KVb=Y|l*RwisI_YGHTkaow4lDZ~
zeXvu6%j!U{l;<eyG7fhATzBTi3wqb47+#6we~$8>&+5Cr1{*A6)_PCLc46kaFXQd3
zpC|~d>q4y3mJ{p`O>>$~>1m3tIjV3aSap#n?@zNg-pf$O3WfbN4o965ov?LOqBQQ=
zWjyp4F3*su<Z6VPar>-;UG`wE$2;^H)+r8Q561hc%XrOSk{$XmEm&;NAw81yCzBQB
z*ut*vv>)RfMD%NKrtAxsqbjOWIOHwCxJeFv53neqBiYaHolF7&kANc(V?5woJC6Xe
zh|Wutyk{1rIt!VWYL%1+9$KPp*J<2U^k`9A4V;A|TiyVw&a<}<j>owoEOucyVo?vU
z=ApVtR7@Z$UPygAZdu7-mj3jQXqe*NutU?DBo<moNa>fQXnom!>mynmxvG+9&(za!
zpK}H*78%dCucY{Amf2_X<2$ok6FJ!Cog9&fp59AD@mojz)<G_F?~Y?%9|KD!hL+F>
z-Y=tLLJiiI%;tcBR@I@(t;Z_skEP4Ap=b&BMua-N_1Uz*V)KyKKy@@16`>7Eb@U!i
zYG~E5cj}woq69$t^`w8Lm9Zc4tn7L=dwARXeodS3(9|TX<6BKF!VSD}3FW9C4wOQ0
zW7{wuU5%Y)4&p`Xe1=%CC&Pk8?N@xn^Y8no%SAQ)7%3A8x=O^_xr7L$H2GC-ox6m%
zF{H#ZG#;CCm_+K2aM69l7ic0fHNM5#@aS4IG=I<pSAb24caXoyUo=%Kk~XnCn4xI|
zNinCys^yCI*=z?`={Of#<11cW?S7rnn`S)B`*Bclu~0`9L^gs@rqpQfkuVJCo#qHw
zJf9_$_RIvqHA29(k23YQM1-=*z6iO?uGMR*0bjbETZF?A7$qsCXcW(%OZ_cd8fSp2
zqUg!0+aoCU=BNtxZIx?LepP;HQM7jB`RzoLNLZ(HSx3#{Z`_>JA(H!zheR}04TsjZ
z(eRw)#uVtJTG=#H?giyO|E(b3B<qb-{ge5lHJN-of2Nc6XGCR5_ovPODJyMdye)RC
zFppxP^xz=lWm!I_hdTSnQ8BkEA6<(%f%FuTON^JLjV54~cDe@=qwyD#WLr8V!?@q3
z>5KrcePJRvI4|BN8Ck2be2eK+<Nh=m^OzYC^mqbGbY&w8oIHdo#+H7<FE5oDjbhN%
zJ{U-hdOI5>#Bf2h1Hq~p4OF7W+pZM*wwReP{8x$zF|*B^rLOc!>apKrM+p&&iS{w|
z{X5wBk#B_I`wGJw!tm?iNqGX~3&oCGsfS|KZ}5&x%oT2}^hI7O62+F%b-a<KYB1*<
z&dyL;spu2TX*!vg=dhkD<|X5;O})gq=tz8k%Qbte@60J+Pmu-{-D|D&7PnA@z7#=_
z(n?ha=`Ek^6C{ho=!)mBL`48zzL@?eRHxuWw69}d>jP+eNYuJ{xK2h=qFKMs!W#W6
z{_*@}`=#E|C49*AppSD^%`nyHQn5}{w+p$)3bU_C7ZwN_)59m5;M7>>;D4+7KRt}C
zSw0sXIVROybNp%!J^CM1vxEK-e!r4JpRlU$a!k~ts+UVuSK+VfgdKABK++U4dS@}`
zB|7T-Zk6ea#KN2PQj1mUKf<E=T=caVNuS-GI?`p7&nj-0aXw4N_cf$%wJwi->vBC&
zysC8jwoWfbO%q+iP{A(EBAT5uPpMHog%c?>IYfPRo9X7h(#=((_n({bwajyR8t{3G
z*UBUi&tFRtbbO8*<pZzh(0#AQvg7&Dz0#e08jrNY{+QTSwPk+5u(EM~FKLbE2#_Sy
z>Y})+3cK6ZoALZPPLdq8_)2$1ACa9&{$nc1=>3x127BX=Nnzm;)}~12%p)mlLM3~y
z`ii1cxrI-tJq@}x*J-r0eJ{>XAy@73FaB1pdpuMmYoVOdR`(T=hle8Md(rE%c&47x
zqJNLP!VM72+9u@{$8uXqm9-oDWl729B(hPGOLSIZCXiL~O^To;m*3&?40*aU4awz~
z!U7_>9F#@V9~r#_@1*3CaX3YASwV706~9QP+Ec1{|0XTC+)4ASd0q)F8Hcsp(!Yvl
zHq>$3n+o@g<=f+v>DaX@Wi7;ve1YZ_Ax6T<t|&>?GrPNVc4}{>_bwvDByOmRtr#WC
zRC4<U9xt>{HKd8*I+W9PvP@Sp2FCE_(hrBa>Rm40ZsHAYWO}rOovi?pO(l{|k92q|
zZEL^(e<^VZV1=7pqaLPz($yb()Q5x-<cgl*gsG3s$uK4%SJdr<sgJ)U!!ji7^PlT9
z)yHGWFskN?Zg9fX$4`=BfTynLb55B0xG@=)Ct<&E!qmr@WLTEeVXhOVKF&#o@v4+7
zdV>?DKKdlX21(fEPMG@Gt3IUeg_7UdPMG@Gu0DA7s-B?fp7qAhdEU>tmnJbJW8>v_
z?7eL3<r+Y+*YwcQn}V6D8P&ZNkxR8an<QR9q9-KQw25Alw157eq%B=4#Ap7yv@t&p
z4k(t#%}C|SQ0FOgGt5v+p|O-p(yJn-@^Ob+3+4IWOfO&=M$uZakS6@sT~A?xdZnSu
z`0^N;I=I(XZg;ZxJi(1ya|)WF%w~$k5iOkk-ZCb(`(i&9L)@)0HcCSC2D&h*D0Y`O
z+de{dq^o3HB<(JPR`(Mzsl;AS`xr|N^?@2ge676<A1+WM+-7(>0y~O3lDT#zAiK<z
zod*`5sbdIRpQ9J;pe=*y0`V~W+!I%4_6_m4F8e?+S^cK{Th?v;a@rPLj9hi6m^qV^
z%b7(9vwpHyEwM&SdSBk);`-q_E^}9v?yN5_tcu*5#yrY>It(@kv#Z^^>OF;l&U(+y
zfy?VXvje5|p1FZx_G74Zo}h(yT`&8hC~rMs{S!ef))!6RoPDwEmA$D`Xj3|An%3LR
z?grL6xqN0WbG5K?VH<|kh8<#i=*YzT76$GPMGGBMF43HT-z?q|7!!&X1d2n^J}71!
z$uJrb>sZFO8;ws9vC4Wov?WhHkY}vemlc(LY2_iV0W=CM653K3mES6BS8Oic>A@d|
zK0g-v^qbI@bYsPrS+O6HP;jbBq%bx$6rB{fG8FB{(Jc863sHiBp(DMF#&ohY8#{xg
z<k2s7aTWI&hgVr!j1~Xt7aJyDr>d_n`^8QXvc8ZRv3|yi&->2FDBT{*;JYskplaWk
zt;&z&x|EW|+=<3!g<o|82FFCMWl?&=c5y(BWYE~Cx^%U>i?rS|+Gv#L54z&!H><d6
zQ^5i>3Fwe5WgjH*Ofo+yRs%*bN0G=(CqUeVT_o9%^pAZHl3GQA$e~F3DH5YmOqh{U
z7G!y;rQm{-Xz9oTGoy;j8CDys9I{VgJsoU64|pTx{}d8$+UQLi(_Cj>k<BpUw)Htk
zjMK%w*7V`7@D-<p??MfYE2U~!%mjziYuQwD%1t+_`=s!(qoY+)x-&99&A$APtgy-w
zYoTZKm2O~&$k$Tpy2I?Y&pL>t6sp+o!YUn`Rcv8}g4Y@=Y730nS4GBs8|uuPn}>lk
z`y|foMD}V?_05lcB?8vKufSNQ6bQyL<Q;sft&D?`f~<~P30g-`j2oUE%C@I-OLiW8
z>Z^+{pG->j(f{Vd%KeQb7tX+>VeZew8LBwq3a~@&dqgftYZJKB2C07Ha%b+HD)+ue
z>=`*K@2Qe^h$FTb%GQ}z>CjGz8qaV2RQCKs%7w%_?P#d30MuY-U<d$(s~)zm%O*Qz
zzf2i28}15?KTU&8_GiyX;nWmVDRP6lZ7ow!kAErl`xkxD!LnLY+ET*<YUtP$`jK9T
z+x0-s2x}7NM4xV);l)oxG*Rd(@IseY-PT%|`HNFx**b&ii@S&$Xe}LCtv$7Zd<?Zq
z05(oA%iMddma(ps*HCsyMwRlXL^!Yn#w(*6?&H@thIH)*UxXS1lxbGSJf(S9vKFhj
zSjc7W=4SjetC6*^Qucc74Xe@jK#e0RQ;W>SGsL>AD$LW<Pgs~QuF-`#TMAoAgHOY*
z<#9{Gjf>FhGo;>rYrVE75c`{em@UyqB*%>#Q%wzQB}f?yNu~cO=Y~Rm(|74>35t%>
z{?1yNd;@~I)Ryk7v9?uPHfnZ$>m9#m11fVH(dg>}-6U25Lp@p7D*7NTh|LJz3-G)V
z*y2Z62jak3It|Ra?Dw?#Eq$0IJzZ&xYn5N!5!IFe9I6jsfHE`w2G_hj2LqR4MRKU>
zka?IYXSr=E5aSTKH%?wfYXY8TApZ6ng>G2Wl=I`pZ&ydg9!uE&%)|a?0j3cPF^LGr
z%9<&58is3TNo~RiVze#y%|q*CfcxaWuPliwj$~acunX^KAsMH}yGG(IJ5D^spCw>|
zJiLM#aJX-bti0TGK4DsBEi5>bv>IFPb+2`U9~}#p*b}G8uH-D5GL~asp*~LLqbI-H
zk8sw)zC|WN5yBI76{OU@n@(^l<g*g*GO#<ErEG_2;||ppSIhRZpmQg=Mjj&GM=tVe
zOuk&kKZU|O?=rNg%ba*>(_9kJuo~KG&(?b;*w3I2=;zRb#p%a4v8QC3X8!hDn^gPh
z+9NH|n1#0NV5O3G+jkKwRCbop$O_=HYxx3)5sfi>5^mBON?Ii1wF;f|6bv@JdwM0L
zx7K?`T(#V(%1&~DJwPWN9BcQ+<qa3cM$x`yYqJ#92>akIDee22`Z#X;Uclj#v@c5z
z(;(;QG8ZCSc9}))!7I9lY>N&}wEc<sZ_^#rRcw0yU-I8CC7x*He<z-n<q~Tkohsc}
zWM@#r<HN(>znWP@PP4I_@oY#d?>~!JbcAkrHa(CNYA+0%1?mB>P<t9qZQ&rxuBnGN
zvwW5bN2PJdU=L@|d#!P-Lf7S?;(Y+2AUrNx)=duUG%U&<$Ay`g`-3-0gu~0I07JP#
zKK7`OV`5Qni~T+y{Q4pnUm9gatdrL~Gwn8fz1+6uBtwob{O;2}5F4{Y=CmLVHIL0M
zy1(N7AY#nj1-XmvD{`eHBM&6E>;MwhZ3TU1XSIz}=0GtU5Wgy$ZH8cLVIwvW^Jm<^
z$_usR^&VFcx-C2LE<pE%ujicU9EKDk3bQOP-NVBli|&_l=RSqoXW8~_^~szDHYsc^
z4>}Zcg|rU!!Edr>FZ6N9cNquc*p#jIygujq>gi(c-1>|$Tg8a8XX|XPx^A*p{fcB6
zlh{JOw$SI<G21J?f6=}i74wWK2SL6_MF)zIkcKmdQv%*HvEP%=$W<(}S@u>Pl&ON&
zBo2D0W0I>wm_HR+D!CsN88C8Xf&J=ZQm=N(Z#U~y+N58?nakvdH@7n*7)=4aJDWRW
zu)S<4Q}$zmNfadQ6wzP@>?gU3wV0;5j|A*1Nt5Rc`J5r29?8P$ph=ATWigTWwu-;;
zNA9NCzRfo77jXd1E!z!;sis>qXVP(+uD{ScNXa>K;PSw!ax9i;z$+x|4yhGO*C?KF
z;PNcS?qS<M*W($^{M?oX+-(1s`XqFGw*80>dR+y5Aj#REpu5{$N@8XJJEtLUl%{mn
zlHs<pt08=LxFZf6n6wL_&jlkx-oBNFjEvsOPpqHV;${6v7kPl!V?DcOe<>4CiKKgz
zmU9#Fp40K3{lAXK-fAUkeKcT>z4Sh*Gqz{REVM5zh<$@(ZY+k*KV+TdHP-_&jLHtU
z<>lf!Uxm-jMWRKcCR8!j`mV@f$W0%0b%F6{3$G#h>&yz4AwO0`-L0naa^*lw8BXqX
zWyJ3)s6q-o-MYH3-?M#oAIr>kukyp}hAGeNwhpiIY?%F#<Y2W*119pv28Z9`bR&1w
zZDL4uUBb@JSvAG2Sbr6tCRy@mI>V|gYPHWeyfw5tO>w$vakV}Uw{Mevw3@a`?OCBS
z;@e^_yU%~|rTc|^?6I1r!=Xu!Z?juSTZ+OO%L<hHTlOjT;)OcDjQCd4_-~<5i71*#
zZUhf|ve1Mx?}T23tpb7aTI+muxeuT<g=JSS4LX3DaUCwNn%hf$_o`}7%WT`%`eBBT
zm#sXlsKY^%PLoLfiT%0;IyEO)Us*@&KKF^V25QIHLDR08S)F<=p$`7K%u`fm+eVcK
z28iiLo}l)Tm(R`XRa<8x1hjO0&dGqvUCo75?1wdsB^kdpCc8$`#6UW`jn2$qu0MQz
zHXzM6(V^NaEvW2n3t;85{^wa~xbTbeV_lgMI+D#6P?aOU@gF>VkQ?H!>0V!Bt@nDi
zE%;uwRMiSCfy9ijst&d0)r6;{by~UC33cW*{B^fOIse^7<;<il)<2$yG}yN-B)=j4
z$L?8FzL=1N-y-q5Wl=dmOVUp!j@b7Xm9q>b{Tjuud{KEM#qWOcJ7-b(BPo6lh~G(z
z%0aK#FYA2eK->C-lt5Vt<t?VLDi^DgG!DZztQsQvG134NqZ(CAw`C$kRO->J`DvNF
zPKEYoZ)Tv=AnwMq;oMQ{VU%!gx&HC!p9+3b_#tsONuCI`eUCG}GB5Ka<LGbJ376&m
ziywP8IuWqPYYbFZY%qbJ>%iR-xY`NKCs4MD*cv>V7Ra`r6#sA*$!?PwlVrt6kD)@j
zd>DU2Y4td@6DwJ2nsRvjDULD~kNYx?$K;=<FnKTUD2No7Q{HPRQnW;}mht%Fd>on5
z)XDK>KdJl_r^&!|#s%%*tT#lgWHVzO;i`cz^mT^O;HTcW+#H1B3LQb$Gar5p9mzKu
zL<R~SIoW6spi<DB1_25}M-0bk?GfY%a3zcv9LWLcA-?@<N+;`<$T$ax#miOKT}gFE
zJ-&pf!3!ATPtrE_N$lRLQA`tGMf^I%49WWm1i_JIXWy4Hr6siA*AsX<furuF(U=k0
z(Ky3%mCw^Y+wS%`CsWAM*>j6<e!G;z`XLiJ$8!zW@<pi8D9Yi!@Q?9s&GXe|_LZC&
z{?%@$RGxMtbgm{2yd6CQ7u}sscP|db)3Ib0&ktS}8ojlRfZ)XnJ4QUeAIUqO@8!&d
z1My&XIP(R<dA4XNTBC4TJU>iO*sZmGtSzA^C3=)L2t_jjw}+y=1DA!Oy)gT7BrR~g
zVjpGpg}%R<bnKD$s#J7E7D>~w9_NT>II~1Dng!*hLfNN_GH`=XeL7E3ohnpULe*QS
zJ`qnOFd8Osu~4nlRA0z$AE`C>4IK7sDO6bg+-yIgsg@E*lWh5gfQp|4Gg<XxV^P`(
zlw+(va51;B10|ujv5=<fzwjLU7uU-E;<#Ii_Yi&Lxr$hZ{FQpMpFn#-HWjsScco*~
z&Y9k|+@xQFXKc%(LbK4W+ZNhGYxbr;l;bIBR`ID%IG7Cafz@S)9@>);s0r=q6*w>S
zbz0yi`=9LIo#LH|a!=P5-@c5}QLN}TQpWs#+Ztif+!lUT;v?7SXGQ;vgRp<-u$Q`p
ziJVK=uXNbr)Ua64o}pTIKZ8K87I%=Q&sw~MNZ5yj>*xGk)It6;u7?b+_eXB#Nx}1q
zVrP(Tp3b&+YPNRl9vP-K!eg3Jo;gHrHH}{e`<Rg$w;jBUMH^&4o8IkD?=B7<%?_L#
zI+_#cA3B;5=qneq%j8gdR_sE*^_omKVi}29?hoQdryx5xz-uj)xvA{|`TG$6<!Ucc
zBybeC-b<`v+XR8KGQ+st?Xu|k>ej0l=N?!>1on;X*{=91K}W3IT8LtAD0@=!=mo`-
z>Guaei^o@HL+sfV%(Whqyu^0pTd_=Q13#W!fj(01Ov)WR$sbl_g*3|>R;A;m?g-mh
z9*!sj9pSg<yMVbzR<ooWN4_YLE0<R8y9C?61^hxHN1;48-2MyjgWmC~$7Q?th-YR0
zIYw}^=&O`6bSo8PmTZ)!Vd98ZrJ>8?*~$mt1M=EZFy&Y9WGam37b|~qXyLTxO36Xy
zlF|4wQGUgSyvI&9?6#Z8E1rL<CfNc>tXgK(_tEkovi^N=$f=YcrDF_;%Nv5{ZAN1u
zLkh&Bk8hLNK>K}SYW+ofJ5I}`)?r3yWw%{YiNZlEQ{Tj1^hJwGDRb?U<WUORqHl%y
zFvnB~lUK0{S^L>4GXAs?t<pnsn9i|u8zXSIY3=Yuu+^eaaZ<7$Mo2-Mkz(B*&o{Tw
zhMhk#8t*4a$P<IsY9pd-^lpOOUk7>M7IjmJ{S8;E?ToNAfHWls7SoD`BgnOrqmCr^
zAPeoGiHrh;HFaO8sa+CWk0?zO`obt}P>73A!O51b`B(ourU4Os(@aj~U;N@&9Dr9E
zAbGHS<J8sa85JIf0PFYHwc9}$mtuVP#UbzIU|&w^kCHmF#qYpWe|_d8vCTdD&Q>0c
zS4H+)TcmlU%j`=Rt3!i^AJgw^*?kyGFJ-QN>l~$%{3@1O#7=T^Ys>ERbT-DBB_xu*
zt}=adeU$e{I-6=-^EbsF6InVppCEYN`30+q=l^Jvw0(!5Rk2e?1HHEdbCiS^&p%8M
zBDUPnDKr%-oWKj&6QnIFQ?HB`hvpSz1czFcg`)-14&;wMQ-1o5K1+VGM!PDXNDKC|
z?>@-PqxQ>UI#BN`u!T#Fc()Sfbb{1)R8l_g+mF8X-87yIuvboz?in(iFRB;aF5_#b
z&+v9|AU79t>#jg4lg7FAp0k3zOIy%`dbGvr<RMu5HM*N_z<RsbYL9KLfE<S$IRy_o
zTUlqLdHlUbNoe%8ci?CWQLYQ|(-&D9m0UPjRt{1AtQgJi71fOm_Bp~wktyypmBZ(e
zacTN3ZaCt$2Q+i?{`udi2Bm7DN+U>3%73fGwjbnd)iauh?E+(cb$hko0e7A!QPm~;
zz-+&qQoJR@{aAzQ{_nEbhZT^A+IT%`t<Oypxq?rT(`w0;OwRZU{tXR%kx$rWn5!-G
zt&TJoAJPNI8~jX#;~=&_JD?(#OT=gz-6s50!xsfQ4&Lh6X$Jq`st@npVh+=knNid`
zt#`~ev713NY!9$~NUsjPo?ZH-^k0Aa@5{=iXVHaplx4?8nQ<AEtO?ETrYw$;jisd$
zvf2KS-44w-peF&L=%ED$GiU!5y{$r}lh-@=J4vMX+HpKj13zp)QPSfw8a}2Ja;%$K
z@9B-41Ctz3{u}VGY5XLRT^+6{lH!^1UaCV%*TsY^-dgXO5+IGUf|oR`4-R2WbN)Rx
zt-kCm5tlk*Ii)S7+fg!v758t8#`?#RSmS|SYqO?^1$62JR2dUC30%cNeRf4*U|dD-
zz*rjOQqFzt3^_9=!eDCHuUQyaRbC=G?GVc$hz40LeyR=PtD`@pUz~j8$X&dZs<>1o
zlY_G&D0}tnX4d@4vW-cgI5Gyc9<&TZhQMZZ1fOYNO7cunyV+cu%QEOd#Bl5FwVB)H
z>^h!b*-n|QA#z~v3y;3&d13RN(z31~klilP1@p-=P|2B%T#Rw-$-RnT?W>bL;&Pb{
z_;-fSb70OCdHu}i3mu8ix!M;Qc);h`Hrprmw_k98Myg-tk7VrcN>}M9IH}%7s$Rv<
z;n8!Sqrh}|i#I&vHr(oIsT5h1^8{Jsj?2fguVOz*mDyOKh-*dyMOaPR7`!N+Z>S0j
zb{FW|mbnQUVd~hK@%#mZSh*|lk!L-;o5Q&;id&v-SpiA4=RJ8AaZ8&tn8a72npSc>
z%CjG5b4kN}49BqG;e=zaScc$ihXXZV@loG4q`cLo+r5#i(n{CK;>N)ZD;)1zF(vux
zY}4~afE%lu?E4kKD41*D!mcDFo=Tu}9m){H)nP?EzZY>$N|Pgdfq$u88Vax*;`t*~
zN!P~aU@wAu<Qt7fzjRdokYo*vhH^YGxe^e2vHS)*o!|Y%t1%#3w_l~Hkfu(lF~A=Q
zf3lX@#6?W5hB~{$ZJ0$;VeN!*?ab+@nX+l%?zQY3W;i<sS<~QEwO()@eCe-XIep@|
z@}j49jd-G%1h`Al*LN6nBD0X-*gfhnl6TBh$wB_&`6cAT3RqpbGoC+<j!U=;C4cx8
zfmjC)!ov?wmHEM)mPrF(%fRJ7yTiAv)XC28+2v<p@`s1~`7uD%!(8$l@+>Yr<``r!
zT4?CSvf)s@H>OYY{n)X%oPkPb@_9@?H##4!-NQag4Lb#?ASIpvLXIvJH}yL>-=c~2
zpY6dy<c!M&{~IJz?nx4u>22yAv*q;bJa1E)y~T(5h2w4E5N-#RIfud=yZNncXhT&q
zEHTH{?5<}1X-em|EECyz)ge1AxF^Q5b=~}VX3Iu1x|%1Bf}cp%?y9CfWNb8YjvQA>
z<#?OC{o^2P6Jn3c#?+M3oW)3q-U$h7v;LQI{$5Nm)*ouk3Jh*e8`C_ncloN|wH$F!
zjO%=dTeFB7{A_XcKU`_*-=Zrc1A9+j^ikZHzUb>tW9|mz7tDJ1=KLYJvU)}QnEJQS
z@80eU?Pq;#&8{w8Ro%Ecz{88a!7aW}M|?Ga<n-y&7dLDV3}bmY+t<1$5BFf)gB-Vk
zJ4btGG#m<Ag6cYvoqa|Ew+fBEMOc8@GWKU-jst-^1!_9oH)_ZpJlM28SuU#^b+U%E
z3kfsnmGUrnl?<cT?qkXnGvPVXrx)4(E8m{BdkXNWuNXBtXy|v!><@X?f_aj|iq+Y?
zUjx)0@s??j7(QmF(}iH^vBcp?>N$CdvPAQ>?1<>Mq4uAyAR|Utq3gR_paT~RmoUIW
zXHr}icBxTTY=iu)6%Y4X-m3w(mNRH)D>P0dnf(j-78}#D(C_4GoM-htS<9sNW9KHO
z1?)WnfKiq2$~y;26L@3gcQ-ChyLYRTJ^+>q4YxZKK5_gC6{-qFn<z-4PM{cP$%%0Q
zMdNmRSXV`+NkxWH5iPYv&P$iM_Z)y$$2`(N`%bcQ_FK2$WWU80n@LYebAtUHw{`=l
zowSPE7cM@5gqA#qCmdAlmo4y3k$sHQniGIB<3>u0#cEf??_+my3Z-TtA1xoo&s%Ah
zBD?j(k^AV#XD^pAW^ZIMUd(K550+Kj>d?NAsWnH`NaUcti}$;*N*K$rkj`VmI+C0x
zE=HfG@e^Hzb8HW#P<$rV^Q4cuw%m4zc8UItA}FawS|}622jwoft*^MUK>gq#5LTMw
zY<u6>6Q^}4X~k|=t&C2B46vGS5-bY*yAwq*dROcw!KMOHNc!S`u?)H_HBmXNijw38
zyAFu%xSe^$g*5d}UESF%h22z+Sl8q*O<s9Oj>T^HE^WplD#{Bwg$cAW4Mt%S4c6!1
zRPqNG(O^pzFAr1W3|>|zm<XwgWzM!Yj5%=|4Ip~#C(<?-9_`jP)1_@jz`ly}{gI+{
zIc_|U<ANmT&mmoh^Jn0+3KZv~RxeR60VO+bW1Uh$KEnAt(w%6u(M)tFY&30mE3Z0?
zLQHs0;dMzc(RudP$~^fIW>Sq;$f%anqa)Sf@y`l}@?-;Ve#@0Hxw99(;dw4<Va3-?
zJtDVfMCPQ8n(7Lk&Bb!Fq&hPGS)OxRo{=Y&oC&V*KDSpnF>3rYo#PR;XV0Np<}3B^
zptAZe5CvQ8$@We716J@2N@ri4^3`dNl{g3-iy-h@`|VP`)lo4KnG}tN2T0!Ui5U$G
zl;dNgA)p*bjfOjv<Dk)S3yv@vK^v{rO=)hnfSX5)SUUeJ3!DJGqFM3$3s!=vk=&(_
zhQK&8jR()eX}ruW4bNJNIbq=iWmAgo37jk9&)l+80w^V49gp?lNkjLJF>5ml`A+j}
zUAT{xGQI4F@!)$rT|^s}Rr4+{nc*xU8N^C-iAvX*%f++CdL58vSB}n`LoOGQtm_6s
zTnTa6GGr;<=zU}nKYW)+<l){(Wm*k|K*+_f(Ed%fjz0fH(I4&>-HD1`t+a|HaD$V8
zhXgR?God>2*JETjJv@~wP&eIYHr>eoC+qPtoBmsV7LHO)QJQFq@2RF3NK=q11nwPJ
zVQb)lU%_RhQ9eyH%J%BWFC|}dndBfi)1fyx_=x;UXw79zw|H)`KUAKNrFw3*H{$8D
z9w~v+=h+ab+8;`b2QSB`OneqaB}LwdQA9rR3boeTWA(RO-csMC`dbpQhbcFV6sBPx
z6tC(?qvXj~rTTi1%JB7^$|3xqq*@($KzlwYX`<ycA^e~m9mxp-clhk>AId=v_?i0M
zVy{xao9z|+S|7+f@VvNI$FA{NizH9cK*-o1a<Prfj9!@L(uRh@PpGi)A}I(VH(kOo
z4L_j^vPe}glDYoUG*|cq$=w%TB*l@{@F8XYKybOi?;JxZEBRV5pzj@kzH@v%fM0dK
zHt}W|gH0_`Ur+9ZPatreY}L2(*_io1Y!ZUm_D1YqGCNs|REBcm#+)o?;Vh3?_ELn>
z7{F?prL4X(YbV0(!?metzx8-(+E?kcXE|w`%)m-FLeBhFc8mAhZt(``cx8!r9Bd`y
zJ=iVYt=;17V&g$wTsodFV)j)LtyKtP{o?KQqg<fF@mAKyuj1{+TO(sYPOeGLnrKP-
zA~V^Rho?^Pg@coQ;RUs9vbKk14qbz^hS`Ap-G8MM;c+mr8uTc`HF;jdIIs0p_!<z@
zcf66i;$Gg?xQdss4)6qNm9=SwFdd_LzDy7EWyiW?8DpAVT9x&dH$38DQj86b=a(;+
zoml>Te6ol38r~h=aQ=_^@>^5$yjIODuV>4`i%n}?wcLr^R9RMrp;q@A&z9f;6va%d
zmAewfYfMk;f<E4eFU=dSnHB5BZL@F{F?SdZQz$h>Ga4r1sPepJG}eoc^?O+vtixW<
z=Rp*{Fb+_garn3Ft(d=7^91@}c|SszJoHhv>3%DoKbi9T>pH!1O}~OPeE--FfAG&R
zUwi+3hWe{6mV|{jh#8?VyQ>c$=1Oh)Z2$O(|MI+Q&!)NO(=!H&4|73DkePPxw?BA>
zRJbDzNM0$+d&8%+SzFe|jSRg!`-=}`*ejfy(+=><wme1D0+BR~->S+}i!sF&BiD&`
ze*R@?cridN&oEloxMYG=Q?yl+jjld>hIsw}h`?vqubZCzM#GsZ&1>Wl(U1Df@mP)Z
zw1hGwmqiE^kI1Y|d?r^w;i`E$9bVIQAcfV49MPRB(*A|Dx(R%T52+>q*YRJXngBKX
z9!;?GX{QO~5Qk%oGuqs$`UC7Q-#;c=!U{M60aGoo8jiR|?hOc<(h;~TSs@C7l03DX
zBAj*!g;8c_F4q;IIJ5!#`^|!@;w<sB26K|l63b20N>zsDjOTw$`yhrz#_#uzx-gh&
zZ+VZ-h+O4-werP7ESqQ>pLN)8eeU%f7BmGmnl;cH4rW`g3VR_wg2K72c^N!GYI_$+
zzu9O9Di~-nk^R<!dD4wyOSgjW(w+WD%`8#1ry{yG_RU0-Z4^`LI_Y*AfLBXNFi8^6
zulc*MW;@KE;YG(e%Q_m(BRSlfH5cB(hKwEf?zul?#mM6}s<7(Zk-o?e;mCL9_UYnf
zU+80`&(-#rr=(*(2Idyt+!+|^bWEN-Nt%K)XQa8VUa83tiCl!`P)%K{g8l4$8;^m_
zP0eshO=rmw1Nu&Doql@kC06UI3?`<GQr?W$oka^|&`r`M*4w7FNxjcw-%w9~EFfSv
zCw`vYhL`7mb>9rPOLrcN$IjHToxCJAO{C(+^Uo(As}nI0MQo<4&2}0w{GN{kyfym`
z*e?s%zIW+SFsPaWU+E_M@7tw{%!d~9p~ZX{xwSBH3^bJ`B4w{5pwujR{)m_I{Ky%A
z-d3mm><*IC_7c6^?QDS=RIoIFl7a|)9#6_y;=}zcZoj24&Eb45;gcIB)(*l8?W?|4
zm$7CzmlSKAONw&vIg5kOJk~!1K~W259zYUHo!cvAZbuZD%KRSmF}G8v%tN8X+>WK?
z-0Wwab8u0X-|v;D7Ne25X~IaO=?n^<KLj-jDbJR8{(3fJuwr(2^wvKzgI^NQpZB5^
zHn){eJ%jU(Q0|L-c|DtrhI2F@8Vy5~gNF~s;;@1<c)Ku5UbwYpWgMP5kA9n6W33&`
z>s`Vl%(;q3+;7M8catN>fL;%Bu*^p0t1{azoZ(yM%)j@+5OaUXJd2i$!`T-nCYnA;
zDnm`VcRVR<y<442`aB5KjGV41_g<t6nR2OMUvGH0Ou3vQSVtA51tr3*@b;D(cZ;33
zUf5d|TTR3Ae$q4<wQ9Bdo^Gdnzg1J~MbkxindY-zpz<AhCOMaRWp0NEP6~YRTDQ(3
zFY3uHG#Z8_X<+wuVrH_B&6i_S*_XD&uEDBK5nUuL$E49UBiQFHkV!*T<ZZSX%-9q{
z(Qy%tWSm($Q%b|sa#Wv#?s;3LH3mVp41(vmPsbprWDo$z!#I&!^HK+abP&DdU|qGz
zF;Hn*SQ_uNpLs)#0nN+$g>@MNl`;m(gz;f?QH7PUDq}zvU$3=+<%x4+#rWp~HgJh>
zvcvcj61Q`~v}h@85+di+s&i|YI{c`dQHhLogHqK=$bF+8NtMlBj3`;@O?J@8eLhRe
zq9G+`9q)XL1S^e~XLDQlM_xzsT&V<po=F1(R$%KQVrHAmFQo8Qk(;-6-2}mgfyvfa
zRpj@($&OoBRn-4NwG>NBlxPyp@*8z{frMYwGd!omzLjtZQ@fLr9QbEkVQTtSPB;@f
z$*S<-so_JNaE3)9+{s**FVhLXB&Ar2kI6f_OXq#AN|yN~S#TY9ofFR5o=6)rt6g>f
zlM`Ot6+R&~JWRMsda~5;yziucyAyweBC7pPc(oIbc$LV1Mr!)!I^h>|g(C@cm9MuG
zKDH}-R%&?k16_Y_S2(j(SNwHOcvUi7?XXfw{@{>Y(M2NSK`KeeAsN?2qQ^s5Mzs!!
zuZu*6PiiWoA(3W!aEW3^e^IrfO(i+iN#)9}RAli<B{}@QuJQOT5?QNKN#1lwFv;RH
z`h!Tv-AG<=NVt8OAZh7A@~}hl{VtOB9wc`-B$sxPZ0$kfb4bd%NIH6u40T9Gb&>4u
zL6Yu}ly{NXJxF%F=d|vA0)$yTiZ-=fUV%hHD!NkX?2*b74$0^)64@%HrgD!%a#<Hi
zb`O$?4$0+RBue5-VayVTL=RcT76m<0$#qD~u2c$pknGv1Yc!^dWOxsfHiu+b7fDGE
zl4l$elwT6eP}YNF5hSXRl?14%MH=#S6#;uc%%%2?PAX?~r6Q<-4%M@f2ND%(E_dg-
zTq?l{J!l4X(ezHxOwly5QxK8spYL*S>$%Bz=AieWv>A_kFeyNM!*0kXvQQMV6UJUv
zw*AyrSvkk&*-vOkfxTEe3hf8AW4OIgJ4)=Ja^%=|YL7~Lns)f?8?<AB{R8coY*%YX
zt&J%w$zg_lsdkjv=WE9-d#HBIvrkhFs~-Nd^R!!L9Xmt27mK@7t?`!3BlZ{Cy+qu*
zwOeKe`%UeBUfk{4Eo0q&MY~(Xtz`vEMz8&h_TMV*$F*C=qy3O}?-qBxcFPE}1KPb`
z+%vRW#*95hyJc|L6SP}Kf$i09VRySsyM?dq^R!zS*e=v=;Z%E|b_+||+1f3<XMeL<
z+Rzeqv-fMaaFhLsb_>_o9pVmkyZgf#lRAhF-CKx=b;K7LF&C6FFn+}hA}r^>%f96n
zkuGG1lsKN?WPu}tcKh+e3I)eD;|9CsTcO%u2goDV(H5#Du0$7!^L?N7pl~18tOD8l
zL-i7da?q3FCwpRbs3%JIluZO6PE6Q=c*}YRPHs-GD4Bm!#i;xGombM7j)@6xS)bsZ
zgR3h%LGHk=GMg*Y%qCZLyu~bU4IYSnxDg%>jOpTE4oh>dv8Yj|{q82kW!%=u9j|@b
zwND;CruJDXKB|R!=v8##@`z9Z!SgbYuiY1(ymizMPYVtj^}_=6IR%TycH4+gno*3G
z%B`GC3(#2J$Zda;ec2#|;n_&!!EDodJ=!RZVm&4uOM4<K+F>58T*+>h?=ANHT7lAK
zvn)m-H`xW0F4h(<7<J=m+CsVzU8jg7&A^;+f${P}J<poU`;iLs3_BeS_wU^ylL^wW
z?5dnu#efC^$dKDMLEw)p$aBK-l3_Wh2CxmV{{lhIYB8g?$$s=0uzzSHeZI-AXKTz=
ztmqAKF+?<oZF7IsZ~f`FT<N!J_nTOoj>SB58z&Vh-B!Lj_*Lv<1m5RC=x9KnoTplu
ze-^whT*dY_^N-q@R~0^oQ-nZ9RrppY9w?ADqs|(bwH}rMB%t%@3Uua7S^3zXZjerY
zSPh+baQnmmD>41yr7A-Be<h?#?UvK3JHD%W`~S#~MuTj&x_Gj>0EX*mQcPK;$~V3c
zpUv8*RQn9a=XLFKruHepXNC4Lv`-m6&ugD=*}gG_R^syq?Gw{JK74+oeclltXZRmq
zZ^+SqL)YmO&EXyXGi!HyN8MZy%;)cEL8GelOBmcug3;dYE(VWW^(VXhMwtO@nJ4-z
zqg7qeGARC`nR$c#+*Dy^9V|>Up3=nL_MTbj9W}kcXqX`wB=bj;BHJygsGF5Vkb&06
zwuA~f>seT4E?1XdB2@)u<mxXJt11rn!k>NLR2*JtE+0ttiq9dUz^u};;qS2byrC$D
zo6D8fh>Qd%VhIX12<=dq%h4!xDNk8)t4g5Rlg#B0ilP7te*_aRk~rZ}!eyMGt8X_b
ziV0At=vrif=7nS$w<wCM6BJqqhT{1oMI{tE?d7K?$k=JLCD!!9uJBV5;a8`GySl<B
zCBlD@625!87Er1tI=Nf}RZ4gZ;ax2-$y|PI_wXf&aC7-}iS(~YiC^Cp{)0sLwJG7X
zUEvcG;n$^vR}#)#Qz)#WOgr;i(5_Ez^3?Cf=rY!vYU^ZYwn<$j>dRfhJ+X7Yvr1IB
zm~K7-12UO<Nm{1dlUK;ld0@CqAQrPD7*XQOC!b70PM|N3&pfkDottS*OS3JbNO&EZ
zLP-D^vD=KqYSc9&Nf!1*>~|+-r*XLb;Xg=BCZ=vPlB|lgq8c(oumJ!99{y(VRwncv
z<))#+2Rs;z@L9Qq_fery3ML2)NSq7(Vu4aceyLPQGJoFyiGTxI_X0~!vRLMdmP>Y0
zrE31!&T)EA<por#UO!14WOLkq!|KF2j4!k&E%+5_@GL}A|JX{iSytmFxw(y66FNKu
z$0XPw*gjoSKa2K?EdlZQyI_y#b5phpXHhme<YpW<r!(RDv0xPL%gb;6qHOt-Cw~f1
z<cggpk8<kw0=k~#9GD?WUCnNNgn%sYZuY>USPs`!l@GdJSglGot#*kL`Y`K_kH$0%
z%n0nNuESoGtcRS&MP60&V;M5?ztIgAT+z0^_PoI*X*JDR2j^eTLNvOXv+793Wta%u
z)`>2o-}<!1{mFQ1;Agh|cR6Se<^bw_hHh?+E7oU0W@JG;=8go@Jck#yddPBSs^tQV
ztR^%Dn6MLluKKNTQFWfEu_B(w^V7MT9v)j19$T20*agQ@x`idQ>dw28tvcLip%L|t
z^!Rk?yPFvVO~cSyyX_q%#Br>VAK+W&;7Q6Wc)E2}5vNeuVhFJ?G9d@N@3%@bi`^3^
z6GFN7ZQ(3Ak)i!+UJ=fg?FAfi(`sU?n5I(9Um<!2@%(C)g2MaS$nh9}s?0Kl_U;ZT
zMi9%L-v`u;{aFr6BKhkHN5L*_x~EUT@VZ;Xe4~kV%GrAlifSAD)7+nXx$sMDSY*tT
za9%~`+|2q_@5K5<#;nBcu3vS;cx}DeoLA*ucSXd%ZfnE#;9DHDN!-%y&BCV@=KPF`
z>lgMq@8$}unZ;MdqSh*P$A;mKox<yUi@tbX4e?CtPNzLJs7-s?uPE#d)x1tyZaP?x
z$lmMlJ5J5#5f2o&-P*tCqf7waMXS<PGmOFDLg`N7iSUyXh=3Bd=<7V<la58-q0oNm
zMa47VP?>9nreQa(Byc(x0(g%zbhOXx{h>!BT1NQgY5as=7Kz$Y=iRM#y1G;CvmPp1
zBBiEdUSfumV`ixZ5IgXC!t#p7{`0se(^bho%<NW4>wvjjs<G(9ILmpp@IDJwSXIzi
z5yhr;kc-)>GJ@h>uDkPA#6!>iz<GeNa9)k;cn!Te7L_3T_aK~{f2~rZDYe|+EEk5-
z&j@mTMT&nD*H+Yd1$~1(w3K4+yQ5pNrEdz++ks1^Z{A|5I8onpbnlx#{F>@~=~)xZ
z3qL1~tYw*h;p)~w1O7&-*BFhvD3#vcr1bgW4r{~U?TbE=XAT#wN>hFQebQwE^k-73
zl*CjwZ{jiuS>-R%{YeXlpOnsw-cPcJRF9?y?;G{pB>VzZ{<;Un(Jh68w@b3Ya~)63
z80q0Bg)!_auO)dECs?i%j$Ner<k_^~aJ2X$xwoAy+;vLe)c7jV0SSFA+=U$xmA6ht
z$5`&7bZ589QS7__X`QcsLJDUz{0(;KR_eE&SM{zkR;V`at+N=VK#BlX*X(RvfY>yr
z?vtG8_S|cdRjO2Tdu*7F798i0UfwOIJ9JLpE8XsoD5Vjmtt_~Kt~lArJ$ux1(&oWl
zx`|FaknVW7=Rmrn&^fD;d6%tpa;m7k{X6XVv&)n0c*Rj+$H`>+-Khe0Ol6xvkIS4J
z%so?eh+@VVc1corDEyq7I&(*<O?I#{G9fK?ZfK>X?h00gRtn3w#D+^soNIKPVX3Wh
zfI=a^3`oo^iV;&e;COS(<fVFy3RsdDqcXSZwMteT!H`x>M28Sfg52M8`o}T4+jw+U
zc;acQ|G4M(D|mfuUPdrOn>rJOA|-xrJ4AGLH`yeSh+AOaC26kH9<8CeLRaXg1+MV;
z(*k8mc`ZC~Ao*>hPEIasA4Az`MO|L@oLu?oJ*O9WW~JuI={8FOkCM04A2H`=)*rck
zVRn7==K3S2%zc4n;nQwq+V=xhrDS=KqP~}s@fWa|lW`3h_pIK($!eu!b^QGq!V+ro
zyM0*6#X^fYnpTNCt|k+%<MdrLUI_-#kEJUjS8zsJ>J!8E^y#Vf7=_LENBD~5W}cqr
zS|R%%djJ3qB~h&o)$KxsQm~F=$QQW7274BxR}AHCu)oF?`e~laXna&<lKZDqWZS-a
zMWrP7`XR+Yv%j0d`I5r*l7iUeicOHt6j5ZPh$0u*PhTxvshZ2_Px_IP&h2DL&CmU%
z(|)H&L1P2jU=>(8o}WPgq7MR)Dw8(2?r4AUxC;072e0#;-EP~I%j#4%04U~Y`&$^H
z;WKfHO=tb|lkqb5T0f?zgls)w*7!oF|D>+s`x3rfstpV@ULIRG9iW2WqUqrU8MxC$
z16b|zmkrDo8!J^<7eIgLTxsh{A`1ND!cI5Md{Ix)+Wt6`Mj1?w=5nFsTy}+CGfq`m
z2S!`ti)xU<Dp!d3po!x7-|CBkMCv0MU`f25Uu#QM#O!5P-0G}c$GafQW@54kY1;e^
zqc!zkxBCiM63L!@mRwmFIDK(*T6spF;CYBl)$w-xf_rO3ppLqOXNY>ap~L&?@ZbR-
z5*lWkxP`D7qIAq4S!q5GDPRG>%=US_eX@goWu6LWUJw&(Cdi1lPeJf}R-(e{_`2Yx
z>d@{poJ<1$m54u>;A{!rOK?^!B%jIuR^R?Uqupn$Lpe$3p4ek-s&l4fXOFQ{4Bv!L
zV~@enul!+;f$+?}D0Zf^$50$V9^E$@;8*D;$kn^C(=j32&i@uo_+gfh?Zq1(v9$=E
zfr;Fz=CmrI6Ohx{WDMs$beg_wb+y$Rizan1z+ta-Fh&MBhtBLD_J|p#*DqygfH!t>
z%VOk%n7VG<N+&Zmt~*U`Xg~3DK7a^?KObUHATys&0BB-7zfr;@V2%WU*Ulm>2)-RG
z1e>{B^zj3d##EI?yM46|UYiWwsDdwZf-lm+4<>{Eu7b~Sf(H=n2PO_@{uO_jbj~C%
zQ&Y$DJAbCj@WmyRA)L7gnphrNlzHOdT2<!VIIx5{OCqCKSI4EKz>QMs%@PAUGZKJ)
z@k&0GNsmJTE(f&)%HuoaXM``J^(xKfywC$Q<JHQzg75r`WX$-RP-PuLXP2A3n2gPj
zT}G+`!TLN~xQ=q0WCO`?jKWY2T&EMh%?Urr9_NJ1Jg7;m+@}e(&vydyyw;`~F}%J*
zQ6$FQEZN$nY~95UDtq3>b@K`_Z?Z5qbi^Gz*+O@McDT^W+|6$|_g(oy|9=2w>T!v{
zc{HTVt*k&OR>JPgbkqelTA3HAUq_b#o^m!YVmtCnrHC(k!2iSEo5x30Wc|aP4Vr{-
z!x9X83kgI57>Q^?gZ71P>_`V9i=g5pA?ZLMBr&-Sfnf=DXH2-n@fnxV8OL$PWf;d%
z+}Kn|*b?@zDc}O4j<;<UL`(uG{eDkX-A*SYzvuZqpZA~l^LfLETes`hdg|1vb55N)
z<p8_b6&@(b{KRfP<hn(B4D~>UVn-aYq>^>GsOD&>a8T?$O=xF6sT@mROH_HyvVFwq
zThi5|S{2wkI${R2of%_3>9XS{iF|j9TpEezgUiD6-Ea`SS;}``VNq9DR2@XtUGT+U
zkN-b}D3SSK$RhILFnXu7d7reoHmS~czf4OJ)dFiGXa-UtjwR#14$wf_&rf8^Hs5^4
z|BldhLOa1*ZAr!U7R=z$Omak+DV#)mQxM^<z0N+96IfU{1z8_ubL*oZ$CPZnhnrex
z9nuE9xsoOyvE@)RyM}8sQC%?1AQ20g{Ut<q>YPO`H&5ySI|vtBbhkn~xBy6P;gT-y
zC`hLhXn+e`cM@Fc0&p>+UhO6<q(sBpoK>N{oMd9Uu(nRsY9aqHmc$NQQkpwcA3*E5
z5hmu#{dAa;W>_*h1$@8pl+si`F?aPkDqBbuWv5Dme4HiYU^ymGwB7viQlkU6(kJIv
zr)lGQ3N=zNh_HtMEz)WOR%6slrg*F<5L`e8XJTqY^X2N0bVwojpa5KV^fk(*yC~AM
z^D(;a=wFaCcVNk4JhzYoso$6>7W8kBLm^VZJhZvohx~|6H1KJJDGGDLlw&FT{IU1b
zIj3B(1xh*gQ5c-GrKC&)rdeqI=Qzj&@(`saY-749f9w!s!$-EWZb><&oi)><UOt%l
zW@DAQ9_O1{cAEJ@8A8a0LiZ`%aT1%}wW+wjS>5CNi2BiyzKM_Ipau|csN-ez7dn4C
zh>q{m0su4$9N<4~L8EKtO%A1LM<-#=2cO}8iB7*^%&Q}8C@LK%YTpNl9>F_1v%8R(
zvOl7Pe0R_({!l`5Xk7Ctb9GnB1=CIp8awx80P3M0rBCbNvU9vRPeqFxKgC}&a57ck
z`YUP+Lv2*g93m9e371Pj>Z?c8M@X<@2N4pRfR=VjFv1S<w4+9=$e{J-nb+Xm`!iY)
zymkiYoC)@k*lpn}CiE+$l5pgw4Z+!DLa($qoJ|%lKP1)T4VpUYXiqv)$F|xOD3tby
z4bE#X5&nadgst0IIvm9D7Bh@?D=`@egV~nlL0`9g^G>BF*boduNIoRC3y5%qlZQN}
zt8F{RG*Po@j|Ez}8v7|wQRe6Mls4hts1nAf{cwO|E)l6#`UR5xCXEa8k$)l@4eoep
z7=%#>7@D<a-$GQ|R|2bR_{d)ixd=3T3*n;Oz1(PU!M`2m2B3|t-NRaR9+Ysmsd6}6
z05S^9$S*c(9k@X>hysJ^X|r?Lj93rS8mRWaBdxT@>(z*a5%WdE$M&Ih+BHRcLJSBf
zm$q>u4Fj_s4<=i0fxLA{ww{8R(h1pWM>8;fdGWYP3Vu3B0nMhb<arHH2Hl`<`t47h
z(2#Y66huQL5BM7taD*{}+8ELb0%Vy)M^*$E)FDlojAD?GnM-AYri{3YdbT{4Em1@@
zqO^f;qEEcB<OGtpwDJLrA}2O;2`96Gjuy~nTG_O3-(UphyqG6!X%Hu4QQ}w<$0wb$
zH^WCkeObKbfv<8Z-xPFSQ5=6e1aM*+J#3fWyu$PkKp{J9mQk_We{NYECg?U-h@mFa
z$c*u~R}qfZx<<Pv?k~seR{8-fnu2qwh@^wH%G>o}#H0CMqaR)PkD&E{jZqLzV1c0n
zgg??o#ckB=d(iBk;DE7gn06=<&2E3I8WpbH#9KWvU3wGT+&;yqx$HDTE$qbpVXcgO
z;xNt`7uK4umG!hIowe6=?+T5Gx=RcBD}9CaD6LYhs~%tp-pzgGx+_|nfvWk1dcGOp
z=Ej(#<Ngq0C>w6i1!oj%!aL@^`->s=x|Rt0;(ZvP@SW0jtI_B_XYmcydQ;190C+cQ
z`n)RyaEv89*RZvL_MtK%omk==)ppZN8p>28(9g{#XnVWqyifZgH3@}b)$lDME8)4?
zDX6gQHJQoWw&N~nSf9{#vp9RQb{r}d?2^7qYA(o;gjutI!!`I6em}|3+H)d1i1~_H
zILWD1wJC2Y%7eWDTAoFG3DLaPcB9pajv7mx_Hqsef?27GwXcIT&$ds~76ziM7)+L;
zK+4YQ%L}9s^>td-_&`d#8vB>o@S1~R*dJm~i#@j-?B7$h&8L}8VZXgP`Y>XskI^oX
zZXeP`Z{g|K{(%v<PC@J=?YiK=fqXEoKMg(_^wzv*X%Fz<N@(>hAnh*`{lKp<cQ?P_
z7?;Lt-*>%%kHWcPc6{@WX25!vuh_0TB_u{!`{h-g7f)N<N2-J~B&aF4Y4TP-et?r)
z>ad%C#)4@6b!jwaEM^o4e$4aN{n{GTR&N+dIH=%NHFUr#lR~}%DKLQ9q>ZPtCZnun
z6Eq7ob|}8J@&$ThtDCO-1zT<h&0-Wv@ZMesj(%L9X8w$5K?t&ogx}Ee5VZbzaSQ>t
z%kP1$ex047lhvu=L}*h9Cdm$bgt`<O5-KJ|oO;5RJnZg0O#9w9jpvgpC29uh{6lq^
z?{R-@g_|tV;lK+}Mf?r$x%el*C#y@R9oztxM6`QB`*z<?5wy?Arn~k9RD*1CGkl$k
zxn05*zf2flNt@3QKj1!$jqS$j5|cLS6+WKH8M$tDtd9w{7;2m@+l;LZ;j+C3WnvYw
z!i+p{Q4QEwA^8v)%O+~3FfSyTFtTd5?xI4fTD^jmI8(!!DnXlQ?ay@N){4rs1Zq1G
zMP6AZFI30`TtC`0DGpNMDex}t6)|u^CBu2qaQ7smzZ?b~p;b_?hDw|2d`7ys@mm-~
zG5h~+VZKnfcm_8Gx>0#-wW9+W)|8He&+0|>jAfk{c#HGKmUV~x2ee9zr2B4MI8gb?
zns2Ca9r0%!l_%pi5Hyt+3U?6-oPLzECWrL&-HBGDz)cyi3DpcHgz@h|O|F}?+2N=&
zb)*Z-A~oc#yETYPel*}vCk>$b<J$V8YXp}K#m61@VWr^byBiQgME5k=u7EQKZ-{{g
zCS<5yAbB?2%^|?u=`9Ed?dRfure*}2iW`8^&1YP)_C6E?DW9~?KrWP0^(HOsr|bSy
ze%zF9)#Wou;0Q?;H$inN0~MMk$64UT`IqSHxSnwvrV=sl-#&=`*Tnu~KDK0WR3i~L
z1SrFR8c28?3E^8phO&-svdvgrJ2xZDvoCv97`D1$?}a2Akp%EgUE{iiau255{p`7o
z@I322FV@IobJN3~s-s*@lTs@bS-Sx3LuY-t^HS%1k#U@DDqKA<pj=fpTh`qwtCy^F
zzXd(4IAG_f<`=Zf<G+<W;Ydq#Z3EGc_v!dE`JpmjvR8i)zY%fL`V(ESNozYdVeYbC
zc3dDoN!qmDc<~x8$NfU`g~{rEJM0K*y5j`mPB`4g*QdJ0;3mnsZ^KdDJoi<j<hd2-
zqwbf@xRqfYs)Jt{$@3iG&0Z|}%P;yTpZ@Ze{_+Z%z??Bnzzf}C?{3MHe!m)&PV!Ws
z$xtjv9@-3Ww@elnFSXckdmoFrNAe`Fmzl~EcMFswU$I{gDmS@Xa)giFmR!m65A@b+
zhs_q9*-3ZrF{VSRxz(=D#mgCGI8Ic46(#L3l=XTJj{azO)IjDA-d@N-kj?ZO@dkGK
zG&a<{KVrjBZr+`Y&VdX_+rEoRS0Bc))$6iazZKwEBU$UH4y1`e8p+ci1)?6kXfT<B
zo<%{xKJO(Onzm)N=2S+(ad}1yU8Y%!bTn(MIQgnQhTSIMfQ&v2LZNI&%-369XKTSP
zE49ALBXaO#ZQcwt8Q&lb0LB%2OfYe@*vy!R{JX6FB-M-tu;m>X1cP@mgS%5&AB%kM
zmIbSixLXQ@JK~liejdx+QY?9}_lxf(iqqXvCV5DFb+@?qMIGd9tMViY+A;!(d^7zG
zkehqrkTXO{wA^*Uo^-%|^os9hK!zZ)I*UQX7wK=XruM{HCtSsbWIrYy0MW2|Rn|JF
z$msa%chVN14;@O%mbX%z&GXgr?C|^cTH_sLwRWk>8lT~t$xSrq8*Y8w_FXq0j9FH(
z;nxN>>mZaog}*@VZ`uvVbNSVG`a-Mk)M4r^q>%=w_*Mj%Mmu4ORN9q-?q!h~0-Jne
z*mzSJeNd7`>6#(!u(kMZ!uTPGVR2nDa`7H+Q*ABmH_kQgTxCpeK1FRa@`58-!KGm~
zwHCv($|y76w=no|f7NU=U$aTmuaSG#Z1Tg5vD*Ql*x}rN-?04vk{yTFWd9M_ynjsu
z%2rIEooa15`1a->p&qK4l<aOvTOB5c?X4oOd+<R7zJiL7w*zbaN#vK2>hA`)S|xWs
zAPb=woH`~;o+$i6Cfs{#-5Zwd{RKdG^{`a@y1*riMy81d%4_{E;p^&K<eD81Q?A@2
zS~VQi*x{L!xEPWhyFwSOHv78BJ18klN-&(ek(%HLBJis{w~5kkz*p_%Aw;2xHBgVx
z3X%*t5C^OG;uS{~*0V&Ae&~3$$=?W-5^e_grUE&YK~{5%iv+o~C|aAx%9#bNHL1E&
zYFX?1BSl}Nm_sSXw@Fc99u0eD8XN$ImWtyL_Au`VJk~T^CM{J?B^c3w-$sBlmUSfz
z9F6g6+8v_A(2pcGf@qrE*Aua!3QJ=0Y1phH#svldFosJ~;;l)|_}(2$FS-iN@E$C`
zCanQ@$|48=4vPI)GeS{~q(<c?Jj2^$NY?&{3@F-~Qkw=!rnt;4s~@qeJ}^2k03<>}
zC<CCq2>8fbXtw*0(B-(=*d~2OxW)?B8&q8x?f|R0P&8pZ%dS19PoAr;f3W8JhOq$a
z6JTTU^$T<XN|yuLT%H`|Sb$F}`%|lxK7lmU%`bT6w00AU5OwZND%@XRU@U;Xs@YY(
zZ~<->%tqW<9eryTEWm7Sqty_rUS-@BQsW(izx1nJrOMv}Sk~01*uh0&4)|`0;L(ZA
zTOUvC3E30nJww9r^YJFkdhGcVAEO_oB#8j%lCDg|bD=T@&q5^{&t<ME!jLH6+KRgi
zVcLuJ6+gRsi!q@<Ibyu|{Ke#b7%%IHaC|3CxWm<_Vok{Ha0-Wg0v6@H3!f*Xu=ufo
z_{)-aIK}5lp1~A?2KS{9loxlL`X_+Yf_3*#D3?6fL3<})0faz;TZaG}GQ=sjNSh9^
z1x)+>I`AA#U{P)+;THpn(Ey*R4fz>2DzCd04Y!Q{LGpysgl&`H`elX}-YOJ~4v%#8
zvk4*!3MJLhb@w*)x_33g$u-?~&<bv?S!r+d7P2o_y?J`ZL9!s1zyjdOEU6|Pp8%!s
z=2Jci=rOCNdj;jMvDzCcf%g`k)uhO%d6;q=o=M73JVz_N@l2K~yYdo@-s|AtsVMKy
z{3XOorV0exuHN%JD%5)#F9ePfdd#KAEPB{&>Us2mUNgP#A&r&+?LsTBNqRhe7vzu7
z?padbW%%TM5NIp(P_%OsV_o+^3=Y=P>Fj-S#kCU26Hf%9q6Kfn1b}!jMH;@9!FMD0
zriyDbU7-}Vu!x;_p@^Lz;!<TD%~A7Csq$mIyj6h2c}l)@{AtCE*J5QHo-XB9Jj<0^
z@SLj*L-ssSz43KQ9A1l+UU<5c?s%3fUGSXiT8xBwiit`YfY)Lr7EhNV;aN^iLJO|V
zWi6nhkgkr>p(vz7QAmfPx=~RI7)0Fbs*o-^LsrxKsC6m3q;2P7N`FW>&{St~eIuu(
z`9|S#i2+-P52Ef?%6+7#>ncy79yq!(H?T6)oxW&5#x@=+;Zr;DiDV7v0s&BAFY|vR
zdlf-{^Z!ZN>olhB|DEjR4gr*~17>MqdYN`|SSIv^ki*`X9FW88ECx~-Uo)})!!OOV
zs$XC&&BT8zVyb{_B%?u+I7P2mc;<3hO<VdjbN2xyvIC3r6ZoqB3?CmZvo;WoPibnM
zGP-z1=LYh=rYQq!Z@xLXP$#~7yk$Mf1crpNaSO2fB2~W1>OP>&CO0`XvAv*z!v5*a
zBvlQBOm?F%c9;ocVRZP0Nnwdd-nkIAHz0&f)E0qT?X1Obe<fOsi!4B2Nn5i}-))5g
zAEco+-P}SuPTYzU7Y^E(+itrRaCs4(ka2^F3*K4bwgq-Y5F)?|Sk;rz=2)!i&+5<6
z^Q=cQP+n*x({r!MY9oQP0dbTTu3NCR^+Eg=Dr&qYc|OOHCi#7k5JN`T0r-4zV4y1S
zOIm+FzHkvP4(1ak|F2MDZ{O2SkZWio$ieuw1@uzd<OyNo9K5xA;_0q5nf#{xKra<(
z36ke~yt%LYU5l(WQ=*7@pb;mpk(;nm0tRTu>T$YPfQr<3S0bQ-3;e)doI^@TC|k0j
z`PEdc9n8B_^}DRszQGPGyA?<x!<Pl>CQ$I+$?!O_oEByJs#hs*iNr6>f?DYlwSuR1
z)TD>tdU`a)mh_Vj5^BR8Hb8zoj#wEg(&DAc3cSef>v>YmQoIo(Vl`isrRkhq=>}sU
z_#mP$>jfAZB+q@($dhycJ~8x{T1+1n(_eq-roa4*2C`2n^kP0BRX&4U0crMguoAcr
z12QC&W=rssNwe5{#|xy{->?`+v$NUDOkKXkg8m}75tthYiB@LcA<<4pR_{<EtLBTY
zNL{S;C7_$R(qq2|h|=M6yr#Pa;DF^9vSFZLt3@IBt6IrJxWy&lQ<CRj1XHlEBn3-u
z8jt6!)wu5-FC+;Q`g-4m%vDd;vIa}l>jy6)v{t`-@G?U0bNIB4zR)eZ>#)z*p#2Ao
z7snB)as@tXSKzd~vk51|HCcc}v`#is-b@D|2}h_YtQn(G7)0@Dq+bGedDlqzQtXAe
zwqmsG#_F$r%ytJQYa`9X$~OQr64gn_@Sehtc3HT*uB;}IMv>^vQu?eMrq~eox5Csl
z6w=edb7+(`&ESfvHvqy0cHa`)a`!?d1!UzA&$r?L4yKO<$U)@P!F}LqJHFLHq)gQ%
zcc08^hvfiQROlm$LmWZ1!(|Jg9VlNVfuBkzw;ed{|2+HQ4Fh{`#m$x($V;QS5lz&k
ze@rx~^1nzU0{p0~!VB-^?ACgMIw(~>fE4ux;M<LZ|1VVRZh^Mo$q0H`u==k|TktGH
zZfFaJu@~^HM)m?;s1C(2jlun>jcE*u*(YcWrlSm|G4Q^QM7&LPV9A0Y-#55no<;cR
zrK>$bj0JuV5SkZd92O@XjY-Ea6tf1K-M(l!={U3z<Z=yr<+8ca^@APaFEl=XqN>cN
zDDn5xc;YA|w!&r<w~p_kr0}8bEkiPSM+~))7<#Ua(3SKQ4W)xr{UUvbHi9W8W+fAQ
z3B|;0FHNsj-NY&?qML82n8;i~p%43B=q6gbj$1O>a->h>RBhIObQFRz25CXt?2xaR
zE~6`S84$GjDzXItruk##>Z@R-MkY;ssq9{AK(wyX@WNl60RN;mZE)oWfu9f`h+*)4
zi;Z`7r-}C}-l)LtWf>??d6N&}b;P#z<A%wDK{t3`r83ytCcNp$?NANgNNNjuC3&78
z(2>ABlUmz@)GT~De?uP_?R&CqRsDjRizSV8J?e4qtl%0z^Su9{{8S{VY<Q6{QWZs7
z+7zk$TW=erYTO3J+H(hGj)aPb(~O6BTe`N%D0xbPhR=~}@ZHXGK_$d<3F>_m`n^_Q
zac}N{DpisqSe5?+1yY1fz2=Ky9ydva1a*j2n%)AGU{W?$BHi5`lq8@;%7hZhmUJzk
zL>khe5-BvSzA7v|=@Z{k9lrqOcq%DrS9;hdH2$PTa!77k;`lNk6iGO{Wk61A2q+b4
zl755VSTfk<9NzgrCY!m1HCQKO>P6Cnk*30z?uvrg2bB|bYl7&Fu5TI@q;KjsluZj#
zAvGW)*1L8pCu<t#I$XW<rIXS&QYG<x=p0ZZh(XX{&(2Y<XQ`kuiiPq=sH(IOGFt&<
zpBqq7@mp$wv{Y1fTP;<S&{7Ssny)h*)F<~s2eqj?6$SB>X{lIu`-|`I(D!HBe7`|Q
zb?Y#iI(*L42mtn=30C(9jL8B|%J_kcMDM`_R6f9GRvQJ@tY8J!tbhV5Gf06oiz~1)
zRk8t9-(@Peq(W%BE&wxy4$F?tt0$q{skp>-SayQYEQ<YDt3@1=w$WjU49VJbe1!Dp
zfDVhV`^qY)vA`DogbCM!t)zsrU^8n0)K)Fl-cYUZOPwCNQlZ6S-_4E6C<io48<3c^
zPH4yacneC<#-k#JoGq?b^ltcu>u=yb06{xfXR*dHbyft=#3-$~Hdvh%=<(w}a`aQ7
zTtcPk5Oia-+txFt*&%RJA0%%cR&oq;x^gd`3l%e-g-Rbhmr0eG_(sb^ly?ffRiqVK
zp`5XROhXDle0OgO#gn3GB!4k^2hz*B5c*7-Cdlo}N!3L5hb+#E{T%~TP3!}7P2vM|
zP3P%Do^tbq0%g#IVx`{%ml8XnT<JMst`bcw7>Nkp3?!m*V!ZF*4b2=WRbIdcqGZv!
zYRJ16F>Tp*k{ed9>xhG=5lGq<%)YN6++4pOswu|4*Wm?|672hCyfFwsEdol`Xn&Si
zTvFUvg2=op4qVS(4`WeB26)tN)bNcXLH)s`5{GJqqi9Z=z<{G*?-@)6UZOtZt!gUB
z5vx(EX`s2{KH~S1O1G`9YXf2+vUy)bNFZ^oVT4`AIY44IebaA*MQQc_2o{p(B6y^>
ztx}D$xq&qbB73=1b1Q2Y)M%&ax7UQ9z|L}Ao92KvjpE4&0gW>$Hav$Z<M2#UM&LPG
ziDRYV6)LqaXfWLe!6EaPaPNM+*rLAl?xY9|eOE7&OWg-UndKg##zuT1!PQESa(ZOi
z)N=$aop<+okc4Ej2(X^YigfceR|JGhrGybXuBha*UHj4{bd|T05eT2Qn24mV{O)@q
zZ=U!H6lPhM$gV07zes)gDWY%4vjurD&brLW@n_vFAY1E^oaQlVVd5_&?aF5^0@;|P
z4Q5X$ku5(V&ioU3iF^@RTr+J@dQ8j6-Jb#vl}A>>Gt*P?8kKc#3-&#sfWV_4J^Ii?
zqDLe>B48TtvN@_p;zTdu1<w7(Wti($*Q0rio?rvUeJzw&R;p*!WFitY4A8iE|9Jt5
z$#<cd@NNMG(q6+`tG<Off)j??myeS$MfWAXfrQpn?EAIVypRyhbU{#h7q8(;?-z-p
zuH8*aqhO^s+usNF80i=Xj6IU=xmVo&>#p9~NYu~m#7IgbGkVx<RlR}GJn=t^VO8Y*
zJKpK8A+_0FcRj*Ulkg>?afiAccc`bU;g_ZDjyR+HixAvp@!6MpVK*3h4M%TKgKq__
z?Rvz+HjA=0S>uc$N)n=$vGoqeLf*(CV?!4X?yk?qNSuOo_b0H!i`D*yvSFXSB2b0<
zfFBtbp)803!?c{hha2jC?U=Z8j+_=Svt1l>;5H^?`((1`k|R-aCzuLJ^gA#eIOpYe
z_0*z+%0%1efN0}>By0Qx;t%K$%d==LCP^wK@9mF0%^I(C16AsUtUfpjf)UIvsKDM_
z1Stfjc4Tn}OFOc-tH?7Nf3*W&Qb|z?`*2~aOJl{4M$mu-yY|6lf9G)U2F-O}yY3pK
zJq`!txX?3IbK->$B3%i}Mlr>2J}a$%g~oBvU{o%-ao82(2nRPmrL%FIH~`V^|6m-O
z=1x_^n=y{bY#c{v<4_)o?a^9nH8$m1(Nvpz6zE37`3L}ZHvskomC$5O#&Gtssk?D!
zA3ne+3A4NfH@fbIVt_YLJB`<B7#kh&BgN|kYnbqlWPZ+3<(~ry*;ELs@@sOXg(?YH
zFg_u#6Eu`r-2DJ-hPZu?KjI*^&S9jo)er;L;NzQ6LG@&KbFNjQ-BaU?^^@c2gReJ!
zgyVWK6C$vp;K&9Nsgq;exkkL}wmvi#M#7O~(p|&Q6E;wlv|CQMW-Uua*)_4ZTVO9<
z6LDxEg4|P>_<m&&p4XL|($xd-q#a~rnI6`?))$7nO)^YPMzFL4SlU>+EgNZrjZOO0
zGDDLw+V9R$*V|javNMuL;ABex#X|7N+69G)@;$V%A+GLtRw!TK8S47PPKOX(P&8xz
zlMPFl-8?zQ)!qGDSXY0@2rzb&qmUTg48x`voPS60Xx|H#s#O1EqdPb50-zQGB46*T
z(QUM51#F`M95VYn#_zsJ(2ks?L8oT6Z@d=Ao9)A7*snD|4l_^i)R@iStzgGVjV%2=
zv(?04i+<_#1)m$r3_3SNr+<3EYLS{g(lvw`E9R5!A|XsR+t}2x1{P+-!@`}?QEd@+
zyy$dLvJ8tvR|2#1lQwnDuMQ)7IXh8Y=oy99m`UHhH>6Dxt#-*;2=)i*06DEXb`>RB
z)oL<>lVJ(7I$1XVxH3si4~N0N`7;0o##r0Pf))fLky$+XV@n<q8FA>Tmpzxe#y4Lq
zO|+yIhbTk2uYA@J$%DOjAU`&hb<0GMOux41a{}^66x%_2i5S4#9w#}t%^`0GbQwmp
zg*5}6OJ;3R?cx5|FCHW_M5&V06TX*m_5<_J>mhV;e}_32aZ3`W78!$qFK|zcyc=E3
z2a&QU`4FTAVjkdbx$Ca(+UPr}ThWm`2F}*E29SU_cewWirw2oQ#QI}j#<3sR>s40c
zmwV!Scj2Z@XtLO+YP1IiD6UoRgufsjiPs=8VUuq8t~S^~kL_$9l=m^^7<6!nq<^4h
z!nV@GU>v;)t);8)6m}BF#6$?z5O`3n#kmaD3Z-{G4Y#jneZ(!OkQ(Uw9?C~PN}061
z98pe_areSDJ~(hF5+>j&pMcgwYm6<iU9KeU0-Sea#cDvH@1x9XLq&TX<ZI%6+Pfrp
zsx4c=^Bc4S{XtJ*m2StDKIkqyYaLLAlEmcR8%leanc5Nz2~3ojy)4+T1Gw+qcbI1`
z>PPD#;XEWyy4%f7Hus!1N}EsfL<Lj>3^cWP6eMjv#bZ;DH6MAond3nkStI!c%Vq$8
z0cJin0V7lP<*RjGoMJI-A^0G!414?$ODABB*^F=D_WWVHd_^?DEZA?-y8Tv|{PHbR
zbuvr_z{;@i7@%aFqJ!7+{R|uNp`4AH_T)HhJixI&ZnUqXhLrmvXk^M$A)MnJ3tshe
zb1WJs^3a`Ob!dAwOf*~DZV7HXZE+R{T8;Ay5w&L4YH4#gP6Z;r4``ihL$_QL)QBPD
za5|b$fEt`hZB-+#-3~0OiO#+Q=OAes<4ZPL&l~;u?bsjKj4e3ufzsyV+BP<Gc3U3W
z<z0*!h51w?n}9bUVYH@{fC(coWNKe8zwTe_CvcX{w}Z*ZbZ;Xv60$muRm~a!>Npr@
z)7WP^lKLnn7itSHcb^Nv;)ccRQ9H$K3QzSC6AMFI?!_D}6y!^-_kMvd9C}-L4R@#)
zXf|fn{R)GfO^38Gi^x=08G^lm_zEPpRDBS?7U5n`{G$l?)jK|ucIotW?m<8hA0(^5
zXC$N4j2dQQB2ps(zxDAI2ytKsDs#jDbZ||^w;quwnb4j<m<Sfkq}~VD2n3a|zcZ_0
z&se|?7sO+qi|rXH(byG>rvoi@=ZsNxfqpvB&%ZSw8cY>8qXssVfYigV-#rmNY%r=)
zjl9F%(r;OqyUv6Y&NxoN<`NPnV$OiD&1L5p;62gU)*7|~<)--McPnH%6?LZGvLOyJ
zHN_#-<<Ap{h`YB}mv6Lr4#Ho1`4)LojIS#Oy2QG!nR+uzi%kP<tq(qx#yA|UaxZpF
zxBW*djcwj*uyi%JBG;~rpJhOWN|-J3G973l@Q|ohD-UbfhOh!B8fPUPQpUp||2C}(
zZq2Jx-BEt+H+XAzi5#l~MCc#z<ptm8*JvvN99ch0(_W)uM2!a2_`SRXrCNMAPk2@3
zn||^K#1y%`F}U#^k74wHC=>%J=!(UqTFqD0BhpiKu!&O}U?-&>^mTz7yioOsx_29j
zq<b*z!*(iD*hNW7>O=#IQ$|jtZ6{^$L{c`>FHmV^_(TI5rSyOa!T>Lsp~~uazMdZv
z0ry3Ih=g#`i38^Vkx~Az0za()Yi8NtbrHVtA%>>Lp&ll)ZK#lIY-@3+iN?O8e-@=L
zq}=cO<8dLzy)T@_Q@c<UjQ;2wE=fRHNNZBar04qqz9{^NQP{_U?4x#D9Ng1}5rcoT
zHt1s=)IWVhM4fOz)9?!A_KRpSiL|xUM9?R@9iU{|LZacc>}6vki^@!_r#WE28&;<m
z;9rhVA07`{uyanL>{k4*g%K)wvvEyktE9zqQAxY8RJ6Hy2rHVEi}HD)>A{7%%=X+U
zN6qL_P|>zM^OLSx_ZUbFx$ci0j4Tja9ztidzSN^s??C{cNjY!h8;;Iq@N&L_iCyRA
zd^Cf~!7-hlD1_LRx&GKQh{HYd|Ij`>Nl?R1puzViItmI~mctewHg3aQ;dlji3Wcc}
zrA7Avp<|6+7O0F7K@y>?k(XG*NrtjkDMsAN9My4qQY++jd*kictZ_({zeBAyPm@%=
z6R0SAE-U3~6eJb*e!uqkSVoepG|2t5R5WsJsvF6bOtfXygHS1XLCJA5WGmZZsahFt
z(GG!~17PAngDm}BJ?*)$-bR-3w-VcegN&$w?&Z}+qXLT9$U4DVLATm$rTJd@qbmmJ
zGHX~J9sK{Hhc7hhqPllj-9&>0Ex30gIjU7g;TM7g{0cQFN%(~z9>2m3>^|^tgDbI$
z8+!PLYz@IIqauJly{uI)Gveek>ST&fddWj=0cu)hOckl}b^HR(C7|22C>JVmX7og_
z70OBqz@ov!gTZ`3`rR5zZ2oR(5BIO(OH<vyMo5)~h?2IiXLWJTPQ4%}VFTX8(l$T|
ziWk}*_2Z%~ZybIw_yam+P}PuAg<2h4^C^O+gJ)#`?p96)wFiw1l#(Y0pXivciLhre
zXr}eT`#TJ-p19uZy0yx~8sa5Il7u_htP`(;TXOZs;QV_oxaQj-1Bq)8aevE~Xv{=v
zmTMSm0{OpQku2)Df;~bVh+aY>y_Iu$3ZL10Vd*1)hV;8%&?G=adhA=)Y+x69_cZi9
z=pAf7cqBuJ3W_9jOZ7g7@(C=|diet)^+2@TJ;)4n3%6R6_GtP19E#*wg0x|p)%^9E
zPdJQ$`j&OC^VNqP=d)CNy+%LMr%&(H3X8GOm}<`jpVsC$gX-7=JgLa*nYyM<i>W==
z)oAURN-8IZ>t?n<4CrKPIgCbAFtPwO{)&dn9@xpiNe##YoA>9Zp)+8eZX{f^*0&Nb
zbf1hhfq%Gyqz0K7XmH(0H5JgH?S;0%kvo8Hr6Ro(Xg~(jJ%M^ns>q8oUdOPmi@`LV
zMB9PX&HYS}zJimDIJKcV4uQmmN77lC=b0uS8nOziPgfq0+cr867<3$vor;_5wx9C5
zvp=P+FPvwT!P(oOoJ!O#LmAPDXgjf%G4<XjQ33HdR1vnPjaJxqL2yZC`qf10vISqj
zJHkUCBP_%wShb~O_<IrXvAcoN1|<#5SfV`_1coF6bOF7GwjpaSbT`l?fd)d6R?CRE
zFC4oq7VwGp!@U9jf!l4nYxkhB)ybr-2}OSQ?zyD>B6~-L>o%a`ZA2r`I14-9^KN_v
zT84w%=q~GR7Zk9A<apBC<i(o+4&57vHf;yV>E1K=>h3}3LiJ;xi5lr9I?Hww&-N0s
zVVNXp4~Jk=<>or*G5y5r7;u~sl_zM`|A$hJZl}t9*;v(+t#~BT7J`ZRakx1FI4#-;
zn0B)BNLGN;0zwLK-fYhW|6C^^89V1jNUA-wUce`uMGr%#2yeI~MMu+c$>gWD>dA2#
z)l*F*9a#X8L_<c+R4pCaB*dPAnFvHOXpWM#XKBu(agc9q2T&!1F%nPMIbFDUwBlPf
zgFc-qNdy@JqB^JtSpQ-551#}m0J(6~mhcn&DbC|9gm$omdC|-yr|3Adsh`n5rTrPA
zVaoTA^IiQr&<Efkr;18wdZwlo80l0!*j{*qIilU$A5{4v`e^>uH9_kQN9nDj%#L&l
zwe-U<Vd<b~$XWh1-qEappOqc*TjA2Cn{d(q7RgqRBXW>3n;O+u+SDZ<chY$r#z9gg
zR#v}vH#%)ez10=2p7c#7%}X8bBl6ehM>Xb~?~5tzj%TlBUGl^3>*I^Zd*9N*c*ZS@
zLri~PFKP46CaZB!jAF#8CgUJf58p^#?0#G(Tx+9Rlxb8ibTGc(pf#4%F)j#_dwlm%
zLu3dLNSbers?CS(U%u5WvkGNaq1?xply8>%mL}jCw`@p$nB3pj4;DSOyv9ffB&<eX
zILnPwE;r@l(mRiv#ta&tN}TcbdtG?I)6=<7e?tIlz|4TC(t&b{>s`82F{FQF0wc{<
zKIWwJI>k=vUeSH!3@5My-<d}1*~MJoPK8FR%@F%GV$*>{Lq5dG&^~lL#4FzaKMXMm
zAanwChrAI(Eb$?p;<5G{1TRMbbx%N6J%ot3L9U1L)kfbvG`ax#As+-c4DT1l{HO+u
zu(YW!fRBXz2jS{(Hb^IZ{aXj=B&F{{=m1=xVKN_e4bO+j6G4eR44B+to&;K5Md$tg
ze+%y?7`&m*#0)gf3>N>~-_4ajz*np-b+QUmq`dgsF)*oMKfo^<;qIJi;m^VuI9GCe
zhd=~^2EJZef1wLlrikZfkOuxsyyH+moaW=i!$dg!Bt<+l@Ke?GKaxo+Y2w#eZ!>Pd
z;k(U9%iUlsy-9loB||yBnpHrA*!vnjs~4c+_pHO)258J4rNYf0E61$sR^FB>Zz0La
z7V4K9VaBul2yI)%;^B%?cQrR|2vPp!{_;BZ5`1~$_n(jYWHT(cC&4$U_BSXR$QwF%
z+X0%9)rt)zgEol0f&(*nCsG6W`ID4m)|yEn+Uu}kLcg3Rens9>Q&kV^6P%VMTl62;
z7T`vpv{PW`dee1|<ZkkKFp9rNvDBf*5Xw~<20fDu7F`ZIlU_4BM6OxbjBD+ayIIHk
zmHB!Cl#qrJl>6Y5E2An>k47Hc$bc*@lqF5B@Q1j@=pT`1JmndLJpEep@C;XwmGX?&
z2Zlr}=ypLXyW>hJY=!t^U$qhIFL{oTkOaOz8TVeU--#bcWp0!n+l*JN({qmh>JR%C
zwO(X4%jkB6<XMhyXig}MHz5UJ%zDTbs|=B@t`*pU3HL=*<Ru%gfd@=iKg&?R#tob#
zAX*$|O>#rzHGD_{l)NrHenNlA6Nw1Rcxb)pFxaki|8B1jU)hYX`x|guTiJkgD5*j!
za5F`>bocI1?-TeA7iHcL5u$^vVXT9+{kf54?tU9*FHxN6?q(}>m$v18=5N1EgH)@y
z&_(6gum0c;+LfUd{CrO&wxz3*^g7n@?d2-#ZQXqLq+<$8dNNnU-mpktia;m9*^*%P
zz*jIG5M`mJNYtcAzOH!nAN|#jve9LS8GMWM=y#Z(KFp+6KwCIGLw(%{Rt!9<Pfq%t
z5J9TENRYoEc{GIl<Xd{u*`}}x+y@tSmfeC5Zqyg!z8bzJ4vj7Cjn8t}$I_;-NvR(g
zUc5idpnNH9ikc*C_k_?d0H=@k8FV>ZABLTGzxTgTw!aqZ0z_1tyglXnO>q0{iWyb8
zuZC7(2CVG4E=&g$VgaNy_th}h4YA{?q@+{6J_1<HXKY|ka*t_aU@-$SnCie*^9Br}
zob=gI4OhIu=NmEGDaW>wH%W0x<CRIkQw>e->yJ&CjQ0j@KAO%NO-FC7DkvP>e%D0&
zvGG^`y#lBf>FN5g@2giP+nMQv`QvS{7=`90Urw8C=mdGE)l5jt0G!>w4InObmho^9
z1>7Y?D>+t+!EOt=TVv=+2Z7UT?ztX7UHC<cVW=C<EEfoMuXcpG#5K|cm1$DJUSl_u
z<!q{6lNs*z@W-a1-<Y(Ow7pIED|ueV8_;Rvk@h$|g>^1J?I~uwuT0IaP67f`9r`d4
zA|r~lH9=8n`Vd#mN*?c<LwMe&O;K11t9$$I660sD-$@G#2xyqL_zM_L5=haYA!tyb
z@>pMYJ-#c&S0@p)GR)sdkHU+N-#1jRlgMfS?Yo0j0i-!-8RoNL)e!`vLf3H~(z4+Z
zLU#Xh9lEoxaqWw*z#rQa5OcRgfcQu4*4H%6#9kxNKJQ@2q3)I?t_Z98jqeR$PdvVP
zjfjPY{T8ih7hA55AmHm^Fq?rP(fYl^cP$}{1j%6JlLgCaCwt#GW5D*lncc!b?GGqC
z<r8Q&3j(#!ZdWX@2j0G~N$by}q2`IhrqaUu5dl^G#-TQgt#1>eVM#e8WARsP?;F$D
zVPc!#W3*IieVo=aP%hgaYwd#e5L|sxUH?R>5J|biLFpO3>2nq1iQLB#biC;^i0Aed
zf$5G26FcXVnye;lo%h7eWVCgDL@OgP@RToBTgM8bZA0y^tY~ibP==f^d$@&tM}4`0
zWbIq~Z@BbCYdhUG=l(}=2lsGoFbZie;0dmO0ZL&T{<ud7cM?P|7zOV$$KZDinjs;d
zY^7=Eee@sK=`7va?=}Eanj)HDH4dv8<^xuXgc?oDSqMG~QdlIr<V2f+osp)9BS;pi
zWZ7%D%G4iQe>cjdRhLemJWIWgzMu4oF#kijDewY`6_Ivdk|8)H$6^hn7!wKHjYv&D
z68*6`q7<yx)9}i-xpu!sEj$Q+ln<g-tGaX8e!02PI;_?jRcD1CIz*EDQ<BXRA)Aqa
zPSTj&pKu<XMc+72E_{Mn0(Wtm#C^1J*>qPaJKMZV{a8Khk9`gKpdy6vId+rLry$-R
z5}d-k-C~mtZEAB@I9wYQqLXd!lYKQB+E;d0IGP@NS-<d|?tQpoQ$g|J!RLy#CLedo
z9(Uczu~z+vJPMM!5Z)S%)#J7!mv5{;78-ae<W2m<E~`zlp1^(Jf5R`E`Gn+&!Bj#a
z{32M~@9i4FZ%FN8SG(dOSzfdZj*hxmKLIn0T^!4tcYcF0SiOL}VNJsA+?S!x2`!yF
z72_GWHTE{#<%#={>u?{kezz>YHFn%B7(V@?ZaC<FOI*_3Te~NhFo0dOD%Bh4Vp^QL
z4O|+lRKXq)+uC}I#-T;%ZYr*0m2rDH+CnTl5~%Pk3)!4qZ-DD>*?jSlnRB989cKb8
zkg#wA_1ZM5#TB7Vm=8t6E?;k4?3$g?T1P)K+5qD~y2ADQ2dH(OU*XygZ!!aT1EG!G
zV|?ym!W({A2Y6mVXiPIeT;zNJ*UyMcia!FO1wPpYKDCo2TfOMqh^z3S!|qOo_U;M@
zs#b_PiC0X7)clF;Ss6CSH3T{%Y>m=nQmdeJHcY}Y^1!gY<Yp7oHiGR({7<kM%0~65
zuscv2ph5E%VWq>o6Op7E-{&PA0NTmZk`fR*4wQCMAT34mv}1zP615R&=`b}fmm+!E
z(BQP_1*Mg@kW*RjH&`=i{)=|-STqHSCW>#{Zm69p4;HMpc_<cn{@f;yXurJWCdxyq
zEKv`A;IYVq^){%UKpyC!4Bn~j^H41Eqy+NFjLxb@;YS-<tOjpC`l3fdFNbJv1jUJd
zK-SRV^aJpQ_nRU)oX)T~k(MMo0n?p<v=qtHzQNNH{iFSB3*E>EZ58%IwP6o&r9)x{
zjP=IKYkwR5GCJnMRaVqLWGBas2ed+zz;S0-FeUWG1`rC=T<lhJ%N_Di%4uWDG4EO$
z)OLC>?7EudS>kT6OkxoT#qA9?^$T3Ft*v|Tx<3Ob9hOl&CZqCu*LW=z+Ko<DxwTjt
z0uu`hOrRy+vls?j<ySa^?fxZn<@<QXuX#^i=K@=S7N_{rYaR}f-C|F@KkeElV>|sY
zI}V}c!+wjU^Wm661<fh?hG}JYpEF`k87=ElAj$Z)W8a#jGfTzw(J<>c6zc1O*CbaL
z{vGwZh9e?bG0GnhpXj@z!d$LISD5Eg42=^`J$w*@5bcX`#Zg*UFG>@EG%i$A7Q#43
zmAU25$UOn72;LyQ8MhTSP@8aSCVZ;gR2!~DTBYrKWw(~>8z?u|61FR2Yo`2_V(A_l
zd@;%H+I=?j?y~;wL-4<IrF1x58(3>M?_4_2eJC72cil|doTfcSmkGbpCEI7Xdj64g
zsAr`&kC4S>*cH)pw|zT?mj2cteYh(D&k)xXbr1AraQ8qwHvLuD%~zIngIai$-F$uN
z2yMw$;<AR~3#BKYyhr@L7|Xgn@u5wp>;wGv=Ck&&>umVbs|O=Zs1k;_zz_%P;p*v*
z_e^+M#yY+@5tq<_F8?+a_h;z$8v*0t*3d>bA(Gz%p#9Obh&#b8xVph2WLh7rsiE+E
z{4h|QaYU4!Y0JS(@LYtMV3y5#3eXx#Gx5ivgk7v)B%!SV{N}|r_ZG!=31p%??TXa1
zXy<S)O0Z+X9+GMG2_G%mldt0=a~|#*0Iwnz7}bv2g1G<;jM9eU4ZMk^8k?{I6ClnT
z;{K}$Vmg@JS0a^VlD9(rV_>%?!8^)ugFm(hY+o=i5kMzjBqIx2G3Y(ba(4aF;TbgR
zNRe%sJyUlkFVmGIRVaybI%-5ixX#@qJJk0`8DUdz#_S@6XLI!`$gdf2WRBbJu7E8v
z!nuN{H%Pv{W_FxE_H~#Hkw%7gqTH+EAmcyHN}e4jtB0_!BtBP&&#o2qHUq&KbH%S@
z!{1D$UwWK)dU(1C@FZ*O<_768zL(?Z7T{hAJL6uKnUJ5jmwDjaKnf?+haEhKc{z=!
z--8#f`)kTWe9tgWWf$8F#yKrWso+AGsG6Mu)`J|jR>HCn!j$(;v{0J{8YaBH_s|)i
zT`|D6PpFF1j$Gy?@jymct@h2mL~3kC)X=v0d8D)oLGd=2u@IQ{p{E(<X2q;ll2l8)
zPbxi<i4%f-Gqwi6d&BE46wk<d7si+6Bg30?waHtJ(3-Z&;2PDMH7Fao@zEKoP~=rx
zkXxB!&;58S0bP3y3LEG`(-AqT!vZKj<LUjeJJD?9rYjc@Yj4dZZ*I*#qQrhoc{L-Z
zI>cTxwUt@>JyJ05s2Rz`n9a(>&l;z_RnmNjw)?;<9;JIBCgAF|NZi0C3)3KwwmK7{
zpb88!7D{K{&TZJFim;mZDF>`c`{<gkPJAbWjKGK$oVXV?NS+huu-K!~uFgbjuntYs
zHol9ucH3z}+Pd;mhwBjEV`1|JE82EDEr)QE{2p;@$?oz#*uMsU%QkclX@l^M6S@a!
z66#E%&mnCB!wO4=WUcfxtp7IQBo=;PhWYns*@%Iv-R`~+q8Nc&;kfzgNYbee2qw5;
zFoYf2))EiJ=vu$Q7;2Y{EkV}^tqv?yC*6%icUj+jgUE~SiFDz^|A2;(#N93sHMD2&
z#_2~}`3v@gKW3<>a9IXu0xt4P)aIfhwzuEDHi*eD{+;-E?`s$k8vEmWLk%!F$yRqZ
zW4VBXt<!K<=73PrUF$`q(8}W50?fG1Ud_9f{Vio*hPo4tjF$I?j?RGIyJqUy=Cim2
zB;}Y|-`u3OxUY6wiaXxs_;9&fvRoCz?i*p8bGrFJ>1lfOKwjMA3`Kw!#t43SFJ_d#
zfew4EGvdBrxvCp(=Riz`xuMj{fovf;Q8=;`@P(0aq^n2ezU7fR`S(RIbkfeW!V2Sn
zV_B5aXl_^)j;=J*+NEs{B;jL~7jH6X0M35{W7=<IK>i8(fX;wy{u=`_DcSxTAd_xF
z0J&yL0LFjUVN7t+VT@&)0hzYIo0}j8b_{1)%pwTJCtCr14{Gtkoy`9N(1gbVez>bS
z7=UeI%;63ds(>Fcym0>0sPtt1@<L!r&-~@V@4CMssj+5~AG)r#`?;KtMTNLS=``CI
z{*a`ZlqR<Sfn6u_VfCuD#_3-T;cXw;LL?o`PfNxfNMU=-hh0CCUmkU5Qk^xd0py^B
z`TH{OT|EeQ;HZr(?N~~CQlzye9hJj&qEKZZyh+7z@fVn(9*1i}@+kjv5^%qlHK~D_
zA3|2&jl_}_P9bP%!--KCxWN{g{QJOmjrqbS+3ChTY9Z*78+j(@woC(haQT+RU1E6Y
zLOW|sMu@d$cIfJXu<2Hh%Srq4(?%+h>0!rk3CNF-;FIcP^v?X51DS~it{yDY`3m%{
zeM)Q6X<O21D3;@qTp7XzXhM4{@mNAB6N~;?p<?TeLyPkJOiGdL$OJXWnZQPEs|?VN
z(#ecTV)g)x9Q5!v&}C8GFx$ZeUD5}+Ew4jH^ib&}!|?d*H7p5Cjgx3sKiq)sSk+_I
zvkhu&0+>JfeKz!@)3H|D!g14%y?T|=R+H<8QfE5U!!0ioXM`&vQ})qrBo<oq&L1m}
zWIB&X7%<tufrR+_`D1P9ry6@?h+Zl*J+fpyZdGR+s$;hx+N#!|G^lzGtbTxDRz0u<
zZdOy{ly2!^yK$Y!1@*AHmtmH*nx|DOi8r&FcdZ@=15nIKWNA%*Nl#yEt!4>*eNZ0I
zXVqS?G_L^GR`cGKmt|5ey@{Su_z#4#`Go6ptNL%^N33R_t82R2!>Sg9qiISvR3=sa
z3tw!oLWiKS%R3JRLH=0HE-RnTejHpK$<Wnn!B4P-Fi!>R_XmIgsvvhzPsh4f#e|j~
zPkk6(C~SR|{i$<9ls)n~X}qyCV!S<MDbDoOhNi~(zGj;V-XGDrw7*cFS0}NY>-C&&
z<di%sKwVlh9}t<(Lsi61e4rH&nz^dUANyNqxE#3`t#IApp>3=5fC6lFo~|-$Vk)!Q
zP?_BkU^>U>OlKJRjdY*8sCC0$Fyl5AIwgSO{(|D_yD*Nkw{{aTKK#~*fWB-m)0h3k
z5|<#c014A+oj^0K;P%i?#_}CcB(O=I%QPHn4fP)EMF$;v4GFpOPx90gjQ)3;KQq+0
zLi2~-TvOHrG=CY>sVALk{%~`%Xr0X{xL$Mw(?W37k*p)iV0Csllyx@sFb=P``99(X
zh2K;VDSOSdR;F@1QLSCvd_ukEP<^Cdg~!+~RyDJa6*JeWzQXbLOTt@3XNQ9%Yuo7T
zrh3u5SMnGj!og%faXM<)ECSF$z0`vN)X=^_V%|^5a}1&!aq>t^keAhu+9chCq-=|R
z7qP`hv_HW+jQ0hW2l2H&5DlAAOjAC=dG7;+9<}>pjl<FNiv;W#Dr7bap)H{dgz8?f
z))3teX}xU(3ukIO2D&XDmL1S%;?xJD^D*gMpSc082g!aB0m+3HBFCv{2FRfBBuZ_<
z`x8iktCU*xoZGK57Iv=CbL!V25h*UA#itzWPBzn<w`+@jbqQ)?cbA;f+;;S#(~C=X
zQrn=fn5Yf-C(?Dyl;=I$`NbvP3RZ%jm~z-4>P)#s&5QxNgsTnF5@u_~t}oe-bI8~M
zv=|vYaAyeskP4`@xjhO3oAw-LD3+5L&9gz@PVz2C@g3h~(h*$TboSxDdJ!MqRm;Du
zbJH;WAx<Tc<e&iT;@ETv=+eN4K!c`1j-i|0?xO9NnsOW#!+H;%RJRUH&@}A$h^?-6
zfYWaKBinoOr4e$)z?SU^dWpIO>^ha99>m@>w?32o9{~%oS#m(ziH|JRBS=m-NH;cP
zth0&HSjZTS-^dTs)qr3Jp^0JIzUc7Fz<#<w3;hX>kADdkSOad1e`+J*v4uwI9V*NP
zp)!o#@e}jx;PnAG!SQEt4h0OI_jtSb=_rKap--grVBNr==fT1gk3^_@u>=9*qig?7
zLiawho5Fg?*6Du^!<Xua^G0Yp+`H}I1v|<6L~CBm8<uwo&-+GjUhojne_;_g-`1TD
z;VE7GvAL8|jb3@fhkNM*8-3K92<ZT4F6uJWMyq;e6`hgl<AA`J2_wXG6&ip8;46lT
z3;|qW2bhBPzThqsGOsoeqyh(ESt&3s#3mTCnqj+Ozuf#k+XZXKLk9G_{HV72Z3^~s
zthhr8NSU^i6G5`A&qQ1(gs{WfFvOAtv4T4rKZCJ^9acq;*8%+g*cZ_e9CnGp(VaO)
z=;9a={1^3(TRYvR^?!x1nOQqYcvbPGLw?r;YDj3f%}@dIc3A5RmAX|uhwi4E&)U_K
zHYo!;P1@8^v{O!l@+@!3>H)q_w39CbOsNsBDD7W(<0m3WcL}}?c@Bh8Q-21y95g{7
zS^8uB_~o0u>S5p;3P+;5>Ubw54@owN821$>D4j_kWx~C^y7rU20{i_iqn#9}NSlLK
zsFSe&heF9b09pX%h!%y@?(<>oi(0+#X5cnZoC4wsus07q6&c92k_mD$nfs&r`gPE$
zUm(f5O$PWG^mYp&n_j7k_TJ6o{+vYn@cZ%ZQ2*mle@L(U6=uxio<(%fKKu`@`|!!y
zMqZXyg>XkV<m|xuxbY7dqI&ON@RexNG3hx-+OE->BJw&YFPNl`@;=4#!T|2Dw(3g|
z9h_kQLF~h0V+AOym14ohVX5v~L~9ce-Hg<*I!@AhAR4{Z{sY0evlfnFwGaivdCYbc
zjL{4jcOTPU1bpGU30z$}n#|^za8RIL0)3ozo)##a9Ej11Q7yNxAf@XJDBm!EWX%gC
z@DB!7wop2wKX%d(AP?WZ>jwSvGUW3?R1>ZV`iuk>>cBMtX_BxeQPW}e&7Bj_{O`m*
z1HK8MnH9bX25Og}1YlN?`|uKIrI%D;+%>`9@Ma$5zJ>6DDQbgV6I39&Bi95;+MiGy
zOd-nxr811<o6#f=X&=Illi;xgz<T8iKCZ$uK~Eg2!1gdcJP&wdWMj3YKslO)mCXGT
z^Z}GH#J8~Ts4hH^tbKLUcy$D-g#@bhUJ1nd>Yy7K2K_TJ#DL|AZlXvRH&NWHc0Vv_
zoi!wNinM87h%vNQUi)PQK!c5zM)~N~wO0)mY`x4yh*-sr5K3z$kwP2+GEs=bKlVu#
zju2zTy=wRYoQN=_uElRdYKSknUHqdgKGYY7R3XMSz8L*G8iAP93LAK&u3M-spCmV*
z8Bm*Gs5Ri69vVSiG=gEknvuHp3TxJ#2&q}OBBW-G&_4Mqp=TbnNv%U7l$!CshnA1#
zqR;qP^yHrW_9AQuP<dQM_(JEIzj<8G9H~ZhLFVcZOnA1RKsX831tJU4CFU;!MJD4?
zuG}jC4_eN^M(wl+@TGFFDajN9jEUMXRNV;^Q;4d8P~MYhI`^5<^g=L7e~5S@bbml-
zp7=Iwu_gEK@Qxh|*c_$T{Q^Qa`b|U!5Zd}Rj!HSY2&X9<0;RPFoc3c4$K{8?HJ!%!
zA<!t~ZL)TOtxz;`nDAF3QKx)8wE2NjxPj1&v%p~Ti;^Dra6|Eb;KkFxW)tpm_6n;S
zcxr!wX8@L=gx|4e6??8@&-Lv2ID0<9o_}D^r`You_I#E-|HPipv*!!!`67G%ojqS>
z&sW)V1AD&4p0Bg#8|=A}J>O=}ciD3jdv0ORZS460dv0gXTK3$@p1av|FMBqy=YIA)
z$exGUvynZIvF8c){D?hIvF91~{FFV5`V%zfvL~ID@Fz@Q&oS&-)sJFUuxBBA{)Rm>
z*>e(m-p-!G*)xtkBiZwpILiA2d!A#@W9+$`JvXr@oi_F-{E0o+v*&8|EMd?2>^X})
z?_y=9viFhfIgmYHMZCE89*q4_^)$9JMw<64aO2c~eOjmt%Z1UBl?WM>;<QgoET{Hm
zHK7tF8{OtA=$T-~PN(=a&k0O<T!dINCqz4OjJBWH{lswk)UYnhQ>zT0Fx1r*+uQzn
zSmMInATD9>@1ifR|KNZP6y9MtjN|L7ow^Gv2DlqqbHsAfs!uG(x$JBc?eb&K5VPB%
zo`;VY>}5G_E{~IIriW_(K6RaBCAvCzWhmH;nuv$~j<p6RNH}Ao`R5S9hjO@|yQQzI
zkE89Se3}7Wtn|AE(oRV>h>_9@C-*LZ52F&<{P2yVy|x}G56j0%_C*;=rAH4Oi0!Oh
zhyj6*!8@W(R#Hy8WIK(E*A-|94r;%F^x&Xfp#$1XyiTfdq;|KeKQeWNcHeohSNKSq
zMgIcdgbe{mi|nrE2JO40>_mPC_us-FGnE%cMb{L@`M1pj*^yIWj60s<N1#nG8dtIa
zi)BD!R^Acqd0t-n4dme3W8e$Mk}3MFN)qx+Zq2i>vo_Qt5A|_G208s<Cy6F>miEs`
zOY+}LLXw(MU6~<^_SwgvYgRSEdku?T+QczYAqHk*WR)hJvsNb@qv-01Hz8VE4S86N
zQ=_*d&R<s@y$PWTt?=%NV1d^x?X5kG1h~@;b*K}F{qW7nQ1@me?Qw+Fi)-lBlUnz0
zI)Uf4-@!bwKZ<ah2yalz_r$~2Dm7X-#im9pZtW_x0M&84>7n9?bG9~+s@tc<BA^Wl
z;4p+%2+9r^Qgf=xjvB)E1J2wL3lYQJaHTZWObgM@pqwYbEP=H)PyBjph+$Q>BljC<
ziR)k(aIbs9IfHV~y=tFx@ImBOCZb&l&}KkLj{O^bSG%8YlJTJ*Zc0rwD8000(BAm>
zq9%Ami(So<^f`}Q%aF@oPqp}-<(sfFjyjW!t&m0^24ytINwjX&3Fue9orZb`6A3mE
zjhOP|?nFPqDcqs?{)o4>lSwT1<1pHEmb9G<9f+4}Xm0|ilgf>*A%rsU6OUbMo;J75
zUgd09*h4l4R~|AbTuC6h5#_<;tUHh6UUgB8=1Xw6S@T=ieBjbg7m{A{bus^Fm#o*2
z)U(f33wI%`{?`3ZF+73wj;ZkB=cd+c1QIbnDa1Np%W||f2Au;gXkDn2jHzkoT>(3a
z(||NsXEU33UO|2rgyrx)WIXLB+xmUIfuId6zgCAGOx55Uu_4BFGtS=(YT6a5#Ayc*
zTTgxv4BCtAH5#wJV~n=}xdo|9)E1!NVBr8Xxb-hTUmD^;9?%{4cOa5|;&I|8-k5=V
z!Lh9y=SXVIkR}~>I@Ey)kb1G>f4r=3zP$Fl;bKP3pA8pjQ!I>PT^AiH@)C~+EQkRP
zSZ1R{lU@CGYgc5{VnJnyE<e1BeSlmbKKz2|Oo$^s0F%B|YZ@ubVc<2sSc0-Zr<koh
zLkh*#98?tIE!yf1<L7Gm9mZ#B(>jW;siLY=+J2&LxIe7G7Xu8Bjg-R1o2~bUQm|VX
zj;coObSlZefxc3gI1plZCcQ_LiCMyE%}3inr}e|<oqgET!3P?A?e)$+JlVkqrl?ra
z!3S1UPT+$;nAS068RfwDb{`T0A8yFV3N{A5w;}^8@j|0Mw80q}vas(*I{j`}Z6(~^
z?m`f5FhH^@pXNC+Ucn`^@2q53;CpLdSjKsQ4;^Qm5cnR*2(8)ni&$e~8!%^r5P{W3
zmUmj$8#8em_a9(I%5&UMTNGtH9QbaTO`Hr=chG31tunbr*mGywadaKFnBr*iivAE9
z+8^=`Q)iRYv{F7D6SLY*uDM#;Bz*(|-QmQ3R#44iX4`W!&?VUO$IclDC4kyzzczzs
zZv`{D(XODV4hm8;lC>SO-gTCN23^g_)Ee5-2OgcRz123Fffmax@c(d|V(5eR!7@Eg
zKsC5kn6@eV)~14p*1{!?ihu2f3@h`TwuMq75G(Uoope#GdsPWsYT#Q!+i%niRAfu}
zWNqqAs0nx6?BbiiIt8KJoJxFqsLc?xemL6Mhb=dL&<=th#zrD?H}V18Y`LLWg6~2;
z7lS)NME1TLqd{ctTE81h;pZZ5Z`%eoAmAVk+5rAR@27=939bq5bgzO5I-xD1g3xvs
zte-nVTMN+keLin2L5qcZmBpak<z9snN7~h=D^R69H?sABzS2=~V9HraHBwvHwn&0D
z>pzbU1`GN>SL=6ohfo}PV{$4bs-x&k?J}PN!G&{{@B$74w<BMzlk5__p0G*wJsVnD
zUphc%KG?7Ff{+C8`2YVpfPm#z!cK!>{}>*g5uql+Wbu8l2)m2$7x8_I2=$`3-NMV+
zAVNKUy-2rGge4-(6X7foT17ZkgntsDUe53&UjFSOw2E++2(v|4D#G81@EH-lCc<qZ
z+%Lk<MR-YsT}JVG`ipRs2q%f~ei0UlaN#(f{(cc!MHnZ_8!mqL6`?_d7jNhJJ{93X
z5pELU%OZSSgeyh3NQ4iH@Lmz#F2Z;bMvCwv`9{azM<U!V!k0z3QiORToFT$4qWxFN
zr8@q;6X8c9+$+L&MYutPV@3a-5x=WMST4eB5zY{yRfJ<iI9P;65ndMf^pyxFiS{Ln
z&?G{m2+KwNSI6>pe<1MoBN3h#;SVD0!rbQ>3?>oYCBkVUoF_s>gzH84f(SQ?aJvYP
ziSUdFH4$DFVfWj3yG$aSAi@VlSR}$nMfki3H;Qnt2+xV|I}tXCFjVxrj|k&Mc)JKK
zBAh0|c_Pdg;Ytx!iSPvxzAnOTBHSy&b0TC&f=9N1tN#0KF;89<;mXmx|NX`M?k>V6
z5&x|S&xmlp2tN?v8zOvOgzH53tSG-w{C-e`4iTn`aFht+L>Ml@%Od}GB0ML;MiFio
zq28~@ML$=H@bB&Vt*2`rZh47(k>M{igoV#P&BK^ic-TI@ae63A_wGC%KL4`F-#%dn
zzu$OnZ8}9mp=Y=s|2@Bi8rYG2yiYE5<|s~UL8&uWDK1@ZN=zt&VHHH&oRa$soXe)?
zPbnyL24eN}6p0ii1w{+QH(pL_;)0_5LKJK($}^QZ6<29dnJFO;<%;;Wk*)FRMFq;(
z;E%VB89N4s>jqNF(ccnhSy|2kXV(1Ua`rn<Z+TWO>j~9CfB9%(aMS{)l2uw<tYj@*
z>|BoT^t-IYnOl%kn3Z2#nCC3bD#=k68h9yLWebZ-m0Xu%m^?Gx>d2ZhecG&<tX%#(
zbH?<0X2=<c;=d<P&&ZfQEvq$J#Lt{1&zLnk6FJ+YYmFB1R@=;}v!-WS(`VQw&ze5t
zfp+O{{4DaxnVDAXAqUE51!vf%&F-K+7Hx18%%4|Qpg2dD<m4^}Aj<$)Q3UJX%-qs~
z5`|*<-^|G~(lgO_yG^#*X3R8XI^<c7^hx?>L+0!mHu{}jRHoz<V#o`Mi%j`BfPUT>
zN>o&ADs$y7G;tWWB9g0UaZ&NIA`^p)h%Q6=nf7~}%1k~mQ`op<VpwEDzN;vgm0eV<
zm~xh)f}Ht<PPlqq=qxNu89OGgu#mNB3ai?r6r1=+n)H!0jYudPVH$06mX;Qmnv%;C
zIR4CZDszfU7Xy(4b0G1S_KB!nP9;6JxX4kQ%er_&8hn>a7r2%<i<Gh(KJxrlXBh)7
zAcPbgMx)wSg>tCFohG=?<t$yEUZgln^K){YiRqcn(z1dwg(hB`W=}5WGm?!<QLeMI
z`pU}6R^opF10Eiei)jjCRuru0Fb^f9<TIyFnKehAVVjq^Tv=FLB!bDsrOtT?d1Dgt
z<_UzL&QRHz56rSppJtz)VVjsh<2-$)jRwMSe@>yx$zLg%AuDUXtDsORD9XxWzcZIR
zii;LxO(`v2a({6_UZzsYq79kLktu6Rap{sAg<>+71N>Q;Ii+RJS*{Yo4E~q7JZlmP
z%wzSibd#qDRLYv>T!wtp=Pv^7%L3ZTic&gLDFrT2c_N+$woQEck`mB{EFNSO=ebyA
zGh9VQL=E};88e0<KkA!Y>?+JN5z-cyIEzdr#bxLln<}F@HkcC1NEd>3PAMp2U}p`_
zT#gd6W)>_#U-UN7hs@<OmzQO6Y+K6nwGJ45j~qGD)LLg@aZa9zkB|vpSbBn6COXN$
zM)eZPl@>23%~>)nXNeBD=`OT5-?YTJ1gpZ$27}%|WuenlQtBKnI>G0==m|&ZXzGq(
za!%0*#S~nBKBiqzPLs%#n2<*c4$4;wmN-p1D%_TwY|6;VbDA(M#|s#ZDOqk9i+Hxm
zOfD{2E<WgasNTT$=}VoZ%Su7%c%oLA2)dv+X&iH~<k3=LSe@sh?4V;yF$j64-24T3
zIZBRcNzQ_TTvL&2$$V$2DY4AyG|kV$e9Kx^fZ;Av&?L588fKyKWu_U$OLB@>IRL7w
z1np)&@Mx{S)VTl!pfnVbSG>%WTbNT;M)bv1GR9f1!=L@0!%|FU2}D7&78aD5<`k^R
zDa}Ixg@q<D5U9!o%DcSSRcgvDUQ*&h4P#7`3kz}=o2EI-6-E(@0plW<(}a=0_~beZ
zDb`tDfUg)<-eg|3j=qMO#revz9L(wt=6PBBNscxOWV@fp654}SCFU2qzy%Z(VOgi1
zmokWTUM}ybwV3dS)(C;WBg*uya-36^mk_KlH*$&=I1MF?3?<}&_^_p*eLILIQOW2x
zO-2DVgJD{+K0n%EbfC=y7`@#D6j3gaOYdK)^AQ)Aki1c*WeW?i(k;s=WAnY!BB&XG
zKT#gwgmKl2!fIKHAwi5-rN>}!3PGjxb_);`n_Oki@vN-b3>~oo3t}-ep={m^Ox~r=
zgfc>_p{CI;6GbMJjn;9uuz0~x%Dim8!O$+bA^G-X(+uYVlXa4bk<Rg^hgjx^6Usoq
zBZKg{%!zSwE;nJ`xSR%SL0L&*&hh{y(fdd6r|FP9Hc;+VCnhjTMUlbfiTTOdG_-4U
z$#S-$aFC^?rD2v~1X*rQJL$_zAbzfx>-3xGV0ti50-9T@IMId&ZcSKnD>cSGJ|Tms
zBBNJ1lnH+~K!`^N^_S6c(K>_Sfnt{_ub2%uh{F<^Pz!UGI>Geh=NIG_fE_U9<mQ5D
zHI)`DSg4dmVp6b?U6PZ#u%O6E8T2X4;>*N@6ZP7s+8)T7JbT6r+q79(vuE071jjq3
zPnI278S-R%`ZOE=a6`ZIL8!nab=L9B)&)tY$a;=3k(_+c6u{bqQcUw*ib5T@fod#c
z6bTcA>MzC0CHlmP{CIQ`^a#saE4wq7gFXfH9JF7oo2~dTZ)RIYG_%l|Q|83v0<pq8
zgG_>2*oqspq>3KU>Z>nM0$hglve{+MQn^UZTT(z2nh`sMt^6WG5EG`^QphcNSgMNI
zuqDnU4%1fdgfu{;fMgkhCRQ!9AV(+g1^Gls%M_YpLrn{c0iqes63A8zy9|ar5L@~r
zej3IHeO-ojV3y7&PNsF8Kn^Er6qt5HJfCg`mp<<WJE8ZN#-TM2TB>7Nn-v?WM269&
zj93@~bVLlfGY^YD{xD%^oh&oufR^KjE_W3mif84L*Z&}0WFQTwTyQzL0bXf7L7Iq{
zF3yQo{=YNd0x;t<vCWJ_+k(+Cuz*v18*(VVw8jg9BwC7i#-_AkLpU7UurGSYkUp5*
zA$SLqIX#&{E_Ko(5BefrmgRuN0NXgcB7;{AQ$D!nwk*NjdO>17L8QqqC|v@6Jec1@
zqSmos^bSh}W0MSm{WgppW6CLAK#LYFr=uD3M9(>;VApki2@E6>u_=;JmXJ$zgP{fY
zY${ovMO+Fn${h4QM#PyCOG#QI&I<hL^b&A}5J#pI<}AQ(;(x)cbM_qbg-RjLo1-Tn
z0iLWlz<@iz0n^tK#vcTtJIR+DNYF|bTtzDiO4`mIRu%Pz_(jId2O6Lk03_nnsbgN*
zFvFRXw>*gW^U^T?+i-02!7<T#;cQz!;0k(SO3!Dg(24;|p|K(6E_WgEM3}0}iHB!A
zVcP<*W`h%4P&NwOCvk|ApbXHt#SS>b0Ck5SBM1~=I!d$ns)kW4Qc8;p#p-V`6c?AU
z@h&PZVytYAODU$lfuqT#hz|0yu8Z{|i!T_^8wgQkiBriTMw}(W1FJZxZUp}o_+2b;
zME@=j$zUL9G7qa!K3c(_$Wx#M1VqmCg4mP%10Zqkp9oV9SpQb~GmCL!dNRU#NS=j-
z%S}38F@L#W=*uv+M7ns3TWK(xM>(Zf_4RLhpPotXx@=TVj~}+(*X_A}yO(tR{pCd^
z<6g=2zVvk73uCK3>GATGPnQq&o;+7|`q&?n9Gkj*xbm&lT}N;E=D!B*cp@)m^Po$n
zjf?D$Z2jqTdAn!Ti8K9uUwyXZzV}XCuCF}qzW>?6-nAPR=dHLh|JU#KIoC~}7t-f+
zVVB(8iPF`dqm4BUrXuriVhS8z$=N4MA6fACqhEzhxaUOp)L$#3k1c*L@|CL_-Wyl=
z?Awz*+V}n^mMb5;{$=5*v95V%ZAYR%`t*T`NB{MD^6BB@4WHjvao@)ceRCRjym$HC
zn}_Xw=l<uO-gZQK<-;v6Yza*?Rz+mJeY*SJcyH8OkF6}ewWnj@+<y(qshc=Df7284
zr%Ss$@=3@Cren{Jj5&Fsy7H|@hP=0_%PU{)_-o3EE!yArbuGXBia~mOL$_z*p6&6)
z`_YTmjGnl}_{YM${|cFx`=87AEnYl7r*Pn@WM}0x!~9F%Ki#G9x37c@sJm=@bk1(+
z=e?&lIy1eSdwsiQySlP!>n~>qeKtRR^qJV7RvusPbey<0H|On)!}q;6UNL;|()r}~
zPsp#Fz4zm%Pfc91`{>KpE`M}<k+)#-FQ<!cpHj8p-;G<c&y<Z0w|+e+EG5ek`P#mf
z(VtCtBqH-QIdnu!Ow{(@nY!;wcyHmHcPfib-A?3h{p(jbhkIQ4{5Q|;JAKR0XB#)Z
zyW!*dn<l>Vz}o0{$C&4RxcT3O+iFejE#Gf?XUCtqpWhVrr(<s^Y4@D`_RVF-{t`R<
zlW=$6Ps@5m<$mcg=RI}Tq9xHA9$d5{>PU~T{^IZU<cK#6k#D`wb(Qr=>Ef}MjE^n6
z6f*ew&MpNH&zawRV1cvZkvj_eebZ%e(b54YuAfUfUj5*TGcgD6{cJ(;*{xTuT-g5j
z<n5bpI{Em<Z0)6wK3e_c(ZB89c`9|rrL)t2T=4$U1#>=l^|LPT-97b=x9w+=qE9&n
zM84T{Z`d8#E5hYn7qZXJKD%JUg~y9-TfV(u%KCS54)k~DfAHe5;)FZSFP!o8vhD}N
z?umMTYv0hJw+@e(z1_TRPh!-EZ~x)Jcay>wy)*A0{*QOwcBJt=^@Y=;2EFn5LmPMI
z{dxGM-0z-$X^|`P$t9ux?9%P|yYJ}Xt6b2vwD%lC#H07_c)HJuE$81zdh55T12%R4
z^W(?<5WW56*PAbVy7K0;pG2KFcKmmf&Y$?P<(<zK7P-$1In;Oi+J}a3ZTe!_#^Po7
zY>xZSgT|_oMUsENxl8`MsF0ri7o5K@cw>IcasT2R+mXV)<>w<`{NY&i$Ftnw({{cS
zmX<So!9SY&W;bTsQ;`12vZA~0U3Bz~Papi~bbi!X%SH34J7>P}!9VxB@c!p(j=X)3
z*Z*Gfz)K%~xNhgR{mD<hGxOD#-i?pAqjB4lT|Pc^%bd?=?O1Sn*q9ah?`*j@XLsm;
zg%3ZKR6O#|?NRUk?eXrr2K+ySy$4tnyZ89L^hN4|bW{+eN=LfDQkKqwpcDb=y@OIk
zdhcCSdhfk=1PcfYNVCvI5ET#<M9_a0@ZS5|_xV2W%yY<mCOOGW&de~IIY}1q4CA)2
zdC<=QxBvrPu(^offDR8g?x3Tk;-1(2@DjsY&(h&YX!P83m5%=L==H6`;kmsPVq{aL
zMnH8_JWojW7-MFHHbuWGIm?{Rr0bq{GJMPI=1ev3`L!m|nWjv}^w1DIgG`2C+A_$a
zw}(8nS;Hb_#>QT2jE;_f7G&VBvq=qK<+FyStx)B}G9l_q%)H9Fi<j1SKB9KlSwrRr
ztm+5flvf)YZ{{ErI7S>??2cXURXYfXZy9niT_q$SauQ>t*cCx6)DsvFx#_xo;kR<w
z+u!BtXzmxtznjDuC7er;_^UIAradl{)Mvizir7}Y)E}Q+k8b64`}+)oa4D{NeLSSk
zwnBjUMg$MCe~3}{EmkyDs%!^oT*x|0asQlH56NJznEGA^b3#e_xzY4EN<zqpk+Q&y
zVvPBr^Gls2FJ0q~b}Gl*f@zt!$PCi-B(2Pud05%Vvx&o{&nd%)-;HL>-7l>9ILtTc
z%I1V34fH8Usp(j#$lkb$u|9&cTrY7rwpue>^S?qktY;~P(k!S>!dlLWrez)}5i&jQ
z<f>U>t@?_RY2*o^$Z@PE46k5Se({M)2gQj9_+{&5wfw_JhOb4LRm78l@WM4N3fym<
zI%*AZ$~Ro+t$YNw0!)AJu6^w3KmP5XgqpgZJ3MkI5*^Y(kd)=E+gT@WRZ^;!86tVE
zEc5b<!zRMW;c9ZE@zxzu$34U=nK`Fe(tb~Q3d3D&7Wk(=SI53UxYw-Gj7SFl8c+OS
z6Qn3Kl%bP88t!(x!_YQ!-AjIM&e8B9l85R}fC%wp9tQUJj1XxGNM@UkKuB()d3DUV
zPE#`V;NE+^y{)IICH-4d>2p6eIti*v;}}~U<^>*eZE=Nt@o{)rsq8xG!eD&B%Y|54
z5}CKoB^Z2Qp}Veo*=kqg!)`rxVSgEeO;RX7TW$_#YxUsj&z$*ViILrDzvK0>PKUC<
zW5fD~(u6tn55z(%YFQbt?obh26GU)b^zafOXk2nt{*H3c770Q4des|SXwDoCldUaH
zj5Lk>j0>GvRHaC-A!3PZe(sw4BnsXUiZEuuA#fC<e=0*I5JpPMA(x4?!70-X=song
z88mFJerZrF$YhTt^GOM5!@G1U(D_04gP{QO=%Km!%&d;jC=GH+<yOF<RvOQY-)qJZ
zbIRyAo*NzM!b$5Lmr!%L_@8$JOse{=l$?{49r<!~?yieaNR$x}ve@ggLb<JEV5>eQ
z=|#$&3Dyirh3s6>U5lN=-}2&6o96S!y)0X6b6rcF=Z{b&Br+k<YytI2GHt9V*8{3y
zJ4wWvoUhmM?Is7ScYB5bgQA2wU+;-2@7Glmwr=N8<Oz+)M7tlerl9YCQTu)@=hvY)
z2Hgnkccp{`oBhN1_5N|VVbn;xR&7es1j%u->97ovrLCL9mOtqUby8-b=XkQuT~{(9
zaxGwERC=*`;i6amCC&?`7b}VQ7#^8@q3>U)p#9!tNB8{OHHtr(`;^6Ob+9CL5AySd
zQdBJbzt8)|w^D1Y`qC^SG{k1ECWyx;zmRM@Ad-;!svtuY8ZLc9qF2gF3;Vi0jfsfM
z{l}sr18=TjmC*`^_UH*TOr`OEa+nl+j|CG-{NTV^l2CT#x4;(ri`zVG>Kf)Oe(brI
zFF#ykqS|F;=4kZhx-{R;jW9jpbUP=_vB&7fGjOlrYS#1byjA(4e7$j5uKOSL-Kq^P
zdOQ?*=gxQ~#fuxMeb0S|##8ap)Lrj)Q31$iwFlHtlKaf&WB!Gnfj%i0<-A|!;`$!H
z9P+E>?R1P#2ymJ|6m!`~Jal#pZ*sW(*~=dLhJfugv0XdpgBo)gDklr;3T`v)z75mY
zGsRXbU6z*ZIG3&C>=td9hG&#%@~BiaFX^cH+)YwFvY1B>6EbQhw-~Ayz0cIh%zBEb
z*~VA;p((4_#~Q4lAovRIp-(2uwWcC>AvQ){%XUZC23zQ+bmv_?!s(V<vAqX69pw@?
zme2cZO$BsouZu4mF6c1b4*z0pP#00CFPyY#jPr}r$WYP6#EGx!P9Vdzr53mS#jj&^
z%X38@D@F}cYYub2KMLBke!wH~T@_Ph+ahCH{dy}q|FhYi>6g`IzV*q-FB{P!6`Nf~
zcAvIeDUY8`j2~q?X8bP0zxn4XIsGAn@9ZzRr`bR6RvR5CZ$Ne*g!F%7yB@j?(?jf}
z!U^{ZxQD+Vrp4{Q`h)yoYV19yC)z$s8g=wWd`0?g=XbaHn4E@%3FhzbKd6bmn<aLb
z*|IL1Zl2wG9aPUVg<EKj5*p1Nw|8BeG^S^rApdPL$e#N6X#m%oAr)ELXCt@t`hQ8K
z4de$;_NA@EdP{3GhI0lJfTdnM-+>Xm@FY+ek#`DzML*d)#?yv9Dw|%D<aOkf$ScR4
zOvka2@>se!y+YSA<J+gpX@h}_sRz$GbH=IyvePNW9_RTSK4Eof%A~~edZ^kV@aX>d
zZWjNws5pW<YOy9uB=L4JV+o(11V+Ezmx~Ej!HsHS8H$Xw%nIot)el~)y%;$D=3S8P
zNJ^+hv38gQElmW8`&4)?YPl?<ovCyb*Sh?tb76(Q_hz*k1!oOKrAyV7p{h#Spq&!F
zO`+m@H}4k0Wm<}!avtRF%1h*xANv<P$>`2Uc|2|UNQd9pT_W2Y^(wf9`0cBD$vUzI
zb262>n^rNkwwGr*?kH2W<NwfU6?mM~))+nC8M4UO^~S`o=ZkP=H~Rj!vgvG%c}`gV
zwWf(eFT*@RaC=_#-5rN3ZDKP|wm2FGqmj`2mWy33SP@t=tv%DK?`Q4533)9n-Xgcq
z&(WjPI^-`}Kc7Q>=yp&k_q^9{p{nGWjXc!-E}P5fE7u2AX;ic@o?k76GTA8F2=?_c
zdbtFT{7R;w+80W`Q0W@M+}qFNX`5^$&!Hd@^>$)fe8hJ?XDn|Ughgb0xIP{cZq>Lb
z@!k-bFebwx<P}c7`f0^W{|3qI7g^gL?Ss4n?(L^J8OmJzmkp76*~>p%R34;2zdyTQ
zB0ELfd*q~v%DKkf!V)(~o1T;VfQy|@>A2mW367ndut&bXu3UOu|NJ9;nNpVK#0vtG
z`*~6JWB1OJmA<T8B6!dpYC3>F;hJmGLc_Rb&|0=9wLqmF_OX9_F)+Z6lyBJ2LD_2{
zpNwSqnQfg1=QCV0_1xCE@0l(NiGL=K0<^5ZGKjvprNQ1t${~x_JhW9?SP)6fNMHLl
z=)sJQc#`)7_ueJv6r6oFN$bR{kVqN6q%Zm@oVun8jRFJ*#0#Yw7u&~nia#$T|Bh<q
zMcB|h(#3XV|J<Rx?KaP+{(?X7=i8ef6)hg;$~gRd7BWd=E7Ipq7VR@EYP?#lwPYmw
zM_2Po=K2qh$e3#CEm7(N*<jo!?9!dAmo}K;-ZvlC%q+&dtThsnY&Q5}GXCLaZGe{2
z6y4`Pj?9wggoubYA2$S_2gk>|zRv!_QTJ0j@y@N)U<m<zi4eksk~L?cOVGY>5~pH`
zrotuJuD<XiJU&hp8dc5jHM{pN3#P-eqrJPiGcU|#FsZ%R^X9Eq?(M}oo+z@0+cTP^
z@B4^zAv4l*jKA%$e88h~&@c^{`5r%R{&BN;{?3hf!hX?>Cf_*(#I}>U6ZJ`8Au{2X
z1;5$P>C3p;_E}xUT?DgzSUn=nja52?P^v6V_X~eGM~h(Lel4C$&&XcQktdgSS8^d>
zbYd*`iURLi56zNe`I`Q&9&>;6!sF%TokBgOblR;l@v7qy6PP0YSB-lXQ9Gk?Yzptz
z;Rlx5K72ogFQ&lX)UoOGOlNIw4E=0~%~K>YC*7tauv5?L)_x@QR)jtD+QZ~@t>3)7
z58HIvj^@|1Dcp=>y{MOjM|nlcDpaCjifb}BOhF+X_mUP@D1R8;J~r4;$&|ji!;By7
zs9+}jx_mTdXsk>$Kn(t1+L&#?xgqMF|Mb_FPhF-j7@VuiTUxz%emBUcRBgs?n6jSK
ztHLO+zfF8704wl!+2aonsaT0baz&iA8RJW+t;74>-bi1ace$$4HkrB|giDyV)>`MM
zLQ-&%w~j$sdP1JZ!1>p}kGC7eNjBP-%4$b^M~OXC&DyMY@bTu+_rDhbfBIKav#SpY
zwc81tp3=G6?<H(l6kW@<Oe-LL8!71XuC;J+YU5(Y#9Sm{vpRP`oqyNIRvv=Ho(oAA
zTF5Q!Yni_7wz(;XcEjiC-@Lx>^nP`7?{$-Q$Yj_vO2^DwmJX%8$L2qMqpe<iK96OD
zw7_?qJ0!bq5eFstF6qqlT-}b`WXcr2ns4LgE`_r?u7>+sX@Vr|xaeGy!?mW;L%I4)
z$G06XrYk#t$_mapt|%@T-F-JrGFCBu-GFV5zfyZ1BJq4iJFo|3M$O!~*L17lDa%-U
z+QZhaA~Fu_*6cfYk<cOHx%xVy4OTuE{|J3sby%O-g^Fftp6mDC!4t9Gy5VO|Fm-NC
zk#o7#g+<{vH(ko<SuI*`eJ$io@FJfK@>4jSurz*&G?Vs$JxK@D={ir6rDMjLg%Os6
zgZ3UH@C6C8;-CFy4$*YPPy51vRpb{8-Rt{K_EgWRc5aBGWkV~byY<siTcp4F`wI(H
zZ+KK<C;fMSy;ir<s5jG>Xwn`n=!AH_?%-cmT_}QIpG})79DnLGIlcEw-fqKQ*m>@#
z$|e%=#<UfsfXm|{gmd9T`8oAF?@9b$XyLg@v17x_yNSrjUl22e>)AG4VR8v;XtRDz
zIBK?<V>17flymMyW-Ti7^0S%JMuUdyG`x)@K`mWIlD+MYRbN^|n6i2rnsJ(!i9PEk
zvOY~Ii9ea}s=<BBM&<F2I%LIyh$7WeGL*#0UfS2*uymDlj3|Zh&y#bIYWDjC*>&4w
zDGCwLf{BY*-)!yh`+x77>lp`H*$mS;inuvD;D7x6n&Dp5B=;iu8(%}4_o^d5+ZJ5n
zySIMQv~<gx*2YgwPZzA`ji&^N&GtV<E_}N&-eI#-+^J_H(}e$Cxn4wVmW2CF%{c~j
z5ggSYa9m&01=Fp8Qk#XF0?zSU2)k~dVY7zVPU{f*D=rhcH*A+hMu@%AI*62TE@M--
z-Na+#8*G>CuJ0n^;BGWbHfpfP?VtHm(u5ilxH^{|b9=t}!XwN6+Rql>*zVdFJjQlP
zIro?lzig9KM8=)KCJYavN14{68ob=<d)}{(yPCL}K`eP9{?Ui2ZW8}@TP;Ly7ns8*
zCtmNoUY4_c-*9m0O^9<)H}$I@ZEUw)YQ2_dTa>&ap@wUJ$n0IM@g-lvu!xKjtg`<c
zm{;4GIsBQVb{td8J-6&VLo)GI6E{Rx9H*hb#D>ibWlFuTVyC1b?d<iodfZ-hZrbpj
z>;jRs=&a;+S!cD*d`I@6QvKKi{-!@0U0vT8U$*y0>olbBvo;nKx1&VxUd`aA=+5hL
zvdr1^G+6ucJ~dNqHMV8I=5paqZ6xXz9UzX+GsIh9;KAOCL*M^&3<7XL5%XYf9-RS8
z$3fitUVDnS3`@e1@bqWT=c1wG{T(WYTkFv)dvn8;O-SOV>Hv-G5T5vmOvW+QehO`!
zITmv7J=aOIEqF3-^~_DtrnU2onN2fzA))EP44DRxAZ4_*Jcn<~M2550yo`<iI65-E
zhRZCxG9=AT3uVoZ&7oQ;sYft%mwB1(tS=R>@1i~q%!jbP8LYQ5Hm)vLK;&$?IE--I
zb3L{b7jUR%;xgPKA|Sj<!6@dmfDqXoGA5}1;;QSm=U~O(!L_@eFVNo{#h7$Aksw!?
zCa3ckX=q&gm9lvssroH3k6oWX_Up>s@Ii+A`tw{;+dfFV4f6nnek4!CTV2MXRH|sK
zIMNQ;VwUxg9<jN8vD`rt=8iq}bLk}slyT{!Mk5eH#Tfx*=R@-tuO*$A?H$It1-Xt?
zk#RE9N$I2+^D~)R&qm5%pO+3Nz8?;!xSP)yIrywykkxIPH$aBwP?J*VlToqIv5L9A
zxy}NAWOeLN;tv`C^o9wqXrja{v689_XrptMg-S-4xjK(ct5}z68f8#lb0|W1!U^jg
zUnsLypmeA{{R%*EE?aro^2zx85Mfnrxj@L^iA%wCO--ls+YRNo1|O?=SJQwkfsbpu
zzkeV1_e`OZ{6~g!uZKj79A+gEbkud~dY6`1iA#oLs$I@3J4e`b_=3E8IP%VxF%q%o
zNa{2v^UAZIG<MgJLjDt+1-sADwQtr79+)9AqZH4xhF=6}8th~U4RwP@)7u($+?MxR
z&op$Lo1@}EUL+O?xWmrC^H>_f_`WR@LXjIHpc7MVo|xREGyZ;WkoxJ?p59h}N$QWe
z^r>os&W#qvxYEZ0^A2I40pO*B&zDJ8<;nwN2A3rS7q9ia$kKyBf?V+P-$G;8>N0ly
z?gxgl{zCrHBpc40T(;H0>el1=oS)OXBNAil$9{oj4xJC{4Ug+{2&F4R#U5N`WUakM
zK(%v`3n54#;N_w0y40xcfcox>2obR`uJ;-~oY9<ES|j@j8UPk&LgQ-EDO8)|ScsnF
zx;_u>fJfo57$fM#90>%dWS(-6l7`tJGvxww%W!V`9QLZ44+jN_4PMG**)wS%EqPK-
zmHzI7E`;F-DPTBbZvJr8M`u=L2}z@M7;wvPh9}K@gz+^`Tr{O{ddH1R9qUQ>xpOF!
zfZfkZR{d3u%1O?5b#nP6C`8s-2noudth)9v87uDe5}(zCPUWJ)BnIoQXfF0|!<~zp
zsJOh|<9YMBwJnzOol9LLC8#5|=nxs1r1}6?6l<H^Fx7$F8bb2+v6t^VD~G1R0K>hn
zI)tM8%3}9g39IY!C~~%=Wk!TjSdULWr(yNmi{ga7cE(0@8xRndzQZ5x-^7jcug61D
zhmlfhw~~!ZCXi%=O%vbTS|X(XX$hT8(K(mRbB@SJ={h4@f$N3U7fP4%y)Irfy}-%9
zM^s7w#q1Gn#X>)wUDJ1pYu}zz?q~ji)v*<md#EQ-Ng19$|C^tMx;5UH#&=aiOarkf
zo^W+W@<npI1kpj8jKWtb>F`h@sa}a2*Ri#%L`-P(MIYaHx%Os2M3}Y=OF*wDls|2%
zL2%OHlMoE+J*&fq#4BY9CG1-Qzu9<hzhE)fP`{kZ?#HzD@G>*&E)|z|BL{c;{3XsK
zQv`?fIX50R#=WZz_Xc>sKhNS5&98FJitBaL|G4jQ(V*J>ozO$Clq-z)w2|DNG&}Bh
zryeN=M7{HVpw^7MPXeX(A2Vn63G^)Vmb;kZi<|q>Z|LQ*V<&H|Q-DH*i`e13^I_tK
zLsPh;z1Qd4wgNY>?RLeknb$mkS~yY3m~mHFn{M=JTNTf|wzTY8vA&GcZnJ0?r#v&v
zq(YTPqo#97Q#I+X4|3k(NRyFpSlzHCStIj(5#ni9rV{>kjiRjP4~1aXKKLs^1z9qE
z4>^@JF8P?)3%WbDS~rETZS?MTO5bXkCe%6TjlCgJ-l64xep$OaV9Ib=eEl|)&VqsU
zmvH^Uh&toVBw-`YUpOW%iiUTp_?(umF$6B|yR|IWjeTA5D4JW7YB2ivd(PoQtBv5Q
zFA3fjo2uB?RVK2}`PsL=nC_Xa^DVD#e2JXgtPqL*WM|ZMOxe19G(Pd{cZOs3pPTq)
zhxFuEf6e+b{LFqTcVJX~cNemu{H;Ia!FK3%wjG2XY>yD0`hA$YU_UPH@CWkGt2u9D
z)7f@Wy*Ecuq;I8H#OK|<cP=#K#JvB`Jn>Fc?Zb=%@$7V&_15dH+2$#p`XH2fA?|qY
zsL<q^tNjEkz44&QZ}O*)Q`v{!a0NW0l~w82yEQV9CiSatGC02%ww^YuQB(RdVKC?U
z3%{WkM6jI^1p?1k;ZE{ny_58#*lj#XHR-a6PDftJ+;Y4r8ys}$#nO*6EOjf=E`R!#
zx)?Z^)A{TmJD_Upu^46glS7}p%qADshhBJ;j|4hYvv$Yt$3<P^k5#)v5KppXk}wuy
z7ajQIbBx^n+bCR>;K(7CrjRVl$Y6cap1_N>YeDbcjEAO-=!R(*TSU;%N`z0jlawu^
za!Z-oGs>-TM=J`Qe^zgL``2(%s8zXCQdCwAT`AcKqAeEM<SV>;^IlPl3_SOM^J$)h
z{BD8&ae01s#*?O}9;ilqx{uAWCEYE-ucGQ-y(MlStCOr#Av3RyvAWqYbJ@0?O8HK!
z&JX;yq{jlC^U;l6jEf;Xh9+;iGljpP|Npmk+E|qnK98Yjs`;8=o}ni?zb$yh;m*4!
zGh%InjT~F|p~z^Lu0_ik&;X!1-P8Kbe)j$1f|roK1^F#4I=!6rBL2fe@|^Q>l?QGM
ze!b6ao|RPHb%)Bo8g*eyt9szd1EZyqDQx)_L5s?!A6sY7_ehYd9b&44`YOH16|9k_
zjemaooTN=teFOx>rzK{W@%avMn8Eh)^$!^lR^buj?<E!+#}bf+UP2r)pH|7kZ|Hli
z$bOk6IneI0-R3^XQ_jeFYIvESYdKpF`9Q_x$FuLylquPg`%Xu_wAXS_nsF>G+&SsA
zgX~-na@&uU=&<2T{^WZJ$)(Ec`;X4+UuP+m(HFRo*c_F&KY9M%n0@8TQnKy`1WWh>
zrlBUet`lpFG%b5&tp@5;3sU3#AH(bd0vG*;`A7%6lpTgi$nrhvY@eCoKI5Eg%~e-$
z$^3pa`6uzKwN}8bH=+!rZR{G&c(NRYwOd1s#E}I-Z)@qrZDt;DPk1M#IA7Y6WZTCH
z$x5_N;**KwOws?+s9>r~d_W*@QKNLBcxSBrck;q#1aE7U?jstT&+M+)ZrjQoFVy+w
z-~J5bw^00e(?KTp@np!epM4^>G(OQ}?yJV4!$wP5)tb70WPhw@Ua5|W^q>~qqQ(uD
zJ?NBXf5N<RiS^-4Z+Oh&OpTCH?aMC)&5}1ijGHKF1=RleOgCjN$?W(h0zvp(aO0zE
ze0(s+m+aSx+CS@pS8v^s&=-&>NgxclB;>qC65a=Gk|=iSl3gmqI|}ckQQ_pP`L3xd
zc=_ILbT%wKle^oSDP!(}_udP&Ugc`uiDRr@d$@Jce!2-Gl1tpjI43>h1Ix}g4F@{B
z?=u0WAI-<(@60!E_7le6@NL=<wS^$&P@n-IazWq|zs0SD%hNy2vh1^Q2|xot4_4o7
zRim>A6_iltg1cr`(J1Gi7Qb*9*|R0jWb(OJT$SCWVstP>V9`C6*&*w@roLF@?qk)z
zUwXWFq*u6ed5bn(>9|U~Oc7=>a!=zc{^(AW#XAMIILib0`cFO|ZFtH>VI8)*H=9}0
zJq<sHHi#7SV(GR?&GXdl2&5iqcZafzyiHGjc#W6$w-%dj+r#Yj`J-54Hwxh;YOgX8
z-ceYzN(GM0nqo&t5Yx(H(!JY8KPXi;432khN@qF-<1@dOHd7di87&VGEgPGD02gx}
zU^Di=7uE3e<=1J03)3!3d3EP@&tF_sEA<JY9JZUO@FJ~m>(4X73K$Z9T=qMVmFnRK
zkz5g?ct&mKaBJ!k={IiuS6$|>rcSo05aI@H*R`&t6_BX-G1T#1l%J4R{^e}Iv+?%F
zfVNFi@knjiB~Ri}U+Xrr)OkGooxdIjXs2SdOD=E;aRI*i?o8&uB?CMg{y*^+E|zH5
zg1`G6frqoZnIoU0m9vefEpYuki3JJH7E|=F6Hw3t1xgM%5A}dh5P)IqpsqmpArQh|
z2sr`pNQ0UJVFH{BLUj5-AhLiLK|DU#)&~LxKq5?pP!dRjZP0fDDh3z@ff2yKHgNHW
zasaLcA;<t42}Bw2Hqgff+qyu`L#UuDK%X0I14lQgFo=H+^hv-raPxw)0xkt1I(;Y*
z1;Fb-ADtiQjsj%_oC!HkpaZu3fk*+K1?L0$kwZb>59n3Etso=@5(`8f@Bz>V{mh`i
zYZ6KU$}a%rvw&^z+65H^@lQedL|_{@z(Rp5EMXxCv4I2wkpsL6^g#te4S|3mst8j-
z`SM`f7YOjXC43Farv%&fK!7J5VIv69^%)IB74RO=#{=7-*A<i+A`4E1l0XP-1J8Y^
z2#6m6<&%MJYancZD?x~^?{FXpz@LFWA=own0>&aFd<@D5ZdA|!Aku)}f$|x^Ht=YK
z0_RJ@P7sm;i3g$y_y}@pe{H}paQ-1@_ICp;0OI>W{^;Wc?ln;0=SP?iLM$LbK;VFv
zK|K0+K!+qK9pL0M`}+VE2Rw0Re>=dyTZ^zBgy`dq0-^%=8_-AF^Cl1~2ssoR>(u_h
zQ4D$w#J@bVKe(cyR{)oT5M5tkKokLg0{UqC8w0rjIP1**_W@rA{N~L5PJnp;w}TLU
zJ;edh0DK7a(e_7QGnC-`2hQy80T|eUaOlkb=sINqTns{V`Vb)UfY*RN+WxnJfO;lO
zKeN9dU`fE!XZ8noDimDTgv}sCUr#YW)Byhg`snk~148p3`vZ?ps3?dZJ+r?JV0OUO
zAVilJ0YnM#SD=rsPtX?z3hrCN>@)j604xJ|{>=Wsxe3Y#xEqA%>nQ;U67cUc`~R=|
zzYpY(w!bM5CXhZ4gb*NsKx6?gfq1n2^?}d=PCB!{H()Wq<7f7_1<V1s4uoiXMFLR<
zyaV*n_Wxh^|BEyGTY@yKAblAK(dk2hC;;97`sn<OfG`4ncxHcpz*2zc&g}09_$uHw
z5E2841)>i4C(uXR^MBp{gJ<?P2Wc*Y^hF@V1`-TJ4)6z{kG6*)5PHCAXZH66ECG1x
z%>MR(xd1nT5M7_qKvV&L2l{CH|F8T1)tUXRK^iuYz6yls`VI$z0Q?2$qwQ}3<RaiF
zXZ8;OEDiYmnf;vs^8)SyAt{h}Aew-W|9|fP0gylXc+G$?gY*R;!~zlo1P*uw#G{YL
z00<r66pZ_S^348rAf6M%H-Hd*yiq_@0Pg~Qv_1dV{XcwWe=CsY3P@i8LUetF0Z|0J
z3G~tSHwJP6@S`*P-v@jh@Y^%{I|1ea+yO!oAaOu60RIB|X#4-K`~TUQ{VhNm7LdLK
zgy{4kK;!{`1o~+E-v+_}IOELzet;zb&z#xc0Wde<77!8vi2<SpcpvDa&*y*L|6^zN
zw*hI`LHZgHqRWc_q6Byg=%efN@BN>1X8*tU|H7I5T|gQ>kiG|mWIz&tAOZh@kb_Cb
zXz;MGDDhwr20Scs7#<#k4i5{L3J(ssfQKbZj)w!G#lylrkH-vQ#KU5uz$1jv<6%Lm
z@q!?-;LyqOuz`LM(5FM|)57ow(E9jPcxGsQQ*u09v_8&xJOQ*mKLs8MTA!F2ukTbJ
z0)tSXA1M$52q6R?at;jBMFa+0C5GTYNI;KdQV1C76U5s&Te!HRJ0UaueUq`ZLcak0
zyZ@v+mc{8_;KK=ClR#f9pTEgZT*=Q~p*(z?%v~J8GyWvsQ;*KS?^hm7!1wh(`~UCz
z)8E*C->=L;e}l6lazF9sKgspqc=QX`S%QC+K^j}&-)jXtaosJLoa{V6Cq)a}6V1Qx
zZRU<H!0+~~6Vrc=#{=}jwz6b8jXo{-<V60hhrc=ht)J8L^E&NJ<^lYqPs;h*zxFIO
z=!|Xie~#~OJlav#9du7Ych&;Fwze*oC+h$FVfx!)`=lc_=u+V7bJCH8NkClu8V~4g
zcMbThyE`z!Egiw>LV#6qfrasbwV}Y?=YXwAfPG;QN(c>v0dfh#0^x=TK_nsa5FLmG
z!~+rnDS!+>RzNrS(;~^iu;Tw+VL%tXQk<=nASd*C{%oa!oUY`M7m%kQ3orxn*)gE6
zHxi&p2VsT?K;RHFND!nCf`t`?g@uiUgN2KQj|Igd#v;d}#bUzZ2fgl1(MRyN?7wCH
zEel-=HCSoDN()vxu+oE-0j!K*y#Q8Ou%hkc1bUL&f!@hX|9B~*{gAD#K?PZzbb1Bl
z0DtFydkCHOvP2gTIl0RJNd@}adV+54PXFqmUC;lef8(9c?B;9*t{zLflfKfRb0Y-R
zbUI!@?^!73eaf|GoO>1~o`v3Lq3v0ybr$~B3$$KDY^#mKLcT(BUywXkN#xS){V(_G
zmgxSM7m+BYPZD<I`Lj?6H$VTAKpn=2Tsgp>PFZ&Qj%AP*19=V<QV!uu(_~`$%zTpm
z{aN~a_RA+cf6DC%B#Kw6P_WEWC`5z-hNG#53t5A0sa5y4Q{4~zVQPId0`jgZL^;35
zykmlYfuOQ@5At#O2BM|pa~BJrH*Mm1?2~%#J^2ekBw=te2B%<fDhB6ba2^JuFnAn;
zCop&tgO@OP8G~0acol;`VDK6SuVe5A27kifO$`2w!Cx_W3xl^Ycn5>OVel>n?_uzF
z4E}+^`xtzH!9Owh5QBeV@DT?8#$X85|GmEQE{(=86Ecw3{eis4A|6o=%wCD~zBUG{
zwgcBQFNJyT57WvyG8F9LFr*hbt&ov_>jz;CoLD(>pL&FZ8bMX4v1%gdw1NolB+w=K
zf?C|Rypu`(8e6mb@*9G0O@mA0qlf1>*2iH<5lw<S8+yk5e8OC8ekfRM8Mr@rde(id
zCY0F!!>-Y`_bG=!d5_TL-CTmmITA+=0?s;R>NFwpRE`N)qB!9AO=+eTC8n}(qp)hL
z)8h@g)MR1%9Hf7InqJt1Xh-sWiCp=8KFvY3+DF#O1)4DT9NFf}KdyIC4+_P?o-4Dq
zjl(jhK>Fs0H@S;Poiv|OusCvXd}Qo&fxju7U_N88G|(K-d%K#5{K2-Wzyu1`CI{ki
zD3;i&HEt8Mg8Q8c=+Du)KPO&)pwtiIB~IgWTS(o$D57A=st~4{XO$X@C_RYBf9kgv
zk_i1TFBV-Q{Vzkj0x18>AFk|JE%}ivw?CP1doF)<C9!@p26Y1kYuN+k&)|P%E#8XX
z7{9HM+T!_ZlsAvwe||uPa}ous@Br}x(t&l$+_RQ?C|H>@Iz3*#tmL;}+bay@p^@PE
zCVlH55QB3`I$r9%8G}9a1jj#<VJ@pGDz(}^2J5*G(%T`vLaKYlifR76KFruVAYS$;
zSkX0f{wVWW{yeYaRKN<SoD0WN3fG>1bu>dvGyD+h%uZ=Z_man9$@G91Zojs`(6_|k
z9g$v~@H`YOSQV6iTRsF{e9Ojd9t8_wIAtr0^eJzz*{w5=sCT#JtUUAO^t~Y_b})G~
z4l8auEf3efbJIj%0@loT%Cg<*>PAW6d?!JEs_UY%AChWULdIYvl&9wpiNL*kX$#mp
z5~QE6{0Z4i+>@mM*UuR*@@m}(1lLbg1vuaS44!3O_Igjnf8*h%{hs5l<FFP(aDCue
z{!T1%d@3U~0qb6aKo0O;>KzNa=9W9^s#MBk<hxV<jK<Z%UYBD8@mE3m((8HH$Q@Qj
zKk)wzyh0z~nvH2i6sORqjl)u1PXA%><GTL3`X3Io^SL<qcpO$L1CHm#6SG#~1e)Od
z30U|b;P_7uXPZ{9Cj5tUpN)(K=a0h@gCV9+yp-S@8+xt`UE{DQI`sKG7m5AxErsF2
zB&>iGuusK!vAqSy^|T3C(=^~YS``1zm6k0fdh((jY}456&C0wBt>>>{323CxIrhA;
zp?^pk^D023?~!UMOtZ_{V`M-`jporG*$G&F0MH+Rx-rMZ337TJsimnWatl7WRV$1U
zAE?XzEqFgkt}As%Bt=`|Gp}gDt;eGiupClgkD>4%t8|ss)lpEzww8`?-|pov*D&-G
z8SPYP0_e%h7}3v*S7l2?uB6RR#$kD*p!^wQ$~#uAf7*gZk*$xj97>!hKSs0bAsFBj
zun_d~2b^EWt`>h&<`}Fa7+fD+qeKlD+=#*CaZ6Y+8WXTE<CFTdfix|th#)3m8T%kV
zMO1@vN>=2>3<|Y2V%CKhOCQ$r$##C5T*KE)33|jjvp*8aru<CjVTF)JWuXAg_Y0zt
zkOI58KOe#UD+#U#@O)xj4iY!`J_(DL0QuR9PF=xZHVkIR;EIM#Msoiwl|q{2m()*(
zLpU(vR|=UC)7u_O(T@=y{b-bB^AIajI{ShujW~*)fuyXNg-fA0EL4x>3!hgck>B_p
ze$I;5k11XiS(|N@QS*$imJaVnsul;UO1a^<NoaVWcurSuE9(~{#gMfrabo29Q<|-^
z?ww#$WO67nuEj`l!#e^cruRJ&k=@g->uNu{FMCvV=+$DURvzSqW3s)rzKAy+0UI2H
zMWO$H;K4bWdyGi$jD!0h>-7Gw#dy92{t;GC-}?9eLocO{lX>hoto{}HevgGQ^*;X6
z1_k#g3);SP?w{k?V=JV`VX?KR_TH@dIL-^6XR+QV+_=|nLaprtu7|4Ac*|lb&rK4b
z52nyS>o*4U6<hIu_=MAVPkmi+b2k%2O9)q91ad1Vyi1Lm<iesxmgJm!x>A2D#km}#
z>@*atpb(r7lud-ZG$mCGJU==S;CvjHzmr?H$zE<6hcz?;c0T@?nq_YwjWrI76F#;7
z>Ynt{H}L-`llruLA?)42g_a3ef#m7)Y`uf(jYirevUcxMQyUSD+M&9+saIj0Qgpn8
zDqSWmyWQAD>DXK88cz%m3UJTmX-T#Z$e^S?L~Y@dFR$O;|Mc`L(L|{co=UZ3&y|b0
zk97P)de0qna4Ck7_@Lsg{YyN(b2NxGaaGd&WNRmgrPVf7OM)A#jS#u#Q5j!_oh*1X
zkM31X(<v5Ph<4q=4+=Yov6k2Dt5?Z*;pr7R6WSsMXC|AhOH}PBV;}Av6w6Zl^;_+}
zFurV2cO`M{Ew^O(tSk<NZavvT27TXqGar8<WOZ7GrD@f>H7#GMw@g=Z&k?(1@Qy1+
z{;3@gZ=HYN5_|a=R=uJcu1>w1bguQc#7Ix$)wk+$wVV$&vLc4y9ZdJz?DsO%+sREt
zpz=^%FXIO#+`Iz{#rYM*Sa_=113I_Ol`Hx*+b`v9!4XGvLA_el6PwZU;WwiRd4)55
z9dSaUdfC-v6QJZg<nN9>QCXA62`n{;sz%2!WgNR_X8T?=RkqO@5ncQ(28TlLb$TiW
zA1pD$qafktF8wb&;<`MO$HxZX4JLImH%s*Q)>8zFHLc$&=lU$%&Bi0#zxJsp_|@E?
zQab07F`t{Jv*v4Ytl#$ERKgRl*SuW&(@LiYE99NNpi=JtQ7vYr)`mp5{3+Qt3+0-v
zgMe>q?N@@0E6n?j2Q<pw6Odd`G0ylXD%V!2rzD@GT^s8tIKE%Qs{Cd3U8!Qw@{x}f
zR7Ch~ShMs`s~_sQ5-VF)?m5@P*c*1*UB-}4Zu-SPpmI$r%wsAFr1^pDqNVnbAFQEX
z4`RL6Eu<~i9%f4L^2^v0<9lS>8@+Du#CT{itQGk~GWy+IXbZ1=Nsu9ozr?`8OS6yu
zBet<-ivn+5wRUDpt-y`xoq9dx!qL)?L!a)m<L<@m%3t^<mx5<APsDM=k`U%-a+%ar
zDeLzqA)0145B{KKp^KXL5Fv({;zp7K9b2-7{=agM)FM=Szb&>M#<OZ<%n!{;YxE@T
zDQYvd(Rif<I&IslDMaZNc*$Thk(NwZS&)!@P>lFNQsiKdyx(kLlGxLysZ#&gszq>e
zf*$Y7&c0JlzEXKL=OoS0wzcbyraMpJ7BYvenKaa;9eH0<3^mZ6p_FibIG?j2xyfy6
zR*lYSQn@=r?lKdURQ|%FOxmW0w-rMfEBrlI-yenl+H5AUlY(dMBl|11{Rf*4&kO2h
zWXg4zC6~>YEBuk5g|LR1{Zh%FRTbwl<t`8)9*=&@l`dDhzv@aM_`=;p6vCx`d0wS;
zT!CbN>-sy?a(mwbxv+fqd*6Jb%f3&@D{f?y94x3*w#xH=xAng1K4DI9Zm?FZAlUBy
zEB8l%&-#+*AB5N;3p&Er1ejD=8th(DedX^{sa$d}8E~&@vK`W@zyEznvsj9g^y7H>
zC0V@0r#>uq)kD=R*A5Td98#;Y!@_v0luPId?S^j^ze*gNuoF6JL1qze)@~m)O6A{M
zSm1hYp^<2ROQBNHBdpTeeZe!?2F$`LIc+u{!SiqwuYmnKw@M6sz`euF=~cHmv-wUF
zY-B;1V{nv-5pLqLhNujMm12^m_|s$)gx@1|%j>O|_>qqkf4H*T@#)2txNyH?o(i5e
z#>e@Flj#lfcHxb?er3uz4r&qk<edq+%HFqzhqw_zc9APum94?NBE}_0S}n-RtEJuL
z0tzX*&f<Q9*%0~ebF9Ie)%0vtDx$Y@8v9g2HmO9(x|D-OuJp{8E*Ypd=ff4lmFz#6
zRU`3cH6oM(n+dU*p0+^#2pXwB>8O=&YUFYMpjlo>e|7NX^`>{4$ukbT(S51HSc_p@
zys(S%nUa1~m4ttGXh}b3W-=*ggezEQq)_DtAyx&yz7%Lz4MG-eP8>U#EKarclntrN
z*4I}%HP@)v`jd_BVyTR%hAU6KR>R#&7#GE%d)dkiFBW%F;-SvqD(@A!N}(U2)`L<<
zEz~^{Z{k22*&T#x#+&Y3X!AFEmgya+hm18>=&*3ZWeKb!WSddB&n$(9d{}<m|3V3I
zOP|!P!E8fPt~o-?xo1{Td>ZF*P1}7c)l^H$o}A_^u3t8uMD3x~s=1G-TF5hMvQf2B
z&6D>!)FbxwjY)|YT}|<k^W=vKYK5uzF--L=1iPuC#EMPj@&%j&p8SJxTtnS{R~4S0
zQ%yP?{qg<raUSmC+;qe%ZiOd$Cg(PhF76ECp3`$T2sA@9ZC-?v?>-5ZW)3{=M5;&9
zbg-LJ*pz*C<(}Vvl%m>oomIv==ykH~QI%TdQ);E$Tn*!L2Qq1H){!gzS=z|JMPE*i
z-`#SLhR9wmyL~{UC*FRQqgUQA5Z38LVC=45;`QLOH^Ei>HsLL`@RGZ-?UBUXPol~a
z_JV?DqF7dy%1li=`@f_Rg*FZAHEvWZ<uN^75V|(Mys|s=1s+NWuiABF%x#%hBAN}J
zE&upMCA?*AY5)AI-@*M`xr?Txh!oFHk=jy6f!q7TxSO|^G&&O#LlmC|{wTM+(}BC)
zq#3Wlc9+gtSUp3?alfHvMzJWzP-O#8KA^7)=kgAHuxu<phj<QLO#QNh!0`T+R=H?G
zT@sc;DLz|$&$&A<@2Mue`ku%6tM(p*X5IbsiYcOpRZ7y&G7_I>V4u1C>m&INZP7ND
z=`#74pB3`0Q9Md*qic_XIk)M?Eu^BJE7E9m(_NPQ$gpCCobR+EK(Zr4O6ZRY7w*50
zdArfrE-bFzG(w%%brsGCz80J;y{7?U?5rL0FQ2vsfZw)f@!%`Q$<lioAZSm+f8xPc
zmXoFTG(a$&hX2GfffjT0(tGk3f?z%k|6$Modb0GM28h$t|EB-j&iXeV%&2v;{AKb}
z{3kzRjCeu}Mz`Igm)?`V5Jay-&NpVQQCK+@Xye4<l)=JC&oALY%*ZtgtNH-mw-mgt
zgRgZbOYdob0AFuTmfq6<L3A4alRucj=49zT4G`xr`E>t3>2WaP!RL^ZrS~*IpubI^
zm)?`V5Cj=UycPyu!C-9+CdFWK45mIU=b!RS9llRV8qkwBq1%IadVEm=NCUbDC|F%8
zc>g4M-qW0eT_h|u4tx9%ynnW3mP2mUU7^B4!FotQ{k1Mk(1qpdKWDwB(iki=%OWI!
z6t@4r`5j>}%I^Qh=RSp!Q{EecW$l39-_GuP*D;P)8iP*;q5V&NDPY9k#$fX8mk&+g
zW3b5c;CP$tzUS)Cl+hqSd(RPITav~^4JT4Dn=x2Ay8Rch@9SNDCChPGycGI;#hj{t
z5OsP-g5TpCfcuAD3qPle^Z5^7#;8vOM)}DY`2(+)lco1GKmad@lco1GKnR|O|JX+e
zgRfvPCkAt2Fu2|s|9icwU>x6i8}Vkk&jc)j7qmA(p$6O-`fM1ih@r29!O9r?QiAVo
zI3K7_+>`4kYZ!w^F!&V)k7Do`21B1cNxx?VelLZi+e>Qo<`aEVIYuU6x%-g7J7EcR
zeHh2ni@`$}JcYrpF?bY%Z<2_)bH^3Phf#7n@17Ul0L_ReOYdob7|6e&&u=vjYc2rC
zch~Rdo9Zkr@mqlNPI)_#;&<2B7_5LFTz`GeR{T?nBx?6iu)LS2e9kA6x^Wo=tE~g|
zH~X&m;#h_Mckc;UIx*k^`taV;MtUOq30RfNDWev(v&o!6Jk}}me?5xr5=X&W$050_
z6+9iS=LP6_i&3!RL2!TL*C_UybcS%bfbyQ6me)J4RdL}z%;X;%@WdYlOOiQ_mw859
ze6)yyWoVu1o2;=!_X~jbFvipTmt?+%%z^gDHo;R~#$eZNucqaIfAfRbK&Y!C0Lz}{
zzcbv>XCL`5f5YGvjQj%pVs%Ww@8b+~do4I0pY3k{&~i0}PFLGiijYs8v}&WNlMUmr
zwnlXQP1R;UbnjI;9EauBoYoH{&O4027Ss<pV9>q_96KHV%iD7U^hPw}u(WRQdpqM3
zasjzL>i!$tFGV1|t?1ZMr4M-*CupA`IpHZeDms*|4^*WSzg~o>Td_UzQ2cYv!5}=8
zS*&{^0pU@5<>RXtBXo*M0fNTvhmE5)g}d}f=1jT7c>G#vBJrR1Gh?eWA|^Gv-MN(B
zr^MA3{dAy1G;C{@Uo?KzVq;rpJC?F$Ge-fBuy{zr_0_~M?@HD4RKc(CAS*W-H58*>
z2m9w)Nf|lWx^t>ybF8m*zH1lv#x#QVyDz8hXW<<EkK^A>!0J%octQJma>&~q0T0mr
z@etG>Xs<6va@Z>Wr#&RBm&%Sv`;|g!4aY)}<4<m;8291u{ZUwQ6|h%{I_jcRusrR@
zuX3F?^Ons9{C-c?<^<#<5y)5YKB6@hAWrd#>FcC!=TiuL8f`E@jF1#cG<UUF;ZQBI
zA!!N3Uz?dlrB0Q^`6)IujvBXD5=G+FRzWtph7{vDQ8_6(OVE`|vpiCzWf}$iN~}+W
zZ|8NV-1@V4Rav8HP&Vj3{i`;?_f^V8QmpWbm8Oy_0`&w|)<nNwF1D%Ud2<^z#w8cM
zIkt^{cZo?ob`x$b-&73zscUf)Q#%#Xm*mn5C~hn}l}I;-U2;*(d#p^AeHa!a)9vxV
z=a-a9@w0#>O;&w)&VApzSxL0;hcj>Mq0dLG36+0jS?aT?moWA1$3mS~q7>^2Jd;XQ
zq6+Zys<|JP#9*{1hVS2=_f-PzMNdF|gZ4#|`->rWh%Mkf^rrQmco$`>8<!Oa>cIWN
z2kIYuZwTR>GEzwe_b<A=&!=kJ9rj1%-6to7<S;5ronm=Ll*g|=iO>0JO%$<jlOmeO
za{@=kj5*ika*pKGgq}vMd8}`}&#<%A>}C^h7OLu|n89LumyLHMm-~e4n7Mgs-vc8*
zBRm2R)p`fzoGaAQ2EH6+?XZmY6#WRLk|j91oAynj)L?QtIPM?SK+3~&9z;Z+Mko!K
zH}xuz6^0)U{XTIy?#ygou&L+Jh#{v~7Q`-k%F+2JH(1wNzMEY-=wm#7zrPu82NU5q
zEQ<)7Pyck^*E-3x#uU(=Rsa}$kKt9jz48Xqr<Ox0)(QLmnkKBdupz7&Px;}T@u!Ih
zK@p}o9<2X<PjX)(+mxUO&zlBNU*{4lkFKnG{TwEcZ@2HzWB0sew(2zQ^R<FmHttE1
zUA@_~p4{&7EvI7?EG-&b|1WYA(^Pm&CF&l@6+6>iTSdy#yvZ6@FS;VA+R!5G_x1LQ
zgF&&!b<_trjhbF<=5{%wxZ7muk$iG~nt_xaaGjumf%IbD-jVQ&Dvww^#Z_??O08ua
zNXIjKmGdwEn)h7(HQ14vRQ`E{N2&V@UEvQ88DH##qKk%87vQzo*;bXzrnjGUF^GI!
zqtxuy*I#BO4kBx6o?IaA+fWPpQEX?ohy7zPsUYojHivpBRz)_xTQ<z8`a}AXJ)>G8
z@sKiUc_asK0OM6s9s}8six*vjg^YN$TXTqCeAtvPaNV}?ql{2Da=g++`*TgDqotr<
zw>M`YsHgUOQ!Im8stP?-HnE4)oeJMnqjQw%jniuTAucZtI6R@nE0P`>4N!mFBH14L
zgEY=Lld*fMJqDj9v-8^mxK*C{#t%fxN4&N5@K*TaS~5GTrz&$*K1GZFn?lGwat}T(
zWe>h@be5y9Z_c;1xZl;&!S|XN8DJmS`UgGgw~aHdCd%>BF2jaKwAe4-xm`Z;Jg<<@
zGU$L;xjfTd4TDAy>8fYD>&E_2!E#U}Sv32TV5*s{X(ifBP4QmjTTJX{`a3F_sYz4*
zQnoJa?oAUc*VEKedR4ez>kiy{g&TQmX87Os(X>mwN?}V^;Z1``_JwrAPnYR#lu<wx
zG_nUCOvbvqT&JYEqb2Q-teo#|a1fcLA?<;2Jz=&7Zx82L(o2{rB<YLV+1ZI}y(Pbv
z@!&qUV$@yFQhkm|T@mdAxq!Ei<->MX3BcEd=Pa)}L+9_jRj)3rv24BWT@mT-KUMYG
zR;e5NNqU;#oGJap@tO?vU6seN#W@TGuEKKGFcHd`47Eogo}pzZT%mJBI-0OGFZF`T
zL;=)g4hFltdzVswR>~$kCp1`(P$Ca(pRMACpkN7PpuWNPx99Q;<lW$VO^onqdvK_F
z=Y+e=4b@^?zv11?s~vEPw;o{^gB0VDr57)d#p>lj3e@8sjl*ItqwPhD61{intJo5F
zzx6rg#je#OTeU#7_{W}X0)`%u0W~EOB9DmWN>}#pBRmTu-Dj6$%EOg3TJ8ys6cW4A
zMk~B(41a8`kc`D^PJTP0I#B7uJ<qBY<>EBSvfP>-65lnclDg;}g*f?%qaFuF)JvJf
z`#-12l|uwm9kINYl|0?fvFc1;P%WN(ohtR~_w}i?Z(c4ubegTzf_&2M^i4)@zTg#P
z(kMm09sKy_;l;WPgX1BGoJi#eoYZyF*m)TS?}+FU@k^@Z4F!)L3zy8@Z8TtO{o10O
zK+xbFM5a7eKoN}1-n^j{d8<#(>ZT?#%x5NLwjop@gx2Qj`&{hNX{({1-}>p)dxSzR
z&s^ivo~PJ#`y!tR5B1v6aR|Ofq+cS*^Hpd{uEXz+u)wUN_fTD0<fTSN^&)eUTXI?<
zE;YW-fB(GZt5DU##G;TSOOIH$ae92aRpW8z`z1a(-5q};g0}eAGO`s9r=R(fhgN<j
zcU`3E>{ZC9MLc_PJNq5~2BEOHA*laDaK8Y5miy!L@P=tKxrg^7he*{f=%ZF+bFUm$
zC^Y#$s~cchY&&3!EOnucP${4PM7)*Iv#w2(Zg~ybE1&Rt>Rz}GsiiZ&tU}fdN;z_^
zkS&@0(XZ-X6Vuc?v5K+6IJYvr@+X2a$(&2&!1xOX(R+(*b3Ep=^yBl^dm25Cmu@jX
zwBPZhEGg{|TvUm~3uE1UdYizkiv@vm3#kySTE02@CFL-g<Od0@?KGl6f7;CT{i^jH
zf-#A=ZilKt+cHm&zZJFCZIozj{pb591j9ceS50KM&1w`@)(+ku!1q_vt8u6PIWyq*
zC-Bd~!bopRb4jQS@4ZH=^P3focMqd={H~>PzVucLsb2r>Nl1wt+byjXlCMyU^k5uj
ztSXF2@iJ|yWPPR(yc|NqR_@r60Be*ye$TH_pq$e*-9!KTM(fPY@gLvh%I`*S<ke4D
z4(YN<xqCPu8^~`?QzWQN!2E;bKMM7!)yu`s<@Gn<K67pHWg+#|h|Z_$sZz@196O+x
zOUI#7iPZchXDpa1Ng72CiHeYdS9L0XZ-O<{;6-o#`r0k05U45p#8HuILjmLekFjo9
zet&MGTn03^zWu$|bCn(T=Y2OhG*V3TR{g8zJbrCCkNl7yM5NPcPr0Q(xGzO5<WO|a
zQLTqrasKfXPF|_~WEK5gAH{s@X_p(=BONTmbxgK)ZJI5wi=7}S|F2;dKi#I^Pb%m3
zRpYPM-u%T#DCB%FA*<A6!V4Q$^1YgiI`?Dg!?0o#{nG867*1hPR)sZN#~aAh_g8;U
z*le|>zrO;PSj2%RxGoyp50rd7;2{(l)iVz3z6SiA>gaKne!a-bUz}EL{JKnmC0$0d
zXtwF@9*!fQboblpPz<mC-J2*0y+|$PWG`6j?YHrSj|~~$MX%3m6y=#7a4}Wy?=Cm?
zGPipu#kC8Wyg+Qm@ITwuc(Smfnxs?i5WL}Icup*1+~?eLja;EGkyrWh)Rx?KRg7XE
zgYRj&#la7>rOa#X4JI0?<Z?VW$RC{x(s@=%;EF9c4lADkzxVpsNh##;s;^z+R|xqs
zg;j1HxQ4^?q4L!SCbi%{9~ofX)fW<d*r)B)$6#?0;QBND-t&x*!ocrdy<ASa!dC><
zw`We|wscLqV+v8EFqh%%(H(43tn*zR+wjPhF9mMQR-s`$=J>a4O%>vnO6iyz8P)b5
zlt9iGNvpIlzd9HuyKO*1e|4L=TT4E&*2Cr~eM_n$mN~in^ELS(p}+?d!u?+>&1AO?
zsAW{kbiE9V9`uG(lZ$0MOp8>@)^Og4O}p_1{j(AM6BFHThi=;g-peP8va*DelLQ#3
z|7@`Y%T*=~urQ%Fe86%NqoKiPX~}mATEGPv4g|d@SXo%1=MXq0^tki){tqL;^gHNi
z9V=HbGr?&>_+6X39-a`0>Rrc^%vJB6j;RWFb+>Z_83D)3Gp|xGj<uD!`(3od-`S#S
z=6r&nTy$9wkUu(a2*?wi9}s7t?*jpOq4PoOLx2uM#|#W`Z3!a4f^fGx+k!xJZST5!
z{6k=zUn@&ztN-lKy?aU;F3u;ZbikPZ=v+X4=zP%nXdMVh2LWjyARc1I=L#`%;&XKZ
zWr3MP6v0FUU?K|isM}zkAK)8m0dWE24O@Yg7h(x<1S<q$YJhXv1Z8*{>KdYt6qIw<
z8DtA`2ZeyLK#}N@LEV`-gHr=%2u>87FF0**_Mj3#U4SY9HG{4ou&B%5(N)n<M2DI;
zH56~C$fNh3><2UZD1v!>4F0mbu7Q@~37p2uBh|sAIA9OZg{y;Z2mf8v7f$^x|L)^}
zp3d(id$!*cd3qj?$4~e3W9+wVINi^LvH#tx)BWTa`;T6p?uTORfA`{aKNdC)E*?Gs
zl<*u8F$pOdIgEnxJQXz!Egd}r<AsZtn3ylKuwG$f=iubxzRJVP$1fl#Bz#RoR7_k#
zQtG<2j4WJEUO^F|q^zQ<rmmrh)Y878qkHp~p1y(MZ6jloJEmsl7M51lHnw*54vtRF
zF0O9w9-epad3pQz`uX1vcmTP>dlgs{%<}>Sc+f+D7eDX?1|b^20!Au7nFr*=1(pc{
zIh{=eTz~3F9i3Ch*OOg3Dw<0FL5KoU1FoX^-#sVUL2iif3kj2)gF7>U>8ik3$EU-e
z+k!b7oY1q2n1TJC=&3+X#?U^Qt^_^WvOIcp`IF;tv@<`MB;+6eYeyg6bN>#W?P&%)
z*3laO$sNp8;c?gXWSDDDwC^r@G6yh=3VIA@unAnjfv+|1-}6ErpAgA89wso!%-_QR
zV<a<a=%}cl^yWJq#QS7eZ!k{?cr<`9hb`}-C#hj_23dir22Nbi!T9|Duf6kuuez%L
z|G9Sq#u#!pHrNF8f~ZqL$6Px7V(lL^biif10uj{)_rj)QyX_AQ<7*SqR$nqAQc5y3
zBudPMSX7wP$f&HAl98gV!d!*AjEIor_k5o}clTa4wf~QP-|vO@UaxaL=kNQx&!5k^
z_j5kxtvx#VRDE1AKM9u#b3%I!C--w$w|zfIOj$WZnwLtT3|<4^udlm4OzKh{eiGhV
zuipT(lv9o+Gc+Y-nkqkU<~PV8f9@qq>zjCwk$W+dK5V?Ezfc^E-P9^C6_XRG^~JLK
z`q?#grtVVje5tn_A0BRKY+YXKZ{}?mymW}*{5Zab-#N!9ELLCB67&_VJ5Nta<5dQY
zzFRm3o0p<24PX4$^%0v-p5!B`nKy>G*CK@^4CT)+l<T|$Kz{1Yx#Ka#;8*t%lahqH
z{0-{4sxBs?ZoB??mkk=Pxh3=l@!lr!B62|d%DSeOR^GZ0Z6s+;oq?2#eldvt-^c0Q
zjK-H>Jo@c0QpISwrd=WN`s=L^w&oo0=0@}o3a_kNYQstoB%f(kPvJIR>m{#N5bY%P
zR0*f`#2n|st-u89T59<Ld`K+f`q(%UesKNRNb+NPQ*1LB@OPv!g_thD`#Q{<SHirN
zC!{Ti!`pS|r%`#jmKR2#2R{#j(1Eb1)`r$*QR=Fif8bC+ee$$k2kZ~w23oSQLEbKA
z>m%W{UIz@%A?fB-WYOA7c-`NYG04f;@4SkNmvTf$DoI9$zp%D$))sY3n;PZK2>$tX
zy0)bkT_kTt(0bt|axy52Qd8**a_0SXcZ9ke+>VO$+ue9X%|+4gXquRs$^<VbtzYSv
z$b52DgKE`tyZI(1x1qJZ-hHXU^`Y{g1({DJ4OK(EzT_D*W(<+f+wv4oHIjh8FtCt^
z#4gXvTM*#cDZifw#(3VSy0)5+Qf-koJ}L4T8PBBXrxSTJMV$JxbZN7?HaK%CPc!O|
z@M)J-MCbQw=gcadTNZWlY>Vo0-$_aYzR&G)YeaG1p5Xo{ZkLx_zb(Pd&rIX4Z%A-|
zJi)y&!TpH@H*ZH^9&xWY%e(Y4$&^oV+5F<bEMAmXmbgMO*Z;Tv^{d2xx!9!nmw06$
zcX{-QA@}4^Jg!rx|BDZC6VD~Ne;)PL{>7%SR`vh$a^Lb+{<--6|E<j)Q}5GTwf0|a
z0X&oD{(0Ww$F-o~T2KE!FAul9m47b&>9zlBecr4GNKW#!p36~O{oKbBd4J6(G5lMp
zYit-FPa4MmbH7kACeeP=+MCzia_fgWKKzmYS^v@7KDOcG8$Yq>legco`BR_1bIWJ$
z`s~)b@A=%ed$)gn#}~eM-_HBL^g!pAcRjfKp|5;(&)2^GjlB<l^O3GcAN$t6Z$JK>
z{onoG_n-K|4}aAC<0qdw@RO&1dhln@JbUQ5=YQVwi(mfg@C(0wvG+H>{oRq5UVf$T
z_pkop=pT>$>G+>dyms<0ub)zX?+x1EH(+n+2JPQn|9^M>f4BbM>;`%8>-q-y-(7#+
zjm0W>Do;{#-$<9RZh1j&sF95tc|9t-LLvWo-101`S#BSTQO%95Ewxjx=Qg)ScO>Jk
zS=PiIsCa0%KjFGR=6ZeO%9`tyitv8hmd2?>Gbu-!rpkNrOroR{;hAdZZr~V(hVZJX
zH-u~Ic`cdFmv_-Frx@}ISL^1b#9UiW!CL%Fcp)fvpj_d&9PPjKhVar_+%8cUf>o?8
zdTVnH?<_(Ol&yJHU33Gmc~zK4%4?_cvOJv*_pb7Wys0b04dEMF!}YGf&cC&Z%{(^5
zoZHlsmjc>)M*YK0ty1u)yQZl|M-)#!{r)Vp$;7!E(6bI{f<^sT@O*j`6?WlPa6`A0
zeLm+#U+gACUt<^bCr{Rq=rtidUSro>Q@^q%#JhXt<I>^vc-qgoF%}GkoY+c;v@T)i
z#U$jeFJ;4_MyhW!==ZO0T(P9iWgAVO_R;Tba^ZNuziuVLoLgQC#m!07P-OcBjfb1V
zQ@K~Ufmei?7qjx-rd7ODtEORU!)kal&8k2B{!1FKr{30EMg6S@_9ID6b+%B~B&{yi
z1QKRB_lq%?ox8rZjjbErQR(c`hC?s4En&7w!rCgM@oU)lZIU7{YYI0kt&L{q+^3~y
z!=Z5Ach(<oNw{7rYwTT0D)uZNTVmYW+3&Urao3~$U0zle)8E~7)35vcvGbR{DIe#)
z4r`Uhc5dF78h0J*ty{7rY#J#hp4h5<Ts$hIk2r8{6cu;f_FEH)E1_0SUYHtHgYM^I
z6udSz#D-2I@1)f6rT>e6GXq@>#$!rn#s%Zgo0#jC)wwr<x$rXH#0)nseL;lx$-4&8
zxo{4EZ4lkS+LX)%SMC^7(ifb+-&WWr!@jv5pQ812{(Jst_M7D$@bcN3;O<Cpw?*B>
zI()>s=TwwvcXjl-?9wW=*t!>$muvUJsC$-n2dulayh^(Zqt{J%f5P>Y=yemn@2Dw%
zX?ak`@3C%Ip8eMC>bEEAHs#+Db(@X&%~7{0e|ywz>KBQ+P5#wU_tmC8QMdV`p)l$;
z^~;XBgF1Xl)csEFKK_UJ_UKJ;AGGe7m8LxVqi$2)&ZyheXKU15rPJSF-DNXO{oA5$
z6Tdp@Ht_>dca@G`WZg67nEK~g_pG3~?ziqab1O~#65M^Sn)=O|J4atXXx)LJsZW=6
z&!{r#bw=Ih`qrr1l&>S|o~zS~MBS!7fvCI8lt1d8sol9zx7oAtMcuYNes9~O%GhIX
z)NQ_~I~aAF`gBFzMn9cVx6$|JsN2{_N7P+u${%%KtKHR6xA{J)JnH6*C_aVOT{Yj-
zXNq-~%`p1Qb>Zij`b>_xP5S->ceZt3TV=}Yv+j46nDV7qcWJq)uX651Mt{fqjJ{m>
z-UN4#b<e3V?a^)B<=2?<b-C+{O#ALlaCcg_%YSQvdxLccDvka-th;LdHCkV7*1f3M
z=&RPcud(*JFyVT6!u34s4hD_AIsLl&`t5b+_F1>nr_;Z4r=^{lHq3Wfa$3sN<fP;@
zpD$&CoV2LsmIhQYGAFwJm=m}D;EksCyUzvsB%dl4;LJ`6e|d4SdE4o%{x6VBYbv>3
zQPbQ~%z-Z}!-2*~YecI>{EeSUPR-_9Ro-V=(%5EV%B!RY+6^4q-hONQP3>&BCf(Y8
z>)Q6rAw$@4z2z1T<5zik?Sb|Vc29H9FAOYbXFruq*Fd0y9R0cN9qq(YY`fOh)~2Kk
zYl}oyMIv$gt)+A4%$hTqKz!hHuMJLC!Px;-Syfi`wdan$bn7qn6hC-l;Y06#_Uktf
zCrsm&i<_I4E;g@jo!Y#zVKLvvEtZp<T3hPsn-}v{6l<-};#I6PSwc;{;^MriH7i1w
z6<iz%Ez!BW`5#YaipmTj!C@-1V5rK>_eDI}sVY0<Q`x~$D!bqemAx^uJEIH#jG-zc
zI9g>Ca2nC8BO*B$j8J0>u2N$?1<KcVMo(IIYFA2RSoP3=Qk!p6YJ*29&#0klR4_%2
zDj23l<&TJXhI-Y|d~cp7HCd&SUuyo)NY2?q)X0J<YNY2vHI(*~xJAUx8JDDndlo7$
z1|)u+UeX)pQNz}9O~-i`app(kY?bSosnjD)>Je9>oGV72dr=DyM~23#2?d;FbWZxK
zseLIuL%Wl^ytce#tvut?)c8<_8Xrto;|qLh{Ko9QF+H~a6VlX#mJw<~C{;}e4kw)y
zH6cHzXKZ&?SI$KvR1WQ#Q*e&T@r+j)J-+TUy3!&es!iFuN!yfp17%(xEps3l{|h-o
z%=00Y9`RL6J^lEZb{R>#jG#W$sR{jSou#PMN^~}PxXSQMQ6qYWcMt0t5=pL33OGFl
zMDNKSmHZfKpEXpadB!OhLelS&vg8d{XSGc5o)sGJJ*!}x_bgAgH=PSw&pzVoyi!$a
z6M0QcQlmU6UYC9z*K^JvuCjucs;q*1l|?yX>#FnD@i_sDvbr|UDHx$9wM_F)3gvkx
z1uyYV@?7Z6>KomYj&da5qIA;D9j?ZN7OF7?3)C1-r5e>UvTH=dTyLj+b8@_DnCBuB
zUTkFYFqIL?$1bO#kBgNHTkUjE;^JiKI2)wyI*oDKt#zT@IojPR*R|a(iQ1j~5XQ6z
zZ4ngvqQ6wq9=h)&_&NJ_DE1#p!~Rp%s3!W%<s*5wb(Z(sV5axnf(-Auo-}X2g_(K=
ze3U`!_X_k|h<@|q^xH0Vdjnh4ZBM-&=A1|0ru`D_MB33aT>97~UDupTu<1~mcS3N4
zcS1p`cLH&I5mP1|R%~hsaX1riNDDjlf(4+|u_Z~RhOB#ZiW=RLOuduTh#>7HVI;1U
zDMQ-pe8!OTXs^k-y`tCBhpY4@Bl{9<I(DoWaJ<SKt}^e5@9#tM$jh~XZl{DXPPa?U
zxTMEC#y$FVHtn08Z~D9$<Hj?_v1=PQq8Pnwz+R&HxH=B^s^OJG@;qsr^M}o+HKjzf
zjzWxqjCpb6pev(p&vf+fV{944*m8!Nu+fYyT0f$9r~gDu^~yM!7cGabTTEWQ6y;+~
z^i`(yq;{JT+J+6J+x!n)BHz3ywQ~#Su_M**^Ww5~tMmrab(+H|KRT-%5pm(ie@3Z%
zWOZ!#Cc=-QAA2&?sJ@XsBf5uo4T}t|mNs$mX5Yo{tL|26V{AOhXZ#Q~eo1!Mm`GN2
zW=#0W_bByyWTy+ygNA36P(FvFJ!<qoZl_<@HqPzP`Nv`g>H3nC?=i-2u_GS(9KHn9
zW7-)ibr)lrYXfat?CH~HnY3BvF2)5Zi-aG=*^YvV?wE00w}aL%{iOi?#^`p{eM;Sg
z>~nS2bJHm1rZbqEn5QcHM~-MZIVmcqB~|5whBFtzE3>+s&bQpp9Eu!r>A5=R5WZy;
zan4{48%ex0m9sIcYtVH-ri_6ZDsy9ekI?#Qv15R?=aDj=V9(5%jDHg<?OZu^<czah
z#;9?jEY=U1YINxtPbSXA)na?&Qq{O1;R>?UxF^T<WOa}3k~uP}d)EdIrA<YbSt%;3
zWu(d??=1RXR#UpxftNHVew(!ya@6Xe9KJZlZS|NZzXPT%^P=|U+S1tq58{rHww3ir
zY+JkQV>x%UgzFBSeL9q~Hn9%+PefV2#g-fQM0C61DWyJ-v~cF^L>Vs*vwpx1hhT@X
z*F0l~s<GI_*!<Dm>0P5D5;t%_sjnitC9Xe3`46mB*)1PYzR-s`D!n7_x*khCH>;Gs
zp*^yC8*pqDJ4j>g)0EOZv@1E1RPD`k{ovJuj3qx)Dy>>9f;Q6q(X2&vy<Gibag_8=
zJ9fv0cedv+_L}G@U&gdl)|B*H#)t7u{e9Mz=Z@#tr+Qwg^IdsNy#DdrrZZg6o!QKt
zW0^ZM_1r0GNG;ClQR+g(1ONUnlp2BDkIW)XLEUG>9@D(62h;7mzgN%uarJlg(Bm5Y
zocS=i-f`C)4qQ%W8-etU6qT{@j6OZ<bPbIRsZNfzLHe)hgT3r)x;jhPU>bEBp)xAX
zYSN59qnVR4n3K65*=5(^POnl9>g4oz^c8;h(x=poF3my0ollsl$Q_B{Y<*mM0m3Xo
zI$bzDuB0-qu=d5KvntcOPqRIzn?%%OEcXc9JLI5KJ2rPm+r`#pK>Mq-{mt2<xD)2%
zXuQO^U$<lY+Q+P!ccbeEv7^rDnmIBA`*1qbc05eqpE-TxpH%99kncKuNZ2NCUe4LF
zzTi9Urv5uXS<lOFigf+f#-uBH*oPkC=csO%$M3P=`}j)wmo5*dm&AG{u6bO!6WZ_*
z4m|h?@|sIeuJ`LR5UuYSoW-1<s_j$y(~+Sb&ZhRL%o=eiH3eRU6j-;5=P*5{-%DL2
zRuAESgUq&ZUWX6meDM`7jj==2*d?PQ8P(|lUmiLd*haceYim9Kveu}KpMP`CqrZC2
zR*5TUX^S4pW7e{>S<99TxR#YdoBPT$2fVNBA`MeU?3X=*9QF)y7!z~ySt}U58htYM
zI(NEmZ`Kyf$2rW$IZft{Pjtj>mFmp$sArK|txihE;Ln`7-MT-*wF$T%cRF+SVB7nR
z^zY5~sF6sIjXMcG3sFl<o5qcM)^1#S4%0^`tI_OTjLshwaqYT2$D<A)IX0c&!2M@>
z)D<q>__S<a^|22!N{!mZ9*C<0wvbX{`-q^7F9%q!&^PS((i06EV_&vxtWoIKiF-GR
z{bT~`u7c5OLQ_s({|ai<>2qdcJh>l|F}E_auYWHi)wOHh8<s)a@c=e5nExR6UdHY@
zKb!UFsEz2&pQikwbmb5Fl%KiO-!#7O%%1G-F<qGvt-BWV$30dSHkp;5-Zh|pobIjt
zn6+YDyy#d|dZ|a<j8wXIjctR$bWfj%t`j7$CA6!{OZNrzLOF9Nr|mn@{Kj79QI{hP
zE<YPDK0a%7=}WRkkLgQd(N|pVQSU=OWaIac*2fDy>hmr=)>gwxk|MI-W$KNsF&|l5
zi{2+(eFgE5E*EcXD(kgO*6N&MzDxFNMs<yhq*V|1k5vABIm*wznxB0&Kl^Ha?)i+R
z_0P-er+d_9gr27g-T}ty(Kl52T81%yfca@%9=UhU=ib@%p=|EOvGHv5noSt)%k92P
z!knh}B14RAiv}Fq_M;%(mt1?u`cV1?y43e5G505KF6y4`QFqSa-fyXBHzvMo*Ed7g
z?ovnA488*9$;z~-o*$g+Q5UgUHqoV@*aw{s2DAg(zs0U6D*MM&DQV+8k9r8X(x!VE
z{7K|Gmyau#UelU=Sy$)Dl^%65a<dCNHbsr4>|=u<;~;DH$Z2aHS5DWr946Gq%s-20
zqriY|6p=Pch!eE~m!`vnaC-l>U=e$-0hQ6`>p7!4tt&M$yjouUB=et6JJ#-`%whw&
zej}+{ni^Ya?nj(1=C1Lm7UWK+3tP{eOXPm`{Yeu%%aY<}V3U`BobB_HzTCrdUp=m1
zq#9Q_wlAwEK97`Jm^YAJv3anj()D(jpRoRmb!$DujFF-rvGFmfY7F}XW2o1dN;G13
zqoZSqj(7Tg&UNeQs~`2K@4E5~ll|5^%^0?ea!C4*k-i@P681e@-VTk9O&lqc9{*2U
z19wIHrHkh<p^WB!;PgGZsEwHR3FtLP?D{g_Xx+7|_jZr^7V=A1N6D{*^2OT6VBF?0
z+{STfUcQ<Bg(&tw1rx7-7{8AqG6rh2@e{-SfG|I{;WWCkX?@3!dC|3jt9L@5aAm8x
z)1x|(iIhz~(ReOxi7&RQ?{C;M2{A7)9=d%KDf8z)gN@$B{N&Pbab#{_&vI<RC^fce
zbYFVUsBYP@cX@B#${2SyYhV{o*CYPEGUwdkYP2U?rS+xuMDNyZzwMOr#_Ak9il)7d
zxeci!ZNby(72Adb<okwu=vtQ}n9JF>XHU-9u3f{jcaeiX^KX~28NQRrx8HMAx_h&j
zb-+M*59H@`YB0~$^SMrs>P7y?>ClBc{eCn$x8#1=qtbSH)V9AO&btU-{GdlYY~$oi
z8>!9?@z#>ynd<C<9CbExd;ji*8SCWB&(rko>?#3s^uAvv<00z^_7B<j+m*QQw@}j4
zx=%;<teKzWJCkW6-*!%mkFtzn96dvgy)>gKx~pLAMBi)bc&xDr6SvOR<IVtWXYcuR
zezEH|cW<fpTlo%<b$jC8jmO2+`<(38GsaH{vX)@HWv#8h6O8J`wr37|e=;`9eB_sU
zzR`C$5{Gd<Cr7>~Wgm_2(Ij3j@yz}EncTnUaQ{9gdjGyvu1yrX8^`x`V|dMB|97$a
zntWGATMigcf1jGecavk3`wmv(B#f>7>#{+{^3&?5=b=%|L(D}@{dW>tH|S!(dBp0=
z*g^js742*CouagLkiKd6%m<xYbU#ZNH??2F+@)<NCNG`7d~e4X&_w^&V~P3h^|W${
zol9L@zsyPE-Y_c?`~Ag>zw@Ybj(F75u0LW6`uhrp+~ex~;zYN6=T1M!*mXu^WOZ5~
zsyDr+9BIDS*_dY6WHIHp_T%|SuAfB*Zh!x8N`DjE;UDn~v}P(#i_u^DP?b(UO0Sfe
zB(>U&gO8;1ZlesZdd=xDc6@ibf0OmrZKJ*FQ6wYm#kyncJGOmYT6%pP|9#gFdB4ds
z$OSIGwk7sr===J22OE76-3J~s{hZ;c-!8O`_1l!I*Ynw4<>Nc(Vwa}T?P=f56%pnd
zWRVLe<J2y`_Y-Uqq<#3^Lh6(D`>7K0o|vj8GEPi<^~}EPo-y5-T^W(|YF|LxY7=vQ
zW|Dk&8W~mHKd(MG*{gbxW|xnYN5V?_?BS$t92%Y9N1W$XmmrV0us-V2l-9rI8$ds%
z&&TV`lf!-SJ?1{f++B_cq~^uw?oHZtf4*0pKr)uuc6EJHuU{XsbBdkM>Ca{^%3v-^
zXD;%|T(mK9E-I3?(`^>BzSi#kbj-M5ekWnZ^S|*sT+y+N_c3#X9_!B^F(aomlO6lG
zUA?@x->eLzV^@D&-k5R0`6uF=g&SnNAE+&JCa1n_%%$m%C6-v`um1TxW}eo0$GD|z
zV!NUfS(nDn-?Hwij9<?`G~275MJ|YK`?bWEbR0^0F5Sd79C#k?li&43%OK+@dj;97
zjoB0H$>{b)*II!}uUd%|$L25j>3m|=fv!GpV#~QfuX-1<(4{xTey5t)W-h%qxQ9JD
z->b$g@Tx|amWgA=3ieZC)~!a*`&cK*zJk%S{&kKUr=EDXSFKs>Rky~bm2dZY!F0Ws
z!#)T5HEy57OCM72@u~}v&)RrDB8{tX|H!4I^%T>`Tp4Y9ZJsPU#pd($1xYHv&HV8g
zzmH5wQl0p9=Jtm>@8Tp?%UsnN6YfjmN4WABzsgI9gWuMexDoso61RiA+-DblMXkCv
z&MOX!Bpp8ABM<pJW3ks_p1ppS#Wag2?e#qtb!7g0-R8X`rVMgzy$!d<V#H#|V$fol
z#e9pOw&>D7?;=yq0*hr9gBGhTHd(yY;_Vi{Xz}Y7zi07zi?3Q7O54ciOp8-2mROu`
zvB6^P+f4ZR7RxMV+w{(}?lBgX#l8X)?~uhOEPln}HjB4eTx0P%i;FB?ZLz@OWQ(a5
z`z|&4JZ<rt7PnbkV=-j0(&A8C{u39P_(v>0ZSir7yDjdpm~ZQMyLES1Y_nKxvC?9h
z#fvSTWiiF#QEN|!Etc5w<yrJwOtIKz^FNVq%Dvax?b8;2Y4K%?L-R~Hzs0v(oMUmZ
z#TJX}E#76Z)8aQRK56k8i@g?4SWKH{^RqbJ;v$O;7S~$bVzJZW;}&}?9<g}LqSw|t
z)8b@{1s01e&at@I;xdbCEOuDD%i>OpU$^+U#U6{UpH^GFI`=NyPqtfJGu71pOxwTH
zEFQD|zqR;`#qU|%Yw=4Kw^;m$#mzSTdh1?fvBF}Z#VHoEEhbw$YU3ZV*kiHV;x{e2
zdfjI0xyIr>3H4s5_<4AQXCqfv)rR?Px4coeRGw)J$N2~NjW^dy=guw-R`C1oP<=h;
zTqjkTUy18OICy5##w_C@EIFWOH8H;L;TPjGdB%=&h<FmKm8U=P9iBA1CNjS+ylU<;
zxu!l~V~T?-5gwKzRGBKRZ)^^i^IL4f^hs_KAXv8|te#Y5jm>2gQ(VEusQ-(SpZs#&
zmg$C=l#A8e<ZByN#O3^*<a(Zn<Au27H_1y}`L%p;C?xN$RjSWh!PzDDSQ0|yB+Zty
zV@g(&Z{vcxP`I>~GtM646t?<sOIQj~tZI`gIao$G-*&q)2jox`Ii>Asr;jRm+-#0#
zW>Yxqjy*|DriN85AzNYfb}3Jc`y{2|pdE>#W_f1nGoS45?<w122_59DC&_va&vD`R
zUgsC6X{p8iC&_(wW2m*>Y8Ag5B+UG9lf0^T2EXF}80Bx~l$W4BAcqs{q*Q^Xx<;OH
zU0qtwVNr@-5)h}fl@}{FxW^0Bmty=}+#HE(94-Y;GKt!k9LYur{@7otn6m#j<ygUK
zcCpr!EoCL8mBv1oQPWus80}f7`&Y>mhGIq6%&43*BWklJJ+V(LoF_TYY+Nc2`;AIk
z)yx5S4K2%x)fzA5E~{TYi)U4X;Wlzuf=@%JU)uq1C2d~Q94;$W<0TdFY;PbOzP>-q
z4pmmibEG^d*zfn8H`r9u&|FUitfx{xQ8OAs0iGXjQR@AYmN{%?c9<$~j0|t)DB;o4
z1{>m&Slcr5^o6!neskr$Ho}oaVf#pi>hf0AHm-86<yPOuEiHUGWna$I4&f%<oapFj
zkJvd4+T7SwtcH7Mqjwj7y_Co}D(Tkrk^s-x_Sa~ETo2TUDX<_FEm_4ygG|)=G1^pW
zrRdgVrR>updNe7p<t&?3QrAK!RjS+eEAx;F`}-18nxnL_ULF(vtXCX!TV>Q*Cf7=?
z$F{>*eHCr9w8h1{(v1O)Vk?!_RmGFOp^~Q7=31V1DU%~?q!`OYH}iN{eD(aA`c~;f
z<>E7=p>@SI;nkwO3&pJmCOp*g`0x@yEfT-Ek#K{Ju}a(&Pp7Cu<m)u_Fl)o;HZj8p
zKE<k7LKwF#Nc5x~t*uNC<8^)gj5Z#SZlRb}<ufXrkvDSc;k7)v;tm#5oQzT0SgNy|
z#RDxh99_oAJ^0Ov3BxH{RtHtmn~V+0=vv$?y;6_5+r8zSv84wfb&ux7^_-x^ZmA0r
zZ0wK7x8X7VX6$k)Jt;OJkz$@bDp~DDzN?a?C&?fd3e-iy>Sr!=a5b)H=`Uiu3`jis
zTVF*}%Og$dWp72eW@Y#^|4waxbPzLS(n9r8L#a{J=L@<vm0?q#6A~kKoLr#PCCOFw
zVNSXn>WMv2Quo(V^T1FAkNOs?=~{a&H9RLCk;)aT|4I(J)4rs~>Y1g2nTTWLnAk!y
z+Lm%SCpADFdX6|pM$JJlcY9|wmxVcZk4L=&OjFYDKATk8Qa|4u%64tTDxUOWmrVRB
z8XK=~jksf*P@9~t^>MjUS`*<!&TuJxf=;A5lHGI`Y>duvs?q6b5eK)$v=q0VqM_1&
z_^F_9c?gX|fnjrJ%ohF(<-~OBLZ$RcSwE<s(r$97pqmW8M*og=7bOSln@t1ooYKtt
zW)joJuZqRxdXRdDxU>;Ipi5!qAv4X)qULXx>o%P)>UJe+T<N!IU(+L$x>vi(IH#?t
zakaWLc>#u{Cv)|j%-=Km4@sNP)8ukyU9oz8kShz+U7}sn2s3#3q#eT&jdG-CCWpw?
z7e^vuO~vY{q-V^(w2|Y`l)6RN%^ZIx`n)5?t%o_aTjJ1wazI`wix?BVNqybh->(z$
zEp7-^vAQx@ROr=5O!ds1$&~!4<aPQ5HG7a43)Hs;jzPbvO47q=Al$?Wj67Gj6q}=h
zEQYQ#*0uC{TjQO&hH<M3nzP4SQOcSyI-mbC)=m0Fl8U)1qXWIWG~S0WP2wZZJ2G|F
zu!5^7omHmPZzMlGENR;&<_Rpcb%hzh%mrDW9CDUyyi_Un#k3)#S4r!#Wh|Zejkd8G
z+Zx5{PF)w%Hq20wRyvDPpN<Q)K;37oQ=dHWyZF*j>iLY&D<aISrgoyscpu94jIqOz
zT}Z3*q^5S1k+Is{2mGt?l>Jn3)ZZ$qusC|~-(s_tXkKjBk9O&~SY|BdCb_ZTQ`F`y
z@_>aF^Ag;-32wi2`z$6WT-S-l{Bh~`tupzz^qu?fP2atb>!3}4gw1=ub)RY7d#pRh
zx;I<5&$`>KJKMTzt$UbtFSPEl)?H-XZbvQ8x-;!{zjga8CZDMv3Dv)!ut78&UupER
zFMHtYz4p3)g1OG4m2sbg_WF+51IO>O*N+Txz0+RbJAUB!f2&=&LgwG|^QoV@NU0yZ
z$N%KA1E)@PeK1Meo4fAZai@5>Msa}#K+(I{?OXjwc-K~MHO~Kq`#%l*p9bPJ(Du9;
zuUafdEY@4BwHUHkZE>N+fW>l)g%)!yj<@Kum}W7>VzNbL@#J%+JjX2_wb*Czh{axu
zhb{J4JZN#h#l04HTXgB~wC-&dw^-a@vBP4U#afHi78hF#SS+-dYjHROd+c}?nQ6z#
zpPO;nja@R`$F@kKyPcJYq|^6%6E08{j1B%*^FZ0(7vEoQ>QQY`$~FdZ<FV}i3YU3J
z=3XA*Q6rI|h@2rI^DjTGV7Jtu_=%fii}f{`@7*;?SK<neLL^<8O2m&x^A(T9Y7zg5
zi1@z^5qGh5ms)oKlsJ{vzslkQP||-FB6-UyO43<@_z~2v#v^Q-=<-WFBz!v}WxmPc
zT2Sh8Ga}d5A(GC=kqeN!tov?I%C`-X{63FJxUV8oz8@lT{ildr&qiUQAEz_uKk?%m
z^kXvh5Bm8h7V2M^^x%hennDbISmeL3kpJYY1~mccdVB^o0l&Wd|J$GcaFg&~ZN_Vl
zH(7>NwT%I~dhP196Ky+f|G6P|-)r!u&-U;{rBX#Vwrku$_(wnY%;)^(@@ao>dfj*x
zS$ya%hA+0^ze4yQ-E;V!Gt~?C^xpIC!PCF-ZXIJD6Uw}2-usMSz3-Xpp2<Hw{8I;?
z@A<P*({3~+Oa7f%PrPpD+0uj<o&@(l%jw=LGg$in?(3q5H`0ZFe*Ar2v>v}P`rYu7
zLEkF|-Fhc7*V><r;M~qGWxZnu79B$7KKb;%VA9b>i+hiC%N#484(paVSU!D+ZT`lo
z_E@*fsq*QtZdo(Pr`ozl8>h;%Zns}>{8uJDx4+PB-ERM3vvu=mjs8?yx2zT9Q)u01
z8K=s&?z64C^Oq)lzje1+x9gYfzcAM)+3P($#@%M!`>lJmb?>q68?1YWb?Z)y-&X5(
zi_HzzJy@G3`X{<cGVYUjJ<%N(7)RpuH*>#P{5QM)_on~X#!oEI{}#9OXZf_dj`<I&
z_=aB_`){}ClHG8r@&89*5(&#a%2q_GAa#*G{9lNiC@KB#4&))^0P+VU9plJDcr;V3
zu!iE|UCDL1w^)VTj_gLBLS99Dgypewz8&Dc!^Tr~JoVan>te#ietdQu-nYz*tA8(k
z(0<(bF2#^MU2)ua99xF}Wd3IFHt;5VlI+LTS?ohTvYwESL(!MhnGWzb{u$3?*e4U>
zU%VO*Ght=I1&=XVO@SW=SB_O`I=lm%#-vpZF95GYBJg(bF{BO7UbISL;#vo1-&(OZ
zthT@f*@sr0@I3H(41Ev09vtE4cLeY>u!>2j7ajyhPsVOv=PV-dkH{4Gad5=>eB%#K
z17ASu;l1E(-2ASCZvYou$hWKTh2Zy*o$x2X@D%ce*Md8cgK)ud7-A26Jb2$F{B8=q
z6TBpk`{GlS87!Wr)MR)WIQvrOU3dW8jx2=l05b}B3=&=l?kJ>e;tzgnI^RFR_knY+
zLJ#l&_`o|jlMvnszJwft_krz2N*#s^zJMHs_k!}<g=9{T*bKhCRDLzUZ*#%fW%7I!
zzYhj$X3$>n5cp{%0N(;Wi7bR40DnDGscLvHSbUA_JtV0z@a_uq2Hytqy@1*S7yK=9
z0M2&->f$++6P^cdn@2e%Ja~DP!Z4FmA$a9{_7ULI!TbfZ9h_qg)d&W*0(cs@9hnaA
z1Rs76za@irf%9s3=O4Tt+=|q~1zVR;PIw#mF=QQl1Ni%8{5BZAZMjk(uBA-yec<jo
z^b8l=c_U|u!3AGK4#7_fevtCR7q;^YlbdLFcm#ZPEqg=WBy|+*_z<=WFSw2I7%79x
z@A)4>D&Si;@cSSn2tNo8+a$mAN>VA{Jfs#L1iy^5!FPl2`6O)&Zv#)<K_2jv;FQgj
zA1*it*$EGTHzT{@>%cD{d*M65-yr+oN5JWyQtAn~;H$_1_)+loEz}Xd8T=lil9JRD
z;GEB3Gw=ZT(Yvt?_y%yu=de|H3V1HE2c8SgK)T@NU_G)QF8E=j8@?XwL=M9DfS=w*
zpMq}zzlHR|_kri!%eVud49-K2!-L=#5tU56z^9NDcn`Q?JADu?ct0{3Ua^B=3z-5}
zUtk{$DTHT(-$07sd%@o$LHJSd+%M8D@LcdcNC;jHejKTXZvrRW#~EI5KX^OR0pASf
z-%ne>3&5Ws-SA#;*q4+#2~Pn_9-#O`C>yw;lf69nX7IM%*gV|NM1BIPfS&~C??vbE
zh2XP~k}v!a_`7d0X2OqvsrzVmcp7*fvKO8U&P4XX%fbKtHf;@G559u<h9;>#@WYRz
zH~4z+3y2@S6YNHE;eszAc@iGX_zpURXM%4-ir|IdVx$}{xEcw-*MN5;3*p<q?;_Rk
zC%~7GT6iCrzMnn|&jfEk+Td%zQ%E~peV23gkq&qW{3Wshei(e`_ZW-d<>2GUR``DK
zqVF>{!KZ*<L^|O+!Hg%cRd^<N2hs)K48Df!ho1y*_yP5YuK|CK9EA6P@BJaR3a<tq
zM|$D=!E1hmt->q7UC43xZt(JMY?U)b3c<UO6!=!~oFAiq_+;=yNH)9!9Qq{shmQw8
zj^x5OfnP)N;CsPoPoaN!0k{|`g2$d6C+Evm96;yz3(i5x;j!n($vJW*KUHcI{(|$6
zb?_i~{y}U8o(rZt!`KHu2<AMC-KJ1Ba2Dc&SAe%5+3*hVF2oPt1O5)lg&zUWJ%nw;
zbHN6r2p$2yf|N^maQSoC47?V6^?CXoe9F(2`UJ8Gz6tC?w!qVRnD2f;UxW98Cy-wF
zNpR+`XbX4%Y&}d{z}vttBgw;=JHUg84=(tg7brix8oUvi0&fR5BL#55`;qDJPVn1E
z8GJwZ98v-A0dM>*?E!BG3tz%k;etPVg)+krfn)pVoA7LKI&v5;SdXNoGERbpf1nI-
z!JCjG_&V@gNC3VMOgc*Y!jr*Lq#9lZru~sV1#ba2A?<L%-AD&q@C32}eiFRw81;k~
zg6+swxZu~39q_$i@}KBCaKQ(U(|6#z!4t@S_(^capXo2~HQ*U1=p%3+_=ne6lfaLH
zohQ-r2y_S*{e}9&1;2U<eZu#EDaxa&;eyKRQ4zRcF0vI~2<}Sqs2%X5Jo|M15Rcje
z&jmk-biv!fKO)`m<KX)_r>qa&4Xzr-c~WVF0ng%WsdD%fa09XiF8D{zr(6#|4t_M1
z^8v&kT$$!kyWwr%9?n#K0xtLnH(N*GUEr^HHqkedaS0s9xm<bh$zU<hE?2|XfnPv6
z;XA?iW_#3rcr|z!ISCg`;k>MrGtdKg)tMgUhZli2B0=~DFnydyErw@;6UKW~2<`_f
zkQTV$W@HUq@GHnVco+D>S=14pdA3I_K(@lG!TXUN@O|JhWH<ac*x~o6y>P*liRczC
zc=LIj9R}YDo^!rO9fwZ_w;?H`81up4MIMz67yLGo2j36&A%$=jeX1TQf(yQa1mS&P
z>r}46+dy?O<%b^tzsF7L7U5v)G>_UTVL)#_`h+KgA3_enw}KBNeef=D$EBp@W4#I<
zL8ib3@8k^TLiiT2{B7tFF8Bnp7%td!8Rd~M;GRPAg$s6a7SwUL;C0hIYH~Vt0pIlw
zkD3l&41Nb`f$s-DRpe3a@Ganvkqz(z;J9Mi3_c!Qfoz3Gz?YHT@XQjA`f~+!gr5ZS
zxlum?F908zgZ;p}z+WL#GO#6Z*j&!!gQtKOA=BYgz_~~nJODN$74R1D4kQTQ43-D5
zE4bjJ$a?rbaKt?H4^IPCC1ryPmLezN0r0shkMfUZYy?*ZDFb{R_(h})z7u>Bsem5<
zUqpiNUU15_=o~J%a~V39@L<VubOkR1uS2%N>%oo44)`YU^GGLr2Y3Y80~dVp2J{B+
z1-E^GYjDB6Yp6peV;%ShWD5K!Sh<ce!-L>0x6ps#9pDd;4e)Mo?5(sHeDQ}kdj#1E
zUk~m<cEAN+L^|QUU}gu`-~llI!;Dw(0`OL(8{Pp1)_c@J2?IX#QS1ud4IV}OS%kk0
zeIvQ>E->d~^eOlnaQOyo7+wp03aNl^0e_4H;RnFVkE2_75WEfv!Rx{AY(&rS{ot>W
zb?{y==M%I$d^|W0*#r-QU)qEXz&pV^KS?{mw}8(h``|s`3%7F)AiNhmg(Q!`PVS(L
zNE%!)f@H%5w<D9`d7BxxkwSP2cn7i&z8QQ7X@l<p4<YSv!Q;qQc;TlwL-J1a4^IKl
zMfSqW!Ji{fz;n0I50Im9!2og+E;#<Plx-~a1wVQ>;}U!``0zcH72XA|-G+YPo51fP
zJK;}&Bkv`BxDU)l4!{NPMh?NZflqDctQz<s@V*`73*QOe^9A&fO&D<geZ+?^1V`+o
z4Ded;s{3hEIFIP4yOE%T2Uk8oJHp$*#hvH}F8CU<34Rj1co%wr=YdNfWITk2z+1mc
zojH%A1AGiAgYN@>iB!N3gX8v)7koTeg)D{#!SzT8z5{&WVeALq3*Pum@`bm9zwM&G
z!H<BgkD?#(2fu+Fg6{=i`400RybpZlyXXXd2weF+Z01bX8{kPK6E2wY1Ii391Am4T
z!ViIW{uo`sw}J<e#c;uzCn+a91Rh7~;esD~iun<~0o;XbhVK@?1K1M$B>0P;(BI&P
z!8@L&pTakT7ygVf1U?14;u*@sI}xUXYY;zN(Dy9u2p9YSk|+M);pZqbeE;(vwdCj6
zA3Ovu`~~9-TyO`{2Hyj!Ut#BP!OtU`;5)$ahv|cG!OtK&;akD*3yd@HTJWx4Gwz8$
zc)^Rz*YFDP-M!d9JOn<4q>N{L03ZJib_m}OuKF$Ihqr+lzhgXvXM#5)W$<<2JC0x*
z@FK7VX@iHrTab2m2lxQe0q+EVjBJ1(0AE8k!>7N5t-XTI;eypjCtUDZWDoohnAb;L
z;DW1=gYY)+yGRfG3GnLQQ!jW0IOinwnn1q>cm9R39WM9>q!4}-obfs~11|?3M}qJJ
z;1teMsf7!^Bg3mU!HdA3Aba5l!BLrB)eZN7OA&Pzbq7Dl`6nsxcJLKsJiHIA8S7O=
z@OrSFGfjdL2Asl~CG~K@_aa;1)!><Dk{5hDxD(k2-vj23XP*)-7(fof1?R}QB*MX~
z&ZRtOQ)Y1GdE^0a1HXm@;CsQBk%jO+@R?jMYe4KAy!t|~YJmsAr>3!|3qJtPyp(-P
zcsY0*auB`+ysChF;ceiLkzNT8-hUZ;vG7iC;^kiD_p?3(Ka1qS+ph4cmyja(aj<c^
zS5?3x;8vs-F8CM{f$szVgtSR`aKcsS5$*?TkPdhV{3@~mz6ZRjh_v7x;HQewA$$w?
zC*&afIQZuh$`3yYo>R)+Dtt0H6FCkq2j7jTiHxh@k}}#C9s)mvWWzhaI}ty;3*0z^
zc7ksLZ=FdU;oHC)uc6)H?cneV^bAh}CvrZ=I{0L82C@lW4xU1`!8gqDs_!EQ;7@?V
z=6cm3cnVmG9EO*HEyxkL;7^gG@PlAv9((PR&@K3AC1r!}1Am4D;fKJcDz91$ZvpQO
zk`{aixbj-c0B-~LBRk=O!{&R{Zg>j#o(1R@UhpojYDM}aJopRbIQ%fUdola*=P<^C
zi{3+9!xw|I-b>x#LGUoL2`+dH*#h^ykA8vp*h7=|Zpgbdj(d|d%KI_=NlE%W8S?In
z09;Vs3DE%;l=nHb6IW2)Yp@?KDCgThA^T>aoGpKVy$(S+6MixK27+?_`Zl<roSPox
zo?TGRM&At=l=III!3E{)?_}<I1?7xxANQVua=vygTu{!;-VYa?iYV?M<=kvJ2m3hw
zg3FL1{N*g{TaiMz;AfGA+$U}aA3*}}$3Z#6xg0L|XQT@*=Qzt5%zNO1`A9bRXmSp-
zoZ0Jx3(9%A$GJZel(TU|+{*}VMYh4^eB3T%3tUjndp!adl(Sina^E2+=cz7c{V!OJ
z?1amis&ZE9Hn^ai6?zmdC}(;eXB{pm=V>lvtt%+!PWHhCk0DR6hLm$7<$T6G)@g!r
z&f-3}pq!nU%sNU?&N?iF3(9$b+u$1E>sj;2d4F<#-)^{|oHy1B7nF0eDwsP2<@~Gl
zjO~JQmeqc^pqxRK$rvjr=S+p*f^rtrCb*!S^>iFADCaFrW(*XR^LMtw1?4Q9E%Z%6
zImgCN9}$#uXzJmDa*oVixS*U3lYCB+#&5&R;Br1pFESne&;BIq43ZSqDrfAq4*`q7
zY%l@>`eVXzMl-IC)BKaw_4seazaHEJt^m713Ez8Kc#mTBBVS~;3&_W%FFadc6xQ!A
zzjMwV#J_M5|MEfn7Y^cIi+|gf8TV4z!!rd^?cZRo!r!_553>(}vYdPJBiKodyZur6
ze@ysIk8wT5jgGYrr+}=2rHX3na1C*P_{vwk_~MJ|`RAWkPe1*%diddo)w*@-R7pvR
zy5fo})U;{S)CCt@z`aGb;+K>vMc%mg{3&(sQj^Tff7?g>ZP8x-PmA};sZ&x@021?8
zobmqJ9jzbNU+20+vtP-(FXj{dwcEv$9Ehhg(s5({B>GGGF5aoHJR<Q<eP#RhM^53u
zX?VQ<cDWoI@3qQzOAaS0i%S;q_g$6px47ip;{W=~uV^klc*Vs#=08v3-Rn~->w$ZH
znLhc;mrsx5|N6_?|2+LyiMzj?CyK5n+H3Qs6&FuiG!NU9zs1FiV*D5BtG=t_;vMs4
zQS@W}tnK&uvdE4MeVO6bTethhklr!B=KAWGxOgXu(y5uGexm4|MKk&LPJD_>7V2`y
zRm1;`JGPw1sEo>z)XCZYll}sK0L98x_!z2qdVa;zBz4KJymFz*&quC{PT(Rx_|+%o
zomRihaL9KqwUqje*}h%ZFT`J!^-28YDtUj>rv}PT>(J&}u60XJ)3k<-o{Og?=I56R
z=r+sRPMgu5x-GZ+Gs)5T%iqj|`n@KmU~FWO*a)I+=QT{n`C~673lj7x#<=~F*PTs5
z9&!9D+G35}Qt$Zs(GgD4BV2!YSzJzpY7R&X$F`qz1!L(3<*yUnN32`yI6j`S{Fh%g
zXzLhLPhDqm$M^S_T}lS!uNA9T<E9KcJJ)Yte%V<5DTDg2u~yfPVoB0xOm_Y8j-e?&
zuWQtQg=uRwHq>vMG5s%^pH0=|Wvtcy?YGUic%}zRm!}7ikIu{HB)N{Ep0@4c;+Y<J
z>I9vAk!dI0>!cUxKJw0aQQM4*XL=wuC}WGw&-FUVPsV`3^3#_8u6fhmt!o*dU;4DD
zZ6@Sr`koj+ZFO4x%xGX5kBHHE>_pM5lYgd{n|3-~pY(fYn*-)2dK@Eq)VAN>epwGl
z83xLaF~s%t%3@!-9?MP?#oNp2@s8;pZ~A(caCNTKGurQseV!iA^mx+`7Sa3Z{&D@@
z^arV${zUa+dc4>>BE5h6BZj+vFaFW&`t|9$x}9ys#@)=@&s}aY?a=S_mRPi$Zz*(t
zpnrKhcFy@`)O?CmSGidUe!#O!dsV5hYEiBFsW8@cEEQ*Swtye0VfEOoS(s<V>eMom
zg!>!#Z+=bsCw>{$%dNwyQ)^XF)e=f#EC6pHev=B}T7|2ge|}I>Y~hM=pQ}SR;_Fwd
zRU@Tnf-QxupggUFl$<Zduap>dT)7@T2j4cX`H@B&z5y<&w{p#oucT9|Yp@g_$=igL
zm~}R8tq$8?|M+rW?CPm8Ii-{Oo=tskR)5j;y{Z2?YjTb%4-Dm7=UVkS&OkN#ICV<y
zNMb);()b){pl2IKt|qpRZUyy^YM-=d`$$dek)^u+5j5UHd5!ktTc(C9b@qzUTPrOU
zR#(PWMzyEh6nKO?w1+sA>Xk&D=#Wz1539?mujzPe`Hf&~u4UxXWJ@G%wmKmPey8BM
zn>4b~*>&o5oyX1nWq6BvH|6|{E@$7M<-ALk#FTSZoTbL<<IT%Vix!o5hAG}Cth~CN
z+to~Mozfc`wbsS1{aCjAlTV@z{3HA5G3?g$(KqTxOK6GZx}4HmOz#-XE~HP+VnlHL
zR(iRN7yZ3b+I1zVg}LH-<Wf?VP|NZ4YqnZn>rY3tGFYB|ZG$b^HYJT_HHFYiV@8G&
z(v&eGam09QBSGw_72o@%h1#*h&!}Ux>F=<i7341cs2+SDV^tIFx?J0GGd`En_VRn!
zc;9J~Ow5O08|eOV47)p`?Q$(TjU6Fl?JhBon7;Ui{UA`BXj^2(=N~n`3~XD@evIAA
ztWZl^Ezx7Tj3_eVzm*YL<_<TL#I?yA*12EFX57xz<F?W9P5R<=&MpkESW>^*-?pN@
zq4}ywtxXMAHZQFWuc&FBx}t7rQ)4ry)l6O5xZ=v1<`oyOoHohNc|~>0I2g(vQghX$
zX&2{Bdi%&!zkhlQN5|<?rQTv{mzsFQZ05{1IZRQf<L5KIDg6Fca^bWy&Nk#&q2=M`
z=*8H}=D0VG3abdO4A=YX<?mIKYMN&?tZckK+%(DGT35VO4j8*?(z2TR=J2GqProFZ
sc6{V$`Y|C+%YFJKab=x;Nwm^LpMHtc=i39tf#R~VS##dGaG@pt50D#Y@&Et;

diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-9.0.exe b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/command/wininst-9.0.exe
deleted file mode 100644
index dadb31d8938b9b147830382495eee2453c171648..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 196096
zcmeFaeSB2awLd&>Nd_30K@tcOAxfg?phgEYae^H}W{Ap!iDM?Dkbo`H)45b>at_d2
z0*Pm0bJ&cfSM0_9Xp5Eha-aIUrT4Lj)k22QB!J3m5rwvBX+7hl8Z?Fpq@3S(?K2Y+
z)b`%z_jz9ac;@ptZ+ox3_u6Z(z4lsbzl{IOn+;}z!C=9qX$Hd{Jn84*_rHHjB6{4k
zUyn1qH0q5T_ZSzvapNPx*BkR!H9YaPhDX1V|J6qyfBXqC|0|E>H%O1?fBo_N@`b_t
zZ#=R5u{*|&9bJ&h`kveew>5mL;7Iy9a?gJrk?_6Jx&6o^{Q1ix%kiw<_rQ^F^5@bc
zO?WnZtMJG%9{+DgH2&Omq>(>=#h(v<{i_1y`9(DdcnyXHMvLLu=UN^}!<;jijbn_X
z42FA52Eze8^uw3&bl?ggjHp8Ic+J3re(9%S8K?*%4sJG6bTbDeSW3X3Lk|ixSbuLa
zY^N8G+0Z+IUOxZV`>@H7_xVvgbk_+JVRiKfJa+<tFZ$gfKDJgw<R51Ni14Di0`K9!
ze1l=x9SzGL6(0r2HpEcfe}w0KBQy2@`#W?n!;W&q_ago}JWqcHuKkXN#)hvF2-OvJ
zHe}=Z!Drw+2>t(m{|{22wOt&)(Hc1@j%gmaQ!;lNmUyI(Izmh=u(kHvBToXAYPPZ<
zyN0bRa0Hw0H;7M!mxR<-um<a`t!?cWm)3M<8nm21RhfaEmM?44En!2Amh%X{Tic}x
zt$!8mHG(ZzW(a3!zmpHx5?M82qxQSn+WroQlqXRC(sC9N^k2oXBOp67m-wVji<j29
z+CB9h)vQPEu?0glY|bn|yZT>6%Jve;DrI$ftwwx=gl5W2vW7xIO|ofkDc(Ujso7h<
zL%})4NF^uD()F5@uSpI-sM(sP0VUx1a{MxY<YYh`70}U1+*u;!+au?BmbS1-tIkJ#
z+r>NdV#218rAUPw{8u`-5I}|F+f!+?c-r`L_ymwR8bycAJS^(%3uscFCgo~5rNECh
z4N_1b01A5WT_R;mqwrpi_r#KrCS`}hmJk9e5CBS0I6JMqMRd1Q-o?mUC`RFln?s>c
z*c8-q762xwc&*x7%xiUbN|OkVsxK7itx}y28o1h*)-OJ&Q@L1fa#(|`&Kjz*w>}H3
z!^Kf=ci0e6e}g{Eyf($#&Aizj#rrz*=7x)f9mq)Wo+h9RuKs{hchaXGo(s^XJo!K#
zh-Pcm#M=VGCPHiqfms6Ts(A)OZLPagoPfx&0bwm+V?kYjOg~@(>iTLxAoWZgVA*hh
z#3WaLiR7Sm%tc*->VGap`yH_PP~#%hcq!}T^@+Y%;6W?5^mxD`&o^HH=loV_eGQdj
zt=+gQ-kq%VG=F)CwVuRF4g1YeJfaJ-K5)*pu_}jizpPGFylv+FEhT}6GBTB>t%`q(
zXmPbCCdiNNGPsVfa952EhSp6bMqSLJl)LMVrE2+dgQ4ZO?f5#_!Mu@ZUKVS-&3w@;
zwY9hd4;f90w8P%&gAi=FKk$&*Vs9k@Yu^`~D!1PewPh*(?e={S<(m&7D9?P<zR#Cu
zo_Cx1n0;U6^=33coB2qz+&Gm*Uq=aww>j$Fqf|$nv5n)~vaNF?$0bm4Pc&fMX!S%6
zN(0XQQU9I?noEsK6#pi1a<pmB!j1Ed^CRt2a_@^E?TVi=X$NcCibUuFGeAT6u@?=|
z@{B!-cQf<uOw49h7DIkY^|p-;5Aq*ydbfdnw^ymwToVz$wH<Kw$Ufksd0%Ay7o(PL
zx!53e0{80)lJZuQ5FP-=yV`VF(?%f4{F|Kn2}g0hCcR{Td7dqR+qi(%m<u>f+8hWQ
z)C)+Z^VLlRw6D^NXst23N|TxcYRTUyHn+9i9{B)>$W1R9#9Zdx<q0tF7W+QWXdtpV
zoT*j6Bp-03f;8{067MeirqC5li{FDA;XbRIWk%Pg$;T=!&MtOg<9MR%fb&hzj~!dM
zaUm#pP)f2xvAF4zpRz;pyXH@JF#mRQx8mQ%{5$OX9=P7wO?6ylOi_(BZE|)tmu4*y
zXGEnv(U5UtrVp(!;QY9`^xiwg37^|C+csvFE)gxIcS<JT169Z`6i|P$3|!3HEdC;J
zcD2XXqweuNV7vG`xItuAL0%59j}yzdkgu0D)9TvhfhE#Io{iS#fueO4%>%CWQ=11K
z7j4Z04N{4xGjpsjaTkAdW{&nPT$m^fTciHLs(||Aukm&(9W7-L)WWt*<{k7UEN$a_
zo`sO1+m>P^s6W{8{7%z6$bK;^p#BX>YBjOIq7Ljg8sx&rjnwI1Ab>QOl(DC%y3EiK
z3R~5}uY++g^srv_AmD42%;#SOXszP2D6{De!vH$8$UC%cc!zGImY%Z%Ache8)mD5-
z_X<0Zua=V!P6l?9giZ80yI}e}1XhekwzcTN8w3%-VE6)ny+9e%M7_;{eX9^!6N2Og
zAm?oH;Z*)o&gbNmnC0pR_i3{}-PT)XP~GLgo<!F@KKaV%hCd@pSi+0n1`6oKBUcDr
z7A4eOZ`7+3(V8v4-Gnbli&>v;MLuCeDC&)X<+U8b4EfpV8}i?A6XBm|r;ICx>XrB@
zktYCNXz3|}EE$q_FM?JfS3gACYxJf_n-yt`BDE>fRz=#bNZYiWtq+$O+?`F=2ZYn1
zk#qv0@gR~#y={T0cMGnqxHjY3ge!upIUu}_L^M!wautBySzyN%Jk|Dq(Ebc6W5me$
zD{7JLdQsMZuoI~g&oJ+HW{p;FdsxW-8MVcD;4vm3G$S(Jh_*&N>dCADtty~LEu*MK
z>8J>g%G0AtDQXU)N~F!=6rOZ5kDsZ>=TrO*JbsHfRg>B{$QBM#u7el|<PxY@B5h4&
zv6aUc=<#Pk@c2837c9JjI|5-%lQxCGE_vW0=H14uVPmv<$HTxl7is1|<ZKdl4YgC6
z0U&<1VF1kJnOlL#)ekLa8>ke28Kv<2kP`vukb0z0KpE<+z@pT|ONo!(tRp_!h0oM*
z4oN$RMoQx93kZX#90tsEQ)Q#6Ob0tOX;71rn$(BU6Xl{mETe~zB<K{k0cy4ZT&d-3
z0u$HruIS*rwrV)9^`PWnh|Qjf3~GdYFe(^_4G2Xw$WUo&?(#;6Y}zT}Cv}_v8FmBp
zQApz&?F7Vj>;FU_&}MH(A<@=t1UkD7?}C9c&`z=0`2h~id9RiFdO(K@2mo%@PNARN
z_&Je4QjesOdqMO!lyYbYWZvfVD0nnAVCoRg{a1y2H-tR<7-GIV%FBhY4}7viJHet<
z>816qHx{c4mk{}T@tq=n9ub42OASj3D(X<9of3}H6Pnv8VGq42-afqU)L#ejx>bKo
z;x(eb_Tp94UwiPnOn+6iQ?7o+d*1yAdxSK#5^2yLAsJF4_1Pmbe@Tk#OQc@$TP0GD
zD3(a7_=NBXQUmQ|t^0~NN2s8@wCX{@LoY9I5mh~i_6TRbK;m+*idJ6?VWd?j1KK?R
z?UN5=%bkvgqz{<4_XQG0%-iz<b$;emUm)SiyyssaHUX*4u6EB=<#It<D0v635@tYH
zxrlH$B`l$*;-xB9=&wYBQvH=^kfO{Gy*Lq5G&+y?6pe^52TS}t_J|oxQQ}Y9BbSI8
z{$6|J0)GL0RJ^#~wnxtK0M#COivnWy2>A_4{O9eFPP{P5>b_u)yoA@{arVfIcvgkf
zSf3H9cWo`H-qS)tHZW8N!x)9yJptAKbv{&v&5Pn>d<X`_3O#0G<y;U;%h`<1p;h;=
zF7-5qY~36Ib)(*w0>LhC5|9S<myb~<4s_7lSyOj(eui4V64><Bgo5hZhLpm!e!RIe
z)M*&q3H?^9?yXh4Ni<JT{gDgkd6Tt?(P2}3HHttZL?7FUc3}QN*Bk22+93wb4TfB2
zT>U{`P?7qSX=?UOCX6jXp&9)J7DNa=)X*MKysDN%mKU474E-<sDXc5)RJc#^qE#S1
z*z6^#V6+{+!)T#bJdSw=^(53a26ZUuJ}gd4RaLU8AEM$IS|E0a`*Ri{bs|StM|6CN
z$VYU{K-smmn$#Qqlrrt1Oxf&R0ELBz;$I;jhC9|cTK{Cd2@|^z^%(=|JIjz#$#Qpy
zGlD^iRqB!uWWYa2qA;Z0OBv*3Q-!jaKiQUN<N;(+X%ecMOEKQQA)^SU=hbeU=GL9W
zmz)Dr97=sR#ka(v+bEuz<P__5wYyJ??h@~ycu$G9PrR$dn-pidd&L<-z8x%4J%|q3
zr5*&aV8VhI&^v2k_?S@f>OR($Fw5PV-i@Lw3pTa%koX$vORJc79c*LQnIKHPb81!o
zh$ajh(`|V6+BQUEQ5&M?fV@}R5Zxz5ZoLg1m(Yeu_hsoe-H^su(kl$2b{Hv0(Bm_p
zn)|6m9l$ew8pvtVIW>myp%xT4r#G-Bo!47ZrIswIJ7<rORlMhQ<fL0F_Z^l7&|E#v
z{S56zEe*zl6;D>aO05k66D==B3n%OG(Oc{OM6BfL*(s&&yc5E^&1Ui-n||KzJwuIt
z9)qwNwcL*f0(rxG&!h9S<rS+Be5z?7bs<JhbQs|^V58oHAaEW)b(R3-be1^B{Ht_P
zzdQss{jJF5d`pkjGORrYUG1U0<X9{5TE#hmKs1^}!&ZgRv;n~|9>mEJP`8lwD+-Uc
z4&n}jR~H+4pq8_ox<qChk4%B+hMBXsCK}10G_V3Bv@QBk*dffU1r_zIwAsxNzWON6
zJG`sCUVRDnbP8F^2xLRhc^#mOO;0Tl;sMq0Peg4iTC_s<gH+)8G@7eIe7r)esSu}D
z*jxWXTsQ-R1le1Rx4KPO1w;~S?Js*BZ1yH_2W!fXopV5s72tAB%Rn%gtwt~n3*a7-
zG=Keus;B-0{F4yEMS?J_Zo^fSgpev-9FP2jM*tR3-~6ghk~<Kj)`F;97r&qNhAsO7
zfPmuv$<M@$DedxU4dS(sz}9_&_D)<sBDYeWTeF@Uk+B^bmZx6*r$<tRtb%>z>Q8xu
z%ptv>HB<l9MP*V(XC`%{l1m*Z$i&gyGXuly^awu=$<w#wCg@?5Adi47TqKbL2QRFb
zJUBKbmvt^)3NuTdvkc>`K`fK!6oLK*sU!s32_;8};=RvPEDMYd8=@8Cs?0|p4qL!}
zISV+~!Nz)l5@|VY0M@Oll@L5FJ=qv7(^92%Guo52k_%Yzw?!A2;1F?y;1q!!u^oZ3
zdQ)_k$#q<rq)bS=Mw;!deTZtg|J$Ki*NNjF-uEJCsGb=FapS*7gnPez(+NCTrPX~%
z9Lr8QLl);TC5Nze`Yg=f=JZ+F6~*XWZ{g~->R3#Y+#4YVBVj>i2anNmR-rOb_C!sJ
zAQbGilNwCRS*eFFakayhrmePswIgAZ`bvWP4dBW_qAG;f1k^Drh{@Z~fyh8lc}hBU
z3FCbURvh!AJ=+u`95{+u_bp*4O=PF|bYC0Q?=pB5OvR!^F|LJIJWOif7JR1FKnx#i
zLF^irmdK8JA&qj@;ZuKW##`7}Q-gkp2q>`9@2QEo&ohv24tO)0Y<BcW#k)()fiF-W
zOOcU)<Z)6}Fa$*XuT>EVc#aBuCONC<b#(1>7YBrMK$gY`{sXtZ2Avr1fS(1DflL4|
z#v44e65Kv7!7GWcy`HgPrB2-!LIN6&kU1Vo5DMGFc1rb@0PX>oB7Hd`09--tj{8mk
zI0mrMVR$_O27e6)qC!w=1s+lFYbbb^mLmdB2-fzLhLTwY+U<83xJlcqX?uzw{Z)qc
zN)x2@MLY559^AQKSVV5<jd1C8d7I532TYA06?zPcv<bE@a5QWn<JU{ZFFe#J4x+Oe
z1I$+VuaQ>qZi6lRYQdL*8=1v*J1}YiY6aS3Qb@=}xR3+|hYMFt+8On}DD>!zM?)c4
z36|hnY!1;qfL=Uadn*uj;D#;@*gz27a0%idj?8$Sg;zY5Q%IC*M6OG+Br*crkV8m{
z6C5O`dqFI8@&yDwn>Q^?sjv~F<tbJ@$hx7kIFCBLP(>eR)k$Y{uQ~ScbI$$8k^!jd
zPN<e$`WMe7fLv0Hw#P!`oe7;YO<vA#l{Ku%YL7%g&6Xyc1Jc3X`T{;`)OFzb=Shf=
zpCg-udjn#*gom8-P_4)zfM-A@d%Vk1&_0e#y1|cNITsU=b=`r@-V7k>fjlZ8sAxN~
z1)3ofgukUe+PMjc(E>5`iRth^x2&}mld?1^Y(n9yc$8iq7z;V3#=WKLYn4|yX%&}p
zRF8BuTQ{LPjN5a;sDEpfFd4cvI*H=lq{}`b$r%FuzYc7Z2S!1K$-OZLxlm8iogt+G
z=q+2j;21%E&^kDrz10RFnzZ2K;IFn*oOeqK3cAbP#Z$#QqTbSt<L<Lcx%V9w9UCi+
z_f;4ro6qMVHRdlE4D^x8-C^glSU0Va21;0uaFi1g#x#9y6L#pIaDb9|&FcdE$W0qb
z<1T$!Af(inp$<TSLSM<iCvYhtPfiFGg22;qth@qJ0SXDg7yt;I7~pGvBoq*Spnob)
z)65HXYb3BB!EkbD=w%YRR*DjlD;Ud{*7G0&g%o8`qCN5YWIyrxW_)p8uR=!|41_Ic
z*X6zFb=-94q-VXY{n98tF6x<Jnrcfsc^%0$5!wrMn&Cz9%%LRGc=Z=(Z*<=xg}W~5
zJD?_&E=G>oxM8@27$--E+6J(Tr>C@EJZ<iLfpV(vkk=JhOzSiE%)(cPWW%S`#6Oxc
z_E;!vj}3a9dg;+LD;-cG1y%&HNI^CpvRWCeW-k`x;vEwykxzip?fX$f$W9a~-VW_)
zI+z>aGXS#p3cbI%0_JC{4X-hk)UHnfAO9Ot@}361<66{EN2}J}dUZ28Mvzm8XA!D~
z&_@0Nb*ye+1-Vz`YH&ZsV$v7kT@)C|g_yUL@&eeI;&o88#j#;SML>8e71KP2@;8Xi
zU^G&Yhd?0-%B6ZP_1Q>4E<*KAi=uf~#$2I6nv+hNKa_OW=Os;K>{*9!G|WnhMjq56
z>;{q?VRNcyS8FF|xS$}yyKNZWWE_--jh_Kza|oBc<Rl9TAAzE%XGrMPU$#^5Pslm-
z6S7g`#Lu5w81abkT&g(MM(nPPB?ftg60>74IC9(aOrFRYslO^!3?~Adwv=>ZDyb)+
z&WB0>k3s7h5j~9JlvJERt}cQ5xE=usf~tEN>8}nsX_BVtj<A#qtQ^q-A*@SIzy#Ij
zAa7u`=r!VT+;yg>Q19VPV09hb_&q|n?GalxO<-JzE-1*3e$zNKozc9`HerdF9bH$D
zJ>>67JH$K|)}5NWpm=ADT^NF4<P+l_vGRiK04FcJV%6}9aVjLr!QL~$-f3YCKY1v`
z+fN{dM{84Opf<FGjR_M*L@vn@&PR@vB;Uk)(bD?5#je*~?P{U|86KeSm(mXwaW~`)
z>L=+bz8xSgYb7_R;@!f9Lzj1}wZ6>2C4&faa%*25h)uFNJHXYVsDD#cFl>Pg+got~
zTocgVg8yK)oXn8&!j7P@74RecqZk98MVUb%f*6e9MW_ncl=ycqjdd{hw!k%sJ}j&P
zL_po$2>n$LSjhw22zY_aClbAC;X|a};^or^Q!hPu2?(WtO(i2y9Z-!8>3jm(Y)Y=4
zfi21%2|^KoQ-PgipdP4z$QAOghVDXW%Dw8{rn5;%aBy@c0v-84zV7MY46&byv5=2&
zG=f0-Lr6>t3dtp;wjpSEjVYdw0diBDQOcuufygMF19S?Z*&HE<KnmrMhZp2YvG-9x
z2Gs8jRSsUpt6l-;eh>M10UZb%gZmBuwgxkKFw4<;!0Y;;@FL-*gN#5e6$b5TTVNmI
zR3mJ<iqv+DgTq>C9Y?}8goLn`2Ym0FykKqiR^U!5<LqqoC-n(F?d$=G)u-S-xS9{W
z2@81Ab|lqNz^tWiW^gUKb9jaJmI4-u{yP=ID7h^#qAn+4nY!9B`eSUR9-uoaUiH%G
zx)a|RT`@!S1*RTnz30)l_{%rbF9KcyLLRyf_(ISbu=xpsYD;rp9g5|avwWZcO@W!e
zZ!LjT((NI58}H)?q^uzzu#9VA`9Nr>zf!}>zj+b&O3dKx#Ipv|RQAYr0JZRNu6#zk
zL*L}3u($pU-!83W4oxlEBj3PR^PKHyB77{vN08k>!+>B|iW@1GA$<y>57kkc+O!j{
z_Kj^^GA_v2O7r9wqD@<eW(D@D0Q>1r_fUqIA0L_-XxjSu(*imTXbPA*3fCq{A`3^6
zO+dXj$i=!~f*C?{dSrpH*~MIFoPxTEi8Vfr-waJ|YuFTsHf>SA`~e@WDZ7BM9oeY=
z3R-jLsEY9fBe2}G#UPF)ZtFqyh=EQB0RZya@=wI6jSwVoXKm6>sh2P$EKc~iM&Z)j
zUE&1r(2z<2F-8(uC#ZCtTKyh8Q#@<L5GiYFxPJ&=G#ryHJcG5qg!W2{_(@!EBYhk&
z!=yOb$JEN)KAwRVYWeMUe3Fefa;g>+1|32X8Vmx4Ps{Ey@ySnBJI5{JMQNt-4yJSr
z?lPGxkg7t~n63nK$0VsJ-krK43|9!uuVKn06vHkUaJtwceU!V#qh%>A^co-QV6>I2
z+&~w95Ho8zYjxQ(5sBsBP`AohW0R~Utz>32nowh&qx))(5hS~cK37{v712d^1a&6H
zC;(yQWd4Sk5P0j5lTe`(BV}GfRq`M}kAvYg%+04BolD5G@&XH1Ym^sQnPH>jzVXte
z$Z=Q}0popDMrn-4GnaG#SQZ`J1;%AUJ|9At4Ie_!QvV6n=(C)Bkxam)!KT}SN=NnY
zsQ09BfRIzqtR#tWQfTL2U&R+YExd$}p!y|fC@J{8I}w8Ui<wu0giRdidJ6HLg#Dq~
z@hTti1l3uK&{4|kA?BLls_}e@cOO^#3OGQb-UH|*%>jXyuGECM>*QnrA_Mb_F9L56
zWwYKk^WcNTTlj(|b;DA&!{>!hcv*yI4i@2GIn8)z(g8M`yL(R&aLzg&hEyy{w9tj=
z;~wJNbNJRxm8u|yA*-7E6Qd!#7}F$4^=tQ`@=4bj@Sgj!J+c+Wgyx6qYSc=Kz_K~_
zC-z7SLffYL!lOg#y$D8NhiGbp)ixN=N8OtAY-`Hm%+=KlZnqCpG!l1X(7;TF0k|TI
zDNq{4i9z9Y5cOKnA*%^<F6vi&D71d5zUHecRf*v9LzVbR$rn^Yp@?fLF(;%pAedKT
z)&E8%Y$Gdi{vTE1hZtA%N`%7qL8rE<iDDf)Sc#_k4xfE*W<Y)YaX_K3Uw}L!AAUU+
zo9NKL`5fpU4TIhad{Rpf9pS~)%nT{Wn@p4DAy2ptBi&FQ_Q)<YY7nbne6Mad!a8`9
zb@1MoJFNHFuJ*o^T@Ts5Mt&@b<yM2V_@p<0wT029!7guK=`svbQm<NlK0OHJ2o8j)
z&%mR>$AI$-2pudN#7xok&0jKzIk1BUK{j;LVN6n^HkJdBonW2LQ%m(J5{z~I5L=7M
z&xj#;5xLlAIAGDvz%Z2-QLQ`Reu8+%-E~m@%`QC6!SHAdQ&<9r6;ALAW0~4wabi`K
zu;?pghALeaA>a5K8f@7rOHJ6k?-4}Rx{kx?K8}2{f(PI6H_(NIQoL!atm@qYO6aeJ
zqjxLTD2|1VP=J_F{NDi-o}rGRhQ<(yxXe&|DgvQ#MZG%&ni2}AO%fjpLCL0Q(~gCR
z7{2Ze(}KoI`(Dev0W}7>M6K5gkU(eo>>UPm>5ni|TD=8cnUcCKaQALfEZ<v~CwGiy
z9kFw!K$V&SrI--gL>}np(ZVB&Hl>S}6j}nbRowvc!PoWHY!5AGBp=8oRa(VGSGYjP
zMy-USk8*Q?>;yTPX>YB7)Gd*=bY+lXiFaBfL8Ahe=h&bAKZydS#SHE!|5i4u4UTB`
zCTFYLhOyODbBFn`F4Pl~!iIgXp$K*PpULe`YZFpa9rj2FA5?epSqU!^9*PuE4^?se
z+#S+`;p_I1T@;me@L3Ycu49E{&GE^&t92ieM@4sRg&hGQfJ{a(8#Vsg;l-3vG3tt;
zGA4x7Z_|VTn(LdIw=KROG#$ce1_v$~4xFC?F4w%<;?E8Tc5q-@8dy9rl+7TzNl5)T
zkgiuAruQ(1nOLOz?I9@_VllAzpyu74@D8O?d8*fjQdvXlA1KvLLl7r9#1Dob;EIZ<
zXUP4pdADLUVTpIEeG{#~Vpt8f+Nuj2R5Sy)CnlgYy?nOb8c=`xCnS@bwo~OrEKA-_
zZZv6|(2O#m`sky5b^@+`9=vFHup{gd$`L?_r8NL`R+8rVm)1k~rw$9hS`1Pdnm@ku
zUOofbL`%;iw9ZfuKM8`e)^oUH9RSvnMEIIJjHH`f2NM?NvCKuMOX^N5`^zz!$O~~V
z@2d&)@L+01!&~UFG?zE@4UaqHYxZazIW2-<t><wkC!2iECbxeTGDN!v%@0l#)}mLW
zYD|o&RY&030M*QzcN3O=AxyhRSTzzTY*z0A0b%Q){!-h>(gDu3;bF@y*lG&~g-tBV
zE9~8*kLKGUy<2{J8kq6XT<&qC=lO@0r2L~v{yo4;pX3*I>aSQ4fz`>p_FOZ4(ESH-
z9+u{a_hVU(SW+S-#aXl@=T3Mkomi$KS-Jjae>SFI<{t|IXynEi{UG=VN(5&9umYfy
zuK-A`N5BeD=n1q)5p$Q&vf(KQpgt^Nm<MfgptlcOA%<98UHJzIjq2HVKbugW9I(Sl
ztFsNcI{9RLq`>At7gH<A(@C!(_EJF}p7zKd(3JZ-#hTkMK&Xj#!r{3YF9A&l;VmW*
z6Q#UBA>L;AATuL@rSAG{!f+6E7luL-Fb^Q3v`=*8<U=YmfloG+7uba6uMRQS)u{%k
z#%Z7BDPbibQe~ft{}r8st+uvYxeI+ooY8WHCK>Flrw}~MLpa>9iT|3C%qCMOi0M5T
zNM!s}E4R~HpRNqDOaXvt8n8IoOaS;N0^k8OFYqe&C3Xy-fo$G04T+bC*Rji2t<lsn
z?Gb?0ZEXap4yu|KR6pv0NP%FrM+#8naNnUiGY+9Nn@G!&&oAK&V||q@V)V1?n~R}3
z2n#@mAkflgQ@r}j?@2y!%Np%@0#y)-QxL)@H+qnL0r%sOBZM#Xt5G){C61*<g=2(l
zz^Wge7@o&>k%v5I3z_HQeL@nwg^Cl-<7Ie%O)VVyA8*m36KFPeEc#wbg8;OeMNr97
zIEnM*Ih#{?b^n9B7GBNEs7@G`*V4tX(l!-X!L#*suGiJ?&VoQVK$BtQTck}Vw6G>T
z%XJ3+j$lCj_1%!H?Mhv5w5jjsKMxoEJnC%^V#~v8>UP9H8tpS!AqFvmL$YueLk`VL
zve`3m=SF@6(A&Gb+p=bOFhjW+t1Q48SVl!l7U7aW5R??eY%6tw#)#>=8uJZ3<`$10
zg9T&hG|*ZpP2=4ZgUKuCkFTLB7@DbgzGDLu#|NNaD&Dg+=i23M&qq8K%_wy}O5N!$
z?@2Hv;AaA!FErA7{p1I(?e)QG%<Rpc3AZDgvmL;{AyH5rEicFoyh>_IP&m7sW{shS
zVj?sgs6~|H*W~k4zkUpzi6=!^b~QYVCjm;+rEhQ`n(|Z2hk(LZI*i^E6uNb&RH?Ub
zL#dd)-orzGr-!~kY=yv`BLay(!lSuo01n*YxlrEl(FTRh2o)l@VIGU4#tmM9d_F-z
z9G>Ji0iYKiT^$sb>A~U5eT(qMKGk)lJhc;Zo9Iug)Z6%r^ffgTdUbp|2pi7W7Z?V6
zgZcv<wp_i!H7d!iPSr#1P8=-GprXVXNK|n(k(dkB8J|KvZX<Lq?om~bor8Pg1zP!|
zmchw`m2=!l2}oEy&r^c|w=75@vVzjmlfElJPjmtY+HuIq{?uLRj?j_v0qmuPYM~()
zfIz)Jq<(sqN_v5WfV)c?mtGf9`WR&RhM+)_L>CmV5(2M~`;;A3H<E0rT}=3>TYzh#
zu4E3yOOu~}&4j@$X<TpDX1C)tpw{uFId0l`wu$V3TKKG{dBnVMrZ5Yo1k}zj^*kE>
ztTp?rRB&d^zVo1w`jvP1a8bLoUhmD=)#M0aL1zs*{S{B_BS*_$Xxpp%v{Zn#HTK;G
zbMKxD6wupXa`u|9xRdrL--aZ0CgaEPV18TcL3`v)yvmmy_9t8L(sFrM4#vADyV1t1
z<5l`_9l!Vq3c{wVmIQt8SqwP)?(yc2?Ypat<}3VZN<Gb~rzQ2wNIf%C&#ctbntF~(
zJx8aWV^U9B>Nz&`9G809>1n<q$1tDRx(3~kb-Ir4rAl7xXI=Z~g?$W+FKT`(yJT;D
z03fYr?2-3SA7075ykarc^8acL<b)$#3EKaWaN2hpA2RpOHD75xBYpA;Z?p?&v<s{Y
zmASz7CvF}A!8$pN>o~hW_2yN+z%H>aD70fbA@AyFxefC|{~HbnR<XZ)1@LdjK6KcB
zv0tfn@YV&hynGsSwB}x?<cPjDtrujBM(*Zl46L>~2iyazP0oQ|zo!|o<_WL+-7(xr
zeIC=rOWU&uj7nuz$xT*6=;F~=kcC0a>)&q{C)s!3?dqL=A*NbgmR}KI8Cpj=56Jvr
zP1wRdUTS}m=DJz6HTFS<Qa$L(G+$&#V;?x!=~%)#{TR!BcG1_%4Ab9sW&d!|H_*Eg
zoJ;S>YkJI;-MZ+TaNbTtqW!1^dxsLmn58w9$f74gaIOpQl<1ht@+?nuwWOh9DE0r>
zN<wwsNmWQk@9)$}{)RPQry%I`f#d%I1&4^Ilk#n%8j=0;D5&`d?X3?%w=Ze3HdOE?
zH1Q_9waLocaEPvYWBy&rn$d3u*?uWTT(opCvCc%-(doxH>pV*>=OfmMUpz{V9&j7%
zo447~R}A1bl+zpgi^Gi7$+7pWu@9}&FPKlo)LipX%B<$%adBFIhgrPdzS~7?lI!XO
z81ar&W|&90zDo=lwnQ5Tm+m3%wLjTGOzF4A;u(s6(0q||81}}2!=`sLTXa!VnSrQ#
z+GYFUqHm??gZCD2*io15S<2cq4s3ahc=>IDJxaWcbVvmLr9=qkyiAF@UD;8dh<N#b
zqoko?boBmjD`}`4y>frIPMj@yy}(Ct&X#E+{v!%<`u%sx8e&S$8N``>-i{`;Blwb<
zl9P9+8FfbgyA4U4c}$A&9OX_6F%>b>{W>#sU1cWDqJOz~ob5+H`j}X<6A$9Y*g5M`
zb7$;>+<NnV_^PoO%GMt<iYAxoSX|z3X+0?QcF-I?mYiTcUB2_mVrILSJyPIMNr_Z4
zQS3uf4+JjpeoGG-V%XhmkTS5264@Pewa@MHHs{NG{_0T{v^JX$dNA>_4jOlJ2$L^3
z6GKyfh@1XOGY;z0_=E;gTT9aqDUg3gSijd{tQGC-&FHf{Srx(c9&2)lw+u@i7=p9`
zvbtHlEe$690t2(xhF%Kvt*yr;ng%1EHcjKGCkLP}Q61zS4^U?n78Y;>S?)v81(Po;
z{*&yG({F>jHLr%PwJkIsQTzv@o9@#fWEB5VRyjlQpJkOZ6@NRcEK>X`tDL3yPqWHm
zv@WYGRs1$qxd1D9{pVR_piJ?fW0jAbc#l;sdQho;-F3X|#Cv$@hWaB9*c)$<y*BGS
z`|b&V@Y{^lgZevOD1!N4pN>qc&okRb#ox=Sdt-5{efPl=-x$2rZ^Jea`|d-yw;mMd
zW8X!8%ppD4AM@z00bUaGBZcF^>D7bgV+;t{zV~;tkzSb(QPDOjemh(Oc$43?E7g4{
zLA(vvx&6t;vDe_2)GLGnfRnMh4`}@tYu3$cb`CX5Oyx+EQpj_&zwG}wjWXiD5M|U?
z{4G!fqDplSuq^T08l6=9Fq$SoN(!HV@HCw%j9^kEN&;yrkJq4wVJp!Qr~iQanEj~_
zA&0S|x;p8uZnuAD2A9XDA0QI?Rdkn|ng6WwkP)AU-2Ohh+y?Ml{e2+%+>PVsYuE`h
zN%}PLko!<$mGh9<f0iKqNvB^0bYndrH7~X4#_Q%k0LYJ-Kb<$l-;a3IX=G-E8EV>_
zn68(LjX(gM@YzC7AsxfsvP-7b3!-Iz3!7cXYoW>cdp+_u`pkr0+a$WrZJUI91&V(k
zT_KT=0uFs1gxu6;YMZnMT2r4vypB@h&Db_+b>_wgjPu*<?z)qW_qv;o+Mk?G7Rbyl
zPwu8x7!Nn#MWmPP{#d?f?aCYj8YRXebP+<kGN<4ZEfb5Ioo~n9HKQe52j?>Istw(Q
z9l|o)>BpiE85L`Ep;4&-Z=G}=mSY(T`mFz`^GHj~h(=K=9I!Z+DxqS<S4v(zwxGb`
zI*vv0el|DHy<hYxfjp%uTdA@tRk>Yri;%_;Z7a$^Qil?-C;?lSC)?1B&p^Hsn4tt_
zDuE&;P^<(>m5P;0ML?-o00|PlvWQOyhhS>WW*$0?;SLmqj_lY_$O5I&S)=7E`D?C+
z<7)ni_t_z3Rq4X%Smkx%edF5VrPww?In+}YHtco4ashi}2QX<azRTYFKk$Nek-5d_
zy?CWlL);gotnih%j8A2KZpr$5X>^w_zx4?ZK4+AyFTg$?U%~hBDHIjLCN^rTXK0~(
z7;ms0E#bk0AGkT(M-*RPQ<k#UdhzYVcnoEiEM@WlDrapnqwhqklJcdjHTIBFQJ}1y
zrS6B6t4(BMr9bj2z*Nopy!cv()$pZ7OY6A^B{7PbUlGHC3lVTGcXW9c?4s86JTeNn
zc6kE3qV%;0^wqU;=t*nx<n^<lI!iaQ$^v*DPn-)I1KOGyS`A^W_-4W4%=E;6f+Vi?
z65kAIJi(E)RD4B>Z>AEO;auuqz8UV*4Y_QgE#U0Nwu4z}<_(}5R&J~)G9>0Y0qPxe
zcdRxmb%Sg^HpC4&I|9r%%j_${w0a)s>cwVEoAb1I1EPb7q&)T`f{>^$LjEW#af8uU
z1mVs?Gu($H3*`-gk8YfSqX;Tzq9OIEUZ|UL&&(k9C)K!*ij}M(4|~w&mz3GWvJ#V&
zQBr1+O62>;NSR%kHq?ui+1P^)`LVMGR$t84mtr>-GXY;#X2Ddq;yuYS(X}yd$jQ9b
zW56ohbA&>)g4UmZ&0}CbD~NQPo>@E#4hFd?32)*<c*Eidn3NDX?8u4t%<pKZW|vjg
z91Ul8n#B8CE>FXLBIzD-sMe?|rZyB`ZrDW2kvqLT(>lF>W!mao^#~&1bwix%Ojjm#
zlKAtO?qI%rd4+@g9TvHwNbC1mjrx9A`)*9@S=nI>O6FL28W%AbZ2yUM6xd6x7{9$%
zbo8Cy#RO##`NS{<au_@($E@;47I$UA>J-Elg18G1u6CCO&H$2%FI(LT7Y^x73G2lZ
z@}Erd;ZeX$nOj6nHPv+{o<X?rBGyp`z2iU-&Cz&^PL<g_7F03lR5=HNm`@X7h$^6}
zQtxQKY!z)?Wjczxkp5za;T#M{3R^~bZbKNVkE)O6)s)|bD7xr#7%)DH`E7MQoQS|M
z&{p?XBH^Zsz!_{oEDb8Uw608m0<ZiuUO%KPy`PI$KF3Qh&#Wx6qzfv-^r>oXLo4Cw
zX!CwZ1zXU1(A`n+M^x~H&lU`S^l*X{d~v}#LG*$rvcoO!k^!PrSXpI0FIt&vOXKo+
zmHt<3R=lRt<o={2c#6WXR{8PRFRc9#5=y-X1P1}K|6ZXtU0Y~kj9vkYyv%`-g@jKE
zgVdy12-;o}`i%Q1<b$`54`s_yMW|1+*j%`nPNUe{*xYRPKrZ%7R`;2Yx{s~4IJ*;O
z=I^V*@C<ok?yge*B^QJ}Fhmk;9_pj@AZUdsb~@^9kG&(edXq-);H^H7yxxP=bvqyf
zh)OHqs?N+zVF&-VxL#-22;yA_Icr#qa~0?jmHF813GAk@sywCobn9_(JPUc;Rr!sh
zfJ~cZyyhcHK~3y~Zq{%hO|D5-5gP2{eVuvF0WHAY>Q5T|gEZ%yqoXs7YIz17x2zOy
z5G!fiR1Di+h+DyM+-CgOaa;C<xP1%7fmFkAD*(+vE8e2i_sWOy)I$XQ`8`VKDf`R5
zTx=MoUcG>Nb?0c*27OcKmuwbtK<S8G8a4eGMt%e;6-9izo4Oa?Qb-_lWop#9Me&c(
zZo~TWF=X@wC8zrG;XT|r(9JH#-glUf;PH`ldNTGdq*^Y{9I{L%kyciuOA6#>kk{KF
z((fY-X~&)V3>GcwDCm+;*PyU_EyEspn2HBSt+yD&Y<5I`H|s>gInb2}_B6!b$5<?D
z=Cs(k`HN9C>td%vK4(0Z!1*u?Z{~%vO4E$u4He>b71B(Qt{9}#6*g#fnUJp7W6nBN
z4T7gD^E&#(IEU^HId59HF#a`^&v9}NoJb6#*$*lF^II!TGuCnOSRwh6VY|3vyxnrC
z-NqrQ>x|;_kXVH@gJ|}kBhwUJExJ2;H+F;bzK#7^=~wFJ_Q)+rn(7sjsvgTG=yV75
z_8PG-`hX2RHU3L5nXHXVQ>_=DUx4hmA*xNw;7X`(SuBx3w43I^i{e{O?{>M}f^kp&
zXk5$sWwh2t@hw?%oxFbe)HTpq1P~Ox%#f%Aefyq96`fQ*AJwI6i`EA(8r7-6Dh2z?
zHh&S)P%&96l=8||noo#fX8R*E^9gR>l7`=*fqa0ocnQvRaD}qKM?ms=VM4>7qfe0n
z9Iafb7!}`w==XckuO5#29tl)+8At?#Cq#X#upmPHKOiYcE%2U&ut^QsrwQ5h0Mjcm
z9`Nx?sGg4dD~K3DwlwZAg}Lqr3%O!?2eY)$o(HmMA?Vyk*2L)3u>$&Z<3s6~#7%mh
zk5Qh(wH*8I*VBrQd!XSRe4?_{0ah^od+Dmi9|KY=<fiu=QpmphKw_GnS?;x&rE`i_
zm?$&W?M(9Ah_`V3gTelCx$kix$@_-fZq|9c71gH9$J=+Gl)jwK{8b2v&#is5%<N7g
z^Ft>R;lJ@_<2jiV_v%<Z`Navdh7t}?!VPl!m{=l9e(ao~7N+F@t6a`Pg1K@TAF@_4
zt`)t8Hqtw+eE$@C<P^2`7q+>!dRdnNoy5Q!-KhQw@?xmb=jj=4r$$$(r&S6oSoOJz
z70M%=>!6nQFyC^sZ&?ZW?a7HSA`<K>67g!C(HIylFvMt!0#M+WcNu6XWWHt5a^g0V
zS~|So6t}fe!471i3mQ->v!S-7sn>*-X$YVo*yA`4fg6auWDWWU6@(>WCI*!HVr6})
zIu;Xy1jsdSEc2^?`$T0G4rtt1-RrTyc>^Up{!1t<U{dCT2Zua0(@!wV=0uU+KJQWF
zaM1<Gv{w1~Yz>}15CIE4gF5c)wYNeG$NX_$>>GVxdU#f<Puq8Qn-8TN5vRdmQ1DRb
zi4V+2fdk4Wu*6)w{I3j^kI;8hYOQ^@{~YgLu6FYwD9=EM9YW_ip~8>yo;ilDHmskS
z4*{iLBF($hQ__7b{q9gIJvcsXOjqV4AR6BR4RU9`h);~LhWNAe=}AifvftzD5M<wt
zRY-QlSJ9O@0btBm0WneHPBs?kSicCE5gnIEMiz>DeMQ4rRGoEmLK{OK;F0Xggm6Y1
zEMmUE=d?jR<u<Yn7G2W@fsvwx+Tg!W`@l7{{|ls}UhaR3_Q+;P#(gpEuTqtKCGnf7
ztZFOk25BJ=iMo~LoWPg>O%Zqw2%NHX9vVXJ8cT;0m@=xY;Oq&y7=7iuv3)b0-d?l!
ze2K4oHR(m<tcm{zx>Hx?M3f;n^<vQc7~eR22#~C@+}*wUc4s$iX|9<TmH7Ksk1_jZ
z!1d(x_9ZfKBVO~s6-rSK=x$yW+uL{uCGq!CxEZfba%{m9cA8!)J*-;YXw|%`NAvf!
zjh1?KZJC^HiCi6zFyY}>H~KsP)BL?{MqLiX={zENy%nhbPeS^tkyXqw|9eIjua>ba
z+vv-~kuBg@C*+9g^q!a3JFu*3buK2;_hFe&B13gx71wYrkR2l!s2E7dI;81^q~gIm
zeAfXAkTKlyE``7}*1vPjF}E*Q90fA3f*?ygsB3$Z31uKJuBGh6210*2bs4c~1cRr!
z8}SY2(3<Z0JaI1aS~MiyStdLN_NR`+UXK5kjApN@z}El-%itIrR7_;|z{$WRA<i&*
z0Wdla*8_(xFD=M7B(RO|EPQudO8V8$lcn<d83sKQ$symL+jI+<1B7wUb%=TN+GJJ7
z@%0zt*se_YR1D$4_`QS==Hk33o%1aWr^+mK80TA!OS6sj@CaEU4Nu}w(lg==-5)cI
z`g5@g3)KIYKXMC3nO}rFprw&RCF_-D!q^0pBxJex&XnWwdmi&KbEs6QnTfH;g8VX}
zB3q=fa?@D@op*B<%SutRv+<okaPy-fk0DayG2|`s7@oy7zSd)S2G?C*_88v4_1I#M
zLB-`;;xVkm^(|Zz>O6)<TnBNndaMju<}rjH^%%0g>M{6n3Clf(*Ks}an8&aN*Q^yD
z!ya5QTob<L!D>F7D1t+N;bS7l;jM6Q!L+-HdEogHt=!>u46965=jpCDc|{&pXAJoa
zQ}Z%7_$Vpnz?lX|(>S)IAiKl|4~BgIXwjzoi#qTwO(VnM%YQ(P#exE?vs#E(jOE0H
zmhj&aZ?X9f^)ak&L&2ld4V8$&_l2pSTz7KyMCa*%`Hw+zjr|*G>$+3yI!tubIFFdS
zgH`Hg1S{)jqB**Jv;iK*N}>gRO$)M|qI*WO`#n|@kX%q;RVwo3M~eWXdr+}%y#(_x
ztLFx5<N-@#G3ID&8?znqfN6@>^1cyh+jqay(uFQ$aQ{&<&rR5|INO31v{_-xmz~Gh
zA&(o2pc*=sE>_0TG>(3}F0HfpcO+ro&TG}|ksskz{<g&c7T8c~ZOjT^jz<v`zF|>G
zmN-|*V)IK`H(5+yD|W_Q2bKAya?;u`apU~r*b~K8d46fKt$eI?E>HXcmWW!TYXtdb
zERdN4{LoH~76fQ6^$vXAI?rM>8|PW&`z>r9X0xzZg%f%jYs?O+PtamPoHR1esx)TT
zc4g663UZnC2CL&9Wsq&MPPXgh;<3_bd2OkImb-c|OUH>uv(1=phSwO=iS~#cG-nb#
z#CCoFAgj-F|Ir>9pz8bb$*=q&Ug09PNB)eLVgBKxWXNLZ?SgB0Fn$P;N>j4r+q2OB
z9=ht5O*@jI5djh#;^5rS{lSTY=*;19wLDAgRhDq_ocbhb)AJTYpCN++1-wE}_x^@E
zqtDDNq_;JN&JL{CNSdM%u7JYcVDkdkh6UKXm8>awZSYF0TFgmfhtq3k)u`i9Aj%=C
zuAil>%DYNVTAIDGV0%l?W>hV`F5A0=c~`RPwIr``wwL0~hRc>oB9@)hz`yk;N7y>1
zqc+-9`pM5-8hD}lXi3wm)!7hfu$?NR<=)a2nqjWnzp9~!jSkxvDVTfn8dj97^Oj1Z
zD)5RWR*k(FAmLUb=lg98EZ*tO^>lhC8?nRcdK~Sn80Ab08^<4Aq_-O4H$s)+vmMB(
zx>U+6lP}p<e^OFyYcwm>Ha1{?d5OQ&tT`{++nxgaT+A1)PPopvFRve6QYVNKN|jc*
z+QTLkF|~FDD<7M;!dyPKbS{j+u{QvGY6H#`%m&NUty+C6rvIY0Z>=bqEauu@o{YTf
z@>VFNi|j9tiZ1Zyt<a3FGxOa|s~T`Bh2T6a&V4}4ll@5zTW8j8h8^Km_uv6b1t*e)
zp>Vun!fjs?X1Q}fY3kcoj97Y8ySz!78BUCadmE}QKDkziSvh}?#xP&al{&deFe-KM
zd!LOys3}<ARecW2HlRF6j+RTiz&;IDaDSZqtjwRS_^lheZ}U6a{F5=>*k2xRe;G4w
z$)?dDvSEc%eSPBQ_1E*5QP3vL2RCMqZ>!FQ2X6(ljZb6(Y8hF-{_C-1soUvyK(lB5
za|&e)J;ZS$VXn)L+J1a%bv9<=|75}xQ&YBq)#WOarG)Evv_j(vED6)G4_c2&m*9vS
z75%a{{cZC*7=zBpUaKj(z+3uja#^e}0=ZGB+6qh%PIh~tn{=V^z^e9_Q5E8-xu`X(
zw&D1ur*4MyfFd;gFs7Z|bi!f|0{EmlSO8{BZ?yEgbPf#`N;$jB%&`;iA;-oU;9%lP
z_$9r)_Lp;=Ct8oMpD<U$IpXk#^rFqp#{t*yE=b6Zo_G(_ouF@tSCGcGGz}7U?efn!
zQYTrRg&oBikt{Rzo(ZSDvCNHrTiXJYk!4~kusb#Y=2~Ea0&zC}&#>xvD-dU+C3K1=
z9wc<diM$r5f{0#elOKbAbbp%{t>s`aW|%)$vHfeBlAMeuI2p&F^`{>;A7XD4A+h@G
zKcTPCeBe2g5l12)Rlo(zzeL|(;3410Z<ihH*h7b;cZ93;**L(y()>MeUpF(7Ftyr$
zQC?sRsMFzDsii3^s~Ur|sJ7#Et&rB^YK63XSSwtFg_~O8Bm7QB?rVkobg)7?4_+(e
zTNexI;CQW&j+564i}{_7ZPW^B5h(KEciL8~71FV*S|OcTs}<6cP_2-T#nTGum_)5`
zmtG>jFX8uP{Jxyu1%6-2@2mKo)){Msv?Eq4<U1z|`JT!`+F+>_w(<KWey5$8S|M#C
z)e32gomNN-dbL7YOso~swkTlB@3aR-E2Ks1S|P2JM?U->;rC{Kr(?8GF2B<mQd;3E
zeqYJ&0>3ZkcRFfGE2OiRKuLb5E!bLNfZrGJJ1x)$CHb8;LW7e0PTRCWZH^%=mjw*J
zd-%PS-;4Qu7QYAhJ)hq#{BGrU2fyd>doI6c^SgoHZTw!q%i6~8+xdMf?yut)Ez=fv
zM0XURBN(E~3os^c1oH&3P7HHeST=HTKjbr(@^2h1?>FK!p(FTfhblc#N{mU39HB9%
z+30=Rl`HF6j9qjcHustb<O`bItGSN2I<cw-wt&&tBIOm*Lp(tbqhxLQ3$kvO4q($L
z26$FBcwdKjPo!P^=)OORw?xj1@52p%pd199MNlS!PA0xzzf{M$><ZF#U|L^)4ASHE
z*P$ZRU{r&b-$4p@j2$y~y05IZ(z;tZzo2D+<Z{C_dCtm$d8pXLnvndyUH*&RjqD_A
z{nEPl9xpuXT~uu;2WOGU@0sNRYr}1y{8TG=wy)7+*vz_qO|f#^(qMy=*xZe&Nh>0>
zf~ZAAJf3X?my26DE&<o{V;eKuvNrmRZS##AeJ14FHs2(7n&mE@`|CrwM<2Kf%b|>N
zr%CQI5e`2ag4(R-CwCeN!!9GmwhhH1j|9p*jq50`Zd~oS_TbuuYbP#N{`7gJ{JZDz
zRPj{t?7_1K&t5!x@$AF156>i?NjwMf9E@5>fyAn2b23E^rctGBxN>pL#04>5zw}_o
zW~%Y<cfIzh5a2k1A|OW^HY(mV7+qH~m}-QAtBo-BZ=d{h5an)`P>Oc(ZBW{SSLBs$
zlL5U=oYW>;fD0f9c=HatcjM~Cwb5sueynZ2S^khy?;}pV{~VSz;g*8A+EyQ$<d1kO
zv<-vYJPZysKn+uE_91zo(JJ;QLm144r9j^0KxhH3M{q5{wH((<Tq3UT-~z4lK<hj_
zbMef@GaJurJRNvC@U-EHbzDzd@x-?Lr!9C|Mz)PkqwUCVC$2rXUZ=d%ZR0b80>j#Z
zf1|d;+5vR~j2<?k?MQH>eq^@5y0JhT__{7T;5wVwa*6k{ap_)`5nob{^EcRle96*q
z*TuJSqK{~E9&5`Y){Psbe)!<HqW}-`9~?rb10luCPkxS!N9%AO5FCWlQf@4uuhS1@
z+iGYD{mbA=SZ>yk&NV^&4GrZE*-?_>qmNkDuSrH>F)9Spe!0u??_3<IZ2lm?ZiINr
zh3%wa=9^3?O*$ffWK4`jt0yp3Z>Bi~3(VK-i=A9HjKX@$xJg=)xM|}=^g~!@bJ`~9
z^$~AP!Tec=DW(~Jvp9hRav(rwQN{n-W?x*dSE_9io{q)!OFI-~V?nIg&GBWKDU2D)
zN#T4J8N3<k7jL_`pJRL-J%RE8Whj>w$|NXy$g-`*M7iQSU4VNm9cm<*KIw=DAq1I5
z%K&LDCFV@|f5)Vcf>a+svtj!c>@yD2lO1%Oq3sSh{8*{$!}=2UC(=~)!z$R66YJ@$
zwxCj^ej5T5iCAac4b8O%o0Q3l4XH=rSYb^z*ep2rce1)?WGb(o3WtBpx41i)eM9ED
z3GTxUb~%}~ZpsF0%YgQT=b6>x)fPROQiS~9fh<>_U4WqrM=+~<7ec{-5jmD4qDE0Q
zph1V!t7k_>HKd~k1L~!bQ8juL^fxStbRTA4TK6~#*P8pxhSkfVmp$ji9;u$dltVc8
zg%+Wye?akcPJz930kA2l!@=Nl@e)!a6hTubcjFTiZO`56?V+TTt9wK0&Y@Hj5sMW~
zxEtbD+yfz%4MmbMi!8;vL+WfjJMk7wU;__x>^bPf`(b6X%;#7VZfw7my))(QR8|Q)
z4<<$O9iTkr9UOC38mv*zf_h43YkSiexxG~GI)DYOC$v<Y191#9J{BYi8_daY>4bNX
z<liZY4^9m<ou0;Lxti!qKu?6i^+dTmk;oHasSYK|mAh2MXVnwsBFmpqqVCq?>zo^~
z;&$~E=7W1Mob}w&i<+_0ri5~hl`v=d%AeNb8$MkJpvI2?gukcBdM=!$gE1dLwzh9L
z-V&o@dXPqLpQcr2D?T`69OPk0{F?J^NIit3ZRn&waRPS2hSWR2iL`OJ_Ttgn>7Df{
z_O6151Lx7_h|pHyEQGs0jQ?Y6j@>3Se}Ai?<=BmtU%7(6Er}y9EEiihZbQ}_&XXB1
z2iZ~3AFiwn%p+D=u=tMp3&d-PUFh`L4DiQ&RW+<4LSm`yN@X0Y5R^)o!tSxwzm;Jz
zAsbsTh*PI3R!Ldv$4jV<&<^g58J7_`5o?~V##`0?M|guEwBNJJBxTDLt4t`wm>A8h
z$Qjc(XhPI#zs1n}Et^5iVsowXvQ>ZUV6mZoj16}Z{)VMT4U+NYbwFj}NB5YNBCNQZ
zsZOax&!u0NVIl~r{@YyMnVQKni$T4Q^22Fmr$P6UrfhiMnzBvn4&q+0p@aE*f*YqQ
z`0J_lM){Q&k=(d`5^+A3N`<jay`lk);qQSQNI2N{x)F~En1p5WIWUZvv2oh`L|60W
z+oep|pKD5FG+%Z~W(2~dLwDNr5XywrZ;zDmmje5DOYlOA!kRA^!NKg!#^jkHF>7O1
z=~{7Y=^`EktI3eK5pfQB87(Ir(gc7@<2aP1bdhA4PeuHa(Afi;Xs+WIrEL4|!<b>N
z?2lPQt9|cbIbM{Qaxq38ck!-`hnwS%HV;fj_!_eu&zEBd-Tv&x$w1nQQ`sACku2^*
zt8c_77OG=~_;ffx7Vfl4`P^1ClO)6e9f`%PZqWXVx@_~?5T{giwil&u*lCfb>@-Sq
z<Z~u*6bx3N)x2gDYU#wj@6|V}{|s@^@69!K8E!%pJiY!wEn!Cp&MsYKf41G+NsH>d
zwCUZX6jQipzF0Rnq5&Zt68I-09j0hR6i&^hb6hzaV-3d8Df=ZEeVOy%Ocoqq+XPNc
z|2ewS)e(Yr&O2xaIqf&kR-YabDbJy_v_>-xlg<Y?t6v!bI}C_2@}?uhI1KzG_Tfcj
z@Q_5VWC`b1LzOp6^THN&awB9eku{{2ig?v$HAdl7^E&#(*`$Lo;5AywgXx{~2I*d4
zioZ0lsDJ$?;&F}(_7={_qVo{fLJEM~6II7UBs)^u5Y_evsdLt<6+oZ^*lZ?j`kzF0
zkDcfL>@Yh3Y}VX_EH{DAQ^<U{K}RNCK0L<|G3Qki&&8rX!AsW%**R3cLBcvJIK0AB
z)n7&6yrdCSZFEr`o~P=P+iNo93otZ#=)i^)*6V<E9sX}mveIAEjR~o>s4hk!>3W=1
zVD!nIuyuNe)so=T@{gywa?bvp=TTS?#~4ziJcQ1bR*ufiL+G5pdjvY;&=`<A{O>se
ziM&+#Z-d@c{>0BM|1EYJ{*F7sw)&Ec?PKP_&_sKvGf;6F$nB^`{M*!Cn;rnwi_}*B
zSjsvUV>iEQBrx@x2<tM~fHLL@h9o(iJRv1ZW{aQ|XaRp6&Et`i-2DeBUoAx<oSqyC
zrNmozDHm@9cMxzjC6Y~A6rK}Qi#Agoaje1=_{<LP)6kCYBTY*^I6kWMyF99^u_~zk
z^l7wbaz2jSR(}iw38Ia>#+~*^Bb5r^=Qr`tcnk34xzq&J%SZ$<Y-6X@Uc6!vvHOpW
z7I#;}4eGXvk@(Hf@r%<Y{OCILaTIh93L-Z<FJ}xQKsuCkFG|Abg?u|L<~ewq=e%q_
zjpC+KL>*RT;!LO{)*Y++70Li~9*+Yg>=BZDI3yzeYdlM4A2rQ`*X|X(vpM9@!MW2~
zFoeThaHu>xjq@kI2^xtLC>TZ20o5Q<U37`rh`;zye}J+Gw?PCp2KnC^;a?Q_agRlm
zZZ5p(>bf>$UOiYFo>RL*v6W%G^*B!lqn5cGp65x7L!cS7!Crl8J~j1iz$q~m$4;PE
zp8_-TDomi$Fz6Ux^&L7p1q}&bTKiHuj0l}{7j@Dqv|Tt$?SC9eNJNmVvZ}8`vJj@{
zukD&&19%7EPksaNl*v)b#D-8T(8XT`+8|_ckjWIa*N1#3E>(&-L#a*oaaO_~Y|KXL
zHY$yX#$}>f&r1Wzv(#6Rj1?);XA1ssy<YHQz2GH6FBSX@LS35DbRNDyKIehbyQEvx
zR%D|TtN(<D&dYq%Rxg%tEQq1EgI?jHnvfd!n6Jx(q9PAmflz%=Pg=y2jv}fabst%0
zb&oB^zUhW+^)@};aW(!0hWU$(sHN2d2)Oy#+wz~L#r~AZ4EDX{80O9y#e-Gq_rT1x
z82(9zHkdp5Jr<)>pdN&NuP?5V{paCP*99?o(Mb>vG@;U35svBruN7(=fGG{}&j2er
zfb0f3TW12cY2!S2azO^v?Z~b+@e&<roArtzAIN9$KW|x~RA!=v$~dKx7Bu1$XVv0v
z!DYiW8rudiX{W5uSJoF`M*-IMQy!Q@$&P;wq6P<M*#e*;M_!wii$AAAd88~($A2aG
zvg2g{q9fycnYfUnZ!|882RAGInc3BJZAeGz|AR<?#h01=-YrHkYb<r)M8??Ncpyz?
zNz+bgY)R9LgaM(H_;S>H8vDX_LJ^ImaySebN`GKUF<MS@D)d(f4I^iqafjP+x*et4
zn{+!wx9)(t4)P0!geq9i87e4g+Ad8fY1$!;qxGG>T;?mlzKC>*+lQ4{`?)2~`>&KZ
zI$dI}63Q!S+DavEOO-f-mpC(B;?`j$zK@>q**YFW=s&FERtREV#~Dg!Cc~dr`m%}M
zV-3wZiIw}6^^W*PWJMkR84^v@pB=wLw<`TMx)p{B>Q*#1=$$%Woq{1)?@xNK{<nLE
z`qLZWNlf0R1b}!_sj~*vTfxWF&->@uJkpw=TKhb{>GW%ypLYcs{L$E@44P`47JE0-
zY<rga4;a>=l^Ocy7Hp7iCD6$PnhjUTKnB)N#?ED$Em0kC4+r!VG>dsE_Nb1)Y-|cM
zbgB~Ryfi(iK8s$%V5Q<*C5WA%I{R6O2=95=U6ZzON~Jp=^?B-i>;9QKA812o($wlo
zU(}2JFKInZeGApW_>>x6N5-AGCXP-NPl>zsYodl{dElD3VafhI9kr+J0_HfL-#!cH
zLWHyHF&bp;q1muRCjJC3i*>$0G4$WBw><^KYhT!e(H=lk@t?NJY>HFIkBG<!UyrRv
zuH&yzzKM+I30|?8<XApAsRyimWrlShgs;>CVk;nOu&*?kfj!^U3ha{n{<PTpnaq+!
zjfH={6=4%gCgm<9FKZb{BEh;h`35KT-4~#(&pC%7)F5W4HK>j@o61t>(4PS51SV~Z
z*AGWS+|+VK{iMvW=6d!fO*duWY=tV-FTh=0X(KMiaoloeK296lQgu~bgZ3vUvzsQ$
z?T&z&4`7I%mI@sn4TTA)_Iz|ON|I_fq~JAo#~P;1;RWWlEVGfYrFrQLp3$FIpt!mY
zJ?++EX=&8JY_P3qLMjbMa`$J!b;n%lUWIePtxhn$-5i^8a7?T=e!Urgca{##N{3ny
zs;j>}`S3B7)H$RZ)bD=@$`k!kTG~y}e_?CT;JyL#V?;sx1=x-7LEWH+uYv7{a+-pD
znC!U?=mGBTHCTFe9wI)Q{#(Hj^`672H9hE1I2lh>@b^-q|Aq58{+a3%9H8buzZSOc
zxwhN{&U`%=2&&ipgxHMHc?&7qDC*5cH^JtIl+~jOMqX~+wf;$DjB`q{Q+~*UNL!4h
zG4LVUTU!yCxMd?Y7aP+)QPByX<eek^h>yyDA}`_)7$EMI6YwIY9ecW`Q=FL2L_aGu
z<^TLZcSeeOB$D-~U5`T!#~=S)hvQ5*9H*unj<%}~$3$)mjs^n>Cnd(=jfgoZft`mu
zSDYOUN2U!29KjoF;l5r}B6V&^%HKJhVQBsa6E{e9Q2Y2l<d_l8;*X3Qy|%yMtIJrN
z#s4PR#JUDC!*C75<g1U(8ObmgiqcFFZw6l1^2|NgfbSmyPXw>!8T>6YcmPeEVi>eI
zcm{v#a!&mnAAcNQ#5BME@wH5YTu4NwS!Ooalbg^W1oaGTw!t4q9G%|H4ip-2+K;=t
zVKj@?Zea$+QqXZb9gfs$NW{~%hh}&4lcXHh!gF(j`Y22Vt^=kz&0p_K(;zXcq{$}!
z;T7r)s0B=*6x*XuxMS!V_}4ZG{!-MEP{XNtFcutXI#X|>F@+0vVb+~<4Jz$Y2SnQH
z(jn3^UI(f9JdkuIuYL)c=(Yc%OgPAOBQwE9N;+^ylMidCai02wdt{9--@$7<rXx|-
z@3YC`y&<)68+sq?te<w^slN6co$>klegcE@qbUP9VOyv#4+`e!0N-*)dp?!*Hr9cz
zUPszO5ortK8j%D8E$QG^_{%Pmy3hrp_dw|%u70o8Q6NcW0}dY1Mwwx#9giG3Lh2>j
zeGe5m#JB4YH$O7aDv94A`;c03X=t#}|EZqVJ=sL4aSm}Bld@6yX=(#X9^TwnZs(Ox
zc~7AUyN`(P01p@3S+)|dW6c|IJlTKI<hbaw(V{h4^4-+O{)i1!*o5Ov(hA5VXECfF
z+ee+I($?}WIi|%s;gW>uGQ+;<7ZiROn@~+G2@7^myGNBF18!Y!G2Rc`*ZD_d(_mtu
zyDr(V5I#|OAwKy5`T$1DCR*CbE{mfuHPLZVN;)r5a!_F_;sa{<AR%v~@%2%5#ND;V
z#JaIl%lS5p;s9&vOWX>Vm3=S%NkRP%S`>el3CLTqiW;~-1mxiiCiH=<0W0BJ=YntG
z-ilv<-YQqx@>!P?gFomH|6@7?t9BD;-2k<25u7mGvJ-E`Kf#Mw3049RAh+`J)zL7h
zhAV{MpP8bwdOwmud&*V|v2#?n^@fcHbEu>P*jG1X=TQrT6%w74W;vzN1sV6|&^|Vs
zVwKyiSI2D7{5n~+wiN&V_wWnhEc}afC|@dG?!n(}f{1YDs;)C?gs-zx*`AXqh4%kS
zgR#GuH1YmC)d&kxn{_|Pr1rzwGI!86(5AsG3~2sjbcxl}a6CE>Zh`040YCilr<A0V
zHX&K~LBb$>XXbs{tna|1;B(>+&2o*HsW=4n84U&u?R=*emRwGReGX|BQol!qU>y!m
zCw>QuV}~XD9#2S~$DxG3zcrO`5l@)LuA#Lv)6k6lOX!K@dhR9HGxCCAZ%_w7-4yxc
zp1d?6&Vvx&#===pStmqvO)+$HaE1-F(N-6!pQ4W1Jy@BgCaAX3AQ7R@+<^%;EFULg
z0ABhXr-uSmIXwp9;MyQ}38{QiHCuD^Dmh+-B7F@xveLDB5(N#B<KC-jzQfaupu~w8
zDN0oGG#EI6RIT(hCq!?W5Is5}20u%Pf;1t{x-_-neImqJwu^HFtn#`+tnSi8SDyM2
zYNpL{Vday09<S!EG|fSbp6EKx5x!z9ro#F+q8zL1)f$V`J(P^6`VYLx-d+n)uLsHf
zeUwUiOWVB-;Och?a5uU(w!EuP@{jHKFn5s)OZ_Gf*nxoPx-6sm75=$1{Tak(Gy>Be
zqMBIN3^K9Pa9+_8*BTRCqI(b(3PxY0r)v2Fx*420QLJRI>qQ&fDq&?hO_V96GUh9^
zRam9&>@s75r$){G)@Pb&*)5#pHR>5E2TRU?5|SyUMhzQ}(+SV4C8!Z?bxS(oPmqx4
z=k0^LAH9llus=!O%ji4-p0FrU5-S0Fh?2BujdlYlrPks3f1Bq&qC0inoI<P&`RiB>
zD#g4;!w@U`EMiZm6OKYcj+J*1eAL4c!@r;Fl~P{a3Uu^F0%b0(q0&Ym;7jKd1JyVJ
z>6FyQdP^f^J5M=+G`4ig?_8U5J5Nb>q<reLDUTPXD($~EC9#XPo9;-t;Ik>Wrc+L!
zl;vo|!_ICqHbKe6S=w&8V-D}S&!()`Q~odF-UU9Y>RRBQFq33}31^T1K|!M8qm8!F
zfD#8Z7!rc=2u2bj25gIT9BoTs2JlKC>B(RwhpF~;TU%|V*n92U+bfC>Fd;MnwFu$^
zg|@M!b&o@BR0;uN&i7yY%p?JA@4dg@_x(OGbI#e%wfA0o?X}lld##3gu6#mfj>zo7
z@^L$yK7{7SB7kf+r@}>ifYMOQ7!Ke^SjEj_?Tm8UOSsqsLhn4oGOAXO3k`d4@rlz7
zI}4jf&ag*VW1_9=GtE;OYu>T4W5(>3yq1y8<7PMeOW25gu-KvgVnz$AdFX!@FZALg
zs5ryAW^h4c%I%@n$iW3&Gq1(pGNO6Ryk>7npkw6+$<G9?Ty@#Jcy$Ik6Js3^tcd^t
zRyOCJKhNy5BMBx%M)s$0j1(K$zlT{+W$b7*dup+I^rrQJasPJKPopWyuh}!(xc^1E
z%-KkonCxr%DLXY&4K<n`(Jy)76{Z>=o?Q{1WU4G9`hBJ*CzIN+$EFA$X3tpT{=0ce
zh;+eP?bm$MrduVdZ@6*)0?B}y=PkbpCdy<NxH`{CF;%C?GVcFue~R&mizJ1+!*ww`
zQQK{M^>(tqzD&s?_4QKKgCSq-iIdh&G{K`{FLA-5#4XY$HP>j`LYqQawFPZPQxmTh
z72(PJor6I`Q7Lfv--O8SVJw`c{EQD=sono$d3J`!qYs-L+aJ3r7270PxE};3X>3}<
z$8<TFru{m;UYz{xld7{HTymlh<2svm@>P;}j$bRwsYsLu%$`7^lcf!Y3qHR*clx(s
z6V_!<-!jqVTJKZq*{2lQiSeX-Ftm(D%7(&YwvM{1b(wo-a<$p>CFfAoXqq6UsaqYL
z1XE=@W_K%$rr$`j!?#t0FW1BNXMte#c&F!g@X^@kKrZQIS5Tf2awo@It9@o)hOy}$
z;mG?Y8uzad7E3sp(2!f<T&&ajY`r#NQZL<zaTFv_)pA5ULyq*kYNY@K6>kl%VhD?;
zhVQoAB<yhIr$!WamZ2e%vLc<*h)&@(Sz43akwTw!6G5E~=Q?OJH8Fzd6xyuIH2bpF
zPgIN9^$cc<-?>n#MddwlR9XtY<^Cq|x^A>a$aTMy5_i+g#Al^#YK7x{m@W(7Q4ub$
z2wzeWX;YtqxlvES+*|v^Kuf;$BK)Cs(8~Qj6h5(0$}30LTt;8Ih<<Sf$l94W#CV?B
zBiW&h#3%x55;^?#<5CG9V#WXdYj~jqRK*jU1sPU5TaHZ=B|#rpK1RO`r!^bA);EQa
zC$p??3R$Kv)qD;@(0v||RhUQf`!55Ca9;LN<BJXzwAX}3Rls=e5aO5|VeJs|N=Z8&
z;c4!8oL|;LztPku-}UH6=RAU7D3WF6JjC;vyR(tAx+`<5P(trojv2A#H}Li+-Vl#3
z{3}l{PsP)-+(PJGb`)zdH9X&AuZbY$$zM<|SK>(YuDu_217(^fk(a;)Pj`7-t_`Eq
z6Mv%vc41|Id?$LVfHxBVcVh0IprM^E;fzTQqrmsA_;<GsRw3r;lHIB<9)sr<5YG#&
zNFJ*6=5?;sW2})>)#7d*V$-_rQhNjmHvC1*q?_1e;MNiT?O&z$IG4iX)b6)zdrx~y
zHZqsLpcK#c%M7@}ZwbZ5+{}y{re=gs(FSA3Zu8_a<NmLKl19@!LE)2^8cheKH792n
zO+U~t6_}JbITw!sCqHL2H4_BBFHny$@AP5T1T&DaIxjve11s7_lTg%_vDS#@k#?3n
z-0EpTwWrx@XU(#Q3phq}6=;x{%a66QB0RPtd|pL(SViO)kKd4(M%KqapP0fUwJm!5
zONmSQl9ZVh;i1Wm>F|n#L3nW2(}+FQ4hWJ!63H|>Gn2W&Rvr3SIy4KdRW^-}uSguC
zf$mescV-w(LJ2fHO=3QY&M}(m2%2_jxQy1Z!c?lx?Vs4drzvD`15v*>1~oA9--%ob
znw1!lY9j5MSP>opvHmSJJw79`kOCh6Tta#~-JE5K627c9Qw5EtiM*N$TM-(8S*4ml
z7pULG5*TfexwRAWZ{UwSx>Aa)O$?DD?@62{9jI@v^>UMQJhN<DYL;!2S;mrXL|f#A
z)^2R%#n_QeV=L9~Q(eWu)!?CgnIxaoQhRtp=726nmZo%v{re{uBN#Kdn6oe<@>KG3
zGQi%7urKjrjy=+yQkDEnf4Cfnq{HVX$MlD<927pA$pCRdDbU)Bywt0HhnWk9|MjvP
zPt=nZiuxM7QCb+qCYF>?l{i;RP!cTbR_`-&2*wvkf!f7xXs|@LassX1l{>ZWsPJ4W
zrBzf(=OYCaHNgV)jkB^$_{1!-7DCSa&3WPr=^Z)<Z5yf_iu~4U&|4q4`TAb`Cv8L?
zhwd?&<@ZdxI6MPDK~8wWPd%H$&ht4pES}rDdJL<<RQQ{g5nMQJ9%h$$#r|Y>i<~bu
zXYh%Y$=>8=t%bRP1K~C0MXe3jT@)EoQeKIT4e^Q~^rs~&KG&<hgP9(u-)<-`uIpXX
z$PZd?W!~nz0(NAb(*E1H+-rVr#Yf31F?d(j-JFNwUnF0WpQkomCenus0X%t$<o#o6
z=#sCiuM#!5OFugA6S@@T_>{O5Ii^VP21zJp$aLM6my#!lJJd6xFFY%n0?vpZl8#4=
zvO>ftiKTEShcE+=l&s!Mha*90M@+YyosuI#(cr3E96-6Yc8_zW{h>}7e!Zx5>iN#=
zi>d+<6grL+kfZL?1>{L5yntw9>O>SdR`nMe>JwK-LD6hgH?~S2_>x-~3Y=W4V&>7A
zLYSeHBJ#LKfYnD|hp^k7k|cymQpZ<fN|RzzJp+4;VETBVk2C*Xwl<vk>$5>l-(%<M
zKIhDTQm}!Nsg)wsySi(9v1~ajqMg}l7x^qU@cqIY=di<v2=S*x4IalSPMIP?oU5l#
z_;9tpP1Yq+SSFc1ljuZd>xgr2pk8$&yB-?K$%WN@*4agMOwb#>z%(YDd5RZm)j3mu
zNu1z;G(#r7BP&ho0e|e!<Ci;i`};HJ>CA(0?8<gYkjAli*?0!#Of)jiN^xfWGj^R_
z!5KJs;aSnht^s-@O{z`H$>dmH0)KX9pr1h9!ia8vdaR|3QxV@eBf>oDm!3!O_uSWo
ztaY2)e&G@Y$1xiFL^Duoxns7#>r0+vHS8uDf+3eEFP7*Abon55b9-d6r_V4P&A15X
zYiN4*pb08B<aBa`&$`6*40C^D2B7%%YiB?)O1t~gjP{=@91#3xfPjj|zXIT#GXNlQ
zy87rRS3mlbs@L567ye20L;f$-5BVRe|Myovq4oI4@~R`VKDqUt|4a3r|DpP^XIAf^
zKm+3~5PUub!C5FE(f<mDvrs^ir=j>KDDaH~pU?@YUwYLa%Rjjjy#ES-vrzy+w1a{F
z1O?9dr0SU@UUmCFsowv8sUDq!e_8#vUOA)n&KP8;rr{sTK5-gK^uL1PtTB+}X(;~5
z8035s6g4R*7JV`l68(RGLX!UvP~3-!>W`76u_-8CnfZx*A<_Q_C?xs+07b@`P&gzh
zUl3w`3WT#sQvSaJ;B0)%Pgj2iJ~q~SWvXy)dN8#LLCG)?mHJ50@?tqrlYNbs>n=;f
zkQa7&{Ykv)D-!?DqV+Pd9+vl?m0&zs2J8PDNg-u446Y)5#%<Y%`7q};R_-EHS$4~~
z7I@Zq%_B=@pdkDH;w34)fr0d#h%bQutl@b1)aoxIV~Kl)aeKeFI_Z{sZxJqd1Wv5E
zFm;Ess@h)YH+P{IyncxF2e)Vnu1<<z1_L;FvIzV!d=V#d6OoF(tn(v_%*|*XpD_<<
zBmi&`T$18#;?$Z)mn>dt{Uxo)kOD~a`HtChZE*r!L=<>0r8O6+ci_y0eRTe%j-S6g
zQqV4!Z8Sx}LHVQhYRr=4x=;yx@{=-5cQVMvn;d4}kd?>g8NWW^{*XfmMpzEDIGV!m
zq#Wg)D8XRGn$g@0sH~~N4&Uz_jw`VmG~KU^Uw69OIiakw7v?&BLgW0_%T~Jzld$@%
zaJ*}(+a$cEKfPbl@3lJBOv2@UY~b|j@$NcN)Ezyj*uMo%uNkNNQ{w7+*7ycR9>t*t
zqu{GyXdEy${4MZ@HCIW|9pQ@@ioMuE?>3%fAQlccp7b~8W?)`vcr%rEmtacvZCK9x
ztkX%;O+kID#yjPW9w;yTw?N;@^K|{hA>s{muQmonV*mmB={;DI?kjk)peJy0T|uB@
z)o4z<VomY2tn9HT;$mW6>}>|#T2*Y(zx94PI`JKvO^8nVkdyS=14%npjo>s%lA<;o
zA}Oz&OqeQzlMbV~SVF!Xl?tpTZTeoU8*s7aEvq{bAQHdB56F(;sVZ2cIxmPcf{CiW
z0s*N_yu=U+b{!WLw#<DJ^b|oUZGR*BEk3kDtSKt%Eqsaoe<>^<+q^0@9a_V=dY9M%
z`5|Z%aP;zLS7QohqQjjbgUn=`lAKbl=2hy{N097ZYL)g@AWt7+bqJSzME$f~9HIS<
zk|~bdqcj!EE3Q8hso)4ctLS)nEaG!C>v;it2I=C9)=_6T|LigsN|`pgBOMgW^hj&u
zAz4Ji*5!&^IY?bz3aw%hOcnbmGB>LS))LL}IxmgBY6if!TlGgU`4VNngs*L_OMf}e
zCaZ};2{rl(-L1;mQWV#BMeZKB&hY*?X?Rw0spK`ut1fU7g@cY#ee$asl8*xrwIkKV
zj?(_*Y87!R3L}{9TK&6fb%%Vb*C;)$o3F;)%vMY7Bq*^Clpy~Y^#or7z%1j7yA^Ds
zUJ2y|9~abkXaNbZa8lMqPh$3?Ju<1d&KI7j{!JG>28f;Aq!`_F1iU?jA)KxA84t7Z
z48JCuOFvQp*@lKYCHGsg$l+?W`XD$3l8b&uWOcRr56*=CzfjpcPwi#TI(X-Mt53rU
z?iJS^2~V@?yX?8X@KyFa&)Q+u2)qo<h>b{Q)2UC%;FKLi%ONr>Q16Wxg08;i>{+q;
zu4%&}dzvSv5r-1>e)hjW<aSG%H%ywBI$M&HQOLEQ874;%-zRa6dD^ow62BKmzj{@n
zlUw}Q=``Cs9Btiv?SkIO+?L9Zc%OFdf{!BCv{d%-e#x~9`XU#!RNB1zuU%kAhMSx!
z7T5Q#+?l-Ic(MeeMYHW>Id6Tu^(CkA_7QI%C9mQQQ)IJyx!}nfgPDD!#ZM`@I1~4m
zV78+dxyH()qO-rJ9edTrlS2#Ik{{^xrsjF&24Z{kFF<`5348Qoyfk)7Xrq1myDrxn
zQB3*6($rF}svs!BaQqwCV^4VrwN7<vO6nGkE!KZh34@0bY&xZpe{}FAK2ezzV-`Xj
zq^f;`*n{1mEk5t5|8Y{h6!NN{UdIS=sZITAy1Zy;t8ouJ+~SU9cnEcMcmfgc%I@@z
zUsRWn1Q;*~erp6v@eq5zPUBm7G@XXsBG*>}dl3qJ8wA%vhSX}BKTKmzXw0Hy&gR4D
zmm*nsE0!^E^JP%pMQ7zbg3N;%;^aN}33>5?h>of&JT53t^|@^{iB=5LEta5K^*t~$
zxEtFM!N>VgpOOv{X6J_B!n@Gr8bkE9$B4mS@h>Dn60&1XZ<b<f!{-I%MGZ}r>w{0=
z;ur4I2`y@ct;-AUlR5v`Txhvh&6O?{%q==pT0B7ku+j8eFgG^g2=6Ur{vUVo<UGP<
zL?0&Hp0ZAgA32$9R!^+{ASRR6+Edm_U~iEGb~Ep}L4nSm`JRXOz=@SL>L5|YSuCL^
zR^Esn(<^*hJ!&V9Se7{O(}g~#LsNzQnh$VD7J$s+vaaw5DYO0{G)mWC)gMg$D0rCW
zZ+l7lKs4KHgGc1MOTOQb@ASN#2;lm5;AJu0MB4p@0I&-7Hj$9F>+6DEB5st3cC~ko
zOmVqiDvXvSY?of{M`}W~0N|JD&`^dXR1Z7f?R*lTzMlGoBUP_nC1ki--2(NfRwLWw
z_xddPJ>Dw6w{kL3trk5kzYj6S)ha58uzqWaOI<=<bJwITGRtu5pzn!KKgP&pL^9P2
z^PP$KK11r<Vf(clq$8BsHuqLejfyil{=_E#=4m_{L5vbtCA+1_#ZSwHrsc)Wc@jO=
z+!p3JV)Y1o+cqm+@odXwRxt~<DA+AH6Xueh=<)Z)%j8zUHs)ujZz-I>8TCv(yPiwW
zsApWd9&U~lKc1=w<;bL4E(jbdty1?+We9}14~<tN1^Lx`&=novSHeQos!u%u=G677
zFMUoTuoHHk`XVQBwf5*I0BXw$K}Tbk%eCbweWY$|Po?sz8Inr<h7Q-+hN?mds8Y8}
zk1@|t{5oGJDI`f#-L7yJwoNh19vW7=01wL2cWTSmVdl!Z<RSom>IKtOA3yX%a*Bn4
zBd;|S$36HU_dQ8NAXs-Obc4vDFGG^$8Oib%KPd!7e4ZS|CP`AJg0y2URdJ)N=Jhlr
zu@+1M8_lC$>Ji=?#su3dbNy|J>||E_2cWoXx$%`O{^t4lsm|wTN#Sy1LpFc&3EEIY
z(1xW1ePwwGKVPooXZ7v;tY1OI7YW<&6~Z>GA#B5j74at<C^P=N{LYSS(fn$!Y!@^b
z<2joG3<klfLxWT9$(MPHUcjfz+lD;2E?;!20Cj#t9@hThZ$xf{MX>goZ*RaJZs7g!
zsDk%}PrQ@?WnPgR**vs*4NE9CtK0{~9nMkr!2+)Ac3W8et!Lk)K73SGwW`3&ktrxG
zw_#NGNV+GE5I5KBCV<>HGAi>IlpU$Od4ZbKUqkZTbYegLNfJXaD+j!8U8peG!jd18
zCWd^$yw}0_uZe&S>bTsvtPLqJ)5VqKit$kk0rPaG6@+^_`zw41Filb;D0fu*2lj|+
zqKMRtJ(^e4D!WP;cR2K_hZb48LF{~2<--qQZ7@7>!NWzZ#*ZboPH8_w-P@!_f;3CN
z_(WMRpPujtbsJ5R#gi)K3LdMudXS(kVs8gX^ay!C6pbSIya5OP-kS8L_OA~xzJe9A
z{PL48KZWum7%)pPV3uIOtQG08-)B)$df@$1Y?=4W@rBQvCf0!Vn}6CMeh*#<pHuJx
z$31dt%BD~Tci}NKX3E@*3icFw<k*7C|HnT3nT+RWPW;jAq~LA|1`oO=nBgXu-@UtF
z-_0S{0=2$>7*pVAGT3<ZG8mLCE)SPXa(dnTj_#4)3CHAjO1Jz@Kg#d&O{4Qjw0u*J
zPd_Fo9hiAUKQ8Xlk1G!Ic<BC2KS``I*A|a{dbW6ZVwrJEu6#$kAQqjOl_bsJ-)4#2
z;^C_^vj=iB)Z=RH%<L87%xGz4fLQb(SvEJlk5Av|VP5UgyM<0wkSUa*u4;o$$RfRq
zz~C{>F17M%PL~8O2w{dAA!&kAHdofLHwFEDjwC7BHl4U-d{!w^qd}cApod`oMCx}{
zh33R{^&vE~|MO`!+ZwJ|^fG8sJX**vGcgvuoR?U%OMc^Gs5SPTgYx_EtMa>5ER4jq
z%azXMo4(VdAMvC5@$hc_i0;ylpS0@7FQ4P_(EZVF9#)wrKG)N!Ym%;uMHQj3_%Vr_
z-5ZM^;iXdpHCB3211r54iyrCkwGb+bPFKY>;Pixa7VCpZNxT^L{uBGN+MtwhMqg<i
zgT?9#&xn$N?x$*diu9Vgp+K*oR=3*zX(8FVFU7h;dn&;NBuH_db%_Td#X5T`(j$?~
zMt7avMeWO^_PWF>Ql-^(_iEJ5bt<h(JkO^tKs`Sko`8##X+>o9#MuEq9S8_r9-Jyf
zNp{I{_P0A$$GtclK_A8ubgZt6o3QKQnq<4B){>1CCk_Qv_3*Qz!jUrBA`1^JYP{@l
zrRs)V9TfF^I_hAh8gXW>N1Z5DxLXQ-DK_CHI?jCAj!o}^Cy7memET}5sH-k%rA%Sc
zc5%OF-PH5LYd7yBEdX4AGIN9U4!vbG&1PWJF)X|H(JQspsuk|2q*C1jPs2Dk866F)
z>T0!x$l8)hdy0gs-^|l2qA0R>D9hQR_JSw0F7biPy;Qw9oI6YDu?Z3o%;(1*y$_rb
zxy4QrauyxSkp^v+xVu`Xu@7EeJYhK>C?JjwOW-Th+z>7aenx`N-MpIzjT*^XUy!Mj
zNWO!~EN4LCTokPeUC-KX7uEzPkr-LTOV;$4s8`?7Hj3-^MTW`IxvP26^+}HA<&6t4
z{rOgSLUwR%DyPolmpo`mbYXx*GC^7OYaV{UWuAyAMP{EJIjp{~p9j?zJ#xM@GyHjy
z71zCLME}N1$Xy*Ok*)DH>QmdLH$}HJg(ts(527crpVn~Q6%lV|*>0(!9LqVPFmY$A
ze}rJdk(R7!1!3>B!gZsk6>k_>p8R{!AuF;ATyzzZti9p7Ya>(1R4tk4*$kBOGfA0U
zPR7Fee@J{D@mEXy*^$L{yTzc!5o1RdmMrP)i!{LY8jt!n(mUYhIs@-^z{N4fEKf74
zLr2t?y#QFqK3y%+Z|Y>pz*4O3g0Qd2K#f}@YTXtZj3;T}#VjWc_heR>yL(Gmiea-l
zL(4?d6d~cn_<f>>_29D)&=nFA&apbM3TZvw$|X}aq|V1CKDf9YzpsE~55||;&+GJd
zXxY;8P__u?+8;cDA0rU}7VNX$iqEni#2A;Gi;zRCH|~5zlmguy?)G@okc%I(ZK)jL
z>s_tc1v}j+TrAAnkQEPSolFjKcO&E#?Hb?~?;~dbJK<x%f;c{_VV8i4$_B3w@EYh|
zKhu0KJ9+)!hM!T;c^@lis5N=3ZgDm*(pq<9{9Svdx##BV-${4w5vhTD?q!?+WJGdf
zQw|D^$T{3kDUx@I?nZ3N5go4hRX>EC5-Qq%RpF|W8vhWh-q|X}Wn@aad(LUpPuFdi
zWZF5BKRIrjd=%^8b-qvOr=6*b*2HPBa-Of6ii?hOrL0$d=y7Vyac&>)?9ugM<3P)A
z7BL7`jo9KU4U87*hM0e}&^n_jkEr4)LNAOawo{xVXLiWPQ#q|XxD=kbEA`wd&*jBa
zw(*RNCgM3>swKq^iMhEdiAQSZy}J75YTkvoRH+)~EFUZRpwzp0u=|s2D<m7wFUymH
zm+_2@B_PO)E;uAH_L|(P<OqWG7e*o0<VxW}(6|?+N#vyDE#|4aLhePOA#9Y7v0kvF
z>Zu<U@+`7mBmnX+ie8M0BOF<9b5#{d)pO)V{;c~9)g`G3UD8_hs4lg_%8{|&EWIDt
zZPkpg9~0QW?!v&n4d(~;uRlMqul`)Ly)hUO*thO@VE={>0{hl`1N-Yma|0W3UMPfn
zmPdZGoly_$kK`2X31kZH7!S84hs%c`g7FZ$)8rE&Z*Y+;iU+63-n4kitI{E#4rQrT
zmovHyb1G=K+RpgenG&BSg>1fE>IfOzNxz_g^hlY4Yo)jtp#*+L3Xu(f+Cc6z^8F%}
zZ=93Q7yO>&Tj1n7E`gE{c2+eqm=MZzZkAjvMZ7Cjz(HX-(mRBdpL^L%BKAIC^?>+T
zebZXDVw*+lhKbd;;X{Z>8+|+UYZ()5^sO`eqV_U^I1|HZ5U>qn)?wGJggb((d`k4n
zDK1u+d`?Wh4cqXy#*;5!GUHoo{!&#FY$$p=gI(*FnHJolZ!3>CYWkHTcJX_lUzqU5
zLNdCzonl6e)#+PsIRyu~Db!EE;xpZUXLAsr@eIbwZmv`tTJdb!dESAL>)D0{8LldV
z?k0%soV#ZvenTN!8|Gqs%w9E%Vj4RI3UlExKxlj$Xd6&Wx+inCxu<tVBnLu_A~u9r
z4v#Z6DSld$RtcNoJ}vo@SIKT8l{uYr*uTulbvDsu7a4d+R_S9HH>gp|rLS;bIR3$4
z!>{^m;C=$$B?WY^>lq=Qk<4d=oT7^^>TEZ7>T|4vGm6KztUIL}I~)5L1)i1=7RlJ)
z`l{>|9=lNGNWs~NfomT;akA)8RZvz^YOTT2n(CHurB?5Q!S45Msr5Q)t<u$orb#OG
zJCa}xgGo}*6I+rWyKb-@scKcqlpSP-O_u+Un_;7=BL3_^{P`W4K3M#D!9O$|6cOey
zE9V$fO>86g%S{I|-gZ_-g+^~m_DRN`f1dH8voikrjEvnM%jgq>h^+qCa$|k<wY&^z
z&J#Vcz-h4ool5{Glo{cGdVxV4WFxW0DHn4|3&|PoP(M2}{+j;ytK*ZS4gY{KyINh3
zLPbe!ESob7v5TKPH&EtZof*1tQPOW;ozgj*I#ZYr9}5dIHtC`EZPMKKZ327yHYv%O
z&~!8O%JaKsLc*gklzzp^_v00RGf$3OGa{6;i0zu^cbkZ-YtNhsb;8_zfNRMYwdt#g
z>e+lP_R8AUeVhUbYgdn@gN`{tzSKrWaWhn0hb)MB)z^510awrQj1{H_PJPMAni=v@
zulkXbUWPWcX>_FKf$qpTICbET;kXa`hjX~nR}c`^4j_V>a7KBb{~ycSqb=iT(fDvx
zB+1j|)l^p%*<7#B9o|}>I}2;4{u2jJyk#DA#R!Y>N!<8!T;4$3c;fPgx1w!6XA%Zn
zC!xiU=i!6A`FS2l&fr~QZkdEx*Gc~U$^CEce|P`E;fEr}i0?kJY|?ndRx>B%o%pMJ
z|H=^o(yj5X%od*yt25?td$wbKB>Ti$Ck~o#xv=iJ)32>Lzw}ZS_oAi1G)TSyko<sz
z%~%1eew0)^5S2$1EsUH8Od1{y?aWC&V8K-V{CnmlF$t|BohJLv0(dt7=Y4~p+!VBa
zpdA6UzSZ6WT7MqB!PCdnKmVRI;7b<+x87~a?I#XK*f}~DMIVAP44N&Ug4~$eqUc91
zrcrur+3?f;wWVFw7H2J~_o+H3J8Q{HR@;L$&o@lmm<?CE@6J~my6)+5zYxzAvq`RP
zLeK-d*G<H%JdeDB-P>HzKV`^!<_&nf>?gi$vFh9hpO-b_1Pn7&71DcWtB_vzZjP-Y
zna`(5?JGAF&+^m{vku-+JpQ}uP8A)xF;)$o{jSdJkXp+Hhm8@-&@?C{q*nOtw&(Sh
zr8<v~rBK*ATZO{9cLTi+&=hrd437$q`ewDd7TKPV(ukqH0(+A_W#taq`kAhX5t^j-
zm#}!p%4fp39=6J7reyQgYKP$WfGx~*ER$yt;k4?Belji^V>BWUpoSo_Acr9GZgIgP
zGeg4mC-xuGh`a|x{!k-wo<`){enb}35JdK+5P6AU!4;3P@`NwshFN&5sdB=;3N5$X
z=3&Ke-*%4v^{`cH-!@X-Ikc#;x`X0!u*l}lCw9+P{-+2vjHl?c*m_TFJ@%A*cq1C#
z7GLlG`Okm;wCe;?t6e@47wmmrGK%7hzhr*oM0}&%lG-6Mv6fsfVe=v<xXh;!v+?M7
z)~o?>6}L*F3N0aA)p+dDud-o&Uh;|1;4~Oj)Y{yXDVD8DxUqh$CHfvoJE9Vh&&83?
z#2@}U0eCwzo^)f3WK2O@NoD-oIT9brzghkIKLpKvr7iB#rq;+o#BQs7@n|nusI8Kk
zC1IsLy?KT$G3ztogo5og{n0gKs!~6AR+fR8sRSU%K!Tu)MOr6XtrJa>UfWbA)f{ij
z2#;u(lQqHLvME!FO^!U?HY7Y+g7PJZf|@sFNp~f^9ZmYhB~9Ittaf^_GkSz_egwot
zdp@P#t?x)kylI5wa_@`Zns1&Sx5n2nX9TtEZ`hfiG|W@u)==#T>e%1#Zho^r$qhez
zjl8^aCxWr1MZa6DW;43ll-o98Wj9_4cl=){Dp)<6wcXTNE4XQ~;chG#TWf+$3U4T1
zy^qH#^qtiYN!%XFQ6J@}8Q(QQ&T|4&v~ks|QC&J0%Q}Z0Ii1niCx{Z}^!*#ZB>!ef
z6q^;abZWAZ^dL#o9JA~}l3!;_PX#}lIG9_8F{lzf;SV5Eu?Yv^?ajWv$oZX_@=8}A
z=Q%<_Q|o%eWhrgo<TSJIqsTdflXQ_JdC2VRji3kDjc8>cGPz6gBAe;a7r{HydfjJS
z^WxNB+sUa>%VgU3a7G4m(uX~+cJ&mai8jE)03+vHt;O34X{^!o4FQe|u&ssDyLnyt
zPNS`$yIk=hWuu+Y@5^{Mp6W!xsdUfbh?S6dnX2TRUgm{N32_>!CuzKNJT@C%-a>`1
z+yIKl?)Ai0`HB}RV`C3hG}OOG@p3yR9{GFAh$ifL@8rXHvYg4XC-EP=4=SdaVsIit
zF?a1L<S;k>UnMd~kt4}ZW2T&WcA4?yb$E?KMW(E)rQvcSy)y$7C@o_aj-B3xJu5G7
zxXu;X&$!uTU1kUBfL$C2A6c2OIsvV-RP0^2^toLqD^}`@m-^$e$&_>Ja_dTL$`#Hi
zDY-H7q4lA91JO?6DW+w^9QOnd7kXD8r|k7MXVR1D@ObI@Ps^pF2CuhdcI2d0>QU#A
zgCb*9UXB%4!Q*I><xr}7g;FISE1n`aVni2FF8cp62bRbrnE7bGc-TDZ54i-rzQx24
zovXE&?><NLD8Z31cid9y<tfcd2S<upnL@e2gEECmQ8hB>cG)U4R;E#`{;>KX_+Tv!
zvJk6lnEP_=qLd52H8P0#&<wTVS`b_;b{b9P1U}tN%b0K0=?{NmUL?B{G%m;}<`laa
z{%EhnM-JPogZ=XhD=We2&J3$mpZyt$V@rZn)^wRu_8Z5`S6~h4U9ug|lzGkds^9a$
z+$x!np1h@=EsEa3$JCai`sv%!%@YelplnZOy??nir__%@$+E))mn4;rnJyH+KBr|)
z-uUL`{F65jk#HhpF4jZu@`OG$H(z#2;{J-V6~o;R_9#sU`T<|foJM3TNviBO(zJjs
zawQ7^cJp~c2$C0z-cEkwX{WhWszh?BHaL4nn*)!ycXY9{>r$uL%eR};8zz-<q;gK^
zBUR1F*LG$~08q)f+2&=uw{Hu|uU?rn$7F4MPNEOhu+jL+be{|9Z_wKKIAH`VDb9=B
zYHbuT5MN{Y8da&DeGIgGQgW$iD`3`I8#%BZl;HaV2`=Q=A1_}|N_pyQ1L13Um5k(<
zj58^@#M-!vuPX%ED^)cKtc@@6{(J*J1)Y_uR0r)#eNEAYweqDt&8xY~AK&pRUsm>X
zKl>Db{hmM-F)Gz<EK<mT-6X56jjzXGmp6;3#tl7}fgv~p&jy6yfPkR>4@`#I;-$UV
z(-tH0>EKQY<`mDK>y30)t8MbBH%RG@oFeEa+qN3}b?ZK9E=-fVQa+^j`acAw{*Tsy
zkNDDlu<muh8fv*y3C(-C?=g&-pZ;#wa8R@~I8%zGq5*IO4DsD&62TZxk%j61H?UB`
z?bKRT*fD3JJdZYvMHOLGP3Y=ctA}aN39))okQIgreVc1YP*iPULp*$04Hu(+AW@RB
zT1^D+xOZC{VTmo2kz<K15^7;}Vv-L{4qvcG2-D9#1ya0r4!F?mtnKA1;0xEYwvSgk
zBzVQ$sRiEumgMeG+sQ$8H6E2fE!m2f-)&77yXxvrDjg)>(lfM;q&7sa7V4kcqOv+l
z$rUT$c0#UOjc@O~!8(N=w0X)7UyCf_^>Bc@p5aT)Q<x%Eb~if0@?T0R%i;<ayA!#o
zHO74VBOFES84{~lfoEcE)ZG?)adqvR1t5G1#B%)Ekgp1FEGJi9njd4JV>v#FZ5EV>
z<?Ln(Sj{p=V>#29(^m6t{qB<YhF|c$rG!_J2<E*(E7x2G@L~+xXo?dF1sa)`>I%nX
z6W6WM3=Ra?(@)2K#e&kWinN%l3{ZF){j*>CCnb79@bCpaPFW1@C^2<0V!AVcFx@O>
z{RLb?0o!uAfB8%-3mFjhW~FpB5#Z2B^a523jWooGy!%wW^Dc@bbqU#WGyWygn4fW@
zPrc@+MHneY>uLUEGU-FRBYL;fh%e3bZYQ}|{T9&F5#&PFth+IqKPyPp6z`V?h?EoP
z$FQ#T1Nm8}gSw^qbOVKzAI#K|*9BhP0VF_sgyLQv?LaPUUb}uzi0TGt>yQvRr_oO7
zF0YQ`78EN&$Yb<{frp`?a4K|N>g?)xm&TU)kvF-NnUZhlgC1}20qTWo#6QCKX-~w5
zrN3Q1b^@ZaDQwcT&qO9WcT%qi8I|$-8VCzv{Bh`yrH(=8W8ZY@X#Uatq)4^}E1t!G
zbF9v%;y@E<Pdq}fD9**F6}C)_V4}3dFuzS$!|BgBW)CVkdt*6I2ILqjGKK`J)-;@6
z8rFWMi8EVElIIgQByu~Z^j9rzIuyoC|K*XJv488W4*5;h0CH?jgVld<a`KP5@g&6?
zJssEtD>0F$&5_ia3<pl7whNW5t%U(1hG{iG9A(k-i&azMHRi(D(?PgQ>+jqL|ESB4
zmzQvHcT8oll7@>l37vj{uv45aZ)~8cQ}Zw<MT$9tQ+(D*ks1|KyE`cjE_5>y>$+6~
z^}*U470y<!oY%zHdOEUQu{;hZ;!FJT(h9o}sdjJ?MPl#s8LD;%7m&F|y$+TNmnIJ6
zu>sU8k-=L?mx^D*WOuNnzpM8CK|^b=T0}-fvwwPo+T|1quAv+LoIAojDBt2G&J!PB
zn68{7DX0Fz{<?3aZYsuyz;o2Pu36j(M`q(#+M3{OdcxdwJb;eEP<wTy`oSYi7OVUg
zDjEpBMK$T*vZLnmTkv*22LVWBY<&fq+VkwlQMH^{DR8<JSae8^?aBN`y3ARrGS3LU
zMHM>1!Pt^pVoT=4mf)qlLbQKV8*f<|2R7a!qZSzvGc7k3T?S%^KgsR4@e+&P&ac|+
zV>x|@O!11#V)0uDidS47UzDHuYr<l2!KGL<$gj{z(OxpQOEGLbel8!lXfT>K^VV=(
zX{4rMeTFNtAb6V$CAVO=N=kKDcxDjpxFDQf0n}x`*P|5Z3+ISY=<MaOSvU*C$*+cq
zr4ol4mIgO5i?XZLy@fDEvbNX8qLmaH=v;MqwY^o~QuYs>AvT(X1tC;mR*C-5?-OeN
zL<o;79=)3fd#dMz0*lf@^e@CZ!IkK)9ck6D3a$ztW;|8uv2>@zGE#|ZQnhY@JklyQ
zM6f9-m{tzAqEgR}Nef|zE4kC)!1AMqrBtCbBa4nZJ#fik-2>=)9WUN0!x0`C%Br&U
ztNPM6b=k#RWrV_GLLPgo42-S6)qE$`fn%VXBUhwAPj_<rAzg)~M^BW>`gcTEeYbx{
z)Od6k9Xx<AI52oq#fQN>M!cN)M1#!j%6PO=9zhv^xW1WES=HFNkBn-gGflu*A-501
zDnQDd$z`vqNF`Rc(E*N*$XZgQL;ph%qcyWK7L|KNs)h!z35u@ZgRXkqDy<Mrn&@qO
z$8p|ewq@P5Co2}cn{On|dY>2fTp7xufMt><I*niUN8gZX<%#QyHw&z|6dsGtkzBfL
zv#l5TA-Zg(mrIX{QJsGBaX-wFh)i`tD=t-$Hdb0;Jf-^}mJ!NI^#<5YtZI8ej}_<Q
z?7>dZLG-ue`iWF4r#jZGN!I*)2SlqAr_%v{_-e~<>qf`CR$PjSeP<@Wn0kp-fN=88
z;efea%E*j;M^dc&ZSq1(=K<clxTn+d<C=;LHJ<)LDm<wyks!*<t8?jSa*7lzv>~`#
zD66P2Z{^U$+?7u;#YL@8+l=D!3pSNWN)BB%to&QBk5<@I^5Hg}0xH$y*EDX4z_WyD
z$`<U49?r--;tSam+bF!4Rty;GG+x~GlyUOwtF|9#rdpxDS6X@??X5Drbf^mcKn6rM
z>$Oft$1<2b5?Ss^JPuklZkLhQ+m$OQ4onfenpS9E)6bTTW{Z<gIrgesR31<B3v)mr
zQ8P@9bY|Pzo=&|PjCroq2;~UI3co#Q27C|j2W9|ORaK+%@<B~Z(-+9^c<d$P74$`>
zd~M<Y9R?uQ%)*L9C-0q6IZENh6?-_$Ti`{bNz7g~6wfiDh4OMwMyV0KM86GLYDC58
zhIKM{J4CWZeV%Q*b&$Eil5SH*K_?S{QjDhe`DzFRj3&iPrzTuvbnTEu5HmwM6;h+C
z)%@RS3}gy&p5>f+7wg#YNLyz!JA93OvWl(WQ>vHGD)sDEszt1Yla9W~P^l)`Na5yo
zp^upx7SvQZlT=T6c8GLQidAyR*B9TAI&<x<lHSt&<jl8@rs-=5Li^)1oyE9kf#?Ld
zPd8i-rJTjDp)a)|IMWf1txTtgWQ60n)oA|=rZfxGg<5X}yCmUT<LfJM&|YL;lcpg<
z9&{*6cwChOfV$YJIO4rPcS14+Kq)&}^K|C=R;gHeIO25xz|{Cm4&nQW<7mih+Q2})
zH?z8C%_L#^!si#+vufb1{~_CkZbs~QWTg7^kpZ?^wktKkgLI?XPZ~%Wtbb%^wOao@
zx*~a?#t{c?b>hS*tRAr2iRG?<PV=Uf^|WjfR2%0QLV>ySGe#|BGSHQgaSX2^5m&21
z*!gO8F_~C{l2<Xstt`%>)s;z-O1ED`kjf;U#D}`|qxU_@^FFknp)5MiSuhiLs`Jy4
zxQ;ZMg{Vuoctzk9lzqj`2xa7esf+oYxq6~1{&QLm<0xtU7JCjL0<`~fuv1lW%pjVA
zN7NSp)SS0M?n8z$oL+gBodL5`q-NMRX*x<zu}OG{#U{O{u;$&(t<hb;D=Lp7z)W?*
z8>&(!9}+TA4t$gdxsf&@DAYkNKc4>g6dDZc)UK9frcicCs%#b=SA5CcNN>MR*)?hp
z-B&AOv&dB`ky+$ZR$!an{N7E9P@dj*nytRdU{4mBiHBNrPpdCUt3-Q*jgTvOg;jr;
zolemqs`|4R2vYl=H}rdQM2)(gifYu?FvB(AMG1zBMY2mxLlQ3;%;hWo?r?83Hhrxs
zl2w<u`UTrgALXK%DqGztM@8cIIs<&c<~#zBm4(NmJ}Hs*>-Ih(yjDXG%}-vsBMgN>
z@GiH$z#i-g|78zwkR&g-j3{=usViGz_Q2jJPVw+_DHp}neV{-}g+)|q|Myjk+QlbT
z9qO<8fqzxCJ-QocalxihQNVJVHd?oPpEzgJ?WVs{aM?OapXr@PVq^oVOn~QNPCD-~
zibVG}-N&-4VR@63=SfN~tL^kU#Y%UMp*tr@WS=Ze+(pZgj<z>TCrJDV`mKi&%^cn7
ziEklSV;BC2%$7-c5a=_z9eK@{cT*7Z6!`GY^4l)k3A1m{!gC5EG07PTYl4h~eIT|`
zhAt>wgyN@sOMk}Jujtsg8>}hq*mx7)rJdzLk&d#fUYZTo=?(j8q{V}G<JXZMw7gCd
zXa#@Vu-pwAcr|A8Zm+&uU3C=5(t=nv=y<GS7vBzej_6?oZ4<8_DpSA6`Jv-U#-1Xb
z!i_KCQ0#rW`{xC7nP+IWAGjz@A;Z@)2)g^6{uZ}qbg7_V2(DfXks&D^-7DQW&tr3=
z7IHcNTZ9%Jr=~@OFLg$)T5X^rU5_{9S2uN%Mq)zV;BGDdU_t`3Y*Kn;ew9z65@ef0
zq%f=ea_8$9w4JZX&eva^uW8QLLFcQ)`Fg?mn(2H!=X_N-U%zs`ZksMcDV01d0gT3e
z&b1sRvGqa3dgsyvXRnC#&UWP4HEM+<PWO3@GfLl+j48Q_wf=7MUR0wd2`vw3iCj3h
z(bmEvpLspDtZP(ZVo)LHQ%JSSlXBHNjG{~*EjgMGHBL*8N}YG-qM06&@J-NkSLD)<
zPw-LcK}(YrNW&7&RR<4cmn^gPKIW1V*0Fzj4CN|<JzAz5y7m{#$U08P1$RC^HL89~
zDOQh2ZkK@B))bis!B+4e;cf5<d2Y#LGV<}5{*VdI$0Pbf=CJ*`IbBkaS1R2iQ#U-u
zoGuAn;T&_iBywq|Ba=1@71<&&n`H)fW=h7Pi4s>#qo>a6P@pZT+3suu9lC<NS@wkp
z)?Ml&@Q>~wySj~YS|@>qRL#-fQmd{>P1D~3))q~3F6WyCSXZV*=?|p3BY17HMEX|>
z+(-g?c8d&>5S)tiyt+4^R%*^8Jo(IdRpn%%r1NB6eM!dVjCoar<SAR_5iTa~9ZG0o
z1D)+77SL7GCgxV17sK7tg;`!>U{%gBfP_V*Mac-xdfMu}I5JQosk&GgRrXn50=r~6
zIj03RyCKbGJ<W9|JIYRp-<6_0&2>E;WhY%TD2ctuid?u8(Gb?oLMcZ)sa?(%U2jAp
z{;6fh<V?2PF=dy;6H!?&o}<KoxmbPbHnIAYmT{yUBFfS3AhS=Tc1)aTp_LGJI3sPT
z#Az*TpC|(w-);?xoqllC#kJBc;x!Pe=-4#bB0d7Ko{@5mSi@m-@q`M(@ane~gjtV}
ze##ua%?^Li)c~<WBcRtF?WH99YMCI~3E~@OM{a3AXIyu1iLG-CL@r&NHc8+in|ZPJ
zTiCu?9<r*{6dixQkau(1KQ0FWG9u^4J^#3jx7gI+BL)mnq1l<I{(EDp?|tQF-=uY~
zFur0)d6G`a!B_Hq%dWB}_^6?JhvcrYu7j$KGVwJK&Z)5v)F>6Fi!Om)b$A>5D*BLd
z9o8wA>Py%|C1r%eoC5>#e_fKYx=hF0lYcA4+M~ZmzcAColRPwWw4Vx{8>=6+frD~9
z(Jkb8_(<4D7CjuX(WTN>JT?9~mmWM{4IjmlCn%-%NFELtyz$ApA;st88nH9^<xrkh
z+<{PF+t5&34-PQh$pxWds+P=hNv8Px$mP0|YScHQP6tKC)~G(PyH;)J&n4ynhR3c;
zLP!5BQE6g4lw!oX-4^hponrkUQHlwo#no}A$q4)9MDRk1l=U<;Qf+VL9oco-(NNm^
zque2M{7x#j?49vWk|};J9gL(*%pq6fRSv%TZ8lUX*-+|y<gOP5g|&8Fp6EgAPRmx?
zNSJ(MOFo@Hpt>jErIbIvN4(ynrHYv}P|P__A>l(-j$|LK1R5-1+V|t==ygIT1<{?U
z!G_wrxWNk@H7}Ow;M#HvzZ?YTNNYMX7x7D<xk^&ps+A+DHcJ6_?a6iT#!Cp+aVmW{
zI49l8p=N6?HoTMlii+k@zwFs(h_1A+26HR-U>Kyg?eB*5@|}A;A~D*OF%tmMf3`-<
z#`gvqH%9aT5moW=S6ZXEplDV1ib>gp+_dyzSTz!EJLS32JazqQcj)?Ct(!c7o4k=5
zgmgEUr}9^gvtBrmjL#Y3IdR~E+qTW@8;YCRx!w!LCCA5a?COtsXxlC_5GkfBFR1m%
zz1S+Rwb;X6(Tx?DTRmJ%wfMc+i(Ud?aRqg7t#v)-pEGdyZA9fjp@6%nbv<pTJ)!F{
zO>)zcz#mqNts$&d>Re<GyiUmLfw#g-WZ(ByPvEQGNMMJC`E>rOvDS+R-aGO71!3Tw
z<Mu=@5TLG1o*TcZONT$<Kr2xi-md~CrFgB`9`Tv1OSEQt@$5$@V@V&MmU6+w8+glT
zYM>G^-|yRR)sos9TjGh4e;&VHegpHok=tA7uI9N$Ut2RT(uo&0)Ek^?Suf~rJ%GI=
z@6d7jUH9(HZ8L}FB|oJT`RUd{scJoZKO+r0@NT?G!#xxeIK7;J%`D_DYPan*q8}2!
zS&&W^UD;JzIk$mO))b+(L01V<7~Er3_?{I)T(y8xXC1Gzq{<#z>D8ZBiQkDdA8nQ)
zb;>2QucFjRP~mU52bwh0yxr5ML(mMdBX@}Xm=!+zbsc1{KzSrhyJa~@p}D{anp>j<
z-wSrf=ZrkMAYPG+fbqA0&D3Nevh|DzWJ=oA9`j4yTs=GVJR-#w36D*e_Gt&gn`K6^
z*66hd!`R)C$+#K2s}(OndNt`cmh&iJ;7Ui-n%A1nJalsD*?ZUVT(?di+%<#g&8|m?
zh^?o0tlW=@oz9Ra=*oxw%EW|S&82VAx1`8(?A8AMYNWNvADHvJws-~f*qH*DRqi*v
zm@!ZD6AKoA0XWU(z~QU@nxaEVx4X5JOZg|Q_B&hkEN&{4Sq%P{_1qdO@y1H9zV5v-
zaxCPrPU}^<?H$8?k54bHDPV-ca+Z}qfb5EYSNj5A*o&F1QtO3+m)jD)_$>bnv!cf~
zn~%!k7=NIbN6gPt4m?YGyXCXe)7hYSk&jHFRI?*5;zE_9piJ3s#pnAFyT)dC<2Ul+
zjm_|w%YHahuUF6gQ1GRtytHL^Ut3cvL)AR5G~yn*)}v93Df#Y+S1zdZYL7>0snJoN
z?g+m=cH`v5XT4Fd0E#xY?Onrq;Vg=F%$nbebK%*6_v7n|d##DFxgs(#zAi^)$J-%u
zWxTlG#1hZ_0p1`zZ6`g@z#jAD^{cZ&*VpoDE%gMJdLyL{eLI=I>Rg$PJ@Gjin!r6E
z1nv?c7vqu>%{B<!K;%OYoJHg2dnqjjv77I)Hh5$AAcOK3?8TiB?m1k>*MCBH$ZhSp
zzBb!4KR)NmUene@cBxf&EI$5pjJy7eb^bbktkxU5$s-iyCNIB%T5qJLWllC!WRy^m
zY>#Q@uNvP_KT4>`%Y*2{xcJNmW?C;Nv2aJ6KR*8~;?bmmCOAFM#l8SN6Q6liZ_FE;
zlhF%(TZqzXM(l>(*vzYX64U59WK>gm81c_aKi1*v#2=rR5xc23ep?Zi0{m@#o_VYu
z1ekrgNlT7%i^RE$Ck}y#PDju=f%*LlN}nt!ds#NZS?T^BF|eS_(+i4@`B-POpwQoI
zG_hUdrBtD}5x+ZvK?n^`e}(vn@x5=|BV8$4fQ-*g{CZO>8{L|fCeB$N6M*PeO`P{W
z&ww=?_`4A2V%@EKrCW)k@m+%=@A1S_-8yejx0d;1?%2${Ud>;^fNMf11X*%AG<6Uu
z))RMu!w>(zPmL?MJrCK*SbzQhoe~EQ$W|johEu$Z!-Z)&+;~(l19l%vS(@BL;Vm52
zzuMYY6I=KaJfrdTy9l*z@QVoYi}DJ&V3svItjS^PMsNIanN2Y<;@usqJIdN0i|h`S
zu=l9zs*P{o%|=<@>{d+i4}WfK+D5I|t2Ua(OK}T(8g~l$GN17wgS6wn@$)dEe&Wn)
zdC8VUBdn96Z+y<|#*;1&*nIzAC<8lCxYfWLrKiH|xqdx7&!Tu!RI0Nvpzk*}$xYwm
zZ3c$UcxgN-gwVMEzj@~Xt$1y(5#7SO)gAa?<qwVMcO}hEp_8TNX|J*AZi-=bM%Y=L
zjn_qDi;j!TDZbQ;g|=8dch>jG#p~Y)PQb=&+A1}NH$Y|Z{qePBQe2y>0Ue4q!>pEy
zxXk6EZDyM<{tba8@Pg5FB@uz$+|C|n{<+WnqD7f6MBbB_v696rWDlArjjIjpHKLgk
zI``G$3V4N&sF^;9mA#4{C!j<lfGh+nd;ybT8?g;g;k^gc(6WO=%P=$r?#l=NAGOL}
zEne%vD*hSJ8&OV3T*dfY{3%a1StZtKV^fy&L}a(M@Ffn2$_@s~8;s~TBwv{d;KhYa
znX9p^N1EDLc376Y{daWPC@^&3+~`<7xL|C04-ps~PGCr6DP~6kH+Uj7=FVIchuL`q
z^tuYR8JoUCvXnQvP+#)uP;c_8(5d8SLOsb(hfXFh37t+}7&?(WKlG2}xuIjpF`*BW
z=Y)<YM}*!_4hwyd%nEfUhlKvV2-hDX@L_L|-akMDzXO!ct^{BApJ7RxE_V`FpR4NF
zDh%E_BzEW>Nb<!k!sd$zp-$B7IJLil+gXtt8g0qAW_XR-_Mx*GI#-Q5tBjwd%E*sR
zclHXh#U__7E=RqKh}+qyNMi>yNH%K*V=iZix$aE8<8B*kzTM3R05qrq5Av&P>W7<q
z?E~+bb9?M$4$GSP0z0S!@5(kHNA@Syo9sKPJXYYMg*_MbVXkJF*`A9e0|$I6a4@pL
znji)LlQeIV=FQ0Bq|dw;8QDP2ZgO6k$~p9mxHngJlVh|h!D_vQ^#(D_C}-kBL4zvw
z7NND)O@0nJOa10lJN%c}1Px@VpM%_my`nRhYi-gCo3-wNnHS9!m|w=lF%!*l*1L+C
zR&ly5BS3fS8%=a1rstCH2siU_&SK63GmGqt_97{93Z~Fd{!;j|J+q>F;LGM7vu-)*
zv4$0}uX;bVzCqDsiY>uQW0PqAS~q$EH+mztu~zF9y8aUDWnmzC<Ljof+Ck+mx~+L;
zjK4l3QiMY@HWn8QPhQUI>?GTyS#Brw1>^cK#&;Bh2X*ijM=!X^liG;j-tb1R^>3co
zJsv8w{!JJUM=cK^Q!C$%-WUlMNP^e`Zwjs@&dN8uuZ@Y`%qm!aQA7Q3S7f+e+L-cx
z9~!U*7Qx=3>zZfEri3Ip0}J5Ldu2}-f6f7QUYFi<9e8i(HIOhY7!8jNi_IA+Oa;7F
zq}#n;_y&Tmf^9fvjfmfq5xXwBCvt9Jg7EQlH$+fxMk3j%wT6(GH-3W$ovc0Bstq;_
znc-SyPht36-2d^%?w;h2^H<P?PMbc8zLHDrzpaejp~RU)8BX}*5(`S1IH>Mkwng%_
zvte5n%aPaGrId?3p9N_%xE9Wq(XD}@aPKYh6{;D~Lu<Z|>)84`aV6h_FDz*)A@V?d
z?*aAtDdG^I#>(m_v$?c!3_Nhf@AW%{&hxlmF7i!PM>*HU%_VN6obSW(UFOAc{c<BZ
zMpI{he4&a}^;(O4VuOF~QS)?Pcq#UG<DSLVoQ=8hnH&B1x<Hu&CzN}@|2NdO+g&ay
z&4{+HE7>6Thw)z5(-+y>P;a}!ldP;WLAWyoLbV3rT2-q-IOg<5JAg~?B=^AlG!}nh
z)t9=MPSZ=6^saDzP@d|)+4z{dIEoD$h$uoCH`}8nTr3>T^{K@Gg9cUcB479%?INMZ
zI$-TqOPpYkAy(l#8>H7)IlYnwsYAYLV}+O2y}#7udPWAaxXQ=X4_;EmzNm&$Xkxsq
zFG8^wEYNm>5eAB}*51JQk3>Qj9*P7FhI{PF_xLf)HFR>wtuB8V6o4WdO_QB~^CW<s
z6VmT}D8&+S9ubYFd+80wr&Vx8+YPQ~b0Nf4&o_g!HR@`lUvNnDL`p}i=_yV9gC4T(
z*i4%0kgFr}CqwBy1YH;`qJm3;izp{}8WLBnj&bVgl+dqEQ{t3St)Ar|wgecbt)5z~
ze#M9RUclWEazFjhaO}6-LLmja*)XqOD@Dk`SihpwM^8G75Q<X4O46a{+3@XjMJZ6<
zbkZ<S5KGRXqe!&)>_ksEiGu$83|H_nN~%#U=y(A!OY1Rv^zAgsIvDr^9@$RY;fdT6
z!Rujs@<&o0hv+BipV~_M>MDD59-Cx6k@ZlCUX?fC`>h_JVW`kBI$E;j(V!rdcB_`(
zIU^Jv%}2d_(0LP6qZ1hulz~xh5W|s!o|I#<0m<VQ>7?{QFqUgWNzi191gcx*mN0q(
z-Rd>&ZG}8Ksj7Kb`V2eC&S7plX=*Wiq;p(Gj#Sa9kTDV>GeFKo_sN@BArsMgx=w4#
zz9FoX7uQtEanJ30Q{5jKX<<yyvv#@JGd+C%ax#vC(-HA;<TWf!XG$gvpqw};3;V!#
zvfDv%Y;)6hFC&&NFU}4RWgROqi(Qcu)g|Ja{_7lE%3%ivAJDYO3k_8@KS%O8qEa<c
ze++Nl9z1;3TG`Z=ydaCQU$V4+13n%)1k*!aF2v`nrk!UpHhu>cM6S?4&sSM_HL&Uo
z{T-p{Rq8+YQFD)I#)KDQ`FjBxip6V&aBu*X+AM7fWWLI8WSE*v$8OOf9g(%0cN16~
z@r8@fU;L~ZMk!mm2~rm_8xeyblLl})X`VWUoZI1gL`_$WXB0<zjOY)TM!<U>Lwu8*
zw{DRVDeSFSVX+>82(~;_p^kED4L=_%)F44#N%&s{r}x`cvHGLh@U|dx?Yf0ly(+#Y
zJTE@&M<`2u2;r}#GVUy6l#UY@Z>%u!HTppGxcF41@oC>Hz9!P$$Wf7f{i;yNQ-yIR
zX~uV{m&rmk3zPFSyuXJs1pZJz<iw$P=@2$Wn?6IH>5|VdFXB;&;-ZsxaXPQjG>iyY
z)5m`=Hk^qQTjhyesr!(wGn&341PsmNW7>#838tY`l(SJ84$ck&eMZw<QV=gm#3`O6
zL7&5!$aHRsB6R*nQw=!m`1o0(V(Km}HK)6{gPb8OZ%;}Z-!9kgRv_F0iN-o7+h)(&
zh&MJxk|zD;++Mp_zZ+3>jkQ&Ukj-h3*nFz4#+7+2a@2l<H7w9!G&Pb!&b1D(F9TjZ
zBr7o066vlCF-wo|igItbPWpeUFxnxzO2TyZaJgjtUMlNRx_L@Et4;)j9s!44jU7IJ
zpb2G1nUu;NJszTzP9w_2Ls<%mP#Ll$)*r#?GZ`bp)!OF;_dX4%HR>;{O@a+!42U07
zZ|IfETZ`%~Uit2T21#gJe<-|cC4qYKf;h`9Z%N5=*q-ABW#0Wg6$8XV&^CF2LoB}B
zPb_k9Q0B>=Ha$F{X%L}!QwW1(7)&Tq-~T&8aR-aonS|mq|LG74-~UV~#Ow&$ewqF4
zSk73?Zbj=gr4CQt`7ez|%+lnSxt~)b1m(kURcLy(n%j?-N3mK_!quH=cwkzZk)jiN
z>Sn$~!=MvW=t^fYw?}Rl#idEb6J$<tH)lJG0XT7^>e@b-CJ37-f`RDwWI}jU0Md}6
z2kqfM#PXc{njYlqC`}LA!|ky=Yl_qzi*y6&6Zpx(Q@Hv(ON$(y)vmjlGqri~$varl
z-ubGGKHjpR1&H2-7UVg!0KG6iyJy8GZ{tX<yAkjmT7W=U3Rf0&3N2{Yv_Rne69^SJ
z4K4U%eAW<l;G3={Pl^^4@TzHn&O1My*JwJ22zD-U-?rFD5otjV#_4{NK3a>+EtG+M
zInrxFu#T?Kboq4nHcZC_Q{gr0Ug~xjkJM$6J->2hKiqm}L5I8SXmei4i8s&Nb7KER
zyB9FyQ**^I=N_}w7oQuL5U;Lqx<n>Kuj=57Ua6%|%Z?>Pt5-rF?+;}{R7uAQ!v^f&
zQFRTPqS@L98}7$)C|TR)aa85L|7!=TjwB|`Fs&Z(G>=QZW$katY94Y!IgZub^CKT}
z!0B%ur(SuMtQXdz+53L7P0IoLrx!l%9h2UT9SYPBOnDSWV6~gQuwL)e&}^3ASdRRr
zv%*cv`d!Yr(~nsAytFt|XP%fUF}_ik=mfgKdaD}+gvbldRV-byoKJHK;#>{+?u#-a
z()IuAvf9roD^=2EKhiJ>P?r~%`NIE8$l5+unm<+GxvU6j&?wRWzb$dQQ{v#w5%1XW
z@SJF)x7mZVWSDIkkg$19K;-Wb0(M7_P8#&EGM=&f`qsPmnca5LPB@#Nx-v2v!^)b`
zOU|pBj)W&6R$@mpN~BA6cu4Yh@fo(%Qqa~OpV8O<_EG;^Z|Y5tf+#ciRvRE)Loo^x
zB{KqLzLm#P<IHKQqu0@`e!;o}25Y(IWvU(np@XU0P_F93Z4bT=&pA?<L)c@*OT3Y5
z>B>rV!RMF~waFRAllza)ylR3cd~QjL|JnoL>x`%N7*D>^_O^HU3&nGNk>M4|3C2_V
zix>LBIhdV&64zaOmIq#pbn=w=5mL=q_DrJ6k<?%C8$FJ~N56Nqe$={($p&JjnnW9_
zYuFOj1~R8!RO(u_z}nq*G863l>%{o9cnLw4(e~FYa~kt@N{X$Py=>%s6Tj4caq1Wu
zRfV9;TZP2TT@^ZRkG@U#{p{FyEZ{6oj#0O76EXmk?@~ct&3u>eW@(X>Gra>ZR@bas
z9LUiyREfMb(|SKXEvf;?1{h#)cd!A@z!fzzp29STKcV2ouzz;gJNutNVfwO=_9aKF
zx7aYHp!gH7u{;e#`obICAe-Sl)gk+;e3$xpe{#~*wQC&!Y_mC?bS^f(x+Y3L`E(bx
zb!EBR1UP)iM5XXTbr+A6#80>U#LqNFP*`$^<&xclFX%sr{>Dw5rXl*XI;F`cQZ1dV
z8=kVFj9v#gb2VxcFa80H5p4{<&(-P}@p2H!wM@7oSQIz1bh{k$lUk&q3h8oj=rBPS
zZoV_I?VT*kql=EuoQnH7tyLj<8N&gh9l<Ns!H20;zo(XdMT(C%H9j*#@;d4%*vK!G
zW;CG!ZO%Pn%clBpXt=7ALI6q2{68;C?QrGO;A4`z{-9}>7;!l|vL<hrF&6DYIdZ~!
zg5}X6nJzZHfo{Y6F2Tpk>D$}P^#}}$fv{Z)$JiiUp~J=x^u@8yr}_d<Du<J9dP6G}
zUq&Hj{bB6?#g|}POgCH#4WGw{w8ZQvNq!AW`BtQh3RWDJF3=hN+CegNgk9hO+SZpv
zZ+2z6MHL$(<#yzrSqWK&LnWB_C=zWk(WQp*_*~ql8xqSfHP+-?BN6>eqjs(u+fm|i
zam3qEk~z%0-OF8_5;7%!-}X)>%(#OKFPm>qY<oLBU>!5Po{SpR@sZQ5Fsw)VZR`nx
z$taeg4BbvY|K^ZD4}vX{k$Lwh@@_`u$W@1qm-)P5cSC#ri87z71d{7+c(H-N26=(L
zqa*zQeZd*^7>8xARC}JFEU;E7ifK1{hD0(OUMxv6Tig*cdDUqk61{Z%aN`0|ts;G=
zD-Vd&y}ZVzCU+uOq3CM0iH%QfZNrNhnEvd^jQgC)-61onE6W<$eA^I@H8Ot7kVy>}
zHdsT!vPlj38&Y#1jne2~;xXok(IgkCG3|GUJR-g#Tbv)9rwbOd>4Q2hPRBLm_f@L`
z={g6k&7+g`-MymL#t!jhZuXVeum$BRBo@cnYz;xA(>I3=gK__byhHBdrMSQzZrnGD
zPwa?}HSQDPvss@PFz%BZDrWt7-u|KA{P-hJ@)q|ztgSFr^jfZhHcX>w)28)hR>#Gx
zcWJw+m=EpfH<~&szENB1v;HU+Q;q1OGDGTo=4oy~3BSsvzzN3vUzgA_tbM0S!pvaG
z2y3b^$MBz#F6?D(2hd9?>)m*Xjc+WV0PHx$=h>lUi$kuU7*Vx)#J1Dv0(qnjtj1?%
zW1sM#g)!f5tK&gam1ErtGkb4*g@f~h@Uf$G3>MB)UqyCJD6g_gJxKzrES2SA*RaOD
zJ2Y+7TU86xBdO55GeTP=6iMuOLft*1-ck!$JVipJ)<4dOF_Zd*UN=3eiD<m+Sf%>@
z*^!?~NA_X?;OxkeP9*F&bwKRdLLz<~^;U&hpO15>!+<JBT-@L++XpC+Aq+Q%&m|V;
z!Df9Aim&mqmnu~Wun9=$^B>dDa_{Uw(y!LBo#~f54Bw|^SfN{jYh?o7iAJ%OHO9*x
zf^KeOhNaM1XvUIi_0d0MV#qn4sCjP@dKjA`D`C7@=tZ({5VeS{^>&m@a&?qkJglSS
zl3}s6Q#(o~3;nQiBp;`NLSfogzO=l!elIcsjVk&K(PrvcQ{#&~aZdo1`5ii8-?|}I
zUuRht$y~|BnudKvLqi*@t+`!sXMyXdVetnvM4ui6k<hP(+b1=oK{9Wj3V04oBi*kD
zcCLKI#skE3Y0$cdxnHH<%saYVQG5NDpj(#LJZXnTTQ9tz#r;@D_@>9ak>MP63oQbU
zY0zXnv(H!@B_qPB7I$;GXMp_w<2Hx<8%=v?5!9cmOU<$)xCH82_bpbq4~3DKB3&io
zWjj1v#NJsA^E?g7l~DRdj+Qb*$HkmudxeNH%+`M}W?F*TV{-Ibicsx(HaaQTCdaPR
zI=ey`rIeE7P@#+-UcCcQEloicz6OYr!z5j2mTY=B1$G;ozQ~)c2izWgH*JPr8Ht>5
zkc$f;z+Zd^0<3ktHT0r%dS(1RJsjtn8?d%BEIv!tWzkHfZJi~~3fi;sPwYq+eu0^z
zRZ=~TeIkcnw<E1wB$t@0RdJ3e9zWgcbYFO#8u=x1wC1BAB`Q#c%Fy2>eBTaicIFf8
zR!@}sd|*yw9#+VvMIU2BWM1!jR*ttL`Bm!e4?ydfND)WH%X33RxVsq3S`;hK;~HWz
z$GTojqFonTl7~uM<2>IG(PM30TC!N~)25k2QKJuED!PkQCFO?4RjX?Z$n$caEgZ-4
zJQvL}mwR2c<T*aWR}#)L?;+D9d$wooa8{KeHqPr>u^p^^YQIex2yEDTxrb)8+gZ+f
zARdxNp^byKHIA>;R))j8&ZZ=8r)_vA4b1Ubz7m#=ZtKnPRnp;+%ONBgS;>MHH-=oS
zmsPzU(d+EUD0Me<!kqf)2zr)}U$0GFNmDkwCRQ+=eIyL0%Y$!>lHS1~UJTOC=&=@@
z5lFJ-1L+!%u7yer+^S4l)GBI~tLUP39v1`jv8_+Y@Akv;8{MXV#jijtD((nU-UOoi
z^t*T;h(*OCfqJ!0?xRPhsGt2JP0`Yp`6oX@n|9?kY?mvf`fm0wc#&-e=$Y8f(S!C}
z20=T@d+jrR1bs5aFz3)09s?iw_C%|@t&fYNS#IA}L1I|p7mm-Ev?1~hNjFZ?<)-;f
z;i)~EyC&7n<0X?&2#|?_jnFrZCZM!iM#bXV*+SfLzwjK;G=Jys{5HLU6$fA_HMdIw
zu8)eLcVp9V!diA-o<D8TnvuqioyLxaW=<>2E`vLJ9u9<BjU7#Gj}a8gM&W}C)88f=
zsulPB5*Evz6fL`KhRckL9|pSj0Uoify6d*;E_J*;Y}K8-RXQ`Vnrzf#s{HVcrgDd`
zHkCJgaYaRVG+#!vhG;V`>Ai`Y`rkc?>-*m`5=Fc>>NE`yw8W(Ts3D0w-WyJRI&wME
zdS{%i4ZVRr$KQkzKgmMil<qn4umG5NhY(8-|6Q%aj2$n)8trq?A@LGXv8~dwL>sSC
z>?LOxE3roW$GTYE2Z?{z1<L#20(B{z?NiF^@WO^u!SKw6Q+J2+8cwY-qF*4~X^&8@
z#4VC6aCc-(X)2KU>5NvQm?#H+f8vV%_x!{KytlZgT^*UwaBs%s$k@_!Ryrt^wT}~y
zX+=80RXV{>q?7Fp44B4*#P21+GNb7=dERL>{Z5`=!JU^pBSzD9d9F2@w#svn(ez86
zv8{p)@u*C$O5@3$l`%cY>T3azJ=)q570jy*UueZ;;>EWL=BW@oFV+*CYMapR64T#j
zq^KZ8VlL$iqVy~??pIJ$qv;-DFMFzt`#)gV9W`Q8&0xb_5njZfx1z#`eiQjf!_NH9
zsGuUbTn_d-omNt;hco{0F(S9QC@%K!5nf}_NBA}36@+wZpCX(fxDr3%^MrOhQb_;8
zZ4x+WoML<qL`Q}VL|J-1u!2W25rWtoz#1o^pK|)qGPYgnHk$qmrkZ=v!#Cdoallgv
zftLR5)Z|ARk=Q^QQ_<^h0TXS#r=ZO-&LVC8p+tVXig2Ov)U4i0ZAvm8l_polwO1CL
zYi=ipHW4wgGb+<nDoKuNnbq5@6L#u!66j=fph`@kA`bi0Q;SoB0LGF6d&85R<_Y>5
z&tu0!+7Qltuwdu@o<WW1hQ)UfB=HwsH&^zzw^Dik2BIYP5^VOYFz!E1-A2=&`89j)
zFg87>!@p>JeKH(^*>h+3t7gxa!<U&oUooPO5O-XUQiB6FK)Ax6ON|EIm0W0D(+{)y
zF<WX;Df}$kQYTw}*tgt@3TiIrN+6f{H37{U=$OQRNC#_zQ{q$s&2(8h;DlB+Gn#%1
zs8+UB!!e;Z@fshIkqxK57`ekiC%#?D+G34b>oF=J<e+i8{B9v;{q>f{%f^m65>~6{
z-erPlq7Atf3J$~PcZMLgRWQ{$m>lL5EZK{W%a~xgqFJJ5^~R!`cu7r4ThnCbk*%w6
zkgw9##l&@vDzv;;FcNCrE{1^HmD`0dn7hU|zSBVI;e2P(MDkK4azeLGlFxOLvwPhx
zv;2#Z@gVV_L~A9{W&Mc)S42jp#)L*P`vpg;5^@afG)0Cj7T-o_a+0Z58BI?@7C`T&
zn2fos4NsD>Q!m?>lJ<--heU!ecapM2C-5xjh`vfuh0W2|cy#JT9b9lF%1FbYk->=G
zBqeuxj<@B9F;gR4!SObjCFA*7y-ANuo(ExpW^w<cB<y|=9_*EYMCS!w-!OKa2N%5~
zvG4qf>%?0FjZ0022f&E8te(h_qC=)0YgfH*5IUS|Y6^Tp)1fm_!|EK~9?7~u10BbN
zrN$Rq6P0M|281oc+rwAjM+$&3k&pVpsi#5EwnFn{aqMA@Ao%ZHpXJuQ**s!ia(le&
z!-9_T6kzm2%01IoJyAageq~#G8;T3V)wZ6ymj3O?C@e`{H+wnZStTX-x;$2(>C*n5
z<Yk&*4NPE%U?sC>H%xVfGbQamoU~3w=5`@6^!RNIp`|D5V<q9MkW+(TL!F_zBALfN
zC-qT~9RAq<!`jz?M^zpD?`Aj20vmRb1Oo(!5ETUh4QS#fm<=RECAe!OAwmFKOyg=b
z;9WoqF|Y~E=62OuZEgE%rPOLawJIOl0tulB;1?fOQLzR^JnJF`K?oAr|8M5pyV)cg
z+V^??JP+A>&zU=C&exndbLPy%DMMsVy6ir{8dP4jCp<+}pYYUP>M_P<#epgdcL+&^
z#1iP8uEm}WI^8gfAnI0LfH*S{pphYRkS{;BAnc`lGJ7v7EAdQ`NW`gAjKQ~c7vMoQ
z6{^7SpyqojH=MR?Y)%LVsL@?;)`DGlp#Dj`6uJt<tDDg)#AUtXvpG>o4{xMQi9b+$
zN^GVgw$j&dy0<Zu=40tCjA6$;0Ay4h@hHH`HNkC_POCz+rfU#II<3Snpy>~9qzAFI
z6!@Rzv~rc#d29}ORmRBx3V9qrDv$iey}`q1kr<M!WQedSlMYV5e+zl6c+{2dG`L4Q
z4QufKWBi{m#%Z_~|5xGvACad^^sFVuVduT;Bg$X$W+1+OoEn!M@|kcq1{(?}=bj|p
zK=J#KXkkqOZ?|-|b)JF(lU>C`V37I*Rw9cn5ez{bzhI-3?X@$k@{WJCwM<+Oe@0}`
zL3<SMiZX%I2{dB2@V&SB+jy41S@?c}h41)RNkV7&`-*7!8+vW2lhftz_$>^Wmr;vj
z)yJ?4h^B0`Mj7;x6y<R&oW-3$J9mV=sn7>vJA&ZlP`4Z@D-~B@LkM20>+&GJvfA?D
zgV@;OL_~;1AX;vZ<frn)sp`!%gmT?O{A*{jwpr?tKj<*>|JZ+i^Ks-i_R6OlM|{>M
z(cj%~He)C6Inkwef6d6R(z8AGsx8#7-uKY2IQ%|>OZzEp)HiU}VOoSR$&TD-rp_>|
zE>q7mAB|i86Kuszt=Xx{Ox18Y&+1d)V06q9t?!_$JK_r`uNu!_syPAsaczUoDdDLJ
zVpR!%`3>hSvqDezZrrOu2qLVCr|CMlY+F`+s)(|&tM;%d^TXP+ao)T?kb_|*8y1JS
z&N>0N#%m^)Ap+SrOqp_*`2HlC+;n%zhVSZ{9<ce^zr$swP@->+HQo1mco9DIRhprX
zS%{D|S|5>O0b5D<9UyDW^3dc`v5JNzIB-06jG-~Kr_V#N$)(~otbZ=C_g{cJbFh45
zlcofKuatw-oR_^TRcHundkB?jp~^t5Of#q5F^wA37Vx1EZis;S#q2EH^pg!*ifU9;
z0KOcao?#BGwdIRyk@a-5Pnn!O*Ww-G5;y4+W;7Z-G&~!@t&_>sIQnC<mIajoLX)oU
z60~|3hUyU5z}v2M#EYe(k_&-pq&$3q|4yiDEk@|66cb{ais$|%dm@>{1Y!V&_ffOi
zNQDi#*Fx=-L?wkTr=#S%7El$vq&XLG>yPKYQE}!HMgn+&fT@??AV}HEZqk~RiaW5q
zKzuE9Tlw>Ay%&oE|3lN4rXF`4Htuw12Mbh^*uq(3krnzBC+=9FhCwy+yxms!W2C8b
zEWY;h{=pP8pwQ}T|H`)u8XYU$XRPS@1FL~1ibJ<!nvl{+v5LL?ObVkUn%oQj%G)F_
zymnN*OWj;(r7>5gU6F)etLcFvqkphECv`&SjgE7;Sy?lREM2VP$OImK(9MU6eY?_8
zDh;0pU`I-d!;z#o9HusdXVHC6xUz!cK;v*4<1(i!&_9(x1^v!D2E(`=Sg45MU5ZiL
zSZryqgocp^A_T4E;=GaKvR8M(dX9!T$|Dyptm|X5GRg82aP!?;sM<VnE(cCxCx~m>
z(E(EF1+^I_LV;a6$&&szuM@{+5F@dMY*2>-7LS+?|MDm9yNoRZ^_2vQp;|JF(x#Ga
z6KE6dD@Z)HZG+*2H^JBbu}>u8e)vu1l>^j)9Hf0<%dKKxHX2tB0SrGVu_}U2Oe+mh
z32br02?87mf;CxVBD#BvOQ<VBHrDRL-LrSiu`YB^x0*>UCW{`daCGg?A4tPU3j|i-
zuk^nL2ZwlWtIxn+@;Bk%IEC^yrt)9%V*x2DUEKDoo-1Q}fcYvZkfuSchh5eou)(|%
z?}IM!dz{R~)*>BjJ}0$EPxa6uT^7BH$phNHS|lZ1y#33bM9l9d;)TIb^pFb80*XZ&
zxI$xMYyJ1}f*O%W7XQW^{H2}z-2heDQyuh+E>VQeA=Wk}%x>{YO9Koq>H!WGO6yB`
z`7GNeI5in1LA@t}e}LAtF)`;-Tm98|%9;gx;t_ZNU)z|64_fQV0Vql)UvB=5?80s1
zJ)Cg|Wwh2WmOmc(LpC!=B%37sP*hF)P{~IB#_{+;@ng8Zf9{pUj#k;{UzokaL5CBV
znF@^%l@R<Vv50eXY>yCM#Ri36uT-ji=L&6g&-2@j3jBV}_A2MOjNs3Z*m#Sv_UyIr
ztS~FCHft)55$ma3IHuZ2yIKFnEc^}qu=Z@G7xzm6a*fxlc7_(zo?W7p)t<dexwZD}
zeM)id*_BFB?b&(W;UVYwda7I~+jp)Co8WWz!12hr70R&l^;Fr=*uX4fZPq=?FC-1;
zxzZu)`2f}We1Mvub}KiFt&Y47)o$gc@^3A|i+8wMPvcmf;;%R3m;4cO0#={X*L>*T
zNZtaoo+2dPRCH5`GDx;+IA?|z!-6uPTuvmO#4h+~qkfaG^ZTUA{E-45ZscB28wWT9
z1#cgsvdcl~qEO@^&Ci|$F>-Bn`v%d7qC!=sPYqCy!+bvp-sA9uZm1&=t*rZOk1T@*
z2$xB)AfZ&8_F(VsS#rB$hpp~Q(kMOrAo6{kKd31nJ;Eg*4?0v*8p&2r*$bkrt`b}P
zAbF<rKd}JC__oq?y$S&Xpc#@w%ow~H&$PGWEF3e|({yh&Tr~p+9-KJAJ1Wdx9edPp
zAuT_$hFhsJaIxcKD8y0V<j~#P5ad+MpUOr~hi_1ThuMo^gLx1l?&1|&1mZZZ86|<O
zlpWZZfxn^}>J4V3wz`K=iyj1gggi+A&(f!s@xb>ss`WI(C6iSRjfRGLno-wt+0u1s
zPrA@M7~VZluLWvJrYxY5QT!)jTh2y^J&a|z-)4|4+!&w+*P6j<x?nTh)s6Ybz}$n@
zcaay>3_m9WMezGZ-`07+k1@0eJX?0;oiyC2)B;;Q#hvZl4%0Y|yWecO^MVw;M`!D_
z!rAJ+!5Hm9(aZ=%zRs&~lp+U|*>qKJjN+%=SY7~@?g2NsCu!uDkfsUlYerA95AnHP
z^?ruj|GuriI}@qd$lf*cL=}jI;YwIFa$8GwAeV>mMrvU(m#QYa0Pdyh_F~d%a}&WT
zFyka)VRpYN*CaReS;Qe)%_eA!nei4usilwt>Ny-jL#YMnCb%6R!+;pRP^m@Qn7^an
zfSs6@p$6QGRtclJl~|Od2|jg+D7o~A*HA;8l*w6(V;Q+nXtNZNR7_YX*=Z^+->d|z
zY+~kP7UcQZ#pw5yIr8Ct?@(XofK@mgO|m^Kpp@}-rhBiEc|Wq%zl#*xwx?(cX6~nb
zYGVF@PskF@WZO17=}_kD_4}YZ22iARe#tMq(%I^2@X}D9j<0!=kI!IH6N&+y!1qq$
zXsG@Y00em6yX5q5t4~GJ4QQ9}i+{%70OJ6cp=88fd=m~_RenL6LSb517#xP8e4^S`
zSI-Y7XhQ)@s=FWQ3I8B=gwvi(EDa8gp}YaEdp<yNM5G23$4TXNM=m<SLCl$Z_7A*z
zE>zEW2f`V7E3+5GWkNJ+3QB%aE)T)l=@s4qFI5z_7JQx_s%(6MB!<w!!knwT`E~o1
z>5YSH&sHec6<)vZesg1U$lSQ2ao_cOSB$-K$N47Prf+SV_Np*6N>tlkHtzqlS(pMd
z;}2O<XWir#*X$2njL1-pdm&mMPJG#j%>AFrY=k4O@cs`8L8C#le<LlXa^VV+A3A+O
zxLhs>*ahxZ%r6^z&C40z=!3>HWnnfCJzM=sVlL6McT@x_XQeVPXP$DK95gH2cxj+9
zt&G)2=|HW(xbrP-yhy^d1ZQRdik^FLx(Wpnq;xJb7~i|dKO$GdC<nE2k?$`wjpF1o
zY+N0|k4sgC;7<H$NGO!zLU0e(^l&{%Z^7;K$kHIff#D()%FJfD&Q^C6QzSAHF5<aF
za-}wF;II~hsdg(5Z^bU%7Smk|WAG?4)OzLsDEc7YGzm{O`c+;i6-g*GcC*O~cf&tU
z>fPYmO0pW(f}7AHaD-n!2)|luD|gC=YGr}8V!4F-Zq$f)`yMoa%)ZZyz91%&WedE5
zRF%a(b!!%qY`;5WYCdWT-Rd!T28LM@40E<<xEYWg>bIfmBDf!rxRqtm7$koJ9&__i
zv-p(F3#72Xf8{FaYufuuQ^(M6^&XUhCsUwU<oHmg^%!EW0g>$J;9zuE^ia{*^k1nc
z=>A#SR<}~;LY$=f)lbE<8ld_?HNMYq=6ydW`8g^00l_dlwP$mromL`#2Q$cO<(f#H
zjZoTgd)7wa?(+`T+H>{2&7Ye>6YmZW3|$`iqC|e7+$!m8{@g6ygz^n1DbxpAdq@th
za#CPb;@*B*;T3$SwZgpEt?)dd)>}creFRyBLWp$F&O><^1N>vFqm8{by1iL)^^)vC
z8)DGL%2tB2WokMy2(j00C7B)m1mQo-ROz2CW#IF?`I;pK_R!*-OTi0C<iFG#r*>-m
z{ataU1HEt%{C1ZADXO{z$HkL-c)N4)Xt^L<68WGNAJ{h8G`x;o-dS>@%GQPjN9_%l
zdS|Nj#Mx?B8t?UHshy39;CS@|Fcv~rYJ)_s;*S6s47pQEOF}2%0lyZnr6uA4{E(ty
zD@m?Ks2Vqt%p_jF0l<1OSE{_ULlPU5#TE6^-GJJy$$&IKKM}Cwfz7&y>xpoQ&xtU*
zkRQ({ZFT0G3&p0ah<jzVk7DANZxfAdjT2ijfv}<^tC3<NaW6miRZK`VL^;eb{-YY=
zrYriWAzlNcys#R=jHm-7D)mr9(9w0jYKU~SPY*Q&?+g3^+Q+o<-ZNSmLCq?;zJDV%
zBC8~t{XMk-#jC0Iq^u7<ij%V*Dv6;21jaOM`9G>8a(WT5YgL4Zfgpla5(ZE#re1#m
zl|(C4C@cZ}y^<SJDeTG2NY>M~qh35hEioTIDi6%^@<Q9D1dLw!srQ7RlY@&{%|SyK
zt3DJJZ;+y*5Q>V8q^Q75qY11lDwqNInc?|)%j(}cm9sUKgr>DvinMM8g{Hh%CKIK)
zVyg>pAZRqt-_J=Sj^P+lR}csO|Dvv#qp2$jb#(=m3v*`PfBTtr>goytA$3K^e^6IY
z<zlESNUnprqOhmBf-2puuAnzfLf6$5+*GnFNL@kWT}|~%nUvHOlmK<bhqYU|{rpd{
zXdrbzP+BBNr3K|_N(*{~(qg*r?R5XvG`#r2q_hZ=(jwejX>kiAnBGc@i;yN43KsT1
zw_=IoQsp>O1JpS^lok^KQoEIF;&oC<1AXE9aRw0nk@p%YUaP6Bdr2j7^jg8<P1Z)P
zsB{Z|?YB^W_`*<pJOsHDx7<ka5r*O;9*PfN7zRCTmGQ8OTwnMHHTk|UsXf9_d#q&P
znrV=+9uU(6o8;gJP#AcYERqZvIu94?JZPL6gT=jd9>i7tv(Dp0MCIV)nee~Rc~Ait
z(0NdHfHip{g*F*-Ykeo_gra3;(uc?%VrK9Mx@Sb2eYM^I1kpMVnwI}7od*@GGIx~)
zH1akwrp_aZ*s5;L#1^!-CcpGm{YcH$f7E$IVIJI#d0}tW59vdqn&G!}MEZZyc~H67
zcgN6qL{YSgw)C=N-sr7`A$^EGby(-2VeG5(xV9V1I$-G*=KnjL$Gwq){y(<$Z@YCK
zU-#B|kUk`;t*>3AwRO++heR_W2u-)n<2j(xn1ii;HWVOQG!sqdK_m7;I**re9Ifd*
zZ1^}@=Rtf3f+(;vYb2cqEj31|w3qT8Vj8i$_!RMdQ4G?c^8kl}nFB3c+63;a{>blE
zf4nOYgger$*ce<)>JQ+U4K5e0_Mkl-sXeBG@!9H6;LWy;w|FsC9&fA6ok{W03eZRs
z{gtrrstN{pMU=v*ZXI$O_yC5d{a85vrA1TMg1jr{u@>Y~)GNT809p`g-nM#@i=wq4
z8F+^lgpysN66a9Rg3t?VK}<7d1V^JNwT<;4KPGx$u~hd207wtAT2FYMSd`R*B<OmO
za<Eig55mkCG1b7C<tiXov*0Xd)jj(R;c*vwErn8R)vW^=Jdub(sHi9%$TCd_;vpSK
z5p*Ckr4A&ww+>|df7XG>K7b}<lzh67KIBo-hrCaf;nh$RpB{<QhfLJe6G>Pdu}$aW
zgI-FJjnEQk9D?`JQ*8AL#&8ez{?iByR3fENiQL+)3-N_l;y_d`JGg4i>N;<NJQnfX
z7g`)+KF(vsL>uo9r(n7SO}z_D2ZV-G(grW^JryE)2`d-zxlsdIypkXi+(;@Aj_(wF
zksjsQm`i*Ltpl_nJnd|C8?byw26$1oHiVY;Y`kiF$)1{!bYygELP&?wR};ePcsKL>
zFFIgqlsbfX0w&p?csI*>Ia@us`=Lf&>I+vZ*j;k7xkSP3%<yb=pU~bte4lrcwr{ru
z_98`YB;|RI?RU+l=5~{x_m+M>;t5qsod}(fgjt&=l<UcGjkcfuCnz~IBT`m{EK7MX
z8mq1wX*MH*QZ#On-@l&3$OR1H0`x%>TSqdgTSr32XfcM-5KTwIBEB*vnzo2$gsa0f
zmivBRIEM1z=inca!9b2#H3b3>C?9VONc5vYD%;1T1-F`E4w4yyE<o4g)SJ6%26YwU
zZ);ukt9e>i{g2jFsgbT~<gTI(4LT^4BZ<U5BXo7->vs9I@;y!E@+?7{#Yfoe%ef&x
zLf|c0S9BE&Eky=tZcp(2s9?54kOXJq+Zc`fXF!k&h8r1&vcM(FJ99Aj0$#dxC??XO
zn50N9btq6!-Ug7+y{to_eF*7LI<yl2T~j_4C6Fcs`b?=w;g8^grap+q;oaD7i1W0t
zTpCfYhjD$_wrQ|df@7Dhz6roRH7X-(r(^dB+f8&E(Lq`j=>k&iXiOl@N<Q>UL9#p7
zDlU~PuL5^@d9W7gk%gSy&V)>@Cb)Kb5DS<A6d5ASO@2pVSrHkCl_eMzhLBUd_W-pJ
zZ#U&9@Z%PsNzSU(P&$GQ;-wX^DP<+0dMIskfTXNMOv6u4RSpSm!Y~O%{3lh86_5s{
zNM(xxR^{aQw%U<s^o|e(phz0i>6dKYzK4p!B^&u2v^^HU(j}W-+MZpPMYKI+Xa)1S
z%w{47b}g>;WESB&Z}bj0U0a8`8@+>k=i|I-r}JjQsK*m0ECBTw)lLy^qE>>t>a<dE
zlAd8-Hj}U2c?ZfXz&M_d%S3dmTaYX7*UB5@@-kj|>&z);T;x+=gZT7HDj$|IxWGl%
z`(X>0P9{!wy@)U6{rZuj5<ouOufG|;njI1pEf0f8IOA?xWsx`Rmt7(#*ck#gkBh*S
z(LeD56vJpAc%CCa1%Wi_qJZ2L;9{RT2**WNn|+6k%68lkrTV~LOEsMakw)@7ViB*S
zHOZC=H`;csh>#HDGIi$*nsF63i!`XAhKBLe^FC$t^A=@9c)3M%;qEssqn*JycV-jf
zlF=o%LbHBlY|D`mF#p_gJ)*df+rP|z!iEX=PGLoZP3>o>;KnTeI|YAX(aBydgAkEm
z1A4h|fIfH<xCB3%CjmAl{R@=7nto~<KoM3_^Bxe8UITFVk8k>$+8XC&#C^E;9Be;;
zzTv6M@wfI|90kTTdZ*yJ+nIgvck8`O>|ahcXeeqE9-@oNmqi6<pd7e2NJk`1grg?I
zNsFK;rkE4-=xbnxV5@rytXoYuJu}f<YpZ({FXE|RpzrhU$=sb?gqVqGpuqNcvkMW`
zrY8CW>3GH6N*->uy2XG89H%N43dHL|N;qW+^3|ufwHN_{Bh=^MOSm4ft;>hJ<*%QK
z*T#CPAMueNV7fOBQn}WdO|@qSlH;IyDojl<wfR=UYCEOTHML>xsfOZj=(egSj%=Aj
zH`}%~yF>^gHF3A=)c}<_;dN879i~}eYU`c_V!+ntAsrD-m%uA8giqFj(7l!!VJ0Lr
z(qlx7KLWyi;V75@U}&0q;$aQ#_80>Jf}za~wTt$3IE5TwQ8Xr7-2!|7XL(#(S1Hk`
z)>Bui1~i{^mPf}gR{#ux5M=~tAeox8H&O%n>uGS=ev*QG-&U$W)=eB~cH;yMQAk@0
zP9^m~ycaT+Z!4j~jrO<k60RrwVa6Nu0aK1qG3Ug2FR^XT%-mh+JCCMrhC47OCJqP5
zfR^2?0pg&7(!`9vp^+;c+(@?iDk_JO;)IRqRIczO&2#xVUkvL3>|i>mW|A6M*kyBh
zwzcHkFL*if)xnL}^$<+MZMLcEVE;^8R&X#fGI!Guz);5c+)jg4&O+`8I-%KvI%%V;
z7^90sOk7yzk)#HwA$-qLI~ykO*a*}Y;l)vGzdu`jf^s3L;BVta&f0GW(%Cz;R;wW?
zPY#R*yY{eVD<KJEf3|FgdQf7SaFBX>BGO$LJcL)ylJ0KKXL<?3$W<e^aMyDh6*_@y
z0w)8uwX=acn2sDdF)-zA^<=z~O;svJdUutG4&Sr%eV-~7s!wpP>`U9`i=56%AF4IX
z$JL7SB+ak%r{?APxXy9fPo>|Um$!z;%z3Kc#{a&4<RnDp7U-_u?VLt*MAh#Gs$U**
zxI(K4B+#cKG*64509r`hlOyYbN*Fg1r0FfL%3xUsQ>&5Zi~Nfkm|A5Go(J1owmtK7
zX=&A5D7yoJju7T+AV7F0H1mxwm)h(qtqQ_Rwl;C$8PHZoE=wZaskTgLbp`6C(Z{hS
zuwpfBq+WIW`=QrER=McPk&l!Ga$?Kc%L&bWJP>UVx&dVb=u<b&2XK~(r|=Ygz$huQ
zF@4X{jKf%<>Ch9uZ!4u4y!Sx%rw8RKPdrZI=^36p{!pzikK%85^iK)hpv~Tmcr6cI
zt<4MO_j&O0$|JBgYXn~y&k%R<_i1Pfu@sNKbaML>g5?+$I)Mk#B09UGqpNeHNSJ}Z
zkVgVT*7IOxy1;<@S}ZV(V06%h5gHC!(Mw>k0ssQT*Z1jUOM#(=ZodC_0>fQfdI}7~
zs9B{yu1TGQ1-^EVz@gD2ks`z|@aWHq<&0&^bDI3{GGUeS10pA|tOoHqP_(_!cXs#+
z6U?P;n+66R*bZeiy*8&~@i9A^l@At8Xx8P3D92No=~%2k%&xF_Cy4}<9_@DOvF~wR
zquoxS@bE)HKbno~cHskUg4la+&#xBr^A+wA7Ib9KOZFnF6;^o&F%T6)Q%lh`woQgW
zaR=PWUi}x0d;|;Yz}c%z8G{ta1+(BI&kQ^8{S)9hWTB);dZ=0i2YhVi3@Ipk+Np#Y
z2JaNIe;*^R17XqPM++3!=sK=KXe2oRJ+!bQ_!1;Icz)zyWFM1kywe)hOvnHoB54fm
zNI)3;Z~J$l_VA|aywp&OO$7O_N8mH|mZec5C7M^cg4zis@Kli^glZn(D(N1xBFToo
zVi7CvhDR_q059$VEYsdaS`SG0;k1ZrdqQ&BpL;`^3DVjVlGE1qf~-Q_nA(s3OdSxR
zR!_dQ7d&Ft0P{;dfMweF-jFQhHS~n!wDU-du2)r})?)K}07sJF>J49}!B6N3uO~m<
z8=m475ZUMc)T54i^1Z#_J?RAeRu5pAHZvM>3$;-tO!*N<>|l3)M#v6G1UNewPzjs*
zMT(4Rr$I)*IsnFQxMD#?kEh%V<I{)TGZ(@Kj<DXIG=m~*fTe&jbx}x+icW;b2pOR*
zO;^6f;olufcFr<oV$KR>jCdcyd^EGTb0N<zxLT}+Owd+fHIlSLj#&{|%NiPllmTdN
zyvJqkb`~}!lwIFqtNS;S0`7;l8}hJAK|JnBc!z5ZzN-FPG^4GKlqm3cAgw@rVvtf=
zq|EY(RAsVH41}$gFx%?a<12Q;`91*`TkUNHok%hSaXrH@V6K%fxxq12o~<7D3JD@F
zNUDRjf({0wl8{Yak?@2am9PCg-ABPimx3-|d)FZNCF%<P7<uG{a|OOn*GdR^ed0D{
zflmxp3W}7giN1?{BEeQa7>LO&Ruir>7Y<l$4b9H3IOWY*b7xn0J606wsXcTZC0;&Y
zHQdIt>-NxP`ZpJ?DYg=S2_;hs&g>O)=I&4;rQ!w6ht{j#1AdiV(IF)Sy`Ma$(kk-~
ztb6-mWRIB(nZ6!~;F8RwgVavX^;XMX^~6_M09-24H)_yuz112|<rvJ+av*H0o%0RR
z`4-NPgY#HVVpSUFx5Ge-OM^()%5>s}s$O8$Xk~<W4(1rqBPMeJkC@Qts#-J_*(4yI
z7&Bs*n8h2NWLmr6E+!rRl%$Ioa?cM}?!_Jcd1imAf1brZFU?<MmkyHbRf}o8FM5WS
zH1<)3J4{C(p;fq|3p>*8%Uy4yJtCL8QkD7SI0gG~Z_yv9&ArY*;dj1H`-+PKg?5)X
z{4g-k&ghr=SK+C+pjCD`EnxcnFTQPO#pSTSa&lqlrxZT>NT>?e@;q501MW}C)g-!~
z=Qj`LkNBS6jqKG&g~z3Im-unAobjCP9ZL7{j*Y~3{Eqv0p^=eGdyivRCyUNWKr#MB
zSc{cmYkt6E#*esAi!A;z{zYlNTkH|PZi7HRf_C5g8%PpxG>o=6h?^?qEr?{G-j-oU
zc!OlPu1uYKtIO@KTJrr!+ykj=*y*2{VOiq86i6r%!W4C$1<(^ShpW}_)pj243~tMq
z>ihOQmg%pTPYO(39$4_QT^)qp^8Ltc@V-&SF)C(Qga-rZRho7xURL2H^x~37u<xef
zlZuXPA^(|YoMuSNhAjlAWTHF^{PJh+5|<>0;l#Bnm4dxh+r!n#Vmg*tTAvsO)$qq{
z0pl^W%mo^YdPR6?T6k${c<FeNq5&f4?%dL{67`GBCXAB(<hVb)Z$3Ma{6amUHltnI
zFqS!YH}b>bqi`FGMj};3)u1J~yDLt>5)Y(Spp<(uEVsH5RWn(<BBck4QOyF0?^rt6
zDLmxj3h$rp>^b(YE9bFKBJ3OpK=99d2to*)h9QguA}zF&+)>c(g1b6U4X<^_@=+&o
zGh`Q1k`y0NJ66IeXM00xh~Y{^*)AH5kd1V42zc}>sp5xRb-T90fG(1iyhPVf&=oBs
z{bpW-F5DYT1`WWYQ30AXLR{=myB#-iK@FUub9Ir;f{(la`&f@6fke)1nd$A7seQ<I
zU(qmB$H=;=f5@3RJu>wMPR32Jn_$xu&0O9s(<>6BX-kV5Bvw0S$t7^;J4%e`1^@d9
ze8|HRB4l$%=L!=h7hJY+JEUs0r+)GZw1L(D{(@vkr&Ap*tHz>d^nMva{Z}Hkw^F~5
z8Z{nFEHs!ROdV-hFg<L0s;Q`m`Igpt$<%s!ZTXJ!#a!D|xTGgDzDSE`7onpY^h+Lk
zy&!q;*-_U?*t0~p&1<E4+l1!R1_IQ_W0<Z;5@tY31#)Og<i<4$Dy`yc%j;w@j+WJN
z4Wr>+$vaZ)hqT{j7>g$662!s??uc(Hv{zKs#A2?Me)HPRR8kK%08=!T$q`IJT=1kG
zw3KC6*x4booo3ZVkTqUI4#?L$IorhyCWjQ8!AI~%Wa1tDC+p%^ZC`$sngtb49(LJW
zBXVs3wnKH9EfN6i%NpywQ*>dg0AG^}R705r#QHDDM+ji4^9UY({Lot?#9rD~;H$}^
z6;HH4SwiE`L}O(WrHU7j9Nk2YxrB!-0;9Vhan{jLkr5#NE!#TM>(Omk#gm~EC!nC`
z!o!0h---pv4T??g8H^AsNaX#k?0oU$ZA@bD4BC)2)V8`~czhlL)DilPgQGjXIUD>J
zUVXcaxI`;2?c&<;!Czq+3&rC$tUn>VJQZqf+|}QXY2XsKN+AL&ZE{aY+elV-*5U!q
zzSeqgDHY*ufTZ~{2}cO>`Mff=RD6zS`1vf=y!eXu@QzEF<#Z)85ykP{+{Qd}#@d{<
z-b8qSGo-`iP)({K4hwn;Rl=eS{sUwh*iW?;rjit;4i3*T^G(;mp`q-ZuicL5oda+U
zxyH=hqqV*p+#jx6uy~8dYA~Rtt;8d(?_FXo-pQ#wqA;!Xp&IJHCwv^3VfJ;Jm%(qs
zBGgyy#Cy4;^ZueOWKM>MIJM2x=4e}HbCH|!U;U0a1a<?%5F!()d7N6Or7Bl9pNm6u
zlPASfs{yxxh@f4_BY5N38l|F+Gngb?<(0=Jyb6?h%y8y$d;?L4Tk8PBLdh655Hv2+
z$9q!eAsY2%SnU?l9r9X|pDa+ai|{N!Bcc_R)p;HzgCFX5(MfAU4q`I^*dqQ7NPPvc
zh|Opoj@fXqoC6J%Zdv?JzF`~vK^PJEe6dj=5G4-xirUPM^UF@K-@wu>RRl$UE(BGU
z84hfohr3B|LHO`05Qw-UXoT?iWddl(6*%)!_<-J0d^_#Ipiky&)6N`I^O`JI0XqMy
z%>A#@O@zwqqEy@CJJcN&dMu{y@3GM@$}#P-ZFVM?l-f2gO~~9|hU3=M`qRrtLhXUO
z{*JTD20#KrxX*LT2Il*k#yj3!CN%f&gh&6!^mxu!J%fgov82|c@eD5CF+^Y014wlu
zfK((}6e3BXoe8MQV8}CwE771b@DcPUma8ZYeyJ$O#W@zVrbErkXclA6?De%9wN8qT
zImIETaCiI|ya5_B_vb>`YT~L#xrC(PINedI<QI_rn`l6sc^m^`EDiL$l_+f(kBhw_
z#7v8JDk(<442Eleg2u!*7;9?YD%sJ&S3oFmwG*yC0atk1i}39zX8j1m>H_$HBm73y
zm-oQi#(EsfmT#c1S~S%cx+v)<7zw4>cIXOE+<n?=f^+C5L_Jyd<=wljree!NNAvw=
z<l^{HpT_P|@d<{FJPs+uAW%yetS2md=(VRLI~!3A58nNu74Z&DA2?oLcKq%pt7(U0
z*Zr34Y}o2H)8qoh1JU)^QfP7G&Y`b-=i;$%T5Q2Y$_swM39xDYHy+eEiz)DHvDH6k
zF+6_x&RT5sTPQuL76q%hb@X?i>8#_u)fpgMty$n(0$+7%E@zLT?0nP5AjolG)hB8N
zod2pdOLB3-3H3o+;S%CGp@q4R>hEjleNOIA_4hh@pPu_O{k@*vC*=n8_qFssIv0zj
z#J7&#2j@OU@8FY5X!{*rz67eA1LgjjC2-M!O1i@b;1RyuU$_`t5~8yv0dAqlUF5=m
zJT$mO1F;P#v?A?~@w?#_^x=jr^yeS+rwM=fXxH!o2FJsY8sYO-T(g!K&gw35n~}DS
zJ_%2wzaseoa6Mu~?Qulsh;4)^JdOT}&Xsyz3i9X>8fR%nB~iRf83{V`qFoSqcZMVu
z8bO5}s6}CL&V2;1VUp>Nl%o^HEYO0jf@CP&qs?XRJ=~6U54ZSiWb=3nPowIIB`CVQ
zMI6QO^))SN5g+lxVm`~J3P1Hz;<D`qNT(F$`@9(zKNyz2^DuyW9}k|mMUIbU3|HT|
z6#d%#FnAC|Eqvz^-~f;xY__^z^8?m6-#Ih9Oq?4e!-I+wXfiqA8-Q^8_#OF%?3xAM
z%fr(eFtmjF6g73>0@~lwNvBMPt-@nQ;yc#x@&)Pvahkf4KxP6&MHFT7l@VvFyA-dX
z5eUVMnWyH`Ou9R4HPtM@>h2?LPxd^sayUq?f;|SYfEt>32VynFqdMN{zTBN?C4+aG
z$5>T*pA&~3R_tq`9&$7zv`-RchK7r^^QZ>eNe23{9f-NbS|+q9%b)<l4P!*nDT3Zb
z8CT?eNNan6(`Q<>5b))mQn3hcJmf+Pwehm6JAZbmxPkI%9EGNbr_rbs&v)lfEEQuY
zpVC94wXxXHoe#$-VeDymaF^=?4FU!{wzM0(L)E!Q)E%LG^e|ds3HT_6+c~2$3Ep~@
zD}3jYD3F=022C=gW`tN%ri<XZ4acCHsV7KY6fZ%U(c($3%A>)v7%!~lfCGFQJ?92J
zG#ke>EuOgY3C+q_{I}r$k_pY;nIg0TZ3uzoAmVoLU6eb}h&;2_)5L<Y%L?k}!QW9+
z`&un(Lg;q2#V2e^4mIn9BDiY$ytFrEOK)PzLVw*xqkTR72@T^pxt^PH;5KTp_4G$`
zypC&rXeexOF~`t2;E@N>OxXqP-b4gkOUtKo_#+COT1=*9!r46ZZ|5wq@IN<*#*EoJ
zQoRNI^d0}K#Yp$&skbcg7w>JGwd5z%+DMrs`KrJ8kebA-HHG-736U=jtsbrxA0if8
zw!lAg2wXWI3VkSERic>#aSp;VCcI)vNqBC1d1yFV7JmG}9t;X~-?LahpfaJno`elS
zcv_7rgyh-lpS2{jNyI^Q6j`t~>_R)}OA!f_^bRMS)H7g>nWxKPr!iX8Vte2jwupD-
zIDksJk=s~p3$}r{68{u<^{R)2ZK!$$Q#qWHjv0ei;!g{De!9O%|5PRTX8;d-oD4Du
z=)_&6$sz^t@SjZy2gC2VM9XcOHo$KZPw>a7l>BETmxpdD6C>`&147u<;kUGk$j5gn
z7JLr{#sCPj;gop@*5RQO1&W}BW51X1t+b93&*4#plU{`Jh%6avjy(?2qODmdD!n%q
zz9Cjyjb;9N1ww#-BdnMZR++9ymQ>Z^Z(u9BA*{ZQlgeZmmf;y2Cl?=<VEFD##TMTq
z8HTU(L8<=4)>7MFZ6usxDp)8W{q;EK3xoVcnWqbJ+pg(J>JG^B=ak}-Fda?O6)*h7
zp%w4W<kzSF3>G9yQbtqoqXv8j{Y!u-^&4?j@RDq%OGzvfms^mB=}R~37G}OVU(5$@
z-Q5Cz`R+0lc_mClpz(lQp+!Y{xq$nv8^O^;Ai#RHjkdj;N<8N6Z=mfpid^FKAGs<(
z@T-Q=jbqrV&NKy|AZ2%B!rum-4#u@ioHA?Hn(#aLt|4L72cf^|3)==t(ncjM&<FVy
zXQzva$8<G<6y65V0a-Z3%%kl{XfjEY28svTp1C{sVn_=x)li#Bpj@-Mo!-3`$P6j-
z0Pnl=2&R7*mJl4n9udcZGBPJr!<sCP_j#pnC8DWksCmh`>G3}suB7B%LO+9Z$I?$?
zt|9N2MsK{h>l^UArV1>~RYfak!PtocGMj)8@s7gTxwY8W0PN8Ulr^nd+vIG^n453F
z@kROy3tab2f_Yg+&RFk&%-!{5KBS&y`}QAVJWzuf3kyRB0GbFLdtH<Fn?=y6wfGn@
zVZIiaOVw$|;?Vw?<l347zXYGbm_)!d<E&EgAT~wi2rzHt&%f}PXO)S&e=Y}=KbHb)
zq5Rh+hLTWzskjjzs0U|2Ctt2y4O<_P3ut+_Qkhc<!=QpEXgENR-yON&r!#njVE<z}
zSv%d}eKpJ!iLLQSzm$kG_%1iJ#Vcq5S}kEqhB=4Gk{sCU7Ys#@e1?7`G87IXNoP<n
z=qkx<Dn+cpuW`=YM%r8OX^S#|mYM>K**_Fqr*`^SFU*;;3%Xt&3$v&~B!zOqiS_#x
z3kS>c&$Tx4ox4Jjgc(EaJ2ad~e$XL97h4+>!Ufg_V<8GaadjWU5ju`jy?>}ZmriD7
z1H8WhCUa{(?gC>BqN29CAjqJugrU#?Z$e?{<ebo_oUs=f<P;qQ;;f$tw1<rd>Vi{~
zxI$;`^aaXUqV_VfQ5(Y%$E|#OZY<xyOCohIs=-0wy7mQOQh(8nTzK4qd{k&RE-<1l
z7!k@`rqKctZq6B?%&PxT$;FA43&7*VcsgT4C6gKxP(4|>FiwZ{nud}@yar+_3@0LM
zuC*|Tbv2C76LB#EF6FHBft~M;qb3XI1D(m2ZU`GSDcg6<N~d&X*`u_<zTtL+Bjw<)
z?U=izB@LsFSRoa2=-2f$2mI5hW5MGR(LY(Ki0k9+qG)aiicwM$Sba(i#N4D1Pdlx-
zAmxVpZ$jKh_(HosU+rxEJT73iAp*p;F0trm0P84+zU>O_bJO{<QbMqs<OW7iwBa8p
z%Rj9Nf5EXxaoMfqS}#Bt(T^E)3JXOU9n*kUP71$ELGKi6TRcI~Pz#OI`S(iiKu_Gf
z4U`dzml$w&uYL`HV1HnfpR%dr9we!4mDyvI!3cPmo$5U+f4)|ykrf<PfC+6S`#KSa
zvZMsTS;FrkNDEqJGD25E*oUmxg||y+o#=!P<`kg9?_v=H=j#&Rk0S_dzbd*AuAvje
zt1Y1gh|_@cju!9Qa7q^?A(Wr3ZW-DT2VMj7(A4MX&*=%Rc`lSCMxz)kE+E^AKyC)m
z6a=fs+SOTFCN6=HjULc4D7u-h%BRCwviJ1e*~t^3q-^_~qj`V-JEV0OxhhHZSbWdy
z-B1UR&|(<&f%+5$$Pt$>)7u$N5g;uS0(2MB==T`EL*oFr4kEkYRAxa(W(QP(iQ8@g
z=Fp(}lioy_=eFAib@(~N^qF`4)2M)ji$Im{(y6crHb^e+8OUmX@gk@J{Tlzk4p7h7
z!5O+nzaj{YxD3Tt5!|Og>adeBJ7OYna)yqCeNJY62z_vJ4}CD&tfHk`A3RcI!g?(#
zvR~5;%s186(7)(YbHnJ+9(AtWaeyE9ArudclD)RZfen_t{Oey=MkCN)Xn5q+a*Gll
zE>89yr;p<rQqhqreFHz11y+x%VL?K8UXX-^hSB0xNbP!Hz_q$M=nWi_ndxBa%nlO<
zt2alDyB={)2R12}U4Mtsd+9(#*J>8_>z#4l;Yb{E{T(K+9Z~6gJIn)*c=xMV`&u3y
z*|e|S*JNxtvx6pzlG+&O+hGKn&k^npA00ZggEq&??<!Sf5dOE2+DiEU3H)1q&2gay
zX8FEcS|6ZU=VgKItiE4{C2gb(Vyl#hUC^Ro2HYee>Q5_q%wiF6&LV#LC}srAxi5E#
zb@b?HTRvP(sLjdB^$sBmAD0-3uhE&baOvTO4@g^XH31RBjG<FZ20F6?f$vV@G@%X~
z3Un7A1HgcI$aKBCegIbJA5AQb4k{9<`>fu*ct<awFuRyQBZ;P#l3gZFV`r2H%^-l3
zD-m&TdAw)rywF$xvYF2*9D7Q-G=VEWhs)9QcTAL<<O#>eps51_IA~(^IA~f87Kz;$
zhR_P4$$<$N=g-PsZB_mS^kM^8DRYuGWv)y75QL~52pC%`jy}(g;WxqUX|nh=kZNM_
zqj-c^d<D1+gu!{;v`K@r-#cV^I3%Q!rVx>A+g3~R*@87B53$Ej>FYO5<S}YG0^u!$
zctfvTX!`c>LonQ;&RYb+$WWh5RFpS7iDEk>UEM+G$Kd9%^u1G2SPNj+--mos7e7NJ
zypL@?5^D$n`Kaw8-@_KiIijb<n<iewMj~no=1Owlqd2s}KL$%90&xz&xz36Kh(S1z
z4tOZ2HSH46yE~8>*DxHSx44OjA_l7<rfUiv$>;eo80^X<STHUhfc@oIR5>&b$EY}#
zu?pKyxRZfI>*R{-xgp_1SKp!QdTdfmP`!4;U<~!LS2a<+jIv(8r^=G?0M)C)0((sM
zsXRs;gx(wbG(QIjE){pme!_Vnhi3I>f+fJ&1NT_OyYe0ys<mCf2*DY-^WZ5K9j<oH
z@*o;p%kT9e(hAqAD}i4dB0t0<$=XNYDa6}e<`UPavU06@80Fe*ZIs9|v(UV~Yq|U(
zS<6px8mxQtJT|*~>qSBZow4~V-a#ArE86`P2NCqn?|sEzu_b$9vaN0ycvhg$jD<Db
zW!qdhrOFH)2Q=5OKuDeRH4{L_CT(Cph=hAJX!OKwC)*B0LwiS5(mS?v*aFPgAKQhC
zAK5s-UvN-3@#@=|fe>2R74O*URsj{xOKo-c;{g`Rb$4?@yRGhf{BY1#SB?kTdZ&^G
z`%r_~l9x*Y#Hz0Y1<;T$H-}T+!LmoXtI2@$trqdNA76?m+vWlR{U8E#)m)WTaa<W6
zDEO+;0-lfk(@Gfo?G7R8^`Ta?4fd3lS&p+cC-U;L=7qf<Vh;nsV7WP-ih(K~f5YBG
z{(>fw-QzH(d^^*rxF%#E<Q07N67+Ubf|adlUV|TZS)TUY^5hb+7lsa~GJO)DPYMn)
zb^<JO;cEs4!C?a4&<(tpfsd%G+XD@>GtS)aTfNs<=^vubJ?Jmq8F-`?i4BV$YPkKO
zhT;C=e*_vS!C$<qVR%gm)p$;z_$z<$k;Wm{A5ijbn{Gs<_dE9Zi`yT%Jn)kus#nOQ
z7QYcLXn)OsPl4I#^cTOO79X)~8jxMwUh@eaDd|X7dDy$9iikjnF^~#N&Jr9+dmchS
zDWE~z@0oZ-&5+VSDFC>JQr0!$8&n>%^kxVnhq$Mp)mgU_=~od#mk8qcNnQ5_p10TH
z&xAIYc$bq%;-|M=bUwAI32$O69<i0ic#v*#{p%=MEokzu+r<w%{ft^I_=lfSss+3J
z>j)94Y}R3mLVYQg15G*PyB~(V?})nyz4wT?gMZsaIsYCMZu~+`vC}>y^m<@h6X8fi
zJrcEg!2ITEszn=@ysHIK+PFm5E_$LO_wJ@ADibXNVL756$T@Ky>H+a0OcW6H&Uud`
z-tt{OqNA!Q8C@94?rQ8q|KdhwEqxr>OJkviciw-}LI`)ilvU9p?!FL`DngQHZV?3+
zg34zoOAC7v@0Xx7KtT%}eV7KRhplpEXV?erg4AR64#2zl%;6n&L&=%Lhy)0`o-<1_
zk`eBYo(`K1%tw~ojuu<AkO&ER*nNF-BNp2U&3f!|-?8K<##IVQP(6`7>KL{N-mDV1
z9-38FwG-Mdo}7rt*$yEWQi#Q$OCX_?sI5g?JSAbwg3lz^jAggP_8YTO6-yr0qtm|K
z7`DkM*in$Y+L#AZkM#r(x!+dzXLK9!B#Np??nLU}zyoY1vn$eZuPXr!>n})Gr=?*~
zlhsECE1<A?U=0YE|4Dt0T}Haxzu4*?K|;+8PkZM6d1uZ5|FY`>GjFiu(t-7gq2h69
zjMSYNUTJNHH{QU^gpcvd&tQ}yX+WFdqmMvB6a3<z3L$9gDOeTS>ZSuB*7{RYZ$*~F
zD2uqvrzlySMr~43A^}*p^RBuJ2UTQ*xdQ-Xb%>&sE3zxn;M)W#j^Z@iBhTSM+EYY-
z8GMxTU#}^U<ewn&vjZ~+XygwQ|H2kPJ%zQ~)0RNwL&F>z;SzUZ%hR(4aEAkDxd3$X
zrijUxnkTIf$Ci|UBColmB$S{Vc663v%a$&0OkkT;Dt=4)GJGq3i3d8V3YK%%z@oK-
zOx?M6U~FaS(N!cD)&2$>cz?k$7$ESL@)CUKC`h-}eTW)jvs|1^mm{d(#M1yJ1!4gr
z(kt(%(~fY1qP3AL8<e+~Kyx}sR;M+&zRva)S?DI&sl&wfFgRNmMAnbm61i2{xK(cX
zrcbNzrAYw3f>uGylFATo74d>z!1e=u99<$}kA*Hp<6tKU!xtA|(!<_k;>)Me?+C3*
zYRfbK9(j5kJ{Kzz&{UxjdQ$=!Nl$2sa0*pOMSGnh)$S>A$4O#}1s$lZHM<~{l=O2r
zsWotCJ2qZmUzu-;+GE7K<o4niP+7=){;jWwg^tH#*qg!BXcjrLG%+3$5mwDuw)Ady
z_e5XcfvH!*v;8bY%j;>UOIll=>)1CR)TjA00t`)!n&zZI;KX=F!t<AmKxzJxUY+N!
zzyr_URE&^Bp1-Nx^EaL5FGa~f`*hFWRDJ$pe`=`7SrhJnz21tc(R26Ucj)F`bN6m)
zxgK*@JqS(GT><kAE{~x^)CIYR%cw|{N3$0tfrkyD0ftoc4^<aKtVFzQmZLo6#YO;=
zgNeuRPRp){stLMStj8sFGOpph-Yf@taWoBTI|emkJtAK9ZUE?dZHRst2vH*fc2p^c
zXi#)wg2M6sEm)_@)waN$$0FUo=8G8J|2CF-bUb%IMq<ytABH?c@#xj}>&*t7^^3n$
zpl1Cofq%qiQLUwQJu=>Gn~U;on_V;gu)><#Nd_*^KS5t{=P6ulMbueHuP)EkZm0#J
z{eaZE@^hf*3=~>io@=oGl8N6(;vghiU7pNH;v6l}?($5HBxWPgx6?(y$u7^dNctrj
zaH`95Z6wi(#8S_7cn3U}{_Rm&P`b+lxn3*%GbCy_GhChtk@Pn;;PEcc#7N>6EpejD
zb5$g9gO)hO<(U*oe7GC!RF`LRBz?ICoaXXOi6q{kC1$xiGb4$!wZt5kry!DeT{qf1
zm!~k2K1Ktc>GI5qBo5RPi(H<fNa8o2$wrv%^4u6nY)7Kj2)N*SQzU(t27H^#b8{r|
zWi4@@%QHKY__UU|z~w29B>KD2E_Qk5MADaPz)M`7TOx@Iw8ScxCo7UTOG~`R<;jjD
zUek@X+U0?AMC-~C8nEK>I3kJhTH;EVCnu8FaYQ!4DwiiWlK3GKWh1Ps#UOWi5DHYo
z+$7=G)p7a_k@V-a^af7PLwX6R`NX4I`cF6=YpaH5Wp@#@gu6WXkt~FMr&+L$&gWd7
z8Ig3dNTzhUDdF;rkECCvrGtSWowONpkf(GP@eF5;!Lp@||4${V-*GxPgO>h@mi|1Y
zSDEZ2a%fp?S{4Z;uBrjZQY$*Cj^x7lkI3W(gYwi*mwgPn29-9pbOm}1mUC>z#1mMh
z=(>G?f32dPf9+y5|0WAB|E7u`((kpRl3&xsLjKJVrTjZy%;DdOqL6>5i0S-0Rb0!z
zX<`!pW{J!AH%E-duWx5wczK=}%1JZDApR{9CjOl*&S7Z}FL#NP{Ck@S@$WqGDgQ1I
zAM)>Fae#l9h}ZeIO0@9rJ>u{DTP<GZUq$?he^-hP{JTp08oxxsrdl+Q2vF)K8bx9)
zKhnSvEBKMdinxa#X>5o)_>qQ#DCI{Q0pezUq)r!k{P+w#PUA=FS8*jjQdf#Gc=YX@
zs9&$6dk3p6zK7Bcf485){wA+#3!q?rp98}%vZ*BgO}d~0+*%m%EzU>~%MXFqL2{`$
zfQ1Iv2ix1$!B(F)P>Ab#a!uPic;kJTHJ&o`&DeFCZtt4?SwobIOG+D!Ia5~IbFv?@
zPMp$UbY>0leu<k0IS%hBwK-62Y#iN?s<vj?q5YMoV{!n&({F+!-ioD(q#qZNpu&_j
z-maxg=al6Z$FyWlDHRhbMX#{$SSq6Ha?lfhh46ciW#6CXy*T^+RPRMlFZsQlZ3PxW
z9=smI)H4MwaSiN+=rr07h1z+qg^bHqAWwbyAJkITa*z4svtk!4d|*64(q^l75J|C{
zAU%|a_W7rv09zf-2}mEa9$)|>OMx^<O$7Ha;4rnsI)caLf#3)r_fNrOv2Fg*^it1Y
z1hEkwBdXetQ|*FNynNd9L<bTFP$E`OJFl)1cpTDwJ97pVoKj#IvlT^@``!wN9)|1)
zJ?BM@mfEvZR$WwkHv6HZ+Tavu+7bB98w_1nd)9$~eI0=sW23EMuzH3LHop#iq9#$B
zkggRbf7H_cBD0!A4NQ$zgg82#uoyySK^F!{93Fhs^XfFIO;AiOh-f}y7|0%j7wnT$
z!!J{U2nbNejVadR5p95rZ}RhkPCtJ{1^cMEc?9il`9F@J8dxGb;!{CA4WT3|R4ueS
z;?uO0bDwicvLilSO9{%9R7ZS<mhzrVNpr-H*HZo|Q_>yr6Sb6=Ic0f<W7-r>DHZD}
zrF$sa`3wb0ZrIsjPvBpDD!V4to046Vh6^Z2THX0~9*fsvZ_H!y_hdqJ5K7~Z<v{dO
zhFRQ%WFC8M-T@^dhYAU`Lm^(1YOAAbJ^;B~f^<RiJ)}eo2M7(iAq=|TpJm&;JS#8*
z(pC!2t~zMA9sY>LvKbJzlJ&GVk%o0=1_Z5PdfKa68sw~t^|WV^CRfcFkZDr&<cBrT
zbeD&GUvM!GYH5(O+<IE2mIg6v1gBwLxwRYR6)w;4QrwfLMb)8!Ug`4Orh{ItrA=^o
z=IUufwKNE62;(D{s_>x*l~=huI7F4n0?Aa#NiNT=dfGc$+GLlfL{Dqt&vOQ~DH$c=
zsqb)cLhSfVHtTEr+a+GYFO*Y3H<HyEY5mW;asA9Yu$OH-^Uj@o7Lx!>A)clIY={T=
z2jTCHX8+9yC9dYd8nDwpgP0QrlaYd4#nUYaqq>gxIZiEfm6*DYCLI#Sb?f?4!<z`J
zFcI0Ccv5yA!5HG1$OtgM{rsW->8NRlgD~+3DW;0<aU^N#u_RWH6_I-E;py;^lY@~T
z(T?$%Id)vyRgsY*bxMzOiD$=AkI=bJj>>0>W?ZiNK;4@)LNVvx;-%y1<BfwG2Idz+
zM{L5mAP)cR4XI+^WS|*a4z_b5v{74SBFBAi;O1DVX2<7pxp3MaxY5uUhx51rIJ2|;
z$(#{7frf>a3F$b#YfRv*R-<i$IphB02$iriUAL~yY(f?CaHO@Wu(S-UY&s4YOf7I5
z0jFC9mVM^~IUV8aaJMBqMI39woP-^M7e*F#7>W3^LxWZ)%)x#xWC|=aIx4I++hB>b
z8`_}9o9C;|6)kJ#Sjd6^%5vIN7N+?NQ}s=iwR;0zs-D0ZU<nwrGN<a5{d8?~0%R^K
zO3AHykrPH}3EotXh1|h-28CB(-?&%q%_j%Er%J`n!}y5x1q;P3hiJzrVfjEI3Y@p8
z?*U8IpMl#Ywtb@2>s9FVpjHe0ofQr6w*`~`N=L(!fKse*BGQ?>>=?$QZhMUDZlQ6F
z%@gm)&xv0VU)%hCXb|3<crn#BpM{?u1OR}^&fdm>b-TUqk-<-9Q{%w=+Oy78@wI1f
zud&ny@2Dm33V9)+H_NK1W+6F77;nL7>`>oZ)A~O&px5z%q-SNIpw6WhCexjWOXHy&
zh>x>FEP)MyY!Sq&Ewto?t|2gzOt0RqRWYSZi~$O2+JQdwj=v_&Uz3VUHO(T94gE=7
zOwKL_e~1RuEtP%8qUq8~r$BQ!y73s3NTugePecl*%e9jNbL+%G%s#U28O^pisp_?5
zD%{{Bu@qjto`XdLF0d?8_MuI+ZhP{BsEvM9nNp||r;2+t#sk2lj-nc?o&7h-0gPCy
zuTmP(lm8aIQPQ@_MzPhyuHB#`uydQnQJWfNn*xEdoj<x(h^<;fT4`*f`e?n-t)~ku
zao$_71_N>;j;_$?*NO*WP0#1S-r?bE(bjQjYw^-js&t{%dkKA*rj}Yx?=X6k%Y+~7
zmU?A?Z;#PmY5^=_8E!G4gmJsz)~OC!whNPJt4l@4YGpf#%*+pIvQ7q}q=`l!XD_rX
z1CvOsg#)nAtn7tW#Q{P`>oiUB7(;0Q@=m3!$r`S2{-ITQG`x7dB|=0fQEDT^z?Hp_
zY=8O;A~s3fg%QxtDB{sQ4u%v_qx<<TyhggRZ%_0b-Sag9Z_^1JkX>l^Lck4;_SM+o
zu)|klH7HkVP?L11;V!C1hF%SA8l+N-_niibS_NnloyM6hT*Y$ePmeLL%Je@@G-NU~
z#2A4X0%ot7hFJ@m^mTyZ6NVnyl;<zBi!J)sBb$7csfIiv5h8eDvJww9Vkl7^CO$ex
zXPH&DrwA{c>=0hiB!e;!`UCZ%VtzicyO<^2IANGjXzxb#m_&8>=_piDBr=1;q!Pa+
zZ5M2jJ0yR>-4h<z=++=2(i;LZ@&Ywx|7Z%yprlYJX?vMxSXKKzoMdl3OG}#-p4?Dr
zWS3C(9KMHTrN=}8ZDcqUFG|oBz8Z@`TFjPu@~RHLjqg{>@A2jL)Eme-U+oR_(Kh<X
zB}U_;(2blig)%0TiRCy*zi|5xCsIN~+t3%NfxhgdV&&oT>%Kyj)YpBX+B5Hu+&%7f
z^}M(jM34o$1xA~7dy%~+EZ`@}R=1O%$!C(Sjsy<d<~E2If{zkybvRN7<D+YcDZ6+H
zven@(47L-*0fts0JZPogf}gZXe^Feef2CQiutO31Lp7JU)vL)Cx+!MyURt#UYl|nZ
zL~OpB8xvoT)eZDbBPc03Gz9ro#EPgmm_I8MJ$dLCR~51R@bWZHONFVE9Tg)Tu5hTt
zdB`Cg89cD{5<W}fmH9W#f!PDXu&IT292~g9l)qPcrJ7LbFe=k*n})!Gb;1s1NalX5
z=)c(!xb32_x&s^~&9(`l6*k>y#K-oYNFhIAFKblp>;LOg`L){^3w1U!<7}JUaj`O~
zTocMQ#V!}Nx@u=|A=V<*=!jER+BU)8PuzqKWhib}owog^DKOJOAwlZNA-`?YQdA+|
z7$f^645yI|GV)`6{f^8AA^9eJ4HM4@a&WR%YH=#$F91`WW=FnRd4MU&H^(UJ#}ZjQ
zkj2Nyu9Dda$WDlneWT1yM0Vl@NEyqdSRDBlofJz9WE9B_)gAz317c)<B(o91HGg1?
zY;y95uLmJ}&;>~O1;A9N)sb)2NwLO2wp1cZ0<xqS*|*AU1cl8X93wkZX4{Z$y8tOx
zCdKZ^x9g<XV<0<<TaBm}rb7OZ7};$y`yymt6eIh2nLQNQLoYze8i1+JWJi9oPD*kN
zWb-Am6d+59k)0#6har1djO<Y|8^O}@FTMaNr)l~)QyuxKIw`3!knIH&T4gwp4Udsc
zekPGU0@)*CWIraeM<RRV1xUG@NlA0$r|G1m#Xwddk&ObfQ8BVFli9Eq&mSElJ5grC
zI46J11xRU!80KqE_w7jceU<JDr`vqL#QJJ_+w`6<JjV9p?Z^&iY@N5+iMBi9$UmYy
z2!ya_S$ZT!nLh(GvOWXIXECxBnSB)5M`L8qmD!&o`|}G>JPBZ`Q#kU4-gqJgGK)kO
z1hQa^>>vaVQ2GV3zlf2&M`nkR9l8K18%X$c9&_X$(@8lN1KDbc>`Nf~GDh}7nSC7D
z$75vQAhW+h_E#4mC6!6(aO8LBq;$kU_BCV&RQm*worsZrKxTi9?5|^Fzaq0wBKzb8
zNMWNa=P5`2DV>y4F_6*SNs#glkbM&)yGUlAM)v6#*;mNyGsr%30aD@sraC(v`JFl`
zoiUIdA|YtgQe11vKN};Pq(x*SR%8CRF|uj<g6wn1KG!cP-XE#XE=PWsa<^PDy8vm6
zT3;c1lmp3kK=NJREI3bJdLCKl`(}-^ZF0g6?It+Hgg8SA3SA76%e9xqq!!irsU!bW
z<%hELPy6Ee5Jg~G=hL+AMOYKE^eNpd>se&!(>b=d;9aXaKX>GR&U^z?dnrxr-eSvq
zNW{nzC_mO*&XL*u&E-)tTc69Z>9Ez)m0Z;sa^#2fu|QM1Hz|7o1yYWIlvs25Z!){T
zx%`;S*5`76q}<J<eC5dhN+*S;c5hM&Br=G4`LX8mWiq?Jxtu7o^|{<1Dec%Ss?L*+
z{F6E<G_`w^@*1GfDyKk7thxMancd%9UL~{jx!fNqbD5Mgj{Gw^DKxcvlQLN%>jWvW
z=CWO8_cxbMU>lB#=ySP0QYeV1>OAMjKc|yIQ@b}Qzmv$iKnl(0-r4msTc6Xtvnyq`
zKCk;D<pu`R=QxaV@!n&e2S*`Ab$;T=|3oMDlNi*Hhji5ZQxHqjzc)1pWwy=&dS|~X
zvvoGmAF;GISDi;4`A2!agEcITwbI`$vFR&)@4{xw?EcunRWe&=2mR5Kz_fhf$p1ob
zmRKu&JB~>~rM}YlCZ$<s_s0%?E3<WW&>ty30+{MN?#Mr`lM-vCpDU5+D}8TLu9eyS
zv4e|cw$2XvBc+410?w};`Csd##9Hb101B<5uk^i1`IF4<j~)C(X6x*rKT_^wQcgSa
zPwS+_TIp|)$n=%IH!0~dyFYedl-W8v=#P{SI;mB@b>x4mlM-vCe+5uz6@8`eP0AB8
zyFYfYTxRR+pg&S>0a&H#JYVU^KX0qM0dK)CS>iqH$Un@p>M&?H9AgTn$O1mW43EVC
zPM^6T19(qn>kObj@?Hd(>io=+|C!!Wu_XOQiA)y_dbiZwGP~dTFSGUe-ybQLGAThv
zeo!YRmZTp(&DGYWgWjaH%j|yVzs%O>e}AO>3Sg@9OGo~fIw`RveMKVErGwt2%$3>w
z&VQM$&;R~Nu`wwp9Qh}7QesK^L0k*RFw&)i-lXi2+5OIcnXS+N{z$0<nCkq-k^hZO
zN-Rl#p+u%j2fazTL1y<m|7Es5|NA55>?tDUtRw%dPD(6E{{W!SD!O#go0L~%cE9sq
zX6y66KT__MU^*Y@UC1pmTN4Xxbq37psEtC9!uR3qbM2p;hJqKIhG{Q54a2ZIAAtAQ
z{^~UR@g?lkH#rS!|L8PK#`_q&8}NSS4^G4H{^B$|{x_$=yU}U52k*o2J^=4uyy7$*
ze%@(#_|Hy5&5KUMBD|O4Jr3_*ql|Y@#-8V#h99GhAK<+R@2qAgdn7x>p@Sy*Gq?gl
z^tm_X&y(`!M)~t<GPYsG@C|G!@uc4#Tt@1TDUPd^Rklr2Y@3EpIH{y$en`5;mcW9M
zVf7>)>+fRyMKx5J<;Iu*MG^qY%<{OH0GCSus58q=02tDv2(p@|V&aIFYO`ahS*fvY
zsx|}I92497tWc<q2S9vG0P>;=3<&^8hzalu36KbY#D3{nM!de-;#g{7df@53+!7Pp
zjS?G_n&ksx0*sdcP-~VCj0un^0R{nJP`~tiLVAU2t7EB^>9GRX8WY>Atf#0>0zgts
zfF~sYberXaV*;#@0MKrh+xn&FR;I`9SZXJF%I#=zdrWLsNNiAVmJf*uV37b&aF$;b
z6X0{!F;qjvSw6I1dgw~ATAl1zn#}E!4B+IL*nTOoLC0C15))vh1b~*ad{|6?G6?`Z
zXZgkb(sK>dlj>NS%JifHI5j4=0TSDA0K}evg7q5JBLFZWCWbZ%FcJVG`=#f%08*>d
z981%bW$3Fk0H^f<hTY<7WR61Ss92eckvSTfqhn>xK;{@^j_H#r=eT#QX@_aggl`?+
z+I;J<Cor{{-e%qA2N?g*Z616R+^jYD7T#3X5r_MTvedQ-3#0qUgs=I82z*JN5Pc0g
z|Ao@93vz!JD{~7nA@jJ8#>)IPG9mG}Kkt*N^P=TYWT-Hcatj5`K_m#krr?k&ngm<@
z99DQ#V*}(4#ss)Z0zl?*e-RVFDghw%xI_JtLuO~H>zKoROeg19Ok~?x(@>2~ko(J+
z08dK*$UW}kF#%Rf07yRWulglt9+T7IaChkBbi_n9MIysS$bBLvfK38W`+gl0;5h3L
zsv-TjPxea=d+>0ba=1^?L~}zHsy-DH+cOdyc0=xOVgfuQ0U!XmPsapUC;=b>xzF@V
zPd0#5SEs|>sW(q&Ok_hOGVF-lXJZ0%u)?7lLXi90m;i4}0Ej{EbN!O@M^Z|-x*YB<
zIx(fT?gFeWYAo09_g;%egB;}ku5T8&O7(eUok!Nt9$zVD_=W?k$b+bM<Av0o^MfTx
zG^amxxIfj~<Wr#QJE6W~jY2i{K0N9B0vwV6`o!-G@OKFid-Ch^`{w{sU7tJLpX=lh
zFX)TxUWp9*pMDrXu>|O!0ZfztIs>3{?rs*Mlat8ggdFaWP7d*czT|w&nuTiYf!whf
zz%~icKLdD50_Y4NHaRN+q`JOxxWCfLAzsjz9G66feULjg1DGrU`ey)xC4kNVVv`dj
z?S$*3!+laGhj>9>a++DgP>uQT?q~i>fD6oj382sa*yP;K<eYK1&oH|IFQ_J7(3hU8
zB{pn`+_4#eT>|va0KQ^9LWBXtre_a;RM$C&`<&i9#0&b8^IM4wn<8caeF4@;0G$o=
z1z0QrbY>8n90vo@jr=^Y1nio?etK$2kMn5%#Nqx#C-{??1fO8#LpAiI?%2#?uLS6y
zS-c<tbY>BoVA7DNuA>h3QJowT8v54$dlH#0IP?W@N`U^EMY;sgnMG`J&XLx@^@YRz
zg-%Xv!QlWaA*yx3p)WZvNr3*D#ZM)G&Mab+a}Seq+~Gd1lM`ETm?@Fzf<s?&#z}zw
znMIrg(3wSSay}wOhU;sG`)i$?*n-1GRz^ewhrZ-IE&=*y7WYd4oms>tXAYBd+TlLU
zya0@&I=0|&DPwc@&n(Om0L-E~HnaGYwGnPGi)xY<V$-t?K&tCohx=Q-d14C=KWAjs
zy5P{ad2lZqGq}2cW^tPY(3wSSawY?)QguOt>V^jO6c2wqL7tfKwXN=5@PVl1uztU-
zekgPR!EMYR4m;e3xly5Htv(!cM(#byL_*E#j?F<{kO2L2kcTCJ&Ou_=;w}KGuFo9q
z&-6y6El1xrb4p~o<k1%(T>|vaLBjAvgWBpGBsMu807!KO9qyn`PVBA6OA?tbdGsac
zrxKul4pJ=vbPf`moST`PFCFeLb#h{FJ;q67y5!N9oHz;4KL<H{f?G%DAhF5$2Y^)9
z35WXx4<2xn>ezdapGj=G=+T#+WfDN&d-MfxO8}jP#HME=)ANnP{f*u{v9}&(iA)zg
z`j+-7jKxtIee2N|V21?I#f{kHJOv=tb=KiNtCJIZ>*1Bi`rmroCIR~AAn?`~%|T+5
zGgty?T*OvK#>qWdLfszX20MbU(j+X#RUYWQpots?+f8bMXq!=6{g<o<aU#EzEI<1K
zz<&ocgHC8FOUe4PF95kh001<Vb6^1~U6c2eUi_p+=}8FHEt(K-6;S9z^vS$g5-=w&
z^z?tilP>YhF$SwiA%UAr#i%|A91vWD1Twp=XnCN?X}Ei*)39Qf)9~aQPD9srr{Pcw
zA`i4dr;PU>;(a#W=i&Xq*PVuswmA)3cQ_5ZTcK~><21~{`y{+ykN5d_-@esp_)W9Z
z@TY$|4R7pr8m8dgj`uXY=i>b@|8N@Cpv(Zu{0qv|Zw&o+_l49jUlc;1HhEF#M4%7`
z$aGT(-<RR8D!EgoINr^OEYRvWj~l6-wza>5ifqkUx(Kjrj4$^da{Z?aD=YPVZu1?r
zInFO!<h3kZR1tg<mqE|8L4Aa<Db2w+-zO%-ELe8s$!EhEPbBYk8Xi^KUZY%J(7X(R
z@=T^(;f(t6Z^IdHMj(Uo@%ubpAI-v_CHUWf|Ks+-A8cY{p|N3>v9T}?cpGNLAtIfx
zjj_KG!H%<l2rNSxeXVi6wm72U_YtT^B@F6M6t)>Dw;_@X9D_heC(7->e}Vt)_<s=p
z_u~I9{8wi_e8fNVkt6sO_!am)hTmiO?Z9sbeox`|6n;DL+lk*U{B{M*0aV>!>M(U`
z&7p>=(i8DN3;$>1KZe-CMY~%br5Z;+%i3!xps`1bpgDBdfO2(LU{!XP)(IKiosjh1
z$!EJz?u+~A#Ny2RXz9gx1TMW#&dNTSKz;HGXaNKPKe`jo0{`uJX)H92+t)D5<U7u-
z_Z7F^OHrtaHVvk`ua3w0zT#eJh=P1H3Jx_u4YfWyZt{IaJ!@NAia8eb1#m9`4fo)`
zg8!@VzYhO@g8z@>|8w|{woXG^r{Omhzp405#&0ry?f6BYx`(a!wc^);UkiTC_%-+J
z8`(xpz_$zk590qZ!mamBp$RPz)ffDZ+D7#Q>IN8@)}!w<?>2}HQzjl52HSr)C-&ub
z!siV9q1)<lo5)Z#<$&&-UG1bB3s;gNdm8y(ugXAHnRLaJj8wQ?Pl2aDb4D_yZy+?`
zcU|JIGSR?^U0UKVW#SRsMJU@~K)g<ZtV3e?1`FPBcObdy4a%hSdpO;U^!4-ycOP%b
z9z|fvESK1W%<wdNgFpAJ1PNcBxZF1p_dCY3r<vh_;!d{*;ct&2xV($+E+m{rm`d+}
zHO08kkZuTNuP3^IcZy3qNGMSLrQyA}V~&Tk^+X>shq^?CmT7@k2+j{rqiTu*Egddy
z$jc3GL@)p}I&>F8b0Y-)j{AF#w^oft$cY-noiKTm*PnuW;m~;g@h9=iNHGg0anZ5t
z4uFy2S_VA8=(nEH-y8PA)j&nddiv3?^1;zH!t~kM;nNl95poeVR&>G*Q*=Bs>5@l=
z4-S$gCQb_}0`ge#RxilgWx-p}!Vd-C!)PeoMvw3UxqOsZ-wXIE2^{=2;NWeC+$H_y
z_iz}5%ko8bxFDMiqHUWEmA+2rGDL#yyj{k4-i+u(iM<lx^*V0WtT5uTZ^os;O8Cx<
zuXOBEw%IoCwQX*mup{IQSL04*2U;6Gq0r(MzO4dhe4n$Y)^s>k8Yv7QP=*1E4*ZP!
z5;kAc`RK^Y><U=kPh#Ke9D8{+`N;ej(U)I6b-qVPu>xFmM{jVWgzmykSjT(H2Wt>Q
zjr=9;vu!r@s*H_l7}qOt#*F;@?)tqg>(>&g-$k-oG>}9()Z(~WvuM8NkeK_}!Z%81
zBKQIz4o!tP0Ozc6@WEb!*-8Gdam#ls@-VT-pg(#zi5+#6E1<S%!&CQ}KbImo!B^~i
zxLRCcb$q;HwAhOKRP6Fpx^TS-M-QmF+R7Jv=yow2E#uOvKQ8o+y2rLTq0(=3ItvRc
zaW&d>v-db$pMLB;fNY@<BJFbV%iPp%#3Ga4c-hygnox!*=2COX%Unr`Ck&6?;rH0_
znBw%rxkSfxG_|E`>nXT)@AAN*3Bh2B;=)}QoFFZoLLl``t5VoYF9yLTZT?~Egy2!C
z3zi;mfxY-Sy4xRut9^A^2j(9tjT59101A??6?B#KfM1shd;ta5gHSVA0v|=d0yx31
z1SRA@z&~m)KF0ku^34=dB(BiRQZXCf!4qnwPkO?SD-)TLcoS%KmBQ_*%6&>Vw_v!7
z`_wMPOvPn!n&d6!z|<OiYVd9fGj-x`m_@!ziBN-YTr6MsM21iqiXL@e_;4gfzRBT}
zc(>yOjhBTjmDz)(OL2>IDQ@w84VT^}dFsKk5^>|TM0Pm>t0du5_6**(X#PS9t160r
zMbueCN4f7XlPfXsLy47+J<5>0JlkeVC3%*w>=C8Pcg&8vVay1A{#!7DVmq88zwR9x
zJsT1Eki2@xu<hiAE1FS#D4Qf2Ub3PF{=}-hDfyA(t>q)cMZG?LT7De50ZzfQ=UK@8
z7rDISDU~#zri49oZMfP@Y4|TW2%@pFM}$8{*oZy4^jN$@=kDY?T;u%$e$r^l_MNa!
zIbp|8OLr8OimQl0${-!uY`p|?xyNk1?-M!add*gvKAES>aJvsZPHylM;f423brkuB
zr?mqUsI)YEfPJYbw~;T37l2t#pjKrD^5hh{j-W6Ouf-H9b&0a8<rG>yB-`7ips~8d
zHNV4bK?%5iPlb5bN6#q&7(xJ{4!BWnCwIe-U5?5XTfj)(UOvgwJ}-0snG<kbjXSAe
zruV>sp7aGQIZCIj9frZb(5JQ+V2pCYk3gPhye7DIA<l5bcfNhaUB2AK5c5smn|-Yi
z^5OfBj8+`+E+nqF4xTx7Lwcb=Tf`2p%%JD)D1VE9S*<vNU`<1ije*`F2Qzrn9i@ov
zF>QPzMHyIymQxQRadvj@Gl)N+WR{9q6M%~D)-3~fhf4wq_UOW+tOEPI&kSRi0t)7m
z2+)GhlNe4(kT7bCXuT{FC#0An9ynfKK3?-L36IbBr-`!Tk#TPYt>V+e+~v5^?nH~&
zVa;;_6GUN;IPYS9m#YWSeHL-&emQy|=_EV;eLw6i;L*eMafz_W3bN~cox3BJ1Y&*K
z#24^k*JdD((G<>%1d`TOXvr-2!T*2ky?b0#Rrf!BfB}Z<prVpujS6O>hSxx}Kp4an
zMGz1b5oHh%f#4jG5*-_+7{=-Hls@*9Wq0jjmU+Jc8h9)5lJ^RW>`dd6l%%NWeBW!I
zGXto7zMtRg_51zzo7Zcfb7tQ!Yp=c5+H0>}94H<|s7!iL6mf>5D!ohxaZ6>*O;?k*
zITDd^U8QPojFUp&7zwHbgU?;S;I9fMMzn(&?>=G~E3n;+x2u#T;mizi|EE|N)U#an
zC%{P1cb}2H41k*W8NA^qmOP10HNj*SE~KUwzb^ZGMUokxCb2^LpDJEPL|B8o*HrW*
zRA;|92eI_Hml{Q!V?{{xl37FcFBwAkVg_3y<-Y0=u=$<<7<a)uSBh`m<L}7noqGc8
z30~~vkGq}z1hnDW;X_U^sp{hm3KKVW+&JI+ME~Q)?(`R=9lI*wpwoy$;jU5yb}<dE
zjlM#tmAGTF7mK@quL=GUw->`&Fx|iGOctaqdIEa(-$k#q!QMHjlf}KoD^|9k+wIbq
z{UjlmIxD(2fJnA0Z!wZBe1^ZuK;|E^VKsJ#jXol37LSIxL={T%N=-@;KlwMM^%mbi
zmi62qf|i%?Y2rGPR*d>Zs^Jm0O9zVuRC+&$Rs7qy8Wu|);;Smk*aU0U&n>!Rfn9G~
zCGMW0)?gZeLZv)$Nn3|F58>M!?>#LkH6_o9teGYm({YnFtYi}gL_&WU7*QGKP?C5h
zD9AlVCo8ON&>d0iDy0~N&?OfO=zUxDLI&Q{tdpx*vn*5bpDlJY;O({}#ib0l+i(4a
z{a&DbeS8}#b4C2(&ATv%aD|`>*9zG-5j6q43V=xvW2AH-BXECm8@o?LSKf-_=X6C$
zX3-s)Nti}?QIX!_fsbr9WCcREEkShclpK~I$sD9z*n)Qo3=jKzRSN@Qo|tYx_a?L}
z8z%k}r-b*zJh2}vP}b4g<+ybMzGuT{dJx#pAmwq(@e9X)KYrHhkkE1iwyO}!A2DKr
z{BB%!IbQ4=fq13LVpRm<F7}ubf`H!BgZxKaz?TwV-Z#$QIIBO;nGTyyn$A%<b6^1Z
zdX#r0@1`%qWi~;!iHap&rY@DvHps%Nt=_n52K0I^tTC`#r3DucxBWIZX=dUc1#36Z
z3soAWE#6z)f}zkqX+uu9Z)f>$b|&ch1n)??a=~;C*X=A<a>8JMjFX!+q{_t>uQVMK
z%aJY`359NA3lZ&MgK)pau}x2jS(G8J*jfI)<8J2_SC&BUtlbm}?3;O$t+Wx<m|--=
zX7eU!Xc)JU+K6$_MS2=OV9#duJj$LTdp5A=diFesr?~o!yF_A+67x|Hi6^nseb-_2
z1d~9wXE!3!Z9<0a_@H@!A-32&*@eQ9!kiRwV=Ve=r=N`g*v9t;I_G-;DPMZT)Le7d
zwdRtWi}x17%&;GK_<B^(a^Y2q_YlRySW3v7E*VxZ{Eb+(*CT^;Dg(^`Q0iw@73uh@
z>Si>YMGcGwI)Y?0RI}%2cvh~uif6?MEP<$1H1L)baqR(kt5$Y{XVqbyMXkFzqtr*W
zw^p@Prv}rnZ&aDgl*__uC`DE%BjJ|^<1dOiQsxnLstV9*xOyQiqDJ-N=U8_j^VxMJ
z3Ja9pOdX0^ypEUAAoZx!(^4NxeNTOC;gJxf>P0o(py<Mn45{OT;^KIJ{81TF5bCjo
zqFW~6Q*WkEh2<&7x07WAzE?1R9p<ei$Pwgh3Bb4R)*xXp*&t$rZ(81F+(R{iOvHQ>
z$NS|RZ>%Lx%Wv>88R&CiwWn(DVO+Y~U}XO-M=A1$)Gp3ajc>|#K<9iZkn(+(<xBr;
zmQ^fA`tFz`{kJ^Ja+$~{>u%-nF}hp%e1Ps&smd@9{!)WDd|8qxT139kBU<)^@WaRk
z&k}|psR4eL!H#dWMUC$&m$9RTKDy_eMhZQn?Mcx?a?(3E>OXb_i!hu;_>g+mwjARn
z<$aMNWT`61iow`iRmD+y7sA{Hy#-apZh9|KReVkF8L&o<xBf!{7`zVB%WT+$SAuG5
zZGt$s6qCSEU1cCxOym2R%<J%B-a;TNuEg#@l}of#a7DGMVkK!ib&QdR7?!6|0zpb^
zmg?o-vAU=#NX1p(nxuO98b%)0HSyHrLPI}*Pa2#uE>2~58OPamwd#5Xi?k+5^Fivi
zNc|of3eLQ?1+VR7H^sQN37<y8TX?F>8u-*3C=QGOa27hDe8WIJ6^bra8P>qF!%!LV
zw>?<!Y!5QA8G$>k1lJwZ%>W!Jq95|<0Gd=bZdb()D)>3Ccc%ku7!BlUV$XU5^(?i*
z@*LvmMRff4s1q7nMmrrKS#8wl|4`ulMew1jZ4=sX_XCoc4b<cWGs72ji2+e!bP3=i
z^=!gYA=YkH6WS_S#CjHwJf(zEtt`V(kjdRK4Ul{+E*Zw{Wuv6#5d^FDaYi$>f%k{C
zu;Z;A8ga!1^^~B+(unVO6C4dr5H}43s8|kBl-45E%YUPARmCMd^{raf%5BVlf$F8<
zw8XaN@{9DX1-QwywNPbv6JgicFzJk28mZ(=c_`3uYqIGHM}@^H*U7G@s^TFiF-b|(
zymz*Vp~!5bn^h@&;{IMouUI~$-enjkQtB3<P|n0WZq#r(s^-V2rpsN^gjQ2(o8=__
z2wily76{oAEa5+Aof*#HYMGmny;m?ud><jpB28Ne;#Sn9BVvk}gHf$wNIcDG_zVGg
zbmz98Gy=vg1gNI7R!=Ew%3uyF*=VSwkO^%@!%BR}v(dJNa5AQmjg=vRUV@F~VrD6l
z5^ST2Fbv|O9QxnZVA@0Q4inicenZnZzOOuIKzK?MJPB9RQ~Vn+Cy)4PX}Uc$%NGcN
zfZ-02mQbV<jz|$hgf8-^pqZHc1R_ZmqL_?Q-OL}r#~P#;OJGD4C;^aNVWQEdm0=qa
z)w8AiQPfHvZD}}wATb0B5wnU#P)w^coI+Nim4@%}sy8&?2}s~96A%YOh6E}@Jmp-k
zxL%{?1Eg-bUIQ{nwQoY3RYCLS4G=dI+Q`%84ane5v`6Y~II+CvQiY+qqzlNY6WopS
z?G2OX!7G4}^QKmuAHN{?U%7V&VCbc1`1b}wL7f4^RPVJPR@zvl%`i~PpvA`UiJ^MA
z8wK-2Ol*3-k(dDM{OkWlLux|xH^Yr<8E~|k&M$LwVZB-DJH@)kthp9a7b{l`{UFl}
zTi6_(2iS5qeWwc#<x_2J+M3w2&M7p~`qad1Jq$LvMbe!Z*FqRhI^Jp>$dFb0+?9}(
ze1C>3yFWvUE0v_*vmOJ0E}xAtG_iTQK9V0US+DYt#%hQ)V7(JB{|T{rt#{_TNFhMw
zG=50Rnb@iwvX-WJ$XfE1;J{nxX=4<hnayLIk`ZT7r{Fs2EfmYNhpj#=&}=5q5Hk@j
zC03^Ky`?XO&^0wFFI37zd`QYczlTsTs?G2U<crJZnOM)sOU5=go0)n&A<vD>51I|H
z;7@EqteB0>Z-!xof#J-PSKGEwpp?HkzD2wURU7>tO3kGSTdaY4Gp&y{z#SU`WX9IZ
zEr^z;-$UQrQhQx_s;gR#v4}D{;H}?7=z_zYms{uq_y2)t{gC;knb<O4<x<I(<O*1Q
zGBFCNs=;y=Erl##OEuEKBHtc*yYt<}>>ng4gG33ZSZ<({2N1v##w7EA%(B}bRg$H?
z51Vjg>gOo#G~DoCa5M_83a$Z;`;|5n!67GArTY>6UKOhxTcoOR!zk-+;{(>UxUnU?
za%>W>7;(btGUCK|-R%<ILwB1z4#DG46zLvqKs>`CmEjQHUuBJ{<>SZZ@<YZJ@{f%b
z_~5Zi_`YLj@O{Rd=O5DD&gK1ew+nfd?zX^t>TWOLapmU>VGa@nAdx>3`5}=v5-E|$
zUJBCop|k;%wi~7OrL?FC#lek}Fs2o8P?!W8f2M;Y;{AbMzzPcyBQ*Z&)xt;<?tPDd
z0>JCl)=?41apCL~Z&R}Wb|M4%A7sYH8g85;fx?aR5r-x7(>VEN#bvQ$_OmN)iS_xv
zGiV2&1c<Pk7XH6w(2|G^`kxpy@OFAm33IJct)^*hvZQ9kl?Jr8ooj=z!p^wS4$26d
z*?a&nXJpgEXt+Y(dseb%GkX&LFz%uC&B&&*cm?Z%-h2@r@S$Y`qR0{A78r?S0!s;E
z#i;KPi<mY-0*q-piVr)}_Gg!NrtM}J`tSb<)Ari`j%mw91tWe^Rb;Y?(!?^ZEutrz
z&C;B95`4qiR8&=HP$ftz4HQLhriqJ}D81yyuED=5KO@5$#yu7IXWX-iJqbZot|IJ4
z%wH20Iq>IhRm>+Amld;lZQQaO5mYOuAh@b_uzKu_QdK7=kan9)45M{m1V>x|BN#1V
zJX~R7IEU$`dooy6u^%6LR(YF{nCEF`>u*Ae*v(8mkDZfcp(f_13kwp0!&$3^?m3a5
zuFZzf8<6EBh)M&CYg|h$wE9aGmKNJ^<|oYUkn@g}5MHsh4f)5Jr#VUFlyMccOD<p_
z1i&ll7>X`DNM-mHAH+m3aEV|P6%k?7yQaUS(oBr}2S1zXL~OefHxRKz?y47kRG{5{
zk~8*}Dx|8o;fvjnwS<vXh8tK?<vvgue#alnIfUxXG#(fn9bR_Wl?F<J=4R%<4o}Ml
z#Fu&EiNq6+(u+zy7({+|M*38->?pp{vdr<VuoUClV=ehx7T{B&L39`q%M3>>XUk-K
zgLzdM_8~+9G@-kmO)`avy-bm9mgf=Jp_h{|zdHAF$Nrs6{reIqG}gals6(Q0(8o*g
zr*j|IG%Cz1U1_Yt!&McuJ#AwQe%_!Y%P_zJ!c7&fBN1+bt!5*mF;(W(ID6vY)v4Po
z6?7Vfg?8kuSx_#5jC-iREpzb6T3glL+OGGu);gv`Q**Fh{bN&A6<sih_g0ZgQkkz|
z7eF3m%WwELK2%rX8isZZl6V8-O4qUYXE}l}iG1i-aaP++2-4lUUnH;w{xV4k#Az{7
zv?n1Fh?PAtd8LVLDL{~2BrwnMt+u4#8~0X|NMIR>1Y+$;b&jMX5QT{ZmN`KrfC!8v
zWg-EFBrIJiLKa_!)ltCe_zYIZMOYnku{vrc1Y|Z4-exSnjF?A2OvM;~!b55NqbBn!
z_%JitLL7;+6D9*q)G8QUq&IQ@8n9xWqWK`2WtEqs3$UJAUcg_wFklnrn5tr(3tCRX
zfS)nas)|*3k}#lKp7R`tl%9c8hSY&?Aem6D+PGGS;w1Da^K$ZBHq;^`X@08=TPah<
znax+d_!+A%q2Eq0Y*>Uy^-dTVuJUy@;1)09D;Qx*aspvV``B6YJNS1J5D);g3kc*D
zzyQm++`ZsxnM<C;`)>p%N?cJ-&`EmHT~&d7Kqde<ju>dTR2C5zs*0CUKY6-$>y)Ev
zTV$JcvZIxCkOW9f23jfOxgf`k72J)(EZvczG-+*HXk1e)MzWD8%~~jn+#_M2B`QJ8
z7STQ?VVGrHOG~#k>7T1J*ioG)?yruj;x>dj?ZrtF3gcQTr;~Kz2qZ>w8TZfm5JwTG
z2-h&S%F$v~#h>V|4tR)v0&<OrV|=L0Hc^*4<QjfVu3=oe4i&H@pil|;EgF1w5^4O<
z6O+I)6y8jvahn0|Pk1tsMj-QtNMj-Lfk*>FHv(daH6CYT4KlpxV06Dm98>}WyB$v%
zz>t%LNZ<!Ix~R=M(b4FiAo#ea(Lz7RFsmv;P*}$?&U3MRK*AmwHHV7+xJZa3C##W>
zR4YkxQjLnqk`wwgx=EvLc@h~qq$X5*CN*J`WP>C$S&iyTHCGwPPM^tq1<_1SrfCX&
zjnc^eSt3!1PW4hw6Km|Om8wFC+E{YYk>L#gcLWDXyl0@IiT9@YhAMGZA0dcjGpHwd
z$z7K&EroQcAzKrz`Qa=DQ3@1o*Zb7XEXA^;CMIOE%WJm#le~uJ1>`kEkU_2HeY>=V
zO1Hl07=<*jT8>eW`xa%I;#!Sn9#OFr8x2eFA!AnC79IXD@eS1if*Z=vY@oO{#)jIZ
zH@VoICg}}ZTS<CzS%(_)pt&fa(8rNs6D5@-IHROAB*8fa-vvTnkkR+XWMUjIdrXPd
z*M$uc{A3seDzY)bfK(rgJ93hGo4~c638OGRoGjRJfoPXd7@<{0-Sof!OR*kBtWNNb
zWe)Iu5HYJ*HYC{Dj(-sB>|mv=#}k0VSw6srqmx?z9*$17V|G2FIlx`;s&_)MoFxLN
zyc2XOEF00F4J0Dsvt;0`nBOt?)%WKvJk}{^AS=#t3H9ofv#Vt~ayG4$NF4%lOBOuV
zt5p@WgA0ksR2dd~bVk?vK%Nop=4hY){WVZkoJ9;firmLpUcz5Fy9Z$Z5=UMK=_JU#
zxNv2MytZ*x4eAynXLdhcebkZH();t`W9$fod&9cqAM=>)$Rq6jJcLp0z3Xm#$nqjV
z90PM{HA<Q$Zn`S3HK5FKCd0zaO4y0Y5ho;|isXAooFTbgME(C#ZbvhRv*Qkw%31G`
z+ff8NhOo=+2qu}_jsk6r3+O1fqxmbz?V52bg<Wn(OPNWQ+pWa+KgjJUnvqR=RmG2}
z4`g><Om?TLpxY(ymET#|#YAj$^{pUiE;KVzMxGKCcZt5S_fk9QAfYaPDz4ADe@8-E
z^sGVkPMA5e5L~8$WO~;cH!(XrjAVup$AlJ#%y4k{9>P4x@*m}fi2t`;Zb&Vam?|g1
zN0xo5Ds&hGJ(B}Knn(sc9w1F51mTb-(jSL3k^VrMNCQNJX<AFnLkJ@yLe`S+dL~F@
z1S{K6B|+lmKM1rSNTdj+J?(*JGvz1lK)3{74-h0)Q;cV%9P~_bff}!YC*MhsNH78A
zMVpyE9D>B9_(OukK0nF8O@c)7Btas*&8(6nNE}H;?4i_lK_ZphQIN=L;)7@qB+~c&
zf<zYMoBy)b>X~4H2@+{R6TgRv3H^uk39Tl^9N;hkld*$<H@tz_NAiWY5YA(;=<TjD
zEMk?qh(At3noL+ugPf5GDVI(#t)kW5Y+#&UT-!wc;fZ|jiG09B-ghGJHIY|MoTxH9
zhCGaZ`dX#cm0pTieYIZ%6K)z=@@3!Hn2c0{5a)9D5jM+5Nb>-ZkBRk`LrghgF^MT(
zsr(a$pWuFnoA6f@H|QFSLc#q4=ks?Im*<zGCXK22*c>6*7L>EPiSY;R%2~Ae{|R6T
z>SFsH`dPii!Hx(_g-6`JiwUBv4W@%o%`%T=Tl={8^ztJ$m)%Sdz)bd4=r1|(bqV78
z&`?e@rbAQkdW@UGi62IKOg+gHw+tL$R|??LHKrf~)hfDvxd}Jc^ACwf>cPjxHyM@U
zMtn)SWBT|e+r7$GKVnB_KV^E3GL<wrrcJ{I1tf=sA|mwSQd6M7E54@!EF8n7B)CRP
zoaxBZRBt+C#TA**7;S?_W-F@Y2W=fvVXPOrNi_pr@<<RTBTbt1n5nL&)zzdhkkW(H
zVslKWLZ`lio0d$;kQ(DU9{-$3>g79k(NEvmjJV%kXq3A<Q2etFzG_Z9jknY;Q=RFw
zrGfe##FnGq`-=65VGI*LcSMxb7sGc--G5N({=m-N?}hFkM%^zA5MPio$iF9p)*UPZ
z{b8JHv(8Eo@A}dpmA9E(uA?bVJg%7SpnJ4|c9stK88sJ;$&J=t;=_*I!~raSef&k6
zKEBa0G~ly2ljfo+xlxQn53tdRK<~?=V{`o)+M_u{lZcZ%;SE(OV-#%)`sgQmE9;{I
zD9G9ce-!2@e+0pc$RbmeQlF{dj83u~mUPjs$9hMm3S}vx8|hy@P~_QKW0Uk$_H@!y
z8SuXmdGe2lkAH)U>O09{cWjrs54wa;(~X4s+cth21m^3V1Z72a+3@ww!cZWPWl90J
z{CWU!rQxoKSlpW(zDyzbM;hI1zEo|K8?VAm=|1qlyqiVm=x}W!?n8-H=o_!<4?5v)
z6x04-QiHQzf~w<O0;x~hP#dP|=#9ISp%~joeCdE)yNBseioM#ahx>26#n1GBTj)2+
zT8A|lPSVJ2x_2hMj;t|O-r^sWp#5|Qbu$nG%(CH>2k#g5u+SB-3}rXh5r=U52Q<8)
zjm#!cv)Et2tkpC_kxzI;isYWH+UkpF9W|Qi!j8kF@~qnGmLMKWrV3&B%jwic<!5NG
z{-)Ei;P80ArRotUpoFSgRhx(@J}o8BgDKmQw!Wbnu?0WqYeldm#p<v*PJC~Zj?y#5
zJuP}3cdL<_n<Wk3qIN%Z)F3GwyM!91_(wQz41(#Bd6ZO5%5TUz&#7~1Dg#Bb?sRD9
z`N{oxN}3)rOhQMpePaN6uHmB+xM+@_svlS66wTem-D>*B!Bx{Az@Om09cvJ0ElPnF
zB+dz$<CW8ZfVN9`ae;muC3Y6h+cgN62*->pL#SH2vg^T|%o-)MRJ-p+5~L(GM3WE8
z{icn7FU6ePoQQjxS`wz&x>vJYc{7wNaflPQjn5Ig6w#_t?@Glmg76nC5ITah@wWhH
z*MYXsEx6B;fm)C_x)um2R1CyR-bEvj6W4EXObA>6tQ2dUvCL_j@?6A^aXg19*P3wg
zZG003nZN=v7CLN`ARZ!E+(BIcMNi>EM<fC{7m!G!c=slt5;-k|4qF;&{H~+wy$@e_
z#!>ckevC>b9mzDD-RS_@#G|9RP2zSrmtdBQ{Wt;Ca~;DLkOXB^9M=-XjAFoWx^ge|
z2o#*Bo8m?N4uUGDW&UQ32!-Ax@%>+EbrL~IS$#|^4kA#sO)*2?=!6!kOe>C($5usv
zh1hIec?&6AYMN=M#<br;?2$<$>bFaI4l|}JYs!^SxD*r6H*CHqh&vPINzoPRh<VPH
znzqXHJ9V17T$;7J_*S(YkVhP<OmC~x+~J~-BQEMGQkaul^IQ_A(Q1}rD`FKEKZ7Q&
z{y-3kI|>2BbX)sYO)C$@xcHkjjY_W?xr*`4G+7)+$MoaqOcIAlrcs*X_UUnjTNl=4
zq$#QtF`F>9atAUvhF)qmu0a#rXh^Ku?bL(hQPNAb4KU}U0GMT)6j9mzHQsEX+N_bJ
z<On6!-vNoFy;|f?ZGi46CIcWFdaZPdVDDhygad(4V|D4PX_GZrH7(Sk$hl3mE#A9-
zja`?ORfW|98=8mqx7VUado3_pQT9~!W(M0v#k7s*NOgA9NPNgu$aBi^y91CLBh`Uv
z$x`!OsV5J3%cZ7Umg7GIEd7;G=-Xe{`01cS-)u~8tW3XKuW9hcup84)@gBzXvvnGq
zA5>m6XKB(^rrXS##su;4VNkLM{P;*j)|E|cQUSqjC;5`$pwI=Iv61ea;2N%J<Q2Mj
zn+`V|HoAoD--%qRiKo`_6XN)xar^*r<zCFx0KKnGEW{U1Q`wcT+hDXFn}`+;Y&|Y{
zw?1^eM#(FYGl!i2sMoY2n@G@M<)EDW^Ze3qlfV;jgW&qW`RT<-;ob1^R%`*|MtJMP
z^_pg4ovhvQL5sB28z0mxqUD-FeeFcXT>sh~93&JGHTwuAmPhcRSU(0svh>I}(&kcC
zyp9y(IOL=<K+7Ja#1)p=<M<%ShIIfwSUG*hQO$YPI1bV;er`mq$^g=W5>TNiuU^xl
z!<V5Rda6F#L22AL-akH|;?NRzgisu?|6Nzax8O^$A|B0k;`H&&3Q0!d;!)nRUTqIo
zTK$nP$v><gt@q>IrBr_6DmM}g68`Qb_TOXgXg7S-a{-9W#1({P$BhI&#&M(;NuS&%
zTrq1Ju)s8f(4^%9N6nfjn?+cswj*J6|AW|k4*~2r@xd#!kR98WQ*xw2+6N>YX&U`c
z^ypn_(MS+q-wh-w=HO}KEIfMCCN$Z)zk-_KtXj<fH3L&~ia3q3V98=A*)?I47yz$&
z4%<_l^?iM-v)~4JjI?^_TU`VKO&mpS!u@aqTrerzObw(5e9P73zlun(H0T4TRRMet
zIaN+}R@@hkU~`OfkWQ_ujK8DP-ifP>$G)TvMP0AasVcq%WT1zf`DgN+LC~k7m^VWR
zKX@B8B8c{f#FxRJtO(O10UwW0?Rdygu%6-0Il?Tq(ZHEv4AurD0ZQqmD{t#1_yd7L
zkb&qg4`d+#&iy#)H(GpB${hbUU)R`BflyRnAI-!aTqFRk+z$%gn#TV1f~!ZopVh@f
z1BB_<zdoXdj~Pec#XmNVi^QuR{y9tk@S=YTEDQ)!a6%v8b|-63n(ZWtU~u38KWD28
z(8mo8C}MX^lPv&XR3Z`=V5<!4@drfA4z#nne+{zZB2^XJ@S;y0Ukb%$Lj{X-1-slY
zl;IO2wb)nRs#qMVZ*^4}vf-uLtGPSE1`*}}{DJaiB3|_x(RP<!Y!<S6t@E5&XS@Z0
z7MKCATD~3_1-)Z}NB>%Q0ghD_FHtYM&{Bq=OOTkNi&+5ZLaaN^{6YW-E)7EkSCora
zckSbZG-|o!B7A`Vsh-F2iKwa<<^lXsSJjIN_>jvFw3n}{h=#9J2Y1O6)j%ECC6`PO
z4<m}h8|aR^c+lmP;w<2nG%+3Q4?AB9L!TtG97k;x0+aHb5hdZV_DYisfsH{FYw9Q|
z$odAlhpH~4Bvd=3KEWI_jy3w5IJPXXM(dE?r8T_#%JK^Ua^jWcV@xz12*{m+s+7ay
z@9His4^{qC3_6kES7Y(3zT~d^dAaA|N|4fbgua*oN|3wA_TB?h$X20Ks!in*N--T{
zz_gShmBo%pETfe?-0v+kulS8H4U|`K86%-A)Ls~A#~;(dPyAy!I43+>tRbyP%NmHn
zfla>a&`c%}Fe-da``M8k@Ws_cz5R;wc*M)!OJMd9Yqxc#ET??xpe&0S3*(muih)i~
z(UNHfWoHDE#Citq)XvXzB~U8A7;%>$D;6U^W0-XxoegW`L&AlNd>_z*#KFfm;SdAP
zFUYJsbmbK~v_@zWUnb4b{X{mdKt+k0Z=_m3jz3i6CTNtD2SnVJh~nO&FUrX4kzovz
z*snJ~k=E^cYnom~T!l<N^QXgwKoEx-|KR1A40QWyBwx!K)y{0AMG2;Q@oQ}9u|_r8
z8wJzZm>-QeZs~$tMG+eq`$t?yJ;H@1ejqijx5=G>m;_rgpfOlLtDX>d(iq9&5$UuK
z!-X9g{cbeh4g`P%aRpNZ!ba03Q#YV2$+$p(LoOixM)UbVKnL=fae$)OcL92d*#p3l
z+ZG4ii^E};G1V|v=veFkP<_%cies^00!bjQs^S2}kcd#rc6>_*bT@*#VAPAO1~mo(
z33N`!+(GieR)7IXWUB&0#U=NoQv6e@DM*z95d`>D4;+rS5qok-we|S*80S6;V|**0
zOU4ZXRa;fpW1QfV-l{TqAq`?>o32?d)4(JvtGbRkDYzogI<w{y<#i(4>#&qpHV&7@
zw`NBa`4xNP*|pRy+oj0gIvU?SibL@XC>;c!Ue+Mhw&Yf`xAXO=K7PCp@-X(1%CWkr
zwjHKCOhPNXRZ;~f$Te)^<EVxxyv;hNswdho<|O}Ddo2)qf-$}=J0gx%AdXcaj#VIz
zRUnR4AWo`4+y793He3{qe7+O<W<wm{fl^flu!6RZLjiF>2IK*_{I$_JjslwH5w-qy
zAL~r`6)T4Wh&o!5IE#J-LShHGzs&*$DsKtT=ma@Wy-9EY$iX2!+BLTG`fKq`kP{;E
zn>#}e_puB)Z4U0AL5_71$v8mPgosi1B>DEEe@GGz`VM2k*+J%@YHQ8)n6N$yK8i-;
z5r{TM9FjaTI?FyJ!w(u|6*p!-4#*#}`blF|o$Yl{h8QFUf27*l5PLml46;;HmZYB9
zv#N(QzSjuEz`JF8)y5(!vCn>Fvf_0%D049%tVa77wDBwDzOm}>8-o>WB4Z3leKjRD
zIgiWZa=z{f^DE$S;;@IA4%BV>6=O6xNO2=dL3_?LH#vSd4(j=v;@U<W6c1(Gh5Bob
zpDAHrqA4LLQS?Uy{Q+e<q9}3N&(G*g2JtyM)ekSf<b=GtIlECvmTeTgWnIbxSVV&q
zS?`k%VhuFSP{P<egi-t${nDVpIEoj+2Mu04#5{7b$$PVLa*($%&Rf59Gsvf&IZmjP
zDQ2@$oXAq+BLg4SZB*?nBhjg-PypJ3%gM7$?Ei`~1=Ruk?KE#wqIdW-rQph%wm)gw
zuIb=atzPm6GVwM}QW~Qb#)aO=(-LN+rKioprQx;)yO=D{l*}}L^X|?tYOWZQn<AQF
z48)C?Er@!p;N@fyHl$6J;3()s_BDulN3kQ&kBS!&!x$je;w9rc57bzk@&N-sl2J`V
zDn{$4n#VHXGY+n>_0^@WDh_)8xLsRZE#<P*QJghz1=NvXA|wIKSj0&v7$BGHHO?x7
z4U7N|tMX4&MFu%nH?&r2?&5G{T%ID04~!FhO|>@~puzr-{^z^KWYDvqty?TBP$elq
z=qnDA%JO4n(LrlgZ}F}7S&gkDO|{2GBcyXR#V$q-u)Uu+2R2P0cx(aN@vwOI3+fVL
zip56u31X3KNLX@EF^E_|pD4wlP`WXxj4{3gP2lz+gP!g?*ram#?s}9Wj_0c;;(B>c
zJ|7^@FQ`<SRFRk)GWS^*<Ll}fmVOr(HLI#7`vz0QXo~oxJ)*Asu9M8OB66@Nl$j~!
z0E+n##q_twL@WYc#2Vn41PKwg3H%aF?zWL`w(kC*mPoGh9AZEq6mdkgvIw6Mup;x~
z0`hZrif=Y!>*G2H&ViOdl<Taj=m8!A)71y(aCPCHf~!ucu)65fw@v9SkQBM>H>N}2
z-i+gs`UVtDG@#SiUeK7rpRqo?ccn{o6gt=P3I%GK<01~0^fX5~>B2k(&nOD1bMdqa
z=y&TPo5n8>LJg8znKib~^%gws8ytd0UoLX|Q_?;S&M)f9ZJzv&Iu{?4J6N^K$!@OJ
z;E41V@Oc!lF3%~?23sf?qpHgci8F5n;zy%C;Tk{H^AiXObvL<7t&gNOI$K?<oKSbu
z{t$5K7yz_UWuO*PA0EVeQk552b+>5C3-~jlI#RXu5G?1kDwcOc;l;i%T;~<3+mVCG
z$?;-UH`Ug|s=Y?~ixV9_qW*INDw6P8pN#@1t#CPOjdTD^P&C+z%4x1kJ*v8yRF%_x
zgW=&K*#8ZP4moS>dgJUHc~0O1(XvfY5dzSG5DZCgIS%Sx@FuDm_>r#5wsj{lG#UUF
z(m^W^L<Q3H@mC<rYJvF)-aSFg$%Gf^9_+QL3?{--nr4e$dYgK}O3HrKsu~v(rWhyp
z2({J$DtrMI+4}z(EWpwrC)g@dX6tVPGDs5@Up~Al+vpV?9T|zimp05nP}SUxs402a
zj4Qe+S08<~0-<@HOin>yRDr~Lu+%c3IGZ)C{|G3v7@#EE0cBvezP#0w|0>UCMz+y~
zfTfjyg+6ZLBiQ6#7vna-(>jQN2PT&&vVlPlXl<o9xrz0$<gb)6iFSZcZvvqJlgiBd
zDz3W`2>Ci&mDwf^MMXzrRDjhiuVMw0z&Ou!4t7L(ic7&YNa&W?YA}Xca%q)oU8FLk
z;lr4I#WEXjm=u{syLEm!+(pp$Q-2{5B-<11ElwuJ1DJc5BP+s9d(lswY*+LZ`y&EG
z;vSB85*M)QZ3zt?>a<7Ks{iegn%~?^v_}`twn+Cu`fXbdbkX}z6cG6LU>=a$F1#da
z*SaY|%zzmq+Q6ahxiD<c^=PM_mqF(NG!Vo{)*hmPrDE%bndS4K{nCxFeZqF+Hc+nA
zcr`UX5#Hcy(#e9#PsG{OV`pikqZ-o2WA$45YGh5a+eQh46_T3cRKfDLB=J`m2LXz2
zgs{ZRRMMvZ!vp-1)x{(@cAJ9Hh2iCmf?raq-3H3n*qERz#l@~vHyjv9hmFl9<XhUn
zs^~1n;N*|YysWrFSJ|}hv0Qh}!Cs0}3a`xb6xU-2)5N_~Nwp6iJw#O^SUD*QknUlW
zEuR)++VjR$XF-7)*Pfy$J6a{3uFhV$suf<@E1Aw-_R6&f**~TooV}8r63$-v`EGc=
z^)k}{GzpMdD~$3{(@+FBLGB}+1B4D-UV@~Ag5yolC(nb;x?iTlW&`_2qh}b16gWVD
zXC9QtC=&R+NT|l(%V-!3e{7Zm+n8BQ?DJIP5B5I>y?)nrRNBpm_kNc;0<1{?WN(N(
z4|*Lo`jC%IT{~De%sN~5!ARducEgLTaAecu=)mMj(I6dT_9ECun#>PQo7O%6@A|`T
zNRp`!Wl5I2MqHnONjNwqB~`NVqco1A7}m$7IjV16B6#LG&v>7Cy0X+H?Wv%-MW^z&
z(z{;h4{llTA|WbgiUhg}B;!GhX*_8<2wn(W2#kPP{)5=dG_qkE<Wn4Oj`2{AgJg{>
z?IFGeX4KRMNx=8@?njRT$JHyXy>Og69bf`h+M}NP;RpCaW3d$nMQn)p86>lGh=;gS
zvQVT>NeLGM1Vu`U)lKS~JR2G&1j>7D&8cEZ0dj+prmmg)t^rVO)?Oj%nKs+R4>9C&
z_hFMz?(%D?)a8NL3+<RVL4-LF%<F&$^?iHdtw@ZG99S!DsY>>*nC{d^cvxTV$MIdk
za+!>@oYFo=e^3E91%t-W;jRZ|33N>4KH4n40Z?ma$>e}MP9$3{9sFG!33473fCMD7
z>yQ9Ti(JAJ4+=nnM>_jE<+x*wl+!?p+%Ypp7?NQ_uXB(~d$Obd5QbzR%sVD?$srwd
zxwKXP5Qb#W-Wx<(TXM2F{}6^`(Vc^w^Jx63y9Yfe013Kw_E$K1?<R0Thi;Vukl<2h
zf2AV<p{@=IqyQw?)XAR#6?Q+H#mr<{1zP|ugH|k2d;nZ4^v!D@?lLJEgQ5VLt30${
z1}bSooi^PZY^G9t3uEWlCe&XE1KuZeb5Oj22>}WQW*|x32o{9GU=DJKxDO0OM{&=j
zf3rm=3|nW|L~WowKPW()u#k#%c)CCDtuOa?UV0GEpyjpT;}3!+Fs8RuxlhpV{R~sU
zsZwKG7GTyKgtmbOhtCtl%k?N&I0(#Z?LvO0m+VtT-w3@1;Q(maA=m)JK4yG?vy~{`
z5KxKk6X1u;uqlReg<yDx0)=S&X_whLs>&UQNqlgaguIBEvGy~@`-jK-(*}brRPbjJ
z6k}%yo)eH4GLrV#-bggHrV=r2Oui_73V8%npiFO5jg0Y)*wHX1UjYFQ=>q0*^m+xa
zRPFs!|3|1bU;{xqKdq`}aOT*DRC{Y+*-})Siw;Ey{v{E>38=g>BK}J8v{KS%h|q||
z6Ce=}ht@<lcnfrrQ`1yDqSQ4)Xk0uPu@!_ogb0%+z!u-SUMWODc&YK@-C*$<2$u*{
z@PKp<0}K%G)x}hCb_S@ZLoRjQj#FqdSeMo+&ZePWvJm;d7j8M3+S9F92#-QPW;&!o
zyia&~OX)+!Fs#$em39I7{A9S$QXF1N9=659#69ocwO!W)IMs9gkd*ht_8i2;EjDWp
z_&W0*dTldyQd_L<6krrks^1*ID@3}jMkR~V4Gl&Q;57Sj?#4N)8`!M!Q*0ZaK@f!}
zw`ADO=)o+GgQg01WtKSI*{-h@o6pe<<n6YXXkuaZk_Z}0syLuipuCk#;!-(|Am;=8
zC*Hzp4#B0o?skYo8U4^Ha2oBPr$`c7W-HA9OK`%?09hFH2?*D;@!iDL>tNmomP$o4
zKCs3Zm9T&0SYf=|S7_-dca8#kNT_w4<`#GtTAk4IB<Qtzl7fg>kc4?EEmgN*Ou&)R
z$o7nAw#Ek-HD~F>t5MTn;-Fb~5o<J-ePjGlV|k;o{1n(8RYe9s(=_T7ku2bs6KtnV
zeI%tFeh%0NCt(KLB0?{oMhhk}FO5ln2>%oka(b`^X!Th!pVTax(_$lTESt6BZZioo
zlFTuq<@Nn>aW~{nrUM{0!|GuJ98+#cDzM8%B$XuACr!;b0sx7Rg*KHE#1TMlPyp<(
z@Dt^X&F-e~@+SVQSur{R>6^ruNrZE}vCcPj$_|xXZc0B2qkes;pg__YX~GA#O-S<w
z!E>?SZ=EGsL<}!KCHNEN?1;tc!;gjWFmW}Jsxqk@f+%EaPRi;es2^XO&?pW~LKJkW
z)k|M~(MIsyU<70}iB8!>acCONS~B!2jalsE4r4}w)Ra^b1y+2IhRb5q7pC5|Nh0-G
z;7&T?*x$fIF_HQ`f>FyGNX_i@@<-TQCL_E9#lU-#ufIPz=%KloWTXhz2a^GPq!gER
z!O${+E%fLm#VjkZjS^B+Qh$Oe)r-Ivp!k|qTiqp}4ESL6BCEW-5;A8+L^J<w2zUkS
zj*do-nW7b&w&B=rfyKvX!KpAtOx`nalWHhQdmjxKy!nfE<GCm2q+958G5TMgv*K21
z^|hP)BAc;)lDrOLtG>v%gEqy+S6IhkBatM~=y4_N*WP)nQ=BSC9AdL!S1;YK@?r4&
zQQ`5*QV;PM#qI}P+IVm9>H3@fO81h!>~|!BQq{Q)F;9V*s*R?_jkBhkBTn29y!E#{
z7Q5<dQz0>`4Xx}FWz)3L61rFk>OVZWt@u24ZXz_wVnyY{)^{o&npo8nQkO0hE8QnV
z+${b}>bP2O$z%c6O;3!0;AyBXcLTlWX>}zOM_W>;k$4+jAtNjp#zI`d4GKNwPLT)%
z&cv=c(4e1qsy!M4;Azi8+}R$Yze0v6Q?SZEES`h#p6$U(Qp4<*?frNF4Mo!z|A56O
zJ)rUt@S>4eh0swSQIdYvBS1bdrL1r5SGoi3CDA0h>jon8-EN%kw!hAOh`F@A%Zx$*
z+2|vD;-8QxJ`FsIT^blOX)x{A-=u!5p?<6ht%TI2Ef%sfnBOi{7*4?If4pCD9X#pX
zqt2ZZgIEpHfM@{@7HAdN>fE>~STC#ms(dSZOsP~t>Jku9SA2yjMb`RDT}&Mp;3=rW
zHQviTmqL3-SwfUJ8Bs(RN}Fm7$)84FWyrlvq11^Tg0au&2*!q$)k898;vUJ&nM_2l
zht$N$$zh?+aAFxo!Y@%gf{Lb@8VuLzzkiCji~UD9-wP(odjRnLp<XEizpeXcSQ@PU
zA*TgbuxVB=a1JL_YpcyMoRfV*fLcT%#xo8FrZfowrew7v``PyFskp#I5ytkU;!)fQ
zz6Xj5q$1@K?Zy4oUfgxLIHD@&fasG@g}fk9!`&z9m>Czy{QmCTZ2gtN9hWPzF%Nmd
zdF;TYUj(WT9~S^tR0zv++J2yxX?P_7kFzQOcYD{nQZP+5YxfS^s^krF6M_rBWwdt*
z`>Lc!2lVY{N)CuPv+Q9A2@}Ox@G~`}8IuF7T|rCP%74bnQ;UT9TehVwCLhWjR@hY)
zH&I5!F`UxG8;}4=<!NL2+3@l}sGj<oCSuz$5Jdswoq;hdDmU3rfEM5ki-61`8dNVY
z!W*+<nIg}{YLV7baHO=}q8(LK&Bw5)Iu|$U%Kw1y_YeL|Rf1E+3BIAqYYgzhn8S;|
zjEqDl3ZivSczM9GFp6CQUEWAbS7dEZbyZ3wVza!;0|}L54y#_^(Ml=tCF^&lQM9hp
zV(6Cy?OgE1r%h*}=0;W`u;XmoN1V9f!m>z-MZZQY`bcw3Z)HS%X*aPA9IWX8svIb<
z-(3>KmqC1x8eBVb4tbJQq1QHY`tn9jRk0q~LJr%=0O%qu^eB|%$Nxf4(e@RaG)<1$
z7%uS7EgRpV{LymxJ;bF{ej6;=&g>)~@V>7Kl6(LWhY|aNIoaeWm+whlr&xt(7E9m+
zA}Li&14{_CsYWpYA12M&G|LuL5h9Wc;pI>Vhf+l(6c?1zxZ@9rIcT8_r^BtyX&{4C
z6+1y-MnG`@CSXZAOBmxKrca=lPLa;ie*Fcg&moo+ApjAYScI_@0an=qVBW|(No;%?
zm9fy-T$&5zAZ(}^QYSL>h?=j*)Cc0Y!22eNn-D)${De|Lx?$EHbdVYsqC1irG9q|v
z0)_>9D9M=EYAoI~DpUfY6>%;jZvRP~fx%?kyq9CqOUY!f`{aH0y6b5cq$`D?;yYl^
zJJK#8#($t)US~<#?RB4qz3zGUB>tn4CALl?hJald(4F+sfuk5g{v2Hh^27R+Wci=G
z;T(4Vp;U}u$?m@rIZMPw$KBrl$#%D0@6;{b@&xof2yUsf2ml}lrE+26*e@rN#Iu_r
z$`HLl4}u4%Q!^bDoG>V7X8=f2TLnR&RJtUo?IE>`sQU;Q&6NnrwiIy<5!9^??3-ds
z#u=GLm|E|BnK~lSu5Lp6a-@B&L%I7Qj7<^GQ63Us@2F?aw}H49Wd`s;yM&=V(CZQc
zBmN<<<_`oud{3Y^^?_2#6)NPNa+Skarl{+K!dRY%?O|l<6xvOBE;(pRb<SHb04gar
zy`K-MD0qSn!I3#1v<H*+{C=jP4@>=|?+9%up0)*e=t`Y_mr{4~nIrE36T-(HeL9_m
zaP)$$`&rB>c~Nc`-QC6%0yV`F+$%Vw1P_wZ>90UXJ$1wdd2>_}bBJD8-617lDtHhT
zP|ebqt{lMV>S17jgZ&R<bYPl+kAji|sEUy0-nUehb?BAlAgNU^?8etFI&zZ)v*g`#
z&|nCdm*T~4BEfdb5J=zUt=fM0G;zQLhxX@iI>t|mg^&>uCxeSxmU=E%L|iLYnD)ca
zYaK8V4xK2)<-KUQNDq)7{RWl3#BKRW!}Zc*CRq_yDTc5-5FZd=ufh^k0b~|!1d4lz
zeh+gMyu@|*lJrj5$*LCXo`~DapTQ~EYb6VTNbEDH<xoepL^8WfHF^6SfEca&09{N9
zSU1kby#eV!|60f{P(9%>G0Ks>I1!(wW{D0kx}mQ9g%*aAuLHzT)D@c`Ql`dEMWF<2
zq*&;M$vc-O@AZSoNZMHP6R#0Bpyu*CW>`pZv(t&MVDWo|;>6c3yz)He7(=Dm99Kb;
z6E|S6&gitGWIuH0IQ7Nv!s@>~5M*Y#cS(1#Ldr0YGVH-9SL>$<q7U^$hXY?d+B@!5
zCeUCzN<QKUdp&@0?5KhEmq<5Gi&n9Xq`8!tGzUP8lMXF91uAqj=G4g!iWC=vh=FGj
znY!9fJPn%Pp%h__ClZ3@KiCR(0uM_UjhWQ{vH;sVL99cnG{S4W|4H%r4q2dQs8dJ1
zzl5ZH_H8|Z_zZ08&FomVg*1jb4MbmYG9q9ghCAX(BeC~+HWJp(+j{p8!oCD?!<m2V
z<0}kD$-8#Ppff9PR-VD9G3-IRcCB@CXJ4aSrOvk79Ao`p_Lp=*oaG~l-l0`d(CbK5
zZ7owkuR}6^dAxPSZ7vcbwFJC%c#p>$^e#Vu-q1;YnBGvQ8K;}5(3w2VlZORWb<zF2
zLU$PaqxI3wzR&9pJ6lCvree9(r#(d1S7)#RLEvZ;6_LK5Kp>c_=AgEZqGe#ffI#mV
zH5f9ERb;?8R*y%-8Z-3<sgu}ERZoJ35`aIi$Bgv-2|0lvp>5rjgc|ICg}m5>0$2w1
zNZpa`S2@yJJxxB8mYr8)z_E^iV-^ng0cfSVJSo-X38^ljctJlKy4%z<{lrJxYj#0m
zTEEn>ngJLsuc5*+kokyrR@z6@`U~;pjuV|e;?M0tyQF#ifWx!w^d^52HfO#k5Rwkh
z(z(p8GI?+ZbCez7v#P{b963G+ZmMxMkWJEEl$CV9T@tiOybkg4I3Ekq&bFw{Gq<Yg
z&awfXO;zsvqn_1#f7}d*YvIQHR_r$Bmr`fv%VX;CwI5$~V;Ti7y~Rm54vT(`ya(-G
z+lrlUoHNzTqFdXJ+JbqEjV+jvw=I}f5nHg1JuBF=l08?lCmlhs1;5UoYuNKG_FTuF
zAF$_o_WX=JH?il}?75vice5vLhT4K@f7BLykUdElXA5p%PhyH}!Drd?B6~KnXA^sh
z?0JPfo7uC4JzLqcjXk+U%0a=NO7`?-Pe1nbXU_ok3}nwDmMWh;v)FSkd(LK0Z}wEO
zr-D5>_H4tNWDBMXaBRVJgN`k@nLV$tr^ud7?Agek7ul1D1zYeb_9U6EE%+#V9%N5C
zU~LPggMYSQIw5Ea-p-!1<8BKc%*rKp-xf@izb%;7MO$zV{MiN$c2ks)5cG|JybQYp
zenL-B_#p4?w7tJLVJVve5Iobwrt?lXH#x#4ZaxNZi-Zy6@9-vWZg7>asiEQ!j8ER|
zCn#bkSQQYK#8&xM91{Kuw#p5<R<%}-L~+cMNI(**{dww~YMP?kYb3R6oS|;OdBi+t
z@#Rg3LkwTKGp>sJ43rxr<v2jKB8sg!rdI6Z_R`yW;6@?(iSIqfDhZ8kW>^!-(yEGT
zOjvM9jpE0Q@<49vP=cwvao1-_<2jNLf)e)@f2RgO$ek)S;>#3&5qjc;xam|{A~Ol)
zjWb@tS;KX(YT)J}5W+$RdU-#{Vl05r@2TN^rqNIACDkKUTt%6hW5PhVovPx-&K8RD
zW~Yj7tR~@_Q<5ogP#DN&shkb%kQGU2=Oi{Efe@{kxS|p*?E>okXLJO0v#R1r%*Pbg
zge38(>?^pNZd(Q+VBh3j<2j2OUt=HV)lvbyr2;TSj!U76r2<Hc+Z)Cih$TTy{z_#H
zLOtXIYLldBDPrBX=$TfRyBL~nU!Y|SWoa&kyQ+b3OFZjcD?l=nRONm0c$fa6;o|8R
zku1Q*LYZfX=F~XUZTaHv;!cDa15(70vB-~<?$272@*t;d3aNLggN%L@Wg@P$QkDEV
z_VLy-);VGsGSGv}f&uDpP&9+V*Twnd8|K4TiD|3=J5AFEl_Ox-9f6fuXb``~o48(4
zw~z5ZXVJ9ZKZhSNWQ_!s{Sbgnk8%KlSi2D+pr+VyhKNz?Mn-ex^WI$<6wR3xn_xR+
zoQb<0>8<BS!II=$@VIGdvOt%`F)22&P*wPnK;AP!d;$`+G@GUg8H%)x7;D`C5th)%
zBHKo8N)fAA9{cT;w-aQi_M)z+P86#so4`1bNi^|@3piqlbwsRqf?yaIlL!OF)E7GQ
z(Z5JN7na^i`>ZX}KCAT^;DF}vIZ7O#!Hreob8%FCijzt^j5sZ7oswFGT~yq=(0V=Q
z3Fs>KjjHMb1@!K!t+(iGX+5N#LU(f%V7<+Xoj+VcLOw2#vqnK>em|6>+Y5x;+Hv}n
z(Sk%u4hKwNCfUhII?ACGg2Yb@0FhAf6}&nw`GHb1KrUF5Z)m)sA7v9xGCDE=XpJb(
z9ui5JAU=nrY2s8oO}Gtly`Rtz8m|vu*LXYg0pcWh*V9o$P8`BM*-^LS5bVkok=J4v
z2(+c$IGaXvE+YT`zyGNR&i?Am6~pP^M7Y=C>fpYH`v7h(9R21sI&%qd^cxAkAh-ZH
zZ@9K5XYLBzdARZTPrvVAp6Vjp6}UDyB@kjSxS?=Q!X?7ZgDZx60q#F=8{ul<PQm>S
zcNeb5FV5T_R^$bD7_J(5eTMg2a4*0uhMNbM2sajP5S%}pGh8!lr8dGf!0m+l1nw2M
z#c;FXV&DeBIm2DCpj^0($p1aK*Ws4I6~N7gOMu&sJfFln6iyANgu8`4xdL|@t`2S!
z+*@!f;SM6dt#BW~-9_5h@qQLA>oW3&tAbk%w-N3j+-11yaEjlYxj?v)aItVR;IiSK
zg?k?E6}b1{zJ@yp*97M*qOafv!^OfS!sWp|54RF-4csSi+u;ttoq)Rt_ZJ+8I{Cr{
z!i|KBftwCD7mj{P)QNsGF&0zcf-ugta9_i{4fij&=i!RsvfxtSV&I0uMIydG-p+6>
z_-=$d1$O{$6Wm*HuftWsErH91qu<jgGYD?9TsHHRAJZ!%IscuJT*UX0+^2ak`du33
z2>xXBc&>K*c+S-r>F~SvW7QigCXyeOlmORy(wS@B<IF`DYcqLmOm4AuK3`Z|rXCnv
z@)*U7&n!yG)s{}pj?K;2%Dz%u@<3=&Zoz{4{3Vavg6w=`swv1)7i)Q;xS&KGoP|7P
z|4yE=-^7Aket5@#VMB)x9f35n;TCC2N-`H{Gv*a8;j-*C&6v+>PWfh|Mjifg3$%Pj
zabY2!k+V=+hH&~{Qly=qo0*@HU6`MxEzT&)<a0PFhm4Y(!eV~Dz;n?_6JsW4#7><u
zJxTsfNSrz$F)BU@S1Yiv=&AAXQ>SFKd&~Yw)1wlnCsV(6ir4Nf`^RXKCQYB35Hm4R
z6Fq%uV%k0N?+=#KMI|J}L`|m=m-1&B$7`k}KcGD3%}vgoH@hU4*A6MloWBsASAvd|
zv*42E7v~o7<O6A2bmGJWv^P!@6{AT^;u0oDO`kk*JOyzH$%z{Jo>)-AXXax_a|;X9
z*_r6=tf3TMP^c~u=I5xTK9$B^C|FofSX!WF^_1bG1aXt%CTRI2X%J%B7$jf_qPT3K
zU_Q&YppaK*E=J~=^YXPESCXU6&mS>-XjXnc7t4xN^Mz_@#MJf?Q$HG9@~C=<T3cLP
zSga0R61;><((<W=#R~zP4wxSJSjPxd7cD<=eqq7n!uhO84+@VeULY*e7Vsta1|n^Y
zwuE&cdIO<Se+=$e1maNR9vq1BrwQ8PvWW$}wm3U;zINcm1Z{CiZV68lt5a2@3#A#y
z`oCbl_CaNpl$0!m%SE<abRkV6KzZ)74~$EZC~DHw*y*WJiJI97WqeLyf&7XtEY{8r
z&Keq=HCrBVY6Rt*kTyMT>Xf*t@tSeLG?r77G}Pf-N@l*Gl|H$QjCn$CKA&5Vk-;UD
zO)e~0kP%y4xG1GCH!FcJMjmB|m=Rl8yeN}rd6uDzGZHe3OSIF4A{udulQABdWU+kN
z|L9m5JTj(eOA$VGULNpN20$r_=Zlm0VvIATll{^0o&6^+D#F~(kY4eHSpq94Q79-N
z>?O^Ep+gCnqYH)nEHwdPVUe~#T~t_twlJ_CB8|2>xP&z9P{-KZ0@lU&Mot+?xr<Q$
z_PQjMm1IywiWe-F;<pb9{tp^7NZnpmeqm;oS{em4LRft2rvx;Nr?Lo?iVGJMXD*tO
zxrjPxs(>11s~2e(0bBRwID1?89Id*jSUW_nv@}=cnoA(+L)GV^GYcN&)g8;t#?<MM
zQY|MM7@S250rKZ_7irb<FmuB~L)Gz_Sz0xw*BH4^h8C4^!{N`Cis-_kGC9DW#t}Ak
zv9`Fh7+6V)(B2R7yymquUYS^i2&Hq&vIO9s#pvuT_5ADwS($vMdQs+r-1+JPVbMHo
zv3g*MR;!+ug}IYanu{SV;Zc>xxap{Hi8`@xQDy<nb)g9LWNmkhaj|v*5+Mg9%PK5Y
z&(F^+DUsq1)h?laX6aH{Xfz9i-}Ic^5_M|svzf(NNSL3mmOC5StAQEI3WZ|z{K7>=
z0&*Uzj?T}Wzfe6zyM$+$s}TKIAZXR-ZH&QuZ9e&Gm*gT8Lnl>J%A4WVq{3{zG!rxO
z0dutEo(U=gPzs?D)C08{m|ZAf_0287l1eQtMz5ev|ClG%hC+f1!rd}FK3ZaLo&-yL
zSrO|OzBsdBftD*`s3SNF2!l{GV3kmb+EE9>BdpIe3uscwJ;iZT3hnUT2~r*PrOvR|
znRNs*k@E)d*xOgEeMSHwkTqCcnv;tas5G;L&E5Yo8+$(JAB>|t3#?wn7y|gnE9FoO
zMn15Nz0Pv;3)Mo2b_|!yzznOQJmLEVm&{JYWL&HbE+NqArye4x$uqcQh#e;L3m5dG
zz9^l?arZ>$LPv(G6SWJ}G2_(??Tt~-Vu{m(OMq-WJK&`fEyhP%rp9~_v|LPXNl|`g
z8N&*4|1jK5pdLEhk>?~WCL?l0b{+GQ=bJ<xp-w}J%2;abZik0s=3vBFN(tvB0kG%G
zbC&Se#E$d;aAYyB%~A)aJs!O1@nC$!jR}q?Y{u|SCfa>pZ@{m8?lXMLYLZqcsIv;$
zKw@Gqq6w0dxmXJ#BRe~HelC_{b>{r}AO_XNxeIdm5>Ege8@WZ9^K)_ww3NU;C7FMT
z4Dcu~ZjvS~BRV-TQ8Q(FMskuS(e5{SYIM}(jQFVNxQSCV5`ON~zHA^C5F`KCK;)Cq
zzF63?r#;nBPYDeWSYzElPU?9A&r`+koBgE>vjFI+kBhOg$Ze4j@)$G?cm+#OJE<{4
z>gEx^y};A*de%PPvy<8hJ^R9d>T(JB+RPFyCJm4e<`3w5l*U%X4$Ge05?UQ6mL!*G
zi=zsnvKHkQAU#7?c(>DK3<%ViHj6>`XJI)hWWzKtiKsZu5-q4}n%2Y%P)}lIL5Z1!
zlykEQ36}6QXZooZ6rx)awMF1b06keilH^T*G{)hJd4&I%ZS#ndXon-j)}j;{rtkBY
zrVS_9=dZl1BP-V5?eS4FI}~+VMWyw5NHLr2?RY>QR&7>a4!}?AR*5<jxEFuyyh<*-
zq+|>w{%_)WI`RT`>X^@b#~L<|dXx|k%M|fDf&g3a$gdM>fp5E?Ji)0iv!tcF)AHQG
z-@c?%Um<SC<)6H`|2O8XV_c*e?U=b#-wx=gGyTI#=eVe1EiJyl6Y@uCCQt<+N$MZZ
zj@VtD4XU*BQvDQVBhLx21=+d9i#V>mpBa7v3TGq<2U3<BK2)7qynq%FTH1yPl%Afc
z#UOj_v<ZkbL}GMDa7pldiUUFs)Tp|sEQ6>7KuSc1@1e4vdSEeeHMCxX{+n6^>I>w2
zY<}hf{3qHH#IHo|0`@5vqGTnoLyJNG6f%N#GAK(5k=AKDjr*YZ^I2f~TowwR%`NIY
z16cN)oey*rNC^RS66Sa??a3u-GqcJ%AZF@^&XmzSP$-1QwVlgE|6z`+CuXyuZ6DFa
zkV+5{H9v>w5KOf)qK6sn)j0#Km!P;7lne%SN0iujFv51K>;V**1N(B^co5}S?29v`
z)dr(gz!w+h%PTL(6&4n;aV;n;Ad-m76!=1VgOZp}9uG*%$+$d2LgpmX;4_J!rE~=n
zY0qILB~gV;=U`h}`d=u+fc?J=D3DJQvxHS58>LH6q{-zOk0TM3K*Yp5pkpK|nvh8*
zNN5RXOlMS&JqkfHxU>BHGPQk8pI0Um$R!v@LNy)nEt?ma#aMaC-~L-2>RviH)Ax^^
z(>&gI=)fZPms|3RMtwNn^8Tu<w})3=@cm%>#j=Mj-#1pCJMr(3$y+`4Ed6qs`;hIw
zz1nBrD_MTq`uwHdlo$8Rj%z<g?X4(3b-tIi>4!zrww!9IH=NX`tjX_Iy?$ZVvp476
zxpGKbHFdU=|G9j(`SZuAZvE|}G#^wKM9lHao!k^P_xs{!7QA=7$z|+>Q;JD<3_d3o
zZt?u^*7_}@^4EMd{`8?;7b0)&{_L0hv%`hiKWUEnoW7Vg?)aylg`OKQhWl}vZrYiH
zJu(~iZE5+sZ~p_EQ{Gs$^O)+xJ=@>j?mSRg>6-D?Iq$k4i`SPgE-ie#%jBFHpZ3YD
z88;+*>nl+g7rQ-k!D+Yp#F{~V-(NKvzI^79EnD3_Y})tEh*R6e_YS!)8F`aay|mtA
zb-)_mOS^pXmJb=XNcr#ltXG|8&%fL<ZQ;UsnfZZdL$!t}+`Pa3yUH#9xeuLs*R&{~
zPd%XeyYAd3ZGvT6*Wb7AH7%{&(e_iHALdOQa=!bur6*TvC!e}KBlD~H@1|`T!*jde
z|2cHmsi+Tsdiu<&v*Q*WIR3%ymeVKmEV<Eb=L$x~RxbFwVf)<kB|{W3zxHt%kullx
zlS4~=ei-|VYr-c{&X4-}dF_2c?R_YCOHS%$L!sK^RQ8T{nliuhz4_yuHHXeU)^AP2
zrmxqZsqZ;%bJ_}@uZKp=-m~rV{GHWm{r3NE-MsHV-al`3`Ok?j`S1zf|NcekiM8Da
zTu|tHTrBD8HUF22h^*J2%v<EMerDdYUdMc!*4jK?dvqh``Q_X0<uR|Rnoqp1d@<)Q
zr-$#>y5**)&bx7BfmZj-==_I%b6Z%jxc8~MjUgwEGoL;0cl7BW78L%p<L1q)dtZv)
zyRGN<FKwDDzJL1kve%Bkd!Y7gSmIwlP5pDhuHy?*cYpMQ+m@#$js7a`e2CB4$-O<l
zxc;=u=(*1-qV`{%`&05y3)WwKsbE;y-rU%gn=_B}(r52pccL(O^v^kot4h6(x=ire
zwWEh~zsCo-Chv{d`OQGDJzxE6=GP&Lyv?&eww<XRcC2BG>Fsla`)vGi)~4F5HwXMR
z|H@nM=Lw##Epp!A=JD23qkXN01@6V&QaRV>pWe61|Jm(7Zw&eJxv<__z2AK4#J_y@
ze*f#Xs~4B{{po_&sS_t(82|IBKU+8dkW-*P|H!vJ_O6&UV8``KrJD*%Cu|G2JX2X&
zl&7*Cj&RGK?d8<P_O|xr+>P^EPudn{YL4aiSn{*yx<5|%oSCjyOsU=M5}r9=!N)gx
z%x#FDkUQ~0X~C0E=N;d8apviB*<L?I!l=g+NgH=>_~z|hKQ2G^)dY)eOK9L<d-hb-
z?mQg&+UBH>-v2ttb#%kd*WAv0`&jCa)Aubn*MI1<*_*dNoq52ycTW22A%%mU*z5K6
zyDxd~@BNeOO!HOeA%p{>hV_2v`FW#<?@t;MqWC61OVd(X{=&yIQ|eboO;uK%J2-Jy
z?eQw{>a8Q^T7L1Ky5+O@WgEA=G(`XQvA{JiPU~9xv|s;oNhgb1mi#N~YG(48jYIt}
zZ+YU(mNkK^EA*~uYkEH)uz`E?!mS~j{&QsXhV=B(%Ypg%wx6DgI`y{i%x~Wds#x_)
z_jgvRW54=1vvkAWk1mOS{?>3!4ATF&U;EWJ=Ret)o^E|7HfG?_g@w6yiWYBNI4u0?
z%t7kG9`0U?!UDTq8y)-8SMKR`&rC1+Z>V-*%Z+P;c5SU4_MY%+pmF3n_g8N3ey8V7
zbA@l&j~jx+u6{MvR(7pqZ=9G{-us)Vv4eh`;X1XfIcC{B%Zo#%*4711zu;8W{q@LQ
zzGl7H|D)P-Vf%c(Sr<0BWmn&qKVI$m-D-0;5ANvfxM62Brg^st4kukIou0mHXZQSd
z@1K6kT={R`)vqS3IrC$e4M*!w+`4q-wIjFwo_%Isai7a&3xC`)J@TE3scAF1`u2FJ
ze|OdSqOhPhqxz5gc;OxG<(Ze4274Sy%?fLn^8UtGoqm3&DxmMtk4MbCvwP4Nmx4b3
zqv5Hqhv>V$lmC^+3!etX9s0d{Qp01h%WmhCYJa|7_SECs;(|u=y*>Jj8q`(s*Y2cA
zo6T{FML%lGhFx7Y_wKdJzwN8Nb9d>h4d0JjcjV};(N+3g?yvr5$@JY{hHF1wKWU9V
z!gIr#eur*t@u)nq(Qj({)ePVKme_BfI=5)0Z!I6)b>=na{!zcz6y?|GqDs$BI5Ya+
zZkLC=^vxFT!-|UDyL(kdJu_?9%$zl1Y4o{s`7<A$I;4BXveDje4e9;p4}sj1UAZ+o
zl7{Kmy)tj3>3GtXfA#pL<%iUks|Q~Hxc2JztIu7x>~`O{-W<4X;g7@K8gzA#;lE`I
z4}TU{bh5B_dh5_Zv6n85{xN%<`!~zyPZy{6(_V}J_1ag?AJlH>z2Mb~&;je-d2IW}
zZ<=nt^W&W{N3WfJ?v8kD_reXjJ2Ss}<4KQqzFHnu@#&_Zz`=iZcONx8cF@BmrNi96
zzEl+Vcf-PIqxG@RmVT8!f6AF#M^u+DojAJX=uLCQnZ~EPuKvQSzj^DyqIGMHQM)Q)
z)BC%)=ZEz=@KpC<24CNS<JU}G;Id)*vg%u9$t#Y`oBYT(VJqge^k1{~W8cjeS9kxU
zH#hy)nZu^Gy)kdznX^e{-}Rh&X=2K<TM4U%oO$k4;L&;As?0+YcdZ`zs<`WshI8xO
zu3TF-=kr?ago0P&@*iK9B#5KCj@jVu(LZl`kTOL3RF|f*k5_*fxBKPn-miY}=%A`S
zjk}Nh^{%<WI`79j)%~wtKDX!6ZvVE1kA0rfR}EP9)vHhK2x=&5?S3RTBKGq5XG`zQ
z+Okl4v1R76Z=Uc-`eSie+>I|cdTeigr|Y{Tjy_dYd?)BNn*UGa)jAcNs&Gl$8|!>=
zy@$KC_K4e8OU(*HkEyQPr*-pvIpVnLwBg@Am#!vzXWi`Ok@VVGrRR{hJ;zO$?N#*t
zfWQfdn)*Ck`radt^_lzdXI_u@elzpGy=s5@G~n+oxep!uYgAX;nj76d8t`S8S0|VF
z`Oh5Ny?^Lk|7Ty?-Xp&0*`AHD@nL5Mza0M3zYaz0X!RO1_K%pSyeeLJGI31xSZ#vy
zxEVd?j4mvH>xt3(&yRB25HPZ0U+S>U->(Y&ec{RBKR9(6@yf3YgFb$FL-5^US06nz
zYsi4f@$>pW_vpHQ{oc5&?tU$(@4&B@40`0poguMv+a7zy^T~lNfzJ%tzj*WD{~Y{#
z=;!Y}@p!fQKSeiwoAJ!Xw1-RH7;&*UF!;67kg3xa7ysFl*Sz_?u;ij~+0?C*miJKl
zl=q!?Z0QHQuI#mk$1gd&PVwxW!*$PX8oE3G#h7J_e!LY{XnEyULH-L{7S6g-n&+H2
zEN4{MwOr-$FXlbfebM~vPeU@N)mY}9I`fhCmpxfoJ6-x^n{yi%sE?e9>-lc?iBld)
znp7sd`gGg;AEzGi2%Pe-Z8Il-_`{m`HUBvf`$e<cgzHlxH8nxc$HWZ(HmYQXDss@}
ziR1gMG({)m{5gGr^N8dpcMGW=r?;i7tZq%(^~spTpZ%96e7|h(G%@_=nLj0|XT9*>
z?6fam{9wk&SFPzTw;!85Q&Tu+(c_<I=z5R3wC$N2jei{b^5=6Omi#h%^VrJ^&)xlP
z_=4@fy81lZ6!!Fht15NVA1QCYcO|oB?thzpeq20R`Cm)b=ufSCX6OFiyuI6<`V+_7
z-p>E`-3@NZw!wbAZuNfl?CtRf-o7bpoZT8{;jS&$*ZwtNTt#!2)Yv~?kMd}FKjg^Y
zw^o^Nd~2I}eQx@abE!}4JnL(0J0JeblNWaX{mhT1cQ*fYqVL~7{5t80i)XzTp1GR6
z;q=zCS5K|@YRLDB59T$D_-@_tyrRn|(|ZM-@Vh(bn@3-N>%g)>=j$d$2Gk!-Nv*v-
zcGdp(o<CW$O6*d-{)_k{?|kzzM(WVPKf6GA(LLs9^r9EO?RB#H*pMC0-$kze;?>f&
zMXwAUAM&q<23lTw>&cH+e>y$u-+%qyZ`C)t#@AcxcfWJ&^JQ<Z?iTjeyJff51{H2u
z)6KQ?ji+}Fd$aubwf}^UGMe2pCas)v$>*h9)3KMYtkqRrxG~=JJdR@hANJlno~rNt
z8{TBhkfV&Lj>wSAl2SP4d5DORd7fvI%!CXPnhcqR$UKA;4T^(I4W>#op_B&IbM1rD
z`QD$;?{`1<^Ll>&+<U*)xz>AMYrfXnXYaMIwXRyOuGm<c3lVMfN5iKpw}<vUei~-*
zAT`puP%r8LD@zQW*I;xGeySv+30vGlW>@;vE&pn8z?%vUM*eGzW$xv>y2{H~!xoB!
z--s9b9r4Y_$<`O#=KqrOQQ<&t>5t&N%Nea#@ZPs;U$Iftv=+(LoqiZzPy6KIb?K^2
z)mEF-s*c#kS32w*Za%Kc)I{-Fzd`g;N@GpjSWCnN$BoD4CT;H|GSRJ55L^3}hWNYG
zrSGrRG8$!AC5g?C?R$FMc~_&<@Z~wan$9>Ks*^SoH{3~LNQN8QhSZ;pIDHWJAD=K}
zus)h?#HRaAq+n)CHp4g1FJ<y~+fR&_7u~T}pz`wNaqoHPajN_r6DvmWdwsra7M?YR
zcczzJKFRw^8MdqPo=Omv%r&u`V|No-Ywe{s;*pr^j#9e9w8!6OOwAid#bmrZ)E5(N
zTQhOsnTbwPuPmRqe>B63*U$Zr9;O?4C+E<n_a*m>!2Ip(4AtEtJ56+qvZg+}tDQ=v
z`gG@Hk=!6_`?9MxK6|e~J=d8|*7WS0Q@eTDRDLuCV{xQslNK44W>kw09o=&AsBAG;
zUGg^3fu-EjPQ89xHWlA5o1{F|8fkHhqTeIOyq<+)+PI-)@!&X<X4I>WzKPHfM|$Dz
z6V9ssx2|lW>%QYq<;{PG%u+L_Vf0g`yJGUMf#ncgyZ2l7JvP+hZKUUuBd_b4tIW@f
zrR89+d=hqQ*nWRXK)=A^4!6_|OFYtc$rmDGWrb7T9Zlsouu!ZKrTjuWUaYmfsdu69
z?fBWBryGQn?O84wkb3aGZC0K4923^OCldPg$&pt|)|YZ*oxk3R7+`Ubyy>+mF0gx_
z*^3I@NmIFB2HLwaXFhw!##b=U?PLBT7fyDWSEhw~$1Eo<;K=!F!xQoMD^10v>x|!-
z_q{w)8KSE)$oBS^3#YUdwQ|hkSF>Vw!xIxd9%a4btNN;!eBAIw_yN(Q2O_AGil*Jf
zcTnAorgJSkP@6v~cjIRCGPy9n8jHI2r)wYmc8aBAvf=_-1v0mdW?(h$Ed~fxsJ6G0
z{OB*R!#Q!7r!NKW->s98o^AGFf$JqXo3oZh$ndAcKC4%6>c);APNeSGH(MJts*E_a
zaJJxIi;l-88Cr{2ejVCLmgRKeM&S+0k((rKl5RES`qWfR7qq>${o?N_z(k*@_nEx2
z>ES5D+2Yo+-O3m?DK5W)P+z;Q5eAYVi=P#}UKj6q-`}~AZ={mWI#;s4{Ko@xj1t9r
zEkEni3q5Ce6raxEzS!sm3V)T@o{D>1#iQRgbm7fx*VpQVTqPPS`gt}=N6p+;y^9B*
zNb*MRJ%2V`_otB1`9=et<*}J8Mo+T@f96Sv9wEt+t7>r=rD@p>*szFZzm$pRn?IW#
z`(Zq*mML>&fs-QKMbT2`QE5+nS8vI_5GmZLAv2y^Zq=v#f`{JUzwJJ>&3I!~?&OQ@
zTRw&b7HbSUc5l8;?|;=ax1(`?R|rYy&yq_o&ogn;Najeo>2V|$G22CVcs`cdGv>ZW
zt#Kf2K8%d|+;l_L2{pRB?Lt*sRb~1W1dZLk-}?MywlKwBZ%0YxgP<N-pES!xy9EmJ
zF?9U<Q;MX&r?=d5o?5So()Bi*htp!xtaZWOESqzA^iN{N0-rYIPYlj(&*&eGrLNNy
z2&oFb@v1?PGP!MA%C>q28>dR_hmVb(s*$a@G4{ugPP#sO@n-Q+tzN`H)Sb;PnT9sb
z#qB?=z6QnF-g~=+#8k(c!e#W^rbE_esOUaPyJ7EYIx?6KTHsz>vG?>kxZy>g2H7K(
ze!8e11siLf_tqAFlfRzn@}&9RP+7}YIk6F!=St(IzE6kfdaw2!GUgc-DbpK64%{8q
z3vI(&GIQ1})*4pd=IU)acfR39!6rV^hOFb{u~c2Oqt~lwX1RskgJX_5Xku<!Zo67%
zCwR#3DK44hi6=#7KelCVkYTrHRn%#Uy4oGtZ7&LD8Xk!UP~N+;3Hd6KPF<WhNuSAj
z%89O-%Jq<7ij7Ogw6!UTv$NhJ2k1XU*@}#OutKz5D9*jxN>XqloNDprr%ktwY%52*
z80%+s<69eEFE_>pTRq!0&h%JNEny(|<M&6Jwp!OMj~=Mi>&a_Dd>%E6OsS6-;0}$P
z8_w^$?K&{D_+7zq)=9!`bh+F<R{60-1749#&|7@NwwI+FHIF}|3%;jI?s<@x6j$0x
z!@zKl78`BkP`eB39#!3F_lUa3@<q1!*jIY~(R-Pd_{^PmhKp;As}HdV)zF32-!PSK
zZ*nPr*ARid&{kcyp>B%Sr>g(L>p_+Mm;3#%kv-vI@_x!3@!Xn*G0jFglFrphCdkR8
z_yv70O)B-T%Nvmj-jkGBRr8xt6=SIK`nQvOaB!sP__<_dWEN^`-_7PC>FMT7@#^QJ
zt$wEm1SS|B2btJEQ-AQaaojzzb?z%meXD{+W#Zt_P~J>#UuuZdNXKoR@ehaln(Y?~
zTa4^wYbl<oUYFDup%Zv~ZR1u=$qnkTb!U*pxW(M9V*BwUqHc+E%8spp-Imn}Ep`#?
zyWIP84m(UqKA`nK*G!|bVJ9hb;}LQm;m#)M*6TND_ylT9&YD&`k#!9JDyqfzitZWB
zia$11vF)NwN99}V4?Mn3d6!6CQ#W3srYLzsFDdIqX&*(77;Qe+rXD`k5VYk)l|Th;
z-Bziy{fQS}4z|(-Kb@<mc{0u!J<$JX;n9@5!?WryJ03^4g|#w2{M^WM%)QcolC@sN
zKbFd5`qw5W4?7C!`xp`$(<IxhUtg>$94(!H4KTa(D&=gP3K*vAf3HmzVX%Kgbw`ms
zk0suMc}dMtMN7ub|4Bukllth8$y2#;8oPZX((@%P75Zb%S)D4^dryhf{+hjU;{(V2
zrj9uM>QoW#n!Lg$yd?R<VTx3PF(ZDiQTw)PyC9+4mg)^=4qHigy9=b%(6sKmMVpvw
zLO#A#kaX@0I{w+VisHm1t-=Ka^>5j@bdsI)UsN(QDT>y?rQf+b8b{UF(X94uZYJ*e
z;%IkStqyH%MTk~bgkWM!CP%M&2cw?;C>KM(qQ`*c9PX@8#qg1RwbNTTGHZv)BO=qo
zw`Lk&L`qmI1;0Hhk?g)O?QdrG%f*G`5l(jep$UD~xk&CS3E51~i>@nUTTA>c7iK04
zXFlRz-5QJFe%yK8*37J;R8cwmjl1&$K0l8ij{8NOE3msw=4dFX_b_ruxsEGKe(W-%
zy#CI^z;n^rR-}3N$E7Qx9d)NUQhbvsb0k=@TfWmro@v@uG8TC7`ka*a$G~4sGpen)
z&aEepj_p1;AE-k<YZao{p(7ac#DJqKjVX@g41Kd)A=gYqo78BBR8A)yXY-=w#`L13
z&1cekOdlZBO2eY6Zr`lp{U`PBH#M6X<mI?9#h#HJN=c{B7#q&iz4M?1^LFxE|EF)=
zsa{sYrp|%W+vE&t$BcC%vzh4`k8Wb(V&j(bczlQpchUBTb5Sr%02p;s@6yIg*^s1E
z<gvzOPl*>j;N0Ev!=jvf@>-27{(UxMgkUuFb(edp+*k4XOs~I(DDzL*`a1~A27Z?0
zR;}Mgz14?|ara&g{gw}hRnJrh+Kzcxgv^P)n*R9n=Z}uIL3~Q^gYKL|5pj~=E~HR4
zSG5=f6c^d<myXEP*qK?fk-GNVJ%)<z*yD3%I?9VK^sb|_4}Ci56F!<SD!j&Vk=}Ii
zxH;mF3(b%mR!J0`rYJyaJ6pC!Mtb7n*d0uok16=iWSY2)jxq`AY^RkBInKLP@RAI|
z@vJcuVa$mT)sL^RN<Lew-}h{>llk`CqS0JOQQGIx^uY?smf3oaGsTxg$DE^J0^q)L
z;JX12)v_;UTiqv>cMI8#Nlu>Xq|AZWe`~FewmV6$e|)*Mq$6J>GR2-hJBQ~*XGO!0
zvFxuyA0Hg(o%wMhw8XjP{B@Hb*R!c*u0~3o+QY$JxtEe@Vf$`nF-lQ?Z&i=U8a-$H
zry%7BNo%v~{@ve(wfiThH+_W(fQjMAGuP4?)$7i1(Ok~)xEtAwJH3I+OqpHEg;JDB
z_BJ0qeU!aUrhJG&$%Z3=-`X{;y2HYxI(KApEt*%;7hNu8N`Ly&0NJ{%BWf~iWp%zM
zP=7>iQinzNTZrL_VZn1&4>%qPo{8Hmk=}fGNApYyMb0SRJmlkB72A$-7u6IuU;P~6
z1B{Y0T-1~$RNMwm7+G6^^rFBQNiC`c`6*lNZp7{8{m|Vq@dke;xBbVM)#&sb*Or#a
z8+1kZWuCYQS=p59As%?{M#pZZFY?pM(#L-I2R*fQuI&slS$wZgy>CfX%CCXCqAHg$
zdp=I~fp{wS5A@R*Lek;1Z$soGH&W$RV@m4crxe{CZ^+IBUnkdLj-ubJ*RZKiI*BeL
zYKZp8+$1&oR~xF4RQ-)vf*WZ}RSt3R<aum+aZhE(760wqEw=G*6{aa;e`k4-_3C&B
zn`7-K#=RfzZeGg#g{k5xWboEZVLE8CWy?<yF6M^BAeNvPT2fld6Z@0)3`^fTn|Ofc
zOQWpf`-3vkku(R}4;(&3s%tB0&T@3$rIYS^AK#LcU@ajLHEN3#IX74>HsJhP97FPq
z+xcbku9Bo8-Z{~qJc7sWaan0;?#$smft^0Tlau=+)9!#8K7ppO9sJ7{%6u{#Jq0~E
z7WY*9-4gnA_k!@gE9D*+&a`_TeYNDh-MGT*srY&S)Lk5YdO89=EDK(~gBO)TPCpGe
zrBSDIl8%ZwxYvp^Fw`eMKz@5_5LwRs6J7UzxU>jWx`rsmxJ!K-bNiM&>s%Y{;^hDK
zn1kqHQpb-{d#$dWqOx{nlC>1LYG*NfQ_r?=_>qmxjpuedH#FH#IG#}*?#8My<+5n#
z@6c9H@eR}&vtHKbpzhW*sXwcg`K&<s_JvFpiur3wa@wC2!?|zb9*QZ-Z93{LuQt6~
zAwFT7!GeSC5phy`Bi|Mo!}=j={V(kahYyrC>jrO`(rXPFG@05za}29LZfy51`e=Sk
zmD!sV2~+;>8_eC6OpcceyH4)i8alD$SwB_P`~JCi!RYkCYSULgN1b0b*o(agq9dQ<
zQI~rE0=wz$l`O+|7K@fM!c#A1-^C8Rxhfg=+R^mJkIfD9%YFTKerC92{W?NX@{OHg
z&-am_tzWZl%YQMg@coF)s($E*I5i)6h-X3B2(w6yOZ(I<khgT^+_%p<zaEYTm|2W8
z?K673e474=%=7(Yo}XIAtFz;ued6qYx=-Wfuruw*P>J2#qq&i~LBZ=`c&mJ}zMLNM
zfoTt?er|TNPV=7(w=bpfc0Jx5a)(t;t;5Lh!L4%#zuz1PztWDGIoGXqt@wUYXZGED
zC%W#@U=|)IQu;iMc2($YA7JkxZ4^womM)j<y6k^eKwc<ymX9sHQ07vGjltD(J70fD
zn+Wa9Zn^U%E2O;llGNt(%ijWXGi%+s&-;^az9`zPe&J)^$up<-iX><pr%a@qG*9Y{
zcZ>_Y{5D>G>B(s_weZ+3uG)wTHnHJH>DxlLS5AjLecTtB`oJJcuh2S%h4n!6pch@q
z6h5aI+mumiN7i#S-|cI~n}FbJ{EQmq?q!T+<z2gq7Q$Ey#oq|$`yTNtsF%g%eBr;H
zdqCl1Uht37E3FxqYj1nwYbe-W)yWmL)`velef{AR+UiYJ(p74ktSaMek2DYObZBBy
zJ>H=InW8b}l4#3VT+I!RiHJ56^T(~367SIQ-_T-jTS|R5p0W1Y`y{IjqkUuZV!ND=
zKfOFG)!13XH+PasC(ixGgv~Ha0H_bOHGFUyc{VZbFMiaT!BCgYD0`+r<l8rf>@D(T
zUp&W8wBNPAQ&jHjMWyht$DQX~`6&-U3@ejte*O0tR(uwF?+ou1?<D!kE^HZ9kjlLr
zv1>A{iFc1}l(w(E9)sY8b)_6L-X5ooGM=A0^fDvHHae#7*@20g-Xt9pe{nw9*Dn~N
z4<Ge^F86MP?u%ZV!@R(kT-A*1+a^0jc28v)>6}t?|9s~YRqCKz(Mi|kcGkVwc<nP>
z^#a-Htew2OPvtcIP+=p*VS^bKlg<{a&MaNra`X^avFuUNZOL_~bC(9T`1LxK-7ntM
zdWv$A;+93Ed5%Z_GzUxlVo8IsCe!%AzK&N>jv=8FC%T2{Z~3b_chhaU;$7u%$CB(0
z|7b&wrlNc1r{#fP$?xrSLku79+e+Wat5ruX$CqC@*Tq2_n-}(^l6}AZ@F{`*fRt3X
z9gEUDOB*6CB-^D3%f|Aj9(`A%XkkG6g;I38R`Gb@LT}U0v*T}-g&Iy9Tx79-%j-ev
zIj`D$Pg8j8$=6U3Yo%95oMm$^4Mg1edQ;MYB`|K2*9)_K-KLYe71{>B<UY@2?y887
z^=95T$4nM3_oYRK_cG_~4({_u0&wvY!`H-3EAPKEu9H6Uvd>&aH>C2{Ted+fX-=2N
zG0N0;#b#f5BqoOQy~}!(toOAl{DtB114l&<6eUqd>=1XGri;EwRePY&^@iMJKKXL=
zO%^qN;cK6?)x~!DeT>V(q-P4W24FKrw*@TT(`Z+%5bFOy((Z(_D_BZ5=g`@`KhP{Y
zJ>w<U!Urv9Hu6uyAr`N!`Vx<i)xGJUPCOh`JG;*TQ69y^1VHS#=xY&c!=#-<Uo9^<
zWsy<B1V9_f&5`mNH%TTcYW;0q+7}9X_<z-(h{kNXGwE}dVf5kdvesfLHjHv;fgjgM
zmz}Rg5D9}<Z^h61-uEsV<uB}<V@+52QNF)K31j}iPwPEJ&%$Zzr;0phY`)-Tz6uBG
z;ZnCt=<`%Pesf`{t@>-%ER9lb0^2;jRj#HZ<-v=3t&zNvPtwnx-zy~aQ<uk}@qE_I
z*m8oIC!@q9vww-CP!A?f?dk^EX{F|fFzoY*6u)DppEs+`8vj^0B9rM7PQm#|#!|5>
zzNa)~UrF!KDV&tsEgrLAzth#X@4p{1-ZtbunOn8-<Cg6&G>QYmHg`J?U-hTI-q?|A
zN)pnw|5C}%P;RF4FC}v%X%ac~+@kH6i)0>qcI<H<+mklXs76f|Heb~+eJ+nq?Znn9
zq3sI&GOFL*j0I<(e7>b;pHldsvSf!3ZBLM0qh;C{ImN=7mVpas_<C8o2)o$2+50$v
zO0117=qIdbAfU>+sQT;5Ra9?*=(>-)JLtK4VXZ)21MVm2VL=H$RIs{&iUHX|<&7{>
z?f}0BI1vP)Zbuj>K|_qn0vr}_4p20FC^$L56Tqhc|50#Y<%c>M*-R-7{s3@Nfbj^1
z61D`S0#$b^KERbgApxpbaH@dkAwC)S4Zv+dn5dpZd;#!-@)?x`@b5x=I`D%U78N((
zVxVaFNN|dPXCOYB9xS(@;sBh9Y@yT#e=xX%fJdM{EZ_$vTB<#O8-UV+O8}<{_zT2`
zHMvxvu}H-T`R76YT;PYtEh;hK--i5Yzz@o$RG?-`oez{0TsSy+z%L*^G$54;ICj8k
zkiP=>gTNgC{0Q>j41OnYy8+h#McXqDoI2n|h))iFLvYN998_g9r8xLOyPZlB_zxie
zP2jf!#{;+wDB9l9;FJNsh4|FqHwU*J@FmC})S;+Cz{vo93i)pZKWG+Gf$}4D3s8D+
ziQu#WFR#j94=@JmAF(QbPr#zU?|}5t@`5T26)410Uja%2E({zF@D%XT^1xynDmK7p
zSLGiFct7C&Rrxyt2CXaV>p;=+o(87|_yfd8<#_}g6T(16O0pt<Q23(S3;g@5@&_dt
zs$GCffuijd1x^X@Ylx4^-wYhA@TI=6D*uy!4*`C>Dt}kNf`FTVqW$R%I4!{6AU-O8
zw9jmY`rlfWzc*lz19jJ`{Lwb$0$d0b4Icqc0q``$N9BJE9JDia`l|d-0G0+kv?_lX
zZB)>&sq28E{V5)t2H?*SAFYoOIF@zt2Q5sheZcQomA^e;UcePV(fne-sQ`Wt@zM4K
zLpW40ZmF|Y<$nsWEa0(K`GXP@l`!B|plE+e0;dD`=YKK&Z$kR0{4Ky?A$%@S1Y9UM
zIlz;^N9BJM94p|IRrv=1mIB<jDt`ySe1NNfqVkFbrwVuh;-m8ar}2MpRsJ>*h8x0{
z07b(`f>Q)M3-QtPOu=ygKEEpeV890fkFLt!1@IogjX-I^C4kce{1xJ(^8Baq-?=J(
zD+sd_!WRG~1s4uZ9`H+ukIKUY96R81tMU&5d;sv^s{EY*?*?286m8EqaO!|RL3~vH
z|1|y|uFBsI!tg-&a-e8?M}t!a{0`!y@;3*!9q{E<`G)|O0sL%L{%(MU0N(&g4=xd$
zHsBxs#rVGk>7(Vf1jh;C^MI0o3j>D({2cgbd5poa0Zt_v{{yS?cLY8^@T-BM<vk5f
z4e&>ZkIM6(#((#!{B0r3E(m`WDB508;FJKrf%vHW&A@E~d~sF&CjlP<{A5-Bu7Cvr
zHv^>ucLtmm;O`J0mH$7D|2wPlw}voW5WWZ~8a@J?0^nB=AC><xa9aUqtjhlcU}?a^
ztMYdSEC9G3C=IxHa2kM@AU;~3e;WV2tMa#pFuV}{8c;O97;q|p=O8}Xo@?VjdsY5x
z<9~cr{_YS)7{a#!-2^TPoDSe$2m?6@!a`0$vY8x%Y$YdQz>t$8Y~&<lOyoFZ8###_
z1NjDom7Iih3pppkK~92YB&SB$$w{b~$-@viC^`c<DZ~$h_-tr=Rtz~M8lQrR+!Bp%
z!9Y%i#^11oTojEj!bnbs#;0W_zqt}0!61z2Ed`99QiH+Yjj$k}26pA41xvwnu%eb8
zwv~Vq!?TRFyBE5U7Q6Q3<6w(E#QeEVSi)qza`iu-eY~-tvr0&3<(cU3=cpC#+VheX
z=<cuP;ziJxUl$L3;96y_C5fPqRj?i^a4ix+t$g)S%sbH4%H75L_p_KctOT~T!CJYv
zgWBv$Ch%wTr@SkSl?6c#px<i?+PGfUSXW1HSlnmr06O+7Yd}|duo&3>cRBvF#ahg@
zHd?8(|H^_aZ_s)Eoerw->IKU_(8W!lH|yYTgO&zCu&axQv4q9KSX51&urLHGx_|#(
zL0EOR7j)IVoUu3?7bqeE(jo)NQGgVwK#m(hhIAk|46+$vLAD}05H3Uj5l5uKjFUcM
zjd&vwNFH(vd5)06?F2m-h)xW|MNh`nb2Frbo?BK=CS>JgK<**8AwCK8m6bA}{fG`?
zvLT#^D1t*Qkuc;YLP8QoLPAQifrN~Nf`p2MmV|+Xl>|#7LLx_Eu|EH`JlFC<b76*)
z1x{8t+2CY{b1R%2aBhQB4o<Y~U18<3BdoB+{?;-^^@#24pn+@&i#j1A&{h7k;$~%~
zAwuZ6t07=LnJp+4{|=9;hp(YEo*T%>%@%r*jU!=wFD&Xq98%;FQ*hizU~@m9a^NJu
zVZkwg`;xrE3$>e2p4aHZM7&3G?$O;<OWtkJz8<$56dA0?6FPY8>jRDqS4OB10TGeQ
zq52##Ir4yCuVA_P<2GTsTN$#ckWxhWoHiEwmXi?v*=qPJygLbaYy~$Z(JAdJ$73>!
zsSwGnm<`$*WXLpTPNSluiRonMXA8R{G04;M2-PcXR?Yn)<CJBEi^!{~!^-tVZ*Oo3
z2e2k@Aw|W7v=e?2<rE@(mI$X3;WQ$gLxgjQFrEna5#fF!JV1meiSQH=eolm65aE|Z
zc$x^$5aC%O{F(^AA;NEo@OvUWM}+5z@B$J3K!iUM;YA|+i3oot!b?Q>3laWGgufBt
z??iZ+2>&F)2-DyFD|bgvJSX*5hN@r4GZNYds-aoWV*~c~Vk#V=KMOHh<$Sg%8{LG*
zobN{3b%qo(t{8r%zJ{Y!ja_1XK*y}il&|%|T+H>ka&!x&0o^<N#JtV%Oom6K+O0bu
zQ+}xJob2oQwvlh950es8E4DCeWY!@pv76@v9+OZ4<5RG0Cdjs5g?AnHh;ul(xeM~U
zh~{@>5|MYIJ>3cT!U|?SC(e+@*N;iw4><9S4EDJSw&X((rowimykR?PtsU+{_)9C{
zCCq6Sq@NYZm!1^X?$oHfXm>VG8{?HNSGV)?p&QJd;t80$s@#ozn9M;4Ul;Q@XJWa9
z<t-j_h5^dAiI*+(C!;GSuorU<Uf0`?RnRb;npYR?$734hfxm%qlBYuJ7-a*DcP5BG
z%I0;KcIK2y2k;N9@N??vJ>MzeF=y2g?6o^(S`&C9#Cu))wj;?@>+wXv4*K;N@ekR&
z9>3hRU^{t&LAB{}zvo?rJ<pS`zlp~m#$)OiA^%~Dx7>wuiL-sj6w~T`zV`^_vImdd
zQsW=MW3GAw|CUT>)s(=9jS(JG;)aGNzal67;rsmatqhT|aDS6A{1QrpbLg7y8$IsD
zocDq94`*1(sqZ`ZqNx|tb`runD!)f6+IkCF{`3z^-e$z#36Ck*i>8masuaof|B(h*
zaRuk#NK~Tr`Z3LQh(*Q;Wlc`kb18mj`!HwO0goShWK9&`h6pc6wr_~e#bd(NA^&3v
z5x7D_d(SaECSvOfwj~Om`ed);4Ce#Q*2e7TcY^qX4ogXW8CdSa6gIBpM;6@j#$2=?
zQzyKF<yzA<O;e!01CXBj%s#o7DV5J7dND<tSL%<%kooSI19`_n__4CD$eZLvIY#I|
zt9U|4_i!lmpVL>Nz8x8YQwF@(eU$$2aTXmueI9+7dK2g$<TgK(3tVo?9_+`oPQ$(`
z<oAt!NO<Iwx)`XH$!1*fV*VOOrb{{_&jI{B5We_OE~(A}H^&M1e}hNdFJzXzx-o^R
z?C1J0Y3?h37$RgI-}kJ;p^kyuJ1_NNie;fZ_byvDNF=d@U+Kq0cLGj)eSW0&#h#>f
zIOooT-ta4ZnB;K8f{Hvf{P3)i$JQHtnA2=%eeOyoeEyKSb=v?Yj~;N~)xJU}YraG0
z`Z2XbfJa&JA`83f=Tz7k3KmE$60+Wu<!)=(vX?|uD}B_Z?VdgRdHVQ=A(A&Qs;6PJ
zZ`gT1xFxQ^a`Bg3KjumZ#J@%5$r*n}jNgA*<D6!)fY@cjN(mx<r~&VX@TC;_8)*xY
zsd@+A3hm1?ywuZ=$)*Q+bVYxD!B$pLahgi0vA#JvsCDYyUZVKP9FA%%A?yq#9O(Vx
zVaX(o2Yub;K1^;8<Uee-`M7Pvug0(*orX&noQqsHzl!5EQr?Q|$3&p_AE;mRM_rNH
z%w9}$IP{MjJv7xsxP}NboS7tv*XqYanGxF49;uyFlT;qSWGq2?O89EC)C;lOGZ-}*
zX}QPmO}?DDvT5O``Cba`)Ub=(!%Gihc~tM{pT8=uRhBQx@@d<?SR~JJ^w%pGztYej
z;Qqut6}I2_(*P#%0Ho)zZ*Uh8<{`qoMEGj;8xDrx3u^f+XYVuL?vCIi;y=&lR34i5
zR*Ac${OSaYs$8z}^FjS3F}0cvN<N|V+?n~4ksG*}E-B>Sy_&*s_*3*oTcH!!M0K6Y
zEZdB0cZ4h1$Ump)@^Pz`n)I1RMu+atzR}*m{mxV=VtQ~tt<KDCmbsGFg>Va<vynPy
z>P@9*17h$}MxT<Ev)Y;rJe)?B<d)07`PVyYl!p0lFrS~EnIIpE!F2XwPNV-H<T!rL
zHdFfJeK7t>R>prN(fuv-mxQ9`+@Jr4_RadPRtbHW>krZKo`Au&UwYR_1>=(ol`osu
z+eF@kt1^9<gvu3pzq$6RPYCX32>}FLv)E+Ltmg{-p?rmJQ+Uwl4IRXX4Pw#wH6b?(
zZ3Tg!w8Hl}YOvqR(_FbeVs~zg&RkgZ4Gm_xZ4+7-q({BdRXQ3NH)fk=ox@}D@}WLd
zJdzB>scBMh|7cN$`nXJeVz6tJ+gaO(sjdO+_TyFB1t((}l0M8Ci52<3Sd^Lk0RKms
z%q#helYR^xukXj?Nw3_`W}2BEYn>a=sa)Jq+epKr@lDgp!au)CB`)!RI$I_yuVe3a
znFPaht;@#Bia4LCA!(kMI$<d{l`HcvzkBrL<m=n-Y5I#z$<->P+jecwxu_o;(Z2CZ
z^KPXmx<GuQU2u_4K(-dGHkn%b3AxICS{aQu>P6u-6{gBLTksk0C0wlqwU_<MhuD+~
zt@qt9qzH@p5^txVee=3n#yubZ$l=I(DIDjffvRNn<`UlS_D-n_O5cBKoRpxDD`+jF
ztu*vJt8n20pJJ<#T>jRhL4L!pzADS<*LTaXYPM?IJk+coDiau`b<Ys$Q;Pjn*%#d~
z_N+c(=MPN9bM<IV=8q{G8-5;m&{nhOiKcud|EbvvF<rQ3?8!!_#SG0R26IU&1u6r7
zvr|O^LbntPuUsu8Ay?PCrGLyy_3BOSrX9I+IOS!wuy);w{x@+7(MRH_g(NbATsB0U
zZs*mIOQK>BWO(|+2Y+GUM-taH<?<SrDAf&)cPy9uS;`&av|?_E)Ej>jf2QAdwe!>@
zC+;*7ZROr^&-=^`pR;|vw{X?wRkBBljxNrmiWO?xJyFdG9QVy4r(W9ox*+`FXs1d#
z|D>6)r?#8+qx~d5oj#~VCm*_YfBIJgn-L~oXlR>SY49tJ_~(`ObP}bvH+`^Hy*BqH
z<im8+u5h!fRyTj#(kgjINw-bSEaTNa`NlFM6@?VN$^;j&zNKs2s_$MrEmjJfS`M_O
zl9YH7RVVY+_OoWrf#-9!UfGADc&ith+<SE{A32eDipe7-KNnjN%JNy~1}n3-LgzK+
znK16Xt>Sv}O;Hw<_uutiHuKvgFx&2lOHQOJ#5Cx9mX3Qm8d)!-P!wi@5h*gZ_Se42
z{)*I0yIxVKszNWbzEbq?(86^i)%>2~S6#19@{%pae^l7^K|Yn-evF21nJX#E#e65d
zh02AWuf<vFJiSH2ro^{v`zc45WbQYWzSTS@XA=B9XIUdgz5T;P<F`a^t&Fj*Q5mha
zltm>yY$J<*YN+eHlZN7Hqdb3EQY?MZpsh9Crk6@FpXmymopestS(_)f-PBgQe#y38
zY@nZ={N2KmYxWhD(hB|omacg_j|FWn!TdR$Y@Ry$NcSe4liE`FTTK}%Nn5(F@K>L$
z^&A}0U~?T%ZOxG1iKU`f*mg0Kwf6imrAUse!9FjZEk}QUQ%C7|5O-lor{n5;aA)ne
zEn-F)nexq+XG_LP6@MLIMYy9ZzpGstQQyDYLLg6+wlD6<?sWO$r57HIV)wkv_aVDA
zcaEtw^eNIU%^iA*pK7`}&LE-C`Yh-Q&Ca093|9|l(R~?LD{D{?`Q#9A#H-(ma${$u
zMqaq%$%kGSL+{)?J9a9<Q75lCdRi2#&Q<MrpXt5GO|`N~XY*TL*J>TQbg!TMG^t&9
zke~ilU+E4x^5olrT)vu-8aC74zIZyPm1jjo36-lBu~R#C8x}rH?(KIJU#{1=K>Mb0
ze!1r06~FQE-FL0ElAR0{%apvM%Iv(xea_meo;e~tWH}Zic)o``kN1;+T0DD*-?z-6
z7oMY*V=d;SI(a27;it__$&#nE_Q^8ZDy7)$zkSwR`NTy{n?nsdM074HefHow9@tKH
zVB5*&F(%x(USa;n{Mg5w^ZAE;Pn4);J8Q&TVQ5J*Pz^Bb?h;TAbBukiTh<URBxzQ(
ztXr>Bwx_tYR8%q5z-|AD&MZWsbt8B9n+kTGa<zTOvTJUtMZ96!x9Nszxa6+3vEoT%
z&AKZ%rDzqW*OnDJ<Re-!Dxr1Mq}bc_$S*Nd&CAV|3bi$YUN5yv^V#=w-al0PRQv3(
zvryd4GzpT4s2f6<?FyOFCz#5pe=V@mzs=0VDr!Y5+GV6NT?tcuA@=^hXp?%FPQjc0
zAFk#TgN<z^U7B*&uUEL%T~l)i-qiDvMD2lkwCdm^4YIkUzI_|m?l*Aa3irFJ2r_5v
zE^U|G!+11CqYbZ#AFsN&zm`wO)bUHCcA~|?w#H!7JDCBYMmh;rip|!ZWL%+D)I7s#
zCpiz2>zptB(Q!{j+3+a6W3}b1w0vERlv~?~*#4mnm##IQWKvJF+1!?0cVYK;dmoyn
z$O`qGi%j(l8P~G#m8a_l{F*gmmX4ay(@uC;Q0R;?d`r^EPos#(Ugx6xn6{5rskT%h
zkN=jBNavZ|U9BhfDBj(up7O2d^QTKca>*t}hhiQIC|)))-}pwy-D~T9pP|vil-d#6
z_V=P0K3)!&;SBxJqN5qh(#&hYXkYTyLtt#_VygO$L)@|fVUNx_ESGDP-DXzF$<Z<^
zb>1W+!2MuX@C7}c(1{>^zMrk~7rQn+obr6BoSuB_VYX3e^{uEDS4uN4%_9F(Zv!az
zP&7)+X+#(K$~DE(3S2&2lC&5WHhh}vg-VHqMN7xKRGP@zZljvn3YA>!?Q!wFV^hyR
zcD=(zQsc@$x^U#wkEzg%gpZWIdZ!j$KRvm$<>Alpj=7u(3wq^LpVzT^2bV+Vm%7Q`
z9Glc?NluPXx*htt)aH0I*?g^bq85)Yo1KJahPca8^|fK8f@~ADS#pJtn>RM>Two8E
zOAz7PpN*5!-03XZy|k-AK91Uejw}D5u)|TG(c}01)KeaQ%H{uF>4&h)c)fjYq1?uO
zQ2K;TEQR2$CC<|K7ZsZI_BFZ>l_<o2y{gb~T2Q62XZm6||2$it^}*A3l~}Y|*>+05
z+WOp9XRO7RQioS3qKJJtfBfXL_$RY9O%nSxYacM@-q?fVfZ2S)(Y`{IdspWp*YL`0
zz@Pah_{u;y*7)$%>n{vnLH@$n|G@D51&(&YFQUx3LVshzF3RipE1~~{Uz;yoi_b$;
zUIwD{Xo>jLL>Qf0M~`;GFQVM;oc)1Qw+B<o1ap-n{IVoO;YAL3({k+Y!IZy*=PgD5
zL+~|?aI~)wW%#;6INDc;GR+G8ojwgwdK-x`QTPo+eE3{JINDc;GWzWRJ=zJsi1H>P
zzAh2oMTGT;Fg+1wAi~Tm`TWk$!uivnv@ttFEjk}0*cOBr)iGu}g~wE-!Sg5G-L|@H
z(gKNteV9w<;rX*MvlKC`+QmeI$F$Kw`!$UBvqj|`z018<ttMP{giHK@j)c?S=`9ms
zyyM^eoZD0koBet*7Z%|C+s$k75K(z$h_D<HRwTm5h%m$a{qyFyUQFy3C~vLfr<|k1
zB`nG?-?I$ZfvzT5%avZrz88~@&i?`qdh}65#ikFFco40xlxxLjnwEfAcpsky+|l(&
z;x5~nz;$>hQF|&A<$snaeb7oF9PKMa8MG7#NBas<7F(ge<s(jncM)NJBD|XjLx1O3
z-`~}U$~V(U`zAfG9}^=4^9@u~#sWm~d5EwQQG695tV)FM9}s>LEe!2RM(95mx{2@u
zBK(jD_YmP;B20DXa=M=>ye~zg^Cgu=W66POd=L6DIZH_B@u;M#n?&VlC&FDsc#sGa
zti3`Tw6C;-at{&z2%VIdz?nRSsLcXyAGb)%!Zae`XkQ`9x2_yMDq`D*smp`%`JVXt
zxZ;BDenY^yD|kMc@#l@+UQC_{^uL>KwjzT{bQ*qmOz!;^yfHA7xn>HFsjPzb8+lr|
zz4vPHr+|J;IxXNl_UQKF8g?3|eoVRA3dT?9Wo>c;KFJCedB2=+V?Q3#(1+x3UlnX_
z*dod<REWnEcEb3kxTe%@-V(9f9rC-ql3)9n?$vGUFg7?L<Z>_`lOnsqm%T$<xIBT!
zWazHMH=pK;>kx(cFpib<CuQG9jKch5qu2_bBElZ?{<Tvff6_zj5$5t3z;Y|;FLYPm
zbc+3hKM>*PMCpZ`NYFQj_u~w7z82~eINur^S*oGf;^FXuG2(R#t42@SKy@Fcu?B6w
z!OE=jUhQh%`Y<`yR@w(S6A(q|0PVv780J?&;nHP2o*%u%ZpzY!IoAsB+ZnHQ#&za<
zyne!XDS+?}`+Aql0vT@b!~6^#0T0SEvEdB@snl91u1nIiDmBG^+yD03mrh(Hr&Mcy
zlCpQ@u2&E5Jz!Hx2@x~%`c~6ppZ}3vhci<?Igz4LhGzfQlbHz>88HLetzNrTo~53t
zEcoiord&O*UAo=uVZFUWl|ygpwEZX}F2?#i%kKB)Cb_%H@1}{p$A#H?vS{ErjGB4h
zj!4VO%T;Yu?;YiSr2k2;usyy8=I`FE%%4T`bzDk(+K;KiLwR9-{cOaO1yOI9|2Plr
z2lMr%I(!bQ>*hnE+L;__^d2gvUE>=saQP~LjrZz~Uh2V|EeClOY2vrLhAXhXdN1E{
zBzMa4)`_13mDwTLDU=FVg)XvMh|;D8#@}pVZW2}uy&Y$Ki&j}$JlV>_`Z=F^fjwP)
zD8=;f2tIAF=*$VF>Y5(2rZSq?4VC4{?2Rs^M1FjBs{SO^^Bp6C2a8Lz@<dd)FH0QD
zZA~@&HL*uktF}`v>?HfcMzLq*ss#tRaaW($7VQ$fPHAgL^Yi{hqgrl&fN9N{vjvZT
zIK(~Ofz?cSgR@hpEd)L1O0wj%7RB^Q`Sd)-!&9zBGIdcq+?8@KsWN4Ki;9<R^*$B&
z{h(Umosdaw?xVQulR>^0Qdn{4ho4-hy8FP6TJ`e<o1;9MMcA852~=*+Pb*dB`J@!9
zozA1ktq{0a6i+mt7`=3CEJy|Bi!MWZ!~7!M$%%;LwAQ#bc8lvi<lE&cYNnKKRl#@>
zhW3Z=4H5i<rfO+0e$n~9!18%7%rCX4uU!?-Mlspw7b<Yzy}#c)@b-#EEn~uyl$g4{
z?9d0jX8beq*~{`8;<sa_y=Ug0WjH!$xAN?-6EAON946s;nnk`WpL2Ql56-&5C2yki
zOvx#|)vr6NX76H_F%IG@X~JYQr5=q@DVoIbdg>jaNegFS!;$?`58eE2qc;uB>j#^S
zIo}vv)wyc&^4p2myImHB=eOBk=hKR3V4M;oEx66s@+&9Yz)qo+S0?OLB1K2ArBE}L
zx({=K2I|u>bn|_c^tqZ;m`}?C4BumfG>$!gjNH`7-YnIE`Sge-sxH4es*YUs{HWRM
z{unVy?5H5g`tM0zlbhZgV2ArnHMG~p<g(>mFZ{oDQz|q$H5>8z7+St??F)Q=l~eA_
z<rK&3mP1DJAAcCS{=j3-#X<kSmy>)>P0->%)kXP2H@3YmbQD+~U+B{;*d?Z3T`zIs
z{julH#)aO8@Gs@HuC?oNHp!cwIkqW1R#^UocIakroPOA?Tj_;D?GK{2t6k*s*{@Ef
zSZpWjOy8H;u6kwX_c5QT@14z=DWz{82&%NcW6S^SEgM9dRIuG-a2u{NE6cWw)8g2j
z8(SscPjA+4J$iJCn>K7yZQZ~)?af(@sLzFtj*Fz9J5%z`J<8(Kj3l|5Md6u+ajkfn
zKIz1vkxbjAN?#hwCltc5hhETFE@Jz3_i%AjA-#rd+IuhGDCBv}+n?ARqiO20tCsca
zv|4k0UWY+@_IOxZ<)_+&tr}@+>`Ym--Up9g4N5cJxLLDiNMk9&{oWToAF9IV(%xFt
zRKa8ga&7Ei&hd|$_xh=~8NVLLy3!aTpmrxH@m8Ed%o7Li0L5P(MI${%>au$jQguZ>
zC`K&lEaLhOI>GmimQu8T^FOI1`=pr;-)rJ!K|Yw7mqyG_YKA?`RTE|0yG=}4N$)@P
z+_~(tMKP(q)0w<%YPhumLlr|~pqb@mknmZJ#94`M!tz&=h4xu(+kJJ+jL#%L#3#IE
zKdzRUmNFQ8(7~P8tG1u(&^e9Nb~S-V2Dc0!lEoShcmJ6mJ-4G>C2DdHuC`N$cRbzX
z^-i|KC5%*xT3NSF4J3HEAKJ`xTvx{Vtm+jn<1eunv}C-A`V;Yd@O*c!4f_F0#gwD_
z9336^>po%Fn{n!-fYNDSpW>r@0|t_MU*tocTvCWyctHtY7w&RBY>6B@{zS7P|C&w1
zp@6HgUcrOqj~rB5NiV0L6C1T)@Bc9^%j~OmDWNcXYo3RMyd6ez^Kgd7#R#9s5<Hps
zMjCx>%(TB|URkmzekb2n$6UW1X<y6alI~I)&%~%Ogf@+o3m|w*(k5tc`2KcRVVt2A
zzSqP{tjq^TYPR%y$sSfOBs<alF>_Bdj`4|i)b=o?M4jU8+cqT_<sx~SXD;?(;&-C*
zV#V+C+wop%5}t1ZSMbD*7t0PBp&E&oe0W4nykkSI6&;YgNGo6beCedJPkyY|$W(l3
zw2D@}pV)(ZS`XGZ#fLS~m+TbJk_cHb9E+(4Re9;>Q~q4F@SJo>&b0-)py`7}RdEZ7
zXB7IE+nhP@_hpk$ejQ>^jSx$7A@QG5@$uZqtv|F)y>Q@B+QIKX4-KCC;O{QTrrl5>
zCM@H{UTgaJ9eG|Ri%Q&+&R37mZ?DQQ{?X-}9jh9%A#H{}VN7;wKulcG{vGP2)p-{$
zNfeFx))@0NysuYHqO1-G+oal?#~4n^TQ{o`Yj{)M_K3DlRN!#xNOh!Q1grg?XE~%j
zL$+OCKXkBZwuwjV9NsIeH^%tU^PNI6F4BKi-#L6Q&Cw!h!S~{W^35lXONfrR1awuM
zi``Mfp;=%>XDF{5;eIXX?$57#gA~i_v0RENa_q`8_O6$XHE3OGc{V95Z?F(-O4*qB
zNLKFZ`Jp>O43TAT89XLfTG|yeDwXftJC^lSWR_ZDzX`PeHyAIV&vLSF3|Bp5DS!TC
zY!|)8wxjqL2|2sIT~(|NzEgFJYohTBPi(O}Ym8dy*lXIkq_!D7mUNrFRP72$KL`Dy
z_33TgMC24N4C7T}r}KHv@?QL2@x6bDc_Be5L1KeprvH`xu*^+v#qzK(!k4(k37%0w
zs}c6TF}p>rHkTcSoadbud^Q&qcZ5!;#ga#Hzqx&k(((qE@&-d4#c=h~H$CrCzn!J~
zOvmalq+ES;$kOB43%lc#y$7Cnep3&dm%aVtLqS8;Y?1EVy6>L|k$ysshUCXa+a63w
z6Ffh__g9NOXIAuchT;7a^m9mv!aK0+5HBHrrq$r~__@~8^Ktqo_NMXQ573CHnEB~L
zy;-OCV{xUp!c~n}Z;oz`^8ENze~a2O?mLR%QxPmYr7rbJm>TIH&qTEHRI_V`+Sq>{
zZWun&_xXc-sc#Hl?)83~E(4x}Uf#|+)eJ|57?afcF~Q-9uf%U^T$fK6&F!cryW>$G
z#6=&Z6?cWLtz0FOzxNB{X!-^wwOH-%@@8Ub()6bpkkc^-apf(lpK3AH*U01Ee1G36
zuNbN=ciBaWX;zWw|HsUr<Vr_QjeG`G&h@5e{&&?Dc<<gk!l#vLZuBC!V$}QloZExX
z3Z2U7Y<h#9>8DN}WEOWW@N>~<<5U{EG`JzR*lD1g-8WF_irtX=VbTZ9T-{Yz2ggS3
z`bUMX2tN3Il=WB7p=SfCIX5dPW-5<-=b#pM`_eC`Qfn@R=~D^XlY`&*dGckqQZ4)B
zvFvz$iGAFP(+)0&b<&>g`Ppwj*O>ln7w*8s23(TIgz?Ex=}Wh~#bZym^<i4~g1%D~
z`-aKy_byzS7*el!KgCEQQ^GP~`NqpDdV@lW?}ry%@j}7ANAL%XVs%x|`ePc7JxQd#
zWWw<@Ze~oYAlKr{ZfwQU$Elij&L(e_Gfm>=_mtnni`<#lx;*||Jw?CNIea$IWTR9@
zU*N{OS~=qHV)qE=YD{{5R5MMu1mDvP3d2w79ki-+GVZTolF#;;Ww^L8O#e<9r3a~4
zAEvY)-uG_u(lg4FSM1#@q8RaRkfhWubb5o}%d&?ru^QpOUTwv+R%}ZS<Q;O-?8Tgk
zf&ORlsqGFmqwxv9>+;!6itm+~KHPC-aA2$b*sFM&9^>Af)w4iKPqO7k^E@v0`MW$%
zPTR;RK`RPF2MfhBlf`VDH5?jCr;3m*1u|;&oDaWrZ#rg7$G&HtvsG6iw$j^vIeqTn
z)dbG7rEm8tgo%fq>X+zvUuG#cZ_F&KUSi;HQgEt0qJlvx<NUc;jVvv<*@Sb4AEU30
z=qn~VZ->t9fp#&Xs(QfH^#E)_4~GpLd$3w?U{OyX9Eg^du#Jr{c;L_lwO|}LMO$lI
zbRT^5nl|jtx#rgaQ!eObeOnLMQGX=>&ez`8+XrmS__`3%Q1@NgyA<c)<>&(OK~WMk
zH(^g_TPrVLR9O!WbxSvb7xF>VM<87^O$5?H(*frO@d6P@1C5WyMdKj)max&Y4KUF3
zyc`KW0|#F(@6~HYwl;3ItH8i_#i!-&M&RnhzV&EKNCS-vd+z%p5FUYW2!ug^k5~$O
zAeOGe9<Go+SglZkP4vM?0=nZg?5hfTo7RXs?9*!trx0R;xWEbT;iL+P?gj<Kzy#9v
zb%UfJMMxOZhiuT?2=#?3Kuw@RP%o$+)DkKSb%v@#3!n`Fho-`D12rurlxiQ*QaY@r
zK)42$VU)lQj4^s$!N6EoX*H~ZjwTpY0R-1^nxN7j&?JwtkoS+}5Et<CErXTg^Ekv}
z)qgJ>hZwB-Z>8f9)m6V#8V-?L^{b@f5E9Z2WaJc-RMZ=3XzA!TF<=-sZ((9)VP#|A
z%CT+x4lL(RF791CynOt-1@;IE35$q|iA(I2+$XjFfb_vbGO}_wc?Cr!WffI5bq!4|
zZ5>^`!}<nC42_N&n;bJWGe2%&X=QC=YiIA^=;Z9;>gMj@>E-R?>*pU37<3}|WXLJx
zxX>PGVFUrqZqS-V5YT1^-C3Xjlt9<i##YyzuxUA5(?FDv!-zKgYJ!ff7{pTqA2bFW
z(5!!jRd(@K_Oi7_fWkJmhJ^j@!4DfB|MuftKsgzW3%hj_>{AewQLzYuTDdUL)X~>p
zQAi~iz0g<FR#^uTMI9}in)aV7hb2YCCFnNd+^}HQ2=)qI+4kE3YznxdmM$#ex({la
zg0QDF!E^??Td@MVYdRrs7e_0C(Td-?%`SmL8~<!5?PCcV;b@F?se^R|Z(k3>cF;bk
zE-h+=04#c-dmw`s)Tlw%S!l&#2iV|%@`=-J6vTpYleJ>N9>Z8IeKk$OI=YojtqI#)
zgB=SP^00@mjW22(1?vV$!4~=im2lX9e#JTrA^DAj?SDbt8m%zwP;Lo3)5E6Lt9C5b
zl@&H&24e`&7_iMf*2U4;7E(v611j0RE(B{N*05_Zni;edS|&kM%@}loZLoa8)-GOP
zBWKOX4`K6d%RhwzLjqpDsNpGeM`r?4(Zxl}(s8BkXuZYIdZXKH+q${?+B;yq!Ab)d
zw}If$0W3l9cwK|7Z!b}z_WE6Suo8d@@36s2d;7pP(qO#9+E(bl-yUc_XxT*2JkXR@
zEL^Oa-mzKbi%Fq;*ykQqw}!pB*A)SD-#u1J3+agM`<FWUJFbgJklUYllK&Xb+sEc#
z;_XG_d7zu6`#E~~_<}`&-vUA<Nyq>#7mSI2X#3-^^EKRcg`wjRESR8G{9P{5{b;;D
z^(Jf-4SQ&NyF)wJ*!nqIuM4}{Mz#T98VWTXfVRw^kx6K0Q9}E`|J7O;SLk+*J`SLS
zZiDs$XX5bx+%Bt;P-S)~F5QaA*L8KUH?d+F#1^c>*bsUOY;aB(<RCy;)d~g>pw3uW
zd;tRmdXBG~uQ%F&{+9nA4tZ#M5kedOFZ;c%8%WLF4Yf`MbwI-s+VFoF7B&!HF=MqR
zQxU>=vV)r#x;HwQIfDE1?>iBi1bTb3CG=o;CUCU&az}UK#~L~kYN;R~fLa+Kv<Da%
zLvMQMJ$NIG2Xrs^gKOK3qZ^t-(-2mHz!I;uC`#x81I~>b;m;b~mHYtQt`R=O4e=%X
zN3VS4;B)hJaasM~L4hC?=z|givVj7jAY~v^Qc@yEkG&!U8+HgER!a9MEUwxoB4VTq
zYmTs3SZD?7bSxY!;DA3`j{rER(B)UK=7X@R50-wQ5V5xQMvfRL3&ILO0u`0iB>Z0=
z(N<H?Q6zX_tq9V-_H7WpskWofY3Px@&VL5{giPUj;yOR5cK*Jeyw0Dp&VP2DKXsiS
zcKL_<{F>=25phXK8>eW9(^Uh5Xo~0)#Q#0e7Qp_;$p`&u<@`_He_l}~TF*ngz9$m-
z&-3pvVX$sz?Ic0|d*}KT!jV5G*o*vcoon&2|F;wThy1aK!~fqs0M=}+oh1LwV@-l6
z4JY|?lEUJz|IWD<|37>5|L&FlY6PG;p{v=}azxP|KLe~-``<Z;!~b{cx;_j8ti=2K
zT+#dp4GWKmjEatlJslUHa3(P+Ipu6>+PU<M%<~s6Ub>u>os)YdFTbF$sJNu`YFT;3
zwaTjN)it$s^$m?p%`G=t+uCn-+`8S_b?5HA``r&7_VnWW`Uf5j4h@ftK7R7_+1U8R
z<ka&QFQ;G4%)Wl}_TBrr`GpT37e9So`ttSL_vIfyfBhf7i2d`6)_?0o?0>rc|I_*Z
zAGiO1^&<Swe8P+H|8)Jqb`m_T3c_k$c#ngBg;k6iLA7y*NfOjdCd|UvV0qv*#LChh
zU1s9#?(5?q=nSu%maBeCJ1=+>ME_I>JnT9ib{)^f-Oth)K|H{QsgJuLL~%zvyaZAE
zYlOHSuoigD?*>~8xY_y(2H9G=fJrO_3<TOkmZ-^2@Pk2FxMmLp@WEPvQAl{}gX^$m
z4B@(Ukgc@?;I+ioLco(Hp_snjmSATG>I!A?_ID&qoO%1(!uB!_f?#}&kOsUfq88T#
z{cPQAgM4jW&;qVq^YwxWF_>st!z=Xx!*Woc-`8xtd?CsoZ0Ti5i1gPrc-V!6*W$QA
z8xlgT3*!p28(vVkwJ@&m(qs+uWNR4O1>V*P=Fom$gM8o_5ZY~BI$#dX+tS6)(gtj=
zuEhn@YJXu6I0ze3hu3otUn`i+_>-?Syue$cRa{qIYj+oSS1U&}o8M_dn-gpZt>poW
z!yWw~$Qnk?62VIVLEz{V2DGHDx2+(&4+McZDySG7U`xm!3_Dr63AzP>-y6iV?wXam
zGt}*`Z~&kWpwR`_<mu>zN)PQ3K!I-$?_cZKYuLp%0H!>^Mj_g-R>MHO9eiwIdchWY
z)#^1%m;m)ci)ZI$>t^lnJDWB9S30X<pdrDI)}J_5wk~L;R{AMgI<z0ImJs~wu0w^_
zuKyl?s3EM?@wdiX8Eb#W*V=V-?5z2npogJCTf<=a^0yy)o1>MLEuqoZ_-Nl+^Fx8r
zrS!isG{PVM%2*=E%f=U0?hF2|9%0;}LIrc5HZZZ_4t58BU-O0=izNsil3jNVtl&D@
zIii-O&@qd~MaTQ<a9_KIQgC2<d#zz1jkR0}0wQz)u&K3LwsqqFeGR)>If(lE8tQ-0
zE03Tyu^U!t{wmERP#lsBR9jOXi6meJBowHLswxspplXN@Pz6<e#A5Zj<|>w2<#Q9T
z0kQ=snhpXK&2O;>r8wjTfodWn1ge1CCQx~#fk4%eVggl1E)l2+5=o%?hy#HdAf^PW
zg6I<H5kzs7N&r<p3~S>FQ~_ZiP<Ra_P<>?np**6fghQSZr~-1AKsAvD0@X)~fhuXM
zA(=qc4D^u%pxQczk$_cdL!jD-CQw}ic|;1RlD<B|N1*ZuD}ibvWCW^%%s)W+3dkb@
zRYYzRs4`MXpi0Ok0#!j`2~-scAW$vDfk3qp0|He;6bTfEh!Cg=f+f(y2rYpgL6*DG
ze2kG90yRWNfa)76BY2=-Djj)%Ue{JZ?h@z`<n}6U0eVCqhtvR7kw1)-0aZ}dM)FZ=
z0_9u1p0G+Ifof|iA^|{EHB=B66q{%w4y)7@C>mdPl_~<&J*<Wt1gdYSf$RZlf>TDY
zKsBIU8CEgbDxSYDj~E!}5Xy^|X96%v@j%gXqUA>^EiF4OC4(dxEtMeI1~OU(2C8l7
z4rhptf-Zssr~Uh$s{Q+(3X|fi-#&~8J7?&_Lja6c1g@h-J69|Ps{NT%#zA_()3o&V
z!NJB1elSJv;p;)Twt`oZLA2m&3fPI0cMrfp*^~~ipLw7N4UG;B3x$c94bh>|;h|f|
z$zf(DDhf8aMnptHbwguemW7X3O4le9=3QWNMpri$vc>X+#)d*H1g2*k92}^qC<8n^
z{5?GWnwL?~(N@#uhVKYE+B!!JxDf*_T|^b){J%Xy7eH2z<O$!|4(luG_mYf#zsR*q
zp-?!aHQhdsjRq2SKVa(ZWo^1*DpAne&&?EO^i9#7>U@11UA#?UIvf6XY)t*(pB4U6
z1osPx2zl68{Vq}{D7@QPlOQcD=oh{JJbwQA^$WfFXqB$vx)3=+;5AIlmpJwB{NC_?
z=c`8i&5tC?KP&ogK5_m{G5^k2N&0vGo|J#**IxOXk0&ah^R>VEcZv8>RsYV{t^J!H
zyDt7<y&N(M4sH93K(DR(5jfVj!>L9&<RUoqSd&xDx^&R%S?zKt`OP08;veq(cYYiZ
ze|`RFy50W;|1<vY^dAuAPdfNFpE&*ek-z!G<!6EKlxub8TIVNDr*9qa**ZUQdA_|`
z$q#{}VV(cps(&pn;`EbV|0ze-IzMrF_1^voXSU8yoL=g}-}NTu3v5R3mVe|*-2WD~
ztnkq=g5dwBazAJKJDr4e@@ZhlAuZt0<DcRe^Z(5!9w+1ifAfjkJ891fAI;+!`2Q&%
zP^m+M{N@wqBXjuQ`5`9%&cAE*H=nq@8J+*;ua|4H3l8Z8x4wMq`E;&01Ox7$_-4Sf
zB;pg-uh;$W_{98!UVro3*U1sh_k;J}{Pppv{c#8u-1_pZ=cCt2!~W(Ix6flDK5_i^
z@PCi5_T=CBZ=U|m|9{#$AK<F0{EnaZ5?9(`ZP*QLbe;9dpo7)|ak2i{z~=n{i6-z!
zB4A{!A$ftwBQMQMfY>Pw$T)6?&g`_{?l`WC2q|@~vK^$%t`@YeLmkHAu3F1jq+3_$
z>O{I_qee>l`JQv{d-uKYkh%^#yY*zg_jk|l{P~?fzu&p%o_pR&asErf%z1IX{uJxk
za9Lq^arw7hP#9jE{|!2?Fpz(7`gKL&#q#^VP?)|reEt^;!;9tLf7#i?r$o*kzUR8L
zhrfK|*~4dl?d;*JXBCDQ>))POVR&)<mc?DT+W30z5B*zMx7MvY8a7jt_>bgy*ZxP?
zEP?mRn|a<#Z-vb@jbZafAnl@`h0RRj?F{fn;2C%a18J+?4x1^YtwomaTHt*f-kIF%
z<k15Lz;Un{ya0BC?cgpTw~YLfUY;}IO#xM4JUB&p-vx(348Pn<|4#YAyWkWU_tUVs
z1WW_7K_gfOdcb|)LGT244!i<>4o-tfw9n8x<ON;?`^oEZ=tJN>uo^4_ji3fx4Jttx
zocMXz90iBK55QyKn_x9q3KHOI5C-r5Cvw3P<i8DU2J1i<SPGJ0FL};}&HxcG4vf$y
z?}FFB3t$&`2y6le$ZroA1gA;68F~+Br$5$#KL-zhC%^&lHW&uw$HL}PFcZuLOF##>
z2W$Y}1lz!FZ~(jo!pCVVa1EFX8o}LQ1K0$<4ITq~!Smq9;0^E#U?|f?;8HLXBtSE`
z3&@S5OmZ#s#e6V@etr(@1`mV31RFpPXa|cx0$dAfiC+l~gOl7J1+ReT!7lI+*bMFm
zYe5H)y9Jq3z#n?D?=`%Fb+aDY-?So?>SYieXX0AdOcn5xyiXApU(gV5uIGKKJ<ST(
z$uhP$>21t@9M}FemomX3k2c2ilj6k?Z)|f}lVkr6t37?J^1}VSvWC{~Mf^AP1sw`A
z_joDgA*7o{8e%2*Z|j+CY98+|#Cb>36rs6uRm!|<5}9m*V#?Q?$?=a#UZ70<ft;h}
z*7DoBRuxFzSDt2Nje{bQH#tmNy^%)S+jVB6F~ec~FM4mg05L8rYta6USU++zi#yv>
z@fGYHe3o5c=~Qn@g@~H2vPL#{=-!xPewlNd$zJu_qe)9!4Iyn7^S2{>uACY+^|pHz
zHnUZpfInPTuYE&yf7!gyT)WrGd)K9GOBK7BJysGupEW3Wclx|!YwrsD?@M|^roAui
zwJN-O6lYPYM@Ll7;f;9<<<GM7qS<az;fbj_BzrnDtaJCr(`?c*<}u|H@8iJGF8>wY
z{B3~er=6%8Igg)%*^<{UZF{5yzs#2^Q1*K%hyHJSP@Ae$R&rYH^s|GS)^(w@Um449
z(#oZ@=+-%n^XKGr_JdGxbzq7l&&{-H_4C5AHCZ;4cJ+2d&FV1aPNbLDv5wuGT8o4`
z;dHg<Tf08oNT0W6Q;E2_M7cnBnnWk-%q&Lc<GmVg?rH7HrYW$;H0I0vKbO?XKpb`)
zwkP?9z(&rD@^YIf8d6k&tsb1w8e=)S%ZsrEZR>C=9adL0%-q(^wxE=^{9*Qnn^t7j
z_`c;{dpo~+_^XtCIV%LI9^0L?(T_vYb2>DeVV-zFxPf-})8DTWIZq>IO<N~fi_e$-
zHiai!r3&VD+e%);<)U0>+sCygUtiR=PL#hoV@H#jUO5wWvCdwM)R;q_UAcuIWBx)Z
z)g5sb{@FSF-LO0h`ZQ{FC@i)T-A>uQN>fxn-A(=&kddx5dcG#U47A63`m{WMb3)rw
zRE!R_%|bp9_1pcL<b1U_b|AVn)o+#;hO0TvJn`mq^{pa;7%lQI=uUNc{x$MbJe#9U
zajiIUJIs1<t{2A*BXFW7n)iDJ$?c-CtyLLfyiTX*tmPw0FQ(o!Z%)0h<SW@(d>hL>
z{-!?dLW*acxH=Yr^gj%=<29bC3&dfEo7V<SvL>g48eOAVS*0Cy2gCE&<7NjSv(4VS
z&8!nbew5}+J|S`gd^dLaIlU~MP@=&4Uaa3A`Ql}=5DjAO$<FSSdEJlQ+>h@t_9EqF
zK;qLvx{0pVvY|N{u1~eDPL1KGRUeh#4Vm=VlU5@!nH=YDY;77-u0A6Q4~~-@ApQI0
zP3aUn$S(*5H*I$-X51~Z)${2fYHDoj^|tbDsautcn(ND({oQx6So>s|$CHTdn>^Us
z=d5jGvpY4QIj9y-8I77HgI^2RWfLj(yYgu$$zw`(x3S!R7&T{dPbib|>)pbZ$3Q#t
ztgxj{if4WlW(ZC7XftA}y{@aRC#CIq#ylJ3v(4G(Hz}=_bouEFcMIk;=>90BLQy;0
z<Ju0*Y{ASfZw~Bxu943*uKBv|eS0vo<g+UEge{eOs<?+n9baU&+n#aSYs?PoOR&eW
zC)00Q%NMy_pf>$JZ@eg0fbpTZY?@3*ySvqMjOBhRuRPx>UyLf*$G3T1PrEt!ZHkNd
zMx`C1QS+}QLKd473UR6%&#=YNn2k;=?6y(0&I19z9iq&GWsSY*+q%}U@NJ${`ncO<
z8fP-%vg$F<1$zK3L0@RsAHel3yQrqouJ$J8POcEQ+POubD(;EM19!hlGd94~mq@YL
zJa^_4SjFvScCbvQdf3;@N^@JvN=J?FcG}mr(rc6N*)}McGtj+nhwJ0a_;OF{<3T_9
z*E(y`vs|{1?Zyi^#OV=7UkrFKwlY7fkJlx5DoUOmbgb@^@<YarzEy5~asirs{M6T6
z$1<_d+%yjbjZHCoxHM1TO-@6+K8l(LZCzZC@%-uT>$SaH5Nomdp4C-5(KGK9mWEO<
zV*KSq>z<UWJDjFM4rP1Q>0G-vO*U7mrrsE$k=Rb@KfC-tY5|t*MyGNHxy~WK)T5Oi
z9S=3&1HOYQ+;@uq7Cgll{kZr|Y@1$#VlK^XqF(Cef7zwpoZow0SgKhD^9klnI=AN_
zdFz|h)6h$xk3%npZh}@od!bd(rO*qZ_0TUtXF~OMIt5w@t%8mNhrU#6LipuQG{wyK
zC*}P|@lU&?*8cuX;fL@)_4R!C)A)x1{$2Rryf`2JN$My$^WU!h;rB1zm)JTbE-#0O
z#Mwz`Z{0-|Epn<`FiKIdt-IoU=00nI|7#08%|YOM!EUe%JPvk(?cgD>8EgUrpckaU
zU0^9#0-8Y*)Ps2-0ct@FxB<)rGr&}EDX0YFf#R2gQ+s3PBsdO^f>*!+@I2TLc7v^8
zGx(kIyd6}WjG1*$)mq)xnC90zcrV@n&p6r6iT`qOl1<Hi)K5f{iC-<f`6cZGR3?pi
zvRk3dqg2t3aTh>85BMDj|1U$o;V}Hq6|Js0DxUoO{KST7-1NhguhNR@{5a*WVMV+N
z;0qqazZ{5v9gsij`87Jpp9D(N2o$f$qf9q!{<lLVo8>$kz6u%vG&}!&gSiz@Syc~}
zX8@?o>pi*ws_=V(!Z!lR;kP2@D)6x9e*~)XYzLC}*Ff?99;kdT0fqkyP<Ry$ruOmM
zjN9|zDoQ#hJW|q~hr*o)5v4bCJK?1_6Q75|ohK0`RX`?)E2#nz8~odH`At`a_Zg$Z
z<>R(9FyFPIf5YWozYM<VZXVg;==$#-J*B(abpw{}B>uCH9)2|9g2!CfpLVQTk3Myd
z@uOb+J;eX#ZEtP6#QbdA@ojgM&VSt_HpN07BnuDUc{pPJ=<wZ#uN@ozC$Aql`k^t^
z>s-kW{wQX@amT%wp)n~w9fp4QA9TN}U*#+=>v;Q%d?)3=KQd1_z&pV|@h-vKVFvOQ
zU)0donm5RKMrsrJ`T5l4l$Y~y{8Hhi@+lSH=lj%8|LdfB)_$;`_bli^sGi|lp?bED
zgQ^|h*cY?U=EtF$bKDR8B6KNK?{QP0dcQmM5AJ>MdFYq%Z-Q#>&<_0yGy%N~di0r?
zi9mNkFNf}WI%XzAE1+wk2HFof@xvHj1c?uoQN97y1o0rWxDD0k11j_<bPqkt{1{vp
zIX7UwcD|<aO049oj$Z>UK>Tlkr@$-Vzrh3wJp;@KtAL;8Cc-rTS_2*cyTMPuFF*zH
zrh^8M2ELOWyoilYgTa?tb8`I0<Ig-Nds0?P>t`uFh+Obj>c-zH_i?}N3m3UE&-sm@
ze%4+gf4`8=SG)Ob=ktCYRPPyj>rnqqWm>NHjasPelDYc;#5xx*#4pvc-!c4hvl9MR
z_?rLkg=+qP2&(wU$HdpKgmIy<`HNi@Xc%9v-ub4M;NMV!@1N1DJcIcxDG`4K{I$_C
z`>$W$atX}9tz~8_eBU2w;J+8rSiXPCf-=6-<^2N-%S>e;{^mx)1Af}rw&69<kXNd$
z8Z?U>Dr1fvJ7$g?IbvRW?KShvGtZcf8#kI*EM{)J@kUc!U2U$q>MB!JRb`lIx?lDm
z88tiFTt-8m%$ZM?Z0I*F-Fu^>swsq<z*XKtzV+woNBC*NmCTy7e;v!W@%(g>KsqZ(
zNrSGKul)UVqkHx#-RPdd!F{86@Vfg#{-A<`={{<_Ln1~Rqp=pQw>Rn<jol&s>7n=R
zy*RK6(hWzhRJt8JwI@EgqoT4xS7WYx0siSB%fHfIjr{p?j?~^lvX2&4N2Ap(3(-wo
zqtTWCzr}`D+)|KkxMCtjAC62M+)*(RaR{uaO!eJ2STTwGh9maghE6I-H&Q!+nkn~@
z+M8?V@^>?wXl#isheF-`hxmi#9Hug6qH;&F_a}Sd{z)2Eq1;cRieu$PtChRt&1+oZ
z<W(TGWdtAcxW8p&;h6eWrrIm6pq8rNq`^U3zjm%>;uiP{MfR2ob0&GV4LzyzY}+EK
z+P1K3=V*1Yyof4b`)uMMeMW!Uz8s8HBGK`6tt_hFM^Xi+BQ4SqV0GssRLAF|FR{f%
z?I~p(+;`g7NpAM}_j|0yI=!Xdh4sS_PGJ$gJq*d`L$~%Gq8<+RpG?7Nx}&=Kur}iP
zrN@QooaPS=IqKChP)}QD`3voR$j`}9T|Id1>im?!iu3JuXvk^)sH67kwAJrNX_9Ql
ziOZ)OrloMFEwxwOS#5PXl-JFG{pI9&xjI=+TfJ*uHw)4^3zW%Y0m!kkJV}x|iF$f{
zSCGzG;OGd(-s1YnTAi%G+Q`idbGliO&RHNjsIkS9=UbiRX$&YO&uaed3#;$2wJel3
zp*p9VMe>~ON%`rkG4*q!f$KaH=AL6CwRNXH#L8Vijcrft-q+1D%2PW|Qaf7R&-dTN
zCsl?s$zu%hZM`vCF~N>yBejM4GB(|?wRmUi6LoK{P(5>Y@APwQI%o0D4qC8&%)h|y
zojs^(*5%s8S-kWe$odEOxqIL4#m|Y$x2JFF-qTh(?mv0+_rA11Kjc~GbeAjVImOOL
zI`8R1yuGQn<Z8|Sd2YJ-C!xQyoF>j~?Bz_TZhYg!2{o|d9s#Y)9<%l?#hQAj>9Fy0
zm*k)FHu*kZKaca`F*>@zG;<nEr%kaKdJpM)I1e(yyJDw3aVi2;j=hBFl*ov=!p6?P
zjqnzop%gvb={(6*l&6oFk~|GwocR2bnYn+&%!j*{un5R_@w>QJ?tO$s?0J+*qZ+iq
zkt`QiDLcKiD{S0+{Uat=ZoP5lUHQ0O)b}##d$0K)Ti^BhK<4BZu`T>_wBHK;hk1ww
zR(p(&>Ww7m!sPKNdC<;Y9EBG5kL?BXY4y+eT>q%1Y0zft-%X46QeM~kg+0?sNT(O#
z+O3bCN*TTV=iR`#^~rs_p*_WJ&-aSk#70wnzhSPYzRvJA@NFk3HGveJ9I6uO4AK4~
z3A`<a9wCn^+U#z2^{QR(%@^Pt+ufD(JGPuBN|y6sqm?DUoOK178f=e`FEc$_8w*{?
zshby>u<hpoGuLXTtRZ7tU3wisv-KxetOK8>jSi!?zKx#Ej+W6A%WXMjEzUYh>4j{v
zjuFAPTUoiREpL_T*VW{fBE+}IHgZ+0<!~eRuHS~`^HHmmk{Pi&*ozFsSdQ-+Vz&iG
zh8THjj3^#4&TS+pZT;$@0rc=YW|%&G2OV<f-u5Cp%XzHb^k#+<sm@vcbmFSMV-|9&
zl}*5fjI)nn^zL1&mm6r);0PJiyJ8suTRf{BB%{T;g(%#oHNKo#w|xC^datL#3i@i9
z9n)p&8u8C%MAoyzf07i8$Y-r{zLDLyJ=Koeu8r5*z?$5_t!r1MyRx$;_w{t$lx<tV
z88F#DSmhtYsFPK1YR#^iwz_&Uhtqa-cCd-l+ekEPa`m(slV^YacO#J+PF2nJYG-QX
z+;aP>OGnBqd!h9s1)GmP)7A8({+Q!kIABP>8DK--@>Dh#7z}pXsM&&BpIXgHHECUE
zO>WKBb*;{<O!Z8T^mRttv~hRV<c`*KHZ^&6&GcN}g^6?d2V#toUNgO*tToefl_q)3
VbiX}kC!@(|BEb>BOO|*y{|l?gcMbpm

diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/config.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/config.py
deleted file mode 100644
index 29e5296..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/config.py
+++ /dev/null
@@ -1,121 +0,0 @@
-"""distutils.pypirc
-
-Provides the PyPIRCCommand class, the base class for the command classes
-that uses .pypirc in the distutils.command package.
-"""
-import os
-from ConfigParser import ConfigParser
-
-from distutils.cmd import Command
-
-DEFAULT_PYPIRC = """\
-[distutils]
-index-servers =
-    pypi
-
-[pypi]
-username:%s
-password:%s
-"""
-
-class PyPIRCCommand(Command):
-    """Base command that knows how to handle the .pypirc file
-    """
-    DEFAULT_REPOSITORY = 'http://pypi.python.org/pypi'
-    DEFAULT_REALM = 'pypi'
-    repository = None
-    realm = None
-
-    user_options = [
-        ('repository=', 'r',
-         "url of repository [default: %s]" % \
-            DEFAULT_REPOSITORY),
-        ('show-response', None,
-         'display full response text from server')]
-
-    boolean_options = ['show-response']
-
-    def _get_rc_file(self):
-        """Returns rc file path."""
-        return os.path.join(os.path.expanduser('~'), '.pypirc')
-
-    def _store_pypirc(self, username, password):
-        """Creates a default .pypirc file."""
-        rc = self._get_rc_file()
-        f = open(rc, 'w')
-        try:
-            f.write(DEFAULT_PYPIRC % (username, password))
-        finally:
-            f.close()
-        try:
-            os.chmod(rc, 0600)
-        except OSError:
-            # should do something better here
-            pass
-
-    def _read_pypirc(self):
-        """Reads the .pypirc file."""
-        rc = self._get_rc_file()
-        if os.path.exists(rc):
-            self.announce('Using PyPI login from %s' % rc)
-            repository = self.repository or self.DEFAULT_REPOSITORY
-            config = ConfigParser()
-            config.read(rc)
-            sections = config.sections()
-            if 'distutils' in sections:
-                # let's get the list of servers
-                index_servers = config.get('distutils', 'index-servers')
-                _servers = [server.strip() for server in
-                            index_servers.split('\n')
-                            if server.strip() != '']
-                if _servers == []:
-                    # nothing set, let's try to get the default pypi
-                    if 'pypi' in sections:
-                        _servers = ['pypi']
-                    else:
-                        # the file is not properly defined, returning
-                        # an empty dict
-                        return {}
-                for server in _servers:
-                    current = {'server': server}
-                    current['username'] = config.get(server, 'username')
-
-                    # optional params
-                    for key, default in (('repository',
-                                          self.DEFAULT_REPOSITORY),
-                                         ('realm', self.DEFAULT_REALM),
-                                         ('password', None)):
-                        if config.has_option(server, key):
-                            current[key] = config.get(server, key)
-                        else:
-                            current[key] = default
-                    if (current['server'] == repository or
-                        current['repository'] == repository):
-                        return current
-            elif 'server-login' in sections:
-                # old format
-                server = 'server-login'
-                if config.has_option(server, 'repository'):
-                    repository = config.get(server, 'repository')
-                else:
-                    repository = self.DEFAULT_REPOSITORY
-                return {'username': config.get(server, 'username'),
-                        'password': config.get(server, 'password'),
-                        'repository': repository,
-                        'server': server,
-                        'realm': self.DEFAULT_REALM}
-
-        return {}
-
-    def initialize_options(self):
-        """Initialize options."""
-        self.repository = None
-        self.realm = None
-        self.show_response = 0
-
-    def finalize_options(self):
-        """Finalizes options."""
-        if self.repository is None:
-            self.repository = self.DEFAULT_REPOSITORY
-        if self.realm is None:
-            self.realm = self.DEFAULT_REALM
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/core.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/core.py
deleted file mode 100644
index 0dbc77e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/core.py
+++ /dev/null
@@ -1,242 +0,0 @@
-"""distutils.core
-
-The only module that needs to be imported to use the Distutils; provides
-the 'setup' function (which is to be called from the setup script).  Also
-indirectly provides the Distribution and Command classes, although they are
-really defined in distutils.dist and distutils.cmd.
-"""
-
-__revision__ = "$Id$"
-
-import sys
-import os
-
-from distutils.debug import DEBUG
-from distutils.errors import (DistutilsSetupError, DistutilsArgError,
-                              DistutilsError, CCompilerError)
-from distutils.util import grok_environment_error
-
-# Mainly import these so setup scripts can "from distutils.core import" them.
-from distutils.dist import Distribution
-from distutils.cmd import Command
-from distutils.config import PyPIRCCommand
-from distutils.extension import Extension
-
-# This is a barebones help message generated displayed when the user
-# runs the setup script with no arguments at all.  More useful help
-# is generated with various --help options: global help, list commands,
-# and per-command help.
-USAGE = """\
-usage: %(script)s [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
-   or: %(script)s --help [cmd1 cmd2 ...]
-   or: %(script)s --help-commands
-   or: %(script)s cmd --help
-"""
-
-def gen_usage(script_name):
-    script = os.path.basename(script_name)
-    return USAGE % {'script': script}
-
-
-# Some mild magic to control the behaviour of 'setup()' from 'run_setup()'.
-_setup_stop_after = None
-_setup_distribution = None
-
-# Legal keyword arguments for the setup() function
-setup_keywords = ('distclass', 'script_name', 'script_args', 'options',
-                  'name', 'version', 'author', 'author_email',
-                  'maintainer', 'maintainer_email', 'url', 'license',
-                  'description', 'long_description', 'keywords',
-                  'platforms', 'classifiers', 'download_url',
-                  'requires', 'provides', 'obsoletes',
-                  )
-
-# Legal keyword arguments for the Extension constructor
-extension_keywords = ('name', 'sources', 'include_dirs',
-                      'define_macros', 'undef_macros',
-                      'library_dirs', 'libraries', 'runtime_library_dirs',
-                      'extra_objects', 'extra_compile_args', 'extra_link_args',
-                      'swig_opts', 'export_symbols', 'depends', 'language')
-
-def setup(**attrs):
-    """The gateway to the Distutils: do everything your setup script needs
-    to do, in a highly flexible and user-driven way.  Briefly: create a
-    Distribution instance; find and parse config files; parse the command
-    line; run each Distutils command found there, customized by the options
-    supplied to 'setup()' (as keyword arguments), in config files, and on
-    the command line.
-
-    The Distribution instance might be an instance of a class supplied via
-    the 'distclass' keyword argument to 'setup'; if no such class is
-    supplied, then the Distribution class (in dist.py) is instantiated.
-    All other arguments to 'setup' (except for 'cmdclass') are used to set
-    attributes of the Distribution instance.
-
-    The 'cmdclass' argument, if supplied, is a dictionary mapping command
-    names to command classes.  Each command encountered on the command line
-    will be turned into a command class, which is in turn instantiated; any
-    class found in 'cmdclass' is used in place of the default, which is
-    (for command 'foo_bar') class 'foo_bar' in module
-    'distutils.command.foo_bar'.  The command class must provide a
-    'user_options' attribute which is a list of option specifiers for
-    'distutils.fancy_getopt'.  Any command-line options between the current
-    and the next command are used to set attributes of the current command
-    object.
-
-    When the entire command-line has been successfully parsed, calls the
-    'run()' method on each command object in turn.  This method will be
-    driven entirely by the Distribution object (which each command object
-    has a reference to, thanks to its constructor), and the
-    command-specific options that became attributes of each command
-    object.
-    """
-
-    global _setup_stop_after, _setup_distribution
-
-    # Determine the distribution class -- either caller-supplied or
-    # our Distribution (see below).
-    klass = attrs.get('distclass')
-    if klass:
-        del attrs['distclass']
-    else:
-        klass = Distribution
-
-    if 'script_name' not in attrs:
-        attrs['script_name'] = os.path.basename(sys.argv[0])
-    if 'script_args' not in attrs:
-        attrs['script_args'] = sys.argv[1:]
-
-    # Create the Distribution instance, using the remaining arguments
-    # (ie. everything except distclass) to initialize it
-    try:
-        _setup_distribution = dist = klass(attrs)
-    except DistutilsSetupError, msg:
-        if 'name' in attrs:
-            raise SystemExit, "error in %s setup command: %s" % \
-                  (attrs['name'], msg)
-        else:
-            raise SystemExit, "error in setup command: %s" % msg
-
-    if _setup_stop_after == "init":
-        return dist
-
-    # Find and parse the config file(s): they will override options from
-    # the setup script, but be overridden by the command line.
-    dist.parse_config_files()
-
-    if DEBUG:
-        print "options (after parsing config files):"
-        dist.dump_option_dicts()
-
-    if _setup_stop_after == "config":
-        return dist
-
-    # Parse the command line and override config files; any
-    # command-line errors are the end user's fault, so turn them into
-    # SystemExit to suppress tracebacks.
-    try:
-        ok = dist.parse_command_line()
-    except DistutilsArgError, msg:
-        raise SystemExit, gen_usage(dist.script_name) + "\nerror: %s" % msg
-
-    if DEBUG:
-        print "options (after parsing command line):"
-        dist.dump_option_dicts()
-
-    if _setup_stop_after == "commandline":
-        return dist
-
-    # And finally, run all the commands found on the command line.
-    if ok:
-        try:
-            dist.run_commands()
-        except KeyboardInterrupt:
-            raise SystemExit, "interrupted"
-        except (IOError, os.error), exc:
-            error = grok_environment_error(exc)
-
-            if DEBUG:
-                sys.stderr.write(error + "\n")
-                raise
-            else:
-                raise SystemExit, error
-
-        except (DistutilsError,
-                CCompilerError), msg:
-            if DEBUG:
-                raise
-            else:
-                raise SystemExit, "error: " + str(msg)
-
-    return dist
-
-
-def run_setup(script_name, script_args=None, stop_after="run"):
-    """Run a setup script in a somewhat controlled environment, and
-    return the Distribution instance that drives things.  This is useful
-    if you need to find out the distribution meta-data (passed as
-    keyword args from 'script' to 'setup()', or the contents of the
-    config files or command-line.
-
-    'script_name' is a file that will be run with 'execfile()';
-    'sys.argv[0]' will be replaced with 'script' for the duration of the
-    call.  'script_args' is a list of strings; if supplied,
-    'sys.argv[1:]' will be replaced by 'script_args' for the duration of
-    the call.
-
-    'stop_after' tells 'setup()' when to stop processing; possible
-    values:
-      init
-        stop after the Distribution instance has been created and
-        populated with the keyword arguments to 'setup()'
-      config
-        stop after config files have been parsed (and their data
-        stored in the Distribution instance)
-      commandline
-        stop after the command-line ('sys.argv[1:]' or 'script_args')
-        have been parsed (and the data stored in the Distribution)
-      run [default]
-        stop after all commands have been run (the same as if 'setup()'
-        had been called in the usual way
-
-    Returns the Distribution instance, which provides all information
-    used to drive the Distutils.
-    """
-    if stop_after not in ('init', 'config', 'commandline', 'run'):
-        raise ValueError, "invalid value for 'stop_after': %r" % (stop_after,)
-
-    global _setup_stop_after, _setup_distribution
-    _setup_stop_after = stop_after
-
-    save_argv = sys.argv
-    g = {'__file__': script_name}
-    l = {}
-    try:
-        try:
-            sys.argv[0] = script_name
-            if script_args is not None:
-                sys.argv[1:] = script_args
-            f = open(script_name)
-            try:
-                exec f.read() in g, l
-            finally:
-                f.close()
-        finally:
-            sys.argv = save_argv
-            _setup_stop_after = None
-    except SystemExit:
-        # Hmm, should we do something if exiting with a non-zero code
-        # (ie. error)?
-        pass
-    except:
-        raise
-
-    if _setup_distribution is None:
-        raise RuntimeError, \
-              ("'distutils.core.setup()' was never called -- "
-               "perhaps '%s' is not a Distutils setup script?") % \
-              script_name
-
-    # I wonder if the setup script's namespace -- g and l -- would be of
-    # any interest to callers?
-    return _setup_distribution
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/cygwinccompiler.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/cygwinccompiler.py
deleted file mode 100644
index 8b79ffe..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/cygwinccompiler.py
+++ /dev/null
@@ -1,449 +0,0 @@
-"""distutils.cygwinccompiler
-
-Provides the CygwinCCompiler class, a subclass of UnixCCompiler that
-handles the Cygwin port of the GNU C compiler to Windows.  It also contains
-the Mingw32CCompiler class which handles the mingw32 port of GCC (same as
-cygwin in no-cygwin mode).
-"""
-
-# problems:
-#
-# * if you use a msvc compiled python version (1.5.2)
-#   1. you have to insert a __GNUC__ section in its config.h
-#   2. you have to generate a import library for its dll
-#      - create a def-file for python??.dll
-#      - create a import library using
-#             dlltool --dllname python15.dll --def python15.def \
-#                       --output-lib libpython15.a
-#
-#   see also http://starship.python.net/crew/kernr/mingw32/Notes.html
-#
-# * We put export_symbols in a def-file, and don't use
-#   --export-all-symbols because it doesn't worked reliable in some
-#   tested configurations. And because other windows compilers also
-#   need their symbols specified this no serious problem.
-#
-# tested configurations:
-#
-# * cygwin gcc 2.91.57/ld 2.9.4/dllwrap 0.2.4 works
-#   (after patching python's config.h and for C++ some other include files)
-#   see also http://starship.python.net/crew/kernr/mingw32/Notes.html
-# * mingw32 gcc 2.95.2/ld 2.9.4/dllwrap 0.2.4 works
-#   (ld doesn't support -shared, so we use dllwrap)
-# * cygwin gcc 2.95.2/ld 2.10.90/dllwrap 2.10.90 works now
-#   - its dllwrap doesn't work, there is a bug in binutils 2.10.90
-#     see also http://sources.redhat.com/ml/cygwin/2000-06/msg01274.html
-#   - using gcc -mdll instead dllwrap doesn't work without -static because
-#     it tries to link against dlls instead their import libraries. (If
-#     it finds the dll first.)
-#     By specifying -static we force ld to link against the import libraries,
-#     this is windows standard and there are normally not the necessary symbols
-#     in the dlls.
-#   *** only the version of June 2000 shows these problems
-# * cygwin gcc 3.2/ld 2.13.90 works
-#   (ld supports -shared)
-# * mingw gcc 3.2/ld 2.13 works
-#   (ld supports -shared)
-
-# This module should be kept compatible with Python 2.1.
-
-__revision__ = "$Id$"
-
-import os,sys,copy
-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 import log
-
-def get_msvcr():
-    """Include the appropriate MSVC runtime library if Python was built
-    with MSVC 7.0 or later.
-    """
-    msc_pos = sys.version.find('MSC v.')
-    if msc_pos != -1:
-        msc_ver = sys.version[msc_pos+6:msc_pos+10]
-        if msc_ver == '1300':
-            # MSVC 7.0
-            return ['msvcr70']
-        elif msc_ver == '1310':
-            # MSVC 7.1
-            return ['msvcr71']
-        elif msc_ver == '1400':
-            # VS2005 / MSVC 8.0
-            return ['msvcr80']
-        elif msc_ver == '1500':
-            # VS2008 / MSVC 9.0
-            return ['msvcr90']
-        else:
-            raise ValueError("Unknown MS Compiler version %s " % msc_ver)
-
-
-class CygwinCCompiler (UnixCCompiler):
-
-    compiler_type = 'cygwin'
-    obj_extension = ".o"
-    static_lib_extension = ".a"
-    shared_lib_extension = ".dll"
-    static_lib_format = "lib%s%s"
-    shared_lib_format = "%s%s"
-    exe_extension = ".exe"
-
-    def __init__ (self, verbose=0, dry_run=0, force=0):
-
-        UnixCCompiler.__init__ (self, verbose, dry_run, force)
-
-        (status, details) = check_config_h()
-        self.debug_print("Python's GCC status: %s (details: %s)" %
-                         (status, details))
-        if status is not CONFIG_H_OK:
-            self.warn(
-                "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.dllwrap_version = \
-            get_versions()
-        self.debug_print(self.compiler_type + ": gcc %s, ld %s, dllwrap %s\n" %
-                         (self.gcc_version,
-                          self.ld_version,
-                          self.dllwrap_version) )
-
-        # ld_version >= "2.10.90" and < "2.13" should also be able to use
-        # gcc -mdll instead of dllwrap
-        # Older dllwraps had own version numbers, newer ones use the
-        # same as the rest of binutils ( also ld )
-        # dllwrap 2.10.90 is buggy
-        if self.ld_version >= "2.10.90":
-            self.linker_dll = "gcc"
-        else:
-            self.linker_dll = "dllwrap"
-
-        # ld_version >= "2.13" support -shared so use it instead of
-        # -mdll -static
-        if self.ld_version >= "2.13":
-            shared_option = "-shared"
-        else:
-            shared_option = "-mdll -static"
-
-        # Hard-code GCC because that's what this is all about.
-        # XXX optimization, warnings etc. should be customizable.
-        self.set_executables(compiler='gcc -mcygwin -O -Wall',
-                             compiler_so='gcc -mcygwin -mdll -O -Wall',
-                             compiler_cxx='g++ -mcygwin -O -Wall',
-                             linker_exe='gcc -mcygwin',
-                             linker_so=('%s -mcygwin %s' %
-                                        (self.linker_dll, shared_option)))
-
-        # cygwin and mingw32 need different sets of libraries
-        if self.gcc_version == "2.91.57":
-            # cygwin shouldn't need msvcrt, but without the dlls will crash
-            # (gcc version 2.91.57) -- perhaps something about initialization
-            self.dll_libraries=["msvcrt"]
-            self.warn(
-                "Consider upgrading to a newer version of gcc")
-        else:
-            # Include the appropriate MSVC runtime library if Python was built
-            # with MSVC 7.0 or later.
-            self.dll_libraries = get_msvcr()
-
-    # __init__ ()
-
-
-    def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
-        if ext == '.rc' or ext == '.res':
-            # gcc needs '.res' and '.rc' compiled to object files !!!
-            try:
-                self.spawn(["windres", "-i", src, "-o", obj])
-            except DistutilsExecError, 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
-
-    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):
-
-        # use separate copies, so we can modify the lists
-        extra_preargs = copy.copy(extra_preargs or [])
-        libraries = copy.copy(libraries or [])
-        objects = copy.copy(objects or [])
-
-        # Additional libraries
-        libraries.extend(self.dll_libraries)
-
-        # 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
-            (target_desc != self.EXECUTABLE or self.linker_dll == "gcc")):
-            # (The linker doesn't do anything if output is up-to-date.
-            # So it would probably better to check if we really need this,
-            # but for this we had to insert some unchanged parts of
-            # UnixCCompiler, and this is not what we want.)
-
-            # we want to put some files in the same directory as the
-            # 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")
-            lib_file = os.path.join(temp_dir, 'lib' + dll_name + ".a")
-
-            # Generate .def file
-            contents = [
-                "LIBRARY %s" % os.path.basename(output_filename),
-                "EXPORTS"]
-            for sym in export_symbols:
-                contents.append(sym)
-            self.execute(write_file, (def_file, contents),
-                         "writing %s" % def_file)
-
-            # next add options for def-file and to creating import libraries
-
-            # dllwrap uses different options than gcc/ld
-            if self.linker_dll == "dllwrap":
-                extra_preargs.extend(["--output-lib", lib_file])
-                # for dllwrap we have to use a special option
-                extra_preargs.extend(["--def", def_file])
-            # we use gcc/ld here and can be sure ld is >= 2.9.10
-            else:
-                # doesn't work: bfd_close build\...\libfoo.a: Invalid operation
-                #extra_preargs.extend(["-Wl,--out-implib,%s" % lib_file])
-                # for gcc/ld the def-file is specified as any object files
-                objects.append(def_file)
-
-        #end: if ((export_symbols is not None) and
-        #        (target_desc != self.EXECUTABLE or self.linker_dll == "gcc")):
-
-        # who wants symbols and a many times larger output file
-        # should explicitly switch the debug mode on
-        # otherwise we let dllwrap/ld strip the output file
-        # (On my machine: 10KB < stripped_file < ??100KB
-        #   unstripped_file = stripped_file + XXX KB
-        #  ( XXX=254 for a typical python extension))
-        if not debug:
-            extra_preargs.append("-s")
-
-        UnixCCompiler.link(self,
-                           target_desc,
-                           objects,
-                           output_filename,
-                           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,
-                           target_lang)
-
-    # link ()
-
-    # -- Miscellaneous methods -----------------------------------------
-
-    # overwrite the one from CCompiler to support rc and res-files
-    def object_filenames (self,
-                          source_filenames,
-                          strip_dir=0,
-                          output_dir=''):
-        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','.res']):
-                raise UnknownFileError, \
-                      "unknown file type '%s' (from '%s')" % \
-                      (ext, src_name)
-            if strip_dir:
-                base = os.path.basename (base)
-            if ext == '.res' or ext == '.rc':
-                # these need to be compiled to object files
-                obj_names.append (os.path.join (output_dir,
-                                            base + ext + self.obj_extension))
-            else:
-                obj_names.append (os.path.join (output_dir,
-                                            base + self.obj_extension))
-        return obj_names
-
-    # object_filenames ()
-
-# class CygwinCCompiler
-
-
-# the same as cygwin plus some additional parameters
-class Mingw32CCompiler (CygwinCCompiler):
-
-    compiler_type = 'mingw32'
-
-    def __init__ (self,
-                  verbose=0,
-                  dry_run=0,
-                  force=0):
-
-        CygwinCCompiler.__init__ (self, verbose, dry_run, force)
-
-        # ld_version >= "2.13" support -shared so use it instead of
-        # -mdll -static
-        if self.ld_version >= "2.13":
-            shared_option = "-shared"
-        else:
-            shared_option = "-mdll -static"
-
-        # A real mingw32 doesn't need to specify a different entry point,
-        # but cygwin 2.91.57 in no-cygwin-mode needs it.
-        if self.gcc_version <= "2.91.57":
-            entry_point = '--entry _DllMain@12'
-        else:
-            entry_point = ''
-
-        self.set_executables(compiler='gcc -mno-cygwin -O -Wall',
-                             compiler_so='gcc -mno-cygwin -mdll -O -Wall',
-                             compiler_cxx='g++ -mno-cygwin -O -Wall',
-                             linker_exe='gcc -mno-cygwin',
-                             linker_so='%s -mno-cygwin %s %s'
-                                        % (self.linker_dll, shared_option,
-                                           entry_point))
-        # Maybe we should also append -mthreads, but then the finished
-        # dlls need another dll (mingwm10.dll see Mingw32 docs)
-        # (-mthreads: Support thread-safe exception handling on `Mingw32')
-
-        # no additional libraries needed
-        self.dll_libraries=[]
-
-        # Include the appropriate MSVC runtime library if Python was built
-        # with MSVC 7.0 or later.
-        self.dll_libraries = get_msvcr()
-
-    # __init__ ()
-
-# class Mingw32CCompiler
-
-# Because these compilers aren't configured in Python's pyconfig.h file by
-# default, we should at least warn the user if he is using a unmodified
-# version.
-
-CONFIG_H_OK = "ok"
-CONFIG_H_NOTOK = "not ok"
-CONFIG_H_UNCERTAIN = "uncertain"
-
-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
-    'details' is a human-readable string explaining the situation.
-
-    Note there are two ways to conclude "OK": either 'sys.version' contains
-    the string "GCC" (implying that this Python was built with GCC), or the
-    installed "pyconfig.h" contains the string "__GNUC__".
-    """
-
-    # XXX since this function also checks sys.version, it's not strictly a
-    # "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:
-        return (CONFIG_H_OK, "sys.version mentions 'GCC'")
-
-    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)
-        try:
-            s = f.read()
-        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
-        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, ld and dllwrap.
-        If not possible it returns None for it.
-    """
-    from distutils.version import LooseVersion
-    from distutils.spawn import find_executable
-    import re
-
-    gcc_exe = find_executable('gcc')
-    if gcc_exe:
-        out = os.popen(gcc_exe + ' -dumpversion','r')
-        out_string = out.read()
-        out.close()
-        result = re.search('(\d+\.\d+(\.\d+)*)',out_string)
-        if result:
-            gcc_version = LooseVersion(result.group(1))
-        else:
-            gcc_version = None
-    else:
-        gcc_version = None
-    ld_exe = find_executable('ld')
-    if ld_exe:
-        out = os.popen(ld_exe + ' -v','r')
-        out_string = out.read()
-        out.close()
-        result = re.search('(\d+\.\d+(\.\d+)*)',out_string)
-        if result:
-            ld_version = LooseVersion(result.group(1))
-        else:
-            ld_version = None
-    else:
-        ld_version = None
-    dllwrap_exe = find_executable('dllwrap')
-    if dllwrap_exe:
-        out = os.popen(dllwrap_exe + ' --version','r')
-        out_string = out.read()
-        out.close()
-        result = re.search(' (\d+\.\d+(\.\d+)*)',out_string)
-        if result:
-            dllwrap_version = LooseVersion(result.group(1))
-        else:
-            dllwrap_version = None
-    else:
-        dllwrap_version = None
-    return (gcc_version, ld_version, dllwrap_version)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/debug.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/debug.py
deleted file mode 100644
index ddbc18b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/debug.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import os
-
-__revision__ = "$Id$"
-
-# If DISTUTILS_DEBUG is anything other than the empty string, we run in
-# debug mode.
-DEBUG = os.environ.get('DISTUTILS_DEBUG')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dep_util.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dep_util.py
deleted file mode 100644
index e290fdc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dep_util.py
+++ /dev/null
@@ -1,88 +0,0 @@
-"""distutils.dep_util
-
-Utility functions for simple, timestamp-based dependency of files
-and groups of files; also, function based entirely on such
-timestamp dependency analysis."""
-
-__revision__ = "$Id$"
-
-import os
-from distutils.errors import DistutilsFileError
-
-def newer(source, target):
-    """Tells if the target is newer than the source.
-
-    Return true if 'source' exists and is more recently modified than
-    'target', or if 'source' exists and 'target' doesn't.
-
-    Return false if both exist and 'target' is the same age or younger
-    than 'source'. Raise DistutilsFileError if 'source' does not exist.
-
-    Note that this test is not very accurate: files created in the same second
-    will have the same "age".
-    """
-    if not os.path.exists(source):
-        raise DistutilsFileError("file '%s' does not exist" %
-                                 os.path.abspath(source))
-    if not os.path.exists(target):
-        return True
-
-    return os.stat(source).st_mtime > os.stat(target).st_mtime
-
-def newer_pairwise(sources, targets):
-    """Walk two filename lists in parallel, testing if each source is newer
-    than its corresponding target.  Return a pair of lists (sources,
-    targets) where source is newer than target, according to the semantics
-    of 'newer()'.
-    """
-    if len(sources) != len(targets):
-        raise ValueError, "'sources' and 'targets' must be same length"
-
-    # build a pair of lists (sources, targets) where  source is newer
-    n_sources = []
-    n_targets = []
-    for source, target in zip(sources, targets):
-        if newer(source, target):
-            n_sources.append(source)
-            n_targets.append(target)
-
-    return n_sources, n_targets
-
-def newer_group(sources, target, missing='error'):
-    """Return true if 'target' is out-of-date with respect to any file
-    listed in 'sources'.
-
-    In other words, if 'target' exists and is newer
-    than every file in 'sources', return false; otherwise return true.
-    'missing' controls what we do when a source file is missing; the
-    default ("error") is to blow up with an OSError from inside 'stat()';
-    if it is "ignore", we silently drop any missing source files; if it is
-    "newer", any missing source files make us assume that 'target' is
-    out-of-date (this is handy in "dry-run" mode: it'll make you pretend to
-    carry out commands that wouldn't work because inputs are missing, but
-    that doesn't matter because you're not actually going to run the
-    commands).
-    """
-    # If the target doesn't even exist, then it's definitely out-of-date.
-    if not os.path.exists(target):
-        return True
-
-    # Otherwise we have to find out the hard way: if *any* source file
-    # is more recent than 'target', then 'target' is out-of-date and
-    # we can immediately return true.  If we fall through to the end
-    # of the loop, then 'target' is up-to-date and we return false.
-    target_mtime = os.stat(target).st_mtime
-
-    for source in sources:
-        if not os.path.exists(source):
-            if missing == 'error':      # blow up when we stat() the file
-                pass
-            elif missing == 'ignore':   # missing source dropped from
-                continue                #  target's dependency list
-            elif missing == 'newer':    # missing source means target is
-                return True             #  out-of-date
-
-        if os.stat(source).st_mtime > target_mtime:
-            return True
-
-    return False
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dir_util.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dir_util.py
deleted file mode 100644
index ba09217..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dir_util.py
+++ /dev/null
@@ -1,212 +0,0 @@
-"""distutils.dir_util
-
-Utility functions for manipulating directories and directory trees."""
-
-__revision__ = "$Id$"
-
-import os
-import errno
-from distutils.errors import DistutilsFileError, DistutilsInternalError
-from distutils import log
-
-# cache for by mkpath() -- in addition to cheapening redundant calls,
-# eliminates redundant "creating /foo/bar/baz" messages in dry-run mode
-_path_created = {}
-
-# I don't use os.makedirs because a) it's new to Python 1.5.2, and
-# b) it blows up if the directory already exists (I want to silently
-# succeed in that case).
-def mkpath(name, mode=0777, verbose=1, dry_run=0):
-    """Create a directory and any missing ancestor directories.
-
-    If the directory already exists (or if 'name' is the empty string, which
-    means the current directory, which of course exists), then do nothing.
-    Raise DistutilsFileError if unable to create some directory along the way
-    (eg. some sub-path exists, but is a file rather than a directory).
-    If 'verbose' is true, print a one-line summary of each mkdir to stdout.
-    Return the list of directories actually created.
-    """
-
-    global _path_created
-
-    # Detect a common bug -- name is None
-    if not isinstance(name, basestring):
-        raise DistutilsInternalError, \
-              "mkpath: 'name' must be a string (got %r)" % (name,)
-
-    # XXX what's the better way to handle verbosity? print as we create
-    # each directory in the path (the current behaviour), or only announce
-    # the creation of the whole path? (quite easy to do the latter since
-    # we're not using a recursive algorithm)
-
-    name = os.path.normpath(name)
-    created_dirs = []
-    if os.path.isdir(name) or name == '':
-        return created_dirs
-    if _path_created.get(os.path.abspath(name)):
-        return created_dirs
-
-    (head, tail) = os.path.split(name)
-    tails = [tail]                      # stack of lone dirs to create
-
-    while head and tail and not os.path.isdir(head):
-        (head, tail) = os.path.split(head)
-        tails.insert(0, tail)          # push next higher dir onto stack
-
-    # now 'head' contains the deepest directory that already exists
-    # (that is, the child of 'head' in 'name' is the highest directory
-    # that does *not* exist)
-    for d in tails:
-        #print "head = %s, d = %s: " % (head, d),
-        head = os.path.join(head, d)
-        abs_head = os.path.abspath(head)
-
-        if _path_created.get(abs_head):
-            continue
-
-        if verbose >= 1:
-            log.info("creating %s", head)
-
-        if not dry_run:
-            try:
-                os.mkdir(head, mode)
-            except OSError, exc:
-                if not (exc.errno == errno.EEXIST and os.path.isdir(head)):
-                    raise DistutilsFileError(
-                          "could not create '%s': %s" % (head, exc.args[-1]))
-            created_dirs.append(head)
-
-        _path_created[abs_head] = 1
-    return created_dirs
-
-def create_tree(base_dir, files, mode=0777, verbose=1, dry_run=0):
-    """Create all the empty directories under 'base_dir' needed to put 'files'
-    there.
-
-    'base_dir' is just the a name of a directory which doesn't necessarily
-    exist yet; 'files' is a list of filenames to be interpreted relative to
-    'base_dir'.  'base_dir' + the directory portion of every file in 'files'
-    will be created if it doesn't already exist.  'mode', 'verbose' and
-    'dry_run' flags are as for 'mkpath()'.
-    """
-    # First get the list of directories to create
-    need_dir = {}
-    for file in files:
-        need_dir[os.path.join(base_dir, os.path.dirname(file))] = 1
-    need_dirs = need_dir.keys()
-    need_dirs.sort()
-
-    # Now create them
-    for dir in need_dirs:
-        mkpath(dir, mode, verbose=verbose, dry_run=dry_run)
-
-def copy_tree(src, dst, preserve_mode=1, preserve_times=1,
-              preserve_symlinks=0, update=0, verbose=1, dry_run=0):
-    """Copy an entire directory tree 'src' to a new location 'dst'.
-
-    Both 'src' and 'dst' must be directory names.  If 'src' is not a
-    directory, raise DistutilsFileError.  If 'dst' does not exist, it is
-    created with 'mkpath()'.  The end result of the copy is that every
-    file in 'src' is copied to 'dst', and directories under 'src' are
-    recursively copied to 'dst'.  Return the list of files that were
-    copied or might have been copied, using their output name.  The
-    return value is unaffected by 'update' or 'dry_run': it is simply
-    the list of all files under 'src', with the names changed to be
-    under 'dst'.
-
-    'preserve_mode' and 'preserve_times' are the same as for
-    'copy_file'; note that they only apply to regular files, not to
-    directories.  If 'preserve_symlinks' is true, symlinks will be
-    copied as symlinks (on platforms that support them!); otherwise
-    (the default), the destination of the symlink will be copied.
-    'update' and 'verbose' are the same as for 'copy_file'.
-    """
-    from distutils.file_util import copy_file
-
-    if not dry_run and not os.path.isdir(src):
-        raise DistutilsFileError, \
-              "cannot copy tree '%s': not a directory" % src
-    try:
-        names = os.listdir(src)
-    except os.error, (errno, errstr):
-        if dry_run:
-            names = []
-        else:
-            raise DistutilsFileError, \
-                  "error listing files in '%s': %s" % (src, errstr)
-
-    if not dry_run:
-        mkpath(dst, verbose=verbose)
-
-    outputs = []
-
-    for n in names:
-        src_name = os.path.join(src, n)
-        dst_name = os.path.join(dst, n)
-
-        if preserve_symlinks and os.path.islink(src_name):
-            link_dest = os.readlink(src_name)
-            if verbose >= 1:
-                log.info("linking %s -> %s", dst_name, link_dest)
-            if not dry_run:
-                os.symlink(link_dest, dst_name)
-            outputs.append(dst_name)
-
-        elif os.path.isdir(src_name):
-            outputs.extend(
-                copy_tree(src_name, dst_name, preserve_mode,
-                          preserve_times, preserve_symlinks, update,
-                          verbose=verbose, dry_run=dry_run))
-        else:
-            copy_file(src_name, dst_name, preserve_mode,
-                      preserve_times, update, verbose=verbose,
-                      dry_run=dry_run)
-            outputs.append(dst_name)
-
-    return outputs
-
-def _build_cmdtuple(path, cmdtuples):
-    """Helper for remove_tree()."""
-    for f in os.listdir(path):
-        real_f = os.path.join(path,f)
-        if os.path.isdir(real_f) and not os.path.islink(real_f):
-            _build_cmdtuple(real_f, cmdtuples)
-        else:
-            cmdtuples.append((os.remove, real_f))
-    cmdtuples.append((os.rmdir, path))
-
-def remove_tree(directory, verbose=1, dry_run=0):
-    """Recursively remove an entire directory tree.
-
-    Any errors are ignored (apart from being reported to stdout if 'verbose'
-    is true).
-    """
-    from distutils.util import grok_environment_error
-    global _path_created
-
-    if verbose >= 1:
-        log.info("removing '%s' (and everything under it)", directory)
-    if dry_run:
-        return
-    cmdtuples = []
-    _build_cmdtuple(directory, cmdtuples)
-    for cmd in cmdtuples:
-        try:
-            cmd[0](cmd[1])
-            # remove dir from cache if it's already there
-            abspath = os.path.abspath(cmd[1])
-            if abspath in _path_created:
-                del _path_created[abspath]
-        except (IOError, OSError), exc:
-            log.warn(grok_environment_error(
-                    exc, "error removing %s: " % directory))
-
-def ensure_relative(path):
-    """Take the full path 'path', and make it a relative path.
-
-    This is useful to make 'path' the second argument to os.path.join().
-    """
-    drive, path = os.path.splitdrive(path)
-    if path[0:1] == os.sep:
-        path = drive + path[1:]
-    return path
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dist.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dist.py
deleted file mode 100644
index 198beda..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/dist.py
+++ /dev/null
@@ -1,1248 +0,0 @@
-"""distutils.dist
-
-Provides the Distribution class, which represents the module distribution
-being built/installed/distributed.
-"""
-
-__revision__ = "$Id$"
-
-import sys, os, re
-from email import message_from_file
-
-try:
-    import warnings
-except ImportError:
-    warnings = None
-
-from distutils.errors import (DistutilsOptionError, DistutilsArgError,
-                              DistutilsModuleError, DistutilsClassError)
-from distutils.fancy_getopt import FancyGetopt, translate_longopt
-from distutils.util import check_environ, strtobool, rfc822_escape
-from distutils import log
-from distutils.debug import DEBUG
-
-# Encoding used for the PKG-INFO files
-PKG_INFO_ENCODING = 'utf-8'
-
-# Regex to define acceptable Distutils command names.  This is not *quite*
-# the same as a Python NAME -- I don't allow leading underscores.  The fact
-# that they're very similar is no coincidence; the default naming scheme is
-# to look for a Python module named after the command.
-command_re = re.compile (r'^[a-zA-Z]([a-zA-Z0-9_]*)$')
-
-
-class Distribution:
-    """The core of the Distutils.  Most of the work hiding behind 'setup'
-    is really done within a Distribution instance, which farms the work out
-    to the Distutils commands specified on the command line.
-
-    Setup scripts will almost never instantiate Distribution directly,
-    unless the 'setup()' function is totally inadequate to their needs.
-    However, it is conceivable that a setup script might wish to subclass
-    Distribution for some specialized purpose, and then pass the subclass
-    to 'setup()' as the 'distclass' keyword argument.  If so, it is
-    necessary to respect the expectations that 'setup' has of Distribution.
-    See the code for 'setup()', in core.py, for details.
-    """
-
-
-    # 'global_options' describes the command-line options that may be
-    # supplied to the setup script prior to any actual commands.
-    # Eg. "./setup.py -n" or "./setup.py --quiet" both take advantage of
-    # these global options.  This list should be kept to a bare minimum,
-    # since every global option is also valid as a command option -- and we
-    # don't want to pollute the commands with too many options that they
-    # have minimal control over.
-    # The fourth entry for verbose means that it can be repeated.
-    global_options = [('verbose', 'v', "run verbosely (default)", 1),
-                      ('quiet', 'q', "run quietly (turns verbosity off)"),
-                      ('dry-run', 'n', "don't actually do anything"),
-                      ('help', 'h', "show detailed help message"),
-                      ('no-user-cfg', None,
-                       'ignore pydistutils.cfg in your home directory'),
-    ]
-
-    # 'common_usage' is a short (2-3 line) string describing the common
-    # usage of the setup script.
-    common_usage = """\
-Common commands: (see '--help-commands' for more)
-
-  setup.py build      will build the package underneath 'build/'
-  setup.py install    will install the package
-"""
-
-    # options that are not propagated to the commands
-    display_options = [
-        ('help-commands', None,
-         "list all available commands"),
-        ('name', None,
-         "print package name"),
-        ('version', 'V',
-         "print package version"),
-        ('fullname', None,
-         "print <package name>-<version>"),
-        ('author', None,
-         "print the author's name"),
-        ('author-email', None,
-         "print the author's email address"),
-        ('maintainer', None,
-         "print the maintainer's name"),
-        ('maintainer-email', None,
-         "print the maintainer's email address"),
-        ('contact', None,
-         "print the maintainer's name if known, else the author's"),
-        ('contact-email', None,
-         "print the maintainer's email address if known, else the author's"),
-        ('url', None,
-         "print the URL for this package"),
-        ('license', None,
-         "print the license of the package"),
-        ('licence', None,
-         "alias for --license"),
-        ('description', None,
-         "print the package description"),
-        ('long-description', None,
-         "print the long package description"),
-        ('platforms', None,
-         "print the list of platforms"),
-        ('classifiers', None,
-         "print the list of classifiers"),
-        ('keywords', None,
-         "print the list of keywords"),
-        ('provides', None,
-         "print the list of packages/modules provided"),
-        ('requires', None,
-         "print the list of packages/modules required"),
-        ('obsoletes', None,
-         "print the list of packages/modules made obsolete")
-        ]
-    display_option_names = map(lambda x: translate_longopt(x[0]),
-                               display_options)
-
-    # negative options are options that exclude other options
-    negative_opt = {'quiet': 'verbose'}
-
-
-    # -- Creation/initialization methods -------------------------------
-
-    def __init__ (self, attrs=None):
-        """Construct a new Distribution instance: initialize all the
-        attributes of a Distribution, and then use 'attrs' (a dictionary
-        mapping attribute names to values) to assign some of those
-        attributes their "real" values.  (Any attributes not mentioned in
-        'attrs' will be assigned to some null value: 0, None, an empty list
-        or dictionary, etc.)  Most importantly, initialize the
-        'command_obj' attribute to the empty dictionary; this will be
-        filled in with real command objects by 'parse_command_line()'.
-        """
-
-        # Default values for our command-line options
-        self.verbose = 1
-        self.dry_run = 0
-        self.help = 0
-        for attr in self.display_option_names:
-            setattr(self, attr, 0)
-
-        # Store the distribution meta-data (name, version, author, and so
-        # forth) in a separate object -- we're getting to have enough
-        # information here (and enough command-line options) that it's
-        # worth it.  Also delegate 'get_XXX()' methods to the 'metadata'
-        # object in a sneaky and underhanded (but efficient!) way.
-        self.metadata = DistributionMetadata()
-        for basename in self.metadata._METHOD_BASENAMES:
-            method_name = "get_" + basename
-            setattr(self, method_name, getattr(self.metadata, method_name))
-
-        # 'cmdclass' maps command names to class objects, so we
-        # can 1) quickly figure out which class to instantiate when
-        # we need to create a new command object, and 2) have a way
-        # for the setup script to override command classes
-        self.cmdclass = {}
-
-        # 'command_packages' is a list of packages in which commands
-        # are searched for.  The factory for command 'foo' is expected
-        # to be named 'foo' in the module 'foo' in one of the packages
-        # named here.  This list is searched from the left; an error
-        # is raised if no named package provides the command being
-        # searched for.  (Always access using get_command_packages().)
-        self.command_packages = None
-
-        # 'script_name' and 'script_args' are usually set to sys.argv[0]
-        # and sys.argv[1:], but they can be overridden when the caller is
-        # not necessarily a setup script run from the command-line.
-        self.script_name = None
-        self.script_args = None
-
-        # 'command_options' is where we store command options between
-        # parsing them (from config files, the command-line, etc.) and when
-        # they are actually needed -- ie. when the command in question is
-        # instantiated.  It is a dictionary of dictionaries of 2-tuples:
-        #   command_options = { command_name : { option : (source, value) } }
-        self.command_options = {}
-
-        # 'dist_files' is the list of (command, pyversion, file) that
-        # have been created by any dist commands run so far. This is
-        # filled regardless of whether the run is dry or not. pyversion
-        # gives sysconfig.get_python_version() if the dist file is
-        # specific to a Python version, 'any' if it is good for all
-        # Python versions on the target platform, and '' for a source
-        # file. pyversion should not be used to specify minimum or
-        # maximum required Python versions; use the metainfo for that
-        # instead.
-        self.dist_files = []
-
-        # These options are really the business of various commands, rather
-        # than of the Distribution itself.  We provide aliases for them in
-        # Distribution as a convenience to the developer.
-        self.packages = None
-        self.package_data = {}
-        self.package_dir = None
-        self.py_modules = None
-        self.libraries = None
-        self.headers = None
-        self.ext_modules = None
-        self.ext_package = None
-        self.include_dirs = None
-        self.extra_path = None
-        self.scripts = None
-        self.data_files = None
-        self.password = ''
-
-        # And now initialize bookkeeping stuff that can't be supplied by
-        # the caller at all.  'command_obj' maps command names to
-        # Command instances -- that's how we enforce that every command
-        # class is a singleton.
-        self.command_obj = {}
-
-        # 'have_run' maps command names to boolean values; it keeps track
-        # of whether we have actually run a particular command, to make it
-        # cheap to "run" a command whenever we think we might need to -- if
-        # it's already been done, no need for expensive filesystem
-        # operations, we just check the 'have_run' dictionary and carry on.
-        # It's only safe to query 'have_run' for a command class that has
-        # been instantiated -- a false value will be inserted when the
-        # command object is created, and replaced with a true value when
-        # the command is successfully run.  Thus it's probably best to use
-        # '.get()' rather than a straight lookup.
-        self.have_run = {}
-
-        # Now we'll use the attrs dictionary (ultimately, keyword args from
-        # the setup script) to possibly override any or all of these
-        # distribution options.
-
-        if attrs:
-            # Pull out the set of command options and work on them
-            # specifically.  Note that this order guarantees that aliased
-            # command options will override any supplied redundantly
-            # through the general options dictionary.
-            options = attrs.get('options')
-            if options is not None:
-                del attrs['options']
-                for (command, cmd_options) in options.items():
-                    opt_dict = self.get_option_dict(command)
-                    for (opt, val) in cmd_options.items():
-                        opt_dict[opt] = ("setup script", val)
-
-            if 'licence' in attrs:
-                attrs['license'] = attrs['licence']
-                del attrs['licence']
-                msg = "'licence' distribution option is deprecated; use 'license'"
-                if warnings is not None:
-                    warnings.warn(msg)
-                else:
-                    sys.stderr.write(msg + "\n")
-
-            # Now work on the rest of the attributes.  Any attribute that's
-            # not already defined is invalid!
-            for (key, val) in attrs.items():
-                if hasattr(self.metadata, "set_" + key):
-                    getattr(self.metadata, "set_" + key)(val)
-                elif hasattr(self.metadata, key):
-                    setattr(self.metadata, key, val)
-                elif hasattr(self, key):
-                    setattr(self, key, val)
-                else:
-                    msg = "Unknown distribution option: %s" % repr(key)
-                    if warnings is not None:
-                        warnings.warn(msg)
-                    else:
-                        sys.stderr.write(msg + "\n")
-
-        # no-user-cfg is handled before other command line args
-        # because other args override the config files, and this
-        # one is needed before we can load the config files.
-        # If attrs['script_args'] wasn't passed, assume false.
-        #
-        # This also make sure we just look at the global options
-        self.want_user_cfg = True
-
-        if self.script_args is not None:
-            for arg in self.script_args:
-                if not arg.startswith('-'):
-                    break
-                if arg == '--no-user-cfg':
-                    self.want_user_cfg = False
-                    break
-
-        self.finalize_options()
-
-    def get_option_dict(self, command):
-        """Get the option dictionary for a given command.  If that
-        command's option dictionary hasn't been created yet, then create it
-        and return the new dictionary; otherwise, return the existing
-        option dictionary.
-        """
-        dict = self.command_options.get(command)
-        if dict is None:
-            dict = self.command_options[command] = {}
-        return dict
-
-    def dump_option_dicts(self, header=None, commands=None, indent=""):
-        from pprint import pformat
-
-        if commands is None:             # dump all command option dicts
-            commands = self.command_options.keys()
-            commands.sort()
-
-        if header is not None:
-            self.announce(indent + header)
-            indent = indent + "  "
-
-        if not commands:
-            self.announce(indent + "no commands known yet")
-            return
-
-        for cmd_name in commands:
-            opt_dict = self.command_options.get(cmd_name)
-            if opt_dict is None:
-                self.announce(indent +
-                              "no option dict for '%s' command" % cmd_name)
-            else:
-                self.announce(indent +
-                              "option dict for '%s' command:" % cmd_name)
-                out = pformat(opt_dict)
-                for line in out.split('\n'):
-                    self.announce(indent + "  " + line)
-
-    # -- Config file finding/parsing methods ---------------------------
-
-    def find_config_files(self):
-        """Find as many configuration files as should be processed for this
-        platform, and return a list of filenames in the order in which they
-        should be parsed.  The filenames returned are guaranteed to exist
-        (modulo nasty race conditions).
-
-        There are three possible config files: distutils.cfg in the
-        Distutils installation directory (ie. where the top-level
-        Distutils __inst__.py file lives), a file in the user's home
-        directory named .pydistutils.cfg on Unix and pydistutils.cfg
-        on Windows/Mac; and setup.cfg in the current directory.
-
-        The file in the user's home directory can be disabled with the
-        --no-user-cfg option.
-        """
-        files = []
-        check_environ()
-
-        # Where to look for the system-wide Distutils config file
-        sys_dir = os.path.dirname(sys.modules['distutils'].__file__)
-
-        # Look for the system config file
-        sys_file = os.path.join(sys_dir, "distutils.cfg")
-        if os.path.isfile(sys_file):
-            files.append(sys_file)
-
-        # What to call the per-user config file
-        if os.name == 'posix':
-            user_filename = ".pydistutils.cfg"
-        else:
-            user_filename = "pydistutils.cfg"
-
-        # And look for the user config file
-        if self.want_user_cfg:
-            user_file = os.path.join(os.path.expanduser('~'), user_filename)
-            if os.path.isfile(user_file):
-                files.append(user_file)
-
-        # All platforms support local setup.cfg
-        local_file = "setup.cfg"
-        if os.path.isfile(local_file):
-            files.append(local_file)
-
-        if DEBUG:
-            self.announce("using config files: %s" % ', '.join(files))
-
-        return files
-
-    def parse_config_files(self, filenames=None):
-        from ConfigParser import ConfigParser
-
-        if filenames is None:
-            filenames = self.find_config_files()
-
-        if DEBUG:
-            self.announce("Distribution.parse_config_files():")
-
-        parser = ConfigParser()
-        for filename in filenames:
-            if DEBUG:
-                self.announce("  reading %s" % filename)
-            parser.read(filename)
-            for section in parser.sections():
-                options = parser.options(section)
-                opt_dict = self.get_option_dict(section)
-
-                for opt in options:
-                    if opt != '__name__':
-                        val = parser.get(section,opt)
-                        opt = opt.replace('-', '_')
-                        opt_dict[opt] = (filename, val)
-
-            # Make the ConfigParser forget everything (so we retain
-            # the original filenames that options come from)
-            parser.__init__()
-
-        # If there was a "global" section in the config file, use it
-        # to set Distribution options.
-
-        if 'global' in self.command_options:
-            for (opt, (src, val)) in self.command_options['global'].items():
-                alias = self.negative_opt.get(opt)
-                try:
-                    if alias:
-                        setattr(self, alias, not strtobool(val))
-                    elif opt in ('verbose', 'dry_run'): # ugh!
-                        setattr(self, opt, strtobool(val))
-                    else:
-                        setattr(self, opt, val)
-                except ValueError, msg:
-                    raise DistutilsOptionError, msg
-
-    # -- Command-line parsing methods ----------------------------------
-
-    def parse_command_line(self):
-        """Parse the setup script's command line, taken from the
-        'script_args' instance attribute (which defaults to 'sys.argv[1:]'
-        -- see 'setup()' in core.py).  This list is first processed for
-        "global options" -- options that set attributes of the Distribution
-        instance.  Then, it is alternately scanned for Distutils commands
-        and options for that command.  Each new command terminates the
-        options for the previous command.  The allowed options for a
-        command are determined by the 'user_options' attribute of the
-        command class -- thus, we have to be able to load command classes
-        in order to parse the command line.  Any error in that 'options'
-        attribute raises DistutilsGetoptError; any error on the
-        command-line raises DistutilsArgError.  If no Distutils commands
-        were found on the command line, raises DistutilsArgError.  Return
-        true if command-line was successfully parsed and we should carry
-        on with executing commands; false if no errors but we shouldn't
-        execute commands (currently, this only happens if user asks for
-        help).
-        """
-        #
-        # We now have enough information to show the Macintosh dialog
-        # that allows the user to interactively specify the "command line".
-        #
-        toplevel_options = self._get_toplevel_options()
-
-        # We have to parse the command line a bit at a time -- global
-        # options, then the first command, then its options, and so on --
-        # because each command will be handled by a different class, and
-        # the options that are valid for a particular class aren't known
-        # until we have loaded the command class, which doesn't happen
-        # until we know what the command is.
-
-        self.commands = []
-        parser = FancyGetopt(toplevel_options + self.display_options)
-        parser.set_negative_aliases(self.negative_opt)
-        parser.set_aliases({'licence': 'license'})
-        args = parser.getopt(args=self.script_args, object=self)
-        option_order = parser.get_option_order()
-        log.set_verbosity(self.verbose)
-
-        # for display options we return immediately
-        if self.handle_display_options(option_order):
-            return
-        while args:
-            args = self._parse_command_opts(parser, args)
-            if args is None:            # user asked for help (and got it)
-                return
-
-        # Handle the cases of --help as a "global" option, ie.
-        # "setup.py --help" and "setup.py --help command ...".  For the
-        # former, we show global options (--verbose, --dry-run, etc.)
-        # and display-only options (--name, --version, etc.); for the
-        # latter, we omit the display-only options and show help for
-        # each command listed on the command line.
-        if self.help:
-            self._show_help(parser,
-                            display_options=len(self.commands) == 0,
-                            commands=self.commands)
-            return
-
-        # Oops, no commands found -- an end-user error
-        if not self.commands:
-            raise DistutilsArgError, "no commands supplied"
-
-        # All is well: return true
-        return 1
-
-    def _get_toplevel_options(self):
-        """Return the non-display options recognized at the top level.
-
-        This includes options that are recognized *only* at the top
-        level as well as options recognized for commands.
-        """
-        return self.global_options + [
-            ("command-packages=", None,
-             "list of packages that provide distutils commands"),
-            ]
-
-    def _parse_command_opts(self, parser, args):
-        """Parse the command-line options for a single command.
-        'parser' must be a FancyGetopt instance; 'args' must be the list
-        of arguments, starting with the current command (whose options
-        we are about to parse).  Returns a new version of 'args' with
-        the next command at the front of the list; will be the empty
-        list if there are no more commands on the command line.  Returns
-        None if the user asked for help on this command.
-        """
-        # late import because of mutual dependence between these modules
-        from distutils.cmd import Command
-
-        # Pull the current command from the head of the command line
-        command = args[0]
-        if not command_re.match(command):
-            raise SystemExit, "invalid command name '%s'" % command
-        self.commands.append(command)
-
-        # Dig up the command class that implements this command, so we
-        # 1) know that it's a valid command, and 2) know which options
-        # it takes.
-        try:
-            cmd_class = self.get_command_class(command)
-        except DistutilsModuleError, msg:
-            raise DistutilsArgError, msg
-
-        # Require that the command class be derived from Command -- want
-        # to be sure that the basic "command" interface is implemented.
-        if not issubclass(cmd_class, Command):
-            raise DistutilsClassError, \
-                  "command class %s must subclass Command" % cmd_class
-
-        # Also make sure that the command object provides a list of its
-        # known options.
-        if not (hasattr(cmd_class, 'user_options') and
-                isinstance(cmd_class.user_options, list)):
-            raise DistutilsClassError, \
-                  ("command class %s must provide " +
-                   "'user_options' attribute (a list of tuples)") % \
-                  cmd_class
-
-        # If the command class has a list of negative alias options,
-        # merge it in with the global negative aliases.
-        negative_opt = self.negative_opt
-        if hasattr(cmd_class, 'negative_opt'):
-            negative_opt = negative_opt.copy()
-            negative_opt.update(cmd_class.negative_opt)
-
-        # Check for help_options in command class.  They have a different
-        # format (tuple of four) so we need to preprocess them here.
-        if (hasattr(cmd_class, 'help_options') and
-            isinstance(cmd_class.help_options, list)):
-            help_options = fix_help_options(cmd_class.help_options)
-        else:
-            help_options = []
-
-
-        # All commands support the global options too, just by adding
-        # in 'global_options'.
-        parser.set_option_table(self.global_options +
-                                cmd_class.user_options +
-                                help_options)
-        parser.set_negative_aliases(negative_opt)
-        (args, opts) = parser.getopt(args[1:])
-        if hasattr(opts, 'help') and opts.help:
-            self._show_help(parser, display_options=0, commands=[cmd_class])
-            return
-
-        if (hasattr(cmd_class, 'help_options') and
-            isinstance(cmd_class.help_options, list)):
-            help_option_found=0
-            for (help_option, short, desc, func) in cmd_class.help_options:
-                if hasattr(opts, parser.get_attr_name(help_option)):
-                    help_option_found=1
-                    if hasattr(func, '__call__'):
-                        func()
-                    else:
-                        raise DistutilsClassError(
-                            "invalid help function %r for help option '%s': "
-                            "must be a callable object (function, etc.)"
-                            % (func, help_option))
-
-            if help_option_found:
-                return
-
-        # Put the options from the command-line into their official
-        # holding pen, the 'command_options' dictionary.
-        opt_dict = self.get_option_dict(command)
-        for (name, value) in vars(opts).items():
-            opt_dict[name] = ("command line", value)
-
-        return args
-
-    def finalize_options(self):
-        """Set final values for all the options on the Distribution
-        instance, analogous to the .finalize_options() method of Command
-        objects.
-        """
-        for attr in ('keywords', 'platforms'):
-            value = getattr(self.metadata, attr)
-            if value is None:
-                continue
-            if isinstance(value, str):
-                value = [elm.strip() for elm in value.split(',')]
-                setattr(self.metadata, attr, value)
-
-    def _show_help(self, parser, global_options=1, display_options=1,
-                   commands=[]):
-        """Show help for the setup script command-line in the form of
-        several lists of command-line options.  'parser' should be a
-        FancyGetopt instance; do not expect it to be returned in the
-        same state, as its option table will be reset to make it
-        generate the correct help text.
-
-        If 'global_options' is true, lists the global options:
-        --verbose, --dry-run, etc.  If 'display_options' is true, lists
-        the "display-only" options: --name, --version, etc.  Finally,
-        lists per-command help for every command name or command class
-        in 'commands'.
-        """
-        # late import because of mutual dependence between these modules
-        from distutils.core import gen_usage
-        from distutils.cmd import Command
-
-        if global_options:
-            if display_options:
-                options = self._get_toplevel_options()
-            else:
-                options = self.global_options
-            parser.set_option_table(options)
-            parser.print_help(self.common_usage + "\nGlobal options:")
-            print('')
-
-        if display_options:
-            parser.set_option_table(self.display_options)
-            parser.print_help(
-                "Information display options (just display " +
-                "information, ignore any commands)")
-            print('')
-
-        for command in self.commands:
-            if isinstance(command, type) and issubclass(command, Command):
-                klass = command
-            else:
-                klass = self.get_command_class(command)
-            if (hasattr(klass, 'help_options') and
-                isinstance(klass.help_options, list)):
-                parser.set_option_table(klass.user_options +
-                                        fix_help_options(klass.help_options))
-            else:
-                parser.set_option_table(klass.user_options)
-            parser.print_help("Options for '%s' command:" % klass.__name__)
-            print('')
-
-        print(gen_usage(self.script_name))
-
-    def handle_display_options(self, option_order):
-        """If there were any non-global "display-only" options
-        (--help-commands or the metadata display options) on the command
-        line, display the requested info and return true; else return
-        false.
-        """
-        from distutils.core import gen_usage
-
-        # User just wants a list of commands -- we'll print it out and stop
-        # processing now (ie. if they ran "setup --help-commands foo bar",
-        # we ignore "foo bar").
-        if self.help_commands:
-            self.print_commands()
-            print('')
-            print(gen_usage(self.script_name))
-            return 1
-
-        # If user supplied any of the "display metadata" options, then
-        # display that metadata in the order in which the user supplied the
-        # metadata options.
-        any_display_options = 0
-        is_display_option = {}
-        for option in self.display_options:
-            is_display_option[option[0]] = 1
-
-        for (opt, val) in option_order:
-            if val and is_display_option.get(opt):
-                opt = translate_longopt(opt)
-                value = getattr(self.metadata, "get_"+opt)()
-                if opt in ['keywords', 'platforms']:
-                    print(','.join(value))
-                elif opt in ('classifiers', 'provides', 'requires',
-                             'obsoletes'):
-                    print('\n'.join(value))
-                else:
-                    print(value)
-                any_display_options = 1
-
-        return any_display_options
-
-    def print_command_list(self, commands, header, max_length):
-        """Print a subset of the list of all commands -- used by
-        'print_commands()'.
-        """
-        print(header + ":")
-
-        for cmd in commands:
-            klass = self.cmdclass.get(cmd)
-            if not klass:
-                klass = self.get_command_class(cmd)
-            try:
-                description = klass.description
-            except AttributeError:
-                description = "(no description available)"
-
-            print("  %-*s  %s" % (max_length, cmd, description))
-
-    def print_commands(self):
-        """Print out a help message listing all available commands with a
-        description of each.  The list is divided into "standard commands"
-        (listed in distutils.command.__all__) and "extra commands"
-        (mentioned in self.cmdclass, but not a standard command).  The
-        descriptions come from the command class attribute
-        'description'.
-        """
-        import distutils.command
-        std_commands = distutils.command.__all__
-        is_std = {}
-        for cmd in std_commands:
-            is_std[cmd] = 1
-
-        extra_commands = []
-        for cmd in self.cmdclass.keys():
-            if not is_std.get(cmd):
-                extra_commands.append(cmd)
-
-        max_length = 0
-        for cmd in (std_commands + extra_commands):
-            if len(cmd) > max_length:
-                max_length = len(cmd)
-
-        self.print_command_list(std_commands,
-                                "Standard commands",
-                                max_length)
-        if extra_commands:
-            print
-            self.print_command_list(extra_commands,
-                                    "Extra commands",
-                                    max_length)
-
-    def get_command_list(self):
-        """Get a list of (command, description) tuples.
-        The list is divided into "standard commands" (listed in
-        distutils.command.__all__) and "extra commands" (mentioned in
-        self.cmdclass, but not a standard command).  The descriptions come
-        from the command class attribute 'description'.
-        """
-        # Currently this is only used on Mac OS, for the Mac-only GUI
-        # Distutils interface (by Jack Jansen)
-
-        import distutils.command
-        std_commands = distutils.command.__all__
-        is_std = {}
-        for cmd in std_commands:
-            is_std[cmd] = 1
-
-        extra_commands = []
-        for cmd in self.cmdclass.keys():
-            if not is_std.get(cmd):
-                extra_commands.append(cmd)
-
-        rv = []
-        for cmd in (std_commands + extra_commands):
-            klass = self.cmdclass.get(cmd)
-            if not klass:
-                klass = self.get_command_class(cmd)
-            try:
-                description = klass.description
-            except AttributeError:
-                description = "(no description available)"
-            rv.append((cmd, description))
-        return rv
-
-    # -- Command class/object methods ----------------------------------
-
-    def get_command_packages(self):
-        """Return a list of packages from which commands are loaded."""
-        pkgs = self.command_packages
-        if not isinstance(pkgs, list):
-            if pkgs is None:
-                pkgs = ''
-            pkgs = [pkg.strip() for pkg in pkgs.split(',') if pkg != '']
-            if "distutils.command" not in pkgs:
-                pkgs.insert(0, "distutils.command")
-            self.command_packages = pkgs
-        return pkgs
-
-    def get_command_class(self, command):
-        """Return the class that implements the Distutils command named by
-        'command'.  First we check the 'cmdclass' dictionary; if the
-        command is mentioned there, we fetch the class object from the
-        dictionary and return it.  Otherwise we load the command module
-        ("distutils.command." + command) and fetch the command class from
-        the module.  The loaded class is also stored in 'cmdclass'
-        to speed future calls to 'get_command_class()'.
-
-        Raises DistutilsModuleError if the expected module could not be
-        found, or if that module does not define the expected class.
-        """
-        klass = self.cmdclass.get(command)
-        if klass:
-            return klass
-
-        for pkgname in self.get_command_packages():
-            module_name = "%s.%s" % (pkgname, command)
-            klass_name = command
-
-            try:
-                __import__ (module_name)
-                module = sys.modules[module_name]
-            except ImportError:
-                continue
-
-            try:
-                klass = getattr(module, klass_name)
-            except AttributeError:
-                raise DistutilsModuleError, \
-                      "invalid command '%s' (no class '%s' in module '%s')" \
-                      % (command, klass_name, module_name)
-
-            self.cmdclass[command] = klass
-            return klass
-
-        raise DistutilsModuleError("invalid command '%s'" % command)
-
-
-    def get_command_obj(self, command, create=1):
-        """Return the command object for 'command'.  Normally this object
-        is cached on a previous call to 'get_command_obj()'; if no command
-        object for 'command' is in the cache, then we either create and
-        return it (if 'create' is true) or return None.
-        """
-        cmd_obj = self.command_obj.get(command)
-        if not cmd_obj and create:
-            if DEBUG:
-                self.announce("Distribution.get_command_obj(): " \
-                              "creating '%s' command object" % command)
-
-            klass = self.get_command_class(command)
-            cmd_obj = self.command_obj[command] = klass(self)
-            self.have_run[command] = 0
-
-            # Set any options that were supplied in config files
-            # or on the command line.  (NB. support for error
-            # reporting is lame here: any errors aren't reported
-            # until 'finalize_options()' is called, which means
-            # we won't report the source of the error.)
-            options = self.command_options.get(command)
-            if options:
-                self._set_command_options(cmd_obj, options)
-
-        return cmd_obj
-
-    def _set_command_options(self, command_obj, option_dict=None):
-        """Set the options for 'command_obj' from 'option_dict'.  Basically
-        this means copying elements of a dictionary ('option_dict') to
-        attributes of an instance ('command').
-
-        'command_obj' must be a Command instance.  If 'option_dict' is not
-        supplied, uses the standard option dictionary for this command
-        (from 'self.command_options').
-        """
-        command_name = command_obj.get_command_name()
-        if option_dict is None:
-            option_dict = self.get_option_dict(command_name)
-
-        if DEBUG:
-            self.announce("  setting options for '%s' command:" % command_name)
-        for (option, (source, value)) in option_dict.items():
-            if DEBUG:
-                self.announce("    %s = %s (from %s)" % (option, value,
-                                                         source))
-            try:
-                bool_opts = map(translate_longopt, command_obj.boolean_options)
-            except AttributeError:
-                bool_opts = []
-            try:
-                neg_opt = command_obj.negative_opt
-            except AttributeError:
-                neg_opt = {}
-
-            try:
-                is_string = isinstance(value, str)
-                if option in neg_opt and is_string:
-                    setattr(command_obj, neg_opt[option], not strtobool(value))
-                elif option in bool_opts and is_string:
-                    setattr(command_obj, option, strtobool(value))
-                elif hasattr(command_obj, option):
-                    setattr(command_obj, option, value)
-                else:
-                    raise DistutilsOptionError, \
-                          ("error in %s: command '%s' has no such option '%s'"
-                           % (source, command_name, option))
-            except ValueError, msg:
-                raise DistutilsOptionError, msg
-
-    def reinitialize_command(self, command, reinit_subcommands=0):
-        """Reinitializes a command to the state it was in when first
-        returned by 'get_command_obj()': ie., initialized but not yet
-        finalized.  This provides the opportunity to sneak option
-        values in programmatically, overriding or supplementing
-        user-supplied values from the config files and command line.
-        You'll have to re-finalize the command object (by calling
-        'finalize_options()' or 'ensure_finalized()') before using it for
-        real.
-
-        'command' should be a command name (string) or command object.  If
-        'reinit_subcommands' is true, also reinitializes the command's
-        sub-commands, as declared by the 'sub_commands' class attribute (if
-        it has one).  See the "install" command for an example.  Only
-        reinitializes the sub-commands that actually matter, ie. those
-        whose test predicates return true.
-
-        Returns the reinitialized command object.
-        """
-        from distutils.cmd import Command
-        if not isinstance(command, Command):
-            command_name = command
-            command = self.get_command_obj(command_name)
-        else:
-            command_name = command.get_command_name()
-
-        if not command.finalized:
-            return command
-        command.initialize_options()
-        command.finalized = 0
-        self.have_run[command_name] = 0
-        self._set_command_options(command)
-
-        if reinit_subcommands:
-            for sub in command.get_sub_commands():
-                self.reinitialize_command(sub, reinit_subcommands)
-
-        return command
-
-    # -- Methods that operate on the Distribution ----------------------
-
-    def announce(self, msg, level=log.INFO):
-        log.log(level, msg)
-
-    def run_commands(self):
-        """Run each command that was seen on the setup script command line.
-        Uses the list of commands found and cache of command objects
-        created by 'get_command_obj()'.
-        """
-        for cmd in self.commands:
-            self.run_command(cmd)
-
-    # -- Methods that operate on its Commands --------------------------
-
-    def run_command(self, command):
-        """Do whatever it takes to run a command (including nothing at all,
-        if the command has already been run).  Specifically: if we have
-        already created and run the command named by 'command', return
-        silently without doing anything.  If the command named by 'command'
-        doesn't even have a command object yet, create one.  Then invoke
-        'run()' on that command object (or an existing one).
-        """
-        # Already been here, done that? then return silently.
-        if self.have_run.get(command):
-            return
-
-        log.info("running %s", command)
-        cmd_obj = self.get_command_obj(command)
-        cmd_obj.ensure_finalized()
-        cmd_obj.run()
-        self.have_run[command] = 1
-
-
-    # -- Distribution query methods ------------------------------------
-
-    def has_pure_modules(self):
-        return len(self.packages or self.py_modules or []) > 0
-
-    def has_ext_modules(self):
-        return self.ext_modules and len(self.ext_modules) > 0
-
-    def has_c_libraries(self):
-        return self.libraries and len(self.libraries) > 0
-
-    def has_modules(self):
-        return self.has_pure_modules() or self.has_ext_modules()
-
-    def has_headers(self):
-        return self.headers and len(self.headers) > 0
-
-    def has_scripts(self):
-        return self.scripts and len(self.scripts) > 0
-
-    def has_data_files(self):
-        return self.data_files and len(self.data_files) > 0
-
-    def is_pure(self):
-        return (self.has_pure_modules() and
-                not self.has_ext_modules() and
-                not self.has_c_libraries())
-
-    # -- Metadata query methods ----------------------------------------
-
-    # If you're looking for 'get_name()', 'get_version()', and so forth,
-    # they are defined in a sneaky way: the constructor binds self.get_XXX
-    # to self.metadata.get_XXX.  The actual code is in the
-    # DistributionMetadata class, below.
-
-class DistributionMetadata:
-    """Dummy class to hold the distribution meta-data: name, version,
-    author, and so forth.
-    """
-
-    _METHOD_BASENAMES = ("name", "version", "author", "author_email",
-                         "maintainer", "maintainer_email", "url",
-                         "license", "description", "long_description",
-                         "keywords", "platforms", "fullname", "contact",
-                         "contact_email", "license", "classifiers",
-                         "download_url",
-                         # PEP 314
-                         "provides", "requires", "obsoletes",
-                         )
-
-    def __init__(self, path=None):
-        if path is not None:
-            self.read_pkg_file(open(path))
-        else:
-            self.name = None
-            self.version = None
-            self.author = None
-            self.author_email = None
-            self.maintainer = None
-            self.maintainer_email = None
-            self.url = None
-            self.license = None
-            self.description = None
-            self.long_description = None
-            self.keywords = None
-            self.platforms = None
-            self.classifiers = None
-            self.download_url = None
-            # PEP 314
-            self.provides = None
-            self.requires = None
-            self.obsoletes = None
-
-    def read_pkg_file(self, file):
-        """Reads the metadata values from a file object."""
-        msg = message_from_file(file)
-
-        def _read_field(name):
-            value = msg[name]
-            if value == 'UNKNOWN':
-                return None
-            return value
-
-        def _read_list(name):
-            values = msg.get_all(name, None)
-            if values == []:
-                return None
-            return values
-
-        metadata_version = msg['metadata-version']
-        self.name = _read_field('name')
-        self.version = _read_field('version')
-        self.description = _read_field('summary')
-        # we are filling author only.
-        self.author = _read_field('author')
-        self.maintainer = None
-        self.author_email = _read_field('author-email')
-        self.maintainer_email = None
-        self.url = _read_field('home-page')
-        self.license = _read_field('license')
-
-        if 'download-url' in msg:
-            self.download_url = _read_field('download-url')
-        else:
-            self.download_url = None
-
-        self.long_description = _read_field('description')
-        self.description = _read_field('summary')
-
-        if 'keywords' in msg:
-            self.keywords = _read_field('keywords').split(',')
-
-        self.platforms = _read_list('platform')
-        self.classifiers = _read_list('classifier')
-
-        # PEP 314 - these fields only exist in 1.1
-        if metadata_version == '1.1':
-            self.requires = _read_list('requires')
-            self.provides = _read_list('provides')
-            self.obsoletes = _read_list('obsoletes')
-        else:
-            self.requires = None
-            self.provides = None
-            self.obsoletes = None
-
-    def write_pkg_info(self, base_dir):
-        """Write the PKG-INFO file into the release tree.
-        """
-        pkg_info = open(os.path.join(base_dir, 'PKG-INFO'), 'w')
-        try:
-            self.write_pkg_file(pkg_info)
-        finally:
-            pkg_info.close()
-
-    def write_pkg_file(self, file):
-        """Write the PKG-INFO format data to a file object.
-        """
-        version = '1.0'
-        if self.provides or self.requires or self.obsoletes:
-            version = '1.1'
-
-        self._write_field(file, 'Metadata-Version', version)
-        self._write_field(file, 'Name', self.get_name())
-        self._write_field(file, 'Version', self.get_version())
-        self._write_field(file, 'Summary', self.get_description())
-        self._write_field(file, 'Home-page', self.get_url())
-        self._write_field(file, 'Author', self.get_contact())
-        self._write_field(file, 'Author-email', self.get_contact_email())
-        self._write_field(file, 'License', self.get_license())
-        if self.download_url:
-            self._write_field(file, 'Download-URL', self.download_url)
-
-        long_desc = rfc822_escape(self.get_long_description())
-        self._write_field(file, 'Description', long_desc)
-
-        keywords = ','.join(self.get_keywords())
-        if keywords:
-            self._write_field(file, 'Keywords', keywords)
-
-        self._write_list(file, 'Platform', self.get_platforms())
-        self._write_list(file, 'Classifier', self.get_classifiers())
-
-        # PEP 314
-        self._write_list(file, 'Requires', self.get_requires())
-        self._write_list(file, 'Provides', self.get_provides())
-        self._write_list(file, 'Obsoletes', self.get_obsoletes())
-
-    def _write_field(self, file, name, value):
-        file.write('%s: %s\n' % (name, self._encode_field(value)))
-
-    def _write_list (self, file, name, values):
-        for value in values:
-            self._write_field(file, name, value)
-
-    def _encode_field(self, value):
-        if value is None:
-            return None
-        if isinstance(value, unicode):
-            return value.encode(PKG_INFO_ENCODING)
-        return str(value)
-
-    # -- Metadata query methods ----------------------------------------
-
-    def get_name(self):
-        return self.name or "UNKNOWN"
-
-    def get_version(self):
-        return self.version or "0.0.0"
-
-    def get_fullname(self):
-        return "%s-%s" % (self.get_name(), self.get_version())
-
-    def get_author(self):
-        return self._encode_field(self.author) or "UNKNOWN"
-
-    def get_author_email(self):
-        return self.author_email or "UNKNOWN"
-
-    def get_maintainer(self):
-        return self._encode_field(self.maintainer) or "UNKNOWN"
-
-    def get_maintainer_email(self):
-        return self.maintainer_email or "UNKNOWN"
-
-    def get_contact(self):
-        return (self._encode_field(self.maintainer) or
-                self._encode_field(self.author) or "UNKNOWN")
-
-    def get_contact_email(self):
-        return self.maintainer_email or self.author_email or "UNKNOWN"
-
-    def get_url(self):
-        return self.url or "UNKNOWN"
-
-    def get_license(self):
-        return self.license or "UNKNOWN"
-    get_licence = get_license
-
-    def get_description(self):
-        return self._encode_field(self.description) or "UNKNOWN"
-
-    def get_long_description(self):
-        return self._encode_field(self.long_description) or "UNKNOWN"
-
-    def get_keywords(self):
-        return self.keywords or []
-
-    def get_platforms(self):
-        return self.platforms or ["UNKNOWN"]
-
-    def get_classifiers(self):
-        return self.classifiers or []
-
-    def get_download_url(self):
-        return self.download_url or "UNKNOWN"
-
-    # PEP 314
-    def get_requires(self):
-        return self.requires or []
-
-    def set_requires(self, value):
-        import distutils.versionpredicate
-        for v in value:
-            distutils.versionpredicate.VersionPredicate(v)
-        self.requires = value
-
-    def get_provides(self):
-        return self.provides or []
-
-    def set_provides(self, value):
-        value = [v.strip() for v in value]
-        for v in value:
-            import distutils.versionpredicate
-            distutils.versionpredicate.split_provision(v)
-        self.provides = value
-
-    def get_obsoletes(self):
-        return self.obsoletes or []
-
-    def set_obsoletes(self, value):
-        import distutils.versionpredicate
-        for v in value:
-            distutils.versionpredicate.VersionPredicate(v)
-        self.obsoletes = value
-
-def fix_help_options(options):
-    """Convert a 4-tuple 'help_options' list as found in various command
-    classes to the 3-tuple form required by FancyGetopt.
-    """
-    new_options = []
-    for help_tuple in options:
-        new_options.append(help_tuple[0:3])
-    return new_options
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/emxccompiler.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/emxccompiler.py
deleted file mode 100644
index aedcf30..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/emxccompiler.py
+++ /dev/null
@@ -1,319 +0,0 @@
-"""distutils.emxccompiler
-
-Provides the EMXCCompiler class, a subclass of UnixCCompiler that
-handles the EMX port of the GNU C compiler to OS/2.
-"""
-
-# 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 LINK386 as the linker (-Zomf)
-#
-# * 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
-
-__revision__ = "$Id$"
-
-import os,sys,copy
-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 import log
-
-class EMXCCompiler (UnixCCompiler):
-
-    compiler_type = 'emx'
-    obj_extension = ".obj"
-    static_lib_extension = ".lib"
-    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):
-
-        UnixCCompiler.__init__ (self, verbose, dry_run, force)
-
-        (status, details) = check_config_h()
-        self.debug_print("Python's GCC status: %s (details: %s)" %
-                         (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.")
-
-        (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) )
-
-        # 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')
-
-        # 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"]
-
-    # __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:
-                self.spawn(["rc", "-r", src])
-            except DistutilsExecError, 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
-
-    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):
-
-        # use separate copies, so we can modify the lists
-        extra_preargs = copy.copy(extra_preargs or [])
-        libraries = copy.copy(libraries or [])
-        objects = copy.copy(objects or [])
-
-        # Additional libraries
-        libraries.extend(self.dll_libraries)
-
-        # 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
-            (target_desc != self.EXECUTABLE)):
-            # (The linker doesn't do anything if output is up-to-date.
-            # So it would probably better to check if we really need this,
-            # but for this we had to insert some unchanged parts of
-            # UnixCCompiler, and this is not what we want.)
-
-            # we want to put some files in the same directory as the
-            # 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")
-
-            # Generate .def file
-            contents = [
-                "LIBRARY %s INITINSTANCE TERMINSTANCE" % \
-                os.path.splitext(os.path.basename(output_filename))[0],
-                "DATA MULTIPLE NONSHARED",
-                "EXPORTS"]
-            for sym in export_symbols:
-                contents.append('  "%s"' % sym)
-            self.execute(write_file, (def_file, contents),
-                         "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)
-
-        #end: if ((export_symbols is not None) and
-        #        (target_desc != self.EXECUTABLE or self.linker_dll == "gcc")):
-
-        # who wants symbols and a many times larger output file
-        # should explicitly switch the debug mode on
-        # otherwise we let dllwrap/ld strip the output file
-        # (On my machine: 10KB < stripped_file < ??100KB
-        #   unstripped_file = stripped_file + XXX KB
-        #  ( XXX=254 for a typical python extension))
-        if not debug:
-            extra_preargs.append("-s")
-
-        UnixCCompiler.link(self,
-                           target_desc,
-                           objects,
-                           output_filename,
-                           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,
-                           target_lang)
-
-    # link ()
-
-    # -- 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=''):
-        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']):
-                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
-                obj_names.append (os.path.join (output_dir,
-                                            base + self.res_extension))
-            else:
-                obj_names.append (os.path.join (output_dir,
-                                            base + self.obj_extension))
-        return obj_names
-
-    # object_filenames ()
-
-    # 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
-
-        # get EMX's default library directory search path
-        try:
-            emx_dirs = os.environ['LIBRARY_PATH'].split(';')
-        except KeyError:
-            emx_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
-
-        # Oops, didn't find it in *any* of 'dirs'
-        return None
-
-# class EMXCCompiler
-
-
-# Because these compilers aren't configured in Python's pyconfig.h file by
-# default, we should at least warn the user if he is using a unmodified
-# version.
-
-CONFIG_H_OK = "ok"
-CONFIG_H_NOTOK = "not ok"
-CONFIG_H_UNCERTAIN = "uncertain"
-
-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
-    'details' is a human-readable string explaining the situation.
-
-    Note there are two ways to conclude "OK": either 'sys.version' contains
-    the string "GCC" (implying that this Python was built with GCC), or the
-    installed "pyconfig.h" contains the string "__GNUC__".
-    """
-
-    # XXX since this function also checks sys.version, it's not strictly a
-    # "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:
-        return (CONFIG_H_OK, "sys.version mentions 'GCC'")
-
-    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)
-        try:
-            s = f.read()
-        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
-        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 distutils.version import StrictVersion
-    from distutils.spawn import find_executable
-    import re
-
-    gcc_exe = find_executable('gcc')
-    if gcc_exe:
-        out = os.popen(gcc_exe + ' -dumpversion','r')
-        try:
-            out_string = out.read()
-        finally:
-            out.close()
-        result = re.search('(\d+\.\d+\.\d+)',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)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/errors.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/errors.py
deleted file mode 100644
index c3f241a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/errors.py
+++ /dev/null
@@ -1,88 +0,0 @@
-"""distutils.errors
-
-Provides exceptions used by the Distutils modules.  Note that Distutils
-modules may raise standard exceptions; in particular, SystemExit is
-usually raised for errors that are obviously the end-user's fault
-(eg. bad command-line arguments).
-
-This module is safe to use in "from ... import *" mode; it only exports
-symbols whose names start with "Distutils" and end with "Error"."""
-
-__revision__ = "$Id$"
-
-class DistutilsError(Exception):
-    """The root of all Distutils evil."""
-
-class DistutilsModuleError(DistutilsError):
-    """Unable to load an expected module, or to find an expected class
-    within some module (in particular, command modules and classes)."""
-
-class DistutilsClassError(DistutilsError):
-    """Some command class (or possibly distribution class, if anyone
-    feels a need to subclass Distribution) is found not to be holding
-    up its end of the bargain, ie. implementing some part of the
-    "command "interface."""
-
-class DistutilsGetoptError(DistutilsError):
-    """The option table provided to 'fancy_getopt()' is bogus."""
-
-class DistutilsArgError(DistutilsError):
-    """Raised by fancy_getopt in response to getopt.error -- ie. an
-    error in the command line usage."""
-
-class DistutilsFileError(DistutilsError):
-    """Any problems in the filesystem: expected file not found, etc.
-    Typically this is for problems that we detect before IOError or
-    OSError could be raised."""
-
-class DistutilsOptionError(DistutilsError):
-    """Syntactic/semantic errors in command options, such as use of
-    mutually conflicting options, or inconsistent options,
-    badly-spelled values, etc.  No distinction is made between option
-    values originating in the setup script, the command line, config
-    files, or what-have-you -- but if we *know* something originated in
-    the setup script, we'll raise DistutilsSetupError instead."""
-
-class DistutilsSetupError(DistutilsError):
-    """For errors that can be definitely blamed on the setup script,
-    such as invalid keyword arguments to 'setup()'."""
-
-class DistutilsPlatformError(DistutilsError):
-    """We don't know how to do something on the current platform (but
-    we do know how to do it on some platform) -- eg. trying to compile
-    C files on a platform not supported by a CCompiler subclass."""
-
-class DistutilsExecError(DistutilsError):
-    """Any problems executing an external program (such as the C
-    compiler, when compiling C files)."""
-
-class DistutilsInternalError(DistutilsError):
-    """Internal inconsistencies or impossibilities (obviously, this
-    should never be seen if the code is working!)."""
-
-class DistutilsTemplateError(DistutilsError):
-    """Syntax error in a file list template."""
-
-class DistutilsByteCompileError(DistutilsError):
-    """Byte compile error."""
-
-# Exception classes used by the CCompiler implementation classes
-class CCompilerError(Exception):
-    """Some compile/link operation failed."""
-
-class PreprocessError(CCompilerError):
-    """Failure to preprocess one or more C/C++ files."""
-
-class CompileError(CCompilerError):
-    """Failure to compile one or more C/C++ source files."""
-
-class LibError(CCompilerError):
-    """Failure to create a static library from one or more C/C++ object
-    files."""
-
-class LinkError(CCompilerError):
-    """Failure to link one or more C/C++ object files into an executable
-    or shared library file."""
-
-class UnknownFileError(CCompilerError):
-    """Attempt to process an unknown file type."""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/extension.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/extension.py
deleted file mode 100644
index 7622c20..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/extension.py
+++ /dev/null
@@ -1,255 +0,0 @@
-"""distutils.extension
-
-Provides the Extension class, used to describe C/C++ extension
-modules in setup scripts."""
-
-__revision__ = "$Id$"
-
-import os, string, sys
-from types import *
-
-try:
-    import warnings
-except ImportError:
-    warnings = None
-
-# This class is really only used by the "build_ext" command, so it might
-# make sense to put it in distutils.command.build_ext.  However, that
-# module is already big enough, and I want to make this class a bit more
-# complex to simplify some common cases ("foo" module in "foo.c") and do
-# better error-checking ("foo.c" actually exists).
-#
-# Also, putting this in build_ext.py means every setup script would have to
-# import that large-ish module (indirectly, through distutils.core) in
-# order to do anything.
-
-class Extension:
-    """Just a collection of attributes that describes an extension
-    module and everything needed to build it (hopefully in a portable
-    way, but there are hooks that let you be as unportable as you need).
-
-    Instance attributes:
-      name : string
-        the full name of the extension, including any packages -- ie.
-        *not* a filename or pathname, but Python dotted name
-      sources : [string]
-        list of source filenames, relative to the distribution root
-        (where the setup script lives), in Unix form (slash-separated)
-        for portability.  Source files may be C, C++, SWIG (.i),
-        platform-specific resource files, or whatever else is recognized
-        by the "build_ext" command as source for a Python extension.
-      include_dirs : [string]
-        list of directories to search for C/C++ header files (in Unix
-        form for portability)
-      define_macros : [(name : string, value : string|None)]
-        list of macros to define; each macro is defined using a 2-tuple,
-        where 'value' is either the string to define it to or None to
-        define it without a particular value (equivalent of "#define
-        FOO" in source or -DFOO on Unix C compiler command line)
-      undef_macros : [string]
-        list of macros to undefine explicitly
-      library_dirs : [string]
-        list of directories to search for C/C++ libraries at link time
-      libraries : [string]
-        list of library names (not filenames or paths) to link against
-      runtime_library_dirs : [string]
-        list of directories to search for C/C++ libraries at run time
-        (for shared extensions, this is when the extension is loaded)
-      extra_objects : [string]
-        list of extra files to link with (eg. object files not implied
-        by 'sources', static library that must be explicitly specified,
-        binary resource files, etc.)
-      extra_compile_args : [string]
-        any extra platform- and compiler-specific information to use
-        when compiling the source files in 'sources'.  For platforms and
-        compilers where "command line" makes sense, this is typically a
-        list of command-line arguments, but for other platforms it could
-        be anything.
-      extra_link_args : [string]
-        any extra platform- and compiler-specific information to use
-        when linking object files together to create the extension (or
-        to create a new static Python interpreter).  Similar
-        interpretation as for 'extra_compile_args'.
-      export_symbols : [string]
-        list of symbols to be exported from a shared extension.  Not
-        used on all platforms, and not generally necessary for Python
-        extensions, which typically export exactly one symbol: "init" +
-        extension_name.
-      swig_opts : [string]
-        any extra options to pass to SWIG if a source file has the .i
-        extension.
-      depends : [string]
-        list of files that the extension depends on
-      language : string
-        extension language (i.e. "c", "c++", "objc"). Will be detected
-        from the source extensions if not provided.
-    """
-
-    # When adding arguments to this constructor, be sure to update
-    # setup_keywords in core.py.
-    def __init__ (self, name, sources,
-                  include_dirs=None,
-                  define_macros=None,
-                  undef_macros=None,
-                  library_dirs=None,
-                  libraries=None,
-                  runtime_library_dirs=None,
-                  extra_objects=None,
-                  extra_compile_args=None,
-                  extra_link_args=None,
-                  export_symbols=None,
-                  swig_opts = None,
-                  depends=None,
-                  language=None,
-                  **kw                      # To catch unknown keywords
-                 ):
-        assert type(name) is StringType, "'name' must be a string"
-        assert (type(sources) is ListType and
-                map(type, sources) == [StringType]*len(sources)), \
-                "'sources' must be a list of strings"
-
-        self.name = name
-        self.sources = sources
-        self.include_dirs = include_dirs or []
-        self.define_macros = define_macros or []
-        self.undef_macros = undef_macros or []
-        self.library_dirs = library_dirs or []
-        self.libraries = libraries or []
-        self.runtime_library_dirs = runtime_library_dirs or []
-        self.extra_objects = extra_objects or []
-        self.extra_compile_args = extra_compile_args or []
-        self.extra_link_args = extra_link_args or []
-        self.export_symbols = export_symbols or []
-        self.swig_opts = swig_opts or []
-        self.depends = depends or []
-        self.language = language
-
-        # If there are unknown keyword options, warn about them
-        if len(kw):
-            L = kw.keys() ; L.sort()
-            L = map(repr, L)
-            msg = "Unknown Extension options: " + string.join(L, ', ')
-            if warnings is not None:
-                warnings.warn(msg)
-            else:
-                sys.stderr.write(msg + '\n')
-# class Extension
-
-
-def read_setup_file (filename):
-    from distutils.sysconfig import \
-         parse_makefile, expand_makefile_vars, _variable_rx
-    from distutils.text_file import TextFile
-    from distutils.util import split_quoted
-
-    # First pass over the file to gather "VAR = VALUE" assignments.
-    vars = parse_makefile(filename)
-
-    # Second pass to gobble up the real content: lines of the form
-    #   <module> ... [<sourcefile> ...] [<cpparg> ...] [<library> ...]
-    file = TextFile(filename,
-                    strip_comments=1, skip_blanks=1, join_lines=1,
-                    lstrip_ws=1, rstrip_ws=1)
-    try:
-        extensions = []
-
-        while 1:
-            line = file.readline()
-            if line is None:                # eof
-                break
-            if _variable_rx.match(line):    # VAR=VALUE, handled in first pass
-                continue
-
-                if line[0] == line[-1] == "*":
-                    file.warn("'%s' lines not handled yet" % line)
-                    continue
-
-            #print "original line: " + line
-            line = expand_makefile_vars(line, vars)
-            words = split_quoted(line)
-            #print "expanded line: " + line
-
-            # NB. this parses a slightly different syntax than the old
-            # makesetup script: here, there must be exactly one extension per
-            # line, and it must be the first word of the line.  I have no idea
-            # why the old syntax supported multiple extensions per line, as
-            # they all wind up being the same.
-
-            module = words[0]
-            ext = Extension(module, [])
-            append_next_word = None
-
-            for word in words[1:]:
-                if append_next_word is not None:
-                    append_next_word.append(word)
-                    append_next_word = None
-                    continue
-
-                suffix = os.path.splitext(word)[1]
-                switch = word[0:2] ; value = word[2:]
-
-                if suffix in (".c", ".cc", ".cpp", ".cxx", ".c++", ".m", ".mm"):
-                    # hmm, should we do something about C vs. C++ sources?
-                    # or leave it up to the CCompiler implementation to
-                    # worry about?
-                    ext.sources.append(word)
-                elif switch == "-I":
-                    ext.include_dirs.append(value)
-                elif switch == "-D":
-                    equals = string.find(value, "=")
-                    if equals == -1:        # bare "-DFOO" -- no value
-                        ext.define_macros.append((value, None))
-                    else:                   # "-DFOO=blah"
-                        ext.define_macros.append((value[0:equals],
-                                                  value[equals+2:]))
-                elif switch == "-U":
-                    ext.undef_macros.append(value)
-                elif switch == "-C":        # only here 'cause makesetup has it!
-                    ext.extra_compile_args.append(word)
-                elif switch == "-l":
-                    ext.libraries.append(value)
-                elif switch == "-L":
-                    ext.library_dirs.append(value)
-                elif switch == "-R":
-                    ext.runtime_library_dirs.append(value)
-                elif word == "-rpath":
-                    append_next_word = ext.runtime_library_dirs
-                elif word == "-Xlinker":
-                    append_next_word = ext.extra_link_args
-                elif word == "-Xcompiler":
-                    append_next_word = ext.extra_compile_args
-                elif switch == "-u":
-                    ext.extra_link_args.append(word)
-                    if not value:
-                        append_next_word = ext.extra_link_args
-                elif word == "-Xcompiler":
-                    append_next_word = ext.extra_compile_args
-                elif switch == "-u":
-                    ext.extra_link_args.append(word)
-                    if not value:
-                        append_next_word = ext.extra_link_args
-                elif suffix in (".a", ".so", ".sl", ".o", ".dylib"):
-                    # NB. a really faithful emulation of makesetup would
-                    # append a .o file to extra_objects only if it
-                    # had a slash in it; otherwise, it would s/.o/.c/
-                    # and append it to sources.  Hmmmm.
-                    ext.extra_objects.append(word)
-                else:
-                    file.warn("unrecognized argument '%s'" % word)
-
-            extensions.append(ext)
-    finally:
-        file.close()
-
-        #print "module:", module
-        #print "source files:", source_files
-        #print "cpp args:", cpp_args
-        #print "lib args:", library_args
-
-        #extensions[module] = { 'sources': source_files,
-        #                       'cpp_args': cpp_args,
-        #                       'lib_args': library_args }
-
-    return extensions
-
-# read_setup_file ()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/fancy_getopt.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/fancy_getopt.py
deleted file mode 100644
index 2b48c4c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/fancy_getopt.py
+++ /dev/null
@@ -1,484 +0,0 @@
-"""distutils.fancy_getopt
-
-Wrapper around the standard getopt module that provides the following
-additional features:
-  * short and long options are tied together
-  * options have help strings, so fancy_getopt could potentially
-    create a complete usage summary
-  * options set attributes of a passed-in object
-"""
-
-__revision__ = "$Id$"
-
-import sys
-import string
-import re
-import getopt
-from distutils.errors import DistutilsGetoptError, DistutilsArgError
-
-# Much like command_re in distutils.core, this is close to but not quite
-# the same as a Python NAME -- except, in the spirit of most GNU
-# utilities, we use '-' in place of '_'.  (The spirit of LISP lives on!)
-# The similarities to NAME are again not a coincidence...
-longopt_pat = r'[a-zA-Z](?:[a-zA-Z0-9-]*)'
-longopt_re = re.compile(r'^%s$' % longopt_pat)
-
-# For recognizing "negative alias" options, eg. "quiet=!verbose"
-neg_alias_re = re.compile("^(%s)=!(%s)$" % (longopt_pat, longopt_pat))
-
-# This is used to translate long options to legitimate Python identifiers
-# (for use as attributes of some object).
-longopt_xlate = string.maketrans('-', '_')
-
-class FancyGetopt:
-    """Wrapper around the standard 'getopt()' module that provides some
-    handy extra functionality:
-      * short and long options are tied together
-      * options have help strings, and help text can be assembled
-        from them
-      * options set attributes of a passed-in object
-      * boolean options can have "negative aliases" -- eg. if
-        --quiet is the "negative alias" of --verbose, then "--quiet"
-        on the command line sets 'verbose' to false
-    """
-
-    def __init__ (self, option_table=None):
-
-        # The option table is (currently) a list of tuples.  The
-        # tuples may have 3 or four values:
-        #   (long_option, short_option, help_string [, repeatable])
-        # if an option takes an argument, its long_option should have '='
-        # appended; short_option should just be a single character, no ':'
-        # in any case.  If a long_option doesn't have a corresponding
-        # short_option, short_option should be None.  All option tuples
-        # must have long options.
-        self.option_table = option_table
-
-        # 'option_index' maps long option names to entries in the option
-        # table (ie. those 3-tuples).
-        self.option_index = {}
-        if self.option_table:
-            self._build_index()
-
-        # 'alias' records (duh) alias options; {'foo': 'bar'} means
-        # --foo is an alias for --bar
-        self.alias = {}
-
-        # 'negative_alias' keeps track of options that are the boolean
-        # opposite of some other option
-        self.negative_alias = {}
-
-        # These keep track of the information in the option table.  We
-        # don't actually populate these structures until we're ready to
-        # parse the command-line, since the 'option_table' passed in here
-        # isn't necessarily the final word.
-        self.short_opts = []
-        self.long_opts = []
-        self.short2long = {}
-        self.attr_name = {}
-        self.takes_arg = {}
-
-        # And 'option_order' is filled up in 'getopt()'; it records the
-        # original order of options (and their values) on the command-line,
-        # but expands short options, converts aliases, etc.
-        self.option_order = []
-
-    # __init__ ()
-
-
-    def _build_index (self):
-        self.option_index.clear()
-        for option in self.option_table:
-            self.option_index[option[0]] = option
-
-    def set_option_table (self, option_table):
-        self.option_table = option_table
-        self._build_index()
-
-    def add_option (self, long_option, short_option=None, help_string=None):
-        if long_option in self.option_index:
-            raise DistutilsGetoptError, \
-                  "option conflict: already an option '%s'" % long_option
-        else:
-            option = (long_option, short_option, help_string)
-            self.option_table.append(option)
-            self.option_index[long_option] = option
-
-
-    def has_option (self, long_option):
-        """Return true if the option table for this parser has an
-        option with long name 'long_option'."""
-        return long_option in self.option_index
-
-    def get_attr_name (self, long_option):
-        """Translate long option name 'long_option' to the form it
-        has as an attribute of some object: ie., translate hyphens
-        to underscores."""
-        return string.translate(long_option, longopt_xlate)
-
-
-    def _check_alias_dict (self, aliases, what):
-        assert isinstance(aliases, dict)
-        for (alias, opt) in aliases.items():
-            if alias not in self.option_index:
-                raise DistutilsGetoptError, \
-                      ("invalid %s '%s': "
-                       "option '%s' not defined") % (what, alias, alias)
-            if opt not in self.option_index:
-                raise DistutilsGetoptError, \
-                      ("invalid %s '%s': "
-                       "aliased option '%s' not defined") % (what, alias, opt)
-
-    def set_aliases (self, alias):
-        """Set the aliases for this option parser."""
-        self._check_alias_dict(alias, "alias")
-        self.alias = alias
-
-    def set_negative_aliases (self, negative_alias):
-        """Set the negative aliases for this option parser.
-        'negative_alias' should be a dictionary mapping option names to
-        option names, both the key and value must already be defined
-        in the option table."""
-        self._check_alias_dict(negative_alias, "negative alias")
-        self.negative_alias = negative_alias
-
-
-    def _grok_option_table (self):
-        """Populate the various data structures that keep tabs on the
-        option table.  Called by 'getopt()' before it can do anything
-        worthwhile.
-        """
-        self.long_opts = []
-        self.short_opts = []
-        self.short2long.clear()
-        self.repeat = {}
-
-        for option in self.option_table:
-            if len(option) == 3:
-                long, short, help = option
-                repeat = 0
-            elif len(option) == 4:
-                long, short, help, repeat = option
-            else:
-                # the option table is part of the code, so simply
-                # assert that it is correct
-                raise ValueError, "invalid option tuple: %r" % (option,)
-
-            # Type- and value-check the option names
-            if not isinstance(long, str) or len(long) < 2:
-                raise DistutilsGetoptError, \
-                      ("invalid long option '%s': "
-                       "must be a string of length >= 2") % long
-
-            if (not ((short is None) or
-                     (isinstance(short, str) and len(short) == 1))):
-                raise DistutilsGetoptError, \
-                      ("invalid short option '%s': "
-                       "must a single character or None") % short
-
-            self.repeat[long] = repeat
-            self.long_opts.append(long)
-
-            if long[-1] == '=':             # option takes an argument?
-                if short: short = short + ':'
-                long = long[0:-1]
-                self.takes_arg[long] = 1
-            else:
-
-                # Is option is a "negative alias" for some other option (eg.
-                # "quiet" == "!verbose")?
-                alias_to = self.negative_alias.get(long)
-                if alias_to is not None:
-                    if self.takes_arg[alias_to]:
-                        raise DistutilsGetoptError, \
-                              ("invalid negative alias '%s': "
-                               "aliased option '%s' takes a value") % \
-                               (long, alias_to)
-
-                    self.long_opts[-1] = long # XXX redundant?!
-                    self.takes_arg[long] = 0
-
-                else:
-                    self.takes_arg[long] = 0
-
-            # If this is an alias option, make sure its "takes arg" flag is
-            # the same as the option it's aliased to.
-            alias_to = self.alias.get(long)
-            if alias_to is not None:
-                if self.takes_arg[long] != self.takes_arg[alias_to]:
-                    raise DistutilsGetoptError, \
-                          ("invalid alias '%s': inconsistent with "
-                           "aliased option '%s' (one of them takes a value, "
-                           "the other doesn't") % (long, alias_to)
-
-
-            # Now enforce some bondage on the long option name, so we can
-            # later translate it to an attribute name on some object.  Have
-            # to do this a bit late to make sure we've removed any trailing
-            # '='.
-            if not longopt_re.match(long):
-                raise DistutilsGetoptError, \
-                      ("invalid long option name '%s' " +
-                       "(must be letters, numbers, hyphens only") % long
-
-            self.attr_name[long] = self.get_attr_name(long)
-            if short:
-                self.short_opts.append(short)
-                self.short2long[short[0]] = long
-
-        # for option_table
-
-    # _grok_option_table()
-
-
-    def getopt (self, args=None, object=None):
-        """Parse command-line options in args. Store as attributes on object.
-
-        If 'args' is None or not supplied, uses 'sys.argv[1:]'.  If
-        'object' is None or not supplied, creates a new OptionDummy
-        object, stores option values there, and returns a tuple (args,
-        object).  If 'object' is supplied, it is modified in place and
-        'getopt()' just returns 'args'; in both cases, the returned
-        'args' is a modified copy of the passed-in 'args' list, which
-        is left untouched.
-        """
-        if args is None:
-            args = sys.argv[1:]
-        if object is None:
-            object = OptionDummy()
-            created_object = 1
-        else:
-            created_object = 0
-
-        self._grok_option_table()
-
-        short_opts = string.join(self.short_opts)
-        try:
-            opts, args = getopt.getopt(args, short_opts, self.long_opts)
-        except getopt.error, msg:
-            raise DistutilsArgError, msg
-
-        for opt, val in opts:
-            if len(opt) == 2 and opt[0] == '-': # it's a short option
-                opt = self.short2long[opt[1]]
-            else:
-                assert len(opt) > 2 and opt[:2] == '--'
-                opt = opt[2:]
-
-            alias = self.alias.get(opt)
-            if alias:
-                opt = alias
-
-            if not self.takes_arg[opt]:     # boolean option?
-                assert val == '', "boolean option can't have value"
-                alias = self.negative_alias.get(opt)
-                if alias:
-                    opt = alias
-                    val = 0
-                else:
-                    val = 1
-
-            attr = self.attr_name[opt]
-            # The only repeating option at the moment is 'verbose'.
-            # It has a negative option -q quiet, which should set verbose = 0.
-            if val and self.repeat.get(attr) is not None:
-                val = getattr(object, attr, 0) + 1
-            setattr(object, attr, val)
-            self.option_order.append((opt, val))
-
-        # for opts
-        if created_object:
-            return args, object
-        else:
-            return args
-
-    # getopt()
-
-
-    def get_option_order (self):
-        """Returns the list of (option, value) tuples processed by the
-        previous run of 'getopt()'.  Raises RuntimeError if
-        'getopt()' hasn't been called yet.
-        """
-        if self.option_order is None:
-            raise RuntimeError, "'getopt()' hasn't been called yet"
-        else:
-            return self.option_order
-
-
-    def generate_help (self, header=None):
-        """Generate help text (a list of strings, one per suggested line of
-        output) from the option table for this FancyGetopt object.
-        """
-        # Blithely assume the option table is good: probably wouldn't call
-        # 'generate_help()' unless you've already called 'getopt()'.
-
-        # First pass: determine maximum length of long option names
-        max_opt = 0
-        for option in self.option_table:
-            long = option[0]
-            short = option[1]
-            l = len(long)
-            if long[-1] == '=':
-                l = l - 1
-            if short is not None:
-                l = l + 5                   # " (-x)" where short == 'x'
-            if l > max_opt:
-                max_opt = l
-
-        opt_width = max_opt + 2 + 2 + 2     # room for indent + dashes + gutter
-
-        # Typical help block looks like this:
-        #   --foo       controls foonabulation
-        # Help block for longest option looks like this:
-        #   --flimflam  set the flim-flam level
-        # and with wrapped text:
-        #   --flimflam  set the flim-flam level (must be between
-        #               0 and 100, except on Tuesdays)
-        # Options with short names will have the short name shown (but
-        # it doesn't contribute to max_opt):
-        #   --foo (-f)  controls foonabulation
-        # If adding the short option would make the left column too wide,
-        # we push the explanation off to the next line
-        #   --flimflam (-l)
-        #               set the flim-flam level
-        # Important parameters:
-        #   - 2 spaces before option block start lines
-        #   - 2 dashes for each long option name
-        #   - min. 2 spaces between option and explanation (gutter)
-        #   - 5 characters (incl. space) for short option name
-
-        # Now generate lines of help text.  (If 80 columns were good enough
-        # for Jesus, then 78 columns are good enough for me!)
-        line_width = 78
-        text_width = line_width - opt_width
-        big_indent = ' ' * opt_width
-        if header:
-            lines = [header]
-        else:
-            lines = ['Option summary:']
-
-        for option in self.option_table:
-            long, short, help = option[:3]
-            text = wrap_text(help, text_width)
-            if long[-1] == '=':
-                long = long[0:-1]
-
-            # Case 1: no short option at all (makes life easy)
-            if short is None:
-                if text:
-                    lines.append("  --%-*s  %s" % (max_opt, long, text[0]))
-                else:
-                    lines.append("  --%-*s  " % (max_opt, long))
-
-            # Case 2: we have a short option, so we have to include it
-            # just after the long option
-            else:
-                opt_names = "%s (-%s)" % (long, short)
-                if text:
-                    lines.append("  --%-*s  %s" %
-                                 (max_opt, opt_names, text[0]))
-                else:
-                    lines.append("  --%-*s" % opt_names)
-
-            for l in text[1:]:
-                lines.append(big_indent + l)
-
-        # for self.option_table
-
-        return lines
-
-    # generate_help ()
-
-    def print_help (self, header=None, file=None):
-        if file is None:
-            file = sys.stdout
-        for line in self.generate_help(header):
-            file.write(line + "\n")
-
-# class FancyGetopt
-
-
-def fancy_getopt (options, negative_opt, object, args):
-    parser = FancyGetopt(options)
-    parser.set_negative_aliases(negative_opt)
-    return parser.getopt(args, object)
-
-
-WS_TRANS = string.maketrans(string.whitespace, ' ' * len(string.whitespace))
-
-def wrap_text (text, width):
-    """wrap_text(text : string, width : int) -> [string]
-
-    Split 'text' into multiple lines of no more than 'width' characters
-    each, and return the list of strings that results.
-    """
-
-    if text is None:
-        return []
-    if len(text) <= width:
-        return [text]
-
-    text = string.expandtabs(text)
-    text = string.translate(text, WS_TRANS)
-    chunks = re.split(r'( +|-+)', text)
-    chunks = filter(None, chunks)      # ' - ' results in empty strings
-    lines = []
-
-    while chunks:
-
-        cur_line = []                   # list of chunks (to-be-joined)
-        cur_len = 0                     # length of current line
-
-        while chunks:
-            l = len(chunks[0])
-            if cur_len + l <= width:    # can squeeze (at least) this chunk in
-                cur_line.append(chunks[0])
-                del chunks[0]
-                cur_len = cur_len + l
-            else:                       # this line is full
-                # drop last chunk if all space
-                if cur_line and cur_line[-1][0] == ' ':
-                    del cur_line[-1]
-                break
-
-        if chunks:                      # any chunks left to process?
-
-            # if the current line is still empty, then we had a single
-            # chunk that's too big too fit on a line -- so we break
-            # down and break it up at the line width
-            if cur_len == 0:
-                cur_line.append(chunks[0][0:width])
-                chunks[0] = chunks[0][width:]
-
-            # all-whitespace chunks at the end of a line can be discarded
-            # (and we know from the re.split above that if a chunk has
-            # *any* whitespace, it is *all* whitespace)
-            if chunks[0][0] == ' ':
-                del chunks[0]
-
-        # and store this line in the list-of-all-lines -- as a single
-        # string, of course!
-        lines.append(string.join(cur_line, ''))
-
-    # while chunks
-
-    return lines
-
-
-def translate_longopt(opt):
-    """Convert a long option name to a valid Python identifier by
-    changing "-" to "_".
-    """
-    return string.translate(opt, longopt_xlate)
-
-
-class OptionDummy:
-    """Dummy class just used as a place to hold command-line option
-    values as instance attributes."""
-
-    def __init__ (self, options=[]):
-        """Create a new OptionDummy instance.  The attributes listed in
-        'options' will be initialized to None."""
-        for opt in options:
-            setattr(self, opt, None)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/file_util.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/file_util.py
deleted file mode 100644
index 79e7af0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/file_util.py
+++ /dev/null
@@ -1,231 +0,0 @@
-"""distutils.file_util
-
-Utility functions for operating on single files.
-"""
-
-__revision__ = "$Id$"
-
-import os
-from distutils.errors import DistutilsFileError
-from distutils import log
-
-# for generating verbose output in 'copy_file()'
-_copy_action = {None: 'copying',
-                'hard': 'hard linking',
-                'sym': 'symbolically linking'}
-
-
-def _copy_file_contents(src, dst, buffer_size=16*1024):
-    """Copy the file 'src' to 'dst'.
-
-    Both must be filenames. Any error opening either file, reading from
-    'src', or writing to 'dst', raises DistutilsFileError.  Data is
-    read/written in chunks of 'buffer_size' bytes (default 16k).  No attempt
-    is made to handle anything apart from regular files.
-    """
-    # Stolen from shutil module in the standard library, but with
-    # custom error-handling added.
-    fsrc = None
-    fdst = None
-    try:
-        try:
-            fsrc = open(src, 'rb')
-        except os.error, (errno, errstr):
-            raise DistutilsFileError("could not open '%s': %s" % (src, errstr))
-
-        if os.path.exists(dst):
-            try:
-                os.unlink(dst)
-            except os.error, (errno, errstr):
-                raise DistutilsFileError(
-                      "could not delete '%s': %s" % (dst, errstr))
-
-        try:
-            fdst = open(dst, 'wb')
-        except os.error, (errno, errstr):
-            raise DistutilsFileError(
-                  "could not create '%s': %s" % (dst, errstr))
-
-        while 1:
-            try:
-                buf = fsrc.read(buffer_size)
-            except os.error, (errno, errstr):
-                raise DistutilsFileError(
-                      "could not read from '%s': %s" % (src, errstr))
-
-            if not buf:
-                break
-
-            try:
-                fdst.write(buf)
-            except os.error, (errno, errstr):
-                raise DistutilsFileError(
-                      "could not write to '%s': %s" % (dst, errstr))
-
-    finally:
-        if fdst:
-            fdst.close()
-        if fsrc:
-            fsrc.close()
-
-def copy_file(src, dst, preserve_mode=1, preserve_times=1, update=0,
-              link=None, verbose=1, dry_run=0):
-    """Copy a file 'src' to 'dst'.
-
-    If 'dst' is a directory, then 'src' is copied there with the same name;
-    otherwise, it must be a filename.  (If the file exists, it will be
-    ruthlessly clobbered.)  If 'preserve_mode' is true (the default),
-    the file's mode (type and permission bits, or whatever is analogous on
-    the current platform) is copied.  If 'preserve_times' is true (the
-    default), the last-modified and last-access times are copied as well.
-    If 'update' is true, 'src' will only be copied if 'dst' does not exist,
-    or if 'dst' does exist but is older than 'src'.
-
-    'link' allows you to make hard links (os.link) or symbolic links
-    (os.symlink) instead of copying: set it to "hard" or "sym"; if it is
-    None (the default), files are copied.  Don't set 'link' on systems that
-    don't support it: 'copy_file()' doesn't check if hard or symbolic
-    linking is available.
-
-    Under Mac OS, uses the native file copy function in macostools; on
-    other systems, uses '_copy_file_contents()' to copy file contents.
-
-    Return a tuple (dest_name, copied): 'dest_name' is the actual name of
-    the output file, and 'copied' is true if the file was copied (or would
-    have been copied, if 'dry_run' true).
-    """
-    # XXX if the destination file already exists, we clobber it if
-    # copying, but blow up if linking.  Hmmm.  And I don't know what
-    # macostools.copyfile() does.  Should definitely be consistent, and
-    # should probably blow up if destination exists and we would be
-    # changing it (ie. it's not already a hard/soft link to src OR
-    # (not update) and (src newer than dst).
-
-    from distutils.dep_util import newer
-    from stat import ST_ATIME, ST_MTIME, ST_MODE, S_IMODE
-
-    if not os.path.isfile(src):
-        raise DistutilsFileError(
-              "can't copy '%s': doesn't exist or not a regular file" % src)
-
-    if os.path.isdir(dst):
-        dir = dst
-        dst = os.path.join(dst, os.path.basename(src))
-    else:
-        dir = os.path.dirname(dst)
-
-    if update and not newer(src, dst):
-        if verbose >= 1:
-            log.debug("not copying %s (output up-to-date)", src)
-        return dst, 0
-
-    try:
-        action = _copy_action[link]
-    except KeyError:
-        raise ValueError("invalid value '%s' for 'link' argument" % link)
-
-    if verbose >= 1:
-        if os.path.basename(dst) == os.path.basename(src):
-            log.info("%s %s -> %s", action, src, dir)
-        else:
-            log.info("%s %s -> %s", action, src, dst)
-
-    if dry_run:
-        return (dst, 1)
-
-    # If linking (hard or symbolic), use the appropriate system call
-    # (Unix only, of course, but that's the caller's responsibility)
-    if link == 'hard':
-        if not (os.path.exists(dst) and os.path.samefile(src, dst)):
-            os.link(src, dst)
-    elif link == 'sym':
-        if not (os.path.exists(dst) and os.path.samefile(src, dst)):
-            os.symlink(src, dst)
-
-    # Otherwise (non-Mac, not linking), copy the file contents and
-    # (optionally) copy the times and mode.
-    else:
-        _copy_file_contents(src, dst)
-        if preserve_mode or preserve_times:
-            st = os.stat(src)
-
-            # According to David Ascher <da@ski.org>, utime() should be done
-            # before chmod() (at least under NT).
-            if preserve_times:
-                os.utime(dst, (st[ST_ATIME], st[ST_MTIME]))
-            if preserve_mode:
-                os.chmod(dst, S_IMODE(st[ST_MODE]))
-
-    return (dst, 1)
-
-# XXX I suspect this is Unix-specific -- need porting help!
-def move_file (src, dst, verbose=1, dry_run=0):
-    """Move a file 'src' to 'dst'.
-
-    If 'dst' is a directory, the file will be moved into it with the same
-    name; otherwise, 'src' is just renamed to 'dst'.  Return the new
-    full name of the file.
-
-    Handles cross-device moves on Unix using 'copy_file()'.  What about
-    other systems???
-    """
-    from os.path import exists, isfile, isdir, basename, dirname
-    import errno
-
-    if verbose >= 1:
-        log.info("moving %s -> %s", src, dst)
-
-    if dry_run:
-        return dst
-
-    if not isfile(src):
-        raise DistutilsFileError("can't move '%s': not a regular file" % src)
-
-    if isdir(dst):
-        dst = os.path.join(dst, basename(src))
-    elif exists(dst):
-        raise DistutilsFileError(
-              "can't move '%s': destination '%s' already exists" %
-              (src, dst))
-
-    if not isdir(dirname(dst)):
-        raise DistutilsFileError(
-              "can't move '%s': destination '%s' not a valid path" % \
-              (src, dst))
-
-    copy_it = 0
-    try:
-        os.rename(src, dst)
-    except os.error, (num, msg):
-        if num == errno.EXDEV:
-            copy_it = 1
-        else:
-            raise DistutilsFileError(
-                  "couldn't move '%s' to '%s': %s" % (src, dst, msg))
-
-    if copy_it:
-        copy_file(src, dst, verbose=verbose)
-        try:
-            os.unlink(src)
-        except os.error, (num, msg):
-            try:
-                os.unlink(dst)
-            except os.error:
-                pass
-            raise DistutilsFileError(
-                  ("couldn't move '%s' to '%s' by copy/delete: " +
-                   "delete '%s' failed: %s") %
-                  (src, dst, src, msg))
-    return dst
-
-
-def write_file (filename, contents):
-    """Create a file with the specified name and write 'contents' (a
-    sequence of strings without line terminators) to it.
-    """
-    f = open(filename, "w")
-    try:
-        for line in contents:
-            f.write(line + "\n")
-    finally:
-        f.close()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/filelist.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/filelist.py
deleted file mode 100644
index 94ef014..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/filelist.py
+++ /dev/null
@@ -1,336 +0,0 @@
-"""distutils.filelist
-
-Provides the FileList class, used for poking about the filesystem
-and building lists of files.
-"""
-
-__revision__ = "$Id$"
-
-import os, re
-import fnmatch
-from distutils.util import convert_path
-from distutils.errors import DistutilsTemplateError, DistutilsInternalError
-from distutils import log
-
-class FileList:
-    """A list of files built by on exploring the filesystem and filtered by
-    applying various patterns to what we find there.
-
-    Instance attributes:
-      dir
-        directory from which files will be taken -- only used if
-        'allfiles' not supplied to constructor
-      files
-        list of filenames currently being built/filtered/manipulated
-      allfiles
-        complete list of files under consideration (ie. without any
-        filtering applied)
-    """
-
-    def __init__(self, warn=None, debug_print=None):
-        # ignore argument to FileList, but keep them for backwards
-        # compatibility
-        self.allfiles = None
-        self.files = []
-
-    def set_allfiles(self, allfiles):
-        self.allfiles = allfiles
-
-    def findall(self, dir=os.curdir):
-        self.allfiles = findall(dir)
-
-    def debug_print(self, msg):
-        """Print 'msg' to stdout if the global DEBUG (taken from the
-        DISTUTILS_DEBUG environment variable) flag is true.
-        """
-        from distutils.debug import DEBUG
-        if DEBUG:
-            print msg
-
-    # -- List-like methods ---------------------------------------------
-
-    def append(self, item):
-        self.files.append(item)
-
-    def extend(self, items):
-        self.files.extend(items)
-
-    def sort(self):
-        # Not a strict lexical sort!
-        sortable_files = map(os.path.split, self.files)
-        sortable_files.sort()
-        self.files = []
-        for sort_tuple in sortable_files:
-            self.files.append(os.path.join(*sort_tuple))
-
-
-    # -- Other miscellaneous utility methods ---------------------------
-
-    def remove_duplicates(self):
-        # Assumes list has been sorted!
-        for i in range(len(self.files) - 1, 0, -1):
-            if self.files[i] == self.files[i - 1]:
-                del self.files[i]
-
-
-    # -- "File template" methods ---------------------------------------
-
-    def _parse_template_line(self, line):
-        words = line.split()
-        action = words[0]
-
-        patterns = dir = dir_pattern = None
-
-        if action in ('include', 'exclude',
-                      'global-include', 'global-exclude'):
-            if len(words) < 2:
-                raise DistutilsTemplateError, \
-                      "'%s' expects <pattern1> <pattern2> ..." % action
-
-            patterns = map(convert_path, words[1:])
-
-        elif action in ('recursive-include', 'recursive-exclude'):
-            if len(words) < 3:
-                raise DistutilsTemplateError, \
-                      "'%s' expects <dir> <pattern1> <pattern2> ..." % action
-
-            dir = convert_path(words[1])
-            patterns = map(convert_path, words[2:])
-
-        elif action in ('graft', 'prune'):
-            if len(words) != 2:
-                raise DistutilsTemplateError, \
-                     "'%s' expects a single <dir_pattern>" % action
-
-            dir_pattern = convert_path(words[1])
-
-        else:
-            raise DistutilsTemplateError, "unknown action '%s'" % action
-
-        return (action, patterns, dir, dir_pattern)
-
-    def process_template_line(self, line):
-        # Parse the line: split it up, make sure the right number of words
-        # is there, and return the relevant words.  'action' is always
-        # defined: it's the first word of the line.  Which of the other
-        # three are defined depends on the action; it'll be either
-        # patterns, (dir and patterns), or (dir_pattern).
-        action, patterns, dir, dir_pattern = self._parse_template_line(line)
-
-        # OK, now we know that the action is valid and we have the
-        # right number of words on the line for that action -- so we
-        # can proceed with minimal error-checking.
-        if action == 'include':
-            self.debug_print("include " + ' '.join(patterns))
-            for pattern in patterns:
-                if not self.include_pattern(pattern, anchor=1):
-                    log.warn("warning: no files found matching '%s'",
-                             pattern)
-
-        elif action == 'exclude':
-            self.debug_print("exclude " + ' '.join(patterns))
-            for pattern in patterns:
-                if not self.exclude_pattern(pattern, anchor=1):
-                    log.warn(("warning: no previously-included files "
-                              "found matching '%s'"), pattern)
-
-        elif action == 'global-include':
-            self.debug_print("global-include " + ' '.join(patterns))
-            for pattern in patterns:
-                if not self.include_pattern(pattern, anchor=0):
-                    log.warn(("warning: no files found matching '%s' " +
-                              "anywhere in distribution"), pattern)
-
-        elif action == 'global-exclude':
-            self.debug_print("global-exclude " + ' '.join(patterns))
-            for pattern in patterns:
-                if not self.exclude_pattern(pattern, anchor=0):
-                    log.warn(("warning: no previously-included files matching "
-                              "'%s' found anywhere in distribution"),
-                             pattern)
-
-        elif action == 'recursive-include':
-            self.debug_print("recursive-include %s %s" %
-                             (dir, ' '.join(patterns)))
-            for pattern in patterns:
-                if not self.include_pattern(pattern, prefix=dir):
-                    log.warn(("warning: no files found matching '%s' " +
-                                "under directory '%s'"),
-                             pattern, dir)
-
-        elif action == 'recursive-exclude':
-            self.debug_print("recursive-exclude %s %s" %
-                             (dir, ' '.join(patterns)))
-            for pattern in patterns:
-                if not self.exclude_pattern(pattern, prefix=dir):
-                    log.warn(("warning: no previously-included files matching "
-                              "'%s' found under directory '%s'"),
-                             pattern, dir)
-
-        elif action == 'graft':
-            self.debug_print("graft " + dir_pattern)
-            if not self.include_pattern(None, prefix=dir_pattern):
-                log.warn("warning: no directories found matching '%s'",
-                         dir_pattern)
-
-        elif action == 'prune':
-            self.debug_print("prune " + dir_pattern)
-            if not self.exclude_pattern(None, prefix=dir_pattern):
-                log.warn(("no previously-included directories found " +
-                          "matching '%s'"), dir_pattern)
-        else:
-            raise DistutilsInternalError, \
-                  "this cannot happen: invalid action '%s'" % action
-
-    # -- Filtering/selection methods -----------------------------------
-
-    def include_pattern(self, pattern, anchor=1, prefix=None, is_regex=0):
-        """Select strings (presumably filenames) from 'self.files' that
-        match 'pattern', a Unix-style wildcard (glob) pattern.
-
-        Patterns are not quite the same as implemented by the 'fnmatch'
-        module: '*' and '?'  match non-special characters, where "special"
-        is platform-dependent: slash on Unix; colon, slash, and backslash on
-        DOS/Windows; and colon on Mac OS.
-
-        If 'anchor' is true (the default), then the pattern match is more
-        stringent: "*.py" will match "foo.py" but not "foo/bar.py".  If
-        'anchor' is false, both of these will match.
-
-        If 'prefix' is supplied, then only filenames starting with 'prefix'
-        (itself a pattern) and ending with 'pattern', with anything in between
-        them, will match.  'anchor' is ignored in this case.
-
-        If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and
-        'pattern' is assumed to be either a string containing a regex or a
-        regex object -- no translation is done, the regex is just compiled
-        and used as-is.
-
-        Selected strings will be added to self.files.
-
-        Return 1 if files are found.
-        """
-        files_found = 0
-        pattern_re = translate_pattern(pattern, anchor, prefix, is_regex)
-        self.debug_print("include_pattern: applying regex r'%s'" %
-                         pattern_re.pattern)
-
-        # delayed loading of allfiles list
-        if self.allfiles is None:
-            self.findall()
-
-        for name in self.allfiles:
-            if pattern_re.search(name):
-                self.debug_print(" adding " + name)
-                self.files.append(name)
-                files_found = 1
-
-        return files_found
-
-
-    def exclude_pattern(self, pattern, anchor=1, prefix=None, is_regex=0):
-        """Remove strings (presumably filenames) from 'files' that match
-        'pattern'.
-
-        Other parameters are the same as for 'include_pattern()', above.
-        The list 'self.files' is modified in place. Return 1 if files are
-        found.
-        """
-        files_found = 0
-        pattern_re = translate_pattern(pattern, anchor, prefix, is_regex)
-        self.debug_print("exclude_pattern: applying regex r'%s'" %
-                         pattern_re.pattern)
-        for i in range(len(self.files)-1, -1, -1):
-            if pattern_re.search(self.files[i]):
-                self.debug_print(" removing " + self.files[i])
-                del self.files[i]
-                files_found = 1
-
-        return files_found
-
-
-# ----------------------------------------------------------------------
-# Utility functions
-
-def findall(dir = os.curdir):
-    """Find all files under 'dir' and return the list of full filenames
-    (relative to 'dir').
-    """
-    from stat import ST_MODE, S_ISREG, S_ISDIR, S_ISLNK
-
-    list = []
-    stack = [dir]
-    pop = stack.pop
-    push = stack.append
-
-    while stack:
-        dir = pop()
-        names = os.listdir(dir)
-
-        for name in names:
-            if dir != os.curdir:        # avoid the dreaded "./" syndrome
-                fullname = os.path.join(dir, name)
-            else:
-                fullname = name
-
-            # Avoid excess stat calls -- just one will do, thank you!
-            stat = os.stat(fullname)
-            mode = stat[ST_MODE]
-            if S_ISREG(mode):
-                list.append(fullname)
-            elif S_ISDIR(mode) and not S_ISLNK(mode):
-                push(fullname)
-
-    return list
-
-
-def glob_to_re(pattern):
-    """Translate a shell-like glob pattern to a regular expression.
-
-    Return a string containing the regex.  Differs from
-    'fnmatch.translate()' in that '*' does not match "special characters"
-    (which are platform-specific).
-    """
-    pattern_re = fnmatch.translate(pattern)
-
-    # '?' and '*' in the glob pattern become '.' and '.*' in the RE, which
-    # IMHO is wrong -- '?' and '*' aren't supposed to match slash in Unix,
-    # and by extension they shouldn't match such "special characters" under
-    # any OS.  So change all non-escaped dots in the RE to match any
-    # character except the special characters.
-    # XXX currently the "special characters" are just slash -- i.e. this is
-    # Unix-only.
-    pattern_re = re.sub(r'((?<!\\)(\\\\)*)\.', r'\1[^/]', pattern_re)
-
-    return pattern_re
-
-
-def translate_pattern(pattern, anchor=1, prefix=None, is_regex=0):
-    """Translate a shell-like wildcard pattern to a compiled regular
-    expression.
-
-    Return the compiled regex.  If 'is_regex' true,
-    then 'pattern' is directly compiled to a regex (if it's a string)
-    or just returned as-is (assumes it's a regex object).
-    """
-    if is_regex:
-        if isinstance(pattern, str):
-            return re.compile(pattern)
-        else:
-            return pattern
-
-    if pattern:
-        pattern_re = glob_to_re(pattern)
-    else:
-        pattern_re = ''
-
-    if prefix is not None:
-        # ditch end of pattern character
-        empty_pattern = glob_to_re('')
-        prefix_re = glob_to_re(prefix)[:-len(empty_pattern)]
-        pattern_re = "^" + os.path.join(prefix_re, ".*" + pattern_re)
-    else:                               # no prefix -- respect anchor flag
-        if anchor:
-            pattern_re = "^" + pattern_re
-
-    return re.compile(pattern_re)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/log.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/log.py
deleted file mode 100644
index ff3b2fa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/log.py
+++ /dev/null
@@ -1,71 +0,0 @@
-"""A simple log mechanism styled after PEP 282."""
-
-# The class here is styled after PEP 282 so that it could later be
-# replaced with a standard Python logging implementation.
-
-DEBUG = 1
-INFO = 2
-WARN = 3
-ERROR = 4
-FATAL = 5
-
-import sys
-
-class Log:
-
-    def __init__(self, threshold=WARN):
-        self.threshold = threshold
-
-    def _log(self, level, msg, args):
-        if level not in (DEBUG, INFO, WARN, ERROR, FATAL):
-            raise ValueError('%s wrong log level' % str(level))
-
-        if level >= self.threshold:
-            if args:
-                msg = msg % args
-            if level in (WARN, ERROR, FATAL):
-                stream = sys.stderr
-            else:
-                stream = sys.stdout
-            stream.write('%s\n' % msg)
-            stream.flush()
-
-    def log(self, level, msg, *args):
-        self._log(level, msg, args)
-
-    def debug(self, msg, *args):
-        self._log(DEBUG, msg, args)
-
-    def info(self, msg, *args):
-        self._log(INFO, msg, args)
-
-    def warn(self, msg, *args):
-        self._log(WARN, msg, args)
-
-    def error(self, msg, *args):
-        self._log(ERROR, msg, args)
-
-    def fatal(self, msg, *args):
-        self._log(FATAL, msg, args)
-
-_global_log = Log()
-log = _global_log.log
-debug = _global_log.debug
-info = _global_log.info
-warn = _global_log.warn
-error = _global_log.error
-fatal = _global_log.fatal
-
-def set_threshold(level):
-    # return the old threshold for use from tests
-    old = _global_log.threshold
-    _global_log.threshold = level
-    return old
-
-def set_verbosity(v):
-    if v <= 0:
-        set_threshold(WARN)
-    elif v == 1:
-        set_threshold(INFO)
-    elif v >= 2:
-        set_threshold(DEBUG)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/msvc9compiler.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/msvc9compiler.py
deleted file mode 100644
index 6c03974..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/msvc9compiler.py
+++ /dev/null
@@ -1,764 +0,0 @@
-"""distutils.msvc9compiler
-
-Contains MSVCCompiler, an implementation of the abstract CCompiler class
-for the Microsoft Visual Studio 2008.
-
-The module is compatible with VS 2005 and VS 2008. You can find legacy support
-for older versions of VS in distutils.msvccompiler.
-"""
-
-# Written by Perry Stoll
-# hacked by Robin Becker and Thomas Heller to do a better job of
-#   finding DevStudio (through the registry)
-# ported to VS2005 and VS 2008 by Christian Heimes
-
-__revision__ = "$Id$"
-
-import os
-import subprocess
-import sys
-import re
-
-from distutils.errors import (DistutilsExecError, DistutilsPlatformError,
-                              CompileError, LibError, LinkError)
-from distutils.ccompiler import CCompiler, gen_lib_options
-from distutils import log
-from distutils.util import get_platform
-
-import _winreg
-
-RegOpenKeyEx = _winreg.OpenKeyEx
-RegEnumKey = _winreg.EnumKey
-RegEnumValue = _winreg.EnumValue
-RegError = _winreg.error
-
-HKEYS = (_winreg.HKEY_USERS,
-         _winreg.HKEY_CURRENT_USER,
-         _winreg.HKEY_LOCAL_MACHINE,
-         _winreg.HKEY_CLASSES_ROOT)
-
-NATIVE_WIN64 = (sys.platform == 'win32' and sys.maxsize > 2**32)
-if NATIVE_WIN64:
-    # Visual C++ is a 32-bit application, so we need to look in
-    # the corresponding registry branch, if we're running a
-    # 64-bit Python on Win64
-    VS_BASE = r"Software\Wow6432Node\Microsoft\VisualStudio\%0.1f"
-    VSEXPRESS_BASE = r"Software\Wow6432Node\Microsoft\VCExpress\%0.1f"
-    WINSDK_BASE = r"Software\Wow6432Node\Microsoft\Microsoft SDKs\Windows"
-    NET_BASE = r"Software\Wow6432Node\Microsoft\.NETFramework"
-else:
-    VS_BASE = r"Software\Microsoft\VisualStudio\%0.1f"
-    VSEXPRESS_BASE = r"Software\Microsoft\VCExpress\%0.1f"
-    WINSDK_BASE = r"Software\Microsoft\Microsoft SDKs\Windows"
-    NET_BASE = r"Software\Microsoft\.NETFramework"
-
-# A map keyed by get_platform() return values to values accepted by
-# 'vcvarsall.bat'.  Note a cross-compile may combine these (eg, 'x86_amd64' is
-# the param to cross-compile on x86 targetting amd64.)
-PLAT_TO_VCVARS = {
-    'win32' : 'x86',
-    'win-amd64' : 'amd64',
-    'win-ia64' : 'ia64',
-}
-
-class Reg:
-    """Helper class to read values from the registry
-    """
-
-    def get_value(cls, path, key):
-        for base in HKEYS:
-            d = cls.read_values(base, path)
-            if d and key in d:
-                return d[key]
-        raise KeyError(key)
-    get_value = classmethod(get_value)
-
-    def read_keys(cls, base, key):
-        """Return list of registry keys."""
-        try:
-            handle = RegOpenKeyEx(base, key)
-        except RegError:
-            return None
-        L = []
-        i = 0
-        while True:
-            try:
-                k = RegEnumKey(handle, i)
-            except RegError:
-                break
-            L.append(k)
-            i += 1
-        return L
-    read_keys = classmethod(read_keys)
-
-    def read_values(cls, base, key):
-        """Return dict of registry keys and values.
-
-        All names are converted to lowercase.
-        """
-        try:
-            handle = RegOpenKeyEx(base, key)
-        except RegError:
-            return None
-        d = {}
-        i = 0
-        while True:
-            try:
-                name, value, type = RegEnumValue(handle, i)
-            except RegError:
-                break
-            name = name.lower()
-            d[cls.convert_mbcs(name)] = cls.convert_mbcs(value)
-            i += 1
-        return d
-    read_values = classmethod(read_values)
-
-    def convert_mbcs(s):
-        dec = getattr(s, "decode", None)
-        if dec is not None:
-            try:
-                s = dec("mbcs")
-            except UnicodeError:
-                pass
-        return s
-    convert_mbcs = staticmethod(convert_mbcs)
-
-class MacroExpander:
-
-    def __init__(self, version):
-        self.macros = {}
-        self.vsbase = VS_BASE % version
-        self.load_macros(version)
-
-    def set_macro(self, macro, path, key):
-        self.macros["$(%s)" % macro] = Reg.get_value(path, key)
-
-    def load_macros(self, version):
-        self.set_macro("VCInstallDir", self.vsbase + r"\Setup\VC", "productdir")
-        self.set_macro("VSInstallDir", self.vsbase + r"\Setup\VS", "productdir")
-        self.set_macro("FrameworkDir", NET_BASE, "installroot")
-        try:
-            if version >= 8.0:
-                self.set_macro("FrameworkSDKDir", NET_BASE,
-                               "sdkinstallrootv2.0")
-            else:
-                raise KeyError("sdkinstallrootv2.0")
-        except KeyError:
-            raise DistutilsPlatformError(
-            """Python was built with Visual Studio 2008;
-extensions must be built with a compiler than can generate compatible binaries.
-Visual Studio 2008 was not found on this system. If you have Cygwin installed,
-you can try compiling with MingW32, by passing "-c mingw32" to setup.py.""")
-
-        if version >= 9.0:
-            self.set_macro("FrameworkVersion", self.vsbase, "clr version")
-            self.set_macro("WindowsSdkDir", WINSDK_BASE, "currentinstallfolder")
-        else:
-            p = r"Software\Microsoft\NET Framework Setup\Product"
-            for base in HKEYS:
-                try:
-                    h = RegOpenKeyEx(base, p)
-                except RegError:
-                    continue
-                key = RegEnumKey(h, 0)
-                d = Reg.get_value(base, r"%s\%s" % (p, key))
-                self.macros["$(FrameworkVersion)"] = d["version"]
-
-    def sub(self, s):
-        for k, v in self.macros.items():
-            s = s.replace(k, v)
-        return s
-
-def get_build_version():
-    """Return the version of MSVC that was used to build Python.
-
-    For Python 2.3 and up, the version number is included in
-    sys.version.  For earlier versions, assume the compiler is MSVC 6.
-    """
-    prefix = "MSC v."
-    i = sys.version.find(prefix)
-    if i == -1:
-        return 6
-    i = i + len(prefix)
-    s, rest = sys.version[i:].split(" ", 1)
-    majorVersion = int(s[:-2]) - 6
-    minorVersion = int(s[2:3]) / 10.0
-    # I don't think paths are affected by minor version in version 6
-    if majorVersion == 6:
-        minorVersion = 0
-    if majorVersion >= 6:
-        return majorVersion + minorVersion
-    # else we don't know what version of the compiler this is
-    return None
-
-def normalize_and_reduce_paths(paths):
-    """Return a list of normalized paths with duplicates removed.
-
-    The current order of paths is maintained.
-    """
-    # Paths are normalized so things like:  /a and /a/ aren't both preserved.
-    reduced_paths = []
-    for p in paths:
-        np = os.path.normpath(p)
-        # XXX(nnorwitz): O(n**2), if reduced_paths gets long perhaps use a set.
-        if np not in reduced_paths:
-            reduced_paths.append(np)
-    return reduced_paths
-
-def removeDuplicates(variable):
-    """Remove duplicate values of an environment variable.
-    """
-    oldList = variable.split(os.pathsep)
-    newList = []
-    for i in oldList:
-        if i not in newList:
-            newList.append(i)
-    newVariable = os.pathsep.join(newList)
-    return newVariable
-
-def find_vcvarsall(version):
-    """Find the vcvarsall.bat file
-
-    At first it tries to find the productdir of VS 2008 in the registry. If
-    that fails it falls back to the VS90COMNTOOLS env var.
-    """
-    vsbase = VS_BASE % version
-    try:
-        productdir = Reg.get_value(r"%s\Setup\VC" % vsbase,
-                                   "productdir")
-    except KeyError:
-        productdir = None
-
-    # trying Express edition
-    if productdir is None:
-        vsbase = VSEXPRESS_BASE % version
-        try:
-            productdir = Reg.get_value(r"%s\Setup\VC" % vsbase,
-                                       "productdir")
-        except KeyError:
-            productdir = None
-            log.debug("Unable to find productdir in registry")
-
-    if not productdir or not os.path.isdir(productdir):
-        toolskey = "VS%0.f0COMNTOOLS" % version
-        toolsdir = os.environ.get(toolskey, None)
-
-        if toolsdir and os.path.isdir(toolsdir):
-            productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")
-            productdir = os.path.abspath(productdir)
-            if not os.path.isdir(productdir):
-                log.debug("%s is not a valid directory" % productdir)
-                return None
-        else:
-            log.debug("Env var %s is not set or invalid" % toolskey)
-    if not productdir:
-        log.debug("No productdir found")
-        return None
-    vcvarsall = os.path.join(productdir, "vcvarsall.bat")
-    if os.path.isfile(vcvarsall):
-        return vcvarsall
-    log.debug("Unable to find vcvarsall.bat")
-    return None
-
-def query_vcvarsall(version, arch="x86"):
-    """Launch vcvarsall.bat and read the settings from its environment
-    """
-    vcvarsall = find_vcvarsall(version)
-    interesting = set(("include", "lib", "libpath", "path"))
-    result = {}
-
-    if vcvarsall is None:
-        raise DistutilsPlatformError("Unable to find vcvarsall.bat")
-    log.debug("Calling 'vcvarsall.bat %s' (version=%s)", arch, version)
-    popen = subprocess.Popen('"%s" %s & set' % (vcvarsall, arch),
-                             stdout=subprocess.PIPE,
-                             stderr=subprocess.PIPE)
-    try:
-        stdout, stderr = popen.communicate()
-        if popen.wait() != 0:
-            raise DistutilsPlatformError(stderr.decode("mbcs"))
-
-        stdout = stdout.decode("mbcs")
-        for line in stdout.split("\n"):
-            line = Reg.convert_mbcs(line)
-            if '=' not in line:
-                continue
-            line = line.strip()
-            key, value = line.split('=', 1)
-            key = key.lower()
-            if key in interesting:
-                if value.endswith(os.pathsep):
-                    value = value[:-1]
-                result[key] = removeDuplicates(value)
-
-    finally:
-        popen.stdout.close()
-        popen.stderr.close()
-
-    if len(result) != len(interesting):
-        raise ValueError(str(list(result.keys())))
-
-    return result
-
-# More globals
-VERSION = get_build_version()
-if VERSION < 8.0:
-    raise DistutilsPlatformError("VC %0.1f is not supported by this module" % VERSION)
-# MACROS = MacroExpander(VERSION)
-
-class MSVCCompiler(CCompiler) :
-    """Concrete class that implements an interface to Microsoft Visual C++,
-       as defined by the CCompiler abstract class."""
-
-    compiler_type = 'msvc'
-
-    # Just set this so CCompiler's constructor doesn't barf.  We currently
-    # don't use the 'set_executables()' bureaucracy provided by CCompiler,
-    # as it really isn't necessary for this sort of single-compiler class.
-    # Would be nice to have a consistent interface with UnixCCompiler,
-    # though, so it's worth thinking about.
-    executables = {}
-
-    # Private class data (need to distinguish C from C++ source for compiler)
-    _c_extensions = ['.c']
-    _cpp_extensions = ['.cc', '.cpp', '.cxx']
-    _rc_extensions = ['.rc']
-    _mc_extensions = ['.mc']
-
-    # Needed for the filename generation methods provided by the
-    # base class, CCompiler.
-    src_extensions = (_c_extensions + _cpp_extensions +
-                      _rc_extensions + _mc_extensions)
-    res_extension = '.res'
-    obj_extension = '.obj'
-    static_lib_extension = '.lib'
-    shared_lib_extension = '.dll'
-    static_lib_format = shared_lib_format = '%s%s'
-    exe_extension = '.exe'
-
-    def __init__(self, verbose=0, dry_run=0, force=0):
-        CCompiler.__init__ (self, verbose, dry_run, force)
-        self.__version = VERSION
-        self.__root = r"Software\Microsoft\VisualStudio"
-        # self.__macros = MACROS
-        self.__paths = []
-        # target platform (.plat_name is consistent with 'bdist')
-        self.plat_name = None
-        self.__arch = None # deprecated name
-        self.initialized = False
-
-    def initialize(self, plat_name=None):
-        # multi-init means we would need to check platform same each time...
-        assert not self.initialized, "don't init multiple times"
-        if plat_name is None:
-            plat_name = get_platform()
-        # sanity check for platforms to prevent obscure errors later.
-        ok_plats = 'win32', 'win-amd64', 'win-ia64'
-        if plat_name not in ok_plats:
-            raise DistutilsPlatformError("--plat-name must be one of %s" %
-                                         (ok_plats,))
-
-        if "DISTUTILS_USE_SDK" in os.environ and "MSSdk" in os.environ and self.find_exe("cl.exe"):
-            # Assume that the SDK set up everything alright; don't try to be
-            # smarter
-            self.cc = "cl.exe"
-            self.linker = "link.exe"
-            self.lib = "lib.exe"
-            self.rc = "rc.exe"
-            self.mc = "mc.exe"
-        else:
-            # On x86, 'vcvars32.bat amd64' creates an env that doesn't work;
-            # to cross compile, you use 'x86_amd64'.
-            # On AMD64, 'vcvars32.bat amd64' is a native build env; to cross
-            # compile use 'x86' (ie, it runs the x86 compiler directly)
-            # No idea how itanium handles this, if at all.
-            if plat_name == get_platform() or plat_name == 'win32':
-                # native build or cross-compile to win32
-                plat_spec = PLAT_TO_VCVARS[plat_name]
-            else:
-                # cross compile from win32 -> some 64bit
-                plat_spec = PLAT_TO_VCVARS[get_platform()] + '_' + \
-                            PLAT_TO_VCVARS[plat_name]
-
-            vc_env = query_vcvarsall(VERSION, plat_spec)
-
-            # take care to only use strings in the environment.
-            self.__paths = vc_env['path'].encode('mbcs').split(os.pathsep)
-            os.environ['lib'] = vc_env['lib'].encode('mbcs')
-            os.environ['include'] = vc_env['include'].encode('mbcs')
-
-            if len(self.__paths) == 0:
-                raise DistutilsPlatformError("Python was built with %s, "
-                       "and extensions need to be built with the same "
-                       "version of the compiler, but it isn't installed."
-                       % self.__product)
-
-            self.cc = self.find_exe("cl.exe")
-            self.linker = self.find_exe("link.exe")
-            self.lib = self.find_exe("lib.exe")
-            self.rc = self.find_exe("rc.exe")   # resource compiler
-            self.mc = self.find_exe("mc.exe")   # message compiler
-            #self.set_path_env_var('lib')
-            #self.set_path_env_var('include')
-
-        # extend the MSVC path with the current path
-        try:
-            for p in os.environ['path'].split(';'):
-                self.__paths.append(p)
-        except KeyError:
-            pass
-        self.__paths = normalize_and_reduce_paths(self.__paths)
-        os.environ['path'] = ";".join(self.__paths)
-
-        self.preprocess_options = None
-        if self.__arch == "x86":
-            self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3',
-                                     '/DNDEBUG']
-            self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3',
-                                          '/Z7', '/D_DEBUG']
-        else:
-            # Win64
-            self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', '/GS-' ,
-                                     '/DNDEBUG']
-            self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/GS-',
-                                          '/Z7', '/D_DEBUG']
-
-        self.ldflags_shared = ['/DLL', '/nologo', '/INCREMENTAL:NO']
-        if self.__version >= 7:
-            self.ldflags_shared_debug = [
-                '/DLL', '/nologo', '/INCREMENTAL:no', '/DEBUG', '/pdb:None'
-                ]
-        self.ldflags_static = [ '/nologo']
-
-        self.initialized = True
-
-    # -- Worker 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 = ''
-        obj_names = []
-        for src_name in source_filenames:
-            (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:
-                # Better to raise an exception instead of silently continuing
-                # and later complain about sources and targets having
-                # different lengths
-                raise CompileError ("Don't know how to compile %s" % src_name)
-            if strip_dir:
-                base = os.path.basename (base)
-            if ext in self._rc_extensions:
-                obj_names.append (os.path.join (output_dir,
-                                                base + self.res_extension))
-            elif ext in self._mc_extensions:
-                obj_names.append (os.path.join (output_dir,
-                                                base + self.res_extension))
-            else:
-                obj_names.append (os.path.join (output_dir,
-                                                base + self.obj_extension))
-        return obj_names
-
-
-    def compile(self, sources,
-                output_dir=None, macros=None, include_dirs=None, debug=0,
-                extra_preargs=None, extra_postargs=None, depends=None):
-
-        if not self.initialized:
-            self.initialize()
-        compile_info = self._setup_compile(output_dir, macros, include_dirs,
-                                           sources, depends, extra_postargs)
-        macros, objects, extra_postargs, pp_opts, build = compile_info
-
-        compile_opts = extra_preargs or []
-        compile_opts.append ('/c')
-        if debug:
-            compile_opts.extend(self.compile_options_debug)
-        else:
-            compile_opts.extend(self.compile_options)
-
-        for obj in objects:
-            try:
-                src, ext = build[obj]
-            except KeyError:
-                continue
-            if debug:
-                # pass the full pathname to MSVC in debug mode,
-                # this allows the debugger to find the source file
-                # without asking the user to browse for it
-                src = os.path.abspath(src)
-
-            if ext in self._c_extensions:
-                input_opt = "/Tc" + src
-            elif ext in self._cpp_extensions:
-                input_opt = "/Tp" + src
-            elif ext in self._rc_extensions:
-                # compile .RC to .RES file
-                input_opt = src
-                output_opt = "/fo" + obj
-                try:
-                    self.spawn([self.rc] + pp_opts +
-                               [output_opt] + [input_opt])
-                except DistutilsExecError, msg:
-                    raise CompileError(msg)
-                continue
-            elif ext in self._mc_extensions:
-                # Compile .MC to .RC file to .RES file.
-                #   * '-h dir' specifies the directory for the
-                #     generated include file
-                #   * '-r dir' specifies the target directory of the
-                #     generated RC file and the binary message resource
-                #     it includes
-                #
-                # For now (since there are no options to change this),
-                # we use the source-directory for the include file and
-                # the build directory for the RC file and message
-                # resources. This works at least for win32all.
-                h_dir = os.path.dirname(src)
-                rc_dir = os.path.dirname(obj)
-                try:
-                    # first compile .MC to .RC and .H file
-                    self.spawn([self.mc] +
-                               ['-h', h_dir, '-r', rc_dir] + [src])
-                    base, _ = os.path.splitext (os.path.basename (src))
-                    rc_file = os.path.join (rc_dir, base + '.rc')
-                    # then compile .RC to .RES file
-                    self.spawn([self.rc] +
-                               ["/fo" + obj] + [rc_file])
-
-                except DistutilsExecError, msg:
-                    raise CompileError(msg)
-                continue
-            else:
-                # how to handle this file?
-                raise CompileError("Don't know how to compile %s to %s"
-                                   % (src, obj))
-
-            output_opt = "/Fo" + obj
-            try:
-                self.spawn([self.cc] + compile_opts + pp_opts +
-                           [input_opt, output_opt] +
-                           extra_postargs)
-            except DistutilsExecError, msg:
-                raise CompileError(msg)
-
-        return objects
-
-
-    def create_static_lib(self,
-                          objects,
-                          output_libname,
-                          output_dir=None,
-                          debug=0,
-                          target_lang=None):
-
-        if not self.initialized:
-            self.initialize()
-        (objects, output_dir) = self._fix_object_args(objects, output_dir)
-        output_filename = self.library_filename(output_libname,
-                                                output_dir=output_dir)
-
-        if self._need_link(objects, output_filename):
-            lib_args = objects + ['/OUT:' + output_filename]
-            if debug:
-                pass # XXX what goes here?
-            try:
-                self.spawn([self.lib] + lib_args)
-            except DistutilsExecError, msg:
-                raise LibError(msg)
-        else:
-            log.debug("skipping %s (up-to-date)", output_filename)
-
-
-    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):
-
-        if not self.initialized:
-            self.initialize()
-        (objects, output_dir) = self._fix_object_args(objects, output_dir)
-        fixed_args = self._fix_lib_args(libraries, library_dirs,
-                                        runtime_library_dirs)
-        (libraries, library_dirs, runtime_library_dirs) = fixed_args
-
-        if runtime_library_dirs:
-            self.warn ("I don't know what to do with 'runtime_library_dirs': "
-                       + str (runtime_library_dirs))
-
-        lib_opts = gen_lib_options(self,
-                                   library_dirs, runtime_library_dirs,
-                                   libraries)
-        if output_dir is not None:
-            output_filename = os.path.join(output_dir, output_filename)
-
-        if self._need_link(objects, output_filename):
-            if target_desc == CCompiler.EXECUTABLE:
-                if debug:
-                    ldflags = self.ldflags_shared_debug[1:]
-                else:
-                    ldflags = self.ldflags_shared[1:]
-            else:
-                if debug:
-                    ldflags = self.ldflags_shared_debug
-                else:
-                    ldflags = self.ldflags_shared
-
-            export_opts = []
-            for sym in (export_symbols or []):
-                export_opts.append("/EXPORT:" + sym)
-
-            ld_args = (ldflags + lib_opts + export_opts +
-                       objects + ['/OUT:' + output_filename])
-
-            # The MSVC linker generates .lib and .exp files, which cannot be
-            # suppressed by any linker switches. The .lib files may even be
-            # needed! Make sure they are generated in the temporary build
-            # directory. Since they have different names for debug and release
-            # builds, they can go into the same directory.
-            build_temp = os.path.dirname(objects[0])
-            if export_symbols is not None:
-                (dll_name, dll_ext) = os.path.splitext(
-                    os.path.basename(output_filename))
-                implib_file = os.path.join(
-                    build_temp,
-                    self.library_filename(dll_name))
-                ld_args.append ('/IMPLIB:' + implib_file)
-
-            # Embedded manifests are recommended - see MSDN article titled
-            # "How to: Embed a Manifest Inside a C/C++ Application"
-            # (currently at http://msdn2.microsoft.com/en-us/library/ms235591(VS.80).aspx)
-            # Ask the linker to generate the manifest in the temp dir, so
-            # we can embed it later.
-            temp_manifest = os.path.join(
-                    build_temp,
-                    os.path.basename(output_filename) + ".manifest")
-            ld_args.append('/MANIFESTFILE:' + temp_manifest)
-
-            if extra_preargs:
-                ld_args[:0] = extra_preargs
-            if extra_postargs:
-                ld_args.extend(extra_postargs)
-
-            self.mkpath(os.path.dirname(output_filename))
-            try:
-                self.spawn([self.linker] + ld_args)
-            except DistutilsExecError, msg:
-                raise LinkError(msg)
-
-            # embed the manifest
-            # XXX - this is somewhat fragile - if mt.exe fails, distutils
-            # will still consider the DLL up-to-date, but it will not have a
-            # manifest.  Maybe we should link to a temp file?  OTOH, that
-            # implies a build environment error that shouldn't go undetected.
-            if target_desc == CCompiler.EXECUTABLE:
-                mfid = 1
-            else:
-                mfid = 2
-                self._remove_visual_c_ref(temp_manifest)
-            out_arg = '-outputresource:%s;%s' % (output_filename, mfid)
-            try:
-                self.spawn(['mt.exe', '-nologo', '-manifest',
-                            temp_manifest, out_arg])
-            except DistutilsExecError, msg:
-                raise LinkError(msg)
-        else:
-            log.debug("skipping %s (up-to-date)", output_filename)
-
-    def _remove_visual_c_ref(self, manifest_file):
-        try:
-            # Remove references to the Visual C runtime, so they will
-            # fall through to the Visual C dependency of Python.exe.
-            # This way, when installed for a restricted user (e.g.
-            # runtimes are not in WinSxS folder, but in Python's own
-            # folder), the runtimes do not need to be in every folder
-            # with .pyd's.
-            manifest_f = open(manifest_file)
-            try:
-                manifest_buf = manifest_f.read()
-            finally:
-                manifest_f.close()
-            pattern = re.compile(
-                r"""<assemblyIdentity.*?name=("|')Microsoft\."""\
-                r"""VC\d{2}\.CRT("|').*?(/>|</assemblyIdentity>)""",
-                re.DOTALL)
-            manifest_buf = re.sub(pattern, "", manifest_buf)
-            pattern = "<dependentAssembly>\s*</dependentAssembly>"
-            manifest_buf = re.sub(pattern, "", manifest_buf)
-            manifest_f = open(manifest_file, 'w')
-            try:
-                manifest_f.write(manifest_buf)
-            finally:
-                manifest_f.close()
-        except IOError:
-            pass
-
-    # -- Miscellaneous methods -----------------------------------------
-    # These are all used by the 'gen_lib_options() function, in
-    # ccompiler.py.
-
-    def library_dir_option(self, dir):
-        return "/LIBPATH:" + dir
-
-    def runtime_library_dir_option(self, dir):
-        raise DistutilsPlatformError(
-              "don't know how to set runtime library search path for MSVC++")
-
-    def library_option(self, lib):
-        return self.library_filename(lib)
-
-
-    def find_library_file(self, dirs, lib, debug=0):
-        # Prefer a debugging library if found (and requested), but deal
-        # with it if we don't have one.
-        if debug:
-            try_names = [lib + "_d", lib]
-        else:
-            try_names = [lib]
-        for dir in dirs:
-            for name in try_names:
-                libfile = os.path.join(dir, self.library_filename (name))
-                if os.path.exists(libfile):
-                    return libfile
-        else:
-            # Oops, didn't find it in *any* of 'dirs'
-            return None
-
-    # Helper methods for using the MSVC registry settings
-
-    def find_exe(self, exe):
-        """Return path to an MSVC executable program.
-
-        Tries to find the program in several places: first, one of the
-        MSVC program search paths from the registry; next, the directories
-        in the PATH environment variable.  If any of those work, return an
-        absolute path that is known to exist.  If none of them work, just
-        return the original program name, 'exe'.
-        """
-        for p in self.__paths:
-            fn = os.path.join(os.path.abspath(p), exe)
-            if os.path.isfile(fn):
-                return fn
-
-        # didn't find it; try existing path
-        for p in os.environ['Path'].split(';'):
-            fn = os.path.join(os.path.abspath(p),exe)
-            if os.path.isfile(fn):
-                return fn
-
-        return exe
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/msvccompiler.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/msvccompiler.py
deleted file mode 100644
index 8bb8b48..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/msvccompiler.py
+++ /dev/null
@@ -1,659 +0,0 @@
-"""distutils.msvccompiler
-
-Contains MSVCCompiler, an implementation of the abstract CCompiler class
-for the Microsoft Visual Studio.
-"""
-
-# Written by Perry Stoll
-# hacked by Robin Becker and Thomas Heller to do a better job of
-#   finding DevStudio (through the registry)
-
-__revision__ = "$Id$"
-
-import sys
-import os
-import string
-
-from distutils.errors import (DistutilsExecError, DistutilsPlatformError,
-                              CompileError, LibError, LinkError)
-from distutils.ccompiler import CCompiler, gen_lib_options
-from distutils import log
-
-_can_read_reg = 0
-try:
-    import _winreg
-
-    _can_read_reg = 1
-    hkey_mod = _winreg
-
-    RegOpenKeyEx = _winreg.OpenKeyEx
-    RegEnumKey = _winreg.EnumKey
-    RegEnumValue = _winreg.EnumValue
-    RegError = _winreg.error
-
-except ImportError:
-    try:
-        import win32api
-        import win32con
-        _can_read_reg = 1
-        hkey_mod = win32con
-
-        RegOpenKeyEx = win32api.RegOpenKeyEx
-        RegEnumKey = win32api.RegEnumKey
-        RegEnumValue = win32api.RegEnumValue
-        RegError = win32api.error
-
-    except ImportError:
-        log.info("Warning: Can't read registry to find the "
-                 "necessary compiler setting\n"
-                 "Make sure that Python modules _winreg, "
-                 "win32api or win32con are installed.")
-        pass
-
-if _can_read_reg:
-    HKEYS = (hkey_mod.HKEY_USERS,
-             hkey_mod.HKEY_CURRENT_USER,
-             hkey_mod.HKEY_LOCAL_MACHINE,
-             hkey_mod.HKEY_CLASSES_ROOT)
-
-def read_keys(base, key):
-    """Return list of registry keys."""
-
-    try:
-        handle = RegOpenKeyEx(base, key)
-    except RegError:
-        return None
-    L = []
-    i = 0
-    while 1:
-        try:
-            k = RegEnumKey(handle, i)
-        except RegError:
-            break
-        L.append(k)
-        i = i + 1
-    return L
-
-def read_values(base, key):
-    """Return dict of registry keys and values.
-
-    All names are converted to lowercase.
-    """
-    try:
-        handle = RegOpenKeyEx(base, key)
-    except RegError:
-        return None
-    d = {}
-    i = 0
-    while 1:
-        try:
-            name, value, type = RegEnumValue(handle, i)
-        except RegError:
-            break
-        name = name.lower()
-        d[convert_mbcs(name)] = convert_mbcs(value)
-        i = i + 1
-    return d
-
-def convert_mbcs(s):
-    enc = getattr(s, "encode", None)
-    if enc is not None:
-        try:
-            s = enc("mbcs")
-        except UnicodeError:
-            pass
-    return s
-
-class MacroExpander:
-
-    def __init__(self, version):
-        self.macros = {}
-        self.load_macros(version)
-
-    def set_macro(self, macro, path, key):
-        for base in HKEYS:
-            d = read_values(base, path)
-            if d:
-                self.macros["$(%s)" % macro] = d[key]
-                break
-
-    def load_macros(self, version):
-        vsbase = r"Software\Microsoft\VisualStudio\%0.1f" % version
-        self.set_macro("VCInstallDir", vsbase + r"\Setup\VC", "productdir")
-        self.set_macro("VSInstallDir", vsbase + r"\Setup\VS", "productdir")
-        net = r"Software\Microsoft\.NETFramework"
-        self.set_macro("FrameworkDir", net, "installroot")
-        try:
-            if version > 7.0:
-                self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv1.1")
-            else:
-                self.set_macro("FrameworkSDKDir", net, "sdkinstallroot")
-        except KeyError:
-            raise DistutilsPlatformError, \
-                  ("""Python was built with Visual Studio 2003;
-extensions must be built with a compiler than can generate compatible binaries.
-Visual Studio 2003 was not found on this system. If you have Cygwin installed,
-you can try compiling with MingW32, by passing "-c mingw32" to setup.py.""")
-
-        p = r"Software\Microsoft\NET Framework Setup\Product"
-        for base in HKEYS:
-            try:
-                h = RegOpenKeyEx(base, p)
-            except RegError:
-                continue
-            key = RegEnumKey(h, 0)
-            d = read_values(base, r"%s\%s" % (p, key))
-            self.macros["$(FrameworkVersion)"] = d["version"]
-
-    def sub(self, s):
-        for k, v in self.macros.items():
-            s = string.replace(s, k, v)
-        return s
-
-def get_build_version():
-    """Return the version of MSVC that was used to build Python.
-
-    For Python 2.3 and up, the version number is included in
-    sys.version.  For earlier versions, assume the compiler is MSVC 6.
-    """
-
-    prefix = "MSC v."
-    i = string.find(sys.version, prefix)
-    if i == -1:
-        return 6
-    i = i + len(prefix)
-    s, rest = sys.version[i:].split(" ", 1)
-    majorVersion = int(s[:-2]) - 6
-    minorVersion = int(s[2:3]) / 10.0
-    # I don't think paths are affected by minor version in version 6
-    if majorVersion == 6:
-        minorVersion = 0
-    if majorVersion >= 6:
-        return majorVersion + minorVersion
-    # else we don't know what version of the compiler this is
-    return None
-
-def get_build_architecture():
-    """Return the processor architecture.
-
-    Possible results are "Intel", "Itanium", or "AMD64".
-    """
-
-    prefix = " bit ("
-    i = string.find(sys.version, prefix)
-    if i == -1:
-        return "Intel"
-    j = string.find(sys.version, ")", i)
-    return sys.version[i+len(prefix):j]
-
-def normalize_and_reduce_paths(paths):
-    """Return a list of normalized paths with duplicates removed.
-
-    The current order of paths is maintained.
-    """
-    # Paths are normalized so things like:  /a and /a/ aren't both preserved.
-    reduced_paths = []
-    for p in paths:
-        np = os.path.normpath(p)
-        # XXX(nnorwitz): O(n**2), if reduced_paths gets long perhaps use a set.
-        if np not in reduced_paths:
-            reduced_paths.append(np)
-    return reduced_paths
-
-
-class MSVCCompiler (CCompiler) :
-    """Concrete class that implements an interface to Microsoft Visual C++,
-       as defined by the CCompiler abstract class."""
-
-    compiler_type = 'msvc'
-
-    # Just set this so CCompiler's constructor doesn't barf.  We currently
-    # don't use the 'set_executables()' bureaucracy provided by CCompiler,
-    # as it really isn't necessary for this sort of single-compiler class.
-    # Would be nice to have a consistent interface with UnixCCompiler,
-    # though, so it's worth thinking about.
-    executables = {}
-
-    # Private class data (need to distinguish C from C++ source for compiler)
-    _c_extensions = ['.c']
-    _cpp_extensions = ['.cc', '.cpp', '.cxx']
-    _rc_extensions = ['.rc']
-    _mc_extensions = ['.mc']
-
-    # Needed for the filename generation methods provided by the
-    # base class, CCompiler.
-    src_extensions = (_c_extensions + _cpp_extensions +
-                      _rc_extensions + _mc_extensions)
-    res_extension = '.res'
-    obj_extension = '.obj'
-    static_lib_extension = '.lib'
-    shared_lib_extension = '.dll'
-    static_lib_format = shared_lib_format = '%s%s'
-    exe_extension = '.exe'
-
-    def __init__ (self, verbose=0, dry_run=0, force=0):
-        CCompiler.__init__ (self, verbose, dry_run, force)
-        self.__version = get_build_version()
-        self.__arch = get_build_architecture()
-        if self.__arch == "Intel":
-            # x86
-            if self.__version >= 7:
-                self.__root = r"Software\Microsoft\VisualStudio"
-                self.__macros = MacroExpander(self.__version)
-            else:
-                self.__root = r"Software\Microsoft\Devstudio"
-            self.__product = "Visual Studio version %s" % self.__version
-        else:
-            # Win64. Assume this was built with the platform SDK
-            self.__product = "Microsoft SDK compiler %s" % (self.__version + 6)
-
-        self.initialized = False
-
-    def initialize(self):
-        self.__paths = []
-        if "DISTUTILS_USE_SDK" in os.environ and "MSSdk" in os.environ and self.find_exe("cl.exe"):
-            # Assume that the SDK set up everything alright; don't try to be
-            # smarter
-            self.cc = "cl.exe"
-            self.linker = "link.exe"
-            self.lib = "lib.exe"
-            self.rc = "rc.exe"
-            self.mc = "mc.exe"
-        else:
-            self.__paths = self.get_msvc_paths("path")
-
-            if len (self.__paths) == 0:
-                raise DistutilsPlatformError, \
-                      ("Python was built with %s, "
-                       "and extensions need to be built with the same "
-                       "version of the compiler, but it isn't installed." % self.__product)
-
-            self.cc = self.find_exe("cl.exe")
-            self.linker = self.find_exe("link.exe")
-            self.lib = self.find_exe("lib.exe")
-            self.rc = self.find_exe("rc.exe")   # resource compiler
-            self.mc = self.find_exe("mc.exe")   # message compiler
-            self.set_path_env_var('lib')
-            self.set_path_env_var('include')
-
-        # extend the MSVC path with the current path
-        try:
-            for p in string.split(os.environ['path'], ';'):
-                self.__paths.append(p)
-        except KeyError:
-            pass
-        self.__paths = normalize_and_reduce_paths(self.__paths)
-        os.environ['path'] = string.join(self.__paths, ';')
-
-        self.preprocess_options = None
-        if self.__arch == "Intel":
-            self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', '/GX' ,
-                                     '/DNDEBUG']
-            self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/GX',
-                                          '/Z7', '/D_DEBUG']
-        else:
-            # Win64
-            self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', '/GS-' ,
-                                     '/DNDEBUG']
-            self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/GS-',
-                                          '/Z7', '/D_DEBUG']
-
-        self.ldflags_shared = ['/DLL', '/nologo', '/INCREMENTAL:NO']
-        if self.__version >= 7:
-            self.ldflags_shared_debug = [
-                '/DLL', '/nologo', '/INCREMENTAL:no', '/DEBUG'
-                ]
-        else:
-            self.ldflags_shared_debug = [
-                '/DLL', '/nologo', '/INCREMENTAL:no', '/pdb:None', '/DEBUG'
-                ]
-        self.ldflags_static = [ '/nologo']
-
-        self.initialized = True
-
-    # -- Worker 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 = ''
-        obj_names = []
-        for src_name in source_filenames:
-            (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:
-                # Better to raise an exception instead of silently continuing
-                # and later complain about sources and targets having
-                # different lengths
-                raise CompileError ("Don't know how to compile %s" % src_name)
-            if strip_dir:
-                base = os.path.basename (base)
-            if ext in self._rc_extensions:
-                obj_names.append (os.path.join (output_dir,
-                                                base + self.res_extension))
-            elif ext in self._mc_extensions:
-                obj_names.append (os.path.join (output_dir,
-                                                base + self.res_extension))
-            else:
-                obj_names.append (os.path.join (output_dir,
-                                                base + self.obj_extension))
-        return obj_names
-
-    # object_filenames ()
-
-
-    def compile(self, sources,
-                output_dir=None, macros=None, include_dirs=None, debug=0,
-                extra_preargs=None, extra_postargs=None, depends=None):
-
-        if not self.initialized: self.initialize()
-        macros, objects, extra_postargs, pp_opts, build = \
-                self._setup_compile(output_dir, macros, include_dirs, sources,
-                                    depends, extra_postargs)
-
-        compile_opts = extra_preargs or []
-        compile_opts.append ('/c')
-        if debug:
-            compile_opts.extend(self.compile_options_debug)
-        else:
-            compile_opts.extend(self.compile_options)
-
-        for obj in objects:
-            try:
-                src, ext = build[obj]
-            except KeyError:
-                continue
-            if debug:
-                # pass the full pathname to MSVC in debug mode,
-                # this allows the debugger to find the source file
-                # without asking the user to browse for it
-                src = os.path.abspath(src)
-
-            if ext in self._c_extensions:
-                input_opt = "/Tc" + src
-            elif ext in self._cpp_extensions:
-                input_opt = "/Tp" + src
-            elif ext in self._rc_extensions:
-                # compile .RC to .RES file
-                input_opt = src
-                output_opt = "/fo" + obj
-                try:
-                    self.spawn ([self.rc] + pp_opts +
-                                [output_opt] + [input_opt])
-                except DistutilsExecError, msg:
-                    raise CompileError, msg
-                continue
-            elif ext in self._mc_extensions:
-
-                # Compile .MC to .RC file to .RES file.
-                #   * '-h dir' specifies the directory for the
-                #     generated include file
-                #   * '-r dir' specifies the target directory of the
-                #     generated RC file and the binary message resource
-                #     it includes
-                #
-                # For now (since there are no options to change this),
-                # we use the source-directory for the include file and
-                # the build directory for the RC file and message
-                # resources. This works at least for win32all.
-
-                h_dir = os.path.dirname (src)
-                rc_dir = os.path.dirname (obj)
-                try:
-                    # first compile .MC to .RC and .H file
-                    self.spawn ([self.mc] +
-                                ['-h', h_dir, '-r', rc_dir] + [src])
-                    base, _ = os.path.splitext (os.path.basename (src))
-                    rc_file = os.path.join (rc_dir, base + '.rc')
-                    # then compile .RC to .RES file
-                    self.spawn ([self.rc] +
-                                ["/fo" + obj] + [rc_file])
-
-                except DistutilsExecError, msg:
-                    raise CompileError, msg
-                continue
-            else:
-                # how to handle this file?
-                raise CompileError (
-                    "Don't know how to compile %s to %s" % \
-                    (src, obj))
-
-            output_opt = "/Fo" + obj
-            try:
-                self.spawn ([self.cc] + compile_opts + pp_opts +
-                            [input_opt, output_opt] +
-                            extra_postargs)
-            except DistutilsExecError, msg:
-                raise CompileError, msg
-
-        return objects
-
-    # compile ()
-
-
-    def create_static_lib (self,
-                           objects,
-                           output_libname,
-                           output_dir=None,
-                           debug=0,
-                           target_lang=None):
-
-        if not self.initialized: self.initialize()
-        (objects, output_dir) = self._fix_object_args (objects, output_dir)
-        output_filename = \
-            self.library_filename (output_libname, output_dir=output_dir)
-
-        if self._need_link (objects, output_filename):
-            lib_args = objects + ['/OUT:' + output_filename]
-            if debug:
-                pass                    # XXX what goes here?
-            try:
-                self.spawn ([self.lib] + lib_args)
-            except DistutilsExecError, msg:
-                raise LibError, msg
-
-        else:
-            log.debug("skipping %s (up-to-date)", output_filename)
-
-    # create_static_lib ()
-
-    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):
-
-        if not self.initialized: self.initialize()
-        (objects, output_dir) = self._fix_object_args (objects, output_dir)
-        (libraries, library_dirs, runtime_library_dirs) = \
-            self._fix_lib_args (libraries, library_dirs, runtime_library_dirs)
-
-        if runtime_library_dirs:
-            self.warn ("I don't know what to do with 'runtime_library_dirs': "
-                       + str (runtime_library_dirs))
-
-        lib_opts = gen_lib_options (self,
-                                    library_dirs, runtime_library_dirs,
-                                    libraries)
-        if output_dir is not None:
-            output_filename = os.path.join (output_dir, output_filename)
-
-        if self._need_link (objects, output_filename):
-
-            if target_desc == CCompiler.EXECUTABLE:
-                if debug:
-                    ldflags = self.ldflags_shared_debug[1:]
-                else:
-                    ldflags = self.ldflags_shared[1:]
-            else:
-                if debug:
-                    ldflags = self.ldflags_shared_debug
-                else:
-                    ldflags = self.ldflags_shared
-
-            export_opts = []
-            for sym in (export_symbols or []):
-                export_opts.append("/EXPORT:" + sym)
-
-            ld_args = (ldflags + lib_opts + export_opts +
-                       objects + ['/OUT:' + output_filename])
-
-            # The MSVC linker generates .lib and .exp files, which cannot be
-            # suppressed by any linker switches. The .lib files may even be
-            # needed! Make sure they are generated in the temporary build
-            # directory. Since they have different names for debug and release
-            # builds, they can go into the same directory.
-            if export_symbols is not None:
-                (dll_name, dll_ext) = os.path.splitext(
-                    os.path.basename(output_filename))
-                implib_file = os.path.join(
-                    os.path.dirname(objects[0]),
-                    self.library_filename(dll_name))
-                ld_args.append ('/IMPLIB:' + implib_file)
-
-            if extra_preargs:
-                ld_args[:0] = extra_preargs
-            if extra_postargs:
-                ld_args.extend(extra_postargs)
-
-            self.mkpath (os.path.dirname (output_filename))
-            try:
-                self.spawn ([self.linker] + ld_args)
-            except DistutilsExecError, msg:
-                raise LinkError, msg
-
-        else:
-            log.debug("skipping %s (up-to-date)", output_filename)
-
-    # link ()
-
-
-    # -- Miscellaneous methods -----------------------------------------
-    # These are all used by the 'gen_lib_options() function, in
-    # ccompiler.py.
-
-    def library_dir_option (self, dir):
-        return "/LIBPATH:" + dir
-
-    def runtime_library_dir_option (self, dir):
-        raise DistutilsPlatformError, \
-              "don't know how to set runtime library search path for MSVC++"
-
-    def library_option (self, lib):
-        return self.library_filename (lib)
-
-
-    def find_library_file (self, dirs, lib, debug=0):
-        # Prefer a debugging library if found (and requested), but deal
-        # with it if we don't have one.
-        if debug:
-            try_names = [lib + "_d", lib]
-        else:
-            try_names = [lib]
-        for dir in dirs:
-            for name in try_names:
-                libfile = os.path.join(dir, self.library_filename (name))
-                if os.path.exists(libfile):
-                    return libfile
-        else:
-            # Oops, didn't find it in *any* of 'dirs'
-            return None
-
-    # find_library_file ()
-
-    # Helper methods for using the MSVC registry settings
-
-    def find_exe(self, exe):
-        """Return path to an MSVC executable program.
-
-        Tries to find the program in several places: first, one of the
-        MSVC program search paths from the registry; next, the directories
-        in the PATH environment variable.  If any of those work, return an
-        absolute path that is known to exist.  If none of them work, just
-        return the original program name, 'exe'.
-        """
-
-        for p in self.__paths:
-            fn = os.path.join(os.path.abspath(p), exe)
-            if os.path.isfile(fn):
-                return fn
-
-        # didn't find it; try existing path
-        for p in string.split(os.environ['Path'],';'):
-            fn = os.path.join(os.path.abspath(p),exe)
-            if os.path.isfile(fn):
-                return fn
-
-        return exe
-
-    def get_msvc_paths(self, path, platform='x86'):
-        """Get a list of devstudio directories (include, lib or path).
-
-        Return a list of strings.  The list will be empty if unable to
-        access the registry or appropriate registry keys not found.
-        """
-
-        if not _can_read_reg:
-            return []
-
-        path = path + " dirs"
-        if self.__version >= 7:
-            key = (r"%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directories"
-                   % (self.__root, self.__version))
-        else:
-            key = (r"%s\6.0\Build System\Components\Platforms"
-                   r"\Win32 (%s)\Directories" % (self.__root, platform))
-
-        for base in HKEYS:
-            d = read_values(base, key)
-            if d:
-                if self.__version >= 7:
-                    return string.split(self.__macros.sub(d[path]), ";")
-                else:
-                    return string.split(d[path], ";")
-        # MSVC 6 seems to create the registry entries we need only when
-        # the GUI is run.
-        if self.__version == 6:
-            for base in HKEYS:
-                if read_values(base, r"%s\6.0" % self.__root) is not None:
-                    self.warn("It seems you have Visual Studio 6 installed, "
-                        "but the expected registry settings are not present.\n"
-                        "You must at least run the Visual Studio GUI once "
-                        "so that these entries are created.")
-                    break
-        return []
-
-    def set_path_env_var(self, name):
-        """Set environment variable 'name' to an MSVC path type value.
-
-        This is equivalent to a SET command prior to execution of spawned
-        commands.
-        """
-
-        if name == "lib":
-            p = self.get_msvc_paths("library")
-        else:
-            p = self.get_msvc_paths(name)
-        if p:
-            os.environ[name] = string.join(p, ';')
-
-
-if get_build_version() >= 8.0:
-    log.debug("Importing new compiler from distutils.msvc9compiler")
-    OldMSVCCompiler = MSVCCompiler
-    from distutils.msvc9compiler import MSVCCompiler
-    # get_build_architecture not really relevant now we support cross-compile
-    from distutils.msvc9compiler import MacroExpander
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/spawn.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/spawn.py
deleted file mode 100644
index d063755..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/spawn.py
+++ /dev/null
@@ -1,173 +0,0 @@
-"""distutils.spawn
-
-Provides the 'spawn()' function, a front-end to various platform-
-specific functions for launching another program in a sub-process.
-Also provides the 'find_executable()' to search the path for a given
-executable name.
-"""
-
-__revision__ = "$Id$"
-
-import sys
-import os
-
-from distutils.errors import DistutilsPlatformError, DistutilsExecError
-from distutils import log
-
-def spawn(cmd, search_path=1, verbose=0, dry_run=0):
-    """Run another program, specified as a command list 'cmd', in a new process.
-
-    'cmd' is just the argument list for the new process, ie.
-    cmd[0] is the program to run and cmd[1:] are the rest of its arguments.
-    There is no way to run a program with a name different from that of its
-    executable.
-
-    If 'search_path' is true (the default), the system's executable
-    search path will be used to find the program; otherwise, cmd[0]
-    must be the exact path to the executable.  If 'dry_run' is true,
-    the command will not actually be run.
-
-    Raise DistutilsExecError if running the program fails in any way; just
-    return on success.
-    """
-    if os.name == 'posix':
-        _spawn_posix(cmd, search_path, dry_run=dry_run)
-    elif os.name == 'nt':
-        _spawn_nt(cmd, search_path, dry_run=dry_run)
-    elif os.name == 'os2':
-        _spawn_os2(cmd, search_path, dry_run=dry_run)
-    else:
-        raise DistutilsPlatformError, \
-              "don't know how to spawn programs on platform '%s'" % os.name
-
-def _nt_quote_args(args):
-    """Quote command-line arguments for DOS/Windows conventions.
-
-    Just wraps every argument which contains blanks in double quotes, and
-    returns a new argument list.
-    """
-    # XXX this doesn't seem very robust to me -- but if the Windows guys
-    # say it'll work, I guess I'll have to accept it.  (What if an arg
-    # contains quotes?  What other magic characters, other than spaces,
-    # have to be escaped?  Is there an escaping mechanism other than
-    # quoting?)
-    for i, arg in enumerate(args):
-        if ' ' in arg:
-            args[i] = '"%s"' % arg
-    return args
-
-def _spawn_nt(cmd, search_path=1, verbose=0, dry_run=0):
-    executable = cmd[0]
-    cmd = _nt_quote_args(cmd)
-    if search_path:
-        # either we find one or it stays the same
-        executable = find_executable(executable) or executable
-    log.info(' '.join([executable] + cmd[1:]))
-    if not dry_run:
-        # spawn for NT requires a full path to the .exe
-        try:
-            rc = os.spawnv(os.P_WAIT, executable, cmd)
-        except OSError, exc:
-            # this seems to happen when the command isn't found
-            raise DistutilsExecError, \
-                  "command '%s' failed: %s" % (cmd[0], exc[-1])
-        if rc != 0:
-            # and this reflects the command running but failing
-            raise DistutilsExecError, \
-                  "command '%s' failed with exit status %d" % (cmd[0], rc)
-
-def _spawn_os2(cmd, search_path=1, verbose=0, dry_run=0):
-    executable = cmd[0]
-    if search_path:
-        # either we find one or it stays the same
-        executable = find_executable(executable) or executable
-    log.info(' '.join([executable] + cmd[1:]))
-    if not dry_run:
-        # spawnv for OS/2 EMX requires a full path to the .exe
-        try:
-            rc = os.spawnv(os.P_WAIT, executable, cmd)
-        except OSError, exc:
-            # this seems to happen when the command isn't found
-            raise DistutilsExecError, \
-                  "command '%s' failed: %s" % (cmd[0], exc[-1])
-        if rc != 0:
-            # and this reflects the command running but failing
-            log.debug("command '%s' failed with exit status %d" % (cmd[0], rc))
-            raise DistutilsExecError, \
-                  "command '%s' failed with exit status %d" % (cmd[0], rc)
-
-
-def _spawn_posix(cmd, search_path=1, verbose=0, dry_run=0):
-    log.info(' '.join(cmd))
-    if dry_run:
-        return
-    exec_fn = search_path and os.execvp or os.execv
-    pid = os.fork()
-
-    if pid == 0:  # in the child
-        try:
-            exec_fn(cmd[0], cmd)
-        except OSError, e:
-            sys.stderr.write("unable to execute %s: %s\n" %
-                             (cmd[0], e.strerror))
-            os._exit(1)
-
-        sys.stderr.write("unable to execute %s for unknown reasons" % cmd[0])
-        os._exit(1)
-    else:   # in the parent
-        # Loop until the child either exits or is terminated by a signal
-        # (ie. keep waiting if it's merely stopped)
-        while 1:
-            try:
-                pid, status = os.waitpid(pid, 0)
-            except OSError, exc:
-                import errno
-                if exc.errno == errno.EINTR:
-                    continue
-                raise DistutilsExecError, \
-                      "command '%s' failed: %s" % (cmd[0], exc[-1])
-            if os.WIFSIGNALED(status):
-                raise DistutilsExecError, \
-                      "command '%s' terminated by signal %d" % \
-                      (cmd[0], os.WTERMSIG(status))
-
-            elif os.WIFEXITED(status):
-                exit_status = os.WEXITSTATUS(status)
-                if exit_status == 0:
-                    return   # hey, it succeeded!
-                else:
-                    raise DistutilsExecError, \
-                          "command '%s' failed with exit status %d" % \
-                          (cmd[0], exit_status)
-
-            elif os.WIFSTOPPED(status):
-                continue
-
-            else:
-                raise DistutilsExecError, \
-                      "unknown error executing '%s': termination status %d" % \
-                      (cmd[0], status)
-
-def find_executable(executable, path=None):
-    """Tries to find 'executable' in the directories listed in 'path'.
-
-    A string listing directories separated by 'os.pathsep'; defaults to
-    os.environ['PATH'].  Returns the complete filename or None if not found.
-    """
-    if path is None:
-        path = os.environ['PATH']
-    paths = path.split(os.pathsep)
-    base, ext = os.path.splitext(executable)
-
-    if (sys.platform == 'win32' or os.name == 'os2') and (ext != '.exe'):
-        executable = executable + '.exe'
-
-    if not os.path.isfile(executable):
-        for p in paths:
-            f = os.path.join(p, executable)
-            if os.path.isfile(f):
-                # the file exists, we have a shot at spawn working
-                return f
-        return None
-    else:
-        return executable
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/sysconfig.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/sysconfig.py
deleted file mode 100644
index 4bdce68..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/sysconfig.py
+++ /dev/null
@@ -1,571 +0,0 @@
-"""Provide access to Python's configuration information.  The specific
-configuration variables available depend heavily on the platform and
-configuration.  The values may be retrieved using
-get_config_var(name), and the list of variables is available via
-get_config_vars().keys().  Additional convenience functions are also
-available.
-
-Written by:   Fred L. Drake, Jr.
-Email:        <fdrake@acm.org>
-"""
-
-__revision__ = "$Id$"
-
-import os
-import re
-import string
-import sys
-
-from distutils.errors import DistutilsPlatformError
-
-# These are needed in a couple of spots, so just compute them once.
-PREFIX = os.path.normpath(sys.prefix)
-EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
-
-# Path to the base directory of the project. On Windows the binary may
-# live in project/PCBuild9.  If we're dealing with an x64 Windows build,
-# it'll live in project/PCbuild/amd64.
-project_base = os.path.dirname(os.path.abspath(sys.executable))
-if os.name == "nt" and "pcbuild" in project_base[-8:].lower():
-    project_base = os.path.abspath(os.path.join(project_base, os.path.pardir))
-# PC/VS7.1
-if os.name == "nt" and "\\pc\\v" in project_base[-10:].lower():
-    project_base = os.path.abspath(os.path.join(project_base, os.path.pardir,
-                                                os.path.pardir))
-# PC/AMD64
-if os.name == "nt" and "\\pcbuild\\amd64" in project_base[-14:].lower():
-    project_base = os.path.abspath(os.path.join(project_base, os.path.pardir,
-                                                os.path.pardir))
-
-# python_build: (Boolean) if true, we're either building Python or
-# building an extension with an un-installed Python, so we use
-# different (hard-wired) directories.
-# Setup.local is available for Makefile builds including VPATH builds,
-# Setup.dist is available on Windows
-def _python_build():
-    for fn in ("Setup.dist", "Setup.local"):
-        if os.path.isfile(os.path.join(project_base, "Modules", fn)):
-            return True
-    return False
-python_build = _python_build()
-
-
-def get_python_version():
-    """Return a string containing the major and minor Python version,
-    leaving off the patchlevel.  Sample return values could be '1.5'
-    or '2.2'.
-    """
-    return sys.version[:3]
-
-
-def get_python_inc(plat_specific=0, prefix=None):
-    """Return the directory containing installed Python header files.
-
-    If 'plat_specific' is false (the default), this is the path to the
-    non-platform-specific header files, i.e. Python.h and so on;
-    otherwise, this is the path to platform-specific header files
-    (namely pyconfig.h).
-
-    If 'prefix' is supplied, use it instead of sys.prefix or
-    sys.exec_prefix -- i.e., ignore 'plat_specific'.
-    """
-    if prefix is None:
-        prefix = plat_specific and EXEC_PREFIX or PREFIX
-
-    if os.name == "posix":
-        if python_build:
-            buildir = os.path.dirname(sys.executable)
-            if plat_specific:
-                # python.h is located in the buildir
-                inc_dir = buildir
-            else:
-                # the source dir is relative to the buildir
-                srcdir = os.path.abspath(os.path.join(buildir,
-                                         get_config_var('srcdir')))
-                # Include is located in the srcdir
-                inc_dir = os.path.join(srcdir, "Include")
-            return inc_dir
-        return os.path.join(prefix, "include", "python" + get_python_version())
-    elif os.name == "nt":
-        return os.path.join(prefix, "include")
-    elif os.name == "os2":
-        return os.path.join(prefix, "Include")
-    else:
-        raise DistutilsPlatformError(
-            "I don't know where Python installs its C header files "
-            "on platform '%s'" % os.name)
-
-
-def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
-    """Return the directory containing the Python library (standard or
-    site additions).
-
-    If 'plat_specific' is true, return the directory containing
-    platform-specific modules, i.e. any module from a non-pure-Python
-    module distribution; otherwise, return the platform-shared library
-    directory.  If 'standard_lib' is true, return the directory
-    containing standard Python library modules; otherwise, return the
-    directory for site-specific modules.
-
-    If 'prefix' is supplied, use it instead of sys.prefix or
-    sys.exec_prefix -- i.e., ignore 'plat_specific'.
-    """
-    if prefix is None:
-        prefix = plat_specific and EXEC_PREFIX or PREFIX
-
-    if os.name == "posix":
-        libpython = os.path.join(prefix,
-                                 "lib", "python" + get_python_version())
-        if standard_lib:
-            return libpython
-        else:
-            return os.path.join(libpython, "site-packages")
-
-    elif os.name == "nt":
-        if standard_lib:
-            return os.path.join(prefix, "Lib")
-        else:
-            if get_python_version() < "2.2":
-                return prefix
-            else:
-                return os.path.join(prefix, "Lib", "site-packages")
-
-    elif os.name == "os2":
-        if standard_lib:
-            return os.path.join(prefix, "Lib")
-        else:
-            return os.path.join(prefix, "Lib", "site-packages")
-
-    else:
-        raise DistutilsPlatformError(
-            "I don't know where Python installs its library "
-            "on platform '%s'" % os.name)
-
-
-def customize_compiler(compiler):
-    """Do any platform-specific customization of a CCompiler instance.
-
-    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":
-        (cc, cxx, opt, cflags, ccshared, ldshared, so_ext) = \
-            get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
-                            'CCSHARED', 'LDSHARED', 'SO')
-
-        if 'CC' in os.environ:
-            cc = os.environ['CC']
-        if 'CXX' in os.environ:
-            cxx = os.environ['CXX']
-        if 'LDSHARED' in os.environ:
-            ldshared = os.environ['LDSHARED']
-        if 'CPP' in os.environ:
-            cpp = os.environ['CPP']
-        else:
-            cpp = cc + " -E"           # not always
-        if 'LDFLAGS' in os.environ:
-            ldshared = ldshared + ' ' + os.environ['LDFLAGS']
-        if 'CFLAGS' in os.environ:
-            cflags = opt + ' ' + os.environ['CFLAGS']
-            ldshared = ldshared + ' ' + os.environ['CFLAGS']
-        if 'CPPFLAGS' in os.environ:
-            cpp = cpp + ' ' + os.environ['CPPFLAGS']
-            cflags = cflags + ' ' + os.environ['CPPFLAGS']
-            ldshared = ldshared + ' ' + os.environ['CPPFLAGS']
-
-        cc_cmd = cc + ' ' + cflags
-        compiler.set_executables(
-            preprocessor=cpp,
-            compiler=cc_cmd,
-            compiler_so=cc_cmd + ' ' + ccshared,
-            compiler_cxx=cxx,
-            linker_so=ldshared,
-            linker_exe=cc)
-
-        compiler.shared_lib_extension = so_ext
-
-
-def get_config_h_filename():
-    """Return full pathname of installed pyconfig.h file."""
-    if python_build:
-        if os.name == "nt":
-            inc_dir = os.path.join(project_base, "PC")
-        else:
-            inc_dir = project_base
-    else:
-        inc_dir = get_python_inc(plat_specific=1)
-    if get_python_version() < '2.2':
-        config_h = 'config.h'
-    else:
-        # The name of the config.h file changed in 2.2
-        config_h = 'pyconfig.h'
-    return os.path.join(inc_dir, config_h)
-
-
-def get_makefile_filename():
-    """Return full pathname of installed Makefile from the Python build."""
-    if python_build:
-        return os.path.join(os.path.dirname(sys.executable), "Makefile")
-    lib_dir = get_python_lib(plat_specific=1, standard_lib=1)
-    return os.path.join(lib_dir, "config", "Makefile")
-
-
-def parse_config_h(fp, g=None):
-    """Parse a config.h-style file.
-
-    A dictionary containing name/value pairs is returned.  If an
-    optional dictionary is passed in as the second argument, it is
-    used instead of a new dictionary.
-    """
-    if g is None:
-        g = {}
-    define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n")
-    undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n")
-    #
-    while 1:
-        line = fp.readline()
-        if not line:
-            break
-        m = define_rx.match(line)
-        if m:
-            n, v = m.group(1, 2)
-            try: v = int(v)
-            except ValueError: pass
-            g[n] = v
-        else:
-            m = undef_rx.match(line)
-            if m:
-                g[m.group(1)] = 0
-    return g
-
-
-# Regexes needed for parsing Makefile (and similar syntaxes,
-# like old-style Setup files).
-_variable_rx = re.compile("([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)")
-_findvar1_rx = re.compile(r"\$\(([A-Za-z][A-Za-z0-9_]*)\)")
-_findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}")
-
-def parse_makefile(fn, g=None):
-    """Parse a Makefile-style file.
-
-    A dictionary containing name/value pairs is returned.  If an
-    optional dictionary is passed in as the second argument, it is
-    used instead of a new dictionary.
-    """
-    from distutils.text_file import TextFile
-    fp = TextFile(fn, strip_comments=1, skip_blanks=1, join_lines=1)
-
-    if g is None:
-        g = {}
-    done = {}
-    notdone = {}
-
-    while 1:
-        line = fp.readline()
-        if line is None:  # eof
-            break
-        m = _variable_rx.match(line)
-        if m:
-            n, v = m.group(1, 2)
-            v = v.strip()
-            # `$$' is a literal `$' in make
-            tmpv = v.replace('$$', '')
-
-            if "$" in tmpv:
-                notdone[n] = v
-            else:
-                try:
-                    v = int(v)
-                except ValueError:
-                    # insert literal `$'
-                    done[n] = v.replace('$$', '$')
-                else:
-                    done[n] = v
-
-    # do variable interpolation here
-    while notdone:
-        for name in notdone.keys():
-            value = notdone[name]
-            m = _findvar1_rx.search(value) or _findvar2_rx.search(value)
-            if m:
-                n = m.group(1)
-                found = True
-                if n in done:
-                    item = str(done[n])
-                elif n in notdone:
-                    # get it on a subsequent round
-                    found = False
-                elif n in os.environ:
-                    # do it like make: fall back to environment
-                    item = os.environ[n]
-                else:
-                    done[n] = item = ""
-                if found:
-                    after = value[m.end():]
-                    value = value[:m.start()] + item + after
-                    if "$" in after:
-                        notdone[name] = value
-                    else:
-                        try: value = int(value)
-                        except ValueError:
-                            done[name] = value.strip()
-                        else:
-                            done[name] = value
-                        del notdone[name]
-            else:
-                # bogus variable reference; just drop it since we can't deal
-                del notdone[name]
-
-    fp.close()
-
-    # strip spurious spaces
-    for k, v in done.items():
-        if isinstance(v, str):
-            done[k] = v.strip()
-
-    # save the results in the global dictionary
-    g.update(done)
-    return g
-
-
-def expand_makefile_vars(s, vars):
-    """Expand Makefile-style variables -- "${foo}" or "$(foo)" -- in
-    'string' according to 'vars' (a dictionary mapping variable names to
-    values).  Variables not present in 'vars' are silently expanded to the
-    empty string.  The variable values in 'vars' should not contain further
-    variable expansions; if 'vars' is the output of 'parse_makefile()',
-    you're fine.  Returns a variable-expanded version of 's'.
-    """
-
-    # This algorithm does multiple expansion, so if vars['foo'] contains
-    # "${bar}", it will expand ${foo} to ${bar}, and then expand
-    # ${bar}... and so forth.  This is fine as long as 'vars' comes from
-    # 'parse_makefile()', which takes care of such expansions eagerly,
-    # according to make's variable expansion semantics.
-
-    while 1:
-        m = _findvar1_rx.search(s) or _findvar2_rx.search(s)
-        if m:
-            (beg, end) = m.span()
-            s = s[0:beg] + vars.get(m.group(1)) + s[end:]
-        else:
-            break
-    return s
-
-
-_config_vars = None
-
-def _init_posix():
-    """Initialize the module as appropriate for POSIX systems."""
-    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 MacOSX we need to check the setting of the environment variable
-    # MACOSX_DEPLOYMENT_TARGET: configure bases some choices on it so
-    # it needs to be compatible.
-    # If it isn't set we set it to the configure-time value
-    if sys.platform == 'darwin' and 'MACOSX_DEPLOYMENT_TARGET' in g:
-        cfg_target = g['MACOSX_DEPLOYMENT_TARGET']
-        cur_target = os.getenv('MACOSX_DEPLOYMENT_TARGET', '')
-        if cur_target == '':
-            cur_target = cfg_target
-            os.environ['MACOSX_DEPLOYMENT_TARGET'] = cfg_target
-        elif map(int, cfg_target.split('.')) > map(int, cur_target.split('.')):
-            my_msg = ('$MACOSX_DEPLOYMENT_TARGET mismatch: now "%s" but "%s" during configure'
-                % (cur_target, cfg_target))
-            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']
-
-    elif get_python_version() < '2.1':
-        # The following two branches are for 1.5.2 compatibility.
-        if sys.platform == 'aix4':          # what about AIX 3.x ?
-            # Linker script is in the config directory, not in Modules as the
-            # Makefile says.
-            python_lib = get_python_lib(standard_lib=1)
-            ld_so_aix = os.path.join(python_lib, 'config', 'ld_so_aix')
-            python_exp = os.path.join(python_lib, 'config', 'python.exp')
-
-            g['LDSHARED'] = "%s %s -bI:%s" % (ld_so_aix, g['CC'], python_exp)
-
-        elif sys.platform == 'beos':
-            # Linker script is in the config directory.  In the Makefile it is
-            # relative to the srcdir, which after installation no longer makes
-            # sense.
-            python_lib = get_python_lib(standard_lib=1)
-            linkerscript_path = string.split(g['LDSHARED'])[0]
-            linkerscript_name = os.path.basename(linkerscript_path)
-            linkerscript = os.path.join(python_lib, 'config',
-                                        linkerscript_name)
-
-            # XXX this isn't the right place to do this: adding the Python
-            # library to the link, if needed, should be in the "build_ext"
-            # command.  (It's also needed for non-MS compilers on Windows, and
-            # it's taken care of for them by the 'build_ext.get_libraries()'
-            # method.)
-            g['LDSHARED'] = ("%s -L%s/lib -lpython%s" %
-                             (linkerscript, PREFIX, get_python_version()))
-
-    global _config_vars
-    _config_vars = g
-
-
-def _init_nt():
-    """Initialize the module as appropriate for NT"""
-    g = {}
-    # 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"
-    g['VERSION'] = get_python_version().replace(".", "")
-    g['BINDIR'] = os.path.dirname(os.path.abspath(sys.executable))
-
-    global _config_vars
-    _config_vars = g
-
-
-def _init_os2():
-    """Initialize the module as appropriate for OS/2"""
-    g = {}
-    # 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
-
-
-def get_config_vars(*args):
-    """With no arguments, return a dictionary of all configuration
-    variables relevant for the current platform.  Generally this includes
-    everything needed to build extensions and install both pure modules and
-    extensions.  On Unix, this means every variable defined in Python's
-    installed Makefile; on Windows and Mac OS it's a much smaller set.
-
-    With arguments, return a list of values that result from looking up
-    each argument in the configuration variable dictionary.
-    """
-    global _config_vars
-    if _config_vars is None:
-        func = globals().get("_init_" + os.name)
-        if func:
-            func()
-        else:
-            _config_vars = {}
-
-        # Normalized versions of prefix and exec_prefix are handy to have;
-        # in fact, these are the standard versions used most places in the
-        # Distutils.
-        _config_vars['prefix'] = PREFIX
-        _config_vars['exec_prefix'] = EXEC_PREFIX
-
-        if sys.platform == 'darwin':
-            kernel_version = os.uname()[2] # Kernel version (8.4.3)
-            major_version = int(kernel_version.split('.')[0])
-
-            if major_version < 8:
-                # On Mac OS X before 10.4, check if -arch and -isysroot
-                # are in CFLAGS or LDFLAGS and remove them if they are.
-                # This is needed when building extensions on a 10.3 system
-                # using a universal build of python.
-                for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED',
-                        # a number of derived variables. These need to be
-                        # patched up as well.
-                        'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
-                    flags = _config_vars[key]
-                    flags = re.sub('-arch\s+\w+\s', ' ', flags)
-                    flags = re.sub('-isysroot [^ \t]*', ' ', flags)
-                    _config_vars[key] = flags
-
-            else:
-
-                # Allow the user to override the architecture flags using
-                # an environment variable.
-                # NOTE: This name was introduced by Apple in OSX 10.5 and
-                # is used by several scripting languages distributed with
-                # that OS release.
-
-                if 'ARCHFLAGS' in os.environ:
-                    arch = os.environ['ARCHFLAGS']
-                    for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED',
-                        # a number of derived variables. These need to be
-                        # patched up as well.
-                        'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
-
-                        flags = _config_vars[key]
-                        flags = re.sub('-arch\s+\w+\s', ' ', flags)
-                        flags = flags + ' ' + arch
-                        _config_vars[key] = flags
-
-                # If we're on OSX 10.5 or later and the user tries to
-                # compiles an extension using an SDK that is not present
-                # on the current machine it is better to not use an SDK
-                # than to fail.
-                #
-                # The major usecase for this is users using a Python.org
-                # binary installer  on OSX 10.6: that installer uses
-                # the 10.4u SDK, but that SDK is not installed by default
-                # when you install Xcode.
-                #
-                m = re.search('-isysroot\s+(\S+)', _config_vars['CFLAGS'])
-                if m is not None:
-                    sdk = m.group(1)
-                    if not os.path.exists(sdk):
-                        for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED',
-                             # a number of derived variables. These need to be
-                             # patched up as well.
-                            'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
-
-                            flags = _config_vars[key]
-                            flags = re.sub('-isysroot\s+\S+(\s|$)', ' ', flags)
-                            _config_vars[key] = flags
-
-    if args:
-        vals = []
-        for name in args:
-            vals.append(_config_vars.get(name))
-        return vals
-    else:
-        return _config_vars
-
-def get_config_var(name):
-    """Return the value of a single variable using the dictionary
-    returned by 'get_config_vars()'.  Equivalent to
-    get_config_vars().get(name)
-    """
-    return get_config_vars().get(name)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/Setup.sample b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/Setup.sample
deleted file mode 100644
index 6cd3bfe..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/Setup.sample
+++ /dev/null
@@ -1,67 +0,0 @@
-# Setup file from the pygame project
-
-#--StartConfig
-SDL = -I/usr/include/SDL -D_REENTRANT -lSDL
-FONT = -lSDL_ttf
-IMAGE = -lSDL_image
-MIXER = -lSDL_mixer
-SMPEG = -lsmpeg
-PNG = -lpng
-JPEG = -ljpeg
-SCRAP = -lX11
-PORTMIDI = -lportmidi
-PORTTIME = -lporttime
-#--EndConfig
-
-#DEBUG = -C-W -C-Wall
-DEBUG = 
-
-#the following modules are optional. you will want to compile
-#everything you can, but you can ignore ones you don't have
-#dependencies for, just comment them out
-
-imageext src/imageext.c $(SDL) $(IMAGE) $(PNG) $(JPEG) $(DEBUG)
-font src/font.c $(SDL) $(FONT) $(DEBUG)
-mixer src/mixer.c $(SDL) $(MIXER) $(DEBUG)
-mixer_music src/music.c $(SDL) $(MIXER) $(DEBUG)
-_numericsurfarray src/_numericsurfarray.c $(SDL) $(DEBUG)
-_numericsndarray src/_numericsndarray.c $(SDL) $(MIXER) $(DEBUG)
-movie src/movie.c $(SDL) $(SMPEG) $(DEBUG)
-scrap src/scrap.c $(SDL) $(SCRAP) $(DEBUG)
-_camera src/_camera.c src/camera_v4l2.c src/camera_v4l.c $(SDL) $(DEBUG)
-pypm src/pypm.c $(SDL) $(PORTMIDI) $(PORTTIME) $(DEBUG)
-
-GFX = src/SDL_gfx/SDL_gfxPrimitives.c 
-#GFX = src/SDL_gfx/SDL_gfxBlitFunc.c src/SDL_gfx/SDL_gfxPrimitives.c 
-gfxdraw src/gfxdraw.c $(SDL) $(GFX) $(DEBUG)
-
-
-
-#these modules are required for pygame to run. they only require
-#SDL as a dependency. these should not be altered
-
-base src/base.c $(SDL) $(DEBUG)
-cdrom src/cdrom.c $(SDL) $(DEBUG)
-color src/color.c $(SDL) $(DEBUG)
-constants src/constants.c $(SDL) $(DEBUG)
-display src/display.c $(SDL) $(DEBUG)
-event src/event.c $(SDL) $(DEBUG)
-fastevent src/fastevent.c src/fastevents.c $(SDL) $(DEBUG)
-key src/key.c $(SDL) $(DEBUG)
-mouse src/mouse.c $(SDL) $(DEBUG)
-rect src/rect.c $(SDL) $(DEBUG)
-rwobject src/rwobject.c $(SDL) $(DEBUG)
-surface src/surface.c src/alphablit.c src/surface_fill.c $(SDL) $(DEBUG)
-surflock src/surflock.c $(SDL) $(DEBUG)
-time src/time.c $(SDL) $(DEBUG)
-joystick src/joystick.c $(SDL) $(DEBUG)
-draw src/draw.c $(SDL) $(DEBUG)
-image src/image.c $(SDL) $(DEBUG)
-overlay src/overlay.c $(SDL) $(DEBUG)
-transform src/transform.c src/rotozoom.c src/scale2x.c src/scale_mmx.c $(SDL) $(DEBUG)
-mask src/mask.c src/bitmask.c $(SDL) $(DEBUG)
-bufferproxy src/bufferproxy.c $(SDL) $(DEBUG)
-pixelarray src/pixelarray.c $(SDL) $(DEBUG)
-_arraysurfarray src/_arraysurfarray.c $(SDL) $(DEBUG)
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/__init__.py
deleted file mode 100644
index 287e254..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/__init__.py
+++ /dev/null
@@ -1,36 +0,0 @@
-"""Test suite for distutils.
-
-This test suite consists of a collection of test modules in the
-distutils.tests package.  Each test module has a name starting with
-'test' and contains a function test_suite().  The function is expected
-to return an initialized unittest.TestSuite instance.
-
-Tests for the command classes in the distutils.command package are
-included in distutils.tests as well, instead of using a separate
-distutils.command.tests package, since command identification is done
-by import rather than matching pre-defined names.
-
-"""
-
-import os
-import sys
-import unittest
-from test.test_support import run_unittest
-
-
-here = os.path.dirname(__file__) or os.curdir
-
-
-def test_suite():
-    suite = unittest.TestSuite()
-    for fn in os.listdir(here):
-        if fn.startswith("test") and fn.endswith(".py"):
-            modname = "distutils.tests." + fn[:-3]
-            __import__(modname)
-            module = sys.modules[modname]
-            suite.addTest(module.test_suite())
-    return suite
-
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/setuptools_build_ext.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/setuptools_build_ext.py
deleted file mode 100644
index ef858db..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/setuptools_build_ext.py
+++ /dev/null
@@ -1,287 +0,0 @@
-from distutils.command.build_ext import build_ext as _du_build_ext
-try:
-    # Attempt to use Pyrex for building extensions, if available
-    from Pyrex.Distutils.build_ext import build_ext as _build_ext
-except ImportError:
-    _build_ext = _du_build_ext
-
-import os, sys
-from distutils.file_util import copy_file
-
-from distutils.tests.setuptools_extension import Library
-
-from distutils.ccompiler import new_compiler
-from distutils.sysconfig import customize_compiler, get_config_var
-get_config_var("LDSHARED")  # make sure _config_vars is initialized
-from distutils.sysconfig import _config_vars
-from distutils import log
-from distutils.errors import *
-
-have_rtld = False
-use_stubs = False
-libtype = 'shared'
-
-if sys.platform == "darwin":
-    use_stubs = True
-elif os.name != 'nt':
-    try:
-        from dl import RTLD_NOW
-        have_rtld = True
-        use_stubs = True
-    except ImportError:
-        pass
-
-def if_dl(s):
-    if have_rtld:
-        return s
-    return ''
-
-
-
-
-
-
-class build_ext(_build_ext):
-    def run(self):
-        """Build extensions in build directory, then copy if --inplace"""
-        old_inplace, self.inplace = self.inplace, 0
-        _build_ext.run(self)
-        self.inplace = old_inplace
-        if old_inplace:
-            self.copy_extensions_to_source()
-
-    def copy_extensions_to_source(self):
-        build_py = self.get_finalized_command('build_py')
-        for ext in self.extensions:
-            fullname = self.get_ext_fullname(ext.name)
-            filename = self.get_ext_filename(fullname)
-            modpath = fullname.split('.')
-            package = '.'.join(modpath[:-1])
-            package_dir = build_py.get_package_dir(package)
-            dest_filename = os.path.join(package_dir,os.path.basename(filename))
-            src_filename = os.path.join(self.build_lib,filename)
-
-            # Always copy, even if source is older than destination, to ensure
-            # that the right extensions for the current Python/platform are
-            # used.
-            copy_file(
-                src_filename, dest_filename, verbose=self.verbose,
-                dry_run=self.dry_run
-            )
-            if ext._needs_stub:
-                self.write_stub(package_dir or os.curdir, ext, True)
-
-
-    if _build_ext is not _du_build_ext and not hasattr(_build_ext,'pyrex_sources'):
-        # Workaround for problems using some Pyrex versions w/SWIG and/or 2.4
-        def swig_sources(self, sources, *otherargs):
-            # first do any Pyrex processing
-            sources = _build_ext.swig_sources(self, sources) or sources
-            # Then do any actual SWIG stuff on the remainder
-            return _du_build_ext.swig_sources(self, sources, *otherargs)
-
-
-
-    def get_ext_filename(self, fullname):
-        filename = _build_ext.get_ext_filename(self,fullname)
-        ext = self.ext_map[fullname]
-        if isinstance(ext,Library):
-            fn, ext = os.path.splitext(filename)
-            return self.shlib_compiler.library_filename(fn,libtype)
-        elif use_stubs and ext._links_to_dynamic:
-            d,fn = os.path.split(filename)
-            return os.path.join(d,'dl-'+fn)
-        else:
-            return filename
-
-    def initialize_options(self):
-        _build_ext.initialize_options(self)
-        self.shlib_compiler = None
-        self.shlibs = []
-        self.ext_map = {}
-
-    def finalize_options(self):
-        _build_ext.finalize_options(self)
-        self.extensions = self.extensions or []
-        self.check_extensions_list(self.extensions)
-        self.shlibs = [ext for ext in self.extensions
-                        if isinstance(ext,Library)]
-        if self.shlibs:
-            self.setup_shlib_compiler()
-        for ext in self.extensions:
-            ext._full_name = self.get_ext_fullname(ext.name)
-        for ext in self.extensions:
-            fullname = ext._full_name
-            self.ext_map[fullname] = ext
-            ltd = ext._links_to_dynamic = \
-                self.shlibs and self.links_to_dynamic(ext) or False
-            ext._needs_stub = ltd and use_stubs and not isinstance(ext,Library)
-            filename = ext._file_name = self.get_ext_filename(fullname)
-            libdir = os.path.dirname(os.path.join(self.build_lib,filename))
-            if ltd and libdir not in ext.library_dirs:
-                ext.library_dirs.append(libdir)
-            if ltd and use_stubs and os.curdir not in ext.runtime_library_dirs:
-                ext.runtime_library_dirs.append(os.curdir)
-
-    def setup_shlib_compiler(self):
-        compiler = self.shlib_compiler = new_compiler(
-            compiler=self.compiler, dry_run=self.dry_run, force=self.force
-        )
-        if sys.platform == "darwin":
-            tmp = _config_vars.copy()
-            try:
-                # XXX Help!  I don't have any idea whether these are right...
-                _config_vars['LDSHARED'] = "gcc -Wl,-x -dynamiclib -undefined dynamic_lookup"
-                _config_vars['CCSHARED'] = " -dynamiclib"
-                _config_vars['SO'] = ".dylib"
-                customize_compiler(compiler)
-            finally:
-                _config_vars.clear()
-                _config_vars.update(tmp)
-        else:
-            customize_compiler(compiler)
-
-        if self.include_dirs is not None:
-            compiler.set_include_dirs(self.include_dirs)
-        if self.define is not None:
-            # 'define' option is a list of (name,value) tuples
-            for (name,value) in self.define:
-                compiler.define_macro(name, value)
-        if self.undef is not None:
-            for macro in self.undef:
-                compiler.undefine_macro(macro)
-        if self.libraries is not None:
-            compiler.set_libraries(self.libraries)
-        if self.library_dirs is not None:
-            compiler.set_library_dirs(self.library_dirs)
-        if self.rpath is not None:
-            compiler.set_runtime_library_dirs(self.rpath)
-        if self.link_objects is not None:
-            compiler.set_link_objects(self.link_objects)
-
-        # hack so distutils' build_extension() builds a library instead
-        compiler.link_shared_object = link_shared_object.__get__(compiler)
-
-
-
-    def get_export_symbols(self, ext):
-        if isinstance(ext,Library):
-            return ext.export_symbols
-        return _build_ext.get_export_symbols(self,ext)
-
-    def build_extension(self, ext):
-        _compiler = self.compiler
-        try:
-            if isinstance(ext,Library):
-                self.compiler = self.shlib_compiler
-            _build_ext.build_extension(self,ext)
-            if ext._needs_stub:
-                self.write_stub(
-                    self.get_finalized_command('build_py').build_lib, ext
-                )
-        finally:
-            self.compiler = _compiler
-
-    def links_to_dynamic(self, ext):
-        """Return true if 'ext' links to a dynamic lib in the same package"""
-        # XXX this should check to ensure the lib is actually being built
-        # XXX as dynamic, and not just using a locally-found version or a
-        # XXX static-compiled version
-        libnames = dict.fromkeys([lib._full_name for lib in self.shlibs])
-        pkg = '.'.join(ext._full_name.split('.')[:-1]+[''])
-        for libname in ext.libraries:
-            if pkg+libname in libnames: return True
-        return False
-
-    def get_outputs(self):
-        outputs = _build_ext.get_outputs(self)
-        optimize = self.get_finalized_command('build_py').optimize
-        for ext in self.extensions:
-            if ext._needs_stub:
-                base = os.path.join(self.build_lib, *ext._full_name.split('.'))
-                outputs.append(base+'.py')
-                outputs.append(base+'.pyc')
-                if optimize:
-                    outputs.append(base+'.pyo')
-        return outputs
-
-    def write_stub(self, output_dir, ext, compile=False):
-        log.info("writing stub loader for %s to %s",ext._full_name, output_dir)
-        stub_file = os.path.join(output_dir, *ext._full_name.split('.'))+'.py'
-        if compile and os.path.exists(stub_file):
-            raise DistutilsError(stub_file+" already exists! Please delete.")
-        if not self.dry_run:
-            f = open(stub_file,'w')
-            f.write('\n'.join([
-                "def __bootstrap__():",
-                "   global __bootstrap__, __file__, __loader__",
-                "   import sys, os, pkg_resources, imp"+if_dl(", dl"),
-                "   __file__ = pkg_resources.resource_filename(__name__,%r)"
-                   % os.path.basename(ext._file_name),
-                "   del __bootstrap__",
-                "   if '__loader__' in globals():",
-                "       del __loader__",
-                if_dl("   old_flags = sys.getdlopenflags()"),
-                "   old_dir = os.getcwd()",
-                "   try:",
-                "     os.chdir(os.path.dirname(__file__))",
-                if_dl("     sys.setdlopenflags(dl.RTLD_NOW)"),
-                "     imp.load_dynamic(__name__,__file__)",
-                "   finally:",
-                if_dl("     sys.setdlopenflags(old_flags)"),
-                "     os.chdir(old_dir)",
-                "__bootstrap__()",
-                "" # terminal \n
-            ]))
-            f.close()
-        if compile:
-            from distutils.util import byte_compile
-            byte_compile([stub_file], optimize=0,
-                         force=True, dry_run=self.dry_run)
-            optimize = self.get_finalized_command('install_lib').optimize
-            if optimize > 0:
-                byte_compile([stub_file], optimize=optimize,
-                             force=True, dry_run=self.dry_run)
-            if os.path.exists(stub_file) and not self.dry_run:
-                os.unlink(stub_file)
-
-
-if use_stubs or os.name=='nt':
-    # Build shared libraries
-    #
-    def link_shared_object(self, objects, output_libname, 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
-    ):  self.link(
-            self.SHARED_LIBRARY, objects, output_libname,
-            output_dir, libraries, library_dirs, runtime_library_dirs,
-            export_symbols, debug, extra_preargs, extra_postargs,
-            build_temp, target_lang
-        )
-else:
-    # Build static libraries everywhere else
-    libtype = 'static'
-
-    def link_shared_object(self, objects, output_libname, 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
-    ):
-        # XXX we need to either disallow these attrs on Library instances,
-        #     or warn/abort here if set, or something...
-        #libraries=None, library_dirs=None, runtime_library_dirs=None,
-        #export_symbols=None, extra_preargs=None, extra_postargs=None,
-        #build_temp=None
-
-        assert output_dir is None   # distutils build_ext doesn't pass this
-        output_dir,filename = os.path.split(output_libname)
-        basename, ext = os.path.splitext(filename)
-        if self.library_filename("x").startswith('lib'):
-            # strip 'lib' prefix; this is kludgy if some platform uses
-            # a different prefix
-            basename = basename[3:]
-
-        self.create_static_lib(
-            objects, basename, output_dir, debug, target_lang
-        )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/setuptools_extension.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/setuptools_extension.py
deleted file mode 100644
index 993fb54..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/setuptools_extension.py
+++ /dev/null
@@ -1,51 +0,0 @@
-from distutils.core import Extension as _Extension
-from distutils.core import Distribution as _Distribution
-
-def _get_unpatched(cls):
-    """Protect against re-patching the distutils if reloaded
-
-    Also ensures that no other distutils extension monkeypatched the distutils
-    first.
-    """
-    while cls.__module__.startswith('setuptools'):
-        cls, = cls.__bases__
-    if not cls.__module__.startswith('distutils'):
-        raise AssertionError(
-            "distutils has already been patched by %r" % cls
-        )
-    return cls
-
-_Distribution = _get_unpatched(_Distribution)
-_Extension = _get_unpatched(_Extension)
-
-try:
-    from Pyrex.Distutils.build_ext import build_ext
-except ImportError:
-    have_pyrex = False
-else:
-    have_pyrex = True
-
-
-class Extension(_Extension):
-    """Extension that uses '.c' files in place of '.pyx' files"""
-
-    if not have_pyrex:
-        # convert .pyx extensions to .c
-        def __init__(self,*args,**kw):
-            _Extension.__init__(self,*args,**kw)
-            sources = []
-            for s in self.sources:
-                if s.endswith('.pyx'):
-                    sources.append(s[:-3]+'c')
-                else:
-                    sources.append(s)
-            self.sources = sources
-
-class Library(Extension):
-    """Just like a regular Extension, but built as a library instead"""
-
-import sys, distutils.core, distutils.extension
-distutils.core.Extension = Extension
-distutils.extension.Extension = Extension
-if 'distutils.command.build_ext' in sys.modules:
-    sys.modules['distutils.command.build_ext'].Extension = Extension
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/support.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/support.py
deleted file mode 100644
index 6d9d8dd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/support.py
+++ /dev/null
@@ -1,133 +0,0 @@
-"""Support code for distutils test cases."""
-import os
-import shutil
-import tempfile
-from copy import deepcopy
-import warnings
-
-from distutils import log
-from distutils.log import DEBUG, INFO, WARN, ERROR, FATAL
-from distutils.core import Distribution
-
-def capture_warnings(func):
-    def _capture_warnings(*args, **kw):
-        with warnings.catch_warnings():
-            warnings.simplefilter("ignore")
-            return func(*args, **kw)
-    return _capture_warnings
-
-class LoggingSilencer(object):
-
-    def setUp(self):
-        super(LoggingSilencer, self).setUp()
-        self.threshold = log.set_threshold(log.FATAL)
-        # catching warnings
-        # when log will be replaced by logging
-        # we won't need such monkey-patch anymore
-        self._old_log = log.Log._log
-        log.Log._log = self._log
-        self.logs = []
-
-    def tearDown(self):
-        log.set_threshold(self.threshold)
-        log.Log._log = self._old_log
-        super(LoggingSilencer, self).tearDown()
-
-    def _log(self, level, msg, args):
-        if level not in (DEBUG, INFO, WARN, ERROR, FATAL):
-            raise ValueError('%s wrong log level' % str(level))
-        self.logs.append((level, msg, args))
-
-    def get_logs(self, *levels):
-        def _format(msg, args):
-            if len(args) == 0:
-                return msg
-            return msg % args
-        return [_format(msg, args) for level, msg, args
-                in self.logs if level in levels]
-
-    def clear_logs(self):
-        self.logs = []
-
-class TempdirManager(object):
-    """Mix-in class that handles temporary directories for test cases.
-
-    This is intended to be used with unittest.TestCase.
-    """
-
-    def setUp(self):
-        super(TempdirManager, self).setUp()
-        self.tempdirs = []
-
-    def tearDown(self):
-        super(TempdirManager, self).tearDown()
-        while self.tempdirs:
-            d = self.tempdirs.pop()
-            shutil.rmtree(d, os.name in ('nt', 'cygwin'))
-
-    def mkdtemp(self):
-        """Create a temporary directory that will be cleaned up.
-
-        Returns the path of the directory.
-        """
-        d = tempfile.mkdtemp()
-        self.tempdirs.append(d)
-        return d
-
-    def write_file(self, path, content='xxx'):
-        """Writes a file in the given path.
-
-
-        path can be a string or a sequence.
-        """
-        if isinstance(path, (list, tuple)):
-            path = os.path.join(*path)
-        f = open(path, 'w')
-        try:
-            f.write(content)
-        finally:
-            f.close()
-
-    def create_dist(self, pkg_name='foo', **kw):
-        """Will generate a test environment.
-
-        This function creates:
-         - a Distribution instance using keywords
-         - a temporary directory with a package structure
-
-        It returns the package directory and the distribution
-        instance.
-        """
-        tmp_dir = self.mkdtemp()
-        pkg_dir = os.path.join(tmp_dir, pkg_name)
-        os.mkdir(pkg_dir)
-        dist = Distribution(attrs=kw)
-
-        return pkg_dir, dist
-
-class DummyCommand:
-    """Class to store options for retrieval via set_undefined_options()."""
-
-    def __init__(self, **kwargs):
-        for kw, val in kwargs.items():
-            setattr(self, kw, val)
-
-    def ensure_finalized(self):
-        pass
-
-class EnvironGuard(object):
-
-    def setUp(self):
-        super(EnvironGuard, self).setUp()
-        self.old_environ = deepcopy(os.environ)
-
-    def tearDown(self):
-        for key, value in self.old_environ.items():
-            if os.environ.get(key) != value:
-                os.environ[key] = value
-
-        for key in os.environ.keys():
-            if key not in self.old_environ:
-                del os.environ[key]
-
-        super(EnvironGuard, self).tearDown()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_archive_util.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_archive_util.py
deleted file mode 100644
index efcb261..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_archive_util.py
+++ /dev/null
@@ -1,284 +0,0 @@
-"""Tests for distutils.archive_util."""
-__revision__ = "$Id$"
-
-import unittest
-import os
-import tarfile
-from os.path import splitdrive
-import warnings
-
-from distutils.archive_util import (check_archive_formats, make_tarball,
-                                    make_zipfile, make_archive,
-                                    ARCHIVE_FORMATS)
-from distutils.spawn import find_executable, spawn
-from distutils.tests import support
-from test.test_support import check_warnings, run_unittest
-
-try:
-    import grp
-    import pwd
-    UID_GID_SUPPORT = True
-except ImportError:
-    UID_GID_SUPPORT = False
-
-try:
-    import zipfile
-    ZIP_SUPPORT = True
-except ImportError:
-    ZIP_SUPPORT = find_executable('zip')
-
-# some tests will fail if zlib is not available
-try:
-    import zlib
-except ImportError:
-    zlib = None
-
-
-class ArchiveUtilTestCase(support.TempdirManager,
-                          support.LoggingSilencer,
-                          unittest.TestCase):
-
-    @unittest.skipUnless(zlib, "requires zlib")
-    def test_make_tarball(self):
-        # creating something to tar
-        tmpdir = self.mkdtemp()
-        self.write_file([tmpdir, 'file1'], 'xxx')
-        self.write_file([tmpdir, 'file2'], 'xxx')
-        os.mkdir(os.path.join(tmpdir, 'sub'))
-        self.write_file([tmpdir, 'sub', 'file3'], 'xxx')
-
-        tmpdir2 = self.mkdtemp()
-        unittest.skipUnless(splitdrive(tmpdir)[0] == splitdrive(tmpdir2)[0],
-                            "source and target should be on same drive")
-
-        base_name = os.path.join(tmpdir2, 'archive')
-
-        # working with relative paths to avoid tar warnings
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        try:
-            make_tarball(splitdrive(base_name)[1], '.')
-        finally:
-            os.chdir(old_dir)
-
-        # check if the compressed tarball was created
-        tarball = base_name + '.tar.gz'
-        self.assertTrue(os.path.exists(tarball))
-
-        # trying an uncompressed one
-        base_name = os.path.join(tmpdir2, 'archive')
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        try:
-            make_tarball(splitdrive(base_name)[1], '.', compress=None)
-        finally:
-            os.chdir(old_dir)
-        tarball = base_name + '.tar'
-        self.assertTrue(os.path.exists(tarball))
-
-    def _tarinfo(self, path):
-        tar = tarfile.open(path)
-        try:
-            names = tar.getnames()
-            names.sort()
-            return tuple(names)
-        finally:
-            tar.close()
-
-    def _create_files(self):
-        # creating something to tar
-        tmpdir = self.mkdtemp()
-        dist = os.path.join(tmpdir, 'dist')
-        os.mkdir(dist)
-        self.write_file([dist, 'file1'], 'xxx')
-        self.write_file([dist, 'file2'], 'xxx')
-        os.mkdir(os.path.join(dist, 'sub'))
-        self.write_file([dist, 'sub', 'file3'], 'xxx')
-        os.mkdir(os.path.join(dist, 'sub2'))
-        tmpdir2 = self.mkdtemp()
-        base_name = os.path.join(tmpdir2, 'archive')
-        return tmpdir, tmpdir2, base_name
-
-    @unittest.skipUnless(zlib, "Requires zlib")
-    @unittest.skipUnless(find_executable('tar') and find_executable('gzip'),
-                         'Need the tar command to run')
-    def test_tarfile_vs_tar(self):
-        tmpdir, tmpdir2, base_name =  self._create_files()
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        try:
-            make_tarball(base_name, 'dist')
-        finally:
-            os.chdir(old_dir)
-
-        # check if the compressed tarball was created
-        tarball = base_name + '.tar.gz'
-        self.assertTrue(os.path.exists(tarball))
-
-        # now create another tarball using `tar`
-        tarball2 = os.path.join(tmpdir, 'archive2.tar.gz')
-        tar_cmd = ['tar', '-cf', 'archive2.tar', 'dist']
-        gzip_cmd = ['gzip', '-f9', 'archive2.tar']
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        try:
-            spawn(tar_cmd)
-            spawn(gzip_cmd)
-        finally:
-            os.chdir(old_dir)
-
-        self.assertTrue(os.path.exists(tarball2))
-        # let's compare both tarballs
-        self.assertEqual(self._tarinfo(tarball), self._tarinfo(tarball2))
-
-        # trying an uncompressed one
-        base_name = os.path.join(tmpdir2, 'archive')
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        try:
-            make_tarball(base_name, 'dist', compress=None)
-        finally:
-            os.chdir(old_dir)
-        tarball = base_name + '.tar'
-        self.assertTrue(os.path.exists(tarball))
-
-        # now for a dry_run
-        base_name = os.path.join(tmpdir2, 'archive')
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        try:
-            make_tarball(base_name, 'dist', compress=None, dry_run=True)
-        finally:
-            os.chdir(old_dir)
-        tarball = base_name + '.tar'
-        self.assertTrue(os.path.exists(tarball))
-
-    @unittest.skipUnless(find_executable('compress'),
-                         'The compress program is required')
-    def test_compress_deprecated(self):
-        tmpdir, tmpdir2, base_name =  self._create_files()
-
-        # using compress and testing the PendingDeprecationWarning
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        try:
-            with check_warnings() as w:
-                warnings.simplefilter("always")
-                make_tarball(base_name, 'dist', compress='compress')
-        finally:
-            os.chdir(old_dir)
-        tarball = base_name + '.tar.Z'
-        self.assertTrue(os.path.exists(tarball))
-        self.assertEqual(len(w.warnings), 1)
-
-        # same test with dry_run
-        os.remove(tarball)
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        try:
-            with check_warnings() as w:
-                warnings.simplefilter("always")
-                make_tarball(base_name, 'dist', compress='compress',
-                             dry_run=True)
-        finally:
-            os.chdir(old_dir)
-        self.assertTrue(not os.path.exists(tarball))
-        self.assertEqual(len(w.warnings), 1)
-
-    @unittest.skipUnless(zlib, "Requires zlib")
-    @unittest.skipUnless(ZIP_SUPPORT, 'Need zip support to run')
-    def test_make_zipfile(self):
-        # creating something to tar
-        tmpdir = self.mkdtemp()
-        self.write_file([tmpdir, 'file1'], 'xxx')
-        self.write_file([tmpdir, 'file2'], 'xxx')
-
-        tmpdir2 = self.mkdtemp()
-        base_name = os.path.join(tmpdir2, 'archive')
-        make_zipfile(base_name, tmpdir)
-
-        # check if the compressed tarball was created
-        tarball = base_name + '.zip'
-
-    def test_check_archive_formats(self):
-        self.assertEqual(check_archive_formats(['gztar', 'xxx', 'zip']),
-                         'xxx')
-        self.assertEqual(check_archive_formats(['gztar', 'zip']), None)
-
-    def test_make_archive(self):
-        tmpdir = self.mkdtemp()
-        base_name = os.path.join(tmpdir, 'archive')
-        self.assertRaises(ValueError, make_archive, base_name, 'xxx')
-
-    @unittest.skipUnless(zlib, "Requires zlib")
-    def test_make_archive_owner_group(self):
-        # testing make_archive with owner and group, with various combinations
-        # this works even if there's not gid/uid support
-        if UID_GID_SUPPORT:
-            group = grp.getgrgid(0)[0]
-            owner = pwd.getpwuid(0)[0]
-        else:
-            group = owner = 'root'
-
-        base_dir, root_dir, base_name =  self._create_files()
-        base_name = os.path.join(self.mkdtemp() , 'archive')
-        res = make_archive(base_name, 'zip', root_dir, base_dir, owner=owner,
-                           group=group)
-        self.assertTrue(os.path.exists(res))
-
-        res = make_archive(base_name, 'zip', root_dir, base_dir)
-        self.assertTrue(os.path.exists(res))
-
-        res = make_archive(base_name, 'tar', root_dir, base_dir,
-                           owner=owner, group=group)
-        self.assertTrue(os.path.exists(res))
-
-        res = make_archive(base_name, 'tar', root_dir, base_dir,
-                           owner='kjhkjhkjg', group='oihohoh')
-        self.assertTrue(os.path.exists(res))
-
-    @unittest.skipUnless(zlib, "Requires zlib")
-    @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
-    def test_tarfile_root_owner(self):
-        tmpdir, tmpdir2, base_name =  self._create_files()
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        group = grp.getgrgid(0)[0]
-        owner = pwd.getpwuid(0)[0]
-        try:
-            archive_name = make_tarball(base_name, 'dist', compress=None,
-                                        owner=owner, group=group)
-        finally:
-            os.chdir(old_dir)
-
-        # check if the compressed tarball was created
-        self.assertTrue(os.path.exists(archive_name))
-
-        # now checks the rights
-        archive = tarfile.open(archive_name)
-        try:
-            for member in archive.getmembers():
-                self.assertEqual(member.uid, 0)
-                self.assertEqual(member.gid, 0)
-        finally:
-            archive.close()
-
-    def test_make_archive_cwd(self):
-        current_dir = os.getcwd()
-        def _breaks(*args, **kw):
-            raise RuntimeError()
-        ARCHIVE_FORMATS['xxx'] = (_breaks, [], 'xxx file')
-        try:
-            try:
-                make_archive('xxx', 'xxx', root_dir=self.mkdtemp())
-            except:
-                pass
-            self.assertEqual(os.getcwd(), current_dir)
-        finally:
-            del ARCHIVE_FORMATS['xxx']
-
-def test_suite():
-    return unittest.makeSuite(ArchiveUtilTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist.py
deleted file mode 100644
index a097997..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist.py
+++ /dev/null
@@ -1,45 +0,0 @@
-"""Tests for distutils.command.bdist."""
-import unittest
-import sys
-import os
-import tempfile
-import shutil
-
-from test.test_support import run_unittest
-
-from distutils.core import Distribution
-from distutils.command.bdist import bdist
-from distutils.tests import support
-from distutils.spawn import find_executable
-from distutils import spawn
-from distutils.errors import DistutilsExecError
-
-class BuildTestCase(support.TempdirManager,
-                    unittest.TestCase):
-
-    def test_formats(self):
-
-        # let's create a command and make sure
-        # we can fix the format
-        pkg_pth, dist = self.create_dist()
-        cmd = bdist(dist)
-        cmd.formats = ['msi']
-        cmd.ensure_finalized()
-        self.assertEqual(cmd.formats, ['msi'])
-
-        # what format bdist offers ?
-        # XXX an explicit list in bdist is
-        # not the best way to  bdist_* commands
-        # we should add a registry
-        formats = ['rpm', 'zip', 'gztar', 'bztar', 'ztar',
-                   'tar', 'wininst', 'msi']
-        formats.sort()
-        founded = cmd.format_command.keys()
-        founded.sort()
-        self.assertEqual(founded, formats)
-
-def test_suite():
-    return unittest.makeSuite(BuildTestCase)
-
-if __name__ == '__main__':
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_dumb.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_dumb.py
deleted file mode 100644
index a2aa8d9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_dumb.py
+++ /dev/null
@@ -1,105 +0,0 @@
-"""Tests for distutils.command.bdist_dumb."""
-
-import unittest
-import sys
-import os
-
-# zlib is not used here, but if it's not available
-# test_simple_built will fail
-try:
-    import zlib
-except ImportError:
-    zlib = None
-
-from test.test_support import run_unittest
-
-from distutils.core import Distribution
-from distutils.command.bdist_dumb import bdist_dumb
-from distutils.tests import support
-
-SETUP_PY = """\
-from distutils.core import setup
-import foo
-
-setup(name='foo', version='0.1', py_modules=['foo'],
-      url='xxx', author='xxx', author_email='xxx')
-
-"""
-
-class BuildDumbTestCase(support.TempdirManager,
-                        support.LoggingSilencer,
-                        support.EnvironGuard,
-                        unittest.TestCase):
-
-    def setUp(self):
-        super(BuildDumbTestCase, self).setUp()
-        self.old_location = os.getcwd()
-        self.old_sys_argv = sys.argv, sys.argv[:]
-
-    def tearDown(self):
-        os.chdir(self.old_location)
-        sys.argv = self.old_sys_argv[0]
-        sys.argv[:] = self.old_sys_argv[1]
-        super(BuildDumbTestCase, self).tearDown()
-
-    @unittest.skipUnless(zlib, "requires zlib")
-    def test_simple_built(self):
-
-        # let's create a simple package
-        tmp_dir = self.mkdtemp()
-        pkg_dir = os.path.join(tmp_dir, 'foo')
-        os.mkdir(pkg_dir)
-        self.write_file((pkg_dir, 'setup.py'), SETUP_PY)
-        self.write_file((pkg_dir, 'foo.py'), '#')
-        self.write_file((pkg_dir, 'MANIFEST.in'), 'include foo.py')
-        self.write_file((pkg_dir, 'README'), '')
-
-        dist = Distribution({'name': 'foo', 'version': '0.1',
-                             'py_modules': ['foo'],
-                             'url': 'xxx', 'author': 'xxx',
-                             'author_email': 'xxx'})
-        dist.script_name = 'setup.py'
-        os.chdir(pkg_dir)
-
-        sys.argv = ['setup.py']
-        cmd = bdist_dumb(dist)
-
-        # so the output is the same no matter
-        # what is the platform
-        cmd.format = 'zip'
-
-        cmd.ensure_finalized()
-        cmd.run()
-
-        # see what we have
-        dist_created = os.listdir(os.path.join(pkg_dir, 'dist'))
-        base = "%s.%s" % (dist.get_fullname(), cmd.plat_name)
-        if os.name == 'os2':
-            base = base.replace(':', '-')
-
-        wanted = ['%s.zip' % base]
-        self.assertEqual(dist_created, wanted)
-
-        # now let's check what we have in the zip file
-        # XXX to be done
-
-    def test_finalize_options(self):
-        pkg_dir, dist = self.create_dist()
-        os.chdir(pkg_dir)
-        cmd = bdist_dumb(dist)
-        self.assertEqual(cmd.bdist_dir, None)
-        cmd.finalize_options()
-
-        # bdist_dir is initialized to bdist_base/dumb if not set
-        base = cmd.get_finalized_command('bdist').bdist_base
-        self.assertEqual(cmd.bdist_dir, os.path.join(base, 'dumb'))
-
-        # the format is set to a default value depending on the os.name
-        default = cmd.default_format[os.name]
-        self.assertEqual(cmd.format, default)
-
-def test_suite():
-    return unittest.makeSuite(BuildDumbTestCase)
-
-if __name__ == '__main__':
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_msi.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_msi.py
deleted file mode 100644
index f084e61..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_msi.py
+++ /dev/null
@@ -1,25 +0,0 @@
-"""Tests for distutils.command.bdist_msi."""
-import unittest
-import sys
-
-from test.test_support import run_unittest
-
-from distutils.tests import support
-
-@unittest.skipUnless(sys.platform=="win32", "These tests are only for win32")
-class BDistMSITestCase(support.TempdirManager,
-                       support.LoggingSilencer,
-                       unittest.TestCase):
-
-    def test_minimal(self):
-        # minimal test XXX need more tests
-        from distutils.command.bdist_msi import bdist_msi
-        pkg_pth, dist = self.create_dist()
-        cmd = bdist_msi(dist)
-        cmd.ensure_finalized()
-
-def test_suite():
-    return unittest.makeSuite(BDistMSITestCase)
-
-if __name__ == '__main__':
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_rpm.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_rpm.py
deleted file mode 100644
index a85f224..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_rpm.py
+++ /dev/null
@@ -1,127 +0,0 @@
-"""Tests for distutils.command.bdist_rpm."""
-
-import unittest
-import sys
-import os
-import tempfile
-import shutil
-
-from test.test_support import run_unittest
-
-from distutils.core import Distribution
-from distutils.command.bdist_rpm import bdist_rpm
-from distutils.tests import support
-from distutils.spawn import find_executable
-from distutils import spawn
-from distutils.errors import DistutilsExecError
-
-SETUP_PY = """\
-from distutils.core import setup
-import foo
-
-setup(name='foo', version='0.1', py_modules=['foo'],
-      url='xxx', author='xxx', author_email='xxx')
-
-"""
-
-class BuildRpmTestCase(support.TempdirManager,
-                       support.LoggingSilencer,
-                       unittest.TestCase):
-
-    def setUp(self):
-        super(BuildRpmTestCase, self).setUp()
-        self.old_location = os.getcwd()
-        self.old_sys_argv = sys.argv, sys.argv[:]
-
-    def tearDown(self):
-        os.chdir(self.old_location)
-        sys.argv = self.old_sys_argv[0]
-        sys.argv[:] = self.old_sys_argv[1]
-        super(BuildRpmTestCase, self).tearDown()
-
-    def test_quiet(self):
-
-        # XXX I am unable yet to make this test work without
-        # spurious sdtout/stderr output under Mac OS X
-        if sys.platform != 'linux2':
-            return
-
-        # this test will run only if the rpm commands are found
-        if (find_executable('rpm') is None or
-            find_executable('rpmbuild') is None):
-            return
-
-        # let's create a package
-        tmp_dir = self.mkdtemp()
-        pkg_dir = os.path.join(tmp_dir, 'foo')
-        os.mkdir(pkg_dir)
-        self.write_file((pkg_dir, 'setup.py'), SETUP_PY)
-        self.write_file((pkg_dir, 'foo.py'), '#')
-        self.write_file((pkg_dir, 'MANIFEST.in'), 'include foo.py')
-        self.write_file((pkg_dir, 'README'), '')
-
-        dist = Distribution({'name': 'foo', 'version': '0.1',
-                             'py_modules': ['foo'],
-                             'url': 'xxx', 'author': 'xxx',
-                             'author_email': 'xxx'})
-        dist.script_name = 'setup.py'
-        os.chdir(pkg_dir)
-
-        sys.argv = ['setup.py']
-        cmd = bdist_rpm(dist)
-        cmd.fix_python = True
-
-        # running in quiet mode
-        cmd.quiet = 1
-        cmd.ensure_finalized()
-        cmd.run()
-
-        dist_created = os.listdir(os.path.join(pkg_dir, 'dist'))
-        self.assertTrue('foo-0.1-1.noarch.rpm' in dist_created)
-
-    def test_no_optimize_flag(self):
-
-        # XXX I am unable yet to make this test work without
-        # spurious sdtout/stderr output under Mac OS X
-        if sys.platform != 'linux2':
-            return
-
-        # http://bugs.python.org/issue1533164
-        # this test will run only if the rpm command is found
-        if (find_executable('rpm') is None or
-            find_executable('rpmbuild') is None):
-            return
-
-        # let's create a package that brakes bdist_rpm
-        tmp_dir = self.mkdtemp()
-        pkg_dir = os.path.join(tmp_dir, 'foo')
-        os.mkdir(pkg_dir)
-        self.write_file((pkg_dir, 'setup.py'), SETUP_PY)
-        self.write_file((pkg_dir, 'foo.py'), '#')
-        self.write_file((pkg_dir, 'MANIFEST.in'), 'include foo.py')
-        self.write_file((pkg_dir, 'README'), '')
-
-        dist = Distribution({'name': 'foo', 'version': '0.1',
-                             'py_modules': ['foo'],
-                             'url': 'xxx', 'author': 'xxx',
-                             'author_email': 'xxx'})
-        dist.script_name = 'setup.py'
-        os.chdir(pkg_dir)
-
-        sys.argv = ['setup.py']
-        cmd = bdist_rpm(dist)
-        cmd.fix_python = True
-
-        cmd.quiet = 1
-        cmd.ensure_finalized()
-        cmd.run()
-
-        dist_created = os.listdir(os.path.join(pkg_dir, 'dist'))
-        self.assertTrue('foo-0.1-1.noarch.rpm' in dist_created)
-        os.remove(os.path.join(pkg_dir, 'dist', 'foo-0.1-1.noarch.rpm'))
-
-def test_suite():
-    return unittest.makeSuite(BuildRpmTestCase)
-
-if __name__ == '__main__':
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_wininst.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_wininst.py
deleted file mode 100644
index 69a3f7f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_bdist_wininst.py
+++ /dev/null
@@ -1,32 +0,0 @@
-"""Tests for distutils.command.bdist_wininst."""
-import unittest
-
-from test.test_support import run_unittest
-
-from distutils.command.bdist_wininst import bdist_wininst
-from distutils.tests import support
-
-class BuildWinInstTestCase(support.TempdirManager,
-                           support.LoggingSilencer,
-                           unittest.TestCase):
-
-    def test_get_exe_bytes(self):
-
-        # issue5731: command was broken on non-windows platforms
-        # this test makes sure it works now for every platform
-        # let's create a command
-        pkg_pth, dist = self.create_dist()
-        cmd = bdist_wininst(dist)
-        cmd.ensure_finalized()
-
-        # let's run the code that finds the right wininst*.exe file
-        # and make sure it finds it and returns its content
-        # no matter what platform we have
-        exe_file = cmd.get_exe_bytes()
-        self.assertTrue(len(exe_file) > 10)
-
-def test_suite():
-    return unittest.makeSuite(BuildWinInstTestCase)
-
-if __name__ == '__main__':
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build.py
deleted file mode 100644
index 27e528e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build.py
+++ /dev/null
@@ -1,55 +0,0 @@
-"""Tests for distutils.command.build."""
-import unittest
-import os
-import sys
-from test.test_support import run_unittest
-
-from distutils.command.build import build
-from distutils.tests import support
-from sysconfig import get_platform
-
-class BuildTestCase(support.TempdirManager,
-                    support.LoggingSilencer,
-                    unittest.TestCase):
-
-    def test_finalize_options(self):
-        pkg_dir, dist = self.create_dist()
-        cmd = build(dist)
-        cmd.finalize_options()
-
-        # if not specified, plat_name gets the current platform
-        self.assertEqual(cmd.plat_name, get_platform())
-
-        # build_purelib is build + lib
-        wanted = os.path.join(cmd.build_base, 'lib')
-        self.assertEqual(cmd.build_purelib, wanted)
-
-        # build_platlib is 'build/lib.platform-x.x[-pydebug]'
-        # examples:
-        #   build/lib.macosx-10.3-i386-2.7
-        plat_spec = '.%s-%s' % (cmd.plat_name, sys.version[0:3])
-        if hasattr(sys, 'gettotalrefcount'):
-            self.assertTrue(cmd.build_platlib.endswith('-pydebug'))
-            plat_spec += '-pydebug'
-        wanted = os.path.join(cmd.build_base, 'lib' + plat_spec)
-        self.assertEqual(cmd.build_platlib, wanted)
-
-        # by default, build_lib = build_purelib
-        self.assertEqual(cmd.build_lib, cmd.build_purelib)
-
-        # build_temp is build/temp.<plat>
-        wanted = os.path.join(cmd.build_base, 'temp' + plat_spec)
-        self.assertEqual(cmd.build_temp, wanted)
-
-        # build_scripts is build/scripts-x.x
-        wanted = os.path.join(cmd.build_base, 'scripts-' +  sys.version[0:3])
-        self.assertEqual(cmd.build_scripts, wanted)
-
-        # executable is os.path.normpath(sys.executable)
-        self.assertEqual(cmd.executable, os.path.normpath(sys.executable))
-
-def test_suite():
-    return unittest.makeSuite(BuildTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_clib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_clib.py
deleted file mode 100644
index e39f090..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_clib.py
+++ /dev/null
@@ -1,145 +0,0 @@
-"""Tests for distutils.command.build_clib."""
-import unittest
-import os
-import sys
-
-from test.test_support import run_unittest
-
-from distutils.command.build_clib import build_clib
-from distutils.errors import DistutilsSetupError
-from distutils.tests import support
-from distutils.spawn import find_executable
-
-class BuildCLibTestCase(support.TempdirManager,
-                        support.LoggingSilencer,
-                        unittest.TestCase):
-
-    def test_check_library_dist(self):
-        pkg_dir, dist = self.create_dist()
-        cmd = build_clib(dist)
-
-        # 'libraries' option must be a list
-        self.assertRaises(DistutilsSetupError, cmd.check_library_list, 'foo')
-
-        # each element of 'libraries' must a 2-tuple
-        self.assertRaises(DistutilsSetupError, cmd.check_library_list,
-                          ['foo1', 'foo2'])
-
-        # first element of each tuple in 'libraries'
-        # must be a string (the library name)
-        self.assertRaises(DistutilsSetupError, cmd.check_library_list,
-                          [(1, 'foo1'), ('name', 'foo2')])
-
-        # library name may not contain directory separators
-        self.assertRaises(DistutilsSetupError, cmd.check_library_list,
-                          [('name', 'foo1'),
-                           ('another/name', 'foo2')])
-
-        # second element of each tuple must be a dictionary (build info)
-        self.assertRaises(DistutilsSetupError, cmd.check_library_list,
-                          [('name', {}),
-                           ('another', 'foo2')])
-
-        # those work
-        libs = [('name', {}), ('name', {'ok': 'good'})]
-        cmd.check_library_list(libs)
-
-    def test_get_source_files(self):
-        pkg_dir, dist = self.create_dist()
-        cmd = build_clib(dist)
-
-        # "in 'libraries' option 'sources' must be present and must be
-        # a list of source filenames
-        cmd.libraries = [('name', {})]
-        self.assertRaises(DistutilsSetupError, cmd.get_source_files)
-
-        cmd.libraries = [('name', {'sources': 1})]
-        self.assertRaises(DistutilsSetupError, cmd.get_source_files)
-
-        cmd.libraries = [('name', {'sources': ['a', 'b']})]
-        self.assertEqual(cmd.get_source_files(), ['a', 'b'])
-
-        cmd.libraries = [('name', {'sources': ('a', 'b')})]
-        self.assertEqual(cmd.get_source_files(), ['a', 'b'])
-
-        cmd.libraries = [('name', {'sources': ('a', 'b')}),
-                         ('name2', {'sources': ['c', 'd']})]
-        self.assertEqual(cmd.get_source_files(), ['a', 'b', 'c', 'd'])
-
-    def test_build_libraries(self):
-
-        pkg_dir, dist = self.create_dist()
-        cmd = build_clib(dist)
-        class FakeCompiler:
-            def compile(*args, **kw):
-                pass
-            create_static_lib = compile
-
-        cmd.compiler = FakeCompiler()
-
-        # build_libraries is also doing a bit of typoe checking
-        lib = [('name', {'sources': 'notvalid'})]
-        self.assertRaises(DistutilsSetupError, cmd.build_libraries, lib)
-
-        lib = [('name', {'sources': list()})]
-        cmd.build_libraries(lib)
-
-        lib = [('name', {'sources': tuple()})]
-        cmd.build_libraries(lib)
-
-    def test_finalize_options(self):
-        pkg_dir, dist = self.create_dist()
-        cmd = build_clib(dist)
-
-        cmd.include_dirs = 'one-dir'
-        cmd.finalize_options()
-        self.assertEqual(cmd.include_dirs, ['one-dir'])
-
-        cmd.include_dirs = None
-        cmd.finalize_options()
-        self.assertEqual(cmd.include_dirs, [])
-
-        cmd.distribution.libraries = 'WONTWORK'
-        self.assertRaises(DistutilsSetupError, cmd.finalize_options)
-
-    def test_run(self):
-        # can't test on windows
-        if sys.platform == 'win32':
-            return
-
-        pkg_dir, dist = self.create_dist()
-        cmd = build_clib(dist)
-
-        foo_c = os.path.join(pkg_dir, 'foo.c')
-        self.write_file(foo_c, 'int main(void) { return 1;}\n')
-        cmd.libraries = [('foo', {'sources': [foo_c]})]
-
-        build_temp = os.path.join(pkg_dir, 'build')
-        os.mkdir(build_temp)
-        cmd.build_temp = build_temp
-        cmd.build_clib = build_temp
-
-        # before we run the command, we want to make sure
-        # all commands are present on the system
-        # by creating a compiler and checking its executables
-        from distutils.ccompiler import new_compiler, customize_compiler
-
-        compiler = new_compiler()
-        customize_compiler(compiler)
-        for ccmd in compiler.executables.values():
-            if ccmd is None:
-                continue
-            if find_executable(ccmd[0]) is None:
-                return # can't test
-
-        # this should work
-        cmd.run()
-
-        # let's check the result
-        self.assertTrue('libfoo.a' in os.listdir(build_temp))
-
-def test_suite():
-    return unittest.makeSuite(BuildCLibTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_ext.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_ext.py
deleted file mode 100644
index 6543965..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_ext.py
+++ /dev/null
@@ -1,491 +0,0 @@
-import sys
-import os
-import tempfile
-import shutil
-from StringIO import StringIO
-import textwrap
-
-from distutils.core import Extension, Distribution
-from distutils.command.build_ext import build_ext
-from distutils import sysconfig
-from distutils.tests import support
-from distutils.errors import DistutilsSetupError, CompileError
-
-import unittest
-from test import test_support
-
-# http://bugs.python.org/issue4373
-# Don't load the xx module more than once.
-ALREADY_TESTED = False
-
-def _get_source_filename():
-    srcdir = sysconfig.get_config_var('srcdir')
-    if srcdir is None:
-        return os.path.join(sysconfig.project_base, 'Modules', 'xxmodule.c')
-    return os.path.join(srcdir, 'Modules', 'xxmodule.c')
-
-_XX_MODULE_PATH = _get_source_filename()
-
-class BuildExtTestCase(support.TempdirManager,
-                       support.LoggingSilencer,
-                       unittest.TestCase):
-    def setUp(self):
-        # Create a simple test environment
-        # Note that we're making changes to sys.path
-        super(BuildExtTestCase, self).setUp()
-        self.tmp_dir = tempfile.mkdtemp(prefix="pythontest_")
-        if os.path.exists(_XX_MODULE_PATH):
-            self.sys_path = sys.path[:]
-            sys.path.append(self.tmp_dir)
-            shutil.copy(_XX_MODULE_PATH, self.tmp_dir)
-
-    def tearDown(self):
-        # Get everything back to normal
-        if os.path.exists(_XX_MODULE_PATH):
-            test_support.unload('xx')
-            sys.path[:] = self.sys_path
-            # XXX on Windows the test leaves a directory
-            # with xx module in TEMP
-        shutil.rmtree(self.tmp_dir, os.name == 'nt' or
-                                    sys.platform == 'cygwin')
-        super(BuildExtTestCase, self).tearDown()
-
-    def _fixup_command(self, cmd):
-        # When Python was build with --enable-shared, -L. is not good enough
-        # to find the libpython<blah>.so.  This is because regrtest runs it
-        # under a tempdir, not in the top level where the .so lives.  By the
-        # time we've gotten here, Python's already been chdir'd to the
-        # tempdir.
-        #
-        # To further add to the fun, we can't just add library_dirs to the
-        # Extension() instance because that doesn't get plumbed through to the
-        # final compiler command.
-        if (sysconfig.get_config_var('Py_ENABLE_SHARED') and
-            not sys.platform.startswith('win')):
-            runshared = sysconfig.get_config_var('RUNSHARED')
-            if runshared is None:
-                cmd.library_dirs = ['.']
-            else:
-                name, equals, value = runshared.partition('=')
-                cmd.library_dirs = value.split(os.pathsep)
-
-    @unittest.skipIf(not os.path.exists(_XX_MODULE_PATH),
-                     'xxmodule.c not found')
-    def test_build_ext(self):
-        global ALREADY_TESTED
-        xx_c = os.path.join(self.tmp_dir, 'xxmodule.c')
-        xx_ext = Extension('xx', [xx_c])
-        dist = Distribution({'name': 'xx', 'ext_modules': [xx_ext]})
-        dist.package_dir = self.tmp_dir
-        cmd = build_ext(dist)
-        self._fixup_command(cmd)
-        if os.name == "nt":
-            # On Windows, we must build a debug version iff running
-            # a debug build of Python
-            cmd.debug = sys.executable.endswith("_d.exe")
-        cmd.build_lib = self.tmp_dir
-        cmd.build_temp = self.tmp_dir
-
-        old_stdout = sys.stdout
-        if not test_support.verbose:
-            # silence compiler output
-            sys.stdout = StringIO()
-        try:
-            cmd.ensure_finalized()
-            cmd.run()
-        finally:
-            sys.stdout = old_stdout
-
-        if ALREADY_TESTED:
-            return
-        else:
-            ALREADY_TESTED = True
-
-        import xx
-
-        for attr in ('error', 'foo', 'new', 'roj'):
-            self.assertTrue(hasattr(xx, attr))
-
-        self.assertEqual(xx.foo(2, 5), 7)
-        self.assertEqual(xx.foo(13,15), 28)
-        self.assertEqual(xx.new().demo(), None)
-        doc = 'This is a template module just for instruction.'
-        self.assertEqual(xx.__doc__, doc)
-        self.assertTrue(isinstance(xx.Null(), xx.Null))
-        self.assertTrue(isinstance(xx.Str(), xx.Str))
-
-    def test_solaris_enable_shared(self):
-        dist = Distribution({'name': 'xx'})
-        cmd = build_ext(dist)
-        old = sys.platform
-
-        sys.platform = 'sunos' # fooling finalize_options
-        from distutils.sysconfig import  _config_vars
-        old_var = _config_vars.get('Py_ENABLE_SHARED')
-        _config_vars['Py_ENABLE_SHARED'] = 1
-        try:
-            cmd.ensure_finalized()
-        finally:
-            sys.platform = old
-            if old_var is None:
-                del _config_vars['Py_ENABLE_SHARED']
-            else:
-                _config_vars['Py_ENABLE_SHARED'] = old_var
-
-        # make sure we get some library dirs under solaris
-        self.assertTrue(len(cmd.library_dirs) > 0)
-
-    def test_finalize_options(self):
-        # Make sure Python's include directories (for Python.h, pyconfig.h,
-        # etc.) are in the include search path.
-        modules = [Extension('foo', ['xxx'])]
-        dist = Distribution({'name': 'xx', 'ext_modules': modules})
-        cmd = build_ext(dist)
-        cmd.finalize_options()
-
-        from distutils import sysconfig
-        py_include = sysconfig.get_python_inc()
-        self.assertTrue(py_include in cmd.include_dirs)
-
-        plat_py_include = sysconfig.get_python_inc(plat_specific=1)
-        self.assertTrue(plat_py_include in cmd.include_dirs)
-
-        # make sure cmd.libraries is turned into a list
-        # if it's a string
-        cmd = build_ext(dist)
-        cmd.libraries = 'my_lib'
-        cmd.finalize_options()
-        self.assertEqual(cmd.libraries, ['my_lib'])
-
-        # make sure cmd.library_dirs is turned into a list
-        # if it's a string
-        cmd = build_ext(dist)
-        cmd.library_dirs = 'my_lib_dir'
-        cmd.finalize_options()
-        self.assertTrue('my_lib_dir' in cmd.library_dirs)
-
-        # make sure rpath is turned into a list
-        # if it's a list of os.pathsep's paths
-        cmd = build_ext(dist)
-        cmd.rpath = os.pathsep.join(['one', 'two'])
-        cmd.finalize_options()
-        self.assertEqual(cmd.rpath, ['one', 'two'])
-
-        # XXX more tests to perform for win32
-
-        # make sure define is turned into 2-tuples
-        # strings if they are ','-separated strings
-        cmd = build_ext(dist)
-        cmd.define = 'one,two'
-        cmd.finalize_options()
-        self.assertEqual(cmd.define, [('one', '1'), ('two', '1')])
-
-        # make sure undef is turned into a list of
-        # strings if they are ','-separated strings
-        cmd = build_ext(dist)
-        cmd.undef = 'one,two'
-        cmd.finalize_options()
-        self.assertEqual(cmd.undef, ['one', 'two'])
-
-        # make sure swig_opts is turned into a list
-        cmd = build_ext(dist)
-        cmd.swig_opts = None
-        cmd.finalize_options()
-        self.assertEqual(cmd.swig_opts, [])
-
-        cmd = build_ext(dist)
-        cmd.swig_opts = '1 2'
-        cmd.finalize_options()
-        self.assertEqual(cmd.swig_opts, ['1', '2'])
-
-    def test_check_extensions_list(self):
-        dist = Distribution()
-        cmd = build_ext(dist)
-        cmd.finalize_options()
-
-        #'extensions' option must be a list of Extension instances
-        self.assertRaises(DistutilsSetupError, cmd.check_extensions_list, 'foo')
-
-        # each element of 'ext_modules' option must be an
-        # Extension instance or 2-tuple
-        exts = [('bar', 'foo', 'bar'), 'foo']
-        self.assertRaises(DistutilsSetupError, cmd.check_extensions_list, exts)
-
-        # first element of each tuple in 'ext_modules'
-        # must be the extension name (a string) and match
-        # a python dotted-separated name
-        exts = [('foo-bar', '')]
-        self.assertRaises(DistutilsSetupError, cmd.check_extensions_list, exts)
-
-        # second element of each tuple in 'ext_modules'
-        # must be a ary (build info)
-        exts = [('foo.bar', '')]
-        self.assertRaises(DistutilsSetupError, cmd.check_extensions_list, exts)
-
-        # ok this one should pass
-        exts = [('foo.bar', {'sources': [''], 'libraries': 'foo',
-                             'some': 'bar'})]
-        cmd.check_extensions_list(exts)
-        ext = exts[0]
-        self.assertTrue(isinstance(ext, Extension))
-
-        # check_extensions_list adds in ext the values passed
-        # when they are in ('include_dirs', 'library_dirs', 'libraries'
-        # 'extra_objects', 'extra_compile_args', 'extra_link_args')
-        self.assertEqual(ext.libraries, 'foo')
-        self.assertTrue(not hasattr(ext, 'some'))
-
-        # 'macros' element of build info dict must be 1- or 2-tuple
-        exts = [('foo.bar', {'sources': [''], 'libraries': 'foo',
-                'some': 'bar', 'macros': [('1', '2', '3'), 'foo']})]
-        self.assertRaises(DistutilsSetupError, cmd.check_extensions_list, exts)
-
-        exts[0][1]['macros'] = [('1', '2'), ('3',)]
-        cmd.check_extensions_list(exts)
-        self.assertEqual(exts[0].undef_macros, ['3'])
-        self.assertEqual(exts[0].define_macros, [('1', '2')])
-
-    def test_get_source_files(self):
-        modules = [Extension('foo', ['xxx'])]
-        dist = Distribution({'name': 'xx', 'ext_modules': modules})
-        cmd = build_ext(dist)
-        cmd.ensure_finalized()
-        self.assertEqual(cmd.get_source_files(), ['xxx'])
-
-    def test_compiler_option(self):
-        # cmd.compiler is an option and
-        # should not be overriden by a compiler instance
-        # when the command is run
-        dist = Distribution()
-        cmd = build_ext(dist)
-        cmd.compiler = 'unix'
-        cmd.ensure_finalized()
-        cmd.run()
-        self.assertEqual(cmd.compiler, 'unix')
-
-    def test_get_outputs(self):
-        tmp_dir = self.mkdtemp()
-        c_file = os.path.join(tmp_dir, 'foo.c')
-        self.write_file(c_file, 'void initfoo(void) {};\n')
-        ext = Extension('foo', [c_file])
-        dist = Distribution({'name': 'xx',
-                             'ext_modules': [ext]})
-        cmd = build_ext(dist)
-        self._fixup_command(cmd)
-        cmd.ensure_finalized()
-        self.assertEqual(len(cmd.get_outputs()), 1)
-
-        if os.name == "nt":
-            cmd.debug = sys.executable.endswith("_d.exe")
-
-        cmd.build_lib = os.path.join(self.tmp_dir, 'build')
-        cmd.build_temp = os.path.join(self.tmp_dir, 'tempt')
-
-        # issue #5977 : distutils build_ext.get_outputs
-        # returns wrong result with --inplace
-        other_tmp_dir = os.path.realpath(self.mkdtemp())
-        old_wd = os.getcwd()
-        os.chdir(other_tmp_dir)
-        try:
-            cmd.inplace = 1
-            cmd.run()
-            so_file = cmd.get_outputs()[0]
-        finally:
-            os.chdir(old_wd)
-        self.assertTrue(os.path.exists(so_file))
-        self.assertEqual(os.path.splitext(so_file)[-1],
-                         sysconfig.get_config_var('SO'))
-        so_dir = os.path.dirname(so_file)
-        self.assertEqual(so_dir, other_tmp_dir)
-        cmd.compiler = None
-        cmd.inplace = 0
-        cmd.run()
-        so_file = cmd.get_outputs()[0]
-        self.assertTrue(os.path.exists(so_file))
-        self.assertEqual(os.path.splitext(so_file)[-1],
-                         sysconfig.get_config_var('SO'))
-        so_dir = os.path.dirname(so_file)
-        self.assertEqual(so_dir, cmd.build_lib)
-
-        # inplace = 0, cmd.package = 'bar'
-        build_py = cmd.get_finalized_command('build_py')
-        build_py.package_dir = {'': 'bar'}
-        path = cmd.get_ext_fullpath('foo')
-        # checking that the last directory is the build_dir
-        path = os.path.split(path)[0]
-        self.assertEqual(path, cmd.build_lib)
-
-        # inplace = 1, cmd.package = 'bar'
-        cmd.inplace = 1
-        other_tmp_dir = os.path.realpath(self.mkdtemp())
-        old_wd = os.getcwd()
-        os.chdir(other_tmp_dir)
-        try:
-            path = cmd.get_ext_fullpath('foo')
-        finally:
-            os.chdir(old_wd)
-        # checking that the last directory is bar
-        path = os.path.split(path)[0]
-        lastdir = os.path.split(path)[-1]
-        self.assertEqual(lastdir, 'bar')
-
-    def test_ext_fullpath(self):
-        ext = sysconfig.get_config_vars()['SO']
-        dist = Distribution()
-        cmd = build_ext(dist)
-        cmd.inplace = 1
-        cmd.distribution.package_dir = {'': 'src'}
-        cmd.distribution.packages = ['lxml', 'lxml.html']
-        curdir = os.getcwd()
-        wanted = os.path.join(curdir, 'src', 'lxml', 'etree' + ext)
-        path = cmd.get_ext_fullpath('lxml.etree')
-        self.assertEqual(wanted, path)
-
-        # building lxml.etree not inplace
-        cmd.inplace = 0
-        cmd.build_lib = os.path.join(curdir, 'tmpdir')
-        wanted = os.path.join(curdir, 'tmpdir', 'lxml', 'etree' + ext)
-        path = cmd.get_ext_fullpath('lxml.etree')
-        self.assertEqual(wanted, path)
-
-        # building twisted.runner.portmap not inplace
-        build_py = cmd.get_finalized_command('build_py')
-        build_py.package_dir = {}
-        cmd.distribution.packages = ['twisted', 'twisted.runner.portmap']
-        path = cmd.get_ext_fullpath('twisted.runner.portmap')
-        wanted = os.path.join(curdir, 'tmpdir', 'twisted', 'runner',
-                              'portmap' + ext)
-        self.assertEqual(wanted, path)
-
-        # building twisted.runner.portmap inplace
-        cmd.inplace = 1
-        path = cmd.get_ext_fullpath('twisted.runner.portmap')
-        wanted = os.path.join(curdir, 'twisted', 'runner', 'portmap' + ext)
-        self.assertEqual(wanted, path)
-
-    def test_build_ext_inplace(self):
-        etree_c = os.path.join(self.tmp_dir, 'lxml.etree.c')
-        etree_ext = Extension('lxml.etree', [etree_c])
-        dist = Distribution({'name': 'lxml', 'ext_modules': [etree_ext]})
-        cmd = build_ext(dist)
-        cmd.ensure_finalized()
-        cmd.inplace = 1
-        cmd.distribution.package_dir = {'': 'src'}
-        cmd.distribution.packages = ['lxml', 'lxml.html']
-        curdir = os.getcwd()
-        ext = sysconfig.get_config_var("SO")
-        wanted = os.path.join(curdir, 'src', 'lxml', 'etree' + ext)
-        path = cmd.get_ext_fullpath('lxml.etree')
-        self.assertEqual(wanted, path)
-
-    def test_setuptools_compat(self):
-        import distutils.core, distutils.extension, distutils.command.build_ext
-        saved_ext = distutils.extension.Extension
-        try:
-            # on some platforms, it loads the deprecated "dl" module
-            test_support.import_module('setuptools_build_ext', deprecated=True)
-
-            # theses import patch Distutils' Extension class
-            from setuptools_build_ext import build_ext as setuptools_build_ext
-            from setuptools_extension import Extension
-
-            etree_c = os.path.join(self.tmp_dir, 'lxml.etree.c')
-            etree_ext = Extension('lxml.etree', [etree_c])
-            dist = Distribution({'name': 'lxml', 'ext_modules': [etree_ext]})
-            cmd = setuptools_build_ext(dist)
-            cmd.ensure_finalized()
-            cmd.inplace = 1
-            cmd.distribution.package_dir = {'': 'src'}
-            cmd.distribution.packages = ['lxml', 'lxml.html']
-            curdir = os.getcwd()
-            ext = sysconfig.get_config_var("SO")
-            wanted = os.path.join(curdir, 'src', 'lxml', 'etree' + ext)
-            path = cmd.get_ext_fullpath('lxml.etree')
-            self.assertEqual(wanted, path)
-        finally:
-            # restoring Distutils' Extension class otherwise its broken
-            distutils.extension.Extension = saved_ext
-            distutils.core.Extension = saved_ext
-            distutils.command.build_ext.Extension = saved_ext
-
-    def test_build_ext_path_with_os_sep(self):
-        dist = Distribution({'name': 'UpdateManager'})
-        cmd = build_ext(dist)
-        cmd.ensure_finalized()
-        ext = sysconfig.get_config_var("SO")
-        ext_name = os.path.join('UpdateManager', 'fdsend')
-        ext_path = cmd.get_ext_fullpath(ext_name)
-        wanted = os.path.join(cmd.build_lib, 'UpdateManager', 'fdsend' + ext)
-        self.assertEqual(ext_path, wanted)
-
-    def test_build_ext_path_cross_platform(self):
-        if sys.platform != 'win32':
-            return
-        dist = Distribution({'name': 'UpdateManager'})
-        cmd = build_ext(dist)
-        cmd.ensure_finalized()
-        ext = sysconfig.get_config_var("SO")
-        # this needs to work even under win32
-        ext_name = 'UpdateManager/fdsend'
-        ext_path = cmd.get_ext_fullpath(ext_name)
-        wanted = os.path.join(cmd.build_lib, 'UpdateManager', 'fdsend' + ext)
-        self.assertEqual(ext_path, wanted)
-
-    @unittest.skipUnless(sys.platform == 'darwin', 'test only relevant for MacOSX')
-    def test_deployment_target(self):
-        self._try_compile_deployment_target()
-
-        orig_environ = os.environ
-        os.environ = orig_environ.copy()
-        self.addCleanup(setattr, os, 'environ', orig_environ)
-
-        os.environ['MACOSX_DEPLOYMENT_TARGET']='10.1'
-        self._try_compile_deployment_target()
-
-
-    def _try_compile_deployment_target(self):
-        deptarget_c = os.path.join(self.tmp_dir, 'deptargetmodule.c')
-
-        with open(deptarget_c, 'w') as fp:
-            fp.write(textwrap.dedent('''\
-                #include <AvailabilityMacros.h>
-
-                int dummy;
-
-                #if TARGET != MAC_OS_X_VERSION_MIN_REQUIRED
-                #error "Unexpected target"
-               #endif
-
-            '''))
-
-        target = sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')
-        target = tuple(map(int, target.split('.')))
-        target = '%02d%01d0' % target
-
-        deptarget_ext = Extension(
-            'deptarget',
-            [deptarget_c],
-            extra_compile_args=['-DTARGET=%s'%(target,)],
-        )
-        dist = Distribution({
-            'name': 'deptarget',
-            'ext_modules': [deptarget_ext]
-        })
-        dist.package_dir = self.tmp_dir
-        cmd = build_ext(dist)
-        cmd.build_lib = self.tmp_dir
-        cmd.build_temp = self.tmp_dir
-
-        try:
-            old_stdout = sys.stdout
-            cmd.ensure_finalized()
-            cmd.run()
-
-        except CompileError:
-            self.fail("Wrong deployment target during compilation")
-
-def test_suite():
-    return unittest.makeSuite(BuildExtTestCase)
-
-if __name__ == '__main__':
-    test_support.run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_py.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_py.py
deleted file mode 100644
index d6e9ef1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_py.py
+++ /dev/null
@@ -1,122 +0,0 @@
-"""Tests for distutils.command.build_py."""
-
-import os
-import sys
-import StringIO
-import unittest
-
-from distutils.command.build_py import build_py
-from distutils.core import Distribution
-from distutils.errors import DistutilsFileError
-
-from distutils.tests import support
-from test.test_support import run_unittest
-
-
-class BuildPyTestCase(support.TempdirManager,
-                      support.LoggingSilencer,
-                      unittest.TestCase):
-
-    def test_package_data(self):
-        sources = self.mkdtemp()
-        f = open(os.path.join(sources, "__init__.py"), "w")
-        try:
-            f.write("# Pretend this is a package.")
-        finally:
-            f.close()
-        f = open(os.path.join(sources, "README.txt"), "w")
-        try:
-            f.write("Info about this package")
-        finally:
-            f.close()
-
-        destination = self.mkdtemp()
-
-        dist = Distribution({"packages": ["pkg"],
-                             "package_dir": {"pkg": sources}})
-        # script_name need not exist, it just need to be initialized
-        dist.script_name = os.path.join(sources, "setup.py")
-        dist.command_obj["build"] = support.DummyCommand(
-            force=0,
-            build_lib=destination)
-        dist.packages = ["pkg"]
-        dist.package_data = {"pkg": ["README.txt"]}
-        dist.package_dir = {"pkg": sources}
-
-        cmd = build_py(dist)
-        cmd.compile = 1
-        cmd.ensure_finalized()
-        self.assertEqual(cmd.package_data, dist.package_data)
-
-        cmd.run()
-
-        # This makes sure the list of outputs includes byte-compiled
-        # files for Python modules but not for package data files
-        # (there shouldn't *be* byte-code files for those!).
-        #
-        self.assertEqual(len(cmd.get_outputs()), 3)
-        pkgdest = os.path.join(destination, "pkg")
-        files = os.listdir(pkgdest)
-        self.assertIn("__init__.py", files)
-        self.assertIn("README.txt", files)
-        # XXX even with -O, distutils writes pyc, not pyo; bug?
-        if sys.dont_write_bytecode:
-            self.assertNotIn("__init__.pyc", files)
-        else:
-            self.assertIn("__init__.pyc", files)
-
-    def test_empty_package_dir(self):
-        # See SF 1668596/1720897.
-        cwd = os.getcwd()
-
-        # create the distribution files.
-        sources = self.mkdtemp()
-        open(os.path.join(sources, "__init__.py"), "w").close()
-
-        testdir = os.path.join(sources, "doc")
-        os.mkdir(testdir)
-        open(os.path.join(testdir, "testfile"), "w").close()
-
-        os.chdir(sources)
-        old_stdout = sys.stdout
-        sys.stdout = StringIO.StringIO()
-
-        try:
-            dist = Distribution({"packages": ["pkg"],
-                                 "package_dir": {"pkg": ""},
-                                 "package_data": {"pkg": ["doc/*"]}})
-            # script_name need not exist, it just need to be initialized
-            dist.script_name = os.path.join(sources, "setup.py")
-            dist.script_args = ["build"]
-            dist.parse_command_line()
-
-            try:
-                dist.run_commands()
-            except DistutilsFileError:
-                self.fail("failed package_data test when package_dir is ''")
-        finally:
-            # Restore state.
-            os.chdir(cwd)
-            sys.stdout = old_stdout
-
-    def test_dont_write_bytecode(self):
-        # makes sure byte_compile is not used
-        pkg_dir, dist = self.create_dist()
-        cmd = build_py(dist)
-        cmd.compile = 1
-        cmd.optimize = 1
-
-        old_dont_write_bytecode = sys.dont_write_bytecode
-        sys.dont_write_bytecode = True
-        try:
-            cmd.byte_compile([])
-        finally:
-            sys.dont_write_bytecode = old_dont_write_bytecode
-
-        self.assertIn('byte-compiling is disabled', self.logs[0][1])
-
-def test_suite():
-    return unittest.makeSuite(BuildPyTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_scripts.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_scripts.py
deleted file mode 100644
index a427b69..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_build_scripts.py
+++ /dev/null
@@ -1,112 +0,0 @@
-"""Tests for distutils.command.build_scripts."""
-
-import os
-import unittest
-
-from distutils.command.build_scripts import build_scripts
-from distutils.core import Distribution
-import sysconfig
-
-from distutils.tests import support
-from test.test_support import run_unittest
-
-
-class BuildScriptsTestCase(support.TempdirManager,
-                           support.LoggingSilencer,
-                           unittest.TestCase):
-
-    def test_default_settings(self):
-        cmd = self.get_build_scripts_cmd("/foo/bar", [])
-        self.assertTrue(not cmd.force)
-        self.assertTrue(cmd.build_dir is None)
-
-        cmd.finalize_options()
-
-        self.assertTrue(cmd.force)
-        self.assertEqual(cmd.build_dir, "/foo/bar")
-
-    def test_build(self):
-        source = self.mkdtemp()
-        target = self.mkdtemp()
-        expected = self.write_sample_scripts(source)
-
-        cmd = self.get_build_scripts_cmd(target,
-                                         [os.path.join(source, fn)
-                                          for fn in expected])
-        cmd.finalize_options()
-        cmd.run()
-
-        built = os.listdir(target)
-        for name in expected:
-            self.assertTrue(name in built)
-
-    def get_build_scripts_cmd(self, target, scripts):
-        import sys
-        dist = Distribution()
-        dist.scripts = scripts
-        dist.command_obj["build"] = support.DummyCommand(
-            build_scripts=target,
-            force=1,
-            executable=sys.executable
-            )
-        return build_scripts(dist)
-
-    def write_sample_scripts(self, dir):
-        expected = []
-        expected.append("script1.py")
-        self.write_script(dir, "script1.py",
-                          ("#! /usr/bin/env python2.3\n"
-                           "# bogus script w/ Python sh-bang\n"
-                           "pass\n"))
-        expected.append("script2.py")
-        self.write_script(dir, "script2.py",
-                          ("#!/usr/bin/python\n"
-                           "# bogus script w/ Python sh-bang\n"
-                           "pass\n"))
-        expected.append("shell.sh")
-        self.write_script(dir, "shell.sh",
-                          ("#!/bin/sh\n"
-                           "# bogus shell script w/ sh-bang\n"
-                           "exit 0\n"))
-        return expected
-
-    def write_script(self, dir, name, text):
-        f = open(os.path.join(dir, name), "w")
-        try:
-            f.write(text)
-        finally:
-            f.close()
-
-    def test_version_int(self):
-        source = self.mkdtemp()
-        target = self.mkdtemp()
-        expected = self.write_sample_scripts(source)
-
-
-        cmd = self.get_build_scripts_cmd(target,
-                                         [os.path.join(source, fn)
-                                          for fn in expected])
-        cmd.finalize_options()
-
-        # http://bugs.python.org/issue4524
-        #
-        # On linux-g++-32 with command line `./configure --enable-ipv6
-        # --with-suffix=3`, python is compiled okay but the build scripts
-        # failed when writing the name of the executable
-        old = sysconfig.get_config_vars().get('VERSION')
-        sysconfig._CONFIG_VARS['VERSION'] = 4
-        try:
-            cmd.run()
-        finally:
-            if old is not None:
-                sysconfig._CONFIG_VARS['VERSION'] = old
-
-        built = os.listdir(target)
-        for name in expected:
-            self.assertTrue(name in built)
-
-def test_suite():
-    return unittest.makeSuite(BuildScriptsTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_ccompiler.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_ccompiler.py
deleted file mode 100644
index cd83c53..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_ccompiler.py
+++ /dev/null
@@ -1,81 +0,0 @@
-"""Tests for distutils.ccompiler."""
-import os
-import unittest
-from test.test_support import captured_stdout
-
-from distutils.ccompiler import (gen_lib_options, CCompiler,
-                                 get_default_compiler, customize_compiler)
-from distutils import debug
-from distutils.tests import support
-
-class FakeCompiler(object):
-    def library_dir_option(self, dir):
-        return "-L" + dir
-
-    def runtime_library_dir_option(self, dir):
-        return ["-cool", "-R" + dir]
-
-    def find_library_file(self, dirs, lib, debug=0):
-        return 'found'
-
-    def library_option(self, lib):
-        return "-l" + lib
-
-class CCompilerTestCase(support.EnvironGuard, unittest.TestCase):
-
-    def test_gen_lib_options(self):
-        compiler = FakeCompiler()
-        libdirs = ['lib1', 'lib2']
-        runlibdirs = ['runlib1']
-        libs = [os.path.join('dir', 'name'), 'name2']
-
-        opts = gen_lib_options(compiler, libdirs, runlibdirs, libs)
-        wanted = ['-Llib1', '-Llib2', '-cool', '-Rrunlib1', 'found',
-                  '-lname2']
-        self.assertEqual(opts, wanted)
-
-    def test_debug_print(self):
-
-        class MyCCompiler(CCompiler):
-            executables = {}
-
-        compiler = MyCCompiler()
-        with captured_stdout() as stdout:
-            compiler.debug_print('xxx')
-        stdout.seek(0)
-        self.assertEqual(stdout.read(), '')
-
-        debug.DEBUG = True
-        try:
-            with captured_stdout() as stdout:
-                compiler.debug_print('xxx')
-            stdout.seek(0)
-            self.assertEqual(stdout.read(), 'xxx\n')
-        finally:
-            debug.DEBUG = False
-
-    def test_customize_compiler(self):
-
-        # not testing if default compiler is not unix
-        if get_default_compiler() != 'unix':
-            return
-
-        os.environ['AR'] = 'my_ar'
-        os.environ['ARFLAGS'] = '-arflags'
-
-        # make sure AR gets caught
-        class compiler:
-            compiler_type = 'unix'
-
-            def set_executables(self, **kw):
-                self.exes = kw
-
-        comp = compiler()
-        customize_compiler(comp)
-        self.assertEqual(comp.exes['archiver'], 'my_ar -arflags')
-
-def test_suite():
-    return unittest.makeSuite(CCompilerTestCase)
-
-if __name__ == "__main__":
-    unittest.main(defaultTest="test_suite")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_check.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_check.py
deleted file mode 100644
index e0b82ca..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_check.py
+++ /dev/null
@@ -1,99 +0,0 @@
-"""Tests for distutils.command.check."""
-import unittest
-from test.test_support import run_unittest
-
-from distutils.command.check import check, HAS_DOCUTILS
-from distutils.tests import support
-from distutils.errors import DistutilsSetupError
-
-class CheckTestCase(support.LoggingSilencer,
-                    support.TempdirManager,
-                    unittest.TestCase):
-
-    def _run(self, metadata=None, **options):
-        if metadata is None:
-            metadata = {}
-        pkg_info, dist = self.create_dist(**metadata)
-        cmd = check(dist)
-        cmd.initialize_options()
-        for name, value in options.items():
-            setattr(cmd, name, value)
-        cmd.ensure_finalized()
-        cmd.run()
-        return cmd
-
-    def test_check_metadata(self):
-        # let's run the command with no metadata at all
-        # by default, check is checking the metadata
-        # should have some warnings
-        cmd = self._run()
-        self.assertEqual(cmd._warnings, 2)
-
-        # now let's add the required fields
-        # and run it again, to make sure we don't get
-        # any warning anymore
-        metadata = {'url': 'xxx', 'author': 'xxx',
-                    'author_email': 'xxx',
-                    'name': 'xxx', 'version': 'xxx'}
-        cmd = self._run(metadata)
-        self.assertEqual(cmd._warnings, 0)
-
-        # now with the strict mode, we should
-        # get an error if there are missing metadata
-        self.assertRaises(DistutilsSetupError, self._run, {}, **{'strict': 1})
-
-        # and of course, no error when all metadata are present
-        cmd = self._run(metadata, strict=1)
-        self.assertEqual(cmd._warnings, 0)
-
-    def test_check_document(self):
-        if not HAS_DOCUTILS: # won't test without docutils
-            return
-        pkg_info, dist = self.create_dist()
-        cmd = check(dist)
-
-        # let's see if it detects broken rest
-        broken_rest = 'title\n===\n\ntest'
-        msgs = cmd._check_rst_data(broken_rest)
-        self.assertEqual(len(msgs), 1)
-
-        # and non-broken rest
-        rest = 'title\n=====\n\ntest'
-        msgs = cmd._check_rst_data(rest)
-        self.assertEqual(len(msgs), 0)
-
-    def test_check_restructuredtext(self):
-        if not HAS_DOCUTILS: # won't test without docutils
-            return
-        # let's see if it detects broken rest in long_description
-        broken_rest = 'title\n===\n\ntest'
-        pkg_info, dist = self.create_dist(long_description=broken_rest)
-        cmd = check(dist)
-        cmd.check_restructuredtext()
-        self.assertEqual(cmd._warnings, 1)
-
-        # let's see if we have an error with strict=1
-        metadata = {'url': 'xxx', 'author': 'xxx',
-                    'author_email': 'xxx',
-                    'name': 'xxx', 'version': 'xxx',
-                    'long_description': broken_rest}
-        self.assertRaises(DistutilsSetupError, self._run, metadata,
-                          **{'strict': 1, 'restructuredtext': 1})
-
-        # and non-broken rest
-        metadata['long_description'] = 'title\n=====\n\ntest'
-        cmd = self._run(metadata, strict=1, restructuredtext=1)
-        self.assertEqual(cmd._warnings, 0)
-
-    def test_check_all(self):
-
-        metadata = {'url': 'xxx', 'author': 'xxx'}
-        self.assertRaises(DistutilsSetupError, self._run,
-                          {}, **{'strict': 1,
-                                 'restructuredtext': 1})
-
-def test_suite():
-    return unittest.makeSuite(CheckTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_clean.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_clean.py
deleted file mode 100644
index 5b22f44..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_clean.py
+++ /dev/null
@@ -1,51 +0,0 @@
-"""Tests for distutils.command.clean."""
-import sys
-import os
-import unittest
-import getpass
-
-from distutils.command.clean import clean
-from distutils.tests import support
-from test.test_support import run_unittest
-
-class cleanTestCase(support.TempdirManager,
-                    support.LoggingSilencer,
-                    unittest.TestCase):
-
-    def test_simple_run(self):
-        pkg_dir, dist = self.create_dist()
-        cmd = clean(dist)
-
-        # let's add some elements clean should remove
-        dirs = [(d, os.path.join(pkg_dir, d))
-                for d in ('build_temp', 'build_lib', 'bdist_base',
-                'build_scripts', 'build_base')]
-
-        for name, path in dirs:
-            os.mkdir(path)
-            setattr(cmd, name, path)
-            if name == 'build_base':
-                continue
-            for f in ('one', 'two', 'three'):
-                self.write_file(os.path.join(path, f))
-
-        # let's run the command
-        cmd.all = 1
-        cmd.ensure_finalized()
-        cmd.run()
-
-        # make sure the files where removed
-        for name, path in dirs:
-            self.assertTrue(not os.path.exists(path),
-                         '%s was not removed' % path)
-
-        # let's run the command again (should spit warnings but succeed)
-        cmd.all = 1
-        cmd.ensure_finalized()
-        cmd.run()
-
-def test_suite():
-    return unittest.makeSuite(cleanTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_cmd.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_cmd.py
deleted file mode 100644
index b20469b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_cmd.py
+++ /dev/null
@@ -1,127 +0,0 @@
-"""Tests for distutils.cmd."""
-import unittest
-import os
-from test.test_support import captured_stdout, run_unittest
-
-from distutils.cmd import Command
-from distutils.dist import Distribution
-from distutils.errors import DistutilsOptionError
-from distutils import debug
-
-class MyCmd(Command):
-    def initialize_options(self):
-        pass
-
-class CommandTestCase(unittest.TestCase):
-
-    def setUp(self):
-        dist = Distribution()
-        self.cmd = MyCmd(dist)
-
-    def test_ensure_string_list(self):
-
-        cmd = self.cmd
-        cmd.not_string_list = ['one', 2, 'three']
-        cmd.yes_string_list = ['one', 'two', 'three']
-        cmd.not_string_list2 = object()
-        cmd.yes_string_list2 = 'ok'
-        cmd.ensure_string_list('yes_string_list')
-        cmd.ensure_string_list('yes_string_list2')
-
-        self.assertRaises(DistutilsOptionError,
-                          cmd.ensure_string_list, 'not_string_list')
-
-        self.assertRaises(DistutilsOptionError,
-                          cmd.ensure_string_list, 'not_string_list2')
-
-    def test_make_file(self):
-
-        cmd = self.cmd
-
-        # making sure it raises when infiles is not a string or a list/tuple
-        self.assertRaises(TypeError, cmd.make_file,
-                          infiles=1, outfile='', func='func', args=())
-
-        # making sure execute gets called properly
-        def _execute(func, args, exec_msg, level):
-            self.assertEqual(exec_msg, 'generating out from in')
-        cmd.force = True
-        cmd.execute = _execute
-        cmd.make_file(infiles='in', outfile='out', func='func', args=())
-
-    def test_dump_options(self):
-
-        msgs = []
-        def _announce(msg, level):
-            msgs.append(msg)
-        cmd = self.cmd
-        cmd.announce = _announce
-        cmd.option1 = 1
-        cmd.option2 = 1
-        cmd.user_options = [('option1', '', ''), ('option2', '', '')]
-        cmd.dump_options()
-
-        wanted = ["command options for 'MyCmd':", '  option1 = 1',
-                  '  option2 = 1']
-        self.assertEqual(msgs, wanted)
-
-    def test_ensure_string(self):
-        cmd = self.cmd
-        cmd.option1 = 'ok'
-        cmd.ensure_string('option1')
-
-        cmd.option2 = None
-        cmd.ensure_string('option2', 'xxx')
-        self.assertTrue(hasattr(cmd, 'option2'))
-
-        cmd.option3 = 1
-        self.assertRaises(DistutilsOptionError, cmd.ensure_string, 'option3')
-
-    def test_ensure_string_list(self):
-        cmd = self.cmd
-        cmd.option1 = 'ok,dok'
-        cmd.ensure_string_list('option1')
-        self.assertEqual(cmd.option1, ['ok', 'dok'])
-
-        cmd.option2 = ['xxx', 'www']
-        cmd.ensure_string_list('option2')
-
-        cmd.option3 = ['ok', 2]
-        self.assertRaises(DistutilsOptionError, cmd.ensure_string_list,
-                          'option3')
-
-    def test_ensure_filename(self):
-        cmd = self.cmd
-        cmd.option1 = __file__
-        cmd.ensure_filename('option1')
-        cmd.option2 = 'xxx'
-        self.assertRaises(DistutilsOptionError, cmd.ensure_filename, 'option2')
-
-    def test_ensure_dirname(self):
-        cmd = self.cmd
-        cmd.option1 = os.path.dirname(__file__) or os.curdir
-        cmd.ensure_dirname('option1')
-        cmd.option2 = 'xxx'
-        self.assertRaises(DistutilsOptionError, cmd.ensure_dirname, 'option2')
-
-    def test_debug_print(self):
-        cmd = self.cmd
-        with captured_stdout() as stdout:
-            cmd.debug_print('xxx')
-        stdout.seek(0)
-        self.assertEqual(stdout.read(), '')
-
-        debug.DEBUG = True
-        try:
-            with captured_stdout() as stdout:
-                cmd.debug_print('xxx')
-            stdout.seek(0)
-            self.assertEqual(stdout.read(), 'xxx\n')
-        finally:
-            debug.DEBUG = False
-
-def test_suite():
-    return unittest.makeSuite(CommandTestCase)
-
-if __name__ == '__main__':
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_config.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_config.py
deleted file mode 100644
index 294b93f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_config.py
+++ /dev/null
@@ -1,123 +0,0 @@
-"""Tests for distutils.pypirc.pypirc."""
-import sys
-import os
-import unittest
-import tempfile
-import shutil
-
-from distutils.core import PyPIRCCommand
-from distutils.core import Distribution
-from distutils.log import set_threshold
-from distutils.log import WARN
-
-from distutils.tests import support
-from test.test_support import run_unittest
-
-PYPIRC = """\
-[distutils]
-
-index-servers =
-    server1
-    server2
-
-[server1]
-username:me
-password:secret
-
-[server2]
-username:meagain
-password: secret
-realm:acme
-repository:http://another.pypi/
-"""
-
-PYPIRC_OLD = """\
-[server-login]
-username:tarek
-password:secret
-"""
-
-WANTED = """\
-[distutils]
-index-servers =
-    pypi
-
-[pypi]
-username:tarek
-password:xxx
-"""
-
-
-class PyPIRCCommandTestCase(support.TempdirManager,
-                            support.LoggingSilencer,
-                            support.EnvironGuard,
-                            unittest.TestCase):
-
-    def setUp(self):
-        """Patches the environment."""
-        super(PyPIRCCommandTestCase, self).setUp()
-        self.tmp_dir = self.mkdtemp()
-        os.environ['HOME'] = self.tmp_dir
-        self.rc = os.path.join(self.tmp_dir, '.pypirc')
-        self.dist = Distribution()
-
-        class command(PyPIRCCommand):
-            def __init__(self, dist):
-                PyPIRCCommand.__init__(self, dist)
-            def initialize_options(self):
-                pass
-            finalize_options = initialize_options
-
-        self._cmd = command
-        self.old_threshold = set_threshold(WARN)
-
-    def tearDown(self):
-        """Removes the patch."""
-        set_threshold(self.old_threshold)
-        super(PyPIRCCommandTestCase, self).tearDown()
-
-    def test_server_registration(self):
-        # This test makes sure PyPIRCCommand knows how to:
-        # 1. handle several sections in .pypirc
-        # 2. handle the old format
-
-        # new format
-        self.write_file(self.rc, PYPIRC)
-        cmd = self._cmd(self.dist)
-        config = cmd._read_pypirc()
-
-        config = config.items()
-        config.sort()
-        waited = [('password', 'secret'), ('realm', 'pypi'),
-                  ('repository', 'http://pypi.python.org/pypi'),
-                  ('server', 'server1'), ('username', 'me')]
-        self.assertEqual(config, waited)
-
-        # old format
-        self.write_file(self.rc, PYPIRC_OLD)
-        config = cmd._read_pypirc()
-        config = config.items()
-        config.sort()
-        waited = [('password', 'secret'), ('realm', 'pypi'),
-                  ('repository', 'http://pypi.python.org/pypi'),
-                  ('server', 'server-login'), ('username', 'tarek')]
-        self.assertEqual(config, waited)
-
-    def test_server_empty_registration(self):
-        cmd = self._cmd(self.dist)
-        rc = cmd._get_rc_file()
-        self.assertTrue(not os.path.exists(rc))
-        cmd._store_pypirc('tarek', 'xxx')
-        self.assertTrue(os.path.exists(rc))
-        f = open(rc)
-        try:
-            content = f.read()
-            self.assertEqual(content, WANTED)
-        finally:
-            f.close()
-
-def test_suite():
-    return unittest.makeSuite(PyPIRCCommandTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_config_cmd.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_config_cmd.py
deleted file mode 100644
index 31b3c04..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_config_cmd.py
+++ /dev/null
@@ -1,90 +0,0 @@
-"""Tests for distutils.command.config."""
-import unittest
-import os
-import sys
-from test.test_support import run_unittest
-
-from distutils.command.config import dump_file, config
-from distutils.tests import support
-from distutils import log
-
-class ConfigTestCase(support.LoggingSilencer,
-                     support.TempdirManager,
-                     unittest.TestCase):
-
-    def _info(self, msg, *args):
-        for line in msg.splitlines():
-            self._logs.append(line)
-
-    def setUp(self):
-        super(ConfigTestCase, self).setUp()
-        self._logs = []
-        self.old_log = log.info
-        log.info = self._info
-
-    def tearDown(self):
-        log.info = self.old_log
-        super(ConfigTestCase, self).tearDown()
-
-    def test_dump_file(self):
-        this_file = os.path.splitext(__file__)[0] + '.py'
-        f = open(this_file)
-        try:
-            numlines = len(f.readlines())
-        finally:
-            f.close()
-
-        dump_file(this_file, 'I am the header')
-        self.assertEqual(len(self._logs), numlines+1)
-
-    def test_search_cpp(self):
-        if sys.platform == 'win32':
-            return
-        pkg_dir, dist = self.create_dist()
-        cmd = config(dist)
-
-        # simple pattern searches
-        match = cmd.search_cpp(pattern='xxx', body='// xxx')
-        self.assertEqual(match, 0)
-
-        match = cmd.search_cpp(pattern='_configtest', body='// xxx')
-        self.assertEqual(match, 1)
-
-    def test_finalize_options(self):
-        # finalize_options does a bit of transformation
-        # on options
-        pkg_dir, dist = self.create_dist()
-        cmd = config(dist)
-        cmd.include_dirs = 'one%stwo' % os.pathsep
-        cmd.libraries = 'one'
-        cmd.library_dirs = 'three%sfour' % os.pathsep
-        cmd.ensure_finalized()
-
-        self.assertEqual(cmd.include_dirs, ['one', 'two'])
-        self.assertEqual(cmd.libraries, ['one'])
-        self.assertEqual(cmd.library_dirs, ['three', 'four'])
-
-    def test_clean(self):
-        # _clean removes files
-        tmp_dir = self.mkdtemp()
-        f1 = os.path.join(tmp_dir, 'one')
-        f2 = os.path.join(tmp_dir, 'two')
-
-        self.write_file(f1, 'xxx')
-        self.write_file(f2, 'xxx')
-
-        for f in (f1, f2):
-            self.assertTrue(os.path.exists(f))
-
-        pkg_dir, dist = self.create_dist()
-        cmd = config(dist)
-        cmd._clean(f1, f2)
-
-        for f in (f1, f2):
-            self.assertTrue(not os.path.exists(f))
-
-def test_suite():
-    return unittest.makeSuite(ConfigTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_core.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_core.py
deleted file mode 100644
index 5c13efe..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_core.py
+++ /dev/null
@@ -1,108 +0,0 @@
-"""Tests for distutils.core."""
-
-import StringIO
-import distutils.core
-import os
-import shutil
-import sys
-import test.test_support
-from test.test_support import captured_stdout, run_unittest
-import unittest
-from distutils.tests import support
-
-# setup script that uses __file__
-setup_using___file__ = """\
-
-__file__
-
-from distutils.core import setup
-setup()
-"""
-
-setup_prints_cwd = """\
-
-import os
-print os.getcwd()
-
-from distutils.core import setup
-setup()
-"""
-
-
-class CoreTestCase(support.EnvironGuard, unittest.TestCase):
-
-    def setUp(self):
-        super(CoreTestCase, self).setUp()
-        self.old_stdout = sys.stdout
-        self.cleanup_testfn()
-        self.old_argv = sys.argv, sys.argv[:]
-
-    def tearDown(self):
-        sys.stdout = self.old_stdout
-        self.cleanup_testfn()
-        sys.argv = self.old_argv[0]
-        sys.argv[:] = self.old_argv[1]
-        super(CoreTestCase, self).tearDown()
-
-    def cleanup_testfn(self):
-        path = test.test_support.TESTFN
-        if os.path.isfile(path):
-            os.remove(path)
-        elif os.path.isdir(path):
-            shutil.rmtree(path)
-
-    def write_setup(self, text, path=test.test_support.TESTFN):
-        f = open(path, "w")
-        try:
-            f.write(text)
-        finally:
-            f.close()
-        return path
-
-    def test_run_setup_provides_file(self):
-        # Make sure the script can use __file__; if that's missing, the test
-        # setup.py script will raise NameError.
-        distutils.core.run_setup(
-            self.write_setup(setup_using___file__))
-
-    def test_run_setup_uses_current_dir(self):
-        # This tests that the setup script is run with the current directory
-        # as its own current directory; this was temporarily broken by a
-        # previous patch when TESTFN did not use the current directory.
-        sys.stdout = StringIO.StringIO()
-        cwd = os.getcwd()
-
-        # Create a directory and write the setup.py file there:
-        os.mkdir(test.test_support.TESTFN)
-        setup_py = os.path.join(test.test_support.TESTFN, "setup.py")
-        distutils.core.run_setup(
-            self.write_setup(setup_prints_cwd, path=setup_py))
-
-        output = sys.stdout.getvalue()
-        if output.endswith("\n"):
-            output = output[:-1]
-        self.assertEqual(cwd, output)
-
-    def test_debug_mode(self):
-        # this covers the code called when DEBUG is set
-        sys.argv = ['setup.py', '--name']
-        with captured_stdout() as stdout:
-            distutils.core.setup(name='bar')
-        stdout.seek(0)
-        self.assertEqual(stdout.read(), 'bar\n')
-
-        distutils.core.DEBUG = True
-        try:
-            with captured_stdout() as stdout:
-                distutils.core.setup(name='bar')
-        finally:
-            distutils.core.DEBUG = False
-        stdout.seek(0)
-        wanted = "options (after parsing config files):\n"
-        self.assertEqual(stdout.readlines()[0], wanted)
-
-def test_suite():
-    return unittest.makeSuite(CoreTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dep_util.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dep_util.py
deleted file mode 100644
index 53f33d4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dep_util.py
+++ /dev/null
@@ -1,81 +0,0 @@
-"""Tests for distutils.dep_util."""
-import unittest
-import os
-import time
-
-from distutils.dep_util import newer, newer_pairwise, newer_group
-from distutils.errors import DistutilsFileError
-from distutils.tests import support
-from test.test_support import run_unittest
-
-class DepUtilTestCase(support.TempdirManager, unittest.TestCase):
-
-    def test_newer(self):
-
-        tmpdir = self.mkdtemp()
-        new_file = os.path.join(tmpdir, 'new')
-        old_file = os.path.abspath(__file__)
-
-        # Raise DistutilsFileError if 'new_file' does not exist.
-        self.assertRaises(DistutilsFileError, newer, new_file, old_file)
-
-        # Return true if 'new_file' exists and is more recently modified than
-        # 'old_file', or if 'new_file' exists and 'old_file' doesn't.
-        self.write_file(new_file)
-        self.assertTrue(newer(new_file, 'I_dont_exist'))
-        self.assertTrue(newer(new_file, old_file))
-
-        # Return false if both exist and 'old_file' is the same age or younger
-        # than 'new_file'.
-        self.assertFalse(newer(old_file, new_file))
-
-    def test_newer_pairwise(self):
-        tmpdir = self.mkdtemp()
-        sources = os.path.join(tmpdir, 'sources')
-        targets = os.path.join(tmpdir, 'targets')
-        os.mkdir(sources)
-        os.mkdir(targets)
-        one = os.path.join(sources, 'one')
-        two = os.path.join(sources, 'two')
-        three = os.path.abspath(__file__)    # I am the old file
-        four = os.path.join(targets, 'four')
-        self.write_file(one)
-        self.write_file(two)
-        self.write_file(four)
-
-        self.assertEqual(newer_pairwise([one, two], [three, four]),
-                         ([one],[three]))
-
-    def test_newer_group(self):
-        tmpdir = self.mkdtemp()
-        sources = os.path.join(tmpdir, 'sources')
-        os.mkdir(sources)
-        one = os.path.join(sources, 'one')
-        two = os.path.join(sources, 'two')
-        three = os.path.join(sources, 'three')
-        old_file = os.path.abspath(__file__)
-
-        # return true if 'old_file' is out-of-date with respect to any file
-        # listed in 'sources'.
-        self.write_file(one)
-        self.write_file(two)
-        self.write_file(three)
-        self.assertTrue(newer_group([one, two, three], old_file))
-        self.assertFalse(newer_group([one, two, old_file], three))
-
-        # missing handling
-        os.remove(one)
-        self.assertRaises(OSError, newer_group, [one, two, old_file], three)
-
-        self.assertFalse(newer_group([one, two, old_file], three,
-                                     missing='ignore'))
-
-        self.assertTrue(newer_group([one, two, old_file], three,
-                                    missing='newer'))
-
-
-def test_suite():
-    return unittest.makeSuite(DepUtilTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dir_util.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dir_util.py
deleted file mode 100644
index 4ed93cc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dir_util.py
+++ /dev/null
@@ -1,116 +0,0 @@
-"""Tests for distutils.dir_util."""
-import unittest
-import os
-import stat
-import shutil
-import sys
-
-from distutils.dir_util import (mkpath, remove_tree, create_tree, copy_tree,
-                                ensure_relative)
-
-from distutils import log
-from distutils.tests import support
-from test.test_support import run_unittest
-
-class DirUtilTestCase(support.TempdirManager, unittest.TestCase):
-
-    def _log(self, msg, *args):
-        if len(args) > 0:
-            self._logs.append(msg % args)
-        else:
-            self._logs.append(msg)
-
-    def setUp(self):
-        super(DirUtilTestCase, self).setUp()
-        self._logs = []
-        tmp_dir = self.mkdtemp()
-        self.root_target = os.path.join(tmp_dir, 'deep')
-        self.target = os.path.join(self.root_target, 'here')
-        self.target2 = os.path.join(tmp_dir, 'deep2')
-        self.old_log = log.info
-        log.info = self._log
-
-    def tearDown(self):
-        log.info = self.old_log
-        super(DirUtilTestCase, self).tearDown()
-
-    def test_mkpath_remove_tree_verbosity(self):
-
-        mkpath(self.target, verbose=0)
-        wanted = []
-        self.assertEqual(self._logs, wanted)
-        remove_tree(self.root_target, verbose=0)
-
-        mkpath(self.target, verbose=1)
-        wanted = ['creating %s' % self.root_target,
-                  'creating %s' % self.target]
-        self.assertEqual(self._logs, wanted)
-        self._logs = []
-
-        remove_tree(self.root_target, verbose=1)
-        wanted = ["removing '%s' (and everything under it)" % self.root_target]
-        self.assertEqual(self._logs, wanted)
-
-    @unittest.skipIf(sys.platform.startswith('win'),
-                        "This test is only appropriate for POSIX-like systems.")
-    def test_mkpath_with_custom_mode(self):
-        # Get and set the current umask value for testing mode bits.
-        umask = os.umask(0o002)
-        os.umask(umask)
-        mkpath(self.target, 0o700)
-        self.assertEqual(
-            stat.S_IMODE(os.stat(self.target).st_mode), 0o700 & ~umask)
-        mkpath(self.target2, 0o555)
-        self.assertEqual(
-            stat.S_IMODE(os.stat(self.target2).st_mode), 0o555 & ~umask)
-
-    def test_create_tree_verbosity(self):
-
-        create_tree(self.root_target, ['one', 'two', 'three'], verbose=0)
-        self.assertEqual(self._logs, [])
-        remove_tree(self.root_target, verbose=0)
-
-        wanted = ['creating %s' % self.root_target]
-        create_tree(self.root_target, ['one', 'two', 'three'], verbose=1)
-        self.assertEqual(self._logs, wanted)
-
-        remove_tree(self.root_target, verbose=0)
-
-
-    def test_copy_tree_verbosity(self):
-
-        mkpath(self.target, verbose=0)
-
-        copy_tree(self.target, self.target2, verbose=0)
-        self.assertEqual(self._logs, [])
-
-        remove_tree(self.root_target, verbose=0)
-
-        mkpath(self.target, verbose=0)
-        a_file = os.path.join(self.target, 'ok.txt')
-        f = open(a_file, 'w')
-        try:
-            f.write('some content')
-        finally:
-            f.close()
-
-        wanted = ['copying %s -> %s' % (a_file, self.target2)]
-        copy_tree(self.target, self.target2, verbose=1)
-        self.assertEqual(self._logs, wanted)
-
-        remove_tree(self.root_target, verbose=0)
-        remove_tree(self.target2, verbose=0)
-
-    def test_ensure_relative(self):
-        if os.sep == '/':
-            self.assertEqual(ensure_relative('/home/foo'), 'home/foo')
-            self.assertEqual(ensure_relative('some/path'), 'some/path')
-        else:   # \\
-            self.assertEqual(ensure_relative('c:\\home\\foo'), 'c:home\\foo')
-            self.assertEqual(ensure_relative('home\\foo'), 'home\\foo')
-
-def test_suite():
-    return unittest.makeSuite(DirUtilTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dist.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dist.py
deleted file mode 100644
index 9dc937a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_dist.py
+++ /dev/null
@@ -1,436 +0,0 @@
-# -*- coding: utf8 -*-
-
-"""Tests for distutils.dist."""
-import os
-import StringIO
-import sys
-import unittest
-import warnings
-import textwrap
-
-from distutils.dist import Distribution, fix_help_options, DistributionMetadata
-from distutils.cmd import Command
-import distutils.dist
-from test.test_support import TESTFN, captured_stdout, run_unittest
-from distutils.tests import support
-
-class test_dist(Command):
-    """Sample distutils extension command."""
-
-    user_options = [
-        ("sample-option=", "S", "help text"),
-        ]
-
-    def initialize_options(self):
-        self.sample_option = None
-
-
-class TestDistribution(Distribution):
-    """Distribution subclasses that avoids the default search for
-    configuration files.
-
-    The ._config_files attribute must be set before
-    .parse_config_files() is called.
-    """
-
-    def find_config_files(self):
-        return self._config_files
-
-
-class DistributionTestCase(support.TempdirManager,
-                           support.LoggingSilencer,
-                           support.EnvironGuard,
-                           unittest.TestCase):
-
-    def setUp(self):
-        super(DistributionTestCase, self).setUp()
-        self.argv = sys.argv, sys.argv[:]
-        del sys.argv[1:]
-
-    def tearDown(self):
-        sys.argv = self.argv[0]
-        sys.argv[:] = self.argv[1]
-        super(DistributionTestCase, self).tearDown()
-
-    def create_distribution(self, configfiles=()):
-        d = TestDistribution()
-        d._config_files = configfiles
-        d.parse_config_files()
-        d.parse_command_line()
-        return d
-
-    def test_debug_mode(self):
-        with open(TESTFN, "w") as f:
-            f.write("[global]")
-            f.write("command_packages = foo.bar, splat")
-
-        files = [TESTFN]
-        sys.argv.append("build")
-
-        with captured_stdout() as stdout:
-            self.create_distribution(files)
-        stdout.seek(0)
-        self.assertEqual(stdout.read(), '')
-        distutils.dist.DEBUG = True
-        try:
-            with captured_stdout() as stdout:
-                self.create_distribution(files)
-            stdout.seek(0)
-            self.assertEqual(stdout.read(), '')
-        finally:
-            distutils.dist.DEBUG = False
-
-    def test_command_packages_unspecified(self):
-        sys.argv.append("build")
-        d = self.create_distribution()
-        self.assertEqual(d.get_command_packages(), ["distutils.command"])
-
-    def test_command_packages_cmdline(self):
-        from distutils.tests.test_dist import test_dist
-        sys.argv.extend(["--command-packages",
-                         "foo.bar,distutils.tests",
-                         "test_dist",
-                         "-Ssometext",
-                         ])
-        d = self.create_distribution()
-        # let's actually try to load our test command:
-        self.assertEqual(d.get_command_packages(),
-                         ["distutils.command", "foo.bar", "distutils.tests"])
-        cmd = d.get_command_obj("test_dist")
-        self.assertTrue(isinstance(cmd, test_dist))
-        self.assertEqual(cmd.sample_option, "sometext")
-
-    def test_command_packages_configfile(self):
-        sys.argv.append("build")
-        self.addCleanup(os.unlink, TESTFN)
-        f = open(TESTFN, "w")
-        try:
-            print >>f, "[global]"
-            print >>f, "command_packages = foo.bar, splat"
-        finally:
-            f.close()
-
-        d = self.create_distribution([TESTFN])
-        self.assertEqual(d.get_command_packages(),
-                         ["distutils.command", "foo.bar", "splat"])
-
-        # ensure command line overrides config:
-        sys.argv[1:] = ["--command-packages", "spork", "build"]
-        d = self.create_distribution([TESTFN])
-        self.assertEqual(d.get_command_packages(),
-                         ["distutils.command", "spork"])
-
-        # Setting --command-packages to '' should cause the default to
-        # be used even if a config file specified something else:
-        sys.argv[1:] = ["--command-packages", "", "build"]
-        d = self.create_distribution([TESTFN])
-        self.assertEqual(d.get_command_packages(), ["distutils.command"])
-
-    def test_write_pkg_file(self):
-        # Check DistributionMetadata handling of Unicode fields
-        tmp_dir = self.mkdtemp()
-        my_file = os.path.join(tmp_dir, 'f')
-        klass = Distribution
-
-        dist = klass(attrs={'author': u'Mister Café',
-                            'name': 'my.package',
-                            'maintainer': u'Café Junior',
-                            'description': u'Café torréfié',
-                            'long_description': u'Héhéhé'})
-
-
-        # let's make sure the file can be written
-        # with Unicode fields. they are encoded with
-        # PKG_INFO_ENCODING
-        dist.metadata.write_pkg_file(open(my_file, 'w'))
-
-        # regular ascii is of course always usable
-        dist = klass(attrs={'author': 'Mister Cafe',
-                            'name': 'my.package',
-                            'maintainer': 'Cafe Junior',
-                            'description': 'Cafe torrefie',
-                            'long_description': 'Hehehe'})
-
-        my_file2 = os.path.join(tmp_dir, 'f2')
-        dist.metadata.write_pkg_file(open(my_file, 'w'))
-
-    def test_empty_options(self):
-        # an empty options dictionary should not stay in the
-        # list of attributes
-        klass = Distribution
-
-        # catching warnings
-        warns = []
-        def _warn(msg):
-            warns.append(msg)
-
-        old_warn = warnings.warn
-        warnings.warn = _warn
-        try:
-            dist = klass(attrs={'author': 'xxx',
-                                'name': 'xxx',
-                                'version': 'xxx',
-                                'url': 'xxxx',
-                                'options': {}})
-        finally:
-            warnings.warn = old_warn
-
-        self.assertEqual(len(warns), 0)
-
-    def test_finalize_options(self):
-
-        attrs = {'keywords': 'one,two',
-                 'platforms': 'one,two'}
-
-        dist = Distribution(attrs=attrs)
-        dist.finalize_options()
-
-        # finalize_option splits platforms and keywords
-        self.assertEqual(dist.metadata.platforms, ['one', 'two'])
-        self.assertEqual(dist.metadata.keywords, ['one', 'two'])
-
-    def test_get_command_packages(self):
-        dist = Distribution()
-        self.assertEqual(dist.command_packages, None)
-        cmds = dist.get_command_packages()
-        self.assertEqual(cmds, ['distutils.command'])
-        self.assertEqual(dist.command_packages,
-                         ['distutils.command'])
-
-        dist.command_packages = 'one,two'
-        cmds = dist.get_command_packages()
-        self.assertEqual(cmds, ['distutils.command', 'one', 'two'])
-
-
-    def test_announce(self):
-        # make sure the level is known
-        dist = Distribution()
-        args = ('ok',)
-        kwargs = {'level': 'ok2'}
-        self.assertRaises(ValueError, dist.announce, args, kwargs)
-
-    def test_find_config_files_disable(self):
-        # Ticket #1180: Allow user to disable their home config file.
-        temp_home = self.mkdtemp()
-        if os.name == 'posix':
-            user_filename = os.path.join(temp_home, ".pydistutils.cfg")
-        else:
-            user_filename = os.path.join(temp_home, "pydistutils.cfg")
-
-        with open(user_filename, 'w') as f:
-            f.write('[distutils]\n')
-
-        def _expander(path):
-            return temp_home
-
-        old_expander = os.path.expanduser
-        os.path.expanduser = _expander
-        try:
-            d = distutils.dist.Distribution()
-            all_files = d.find_config_files()
-
-            d = distutils.dist.Distribution(attrs={'script_args':
-                                            ['--no-user-cfg']})
-            files = d.find_config_files()
-        finally:
-            os.path.expanduser = old_expander
-
-        # make sure --no-user-cfg disables the user cfg file
-        self.assertEqual(len(all_files)-1, len(files))
-
-
-class MetadataTestCase(support.TempdirManager, support.EnvironGuard,
-                       unittest.TestCase):
-
-    def setUp(self):
-        super(MetadataTestCase, self).setUp()
-        self.argv = sys.argv, sys.argv[:]
-
-    def tearDown(self):
-        sys.argv = self.argv[0]
-        sys.argv[:] = self.argv[1]
-        super(MetadataTestCase, self).tearDown()
-
-    def test_simple_metadata(self):
-        attrs = {"name": "package",
-                 "version": "1.0"}
-        dist = Distribution(attrs)
-        meta = self.format_metadata(dist)
-        self.assertTrue("Metadata-Version: 1.0" in meta)
-        self.assertTrue("provides:" not in meta.lower())
-        self.assertTrue("requires:" not in meta.lower())
-        self.assertTrue("obsoletes:" not in meta.lower())
-
-    def test_provides(self):
-        attrs = {"name": "package",
-                 "version": "1.0",
-                 "provides": ["package", "package.sub"]}
-        dist = Distribution(attrs)
-        self.assertEqual(dist.metadata.get_provides(),
-                         ["package", "package.sub"])
-        self.assertEqual(dist.get_provides(),
-                         ["package", "package.sub"])
-        meta = self.format_metadata(dist)
-        self.assertTrue("Metadata-Version: 1.1" in meta)
-        self.assertTrue("requires:" not in meta.lower())
-        self.assertTrue("obsoletes:" not in meta.lower())
-
-    def test_provides_illegal(self):
-        self.assertRaises(ValueError, Distribution,
-                          {"name": "package",
-                           "version": "1.0",
-                           "provides": ["my.pkg (splat)"]})
-
-    def test_requires(self):
-        attrs = {"name": "package",
-                 "version": "1.0",
-                 "requires": ["other", "another (==1.0)"]}
-        dist = Distribution(attrs)
-        self.assertEqual(dist.metadata.get_requires(),
-                         ["other", "another (==1.0)"])
-        self.assertEqual(dist.get_requires(),
-                         ["other", "another (==1.0)"])
-        meta = self.format_metadata(dist)
-        self.assertTrue("Metadata-Version: 1.1" in meta)
-        self.assertTrue("provides:" not in meta.lower())
-        self.assertTrue("Requires: other" in meta)
-        self.assertTrue("Requires: another (==1.0)" in meta)
-        self.assertTrue("obsoletes:" not in meta.lower())
-
-    def test_requires_illegal(self):
-        self.assertRaises(ValueError, Distribution,
-                          {"name": "package",
-                           "version": "1.0",
-                           "requires": ["my.pkg (splat)"]})
-
-    def test_obsoletes(self):
-        attrs = {"name": "package",
-                 "version": "1.0",
-                 "obsoletes": ["other", "another (<1.0)"]}
-        dist = Distribution(attrs)
-        self.assertEqual(dist.metadata.get_obsoletes(),
-                         ["other", "another (<1.0)"])
-        self.assertEqual(dist.get_obsoletes(),
-                         ["other", "another (<1.0)"])
-        meta = self.format_metadata(dist)
-        self.assertTrue("Metadata-Version: 1.1" in meta)
-        self.assertTrue("provides:" not in meta.lower())
-        self.assertTrue("requires:" not in meta.lower())
-        self.assertTrue("Obsoletes: other" in meta)
-        self.assertTrue("Obsoletes: another (<1.0)" in meta)
-
-    def test_obsoletes_illegal(self):
-        self.assertRaises(ValueError, Distribution,
-                          {"name": "package",
-                           "version": "1.0",
-                           "obsoletes": ["my.pkg (splat)"]})
-
-    def format_metadata(self, dist):
-        sio = StringIO.StringIO()
-        dist.metadata.write_pkg_file(sio)
-        return sio.getvalue()
-
-    def test_custom_pydistutils(self):
-        # fixes #2166
-        # make sure pydistutils.cfg is found
-        if os.name == 'posix':
-            user_filename = ".pydistutils.cfg"
-        else:
-            user_filename = "pydistutils.cfg"
-
-        temp_dir = self.mkdtemp()
-        user_filename = os.path.join(temp_dir, user_filename)
-        f = open(user_filename, 'w')
-        try:
-            f.write('.')
-        finally:
-            f.close()
-
-        try:
-            dist = Distribution()
-
-            # linux-style
-            if sys.platform in ('linux', 'darwin'):
-                os.environ['HOME'] = temp_dir
-                files = dist.find_config_files()
-                self.assertTrue(user_filename in files)
-
-            # win32-style
-            if sys.platform == 'win32':
-                # home drive should be found
-                os.environ['HOME'] = temp_dir
-                files = dist.find_config_files()
-                self.assertTrue(user_filename in files,
-                             '%r not found in %r' % (user_filename, files))
-        finally:
-            os.remove(user_filename)
-
-    def test_fix_help_options(self):
-        help_tuples = [('a', 'b', 'c', 'd'), (1, 2, 3, 4)]
-        fancy_options = fix_help_options(help_tuples)
-        self.assertEqual(fancy_options[0], ('a', 'b', 'c'))
-        self.assertEqual(fancy_options[1], (1, 2, 3))
-
-    def test_show_help(self):
-        # smoke test, just makes sure some help is displayed
-        dist = Distribution()
-        sys.argv = []
-        dist.help = 1
-        dist.script_name = 'setup.py'
-        with captured_stdout() as s:
-            dist.parse_command_line()
-
-        output = [line for line in s.getvalue().split('\n')
-                  if line.strip() != '']
-        self.assertTrue(len(output) > 0)
-
-    def test_long_description(self):
-        long_desc = textwrap.dedent("""\
-        example::
-              We start here
-            and continue here
-          and end here.""")
-        attrs = {"name": "package",
-                 "version": "1.0",
-                 "long_description": long_desc}
-
-        dist = distutils.dist.Distribution(attrs)
-        meta = self.format_metadata(dist)
-        meta = meta.replace('\n' + 8 * ' ', '\n')
-        self.assertTrue(long_desc in meta)
-
-    def test_read_metadata(self):
-        attrs = {"name": "package",
-                 "version": "1.0",
-                 "long_description": "desc",
-                 "description": "xxx",
-                 "download_url": "http://example.com",
-                 "keywords": ['one', 'two'],
-                 "requires": ['foo']}
-
-        dist = Distribution(attrs)
-        metadata = dist.metadata
-
-        # write it then reloads it
-        PKG_INFO = StringIO.StringIO()
-        metadata.write_pkg_file(PKG_INFO)
-        PKG_INFO.seek(0)
-        metadata.read_pkg_file(PKG_INFO)
-
-        self.assertEqual(metadata.name, "package")
-        self.assertEqual(metadata.version, "1.0")
-        self.assertEqual(metadata.description, "xxx")
-        self.assertEqual(metadata.download_url, 'http://example.com')
-        self.assertEqual(metadata.keywords, ['one', 'two'])
-        self.assertEqual(metadata.platforms, ['UNKNOWN'])
-        self.assertEqual(metadata.obsoletes, None)
-        self.assertEqual(metadata.requires, ['foo'])
-
-def test_suite():
-    suite = unittest.TestSuite()
-    suite.addTest(unittest.makeSuite(DistributionTestCase))
-    suite.addTest(unittest.makeSuite(MetadataTestCase))
-    return suite
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_file_util.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_file_util.py
deleted file mode 100644
index 8509045..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_file_util.py
+++ /dev/null
@@ -1,81 +0,0 @@
-"""Tests for distutils.file_util."""
-import unittest
-import os
-import shutil
-
-from distutils.file_util import move_file, write_file, copy_file
-from distutils import log
-from distutils.tests import support
-from test.test_support import run_unittest
-
-class FileUtilTestCase(support.TempdirManager, unittest.TestCase):
-
-    def _log(self, msg, *args):
-        if len(args) > 0:
-            self._logs.append(msg % args)
-        else:
-            self._logs.append(msg)
-
-    def setUp(self):
-        super(FileUtilTestCase, self).setUp()
-        self._logs = []
-        self.old_log = log.info
-        log.info = self._log
-        tmp_dir = self.mkdtemp()
-        self.source = os.path.join(tmp_dir, 'f1')
-        self.target = os.path.join(tmp_dir, 'f2')
-        self.target_dir = os.path.join(tmp_dir, 'd1')
-
-    def tearDown(self):
-        log.info = self.old_log
-        super(FileUtilTestCase, self).tearDown()
-
-    def test_move_file_verbosity(self):
-        f = open(self.source, 'w')
-        try:
-            f.write('some content')
-        finally:
-            f.close()
-
-        move_file(self.source, self.target, verbose=0)
-        wanted = []
-        self.assertEqual(self._logs, wanted)
-
-        # back to original state
-        move_file(self.target, self.source, verbose=0)
-
-        move_file(self.source, self.target, verbose=1)
-        wanted = ['moving %s -> %s' % (self.source, self.target)]
-        self.assertEqual(self._logs, wanted)
-
-        # back to original state
-        move_file(self.target, self.source, verbose=0)
-
-        self._logs = []
-        # now the target is a dir
-        os.mkdir(self.target_dir)
-        move_file(self.source, self.target_dir, verbose=1)
-        wanted = ['moving %s -> %s' % (self.source, self.target_dir)]
-        self.assertEqual(self._logs, wanted)
-
-    def test_write_file(self):
-        lines = ['a', 'b', 'c']
-        dir = self.mkdtemp()
-        foo = os.path.join(dir, 'foo')
-        write_file(foo, lines)
-        content = [line.strip() for line in open(foo).readlines()]
-        self.assertEqual(content, lines)
-
-    def test_copy_file(self):
-        src_dir = self.mkdtemp()
-        foo = os.path.join(src_dir, 'foo')
-        write_file(foo, 'content')
-        dst_dir = self.mkdtemp()
-        copy_file(foo, dst_dir)
-        self.assertTrue(os.path.exists(os.path.join(dst_dir, 'foo')))
-
-def test_suite():
-    return unittest.makeSuite(FileUtilTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_filelist.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_filelist.py
deleted file mode 100644
index c2921a0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_filelist.py
+++ /dev/null
@@ -1,85 +0,0 @@
-"""Tests for distutils.filelist."""
-from os.path import join
-import unittest
-from test.test_support import captured_stdout, run_unittest
-
-from distutils.filelist import glob_to_re, FileList
-from distutils import debug
-
-MANIFEST_IN = """\
-include ok
-include xo
-exclude xo
-include foo.tmp
-global-include *.x
-global-include *.txt
-global-exclude *.tmp
-recursive-include f *.oo
-recursive-exclude global *.x
-graft dir
-prune dir3
-"""
-
-class FileListTestCase(unittest.TestCase):
-
-    def test_glob_to_re(self):
-        # simple cases
-        self.assertEqual(glob_to_re('foo*'), 'foo[^/]*\\Z(?ms)')
-        self.assertEqual(glob_to_re('foo?'), 'foo[^/]\\Z(?ms)')
-        self.assertEqual(glob_to_re('foo??'), 'foo[^/][^/]\\Z(?ms)')
-
-        # special cases
-        self.assertEqual(glob_to_re(r'foo\\*'), r'foo\\\\[^/]*\Z(?ms)')
-        self.assertEqual(glob_to_re(r'foo\\\*'), r'foo\\\\\\[^/]*\Z(?ms)')
-        self.assertEqual(glob_to_re('foo????'), r'foo[^/][^/][^/][^/]\Z(?ms)')
-        self.assertEqual(glob_to_re(r'foo\\??'), r'foo\\\\[^/][^/]\Z(?ms)')
-
-    def test_process_template_line(self):
-        # testing  all MANIFEST.in template patterns
-        file_list = FileList()
-
-        # simulated file list
-        file_list.allfiles = ['foo.tmp', 'ok', 'xo', 'four.txt',
-                              join('global', 'one.txt'),
-                              join('global', 'two.txt'),
-                              join('global', 'files.x'),
-                              join('global', 'here.tmp'),
-                              join('f', 'o', 'f.oo'),
-                              join('dir', 'graft-one'),
-                              join('dir', 'dir2', 'graft2'),
-                              join('dir3', 'ok'),
-                              join('dir3', 'sub', 'ok.txt')
-                              ]
-
-        for line in MANIFEST_IN.split('\n'):
-            if line.strip() == '':
-                continue
-            file_list.process_template_line(line)
-
-        wanted = ['ok', 'four.txt', join('global', 'one.txt'),
-                  join('global', 'two.txt'), join('f', 'o', 'f.oo'),
-                  join('dir', 'graft-one'), join('dir', 'dir2', 'graft2')]
-
-        self.assertEqual(file_list.files, wanted)
-
-    def test_debug_print(self):
-        file_list = FileList()
-        with captured_stdout() as stdout:
-            file_list.debug_print('xxx')
-        stdout.seek(0)
-        self.assertEqual(stdout.read(), '')
-
-        debug.DEBUG = True
-        try:
-            with captured_stdout() as stdout:
-                file_list.debug_print('xxx')
-            stdout.seek(0)
-            self.assertEqual(stdout.read(), 'xxx\n')
-        finally:
-            debug.DEBUG = False
-
-def test_suite():
-    return unittest.makeSuite(FileListTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install.py
deleted file mode 100644
index 3ebae2d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install.py
+++ /dev/null
@@ -1,57 +0,0 @@
-"""Tests for distutils.command.install."""
-
-import os
-import unittest
-
-from test.test_support import run_unittest
-
-from distutils.command.install import install
-from distutils.core import Distribution
-
-from distutils.tests import support
-
-
-class InstallTestCase(support.TempdirManager, unittest.TestCase):
-
-    def test_home_installation_scheme(self):
-        # This ensure two things:
-        # - that --home generates the desired set of directory names
-        # - test --home is supported on all platforms
-        builddir = self.mkdtemp()
-        destination = os.path.join(builddir, "installation")
-
-        dist = Distribution({"name": "foopkg"})
-        # script_name need not exist, it just need to be initialized
-        dist.script_name = os.path.join(builddir, "setup.py")
-        dist.command_obj["build"] = support.DummyCommand(
-            build_base=builddir,
-            build_lib=os.path.join(builddir, "lib"),
-            )
-
-        cmd = install(dist)
-        cmd.home = destination
-        cmd.ensure_finalized()
-
-        self.assertEqual(cmd.install_base, destination)
-        self.assertEqual(cmd.install_platbase, destination)
-
-        def check_path(got, expected):
-            got = os.path.normpath(got)
-            expected = os.path.normpath(expected)
-            self.assertEqual(got, expected)
-
-        libdir = os.path.join(destination, "lib", "python")
-        check_path(cmd.install_lib, libdir)
-        check_path(cmd.install_platlib, libdir)
-        check_path(cmd.install_purelib, libdir)
-        check_path(cmd.install_headers,
-                   os.path.join(destination, "include", "python", "foopkg"))
-        check_path(cmd.install_scripts, os.path.join(destination, "bin"))
-        check_path(cmd.install_data, destination)
-
-
-def test_suite():
-    return unittest.makeSuite(InstallTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_data.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_data.py
deleted file mode 100644
index 3e1cf94..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_data.py
+++ /dev/null
@@ -1,77 +0,0 @@
-"""Tests for distutils.command.install_data."""
-import sys
-import os
-import unittest
-import getpass
-
-from distutils.command.install_data import install_data
-from distutils.tests import support
-from test.test_support import run_unittest
-
-class InstallDataTestCase(support.TempdirManager,
-                          support.LoggingSilencer,
-                          support.EnvironGuard,
-                          unittest.TestCase):
-
-    def test_simple_run(self):
-        pkg_dir, dist = self.create_dist()
-        cmd = install_data(dist)
-        cmd.install_dir = inst = os.path.join(pkg_dir, 'inst')
-
-        # data_files can contain
-        #  - simple files
-        #  - a tuple with a path, and a list of file
-        one = os.path.join(pkg_dir, 'one')
-        self.write_file(one, 'xxx')
-        inst2 = os.path.join(pkg_dir, 'inst2')
-        two = os.path.join(pkg_dir, 'two')
-        self.write_file(two, 'xxx')
-
-        cmd.data_files = [one, (inst2, [two])]
-        self.assertEqual(cmd.get_inputs(), [one, (inst2, [two])])
-
-        # let's run the command
-        cmd.ensure_finalized()
-        cmd.run()
-
-        # let's check the result
-        self.assertEqual(len(cmd.get_outputs()), 2)
-        rtwo = os.path.split(two)[-1]
-        self.assertTrue(os.path.exists(os.path.join(inst2, rtwo)))
-        rone = os.path.split(one)[-1]
-        self.assertTrue(os.path.exists(os.path.join(inst, rone)))
-        cmd.outfiles = []
-
-        # let's try with warn_dir one
-        cmd.warn_dir = 1
-        cmd.ensure_finalized()
-        cmd.run()
-
-        # let's check the result
-        self.assertEqual(len(cmd.get_outputs()), 2)
-        self.assertTrue(os.path.exists(os.path.join(inst2, rtwo)))
-        self.assertTrue(os.path.exists(os.path.join(inst, rone)))
-        cmd.outfiles = []
-
-        # now using root and empty dir
-        cmd.root = os.path.join(pkg_dir, 'root')
-        inst3 = os.path.join(cmd.install_dir, 'inst3')
-        inst4 = os.path.join(pkg_dir, 'inst4')
-        three = os.path.join(cmd.install_dir, 'three')
-        self.write_file(three, 'xx')
-        cmd.data_files = [one, (inst2, [two]),
-                          ('inst3', [three]),
-                          (inst4, [])]
-        cmd.ensure_finalized()
-        cmd.run()
-
-        # let's check the result
-        self.assertEqual(len(cmd.get_outputs()), 4)
-        self.assertTrue(os.path.exists(os.path.join(inst2, rtwo)))
-        self.assertTrue(os.path.exists(os.path.join(inst, rone)))
-
-def test_suite():
-    return unittest.makeSuite(InstallDataTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_headers.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_headers.py
deleted file mode 100644
index 7d14996..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_headers.py
+++ /dev/null
@@ -1,41 +0,0 @@
-"""Tests for distutils.command.install_headers."""
-import sys
-import os
-import unittest
-import getpass
-
-from distutils.command.install_headers import install_headers
-from distutils.tests import support
-from test.test_support import run_unittest
-
-class InstallHeadersTestCase(support.TempdirManager,
-                             support.LoggingSilencer,
-                             support.EnvironGuard,
-                             unittest.TestCase):
-
-    def test_simple_run(self):
-        # we have two headers
-        header_list = self.mkdtemp()
-        header1 = os.path.join(header_list, 'header1')
-        header2 = os.path.join(header_list, 'header2')
-        self.write_file(header1)
-        self.write_file(header2)
-        headers = [header1, header2]
-
-        pkg_dir, dist = self.create_dist(headers=headers)
-        cmd = install_headers(dist)
-        self.assertEqual(cmd.get_inputs(), headers)
-
-        # let's run the command
-        cmd.install_dir = os.path.join(pkg_dir, 'inst')
-        cmd.ensure_finalized()
-        cmd.run()
-
-        # let's check the results
-        self.assertEqual(len(cmd.get_outputs()), 2)
-
-def test_suite():
-    return unittest.makeSuite(InstallHeadersTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_lib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_lib.py
deleted file mode 100644
index 165566d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_lib.py
+++ /dev/null
@@ -1,107 +0,0 @@
-"""Tests for distutils.command.install_data."""
-import os
-import sys
-import unittest
-
-from distutils.command.install_lib import install_lib
-from distutils.extension import Extension
-from distutils.tests import support
-from distutils.errors import DistutilsOptionError
-from test.test_support import run_unittest
-
-class InstallLibTestCase(support.TempdirManager,
-                         support.LoggingSilencer,
-                         support.EnvironGuard,
-                         unittest.TestCase):
-
-    def test_finalize_options(self):
-        pkg_dir, dist = self.create_dist()
-        cmd = install_lib(dist)
-
-        cmd.finalize_options()
-        self.assertEqual(cmd.compile, 1)
-        self.assertEqual(cmd.optimize, 0)
-
-        # optimize must be 0, 1, or 2
-        cmd.optimize = 'foo'
-        self.assertRaises(DistutilsOptionError, cmd.finalize_options)
-        cmd.optimize = '4'
-        self.assertRaises(DistutilsOptionError, cmd.finalize_options)
-
-        cmd.optimize = '2'
-        cmd.finalize_options()
-        self.assertEqual(cmd.optimize, 2)
-
-    def _setup_byte_compile(self):
-        pkg_dir, dist = self.create_dist()
-        cmd = install_lib(dist)
-        cmd.compile = cmd.optimize = 1
-
-        f = os.path.join(pkg_dir, 'foo.py')
-        self.write_file(f, '# python file')
-        cmd.byte_compile([f])
-        return pkg_dir
-
-    @unittest.skipIf(sys.dont_write_bytecode, 'byte-compile not enabled')
-    def test_byte_compile(self):
-        pkg_dir = self._setup_byte_compile()
-        if sys.flags.optimize < 1:
-            self.assertTrue(os.path.exists(os.path.join(pkg_dir, 'foo.pyc')))
-        else:
-            self.assertTrue(os.path.exists(os.path.join(pkg_dir, 'foo.pyo')))
-
-    def test_get_outputs(self):
-        pkg_dir, dist = self.create_dist()
-        cmd = install_lib(dist)
-
-        # setting up a dist environment
-        cmd.compile = cmd.optimize = 1
-        cmd.install_dir = pkg_dir
-        f = os.path.join(pkg_dir, 'foo.py')
-        self.write_file(f, '# python file')
-        cmd.distribution.py_modules = [pkg_dir]
-        cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
-        cmd.distribution.packages = [pkg_dir]
-        cmd.distribution.script_name = 'setup.py'
-
-        # get_output should return 4 elements
-        self.assertTrue(len(cmd.get_outputs()) >= 2)
-
-    def test_get_inputs(self):
-        pkg_dir, dist = self.create_dist()
-        cmd = install_lib(dist)
-
-        # setting up a dist environment
-        cmd.compile = cmd.optimize = 1
-        cmd.install_dir = pkg_dir
-        f = os.path.join(pkg_dir, 'foo.py')
-        self.write_file(f, '# python file')
-        cmd.distribution.py_modules = [pkg_dir]
-        cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
-        cmd.distribution.packages = [pkg_dir]
-        cmd.distribution.script_name = 'setup.py'
-
-        # get_input should return 2 elements
-        self.assertEqual(len(cmd.get_inputs()), 2)
-
-    def test_dont_write_bytecode(self):
-        # makes sure byte_compile is not used
-        pkg_dir, dist = self.create_dist()
-        cmd = install_lib(dist)
-        cmd.compile = 1
-        cmd.optimize = 1
-
-        old_dont_write_bytecode = sys.dont_write_bytecode
-        sys.dont_write_bytecode = True
-        try:
-            cmd.byte_compile([])
-        finally:
-            sys.dont_write_bytecode = old_dont_write_bytecode
-
-        self.assertTrue('byte-compiling is disabled' in self.logs[0][1])
-
-def test_suite():
-    return unittest.makeSuite(InstallLibTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_scripts.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_scripts.py
deleted file mode 100644
index 2777c4f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_install_scripts.py
+++ /dev/null
@@ -1,82 +0,0 @@
-"""Tests for distutils.command.install_scripts."""
-
-import os
-import unittest
-
-from distutils.command.install_scripts import install_scripts
-from distutils.core import Distribution
-
-from distutils.tests import support
-from test.test_support import run_unittest
-
-
-class InstallScriptsTestCase(support.TempdirManager,
-                             support.LoggingSilencer,
-                             unittest.TestCase):
-
-    def test_default_settings(self):
-        dist = Distribution()
-        dist.command_obj["build"] = support.DummyCommand(
-            build_scripts="/foo/bar")
-        dist.command_obj["install"] = support.DummyCommand(
-            install_scripts="/splat/funk",
-            force=1,
-            skip_build=1,
-            )
-        cmd = install_scripts(dist)
-        self.assertTrue(not cmd.force)
-        self.assertTrue(not cmd.skip_build)
-        self.assertTrue(cmd.build_dir is None)
-        self.assertTrue(cmd.install_dir is None)
-
-        cmd.finalize_options()
-
-        self.assertTrue(cmd.force)
-        self.assertTrue(cmd.skip_build)
-        self.assertEqual(cmd.build_dir, "/foo/bar")
-        self.assertEqual(cmd.install_dir, "/splat/funk")
-
-    def test_installation(self):
-        source = self.mkdtemp()
-        expected = []
-
-        def write_script(name, text):
-            expected.append(name)
-            f = open(os.path.join(source, name), "w")
-            try:
-                f.write(text)
-            finally:
-                f.close()
-
-        write_script("script1.py", ("#! /usr/bin/env python2.3\n"
-                                    "# bogus script w/ Python sh-bang\n"
-                                    "pass\n"))
-        write_script("script2.py", ("#!/usr/bin/python\n"
-                                    "# bogus script w/ Python sh-bang\n"
-                                    "pass\n"))
-        write_script("shell.sh", ("#!/bin/sh\n"
-                                  "# bogus shell script w/ sh-bang\n"
-                                  "exit 0\n"))
-
-        target = self.mkdtemp()
-        dist = Distribution()
-        dist.command_obj["build"] = support.DummyCommand(build_scripts=source)
-        dist.command_obj["install"] = support.DummyCommand(
-            install_scripts=target,
-            force=1,
-            skip_build=1,
-            )
-        cmd = install_scripts(dist)
-        cmd.finalize_options()
-        cmd.run()
-
-        installed = os.listdir(target)
-        for name in expected:
-            self.assertTrue(name in installed)
-
-
-def test_suite():
-    return unittest.makeSuite(InstallScriptsTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_msvc9compiler.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_msvc9compiler.py
deleted file mode 100644
index e729983..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_msvc9compiler.py
+++ /dev/null
@@ -1,141 +0,0 @@
-"""Tests for distutils.msvc9compiler."""
-import sys
-import unittest
-import os
-
-from distutils.errors import DistutilsPlatformError
-from distutils.tests import support
-from test.test_support import run_unittest
-
-_MANIFEST = """\
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
-          manifestVersion="1.0">
-  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
-    <security>
-      <requestedPrivileges>
-        <requestedExecutionLevel level="asInvoker" uiAccess="false">
-        </requestedExecutionLevel>
-      </requestedPrivileges>
-    </security>
-  </trustInfo>
-  <dependency>
-    <dependentAssembly>
-      <assemblyIdentity type="win32" name="Microsoft.VC90.CRT"
-         version="9.0.21022.8" processorArchitecture="x86"
-         publicKeyToken="XXXX">
-      </assemblyIdentity>
-    </dependentAssembly>
-  </dependency>
-  <dependency>
-    <dependentAssembly>
-      <assemblyIdentity type="win32" name="Microsoft.VC90.MFC"
-        version="9.0.21022.8" processorArchitecture="x86"
-        publicKeyToken="XXXX"></assemblyIdentity>
-    </dependentAssembly>
-  </dependency>
-</assembly>
-"""
-
-_CLEANED_MANIFEST = """\
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
-          manifestVersion="1.0">
-  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
-    <security>
-      <requestedPrivileges>
-        <requestedExecutionLevel level="asInvoker" uiAccess="false">
-        </requestedExecutionLevel>
-      </requestedPrivileges>
-    </security>
-  </trustInfo>
-  <dependency>
-
-  </dependency>
-  <dependency>
-    <dependentAssembly>
-      <assemblyIdentity type="win32" name="Microsoft.VC90.MFC"
-        version="9.0.21022.8" processorArchitecture="x86"
-        publicKeyToken="XXXX"></assemblyIdentity>
-    </dependentAssembly>
-  </dependency>
-</assembly>"""
-
-if sys.platform=="win32":
-    from distutils.msvccompiler import get_build_version
-    if get_build_version()>=8.0:
-        SKIP_MESSAGE = None
-    else:
-        SKIP_MESSAGE = "These tests are only for MSVC8.0 or above"
-else:
-    SKIP_MESSAGE = "These tests are only for win32"
-
-@unittest.skipUnless(SKIP_MESSAGE is None, SKIP_MESSAGE)
-class msvc9compilerTestCase(support.TempdirManager,
-                            unittest.TestCase):
-
-    def test_no_compiler(self):
-        # makes sure query_vcvarsall throws
-        # a DistutilsPlatformError if the compiler
-        # is not found
-        from distutils.msvc9compiler import query_vcvarsall
-        def _find_vcvarsall(version):
-            return None
-
-        from distutils import msvc9compiler
-        old_find_vcvarsall = msvc9compiler.find_vcvarsall
-        msvc9compiler.find_vcvarsall = _find_vcvarsall
-        try:
-            self.assertRaises(DistutilsPlatformError, query_vcvarsall,
-                             'wont find this version')
-        finally:
-            msvc9compiler.find_vcvarsall = old_find_vcvarsall
-
-    def test_reg_class(self):
-        from distutils.msvc9compiler import Reg
-        self.assertRaises(KeyError, Reg.get_value, 'xxx', 'xxx')
-
-        # looking for values that should exist on all
-        # windows registeries versions.
-        path = r'Control Panel\Desktop'
-        v = Reg.get_value(path, u'dragfullwindows')
-        self.assertTrue(v in (u'0', u'1', u'2'))
-
-        import _winreg
-        HKCU = _winreg.HKEY_CURRENT_USER
-        keys = Reg.read_keys(HKCU, 'xxxx')
-        self.assertEqual(keys, None)
-
-        keys = Reg.read_keys(HKCU, r'Control Panel')
-        self.assertTrue('Desktop' in keys)
-
-    def test_remove_visual_c_ref(self):
-        from distutils.msvc9compiler import MSVCCompiler
-        tempdir = self.mkdtemp()
-        manifest = os.path.join(tempdir, 'manifest')
-        f = open(manifest, 'w')
-        try:
-            f.write(_MANIFEST)
-        finally:
-            f.close()
-
-        compiler = MSVCCompiler()
-        compiler._remove_visual_c_ref(manifest)
-
-        # see what we got
-        f = open(manifest)
-        try:
-            # removing trailing spaces
-            content = '\n'.join([line.rstrip() for line in f.readlines()])
-        finally:
-            f.close()
-
-        # makes sure the manifest was properly cleaned
-        self.assertEqual(content, _CLEANED_MANIFEST)
-
-
-def test_suite():
-    return unittest.makeSuite(msvc9compilerTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_register.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_register.py
deleted file mode 100644
index b792f8f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_register.py
+++ /dev/null
@@ -1,261 +0,0 @@
-"""Tests for distutils.command.register."""
-# -*- encoding: utf8 -*-
-import sys
-import os
-import unittest
-import getpass
-import urllib2
-import warnings
-
-from test.test_support import check_warnings, run_unittest
-
-from distutils.command import register as register_module
-from distutils.command.register import register
-from distutils.core import Distribution
-from distutils.errors import DistutilsSetupError
-
-from distutils.tests import support
-from distutils.tests.test_config import PYPIRC, PyPIRCCommandTestCase
-
-PYPIRC_NOPASSWORD = """\
-[distutils]
-
-index-servers =
-    server1
-
-[server1]
-username:me
-"""
-
-WANTED_PYPIRC = """\
-[distutils]
-index-servers =
-    pypi
-
-[pypi]
-username:tarek
-password:password
-"""
-
-class RawInputs(object):
-    """Fakes user inputs."""
-    def __init__(self, *answers):
-        self.answers = answers
-        self.index = 0
-
-    def __call__(self, prompt=''):
-        try:
-            return self.answers[self.index]
-        finally:
-            self.index += 1
-
-class FakeOpener(object):
-    """Fakes a PyPI server"""
-    def __init__(self):
-        self.reqs = []
-
-    def __call__(self, *args):
-        return self
-
-    def open(self, req):
-        self.reqs.append(req)
-        return self
-
-    def read(self):
-        return 'xxx'
-
-class RegisterTestCase(PyPIRCCommandTestCase):
-
-    def setUp(self):
-        super(RegisterTestCase, self).setUp()
-        # patching the password prompt
-        self._old_getpass = getpass.getpass
-        def _getpass(prompt):
-            return 'password'
-        getpass.getpass = _getpass
-        self.old_opener = urllib2.build_opener
-        self.conn = urllib2.build_opener = FakeOpener()
-
-    def tearDown(self):
-        getpass.getpass = self._old_getpass
-        urllib2.build_opener = self.old_opener
-        super(RegisterTestCase, self).tearDown()
-
-    def _get_cmd(self, metadata=None):
-        if metadata is None:
-            metadata = {'url': 'xxx', 'author': 'xxx',
-                        'author_email': 'xxx',
-                        'name': 'xxx', 'version': 'xxx'}
-        pkg_info, dist = self.create_dist(**metadata)
-        return register(dist)
-
-    def test_create_pypirc(self):
-        # this test makes sure a .pypirc file
-        # is created when requested.
-
-        # let's create a register instance
-        cmd = self._get_cmd()
-
-        # we shouldn't have a .pypirc file yet
-        self.assertTrue(not os.path.exists(self.rc))
-
-        # patching raw_input and getpass.getpass
-        # so register gets happy
-        #
-        # Here's what we are faking :
-        # use your existing login (choice 1.)
-        # Username : 'tarek'
-        # Password : 'password'
-        # Save your login (y/N)? : 'y'
-        inputs = RawInputs('1', 'tarek', 'y')
-        register_module.raw_input = inputs.__call__
-        # let's run the command
-        try:
-            cmd.run()
-        finally:
-            del register_module.raw_input
-
-        # we should have a brand new .pypirc file
-        self.assertTrue(os.path.exists(self.rc))
-
-        # with the content similar to WANTED_PYPIRC
-        f = open(self.rc)
-        try:
-            content = f.read()
-            self.assertEqual(content, WANTED_PYPIRC)
-        finally:
-            f.close()
-
-        # now let's make sure the .pypirc file generated
-        # really works : we shouldn't be asked anything
-        # if we run the command again
-        def _no_way(prompt=''):
-            raise AssertionError(prompt)
-        register_module.raw_input = _no_way
-
-        cmd.show_response = 1
-        cmd.run()
-
-        # let's see what the server received : we should
-        # have 2 similar requests
-        self.assertEqual(len(self.conn.reqs), 2)
-        req1 = dict(self.conn.reqs[0].headers)
-        req2 = dict(self.conn.reqs[1].headers)
-        self.assertEqual(req2['Content-length'], req1['Content-length'])
-        self.assertTrue('xxx' in self.conn.reqs[1].data)
-
-    def test_password_not_in_file(self):
-
-        self.write_file(self.rc, PYPIRC_NOPASSWORD)
-        cmd = self._get_cmd()
-        cmd._set_config()
-        cmd.finalize_options()
-        cmd.send_metadata()
-
-        # dist.password should be set
-        # therefore used afterwards by other commands
-        self.assertEqual(cmd.distribution.password, 'password')
-
-    def test_registering(self):
-        # this test runs choice 2
-        cmd = self._get_cmd()
-        inputs = RawInputs('2', 'tarek', 'tarek@ziade.org')
-        register_module.raw_input = inputs.__call__
-        try:
-            # let's run the command
-            cmd.run()
-        finally:
-            del register_module.raw_input
-
-        # we should have send a request
-        self.assertEqual(len(self.conn.reqs), 1)
-        req = self.conn.reqs[0]
-        headers = dict(req.headers)
-        self.assertEqual(headers['Content-length'], '608')
-        self.assertTrue('tarek' in req.data)
-
-    def test_password_reset(self):
-        # this test runs choice 3
-        cmd = self._get_cmd()
-        inputs = RawInputs('3', 'tarek@ziade.org')
-        register_module.raw_input = inputs.__call__
-        try:
-            # let's run the command
-            cmd.run()
-        finally:
-            del register_module.raw_input
-
-        # we should have send a request
-        self.assertEqual(len(self.conn.reqs), 1)
-        req = self.conn.reqs[0]
-        headers = dict(req.headers)
-        self.assertEqual(headers['Content-length'], '290')
-        self.assertTrue('tarek' in req.data)
-
-    def test_strict(self):
-        # testing the script option
-        # when on, the register command stops if
-        # the metadata is incomplete or if
-        # long_description is not reSt compliant
-
-        # empty metadata
-        cmd = self._get_cmd({})
-        cmd.ensure_finalized()
-        cmd.strict = 1
-        self.assertRaises(DistutilsSetupError, cmd.run)
-
-        # we don't test the reSt feature if docutils
-        # is not installed
-        try:
-            import docutils
-        except ImportError:
-            return
-
-        # metadata are OK but long_description is broken
-        metadata = {'url': 'xxx', 'author': 'xxx',
-                    'author_email': u'éxéxé',
-                    'name': 'xxx', 'version': 'xxx',
-                    'long_description': 'title\n==\n\ntext'}
-
-        cmd = self._get_cmd(metadata)
-        cmd.ensure_finalized()
-        cmd.strict = 1
-        self.assertRaises(DistutilsSetupError, cmd.run)
-
-        # now something that works
-        metadata['long_description'] = 'title\n=====\n\ntext'
-        cmd = self._get_cmd(metadata)
-        cmd.ensure_finalized()
-        cmd.strict = 1
-        inputs = RawInputs('1', 'tarek', 'y')
-        register_module.raw_input = inputs.__call__
-        # let's run the command
-        try:
-            cmd.run()
-        finally:
-            del register_module.raw_input
-
-        # strict is not by default
-        cmd = self._get_cmd()
-        cmd.ensure_finalized()
-        inputs = RawInputs('1', 'tarek', 'y')
-        register_module.raw_input = inputs.__call__
-        # let's run the command
-        try:
-            cmd.run()
-        finally:
-            del register_module.raw_input
-
-    def test_check_metadata_deprecated(self):
-        # makes sure make_metadata is deprecated
-        cmd = self._get_cmd()
-        with check_warnings() as w:
-            warnings.simplefilter("always")
-            cmd.check_metadata()
-            self.assertEqual(len(w.warnings), 1)
-
-def test_suite():
-    return unittest.makeSuite(RegisterTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_sdist.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_sdist.py
deleted file mode 100644
index 2b6a9dd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_sdist.py
+++ /dev/null
@@ -1,429 +0,0 @@
-"""Tests for distutils.command.sdist."""
-import os
-import unittest
-import shutil
-import zipfile
-import tarfile
-
-# zlib is not used here, but if it's not available
-# the tests that use zipfile may fail
-try:
-    import zlib
-except ImportError:
-    zlib = None
-
-try:
-    import grp
-    import pwd
-    UID_GID_SUPPORT = True
-except ImportError:
-    UID_GID_SUPPORT = False
-
-from os.path import join
-import sys
-import tempfile
-import warnings
-
-from test.test_support import captured_stdout, check_warnings, run_unittest
-
-from distutils.command.sdist import sdist, show_formats
-from distutils.core import Distribution
-from distutils.tests.test_config import PyPIRCCommandTestCase
-from distutils.errors import DistutilsExecError, DistutilsOptionError
-from distutils.spawn import find_executable
-from distutils.tests import support
-from distutils.log import WARN
-from distutils.archive_util import ARCHIVE_FORMATS
-
-SETUP_PY = """
-from distutils.core import setup
-import somecode
-
-setup(name='fake')
-"""
-
-MANIFEST = """\
-# file GENERATED by distutils, do NOT edit
-README
-inroot.txt
-setup.py
-data%(sep)sdata.dt
-scripts%(sep)sscript.py
-some%(sep)sfile.txt
-some%(sep)sother_file.txt
-somecode%(sep)s__init__.py
-somecode%(sep)sdoc.dat
-somecode%(sep)sdoc.txt
-"""
-
-class SDistTestCase(PyPIRCCommandTestCase):
-
-    def setUp(self):
-        # PyPIRCCommandTestCase creates a temp dir already
-        # and put it in self.tmp_dir
-        super(SDistTestCase, self).setUp()
-        # setting up an environment
-        self.old_path = os.getcwd()
-        os.mkdir(join(self.tmp_dir, 'somecode'))
-        os.mkdir(join(self.tmp_dir, 'dist'))
-        # a package, and a README
-        self.write_file((self.tmp_dir, 'README'), 'xxx')
-        self.write_file((self.tmp_dir, 'somecode', '__init__.py'), '#')
-        self.write_file((self.tmp_dir, 'setup.py'), SETUP_PY)
-        os.chdir(self.tmp_dir)
-
-    def tearDown(self):
-        # back to normal
-        os.chdir(self.old_path)
-        super(SDistTestCase, self).tearDown()
-
-    def get_cmd(self, metadata=None):
-        """Returns a cmd"""
-        if metadata is None:
-            metadata = {'name': 'fake', 'version': '1.0',
-                        'url': 'xxx', 'author': 'xxx',
-                        'author_email': 'xxx'}
-        dist = Distribution(metadata)
-        dist.script_name = 'setup.py'
-        dist.packages = ['somecode']
-        dist.include_package_data = True
-        cmd = sdist(dist)
-        cmd.dist_dir = 'dist'
-        def _warn(*args):
-            pass
-        cmd.warn = _warn
-        return dist, cmd
-
-    @unittest.skipUnless(zlib, "requires zlib")
-    def test_prune_file_list(self):
-        # this test creates a package with some vcs dirs in it
-        # and launch sdist to make sure they get pruned
-        # on all systems
-
-        # creating VCS directories with some files in them
-        os.mkdir(join(self.tmp_dir, 'somecode', '.svn'))
-        self.write_file((self.tmp_dir, 'somecode', '.svn', 'ok.py'), 'xxx')
-
-        os.mkdir(join(self.tmp_dir, 'somecode', '.hg'))
-        self.write_file((self.tmp_dir, 'somecode', '.hg',
-                         'ok'), 'xxx')
-
-        os.mkdir(join(self.tmp_dir, 'somecode', '.git'))
-        self.write_file((self.tmp_dir, 'somecode', '.git',
-                         'ok'), 'xxx')
-
-        # now building a sdist
-        dist, cmd = self.get_cmd()
-
-        # zip is available universally
-        # (tar might not be installed under win32)
-        cmd.formats = ['zip']
-
-        cmd.ensure_finalized()
-        cmd.run()
-
-        # now let's check what we have
-        dist_folder = join(self.tmp_dir, 'dist')
-        files = os.listdir(dist_folder)
-        self.assertEqual(files, ['fake-1.0.zip'])
-
-        zip_file = zipfile.ZipFile(join(dist_folder, 'fake-1.0.zip'))
-        try:
-            content = zip_file.namelist()
-        finally:
-            zip_file.close()
-
-        # making sure everything has been pruned correctly
-        self.assertEqual(len(content), 4)
-
-    @unittest.skipUnless(zlib, "requires zlib")
-    def test_make_distribution(self):
-
-        # check if tar and gzip are installed
-        if (find_executable('tar') is None or
-            find_executable('gzip') is None):
-            return
-
-        # now building a sdist
-        dist, cmd = self.get_cmd()
-
-        # creating a gztar then a tar
-        cmd.formats = ['gztar', 'tar']
-        cmd.ensure_finalized()
-        cmd.run()
-
-        # making sure we have two files
-        dist_folder = join(self.tmp_dir, 'dist')
-        result = os.listdir(dist_folder)
-        result.sort()
-        self.assertEqual(result, ['fake-1.0.tar', 'fake-1.0.tar.gz'] )
-
-        os.remove(join(dist_folder, 'fake-1.0.tar'))
-        os.remove(join(dist_folder, 'fake-1.0.tar.gz'))
-
-        # now trying a tar then a gztar
-        cmd.formats = ['tar', 'gztar']
-
-        cmd.ensure_finalized()
-        cmd.run()
-
-        result = os.listdir(dist_folder)
-        result.sort()
-        self.assertEqual(result, ['fake-1.0.tar', 'fake-1.0.tar.gz'])
-
-    @unittest.skipUnless(zlib, "requires zlib")
-    def test_add_defaults(self):
-
-        # http://bugs.python.org/issue2279
-
-        # add_default should also include
-        # data_files and package_data
-        dist, cmd = self.get_cmd()
-
-        # filling data_files by pointing files
-        # in package_data
-        dist.package_data = {'': ['*.cfg', '*.dat'],
-                             'somecode': ['*.txt']}
-        self.write_file((self.tmp_dir, 'somecode', 'doc.txt'), '#')
-        self.write_file((self.tmp_dir, 'somecode', 'doc.dat'), '#')
-
-        # adding some data in data_files
-        data_dir = join(self.tmp_dir, 'data')
-        os.mkdir(data_dir)
-        self.write_file((data_dir, 'data.dt'), '#')
-        some_dir = join(self.tmp_dir, 'some')
-        os.mkdir(some_dir)
-        self.write_file((self.tmp_dir, 'inroot.txt'), '#')
-        self.write_file((some_dir, 'file.txt'), '#')
-        self.write_file((some_dir, 'other_file.txt'), '#')
-
-        dist.data_files = [('data', ['data/data.dt',
-                                     'inroot.txt',
-                                     'notexisting']),
-                           'some/file.txt',
-                           'some/other_file.txt']
-
-        # adding a script
-        script_dir = join(self.tmp_dir, 'scripts')
-        os.mkdir(script_dir)
-        self.write_file((script_dir, 'script.py'), '#')
-        dist.scripts = [join('scripts', 'script.py')]
-
-        cmd.formats = ['zip']
-        cmd.use_defaults = True
-
-        cmd.ensure_finalized()
-        cmd.run()
-
-        # now let's check what we have
-        dist_folder = join(self.tmp_dir, 'dist')
-        files = os.listdir(dist_folder)
-        self.assertEqual(files, ['fake-1.0.zip'])
-
-        zip_file = zipfile.ZipFile(join(dist_folder, 'fake-1.0.zip'))
-        try:
-            content = zip_file.namelist()
-        finally:
-            zip_file.close()
-
-        # making sure everything was added
-        self.assertEqual(len(content), 11)
-
-        # checking the MANIFEST
-        f = open(join(self.tmp_dir, 'MANIFEST'))
-        try:
-            manifest = f.read()
-            self.assertEqual(manifest, MANIFEST % {'sep': os.sep})
-        finally:
-            f.close()
-
-    @unittest.skipUnless(zlib, "requires zlib")
-    def test_metadata_check_option(self):
-        # testing the `medata-check` option
-        dist, cmd = self.get_cmd(metadata={})
-
-        # this should raise some warnings !
-        # with the `check` subcommand
-        cmd.ensure_finalized()
-        cmd.run()
-        warnings = self.get_logs(WARN)
-        self.assertEqual(len(warnings), 2)
-
-        # trying with a complete set of metadata
-        self.clear_logs()
-        dist, cmd = self.get_cmd()
-        cmd.ensure_finalized()
-        cmd.metadata_check = 0
-        cmd.run()
-        warnings = self.get_logs(WARN)
-        self.assertEqual(len(warnings), 0)
-
-    def test_check_metadata_deprecated(self):
-        # makes sure make_metadata is deprecated
-        dist, cmd = self.get_cmd()
-        with check_warnings() as w:
-            warnings.simplefilter("always")
-            cmd.check_metadata()
-            self.assertEqual(len(w.warnings), 1)
-
-    def test_show_formats(self):
-        with captured_stdout() as stdout:
-            show_formats()
-
-        # the output should be a header line + one line per format
-        num_formats = len(ARCHIVE_FORMATS.keys())
-        output = [line for line in stdout.getvalue().split('\n')
-                  if line.strip().startswith('--formats=')]
-        self.assertEqual(len(output), num_formats)
-
-    def test_finalize_options(self):
-
-        dist, cmd = self.get_cmd()
-        cmd.finalize_options()
-
-        # default options set by finalize
-        self.assertEqual(cmd.manifest, 'MANIFEST')
-        self.assertEqual(cmd.template, 'MANIFEST.in')
-        self.assertEqual(cmd.dist_dir, 'dist')
-
-        # formats has to be a string splitable on (' ', ',') or
-        # a stringlist
-        cmd.formats = 1
-        self.assertRaises(DistutilsOptionError, cmd.finalize_options)
-        cmd.formats = ['zip']
-        cmd.finalize_options()
-
-        # formats has to be known
-        cmd.formats = 'supazipa'
-        self.assertRaises(DistutilsOptionError, cmd.finalize_options)
-
-    @unittest.skipUnless(zlib, "requires zlib")
-    @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
-    def test_make_distribution_owner_group(self):
-
-        # check if tar and gzip are installed
-        if (find_executable('tar') is None or
-            find_executable('gzip') is None):
-            return
-
-        # now building a sdist
-        dist, cmd = self.get_cmd()
-
-        # creating a gztar and specifying the owner+group
-        cmd.formats = ['gztar']
-        cmd.owner = pwd.getpwuid(0)[0]
-        cmd.group = grp.getgrgid(0)[0]
-        cmd.ensure_finalized()
-        cmd.run()
-
-        # making sure we have the good rights
-        archive_name = join(self.tmp_dir, 'dist', 'fake-1.0.tar.gz')
-        archive = tarfile.open(archive_name)
-        try:
-            for member in archive.getmembers():
-                self.assertEqual(member.uid, 0)
-                self.assertEqual(member.gid, 0)
-        finally:
-            archive.close()
-
-        # building a sdist again
-        dist, cmd = self.get_cmd()
-
-        # creating a gztar
-        cmd.formats = ['gztar']
-        cmd.ensure_finalized()
-        cmd.run()
-
-        # making sure we have the good rights
-        archive_name = join(self.tmp_dir, 'dist', 'fake-1.0.tar.gz')
-        archive = tarfile.open(archive_name)
-
-        # note that we are not testing the group ownership here
-        # because, depending on the platforms and the container
-        # rights (see #7408)
-        try:
-            for member in archive.getmembers():
-                self.assertEqual(member.uid, os.getuid())
-        finally:
-            archive.close()
-
-    @unittest.skipUnless(zlib, "requires zlib")
-    def test_get_file_list(self):
-        # make sure MANIFEST is recalculated
-        dist, cmd = self.get_cmd()
-
-        # filling data_files by pointing files in package_data
-        dist.package_data = {'somecode': ['*.txt']}
-        self.write_file((self.tmp_dir, 'somecode', 'doc.txt'), '#')
-        cmd.ensure_finalized()
-        cmd.run()
-
-        f = open(cmd.manifest)
-        try:
-            manifest = [line.strip() for line in f.read().split('\n')
-                        if line.strip() != '']
-        finally:
-            f.close()
-
-        self.assertEqual(len(manifest), 5)
-
-        # adding a file
-        self.write_file((self.tmp_dir, 'somecode', 'doc2.txt'), '#')
-
-        # make sure build_py is reinitialized, like a fresh run
-        build_py = dist.get_command_obj('build_py')
-        build_py.finalized = False
-        build_py.ensure_finalized()
-
-        cmd.run()
-
-        f = open(cmd.manifest)
-        try:
-            manifest2 = [line.strip() for line in f.read().split('\n')
-                         if line.strip() != '']
-        finally:
-            f.close()
-
-        # do we have the new file in MANIFEST ?
-        self.assertEqual(len(manifest2), 6)
-        self.assertIn('doc2.txt', manifest2[-1])
-
-    @unittest.skipUnless(zlib, "requires zlib")
-    def test_manifest_marker(self):
-        # check that autogenerated MANIFESTs have a marker
-        dist, cmd = self.get_cmd()
-        cmd.ensure_finalized()
-        cmd.run()
-
-        f = open(cmd.manifest)
-        try:
-            manifest = [line.strip() for line in f.read().split('\n')
-                        if line.strip() != '']
-        finally:
-            f.close()
-
-        self.assertEqual(manifest[0],
-                         '# file GENERATED by distutils, do NOT edit')
-
-    @unittest.skipUnless(zlib, "requires zlib")
-    def test_manual_manifest(self):
-        # check that a MANIFEST without a marker is left alone
-        dist, cmd = self.get_cmd()
-        cmd.ensure_finalized()
-        self.write_file((self.tmp_dir, cmd.manifest), 'README.manual')
-        cmd.run()
-
-        f = open(cmd.manifest)
-        try:
-            manifest = [line.strip() for line in f.read().split('\n')
-                        if line.strip() != '']
-        finally:
-            f.close()
-
-        self.assertEqual(manifest, ['README.manual'])
-
-def test_suite():
-    return unittest.makeSuite(SDistTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_spawn.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_spawn.py
deleted file mode 100644
index f41d353..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_spawn.py
+++ /dev/null
@@ -1,60 +0,0 @@
-"""Tests for distutils.spawn."""
-import unittest
-import os
-import time
-from test.test_support import captured_stdout, run_unittest
-
-from distutils.spawn import _nt_quote_args
-from distutils.spawn import spawn, find_executable
-from distutils.errors import DistutilsExecError
-from distutils.tests import support
-
-class SpawnTestCase(support.TempdirManager,
-                    support.LoggingSilencer,
-                    unittest.TestCase):
-
-    def test_nt_quote_args(self):
-
-        for (args, wanted) in ((['with space', 'nospace'],
-                                ['"with space"', 'nospace']),
-                               (['nochange', 'nospace'],
-                                ['nochange', 'nospace'])):
-            res = _nt_quote_args(args)
-            self.assertEqual(res, wanted)
-
-
-    @unittest.skipUnless(os.name in ('nt', 'posix'),
-                         'Runs only under posix or nt')
-    def test_spawn(self):
-        tmpdir = self.mkdtemp()
-
-        # creating something executable
-        # through the shell that returns 1
-        if os.name == 'posix':
-            exe = os.path.join(tmpdir, 'foo.sh')
-            self.write_file(exe, '#!/bin/sh\nexit 1')
-            os.chmod(exe, 0777)
-        else:
-            exe = os.path.join(tmpdir, 'foo.bat')
-            self.write_file(exe, 'exit 1')
-
-        os.chmod(exe, 0777)
-        self.assertRaises(DistutilsExecError, spawn, [exe])
-
-        # now something that works
-        if os.name == 'posix':
-            exe = os.path.join(tmpdir, 'foo.sh')
-            self.write_file(exe, '#!/bin/sh\nexit 0')
-            os.chmod(exe, 0777)
-        else:
-            exe = os.path.join(tmpdir, 'foo.bat')
-            self.write_file(exe, 'exit 0')
-
-        os.chmod(exe, 0777)
-        spawn([exe])  # should work without any error
-
-def test_suite():
-    return unittest.makeSuite(SpawnTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_sysconfig.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_sysconfig.py
deleted file mode 100644
index e25da32..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_sysconfig.py
+++ /dev/null
@@ -1,82 +0,0 @@
-"""Tests for distutils.sysconfig."""
-import os
-import test
-import unittest
-import shutil
-
-from distutils import sysconfig
-from distutils.tests import support
-from test.test_support import TESTFN
-
-class SysconfigTestCase(support.EnvironGuard,
-                        unittest.TestCase):
-    def setUp(self):
-        super(SysconfigTestCase, self).setUp()
-        self.makefile = None
-
-    def tearDown(self):
-        if self.makefile is not None:
-            os.unlink(self.makefile)
-        self.cleanup_testfn()
-        super(SysconfigTestCase, self).tearDown()
-
-    def cleanup_testfn(self):
-        path = test.test_support.TESTFN
-        if os.path.isfile(path):
-            os.remove(path)
-        elif os.path.isdir(path):
-            shutil.rmtree(path)
-
-    def test_get_python_lib(self):
-        lib_dir = sysconfig.get_python_lib()
-        # XXX doesn't work on Linux when Python was never installed before
-        #self.assertTrue(os.path.isdir(lib_dir), lib_dir)
-        # test for pythonxx.lib?
-        self.assertNotEqual(sysconfig.get_python_lib(),
-                            sysconfig.get_python_lib(prefix=TESTFN))
-        _sysconfig = __import__('sysconfig')
-        res = sysconfig.get_python_lib(True, True)
-        self.assertEqual(_sysconfig.get_path('platstdlib'), res)
-
-    def test_get_python_inc(self):
-        inc_dir = sysconfig.get_python_inc()
-        # This is not much of a test.  We make sure Python.h exists
-        # in the directory returned by get_python_inc() but we don't know
-        # it is the correct file.
-        self.assertTrue(os.path.isdir(inc_dir), inc_dir)
-        python_h = os.path.join(inc_dir, "Python.h")
-        self.assertTrue(os.path.isfile(python_h), python_h)
-
-    def test_parse_makefile_base(self):
-        self.makefile = test.test_support.TESTFN
-        fd = open(self.makefile, 'w')
-        try:
-            fd.write(r"CONFIG_ARGS=  '--arg1=optarg1' 'ENV=LIB'" '\n')
-            fd.write('VAR=$OTHER\nOTHER=foo')
-        finally:
-            fd.close()
-        d = sysconfig.parse_makefile(self.makefile)
-        self.assertEqual(d, {'CONFIG_ARGS': "'--arg1=optarg1' 'ENV=LIB'",
-                             'OTHER': 'foo'})
-
-    def test_parse_makefile_literal_dollar(self):
-        self.makefile = test.test_support.TESTFN
-        fd = open(self.makefile, 'w')
-        try:
-            fd.write(r"CONFIG_ARGS=  '--arg1=optarg1' 'ENV=\$$LIB'" '\n')
-            fd.write('VAR=$OTHER\nOTHER=foo')
-        finally:
-            fd.close()
-        d = sysconfig.parse_makefile(self.makefile)
-        self.assertEqual(d, {'CONFIG_ARGS': r"'--arg1=optarg1' 'ENV=\$LIB'",
-                             'OTHER': 'foo'})
-
-
-def test_suite():
-    suite = unittest.TestSuite()
-    suite.addTest(unittest.makeSuite(SysconfigTestCase))
-    return suite
-
-
-if __name__ == '__main__':
-    test.test_support.run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_text_file.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_text_file.py
deleted file mode 100644
index c831636..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_text_file.py
+++ /dev/null
@@ -1,107 +0,0 @@
-"""Tests for distutils.text_file."""
-import os
-import unittest
-from distutils.text_file import TextFile
-from distutils.tests import support
-from test.test_support import run_unittest
-
-TEST_DATA = """# test file
-
-line 3 \\
-# intervening comment
-  continues on next line
-"""
-
-class TextFileTestCase(support.TempdirManager, unittest.TestCase):
-
-    def test_class(self):
-        # old tests moved from text_file.__main__
-        # so they are really called by the buildbots
-
-        # result 1: no fancy options
-        result1 = ['# test file\n', '\n', 'line 3 \\\n',
-                   '# intervening comment\n',
-                   '  continues on next line\n']
-
-        # result 2: just strip comments
-        result2 = ["\n",
-                   "line 3 \\\n",
-                   "  continues on next line\n"]
-
-        # result 3: just strip blank lines
-        result3 = ["# test file\n",
-                   "line 3 \\\n",
-                   "# intervening comment\n",
-                   "  continues on next line\n"]
-
-        # result 4: default, strip comments, blank lines,
-        # and trailing whitespace
-        result4 = ["line 3 \\",
-                   "  continues on next line"]
-
-        # result 5: strip comments and blanks, plus join lines (but don't
-        # "collapse" joined lines
-        result5 = ["line 3   continues on next line"]
-
-        # result 6: strip comments and blanks, plus join lines (and
-        # "collapse" joined lines
-        result6 = ["line 3 continues on next line"]
-
-        def test_input(count, description, file, expected_result):
-            result = file.readlines()
-            self.assertEqual(result, expected_result)
-
-        tmpdir = self.mkdtemp()
-        filename = os.path.join(tmpdir, "test.txt")
-        out_file = open(filename, "w")
-        try:
-            out_file.write(TEST_DATA)
-        finally:
-            out_file.close()
-
-        in_file = TextFile(filename, strip_comments=0, skip_blanks=0,
-                           lstrip_ws=0, rstrip_ws=0)
-        try:
-            test_input(1, "no processing", in_file, result1)
-        finally:
-            in_file.close()
-
-        in_file = TextFile(filename, strip_comments=1, skip_blanks=0,
-                           lstrip_ws=0, rstrip_ws=0)
-        try:
-            test_input(2, "strip comments", in_file, result2)
-        finally:
-            in_file.close()
-
-        in_file = TextFile(filename, strip_comments=0, skip_blanks=1,
-                           lstrip_ws=0, rstrip_ws=0)
-        try:
-            test_input(3, "strip blanks", in_file, result3)
-        finally:
-            in_file.close()
-
-        in_file = TextFile(filename)
-        try:
-            test_input(4, "default processing", in_file, result4)
-        finally:
-            in_file.close()
-
-        in_file = TextFile(filename, strip_comments=1, skip_blanks=1,
-                           join_lines=1, rstrip_ws=1)
-        try:
-            test_input(5, "join lines without collapsing", in_file, result5)
-        finally:
-            in_file.close()
-
-        in_file = TextFile(filename, strip_comments=1, skip_blanks=1,
-                           join_lines=1, rstrip_ws=1, collapse_join=1)
-        try:
-            test_input(6, "join lines with collapsing", in_file, result6)
-        finally:
-            in_file.close()
-
-def test_suite():
-    return unittest.makeSuite(TextFileTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_unixccompiler.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_unixccompiler.py
deleted file mode 100644
index f7b9296..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_unixccompiler.py
+++ /dev/null
@@ -1,130 +0,0 @@
-"""Tests for distutils.unixccompiler."""
-import sys
-import unittest
-from test.test_support import run_unittest
-
-from distutils import sysconfig
-from distutils.unixccompiler import UnixCCompiler
-
-class UnixCCompilerTestCase(unittest.TestCase):
-
-    def setUp(self):
-        self._backup_platform = sys.platform
-        self._backup_get_config_var = sysconfig.get_config_var
-        class CompilerWrapper(UnixCCompiler):
-            def rpath_foo(self):
-                return self.runtime_library_dir_option('/foo')
-        self.cc = CompilerWrapper()
-
-    def tearDown(self):
-        sys.platform = self._backup_platform
-        sysconfig.get_config_var = self._backup_get_config_var
-
-    def test_runtime_libdir_option(self):
-
-        # not tested under windows
-        if sys.platform == 'win32':
-            return
-
-        # Issue#5900
-        #
-        # Ensure RUNPATH is added to extension modules with RPATH if
-        # GNU ld is used
-
-        # darwin
-        sys.platform = 'darwin'
-        self.assertEqual(self.cc.rpath_foo(), '-L/foo')
-
-        # hp-ux
-        sys.platform = 'hp-ux'
-        old_gcv = sysconfig.get_config_var
-        def gcv(v):
-            return 'xxx'
-        sysconfig.get_config_var = gcv
-        self.assertEqual(self.cc.rpath_foo(), ['+s', '-L/foo'])
-
-        def gcv(v):
-            return 'gcc'
-        sysconfig.get_config_var = gcv
-        self.assertEqual(self.cc.rpath_foo(), ['-Wl,+s', '-L/foo'])
-
-        def gcv(v):
-            return 'g++'
-        sysconfig.get_config_var = gcv
-        self.assertEqual(self.cc.rpath_foo(), ['-Wl,+s', '-L/foo'])
-
-        sysconfig.get_config_var = old_gcv
-
-        # irix646
-        sys.platform = 'irix646'
-        self.assertEqual(self.cc.rpath_foo(), ['-rpath', '/foo'])
-
-        # osf1V5
-        sys.platform = 'osf1V5'
-        self.assertEqual(self.cc.rpath_foo(), ['-rpath', '/foo'])
-
-        # GCC GNULD
-        sys.platform = 'bar'
-        def gcv(v):
-            if v == 'CC':
-                return 'gcc'
-            elif v == 'GNULD':
-                return 'yes'
-        sysconfig.get_config_var = gcv
-        self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo')
-
-        # GCC non-GNULD
-        sys.platform = 'bar'
-        def gcv(v):
-            if v == 'CC':
-                return 'gcc'
-            elif v == 'GNULD':
-                return 'no'
-        sysconfig.get_config_var = gcv
-        self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo')
-
-        # GCC GNULD with fully qualified configuration prefix
-        # see #7617
-        sys.platform = 'bar'
-        def gcv(v):
-            if v == 'CC':
-                return 'x86_64-pc-linux-gnu-gcc-4.4.2'
-            elif v == 'GNULD':
-                return 'yes'
-        sysconfig.get_config_var = gcv
-        self.assertEqual(self.cc.rpath_foo(), '-Wl,-R/foo')
-
-
-        # non-GCC GNULD
-        sys.platform = 'bar'
-        def gcv(v):
-            if v == 'CC':
-                return 'cc'
-            elif v == 'GNULD':
-                return 'yes'
-        sysconfig.get_config_var = gcv
-        self.assertEqual(self.cc.rpath_foo(), '-R/foo')
-
-        # non-GCC non-GNULD
-        sys.platform = 'bar'
-        def gcv(v):
-            if v == 'CC':
-                return 'cc'
-            elif v == 'GNULD':
-                return 'no'
-        sysconfig.get_config_var = gcv
-        self.assertEqual(self.cc.rpath_foo(), '-R/foo')
-
-        # AIX C/C++ linker
-        sys.platform = 'aix'
-        def gcv(v):
-            return 'xxx'
-        sysconfig.get_config_var = gcv
-        self.assertEqual(self.cc.rpath_foo(), '-R/foo')
-
-
-def test_suite():
-    return unittest.makeSuite(UnixCCompilerTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_upload.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_upload.py
deleted file mode 100644
index 51c2f05..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_upload.py
+++ /dev/null
@@ -1,131 +0,0 @@
-# -*- encoding: utf8 -*-
-"""Tests for distutils.command.upload."""
-import os
-import unittest
-from test.test_support import run_unittest
-
-from distutils.command import upload as upload_mod
-from distutils.command.upload import upload
-from distutils.core import Distribution
-
-from distutils.tests.test_config import PYPIRC, PyPIRCCommandTestCase
-
-PYPIRC_LONG_PASSWORD = """\
-[distutils]
-
-index-servers =
-    server1
-    server2
-
-[server1]
-username:me
-password:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-
-[server2]
-username:meagain
-password: secret
-realm:acme
-repository:http://another.pypi/
-"""
-
-
-PYPIRC_NOPASSWORD = """\
-[distutils]
-
-index-servers =
-    server1
-
-[server1]
-username:me
-"""
-
-class FakeOpen(object):
-
-    def __init__(self, url):
-        self.url = url
-        if not isinstance(url, str):
-            self.req = url
-        else:
-            self.req = None
-        self.msg = 'OK'
-
-    def getcode(self):
-        return 200
-
-
-class uploadTestCase(PyPIRCCommandTestCase):
-
-    def setUp(self):
-        super(uploadTestCase, self).setUp()
-        self.old_open = upload_mod.urlopen
-        upload_mod.urlopen = self._urlopen
-        self.last_open = None
-
-    def tearDown(self):
-        upload_mod.urlopen = self.old_open
-        super(uploadTestCase, self).tearDown()
-
-    def _urlopen(self, url):
-        self.last_open = FakeOpen(url)
-        return self.last_open
-
-    def test_finalize_options(self):
-
-        # new format
-        self.write_file(self.rc, PYPIRC)
-        dist = Distribution()
-        cmd = upload(dist)
-        cmd.finalize_options()
-        for attr, waited in (('username', 'me'), ('password', 'secret'),
-                             ('realm', 'pypi'),
-                             ('repository', 'http://pypi.python.org/pypi')):
-            self.assertEqual(getattr(cmd, attr), waited)
-
-    def test_saved_password(self):
-        # file with no password
-        self.write_file(self.rc, PYPIRC_NOPASSWORD)
-
-        # make sure it passes
-        dist = Distribution()
-        cmd = upload(dist)
-        cmd.finalize_options()
-        self.assertEqual(cmd.password, None)
-
-        # make sure we get it as well, if another command
-        # initialized it at the dist level
-        dist.password = 'xxx'
-        cmd = upload(dist)
-        cmd.finalize_options()
-        self.assertEqual(cmd.password, 'xxx')
-
-    def test_upload(self):
-        tmp = self.mkdtemp()
-        path = os.path.join(tmp, 'xxx')
-        self.write_file(path)
-        command, pyversion, filename = 'xxx', '2.6', path
-        dist_files = [(command, pyversion, filename)]
-        self.write_file(self.rc, PYPIRC_LONG_PASSWORD)
-
-        # lets run it
-        pkg_dir, dist = self.create_dist(dist_files=dist_files, author=u'dédé')
-        cmd = upload(dist)
-        cmd.ensure_finalized()
-        cmd.run()
-
-        # what did we send ?
-        self.assertIn('dédé', self.last_open.req.data)
-        headers = dict(self.last_open.req.headers)
-        self.assertEqual(headers['Content-length'], '2085')
-        self.assertTrue(headers['Content-type'].startswith('multipart/form-data'))
-        self.assertEqual(self.last_open.req.get_method(), 'POST')
-        self.assertEqual(self.last_open.req.get_full_url(),
-                         'http://pypi.python.org/pypi')
-        self.assertTrue('xxx' in self.last_open.req.data)
-        auth = self.last_open.req.headers['Authorization']
-        self.assertFalse('\n' in auth)
-
-def test_suite():
-    return unittest.makeSuite(uploadTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_util.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_util.py
deleted file mode 100644
index 84671b0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_util.py
+++ /dev/null
@@ -1,25 +0,0 @@
-"""Tests for distutils.util."""
-import sys
-import unittest
-from test.test_support import run_unittest
-
-from distutils.errors import DistutilsPlatformError, DistutilsByteCompileError
-from distutils.util import byte_compile
-
-class UtilTestCase(unittest.TestCase):
-
-    def test_dont_write_bytecode(self):
-        # makes sure byte_compile raise a DistutilsError
-        # if sys.dont_write_bytecode is True
-        old_dont_write_bytecode = sys.dont_write_bytecode
-        sys.dont_write_bytecode = True
-        try:
-            self.assertRaises(DistutilsByteCompileError, byte_compile, [])
-        finally:
-            sys.dont_write_bytecode = old_dont_write_bytecode
-
-def test_suite():
-    return unittest.makeSuite(UtilTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_version.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_version.py
deleted file mode 100644
index f08860d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_version.py
+++ /dev/null
@@ -1,71 +0,0 @@
-"""Tests for distutils.version."""
-import unittest
-from distutils.version import LooseVersion
-from distutils.version import StrictVersion
-from test.test_support import run_unittest
-
-class VersionTestCase(unittest.TestCase):
-
-    def test_prerelease(self):
-        version = StrictVersion('1.2.3a1')
-        self.assertEqual(version.version, (1, 2, 3))
-        self.assertEqual(version.prerelease, ('a', 1))
-        self.assertEqual(str(version), '1.2.3a1')
-
-        version = StrictVersion('1.2.0')
-        self.assertEqual(str(version), '1.2')
-
-    def test_cmp_strict(self):
-        versions = (('1.5.1', '1.5.2b2', -1),
-                    ('161', '3.10a', ValueError),
-                    ('8.02', '8.02', 0),
-                    ('3.4j', '1996.07.12', ValueError),
-                    ('3.2.pl0', '3.1.1.6', ValueError),
-                    ('2g6', '11g', ValueError),
-                    ('0.9', '2.2', -1),
-                    ('1.2.1', '1.2', 1),
-                    ('1.1', '1.2.2', -1),
-                    ('1.2', '1.1', 1),
-                    ('1.2.1', '1.2.2', -1),
-                    ('1.2.2', '1.2', 1),
-                    ('1.2', '1.2.2', -1),
-                    ('0.4.0', '0.4', 0),
-                    ('1.13++', '5.5.kw', ValueError))
-
-        for v1, v2, wanted in versions:
-            try:
-                res = StrictVersion(v1).__cmp__(StrictVersion(v2))
-            except ValueError:
-                if wanted is ValueError:
-                    continue
-                else:
-                    raise AssertionError(("cmp(%s, %s) "
-                                          "shouldn't raise ValueError")
-                                            % (v1, v2))
-            self.assertEqual(res, wanted,
-                             'cmp(%s, %s) should be %s, got %s' %
-                             (v1, v2, wanted, res))
-
-
-    def test_cmp(self):
-        versions = (('1.5.1', '1.5.2b2', -1),
-                    ('161', '3.10a', 1),
-                    ('8.02', '8.02', 0),
-                    ('3.4j', '1996.07.12', -1),
-                    ('3.2.pl0', '3.1.1.6', 1),
-                    ('2g6', '11g', -1),
-                    ('0.960923', '2.2beta29', -1),
-                    ('1.13++', '5.5.kw', -1))
-
-
-        for v1, v2, wanted in versions:
-            res = LooseVersion(v1).__cmp__(LooseVersion(v2))
-            self.assertEqual(res, wanted,
-                             'cmp(%s, %s) should be %s, got %s' %
-                             (v1, v2, wanted, res))
-
-def test_suite():
-    return unittest.makeSuite(VersionTestCase)
-
-if __name__ == "__main__":
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_versionpredicate.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_versionpredicate.py
deleted file mode 100644
index 0d4e03a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/tests/test_versionpredicate.py
+++ /dev/null
@@ -1,13 +0,0 @@
-"""Tests harness for distutils.versionpredicate.
-
-"""
-
-import distutils.versionpredicate
-import doctest
-from test.test_support import run_unittest
-
-def test_suite():
-    return doctest.DocTestSuite(distutils.versionpredicate)
-
-if __name__ == '__main__':
-    run_unittest(test_suite())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/text_file.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/text_file.py
deleted file mode 100644
index 7562909..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/text_file.py
+++ /dev/null
@@ -1,304 +0,0 @@
-"""text_file
-
-provides the TextFile class, which gives an interface to text files
-that (optionally) takes care of stripping comments, ignoring blank
-lines, and joining lines with backslashes."""
-
-__revision__ = "$Id$"
-
-import sys
-
-
-class TextFile:
-
-    """Provides a file-like object that takes care of all the things you
-       commonly want to do when processing a text file that has some
-       line-by-line syntax: strip comments (as long as "#" is your
-       comment character), skip blank lines, join adjacent lines by
-       escaping the newline (ie. backslash at end of line), strip
-       leading and/or trailing whitespace.  All of these are optional
-       and independently controllable.
-
-       Provides a 'warn()' method so you can generate warning messages that
-       report physical line number, even if the logical line in question
-       spans multiple physical lines.  Also provides 'unreadline()' for
-       implementing line-at-a-time lookahead.
-
-       Constructor is called as:
-
-           TextFile (filename=None, file=None, **options)
-
-       It bombs (RuntimeError) if both 'filename' and 'file' are None;
-       'filename' should be a string, and 'file' a file object (or
-       something that provides 'readline()' and 'close()' methods).  It is
-       recommended that you supply at least 'filename', so that TextFile
-       can include it in warning messages.  If 'file' is not supplied,
-       TextFile creates its own using the 'open()' builtin.
-
-       The options are all boolean, and affect the value returned by
-       'readline()':
-         strip_comments [default: true]
-           strip from "#" to end-of-line, as well as any whitespace
-           leading up to the "#" -- unless it is escaped by a backslash
-         lstrip_ws [default: false]
-           strip leading whitespace from each line before returning it
-         rstrip_ws [default: true]
-           strip trailing whitespace (including line terminator!) from
-           each line before returning it
-         skip_blanks [default: true}
-           skip lines that are empty *after* stripping comments and
-           whitespace.  (If both lstrip_ws and rstrip_ws are false,
-           then some lines may consist of solely whitespace: these will
-           *not* be skipped, even if 'skip_blanks' is true.)
-         join_lines [default: false]
-           if a backslash is the last non-newline character on a line
-           after stripping comments and whitespace, join the following line
-           to it to form one "logical line"; if N consecutive lines end
-           with a backslash, then N+1 physical lines will be joined to
-           form one logical line.
-         collapse_join [default: false]
-           strip leading whitespace from lines that are joined to their
-           predecessor; only matters if (join_lines and not lstrip_ws)
-
-       Note that since 'rstrip_ws' can strip the trailing newline, the
-       semantics of 'readline()' must differ from those of the builtin file
-       object's 'readline()' method!  In particular, 'readline()' returns
-       None for end-of-file: an empty string might just be a blank line (or
-       an all-whitespace line), if 'rstrip_ws' is true but 'skip_blanks' is
-       not."""
-
-    default_options = { 'strip_comments': 1,
-                        'skip_blanks':    1,
-                        'lstrip_ws':      0,
-                        'rstrip_ws':      1,
-                        'join_lines':     0,
-                        'collapse_join':  0,
-                      }
-
-    def __init__ (self, filename=None, file=None, **options):
-        """Construct a new TextFile object.  At least one of 'filename'
-           (a string) and 'file' (a file-like object) must be supplied.
-           They keyword argument options are described above and affect
-           the values returned by 'readline()'."""
-
-        if filename is None and file is None:
-            raise RuntimeError, \
-                  "you must supply either or both of 'filename' and 'file'"
-
-        # set values for all options -- either from client option hash
-        # or fallback to default_options
-        for opt in self.default_options.keys():
-            if opt in options:
-                setattr (self, opt, options[opt])
-
-            else:
-                setattr (self, opt, self.default_options[opt])
-
-        # sanity check client option hash
-        for opt in options.keys():
-            if opt not in self.default_options:
-                raise KeyError, "invalid TextFile option '%s'" % opt
-
-        if file is None:
-            self.open (filename)
-        else:
-            self.filename = filename
-            self.file = file
-            self.current_line = 0       # assuming that file is at BOF!
-
-        # 'linebuf' is a stack of lines that will be emptied before we
-        # actually read from the file; it's only populated by an
-        # 'unreadline()' operation
-        self.linebuf = []
-
-
-    def open (self, filename):
-        """Open a new file named 'filename'.  This overrides both the
-           'filename' and 'file' arguments to the constructor."""
-
-        self.filename = filename
-        self.file = open (self.filename, 'r')
-        self.current_line = 0
-
-
-    def close (self):
-        """Close the current file and forget everything we know about it
-           (filename, current line number)."""
-
-        self.file.close ()
-        self.file = None
-        self.filename = None
-        self.current_line = None
-
-
-    def gen_error (self, msg, line=None):
-        outmsg = []
-        if line is None:
-            line = self.current_line
-        outmsg.append(self.filename + ", ")
-        if isinstance(line, (list, tuple)):
-            outmsg.append("lines %d-%d: " % tuple (line))
-        else:
-            outmsg.append("line %d: " % line)
-        outmsg.append(str(msg))
-        return ''.join(outmsg)
-
-
-    def error (self, msg, line=None):
-        raise ValueError, "error: " + self.gen_error(msg, line)
-
-    def warn (self, msg, line=None):
-        """Print (to stderr) a warning message tied to the current logical
-           line in the current file.  If the current logical line in the
-           file spans multiple physical lines, the warning refers to the
-           whole range, eg. "lines 3-5".  If 'line' supplied, it overrides
-           the current line number; it may be a list or tuple to indicate a
-           range of physical lines, or an integer for a single physical
-           line."""
-        sys.stderr.write("warning: " + self.gen_error(msg, line) + "\n")
-
-
-    def readline (self):
-        """Read and return a single logical line from the current file (or
-           from an internal buffer if lines have previously been "unread"
-           with 'unreadline()').  If the 'join_lines' option is true, this
-           may involve reading multiple physical lines concatenated into a
-           single string.  Updates the current line number, so calling
-           'warn()' after 'readline()' emits a warning about the physical
-           line(s) just read.  Returns None on end-of-file, since the empty
-           string can occur if 'rstrip_ws' is true but 'strip_blanks' is
-           not."""
-
-        # If any "unread" lines waiting in 'linebuf', return the top
-        # one.  (We don't actually buffer read-ahead data -- lines only
-        # get put in 'linebuf' if the client explicitly does an
-        # 'unreadline()'.
-        if self.linebuf:
-            line = self.linebuf[-1]
-            del self.linebuf[-1]
-            return line
-
-        buildup_line = ''
-
-        while 1:
-            # read the line, make it None if EOF
-            line = self.file.readline()
-            if line == '': line = None
-
-            if self.strip_comments and line:
-
-                # Look for the first "#" in the line.  If none, never
-                # mind.  If we find one and it's the first character, or
-                # is not preceded by "\", then it starts a comment --
-                # strip the comment, strip whitespace before it, and
-                # carry on.  Otherwise, it's just an escaped "#", so
-                # unescape it (and any other escaped "#"'s that might be
-                # lurking in there) and otherwise leave the line alone.
-
-                pos = line.find("#")
-                if pos == -1:           # no "#" -- no comments
-                    pass
-
-                # It's definitely a comment -- either "#" is the first
-                # character, or it's elsewhere and unescaped.
-                elif pos == 0 or line[pos-1] != "\\":
-                    # Have to preserve the trailing newline, because it's
-                    # the job of a later step (rstrip_ws) to remove it --
-                    # and if rstrip_ws is false, we'd better preserve it!
-                    # (NB. this means that if the final line is all comment
-                    # and has no trailing newline, we will think that it's
-                    # EOF; I think that's OK.)
-                    eol = (line[-1] == '\n') and '\n' or ''
-                    line = line[0:pos] + eol
-
-                    # If all that's left is whitespace, then skip line
-                    # *now*, before we try to join it to 'buildup_line' --
-                    # that way constructs like
-                    #   hello \\
-                    #   # comment that should be ignored
-                    #   there
-                    # result in "hello there".
-                    if line.strip() == "":
-                        continue
-
-                else:                   # it's an escaped "#"
-                    line = line.replace("\\#", "#")
-
-
-            # did previous line end with a backslash? then accumulate
-            if self.join_lines and buildup_line:
-                # oops: end of file
-                if line is None:
-                    self.warn ("continuation line immediately precedes "
-                               "end-of-file")
-                    return buildup_line
-
-                if self.collapse_join:
-                    line = line.lstrip()
-                line = buildup_line + line
-
-                # careful: pay attention to line number when incrementing it
-                if isinstance(self.current_line, list):
-                    self.current_line[1] = self.current_line[1] + 1
-                else:
-                    self.current_line = [self.current_line,
-                                         self.current_line+1]
-            # just an ordinary line, read it as usual
-            else:
-                if line is None:        # eof
-                    return None
-
-                # still have to be careful about incrementing the line number!
-                if isinstance(self.current_line, list):
-                    self.current_line = self.current_line[1] + 1
-                else:
-                    self.current_line = self.current_line + 1
-
-
-            # strip whitespace however the client wants (leading and
-            # trailing, or one or the other, or neither)
-            if self.lstrip_ws and self.rstrip_ws:
-                line = line.strip()
-            elif self.lstrip_ws:
-                line = line.lstrip()
-            elif self.rstrip_ws:
-                line = line.rstrip()
-
-            # blank line (whether we rstrip'ed or not)? skip to next line
-            # if appropriate
-            if (line == '' or line == '\n') and self.skip_blanks:
-                continue
-
-            if self.join_lines:
-                if line[-1] == '\\':
-                    buildup_line = line[:-1]
-                    continue
-
-                if line[-2:] == '\\\n':
-                    buildup_line = line[0:-2] + '\n'
-                    continue
-
-            # well, I guess there's some actual content there: return it
-            return line
-
-    # readline ()
-
-
-    def readlines (self):
-        """Read and return the list of all logical lines remaining in the
-           current file."""
-
-        lines = []
-        while 1:
-            line = self.readline()
-            if line is None:
-                return lines
-            lines.append (line)
-
-
-    def unreadline (self, line):
-        """Push 'line' (a string) onto an internal buffer that will be
-           checked by future 'readline()' calls.  Handy for implementing
-           a parser with line-at-a-time lookahead."""
-
-        self.linebuf.append (line)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/unixccompiler.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/unixccompiler.py
deleted file mode 100644
index 41fb959..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/unixccompiler.py
+++ /dev/null
@@ -1,346 +0,0 @@
-"""distutils.unixccompiler
-
-Contains the UnixCCompiler class, a subclass of CCompiler that handles
-the "typical" Unix-style command-line C compiler:
-  * macros defined with -Dname[=value]
-  * macros undefined with -Uname
-  * include search directories specified with -Idir
-  * libraries specified with -lllib
-  * library search directories specified with -Ldir
-  * compile handled by 'cc' (or similar) executable with -c option:
-    compiles .c to .o
-  * link static library handled by 'ar' command (possibly with 'ranlib')
-  * link shared library handled by 'cc -shared'
-"""
-
-__revision__ = "$Id$"
-
-import os, sys, re
-from types import StringType, NoneType
-
-from distutils import sysconfig
-from distutils.dep_util import newer
-from distutils.ccompiler import \
-     CCompiler, gen_preprocess_options, gen_lib_options
-from distutils.errors import \
-     DistutilsExecError, CompileError, LibError, LinkError
-from distutils import log
-
-# XXX Things not currently handled:
-#   * optimization/debug/warning flags; we just use whatever's in Python's
-#     Makefile and live with it.  Is this adequate?  If not, we might
-#     have to have a bunch of subclasses GNUCCompiler, SGICCompiler,
-#     SunCCompiler, and I suspect down that road lies madness.
-#   * even if we don't know a warning flag from an optimization flag,
-#     we need some way for outsiders to feed preprocessor/compiler/linker
-#     flags in to us -- eg. a sysadmin might want to mandate certain flags
-#     via a site config file, or a user might want to set something for
-#     compiling this module distribution only via the setup.py command
-#     line, whatever.  As long as these options come from something on the
-#     current system, they can be as system-dependent as they like, and we
-#     should just happily stuff them into the preprocessor/compiler/linker
-#     options and carry on.
-
-def _darwin_compiler_fixup(compiler_so, cc_args):
-    """
-    This function will strip '-isysroot PATH' and '-arch ARCH' from the
-    compile flags if the user has specified one them in extra_compile_flags.
-
-    This is needed because '-arch ARCH' adds another architecture to the
-    build, without a way to remove an architecture. Furthermore GCC will
-    barf if multiple '-isysroot' arguments are present.
-    """
-    stripArch = stripSysroot = 0
-
-    compiler_so = list(compiler_so)
-    kernel_version = os.uname()[2] # 8.4.3
-    major_version = int(kernel_version.split('.')[0])
-
-    if major_version < 8:
-        # OSX before 10.4.0, these don't support -arch and -isysroot at
-        # all.
-        stripArch = stripSysroot = True
-    else:
-        stripArch = '-arch' in cc_args
-        stripSysroot = '-isysroot' in cc_args
-
-    if stripArch or 'ARCHFLAGS' in os.environ:
-        while 1:
-            try:
-                index = compiler_so.index('-arch')
-                # Strip this argument and the next one:
-                del compiler_so[index:index+2]
-            except ValueError:
-                break
-
-    if 'ARCHFLAGS' in os.environ and not stripArch:
-        # User specified different -arch flags in the environ,
-        # see also distutils.sysconfig
-        compiler_so = compiler_so + os.environ['ARCHFLAGS'].split()
-
-    if stripSysroot:
-        try:
-            index = compiler_so.index('-isysroot')
-            # Strip this argument and the next one:
-            del compiler_so[index:index+2]
-        except ValueError:
-            pass
-
-    # Check if the SDK that is used during compilation actually exists,
-    # the universal build requires the usage of a universal SDK and not all
-    # users have that installed by default.
-    sysroot = None
-    if '-isysroot' in cc_args:
-        idx = cc_args.index('-isysroot')
-        sysroot = cc_args[idx+1]
-    elif '-isysroot' in compiler_so:
-        idx = compiler_so.index('-isysroot')
-        sysroot = compiler_so[idx+1]
-
-    if sysroot and not os.path.isdir(sysroot):
-        log.warn("Compiling with an SDK that doesn't seem to exist: %s",
-                sysroot)
-        log.warn("Please check your Xcode installation")
-
-    return compiler_so
-
-class UnixCCompiler(CCompiler):
-
-    compiler_type = 'unix'
-
-    # These are used by CCompiler in two places: the constructor sets
-    # instance attributes 'preprocessor', 'compiler', etc. from them, and
-    # 'set_executable()' allows any of these to be set.  The defaults here
-    # are pretty generic; they will probably have to be set by an outsider
-    # (eg. using information discovered by the sysconfig about building
-    # Python extensions).
-    executables = {'preprocessor' : None,
-                   'compiler'     : ["cc"],
-                   'compiler_so'  : ["cc"],
-                   'compiler_cxx' : ["cc"],
-                   'linker_so'    : ["cc", "-shared"],
-                   'linker_exe'   : ["cc"],
-                   'archiver'     : ["ar", "-cr"],
-                   'ranlib'       : None,
-                  }
-
-    if sys.platform[:6] == "darwin":
-        executables['ranlib'] = ["ranlib"]
-
-    # Needed for the filename generation methods provided by the base
-    # class, CCompiler.  NB. whoever instantiates/uses a particular
-    # UnixCCompiler instance should set 'shared_lib_ext' -- we set a
-    # reasonable common default here, but it's not necessarily used on all
-    # Unices!
-
-    src_extensions = [".c",".C",".cc",".cxx",".cpp",".m"]
-    obj_extension = ".o"
-    static_lib_extension = ".a"
-    shared_lib_extension = ".so"
-    dylib_lib_extension = ".dylib"
-    static_lib_format = shared_lib_format = dylib_lib_format = "lib%s%s"
-    if sys.platform == "cygwin":
-        exe_extension = ".exe"
-
-    def preprocess(self, source,
-                   output_file=None, macros=None, include_dirs=None,
-                   extra_preargs=None, extra_postargs=None):
-        ignore, macros, include_dirs = \
-            self._fix_compile_args(None, macros, include_dirs)
-        pp_opts = gen_preprocess_options(macros, include_dirs)
-        pp_args = self.preprocessor + pp_opts
-        if output_file:
-            pp_args.extend(['-o', output_file])
-        if extra_preargs:
-            pp_args[:0] = extra_preargs
-        if extra_postargs:
-            pp_args.extend(extra_postargs)
-        pp_args.append(source)
-
-        # We need to preprocess: either we're being forced to, or we're
-        # generating output to stdout, or there's a target output file and
-        # the source file is newer than the target (or the target doesn't
-        # exist).
-        if self.force or output_file is None or newer(source, output_file):
-            if output_file:
-                self.mkpath(os.path.dirname(output_file))
-            try:
-                self.spawn(pp_args)
-            except DistutilsExecError, msg:
-                raise CompileError, msg
-
-    def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
-        compiler_so = self.compiler_so
-        if sys.platform == 'darwin':
-            compiler_so = _darwin_compiler_fixup(compiler_so, cc_args + extra_postargs)
-        try:
-            self.spawn(compiler_so + cc_args + [src, '-o', obj] +
-                       extra_postargs)
-        except DistutilsExecError, msg:
-            raise CompileError, msg
-
-    def create_static_lib(self, objects, output_libname,
-                          output_dir=None, debug=0, target_lang=None):
-        objects, output_dir = self._fix_object_args(objects, output_dir)
-
-        output_filename = \
-            self.library_filename(output_libname, output_dir=output_dir)
-
-        if self._need_link(objects, output_filename):
-            self.mkpath(os.path.dirname(output_filename))
-            self.spawn(self.archiver +
-                       [output_filename] +
-                       objects + self.objects)
-
-            # Not many Unices required ranlib anymore -- SunOS 4.x is, I
-            # think the only major Unix that does.  Maybe we need some
-            # platform intelligence here to skip ranlib if it's not
-            # needed -- or maybe Python's configure script took care of
-            # it for us, hence the check for leading colon.
-            if self.ranlib:
-                try:
-                    self.spawn(self.ranlib + [output_filename])
-                except DistutilsExecError, msg:
-                    raise LibError, msg
-        else:
-            log.debug("skipping %s (up-to-date)", output_filename)
-
-    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):
-        objects, output_dir = self._fix_object_args(objects, output_dir)
-        libraries, library_dirs, runtime_library_dirs = \
-            self._fix_lib_args(libraries, library_dirs, runtime_library_dirs)
-
-        lib_opts = gen_lib_options(self, library_dirs, runtime_library_dirs,
-                                   libraries)
-        if type(output_dir) not in (StringType, NoneType):
-            raise TypeError, "'output_dir' must be a string or None"
-        if output_dir is not None:
-            output_filename = os.path.join(output_dir, output_filename)
-
-        if self._need_link(objects, output_filename):
-            ld_args = (objects + self.objects +
-                       lib_opts + ['-o', output_filename])
-            if debug:
-                ld_args[:0] = ['-g']
-            if extra_preargs:
-                ld_args[:0] = extra_preargs
-            if extra_postargs:
-                ld_args.extend(extra_postargs)
-            self.mkpath(os.path.dirname(output_filename))
-            try:
-                if target_desc == CCompiler.EXECUTABLE:
-                    linker = self.linker_exe[:]
-                else:
-                    linker = self.linker_so[:]
-                if target_lang == "c++" and self.compiler_cxx:
-                    # skip over environment variable settings if /usr/bin/env
-                    # is used to set up the linker's environment.
-                    # This is needed on OSX. Note: this assumes that the
-                    # normal and C++ compiler have the same environment
-                    # settings.
-                    i = 0
-                    if os.path.basename(linker[0]) == "env":
-                        i = 1
-                        while '=' in linker[i]:
-                            i = i + 1
-
-                    linker[i] = self.compiler_cxx[i]
-
-                if sys.platform == 'darwin':
-                    linker = _darwin_compiler_fixup(linker, ld_args)
-
-                self.spawn(linker + ld_args)
-            except DistutilsExecError, msg:
-                raise LinkError, msg
-        else:
-            log.debug("skipping %s (up-to-date)", output_filename)
-
-    # -- Miscellaneous methods -----------------------------------------
-    # These are all used by the 'gen_lib_options() function, in
-    # ccompiler.py.
-
-    def library_dir_option(self, dir):
-        return "-L" + dir
-
-    def _is_gcc(self, compiler_name):
-        return "gcc" in compiler_name or "g++" in compiler_name
-
-    def runtime_library_dir_option(self, dir):
-        # XXX Hackish, at the very least.  See Python bug #445902:
-        # http://sourceforge.net/tracker/index.php
-        #   ?func=detail&aid=445902&group_id=5470&atid=105470
-        # Linkers on different platforms need different options to
-        # specify that directories need to be added to the list of
-        # directories searched for dependencies when a dynamic library
-        # is sought.  GCC has to be told to pass the -R option through
-        # to the linker, whereas other compilers just know this.
-        # Other compilers may need something slightly different.  At
-        # this time, there's no way to determine this information from
-        # 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":
-            # MacOSX's linker doesn't understand the -R flag at all
-            return "-L" + dir
-        elif sys.platform[:5] == "hp-ux":
-            if self._is_gcc(compiler):
-                return ["-Wl,+s", "-L" + dir]
-            return ["+s", "-L" + dir]
-        elif sys.platform[:7] == "irix646" or sys.platform[:6] == "osf1V5":
-            return ["-rpath", dir]
-        elif self._is_gcc(compiler):
-            return "-Wl,-R" + dir
-        else:
-            return "-R" + dir
-
-    def library_option(self, lib):
-        return "-l" + lib
-
-    def find_library_file(self, dirs, lib, debug=0):
-        shared_f = self.library_filename(lib, lib_type='shared')
-        dylib_f = self.library_filename(lib, lib_type='dylib')
-        static_f = self.library_filename(lib, lib_type='static')
-
-        if sys.platform == 'darwin':
-            # On OSX users can specify an alternate SDK using
-            # '-isysroot', calculate the SDK root if it is specified
-            # (and use it further on)
-            cflags = sysconfig.get_config_var('CFLAGS')
-            m = re.search(r'-isysroot\s+(\S+)', cflags)
-            if m is None:
-                sysroot = '/'
-            else:
-                sysroot = m.group(1)
-
-
-
-        for dir in dirs:
-            shared = os.path.join(dir, shared_f)
-            dylib = os.path.join(dir, dylib_f)
-            static = os.path.join(dir, static_f)
-
-            if sys.platform == 'darwin' and (
-                dir.startswith('/System/') or (
-                dir.startswith('/usr/') and not dir.startswith('/usr/local/'))):
-
-                shared = os.path.join(sysroot, dir[1:], shared_f)
-                dylib = os.path.join(sysroot, dir[1:], dylib_f)
-                static = os.path.join(sysroot, dir[1:], static_f)
-
-            # We're second-guessing the linker here, with not much hard
-            # data to go on: GCC seems to prefer the shared library, so I'm
-            # assuming that *all* Unix C compilers do.  And of course I'm
-            # ignoring even GCC's "-static" option.  So sue me.
-            if os.path.exists(dylib):
-                return dylib
-            elif os.path.exists(shared):
-                return shared
-            elif os.path.exists(static):
-                return static
-
-        # Oops, didn't find it in *any* of 'dirs'
-        return None
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/util.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/util.py
deleted file mode 100644
index a05e2db..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/util.py
+++ /dev/null
@@ -1,567 +0,0 @@
-"""distutils.util
-
-Miscellaneous utility functions -- anything that doesn't fit into
-one of the other *util.py modules.
-"""
-
-__revision__ = "$Id$"
-
-import sys, os, string, re
-from distutils.errors import DistutilsPlatformError
-from distutils.dep_util import newer
-from distutils.spawn import spawn
-from distutils import log
-from distutils.errors import DistutilsByteCompileError
-
-def get_platform ():
-    """Return a string that identifies the current platform.  This is used
-    mainly to distinguish platform-specific build directories and
-    platform-specific built distributions.  Typically includes the OS name
-    and version and the architecture (as supplied by 'os.uname()'),
-    although the exact information included depends on the OS; eg. for IRIX
-    the architecture isn't particularly important (IRIX only runs on SGI
-    hardware), but for Linux the kernel version isn't particularly
-    important.
-
-    Examples of returned values:
-       linux-i586
-       linux-alpha (?)
-       solaris-2.6-sun4u
-       irix-5.3
-       irix64-6.2
-
-    Windows will return one of:
-       win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc)
-       win-ia64 (64bit Windows on Itanium)
-       win32 (all others - specifically, sys.platform is returned)
-
-    For other non-POSIX platforms, currently just returns 'sys.platform'.
-    """
-    if os.name == 'nt':
-        # sniff sys.version for architecture.
-        prefix = " bit ("
-        i = string.find(sys.version, prefix)
-        if i == -1:
-            return sys.platform
-        j = string.find(sys.version, ")", i)
-        look = sys.version[i+len(prefix):j].lower()
-        if look=='amd64':
-            return 'win-amd64'
-        if look=='itanium':
-            return 'win-ia64'
-        return sys.platform
-
-    if os.name != "posix" or not hasattr(os, 'uname'):
-        # XXX what about the architecture? NT is Intel or Alpha,
-        # Mac OS is M68k or PPC, etc.
-        return sys.platform
-
-    # Try to distinguish various flavours of Unix
-
-    (osname, host, release, version, machine) = os.uname()
-
-    # Convert the OS name to lowercase, remove '/' characters
-    # (to accommodate BSD/OS), and translate spaces (for "Power Macintosh")
-    osname = string.lower(osname)
-    osname = string.replace(osname, '/', '')
-    machine = string.replace(machine, ' ', '_')
-    machine = string.replace(machine, '/', '-')
-
-    if osname[:5] == "linux":
-        # At least on Linux/Intel, 'machine' is the processor --
-        # i386, etc.
-        # XXX what about Alpha, SPARC, etc?
-        return  "%s-%s" % (osname, machine)
-    elif osname[:5] == "sunos":
-        if release[0] >= "5":           # SunOS 5 == Solaris 2
-            osname = "solaris"
-            release = "%d.%s" % (int(release[0]) - 3, release[2:])
-        # fall through to standard osname-release-machine representation
-    elif osname[:4] == "irix":              # could be "irix64"!
-        return "%s-%s" % (osname, release)
-    elif osname[:3] == "aix":
-        return "%s-%s.%s" % (osname, version, release)
-    elif osname[:6] == "cygwin":
-        osname = "cygwin"
-        rel_re = re.compile (r'[\d.]+')
-        m = rel_re.match(release)
-        if m:
-            release = m.group()
-    elif osname[:6] == "darwin":
-        #
-        # For our purposes, we'll assume that the system version from
-        # distutils' perspective is what MACOSX_DEPLOYMENT_TARGET is set
-        # to. This makes the compatibility story a bit more sane because the
-        # machine is going to compile and link as if it were
-        # MACOSX_DEPLOYMENT_TARGET.
-        from distutils.sysconfig import get_config_vars
-        cfgvars = get_config_vars()
-
-        macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET')
-
-        if 1:
-            # Always calculate the release of the running machine,
-            # needed to determine if we can build fat binaries or not.
-
-            macrelease = macver
-            # Get the system version. Reading this plist is a documented
-            # way to get the system version (see the documentation for
-            # the Gestalt Manager)
-            try:
-                f = open('/System/Library/CoreServices/SystemVersion.plist')
-            except IOError:
-                # We're on a plain darwin box, fall back to the default
-                # behaviour.
-                pass
-            else:
-                try:
-                    m = re.search(
-                            r'<key>ProductUserVisibleVersion</key>\s*' +
-                            r'<string>(.*?)</string>', f.read())
-                    if m is not None:
-                        macrelease = '.'.join(m.group(1).split('.')[:2])
-                    # else: fall back to the default behaviour
-                finally:
-                    f.close()
-
-        if not macver:
-            macver = macrelease
-
-        if macver:
-            from distutils.sysconfig import get_config_vars
-            release = macver
-            osname = "macosx"
-
-            if (macrelease + '.') >= '10.4.' and \
-                    '-arch' in get_config_vars().get('CFLAGS', '').strip():
-                # The universal build will build fat binaries, but not on
-                # systems before 10.4
-                #
-                # Try to detect 4-way universal builds, those have machine-type
-                # 'universal' instead of 'fat'.
-
-                machine = 'fat'
-                cflags = get_config_vars().get('CFLAGS')
-
-                archs = re.findall('-arch\s+(\S+)', cflags)
-                archs = tuple(sorted(set(archs)))
-
-                if len(archs) == 1:
-                    machine = archs[0]
-                elif archs == ('i386', 'ppc'):
-                    machine = 'fat'
-                elif archs == ('i386', 'x86_64'):
-                    machine = 'intel'
-                elif archs == ('i386', 'ppc', 'x86_64'):
-                    machine = 'fat3'
-                elif archs == ('ppc64', 'x86_64'):
-                    machine = 'fat64'
-                elif archs == ('i386', 'ppc', 'ppc64', 'x86_64'):
-                    machine = 'universal'
-                else:
-                    raise ValueError(
-                       "Don't know machine value for archs=%r"%(archs,))
-
-            elif machine == 'i386':
-                # On OSX the machine type returned by uname is always the
-                # 32-bit variant, even if the executable architecture is
-                # the 64-bit variant
-                if sys.maxint >= 2**32:
-                    machine = 'x86_64'
-
-            elif machine in ('PowerPC', 'Power_Macintosh'):
-                # Pick a sane name for the PPC architecture.
-                machine = 'ppc'
-
-                # See 'i386' case
-                if sys.maxint >= 2**32:
-                    machine = 'ppc64'
-
-    return "%s-%s-%s" % (osname, release, machine)
-
-# get_platform ()
-
-
-def convert_path (pathname):
-    """Return 'pathname' as a name that will work on the native filesystem,
-    i.e. split it on '/' and put it back together again using the current
-    directory separator.  Needed because filenames in the setup script are
-    always supplied in Unix style, and have to be converted to the local
-    convention before we can actually use them in the filesystem.  Raises
-    ValueError on non-Unix-ish systems if 'pathname' either starts or
-    ends with a slash.
-    """
-    if os.sep == '/':
-        return pathname
-    if not pathname:
-        return pathname
-    if pathname[0] == '/':
-        raise ValueError, "path '%s' cannot be absolute" % pathname
-    if pathname[-1] == '/':
-        raise ValueError, "path '%s' cannot end with '/'" % pathname
-
-    paths = string.split(pathname, '/')
-    while '.' in paths:
-        paths.remove('.')
-    if not paths:
-        return os.curdir
-    return os.path.join(*paths)
-
-# convert_path ()
-
-
-def change_root (new_root, pathname):
-    """Return 'pathname' with 'new_root' prepended.  If 'pathname' is
-    relative, this is equivalent to "os.path.join(new_root,pathname)".
-    Otherwise, it requires making 'pathname' relative and then joining the
-    two, which is tricky on DOS/Windows and Mac OS.
-    """
-    if os.name == 'posix':
-        if not os.path.isabs(pathname):
-            return os.path.join(new_root, pathname)
-        else:
-            return os.path.join(new_root, pathname[1:])
-
-    elif os.name == 'nt':
-        (drive, path) = os.path.splitdrive(pathname)
-        if path[0] == '\\':
-            path = path[1:]
-        return os.path.join(new_root, path)
-
-    elif os.name == 'os2':
-        (drive, path) = os.path.splitdrive(pathname)
-        if path[0] == os.sep:
-            path = path[1:]
-        return os.path.join(new_root, path)
-
-    else:
-        raise DistutilsPlatformError, \
-              "nothing known about platform '%s'" % os.name
-
-
-_environ_checked = 0
-def check_environ ():
-    """Ensure that 'os.environ' has all the environment variables we
-    guarantee that users can use in config files, command-line options,
-    etc.  Currently this includes:
-      HOME - user's home directory (Unix only)
-      PLAT - description of the current platform, including hardware
-             and OS (see 'get_platform()')
-    """
-    global _environ_checked
-    if _environ_checked:
-        return
-
-    if os.name == 'posix' and 'HOME' not in os.environ:
-        import pwd
-        os.environ['HOME'] = pwd.getpwuid(os.getuid())[5]
-
-    if 'PLAT' not in os.environ:
-        os.environ['PLAT'] = get_platform()
-
-    _environ_checked = 1
-
-
-def subst_vars (s, local_vars):
-    """Perform shell/Perl-style variable substitution on 'string'.  Every
-    occurrence of '$' followed by a name is considered a variable, and
-    variable is substituted by the value found in the 'local_vars'
-    dictionary, or in 'os.environ' if it's not in 'local_vars'.
-    'os.environ' is first checked/augmented to guarantee that it contains
-    certain values: see 'check_environ()'.  Raise ValueError for any
-    variables not found in either 'local_vars' or 'os.environ'.
-    """
-    check_environ()
-    def _subst (match, local_vars=local_vars):
-        var_name = match.group(1)
-        if var_name in local_vars:
-            return str(local_vars[var_name])
-        else:
-            return os.environ[var_name]
-
-    try:
-        return re.sub(r'\$([a-zA-Z_][a-zA-Z_0-9]*)', _subst, s)
-    except KeyError, var:
-        raise ValueError, "invalid variable '$%s'" % var
-
-# subst_vars ()
-
-
-def grok_environment_error (exc, prefix="error: "):
-    """Generate a useful error message from an EnvironmentError (IOError or
-    OSError) exception object.  Handles Python 1.5.1 and 1.5.2 styles, and
-    does what it can to deal with exception objects that don't have a
-    filename (which happens when the error is due to a two-file operation,
-    such as 'rename()' or 'link()'.  Returns the error message as a string
-    prefixed with 'prefix'.
-    """
-    # check for Python 1.5.2-style {IO,OS}Error exception objects
-    if hasattr(exc, 'filename') and hasattr(exc, 'strerror'):
-        if exc.filename:
-            error = prefix + "%s: %s" % (exc.filename, exc.strerror)
-        else:
-            # two-argument functions in posix module don't
-            # include the filename in the exception object!
-            error = prefix + "%s" % exc.strerror
-    else:
-        error = prefix + str(exc[-1])
-
-    return error
-
-
-# Needed by 'split_quoted()'
-_wordchars_re = _squote_re = _dquote_re = None
-def _init_regex():
-    global _wordchars_re, _squote_re, _dquote_re
-    _wordchars_re = re.compile(r'[^\\\'\"%s ]*' % string.whitespace)
-    _squote_re = re.compile(r"'(?:[^'\\]|\\.)*'")
-    _dquote_re = re.compile(r'"(?:[^"\\]|\\.)*"')
-
-def split_quoted (s):
-    """Split a string up according to Unix shell-like rules for quotes and
-    backslashes.  In short: words are delimited by spaces, as long as those
-    spaces are not escaped by a backslash, or inside a quoted string.
-    Single and double quotes are equivalent, and the quote characters can
-    be backslash-escaped.  The backslash is stripped from any two-character
-    escape sequence, leaving only the escaped character.  The quote
-    characters are stripped from any quoted string.  Returns a list of
-    words.
-    """
-
-    # This is a nice algorithm for splitting up a single string, since it
-    # doesn't require character-by-character examination.  It was a little
-    # bit of a brain-bender to get it working right, though...
-    if _wordchars_re is None: _init_regex()
-
-    s = string.strip(s)
-    words = []
-    pos = 0
-
-    while s:
-        m = _wordchars_re.match(s, pos)
-        end = m.end()
-        if end == len(s):
-            words.append(s[:end])
-            break
-
-        if s[end] in string.whitespace: # unescaped, unquoted whitespace: now
-            words.append(s[:end])       # we definitely have a word delimiter
-            s = string.lstrip(s[end:])
-            pos = 0
-
-        elif s[end] == '\\':            # preserve whatever is being escaped;
-                                        # will become part of the current word
-            s = s[:end] + s[end+1:]
-            pos = end+1
-
-        else:
-            if s[end] == "'":           # slurp singly-quoted string
-                m = _squote_re.match(s, end)
-            elif s[end] == '"':         # slurp doubly-quoted string
-                m = _dquote_re.match(s, end)
-            else:
-                raise RuntimeError, \
-                      "this can't happen (bad char '%c')" % s[end]
-
-            if m is None:
-                raise ValueError, \
-                      "bad string (mismatched %s quotes?)" % s[end]
-
-            (beg, end) = m.span()
-            s = s[:beg] + s[beg+1:end-1] + s[end:]
-            pos = m.end() - 2
-
-        if pos >= len(s):
-            words.append(s)
-            break
-
-    return words
-
-# split_quoted ()
-
-
-def execute (func, args, msg=None, verbose=0, dry_run=0):
-    """Perform some action that affects the outside world (eg.  by
-    writing to the filesystem).  Such actions are special because they
-    are disabled by the 'dry_run' flag.  This method takes care of all
-    that bureaucracy for you; all you have to do is supply the
-    function to call and an argument tuple for it (to embody the
-    "external action" being performed), and an optional message to
-    print.
-    """
-    if msg is None:
-        msg = "%s%r" % (func.__name__, args)
-        if msg[-2:] == ',)':        # correct for singleton tuple
-            msg = msg[0:-2] + ')'
-
-    log.info(msg)
-    if not dry_run:
-        func(*args)
-
-
-def strtobool (val):
-    """Convert a string representation of truth to true (1) or false (0).
-
-    True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values
-    are 'n', 'no', 'f', 'false', 'off', and '0'.  Raises ValueError if
-    'val' is anything else.
-    """
-    val = string.lower(val)
-    if val in ('y', 'yes', 't', 'true', 'on', '1'):
-        return 1
-    elif val in ('n', 'no', 'f', 'false', 'off', '0'):
-        return 0
-    else:
-        raise ValueError, "invalid truth value %r" % (val,)
-
-
-def byte_compile (py_files,
-                  optimize=0, force=0,
-                  prefix=None, base_dir=None,
-                  verbose=1, dry_run=0,
-                  direct=None):
-    """Byte-compile a collection of Python source files to either .pyc
-    or .pyo files in the same directory.  'py_files' is a list of files
-    to compile; any files that don't end in ".py" are silently skipped.
-    'optimize' must be one of the following:
-      0 - don't optimize (generate .pyc)
-      1 - normal optimization (like "python -O")
-      2 - extra optimization (like "python -OO")
-    If 'force' is true, all files are recompiled regardless of
-    timestamps.
-
-    The source filename encoded in each bytecode file defaults to the
-    filenames listed in 'py_files'; you can modify these with 'prefix' and
-    'basedir'.  'prefix' is a string that will be stripped off of each
-    source filename, and 'base_dir' is a directory name that will be
-    prepended (after 'prefix' is stripped).  You can supply either or both
-    (or neither) of 'prefix' and 'base_dir', as you wish.
-
-    If 'dry_run' is true, doesn't actually do anything that would
-    affect the filesystem.
-
-    Byte-compilation is either done directly in this interpreter process
-    with the standard py_compile module, or indirectly by writing a
-    temporary script and executing it.  Normally, you should let
-    'byte_compile()' figure out to use direct compilation or not (see
-    the source for details).  The 'direct' flag is used by the script
-    generated in indirect mode; unless you know what you're doing, leave
-    it set to None.
-    """
-    # nothing is done if sys.dont_write_bytecode is True
-    if sys.dont_write_bytecode:
-        raise DistutilsByteCompileError('byte-compiling is disabled.')
-
-    # First, if the caller didn't force us into direct or indirect mode,
-    # figure out which mode we should be in.  We take a conservative
-    # approach: choose direct mode *only* if the current interpreter is
-    # in debug mode and optimize is 0.  If we're not in debug mode (-O
-    # or -OO), we don't know which level of optimization this
-    # interpreter is running with, so we can't do direct
-    # byte-compilation and be certain that it's the right thing.  Thus,
-    # always compile indirectly if the current interpreter is in either
-    # optimize mode, or if either optimization level was requested by
-    # the caller.
-    if direct is None:
-        direct = (__debug__ and optimize == 0)
-
-    # "Indirect" byte-compilation: write a temporary script and then
-    # run it with the appropriate flags.
-    if not direct:
-        try:
-            from tempfile import mkstemp
-            (script_fd, script_name) = mkstemp(".py")
-        except ImportError:
-            from tempfile import mktemp
-            (script_fd, script_name) = None, mktemp(".py")
-        log.info("writing byte-compilation script '%s'", script_name)
-        if not dry_run:
-            if script_fd is not None:
-                script = os.fdopen(script_fd, "w")
-            else:
-                script = open(script_name, "w")
-
-            script.write("""\
-from distutils.util import byte_compile
-files = [
-""")
-
-            # XXX would be nice to write absolute filenames, just for
-            # safety's sake (script should be more robust in the face of
-            # chdir'ing before running it).  But this requires abspath'ing
-            # 'prefix' as well, and that breaks the hack in build_lib's
-            # 'byte_compile()' method that carefully tacks on a trailing
-            # slash (os.sep really) to make sure the prefix here is "just
-            # right".  This whole prefix business is rather delicate -- the
-            # problem is that it's really a directory, but I'm treating it
-            # as a dumb string, so trailing slashes and so forth matter.
-
-            #py_files = map(os.path.abspath, py_files)
-            #if prefix:
-            #    prefix = os.path.abspath(prefix)
-
-            script.write(string.join(map(repr, py_files), ",\n") + "]\n")
-            script.write("""
-byte_compile(files, optimize=%r, force=%r,
-             prefix=%r, base_dir=%r,
-             verbose=%r, dry_run=0,
-             direct=1)
-""" % (optimize, force, prefix, base_dir, verbose))
-
-            script.close()
-
-        cmd = [sys.executable, script_name]
-        if optimize == 1:
-            cmd.insert(1, "-O")
-        elif optimize == 2:
-            cmd.insert(1, "-OO")
-        spawn(cmd, dry_run=dry_run)
-        execute(os.remove, (script_name,), "removing %s" % script_name,
-                dry_run=dry_run)
-
-    # "Direct" byte-compilation: use the py_compile module to compile
-    # right here, right now.  Note that the script generated in indirect
-    # mode simply calls 'byte_compile()' in direct mode, a weird sort of
-    # cross-process recursion.  Hey, it works!
-    else:
-        from py_compile import compile
-
-        for file in py_files:
-            if file[-3:] != ".py":
-                # This lets us be lazy and not filter filenames in
-                # the "install_lib" command.
-                continue
-
-            # Terminology from the py_compile module:
-            #   cfile - byte-compiled file
-            #   dfile - purported source filename (same as 'file' by default)
-            cfile = file + (__debug__ and "c" or "o")
-            dfile = file
-            if prefix:
-                if file[:len(prefix)] != prefix:
-                    raise ValueError, \
-                          ("invalid prefix: filename %r doesn't start with %r"
-                           % (file, prefix))
-                dfile = dfile[len(prefix):]
-            if base_dir:
-                dfile = os.path.join(base_dir, dfile)
-
-            cfile_base = os.path.basename(cfile)
-            if direct:
-                if force or newer(file, cfile):
-                    log.info("byte-compiling %s to %s", file, cfile_base)
-                    if not dry_run:
-                        compile(file, cfile, dfile)
-                else:
-                    log.debug("skipping byte-compilation of %s to %s",
-                              file, cfile_base)
-
-# byte_compile ()
-
-def rfc822_escape (header):
-    """Return a version of the string escaped for inclusion in an
-    RFC-822 header, by ensuring there are 8 spaces space after each newline.
-    """
-    lines = string.split(header, '\n')
-    header = string.join(lines, '\n' + 8*' ')
-    return header
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/version.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/version.py
deleted file mode 100644
index 186c091..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/version.py
+++ /dev/null
@@ -1,299 +0,0 @@
-#
-# distutils/version.py
-#
-# Implements multiple version numbering conventions for the
-# Python Module Distribution Utilities.
-#
-# $Id$
-#
-
-"""Provides classes to represent module version numbers (one class for
-each style of version numbering).  There are currently two such classes
-implemented: StrictVersion and LooseVersion.
-
-Every version number class implements the following interface:
-  * the 'parse' method takes a string and parses it to some internal
-    representation; if the string is an invalid version number,
-    'parse' raises a ValueError exception
-  * the class constructor takes an optional string argument which,
-    if supplied, is passed to 'parse'
-  * __str__ reconstructs the string that was passed to 'parse' (or
-    an equivalent string -- ie. one that will generate an equivalent
-    version number instance)
-  * __repr__ generates Python code to recreate the version number instance
-  * __cmp__ compares the current instance with either another instance
-    of the same class or a string (which will be parsed to an instance
-    of the same class, thus must follow the same rules)
-"""
-
-import string, re
-from types import StringType
-
-class Version:
-    """Abstract base class for version numbering classes.  Just provides
-    constructor (__init__) and reproducer (__repr__), because those
-    seem to be the same for all version numbering classes.
-    """
-
-    def __init__ (self, vstring=None):
-        if vstring:
-            self.parse(vstring)
-
-    def __repr__ (self):
-        return "%s ('%s')" % (self.__class__.__name__, str(self))
-
-
-# Interface for version-number classes -- must be implemented
-# by the following classes (the concrete ones -- Version should
-# be treated as an abstract class).
-#    __init__ (string) - create and take same action as 'parse'
-#                        (string parameter is optional)
-#    parse (string)    - convert a string representation to whatever
-#                        internal representation is appropriate for
-#                        this style of version numbering
-#    __str__ (self)    - convert back to a string; should be very similar
-#                        (if not identical to) the string supplied to parse
-#    __repr__ (self)   - generate Python code to recreate
-#                        the instance
-#    __cmp__ (self, other) - compare two version numbers ('other' may
-#                        be an unparsed version string, or another
-#                        instance of your version class)
-
-
-class StrictVersion (Version):
-
-    """Version numbering for anal retentives and software idealists.
-    Implements the standard interface for version number classes as
-    described above.  A version number consists of two or three
-    dot-separated numeric components, with an optional "pre-release" tag
-    on the end.  The pre-release tag consists of the letter 'a' or 'b'
-    followed by a number.  If the numeric components of two version
-    numbers are equal, then one with a pre-release tag will always
-    be deemed earlier (lesser) than one without.
-
-    The following are valid version numbers (shown in the order that
-    would be obtained by sorting according to the supplied cmp function):
-
-        0.4       0.4.0  (these two are equivalent)
-        0.4.1
-        0.5a1
-        0.5b3
-        0.5
-        0.9.6
-        1.0
-        1.0.4a3
-        1.0.4b1
-        1.0.4
-
-    The following are examples of invalid version numbers:
-
-        1
-        2.7.2.2
-        1.3.a4
-        1.3pl1
-        1.3c4
-
-    The rationale for this version numbering system will be explained
-    in the distutils documentation.
-    """
-
-    version_re = re.compile(r'^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$',
-                            re.VERBOSE)
-
-
-    def parse (self, vstring):
-        match = self.version_re.match(vstring)
-        if not match:
-            raise ValueError, "invalid version number '%s'" % vstring
-
-        (major, minor, patch, prerelease, prerelease_num) = \
-            match.group(1, 2, 4, 5, 6)
-
-        if patch:
-            self.version = tuple(map(string.atoi, [major, minor, patch]))
-        else:
-            self.version = tuple(map(string.atoi, [major, minor]) + [0])
-
-        if prerelease:
-            self.prerelease = (prerelease[0], string.atoi(prerelease_num))
-        else:
-            self.prerelease = None
-
-
-    def __str__ (self):
-
-        if self.version[2] == 0:
-            vstring = string.join(map(str, self.version[0:2]), '.')
-        else:
-            vstring = string.join(map(str, self.version), '.')
-
-        if self.prerelease:
-            vstring = vstring + self.prerelease[0] + str(self.prerelease[1])
-
-        return vstring
-
-
-    def __cmp__ (self, other):
-        if isinstance(other, StringType):
-            other = StrictVersion(other)
-
-        compare = cmp(self.version, other.version)
-        if (compare == 0):              # have to compare prerelease
-
-            # case 1: neither has prerelease; they're equal
-            # case 2: self has prerelease, other doesn't; other is greater
-            # case 3: self doesn't have prerelease, other does: self is greater
-            # case 4: both have prerelease: must compare them!
-
-            if (not self.prerelease and not other.prerelease):
-                return 0
-            elif (self.prerelease and not other.prerelease):
-                return -1
-            elif (not self.prerelease and other.prerelease):
-                return 1
-            elif (self.prerelease and other.prerelease):
-                return cmp(self.prerelease, other.prerelease)
-
-        else:                           # numeric versions don't match --
-            return compare              # prerelease stuff doesn't matter
-
-
-# end class StrictVersion
-
-
-# The rules according to Greg Stein:
-# 1) a version number has 1 or more numbers separated by a period or by
-#    sequences of letters. If only periods, then these are compared
-#    left-to-right to determine an ordering.
-# 2) sequences of letters are part of the tuple for comparison and are
-#    compared lexicographically
-# 3) recognize the numeric components may have leading zeroes
-#
-# The LooseVersion class below implements these rules: a version number
-# string is split up into a tuple of integer and string components, and
-# comparison is a simple tuple comparison.  This means that version
-# numbers behave in a predictable and obvious way, but a way that might
-# not necessarily be how people *want* version numbers to behave.  There
-# wouldn't be a problem if people could stick to purely numeric version
-# numbers: just split on period and compare the numbers as tuples.
-# However, people insist on putting letters into their version numbers;
-# the most common purpose seems to be:
-#   - indicating a "pre-release" version
-#     ('alpha', 'beta', 'a', 'b', 'pre', 'p')
-#   - indicating a post-release patch ('p', 'pl', 'patch')
-# but of course this can't cover all version number schemes, and there's
-# no way to know what a programmer means without asking him.
-#
-# The problem is what to do with letters (and other non-numeric
-# characters) in a version number.  The current implementation does the
-# obvious and predictable thing: keep them as strings and compare
-# lexically within a tuple comparison.  This has the desired effect if
-# an appended letter sequence implies something "post-release":
-# eg. "0.99" < "0.99pl14" < "1.0", and "5.001" < "5.001m" < "5.002".
-#
-# However, if letters in a version number imply a pre-release version,
-# the "obvious" thing isn't correct.  Eg. you would expect that
-# "1.5.1" < "1.5.2a2" < "1.5.2", but under the tuple/lexical comparison
-# implemented here, this just isn't so.
-#
-# Two possible solutions come to mind.  The first is to tie the
-# comparison algorithm to a particular set of semantic rules, as has
-# been done in the StrictVersion class above.  This works great as long
-# as everyone can go along with bondage and discipline.  Hopefully a
-# (large) subset of Python module programmers will agree that the
-# particular flavour of bondage and discipline provided by StrictVersion
-# provides enough benefit to be worth using, and will submit their
-# version numbering scheme to its domination.  The free-thinking
-# anarchists in the lot will never give in, though, and something needs
-# to be done to accommodate them.
-#
-# Perhaps a "moderately strict" version class could be implemented that
-# lets almost anything slide (syntactically), and makes some heuristic
-# assumptions about non-digits in version number strings.  This could
-# sink into special-case-hell, though; if I was as talented and
-# idiosyncratic as Larry Wall, I'd go ahead and implement a class that
-# somehow knows that "1.2.1" < "1.2.2a2" < "1.2.2" < "1.2.2pl3", and is
-# just as happy dealing with things like "2g6" and "1.13++".  I don't
-# think I'm smart enough to do it right though.
-#
-# In any case, I've coded the test suite for this module (see
-# ../test/test_version.py) specifically to fail on things like comparing
-# "1.2a2" and "1.2".  That's not because the *code* is doing anything
-# wrong, it's because the simple, obvious design doesn't match my
-# complicated, hairy expectations for real-world version numbers.  It
-# would be a snap to fix the test suite to say, "Yep, LooseVersion does
-# the Right Thing" (ie. the code matches the conception).  But I'd rather
-# have a conception that matches common notions about version numbers.
-
-class LooseVersion (Version):
-
-    """Version numbering for anarchists and software realists.
-    Implements the standard interface for version number classes as
-    described above.  A version number consists of a series of numbers,
-    separated by either periods or strings of letters.  When comparing
-    version numbers, the numeric components will be compared
-    numerically, and the alphabetic components lexically.  The following
-    are all valid version numbers, in no particular order:
-
-        1.5.1
-        1.5.2b2
-        161
-        3.10a
-        8.02
-        3.4j
-        1996.07.12
-        3.2.pl0
-        3.1.1.6
-        2g6
-        11g
-        0.960923
-        2.2beta29
-        1.13++
-        5.5.kw
-        2.0b1pl0
-
-    In fact, there is no such thing as an invalid version number under
-    this scheme; the rules for comparison are simple and predictable,
-    but may not always give the results you want (for some definition
-    of "want").
-    """
-
-    component_re = re.compile(r'(\d+ | [a-z]+ | \.)', re.VERBOSE)
-
-    def __init__ (self, vstring=None):
-        if vstring:
-            self.parse(vstring)
-
-
-    def parse (self, vstring):
-        # I've given up on thinking I can reconstruct the version string
-        # from the parsed tuple -- so I just store the string here for
-        # use by __str__
-        self.vstring = vstring
-        components = filter(lambda x: x and x != '.',
-                            self.component_re.split(vstring))
-        for i in range(len(components)):
-            try:
-                components[i] = int(components[i])
-            except ValueError:
-                pass
-
-        self.version = components
-
-
-    def __str__ (self):
-        return self.vstring
-
-
-    def __repr__ (self):
-        return "LooseVersion ('%s')" % str(self)
-
-
-    def __cmp__ (self, other):
-        if isinstance(other, StringType):
-            other = LooseVersion(other)
-
-        return cmp(self.version, other.version)
-
-
-# end class LooseVersion
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/versionpredicate.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/versionpredicate.py
deleted file mode 100644
index 8039fd6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/distutils/versionpredicate.py
+++ /dev/null
@@ -1,164 +0,0 @@
-"""Module for parsing and testing package version predicate strings.
-"""
-import re
-import distutils.version
-import operator
-
-
-re_validPackage = re.compile(r"(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)")
-# (package) (rest)
-
-re_paren = re.compile(r"^\s*\((.*)\)\s*$") # (list) inside of parentheses
-re_splitComparison = re.compile(r"^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$")
-# (comp) (version)
-
-
-def splitUp(pred):
-    """Parse a single version comparison.
-
-    Return (comparison string, StrictVersion)
-    """
-    res = re_splitComparison.match(pred)
-    if not res:
-        raise ValueError("bad package restriction syntax: %r" % pred)
-    comp, verStr = res.groups()
-    return (comp, distutils.version.StrictVersion(verStr))
-
-compmap = {"<": operator.lt, "<=": operator.le, "==": operator.eq,
-           ">": operator.gt, ">=": operator.ge, "!=": operator.ne}
-
-class VersionPredicate:
-    """Parse and test package version predicates.
-
-    >>> v = VersionPredicate('pyepat.abc (>1.0, <3333.3a1, !=1555.1b3)')
-
-    The `name` attribute provides the full dotted name that is given::
-
-    >>> v.name
-    'pyepat.abc'
-
-    The str() of a `VersionPredicate` provides a normalized
-    human-readable version of the expression::
-
-    >>> print v
-    pyepat.abc (> 1.0, < 3333.3a1, != 1555.1b3)
-
-    The `satisfied_by()` method can be used to determine with a given
-    version number is included in the set described by the version
-    restrictions::
-
-    >>> v.satisfied_by('1.1')
-    True
-    >>> v.satisfied_by('1.4')
-    True
-    >>> v.satisfied_by('1.0')
-    False
-    >>> v.satisfied_by('4444.4')
-    False
-    >>> v.satisfied_by('1555.1b3')
-    False
-
-    `VersionPredicate` is flexible in accepting extra whitespace::
-
-    >>> v = VersionPredicate(' pat( ==  0.1  )  ')
-    >>> v.name
-    'pat'
-    >>> v.satisfied_by('0.1')
-    True
-    >>> v.satisfied_by('0.2')
-    False
-
-    If any version numbers passed in do not conform to the
-    restrictions of `StrictVersion`, a `ValueError` is raised::
-
-    >>> v = VersionPredicate('p1.p2.p3.p4(>=1.0, <=1.3a1, !=1.2zb3)')
-    Traceback (most recent call last):
-      ...
-    ValueError: invalid version number '1.2zb3'
-
-    It the module or package name given does not conform to what's
-    allowed as a legal module or package name, `ValueError` is
-    raised::
-
-    >>> v = VersionPredicate('foo-bar')
-    Traceback (most recent call last):
-      ...
-    ValueError: expected parenthesized list: '-bar'
-
-    >>> v = VersionPredicate('foo bar (12.21)')
-    Traceback (most recent call last):
-      ...
-    ValueError: expected parenthesized list: 'bar (12.21)'
-
-    """
-
-    def __init__(self, versionPredicateStr):
-        """Parse a version predicate string.
-        """
-        # Fields:
-        #    name:  package name
-        #    pred:  list of (comparison string, StrictVersion)
-
-        versionPredicateStr = versionPredicateStr.strip()
-        if not versionPredicateStr:
-            raise ValueError("empty package restriction")
-        match = re_validPackage.match(versionPredicateStr)
-        if not match:
-            raise ValueError("bad package name in %r" % versionPredicateStr)
-        self.name, paren = match.groups()
-        paren = paren.strip()
-        if paren:
-            match = re_paren.match(paren)
-            if not match:
-                raise ValueError("expected parenthesized list: %r" % paren)
-            str = match.groups()[0]
-            self.pred = [splitUp(aPred) for aPred in str.split(",")]
-            if not self.pred:
-                raise ValueError("empty parenthesized list in %r"
-                                 % versionPredicateStr)
-        else:
-            self.pred = []
-
-    def __str__(self):
-        if self.pred:
-            seq = [cond + " " + str(ver) for cond, ver in self.pred]
-            return self.name + " (" + ", ".join(seq) + ")"
-        else:
-            return self.name
-
-    def satisfied_by(self, version):
-        """True if version is compatible with all the predicates in self.
-        The parameter version must be acceptable to the StrictVersion
-        constructor.  It may be either a string or StrictVersion.
-        """
-        for cond, ver in self.pred:
-            if not compmap[cond](version, ver):
-                return False
-        return True
-
-
-_provision_rx = None
-
-def split_provision(value):
-    """Return the name and optional version number of a provision.
-
-    The version number, if given, will be returned as a `StrictVersion`
-    instance, otherwise it will be `None`.
-
-    >>> split_provision('mypkg')
-    ('mypkg', None)
-    >>> split_provision(' mypkg( 1.2 ) ')
-    ('mypkg', StrictVersion ('1.2'))
-    """
-    global _provision_rx
-    if _provision_rx is None:
-        _provision_rx = re.compile(
-            "([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$")
-    value = value.strip()
-    m = _provision_rx.match(value)
-    if not m:
-        raise ValueError("illegal provides specification: %r" % value)
-    ver = m.group(2) or None
-    if ver:
-        ver = distutils.version.StrictVersion(ver)
-    return m.group(1), ver
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/doctest.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/doctest.py
deleted file mode 100644
index ced8de0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/doctest.py
+++ /dev/null
@@ -1,2731 +0,0 @@
-# Module doctest.
-# Released to the public domain 16-Jan-2001, by Tim Peters (tim@python.org).
-# Major enhancements and refactoring by:
-#     Jim Fulton
-#     Edward Loper
-
-# Provided as-is; use at your own risk; no warranty; no promises; enjoy!
-
-r"""Module doctest -- a framework for running examples in docstrings.
-
-In simplest use, end each module M to be tested with:
-
-def _test():
-    import doctest
-    doctest.testmod()
-
-if __name__ == "__main__":
-    _test()
-
-Then running the module as a script will cause the examples in the
-docstrings to get executed and verified:
-
-python M.py
-
-This won't display anything unless an example fails, in which case the
-failing example(s) and the cause(s) of the failure(s) are printed to stdout
-(why not stderr? because stderr is a lame hack <0.2 wink>), and the final
-line of output is "Test failed.".
-
-Run it with the -v switch instead:
-
-python M.py -v
-
-and a detailed report of all examples tried is printed to stdout, along
-with assorted summaries at the end.
-
-You can force verbose mode by passing "verbose=True" to testmod, or prohibit
-it by passing "verbose=False".  In either of those cases, sys.argv is not
-examined by testmod.
-
-There are a variety of other ways to run doctests, including integration
-with the unittest framework, and support for running non-Python text
-files containing doctests.  There are also many ways to override parts
-of doctest's default behaviors.  See the Library Reference Manual for
-details.
-"""
-
-__docformat__ = 'reStructuredText en'
-
-__all__ = [
-    # 0, Option Flags
-    'register_optionflag',
-    'DONT_ACCEPT_TRUE_FOR_1',
-    'DONT_ACCEPT_BLANKLINE',
-    'NORMALIZE_WHITESPACE',
-    'ELLIPSIS',
-    'SKIP',
-    'IGNORE_EXCEPTION_DETAIL',
-    'COMPARISON_FLAGS',
-    'REPORT_UDIFF',
-    'REPORT_CDIFF',
-    'REPORT_NDIFF',
-    'REPORT_ONLY_FIRST_FAILURE',
-    'REPORTING_FLAGS',
-    # 1. Utility Functions
-    # 2. Example & DocTest
-    'Example',
-    'DocTest',
-    # 3. Doctest Parser
-    'DocTestParser',
-    # 4. Doctest Finder
-    'DocTestFinder',
-    # 5. Doctest Runner
-    'DocTestRunner',
-    'OutputChecker',
-    'DocTestFailure',
-    'UnexpectedException',
-    'DebugRunner',
-    # 6. Test Functions
-    'testmod',
-    'testfile',
-    'run_docstring_examples',
-    # 7. Tester
-    'Tester',
-    # 8. Unittest Support
-    'DocTestSuite',
-    'DocFileSuite',
-    'set_unittest_reportflags',
-    # 9. Debugging Support
-    'script_from_examples',
-    'testsource',
-    'debug_src',
-    'debug',
-]
-
-import __future__
-
-import sys, traceback, inspect, linecache, os, re
-import unittest, difflib, pdb, tempfile
-import warnings
-from StringIO import StringIO
-from collections import namedtuple
-
-TestResults = namedtuple('TestResults', 'failed attempted')
-
-# There are 4 basic classes:
-#  - Example: a <source, want> pair, plus an intra-docstring line number.
-#  - DocTest: a collection of examples, parsed from a docstring, plus
-#    info about where the docstring came from (name, filename, lineno).
-#  - DocTestFinder: extracts DocTests from a given object's docstring and
-#    its contained objects' docstrings.
-#  - DocTestRunner: runs DocTest cases, and accumulates statistics.
-#
-# So the basic picture is:
-#
-#                             list of:
-# +------+                   +---------+                   +-------+
-# |object| --DocTestFinder-> | DocTest | --DocTestRunner-> |results|
-# +------+                   +---------+                   +-------+
-#                            | Example |
-#                            |   ...   |
-#                            | Example |
-#                            +---------+
-
-# Option constants.
-
-OPTIONFLAGS_BY_NAME = {}
-def register_optionflag(name):
-    # Create a new flag unless `name` is already known.
-    return OPTIONFLAGS_BY_NAME.setdefault(name, 1 << len(OPTIONFLAGS_BY_NAME))
-
-DONT_ACCEPT_TRUE_FOR_1 = register_optionflag('DONT_ACCEPT_TRUE_FOR_1')
-DONT_ACCEPT_BLANKLINE = register_optionflag('DONT_ACCEPT_BLANKLINE')
-NORMALIZE_WHITESPACE = register_optionflag('NORMALIZE_WHITESPACE')
-ELLIPSIS = register_optionflag('ELLIPSIS')
-SKIP = register_optionflag('SKIP')
-IGNORE_EXCEPTION_DETAIL = register_optionflag('IGNORE_EXCEPTION_DETAIL')
-
-COMPARISON_FLAGS = (DONT_ACCEPT_TRUE_FOR_1 |
-                    DONT_ACCEPT_BLANKLINE |
-                    NORMALIZE_WHITESPACE |
-                    ELLIPSIS |
-                    SKIP |
-                    IGNORE_EXCEPTION_DETAIL)
-
-REPORT_UDIFF = register_optionflag('REPORT_UDIFF')
-REPORT_CDIFF = register_optionflag('REPORT_CDIFF')
-REPORT_NDIFF = register_optionflag('REPORT_NDIFF')
-REPORT_ONLY_FIRST_FAILURE = register_optionflag('REPORT_ONLY_FIRST_FAILURE')
-
-REPORTING_FLAGS = (REPORT_UDIFF |
-                   REPORT_CDIFF |
-                   REPORT_NDIFF |
-                   REPORT_ONLY_FIRST_FAILURE)
-
-# Special string markers for use in `want` strings:
-BLANKLINE_MARKER = '<BLANKLINE>'
-ELLIPSIS_MARKER = '...'
-
-######################################################################
-## Table of Contents
-######################################################################
-#  1. Utility Functions
-#  2. Example & DocTest -- store test cases
-#  3. DocTest Parser -- extracts examples from strings
-#  4. DocTest Finder -- extracts test cases from objects
-#  5. DocTest Runner -- runs test cases
-#  6. Test Functions -- convenient wrappers for testing
-#  7. Tester Class -- for backwards compatibility
-#  8. Unittest Support
-#  9. Debugging Support
-# 10. Example Usage
-
-######################################################################
-## 1. Utility Functions
-######################################################################
-
-def _extract_future_flags(globs):
-    """
-    Return the compiler-flags associated with the future features that
-    have been imported into the given namespace (globs).
-    """
-    flags = 0
-    for fname in __future__.all_feature_names:
-        feature = globs.get(fname, None)
-        if feature is getattr(__future__, fname):
-            flags |= feature.compiler_flag
-    return flags
-
-def _normalize_module(module, depth=2):
-    """
-    Return the module specified by `module`.  In particular:
-      - If `module` is a module, then return module.
-      - If `module` is a string, then import and return the
-        module with that name.
-      - If `module` is None, then return the calling module.
-        The calling module is assumed to be the module of
-        the stack frame at the given depth in the call stack.
-    """
-    if inspect.ismodule(module):
-        return module
-    elif isinstance(module, (str, unicode)):
-        return __import__(module, globals(), locals(), ["*"])
-    elif module is None:
-        return sys.modules[sys._getframe(depth).f_globals['__name__']]
-    else:
-        raise TypeError("Expected a module, string, or None")
-
-def _load_testfile(filename, package, module_relative):
-    if module_relative:
-        package = _normalize_module(package, 3)
-        filename = _module_relative_path(package, filename)
-        if hasattr(package, '__loader__'):
-            if hasattr(package.__loader__, 'get_data'):
-                file_contents = package.__loader__.get_data(filename)
-                # get_data() opens files as 'rb', so one must do the equivalent
-                # conversion as universal newlines would do.
-                return file_contents.replace(os.linesep, '\n'), filename
-    with open(filename) as f:
-        return f.read(), filename
-
-# Use sys.stdout encoding for ouput.
-_encoding = getattr(sys.__stdout__, 'encoding', None) or 'utf-8'
-
-def _indent(s, indent=4):
-    """
-    Add the given number of space characters to the beginning of
-    every non-blank line in `s`, and return the result.
-    If the string `s` is Unicode, it is encoded using the stdout
-    encoding and the `backslashreplace` error handler.
-    """
-    if isinstance(s, unicode):
-        s = s.encode(_encoding, 'backslashreplace')
-    # This regexp matches the start of non-blank lines:
-    return re.sub('(?m)^(?!$)', indent*' ', s)
-
-def _exception_traceback(exc_info):
-    """
-    Return a string containing a traceback message for the given
-    exc_info tuple (as returned by sys.exc_info()).
-    """
-    # Get a traceback message.
-    excout = StringIO()
-    exc_type, exc_val, exc_tb = exc_info
-    traceback.print_exception(exc_type, exc_val, exc_tb, file=excout)
-    return excout.getvalue()
-
-# Override some StringIO methods.
-class _SpoofOut(StringIO):
-    def getvalue(self):
-        result = StringIO.getvalue(self)
-        # If anything at all was written, make sure there's a trailing
-        # newline.  There's no way for the expected output to indicate
-        # that a trailing newline is missing.
-        if result and not result.endswith("\n"):
-            result += "\n"
-        # Prevent softspace from screwing up the next test case, in
-        # case they used print with a trailing comma in an example.
-        if hasattr(self, "softspace"):
-            del self.softspace
-        return result
-
-    def truncate(self,   size=None):
-        StringIO.truncate(self, size)
-        if hasattr(self, "softspace"):
-            del self.softspace
-        if not self.buf:
-            # Reset it to an empty string, to make sure it's not unicode.
-            self.buf = ''
-
-# Worst-case linear-time ellipsis matching.
-def _ellipsis_match(want, got):
-    """
-    Essentially the only subtle case:
-    >>> _ellipsis_match('aa...aa', 'aaa')
-    False
-    """
-    if ELLIPSIS_MARKER not in want:
-        return want == got
-
-    # Find "the real" strings.
-    ws = want.split(ELLIPSIS_MARKER)
-    assert len(ws) >= 2
-
-    # Deal with exact matches possibly needed at one or both ends.
-    startpos, endpos = 0, len(got)
-    w = ws[0]
-    if w:   # starts with exact match
-        if got.startswith(w):
-            startpos = len(w)
-            del ws[0]
-        else:
-            return False
-    w = ws[-1]
-    if w:   # ends with exact match
-        if got.endswith(w):
-            endpos -= len(w)
-            del ws[-1]
-        else:
-            return False
-
-    if startpos > endpos:
-        # Exact end matches required more characters than we have, as in
-        # _ellipsis_match('aa...aa', 'aaa')
-        return False
-
-    # For the rest, we only need to find the leftmost non-overlapping
-    # match for each piece.  If there's no overall match that way alone,
-    # there's no overall match period.
-    for w in ws:
-        # w may be '' at times, if there are consecutive ellipses, or
-        # due to an ellipsis at the start or end of `want`.  That's OK.
-        # Search for an empty string succeeds, and doesn't change startpos.
-        startpos = got.find(w, startpos, endpos)
-        if startpos < 0:
-            return False
-        startpos += len(w)
-
-    return True
-
-def _comment_line(line):
-    "Return a commented form of the given line"
-    line = line.rstrip()
-    if line:
-        return '# '+line
-    else:
-        return '#'
-
-class _OutputRedirectingPdb(pdb.Pdb):
-    """
-    A specialized version of the python debugger that redirects stdout
-    to a given stream when interacting with the user.  Stdout is *not*
-    redirected when traced code is executed.
-    """
-    def __init__(self, out):
-        self.__out = out
-        self.__debugger_used = False
-        pdb.Pdb.__init__(self, stdout=out)
-        # still use input() to get user input
-        self.use_rawinput = 1
-
-    def set_trace(self, frame=None):
-        self.__debugger_used = True
-        if frame is None:
-            frame = sys._getframe().f_back
-        pdb.Pdb.set_trace(self, frame)
-
-    def set_continue(self):
-        # Calling set_continue unconditionally would break unit test
-        # coverage reporting, as Bdb.set_continue calls sys.settrace(None).
-        if self.__debugger_used:
-            pdb.Pdb.set_continue(self)
-
-    def trace_dispatch(self, *args):
-        # Redirect stdout to the given stream.
-        save_stdout = sys.stdout
-        sys.stdout = self.__out
-        # Call Pdb's trace dispatch method.
-        try:
-            return pdb.Pdb.trace_dispatch(self, *args)
-        finally:
-            sys.stdout = save_stdout
-
-# [XX] Normalize with respect to os.path.pardir?
-def _module_relative_path(module, path):
-    if not inspect.ismodule(module):
-        raise TypeError, 'Expected a module: %r' % module
-    if path.startswith('/'):
-        raise ValueError, 'Module-relative files may not have absolute paths'
-
-    # Find the base directory for the path.
-    if hasattr(module, '__file__'):
-        # A normal module/package
-        basedir = os.path.split(module.__file__)[0]
-    elif module.__name__ == '__main__':
-        # An interactive session.
-        if len(sys.argv)>0 and sys.argv[0] != '':
-            basedir = os.path.split(sys.argv[0])[0]
-        else:
-            basedir = os.curdir
-    else:
-        # A module w/o __file__ (this includes builtins)
-        raise ValueError("Can't resolve paths relative to the module " +
-                         module + " (it has no __file__)")
-
-    # Combine the base directory and the path.
-    return os.path.join(basedir, *(path.split('/')))
-
-######################################################################
-## 2. Example & DocTest
-######################################################################
-## - An "example" is a <source, want> pair, where "source" is a
-##   fragment of source code, and "want" is the expected output for
-##   "source."  The Example class also includes information about
-##   where the example was extracted from.
-##
-## - A "doctest" is a collection of examples, typically extracted from
-##   a string (such as an object's docstring).  The DocTest class also
-##   includes information about where the string was extracted from.
-
-class Example:
-    """
-    A single doctest example, consisting of source code and expected
-    output.  `Example` defines the following attributes:
-
-      - source: A single Python statement, always ending with a newline.
-        The constructor adds a newline if needed.
-
-      - want: The expected output from running the source code (either
-        from stdout, or a traceback in case of exception).  `want` ends
-        with a newline unless it's empty, in which case it's an empty
-        string.  The constructor adds a newline if needed.
-
-      - exc_msg: The exception message generated by the example, if
-        the example is expected to generate an exception; or `None` if
-        it is not expected to generate an exception.  This exception
-        message is compared against the return value of
-        `traceback.format_exception_only()`.  `exc_msg` ends with a
-        newline unless it's `None`.  The constructor adds a newline
-        if needed.
-
-      - lineno: The line number within the DocTest string containing
-        this Example where the Example begins.  This line number is
-        zero-based, with respect to the beginning of the DocTest.
-
-      - indent: The example's indentation in the DocTest string.
-        I.e., the number of space characters that preceed the
-        example's first prompt.
-
-      - options: A dictionary mapping from option flags to True or
-        False, which is used to override default options for this
-        example.  Any option flags not contained in this dictionary
-        are left at their default value (as specified by the
-        DocTestRunner's optionflags).  By default, no options are set.
-    """
-    def __init__(self, source, want, exc_msg=None, lineno=0, indent=0,
-                 options=None):
-        # Normalize inputs.
-        if not source.endswith('\n'):
-            source += '\n'
-        if want and not want.endswith('\n'):
-            want += '\n'
-        if exc_msg is not None and not exc_msg.endswith('\n'):
-            exc_msg += '\n'
-        # Store properties.
-        self.source = source
-        self.want = want
-        self.lineno = lineno
-        self.indent = indent
-        if options is None: options = {}
-        self.options = options
-        self.exc_msg = exc_msg
-
-class DocTest:
-    """
-    A collection of doctest examples that should be run in a single
-    namespace.  Each `DocTest` defines the following attributes:
-
-      - examples: the list of examples.
-
-      - globs: The namespace (aka globals) that the examples should
-        be run in.
-
-      - name: A name identifying the DocTest (typically, the name of
-        the object whose docstring this DocTest was extracted from).
-
-      - filename: The name of the file that this DocTest was extracted
-        from, or `None` if the filename is unknown.
-
-      - lineno: The line number within filename where this DocTest
-        begins, or `None` if the line number is unavailable.  This
-        line number is zero-based, with respect to the beginning of
-        the file.
-
-      - docstring: The string that the examples were extracted from,
-        or `None` if the string is unavailable.
-    """
-    def __init__(self, examples, globs, name, filename, lineno, docstring):
-        """
-        Create a new DocTest containing the given examples.  The
-        DocTest's globals are initialized with a copy of `globs`.
-        """
-        assert not isinstance(examples, basestring), \
-               "DocTest no longer accepts str; use DocTestParser instead"
-        self.examples = examples
-        self.docstring = docstring
-        self.globs = globs.copy()
-        self.name = name
-        self.filename = filename
-        self.lineno = lineno
-
-    def __repr__(self):
-        if len(self.examples) == 0:
-            examples = 'no examples'
-        elif len(self.examples) == 1:
-            examples = '1 example'
-        else:
-            examples = '%d examples' % len(self.examples)
-        return ('<DocTest %s from %s:%s (%s)>' %
-                (self.name, self.filename, self.lineno, examples))
-
-
-    # This lets us sort tests by name:
-    def __cmp__(self, other):
-        if not isinstance(other, DocTest):
-            return -1
-        return cmp((self.name, self.filename, self.lineno, id(self)),
-                   (other.name, other.filename, other.lineno, id(other)))
-
-######################################################################
-## 3. DocTestParser
-######################################################################
-
-class DocTestParser:
-    """
-    A class used to parse strings containing doctest examples.
-    """
-    # This regular expression is used to find doctest examples in a
-    # string.  It defines three groups: `source` is the source code
-    # (including leading indentation and prompts); `indent` is the
-    # indentation of the first (PS1) line of the source code; and
-    # `want` is the expected output (including leading indentation).
-    _EXAMPLE_RE = re.compile(r'''
-        # Source consists of a PS1 line followed by zero or more PS2 lines.
-        (?P<source>
-            (?:^(?P<indent> [ ]*) >>>    .*)    # PS1 line
-            (?:\n           [ ]*  \.\.\. .*)*)  # PS2 lines
-        \n?
-        # Want consists of any non-blank lines that do not start with PS1.
-        (?P<want> (?:(?![ ]*$)    # Not a blank line
-                     (?![ ]*>>>)  # Not a line starting with PS1
-                     .*$\n?       # But any other line
-                  )*)
-        ''', re.MULTILINE | re.VERBOSE)
-
-    # A regular expression for handling `want` strings that contain
-    # expected exceptions.  It divides `want` into three pieces:
-    #    - the traceback header line (`hdr`)
-    #    - the traceback stack (`stack`)
-    #    - the exception message (`msg`), as generated by
-    #      traceback.format_exception_only()
-    # `msg` may have multiple lines.  We assume/require that the
-    # exception message is the first non-indented line starting with a word
-    # character following the traceback header line.
-    _EXCEPTION_RE = re.compile(r"""
-        # Grab the traceback header.  Different versions of Python have
-        # said different things on the first traceback line.
-        ^(?P<hdr> Traceback\ \(
-            (?: most\ recent\ call\ last
-            |   innermost\ last
-            ) \) :
-        )
-        \s* $                # toss trailing whitespace on the header.
-        (?P<stack> .*?)      # don't blink: absorb stuff until...
-        ^ (?P<msg> \w+ .*)   #     a line *starts* with alphanum.
-        """, re.VERBOSE | re.MULTILINE | re.DOTALL)
-
-    # A callable returning a true value iff its argument is a blank line
-    # or contains a single comment.
-    _IS_BLANK_OR_COMMENT = re.compile(r'^[ ]*(#.*)?$').match
-
-    def parse(self, string, name='<string>'):
-        """
-        Divide the given string into examples and intervening text,
-        and return them as a list of alternating Examples and strings.
-        Line numbers for the Examples are 0-based.  The optional
-        argument `name` is a name identifying this string, and is only
-        used for error messages.
-        """
-        string = string.expandtabs()
-        # If all lines begin with the same indentation, then strip it.
-        min_indent = self._min_indent(string)
-        if min_indent > 0:
-            string = '\n'.join([l[min_indent:] for l in string.split('\n')])
-
-        output = []
-        charno, lineno = 0, 0
-        # Find all doctest examples in the string:
-        for m in self._EXAMPLE_RE.finditer(string):
-            # Add the pre-example text to `output`.
-            output.append(string[charno:m.start()])
-            # Update lineno (lines before this example)
-            lineno += string.count('\n', charno, m.start())
-            # Extract info from the regexp match.
-            (source, options, want, exc_msg) = \
-                     self._parse_example(m, name, lineno)
-            # Create an Example, and add it to the list.
-            if not self._IS_BLANK_OR_COMMENT(source):
-                output.append( Example(source, want, exc_msg,
-                                    lineno=lineno,
-                                    indent=min_indent+len(m.group('indent')),
-                                    options=options) )
-            # Update lineno (lines inside this example)
-            lineno += string.count('\n', m.start(), m.end())
-            # Update charno.
-            charno = m.end()
-        # Add any remaining post-example text to `output`.
-        output.append(string[charno:])
-        return output
-
-    def get_doctest(self, string, globs, name, filename, lineno):
-        """
-        Extract all doctest examples from the given string, and
-        collect them into a `DocTest` object.
-
-        `globs`, `name`, `filename`, and `lineno` are attributes for
-        the new `DocTest` object.  See the documentation for `DocTest`
-        for more information.
-        """
-        return DocTest(self.get_examples(string, name), globs,
-                       name, filename, lineno, string)
-
-    def get_examples(self, string, name='<string>'):
-        """
-        Extract all doctest examples from the given string, and return
-        them as a list of `Example` objects.  Line numbers are
-        0-based, because it's most common in doctests that nothing
-        interesting appears on the same line as opening triple-quote,
-        and so the first interesting line is called \"line 1\" then.
-
-        The optional argument `name` is a name identifying this
-        string, and is only used for error messages.
-        """
-        return [x for x in self.parse(string, name)
-                if isinstance(x, Example)]
-
-    def _parse_example(self, m, name, lineno):
-        """
-        Given a regular expression match from `_EXAMPLE_RE` (`m`),
-        return a pair `(source, want)`, where `source` is the matched
-        example's source code (with prompts and indentation stripped);
-        and `want` is the example's expected output (with indentation
-        stripped).
-
-        `name` is the string's name, and `lineno` is the line number
-        where the example starts; both are used for error messages.
-        """
-        # Get the example's indentation level.
-        indent = len(m.group('indent'))
-
-        # Divide source into lines; check that they're properly
-        # indented; and then strip their indentation & prompts.
-        source_lines = m.group('source').split('\n')
-        self._check_prompt_blank(source_lines, indent, name, lineno)
-        self._check_prefix(source_lines[1:], ' '*indent + '.', name, lineno)
-        source = '\n'.join([sl[indent+4:] for sl in source_lines])
-
-        # Divide want into lines; check that it's properly indented; and
-        # then strip the indentation.  Spaces before the last newline should
-        # be preserved, so plain rstrip() isn't good enough.
-        want = m.group('want')
-        want_lines = want.split('\n')
-        if len(want_lines) > 1 and re.match(r' *$', want_lines[-1]):
-            del want_lines[-1]  # forget final newline & spaces after it
-        self._check_prefix(want_lines, ' '*indent, name,
-                           lineno + len(source_lines))
-        want = '\n'.join([wl[indent:] for wl in want_lines])
-
-        # If `want` contains a traceback message, then extract it.
-        m = self._EXCEPTION_RE.match(want)
-        if m:
-            exc_msg = m.group('msg')
-        else:
-            exc_msg = None
-
-        # Extract options from the source.
-        options = self._find_options(source, name, lineno)
-
-        return source, options, want, exc_msg
-
-    # This regular expression looks for option directives in the
-    # source code of an example.  Option directives are comments
-    # starting with "doctest:".  Warning: this may give false
-    # positives for string-literals that contain the string
-    # "#doctest:".  Eliminating these false positives would require
-    # actually parsing the string; but we limit them by ignoring any
-    # line containing "#doctest:" that is *followed* by a quote mark.
-    _OPTION_DIRECTIVE_RE = re.compile(r'#\s*doctest:\s*([^\n\'"]*)$',
-                                      re.MULTILINE)
-
-    def _find_options(self, source, name, lineno):
-        """
-        Return a dictionary containing option overrides extracted from
-        option directives in the given source string.
-
-        `name` is the string's name, and `lineno` is the line number
-        where the example starts; both are used for error messages.
-        """
-        options = {}
-        # (note: with the current regexp, this will match at most once:)
-        for m in self._OPTION_DIRECTIVE_RE.finditer(source):
-            option_strings = m.group(1).replace(',', ' ').split()
-            for option in option_strings:
-                if (option[0] not in '+-' or
-                    option[1:] not in OPTIONFLAGS_BY_NAME):
-                    raise ValueError('line %r of the doctest for %s '
-                                     'has an invalid option: %r' %
-                                     (lineno+1, name, option))
-                flag = OPTIONFLAGS_BY_NAME[option[1:]]
-                options[flag] = (option[0] == '+')
-        if options and self._IS_BLANK_OR_COMMENT(source):
-            raise ValueError('line %r of the doctest for %s has an option '
-                             'directive on a line with no example: %r' %
-                             (lineno, name, source))
-        return options
-
-    # This regular expression finds the indentation of every non-blank
-    # line in a string.
-    _INDENT_RE = re.compile('^([ ]*)(?=\S)', re.MULTILINE)
-
-    def _min_indent(self, s):
-        "Return the minimum indentation of any non-blank line in `s`"
-        indents = [len(indent) for indent in self._INDENT_RE.findall(s)]
-        if len(indents) > 0:
-            return min(indents)
-        else:
-            return 0
-
-    def _check_prompt_blank(self, lines, indent, name, lineno):
-        """
-        Given the lines of a source string (including prompts and
-        leading indentation), check to make sure that every prompt is
-        followed by a space character.  If any line is not followed by
-        a space character, then raise ValueError.
-        """
-        for i, line in enumerate(lines):
-            if len(line) >= indent+4 and line[indent+3] != ' ':
-                raise ValueError('line %r of the docstring for %s '
-                                 'lacks blank after %s: %r' %
-                                 (lineno+i+1, name,
-                                  line[indent:indent+3], line))
-
-    def _check_prefix(self, lines, prefix, name, lineno):
-        """
-        Check that every line in the given list starts with the given
-        prefix; if any line does not, then raise a ValueError.
-        """
-        for i, line in enumerate(lines):
-            if line and not line.startswith(prefix):
-                raise ValueError('line %r of the docstring for %s has '
-                                 'inconsistent leading whitespace: %r' %
-                                 (lineno+i+1, name, line))
-
-
-######################################################################
-## 4. DocTest Finder
-######################################################################
-
-class DocTestFinder:
-    """
-    A class used to extract the DocTests that are relevant to a given
-    object, from its docstring and the docstrings of its contained
-    objects.  Doctests can currently be extracted from the following
-    object types: modules, functions, classes, methods, staticmethods,
-    classmethods, and properties.
-    """
-
-    def __init__(self, verbose=False, parser=DocTestParser(),
-                 recurse=True, exclude_empty=True):
-        """
-        Create a new doctest finder.
-
-        The optional argument `parser` specifies a class or
-        function that should be used to create new DocTest objects (or
-        objects that implement the same interface as DocTest).  The
-        signature for this factory function should match the signature
-        of the DocTest constructor.
-
-        If the optional argument `recurse` is false, then `find` will
-        only examine the given object, and not any contained objects.
-
-        If the optional argument `exclude_empty` is false, then `find`
-        will include tests for objects with empty docstrings.
-        """
-        self._parser = parser
-        self._verbose = verbose
-        self._recurse = recurse
-        self._exclude_empty = exclude_empty
-
-    def find(self, obj, name=None, module=None, globs=None, extraglobs=None):
-        """
-        Return a list of the DocTests that are defined by the given
-        object's docstring, or by any of its contained objects'
-        docstrings.
-
-        The optional parameter `module` is the module that contains
-        the given object.  If the module is not specified or is None, then
-        the test finder will attempt to automatically determine the
-        correct module.  The object's module is used:
-
-            - As a default namespace, if `globs` is not specified.
-            - To prevent the DocTestFinder from extracting DocTests
-              from objects that are imported from other modules.
-            - To find the name of the file containing the object.
-            - To help find the line number of the object within its
-              file.
-
-        Contained objects whose module does not match `module` are ignored.
-
-        If `module` is False, no attempt to find the module will be made.
-        This is obscure, of use mostly in tests:  if `module` is False, or
-        is None but cannot be found automatically, then all objects are
-        considered to belong to the (non-existent) module, so all contained
-        objects will (recursively) be searched for doctests.
-
-        The globals for each DocTest is formed by combining `globs`
-        and `extraglobs` (bindings in `extraglobs` override bindings
-        in `globs`).  A new copy of the globals dictionary is created
-        for each DocTest.  If `globs` is not specified, then it
-        defaults to the module's `__dict__`, if specified, or {}
-        otherwise.  If `extraglobs` is not specified, then it defaults
-        to {}.
-
-        """
-        # If name was not specified, then extract it from the object.
-        if name is None:
-            name = getattr(obj, '__name__', None)
-            if name is None:
-                raise ValueError("DocTestFinder.find: name must be given "
-                        "when obj.__name__ doesn't exist: %r" %
-                                 (type(obj),))
-
-        # Find the module that contains the given object (if obj is
-        # a module, then module=obj.).  Note: this may fail, in which
-        # case module will be None.
-        if module is False:
-            module = None
-        elif module is None:
-            module = inspect.getmodule(obj)
-
-        # Read the module's source code.  This is used by
-        # DocTestFinder._find_lineno to find the line number for a
-        # given object's docstring.
-        try:
-            file = inspect.getsourcefile(obj) or inspect.getfile(obj)
-            if module is not None:
-                # Supply the module globals in case the module was
-                # originally loaded via a PEP 302 loader and
-                # file is not a valid filesystem path
-                source_lines = linecache.getlines(file, module.__dict__)
-            else:
-                # No access to a loader, so assume it's a normal
-                # filesystem path
-                source_lines = linecache.getlines(file)
-            if not source_lines:
-                source_lines = None
-        except TypeError:
-            source_lines = None
-
-        # Initialize globals, and merge in extraglobs.
-        if globs is None:
-            if module is None:
-                globs = {}
-            else:
-                globs = module.__dict__.copy()
-        else:
-            globs = globs.copy()
-        if extraglobs is not None:
-            globs.update(extraglobs)
-        if '__name__' not in globs:
-            globs['__name__'] = '__main__'  # provide a default module name
-
-        # Recursively expore `obj`, extracting DocTests.
-        tests = []
-        self._find(tests, obj, name, module, source_lines, globs, {})
-        # Sort the tests by alpha order of names, for consistency in
-        # verbose-mode output.  This was a feature of doctest in Pythons
-        # <= 2.3 that got lost by accident in 2.4.  It was repaired in
-        # 2.4.4 and 2.5.
-        tests.sort()
-        return tests
-
-    def _from_module(self, module, object):
-        """
-        Return true if the given object is defined in the given
-        module.
-        """
-        if module is None:
-            return True
-        elif inspect.getmodule(object) is not None:
-            return module is inspect.getmodule(object)
-        elif inspect.isfunction(object):
-            return module.__dict__ is object.func_globals
-        elif inspect.isclass(object):
-            return module.__name__ == object.__module__
-        elif hasattr(object, '__module__'):
-            return module.__name__ == object.__module__
-        elif isinstance(object, property):
-            return True # [XX] no way not be sure.
-        else:
-            raise ValueError("object must be a class or function")
-
-    def _find(self, tests, obj, name, module, source_lines, globs, seen):
-        """
-        Find tests for the given object and any contained objects, and
-        add them to `tests`.
-        """
-        if self._verbose:
-            print 'Finding tests in %s' % name
-
-        # If we've already processed this object, then ignore it.
-        if id(obj) in seen:
-            return
-        seen[id(obj)] = 1
-
-        # Find a test for this object, and add it to the list of tests.
-        test = self._get_test(obj, name, module, globs, source_lines)
-        if test is not None:
-            tests.append(test)
-
-        # Look for tests in a module's contained objects.
-        if inspect.ismodule(obj) and self._recurse:
-            for valname, val in obj.__dict__.items():
-                valname = '%s.%s' % (name, valname)
-                # Recurse to functions & classes.
-                if ((inspect.isfunction(val) or inspect.isclass(val)) and
-                    self._from_module(module, val)):
-                    self._find(tests, val, valname, module, source_lines,
-                               globs, seen)
-
-        # Look for tests in a module's __test__ dictionary.
-        if inspect.ismodule(obj) and self._recurse:
-            for valname, val in getattr(obj, '__test__', {}).items():
-                if not isinstance(valname, basestring):
-                    raise ValueError("DocTestFinder.find: __test__ keys "
-                                     "must be strings: %r" %
-                                     (type(valname),))
-                if not (inspect.isfunction(val) or inspect.isclass(val) or
-                        inspect.ismethod(val) or inspect.ismodule(val) or
-                        isinstance(val, basestring)):
-                    raise ValueError("DocTestFinder.find: __test__ values "
-                                     "must be strings, functions, methods, "
-                                     "classes, or modules: %r" %
-                                     (type(val),))
-                valname = '%s.__test__.%s' % (name, valname)
-                self._find(tests, val, valname, module, source_lines,
-                           globs, seen)
-
-        # Look for tests in a class's contained objects.
-        if inspect.isclass(obj) and self._recurse:
-            for valname, val in obj.__dict__.items():
-                # Special handling for staticmethod/classmethod.
-                if isinstance(val, staticmethod):
-                    val = getattr(obj, valname)
-                if isinstance(val, classmethod):
-                    val = getattr(obj, valname).im_func
-
-                # Recurse to methods, properties, and nested classes.
-                if ((inspect.isfunction(val) or inspect.isclass(val) or
-                      isinstance(val, property)) and
-                      self._from_module(module, val)):
-                    valname = '%s.%s' % (name, valname)
-                    self._find(tests, val, valname, module, source_lines,
-                               globs, seen)
-
-    def _get_test(self, obj, name, module, globs, source_lines):
-        """
-        Return a DocTest for the given object, if it defines a docstring;
-        otherwise, return None.
-        """
-        # Extract the object's docstring.  If it doesn't have one,
-        # then return None (no test for this object).
-        if isinstance(obj, basestring):
-            docstring = obj
-        else:
-            try:
-                if obj.__doc__ is None:
-                    docstring = ''
-                else:
-                    docstring = obj.__doc__
-                    if not isinstance(docstring, basestring):
-                        docstring = str(docstring)
-            except (TypeError, AttributeError):
-                docstring = ''
-
-        # Find the docstring's location in the file.
-        lineno = self._find_lineno(obj, source_lines)
-
-        # Don't bother if the docstring is empty.
-        if self._exclude_empty and not docstring:
-            return None
-
-        # Return a DocTest for this object.
-        if module is None:
-            filename = None
-        else:
-            filename = getattr(module, '__file__', module.__name__)
-            if filename[-4:] in (".pyc", ".pyo"):
-                filename = filename[:-1]
-        return self._parser.get_doctest(docstring, globs, name,
-                                        filename, lineno)
-
-    def _find_lineno(self, obj, source_lines):
-        """
-        Return a line number of the given object's docstring.  Note:
-        this method assumes that the object has a docstring.
-        """
-        lineno = None
-
-        # Find the line number for modules.
-        if inspect.ismodule(obj):
-            lineno = 0
-
-        # Find the line number for classes.
-        # Note: this could be fooled if a class is defined multiple
-        # times in a single file.
-        if inspect.isclass(obj):
-            if source_lines is None:
-                return None
-            pat = re.compile(r'^\s*class\s*%s\b' %
-                             getattr(obj, '__name__', '-'))
-            for i, line in enumerate(source_lines):
-                if pat.match(line):
-                    lineno = i
-                    break
-
-        # Find the line number for functions & methods.
-        if inspect.ismethod(obj): obj = obj.im_func
-        if inspect.isfunction(obj): obj = obj.func_code
-        if inspect.istraceback(obj): obj = obj.tb_frame
-        if inspect.isframe(obj): obj = obj.f_code
-        if inspect.iscode(obj):
-            lineno = getattr(obj, 'co_firstlineno', None)-1
-
-        # Find the line number where the docstring starts.  Assume
-        # that it's the first line that begins with a quote mark.
-        # Note: this could be fooled by a multiline function
-        # signature, where a continuation line begins with a quote
-        # mark.
-        if lineno is not None:
-            if source_lines is None:
-                return lineno+1
-            pat = re.compile('(^|.*:)\s*\w*("|\')')
-            for lineno in range(lineno, len(source_lines)):
-                if pat.match(source_lines[lineno]):
-                    return lineno
-
-        # We couldn't find the line number.
-        return None
-
-######################################################################
-## 5. DocTest Runner
-######################################################################
-
-class DocTestRunner:
-    """
-    A class used to run DocTest test cases, and accumulate statistics.
-    The `run` method is used to process a single DocTest case.  It
-    returns a tuple `(f, t)`, where `t` is the number of test cases
-    tried, and `f` is the number of test cases that failed.
-
-        >>> tests = DocTestFinder().find(_TestClass)
-        >>> runner = DocTestRunner(verbose=False)
-        >>> tests.sort(key = lambda test: test.name)
-        >>> for test in tests:
-        ...     print test.name, '->', runner.run(test)
-        _TestClass -> TestResults(failed=0, attempted=2)
-        _TestClass.__init__ -> TestResults(failed=0, attempted=2)
-        _TestClass.get -> TestResults(failed=0, attempted=2)
-        _TestClass.square -> TestResults(failed=0, attempted=1)
-
-    The `summarize` method prints a summary of all the test cases that
-    have been run by the runner, and returns an aggregated `(f, t)`
-    tuple:
-
-        >>> runner.summarize(verbose=1)
-        4 items passed all tests:
-           2 tests in _TestClass
-           2 tests in _TestClass.__init__
-           2 tests in _TestClass.get
-           1 tests in _TestClass.square
-        7 tests in 4 items.
-        7 passed and 0 failed.
-        Test passed.
-        TestResults(failed=0, attempted=7)
-
-    The aggregated number of tried examples and failed examples is
-    also available via the `tries` and `failures` attributes:
-
-        >>> runner.tries
-        7
-        >>> runner.failures
-        0
-
-    The comparison between expected outputs and actual outputs is done
-    by an `OutputChecker`.  This comparison may be customized with a
-    number of option flags; see the documentation for `testmod` for
-    more information.  If the option flags are insufficient, then the
-    comparison may also be customized by passing a subclass of
-    `OutputChecker` to the constructor.
-
-    The test runner's display output can be controlled in two ways.
-    First, an output function (`out) can be passed to
-    `TestRunner.run`; this function will be called with strings that
-    should be displayed.  It defaults to `sys.stdout.write`.  If
-    capturing the output is not sufficient, then the display output
-    can be also customized by subclassing DocTestRunner, and
-    overriding the methods `report_start`, `report_success`,
-    `report_unexpected_exception`, and `report_failure`.
-    """
-    # This divider string is used to separate failure messages, and to
-    # separate sections of the summary.
-    DIVIDER = "*" * 70
-
-    def __init__(self, checker=None, verbose=None, optionflags=0):
-        """
-        Create a new test runner.
-
-        Optional keyword arg `checker` is the `OutputChecker` that
-        should be used to compare the expected outputs and actual
-        outputs of doctest examples.
-
-        Optional keyword arg 'verbose' prints lots of stuff if true,
-        only failures if false; by default, it's true iff '-v' is in
-        sys.argv.
-
-        Optional argument `optionflags` can be used to control how the
-        test runner compares expected output to actual output, and how
-        it displays failures.  See the documentation for `testmod` for
-        more information.
-        """
-        self._checker = checker or OutputChecker()
-        if verbose is None:
-            verbose = '-v' in sys.argv
-        self._verbose = verbose
-        self.optionflags = optionflags
-        self.original_optionflags = optionflags
-
-        # Keep track of the examples we've run.
-        self.tries = 0
-        self.failures = 0
-        self._name2ft = {}
-
-        # Create a fake output target for capturing doctest output.
-        self._fakeout = _SpoofOut()
-
-    #/////////////////////////////////////////////////////////////////
-    # Reporting methods
-    #/////////////////////////////////////////////////////////////////
-
-    def report_start(self, out, test, example):
-        """
-        Report that the test runner is about to process the given
-        example.  (Only displays a message if verbose=True)
-        """
-        if self._verbose:
-            if example.want:
-                out('Trying:\n' + _indent(example.source) +
-                    'Expecting:\n' + _indent(example.want))
-            else:
-                out('Trying:\n' + _indent(example.source) +
-                    'Expecting nothing\n')
-
-    def report_success(self, out, test, example, got):
-        """
-        Report that the given example ran successfully.  (Only
-        displays a message if verbose=True)
-        """
-        if self._verbose:
-            out("ok\n")
-
-    def report_failure(self, out, test, example, got):
-        """
-        Report that the given example failed.
-        """
-        out(self._failure_header(test, example) +
-            self._checker.output_difference(example, got, self.optionflags))
-
-    def report_unexpected_exception(self, out, test, example, exc_info):
-        """
-        Report that the given example raised an unexpected exception.
-        """
-        out(self._failure_header(test, example) +
-            'Exception raised:\n' + _indent(_exception_traceback(exc_info)))
-
-    def _failure_header(self, test, example):
-        out = [self.DIVIDER]
-        if test.filename:
-            if test.lineno is not None and example.lineno is not None:
-                lineno = test.lineno + example.lineno + 1
-            else:
-                lineno = '?'
-            out.append('File "%s", line %s, in %s' %
-                       (test.filename, lineno, test.name))
-        else:
-            out.append('Line %s, in %s' % (example.lineno+1, test.name))
-        out.append('Failed example:')
-        source = example.source
-        out.append(_indent(source))
-        return '\n'.join(out)
-
-    #/////////////////////////////////////////////////////////////////
-    # DocTest Running
-    #/////////////////////////////////////////////////////////////////
-
-    def __run(self, test, compileflags, out):
-        """
-        Run the examples in `test`.  Write the outcome of each example
-        with one of the `DocTestRunner.report_*` methods, using the
-        writer function `out`.  `compileflags` is the set of compiler
-        flags that should be used to execute examples.  Return a tuple
-        `(f, t)`, where `t` is the number of examples tried, and `f`
-        is the number of examples that failed.  The examples are run
-        in the namespace `test.globs`.
-        """
-        # Keep track of the number of failures and tries.
-        failures = tries = 0
-
-        # Save the option flags (since option directives can be used
-        # to modify them).
-        original_optionflags = self.optionflags
-
-        SUCCESS, FAILURE, BOOM = range(3) # `outcome` state
-
-        check = self._checker.check_output
-
-        # Process each example.
-        for examplenum, example in enumerate(test.examples):
-
-            # If REPORT_ONLY_FIRST_FAILURE is set, then suppress
-            # reporting after the first failure.
-            quiet = (self.optionflags & REPORT_ONLY_FIRST_FAILURE and
-                     failures > 0)
-
-            # Merge in the example's options.
-            self.optionflags = original_optionflags
-            if example.options:
-                for (optionflag, val) in example.options.items():
-                    if val:
-                        self.optionflags |= optionflag
-                    else:
-                        self.optionflags &= ~optionflag
-
-            # If 'SKIP' is set, then skip this example.
-            if self.optionflags & SKIP:
-                continue
-
-            # Record that we started this example.
-            tries += 1
-            if not quiet:
-                self.report_start(out, test, example)
-
-            # Use a special filename for compile(), so we can retrieve
-            # the source code during interactive debugging (see
-            # __patched_linecache_getlines).
-            filename = '<doctest %s[%d]>' % (test.name, examplenum)
-
-            # Run the example in the given context (globs), and record
-            # any exception that gets raised.  (But don't intercept
-            # keyboard interrupts.)
-            try:
-                # Don't blink!  This is where the user's code gets run.
-                exec compile(example.source, filename, "single",
-                             compileflags, 1) in test.globs
-                self.debugger.set_continue() # ==== Example Finished ====
-                exception = None
-            except KeyboardInterrupt:
-                raise
-            except:
-                exception = sys.exc_info()
-                self.debugger.set_continue() # ==== Example Finished ====
-
-            got = self._fakeout.getvalue()  # the actual output
-            self._fakeout.truncate(0)
-            outcome = FAILURE   # guilty until proved innocent or insane
-
-            # If the example executed without raising any exceptions,
-            # verify its output.
-            if exception is None:
-                if check(example.want, got, self.optionflags):
-                    outcome = SUCCESS
-
-            # The example raised an exception:  check if it was expected.
-            else:
-                exc_info = sys.exc_info()
-                exc_msg = traceback.format_exception_only(*exc_info[:2])[-1]
-                if not quiet:
-                    got += _exception_traceback(exc_info)
-
-                # If `example.exc_msg` is None, then we weren't expecting
-                # an exception.
-                if example.exc_msg is None:
-                    outcome = BOOM
-
-                # We expected an exception:  see whether it matches.
-                elif check(example.exc_msg, exc_msg, self.optionflags):
-                    outcome = SUCCESS
-
-                # Another chance if they didn't care about the detail.
-                elif self.optionflags & IGNORE_EXCEPTION_DETAIL:
-                    m1 = re.match(r'(?:[^:]*\.)?([^:]*:)', example.exc_msg)
-                    m2 = re.match(r'(?:[^:]*\.)?([^:]*:)', exc_msg)
-                    if m1 and m2 and check(m1.group(1), m2.group(1),
-                                           self.optionflags):
-                        outcome = SUCCESS
-
-            # Report the outcome.
-            if outcome is SUCCESS:
-                if not quiet:
-                    self.report_success(out, test, example, got)
-            elif outcome is FAILURE:
-                if not quiet:
-                    self.report_failure(out, test, example, got)
-                failures += 1
-            elif outcome is BOOM:
-                if not quiet:
-                    self.report_unexpected_exception(out, test, example,
-                                                     exc_info)
-                failures += 1
-            else:
-                assert False, ("unknown outcome", outcome)
-
-        # Restore the option flags (in case they were modified)
-        self.optionflags = original_optionflags
-
-        # Record and return the number of failures and tries.
-        self.__record_outcome(test, failures, tries)
-        return TestResults(failures, tries)
-
-    def __record_outcome(self, test, f, t):
-        """
-        Record the fact that the given DocTest (`test`) generated `f`
-        failures out of `t` tried examples.
-        """
-        f2, t2 = self._name2ft.get(test.name, (0,0))
-        self._name2ft[test.name] = (f+f2, t+t2)
-        self.failures += f
-        self.tries += t
-
-    __LINECACHE_FILENAME_RE = re.compile(r'<doctest '
-                                         r'(?P<name>.+)'
-                                         r'\[(?P<examplenum>\d+)\]>$')
-    def __patched_linecache_getlines(self, filename, module_globals=None):
-        m = self.__LINECACHE_FILENAME_RE.match(filename)
-        if m and m.group('name') == self.test.name:
-            example = self.test.examples[int(m.group('examplenum'))]
-            source = example.source
-            if isinstance(source, unicode):
-                source = source.encode('ascii', 'backslashreplace')
-            return source.splitlines(True)
-        else:
-            return self.save_linecache_getlines(filename, module_globals)
-
-    def run(self, test, compileflags=None, out=None, clear_globs=True):
-        """
-        Run the examples in `test`, and display the results using the
-        writer function `out`.
-
-        The examples are run in the namespace `test.globs`.  If
-        `clear_globs` is true (the default), then this namespace will
-        be cleared after the test runs, to help with garbage
-        collection.  If you would like to examine the namespace after
-        the test completes, then use `clear_globs=False`.
-
-        `compileflags` gives the set of flags that should be used by
-        the Python compiler when running the examples.  If not
-        specified, then it will default to the set of future-import
-        flags that apply to `globs`.
-
-        The output of each example is checked using
-        `DocTestRunner.check_output`, and the results are formatted by
-        the `DocTestRunner.report_*` methods.
-        """
-        self.test = test
-
-        if compileflags is None:
-            compileflags = _extract_future_flags(test.globs)
-
-        save_stdout = sys.stdout
-        if out is None:
-            out = save_stdout.write
-        sys.stdout = self._fakeout
-
-        # Patch pdb.set_trace to restore sys.stdout during interactive
-        # debugging (so it's not still redirected to self._fakeout).
-        # Note that the interactive output will go to *our*
-        # save_stdout, even if that's not the real sys.stdout; this
-        # allows us to write test cases for the set_trace behavior.
-        save_set_trace = pdb.set_trace
-        self.debugger = _OutputRedirectingPdb(save_stdout)
-        self.debugger.reset()
-        pdb.set_trace = self.debugger.set_trace
-
-        # Patch linecache.getlines, so we can see the example's source
-        # when we're inside the debugger.
-        self.save_linecache_getlines = linecache.getlines
-        linecache.getlines = self.__patched_linecache_getlines
-
-        # Make sure sys.displayhook just prints the value to stdout
-        save_displayhook = sys.displayhook
-        sys.displayhook = sys.__displayhook__
-
-        try:
-            return self.__run(test, compileflags, out)
-        finally:
-            sys.stdout = save_stdout
-            pdb.set_trace = save_set_trace
-            linecache.getlines = self.save_linecache_getlines
-            sys.displayhook = save_displayhook
-            if clear_globs:
-                test.globs.clear()
-
-    #/////////////////////////////////////////////////////////////////
-    # Summarization
-    #/////////////////////////////////////////////////////////////////
-    def summarize(self, verbose=None):
-        """
-        Print a summary of all the test cases that have been run by
-        this DocTestRunner, and return a tuple `(f, t)`, where `f` is
-        the total number of failed examples, and `t` is the total
-        number of tried examples.
-
-        The optional `verbose` argument controls how detailed the
-        summary is.  If the verbosity is not specified, then the
-        DocTestRunner's verbosity is used.
-        """
-        if verbose is None:
-            verbose = self._verbose
-        notests = []
-        passed = []
-        failed = []
-        totalt = totalf = 0
-        for x in self._name2ft.items():
-            name, (f, t) = x
-            assert f <= t
-            totalt += t
-            totalf += f
-            if t == 0:
-                notests.append(name)
-            elif f == 0:
-                passed.append( (name, t) )
-            else:
-                failed.append(x)
-        if verbose:
-            if notests:
-                print len(notests), "items had no tests:"
-                notests.sort()
-                for thing in notests:
-                    print "   ", thing
-            if passed:
-                print len(passed), "items passed all tests:"
-                passed.sort()
-                for thing, count in passed:
-                    print " %3d tests in %s" % (count, thing)
-        if failed:
-            print self.DIVIDER
-            print len(failed), "items had failures:"
-            failed.sort()
-            for thing, (f, t) in failed:
-                print " %3d of %3d in %s" % (f, t, thing)
-        if verbose:
-            print totalt, "tests in", len(self._name2ft), "items."
-            print totalt - totalf, "passed and", totalf, "failed."
-        if totalf:
-            print "***Test Failed***", totalf, "failures."
-        elif verbose:
-            print "Test passed."
-        return TestResults(totalf, totalt)
-
-    #/////////////////////////////////////////////////////////////////
-    # Backward compatibility cruft to maintain doctest.master.
-    #/////////////////////////////////////////////////////////////////
-    def merge(self, other):
-        d = self._name2ft
-        for name, (f, t) in other._name2ft.items():
-            if name in d:
-                # Don't print here by default, since doing
-                #     so breaks some of the buildbots
-                #print "*** DocTestRunner.merge: '" + name + "' in both" \
-                #    " testers; summing outcomes."
-                f2, t2 = d[name]
-                f = f + f2
-                t = t + t2
-            d[name] = f, t
-
-class OutputChecker:
-    """
-    A class used to check the whether the actual output from a doctest
-    example matches the expected output.  `OutputChecker` defines two
-    methods: `check_output`, which compares a given pair of outputs,
-    and returns true if they match; and `output_difference`, which
-    returns a string describing the differences between two outputs.
-    """
-    def check_output(self, want, got, optionflags):
-        """
-        Return True iff the actual output from an example (`got`)
-        matches the expected output (`want`).  These strings are
-        always considered to match if they are identical; but
-        depending on what option flags the test runner is using,
-        several non-exact match types are also possible.  See the
-        documentation for `TestRunner` for more information about
-        option flags.
-        """
-        # Handle the common case first, for efficiency:
-        # if they're string-identical, always return true.
-        if got == want:
-            return True
-
-        # The values True and False replaced 1 and 0 as the return
-        # value for boolean comparisons in Python 2.3.
-        if not (optionflags & DONT_ACCEPT_TRUE_FOR_1):
-            if (got,want) == ("True\n", "1\n"):
-                return True
-            if (got,want) == ("False\n", "0\n"):
-                return True
-
-        # <BLANKLINE> can be used as a special sequence to signify a
-        # blank line, unless the DONT_ACCEPT_BLANKLINE flag is used.
-        if not (optionflags & DONT_ACCEPT_BLANKLINE):
-            # Replace <BLANKLINE> in want with a blank line.
-            want = re.sub('(?m)^%s\s*?$' % re.escape(BLANKLINE_MARKER),
-                          '', want)
-            # If a line in got contains only spaces, then remove the
-            # spaces.
-            got = re.sub('(?m)^\s*?$', '', got)
-            if got == want:
-                return True
-
-        # This flag causes doctest to ignore any differences in the
-        # contents of whitespace strings.  Note that this can be used
-        # in conjunction with the ELLIPSIS flag.
-        if optionflags & NORMALIZE_WHITESPACE:
-            got = ' '.join(got.split())
-            want = ' '.join(want.split())
-            if got == want:
-                return True
-
-        # The ELLIPSIS flag says to let the sequence "..." in `want`
-        # match any substring in `got`.
-        if optionflags & ELLIPSIS:
-            if _ellipsis_match(want, got):
-                return True
-
-        # We didn't find any match; return false.
-        return False
-
-    # Should we do a fancy diff?
-    def _do_a_fancy_diff(self, want, got, optionflags):
-        # Not unless they asked for a fancy diff.
-        if not optionflags & (REPORT_UDIFF |
-                              REPORT_CDIFF |
-                              REPORT_NDIFF):
-            return False
-
-        # If expected output uses ellipsis, a meaningful fancy diff is
-        # too hard ... or maybe not.  In two real-life failures Tim saw,
-        # a diff was a major help anyway, so this is commented out.
-        # [todo] _ellipsis_match() knows which pieces do and don't match,
-        # and could be the basis for a kick-ass diff in this case.
-        ##if optionflags & ELLIPSIS and ELLIPSIS_MARKER in want:
-        ##    return False
-
-        # ndiff does intraline difference marking, so can be useful even
-        # for 1-line differences.
-        if optionflags & REPORT_NDIFF:
-            return True
-
-        # The other diff types need at least a few lines to be helpful.
-        return want.count('\n') > 2 and got.count('\n') > 2
-
-    def output_difference(self, example, got, optionflags):
-        """
-        Return a string describing the differences between the
-        expected output for a given example (`example`) and the actual
-        output (`got`).  `optionflags` is the set of option flags used
-        to compare `want` and `got`.
-        """
-        want = example.want
-        # If <BLANKLINE>s are being used, then replace blank lines
-        # with <BLANKLINE> in the actual output string.
-        if not (optionflags & DONT_ACCEPT_BLANKLINE):
-            got = re.sub('(?m)^[ ]*(?=\n)', BLANKLINE_MARKER, got)
-
-        # Check if we should use diff.
-        if self._do_a_fancy_diff(want, got, optionflags):
-            # Split want & got into lines.
-            want_lines = want.splitlines(True)  # True == keep line ends
-            got_lines = got.splitlines(True)
-            # Use difflib to find their differences.
-            if optionflags & REPORT_UDIFF:
-                diff = difflib.unified_diff(want_lines, got_lines, n=2)
-                diff = list(diff)[2:] # strip the diff header
-                kind = 'unified diff with -expected +actual'
-            elif optionflags & REPORT_CDIFF:
-                diff = difflib.context_diff(want_lines, got_lines, n=2)
-                diff = list(diff)[2:] # strip the diff header
-                kind = 'context diff with expected followed by actual'
-            elif optionflags & REPORT_NDIFF:
-                engine = difflib.Differ(charjunk=difflib.IS_CHARACTER_JUNK)
-                diff = list(engine.compare(want_lines, got_lines))
-                kind = 'ndiff with -expected +actual'
-            else:
-                assert 0, 'Bad diff option'
-            # Remove trailing whitespace on diff output.
-            diff = [line.rstrip() + '\n' for line in diff]
-            return 'Differences (%s):\n' % kind + _indent(''.join(diff))
-
-        # If we're not using diff, then simply list the expected
-        # output followed by the actual output.
-        if want and got:
-            return 'Expected:\n%sGot:\n%s' % (_indent(want), _indent(got))
-        elif want:
-            return 'Expected:\n%sGot nothing\n' % _indent(want)
-        elif got:
-            return 'Expected nothing\nGot:\n%s' % _indent(got)
-        else:
-            return 'Expected nothing\nGot nothing\n'
-
-class DocTestFailure(Exception):
-    """A DocTest example has failed in debugging mode.
-
-    The exception instance has variables:
-
-    - test: the DocTest object being run
-
-    - example: the Example object that failed
-
-    - got: the actual output
-    """
-    def __init__(self, test, example, got):
-        self.test = test
-        self.example = example
-        self.got = got
-
-    def __str__(self):
-        return str(self.test)
-
-class UnexpectedException(Exception):
-    """A DocTest example has encountered an unexpected exception
-
-    The exception instance has variables:
-
-    - test: the DocTest object being run
-
-    - example: the Example object that failed
-
-    - exc_info: the exception info
-    """
-    def __init__(self, test, example, exc_info):
-        self.test = test
-        self.example = example
-        self.exc_info = exc_info
-
-    def __str__(self):
-        return str(self.test)
-
-class DebugRunner(DocTestRunner):
-    r"""Run doc tests but raise an exception as soon as there is a failure.
-
-       If an unexpected exception occurs, an UnexpectedException is raised.
-       It contains the test, the example, and the original exception:
-
-         >>> runner = DebugRunner(verbose=False)
-         >>> test = DocTestParser().get_doctest('>>> raise KeyError\n42',
-         ...                                    {}, 'foo', 'foo.py', 0)
-         >>> try:
-         ...     runner.run(test)
-         ... except UnexpectedException, failure:
-         ...     pass
-
-         >>> failure.test is test
-         True
-
-         >>> failure.example.want
-         '42\n'
-
-         >>> exc_info = failure.exc_info
-         >>> raise exc_info[0], exc_info[1], exc_info[2]
-         Traceback (most recent call last):
-         ...
-         KeyError
-
-       We wrap the original exception to give the calling application
-       access to the test and example information.
-
-       If the output doesn't match, then a DocTestFailure is raised:
-
-         >>> test = DocTestParser().get_doctest('''
-         ...      >>> x = 1
-         ...      >>> x
-         ...      2
-         ...      ''', {}, 'foo', 'foo.py', 0)
-
-         >>> try:
-         ...    runner.run(test)
-         ... except DocTestFailure, failure:
-         ...    pass
-
-       DocTestFailure objects provide access to the test:
-
-         >>> failure.test is test
-         True
-
-       As well as to the example:
-
-         >>> failure.example.want
-         '2\n'
-
-       and the actual output:
-
-         >>> failure.got
-         '1\n'
-
-       If a failure or error occurs, the globals are left intact:
-
-         >>> del test.globs['__builtins__']
-         >>> test.globs
-         {'x': 1}
-
-         >>> test = DocTestParser().get_doctest('''
-         ...      >>> x = 2
-         ...      >>> raise KeyError
-         ...      ''', {}, 'foo', 'foo.py', 0)
-
-         >>> runner.run(test)
-         Traceback (most recent call last):
-         ...
-         UnexpectedException: <DocTest foo from foo.py:0 (2 examples)>
-
-         >>> del test.globs['__builtins__']
-         >>> test.globs
-         {'x': 2}
-
-       But the globals are cleared if there is no error:
-
-         >>> test = DocTestParser().get_doctest('''
-         ...      >>> x = 2
-         ...      ''', {}, 'foo', 'foo.py', 0)
-
-         >>> runner.run(test)
-         TestResults(failed=0, attempted=1)
-
-         >>> test.globs
-         {}
-
-       """
-
-    def run(self, test, compileflags=None, out=None, clear_globs=True):
-        r = DocTestRunner.run(self, test, compileflags, out, False)
-        if clear_globs:
-            test.globs.clear()
-        return r
-
-    def report_unexpected_exception(self, out, test, example, exc_info):
-        raise UnexpectedException(test, example, exc_info)
-
-    def report_failure(self, out, test, example, got):
-        raise DocTestFailure(test, example, got)
-
-######################################################################
-## 6. Test Functions
-######################################################################
-# These should be backwards compatible.
-
-# For backward compatibility, a global instance of a DocTestRunner
-# class, updated by testmod.
-master = None
-
-def testmod(m=None, name=None, globs=None, verbose=None,
-            report=True, optionflags=0, extraglobs=None,
-            raise_on_error=False, exclude_empty=False):
-    """m=None, name=None, globs=None, verbose=None, report=True,
-       optionflags=0, extraglobs=None, raise_on_error=False,
-       exclude_empty=False
-
-    Test examples in docstrings in functions and classes reachable
-    from module m (or the current module if m is not supplied), starting
-    with m.__doc__.
-
-    Also test examples reachable from dict m.__test__ if it exists and is
-    not None.  m.__test__ maps names to functions, classes and strings;
-    function and class docstrings are tested even if the name is private;
-    strings are tested directly, as if they were docstrings.
-
-    Return (#failures, #tests).
-
-    See help(doctest) for an overview.
-
-    Optional keyword arg "name" gives the name of the module; by default
-    use m.__name__.
-
-    Optional keyword arg "globs" gives a dict to be used as the globals
-    when executing examples; by default, use m.__dict__.  A copy of this
-    dict is actually used for each docstring, so that each docstring's
-    examples start with a clean slate.
-
-    Optional keyword arg "extraglobs" gives a dictionary that should be
-    merged into the globals that are used to execute examples.  By
-    default, no extra globals are used.  This is new in 2.4.
-
-    Optional keyword arg "verbose" prints lots of stuff if true, prints
-    only failures if false; by default, it's true iff "-v" is in sys.argv.
-
-    Optional keyword arg "report" prints a summary at the end when true,
-    else prints nothing at the end.  In verbose mode, the summary is
-    detailed, else very brief (in fact, empty if all tests passed).
-
-    Optional keyword arg "optionflags" or's together module constants,
-    and defaults to 0.  This is new in 2.3.  Possible values (see the
-    docs for details):
-
-        DONT_ACCEPT_TRUE_FOR_1
-        DONT_ACCEPT_BLANKLINE
-        NORMALIZE_WHITESPACE
-        ELLIPSIS
-        SKIP
-        IGNORE_EXCEPTION_DETAIL
-        REPORT_UDIFF
-        REPORT_CDIFF
-        REPORT_NDIFF
-        REPORT_ONLY_FIRST_FAILURE
-
-    Optional keyword arg "raise_on_error" raises an exception on the
-    first unexpected exception or failure. This allows failures to be
-    post-mortem debugged.
-
-    Advanced tomfoolery:  testmod runs methods of a local instance of
-    class doctest.Tester, then merges the results into (or creates)
-    global Tester instance doctest.master.  Methods of doctest.master
-    can be called directly too, if you want to do something unusual.
-    Passing report=0 to testmod is especially useful then, to delay
-    displaying a summary.  Invoke doctest.master.summarize(verbose)
-    when you're done fiddling.
-    """
-    global master
-
-    # If no module was given, then use __main__.
-    if m is None:
-        # DWA - m will still be None if this wasn't invoked from the command
-        # line, in which case the following TypeError is about as good an error
-        # as we should expect
-        m = sys.modules.get('__main__')
-
-    # Check that we were actually given a module.
-    if not inspect.ismodule(m):
-        raise TypeError("testmod: module required; %r" % (m,))
-
-    # If no name was given, then use the module's name.
-    if name is None:
-        name = m.__name__
-
-    # Find, parse, and run all tests in the given module.
-    finder = DocTestFinder(exclude_empty=exclude_empty)
-
-    if raise_on_error:
-        runner = DebugRunner(verbose=verbose, optionflags=optionflags)
-    else:
-        runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
-
-    for test in finder.find(m, name, globs=globs, extraglobs=extraglobs):
-        runner.run(test)
-
-    if report:
-        runner.summarize()
-
-    if master is None:
-        master = runner
-    else:
-        master.merge(runner)
-
-    return TestResults(runner.failures, runner.tries)
-
-def testfile(filename, module_relative=True, name=None, package=None,
-             globs=None, verbose=None, report=True, optionflags=0,
-             extraglobs=None, raise_on_error=False, parser=DocTestParser(),
-             encoding=None):
-    """
-    Test examples in the given file.  Return (#failures, #tests).
-
-    Optional keyword arg "module_relative" specifies how filenames
-    should be interpreted:
-
-      - If "module_relative" is True (the default), then "filename"
-         specifies a module-relative path.  By default, this path is
-         relative to the calling module's directory; but if the
-         "package" argument is specified, then it is relative to that
-         package.  To ensure os-independence, "filename" should use
-         "/" characters to separate path segments, and should not
-         be an absolute path (i.e., it may not begin with "/").
-
-      - If "module_relative" is False, then "filename" specifies an
-        os-specific path.  The path may be absolute or relative (to
-        the current working directory).
-
-    Optional keyword arg "name" gives the name of the test; by default
-    use the file's basename.
-
-    Optional keyword argument "package" is a Python package or the
-    name of a Python package whose directory should be used as the
-    base directory for a module relative filename.  If no package is
-    specified, then the calling module's directory is used as the base
-    directory for module relative filenames.  It is an error to
-    specify "package" if "module_relative" is False.
-
-    Optional keyword arg "globs" gives a dict to be used as the globals
-    when executing examples; by default, use {}.  A copy of this dict
-    is actually used for each docstring, so that each docstring's
-    examples start with a clean slate.
-
-    Optional keyword arg "extraglobs" gives a dictionary that should be
-    merged into the globals that are used to execute examples.  By
-    default, no extra globals are used.
-
-    Optional keyword arg "verbose" prints lots of stuff if true, prints
-    only failures if false; by default, it's true iff "-v" is in sys.argv.
-
-    Optional keyword arg "report" prints a summary at the end when true,
-    else prints nothing at the end.  In verbose mode, the summary is
-    detailed, else very brief (in fact, empty if all tests passed).
-
-    Optional keyword arg "optionflags" or's together module constants,
-    and defaults to 0.  Possible values (see the docs for details):
-
-        DONT_ACCEPT_TRUE_FOR_1
-        DONT_ACCEPT_BLANKLINE
-        NORMALIZE_WHITESPACE
-        ELLIPSIS
-        SKIP
-        IGNORE_EXCEPTION_DETAIL
-        REPORT_UDIFF
-        REPORT_CDIFF
-        REPORT_NDIFF
-        REPORT_ONLY_FIRST_FAILURE
-
-    Optional keyword arg "raise_on_error" raises an exception on the
-    first unexpected exception or failure. This allows failures to be
-    post-mortem debugged.
-
-    Optional keyword arg "parser" specifies a DocTestParser (or
-    subclass) that should be used to extract tests from the files.
-
-    Optional keyword arg "encoding" specifies an encoding that should
-    be used to convert the file to unicode.
-
-    Advanced tomfoolery:  testmod runs methods of a local instance of
-    class doctest.Tester, then merges the results into (or creates)
-    global Tester instance doctest.master.  Methods of doctest.master
-    can be called directly too, if you want to do something unusual.
-    Passing report=0 to testmod is especially useful then, to delay
-    displaying a summary.  Invoke doctest.master.summarize(verbose)
-    when you're done fiddling.
-    """
-    global master
-
-    if package and not module_relative:
-        raise ValueError("Package may only be specified for module-"
-                         "relative paths.")
-
-    # Relativize the path
-    text, filename = _load_testfile(filename, package, module_relative)
-
-    # If no name was given, then use the file's name.
-    if name is None:
-        name = os.path.basename(filename)
-
-    # Assemble the globals.
-    if globs is None:
-        globs = {}
-    else:
-        globs = globs.copy()
-    if extraglobs is not None:
-        globs.update(extraglobs)
-    if '__name__' not in globs:
-        globs['__name__'] = '__main__'
-
-    if raise_on_error:
-        runner = DebugRunner(verbose=verbose, optionflags=optionflags)
-    else:
-        runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
-
-    if encoding is not None:
-        text = text.decode(encoding)
-
-    # Read the file, convert it to a test, and run it.
-    test = parser.get_doctest(text, globs, name, filename, 0)
-    runner.run(test)
-
-    if report:
-        runner.summarize()
-
-    if master is None:
-        master = runner
-    else:
-        master.merge(runner)
-
-    return TestResults(runner.failures, runner.tries)
-
-def run_docstring_examples(f, globs, verbose=False, name="NoName",
-                           compileflags=None, optionflags=0):
-    """
-    Test examples in the given object's docstring (`f`), using `globs`
-    as globals.  Optional argument `name` is used in failure messages.
-    If the optional argument `verbose` is true, then generate output
-    even if there are no failures.
-
-    `compileflags` gives the set of flags that should be used by the
-    Python compiler when running the examples.  If not specified, then
-    it will default to the set of future-import flags that apply to
-    `globs`.
-
-    Optional keyword arg `optionflags` specifies options for the
-    testing and output.  See the documentation for `testmod` for more
-    information.
-    """
-    # Find, parse, and run all tests in the given module.
-    finder = DocTestFinder(verbose=verbose, recurse=False)
-    runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
-    for test in finder.find(f, name, globs=globs):
-        runner.run(test, compileflags=compileflags)
-
-######################################################################
-## 7. Tester
-######################################################################
-# This is provided only for backwards compatibility.  It's not
-# actually used in any way.
-
-class Tester:
-    def __init__(self, mod=None, globs=None, verbose=None, optionflags=0):
-
-        warnings.warn("class Tester is deprecated; "
-                      "use class doctest.DocTestRunner instead",
-                      DeprecationWarning, stacklevel=2)
-        if mod is None and globs is None:
-            raise TypeError("Tester.__init__: must specify mod or globs")
-        if mod is not None and not inspect.ismodule(mod):
-            raise TypeError("Tester.__init__: mod must be a module; %r" %
-                            (mod,))
-        if globs is None:
-            globs = mod.__dict__
-        self.globs = globs
-
-        self.verbose = verbose
-        self.optionflags = optionflags
-        self.testfinder = DocTestFinder()
-        self.testrunner = DocTestRunner(verbose=verbose,
-                                        optionflags=optionflags)
-
-    def runstring(self, s, name):
-        test = DocTestParser().get_doctest(s, self.globs, name, None, None)
-        if self.verbose:
-            print "Running string", name
-        (f,t) = self.testrunner.run(test)
-        if self.verbose:
-            print f, "of", t, "examples failed in string", name
-        return TestResults(f,t)
-
-    def rundoc(self, object, name=None, module=None):
-        f = t = 0
-        tests = self.testfinder.find(object, name, module=module,
-                                     globs=self.globs)
-        for test in tests:
-            (f2, t2) = self.testrunner.run(test)
-            (f,t) = (f+f2, t+t2)
-        return TestResults(f,t)
-
-    def rundict(self, d, name, module=None):
-        import types
-        m = types.ModuleType(name)
-        m.__dict__.update(d)
-        if module is None:
-            module = False
-        return self.rundoc(m, name, module)
-
-    def run__test__(self, d, name):
-        import types
-        m = types.ModuleType(name)
-        m.__test__ = d
-        return self.rundoc(m, name)
-
-    def summarize(self, verbose=None):
-        return self.testrunner.summarize(verbose)
-
-    def merge(self, other):
-        self.testrunner.merge(other.testrunner)
-
-######################################################################
-## 8. Unittest Support
-######################################################################
-
-_unittest_reportflags = 0
-
-def set_unittest_reportflags(flags):
-    """Sets the unittest option flags.
-
-    The old flag is returned so that a runner could restore the old
-    value if it wished to:
-
-      >>> import doctest
-      >>> old = doctest._unittest_reportflags
-      >>> doctest.set_unittest_reportflags(REPORT_NDIFF |
-      ...                          REPORT_ONLY_FIRST_FAILURE) == old
-      True
-
-      >>> doctest._unittest_reportflags == (REPORT_NDIFF |
-      ...                                   REPORT_ONLY_FIRST_FAILURE)
-      True
-
-    Only reporting flags can be set:
-
-      >>> doctest.set_unittest_reportflags(ELLIPSIS)
-      Traceback (most recent call last):
-      ...
-      ValueError: ('Only reporting flags allowed', 8)
-
-      >>> doctest.set_unittest_reportflags(old) == (REPORT_NDIFF |
-      ...                                   REPORT_ONLY_FIRST_FAILURE)
-      True
-    """
-    global _unittest_reportflags
-
-    if (flags & REPORTING_FLAGS) != flags:
-        raise ValueError("Only reporting flags allowed", flags)
-    old = _unittest_reportflags
-    _unittest_reportflags = flags
-    return old
-
-
-class DocTestCase(unittest.TestCase):
-
-    def __init__(self, test, optionflags=0, setUp=None, tearDown=None,
-                 checker=None):
-
-        unittest.TestCase.__init__(self)
-        self._dt_optionflags = optionflags
-        self._dt_checker = checker
-        self._dt_test = test
-        self._dt_setUp = setUp
-        self._dt_tearDown = tearDown
-
-    def setUp(self):
-        test = self._dt_test
-
-        if self._dt_setUp is not None:
-            self._dt_setUp(test)
-
-    def tearDown(self):
-        test = self._dt_test
-
-        if self._dt_tearDown is not None:
-            self._dt_tearDown(test)
-
-        test.globs.clear()
-
-    def runTest(self):
-        test = self._dt_test
-        old = sys.stdout
-        new = StringIO()
-        optionflags = self._dt_optionflags
-
-        if not (optionflags & REPORTING_FLAGS):
-            # The option flags don't include any reporting flags,
-            # so add the default reporting flags
-            optionflags |= _unittest_reportflags
-
-        runner = DocTestRunner(optionflags=optionflags,
-                               checker=self._dt_checker, verbose=False)
-
-        try:
-            runner.DIVIDER = "-"*70
-            failures, tries = runner.run(
-                test, out=new.write, clear_globs=False)
-        finally:
-            sys.stdout = old
-
-        if failures:
-            raise self.failureException(self.format_failure(new.getvalue()))
-
-    def format_failure(self, err):
-        test = self._dt_test
-        if test.lineno is None:
-            lineno = 'unknown line number'
-        else:
-            lineno = '%s' % test.lineno
-        lname = '.'.join(test.name.split('.')[-1:])
-        return ('Failed doctest test for %s\n'
-                '  File "%s", line %s, in %s\n\n%s'
-                % (test.name, test.filename, lineno, lname, err)
-                )
-
-    def debug(self):
-        r"""Run the test case without results and without catching exceptions
-
-           The unit test framework includes a debug method on test cases
-           and test suites to support post-mortem debugging.  The test code
-           is run in such a way that errors are not caught.  This way a
-           caller can catch the errors and initiate post-mortem debugging.
-
-           The DocTestCase provides a debug method that raises
-           UnexpectedException errors if there is an unexpected
-           exception:
-
-             >>> test = DocTestParser().get_doctest('>>> raise KeyError\n42',
-             ...                {}, 'foo', 'foo.py', 0)
-             >>> case = DocTestCase(test)
-             >>> try:
-             ...     case.debug()
-             ... except UnexpectedException, failure:
-             ...     pass
-
-           The UnexpectedException contains the test, the example, and
-           the original exception:
-
-             >>> failure.test is test
-             True
-
-             >>> failure.example.want
-             '42\n'
-
-             >>> exc_info = failure.exc_info
-             >>> raise exc_info[0], exc_info[1], exc_info[2]
-             Traceback (most recent call last):
-             ...
-             KeyError
-
-           If the output doesn't match, then a DocTestFailure is raised:
-
-             >>> test = DocTestParser().get_doctest('''
-             ...      >>> x = 1
-             ...      >>> x
-             ...      2
-             ...      ''', {}, 'foo', 'foo.py', 0)
-             >>> case = DocTestCase(test)
-
-             >>> try:
-             ...    case.debug()
-             ... except DocTestFailure, failure:
-             ...    pass
-
-           DocTestFailure objects provide access to the test:
-
-             >>> failure.test is test
-             True
-
-           As well as to the example:
-
-             >>> failure.example.want
-             '2\n'
-
-           and the actual output:
-
-             >>> failure.got
-             '1\n'
-
-           """
-
-        self.setUp()
-        runner = DebugRunner(optionflags=self._dt_optionflags,
-                             checker=self._dt_checker, verbose=False)
-        runner.run(self._dt_test, clear_globs=False)
-        self.tearDown()
-
-    def id(self):
-        return self._dt_test.name
-
-    def __repr__(self):
-        name = self._dt_test.name.split('.')
-        return "%s (%s)" % (name[-1], '.'.join(name[:-1]))
-
-    __str__ = __repr__
-
-    def shortDescription(self):
-        return "Doctest: " + self._dt_test.name
-
-class SkipDocTestCase(DocTestCase):
-    def __init__(self):
-        DocTestCase.__init__(self, None)
-
-    def setUp(self):
-        self.skipTest("DocTestSuite will not work with -O2 and above")
-
-    def test_skip(self):
-        pass
-
-    def shortDescription(self):
-        return "Skipping tests from %s" % module.__name__
-
-def DocTestSuite(module=None, globs=None, extraglobs=None, test_finder=None,
-                 **options):
-    """
-    Convert doctest tests for a module to a unittest test suite.
-
-    This converts each documentation string in a module that
-    contains doctest tests to a unittest test case.  If any of the
-    tests in a doc string fail, then the test case fails.  An exception
-    is raised showing the name of the file containing the test and a
-    (sometimes approximate) line number.
-
-    The `module` argument provides the module to be tested.  The argument
-    can be either a module or a module name.
-
-    If no argument is given, the calling module is used.
-
-    A number of options may be provided as keyword arguments:
-
-    setUp
-      A set-up function.  This is called before running the
-      tests in each file. The setUp function will be passed a DocTest
-      object.  The setUp function can access the test globals as the
-      globs attribute of the test passed.
-
-    tearDown
-      A tear-down function.  This is called after running the
-      tests in each file.  The tearDown function will be passed a DocTest
-      object.  The tearDown function can access the test globals as the
-      globs attribute of the test passed.
-
-    globs
-      A dictionary containing initial global variables for the tests.
-
-    optionflags
-       A set of doctest option flags expressed as an integer.
-    """
-
-    if test_finder is None:
-        test_finder = DocTestFinder()
-
-    module = _normalize_module(module)
-    tests = test_finder.find(module, globs=globs, extraglobs=extraglobs)
-
-    if not tests and sys.flags.optimize >=2:
-        # Skip doctests when running with -O2
-        suite = unittest.TestSuite()
-        suite.addTest(SkipDocTestCase())
-        return suite
-    elif not tests:
-        # Why do we want to do this? Because it reveals a bug that might
-        # otherwise be hidden.
-        raise ValueError(module, "has no tests")
-
-    tests.sort()
-    suite = unittest.TestSuite()
-
-    for test in tests:
-        if len(test.examples) == 0:
-            continue
-        if not test.filename:
-            filename = module.__file__
-            if filename[-4:] in (".pyc", ".pyo"):
-                filename = filename[:-1]
-            test.filename = filename
-        suite.addTest(DocTestCase(test, **options))
-
-    return suite
-
-class DocFileCase(DocTestCase):
-
-    def id(self):
-        return '_'.join(self._dt_test.name.split('.'))
-
-    def __repr__(self):
-        return self._dt_test.filename
-    __str__ = __repr__
-
-    def format_failure(self, err):
-        return ('Failed doctest test for %s\n  File "%s", line 0\n\n%s'
-                % (self._dt_test.name, self._dt_test.filename, err)
-                )
-
-def DocFileTest(path, module_relative=True, package=None,
-                globs=None, parser=DocTestParser(),
-                encoding=None, **options):
-    if globs is None:
-        globs = {}
-    else:
-        globs = globs.copy()
-
-    if package and not module_relative:
-        raise ValueError("Package may only be specified for module-"
-                         "relative paths.")
-
-    # Relativize the path.
-    doc, path = _load_testfile(path, package, module_relative)
-
-    if "__file__" not in globs:
-        globs["__file__"] = path
-
-    # Find the file and read it.
-    name = os.path.basename(path)
-
-    # If an encoding is specified, use it to convert the file to unicode
-    if encoding is not None:
-        doc = doc.decode(encoding)
-
-    # Convert it to a test, and wrap it in a DocFileCase.
-    test = parser.get_doctest(doc, globs, name, path, 0)
-    return DocFileCase(test, **options)
-
-def DocFileSuite(*paths, **kw):
-    """A unittest suite for one or more doctest files.
-
-    The path to each doctest file is given as a string; the
-    interpretation of that string depends on the keyword argument
-    "module_relative".
-
-    A number of options may be provided as keyword arguments:
-
-    module_relative
-      If "module_relative" is True, then the given file paths are
-      interpreted as os-independent module-relative paths.  By
-      default, these paths are relative to the calling module's
-      directory; but if the "package" argument is specified, then
-      they are relative to that package.  To ensure os-independence,
-      "filename" should use "/" characters to separate path
-      segments, and may not be an absolute path (i.e., it may not
-      begin with "/").
-
-      If "module_relative" is False, then the given file paths are
-      interpreted as os-specific paths.  These paths may be absolute
-      or relative (to the current working directory).
-
-    package
-      A Python package or the name of a Python package whose directory
-      should be used as the base directory for module relative paths.
-      If "package" is not specified, then the calling module's
-      directory is used as the base directory for module relative
-      filenames.  It is an error to specify "package" if
-      "module_relative" is False.
-
-    setUp
-      A set-up function.  This is called before running the
-      tests in each file. The setUp function will be passed a DocTest
-      object.  The setUp function can access the test globals as the
-      globs attribute of the test passed.
-
-    tearDown
-      A tear-down function.  This is called after running the
-      tests in each file.  The tearDown function will be passed a DocTest
-      object.  The tearDown function can access the test globals as the
-      globs attribute of the test passed.
-
-    globs
-      A dictionary containing initial global variables for the tests.
-
-    optionflags
-      A set of doctest option flags expressed as an integer.
-
-    parser
-      A DocTestParser (or subclass) that should be used to extract
-      tests from the files.
-
-    encoding
-      An encoding that will be used to convert the files to unicode.
-    """
-    suite = unittest.TestSuite()
-
-    # We do this here so that _normalize_module is called at the right
-    # level.  If it were called in DocFileTest, then this function
-    # would be the caller and we might guess the package incorrectly.
-    if kw.get('module_relative', True):
-        kw['package'] = _normalize_module(kw.get('package'))
-
-    for path in paths:
-        suite.addTest(DocFileTest(path, **kw))
-
-    return suite
-
-######################################################################
-## 9. Debugging Support
-######################################################################
-
-def script_from_examples(s):
-    r"""Extract script from text with examples.
-
-       Converts text with examples to a Python script.  Example input is
-       converted to regular code.  Example output and all other words
-       are converted to comments:
-
-       >>> text = '''
-       ...       Here are examples of simple math.
-       ...
-       ...           Python has super accurate integer addition
-       ...
-       ...           >>> 2 + 2
-       ...           5
-       ...
-       ...           And very friendly error messages:
-       ...
-       ...           >>> 1/0
-       ...           To Infinity
-       ...           And
-       ...           Beyond
-       ...
-       ...           You can use logic if you want:
-       ...
-       ...           >>> if 0:
-       ...           ...    blah
-       ...           ...    blah
-       ...           ...
-       ...
-       ...           Ho hum
-       ...           '''
-
-       >>> print script_from_examples(text)
-       # Here are examples of simple math.
-       #
-       #     Python has super accurate integer addition
-       #
-       2 + 2
-       # Expected:
-       ## 5
-       #
-       #     And very friendly error messages:
-       #
-       1/0
-       # Expected:
-       ## To Infinity
-       ## And
-       ## Beyond
-       #
-       #     You can use logic if you want:
-       #
-       if 0:
-          blah
-          blah
-       #
-       #     Ho hum
-       <BLANKLINE>
-       """
-    output = []
-    for piece in DocTestParser().parse(s):
-        if isinstance(piece, Example):
-            # Add the example's source code (strip trailing NL)
-            output.append(piece.source[:-1])
-            # Add the expected output:
-            want = piece.want
-            if want:
-                output.append('# Expected:')
-                output += ['## '+l for l in want.split('\n')[:-1]]
-        else:
-            # Add non-example text.
-            output += [_comment_line(l)
-                       for l in piece.split('\n')[:-1]]
-
-    # Trim junk on both ends.
-    while output and output[-1] == '#':
-        output.pop()
-    while output and output[0] == '#':
-        output.pop(0)
-    # Combine the output, and return it.
-    # Add a courtesy newline to prevent exec from choking (see bug #1172785)
-    return '\n'.join(output) + '\n'
-
-def testsource(module, name):
-    """Extract the test sources from a doctest docstring as a script.
-
-    Provide the module (or dotted name of the module) containing the
-    test to be debugged and the name (within the module) of the object
-    with the doc string with tests to be debugged.
-    """
-    module = _normalize_module(module)
-    tests = DocTestFinder().find(module)
-    test = [t for t in tests if t.name == name]
-    if not test:
-        raise ValueError(name, "not found in tests")
-    test = test[0]
-    testsrc = script_from_examples(test.docstring)
-    return testsrc
-
-def debug_src(src, pm=False, globs=None):
-    """Debug a single doctest docstring, in argument `src`'"""
-    testsrc = script_from_examples(src)
-    debug_script(testsrc, pm, globs)
-
-def debug_script(src, pm=False, globs=None):
-    "Debug a test script.  `src` is the script, as a string."
-    import pdb
-
-    # Note that tempfile.NameTemporaryFile() cannot be used.  As the
-    # docs say, a file so created cannot be opened by name a second time
-    # on modern Windows boxes, and execfile() needs to open it.
-    srcfilename = tempfile.mktemp(".py", "doctestdebug")
-    f = open(srcfilename, 'w')
-    f.write(src)
-    f.close()
-
-    try:
-        if globs:
-            globs = globs.copy()
-        else:
-            globs = {}
-
-        if pm:
-            try:
-                execfile(srcfilename, globs, globs)
-            except:
-                print sys.exc_info()[1]
-                pdb.post_mortem(sys.exc_info()[2])
-        else:
-            # Note that %r is vital here.  '%s' instead can, e.g., cause
-            # backslashes to get treated as metacharacters on Windows.
-            pdb.run("execfile(%r)" % srcfilename, globs, globs)
-
-    finally:
-        os.remove(srcfilename)
-
-def debug(module, name, pm=False):
-    """Debug a single doctest docstring.
-
-    Provide the module (or dotted name of the module) containing the
-    test to be debugged and the name (within the module) of the object
-    with the docstring with tests to be debugged.
-    """
-    module = _normalize_module(module)
-    testsrc = testsource(module, name)
-    debug_script(testsrc, pm, module.__dict__)
-
-######################################################################
-## 10. Example Usage
-######################################################################
-class _TestClass:
-    """
-    A pointless class, for sanity-checking of docstring testing.
-
-    Methods:
-        square()
-        get()
-
-    >>> _TestClass(13).get() + _TestClass(-12).get()
-    1
-    >>> hex(_TestClass(13).square().get())
-    '0xa9'
-    """
-
-    def __init__(self, val):
-        """val -> _TestClass object with associated value val.
-
-        >>> t = _TestClass(123)
-        >>> print t.get()
-        123
-        """
-
-        self.val = val
-
-    def square(self):
-        """square() -> square TestClass's associated value
-
-        >>> _TestClass(13).square().get()
-        169
-        """
-
-        self.val = self.val ** 2
-        return self
-
-    def get(self):
-        """get() -> return TestClass's associated value.
-
-        >>> x = _TestClass(-42)
-        >>> print x.get()
-        -42
-        """
-
-        return self.val
-
-__test__ = {"_TestClass": _TestClass,
-            "string": r"""
-                      Example of a string object, searched as-is.
-                      >>> x = 1; y = 2
-                      >>> x + y, x * y
-                      (3, 2)
-                      """,
-
-            "bool-int equivalence": r"""
-                                    In 2.2, boolean expressions displayed
-                                    0 or 1.  By default, we still accept
-                                    them.  This can be disabled by passing
-                                    DONT_ACCEPT_TRUE_FOR_1 to the new
-                                    optionflags argument.
-                                    >>> 4 == 4
-                                    1
-                                    >>> 4 == 4
-                                    True
-                                    >>> 4 > 4
-                                    0
-                                    >>> 4 > 4
-                                    False
-                                    """,
-
-            "blank lines": r"""
-                Blank lines can be marked with <BLANKLINE>:
-                    >>> print 'foo\n\nbar\n'
-                    foo
-                    <BLANKLINE>
-                    bar
-                    <BLANKLINE>
-            """,
-
-            "ellipsis": r"""
-                If the ellipsis flag is used, then '...' can be used to
-                elide substrings in the desired output:
-                    >>> print range(1000) #doctest: +ELLIPSIS
-                    [0, 1, 2, ..., 999]
-            """,
-
-            "whitespace normalization": r"""
-                If the whitespace normalization flag is used, then
-                differences in whitespace are ignored.
-                    >>> print range(30) #doctest: +NORMALIZE_WHITESPACE
-                    [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]
-            """,
-           }
-
-
-def _test():
-    testfiles = [arg for arg in sys.argv[1:] if arg and arg[0] != '-']
-    if not testfiles:
-        name = os.path.basename(sys.argv[0])
-        if '__loader__' in globals():          # python -m
-            name, _ = os.path.splitext(name)
-        print("usage: {0} [-v] file ...".format(name))
-        return 2
-    for filename in testfiles:
-        if filename.endswith(".py"):
-            # It is a module -- insert its dir into sys.path and try to
-            # import it. If it is part of a package, that possibly
-            # won't work because of package imports.
-            dirname, filename = os.path.split(filename)
-            sys.path.insert(0, dirname)
-            m = __import__(filename[:-3])
-            del sys.path[0]
-            failures, _ = testmod(m)
-        else:
-            failures, _ = testfile(filename, module_relative=False)
-        if failures:
-            return 1
-    return 0
-
-
-if __name__ == "__main__":
-    sys.exit(_test())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/dumbdbm.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/dumbdbm.py
deleted file mode 100644
index 2adaeb5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/dumbdbm.py
+++ /dev/null
@@ -1,250 +0,0 @@
-"""A dumb and slow but simple dbm clone.
-
-For database spam, spam.dir contains the index (a text file),
-spam.bak *may* contain a backup of the index (also a text file),
-while spam.dat contains the data (a binary file).
-
-XXX TO DO:
-
-- seems to contain a bug when updating...
-
-- reclaim free space (currently, space once occupied by deleted or expanded
-items is never reused)
-
-- support concurrent access (currently, if two processes take turns making
-updates, they can mess up the index)
-
-- support efficient access to large databases (currently, the whole index
-is read when the database is opened, and some updates rewrite the whole index)
-
-- support opening for read-only (flag = 'm')
-
-"""
-
-import os as _os
-import __builtin__
-import UserDict
-
-_open = __builtin__.open
-
-_BLOCKSIZE = 512
-
-error = IOError                         # For anydbm
-
-class _Database(UserDict.DictMixin):
-
-    # The on-disk directory and data files can remain in mutually
-    # inconsistent states for an arbitrarily long time (see comments
-    # at the end of __setitem__).  This is only repaired when _commit()
-    # gets called.  One place _commit() gets called is from __del__(),
-    # and if that occurs at program shutdown time, module globals may
-    # already have gotten rebound to None.  Since it's crucial that
-    # _commit() finish successfully, we can't ignore shutdown races
-    # here, and _commit() must not reference any globals.
-    _os = _os       # for _commit()
-    _open = _open   # for _commit()
-
-    def __init__(self, filebasename, mode):
-        self._mode = mode
-
-        # The directory file is a text file.  Each line looks like
-        #    "%r, (%d, %d)\n" % (key, pos, siz)
-        # where key is the string key, pos is the offset into the dat
-        # file of the associated value's first byte, and siz is the number
-        # of bytes in the associated value.
-        self._dirfile = filebasename + _os.extsep + 'dir'
-
-        # The data file is a binary file pointed into by the directory
-        # file, and holds the values associated with keys.  Each value
-        # begins at a _BLOCKSIZE-aligned byte offset, and is a raw
-        # binary 8-bit string value.
-        self._datfile = filebasename + _os.extsep + 'dat'
-        self._bakfile = filebasename + _os.extsep + 'bak'
-
-        # The index is an in-memory dict, mirroring the directory file.
-        self._index = None  # maps keys to (pos, siz) pairs
-
-        # Mod by Jack: create data file if needed
-        try:
-            f = _open(self._datfile, 'r')
-        except IOError:
-            f = _open(self._datfile, 'w')
-            self._chmod(self._datfile)
-        f.close()
-        self._update()
-
-    # Read directory file into the in-memory index dict.
-    def _update(self):
-        self._index = {}
-        try:
-            f = _open(self._dirfile)
-        except IOError:
-            pass
-        else:
-            for line in f:
-                line = line.rstrip()
-                key, pos_and_siz_pair = eval(line)
-                self._index[key] = pos_and_siz_pair
-            f.close()
-
-    # Write the index dict to the directory file.  The original directory
-    # file (if any) is renamed with a .bak extension first.  If a .bak
-    # file currently exists, it's deleted.
-    def _commit(self):
-        # CAUTION:  It's vital that _commit() succeed, and _commit() can
-        # be called from __del__().  Therefore we must never reference a
-        # global in this routine.
-        if self._index is None:
-            return  # nothing to do
-
-        try:
-            self._os.unlink(self._bakfile)
-        except self._os.error:
-            pass
-
-        try:
-            self._os.rename(self._dirfile, self._bakfile)
-        except self._os.error:
-            pass
-
-        f = self._open(self._dirfile, 'w')
-        self._chmod(self._dirfile)
-        for key, pos_and_siz_pair in self._index.iteritems():
-            f.write("%r, %r\n" % (key, pos_and_siz_pair))
-        f.close()
-
-    sync = _commit
-
-    def __getitem__(self, key):
-        pos, siz = self._index[key]     # may raise KeyError
-        f = _open(self._datfile, 'rb')
-        f.seek(pos)
-        dat = f.read(siz)
-        f.close()
-        return dat
-
-    # Append val to the data file, starting at a _BLOCKSIZE-aligned
-    # offset.  The data file is first padded with NUL bytes (if needed)
-    # to get to an aligned offset.  Return pair
-    #     (starting offset of val, len(val))
-    def _addval(self, val):
-        f = _open(self._datfile, 'rb+')
-        f.seek(0, 2)
-        pos = int(f.tell())
-        npos = ((pos + _BLOCKSIZE - 1) // _BLOCKSIZE) * _BLOCKSIZE
-        f.write('\0'*(npos-pos))
-        pos = npos
-        f.write(val)
-        f.close()
-        return (pos, len(val))
-
-    # Write val to the data file, starting at offset pos.  The caller
-    # is responsible for ensuring that there's enough room starting at
-    # pos to hold val, without overwriting some other value.  Return
-    # pair (pos, len(val)).
-    def _setval(self, pos, val):
-        f = _open(self._datfile, 'rb+')
-        f.seek(pos)
-        f.write(val)
-        f.close()
-        return (pos, len(val))
-
-    # key is a new key whose associated value starts in the data file
-    # at offset pos and with length siz.  Add an index record to
-    # the in-memory index dict, and append one to the directory file.
-    def _addkey(self, key, pos_and_siz_pair):
-        self._index[key] = pos_and_siz_pair
-        f = _open(self._dirfile, 'a')
-        self._chmod(self._dirfile)
-        f.write("%r, %r\n" % (key, pos_and_siz_pair))
-        f.close()
-
-    def __setitem__(self, key, val):
-        if not type(key) == type('') == type(val):
-            raise TypeError, "keys and values must be strings"
-        if key not in self._index:
-            self._addkey(key, self._addval(val))
-        else:
-            # See whether the new value is small enough to fit in the
-            # (padded) space currently occupied by the old value.
-            pos, siz = self._index[key]
-            oldblocks = (siz + _BLOCKSIZE - 1) // _BLOCKSIZE
-            newblocks = (len(val) + _BLOCKSIZE - 1) // _BLOCKSIZE
-            if newblocks <= oldblocks:
-                self._index[key] = self._setval(pos, val)
-            else:
-                # The new value doesn't fit in the (padded) space used
-                # by the old value.  The blocks used by the old value are
-                # forever lost.
-                self._index[key] = self._addval(val)
-
-            # Note that _index may be out of synch with the directory
-            # file now:  _setval() and _addval() don't update the directory
-            # file.  This also means that the on-disk directory and data
-            # files are in a mutually inconsistent state, and they'll
-            # remain that way until _commit() is called.  Note that this
-            # is a disaster (for the database) if the program crashes
-            # (so that _commit() never gets called).
-
-    def __delitem__(self, key):
-        # The blocks used by the associated value are lost.
-        del self._index[key]
-        # XXX It's unclear why we do a _commit() here (the code always
-        # XXX has, so I'm not changing it).  _setitem__ doesn't try to
-        # XXX keep the directory file in synch.  Why should we?  Or
-        # XXX why shouldn't __setitem__?
-        self._commit()
-
-    def keys(self):
-        return self._index.keys()
-
-    def has_key(self, key):
-        return key in self._index
-
-    def __contains__(self, key):
-        return key in self._index
-
-    def iterkeys(self):
-        return self._index.iterkeys()
-    __iter__ = iterkeys
-
-    def __len__(self):
-        return len(self._index)
-
-    def close(self):
-        self._commit()
-        self._index = self._datfile = self._dirfile = self._bakfile = None
-
-    __del__ = close
-
-    def _chmod (self, file):
-        if hasattr(self._os, 'chmod'):
-            self._os.chmod(file, self._mode)
-
-
-def open(file, flag=None, mode=0666):
-    """Open the database file, filename, and return corresponding object.
-
-    The flag argument, used to control how the database is opened in the
-    other DBM implementations, is ignored in the dumbdbm module; the
-    database is always opened for update, and will be created if it does
-    not exist.
-
-    The optional mode argument is the UNIX mode of the file, used only when
-    the database has to be created.  It defaults to octal code 0666 (and
-    will be modified by the prevailing umask).
-
-    """
-    # flag argument is currently ignored
-
-    # Modify mode depending on the umask
-    try:
-        um = _os.umask(0)
-        _os.umask(um)
-    except AttributeError:
-        pass
-    else:
-        # Turn off any bits that are set in the umask
-        mode = mode & (~um)
-
-    return _Database(file, mode)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/dummy_thread.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/dummy_thread.py
deleted file mode 100644
index 4b2da7d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/dummy_thread.py
+++ /dev/null
@@ -1,145 +0,0 @@
-"""Drop-in replacement for the thread module.
-
-Meant to be used as a brain-dead substitute so that threaded code does
-not need to be rewritten for when the thread module is not present.
-
-Suggested usage is::
-
-    try:
-        import thread
-    except ImportError:
-        import dummy_thread as thread
-
-"""
-# Exports only things specified by thread documentation;
-# skipping obsolete synonyms allocate(), start_new(), exit_thread().
-__all__ = ['error', 'start_new_thread', 'exit', 'get_ident', 'allocate_lock',
-           'interrupt_main', 'LockType']
-
-import traceback as _traceback
-
-class error(Exception):
-    """Dummy implementation of thread.error."""
-
-    def __init__(self, *args):
-        self.args = args
-
-def start_new_thread(function, args, kwargs={}):
-    """Dummy implementation of thread.start_new_thread().
-
-    Compatibility is maintained by making sure that ``args`` is a
-    tuple and ``kwargs`` is a dictionary.  If an exception is raised
-    and it is SystemExit (which can be done by thread.exit()) it is
-    caught and nothing is done; all other exceptions are printed out
-    by using traceback.print_exc().
-
-    If the executed function calls interrupt_main the KeyboardInterrupt will be
-    raised when the function returns.
-
-    """
-    if type(args) != type(tuple()):
-        raise TypeError("2nd arg must be a tuple")
-    if type(kwargs) != type(dict()):
-        raise TypeError("3rd arg must be a dict")
-    global _main
-    _main = False
-    try:
-        function(*args, **kwargs)
-    except SystemExit:
-        pass
-    except:
-        _traceback.print_exc()
-    _main = True
-    global _interrupt
-    if _interrupt:
-        _interrupt = False
-        raise KeyboardInterrupt
-
-def exit():
-    """Dummy implementation of thread.exit()."""
-    raise SystemExit
-
-def get_ident():
-    """Dummy implementation of thread.get_ident().
-
-    Since this module should only be used when threadmodule is not
-    available, it is safe to assume that the current process is the
-    only thread.  Thus a constant can be safely returned.
-    """
-    return -1
-
-def allocate_lock():
-    """Dummy implementation of thread.allocate_lock()."""
-    return LockType()
-
-def stack_size(size=None):
-    """Dummy implementation of thread.stack_size()."""
-    if size is not None:
-        raise error("setting thread stack size not supported")
-    return 0
-
-class LockType(object):
-    """Class implementing dummy implementation of thread.LockType.
-
-    Compatibility is maintained by maintaining self.locked_status
-    which is a boolean that stores the state of the lock.  Pickling of
-    the lock, though, should not be done since if the thread module is
-    then used with an unpickled ``lock()`` from here problems could
-    occur from this class not having atomic methods.
-
-    """
-
-    def __init__(self):
-        self.locked_status = False
-
-    def acquire(self, waitflag=None):
-        """Dummy implementation of acquire().
-
-        For blocking calls, self.locked_status is automatically set to
-        True and returned appropriately based on value of
-        ``waitflag``.  If it is non-blocking, then the value is
-        actually checked and not set if it is already acquired.  This
-        is all done so that threading.Condition's assert statements
-        aren't triggered and throw a little fit.
-
-        """
-        if waitflag is None or waitflag:
-            self.locked_status = True
-            return True
-        else:
-            if not self.locked_status:
-                self.locked_status = True
-                return True
-            else:
-                return False
-
-    __enter__ = acquire
-
-    def __exit__(self, typ, val, tb):
-        self.release()
-
-    def release(self):
-        """Release the dummy lock."""
-        # XXX Perhaps shouldn't actually bother to test?  Could lead
-        #     to problems for complex, threaded code.
-        if not self.locked_status:
-            raise error
-        self.locked_status = False
-        return True
-
-    def locked(self):
-        return self.locked_status
-
-# Used to signal that interrupt_main was called in a "thread"
-_interrupt = False
-# True when not executing in a "thread"
-_main = True
-
-def interrupt_main():
-    """Set _interrupt flag to True to have start_new_thread raise
-    KeyboardInterrupt upon exiting."""
-    if _main:
-        raise KeyboardInterrupt
-    else:
-        global _interrupt
-        _interrupt = True
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/dummy_threading.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/dummy_threading.py
deleted file mode 100644
index cfd066e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/dummy_threading.py
+++ /dev/null
@@ -1,78 +0,0 @@
-"""Faux ``threading`` version using ``dummy_thread`` instead of ``thread``.
-
-The module ``_dummy_threading`` is added to ``sys.modules`` in order
-to not have ``threading`` considered imported.  Had ``threading`` been
-directly imported it would have made all subsequent imports succeed
-regardless of whether ``thread`` was available which is not desired.
-
-"""
-from sys import modules as sys_modules
-
-import dummy_thread
-
-# Declaring now so as to not have to nest ``try``s to get proper clean-up.
-holding_thread = False
-holding_threading = False
-holding__threading_local = False
-
-try:
-    # Could have checked if ``thread`` was not in sys.modules and gone
-    # a different route, but decided to mirror technique used with
-    # ``threading`` below.
-    if 'thread' in sys_modules:
-        held_thread = sys_modules['thread']
-        holding_thread = True
-    # Must have some module named ``thread`` that implements its API
-    # in order to initially import ``threading``.
-    sys_modules['thread'] = sys_modules['dummy_thread']
-
-    if 'threading' in sys_modules:
-        # If ``threading`` is already imported, might as well prevent
-        # trying to import it more than needed by saving it if it is
-        # already imported before deleting it.
-        held_threading = sys_modules['threading']
-        holding_threading = True
-        del sys_modules['threading']
-
-    if '_threading_local' in sys_modules:
-        # If ``_threading_local`` is already imported, might as well prevent
-        # trying to import it more than needed by saving it if it is
-        # already imported before deleting it.
-        held__threading_local = sys_modules['_threading_local']
-        holding__threading_local = True
-        del sys_modules['_threading_local']
-
-    import threading
-    # Need a copy of the code kept somewhere...
-    sys_modules['_dummy_threading'] = sys_modules['threading']
-    del sys_modules['threading']
-    sys_modules['_dummy__threading_local'] = sys_modules['_threading_local']
-    del sys_modules['_threading_local']
-    from _dummy_threading import *
-    from _dummy_threading import __all__
-
-finally:
-    # Put back ``threading`` if we overwrote earlier
-
-    if holding_threading:
-        sys_modules['threading'] = held_threading
-        del held_threading
-    del holding_threading
-
-    # Put back ``_threading_local`` if we overwrote earlier
-
-    if holding__threading_local:
-        sys_modules['_threading_local'] = held__threading_local
-        del held__threading_local
-    del holding__threading_local
-
-    # Put back ``thread`` if we overwrote, else del the entry we made
-    if holding_thread:
-        sys_modules['thread'] = held_thread
-        del held_thread
-    else:
-        del sys_modules['thread']
-    del holding_thread
-
-    del dummy_thread
-    del sys_modules
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/__init__.py
deleted file mode 100644
index 5d90425..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/__init__.py
+++ /dev/null
@@ -1,123 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# Author: Barry Warsaw
-# Contact: email-sig@python.org
-
-"""A package for parsing, handling, and generating email messages."""
-
-__version__ = '4.0.3'
-
-__all__ = [
-    # Old names
-    'base64MIME',
-    'Charset',
-    'Encoders',
-    'Errors',
-    'Generator',
-    'Header',
-    'Iterators',
-    'Message',
-    'MIMEAudio',
-    'MIMEBase',
-    'MIMEImage',
-    'MIMEMessage',
-    'MIMEMultipart',
-    'MIMENonMultipart',
-    'MIMEText',
-    'Parser',
-    'quopriMIME',
-    'Utils',
-    'message_from_string',
-    'message_from_file',
-    # new names
-    'base64mime',
-    'charset',
-    'encoders',
-    'errors',
-    'generator',
-    'header',
-    'iterators',
-    'message',
-    'mime',
-    'parser',
-    'quoprimime',
-    'utils',
-    ]
-
-
-\f
-# Some convenience routines.  Don't import Parser and Message as side-effects
-# of importing email since those cascadingly import most of the rest of the
-# email package.
-def message_from_string(s, *args, **kws):
-    """Parse a string into a Message object model.
-
-    Optional _class and strict are passed to the Parser constructor.
-    """
-    from email.parser import Parser
-    return Parser(*args, **kws).parsestr(s)
-
-
-def message_from_file(fp, *args, **kws):
-    """Read a file and parse its contents into a Message object model.
-
-    Optional _class and strict are passed to the Parser constructor.
-    """
-    from email.parser import Parser
-    return Parser(*args, **kws).parse(fp)
-
-
-\f
-# Lazy loading to provide name mapping from new-style names (PEP 8 compatible
-# email 4.0 module names), to old-style names (email 3.0 module names).
-import sys
-
-class LazyImporter(object):
-    def __init__(self, module_name):
-        self.__name__ = 'email.' + module_name
-
-    def __getattr__(self, name):
-        __import__(self.__name__)
-        mod = sys.modules[self.__name__]
-        self.__dict__.update(mod.__dict__)
-        return getattr(mod, name)
-
-
-_LOWERNAMES = [
-    # email.<old name> -> email.<new name is lowercased old name>
-    'Charset',
-    'Encoders',
-    'Errors',
-    'FeedParser',
-    'Generator',
-    'Header',
-    'Iterators',
-    'Message',
-    'Parser',
-    'Utils',
-    'base64MIME',
-    'quopriMIME',
-    ]
-
-_MIMENAMES = [
-    # email.MIME<old name> -> email.mime.<new name is lowercased old name>
-    'Audio',
-    'Base',
-    'Image',
-    'Message',
-    'Multipart',
-    'NonMultipart',
-    'Text',
-    ]
-
-for _name in _LOWERNAMES:
-    importer = LazyImporter(_name.lower())
-    sys.modules['email.' + _name] = importer
-    setattr(sys.modules['email'], _name, importer)
-
-
-import email.mime
-for _name in _MIMENAMES:
-    importer = LazyImporter('mime.' + _name.lower())
-    sys.modules['email.MIME' + _name] = importer
-    setattr(sys.modules['email'], 'MIME' + _name, importer)
-    setattr(sys.modules['email.mime'], _name, importer)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/_parseaddr.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/_parseaddr.py
deleted file mode 100644
index 9375d2d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/_parseaddr.py
+++ /dev/null
@@ -1,497 +0,0 @@
-# Copyright (C) 2002-2007 Python Software Foundation
-# Contact: email-sig@python.org
-
-"""Email address parsing code.
-
-Lifted directly from rfc822.py.  This should eventually be rewritten.
-"""
-
-__all__ = [
-    'mktime_tz',
-    'parsedate',
-    'parsedate_tz',
-    'quote',
-    ]
-
-import time
-
-SPACE = ' '
-EMPTYSTRING = ''
-COMMASPACE = ', '
-
-# Parse a date field
-_monthnames = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul',
-               'aug', 'sep', 'oct', 'nov', 'dec',
-               'january', 'february', 'march', 'april', 'may', 'june', 'july',
-               'august', 'september', 'october', 'november', 'december']
-
-_daynames = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']
-
-# The timezone table does not include the military time zones defined
-# in RFC822, other than Z.  According to RFC1123, the description in
-# RFC822 gets the signs wrong, so we can't rely on any such time
-# zones.  RFC1123 recommends that numeric timezone indicators be used
-# instead of timezone names.
-
-_timezones = {'UT':0, 'UTC':0, 'GMT':0, 'Z':0,
-              'AST': -400, 'ADT': -300,  # Atlantic (used in Canada)
-              'EST': -500, 'EDT': -400,  # Eastern
-              'CST': -600, 'CDT': -500,  # Central
-              'MST': -700, 'MDT': -600,  # Mountain
-              'PST': -800, 'PDT': -700   # Pacific
-              }
-
-
-def parsedate_tz(data):
-    """Convert a date string to a time tuple.
-
-    Accounts for military timezones.
-    """
-    data = data.split()
-    # The FWS after the comma after the day-of-week is optional, so search and
-    # adjust for this.
-    if data[0].endswith(',') or data[0].lower() in _daynames:
-        # There's a dayname here. Skip it
-        del data[0]
-    else:
-        i = data[0].rfind(',')
-        if i >= 0:
-            data[0] = data[0][i+1:]
-    if len(data) == 3: # RFC 850 date, deprecated
-        stuff = data[0].split('-')
-        if len(stuff) == 3:
-            data = stuff + data[1:]
-    if len(data) == 4:
-        s = data[3]
-        i = s.find('+')
-        if i > 0:
-            data[3:] = [s[:i], s[i+1:]]
-        else:
-            data.append('') # Dummy tz
-    if len(data) < 5:
-        return None
-    data = data[:5]
-    [dd, mm, yy, tm, tz] = data
-    mm = mm.lower()
-    if mm not in _monthnames:
-        dd, mm = mm, dd.lower()
-        if mm not in _monthnames:
-            return None
-    mm = _monthnames.index(mm) + 1
-    if mm > 12:
-        mm -= 12
-    if dd[-1] == ',':
-        dd = dd[:-1]
-    i = yy.find(':')
-    if i > 0:
-        yy, tm = tm, yy
-    if yy[-1] == ',':
-        yy = yy[:-1]
-    if not yy[0].isdigit():
-        yy, tz = tz, yy
-    if tm[-1] == ',':
-        tm = tm[:-1]
-    tm = tm.split(':')
-    if len(tm) == 2:
-        [thh, tmm] = tm
-        tss = '0'
-    elif len(tm) == 3:
-        [thh, tmm, tss] = tm
-    else:
-        return None
-    try:
-        yy = int(yy)
-        dd = int(dd)
-        thh = int(thh)
-        tmm = int(tmm)
-        tss = int(tss)
-    except ValueError:
-        return None
-    # Check for a yy specified in two-digit format, then convert it to the
-    # appropriate four-digit format, according to the POSIX standard. RFC 822
-    # calls for a two-digit yy, but RFC 2822 (which obsoletes RFC 822)
-    # mandates a 4-digit yy. For more information, see the documentation for
-    # the time module.
-    if yy < 100:
-        # The year is between 1969 and 1999 (inclusive).
-        if yy > 68:
-            yy += 1900
-        # The year is between 2000 and 2068 (inclusive).
-        else:
-            yy += 2000
-    tzoffset = None
-    tz = tz.upper()
-    if tz in _timezones:
-        tzoffset = _timezones[tz]
-    else:
-        try:
-            tzoffset = int(tz)
-        except ValueError:
-            pass
-    # Convert a timezone offset into seconds ; -0500 -> -18000
-    if tzoffset:
-        if tzoffset < 0:
-            tzsign = -1
-            tzoffset = -tzoffset
-        else:
-            tzsign = 1
-        tzoffset = tzsign * ( (tzoffset//100)*3600 + (tzoffset % 100)*60)
-    # Daylight Saving Time flag is set to -1, since DST is unknown.
-    return yy, mm, dd, thh, tmm, tss, 0, 1, -1, tzoffset
-
-
-def parsedate(data):
-    """Convert a time string to a time tuple."""
-    t = parsedate_tz(data)
-    if isinstance(t, tuple):
-        return t[:9]
-    else:
-        return t
-
-
-def mktime_tz(data):
-    """Turn a 10-tuple as returned by parsedate_tz() into a UTC timestamp."""
-    if data[9] is None:
-        # No zone info, so localtime is better assumption than GMT
-        return time.mktime(data[:8] + (-1,))
-    else:
-        t = time.mktime(data[:8] + (0,))
-        return t - data[9] - time.timezone
-
-
-def quote(str):
-    """Prepare string to be used in a quoted string.
-
-    Turns backslash and double quote characters into quoted pairs.  These
-    are the only characters that need to be quoted inside a quoted string.
-    Does not add the surrounding double quotes.
-    """
-    return str.replace('\\', '\\\\').replace('"', '\\"')
-
-
-class AddrlistClass:
-    """Address parser class by Ben Escoto.
-
-    To understand what this class does, it helps to have a copy of RFC 2822 in
-    front of you.
-
-    Note: this class interface is deprecated and may be removed in the future.
-    Use rfc822.AddressList instead.
-    """
-
-    def __init__(self, field):
-        """Initialize a new instance.
-
-        `field' is an unparsed address header field, containing
-        one or more addresses.
-        """
-        self.specials = '()<>@,:;.\"[]'
-        self.pos = 0
-        self.LWS = ' \t'
-        self.CR = '\r\n'
-        self.FWS = self.LWS + self.CR
-        self.atomends = self.specials + self.LWS + self.CR
-        # Note that RFC 2822 now specifies `.' as obs-phrase, meaning that it
-        # is obsolete syntax.  RFC 2822 requires that we recognize obsolete
-        # syntax, so allow dots in phrases.
-        self.phraseends = self.atomends.replace('.', '')
-        self.field = field
-        self.commentlist = []
-
-    def gotonext(self):
-        """Parse up to the start of the next address."""
-        while self.pos < len(self.field):
-            if self.field[self.pos] in self.LWS + '\n\r':
-                self.pos += 1
-            elif self.field[self.pos] == '(':
-                self.commentlist.append(self.getcomment())
-            else:
-                break
-
-    def getaddrlist(self):
-        """Parse all addresses.
-
-        Returns a list containing all of the addresses.
-        """
-        result = []
-        while self.pos < len(self.field):
-            ad = self.getaddress()
-            if ad:
-                result += ad
-            else:
-                result.append(('', ''))
-        return result
-
-    def getaddress(self):
-        """Parse the next address."""
-        self.commentlist = []
-        self.gotonext()
-
-        oldpos = self.pos
-        oldcl = self.commentlist
-        plist = self.getphraselist()
-
-        self.gotonext()
-        returnlist = []
-
-        if self.pos >= len(self.field):
-            # Bad email address technically, no domain.
-            if plist:
-                returnlist = [(SPACE.join(self.commentlist), plist[0])]
-
-        elif self.field[self.pos] in '.@':
-            # email address is just an addrspec
-            # this isn't very efficient since we start over
-            self.pos = oldpos
-            self.commentlist = oldcl
-            addrspec = self.getaddrspec()
-            returnlist = [(SPACE.join(self.commentlist), addrspec)]
-
-        elif self.field[self.pos] == ':':
-            # address is a group
-            returnlist = []
-
-            fieldlen = len(self.field)
-            self.pos += 1
-            while self.pos < len(self.field):
-                self.gotonext()
-                if self.pos < fieldlen and self.field[self.pos] == ';':
-                    self.pos += 1
-                    break
-                returnlist = returnlist + self.getaddress()
-
-        elif self.field[self.pos] == '<':
-            # Address is a phrase then a route addr
-            routeaddr = self.getrouteaddr()
-
-            if self.commentlist:
-                returnlist = [(SPACE.join(plist) + ' (' +
-                               ' '.join(self.commentlist) + ')', routeaddr)]
-            else:
-                returnlist = [(SPACE.join(plist), routeaddr)]
-
-        else:
-            if plist:
-                returnlist = [(SPACE.join(self.commentlist), plist[0])]
-            elif self.field[self.pos] in self.specials:
-                self.pos += 1
-
-        self.gotonext()
-        if self.pos < len(self.field) and self.field[self.pos] == ',':
-            self.pos += 1
-        return returnlist
-
-    def getrouteaddr(self):
-        """Parse a route address (Return-path value).
-
-        This method just skips all the route stuff and returns the addrspec.
-        """
-        if self.field[self.pos] != '<':
-            return
-
-        expectroute = False
-        self.pos += 1
-        self.gotonext()
-        adlist = ''
-        while self.pos < len(self.field):
-            if expectroute:
-                self.getdomain()
-                expectroute = False
-            elif self.field[self.pos] == '>':
-                self.pos += 1
-                break
-            elif self.field[self.pos] == '@':
-                self.pos += 1
-                expectroute = True
-            elif self.field[self.pos] == ':':
-                self.pos += 1
-            else:
-                adlist = self.getaddrspec()
-                self.pos += 1
-                break
-            self.gotonext()
-
-        return adlist
-
-    def getaddrspec(self):
-        """Parse an RFC 2822 addr-spec."""
-        aslist = []
-
-        self.gotonext()
-        while self.pos < len(self.field):
-            if self.field[self.pos] == '.':
-                aslist.append('.')
-                self.pos += 1
-            elif self.field[self.pos] == '"':
-                aslist.append('"%s"' % quote(self.getquote()))
-            elif self.field[self.pos] in self.atomends:
-                break
-            else:
-                aslist.append(self.getatom())
-            self.gotonext()
-
-        if self.pos >= len(self.field) or self.field[self.pos] != '@':
-            return EMPTYSTRING.join(aslist)
-
-        aslist.append('@')
-        self.pos += 1
-        self.gotonext()
-        return EMPTYSTRING.join(aslist) + self.getdomain()
-
-    def getdomain(self):
-        """Get the complete domain name from an address."""
-        sdlist = []
-        while self.pos < len(self.field):
-            if self.field[self.pos] in self.LWS:
-                self.pos += 1
-            elif self.field[self.pos] == '(':
-                self.commentlist.append(self.getcomment())
-            elif self.field[self.pos] == '[':
-                sdlist.append(self.getdomainliteral())
-            elif self.field[self.pos] == '.':
-                self.pos += 1
-                sdlist.append('.')
-            elif self.field[self.pos] in self.atomends:
-                break
-            else:
-                sdlist.append(self.getatom())
-        return EMPTYSTRING.join(sdlist)
-
-    def getdelimited(self, beginchar, endchars, allowcomments=True):
-        """Parse a header fragment delimited by special characters.
-
-        `beginchar' is the start character for the fragment.
-        If self is not looking at an instance of `beginchar' then
-        getdelimited returns the empty string.
-
-        `endchars' is a sequence of allowable end-delimiting characters.
-        Parsing stops when one of these is encountered.
-
-        If `allowcomments' is non-zero, embedded RFC 2822 comments are allowed
-        within the parsed fragment.
-        """
-        if self.field[self.pos] != beginchar:
-            return ''
-
-        slist = ['']
-        quote = False
-        self.pos += 1
-        while self.pos < len(self.field):
-            if quote:
-                slist.append(self.field[self.pos])
-                quote = False
-            elif self.field[self.pos] in endchars:
-                self.pos += 1
-                break
-            elif allowcomments and self.field[self.pos] == '(':
-                slist.append(self.getcomment())
-                continue        # have already advanced pos from getcomment
-            elif self.field[self.pos] == '\\':
-                quote = True
-            else:
-                slist.append(self.field[self.pos])
-            self.pos += 1
-
-        return EMPTYSTRING.join(slist)
-
-    def getquote(self):
-        """Get a quote-delimited fragment from self's field."""
-        return self.getdelimited('"', '"\r', False)
-
-    def getcomment(self):
-        """Get a parenthesis-delimited fragment from self's field."""
-        return self.getdelimited('(', ')\r', True)
-
-    def getdomainliteral(self):
-        """Parse an RFC 2822 domain-literal."""
-        return '[%s]' % self.getdelimited('[', ']\r', False)
-
-    def getatom(self, atomends=None):
-        """Parse an RFC 2822 atom.
-
-        Optional atomends specifies a different set of end token delimiters
-        (the default is to use self.atomends).  This is used e.g. in
-        getphraselist() since phrase endings must not include the `.' (which
-        is legal in phrases)."""
-        atomlist = ['']
-        if atomends is None:
-            atomends = self.atomends
-
-        while self.pos < len(self.field):
-            if self.field[self.pos] in atomends:
-                break
-            else:
-                atomlist.append(self.field[self.pos])
-            self.pos += 1
-
-        return EMPTYSTRING.join(atomlist)
-
-    def getphraselist(self):
-        """Parse a sequence of RFC 2822 phrases.
-
-        A phrase is a sequence of words, which are in turn either RFC 2822
-        atoms or quoted-strings.  Phrases are canonicalized by squeezing all
-        runs of continuous whitespace into one space.
-        """
-        plist = []
-
-        while self.pos < len(self.field):
-            if self.field[self.pos] in self.FWS:
-                self.pos += 1
-            elif self.field[self.pos] == '"':
-                plist.append(self.getquote())
-            elif self.field[self.pos] == '(':
-                self.commentlist.append(self.getcomment())
-            elif self.field[self.pos] in self.phraseends:
-                break
-            else:
-                plist.append(self.getatom(self.phraseends))
-
-        return plist
-
-class AddressList(AddrlistClass):
-    """An AddressList encapsulates a list of parsed RFC 2822 addresses."""
-    def __init__(self, field):
-        AddrlistClass.__init__(self, field)
-        if field:
-            self.addresslist = self.getaddrlist()
-        else:
-            self.addresslist = []
-
-    def __len__(self):
-        return len(self.addresslist)
-
-    def __add__(self, other):
-        # Set union
-        newaddr = AddressList(None)
-        newaddr.addresslist = self.addresslist[:]
-        for x in other.addresslist:
-            if not x in self.addresslist:
-                newaddr.addresslist.append(x)
-        return newaddr
-
-    def __iadd__(self, other):
-        # Set union, in-place
-        for x in other.addresslist:
-            if not x in self.addresslist:
-                self.addresslist.append(x)
-        return self
-
-    def __sub__(self, other):
-        # Set difference
-        newaddr = AddressList(None)
-        for x in self.addresslist:
-            if not x in other.addresslist:
-                newaddr.addresslist.append(x)
-        return newaddr
-
-    def __isub__(self, other):
-        # Set difference, in-place
-        for x in other.addresslist:
-            if x in self.addresslist:
-                self.addresslist.remove(x)
-        return self
-
-    def __getitem__(self, index):
-        # Make indexing, slices, and 'in' work
-        return self.addresslist[index]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/base64mime.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/base64mime.py
deleted file mode 100644
index 3d65d27..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/base64mime.py
+++ /dev/null
@@ -1,183 +0,0 @@
-# Copyright (C) 2002-2006 Python Software Foundation
-# Author: Ben Gertzfield
-# Contact: email-sig@python.org
-
-"""Base64 content transfer encoding per RFCs 2045-2047.
-
-This module handles the content transfer encoding method defined in RFC 2045
-to encode arbitrary 8-bit data using the three 8-bit bytes in four 7-bit
-characters encoding known as Base64.
-
-It is used in the MIME standards for email to attach images, audio, and text
-using some 8-bit character sets to messages.
-
-This module provides an interface to encode and decode both headers and bodies
-with Base64 encoding.
-
-RFC 2045 defines a method for including character set information in an
-`encoded-word' in a header.  This method is commonly used for 8-bit real names
-in To:, From:, Cc:, etc. fields, as well as Subject: lines.
-
-This module does not do the line wrapping or end-of-line character conversion
-necessary for proper internationalized headers; it only does dumb encoding and
-decoding.  To deal with the various line wrapping issues, use the email.header
-module.
-"""
-
-__all__ = [
-    'base64_len',
-    'body_decode',
-    'body_encode',
-    'decode',
-    'decodestring',
-    'encode',
-    'encodestring',
-    'header_encode',
-    ]
-
-
-from binascii import b2a_base64, a2b_base64
-from email.utils import fix_eols
-
-CRLF = '\r\n'
-NL = '\n'
-EMPTYSTRING = ''
-
-# See also Charset.py
-MISC_LEN = 7
-
-
-\f
-# Helpers
-def base64_len(s):
-    """Return the length of s when it is encoded with base64."""
-    groups_of_3, leftover = divmod(len(s), 3)
-    # 4 bytes out for each 3 bytes (or nonzero fraction thereof) in.
-    # Thanks, Tim!
-    n = groups_of_3 * 4
-    if leftover:
-        n += 4
-    return n
-
-
-\f
-def header_encode(header, charset='iso-8859-1', keep_eols=False,
-                  maxlinelen=76, eol=NL):
-    """Encode a single header line with Base64 encoding in a given charset.
-
-    Defined in RFC 2045, this Base64 encoding is identical to normal Base64
-    encoding, except that each line must be intelligently wrapped (respecting
-    the Base64 encoding), and subsequent lines must start with a space.
-
-    charset names the character set to use to encode the header.  It defaults
-    to iso-8859-1.
-
-    End-of-line characters (\\r, \\n, \\r\\n) will be automatically converted
-    to the canonical email line separator \\r\\n unless the keep_eols
-    parameter is True (the default is False).
-
-    Each line of the header will be terminated in the value of eol, which
-    defaults to "\\n".  Set this to "\\r\\n" if you are using the result of
-    this function directly in email.
-
-    The resulting string will be in the form:
-
-    "=?charset?b?WW/5ciBtYXp66XLrIHf8eiBhIGhhbXBzdGHuciBBIFlv+XIgbWF6euly?=\\n
-      =?charset?b?6yB3/HogYSBoYW1wc3Rh7nIgQkMgWW/5ciBtYXp66XLrIHf8eiBhIGhh?="
-
-    with each line wrapped at, at most, maxlinelen characters (defaults to 76
-    characters).
-    """
-    # Return empty headers unchanged
-    if not header:
-        return header
-
-    if not keep_eols:
-        header = fix_eols(header)
-
-    # Base64 encode each line, in encoded chunks no greater than maxlinelen in
-    # length, after the RFC chrome is added in.
-    base64ed = []
-    max_encoded = maxlinelen - len(charset) - MISC_LEN
-    max_unencoded = max_encoded * 3 // 4
-
-    for i in range(0, len(header), max_unencoded):
-        base64ed.append(b2a_base64(header[i:i+max_unencoded]))
-
-    # Now add the RFC chrome to each encoded chunk
-    lines = []
-    for line in base64ed:
-        # Ignore the last character of each line if it is a newline
-        if line.endswith(NL):
-            line = line[:-1]
-        # Add the chrome
-        lines.append('=?%s?b?%s?=' % (charset, line))
-    # Glue the lines together and return it.  BAW: should we be able to
-    # specify the leading whitespace in the joiner?
-    joiner = eol + ' '
-    return joiner.join(lines)
-
-
-\f
-def encode(s, binary=True, maxlinelen=76, eol=NL):
-    """Encode a string with base64.
-
-    Each line will be wrapped at, at most, maxlinelen characters (defaults to
-    76 characters).
-
-    If binary is False, end-of-line characters will be converted to the
-    canonical email end-of-line sequence \\r\\n.  Otherwise they will be left
-    verbatim (this is the default).
-
-    Each line of encoded text will end with eol, which defaults to "\\n".  Set
-    this to "\r\n" if you will be using the result of this function directly
-    in an email.
-    """
-    if not s:
-        return s
-
-    if not binary:
-        s = fix_eols(s)
-
-    encvec = []
-    max_unencoded = maxlinelen * 3 // 4
-    for i in range(0, len(s), max_unencoded):
-        # BAW: should encode() inherit b2a_base64()'s dubious behavior in
-        # adding a newline to the encoded string?
-        enc = b2a_base64(s[i:i + max_unencoded])
-        if enc.endswith(NL) and eol != NL:
-            enc = enc[:-1] + eol
-        encvec.append(enc)
-    return EMPTYSTRING.join(encvec)
-
-
-# For convenience and backwards compatibility w/ standard base64 module
-body_encode = encode
-encodestring = encode
-
-
-\f
-def decode(s, convert_eols=None):
-    """Decode a raw base64 string.
-
-    If convert_eols is set to a string value, all canonical email linefeeds,
-    e.g. "\\r\\n", in the decoded text will be converted to the value of
-    convert_eols.  os.linesep is a good choice for convert_eols if you are
-    decoding a text attachment.
-
-    This function does not parse a full MIME header value encoded with
-    base64 (like =?iso-8895-1?b?bmloISBuaWgh?=) -- please use the high
-    level email.header class for that functionality.
-    """
-    if not s:
-        return s
-
-    dec = a2b_base64(s)
-    if convert_eols:
-        return dec.replace(CRLF, convert_eols)
-    return dec
-
-
-# For convenience and backwards compatibility w/ standard base64 module
-body_decode = decode
-decodestring = decode
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/charset.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/charset.py
deleted file mode 100644
index 5bf9ae9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/charset.py
+++ /dev/null
@@ -1,397 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# Author: Ben Gertzfield, Barry Warsaw
-# Contact: email-sig@python.org
-
-__all__ = [
-    'Charset',
-    'add_alias',
-    'add_charset',
-    'add_codec',
-    ]
-
-import codecs
-import email.base64mime
-import email.quoprimime
-
-from email import errors
-from email.encoders import encode_7or8bit
-
-
-\f
-# Flags for types of header encodings
-QP          = 1 # Quoted-Printable
-BASE64      = 2 # Base64
-SHORTEST    = 3 # the shorter of QP and base64, but only for headers
-
-# In "=?charset?q?hello_world?=", the =?, ?q?, and ?= add up to 7
-MISC_LEN = 7
-
-DEFAULT_CHARSET = 'us-ascii'
-
-
-\f
-# Defaults
-CHARSETS = {
-    # input        header enc  body enc output conv
-    'iso-8859-1':  (QP,        QP,      None),
-    'iso-8859-2':  (QP,        QP,      None),
-    'iso-8859-3':  (QP,        QP,      None),
-    'iso-8859-4':  (QP,        QP,      None),
-    # iso-8859-5 is Cyrillic, and not especially used
-    # iso-8859-6 is Arabic, also not particularly used
-    # iso-8859-7 is Greek, QP will not make it readable
-    # iso-8859-8 is Hebrew, QP will not make it readable
-    'iso-8859-9':  (QP,        QP,      None),
-    'iso-8859-10': (QP,        QP,      None),
-    # iso-8859-11 is Thai, QP will not make it readable
-    'iso-8859-13': (QP,        QP,      None),
-    'iso-8859-14': (QP,        QP,      None),
-    'iso-8859-15': (QP,        QP,      None),
-    'iso-8859-16': (QP,        QP,      None),
-    'windows-1252':(QP,        QP,      None),
-    'viscii':      (QP,        QP,      None),
-    'us-ascii':    (None,      None,    None),
-    'big5':        (BASE64,    BASE64,  None),
-    'gb2312':      (BASE64,    BASE64,  None),
-    'euc-jp':      (BASE64,    None,    'iso-2022-jp'),
-    'shift_jis':   (BASE64,    None,    'iso-2022-jp'),
-    'iso-2022-jp': (BASE64,    None,    None),
-    'koi8-r':      (BASE64,    BASE64,  None),
-    'utf-8':       (SHORTEST,  BASE64, 'utf-8'),
-    # We're making this one up to represent raw unencoded 8-bit
-    '8bit':        (None,      BASE64, 'utf-8'),
-    }
-
-# Aliases for other commonly-used names for character sets.  Map
-# them to the real ones used in email.
-ALIASES = {
-    'latin_1': 'iso-8859-1',
-    'latin-1': 'iso-8859-1',
-    'latin_2': 'iso-8859-2',
-    'latin-2': 'iso-8859-2',
-    'latin_3': 'iso-8859-3',
-    'latin-3': 'iso-8859-3',
-    'latin_4': 'iso-8859-4',
-    'latin-4': 'iso-8859-4',
-    'latin_5': 'iso-8859-9',
-    'latin-5': 'iso-8859-9',
-    'latin_6': 'iso-8859-10',
-    'latin-6': 'iso-8859-10',
-    'latin_7': 'iso-8859-13',
-    'latin-7': 'iso-8859-13',
-    'latin_8': 'iso-8859-14',
-    'latin-8': 'iso-8859-14',
-    'latin_9': 'iso-8859-15',
-    'latin-9': 'iso-8859-15',
-    'latin_10':'iso-8859-16',
-    'latin-10':'iso-8859-16',
-    'cp949':   'ks_c_5601-1987',
-    'euc_jp':  'euc-jp',
-    'euc_kr':  'euc-kr',
-    'ascii':   'us-ascii',
-    }
-
-
-# Map charsets to their Unicode codec strings.
-CODEC_MAP = {
-    'gb2312':      'eucgb2312_cn',
-    'big5':        'big5_tw',
-    # Hack: We don't want *any* conversion for stuff marked us-ascii, as all
-    # sorts of garbage might be sent to us in the guise of 7-bit us-ascii.
-    # Let that stuff pass through without conversion to/from Unicode.
-    'us-ascii':    None,
-    }
-
-
-\f
-# Convenience functions for extending the above mappings
-def add_charset(charset, header_enc=None, body_enc=None, output_charset=None):
-    """Add character set properties to the global registry.
-
-    charset is the input character set, and must be the canonical name of a
-    character set.
-
-    Optional header_enc and body_enc is either Charset.QP for
-    quoted-printable, Charset.BASE64 for base64 encoding, Charset.SHORTEST for
-    the shortest of qp or base64 encoding, or None for no encoding.  SHORTEST
-    is only valid for header_enc.  It describes how message headers and
-    message bodies in the input charset are to be encoded.  Default is no
-    encoding.
-
-    Optional output_charset is the character set that the output should be
-    in.  Conversions will proceed from input charset, to Unicode, to the
-    output charset when the method Charset.convert() is called.  The default
-    is to output in the same character set as the input.
-
-    Both input_charset and output_charset must have Unicode codec entries in
-    the module's charset-to-codec mapping; use add_codec(charset, codecname)
-    to add codecs the module does not know about.  See the codecs module's
-    documentation for more information.
-    """
-    if body_enc == SHORTEST:
-        raise ValueError('SHORTEST not allowed for body_enc')
-    CHARSETS[charset] = (header_enc, body_enc, output_charset)
-
-
-def add_alias(alias, canonical):
-    """Add a character set alias.
-
-    alias is the alias name, e.g. latin-1
-    canonical is the character set's canonical name, e.g. iso-8859-1
-    """
-    ALIASES[alias] = canonical
-
-
-def add_codec(charset, codecname):
-    """Add a codec that map characters in the given charset to/from Unicode.
-
-    charset is the canonical name of a character set.  codecname is the name
-    of a Python codec, as appropriate for the second argument to the unicode()
-    built-in, or to the encode() method of a Unicode string.
-    """
-    CODEC_MAP[charset] = codecname
-
-
-\f
-class Charset:
-    """Map character sets to their email properties.
-
-    This class provides information about the requirements imposed on email
-    for a specific character set.  It also provides convenience routines for
-    converting between character sets, given the availability of the
-    applicable codecs.  Given a character set, it will do its best to provide
-    information on how to use that character set in an email in an
-    RFC-compliant way.
-
-    Certain character sets must be encoded with quoted-printable or base64
-    when used in email headers or bodies.  Certain character sets must be
-    converted outright, and are not allowed in email.  Instances of this
-    module expose the following information about a character set:
-
-    input_charset: The initial character set specified.  Common aliases
-                   are converted to their `official' email names (e.g. latin_1
-                   is converted to iso-8859-1).  Defaults to 7-bit us-ascii.
-
-    header_encoding: If the character set must be encoded before it can be
-                     used in an email header, this attribute will be set to
-                     Charset.QP (for quoted-printable), Charset.BASE64 (for
-                     base64 encoding), or Charset.SHORTEST for the shortest of
-                     QP or BASE64 encoding.  Otherwise, it will be None.
-
-    body_encoding: Same as header_encoding, but describes the encoding for the
-                   mail message's body, which indeed may be different than the
-                   header encoding.  Charset.SHORTEST is not allowed for
-                   body_encoding.
-
-    output_charset: Some character sets must be converted before the can be
-                    used in email headers or bodies.  If the input_charset is
-                    one of them, this attribute will contain the name of the
-                    charset output will be converted to.  Otherwise, it will
-                    be None.
-
-    input_codec: The name of the Python codec used to convert the
-                 input_charset to Unicode.  If no conversion codec is
-                 necessary, this attribute will be None.
-
-    output_codec: The name of the Python codec used to convert Unicode
-                  to the output_charset.  If no conversion codec is necessary,
-                  this attribute will have the same value as the input_codec.
-    """
-    def __init__(self, input_charset=DEFAULT_CHARSET):
-        # RFC 2046, $4.1.2 says charsets are not case sensitive.  We coerce to
-        # unicode because its .lower() is locale insensitive.  If the argument
-        # is already a unicode, we leave it at that, but ensure that the
-        # charset is ASCII, as the standard (RFC XXX) requires.
-        try:
-            if isinstance(input_charset, unicode):
-                input_charset.encode('ascii')
-            else:
-                input_charset = unicode(input_charset, 'ascii')
-        except UnicodeError:
-            raise errors.CharsetError(input_charset)
-        input_charset = input_charset.lower().encode('ascii')
-        # Set the input charset after filtering through the aliases and/or codecs
-        if not (input_charset in ALIASES or input_charset in CHARSETS):
-            try:
-                input_charset = codecs.lookup(input_charset).name
-            except LookupError:
-                pass
-        self.input_charset = ALIASES.get(input_charset, input_charset)
-        # We can try to guess which encoding and conversion to use by the
-        # charset_map dictionary.  Try that first, but let the user override
-        # it.
-        henc, benc, conv = CHARSETS.get(self.input_charset,
-                                        (SHORTEST, BASE64, None))
-        if not conv:
-            conv = self.input_charset
-        # Set the attributes, allowing the arguments to override the default.
-        self.header_encoding = henc
-        self.body_encoding = benc
-        self.output_charset = ALIASES.get(conv, conv)
-        # Now set the codecs.  If one isn't defined for input_charset,
-        # guess and try a Unicode codec with the same name as input_codec.
-        self.input_codec = CODEC_MAP.get(self.input_charset,
-                                         self.input_charset)
-        self.output_codec = CODEC_MAP.get(self.output_charset,
-                                          self.output_charset)
-
-    def __str__(self):
-        return self.input_charset.lower()
-
-    __repr__ = __str__
-
-    def __eq__(self, other):
-        return str(self) == str(other).lower()
-
-    def __ne__(self, other):
-        return not self.__eq__(other)
-
-    def get_body_encoding(self):
-        """Return the content-transfer-encoding used for body encoding.
-
-        This is either the string `quoted-printable' or `base64' depending on
-        the encoding used, or it is a function in which case you should call
-        the function with a single argument, the Message object being
-        encoded.  The function should then set the Content-Transfer-Encoding
-        header itself to whatever is appropriate.
-
-        Returns "quoted-printable" if self.body_encoding is QP.
-        Returns "base64" if self.body_encoding is BASE64.
-        Returns "7bit" otherwise.
-        """
-        assert self.body_encoding != SHORTEST
-        if self.body_encoding == QP:
-            return 'quoted-printable'
-        elif self.body_encoding == BASE64:
-            return 'base64'
-        else:
-            return encode_7or8bit
-
-    def convert(self, s):
-        """Convert a string from the input_codec to the output_codec."""
-        if self.input_codec != self.output_codec:
-            return unicode(s, self.input_codec).encode(self.output_codec)
-        else:
-            return s
-
-    def to_splittable(self, s):
-        """Convert a possibly multibyte string to a safely splittable format.
-
-        Uses the input_codec to try and convert the string to Unicode, so it
-        can be safely split on character boundaries (even for multibyte
-        characters).
-
-        Returns the string as-is if it isn't known how to convert it to
-        Unicode with the input_charset.
-
-        Characters that could not be converted to Unicode will be replaced
-        with the Unicode replacement character U+FFFD.
-        """
-        if isinstance(s, unicode) or self.input_codec is None:
-            return s
-        try:
-            return unicode(s, self.input_codec, 'replace')
-        except LookupError:
-            # Input codec not installed on system, so return the original
-            # string unchanged.
-            return s
-
-    def from_splittable(self, ustr, to_output=True):
-        """Convert a splittable string back into an encoded string.
-
-        Uses the proper codec to try and convert the string from Unicode back
-        into an encoded format.  Return the string as-is if it is not Unicode,
-        or if it could not be converted from Unicode.
-
-        Characters that could not be converted from Unicode will be replaced
-        with an appropriate character (usually '?').
-
-        If to_output is True (the default), uses output_codec to convert to an
-        encoded format.  If to_output is False, uses input_codec.
-        """
-        if to_output:
-            codec = self.output_codec
-        else:
-            codec = self.input_codec
-        if not isinstance(ustr, unicode) or codec is None:
-            return ustr
-        try:
-            return ustr.encode(codec, 'replace')
-        except LookupError:
-            # Output codec not installed
-            return ustr
-
-    def get_output_charset(self):
-        """Return the output character set.
-
-        This is self.output_charset if that is not None, otherwise it is
-        self.input_charset.
-        """
-        return self.output_charset or self.input_charset
-
-    def encoded_header_len(self, s):
-        """Return the length of the encoded header string."""
-        cset = self.get_output_charset()
-        # The len(s) of a 7bit encoding is len(s)
-        if self.header_encoding == BASE64:
-            return email.base64mime.base64_len(s) + len(cset) + MISC_LEN
-        elif self.header_encoding == QP:
-            return email.quoprimime.header_quopri_len(s) + len(cset) + MISC_LEN
-        elif self.header_encoding == SHORTEST:
-            lenb64 = email.base64mime.base64_len(s)
-            lenqp = email.quoprimime.header_quopri_len(s)
-            return min(lenb64, lenqp) + len(cset) + MISC_LEN
-        else:
-            return len(s)
-
-    def header_encode(self, s, convert=False):
-        """Header-encode a string, optionally converting it to output_charset.
-
-        If convert is True, the string will be converted from the input
-        charset to the output charset automatically.  This is not useful for
-        multibyte character sets, which have line length issues (multibyte
-        characters must be split on a character, not a byte boundary); use the
-        high-level Header class to deal with these issues.  convert defaults
-        to False.
-
-        The type of encoding (base64 or quoted-printable) will be based on
-        self.header_encoding.
-        """
-        cset = self.get_output_charset()
-        if convert:
-            s = self.convert(s)
-        # 7bit/8bit encodings return the string unchanged (modulo conversions)
-        if self.header_encoding == BASE64:
-            return email.base64mime.header_encode(s, cset)
-        elif self.header_encoding == QP:
-            return email.quoprimime.header_encode(s, cset, maxlinelen=None)
-        elif self.header_encoding == SHORTEST:
-            lenb64 = email.base64mime.base64_len(s)
-            lenqp = email.quoprimime.header_quopri_len(s)
-            if lenb64 < lenqp:
-                return email.base64mime.header_encode(s, cset)
-            else:
-                return email.quoprimime.header_encode(s, cset, maxlinelen=None)
-        else:
-            return s
-
-    def body_encode(self, s, convert=True):
-        """Body-encode a string and convert it to output_charset.
-
-        If convert is True (the default), the string will be converted from
-        the input charset to output charset automatically.  Unlike
-        header_encode(), there are no issues with byte boundaries and
-        multibyte charsets in email bodies, so this is usually pretty safe.
-
-        The type of encoding (base64 or quoted-printable) will be based on
-        self.body_encoding.
-        """
-        if convert:
-            s = self.convert(s)
-        # 7bit/8bit encodings return the string unchanged (module conversions)
-        if self.body_encoding is BASE64:
-            return email.base64mime.body_encode(s)
-        elif self.body_encoding is QP:
-            return email.quoprimime.body_encode(s)
-        else:
-            return s
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/encoders.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/encoders.py
deleted file mode 100644
index 21a88e2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/encoders.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# Author: Barry Warsaw
-# Contact: email-sig@python.org
-
-"""Encodings and related functions."""
-
-__all__ = [
-    'encode_7or8bit',
-    'encode_base64',
-    'encode_noop',
-    'encode_quopri',
-    ]
-
-import base64
-
-from quopri import encodestring as _encodestring
-
-
-\f
-def _qencode(s):
-    enc = _encodestring(s, quotetabs=True)
-    # Must encode spaces, which quopri.encodestring() doesn't do
-    return enc.replace(' ', '=20')
-
-
-def _bencode(s):
-    # We can't quite use base64.encodestring() since it tacks on a "courtesy
-    # newline".  Blech!
-    if not s:
-        return s
-    hasnewline = (s[-1] == '\n')
-    value = base64.encodestring(s)
-    if not hasnewline and value[-1] == '\n':
-        return value[:-1]
-    return value
-
-
-\f
-def encode_base64(msg):
-    """Encode the message's payload in Base64.
-
-    Also, add an appropriate Content-Transfer-Encoding header.
-    """
-    orig = msg.get_payload()
-    encdata = _bencode(orig)
-    msg.set_payload(encdata)
-    msg['Content-Transfer-Encoding'] = 'base64'
-
-
-\f
-def encode_quopri(msg):
-    """Encode the message's payload in quoted-printable.
-
-    Also, add an appropriate Content-Transfer-Encoding header.
-    """
-    orig = msg.get_payload()
-    encdata = _qencode(orig)
-    msg.set_payload(encdata)
-    msg['Content-Transfer-Encoding'] = 'quoted-printable'
-
-
-\f
-def encode_7or8bit(msg):
-    """Set the Content-Transfer-Encoding header to 7bit or 8bit."""
-    orig = msg.get_payload()
-    if orig is None:
-        # There's no payload.  For backwards compatibility we use 7bit
-        msg['Content-Transfer-Encoding'] = '7bit'
-        return
-    # We play a trick to make this go fast.  If encoding to ASCII succeeds, we
-    # know the data must be 7bit, otherwise treat it as 8bit.
-    try:
-        orig.encode('ascii')
-    except UnicodeError:
-        msg['Content-Transfer-Encoding'] = '8bit'
-    else:
-        msg['Content-Transfer-Encoding'] = '7bit'
-
-
-\f
-def encode_noop(msg):
-    """Do nothing."""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/errors.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/errors.py
deleted file mode 100644
index 8de8f77..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/errors.py
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# Author: Barry Warsaw
-# Contact: email-sig@python.org
-
-"""email package exception classes."""
-
-
-\f
-class MessageError(Exception):
-    """Base class for errors in the email package."""
-
-
-class MessageParseError(MessageError):
-    """Base class for message parsing errors."""
-
-
-class HeaderParseError(MessageParseError):
-    """Error while parsing headers."""
-
-
-class BoundaryError(MessageParseError):
-    """Couldn't find terminating boundary."""
-
-
-class MultipartConversionError(MessageError, TypeError):
-    """Conversion to a multipart is prohibited."""
-
-
-class CharsetError(MessageError):
-    """An illegal charset was given."""
-
-
-\f
-# These are parsing defects which the parser was able to work around.
-class MessageDefect:
-    """Base class for a message defect."""
-
-    def __init__(self, line=None):
-        self.line = line
-
-class NoBoundaryInMultipartDefect(MessageDefect):
-    """A message claimed to be a multipart but had no boundary parameter."""
-
-class StartBoundaryNotFoundDefect(MessageDefect):
-    """The claimed start boundary was never found."""
-
-class FirstHeaderLineIsContinuationDefect(MessageDefect):
-    """A message had a continuation line as its first header line."""
-
-class MisplacedEnvelopeHeaderDefect(MessageDefect):
-    """A 'Unix-from' header was found in the middle of a header block."""
-
-class MalformedHeaderDefect(MessageDefect):
-    """Found a header that was missing a colon, or was otherwise malformed."""
-
-class MultipartInvariantViolationDefect(MessageDefect):
-    """A message claimed to be a multipart but no subparts were found."""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/feedparser.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/feedparser.py
deleted file mode 100644
index cae56df..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/feedparser.py
+++ /dev/null
@@ -1,484 +0,0 @@
-# Copyright (C) 2004-2006 Python Software Foundation
-# Authors: Baxter, Wouters and Warsaw
-# Contact: email-sig@python.org
-
-"""FeedParser - An email feed parser.
-
-The feed parser implements an interface for incrementally parsing an email
-message, line by line.  This has advantages for certain applications, such as
-those reading email messages off a socket.
-
-FeedParser.feed() is the primary interface for pushing new data into the
-parser.  It returns when there's nothing more it can do with the available
-data.  When you have no more data to push into the parser, call .close().
-This completes the parsing and returns the root message object.
-
-The other advantage of this parser is that it will never throw a parsing
-exception.  Instead, when it finds something unexpected, it adds a 'defect' to
-the current message.  Defects are just instances that live on the message
-object's .defects attribute.
-"""
-
-__all__ = ['FeedParser']
-
-import re
-
-from email import errors
-from email import message
-
-NLCRE = re.compile('\r\n|\r|\n')
-NLCRE_bol = re.compile('(\r\n|\r|\n)')
-NLCRE_eol = re.compile('(\r\n|\r|\n)\Z')
-NLCRE_crack = re.compile('(\r\n|\r|\n)')
-# RFC 2822 $3.6.8 Optional fields.  ftext is %d33-57 / %d59-126, Any character
-# except controls, SP, and ":".
-headerRE = re.compile(r'^(From |[\041-\071\073-\176]{1,}:|[\t ])')
-EMPTYSTRING = ''
-NL = '\n'
-
-NeedMoreData = object()
-
-
-\f
-class BufferedSubFile(object):
-    """A file-ish object that can have new data loaded into it.
-
-    You can also push and pop line-matching predicates onto a stack.  When the
-    current predicate matches the current line, a false EOF response
-    (i.e. empty string) is returned instead.  This lets the parser adhere to a
-    simple abstraction -- it parses until EOF closes the current message.
-    """
-    def __init__(self):
-        # The last partial line pushed into this object.
-        self._partial = ''
-        # The list of full, pushed lines, in reverse order
-        self._lines = []
-        # The stack of false-EOF checking predicates.
-        self._eofstack = []
-        # A flag indicating whether the file has been closed or not.
-        self._closed = False
-
-    def push_eof_matcher(self, pred):
-        self._eofstack.append(pred)
-
-    def pop_eof_matcher(self):
-        return self._eofstack.pop()
-
-    def close(self):
-        # Don't forget any trailing partial line.
-        self._lines.append(self._partial)
-        self._partial = ''
-        self._closed = True
-
-    def readline(self):
-        if not self._lines:
-            if self._closed:
-                return ''
-            return NeedMoreData
-        # Pop the line off the stack and see if it matches the current
-        # false-EOF predicate.
-        line = self._lines.pop()
-        # RFC 2046, section 5.1.2 requires us to recognize outer level
-        # boundaries at any level of inner nesting.  Do this, but be sure it's
-        # in the order of most to least nested.
-        for ateof in self._eofstack[::-1]:
-            if ateof(line):
-                # We're at the false EOF.  But push the last line back first.
-                self._lines.append(line)
-                return ''
-        return line
-
-    def unreadline(self, line):
-        # Let the consumer push a line back into the buffer.
-        assert line is not NeedMoreData
-        self._lines.append(line)
-
-    def push(self, data):
-        """Push some new data into this object."""
-        # Handle any previous leftovers
-        data, self._partial = self._partial + data, ''
-        # Crack into lines, but preserve the newlines on the end of each
-        parts = NLCRE_crack.split(data)
-        # The *ahem* interesting behaviour of re.split when supplied grouping
-        # parentheses is that the last element of the resulting list is the
-        # data after the final RE.  In the case of a NL/CR terminated string,
-        # this is the empty string.
-        self._partial = parts.pop()
-        #GAN 29Mar09  bugs 1555570, 1721862  Confusion at 8K boundary ending with \r:
-        # is there a \n to follow later?
-        if not self._partial and parts and parts[-1].endswith('\r'):
-            self._partial = parts.pop(-2)+parts.pop()
-        # parts is a list of strings, alternating between the line contents
-        # and the eol character(s).  Gather up a list of lines after
-        # re-attaching the newlines.
-        lines = []
-        for i in range(len(parts) // 2):
-            lines.append(parts[i*2] + parts[i*2+1])
-        self.pushlines(lines)
-
-    def pushlines(self, lines):
-        # Reverse and insert at the front of the lines.
-        self._lines[:0] = lines[::-1]
-
-    def is_closed(self):
-        return self._closed
-
-    def __iter__(self):
-        return self
-
-    def next(self):
-        line = self.readline()
-        if line == '':
-            raise StopIteration
-        return line
-
-
-\f
-class FeedParser:
-    """A feed-style parser of email."""
-
-    def __init__(self, _factory=message.Message):
-        """_factory is called with no arguments to create a new message obj"""
-        self._factory = _factory
-        self._input = BufferedSubFile()
-        self._msgstack = []
-        self._parse = self._parsegen().next
-        self._cur = None
-        self._last = None
-        self._headersonly = False
-
-    # Non-public interface for supporting Parser's headersonly flag
-    def _set_headersonly(self):
-        self._headersonly = True
-
-    def feed(self, data):
-        """Push more data into the parser."""
-        self._input.push(data)
-        self._call_parse()
-
-    def _call_parse(self):
-        try:
-            self._parse()
-        except StopIteration:
-            pass
-
-    def close(self):
-        """Parse all remaining data and return the root message object."""
-        self._input.close()
-        self._call_parse()
-        root = self._pop_message()
-        assert not self._msgstack
-        # Look for final set of defects
-        if root.get_content_maintype() == 'multipart' \
-               and not root.is_multipart():
-            root.defects.append(errors.MultipartInvariantViolationDefect())
-        return root
-
-    def _new_message(self):
-        msg = self._factory()
-        if self._cur and self._cur.get_content_type() == 'multipart/digest':
-            msg.set_default_type('message/rfc822')
-        if self._msgstack:
-            self._msgstack[-1].attach(msg)
-        self._msgstack.append(msg)
-        self._cur = msg
-        self._last = msg
-
-    def _pop_message(self):
-        retval = self._msgstack.pop()
-        if self._msgstack:
-            self._cur = self._msgstack[-1]
-        else:
-            self._cur = None
-        return retval
-
-    def _parsegen(self):
-        # Create a new message and start by parsing headers.
-        self._new_message()
-        headers = []
-        # Collect the headers, searching for a line that doesn't match the RFC
-        # 2822 header or continuation pattern (including an empty line).
-        for line in self._input:
-            if line is NeedMoreData:
-                yield NeedMoreData
-                continue
-            if not headerRE.match(line):
-                # If we saw the RFC defined header/body separator
-                # (i.e. newline), just throw it away. Otherwise the line is
-                # part of the body so push it back.
-                if not NLCRE.match(line):
-                    self._input.unreadline(line)
-                break
-            headers.append(line)
-        # Done with the headers, so parse them and figure out what we're
-        # supposed to see in the body of the message.
-        self._parse_headers(headers)
-        # Headers-only parsing is a backwards compatibility hack, which was
-        # necessary in the older parser, which could throw errors.  All
-        # remaining lines in the input are thrown into the message body.
-        if self._headersonly:
-            lines = []
-            while True:
-                line = self._input.readline()
-                if line is NeedMoreData:
-                    yield NeedMoreData
-                    continue
-                if line == '':
-                    break
-                lines.append(line)
-            self._cur.set_payload(EMPTYSTRING.join(lines))
-            return
-        if self._cur.get_content_type() == 'message/delivery-status':
-            # message/delivery-status contains blocks of headers separated by
-            # a blank line.  We'll represent each header block as a separate
-            # nested message object, but the processing is a bit different
-            # than standard message/* types because there is no body for the
-            # nested messages.  A blank line separates the subparts.
-            while True:
-                self._input.push_eof_matcher(NLCRE.match)
-                for retval in self._parsegen():
-                    if retval is NeedMoreData:
-                        yield NeedMoreData
-                        continue
-                    break
-                msg = self._pop_message()
-                # We need to pop the EOF matcher in order to tell if we're at
-                # the end of the current file, not the end of the last block
-                # of message headers.
-                self._input.pop_eof_matcher()
-                # The input stream must be sitting at the newline or at the
-                # EOF.  We want to see if we're at the end of this subpart, so
-                # first consume the blank line, then test the next line to see
-                # if we're at this subpart's EOF.
-                while True:
-                    line = self._input.readline()
-                    if line is NeedMoreData:
-                        yield NeedMoreData
-                        continue
-                    break
-                while True:
-                    line = self._input.readline()
-                    if line is NeedMoreData:
-                        yield NeedMoreData
-                        continue
-                    break
-                if line == '':
-                    break
-                # Not at EOF so this is a line we're going to need.
-                self._input.unreadline(line)
-            return
-        if self._cur.get_content_maintype() == 'message':
-            # The message claims to be a message/* type, then what follows is
-            # another RFC 2822 message.
-            for retval in self._parsegen():
-                if retval is NeedMoreData:
-                    yield NeedMoreData
-                    continue
-                break
-            self._pop_message()
-            return
-        if self._cur.get_content_maintype() == 'multipart':
-            boundary = self._cur.get_boundary()
-            if boundary is None:
-                # The message /claims/ to be a multipart but it has not
-                # defined a boundary.  That's a problem which we'll handle by
-                # reading everything until the EOF and marking the message as
-                # defective.
-                self._cur.defects.append(errors.NoBoundaryInMultipartDefect())
-                lines = []
-                for line in self._input:
-                    if line is NeedMoreData:
-                        yield NeedMoreData
-                        continue
-                    lines.append(line)
-                self._cur.set_payload(EMPTYSTRING.join(lines))
-                return
-            # Create a line match predicate which matches the inter-part
-            # boundary as well as the end-of-multipart boundary.  Don't push
-            # this onto the input stream until we've scanned past the
-            # preamble.
-            separator = '--' + boundary
-            boundaryre = re.compile(
-                '(?P<sep>' + re.escape(separator) +
-                r')(?P<end>--)?(?P<ws>[ \t]*)(?P<linesep>\r\n|\r|\n)?$')
-            capturing_preamble = True
-            preamble = []
-            linesep = False
-            while True:
-                line = self._input.readline()
-                if line is NeedMoreData:
-                    yield NeedMoreData
-                    continue
-                if line == '':
-                    break
-                mo = boundaryre.match(line)
-                if mo:
-                    # If we're looking at the end boundary, we're done with
-                    # this multipart.  If there was a newline at the end of
-                    # the closing boundary, then we need to initialize the
-                    # epilogue with the empty string (see below).
-                    if mo.group('end'):
-                        linesep = mo.group('linesep')
-                        break
-                    # We saw an inter-part boundary.  Were we in the preamble?
-                    if capturing_preamble:
-                        if preamble:
-                            # According to RFC 2046, the last newline belongs
-                            # to the boundary.
-                            lastline = preamble[-1]
-                            eolmo = NLCRE_eol.search(lastline)
-                            if eolmo:
-                                preamble[-1] = lastline[:-len(eolmo.group(0))]
-                            self._cur.preamble = EMPTYSTRING.join(preamble)
-                        capturing_preamble = False
-                        self._input.unreadline(line)
-                        continue
-                    # We saw a boundary separating two parts.  Consume any
-                    # multiple boundary lines that may be following.  Our
-                    # interpretation of RFC 2046 BNF grammar does not produce
-                    # body parts within such double boundaries.
-                    while True:
-                        line = self._input.readline()
-                        if line is NeedMoreData:
-                            yield NeedMoreData
-                            continue
-                        mo = boundaryre.match(line)
-                        if not mo:
-                            self._input.unreadline(line)
-                            break
-                    # Recurse to parse this subpart; the input stream points
-                    # at the subpart's first line.
-                    self._input.push_eof_matcher(boundaryre.match)
-                    for retval in self._parsegen():
-                        if retval is NeedMoreData:
-                            yield NeedMoreData
-                            continue
-                        break
-                    # Because of RFC 2046, the newline preceding the boundary
-                    # separator actually belongs to the boundary, not the
-                    # previous subpart's payload (or epilogue if the previous
-                    # part is a multipart).
-                    if self._last.get_content_maintype() == 'multipart':
-                        epilogue = self._last.epilogue
-                        if epilogue == '':
-                            self._last.epilogue = None
-                        elif epilogue is not None:
-                            mo = NLCRE_eol.search(epilogue)
-                            if mo:
-                                end = len(mo.group(0))
-                                self._last.epilogue = epilogue[:-end]
-                    else:
-                        payload = self._last.get_payload()
-                        if isinstance(payload, basestring):
-                            mo = NLCRE_eol.search(payload)
-                            if mo:
-                                payload = payload[:-len(mo.group(0))]
-                                self._last.set_payload(payload)
-                    self._input.pop_eof_matcher()
-                    self._pop_message()
-                    # Set the multipart up for newline cleansing, which will
-                    # happen if we're in a nested multipart.
-                    self._last = self._cur
-                else:
-                    # I think we must be in the preamble
-                    assert capturing_preamble
-                    preamble.append(line)
-            # We've seen either the EOF or the end boundary.  If we're still
-            # capturing the preamble, we never saw the start boundary.  Note
-            # that as a defect and store the captured text as the payload.
-            # Everything from here to the EOF is epilogue.
-            if capturing_preamble:
-                self._cur.defects.append(errors.StartBoundaryNotFoundDefect())
-                self._cur.set_payload(EMPTYSTRING.join(preamble))
-                epilogue = []
-                for line in self._input:
-                    if line is NeedMoreData:
-                        yield NeedMoreData
-                        continue
-                self._cur.epilogue = EMPTYSTRING.join(epilogue)
-                return
-            # If the end boundary ended in a newline, we'll need to make sure
-            # the epilogue isn't None
-            if linesep:
-                epilogue = ['']
-            else:
-                epilogue = []
-            for line in self._input:
-                if line is NeedMoreData:
-                    yield NeedMoreData
-                    continue
-                epilogue.append(line)
-            # Any CRLF at the front of the epilogue is not technically part of
-            # the epilogue.  Also, watch out for an empty string epilogue,
-            # which means a single newline.
-            if epilogue:
-                firstline = epilogue[0]
-                bolmo = NLCRE_bol.match(firstline)
-                if bolmo:
-                    epilogue[0] = firstline[len(bolmo.group(0)):]
-            self._cur.epilogue = EMPTYSTRING.join(epilogue)
-            return
-        # Otherwise, it's some non-multipart type, so the entire rest of the
-        # file contents becomes the payload.
-        lines = []
-        for line in self._input:
-            if line is NeedMoreData:
-                yield NeedMoreData
-                continue
-            lines.append(line)
-        self._cur.set_payload(EMPTYSTRING.join(lines))
-
-    def _parse_headers(self, lines):
-        # Passed a list of lines that make up the headers for the current msg
-        lastheader = ''
-        lastvalue = []
-        for lineno, line in enumerate(lines):
-            # Check for continuation
-            if line[0] in ' \t':
-                if not lastheader:
-                    # The first line of the headers was a continuation.  This
-                    # is illegal, so let's note the defect, store the illegal
-                    # line, and ignore it for purposes of headers.
-                    defect = errors.FirstHeaderLineIsContinuationDefect(line)
-                    self._cur.defects.append(defect)
-                    continue
-                lastvalue.append(line)
-                continue
-            if lastheader:
-                # XXX reconsider the joining of folded lines
-                lhdr = EMPTYSTRING.join(lastvalue)[:-1].rstrip('\r\n')
-                self._cur[lastheader] = lhdr
-                lastheader, lastvalue = '', []
-            # Check for envelope header, i.e. unix-from
-            if line.startswith('From '):
-                if lineno == 0:
-                    # Strip off the trailing newline
-                    mo = NLCRE_eol.search(line)
-                    if mo:
-                        line = line[:-len(mo.group(0))]
-                    self._cur.set_unixfrom(line)
-                    continue
-                elif lineno == len(lines) - 1:
-                    # Something looking like a unix-from at the end - it's
-                    # probably the first line of the body, so push back the
-                    # line and stop.
-                    self._input.unreadline(line)
-                    return
-                else:
-                    # Weirdly placed unix-from line.  Note this as a defect
-                    # and ignore it.
-                    defect = errors.MisplacedEnvelopeHeaderDefect(line)
-                    self._cur.defects.append(defect)
-                    continue
-            # Split the line on the colon separating field name from value.
-            i = line.find(':')
-            if i < 0:
-                defect = errors.MalformedHeaderDefect(line)
-                self._cur.defects.append(defect)
-                continue
-            lastheader = line[:i]
-            lastvalue = [line[i+1:].lstrip()]
-        # Done with all the lines, so handle the last header.
-        if lastheader:
-            # XXX reconsider the joining of folded lines
-            self._cur[lastheader] = EMPTYSTRING.join(lastvalue).rstrip('\r\n')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/generator.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/generator.py
deleted file mode 100644
index a05e232..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/generator.py
+++ /dev/null
@@ -1,364 +0,0 @@
-# Copyright (C) 2001-2010 Python Software Foundation
-# Contact: email-sig@python.org
-
-"""Classes to generate plain text from a message object tree."""
-
-__all__ = ['Generator', 'DecodedGenerator']
-
-import re
-import sys
-import time
-import random
-import warnings
-
-from cStringIO import StringIO
-from email.header import Header
-
-UNDERSCORE = '_'
-NL = '\n'
-
-fcre = re.compile(r'^From ', re.MULTILINE)
-
-def _is8bitstring(s):
-    if isinstance(s, str):
-        try:
-            unicode(s, 'us-ascii')
-        except UnicodeError:
-            return True
-    return False
-
-
-\f
-class Generator:
-    """Generates output from a Message object tree.
-
-    This basic generator writes the message to the given file object as plain
-    text.
-    """
-    #
-    # Public interface
-    #
-
-    def __init__(self, outfp, mangle_from_=True, maxheaderlen=78):
-        """Create the generator for message flattening.
-
-        outfp is the output file-like object for writing the message to.  It
-        must have a write() method.
-
-        Optional mangle_from_ is a flag that, when True (the default), escapes
-        From_ lines in the body of the message by putting a `>' in front of
-        them.
-
-        Optional maxheaderlen specifies the longest length for a non-continued
-        header.  When a header line is longer (in characters, with tabs
-        expanded to 8 spaces) than maxheaderlen, the header will split as
-        defined in the Header class.  Set maxheaderlen to zero to disable
-        header wrapping.  The default is 78, as recommended (but not required)
-        by RFC 2822.
-        """
-        self._fp = outfp
-        self._mangle_from_ = mangle_from_
-        self._maxheaderlen = maxheaderlen
-
-    def write(self, s):
-        # Just delegate to the file object
-        self._fp.write(s)
-
-    def flatten(self, msg, unixfrom=False):
-        """Print the message object tree rooted at msg to the output file
-        specified when the Generator instance was created.
-
-        unixfrom is a flag that forces the printing of a Unix From_ delimiter
-        before the first object in the message tree.  If the original message
-        has no From_ delimiter, a `standard' one is crafted.  By default, this
-        is False to inhibit the printing of any From_ delimiter.
-
-        Note that for subobjects, no From_ line is printed.
-        """
-        if unixfrom:
-            ufrom = msg.get_unixfrom()
-            if not ufrom:
-                ufrom = 'From nobody ' + time.ctime(time.time())
-            print >> self._fp, ufrom
-        self._write(msg)
-
-    def clone(self, fp):
-        """Clone this generator with the exact same options."""
-        return self.__class__(fp, self._mangle_from_, self._maxheaderlen)
-
-    #
-    # Protected interface - undocumented ;/
-    #
-
-    def _write(self, msg):
-        # We can't write the headers yet because of the following scenario:
-        # say a multipart message includes the boundary string somewhere in
-        # its body.  We'd have to calculate the new boundary /before/ we write
-        # the headers so that we can write the correct Content-Type:
-        # parameter.
-        #
-        # The way we do this, so as to make the _handle_*() methods simpler,
-        # is to cache any subpart writes into a StringIO.  The we write the
-        # headers and the StringIO contents.  That way, subpart handlers can
-        # Do The Right Thing, and can still modify the Content-Type: header if
-        # necessary.
-        oldfp = self._fp
-        try:
-            self._fp = sfp = StringIO()
-            self._dispatch(msg)
-        finally:
-            self._fp = oldfp
-        # Write the headers.  First we see if the message object wants to
-        # handle that itself.  If not, we'll do it generically.
-        meth = getattr(msg, '_write_headers', None)
-        if meth is None:
-            self._write_headers(msg)
-        else:
-            meth(self)
-        self._fp.write(sfp.getvalue())
-
-    def _dispatch(self, msg):
-        # Get the Content-Type: for the message, then try to dispatch to
-        # self._handle_<maintype>_<subtype>().  If there's no handler for the
-        # full MIME type, then dispatch to self._handle_<maintype>().  If
-        # that's missing too, then dispatch to self._writeBody().
-        main = msg.get_content_maintype()
-        sub = msg.get_content_subtype()
-        specific = UNDERSCORE.join((main, sub)).replace('-', '_')
-        meth = getattr(self, '_handle_' + specific, None)
-        if meth is None:
-            generic = main.replace('-', '_')
-            meth = getattr(self, '_handle_' + generic, None)
-            if meth is None:
-                meth = self._writeBody
-        meth(msg)
-
-    #
-    # Default handlers
-    #
-
-    def _write_headers(self, msg):
-        for h, v in msg.items():
-            print >> self._fp, '%s:' % h,
-            if self._maxheaderlen == 0:
-                # Explicit no-wrapping
-                print >> self._fp, v
-            elif isinstance(v, Header):
-                # Header instances know what to do
-                print >> self._fp, v.encode()
-            elif _is8bitstring(v):
-                # If we have raw 8bit data in a byte string, we have no idea
-                # what the encoding is.  There is no safe way to split this
-                # string.  If it's ascii-subset, then we could do a normal
-                # ascii split, but if it's multibyte then we could break the
-                # string.  There's no way to know so the least harm seems to
-                # be to not split the string and risk it being too long.
-                print >> self._fp, v
-            else:
-                # Header's got lots of smarts, so use it.  Note that this is
-                # fundamentally broken though because we lose idempotency when
-                # the header string is continued with tabs.  It will now be
-                # continued with spaces.  This was reversedly broken before we
-                # fixed bug 1974.  Either way, we lose.
-                print >> self._fp, Header(
-                    v, maxlinelen=self._maxheaderlen, header_name=h).encode()
-        # A blank line always separates headers from body
-        print >> self._fp
-
-    #
-    # Handlers for writing types and subtypes
-    #
-
-    def _handle_text(self, msg):
-        payload = msg.get_payload()
-        if payload is None:
-            return
-        if not isinstance(payload, basestring):
-            raise TypeError('string payload expected: %s' % type(payload))
-        if self._mangle_from_:
-            payload = fcre.sub('>From ', payload)
-        self._fp.write(payload)
-
-    # Default body handler
-    _writeBody = _handle_text
-
-    def _handle_multipart(self, msg):
-        # The trick here is to write out each part separately, merge them all
-        # together, and then make sure that the boundary we've chosen isn't
-        # present in the payload.
-        msgtexts = []
-        subparts = msg.get_payload()
-        if subparts is None:
-            subparts = []
-        elif isinstance(subparts, basestring):
-            # e.g. a non-strict parse of a message with no starting boundary.
-            self._fp.write(subparts)
-            return
-        elif not isinstance(subparts, list):
-            # Scalar payload
-            subparts = [subparts]
-        for part in subparts:
-            s = StringIO()
-            g = self.clone(s)
-            g.flatten(part, unixfrom=False)
-            msgtexts.append(s.getvalue())
-        # BAW: What about boundaries that are wrapped in double-quotes?
-        boundary = msg.get_boundary()
-        if not boundary:
-            # Create a boundary that doesn't appear in any of the
-            # message texts.
-            alltext = NL.join(msgtexts)
-            boundary = _make_boundary(alltext)
-            msg.set_boundary(boundary)
-        # If there's a preamble, write it out, with a trailing CRLF
-        if msg.preamble is not None:
-            print >> self._fp, msg.preamble
-        # dash-boundary transport-padding CRLF
-        print >> self._fp, '--' + boundary
-        # body-part
-        if msgtexts:
-            self._fp.write(msgtexts.pop(0))
-        # *encapsulation
-        # --> delimiter transport-padding
-        # --> CRLF body-part
-        for body_part in msgtexts:
-            # delimiter transport-padding CRLF
-            print >> self._fp, '\n--' + boundary
-            # body-part
-            self._fp.write(body_part)
-        # close-delimiter transport-padding
-        self._fp.write('\n--' + boundary + '--')
-        if msg.epilogue is not None:
-            print >> self._fp
-            self._fp.write(msg.epilogue)
-
-    def _handle_multipart_signed(self, msg):
-        # The contents of signed parts has to stay unmodified in order to keep
-        # the signature intact per RFC1847 2.1, so we disable header wrapping.
-        # RDM: This isn't enough to completely preserve the part, but it helps.
-        old_maxheaderlen = self._maxheaderlen
-        try:
-            self._maxheaderlen = 0
-            self._handle_multipart(msg)
-        finally:
-            self._maxheaderlen = old_maxheaderlen
-
-    def _handle_message_delivery_status(self, msg):
-        # We can't just write the headers directly to self's file object
-        # because this will leave an extra newline between the last header
-        # block and the boundary.  Sigh.
-        blocks = []
-        for part in msg.get_payload():
-            s = StringIO()
-            g = self.clone(s)
-            g.flatten(part, unixfrom=False)
-            text = s.getvalue()
-            lines = text.split('\n')
-            # Strip off the unnecessary trailing empty line
-            if lines and lines[-1] == '':
-                blocks.append(NL.join(lines[:-1]))
-            else:
-                blocks.append(text)
-        # Now join all the blocks with an empty line.  This has the lovely
-        # effect of separating each block with an empty line, but not adding
-        # an extra one after the last one.
-        self._fp.write(NL.join(blocks))
-
-    def _handle_message(self, msg):
-        s = StringIO()
-        g = self.clone(s)
-        # The payload of a message/rfc822 part should be a multipart sequence
-        # of length 1.  The zeroth element of the list should be the Message
-        # object for the subpart.  Extract that object, stringify it, and
-        # write it out.
-        # Except, it turns out, when it's a string instead, which happens when
-        # and only when HeaderParser is used on a message of mime type
-        # message/rfc822.  Such messages are generated by, for example,
-        # Groupwise when forwarding unadorned messages.  (Issue 7970.)  So
-        # in that case we just emit the string body.
-        payload = msg.get_payload()
-        if isinstance(payload, list):
-            g.flatten(msg.get_payload(0), unixfrom=False)
-            payload = s.getvalue()
-        self._fp.write(payload)
-
-
-\f
-_FMT = '[Non-text (%(type)s) part of message omitted, filename %(filename)s]'
-
-class DecodedGenerator(Generator):
-    """Generates a text representation of a message.
-
-    Like the Generator base class, except that non-text parts are substituted
-    with a format string representing the part.
-    """
-    def __init__(self, outfp, mangle_from_=True, maxheaderlen=78, fmt=None):
-        """Like Generator.__init__() except that an additional optional
-        argument is allowed.
-
-        Walks through all subparts of a message.  If the subpart is of main
-        type `text', then it prints the decoded payload of the subpart.
-
-        Otherwise, fmt is a format string that is used instead of the message
-        payload.  fmt is expanded with the following keywords (in
-        %(keyword)s format):
-
-        type       : Full MIME type of the non-text part
-        maintype   : Main MIME type of the non-text part
-        subtype    : Sub-MIME type of the non-text part
-        filename   : Filename of the non-text part
-        description: Description associated with the non-text part
-        encoding   : Content transfer encoding of the non-text part
-
-        The default value for fmt is None, meaning
-
-        [Non-text (%(type)s) part of message omitted, filename %(filename)s]
-        """
-        Generator.__init__(self, outfp, mangle_from_, maxheaderlen)
-        if fmt is None:
-            self._fmt = _FMT
-        else:
-            self._fmt = fmt
-
-    def _dispatch(self, msg):
-        for part in msg.walk():
-            maintype = part.get_content_maintype()
-            if maintype == 'text':
-                print >> self, part.get_payload(decode=True)
-            elif maintype == 'multipart':
-                # Just skip this
-                pass
-            else:
-                print >> self, self._fmt % {
-                    'type'       : part.get_content_type(),
-                    'maintype'   : part.get_content_maintype(),
-                    'subtype'    : part.get_content_subtype(),
-                    'filename'   : part.get_filename('[no filename]'),
-                    'description': part.get('Content-Description',
-                                            '[no description]'),
-                    'encoding'   : part.get('Content-Transfer-Encoding',
-                                            '[no encoding]'),
-                    }
-
-
-\f
-# Helper
-_width = len(repr(sys.maxint-1))
-_fmt = '%%0%dd' % _width
-
-def _make_boundary(text=None):
-    # Craft a random boundary.  If text is given, ensure that the chosen
-    # boundary doesn't appear in the text.
-    token = random.randrange(sys.maxint)
-    boundary = ('=' * 15) + (_fmt % token) + '=='
-    if text is None:
-        return boundary
-    b = boundary
-    counter = 0
-    while True:
-        cre = re.compile('^--' + re.escape(b) + '(--)?$', re.MULTILINE)
-        if not cre.search(text):
-            break
-        b = boundary + '.' + str(counter)
-        counter += 1
-    return b
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/header.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/header.py
deleted file mode 100644
index 4ee8273..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/header.py
+++ /dev/null
@@ -1,514 +0,0 @@
-# Copyright (C) 2002-2006 Python Software Foundation
-# Author: Ben Gertzfield, Barry Warsaw
-# Contact: email-sig@python.org
-
-"""Header encoding and decoding functionality."""
-
-__all__ = [
-    'Header',
-    'decode_header',
-    'make_header',
-    ]
-
-import re
-import binascii
-
-import email.quoprimime
-import email.base64mime
-
-from email.errors import HeaderParseError
-from email.charset import Charset
-
-NL = '\n'
-SPACE = ' '
-USPACE = u' '
-SPACE8 = ' ' * 8
-UEMPTYSTRING = u''
-
-MAXLINELEN = 76
-
-USASCII = Charset('us-ascii')
-UTF8 = Charset('utf-8')
-
-# Match encoded-word strings in the form =?charset?q?Hello_World?=
-ecre = re.compile(r'''
-  =\?                   # literal =?
-  (?P<charset>[^?]*?)   # non-greedy up to the next ? is the charset
-  \?                    # literal ?
-  (?P<encoding>[qb])    # either a "q" or a "b", case insensitive
-  \?                    # literal ?
-  (?P<encoded>.*?)      # non-greedy up to the next ?= is the encoded string
-  \?=                   # literal ?=
-  (?=[ \t]|$)           # whitespace or the end of the string
-  ''', re.VERBOSE | re.IGNORECASE | re.MULTILINE)
-
-# Field name regexp, including trailing colon, but not separating whitespace,
-# according to RFC 2822.  Character range is from tilde to exclamation mark.
-# For use with .match()
-fcre = re.compile(r'[\041-\176]+:$')
-
-# Find a header embedded in a putative header value.  Used to check for
-# header injection attack.
-_embeded_header = re.compile(r'\n[^ \t]+:')
-
-
-\f
-# Helpers
-_max_append = email.quoprimime._max_append
-
-
-\f
-def decode_header(header):
-    """Decode a message header value without converting charset.
-
-    Returns a list of (decoded_string, charset) pairs containing each of the
-    decoded parts of the header.  Charset is None for non-encoded parts of the
-    header, otherwise a lower-case string containing the name of the character
-    set specified in the encoded string.
-
-    An email.errors.HeaderParseError may be raised when certain decoding error
-    occurs (e.g. a base64 decoding exception).
-    """
-    # If no encoding, just return the header
-    header = str(header)
-    if not ecre.search(header):
-        return [(header, None)]
-    decoded = []
-    dec = ''
-    for line in header.splitlines():
-        # This line might not have an encoding in it
-        if not ecre.search(line):
-            decoded.append((line, None))
-            continue
-        parts = ecre.split(line)
-        while parts:
-            unenc = parts.pop(0).strip()
-            if unenc:
-                # Should we continue a long line?
-                if decoded and decoded[-1][1] is None:
-                    decoded[-1] = (decoded[-1][0] + SPACE + unenc, None)
-                else:
-                    decoded.append((unenc, None))
-            if parts:
-                charset, encoding = [s.lower() for s in parts[0:2]]
-                encoded = parts[2]
-                dec = None
-                if encoding == 'q':
-                    dec = email.quoprimime.header_decode(encoded)
-                elif encoding == 'b':
-                    paderr = len(encoded) % 4   # Postel's law: add missing padding
-                    if paderr:
-                        encoded += '==='[:4 - paderr]
-                    try:
-                        dec = email.base64mime.decode(encoded)
-                    except binascii.Error:
-                        # Turn this into a higher level exception.  BAW: Right
-                        # now we throw the lower level exception away but
-                        # when/if we get exception chaining, we'll preserve it.
-                        raise HeaderParseError
-                if dec is None:
-                    dec = encoded
-
-                if decoded and decoded[-1][1] == charset:
-                    decoded[-1] = (decoded[-1][0] + dec, decoded[-1][1])
-                else:
-                    decoded.append((dec, charset))
-            del parts[0:3]
-    return decoded
-
-
-\f
-def make_header(decoded_seq, maxlinelen=None, header_name=None,
-                continuation_ws=' '):
-    """Create a Header from a sequence of pairs as returned by decode_header()
-
-    decode_header() takes a header value string and returns a sequence of
-    pairs of the format (decoded_string, charset) where charset is the string
-    name of the character set.
-
-    This function takes one of those sequence of pairs and returns a Header
-    instance.  Optional maxlinelen, header_name, and continuation_ws are as in
-    the Header constructor.
-    """
-    h = Header(maxlinelen=maxlinelen, header_name=header_name,
-               continuation_ws=continuation_ws)
-    for s, charset in decoded_seq:
-        # None means us-ascii but we can simply pass it on to h.append()
-        if charset is not None and not isinstance(charset, Charset):
-            charset = Charset(charset)
-        h.append(s, charset)
-    return h
-
-
-\f
-class Header:
-    def __init__(self, s=None, charset=None,
-                 maxlinelen=None, header_name=None,
-                 continuation_ws=' ', errors='strict'):
-        """Create a MIME-compliant header that can contain many character sets.
-
-        Optional s is the initial header value.  If None, the initial header
-        value is not set.  You can later append to the header with .append()
-        method calls.  s may be a byte string or a Unicode string, but see the
-        .append() documentation for semantics.
-
-        Optional charset serves two purposes: it has the same meaning as the
-        charset argument to the .append() method.  It also sets the default
-        character set for all subsequent .append() calls that omit the charset
-        argument.  If charset is not provided in the constructor, the us-ascii
-        charset is used both as s's initial charset and as the default for
-        subsequent .append() calls.
-
-        The maximum line length can be specified explicit via maxlinelen.  For
-        splitting the first line to a shorter value (to account for the field
-        header which isn't included in s, e.g. `Subject') pass in the name of
-        the field in header_name.  The default maxlinelen is 76.
-
-        continuation_ws must be RFC 2822 compliant folding whitespace (usually
-        either a space or a hard tab) which will be prepended to continuation
-        lines.
-
-        errors is passed through to the .append() call.
-        """
-        if charset is None:
-            charset = USASCII
-        if not isinstance(charset, Charset):
-            charset = Charset(charset)
-        self._charset = charset
-        self._continuation_ws = continuation_ws
-        cws_expanded_len = len(continuation_ws.replace('\t', SPACE8))
-        # BAW: I believe `chunks' and `maxlinelen' should be non-public.
-        self._chunks = []
-        if s is not None:
-            self.append(s, charset, errors)
-        if maxlinelen is None:
-            maxlinelen = MAXLINELEN
-        if header_name is None:
-            # We don't know anything about the field header so the first line
-            # is the same length as subsequent lines.
-            self._firstlinelen = maxlinelen
-        else:
-            # The first line should be shorter to take into account the field
-            # header.  Also subtract off 2 extra for the colon and space.
-            self._firstlinelen = maxlinelen - len(header_name) - 2
-        # Second and subsequent lines should subtract off the length in
-        # columns of the continuation whitespace prefix.
-        self._maxlinelen = maxlinelen - cws_expanded_len
-
-    def __str__(self):
-        """A synonym for self.encode()."""
-        return self.encode()
-
-    def __unicode__(self):
-        """Helper for the built-in unicode function."""
-        uchunks = []
-        lastcs = None
-        for s, charset in self._chunks:
-            # We must preserve spaces between encoded and non-encoded word
-            # boundaries, which means for us we need to add a space when we go
-            # from a charset to None/us-ascii, or from None/us-ascii to a
-            # charset.  Only do this for the second and subsequent chunks.
-            nextcs = charset
-            if uchunks:
-                if lastcs not in (None, 'us-ascii'):
-                    if nextcs in (None, 'us-ascii'):
-                        uchunks.append(USPACE)
-                        nextcs = None
-                elif nextcs not in (None, 'us-ascii'):
-                    uchunks.append(USPACE)
-            lastcs = nextcs
-            uchunks.append(unicode(s, str(charset)))
-        return UEMPTYSTRING.join(uchunks)
-
-    # Rich comparison operators for equality only.  BAW: does it make sense to
-    # have or explicitly disable <, <=, >, >= operators?
-    def __eq__(self, other):
-        # other may be a Header or a string.  Both are fine so coerce
-        # ourselves to a string, swap the args and do another comparison.
-        return other == self.encode()
-
-    def __ne__(self, other):
-        return not self == other
-
-    def append(self, s, charset=None, errors='strict'):
-        """Append a string to the MIME header.
-
-        Optional charset, if given, should be a Charset instance or the name
-        of a character set (which will be converted to a Charset instance).  A
-        value of None (the default) means that the charset given in the
-        constructor is used.
-
-        s may be a byte string or a Unicode string.  If it is a byte string
-        (i.e. isinstance(s, str) is true), then charset is the encoding of
-        that byte string, and a UnicodeError will be raised if the string
-        cannot be decoded with that charset.  If s is a Unicode string, then
-        charset is a hint specifying the character set of the characters in
-        the string.  In this case, when producing an RFC 2822 compliant header
-        using RFC 2047 rules, the Unicode string will be encoded using the
-        following charsets in order: us-ascii, the charset hint, utf-8.  The
-        first character set not to provoke a UnicodeError is used.
-
-        Optional `errors' is passed as the third argument to any unicode() or
-        ustr.encode() call.
-        """
-        if charset is None:
-            charset = self._charset
-        elif not isinstance(charset, Charset):
-            charset = Charset(charset)
-        # If the charset is our faux 8bit charset, leave the string unchanged
-        if charset != '8bit':
-            # We need to test that the string can be converted to unicode and
-            # back to a byte string, given the input and output codecs of the
-            # charset.
-            if isinstance(s, str):
-                # Possibly raise UnicodeError if the byte string can't be
-                # converted to a unicode with the input codec of the charset.
-                incodec = charset.input_codec or 'us-ascii'
-                ustr = unicode(s, incodec, errors)
-                # Now make sure that the unicode could be converted back to a
-                # byte string with the output codec, which may be different
-                # than the iput coded.  Still, use the original byte string.
-                outcodec = charset.output_codec or 'us-ascii'
-                ustr.encode(outcodec, errors)
-            elif isinstance(s, unicode):
-                # Now we have to be sure the unicode string can be converted
-                # to a byte string with a reasonable output codec.  We want to
-                # use the byte string in the chunk.
-                for charset in USASCII, charset, UTF8:
-                    try:
-                        outcodec = charset.output_codec or 'us-ascii'
-                        s = s.encode(outcodec, errors)
-                        break
-                    except UnicodeError:
-                        pass
-                else:
-                    assert False, 'utf-8 conversion failed'
-        self._chunks.append((s, charset))
-
-    def _split(self, s, charset, maxlinelen, splitchars):
-        # Split up a header safely for use with encode_chunks.
-        splittable = charset.to_splittable(s)
-        encoded = charset.from_splittable(splittable, True)
-        elen = charset.encoded_header_len(encoded)
-        # If the line's encoded length first, just return it
-        if elen <= maxlinelen:
-            return [(encoded, charset)]
-        # If we have undetermined raw 8bit characters sitting in a byte
-        # string, we really don't know what the right thing to do is.  We
-        # can't really split it because it might be multibyte data which we
-        # could break if we split it between pairs.  The least harm seems to
-        # be to not split the header at all, but that means they could go out
-        # longer than maxlinelen.
-        if charset == '8bit':
-            return [(s, charset)]
-        # BAW: I'm not sure what the right test here is.  What we're trying to
-        # do is be faithful to RFC 2822's recommendation that ($2.2.3):
-        #
-        # "Note: Though structured field bodies are defined in such a way that
-        #  folding can take place between many of the lexical tokens (and even
-        #  within some of the lexical tokens), folding SHOULD be limited to
-        #  placing the CRLF at higher-level syntactic breaks."
-        #
-        # For now, I can only imagine doing this when the charset is us-ascii,
-        # although it's possible that other charsets may also benefit from the
-        # higher-level syntactic breaks.
-        elif charset == 'us-ascii':
-            return self._split_ascii(s, charset, maxlinelen, splitchars)
-        # BAW: should we use encoded?
-        elif elen == len(s):
-            # We can split on _maxlinelen boundaries because we know that the
-            # encoding won't change the size of the string
-            splitpnt = maxlinelen
-            first = charset.from_splittable(splittable[:splitpnt], False)
-            last = charset.from_splittable(splittable[splitpnt:], False)
-        else:
-            # Binary search for split point
-            first, last = _binsplit(splittable, charset, maxlinelen)
-        # first is of the proper length so just wrap it in the appropriate
-        # chrome.  last must be recursively split.
-        fsplittable = charset.to_splittable(first)
-        fencoded = charset.from_splittable(fsplittable, True)
-        chunk = [(fencoded, charset)]
-        return chunk + self._split(last, charset, self._maxlinelen, splitchars)
-
-    def _split_ascii(self, s, charset, firstlen, splitchars):
-        chunks = _split_ascii(s, firstlen, self._maxlinelen,
-                              self._continuation_ws, splitchars)
-        return zip(chunks, [charset]*len(chunks))
-
-    def _encode_chunks(self, newchunks, maxlinelen):
-        # MIME-encode a header with many different charsets and/or encodings.
-        #
-        # Given a list of pairs (string, charset), return a MIME-encoded
-        # string suitable for use in a header field.  Each pair may have
-        # different charsets and/or encodings, and the resulting header will
-        # accurately reflect each setting.
-        #
-        # Each encoding can be email.utils.QP (quoted-printable, for
-        # ASCII-like character sets like iso-8859-1), email.utils.BASE64
-        # (Base64, for non-ASCII like character sets like KOI8-R and
-        # iso-2022-jp), or None (no encoding).
-        #
-        # Each pair will be represented on a separate line; the resulting
-        # string will be in the format:
-        #
-        # =?charset1?q?Mar=EDa_Gonz=E1lez_Alonso?=\n
-        #  =?charset2?b?SvxyZ2VuIEL2aW5n?="
-        chunks = []
-        for header, charset in newchunks:
-            if not header:
-                continue
-            if charset is None or charset.header_encoding is None:
-                s = header
-            else:
-                s = charset.header_encode(header)
-            # Don't add more folding whitespace than necessary
-            if chunks and chunks[-1].endswith(' '):
-                extra = ''
-            else:
-                extra = ' '
-            _max_append(chunks, s, maxlinelen, extra)
-        joiner = NL + self._continuation_ws
-        return joiner.join(chunks)
-
-    def encode(self, splitchars=';, '):
-        """Encode a message header into an RFC-compliant format.
-
-        There are many issues involved in converting a given string for use in
-        an email header.  Only certain character sets are readable in most
-        email clients, and as header strings can only contain a subset of
-        7-bit ASCII, care must be taken to properly convert and encode (with
-        Base64 or quoted-printable) header strings.  In addition, there is a
-        75-character length limit on any given encoded header field, so
-        line-wrapping must be performed, even with double-byte character sets.
-
-        This method will do its best to convert the string to the correct
-        character set used in email, and encode and line wrap it safely with
-        the appropriate scheme for that character set.
-
-        If the given charset is not known or an error occurs during
-        conversion, this function will return the header untouched.
-
-        Optional splitchars is a string containing characters to split long
-        ASCII lines on, in rough support of RFC 2822's `highest level
-        syntactic breaks'.  This doesn't affect RFC 2047 encoded lines.
-        """
-        newchunks = []
-        maxlinelen = self._firstlinelen
-        lastlen = 0
-        for s, charset in self._chunks:
-            # The first bit of the next chunk should be just long enough to
-            # fill the next line.  Don't forget the space separating the
-            # encoded words.
-            targetlen = maxlinelen - lastlen - 1
-            if targetlen < charset.encoded_header_len(''):
-                # Stick it on the next line
-                targetlen = maxlinelen
-            newchunks += self._split(s, charset, targetlen, splitchars)
-            lastchunk, lastcharset = newchunks[-1]
-            lastlen = lastcharset.encoded_header_len(lastchunk)
-        value = self._encode_chunks(newchunks, maxlinelen)
-        if _embeded_header.search(value):
-            raise HeaderParseError("header value appears to contain "
-                "an embedded header: {!r}".format(value))
-        return value
-
-
-\f
-def _split_ascii(s, firstlen, restlen, continuation_ws, splitchars):
-    lines = []
-    maxlen = firstlen
-    for line in s.splitlines():
-        # Ignore any leading whitespace (i.e. continuation whitespace) already
-        # on the line, since we'll be adding our own.
-        line = line.lstrip()
-        if len(line) < maxlen:
-            lines.append(line)
-            maxlen = restlen
-            continue
-        # Attempt to split the line at the highest-level syntactic break
-        # possible.  Note that we don't have a lot of smarts about field
-        # syntax; we just try to break on semi-colons, then commas, then
-        # whitespace.
-        for ch in splitchars:
-            if ch in line:
-                break
-        else:
-            # There's nothing useful to split the line on, not even spaces, so
-            # just append this line unchanged
-            lines.append(line)
-            maxlen = restlen
-            continue
-        # Now split the line on the character plus trailing whitespace
-        cre = re.compile(r'%s\s*' % ch)
-        if ch in ';,':
-            eol = ch
-        else:
-            eol = ''
-        joiner = eol + ' '
-        joinlen = len(joiner)
-        wslen = len(continuation_ws.replace('\t', SPACE8))
-        this = []
-        linelen = 0
-        for part in cre.split(line):
-            curlen = linelen + max(0, len(this)-1) * joinlen
-            partlen = len(part)
-            onfirstline = not lines
-            # We don't want to split after the field name, if we're on the
-            # first line and the field name is present in the header string.
-            if ch == ' ' and onfirstline and \
-                   len(this) == 1 and fcre.match(this[0]):
-                this.append(part)
-                linelen += partlen
-            elif curlen + partlen > maxlen:
-                if this:
-                    lines.append(joiner.join(this) + eol)
-                # If this part is longer than maxlen and we aren't already
-                # splitting on whitespace, try to recursively split this line
-                # on whitespace.
-                if partlen > maxlen and ch != ' ':
-                    subl = _split_ascii(part, maxlen, restlen,
-                                        continuation_ws, ' ')
-                    lines.extend(subl[:-1])
-                    this = [subl[-1]]
-                else:
-                    this = [part]
-                linelen = wslen + len(this[-1])
-                maxlen = restlen
-            else:
-                this.append(part)
-                linelen += partlen
-        # Put any left over parts on a line by themselves
-        if this:
-            lines.append(joiner.join(this))
-    return lines
-
-
-\f
-def _binsplit(splittable, charset, maxlinelen):
-    i = 0
-    j = len(splittable)
-    while i < j:
-        # Invariants:
-        # 1. splittable[:k] fits for all k <= i (note that we *assume*,
-        #    at the start, that splittable[:0] fits).
-        # 2. splittable[:k] does not fit for any k > j (at the start,
-        #    this means we shouldn't look at any k > len(splittable)).
-        # 3. We don't know about splittable[:k] for k in i+1..j.
-        # 4. We want to set i to the largest k that fits, with i <= k <= j.
-        #
-        m = (i+j+1) >> 1  # ceiling((i+j)/2); i < m <= j
-        chunk = charset.from_splittable(splittable[:m], True)
-        chunklen = charset.encoded_header_len(chunk)
-        if chunklen <= maxlinelen:
-            # m is acceptable, so is a new lower bound.
-            i = m
-        else:
-            # m is not acceptable, so final i must be < m.
-            j = m - 1
-    # i == j.  Invariant #1 implies that splittable[:i] fits, and
-    # invariant #2 implies that splittable[:i+1] does not fit, so i
-    # is what we're looking for.
-    first = charset.from_splittable(splittable[:i], False)
-    last  = charset.from_splittable(splittable[i:], False)
-    return first, last
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/iterators.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/iterators.py
deleted file mode 100644
index f7081f7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/iterators.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# Author: Barry Warsaw
-# Contact: email-sig@python.org
-
-"""Various types of useful iterators and generators."""
-
-__all__ = [
-    'body_line_iterator',
-    'typed_subpart_iterator',
-    'walk',
-    # Do not include _structure() since it's part of the debugging API.
-    ]
-
-import sys
-from cStringIO import StringIO
-
-
-\f
-# This function will become a method of the Message class
-def walk(self):
-    """Walk over the message tree, yielding each subpart.
-
-    The walk is performed in depth-first order.  This method is a
-    generator.
-    """
-    yield self
-    if self.is_multipart():
-        for subpart in self.get_payload():
-            for subsubpart in subpart.walk():
-                yield subsubpart
-
-
-\f
-# These two functions are imported into the Iterators.py interface module.
-def body_line_iterator(msg, decode=False):
-    """Iterate over the parts, returning string payloads line-by-line.
-
-    Optional decode (default False) is passed through to .get_payload().
-    """
-    for subpart in msg.walk():
-        payload = subpart.get_payload(decode=decode)
-        if isinstance(payload, basestring):
-            for line in StringIO(payload):
-                yield line
-
-
-def typed_subpart_iterator(msg, maintype='text', subtype=None):
-    """Iterate over the subparts with a given MIME type.
-
-    Use `maintype' as the main MIME type to match against; this defaults to
-    "text".  Optional `subtype' is the MIME subtype to match against; if
-    omitted, only the main type is matched.
-    """
-    for subpart in msg.walk():
-        if subpart.get_content_maintype() == maintype:
-            if subtype is None or subpart.get_content_subtype() == subtype:
-                yield subpart
-
-
-\f
-def _structure(msg, fp=None, level=0, include_default=False):
-    """A handy debugging aid"""
-    if fp is None:
-        fp = sys.stdout
-    tab = ' ' * (level * 4)
-    print >> fp, tab + msg.get_content_type(),
-    if include_default:
-        print >> fp, '[%s]' % msg.get_default_type()
-    else:
-        print >> fp
-    if msg.is_multipart():
-        for subpart in msg.get_payload():
-            _structure(subpart, fp, level+1, include_default)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/message.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/message.py
deleted file mode 100644
index 7d19797..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/message.py
+++ /dev/null
@@ -1,797 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# Author: Barry Warsaw
-# Contact: email-sig@python.org
-
-"""Basic message object for the email package object model."""
-
-__all__ = ['Message']
-
-import re
-import uu
-import binascii
-import warnings
-from cStringIO import StringIO
-
-# Intrapackage imports
-import email.charset
-from email import utils
-from email import errors
-
-SEMISPACE = '; '
-
-# Regular expression that matches `special' characters in parameters, the
-# existence of which force quoting of the parameter value.
-tspecials = re.compile(r'[ \(\)<>@,;:\\"/\[\]\?=]')
-
-
-# Helper functions
-def _splitparam(param):
-    # Split header parameters.  BAW: this may be too simple.  It isn't
-    # strictly RFC 2045 (section 5.1) compliant, but it catches most headers
-    # found in the wild.  We may eventually need a full fledged parser
-    # eventually.
-    a, sep, b = param.partition(';')
-    if not sep:
-        return a.strip(), None
-    return a.strip(), b.strip()
-\f
-def _formatparam(param, value=None, quote=True):
-    """Convenience function to format and return a key=value pair.
-
-    This will quote the value if needed or if quote is true.  If value is a
-    three tuple (charset, language, value), it will be encoded according
-    to RFC2231 rules.
-    """
-    if value is not None and len(value) > 0:
-        # A tuple is used for RFC 2231 encoded parameter values where items
-        # are (charset, language, value).  charset is a string, not a Charset
-        # instance.
-        if isinstance(value, tuple):
-            # Encode as per RFC 2231
-            param += '*'
-            value = utils.encode_rfc2231(value[2], value[0], value[1])
-        # BAW: Please check this.  I think that if quote is set it should
-        # force quoting even if not necessary.
-        if quote or tspecials.search(value):
-            return '%s="%s"' % (param, utils.quote(value))
-        else:
-            return '%s=%s' % (param, value)
-    else:
-        return param
-
-def _parseparam(s):
-    plist = []
-    while s[:1] == ';':
-        s = s[1:]
-        end = s.find(';')
-        while end > 0 and (s.count('"', 0, end) - s.count('\\"', 0, end)) % 2:
-            end = s.find(';', end + 1)
-        if end < 0:
-            end = len(s)
-        f = s[:end]
-        if '=' in f:
-            i = f.index('=')
-            f = f[:i].strip().lower() + '=' + f[i+1:].strip()
-        plist.append(f.strip())
-        s = s[end:]
-    return plist
-
-
-def _unquotevalue(value):
-    # This is different than utils.collapse_rfc2231_value() because it doesn't
-    # try to convert the value to a unicode.  Message.get_param() and
-    # Message.get_params() are both currently defined to return the tuple in
-    # the face of RFC 2231 parameters.
-    if isinstance(value, tuple):
-        return value[0], value[1], utils.unquote(value[2])
-    else:
-        return utils.unquote(value)
-
-
-\f
-class Message:
-    """Basic message object.
-
-    A message object is defined as something that has a bunch of RFC 2822
-    headers and a payload.  It may optionally have an envelope header
-    (a.k.a. Unix-From or From_ header).  If the message is a container (i.e. a
-    multipart or a message/rfc822), then the payload is a list of Message
-    objects, otherwise it is a string.
-
-    Message objects implement part of the `mapping' interface, which assumes
-    there is exactly one occurrence of the header per message.  Some headers
-    do in fact appear multiple times (e.g. Received) and for those headers,
-    you must use the explicit API to set or get all the headers.  Not all of
-    the mapping methods are implemented.
-    """
-    def __init__(self):
-        self._headers = []
-        self._unixfrom = None
-        self._payload = None
-        self._charset = None
-        # Defaults for multipart messages
-        self.preamble = self.epilogue = None
-        self.defects = []
-        # Default content type
-        self._default_type = 'text/plain'
-
-    def __str__(self):
-        """Return the entire formatted message as a string.
-        This includes the headers, body, and envelope header.
-        """
-        return self.as_string(unixfrom=True)
-
-    def as_string(self, unixfrom=False):
-        """Return the entire formatted message as a string.
-        Optional `unixfrom' when True, means include the Unix From_ envelope
-        header.
-
-        This is a convenience method and may not generate the message exactly
-        as you intend because by default it mangles lines that begin with
-        "From ".  For more flexibility, use the flatten() method of a
-        Generator instance.
-        """
-        from email.generator import Generator
-        fp = StringIO()
-        g = Generator(fp)
-        g.flatten(self, unixfrom=unixfrom)
-        return fp.getvalue()
-
-    def is_multipart(self):
-        """Return True if the message consists of multiple parts."""
-        return isinstance(self._payload, list)
-
-    #
-    # Unix From_ line
-    #
-    def set_unixfrom(self, unixfrom):
-        self._unixfrom = unixfrom
-
-    def get_unixfrom(self):
-        return self._unixfrom
-
-    #
-    # Payload manipulation.
-    #
-    def attach(self, payload):
-        """Add the given payload to the current payload.
-
-        The current payload will always be a list of objects after this method
-        is called.  If you want to set the payload to a scalar object, use
-        set_payload() instead.
-        """
-        if self._payload is None:
-            self._payload = [payload]
-        else:
-            self._payload.append(payload)
-
-    def get_payload(self, i=None, decode=False):
-        """Return a reference to the payload.
-
-        The payload will either be a list object or a string.  If you mutate
-        the list object, you modify the message's payload in place.  Optional
-        i returns that index into the payload.
-
-        Optional decode is a flag indicating whether the payload should be
-        decoded or not, according to the Content-Transfer-Encoding header
-        (default is False).
-
-        When True and the message is not a multipart, the payload will be
-        decoded if this header's value is `quoted-printable' or `base64'.  If
-        some other encoding is used, or the header is missing, or if the
-        payload has bogus data (i.e. bogus base64 or uuencoded data), the
-        payload is returned as-is.
-
-        If the message is a multipart and the decode flag is True, then None
-        is returned.
-        """
-        if i is None:
-            payload = self._payload
-        elif not isinstance(self._payload, list):
-            raise TypeError('Expected list, got %s' % type(self._payload))
-        else:
-            payload = self._payload[i]
-        if decode:
-            if self.is_multipart():
-                return None
-            cte = self.get('content-transfer-encoding', '').lower()
-            if cte == 'quoted-printable':
-                return utils._qdecode(payload)
-            elif cte == 'base64':
-                try:
-                    return utils._bdecode(payload)
-                except binascii.Error:
-                    # Incorrect padding
-                    return payload
-            elif cte in ('x-uuencode', 'uuencode', 'uue', 'x-uue'):
-                sfp = StringIO()
-                try:
-                    uu.decode(StringIO(payload+'\n'), sfp, quiet=True)
-                    payload = sfp.getvalue()
-                except uu.Error:
-                    # Some decoding problem
-                    return payload
-        # Everything else, including encodings with 8bit or 7bit are returned
-        # unchanged.
-        return payload
-
-    def set_payload(self, payload, charset=None):
-        """Set the payload to the given value.
-
-        Optional charset sets the message's default character set.  See
-        set_charset() for details.
-        """
-        self._payload = payload
-        if charset is not None:
-            self.set_charset(charset)
-
-    def set_charset(self, charset):
-        """Set the charset of the payload to a given character set.
-
-        charset can be a Charset instance, a string naming a character set, or
-        None.  If it is a string it will be converted to a Charset instance.
-        If charset is None, the charset parameter will be removed from the
-        Content-Type field.  Anything else will generate a TypeError.
-
-        The message will be assumed to be of type text/* encoded with
-        charset.input_charset.  It will be converted to charset.output_charset
-        and encoded properly, if needed, when generating the plain text
-        representation of the message.  MIME headers (MIME-Version,
-        Content-Type, Content-Transfer-Encoding) will be added as needed.
-
-        """
-        if charset is None:
-            self.del_param('charset')
-            self._charset = None
-            return
-        if isinstance(charset, basestring):
-            charset = email.charset.Charset(charset)
-        if not isinstance(charset, email.charset.Charset):
-            raise TypeError(charset)
-        # BAW: should we accept strings that can serve as arguments to the
-        # Charset constructor?
-        self._charset = charset
-        if 'MIME-Version' not in self:
-            self.add_header('MIME-Version', '1.0')
-        if 'Content-Type' not in self:
-            self.add_header('Content-Type', 'text/plain',
-                            charset=charset.get_output_charset())
-        else:
-            self.set_param('charset', charset.get_output_charset())
-        if isinstance(self._payload, unicode):
-            self._payload = self._payload.encode(charset.output_charset)
-        if str(charset) != charset.get_output_charset():
-            self._payload = charset.body_encode(self._payload)
-        if 'Content-Transfer-Encoding' not in self:
-            cte = charset.get_body_encoding()
-            try:
-                cte(self)
-            except TypeError:
-                self._payload = charset.body_encode(self._payload)
-                self.add_header('Content-Transfer-Encoding', cte)
-
-    def get_charset(self):
-        """Return the Charset instance associated with the message's payload.
-        """
-        return self._charset
-
-    #
-    # MAPPING INTERFACE (partial)
-    #
-    def __len__(self):
-        """Return the total number of headers, including duplicates."""
-        return len(self._headers)
-
-    def __getitem__(self, name):
-        """Get a header value.
-
-        Return None if the header is missing instead of raising an exception.
-
-        Note that if the header appeared multiple times, exactly which
-        occurrence gets returned is undefined.  Use get_all() to get all
-        the values matching a header field name.
-        """
-        return self.get(name)
-
-    def __setitem__(self, name, val):
-        """Set the value of a header.
-
-        Note: this does not overwrite an existing header with the same field
-        name.  Use __delitem__() first to delete any existing headers.
-        """
-        self._headers.append((name, val))
-
-    def __delitem__(self, name):
-        """Delete all occurrences of a header, if present.
-
-        Does not raise an exception if the header is missing.
-        """
-        name = name.lower()
-        newheaders = []
-        for k, v in self._headers:
-            if k.lower() != name:
-                newheaders.append((k, v))
-        self._headers = newheaders
-
-    def __contains__(self, name):
-        return name.lower() in [k.lower() for k, v in self._headers]
-
-    def has_key(self, name):
-        """Return true if the message contains the header."""
-        missing = object()
-        return self.get(name, missing) is not missing
-
-    def keys(self):
-        """Return a list of all the message's header field names.
-
-        These will be sorted in the order they appeared in the original
-        message, or were added to the message, and may contain duplicates.
-        Any fields deleted and re-inserted are always appended to the header
-        list.
-        """
-        return [k for k, v in self._headers]
-
-    def values(self):
-        """Return a list of all the message's header values.
-
-        These will be sorted in the order they appeared in the original
-        message, or were added to the message, and may contain duplicates.
-        Any fields deleted and re-inserted are always appended to the header
-        list.
-        """
-        return [v for k, v in self._headers]
-
-    def items(self):
-        """Get all the message's header fields and values.
-
-        These will be sorted in the order they appeared in the original
-        message, or were added to the message, and may contain duplicates.
-        Any fields deleted and re-inserted are always appended to the header
-        list.
-        """
-        return self._headers[:]
-
-    def get(self, name, failobj=None):
-        """Get a header value.
-
-        Like __getitem__() but return failobj instead of None when the field
-        is missing.
-        """
-        name = name.lower()
-        for k, v in self._headers:
-            if k.lower() == name:
-                return v
-        return failobj
-
-    #
-    # Additional useful stuff
-    #
-
-    def get_all(self, name, failobj=None):
-        """Return a list of all the values for the named field.
-
-        These will be sorted in the order they appeared in the original
-        message, and may contain duplicates.  Any fields deleted and
-        re-inserted are always appended to the header list.
-
-        If no such fields exist, failobj is returned (defaults to None).
-        """
-        values = []
-        name = name.lower()
-        for k, v in self._headers:
-            if k.lower() == name:
-                values.append(v)
-        if not values:
-            return failobj
-        return values
-
-    def add_header(self, _name, _value, **_params):
-        """Extended header setting.
-
-        name is the header field to add.  keyword arguments can be used to set
-        additional parameters for the header field, with underscores converted
-        to dashes.  Normally the parameter will be added as key="value" unless
-        value is None, in which case only the key will be added.  If a
-        parameter value contains non-ASCII characters it must be specified as a
-        three-tuple of (charset, language, value), in which case it will be
-        encoded according to RFC2231 rules.
-
-        Example:
-
-        msg.add_header('content-disposition', 'attachment', filename='bud.gif')
-        """
-        parts = []
-        for k, v in _params.items():
-            if v is None:
-                parts.append(k.replace('_', '-'))
-            else:
-                parts.append(_formatparam(k.replace('_', '-'), v))
-        if _value is not None:
-            parts.insert(0, _value)
-        self._headers.append((_name, SEMISPACE.join(parts)))
-
-    def replace_header(self, _name, _value):
-        """Replace a header.
-
-        Replace the first matching header found in the message, retaining
-        header order and case.  If no matching header was found, a KeyError is
-        raised.
-        """
-        _name = _name.lower()
-        for i, (k, v) in zip(range(len(self._headers)), self._headers):
-            if k.lower() == _name:
-                self._headers[i] = (k, _value)
-                break
-        else:
-            raise KeyError(_name)
-
-    #
-    # Use these three methods instead of the three above.
-    #
-
-    def get_content_type(self):
-        """Return the message's content type.
-
-        The returned string is coerced to lower case of the form
-        `maintype/subtype'.  If there was no Content-Type header in the
-        message, the default type as given by get_default_type() will be
-        returned.  Since according to RFC 2045, messages always have a default
-        type this will always return a value.
-
-        RFC 2045 defines a message's default type to be text/plain unless it
-        appears inside a multipart/digest container, in which case it would be
-        message/rfc822.
-        """
-        missing = object()
-        value = self.get('content-type', missing)
-        if value is missing:
-            # This should have no parameters
-            return self.get_default_type()
-        ctype = _splitparam(value)[0].lower()
-        # RFC 2045, section 5.2 says if its invalid, use text/plain
-        if ctype.count('/') != 1:
-            return 'text/plain'
-        return ctype
-
-    def get_content_maintype(self):
-        """Return the message's main content type.
-
-        This is the `maintype' part of the string returned by
-        get_content_type().
-        """
-        ctype = self.get_content_type()
-        return ctype.split('/')[0]
-
-    def get_content_subtype(self):
-        """Returns the message's sub-content type.
-
-        This is the `subtype' part of the string returned by
-        get_content_type().
-        """
-        ctype = self.get_content_type()
-        return ctype.split('/')[1]
-
-    def get_default_type(self):
-        """Return the `default' content type.
-
-        Most messages have a default content type of text/plain, except for
-        messages that are subparts of multipart/digest containers.  Such
-        subparts have a default content type of message/rfc822.
-        """
-        return self._default_type
-
-    def set_default_type(self, ctype):
-        """Set the `default' content type.
-
-        ctype should be either "text/plain" or "message/rfc822", although this
-        is not enforced.  The default content type is not stored in the
-        Content-Type header.
-        """
-        self._default_type = ctype
-
-    def _get_params_preserve(self, failobj, header):
-        # Like get_params() but preserves the quoting of values.  BAW:
-        # should this be part of the public interface?
-        missing = object()
-        value = self.get(header, missing)
-        if value is missing:
-            return failobj
-        params = []
-        for p in _parseparam(';' + value):
-            try:
-                name, val = p.split('=', 1)
-                name = name.strip()
-                val = val.strip()
-            except ValueError:
-                # Must have been a bare attribute
-                name = p.strip()
-                val = ''
-            params.append((name, val))
-        params = utils.decode_params(params)
-        return params
-
-    def get_params(self, failobj=None, header='content-type', unquote=True):
-        """Return the message's Content-Type parameters, as a list.
-
-        The elements of the returned list are 2-tuples of key/value pairs, as
-        split on the `=' sign.  The left hand side of the `=' is the key,
-        while the right hand side is the value.  If there is no `=' sign in
-        the parameter the value is the empty string.  The value is as
-        described in the get_param() method.
-
-        Optional failobj is the object to return if there is no Content-Type
-        header.  Optional header is the header to search instead of
-        Content-Type.  If unquote is True, the value is unquoted.
-        """
-        missing = object()
-        params = self._get_params_preserve(missing, header)
-        if params is missing:
-            return failobj
-        if unquote:
-            return [(k, _unquotevalue(v)) for k, v in params]
-        else:
-            return params
-
-    def get_param(self, param, failobj=None, header='content-type',
-                  unquote=True):
-        """Return the parameter value if found in the Content-Type header.
-
-        Optional failobj is the object to return if there is no Content-Type
-        header, or the Content-Type header has no such parameter.  Optional
-        header is the header to search instead of Content-Type.
-
-        Parameter keys are always compared case insensitively.  The return
-        value can either be a string, or a 3-tuple if the parameter was RFC
-        2231 encoded.  When it's a 3-tuple, the elements of the value are of
-        the form (CHARSET, LANGUAGE, VALUE).  Note that both CHARSET and
-        LANGUAGE can be None, in which case you should consider VALUE to be
-        encoded in the us-ascii charset.  You can usually ignore LANGUAGE.
-
-        Your application should be prepared to deal with 3-tuple return
-        values, and can convert the parameter to a Unicode string like so:
-
-            param = msg.get_param('foo')
-            if isinstance(param, tuple):
-                param = unicode(param[2], param[0] or 'us-ascii')
-
-        In any case, the parameter value (either the returned string, or the
-        VALUE item in the 3-tuple) is always unquoted, unless unquote is set
-        to False.
-        """
-        if header not in self:
-            return failobj
-        for k, v in self._get_params_preserve(failobj, header):
-            if k.lower() == param.lower():
-                if unquote:
-                    return _unquotevalue(v)
-                else:
-                    return v
-        return failobj
-
-    def set_param(self, param, value, header='Content-Type', requote=True,
-                  charset=None, language=''):
-        """Set a parameter in the Content-Type header.
-
-        If the parameter already exists in the header, its value will be
-        replaced with the new value.
-
-        If header is Content-Type and has not yet been defined for this
-        message, it will be set to "text/plain" and the new parameter and
-        value will be appended as per RFC 2045.
-
-        An alternate header can specified in the header argument, and all
-        parameters will be quoted as necessary unless requote is False.
-
-        If charset is specified, the parameter will be encoded according to RFC
-        2231.  Optional language specifies the RFC 2231 language, defaulting
-        to the empty string.  Both charset and language should be strings.
-        """
-        if not isinstance(value, tuple) and charset:
-            value = (charset, language, value)
-
-        if header not in self and header.lower() == 'content-type':
-            ctype = 'text/plain'
-        else:
-            ctype = self.get(header)
-        if not self.get_param(param, header=header):
-            if not ctype:
-                ctype = _formatparam(param, value, requote)
-            else:
-                ctype = SEMISPACE.join(
-                    [ctype, _formatparam(param, value, requote)])
-        else:
-            ctype = ''
-            for old_param, old_value in self.get_params(header=header,
-                                                        unquote=requote):
-                append_param = ''
-                if old_param.lower() == param.lower():
-                    append_param = _formatparam(param, value, requote)
-                else:
-                    append_param = _formatparam(old_param, old_value, requote)
-                if not ctype:
-                    ctype = append_param
-                else:
-                    ctype = SEMISPACE.join([ctype, append_param])
-        if ctype != self.get(header):
-            del self[header]
-            self[header] = ctype
-
-    def del_param(self, param, header='content-type', requote=True):
-        """Remove the given parameter completely from the Content-Type header.
-
-        The header will be re-written in place without the parameter or its
-        value. All values will be quoted as necessary unless requote is
-        False.  Optional header specifies an alternative to the Content-Type
-        header.
-        """
-        if header not in self:
-            return
-        new_ctype = ''
-        for p, v in self.get_params(header=header, unquote=requote):
-            if p.lower() != param.lower():
-                if not new_ctype:
-                    new_ctype = _formatparam(p, v, requote)
-                else:
-                    new_ctype = SEMISPACE.join([new_ctype,
-                                                _formatparam(p, v, requote)])
-        if new_ctype != self.get(header):
-            del self[header]
-            self[header] = new_ctype
-
-    def set_type(self, type, header='Content-Type', requote=True):
-        """Set the main type and subtype for the Content-Type header.
-
-        type must be a string in the form "maintype/subtype", otherwise a
-        ValueError is raised.
-
-        This method replaces the Content-Type header, keeping all the
-        parameters in place.  If requote is False, this leaves the existing
-        header's quoting as is.  Otherwise, the parameters will be quoted (the
-        default).
-
-        An alternative header can be specified in the header argument.  When
-        the Content-Type header is set, we'll always also add a MIME-Version
-        header.
-        """
-        # BAW: should we be strict?
-        if not type.count('/') == 1:
-            raise ValueError
-        # Set the Content-Type, you get a MIME-Version
-        if header.lower() == 'content-type':
-            del self['mime-version']
-            self['MIME-Version'] = '1.0'
-        if header not in self:
-            self[header] = type
-            return
-        params = self.get_params(header=header, unquote=requote)
-        del self[header]
-        self[header] = type
-        # Skip the first param; it's the old type.
-        for p, v in params[1:]:
-            self.set_param(p, v, header, requote)
-
-    def get_filename(self, failobj=None):
-        """Return the filename associated with the payload if present.
-
-        The filename is extracted from the Content-Disposition header's
-        `filename' parameter, and it is unquoted.  If that header is missing
-        the `filename' parameter, this method falls back to looking for the
-        `name' parameter.
-        """
-        missing = object()
-        filename = self.get_param('filename', missing, 'content-disposition')
-        if filename is missing:
-            filename = self.get_param('name', missing, 'content-type')
-        if filename is missing:
-            return failobj
-        return utils.collapse_rfc2231_value(filename).strip()
-
-    def get_boundary(self, failobj=None):
-        """Return the boundary associated with the payload if present.
-
-        The boundary is extracted from the Content-Type header's `boundary'
-        parameter, and it is unquoted.
-        """
-        missing = object()
-        boundary = self.get_param('boundary', missing)
-        if boundary is missing:
-            return failobj
-        # RFC 2046 says that boundaries may begin but not end in w/s
-        return utils.collapse_rfc2231_value(boundary).rstrip()
-
-    def set_boundary(self, boundary):
-        """Set the boundary parameter in Content-Type to 'boundary'.
-
-        This is subtly different than deleting the Content-Type header and
-        adding a new one with a new boundary parameter via add_header().  The
-        main difference is that using the set_boundary() method preserves the
-        order of the Content-Type header in the original message.
-
-        HeaderParseError is raised if the message has no Content-Type header.
-        """
-        missing = object()
-        params = self._get_params_preserve(missing, 'content-type')
-        if params is missing:
-            # There was no Content-Type header, and we don't know what type
-            # to set it to, so raise an exception.
-            raise errors.HeaderParseError('No Content-Type header found')
-        newparams = []
-        foundp = False
-        for pk, pv in params:
-            if pk.lower() == 'boundary':
-                newparams.append(('boundary', '"%s"' % boundary))
-                foundp = True
-            else:
-                newparams.append((pk, pv))
-        if not foundp:
-            # The original Content-Type header had no boundary attribute.
-            # Tack one on the end.  BAW: should we raise an exception
-            # instead???
-            newparams.append(('boundary', '"%s"' % boundary))
-        # Replace the existing Content-Type header with the new value
-        newheaders = []
-        for h, v in self._headers:
-            if h.lower() == 'content-type':
-                parts = []
-                for k, v in newparams:
-                    if v == '':
-                        parts.append(k)
-                    else:
-                        parts.append('%s=%s' % (k, v))
-                newheaders.append((h, SEMISPACE.join(parts)))
-
-            else:
-                newheaders.append((h, v))
-        self._headers = newheaders
-
-    def get_content_charset(self, failobj=None):
-        """Return the charset parameter of the Content-Type header.
-
-        The returned string is always coerced to lower case.  If there is no
-        Content-Type header, or if that header has no charset parameter,
-        failobj is returned.
-        """
-        missing = object()
-        charset = self.get_param('charset', missing)
-        if charset is missing:
-            return failobj
-        if isinstance(charset, tuple):
-            # RFC 2231 encoded, so decode it, and it better end up as ascii.
-            pcharset = charset[0] or 'us-ascii'
-            try:
-                # LookupError will be raised if the charset isn't known to
-                # Python.  UnicodeError will be raised if the encoded text
-                # contains a character not in the charset.
-                charset = unicode(charset[2], pcharset).encode('us-ascii')
-            except (LookupError, UnicodeError):
-                charset = charset[2]
-        # charset character must be in us-ascii range
-        try:
-            if isinstance(charset, str):
-                charset = unicode(charset, 'us-ascii')
-            charset = charset.encode('us-ascii')
-        except UnicodeError:
-            return failobj
-        # RFC 2046, $4.1.2 says charsets are not case sensitive
-        return charset.lower()
-
-    def get_charsets(self, failobj=None):
-        """Return a list containing the charset(s) used in this message.
-
-        The returned list of items describes the Content-Type headers'
-        charset parameter for this message and all the subparts in its
-        payload.
-
-        Each item will either be a string (the value of the charset parameter
-        in the Content-Type header of that part) or the value of the
-        'failobj' parameter (defaults to None), if the part does not have a
-        main MIME type of "text", or the charset is not defined.
-
-        The list will contain one string for each part of the message, plus
-        one for the container message (i.e. self), so that a non-multipart
-        message will still return a list of length 1.
-        """
-        return [part.get_content_charset(failobj) for part in self.walk()]
-
-    # I.e. def walk(self): ...
-    from email.iterators import walk
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/application.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/application.py
deleted file mode 100644
index f3df05c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/application.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# Author: Keith Dart
-# Contact: email-sig@python.org
-
-"""Class representing application/* type MIME documents."""
-
-__all__ = ["MIMEApplication"]
-
-from email import encoders
-from email.mime.nonmultipart import MIMENonMultipart
-
-
-class MIMEApplication(MIMENonMultipart):
-    """Class for generating application/* MIME documents."""
-
-    def __init__(self, _data, _subtype='octet-stream',
-                 _encoder=encoders.encode_base64, **_params):
-        """Create an application/* type MIME document.
-
-        _data is a string containing the raw application data.
-
-        _subtype is the MIME content type subtype, defaulting to
-        'octet-stream'.
-
-        _encoder is a function which will perform the actual encoding for
-        transport of the application data, defaulting to base64 encoding.
-
-        Any additional keyword arguments are passed to the base class
-        constructor, which turns them into parameters on the Content-Type
-        header.
-        """
-        if _subtype is None:
-            raise TypeError('Invalid application MIME subtype')
-        MIMENonMultipart.__init__(self, 'application', _subtype, **_params)
-        self.set_payload(_data)
-        _encoder(self)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/audio.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/audio.py
deleted file mode 100644
index eb628f4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/audio.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# Author: Anthony Baxter
-# Contact: email-sig@python.org
-
-"""Class representing audio/* type MIME documents."""
-
-__all__ = ['MIMEAudio']
-
-import sndhdr
-
-from cStringIO import StringIO
-from email import encoders
-from email.mime.nonmultipart import MIMENonMultipart
-
-
-\f
-_sndhdr_MIMEmap = {'au'  : 'basic',
-                   'wav' :'x-wav',
-                   'aiff':'x-aiff',
-                   'aifc':'x-aiff',
-                   }
-
-# There are others in sndhdr that don't have MIME types. :(
-# Additional ones to be added to sndhdr? midi, mp3, realaudio, wma??
-def _whatsnd(data):
-    """Try to identify a sound file type.
-
-    sndhdr.what() has a pretty cruddy interface, unfortunately.  This is why
-    we re-do it here.  It would be easier to reverse engineer the Unix 'file'
-    command and use the standard 'magic' file, as shipped with a modern Unix.
-    """
-    hdr = data[:512]
-    fakefile = StringIO(hdr)
-    for testfn in sndhdr.tests:
-        res = testfn(hdr, fakefile)
-        if res is not None:
-            return _sndhdr_MIMEmap.get(res[0])
-    return None
-
-
-\f
-class MIMEAudio(MIMENonMultipart):
-    """Class for generating audio/* MIME documents."""
-
-    def __init__(self, _audiodata, _subtype=None,
-                 _encoder=encoders.encode_base64, **_params):
-        """Create an audio/* type MIME document.
-
-        _audiodata is a string containing the raw audio data.  If this data
-        can be decoded by the standard Python `sndhdr' module, then the
-        subtype will be automatically included in the Content-Type header.
-        Otherwise, you can specify  the specific audio subtype via the
-        _subtype parameter.  If _subtype is not given, and no subtype can be
-        guessed, a TypeError is raised.
-
-        _encoder is a function which will perform the actual encoding for
-        transport of the image data.  It takes one argument, which is this
-        Image instance.  It should use get_payload() and set_payload() to
-        change the payload to the encoded form.  It should also add any
-        Content-Transfer-Encoding or other headers to the message as
-        necessary.  The default encoding is Base64.
-
-        Any additional keyword arguments are passed to the base class
-        constructor, which turns them into parameters on the Content-Type
-        header.
-        """
-        if _subtype is None:
-            _subtype = _whatsnd(_audiodata)
-        if _subtype is None:
-            raise TypeError('Could not find audio MIME subtype')
-        MIMENonMultipart.__init__(self, 'audio', _subtype, **_params)
-        self.set_payload(_audiodata)
-        _encoder(self)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/base.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/base.py
deleted file mode 100644
index 74840ce..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/base.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# Author: Barry Warsaw
-# Contact: email-sig@python.org
-
-"""Base class for MIME specializations."""
-
-__all__ = ['MIMEBase']
-
-from email import message
-
-
-\f
-class MIMEBase(message.Message):
-    """Base class for MIME specializations."""
-
-    def __init__(self, _maintype, _subtype, **_params):
-        """This constructor adds a Content-Type: and a MIME-Version: header.
-
-        The Content-Type: header is taken from the _maintype and _subtype
-        arguments.  Additional parameters for this header are taken from the
-        keyword arguments.
-        """
-        message.Message.__init__(self)
-        ctype = '%s/%s' % (_maintype, _subtype)
-        self.add_header('Content-Type', ctype, **_params)
-        self['MIME-Version'] = '1.0'
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/image.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/image.py
deleted file mode 100644
index 2b10d6c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/image.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# Author: Barry Warsaw
-# Contact: email-sig@python.org
-
-"""Class representing image/* type MIME documents."""
-
-__all__ = ['MIMEImage']
-
-import imghdr
-
-from email import encoders
-from email.mime.nonmultipart import MIMENonMultipart
-
-
-\f
-class MIMEImage(MIMENonMultipart):
-    """Class for generating image/* type MIME documents."""
-
-    def __init__(self, _imagedata, _subtype=None,
-                 _encoder=encoders.encode_base64, **_params):
-        """Create an image/* type MIME document.
-
-        _imagedata is a string containing the raw image data.  If this data
-        can be decoded by the standard Python `imghdr' module, then the
-        subtype will be automatically included in the Content-Type header.
-        Otherwise, you can specify the specific image subtype via the _subtype
-        parameter.
-
-        _encoder is a function which will perform the actual encoding for
-        transport of the image data.  It takes one argument, which is this
-        Image instance.  It should use get_payload() and set_payload() to
-        change the payload to the encoded form.  It should also add any
-        Content-Transfer-Encoding or other headers to the message as
-        necessary.  The default encoding is Base64.
-
-        Any additional keyword arguments are passed to the base class
-        constructor, which turns them into parameters on the Content-Type
-        header.
-        """
-        if _subtype is None:
-            _subtype = imghdr.what(None, _imagedata)
-        if _subtype is None:
-            raise TypeError('Could not guess image MIME subtype')
-        MIMENonMultipart.__init__(self, 'image', _subtype, **_params)
-        self.set_payload(_imagedata)
-        _encoder(self)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/message.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/message.py
deleted file mode 100644
index 72ad277..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/message.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# Author: Barry Warsaw
-# Contact: email-sig@python.org
-
-"""Class representing message/* MIME documents."""
-
-__all__ = ['MIMEMessage']
-
-from email import message
-from email.mime.nonmultipart import MIMENonMultipart
-
-
-\f
-class MIMEMessage(MIMENonMultipart):
-    """Class representing message/* MIME documents."""
-
-    def __init__(self, _msg, _subtype='rfc822'):
-        """Create a message/* type MIME document.
-
-        _msg is a message object and must be an instance of Message, or a
-        derived class of Message, otherwise a TypeError is raised.
-
-        Optional _subtype defines the subtype of the contained message.  The
-        default is "rfc822" (this is defined by the MIME standard, even though
-        the term "rfc822" is technically outdated by RFC 2822).
-        """
-        MIMENonMultipart.__init__(self, 'message', _subtype)
-        if not isinstance(_msg, message.Message):
-            raise TypeError('Argument is not an instance of Message')
-        # It's convenient to use this base class method.  We need to do it
-        # this way or we'll get an exception
-        message.Message.attach(self, _msg)
-        # And be sure our default type is set correctly
-        self.set_default_type('message/rfc822')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/multipart.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/multipart.py
deleted file mode 100644
index 83c0b75..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/multipart.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (C) 2002-2006 Python Software Foundation
-# Author: Barry Warsaw
-# Contact: email-sig@python.org
-
-"""Base class for MIME multipart/* type messages."""
-
-__all__ = ['MIMEMultipart']
-
-from email.mime.base import MIMEBase
-
-
-\f
-class MIMEMultipart(MIMEBase):
-    """Base class for MIME multipart/* type messages."""
-
-    def __init__(self, _subtype='mixed', boundary=None, _subparts=None,
-                 **_params):
-        """Creates a multipart/* type message.
-
-        By default, creates a multipart/mixed message, with proper
-        Content-Type and MIME-Version headers.
-
-        _subtype is the subtype of the multipart content type, defaulting to
-        `mixed'.
-
-        boundary is the multipart boundary string.  By default it is
-        calculated as needed.
-
-        _subparts is a sequence of initial subparts for the payload.  It
-        must be an iterable object, such as a list.  You can always
-        attach new subparts to the message by using the attach() method.
-
-        Additional parameters for the Content-Type header are taken from the
-        keyword arguments (or passed into the _params argument).
-        """
-        MIMEBase.__init__(self, 'multipart', _subtype, **_params)
-
-        # Initialise _payload to an empty list as the Message superclass's
-        # implementation of is_multipart assumes that _payload is a list for
-        # multipart messages.
-        self._payload = []
-
-        if _subparts:
-            for p in _subparts:
-                self.attach(p)
-        if boundary:
-            self.set_boundary(boundary)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/nonmultipart.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/nonmultipart.py
deleted file mode 100644
index f6f857e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/nonmultipart.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright (C) 2002-2006 Python Software Foundation
-# Author: Barry Warsaw
-# Contact: email-sig@python.org
-
-"""Base class for MIME type messages that are not multipart."""
-
-__all__ = ['MIMENonMultipart']
-
-from email import errors
-from email.mime.base import MIMEBase
-
-
-\f
-class MIMENonMultipart(MIMEBase):
-    """Base class for MIME multipart/* type messages."""
-
-    def attach(self, payload):
-        # The public API prohibits attaching multiple subparts to MIMEBase
-        # derived subtypes since none of them are, by definition, of content
-        # type multipart/*
-        raise errors.MultipartConversionError(
-            'Cannot attach additional subparts to non-multipart/*')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/text.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/text.py
deleted file mode 100644
index 3a4764e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/mime/text.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# Author: Barry Warsaw
-# Contact: email-sig@python.org
-
-"""Class representing text/* type MIME documents."""
-
-__all__ = ['MIMEText']
-
-from email.encoders import encode_7or8bit
-from email.mime.nonmultipart import MIMENonMultipart
-
-
-\f
-class MIMEText(MIMENonMultipart):
-    """Class for generating text/* type MIME documents."""
-
-    def __init__(self, _text, _subtype='plain', _charset='us-ascii'):
-        """Create a text/* type MIME document.
-
-        _text is the string for this message object.
-
-        _subtype is the MIME sub content type, defaulting to "plain".
-
-        _charset is the character set parameter added to the Content-Type
-        header.  This defaults to "us-ascii".  Note that as a side-effect, the
-        Content-Transfer-Encoding header will also be set.
-        """
-        MIMENonMultipart.__init__(self, 'text', _subtype,
-                                  **{'charset': _charset})
-        self.set_payload(_text, _charset)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/parser.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/parser.py
deleted file mode 100644
index f3e84ea..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/parser.py
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# Author: Barry Warsaw, Thomas Wouters, Anthony Baxter
-# Contact: email-sig@python.org
-
-"""A parser of RFC 2822 and MIME email messages."""
-
-__all__ = ['Parser', 'HeaderParser']
-
-import warnings
-from cStringIO import StringIO
-
-from email.feedparser import FeedParser
-from email.message import Message
-
-
-\f
-class Parser:
-    def __init__(self, *args, **kws):
-        """Parser of RFC 2822 and MIME email messages.
-
-        Creates an in-memory object tree representing the email message, which
-        can then be manipulated and turned over to a Generator to return the
-        textual representation of the message.
-
-        The string must be formatted as a block of RFC 2822 headers and header
-        continuation lines, optionally preceeded by a `Unix-from' header.  The
-        header block is terminated either by the end of the string or by a
-        blank line.
-
-        _class is the class to instantiate for new message objects when they
-        must be created.  This class must have a constructor that can take
-        zero arguments.  Default is Message.Message.
-        """
-        if len(args) >= 1:
-            if '_class' in kws:
-                raise TypeError("Multiple values for keyword arg '_class'")
-            kws['_class'] = args[0]
-        if len(args) == 2:
-            if 'strict' in kws:
-                raise TypeError("Multiple values for keyword arg 'strict'")
-            kws['strict'] = args[1]
-        if len(args) > 2:
-            raise TypeError('Too many arguments')
-        if '_class' in kws:
-            self._class = kws['_class']
-            del kws['_class']
-        else:
-            self._class = Message
-        if 'strict' in kws:
-            warnings.warn("'strict' argument is deprecated (and ignored)",
-                          DeprecationWarning, 2)
-            del kws['strict']
-        if kws:
-            raise TypeError('Unexpected keyword arguments')
-
-    def parse(self, fp, headersonly=False):
-        """Create a message structure from the data in a file.
-
-        Reads all the data from the file and returns the root of the message
-        structure.  Optional headersonly is a flag specifying whether to stop
-        parsing after reading the headers or not.  The default is False,
-        meaning it parses the entire contents of the file.
-        """
-        feedparser = FeedParser(self._class)
-        if headersonly:
-            feedparser._set_headersonly()
-        while True:
-            data = fp.read(8192)
-            if not data:
-                break
-            feedparser.feed(data)
-        return feedparser.close()
-
-    def parsestr(self, text, headersonly=False):
-        """Create a message structure from a string.
-
-        Returns the root of the message structure.  Optional headersonly is a
-        flag specifying whether to stop parsing after reading the headers or
-        not.  The default is False, meaning it parses the entire contents of
-        the file.
-        """
-        return self.parse(StringIO(text), headersonly=headersonly)
-
-
-\f
-class HeaderParser(Parser):
-    def parse(self, fp, headersonly=True):
-        return Parser.parse(self, fp, True)
-
-    def parsestr(self, text, headersonly=True):
-        return Parser.parsestr(self, text, True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/quoprimime.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/quoprimime.py
deleted file mode 100644
index 82fa37a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/quoprimime.py
+++ /dev/null
@@ -1,336 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# Author: Ben Gertzfield
-# Contact: email-sig@python.org
-
-"""Quoted-printable content transfer encoding per RFCs 2045-2047.
-
-This module handles the content transfer encoding method defined in RFC 2045
-to encode US ASCII-like 8-bit data called `quoted-printable'.  It is used to
-safely encode text that is in a character set similar to the 7-bit US ASCII
-character set, but that includes some 8-bit characters that are normally not
-allowed in email bodies or headers.
-
-Quoted-printable is very space-inefficient for encoding binary files; use the
-email.base64mime module for that instead.
-
-This module provides an interface to encode and decode both headers and bodies
-with quoted-printable encoding.
-
-RFC 2045 defines a method for including character set information in an
-`encoded-word' in a header.  This method is commonly used for 8-bit real names
-in To:/From:/Cc: etc. fields, as well as Subject: lines.
-
-This module does not do the line wrapping or end-of-line character
-conversion necessary for proper internationalized headers; it only
-does dumb encoding and decoding.  To deal with the various line
-wrapping issues, use the email.header module.
-"""
-
-__all__ = [
-    'body_decode',
-    'body_encode',
-    'body_quopri_check',
-    'body_quopri_len',
-    'decode',
-    'decodestring',
-    'encode',
-    'encodestring',
-    'header_decode',
-    'header_encode',
-    'header_quopri_check',
-    'header_quopri_len',
-    'quote',
-    'unquote',
-    ]
-
-import re
-
-from string import hexdigits
-from email.utils import fix_eols
-
-CRLF = '\r\n'
-NL = '\n'
-
-# See also Charset.py
-MISC_LEN = 7
-
-hqre = re.compile(r'[^-a-zA-Z0-9!*+/ ]')
-bqre = re.compile(r'[^ !-<>-~\t]')
-
-
-\f
-# Helpers
-def header_quopri_check(c):
-    """Return True if the character should be escaped with header quopri."""
-    return bool(hqre.match(c))
-
-
-def body_quopri_check(c):
-    """Return True if the character should be escaped with body quopri."""
-    return bool(bqre.match(c))
-
-
-def header_quopri_len(s):
-    """Return the length of str when it is encoded with header quopri."""
-    count = 0
-    for c in s:
-        if hqre.match(c):
-            count += 3
-        else:
-            count += 1
-    return count
-
-
-def body_quopri_len(str):
-    """Return the length of str when it is encoded with body quopri."""
-    count = 0
-    for c in str:
-        if bqre.match(c):
-            count += 3
-        else:
-            count += 1
-    return count
-
-
-def _max_append(L, s, maxlen, extra=''):
-    if not L:
-        L.append(s.lstrip())
-    elif len(L[-1]) + len(s) <= maxlen:
-        L[-1] += extra + s
-    else:
-        L.append(s.lstrip())
-
-
-def unquote(s):
-    """Turn a string in the form =AB to the ASCII character with value 0xab"""
-    return chr(int(s[1:3], 16))
-
-
-def quote(c):
-    return "=%02X" % ord(c)
-
-
-\f
-def header_encode(header, charset="iso-8859-1", keep_eols=False,
-                  maxlinelen=76, eol=NL):
-    """Encode a single header line with quoted-printable (like) encoding.
-
-    Defined in RFC 2045, this `Q' encoding is similar to quoted-printable, but
-    used specifically for email header fields to allow charsets with mostly 7
-    bit characters (and some 8 bit) to remain more or less readable in non-RFC
-    2045 aware mail clients.
-
-    charset names the character set to use to encode the header.  It defaults
-    to iso-8859-1.
-
-    The resulting string will be in the form:
-
-    "=?charset?q?I_f=E2rt_in_your_g=E8n=E8ral_dire=E7tion?\\n
-      =?charset?q?Silly_=C8nglish_Kn=EEghts?="
-
-    with each line wrapped safely at, at most, maxlinelen characters (defaults
-    to 76 characters).  If maxlinelen is None, the entire string is encoded in
-    one chunk with no splitting.
-
-    End-of-line characters (\\r, \\n, \\r\\n) will be automatically converted
-    to the canonical email line separator \\r\\n unless the keep_eols
-    parameter is True (the default is False).
-
-    Each line of the header will be terminated in the value of eol, which
-    defaults to "\\n".  Set this to "\\r\\n" if you are using the result of
-    this function directly in email.
-    """
-    # Return empty headers unchanged
-    if not header:
-        return header
-
-    if not keep_eols:
-        header = fix_eols(header)
-
-    # Quopri encode each line, in encoded chunks no greater than maxlinelen in
-    # length, after the RFC chrome is added in.
-    quoted = []
-    if maxlinelen is None:
-        # An obnoxiously large number that's good enough
-        max_encoded = 100000
-    else:
-        max_encoded = maxlinelen - len(charset) - MISC_LEN - 1
-
-    for c in header:
-        # Space may be represented as _ instead of =20 for readability
-        if c == ' ':
-            _max_append(quoted, '_', max_encoded)
-        # These characters can be included verbatim
-        elif not hqre.match(c):
-            _max_append(quoted, c, max_encoded)
-        # Otherwise, replace with hex value like =E2
-        else:
-            _max_append(quoted, "=%02X" % ord(c), max_encoded)
-
-    # Now add the RFC chrome to each encoded chunk and glue the chunks
-    # together.  BAW: should we be able to specify the leading whitespace in
-    # the joiner?
-    joiner = eol + ' '
-    return joiner.join(['=?%s?q?%s?=' % (charset, line) for line in quoted])
-
-
-\f
-def encode(body, binary=False, maxlinelen=76, eol=NL):
-    """Encode with quoted-printable, wrapping at maxlinelen characters.
-
-    If binary is False (the default), end-of-line characters will be converted
-    to the canonical email end-of-line sequence \\r\\n.  Otherwise they will
-    be left verbatim.
-
-    Each line of encoded text will end with eol, which defaults to "\\n".  Set
-    this to "\\r\\n" if you will be using the result of this function directly
-    in an email.
-
-    Each line will be wrapped at, at most, maxlinelen characters (defaults to
-    76 characters).  Long lines will have the `soft linefeed' quoted-printable
-    character "=" appended to them, so the decoded text will be identical to
-    the original text.
-    """
-    if not body:
-        return body
-
-    if not binary:
-        body = fix_eols(body)
-
-    # BAW: We're accumulating the body text by string concatenation.  That
-    # can't be very efficient, but I don't have time now to rewrite it.  It
-    # just feels like this algorithm could be more efficient.
-    encoded_body = ''
-    lineno = -1
-    # Preserve line endings here so we can check later to see an eol needs to
-    # be added to the output later.
-    lines = body.splitlines(1)
-    for line in lines:
-        # But strip off line-endings for processing this line.
-        if line.endswith(CRLF):
-            line = line[:-2]
-        elif line[-1] in CRLF:
-            line = line[:-1]
-
-        lineno += 1
-        encoded_line = ''
-        prev = None
-        linelen = len(line)
-        # Now we need to examine every character to see if it needs to be
-        # quopri encoded.  BAW: again, string concatenation is inefficient.
-        for j in range(linelen):
-            c = line[j]
-            prev = c
-            if bqre.match(c):
-                c = quote(c)
-            elif j+1 == linelen:
-                # Check for whitespace at end of line; special case
-                if c not in ' \t':
-                    encoded_line += c
-                prev = c
-                continue
-            # Check to see to see if the line has reached its maximum length
-            if len(encoded_line) + len(c) >= maxlinelen:
-                encoded_body += encoded_line + '=' + eol
-                encoded_line = ''
-            encoded_line += c
-        # Now at end of line..
-        if prev and prev in ' \t':
-            # Special case for whitespace at end of file
-            if lineno + 1 == len(lines):
-                prev = quote(prev)
-                if len(encoded_line) + len(prev) > maxlinelen:
-                    encoded_body += encoded_line + '=' + eol + prev
-                else:
-                    encoded_body += encoded_line + prev
-            # Just normal whitespace at end of line
-            else:
-                encoded_body += encoded_line + prev + '=' + eol
-            encoded_line = ''
-        # Now look at the line we just finished and it has a line ending, we
-        # need to add eol to the end of the line.
-        if lines[lineno].endswith(CRLF) or lines[lineno][-1] in CRLF:
-            encoded_body += encoded_line + eol
-        else:
-            encoded_body += encoded_line
-        encoded_line = ''
-    return encoded_body
-
-
-# For convenience and backwards compatibility w/ standard base64 module
-body_encode = encode
-encodestring = encode
-
-
-\f
-# BAW: I'm not sure if the intent was for the signature of this function to be
-# the same as base64MIME.decode() or not...
-def decode(encoded, eol=NL):
-    """Decode a quoted-printable string.
-
-    Lines are separated with eol, which defaults to \\n.
-    """
-    if not encoded:
-        return encoded
-    # BAW: see comment in encode() above.  Again, we're building up the
-    # decoded string with string concatenation, which could be done much more
-    # efficiently.
-    decoded = ''
-
-    for line in encoded.splitlines():
-        line = line.rstrip()
-        if not line:
-            decoded += eol
-            continue
-
-        i = 0
-        n = len(line)
-        while i < n:
-            c = line[i]
-            if c != '=':
-                decoded += c
-                i += 1
-            # Otherwise, c == "=".  Are we at the end of the line?  If so, add
-            # a soft line break.
-            elif i+1 == n:
-                i += 1
-                continue
-            # Decode if in form =AB
-            elif i+2 < n and line[i+1] in hexdigits and line[i+2] in hexdigits:
-                decoded += unquote(line[i:i+3])
-                i += 3
-            # Otherwise, not in form =AB, pass literally
-            else:
-                decoded += c
-                i += 1
-
-            if i == n:
-                decoded += eol
-    # Special case if original string did not end with eol
-    if not encoded.endswith(eol) and decoded.endswith(eol):
-        decoded = decoded[:-1]
-    return decoded
-
-
-# For convenience and backwards compatibility w/ standard base64 module
-body_decode = decode
-decodestring = decode
-
-
-\f
-def _unquote_match(match):
-    """Turn a match in the form =AB to the ASCII character with value 0xab"""
-    s = match.group(0)
-    return unquote(s)
-
-
-# Header decoding is done a bit differently
-def header_decode(s):
-    """Decode a string encoded with RFC 2045 MIME header `Q' encoding.
-
-    This function does not parse a full MIME header value encoded with
-    quoted-printable (like =?iso-8895-1?q?Hello_World?=) -- please use
-    the high level email.header class for that functionality.
-    """
-    s = s.replace('_', ' ')
-    return re.sub(r'=[a-fA-F0-9]{2}', _unquote_match, s)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/PyBanner048.gif b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/PyBanner048.gif
deleted file mode 100644
index 1a5c87f647fbf33e5b46103119c9fd42afbe9e5d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 954
zcmZ?wbh9u|oW`KcaD;*3|NsAAfBbp<@yCPLU#~s+c;@cAL)TvKIRAX@$tQ~sJ(#)s
zZvU2Bt!uAUEx%l_;C$N5GYljG9gupET@0-MA1L>wWX{W2wJzuNz5<=|CAs%2*1fNJ
z|Np>(0uLRj{u4`zPUg(xU~Mb*(v@XkI=brNiYoco`%D2DvP|tC#8;NFu&`fKe77qr
zlBuDtA!1D-SDhvwJ5wruaus8_I%gGImKHO^L=B#*8C}ery!HM;nrsXl3#*nWaZg^R
z5nio3d1~*>RWn)V&Ql66(O_X<(dc8?t<1~DxLBQa>qgb8Gpef?n|RY_E~w8-(OTQ2
z(z#!wbGypk&F7Vl-_<<M@G9YH)pcj~cS<~*>}(vdYkSoBs$OmNTCiw3qwv!kKdqLh
z%W$z)u`F1y?1c<BTR2ll(uIbDOe~dO91Ig098TycpZafUQ}|SbGgM5G&!MALU>W0i
zrga=;2CU7=Qr-d4nM{n!OgOm&0%ok#R5N)cwIix<Y1}*p9krdWOFbB^=cq9-DP*Ni
z?eb1hik&!P(NqI=#kr?=0~i=@<`=ch6gatP`X2U02W&G0CON1!<b-xy+WlFuv+;n^
zy@L^x7#b(Bak(sZH&wbh{jHCTa7@-}eIcGjmV2%QyL!}X8uWULY+-R>xD>TOHP&mQ
zrv`_R!GjYE?idKxgg;q%WmQXa5%ap<gS(pUemv1L@qOo$grJ7~nnF8uG`8>Y%cu(L
z@w9n#%IA4EW5cdP);el8gun7|PupwVz&L+yfpnevg-6|t><Sb5|9kp83_r)UH)gv;
zMT4eOm(hFPq7ZIQ8E1iv=aQ-ou4*j83YOIY8i$IXPZZ#3RN~2SD!wss;eD<QMux{6
z+z#T?w3PQrGzTW{ZIbRh*q}bu?7z>UdmO^c7C6K()XX?E=|se$9uE<*?e4CIDNmgA
zzs{WCVauO0^C5@Ms|u$CZHo;z6tz^8<Y&vCoyaMro%1q+XHmd$rv*AXmU8_wBpzHy
zO0{!fh!CH9LQSnwVg@JU^}mn97Her7&WvP;xst^BhjViS(}xv5ocnyA8Xjj_wP_Li
zTz#KUnw;B@TFsENo>sMTiERh#ai)xO4Cy?RFYG$BLPKUHlWUjDMwcS%4#~szhHJl;
zs)t%zEq^Vr?OQ?gMophdx_ZtNZXTX_ovA=?m*a&U%@H#vm22;@I<fn3uR%qZzTlfr
R6LNSYuKs?{tH{7$4FC?Je?<TQ

diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/audiotest.au b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/audiotest.au
deleted file mode 100644
index f76b0501b8c61b4fabbb3715b69a9434a42469cb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 28144
zcmYJb2Y4J;b|yOS+xP8zyK9fV&)x~1potm<W>O@GNDxE@x<TX&k{}UC1WF{uOnJZe
z*5kE39;bDf8HLeEBZ&cE0EpB9onuvXuIlRQuFe6GU?v#!{##A0FMvjORo!&%xhMSR
z+}?Cz<nY(N_O%~<?Q6p{{{J6e``Rlt<bVIE!Na4Q4i5J9dAwc^DR_0e@!#$B`B)$8
z_xm}&pC>;&-jl*{_$7s9S@K@GDBb0=C4eFXg#fN`cmj|4q$2g;^|)Ow(udpSb~#CL
zpfIFlU!}MI{*k6>hM{T7J~drDcfGw^={`(%^NRBar&UXOrN!*>njKx7RlLiXtu{)1
z)A`<YjegE$R5q4P#kWmg-OT^4yX=Z}@3kX&W7fBBUpYT@b$)U(pr5VTZ||-+6$|+s
zmRTjOnF%h3?lsG0=kE8fShYs=%(P0aR5NbM5si7da6BD}2S**+CcCAx$J=_u7U7IK
zgHmgwtkz3vecRdDOu1>o8d8r_UruQl(Pp+Zylq`9J$gx2R8+icYmr=j->schD`!-8
zn`5P=Qog@se~8j4Z;wx0yE#2EXSeCn3$BFdO=S{;vXb1b8#nFUyK_{-7{{h&Ce(V{
zXl-|Sp{!M&G3(V6<2P?!zonSf+TC1?_xa5hhO!3R+sbmbZG0`SXj8SyPLGdI+@78_
zoNGH-lDn^JU*ob(HFfLiwOdzjs<i6(v85AF<2-Hm*y**py1eZh-zd&~y?I_HT%A&0
zzp2nT&cE23Us0M{BL>wsZ{GM~{MPtwgOPe?sJG|zg;Bv1e~@h6vwQo7{M{Q1JWbUz
zw~cdSQ)-oAxv8dNPf<zR60KH_k6$0ZdRsB8UtJB>)%6~1=zi4Gw7;fc=hniUjfJ72
zGKGFbd3|1cTjh@|)Rh;P*VKm`ftg9=)U_GaZ3XXfbT_rP)a-BWsFk&r=jQGy+`g~2
zsL*@zu2o^0S1BwGTe!LHa7DxMKz~|kw$9w56w|f^LsZt+Q&HX}uWjtEt*I%Omlc+l
z7gTo2TB51A-AdW5{$y;mz2{O-$DP1)0bFC$({{=g;}VN2=?jT;Vj&!Txcbh)_C{Gv
zb)~FU-Za?%Wm1d=1CdB9nU17IzsF76Z8nR=YO~oH#)-|t`P?4P%ZHN7r-u%;H`d8y
zGI@P-*U__2GVxeM42MK9$a5a>xSgWx;At1@_4zp;>bcxbm&eNn#q{G7gS|bS9i3f0
zhX+SaoO|)?+2cE_OR-RZ^Ew%dLM?~a#|gn;C>UV9ZkNO1ba*&_AR>y1WHOaXW|r??
zdUvGn(1C8WFuJ}N5AxoZ+sff`y1&}w*yh;VJkR-g*2A*+#QB5K)atq6fg=YG^&S~H
zeQ`Ar4q*@b0|It4*~nfm<buoL#y_oVA#Ha$0s$Z8<?#d`Us+rd*t1>TFXG8#y~E4t
z_@j$=!{Jag5n_E1CN6AYhPEk{MlO-0Ep#XyciU;75DIu4-auI3d|o^4Sv=Kuw7;jL
ztz+=nQYIn#(ItyNkIU(xDGHRf*(f3n7$>0^<OUH8G^pbAaG~USe|I<Pc6A*XJo{uJ
z91;Q;v)h4<VKJM`SSl=(2lN&~pkKi6_qiCbg4t{`8BHc4I~W%y-Wl!bXlamR?Hb#=
z`p+-L!#tj|lO~MhF$;Oj<MZ=D5hWA~2|VYP9xxgWC?>Ow!ioel7X~_-_mk4p)Yf<A
zagz75ZpLo2nDCfhZ#1DH+RX+8F}1X`ytcfuwvtIEB0<jUqA@6=UavP8jAq^J9R7tK
zWg7PGDJ-gPtf@cNb=qZTtU9B`V7A#Q+Tn3K>|iHOa5FBi)9IpU8)#*<m|iwwVVr*P
zWJ_&H!Oq;qrTa%8(iZicaj`q>$gH0_wnVGcR;xj!(%Vx5&!P)GEyF3+!8j}m#oX-d
z%=Gl^yiTpu+G&@t*il)OyKD0sKi#P_of=V&-JG?^s}H+nyUK+5IfZh5?&h4ktu1p<
zUQv0(ZK6_MgVvVHxD?Z~s@a?4GX{%Z$1L>p-yf<g*|R5q>zl8>HDl@OP+q%bNVEj0
z<(j;JT5Dj?l=}G*f9S5f`pB}&_gJ7UOk4n$daTM@*Cu8rZz-JM9jp6}$hls~%1R1%
zZrZeISDdpk3XCXpX05Zlbl)>SZ86TxX^f29ceb<h=%tej0UzxY#E?I@yuzucre>xl
zCsh`k*<kZ{>{Q^)V5__=XUAJRH*YRzWo=ROtj0S!yxP}MdxkdYbQqPM;hET>=B5J!
z?H%ukfz;}<$U1Clg=%hUMxoZ~H3kaBy*T<}y|JQv-=5vO-rBJ}@A<$1g95^v7GiyE
zCzd!1Wl*c2G@OCe13iP?9S6_Gc(310)2!cXR!!ZWxqW?lUZYZJ^j3|==yZEMnTGm?
z+S<K^g?saM?(VqzE=%c5wlL2+Vs08-Vl)|SA<@lv`GCveOY?-my<VDQY4!Z9VrF`B
zN~u&R)q0&;t+m={Uutz^@UUD~C95ne-&0;zP(IpJ*-tqm9@=81StmogLw>tEBY3>Q
zppT{bfavtFBI|Sc-8PHP2$iT)Y1C@9L8mogOW7$wOb0`OfKzEWi_P14psxDu;|-l>
zx)1kt99UfMxbQed`=42~P67LmjwfwspQf!A)^4yl?FNh1XjUn8hIy4vr8BDyR*S*t
zp*#+2FzV;++=*}~Ev~Jf4F%g8MlLSJd&B;?_)f<o-%9Nw8$Mfm(Q&4wl@U)z-ZQya
zIzds6P{5?dGMEf;tI2AiR!m-sb9oKEFIO4bPp?uIhv%I+i#f?M+EA@mD|Cm=)9cTo
zw7t4Z_aeHF*EX&nF{!!YkV#uCGn^L7>*nb~xmN6KO;wpI52{;>)~ULcwu9!Lc0Oo7
zB|h~~?T48Z6Bu+*mbl&Kqx#HN{yazdnMD_sIiGepUa+EPA>(%Y`%c`qos{)6H8o#$
zH}=TgZTZ$7M}xUbJl?+68uocy-ZkDHNE&U2%}=e?#gl@5K@9p2I0xRf9S(K`AJAMs
zZSf4-s0SAV?jwtS>dCvbH{mfyd56stTJZ#fsYORPn(_02@Cp?^e$NqFdfVlHn||uO
z=WbxumhK(oI|e(Ln(9ogT%D;+(bh%Z2;+H&cYBtC0gKPUJB&$#NPFBtzpvl1km+Za
zcxHeJc)d?N%;Ks({N$P0d&J;L@beFRX+Oh-PSGn#(UVyAJ6PW8xc|&aMV+?J7yOWG
zWv$1ySmF274YfMy*7dto>!?{(dC-_z=y9$aUA{Jpc`<FGM(vuRHsgGKhN0JoD5mEf
zj$S*os&*F7s7vpv`C;L)-L=U0ml)q8+A#3cwBm{$GErSYDx9H0W}DCH^I1X}zpl^A
zI79YJ_PL;FHAn2BkTaNO(@fxjm5TB6>mIWh;GBXh?Qn+{>`~Dc=k3Wgrz5n?_}Du%
ze>dO_``A#>=YGydLdy$*w9oIjM+KeF7@zl|*R{g4?26OJJf~St5IR%zIE8@AB|;VX
zVA6UR=qTFBQ7&I1BphCN+|)5Buj!Q4bdGc-+>Aw|o>R=t%qf*>gV_${G0<~bR#Ub&
zcW18b^&<Tn&BlTKH)kJQpHoj870My4CCX^rE~V9|HX7{g;=ul*-P_*WocrSqott;q
zDcS6pdUE{stlD51t!=9=DBE9E@viZh?Yho3cH2HPBLpI4<pmoz{48htpHb%TTE8f7
z`*5uBch{WPjfZS|cQ+Jl%x&9TVD6}$oLRjxslGMg)hny-H{|8#z4^wbr?0&F(T_HM
zHc_bjwS4Y(X6;-}x_4WCapBK8+BPx93;xUV%1;&QvFSFYy|AWc`_{L9x<m7wtslL<
z@v~1iP5i2D{`Wecx~8omf8zo9&v+{T{Fo|wWlVkJhR&cn+I=`br(o-An-s79@WY~w
zV;>DH{Yq*0Oy!#{FI;MQJ#T8`?g>Tt+-K^!E7xadR90hmacAY$w>E7^?D*lNcAN9J
za}6I}(_Fo2S5bQ!+`D$zYbt{ZyYj}|^;^@5DZR+7S5(z)+`Mzk$yaxc?~Z9c*C{?S
zU%g5xmA<`Snl}#Gib8IE@TST#KB>3Nx_xYWiL7Yn_8MVhp04XKrPAximF7w1yxne3
z*-jj@v9Q(bCLIh2igL1kRu~>UC~NJjDQzC;TK5P1wt0(HYcd(MW~+&^7$~F3s59yf
zI)l+j(N6JvYjtg1Nl{f*-Rb+!d|IPHsaDO+s<leB$z-w_475#evzwu-8P@5FU+8V9
zmi1H?$-BFc1zAd^QV|V2r!lEbUYm{em}s}jMw`tHZT1N4;?lwD%AQN5CC?K>0_8Ex
zs0<2)T4myCbNal?WOwS(034Wkla*RcMq0`%$_uMydrHo@IGag7GpSIk=Z&^__nC!2
zU^J+PUotm)drEDyJEKi|3v#z_ej{%&r^sZ|T)8oGZG2+F*1>fZ7ZsOz*?{Wi__ZrH
z#;;GRZT<4X?VI2H@elW&-6^-IuYUCT`1sYUQ%gmKd3m`xTWY3eC%?FI^^=cp%+1r!
zdJ8tAy!N9v)Gh536W1<(aCvf8L;IVzy#8i|yrIQ4@%hIee?B&TbH>(@x4Q`ZzInr&
zZ+56dQ|hUkpM5@~eWyoWxo5|Q?NzI`x#_9TKK}ic>ng7`QC(P6SSc&tvupdC1uCCf
zr=Fkq{MKypV3mAOmb-ILgX#8-sT-HCT)r}C<&y``t)6MFt*)pneCuZ$j`hq>O<Pr0
zZjQ|{r3ICH_ZC-|9G|~+{puBrVp460w>7n&3Go*jD&dU1zNM~8ub9<MjZfcD*lNp*
z@(U{)>pdpr)Y!H0vFUl*9$H>Jd+u~JzTRHBd(-P1imMqdl;q^x<gET;^}fP=^(W8s
zKAZaXt(!Ndlm@#KcB=~xHX|IY%-_E8wT*>E)~Sixx27#~DkGDw%*!pVd|=Y+RI@WT
z$8Jo{*)prisNLjEo^Gjal@;Y|+K`hUS4>Py&)P9(t#!3>Pf<}_$fi-L=asY5lhZ1z
zGZglF9jt$~r?W*~QM`LgPGPNGJxjbs158@_N$37b`Kf>fTrxkeRm~}3A$Z`3FgDuh
zj$K+k(J3#>&nv4sPZ@P;>_)TQY;}m~zRvS2VY}IE&{-^cgI=xHnXFFE>mUx1-OYy<
zAD=!TtEq1o47u$#J7l91*0aS*xm}#o4vX7HV?*h68qK^0wykMiqtok6HYS+5ck*a&
zldPflOTULECN1N0yE$Ru`N-(w49~hKy9H*m5n3Ilv(GR1;mknhVskqAVCLlTaEH9M
zR(|BcQu6WffrH&6Yj;AyNF*Lfh2m*JNb>NOU>U=K@W7j5Bay_t=Wm}nd-iBwPe*&b
zyrH43v$y9!cY9~=p@A27AEb%HFJ{)(9zA}PT3TFtuo`3?PCgI}1RO3nF8+n(zGFR|
z?S~F^9`1&}*4p0F+}YjHb9C^~(1E_=1IHgNEiOE~8w&<Ghui05+>9sa;TIn)Us#ER
zIJZ0C<Je&2*|XszJ?#fNJKGO-9~d|^bZ2d4WqEmFVIdI>2Yewh8V<on<NR(1MZ6yy
z?d3Q)9ez(R#QB05F|;81!%w2AffLV11_uuIj+{8Yx_JNb`FB@R0UumE2Ixyv@Hrf`
z%S-$UD-CVO`Na_9@HkxX<oHnd%-uk8cxa%dlXyO@2UqXMBg+e^%yQHp2zmhrd07v1
zyNC184v0gzLUuSEUJo2Gm&56HGj5&@h|!D3;Pf`tRmj>8f$Lm8J{$@8DGb}g!Xkxf
z>WAaVkZI7A#cGC(v@jm5sg?LJ{vaO?$5&S`jdZrk%lB2+b&FVV|Dq@aoW#a-@o<-E
zJL9B19=wAS3{c5qvlz5mozYA&aO6N6mp7DNUVd?IsIy64y{~9r-P?@GU~$05a?%#N
zjdFW1c$0<lI$2Z)G6g>H`W&>y0RC6&%@~Q*g!>*Lvby&4%VTdJY?PJc=hk%58l}#}
zg+!LNo85MwhcTJKu^?msGxD%pkaatqG-I<G^;$JNGpo&PHd@SXPY~YSgX7&THTw#8
z@62ymRVx)n=FXFTAxHx_TV%;DvN=RwGRXP^Vn~d5K`l7?R;^jDHJB`Bn;F`{7Zfv3
zo*q4LuvJ!8n7d<JUdvsb0?xte$kF%Sqg%O-bE^*CX!6j@tEttC@drJ_ogJ6nK9#(G
zDJ4b&foRan3I1@zNyo$P5YOHni7p=-=&Y-gm6uoSt!!vHc=||hW@(johlJ3h2hnH*
zJQfH<Vu^+Oci%mA>g1V=5AHvB@GzZBFD_u)#6;rq`@L=t!R=_L%fYx{af(anXBQUN
z`|qrEx3%rxU*FjMEdAi_og^P%Y1nAN)nI5<WO=_QB)CIye<&S{q<#EDKbtUWdJ;y#
zs(B}<@^NY=pyvdQidlFz6n3ufZ*M6tDJW_@${SSHaO8QC5;Dst54QF#26>9{F+RZq
z7tdpXA~gXcpsWV?`jm^~oT0@;Uvq6~QSOdS8wzOE*wq_z)cxAQXDv-NrA7OW8)t6a
zoHYo;-NWaP9qevzXQrXjrVZY(NE^UWfMpo(soLV4Z5w{}(_G`N-+y}fw!2}EtgfWI
zBrmVTIdSFl%eTzUdkXi-TDtoWUbN3%{o?YtT5M^3msZaz;SidcRNcP3?Hhjj!+hPf
z4}SZ*N#CB`MRof+TS_V`lw-gD_|q{<MP5!(+cO94v1uo+eQ{-68)@u$VpYvd&(5iJ
zOuDXQ_tw{c{KkUf;}1XhVpf*By<ktnYS*!9es1iu-+ysCT$a0QUz=460j#(+J~pBB
z_jX-!Xh`2C*QKVi+%0eXWb*;#XCHrjO}%gTj$Or_7e=2n1<kj|u8hsP>I(DrHVAg3
zL8l}>qJ6lzvGKwwk%HH(&@Pni-t@*BWk=`6u3Vim)Ys-0msFM2HMRH+b5j#D^Ul*P
zvbwg1DL-X4Y361XTIZd<6EUC52}mO{C@aq2vSDjgVsh;AO~p`g!LH)!=GLLE)|5>(
zJFT*;w96X0-vxB!G81damL58GR^-?~>QKF`V&CqqyQ-IFZ(O}K8?UY?tdt+=>>cP>
zXS7P?yj6U5@DdTiF3UVRowoz9^SFJ{Q}XK4;-cL<_H|iq-?%ZWIMLE9Z#tCh=^J_I
zH_c-qe9N(wc+hFK8ccel4#i+~aIxOHnteq@J98ROsHUzf=Ut7>T|+&ImA?L^D5IY@
zSZ!XP%VGuO$-pzV&_2$=c>E`N<W+m~a|-L9VJq8B$<+OY)i1@>JIg}A1J@ZFSEn)>
zq4pR$$S!($hGo}|4|F#*RTh;rcCmJghr%T|`_D6d(TKqNXvS#J7}S7D>=BBy`W*r`
zUm_4nI=aQWW7Vw->pu8}9#@d1<IIvhV5i*%|GdM*_-sBK1CU2!1ezF+B~GVA+86XD
zV`=Jup~+CEYjkHA)?$T6Zw*-7j)3#Nc2T!vOfhyJYmAvzO@9CU8Ov(Y*Q}Il*6psi
zGekRr>_s7gO$y;_54plFsLH^7Zp4?O15|_#n(tTww8O>R)sNa&X@RpW*q<<uY%z`#
z<7Wjpg8T~aUkWcWDfhDgyOMGr7nl9ZaOG`ulDTWHGj^E|IN#>!1BPB>hq2jx>d1@5
zK*ke$bk_5N>2}_;#g5qDHgtL#yq$b#g=x1nYJ;w>bCLb_m@RQ$xMQ;oKB>2*=zFc=
zJE3PB)8VS|xHO42ORc%j_f)Qu8D+5*2RlT^hv+u@QY7<Ulx_<xo4gmf!)H%g-?N;u
zmKw?v`bKTRY^jlL*UHR?#B>MS&2uLWGN#nh@1t6&c28i`)ZrC6jTQ5)PO4?TdVV=$
zF4tDutre!h1=}h$><$k)yMxg%{7}EoPY3-=t`xuUSV;OpA(2lyPFhBsX}`VGx++*Y
zDIuw^H>Y2yYmA;YZNI}V*L2-6w^FCQp0tA*b~EQ3t|Rs(fxhE+pL2UsLTEY2C(gL;
z1;wDa>S0$n;f^nyxhEXwh2f0%qUeA8G!tKr#8zH}yvewDYKaT3XTrdfc|PvvV73Gz
zJdLP}5C}yQ0T>M7<bnuQ=lAhGh-)5V)5$noKug>(vN%CZh9IR`P5|@y2|mgKhIG;n
z{1AARf_jA#b~wB)h9JcO9)CVQC_sWI!ZBDVZiHv-z#JtA)QAEY)DA5j2(P|-q^qf}
zzNx*fZ)hdN5yTa{$!xX~wT@P8_#==!MX+?M*#dh2n%cz+;&Na8zKVL8{BY;G-wxx`
zjHm1j>>oDZq@iko=)#<Fx`9sn&?<l<?Yv5<f;5D!8MxG4m0wU>UfJ2zu|!N3n+qB%
zlnVO;94tn|ydEQ9I6id$@nR+&3%Mwp2@swd#;8_nu$U>Yc&@dwC?}WfTY2jm?z<>P
zaM94DFy~<ES`0SE>t>U&yM2d_9UC5eSM)k;MkA!LMyrJhV6l0EiQ&eYlHBdPYYU6&
z>*NoB(>l%e0A=?2T{aJ5FJ8*xN~D4-$3{ll+KwEDUUfNWK)*1Ebs(YD>E-Wt$jb|I
zwr|e6ThkOgIYOIl!F%lTBbpLiW}VffbGj|AC&v%BHXc3O{lsFl>GT%8(T2%Ef@$@P
z)s}ubA}`;Qm-E)v&4pC*uF<1Wu>A8LuVe78!C;v)@OqQzOAM`MhI*epkJyY_gITAV
zx4=MCD>ZN;jTSoj^xd|avf|<bG_w6m(|&u<I1PyCsN3qVv#LER^|D^?26ZE@7yV14
zOU|_wo)1!5tzNBH&S~c74f=Vj(@X{2v5SvS_8)B9FRR>JoWHw3*4f?t+!~<f{hY?+
zvs<6AR2;T}3$!zP0}f#|ls=ydKD!s-7_$Yisag%>kvP~u*(sM>Sbox7S5sP;pSyEM
zVOeoiW^qxcbs1GgJ9ICx2Ebdy?_mAGhwmIec3|}0$O9i`HV`CcdRj3%tyC-2W~0d`
z1nv*@H`i1a7v|^e%q`ec-Z&Jn1CdnBDd0@O=b&6Lb7<@qHy=r@K3iM9vlR8yMy(2t
z7Rt=*oMK*Qu-F-Y=HByTZS^(fdkgb+?=C1Tl^<GR;6$St=pnNawl9L5B#h(Z#g$7Z
zhL4}P^d#cKpwQdw9Ex&AVb_?g3GvR#i@Lh1s^YwyT|4uNiYl7Lj7ZyIRobn3#tY-y
z=XE%(Zl8k<TpT?yJkrs9L1Y-SMg@>TrBH$owFZPsnBdY<Z|nY&lA>KZwr}3KXID`|
z7_k_2D!W5%9%ZS;0KaUbmnof#x5U;~ntMhY>(6t%%SgyQs|3)i)*B7L9vJVP7o!Ji
z%PR_Vc5dIgBQGbv=h=YGWPrNUS{GcNkw@Z#R8(*{os`wf$1_7m4s`bpx;%`Ec$RZB
z3YB8sq_HrxSByLu>1$|^?JddA*|j?_r?j>+?KJ_PR;hF*3+)bu66sWk6=*vEHE&3K
zboThbdYt#bBvz5Agi@)5ZEW|j!qVOM27B5;?vlcS{Jesq;@Z|@QO0V5H4op?Y{&iy
z#lm6;;VVImFRVO%@6z+TVcyMH4LTw#fW~RGMhKPA%Eh6cwkBC+X>nmeLE)Z#m5oR4
zyDcUS`T}^a(OckL_=6!aoX9M%K0kZ@)QR=Qgy5#F1}%^ig+c+rqXpFB7Sd0Lx?ANn
z6^L;Z?b%yi+j108vspK<RuVi$OFUgS7r<!lTzc>P+ry*ho;^wjITzp~ES)mjlEw&L
zf<?4G)YsL#zow$RthBVex~^?B$}$$cb{^QxyhaZJ0VmlFPgsnn7grxYxwo<)@*W0@
zq6IB6bg-SyV6xIKR!H7G*WcZ`zoxPrrCQ$9@lGZLkI-g@uqIwOHVUFi2=4jC<l@?s
zOP8K3C17h&RuiNmDQF22*x?I^nf1{lU9I)C)s+=+AgXKYJC3bKIk;y~09H%3Aesg-
z84wfc<@=8xtfV7?4}4)Z=;5&G5VOF@9bP`1d3a{9r=u0YQp8y+Dk`cFYV906znTal
zTIPc3LP9FoElxzr#N^WIlk*qfySJE%_&snWNleaUCIbi9=H&vR`10KsXGV|qA`IBx
z+S1%uU*FK!+}_i7;=w{R$RP$vvIqzOK*MkKaY#{+N`U8}?jU)I4kHDAAR>w^bWkk4
zeD~Rlb0^*zIo5Z$r>BdQPB{CA`i>nx|7c|~6%`Rm<T=DrJzlueJ|6<Aybus|qTqEQ
zY?@$PD!au-(iEWjppbn$n=~)!R;UnlY5C&0V_nUSt^1p5<g%u^wvNLikK%qGMMM4}
zv_j&8Tp$>Z#baUw(M*_*HWS1j1ggQPw?!cAMX}pS`wkAJLw7qmh7ZfD<aL!LW&8Hk
z$f_C!mX=^|n#?+l5z3Q6csZU(EIvvHptyaYEHMnN2x%JBS`GFK^p?(Kw%c8-7>4Xw
zA31rrqqD81TGm!sR8-TkoH%=gQ_rci2AvwFcPJ{be0rew%ODquuY~{xxH-2IAzFCG
zU_P)Pcu#Mz*?lfie0+N3!cc#2XUqQm2t1YVE30Zaa4s2QteSZhL4UC6*$6mzb?xq*
zg#<i*56lv9Q`R;x04dTywWCFi!2~zo6G}aK@7a6D2m20owzW3O!8z3}Lu+B)Ntq$`
zun%E-c)0NLqc7Kh#bb2|Z=yNqcpWy5POsIdHP}Dk8;8>qNG?Bl{^f;{?j{*_2bi!@
z-hNzk0wpDlX#fj&0*S@7r;i@2EyKWdgLD?OgL|s^d7W0TGh4ua$d>W4elfLn0T^*d
zV{JuQX?aaU*NF`8vYW_ug#5R={Gr6k(|1pgoOrf~2%g6Y_nF2T5tT-)CbA7}G&T+p
zpI|Kc;KV>T=2x|^cu#R@)&9;?2(i=H-Pl1UJA>U7OC&Q(cOI<YUs*^($gys67duQ(
zj3a1KI19+T0c0yKJRa$8t(R3*l$Pu*ud3^Odl7y!Y#0(|Hro+6Mlt|!l0<rGnLtnA
zX+KLg3<d{k&0_(yI<!kf0L^%Od}QhQJ4d>j>uRdXOUo*2TaKJhg~$#!>akcrKp>cq
zY`_J=>DASxL`0C_L9>x8CECI-+A_jM#56cA`s74!dxNZ|3be1Pt#3c{ZYluLYShD3
zLzhruD3D<yL^;gskQh(KqET!;BtamG58#pPTWAYL3aH;*zc6~JtG!VUpcjG@l2hJt
z@ZDvEiwOb-gTO`7mXI_dgd(w2W+9zQBofIO5+$Tm0W&fJ$Xbwm0T+4=g;y{2wKvGC
z%J*U&O3JG1yN*6cf_$VgJA;%8Y<i?euzn#F6hlOmNXbi5#sXN3rje`wI3bisrk)NS
z>gi~d%W7*78EES4|1t%+L>hv1YeP~9fjucS=}!TEd~yE%%AGq4u^_S|oP>jkk&9pO
zF-YQM1Ca-3hWc7%)fJ_COUtX|t$i<2qTu(DGy|&@M01c-2^5FdAK(LitTALNmemDF
z7Q)KmaC5vb5MRkWIN#e`TUk|6UQyf7d15IXgd+ex2SJ^H2%XrC_<;UaFTK;>dt~tJ
z`szwL413x`h9%kXL`c&P_yq5bbT(F(AyQCU*)*7doIxShIc$0k?hMou(GwUStap-<
zft(E3R@gm$D8*Fz?xi!m9St?5VED?`jMt*oXu$z6(h!{HVvk0L?gX8{j<Eqyn@E0#
zhewhLRJ<Qp+r5)VI-oB1l~%}(Bq*(Nc4mgyW~zCk-IF@rzF#JTBXan}YQSNG!3E6@
zkpi^_YP!5EA4)vzZ>TED*|ud{PQm_=9mWQUz)VliX{o18wKcWv>xlT<tvbcb<jq^R
z=QI?{$0Ct?LkBzC4~&isbXFB?+qh->Tb&*|?16d3+}z~NS-rb$ALi1*(~KTC&D6xL
z8xu;kZE^X|doLc2cJ}nN9vJR!EYIDtd3$bEK&zgaRnARMPEJf47x(We*emZ1Ld&TY
zhyje>m{cKno(Tn4&kl989v(gOE_&R#ZO5)X-5Hx+qnx>QeQfO3ob8+(3t26zYdXdm
zk$8cMx2I?3R607*-`3FD(@|Ghn6quurfs{*J5vU;YWn8b*tHuoTJeA!_D=~|sf$-n
z-WW%@adTp7&fpLimX{YEpXqM__K~;s%?&wkmHB&8jAriE<*{2+M)6GeVMlXCK~c?7
zZXWc)=*P!z&#7%5#+SZ7+AObctSv9xzTx%F#RX@33J1)}sjFkRRCX<GakUf{mlpLr
zODww$YD^Jf3k8W>c!s;roqwmcVqalF-i{5M3W{<o56F)I^tpLUp;su3LeH^gS?9yP
zx<0{%Xa|B>vomU|1DiFnvUKpM+qpE-Qzxq~t*R|6+Edwd^4_@>ugyyPqZ|$0z`)*y
zj=-+N_5>nqvRI6I?05L24q@R%Uq^j)Wo5-aWU*E5Z*A=yd=%mRKH4lfw~&GmTqNrY
zhD6pnA@&Iuz4!K^&X&5`YG|WM2%N6NC)SX`guQ4b0^4AK<p+fZR`+Dh8hDUqGX)VN
zWS(3&)+(#3uc<7ng89=n@HFZ7GQ^BC7{R7`J%q58@eq8Ov7;fg4mPXV&PD^52AUho
zi_2;Xi>oW@8W!5zUaJL?RSDxzY0+EF@KXVH8{j4)y8_IvRKbvS3rjs6^3uYBoV{=D
zlob@#($$aW^mf&hW_DJkRaj}0FUA^=-P1cnqrzjD)mzkR#^_DmKVM%5M>e;pcx!=t
zcj4M<IW^DgXY~3Rm0oSI>FF3v2V;~sXfs)@Y7IhHCYlc1IoJZYH9sf6Xj5U$j-t`l
zy=F^FtuU$Q^y+!5RWAf>!IWrA1Q8apAuc*Uk7e<R5Blq>OAB*zOSbN=*;&xjQNo(;
zn3Tr(Ias4+o1XF8gr_34c){RBx(98ZH5xET8-4#|i>w5hH)T7v*X+(|S>D^P;JgZ@
zQ85P})W+DMBo~Hau2TuK)2C6|byI4cQf)We&h;LZmlWsiEH2$rP+L^?IMJ<FQ<^D-
zPN6WE3=rtTVj{Ml;G8^Me3&9?#LAGN<K`Y6?yRpw4pQ#kJw;U|<*lK`6sQdwM58r9
zmIs3|QH*EOycbdus(Bs)hcE(#WV^@5j&wBauP!MpE!|sDQZDO%mVzUQ2m-7e$v*bL
z+J=+{`Un;x@iNpTu!<)j3b7~0dOPZ?ic8D)RaDl>J4O~=HY4;F2|inCug{GL8FCpI
zqAI}Q@Zcb8Z8Sh1mJcQtpZB++^4^l-vWgm6<H6H@J6H`GnK-dXD5D%KGy{^7pfD{&
zRuk<+EOD55$P&DB_DEy(zI~;8%c`3@dcRCC7I;&{-!wuu5wq3r1JnW8j*elXqkxlP
zsKe<+plJDMcQYjXzKZgi#shs1#UQG~BEYa64vJzV>knWMhGT#s1MdVV4-^qEgfpuv
z&yEcZ_qJfGRMkQc51xFOh;j~i0v6hX3^Ak%dYuHC(ZfE2=>SH|8bJXhV8#|wq4et0
z;{(0K(yOi6-*M>J@uf_N#TF$YEktlg-W=R(Eux|Do3fK}u)$y`CZ=I+#9oY^Jc<}u
zO+{s8Rek5tbBnPsagnk%8?rg!l$iCzGE~E+MWap+G<g_^Sws|gF}dE|)h4g4EGey)
zw+}DJAqec)C0ZkNH3@4WxTM#pfB`7x4Tx&Nw%`{Q7uPZ(LPLwgT|N7&%l8!(7VoR=
zI-cRtlM#~y%ENH*LISMIZiJecL5j&dARH_3+{gXBy`y(lmLDIHm&2{i+ntwRRNMK0
zhe=25bEI1_p;O0>92{8+ICP5XiHX|~q(~^Ed<%z~ko4MixW8LoUIgf9SAJp5(HLtp
z8i3f(%qWe{^pTF9Bc~Tb0<E2!ygrWn3pEjo6#JkDQKf2`TvmYy{`Q=_nly#ph?6`$
zHKVpKHC9&Ec03HaY<l%9f)-=fr<8g?8G+T2rb<ZMqCJKAJ9qBRDH-$`l+)-7{mrTj
z&QV!qc~$GXVFxC8`v$3ZTcM*ofy~JsSxHfTZf@T09lP@jo0h5h>D$wjw}HycsjcDm
z>hhBE<`YqmUNt*$<N7$%)vU(K@asn!%ZosfoSj?V%FnGh$eTbq5a9OhX|*NLT~%HJ
zP~!9=V^U8;fsS3DoSV1M-q=yp%FEgL*7nWYcjxTuirduC@e`AiP+4aGaBWp-Nkwf_
zXPPl8K$Gzs6Vpnag-H&{_T}fiwSC*>&D-AEUDFmqEyeB0iQ5x1YBS$cD<c+ab;CQN
zS$X>wGNuvHS7~fqpKLEEzhld$&D(br)OK<<m1-86_15I9%EBGM-mk5!scC)AnN>4W
zw<abq<vFE^Jt7B-<n5Ab71cE_IBX_jbKII#>8)HO@+Gjh>gu*7uN6W}f&9+f(@Kps
z-P2W9v9D<N_HDZgiYmJfw!GuDX#q#63_uQInU#^QuD-`SfMAEi<v<V~`-(*8VebX+
zj`knw?t*nJm)A9SBX9Wp^F=sGUMV#f4nK4zvDAPvSnO^j5qkW=r894zIWaoa(^4;&
zH+LWC>F(?~o(`~q_(B*KI&65a*Nb4P3t+a-3Cj>xrWdHR&+7|BqKWjv+QS#8hlh_3
z9X&QUG;;d+i-*gZ7~B;f>~0s%6d(f@|B!MF&j)TfQh<E~`IZhbz%v&F0hzmzC_D+`
z<lr(q0i16Ta0@xXxIjE6{NNW}0<Ht~K^`=IP*58u9Pl{74n#2=i^aoY5ZS3LNdY6l
zau0C^0>nu{K?RaJ%}Na-><$<z6pqGY!0bgh^nM?XLO77j49SJT;(mbCkd9fPj>m<`
z<GM6DI6ja=#NojmoSi_x8Mooc@Z_ik#)2_oY~)}D=IiyK8fgqwh{psk7#<2C1i3{h
z!||wy0~+|3tpx{$T*j2ioL^3sKqIIp)sRkc5D80;iJ%K<V1yFr9~}q+86u{Q*X$ff
z<AmJgBCdiOc#Gd?GM$0P6~`)IK@*vU1jrbTz_|laq^|KW{5!Hns83uMGHJ=pLSI<D
zSRxfim>Nm%Vs;V9AjwG+G8!^1EF+mNSw{F}fMhU+XfzxRlYx+hm&ifrfJzbpaTV(*
z(T~spTqCWAAgv=hlI~+5pa+SO5V9i^L|R^{D~U)T5vfI%1oI#SL92us*#Qx519Ol;
zl8#=UipdTe6{Lp=g-9L3YGf*yjMNypi$}<<Y$0#R>WblPAvDGhW=N(;{-js%1;$BM
z8sh>bJ)VGi=DtQ{Ffk#|Eiq%Ax6CL!n&}y}o}o<!q#w9pr6Tz4@IOeMzS!T|+|u6F
zeSVem0WE?)#d!lC7eoxk9||T{o}RdPxTm!iR(9_0oUNNS=6Tsc`^1FGkbH5cB|o>S
zwX!CvSE}aKv(svu%M&`&_0UUsD80tS^5OJAQ$zE>+2)SEwyL6CZ*IOdQ+)37Rg2MD
zpE;VB+iPg-HB8Ovt+ZZysC<xGkc$=|N>&|?w9L<G{60Gze}pMaPA;%|xU=tYd;dVg
z-n|7|cFfK72;(>C_!Ieo=886_$_))<W}gp-quob67CYiNNV#|zWBnmy>{=%$O#z*8
zq-mX_Ju679zIWlixO7f-n90;sov+HtF-_P{D5eaj-frwZE$?!w%ucI;d31FBiO6wo
zi_y)w7;q_aLcA<vbx>-x(X258O>|oIFx(7w{-Imwj@X0)g1xV+uLp@^)>-E>#jNw*
z>d6t$#rIf+S@2q@!L}8@Ye{rzE#8oYO5WiaFT*h=4FWPa%0t=RK?h7LhV#<wA%LkD
zSz1_%1(zE-hg-_`@G9z|c8)n3k3SggUiR5|#%W}@xC`7H=G;(|h&Trm01!PK1;YfE
zIg+Mah``f0#X`9p-efWsSq_IX%VK|T&!yJteLX7ba7Jkv=?#eMof+1_g}p8+wk$G%
zg%k^B;(`IE4?<V;Gu{YCS)C@GmSlDbA+J{qAiUuZJq!l#K8^ZEzDz7ZLo}B4SbWa{
zYHLWOTo;Bt9#M2LEbLLt%N=IDT#RfJq`P~N6o<1ke&8YqryGeG39W%6CIOe%%fp@)
z;`ifD{=s8TIM<V2?Cy2=NBS8@Y{bX-ANZWyVw3~N<D3U$gTi6_!GIfoz`#fm06+li
z@&Jnv{J89cFmw|!>W6@YS&h9$b_sSKb`M^qPox@=LPWq2c}F%TUWoi84?<`KLju`d
ze#lN~_v1F|yp+DuewH>PQ3%=nD>Wdsg9=3R;BjfsVi-gRp%q9ih&`gc5OO7Q1>Hl-
zNIH!OWfUC9fh2~?fu4i>$?7cpBN7VZ1wAEE7$B{^{1|{5AnlX>qyjO9alDj0n5ICa
zg(STsNlYdpjZO?l!clUFiOeJ%i^k*eD1bs7@qq%w{E7O(|FD2_H^FEOCTWBSBXUg$
zBUuf^;DdNN6bnE?2?=~o#^aGhl3->~p`jEW4+Q{Y`p_fl1!BPn^hXM3r$UI+hJyGI
z^!lSbqq{zr>}8(sudVBhdsy12qf%*KqN{C%%Up_iz&l>27hoZ%8b+|&54VNIGKWLJ
zR9OjH4InLWA@g{&r>n729;6>9EowWDsO<AJpI8iX0*ezfNL}Q3H!!CFfP0e~4!j<D
z6Nt2gI1(gBtYK)luc2yh;m#ejwz*m{X6a!xzKVu-TiUwQ=e$OWx2w(1?s3AQw(~%t
zIV4pwevV;M3G1xdVN&P>!NEr3p+sDGF#7oMK{+6jU7NOQ<_a6HU#9oZt5=H3dgQH#
zI)d{mnpG;<{)g;<Y=6%(l$g_K^K%YI<U-s}!%<Nwv@}EEL>3l02sO7da-g%Rd{4oS
zO;wYJcFlZYJgHK$J+*bMhYrY(YBZutsiea`XS%Py^H?Z)CIpPYg~&7@4rBva^*HQf
zv4R4bj9*AErN#7x6DLOxHOu8SrTh8&wd)3V%xqtxjgb>B_d*akV@@u~xkDjDG|9pt
z8WrFW5y9atmUZFGnG{xm3rP?Yqz?dSM!0I}(US|K$NIY4nxS7hdd@yf;?N3kQ*tQO
z>kS~OB8UdV0vov-&pcX<#UoIx2)C1ViSffACjmKs6mkM!m*NB+@&XW9^?3ML>hXzz
zL%kg>jRXB1eL^@!Q5<dN5{x(Qb0;HCA>wjz4m*;2$R3GH+YW~;{0OPyFc1PO1muQC
zhL92&NGQIvdjHH|{{bYIwjAz0$hq8rI%qu-dF-6i>JxDCim}6!bNSJ?NC<%R3Iu~3
zPQac<=^PirT>vUw$Yl+L!r{zfYT@a#Cnt{fHp_e7J#^UT^4d*qr;!R!6z{UJL72Pf
zodImjLhy(o7%#9xIV24rcnl#6+>-zVKrIpb_48sPvAnwS=)Ltv=ZD`O>}+oA>_60*
z-~)`6^O|r9#U1D9NDSGFw1Y?Phu53T2<cTJ{?Ly!a=^iq!%IRMW<=+Zl@4Ip17V05
zQ8X^57L(@(NBa*nRhA8!kxRlG4e>LfC`%t5HCs8mz}wiqGi=D?&G>AAJBhm?Hnrw<
zBG)kFa07gRhky(R3$QW<MuQVDG>#N;kJf^Th1kV`(+D6m?yE8=7lEr-618Wnpx=3y
zHZ<a3_+;NPC$*Sj9L}YV7oO;1B<f`{=OZC(T>*)-Fk0QAB;af-^0b@+Tmu~4V1)!P
zB0T#z^0;GYw5g)7c3Sb|*h$eGsaZET__YqFj=SJt_`snKhYeCK<P*D(@jf>GZU~;X
z7;rm63oO73_|gu)-w9yai!)=03E;>jFL)f-{)ic-R|A~*Zbw(IY){keY5%j1Qx;#{
zc`Hr%n?h=P*daujdu=`($Hf_{;F(1?_+JPCq-Om%X^W$T2>Jv#7wdMgE;r>Apn+i~
zI4K8*L|F>51qZo;kJj!DzTFGodthQFc%t<P<!ZlcV<^XwAj|{GgCwJ2KUj)gy%UH4
zTk?2>C7fL$Z%A@1918G-8|l5!(C|eBrwK+9Qo20IruD!k@H4@a4;NM*9Byf^*)u#j
zlj@coGTS@OAX}Ghd89MI9yrVKBT1l>zB?l+0p=dd@)4Xfh7s=fyPYgd01p=p0dnyn
z`-bIxRx>%w=|Pm-%>{X!n-K10;%mo;4j*VN*{i-`>Tcifnvd4wB#i04+^4ltzMdi4
zw;sf?Pv=O_s^D>lmIW`#W_H?fxCq4eg#8SQL#|+YB%As@NEbv}hmXgxQRF7Mka6mD
z3(4i9C+{9>sN8$;=Iu<ItV6Hu8|HYc<xn>)2m3<P1GktW=|O?+!%^&nyXQiI2y*LO
zR8Zu255;GA9%>=%bAjIz36Lg0l#JB|1BZ1wgFNElzQmG`iHPZQk5`8QTa~zP&RuFP
zYu1|v&pz$9+d7AB3}YRwdCrN9V}YZ>N6(xVZFFXNWzp+O-huf|wl5N)VvBKf79eg}
zA{h*ZNfx<37Iji?zYt+bzNwf9L{iX%!Igo5XT7rG0`JW!hrF;|qvnp+cI))Z4;Dgt
z%~M&|3Z-}6#{>fBI~I@!l05dr?F>XRF}H(*8|-0Yt08!n$l>K9nRJ?^+=x1c9E=zH
z&j-$9ynZei;XGc4D*(p}fL=5dU0Pkgw3-oMNI>XtZVwxX1-!`T^zu67SO!F7f<t(P
zc!d5I9>w4Yh129{uMZ{<%OS1<UzSDc7?2!nMueEjaWHNn=z{!OOagNZ#sc6B_`ld&
zfp`F!8Q@I9ltKhK$~aFeET{Z@Bq%00;G3zi4^~@nIqGn-ZZ_oeBHj#*$Hya(D*lH{
zM8w9zejI3yEkp$;Cd47I9tyGnHy?15*uIEgAI}NMa^OWinj#J&?`Gq;&LS@jo1A33
z1w)APW1zn1N_vTR2N#nO2ng6W0X~d?sGpBPzKRK~VSp8v7E+?eC!{khmqN;z&xMo&
zA`t@cs{FAC>?Rn8VG+X02h$QEDOf@Ygvt0&JOu|_h$X_oU^Eho$8jzJE^jKCSx6-S
z2!uuA0H-pGh_j?4;^Oi`9EbRjTo8?>mx-GUOA8hnnhwMA3PmIFL<G$voCbpp{SzAv
ze?Sl5fD<<nS1}gpCNU_9?MJR~#O(*E{DL5vfw+a`gNrZu{jfH%9>gbx35hi)E<Oq;
z;i?4Sz&UYp3x+0v00<HQZJk8|a0N%T2{!QZmJ3@{`fdmE4?ZLLmIuHx<iI*WBy4XS
zF(w5OaNGe}geS6>$f<5zm%bE&yhBS)@=XzB&$|e&L(mU0hAav}dL%=F(?Bjr@1$8`
zhQtoe+T(;kAc{l?tOOw%DFi%#kt|v5#8^g=o_qO*5K<y$_UV^YB!)f;c_F?6DboM!
zL%8B67tj|$KctRHf23Vv{lgt6S5b*L2vYmx9x=9wZA~7LK9iSh+hlo3doN42EvX5~
zTlwlC@(gKJngKDp;lPm2g1AK9A(b=~0S`s+6N|*aM6p;j7E8oa32-F%5g(((u8+o&
z2#2Rr$z(E>PNy^J1qhK;CY?&9@C5_7m5e9w79sc;031@nU{t(j!IkVBr0HZq2*Q)n
zV6p%O?n^8x&6KdKG*m(uxFpi#$)L#}nPYZ3(z6mh2<0XBC`%2p2H9mGlP5$6oyf9e
z*NDI^;CB>q+5_yHeNXrpe<<X}S4H}aoj@*150m@Y5>g-10({k$)DD4_$UUi$4y8p$
zzo<r9mzvGiAg^D&!wBI^O0ANbxRK?iuLdj)KRW}`qSShJ8n`H3mu4(YTB=NXmWsqf
z**!1u0eK;XT*6yILun!KLdY($i1YxVF&R7xc_AOAC6Ja0PmtTv9rDD>SxOJS^dYm$
zoUI})E~z4MF=>nRiz0QMeM@dhO=Sm$N65NMy^^O0D@cXBBW=HA64HkB5jvGT2ORL<
znT}K-7g5M<QbqcZeTBy<F<<s7u1Oc*cM_}&oe=0TOd5leOAs{Db9NAfK+??M#!6Em
zFXS4zA(ias?1VrZELwJ5zgjeWl9mzt@RHXg2Ft!c)@C^|%O4Vx5I)Qn$Yrn+c}6P4
zasP@jrR%s$Zj)<73`)=}1R*jR0Q3-+^9cm1!~rF#s`M-|;mEU6w_maT%aLWfho(fk
zq&a*^50Uc_s$@LUge0cVzRM079iW=T;AGyIJlP8<gn99a4CAX8(jA&1SEMJv9uh;n
ztV5{xl77;_@DOf;$XSLU93pWd<TrUvs++BYPl6EF2O~+`^ApR6*Z~2gw8LFQ@7X>P
z(u6wm!R^B^$dt&mv0cgZaEDAAWRXanC66>^vR9>HNvx0lB;c2PAoE4R6$upjccuV`
zVDG%#HTXxKkcLPmfI>J(;v(tO%W2^~nJk$VxlCU0PU1C**|HU+yV7;(LFrNQIAK@9
zvDqyNz9xK}<zaFgcL+!03DR;_B49|8K*_EWh?HGs!lZ;Y<RwcON#_$7D$6+%_Yf)(
zWlIQ#hY8v6PXgR|kdfe4{zq<`C+>r>1=oj&MUYz{j3{wLmV6}QLWV(1l$Xoxhri3i
zmVtc;y$9`u5lh1+A7P$LGKG+d%nK7E#Q2Ipm?WW^v^HdJWU}N*Tp{ElMS3GG2w4;I
z2J0g=Mo5!=Lv)YSq*Q@CL<UEwm2HX;PznT*>SO|B7TM;=L$IiDK{72!Eh(lzb}q56
zaQo%M*ak332{9!8B)24*gH9yeA*}%*Nl8Qz4Gxw?-W?E@NHm#>K}2Cp_>hPvlYrZx
z&xs6+h9l89a@pdr6iL-6tW12Z41Q904tkyBy2WGhL@Xjb8H*<qQ1Qt`9Mup~NdVS^
z0gxcp0hBsSRMa6iV4%jr;V6mJAT=$H2auDBJ7^1bLm2i1o`xYIJswM>laf7w;25GV
z<R+SnL%>30L&%ajk<n#kG+|mS91+Fj0%2Y0jdUHiB#|!Nl`5eDawW^(QWe77gr#B4
zWfxE~e5B>f?!)X`v_yLP-@m9!`pfQ^?4XG5AomF-n&mFkA)AK0NYCS{)C=JW!ij{T
z$Qa2-i4_PRNIXk;21}h?T}j-KorOZgHTf^`O!j`3g$Q$G83wOXGhg*VdPOg!V9Y4w
zgT$?pj>aZH|D^kD1u`!31bJ4f_EO<t2B0o<9KOXWhR7S%ONyf5Gg&<>E7ths;$YQq
zm)LmZ4R|aru|ypF1)CA8i=`*)4-^>Hz#m_!PqMH?HB0>y0+W$ux0dveh{NnWF<5D3
z2o=fhAur^=L^kqPqO|n#@+#R^FKGqBNs2^*%E@g~6Bi{y5IW#WcB%0GfA4Py42f){
zQE7!GGT|C&L0UI5)|VJKX+jzc`jkeTU2gKAG~Vn$N$Z#*5k*pCgpDNwf{=l{mF_@7
zzXZ<-MF=^h?y+)&q0kGI65$Hsgk_l{J3Cx?DHR}&Ay~6QSW;4ilgQH&H{od_TF7v-
z9F}cHYKu@!nu#QAUfz(JCmrJtKUsQZhxKwy(g?}yB+^<4zmn$hi8wNFM<ErGU?DIK
z<{2S5zW8=9IBdjZpq$8sVZ0ukEd#ue&H%~}KkM1QHz!~7$tSvPoBO7eodqRNHB&ck
zTJkpSRgCLPi-hSZL!`g1&NX#gC@3-9RCbj=(P<F9db{~;i{V*WbvRJGsqoW(9sl9?
zsSj_w{?nncv59GG?uMFcSLCndUj9h4aVs-TA90$WEZ@Fn-@Z$8b*`#LGi^@b+g6_G
z6yEyt2Fv~;d28;D+yC;xYk&6khu2^G+5EV7>UXoRy=wSGv2p9%7dHY`MSD)o&O9zn
z+#0tQ7hTXO_2NKaUgd0%hxIz|fnL@obay`+mKE(Py!x-7|KR(YPqkZf94`9P-{pL7
z_m#1R{O5-GDRthP6}N8s+5$SIN-W58U7x<VU$ii>^m=btuYX$G<#jy8>4d^9<-h$G
z&39kFHPKOfr(y5y_pklrmH0KK-_cU6xnkY0$#HX9sdP0ScCS=+sBX`*ss8qu4PS<Z
z5bV1xr#a#Aq1K9>+v(r@y5jr0@SR7R!QJ~Wf2jT0>z#_p8;0D%scTC+^4HZ@Kb_mY
z?XX5=j>c(~f-9>K)Cy~VXWGT47w>d8H}89^=#&37{)0E-op&ZwMMX2eyIlL`=IZ%t
zV}SyhPC++Sv}mth(HHHOnP-%qRkuM;Ey?zq=S-=AlPejIBi&eoOqKTE|7Lb`dGC(O
ziCKA_`uZ(HPhn1#Zq8t{vN0zUS_)FgsrDW24UvpAy8}V@hi8EJ`-Eh`|D?OUxu(2D
zeO<X|)i+ew)%@F0#ERW!*L}a;f$w>6GOQ0at<Hp#Q~n@QBatRePNLwDDj-KL9S+@j
z=be#@0Xr2u`|e$lL8JjGVdV6Xm<#}HLM{ou`)MKRB}r3O#28_?kQ{A?M*skcG!uYX
z_n)5~Jo1cZ7w%`41ayESUx2MC8_flx%ObKy0XyRReh_m&CNfY~#3v;{LfW`Mr5}8G
z?m*K4#=0OF==MIX%H?w=-%U7?^=!9!T{fDfaiD{7aOtSmj$}@+Kg=-!Ktv9oAUrwU
zSzlXFY#yIA-nJCxwos=-W_-n^YM$Y&;nOx_vQOZWfRq<;UYL#gQo{t|ir*XTY$?y*
zx`X=ogBe-X=8gRA`!db!%(dBF8%k6Yw@qF01$ybO83!G`soHwMd3Gs%xTCSM#xZsE
zimo`nWJo)!3vm{^f33UWnGW9xRhnNNn8!E1Df;)wkFVI(IvQWs;qq9mL2m?SzpcN&
z`Bwg;*3sphAO7I_-~MaPmeL<@`|XuC-_-r~*PrbD;ZGJm{D|JQyMFenF2C4%YmzC+
zDTr%2-`ZSo>sP<Bzp-`C@a&}WM6K$Iy0oIhJ$b`emRpWvlLJkI^JACCALQhe`f(Us
zXQ51#$m1J1jnqTgLH@A3t7yYp*Wdrt5Nq7NrObzP?VID4!;5zpu?Du-F~mx|-dLEi
z+I=q?Yiiq0tcd>5+LIv8RS*Wi5dt%VpyWc(D?B=XcWL#(GR{~E3&RIabBr%0B4Ur+
zT*~KgWiA5m6Eknu?|(b_<mr>4b5Lwv+M?B4fyd)M>p=2@Lwr8^-jXPUl8-Mer<Q=#
z3Wyrv)B^(FI2Q`UosFM6b#Gzi(K3{*AU?k+;ur&thuCe-*qta2$auvEC!eQNYe?*W
z@Bo?p2qGbinB*V2NwyPZwc*Pi()ZqblH`dC!Uqw5K&%TqhvQWE>P2KHU%Zz}tbLh5
zp1;R~3JBHtgC25#BanD>VsK<x05~58c23eY@r!KHBn0rK;V)Bw3&W{oz>5P1h@Dw&
zzMu!kN7hb_^xfx#^GhzuVb>cd^2HuNjK#J79>jf0pG;p@I+CLur;JKpO}CxF7YU~I
zD}`@uKK${=K3U^iMe|DEu;t2Sy0{>(V{(kzQ&d^BYxl(~pW2Ejs_>}3v3q)4A<JuB
zZ5iJ4(;r{^>wo)i-@TH*>0{L^_3yvWzOq4Kp80+AD?611o3DNl%DZxH^JcRlNlhsC
z_9%J^eeSnj-E{fyKK=Hamv<HaCitD3|2(y`U}wqgFO+X>&foIp*e}PvJ@e6bbAPqr
z+n0ZHZQ8zhqk7C+w0q|+`3L{J<CU@g*FOB+PX<2gcxPPpCa3JJfAdGb|Hq3tSKs*Y
zC)2OGrjK3zB5yOk$#J@McYQ(5^)L2z-fXFuwX~<69_A=E^*m<rHkIsa#GxresDEA+
zv}xa2&<7fq;%lza>N2_8aOjc!$isPyXt4BV3~TL-C*&F}E*>$21oh%Mm8sor2!)MI
z>xKAxC;IF6-Bm>wG>=;i8pgz(qK)sgC)zsV7pp2frV|!L_%7m&{E3Ly5p=9oJY6l!
z*UvTUrsZAJwzj}}w{`Y@b8>%8M`f;W`h|6_`MqiCiRnTmqdvA4Dl4hZ>lkMa+zb^@
zE6RDl+;x+wV7h9aRc+0?H7SfMb3L;)o#qp(H)a|mvaP!dH{X1}o4vAO^A*{~*$LaV
zYg-Ef+Y1ake)h>f1oEf9^P~4wn}2&{+s(08wqD(`b^50Rf2I1fYd`qbKY#Z9Pd<E2
z|LJ$OeYo-UD?gn1`NnU4_U#}4V&#>8(SGOC>)#sx{2O^=vR{1m$Lj?@`(NYV`|!h8
zs;<ALy8LIaD?j<`jek1-1NARo-Skf--@m@J;r9i9+Va6K#{QqGH+KKB;FVvFe<PtT
zxGej|=CQx}&3}=Ve*YKKfAqJ%`NR4z-uS}!^*8_NFMGaj{>kpY`pLI`uKa`RliNOg
z;}1K2@t5EHqtCy4?XSOH@)zIvuODa{uKc$@{@~BQ_`j@sUj3g1fAE(d{wMCkvMX=?
zLEX>)>JR_qi&x+O$FE=c>p%YHZ?4frfAXDQ{P~~$r;lEn_?tf|`uVs1=>04C@mK%k
zH-G-^Km7Hd+Wz7j+kWw_Z+xI`)x7ejzxW^j`On_}=C6MFUqAhqum9j*_1m|8oBs3Q
zf4H{4;BU6P_75ArKK84kpZxTdpa0GO`NPj&`}?ck`^S+#togTVZ+z$bfBXOamp^=e
z%Ll*t&WG>+@%Mi7;im6?|D!*D^*>&Fdi7skx&G_#eD{lw>%RA$&;I+i|9iaU_CIZ^
z`0%ywU3-7$x8D4>zx>G`F$aG8yDeWBzPICxk8{8A)4%)qH~whc`N3yzUb*qgYnMOD
z{l*)A{fn=E*WU6E>MbAb`hnx}#H-)D_5V8lKv8)8pMEm;+wX1o{P(6;{@dsO{k#A9
zH@hzX<4-y!e!TIsk2ila_7~c(Pi(#Q%WYeXZ*<<6PJC~}FMjp)O3l{4yYlMc-0ibh
zRd0U#*Z<=WzWcA=`nO;HV6*XO&d+Cl`tASu_y6JQCx7y{?|)CR;rkzcQu3pp{?$MI
z$Cgii`1c?D{}r8gRFn7q$B(vE5dl$V$Y2BrBMA_~2nhj1k!@YLscp5xs%`J}*4uG^
zR9giCgdNC)FteFq1PG&yKoVvG*??>my7cz8wf%khKj+DFo}8TXd_V8k`}J{6PWNhJ
zZ@~PirM6@dqO8)3L_~Hs&iiBY8>|~e@CtS?mV_DPB}4B$BD_Hp!3uZ|?IVyD2Krd#
z_coAXR~f|zTJ7gSZ*uX?W*roAVKgQ@O5#DF&p4!ihqI!6?o-h2+}!6nzzA_>WZSqD
zA(Yez7%vgQ<w4<;!UOMAy0I!<iA;n)eZ&RxL~y7|>P{6LmDD(?DhLks-`hJB!YA{P
zj%8<#bJ!5%<DNH5+g<ax)&iP+Xla;Te)gL&1-9&5Tem#4LnZ%M)T2uWi_%@Pg@@}{
zj>-z3<J6}IQ3c0&xlXQy7}rXHU3k{%w+e?HbL*@G<&N>?K6WLK4@2^fk7dK{%SYX~
zjgB6VSo<oNw$!qtNep*9^P0UP3-J~u1WJ+E^;CNf@jdJx<?iQEY*^G|{xna2<^vmU
z)?uqB9;h6$4NL6C6COin1@5PeI_0r#zGOlbEU4Y%{CxtdEhpc_g@*HHT|8Wn^`=L*
z(+~x2S2FI(kyzJf9Xk3H>YXRE6AGb%dOJ)O<UnpJj9PDNWFrRI5Qpy?_7`!ESC$_0
ztU$%GeeIr>>}MA{ampOMXecxz$|kp9KbLA(RpbJ#2neKy*yd68jpo@4^WE%<uS4ky
ztCH{Df;@5jIM>a#aOya{;SlTb0f$EpKG|4nn#hsWU|sjf%Jw@LCI@F#!F8;uJyP}P
zpzZfwggmrOrO2hK*1G=DLHozf*j$Wth0vM9KV0+ZE!)SC@Z11vn%IfcU@iI9>hL23
zlA^HYvmrGsJEtuAzLK(|C8dWk1(1LWPuDE(eNWn43t3iM#ZI@%?4eoC`@h4v<w_3J
zlpT}N>|C=D`yb(sKdpaLP<(W(?5InY$Nulg$8(tnZx*@SC_irhZRGx^y~inx1LMWc
zXUm+NzxCUfJ>i&F@s^3|{Ac+wr*DJy<qSCGF%R?=yS$_wMPxZ1$o>M6-+HjI!bx9g
z*YNE@SPmjBpLmGHhgXZOiobu8knh5$I36j!jbNO$&Mw_gFL$O<tszuTWEldU<#LFk
z_Rp_7pr*NX(2wxHwK|sLc_#;dfLZIx6dovix<4@2S(F2@Dw%+koI99J-CtGVNYAxD
zQWWV?gglZZdZV}rPNiBwiao=qPOvQ3L;2x;dF5~UmBD4DHocFnU5b34=gJPW)j+D*
zwgq`_3^P5dC{QcL5S;e;ktZc@@av$=Z0EyFl6z^q`;!pc+Am4vg|<$t;FJnC#H0H*
z^<?kjJUfTFz)%JT{LH8>%&TI?F~4r#&Kme2<&=jU9Y8Df@+P52d(fP6{Q33(WIZSK
zdPuM|C9t+8_@eMGelRJf?dBqXnj~#j_sHU6^>OO%cw=|sh5i*qyDIk5Ez(fe=L3B=
zb_cb??dr3pi>Kt14`rk23-T0m>%t}VnfQ^#kNPM6X&Sq#k*#P|XZ}6-&u0UhYa`0{
zhx*cW%8co;Z)RrhtABX$I}iygweJrq-%-z8Q_1gq)G?Mav-w`1@`Jg}_Y|Xd%re!5
zg>{pB_WAsuzl<ubF89v9`}`fl$h7|VtCkT{hDvU}|MeBkkV(IF?)j+U{8YdBi>sF>
zCyeI5ubU^HKNugK-M;iM)%2YCg9j$Hc^v?*h6_JU%ulc0T%6WFFpN$DIK(iyHM@Or
zd2;psf=a8&%m7rA_V>({`M>@#HEuBM-kJd(u~#oARbReVPHyP`{281}*B;!RR6aC~
zDS<3aH=)vOfAwNQdv9uVX8G4UGYaj-Pp|(^WqDUUqThM>HE4COe*N25n(fyrwSM>h
znqf}4``Wx|`Rln-Y1sY?1nZMqAUM`vHz_Pzo3C}cErV%yb4K^^?3j6N<7e<{ux>D|
zOf7soH*EfKbyYiO{?RZ866<eNBf!6_*UT7qbsF8YZc9DBytX%NwXA^-r)FhCr3M2t
z!@M43`wP<xt2(t|O*;!l4!<k{+lYC`s9D=J>Q;=#KSAWYU;?j?|NYD~ZQfdbzOrft
zp16gjUw4)?hP@%;mf0|4o;Lu)kVRwMer5)K@I~FMY0a=|0qlYaAd{9w&D_e0c4-5M
z)b+*<%gXZwjl~2sc3Qx?8_fE}wfT7<i#0w2m=v(gfWEQOxNZcEa{v$kg}HHM%Ls@p
zkX`6Z0A(}odCq~cWsklAVK*2u81<_^SpZ7_#xiCw^8~ZI4Nz7ET`G{yzt{p*EAz(I
z;*x23LqER=hEpcP;yMUE4U6Vk&En<~aI9HCyuN5!wrJ+Tz-rlOTv|5oecmzy4iTUg
zZvZ`-JyzT>rv(oUe7|{b;sGLb(BN6I==DpWh7V{BkRO1TYBOL~0UKa6uUZV|^%vXA
zpjZV)lRC@ZMV^5h(Hr-mb|cW>X%`mPpP9h4Yfm8oE(GXUz=iBJ4U8b|Uj+QpJm@h4
zgiWUhsN<3ajDxfw>;^)gy^8Mg&MF{a08FKtUYOPbfi-xLz|^Gy_|Sq{4Wt8LJh^N!
zZoCHc%A`sIWH`XI_{WPSaKjrPy=zvF0g;Px<-N=gE?>y}@PSg=+%=OF`@CB^c9M`Z
zKmFfR^Yx8)A_-?(M1B8`!mFAF5<&vI%Bp<bqk6dwU*ORsK|^w2C|*)n4RN#7b0o2N
zTw0?rEa+?yv9uU^RK(tp@}qsoLP1=pGR-fBSsZ0Q!H6=_FF<dI0brdNO~C2ODqY=J
z9cY#i8Y_t2;-v<hPepf78|?h(CqkLS{!L@3&KeS~?{4%9EVi`R$(b?Y!xAD}THse1
z3mADKzI_~v6INbwZyNPz;gIDGzNq@PxE7`VCv7p&mxx@Ze}IU9spb<0e+iO`l1Al`
z>Agf>EI*%T7s?1FHxh@L{x0n_%e7E{K@Adq>g)1+h)qR}OEdeTQ01Inwuo%*iIRtT
z^ww~y-68cnqF5Atk`N-~VmyD0M3z2*yurwWAsc$@IvvjED;)Z(5@MpUeMX4rd(ENV
zN^d1IF0C6GM{D(5km0pGAyGr>T8=NWL2{;B9kr=?ySF(8d-?>P%+CM9=5%FL2J?$R
zWz;K1r~3^lmZbKI%A+2)uc-@Hi<)|oh^lger@W6qii;x6mr~tqgdA)uYdac?Y%EPc
z3=g6cwt_;qd7>j8OdXC}_X*K6w4%x#CrOMv>5u8A=0mNdl~@x)jt@pQ7aLq(@uMQ5
zk%Z!0)ZwA3fC09wp9J}$SOPoU8J(Ko6UL@WkNR*%g80=soG+Ql^$Bd7h=?I!-=k53
z?9#a>`q^WIXn%P{A0keckbKJLa$zytLB>BR=l8CoeR=d$uk@*FlM(Kp6&0iGZ*vU>
zep@mc)5QG2J97N$wNw6~jQnX^KejAGEWJVSdq(H^VAQD>=Fq-1c|1FKP3woE_8W12
zBqke;0*fIg!jaASOb6#i-sNV=z2rb#H7nZx%FVRdFdrF}265=9Q?<0DCq&`|%+Gz3
zKZ&-SMk%N?R|jcbe{0YAcfx`jS#P7#EGJS3{=)p4<4}>LMRXw+OeJcn@&1=z>aTc*
zmKS0jQyPK1IBDWy_)z^2Cg|kFSW%J0-m|WzQHwsK2)|G*_Cdx*kjwJ|tXCK($kk#3
z7Tr~;fZrCRMeSZ!N&X<Wh)m>IOKVSj-1hz06N#_b6=AR+#19ABej`Oi_wv)d1H$Mz
zXAWV@`;%&a2#G^am5ba0CBL4SHi($tz=+(24Dz@<342Yl<KuaTN`W2L(FYV#O&<Z)
zUepI8_uP7xmco~!<=m?=s+-F8OZbGunA?OjYRNJCsz!`}ehQ9CXE6ieS~X^bUW@Z4
zb@6IbQP&hY`9N|=fTtq6(8iX{4Q~}1JJD{nr38d(`1F-T5hE7X(x{c4#}D@sZpcoD
z;4y4U@{vSlObWXlALc(y@AQaN24m}s`OYv=W0Q!4`<i^8D?xfihB9*SR;IGBK%P)E
z?}{tqxhD!zu{cx$mEv}AxGX7D++06uk142i3l?iqNI^nQM64hZS1SqqWSIPwBK};u
zFQ%9RKipSw_B>C1jo>v%lOaxZlGA2WWn#7BKUgUz8q+;UOkaETuOQDh3dh!sB?%MN
z_2J;*40cH1OiCnB=(Nd)cF-p{RYCs!eJSyVp(La)Jtx+RQ1R;Rs&-;1^5^n8WbjDL
z*&cEdx0>J{S6`bMJ~k2=HXwNJ<r~k*Yqmzv+ev(BOnP7llNsP+`R`}Fak%!zmcLNp
zHI0PizEk0=eZBVsJwr=!QC7(n%2Yv5T9|iFX$vewYDqgA@f(+O4i?I-Id`IeH7Kf0
znCXkcc2P=fY?ut}Or4H^!Ek7J*l25HvL$4KS%XE)aNAE#b){iRQc<#xUpOO2dC;>|
z7%prI3&AL9HE^%)k++wK#9I0UEU3OQ<9dfKIDA+j_xHw(6cjie7ME}D@V^O<!1Bsw
zArUR6E4K+(s_7c%0A|&h(~5gh(Q=*)<&OPVAq9S@uVg2lry`L8+Dkhj!IIgl+d-$f
z>^_uVTdgsrTOUd?w6+ouK4S$1u17?b$%guyA;e%|`3m$**NLIt;1rQas0mE$7*R|0
zVdM`N#?m}}igVnpx@n1)s^p+^fj#ANw`f_!r5B-WYOrl;MZ=AgAN8ep&#}g#UPMbC
z#pWQr5EaE}_w@;9mt)+zg#i)6cxh4XaVUo~d)YXi>K9)n^mIQFUGr4>rbj^&vXL9+
zk5<!oP_!^T=m&M0pen^Hqoy_b^MOyp$o-vUB&sK`@aU1+%E*UIu{+`xgNbz?mt)Ce
z@&-;Cl+58rn>&-R#2#S=+*6uQbvi65OOC3l4}gWSY0=P3aa72xR?O&j^W#*Xj+H4Q
zur~!gKJe2el#oN{GI3~A?G;a?q*MY8l&FHpYAJ^k-~|4s=s#P|VIq5Y@h~KxQf7OE
zTaminFc5+Y;gpjhiA@<vJE=pQ20vIIy#bAvjt7OyTEh|Oikx?>d@9Aey!MD7^khXX
z5~a>ep12@qi@ki>IKl`*hXNbb(;4aR%X}g};8w;D6V{qgh+CyBFOPxoxTOy>`P^&B
zXl@-oLez`J>pF}+i0<4%+aon}qPnWn&pn(~9uH0LA>Z64H_<wdAuE_snBlgRfP@AK
z0!rfKu&wONIe}7cIyMl`q@iJRy(f1+NouQa!yudJOMU~=n6TuYj!<|&MfR{2qLQD~
zDo8;Ej8||_?%KikKTZ6ko}CUMRyLrM+qS|ZXT>HjuPY@K^r7&w?ifK=Fb>yG<01Uy
zQ<+~SjtFI2WP+$Jn%KRCKV?>3M|-zYD(&p+sxvzqUU;EaSm01{MnN?7CG@iU;FxN5
zJa(i%E+nb7*9Z1TK|aj-C1Y5_8wBf(nrSU?Z1>gp@js^Og`qxbmcTz+G965q=}z?Y
zW8`#OA?V`MLjLIh|99z3w7W%~5T7aIa06V2Y2tu$P0P6OQQ;++dq-Zrqg8v^Pw7HQ
zx`$U?(V!c))0C1jE9p?)z$CMI-U<9P>|N7N0t&^+79Mh|6vZ`&!*G}=CIjs`r%zPg
zxh;`w5V1oH8B*IE88)l_2iDU<q1xMUIYCXFbUfa#t-RZVsEFC@(e}$eSihgrAo4#c
z{wF4L<Sse<Y$eUhrCEaIGjQ;PQC{txpeRzBOejqtEK7k{`xL3S{Q`-A3D6W2I@ngR
z0+Jh>`iSuD%1+OO_NzE=YyrjoU`?f}c^raba$0YqU|lQ$$=@%nzJ3CYmo-X%CkCGt
zcg0{sOx&6bZ+VBmoPHacAsD&078oF+N#Gb^oR~#$yV@|fdlTa&E@C=B=uF=eO~h!)
zZ0g9ngmmJKN;=eu%fN&R6r}#13t$nI?s9DM0K3t{Q`qoux8slSq~0b)T!t<=`Qxj7
zb)8s3S8rx~;;)~b`DOCu9m7<2hpf9xb$L-ae=j3*<&P_CO3j^X+TO7Xe<=)$qeH-f
zV*%DRP=MRiPFj?*@yz+bxrZ9%?w6Vg_3ZkZa%k?}?=xd_cg=&tGwS)R$&snK$(7H+
ziD_yZEPc51<FMk^l_juz2W%hFKm1e&5*@8-4lEzCY%ZJhz(xJnj!I#^`SJXO?zM4t
z{qC<zz!9KXy}dcJ@(-i-)$8fW=YMZnjO+h1&VPAtPPwqOyR$H}yf(M+;guKDa~6=D
z-2Y}ltpzac%FN8_GB6QabT2-A0J_n-pP%U$cfk6RpZ{Z-o&R}BJ-KWFui`WF&;Qn|
z=70IksN4A4G-dvHQ>k9xn3-PLG3vH<&7fSQQ)@QYmtU>SX;wDDp=%kW3Z`cZ^P7Kf
zPLIvJGS6;)u&$n5|Iao+?bS1SaA+`_K$mD;KRIjA85fOU1`q0ZQ)=T&^W?(zGu626
ze@5jbNR)J--f9MXy%8*!0CDOZh{t9ZcT8#};HV8|5PeM<|M!zl4U!`**mwlEb<^ga
Xh!X_U;M@RG_pPOQ?cxro7n}YcFvyK}

diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_01.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_01.txt
deleted file mode 100644
index e41c6ce..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_01.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Return-Path: <bbb@zzz.org>
-Delivered-To: bbb@zzz.org
-Received: by mail.zzz.org (Postfix, from userid 889)
-	id 27CEAD38CC; Fri,  4 May 2001 14:05:44 -0400 (EDT)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Transfer-Encoding: 7bit
-Message-ID: <15090.61304.110929.45684@aaa.zzz.org>
-From: bbb@ddd.com (John X. Doe)
-To: bbb@zzz.org
-Subject: This is a test message
-Date: Fri, 4 May 2001 14:05:44 -0400
-
-
-Hi,
-
-Do you like this message?
-
--Me
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_02.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_02.txt
deleted file mode 100644
index 2e63363..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_02.txt
+++ /dev/null
@@ -1,135 +0,0 @@
-MIME-version: 1.0
-From: ppp-request@zzz.org
-Sender: ppp-admin@zzz.org
-To: ppp@zzz.org
-Subject: Ppp digest, Vol 1 #2 - 5 msgs
-Date: Fri, 20 Apr 2001 20:18:00 -0400 (EDT)
-X-Mailer: Mailman v2.0.4
-X-Mailman-Version: 2.0.4
-Content-Type: multipart/mixed; boundary="192.168.1.2.889.32614.987812255.500.21814"
-
---192.168.1.2.889.32614.987812255.500.21814
-Content-type: text/plain; charset=us-ascii
-Content-description: Masthead (Ppp digest, Vol 1 #2)
-
-Send Ppp mailing list submissions to
-	ppp@zzz.org
-
-To subscribe or unsubscribe via the World Wide Web, visit
-	http://www.zzz.org/mailman/listinfo/ppp
-or, via email, send a message with subject or body 'help' to
-	ppp-request@zzz.org
-
-You can reach the person managing the list at
-	ppp-admin@zzz.org
-
-When replying, please edit your Subject line so it is more specific
-than "Re: Contents of Ppp digest..."
-
-
---192.168.1.2.889.32614.987812255.500.21814
-Content-type: text/plain; charset=us-ascii
-Content-description: Today's Topics (5 msgs)
-
-Today's Topics:
-
-   1. testing #1 (Barry A. Warsaw)
-   2. testing #2 (Barry A. Warsaw)
-   3. testing #3 (Barry A. Warsaw)
-   4. testing #4 (Barry A. Warsaw)
-   5. testing #5 (Barry A. Warsaw)
-
---192.168.1.2.889.32614.987812255.500.21814
-Content-Type: multipart/digest; boundary="__--__--"
-
---__--__--
-
-Message: 1
-Content-Type: text/plain; charset=us-ascii
-Content-Transfer-Encoding: 7bit
-Date: Fri, 20 Apr 2001 20:16:13 -0400
-To: ppp@zzz.org
-From: barry@digicool.com (Barry A. Warsaw)
-Subject: [Ppp] testing #1
-Precedence: bulk
-
-
-hello
-
-
---__--__--
-
-Message: 2
-Date: Fri, 20 Apr 2001 20:16:21 -0400
-Content-Type: text/plain; charset=us-ascii
-Content-Transfer-Encoding: 7bit
-To: ppp@zzz.org
-From: barry@digicool.com (Barry A. Warsaw)
-Precedence: bulk
-
-
-hello
-
-
---__--__--
-
-Message: 3
-Date: Fri, 20 Apr 2001 20:16:25 -0400
-Content-Type: text/plain; charset=us-ascii
-Content-Transfer-Encoding: 7bit
-To: ppp@zzz.org
-From: barry@digicool.com (Barry A. Warsaw)
-Subject: [Ppp] testing #3
-Precedence: bulk
-
-
-hello
-
-
---__--__--
-
-Message: 4
-Date: Fri, 20 Apr 2001 20:16:28 -0400
-Content-Type: text/plain; charset=us-ascii
-Content-Transfer-Encoding: 7bit
-To: ppp@zzz.org
-From: barry@digicool.com (Barry A. Warsaw)
-Subject: [Ppp] testing #4
-Precedence: bulk
-
-
-hello
-
-
---__--__--
-
-Message: 5
-Date: Fri, 20 Apr 2001 20:16:32 -0400
-Content-Type: text/plain; charset=us-ascii
-Content-Transfer-Encoding: 7bit
-To: ppp@zzz.org
-From: barry@digicool.com (Barry A. Warsaw)
-Subject: [Ppp] testing #5
-Precedence: bulk
-
-
-hello
-
-
-
-
---__--__----
---192.168.1.2.889.32614.987812255.500.21814
-Content-type: text/plain; charset=us-ascii
-Content-description: Digest Footer
-
-_______________________________________________
-Ppp mailing list
-Ppp@zzz.org
-http://www.zzz.org/mailman/listinfo/ppp
-
-
---192.168.1.2.889.32614.987812255.500.21814--
-
-End of Ppp Digest
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_03.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_03.txt
deleted file mode 100644
index 798664e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_03.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-Return-Path: <bbb@zzz.org>
-Delivered-To: bbb@zzz.org
-Received: by mail.zzz.org (Postfix, from userid 889)
-	id 27CEAD38CC; Fri,  4 May 2001 14:05:44 -0400 (EDT)
-Message-ID: <15090.61304.110929.45684@aaa.zzz.org>
-From: bbb@ddd.com (John X. Doe)
-To: bbb@zzz.org
-Subject: This is a test message
-Date: Fri, 4 May 2001 14:05:44 -0400
-
-
-Hi,
-
-Do you like this message?
-
--Me
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_04.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_04.txt
deleted file mode 100644
index 017207f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_04.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Return-Path: <barry@python.org>
-Delivered-To: barry@python.org
-Received: by mail.python.org (Postfix, from userid 889)
-	id C2BF0D37C6; Tue, 11 Sep 2001 00:05:05 -0400 (EDT)
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="h90VIIIKmx"
-Content-Transfer-Encoding: 7bit
-Message-ID: <15261.36209.358846.118674@anthem.python.org>
-From: barry@python.org (Barry A. Warsaw)
-To: barry@python.org
-Subject: a simple multipart
-Date: Tue, 11 Sep 2001 00:05:05 -0400
-X-Mailer: VM 6.95 under 21.4 (patch 4) "Artificial Intelligence" XEmacs Lucid
-X-Attribution: BAW
-X-Oblique-Strategy: Make a door into a window
-
-
---h90VIIIKmx
-Content-Type: text/plain
-Content-Disposition: inline;
-	filename="msg.txt"
-Content-Transfer-Encoding: 7bit
-
-a simple kind of mirror
-to reflect upon our own
-
---h90VIIIKmx
-Content-Type: text/plain
-Content-Disposition: inline;
-	filename="msg.txt"
-Content-Transfer-Encoding: 7bit
-
-a simple kind of mirror
-to reflect upon our own
-
---h90VIIIKmx--
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_05.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_05.txt
deleted file mode 100644
index 3eb3772..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_05.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-From: foo
-Subject: bar
-To: baz
-MIME-Version: 1.0
-Content-Type: multipart/report; report-type=delivery-status;
-	boundary="D1690A7AC1.996856090/mail.example.com"
-Message-Id: <20010803162810.0CA8AA7ACC@mail.example.com>
-
-This is a MIME-encapsulated message.
-
---D1690A7AC1.996856090/mail.example.com
-Content-Type: text/plain
-
-Yadda yadda yadda
-
---D1690A7AC1.996856090/mail.example.com
-
-Yadda yadda yadda
-
---D1690A7AC1.996856090/mail.example.com
-Content-Type: message/rfc822
-
-From: nobody@python.org
-
-Yadda yadda yadda
-
---D1690A7AC1.996856090/mail.example.com--
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_06.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_06.txt
deleted file mode 100644
index e6e6e11..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_06.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-Return-Path: <barry@python.org>
-Delivered-To: barry@python.org
-MIME-Version: 1.0
-Content-Type: message/rfc822
-Content-Description: forwarded message
-Content-Transfer-Encoding: 7bit
-Message-ID: <15265.9482.641338.555352@python.org>
-From: barry@zope.com (Barry A. Warsaw)
-Sender: barry@python.org
-To: barry@python.org
-Subject: forwarded message from Barry A. Warsaw
-Date: Thu, 13 Sep 2001 17:28:42 -0400
-X-Mailer: VM 6.95 under 21.4 (patch 4) "Artificial Intelligence" XEmacs Lucid
-X-Attribution: BAW
-X-Oblique-Strategy: Be dirty
-X-Url: http://barry.wooz.org
-
-MIME-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Return-Path: <barry@python.org>
-Delivered-To: barry@python.org
-Message-ID: <15265.9468.713530.98441@python.org>
-From: barry@zope.com (Barry A. Warsaw)
-Sender: barry@python.org
-To: barry@python.org
-Subject: testing
-Date: Thu, 13 Sep 2001 17:28:28 -0400
-X-Mailer: VM 6.95 under 21.4 (patch 4) "Artificial Intelligence" XEmacs Lucid
-X-Attribution: BAW
-X-Oblique-Strategy: Spectrum analysis
-X-Url: http://barry.wooz.org
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_07.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_07.txt
deleted file mode 100644
index 4508775..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_07.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-MIME-Version: 1.0
-From: Barry <barry@digicool.com>
-To: Dingus Lovers <cravindogs@cravindogs.com>
-Subject: Here is your dingus fish
-Date: Fri, 20 Apr 2001 19:35:02 -0400
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-
-Hi there,
-
-This is the dingus fish.
-
---BOUNDARY
-Content-Type: image/gif; name="dingusfish.gif"
-Content-Transfer-Encoding: base64
-content-disposition: attachment; filename="dingusfish.gif"
-
-R0lGODdhAAEAAfAAAP///wAAACwAAAAAAAEAAQAC/oSPqcvtD6OctNqLs968+w+G4kiW5omm6sq2
-7gvH8kzX9o3n+s73/g8MCofEovGITGICTKbyCV0FDNOo9SqpQqpOrJfXzTQj2vD3TGtqL+NtGQ2f
-qTXmxzuOd7WXdcc9DyjU53ewFni4s0fGhdiYaEhGBelICTNoV1j5NUnFcrmUqemjNifJVWpaOqaI
-oFq3SspZsSraE7sHq3jr1MZqWvi662vxV4tD+pvKW6aLDOCLyur8PDwbanyDeq0N3DctbQYeLDvR
-RY6t95m6UB0d3mwIrV7e2VGNvjjffukeJp4w7F65KecGFsTHQGAygOrgrWs1jt28Rc88KESYcGLA
-/obvTkH6p+CinWJiJmIMqXGQwH/y4qk0SYjgQTczT3ajKZGfuI0uJ4kkVI/DT5s3/ejkxI0aT4Y+
-YTYgWbImUaXk9nlLmnSh1qJiJFl0OpUqRK4oOy7NyRQtHWofhoYVxkwWXKUSn0YsS+fUV6lhqfYb
-6ayd3Z5qQdG1B7bvQzaJjwUV2lixMUZ7JVsOlfjWVr/3NB/uFvnySBN6Dcb6rGwaRM3wsormw5cC
-M9NxWy/bWdufudCvy8bOAjXjVVwta/uO21sE5RHBCzNFXtgq9ORtH4eYjVP4Yryo026nvkFmCeyA
-B29efV6ravCMK5JwWd5897Qrx7ll38o6iHDZ/rXPR//feevhF4l7wjUGX3xq1eeRfM4RSJGBIV1D
-z1gKPkfWag3mVBVvva1RlX5bAJTPR/2YqNtw/FkIYYEi/pIZiAdpcxpoHtmnYYoZtvhUftzdx5ZX
-JSKDW405zkGcZzzGZ6KEv4FI224oDmijlEf+xp6MJK5ojY/ASeVUR+wsKRuJ+XFZ5o7ZeEime8t1
-ouUsU6YjF5ZtUihhkGfCdFQLWQFJ3UXxmElfhQnR+eCdcDbkFZp6vTRmj56ApCihn5QGpaToNZmR
-n3NVSpZcQpZ2KEONusaiCsKAug0wkQbJSFO+PTSjneGxOuFjPlUk3ovWvdIerjUg9ZGIOtGq/qeX
-eCYrrCX+1UPsgTKGGRSbzd5q156d/gpfbJxe66eD5iQKrXj7RGgruGxs62qebBHUKS32CKluCiqZ
-qh+pmehmEb71noAUoe5e9Zm17S7773V10pjrtG4CmuurCV/n6zLK5turWNhqOvFXbjhZrMD0YhKe
-wR0zOyuvsh6MWrGoIuzvyWu5y1WIFAqmJselypxXh6dKLNOKEB98L88bS2rkNqqlKzCNJp9c0G0j
-Gzh0iRrCbHSXmPR643QS+4rWhgFmnSbSuXCjS0xAOWkU2UdLqyuUNfHSFdUouy3bm5i5GnDM3tG8
-doJ4r5tqu3pPbRSVfvs8uJzeNXhp3n4j/tZ42SwH7eaWUUOjc3qFV9453UHTXZfcLH+OeNs5g36x
-lBnHvTm7EbMbLeuaLncao8vWCXimfo1o+843Ak6y4ChNeGntvAYvfLK4ezmoyNIbNCLTCXO9ZV3A
-E8/s88RczPzDwI4Ob7XZyl7+9Miban29h+tJZPrE21wgvBphDfrrfPdCTPKJD/y98L1rZwHcV6Jq
-Zab0metpuNIX/qAFPoz171WUaUb4HAhBSzHuHfjzHb3kha/2Cctis/ORArVHNYfFyYRH2pYIRzic
-isVOfPWD1b6mRTqpCRBozzof6UZVvFXRxWIr3GGrEviGYgyPMfahheiSaLs/9QeFu7oZ/ndSY8DD
-ya9x+uPed+7mxN2IzIISBOMLFYWVqC3Pew1T2nFuuCiwZS5/v6II10i4t1OJcUH2U9zxKodHsGGv
-Oa+zkvNUYUOa/TCCRutF9MzDwdlUMJADTCGSbDQ5OV4PTamDoPEi6Ecc/RF5RWwkcdSXvSOaDWSn
-I9LlvubFTQpuc6JKXLcKeb+xdbKRBnwREemXyjg6ME65aJiOuBgrktzykfPLJBKR9ClMavJ62/Ff
-BlNIyod9yX9wcSXexnXFpvkrbXk64xsx5Db7wXKP5fSgsvwIMM/9631VLBfkmtbHRXpqmtei52hG
-pUwSlo+BASQoeILDOBgREECxBBh5/iYmNsQ9dIv5+OI++QkqdsJPc3uykz5fkM+OraeekcQF7X4n
-B5S67za5U967PmooGQhUXfF7afXyCD7ONdRe17QogYjVx38uLwtrS6nhTnm15LQUnu9E2uK6CNI/
-1HOABj0ESwOjut4FEpFQpdNAm4K2LHnDWHNcmKB2ioKBogysVZtMO2nSxUdZ8Yk2kJc7URioLVI0
-YgmtIwZj4LoeKemgnOnbUdGnzZ4Oa6scqiolBGqS6RgWNLu0RMhcaE6rhhU4hiuqFXPAG8fGwTPW
-FKeLMtdVmXLSs5YJGF/YeVm7rREMlY3UYE+yCxbaMXX8y15m5zVHq6GOKDMynzII/jdUHdyVqIy0
-ifX2+r/EgtZcvRzSb72gU9ui87M2VecjKildW/aFqaYhKoryUjfB/g4qtyVuc60xFDGmCxwjW+qu
-zjuwl2GkOWn66+3QiiEctvd04OVvcCVzjgT7lrkvjVGKKHmmlDUKowSeikb5kK/mJReuWOxONx+s
-ULsl+Lqb0CVn0SrVyJ6wt4t6yTeSCafhPhAf0OXn6L60UMxiLolFAtmN35S2Ob1lZpQ1r/n0Qb5D
-oQ1zJiRVDgF8N3Q8TYfbi3DyWCy3lT1nxyBs6FT3S2GOzWRlxwKvlRP0RPJA9SjxEy0UoEnkA+M4
-cnzLMJrBGWLFEaaUb5lvpqbq/loOaU5+DFuHPxo82/OZuM8FXG3oVNZhtWpMpb/0Xu5m/LfLhHZQ
-7yuVI0MqZ7NE43imC8jH3IwGZlbPm0xkJYs7+2U48hXTsFSMqgGDvai0kLxyynKNT/waj+q1c1tz
-GjOpPBgdCSq3UKZxCSsqFIY+O6JbAWGWcV1pwqLyj5sGqCF1xb1F3varUWqrJv6cN3PrUXzijtfZ
-FshpBL3Xwr4GIPvU2N8EjrJgS1zl21rbXQMXeXc5jjFyrhpCzijSv/RQtyPSzHCFMhlME95fHglt
-pRsX+dfSQjUeHAlpWzJ5iOo79Ldnaxai6bXTcGO3fp07ri7HLEmXXPlYi8bv/qVxvNcdra6m7Rlb
-6JBTb5fd66VhFRjGArh2n7R1rDW4P5NOT9K0I183T2scYkeZ3q/VFyLb09U9ajzXBS8Kgkhc4mBS
-kYY9cy3Vy9lUnuNJH8HGIclUilwnBtjUOH0gteGOZ4c/XNrhXLSYDyxfnD8z1pDy7rYRvDolhnbe
-UMzxCZUs40s6s7UIvBnLgc0+vKuOkIXeOrDymlp+Zxra4MZLBbVrqD/jTJ597pDmnw5c4+DbyB88
-9Cg9DodYcSuMZT/114pptqc/EuTjRPvH/z5slzI3tluOEBBLqOXLOX+0I5929tO97wkvl/atCz+y
-xJrdwteW2FNW/NSmBP+f/maYtVs/bYyBC7Ox3jsYZHL05CIrBa/nS+b3bHfiYm4Ueil1YZZSgAUI
-fFZ1dxUmeA2oQRQ3RuGXNGLFV9/XbGFGPV6kfzk1TBBCd+izc7q1H+OHMJwmaBX2IQNYVAKHYepV
-SSGCe6CnbYHHETKGNe43EDvFgZr0gB/nVHPHZ80VV1ojOiI3XDvYIkl4ayo4bxQIgrFXWTvBI0nH
-VElWMuw2aLUWCRHHf8ymVCHjFlJnOSojfevCYyyyZDH0IcvHhrsnQ5O1OsWzONuVVKIxSxiFZ/tR
-fKDAf6xFTnw4O9Qig2VCfW2hJQrmMOuHW0W3dLQmCMO2ccdUd/xyfflH/olTiHZVdGwb8nIwRzSE
-J15jFlOJuBZBZ4CiyHyd2IFylFlB+HgHhYabhWOGwYO1ZH/Og1dtQlFMk352CGRSIFTapnWQEUtN
-l4zv8S0aaCFDyGCBqDUxZYpxGHX01y/JuH1xhn7TOCnNCI4eKDs5WGX4R425F4vF1o3BJ4vO0otq
-I3rimI7jJY1jISqnBxknCIvruF83mF5wN4X7qGLIhR8A2Vg0yFERSIXn9Vv3GHy3Vj/WIkKddlYi
-yIMv2I/VMjTLpW7pt05SWIZR0RPyxpB4SIUM9lBPGBl0GC7oSEEwRYLe4pJpZY2P0zbI1n+Oc44w
-qY3PUnmF0ixjVpDD/mJ9wpOBGTVgXlaCaZiPcIWK5NiKBIiPdGaQ0TWGvAiG7nMchdZb7Vgf8zNi
-MuMyzRdy/lePe9iC4TRx7WhhOQI/QiSVNAmAa2lT/piFbuh7ofJoYSZzrSZ1bvmWw3eN2nKUPVky
-uPN5/VRfohRd0VYZoqhKIlU6TXYhJxmPUIloAwc1bPmHEpaZYZORHNlXUJM07hATwHR8MJYqkwWR
-WaIezFhxSFlc8/Fq82hEnpeRozg3ULhhr9lAGtVEkCg5ZNRuuVleBPaZadhG0ZgkyPmDOTOKzViM
-YgOcpukKqQcbjAWS0IleQ2ROjdh6A+md1qWdBRSX7iSYgFRTtRmBpJioieXJiHfJiMGIR9fJOn8I
-MSfXYhspn4ooSa2mSAj4n+8Bmg03fBJZoPOJgsVZRxu1oOMRPXYYjdqjihFaEoZpXBREanuJoRI6
-cibFinq4ngUKh/wQd/H5ofYCZ0HJXR62opZFaAT0iFIZo4DIiUojkjeqKiuoZirKo5Y1a7AWckGa
-BkuYoD5lpDK6eUs6CkDqpETwl1EqpfhJpVeKpVl6EgUAADs=
-
---BOUNDARY--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_08.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_08.txt
deleted file mode 100644
index 42ff9cd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_08.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-MIME-Version: 1.0
-From: Barry Warsaw <barry@zope.com>
-To: Dingus Lovers <cravindogs@cravindogs.com>
-Subject: Lyrics
-Date: Fri, 20 Apr 2001 19:35:02 -0400
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-
-
---BOUNDARY
-Content-Type: text/html; charset="iso-8859-1"
-
-
---BOUNDARY
-Content-Type: text/plain; charset="iso-8859-2"
-
-
---BOUNDARY
-Content-Type: text/plain; charset="koi8-r"
-
-
---BOUNDARY--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_09.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_09.txt
deleted file mode 100644
index b683029..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_09.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-MIME-Version: 1.0
-From: Barry Warsaw <barry@zope.com>
-To: Dingus Lovers <cravindogs@cravindogs.com>
-Subject: Lyrics
-Date: Fri, 20 Apr 2001 19:35:02 -0400
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-
-
---BOUNDARY
-Content-Type: text/html; charset="iso-8859-1"
-
-
---BOUNDARY
-Content-Type: text/plain
-
-
---BOUNDARY
-Content-Type: text/plain; charset="koi8-r"
-
-
---BOUNDARY--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_10.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_10.txt
deleted file mode 100644
index 06fd4bc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_10.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-MIME-Version: 1.0
-From: Barry Warsaw <barry@zope.com>
-To: Dingus Lovers <cravindogs@cravindogs.com>
-Subject: Lyrics
-Date: Fri, 20 Apr 2001 19:35:02 -0400
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-Content-Transfer-Encoding: 7bit
-
-This is a 7bit encoded message.
-
---BOUNDARY
-Content-Type: text/html; charset="iso-8859-1"
-Content-Transfer-Encoding: Quoted-Printable
-
-=A1This is a Quoted Printable encoded message!
-
---BOUNDARY
-Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: Base64
-
-VGhpcyBpcyBhIEJhc2U2NCBlbmNvZGVkIG1lc3NhZ2Uu
-
-
---BOUNDARY
-Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: Base64
-
-VGhpcyBpcyBhIEJhc2U2NCBlbmNvZGVkIG1lc3NhZ2UuCg==
-
-
---BOUNDARY
-Content-Type: text/plain; charset="iso-8859-1"
-
-This has no Content-Transfer-Encoding: header.
-
---BOUNDARY--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_11.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_11.txt
deleted file mode 100644
index 24f73c7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_11.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Content-Type: message/rfc822
-MIME-Version: 1.0
-Subject: The enclosing message
-
-Subject: An enclosed message
-
-Here is the body of the message.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_12.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_12.txt
deleted file mode 100644
index 32e1981..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_12.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-MIME-Version: 1.0
-From: Barry Warsaw <barry@zope.com>
-To: Dingus Lovers <cravindogs@cravindogs.com>
-Subject: Lyrics
-Date: Fri, 20 Apr 2001 19:35:02 -0400
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-
-
---BOUNDARY
-Content-Type: text/html; charset="iso-8859-1"
-
-
---BOUNDARY
-Content-Type: multipart/mixed; boundary="ANOTHER"
-
---ANOTHER
-Content-Type: text/plain; charset="iso-8859-2"
-
-
---ANOTHER
-Content-Type: text/plain; charset="iso-8859-3"
-
---ANOTHER--
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-
-
---BOUNDARY
-Content-Type: text/plain; charset="koi8-r"
-
-
---BOUNDARY--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_12a.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_12a.txt
deleted file mode 100644
index f96af44..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_12a.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-MIME-Version: 1.0
-From: Barry Warsaw <barry@zope.com>
-To: Dingus Lovers <cravindogs@cravindogs.com>
-Subject: Lyrics
-Date: Fri, 20 Apr 2001 19:35:02 -0400
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-
-
---BOUNDARY
-Content-Type: text/html; charset="iso-8859-1"
-
-
---BOUNDARY
-Content-Type: multipart/mixed; boundary="ANOTHER"
-
---ANOTHER
-Content-Type: text/plain; charset="iso-8859-2"
-
-
---ANOTHER
-Content-Type: text/plain; charset="iso-8859-3"
-
-
---ANOTHER--
-
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-
-
---BOUNDARY
-Content-Type: text/plain; charset="koi8-r"
-
-
---BOUNDARY--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_13.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_13.txt
deleted file mode 100644
index bcd1a37..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_13.txt
+++ /dev/null
@@ -1,94 +0,0 @@
-MIME-Version: 1.0
-From: Barry <barry@digicool.com>
-To: Dingus Lovers <cravindogs@cravindogs.com>
-Subject: Here is your dingus fish
-Date: Fri, 20 Apr 2001 19:35:02 -0400
-Content-Type: multipart/mixed; boundary="OUTER"
-
---OUTER
-Content-Type: text/plain; charset="us-ascii"
-
-A text/plain part
-
---OUTER
-Content-Type: multipart/mixed; boundary=BOUNDARY
-
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-
-Hi there,
-
-This is the dingus fish.
-
---BOUNDARY
-Content-Type: image/gif; name="dingusfish.gif"
-Content-Transfer-Encoding: base64
-content-disposition: attachment; filename="dingusfish.gif"
-
-R0lGODdhAAEAAfAAAP///wAAACwAAAAAAAEAAQAC/oSPqcvtD6OctNqLs968+w+G4kiW5omm6sq2
-7gvH8kzX9o3n+s73/g8MCofEovGITGICTKbyCV0FDNOo9SqpQqpOrJfXzTQj2vD3TGtqL+NtGQ2f
-qTXmxzuOd7WXdcc9DyjU53ewFni4s0fGhdiYaEhGBelICTNoV1j5NUnFcrmUqemjNifJVWpaOqaI
-oFq3SspZsSraE7sHq3jr1MZqWvi662vxV4tD+pvKW6aLDOCLyur8PDwbanyDeq0N3DctbQYeLDvR
-RY6t95m6UB0d3mwIrV7e2VGNvjjffukeJp4w7F65KecGFsTHQGAygOrgrWs1jt28Rc88KESYcGLA
-/obvTkH6p+CinWJiJmIMqXGQwH/y4qk0SYjgQTczT3ajKZGfuI0uJ4kkVI/DT5s3/ejkxI0aT4Y+
-YTYgWbImUaXk9nlLmnSh1qJiJFl0OpUqRK4oOy7NyRQtHWofhoYVxkwWXKUSn0YsS+fUV6lhqfYb
-6ayd3Z5qQdG1B7bvQzaJjwUV2lixMUZ7JVsOlfjWVr/3NB/uFvnySBN6Dcb6rGwaRM3wsormw5cC
-M9NxWy/bWdufudCvy8bOAjXjVVwta/uO21sE5RHBCzNFXtgq9ORtH4eYjVP4Yryo026nvkFmCeyA
-B29efV6ravCMK5JwWd5897Qrx7ll38o6iHDZ/rXPR//feevhF4l7wjUGX3xq1eeRfM4RSJGBIV1D
-z1gKPkfWag3mVBVvva1RlX5bAJTPR/2YqNtw/FkIYYEi/pIZiAdpcxpoHtmnYYoZtvhUftzdx5ZX
-JSKDW405zkGcZzzGZ6KEv4FI224oDmijlEf+xp6MJK5ojY/ASeVUR+wsKRuJ+XFZ5o7ZeEime8t1
-ouUsU6YjF5ZtUihhkGfCdFQLWQFJ3UXxmElfhQnR+eCdcDbkFZp6vTRmj56ApCihn5QGpaToNZmR
-n3NVSpZcQpZ2KEONusaiCsKAug0wkQbJSFO+PTSjneGxOuFjPlUk3ovWvdIerjUg9ZGIOtGq/qeX
-eCYrrCX+1UPsgTKGGRSbzd5q156d/gpfbJxe66eD5iQKrXj7RGgruGxs62qebBHUKS32CKluCiqZ
-qh+pmehmEb71noAUoe5e9Zm17S7773V10pjrtG4CmuurCV/n6zLK5turWNhqOvFXbjhZrMD0YhKe
-wR0zOyuvsh6MWrGoIuzvyWu5y1WIFAqmJselypxXh6dKLNOKEB98L88bS2rkNqqlKzCNJp9c0G0j
-Gzh0iRrCbHSXmPR643QS+4rWhgFmnSbSuXCjS0xAOWkU2UdLqyuUNfHSFdUouy3bm5i5GnDM3tG8
-doJ4r5tqu3pPbRSVfvs8uJzeNXhp3n4j/tZ42SwH7eaWUUOjc3qFV9453UHTXZfcLH+OeNs5g36x
-lBnHvTm7EbMbLeuaLncao8vWCXimfo1o+843Ak6y4ChNeGntvAYvfLK4ezmoyNIbNCLTCXO9ZV3A
-E8/s88RczPzDwI4Ob7XZyl7+9Miban29h+tJZPrE21wgvBphDfrrfPdCTPKJD/y98L1rZwHcV6Jq
-Zab0metpuNIX/qAFPoz171WUaUb4HAhBSzHuHfjzHb3kha/2Cctis/ORArVHNYfFyYRH2pYIRzic
-isVOfPWD1b6mRTqpCRBozzof6UZVvFXRxWIr3GGrEviGYgyPMfahheiSaLs/9QeFu7oZ/ndSY8DD
-ya9x+uPed+7mxN2IzIISBOMLFYWVqC3Pew1T2nFuuCiwZS5/v6II10i4t1OJcUH2U9zxKodHsGGv
-Oa+zkvNUYUOa/TCCRutF9MzDwdlUMJADTCGSbDQ5OV4PTamDoPEi6Ecc/RF5RWwkcdSXvSOaDWSn
-I9LlvubFTQpuc6JKXLcKeb+xdbKRBnwREemXyjg6ME65aJiOuBgrktzykfPLJBKR9ClMavJ62/Ff
-BlNIyod9yX9wcSXexnXFpvkrbXk64xsx5Db7wXKP5fSgsvwIMM/9631VLBfkmtbHRXpqmtei52hG
-pUwSlo+BASQoeILDOBgREECxBBh5/iYmNsQ9dIv5+OI++QkqdsJPc3uykz5fkM+OraeekcQF7X4n
-B5S67za5U967PmooGQhUXfF7afXyCD7ONdRe17QogYjVx38uLwtrS6nhTnm15LQUnu9E2uK6CNI/
-1HOABj0ESwOjut4FEpFQpdNAm4K2LHnDWHNcmKB2ioKBogysVZtMO2nSxUdZ8Yk2kJc7URioLVI0
-YgmtIwZj4LoeKemgnOnbUdGnzZ4Oa6scqiolBGqS6RgWNLu0RMhcaE6rhhU4hiuqFXPAG8fGwTPW
-FKeLMtdVmXLSs5YJGF/YeVm7rREMlY3UYE+yCxbaMXX8y15m5zVHq6GOKDMynzII/jdUHdyVqIy0
-ifX2+r/EgtZcvRzSb72gU9ui87M2VecjKildW/aFqaYhKoryUjfB/g4qtyVuc60xFDGmCxwjW+qu
-zjuwl2GkOWn66+3QiiEctvd04OVvcCVzjgT7lrkvjVGKKHmmlDUKowSeikb5kK/mJReuWOxONx+s
-ULsl+Lqb0CVn0SrVyJ6wt4t6yTeSCafhPhAf0OXn6L60UMxiLolFAtmN35S2Ob1lZpQ1r/n0Qb5D
-oQ1zJiRVDgF8N3Q8TYfbi3DyWCy3lT1nxyBs6FT3S2GOzWRlxwKvlRP0RPJA9SjxEy0UoEnkA+M4
-cnzLMJrBGWLFEaaUb5lvpqbq/loOaU5+DFuHPxo82/OZuM8FXG3oVNZhtWpMpb/0Xu5m/LfLhHZQ
-7yuVI0MqZ7NE43imC8jH3IwGZlbPm0xkJYs7+2U48hXTsFSMqgGDvai0kLxyynKNT/waj+q1c1tz
-GjOpPBgdCSq3UKZxCSsqFIY+O6JbAWGWcV1pwqLyj5sGqCF1xb1F3varUWqrJv6cN3PrUXzijtfZ
-FshpBL3Xwr4GIPvU2N8EjrJgS1zl21rbXQMXeXc5jjFyrhpCzijSv/RQtyPSzHCFMhlME95fHglt
-pRsX+dfSQjUeHAlpWzJ5iOo79Ldnaxai6bXTcGO3fp07ri7HLEmXXPlYi8bv/qVxvNcdra6m7Rlb
-6JBTb5fd66VhFRjGArh2n7R1rDW4P5NOT9K0I183T2scYkeZ3q/VFyLb09U9ajzXBS8Kgkhc4mBS
-kYY9cy3Vy9lUnuNJH8HGIclUilwnBtjUOH0gteGOZ4c/XNrhXLSYDyxfnD8z1pDy7rYRvDolhnbe
-UMzxCZUs40s6s7UIvBnLgc0+vKuOkIXeOrDymlp+Zxra4MZLBbVrqD/jTJ597pDmnw5c4+DbyB88
-9Cg9DodYcSuMZT/114pptqc/EuTjRPvH/z5slzI3tluOEBBLqOXLOX+0I5929tO97wkvl/atCz+y
-xJrdwteW2FNW/NSmBP+f/maYtVs/bYyBC7Ox3jsYZHL05CIrBa/nS+b3bHfiYm4Ueil1YZZSgAUI
-fFZ1dxUmeA2oQRQ3RuGXNGLFV9/XbGFGPV6kfzk1TBBCd+izc7q1H+OHMJwmaBX2IQNYVAKHYepV
-SSGCe6CnbYHHETKGNe43EDvFgZr0gB/nVHPHZ80VV1ojOiI3XDvYIkl4ayo4bxQIgrFXWTvBI0nH
-VElWMuw2aLUWCRHHf8ymVCHjFlJnOSojfevCYyyyZDH0IcvHhrsnQ5O1OsWzONuVVKIxSxiFZ/tR
-fKDAf6xFTnw4O9Qig2VCfW2hJQrmMOuHW0W3dLQmCMO2ccdUd/xyfflH/olTiHZVdGwb8nIwRzSE
-J15jFlOJuBZBZ4CiyHyd2IFylFlB+HgHhYabhWOGwYO1ZH/Og1dtQlFMk352CGRSIFTapnWQEUtN
-l4zv8S0aaCFDyGCBqDUxZYpxGHX01y/JuH1xhn7TOCnNCI4eKDs5WGX4R425F4vF1o3BJ4vO0otq
-I3rimI7jJY1jISqnBxknCIvruF83mF5wN4X7qGLIhR8A2Vg0yFERSIXn9Vv3GHy3Vj/WIkKddlYi
-yIMv2I/VMjTLpW7pt05SWIZR0RPyxpB4SIUM9lBPGBl0GC7oSEEwRYLe4pJpZY2P0zbI1n+Oc44w
-qY3PUnmF0ixjVpDD/mJ9wpOBGTVgXlaCaZiPcIWK5NiKBIiPdGaQ0TWGvAiG7nMchdZb7Vgf8zNi
-MuMyzRdy/lePe9iC4TRx7WhhOQI/QiSVNAmAa2lT/piFbuh7ofJoYSZzrSZ1bvmWw3eN2nKUPVky
-uPN5/VRfohRd0VYZoqhKIlU6TXYhJxmPUIloAwc1bPmHEpaZYZORHNlXUJM07hATwHR8MJYqkwWR
-WaIezFhxSFlc8/Fq82hEnpeRozg3ULhhr9lAGtVEkCg5ZNRuuVleBPaZadhG0ZgkyPmDOTOKzViM
-YgOcpukKqQcbjAWS0IleQ2ROjdh6A+md1qWdBRSX7iSYgFRTtRmBpJioieXJiHfJiMGIR9fJOn8I
-MSfXYhspn4ooSa2mSAj4n+8Bmg03fBJZoPOJgsVZRxu1oOMRPXYYjdqjihFaEoZpXBREanuJoRI6
-cibFinq4ngUKh/wQd/H5ofYCZ0HJXR62opZFaAT0iFIZo4DIiUojkjeqKiuoZirKo5Y1a7AWckGa
-BkuYoD5lpDK6eUs6CkDqpETwl1EqpfhJpVeKpVl6EgUAADs=
-
---BOUNDARY--
-
---OUTER--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_14.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_14.txt
deleted file mode 100644
index a70de5a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_14.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-Return-Path: <bbb@zzz.org>
-Delivered-To: bbb@zzz.org
-Received: by mail.zzz.org (Postfix, from userid 889)
-	id 27CEAD38CC; Fri,  4 May 2001 14:05:44 -0400 (EDT)
-MIME-Version: 1.0
-Content-Type: text; charset=us-ascii
-Content-Transfer-Encoding: 7bit
-Message-ID: <15090.61304.110929.45684@aaa.zzz.org>
-From: bbb@ddd.com (John X. Doe)
-To: bbb@zzz.org
-Subject: This is a test message
-Date: Fri, 4 May 2001 14:05:44 -0400
-
-
-Hi,
-
-I'm sorry but I'm using a drainbread ISP, which although big and
-wealthy can't seem to generate standard compliant email. :(
-
-This message has a Content-Type: header with no subtype.  I hope you
-can still read it.
-
--Me
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_15.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_15.txt
deleted file mode 100644
index 2c67f77..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_15.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-Return-Path: <xx@xx.dk>
-Received: from fepD.post.tele.dk (195.41.46.149) by mail.groupcare.dk (LSMTP for Windows NT v1.1b) with SMTP id <0.0014F8A2@mail.groupcare.dk>; Mon, 30 Apr 2001 12:17:50 +0200
-User-Agent: Microsoft-Outlook-Express-Macintosh-Edition/5.02.2106
-Subject: XX
-From: xx@xx.dk
-To: XX
-Message-ID: <xxxx>
-Mime-version: 1.0
-Content-type: multipart/mixed;
-   boundary="MS_Mac_OE_3071477847_720252_MIME_Part"
-
-> Denne meddelelse er i MIME-format. Da dit postl¾sningsprogram ikke forstŒr dette format, kan del af eller hele meddelelsen v¾re ul¾selig.
-
---MS_Mac_OE_3071477847_720252_MIME_Part
-Content-type: multipart/alternative;
-   boundary="MS_Mac_OE_3071477847_720252_MIME_Part"
-
-
---MS_Mac_OE_3071477847_720252_MIME_Part
-Content-type: text/plain; charset="ISO-8859-1"
-Content-transfer-encoding: quoted-printable
-
-Some removed test. 
-
---MS_Mac_OE_3071477847_720252_MIME_Part
-Content-type: text/html; charset="ISO-8859-1"
-Content-transfer-encoding: quoted-printable
-
-<HTML>
-<HEAD>
-<TITLE>Some removed HTML</TITLE>
-</HEAD>
-<BODY>
-Some removed text.
-</BODY>
-</HTML>
-
-
---MS_Mac_OE_3071477847_720252_MIME_Part--
-
-
---MS_Mac_OE_3071477847_720252_MIME_Part
-Content-type: image/gif; name="xx.gif";
- x-mac-creator="6F676C65";
- x-mac-type="47494666"
-Content-disposition: attachment
-Content-transfer-encoding: base64
-
-Some removed base64 encoded chars.
-
---MS_Mac_OE_3071477847_720252_MIME_Part--
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_16.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_16.txt
deleted file mode 100644
index 12b519b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_16.txt
+++ /dev/null
@@ -1,123 +0,0 @@
-Return-Path: <>
-Delivered-To: scr-admin@socal-raves.org
-Received: from cougar.noc.ucla.edu (cougar.noc.ucla.edu [169.232.10.18])
-	by babylon.socal-raves.org (Postfix) with ESMTP id CCC2C51B84
-	for <scr-admin@socal-raves.org>; Sun, 23 Sep 2001 20:13:54 -0700 (PDT)
-Received: from sims-ms-daemon by cougar.noc.ucla.edu
- (Sun Internet Mail Server sims.3.5.2000.03.23.18.03.p10)
- id <0GK500B01D0B8Y@cougar.noc.ucla.edu> for scr-admin@socal-raves.org; Sun,
- 23 Sep 2001 20:14:35 -0700 (PDT)
-Received: from cougar.noc.ucla.edu
- (Sun Internet Mail Server sims.3.5.2000.03.23.18.03.p10)
- id <0GK500B01D0B8X@cougar.noc.ucla.edu>; Sun, 23 Sep 2001 20:14:35 -0700 (PDT)
-Date: Sun, 23 Sep 2001 20:14:35 -0700 (PDT)
-From: Internet Mail Delivery <postmaster@ucla.edu>
-Subject: Delivery Notification: Delivery has failed
-To: scr-admin@socal-raves.org
-Message-id: <0GK500B04D0B8X@cougar.noc.ucla.edu>
-MIME-version: 1.0
-Sender: scr-owner@socal-raves.org
-Errors-To: scr-owner@socal-raves.org
-X-BeenThere: scr@socal-raves.org
-X-Mailman-Version: 2.1a3
-Precedence: bulk
-List-Help: <mailto:scr-request@socal-raves.org?subject=help>
-List-Post: <mailto:scr@socal-raves.org>
-List-Subscribe: <http://socal-raves.org/mailman/listinfo/scr>,
-	<mailto:scr-request@socal-raves.org?subject=subscribe>
-List-Id: SoCal-Raves <scr.socal-raves.org>
-List-Unsubscribe: <http://socal-raves.org/mailman/listinfo/scr>,
-	<mailto:scr-request@socal-raves.org?subject=unsubscribe>
-List-Archive: <http://socal-raves.org/mailman/private/scr/>
-Content-Type: multipart/report; boundary="Boundary_(ID_PGS2F2a+z+/jL7hupKgRhA)"
-
-
---Boundary_(ID_PGS2F2a+z+/jL7hupKgRhA)
-Content-type: text/plain; charset=ISO-8859-1
-
-This report relates to a message you sent with the following header fields:
-
-  Message-id: <002001c144a6$8752e060$56104586@oxy.edu>
-  Date: Sun, 23 Sep 2001 20:10:55 -0700
-  From: "Ian T. Henry" <henryi@oxy.edu>
-  To: SoCal Raves <scr@socal-raves.org>
-  Subject: [scr] yeah for Ians!!
-
-Your message cannot be delivered to the following recipients:
-
-  Recipient address: jangel1@cougar.noc.ucla.edu
-  Reason: recipient reached disk quota
-
-
---Boundary_(ID_PGS2F2a+z+/jL7hupKgRhA)
-Content-type: message/DELIVERY-STATUS
-
-Original-envelope-id: 0GK500B4HD0888@cougar.noc.ucla.edu
-Reporting-MTA: dns; cougar.noc.ucla.edu
-
-Action: failed
-Status: 5.0.0 (recipient reached disk quota)
-Original-recipient: rfc822;jangel1@cougar.noc.ucla.edu
-Final-recipient: rfc822;jangel1@cougar.noc.ucla.edu
-
---Boundary_(ID_PGS2F2a+z+/jL7hupKgRhA)
-Content-type: MESSAGE/RFC822
-
-Return-path: scr-admin@socal-raves.org
-Received: from sims-ms-daemon by cougar.noc.ucla.edu
- (Sun Internet Mail Server sims.3.5.2000.03.23.18.03.p10)
- id <0GK500B01D0B8X@cougar.noc.ucla.edu>; Sun, 23 Sep 2001 20:14:35 -0700 (PDT)
-Received: from panther.noc.ucla.edu by cougar.noc.ucla.edu
- (Sun Internet Mail Server sims.3.5.2000.03.23.18.03.p10)
- with ESMTP id <0GK500B4GD0888@cougar.noc.ucla.edu> for jangel1@sims-ms-daemon;
- Sun, 23 Sep 2001 20:14:33 -0700 (PDT)
-Received: from babylon.socal-raves.org
- (ip-209-85-222-117.dreamhost.com [209.85.222.117])
- by panther.noc.ucla.edu (8.9.1a/8.9.1) with ESMTP id UAA09793 for
- <jangel1@ucla.edu>; Sun, 23 Sep 2001 20:14:32 -0700 (PDT)
-Received: from babylon (localhost [127.0.0.1]) by babylon.socal-raves.org
- (Postfix) with ESMTP id D3B2951B70; Sun, 23 Sep 2001 20:13:47 -0700 (PDT)
-Received: by babylon.socal-raves.org (Postfix, from userid 60001)
- id A611F51B82; Sun, 23 Sep 2001 20:13:46 -0700 (PDT)
-Received: from tiger.cc.oxy.edu (tiger.cc.oxy.edu [134.69.3.112])
- by babylon.socal-raves.org (Postfix) with ESMTP id ADA7351B70 for
- <scr@socal-raves.org>; Sun, 23 Sep 2001 20:13:44 -0700 (PDT)
-Received: from ent (n16h86.dhcp.oxy.edu [134.69.16.86])
- by tiger.cc.oxy.edu (8.8.8/8.8.8) with SMTP id UAA08100 for
- <scr@socal-raves.org>; Sun, 23 Sep 2001 20:14:24 -0700 (PDT)
-Date: Sun, 23 Sep 2001 20:10:55 -0700
-From: "Ian T. Henry" <henryi@oxy.edu>
-Subject: [scr] yeah for Ians!!
-Sender: scr-admin@socal-raves.org
-To: SoCal Raves <scr@socal-raves.org>
-Errors-to: scr-admin@socal-raves.org
-Message-id: <002001c144a6$8752e060$56104586@oxy.edu>
-MIME-version: 1.0
-X-Mailer: Microsoft Outlook Express 5.50.4522.1200
-Content-type: text/plain; charset=us-ascii
-Precedence: bulk
-Delivered-to: scr-post@babylon.socal-raves.org
-Delivered-to: scr@socal-raves.org
-X-Converted-To-Plain-Text: from multipart/alternative by demime 0.98e
-X-Converted-To-Plain-Text: Alternative section used was text/plain
-X-BeenThere: scr@socal-raves.org
-X-Mailman-Version: 2.1a3
-List-Help: <mailto:scr-request@socal-raves.org?subject=help>
-List-Post: <mailto:scr@socal-raves.org>
-List-Subscribe: <http://socal-raves.org/mailman/listinfo/scr>,
- <mailto:scr-request@socal-raves.org?subject=subscribe>
-List-Id: SoCal-Raves <scr.socal-raves.org>
-List-Unsubscribe: <http://socal-raves.org/mailman/listinfo/scr>,
- <mailto:scr-request@socal-raves.org?subject=unsubscribe>
-List-Archive: <http://socal-raves.org/mailman/private/scr/>
-
-I always love to find more Ian's that are over 3 years old!!
-
-Ian
-_______________________________________________
-For event info, list questions, or to unsubscribe, see http://www.socal-raves.org/
-
-
-
---Boundary_(ID_PGS2F2a+z+/jL7hupKgRhA)--
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_17.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_17.txt
deleted file mode 100644
index 0eb663f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_17.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-MIME-Version: 1.0
-From: Barry <barry@digicool.com>
-To: Dingus Lovers <cravindogs@cravindogs.com>
-Subject: Here is your dingus fish
-Date: Fri, 20 Apr 2001 19:35:02 -0400
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-
-Hi there,
-
-This is the dingus fish.
-
-[Non-text (image/gif) part of message omitted, filename dingusfish.gif]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_18.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_18.txt
deleted file mode 100644
index b73e863..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_18.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Foobar-Spoink-Defrobnit: wasnipoop; giraffes="very-long-necked-animals";
-	spooge="yummy"; hippos="gargantuan"; marshmallows="gooey"
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_19.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_19.txt
deleted file mode 100644
index 6090fd3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_19.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-Send Ppp mailing list submissions to
-	ppp@zzz.org
-
-To subscribe or unsubscribe via the World Wide Web, visit
-	http://www.zzz.org/mailman/listinfo/ppp
-or, via email, send a message with subject or body 'help' to
-	ppp-request@zzz.org
-
-You can reach the person managing the list at
-	ppp-admin@zzz.org
-
-When replying, please edit your Subject line so it is more specific
-than "Re: Contents of Ppp digest..."
-
-Today's Topics:
-
-   1. testing #1 (Barry A. Warsaw)
-   2. testing #2 (Barry A. Warsaw)
-   3. testing #3 (Barry A. Warsaw)
-   4. testing #4 (Barry A. Warsaw)
-   5. testing #5 (Barry A. Warsaw)
-
-hello
-
-
-hello
-
-
-hello
-
-
-hello
-
-
-hello
-
-
-
-_______________________________________________
-Ppp mailing list
-Ppp@zzz.org
-http://www.zzz.org/mailman/listinfo/ppp
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_20.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_20.txt
deleted file mode 100644
index d32641f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_20.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Return-Path: <bbb@zzz.org>
-Delivered-To: bbb@zzz.org
-Received: by mail.zzz.org (Postfix, from userid 889)
-	id 27CEAD38CC; Fri,  4 May 2001 14:05:44 -0400 (EDT)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Transfer-Encoding: 7bit
-Message-ID: <15090.61304.110929.45684@aaa.zzz.org>
-From: bbb@ddd.com (John X. Doe)
-To: bbb@zzz.org
-Cc: ccc@zzz.org
-CC: ddd@zzz.org
-cc: eee@zzz.org
-Subject: This is a test message
-Date: Fri, 4 May 2001 14:05:44 -0400
-
-
-Hi,
-
-Do you like this message?
-
--Me
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_21.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_21.txt
deleted file mode 100644
index c8ffda8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_21.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-From: aperson@dom.ain
-To: bperson@dom.ain
-Subject: Test
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-
-MIME message
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-One
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-Two
---BOUNDARY--
-End of MIME message
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_22.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_22.txt
deleted file mode 100644
index af98c8a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_22.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-Mime-Version: 1.0
-Message-Id: <a05001902b7f1c33773e9@[134.84.183.138]>
-Date: Tue, 16 Oct 2001 13:59:25 +0300
-To: a@example.com
-From: b@example.com
-Content-Type: multipart/mixed; boundary="============_-1208892523==_============"
-
---============_-1208892523==_============
-Content-Type: text/plain; charset="us-ascii" ; format="flowed"
-
-Text text text.
---============_-1208892523==_============
-Content-Id: <a05001902b7f1c33773e9@[134.84.183.138].0.0>
-Content-Type: image/jpeg; name="wibble.JPG"
- ; x-mac-type="4A504547"
- ; x-mac-creator="474B4F4E"
-Content-Disposition: attachment; filename="wibble.JPG"
-Content-Transfer-Encoding: base64
-
-/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
-AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAALCAXABIEBAREA
-g6bCjjw/pIZSjO6FWFpldjySOmCNrO7DBZibUXhTwtCixw+GtAijVdqxxaPp0aKvmGXa
-qrbBQvms0mAMeYS/3iTV1dG0hHaRNK01XblnWxtVdjkHLMIgTyqnk9VB7CrP2KzIINpa
-4O7I+zxYO9WV8jZg71Zlb+8rMDkEirAVQFAUAKAFAAAUAYAUDgADgY6DjpRtXj5RxjHA
-4wQRj0wQCMdCAewpaKKK/9k=
---============_-1208892523==_============
-Content-Id: <a05001902b7f1c33773e9@[134.84.183.138].0.1>
-Content-Type: image/jpeg; name="wibble2.JPG"
- ; x-mac-type="4A504547"
- ; x-mac-creator="474B4F4E"
-Content-Disposition: attachment; filename="wibble2.JPG"
-Content-Transfer-Encoding: base64
-
-/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
-AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAALCAXABJ0BAREA
-/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
-W6NFJJBEkU10kKGTcWMDwxuU+0JHvk8qAtOpNwqSR0n8c3BlDyXHlqsUltHEiTvdXLxR
-7vMiGDNJAJWkAMk8ZkCFp5G2oo5W++INrbQtNfTQxJAuXlupz9oS4d5Y1W+E2XlWZJJE
-Y7LWYQxTLE1zuMbfBPxw8X2fibVdIbSbI6nLZxX635t9TjtYreWR7WGKJTLJFFKSlozO
-0ShxIXM43uC3/9k=
---============_-1208892523==_============
-Content-Type: text/plain; charset="us-ascii" ; format="flowed"
-
-Text text text.
---============_-1208892523==_============--
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_23.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_23.txt
deleted file mode 100644
index 0a98151..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_23.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-From: aperson@dom.ain
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-
---BOUNDARY
-Content-Type: text/plain
-
-A message part
---BOUNDARY--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_24.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_24.txt
deleted file mode 100644
index a44db02..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_24.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
---BOUNDARY
-
-
---BOUNDARY--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_25.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_25.txt
deleted file mode 100644
index 76d88db..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_25.txt
+++ /dev/null
@@ -1,117 +0,0 @@
-From MAILER-DAEMON Fri Apr 06 16:46:09 2001
-Received: from [204.245.199.98] (helo=zinfandel.lacita.com)
-	by www.linux.org.uk with esmtp (Exim 3.13 #1)
-	id 14lYR6-0008Iv-00
-	for linuxuser-admin@www.linux.org.uk; Fri, 06 Apr 2001 16:46:09 +0100
-Received: from localhost (localhost) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with internal id JAB03225; Fri, 6 Apr 2001 09:23:06 -0800 (GMT-0800)
-Date: Fri, 6 Apr 2001 09:23:06 -0800 (GMT-0800)
-From: Mail Delivery Subsystem <MAILER-DAEMON@zinfandel.lacita.com>
-Subject: Returned mail: Too many hops 19 (17 max): from <linuxuser-admin@www.linux.org.uk> via [199.164.235.226], to <scoffman@wellpartner.com>
-Message-Id: <200104061723.JAB03225@zinfandel.lacita.com>
-To: <linuxuser-admin@www.linux.org.uk>
-To: postmaster@zinfandel.lacita.com
-MIME-Version: 1.0
-Content-Type: multipart/report; report-type=delivery-status;
-	bo
-Auto-Submitted: auto-generated (failure)
-
-This is a MIME-encapsulated message
-
---JAB03225.986577786/zinfandel.lacita.com
-
-The original message was received at Fri, 6 Apr 2001 09:23:03 -0800 (GMT-0800)
-from [199.164.235.226]
-
-   ----- The following addresses have delivery notifications -----
-<scoffman@wellpartner.com>  (unrecoverable error)
-
-   ----- Transcript of session follows -----
-554 Too many hops 19 (17 max): from <linuxuser-admin@www.linux.org.uk> via [199.164.235.226], to <scoffman@wellpartner.com>
-
---JAB03225.986577786/zinfandel.lacita.com
-Content-Type: message/delivery-status
-
-Reporting-MTA: dns; zinfandel.lacita.com
-Received-From-MTA: dns; [199.164.235.226]
-Arrival-Date: Fri, 6 Apr 2001 09:23:03 -0800 (GMT-0800)
-
-Final-Recipient: rfc822; scoffman@wellpartner.com
-Action: failed
-Status: 5.4.6
-Last-Attempt-Date: Fri, 6 Apr 2001 09:23:06 -0800 (GMT-0800)
-
---JAB03225.986577786/zinfandel.lacita.com
-Content-Type: text/rfc822-headers
-
-Return-Path: linuxuser-admin@www.linux.org.uk
-Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03225 for <scoffman@wellpartner.com>; Fri, 6 Apr 2001 09:23:03 -0800 (GMT-0800)
-Received: from zinfandel.lacita.com ([204.245.199.98])
-	by
-	fo
-Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03221 for <scoffman@wellpartner.com>; Fri, 6 Apr 2001 09:22:18 -0800 (GMT-0800)
-Received: from zinfandel.lacita.com ([204.245.199.98])
-	by
-	fo
-Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03217 for <scoffman@wellpartner.com>; Fri, 6 Apr 2001 09:21:37 -0800 (GMT-0800)
-Received: from zinfandel.lacita.com ([204.245.199.98])
-	by
-	fo
-Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03213 for <scoffman@wellpartner.com>; Fri, 6 Apr 2001 09:20:56 -0800 (GMT-0800)
-Received: from zinfandel.lacita.com ([204.245.199.98])
-	by
-	fo
-Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03209 for <scoffman@wellpartner.com>; Fri, 6 Apr 2001 09:20:15 -0800 (GMT-0800)
-Received: from zinfandel.lacita.com ([204.245.199.98])
-	by
-	fo
-Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03205 for <scoffman@wellpartner.com>; Fri, 6 Apr 2001 09:19:33 -0800 (GMT-0800)
-Received: from zinfandel.lacita.com ([204.245.199.98])
-	by
-	fo
-Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03201 for <scoffman@wellpartner.com>; Fri, 6 Apr 2001 09:18:52 -0800 (GMT-0800)
-Received: from zinfandel.lacita.com ([204.245.199.98])
-	by
-	fo
-Received: from ns1.wellpartner.net ([199.164.235.226]) by zinfandel.lacita.com (8.7.3/8.6.10-MT4.00) with ESMTP id JAA03197 for <scoffman@wellpartner.com>; Fri, 6 Apr 2001 09:17:54 -0800 (GMT-0800)
-Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252])
-	by
-	fo
-Received: from localhost.localdomain
-	([
-	by
-	id
-Received: from [212.1.130.11] (helo=s1.uklinux.net ident=root)
-	by
-	id
-	fo
-Received: from server (ppp-2-22.cvx4.telinco.net [212.1.149.22])
-	by
-	fo
-From: Daniel James <daniel@linuxuser.co.uk>
-Organization: LinuxUser
-To: linuxuser@www.linux.org.uk
-X-Mailer: KMail [version 1.1.99]
-Content-Type: text/plain;
-  c
-MIME-Version: 1.0
-Message-Id: <01040616033903.00962@server>
-Content-Transfer-Encoding: 8bit
-Subject: [LinuxUser] bulletin no. 45
-Sender: linuxuser-admin@www.linux.org.uk
-Errors-To: linuxuser-admin@www.linux.org.uk
-X-BeenThere: linuxuser@www.linux.org.uk
-X-Mailman-Version: 2.0.3
-Precedence: bulk
-List-Help: <mailto:linuxuser-request@www.linux.org.uk?subject=help>
-List-Post: <mailto:linuxuser@www.linux.org.uk>
-List-Subscribe: <http://www.linux.org.uk/mailman/listinfo/linuxuser>,
-	<m
-List-Id: bulletins from LinuxUser magazine <linuxuser.www.linux.org.uk>
-List-Unsubscribe: <http://www.linux.org.uk/mailman/listinfo/linuxuser>,
-	<m
-List-Archive: <http://www.linux.org.uk/pipermail/linuxuser/>
-Date: Fri, 6 Apr 2001 16:03:39 +0100
-
---JAB03225.986577786/zinfandel.lacita.com--
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_26.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_26.txt
deleted file mode 100644
index e13203a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_26.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-Received: from xcar [192.168.0.2] by jeeves.wooster.local
-  (SMTPD32-7.07 EVAL) id AFF92F0214; Sun, 12 May 2002 08:55:37 +0100
-Date: Sun, 12 May 2002 08:56:15 +0100
-From: Father Time <father.time@xcar.wooster.local>
-To: timbo@jeeves.wooster.local
-Subject: IMAP file test
-Message-ID: <6df65d354b.father.time@rpc.wooster.local>
-X-Organization: Home
-User-Agent: Messenger-Pro/2.50a (MsgServe/1.50) (RISC-OS/4.02) POPstar/2.03
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="1618492860--2051301190--113853680"
-Status: R
-X-UIDL: 319998302
-
-This message is in MIME format which your mailer apparently does not support.
-You either require a newer version of your software which supports MIME, or
-a separate MIME decoding utility.  Alternatively, ask the sender of this
-message to resend it in a different format.
-
---1618492860--2051301190--113853680
-Content-Type: text/plain; charset=us-ascii
-
-Simple email with attachment.
-
-
---1618492860--2051301190--113853680
-Content-Type: application/riscos; name="clock.bmp,69c"; type=BMP; load=&fff69c4b; exec=&355dd4d1; access=&03
-Content-Disposition: attachment; filename="clock.bmp"
-Content-Transfer-Encoding: base64
-
-Qk12AgAAAAAAAHYAAAAoAAAAIAAAACAAAAABAAQAAAAAAAAAAADXDQAA1w0AAAAAAAAA
-AAAAAAAAAAAAiAAAiAAAAIiIAIgAAACIAIgAiIgAALu7uwCIiIgAERHdACLuIgAz//8A
-zAAAAN0R3QDu7iIA////AAAAAAAAAAAAAAAAAAAAAAAAAAi3AAAAAAAAADeAAAAAAAAA
-C3ADMzMzMANwAAAAAAAAAAAHMAAAAANwAAAAAAAAAACAMAd3zPfwAwgAAAAAAAAIAwd/
-f8x/f3AwgAAAAAAAgDB0x/f3//zPAwgAAAAAAAcHfM9////8z/AwAAAAAAiwd/f3////
-////A4AAAAAAcEx/f///////zAMAAAAAiwfM9////3///8zwOAAAAAcHf3////B/////
-8DAAAAALB/f3///wd3d3//AwAAAABwTPf//wCQAAD/zAMAAAAAsEx/f///B////8wDAA
-AAAHB39////wf/////AwAAAACwf39///8H/////wMAAAAIcHfM9///B////M8DgAAAAA
-sHTH///wf///xAMAAAAACHB3f3//8H////cDgAAAAAALB3zH//D//M9wMAAAAAAAgLB0
-z39///xHAwgAAAAAAAgLB3d3RHd3cDCAAAAAAAAAgLAHd0R3cAMIAAAAAAAAgAgLcAAA
-AAMwgAgAAAAACDAAAAu7t7cwAAgDgAAAAABzcIAAAAAAAAgDMwAAAAAAN7uwgAAAAAgH
-MzMAAAAACH97tzAAAAALu3c3gAAAAAAL+7tzDABAu7f7cAAAAAAACA+3MA7EQAv/sIAA
-AAAAAAAIAAAAAAAAAIAAAAAA
-
---1618492860--2051301190--113853680--
\ No newline at end of file
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_27.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_27.txt
deleted file mode 100644
index 0a5bd84..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_27.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-Return-Path: <aperson@dom.ain>
-Received: by mail.dom.ain (Postfix, from userid 889)
-	id B9D0AD35DB; Tue,  4 Jun 2002 21:46:59 -0400 (EDT)
-Message-ID: <15613.28051.707126.569693@dom.ain>
-Date: Tue, 4 Jun 2002 21:46:59 -0400
-MIME-Version: 1.0
-Content-Type: text/plain; charset=us-ascii
-Content-Transfer-Encoding: 7bit
-Subject: bug demonstration
-	12345678911234567892123456789312345678941234567895123456789612345678971234567898112345678911234567892123456789112345678911234567892123456789
-	more text
-From: aperson@dom.ain (Anne P. Erson)
-To: bperson@dom.ain (Barney P. Erson)
-
-test
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_28.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_28.txt
deleted file mode 100644
index 270129f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_28.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-From: aperson@dom.ain
-MIME-Version: 1.0
-Content-Type: multipart/digest; boundary=BOUNDARY
-
---BOUNDARY
-Content-Type: message/rfc822
-
-Content-Type: text/plain; charset=us-ascii
-To: aa@bb.org
-From: cc@dd.org
-Subject: ee
-
-message 1
-
---BOUNDARY
-Content-Type: message/rfc822
-
-Content-Type: text/plain; charset=us-ascii
-To: aa@bb.org
-From: cc@dd.org
-Subject: ee
-
-message 2
-
---BOUNDARY--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_29.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_29.txt
deleted file mode 100644
index baa5526..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_29.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Return-Path: <bbb@zzz.org>
-Delivered-To: bbb@zzz.org
-Received: by mail.zzz.org (Postfix, from userid 889)
-	id 27CEAD38CC; Fri,  4 May 2001 14:05:44 -0400 (EDT)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=us-ascii;
-     title*0*="us-ascii'en'This%20is%20even%20more%20";
-     title*1*="%2A%2A%2Afun%2A%2A%2A%20";
-     title*2="isn't it!"
-Content-Transfer-Encoding: 7bit
-Message-ID: <15090.61304.110929.45684@aaa.zzz.org>
-From: bbb@ddd.com (John X. Doe)
-To: bbb@zzz.org
-Subject: This is a test message
-Date: Fri, 4 May 2001 14:05:44 -0400
-
-
-Hi,
-
-Do you like this message?
-
--Me
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_30.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_30.txt
deleted file mode 100644
index 8d18334..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_30.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-From: aperson@dom.ain
-MIME-Version: 1.0
-Content-Type: multipart/digest; boundary=BOUNDARY
-
---BOUNDARY
-
-Content-Type: text/plain; charset=us-ascii
-To: aa@bb.org
-From: cc@dd.org
-Subject: ee
-
-message 1
-
---BOUNDARY
-
-Content-Type: text/plain; charset=us-ascii
-To: aa@bb.org
-From: cc@dd.org
-Subject: ee
-
-message 2
-
---BOUNDARY--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_31.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_31.txt
deleted file mode 100644
index 4e4f751..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_31.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-From: aperson@dom.ain
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary=BOUNDARY_
-
---BOUNDARY
-Content-Type: text/plain
-
-message 1
-
---BOUNDARY
-Content-Type: text/plain
-
-message 2
-
---BOUNDARY--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_32.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_32.txt
deleted file mode 100644
index d2ecacf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_32.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Delivered-To: freebsd-isp@freebsd.org
-Date: Tue, 26 Sep 2000 12:23:03 -0500
-From: Anne Person <aperson@example.com>
-To: Barney Dude <bdude@example.com>
-Subject: Re: Limiting Perl CPU Utilization...
-Mime-Version: 1.0
-Content-Type: text/plain; charset*=ansi-x3.4-1968''us-ascii
-Content-Disposition: inline
-User-Agent: Mutt/1.3.8i
-Sender: owner-freebsd-isp@FreeBSD.ORG
-Precedence: bulk
-X-Loop: FreeBSD.org
-
-Some message.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_33.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_33.txt
deleted file mode 100644
index edaeb5f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_33.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-Delivered-To: freebsd-isp@freebsd.org
-Date: Wed, 27 Sep 2000 11:11:09 -0500
-From: Anne Person <aperson@example.com>
-To: Barney Dude <bdude@example.com>
-Subject: Re: Limiting Perl CPU Utilization...
-Mime-Version: 1.0
-Content-Type: multipart/signed; micalg*=ansi-x3.4-1968''pgp-md5;
-	protocol*=ansi-x3.4-1968''application%2Fpgp-signature;
-	boundary*="ansi-x3.4-1968''EeQfGwPcQSOJBaQU"
-Content-Disposition: inline
-Sender: owner-freebsd-isp@FreeBSD.ORG
-Precedence: bulk
-X-Loop: FreeBSD.org
-
-
---EeQfGwPcQSOJBaQU
-Content-Type: text/plain; charset*=ansi-x3.4-1968''us-ascii
-Content-Disposition: inline
-Content-Transfer-Encoding: quoted-printable
-
-part 1
-
---EeQfGwPcQSOJBaQU
-Content-Type: text/plain
-Content-Disposition: inline
-
-part 2
-
---EeQfGwPcQSOJBaQU--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_34.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_34.txt
deleted file mode 100644
index fabd02d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_34.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-From: aperson@dom.ain
-To: bperson@dom.ain
-Content-Type: multipart/digest; boundary=XYZ
-
---XYZ
-Content-Type: text/plain
-
-
-This is a text plain part that is counter to recommended practice in
-RFC 2046, $5.1.5, but is not illegal
-
---XYZ
-
-From: cperson@dom.ain
-To: dperson@dom.ain
-
-A submessage
-
---XYZ--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_35.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_35.txt
deleted file mode 100644
index ca1b6c4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_35.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-From: aperson@dom.ain
-To: bperson@dom.ain
-Subject: here's something interesting
-counter to RFC 2822, there's no separating newline here
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_36.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_36.txt
deleted file mode 100644
index ec0a940..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_36.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-Mime-Version: 1.0
-Content-Type: Multipart/Mixed; Boundary="NextPart"
-To: IETF-Announce:;
-From: Internet-Drafts@ietf.org
-Subject: I-D ACTION:draft-ietf-mboned-mix-00.txt
-Date: Tue, 22 Dec 1998 16:55:06 -0500
-
---NextPart
-
-Blah blah blah
-
---NextPart
-Content-Type: Multipart/Alternative; Boundary="OtherAccess"
-
---OtherAccess
-Content-Type: Message/External-body;
-	access-type="mail-server";
-	server="mailserv@ietf.org"
-
-Content-Type: text/plain
-Content-ID: <19981222151406.I-D@ietf.org>
-
-ENCODING mime
-FILE /internet-drafts/draft-ietf-mboned-mix-00.txt
-
---OtherAccess
-Content-Type: Message/External-body;
-	name="draft-ietf-mboned-mix-00.txt";
-	site="ftp.ietf.org";
-	access-type="anon-ftp";
-	directory="internet-drafts"
-
-Content-Type: text/plain
-Content-ID: <19981222151406.I-D@ietf.org>
-
-
---OtherAccess--
-
---NextPart--
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_37.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_37.txt
deleted file mode 100644
index 2cd4611..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_37.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Content-Type: multipart/mixed; boundary=ABCDE
-
---ABCDE
-Content-Type: text/x-one
-
-Blah
-
---ABCDE
---ABCDE
-Content-Type: text/x-two
-
-Blah
-
---ABCDE
---ABCDE
---ABCDE
---ABCDE
-Content-Type: text/x-two
-
-Blah
-
---ABCDE--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_38.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_38.txt
deleted file mode 100644
index 826b3d6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_38.txt
+++ /dev/null
@@ -1,101 +0,0 @@
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
-
-------- =_aaaaaaaaaa0
-Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa1"
-Content-ID: <20592.1022586929.1@example.com>
-
-------- =_aaaaaaaaaa1
-Content-Type: multipart/alternative; boundary="----- =_aaaaaaaaaa2"
-Content-ID: <20592.1022586929.2@example.com>
-
-------- =_aaaaaaaaaa2
-Content-Type: text/plain
-Content-ID: <20592.1022586929.3@example.com>
-Content-Description: very tricky
-Content-Transfer-Encoding: 7bit
-
-
-Unlike the test test_nested-multiples-with-internal-boundary, this
-piece of text not only contains the outer boundary tags 
-------- =_aaaaaaaaaa1 
-and 
-------- =_aaaaaaaaaa0 
-but puts them at the start of a line! And, to be even nastier, it
-even includes a couple of end tags, such as this one:
-
-------- =_aaaaaaaaaa1--
-
-and this one, which is from a multipart we haven't even seen yet!
-
-------- =_aaaaaaaaaa4--
-
-This will, I'm sure, cause much breakage of MIME parsers. But, as 
-far as I can tell, it's perfectly legal. I have not yet ever seen
-a case of this in the wild, but I've seen *similar* things.
-
-
-------- =_aaaaaaaaaa2
-Content-Type: application/octet-stream
-Content-ID: <20592.1022586929.4@example.com>
-Content-Description: patch2
-Content-Transfer-Encoding: base64
-
-XXX
-
-------- =_aaaaaaaaaa2--
-
-------- =_aaaaaaaaaa1
-Content-Type: multipart/alternative; boundary="----- =_aaaaaaaaaa3"
-Content-ID: <20592.1022586929.6@example.com>
-
-------- =_aaaaaaaaaa3
-Content-Type: application/octet-stream
-Content-ID: <20592.1022586929.7@example.com>
-Content-Description: patch3
-Content-Transfer-Encoding: base64
-
-XXX
-
-------- =_aaaaaaaaaa3
-Content-Type: application/octet-stream
-Content-ID: <20592.1022586929.8@example.com>
-Content-Description: patch4
-Content-Transfer-Encoding: base64
-
-XXX
-
-------- =_aaaaaaaaaa3--
-
-------- =_aaaaaaaaaa1
-Content-Type: multipart/alternative; boundary="----- =_aaaaaaaaaa4"
-Content-ID: <20592.1022586929.10@example.com>
-
-------- =_aaaaaaaaaa4
-Content-Type: application/octet-stream
-Content-ID: <20592.1022586929.11@example.com>
-Content-Description: patch5
-Content-Transfer-Encoding: base64
-
-XXX
-
-------- =_aaaaaaaaaa4
-Content-Type: application/octet-stream
-Content-ID: <20592.1022586929.12@example.com>
-Content-Description: patch6
-Content-Transfer-Encoding: base64
-
-XXX
-
-------- =_aaaaaaaaaa4--
-
-------- =_aaaaaaaaaa1--
-
-------- =_aaaaaaaaaa0
-Content-Type: text/plain; charset="us-ascii"
-Content-ID: <20592.1022586929.15@example.com>
-
---
-It's never too late to have a happy childhood.
-
-------- =_aaaaaaaaaa0--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_39.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_39.txt
deleted file mode 100644
index aa07fce..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_39.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
-
-------- =_aaaaaaaaaa0
-Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa1"
-Content-ID: <20592.1022586929.1@example.com>
-
-------- =_aaaaaaaaaa1
-Content-Type: multipart/alternative; boundary="----- =_aaaaaaaaaa1"
-Content-ID: <20592.1022586929.2@example.com>
-
-------- =_aaaaaaaaaa1
-Content-Type: application/octet-stream
-Content-ID: <20592.1022586929.3@example.com>
-Content-Description: patch1
-Content-Transfer-Encoding: base64
-
-XXX
-
-------- =_aaaaaaaaaa1
-Content-Type: application/octet-stream
-Content-ID: <20592.1022586929.4@example.com>
-Content-Description: patch2
-Content-Transfer-Encoding: base64
-
-XXX
-
-------- =_aaaaaaaaaa1--
-
-------- =_aaaaaaaaaa1
-Content-Type: multipart/alternative; boundary="----- =_aaaaaaaaaa1"
-Content-ID: <20592.1022586929.6@example.com>
-
-------- =_aaaaaaaaaa1
-Content-Type: application/octet-stream
-Content-ID: <20592.1022586929.7@example.com>
-Content-Description: patch3
-Content-Transfer-Encoding: base64
-
-XXX
-
-------- =_aaaaaaaaaa1
-Content-Type: application/octet-stream
-Content-ID: <20592.1022586929.8@example.com>
-Content-Description: patch4
-Content-Transfer-Encoding: base64
-
-XXX
-
-------- =_aaaaaaaaaa1--
-
-------- =_aaaaaaaaaa1
-Content-Type: multipart/alternative; boundary="----- =_aaaaaaaaaa1"
-Content-ID: <20592.1022586929.10@example.com>
-
-------- =_aaaaaaaaaa1
-Content-Type: application/octet-stream
-Content-ID: <20592.1022586929.11@example.com>
-Content-Description: patch5
-Content-Transfer-Encoding: base64
-
-XXX
-
-------- =_aaaaaaaaaa1
-Content-Type: application/octet-stream
-Content-ID: <20592.1022586929.12@example.com>
-Content-Description: patch6
-Content-Transfer-Encoding: base64
-
-XXX
-
-------- =_aaaaaaaaaa1--
-
-------- =_aaaaaaaaaa1--
-
-------- =_aaaaaaaaaa0
-Content-Type: text/plain; charset="us-ascii"
-Content-ID: <20592.1022586929.15@example.com>
-
---
-It's never too late to have a happy childhood.
-
-------- =_aaaaaaaaaa0--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_40.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_40.txt
deleted file mode 100644
index 0d68048..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_40.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-MIME-Version: 1.0
-Content-Type: text/html; boundary="--961284236552522269"
-
-----961284236552522269
-Content-Type: text/html;
-Content-Transfer-Encoding: 7Bit
-
-<html></html>
-
-----961284236552522269--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_41.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_41.txt
deleted file mode 100644
index 9ceda28..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_41.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-From: "Allison Dunlap" <xxx@example.com>
-To: yyy@example.com
-Subject: 64423
-Date: Sun, 11 Jul 2004 16:09:27 -0300
-MIME-Version: 1.0
-Content-Type: multipart/alternative;
-
-Blah blah blah
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_42.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_42.txt
deleted file mode 100644
index 0c69d06..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_42.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Content-Type: multipart/mixed; boundary="AAA"
-From: Mail Delivery Subsystem <xxx@example.com>
-To: yyy@example.com
-
-This is a MIME-encapsulated message
-
---AAA
-
-Stuff
-
---AAA
-Content-Type: message/rfc822
-
-From: webmaster@python.org
-To: zzz@example.com
-Content-Type: multipart/mixed; boundary="BBB"
-
---BBB--
-
---AAA--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_43.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_43.txt
deleted file mode 100644
index 1224f5f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_43.txt
+++ /dev/null
@@ -1,217 +0,0 @@
-From SRS0=aO/p=ON=bag.python.org=None@bounce2.pobox.com  Fri Nov 26 21:40:36 2004
-X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
-	[nil nil nil nil nil nil nil "MAILER DAEMON <>" "MAILER DAEMON <>" nil nil "Banned file: auto__mail.python.bat in mail from you" "^From:" nil nil nil nil "Banned file: auto__mail.python.bat in mail from you" nil nil nil nil nil nil nil]
-	nil)
-MIME-Version: 1.0
-Message-Id: <edab.7804f5cb8070@python.org>
-Content-Type: multipart/report; report-type=delivery-status;
-    charset=utf-8;
-    boundary="----------=_1101526904-1956-5"
-X-Virus-Scanned: by XS4ALL Virus Scanner
-X-UIDL: 4\G!!!<c"!UV["!M7C!!
-From: MAILER DAEMON <>
-To: <webmaster@python.org>
-Subject: Banned file: auto__mail.python.bat in mail from you
-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-This is a multi-part message in MIME format...
-
-------------=_1101526904-1956-5
-Content-Type: text/plain; charset="utf-8"
-Content-Disposition: inline
-Content-Transfer-Encoding: 7bit
-
-BANNED FILENAME ALERT
-
-Your message to: xxxxxxx@dot.ca.gov, xxxxxxxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxx@dot.ca.gov, xxxxxx@dot.ca.gov, xxxxxxxxxxxxxxxx@dot.ca.gov, xxxxxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxxxxxxxx@dot.ca.gov, xxxxxxxxxxxx@dot.ca.gov, xxxxxxx@dot.ca.gov, xxxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxx@dot.ca.gov, xxx@dot.ca.gov, xxxxxxx@dot.ca.gov, xxxxxxx@dot.ca.gov, xxxxxxxxxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxxx@dot.ca.gov, xxx@dot.ca.gov, xxxxxxxx@dot.ca.gov, xxxxxxxxxxxxx@dot.ca.gov, xxxxxxxxxxxxx@dot.ca.gov, xxxxxxxxxxx@dot.ca.gov, xxxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxxxxxxxx@dot.ca.gov, xxxxxxx@dot.ca.gov, xxxxxxxxxxxxxxx@dot.ca.gov, xxxxxxxxxxxxx@dot.ca.gov, xxxx@dot.ca.gov, xxxxxxxx@dot.ca.gov, xxxxxxxxxx@dot.ca.gov, xxxxxxxxxxxxxxxxxx@dot.ca.gov
-was blocked by our Spam Firewall. The email you sent with the following subject has NOT BEEN DELIVERED:
-
-Subject: Delivery_failure_notice
-
-An attachment in that mail was of a file type that the Spam Firewall is set to block.
-
-
-
-------------=_1101526904-1956-5
-Content-Type: message/delivery-status
-Content-Disposition: inline
-Content-Transfer-Encoding: 7bit
-Content-Description: Delivery error report
-
-Reporting-MTA: dns; sacspam01.dot.ca.gov
-Received-From-MTA: smtp; sacspam01.dot.ca.gov ([127.0.0.1])
-Arrival-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxxxxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxxxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-Final-Recipient: rfc822; xxxxxxx@dot.ca.gov
-Action: failed
-Status: 5.7.1
-Diagnostic-Code: smtp; 550 5.7.1 Message content rejected, id=01956-02-2 - BANNED: auto__mail.python.bat
-Last-Attempt-Date: Fri, 26 Nov 2004 19:41:44 -0800 (PST)
-
-------------=_1101526904-1956-5
-Content-Type: text/rfc822-headers
-Content-Disposition: inline
-Content-Transfer-Encoding: 7bit
-Content-Description: Undelivered-message headers
-
-Received: from kgsav.org (ppp-70-242-162-63.dsl.spfdmo.swbell.net [70.242.162.63])
-	by sacspam01.dot.ca.gov (Spam Firewall) with SMTP
-	id A232AD03DE3A; Fri, 26 Nov 2004 19:41:35 -0800 (PST)
-From: webmaster@python.org
-To: xxxxx@dot.ca.gov
-Date: Sat, 27 Nov 2004 03:35:30 UTC
-Subject: Delivery_failure_notice
-Importance: Normal
-X-Priority: 3 (Normal)
-X-MSMail-Priority: Normal
-Message-ID: <edab.7804f5cb8070@python.org>
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="====67bd2b7a5.f99f7"
-Content-Transfer-Encoding: 7bit
-
-------------=_1101526904-1956-5--
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_44.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_44.txt
deleted file mode 100644
index c827ef9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_44.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-Return-Path: <barry@python.org>
-Delivered-To: barry@python.org
-Received: by mail.python.org (Postfix, from userid 889)
-	id C2BF0D37C6; Tue, 11 Sep 2001 00:05:05 -0400 (EDT)
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="h90VIIIKmx"
-Content-Transfer-Encoding: 7bit
-Message-ID: <15261.36209.358846.118674@anthem.python.org>
-From: barry@python.org (Barry A. Warsaw)
-To: barry@python.org
-Subject: a simple multipart
-Date: Tue, 11 Sep 2001 00:05:05 -0400
-X-Mailer: VM 6.95 under 21.4 (patch 4) "Artificial Intelligence" XEmacs Lucid
-X-Attribution: BAW
-X-Oblique-Strategy: Make a door into a window
-
-
---h90VIIIKmx
-Content-Type: text/plain; name="msg.txt"
-Content-Transfer-Encoding: 7bit
-
-a simple kind of mirror
-to reflect upon our own
-
---h90VIIIKmx
-Content-Type: text/plain; name="msg.txt"
-Content-Transfer-Encoding: 7bit
-
-a simple kind of mirror
-to reflect upon our own
-
---h90VIIIKmx--
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_45.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_45.txt
deleted file mode 100644
index 9034f36..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_45.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-From: <foo@bar.baz>
-To: <baz@bar.foo>
-Subject: test
-X-Long-Line: Some really long line contains a lot of text and thus has to be rewrapped because it is some
-	really long
-        line
-MIME-Version: 1.0
-Content-Type: multipart/signed; boundary="borderline";
-	protocol="application/pgp-signature"; micalg=pgp-sha1
-
-This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
---borderline
-Content-Type: text/plain
-X-Long-Line: Another really long line contains a lot of text and thus has to be rewrapped because it is another
-	really long
-        line
-
-This is the signed contents.
-
---borderline
-Content-Type: application/pgp-signature; name="signature.asc"
-Content-Description: OpenPGP digital signature
-Content-Disposition: attachment; filename="signature.asc"
-
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.6 (GNU/Linux)
-
-iD8DBQFG03voRhp6o4m9dFsRApSZAKCCAN3IkJlVRg6NvAiMHlvvIuMGPQCeLZtj
-FGwfnRHFBFO/S4/DKysm0lI=
-=t7+s
------END PGP SIGNATURE-----
-
---borderline--
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_46.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_46.txt
deleted file mode 100644
index 1018020..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/data/msg_46.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-Return-Path: <sender@example.net>
-Delivery-Date: Mon, 08 Feb 2010 14:05:16 +0100
-Received: from example.org (example.org [64.5.53.58])
-    by example.net (node=mxbap2) with ESMTP (Nemesis)
-    id UNIQUE for someone@example.com; Mon, 08 Feb 2010 14:05:16 +0100
-Date: Mon, 01 Feb 2010 12:21:16 +0100
-From: "Sender" <sender@example.net>
-To: <someone@example.com>
-Subject: GroupwiseForwardingTest
-Mime-Version: 1.0
-Content-Type: message/rfc822
-
-Return-path: <sender@example.net>
-Message-ID: <4B66B890.4070408@teconcept.de>
-Date: Mon, 01 Feb 2010 12:18:40 +0100
-From: "Dr. Sender" <sender@example.net>
-MIME-Version: 1.0
-To: "Recipient" <recipient@example.com>
-Subject: GroupwiseForwardingTest
-Content-Type: text/plain; charset=ISO-8859-15
-Content-Transfer-Encoding: 7bit
-
-Testing email forwarding with Groupwise 1.2.2010
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email.py
deleted file mode 100644
index 4047f7e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email.py
+++ /dev/null
@@ -1,3529 +0,0 @@
-# Copyright (C) 2001-2010 Python Software Foundation
-# Contact: email-sig@python.org
-# email package unit tests
-
-import os
-import sys
-import time
-import base64
-import difflib
-import unittest
-import warnings
-from cStringIO import StringIO
-
-import email
-
-from email.Charset import Charset
-from email.Header import Header, decode_header, make_header
-from email.Parser import Parser, HeaderParser
-from email.Generator import Generator, DecodedGenerator
-from email.Message import Message
-from email.MIMEAudio import MIMEAudio
-from email.MIMEText import MIMEText
-from email.MIMEImage import MIMEImage
-from email.MIMEBase import MIMEBase
-from email.MIMEMessage import MIMEMessage
-from email.MIMEMultipart import MIMEMultipart
-from email import Utils
-from email import Errors
-from email import Encoders
-from email import Iterators
-from email import base64MIME
-from email import quopriMIME
-
-from test.test_support import findfile, run_unittest
-from email.test import __file__ as landmark
-
-
-NL = '\n'
-EMPTYSTRING = ''
-SPACE = ' '
-
-
-
-def openfile(filename, mode='r'):
-    path = os.path.join(os.path.dirname(landmark), 'data', filename)
-    return open(path, mode)
-
-
-
-# Base test class
-class TestEmailBase(unittest.TestCase):
-    def ndiffAssertEqual(self, first, second):
-        """Like assertEqual except use ndiff for readable output."""
-        if first != second:
-            sfirst = str(first)
-            ssecond = str(second)
-            diff = difflib.ndiff(sfirst.splitlines(), ssecond.splitlines())
-            fp = StringIO()
-            print >> fp, NL, NL.join(diff)
-            raise self.failureException, fp.getvalue()
-
-    def _msgobj(self, filename):
-        fp = openfile(findfile(filename))
-        try:
-            msg = email.message_from_file(fp)
-        finally:
-            fp.close()
-        return msg
-
-
-
-# Test various aspects of the Message class's API
-class TestMessageAPI(TestEmailBase):
-    def test_get_all(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_20.txt')
-        eq(msg.get_all('cc'), ['ccc@zzz.org', 'ddd@zzz.org', 'eee@zzz.org'])
-        eq(msg.get_all('xx', 'n/a'), 'n/a')
-
-    def test_getset_charset(self):
-        eq = self.assertEqual
-        msg = Message()
-        eq(msg.get_charset(), None)
-        charset = Charset('iso-8859-1')
-        msg.set_charset(charset)
-        eq(msg['mime-version'], '1.0')
-        eq(msg.get_content_type(), 'text/plain')
-        eq(msg['content-type'], 'text/plain; charset="iso-8859-1"')
-        eq(msg.get_param('charset'), 'iso-8859-1')
-        eq(msg['content-transfer-encoding'], 'quoted-printable')
-        eq(msg.get_charset().input_charset, 'iso-8859-1')
-        # Remove the charset
-        msg.set_charset(None)
-        eq(msg.get_charset(), None)
-        eq(msg['content-type'], 'text/plain')
-        # Try adding a charset when there's already MIME headers present
-        msg = Message()
-        msg['MIME-Version'] = '2.0'
-        msg['Content-Type'] = 'text/x-weird'
-        msg['Content-Transfer-Encoding'] = 'quinted-puntable'
-        msg.set_charset(charset)
-        eq(msg['mime-version'], '2.0')
-        eq(msg['content-type'], 'text/x-weird; charset="iso-8859-1"')
-        eq(msg['content-transfer-encoding'], 'quinted-puntable')
-
-    def test_set_charset_from_string(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg.set_charset('us-ascii')
-        eq(msg.get_charset().input_charset, 'us-ascii')
-        eq(msg['content-type'], 'text/plain; charset="us-ascii"')
-
-    def test_set_payload_with_charset(self):
-        msg = Message()
-        charset = Charset('iso-8859-1')
-        msg.set_payload('This is a string payload', charset)
-        self.assertEqual(msg.get_charset().input_charset, 'iso-8859-1')
-
-    def test_get_charsets(self):
-        eq = self.assertEqual
-
-        msg = self._msgobj('msg_08.txt')
-        charsets = msg.get_charsets()
-        eq(charsets, [None, 'us-ascii', 'iso-8859-1', 'iso-8859-2', 'koi8-r'])
-
-        msg = self._msgobj('msg_09.txt')
-        charsets = msg.get_charsets('dingbat')
-        eq(charsets, ['dingbat', 'us-ascii', 'iso-8859-1', 'dingbat',
-                      'koi8-r'])
-
-        msg = self._msgobj('msg_12.txt')
-        charsets = msg.get_charsets()
-        eq(charsets, [None, 'us-ascii', 'iso-8859-1', None, 'iso-8859-2',
-                      'iso-8859-3', 'us-ascii', 'koi8-r'])
-
-    def test_get_filename(self):
-        eq = self.assertEqual
-
-        msg = self._msgobj('msg_04.txt')
-        filenames = [p.get_filename() for p in msg.get_payload()]
-        eq(filenames, ['msg.txt', 'msg.txt'])
-
-        msg = self._msgobj('msg_07.txt')
-        subpart = msg.get_payload(1)
-        eq(subpart.get_filename(), 'dingusfish.gif')
-
-    def test_get_filename_with_name_parameter(self):
-        eq = self.assertEqual
-
-        msg = self._msgobj('msg_44.txt')
-        filenames = [p.get_filename() for p in msg.get_payload()]
-        eq(filenames, ['msg.txt', 'msg.txt'])
-
-    def test_get_boundary(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_07.txt')
-        # No quotes!
-        eq(msg.get_boundary(), 'BOUNDARY')
-
-    def test_set_boundary(self):
-        eq = self.assertEqual
-        # This one has no existing boundary parameter, but the Content-Type:
-        # header appears fifth.
-        msg = self._msgobj('msg_01.txt')
-        msg.set_boundary('BOUNDARY')
-        header, value = msg.items()[4]
-        eq(header.lower(), 'content-type')
-        eq(value, 'text/plain; charset="us-ascii"; boundary="BOUNDARY"')
-        # This one has a Content-Type: header, with a boundary, stuck in the
-        # middle of its headers.  Make sure the order is preserved; it should
-        # be fifth.
-        msg = self._msgobj('msg_04.txt')
-        msg.set_boundary('BOUNDARY')
-        header, value = msg.items()[4]
-        eq(header.lower(), 'content-type')
-        eq(value, 'multipart/mixed; boundary="BOUNDARY"')
-        # And this one has no Content-Type: header at all.
-        msg = self._msgobj('msg_03.txt')
-        self.assertRaises(Errors.HeaderParseError,
-                          msg.set_boundary, 'BOUNDARY')
-
-    def test_make_boundary(self):
-        msg = MIMEMultipart('form-data')
-        # Note that when the boundary gets created is an implementation
-        # detail and might change.
-        self.assertEqual(msg.items()[0][1], 'multipart/form-data')
-        # Trigger creation of boundary
-        msg.as_string()
-        self.assertEqual(msg.items()[0][1][:33],
-                        'multipart/form-data; boundary="==')
-        # XXX: there ought to be tests of the uniqueness of the boundary, too.
-
-    def test_message_rfc822_only(self):
-        # Issue 7970: message/rfc822 not in multipart parsed by
-        # HeaderParser caused an exception when flattened.
-        fp = openfile(findfile('msg_46.txt'))
-        msgdata = fp.read()
-        parser = email.Parser.HeaderParser()
-        msg = parser.parsestr(msgdata)
-        out = StringIO()
-        gen = email.Generator.Generator(out, True, 0)
-        gen.flatten(msg, False)
-        self.assertEqual(out.getvalue(), msgdata)
-
-    def test_get_decoded_payload(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_10.txt')
-        # The outer message is a multipart
-        eq(msg.get_payload(decode=True), None)
-        # Subpart 1 is 7bit encoded
-        eq(msg.get_payload(0).get_payload(decode=True),
-           'This is a 7bit encoded message.\n')
-        # Subpart 2 is quopri
-        eq(msg.get_payload(1).get_payload(decode=True),
-           '\xa1This is a Quoted Printable encoded message!\n')
-        # Subpart 3 is base64
-        eq(msg.get_payload(2).get_payload(decode=True),
-           'This is a Base64 encoded message.')
-        # Subpart 4 is base64 with a trailing newline, which
-        # used to be stripped (issue 7143).
-        eq(msg.get_payload(3).get_payload(decode=True),
-           'This is a Base64 encoded message.\n')
-        # Subpart 5 has no Content-Transfer-Encoding: header.
-        eq(msg.get_payload(4).get_payload(decode=True),
-           'This has no Content-Transfer-Encoding: header.\n')
-
-    def test_get_decoded_uu_payload(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg.set_payload('begin 666 -\n+:&5L;&\\@=V]R;&0 \n \nend\n')
-        for cte in ('x-uuencode', 'uuencode', 'uue', 'x-uue'):
-            msg['content-transfer-encoding'] = cte
-            eq(msg.get_payload(decode=True), 'hello world')
-        # Now try some bogus data
-        msg.set_payload('foo')
-        eq(msg.get_payload(decode=True), 'foo')
-
-    def test_decode_bogus_uu_payload_quietly(self):
-        msg = Message()
-        msg.set_payload('begin 664 foo.txt\n%<W1F=0000H \n \nend\n')
-        msg['Content-Transfer-Encoding'] = 'x-uuencode'
-        old_stderr = sys.stderr
-        try:
-            sys.stderr = sfp = StringIO()
-            # We don't care about the payload
-            msg.get_payload(decode=True)
-        finally:
-            sys.stderr = old_stderr
-        self.assertEqual(sfp.getvalue(), '')
-
-    def test_decoded_generator(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_07.txt')
-        fp = openfile('msg_17.txt')
-        try:
-            text = fp.read()
-        finally:
-            fp.close()
-        s = StringIO()
-        g = DecodedGenerator(s)
-        g.flatten(msg)
-        eq(s.getvalue(), text)
-
-    def test__contains__(self):
-        msg = Message()
-        msg['From'] = 'Me'
-        msg['to'] = 'You'
-        # Check for case insensitivity
-        self.assertTrue('from' in msg)
-        self.assertTrue('From' in msg)
-        self.assertTrue('FROM' in msg)
-        self.assertTrue('to' in msg)
-        self.assertTrue('To' in msg)
-        self.assertTrue('TO' in msg)
-
-    def test_as_string(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_01.txt')
-        fp = openfile('msg_01.txt')
-        try:
-            # BAW 30-Mar-2009 Evil be here.  So, the generator is broken with
-            # respect to long line breaking.  It's also not idempotent when a
-            # header from a parsed message is continued with tabs rather than
-            # spaces.  Before we fixed bug 1974 it was reversedly broken,
-            # i.e. headers that were continued with spaces got continued with
-            # tabs.  For Python 2.x there's really no good fix and in Python
-            # 3.x all this stuff is re-written to be right(er).  Chris Withers
-            # convinced me that using space as the default continuation
-            # character is less bad for more applications.
-            text = fp.read().replace('\t', ' ')
-        finally:
-            fp.close()
-        eq(text, msg.as_string())
-        fullrepr = str(msg)
-        lines = fullrepr.split('\n')
-        self.assertTrue(lines[0].startswith('From '))
-        eq(text, NL.join(lines[1:]))
-
-    def test_bad_param(self):
-        msg = email.message_from_string("Content-Type: blarg; baz; boo\n")
-        self.assertEqual(msg.get_param('baz'), '')
-
-    def test_missing_filename(self):
-        msg = email.message_from_string("From: foo\n")
-        self.assertEqual(msg.get_filename(), None)
-
-    def test_bogus_filename(self):
-        msg = email.message_from_string(
-        "Content-Disposition: blarg; filename\n")
-        self.assertEqual(msg.get_filename(), '')
-
-    def test_missing_boundary(self):
-        msg = email.message_from_string("From: foo\n")
-        self.assertEqual(msg.get_boundary(), None)
-
-    def test_get_params(self):
-        eq = self.assertEqual
-        msg = email.message_from_string(
-            'X-Header: foo=one; bar=two; baz=three\n')
-        eq(msg.get_params(header='x-header'),
-           [('foo', 'one'), ('bar', 'two'), ('baz', 'three')])
-        msg = email.message_from_string(
-            'X-Header: foo; bar=one; baz=two\n')
-        eq(msg.get_params(header='x-header'),
-           [('foo', ''), ('bar', 'one'), ('baz', 'two')])
-        eq(msg.get_params(), None)
-        msg = email.message_from_string(
-            'X-Header: foo; bar="one"; baz=two\n')
-        eq(msg.get_params(header='x-header'),
-           [('foo', ''), ('bar', 'one'), ('baz', 'two')])
-
-    def test_get_param_liberal(self):
-        msg = Message()
-        msg['Content-Type'] = 'Content-Type: Multipart/mixed; boundary = "CPIMSSMTPC06p5f3tG"'
-        self.assertEqual(msg.get_param('boundary'), 'CPIMSSMTPC06p5f3tG')
-
-    def test_get_param(self):
-        eq = self.assertEqual
-        msg = email.message_from_string(
-            "X-Header: foo=one; bar=two; baz=three\n")
-        eq(msg.get_param('bar', header='x-header'), 'two')
-        eq(msg.get_param('quuz', header='x-header'), None)
-        eq(msg.get_param('quuz'), None)
-        msg = email.message_from_string(
-            'X-Header: foo; bar="one"; baz=two\n')
-        eq(msg.get_param('foo', header='x-header'), '')
-        eq(msg.get_param('bar', header='x-header'), 'one')
-        eq(msg.get_param('baz', header='x-header'), 'two')
-        # XXX: We are not RFC-2045 compliant!  We cannot parse:
-        # msg["Content-Type"] = 'text/plain; weird="hey; dolly? [you] @ <\\"home\\">?"'
-        # msg.get_param("weird")
-        # yet.
-
-    def test_get_param_funky_continuation_lines(self):
-        msg = self._msgobj('msg_22.txt')
-        self.assertEqual(msg.get_payload(1).get_param('name'), 'wibble.JPG')
-
-    def test_get_param_with_semis_in_quotes(self):
-        msg = email.message_from_string(
-            'Content-Type: image/pjpeg; name="Jim&amp;&amp;Jill"\n')
-        self.assertEqual(msg.get_param('name'), 'Jim&amp;&amp;Jill')
-        self.assertEqual(msg.get_param('name', unquote=False),
-                         '"Jim&amp;&amp;Jill"')
-
-    def test_get_param_with_quotes(self):
-        msg = email.message_from_string(
-            'Content-Type: foo; bar*0="baz\\"foobar"; bar*1="\\"baz"')
-        self.assertEqual(msg.get_param('bar'), 'baz"foobar"baz')
-        msg = email.message_from_string(
-            "Content-Type: foo; bar*0=\"baz\\\"foobar\"; bar*1=\"\\\"baz\"")
-        self.assertEqual(msg.get_param('bar'), 'baz"foobar"baz')
-
-    def test_has_key(self):
-        msg = email.message_from_string('Header: exists')
-        self.assertTrue(msg.has_key('header'))
-        self.assertTrue(msg.has_key('Header'))
-        self.assertTrue(msg.has_key('HEADER'))
-        self.assertFalse(msg.has_key('headeri'))
-
-    def test_set_param(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg.set_param('charset', 'iso-2022-jp')
-        eq(msg.get_param('charset'), 'iso-2022-jp')
-        msg.set_param('importance', 'high value')
-        eq(msg.get_param('importance'), 'high value')
-        eq(msg.get_param('importance', unquote=False), '"high value"')
-        eq(msg.get_params(), [('text/plain', ''),
-                              ('charset', 'iso-2022-jp'),
-                              ('importance', 'high value')])
-        eq(msg.get_params(unquote=False), [('text/plain', ''),
-                                       ('charset', '"iso-2022-jp"'),
-                                       ('importance', '"high value"')])
-        msg.set_param('charset', 'iso-9999-xx', header='X-Jimmy')
-        eq(msg.get_param('charset', header='X-Jimmy'), 'iso-9999-xx')
-
-    def test_del_param(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_05.txt')
-        eq(msg.get_params(),
-           [('multipart/report', ''), ('report-type', 'delivery-status'),
-            ('boundary', 'D1690A7AC1.996856090/mail.example.com')])
-        old_val = msg.get_param("report-type")
-        msg.del_param("report-type")
-        eq(msg.get_params(),
-           [('multipart/report', ''),
-            ('boundary', 'D1690A7AC1.996856090/mail.example.com')])
-        msg.set_param("report-type", old_val)
-        eq(msg.get_params(),
-           [('multipart/report', ''),
-            ('boundary', 'D1690A7AC1.996856090/mail.example.com'),
-            ('report-type', old_val)])
-
-    def test_del_param_on_other_header(self):
-        msg = Message()
-        msg.add_header('Content-Disposition', 'attachment', filename='bud.gif')
-        msg.del_param('filename', 'content-disposition')
-        self.assertEqual(msg['content-disposition'], 'attachment')
-
-    def test_set_type(self):
-        eq = self.assertEqual
-        msg = Message()
-        self.assertRaises(ValueError, msg.set_type, 'text')
-        msg.set_type('text/plain')
-        eq(msg['content-type'], 'text/plain')
-        msg.set_param('charset', 'us-ascii')
-        eq(msg['content-type'], 'text/plain; charset="us-ascii"')
-        msg.set_type('text/html')
-        eq(msg['content-type'], 'text/html; charset="us-ascii"')
-
-    def test_set_type_on_other_header(self):
-        msg = Message()
-        msg['X-Content-Type'] = 'text/plain'
-        msg.set_type('application/octet-stream', 'X-Content-Type')
-        self.assertEqual(msg['x-content-type'], 'application/octet-stream')
-
-    def test_get_content_type_missing(self):
-        msg = Message()
-        self.assertEqual(msg.get_content_type(), 'text/plain')
-
-    def test_get_content_type_missing_with_default_type(self):
-        msg = Message()
-        msg.set_default_type('message/rfc822')
-        self.assertEqual(msg.get_content_type(), 'message/rfc822')
-
-    def test_get_content_type_from_message_implicit(self):
-        msg = self._msgobj('msg_30.txt')
-        self.assertEqual(msg.get_payload(0).get_content_type(),
-                         'message/rfc822')
-
-    def test_get_content_type_from_message_explicit(self):
-        msg = self._msgobj('msg_28.txt')
-        self.assertEqual(msg.get_payload(0).get_content_type(),
-                         'message/rfc822')
-
-    def test_get_content_type_from_message_text_plain_implicit(self):
-        msg = self._msgobj('msg_03.txt')
-        self.assertEqual(msg.get_content_type(), 'text/plain')
-
-    def test_get_content_type_from_message_text_plain_explicit(self):
-        msg = self._msgobj('msg_01.txt')
-        self.assertEqual(msg.get_content_type(), 'text/plain')
-
-    def test_get_content_maintype_missing(self):
-        msg = Message()
-        self.assertEqual(msg.get_content_maintype(), 'text')
-
-    def test_get_content_maintype_missing_with_default_type(self):
-        msg = Message()
-        msg.set_default_type('message/rfc822')
-        self.assertEqual(msg.get_content_maintype(), 'message')
-
-    def test_get_content_maintype_from_message_implicit(self):
-        msg = self._msgobj('msg_30.txt')
-        self.assertEqual(msg.get_payload(0).get_content_maintype(), 'message')
-
-    def test_get_content_maintype_from_message_explicit(self):
-        msg = self._msgobj('msg_28.txt')
-        self.assertEqual(msg.get_payload(0).get_content_maintype(), 'message')
-
-    def test_get_content_maintype_from_message_text_plain_implicit(self):
-        msg = self._msgobj('msg_03.txt')
-        self.assertEqual(msg.get_content_maintype(), 'text')
-
-    def test_get_content_maintype_from_message_text_plain_explicit(self):
-        msg = self._msgobj('msg_01.txt')
-        self.assertEqual(msg.get_content_maintype(), 'text')
-
-    def test_get_content_subtype_missing(self):
-        msg = Message()
-        self.assertEqual(msg.get_content_subtype(), 'plain')
-
-    def test_get_content_subtype_missing_with_default_type(self):
-        msg = Message()
-        msg.set_default_type('message/rfc822')
-        self.assertEqual(msg.get_content_subtype(), 'rfc822')
-
-    def test_get_content_subtype_from_message_implicit(self):
-        msg = self._msgobj('msg_30.txt')
-        self.assertEqual(msg.get_payload(0).get_content_subtype(), 'rfc822')
-
-    def test_get_content_subtype_from_message_explicit(self):
-        msg = self._msgobj('msg_28.txt')
-        self.assertEqual(msg.get_payload(0).get_content_subtype(), 'rfc822')
-
-    def test_get_content_subtype_from_message_text_plain_implicit(self):
-        msg = self._msgobj('msg_03.txt')
-        self.assertEqual(msg.get_content_subtype(), 'plain')
-
-    def test_get_content_subtype_from_message_text_plain_explicit(self):
-        msg = self._msgobj('msg_01.txt')
-        self.assertEqual(msg.get_content_subtype(), 'plain')
-
-    def test_get_content_maintype_error(self):
-        msg = Message()
-        msg['Content-Type'] = 'no-slash-in-this-string'
-        self.assertEqual(msg.get_content_maintype(), 'text')
-
-    def test_get_content_subtype_error(self):
-        msg = Message()
-        msg['Content-Type'] = 'no-slash-in-this-string'
-        self.assertEqual(msg.get_content_subtype(), 'plain')
-
-    def test_replace_header(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg.add_header('First', 'One')
-        msg.add_header('Second', 'Two')
-        msg.add_header('Third', 'Three')
-        eq(msg.keys(), ['First', 'Second', 'Third'])
-        eq(msg.values(), ['One', 'Two', 'Three'])
-        msg.replace_header('Second', 'Twenty')
-        eq(msg.keys(), ['First', 'Second', 'Third'])
-        eq(msg.values(), ['One', 'Twenty', 'Three'])
-        msg.add_header('First', 'Eleven')
-        msg.replace_header('First', 'One Hundred')
-        eq(msg.keys(), ['First', 'Second', 'Third', 'First'])
-        eq(msg.values(), ['One Hundred', 'Twenty', 'Three', 'Eleven'])
-        self.assertRaises(KeyError, msg.replace_header, 'Fourth', 'Missing')
-
-    def test_broken_base64_payload(self):
-        x = 'AwDp0P7//y6LwKEAcPa/6Q=9'
-        msg = Message()
-        msg['content-type'] = 'audio/x-midi'
-        msg['content-transfer-encoding'] = 'base64'
-        msg.set_payload(x)
-        self.assertEqual(msg.get_payload(decode=True), x)
-
-    def test_get_content_charset(self):
-        msg = Message()
-        msg.set_charset('us-ascii')
-        self.assertEqual('us-ascii', msg.get_content_charset())
-        msg.set_charset(u'us-ascii')
-        self.assertEqual('us-ascii', msg.get_content_charset())
-
-    # Issue 5871: reject an attempt to embed a header inside a header value
-    # (header injection attack).
-    def test_embeded_header_via_Header_rejected(self):
-        msg = Message()
-        msg['Dummy'] = Header('dummy\nX-Injected-Header: test')
-        self.assertRaises(Errors.HeaderParseError, msg.as_string)
-
-    def test_embeded_header_via_string_rejected(self):
-        msg = Message()
-        msg['Dummy'] = 'dummy\nX-Injected-Header: test'
-        self.assertRaises(Errors.HeaderParseError, msg.as_string)
-
-
-# Test the email.Encoders module
-class TestEncoders(unittest.TestCase):
-    def test_encode_empty_payload(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg.set_charset('us-ascii')
-        eq(msg['content-transfer-encoding'], '7bit')
-
-    def test_default_cte(self):
-        eq = self.assertEqual
-        # 7bit data and the default us-ascii _charset
-        msg = MIMEText('hello world')
-        eq(msg['content-transfer-encoding'], '7bit')
-        # Similar, but with 8bit data
-        msg = MIMEText('hello \xf8 world')
-        eq(msg['content-transfer-encoding'], '8bit')
-        # And now with a different charset
-        msg = MIMEText('hello \xf8 world', _charset='iso-8859-1')
-        eq(msg['content-transfer-encoding'], 'quoted-printable')
-
-    def test_encode7or8bit(self):
-        # Make sure a charset whose input character set is 8bit but
-        # whose output character set is 7bit gets a transfer-encoding
-        # of 7bit.
-        eq = self.assertEqual
-        msg = email.MIMEText.MIMEText('\xca\xb8', _charset='euc-jp')
-        eq(msg['content-transfer-encoding'], '7bit')
-
-
-# Test long header wrapping
-class TestLongHeaders(TestEmailBase):
-    def test_split_long_continuation(self):
-        eq = self.ndiffAssertEqual
-        msg = email.message_from_string("""\
-Subject: bug demonstration
-\t12345678911234567892123456789312345678941234567895123456789612345678971234567898112345678911234567892123456789112345678911234567892123456789
-\tmore text
-
-test
-""")
-        sfp = StringIO()
-        g = Generator(sfp)
-        g.flatten(msg)
-        eq(sfp.getvalue(), """\
-Subject: bug demonstration
- 12345678911234567892123456789312345678941234567895123456789612345678971234567898112345678911234567892123456789112345678911234567892123456789
- more text
-
-test
-""")
-
-    def test_another_long_almost_unsplittable_header(self):
-        eq = self.ndiffAssertEqual
-        hstr = """\
-bug demonstration
-\t12345678911234567892123456789312345678941234567895123456789612345678971234567898112345678911234567892123456789112345678911234567892123456789
-\tmore text"""
-        h = Header(hstr, continuation_ws='\t')
-        eq(h.encode(), """\
-bug demonstration
-\t12345678911234567892123456789312345678941234567895123456789612345678971234567898112345678911234567892123456789112345678911234567892123456789
-\tmore text""")
-        h = Header(hstr)
-        eq(h.encode(), """\
-bug demonstration
- 12345678911234567892123456789312345678941234567895123456789612345678971234567898112345678911234567892123456789112345678911234567892123456789
- more text""")
-
-    def test_long_nonstring(self):
-        eq = self.ndiffAssertEqual
-        g = Charset("iso-8859-1")
-        cz = Charset("iso-8859-2")
-        utf8 = Charset("utf-8")
-        g_head = "Die Mieter treten hier ein werden mit einem Foerderband komfortabel den Korridor entlang, an s\xfcdl\xfcndischen Wandgem\xe4lden vorbei, gegen die rotierenden Klingen bef\xf6rdert. "
-        cz_head = "Finan\xe8ni metropole se hroutily pod tlakem jejich d\xf9vtipu.. "
-        utf8_head = u"\u6b63\u78ba\u306b\u8a00\u3046\u3068\u7ffb\u8a33\u306f\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4e00\u90e8\u306f\u30c9\u30a4\u30c4\u8a9e\u3067\u3059\u304c\u3001\u3042\u3068\u306f\u3067\u305f\u3089\u3081\u3067\u3059\u3002\u5b9f\u969b\u306b\u306f\u300cWenn ist das Nunstuck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput.\u300d\u3068\u8a00\u3063\u3066\u3044\u307e\u3059\u3002".encode("utf-8")
-        h = Header(g_head, g, header_name='Subject')
-        h.append(cz_head, cz)
-        h.append(utf8_head, utf8)
-        msg = Message()
-        msg['Subject'] = h
-        sfp = StringIO()
-        g = Generator(sfp)
-        g.flatten(msg)
-        eq(sfp.getvalue(), """\
-Subject: =?iso-8859-1?q?Die_Mieter_treten_hier_ein_werden_mit_einem_Foerd?=
- =?iso-8859-1?q?erband_komfortabel_den_Korridor_entlang=2C_an_s=FCdl=FCndi?=
- =?iso-8859-1?q?schen_Wandgem=E4lden_vorbei=2C_gegen_die_rotierenden_Kling?=
- =?iso-8859-1?q?en_bef=F6rdert=2E_?= =?iso-8859-2?q?Finan=E8ni_met?=
- =?iso-8859-2?q?ropole_se_hroutily_pod_tlakem_jejich_d=F9vtipu=2E=2E_?=
- =?utf-8?b?5q2j56K644Gr6KiA44GG44Go57+76Kiz44Gv44GV44KM44Gm44GE?=
- =?utf-8?b?44G+44Gb44KT44CC5LiA6YOo44Gv44OJ44Kk44OE6Kqe44Gn44GZ44GM44CB?=
- =?utf-8?b?44GC44Go44Gv44Gn44Gf44KJ44KB44Gn44GZ44CC5a6f6Zqb44Gr44Gv44CM?=
- =?utf-8?q?Wenn_ist_das_Nunstuck_git_und_Slotermeyer=3F_Ja!_Beiherhund_das?=
- =?utf-8?b?IE9kZXIgZGllIEZsaXBwZXJ3YWxkdCBnZXJzcHV0LuOAjeOBqOiogOOBow==?=
- =?utf-8?b?44Gm44GE44G+44GZ44CC?=
-
-""")
-        eq(h.encode(), """\
-=?iso-8859-1?q?Die_Mieter_treten_hier_ein_werden_mit_einem_Foerd?=
- =?iso-8859-1?q?erband_komfortabel_den_Korridor_entlang=2C_an_s=FCdl=FCndi?=
- =?iso-8859-1?q?schen_Wandgem=E4lden_vorbei=2C_gegen_die_rotierenden_Kling?=
- =?iso-8859-1?q?en_bef=F6rdert=2E_?= =?iso-8859-2?q?Finan=E8ni_met?=
- =?iso-8859-2?q?ropole_se_hroutily_pod_tlakem_jejich_d=F9vtipu=2E=2E_?=
- =?utf-8?b?5q2j56K644Gr6KiA44GG44Go57+76Kiz44Gv44GV44KM44Gm44GE?=
- =?utf-8?b?44G+44Gb44KT44CC5LiA6YOo44Gv44OJ44Kk44OE6Kqe44Gn44GZ44GM44CB?=
- =?utf-8?b?44GC44Go44Gv44Gn44Gf44KJ44KB44Gn44GZ44CC5a6f6Zqb44Gr44Gv44CM?=
- =?utf-8?q?Wenn_ist_das_Nunstuck_git_und_Slotermeyer=3F_Ja!_Beiherhund_das?=
- =?utf-8?b?IE9kZXIgZGllIEZsaXBwZXJ3YWxkdCBnZXJzcHV0LuOAjeOBqOiogOOBow==?=
- =?utf-8?b?44Gm44GE44G+44GZ44CC?=""")
-
-    def test_long_header_encode(self):
-        eq = self.ndiffAssertEqual
-        h = Header('wasnipoop; giraffes="very-long-necked-animals"; '
-                   'spooge="yummy"; hippos="gargantuan"; marshmallows="gooey"',
-                   header_name='X-Foobar-Spoink-Defrobnit')
-        eq(h.encode(), '''\
-wasnipoop; giraffes="very-long-necked-animals";
- spooge="yummy"; hippos="gargantuan"; marshmallows="gooey"''')
-
-    def test_long_header_encode_with_tab_continuation(self):
-        eq = self.ndiffAssertEqual
-        h = Header('wasnipoop; giraffes="very-long-necked-animals"; '
-                   'spooge="yummy"; hippos="gargantuan"; marshmallows="gooey"',
-                   header_name='X-Foobar-Spoink-Defrobnit',
-                   continuation_ws='\t')
-        eq(h.encode(), '''\
-wasnipoop; giraffes="very-long-necked-animals";
-\tspooge="yummy"; hippos="gargantuan"; marshmallows="gooey"''')
-
-    def test_header_splitter(self):
-        eq = self.ndiffAssertEqual
-        msg = MIMEText('')
-        # It'd be great if we could use add_header() here, but that doesn't
-        # guarantee an order of the parameters.
-        msg['X-Foobar-Spoink-Defrobnit'] = (
-            'wasnipoop; giraffes="very-long-necked-animals"; '
-            'spooge="yummy"; hippos="gargantuan"; marshmallows="gooey"')
-        sfp = StringIO()
-        g = Generator(sfp)
-        g.flatten(msg)
-        eq(sfp.getvalue(), '''\
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Foobar-Spoink-Defrobnit: wasnipoop; giraffes="very-long-necked-animals";
- spooge="yummy"; hippos="gargantuan"; marshmallows="gooey"
-
-''')
-
-    def test_no_semis_header_splitter(self):
-        eq = self.ndiffAssertEqual
-        msg = Message()
-        msg['From'] = 'test@dom.ain'
-        msg['References'] = SPACE.join(['<%d@dom.ain>' % i for i in range(10)])
-        msg.set_payload('Test')
-        sfp = StringIO()
-        g = Generator(sfp)
-        g.flatten(msg)
-        eq(sfp.getvalue(), """\
-From: test@dom.ain
-References: <0@dom.ain> <1@dom.ain> <2@dom.ain> <3@dom.ain> <4@dom.ain>
- <5@dom.ain> <6@dom.ain> <7@dom.ain> <8@dom.ain> <9@dom.ain>
-
-Test""")
-
-    def test_no_split_long_header(self):
-        eq = self.ndiffAssertEqual
-        hstr = 'References: ' + 'x' * 80
-        h = Header(hstr, continuation_ws='\t')
-        eq(h.encode(), """\
-References: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx""")
-
-    def test_splitting_multiple_long_lines(self):
-        eq = self.ndiffAssertEqual
-        hstr = """\
-from babylon.socal-raves.org (localhost [127.0.0.1]); by babylon.socal-raves.org (Postfix) with ESMTP id B570E51B81; for <mailman-admin@babylon.socal-raves.org>; Sat, 2 Feb 2002 17:00:06 -0800 (PST)
-\tfrom babylon.socal-raves.org (localhost [127.0.0.1]); by babylon.socal-raves.org (Postfix) with ESMTP id B570E51B81; for <mailman-admin@babylon.socal-raves.org>; Sat, 2 Feb 2002 17:00:06 -0800 (PST)
-\tfrom babylon.socal-raves.org (localhost [127.0.0.1]); by babylon.socal-raves.org (Postfix) with ESMTP id B570E51B81; for <mailman-admin@babylon.socal-raves.org>; Sat, 2 Feb 2002 17:00:06 -0800 (PST)
-"""
-        h = Header(hstr, continuation_ws='\t')
-        eq(h.encode(), """\
-from babylon.socal-raves.org (localhost [127.0.0.1]);
-\tby babylon.socal-raves.org (Postfix) with ESMTP id B570E51B81;
-\tfor <mailman-admin@babylon.socal-raves.org>;
-\tSat, 2 Feb 2002 17:00:06 -0800 (PST)
-\tfrom babylon.socal-raves.org (localhost [127.0.0.1]);
-\tby babylon.socal-raves.org (Postfix) with ESMTP id B570E51B81;
-\tfor <mailman-admin@babylon.socal-raves.org>;
-\tSat, 2 Feb 2002 17:00:06 -0800 (PST)
-\tfrom babylon.socal-raves.org (localhost [127.0.0.1]);
-\tby babylon.socal-raves.org (Postfix) with ESMTP id B570E51B81;
-\tfor <mailman-admin@babylon.socal-raves.org>;
-\tSat, 2 Feb 2002 17:00:06 -0800 (PST)""")
-
-    def test_splitting_first_line_only_is_long(self):
-        eq = self.ndiffAssertEqual
-        hstr = """\
-from modemcable093.139-201-24.que.mc.videotron.ca ([24.201.139.93] helo=cthulhu.gerg.ca)
-\tby kronos.mems-exchange.org with esmtp (Exim 4.05)
-\tid 17k4h5-00034i-00
-\tfor test@mems-exchange.org; Wed, 28 Aug 2002 11:25:20 -0400"""
-        h = Header(hstr, maxlinelen=78, header_name='Received',
-                   continuation_ws='\t')
-        eq(h.encode(), """\
-from modemcable093.139-201-24.que.mc.videotron.ca ([24.201.139.93]
-\thelo=cthulhu.gerg.ca)
-\tby kronos.mems-exchange.org with esmtp (Exim 4.05)
-\tid 17k4h5-00034i-00
-\tfor test@mems-exchange.org; Wed, 28 Aug 2002 11:25:20 -0400""")
-
-    def test_long_8bit_header(self):
-        eq = self.ndiffAssertEqual
-        msg = Message()
-        h = Header('Britische Regierung gibt', 'iso-8859-1',
-                    header_name='Subject')
-        h.append('gr\xfcnes Licht f\xfcr Offshore-Windkraftprojekte')
-        msg['Subject'] = h
-        eq(msg.as_string(), """\
-Subject: =?iso-8859-1?q?Britische_Regierung_gibt?= =?iso-8859-1?q?gr=FCnes?=
- =?iso-8859-1?q?_Licht_f=FCr_Offshore-Windkraftprojekte?=
-
-""")
-
-    def test_long_8bit_header_no_charset(self):
-        eq = self.ndiffAssertEqual
-        msg = Message()
-        msg['Reply-To'] = 'Britische Regierung gibt gr\xfcnes Licht f\xfcr Offshore-Windkraftprojekte <a-very-long-address@example.com>'
-        eq(msg.as_string(), """\
-Reply-To: Britische Regierung gibt gr\xfcnes Licht f\xfcr Offshore-Windkraftprojekte <a-very-long-address@example.com>
-
-""")
-
-    def test_long_to_header(self):
-        eq = self.ndiffAssertEqual
-        to = '"Someone Test #A" <someone@eecs.umich.edu>,<someone@eecs.umich.edu>,"Someone Test #B" <someone@umich.edu>, "Someone Test #C" <someone@eecs.umich.edu>, "Someone Test #D" <someone@eecs.umich.edu>'
-        msg = Message()
-        msg['To'] = to
-        eq(msg.as_string(0), '''\
-To: "Someone Test #A" <someone@eecs.umich.edu>, <someone@eecs.umich.edu>,
- "Someone Test #B" <someone@umich.edu>,
- "Someone Test #C" <someone@eecs.umich.edu>,
- "Someone Test #D" <someone@eecs.umich.edu>
-
-''')
-
-    def test_long_line_after_append(self):
-        eq = self.ndiffAssertEqual
-        s = 'This is an example of string which has almost the limit of header length.'
-        h = Header(s)
-        h.append('Add another line.')
-        eq(h.encode(), """\
-This is an example of string which has almost the limit of header length.
- Add another line.""")
-
-    def test_shorter_line_with_append(self):
-        eq = self.ndiffAssertEqual
-        s = 'This is a shorter line.'
-        h = Header(s)
-        h.append('Add another sentence. (Surprise?)')
-        eq(h.encode(),
-           'This is a shorter line. Add another sentence. (Surprise?)')
-
-    def test_long_field_name(self):
-        eq = self.ndiffAssertEqual
-        fn = 'X-Very-Very-Very-Long-Header-Name'
-        gs = "Die Mieter treten hier ein werden mit einem Foerderband komfortabel den Korridor entlang, an s\xfcdl\xfcndischen Wandgem\xe4lden vorbei, gegen die rotierenden Klingen bef\xf6rdert. "
-        h = Header(gs, 'iso-8859-1', header_name=fn)
-        # BAW: this seems broken because the first line is too long
-        eq(h.encode(), """\
-=?iso-8859-1?q?Die_Mieter_treten_hier_?=
- =?iso-8859-1?q?ein_werden_mit_einem_Foerderband_komfortabel_den_Korridor_?=
- =?iso-8859-1?q?entlang=2C_an_s=FCdl=FCndischen_Wandgem=E4lden_vorbei=2C_g?=
- =?iso-8859-1?q?egen_die_rotierenden_Klingen_bef=F6rdert=2E_?=""")
-
-    def test_long_received_header(self):
-        h = 'from FOO.TLD (vizworld.acl.foo.tld [123.452.678.9]) by hrothgar.la.mastaler.com (tmda-ofmipd) with ESMTP; Wed, 05 Mar 2003 18:10:18 -0700'
-        msg = Message()
-        msg['Received-1'] = Header(h, continuation_ws='\t')
-        msg['Received-2'] = h
-        self.assertEqual(msg.as_string(), """\
-Received-1: from FOO.TLD (vizworld.acl.foo.tld [123.452.678.9]) by
-\throthgar.la.mastaler.com (tmda-ofmipd) with ESMTP;
-\tWed, 05 Mar 2003 18:10:18 -0700
-Received-2: from FOO.TLD (vizworld.acl.foo.tld [123.452.678.9]) by
- hrothgar.la.mastaler.com (tmda-ofmipd) with ESMTP;
- Wed, 05 Mar 2003 18:10:18 -0700
-
-""")
-
-    def test_string_headerinst_eq(self):
-        h = '<15975.17901.207240.414604@sgigritzmann1.mathematik.tu-muenchen.de> (David Bremner\'s message of "Thu, 6 Mar 2003 13:58:21 +0100")'
-        msg = Message()
-        msg['Received'] = Header(h, header_name='Received',
-                                 continuation_ws='\t')
-        msg['Received'] = h
-        self.ndiffAssertEqual(msg.as_string(), """\
-Received: <15975.17901.207240.414604@sgigritzmann1.mathematik.tu-muenchen.de>
-\t(David Bremner's message of "Thu, 6 Mar 2003 13:58:21 +0100")
-Received: <15975.17901.207240.414604@sgigritzmann1.mathematik.tu-muenchen.de>
- (David Bremner's message of "Thu, 6 Mar 2003 13:58:21 +0100")
-
-""")
-
-    def test_long_unbreakable_lines_with_continuation(self):
-        eq = self.ndiffAssertEqual
-        msg = Message()
-        t = """\
- iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEUAAAAkHiJeRUIcGBi9
- locQDQ4zJykFBAXJfWDjAAACYUlEQVR4nF2TQY/jIAyFc6lydlG5x8Nyp1Y69wj1PN2I5gzp"""
-        msg['Face-1'] = t
-        msg['Face-2'] = Header(t, header_name='Face-2')
-        eq(msg.as_string(), """\
-Face-1: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEUAAAAkHiJeRUIcGBi9
- locQDQ4zJykFBAXJfWDjAAACYUlEQVR4nF2TQY/jIAyFc6lydlG5x8Nyp1Y69wj1PN2I5gzp
-Face-2: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEUAAAAkHiJeRUIcGBi9
- locQDQ4zJykFBAXJfWDjAAACYUlEQVR4nF2TQY/jIAyFc6lydlG5x8Nyp1Y69wj1PN2I5gzp
-
-""")
-
-    def test_another_long_multiline_header(self):
-        eq = self.ndiffAssertEqual
-        m = '''\
-Received: from siimage.com ([172.25.1.3]) by zima.siliconimage.com with Microsoft SMTPSVC(5.0.2195.4905);
- Wed, 16 Oct 2002 07:41:11 -0700'''
-        msg = email.message_from_string(m)
-        eq(msg.as_string(), '''\
-Received: from siimage.com ([172.25.1.3]) by zima.siliconimage.com with
- Microsoft SMTPSVC(5.0.2195.4905); Wed, 16 Oct 2002 07:41:11 -0700
-
-''')
-
-    def test_long_lines_with_different_header(self):
-        eq = self.ndiffAssertEqual
-        h = """\
-List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/spamassassin-talk>,
-        <mailto:spamassassin-talk-request@lists.sourceforge.net?subject=unsubscribe>"""
-        msg = Message()
-        msg['List'] = h
-        msg['List'] = Header(h, header_name='List')
-        eq(msg.as_string(), """\
-List: List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/spamassassin-talk>,
- <mailto:spamassassin-talk-request@lists.sourceforge.net?subject=unsubscribe>
-List: List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/spamassassin-talk>,
- <mailto:spamassassin-talk-request@lists.sourceforge.net?subject=unsubscribe>
-
-""")
-
-
-
-# Test mangling of "From " lines in the body of a message
-class TestFromMangling(unittest.TestCase):
-    def setUp(self):
-        self.msg = Message()
-        self.msg['From'] = 'aaa@bbb.org'
-        self.msg.set_payload("""\
-From the desk of A.A.A.:
-Blah blah blah
-""")
-
-    def test_mangled_from(self):
-        s = StringIO()
-        g = Generator(s, mangle_from_=True)
-        g.flatten(self.msg)
-        self.assertEqual(s.getvalue(), """\
-From: aaa@bbb.org
-
->From the desk of A.A.A.:
-Blah blah blah
-""")
-
-    def test_dont_mangle_from(self):
-        s = StringIO()
-        g = Generator(s, mangle_from_=False)
-        g.flatten(self.msg)
-        self.assertEqual(s.getvalue(), """\
-From: aaa@bbb.org
-
-From the desk of A.A.A.:
-Blah blah blah
-""")
-
-
-
-# Test the basic MIMEAudio class
-class TestMIMEAudio(unittest.TestCase):
-    def setUp(self):
-        # Make sure we pick up the audiotest.au that lives in email/test/data.
-        # In Python, there's an audiotest.au living in Lib/test but that isn't
-        # included in some binary distros that don't include the test
-        # package.  The trailing empty string on the .join() is significant
-        # since findfile() will do a dirname().
-        datadir = os.path.join(os.path.dirname(landmark), 'data', '')
-        fp = open(findfile('audiotest.au', datadir), 'rb')
-        try:
-            self._audiodata = fp.read()
-        finally:
-            fp.close()
-        self._au = MIMEAudio(self._audiodata)
-
-    def test_guess_minor_type(self):
-        self.assertEqual(self._au.get_content_type(), 'audio/basic')
-
-    def test_encoding(self):
-        payload = self._au.get_payload()
-        self.assertEqual(base64.decodestring(payload), self._audiodata)
-
-    def test_checkSetMinor(self):
-        au = MIMEAudio(self._audiodata, 'fish')
-        self.assertEqual(au.get_content_type(), 'audio/fish')
-
-    def test_add_header(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        self._au.add_header('Content-Disposition', 'attachment',
-                            filename='audiotest.au')
-        eq(self._au['content-disposition'],
-           'attachment; filename="audiotest.au"')
-        eq(self._au.get_params(header='content-disposition'),
-           [('attachment', ''), ('filename', 'audiotest.au')])
-        eq(self._au.get_param('filename', header='content-disposition'),
-           'audiotest.au')
-        missing = []
-        eq(self._au.get_param('attachment', header='content-disposition'), '')
-        unless(self._au.get_param('foo', failobj=missing,
-                                  header='content-disposition') is missing)
-        # Try some missing stuff
-        unless(self._au.get_param('foobar', missing) is missing)
-        unless(self._au.get_param('attachment', missing,
-                                  header='foobar') is missing)
-
-
-
-# Test the basic MIMEImage class
-class TestMIMEImage(unittest.TestCase):
-    def setUp(self):
-        fp = openfile('PyBanner048.gif')
-        try:
-            self._imgdata = fp.read()
-        finally:
-            fp.close()
-        self._im = MIMEImage(self._imgdata)
-
-    def test_guess_minor_type(self):
-        self.assertEqual(self._im.get_content_type(), 'image/gif')
-
-    def test_encoding(self):
-        payload = self._im.get_payload()
-        self.assertEqual(base64.decodestring(payload), self._imgdata)
-
-    def test_checkSetMinor(self):
-        im = MIMEImage(self._imgdata, 'fish')
-        self.assertEqual(im.get_content_type(), 'image/fish')
-
-    def test_add_header(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        self._im.add_header('Content-Disposition', 'attachment',
-                            filename='dingusfish.gif')
-        eq(self._im['content-disposition'],
-           'attachment; filename="dingusfish.gif"')
-        eq(self._im.get_params(header='content-disposition'),
-           [('attachment', ''), ('filename', 'dingusfish.gif')])
-        eq(self._im.get_param('filename', header='content-disposition'),
-           'dingusfish.gif')
-        missing = []
-        eq(self._im.get_param('attachment', header='content-disposition'), '')
-        unless(self._im.get_param('foo', failobj=missing,
-                                  header='content-disposition') is missing)
-        # Try some missing stuff
-        unless(self._im.get_param('foobar', missing) is missing)
-        unless(self._im.get_param('attachment', missing,
-                                  header='foobar') is missing)
-
-
-
-# Test the basic MIMEText class
-class TestMIMEText(unittest.TestCase):
-    def setUp(self):
-        self._msg = MIMEText('hello there')
-
-    def test_types(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        eq(self._msg.get_content_type(), 'text/plain')
-        eq(self._msg.get_param('charset'), 'us-ascii')
-        missing = []
-        unless(self._msg.get_param('foobar', missing) is missing)
-        unless(self._msg.get_param('charset', missing, header='foobar')
-               is missing)
-
-    def test_payload(self):
-        self.assertEqual(self._msg.get_payload(), 'hello there')
-        self.assertTrue(not self._msg.is_multipart())
-
-    def test_charset(self):
-        eq = self.assertEqual
-        msg = MIMEText('hello there', _charset='us-ascii')
-        eq(msg.get_charset().input_charset, 'us-ascii')
-        eq(msg['content-type'], 'text/plain; charset="us-ascii"')
-
-    def test_7bit_unicode_input(self):
-        eq = self.assertEqual
-        msg = MIMEText(u'hello there', _charset='us-ascii')
-        eq(msg.get_charset().input_charset, 'us-ascii')
-        eq(msg['content-type'], 'text/plain; charset="us-ascii"')
-
-    def test_7bit_unicode_input_no_charset(self):
-        eq = self.assertEqual
-        msg = MIMEText(u'hello there')
-        eq(msg.get_charset(), 'us-ascii')
-        eq(msg['content-type'], 'text/plain; charset="us-ascii"')
-        self.assertTrue('hello there' in msg.as_string())
-
-    def test_8bit_unicode_input(self):
-        teststr = u'\u043a\u0438\u0440\u0438\u043b\u0438\u0446\u0430'
-        eq = self.assertEqual
-        msg = MIMEText(teststr, _charset='utf-8')
-        eq(msg.get_charset().output_charset, 'utf-8')
-        eq(msg['content-type'], 'text/plain; charset="utf-8"')
-        eq(msg.get_payload(decode=True), teststr.encode('utf-8'))
-
-    def test_8bit_unicode_input_no_charset(self):
-        teststr = u'\u043a\u0438\u0440\u0438\u043b\u0438\u0446\u0430'
-        self.assertRaises(UnicodeEncodeError, MIMEText, teststr)
-
-
-
-# Test complicated multipart/* messages
-class TestMultipart(TestEmailBase):
-    def setUp(self):
-        fp = openfile('PyBanner048.gif')
-        try:
-            data = fp.read()
-        finally:
-            fp.close()
-
-        container = MIMEBase('multipart', 'mixed', boundary='BOUNDARY')
-        image = MIMEImage(data, name='dingusfish.gif')
-        image.add_header('content-disposition', 'attachment',
-                         filename='dingusfish.gif')
-        intro = MIMEText('''\
-Hi there,
-
-This is the dingus fish.
-''')
-        container.attach(intro)
-        container.attach(image)
-        container['From'] = 'Barry <barry@digicool.com>'
-        container['To'] = 'Dingus Lovers <cravindogs@cravindogs.com>'
-        container['Subject'] = 'Here is your dingus fish'
-
-        now = 987809702.54848599
-        timetuple = time.localtime(now)
-        if timetuple[-1] == 0:
-            tzsecs = time.timezone
-        else:
-            tzsecs = time.altzone
-        if tzsecs > 0:
-            sign = '-'
-        else:
-            sign = '+'
-        tzoffset = ' %s%04d' % (sign, tzsecs // 36)
-        container['Date'] = time.strftime(
-            '%a, %d %b %Y %H:%M:%S',
-            time.localtime(now)) + tzoffset
-        self._msg = container
-        self._im = image
-        self._txt = intro
-
-    def test_hierarchy(self):
-        # convenience
-        eq = self.assertEqual
-        unless = self.assertTrue
-        raises = self.assertRaises
-        # tests
-        m = self._msg
-        unless(m.is_multipart())
-        eq(m.get_content_type(), 'multipart/mixed')
-        eq(len(m.get_payload()), 2)
-        raises(IndexError, m.get_payload, 2)
-        m0 = m.get_payload(0)
-        m1 = m.get_payload(1)
-        unless(m0 is self._txt)
-        unless(m1 is self._im)
-        eq(m.get_payload(), [m0, m1])
-        unless(not m0.is_multipart())
-        unless(not m1.is_multipart())
-
-    def test_empty_multipart_idempotent(self):
-        text = """\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
-
---BOUNDARY
-
-
---BOUNDARY--
-"""
-        msg = Parser().parsestr(text)
-        self.ndiffAssertEqual(text, msg.as_string())
-
-    def test_no_parts_in_a_multipart_with_none_epilogue(self):
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.set_boundary('BOUNDARY')
-        self.ndiffAssertEqual(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
---BOUNDARY
-
---BOUNDARY--''')
-
-    def test_no_parts_in_a_multipart_with_empty_epilogue(self):
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.preamble = ''
-        outer.epilogue = ''
-        outer.set_boundary('BOUNDARY')
-        self.ndiffAssertEqual(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
-
---BOUNDARY
-
---BOUNDARY--
-''')
-
-    def test_one_part_in_a_multipart(self):
-        eq = self.ndiffAssertEqual
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.set_boundary('BOUNDARY')
-        msg = MIMEText('hello world')
-        outer.attach(msg)
-        eq(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-hello world
---BOUNDARY--''')
-
-    def test_seq_parts_in_a_multipart_with_empty_preamble(self):
-        eq = self.ndiffAssertEqual
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.preamble = ''
-        msg = MIMEText('hello world')
-        outer.attach(msg)
-        outer.set_boundary('BOUNDARY')
-        eq(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-hello world
---BOUNDARY--''')
-
-
-    def test_seq_parts_in_a_multipart_with_none_preamble(self):
-        eq = self.ndiffAssertEqual
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.preamble = None
-        msg = MIMEText('hello world')
-        outer.attach(msg)
-        outer.set_boundary('BOUNDARY')
-        eq(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-hello world
---BOUNDARY--''')
-
-
-    def test_seq_parts_in_a_multipart_with_none_epilogue(self):
-        eq = self.ndiffAssertEqual
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.epilogue = None
-        msg = MIMEText('hello world')
-        outer.attach(msg)
-        outer.set_boundary('BOUNDARY')
-        eq(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-hello world
---BOUNDARY--''')
-
-
-    def test_seq_parts_in_a_multipart_with_empty_epilogue(self):
-        eq = self.ndiffAssertEqual
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.epilogue = ''
-        msg = MIMEText('hello world')
-        outer.attach(msg)
-        outer.set_boundary('BOUNDARY')
-        eq(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-hello world
---BOUNDARY--
-''')
-
-
-    def test_seq_parts_in_a_multipart_with_nl_epilogue(self):
-        eq = self.ndiffAssertEqual
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.epilogue = '\n'
-        msg = MIMEText('hello world')
-        outer.attach(msg)
-        outer.set_boundary('BOUNDARY')
-        eq(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-hello world
---BOUNDARY--
-
-''')
-
-    def test_message_external_body(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_36.txt')
-        eq(len(msg.get_payload()), 2)
-        msg1 = msg.get_payload(1)
-        eq(msg1.get_content_type(), 'multipart/alternative')
-        eq(len(msg1.get_payload()), 2)
-        for subpart in msg1.get_payload():
-            eq(subpart.get_content_type(), 'message/external-body')
-            eq(len(subpart.get_payload()), 1)
-            subsubpart = subpart.get_payload(0)
-            eq(subsubpart.get_content_type(), 'text/plain')
-
-    def test_double_boundary(self):
-        # msg_37.txt is a multipart that contains two dash-boundary's in a
-        # row.  Our interpretation of RFC 2046 calls for ignoring the second
-        # and subsequent boundaries.
-        msg = self._msgobj('msg_37.txt')
-        self.assertEqual(len(msg.get_payload()), 3)
-
-    def test_nested_inner_contains_outer_boundary(self):
-        eq = self.ndiffAssertEqual
-        # msg_38.txt has an inner part that contains outer boundaries.  My
-        # interpretation of RFC 2046 (based on sections 5.1 and 5.1.2) say
-        # these are illegal and should be interpreted as unterminated inner
-        # parts.
-        msg = self._msgobj('msg_38.txt')
-        sfp = StringIO()
-        Iterators._structure(msg, sfp)
-        eq(sfp.getvalue(), """\
-multipart/mixed
-    multipart/mixed
-        multipart/alternative
-            text/plain
-        text/plain
-    text/plain
-    text/plain
-""")
-
-    def test_nested_with_same_boundary(self):
-        eq = self.ndiffAssertEqual
-        # msg 39.txt is similarly evil in that it's got inner parts that use
-        # the same boundary as outer parts.  Again, I believe the way this is
-        # parsed is closest to the spirit of RFC 2046
-        msg = self._msgobj('msg_39.txt')
-        sfp = StringIO()
-        Iterators._structure(msg, sfp)
-        eq(sfp.getvalue(), """\
-multipart/mixed
-    multipart/mixed
-        multipart/alternative
-        application/octet-stream
-        application/octet-stream
-    text/plain
-""")
-
-    def test_boundary_in_non_multipart(self):
-        msg = self._msgobj('msg_40.txt')
-        self.assertEqual(msg.as_string(), '''\
-MIME-Version: 1.0
-Content-Type: text/html; boundary="--961284236552522269"
-
-----961284236552522269
-Content-Type: text/html;
-Content-Transfer-Encoding: 7Bit
-
-<html></html>
-
-----961284236552522269--
-''')
-
-    def test_boundary_with_leading_space(self):
-        eq = self.assertEqual
-        msg = email.message_from_string('''\
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="    XXXX"
-
---    XXXX
-Content-Type: text/plain
-
-
---    XXXX
-Content-Type: text/plain
-
---    XXXX--
-''')
-        self.assertTrue(msg.is_multipart())
-        eq(msg.get_boundary(), '    XXXX')
-        eq(len(msg.get_payload()), 2)
-
-    def test_boundary_without_trailing_newline(self):
-        m = Parser().parsestr("""\
-Content-Type: multipart/mixed; boundary="===============0012394164=="
-MIME-Version: 1.0
-
---===============0012394164==
-Content-Type: image/file1.jpg
-MIME-Version: 1.0
-Content-Transfer-Encoding: base64
-
-YXNkZg==
---===============0012394164==--""")
-        self.assertEqual(m.get_payload(0).get_payload(), 'YXNkZg==')
-
-
-
-# Test some badly formatted messages
-class TestNonConformant(TestEmailBase):
-    def test_parse_missing_minor_type(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_14.txt')
-        eq(msg.get_content_type(), 'text/plain')
-        eq(msg.get_content_maintype(), 'text')
-        eq(msg.get_content_subtype(), 'plain')
-
-    def test_same_boundary_inner_outer(self):
-        unless = self.assertTrue
-        msg = self._msgobj('msg_15.txt')
-        # XXX We can probably eventually do better
-        inner = msg.get_payload(0)
-        unless(hasattr(inner, 'defects'))
-        self.assertEqual(len(inner.defects), 1)
-        unless(isinstance(inner.defects[0],
-                          Errors.StartBoundaryNotFoundDefect))
-
-    def test_multipart_no_boundary(self):
-        unless = self.assertTrue
-        msg = self._msgobj('msg_25.txt')
-        unless(isinstance(msg.get_payload(), str))
-        self.assertEqual(len(msg.defects), 2)
-        unless(isinstance(msg.defects[0], Errors.NoBoundaryInMultipartDefect))
-        unless(isinstance(msg.defects[1],
-                          Errors.MultipartInvariantViolationDefect))
-
-    def test_invalid_content_type(self):
-        eq = self.assertEqual
-        neq = self.ndiffAssertEqual
-        msg = Message()
-        # RFC 2045, $5.2 says invalid yields text/plain
-        msg['Content-Type'] = 'text'
-        eq(msg.get_content_maintype(), 'text')
-        eq(msg.get_content_subtype(), 'plain')
-        eq(msg.get_content_type(), 'text/plain')
-        # Clear the old value and try something /really/ invalid
-        del msg['content-type']
-        msg['Content-Type'] = 'foo'
-        eq(msg.get_content_maintype(), 'text')
-        eq(msg.get_content_subtype(), 'plain')
-        eq(msg.get_content_type(), 'text/plain')
-        # Still, make sure that the message is idempotently generated
-        s = StringIO()
-        g = Generator(s)
-        g.flatten(msg)
-        neq(s.getvalue(), 'Content-Type: foo\n\n')
-
-    def test_no_start_boundary(self):
-        eq = self.ndiffAssertEqual
-        msg = self._msgobj('msg_31.txt')
-        eq(msg.get_payload(), """\
---BOUNDARY
-Content-Type: text/plain
-
-message 1
-
---BOUNDARY
-Content-Type: text/plain
-
-message 2
-
---BOUNDARY--
-""")
-
-    def test_no_separating_blank_line(self):
-        eq = self.ndiffAssertEqual
-        msg = self._msgobj('msg_35.txt')
-        eq(msg.as_string(), """\
-From: aperson@dom.ain
-To: bperson@dom.ain
-Subject: here's something interesting
-
-counter to RFC 2822, there's no separating newline here
-""")
-
-    def test_lying_multipart(self):
-        unless = self.assertTrue
-        msg = self._msgobj('msg_41.txt')
-        unless(hasattr(msg, 'defects'))
-        self.assertEqual(len(msg.defects), 2)
-        unless(isinstance(msg.defects[0], Errors.NoBoundaryInMultipartDefect))
-        unless(isinstance(msg.defects[1],
-                          Errors.MultipartInvariantViolationDefect))
-
-    def test_missing_start_boundary(self):
-        outer = self._msgobj('msg_42.txt')
-        # The message structure is:
-        #
-        # multipart/mixed
-        #    text/plain
-        #    message/rfc822
-        #        multipart/mixed [*]
-        #
-        # [*] This message is missing its start boundary
-        bad = outer.get_payload(1).get_payload(0)
-        self.assertEqual(len(bad.defects), 1)
-        self.assertTrue(isinstance(bad.defects[0],
-                                   Errors.StartBoundaryNotFoundDefect))
-
-    def test_first_line_is_continuation_header(self):
-        eq = self.assertEqual
-        m = ' Line 1\nLine 2\nLine 3'
-        msg = email.message_from_string(m)
-        eq(msg.keys(), [])
-        eq(msg.get_payload(), 'Line 2\nLine 3')
-        eq(len(msg.defects), 1)
-        self.assertTrue(isinstance(msg.defects[0],
-                                   Errors.FirstHeaderLineIsContinuationDefect))
-        eq(msg.defects[0].line, ' Line 1\n')
-
-
-
-
-# Test RFC 2047 header encoding and decoding
-class TestRFC2047(unittest.TestCase):
-    def test_rfc2047_multiline(self):
-        eq = self.assertEqual
-        s = """Re: =?mac-iceland?q?r=8Aksm=9Arg=8Cs?= baz
- foo bar =?mac-iceland?q?r=8Aksm=9Arg=8Cs?="""
-        dh = decode_header(s)
-        eq(dh, [
-            ('Re:', None),
-            ('r\x8aksm\x9arg\x8cs', 'mac-iceland'),
-            ('baz foo bar', None),
-            ('r\x8aksm\x9arg\x8cs', 'mac-iceland')])
-        eq(str(make_header(dh)),
-           """Re: =?mac-iceland?q?r=8Aksm=9Arg=8Cs?= baz foo bar
- =?mac-iceland?q?r=8Aksm=9Arg=8Cs?=""")
-
-    def test_whitespace_eater_unicode(self):
-        eq = self.assertEqual
-        s = '=?ISO-8859-1?Q?Andr=E9?= Pirard <pirard@dom.ain>'
-        dh = decode_header(s)
-        eq(dh, [('Andr\xe9', 'iso-8859-1'), ('Pirard <pirard@dom.ain>', None)])
-        hu = unicode(make_header(dh)).encode('latin-1')
-        eq(hu, 'Andr\xe9 Pirard <pirard@dom.ain>')
-
-    def test_whitespace_eater_unicode_2(self):
-        eq = self.assertEqual
-        s = 'The =?iso-8859-1?b?cXVpY2sgYnJvd24gZm94?= jumped over the =?iso-8859-1?b?bGF6eSBkb2c=?='
-        dh = decode_header(s)
-        eq(dh, [('The', None), ('quick brown fox', 'iso-8859-1'),
-                ('jumped over the', None), ('lazy dog', 'iso-8859-1')])
-        hu = make_header(dh).__unicode__()
-        eq(hu, u'The quick brown fox jumped over the lazy dog')
-
-    def test_rfc2047_without_whitespace(self):
-        s = 'Sm=?ISO-8859-1?B?9g==?=rg=?ISO-8859-1?B?5Q==?=sbord'
-        dh = decode_header(s)
-        self.assertEqual(dh, [(s, None)])
-
-    def test_rfc2047_with_whitespace(self):
-        s = 'Sm =?ISO-8859-1?B?9g==?= rg =?ISO-8859-1?B?5Q==?= sbord'
-        dh = decode_header(s)
-        self.assertEqual(dh, [('Sm', None), ('\xf6', 'iso-8859-1'),
-                              ('rg', None), ('\xe5', 'iso-8859-1'),
-                              ('sbord', None)])
-
-    def test_rfc2047_B_bad_padding(self):
-        s = '=?iso-8859-1?B?%s?='
-        data = [                                # only test complete bytes
-            ('dm==', 'v'), ('dm=', 'v'), ('dm', 'v'),
-            ('dmk=', 'vi'), ('dmk', 'vi')
-          ]
-        for q, a in data:
-            dh = decode_header(s % q)
-            self.assertEqual(dh, [(a, 'iso-8859-1')])
-
-    def test_rfc2047_Q_invalid_digits(self):
-        # issue 10004.
-        s = '=?iso-8659-1?Q?andr=e9=zz?='
-        self.assertEqual(decode_header(s),
-                        [(b'andr\xe9=zz', 'iso-8659-1')])
-
-
-# Test the MIMEMessage class
-class TestMIMEMessage(TestEmailBase):
-    def setUp(self):
-        fp = openfile('msg_11.txt')
-        try:
-            self._text = fp.read()
-        finally:
-            fp.close()
-
-    def test_type_error(self):
-        self.assertRaises(TypeError, MIMEMessage, 'a plain string')
-
-    def test_valid_argument(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        subject = 'A sub-message'
-        m = Message()
-        m['Subject'] = subject
-        r = MIMEMessage(m)
-        eq(r.get_content_type(), 'message/rfc822')
-        payload = r.get_payload()
-        unless(isinstance(payload, list))
-        eq(len(payload), 1)
-        subpart = payload[0]
-        unless(subpart is m)
-        eq(subpart['subject'], subject)
-
-    def test_bad_multipart(self):
-        eq = self.assertEqual
-        msg1 = Message()
-        msg1['Subject'] = 'subpart 1'
-        msg2 = Message()
-        msg2['Subject'] = 'subpart 2'
-        r = MIMEMessage(msg1)
-        self.assertRaises(Errors.MultipartConversionError, r.attach, msg2)
-
-    def test_generate(self):
-        # First craft the message to be encapsulated
-        m = Message()
-        m['Subject'] = 'An enclosed message'
-        m.set_payload('Here is the body of the message.\n')
-        r = MIMEMessage(m)
-        r['Subject'] = 'The enclosing message'
-        s = StringIO()
-        g = Generator(s)
-        g.flatten(r)
-        self.assertEqual(s.getvalue(), """\
-Content-Type: message/rfc822
-MIME-Version: 1.0
-Subject: The enclosing message
-
-Subject: An enclosed message
-
-Here is the body of the message.
-""")
-
-    def test_parse_message_rfc822(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        msg = self._msgobj('msg_11.txt')
-        eq(msg.get_content_type(), 'message/rfc822')
-        payload = msg.get_payload()
-        unless(isinstance(payload, list))
-        eq(len(payload), 1)
-        submsg = payload[0]
-        self.assertTrue(isinstance(submsg, Message))
-        eq(submsg['subject'], 'An enclosed message')
-        eq(submsg.get_payload(), 'Here is the body of the message.\n')
-
-    def test_dsn(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        # msg 16 is a Delivery Status Notification, see RFC 1894
-        msg = self._msgobj('msg_16.txt')
-        eq(msg.get_content_type(), 'multipart/report')
-        unless(msg.is_multipart())
-        eq(len(msg.get_payload()), 3)
-        # Subpart 1 is a text/plain, human readable section
-        subpart = msg.get_payload(0)
-        eq(subpart.get_content_type(), 'text/plain')
-        eq(subpart.get_payload(), """\
-This report relates to a message you sent with the following header fields:
-
-  Message-id: <002001c144a6$8752e060$56104586@oxy.edu>
-  Date: Sun, 23 Sep 2001 20:10:55 -0700
-  From: "Ian T. Henry" <henryi@oxy.edu>
-  To: SoCal Raves <scr@socal-raves.org>
-  Subject: [scr] yeah for Ians!!
-
-Your message cannot be delivered to the following recipients:
-
-  Recipient address: jangel1@cougar.noc.ucla.edu
-  Reason: recipient reached disk quota
-
-""")
-        # Subpart 2 contains the machine parsable DSN information.  It
-        # consists of two blocks of headers, represented by two nested Message
-        # objects.
-        subpart = msg.get_payload(1)
-        eq(subpart.get_content_type(), 'message/delivery-status')
-        eq(len(subpart.get_payload()), 2)
-        # message/delivery-status should treat each block as a bunch of
-        # headers, i.e. a bunch of Message objects.
-        dsn1 = subpart.get_payload(0)
-        unless(isinstance(dsn1, Message))
-        eq(dsn1['original-envelope-id'], '0GK500B4HD0888@cougar.noc.ucla.edu')
-        eq(dsn1.get_param('dns', header='reporting-mta'), '')
-        # Try a missing one <wink>
-        eq(dsn1.get_param('nsd', header='reporting-mta'), None)
-        dsn2 = subpart.get_payload(1)
-        unless(isinstance(dsn2, Message))
-        eq(dsn2['action'], 'failed')
-        eq(dsn2.get_params(header='original-recipient'),
-           [('rfc822', ''), ('jangel1@cougar.noc.ucla.edu', '')])
-        eq(dsn2.get_param('rfc822', header='final-recipient'), '')
-        # Subpart 3 is the original message
-        subpart = msg.get_payload(2)
-        eq(subpart.get_content_type(), 'message/rfc822')
-        payload = subpart.get_payload()
-        unless(isinstance(payload, list))
-        eq(len(payload), 1)
-        subsubpart = payload[0]
-        unless(isinstance(subsubpart, Message))
-        eq(subsubpart.get_content_type(), 'text/plain')
-        eq(subsubpart['message-id'],
-           '<002001c144a6$8752e060$56104586@oxy.edu>')
-
-    def test_epilogue(self):
-        eq = self.ndiffAssertEqual
-        fp = openfile('msg_21.txt')
-        try:
-            text = fp.read()
-        finally:
-            fp.close()
-        msg = Message()
-        msg['From'] = 'aperson@dom.ain'
-        msg['To'] = 'bperson@dom.ain'
-        msg['Subject'] = 'Test'
-        msg.preamble = 'MIME message'
-        msg.epilogue = 'End of MIME message\n'
-        msg1 = MIMEText('One')
-        msg2 = MIMEText('Two')
-        msg.add_header('Content-Type', 'multipart/mixed', boundary='BOUNDARY')
-        msg.attach(msg1)
-        msg.attach(msg2)
-        sfp = StringIO()
-        g = Generator(sfp)
-        g.flatten(msg)
-        eq(sfp.getvalue(), text)
-
-    def test_no_nl_preamble(self):
-        eq = self.ndiffAssertEqual
-        msg = Message()
-        msg['From'] = 'aperson@dom.ain'
-        msg['To'] = 'bperson@dom.ain'
-        msg['Subject'] = 'Test'
-        msg.preamble = 'MIME message'
-        msg.epilogue = ''
-        msg1 = MIMEText('One')
-        msg2 = MIMEText('Two')
-        msg.add_header('Content-Type', 'multipart/mixed', boundary='BOUNDARY')
-        msg.attach(msg1)
-        msg.attach(msg2)
-        eq(msg.as_string(), """\
-From: aperson@dom.ain
-To: bperson@dom.ain
-Subject: Test
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-
-MIME message
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-One
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-Two
---BOUNDARY--
-""")
-
-    def test_default_type(self):
-        eq = self.assertEqual
-        fp = openfile('msg_30.txt')
-        try:
-            msg = email.message_from_file(fp)
-        finally:
-            fp.close()
-        container1 = msg.get_payload(0)
-        eq(container1.get_default_type(), 'message/rfc822')
-        eq(container1.get_content_type(), 'message/rfc822')
-        container2 = msg.get_payload(1)
-        eq(container2.get_default_type(), 'message/rfc822')
-        eq(container2.get_content_type(), 'message/rfc822')
-        container1a = container1.get_payload(0)
-        eq(container1a.get_default_type(), 'text/plain')
-        eq(container1a.get_content_type(), 'text/plain')
-        container2a = container2.get_payload(0)
-        eq(container2a.get_default_type(), 'text/plain')
-        eq(container2a.get_content_type(), 'text/plain')
-
-    def test_default_type_with_explicit_container_type(self):
-        eq = self.assertEqual
-        fp = openfile('msg_28.txt')
-        try:
-            msg = email.message_from_file(fp)
-        finally:
-            fp.close()
-        container1 = msg.get_payload(0)
-        eq(container1.get_default_type(), 'message/rfc822')
-        eq(container1.get_content_type(), 'message/rfc822')
-        container2 = msg.get_payload(1)
-        eq(container2.get_default_type(), 'message/rfc822')
-        eq(container2.get_content_type(), 'message/rfc822')
-        container1a = container1.get_payload(0)
-        eq(container1a.get_default_type(), 'text/plain')
-        eq(container1a.get_content_type(), 'text/plain')
-        container2a = container2.get_payload(0)
-        eq(container2a.get_default_type(), 'text/plain')
-        eq(container2a.get_content_type(), 'text/plain')
-
-    def test_default_type_non_parsed(self):
-        eq = self.assertEqual
-        neq = self.ndiffAssertEqual
-        # Set up container
-        container = MIMEMultipart('digest', 'BOUNDARY')
-        container.epilogue = ''
-        # Set up subparts
-        subpart1a = MIMEText('message 1\n')
-        subpart2a = MIMEText('message 2\n')
-        subpart1 = MIMEMessage(subpart1a)
-        subpart2 = MIMEMessage(subpart2a)
-        container.attach(subpart1)
-        container.attach(subpart2)
-        eq(subpart1.get_content_type(), 'message/rfc822')
-        eq(subpart1.get_default_type(), 'message/rfc822')
-        eq(subpart2.get_content_type(), 'message/rfc822')
-        eq(subpart2.get_default_type(), 'message/rfc822')
-        neq(container.as_string(0), '''\
-Content-Type: multipart/digest; boundary="BOUNDARY"
-MIME-Version: 1.0
-
---BOUNDARY
-Content-Type: message/rfc822
-MIME-Version: 1.0
-
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-message 1
-
---BOUNDARY
-Content-Type: message/rfc822
-MIME-Version: 1.0
-
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-message 2
-
---BOUNDARY--
-''')
-        del subpart1['content-type']
-        del subpart1['mime-version']
-        del subpart2['content-type']
-        del subpart2['mime-version']
-        eq(subpart1.get_content_type(), 'message/rfc822')
-        eq(subpart1.get_default_type(), 'message/rfc822')
-        eq(subpart2.get_content_type(), 'message/rfc822')
-        eq(subpart2.get_default_type(), 'message/rfc822')
-        neq(container.as_string(0), '''\
-Content-Type: multipart/digest; boundary="BOUNDARY"
-MIME-Version: 1.0
-
---BOUNDARY
-
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-message 1
-
---BOUNDARY
-
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-message 2
-
---BOUNDARY--
-''')
-
-    def test_mime_attachments_in_constructor(self):
-        eq = self.assertEqual
-        text1 = MIMEText('')
-        text2 = MIMEText('')
-        msg = MIMEMultipart(_subparts=(text1, text2))
-        eq(len(msg.get_payload()), 2)
-        eq(msg.get_payload(0), text1)
-        eq(msg.get_payload(1), text2)
-
-    def test_default_multipart_constructor(self):
-        msg = MIMEMultipart()
-        self.assertTrue(msg.is_multipart())
-
-
-# A general test of parser->model->generator idempotency.  IOW, read a message
-# in, parse it into a message object tree, then without touching the tree,
-# regenerate the plain text.  The original text and the transformed text
-# should be identical.  Note: that we ignore the Unix-From since that may
-# contain a changed date.
-class TestIdempotent(TestEmailBase):
-    def _msgobj(self, filename):
-        fp = openfile(filename)
-        try:
-            data = fp.read()
-        finally:
-            fp.close()
-        msg = email.message_from_string(data)
-        return msg, data
-
-    def _idempotent(self, msg, text):
-        eq = self.ndiffAssertEqual
-        s = StringIO()
-        g = Generator(s, maxheaderlen=0)
-        g.flatten(msg)
-        eq(text, s.getvalue())
-
-    def test_parse_text_message(self):
-        eq = self.assertEqual
-        msg, text = self._msgobj('msg_01.txt')
-        eq(msg.get_content_type(), 'text/plain')
-        eq(msg.get_content_maintype(), 'text')
-        eq(msg.get_content_subtype(), 'plain')
-        eq(msg.get_params()[1], ('charset', 'us-ascii'))
-        eq(msg.get_param('charset'), 'us-ascii')
-        eq(msg.preamble, None)
-        eq(msg.epilogue, None)
-        self._idempotent(msg, text)
-
-    def test_parse_untyped_message(self):
-        eq = self.assertEqual
-        msg, text = self._msgobj('msg_03.txt')
-        eq(msg.get_content_type(), 'text/plain')
-        eq(msg.get_params(), None)
-        eq(msg.get_param('charset'), None)
-        self._idempotent(msg, text)
-
-    def test_simple_multipart(self):
-        msg, text = self._msgobj('msg_04.txt')
-        self._idempotent(msg, text)
-
-    def test_MIME_digest(self):
-        msg, text = self._msgobj('msg_02.txt')
-        self._idempotent(msg, text)
-
-    def test_long_header(self):
-        msg, text = self._msgobj('msg_27.txt')
-        self._idempotent(msg, text)
-
-    def test_MIME_digest_with_part_headers(self):
-        msg, text = self._msgobj('msg_28.txt')
-        self._idempotent(msg, text)
-
-    def test_mixed_with_image(self):
-        msg, text = self._msgobj('msg_06.txt')
-        self._idempotent(msg, text)
-
-    def test_multipart_report(self):
-        msg, text = self._msgobj('msg_05.txt')
-        self._idempotent(msg, text)
-
-    def test_dsn(self):
-        msg, text = self._msgobj('msg_16.txt')
-        self._idempotent(msg, text)
-
-    def test_preamble_epilogue(self):
-        msg, text = self._msgobj('msg_21.txt')
-        self._idempotent(msg, text)
-
-    def test_multipart_one_part(self):
-        msg, text = self._msgobj('msg_23.txt')
-        self._idempotent(msg, text)
-
-    def test_multipart_no_parts(self):
-        msg, text = self._msgobj('msg_24.txt')
-        self._idempotent(msg, text)
-
-    def test_no_start_boundary(self):
-        msg, text = self._msgobj('msg_31.txt')
-        self._idempotent(msg, text)
-
-    def test_rfc2231_charset(self):
-        msg, text = self._msgobj('msg_32.txt')
-        self._idempotent(msg, text)
-
-    def test_more_rfc2231_parameters(self):
-        msg, text = self._msgobj('msg_33.txt')
-        self._idempotent(msg, text)
-
-    def test_text_plain_in_a_multipart_digest(self):
-        msg, text = self._msgobj('msg_34.txt')
-        self._idempotent(msg, text)
-
-    def test_nested_multipart_mixeds(self):
-        msg, text = self._msgobj('msg_12a.txt')
-        self._idempotent(msg, text)
-
-    def test_message_external_body_idempotent(self):
-        msg, text = self._msgobj('msg_36.txt')
-        self._idempotent(msg, text)
-
-    def test_content_type(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        # Get a message object and reset the seek pointer for other tests
-        msg, text = self._msgobj('msg_05.txt')
-        eq(msg.get_content_type(), 'multipart/report')
-        # Test the Content-Type: parameters
-        params = {}
-        for pk, pv in msg.get_params():
-            params[pk] = pv
-        eq(params['report-type'], 'delivery-status')
-        eq(params['boundary'], 'D1690A7AC1.996856090/mail.example.com')
-        eq(msg.preamble, 'This is a MIME-encapsulated message.\n')
-        eq(msg.epilogue, '\n')
-        eq(len(msg.get_payload()), 3)
-        # Make sure the subparts are what we expect
-        msg1 = msg.get_payload(0)
-        eq(msg1.get_content_type(), 'text/plain')
-        eq(msg1.get_payload(), 'Yadda yadda yadda\n')
-        msg2 = msg.get_payload(1)
-        eq(msg2.get_content_type(), 'text/plain')
-        eq(msg2.get_payload(), 'Yadda yadda yadda\n')
-        msg3 = msg.get_payload(2)
-        eq(msg3.get_content_type(), 'message/rfc822')
-        self.assertTrue(isinstance(msg3, Message))
-        payload = msg3.get_payload()
-        unless(isinstance(payload, list))
-        eq(len(payload), 1)
-        msg4 = payload[0]
-        unless(isinstance(msg4, Message))
-        eq(msg4.get_payload(), 'Yadda yadda yadda\n')
-
-    def test_parser(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        msg, text = self._msgobj('msg_06.txt')
-        # Check some of the outer headers
-        eq(msg.get_content_type(), 'message/rfc822')
-        # Make sure the payload is a list of exactly one sub-Message, and that
-        # that submessage has a type of text/plain
-        payload = msg.get_payload()
-        unless(isinstance(payload, list))
-        eq(len(payload), 1)
-        msg1 = payload[0]
-        self.assertTrue(isinstance(msg1, Message))
-        eq(msg1.get_content_type(), 'text/plain')
-        self.assertTrue(isinstance(msg1.get_payload(), str))
-        eq(msg1.get_payload(), '\n')
-
-
-
-# Test various other bits of the package's functionality
-class TestMiscellaneous(TestEmailBase):
-    def test_message_from_string(self):
-        fp = openfile('msg_01.txt')
-        try:
-            text = fp.read()
-        finally:
-            fp.close()
-        msg = email.message_from_string(text)
-        s = StringIO()
-        # Don't wrap/continue long headers since we're trying to test
-        # idempotency.
-        g = Generator(s, maxheaderlen=0)
-        g.flatten(msg)
-        self.assertEqual(text, s.getvalue())
-
-    def test_message_from_file(self):
-        fp = openfile('msg_01.txt')
-        try:
-            text = fp.read()
-            fp.seek(0)
-            msg = email.message_from_file(fp)
-            s = StringIO()
-            # Don't wrap/continue long headers since we're trying to test
-            # idempotency.
-            g = Generator(s, maxheaderlen=0)
-            g.flatten(msg)
-            self.assertEqual(text, s.getvalue())
-        finally:
-            fp.close()
-
-    def test_message_from_string_with_class(self):
-        unless = self.assertTrue
-        fp = openfile('msg_01.txt')
-        try:
-            text = fp.read()
-        finally:
-            fp.close()
-        # Create a subclass
-        class MyMessage(Message):
-            pass
-
-        msg = email.message_from_string(text, MyMessage)
-        unless(isinstance(msg, MyMessage))
-        # Try something more complicated
-        fp = openfile('msg_02.txt')
-        try:
-            text = fp.read()
-        finally:
-            fp.close()
-        msg = email.message_from_string(text, MyMessage)
-        for subpart in msg.walk():
-            unless(isinstance(subpart, MyMessage))
-
-    def test_message_from_file_with_class(self):
-        unless = self.assertTrue
-        # Create a subclass
-        class MyMessage(Message):
-            pass
-
-        fp = openfile('msg_01.txt')
-        try:
-            msg = email.message_from_file(fp, MyMessage)
-        finally:
-            fp.close()
-        unless(isinstance(msg, MyMessage))
-        # Try something more complicated
-        fp = openfile('msg_02.txt')
-        try:
-            msg = email.message_from_file(fp, MyMessage)
-        finally:
-            fp.close()
-        for subpart in msg.walk():
-            unless(isinstance(subpart, MyMessage))
-
-    def test__all__(self):
-        module = __import__('email')
-        all = module.__all__
-        all.sort()
-        self.assertEqual(all, [
-            # Old names
-            'Charset', 'Encoders', 'Errors', 'Generator',
-            'Header', 'Iterators', 'MIMEAudio', 'MIMEBase',
-            'MIMEImage', 'MIMEMessage', 'MIMEMultipart',
-            'MIMENonMultipart', 'MIMEText', 'Message',
-            'Parser', 'Utils', 'base64MIME',
-            # new names
-            'base64mime', 'charset', 'encoders', 'errors', 'generator',
-            'header', 'iterators', 'message', 'message_from_file',
-            'message_from_string', 'mime', 'parser',
-            'quopriMIME', 'quoprimime', 'utils',
-            ])
-
-    def test_formatdate(self):
-        now = time.time()
-        self.assertEqual(Utils.parsedate(Utils.formatdate(now))[:6],
-                         time.gmtime(now)[:6])
-
-    def test_formatdate_localtime(self):
-        now = time.time()
-        self.assertEqual(
-            Utils.parsedate(Utils.formatdate(now, localtime=True))[:6],
-            time.localtime(now)[:6])
-
-    def test_formatdate_usegmt(self):
-        now = time.time()
-        self.assertEqual(
-            Utils.formatdate(now, localtime=False),
-            time.strftime('%a, %d %b %Y %H:%M:%S -0000', time.gmtime(now)))
-        self.assertEqual(
-            Utils.formatdate(now, localtime=False, usegmt=True),
-            time.strftime('%a, %d %b %Y %H:%M:%S GMT', time.gmtime(now)))
-
-    def test_parsedate_none(self):
-        self.assertEqual(Utils.parsedate(''), None)
-
-    def test_parsedate_compact(self):
-        # The FWS after the comma is optional
-        self.assertEqual(Utils.parsedate('Wed,3 Apr 2002 14:58:26 +0800'),
-                         Utils.parsedate('Wed, 3 Apr 2002 14:58:26 +0800'))
-
-    def test_parsedate_no_dayofweek(self):
-        eq = self.assertEqual
-        eq(Utils.parsedate_tz('25 Feb 2003 13:47:26 -0800'),
-           (2003, 2, 25, 13, 47, 26, 0, 1, -1, -28800))
-
-    def test_parsedate_compact_no_dayofweek(self):
-        eq = self.assertEqual
-        eq(Utils.parsedate_tz('5 Feb 2003 13:47:26 -0800'),
-           (2003, 2, 5, 13, 47, 26, 0, 1, -1, -28800))
-
-    def test_parsedate_acceptable_to_time_functions(self):
-        eq = self.assertEqual
-        timetup = Utils.parsedate('5 Feb 2003 13:47:26 -0800')
-        t = int(time.mktime(timetup))
-        eq(time.localtime(t)[:6], timetup[:6])
-        eq(int(time.strftime('%Y', timetup)), 2003)
-        timetup = Utils.parsedate_tz('5 Feb 2003 13:47:26 -0800')
-        t = int(time.mktime(timetup[:9]))
-        eq(time.localtime(t)[:6], timetup[:6])
-        eq(int(time.strftime('%Y', timetup[:9])), 2003)
-
-    def test_parsedate_y2k(self):
-        """Test for parsing a date with a two-digit year.
-
-        Parsing a date with a two-digit year should return the correct
-        four-digit year. RFC822 allows two-digit years, but RFC2822 (which
-        obsoletes RFC822) requires four-digit years.
-
-        """
-        self.assertEqual(Utils.parsedate_tz('25 Feb 03 13:47:26 -0800'),
-                         Utils.parsedate_tz('25 Feb 2003 13:47:26 -0800'))
-        self.assertEqual(Utils.parsedate_tz('25 Feb 71 13:47:26 -0800'),
-                         Utils.parsedate_tz('25 Feb 1971 13:47:26 -0800'))
-
-    def test_parseaddr_empty(self):
-        self.assertEqual(Utils.parseaddr('<>'), ('', ''))
-        self.assertEqual(Utils.formataddr(Utils.parseaddr('<>')), '')
-
-    def test_noquote_dump(self):
-        self.assertEqual(
-            Utils.formataddr(('A Silly Person', 'person@dom.ain')),
-            'A Silly Person <person@dom.ain>')
-
-    def test_escape_dump(self):
-        self.assertEqual(
-            Utils.formataddr(('A (Very) Silly Person', 'person@dom.ain')),
-            r'"A \(Very\) Silly Person" <person@dom.ain>')
-        a = r'A \(Special\) Person'
-        b = 'person@dom.ain'
-        self.assertEqual(Utils.parseaddr(Utils.formataddr((a, b))), (a, b))
-
-    def test_escape_backslashes(self):
-        self.assertEqual(
-            Utils.formataddr(('Arthur \Backslash\ Foobar', 'person@dom.ain')),
-            r'"Arthur \\Backslash\\ Foobar" <person@dom.ain>')
-        a = r'Arthur \Backslash\ Foobar'
-        b = 'person@dom.ain'
-        self.assertEqual(Utils.parseaddr(Utils.formataddr((a, b))), (a, b))
-
-    def test_name_with_dot(self):
-        x = 'John X. Doe <jxd@example.com>'
-        y = '"John X. Doe" <jxd@example.com>'
-        a, b = ('John X. Doe', 'jxd@example.com')
-        self.assertEqual(Utils.parseaddr(x), (a, b))
-        self.assertEqual(Utils.parseaddr(y), (a, b))
-        # formataddr() quotes the name if there's a dot in it
-        self.assertEqual(Utils.formataddr((a, b)), y)
-
-    def test_parseaddr_preserves_quoted_pairs_in_addresses(self):
-        # issue 10005.  Note that in the third test the second pair of
-        # backslashes is not actually a quoted pair because it is not inside a
-        # comment or quoted string: the address being parsed has a quoted
-        # string containing a quoted backslash, followed by 'example' and two
-        # backslashes, followed by another quoted string containing a space and
-        # the word 'example'.  parseaddr copies those two backslashes
-        # literally.  Per rfc5322 this is not technically correct since a \ may
-        # not appear in an address outside of a quoted string.  It is probably
-        # a sensible Postel interpretation, though.
-        eq = self.assertEqual
-        eq(Utils.parseaddr('""example" example"@example.com'),
-          ('', '""example" example"@example.com'))
-        eq(Utils.parseaddr('"\\"example\\" example"@example.com'),
-          ('', '"\\"example\\" example"@example.com'))
-        eq(Utils.parseaddr('"\\\\"example\\\\" example"@example.com'),
-          ('', '"\\\\"example\\\\" example"@example.com'))
-
-    def test_multiline_from_comment(self):
-        x = """\
-Foo
-\tBar <foo@example.com>"""
-        self.assertEqual(Utils.parseaddr(x), ('Foo Bar', 'foo@example.com'))
-
-    def test_quote_dump(self):
-        self.assertEqual(
-            Utils.formataddr(('A Silly; Person', 'person@dom.ain')),
-            r'"A Silly; Person" <person@dom.ain>')
-
-    def test_fix_eols(self):
-        eq = self.assertEqual
-        eq(Utils.fix_eols('hello'), 'hello')
-        eq(Utils.fix_eols('hello\n'), 'hello\r\n')
-        eq(Utils.fix_eols('hello\r'), 'hello\r\n')
-        eq(Utils.fix_eols('hello\r\n'), 'hello\r\n')
-        eq(Utils.fix_eols('hello\n\r'), 'hello\r\n\r\n')
-
-    def test_charset_richcomparisons(self):
-        eq = self.assertEqual
-        ne = self.assertNotEqual
-        cset1 = Charset()
-        cset2 = Charset()
-        eq(cset1, 'us-ascii')
-        eq(cset1, 'US-ASCII')
-        eq(cset1, 'Us-AsCiI')
-        eq('us-ascii', cset1)
-        eq('US-ASCII', cset1)
-        eq('Us-AsCiI', cset1)
-        ne(cset1, 'usascii')
-        ne(cset1, 'USASCII')
-        ne(cset1, 'UsAsCiI')
-        ne('usascii', cset1)
-        ne('USASCII', cset1)
-        ne('UsAsCiI', cset1)
-        eq(cset1, cset2)
-        eq(cset2, cset1)
-
-    def test_getaddresses(self):
-        eq = self.assertEqual
-        eq(Utils.getaddresses(['aperson@dom.ain (Al Person)',
-                               'Bud Person <bperson@dom.ain>']),
-           [('Al Person', 'aperson@dom.ain'),
-            ('Bud Person', 'bperson@dom.ain')])
-
-    def test_getaddresses_nasty(self):
-        eq = self.assertEqual
-        eq(Utils.getaddresses(['foo: ;']), [('', '')])
-        eq(Utils.getaddresses(
-           ['[]*-- =~$']),
-           [('', ''), ('', ''), ('', '*--')])
-        eq(Utils.getaddresses(
-           ['foo: ;', '"Jason R. Mastaler" <jason@dom.ain>']),
-           [('', ''), ('Jason R. Mastaler', 'jason@dom.ain')])
-
-    def test_getaddresses_embedded_comment(self):
-        """Test proper handling of a nested comment"""
-        eq = self.assertEqual
-        addrs = Utils.getaddresses(['User ((nested comment)) <foo@bar.com>'])
-        eq(addrs[0][1], 'foo@bar.com')
-
-    def test_utils_quote_unquote(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg.add_header('content-disposition', 'attachment',
-                       filename='foo\\wacky"name')
-        eq(msg.get_filename(), 'foo\\wacky"name')
-
-    def test_get_body_encoding_with_bogus_charset(self):
-        charset = Charset('not a charset')
-        self.assertEqual(charset.get_body_encoding(), 'base64')
-
-    def test_get_body_encoding_with_uppercase_charset(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg['Content-Type'] = 'text/plain; charset=UTF-8'
-        eq(msg['content-type'], 'text/plain; charset=UTF-8')
-        charsets = msg.get_charsets()
-        eq(len(charsets), 1)
-        eq(charsets[0], 'utf-8')
-        charset = Charset(charsets[0])
-        eq(charset.get_body_encoding(), 'base64')
-        msg.set_payload('hello world', charset=charset)
-        eq(msg.get_payload(), 'aGVsbG8gd29ybGQ=\n')
-        eq(msg.get_payload(decode=True), 'hello world')
-        eq(msg['content-transfer-encoding'], 'base64')
-        # Try another one
-        msg = Message()
-        msg['Content-Type'] = 'text/plain; charset="US-ASCII"'
-        charsets = msg.get_charsets()
-        eq(len(charsets), 1)
-        eq(charsets[0], 'us-ascii')
-        charset = Charset(charsets[0])
-        eq(charset.get_body_encoding(), Encoders.encode_7or8bit)
-        msg.set_payload('hello world', charset=charset)
-        eq(msg.get_payload(), 'hello world')
-        eq(msg['content-transfer-encoding'], '7bit')
-
-    def test_charsets_case_insensitive(self):
-        lc = Charset('us-ascii')
-        uc = Charset('US-ASCII')
-        self.assertEqual(lc.get_body_encoding(), uc.get_body_encoding())
-
-    def test_partial_falls_inside_message_delivery_status(self):
-        eq = self.ndiffAssertEqual
-        # The Parser interface provides chunks of data to FeedParser in 8192
-        # byte gulps.  SF bug #1076485 found one of those chunks inside
-        # message/delivery-status header block, which triggered an
-        # unreadline() of NeedMoreData.
-        msg = self._msgobj('msg_43.txt')
-        sfp = StringIO()
-        Iterators._structure(msg, sfp)
-        eq(sfp.getvalue(), """\
-multipart/report
-    text/plain
-    message/delivery-status
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-    text/rfc822-headers
-""")
-
-
-
-# Test the iterator/generators
-class TestIterators(TestEmailBase):
-    def test_body_line_iterator(self):
-        eq = self.assertEqual
-        neq = self.ndiffAssertEqual
-        # First a simple non-multipart message
-        msg = self._msgobj('msg_01.txt')
-        it = Iterators.body_line_iterator(msg)
-        lines = list(it)
-        eq(len(lines), 6)
-        neq(EMPTYSTRING.join(lines), msg.get_payload())
-        # Now a more complicated multipart
-        msg = self._msgobj('msg_02.txt')
-        it = Iterators.body_line_iterator(msg)
-        lines = list(it)
-        eq(len(lines), 43)
-        fp = openfile('msg_19.txt')
-        try:
-            neq(EMPTYSTRING.join(lines), fp.read())
-        finally:
-            fp.close()
-
-    def test_typed_subpart_iterator(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_04.txt')
-        it = Iterators.typed_subpart_iterator(msg, 'text')
-        lines = []
-        subparts = 0
-        for subpart in it:
-            subparts += 1
-            lines.append(subpart.get_payload())
-        eq(subparts, 2)
-        eq(EMPTYSTRING.join(lines), """\
-a simple kind of mirror
-to reflect upon our own
-a simple kind of mirror
-to reflect upon our own
-""")
-
-    def test_typed_subpart_iterator_default_type(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_03.txt')
-        it = Iterators.typed_subpart_iterator(msg, 'text', 'plain')
-        lines = []
-        subparts = 0
-        for subpart in it:
-            subparts += 1
-            lines.append(subpart.get_payload())
-        eq(subparts, 1)
-        eq(EMPTYSTRING.join(lines), """\
-
-Hi,
-
-Do you like this message?
-
--Me
-""")
-
-    def test_pushCR_LF(self):
-        '''FeedParser BufferedSubFile.push() assumed it received complete
-           line endings.  A CR ending one push() followed by a LF starting
-           the next push() added an empty line.
-        '''
-        imt = [
-            ("a\r \n",  2),
-            ("b",       0),
-            ("c\n",     1),
-            ("",        0),
-            ("d\r\n",   1),
-            ("e\r",     0),
-            ("\nf",     1),
-            ("\r\n",    1),
-          ]
-        from email.feedparser import BufferedSubFile, NeedMoreData
-        bsf = BufferedSubFile()
-        om = []
-        nt = 0
-        for il, n in imt:
-            bsf.push(il)
-            nt += n
-            n1 = 0
-            while True:
-                ol = bsf.readline()
-                if ol == NeedMoreData:
-                    break
-                om.append(ol)
-                n1 += 1
-            self.assertTrue(n == n1)
-        self.assertTrue(len(om) == nt)
-        self.assertTrue(''.join([il for il, n in imt]) == ''.join(om))
-
-
-
-class TestParsers(TestEmailBase):
-    def test_header_parser(self):
-        eq = self.assertEqual
-        # Parse only the headers of a complex multipart MIME document
-        fp = openfile('msg_02.txt')
-        try:
-            msg = HeaderParser().parse(fp)
-        finally:
-            fp.close()
-        eq(msg['from'], 'ppp-request@zzz.org')
-        eq(msg['to'], 'ppp@zzz.org')
-        eq(msg.get_content_type(), 'multipart/mixed')
-        self.assertFalse(msg.is_multipart())
-        self.assertTrue(isinstance(msg.get_payload(), str))
-
-    def test_whitespace_continuation(self):
-        eq = self.assertEqual
-        # This message contains a line after the Subject: header that has only
-        # whitespace, but it is not empty!
-        msg = email.message_from_string("""\
-From: aperson@dom.ain
-To: bperson@dom.ain
-Subject: the next line has a space on it
-\x20
-Date: Mon, 8 Apr 2002 15:09:19 -0400
-Message-ID: spam
-
-Here's the message body
-""")
-        eq(msg['subject'], 'the next line has a space on it\n ')
-        eq(msg['message-id'], 'spam')
-        eq(msg.get_payload(), "Here's the message body\n")
-
-    def test_whitespace_continuation_last_header(self):
-        eq = self.assertEqual
-        # Like the previous test, but the subject line is the last
-        # header.
-        msg = email.message_from_string("""\
-From: aperson@dom.ain
-To: bperson@dom.ain
-Date: Mon, 8 Apr 2002 15:09:19 -0400
-Message-ID: spam
-Subject: the next line has a space on it
-\x20
-
-Here's the message body
-""")
-        eq(msg['subject'], 'the next line has a space on it\n ')
-        eq(msg['message-id'], 'spam')
-        eq(msg.get_payload(), "Here's the message body\n")
-
-    def test_crlf_separation(self):
-        eq = self.assertEqual
-        fp = openfile('msg_26.txt', mode='rb')
-        try:
-            msg = Parser().parse(fp)
-        finally:
-            fp.close()
-        eq(len(msg.get_payload()), 2)
-        part1 = msg.get_payload(0)
-        eq(part1.get_content_type(), 'text/plain')
-        eq(part1.get_payload(), 'Simple email with attachment.\r\n\r\n')
-        part2 = msg.get_payload(1)
-        eq(part2.get_content_type(), 'application/riscos')
-
-    def test_multipart_digest_with_extra_mime_headers(self):
-        eq = self.assertEqual
-        neq = self.ndiffAssertEqual
-        fp = openfile('msg_28.txt')
-        try:
-            msg = email.message_from_file(fp)
-        finally:
-            fp.close()
-        # Structure is:
-        # multipart/digest
-        #   message/rfc822
-        #     text/plain
-        #   message/rfc822
-        #     text/plain
-        eq(msg.is_multipart(), 1)
-        eq(len(msg.get_payload()), 2)
-        part1 = msg.get_payload(0)
-        eq(part1.get_content_type(), 'message/rfc822')
-        eq(part1.is_multipart(), 1)
-        eq(len(part1.get_payload()), 1)
-        part1a = part1.get_payload(0)
-        eq(part1a.is_multipart(), 0)
-        eq(part1a.get_content_type(), 'text/plain')
-        neq(part1a.get_payload(), 'message 1\n')
-        # next message/rfc822
-        part2 = msg.get_payload(1)
-        eq(part2.get_content_type(), 'message/rfc822')
-        eq(part2.is_multipart(), 1)
-        eq(len(part2.get_payload()), 1)
-        part2a = part2.get_payload(0)
-        eq(part2a.is_multipart(), 0)
-        eq(part2a.get_content_type(), 'text/plain')
-        neq(part2a.get_payload(), 'message 2\n')
-
-    def test_three_lines(self):
-        # A bug report by Andrew McNamara
-        lines = ['From: Andrew Person <aperson@dom.ain',
-                 'Subject: Test',
-                 'Date: Tue, 20 Aug 2002 16:43:45 +1000']
-        msg = email.message_from_string(NL.join(lines))
-        self.assertEqual(msg['date'], 'Tue, 20 Aug 2002 16:43:45 +1000')
-
-    def test_strip_line_feed_and_carriage_return_in_headers(self):
-        eq = self.assertEqual
-        # For [ 1002475 ] email message parser doesn't handle \r\n correctly
-        value1 = 'text'
-        value2 = 'more text'
-        m = 'Header: %s\r\nNext-Header: %s\r\n\r\nBody\r\n\r\n' % (
-            value1, value2)
-        msg = email.message_from_string(m)
-        eq(msg.get('Header'), value1)
-        eq(msg.get('Next-Header'), value2)
-
-    def test_rfc2822_header_syntax(self):
-        eq = self.assertEqual
-        m = '>From: foo\nFrom: bar\n!"#QUX;~: zoo\n\nbody'
-        msg = email.message_from_string(m)
-        eq(len(msg.keys()), 3)
-        keys = msg.keys()
-        keys.sort()
-        eq(keys, ['!"#QUX;~', '>From', 'From'])
-        eq(msg.get_payload(), 'body')
-
-    def test_rfc2822_space_not_allowed_in_header(self):
-        eq = self.assertEqual
-        m = '>From foo@example.com 11:25:53\nFrom: bar\n!"#QUX;~: zoo\n\nbody'
-        msg = email.message_from_string(m)
-        eq(len(msg.keys()), 0)
-
-    def test_rfc2822_one_character_header(self):
-        eq = self.assertEqual
-        m = 'A: first header\nB: second header\nCC: third header\n\nbody'
-        msg = email.message_from_string(m)
-        headers = msg.keys()
-        headers.sort()
-        eq(headers, ['A', 'B', 'CC'])
-        eq(msg.get_payload(), 'body')
-
-    def test_CRLFLF_at_end_of_part(self):
-        # issue 5610: feedparser should not eat two chars from body part ending
-        # with "\r\n\n".
-        m = (
-            "From: foo@bar.com\n"
-            "To: baz\n"
-            "Mime-Version: 1.0\n"
-            "Content-Type: multipart/mixed; boundary=BOUNDARY\n"
-            "\n"
-            "--BOUNDARY\n"
-            "Content-Type: text/plain\n"
-            "\n"
-            "body ending with CRLF newline\r\n"
-            "\n"
-            "--BOUNDARY--\n"
-          )
-        msg = email.message_from_string(m)
-        self.assertTrue(msg.get_payload(0).get_payload().endswith('\r\n'))
-
-
-class TestBase64(unittest.TestCase):
-    def test_len(self):
-        eq = self.assertEqual
-        eq(base64MIME.base64_len('hello'),
-           len(base64MIME.encode('hello', eol='')))
-        for size in range(15):
-            if   size == 0 : bsize = 0
-            elif size <= 3 : bsize = 4
-            elif size <= 6 : bsize = 8
-            elif size <= 9 : bsize = 12
-            elif size <= 12: bsize = 16
-            else           : bsize = 20
-            eq(base64MIME.base64_len('x'*size), bsize)
-
-    def test_decode(self):
-        eq = self.assertEqual
-        eq(base64MIME.decode(''), '')
-        eq(base64MIME.decode('aGVsbG8='), 'hello')
-        eq(base64MIME.decode('aGVsbG8=', 'X'), 'hello')
-        eq(base64MIME.decode('aGVsbG8NCndvcmxk\n', 'X'), 'helloXworld')
-
-    def test_encode(self):
-        eq = self.assertEqual
-        eq(base64MIME.encode(''), '')
-        eq(base64MIME.encode('hello'), 'aGVsbG8=\n')
-        # Test the binary flag
-        eq(base64MIME.encode('hello\n'), 'aGVsbG8K\n')
-        eq(base64MIME.encode('hello\n', 0), 'aGVsbG8NCg==\n')
-        # Test the maxlinelen arg
-        eq(base64MIME.encode('xxxx ' * 20, maxlinelen=40), """\
-eHh4eCB4eHh4IHh4eHggeHh4eCB4eHh4IHh4eHgg
-eHh4eCB4eHh4IHh4eHggeHh4eCB4eHh4IHh4eHgg
-eHh4eCB4eHh4IHh4eHggeHh4eCB4eHh4IHh4eHgg
-eHh4eCB4eHh4IA==
-""")
-        # Test the eol argument
-        eq(base64MIME.encode('xxxx ' * 20, maxlinelen=40, eol='\r\n'), """\
-eHh4eCB4eHh4IHh4eHggeHh4eCB4eHh4IHh4eHgg\r
-eHh4eCB4eHh4IHh4eHggeHh4eCB4eHh4IHh4eHgg\r
-eHh4eCB4eHh4IHh4eHggeHh4eCB4eHh4IHh4eHgg\r
-eHh4eCB4eHh4IA==\r
-""")
-
-    def test_header_encode(self):
-        eq = self.assertEqual
-        he = base64MIME.header_encode
-        eq(he('hello'), '=?iso-8859-1?b?aGVsbG8=?=')
-        eq(he('hello\nworld'), '=?iso-8859-1?b?aGVsbG8NCndvcmxk?=')
-        # Test the charset option
-        eq(he('hello', charset='iso-8859-2'), '=?iso-8859-2?b?aGVsbG8=?=')
-        # Test the keep_eols flag
-        eq(he('hello\nworld', keep_eols=True),
-           '=?iso-8859-1?b?aGVsbG8Kd29ybGQ=?=')
-        # Test the maxlinelen argument
-        eq(he('xxxx ' * 20, maxlinelen=40), """\
-=?iso-8859-1?b?eHh4eCB4eHh4IHh4eHggeHg=?=
- =?iso-8859-1?b?eHggeHh4eCB4eHh4IHh4eHg=?=
- =?iso-8859-1?b?IHh4eHggeHh4eCB4eHh4IHg=?=
- =?iso-8859-1?b?eHh4IHh4eHggeHh4eCB4eHg=?=
- =?iso-8859-1?b?eCB4eHh4IHh4eHggeHh4eCA=?=
- =?iso-8859-1?b?eHh4eCB4eHh4IHh4eHgg?=""")
-        # Test the eol argument
-        eq(he('xxxx ' * 20, maxlinelen=40, eol='\r\n'), """\
-=?iso-8859-1?b?eHh4eCB4eHh4IHh4eHggeHg=?=\r
- =?iso-8859-1?b?eHggeHh4eCB4eHh4IHh4eHg=?=\r
- =?iso-8859-1?b?IHh4eHggeHh4eCB4eHh4IHg=?=\r
- =?iso-8859-1?b?eHh4IHh4eHggeHh4eCB4eHg=?=\r
- =?iso-8859-1?b?eCB4eHh4IHh4eHggeHh4eCA=?=\r
- =?iso-8859-1?b?eHh4eCB4eHh4IHh4eHgg?=""")
-
-
-
-class TestQuopri(unittest.TestCase):
-    def setUp(self):
-        self.hlit = [chr(x) for x in range(ord('a'), ord('z')+1)] + \
-                    [chr(x) for x in range(ord('A'), ord('Z')+1)] + \
-                    [chr(x) for x in range(ord('0'), ord('9')+1)] + \
-                    ['!', '*', '+', '-', '/', ' ']
-        self.hnon = [chr(x) for x in range(256) if chr(x) not in self.hlit]
-        assert len(self.hlit) + len(self.hnon) == 256
-        self.blit = [chr(x) for x in range(ord(' '), ord('~')+1)] + ['\t']
-        self.blit.remove('=')
-        self.bnon = [chr(x) for x in range(256) if chr(x) not in self.blit]
-        assert len(self.blit) + len(self.bnon) == 256
-
-    def test_header_quopri_check(self):
-        for c in self.hlit:
-            self.assertFalse(quopriMIME.header_quopri_check(c))
-        for c in self.hnon:
-            self.assertTrue(quopriMIME.header_quopri_check(c))
-
-    def test_body_quopri_check(self):
-        for c in self.blit:
-            self.assertFalse(quopriMIME.body_quopri_check(c))
-        for c in self.bnon:
-            self.assertTrue(quopriMIME.body_quopri_check(c))
-
-    def test_header_quopri_len(self):
-        eq = self.assertEqual
-        hql = quopriMIME.header_quopri_len
-        enc = quopriMIME.header_encode
-        for s in ('hello', 'h@e@l@l@o@'):
-            # Empty charset and no line-endings.  7 == RFC chrome
-            eq(hql(s), len(enc(s, charset='', eol=''))-7)
-        for c in self.hlit:
-            eq(hql(c), 1)
-        for c in self.hnon:
-            eq(hql(c), 3)
-
-    def test_body_quopri_len(self):
-        eq = self.assertEqual
-        bql = quopriMIME.body_quopri_len
-        for c in self.blit:
-            eq(bql(c), 1)
-        for c in self.bnon:
-            eq(bql(c), 3)
-
-    def test_quote_unquote_idempotent(self):
-        for x in range(256):
-            c = chr(x)
-            self.assertEqual(quopriMIME.unquote(quopriMIME.quote(c)), c)
-
-    def test_header_encode(self):
-        eq = self.assertEqual
-        he = quopriMIME.header_encode
-        eq(he('hello'), '=?iso-8859-1?q?hello?=')
-        eq(he('hello\nworld'), '=?iso-8859-1?q?hello=0D=0Aworld?=')
-        # Test the charset option
-        eq(he('hello', charset='iso-8859-2'), '=?iso-8859-2?q?hello?=')
-        # Test the keep_eols flag
-        eq(he('hello\nworld', keep_eols=True), '=?iso-8859-1?q?hello=0Aworld?=')
-        # Test a non-ASCII character
-        eq(he('hello\xc7there'), '=?iso-8859-1?q?hello=C7there?=')
-        # Test the maxlinelen argument
-        eq(he('xxxx ' * 20, maxlinelen=40), """\
-=?iso-8859-1?q?xxxx_xxxx_xxxx_xxxx_xx?=
- =?iso-8859-1?q?xx_xxxx_xxxx_xxxx_xxxx?=
- =?iso-8859-1?q?_xxxx_xxxx_xxxx_xxxx_x?=
- =?iso-8859-1?q?xxx_xxxx_xxxx_xxxx_xxx?=
- =?iso-8859-1?q?x_xxxx_xxxx_?=""")
-        # Test the eol argument
-        eq(he('xxxx ' * 20, maxlinelen=40, eol='\r\n'), """\
-=?iso-8859-1?q?xxxx_xxxx_xxxx_xxxx_xx?=\r
- =?iso-8859-1?q?xx_xxxx_xxxx_xxxx_xxxx?=\r
- =?iso-8859-1?q?_xxxx_xxxx_xxxx_xxxx_x?=\r
- =?iso-8859-1?q?xxx_xxxx_xxxx_xxxx_xxx?=\r
- =?iso-8859-1?q?x_xxxx_xxxx_?=""")
-
-    def test_decode(self):
-        eq = self.assertEqual
-        eq(quopriMIME.decode(''), '')
-        eq(quopriMIME.decode('hello'), 'hello')
-        eq(quopriMIME.decode('hello', 'X'), 'hello')
-        eq(quopriMIME.decode('hello\nworld', 'X'), 'helloXworld')
-
-    def test_encode(self):
-        eq = self.assertEqual
-        eq(quopriMIME.encode(''), '')
-        eq(quopriMIME.encode('hello'), 'hello')
-        # Test the binary flag
-        eq(quopriMIME.encode('hello\r\nworld'), 'hello\nworld')
-        eq(quopriMIME.encode('hello\r\nworld', 0), 'hello\nworld')
-        # Test the maxlinelen arg
-        eq(quopriMIME.encode('xxxx ' * 20, maxlinelen=40), """\
-xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx=
- xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxx=
-x xxxx xxxx xxxx xxxx=20""")
-        # Test the eol argument
-        eq(quopriMIME.encode('xxxx ' * 20, maxlinelen=40, eol='\r\n'), """\
-xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx=\r
- xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxx=\r
-x xxxx xxxx xxxx xxxx=20""")
-        eq(quopriMIME.encode("""\
-one line
-
-two line"""), """\
-one line
-
-two line""")
-
-
-
-# Test the Charset class
-class TestCharset(unittest.TestCase):
-    def tearDown(self):
-        from email import Charset as CharsetModule
-        try:
-            del CharsetModule.CHARSETS['fake']
-        except KeyError:
-            pass
-
-    def test_idempotent(self):
-        eq = self.assertEqual
-        # Make sure us-ascii = no Unicode conversion
-        c = Charset('us-ascii')
-        s = 'Hello World!'
-        sp = c.to_splittable(s)
-        eq(s, c.from_splittable(sp))
-        # test 8-bit idempotency with us-ascii
-        s = '\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa'
-        sp = c.to_splittable(s)
-        eq(s, c.from_splittable(sp))
-
-    def test_body_encode(self):
-        eq = self.assertEqual
-        # Try a charset with QP body encoding
-        c = Charset('iso-8859-1')
-        eq('hello w=F6rld', c.body_encode('hello w\xf6rld'))
-        # Try a charset with Base64 body encoding
-        c = Charset('utf-8')
-        eq('aGVsbG8gd29ybGQ=\n', c.body_encode('hello world'))
-        # Try a charset with None body encoding
-        c = Charset('us-ascii')
-        eq('hello world', c.body_encode('hello world'))
-        # Try the convert argument, where input codec != output codec
-        c = Charset('euc-jp')
-        # With apologies to Tokio Kikuchi ;)
-        try:
-            eq('\x1b$B5FCO;~IW\x1b(B',
-               c.body_encode('\xb5\xc6\xc3\xcf\xbb\xfe\xc9\xd7'))
-            eq('\xb5\xc6\xc3\xcf\xbb\xfe\xc9\xd7',
-               c.body_encode('\xb5\xc6\xc3\xcf\xbb\xfe\xc9\xd7', False))
-        except LookupError:
-            # We probably don't have the Japanese codecs installed
-            pass
-        # Testing SF bug #625509, which we have to fake, since there are no
-        # built-in encodings where the header encoding is QP but the body
-        # encoding is not.
-        from email import Charset as CharsetModule
-        CharsetModule.add_charset('fake', CharsetModule.QP, None)
-        c = Charset('fake')
-        eq('hello w\xf6rld', c.body_encode('hello w\xf6rld'))
-
-    def test_unicode_charset_name(self):
-        charset = Charset(u'us-ascii')
-        self.assertEqual(str(charset), 'us-ascii')
-        self.assertRaises(Errors.CharsetError, Charset, 'asc\xffii')
-
-    def test_codecs_aliases_accepted(self):
-        charset = Charset('utf8')
-        self.assertEqual(str(charset), 'utf-8')
-
-
-# Test multilingual MIME headers.
-class TestHeader(TestEmailBase):
-    def test_simple(self):
-        eq = self.ndiffAssertEqual
-        h = Header('Hello World!')
-        eq(h.encode(), 'Hello World!')
-        h.append(' Goodbye World!')
-        eq(h.encode(), 'Hello World!  Goodbye World!')
-
-    def test_simple_surprise(self):
-        eq = self.ndiffAssertEqual
-        h = Header('Hello World!')
-        eq(h.encode(), 'Hello World!')
-        h.append('Goodbye World!')
-        eq(h.encode(), 'Hello World! Goodbye World!')
-
-    def test_header_needs_no_decoding(self):
-        h = 'no decoding needed'
-        self.assertEqual(decode_header(h), [(h, None)])
-
-    def test_long(self):
-        h = Header("I am the very model of a modern Major-General; I've information vegetable, animal, and mineral; I know the kings of England, and I quote the fights historical from Marathon to Waterloo, in order categorical; I'm very well acquainted, too, with matters mathematical; I understand equations, both the simple and quadratical; about binomial theorem I'm teeming with a lot o' news, with many cheerful facts about the square of the hypotenuse.",
-                   maxlinelen=76)
-        for l in h.encode(splitchars=' ').split('\n '):
-            self.assertTrue(len(l) <= 76)
-
-    def test_multilingual(self):
-        eq = self.ndiffAssertEqual
-        g = Charset("iso-8859-1")
-        cz = Charset("iso-8859-2")
-        utf8 = Charset("utf-8")
-        g_head = "Die Mieter treten hier ein werden mit einem Foerderband komfortabel den Korridor entlang, an s\xfcdl\xfcndischen Wandgem\xe4lden vorbei, gegen die rotierenden Klingen bef\xf6rdert. "
-        cz_head = "Finan\xe8ni metropole se hroutily pod tlakem jejich d\xf9vtipu.. "
-        utf8_head = u"\u6b63\u78ba\u306b\u8a00\u3046\u3068\u7ffb\u8a33\u306f\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4e00\u90e8\u306f\u30c9\u30a4\u30c4\u8a9e\u3067\u3059\u304c\u3001\u3042\u3068\u306f\u3067\u305f\u3089\u3081\u3067\u3059\u3002\u5b9f\u969b\u306b\u306f\u300cWenn ist das Nunstuck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput.\u300d\u3068\u8a00\u3063\u3066\u3044\u307e\u3059\u3002".encode("utf-8")
-        h = Header(g_head, g)
-        h.append(cz_head, cz)
-        h.append(utf8_head, utf8)
-        enc = h.encode()
-        eq(enc, """\
-=?iso-8859-1?q?Die_Mieter_treten_hier_ein_werden_mit_einem_Foerderband_ko?=
- =?iso-8859-1?q?mfortabel_den_Korridor_entlang=2C_an_s=FCdl=FCndischen_Wan?=
- =?iso-8859-1?q?dgem=E4lden_vorbei=2C_gegen_die_rotierenden_Klingen_bef=F6?=
- =?iso-8859-1?q?rdert=2E_?= =?iso-8859-2?q?Finan=E8ni_metropole_se_hroutily?=
- =?iso-8859-2?q?_pod_tlakem_jejich_d=F9vtipu=2E=2E_?= =?utf-8?b?5q2j56K6?=
- =?utf-8?b?44Gr6KiA44GG44Go57+76Kiz44Gv44GV44KM44Gm44GE44G+44Gb44KT44CC?=
- =?utf-8?b?5LiA6YOo44Gv44OJ44Kk44OE6Kqe44Gn44GZ44GM44CB44GC44Go44Gv44Gn?=
- =?utf-8?b?44Gf44KJ44KB44Gn44GZ44CC5a6f6Zqb44Gr44Gv44CMV2VubiBpc3QgZGFz?=
- =?utf-8?q?_Nunstuck_git_und_Slotermeyer=3F_Ja!_Beiherhund_das_Oder_die_Fl?=
- =?utf-8?b?aXBwZXJ3YWxkdCBnZXJzcHV0LuOAjeOBqOiogOOBo+OBpuOBhOOBvuOBmQ==?=
- =?utf-8?b?44CC?=""")
-        eq(decode_header(enc),
-           [(g_head, "iso-8859-1"), (cz_head, "iso-8859-2"),
-            (utf8_head, "utf-8")])
-        ustr = unicode(h)
-        eq(ustr.encode('utf-8'),
-           'Die Mieter treten hier ein werden mit einem Foerderband '
-           'komfortabel den Korridor entlang, an s\xc3\xbcdl\xc3\xbcndischen '
-           'Wandgem\xc3\xa4lden vorbei, gegen die rotierenden Klingen '
-           'bef\xc3\xb6rdert. Finan\xc4\x8dni metropole se hroutily pod '
-           'tlakem jejich d\xc5\xafvtipu.. \xe6\xad\xa3\xe7\xa2\xba\xe3\x81'
-           '\xab\xe8\xa8\x80\xe3\x81\x86\xe3\x81\xa8\xe7\xbf\xbb\xe8\xa8\xb3'
-           '\xe3\x81\xaf\xe3\x81\x95\xe3\x82\x8c\xe3\x81\xa6\xe3\x81\x84\xe3'
-           '\x81\xbe\xe3\x81\x9b\xe3\x82\x93\xe3\x80\x82\xe4\xb8\x80\xe9\x83'
-           '\xa8\xe3\x81\xaf\xe3\x83\x89\xe3\x82\xa4\xe3\x83\x84\xe8\xaa\x9e'
-           '\xe3\x81\xa7\xe3\x81\x99\xe3\x81\x8c\xe3\x80\x81\xe3\x81\x82\xe3'
-           '\x81\xa8\xe3\x81\xaf\xe3\x81\xa7\xe3\x81\x9f\xe3\x82\x89\xe3\x82'
-           '\x81\xe3\x81\xa7\xe3\x81\x99\xe3\x80\x82\xe5\xae\x9f\xe9\x9a\x9b'
-           '\xe3\x81\xab\xe3\x81\xaf\xe3\x80\x8cWenn ist das Nunstuck git '
-           'und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt '
-           'gersput.\xe3\x80\x8d\xe3\x81\xa8\xe8\xa8\x80\xe3\x81\xa3\xe3\x81'
-           '\xa6\xe3\x81\x84\xe3\x81\xbe\xe3\x81\x99\xe3\x80\x82')
-        # Test make_header()
-        newh = make_header(decode_header(enc))
-        eq(newh, enc)
-
-    def test_header_ctor_default_args(self):
-        eq = self.ndiffAssertEqual
-        h = Header()
-        eq(h, '')
-        h.append('foo', Charset('iso-8859-1'))
-        eq(h, '=?iso-8859-1?q?foo?=')
-
-    def test_explicit_maxlinelen(self):
-        eq = self.ndiffAssertEqual
-        hstr = 'A very long line that must get split to something other than at the 76th character boundary to test the non-default behavior'
-        h = Header(hstr)
-        eq(h.encode(), '''\
-A very long line that must get split to something other than at the 76th
- character boundary to test the non-default behavior''')
-        h = Header(hstr, header_name='Subject')
-        eq(h.encode(), '''\
-A very long line that must get split to something other than at the
- 76th character boundary to test the non-default behavior''')
-        h = Header(hstr, maxlinelen=1024, header_name='Subject')
-        eq(h.encode(), hstr)
-
-    def test_us_ascii_header(self):
-        eq = self.assertEqual
-        s = 'hello'
-        x = decode_header(s)
-        eq(x, [('hello', None)])
-        h = make_header(x)
-        eq(s, h.encode())
-
-    def test_string_charset(self):
-        eq = self.assertEqual
-        h = Header()
-        h.append('hello', 'iso-8859-1')
-        eq(h, '=?iso-8859-1?q?hello?=')
-
-##    def test_unicode_error(self):
-##        raises = self.assertRaises
-##        raises(UnicodeError, Header, u'[P\xf6stal]', 'us-ascii')
-##        raises(UnicodeError, Header, '[P\xf6stal]', 'us-ascii')
-##        h = Header()
-##        raises(UnicodeError, h.append, u'[P\xf6stal]', 'us-ascii')
-##        raises(UnicodeError, h.append, '[P\xf6stal]', 'us-ascii')
-##        raises(UnicodeError, Header, u'\u83ca\u5730\u6642\u592b', 'iso-8859-1')
-
-    def test_utf8_shortest(self):
-        eq = self.assertEqual
-        h = Header(u'p\xf6stal', 'utf-8')
-        eq(h.encode(), '=?utf-8?q?p=C3=B6stal?=')
-        h = Header(u'\u83ca\u5730\u6642\u592b', 'utf-8')
-        eq(h.encode(), '=?utf-8?b?6I+K5Zyw5pmC5aSr?=')
-
-    def test_bad_8bit_header(self):
-        raises = self.assertRaises
-        eq = self.assertEqual
-        x = 'Ynwp4dUEbay Auction Semiar- No Charge \x96 Earn Big'
-        raises(UnicodeError, Header, x)
-        h = Header()
-        raises(UnicodeError, h.append, x)
-        eq(str(Header(x, errors='replace')), x)
-        h.append(x, errors='replace')
-        eq(str(h), x)
-
-    def test_encoded_adjacent_nonencoded(self):
-        eq = self.assertEqual
-        h = Header()
-        h.append('hello', 'iso-8859-1')
-        h.append('world')
-        s = h.encode()
-        eq(s, '=?iso-8859-1?q?hello?= world')
-        h = make_header(decode_header(s))
-        eq(h.encode(), s)
-
-    def test_whitespace_eater(self):
-        eq = self.assertEqual
-        s = 'Subject: =?koi8-r?b?8NLP18XSy8EgzsEgxsnOwczYztk=?= =?koi8-r?q?=CA?= zz.'
-        parts = decode_header(s)
-        eq(parts, [('Subject:', None), ('\xf0\xd2\xcf\xd7\xc5\xd2\xcb\xc1 \xce\xc1 \xc6\xc9\xce\xc1\xcc\xd8\xce\xd9\xca', 'koi8-r'), ('zz.', None)])
-        hdr = make_header(parts)
-        eq(hdr.encode(),
-           'Subject: =?koi8-r?b?8NLP18XSy8EgzsEgxsnOwczYztnK?= zz.')
-
-    def test_broken_base64_header(self):
-        raises = self.assertRaises
-        s = 'Subject: =?EUC-KR?B?CSixpLDtKSC/7Liuvsax4iC6uLmwMcijIKHaILzSwd/H0SC8+LCjwLsgv7W/+Mj3I ?='
-        raises(Errors.HeaderParseError, decode_header, s)
-
-    # Issue 1078919
-    def test_ascii_add_header(self):
-        msg = Message()
-        msg.add_header('Content-Disposition', 'attachment',
-                       filename='bud.gif')
-        self.assertEqual('attachment; filename="bud.gif"',
-            msg['Content-Disposition'])
-
-    def test_nonascii_add_header_via_triple(self):
-        msg = Message()
-        msg.add_header('Content-Disposition', 'attachment',
-            filename=('iso-8859-1', '', 'Fu\xdfballer.ppt'))
-        self.assertEqual(
-            'attachment; filename*="iso-8859-1\'\'Fu%DFballer.ppt"',
-            msg['Content-Disposition'])
-
-    def test_encode_unaliased_charset(self):
-        # Issue 1379416: when the charset has no output conversion,
-        # output was accidentally getting coerced to unicode.
-        res = Header('abc','iso-8859-2').encode()
-        self.assertEqual(res, '=?iso-8859-2?q?abc?=')
-        self.assertIsInstance(res, str)
-
-
-# Test RFC 2231 header parameters (en/de)coding
-class TestRFC2231(TestEmailBase):
-    def test_get_param(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_29.txt')
-        eq(msg.get_param('title'),
-           ('us-ascii', 'en', 'This is even more ***fun*** isn\'t it!'))
-        eq(msg.get_param('title', unquote=False),
-           ('us-ascii', 'en', '"This is even more ***fun*** isn\'t it!"'))
-
-    def test_set_param(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg.set_param('title', 'This is even more ***fun*** isn\'t it!',
-                      charset='us-ascii')
-        eq(msg.get_param('title'),
-           ('us-ascii', '', 'This is even more ***fun*** isn\'t it!'))
-        msg.set_param('title', 'This is even more ***fun*** isn\'t it!',
-                      charset='us-ascii', language='en')
-        eq(msg.get_param('title'),
-           ('us-ascii', 'en', 'This is even more ***fun*** isn\'t it!'))
-        msg = self._msgobj('msg_01.txt')
-        msg.set_param('title', 'This is even more ***fun*** isn\'t it!',
-                      charset='us-ascii', language='en')
-        self.ndiffAssertEqual(msg.as_string(), """\
-Return-Path: <bbb@zzz.org>
-Delivered-To: bbb@zzz.org
-Received: by mail.zzz.org (Postfix, from userid 889)
- id 27CEAD38CC; Fri,  4 May 2001 14:05:44 -0400 (EDT)
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Message-ID: <15090.61304.110929.45684@aaa.zzz.org>
-From: bbb@ddd.com (John X. Doe)
-To: bbb@zzz.org
-Subject: This is a test message
-Date: Fri, 4 May 2001 14:05:44 -0400
-Content-Type: text/plain; charset=us-ascii;
- title*="us-ascii'en'This%20is%20even%20more%20%2A%2A%2Afun%2A%2A%2A%20isn%27t%20it%21"
-
-
-Hi,
-
-Do you like this message?
-
--Me
-""")
-
-    def test_del_param(self):
-        eq = self.ndiffAssertEqual
-        msg = self._msgobj('msg_01.txt')
-        msg.set_param('foo', 'bar', charset='us-ascii', language='en')
-        msg.set_param('title', 'This is even more ***fun*** isn\'t it!',
-            charset='us-ascii', language='en')
-        msg.del_param('foo', header='Content-Type')
-        eq(msg.as_string(), """\
-Return-Path: <bbb@zzz.org>
-Delivered-To: bbb@zzz.org
-Received: by mail.zzz.org (Postfix, from userid 889)
- id 27CEAD38CC; Fri,  4 May 2001 14:05:44 -0400 (EDT)
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Message-ID: <15090.61304.110929.45684@aaa.zzz.org>
-From: bbb@ddd.com (John X. Doe)
-To: bbb@zzz.org
-Subject: This is a test message
-Date: Fri, 4 May 2001 14:05:44 -0400
-Content-Type: text/plain; charset="us-ascii";
- title*="us-ascii'en'This%20is%20even%20more%20%2A%2A%2Afun%2A%2A%2A%20isn%27t%20it%21"
-
-
-Hi,
-
-Do you like this message?
-
--Me
-""")
-
-    def test_rfc2231_get_content_charset(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_32.txt')
-        eq(msg.get_content_charset(), 'us-ascii')
-
-    def test_rfc2231_no_language_or_charset(self):
-        m = '''\
-Content-Transfer-Encoding: 8bit
-Content-Disposition: inline; filename="file____C__DOCUMENTS_20AND_20SETTINGS_FABIEN_LOCAL_20SETTINGS_TEMP_nsmail.htm"
-Content-Type: text/html; NAME*0=file____C__DOCUMENTS_20AND_20SETTINGS_FABIEN_LOCAL_20SETTINGS_TEM; NAME*1=P_nsmail.htm
-
-'''
-        msg = email.message_from_string(m)
-        param = msg.get_param('NAME')
-        self.assertFalse(isinstance(param, tuple))
-        self.assertEqual(
-            param,
-            'file____C__DOCUMENTS_20AND_20SETTINGS_FABIEN_LOCAL_20SETTINGS_TEMP_nsmail.htm')
-
-    def test_rfc2231_no_language_or_charset_in_filename(self):
-        m = '''\
-Content-Disposition: inline;
-\tfilename*0*="''This%20is%20even%20more%20";
-\tfilename*1*="%2A%2A%2Afun%2A%2A%2A%20";
-\tfilename*2="is it not.pdf"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(msg.get_filename(),
-                         'This is even more ***fun*** is it not.pdf')
-
-    def test_rfc2231_no_language_or_charset_in_filename_encoded(self):
-        m = '''\
-Content-Disposition: inline;
-\tfilename*0*="''This%20is%20even%20more%20";
-\tfilename*1*="%2A%2A%2Afun%2A%2A%2A%20";
-\tfilename*2="is it not.pdf"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(msg.get_filename(),
-                         'This is even more ***fun*** is it not.pdf')
-
-    def test_rfc2231_partly_encoded(self):
-        m = '''\
-Content-Disposition: inline;
-\tfilename*0="''This%20is%20even%20more%20";
-\tfilename*1*="%2A%2A%2Afun%2A%2A%2A%20";
-\tfilename*2="is it not.pdf"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(
-            msg.get_filename(),
-            'This%20is%20even%20more%20***fun*** is it not.pdf')
-
-    def test_rfc2231_partly_nonencoded(self):
-        m = '''\
-Content-Disposition: inline;
-\tfilename*0="This%20is%20even%20more%20";
-\tfilename*1="%2A%2A%2Afun%2A%2A%2A%20";
-\tfilename*2="is it not.pdf"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(
-            msg.get_filename(),
-            'This%20is%20even%20more%20%2A%2A%2Afun%2A%2A%2A%20is it not.pdf')
-
-    def test_rfc2231_no_language_or_charset_in_boundary(self):
-        m = '''\
-Content-Type: multipart/alternative;
-\tboundary*0*="''This%20is%20even%20more%20";
-\tboundary*1*="%2A%2A%2Afun%2A%2A%2A%20";
-\tboundary*2="is it not.pdf"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(msg.get_boundary(),
-                         'This is even more ***fun*** is it not.pdf')
-
-    def test_rfc2231_no_language_or_charset_in_charset(self):
-        # This is a nonsensical charset value, but tests the code anyway
-        m = '''\
-Content-Type: text/plain;
-\tcharset*0*="This%20is%20even%20more%20";
-\tcharset*1*="%2A%2A%2Afun%2A%2A%2A%20";
-\tcharset*2="is it not.pdf"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(msg.get_content_charset(),
-                         'this is even more ***fun*** is it not.pdf')
-
-    def test_rfc2231_bad_encoding_in_filename(self):
-        m = '''\
-Content-Disposition: inline;
-\tfilename*0*="bogus'xx'This%20is%20even%20more%20";
-\tfilename*1*="%2A%2A%2Afun%2A%2A%2A%20";
-\tfilename*2="is it not.pdf"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(msg.get_filename(),
-                         'This is even more ***fun*** is it not.pdf')
-
-    def test_rfc2231_bad_encoding_in_charset(self):
-        m = """\
-Content-Type: text/plain; charset*=bogus''utf-8%E2%80%9D
-
-"""
-        msg = email.message_from_string(m)
-        # This should return None because non-ascii characters in the charset
-        # are not allowed.
-        self.assertEqual(msg.get_content_charset(), None)
-
-    def test_rfc2231_bad_character_in_charset(self):
-        m = """\
-Content-Type: text/plain; charset*=ascii''utf-8%E2%80%9D
-
-"""
-        msg = email.message_from_string(m)
-        # This should return None because non-ascii characters in the charset
-        # are not allowed.
-        self.assertEqual(msg.get_content_charset(), None)
-
-    def test_rfc2231_bad_character_in_filename(self):
-        m = '''\
-Content-Disposition: inline;
-\tfilename*0*="ascii'xx'This%20is%20even%20more%20";
-\tfilename*1*="%2A%2A%2Afun%2A%2A%2A%20";
-\tfilename*2*="is it not.pdf%E2"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(msg.get_filename(),
-                         u'This is even more ***fun*** is it not.pdf\ufffd')
-
-    def test_rfc2231_unknown_encoding(self):
-        m = """\
-Content-Transfer-Encoding: 8bit
-Content-Disposition: inline; filename*=X-UNKNOWN''myfile.txt
-
-"""
-        msg = email.message_from_string(m)
-        self.assertEqual(msg.get_filename(), 'myfile.txt')
-
-    def test_rfc2231_single_tick_in_filename_extended(self):
-        eq = self.assertEqual
-        m = """\
-Content-Type: application/x-foo;
-\tname*0*=\"Frank's\"; name*1*=\" Document\"
-
-"""
-        msg = email.message_from_string(m)
-        charset, language, s = msg.get_param('name')
-        eq(charset, None)
-        eq(language, None)
-        eq(s, "Frank's Document")
-
-    def test_rfc2231_single_tick_in_filename(self):
-        m = """\
-Content-Type: application/x-foo; name*0=\"Frank's\"; name*1=\" Document\"
-
-"""
-        msg = email.message_from_string(m)
-        param = msg.get_param('name')
-        self.assertFalse(isinstance(param, tuple))
-        self.assertEqual(param, "Frank's Document")
-
-    def test_rfc2231_tick_attack_extended(self):
-        eq = self.assertEqual
-        m = """\
-Content-Type: application/x-foo;
-\tname*0*=\"us-ascii'en-us'Frank's\"; name*1*=\" Document\"
-
-"""
-        msg = email.message_from_string(m)
-        charset, language, s = msg.get_param('name')
-        eq(charset, 'us-ascii')
-        eq(language, 'en-us')
-        eq(s, "Frank's Document")
-
-    def test_rfc2231_tick_attack(self):
-        m = """\
-Content-Type: application/x-foo;
-\tname*0=\"us-ascii'en-us'Frank's\"; name*1=\" Document\"
-
-"""
-        msg = email.message_from_string(m)
-        param = msg.get_param('name')
-        self.assertFalse(isinstance(param, tuple))
-        self.assertEqual(param, "us-ascii'en-us'Frank's Document")
-
-    def test_rfc2231_no_extended_values(self):
-        eq = self.assertEqual
-        m = """\
-Content-Type: application/x-foo; name=\"Frank's Document\"
-
-"""
-        msg = email.message_from_string(m)
-        eq(msg.get_param('name'), "Frank's Document")
-
-    def test_rfc2231_encoded_then_unencoded_segments(self):
-        eq = self.assertEqual
-        m = """\
-Content-Type: application/x-foo;
-\tname*0*=\"us-ascii'en-us'My\";
-\tname*1=\" Document\";
-\tname*2*=\" For You\"
-
-"""
-        msg = email.message_from_string(m)
-        charset, language, s = msg.get_param('name')
-        eq(charset, 'us-ascii')
-        eq(language, 'en-us')
-        eq(s, 'My Document For You')
-
-    def test_rfc2231_unencoded_then_encoded_segments(self):
-        eq = self.assertEqual
-        m = """\
-Content-Type: application/x-foo;
-\tname*0=\"us-ascii'en-us'My\";
-\tname*1*=\" Document\";
-\tname*2*=\" For You\"
-
-"""
-        msg = email.message_from_string(m)
-        charset, language, s = msg.get_param('name')
-        eq(charset, 'us-ascii')
-        eq(language, 'en-us')
-        eq(s, 'My Document For You')
-
-
-
-# Tests to ensure that signed parts of an email are completely preserved, as
-# required by RFC1847 section 2.1.  Note that these are incomplete, because the
-# email package does not currently always preserve the body.  See issue 1670765.
-class TestSigned(TestEmailBase):
-
-    def _msg_and_obj(self, filename):
-        fp = openfile(findfile(filename))
-        try:
-            original = fp.read()
-            msg = email.message_from_string(original)
-        finally:
-            fp.close()
-        return original, msg
-
-    def _signed_parts_eq(self, original, result):
-        # Extract the first mime part of each message
-        import re
-        repart = re.compile(r'^--([^\n]+)\n(.*?)\n--\1$', re.S | re.M)
-        inpart = repart.search(original).group(2)
-        outpart = repart.search(result).group(2)
-        self.assertEqual(outpart, inpart)
-
-    def test_long_headers_as_string(self):
-        original, msg = self._msg_and_obj('msg_45.txt')
-        result = msg.as_string()
-        self._signed_parts_eq(original, result)
-
-    def test_long_headers_flatten(self):
-        original, msg = self._msg_and_obj('msg_45.txt')
-        fp = StringIO()
-        Generator(fp).flatten(msg)
-        result = fp.getvalue()
-        self._signed_parts_eq(original, result)
-
-
-
-def _testclasses():
-    mod = sys.modules[__name__]
-    return [getattr(mod, name) for name in dir(mod) if name.startswith('Test')]
-
-
-def suite():
-    suite = unittest.TestSuite()
-    for testclass in _testclasses():
-        suite.addTest(unittest.makeSuite(testclass))
-    return suite
-
-
-def test_main():
-    for testclass in _testclasses():
-        run_unittest(testclass)
-
-
-
-if __name__ == '__main__':
-    unittest.main(defaultTest='suite')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_codecs.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_codecs.py
deleted file mode 100644
index be0a996..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_codecs.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright (C) 2002-2006 Python Software Foundation
-# Contact: email-sig@python.org
-# email package unit tests for (optional) Asian codecs
-
-import unittest
-from test.test_support import run_unittest
-
-from email.test.test_email import TestEmailBase
-from email.charset import Charset
-from email.header import Header, decode_header
-from email.message import Message
-
-# We're compatible with Python 2.3, but it doesn't have the built-in Asian
-# codecs, so we have to skip all these tests.
-try:
-    unicode('foo', 'euc-jp')
-except LookupError:
-    raise unittest.SkipTest
-
-
-\f
-class TestEmailAsianCodecs(TestEmailBase):
-    def test_japanese_codecs(self):
-        eq = self.ndiffAssertEqual
-        j = Charset("euc-jp")
-        g = Charset("iso-8859-1")
-        h = Header("Hello World!")
-        jhello = '\xa5\xcf\xa5\xed\xa1\xbc\xa5\xef\xa1\xbc\xa5\xeb\xa5\xc9\xa1\xaa'
-        ghello = 'Gr\xfc\xdf Gott!'
-        h.append(jhello, j)
-        h.append(ghello, g)
-        # BAW: This used to -- and maybe should -- fold the two iso-8859-1
-        # chunks into a single encoded word.  However it doesn't violate the
-        # standard to have them as two encoded chunks and maybe it's
-        # reasonable <wink> for each .append() call to result in a separate
-        # encoded word.
-        eq(h.encode(), """\
-Hello World! =?iso-2022-jp?b?GyRCJU8lbSE8JW8hPCVrJUkhKhsoQg==?=
- =?iso-8859-1?q?Gr=FC=DF?= =?iso-8859-1?q?_Gott!?=""")
-        eq(decode_header(h.encode()),
-           [('Hello World!', None),
-            ('\x1b$B%O%m!<%o!<%k%I!*\x1b(B', 'iso-2022-jp'),
-            ('Gr\xfc\xdf Gott!', 'iso-8859-1')])
-        long = 'test-ja \xa4\xd8\xc5\xea\xb9\xc6\xa4\xb5\xa4\xec\xa4\xbf\xa5\xe1\xa1\xbc\xa5\xeb\xa4\xcf\xbb\xca\xb2\xf1\xbc\xd4\xa4\xce\xbe\xb5\xc7\xa7\xa4\xf2\xc2\xd4\xa4\xc3\xa4\xc6\xa4\xa4\xa4\xde\xa4\xb9'
-        h = Header(long, j, header_name="Subject")
-        # test a very long header
-        enc = h.encode()
-        # TK: splitting point may differ by codec design and/or Header encoding
-        eq(enc , """\
-=?iso-2022-jp?b?dGVzdC1qYSAbJEIkWEVqOUYkNSRsJD8lYSE8JWskTztKGyhC?=
- =?iso-2022-jp?b?GyRCMnE8VCROPjVHJyRyQlQkQyRGJCQkXiQ5GyhC?=""")
-        # TK: full decode comparison
-        eq(h.__unicode__().encode('euc-jp'), long)
-
-    def test_payload_encoding(self):
-        jhello = '\xa5\xcf\xa5\xed\xa1\xbc\xa5\xef\xa1\xbc\xa5\xeb\xa5\xc9\xa1\xaa'
-        jcode  = 'euc-jp'
-        msg = Message()
-        msg.set_payload(jhello, jcode)
-        ustr = unicode(msg.get_payload(), msg.get_content_charset())
-        self.assertEqual(jhello, ustr.encode(jcode))
-
-
-\f
-def suite():
-    suite = unittest.TestSuite()
-    suite.addTest(unittest.makeSuite(TestEmailAsianCodecs))
-    return suite
-
-
-def test_main():
-    run_unittest(TestEmailAsianCodecs)
-
-
-\f
-if __name__ == '__main__':
-    unittest.main(defaultTest='suite')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_codecs_renamed.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_codecs_renamed.py
deleted file mode 100644
index be0a996..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_codecs_renamed.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright (C) 2002-2006 Python Software Foundation
-# Contact: email-sig@python.org
-# email package unit tests for (optional) Asian codecs
-
-import unittest
-from test.test_support import run_unittest
-
-from email.test.test_email import TestEmailBase
-from email.charset import Charset
-from email.header import Header, decode_header
-from email.message import Message
-
-# We're compatible with Python 2.3, but it doesn't have the built-in Asian
-# codecs, so we have to skip all these tests.
-try:
-    unicode('foo', 'euc-jp')
-except LookupError:
-    raise unittest.SkipTest
-
-
-\f
-class TestEmailAsianCodecs(TestEmailBase):
-    def test_japanese_codecs(self):
-        eq = self.ndiffAssertEqual
-        j = Charset("euc-jp")
-        g = Charset("iso-8859-1")
-        h = Header("Hello World!")
-        jhello = '\xa5\xcf\xa5\xed\xa1\xbc\xa5\xef\xa1\xbc\xa5\xeb\xa5\xc9\xa1\xaa'
-        ghello = 'Gr\xfc\xdf Gott!'
-        h.append(jhello, j)
-        h.append(ghello, g)
-        # BAW: This used to -- and maybe should -- fold the two iso-8859-1
-        # chunks into a single encoded word.  However it doesn't violate the
-        # standard to have them as two encoded chunks and maybe it's
-        # reasonable <wink> for each .append() call to result in a separate
-        # encoded word.
-        eq(h.encode(), """\
-Hello World! =?iso-2022-jp?b?GyRCJU8lbSE8JW8hPCVrJUkhKhsoQg==?=
- =?iso-8859-1?q?Gr=FC=DF?= =?iso-8859-1?q?_Gott!?=""")
-        eq(decode_header(h.encode()),
-           [('Hello World!', None),
-            ('\x1b$B%O%m!<%o!<%k%I!*\x1b(B', 'iso-2022-jp'),
-            ('Gr\xfc\xdf Gott!', 'iso-8859-1')])
-        long = 'test-ja \xa4\xd8\xc5\xea\xb9\xc6\xa4\xb5\xa4\xec\xa4\xbf\xa5\xe1\xa1\xbc\xa5\xeb\xa4\xcf\xbb\xca\xb2\xf1\xbc\xd4\xa4\xce\xbe\xb5\xc7\xa7\xa4\xf2\xc2\xd4\xa4\xc3\xa4\xc6\xa4\xa4\xa4\xde\xa4\xb9'
-        h = Header(long, j, header_name="Subject")
-        # test a very long header
-        enc = h.encode()
-        # TK: splitting point may differ by codec design and/or Header encoding
-        eq(enc , """\
-=?iso-2022-jp?b?dGVzdC1qYSAbJEIkWEVqOUYkNSRsJD8lYSE8JWskTztKGyhC?=
- =?iso-2022-jp?b?GyRCMnE8VCROPjVHJyRyQlQkQyRGJCQkXiQ5GyhC?=""")
-        # TK: full decode comparison
-        eq(h.__unicode__().encode('euc-jp'), long)
-
-    def test_payload_encoding(self):
-        jhello = '\xa5\xcf\xa5\xed\xa1\xbc\xa5\xef\xa1\xbc\xa5\xeb\xa5\xc9\xa1\xaa'
-        jcode  = 'euc-jp'
-        msg = Message()
-        msg.set_payload(jhello, jcode)
-        ustr = unicode(msg.get_payload(), msg.get_content_charset())
-        self.assertEqual(jhello, ustr.encode(jcode))
-
-
-\f
-def suite():
-    suite = unittest.TestSuite()
-    suite.addTest(unittest.makeSuite(TestEmailAsianCodecs))
-    return suite
-
-
-def test_main():
-    run_unittest(TestEmailAsianCodecs)
-
-
-\f
-if __name__ == '__main__':
-    unittest.main(defaultTest='suite')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_renamed.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_renamed.py
deleted file mode 100644
index b7366c9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_renamed.py
+++ /dev/null
@@ -1,3297 +0,0 @@
-# Copyright (C) 2001-2007 Python Software Foundation
-# Contact: email-sig@python.org
-# email package unit tests
-
-import os
-import sys
-import time
-import base64
-import difflib
-import unittest
-import warnings
-from cStringIO import StringIO
-
-import email
-
-from email.charset import Charset
-from email.header import Header, decode_header, make_header
-from email.parser import Parser, HeaderParser
-from email.generator import Generator, DecodedGenerator
-from email.message import Message
-from email.mime.application import MIMEApplication
-from email.mime.audio import MIMEAudio
-from email.mime.text import MIMEText
-from email.mime.image import MIMEImage
-from email.mime.base import MIMEBase
-from email.mime.message import MIMEMessage
-from email.mime.multipart import MIMEMultipart
-from email import utils
-from email import errors
-from email import encoders
-from email import iterators
-from email import base64mime
-from email import quoprimime
-
-from test.test_support import findfile, run_unittest
-from email.test import __file__ as landmark
-
-
-NL = '\n'
-EMPTYSTRING = ''
-SPACE = ' '
-
-
-
-def openfile(filename, mode='r'):
-    path = os.path.join(os.path.dirname(landmark), 'data', filename)
-    return open(path, mode)
-
-
-
-# Base test class
-class TestEmailBase(unittest.TestCase):
-    def ndiffAssertEqual(self, first, second):
-        """Like assertEqual except use ndiff for readable output."""
-        if first != second:
-            sfirst = str(first)
-            ssecond = str(second)
-            diff = difflib.ndiff(sfirst.splitlines(), ssecond.splitlines())
-            fp = StringIO()
-            print >> fp, NL, NL.join(diff)
-            raise self.failureException, fp.getvalue()
-
-    def _msgobj(self, filename):
-        fp = openfile(findfile(filename))
-        try:
-            msg = email.message_from_file(fp)
-        finally:
-            fp.close()
-        return msg
-
-
-
-# Test various aspects of the Message class's API
-class TestMessageAPI(TestEmailBase):
-    def test_get_all(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_20.txt')
-        eq(msg.get_all('cc'), ['ccc@zzz.org', 'ddd@zzz.org', 'eee@zzz.org'])
-        eq(msg.get_all('xx', 'n/a'), 'n/a')
-
-    def test_getset_charset(self):
-        eq = self.assertEqual
-        msg = Message()
-        eq(msg.get_charset(), None)
-        charset = Charset('iso-8859-1')
-        msg.set_charset(charset)
-        eq(msg['mime-version'], '1.0')
-        eq(msg.get_content_type(), 'text/plain')
-        eq(msg['content-type'], 'text/plain; charset="iso-8859-1"')
-        eq(msg.get_param('charset'), 'iso-8859-1')
-        eq(msg['content-transfer-encoding'], 'quoted-printable')
-        eq(msg.get_charset().input_charset, 'iso-8859-1')
-        # Remove the charset
-        msg.set_charset(None)
-        eq(msg.get_charset(), None)
-        eq(msg['content-type'], 'text/plain')
-        # Try adding a charset when there's already MIME headers present
-        msg = Message()
-        msg['MIME-Version'] = '2.0'
-        msg['Content-Type'] = 'text/x-weird'
-        msg['Content-Transfer-Encoding'] = 'quinted-puntable'
-        msg.set_charset(charset)
-        eq(msg['mime-version'], '2.0')
-        eq(msg['content-type'], 'text/x-weird; charset="iso-8859-1"')
-        eq(msg['content-transfer-encoding'], 'quinted-puntable')
-
-    def test_set_charset_from_string(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg.set_charset('us-ascii')
-        eq(msg.get_charset().input_charset, 'us-ascii')
-        eq(msg['content-type'], 'text/plain; charset="us-ascii"')
-
-    def test_set_payload_with_charset(self):
-        msg = Message()
-        charset = Charset('iso-8859-1')
-        msg.set_payload('This is a string payload', charset)
-        self.assertEqual(msg.get_charset().input_charset, 'iso-8859-1')
-
-    def test_get_charsets(self):
-        eq = self.assertEqual
-
-        msg = self._msgobj('msg_08.txt')
-        charsets = msg.get_charsets()
-        eq(charsets, [None, 'us-ascii', 'iso-8859-1', 'iso-8859-2', 'koi8-r'])
-
-        msg = self._msgobj('msg_09.txt')
-        charsets = msg.get_charsets('dingbat')
-        eq(charsets, ['dingbat', 'us-ascii', 'iso-8859-1', 'dingbat',
-                      'koi8-r'])
-
-        msg = self._msgobj('msg_12.txt')
-        charsets = msg.get_charsets()
-        eq(charsets, [None, 'us-ascii', 'iso-8859-1', None, 'iso-8859-2',
-                      'iso-8859-3', 'us-ascii', 'koi8-r'])
-
-    def test_get_filename(self):
-        eq = self.assertEqual
-
-        msg = self._msgobj('msg_04.txt')
-        filenames = [p.get_filename() for p in msg.get_payload()]
-        eq(filenames, ['msg.txt', 'msg.txt'])
-
-        msg = self._msgobj('msg_07.txt')
-        subpart = msg.get_payload(1)
-        eq(subpart.get_filename(), 'dingusfish.gif')
-
-    def test_get_filename_with_name_parameter(self):
-        eq = self.assertEqual
-
-        msg = self._msgobj('msg_44.txt')
-        filenames = [p.get_filename() for p in msg.get_payload()]
-        eq(filenames, ['msg.txt', 'msg.txt'])
-
-    def test_get_boundary(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_07.txt')
-        # No quotes!
-        eq(msg.get_boundary(), 'BOUNDARY')
-
-    def test_set_boundary(self):
-        eq = self.assertEqual
-        # This one has no existing boundary parameter, but the Content-Type:
-        # header appears fifth.
-        msg = self._msgobj('msg_01.txt')
-        msg.set_boundary('BOUNDARY')
-        header, value = msg.items()[4]
-        eq(header.lower(), 'content-type')
-        eq(value, 'text/plain; charset="us-ascii"; boundary="BOUNDARY"')
-        # This one has a Content-Type: header, with a boundary, stuck in the
-        # middle of its headers.  Make sure the order is preserved; it should
-        # be fifth.
-        msg = self._msgobj('msg_04.txt')
-        msg.set_boundary('BOUNDARY')
-        header, value = msg.items()[4]
-        eq(header.lower(), 'content-type')
-        eq(value, 'multipart/mixed; boundary="BOUNDARY"')
-        # And this one has no Content-Type: header at all.
-        msg = self._msgobj('msg_03.txt')
-        self.assertRaises(errors.HeaderParseError,
-                          msg.set_boundary, 'BOUNDARY')
-
-    def test_get_decoded_payload(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_10.txt')
-        # The outer message is a multipart
-        eq(msg.get_payload(decode=True), None)
-        # Subpart 1 is 7bit encoded
-        eq(msg.get_payload(0).get_payload(decode=True),
-           'This is a 7bit encoded message.\n')
-        # Subpart 2 is quopri
-        eq(msg.get_payload(1).get_payload(decode=True),
-           '\xa1This is a Quoted Printable encoded message!\n')
-        # Subpart 3 is base64
-        eq(msg.get_payload(2).get_payload(decode=True),
-           'This is a Base64 encoded message.')
-        # Subpart 4 is base64 with a trailing newline, which
-        # used to be stripped (issue 7143).
-        eq(msg.get_payload(3).get_payload(decode=True),
-           'This is a Base64 encoded message.\n')
-        # Subpart 5 has no Content-Transfer-Encoding: header.
-        eq(msg.get_payload(4).get_payload(decode=True),
-           'This has no Content-Transfer-Encoding: header.\n')
-
-    def test_get_decoded_uu_payload(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg.set_payload('begin 666 -\n+:&5L;&\\@=V]R;&0 \n \nend\n')
-        for cte in ('x-uuencode', 'uuencode', 'uue', 'x-uue'):
-            msg['content-transfer-encoding'] = cte
-            eq(msg.get_payload(decode=True), 'hello world')
-        # Now try some bogus data
-        msg.set_payload('foo')
-        eq(msg.get_payload(decode=True), 'foo')
-
-    def test_decoded_generator(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_07.txt')
-        fp = openfile('msg_17.txt')
-        try:
-            text = fp.read()
-        finally:
-            fp.close()
-        s = StringIO()
-        g = DecodedGenerator(s)
-        g.flatten(msg)
-        eq(s.getvalue(), text)
-
-    def test__contains__(self):
-        msg = Message()
-        msg['From'] = 'Me'
-        msg['to'] = 'You'
-        # Check for case insensitivity
-        self.assertTrue('from' in msg)
-        self.assertTrue('From' in msg)
-        self.assertTrue('FROM' in msg)
-        self.assertTrue('to' in msg)
-        self.assertTrue('To' in msg)
-        self.assertTrue('TO' in msg)
-
-    def test_as_string(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_01.txt')
-        fp = openfile('msg_01.txt')
-        try:
-            # BAW 30-Mar-2009 Evil be here.  So, the generator is broken with
-            # respect to long line breaking.  It's also not idempotent when a
-            # header from a parsed message is continued with tabs rather than
-            # spaces.  Before we fixed bug 1974 it was reversedly broken,
-            # i.e. headers that were continued with spaces got continued with
-            # tabs.  For Python 2.x there's really no good fix and in Python
-            # 3.x all this stuff is re-written to be right(er).  Chris Withers
-            # convinced me that using space as the default continuation
-            # character is less bad for more applications.
-            text = fp.read().replace('\t', ' ')
-        finally:
-            fp.close()
-        self.ndiffAssertEqual(text, msg.as_string())
-        fullrepr = str(msg)
-        lines = fullrepr.split('\n')
-        self.assertTrue(lines[0].startswith('From '))
-        eq(text, NL.join(lines[1:]))
-
-    def test_bad_param(self):
-        msg = email.message_from_string("Content-Type: blarg; baz; boo\n")
-        self.assertEqual(msg.get_param('baz'), '')
-
-    def test_missing_filename(self):
-        msg = email.message_from_string("From: foo\n")
-        self.assertEqual(msg.get_filename(), None)
-
-    def test_bogus_filename(self):
-        msg = email.message_from_string(
-        "Content-Disposition: blarg; filename\n")
-        self.assertEqual(msg.get_filename(), '')
-
-    def test_missing_boundary(self):
-        msg = email.message_from_string("From: foo\n")
-        self.assertEqual(msg.get_boundary(), None)
-
-    def test_get_params(self):
-        eq = self.assertEqual
-        msg = email.message_from_string(
-            'X-Header: foo=one; bar=two; baz=three\n')
-        eq(msg.get_params(header='x-header'),
-           [('foo', 'one'), ('bar', 'two'), ('baz', 'three')])
-        msg = email.message_from_string(
-            'X-Header: foo; bar=one; baz=two\n')
-        eq(msg.get_params(header='x-header'),
-           [('foo', ''), ('bar', 'one'), ('baz', 'two')])
-        eq(msg.get_params(), None)
-        msg = email.message_from_string(
-            'X-Header: foo; bar="one"; baz=two\n')
-        eq(msg.get_params(header='x-header'),
-           [('foo', ''), ('bar', 'one'), ('baz', 'two')])
-
-    def test_get_param_liberal(self):
-        msg = Message()
-        msg['Content-Type'] = 'Content-Type: Multipart/mixed; boundary = "CPIMSSMTPC06p5f3tG"'
-        self.assertEqual(msg.get_param('boundary'), 'CPIMSSMTPC06p5f3tG')
-
-    def test_get_param(self):
-        eq = self.assertEqual
-        msg = email.message_from_string(
-            "X-Header: foo=one; bar=two; baz=three\n")
-        eq(msg.get_param('bar', header='x-header'), 'two')
-        eq(msg.get_param('quuz', header='x-header'), None)
-        eq(msg.get_param('quuz'), None)
-        msg = email.message_from_string(
-            'X-Header: foo; bar="one"; baz=two\n')
-        eq(msg.get_param('foo', header='x-header'), '')
-        eq(msg.get_param('bar', header='x-header'), 'one')
-        eq(msg.get_param('baz', header='x-header'), 'two')
-        # XXX: We are not RFC-2045 compliant!  We cannot parse:
-        # msg["Content-Type"] = 'text/plain; weird="hey; dolly? [you] @ <\\"home\\">?"'
-        # msg.get_param("weird")
-        # yet.
-
-    def test_get_param_funky_continuation_lines(self):
-        msg = self._msgobj('msg_22.txt')
-        self.assertEqual(msg.get_payload(1).get_param('name'), 'wibble.JPG')
-
-    def test_get_param_with_semis_in_quotes(self):
-        msg = email.message_from_string(
-            'Content-Type: image/pjpeg; name="Jim&amp;&amp;Jill"\n')
-        self.assertEqual(msg.get_param('name'), 'Jim&amp;&amp;Jill')
-        self.assertEqual(msg.get_param('name', unquote=False),
-                         '"Jim&amp;&amp;Jill"')
-
-    def test_has_key(self):
-        msg = email.message_from_string('Header: exists')
-        self.assertTrue(msg.has_key('header'))
-        self.assertTrue(msg.has_key('Header'))
-        self.assertTrue(msg.has_key('HEADER'))
-        self.assertFalse(msg.has_key('headeri'))
-
-    def test_set_param(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg.set_param('charset', 'iso-2022-jp')
-        eq(msg.get_param('charset'), 'iso-2022-jp')
-        msg.set_param('importance', 'high value')
-        eq(msg.get_param('importance'), 'high value')
-        eq(msg.get_param('importance', unquote=False), '"high value"')
-        eq(msg.get_params(), [('text/plain', ''),
-                              ('charset', 'iso-2022-jp'),
-                              ('importance', 'high value')])
-        eq(msg.get_params(unquote=False), [('text/plain', ''),
-                                       ('charset', '"iso-2022-jp"'),
-                                       ('importance', '"high value"')])
-        msg.set_param('charset', 'iso-9999-xx', header='X-Jimmy')
-        eq(msg.get_param('charset', header='X-Jimmy'), 'iso-9999-xx')
-
-    def test_del_param(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_05.txt')
-        eq(msg.get_params(),
-           [('multipart/report', ''), ('report-type', 'delivery-status'),
-            ('boundary', 'D1690A7AC1.996856090/mail.example.com')])
-        old_val = msg.get_param("report-type")
-        msg.del_param("report-type")
-        eq(msg.get_params(),
-           [('multipart/report', ''),
-            ('boundary', 'D1690A7AC1.996856090/mail.example.com')])
-        msg.set_param("report-type", old_val)
-        eq(msg.get_params(),
-           [('multipart/report', ''),
-            ('boundary', 'D1690A7AC1.996856090/mail.example.com'),
-            ('report-type', old_val)])
-
-    def test_del_param_on_other_header(self):
-        msg = Message()
-        msg.add_header('Content-Disposition', 'attachment', filename='bud.gif')
-        msg.del_param('filename', 'content-disposition')
-        self.assertEqual(msg['content-disposition'], 'attachment')
-
-    def test_set_type(self):
-        eq = self.assertEqual
-        msg = Message()
-        self.assertRaises(ValueError, msg.set_type, 'text')
-        msg.set_type('text/plain')
-        eq(msg['content-type'], 'text/plain')
-        msg.set_param('charset', 'us-ascii')
-        eq(msg['content-type'], 'text/plain; charset="us-ascii"')
-        msg.set_type('text/html')
-        eq(msg['content-type'], 'text/html; charset="us-ascii"')
-
-    def test_set_type_on_other_header(self):
-        msg = Message()
-        msg['X-Content-Type'] = 'text/plain'
-        msg.set_type('application/octet-stream', 'X-Content-Type')
-        self.assertEqual(msg['x-content-type'], 'application/octet-stream')
-
-    def test_get_content_type_missing(self):
-        msg = Message()
-        self.assertEqual(msg.get_content_type(), 'text/plain')
-
-    def test_get_content_type_missing_with_default_type(self):
-        msg = Message()
-        msg.set_default_type('message/rfc822')
-        self.assertEqual(msg.get_content_type(), 'message/rfc822')
-
-    def test_get_content_type_from_message_implicit(self):
-        msg = self._msgobj('msg_30.txt')
-        self.assertEqual(msg.get_payload(0).get_content_type(),
-                         'message/rfc822')
-
-    def test_get_content_type_from_message_explicit(self):
-        msg = self._msgobj('msg_28.txt')
-        self.assertEqual(msg.get_payload(0).get_content_type(),
-                         'message/rfc822')
-
-    def test_get_content_type_from_message_text_plain_implicit(self):
-        msg = self._msgobj('msg_03.txt')
-        self.assertEqual(msg.get_content_type(), 'text/plain')
-
-    def test_get_content_type_from_message_text_plain_explicit(self):
-        msg = self._msgobj('msg_01.txt')
-        self.assertEqual(msg.get_content_type(), 'text/plain')
-
-    def test_get_content_maintype_missing(self):
-        msg = Message()
-        self.assertEqual(msg.get_content_maintype(), 'text')
-
-    def test_get_content_maintype_missing_with_default_type(self):
-        msg = Message()
-        msg.set_default_type('message/rfc822')
-        self.assertEqual(msg.get_content_maintype(), 'message')
-
-    def test_get_content_maintype_from_message_implicit(self):
-        msg = self._msgobj('msg_30.txt')
-        self.assertEqual(msg.get_payload(0).get_content_maintype(), 'message')
-
-    def test_get_content_maintype_from_message_explicit(self):
-        msg = self._msgobj('msg_28.txt')
-        self.assertEqual(msg.get_payload(0).get_content_maintype(), 'message')
-
-    def test_get_content_maintype_from_message_text_plain_implicit(self):
-        msg = self._msgobj('msg_03.txt')
-        self.assertEqual(msg.get_content_maintype(), 'text')
-
-    def test_get_content_maintype_from_message_text_plain_explicit(self):
-        msg = self._msgobj('msg_01.txt')
-        self.assertEqual(msg.get_content_maintype(), 'text')
-
-    def test_get_content_subtype_missing(self):
-        msg = Message()
-        self.assertEqual(msg.get_content_subtype(), 'plain')
-
-    def test_get_content_subtype_missing_with_default_type(self):
-        msg = Message()
-        msg.set_default_type('message/rfc822')
-        self.assertEqual(msg.get_content_subtype(), 'rfc822')
-
-    def test_get_content_subtype_from_message_implicit(self):
-        msg = self._msgobj('msg_30.txt')
-        self.assertEqual(msg.get_payload(0).get_content_subtype(), 'rfc822')
-
-    def test_get_content_subtype_from_message_explicit(self):
-        msg = self._msgobj('msg_28.txt')
-        self.assertEqual(msg.get_payload(0).get_content_subtype(), 'rfc822')
-
-    def test_get_content_subtype_from_message_text_plain_implicit(self):
-        msg = self._msgobj('msg_03.txt')
-        self.assertEqual(msg.get_content_subtype(), 'plain')
-
-    def test_get_content_subtype_from_message_text_plain_explicit(self):
-        msg = self._msgobj('msg_01.txt')
-        self.assertEqual(msg.get_content_subtype(), 'plain')
-
-    def test_get_content_maintype_error(self):
-        msg = Message()
-        msg['Content-Type'] = 'no-slash-in-this-string'
-        self.assertEqual(msg.get_content_maintype(), 'text')
-
-    def test_get_content_subtype_error(self):
-        msg = Message()
-        msg['Content-Type'] = 'no-slash-in-this-string'
-        self.assertEqual(msg.get_content_subtype(), 'plain')
-
-    def test_replace_header(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg.add_header('First', 'One')
-        msg.add_header('Second', 'Two')
-        msg.add_header('Third', 'Three')
-        eq(msg.keys(), ['First', 'Second', 'Third'])
-        eq(msg.values(), ['One', 'Two', 'Three'])
-        msg.replace_header('Second', 'Twenty')
-        eq(msg.keys(), ['First', 'Second', 'Third'])
-        eq(msg.values(), ['One', 'Twenty', 'Three'])
-        msg.add_header('First', 'Eleven')
-        msg.replace_header('First', 'One Hundred')
-        eq(msg.keys(), ['First', 'Second', 'Third', 'First'])
-        eq(msg.values(), ['One Hundred', 'Twenty', 'Three', 'Eleven'])
-        self.assertRaises(KeyError, msg.replace_header, 'Fourth', 'Missing')
-
-    def test_broken_base64_payload(self):
-        x = 'AwDp0P7//y6LwKEAcPa/6Q=9'
-        msg = Message()
-        msg['content-type'] = 'audio/x-midi'
-        msg['content-transfer-encoding'] = 'base64'
-        msg.set_payload(x)
-        self.assertEqual(msg.get_payload(decode=True), x)
-
-
-
-# Test the email.encoders module
-class TestEncoders(unittest.TestCase):
-    def test_encode_empty_payload(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg.set_charset('us-ascii')
-        eq(msg['content-transfer-encoding'], '7bit')
-
-    def test_default_cte(self):
-        eq = self.assertEqual
-        msg = MIMEText('hello world')
-        eq(msg['content-transfer-encoding'], '7bit')
-
-    def test_default_cte(self):
-        eq = self.assertEqual
-        # With no explicit _charset its us-ascii, and all are 7-bit
-        msg = MIMEText('hello world')
-        eq(msg['content-transfer-encoding'], '7bit')
-        # Similar, but with 8-bit data
-        msg = MIMEText('hello \xf8 world')
-        eq(msg['content-transfer-encoding'], '8bit')
-        # And now with a different charset
-        msg = MIMEText('hello \xf8 world', _charset='iso-8859-1')
-        eq(msg['content-transfer-encoding'], 'quoted-printable')
-
-
-
-# Test long header wrapping
-class TestLongHeaders(TestEmailBase):
-    def test_split_long_continuation(self):
-        eq = self.ndiffAssertEqual
-        msg = email.message_from_string("""\
-Subject: bug demonstration
-\t12345678911234567892123456789312345678941234567895123456789612345678971234567898112345678911234567892123456789112345678911234567892123456789
-\tmore text
-
-test
-""")
-        sfp = StringIO()
-        g = Generator(sfp)
-        g.flatten(msg)
-        eq(sfp.getvalue(), """\
-Subject: bug demonstration
- 12345678911234567892123456789312345678941234567895123456789612345678971234567898112345678911234567892123456789112345678911234567892123456789
- more text
-
-test
-""")
-
-    def test_another_long_almost_unsplittable_header(self):
-        eq = self.ndiffAssertEqual
-        hstr = """\
-bug demonstration
-\t12345678911234567892123456789312345678941234567895123456789612345678971234567898112345678911234567892123456789112345678911234567892123456789
-\tmore text"""
-        h = Header(hstr, continuation_ws='\t')
-        eq(h.encode(), """\
-bug demonstration
-\t12345678911234567892123456789312345678941234567895123456789612345678971234567898112345678911234567892123456789112345678911234567892123456789
-\tmore text""")
-        h = Header(hstr)
-        eq(h.encode(), """\
-bug demonstration
- 12345678911234567892123456789312345678941234567895123456789612345678971234567898112345678911234567892123456789112345678911234567892123456789
- more text""")
-
-    def test_long_nonstring(self):
-        eq = self.ndiffAssertEqual
-        g = Charset("iso-8859-1")
-        cz = Charset("iso-8859-2")
-        utf8 = Charset("utf-8")
-        g_head = "Die Mieter treten hier ein werden mit einem Foerderband komfortabel den Korridor entlang, an s\xfcdl\xfcndischen Wandgem\xe4lden vorbei, gegen die rotierenden Klingen bef\xf6rdert. "
-        cz_head = "Finan\xe8ni metropole se hroutily pod tlakem jejich d\xf9vtipu.. "
-        utf8_head = u"\u6b63\u78ba\u306b\u8a00\u3046\u3068\u7ffb\u8a33\u306f\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4e00\u90e8\u306f\u30c9\u30a4\u30c4\u8a9e\u3067\u3059\u304c\u3001\u3042\u3068\u306f\u3067\u305f\u3089\u3081\u3067\u3059\u3002\u5b9f\u969b\u306b\u306f\u300cWenn ist das Nunstuck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput.\u300d\u3068\u8a00\u3063\u3066\u3044\u307e\u3059\u3002".encode("utf-8")
-        h = Header(g_head, g, header_name='Subject')
-        h.append(cz_head, cz)
-        h.append(utf8_head, utf8)
-        msg = Message()
-        msg['Subject'] = h
-        sfp = StringIO()
-        g = Generator(sfp)
-        g.flatten(msg)
-        eq(sfp.getvalue(), """\
-Subject: =?iso-8859-1?q?Die_Mieter_treten_hier_ein_werden_mit_einem_Foerd?=
- =?iso-8859-1?q?erband_komfortabel_den_Korridor_entlang=2C_an_s=FCdl=FCndi?=
- =?iso-8859-1?q?schen_Wandgem=E4lden_vorbei=2C_gegen_die_rotierenden_Kling?=
- =?iso-8859-1?q?en_bef=F6rdert=2E_?= =?iso-8859-2?q?Finan=E8ni_met?=
- =?iso-8859-2?q?ropole_se_hroutily_pod_tlakem_jejich_d=F9vtipu=2E=2E_?=
- =?utf-8?b?5q2j56K644Gr6KiA44GG44Go57+76Kiz44Gv44GV44KM44Gm44GE?=
- =?utf-8?b?44G+44Gb44KT44CC5LiA6YOo44Gv44OJ44Kk44OE6Kqe44Gn44GZ44GM44CB?=
- =?utf-8?b?44GC44Go44Gv44Gn44Gf44KJ44KB44Gn44GZ44CC5a6f6Zqb44Gr44Gv44CM?=
- =?utf-8?q?Wenn_ist_das_Nunstuck_git_und_Slotermeyer=3F_Ja!_Beiherhund_das?=
- =?utf-8?b?IE9kZXIgZGllIEZsaXBwZXJ3YWxkdCBnZXJzcHV0LuOAjeOBqOiogOOBow==?=
- =?utf-8?b?44Gm44GE44G+44GZ44CC?=
-
-""")
-        eq(h.encode(), """\
-=?iso-8859-1?q?Die_Mieter_treten_hier_ein_werden_mit_einem_Foerd?=
- =?iso-8859-1?q?erband_komfortabel_den_Korridor_entlang=2C_an_s=FCdl=FCndi?=
- =?iso-8859-1?q?schen_Wandgem=E4lden_vorbei=2C_gegen_die_rotierenden_Kling?=
- =?iso-8859-1?q?en_bef=F6rdert=2E_?= =?iso-8859-2?q?Finan=E8ni_met?=
- =?iso-8859-2?q?ropole_se_hroutily_pod_tlakem_jejich_d=F9vtipu=2E=2E_?=
- =?utf-8?b?5q2j56K644Gr6KiA44GG44Go57+76Kiz44Gv44GV44KM44Gm44GE?=
- =?utf-8?b?44G+44Gb44KT44CC5LiA6YOo44Gv44OJ44Kk44OE6Kqe44Gn44GZ44GM44CB?=
- =?utf-8?b?44GC44Go44Gv44Gn44Gf44KJ44KB44Gn44GZ44CC5a6f6Zqb44Gr44Gv44CM?=
- =?utf-8?q?Wenn_ist_das_Nunstuck_git_und_Slotermeyer=3F_Ja!_Beiherhund_das?=
- =?utf-8?b?IE9kZXIgZGllIEZsaXBwZXJ3YWxkdCBnZXJzcHV0LuOAjeOBqOiogOOBow==?=
- =?utf-8?b?44Gm44GE44G+44GZ44CC?=""")
-
-    def test_long_header_encode(self):
-        eq = self.ndiffAssertEqual
-        h = Header('wasnipoop; giraffes="very-long-necked-animals"; '
-                   'spooge="yummy"; hippos="gargantuan"; marshmallows="gooey"',
-                   header_name='X-Foobar-Spoink-Defrobnit')
-        eq(h.encode(), '''\
-wasnipoop; giraffes="very-long-necked-animals";
- spooge="yummy"; hippos="gargantuan"; marshmallows="gooey"''')
-
-    def test_long_header_encode_with_tab_continuation(self):
-        eq = self.ndiffAssertEqual
-        h = Header('wasnipoop; giraffes="very-long-necked-animals"; '
-                   'spooge="yummy"; hippos="gargantuan"; marshmallows="gooey"',
-                   header_name='X-Foobar-Spoink-Defrobnit',
-                   continuation_ws='\t')
-        eq(h.encode(), '''\
-wasnipoop; giraffes="very-long-necked-animals";
-\tspooge="yummy"; hippos="gargantuan"; marshmallows="gooey"''')
-
-    def test_header_splitter(self):
-        eq = self.ndiffAssertEqual
-        msg = MIMEText('')
-        # It'd be great if we could use add_header() here, but that doesn't
-        # guarantee an order of the parameters.
-        msg['X-Foobar-Spoink-Defrobnit'] = (
-            'wasnipoop; giraffes="very-long-necked-animals"; '
-            'spooge="yummy"; hippos="gargantuan"; marshmallows="gooey"')
-        sfp = StringIO()
-        g = Generator(sfp)
-        g.flatten(msg)
-        eq(sfp.getvalue(), '''\
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Foobar-Spoink-Defrobnit: wasnipoop; giraffes="very-long-necked-animals";
- spooge="yummy"; hippos="gargantuan"; marshmallows="gooey"
-
-''')
-
-    def test_no_semis_header_splitter(self):
-        eq = self.ndiffAssertEqual
-        msg = Message()
-        msg['From'] = 'test@dom.ain'
-        msg['References'] = SPACE.join(['<%d@dom.ain>' % i for i in range(10)])
-        msg.set_payload('Test')
-        sfp = StringIO()
-        g = Generator(sfp)
-        g.flatten(msg)
-        eq(sfp.getvalue(), """\
-From: test@dom.ain
-References: <0@dom.ain> <1@dom.ain> <2@dom.ain> <3@dom.ain> <4@dom.ain>
- <5@dom.ain> <6@dom.ain> <7@dom.ain> <8@dom.ain> <9@dom.ain>
-
-Test""")
-
-    def test_no_split_long_header(self):
-        eq = self.ndiffAssertEqual
-        hstr = 'References: ' + 'x' * 80
-        h = Header(hstr, continuation_ws='\t')
-        eq(h.encode(), """\
-References: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx""")
-
-    def test_splitting_multiple_long_lines(self):
-        eq = self.ndiffAssertEqual
-        hstr = """\
-from babylon.socal-raves.org (localhost [127.0.0.1]); by babylon.socal-raves.org (Postfix) with ESMTP id B570E51B81; for <mailman-admin@babylon.socal-raves.org>; Sat, 2 Feb 2002 17:00:06 -0800 (PST)
-\tfrom babylon.socal-raves.org (localhost [127.0.0.1]); by babylon.socal-raves.org (Postfix) with ESMTP id B570E51B81; for <mailman-admin@babylon.socal-raves.org>; Sat, 2 Feb 2002 17:00:06 -0800 (PST)
-\tfrom babylon.socal-raves.org (localhost [127.0.0.1]); by babylon.socal-raves.org (Postfix) with ESMTP id B570E51B81; for <mailman-admin@babylon.socal-raves.org>; Sat, 2 Feb 2002 17:00:06 -0800 (PST)
-"""
-        h = Header(hstr, continuation_ws='\t')
-        eq(h.encode(), """\
-from babylon.socal-raves.org (localhost [127.0.0.1]);
-\tby babylon.socal-raves.org (Postfix) with ESMTP id B570E51B81;
-\tfor <mailman-admin@babylon.socal-raves.org>;
-\tSat, 2 Feb 2002 17:00:06 -0800 (PST)
-\tfrom babylon.socal-raves.org (localhost [127.0.0.1]);
-\tby babylon.socal-raves.org (Postfix) with ESMTP id B570E51B81;
-\tfor <mailman-admin@babylon.socal-raves.org>;
-\tSat, 2 Feb 2002 17:00:06 -0800 (PST)
-\tfrom babylon.socal-raves.org (localhost [127.0.0.1]);
-\tby babylon.socal-raves.org (Postfix) with ESMTP id B570E51B81;
-\tfor <mailman-admin@babylon.socal-raves.org>;
-\tSat, 2 Feb 2002 17:00:06 -0800 (PST)""")
-
-    def test_splitting_first_line_only_is_long(self):
-        eq = self.ndiffAssertEqual
-        hstr = """\
-from modemcable093.139-201-24.que.mc.videotron.ca ([24.201.139.93] helo=cthulhu.gerg.ca)
-\tby kronos.mems-exchange.org with esmtp (Exim 4.05)
-\tid 17k4h5-00034i-00
-\tfor test@mems-exchange.org; Wed, 28 Aug 2002 11:25:20 -0400"""
-        h = Header(hstr, maxlinelen=78, header_name='Received',
-                   continuation_ws='\t')
-        eq(h.encode(), """\
-from modemcable093.139-201-24.que.mc.videotron.ca ([24.201.139.93]
-\thelo=cthulhu.gerg.ca)
-\tby kronos.mems-exchange.org with esmtp (Exim 4.05)
-\tid 17k4h5-00034i-00
-\tfor test@mems-exchange.org; Wed, 28 Aug 2002 11:25:20 -0400""")
-
-    def test_long_8bit_header(self):
-        eq = self.ndiffAssertEqual
-        msg = Message()
-        h = Header('Britische Regierung gibt', 'iso-8859-1',
-                    header_name='Subject')
-        h.append('gr\xfcnes Licht f\xfcr Offshore-Windkraftprojekte')
-        msg['Subject'] = h
-        eq(msg.as_string(), """\
-Subject: =?iso-8859-1?q?Britische_Regierung_gibt?= =?iso-8859-1?q?gr=FCnes?=
- =?iso-8859-1?q?_Licht_f=FCr_Offshore-Windkraftprojekte?=
-
-""")
-
-    def test_long_8bit_header_no_charset(self):
-        eq = self.ndiffAssertEqual
-        msg = Message()
-        msg['Reply-To'] = 'Britische Regierung gibt gr\xfcnes Licht f\xfcr Offshore-Windkraftprojekte <a-very-long-address@example.com>'
-        eq(msg.as_string(), """\
-Reply-To: Britische Regierung gibt gr\xfcnes Licht f\xfcr Offshore-Windkraftprojekte <a-very-long-address@example.com>
-
-""")
-
-    def test_long_to_header(self):
-        eq = self.ndiffAssertEqual
-        to = '"Someone Test #A" <someone@eecs.umich.edu>,<someone@eecs.umich.edu>,"Someone Test #B" <someone@umich.edu>, "Someone Test #C" <someone@eecs.umich.edu>, "Someone Test #D" <someone@eecs.umich.edu>'
-        msg = Message()
-        msg['To'] = to
-        eq(msg.as_string(0), '''\
-To: "Someone Test #A" <someone@eecs.umich.edu>, <someone@eecs.umich.edu>,
- "Someone Test #B" <someone@umich.edu>,
- "Someone Test #C" <someone@eecs.umich.edu>,
- "Someone Test #D" <someone@eecs.umich.edu>
-
-''')
-
-    def test_long_line_after_append(self):
-        eq = self.ndiffAssertEqual
-        s = 'This is an example of string which has almost the limit of header length.'
-        h = Header(s)
-        h.append('Add another line.')
-        eq(h.encode(), """\
-This is an example of string which has almost the limit of header length.
- Add another line.""")
-
-    def test_shorter_line_with_append(self):
-        eq = self.ndiffAssertEqual
-        s = 'This is a shorter line.'
-        h = Header(s)
-        h.append('Add another sentence. (Surprise?)')
-        eq(h.encode(),
-           'This is a shorter line. Add another sentence. (Surprise?)')
-
-    def test_long_field_name(self):
-        eq = self.ndiffAssertEqual
-        fn = 'X-Very-Very-Very-Long-Header-Name'
-        gs = "Die Mieter treten hier ein werden mit einem Foerderband komfortabel den Korridor entlang, an s\xfcdl\xfcndischen Wandgem\xe4lden vorbei, gegen die rotierenden Klingen bef\xf6rdert. "
-        h = Header(gs, 'iso-8859-1', header_name=fn)
-        # BAW: this seems broken because the first line is too long
-        eq(h.encode(), """\
-=?iso-8859-1?q?Die_Mieter_treten_hier_?=
- =?iso-8859-1?q?ein_werden_mit_einem_Foerderband_komfortabel_den_Korridor_?=
- =?iso-8859-1?q?entlang=2C_an_s=FCdl=FCndischen_Wandgem=E4lden_vorbei=2C_g?=
- =?iso-8859-1?q?egen_die_rotierenden_Klingen_bef=F6rdert=2E_?=""")
-
-    def test_long_received_header(self):
-        h = 'from FOO.TLD (vizworld.acl.foo.tld [123.452.678.9]) by hrothgar.la.mastaler.com (tmda-ofmipd) with ESMTP; Wed, 05 Mar 2003 18:10:18 -0700'
-        msg = Message()
-        msg['Received-1'] = Header(h, continuation_ws='\t')
-        msg['Received-2'] = h
-        self.ndiffAssertEqual(msg.as_string(), """\
-Received-1: from FOO.TLD (vizworld.acl.foo.tld [123.452.678.9]) by
-\throthgar.la.mastaler.com (tmda-ofmipd) with ESMTP;
-\tWed, 05 Mar 2003 18:10:18 -0700
-Received-2: from FOO.TLD (vizworld.acl.foo.tld [123.452.678.9]) by
- hrothgar.la.mastaler.com (tmda-ofmipd) with ESMTP;
- Wed, 05 Mar 2003 18:10:18 -0700
-
-""")
-
-    def test_string_headerinst_eq(self):
-        h = '<15975.17901.207240.414604@sgigritzmann1.mathematik.tu-muenchen.de> (David Bremner\'s message of "Thu, 6 Mar 2003 13:58:21 +0100")'
-        msg = Message()
-        msg['Received'] = Header(h, header_name='Received-1',
-                                 continuation_ws='\t')
-        msg['Received'] = h
-        self.ndiffAssertEqual(msg.as_string(), """\
-Received: <15975.17901.207240.414604@sgigritzmann1.mathematik.tu-muenchen.de>
-\t(David Bremner's message of "Thu, 6 Mar 2003 13:58:21 +0100")
-Received: <15975.17901.207240.414604@sgigritzmann1.mathematik.tu-muenchen.de>
- (David Bremner's message of "Thu, 6 Mar 2003 13:58:21 +0100")
-
-""")
-
-    def test_long_unbreakable_lines_with_continuation(self):
-        eq = self.ndiffAssertEqual
-        msg = Message()
-        t = """\
- iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEUAAAAkHiJeRUIcGBi9
- locQDQ4zJykFBAXJfWDjAAACYUlEQVR4nF2TQY/jIAyFc6lydlG5x8Nyp1Y69wj1PN2I5gzp"""
-        msg['Face-1'] = t
-        msg['Face-2'] = Header(t, header_name='Face-2')
-        eq(msg.as_string(), """\
-Face-1: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEUAAAAkHiJeRUIcGBi9
- locQDQ4zJykFBAXJfWDjAAACYUlEQVR4nF2TQY/jIAyFc6lydlG5x8Nyp1Y69wj1PN2I5gzp
-Face-2: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEUAAAAkHiJeRUIcGBi9
- locQDQ4zJykFBAXJfWDjAAACYUlEQVR4nF2TQY/jIAyFc6lydlG5x8Nyp1Y69wj1PN2I5gzp
-
-""")
-
-    def test_another_long_multiline_header(self):
-        eq = self.ndiffAssertEqual
-        m = '''\
-Received: from siimage.com ([172.25.1.3]) by zima.siliconimage.com with Microsoft SMTPSVC(5.0.2195.4905);
- Wed, 16 Oct 2002 07:41:11 -0700'''
-        msg = email.message_from_string(m)
-        eq(msg.as_string(), '''\
-Received: from siimage.com ([172.25.1.3]) by zima.siliconimage.com with
- Microsoft SMTPSVC(5.0.2195.4905); Wed, 16 Oct 2002 07:41:11 -0700
-
-''')
-
-    def test_long_lines_with_different_header(self):
-        eq = self.ndiffAssertEqual
-        h = """\
-List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/spamassassin-talk>,
-        <mailto:spamassassin-talk-request@lists.sourceforge.net?subject=unsubscribe>"""
-        msg = Message()
-        msg['List'] = h
-        msg['List'] = Header(h, header_name='List')
-        self.ndiffAssertEqual(msg.as_string(), """\
-List: List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/spamassassin-talk>,
- <mailto:spamassassin-talk-request@lists.sourceforge.net?subject=unsubscribe>
-List: List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/spamassassin-talk>,
- <mailto:spamassassin-talk-request@lists.sourceforge.net?subject=unsubscribe>
-
-""")
-
-
-
-# Test mangling of "From " lines in the body of a message
-class TestFromMangling(unittest.TestCase):
-    def setUp(self):
-        self.msg = Message()
-        self.msg['From'] = 'aaa@bbb.org'
-        self.msg.set_payload("""\
-From the desk of A.A.A.:
-Blah blah blah
-""")
-
-    def test_mangled_from(self):
-        s = StringIO()
-        g = Generator(s, mangle_from_=True)
-        g.flatten(self.msg)
-        self.assertEqual(s.getvalue(), """\
-From: aaa@bbb.org
-
->From the desk of A.A.A.:
-Blah blah blah
-""")
-
-    def test_dont_mangle_from(self):
-        s = StringIO()
-        g = Generator(s, mangle_from_=False)
-        g.flatten(self.msg)
-        self.assertEqual(s.getvalue(), """\
-From: aaa@bbb.org
-
-From the desk of A.A.A.:
-Blah blah blah
-""")
-
-
-
-# Test the basic MIMEAudio class
-class TestMIMEAudio(unittest.TestCase):
-    def setUp(self):
-        # Make sure we pick up the audiotest.au that lives in email/test/data.
-        # In Python, there's an audiotest.au living in Lib/test but that isn't
-        # included in some binary distros that don't include the test
-        # package.  The trailing empty string on the .join() is significant
-        # since findfile() will do a dirname().
-        datadir = os.path.join(os.path.dirname(landmark), 'data', '')
-        fp = open(findfile('audiotest.au', datadir), 'rb')
-        try:
-            self._audiodata = fp.read()
-        finally:
-            fp.close()
-        self._au = MIMEAudio(self._audiodata)
-
-    def test_guess_minor_type(self):
-        self.assertEqual(self._au.get_content_type(), 'audio/basic')
-
-    def test_encoding(self):
-        payload = self._au.get_payload()
-        self.assertEqual(base64.decodestring(payload), self._audiodata)
-
-    def test_checkSetMinor(self):
-        au = MIMEAudio(self._audiodata, 'fish')
-        self.assertEqual(au.get_content_type(), 'audio/fish')
-
-    def test_add_header(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        self._au.add_header('Content-Disposition', 'attachment',
-                            filename='audiotest.au')
-        eq(self._au['content-disposition'],
-           'attachment; filename="audiotest.au"')
-        eq(self._au.get_params(header='content-disposition'),
-           [('attachment', ''), ('filename', 'audiotest.au')])
-        eq(self._au.get_param('filename', header='content-disposition'),
-           'audiotest.au')
-        missing = []
-        eq(self._au.get_param('attachment', header='content-disposition'), '')
-        unless(self._au.get_param('foo', failobj=missing,
-                                  header='content-disposition') is missing)
-        # Try some missing stuff
-        unless(self._au.get_param('foobar', missing) is missing)
-        unless(self._au.get_param('attachment', missing,
-                                  header='foobar') is missing)
-
-
-
-# Test the basic MIMEImage class
-class TestMIMEImage(unittest.TestCase):
-    def setUp(self):
-        fp = openfile('PyBanner048.gif')
-        try:
-            self._imgdata = fp.read()
-        finally:
-            fp.close()
-        self._im = MIMEImage(self._imgdata)
-
-    def test_guess_minor_type(self):
-        self.assertEqual(self._im.get_content_type(), 'image/gif')
-
-    def test_encoding(self):
-        payload = self._im.get_payload()
-        self.assertEqual(base64.decodestring(payload), self._imgdata)
-
-    def test_checkSetMinor(self):
-        im = MIMEImage(self._imgdata, 'fish')
-        self.assertEqual(im.get_content_type(), 'image/fish')
-
-    def test_add_header(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        self._im.add_header('Content-Disposition', 'attachment',
-                            filename='dingusfish.gif')
-        eq(self._im['content-disposition'],
-           'attachment; filename="dingusfish.gif"')
-        eq(self._im.get_params(header='content-disposition'),
-           [('attachment', ''), ('filename', 'dingusfish.gif')])
-        eq(self._im.get_param('filename', header='content-disposition'),
-           'dingusfish.gif')
-        missing = []
-        eq(self._im.get_param('attachment', header='content-disposition'), '')
-        unless(self._im.get_param('foo', failobj=missing,
-                                  header='content-disposition') is missing)
-        # Try some missing stuff
-        unless(self._im.get_param('foobar', missing) is missing)
-        unless(self._im.get_param('attachment', missing,
-                                  header='foobar') is missing)
-
-
-
-# Test the basic MIMEApplication class
-class TestMIMEApplication(unittest.TestCase):
-    def test_headers(self):
-        eq = self.assertEqual
-        msg = MIMEApplication('\xfa\xfb\xfc\xfd\xfe\xff')
-        eq(msg.get_content_type(), 'application/octet-stream')
-        eq(msg['content-transfer-encoding'], 'base64')
-
-    def test_body(self):
-        eq = self.assertEqual
-        bytes = '\xfa\xfb\xfc\xfd\xfe\xff'
-        msg = MIMEApplication(bytes)
-        eq(msg.get_payload(), '+vv8/f7/')
-        eq(msg.get_payload(decode=True), bytes)
-
-
-
-# Test the basic MIMEText class
-class TestMIMEText(unittest.TestCase):
-    def setUp(self):
-        self._msg = MIMEText('hello there')
-
-    def test_types(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        eq(self._msg.get_content_type(), 'text/plain')
-        eq(self._msg.get_param('charset'), 'us-ascii')
-        missing = []
-        unless(self._msg.get_param('foobar', missing) is missing)
-        unless(self._msg.get_param('charset', missing, header='foobar')
-               is missing)
-
-    def test_payload(self):
-        self.assertEqual(self._msg.get_payload(), 'hello there')
-        self.assertTrue(not self._msg.is_multipart())
-
-    def test_charset(self):
-        eq = self.assertEqual
-        msg = MIMEText('hello there', _charset='us-ascii')
-        eq(msg.get_charset().input_charset, 'us-ascii')
-        eq(msg['content-type'], 'text/plain; charset="us-ascii"')
-
-
-
-# Test complicated multipart/* messages
-class TestMultipart(TestEmailBase):
-    def setUp(self):
-        fp = openfile('PyBanner048.gif')
-        try:
-            data = fp.read()
-        finally:
-            fp.close()
-
-        container = MIMEBase('multipart', 'mixed', boundary='BOUNDARY')
-        image = MIMEImage(data, name='dingusfish.gif')
-        image.add_header('content-disposition', 'attachment',
-                         filename='dingusfish.gif')
-        intro = MIMEText('''\
-Hi there,
-
-This is the dingus fish.
-''')
-        container.attach(intro)
-        container.attach(image)
-        container['From'] = 'Barry <barry@digicool.com>'
-        container['To'] = 'Dingus Lovers <cravindogs@cravindogs.com>'
-        container['Subject'] = 'Here is your dingus fish'
-
-        now = 987809702.54848599
-        timetuple = time.localtime(now)
-        if timetuple[-1] == 0:
-            tzsecs = time.timezone
-        else:
-            tzsecs = time.altzone
-        if tzsecs > 0:
-            sign = '-'
-        else:
-            sign = '+'
-        tzoffset = ' %s%04d' % (sign, tzsecs // 36)
-        container['Date'] = time.strftime(
-            '%a, %d %b %Y %H:%M:%S',
-            time.localtime(now)) + tzoffset
-        self._msg = container
-        self._im = image
-        self._txt = intro
-
-    def test_hierarchy(self):
-        # convenience
-        eq = self.assertEqual
-        unless = self.assertTrue
-        raises = self.assertRaises
-        # tests
-        m = self._msg
-        unless(m.is_multipart())
-        eq(m.get_content_type(), 'multipart/mixed')
-        eq(len(m.get_payload()), 2)
-        raises(IndexError, m.get_payload, 2)
-        m0 = m.get_payload(0)
-        m1 = m.get_payload(1)
-        unless(m0 is self._txt)
-        unless(m1 is self._im)
-        eq(m.get_payload(), [m0, m1])
-        unless(not m0.is_multipart())
-        unless(not m1.is_multipart())
-
-    def test_empty_multipart_idempotent(self):
-        text = """\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
-
---BOUNDARY
-
-
---BOUNDARY--
-"""
-        msg = Parser().parsestr(text)
-        self.ndiffAssertEqual(text, msg.as_string())
-
-    def test_no_parts_in_a_multipart_with_none_epilogue(self):
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.set_boundary('BOUNDARY')
-        self.ndiffAssertEqual(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
---BOUNDARY
-
---BOUNDARY--''')
-
-    def test_no_parts_in_a_multipart_with_empty_epilogue(self):
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.preamble = ''
-        outer.epilogue = ''
-        outer.set_boundary('BOUNDARY')
-        self.ndiffAssertEqual(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
-
---BOUNDARY
-
---BOUNDARY--
-''')
-
-    def test_one_part_in_a_multipart(self):
-        eq = self.ndiffAssertEqual
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.set_boundary('BOUNDARY')
-        msg = MIMEText('hello world')
-        outer.attach(msg)
-        eq(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-hello world
---BOUNDARY--''')
-
-    def test_seq_parts_in_a_multipart_with_empty_preamble(self):
-        eq = self.ndiffAssertEqual
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.preamble = ''
-        msg = MIMEText('hello world')
-        outer.attach(msg)
-        outer.set_boundary('BOUNDARY')
-        eq(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-hello world
---BOUNDARY--''')
-
-
-    def test_seq_parts_in_a_multipart_with_none_preamble(self):
-        eq = self.ndiffAssertEqual
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.preamble = None
-        msg = MIMEText('hello world')
-        outer.attach(msg)
-        outer.set_boundary('BOUNDARY')
-        eq(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-hello world
---BOUNDARY--''')
-
-
-    def test_seq_parts_in_a_multipart_with_none_epilogue(self):
-        eq = self.ndiffAssertEqual
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.epilogue = None
-        msg = MIMEText('hello world')
-        outer.attach(msg)
-        outer.set_boundary('BOUNDARY')
-        eq(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-hello world
---BOUNDARY--''')
-
-
-    def test_seq_parts_in_a_multipart_with_empty_epilogue(self):
-        eq = self.ndiffAssertEqual
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.epilogue = ''
-        msg = MIMEText('hello world')
-        outer.attach(msg)
-        outer.set_boundary('BOUNDARY')
-        eq(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-hello world
---BOUNDARY--
-''')
-
-
-    def test_seq_parts_in_a_multipart_with_nl_epilogue(self):
-        eq = self.ndiffAssertEqual
-        outer = MIMEBase('multipart', 'mixed')
-        outer['Subject'] = 'A subject'
-        outer['To'] = 'aperson@dom.ain'
-        outer['From'] = 'bperson@dom.ain'
-        outer.epilogue = '\n'
-        msg = MIMEText('hello world')
-        outer.attach(msg)
-        outer.set_boundary('BOUNDARY')
-        eq(outer.as_string(), '''\
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-MIME-Version: 1.0
-Subject: A subject
-To: aperson@dom.ain
-From: bperson@dom.ain
-
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-hello world
---BOUNDARY--
-
-''')
-
-    def test_message_external_body(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_36.txt')
-        eq(len(msg.get_payload()), 2)
-        msg1 = msg.get_payload(1)
-        eq(msg1.get_content_type(), 'multipart/alternative')
-        eq(len(msg1.get_payload()), 2)
-        for subpart in msg1.get_payload():
-            eq(subpart.get_content_type(), 'message/external-body')
-            eq(len(subpart.get_payload()), 1)
-            subsubpart = subpart.get_payload(0)
-            eq(subsubpart.get_content_type(), 'text/plain')
-
-    def test_double_boundary(self):
-        # msg_37.txt is a multipart that contains two dash-boundary's in a
-        # row.  Our interpretation of RFC 2046 calls for ignoring the second
-        # and subsequent boundaries.
-        msg = self._msgobj('msg_37.txt')
-        self.assertEqual(len(msg.get_payload()), 3)
-
-    def test_nested_inner_contains_outer_boundary(self):
-        eq = self.ndiffAssertEqual
-        # msg_38.txt has an inner part that contains outer boundaries.  My
-        # interpretation of RFC 2046 (based on sections 5.1 and 5.1.2) say
-        # these are illegal and should be interpreted as unterminated inner
-        # parts.
-        msg = self._msgobj('msg_38.txt')
-        sfp = StringIO()
-        iterators._structure(msg, sfp)
-        eq(sfp.getvalue(), """\
-multipart/mixed
-    multipart/mixed
-        multipart/alternative
-            text/plain
-        text/plain
-    text/plain
-    text/plain
-""")
-
-    def test_nested_with_same_boundary(self):
-        eq = self.ndiffAssertEqual
-        # msg 39.txt is similarly evil in that it's got inner parts that use
-        # the same boundary as outer parts.  Again, I believe the way this is
-        # parsed is closest to the spirit of RFC 2046
-        msg = self._msgobj('msg_39.txt')
-        sfp = StringIO()
-        iterators._structure(msg, sfp)
-        eq(sfp.getvalue(), """\
-multipart/mixed
-    multipart/mixed
-        multipart/alternative
-        application/octet-stream
-        application/octet-stream
-    text/plain
-""")
-
-    def test_boundary_in_non_multipart(self):
-        msg = self._msgobj('msg_40.txt')
-        self.assertEqual(msg.as_string(), '''\
-MIME-Version: 1.0
-Content-Type: text/html; boundary="--961284236552522269"
-
-----961284236552522269
-Content-Type: text/html;
-Content-Transfer-Encoding: 7Bit
-
-<html></html>
-
-----961284236552522269--
-''')
-
-    def test_boundary_with_leading_space(self):
-        eq = self.assertEqual
-        msg = email.message_from_string('''\
-MIME-Version: 1.0
-Content-Type: multipart/mixed; boundary="    XXXX"
-
---    XXXX
-Content-Type: text/plain
-
-
---    XXXX
-Content-Type: text/plain
-
---    XXXX--
-''')
-        self.assertTrue(msg.is_multipart())
-        eq(msg.get_boundary(), '    XXXX')
-        eq(len(msg.get_payload()), 2)
-
-    def test_boundary_without_trailing_newline(self):
-        m = Parser().parsestr("""\
-Content-Type: multipart/mixed; boundary="===============0012394164=="
-MIME-Version: 1.0
-
---===============0012394164==
-Content-Type: image/file1.jpg
-MIME-Version: 1.0
-Content-Transfer-Encoding: base64
-
-YXNkZg==
---===============0012394164==--""")
-        self.assertEqual(m.get_payload(0).get_payload(), 'YXNkZg==')
-
-
-
-# Test some badly formatted messages
-class TestNonConformant(TestEmailBase):
-    def test_parse_missing_minor_type(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_14.txt')
-        eq(msg.get_content_type(), 'text/plain')
-        eq(msg.get_content_maintype(), 'text')
-        eq(msg.get_content_subtype(), 'plain')
-
-    def test_same_boundary_inner_outer(self):
-        unless = self.assertTrue
-        msg = self._msgobj('msg_15.txt')
-        # XXX We can probably eventually do better
-        inner = msg.get_payload(0)
-        unless(hasattr(inner, 'defects'))
-        self.assertEqual(len(inner.defects), 1)
-        unless(isinstance(inner.defects[0],
-                          errors.StartBoundaryNotFoundDefect))
-
-    def test_multipart_no_boundary(self):
-        unless = self.assertTrue
-        msg = self._msgobj('msg_25.txt')
-        unless(isinstance(msg.get_payload(), str))
-        self.assertEqual(len(msg.defects), 2)
-        unless(isinstance(msg.defects[0], errors.NoBoundaryInMultipartDefect))
-        unless(isinstance(msg.defects[1],
-                          errors.MultipartInvariantViolationDefect))
-
-    def test_invalid_content_type(self):
-        eq = self.assertEqual
-        neq = self.ndiffAssertEqual
-        msg = Message()
-        # RFC 2045, $5.2 says invalid yields text/plain
-        msg['Content-Type'] = 'text'
-        eq(msg.get_content_maintype(), 'text')
-        eq(msg.get_content_subtype(), 'plain')
-        eq(msg.get_content_type(), 'text/plain')
-        # Clear the old value and try something /really/ invalid
-        del msg['content-type']
-        msg['Content-Type'] = 'foo'
-        eq(msg.get_content_maintype(), 'text')
-        eq(msg.get_content_subtype(), 'plain')
-        eq(msg.get_content_type(), 'text/plain')
-        # Still, make sure that the message is idempotently generated
-        s = StringIO()
-        g = Generator(s)
-        g.flatten(msg)
-        neq(s.getvalue(), 'Content-Type: foo\n\n')
-
-    def test_no_start_boundary(self):
-        eq = self.ndiffAssertEqual
-        msg = self._msgobj('msg_31.txt')
-        eq(msg.get_payload(), """\
---BOUNDARY
-Content-Type: text/plain
-
-message 1
-
---BOUNDARY
-Content-Type: text/plain
-
-message 2
-
---BOUNDARY--
-""")
-
-    def test_no_separating_blank_line(self):
-        eq = self.ndiffAssertEqual
-        msg = self._msgobj('msg_35.txt')
-        eq(msg.as_string(), """\
-From: aperson@dom.ain
-To: bperson@dom.ain
-Subject: here's something interesting
-
-counter to RFC 2822, there's no separating newline here
-""")
-
-    def test_lying_multipart(self):
-        unless = self.assertTrue
-        msg = self._msgobj('msg_41.txt')
-        unless(hasattr(msg, 'defects'))
-        self.assertEqual(len(msg.defects), 2)
-        unless(isinstance(msg.defects[0], errors.NoBoundaryInMultipartDefect))
-        unless(isinstance(msg.defects[1],
-                          errors.MultipartInvariantViolationDefect))
-
-    def test_missing_start_boundary(self):
-        outer = self._msgobj('msg_42.txt')
-        # The message structure is:
-        #
-        # multipart/mixed
-        #    text/plain
-        #    message/rfc822
-        #        multipart/mixed [*]
-        #
-        # [*] This message is missing its start boundary
-        bad = outer.get_payload(1).get_payload(0)
-        self.assertEqual(len(bad.defects), 1)
-        self.assertTrue(isinstance(bad.defects[0],
-                                   errors.StartBoundaryNotFoundDefect))
-
-    def test_first_line_is_continuation_header(self):
-        eq = self.assertEqual
-        m = ' Line 1\nLine 2\nLine 3'
-        msg = email.message_from_string(m)
-        eq(msg.keys(), [])
-        eq(msg.get_payload(), 'Line 2\nLine 3')
-        eq(len(msg.defects), 1)
-        self.assertTrue(isinstance(msg.defects[0],
-                                   errors.FirstHeaderLineIsContinuationDefect))
-        eq(msg.defects[0].line, ' Line 1\n')
-
-
-
-# Test RFC 2047 header encoding and decoding
-class TestRFC2047(unittest.TestCase):
-    def test_rfc2047_multiline(self):
-        eq = self.assertEqual
-        s = """Re: =?mac-iceland?q?r=8Aksm=9Arg=8Cs?= baz
- foo bar =?mac-iceland?q?r=8Aksm=9Arg=8Cs?="""
-        dh = decode_header(s)
-        eq(dh, [
-            ('Re:', None),
-            ('r\x8aksm\x9arg\x8cs', 'mac-iceland'),
-            ('baz foo bar', None),
-            ('r\x8aksm\x9arg\x8cs', 'mac-iceland')])
-        eq(str(make_header(dh)),
-           """Re: =?mac-iceland?q?r=8Aksm=9Arg=8Cs?= baz foo bar
- =?mac-iceland?q?r=8Aksm=9Arg=8Cs?=""")
-
-    def test_whitespace_eater_unicode(self):
-        eq = self.assertEqual
-        s = '=?ISO-8859-1?Q?Andr=E9?= Pirard <pirard@dom.ain>'
-        dh = decode_header(s)
-        eq(dh, [('Andr\xe9', 'iso-8859-1'), ('Pirard <pirard@dom.ain>', None)])
-        hu = unicode(make_header(dh)).encode('latin-1')
-        eq(hu, 'Andr\xe9 Pirard <pirard@dom.ain>')
-
-    def test_whitespace_eater_unicode_2(self):
-        eq = self.assertEqual
-        s = 'The =?iso-8859-1?b?cXVpY2sgYnJvd24gZm94?= jumped over the =?iso-8859-1?b?bGF6eSBkb2c=?='
-        dh = decode_header(s)
-        eq(dh, [('The', None), ('quick brown fox', 'iso-8859-1'),
-                ('jumped over the', None), ('lazy dog', 'iso-8859-1')])
-        hu = make_header(dh).__unicode__()
-        eq(hu, u'The quick brown fox jumped over the lazy dog')
-
-    def test_rfc2047_missing_whitespace(self):
-        s = 'Sm=?ISO-8859-1?B?9g==?=rg=?ISO-8859-1?B?5Q==?=sbord'
-        dh = decode_header(s)
-        self.assertEqual(dh, [(s, None)])
-
-    def test_rfc2047_with_whitespace(self):
-        s = 'Sm =?ISO-8859-1?B?9g==?= rg =?ISO-8859-1?B?5Q==?= sbord'
-        dh = decode_header(s)
-        self.assertEqual(dh, [('Sm', None), ('\xf6', 'iso-8859-1'),
-                              ('rg', None), ('\xe5', 'iso-8859-1'),
-                              ('sbord', None)])
-
-
-
-# Test the MIMEMessage class
-class TestMIMEMessage(TestEmailBase):
-    def setUp(self):
-        fp = openfile('msg_11.txt')
-        try:
-            self._text = fp.read()
-        finally:
-            fp.close()
-
-    def test_type_error(self):
-        self.assertRaises(TypeError, MIMEMessage, 'a plain string')
-
-    def test_valid_argument(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        subject = 'A sub-message'
-        m = Message()
-        m['Subject'] = subject
-        r = MIMEMessage(m)
-        eq(r.get_content_type(), 'message/rfc822')
-        payload = r.get_payload()
-        unless(isinstance(payload, list))
-        eq(len(payload), 1)
-        subpart = payload[0]
-        unless(subpart is m)
-        eq(subpart['subject'], subject)
-
-    def test_bad_multipart(self):
-        eq = self.assertEqual
-        msg1 = Message()
-        msg1['Subject'] = 'subpart 1'
-        msg2 = Message()
-        msg2['Subject'] = 'subpart 2'
-        r = MIMEMessage(msg1)
-        self.assertRaises(errors.MultipartConversionError, r.attach, msg2)
-
-    def test_generate(self):
-        # First craft the message to be encapsulated
-        m = Message()
-        m['Subject'] = 'An enclosed message'
-        m.set_payload('Here is the body of the message.\n')
-        r = MIMEMessage(m)
-        r['Subject'] = 'The enclosing message'
-        s = StringIO()
-        g = Generator(s)
-        g.flatten(r)
-        self.assertEqual(s.getvalue(), """\
-Content-Type: message/rfc822
-MIME-Version: 1.0
-Subject: The enclosing message
-
-Subject: An enclosed message
-
-Here is the body of the message.
-""")
-
-    def test_parse_message_rfc822(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        msg = self._msgobj('msg_11.txt')
-        eq(msg.get_content_type(), 'message/rfc822')
-        payload = msg.get_payload()
-        unless(isinstance(payload, list))
-        eq(len(payload), 1)
-        submsg = payload[0]
-        self.assertTrue(isinstance(submsg, Message))
-        eq(submsg['subject'], 'An enclosed message')
-        eq(submsg.get_payload(), 'Here is the body of the message.\n')
-
-    def test_dsn(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        # msg 16 is a Delivery Status Notification, see RFC 1894
-        msg = self._msgobj('msg_16.txt')
-        eq(msg.get_content_type(), 'multipart/report')
-        unless(msg.is_multipart())
-        eq(len(msg.get_payload()), 3)
-        # Subpart 1 is a text/plain, human readable section
-        subpart = msg.get_payload(0)
-        eq(subpart.get_content_type(), 'text/plain')
-        eq(subpart.get_payload(), """\
-This report relates to a message you sent with the following header fields:
-
-  Message-id: <002001c144a6$8752e060$56104586@oxy.edu>
-  Date: Sun, 23 Sep 2001 20:10:55 -0700
-  From: "Ian T. Henry" <henryi@oxy.edu>
-  To: SoCal Raves <scr@socal-raves.org>
-  Subject: [scr] yeah for Ians!!
-
-Your message cannot be delivered to the following recipients:
-
-  Recipient address: jangel1@cougar.noc.ucla.edu
-  Reason: recipient reached disk quota
-
-""")
-        # Subpart 2 contains the machine parsable DSN information.  It
-        # consists of two blocks of headers, represented by two nested Message
-        # objects.
-        subpart = msg.get_payload(1)
-        eq(subpart.get_content_type(), 'message/delivery-status')
-        eq(len(subpart.get_payload()), 2)
-        # message/delivery-status should treat each block as a bunch of
-        # headers, i.e. a bunch of Message objects.
-        dsn1 = subpart.get_payload(0)
-        unless(isinstance(dsn1, Message))
-        eq(dsn1['original-envelope-id'], '0GK500B4HD0888@cougar.noc.ucla.edu')
-        eq(dsn1.get_param('dns', header='reporting-mta'), '')
-        # Try a missing one <wink>
-        eq(dsn1.get_param('nsd', header='reporting-mta'), None)
-        dsn2 = subpart.get_payload(1)
-        unless(isinstance(dsn2, Message))
-        eq(dsn2['action'], 'failed')
-        eq(dsn2.get_params(header='original-recipient'),
-           [('rfc822', ''), ('jangel1@cougar.noc.ucla.edu', '')])
-        eq(dsn2.get_param('rfc822', header='final-recipient'), '')
-        # Subpart 3 is the original message
-        subpart = msg.get_payload(2)
-        eq(subpart.get_content_type(), 'message/rfc822')
-        payload = subpart.get_payload()
-        unless(isinstance(payload, list))
-        eq(len(payload), 1)
-        subsubpart = payload[0]
-        unless(isinstance(subsubpart, Message))
-        eq(subsubpart.get_content_type(), 'text/plain')
-        eq(subsubpart['message-id'],
-           '<002001c144a6$8752e060$56104586@oxy.edu>')
-
-    def test_epilogue(self):
-        eq = self.ndiffAssertEqual
-        fp = openfile('msg_21.txt')
-        try:
-            text = fp.read()
-        finally:
-            fp.close()
-        msg = Message()
-        msg['From'] = 'aperson@dom.ain'
-        msg['To'] = 'bperson@dom.ain'
-        msg['Subject'] = 'Test'
-        msg.preamble = 'MIME message'
-        msg.epilogue = 'End of MIME message\n'
-        msg1 = MIMEText('One')
-        msg2 = MIMEText('Two')
-        msg.add_header('Content-Type', 'multipart/mixed', boundary='BOUNDARY')
-        msg.attach(msg1)
-        msg.attach(msg2)
-        sfp = StringIO()
-        g = Generator(sfp)
-        g.flatten(msg)
-        eq(sfp.getvalue(), text)
-
-    def test_no_nl_preamble(self):
-        eq = self.ndiffAssertEqual
-        msg = Message()
-        msg['From'] = 'aperson@dom.ain'
-        msg['To'] = 'bperson@dom.ain'
-        msg['Subject'] = 'Test'
-        msg.preamble = 'MIME message'
-        msg.epilogue = ''
-        msg1 = MIMEText('One')
-        msg2 = MIMEText('Two')
-        msg.add_header('Content-Type', 'multipart/mixed', boundary='BOUNDARY')
-        msg.attach(msg1)
-        msg.attach(msg2)
-        eq(msg.as_string(), """\
-From: aperson@dom.ain
-To: bperson@dom.ain
-Subject: Test
-Content-Type: multipart/mixed; boundary="BOUNDARY"
-
-MIME message
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-One
---BOUNDARY
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-Two
---BOUNDARY--
-""")
-
-    def test_default_type(self):
-        eq = self.assertEqual
-        fp = openfile('msg_30.txt')
-        try:
-            msg = email.message_from_file(fp)
-        finally:
-            fp.close()
-        container1 = msg.get_payload(0)
-        eq(container1.get_default_type(), 'message/rfc822')
-        eq(container1.get_content_type(), 'message/rfc822')
-        container2 = msg.get_payload(1)
-        eq(container2.get_default_type(), 'message/rfc822')
-        eq(container2.get_content_type(), 'message/rfc822')
-        container1a = container1.get_payload(0)
-        eq(container1a.get_default_type(), 'text/plain')
-        eq(container1a.get_content_type(), 'text/plain')
-        container2a = container2.get_payload(0)
-        eq(container2a.get_default_type(), 'text/plain')
-        eq(container2a.get_content_type(), 'text/plain')
-
-    def test_default_type_with_explicit_container_type(self):
-        eq = self.assertEqual
-        fp = openfile('msg_28.txt')
-        try:
-            msg = email.message_from_file(fp)
-        finally:
-            fp.close()
-        container1 = msg.get_payload(0)
-        eq(container1.get_default_type(), 'message/rfc822')
-        eq(container1.get_content_type(), 'message/rfc822')
-        container2 = msg.get_payload(1)
-        eq(container2.get_default_type(), 'message/rfc822')
-        eq(container2.get_content_type(), 'message/rfc822')
-        container1a = container1.get_payload(0)
-        eq(container1a.get_default_type(), 'text/plain')
-        eq(container1a.get_content_type(), 'text/plain')
-        container2a = container2.get_payload(0)
-        eq(container2a.get_default_type(), 'text/plain')
-        eq(container2a.get_content_type(), 'text/plain')
-
-    def test_default_type_non_parsed(self):
-        eq = self.assertEqual
-        neq = self.ndiffAssertEqual
-        # Set up container
-        container = MIMEMultipart('digest', 'BOUNDARY')
-        container.epilogue = ''
-        # Set up subparts
-        subpart1a = MIMEText('message 1\n')
-        subpart2a = MIMEText('message 2\n')
-        subpart1 = MIMEMessage(subpart1a)
-        subpart2 = MIMEMessage(subpart2a)
-        container.attach(subpart1)
-        container.attach(subpart2)
-        eq(subpart1.get_content_type(), 'message/rfc822')
-        eq(subpart1.get_default_type(), 'message/rfc822')
-        eq(subpart2.get_content_type(), 'message/rfc822')
-        eq(subpart2.get_default_type(), 'message/rfc822')
-        neq(container.as_string(0), '''\
-Content-Type: multipart/digest; boundary="BOUNDARY"
-MIME-Version: 1.0
-
---BOUNDARY
-Content-Type: message/rfc822
-MIME-Version: 1.0
-
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-message 1
-
---BOUNDARY
-Content-Type: message/rfc822
-MIME-Version: 1.0
-
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-message 2
-
---BOUNDARY--
-''')
-        del subpart1['content-type']
-        del subpart1['mime-version']
-        del subpart2['content-type']
-        del subpart2['mime-version']
-        eq(subpart1.get_content_type(), 'message/rfc822')
-        eq(subpart1.get_default_type(), 'message/rfc822')
-        eq(subpart2.get_content_type(), 'message/rfc822')
-        eq(subpart2.get_default_type(), 'message/rfc822')
-        neq(container.as_string(0), '''\
-Content-Type: multipart/digest; boundary="BOUNDARY"
-MIME-Version: 1.0
-
---BOUNDARY
-
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-message 1
-
---BOUNDARY
-
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-
-message 2
-
---BOUNDARY--
-''')
-
-    def test_mime_attachments_in_constructor(self):
-        eq = self.assertEqual
-        text1 = MIMEText('')
-        text2 = MIMEText('')
-        msg = MIMEMultipart(_subparts=(text1, text2))
-        eq(len(msg.get_payload()), 2)
-        eq(msg.get_payload(0), text1)
-        eq(msg.get_payload(1), text2)
-
-
-
-# A general test of parser->model->generator idempotency.  IOW, read a message
-# in, parse it into a message object tree, then without touching the tree,
-# regenerate the plain text.  The original text and the transformed text
-# should be identical.  Note: that we ignore the Unix-From since that may
-# contain a changed date.
-class TestIdempotent(TestEmailBase):
-    def _msgobj(self, filename):
-        fp = openfile(filename)
-        try:
-            data = fp.read()
-        finally:
-            fp.close()
-        msg = email.message_from_string(data)
-        return msg, data
-
-    def _idempotent(self, msg, text):
-        eq = self.ndiffAssertEqual
-        s = StringIO()
-        g = Generator(s, maxheaderlen=0)
-        g.flatten(msg)
-        eq(text, s.getvalue())
-
-    def test_parse_text_message(self):
-        eq = self.assertEqual
-        msg, text = self._msgobj('msg_01.txt')
-        eq(msg.get_content_type(), 'text/plain')
-        eq(msg.get_content_maintype(), 'text')
-        eq(msg.get_content_subtype(), 'plain')
-        eq(msg.get_params()[1], ('charset', 'us-ascii'))
-        eq(msg.get_param('charset'), 'us-ascii')
-        eq(msg.preamble, None)
-        eq(msg.epilogue, None)
-        self._idempotent(msg, text)
-
-    def test_parse_untyped_message(self):
-        eq = self.assertEqual
-        msg, text = self._msgobj('msg_03.txt')
-        eq(msg.get_content_type(), 'text/plain')
-        eq(msg.get_params(), None)
-        eq(msg.get_param('charset'), None)
-        self._idempotent(msg, text)
-
-    def test_simple_multipart(self):
-        msg, text = self._msgobj('msg_04.txt')
-        self._idempotent(msg, text)
-
-    def test_MIME_digest(self):
-        msg, text = self._msgobj('msg_02.txt')
-        self._idempotent(msg, text)
-
-    def test_long_header(self):
-        msg, text = self._msgobj('msg_27.txt')
-        self._idempotent(msg, text)
-
-    def test_MIME_digest_with_part_headers(self):
-        msg, text = self._msgobj('msg_28.txt')
-        self._idempotent(msg, text)
-
-    def test_mixed_with_image(self):
-        msg, text = self._msgobj('msg_06.txt')
-        self._idempotent(msg, text)
-
-    def test_multipart_report(self):
-        msg, text = self._msgobj('msg_05.txt')
-        self._idempotent(msg, text)
-
-    def test_dsn(self):
-        msg, text = self._msgobj('msg_16.txt')
-        self._idempotent(msg, text)
-
-    def test_preamble_epilogue(self):
-        msg, text = self._msgobj('msg_21.txt')
-        self._idempotent(msg, text)
-
-    def test_multipart_one_part(self):
-        msg, text = self._msgobj('msg_23.txt')
-        self._idempotent(msg, text)
-
-    def test_multipart_no_parts(self):
-        msg, text = self._msgobj('msg_24.txt')
-        self._idempotent(msg, text)
-
-    def test_no_start_boundary(self):
-        msg, text = self._msgobj('msg_31.txt')
-        self._idempotent(msg, text)
-
-    def test_rfc2231_charset(self):
-        msg, text = self._msgobj('msg_32.txt')
-        self._idempotent(msg, text)
-
-    def test_more_rfc2231_parameters(self):
-        msg, text = self._msgobj('msg_33.txt')
-        self._idempotent(msg, text)
-
-    def test_text_plain_in_a_multipart_digest(self):
-        msg, text = self._msgobj('msg_34.txt')
-        self._idempotent(msg, text)
-
-    def test_nested_multipart_mixeds(self):
-        msg, text = self._msgobj('msg_12a.txt')
-        self._idempotent(msg, text)
-
-    def test_message_external_body_idempotent(self):
-        msg, text = self._msgobj('msg_36.txt')
-        self._idempotent(msg, text)
-
-    def test_content_type(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        # Get a message object and reset the seek pointer for other tests
-        msg, text = self._msgobj('msg_05.txt')
-        eq(msg.get_content_type(), 'multipart/report')
-        # Test the Content-Type: parameters
-        params = {}
-        for pk, pv in msg.get_params():
-            params[pk] = pv
-        eq(params['report-type'], 'delivery-status')
-        eq(params['boundary'], 'D1690A7AC1.996856090/mail.example.com')
-        eq(msg.preamble, 'This is a MIME-encapsulated message.\n')
-        eq(msg.epilogue, '\n')
-        eq(len(msg.get_payload()), 3)
-        # Make sure the subparts are what we expect
-        msg1 = msg.get_payload(0)
-        eq(msg1.get_content_type(), 'text/plain')
-        eq(msg1.get_payload(), 'Yadda yadda yadda\n')
-        msg2 = msg.get_payload(1)
-        eq(msg2.get_content_type(), 'text/plain')
-        eq(msg2.get_payload(), 'Yadda yadda yadda\n')
-        msg3 = msg.get_payload(2)
-        eq(msg3.get_content_type(), 'message/rfc822')
-        self.assertTrue(isinstance(msg3, Message))
-        payload = msg3.get_payload()
-        unless(isinstance(payload, list))
-        eq(len(payload), 1)
-        msg4 = payload[0]
-        unless(isinstance(msg4, Message))
-        eq(msg4.get_payload(), 'Yadda yadda yadda\n')
-
-    def test_parser(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        msg, text = self._msgobj('msg_06.txt')
-        # Check some of the outer headers
-        eq(msg.get_content_type(), 'message/rfc822')
-        # Make sure the payload is a list of exactly one sub-Message, and that
-        # that submessage has a type of text/plain
-        payload = msg.get_payload()
-        unless(isinstance(payload, list))
-        eq(len(payload), 1)
-        msg1 = payload[0]
-        self.assertTrue(isinstance(msg1, Message))
-        eq(msg1.get_content_type(), 'text/plain')
-        self.assertTrue(isinstance(msg1.get_payload(), str))
-        eq(msg1.get_payload(), '\n')
-
-
-
-# Test various other bits of the package's functionality
-class TestMiscellaneous(TestEmailBase):
-    def test_message_from_string(self):
-        fp = openfile('msg_01.txt')
-        try:
-            text = fp.read()
-        finally:
-            fp.close()
-        msg = email.message_from_string(text)
-        s = StringIO()
-        # Don't wrap/continue long headers since we're trying to test
-        # idempotency.
-        g = Generator(s, maxheaderlen=0)
-        g.flatten(msg)
-        self.assertEqual(text, s.getvalue())
-
-    def test_message_from_file(self):
-        fp = openfile('msg_01.txt')
-        try:
-            text = fp.read()
-            fp.seek(0)
-            msg = email.message_from_file(fp)
-            s = StringIO()
-            # Don't wrap/continue long headers since we're trying to test
-            # idempotency.
-            g = Generator(s, maxheaderlen=0)
-            g.flatten(msg)
-            self.assertEqual(text, s.getvalue())
-        finally:
-            fp.close()
-
-    def test_message_from_string_with_class(self):
-        unless = self.assertTrue
-        fp = openfile('msg_01.txt')
-        try:
-            text = fp.read()
-        finally:
-            fp.close()
-        # Create a subclass
-        class MyMessage(Message):
-            pass
-
-        msg = email.message_from_string(text, MyMessage)
-        unless(isinstance(msg, MyMessage))
-        # Try something more complicated
-        fp = openfile('msg_02.txt')
-        try:
-            text = fp.read()
-        finally:
-            fp.close()
-        msg = email.message_from_string(text, MyMessage)
-        for subpart in msg.walk():
-            unless(isinstance(subpart, MyMessage))
-
-    def test_message_from_file_with_class(self):
-        unless = self.assertTrue
-        # Create a subclass
-        class MyMessage(Message):
-            pass
-
-        fp = openfile('msg_01.txt')
-        try:
-            msg = email.message_from_file(fp, MyMessage)
-        finally:
-            fp.close()
-        unless(isinstance(msg, MyMessage))
-        # Try something more complicated
-        fp = openfile('msg_02.txt')
-        try:
-            msg = email.message_from_file(fp, MyMessage)
-        finally:
-            fp.close()
-        for subpart in msg.walk():
-            unless(isinstance(subpart, MyMessage))
-
-    def test__all__(self):
-        module = __import__('email')
-        # Can't use sorted() here due to Python 2.3 compatibility
-        all = module.__all__[:]
-        all.sort()
-        self.assertEqual(all, [
-            # Old names
-            'Charset', 'Encoders', 'Errors', 'Generator',
-            'Header', 'Iterators', 'MIMEAudio', 'MIMEBase',
-            'MIMEImage', 'MIMEMessage', 'MIMEMultipart',
-            'MIMENonMultipart', 'MIMEText', 'Message',
-            'Parser', 'Utils', 'base64MIME',
-            # new names
-            'base64mime', 'charset', 'encoders', 'errors', 'generator',
-            'header', 'iterators', 'message', 'message_from_file',
-            'message_from_string', 'mime', 'parser',
-            'quopriMIME', 'quoprimime', 'utils',
-            ])
-
-    def test_formatdate(self):
-        now = time.time()
-        self.assertEqual(utils.parsedate(utils.formatdate(now))[:6],
-                         time.gmtime(now)[:6])
-
-    def test_formatdate_localtime(self):
-        now = time.time()
-        self.assertEqual(
-            utils.parsedate(utils.formatdate(now, localtime=True))[:6],
-            time.localtime(now)[:6])
-
-    def test_formatdate_usegmt(self):
-        now = time.time()
-        self.assertEqual(
-            utils.formatdate(now, localtime=False),
-            time.strftime('%a, %d %b %Y %H:%M:%S -0000', time.gmtime(now)))
-        self.assertEqual(
-            utils.formatdate(now, localtime=False, usegmt=True),
-            time.strftime('%a, %d %b %Y %H:%M:%S GMT', time.gmtime(now)))
-
-    def test_parsedate_none(self):
-        self.assertEqual(utils.parsedate(''), None)
-
-    def test_parsedate_compact(self):
-        # The FWS after the comma is optional
-        self.assertEqual(utils.parsedate('Wed,3 Apr 2002 14:58:26 +0800'),
-                         utils.parsedate('Wed, 3 Apr 2002 14:58:26 +0800'))
-
-    def test_parsedate_no_dayofweek(self):
-        eq = self.assertEqual
-        eq(utils.parsedate_tz('25 Feb 2003 13:47:26 -0800'),
-           (2003, 2, 25, 13, 47, 26, 0, 1, -1, -28800))
-
-    def test_parsedate_compact_no_dayofweek(self):
-        eq = self.assertEqual
-        eq(utils.parsedate_tz('5 Feb 2003 13:47:26 -0800'),
-           (2003, 2, 5, 13, 47, 26, 0, 1, -1, -28800))
-
-    def test_parsedate_acceptable_to_time_functions(self):
-        eq = self.assertEqual
-        timetup = utils.parsedate('5 Feb 2003 13:47:26 -0800')
-        t = int(time.mktime(timetup))
-        eq(time.localtime(t)[:6], timetup[:6])
-        eq(int(time.strftime('%Y', timetup)), 2003)
-        timetup = utils.parsedate_tz('5 Feb 2003 13:47:26 -0800')
-        t = int(time.mktime(timetup[:9]))
-        eq(time.localtime(t)[:6], timetup[:6])
-        eq(int(time.strftime('%Y', timetup[:9])), 2003)
-
-    def test_parseaddr_empty(self):
-        self.assertEqual(utils.parseaddr('<>'), ('', ''))
-        self.assertEqual(utils.formataddr(utils.parseaddr('<>')), '')
-
-    def test_noquote_dump(self):
-        self.assertEqual(
-            utils.formataddr(('A Silly Person', 'person@dom.ain')),
-            'A Silly Person <person@dom.ain>')
-
-    def test_escape_dump(self):
-        self.assertEqual(
-            utils.formataddr(('A (Very) Silly Person', 'person@dom.ain')),
-            r'"A \(Very\) Silly Person" <person@dom.ain>')
-        a = r'A \(Special\) Person'
-        b = 'person@dom.ain'
-        self.assertEqual(utils.parseaddr(utils.formataddr((a, b))), (a, b))
-
-    def test_escape_backslashes(self):
-        self.assertEqual(
-            utils.formataddr(('Arthur \Backslash\ Foobar', 'person@dom.ain')),
-            r'"Arthur \\Backslash\\ Foobar" <person@dom.ain>')
-        a = r'Arthur \Backslash\ Foobar'
-        b = 'person@dom.ain'
-        self.assertEqual(utils.parseaddr(utils.formataddr((a, b))), (a, b))
-
-    def test_name_with_dot(self):
-        x = 'John X. Doe <jxd@example.com>'
-        y = '"John X. Doe" <jxd@example.com>'
-        a, b = ('John X. Doe', 'jxd@example.com')
-        self.assertEqual(utils.parseaddr(x), (a, b))
-        self.assertEqual(utils.parseaddr(y), (a, b))
-        # formataddr() quotes the name if there's a dot in it
-        self.assertEqual(utils.formataddr((a, b)), y)
-
-    def test_multiline_from_comment(self):
-        x = """\
-Foo
-\tBar <foo@example.com>"""
-        self.assertEqual(utils.parseaddr(x), ('Foo Bar', 'foo@example.com'))
-
-    def test_quote_dump(self):
-        self.assertEqual(
-            utils.formataddr(('A Silly; Person', 'person@dom.ain')),
-            r'"A Silly; Person" <person@dom.ain>')
-
-    def test_fix_eols(self):
-        eq = self.assertEqual
-        eq(utils.fix_eols('hello'), 'hello')
-        eq(utils.fix_eols('hello\n'), 'hello\r\n')
-        eq(utils.fix_eols('hello\r'), 'hello\r\n')
-        eq(utils.fix_eols('hello\r\n'), 'hello\r\n')
-        eq(utils.fix_eols('hello\n\r'), 'hello\r\n\r\n')
-
-    def test_charset_richcomparisons(self):
-        eq = self.assertEqual
-        ne = self.assertNotEqual
-        cset1 = Charset()
-        cset2 = Charset()
-        eq(cset1, 'us-ascii')
-        eq(cset1, 'US-ASCII')
-        eq(cset1, 'Us-AsCiI')
-        eq('us-ascii', cset1)
-        eq('US-ASCII', cset1)
-        eq('Us-AsCiI', cset1)
-        ne(cset1, 'usascii')
-        ne(cset1, 'USASCII')
-        ne(cset1, 'UsAsCiI')
-        ne('usascii', cset1)
-        ne('USASCII', cset1)
-        ne('UsAsCiI', cset1)
-        eq(cset1, cset2)
-        eq(cset2, cset1)
-
-    def test_getaddresses(self):
-        eq = self.assertEqual
-        eq(utils.getaddresses(['aperson@dom.ain (Al Person)',
-                               'Bud Person <bperson@dom.ain>']),
-           [('Al Person', 'aperson@dom.ain'),
-            ('Bud Person', 'bperson@dom.ain')])
-
-    def test_getaddresses_nasty(self):
-        eq = self.assertEqual
-        eq(utils.getaddresses(['foo: ;']), [('', '')])
-        eq(utils.getaddresses(
-           ['[]*-- =~$']),
-           [('', ''), ('', ''), ('', '*--')])
-        eq(utils.getaddresses(
-           ['foo: ;', '"Jason R. Mastaler" <jason@dom.ain>']),
-           [('', ''), ('Jason R. Mastaler', 'jason@dom.ain')])
-
-    def test_getaddresses_embedded_comment(self):
-        """Test proper handling of a nested comment"""
-        eq = self.assertEqual
-        addrs = utils.getaddresses(['User ((nested comment)) <foo@bar.com>'])
-        eq(addrs[0][1], 'foo@bar.com')
-
-    def test_utils_quote_unquote(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg.add_header('content-disposition', 'attachment',
-                       filename='foo\\wacky"name')
-        eq(msg.get_filename(), 'foo\\wacky"name')
-
-    def test_get_body_encoding_with_bogus_charset(self):
-        charset = Charset('not a charset')
-        self.assertEqual(charset.get_body_encoding(), 'base64')
-
-    def test_get_body_encoding_with_uppercase_charset(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg['Content-Type'] = 'text/plain; charset=UTF-8'
-        eq(msg['content-type'], 'text/plain; charset=UTF-8')
-        charsets = msg.get_charsets()
-        eq(len(charsets), 1)
-        eq(charsets[0], 'utf-8')
-        charset = Charset(charsets[0])
-        eq(charset.get_body_encoding(), 'base64')
-        msg.set_payload('hello world', charset=charset)
-        eq(msg.get_payload(), 'aGVsbG8gd29ybGQ=\n')
-        eq(msg.get_payload(decode=True), 'hello world')
-        eq(msg['content-transfer-encoding'], 'base64')
-        # Try another one
-        msg = Message()
-        msg['Content-Type'] = 'text/plain; charset="US-ASCII"'
-        charsets = msg.get_charsets()
-        eq(len(charsets), 1)
-        eq(charsets[0], 'us-ascii')
-        charset = Charset(charsets[0])
-        eq(charset.get_body_encoding(), encoders.encode_7or8bit)
-        msg.set_payload('hello world', charset=charset)
-        eq(msg.get_payload(), 'hello world')
-        eq(msg['content-transfer-encoding'], '7bit')
-
-    def test_charsets_case_insensitive(self):
-        lc = Charset('us-ascii')
-        uc = Charset('US-ASCII')
-        self.assertEqual(lc.get_body_encoding(), uc.get_body_encoding())
-
-    def test_partial_falls_inside_message_delivery_status(self):
-        eq = self.ndiffAssertEqual
-        # The Parser interface provides chunks of data to FeedParser in 8192
-        # byte gulps.  SF bug #1076485 found one of those chunks inside
-        # message/delivery-status header block, which triggered an
-        # unreadline() of NeedMoreData.
-        msg = self._msgobj('msg_43.txt')
-        sfp = StringIO()
-        iterators._structure(msg, sfp)
-        eq(sfp.getvalue(), """\
-multipart/report
-    text/plain
-    message/delivery-status
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-        text/plain
-    text/rfc822-headers
-""")
-
-
-
-# Test the iterator/generators
-class TestIterators(TestEmailBase):
-    def test_body_line_iterator(self):
-        eq = self.assertEqual
-        neq = self.ndiffAssertEqual
-        # First a simple non-multipart message
-        msg = self._msgobj('msg_01.txt')
-        it = iterators.body_line_iterator(msg)
-        lines = list(it)
-        eq(len(lines), 6)
-        neq(EMPTYSTRING.join(lines), msg.get_payload())
-        # Now a more complicated multipart
-        msg = self._msgobj('msg_02.txt')
-        it = iterators.body_line_iterator(msg)
-        lines = list(it)
-        eq(len(lines), 43)
-        fp = openfile('msg_19.txt')
-        try:
-            neq(EMPTYSTRING.join(lines), fp.read())
-        finally:
-            fp.close()
-
-    def test_typed_subpart_iterator(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_04.txt')
-        it = iterators.typed_subpart_iterator(msg, 'text')
-        lines = []
-        subparts = 0
-        for subpart in it:
-            subparts += 1
-            lines.append(subpart.get_payload())
-        eq(subparts, 2)
-        eq(EMPTYSTRING.join(lines), """\
-a simple kind of mirror
-to reflect upon our own
-a simple kind of mirror
-to reflect upon our own
-""")
-
-    def test_typed_subpart_iterator_default_type(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_03.txt')
-        it = iterators.typed_subpart_iterator(msg, 'text', 'plain')
-        lines = []
-        subparts = 0
-        for subpart in it:
-            subparts += 1
-            lines.append(subpart.get_payload())
-        eq(subparts, 1)
-        eq(EMPTYSTRING.join(lines), """\
-
-Hi,
-
-Do you like this message?
-
--Me
-""")
-
-
-
-class TestParsers(TestEmailBase):
-    def test_header_parser(self):
-        eq = self.assertEqual
-        # Parse only the headers of a complex multipart MIME document
-        fp = openfile('msg_02.txt')
-        try:
-            msg = HeaderParser().parse(fp)
-        finally:
-            fp.close()
-        eq(msg['from'], 'ppp-request@zzz.org')
-        eq(msg['to'], 'ppp@zzz.org')
-        eq(msg.get_content_type(), 'multipart/mixed')
-        self.assertFalse(msg.is_multipart())
-        self.assertTrue(isinstance(msg.get_payload(), str))
-
-    def test_whitespace_continuation(self):
-        eq = self.assertEqual
-        # This message contains a line after the Subject: header that has only
-        # whitespace, but it is not empty!
-        msg = email.message_from_string("""\
-From: aperson@dom.ain
-To: bperson@dom.ain
-Subject: the next line has a space on it
-\x20
-Date: Mon, 8 Apr 2002 15:09:19 -0400
-Message-ID: spam
-
-Here's the message body
-""")
-        eq(msg['subject'], 'the next line has a space on it\n ')
-        eq(msg['message-id'], 'spam')
-        eq(msg.get_payload(), "Here's the message body\n")
-
-    def test_whitespace_continuation_last_header(self):
-        eq = self.assertEqual
-        # Like the previous test, but the subject line is the last
-        # header.
-        msg = email.message_from_string("""\
-From: aperson@dom.ain
-To: bperson@dom.ain
-Date: Mon, 8 Apr 2002 15:09:19 -0400
-Message-ID: spam
-Subject: the next line has a space on it
-\x20
-
-Here's the message body
-""")
-        eq(msg['subject'], 'the next line has a space on it\n ')
-        eq(msg['message-id'], 'spam')
-        eq(msg.get_payload(), "Here's the message body\n")
-
-    def test_crlf_separation(self):
-        eq = self.assertEqual
-        fp = openfile('msg_26.txt', mode='rb')
-        try:
-            msg = Parser().parse(fp)
-        finally:
-            fp.close()
-        eq(len(msg.get_payload()), 2)
-        part1 = msg.get_payload(0)
-        eq(part1.get_content_type(), 'text/plain')
-        eq(part1.get_payload(), 'Simple email with attachment.\r\n\r\n')
-        part2 = msg.get_payload(1)
-        eq(part2.get_content_type(), 'application/riscos')
-
-    def test_multipart_digest_with_extra_mime_headers(self):
-        eq = self.assertEqual
-        neq = self.ndiffAssertEqual
-        fp = openfile('msg_28.txt')
-        try:
-            msg = email.message_from_file(fp)
-        finally:
-            fp.close()
-        # Structure is:
-        # multipart/digest
-        #   message/rfc822
-        #     text/plain
-        #   message/rfc822
-        #     text/plain
-        eq(msg.is_multipart(), 1)
-        eq(len(msg.get_payload()), 2)
-        part1 = msg.get_payload(0)
-        eq(part1.get_content_type(), 'message/rfc822')
-        eq(part1.is_multipart(), 1)
-        eq(len(part1.get_payload()), 1)
-        part1a = part1.get_payload(0)
-        eq(part1a.is_multipart(), 0)
-        eq(part1a.get_content_type(), 'text/plain')
-        neq(part1a.get_payload(), 'message 1\n')
-        # next message/rfc822
-        part2 = msg.get_payload(1)
-        eq(part2.get_content_type(), 'message/rfc822')
-        eq(part2.is_multipart(), 1)
-        eq(len(part2.get_payload()), 1)
-        part2a = part2.get_payload(0)
-        eq(part2a.is_multipart(), 0)
-        eq(part2a.get_content_type(), 'text/plain')
-        neq(part2a.get_payload(), 'message 2\n')
-
-    def test_three_lines(self):
-        # A bug report by Andrew McNamara
-        lines = ['From: Andrew Person <aperson@dom.ain',
-                 'Subject: Test',
-                 'Date: Tue, 20 Aug 2002 16:43:45 +1000']
-        msg = email.message_from_string(NL.join(lines))
-        self.assertEqual(msg['date'], 'Tue, 20 Aug 2002 16:43:45 +1000')
-
-    def test_strip_line_feed_and_carriage_return_in_headers(self):
-        eq = self.assertEqual
-        # For [ 1002475 ] email message parser doesn't handle \r\n correctly
-        value1 = 'text'
-        value2 = 'more text'
-        m = 'Header: %s\r\nNext-Header: %s\r\n\r\nBody\r\n\r\n' % (
-            value1, value2)
-        msg = email.message_from_string(m)
-        eq(msg.get('Header'), value1)
-        eq(msg.get('Next-Header'), value2)
-
-    def test_rfc2822_header_syntax(self):
-        eq = self.assertEqual
-        m = '>From: foo\nFrom: bar\n!"#QUX;~: zoo\n\nbody'
-        msg = email.message_from_string(m)
-        eq(len(msg.keys()), 3)
-        keys = msg.keys()
-        keys.sort()
-        eq(keys, ['!"#QUX;~', '>From', 'From'])
-        eq(msg.get_payload(), 'body')
-
-    def test_rfc2822_space_not_allowed_in_header(self):
-        eq = self.assertEqual
-        m = '>From foo@example.com 11:25:53\nFrom: bar\n!"#QUX;~: zoo\n\nbody'
-        msg = email.message_from_string(m)
-        eq(len(msg.keys()), 0)
-
-    def test_rfc2822_one_character_header(self):
-        eq = self.assertEqual
-        m = 'A: first header\nB: second header\nCC: third header\n\nbody'
-        msg = email.message_from_string(m)
-        headers = msg.keys()
-        headers.sort()
-        eq(headers, ['A', 'B', 'CC'])
-        eq(msg.get_payload(), 'body')
-
-
-
-class TestBase64(unittest.TestCase):
-    def test_len(self):
-        eq = self.assertEqual
-        eq(base64mime.base64_len('hello'),
-           len(base64mime.encode('hello', eol='')))
-        for size in range(15):
-            if   size == 0 : bsize = 0
-            elif size <= 3 : bsize = 4
-            elif size <= 6 : bsize = 8
-            elif size <= 9 : bsize = 12
-            elif size <= 12: bsize = 16
-            else           : bsize = 20
-            eq(base64mime.base64_len('x'*size), bsize)
-
-    def test_decode(self):
-        eq = self.assertEqual
-        eq(base64mime.decode(''), '')
-        eq(base64mime.decode('aGVsbG8='), 'hello')
-        eq(base64mime.decode('aGVsbG8=', 'X'), 'hello')
-        eq(base64mime.decode('aGVsbG8NCndvcmxk\n', 'X'), 'helloXworld')
-
-    def test_encode(self):
-        eq = self.assertEqual
-        eq(base64mime.encode(''), '')
-        eq(base64mime.encode('hello'), 'aGVsbG8=\n')
-        # Test the binary flag
-        eq(base64mime.encode('hello\n'), 'aGVsbG8K\n')
-        eq(base64mime.encode('hello\n', 0), 'aGVsbG8NCg==\n')
-        # Test the maxlinelen arg
-        eq(base64mime.encode('xxxx ' * 20, maxlinelen=40), """\
-eHh4eCB4eHh4IHh4eHggeHh4eCB4eHh4IHh4eHgg
-eHh4eCB4eHh4IHh4eHggeHh4eCB4eHh4IHh4eHgg
-eHh4eCB4eHh4IHh4eHggeHh4eCB4eHh4IHh4eHgg
-eHh4eCB4eHh4IA==
-""")
-        # Test the eol argument
-        eq(base64mime.encode('xxxx ' * 20, maxlinelen=40, eol='\r\n'), """\
-eHh4eCB4eHh4IHh4eHggeHh4eCB4eHh4IHh4eHgg\r
-eHh4eCB4eHh4IHh4eHggeHh4eCB4eHh4IHh4eHgg\r
-eHh4eCB4eHh4IHh4eHggeHh4eCB4eHh4IHh4eHgg\r
-eHh4eCB4eHh4IA==\r
-""")
-
-    def test_header_encode(self):
-        eq = self.assertEqual
-        he = base64mime.header_encode
-        eq(he('hello'), '=?iso-8859-1?b?aGVsbG8=?=')
-        eq(he('hello\nworld'), '=?iso-8859-1?b?aGVsbG8NCndvcmxk?=')
-        # Test the charset option
-        eq(he('hello', charset='iso-8859-2'), '=?iso-8859-2?b?aGVsbG8=?=')
-        # Test the keep_eols flag
-        eq(he('hello\nworld', keep_eols=True),
-           '=?iso-8859-1?b?aGVsbG8Kd29ybGQ=?=')
-        # Test the maxlinelen argument
-        eq(he('xxxx ' * 20, maxlinelen=40), """\
-=?iso-8859-1?b?eHh4eCB4eHh4IHh4eHggeHg=?=
- =?iso-8859-1?b?eHggeHh4eCB4eHh4IHh4eHg=?=
- =?iso-8859-1?b?IHh4eHggeHh4eCB4eHh4IHg=?=
- =?iso-8859-1?b?eHh4IHh4eHggeHh4eCB4eHg=?=
- =?iso-8859-1?b?eCB4eHh4IHh4eHggeHh4eCA=?=
- =?iso-8859-1?b?eHh4eCB4eHh4IHh4eHgg?=""")
-        # Test the eol argument
-        eq(he('xxxx ' * 20, maxlinelen=40, eol='\r\n'), """\
-=?iso-8859-1?b?eHh4eCB4eHh4IHh4eHggeHg=?=\r
- =?iso-8859-1?b?eHggeHh4eCB4eHh4IHh4eHg=?=\r
- =?iso-8859-1?b?IHh4eHggeHh4eCB4eHh4IHg=?=\r
- =?iso-8859-1?b?eHh4IHh4eHggeHh4eCB4eHg=?=\r
- =?iso-8859-1?b?eCB4eHh4IHh4eHggeHh4eCA=?=\r
- =?iso-8859-1?b?eHh4eCB4eHh4IHh4eHgg?=""")
-
-
-
-class TestQuopri(unittest.TestCase):
-    def setUp(self):
-        self.hlit = [chr(x) for x in range(ord('a'), ord('z')+1)] + \
-                    [chr(x) for x in range(ord('A'), ord('Z')+1)] + \
-                    [chr(x) for x in range(ord('0'), ord('9')+1)] + \
-                    ['!', '*', '+', '-', '/', ' ']
-        self.hnon = [chr(x) for x in range(256) if chr(x) not in self.hlit]
-        assert len(self.hlit) + len(self.hnon) == 256
-        self.blit = [chr(x) for x in range(ord(' '), ord('~')+1)] + ['\t']
-        self.blit.remove('=')
-        self.bnon = [chr(x) for x in range(256) if chr(x) not in self.blit]
-        assert len(self.blit) + len(self.bnon) == 256
-
-    def test_header_quopri_check(self):
-        for c in self.hlit:
-            self.assertFalse(quoprimime.header_quopri_check(c))
-        for c in self.hnon:
-            self.assertTrue(quoprimime.header_quopri_check(c))
-
-    def test_body_quopri_check(self):
-        for c in self.blit:
-            self.assertFalse(quoprimime.body_quopri_check(c))
-        for c in self.bnon:
-            self.assertTrue(quoprimime.body_quopri_check(c))
-
-    def test_header_quopri_len(self):
-        eq = self.assertEqual
-        hql = quoprimime.header_quopri_len
-        enc = quoprimime.header_encode
-        for s in ('hello', 'h@e@l@l@o@'):
-            # Empty charset and no line-endings.  7 == RFC chrome
-            eq(hql(s), len(enc(s, charset='', eol=''))-7)
-        for c in self.hlit:
-            eq(hql(c), 1)
-        for c in self.hnon:
-            eq(hql(c), 3)
-
-    def test_body_quopri_len(self):
-        eq = self.assertEqual
-        bql = quoprimime.body_quopri_len
-        for c in self.blit:
-            eq(bql(c), 1)
-        for c in self.bnon:
-            eq(bql(c), 3)
-
-    def test_quote_unquote_idempotent(self):
-        for x in range(256):
-            c = chr(x)
-            self.assertEqual(quoprimime.unquote(quoprimime.quote(c)), c)
-
-    def test_header_encode(self):
-        eq = self.assertEqual
-        he = quoprimime.header_encode
-        eq(he('hello'), '=?iso-8859-1?q?hello?=')
-        eq(he('hello\nworld'), '=?iso-8859-1?q?hello=0D=0Aworld?=')
-        # Test the charset option
-        eq(he('hello', charset='iso-8859-2'), '=?iso-8859-2?q?hello?=')
-        # Test the keep_eols flag
-        eq(he('hello\nworld', keep_eols=True), '=?iso-8859-1?q?hello=0Aworld?=')
-        # Test a non-ASCII character
-        eq(he('hello\xc7there'), '=?iso-8859-1?q?hello=C7there?=')
-        # Test the maxlinelen argument
-        eq(he('xxxx ' * 20, maxlinelen=40), """\
-=?iso-8859-1?q?xxxx_xxxx_xxxx_xxxx_xx?=
- =?iso-8859-1?q?xx_xxxx_xxxx_xxxx_xxxx?=
- =?iso-8859-1?q?_xxxx_xxxx_xxxx_xxxx_x?=
- =?iso-8859-1?q?xxx_xxxx_xxxx_xxxx_xxx?=
- =?iso-8859-1?q?x_xxxx_xxxx_?=""")
-        # Test the eol argument
-        eq(he('xxxx ' * 20, maxlinelen=40, eol='\r\n'), """\
-=?iso-8859-1?q?xxxx_xxxx_xxxx_xxxx_xx?=\r
- =?iso-8859-1?q?xx_xxxx_xxxx_xxxx_xxxx?=\r
- =?iso-8859-1?q?_xxxx_xxxx_xxxx_xxxx_x?=\r
- =?iso-8859-1?q?xxx_xxxx_xxxx_xxxx_xxx?=\r
- =?iso-8859-1?q?x_xxxx_xxxx_?=""")
-
-    def test_decode(self):
-        eq = self.assertEqual
-        eq(quoprimime.decode(''), '')
-        eq(quoprimime.decode('hello'), 'hello')
-        eq(quoprimime.decode('hello', 'X'), 'hello')
-        eq(quoprimime.decode('hello\nworld', 'X'), 'helloXworld')
-
-    def test_encode(self):
-        eq = self.assertEqual
-        eq(quoprimime.encode(''), '')
-        eq(quoprimime.encode('hello'), 'hello')
-        # Test the binary flag
-        eq(quoprimime.encode('hello\r\nworld'), 'hello\nworld')
-        eq(quoprimime.encode('hello\r\nworld', 0), 'hello\nworld')
-        # Test the maxlinelen arg
-        eq(quoprimime.encode('xxxx ' * 20, maxlinelen=40), """\
-xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx=
- xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxx=
-x xxxx xxxx xxxx xxxx=20""")
-        # Test the eol argument
-        eq(quoprimime.encode('xxxx ' * 20, maxlinelen=40, eol='\r\n'), """\
-xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx=\r
- xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxx=\r
-x xxxx xxxx xxxx xxxx=20""")
-        eq(quoprimime.encode("""\
-one line
-
-two line"""), """\
-one line
-
-two line""")
-
-
-
-# Test the Charset class
-class TestCharset(unittest.TestCase):
-    def tearDown(self):
-        from email import charset as CharsetModule
-        try:
-            del CharsetModule.CHARSETS['fake']
-        except KeyError:
-            pass
-
-    def test_idempotent(self):
-        eq = self.assertEqual
-        # Make sure us-ascii = no Unicode conversion
-        c = Charset('us-ascii')
-        s = 'Hello World!'
-        sp = c.to_splittable(s)
-        eq(s, c.from_splittable(sp))
-        # test 8-bit idempotency with us-ascii
-        s = '\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa'
-        sp = c.to_splittable(s)
-        eq(s, c.from_splittable(sp))
-
-    def test_body_encode(self):
-        eq = self.assertEqual
-        # Try a charset with QP body encoding
-        c = Charset('iso-8859-1')
-        eq('hello w=F6rld', c.body_encode('hello w\xf6rld'))
-        # Try a charset with Base64 body encoding
-        c = Charset('utf-8')
-        eq('aGVsbG8gd29ybGQ=\n', c.body_encode('hello world'))
-        # Try a charset with None body encoding
-        c = Charset('us-ascii')
-        eq('hello world', c.body_encode('hello world'))
-        # Try the convert argument, where input codec != output codec
-        c = Charset('euc-jp')
-        # With apologies to Tokio Kikuchi ;)
-        try:
-            eq('\x1b$B5FCO;~IW\x1b(B',
-               c.body_encode('\xb5\xc6\xc3\xcf\xbb\xfe\xc9\xd7'))
-            eq('\xb5\xc6\xc3\xcf\xbb\xfe\xc9\xd7',
-               c.body_encode('\xb5\xc6\xc3\xcf\xbb\xfe\xc9\xd7', False))
-        except LookupError:
-            # We probably don't have the Japanese codecs installed
-            pass
-        # Testing SF bug #625509, which we have to fake, since there are no
-        # built-in encodings where the header encoding is QP but the body
-        # encoding is not.
-        from email import charset as CharsetModule
-        CharsetModule.add_charset('fake', CharsetModule.QP, None)
-        c = Charset('fake')
-        eq('hello w\xf6rld', c.body_encode('hello w\xf6rld'))
-
-    def test_unicode_charset_name(self):
-        charset = Charset(u'us-ascii')
-        self.assertEqual(str(charset), 'us-ascii')
-        self.assertRaises(errors.CharsetError, Charset, 'asc\xffii')
-
-
-
-# Test multilingual MIME headers.
-class TestHeader(TestEmailBase):
-    def test_simple(self):
-        eq = self.ndiffAssertEqual
-        h = Header('Hello World!')
-        eq(h.encode(), 'Hello World!')
-        h.append(' Goodbye World!')
-        eq(h.encode(), 'Hello World!  Goodbye World!')
-
-    def test_simple_surprise(self):
-        eq = self.ndiffAssertEqual
-        h = Header('Hello World!')
-        eq(h.encode(), 'Hello World!')
-        h.append('Goodbye World!')
-        eq(h.encode(), 'Hello World! Goodbye World!')
-
-    def test_header_needs_no_decoding(self):
-        h = 'no decoding needed'
-        self.assertEqual(decode_header(h), [(h, None)])
-
-    def test_long(self):
-        h = Header("I am the very model of a modern Major-General; I've information vegetable, animal, and mineral; I know the kings of England, and I quote the fights historical from Marathon to Waterloo, in order categorical; I'm very well acquainted, too, with matters mathematical; I understand equations, both the simple and quadratical; about binomial theorem I'm teeming with a lot o' news, with many cheerful facts about the square of the hypotenuse.",
-                   maxlinelen=76)
-        for l in h.encode(splitchars=' ').split('\n '):
-            self.assertTrue(len(l) <= 76)
-
-    def test_multilingual(self):
-        eq = self.ndiffAssertEqual
-        g = Charset("iso-8859-1")
-        cz = Charset("iso-8859-2")
-        utf8 = Charset("utf-8")
-        g_head = "Die Mieter treten hier ein werden mit einem Foerderband komfortabel den Korridor entlang, an s\xfcdl\xfcndischen Wandgem\xe4lden vorbei, gegen die rotierenden Klingen bef\xf6rdert. "
-        cz_head = "Finan\xe8ni metropole se hroutily pod tlakem jejich d\xf9vtipu.. "
-        utf8_head = u"\u6b63\u78ba\u306b\u8a00\u3046\u3068\u7ffb\u8a33\u306f\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4e00\u90e8\u306f\u30c9\u30a4\u30c4\u8a9e\u3067\u3059\u304c\u3001\u3042\u3068\u306f\u3067\u305f\u3089\u3081\u3067\u3059\u3002\u5b9f\u969b\u306b\u306f\u300cWenn ist das Nunstuck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput.\u300d\u3068\u8a00\u3063\u3066\u3044\u307e\u3059\u3002".encode("utf-8")
-        h = Header(g_head, g)
-        h.append(cz_head, cz)
-        h.append(utf8_head, utf8)
-        enc = h.encode()
-        eq(enc, """\
-=?iso-8859-1?q?Die_Mieter_treten_hier_ein_werden_mit_einem_Foerderband_ko?=
- =?iso-8859-1?q?mfortabel_den_Korridor_entlang=2C_an_s=FCdl=FCndischen_Wan?=
- =?iso-8859-1?q?dgem=E4lden_vorbei=2C_gegen_die_rotierenden_Klingen_bef=F6?=
- =?iso-8859-1?q?rdert=2E_?= =?iso-8859-2?q?Finan=E8ni_metropole_se_hroutily?=
- =?iso-8859-2?q?_pod_tlakem_jejich_d=F9vtipu=2E=2E_?= =?utf-8?b?5q2j56K6?=
- =?utf-8?b?44Gr6KiA44GG44Go57+76Kiz44Gv44GV44KM44Gm44GE44G+44Gb44KT44CC?=
- =?utf-8?b?5LiA6YOo44Gv44OJ44Kk44OE6Kqe44Gn44GZ44GM44CB44GC44Go44Gv44Gn?=
- =?utf-8?b?44Gf44KJ44KB44Gn44GZ44CC5a6f6Zqb44Gr44Gv44CMV2VubiBpc3QgZGFz?=
- =?utf-8?q?_Nunstuck_git_und_Slotermeyer=3F_Ja!_Beiherhund_das_Oder_die_Fl?=
- =?utf-8?b?aXBwZXJ3YWxkdCBnZXJzcHV0LuOAjeOBqOiogOOBo+OBpuOBhOOBvuOBmQ==?=
- =?utf-8?b?44CC?=""")
-        eq(decode_header(enc),
-           [(g_head, "iso-8859-1"), (cz_head, "iso-8859-2"),
-            (utf8_head, "utf-8")])
-        ustr = unicode(h)
-        eq(ustr.encode('utf-8'),
-           'Die Mieter treten hier ein werden mit einem Foerderband '
-           'komfortabel den Korridor entlang, an s\xc3\xbcdl\xc3\xbcndischen '
-           'Wandgem\xc3\xa4lden vorbei, gegen die rotierenden Klingen '
-           'bef\xc3\xb6rdert. Finan\xc4\x8dni metropole se hroutily pod '
-           'tlakem jejich d\xc5\xafvtipu.. \xe6\xad\xa3\xe7\xa2\xba\xe3\x81'
-           '\xab\xe8\xa8\x80\xe3\x81\x86\xe3\x81\xa8\xe7\xbf\xbb\xe8\xa8\xb3'
-           '\xe3\x81\xaf\xe3\x81\x95\xe3\x82\x8c\xe3\x81\xa6\xe3\x81\x84\xe3'
-           '\x81\xbe\xe3\x81\x9b\xe3\x82\x93\xe3\x80\x82\xe4\xb8\x80\xe9\x83'
-           '\xa8\xe3\x81\xaf\xe3\x83\x89\xe3\x82\xa4\xe3\x83\x84\xe8\xaa\x9e'
-           '\xe3\x81\xa7\xe3\x81\x99\xe3\x81\x8c\xe3\x80\x81\xe3\x81\x82\xe3'
-           '\x81\xa8\xe3\x81\xaf\xe3\x81\xa7\xe3\x81\x9f\xe3\x82\x89\xe3\x82'
-           '\x81\xe3\x81\xa7\xe3\x81\x99\xe3\x80\x82\xe5\xae\x9f\xe9\x9a\x9b'
-           '\xe3\x81\xab\xe3\x81\xaf\xe3\x80\x8cWenn ist das Nunstuck git '
-           'und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt '
-           'gersput.\xe3\x80\x8d\xe3\x81\xa8\xe8\xa8\x80\xe3\x81\xa3\xe3\x81'
-           '\xa6\xe3\x81\x84\xe3\x81\xbe\xe3\x81\x99\xe3\x80\x82')
-        # Test make_header()
-        newh = make_header(decode_header(enc))
-        eq(newh, enc)
-
-    def test_header_ctor_default_args(self):
-        eq = self.ndiffAssertEqual
-        h = Header()
-        eq(h, '')
-        h.append('foo', Charset('iso-8859-1'))
-        eq(h, '=?iso-8859-1?q?foo?=')
-
-    def test_explicit_maxlinelen(self):
-        eq = self.ndiffAssertEqual
-        hstr = 'A very long line that must get split to something other than at the 76th character boundary to test the non-default behavior'
-        h = Header(hstr)
-        eq(h.encode(), '''\
-A very long line that must get split to something other than at the 76th
- character boundary to test the non-default behavior''')
-        h = Header(hstr, header_name='Subject')
-        eq(h.encode(), '''\
-A very long line that must get split to something other than at the
- 76th character boundary to test the non-default behavior''')
-        h = Header(hstr, maxlinelen=1024, header_name='Subject')
-        eq(h.encode(), hstr)
-
-    def test_us_ascii_header(self):
-        eq = self.assertEqual
-        s = 'hello'
-        x = decode_header(s)
-        eq(x, [('hello', None)])
-        h = make_header(x)
-        eq(s, h.encode())
-
-    def test_string_charset(self):
-        eq = self.assertEqual
-        h = Header()
-        h.append('hello', 'iso-8859-1')
-        eq(h, '=?iso-8859-1?q?hello?=')
-
-##    def test_unicode_error(self):
-##        raises = self.assertRaises
-##        raises(UnicodeError, Header, u'[P\xf6stal]', 'us-ascii')
-##        raises(UnicodeError, Header, '[P\xf6stal]', 'us-ascii')
-##        h = Header()
-##        raises(UnicodeError, h.append, u'[P\xf6stal]', 'us-ascii')
-##        raises(UnicodeError, h.append, '[P\xf6stal]', 'us-ascii')
-##        raises(UnicodeError, Header, u'\u83ca\u5730\u6642\u592b', 'iso-8859-1')
-
-    def test_utf8_shortest(self):
-        eq = self.assertEqual
-        h = Header(u'p\xf6stal', 'utf-8')
-        eq(h.encode(), '=?utf-8?q?p=C3=B6stal?=')
-        h = Header(u'\u83ca\u5730\u6642\u592b', 'utf-8')
-        eq(h.encode(), '=?utf-8?b?6I+K5Zyw5pmC5aSr?=')
-
-    def test_bad_8bit_header(self):
-        raises = self.assertRaises
-        eq = self.assertEqual
-        x = 'Ynwp4dUEbay Auction Semiar- No Charge \x96 Earn Big'
-        raises(UnicodeError, Header, x)
-        h = Header()
-        raises(UnicodeError, h.append, x)
-        eq(str(Header(x, errors='replace')), x)
-        h.append(x, errors='replace')
-        eq(str(h), x)
-
-    def test_encoded_adjacent_nonencoded(self):
-        eq = self.assertEqual
-        h = Header()
-        h.append('hello', 'iso-8859-1')
-        h.append('world')
-        s = h.encode()
-        eq(s, '=?iso-8859-1?q?hello?= world')
-        h = make_header(decode_header(s))
-        eq(h.encode(), s)
-
-    def test_whitespace_eater(self):
-        eq = self.assertEqual
-        s = 'Subject: =?koi8-r?b?8NLP18XSy8EgzsEgxsnOwczYztk=?= =?koi8-r?q?=CA?= zz.'
-        parts = decode_header(s)
-        eq(parts, [('Subject:', None), ('\xf0\xd2\xcf\xd7\xc5\xd2\xcb\xc1 \xce\xc1 \xc6\xc9\xce\xc1\xcc\xd8\xce\xd9\xca', 'koi8-r'), ('zz.', None)])
-        hdr = make_header(parts)
-        eq(hdr.encode(),
-           'Subject: =?koi8-r?b?8NLP18XSy8EgzsEgxsnOwczYztnK?= zz.')
-
-    def test_broken_base64_header(self):
-        raises = self.assertRaises
-        s = 'Subject: =?EUC-KR?B?CSixpLDtKSC/7Liuvsax4iC6uLmwMcijIKHaILzSwd/H0SC8+LCjwLsgv7W/+Mj3I ?='
-        raises(errors.HeaderParseError, decode_header, s)
-
-
-
-# Test RFC 2231 header parameters (en/de)coding
-class TestRFC2231(TestEmailBase):
-    def test_get_param(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_29.txt')
-        eq(msg.get_param('title'),
-           ('us-ascii', 'en', 'This is even more ***fun*** isn\'t it!'))
-        eq(msg.get_param('title', unquote=False),
-           ('us-ascii', 'en', '"This is even more ***fun*** isn\'t it!"'))
-
-    def test_set_param(self):
-        eq = self.assertEqual
-        msg = Message()
-        msg.set_param('title', 'This is even more ***fun*** isn\'t it!',
-                      charset='us-ascii')
-        eq(msg.get_param('title'),
-           ('us-ascii', '', 'This is even more ***fun*** isn\'t it!'))
-        msg.set_param('title', 'This is even more ***fun*** isn\'t it!',
-                      charset='us-ascii', language='en')
-        eq(msg.get_param('title'),
-           ('us-ascii', 'en', 'This is even more ***fun*** isn\'t it!'))
-        msg = self._msgobj('msg_01.txt')
-        msg.set_param('title', 'This is even more ***fun*** isn\'t it!',
-                      charset='us-ascii', language='en')
-        self.ndiffAssertEqual(msg.as_string(), """\
-Return-Path: <bbb@zzz.org>
-Delivered-To: bbb@zzz.org
-Received: by mail.zzz.org (Postfix, from userid 889)
- id 27CEAD38CC; Fri,  4 May 2001 14:05:44 -0400 (EDT)
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Message-ID: <15090.61304.110929.45684@aaa.zzz.org>
-From: bbb@ddd.com (John X. Doe)
-To: bbb@zzz.org
-Subject: This is a test message
-Date: Fri, 4 May 2001 14:05:44 -0400
-Content-Type: text/plain; charset=us-ascii;
- title*="us-ascii'en'This%20is%20even%20more%20%2A%2A%2Afun%2A%2A%2A%20isn%27t%20it%21"
-
-
-Hi,
-
-Do you like this message?
-
--Me
-""")
-
-    def test_del_param(self):
-        eq = self.ndiffAssertEqual
-        msg = self._msgobj('msg_01.txt')
-        msg.set_param('foo', 'bar', charset='us-ascii', language='en')
-        msg.set_param('title', 'This is even more ***fun*** isn\'t it!',
-            charset='us-ascii', language='en')
-        msg.del_param('foo', header='Content-Type')
-        eq(msg.as_string(), """\
-Return-Path: <bbb@zzz.org>
-Delivered-To: bbb@zzz.org
-Received: by mail.zzz.org (Postfix, from userid 889)
- id 27CEAD38CC; Fri,  4 May 2001 14:05:44 -0400 (EDT)
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Message-ID: <15090.61304.110929.45684@aaa.zzz.org>
-From: bbb@ddd.com (John X. Doe)
-To: bbb@zzz.org
-Subject: This is a test message
-Date: Fri, 4 May 2001 14:05:44 -0400
-Content-Type: text/plain; charset="us-ascii";
- title*="us-ascii'en'This%20is%20even%20more%20%2A%2A%2Afun%2A%2A%2A%20isn%27t%20it%21"
-
-
-Hi,
-
-Do you like this message?
-
--Me
-""")
-
-    def test_rfc2231_get_content_charset(self):
-        eq = self.assertEqual
-        msg = self._msgobj('msg_32.txt')
-        eq(msg.get_content_charset(), 'us-ascii')
-
-    def test_rfc2231_no_language_or_charset(self):
-        m = '''\
-Content-Transfer-Encoding: 8bit
-Content-Disposition: inline; filename="file____C__DOCUMENTS_20AND_20SETTINGS_FABIEN_LOCAL_20SETTINGS_TEMP_nsmail.htm"
-Content-Type: text/html; NAME*0=file____C__DOCUMENTS_20AND_20SETTINGS_FABIEN_LOCAL_20SETTINGS_TEM; NAME*1=P_nsmail.htm
-
-'''
-        msg = email.message_from_string(m)
-        param = msg.get_param('NAME')
-        self.assertFalse(isinstance(param, tuple))
-        self.assertEqual(
-            param,
-            'file____C__DOCUMENTS_20AND_20SETTINGS_FABIEN_LOCAL_20SETTINGS_TEMP_nsmail.htm')
-
-    def test_rfc2231_no_language_or_charset_in_filename(self):
-        m = '''\
-Content-Disposition: inline;
-\tfilename*0*="''This%20is%20even%20more%20";
-\tfilename*1*="%2A%2A%2Afun%2A%2A%2A%20";
-\tfilename*2="is it not.pdf"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(msg.get_filename(),
-                         'This is even more ***fun*** is it not.pdf')
-
-    def test_rfc2231_no_language_or_charset_in_filename_encoded(self):
-        m = '''\
-Content-Disposition: inline;
-\tfilename*0*="''This%20is%20even%20more%20";
-\tfilename*1*="%2A%2A%2Afun%2A%2A%2A%20";
-\tfilename*2="is it not.pdf"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(msg.get_filename(),
-                         'This is even more ***fun*** is it not.pdf')
-
-    def test_rfc2231_partly_encoded(self):
-        m = '''\
-Content-Disposition: inline;
-\tfilename*0="''This%20is%20even%20more%20";
-\tfilename*1*="%2A%2A%2Afun%2A%2A%2A%20";
-\tfilename*2="is it not.pdf"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(
-            msg.get_filename(),
-            'This%20is%20even%20more%20***fun*** is it not.pdf')
-
-    def test_rfc2231_partly_nonencoded(self):
-        m = '''\
-Content-Disposition: inline;
-\tfilename*0="This%20is%20even%20more%20";
-\tfilename*1="%2A%2A%2Afun%2A%2A%2A%20";
-\tfilename*2="is it not.pdf"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(
-            msg.get_filename(),
-            'This%20is%20even%20more%20%2A%2A%2Afun%2A%2A%2A%20is it not.pdf')
-
-    def test_rfc2231_no_language_or_charset_in_boundary(self):
-        m = '''\
-Content-Type: multipart/alternative;
-\tboundary*0*="''This%20is%20even%20more%20";
-\tboundary*1*="%2A%2A%2Afun%2A%2A%2A%20";
-\tboundary*2="is it not.pdf"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(msg.get_boundary(),
-                         'This is even more ***fun*** is it not.pdf')
-
-    def test_rfc2231_no_language_or_charset_in_charset(self):
-        # This is a nonsensical charset value, but tests the code anyway
-        m = '''\
-Content-Type: text/plain;
-\tcharset*0*="This%20is%20even%20more%20";
-\tcharset*1*="%2A%2A%2Afun%2A%2A%2A%20";
-\tcharset*2="is it not.pdf"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(msg.get_content_charset(),
-                         'this is even more ***fun*** is it not.pdf')
-
-    def test_rfc2231_bad_encoding_in_filename(self):
-        m = '''\
-Content-Disposition: inline;
-\tfilename*0*="bogus'xx'This%20is%20even%20more%20";
-\tfilename*1*="%2A%2A%2Afun%2A%2A%2A%20";
-\tfilename*2="is it not.pdf"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(msg.get_filename(),
-                         'This is even more ***fun*** is it not.pdf')
-
-    def test_rfc2231_bad_encoding_in_charset(self):
-        m = """\
-Content-Type: text/plain; charset*=bogus''utf-8%E2%80%9D
-
-"""
-        msg = email.message_from_string(m)
-        # This should return None because non-ascii characters in the charset
-        # are not allowed.
-        self.assertEqual(msg.get_content_charset(), None)
-
-    def test_rfc2231_bad_character_in_charset(self):
-        m = """\
-Content-Type: text/plain; charset*=ascii''utf-8%E2%80%9D
-
-"""
-        msg = email.message_from_string(m)
-        # This should return None because non-ascii characters in the charset
-        # are not allowed.
-        self.assertEqual(msg.get_content_charset(), None)
-
-    def test_rfc2231_bad_character_in_filename(self):
-        m = '''\
-Content-Disposition: inline;
-\tfilename*0*="ascii'xx'This%20is%20even%20more%20";
-\tfilename*1*="%2A%2A%2Afun%2A%2A%2A%20";
-\tfilename*2*="is it not.pdf%E2"
-
-'''
-        msg = email.message_from_string(m)
-        self.assertEqual(msg.get_filename(),
-                         u'This is even more ***fun*** is it not.pdf\ufffd')
-
-    def test_rfc2231_unknown_encoding(self):
-        m = """\
-Content-Transfer-Encoding: 8bit
-Content-Disposition: inline; filename*=X-UNKNOWN''myfile.txt
-
-"""
-        msg = email.message_from_string(m)
-        self.assertEqual(msg.get_filename(), 'myfile.txt')
-
-    def test_rfc2231_single_tick_in_filename_extended(self):
-        eq = self.assertEqual
-        m = """\
-Content-Type: application/x-foo;
-\tname*0*=\"Frank's\"; name*1*=\" Document\"
-
-"""
-        msg = email.message_from_string(m)
-        charset, language, s = msg.get_param('name')
-        eq(charset, None)
-        eq(language, None)
-        eq(s, "Frank's Document")
-
-    def test_rfc2231_single_tick_in_filename(self):
-        m = """\
-Content-Type: application/x-foo; name*0=\"Frank's\"; name*1=\" Document\"
-
-"""
-        msg = email.message_from_string(m)
-        param = msg.get_param('name')
-        self.assertFalse(isinstance(param, tuple))
-        self.assertEqual(param, "Frank's Document")
-
-    def test_rfc2231_tick_attack_extended(self):
-        eq = self.assertEqual
-        m = """\
-Content-Type: application/x-foo;
-\tname*0*=\"us-ascii'en-us'Frank's\"; name*1*=\" Document\"
-
-"""
-        msg = email.message_from_string(m)
-        charset, language, s = msg.get_param('name')
-        eq(charset, 'us-ascii')
-        eq(language, 'en-us')
-        eq(s, "Frank's Document")
-
-    def test_rfc2231_tick_attack(self):
-        m = """\
-Content-Type: application/x-foo;
-\tname*0=\"us-ascii'en-us'Frank's\"; name*1=\" Document\"
-
-"""
-        msg = email.message_from_string(m)
-        param = msg.get_param('name')
-        self.assertFalse(isinstance(param, tuple))
-        self.assertEqual(param, "us-ascii'en-us'Frank's Document")
-
-    def test_rfc2231_no_extended_values(self):
-        eq = self.assertEqual
-        m = """\
-Content-Type: application/x-foo; name=\"Frank's Document\"
-
-"""
-        msg = email.message_from_string(m)
-        eq(msg.get_param('name'), "Frank's Document")
-
-    def test_rfc2231_encoded_then_unencoded_segments(self):
-        eq = self.assertEqual
-        m = """\
-Content-Type: application/x-foo;
-\tname*0*=\"us-ascii'en-us'My\";
-\tname*1=\" Document\";
-\tname*2*=\" For You\"
-
-"""
-        msg = email.message_from_string(m)
-        charset, language, s = msg.get_param('name')
-        eq(charset, 'us-ascii')
-        eq(language, 'en-us')
-        eq(s, 'My Document For You')
-
-    def test_rfc2231_unencoded_then_encoded_segments(self):
-        eq = self.assertEqual
-        m = """\
-Content-Type: application/x-foo;
-\tname*0=\"us-ascii'en-us'My\";
-\tname*1*=\" Document\";
-\tname*2*=\" For You\"
-
-"""
-        msg = email.message_from_string(m)
-        charset, language, s = msg.get_param('name')
-        eq(charset, 'us-ascii')
-        eq(language, 'en-us')
-        eq(s, 'My Document For You')
-
-
-
-def _testclasses():
-    mod = sys.modules[__name__]
-    return [getattr(mod, name) for name in dir(mod) if name.startswith('Test')]
-
-
-def suite():
-    suite = unittest.TestSuite()
-    for testclass in _testclasses():
-        suite.addTest(unittest.makeSuite(testclass))
-    return suite
-
-
-def test_main():
-    for testclass in _testclasses():
-        run_unittest(testclass)
-
-
-
-if __name__ == '__main__':
-    unittest.main(defaultTest='suite')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_torture.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_torture.py
deleted file mode 100644
index 498c24d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/test/test_email_torture.py
+++ /dev/null
@@ -1,136 +0,0 @@
-# Copyright (C) 2002-2004 Python Software Foundation
-#
-# A torture test of the email package.  This should not be run as part of the
-# standard Python test suite since it requires several meg of email messages
-# collected in the wild.  These source messages are not checked into the
-# Python distro, but are available as part of the standalone email package at
-# http://sf.net/projects/mimelib
-
-import sys
-import os
-import unittest
-from cStringIO import StringIO
-from types import ListType
-
-from email.test.test_email import TestEmailBase
-from test.test_support import TestSkipped, run_unittest
-
-import email
-from email import __file__ as testfile
-from email.iterators import _structure
-
-def openfile(filename):
-    from os.path import join, dirname, abspath
-    path = abspath(join(dirname(testfile), os.pardir, 'moredata', filename))
-    return open(path, 'r')
-
-# Prevent this test from running in the Python distro
-try:
-    openfile('crispin-torture.txt')
-except IOError:
-    raise TestSkipped
-
-
-\f
-class TortureBase(TestEmailBase):
-    def _msgobj(self, filename):
-        fp = openfile(filename)
-        try:
-            msg = email.message_from_file(fp)
-        finally:
-            fp.close()
-        return msg
-
-
-\f
-class TestCrispinTorture(TortureBase):
-    # Mark Crispin's torture test from the SquirrelMail project
-    def test_mondo_message(self):
-        eq = self.assertEqual
-        neq = self.ndiffAssertEqual
-        msg = self._msgobj('crispin-torture.txt')
-        payload = msg.get_payload()
-        eq(type(payload), ListType)
-        eq(len(payload), 12)
-        eq(msg.preamble, None)
-        eq(msg.epilogue, '\n')
-        # Probably the best way to verify the message is parsed correctly is to
-        # dump its structure and compare it against the known structure.
-        fp = StringIO()
-        _structure(msg, fp=fp)
-        neq(fp.getvalue(), """\
-multipart/mixed
-    text/plain
-    message/rfc822
-        multipart/alternative
-            text/plain
-            multipart/mixed
-                text/richtext
-            application/andrew-inset
-    message/rfc822
-        audio/basic
-    audio/basic
-    image/pbm
-    message/rfc822
-        multipart/mixed
-            multipart/mixed
-                text/plain
-                audio/x-sun
-            multipart/mixed
-                image/gif
-                image/gif
-                application/x-be2
-                application/atomicmail
-            audio/x-sun
-    message/rfc822
-        multipart/mixed
-            text/plain
-            image/pgm
-            text/plain
-    message/rfc822
-        multipart/mixed
-            text/plain
-            image/pbm
-    message/rfc822
-        application/postscript
-    image/gif
-    message/rfc822
-        multipart/mixed
-            audio/basic
-            audio/basic
-    message/rfc822
-        multipart/mixed
-            application/postscript
-            text/plain
-            message/rfc822
-                multipart/mixed
-                    text/plain
-                    multipart/parallel
-                        image/gif
-                        audio/basic
-                    application/atomicmail
-                    message/rfc822
-                        audio/x-sun
-""")
-
-\f
-def _testclasses():
-    mod = sys.modules[__name__]
-    return [getattr(mod, name) for name in dir(mod) if name.startswith('Test')]
-
-
-def suite():
-    suite = unittest.TestSuite()
-    for testclass in _testclasses():
-        suite.addTest(unittest.makeSuite(testclass))
-    return suite
-
-
-def test_main():
-    for testclass in _testclasses():
-        run_unittest(testclass)
-
-
-\f
-if __name__ == '__main__':
-    unittest.main(defaultTest='suite')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/utils.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/email/utils.py
deleted file mode 100644
index 08d0403..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/email/utils.py
+++ /dev/null
@@ -1,324 +0,0 @@
-# Copyright (C) 2001-2010 Python Software Foundation
-# Author: Barry Warsaw
-# Contact: email-sig@python.org
-
-"""Miscellaneous utilities."""
-
-__all__ = [
-    'collapse_rfc2231_value',
-    'decode_params',
-    'decode_rfc2231',
-    'encode_rfc2231',
-    'formataddr',
-    'formatdate',
-    'getaddresses',
-    'make_msgid',
-    'mktime_tz',
-    'parseaddr',
-    'parsedate',
-    'parsedate_tz',
-    'unquote',
-    ]
-
-import os
-import re
-import time
-import base64
-import random
-import socket
-import urllib
-import warnings
-
-from email._parseaddr import quote
-from email._parseaddr import AddressList as _AddressList
-from email._parseaddr import mktime_tz
-
-# We need wormarounds for bugs in these methods in older Pythons (see below)
-from email._parseaddr import parsedate as _parsedate
-from email._parseaddr import parsedate_tz as _parsedate_tz
-
-from quopri import decodestring as _qdecode
-
-# Intrapackage imports
-from email.encoders import _bencode, _qencode
-
-COMMASPACE = ', '
-EMPTYSTRING = ''
-UEMPTYSTRING = u''
-CRLF = '\r\n'
-TICK = "'"
-
-specialsre = re.compile(r'[][\\()<>@,:;".]')
-escapesre = re.compile(r'[][\\()"]')
-
-
-\f
-# Helpers
-
-def _identity(s):
-    return s
-
-
-def _bdecode(s):
-    """Decodes a base64 string.
-
-    This function is equivalent to base64.decodestring and it's retained only
-    for backward compatibility. It used to remove the last \n of the decoded
-    string, if it had any (see issue 7143).
-    """
-    if not s:
-        return s
-    return base64.decodestring(s)
-
-
-\f
-def fix_eols(s):
-    """Replace all line-ending characters with \r\n."""
-    # Fix newlines with no preceding carriage return
-    s = re.sub(r'(?<!\r)\n', CRLF, s)
-    # Fix carriage returns with no following newline
-    s = re.sub(r'\r(?!\n)', CRLF, s)
-    return s
-
-
-\f
-def formataddr(pair):
-    """The inverse of parseaddr(), this takes a 2-tuple of the form
-    (realname, email_address) and returns the string value suitable
-    for an RFC 2822 From, To or Cc header.
-
-    If the first element of pair is false, then the second element is
-    returned unmodified.
-    """
-    name, address = pair
-    if name:
-        quotes = ''
-        if specialsre.search(name):
-            quotes = '"'
-        name = escapesre.sub(r'\\\g<0>', name)
-        return '%s%s%s <%s>' % (quotes, name, quotes, address)
-    return address
-
-
-\f
-def getaddresses(fieldvalues):
-    """Return a list of (REALNAME, EMAIL) for each fieldvalue."""
-    all = COMMASPACE.join(fieldvalues)
-    a = _AddressList(all)
-    return a.addresslist
-
-
-\f
-ecre = re.compile(r'''
-  =\?                   # literal =?
-  (?P<charset>[^?]*?)   # non-greedy up to the next ? is the charset
-  \?                    # literal ?
-  (?P<encoding>[qb])    # either a "q" or a "b", case insensitive
-  \?                    # literal ?
-  (?P<atom>.*?)         # non-greedy up to the next ?= is the atom
-  \?=                   # literal ?=
-  ''', re.VERBOSE | re.IGNORECASE)
-
-
-\f
-def formatdate(timeval=None, localtime=False, usegmt=False):
-    """Returns a date string as specified by RFC 2822, e.g.:
-
-    Fri, 09 Nov 2001 01:08:47 -0000
-
-    Optional timeval if given is a floating point time value as accepted by
-    gmtime() and localtime(), otherwise the current time is used.
-
-    Optional localtime is a flag that when True, interprets timeval, and
-    returns a date relative to the local timezone instead of UTC, properly
-    taking daylight savings time into account.
-
-    Optional argument usegmt means that the timezone is written out as
-    an ascii string, not numeric one (so "GMT" instead of "+0000"). This
-    is needed for HTTP, and is only used when localtime==False.
-    """
-    # Note: we cannot use strftime() because that honors the locale and RFC
-    # 2822 requires that day and month names be the English abbreviations.
-    if timeval is None:
-        timeval = time.time()
-    if localtime:
-        now = time.localtime(timeval)
-        # Calculate timezone offset, based on whether the local zone has
-        # daylight savings time, and whether DST is in effect.
-        if time.daylight and now[-1]:
-            offset = time.altzone
-        else:
-            offset = time.timezone
-        hours, minutes = divmod(abs(offset), 3600)
-        # Remember offset is in seconds west of UTC, but the timezone is in
-        # minutes east of UTC, so the signs differ.
-        if offset > 0:
-            sign = '-'
-        else:
-            sign = '+'
-        zone = '%s%02d%02d' % (sign, hours, minutes // 60)
-    else:
-        now = time.gmtime(timeval)
-        # Timezone offset is always -0000
-        if usegmt:
-            zone = 'GMT'
-        else:
-            zone = '-0000'
-    return '%s, %02d %s %04d %02d:%02d:%02d %s' % (
-        ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'][now[6]],
-        now[2],
-        ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
-         'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][now[1] - 1],
-        now[0], now[3], now[4], now[5],
-        zone)
-
-
-\f
-def make_msgid(idstring=None):
-    """Returns a string suitable for RFC 2822 compliant Message-ID, e.g:
-
-    <20020201195627.33539.96671@nightshade.la.mastaler.com>
-
-    Optional idstring if given is a string used to strengthen the
-    uniqueness of the message id.
-    """
-    timeval = time.time()
-    utcdate = time.strftime('%Y%m%d%H%M%S', time.gmtime(timeval))
-    pid = os.getpid()
-    randint = random.randrange(100000)
-    if idstring is None:
-        idstring = ''
-    else:
-        idstring = '.' + idstring
-    idhost = socket.getfqdn()
-    msgid = '<%s.%s.%s%s@%s>' % (utcdate, pid, randint, idstring, idhost)
-    return msgid
-
-
-\f
-# These functions are in the standalone mimelib version only because they've
-# subsequently been fixed in the latest Python versions.  We use this to worm
-# around broken older Pythons.
-def parsedate(data):
-    if not data:
-        return None
-    return _parsedate(data)
-
-
-def parsedate_tz(data):
-    if not data:
-        return None
-    return _parsedate_tz(data)
-
-
-def parseaddr(addr):
-    addrs = _AddressList(addr).addresslist
-    if not addrs:
-        return '', ''
-    return addrs[0]
-
-
-# rfc822.unquote() doesn't properly de-backslash-ify in Python pre-2.3.
-def unquote(str):
-    """Remove quotes from a string."""
-    if len(str) > 1:
-        if str.startswith('"') and str.endswith('"'):
-            return str[1:-1].replace('\\\\', '\\').replace('\\"', '"')
-        if str.startswith('<') and str.endswith('>'):
-            return str[1:-1]
-    return str
-
-
-\f
-# RFC2231-related functions - parameter encoding and decoding
-def decode_rfc2231(s):
-    """Decode string according to RFC 2231"""
-    parts = s.split(TICK, 2)
-    if len(parts) <= 2:
-        return None, None, s
-    return parts
-
-
-def encode_rfc2231(s, charset=None, language=None):
-    """Encode string according to RFC 2231.
-
-    If neither charset nor language is given, then s is returned as-is.  If
-    charset is given but not language, the string is encoded using the empty
-    string for language.
-    """
-    import urllib
-    s = urllib.quote(s, safe='')
-    if charset is None and language is None:
-        return s
-    if language is None:
-        language = ''
-    return "%s'%s'%s" % (charset, language, s)
-
-
-rfc2231_continuation = re.compile(r'^(?P<name>\w+)\*((?P<num>[0-9]+)\*?)?$')
-
-def decode_params(params):
-    """Decode parameters list according to RFC 2231.
-
-    params is a sequence of 2-tuples containing (param name, string value).
-    """
-    # Copy params so we don't mess with the original
-    params = params[:]
-    new_params = []
-    # Map parameter's name to a list of continuations.  The values are a
-    # 3-tuple of the continuation number, the string value, and a flag
-    # specifying whether a particular segment is %-encoded.
-    rfc2231_params = {}
-    name, value = params.pop(0)
-    new_params.append((name, value))
-    while params:
-        name, value = params.pop(0)
-        if name.endswith('*'):
-            encoded = True
-        else:
-            encoded = False
-        value = unquote(value)
-        mo = rfc2231_continuation.match(name)
-        if mo:
-            name, num = mo.group('name', 'num')
-            if num is not None:
-                num = int(num)
-            rfc2231_params.setdefault(name, []).append((num, value, encoded))
-        else:
-            new_params.append((name, '"%s"' % quote(value)))
-    if rfc2231_params:
-        for name, continuations in rfc2231_params.items():
-            value = []
-            extended = False
-            # Sort by number
-            continuations.sort()
-            # And now append all values in numerical order, converting
-            # %-encodings for the encoded segments.  If any of the
-            # continuation names ends in a *, then the entire string, after
-            # decoding segments and concatenating, must have the charset and
-            # language specifiers at the beginning of the string.
-            for num, s, encoded in continuations:
-                if encoded:
-                    s = urllib.unquote(s)
-                    extended = True
-                value.append(s)
-            value = quote(EMPTYSTRING.join(value))
-            if extended:
-                charset, language, value = decode_rfc2231(value)
-                new_params.append((name, (charset, language, '"%s"' % value)))
-            else:
-                new_params.append((name, '"%s"' % value))
-    return new_params
-
-def collapse_rfc2231_value(value, errors='replace',
-                           fallback_charset='us-ascii'):
-    if isinstance(value, tuple):
-        rawval = unquote(value[2])
-        charset = value[0] or 'us-ascii'
-        try:
-            return unicode(rawval, charset, errors)
-        except LookupError:
-            # XXX charset is unknown to Python.
-            return unicode(rawval, fallback_charset, errors)
-    else:
-        return unquote(value)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/__init__.py
deleted file mode 100644
index 40e862f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/__init__.py
+++ /dev/null
@@ -1,157 +0,0 @@
-""" Standard "encodings" Package
-
-    Standard Python encoding modules are stored in this package
-    directory.
-
-    Codec modules must have names corresponding to normalized encoding
-    names as defined in the normalize_encoding() function below, e.g.
-    'utf-8' must be implemented by the module 'utf_8.py'.
-
-    Each codec module must export the following interface:
-
-    * getregentry() -> codecs.CodecInfo object
-    The getregentry() API must a CodecInfo object with encoder, decoder,
-    incrementalencoder, incrementaldecoder, streamwriter and streamreader
-    atttributes which adhere to the Python Codec Interface Standard.
-
-    In addition, a module may optionally also define the following
-    APIs which are then used by the package's codec search function:
-
-    * getaliases() -> sequence of encoding name strings to use as aliases
-
-    Alias names returned by getaliases() must be normalized encoding
-    names as defined by normalize_encoding().
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""#"
-
-import codecs
-from encodings import aliases
-import __builtin__
-
-_cache = {}
-_unknown = '--unknown--'
-_import_tail = ['*']
-_norm_encoding_map = ('                                              . '
-                      '0123456789       ABCDEFGHIJKLMNOPQRSTUVWXYZ     '
-                      ' abcdefghijklmnopqrstuvwxyz                     '
-                      '                                                '
-                      '                                                '
-                      '                ')
-_aliases = aliases.aliases
-
-class CodecRegistryError(LookupError, SystemError):
-    pass
-
-def normalize_encoding(encoding):
-
-    """ Normalize an encoding name.
-
-        Normalization works as follows: all non-alphanumeric
-        characters except the dot used for Python package names are
-        collapsed and replaced with a single underscore, e.g. '  -;#'
-        becomes '_'. Leading and trailing underscores are removed.
-
-        Note that encoding names should be ASCII only; if they do use
-        non-ASCII characters, these must be Latin-1 compatible.
-
-    """
-    # Make sure we have an 8-bit string, because .translate() works
-    # differently for Unicode strings.
-    if hasattr(__builtin__, "unicode") and isinstance(encoding, unicode):
-        # Note that .encode('latin-1') does *not* use the codec
-        # registry, so this call doesn't recurse. (See unicodeobject.c
-        # PyUnicode_AsEncodedString() for details)
-        encoding = encoding.encode('latin-1')
-    return '_'.join(encoding.translate(_norm_encoding_map).split())
-
-def search_function(encoding):
-
-    # Cache lookup
-    entry = _cache.get(encoding, _unknown)
-    if entry is not _unknown:
-        return entry
-
-    # Import the module:
-    #
-    # First try to find an alias for the normalized encoding
-    # name and lookup the module using the aliased name, then try to
-    # lookup the module using the standard import scheme, i.e. first
-    # try in the encodings package, then at top-level.
-    #
-    norm_encoding = normalize_encoding(encoding)
-    aliased_encoding = _aliases.get(norm_encoding) or \
-                       _aliases.get(norm_encoding.replace('.', '_'))
-    if aliased_encoding is not None:
-        modnames = [aliased_encoding,
-                    norm_encoding]
-    else:
-        modnames = [norm_encoding]
-    for modname in modnames:
-        if not modname or '.' in modname:
-            continue
-        try:
-            # Import is absolute to prevent the possibly malicious import of a
-            # module with side-effects that is not in the 'encodings' package.
-            mod = __import__('encodings.' + modname, fromlist=_import_tail,
-                             level=0)
-        except ImportError:
-            pass
-        else:
-            break
-    else:
-        mod = None
-
-    try:
-        getregentry = mod.getregentry
-    except AttributeError:
-        # Not a codec module
-        mod = None
-
-    if mod is None:
-        # Cache misses
-        _cache[encoding] = None
-        return None
-
-    # Now ask the module for the registry entry
-    entry = getregentry()
-    if not isinstance(entry, codecs.CodecInfo):
-        if not 4 <= len(entry) <= 7:
-            raise CodecRegistryError,\
-                 'module "%s" (%s) failed to register' % \
-                  (mod.__name__, mod.__file__)
-        if not hasattr(entry[0], '__call__') or \
-           not hasattr(entry[1], '__call__') or \
-           (entry[2] is not None and not hasattr(entry[2], '__call__')) or \
-           (entry[3] is not None and not hasattr(entry[3], '__call__')) or \
-           (len(entry) > 4 and entry[4] is not None and not hasattr(entry[4], '__call__')) or \
-           (len(entry) > 5 and entry[5] is not None and not hasattr(entry[5], '__call__')):
-            raise CodecRegistryError,\
-                'incompatible codecs in module "%s" (%s)' % \
-                (mod.__name__, mod.__file__)
-        if len(entry)<7 or entry[6] is None:
-            entry += (None,)*(6-len(entry)) + (mod.__name__.split(".", 1)[1],)
-        entry = codecs.CodecInfo(*entry)
-
-    # Cache the codec registry entry
-    _cache[encoding] = entry
-
-    # Register its aliases (without overwriting previously registered
-    # aliases)
-    try:
-        codecaliases = mod.getaliases()
-    except AttributeError:
-        pass
-    else:
-        for alias in codecaliases:
-            if alias not in _aliases:
-                _aliases[alias] = modname
-
-    # Return the registry entry
-    return entry
-
-# Register the search_function in the Python codec registry
-codecs.register(search_function)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/aliases.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/aliases.py
deleted file mode 100644
index ff8011b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/aliases.py
+++ /dev/null
@@ -1,527 +0,0 @@
-""" Encoding Aliases Support
-
-    This module is used by the encodings package search function to
-    map encodings names to module names.
-
-    Note that the search function normalizes the encoding names before
-    doing the lookup, so the mapping will have to map normalized
-    encoding names to module names.
-
-    Contents:
-
-        The following aliases dictionary contains mappings of all IANA
-        character set names for which the Python core library provides
-        codecs. In addition to these, a few Python specific codec
-        aliases have also been added.
-
-"""
-aliases = {
-
-    # Please keep this list sorted alphabetically by value !
-
-    # ascii codec
-    '646'                : 'ascii',
-    'ansi_x3.4_1968'     : 'ascii',
-    'ansi_x3_4_1968'     : 'ascii', # some email headers use this non-standard name
-    'ansi_x3.4_1986'     : 'ascii',
-    'cp367'              : 'ascii',
-    'csascii'            : 'ascii',
-    'ibm367'             : 'ascii',
-    'iso646_us'          : 'ascii',
-    'iso_646.irv_1991'   : 'ascii',
-    'iso_ir_6'           : 'ascii',
-    'us'                 : 'ascii',
-    'us_ascii'           : 'ascii',
-
-    # base64_codec codec
-    'base64'             : 'base64_codec',
-    'base_64'            : 'base64_codec',
-
-    # big5 codec
-    'big5_tw'            : 'big5',
-    'csbig5'             : 'big5',
-
-    # big5hkscs codec
-    'big5_hkscs'         : 'big5hkscs',
-    'hkscs'              : 'big5hkscs',
-
-    # bz2_codec codec
-    'bz2'                : 'bz2_codec',
-
-    # cp037 codec
-    '037'                : 'cp037',
-    'csibm037'           : 'cp037',
-    'ebcdic_cp_ca'       : 'cp037',
-    'ebcdic_cp_nl'       : 'cp037',
-    'ebcdic_cp_us'       : 'cp037',
-    'ebcdic_cp_wt'       : 'cp037',
-    'ibm037'             : 'cp037',
-    'ibm039'             : 'cp037',
-
-    # cp1026 codec
-    '1026'               : 'cp1026',
-    'csibm1026'          : 'cp1026',
-    'ibm1026'            : 'cp1026',
-
-    # cp1140 codec
-    '1140'               : 'cp1140',
-    'ibm1140'            : 'cp1140',
-
-    # cp1250 codec
-    '1250'               : 'cp1250',
-    'windows_1250'       : 'cp1250',
-
-    # cp1251 codec
-    '1251'               : 'cp1251',
-    'windows_1251'       : 'cp1251',
-
-    # cp1252 codec
-    '1252'               : 'cp1252',
-    'windows_1252'       : 'cp1252',
-
-    # cp1253 codec
-    '1253'               : 'cp1253',
-    'windows_1253'       : 'cp1253',
-
-    # cp1254 codec
-    '1254'               : 'cp1254',
-    'windows_1254'       : 'cp1254',
-
-    # cp1255 codec
-    '1255'               : 'cp1255',
-    'windows_1255'       : 'cp1255',
-
-    # cp1256 codec
-    '1256'               : 'cp1256',
-    'windows_1256'       : 'cp1256',
-
-    # cp1257 codec
-    '1257'               : 'cp1257',
-    'windows_1257'       : 'cp1257',
-
-    # cp1258 codec
-    '1258'               : 'cp1258',
-    'windows_1258'       : 'cp1258',
-
-    # cp424 codec
-    '424'                : 'cp424',
-    'csibm424'           : 'cp424',
-    'ebcdic_cp_he'       : 'cp424',
-    'ibm424'             : 'cp424',
-
-    # cp437 codec
-    '437'                : 'cp437',
-    'cspc8codepage437'   : 'cp437',
-    'ibm437'             : 'cp437',
-
-    # cp500 codec
-    '500'                : 'cp500',
-    'csibm500'           : 'cp500',
-    'ebcdic_cp_be'       : 'cp500',
-    'ebcdic_cp_ch'       : 'cp500',
-    'ibm500'             : 'cp500',
-
-    # cp775 codec
-    '775'                : 'cp775',
-    'cspc775baltic'      : 'cp775',
-    'ibm775'             : 'cp775',
-
-    # cp850 codec
-    '850'                : 'cp850',
-    'cspc850multilingual' : 'cp850',
-    'ibm850'             : 'cp850',
-
-    # cp852 codec
-    '852'                : 'cp852',
-    'cspcp852'           : 'cp852',
-    'ibm852'             : 'cp852',
-
-    # cp855 codec
-    '855'                : 'cp855',
-    'csibm855'           : 'cp855',
-    'ibm855'             : 'cp855',
-
-    # cp857 codec
-    '857'                : 'cp857',
-    'csibm857'           : 'cp857',
-    'ibm857'             : 'cp857',
-
-    # cp858 codec
-    '858'                : 'cp858',
-    'csibm858'           : 'cp858',
-    'ibm858'             : 'cp858',
-
-    # cp860 codec
-    '860'                : 'cp860',
-    'csibm860'           : 'cp860',
-    'ibm860'             : 'cp860',
-
-    # cp861 codec
-    '861'                : 'cp861',
-    'cp_is'              : 'cp861',
-    'csibm861'           : 'cp861',
-    'ibm861'             : 'cp861',
-
-    # cp862 codec
-    '862'                : 'cp862',
-    'cspc862latinhebrew' : 'cp862',
-    'ibm862'             : 'cp862',
-
-    # cp863 codec
-    '863'                : 'cp863',
-    'csibm863'           : 'cp863',
-    'ibm863'             : 'cp863',
-
-    # cp864 codec
-    '864'                : 'cp864',
-    'csibm864'           : 'cp864',
-    'ibm864'             : 'cp864',
-
-    # cp865 codec
-    '865'                : 'cp865',
-    'csibm865'           : 'cp865',
-    'ibm865'             : 'cp865',
-
-    # cp866 codec
-    '866'                : 'cp866',
-    'csibm866'           : 'cp866',
-    'ibm866'             : 'cp866',
-
-    # cp869 codec
-    '869'                : 'cp869',
-    'cp_gr'              : 'cp869',
-    'csibm869'           : 'cp869',
-    'ibm869'             : 'cp869',
-
-    # cp932 codec
-    '932'                : 'cp932',
-    'ms932'              : 'cp932',
-    'mskanji'            : 'cp932',
-    'ms_kanji'           : 'cp932',
-
-    # cp949 codec
-    '949'                : 'cp949',
-    'ms949'              : 'cp949',
-    'uhc'                : 'cp949',
-
-    # cp950 codec
-    '950'                : 'cp950',
-    'ms950'              : 'cp950',
-
-    # euc_jis_2004 codec
-    'jisx0213'           : 'euc_jis_2004',
-    'eucjis2004'         : 'euc_jis_2004',
-    'euc_jis2004'        : 'euc_jis_2004',
-
-    # euc_jisx0213 codec
-    'eucjisx0213'        : 'euc_jisx0213',
-
-    # euc_jp codec
-    'eucjp'              : 'euc_jp',
-    'ujis'               : 'euc_jp',
-    'u_jis'              : 'euc_jp',
-
-    # euc_kr codec
-    'euckr'              : 'euc_kr',
-    'korean'             : 'euc_kr',
-    'ksc5601'            : 'euc_kr',
-    'ks_c_5601'          : 'euc_kr',
-    'ks_c_5601_1987'     : 'euc_kr',
-    'ksx1001'            : 'euc_kr',
-    'ks_x_1001'          : 'euc_kr',
-
-    # gb18030 codec
-    'gb18030_2000'       : 'gb18030',
-
-    # gb2312 codec
-    'chinese'            : 'gb2312',
-    'csiso58gb231280'    : 'gb2312',
-    'euc_cn'             : 'gb2312',
-    'euccn'              : 'gb2312',
-    'eucgb2312_cn'       : 'gb2312',
-    'gb2312_1980'        : 'gb2312',
-    'gb2312_80'          : 'gb2312',
-    'iso_ir_58'          : 'gb2312',
-
-    # gbk codec
-    '936'                : 'gbk',
-    'cp936'              : 'gbk',
-    'ms936'              : 'gbk',
-
-    # hex_codec codec
-    'hex'                : 'hex_codec',
-
-    # hp_roman8 codec
-    'roman8'             : 'hp_roman8',
-    'r8'                 : 'hp_roman8',
-    'csHPRoman8'         : 'hp_roman8',
-
-    # hz codec
-    'hzgb'               : 'hz',
-    'hz_gb'              : 'hz',
-    'hz_gb_2312'         : 'hz',
-
-    # iso2022_jp codec
-    'csiso2022jp'        : 'iso2022_jp',
-    'iso2022jp'          : 'iso2022_jp',
-    'iso_2022_jp'        : 'iso2022_jp',
-
-    # iso2022_jp_1 codec
-    'iso2022jp_1'        : 'iso2022_jp_1',
-    'iso_2022_jp_1'      : 'iso2022_jp_1',
-
-    # iso2022_jp_2 codec
-    'iso2022jp_2'        : 'iso2022_jp_2',
-    'iso_2022_jp_2'      : 'iso2022_jp_2',
-
-    # iso2022_jp_2004 codec
-    'iso_2022_jp_2004'   : 'iso2022_jp_2004',
-    'iso2022jp_2004'     : 'iso2022_jp_2004',
-
-    # iso2022_jp_3 codec
-    'iso2022jp_3'        : 'iso2022_jp_3',
-    'iso_2022_jp_3'      : 'iso2022_jp_3',
-
-    # iso2022_jp_ext codec
-    'iso2022jp_ext'      : 'iso2022_jp_ext',
-    'iso_2022_jp_ext'    : 'iso2022_jp_ext',
-
-    # iso2022_kr codec
-    'csiso2022kr'        : 'iso2022_kr',
-    'iso2022kr'          : 'iso2022_kr',
-    'iso_2022_kr'        : 'iso2022_kr',
-
-    # iso8859_10 codec
-    'csisolatin6'        : 'iso8859_10',
-    'iso_8859_10'        : 'iso8859_10',
-    'iso_8859_10_1992'   : 'iso8859_10',
-    'iso_ir_157'         : 'iso8859_10',
-    'l6'                 : 'iso8859_10',
-    'latin6'             : 'iso8859_10',
-
-    # iso8859_11 codec
-    'thai'               : 'iso8859_11',
-    'iso_8859_11'        : 'iso8859_11',
-    'iso_8859_11_2001'   : 'iso8859_11',
-
-    # iso8859_13 codec
-    'iso_8859_13'        : 'iso8859_13',
-    'l7'                 : 'iso8859_13',
-    'latin7'             : 'iso8859_13',
-
-    # iso8859_14 codec
-    'iso_8859_14'        : 'iso8859_14',
-    'iso_8859_14_1998'   : 'iso8859_14',
-    'iso_celtic'         : 'iso8859_14',
-    'iso_ir_199'         : 'iso8859_14',
-    'l8'                 : 'iso8859_14',
-    'latin8'             : 'iso8859_14',
-
-    # iso8859_15 codec
-    'iso_8859_15'        : 'iso8859_15',
-    'l9'                 : 'iso8859_15',
-    'latin9'             : 'iso8859_15',
-
-    # iso8859_16 codec
-    'iso_8859_16'        : 'iso8859_16',
-    'iso_8859_16_2001'   : 'iso8859_16',
-    'iso_ir_226'         : 'iso8859_16',
-    'l10'                : 'iso8859_16',
-    'latin10'            : 'iso8859_16',
-
-    # iso8859_2 codec
-    'csisolatin2'        : 'iso8859_2',
-    'iso_8859_2'         : 'iso8859_2',
-    'iso_8859_2_1987'    : 'iso8859_2',
-    'iso_ir_101'         : 'iso8859_2',
-    'l2'                 : 'iso8859_2',
-    'latin2'             : 'iso8859_2',
-
-    # iso8859_3 codec
-    'csisolatin3'        : 'iso8859_3',
-    'iso_8859_3'         : 'iso8859_3',
-    'iso_8859_3_1988'    : 'iso8859_3',
-    'iso_ir_109'         : 'iso8859_3',
-    'l3'                 : 'iso8859_3',
-    'latin3'             : 'iso8859_3',
-
-    # iso8859_4 codec
-    'csisolatin4'        : 'iso8859_4',
-    'iso_8859_4'         : 'iso8859_4',
-    'iso_8859_4_1988'    : 'iso8859_4',
-    'iso_ir_110'         : 'iso8859_4',
-    'l4'                 : 'iso8859_4',
-    'latin4'             : 'iso8859_4',
-
-    # iso8859_5 codec
-    'csisolatincyrillic' : 'iso8859_5',
-    'cyrillic'           : 'iso8859_5',
-    'iso_8859_5'         : 'iso8859_5',
-    'iso_8859_5_1988'    : 'iso8859_5',
-    'iso_ir_144'         : 'iso8859_5',
-
-    # iso8859_6 codec
-    'arabic'             : 'iso8859_6',
-    'asmo_708'           : 'iso8859_6',
-    'csisolatinarabic'   : 'iso8859_6',
-    'ecma_114'           : 'iso8859_6',
-    'iso_8859_6'         : 'iso8859_6',
-    'iso_8859_6_1987'    : 'iso8859_6',
-    'iso_ir_127'         : 'iso8859_6',
-
-    # iso8859_7 codec
-    'csisolatingreek'    : 'iso8859_7',
-    'ecma_118'           : 'iso8859_7',
-    'elot_928'           : 'iso8859_7',
-    'greek'              : 'iso8859_7',
-    'greek8'             : 'iso8859_7',
-    'iso_8859_7'         : 'iso8859_7',
-    'iso_8859_7_1987'    : 'iso8859_7',
-    'iso_ir_126'         : 'iso8859_7',
-
-    # iso8859_8 codec
-    'csisolatinhebrew'   : 'iso8859_8',
-    'hebrew'             : 'iso8859_8',
-    'iso_8859_8'         : 'iso8859_8',
-    'iso_8859_8_1988'    : 'iso8859_8',
-    'iso_ir_138'         : 'iso8859_8',
-
-    # iso8859_9 codec
-    'csisolatin5'        : 'iso8859_9',
-    'iso_8859_9'         : 'iso8859_9',
-    'iso_8859_9_1989'    : 'iso8859_9',
-    'iso_ir_148'         : 'iso8859_9',
-    'l5'                 : 'iso8859_9',
-    'latin5'             : 'iso8859_9',
-
-    # johab codec
-    'cp1361'             : 'johab',
-    'ms1361'             : 'johab',
-
-    # koi8_r codec
-    'cskoi8r'            : 'koi8_r',
-
-    # latin_1 codec
-    #
-    # Note that the latin_1 codec is implemented internally in C and a
-    # lot faster than the charmap codec iso8859_1 which uses the same
-    # encoding. This is why we discourage the use of the iso8859_1
-    # codec and alias it to latin_1 instead.
-    #
-    '8859'               : 'latin_1',
-    'cp819'              : 'latin_1',
-    'csisolatin1'        : 'latin_1',
-    'ibm819'             : 'latin_1',
-    'iso8859'            : 'latin_1',
-    'iso8859_1'          : 'latin_1',
-    'iso_8859_1'         : 'latin_1',
-    'iso_8859_1_1987'    : 'latin_1',
-    'iso_ir_100'         : 'latin_1',
-    'l1'                 : 'latin_1',
-    'latin'              : 'latin_1',
-    'latin1'             : 'latin_1',
-
-    # mac_cyrillic codec
-    'maccyrillic'        : 'mac_cyrillic',
-
-    # mac_greek codec
-    'macgreek'           : 'mac_greek',
-
-    # mac_iceland codec
-    'maciceland'         : 'mac_iceland',
-
-    # mac_latin2 codec
-    'maccentraleurope'   : 'mac_latin2',
-    'maclatin2'          : 'mac_latin2',
-
-    # mac_roman codec
-    'macroman'           : 'mac_roman',
-
-    # mac_turkish codec
-    'macturkish'         : 'mac_turkish',
-
-    # mbcs codec
-    'dbcs'               : 'mbcs',
-
-    # ptcp154 codec
-    'csptcp154'          : 'ptcp154',
-    'pt154'              : 'ptcp154',
-    'cp154'              : 'ptcp154',
-    'cyrillic_asian'     : 'ptcp154',
-
-    # quopri_codec codec
-    'quopri'             : 'quopri_codec',
-    'quoted_printable'   : 'quopri_codec',
-    'quotedprintable'    : 'quopri_codec',
-
-    # rot_13 codec
-    'rot13'              : 'rot_13',
-
-    # shift_jis codec
-    'csshiftjis'         : 'shift_jis',
-    'shiftjis'           : 'shift_jis',
-    'sjis'               : 'shift_jis',
-    's_jis'              : 'shift_jis',
-
-    # shift_jis_2004 codec
-    'shiftjis2004'       : 'shift_jis_2004',
-    'sjis_2004'          : 'shift_jis_2004',
-    's_jis_2004'         : 'shift_jis_2004',
-
-    # shift_jisx0213 codec
-    'shiftjisx0213'      : 'shift_jisx0213',
-    'sjisx0213'          : 'shift_jisx0213',
-    's_jisx0213'         : 'shift_jisx0213',
-
-    # tactis codec
-    'tis260'             : 'tactis',
-
-    # tis_620 codec
-    'tis620'             : 'tis_620',
-    'tis_620_0'          : 'tis_620',
-    'tis_620_2529_0'     : 'tis_620',
-    'tis_620_2529_1'     : 'tis_620',
-    'iso_ir_166'         : 'tis_620',
-
-    # utf_16 codec
-    'u16'                : 'utf_16',
-    'utf16'              : 'utf_16',
-
-    # utf_16_be codec
-    'unicodebigunmarked' : 'utf_16_be',
-    'utf_16be'           : 'utf_16_be',
-
-    # utf_16_le codec
-    'unicodelittleunmarked' : 'utf_16_le',
-    'utf_16le'           : 'utf_16_le',
-
-    # utf_32 codec
-    'u32'                : 'utf_32',
-    'utf32'              : 'utf_32',
-
-    # utf_32_be codec
-    'utf_32be'           : 'utf_32_be',
-
-    # utf_32_le codec
-    'utf_32le'           : 'utf_32_le',
-
-    # utf_7 codec
-    'u7'                 : 'utf_7',
-    'utf7'               : 'utf_7',
-    'unicode_1_1_utf_7'  : 'utf_7',
-
-    # utf_8 codec
-    'u8'                 : 'utf_8',
-    'utf'                : 'utf_8',
-    'utf8'               : 'utf_8',
-    'utf8_ucs2'          : 'utf_8',
-    'utf8_ucs4'          : 'utf_8',
-
-    # uu_codec codec
-    'uu'                 : 'uu_codec',
-
-    # zlib_codec codec
-    'zip'                : 'zlib_codec',
-    'zlib'               : 'zlib_codec',
-
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/ascii.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/ascii.py
deleted file mode 100644
index df0d66d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/ascii.py
+++ /dev/null
@@ -1,50 +0,0 @@
-""" Python 'ascii' Codec
-
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    # Note: Binding these as C functions will result in the class not
-    # converting them to methods. This is intended.
-    encode = codecs.ascii_encode
-    decode = codecs.ascii_decode
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.ascii_encode(input, self.errors)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.ascii_decode(input, self.errors)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-class StreamConverter(StreamWriter,StreamReader):
-
-    encode = codecs.ascii_decode
-    decode = codecs.ascii_encode
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='ascii',
-        encode=Codec.encode,
-        decode=Codec.decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/base64_codec.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/base64_codec.py
deleted file mode 100644
index 2092637..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/base64_codec.py
+++ /dev/null
@@ -1,79 +0,0 @@
-""" Python 'base64_codec' Codec - base64 content transfer encoding
-
-    Unlike most of the other codecs which target Unicode, this codec
-    will return Python string objects for both encode and decode.
-
-    Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-"""
-import codecs, base64
-
-### Codec APIs
-
-def base64_encode(input,errors='strict'):
-
-    """ Encodes the object input and returns a tuple (output
-        object, length consumed).
-
-        errors defines the error handling to apply. It defaults to
-        'strict' handling which is the only currently supported
-        error handling for this codec.
-
-    """
-    assert errors == 'strict'
-    output = base64.encodestring(input)
-    return (output, len(input))
-
-def base64_decode(input,errors='strict'):
-
-    """ Decodes the object input and returns a tuple (output
-        object, length consumed).
-
-        input must be an object which provides the bf_getreadbuf
-        buffer slot. Python strings, buffer objects and memory
-        mapped files are examples of objects providing this slot.
-
-        errors defines the error handling to apply. It defaults to
-        'strict' handling which is the only currently supported
-        error handling for this codec.
-
-    """
-    assert errors == 'strict'
-    output = base64.decodestring(input)
-    return (output, len(input))
-
-class Codec(codecs.Codec):
-
-    def encode(self, input,errors='strict'):
-        return base64_encode(input,errors)
-    def decode(self, input,errors='strict'):
-        return base64_decode(input,errors)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        assert self.errors == 'strict'
-        return base64.encodestring(input)
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        assert self.errors == 'strict'
-        return base64.decodestring(input)
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='base64',
-        encode=base64_encode,
-        decode=base64_decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/big5.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/big5.py
deleted file mode 100644
index 1be2c29..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/big5.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# big5.py: Python Unicode Codec for BIG5
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_tw, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_tw.getcodec('big5')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='big5',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/big5hkscs.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/big5hkscs.py
deleted file mode 100644
index ddfcaa6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/big5hkscs.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# big5hkscs.py: Python Unicode Codec for BIG5HKSCS
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_hk, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_hk.getcodec('big5hkscs')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='big5hkscs',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/bz2_codec.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/bz2_codec.py
deleted file mode 100644
index 04020db..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/bz2_codec.py
+++ /dev/null
@@ -1,102 +0,0 @@
-""" Python 'bz2_codec' Codec - bz2 compression encoding
-
-    Unlike most of the other codecs which target Unicode, this codec
-    will return Python string objects for both encode and decode.
-
-    Adapted by Raymond Hettinger from zlib_codec.py which was written
-    by Marc-Andre Lemburg (mal@lemburg.com).
-
-"""
-import codecs
-import bz2 # this codec needs the optional bz2 module !
-
-### Codec APIs
-
-def bz2_encode(input,errors='strict'):
-
-    """ Encodes the object input and returns a tuple (output
-        object, length consumed).
-
-        errors defines the error handling to apply. It defaults to
-        'strict' handling which is the only currently supported
-        error handling for this codec.
-
-    """
-    assert errors == 'strict'
-    output = bz2.compress(input)
-    return (output, len(input))
-
-def bz2_decode(input,errors='strict'):
-
-    """ Decodes the object input and returns a tuple (output
-        object, length consumed).
-
-        input must be an object which provides the bf_getreadbuf
-        buffer slot. Python strings, buffer objects and memory
-        mapped files are examples of objects providing this slot.
-
-        errors defines the error handling to apply. It defaults to
-        'strict' handling which is the only currently supported
-        error handling for this codec.
-
-    """
-    assert errors == 'strict'
-    output = bz2.decompress(input)
-    return (output, len(input))
-
-class Codec(codecs.Codec):
-
-    def encode(self, input, errors='strict'):
-        return bz2_encode(input, errors)
-    def decode(self, input, errors='strict'):
-        return bz2_decode(input, errors)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def __init__(self, errors='strict'):
-        assert errors == 'strict'
-        self.errors = errors
-        self.compressobj = bz2.BZ2Compressor()
-
-    def encode(self, input, final=False):
-        if final:
-            c = self.compressobj.compress(input)
-            return c + self.compressobj.flush()
-        else:
-            return self.compressobj.compress(input)
-
-    def reset(self):
-        self.compressobj = bz2.BZ2Compressor()
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def __init__(self, errors='strict'):
-        assert errors == 'strict'
-        self.errors = errors
-        self.decompressobj = bz2.BZ2Decompressor()
-
-    def decode(self, input, final=False):
-        try:
-            return self.decompressobj.decompress(input)
-        except EOFError:
-            return ''
-
-    def reset(self):
-        self.decompressobj = bz2.BZ2Decompressor()
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name="bz2",
-        encode=bz2_encode,
-        decode=bz2_decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/charmap.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/charmap.py
deleted file mode 100644
index 9697493..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/charmap.py
+++ /dev/null
@@ -1,69 +0,0 @@
-""" Generic Python Character Mapping Codec.
-
-    Use this codec directly rather than through the automatic
-    conversion mechanisms supplied by unicode() and .encode().
-
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    # Note: Binding these as C functions will result in the class not
-    # converting them to methods. This is intended.
-    encode = codecs.charmap_encode
-    decode = codecs.charmap_decode
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def __init__(self, errors='strict', mapping=None):
-        codecs.IncrementalEncoder.__init__(self, errors)
-        self.mapping = mapping
-
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input, self.errors, self.mapping)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def __init__(self, errors='strict', mapping=None):
-        codecs.IncrementalDecoder.__init__(self, errors)
-        self.mapping = mapping
-
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input, self.errors, self.mapping)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-
-    def __init__(self,stream,errors='strict',mapping=None):
-        codecs.StreamWriter.__init__(self,stream,errors)
-        self.mapping = mapping
-
-    def encode(self,input,errors='strict'):
-        return Codec.encode(input,errors,self.mapping)
-
-class StreamReader(Codec,codecs.StreamReader):
-
-    def __init__(self,stream,errors='strict',mapping=None):
-        codecs.StreamReader.__init__(self,stream,errors)
-        self.mapping = mapping
-
-    def decode(self,input,errors='strict'):
-        return Codec.decode(input,errors,self.mapping)
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='charmap',
-        encode=Codec.encode,
-        decode=Codec.decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp037.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp037.py
deleted file mode 100644
index c617a60..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp037.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp037 generated from 'MAPPINGS/VENDORS/MICSFT/EBCDIC/CP037.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp037',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x9c'     #  0x04 -> CONTROL
-    u'\t'       #  0x05 -> HORIZONTAL TABULATION
-    u'\x86'     #  0x06 -> CONTROL
-    u'\x7f'     #  0x07 -> DELETE
-    u'\x97'     #  0x08 -> CONTROL
-    u'\x8d'     #  0x09 -> CONTROL
-    u'\x8e'     #  0x0A -> CONTROL
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x9d'     #  0x14 -> CONTROL
-    u'\x85'     #  0x15 -> CONTROL
-    u'\x08'     #  0x16 -> BACKSPACE
-    u'\x87'     #  0x17 -> CONTROL
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x92'     #  0x1A -> CONTROL
-    u'\x8f'     #  0x1B -> CONTROL
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u'\x80'     #  0x20 -> CONTROL
-    u'\x81'     #  0x21 -> CONTROL
-    u'\x82'     #  0x22 -> CONTROL
-    u'\x83'     #  0x23 -> CONTROL
-    u'\x84'     #  0x24 -> CONTROL
-    u'\n'       #  0x25 -> LINE FEED
-    u'\x17'     #  0x26 -> END OF TRANSMISSION BLOCK
-    u'\x1b'     #  0x27 -> ESCAPE
-    u'\x88'     #  0x28 -> CONTROL
-    u'\x89'     #  0x29 -> CONTROL
-    u'\x8a'     #  0x2A -> CONTROL
-    u'\x8b'     #  0x2B -> CONTROL
-    u'\x8c'     #  0x2C -> CONTROL
-    u'\x05'     #  0x2D -> ENQUIRY
-    u'\x06'     #  0x2E -> ACKNOWLEDGE
-    u'\x07'     #  0x2F -> BELL
-    u'\x90'     #  0x30 -> CONTROL
-    u'\x91'     #  0x31 -> CONTROL
-    u'\x16'     #  0x32 -> SYNCHRONOUS IDLE
-    u'\x93'     #  0x33 -> CONTROL
-    u'\x94'     #  0x34 -> CONTROL
-    u'\x95'     #  0x35 -> CONTROL
-    u'\x96'     #  0x36 -> CONTROL
-    u'\x04'     #  0x37 -> END OF TRANSMISSION
-    u'\x98'     #  0x38 -> CONTROL
-    u'\x99'     #  0x39 -> CONTROL
-    u'\x9a'     #  0x3A -> CONTROL
-    u'\x9b'     #  0x3B -> CONTROL
-    u'\x14'     #  0x3C -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x3D -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'     #  0x3E -> CONTROL
-    u'\x1a'     #  0x3F -> SUBSTITUTE
-    u' '        #  0x40 -> SPACE
-    u'\xa0'     #  0x41 -> NO-BREAK SPACE
-    u'\xe2'     #  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'     #  0x44 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'     #  0x45 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe3'     #  0x46 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'     #  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'     #  0x48 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xf1'     #  0x49 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xa2'     #  0x4A -> CENT SIGN
-    u'.'        #  0x4B -> FULL STOP
-    u'<'        #  0x4C -> LESS-THAN SIGN
-    u'('        #  0x4D -> LEFT PARENTHESIS
-    u'+'        #  0x4E -> PLUS SIGN
-    u'|'        #  0x4F -> VERTICAL LINE
-    u'&'        #  0x50 -> AMPERSAND
-    u'\xe9'     #  0x51 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'     #  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'     #  0x54 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xed'     #  0x55 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xec'     #  0x58 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xdf'     #  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u'!'        #  0x5A -> EXCLAMATION MARK
-    u'$'        #  0x5B -> DOLLAR SIGN
-    u'*'        #  0x5C -> ASTERISK
-    u')'        #  0x5D -> RIGHT PARENTHESIS
-    u';'        #  0x5E -> SEMICOLON
-    u'\xac'     #  0x5F -> NOT SIGN
-    u'-'        #  0x60 -> HYPHEN-MINUS
-    u'/'        #  0x61 -> SOLIDUS
-    u'\xc2'     #  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc4'     #  0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc0'     #  0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'     #  0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc3'     #  0x66 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc5'     #  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'     #  0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xd1'     #  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xa6'     #  0x6A -> BROKEN BAR
-    u','        #  0x6B -> COMMA
-    u'%'        #  0x6C -> PERCENT SIGN
-    u'_'        #  0x6D -> LOW LINE
-    u'>'        #  0x6E -> GREATER-THAN SIGN
-    u'?'        #  0x6F -> QUESTION MARK
-    u'\xf8'     #  0x70 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xc9'     #  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'     #  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'     #  0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'     #  0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'     #  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'`'        #  0x79 -> GRAVE ACCENT
-    u':'        #  0x7A -> COLON
-    u'#'        #  0x7B -> NUMBER SIGN
-    u'@'        #  0x7C -> COMMERCIAL AT
-    u"'"        #  0x7D -> APOSTROPHE
-    u'='        #  0x7E -> EQUALS SIGN
-    u'"'        #  0x7F -> QUOTATION MARK
-    u'\xd8'     #  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'a'        #  0x81 -> LATIN SMALL LETTER A
-    u'b'        #  0x82 -> LATIN SMALL LETTER B
-    u'c'        #  0x83 -> LATIN SMALL LETTER C
-    u'd'        #  0x84 -> LATIN SMALL LETTER D
-    u'e'        #  0x85 -> LATIN SMALL LETTER E
-    u'f'        #  0x86 -> LATIN SMALL LETTER F
-    u'g'        #  0x87 -> LATIN SMALL LETTER G
-    u'h'        #  0x88 -> LATIN SMALL LETTER H
-    u'i'        #  0x89 -> LATIN SMALL LETTER I
-    u'\xab'     #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xf0'     #  0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
-    u'\xfd'     #  0x8D -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'     #  0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
-    u'\xb1'     #  0x8F -> PLUS-MINUS SIGN
-    u'\xb0'     #  0x90 -> DEGREE SIGN
-    u'j'        #  0x91 -> LATIN SMALL LETTER J
-    u'k'        #  0x92 -> LATIN SMALL LETTER K
-    u'l'        #  0x93 -> LATIN SMALL LETTER L
-    u'm'        #  0x94 -> LATIN SMALL LETTER M
-    u'n'        #  0x95 -> LATIN SMALL LETTER N
-    u'o'        #  0x96 -> LATIN SMALL LETTER O
-    u'p'        #  0x97 -> LATIN SMALL LETTER P
-    u'q'        #  0x98 -> LATIN SMALL LETTER Q
-    u'r'        #  0x99 -> LATIN SMALL LETTER R
-    u'\xaa'     #  0x9A -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0x9B -> MASCULINE ORDINAL INDICATOR
-    u'\xe6'     #  0x9C -> LATIN SMALL LIGATURE AE
-    u'\xb8'     #  0x9D -> CEDILLA
-    u'\xc6'     #  0x9E -> LATIN CAPITAL LIGATURE AE
-    u'\xa4'     #  0x9F -> CURRENCY SIGN
-    u'\xb5'     #  0xA0 -> MICRO SIGN
-    u'~'        #  0xA1 -> TILDE
-    u's'        #  0xA2 -> LATIN SMALL LETTER S
-    u't'        #  0xA3 -> LATIN SMALL LETTER T
-    u'u'        #  0xA4 -> LATIN SMALL LETTER U
-    u'v'        #  0xA5 -> LATIN SMALL LETTER V
-    u'w'        #  0xA6 -> LATIN SMALL LETTER W
-    u'x'        #  0xA7 -> LATIN SMALL LETTER X
-    u'y'        #  0xA8 -> LATIN SMALL LETTER Y
-    u'z'        #  0xA9 -> LATIN SMALL LETTER Z
-    u'\xa1'     #  0xAA -> INVERTED EXCLAMATION MARK
-    u'\xbf'     #  0xAB -> INVERTED QUESTION MARK
-    u'\xd0'     #  0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
-    u'\xdd'     #  0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'     #  0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
-    u'\xae'     #  0xAF -> REGISTERED SIGN
-    u'^'        #  0xB0 -> CIRCUMFLEX ACCENT
-    u'\xa3'     #  0xB1 -> POUND SIGN
-    u'\xa5'     #  0xB2 -> YEN SIGN
-    u'\xb7'     #  0xB3 -> MIDDLE DOT
-    u'\xa9'     #  0xB4 -> COPYRIGHT SIGN
-    u'\xa7'     #  0xB5 -> SECTION SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xbc'     #  0xB7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xB8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xB9 -> VULGAR FRACTION THREE QUARTERS
-    u'['        #  0xBA -> LEFT SQUARE BRACKET
-    u']'        #  0xBB -> RIGHT SQUARE BRACKET
-    u'\xaf'     #  0xBC -> MACRON
-    u'\xa8'     #  0xBD -> DIAERESIS
-    u'\xb4'     #  0xBE -> ACUTE ACCENT
-    u'\xd7'     #  0xBF -> MULTIPLICATION SIGN
-    u'{'        #  0xC0 -> LEFT CURLY BRACKET
-    u'A'        #  0xC1 -> LATIN CAPITAL LETTER A
-    u'B'        #  0xC2 -> LATIN CAPITAL LETTER B
-    u'C'        #  0xC3 -> LATIN CAPITAL LETTER C
-    u'D'        #  0xC4 -> LATIN CAPITAL LETTER D
-    u'E'        #  0xC5 -> LATIN CAPITAL LETTER E
-    u'F'        #  0xC6 -> LATIN CAPITAL LETTER F
-    u'G'        #  0xC7 -> LATIN CAPITAL LETTER G
-    u'H'        #  0xC8 -> LATIN CAPITAL LETTER H
-    u'I'        #  0xC9 -> LATIN CAPITAL LETTER I
-    u'\xad'     #  0xCA -> SOFT HYPHEN
-    u'\xf4'     #  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'     #  0xCD -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'     #  0xCE -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf5'     #  0xCF -> LATIN SMALL LETTER O WITH TILDE
-    u'}'        #  0xD0 -> RIGHT CURLY BRACKET
-    u'J'        #  0xD1 -> LATIN CAPITAL LETTER J
-    u'K'        #  0xD2 -> LATIN CAPITAL LETTER K
-    u'L'        #  0xD3 -> LATIN CAPITAL LETTER L
-    u'M'        #  0xD4 -> LATIN CAPITAL LETTER M
-    u'N'        #  0xD5 -> LATIN CAPITAL LETTER N
-    u'O'        #  0xD6 -> LATIN CAPITAL LETTER O
-    u'P'        #  0xD7 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0xD8 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0xD9 -> LATIN CAPITAL LETTER R
-    u'\xb9'     #  0xDA -> SUPERSCRIPT ONE
-    u'\xfb'     #  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xf9'     #  0xDD -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'     #  0xDE -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xff'     #  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\\'       #  0xE0 -> REVERSE SOLIDUS
-    u'\xf7'     #  0xE1 -> DIVISION SIGN
-    u'S'        #  0xE2 -> LATIN CAPITAL LETTER S
-    u'T'        #  0xE3 -> LATIN CAPITAL LETTER T
-    u'U'        #  0xE4 -> LATIN CAPITAL LETTER U
-    u'V'        #  0xE5 -> LATIN CAPITAL LETTER V
-    u'W'        #  0xE6 -> LATIN CAPITAL LETTER W
-    u'X'        #  0xE7 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0xE8 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0xE9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'     #  0xEA -> SUPERSCRIPT TWO
-    u'\xd4'     #  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd6'     #  0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd2'     #  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd5'     #  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
-    u'0'        #  0xF0 -> DIGIT ZERO
-    u'1'        #  0xF1 -> DIGIT ONE
-    u'2'        #  0xF2 -> DIGIT TWO
-    u'3'        #  0xF3 -> DIGIT THREE
-    u'4'        #  0xF4 -> DIGIT FOUR
-    u'5'        #  0xF5 -> DIGIT FIVE
-    u'6'        #  0xF6 -> DIGIT SIX
-    u'7'        #  0xF7 -> DIGIT SEVEN
-    u'8'        #  0xF8 -> DIGIT EIGHT
-    u'9'        #  0xF9 -> DIGIT NINE
-    u'\xb3'     #  0xFA -> SUPERSCRIPT THREE
-    u'\xdb'     #  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'     #  0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xd9'     #  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'     #  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\x9f'     #  0xFF -> CONTROL
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1006.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1006.py
deleted file mode 100644
index c649b76..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1006.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp1006 generated from 'MAPPINGS/VENDORS/MISC/CP1006.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp1006',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u06f0'   #  0xA1 -> EXTENDED ARABIC-INDIC DIGIT ZERO
-    u'\u06f1'   #  0xA2 -> EXTENDED ARABIC-INDIC DIGIT ONE
-    u'\u06f2'   #  0xA3 -> EXTENDED ARABIC-INDIC DIGIT TWO
-    u'\u06f3'   #  0xA4 -> EXTENDED ARABIC-INDIC DIGIT THREE
-    u'\u06f4'   #  0xA5 -> EXTENDED ARABIC-INDIC DIGIT FOUR
-    u'\u06f5'   #  0xA6 -> EXTENDED ARABIC-INDIC DIGIT FIVE
-    u'\u06f6'   #  0xA7 -> EXTENDED ARABIC-INDIC DIGIT SIX
-    u'\u06f7'   #  0xA8 -> EXTENDED ARABIC-INDIC DIGIT SEVEN
-    u'\u06f8'   #  0xA9 -> EXTENDED ARABIC-INDIC DIGIT EIGHT
-    u'\u06f9'   #  0xAA -> EXTENDED ARABIC-INDIC DIGIT NINE
-    u'\u060c'   #  0xAB -> ARABIC COMMA
-    u'\u061b'   #  0xAC -> ARABIC SEMICOLON
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\u061f'   #  0xAE -> ARABIC QUESTION MARK
-    u'\ufe81'   #  0xAF -> ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-    u'\ufe8d'   #  0xB0 -> ARABIC LETTER ALEF ISOLATED FORM
-    u'\ufe8e'   #  0xB1 -> ARABIC LETTER ALEF FINAL FORM
-    u'\ufe8e'   #  0xB2 -> ARABIC LETTER ALEF FINAL FORM
-    u'\ufe8f'   #  0xB3 -> ARABIC LETTER BEH ISOLATED FORM
-    u'\ufe91'   #  0xB4 -> ARABIC LETTER BEH INITIAL FORM
-    u'\ufb56'   #  0xB5 -> ARABIC LETTER PEH ISOLATED FORM
-    u'\ufb58'   #  0xB6 -> ARABIC LETTER PEH INITIAL FORM
-    u'\ufe93'   #  0xB7 -> ARABIC LETTER TEH MARBUTA ISOLATED FORM
-    u'\ufe95'   #  0xB8 -> ARABIC LETTER TEH ISOLATED FORM
-    u'\ufe97'   #  0xB9 -> ARABIC LETTER TEH INITIAL FORM
-    u'\ufb66'   #  0xBA -> ARABIC LETTER TTEH ISOLATED FORM
-    u'\ufb68'   #  0xBB -> ARABIC LETTER TTEH INITIAL FORM
-    u'\ufe99'   #  0xBC -> ARABIC LETTER THEH ISOLATED FORM
-    u'\ufe9b'   #  0xBD -> ARABIC LETTER THEH INITIAL FORM
-    u'\ufe9d'   #  0xBE -> ARABIC LETTER JEEM ISOLATED FORM
-    u'\ufe9f'   #  0xBF -> ARABIC LETTER JEEM INITIAL FORM
-    u'\ufb7a'   #  0xC0 -> ARABIC LETTER TCHEH ISOLATED FORM
-    u'\ufb7c'   #  0xC1 -> ARABIC LETTER TCHEH INITIAL FORM
-    u'\ufea1'   #  0xC2 -> ARABIC LETTER HAH ISOLATED FORM
-    u'\ufea3'   #  0xC3 -> ARABIC LETTER HAH INITIAL FORM
-    u'\ufea5'   #  0xC4 -> ARABIC LETTER KHAH ISOLATED FORM
-    u'\ufea7'   #  0xC5 -> ARABIC LETTER KHAH INITIAL FORM
-    u'\ufea9'   #  0xC6 -> ARABIC LETTER DAL ISOLATED FORM
-    u'\ufb84'   #  0xC7 -> ARABIC LETTER DAHAL ISOLATED FORMN
-    u'\ufeab'   #  0xC8 -> ARABIC LETTER THAL ISOLATED FORM
-    u'\ufead'   #  0xC9 -> ARABIC LETTER REH ISOLATED FORM
-    u'\ufb8c'   #  0xCA -> ARABIC LETTER RREH ISOLATED FORM
-    u'\ufeaf'   #  0xCB -> ARABIC LETTER ZAIN ISOLATED FORM
-    u'\ufb8a'   #  0xCC -> ARABIC LETTER JEH ISOLATED FORM
-    u'\ufeb1'   #  0xCD -> ARABIC LETTER SEEN ISOLATED FORM
-    u'\ufeb3'   #  0xCE -> ARABIC LETTER SEEN INITIAL FORM
-    u'\ufeb5'   #  0xCF -> ARABIC LETTER SHEEN ISOLATED FORM
-    u'\ufeb7'   #  0xD0 -> ARABIC LETTER SHEEN INITIAL FORM
-    u'\ufeb9'   #  0xD1 -> ARABIC LETTER SAD ISOLATED FORM
-    u'\ufebb'   #  0xD2 -> ARABIC LETTER SAD INITIAL FORM
-    u'\ufebd'   #  0xD3 -> ARABIC LETTER DAD ISOLATED FORM
-    u'\ufebf'   #  0xD4 -> ARABIC LETTER DAD INITIAL FORM
-    u'\ufec1'   #  0xD5 -> ARABIC LETTER TAH ISOLATED FORM
-    u'\ufec5'   #  0xD6 -> ARABIC LETTER ZAH ISOLATED FORM
-    u'\ufec9'   #  0xD7 -> ARABIC LETTER AIN ISOLATED FORM
-    u'\ufeca'   #  0xD8 -> ARABIC LETTER AIN FINAL FORM
-    u'\ufecb'   #  0xD9 -> ARABIC LETTER AIN INITIAL FORM
-    u'\ufecc'   #  0xDA -> ARABIC LETTER AIN MEDIAL FORM
-    u'\ufecd'   #  0xDB -> ARABIC LETTER GHAIN ISOLATED FORM
-    u'\ufece'   #  0xDC -> ARABIC LETTER GHAIN FINAL FORM
-    u'\ufecf'   #  0xDD -> ARABIC LETTER GHAIN INITIAL FORM
-    u'\ufed0'   #  0xDE -> ARABIC LETTER GHAIN MEDIAL FORM
-    u'\ufed1'   #  0xDF -> ARABIC LETTER FEH ISOLATED FORM
-    u'\ufed3'   #  0xE0 -> ARABIC LETTER FEH INITIAL FORM
-    u'\ufed5'   #  0xE1 -> ARABIC LETTER QAF ISOLATED FORM
-    u'\ufed7'   #  0xE2 -> ARABIC LETTER QAF INITIAL FORM
-    u'\ufed9'   #  0xE3 -> ARABIC LETTER KAF ISOLATED FORM
-    u'\ufedb'   #  0xE4 -> ARABIC LETTER KAF INITIAL FORM
-    u'\ufb92'   #  0xE5 -> ARABIC LETTER GAF ISOLATED FORM
-    u'\ufb94'   #  0xE6 -> ARABIC LETTER GAF INITIAL FORM
-    u'\ufedd'   #  0xE7 -> ARABIC LETTER LAM ISOLATED FORM
-    u'\ufedf'   #  0xE8 -> ARABIC LETTER LAM INITIAL FORM
-    u'\ufee0'   #  0xE9 -> ARABIC LETTER LAM MEDIAL FORM
-    u'\ufee1'   #  0xEA -> ARABIC LETTER MEEM ISOLATED FORM
-    u'\ufee3'   #  0xEB -> ARABIC LETTER MEEM INITIAL FORM
-    u'\ufb9e'   #  0xEC -> ARABIC LETTER NOON GHUNNA ISOLATED FORM
-    u'\ufee5'   #  0xED -> ARABIC LETTER NOON ISOLATED FORM
-    u'\ufee7'   #  0xEE -> ARABIC LETTER NOON INITIAL FORM
-    u'\ufe85'   #  0xEF -> ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufeed'   #  0xF0 -> ARABIC LETTER WAW ISOLATED FORM
-    u'\ufba6'   #  0xF1 -> ARABIC LETTER HEH GOAL ISOLATED FORM
-    u'\ufba8'   #  0xF2 -> ARABIC LETTER HEH GOAL INITIAL FORM
-    u'\ufba9'   #  0xF3 -> ARABIC LETTER HEH GOAL MEDIAL FORM
-    u'\ufbaa'   #  0xF4 -> ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
-    u'\ufe80'   #  0xF5 -> ARABIC LETTER HAMZA ISOLATED FORM
-    u'\ufe89'   #  0xF6 -> ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufe8a'   #  0xF7 -> ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
-    u'\ufe8b'   #  0xF8 -> ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-    u'\ufef1'   #  0xF9 -> ARABIC LETTER YEH ISOLATED FORM
-    u'\ufef2'   #  0xFA -> ARABIC LETTER YEH FINAL FORM
-    u'\ufef3'   #  0xFB -> ARABIC LETTER YEH INITIAL FORM
-    u'\ufbb0'   #  0xFC -> ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufbae'   #  0xFD -> ARABIC LETTER YEH BARREE ISOLATED FORM
-    u'\ufe7c'   #  0xFE -> ARABIC SHADDA ISOLATED FORM
-    u'\ufe7d'   #  0xFF -> ARABIC SHADDA MEDIAL FORM
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1026.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1026.py
deleted file mode 100644
index bc2a890..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1026.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp1026 generated from 'MAPPINGS/VENDORS/MICSFT/EBCDIC/CP1026.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp1026',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x9c'     #  0x04 -> CONTROL
-    u'\t'       #  0x05 -> HORIZONTAL TABULATION
-    u'\x86'     #  0x06 -> CONTROL
-    u'\x7f'     #  0x07 -> DELETE
-    u'\x97'     #  0x08 -> CONTROL
-    u'\x8d'     #  0x09 -> CONTROL
-    u'\x8e'     #  0x0A -> CONTROL
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x9d'     #  0x14 -> CONTROL
-    u'\x85'     #  0x15 -> CONTROL
-    u'\x08'     #  0x16 -> BACKSPACE
-    u'\x87'     #  0x17 -> CONTROL
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x92'     #  0x1A -> CONTROL
-    u'\x8f'     #  0x1B -> CONTROL
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u'\x80'     #  0x20 -> CONTROL
-    u'\x81'     #  0x21 -> CONTROL
-    u'\x82'     #  0x22 -> CONTROL
-    u'\x83'     #  0x23 -> CONTROL
-    u'\x84'     #  0x24 -> CONTROL
-    u'\n'       #  0x25 -> LINE FEED
-    u'\x17'     #  0x26 -> END OF TRANSMISSION BLOCK
-    u'\x1b'     #  0x27 -> ESCAPE
-    u'\x88'     #  0x28 -> CONTROL
-    u'\x89'     #  0x29 -> CONTROL
-    u'\x8a'     #  0x2A -> CONTROL
-    u'\x8b'     #  0x2B -> CONTROL
-    u'\x8c'     #  0x2C -> CONTROL
-    u'\x05'     #  0x2D -> ENQUIRY
-    u'\x06'     #  0x2E -> ACKNOWLEDGE
-    u'\x07'     #  0x2F -> BELL
-    u'\x90'     #  0x30 -> CONTROL
-    u'\x91'     #  0x31 -> CONTROL
-    u'\x16'     #  0x32 -> SYNCHRONOUS IDLE
-    u'\x93'     #  0x33 -> CONTROL
-    u'\x94'     #  0x34 -> CONTROL
-    u'\x95'     #  0x35 -> CONTROL
-    u'\x96'     #  0x36 -> CONTROL
-    u'\x04'     #  0x37 -> END OF TRANSMISSION
-    u'\x98'     #  0x38 -> CONTROL
-    u'\x99'     #  0x39 -> CONTROL
-    u'\x9a'     #  0x3A -> CONTROL
-    u'\x9b'     #  0x3B -> CONTROL
-    u'\x14'     #  0x3C -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x3D -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'     #  0x3E -> CONTROL
-    u'\x1a'     #  0x3F -> SUBSTITUTE
-    u' '        #  0x40 -> SPACE
-    u'\xa0'     #  0x41 -> NO-BREAK SPACE
-    u'\xe2'     #  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'     #  0x44 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'     #  0x45 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe3'     #  0x46 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'     #  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'{'        #  0x48 -> LEFT CURLY BRACKET
-    u'\xf1'     #  0x49 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xc7'     #  0x4A -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'.'        #  0x4B -> FULL STOP
-    u'<'        #  0x4C -> LESS-THAN SIGN
-    u'('        #  0x4D -> LEFT PARENTHESIS
-    u'+'        #  0x4E -> PLUS SIGN
-    u'!'        #  0x4F -> EXCLAMATION MARK
-    u'&'        #  0x50 -> AMPERSAND
-    u'\xe9'     #  0x51 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'     #  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'     #  0x54 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xed'     #  0x55 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xec'     #  0x58 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xdf'     #  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u'\u011e'   #  0x5A -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\u0130'   #  0x5B -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'*'        #  0x5C -> ASTERISK
-    u')'        #  0x5D -> RIGHT PARENTHESIS
-    u';'        #  0x5E -> SEMICOLON
-    u'^'        #  0x5F -> CIRCUMFLEX ACCENT
-    u'-'        #  0x60 -> HYPHEN-MINUS
-    u'/'        #  0x61 -> SOLIDUS
-    u'\xc2'     #  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc4'     #  0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc0'     #  0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'     #  0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc3'     #  0x66 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc5'     #  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'['        #  0x68 -> LEFT SQUARE BRACKET
-    u'\xd1'     #  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\u015f'   #  0x6A -> LATIN SMALL LETTER S WITH CEDILLA
-    u','        #  0x6B -> COMMA
-    u'%'        #  0x6C -> PERCENT SIGN
-    u'_'        #  0x6D -> LOW LINE
-    u'>'        #  0x6E -> GREATER-THAN SIGN
-    u'?'        #  0x6F -> QUESTION MARK
-    u'\xf8'     #  0x70 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xc9'     #  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'     #  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'     #  0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'     #  0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'     #  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\u0131'   #  0x79 -> LATIN SMALL LETTER DOTLESS I
-    u':'        #  0x7A -> COLON
-    u'\xd6'     #  0x7B -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\u015e'   #  0x7C -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u"'"        #  0x7D -> APOSTROPHE
-    u'='        #  0x7E -> EQUALS SIGN
-    u'\xdc'     #  0x7F -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xd8'     #  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'a'        #  0x81 -> LATIN SMALL LETTER A
-    u'b'        #  0x82 -> LATIN SMALL LETTER B
-    u'c'        #  0x83 -> LATIN SMALL LETTER C
-    u'd'        #  0x84 -> LATIN SMALL LETTER D
-    u'e'        #  0x85 -> LATIN SMALL LETTER E
-    u'f'        #  0x86 -> LATIN SMALL LETTER F
-    u'g'        #  0x87 -> LATIN SMALL LETTER G
-    u'h'        #  0x88 -> LATIN SMALL LETTER H
-    u'i'        #  0x89 -> LATIN SMALL LETTER I
-    u'\xab'     #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'}'        #  0x8C -> RIGHT CURLY BRACKET
-    u'`'        #  0x8D -> GRAVE ACCENT
-    u'\xa6'     #  0x8E -> BROKEN BAR
-    u'\xb1'     #  0x8F -> PLUS-MINUS SIGN
-    u'\xb0'     #  0x90 -> DEGREE SIGN
-    u'j'        #  0x91 -> LATIN SMALL LETTER J
-    u'k'        #  0x92 -> LATIN SMALL LETTER K
-    u'l'        #  0x93 -> LATIN SMALL LETTER L
-    u'm'        #  0x94 -> LATIN SMALL LETTER M
-    u'n'        #  0x95 -> LATIN SMALL LETTER N
-    u'o'        #  0x96 -> LATIN SMALL LETTER O
-    u'p'        #  0x97 -> LATIN SMALL LETTER P
-    u'q'        #  0x98 -> LATIN SMALL LETTER Q
-    u'r'        #  0x99 -> LATIN SMALL LETTER R
-    u'\xaa'     #  0x9A -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0x9B -> MASCULINE ORDINAL INDICATOR
-    u'\xe6'     #  0x9C -> LATIN SMALL LIGATURE AE
-    u'\xb8'     #  0x9D -> CEDILLA
-    u'\xc6'     #  0x9E -> LATIN CAPITAL LIGATURE AE
-    u'\xa4'     #  0x9F -> CURRENCY SIGN
-    u'\xb5'     #  0xA0 -> MICRO SIGN
-    u'\xf6'     #  0xA1 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u's'        #  0xA2 -> LATIN SMALL LETTER S
-    u't'        #  0xA3 -> LATIN SMALL LETTER T
-    u'u'        #  0xA4 -> LATIN SMALL LETTER U
-    u'v'        #  0xA5 -> LATIN SMALL LETTER V
-    u'w'        #  0xA6 -> LATIN SMALL LETTER W
-    u'x'        #  0xA7 -> LATIN SMALL LETTER X
-    u'y'        #  0xA8 -> LATIN SMALL LETTER Y
-    u'z'        #  0xA9 -> LATIN SMALL LETTER Z
-    u'\xa1'     #  0xAA -> INVERTED EXCLAMATION MARK
-    u'\xbf'     #  0xAB -> INVERTED QUESTION MARK
-    u']'        #  0xAC -> RIGHT SQUARE BRACKET
-    u'$'        #  0xAD -> DOLLAR SIGN
-    u'@'        #  0xAE -> COMMERCIAL AT
-    u'\xae'     #  0xAF -> REGISTERED SIGN
-    u'\xa2'     #  0xB0 -> CENT SIGN
-    u'\xa3'     #  0xB1 -> POUND SIGN
-    u'\xa5'     #  0xB2 -> YEN SIGN
-    u'\xb7'     #  0xB3 -> MIDDLE DOT
-    u'\xa9'     #  0xB4 -> COPYRIGHT SIGN
-    u'\xa7'     #  0xB5 -> SECTION SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xbc'     #  0xB7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xB8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xB9 -> VULGAR FRACTION THREE QUARTERS
-    u'\xac'     #  0xBA -> NOT SIGN
-    u'|'        #  0xBB -> VERTICAL LINE
-    u'\xaf'     #  0xBC -> MACRON
-    u'\xa8'     #  0xBD -> DIAERESIS
-    u'\xb4'     #  0xBE -> ACUTE ACCENT
-    u'\xd7'     #  0xBF -> MULTIPLICATION SIGN
-    u'\xe7'     #  0xC0 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'A'        #  0xC1 -> LATIN CAPITAL LETTER A
-    u'B'        #  0xC2 -> LATIN CAPITAL LETTER B
-    u'C'        #  0xC3 -> LATIN CAPITAL LETTER C
-    u'D'        #  0xC4 -> LATIN CAPITAL LETTER D
-    u'E'        #  0xC5 -> LATIN CAPITAL LETTER E
-    u'F'        #  0xC6 -> LATIN CAPITAL LETTER F
-    u'G'        #  0xC7 -> LATIN CAPITAL LETTER G
-    u'H'        #  0xC8 -> LATIN CAPITAL LETTER H
-    u'I'        #  0xC9 -> LATIN CAPITAL LETTER I
-    u'\xad'     #  0xCA -> SOFT HYPHEN
-    u'\xf4'     #  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'~'        #  0xCC -> TILDE
-    u'\xf2'     #  0xCD -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'     #  0xCE -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf5'     #  0xCF -> LATIN SMALL LETTER O WITH TILDE
-    u'\u011f'   #  0xD0 -> LATIN SMALL LETTER G WITH BREVE
-    u'J'        #  0xD1 -> LATIN CAPITAL LETTER J
-    u'K'        #  0xD2 -> LATIN CAPITAL LETTER K
-    u'L'        #  0xD3 -> LATIN CAPITAL LETTER L
-    u'M'        #  0xD4 -> LATIN CAPITAL LETTER M
-    u'N'        #  0xD5 -> LATIN CAPITAL LETTER N
-    u'O'        #  0xD6 -> LATIN CAPITAL LETTER O
-    u'P'        #  0xD7 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0xD8 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0xD9 -> LATIN CAPITAL LETTER R
-    u'\xb9'     #  0xDA -> SUPERSCRIPT ONE
-    u'\xfb'     #  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\\'       #  0xDC -> REVERSE SOLIDUS
-    u'\xf9'     #  0xDD -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'     #  0xDE -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xff'     #  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\xfc'     #  0xE0 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xf7'     #  0xE1 -> DIVISION SIGN
-    u'S'        #  0xE2 -> LATIN CAPITAL LETTER S
-    u'T'        #  0xE3 -> LATIN CAPITAL LETTER T
-    u'U'        #  0xE4 -> LATIN CAPITAL LETTER U
-    u'V'        #  0xE5 -> LATIN CAPITAL LETTER V
-    u'W'        #  0xE6 -> LATIN CAPITAL LETTER W
-    u'X'        #  0xE7 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0xE8 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0xE9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'     #  0xEA -> SUPERSCRIPT TWO
-    u'\xd4'     #  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'#'        #  0xEC -> NUMBER SIGN
-    u'\xd2'     #  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd5'     #  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
-    u'0'        #  0xF0 -> DIGIT ZERO
-    u'1'        #  0xF1 -> DIGIT ONE
-    u'2'        #  0xF2 -> DIGIT TWO
-    u'3'        #  0xF3 -> DIGIT THREE
-    u'4'        #  0xF4 -> DIGIT FOUR
-    u'5'        #  0xF5 -> DIGIT FIVE
-    u'6'        #  0xF6 -> DIGIT SIX
-    u'7'        #  0xF7 -> DIGIT SEVEN
-    u'8'        #  0xF8 -> DIGIT EIGHT
-    u'9'        #  0xF9 -> DIGIT NINE
-    u'\xb3'     #  0xFA -> SUPERSCRIPT THREE
-    u'\xdb'     #  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'"'        #  0xFC -> QUOTATION MARK
-    u'\xd9'     #  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'     #  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\x9f'     #  0xFF -> CONTROL
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1140.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1140.py
deleted file mode 100644
index 0b918c6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1140.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp1140 generated from 'python-mappings/CP1140.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp1140',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x9c'     #  0x04 -> CONTROL
-    u'\t'       #  0x05 -> HORIZONTAL TABULATION
-    u'\x86'     #  0x06 -> CONTROL
-    u'\x7f'     #  0x07 -> DELETE
-    u'\x97'     #  0x08 -> CONTROL
-    u'\x8d'     #  0x09 -> CONTROL
-    u'\x8e'     #  0x0A -> CONTROL
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x9d'     #  0x14 -> CONTROL
-    u'\x85'     #  0x15 -> CONTROL
-    u'\x08'     #  0x16 -> BACKSPACE
-    u'\x87'     #  0x17 -> CONTROL
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x92'     #  0x1A -> CONTROL
-    u'\x8f'     #  0x1B -> CONTROL
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u'\x80'     #  0x20 -> CONTROL
-    u'\x81'     #  0x21 -> CONTROL
-    u'\x82'     #  0x22 -> CONTROL
-    u'\x83'     #  0x23 -> CONTROL
-    u'\x84'     #  0x24 -> CONTROL
-    u'\n'       #  0x25 -> LINE FEED
-    u'\x17'     #  0x26 -> END OF TRANSMISSION BLOCK
-    u'\x1b'     #  0x27 -> ESCAPE
-    u'\x88'     #  0x28 -> CONTROL
-    u'\x89'     #  0x29 -> CONTROL
-    u'\x8a'     #  0x2A -> CONTROL
-    u'\x8b'     #  0x2B -> CONTROL
-    u'\x8c'     #  0x2C -> CONTROL
-    u'\x05'     #  0x2D -> ENQUIRY
-    u'\x06'     #  0x2E -> ACKNOWLEDGE
-    u'\x07'     #  0x2F -> BELL
-    u'\x90'     #  0x30 -> CONTROL
-    u'\x91'     #  0x31 -> CONTROL
-    u'\x16'     #  0x32 -> SYNCHRONOUS IDLE
-    u'\x93'     #  0x33 -> CONTROL
-    u'\x94'     #  0x34 -> CONTROL
-    u'\x95'     #  0x35 -> CONTROL
-    u'\x96'     #  0x36 -> CONTROL
-    u'\x04'     #  0x37 -> END OF TRANSMISSION
-    u'\x98'     #  0x38 -> CONTROL
-    u'\x99'     #  0x39 -> CONTROL
-    u'\x9a'     #  0x3A -> CONTROL
-    u'\x9b'     #  0x3B -> CONTROL
-    u'\x14'     #  0x3C -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x3D -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'     #  0x3E -> CONTROL
-    u'\x1a'     #  0x3F -> SUBSTITUTE
-    u' '        #  0x40 -> SPACE
-    u'\xa0'     #  0x41 -> NO-BREAK SPACE
-    u'\xe2'     #  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'     #  0x44 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'     #  0x45 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe3'     #  0x46 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'     #  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'     #  0x48 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xf1'     #  0x49 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xa2'     #  0x4A -> CENT SIGN
-    u'.'        #  0x4B -> FULL STOP
-    u'<'        #  0x4C -> LESS-THAN SIGN
-    u'('        #  0x4D -> LEFT PARENTHESIS
-    u'+'        #  0x4E -> PLUS SIGN
-    u'|'        #  0x4F -> VERTICAL LINE
-    u'&'        #  0x50 -> AMPERSAND
-    u'\xe9'     #  0x51 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'     #  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'     #  0x54 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xed'     #  0x55 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xec'     #  0x58 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xdf'     #  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u'!'        #  0x5A -> EXCLAMATION MARK
-    u'$'        #  0x5B -> DOLLAR SIGN
-    u'*'        #  0x5C -> ASTERISK
-    u')'        #  0x5D -> RIGHT PARENTHESIS
-    u';'        #  0x5E -> SEMICOLON
-    u'\xac'     #  0x5F -> NOT SIGN
-    u'-'        #  0x60 -> HYPHEN-MINUS
-    u'/'        #  0x61 -> SOLIDUS
-    u'\xc2'     #  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc4'     #  0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc0'     #  0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'     #  0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc3'     #  0x66 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc5'     #  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'     #  0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xd1'     #  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xa6'     #  0x6A -> BROKEN BAR
-    u','        #  0x6B -> COMMA
-    u'%'        #  0x6C -> PERCENT SIGN
-    u'_'        #  0x6D -> LOW LINE
-    u'>'        #  0x6E -> GREATER-THAN SIGN
-    u'?'        #  0x6F -> QUESTION MARK
-    u'\xf8'     #  0x70 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xc9'     #  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'     #  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'     #  0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'     #  0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'     #  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'`'        #  0x79 -> GRAVE ACCENT
-    u':'        #  0x7A -> COLON
-    u'#'        #  0x7B -> NUMBER SIGN
-    u'@'        #  0x7C -> COMMERCIAL AT
-    u"'"        #  0x7D -> APOSTROPHE
-    u'='        #  0x7E -> EQUALS SIGN
-    u'"'        #  0x7F -> QUOTATION MARK
-    u'\xd8'     #  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'a'        #  0x81 -> LATIN SMALL LETTER A
-    u'b'        #  0x82 -> LATIN SMALL LETTER B
-    u'c'        #  0x83 -> LATIN SMALL LETTER C
-    u'd'        #  0x84 -> LATIN SMALL LETTER D
-    u'e'        #  0x85 -> LATIN SMALL LETTER E
-    u'f'        #  0x86 -> LATIN SMALL LETTER F
-    u'g'        #  0x87 -> LATIN SMALL LETTER G
-    u'h'        #  0x88 -> LATIN SMALL LETTER H
-    u'i'        #  0x89 -> LATIN SMALL LETTER I
-    u'\xab'     #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xf0'     #  0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
-    u'\xfd'     #  0x8D -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'     #  0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
-    u'\xb1'     #  0x8F -> PLUS-MINUS SIGN
-    u'\xb0'     #  0x90 -> DEGREE SIGN
-    u'j'        #  0x91 -> LATIN SMALL LETTER J
-    u'k'        #  0x92 -> LATIN SMALL LETTER K
-    u'l'        #  0x93 -> LATIN SMALL LETTER L
-    u'm'        #  0x94 -> LATIN SMALL LETTER M
-    u'n'        #  0x95 -> LATIN SMALL LETTER N
-    u'o'        #  0x96 -> LATIN SMALL LETTER O
-    u'p'        #  0x97 -> LATIN SMALL LETTER P
-    u'q'        #  0x98 -> LATIN SMALL LETTER Q
-    u'r'        #  0x99 -> LATIN SMALL LETTER R
-    u'\xaa'     #  0x9A -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0x9B -> MASCULINE ORDINAL INDICATOR
-    u'\xe6'     #  0x9C -> LATIN SMALL LIGATURE AE
-    u'\xb8'     #  0x9D -> CEDILLA
-    u'\xc6'     #  0x9E -> LATIN CAPITAL LIGATURE AE
-    u'\u20ac'   #  0x9F -> EURO SIGN
-    u'\xb5'     #  0xA0 -> MICRO SIGN
-    u'~'        #  0xA1 -> TILDE
-    u's'        #  0xA2 -> LATIN SMALL LETTER S
-    u't'        #  0xA3 -> LATIN SMALL LETTER T
-    u'u'        #  0xA4 -> LATIN SMALL LETTER U
-    u'v'        #  0xA5 -> LATIN SMALL LETTER V
-    u'w'        #  0xA6 -> LATIN SMALL LETTER W
-    u'x'        #  0xA7 -> LATIN SMALL LETTER X
-    u'y'        #  0xA8 -> LATIN SMALL LETTER Y
-    u'z'        #  0xA9 -> LATIN SMALL LETTER Z
-    u'\xa1'     #  0xAA -> INVERTED EXCLAMATION MARK
-    u'\xbf'     #  0xAB -> INVERTED QUESTION MARK
-    u'\xd0'     #  0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
-    u'\xdd'     #  0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'     #  0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
-    u'\xae'     #  0xAF -> REGISTERED SIGN
-    u'^'        #  0xB0 -> CIRCUMFLEX ACCENT
-    u'\xa3'     #  0xB1 -> POUND SIGN
-    u'\xa5'     #  0xB2 -> YEN SIGN
-    u'\xb7'     #  0xB3 -> MIDDLE DOT
-    u'\xa9'     #  0xB4 -> COPYRIGHT SIGN
-    u'\xa7'     #  0xB5 -> SECTION SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xbc'     #  0xB7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xB8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xB9 -> VULGAR FRACTION THREE QUARTERS
-    u'['        #  0xBA -> LEFT SQUARE BRACKET
-    u']'        #  0xBB -> RIGHT SQUARE BRACKET
-    u'\xaf'     #  0xBC -> MACRON
-    u'\xa8'     #  0xBD -> DIAERESIS
-    u'\xb4'     #  0xBE -> ACUTE ACCENT
-    u'\xd7'     #  0xBF -> MULTIPLICATION SIGN
-    u'{'        #  0xC0 -> LEFT CURLY BRACKET
-    u'A'        #  0xC1 -> LATIN CAPITAL LETTER A
-    u'B'        #  0xC2 -> LATIN CAPITAL LETTER B
-    u'C'        #  0xC3 -> LATIN CAPITAL LETTER C
-    u'D'        #  0xC4 -> LATIN CAPITAL LETTER D
-    u'E'        #  0xC5 -> LATIN CAPITAL LETTER E
-    u'F'        #  0xC6 -> LATIN CAPITAL LETTER F
-    u'G'        #  0xC7 -> LATIN CAPITAL LETTER G
-    u'H'        #  0xC8 -> LATIN CAPITAL LETTER H
-    u'I'        #  0xC9 -> LATIN CAPITAL LETTER I
-    u'\xad'     #  0xCA -> SOFT HYPHEN
-    u'\xf4'     #  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'     #  0xCD -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'     #  0xCE -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf5'     #  0xCF -> LATIN SMALL LETTER O WITH TILDE
-    u'}'        #  0xD0 -> RIGHT CURLY BRACKET
-    u'J'        #  0xD1 -> LATIN CAPITAL LETTER J
-    u'K'        #  0xD2 -> LATIN CAPITAL LETTER K
-    u'L'        #  0xD3 -> LATIN CAPITAL LETTER L
-    u'M'        #  0xD4 -> LATIN CAPITAL LETTER M
-    u'N'        #  0xD5 -> LATIN CAPITAL LETTER N
-    u'O'        #  0xD6 -> LATIN CAPITAL LETTER O
-    u'P'        #  0xD7 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0xD8 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0xD9 -> LATIN CAPITAL LETTER R
-    u'\xb9'     #  0xDA -> SUPERSCRIPT ONE
-    u'\xfb'     #  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xf9'     #  0xDD -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'     #  0xDE -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xff'     #  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\\'       #  0xE0 -> REVERSE SOLIDUS
-    u'\xf7'     #  0xE1 -> DIVISION SIGN
-    u'S'        #  0xE2 -> LATIN CAPITAL LETTER S
-    u'T'        #  0xE3 -> LATIN CAPITAL LETTER T
-    u'U'        #  0xE4 -> LATIN CAPITAL LETTER U
-    u'V'        #  0xE5 -> LATIN CAPITAL LETTER V
-    u'W'        #  0xE6 -> LATIN CAPITAL LETTER W
-    u'X'        #  0xE7 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0xE8 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0xE9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'     #  0xEA -> SUPERSCRIPT TWO
-    u'\xd4'     #  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd6'     #  0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd2'     #  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd5'     #  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
-    u'0'        #  0xF0 -> DIGIT ZERO
-    u'1'        #  0xF1 -> DIGIT ONE
-    u'2'        #  0xF2 -> DIGIT TWO
-    u'3'        #  0xF3 -> DIGIT THREE
-    u'4'        #  0xF4 -> DIGIT FOUR
-    u'5'        #  0xF5 -> DIGIT FIVE
-    u'6'        #  0xF6 -> DIGIT SIX
-    u'7'        #  0xF7 -> DIGIT SEVEN
-    u'8'        #  0xF8 -> DIGIT EIGHT
-    u'9'        #  0xF9 -> DIGIT NINE
-    u'\xb3'     #  0xFA -> SUPERSCRIPT THREE
-    u'\xdb'     #  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'     #  0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xd9'     #  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'     #  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\x9f'     #  0xFF -> CONTROL
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1250.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1250.py
deleted file mode 100644
index c6041e0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1250.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp1250 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1250.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp1250',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\u20ac'   #  0x80 -> EURO SIGN
-    u'\ufffe'   #  0x81 -> UNDEFINED
-    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\ufffe'   #  0x83 -> UNDEFINED
-    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'   #  0x86 -> DAGGER
-    u'\u2021'   #  0x87 -> DOUBLE DAGGER
-    u'\ufffe'   #  0x88 -> UNDEFINED
-    u'\u2030'   #  0x89 -> PER MILLE SIGN
-    u'\u0160'   #  0x8A -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u015a'   #  0x8C -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u0164'   #  0x8D -> LATIN CAPITAL LETTER T WITH CARON
-    u'\u017d'   #  0x8E -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u0179'   #  0x8F -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\ufffe'   #  0x90 -> UNDEFINED
-    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'   #  0x95 -> BULLET
-    u'\u2013'   #  0x96 -> EN DASH
-    u'\u2014'   #  0x97 -> EM DASH
-    u'\ufffe'   #  0x98 -> UNDEFINED
-    u'\u2122'   #  0x99 -> TRADE MARK SIGN
-    u'\u0161'   #  0x9A -> LATIN SMALL LETTER S WITH CARON
-    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u015b'   #  0x9C -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u0165'   #  0x9D -> LATIN SMALL LETTER T WITH CARON
-    u'\u017e'   #  0x9E -> LATIN SMALL LETTER Z WITH CARON
-    u'\u017a'   #  0x9F -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u02c7'   #  0xA1 -> CARON
-    u'\u02d8'   #  0xA2 -> BREVE
-    u'\u0141'   #  0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\u0104'   #  0xA5 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\xa6'     #  0xA6 -> BROKEN BAR
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xa8'     #  0xA8 -> DIAERESIS
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u015e'   #  0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\u017b'   #  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\u02db'   #  0xB2 -> OGONEK
-    u'\u0142'   #  0xB3 -> LATIN SMALL LETTER L WITH STROKE
-    u'\xb4'     #  0xB4 -> ACUTE ACCENT
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\xb8'     #  0xB8 -> CEDILLA
-    u'\u0105'   #  0xB9 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u015f'   #  0xBA -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u013d'   #  0xBC -> LATIN CAPITAL LETTER L WITH CARON
-    u'\u02dd'   #  0xBD -> DOUBLE ACUTE ACCENT
-    u'\u013e'   #  0xBE -> LATIN SMALL LETTER L WITH CARON
-    u'\u017c'   #  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u0154'   #  0xC0 -> LATIN CAPITAL LETTER R WITH ACUTE
-    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0102'   #  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u0139'   #  0xC5 -> LATIN CAPITAL LETTER L WITH ACUTE
-    u'\u0106'   #  0xC6 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\u010c'   #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0118'   #  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u011a'   #  0xCC -> LATIN CAPITAL LETTER E WITH CARON
-    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\u010e'   #  0xCF -> LATIN CAPITAL LETTER D WITH CARON
-    u'\u0110'   #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0143'   #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\u0147'   #  0xD2 -> LATIN CAPITAL LETTER N WITH CARON
-    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0150'   #  0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
-    u'\u0158'   #  0xD8 -> LATIN CAPITAL LETTER R WITH CARON
-    u'\u016e'   #  0xD9 -> LATIN CAPITAL LETTER U WITH RING ABOVE
-    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\u0170'   #  0xDB -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'     #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\u0162'   #  0xDE -> LATIN CAPITAL LETTER T WITH CEDILLA
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\u0155'   #  0xE0 -> LATIN SMALL LETTER R WITH ACUTE
-    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0103'   #  0xE3 -> LATIN SMALL LETTER A WITH BREVE
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u013a'   #  0xE5 -> LATIN SMALL LETTER L WITH ACUTE
-    u'\u0107'   #  0xE6 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\u010d'   #  0xE8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0119'   #  0xEA -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u011b'   #  0xEC -> LATIN SMALL LETTER E WITH CARON
-    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u010f'   #  0xEF -> LATIN SMALL LETTER D WITH CARON
-    u'\u0111'   #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0144'   #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0148'   #  0xF2 -> LATIN SMALL LETTER N WITH CARON
-    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u0151'   #  0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'     #  0xF7 -> DIVISION SIGN
-    u'\u0159'   #  0xF8 -> LATIN SMALL LETTER R WITH CARON
-    u'\u016f'   #  0xF9 -> LATIN SMALL LETTER U WITH RING ABOVE
-    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\u0171'   #  0xFB -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'     #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\u0163'   #  0xFE -> LATIN SMALL LETTER T WITH CEDILLA
-    u'\u02d9'   #  0xFF -> DOT ABOVE
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1251.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1251.py
deleted file mode 100644
index be9fec5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1251.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp1251 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp1251',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\u0402'   #  0x80 -> CYRILLIC CAPITAL LETTER DJE
-    u'\u0403'   #  0x81 -> CYRILLIC CAPITAL LETTER GJE
-    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u0453'   #  0x83 -> CYRILLIC SMALL LETTER GJE
-    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'   #  0x86 -> DAGGER
-    u'\u2021'   #  0x87 -> DOUBLE DAGGER
-    u'\u20ac'   #  0x88 -> EURO SIGN
-    u'\u2030'   #  0x89 -> PER MILLE SIGN
-    u'\u0409'   #  0x8A -> CYRILLIC CAPITAL LETTER LJE
-    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u040a'   #  0x8C -> CYRILLIC CAPITAL LETTER NJE
-    u'\u040c'   #  0x8D -> CYRILLIC CAPITAL LETTER KJE
-    u'\u040b'   #  0x8E -> CYRILLIC CAPITAL LETTER TSHE
-    u'\u040f'   #  0x8F -> CYRILLIC CAPITAL LETTER DZHE
-    u'\u0452'   #  0x90 -> CYRILLIC SMALL LETTER DJE
-    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'   #  0x95 -> BULLET
-    u'\u2013'   #  0x96 -> EN DASH
-    u'\u2014'   #  0x97 -> EM DASH
-    u'\ufffe'   #  0x98 -> UNDEFINED
-    u'\u2122'   #  0x99 -> TRADE MARK SIGN
-    u'\u0459'   #  0x9A -> CYRILLIC SMALL LETTER LJE
-    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u045a'   #  0x9C -> CYRILLIC SMALL LETTER NJE
-    u'\u045c'   #  0x9D -> CYRILLIC SMALL LETTER KJE
-    u'\u045b'   #  0x9E -> CYRILLIC SMALL LETTER TSHE
-    u'\u045f'   #  0x9F -> CYRILLIC SMALL LETTER DZHE
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u040e'   #  0xA1 -> CYRILLIC CAPITAL LETTER SHORT U
-    u'\u045e'   #  0xA2 -> CYRILLIC SMALL LETTER SHORT U
-    u'\u0408'   #  0xA3 -> CYRILLIC CAPITAL LETTER JE
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\u0490'   #  0xA5 -> CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-    u'\xa6'     #  0xA6 -> BROKEN BAR
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\u0401'   #  0xA8 -> CYRILLIC CAPITAL LETTER IO
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u0404'   #  0xAA -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\u0407'   #  0xAF -> CYRILLIC CAPITAL LETTER YI
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\u0406'   #  0xB2 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0456'   #  0xB3 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0491'   #  0xB4 -> CYRILLIC SMALL LETTER GHE WITH UPTURN
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\u0451'   #  0xB8 -> CYRILLIC SMALL LETTER IO
-    u'\u2116'   #  0xB9 -> NUMERO SIGN
-    u'\u0454'   #  0xBA -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u0458'   #  0xBC -> CYRILLIC SMALL LETTER JE
-    u'\u0405'   #  0xBD -> CYRILLIC CAPITAL LETTER DZE
-    u'\u0455'   #  0xBE -> CYRILLIC SMALL LETTER DZE
-    u'\u0457'   #  0xBF -> CYRILLIC SMALL LETTER YI
-    u'\u0410'   #  0xC0 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'   #  0xC1 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0412'   #  0xC2 -> CYRILLIC CAPITAL LETTER VE
-    u'\u0413'   #  0xC3 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0414'   #  0xC4 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'   #  0xC5 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0416'   #  0xC6 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0417'   #  0xC7 -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0418'   #  0xC8 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'   #  0xC9 -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'   #  0xCA -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'   #  0xCB -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'   #  0xCC -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'   #  0xCD -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'   #  0xCE -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'   #  0xCF -> CYRILLIC CAPITAL LETTER PE
-    u'\u0420'   #  0xD0 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'   #  0xD1 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'   #  0xD2 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'   #  0xD3 -> CYRILLIC CAPITAL LETTER U
-    u'\u0424'   #  0xD4 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0425'   #  0xD5 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0426'   #  0xD6 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0427'   #  0xD7 -> CYRILLIC CAPITAL LETTER CHE
-    u'\u0428'   #  0xD8 -> CYRILLIC CAPITAL LETTER SHA
-    u'\u0429'   #  0xD9 -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u042a'   #  0xDA -> CYRILLIC CAPITAL LETTER HARD SIGN
-    u'\u042b'   #  0xDB -> CYRILLIC CAPITAL LETTER YERU
-    u'\u042c'   #  0xDC -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042d'   #  0xDD -> CYRILLIC CAPITAL LETTER E
-    u'\u042e'   #  0xDE -> CYRILLIC CAPITAL LETTER YU
-    u'\u042f'   #  0xDF -> CYRILLIC CAPITAL LETTER YA
-    u'\u0430'   #  0xE0 -> CYRILLIC SMALL LETTER A
-    u'\u0431'   #  0xE1 -> CYRILLIC SMALL LETTER BE
-    u'\u0432'   #  0xE2 -> CYRILLIC SMALL LETTER VE
-    u'\u0433'   #  0xE3 -> CYRILLIC SMALL LETTER GHE
-    u'\u0434'   #  0xE4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'   #  0xE5 -> CYRILLIC SMALL LETTER IE
-    u'\u0436'   #  0xE6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0437'   #  0xE7 -> CYRILLIC SMALL LETTER ZE
-    u'\u0438'   #  0xE8 -> CYRILLIC SMALL LETTER I
-    u'\u0439'   #  0xE9 -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'   #  0xEA -> CYRILLIC SMALL LETTER KA
-    u'\u043b'   #  0xEB -> CYRILLIC SMALL LETTER EL
-    u'\u043c'   #  0xEC -> CYRILLIC SMALL LETTER EM
-    u'\u043d'   #  0xED -> CYRILLIC SMALL LETTER EN
-    u'\u043e'   #  0xEE -> CYRILLIC SMALL LETTER O
-    u'\u043f'   #  0xEF -> CYRILLIC SMALL LETTER PE
-    u'\u0440'   #  0xF0 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'   #  0xF1 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'   #  0xF2 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'   #  0xF3 -> CYRILLIC SMALL LETTER U
-    u'\u0444'   #  0xF4 -> CYRILLIC SMALL LETTER EF
-    u'\u0445'   #  0xF5 -> CYRILLIC SMALL LETTER HA
-    u'\u0446'   #  0xF6 -> CYRILLIC SMALL LETTER TSE
-    u'\u0447'   #  0xF7 -> CYRILLIC SMALL LETTER CHE
-    u'\u0448'   #  0xF8 -> CYRILLIC SMALL LETTER SHA
-    u'\u0449'   #  0xF9 -> CYRILLIC SMALL LETTER SHCHA
-    u'\u044a'   #  0xFA -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u044b'   #  0xFB -> CYRILLIC SMALL LETTER YERU
-    u'\u044c'   #  0xFC -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044d'   #  0xFD -> CYRILLIC SMALL LETTER E
-    u'\u044e'   #  0xFE -> CYRILLIC SMALL LETTER YU
-    u'\u044f'   #  0xFF -> CYRILLIC SMALL LETTER YA
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1252.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1252.py
deleted file mode 100644
index 005a122..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1252.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp1252 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp1252',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\u20ac'   #  0x80 -> EURO SIGN
-    u'\ufffe'   #  0x81 -> UNDEFINED
-    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u0192'   #  0x83 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'   #  0x86 -> DAGGER
-    u'\u2021'   #  0x87 -> DOUBLE DAGGER
-    u'\u02c6'   #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u2030'   #  0x89 -> PER MILLE SIGN
-    u'\u0160'   #  0x8A -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u0152'   #  0x8C -> LATIN CAPITAL LIGATURE OE
-    u'\ufffe'   #  0x8D -> UNDEFINED
-    u'\u017d'   #  0x8E -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\ufffe'   #  0x8F -> UNDEFINED
-    u'\ufffe'   #  0x90 -> UNDEFINED
-    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'   #  0x95 -> BULLET
-    u'\u2013'   #  0x96 -> EN DASH
-    u'\u2014'   #  0x97 -> EM DASH
-    u'\u02dc'   #  0x98 -> SMALL TILDE
-    u'\u2122'   #  0x99 -> TRADE MARK SIGN
-    u'\u0161'   #  0x9A -> LATIN SMALL LETTER S WITH CARON
-    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0153'   #  0x9C -> LATIN SMALL LIGATURE OE
-    u'\ufffe'   #  0x9D -> UNDEFINED
-    u'\u017e'   #  0x9E -> LATIN SMALL LETTER Z WITH CARON
-    u'\u0178'   #  0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\xa1'     #  0xA1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\xa5'     #  0xA5 -> YEN SIGN
-    u'\xa6'     #  0xA6 -> BROKEN BAR
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xa8'     #  0xA8 -> DIAERESIS
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\xaa'     #  0xAA -> FEMININE ORDINAL INDICATOR
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\xaf'     #  0xAF -> MACRON
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'     #  0xB4 -> ACUTE ACCENT
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\xb8'     #  0xB8 -> CEDILLA
-    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
-    u'\xba'     #  0xBA -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'     #  0xBF -> INVERTED QUESTION MARK
-    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xd0'     #  0xD0 -> LATIN CAPITAL LETTER ETH
-    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
-    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'     #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'     #  0xDE -> LATIN CAPITAL LETTER THORN
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf0'     #  0xF0 -> LATIN SMALL LETTER ETH
-    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'     #  0xF7 -> DIVISION SIGN
-    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'     #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'     #  0xFE -> LATIN SMALL LETTER THORN
-    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1253.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1253.py
deleted file mode 100644
index ab3abdc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1253.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp1253 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1253.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp1253',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\u20ac'   #  0x80 -> EURO SIGN
-    u'\ufffe'   #  0x81 -> UNDEFINED
-    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u0192'   #  0x83 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'   #  0x86 -> DAGGER
-    u'\u2021'   #  0x87 -> DOUBLE DAGGER
-    u'\ufffe'   #  0x88 -> UNDEFINED
-    u'\u2030'   #  0x89 -> PER MILLE SIGN
-    u'\ufffe'   #  0x8A -> UNDEFINED
-    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'   #  0x8C -> UNDEFINED
-    u'\ufffe'   #  0x8D -> UNDEFINED
-    u'\ufffe'   #  0x8E -> UNDEFINED
-    u'\ufffe'   #  0x8F -> UNDEFINED
-    u'\ufffe'   #  0x90 -> UNDEFINED
-    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'   #  0x95 -> BULLET
-    u'\u2013'   #  0x96 -> EN DASH
-    u'\u2014'   #  0x97 -> EM DASH
-    u'\ufffe'   #  0x98 -> UNDEFINED
-    u'\u2122'   #  0x99 -> TRADE MARK SIGN
-    u'\ufffe'   #  0x9A -> UNDEFINED
-    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'   #  0x9C -> UNDEFINED
-    u'\ufffe'   #  0x9D -> UNDEFINED
-    u'\ufffe'   #  0x9E -> UNDEFINED
-    u'\ufffe'   #  0x9F -> UNDEFINED
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u0385'   #  0xA1 -> GREEK DIALYTIKA TONOS
-    u'\u0386'   #  0xA2 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\xa5'     #  0xA5 -> YEN SIGN
-    u'\xa6'     #  0xA6 -> BROKEN BAR
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xa8'     #  0xA8 -> DIAERESIS
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\ufffe'   #  0xAA -> UNDEFINED
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\u2015'   #  0xAF -> HORIZONTAL BAR
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
-    u'\u0384'   #  0xB4 -> GREEK TONOS
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\u0388'   #  0xB8 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u0389'   #  0xB9 -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\u038a'   #  0xBA -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u038c'   #  0xBC -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
-    u'\u038e'   #  0xBE -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u038f'   #  0xBF -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'\u0390'   #  0xC0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    u'\u0391'   #  0xC1 -> GREEK CAPITAL LETTER ALPHA
-    u'\u0392'   #  0xC2 -> GREEK CAPITAL LETTER BETA
-    u'\u0393'   #  0xC3 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'   #  0xC4 -> GREEK CAPITAL LETTER DELTA
-    u'\u0395'   #  0xC5 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'   #  0xC6 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'   #  0xC7 -> GREEK CAPITAL LETTER ETA
-    u'\u0398'   #  0xC8 -> GREEK CAPITAL LETTER THETA
-    u'\u0399'   #  0xC9 -> GREEK CAPITAL LETTER IOTA
-    u'\u039a'   #  0xCA -> GREEK CAPITAL LETTER KAPPA
-    u'\u039b'   #  0xCB -> GREEK CAPITAL LETTER LAMDA
-    u'\u039c'   #  0xCC -> GREEK CAPITAL LETTER MU
-    u'\u039d'   #  0xCD -> GREEK CAPITAL LETTER NU
-    u'\u039e'   #  0xCE -> GREEK CAPITAL LETTER XI
-    u'\u039f'   #  0xCF -> GREEK CAPITAL LETTER OMICRON
-    u'\u03a0'   #  0xD0 -> GREEK CAPITAL LETTER PI
-    u'\u03a1'   #  0xD1 -> GREEK CAPITAL LETTER RHO
-    u'\ufffe'   #  0xD2 -> UNDEFINED
-    u'\u03a3'   #  0xD3 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03a4'   #  0xD4 -> GREEK CAPITAL LETTER TAU
-    u'\u03a5'   #  0xD5 -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a6'   #  0xD6 -> GREEK CAPITAL LETTER PHI
-    u'\u03a7'   #  0xD7 -> GREEK CAPITAL LETTER CHI
-    u'\u03a8'   #  0xD8 -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'   #  0xD9 -> GREEK CAPITAL LETTER OMEGA
-    u'\u03aa'   #  0xDA -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\u03ab'   #  0xDB -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'\u03ac'   #  0xDC -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\u03ad'   #  0xDD -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'   #  0xDE -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03af'   #  0xDF -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03b0'   #  0xE0 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    u'\u03b1'   #  0xE1 -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'   #  0xE2 -> GREEK SMALL LETTER BETA
-    u'\u03b3'   #  0xE3 -> GREEK SMALL LETTER GAMMA
-    u'\u03b4'   #  0xE4 -> GREEK SMALL LETTER DELTA
-    u'\u03b5'   #  0xE5 -> GREEK SMALL LETTER EPSILON
-    u'\u03b6'   #  0xE6 -> GREEK SMALL LETTER ZETA
-    u'\u03b7'   #  0xE7 -> GREEK SMALL LETTER ETA
-    u'\u03b8'   #  0xE8 -> GREEK SMALL LETTER THETA
-    u'\u03b9'   #  0xE9 -> GREEK SMALL LETTER IOTA
-    u'\u03ba'   #  0xEA -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'   #  0xEB -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'   #  0xEC -> GREEK SMALL LETTER MU
-    u'\u03bd'   #  0xED -> GREEK SMALL LETTER NU
-    u'\u03be'   #  0xEE -> GREEK SMALL LETTER XI
-    u'\u03bf'   #  0xEF -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'   #  0xF0 -> GREEK SMALL LETTER PI
-    u'\u03c1'   #  0xF1 -> GREEK SMALL LETTER RHO
-    u'\u03c2'   #  0xF2 -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c3'   #  0xF3 -> GREEK SMALL LETTER SIGMA
-    u'\u03c4'   #  0xF4 -> GREEK SMALL LETTER TAU
-    u'\u03c5'   #  0xF5 -> GREEK SMALL LETTER UPSILON
-    u'\u03c6'   #  0xF6 -> GREEK SMALL LETTER PHI
-    u'\u03c7'   #  0xF7 -> GREEK SMALL LETTER CHI
-    u'\u03c8'   #  0xF8 -> GREEK SMALL LETTER PSI
-    u'\u03c9'   #  0xF9 -> GREEK SMALL LETTER OMEGA
-    u'\u03ca'   #  0xFA -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u03cb'   #  0xFB -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u03cc'   #  0xFC -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u03cd'   #  0xFD -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u03ce'   #  0xFE -> GREEK SMALL LETTER OMEGA WITH TONOS
-    u'\ufffe'   #  0xFF -> UNDEFINED
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1254.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1254.py
deleted file mode 100644
index ac691e6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1254.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp1254 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1254.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp1254',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\u20ac'   #  0x80 -> EURO SIGN
-    u'\ufffe'   #  0x81 -> UNDEFINED
-    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u0192'   #  0x83 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'   #  0x86 -> DAGGER
-    u'\u2021'   #  0x87 -> DOUBLE DAGGER
-    u'\u02c6'   #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u2030'   #  0x89 -> PER MILLE SIGN
-    u'\u0160'   #  0x8A -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u0152'   #  0x8C -> LATIN CAPITAL LIGATURE OE
-    u'\ufffe'   #  0x8D -> UNDEFINED
-    u'\ufffe'   #  0x8E -> UNDEFINED
-    u'\ufffe'   #  0x8F -> UNDEFINED
-    u'\ufffe'   #  0x90 -> UNDEFINED
-    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'   #  0x95 -> BULLET
-    u'\u2013'   #  0x96 -> EN DASH
-    u'\u2014'   #  0x97 -> EM DASH
-    u'\u02dc'   #  0x98 -> SMALL TILDE
-    u'\u2122'   #  0x99 -> TRADE MARK SIGN
-    u'\u0161'   #  0x9A -> LATIN SMALL LETTER S WITH CARON
-    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0153'   #  0x9C -> LATIN SMALL LIGATURE OE
-    u'\ufffe'   #  0x9D -> UNDEFINED
-    u'\ufffe'   #  0x9E -> UNDEFINED
-    u'\u0178'   #  0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\xa1'     #  0xA1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\xa5'     #  0xA5 -> YEN SIGN
-    u'\xa6'     #  0xA6 -> BROKEN BAR
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xa8'     #  0xA8 -> DIAERESIS
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\xaa'     #  0xAA -> FEMININE ORDINAL INDICATOR
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\xaf'     #  0xAF -> MACRON
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'     #  0xB4 -> ACUTE ACCENT
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\xb8'     #  0xB8 -> CEDILLA
-    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
-    u'\xba'     #  0xBA -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'     #  0xBF -> INVERTED QUESTION MARK
-    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u011e'   #  0xD0 -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
-    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0130'   #  0xDD -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'\u015e'   #  0xDE -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u011f'   #  0xF0 -> LATIN SMALL LETTER G WITH BREVE
-    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'     #  0xF7 -> DIVISION SIGN
-    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u0131'   #  0xFD -> LATIN SMALL LETTER DOTLESS I
-    u'\u015f'   #  0xFE -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1255.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1255.py
deleted file mode 100644
index 8002347..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1255.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp1255 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1255.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp1255',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\u20ac'   #  0x80 -> EURO SIGN
-    u'\ufffe'   #  0x81 -> UNDEFINED
-    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u0192'   #  0x83 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'   #  0x86 -> DAGGER
-    u'\u2021'   #  0x87 -> DOUBLE DAGGER
-    u'\u02c6'   #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u2030'   #  0x89 -> PER MILLE SIGN
-    u'\ufffe'   #  0x8A -> UNDEFINED
-    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'   #  0x8C -> UNDEFINED
-    u'\ufffe'   #  0x8D -> UNDEFINED
-    u'\ufffe'   #  0x8E -> UNDEFINED
-    u'\ufffe'   #  0x8F -> UNDEFINED
-    u'\ufffe'   #  0x90 -> UNDEFINED
-    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'   #  0x95 -> BULLET
-    u'\u2013'   #  0x96 -> EN DASH
-    u'\u2014'   #  0x97 -> EM DASH
-    u'\u02dc'   #  0x98 -> SMALL TILDE
-    u'\u2122'   #  0x99 -> TRADE MARK SIGN
-    u'\ufffe'   #  0x9A -> UNDEFINED
-    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'   #  0x9C -> UNDEFINED
-    u'\ufffe'   #  0x9D -> UNDEFINED
-    u'\ufffe'   #  0x9E -> UNDEFINED
-    u'\ufffe'   #  0x9F -> UNDEFINED
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\xa1'     #  0xA1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\u20aa'   #  0xA4 -> NEW SHEQEL SIGN
-    u'\xa5'     #  0xA5 -> YEN SIGN
-    u'\xa6'     #  0xA6 -> BROKEN BAR
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xa8'     #  0xA8 -> DIAERESIS
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\xd7'     #  0xAA -> MULTIPLICATION SIGN
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\xaf'     #  0xAF -> MACRON
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'     #  0xB4 -> ACUTE ACCENT
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\xb8'     #  0xB8 -> CEDILLA
-    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
-    u'\xf7'     #  0xBA -> DIVISION SIGN
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'     #  0xBF -> INVERTED QUESTION MARK
-    u'\u05b0'   #  0xC0 -> HEBREW POINT SHEVA
-    u'\u05b1'   #  0xC1 -> HEBREW POINT HATAF SEGOL
-    u'\u05b2'   #  0xC2 -> HEBREW POINT HATAF PATAH
-    u'\u05b3'   #  0xC3 -> HEBREW POINT HATAF QAMATS
-    u'\u05b4'   #  0xC4 -> HEBREW POINT HIRIQ
-    u'\u05b5'   #  0xC5 -> HEBREW POINT TSERE
-    u'\u05b6'   #  0xC6 -> HEBREW POINT SEGOL
-    u'\u05b7'   #  0xC7 -> HEBREW POINT PATAH
-    u'\u05b8'   #  0xC8 -> HEBREW POINT QAMATS
-    u'\u05b9'   #  0xC9 -> HEBREW POINT HOLAM
-    u'\ufffe'   #  0xCA -> UNDEFINED
-    u'\u05bb'   #  0xCB -> HEBREW POINT QUBUTS
-    u'\u05bc'   #  0xCC -> HEBREW POINT DAGESH OR MAPIQ
-    u'\u05bd'   #  0xCD -> HEBREW POINT METEG
-    u'\u05be'   #  0xCE -> HEBREW PUNCTUATION MAQAF
-    u'\u05bf'   #  0xCF -> HEBREW POINT RAFE
-    u'\u05c0'   #  0xD0 -> HEBREW PUNCTUATION PASEQ
-    u'\u05c1'   #  0xD1 -> HEBREW POINT SHIN DOT
-    u'\u05c2'   #  0xD2 -> HEBREW POINT SIN DOT
-    u'\u05c3'   #  0xD3 -> HEBREW PUNCTUATION SOF PASUQ
-    u'\u05f0'   #  0xD4 -> HEBREW LIGATURE YIDDISH DOUBLE VAV
-    u'\u05f1'   #  0xD5 -> HEBREW LIGATURE YIDDISH VAV YOD
-    u'\u05f2'   #  0xD6 -> HEBREW LIGATURE YIDDISH DOUBLE YOD
-    u'\u05f3'   #  0xD7 -> HEBREW PUNCTUATION GERESH
-    u'\u05f4'   #  0xD8 -> HEBREW PUNCTUATION GERSHAYIM
-    u'\ufffe'   #  0xD9 -> UNDEFINED
-    u'\ufffe'   #  0xDA -> UNDEFINED
-    u'\ufffe'   #  0xDB -> UNDEFINED
-    u'\ufffe'   #  0xDC -> UNDEFINED
-    u'\ufffe'   #  0xDD -> UNDEFINED
-    u'\ufffe'   #  0xDE -> UNDEFINED
-    u'\ufffe'   #  0xDF -> UNDEFINED
-    u'\u05d0'   #  0xE0 -> HEBREW LETTER ALEF
-    u'\u05d1'   #  0xE1 -> HEBREW LETTER BET
-    u'\u05d2'   #  0xE2 -> HEBREW LETTER GIMEL
-    u'\u05d3'   #  0xE3 -> HEBREW LETTER DALET
-    u'\u05d4'   #  0xE4 -> HEBREW LETTER HE
-    u'\u05d5'   #  0xE5 -> HEBREW LETTER VAV
-    u'\u05d6'   #  0xE6 -> HEBREW LETTER ZAYIN
-    u'\u05d7'   #  0xE7 -> HEBREW LETTER HET
-    u'\u05d8'   #  0xE8 -> HEBREW LETTER TET
-    u'\u05d9'   #  0xE9 -> HEBREW LETTER YOD
-    u'\u05da'   #  0xEA -> HEBREW LETTER FINAL KAF
-    u'\u05db'   #  0xEB -> HEBREW LETTER KAF
-    u'\u05dc'   #  0xEC -> HEBREW LETTER LAMED
-    u'\u05dd'   #  0xED -> HEBREW LETTER FINAL MEM
-    u'\u05de'   #  0xEE -> HEBREW LETTER MEM
-    u'\u05df'   #  0xEF -> HEBREW LETTER FINAL NUN
-    u'\u05e0'   #  0xF0 -> HEBREW LETTER NUN
-    u'\u05e1'   #  0xF1 -> HEBREW LETTER SAMEKH
-    u'\u05e2'   #  0xF2 -> HEBREW LETTER AYIN
-    u'\u05e3'   #  0xF3 -> HEBREW LETTER FINAL PE
-    u'\u05e4'   #  0xF4 -> HEBREW LETTER PE
-    u'\u05e5'   #  0xF5 -> HEBREW LETTER FINAL TSADI
-    u'\u05e6'   #  0xF6 -> HEBREW LETTER TSADI
-    u'\u05e7'   #  0xF7 -> HEBREW LETTER QOF
-    u'\u05e8'   #  0xF8 -> HEBREW LETTER RESH
-    u'\u05e9'   #  0xF9 -> HEBREW LETTER SHIN
-    u'\u05ea'   #  0xFA -> HEBREW LETTER TAV
-    u'\ufffe'   #  0xFB -> UNDEFINED
-    u'\ufffe'   #  0xFC -> UNDEFINED
-    u'\u200e'   #  0xFD -> LEFT-TO-RIGHT MARK
-    u'\u200f'   #  0xFE -> RIGHT-TO-LEFT MARK
-    u'\ufffe'   #  0xFF -> UNDEFINED
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1256.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1256.py
deleted file mode 100644
index d8a67a4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1256.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp1256 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1256.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp1256',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\u20ac'   #  0x80 -> EURO SIGN
-    u'\u067e'   #  0x81 -> ARABIC LETTER PEH
-    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u0192'   #  0x83 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'   #  0x86 -> DAGGER
-    u'\u2021'   #  0x87 -> DOUBLE DAGGER
-    u'\u02c6'   #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u2030'   #  0x89 -> PER MILLE SIGN
-    u'\u0679'   #  0x8A -> ARABIC LETTER TTEH
-    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u0152'   #  0x8C -> LATIN CAPITAL LIGATURE OE
-    u'\u0686'   #  0x8D -> ARABIC LETTER TCHEH
-    u'\u0698'   #  0x8E -> ARABIC LETTER JEH
-    u'\u0688'   #  0x8F -> ARABIC LETTER DDAL
-    u'\u06af'   #  0x90 -> ARABIC LETTER GAF
-    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'   #  0x95 -> BULLET
-    u'\u2013'   #  0x96 -> EN DASH
-    u'\u2014'   #  0x97 -> EM DASH
-    u'\u06a9'   #  0x98 -> ARABIC LETTER KEHEH
-    u'\u2122'   #  0x99 -> TRADE MARK SIGN
-    u'\u0691'   #  0x9A -> ARABIC LETTER RREH
-    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0153'   #  0x9C -> LATIN SMALL LIGATURE OE
-    u'\u200c'   #  0x9D -> ZERO WIDTH NON-JOINER
-    u'\u200d'   #  0x9E -> ZERO WIDTH JOINER
-    u'\u06ba'   #  0x9F -> ARABIC LETTER NOON GHUNNA
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u060c'   #  0xA1 -> ARABIC COMMA
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\xa5'     #  0xA5 -> YEN SIGN
-    u'\xa6'     #  0xA6 -> BROKEN BAR
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xa8'     #  0xA8 -> DIAERESIS
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u06be'   #  0xAA -> ARABIC LETTER HEH DOACHASHMEE
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\xaf'     #  0xAF -> MACRON
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'     #  0xB4 -> ACUTE ACCENT
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\xb8'     #  0xB8 -> CEDILLA
-    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
-    u'\u061b'   #  0xBA -> ARABIC SEMICOLON
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\u061f'   #  0xBF -> ARABIC QUESTION MARK
-    u'\u06c1'   #  0xC0 -> ARABIC LETTER HEH GOAL
-    u'\u0621'   #  0xC1 -> ARABIC LETTER HAMZA
-    u'\u0622'   #  0xC2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
-    u'\u0623'   #  0xC3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
-    u'\u0624'   #  0xC4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
-    u'\u0625'   #  0xC5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
-    u'\u0626'   #  0xC6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
-    u'\u0627'   #  0xC7 -> ARABIC LETTER ALEF
-    u'\u0628'   #  0xC8 -> ARABIC LETTER BEH
-    u'\u0629'   #  0xC9 -> ARABIC LETTER TEH MARBUTA
-    u'\u062a'   #  0xCA -> ARABIC LETTER TEH
-    u'\u062b'   #  0xCB -> ARABIC LETTER THEH
-    u'\u062c'   #  0xCC -> ARABIC LETTER JEEM
-    u'\u062d'   #  0xCD -> ARABIC LETTER HAH
-    u'\u062e'   #  0xCE -> ARABIC LETTER KHAH
-    u'\u062f'   #  0xCF -> ARABIC LETTER DAL
-    u'\u0630'   #  0xD0 -> ARABIC LETTER THAL
-    u'\u0631'   #  0xD1 -> ARABIC LETTER REH
-    u'\u0632'   #  0xD2 -> ARABIC LETTER ZAIN
-    u'\u0633'   #  0xD3 -> ARABIC LETTER SEEN
-    u'\u0634'   #  0xD4 -> ARABIC LETTER SHEEN
-    u'\u0635'   #  0xD5 -> ARABIC LETTER SAD
-    u'\u0636'   #  0xD6 -> ARABIC LETTER DAD
-    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
-    u'\u0637'   #  0xD8 -> ARABIC LETTER TAH
-    u'\u0638'   #  0xD9 -> ARABIC LETTER ZAH
-    u'\u0639'   #  0xDA -> ARABIC LETTER AIN
-    u'\u063a'   #  0xDB -> ARABIC LETTER GHAIN
-    u'\u0640'   #  0xDC -> ARABIC TATWEEL
-    u'\u0641'   #  0xDD -> ARABIC LETTER FEH
-    u'\u0642'   #  0xDE -> ARABIC LETTER QAF
-    u'\u0643'   #  0xDF -> ARABIC LETTER KAF
-    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\u0644'   #  0xE1 -> ARABIC LETTER LAM
-    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0645'   #  0xE3 -> ARABIC LETTER MEEM
-    u'\u0646'   #  0xE4 -> ARABIC LETTER NOON
-    u'\u0647'   #  0xE5 -> ARABIC LETTER HEH
-    u'\u0648'   #  0xE6 -> ARABIC LETTER WAW
-    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u0649'   #  0xEC -> ARABIC LETTER ALEF MAKSURA
-    u'\u064a'   #  0xED -> ARABIC LETTER YEH
-    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u064b'   #  0xF0 -> ARABIC FATHATAN
-    u'\u064c'   #  0xF1 -> ARABIC DAMMATAN
-    u'\u064d'   #  0xF2 -> ARABIC KASRATAN
-    u'\u064e'   #  0xF3 -> ARABIC FATHA
-    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u064f'   #  0xF5 -> ARABIC DAMMA
-    u'\u0650'   #  0xF6 -> ARABIC KASRA
-    u'\xf7'     #  0xF7 -> DIVISION SIGN
-    u'\u0651'   #  0xF8 -> ARABIC SHADDA
-    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\u0652'   #  0xFA -> ARABIC SUKUN
-    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u200e'   #  0xFD -> LEFT-TO-RIGHT MARK
-    u'\u200f'   #  0xFE -> RIGHT-TO-LEFT MARK
-    u'\u06d2'   #  0xFF -> ARABIC LETTER YEH BARREE
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1257.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1257.py
deleted file mode 100644
index 05917c7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1257.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp1257 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1257.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp1257',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\u20ac'   #  0x80 -> EURO SIGN
-    u'\ufffe'   #  0x81 -> UNDEFINED
-    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\ufffe'   #  0x83 -> UNDEFINED
-    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'   #  0x86 -> DAGGER
-    u'\u2021'   #  0x87 -> DOUBLE DAGGER
-    u'\ufffe'   #  0x88 -> UNDEFINED
-    u'\u2030'   #  0x89 -> PER MILLE SIGN
-    u'\ufffe'   #  0x8A -> UNDEFINED
-    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'   #  0x8C -> UNDEFINED
-    u'\xa8'     #  0x8D -> DIAERESIS
-    u'\u02c7'   #  0x8E -> CARON
-    u'\xb8'     #  0x8F -> CEDILLA
-    u'\ufffe'   #  0x90 -> UNDEFINED
-    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'   #  0x95 -> BULLET
-    u'\u2013'   #  0x96 -> EN DASH
-    u'\u2014'   #  0x97 -> EM DASH
-    u'\ufffe'   #  0x98 -> UNDEFINED
-    u'\u2122'   #  0x99 -> TRADE MARK SIGN
-    u'\ufffe'   #  0x9A -> UNDEFINED
-    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\ufffe'   #  0x9C -> UNDEFINED
-    u'\xaf'     #  0x9D -> MACRON
-    u'\u02db'   #  0x9E -> OGONEK
-    u'\ufffe'   #  0x9F -> UNDEFINED
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\ufffe'   #  0xA1 -> UNDEFINED
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\ufffe'   #  0xA5 -> UNDEFINED
-    u'\xa6'     #  0xA6 -> BROKEN BAR
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xd8'     #  0xA8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u0156'   #  0xAA -> LATIN CAPITAL LETTER R WITH CEDILLA
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\xc6'     #  0xAF -> LATIN CAPITAL LETTER AE
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'     #  0xB4 -> ACUTE ACCENT
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\xf8'     #  0xB8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
-    u'\u0157'   #  0xBA -> LATIN SMALL LETTER R WITH CEDILLA
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xe6'     #  0xBF -> LATIN SMALL LETTER AE
-    u'\u0104'   #  0xC0 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u012e'   #  0xC1 -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u0100'   #  0xC2 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\u0106'   #  0xC3 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\u0118'   #  0xC6 -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\u0112'   #  0xC7 -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u010c'   #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0179'   #  0xCA -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\u0116'   #  0xCB -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\u0122'   #  0xCC -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u0136'   #  0xCD -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\u012a'   #  0xCE -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u013b'   #  0xCF -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\u0160'   #  0xD0 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u0143'   #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\u0145'   #  0xD2 -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\u014c'   #  0xD4 -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
-    u'\u0172'   #  0xD8 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\u0141'   #  0xD9 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\u015a'   #  0xDA -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u016a'   #  0xDB -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u017b'   #  0xDD -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\u017d'   #  0xDE -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\u0105'   #  0xE0 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u012f'   #  0xE1 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u0101'   #  0xE2 -> LATIN SMALL LETTER A WITH MACRON
-    u'\u0107'   #  0xE3 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\u0119'   #  0xE6 -> LATIN SMALL LETTER E WITH OGONEK
-    u'\u0113'   #  0xE7 -> LATIN SMALL LETTER E WITH MACRON
-    u'\u010d'   #  0xE8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u017a'   #  0xEA -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u0117'   #  0xEB -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\u0123'   #  0xEC -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u0137'   #  0xED -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\u012b'   #  0xEE -> LATIN SMALL LETTER I WITH MACRON
-    u'\u013c'   #  0xEF -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u0161'   #  0xF0 -> LATIN SMALL LETTER S WITH CARON
-    u'\u0144'   #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0146'   #  0xF2 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\u014d'   #  0xF4 -> LATIN SMALL LETTER O WITH MACRON
-    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'     #  0xF7 -> DIVISION SIGN
-    u'\u0173'   #  0xF8 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\u0142'   #  0xF9 -> LATIN SMALL LETTER L WITH STROKE
-    u'\u015b'   #  0xFA -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u016b'   #  0xFB -> LATIN SMALL LETTER U WITH MACRON
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u017c'   #  0xFD -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u017e'   #  0xFE -> LATIN SMALL LETTER Z WITH CARON
-    u'\u02d9'   #  0xFF -> DOT ABOVE
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1258.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1258.py
deleted file mode 100644
index a6e8408..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp1258.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp1258 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1258.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp1258',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\u20ac'   #  0x80 -> EURO SIGN
-    u'\ufffe'   #  0x81 -> UNDEFINED
-    u'\u201a'   #  0x82 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u0192'   #  0x83 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u201e'   #  0x84 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
-    u'\u2020'   #  0x86 -> DAGGER
-    u'\u2021'   #  0x87 -> DOUBLE DAGGER
-    u'\u02c6'   #  0x88 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u2030'   #  0x89 -> PER MILLE SIGN
-    u'\ufffe'   #  0x8A -> UNDEFINED
-    u'\u2039'   #  0x8B -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u0152'   #  0x8C -> LATIN CAPITAL LIGATURE OE
-    u'\ufffe'   #  0x8D -> UNDEFINED
-    u'\ufffe'   #  0x8E -> UNDEFINED
-    u'\ufffe'   #  0x8F -> UNDEFINED
-    u'\ufffe'   #  0x90 -> UNDEFINED
-    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'   #  0x95 -> BULLET
-    u'\u2013'   #  0x96 -> EN DASH
-    u'\u2014'   #  0x97 -> EM DASH
-    u'\u02dc'   #  0x98 -> SMALL TILDE
-    u'\u2122'   #  0x99 -> TRADE MARK SIGN
-    u'\ufffe'   #  0x9A -> UNDEFINED
-    u'\u203a'   #  0x9B -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0153'   #  0x9C -> LATIN SMALL LIGATURE OE
-    u'\ufffe'   #  0x9D -> UNDEFINED
-    u'\ufffe'   #  0x9E -> UNDEFINED
-    u'\u0178'   #  0x9F -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\xa1'     #  0xA1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\xa5'     #  0xA5 -> YEN SIGN
-    u'\xa6'     #  0xA6 -> BROKEN BAR
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xa8'     #  0xA8 -> DIAERESIS
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\xaa'     #  0xAA -> FEMININE ORDINAL INDICATOR
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\xaf'     #  0xAF -> MACRON
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'     #  0xB4 -> ACUTE ACCENT
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\xb8'     #  0xB8 -> CEDILLA
-    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
-    u'\xba'     #  0xBA -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'     #  0xBF -> INVERTED QUESTION MARK
-    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0102'   #  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u0300'   #  0xCC -> COMBINING GRAVE ACCENT
-    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u0110'   #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\u0309'   #  0xD2 -> COMBINING HOOK ABOVE
-    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u01a0'   #  0xD5 -> LATIN CAPITAL LETTER O WITH HORN
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
-    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u01af'   #  0xDD -> LATIN CAPITAL LETTER U WITH HORN
-    u'\u0303'   #  0xDE -> COMBINING TILDE
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0103'   #  0xE3 -> LATIN SMALL LETTER A WITH BREVE
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u0301'   #  0xEC -> COMBINING ACUTE ACCENT
-    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u0111'   #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\u0323'   #  0xF2 -> COMBINING DOT BELOW
-    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u01a1'   #  0xF5 -> LATIN SMALL LETTER O WITH HORN
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'     #  0xF7 -> DIVISION SIGN
-    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u01b0'   #  0xFD -> LATIN SMALL LETTER U WITH HORN
-    u'\u20ab'   #  0xFE -> DONG SIGN
-    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp424.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp424.py
deleted file mode 100644
index 343d7d7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp424.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp424 generated from 'MAPPINGS/VENDORS/MISC/CP424.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp424',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x9c'     #  0x04 -> SELECT
-    u'\t'       #  0x05 -> HORIZONTAL TABULATION
-    u'\x86'     #  0x06 -> REQUIRED NEW LINE
-    u'\x7f'     #  0x07 -> DELETE
-    u'\x97'     #  0x08 -> GRAPHIC ESCAPE
-    u'\x8d'     #  0x09 -> SUPERSCRIPT
-    u'\x8e'     #  0x0A -> REPEAT
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x9d'     #  0x14 -> RESTORE/ENABLE PRESENTATION
-    u'\x85'     #  0x15 -> NEW LINE
-    u'\x08'     #  0x16 -> BACKSPACE
-    u'\x87'     #  0x17 -> PROGRAM OPERATOR COMMUNICATION
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x92'     #  0x1A -> UNIT BACK SPACE
-    u'\x8f'     #  0x1B -> CUSTOMER USE ONE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u'\x80'     #  0x20 -> DIGIT SELECT
-    u'\x81'     #  0x21 -> START OF SIGNIFICANCE
-    u'\x82'     #  0x22 -> FIELD SEPARATOR
-    u'\x83'     #  0x23 -> WORD UNDERSCORE
-    u'\x84'     #  0x24 -> BYPASS OR INHIBIT PRESENTATION
-    u'\n'       #  0x25 -> LINE FEED
-    u'\x17'     #  0x26 -> END OF TRANSMISSION BLOCK
-    u'\x1b'     #  0x27 -> ESCAPE
-    u'\x88'     #  0x28 -> SET ATTRIBUTE
-    u'\x89'     #  0x29 -> START FIELD EXTENDED
-    u'\x8a'     #  0x2A -> SET MODE OR SWITCH
-    u'\x8b'     #  0x2B -> CONTROL SEQUENCE PREFIX
-    u'\x8c'     #  0x2C -> MODIFY FIELD ATTRIBUTE
-    u'\x05'     #  0x2D -> ENQUIRY
-    u'\x06'     #  0x2E -> ACKNOWLEDGE
-    u'\x07'     #  0x2F -> BELL
-    u'\x90'     #  0x30 -> <reserved>
-    u'\x91'     #  0x31 -> <reserved>
-    u'\x16'     #  0x32 -> SYNCHRONOUS IDLE
-    u'\x93'     #  0x33 -> INDEX RETURN
-    u'\x94'     #  0x34 -> PRESENTATION POSITION
-    u'\x95'     #  0x35 -> TRANSPARENT
-    u'\x96'     #  0x36 -> NUMERIC BACKSPACE
-    u'\x04'     #  0x37 -> END OF TRANSMISSION
-    u'\x98'     #  0x38 -> SUBSCRIPT
-    u'\x99'     #  0x39 -> INDENT TABULATION
-    u'\x9a'     #  0x3A -> REVERSE FORM FEED
-    u'\x9b'     #  0x3B -> CUSTOMER USE THREE
-    u'\x14'     #  0x3C -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x3D -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'     #  0x3E -> <reserved>
-    u'\x1a'     #  0x3F -> SUBSTITUTE
-    u' '        #  0x40 -> SPACE
-    u'\u05d0'   #  0x41 -> HEBREW LETTER ALEF
-    u'\u05d1'   #  0x42 -> HEBREW LETTER BET
-    u'\u05d2'   #  0x43 -> HEBREW LETTER GIMEL
-    u'\u05d3'   #  0x44 -> HEBREW LETTER DALET
-    u'\u05d4'   #  0x45 -> HEBREW LETTER HE
-    u'\u05d5'   #  0x46 -> HEBREW LETTER VAV
-    u'\u05d6'   #  0x47 -> HEBREW LETTER ZAYIN
-    u'\u05d7'   #  0x48 -> HEBREW LETTER HET
-    u'\u05d8'   #  0x49 -> HEBREW LETTER TET
-    u'\xa2'     #  0x4A -> CENT SIGN
-    u'.'        #  0x4B -> FULL STOP
-    u'<'        #  0x4C -> LESS-THAN SIGN
-    u'('        #  0x4D -> LEFT PARENTHESIS
-    u'+'        #  0x4E -> PLUS SIGN
-    u'|'        #  0x4F -> VERTICAL LINE
-    u'&'        #  0x50 -> AMPERSAND
-    u'\u05d9'   #  0x51 -> HEBREW LETTER YOD
-    u'\u05da'   #  0x52 -> HEBREW LETTER FINAL KAF
-    u'\u05db'   #  0x53 -> HEBREW LETTER KAF
-    u'\u05dc'   #  0x54 -> HEBREW LETTER LAMED
-    u'\u05dd'   #  0x55 -> HEBREW LETTER FINAL MEM
-    u'\u05de'   #  0x56 -> HEBREW LETTER MEM
-    u'\u05df'   #  0x57 -> HEBREW LETTER FINAL NUN
-    u'\u05e0'   #  0x58 -> HEBREW LETTER NUN
-    u'\u05e1'   #  0x59 -> HEBREW LETTER SAMEKH
-    u'!'        #  0x5A -> EXCLAMATION MARK
-    u'$'        #  0x5B -> DOLLAR SIGN
-    u'*'        #  0x5C -> ASTERISK
-    u')'        #  0x5D -> RIGHT PARENTHESIS
-    u';'        #  0x5E -> SEMICOLON
-    u'\xac'     #  0x5F -> NOT SIGN
-    u'-'        #  0x60 -> HYPHEN-MINUS
-    u'/'        #  0x61 -> SOLIDUS
-    u'\u05e2'   #  0x62 -> HEBREW LETTER AYIN
-    u'\u05e3'   #  0x63 -> HEBREW LETTER FINAL PE
-    u'\u05e4'   #  0x64 -> HEBREW LETTER PE
-    u'\u05e5'   #  0x65 -> HEBREW LETTER FINAL TSADI
-    u'\u05e6'   #  0x66 -> HEBREW LETTER TSADI
-    u'\u05e7'   #  0x67 -> HEBREW LETTER QOF
-    u'\u05e8'   #  0x68 -> HEBREW LETTER RESH
-    u'\u05e9'   #  0x69 -> HEBREW LETTER SHIN
-    u'\xa6'     #  0x6A -> BROKEN BAR
-    u','        #  0x6B -> COMMA
-    u'%'        #  0x6C -> PERCENT SIGN
-    u'_'        #  0x6D -> LOW LINE
-    u'>'        #  0x6E -> GREATER-THAN SIGN
-    u'?'        #  0x6F -> QUESTION MARK
-    u'\ufffe'   #  0x70 -> UNDEFINED
-    u'\u05ea'   #  0x71 -> HEBREW LETTER TAV
-    u'\ufffe'   #  0x72 -> UNDEFINED
-    u'\ufffe'   #  0x73 -> UNDEFINED
-    u'\xa0'     #  0x74 -> NO-BREAK SPACE
-    u'\ufffe'   #  0x75 -> UNDEFINED
-    u'\ufffe'   #  0x76 -> UNDEFINED
-    u'\ufffe'   #  0x77 -> UNDEFINED
-    u'\u2017'   #  0x78 -> DOUBLE LOW LINE
-    u'`'        #  0x79 -> GRAVE ACCENT
-    u':'        #  0x7A -> COLON
-    u'#'        #  0x7B -> NUMBER SIGN
-    u'@'        #  0x7C -> COMMERCIAL AT
-    u"'"        #  0x7D -> APOSTROPHE
-    u'='        #  0x7E -> EQUALS SIGN
-    u'"'        #  0x7F -> QUOTATION MARK
-    u'\ufffe'   #  0x80 -> UNDEFINED
-    u'a'        #  0x81 -> LATIN SMALL LETTER A
-    u'b'        #  0x82 -> LATIN SMALL LETTER B
-    u'c'        #  0x83 -> LATIN SMALL LETTER C
-    u'd'        #  0x84 -> LATIN SMALL LETTER D
-    u'e'        #  0x85 -> LATIN SMALL LETTER E
-    u'f'        #  0x86 -> LATIN SMALL LETTER F
-    u'g'        #  0x87 -> LATIN SMALL LETTER G
-    u'h'        #  0x88 -> LATIN SMALL LETTER H
-    u'i'        #  0x89 -> LATIN SMALL LETTER I
-    u'\xab'     #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\ufffe'   #  0x8C -> UNDEFINED
-    u'\ufffe'   #  0x8D -> UNDEFINED
-    u'\ufffe'   #  0x8E -> UNDEFINED
-    u'\xb1'     #  0x8F -> PLUS-MINUS SIGN
-    u'\xb0'     #  0x90 -> DEGREE SIGN
-    u'j'        #  0x91 -> LATIN SMALL LETTER J
-    u'k'        #  0x92 -> LATIN SMALL LETTER K
-    u'l'        #  0x93 -> LATIN SMALL LETTER L
-    u'm'        #  0x94 -> LATIN SMALL LETTER M
-    u'n'        #  0x95 -> LATIN SMALL LETTER N
-    u'o'        #  0x96 -> LATIN SMALL LETTER O
-    u'p'        #  0x97 -> LATIN SMALL LETTER P
-    u'q'        #  0x98 -> LATIN SMALL LETTER Q
-    u'r'        #  0x99 -> LATIN SMALL LETTER R
-    u'\ufffe'   #  0x9A -> UNDEFINED
-    u'\ufffe'   #  0x9B -> UNDEFINED
-    u'\ufffe'   #  0x9C -> UNDEFINED
-    u'\xb8'     #  0x9D -> CEDILLA
-    u'\ufffe'   #  0x9E -> UNDEFINED
-    u'\xa4'     #  0x9F -> CURRENCY SIGN
-    u'\xb5'     #  0xA0 -> MICRO SIGN
-    u'~'        #  0xA1 -> TILDE
-    u's'        #  0xA2 -> LATIN SMALL LETTER S
-    u't'        #  0xA3 -> LATIN SMALL LETTER T
-    u'u'        #  0xA4 -> LATIN SMALL LETTER U
-    u'v'        #  0xA5 -> LATIN SMALL LETTER V
-    u'w'        #  0xA6 -> LATIN SMALL LETTER W
-    u'x'        #  0xA7 -> LATIN SMALL LETTER X
-    u'y'        #  0xA8 -> LATIN SMALL LETTER Y
-    u'z'        #  0xA9 -> LATIN SMALL LETTER Z
-    u'\ufffe'   #  0xAA -> UNDEFINED
-    u'\ufffe'   #  0xAB -> UNDEFINED
-    u'\ufffe'   #  0xAC -> UNDEFINED
-    u'\ufffe'   #  0xAD -> UNDEFINED
-    u'\ufffe'   #  0xAE -> UNDEFINED
-    u'\xae'     #  0xAF -> REGISTERED SIGN
-    u'^'        #  0xB0 -> CIRCUMFLEX ACCENT
-    u'\xa3'     #  0xB1 -> POUND SIGN
-    u'\xa5'     #  0xB2 -> YEN SIGN
-    u'\xb7'     #  0xB3 -> MIDDLE DOT
-    u'\xa9'     #  0xB4 -> COPYRIGHT SIGN
-    u'\xa7'     #  0xB5 -> SECTION SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xbc'     #  0xB7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xB8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xB9 -> VULGAR FRACTION THREE QUARTERS
-    u'['        #  0xBA -> LEFT SQUARE BRACKET
-    u']'        #  0xBB -> RIGHT SQUARE BRACKET
-    u'\xaf'     #  0xBC -> MACRON
-    u'\xa8'     #  0xBD -> DIAERESIS
-    u'\xb4'     #  0xBE -> ACUTE ACCENT
-    u'\xd7'     #  0xBF -> MULTIPLICATION SIGN
-    u'{'        #  0xC0 -> LEFT CURLY BRACKET
-    u'A'        #  0xC1 -> LATIN CAPITAL LETTER A
-    u'B'        #  0xC2 -> LATIN CAPITAL LETTER B
-    u'C'        #  0xC3 -> LATIN CAPITAL LETTER C
-    u'D'        #  0xC4 -> LATIN CAPITAL LETTER D
-    u'E'        #  0xC5 -> LATIN CAPITAL LETTER E
-    u'F'        #  0xC6 -> LATIN CAPITAL LETTER F
-    u'G'        #  0xC7 -> LATIN CAPITAL LETTER G
-    u'H'        #  0xC8 -> LATIN CAPITAL LETTER H
-    u'I'        #  0xC9 -> LATIN CAPITAL LETTER I
-    u'\xad'     #  0xCA -> SOFT HYPHEN
-    u'\ufffe'   #  0xCB -> UNDEFINED
-    u'\ufffe'   #  0xCC -> UNDEFINED
-    u'\ufffe'   #  0xCD -> UNDEFINED
-    u'\ufffe'   #  0xCE -> UNDEFINED
-    u'\ufffe'   #  0xCF -> UNDEFINED
-    u'}'        #  0xD0 -> RIGHT CURLY BRACKET
-    u'J'        #  0xD1 -> LATIN CAPITAL LETTER J
-    u'K'        #  0xD2 -> LATIN CAPITAL LETTER K
-    u'L'        #  0xD3 -> LATIN CAPITAL LETTER L
-    u'M'        #  0xD4 -> LATIN CAPITAL LETTER M
-    u'N'        #  0xD5 -> LATIN CAPITAL LETTER N
-    u'O'        #  0xD6 -> LATIN CAPITAL LETTER O
-    u'P'        #  0xD7 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0xD8 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0xD9 -> LATIN CAPITAL LETTER R
-    u'\xb9'     #  0xDA -> SUPERSCRIPT ONE
-    u'\ufffe'   #  0xDB -> UNDEFINED
-    u'\ufffe'   #  0xDC -> UNDEFINED
-    u'\ufffe'   #  0xDD -> UNDEFINED
-    u'\ufffe'   #  0xDE -> UNDEFINED
-    u'\ufffe'   #  0xDF -> UNDEFINED
-    u'\\'       #  0xE0 -> REVERSE SOLIDUS
-    u'\xf7'     #  0xE1 -> DIVISION SIGN
-    u'S'        #  0xE2 -> LATIN CAPITAL LETTER S
-    u'T'        #  0xE3 -> LATIN CAPITAL LETTER T
-    u'U'        #  0xE4 -> LATIN CAPITAL LETTER U
-    u'V'        #  0xE5 -> LATIN CAPITAL LETTER V
-    u'W'        #  0xE6 -> LATIN CAPITAL LETTER W
-    u'X'        #  0xE7 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0xE8 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0xE9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'     #  0xEA -> SUPERSCRIPT TWO
-    u'\ufffe'   #  0xEB -> UNDEFINED
-    u'\ufffe'   #  0xEC -> UNDEFINED
-    u'\ufffe'   #  0xED -> UNDEFINED
-    u'\ufffe'   #  0xEE -> UNDEFINED
-    u'\ufffe'   #  0xEF -> UNDEFINED
-    u'0'        #  0xF0 -> DIGIT ZERO
-    u'1'        #  0xF1 -> DIGIT ONE
-    u'2'        #  0xF2 -> DIGIT TWO
-    u'3'        #  0xF3 -> DIGIT THREE
-    u'4'        #  0xF4 -> DIGIT FOUR
-    u'5'        #  0xF5 -> DIGIT FIVE
-    u'6'        #  0xF6 -> DIGIT SIX
-    u'7'        #  0xF7 -> DIGIT SEVEN
-    u'8'        #  0xF8 -> DIGIT EIGHT
-    u'9'        #  0xF9 -> DIGIT NINE
-    u'\xb3'     #  0xFA -> SUPERSCRIPT THREE
-    u'\ufffe'   #  0xFB -> UNDEFINED
-    u'\ufffe'   #  0xFC -> UNDEFINED
-    u'\ufffe'   #  0xFD -> UNDEFINED
-    u'\ufffe'   #  0xFE -> UNDEFINED
-    u'\x9f'     #  0xFF -> EIGHT ONES
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp437.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp437.py
deleted file mode 100644
index 800ae50..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp437.py
+++ /dev/null
@@ -1,698 +0,0 @@
-""" Python Character Mapping Codec cp437 generated from 'VENDORS/MICSFT/PC/CP437.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp437',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00e5,     #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00ef,     #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x008c: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x008d: 0x00ec,     #  LATIN SMALL LETTER I WITH GRAVE
-    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x00c5,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00e6,     #  LATIN SMALL LIGATURE AE
-    0x0092: 0x00c6,     #  LATIN CAPITAL LIGATURE AE
-    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x00f2,     #  LATIN SMALL LETTER O WITH GRAVE
-    0x0096: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x0097: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x0098: 0x00ff,     #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00a2,     #  CENT SIGN
-    0x009c: 0x00a3,     #  POUND SIGN
-    0x009d: 0x00a5,     #  YEN SIGN
-    0x009e: 0x20a7,     #  PESETA SIGN
-    0x009f: 0x0192,     #  LATIN SMALL LETTER F WITH HOOK
-    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00a5: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00a6: 0x00aa,     #  FEMININE ORDINAL INDICATOR
-    0x00a7: 0x00ba,     #  MASCULINE ORDINAL INDICATOR
-    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
-    0x00a9: 0x2310,     #  REVERSED NOT SIGN
-    0x00aa: 0x00ac,     #  NOT SIGN
-    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x258c,     #  LEFT HALF BLOCK
-    0x00de: 0x2590,     #  RIGHT HALF BLOCK
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x03b1,     #  GREEK SMALL LETTER ALPHA
-    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
-    0x00e3: 0x03c0,     #  GREEK SMALL LETTER PI
-    0x00e4: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
-    0x00e5: 0x03c3,     #  GREEK SMALL LETTER SIGMA
-    0x00e6: 0x00b5,     #  MICRO SIGN
-    0x00e7: 0x03c4,     #  GREEK SMALL LETTER TAU
-    0x00e8: 0x03a6,     #  GREEK CAPITAL LETTER PHI
-    0x00e9: 0x0398,     #  GREEK CAPITAL LETTER THETA
-    0x00ea: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
-    0x00eb: 0x03b4,     #  GREEK SMALL LETTER DELTA
-    0x00ec: 0x221e,     #  INFINITY
-    0x00ed: 0x03c6,     #  GREEK SMALL LETTER PHI
-    0x00ee: 0x03b5,     #  GREEK SMALL LETTER EPSILON
-    0x00ef: 0x2229,     #  INTERSECTION
-    0x00f0: 0x2261,     #  IDENTICAL TO
-    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
-    0x00f2: 0x2265,     #  GREATER-THAN OR EQUAL TO
-    0x00f3: 0x2264,     #  LESS-THAN OR EQUAL TO
-    0x00f4: 0x2320,     #  TOP HALF INTEGRAL
-    0x00f5: 0x2321,     #  BOTTOM HALF INTEGRAL
-    0x00f6: 0x00f7,     #  DIVISION SIGN
-    0x00f7: 0x2248,     #  ALMOST EQUAL TO
-    0x00f8: 0x00b0,     #  DEGREE SIGN
-    0x00f9: 0x2219,     #  BULLET OPERATOR
-    0x00fa: 0x00b7,     #  MIDDLE DOT
-    0x00fb: 0x221a,     #  SQUARE ROOT
-    0x00fc: 0x207f,     #  SUPERSCRIPT LATIN SMALL LETTER N
-    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe5'     #  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xef'     #  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xee'     #  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xec'     #  0x008d -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xe6'     #  0x0091 -> LATIN SMALL LIGATURE AE
-    u'\xc6'     #  0x0092 -> LATIN CAPITAL LIGATURE AE
-    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'     #  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xfb'     #  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xf9'     #  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xff'     #  0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xa2'     #  0x009b -> CENT SIGN
-    u'\xa3'     #  0x009c -> POUND SIGN
-    u'\xa5'     #  0x009d -> YEN SIGN
-    u'\u20a7'   #  0x009e -> PESETA SIGN
-    u'\u0192'   #  0x009f -> LATIN SMALL LETTER F WITH HOOK
-    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf1'     #  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xd1'     #  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xaa'     #  0x00a6 -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0x00a7 -> MASCULINE ORDINAL INDICATOR
-    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
-    u'\u2310'   #  0x00a9 -> REVERSED NOT SIGN
-    u'\xac'     #  0x00aa -> NOT SIGN
-    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\u03b1'   #  0x00e0 -> GREEK SMALL LETTER ALPHA
-    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\u0393'   #  0x00e2 -> GREEK CAPITAL LETTER GAMMA
-    u'\u03c0'   #  0x00e3 -> GREEK SMALL LETTER PI
-    u'\u03a3'   #  0x00e4 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03c3'   #  0x00e5 -> GREEK SMALL LETTER SIGMA
-    u'\xb5'     #  0x00e6 -> MICRO SIGN
-    u'\u03c4'   #  0x00e7 -> GREEK SMALL LETTER TAU
-    u'\u03a6'   #  0x00e8 -> GREEK CAPITAL LETTER PHI
-    u'\u0398'   #  0x00e9 -> GREEK CAPITAL LETTER THETA
-    u'\u03a9'   #  0x00ea -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b4'   #  0x00eb -> GREEK SMALL LETTER DELTA
-    u'\u221e'   #  0x00ec -> INFINITY
-    u'\u03c6'   #  0x00ed -> GREEK SMALL LETTER PHI
-    u'\u03b5'   #  0x00ee -> GREEK SMALL LETTER EPSILON
-    u'\u2229'   #  0x00ef -> INTERSECTION
-    u'\u2261'   #  0x00f0 -> IDENTICAL TO
-    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2265'   #  0x00f2 -> GREATER-THAN OR EQUAL TO
-    u'\u2264'   #  0x00f3 -> LESS-THAN OR EQUAL TO
-    u'\u2320'   #  0x00f4 -> TOP HALF INTEGRAL
-    u'\u2321'   #  0x00f5 -> BOTTOM HALF INTEGRAL
-    u'\xf7'     #  0x00f6 -> DIVISION SIGN
-    u'\u2248'   #  0x00f7 -> ALMOST EQUAL TO
-    u'\xb0'     #  0x00f8 -> DEGREE SIGN
-    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
-    u'\xb7'     #  0x00fa -> MIDDLE DOT
-    u'\u221a'   #  0x00fb -> SQUARE ROOT
-    u'\u207f'   #  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
-    0x00a2: 0x009b,     #  CENT SIGN
-    0x00a3: 0x009c,     #  POUND SIGN
-    0x00a5: 0x009d,     #  YEN SIGN
-    0x00aa: 0x00a6,     #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,     #  NOT SIGN
-    0x00b0: 0x00f8,     #  DEGREE SIGN
-    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
-    0x00b5: 0x00e6,     #  MICRO SIGN
-    0x00b7: 0x00fa,     #  MIDDLE DOT
-    0x00ba: 0x00a7,     #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
-    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
-    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x008f,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x0092,     #  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00d1: 0x00a5,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x0086,     #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x0091,     #  LATIN SMALL LIGATURE AE
-    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x008d,     #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x008c,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x008b,     #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0x00a4,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x0095,     #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,     #  DIVISION SIGN
-    0x00f9: 0x0097,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x0096,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00ff: 0x0098,     #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0192: 0x009f,     #  LATIN SMALL LETTER F WITH HOOK
-    0x0393: 0x00e2,     #  GREEK CAPITAL LETTER GAMMA
-    0x0398: 0x00e9,     #  GREEK CAPITAL LETTER THETA
-    0x03a3: 0x00e4,     #  GREEK CAPITAL LETTER SIGMA
-    0x03a6: 0x00e8,     #  GREEK CAPITAL LETTER PHI
-    0x03a9: 0x00ea,     #  GREEK CAPITAL LETTER OMEGA
-    0x03b1: 0x00e0,     #  GREEK SMALL LETTER ALPHA
-    0x03b4: 0x00eb,     #  GREEK SMALL LETTER DELTA
-    0x03b5: 0x00ee,     #  GREEK SMALL LETTER EPSILON
-    0x03c0: 0x00e3,     #  GREEK SMALL LETTER PI
-    0x03c3: 0x00e5,     #  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00e7,     #  GREEK SMALL LETTER TAU
-    0x03c6: 0x00ed,     #  GREEK SMALL LETTER PHI
-    0x207f: 0x00fc,     #  SUPERSCRIPT LATIN SMALL LETTER N
-    0x20a7: 0x009e,     #  PESETA SIGN
-    0x2219: 0x00f9,     #  BULLET OPERATOR
-    0x221a: 0x00fb,     #  SQUARE ROOT
-    0x221e: 0x00ec,     #  INFINITY
-    0x2229: 0x00ef,     #  INTERSECTION
-    0x2248: 0x00f7,     #  ALMOST EQUAL TO
-    0x2261: 0x00f0,     #  IDENTICAL TO
-    0x2264: 0x00f3,     #  LESS-THAN OR EQUAL TO
-    0x2265: 0x00f2,     #  GREATER-THAN OR EQUAL TO
-    0x2310: 0x00a9,     #  REVERSED NOT SIGN
-    0x2320: 0x00f4,     #  TOP HALF INTEGRAL
-    0x2321: 0x00f5,     #  BOTTOM HALF INTEGRAL
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x258c: 0x00dd,     #  LEFT HALF BLOCK
-    0x2590: 0x00de,     #  RIGHT HALF BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp500.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp500.py
deleted file mode 100644
index 5f60957..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp500.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp500 generated from 'MAPPINGS/VENDORS/MICSFT/EBCDIC/CP500.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp500',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x9c'     #  0x04 -> CONTROL
-    u'\t'       #  0x05 -> HORIZONTAL TABULATION
-    u'\x86'     #  0x06 -> CONTROL
-    u'\x7f'     #  0x07 -> DELETE
-    u'\x97'     #  0x08 -> CONTROL
-    u'\x8d'     #  0x09 -> CONTROL
-    u'\x8e'     #  0x0A -> CONTROL
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x9d'     #  0x14 -> CONTROL
-    u'\x85'     #  0x15 -> CONTROL
-    u'\x08'     #  0x16 -> BACKSPACE
-    u'\x87'     #  0x17 -> CONTROL
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x92'     #  0x1A -> CONTROL
-    u'\x8f'     #  0x1B -> CONTROL
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u'\x80'     #  0x20 -> CONTROL
-    u'\x81'     #  0x21 -> CONTROL
-    u'\x82'     #  0x22 -> CONTROL
-    u'\x83'     #  0x23 -> CONTROL
-    u'\x84'     #  0x24 -> CONTROL
-    u'\n'       #  0x25 -> LINE FEED
-    u'\x17'     #  0x26 -> END OF TRANSMISSION BLOCK
-    u'\x1b'     #  0x27 -> ESCAPE
-    u'\x88'     #  0x28 -> CONTROL
-    u'\x89'     #  0x29 -> CONTROL
-    u'\x8a'     #  0x2A -> CONTROL
-    u'\x8b'     #  0x2B -> CONTROL
-    u'\x8c'     #  0x2C -> CONTROL
-    u'\x05'     #  0x2D -> ENQUIRY
-    u'\x06'     #  0x2E -> ACKNOWLEDGE
-    u'\x07'     #  0x2F -> BELL
-    u'\x90'     #  0x30 -> CONTROL
-    u'\x91'     #  0x31 -> CONTROL
-    u'\x16'     #  0x32 -> SYNCHRONOUS IDLE
-    u'\x93'     #  0x33 -> CONTROL
-    u'\x94'     #  0x34 -> CONTROL
-    u'\x95'     #  0x35 -> CONTROL
-    u'\x96'     #  0x36 -> CONTROL
-    u'\x04'     #  0x37 -> END OF TRANSMISSION
-    u'\x98'     #  0x38 -> CONTROL
-    u'\x99'     #  0x39 -> CONTROL
-    u'\x9a'     #  0x3A -> CONTROL
-    u'\x9b'     #  0x3B -> CONTROL
-    u'\x14'     #  0x3C -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x3D -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'     #  0x3E -> CONTROL
-    u'\x1a'     #  0x3F -> SUBSTITUTE
-    u' '        #  0x40 -> SPACE
-    u'\xa0'     #  0x41 -> NO-BREAK SPACE
-    u'\xe2'     #  0x42 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x43 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'     #  0x44 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'     #  0x45 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe3'     #  0x46 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'     #  0x47 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'     #  0x48 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xf1'     #  0x49 -> LATIN SMALL LETTER N WITH TILDE
-    u'['        #  0x4A -> LEFT SQUARE BRACKET
-    u'.'        #  0x4B -> FULL STOP
-    u'<'        #  0x4C -> LESS-THAN SIGN
-    u'('        #  0x4D -> LEFT PARENTHESIS
-    u'+'        #  0x4E -> PLUS SIGN
-    u'!'        #  0x4F -> EXCLAMATION MARK
-    u'&'        #  0x50 -> AMPERSAND
-    u'\xe9'     #  0x51 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'     #  0x52 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x53 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'     #  0x54 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xed'     #  0x55 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0x56 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0x57 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xec'     #  0x58 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xdf'     #  0x59 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u']'        #  0x5A -> RIGHT SQUARE BRACKET
-    u'$'        #  0x5B -> DOLLAR SIGN
-    u'*'        #  0x5C -> ASTERISK
-    u')'        #  0x5D -> RIGHT PARENTHESIS
-    u';'        #  0x5E -> SEMICOLON
-    u'^'        #  0x5F -> CIRCUMFLEX ACCENT
-    u'-'        #  0x60 -> HYPHEN-MINUS
-    u'/'        #  0x61 -> SOLIDUS
-    u'\xc2'     #  0x62 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc4'     #  0x63 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc0'     #  0x64 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'     #  0x65 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc3'     #  0x66 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc5'     #  0x67 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'     #  0x68 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xd1'     #  0x69 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xa6'     #  0x6A -> BROKEN BAR
-    u','        #  0x6B -> COMMA
-    u'%'        #  0x6C -> PERCENT SIGN
-    u'_'        #  0x6D -> LOW LINE
-    u'>'        #  0x6E -> GREATER-THAN SIGN
-    u'?'        #  0x6F -> QUESTION MARK
-    u'\xf8'     #  0x70 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xc9'     #  0x71 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'     #  0x72 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0x73 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'     #  0x74 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'     #  0x75 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0x76 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0x77 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'     #  0x78 -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'`'        #  0x79 -> GRAVE ACCENT
-    u':'        #  0x7A -> COLON
-    u'#'        #  0x7B -> NUMBER SIGN
-    u'@'        #  0x7C -> COMMERCIAL AT
-    u"'"        #  0x7D -> APOSTROPHE
-    u'='        #  0x7E -> EQUALS SIGN
-    u'"'        #  0x7F -> QUOTATION MARK
-    u'\xd8'     #  0x80 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'a'        #  0x81 -> LATIN SMALL LETTER A
-    u'b'        #  0x82 -> LATIN SMALL LETTER B
-    u'c'        #  0x83 -> LATIN SMALL LETTER C
-    u'd'        #  0x84 -> LATIN SMALL LETTER D
-    u'e'        #  0x85 -> LATIN SMALL LETTER E
-    u'f'        #  0x86 -> LATIN SMALL LETTER F
-    u'g'        #  0x87 -> LATIN SMALL LETTER G
-    u'h'        #  0x88 -> LATIN SMALL LETTER H
-    u'i'        #  0x89 -> LATIN SMALL LETTER I
-    u'\xab'     #  0x8A -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x8B -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xf0'     #  0x8C -> LATIN SMALL LETTER ETH (ICELANDIC)
-    u'\xfd'     #  0x8D -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'     #  0x8E -> LATIN SMALL LETTER THORN (ICELANDIC)
-    u'\xb1'     #  0x8F -> PLUS-MINUS SIGN
-    u'\xb0'     #  0x90 -> DEGREE SIGN
-    u'j'        #  0x91 -> LATIN SMALL LETTER J
-    u'k'        #  0x92 -> LATIN SMALL LETTER K
-    u'l'        #  0x93 -> LATIN SMALL LETTER L
-    u'm'        #  0x94 -> LATIN SMALL LETTER M
-    u'n'        #  0x95 -> LATIN SMALL LETTER N
-    u'o'        #  0x96 -> LATIN SMALL LETTER O
-    u'p'        #  0x97 -> LATIN SMALL LETTER P
-    u'q'        #  0x98 -> LATIN SMALL LETTER Q
-    u'r'        #  0x99 -> LATIN SMALL LETTER R
-    u'\xaa'     #  0x9A -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0x9B -> MASCULINE ORDINAL INDICATOR
-    u'\xe6'     #  0x9C -> LATIN SMALL LIGATURE AE
-    u'\xb8'     #  0x9D -> CEDILLA
-    u'\xc6'     #  0x9E -> LATIN CAPITAL LIGATURE AE
-    u'\xa4'     #  0x9F -> CURRENCY SIGN
-    u'\xb5'     #  0xA0 -> MICRO SIGN
-    u'~'        #  0xA1 -> TILDE
-    u's'        #  0xA2 -> LATIN SMALL LETTER S
-    u't'        #  0xA3 -> LATIN SMALL LETTER T
-    u'u'        #  0xA4 -> LATIN SMALL LETTER U
-    u'v'        #  0xA5 -> LATIN SMALL LETTER V
-    u'w'        #  0xA6 -> LATIN SMALL LETTER W
-    u'x'        #  0xA7 -> LATIN SMALL LETTER X
-    u'y'        #  0xA8 -> LATIN SMALL LETTER Y
-    u'z'        #  0xA9 -> LATIN SMALL LETTER Z
-    u'\xa1'     #  0xAA -> INVERTED EXCLAMATION MARK
-    u'\xbf'     #  0xAB -> INVERTED QUESTION MARK
-    u'\xd0'     #  0xAC -> LATIN CAPITAL LETTER ETH (ICELANDIC)
-    u'\xdd'     #  0xAD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'     #  0xAE -> LATIN CAPITAL LETTER THORN (ICELANDIC)
-    u'\xae'     #  0xAF -> REGISTERED SIGN
-    u'\xa2'     #  0xB0 -> CENT SIGN
-    u'\xa3'     #  0xB1 -> POUND SIGN
-    u'\xa5'     #  0xB2 -> YEN SIGN
-    u'\xb7'     #  0xB3 -> MIDDLE DOT
-    u'\xa9'     #  0xB4 -> COPYRIGHT SIGN
-    u'\xa7'     #  0xB5 -> SECTION SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xbc'     #  0xB7 -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xB8 -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xB9 -> VULGAR FRACTION THREE QUARTERS
-    u'\xac'     #  0xBA -> NOT SIGN
-    u'|'        #  0xBB -> VERTICAL LINE
-    u'\xaf'     #  0xBC -> MACRON
-    u'\xa8'     #  0xBD -> DIAERESIS
-    u'\xb4'     #  0xBE -> ACUTE ACCENT
-    u'\xd7'     #  0xBF -> MULTIPLICATION SIGN
-    u'{'        #  0xC0 -> LEFT CURLY BRACKET
-    u'A'        #  0xC1 -> LATIN CAPITAL LETTER A
-    u'B'        #  0xC2 -> LATIN CAPITAL LETTER B
-    u'C'        #  0xC3 -> LATIN CAPITAL LETTER C
-    u'D'        #  0xC4 -> LATIN CAPITAL LETTER D
-    u'E'        #  0xC5 -> LATIN CAPITAL LETTER E
-    u'F'        #  0xC6 -> LATIN CAPITAL LETTER F
-    u'G'        #  0xC7 -> LATIN CAPITAL LETTER G
-    u'H'        #  0xC8 -> LATIN CAPITAL LETTER H
-    u'I'        #  0xC9 -> LATIN CAPITAL LETTER I
-    u'\xad'     #  0xCA -> SOFT HYPHEN
-    u'\xf4'     #  0xCB -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0xCC -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'     #  0xCD -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'     #  0xCE -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf5'     #  0xCF -> LATIN SMALL LETTER O WITH TILDE
-    u'}'        #  0xD0 -> RIGHT CURLY BRACKET
-    u'J'        #  0xD1 -> LATIN CAPITAL LETTER J
-    u'K'        #  0xD2 -> LATIN CAPITAL LETTER K
-    u'L'        #  0xD3 -> LATIN CAPITAL LETTER L
-    u'M'        #  0xD4 -> LATIN CAPITAL LETTER M
-    u'N'        #  0xD5 -> LATIN CAPITAL LETTER N
-    u'O'        #  0xD6 -> LATIN CAPITAL LETTER O
-    u'P'        #  0xD7 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0xD8 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0xD9 -> LATIN CAPITAL LETTER R
-    u'\xb9'     #  0xDA -> SUPERSCRIPT ONE
-    u'\xfb'     #  0xDB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xDC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xf9'     #  0xDD -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'     #  0xDE -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xff'     #  0xDF -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\\'       #  0xE0 -> REVERSE SOLIDUS
-    u'\xf7'     #  0xE1 -> DIVISION SIGN
-    u'S'        #  0xE2 -> LATIN CAPITAL LETTER S
-    u'T'        #  0xE3 -> LATIN CAPITAL LETTER T
-    u'U'        #  0xE4 -> LATIN CAPITAL LETTER U
-    u'V'        #  0xE5 -> LATIN CAPITAL LETTER V
-    u'W'        #  0xE6 -> LATIN CAPITAL LETTER W
-    u'X'        #  0xE7 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0xE8 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0xE9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'     #  0xEA -> SUPERSCRIPT TWO
-    u'\xd4'     #  0xEB -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd6'     #  0xEC -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd2'     #  0xED -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd5'     #  0xEF -> LATIN CAPITAL LETTER O WITH TILDE
-    u'0'        #  0xF0 -> DIGIT ZERO
-    u'1'        #  0xF1 -> DIGIT ONE
-    u'2'        #  0xF2 -> DIGIT TWO
-    u'3'        #  0xF3 -> DIGIT THREE
-    u'4'        #  0xF4 -> DIGIT FOUR
-    u'5'        #  0xF5 -> DIGIT FIVE
-    u'6'        #  0xF6 -> DIGIT SIX
-    u'7'        #  0xF7 -> DIGIT SEVEN
-    u'8'        #  0xF8 -> DIGIT EIGHT
-    u'9'        #  0xF9 -> DIGIT NINE
-    u'\xb3'     #  0xFA -> SUPERSCRIPT THREE
-    u'\xdb'     #  0xFB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'     #  0xFC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xd9'     #  0xFD -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'     #  0xFE -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\x9f'     #  0xFF -> CONTROL
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp720.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp720.py
deleted file mode 100644
index e8e0ae1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp720.py
+++ /dev/null
@@ -1,309 +0,0 @@
-"""Python Character Mapping Codec cp720 generated on Windows:
-Vista 6.0.6002 SP2 Multiprocessor Free with the command:
-  python Tools/unicode/genwincodec.py 720
-"""#"
-
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp720',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> CONTROL CHARACTER
-    u'\x01'     #  0x01 -> CONTROL CHARACTER
-    u'\x02'     #  0x02 -> CONTROL CHARACTER
-    u'\x03'     #  0x03 -> CONTROL CHARACTER
-    u'\x04'     #  0x04 -> CONTROL CHARACTER
-    u'\x05'     #  0x05 -> CONTROL CHARACTER
-    u'\x06'     #  0x06 -> CONTROL CHARACTER
-    u'\x07'     #  0x07 -> CONTROL CHARACTER
-    u'\x08'     #  0x08 -> CONTROL CHARACTER
-    u'\t'       #  0x09 -> CONTROL CHARACTER
-    u'\n'       #  0x0A -> CONTROL CHARACTER
-    u'\x0b'     #  0x0B -> CONTROL CHARACTER
-    u'\x0c'     #  0x0C -> CONTROL CHARACTER
-    u'\r'       #  0x0D -> CONTROL CHARACTER
-    u'\x0e'     #  0x0E -> CONTROL CHARACTER
-    u'\x0f'     #  0x0F -> CONTROL CHARACTER
-    u'\x10'     #  0x10 -> CONTROL CHARACTER
-    u'\x11'     #  0x11 -> CONTROL CHARACTER
-    u'\x12'     #  0x12 -> CONTROL CHARACTER
-    u'\x13'     #  0x13 -> CONTROL CHARACTER
-    u'\x14'     #  0x14 -> CONTROL CHARACTER
-    u'\x15'     #  0x15 -> CONTROL CHARACTER
-    u'\x16'     #  0x16 -> CONTROL CHARACTER
-    u'\x17'     #  0x17 -> CONTROL CHARACTER
-    u'\x18'     #  0x18 -> CONTROL CHARACTER
-    u'\x19'     #  0x19 -> CONTROL CHARACTER
-    u'\x1a'     #  0x1A -> CONTROL CHARACTER
-    u'\x1b'     #  0x1B -> CONTROL CHARACTER
-    u'\x1c'     #  0x1C -> CONTROL CHARACTER
-    u'\x1d'     #  0x1D -> CONTROL CHARACTER
-    u'\x1e'     #  0x1E -> CONTROL CHARACTER
-    u'\x1f'     #  0x1F -> CONTROL CHARACTER
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> CONTROL CHARACTER
-    u'\x80'
-    u'\x81'
-    u'\xe9'     #  0x82 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'     #  0x83 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\x84'
-    u'\xe0'     #  0x85 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\x86'
-    u'\xe7'     #  0x87 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'     #  0x88 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x89 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'     #  0x8A -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xef'     #  0x8B -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xee'     #  0x8C -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\x8d'
-    u'\x8e'
-    u'\x8f'
-    u'\x90'
-    u'\u0651'   #  0x91 -> ARABIC SHADDA
-    u'\u0652'   #  0x92 -> ARABIC SUKUN
-    u'\xf4'     #  0x93 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xa4'     #  0x94 -> CURRENCY SIGN
-    u'\u0640'   #  0x95 -> ARABIC TATWEEL
-    u'\xfb'     #  0x96 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xf9'     #  0x97 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\u0621'   #  0x98 -> ARABIC LETTER HAMZA
-    u'\u0622'   #  0x99 -> ARABIC LETTER ALEF WITH MADDA ABOVE
-    u'\u0623'   #  0x9A -> ARABIC LETTER ALEF WITH HAMZA ABOVE
-    u'\u0624'   #  0x9B -> ARABIC LETTER WAW WITH HAMZA ABOVE
-    u'\xa3'     #  0x9C -> POUND SIGN
-    u'\u0625'   #  0x9D -> ARABIC LETTER ALEF WITH HAMZA BELOW
-    u'\u0626'   #  0x9E -> ARABIC LETTER YEH WITH HAMZA ABOVE
-    u'\u0627'   #  0x9F -> ARABIC LETTER ALEF
-    u'\u0628'   #  0xA0 -> ARABIC LETTER BEH
-    u'\u0629'   #  0xA1 -> ARABIC LETTER TEH MARBUTA
-    u'\u062a'   #  0xA2 -> ARABIC LETTER TEH
-    u'\u062b'   #  0xA3 -> ARABIC LETTER THEH
-    u'\u062c'   #  0xA4 -> ARABIC LETTER JEEM
-    u'\u062d'   #  0xA5 -> ARABIC LETTER HAH
-    u'\u062e'   #  0xA6 -> ARABIC LETTER KHAH
-    u'\u062f'   #  0xA7 -> ARABIC LETTER DAL
-    u'\u0630'   #  0xA8 -> ARABIC LETTER THAL
-    u'\u0631'   #  0xA9 -> ARABIC LETTER REH
-    u'\u0632'   #  0xAA -> ARABIC LETTER ZAIN
-    u'\u0633'   #  0xAB -> ARABIC LETTER SEEN
-    u'\u0634'   #  0xAC -> ARABIC LETTER SHEEN
-    u'\u0635'   #  0xAD -> ARABIC LETTER SAD
-    u'\xab'     #  0xAE -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0xAF -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'   #  0xB0 -> LIGHT SHADE
-    u'\u2592'   #  0xB1 -> MEDIUM SHADE
-    u'\u2593'   #  0xB2 -> DARK SHADE
-    u'\u2502'   #  0xB3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0xB4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'   #  0xB5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'   #  0xB6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'   #  0xB7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'   #  0xB8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'   #  0xB9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0xBA -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0xBB -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0xBC -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'   #  0xBD -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'   #  0xBE -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'   #  0xBF -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0xC0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0xC1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0xC2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0xC3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0xC4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0xC5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'   #  0xC6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'   #  0xC7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'   #  0xC8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0xC9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0xCA -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0xCB -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0xCC -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0xCD -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0xCE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'   #  0xCF -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'   #  0xD0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'   #  0xD1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'   #  0xD2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'   #  0xD3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'   #  0xD4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'   #  0xD5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'   #  0xD6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'   #  0xD7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'   #  0xD8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'   #  0xD9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0xDA -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0xDB -> FULL BLOCK
-    u'\u2584'   #  0xDC -> LOWER HALF BLOCK
-    u'\u258c'   #  0xDD -> LEFT HALF BLOCK
-    u'\u2590'   #  0xDE -> RIGHT HALF BLOCK
-    u'\u2580'   #  0xDF -> UPPER HALF BLOCK
-    u'\u0636'   #  0xE0 -> ARABIC LETTER DAD
-    u'\u0637'   #  0xE1 -> ARABIC LETTER TAH
-    u'\u0638'   #  0xE2 -> ARABIC LETTER ZAH
-    u'\u0639'   #  0xE3 -> ARABIC LETTER AIN
-    u'\u063a'   #  0xE4 -> ARABIC LETTER GHAIN
-    u'\u0641'   #  0xE5 -> ARABIC LETTER FEH
-    u'\xb5'     #  0xE6 -> MICRO SIGN
-    u'\u0642'   #  0xE7 -> ARABIC LETTER QAF
-    u'\u0643'   #  0xE8 -> ARABIC LETTER KAF
-    u'\u0644'   #  0xE9 -> ARABIC LETTER LAM
-    u'\u0645'   #  0xEA -> ARABIC LETTER MEEM
-    u'\u0646'   #  0xEB -> ARABIC LETTER NOON
-    u'\u0647'   #  0xEC -> ARABIC LETTER HEH
-    u'\u0648'   #  0xED -> ARABIC LETTER WAW
-    u'\u0649'   #  0xEE -> ARABIC LETTER ALEF MAKSURA
-    u'\u064a'   #  0xEF -> ARABIC LETTER YEH
-    u'\u2261'   #  0xF0 -> IDENTICAL TO
-    u'\u064b'   #  0xF1 -> ARABIC FATHATAN
-    u'\u064c'   #  0xF2 -> ARABIC DAMMATAN
-    u'\u064d'   #  0xF3 -> ARABIC KASRATAN
-    u'\u064e'   #  0xF4 -> ARABIC FATHA
-    u'\u064f'   #  0xF5 -> ARABIC DAMMA
-    u'\u0650'   #  0xF6 -> ARABIC KASRA
-    u'\u2248'   #  0xF7 -> ALMOST EQUAL TO
-    u'\xb0'     #  0xF8 -> DEGREE SIGN
-    u'\u2219'   #  0xF9 -> BULLET OPERATOR
-    u'\xb7'     #  0xFA -> MIDDLE DOT
-    u'\u221a'   #  0xFB -> SQUARE ROOT
-    u'\u207f'   #  0xFC -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'     #  0xFD -> SUPERSCRIPT TWO
-    u'\u25a0'   #  0xFE -> BLACK SQUARE
-    u'\xa0'     #  0xFF -> NO-BREAK SPACE
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp737.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp737.py
deleted file mode 100644
index 2c080e5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp737.py
+++ /dev/null
@@ -1,698 +0,0 @@
-""" Python Character Mapping Codec cp737 generated from 'VENDORS/MICSFT/PC/CP737.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp737',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x0391,     #  GREEK CAPITAL LETTER ALPHA
-    0x0081: 0x0392,     #  GREEK CAPITAL LETTER BETA
-    0x0082: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
-    0x0083: 0x0394,     #  GREEK CAPITAL LETTER DELTA
-    0x0084: 0x0395,     #  GREEK CAPITAL LETTER EPSILON
-    0x0085: 0x0396,     #  GREEK CAPITAL LETTER ZETA
-    0x0086: 0x0397,     #  GREEK CAPITAL LETTER ETA
-    0x0087: 0x0398,     #  GREEK CAPITAL LETTER THETA
-    0x0088: 0x0399,     #  GREEK CAPITAL LETTER IOTA
-    0x0089: 0x039a,     #  GREEK CAPITAL LETTER KAPPA
-    0x008a: 0x039b,     #  GREEK CAPITAL LETTER LAMDA
-    0x008b: 0x039c,     #  GREEK CAPITAL LETTER MU
-    0x008c: 0x039d,     #  GREEK CAPITAL LETTER NU
-    0x008d: 0x039e,     #  GREEK CAPITAL LETTER XI
-    0x008e: 0x039f,     #  GREEK CAPITAL LETTER OMICRON
-    0x008f: 0x03a0,     #  GREEK CAPITAL LETTER PI
-    0x0090: 0x03a1,     #  GREEK CAPITAL LETTER RHO
-    0x0091: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
-    0x0092: 0x03a4,     #  GREEK CAPITAL LETTER TAU
-    0x0093: 0x03a5,     #  GREEK CAPITAL LETTER UPSILON
-    0x0094: 0x03a6,     #  GREEK CAPITAL LETTER PHI
-    0x0095: 0x03a7,     #  GREEK CAPITAL LETTER CHI
-    0x0096: 0x03a8,     #  GREEK CAPITAL LETTER PSI
-    0x0097: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
-    0x0098: 0x03b1,     #  GREEK SMALL LETTER ALPHA
-    0x0099: 0x03b2,     #  GREEK SMALL LETTER BETA
-    0x009a: 0x03b3,     #  GREEK SMALL LETTER GAMMA
-    0x009b: 0x03b4,     #  GREEK SMALL LETTER DELTA
-    0x009c: 0x03b5,     #  GREEK SMALL LETTER EPSILON
-    0x009d: 0x03b6,     #  GREEK SMALL LETTER ZETA
-    0x009e: 0x03b7,     #  GREEK SMALL LETTER ETA
-    0x009f: 0x03b8,     #  GREEK SMALL LETTER THETA
-    0x00a0: 0x03b9,     #  GREEK SMALL LETTER IOTA
-    0x00a1: 0x03ba,     #  GREEK SMALL LETTER KAPPA
-    0x00a2: 0x03bb,     #  GREEK SMALL LETTER LAMDA
-    0x00a3: 0x03bc,     #  GREEK SMALL LETTER MU
-    0x00a4: 0x03bd,     #  GREEK SMALL LETTER NU
-    0x00a5: 0x03be,     #  GREEK SMALL LETTER XI
-    0x00a6: 0x03bf,     #  GREEK SMALL LETTER OMICRON
-    0x00a7: 0x03c0,     #  GREEK SMALL LETTER PI
-    0x00a8: 0x03c1,     #  GREEK SMALL LETTER RHO
-    0x00a9: 0x03c3,     #  GREEK SMALL LETTER SIGMA
-    0x00aa: 0x03c2,     #  GREEK SMALL LETTER FINAL SIGMA
-    0x00ab: 0x03c4,     #  GREEK SMALL LETTER TAU
-    0x00ac: 0x03c5,     #  GREEK SMALL LETTER UPSILON
-    0x00ad: 0x03c6,     #  GREEK SMALL LETTER PHI
-    0x00ae: 0x03c7,     #  GREEK SMALL LETTER CHI
-    0x00af: 0x03c8,     #  GREEK SMALL LETTER PSI
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x258c,     #  LEFT HALF BLOCK
-    0x00de: 0x2590,     #  RIGHT HALF BLOCK
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x03c9,     #  GREEK SMALL LETTER OMEGA
-    0x00e1: 0x03ac,     #  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x00e2: 0x03ad,     #  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x00e3: 0x03ae,     #  GREEK SMALL LETTER ETA WITH TONOS
-    0x00e4: 0x03ca,     #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x00e5: 0x03af,     #  GREEK SMALL LETTER IOTA WITH TONOS
-    0x00e6: 0x03cc,     #  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x00e7: 0x03cd,     #  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x00e8: 0x03cb,     #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x00e9: 0x03ce,     #  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x00ea: 0x0386,     #  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x00eb: 0x0388,     #  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x00ec: 0x0389,     #  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x00ed: 0x038a,     #  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x00ee: 0x038c,     #  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x00ef: 0x038e,     #  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x00f0: 0x038f,     #  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
-    0x00f2: 0x2265,     #  GREATER-THAN OR EQUAL TO
-    0x00f3: 0x2264,     #  LESS-THAN OR EQUAL TO
-    0x00f4: 0x03aa,     #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x00f5: 0x03ab,     #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x00f6: 0x00f7,     #  DIVISION SIGN
-    0x00f7: 0x2248,     #  ALMOST EQUAL TO
-    0x00f8: 0x00b0,     #  DEGREE SIGN
-    0x00f9: 0x2219,     #  BULLET OPERATOR
-    0x00fa: 0x00b7,     #  MIDDLE DOT
-    0x00fb: 0x221a,     #  SQUARE ROOT
-    0x00fc: 0x207f,     #  SUPERSCRIPT LATIN SMALL LETTER N
-    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\u0391'   #  0x0080 -> GREEK CAPITAL LETTER ALPHA
-    u'\u0392'   #  0x0081 -> GREEK CAPITAL LETTER BETA
-    u'\u0393'   #  0x0082 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'   #  0x0083 -> GREEK CAPITAL LETTER DELTA
-    u'\u0395'   #  0x0084 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'   #  0x0085 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'   #  0x0086 -> GREEK CAPITAL LETTER ETA
-    u'\u0398'   #  0x0087 -> GREEK CAPITAL LETTER THETA
-    u'\u0399'   #  0x0088 -> GREEK CAPITAL LETTER IOTA
-    u'\u039a'   #  0x0089 -> GREEK CAPITAL LETTER KAPPA
-    u'\u039b'   #  0x008a -> GREEK CAPITAL LETTER LAMDA
-    u'\u039c'   #  0x008b -> GREEK CAPITAL LETTER MU
-    u'\u039d'   #  0x008c -> GREEK CAPITAL LETTER NU
-    u'\u039e'   #  0x008d -> GREEK CAPITAL LETTER XI
-    u'\u039f'   #  0x008e -> GREEK CAPITAL LETTER OMICRON
-    u'\u03a0'   #  0x008f -> GREEK CAPITAL LETTER PI
-    u'\u03a1'   #  0x0090 -> GREEK CAPITAL LETTER RHO
-    u'\u03a3'   #  0x0091 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03a4'   #  0x0092 -> GREEK CAPITAL LETTER TAU
-    u'\u03a5'   #  0x0093 -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a6'   #  0x0094 -> GREEK CAPITAL LETTER PHI
-    u'\u03a7'   #  0x0095 -> GREEK CAPITAL LETTER CHI
-    u'\u03a8'   #  0x0096 -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'   #  0x0097 -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b1'   #  0x0098 -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'   #  0x0099 -> GREEK SMALL LETTER BETA
-    u'\u03b3'   #  0x009a -> GREEK SMALL LETTER GAMMA
-    u'\u03b4'   #  0x009b -> GREEK SMALL LETTER DELTA
-    u'\u03b5'   #  0x009c -> GREEK SMALL LETTER EPSILON
-    u'\u03b6'   #  0x009d -> GREEK SMALL LETTER ZETA
-    u'\u03b7'   #  0x009e -> GREEK SMALL LETTER ETA
-    u'\u03b8'   #  0x009f -> GREEK SMALL LETTER THETA
-    u'\u03b9'   #  0x00a0 -> GREEK SMALL LETTER IOTA
-    u'\u03ba'   #  0x00a1 -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'   #  0x00a2 -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'   #  0x00a3 -> GREEK SMALL LETTER MU
-    u'\u03bd'   #  0x00a4 -> GREEK SMALL LETTER NU
-    u'\u03be'   #  0x00a5 -> GREEK SMALL LETTER XI
-    u'\u03bf'   #  0x00a6 -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'   #  0x00a7 -> GREEK SMALL LETTER PI
-    u'\u03c1'   #  0x00a8 -> GREEK SMALL LETTER RHO
-    u'\u03c3'   #  0x00a9 -> GREEK SMALL LETTER SIGMA
-    u'\u03c2'   #  0x00aa -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c4'   #  0x00ab -> GREEK SMALL LETTER TAU
-    u'\u03c5'   #  0x00ac -> GREEK SMALL LETTER UPSILON
-    u'\u03c6'   #  0x00ad -> GREEK SMALL LETTER PHI
-    u'\u03c7'   #  0x00ae -> GREEK SMALL LETTER CHI
-    u'\u03c8'   #  0x00af -> GREEK SMALL LETTER PSI
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\u03c9'   #  0x00e0 -> GREEK SMALL LETTER OMEGA
-    u'\u03ac'   #  0x00e1 -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\u03ad'   #  0x00e2 -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'   #  0x00e3 -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03ca'   #  0x00e4 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u03af'   #  0x00e5 -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03cc'   #  0x00e6 -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u03cd'   #  0x00e7 -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u03cb'   #  0x00e8 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u03ce'   #  0x00e9 -> GREEK SMALL LETTER OMEGA WITH TONOS
-    u'\u0386'   #  0x00ea -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\u0388'   #  0x00eb -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u0389'   #  0x00ec -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\u038a'   #  0x00ed -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\u038c'   #  0x00ee -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\u038e'   #  0x00ef -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u038f'   #  0x00f0 -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2265'   #  0x00f2 -> GREATER-THAN OR EQUAL TO
-    u'\u2264'   #  0x00f3 -> LESS-THAN OR EQUAL TO
-    u'\u03aa'   #  0x00f4 -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\u03ab'   #  0x00f5 -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'\xf7'     #  0x00f6 -> DIVISION SIGN
-    u'\u2248'   #  0x00f7 -> ALMOST EQUAL TO
-    u'\xb0'     #  0x00f8 -> DEGREE SIGN
-    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
-    u'\xb7'     #  0x00fa -> MIDDLE DOT
-    u'\u221a'   #  0x00fb -> SQUARE ROOT
-    u'\u207f'   #  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00b0: 0x00f8,     #  DEGREE SIGN
-    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
-    0x00b7: 0x00fa,     #  MIDDLE DOT
-    0x00f7: 0x00f6,     #  DIVISION SIGN
-    0x0386: 0x00ea,     #  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x0388: 0x00eb,     #  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x0389: 0x00ec,     #  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x038a: 0x00ed,     #  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x038c: 0x00ee,     #  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x038e: 0x00ef,     #  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x038f: 0x00f0,     #  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x0391: 0x0080,     #  GREEK CAPITAL LETTER ALPHA
-    0x0392: 0x0081,     #  GREEK CAPITAL LETTER BETA
-    0x0393: 0x0082,     #  GREEK CAPITAL LETTER GAMMA
-    0x0394: 0x0083,     #  GREEK CAPITAL LETTER DELTA
-    0x0395: 0x0084,     #  GREEK CAPITAL LETTER EPSILON
-    0x0396: 0x0085,     #  GREEK CAPITAL LETTER ZETA
-    0x0397: 0x0086,     #  GREEK CAPITAL LETTER ETA
-    0x0398: 0x0087,     #  GREEK CAPITAL LETTER THETA
-    0x0399: 0x0088,     #  GREEK CAPITAL LETTER IOTA
-    0x039a: 0x0089,     #  GREEK CAPITAL LETTER KAPPA
-    0x039b: 0x008a,     #  GREEK CAPITAL LETTER LAMDA
-    0x039c: 0x008b,     #  GREEK CAPITAL LETTER MU
-    0x039d: 0x008c,     #  GREEK CAPITAL LETTER NU
-    0x039e: 0x008d,     #  GREEK CAPITAL LETTER XI
-    0x039f: 0x008e,     #  GREEK CAPITAL LETTER OMICRON
-    0x03a0: 0x008f,     #  GREEK CAPITAL LETTER PI
-    0x03a1: 0x0090,     #  GREEK CAPITAL LETTER RHO
-    0x03a3: 0x0091,     #  GREEK CAPITAL LETTER SIGMA
-    0x03a4: 0x0092,     #  GREEK CAPITAL LETTER TAU
-    0x03a5: 0x0093,     #  GREEK CAPITAL LETTER UPSILON
-    0x03a6: 0x0094,     #  GREEK CAPITAL LETTER PHI
-    0x03a7: 0x0095,     #  GREEK CAPITAL LETTER CHI
-    0x03a8: 0x0096,     #  GREEK CAPITAL LETTER PSI
-    0x03a9: 0x0097,     #  GREEK CAPITAL LETTER OMEGA
-    0x03aa: 0x00f4,     #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x03ab: 0x00f5,     #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x03ac: 0x00e1,     #  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x03ad: 0x00e2,     #  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x03ae: 0x00e3,     #  GREEK SMALL LETTER ETA WITH TONOS
-    0x03af: 0x00e5,     #  GREEK SMALL LETTER IOTA WITH TONOS
-    0x03b1: 0x0098,     #  GREEK SMALL LETTER ALPHA
-    0x03b2: 0x0099,     #  GREEK SMALL LETTER BETA
-    0x03b3: 0x009a,     #  GREEK SMALL LETTER GAMMA
-    0x03b4: 0x009b,     #  GREEK SMALL LETTER DELTA
-    0x03b5: 0x009c,     #  GREEK SMALL LETTER EPSILON
-    0x03b6: 0x009d,     #  GREEK SMALL LETTER ZETA
-    0x03b7: 0x009e,     #  GREEK SMALL LETTER ETA
-    0x03b8: 0x009f,     #  GREEK SMALL LETTER THETA
-    0x03b9: 0x00a0,     #  GREEK SMALL LETTER IOTA
-    0x03ba: 0x00a1,     #  GREEK SMALL LETTER KAPPA
-    0x03bb: 0x00a2,     #  GREEK SMALL LETTER LAMDA
-    0x03bc: 0x00a3,     #  GREEK SMALL LETTER MU
-    0x03bd: 0x00a4,     #  GREEK SMALL LETTER NU
-    0x03be: 0x00a5,     #  GREEK SMALL LETTER XI
-    0x03bf: 0x00a6,     #  GREEK SMALL LETTER OMICRON
-    0x03c0: 0x00a7,     #  GREEK SMALL LETTER PI
-    0x03c1: 0x00a8,     #  GREEK SMALL LETTER RHO
-    0x03c2: 0x00aa,     #  GREEK SMALL LETTER FINAL SIGMA
-    0x03c3: 0x00a9,     #  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00ab,     #  GREEK SMALL LETTER TAU
-    0x03c5: 0x00ac,     #  GREEK SMALL LETTER UPSILON
-    0x03c6: 0x00ad,     #  GREEK SMALL LETTER PHI
-    0x03c7: 0x00ae,     #  GREEK SMALL LETTER CHI
-    0x03c8: 0x00af,     #  GREEK SMALL LETTER PSI
-    0x03c9: 0x00e0,     #  GREEK SMALL LETTER OMEGA
-    0x03ca: 0x00e4,     #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x03cb: 0x00e8,     #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x03cc: 0x00e6,     #  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x03cd: 0x00e7,     #  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x03ce: 0x00e9,     #  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x207f: 0x00fc,     #  SUPERSCRIPT LATIN SMALL LETTER N
-    0x2219: 0x00f9,     #  BULLET OPERATOR
-    0x221a: 0x00fb,     #  SQUARE ROOT
-    0x2248: 0x00f7,     #  ALMOST EQUAL TO
-    0x2264: 0x00f3,     #  LESS-THAN OR EQUAL TO
-    0x2265: 0x00f2,     #  GREATER-THAN OR EQUAL TO
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x258c: 0x00dd,     #  LEFT HALF BLOCK
-    0x2590: 0x00de,     #  RIGHT HALF BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp775.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp775.py
deleted file mode 100644
index eadb989..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp775.py
+++ /dev/null
@@ -1,697 +0,0 @@
-""" Python Character Mapping Codec cp775 generated from 'VENDORS/MICSFT/PC/CP775.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp775',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x0106,     #  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x0101,     #  LATIN SMALL LETTER A WITH MACRON
-    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x0123,     #  LATIN SMALL LETTER G WITH CEDILLA
-    0x0086: 0x00e5,     #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x0087: 0x0107,     #  LATIN SMALL LETTER C WITH ACUTE
-    0x0088: 0x0142,     #  LATIN SMALL LETTER L WITH STROKE
-    0x0089: 0x0113,     #  LATIN SMALL LETTER E WITH MACRON
-    0x008a: 0x0156,     #  LATIN CAPITAL LETTER R WITH CEDILLA
-    0x008b: 0x0157,     #  LATIN SMALL LETTER R WITH CEDILLA
-    0x008c: 0x012b,     #  LATIN SMALL LETTER I WITH MACRON
-    0x008d: 0x0179,     #  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x00c5,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00e6,     #  LATIN SMALL LIGATURE AE
-    0x0092: 0x00c6,     #  LATIN CAPITAL LIGATURE AE
-    0x0093: 0x014d,     #  LATIN SMALL LETTER O WITH MACRON
-    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x0122,     #  LATIN CAPITAL LETTER G WITH CEDILLA
-    0x0096: 0x00a2,     #  CENT SIGN
-    0x0097: 0x015a,     #  LATIN CAPITAL LETTER S WITH ACUTE
-    0x0098: 0x015b,     #  LATIN SMALL LETTER S WITH ACUTE
-    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00f8,     #  LATIN SMALL LETTER O WITH STROKE
-    0x009c: 0x00a3,     #  POUND SIGN
-    0x009d: 0x00d8,     #  LATIN CAPITAL LETTER O WITH STROKE
-    0x009e: 0x00d7,     #  MULTIPLICATION SIGN
-    0x009f: 0x00a4,     #  CURRENCY SIGN
-    0x00a0: 0x0100,     #  LATIN CAPITAL LETTER A WITH MACRON
-    0x00a1: 0x012a,     #  LATIN CAPITAL LETTER I WITH MACRON
-    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x017b,     #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x00a4: 0x017c,     #  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x00a5: 0x017a,     #  LATIN SMALL LETTER Z WITH ACUTE
-    0x00a6: 0x201d,     #  RIGHT DOUBLE QUOTATION MARK
-    0x00a7: 0x00a6,     #  BROKEN BAR
-    0x00a8: 0x00a9,     #  COPYRIGHT SIGN
-    0x00a9: 0x00ae,     #  REGISTERED SIGN
-    0x00aa: 0x00ac,     #  NOT SIGN
-    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x0141,     #  LATIN CAPITAL LETTER L WITH STROKE
-    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x0104,     #  LATIN CAPITAL LETTER A WITH OGONEK
-    0x00b6: 0x010c,     #  LATIN CAPITAL LETTER C WITH CARON
-    0x00b7: 0x0118,     #  LATIN CAPITAL LETTER E WITH OGONEK
-    0x00b8: 0x0116,     #  LATIN CAPITAL LETTER E WITH DOT ABOVE
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x012e,     #  LATIN CAPITAL LETTER I WITH OGONEK
-    0x00be: 0x0160,     #  LATIN CAPITAL LETTER S WITH CARON
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x0172,     #  LATIN CAPITAL LETTER U WITH OGONEK
-    0x00c7: 0x016a,     #  LATIN CAPITAL LETTER U WITH MACRON
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x017d,     #  LATIN CAPITAL LETTER Z WITH CARON
-    0x00d0: 0x0105,     #  LATIN SMALL LETTER A WITH OGONEK
-    0x00d1: 0x010d,     #  LATIN SMALL LETTER C WITH CARON
-    0x00d2: 0x0119,     #  LATIN SMALL LETTER E WITH OGONEK
-    0x00d3: 0x0117,     #  LATIN SMALL LETTER E WITH DOT ABOVE
-    0x00d4: 0x012f,     #  LATIN SMALL LETTER I WITH OGONEK
-    0x00d5: 0x0161,     #  LATIN SMALL LETTER S WITH CARON
-    0x00d6: 0x0173,     #  LATIN SMALL LETTER U WITH OGONEK
-    0x00d7: 0x016b,     #  LATIN SMALL LETTER U WITH MACRON
-    0x00d8: 0x017e,     #  LATIN SMALL LETTER Z WITH CARON
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x258c,     #  LEFT HALF BLOCK
-    0x00de: 0x2590,     #  RIGHT HALF BLOCK
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x00d3,     #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00e2: 0x014c,     #  LATIN CAPITAL LETTER O WITH MACRON
-    0x00e3: 0x0143,     #  LATIN CAPITAL LETTER N WITH ACUTE
-    0x00e4: 0x00f5,     #  LATIN SMALL LETTER O WITH TILDE
-    0x00e5: 0x00d5,     #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00e6: 0x00b5,     #  MICRO SIGN
-    0x00e7: 0x0144,     #  LATIN SMALL LETTER N WITH ACUTE
-    0x00e8: 0x0136,     #  LATIN CAPITAL LETTER K WITH CEDILLA
-    0x00e9: 0x0137,     #  LATIN SMALL LETTER K WITH CEDILLA
-    0x00ea: 0x013b,     #  LATIN CAPITAL LETTER L WITH CEDILLA
-    0x00eb: 0x013c,     #  LATIN SMALL LETTER L WITH CEDILLA
-    0x00ec: 0x0146,     #  LATIN SMALL LETTER N WITH CEDILLA
-    0x00ed: 0x0112,     #  LATIN CAPITAL LETTER E WITH MACRON
-    0x00ee: 0x0145,     #  LATIN CAPITAL LETTER N WITH CEDILLA
-    0x00ef: 0x2019,     #  RIGHT SINGLE QUOTATION MARK
-    0x00f0: 0x00ad,     #  SOFT HYPHEN
-    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
-    0x00f2: 0x201c,     #  LEFT DOUBLE QUOTATION MARK
-    0x00f3: 0x00be,     #  VULGAR FRACTION THREE QUARTERS
-    0x00f4: 0x00b6,     #  PILCROW SIGN
-    0x00f5: 0x00a7,     #  SECTION SIGN
-    0x00f6: 0x00f7,     #  DIVISION SIGN
-    0x00f7: 0x201e,     #  DOUBLE LOW-9 QUOTATION MARK
-    0x00f8: 0x00b0,     #  DEGREE SIGN
-    0x00f9: 0x2219,     #  BULLET OPERATOR
-    0x00fa: 0x00b7,     #  MIDDLE DOT
-    0x00fb: 0x00b9,     #  SUPERSCRIPT ONE
-    0x00fc: 0x00b3,     #  SUPERSCRIPT THREE
-    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\u0106'   #  0x0080 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0101'   #  0x0083 -> LATIN SMALL LETTER A WITH MACRON
-    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u0123'   #  0x0085 -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\xe5'     #  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\u0107'   #  0x0087 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\u0142'   #  0x0088 -> LATIN SMALL LETTER L WITH STROKE
-    u'\u0113'   #  0x0089 -> LATIN SMALL LETTER E WITH MACRON
-    u'\u0156'   #  0x008a -> LATIN CAPITAL LETTER R WITH CEDILLA
-    u'\u0157'   #  0x008b -> LATIN SMALL LETTER R WITH CEDILLA
-    u'\u012b'   #  0x008c -> LATIN SMALL LETTER I WITH MACRON
-    u'\u0179'   #  0x008d -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xe6'     #  0x0091 -> LATIN SMALL LIGATURE AE
-    u'\xc6'     #  0x0092 -> LATIN CAPITAL LIGATURE AE
-    u'\u014d'   #  0x0093 -> LATIN SMALL LETTER O WITH MACRON
-    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\u0122'   #  0x0095 -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\xa2'     #  0x0096 -> CENT SIGN
-    u'\u015a'   #  0x0097 -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u015b'   #  0x0098 -> LATIN SMALL LETTER S WITH ACUTE
-    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xf8'     #  0x009b -> LATIN SMALL LETTER O WITH STROKE
-    u'\xa3'     #  0x009c -> POUND SIGN
-    u'\xd8'     #  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd7'     #  0x009e -> MULTIPLICATION SIGN
-    u'\xa4'     #  0x009f -> CURRENCY SIGN
-    u'\u0100'   #  0x00a0 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\u012a'   #  0x00a1 -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\u017b'   #  0x00a3 -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\u017c'   #  0x00a4 -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u017a'   #  0x00a5 -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u201d'   #  0x00a6 -> RIGHT DOUBLE QUOTATION MARK
-    u'\xa6'     #  0x00a7 -> BROKEN BAR
-    u'\xa9'     #  0x00a8 -> COPYRIGHT SIGN
-    u'\xae'     #  0x00a9 -> REGISTERED SIGN
-    u'\xac'     #  0x00aa -> NOT SIGN
-    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\u0141'   #  0x00ad -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u0104'   #  0x00b5 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u010c'   #  0x00b6 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\u0118'   #  0x00b7 -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\u0116'   #  0x00b8 -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u012e'   #  0x00bd -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u0160'   #  0x00be -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u0172'   #  0x00c6 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\u016a'   #  0x00c7 -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u017d'   #  0x00cf -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u0105'   #  0x00d0 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u010d'   #  0x00d1 -> LATIN SMALL LETTER C WITH CARON
-    u'\u0119'   #  0x00d2 -> LATIN SMALL LETTER E WITH OGONEK
-    u'\u0117'   #  0x00d3 -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\u012f'   #  0x00d4 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u0161'   #  0x00d5 -> LATIN SMALL LETTER S WITH CARON
-    u'\u0173'   #  0x00d6 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\u016b'   #  0x00d7 -> LATIN SMALL LETTER U WITH MACRON
-    u'\u017e'   #  0x00d8 -> LATIN SMALL LETTER Z WITH CARON
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\xd3'     #  0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u'\u014c'   #  0x00e2 -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\u0143'   #  0x00e3 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\xf5'     #  0x00e4 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xd5'     #  0x00e5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xb5'     #  0x00e6 -> MICRO SIGN
-    u'\u0144'   #  0x00e7 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0136'   #  0x00e8 -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\u0137'   #  0x00e9 -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\u013b'   #  0x00ea -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\u013c'   #  0x00eb -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u0146'   #  0x00ec -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\u0112'   #  0x00ed -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u0145'   #  0x00ee -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\u2019'   #  0x00ef -> RIGHT SINGLE QUOTATION MARK
-    u'\xad'     #  0x00f0 -> SOFT HYPHEN
-    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
-    u'\u201c'   #  0x00f2 -> LEFT DOUBLE QUOTATION MARK
-    u'\xbe'     #  0x00f3 -> VULGAR FRACTION THREE QUARTERS
-    u'\xb6'     #  0x00f4 -> PILCROW SIGN
-    u'\xa7'     #  0x00f5 -> SECTION SIGN
-    u'\xf7'     #  0x00f6 -> DIVISION SIGN
-    u'\u201e'   #  0x00f7 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\xb0'     #  0x00f8 -> DEGREE SIGN
-    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
-    u'\xb7'     #  0x00fa -> MIDDLE DOT
-    u'\xb9'     #  0x00fb -> SUPERSCRIPT ONE
-    u'\xb3'     #  0x00fc -> SUPERSCRIPT THREE
-    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00a2: 0x0096,     #  CENT SIGN
-    0x00a3: 0x009c,     #  POUND SIGN
-    0x00a4: 0x009f,     #  CURRENCY SIGN
-    0x00a6: 0x00a7,     #  BROKEN BAR
-    0x00a7: 0x00f5,     #  SECTION SIGN
-    0x00a9: 0x00a8,     #  COPYRIGHT SIGN
-    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,     #  NOT SIGN
-    0x00ad: 0x00f0,     #  SOFT HYPHEN
-    0x00ae: 0x00a9,     #  REGISTERED SIGN
-    0x00b0: 0x00f8,     #  DEGREE SIGN
-    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
-    0x00b3: 0x00fc,     #  SUPERSCRIPT THREE
-    0x00b5: 0x00e6,     #  MICRO SIGN
-    0x00b6: 0x00f4,     #  PILCROW SIGN
-    0x00b7: 0x00fa,     #  MIDDLE DOT
-    0x00b9: 0x00fb,     #  SUPERSCRIPT ONE
-    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
-    0x00be: 0x00f3,     #  VULGAR FRACTION THREE QUARTERS
-    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x008f,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x0092,     #  LATIN CAPITAL LIGATURE AE
-    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00d3: 0x00e0,     #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d5: 0x00e5,     #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0x009e,     #  MULTIPLICATION SIGN
-    0x00d8: 0x009d,     #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x0086,     #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x0091,     #  LATIN SMALL LIGATURE AE
-    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f5: 0x00e4,     #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,     #  DIVISION SIGN
-    0x00f8: 0x009b,     #  LATIN SMALL LETTER O WITH STROKE
-    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0100: 0x00a0,     #  LATIN CAPITAL LETTER A WITH MACRON
-    0x0101: 0x0083,     #  LATIN SMALL LETTER A WITH MACRON
-    0x0104: 0x00b5,     #  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0x00d0,     #  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0x0080,     #  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0x0087,     #  LATIN SMALL LETTER C WITH ACUTE
-    0x010c: 0x00b6,     #  LATIN CAPITAL LETTER C WITH CARON
-    0x010d: 0x00d1,     #  LATIN SMALL LETTER C WITH CARON
-    0x0112: 0x00ed,     #  LATIN CAPITAL LETTER E WITH MACRON
-    0x0113: 0x0089,     #  LATIN SMALL LETTER E WITH MACRON
-    0x0116: 0x00b8,     #  LATIN CAPITAL LETTER E WITH DOT ABOVE
-    0x0117: 0x00d3,     #  LATIN SMALL LETTER E WITH DOT ABOVE
-    0x0118: 0x00b7,     #  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0x00d2,     #  LATIN SMALL LETTER E WITH OGONEK
-    0x0122: 0x0095,     #  LATIN CAPITAL LETTER G WITH CEDILLA
-    0x0123: 0x0085,     #  LATIN SMALL LETTER G WITH CEDILLA
-    0x012a: 0x00a1,     #  LATIN CAPITAL LETTER I WITH MACRON
-    0x012b: 0x008c,     #  LATIN SMALL LETTER I WITH MACRON
-    0x012e: 0x00bd,     #  LATIN CAPITAL LETTER I WITH OGONEK
-    0x012f: 0x00d4,     #  LATIN SMALL LETTER I WITH OGONEK
-    0x0136: 0x00e8,     #  LATIN CAPITAL LETTER K WITH CEDILLA
-    0x0137: 0x00e9,     #  LATIN SMALL LETTER K WITH CEDILLA
-    0x013b: 0x00ea,     #  LATIN CAPITAL LETTER L WITH CEDILLA
-    0x013c: 0x00eb,     #  LATIN SMALL LETTER L WITH CEDILLA
-    0x0141: 0x00ad,     #  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0x0088,     #  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0x00e3,     #  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0x00e7,     #  LATIN SMALL LETTER N WITH ACUTE
-    0x0145: 0x00ee,     #  LATIN CAPITAL LETTER N WITH CEDILLA
-    0x0146: 0x00ec,     #  LATIN SMALL LETTER N WITH CEDILLA
-    0x014c: 0x00e2,     #  LATIN CAPITAL LETTER O WITH MACRON
-    0x014d: 0x0093,     #  LATIN SMALL LETTER O WITH MACRON
-    0x0156: 0x008a,     #  LATIN CAPITAL LETTER R WITH CEDILLA
-    0x0157: 0x008b,     #  LATIN SMALL LETTER R WITH CEDILLA
-    0x015a: 0x0097,     #  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015b: 0x0098,     #  LATIN SMALL LETTER S WITH ACUTE
-    0x0160: 0x00be,     #  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0x00d5,     #  LATIN SMALL LETTER S WITH CARON
-    0x016a: 0x00c7,     #  LATIN CAPITAL LETTER U WITH MACRON
-    0x016b: 0x00d7,     #  LATIN SMALL LETTER U WITH MACRON
-    0x0172: 0x00c6,     #  LATIN CAPITAL LETTER U WITH OGONEK
-    0x0173: 0x00d6,     #  LATIN SMALL LETTER U WITH OGONEK
-    0x0179: 0x008d,     #  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017a: 0x00a5,     #  LATIN SMALL LETTER Z WITH ACUTE
-    0x017b: 0x00a3,     #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017c: 0x00a4,     #  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017d: 0x00cf,     #  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0x00d8,     #  LATIN SMALL LETTER Z WITH CARON
-    0x2019: 0x00ef,     #  RIGHT SINGLE QUOTATION MARK
-    0x201c: 0x00f2,     #  LEFT DOUBLE QUOTATION MARK
-    0x201d: 0x00a6,     #  RIGHT DOUBLE QUOTATION MARK
-    0x201e: 0x00f7,     #  DOUBLE LOW-9 QUOTATION MARK
-    0x2219: 0x00f9,     #  BULLET OPERATOR
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x258c: 0x00dd,     #  LEFT HALF BLOCK
-    0x2590: 0x00de,     #  RIGHT HALF BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp850.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp850.py
deleted file mode 100644
index b110f4e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp850.py
+++ /dev/null
@@ -1,698 +0,0 @@
-""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP850.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp850',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00e5,     #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00ef,     #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x008c: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x008d: 0x00ec,     #  LATIN SMALL LETTER I WITH GRAVE
-    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x00c5,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00e6,     #  LATIN SMALL LIGATURE AE
-    0x0092: 0x00c6,     #  LATIN CAPITAL LIGATURE AE
-    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x00f2,     #  LATIN SMALL LETTER O WITH GRAVE
-    0x0096: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x0097: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x0098: 0x00ff,     #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00f8,     #  LATIN SMALL LETTER O WITH STROKE
-    0x009c: 0x00a3,     #  POUND SIGN
-    0x009d: 0x00d8,     #  LATIN CAPITAL LETTER O WITH STROKE
-    0x009e: 0x00d7,     #  MULTIPLICATION SIGN
-    0x009f: 0x0192,     #  LATIN SMALL LETTER F WITH HOOK
-    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00a5: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00a6: 0x00aa,     #  FEMININE ORDINAL INDICATOR
-    0x00a7: 0x00ba,     #  MASCULINE ORDINAL INDICATOR
-    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
-    0x00a9: 0x00ae,     #  REGISTERED SIGN
-    0x00aa: 0x00ac,     #  NOT SIGN
-    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x00c1,     #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00b6: 0x00c2,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00b7: 0x00c0,     #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00b8: 0x00a9,     #  COPYRIGHT SIGN
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x00a2,     #  CENT SIGN
-    0x00be: 0x00a5,     #  YEN SIGN
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x00e3,     #  LATIN SMALL LETTER A WITH TILDE
-    0x00c7: 0x00c3,     #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x00a4,     #  CURRENCY SIGN
-    0x00d0: 0x00f0,     #  LATIN SMALL LETTER ETH
-    0x00d1: 0x00d0,     #  LATIN CAPITAL LETTER ETH
-    0x00d2: 0x00ca,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00d3: 0x00cb,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00d4: 0x00c8,     #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00d5: 0x0131,     #  LATIN SMALL LETTER DOTLESS I
-    0x00d6: 0x00cd,     #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00d7: 0x00ce,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00d8: 0x00cf,     #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x00a6,     #  BROKEN BAR
-    0x00de: 0x00cc,     #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x00d3,     #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x00d4,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00e3: 0x00d2,     #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00e4: 0x00f5,     #  LATIN SMALL LETTER O WITH TILDE
-    0x00e5: 0x00d5,     #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00e6: 0x00b5,     #  MICRO SIGN
-    0x00e7: 0x00fe,     #  LATIN SMALL LETTER THORN
-    0x00e8: 0x00de,     #  LATIN CAPITAL LETTER THORN
-    0x00e9: 0x00da,     #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00ea: 0x00db,     #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00eb: 0x00d9,     #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00ec: 0x00fd,     #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00ed: 0x00dd,     #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00ee: 0x00af,     #  MACRON
-    0x00ef: 0x00b4,     #  ACUTE ACCENT
-    0x00f0: 0x00ad,     #  SOFT HYPHEN
-    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
-    0x00f2: 0x2017,     #  DOUBLE LOW LINE
-    0x00f3: 0x00be,     #  VULGAR FRACTION THREE QUARTERS
-    0x00f4: 0x00b6,     #  PILCROW SIGN
-    0x00f5: 0x00a7,     #  SECTION SIGN
-    0x00f6: 0x00f7,     #  DIVISION SIGN
-    0x00f7: 0x00b8,     #  CEDILLA
-    0x00f8: 0x00b0,     #  DEGREE SIGN
-    0x00f9: 0x00a8,     #  DIAERESIS
-    0x00fa: 0x00b7,     #  MIDDLE DOT
-    0x00fb: 0x00b9,     #  SUPERSCRIPT ONE
-    0x00fc: 0x00b3,     #  SUPERSCRIPT THREE
-    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe5'     #  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xef'     #  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xee'     #  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xec'     #  0x008d -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xe6'     #  0x0091 -> LATIN SMALL LIGATURE AE
-    u'\xc6'     #  0x0092 -> LATIN CAPITAL LIGATURE AE
-    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'     #  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xfb'     #  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xf9'     #  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xff'     #  0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xf8'     #  0x009b -> LATIN SMALL LETTER O WITH STROKE
-    u'\xa3'     #  0x009c -> POUND SIGN
-    u'\xd8'     #  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd7'     #  0x009e -> MULTIPLICATION SIGN
-    u'\u0192'   #  0x009f -> LATIN SMALL LETTER F WITH HOOK
-    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf1'     #  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xd1'     #  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xaa'     #  0x00a6 -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0x00a7 -> MASCULINE ORDINAL INDICATOR
-    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
-    u'\xae'     #  0x00a9 -> REGISTERED SIGN
-    u'\xac'     #  0x00aa -> NOT SIGN
-    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\xc1'     #  0x00b5 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0x00b6 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc0'     #  0x00b7 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xa9'     #  0x00b8 -> COPYRIGHT SIGN
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\xa2'     #  0x00bd -> CENT SIGN
-    u'\xa5'     #  0x00be -> YEN SIGN
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\xe3'     #  0x00c6 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xc3'     #  0x00c7 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa4'     #  0x00cf -> CURRENCY SIGN
-    u'\xf0'     #  0x00d0 -> LATIN SMALL LETTER ETH
-    u'\xd0'     #  0x00d1 -> LATIN CAPITAL LETTER ETH
-    u'\xca'     #  0x00d2 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0x00d3 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'     #  0x00d4 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\u0131'   #  0x00d5 -> LATIN SMALL LETTER DOTLESS I
-    u'\xcd'     #  0x00d6 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0x00d7 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0x00d8 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\xa6'     #  0x00dd -> BROKEN BAR
-    u'\xcc'     #  0x00de -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\xd3'     #  0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\xd4'     #  0x00e2 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd2'     #  0x00e3 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xf5'     #  0x00e4 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xd5'     #  0x00e5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xb5'     #  0x00e6 -> MICRO SIGN
-    u'\xfe'     #  0x00e7 -> LATIN SMALL LETTER THORN
-    u'\xde'     #  0x00e8 -> LATIN CAPITAL LETTER THORN
-    u'\xda'     #  0x00e9 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0x00ea -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'     #  0x00eb -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xfd'     #  0x00ec -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xdd'     #  0x00ed -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xaf'     #  0x00ee -> MACRON
-    u'\xb4'     #  0x00ef -> ACUTE ACCENT
-    u'\xad'     #  0x00f0 -> SOFT HYPHEN
-    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2017'   #  0x00f2 -> DOUBLE LOW LINE
-    u'\xbe'     #  0x00f3 -> VULGAR FRACTION THREE QUARTERS
-    u'\xb6'     #  0x00f4 -> PILCROW SIGN
-    u'\xa7'     #  0x00f5 -> SECTION SIGN
-    u'\xf7'     #  0x00f6 -> DIVISION SIGN
-    u'\xb8'     #  0x00f7 -> CEDILLA
-    u'\xb0'     #  0x00f8 -> DEGREE SIGN
-    u'\xa8'     #  0x00f9 -> DIAERESIS
-    u'\xb7'     #  0x00fa -> MIDDLE DOT
-    u'\xb9'     #  0x00fb -> SUPERSCRIPT ONE
-    u'\xb3'     #  0x00fc -> SUPERSCRIPT THREE
-    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
-    0x00a2: 0x00bd,     #  CENT SIGN
-    0x00a3: 0x009c,     #  POUND SIGN
-    0x00a4: 0x00cf,     #  CURRENCY SIGN
-    0x00a5: 0x00be,     #  YEN SIGN
-    0x00a6: 0x00dd,     #  BROKEN BAR
-    0x00a7: 0x00f5,     #  SECTION SIGN
-    0x00a8: 0x00f9,     #  DIAERESIS
-    0x00a9: 0x00b8,     #  COPYRIGHT SIGN
-    0x00aa: 0x00a6,     #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,     #  NOT SIGN
-    0x00ad: 0x00f0,     #  SOFT HYPHEN
-    0x00ae: 0x00a9,     #  REGISTERED SIGN
-    0x00af: 0x00ee,     #  MACRON
-    0x00b0: 0x00f8,     #  DEGREE SIGN
-    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
-    0x00b3: 0x00fc,     #  SUPERSCRIPT THREE
-    0x00b4: 0x00ef,     #  ACUTE ACCENT
-    0x00b5: 0x00e6,     #  MICRO SIGN
-    0x00b6: 0x00f4,     #  PILCROW SIGN
-    0x00b7: 0x00fa,     #  MIDDLE DOT
-    0x00b8: 0x00f7,     #  CEDILLA
-    0x00b9: 0x00fb,     #  SUPERSCRIPT ONE
-    0x00ba: 0x00a7,     #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
-    0x00be: 0x00f3,     #  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
-    0x00c0: 0x00b7,     #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0x00b5,     #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0x00b6,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0x00c7,     #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x008f,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x0092,     #  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0x00d4,     #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0x00d2,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0x00d3,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0x00de,     #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0x00d6,     #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0x00d7,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0x00d8,     #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d0: 0x00d1,     #  LATIN CAPITAL LETTER ETH
-    0x00d1: 0x00a5,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0x00e3,     #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0x00e0,     #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0x00e2,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0x00e5,     #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0x009e,     #  MULTIPLICATION SIGN
-    0x00d8: 0x009d,     #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0x00eb,     #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0x00e9,     #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0x00ea,     #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0x00ed,     #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00de: 0x00e8,     #  LATIN CAPITAL LETTER THORN
-    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x00c6,     #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x0086,     #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x0091,     #  LATIN SMALL LIGATURE AE
-    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x008d,     #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x008c,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x008b,     #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f0: 0x00d0,     #  LATIN SMALL LETTER ETH
-    0x00f1: 0x00a4,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x0095,     #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0x00e4,     #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,     #  DIVISION SIGN
-    0x00f8: 0x009b,     #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0x0097,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x0096,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0x00ec,     #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00fe: 0x00e7,     #  LATIN SMALL LETTER THORN
-    0x00ff: 0x0098,     #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0131: 0x00d5,     #  LATIN SMALL LETTER DOTLESS I
-    0x0192: 0x009f,     #  LATIN SMALL LETTER F WITH HOOK
-    0x2017: 0x00f2,     #  DOUBLE LOW LINE
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp852.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp852.py
deleted file mode 100644
index c004282..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp852.py
+++ /dev/null
@@ -1,698 +0,0 @@
-""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP852.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp852',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x016f,     #  LATIN SMALL LETTER U WITH RING ABOVE
-    0x0086: 0x0107,     #  LATIN SMALL LETTER C WITH ACUTE
-    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x0142,     #  LATIN SMALL LETTER L WITH STROKE
-    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x0150,     #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    0x008b: 0x0151,     #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    0x008c: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x008d: 0x0179,     #  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x0106,     #  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x0139,     #  LATIN CAPITAL LETTER L WITH ACUTE
-    0x0092: 0x013a,     #  LATIN SMALL LETTER L WITH ACUTE
-    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x013d,     #  LATIN CAPITAL LETTER L WITH CARON
-    0x0096: 0x013e,     #  LATIN SMALL LETTER L WITH CARON
-    0x0097: 0x015a,     #  LATIN CAPITAL LETTER S WITH ACUTE
-    0x0098: 0x015b,     #  LATIN SMALL LETTER S WITH ACUTE
-    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x0164,     #  LATIN CAPITAL LETTER T WITH CARON
-    0x009c: 0x0165,     #  LATIN SMALL LETTER T WITH CARON
-    0x009d: 0x0141,     #  LATIN CAPITAL LETTER L WITH STROKE
-    0x009e: 0x00d7,     #  MULTIPLICATION SIGN
-    0x009f: 0x010d,     #  LATIN SMALL LETTER C WITH CARON
-    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x0104,     #  LATIN CAPITAL LETTER A WITH OGONEK
-    0x00a5: 0x0105,     #  LATIN SMALL LETTER A WITH OGONEK
-    0x00a6: 0x017d,     #  LATIN CAPITAL LETTER Z WITH CARON
-    0x00a7: 0x017e,     #  LATIN SMALL LETTER Z WITH CARON
-    0x00a8: 0x0118,     #  LATIN CAPITAL LETTER E WITH OGONEK
-    0x00a9: 0x0119,     #  LATIN SMALL LETTER E WITH OGONEK
-    0x00aa: 0x00ac,     #  NOT SIGN
-    0x00ab: 0x017a,     #  LATIN SMALL LETTER Z WITH ACUTE
-    0x00ac: 0x010c,     #  LATIN CAPITAL LETTER C WITH CARON
-    0x00ad: 0x015f,     #  LATIN SMALL LETTER S WITH CEDILLA
-    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x00c1,     #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00b6: 0x00c2,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00b7: 0x011a,     #  LATIN CAPITAL LETTER E WITH CARON
-    0x00b8: 0x015e,     #  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x017b,     #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x00be: 0x017c,     #  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x0102,     #  LATIN CAPITAL LETTER A WITH BREVE
-    0x00c7: 0x0103,     #  LATIN SMALL LETTER A WITH BREVE
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x00a4,     #  CURRENCY SIGN
-    0x00d0: 0x0111,     #  LATIN SMALL LETTER D WITH STROKE
-    0x00d1: 0x0110,     #  LATIN CAPITAL LETTER D WITH STROKE
-    0x00d2: 0x010e,     #  LATIN CAPITAL LETTER D WITH CARON
-    0x00d3: 0x00cb,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00d4: 0x010f,     #  LATIN SMALL LETTER D WITH CARON
-    0x00d5: 0x0147,     #  LATIN CAPITAL LETTER N WITH CARON
-    0x00d6: 0x00cd,     #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00d7: 0x00ce,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00d8: 0x011b,     #  LATIN SMALL LETTER E WITH CARON
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x0162,     #  LATIN CAPITAL LETTER T WITH CEDILLA
-    0x00de: 0x016e,     #  LATIN CAPITAL LETTER U WITH RING ABOVE
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x00d3,     #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x00d4,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00e3: 0x0143,     #  LATIN CAPITAL LETTER N WITH ACUTE
-    0x00e4: 0x0144,     #  LATIN SMALL LETTER N WITH ACUTE
-    0x00e5: 0x0148,     #  LATIN SMALL LETTER N WITH CARON
-    0x00e6: 0x0160,     #  LATIN CAPITAL LETTER S WITH CARON
-    0x00e7: 0x0161,     #  LATIN SMALL LETTER S WITH CARON
-    0x00e8: 0x0154,     #  LATIN CAPITAL LETTER R WITH ACUTE
-    0x00e9: 0x00da,     #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00ea: 0x0155,     #  LATIN SMALL LETTER R WITH ACUTE
-    0x00eb: 0x0170,     #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    0x00ec: 0x00fd,     #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00ed: 0x00dd,     #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00ee: 0x0163,     #  LATIN SMALL LETTER T WITH CEDILLA
-    0x00ef: 0x00b4,     #  ACUTE ACCENT
-    0x00f0: 0x00ad,     #  SOFT HYPHEN
-    0x00f1: 0x02dd,     #  DOUBLE ACUTE ACCENT
-    0x00f2: 0x02db,     #  OGONEK
-    0x00f3: 0x02c7,     #  CARON
-    0x00f4: 0x02d8,     #  BREVE
-    0x00f5: 0x00a7,     #  SECTION SIGN
-    0x00f6: 0x00f7,     #  DIVISION SIGN
-    0x00f7: 0x00b8,     #  CEDILLA
-    0x00f8: 0x00b0,     #  DEGREE SIGN
-    0x00f9: 0x00a8,     #  DIAERESIS
-    0x00fa: 0x02d9,     #  DOT ABOVE
-    0x00fb: 0x0171,     #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    0x00fc: 0x0158,     #  LATIN CAPITAL LETTER R WITH CARON
-    0x00fd: 0x0159,     #  LATIN SMALL LETTER R WITH CARON
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u016f'   #  0x0085 -> LATIN SMALL LETTER U WITH RING ABOVE
-    u'\u0107'   #  0x0086 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\u0142'   #  0x0088 -> LATIN SMALL LETTER L WITH STROKE
-    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u0150'   #  0x008a -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    u'\u0151'   #  0x008b -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    u'\xee'     #  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u0179'   #  0x008d -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u0106'   #  0x008f -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0139'   #  0x0091 -> LATIN CAPITAL LETTER L WITH ACUTE
-    u'\u013a'   #  0x0092 -> LATIN SMALL LETTER L WITH ACUTE
-    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\u013d'   #  0x0095 -> LATIN CAPITAL LETTER L WITH CARON
-    u'\u013e'   #  0x0096 -> LATIN SMALL LETTER L WITH CARON
-    u'\u015a'   #  0x0097 -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u015b'   #  0x0098 -> LATIN SMALL LETTER S WITH ACUTE
-    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0164'   #  0x009b -> LATIN CAPITAL LETTER T WITH CARON
-    u'\u0165'   #  0x009c -> LATIN SMALL LETTER T WITH CARON
-    u'\u0141'   #  0x009d -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\xd7'     #  0x009e -> MULTIPLICATION SIGN
-    u'\u010d'   #  0x009f -> LATIN SMALL LETTER C WITH CARON
-    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\u0104'   #  0x00a4 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u0105'   #  0x00a5 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u017d'   #  0x00a6 -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u017e'   #  0x00a7 -> LATIN SMALL LETTER Z WITH CARON
-    u'\u0118'   #  0x00a8 -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\u0119'   #  0x00a9 -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xac'     #  0x00aa -> NOT SIGN
-    u'\u017a'   #  0x00ab -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u010c'   #  0x00ac -> LATIN CAPITAL LETTER C WITH CARON
-    u'\u015f'   #  0x00ad -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\xc1'     #  0x00b5 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0x00b6 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u011a'   #  0x00b7 -> LATIN CAPITAL LETTER E WITH CARON
-    u'\u015e'   #  0x00b8 -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u017b'   #  0x00bd -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\u017c'   #  0x00be -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u0102'   #  0x00c6 -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\u0103'   #  0x00c7 -> LATIN SMALL LETTER A WITH BREVE
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa4'     #  0x00cf -> CURRENCY SIGN
-    u'\u0111'   #  0x00d0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0110'   #  0x00d1 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u010e'   #  0x00d2 -> LATIN CAPITAL LETTER D WITH CARON
-    u'\xcb'     #  0x00d3 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u010f'   #  0x00d4 -> LATIN SMALL LETTER D WITH CARON
-    u'\u0147'   #  0x00d5 -> LATIN CAPITAL LETTER N WITH CARON
-    u'\xcd'     #  0x00d6 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0x00d7 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\u011b'   #  0x00d8 -> LATIN SMALL LETTER E WITH CARON
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\u0162'   #  0x00dd -> LATIN CAPITAL LETTER T WITH CEDILLA
-    u'\u016e'   #  0x00de -> LATIN CAPITAL LETTER U WITH RING ABOVE
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\xd3'     #  0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\xd4'     #  0x00e2 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0143'   #  0x00e3 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\u0144'   #  0x00e4 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0148'   #  0x00e5 -> LATIN SMALL LETTER N WITH CARON
-    u'\u0160'   #  0x00e6 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u0161'   #  0x00e7 -> LATIN SMALL LETTER S WITH CARON
-    u'\u0154'   #  0x00e8 -> LATIN CAPITAL LETTER R WITH ACUTE
-    u'\xda'     #  0x00e9 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\u0155'   #  0x00ea -> LATIN SMALL LETTER R WITH ACUTE
-    u'\u0170'   #  0x00eb -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    u'\xfd'     #  0x00ec -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xdd'     #  0x00ed -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\u0163'   #  0x00ee -> LATIN SMALL LETTER T WITH CEDILLA
-    u'\xb4'     #  0x00ef -> ACUTE ACCENT
-    u'\xad'     #  0x00f0 -> SOFT HYPHEN
-    u'\u02dd'   #  0x00f1 -> DOUBLE ACUTE ACCENT
-    u'\u02db'   #  0x00f2 -> OGONEK
-    u'\u02c7'   #  0x00f3 -> CARON
-    u'\u02d8'   #  0x00f4 -> BREVE
-    u'\xa7'     #  0x00f5 -> SECTION SIGN
-    u'\xf7'     #  0x00f6 -> DIVISION SIGN
-    u'\xb8'     #  0x00f7 -> CEDILLA
-    u'\xb0'     #  0x00f8 -> DEGREE SIGN
-    u'\xa8'     #  0x00f9 -> DIAERESIS
-    u'\u02d9'   #  0x00fa -> DOT ABOVE
-    u'\u0171'   #  0x00fb -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    u'\u0158'   #  0x00fc -> LATIN CAPITAL LETTER R WITH CARON
-    u'\u0159'   #  0x00fd -> LATIN SMALL LETTER R WITH CARON
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00a4: 0x00cf,     #  CURRENCY SIGN
-    0x00a7: 0x00f5,     #  SECTION SIGN
-    0x00a8: 0x00f9,     #  DIAERESIS
-    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,     #  NOT SIGN
-    0x00ad: 0x00f0,     #  SOFT HYPHEN
-    0x00b0: 0x00f8,     #  DEGREE SIGN
-    0x00b4: 0x00ef,     #  ACUTE ACCENT
-    0x00b8: 0x00f7,     #  CEDILLA
-    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00c1: 0x00b5,     #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0x00b6,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00cb: 0x00d3,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cd: 0x00d6,     #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0x00d7,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00d3: 0x00e0,     #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0x00e2,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0x009e,     #  MULTIPLICATION SIGN
-    0x00da: 0x00e9,     #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0x00ed,     #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
-    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x008c,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,     #  DIVISION SIGN
-    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0x00ec,     #  LATIN SMALL LETTER Y WITH ACUTE
-    0x0102: 0x00c6,     #  LATIN CAPITAL LETTER A WITH BREVE
-    0x0103: 0x00c7,     #  LATIN SMALL LETTER A WITH BREVE
-    0x0104: 0x00a4,     #  LATIN CAPITAL LETTER A WITH OGONEK
-    0x0105: 0x00a5,     #  LATIN SMALL LETTER A WITH OGONEK
-    0x0106: 0x008f,     #  LATIN CAPITAL LETTER C WITH ACUTE
-    0x0107: 0x0086,     #  LATIN SMALL LETTER C WITH ACUTE
-    0x010c: 0x00ac,     #  LATIN CAPITAL LETTER C WITH CARON
-    0x010d: 0x009f,     #  LATIN SMALL LETTER C WITH CARON
-    0x010e: 0x00d2,     #  LATIN CAPITAL LETTER D WITH CARON
-    0x010f: 0x00d4,     #  LATIN SMALL LETTER D WITH CARON
-    0x0110: 0x00d1,     #  LATIN CAPITAL LETTER D WITH STROKE
-    0x0111: 0x00d0,     #  LATIN SMALL LETTER D WITH STROKE
-    0x0118: 0x00a8,     #  LATIN CAPITAL LETTER E WITH OGONEK
-    0x0119: 0x00a9,     #  LATIN SMALL LETTER E WITH OGONEK
-    0x011a: 0x00b7,     #  LATIN CAPITAL LETTER E WITH CARON
-    0x011b: 0x00d8,     #  LATIN SMALL LETTER E WITH CARON
-    0x0139: 0x0091,     #  LATIN CAPITAL LETTER L WITH ACUTE
-    0x013a: 0x0092,     #  LATIN SMALL LETTER L WITH ACUTE
-    0x013d: 0x0095,     #  LATIN CAPITAL LETTER L WITH CARON
-    0x013e: 0x0096,     #  LATIN SMALL LETTER L WITH CARON
-    0x0141: 0x009d,     #  LATIN CAPITAL LETTER L WITH STROKE
-    0x0142: 0x0088,     #  LATIN SMALL LETTER L WITH STROKE
-    0x0143: 0x00e3,     #  LATIN CAPITAL LETTER N WITH ACUTE
-    0x0144: 0x00e4,     #  LATIN SMALL LETTER N WITH ACUTE
-    0x0147: 0x00d5,     #  LATIN CAPITAL LETTER N WITH CARON
-    0x0148: 0x00e5,     #  LATIN SMALL LETTER N WITH CARON
-    0x0150: 0x008a,     #  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    0x0151: 0x008b,     #  LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    0x0154: 0x00e8,     #  LATIN CAPITAL LETTER R WITH ACUTE
-    0x0155: 0x00ea,     #  LATIN SMALL LETTER R WITH ACUTE
-    0x0158: 0x00fc,     #  LATIN CAPITAL LETTER R WITH CARON
-    0x0159: 0x00fd,     #  LATIN SMALL LETTER R WITH CARON
-    0x015a: 0x0097,     #  LATIN CAPITAL LETTER S WITH ACUTE
-    0x015b: 0x0098,     #  LATIN SMALL LETTER S WITH ACUTE
-    0x015e: 0x00b8,     #  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015f: 0x00ad,     #  LATIN SMALL LETTER S WITH CEDILLA
-    0x0160: 0x00e6,     #  LATIN CAPITAL LETTER S WITH CARON
-    0x0161: 0x00e7,     #  LATIN SMALL LETTER S WITH CARON
-    0x0162: 0x00dd,     #  LATIN CAPITAL LETTER T WITH CEDILLA
-    0x0163: 0x00ee,     #  LATIN SMALL LETTER T WITH CEDILLA
-    0x0164: 0x009b,     #  LATIN CAPITAL LETTER T WITH CARON
-    0x0165: 0x009c,     #  LATIN SMALL LETTER T WITH CARON
-    0x016e: 0x00de,     #  LATIN CAPITAL LETTER U WITH RING ABOVE
-    0x016f: 0x0085,     #  LATIN SMALL LETTER U WITH RING ABOVE
-    0x0170: 0x00eb,     #  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    0x0171: 0x00fb,     #  LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    0x0179: 0x008d,     #  LATIN CAPITAL LETTER Z WITH ACUTE
-    0x017a: 0x00ab,     #  LATIN SMALL LETTER Z WITH ACUTE
-    0x017b: 0x00bd,     #  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    0x017c: 0x00be,     #  LATIN SMALL LETTER Z WITH DOT ABOVE
-    0x017d: 0x00a6,     #  LATIN CAPITAL LETTER Z WITH CARON
-    0x017e: 0x00a7,     #  LATIN SMALL LETTER Z WITH CARON
-    0x02c7: 0x00f3,     #  CARON
-    0x02d8: 0x00f4,     #  BREVE
-    0x02d9: 0x00fa,     #  DOT ABOVE
-    0x02db: 0x00f2,     #  OGONEK
-    0x02dd: 0x00f1,     #  DOUBLE ACUTE ACCENT
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp855.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp855.py
deleted file mode 100644
index f72e8cc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp855.py
+++ /dev/null
@@ -1,698 +0,0 @@
-""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP855.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp855',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x0452,     #  CYRILLIC SMALL LETTER DJE
-    0x0081: 0x0402,     #  CYRILLIC CAPITAL LETTER DJE
-    0x0082: 0x0453,     #  CYRILLIC SMALL LETTER GJE
-    0x0083: 0x0403,     #  CYRILLIC CAPITAL LETTER GJE
-    0x0084: 0x0451,     #  CYRILLIC SMALL LETTER IO
-    0x0085: 0x0401,     #  CYRILLIC CAPITAL LETTER IO
-    0x0086: 0x0454,     #  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x0087: 0x0404,     #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x0088: 0x0455,     #  CYRILLIC SMALL LETTER DZE
-    0x0089: 0x0405,     #  CYRILLIC CAPITAL LETTER DZE
-    0x008a: 0x0456,     #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x008b: 0x0406,     #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x008c: 0x0457,     #  CYRILLIC SMALL LETTER YI
-    0x008d: 0x0407,     #  CYRILLIC CAPITAL LETTER YI
-    0x008e: 0x0458,     #  CYRILLIC SMALL LETTER JE
-    0x008f: 0x0408,     #  CYRILLIC CAPITAL LETTER JE
-    0x0090: 0x0459,     #  CYRILLIC SMALL LETTER LJE
-    0x0091: 0x0409,     #  CYRILLIC CAPITAL LETTER LJE
-    0x0092: 0x045a,     #  CYRILLIC SMALL LETTER NJE
-    0x0093: 0x040a,     #  CYRILLIC CAPITAL LETTER NJE
-    0x0094: 0x045b,     #  CYRILLIC SMALL LETTER TSHE
-    0x0095: 0x040b,     #  CYRILLIC CAPITAL LETTER TSHE
-    0x0096: 0x045c,     #  CYRILLIC SMALL LETTER KJE
-    0x0097: 0x040c,     #  CYRILLIC CAPITAL LETTER KJE
-    0x0098: 0x045e,     #  CYRILLIC SMALL LETTER SHORT U
-    0x0099: 0x040e,     #  CYRILLIC CAPITAL LETTER SHORT U
-    0x009a: 0x045f,     #  CYRILLIC SMALL LETTER DZHE
-    0x009b: 0x040f,     #  CYRILLIC CAPITAL LETTER DZHE
-    0x009c: 0x044e,     #  CYRILLIC SMALL LETTER YU
-    0x009d: 0x042e,     #  CYRILLIC CAPITAL LETTER YU
-    0x009e: 0x044a,     #  CYRILLIC SMALL LETTER HARD SIGN
-    0x009f: 0x042a,     #  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x00a0: 0x0430,     #  CYRILLIC SMALL LETTER A
-    0x00a1: 0x0410,     #  CYRILLIC CAPITAL LETTER A
-    0x00a2: 0x0431,     #  CYRILLIC SMALL LETTER BE
-    0x00a3: 0x0411,     #  CYRILLIC CAPITAL LETTER BE
-    0x00a4: 0x0446,     #  CYRILLIC SMALL LETTER TSE
-    0x00a5: 0x0426,     #  CYRILLIC CAPITAL LETTER TSE
-    0x00a6: 0x0434,     #  CYRILLIC SMALL LETTER DE
-    0x00a7: 0x0414,     #  CYRILLIC CAPITAL LETTER DE
-    0x00a8: 0x0435,     #  CYRILLIC SMALL LETTER IE
-    0x00a9: 0x0415,     #  CYRILLIC CAPITAL LETTER IE
-    0x00aa: 0x0444,     #  CYRILLIC SMALL LETTER EF
-    0x00ab: 0x0424,     #  CYRILLIC CAPITAL LETTER EF
-    0x00ac: 0x0433,     #  CYRILLIC SMALL LETTER GHE
-    0x00ad: 0x0413,     #  CYRILLIC CAPITAL LETTER GHE
-    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x0445,     #  CYRILLIC SMALL LETTER HA
-    0x00b6: 0x0425,     #  CYRILLIC CAPITAL LETTER HA
-    0x00b7: 0x0438,     #  CYRILLIC SMALL LETTER I
-    0x00b8: 0x0418,     #  CYRILLIC CAPITAL LETTER I
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x0439,     #  CYRILLIC SMALL LETTER SHORT I
-    0x00be: 0x0419,     #  CYRILLIC CAPITAL LETTER SHORT I
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x043a,     #  CYRILLIC SMALL LETTER KA
-    0x00c7: 0x041a,     #  CYRILLIC CAPITAL LETTER KA
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x00a4,     #  CURRENCY SIGN
-    0x00d0: 0x043b,     #  CYRILLIC SMALL LETTER EL
-    0x00d1: 0x041b,     #  CYRILLIC CAPITAL LETTER EL
-    0x00d2: 0x043c,     #  CYRILLIC SMALL LETTER EM
-    0x00d3: 0x041c,     #  CYRILLIC CAPITAL LETTER EM
-    0x00d4: 0x043d,     #  CYRILLIC SMALL LETTER EN
-    0x00d5: 0x041d,     #  CYRILLIC CAPITAL LETTER EN
-    0x00d6: 0x043e,     #  CYRILLIC SMALL LETTER O
-    0x00d7: 0x041e,     #  CYRILLIC CAPITAL LETTER O
-    0x00d8: 0x043f,     #  CYRILLIC SMALL LETTER PE
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x041f,     #  CYRILLIC CAPITAL LETTER PE
-    0x00de: 0x044f,     #  CYRILLIC SMALL LETTER YA
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x042f,     #  CYRILLIC CAPITAL LETTER YA
-    0x00e1: 0x0440,     #  CYRILLIC SMALL LETTER ER
-    0x00e2: 0x0420,     #  CYRILLIC CAPITAL LETTER ER
-    0x00e3: 0x0441,     #  CYRILLIC SMALL LETTER ES
-    0x00e4: 0x0421,     #  CYRILLIC CAPITAL LETTER ES
-    0x00e5: 0x0442,     #  CYRILLIC SMALL LETTER TE
-    0x00e6: 0x0422,     #  CYRILLIC CAPITAL LETTER TE
-    0x00e7: 0x0443,     #  CYRILLIC SMALL LETTER U
-    0x00e8: 0x0423,     #  CYRILLIC CAPITAL LETTER U
-    0x00e9: 0x0436,     #  CYRILLIC SMALL LETTER ZHE
-    0x00ea: 0x0416,     #  CYRILLIC CAPITAL LETTER ZHE
-    0x00eb: 0x0432,     #  CYRILLIC SMALL LETTER VE
-    0x00ec: 0x0412,     #  CYRILLIC CAPITAL LETTER VE
-    0x00ed: 0x044c,     #  CYRILLIC SMALL LETTER SOFT SIGN
-    0x00ee: 0x042c,     #  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x00ef: 0x2116,     #  NUMERO SIGN
-    0x00f0: 0x00ad,     #  SOFT HYPHEN
-    0x00f1: 0x044b,     #  CYRILLIC SMALL LETTER YERU
-    0x00f2: 0x042b,     #  CYRILLIC CAPITAL LETTER YERU
-    0x00f3: 0x0437,     #  CYRILLIC SMALL LETTER ZE
-    0x00f4: 0x0417,     #  CYRILLIC CAPITAL LETTER ZE
-    0x00f5: 0x0448,     #  CYRILLIC SMALL LETTER SHA
-    0x00f6: 0x0428,     #  CYRILLIC CAPITAL LETTER SHA
-    0x00f7: 0x044d,     #  CYRILLIC SMALL LETTER E
-    0x00f8: 0x042d,     #  CYRILLIC CAPITAL LETTER E
-    0x00f9: 0x0449,     #  CYRILLIC SMALL LETTER SHCHA
-    0x00fa: 0x0429,     #  CYRILLIC CAPITAL LETTER SHCHA
-    0x00fb: 0x0447,     #  CYRILLIC SMALL LETTER CHE
-    0x00fc: 0x0427,     #  CYRILLIC CAPITAL LETTER CHE
-    0x00fd: 0x00a7,     #  SECTION SIGN
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\u0452'   #  0x0080 -> CYRILLIC SMALL LETTER DJE
-    u'\u0402'   #  0x0081 -> CYRILLIC CAPITAL LETTER DJE
-    u'\u0453'   #  0x0082 -> CYRILLIC SMALL LETTER GJE
-    u'\u0403'   #  0x0083 -> CYRILLIC CAPITAL LETTER GJE
-    u'\u0451'   #  0x0084 -> CYRILLIC SMALL LETTER IO
-    u'\u0401'   #  0x0085 -> CYRILLIC CAPITAL LETTER IO
-    u'\u0454'   #  0x0086 -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\u0404'   #  0x0087 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\u0455'   #  0x0088 -> CYRILLIC SMALL LETTER DZE
-    u'\u0405'   #  0x0089 -> CYRILLIC CAPITAL LETTER DZE
-    u'\u0456'   #  0x008a -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0406'   #  0x008b -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0457'   #  0x008c -> CYRILLIC SMALL LETTER YI
-    u'\u0407'   #  0x008d -> CYRILLIC CAPITAL LETTER YI
-    u'\u0458'   #  0x008e -> CYRILLIC SMALL LETTER JE
-    u'\u0408'   #  0x008f -> CYRILLIC CAPITAL LETTER JE
-    u'\u0459'   #  0x0090 -> CYRILLIC SMALL LETTER LJE
-    u'\u0409'   #  0x0091 -> CYRILLIC CAPITAL LETTER LJE
-    u'\u045a'   #  0x0092 -> CYRILLIC SMALL LETTER NJE
-    u'\u040a'   #  0x0093 -> CYRILLIC CAPITAL LETTER NJE
-    u'\u045b'   #  0x0094 -> CYRILLIC SMALL LETTER TSHE
-    u'\u040b'   #  0x0095 -> CYRILLIC CAPITAL LETTER TSHE
-    u'\u045c'   #  0x0096 -> CYRILLIC SMALL LETTER KJE
-    u'\u040c'   #  0x0097 -> CYRILLIC CAPITAL LETTER KJE
-    u'\u045e'   #  0x0098 -> CYRILLIC SMALL LETTER SHORT U
-    u'\u040e'   #  0x0099 -> CYRILLIC CAPITAL LETTER SHORT U
-    u'\u045f'   #  0x009a -> CYRILLIC SMALL LETTER DZHE
-    u'\u040f'   #  0x009b -> CYRILLIC CAPITAL LETTER DZHE
-    u'\u044e'   #  0x009c -> CYRILLIC SMALL LETTER YU
-    u'\u042e'   #  0x009d -> CYRILLIC CAPITAL LETTER YU
-    u'\u044a'   #  0x009e -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u042a'   #  0x009f -> CYRILLIC CAPITAL LETTER HARD SIGN
-    u'\u0430'   #  0x00a0 -> CYRILLIC SMALL LETTER A
-    u'\u0410'   #  0x00a1 -> CYRILLIC CAPITAL LETTER A
-    u'\u0431'   #  0x00a2 -> CYRILLIC SMALL LETTER BE
-    u'\u0411'   #  0x00a3 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0446'   #  0x00a4 -> CYRILLIC SMALL LETTER TSE
-    u'\u0426'   #  0x00a5 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0434'   #  0x00a6 -> CYRILLIC SMALL LETTER DE
-    u'\u0414'   #  0x00a7 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0435'   #  0x00a8 -> CYRILLIC SMALL LETTER IE
-    u'\u0415'   #  0x00a9 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0444'   #  0x00aa -> CYRILLIC SMALL LETTER EF
-    u'\u0424'   #  0x00ab -> CYRILLIC CAPITAL LETTER EF
-    u'\u0433'   #  0x00ac -> CYRILLIC SMALL LETTER GHE
-    u'\u0413'   #  0x00ad -> CYRILLIC CAPITAL LETTER GHE
-    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u0445'   #  0x00b5 -> CYRILLIC SMALL LETTER HA
-    u'\u0425'   #  0x00b6 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0438'   #  0x00b7 -> CYRILLIC SMALL LETTER I
-    u'\u0418'   #  0x00b8 -> CYRILLIC CAPITAL LETTER I
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u0439'   #  0x00bd -> CYRILLIC SMALL LETTER SHORT I
-    u'\u0419'   #  0x00be -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u043a'   #  0x00c6 -> CYRILLIC SMALL LETTER KA
-    u'\u041a'   #  0x00c7 -> CYRILLIC CAPITAL LETTER KA
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa4'     #  0x00cf -> CURRENCY SIGN
-    u'\u043b'   #  0x00d0 -> CYRILLIC SMALL LETTER EL
-    u'\u041b'   #  0x00d1 -> CYRILLIC CAPITAL LETTER EL
-    u'\u043c'   #  0x00d2 -> CYRILLIC SMALL LETTER EM
-    u'\u041c'   #  0x00d3 -> CYRILLIC CAPITAL LETTER EM
-    u'\u043d'   #  0x00d4 -> CYRILLIC SMALL LETTER EN
-    u'\u041d'   #  0x00d5 -> CYRILLIC CAPITAL LETTER EN
-    u'\u043e'   #  0x00d6 -> CYRILLIC SMALL LETTER O
-    u'\u041e'   #  0x00d7 -> CYRILLIC CAPITAL LETTER O
-    u'\u043f'   #  0x00d8 -> CYRILLIC SMALL LETTER PE
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\u041f'   #  0x00dd -> CYRILLIC CAPITAL LETTER PE
-    u'\u044f'   #  0x00de -> CYRILLIC SMALL LETTER YA
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\u042f'   #  0x00e0 -> CYRILLIC CAPITAL LETTER YA
-    u'\u0440'   #  0x00e1 -> CYRILLIC SMALL LETTER ER
-    u'\u0420'   #  0x00e2 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0441'   #  0x00e3 -> CYRILLIC SMALL LETTER ES
-    u'\u0421'   #  0x00e4 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0442'   #  0x00e5 -> CYRILLIC SMALL LETTER TE
-    u'\u0422'   #  0x00e6 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0443'   #  0x00e7 -> CYRILLIC SMALL LETTER U
-    u'\u0423'   #  0x00e8 -> CYRILLIC CAPITAL LETTER U
-    u'\u0436'   #  0x00e9 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0416'   #  0x00ea -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0432'   #  0x00eb -> CYRILLIC SMALL LETTER VE
-    u'\u0412'   #  0x00ec -> CYRILLIC CAPITAL LETTER VE
-    u'\u044c'   #  0x00ed -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u042c'   #  0x00ee -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u2116'   #  0x00ef -> NUMERO SIGN
-    u'\xad'     #  0x00f0 -> SOFT HYPHEN
-    u'\u044b'   #  0x00f1 -> CYRILLIC SMALL LETTER YERU
-    u'\u042b'   #  0x00f2 -> CYRILLIC CAPITAL LETTER YERU
-    u'\u0437'   #  0x00f3 -> CYRILLIC SMALL LETTER ZE
-    u'\u0417'   #  0x00f4 -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0448'   #  0x00f5 -> CYRILLIC SMALL LETTER SHA
-    u'\u0428'   #  0x00f6 -> CYRILLIC CAPITAL LETTER SHA
-    u'\u044d'   #  0x00f7 -> CYRILLIC SMALL LETTER E
-    u'\u042d'   #  0x00f8 -> CYRILLIC CAPITAL LETTER E
-    u'\u0449'   #  0x00f9 -> CYRILLIC SMALL LETTER SHCHA
-    u'\u0429'   #  0x00fa -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u0447'   #  0x00fb -> CYRILLIC SMALL LETTER CHE
-    u'\u0427'   #  0x00fc -> CYRILLIC CAPITAL LETTER CHE
-    u'\xa7'     #  0x00fd -> SECTION SIGN
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00a4: 0x00cf,     #  CURRENCY SIGN
-    0x00a7: 0x00fd,     #  SECTION SIGN
-    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ad: 0x00f0,     #  SOFT HYPHEN
-    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x0401: 0x0085,     #  CYRILLIC CAPITAL LETTER IO
-    0x0402: 0x0081,     #  CYRILLIC CAPITAL LETTER DJE
-    0x0403: 0x0083,     #  CYRILLIC CAPITAL LETTER GJE
-    0x0404: 0x0087,     #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x0405: 0x0089,     #  CYRILLIC CAPITAL LETTER DZE
-    0x0406: 0x008b,     #  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0407: 0x008d,     #  CYRILLIC CAPITAL LETTER YI
-    0x0408: 0x008f,     #  CYRILLIC CAPITAL LETTER JE
-    0x0409: 0x0091,     #  CYRILLIC CAPITAL LETTER LJE
-    0x040a: 0x0093,     #  CYRILLIC CAPITAL LETTER NJE
-    0x040b: 0x0095,     #  CYRILLIC CAPITAL LETTER TSHE
-    0x040c: 0x0097,     #  CYRILLIC CAPITAL LETTER KJE
-    0x040e: 0x0099,     #  CYRILLIC CAPITAL LETTER SHORT U
-    0x040f: 0x009b,     #  CYRILLIC CAPITAL LETTER DZHE
-    0x0410: 0x00a1,     #  CYRILLIC CAPITAL LETTER A
-    0x0411: 0x00a3,     #  CYRILLIC CAPITAL LETTER BE
-    0x0412: 0x00ec,     #  CYRILLIC CAPITAL LETTER VE
-    0x0413: 0x00ad,     #  CYRILLIC CAPITAL LETTER GHE
-    0x0414: 0x00a7,     #  CYRILLIC CAPITAL LETTER DE
-    0x0415: 0x00a9,     #  CYRILLIC CAPITAL LETTER IE
-    0x0416: 0x00ea,     #  CYRILLIC CAPITAL LETTER ZHE
-    0x0417: 0x00f4,     #  CYRILLIC CAPITAL LETTER ZE
-    0x0418: 0x00b8,     #  CYRILLIC CAPITAL LETTER I
-    0x0419: 0x00be,     #  CYRILLIC CAPITAL LETTER SHORT I
-    0x041a: 0x00c7,     #  CYRILLIC CAPITAL LETTER KA
-    0x041b: 0x00d1,     #  CYRILLIC CAPITAL LETTER EL
-    0x041c: 0x00d3,     #  CYRILLIC CAPITAL LETTER EM
-    0x041d: 0x00d5,     #  CYRILLIC CAPITAL LETTER EN
-    0x041e: 0x00d7,     #  CYRILLIC CAPITAL LETTER O
-    0x041f: 0x00dd,     #  CYRILLIC CAPITAL LETTER PE
-    0x0420: 0x00e2,     #  CYRILLIC CAPITAL LETTER ER
-    0x0421: 0x00e4,     #  CYRILLIC CAPITAL LETTER ES
-    0x0422: 0x00e6,     #  CYRILLIC CAPITAL LETTER TE
-    0x0423: 0x00e8,     #  CYRILLIC CAPITAL LETTER U
-    0x0424: 0x00ab,     #  CYRILLIC CAPITAL LETTER EF
-    0x0425: 0x00b6,     #  CYRILLIC CAPITAL LETTER HA
-    0x0426: 0x00a5,     #  CYRILLIC CAPITAL LETTER TSE
-    0x0427: 0x00fc,     #  CYRILLIC CAPITAL LETTER CHE
-    0x0428: 0x00f6,     #  CYRILLIC CAPITAL LETTER SHA
-    0x0429: 0x00fa,     #  CYRILLIC CAPITAL LETTER SHCHA
-    0x042a: 0x009f,     #  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x042b: 0x00f2,     #  CYRILLIC CAPITAL LETTER YERU
-    0x042c: 0x00ee,     #  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x042d: 0x00f8,     #  CYRILLIC CAPITAL LETTER E
-    0x042e: 0x009d,     #  CYRILLIC CAPITAL LETTER YU
-    0x042f: 0x00e0,     #  CYRILLIC CAPITAL LETTER YA
-    0x0430: 0x00a0,     #  CYRILLIC SMALL LETTER A
-    0x0431: 0x00a2,     #  CYRILLIC SMALL LETTER BE
-    0x0432: 0x00eb,     #  CYRILLIC SMALL LETTER VE
-    0x0433: 0x00ac,     #  CYRILLIC SMALL LETTER GHE
-    0x0434: 0x00a6,     #  CYRILLIC SMALL LETTER DE
-    0x0435: 0x00a8,     #  CYRILLIC SMALL LETTER IE
-    0x0436: 0x00e9,     #  CYRILLIC SMALL LETTER ZHE
-    0x0437: 0x00f3,     #  CYRILLIC SMALL LETTER ZE
-    0x0438: 0x00b7,     #  CYRILLIC SMALL LETTER I
-    0x0439: 0x00bd,     #  CYRILLIC SMALL LETTER SHORT I
-    0x043a: 0x00c6,     #  CYRILLIC SMALL LETTER KA
-    0x043b: 0x00d0,     #  CYRILLIC SMALL LETTER EL
-    0x043c: 0x00d2,     #  CYRILLIC SMALL LETTER EM
-    0x043d: 0x00d4,     #  CYRILLIC SMALL LETTER EN
-    0x043e: 0x00d6,     #  CYRILLIC SMALL LETTER O
-    0x043f: 0x00d8,     #  CYRILLIC SMALL LETTER PE
-    0x0440: 0x00e1,     #  CYRILLIC SMALL LETTER ER
-    0x0441: 0x00e3,     #  CYRILLIC SMALL LETTER ES
-    0x0442: 0x00e5,     #  CYRILLIC SMALL LETTER TE
-    0x0443: 0x00e7,     #  CYRILLIC SMALL LETTER U
-    0x0444: 0x00aa,     #  CYRILLIC SMALL LETTER EF
-    0x0445: 0x00b5,     #  CYRILLIC SMALL LETTER HA
-    0x0446: 0x00a4,     #  CYRILLIC SMALL LETTER TSE
-    0x0447: 0x00fb,     #  CYRILLIC SMALL LETTER CHE
-    0x0448: 0x00f5,     #  CYRILLIC SMALL LETTER SHA
-    0x0449: 0x00f9,     #  CYRILLIC SMALL LETTER SHCHA
-    0x044a: 0x009e,     #  CYRILLIC SMALL LETTER HARD SIGN
-    0x044b: 0x00f1,     #  CYRILLIC SMALL LETTER YERU
-    0x044c: 0x00ed,     #  CYRILLIC SMALL LETTER SOFT SIGN
-    0x044d: 0x00f7,     #  CYRILLIC SMALL LETTER E
-    0x044e: 0x009c,     #  CYRILLIC SMALL LETTER YU
-    0x044f: 0x00de,     #  CYRILLIC SMALL LETTER YA
-    0x0451: 0x0084,     #  CYRILLIC SMALL LETTER IO
-    0x0452: 0x0080,     #  CYRILLIC SMALL LETTER DJE
-    0x0453: 0x0082,     #  CYRILLIC SMALL LETTER GJE
-    0x0454: 0x0086,     #  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x0455: 0x0088,     #  CYRILLIC SMALL LETTER DZE
-    0x0456: 0x008a,     #  CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    0x0457: 0x008c,     #  CYRILLIC SMALL LETTER YI
-    0x0458: 0x008e,     #  CYRILLIC SMALL LETTER JE
-    0x0459: 0x0090,     #  CYRILLIC SMALL LETTER LJE
-    0x045a: 0x0092,     #  CYRILLIC SMALL LETTER NJE
-    0x045b: 0x0094,     #  CYRILLIC SMALL LETTER TSHE
-    0x045c: 0x0096,     #  CYRILLIC SMALL LETTER KJE
-    0x045e: 0x0098,     #  CYRILLIC SMALL LETTER SHORT U
-    0x045f: 0x009a,     #  CYRILLIC SMALL LETTER DZHE
-    0x2116: 0x00ef,     #  NUMERO SIGN
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp856.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp856.py
deleted file mode 100644
index e26af0b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp856.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp856 generated from 'MAPPINGS/VENDORS/MISC/CP856.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp856',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\u05d0'   #  0x80 -> HEBREW LETTER ALEF
-    u'\u05d1'   #  0x81 -> HEBREW LETTER BET
-    u'\u05d2'   #  0x82 -> HEBREW LETTER GIMEL
-    u'\u05d3'   #  0x83 -> HEBREW LETTER DALET
-    u'\u05d4'   #  0x84 -> HEBREW LETTER HE
-    u'\u05d5'   #  0x85 -> HEBREW LETTER VAV
-    u'\u05d6'   #  0x86 -> HEBREW LETTER ZAYIN
-    u'\u05d7'   #  0x87 -> HEBREW LETTER HET
-    u'\u05d8'   #  0x88 -> HEBREW LETTER TET
-    u'\u05d9'   #  0x89 -> HEBREW LETTER YOD
-    u'\u05da'   #  0x8A -> HEBREW LETTER FINAL KAF
-    u'\u05db'   #  0x8B -> HEBREW LETTER KAF
-    u'\u05dc'   #  0x8C -> HEBREW LETTER LAMED
-    u'\u05dd'   #  0x8D -> HEBREW LETTER FINAL MEM
-    u'\u05de'   #  0x8E -> HEBREW LETTER MEM
-    u'\u05df'   #  0x8F -> HEBREW LETTER FINAL NUN
-    u'\u05e0'   #  0x90 -> HEBREW LETTER NUN
-    u'\u05e1'   #  0x91 -> HEBREW LETTER SAMEKH
-    u'\u05e2'   #  0x92 -> HEBREW LETTER AYIN
-    u'\u05e3'   #  0x93 -> HEBREW LETTER FINAL PE
-    u'\u05e4'   #  0x94 -> HEBREW LETTER PE
-    u'\u05e5'   #  0x95 -> HEBREW LETTER FINAL TSADI
-    u'\u05e6'   #  0x96 -> HEBREW LETTER TSADI
-    u'\u05e7'   #  0x97 -> HEBREW LETTER QOF
-    u'\u05e8'   #  0x98 -> HEBREW LETTER RESH
-    u'\u05e9'   #  0x99 -> HEBREW LETTER SHIN
-    u'\u05ea'   #  0x9A -> HEBREW LETTER TAV
-    u'\ufffe'   #  0x9B -> UNDEFINED
-    u'\xa3'     #  0x9C -> POUND SIGN
-    u'\ufffe'   #  0x9D -> UNDEFINED
-    u'\xd7'     #  0x9E -> MULTIPLICATION SIGN
-    u'\ufffe'   #  0x9F -> UNDEFINED
-    u'\ufffe'   #  0xA0 -> UNDEFINED
-    u'\ufffe'   #  0xA1 -> UNDEFINED
-    u'\ufffe'   #  0xA2 -> UNDEFINED
-    u'\ufffe'   #  0xA3 -> UNDEFINED
-    u'\ufffe'   #  0xA4 -> UNDEFINED
-    u'\ufffe'   #  0xA5 -> UNDEFINED
-    u'\ufffe'   #  0xA6 -> UNDEFINED
-    u'\ufffe'   #  0xA7 -> UNDEFINED
-    u'\ufffe'   #  0xA8 -> UNDEFINED
-    u'\xae'     #  0xA9 -> REGISTERED SIGN
-    u'\xac'     #  0xAA -> NOT SIGN
-    u'\xbd'     #  0xAB -> VULGAR FRACTION ONE HALF
-    u'\xbc'     #  0xAC -> VULGAR FRACTION ONE QUARTER
-    u'\ufffe'   #  0xAD -> UNDEFINED
-    u'\xab'     #  0xAE -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0xAF -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'   #  0xB0 -> LIGHT SHADE
-    u'\u2592'   #  0xB1 -> MEDIUM SHADE
-    u'\u2593'   #  0xB2 -> DARK SHADE
-    u'\u2502'   #  0xB3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0xB4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\ufffe'   #  0xB5 -> UNDEFINED
-    u'\ufffe'   #  0xB6 -> UNDEFINED
-    u'\ufffe'   #  0xB7 -> UNDEFINED
-    u'\xa9'     #  0xB8 -> COPYRIGHT SIGN
-    u'\u2563'   #  0xB9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0xBA -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0xBB -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0xBC -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\xa2'     #  0xBD -> CENT SIGN
-    u'\xa5'     #  0xBE -> YEN SIGN
-    u'\u2510'   #  0xBF -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0xC0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0xC1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0xC2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0xC3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0xC4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0xC5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\ufffe'   #  0xC6 -> UNDEFINED
-    u'\ufffe'   #  0xC7 -> UNDEFINED
-    u'\u255a'   #  0xC8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0xC9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0xCA -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0xCB -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0xCC -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0xCD -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0xCE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa4'     #  0xCF -> CURRENCY SIGN
-    u'\ufffe'   #  0xD0 -> UNDEFINED
-    u'\ufffe'   #  0xD1 -> UNDEFINED
-    u'\ufffe'   #  0xD2 -> UNDEFINED
-    u'\ufffe'   #  0xD3 -> UNDEFINEDS
-    u'\ufffe'   #  0xD4 -> UNDEFINED
-    u'\ufffe'   #  0xD5 -> UNDEFINED
-    u'\ufffe'   #  0xD6 -> UNDEFINEDE
-    u'\ufffe'   #  0xD7 -> UNDEFINED
-    u'\ufffe'   #  0xD8 -> UNDEFINED
-    u'\u2518'   #  0xD9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0xDA -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0xDB -> FULL BLOCK
-    u'\u2584'   #  0xDC -> LOWER HALF BLOCK
-    u'\xa6'     #  0xDD -> BROKEN BAR
-    u'\ufffe'   #  0xDE -> UNDEFINED
-    u'\u2580'   #  0xDF -> UPPER HALF BLOCK
-    u'\ufffe'   #  0xE0 -> UNDEFINED
-    u'\ufffe'   #  0xE1 -> UNDEFINED
-    u'\ufffe'   #  0xE2 -> UNDEFINED
-    u'\ufffe'   #  0xE3 -> UNDEFINED
-    u'\ufffe'   #  0xE4 -> UNDEFINED
-    u'\ufffe'   #  0xE5 -> UNDEFINED
-    u'\xb5'     #  0xE6 -> MICRO SIGN
-    u'\ufffe'   #  0xE7 -> UNDEFINED
-    u'\ufffe'   #  0xE8 -> UNDEFINED
-    u'\ufffe'   #  0xE9 -> UNDEFINED
-    u'\ufffe'   #  0xEA -> UNDEFINED
-    u'\ufffe'   #  0xEB -> UNDEFINED
-    u'\ufffe'   #  0xEC -> UNDEFINED
-    u'\ufffe'   #  0xED -> UNDEFINED
-    u'\xaf'     #  0xEE -> MACRON
-    u'\xb4'     #  0xEF -> ACUTE ACCENT
-    u'\xad'     #  0xF0 -> SOFT HYPHEN
-    u'\xb1'     #  0xF1 -> PLUS-MINUS SIGN
-    u'\u2017'   #  0xF2 -> DOUBLE LOW LINE
-    u'\xbe'     #  0xF3 -> VULGAR FRACTION THREE QUARTERS
-    u'\xb6'     #  0xF4 -> PILCROW SIGN
-    u'\xa7'     #  0xF5 -> SECTION SIGN
-    u'\xf7'     #  0xF6 -> DIVISION SIGN
-    u'\xb8'     #  0xF7 -> CEDILLA
-    u'\xb0'     #  0xF8 -> DEGREE SIGN
-    u'\xa8'     #  0xF9 -> DIAERESIS
-    u'\xb7'     #  0xFA -> MIDDLE DOT
-    u'\xb9'     #  0xFB -> SUPERSCRIPT ONE
-    u'\xb3'     #  0xFC -> SUPERSCRIPT THREE
-    u'\xb2'     #  0xFD -> SUPERSCRIPT TWO
-    u'\u25a0'   #  0xFE -> BLACK SQUARE
-    u'\xa0'     #  0xFF -> NO-BREAK SPACE
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp857.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp857.py
deleted file mode 100644
index d337e5b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp857.py
+++ /dev/null
@@ -1,694 +0,0 @@
-""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP857.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp857',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00e5,     #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00ef,     #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x008c: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x008d: 0x0131,     #  LATIN SMALL LETTER DOTLESS I
-    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x00c5,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00e6,     #  LATIN SMALL LIGATURE AE
-    0x0092: 0x00c6,     #  LATIN CAPITAL LIGATURE AE
-    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x00f2,     #  LATIN SMALL LETTER O WITH GRAVE
-    0x0096: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x0097: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x0098: 0x0130,     #  LATIN CAPITAL LETTER I WITH DOT ABOVE
-    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00f8,     #  LATIN SMALL LETTER O WITH STROKE
-    0x009c: 0x00a3,     #  POUND SIGN
-    0x009d: 0x00d8,     #  LATIN CAPITAL LETTER O WITH STROKE
-    0x009e: 0x015e,     #  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x009f: 0x015f,     #  LATIN SMALL LETTER S WITH CEDILLA
-    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00a5: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00a6: 0x011e,     #  LATIN CAPITAL LETTER G WITH BREVE
-    0x00a7: 0x011f,     #  LATIN SMALL LETTER G WITH BREVE
-    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
-    0x00a9: 0x00ae,     #  REGISTERED SIGN
-    0x00aa: 0x00ac,     #  NOT SIGN
-    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x00c1,     #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00b6: 0x00c2,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00b7: 0x00c0,     #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00b8: 0x00a9,     #  COPYRIGHT SIGN
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x00a2,     #  CENT SIGN
-    0x00be: 0x00a5,     #  YEN SIGN
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x00e3,     #  LATIN SMALL LETTER A WITH TILDE
-    0x00c7: 0x00c3,     #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x00a4,     #  CURRENCY SIGN
-    0x00d0: 0x00ba,     #  MASCULINE ORDINAL INDICATOR
-    0x00d1: 0x00aa,     #  FEMININE ORDINAL INDICATOR
-    0x00d2: 0x00ca,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00d3: 0x00cb,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00d4: 0x00c8,     #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00d5: None,       #  UNDEFINED
-    0x00d6: 0x00cd,     #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00d7: 0x00ce,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00d8: 0x00cf,     #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x00a6,     #  BROKEN BAR
-    0x00de: 0x00cc,     #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x00d3,     #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x00d4,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00e3: 0x00d2,     #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00e4: 0x00f5,     #  LATIN SMALL LETTER O WITH TILDE
-    0x00e5: 0x00d5,     #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00e6: 0x00b5,     #  MICRO SIGN
-    0x00e7: None,       #  UNDEFINED
-    0x00e8: 0x00d7,     #  MULTIPLICATION SIGN
-    0x00e9: 0x00da,     #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00ea: 0x00db,     #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00eb: 0x00d9,     #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00ed: 0x00ff,     #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x00ee: 0x00af,     #  MACRON
-    0x00ef: 0x00b4,     #  ACUTE ACCENT
-    0x00f0: 0x00ad,     #  SOFT HYPHEN
-    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
-    0x00f2: None,       #  UNDEFINED
-    0x00f3: 0x00be,     #  VULGAR FRACTION THREE QUARTERS
-    0x00f4: 0x00b6,     #  PILCROW SIGN
-    0x00f5: 0x00a7,     #  SECTION SIGN
-    0x00f6: 0x00f7,     #  DIVISION SIGN
-    0x00f7: 0x00b8,     #  CEDILLA
-    0x00f8: 0x00b0,     #  DEGREE SIGN
-    0x00f9: 0x00a8,     #  DIAERESIS
-    0x00fa: 0x00b7,     #  MIDDLE DOT
-    0x00fb: 0x00b9,     #  SUPERSCRIPT ONE
-    0x00fc: 0x00b3,     #  SUPERSCRIPT THREE
-    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe5'     #  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xef'     #  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xee'     #  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u0131'   #  0x008d -> LATIN SMALL LETTER DOTLESS I
-    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xe6'     #  0x0091 -> LATIN SMALL LIGATURE AE
-    u'\xc6'     #  0x0092 -> LATIN CAPITAL LIGATURE AE
-    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'     #  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xfb'     #  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xf9'     #  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\u0130'   #  0x0098 -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xf8'     #  0x009b -> LATIN SMALL LETTER O WITH STROKE
-    u'\xa3'     #  0x009c -> POUND SIGN
-    u'\xd8'     #  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u015e'   #  0x009e -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\u015f'   #  0x009f -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf1'     #  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xd1'     #  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\u011e'   #  0x00a6 -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\u011f'   #  0x00a7 -> LATIN SMALL LETTER G WITH BREVE
-    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
-    u'\xae'     #  0x00a9 -> REGISTERED SIGN
-    u'\xac'     #  0x00aa -> NOT SIGN
-    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\xc1'     #  0x00b5 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0x00b6 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc0'     #  0x00b7 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xa9'     #  0x00b8 -> COPYRIGHT SIGN
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\xa2'     #  0x00bd -> CENT SIGN
-    u'\xa5'     #  0x00be -> YEN SIGN
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\xe3'     #  0x00c6 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xc3'     #  0x00c7 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa4'     #  0x00cf -> CURRENCY SIGN
-    u'\xba'     #  0x00d0 -> MASCULINE ORDINAL INDICATOR
-    u'\xaa'     #  0x00d1 -> FEMININE ORDINAL INDICATOR
-    u'\xca'     #  0x00d2 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0x00d3 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'     #  0x00d4 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\ufffe'   #  0x00d5 -> UNDEFINED
-    u'\xcd'     #  0x00d6 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0x00d7 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0x00d8 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\xa6'     #  0x00dd -> BROKEN BAR
-    u'\xcc'     #  0x00de -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\xd3'     #  0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\xd4'     #  0x00e2 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd2'     #  0x00e3 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xf5'     #  0x00e4 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xd5'     #  0x00e5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xb5'     #  0x00e6 -> MICRO SIGN
-    u'\ufffe'   #  0x00e7 -> UNDEFINED
-    u'\xd7'     #  0x00e8 -> MULTIPLICATION SIGN
-    u'\xda'     #  0x00e9 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0x00ea -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'     #  0x00eb -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xec'     #  0x00ec -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xff'     #  0x00ed -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\xaf'     #  0x00ee -> MACRON
-    u'\xb4'     #  0x00ef -> ACUTE ACCENT
-    u'\xad'     #  0x00f0 -> SOFT HYPHEN
-    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
-    u'\ufffe'   #  0x00f2 -> UNDEFINED
-    u'\xbe'     #  0x00f3 -> VULGAR FRACTION THREE QUARTERS
-    u'\xb6'     #  0x00f4 -> PILCROW SIGN
-    u'\xa7'     #  0x00f5 -> SECTION SIGN
-    u'\xf7'     #  0x00f6 -> DIVISION SIGN
-    u'\xb8'     #  0x00f7 -> CEDILLA
-    u'\xb0'     #  0x00f8 -> DEGREE SIGN
-    u'\xa8'     #  0x00f9 -> DIAERESIS
-    u'\xb7'     #  0x00fa -> MIDDLE DOT
-    u'\xb9'     #  0x00fb -> SUPERSCRIPT ONE
-    u'\xb3'     #  0x00fc -> SUPERSCRIPT THREE
-    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
-    0x00a2: 0x00bd,     #  CENT SIGN
-    0x00a3: 0x009c,     #  POUND SIGN
-    0x00a4: 0x00cf,     #  CURRENCY SIGN
-    0x00a5: 0x00be,     #  YEN SIGN
-    0x00a6: 0x00dd,     #  BROKEN BAR
-    0x00a7: 0x00f5,     #  SECTION SIGN
-    0x00a8: 0x00f9,     #  DIAERESIS
-    0x00a9: 0x00b8,     #  COPYRIGHT SIGN
-    0x00aa: 0x00d1,     #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,     #  NOT SIGN
-    0x00ad: 0x00f0,     #  SOFT HYPHEN
-    0x00ae: 0x00a9,     #  REGISTERED SIGN
-    0x00af: 0x00ee,     #  MACRON
-    0x00b0: 0x00f8,     #  DEGREE SIGN
-    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
-    0x00b3: 0x00fc,     #  SUPERSCRIPT THREE
-    0x00b4: 0x00ef,     #  ACUTE ACCENT
-    0x00b5: 0x00e6,     #  MICRO SIGN
-    0x00b6: 0x00f4,     #  PILCROW SIGN
-    0x00b7: 0x00fa,     #  MIDDLE DOT
-    0x00b8: 0x00f7,     #  CEDILLA
-    0x00b9: 0x00fb,     #  SUPERSCRIPT ONE
-    0x00ba: 0x00d0,     #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
-    0x00be: 0x00f3,     #  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
-    0x00c0: 0x00b7,     #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0x00b5,     #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0x00b6,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0x00c7,     #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x008f,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x0092,     #  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0x00d4,     #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0x00d2,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0x00d3,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0x00de,     #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0x00d6,     #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0x00d7,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0x00d8,     #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d1: 0x00a5,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0x00e3,     #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0x00e0,     #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0x00e2,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0x00e5,     #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0x00e8,     #  MULTIPLICATION SIGN
-    0x00d8: 0x009d,     #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0x00eb,     #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0x00e9,     #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0x00ea,     #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x00c6,     #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x0086,     #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x0091,     #  LATIN SMALL LIGATURE AE
-    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x00ec,     #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x008c,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x008b,     #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0x00a4,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x0095,     #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0x00e4,     #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,     #  DIVISION SIGN
-    0x00f8: 0x009b,     #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0x0097,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x0096,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00ff: 0x00ed,     #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x011e: 0x00a6,     #  LATIN CAPITAL LETTER G WITH BREVE
-    0x011f: 0x00a7,     #  LATIN SMALL LETTER G WITH BREVE
-    0x0130: 0x0098,     #  LATIN CAPITAL LETTER I WITH DOT ABOVE
-    0x0131: 0x008d,     #  LATIN SMALL LETTER DOTLESS I
-    0x015e: 0x009e,     #  LATIN CAPITAL LETTER S WITH CEDILLA
-    0x015f: 0x009f,     #  LATIN SMALL LETTER S WITH CEDILLA
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp858.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp858.py
deleted file mode 100644
index 427a20d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp858.py
+++ /dev/null
@@ -1,698 +0,0 @@
-""" Python Character Mapping Codec for CP858, modified from cp850.
-
-"""
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp858',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00e5,     #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00ef,     #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x008c: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x008d: 0x00ec,     #  LATIN SMALL LETTER I WITH GRAVE
-    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x00c5,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00e6,     #  LATIN SMALL LIGATURE AE
-    0x0092: 0x00c6,     #  LATIN CAPITAL LIGATURE AE
-    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x00f2,     #  LATIN SMALL LETTER O WITH GRAVE
-    0x0096: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x0097: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x0098: 0x00ff,     #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00f8,     #  LATIN SMALL LETTER O WITH STROKE
-    0x009c: 0x00a3,     #  POUND SIGN
-    0x009d: 0x00d8,     #  LATIN CAPITAL LETTER O WITH STROKE
-    0x009e: 0x00d7,     #  MULTIPLICATION SIGN
-    0x009f: 0x0192,     #  LATIN SMALL LETTER F WITH HOOK
-    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00a5: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00a6: 0x00aa,     #  FEMININE ORDINAL INDICATOR
-    0x00a7: 0x00ba,     #  MASCULINE ORDINAL INDICATOR
-    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
-    0x00a9: 0x00ae,     #  REGISTERED SIGN
-    0x00aa: 0x00ac,     #  NOT SIGN
-    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x00c1,     #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00b6: 0x00c2,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00b7: 0x00c0,     #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00b8: 0x00a9,     #  COPYRIGHT SIGN
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x00a2,     #  CENT SIGN
-    0x00be: 0x00a5,     #  YEN SIGN
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x00e3,     #  LATIN SMALL LETTER A WITH TILDE
-    0x00c7: 0x00c3,     #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x00a4,     #  CURRENCY SIGN
-    0x00d0: 0x00f0,     #  LATIN SMALL LETTER ETH
-    0x00d1: 0x00d0,     #  LATIN CAPITAL LETTER ETH
-    0x00d2: 0x00ca,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00d3: 0x00cb,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00d4: 0x00c8,     #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00d5: 0x20ac,     #  EURO SIGN
-    0x00d6: 0x00cd,     #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00d7: 0x00ce,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00d8: 0x00cf,     #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x00a6,     #  BROKEN BAR
-    0x00de: 0x00cc,     #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x00d3,     #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x00d4,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00e3: 0x00d2,     #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00e4: 0x00f5,     #  LATIN SMALL LETTER O WITH TILDE
-    0x00e5: 0x00d5,     #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00e6: 0x00b5,     #  MICRO SIGN
-    0x00e7: 0x00fe,     #  LATIN SMALL LETTER THORN
-    0x00e8: 0x00de,     #  LATIN CAPITAL LETTER THORN
-    0x00e9: 0x00da,     #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00ea: 0x00db,     #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00eb: 0x00d9,     #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00ec: 0x00fd,     #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00ed: 0x00dd,     #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00ee: 0x00af,     #  MACRON
-    0x00ef: 0x00b4,     #  ACUTE ACCENT
-    0x00f0: 0x00ad,     #  SOFT HYPHEN
-    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
-    0x00f2: 0x2017,     #  DOUBLE LOW LINE
-    0x00f3: 0x00be,     #  VULGAR FRACTION THREE QUARTERS
-    0x00f4: 0x00b6,     #  PILCROW SIGN
-    0x00f5: 0x00a7,     #  SECTION SIGN
-    0x00f6: 0x00f7,     #  DIVISION SIGN
-    0x00f7: 0x00b8,     #  CEDILLA
-    0x00f8: 0x00b0,     #  DEGREE SIGN
-    0x00f9: 0x00a8,     #  DIAERESIS
-    0x00fa: 0x00b7,     #  MIDDLE DOT
-    0x00fb: 0x00b9,     #  SUPERSCRIPT ONE
-    0x00fc: 0x00b3,     #  SUPERSCRIPT THREE
-    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe5'     #  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xef'     #  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xee'     #  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xec'     #  0x008d -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xe6'     #  0x0091 -> LATIN SMALL LIGATURE AE
-    u'\xc6'     #  0x0092 -> LATIN CAPITAL LIGATURE AE
-    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'     #  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xfb'     #  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xf9'     #  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xff'     #  0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xf8'     #  0x009b -> LATIN SMALL LETTER O WITH STROKE
-    u'\xa3'     #  0x009c -> POUND SIGN
-    u'\xd8'     #  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd7'     #  0x009e -> MULTIPLICATION SIGN
-    u'\u0192'   #  0x009f -> LATIN SMALL LETTER F WITH HOOK
-    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf1'     #  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xd1'     #  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xaa'     #  0x00a6 -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0x00a7 -> MASCULINE ORDINAL INDICATOR
-    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
-    u'\xae'     #  0x00a9 -> REGISTERED SIGN
-    u'\xac'     #  0x00aa -> NOT SIGN
-    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\xc1'     #  0x00b5 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0x00b6 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc0'     #  0x00b7 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xa9'     #  0x00b8 -> COPYRIGHT SIGN
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\xa2'     #  0x00bd -> CENT SIGN
-    u'\xa5'     #  0x00be -> YEN SIGN
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\xe3'     #  0x00c6 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xc3'     #  0x00c7 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa4'     #  0x00cf -> CURRENCY SIGN
-    u'\xf0'     #  0x00d0 -> LATIN SMALL LETTER ETH
-    u'\xd0'     #  0x00d1 -> LATIN CAPITAL LETTER ETH
-    u'\xca'     #  0x00d2 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0x00d3 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'     #  0x00d4 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\u20ac'   #  0x00d5 -> EURO SIGN
-    u'\xcd'     #  0x00d6 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0x00d7 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0x00d8 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\xa6'     #  0x00dd -> BROKEN BAR
-    u'\xcc'     #  0x00de -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\xd3'     #  0x00e0 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\xd4'     #  0x00e2 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd2'     #  0x00e3 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xf5'     #  0x00e4 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xd5'     #  0x00e5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xb5'     #  0x00e6 -> MICRO SIGN
-    u'\xfe'     #  0x00e7 -> LATIN SMALL LETTER THORN
-    u'\xde'     #  0x00e8 -> LATIN CAPITAL LETTER THORN
-    u'\xda'     #  0x00e9 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0x00ea -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'     #  0x00eb -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xfd'     #  0x00ec -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xdd'     #  0x00ed -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xaf'     #  0x00ee -> MACRON
-    u'\xb4'     #  0x00ef -> ACUTE ACCENT
-    u'\xad'     #  0x00f0 -> SOFT HYPHEN
-    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2017'   #  0x00f2 -> DOUBLE LOW LINE
-    u'\xbe'     #  0x00f3 -> VULGAR FRACTION THREE QUARTERS
-    u'\xb6'     #  0x00f4 -> PILCROW SIGN
-    u'\xa7'     #  0x00f5 -> SECTION SIGN
-    u'\xf7'     #  0x00f6 -> DIVISION SIGN
-    u'\xb8'     #  0x00f7 -> CEDILLA
-    u'\xb0'     #  0x00f8 -> DEGREE SIGN
-    u'\xa8'     #  0x00f9 -> DIAERESIS
-    u'\xb7'     #  0x00fa -> MIDDLE DOT
-    u'\xb9'     #  0x00fb -> SUPERSCRIPT ONE
-    u'\xb3'     #  0x00fc -> SUPERSCRIPT THREE
-    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
-    0x00a2: 0x00bd,     #  CENT SIGN
-    0x00a3: 0x009c,     #  POUND SIGN
-    0x00a4: 0x00cf,     #  CURRENCY SIGN
-    0x00a5: 0x00be,     #  YEN SIGN
-    0x00a6: 0x00dd,     #  BROKEN BAR
-    0x00a7: 0x00f5,     #  SECTION SIGN
-    0x00a8: 0x00f9,     #  DIAERESIS
-    0x00a9: 0x00b8,     #  COPYRIGHT SIGN
-    0x00aa: 0x00a6,     #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,     #  NOT SIGN
-    0x00ad: 0x00f0,     #  SOFT HYPHEN
-    0x00ae: 0x00a9,     #  REGISTERED SIGN
-    0x00af: 0x00ee,     #  MACRON
-    0x00b0: 0x00f8,     #  DEGREE SIGN
-    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
-    0x00b3: 0x00fc,     #  SUPERSCRIPT THREE
-    0x00b4: 0x00ef,     #  ACUTE ACCENT
-    0x00b5: 0x00e6,     #  MICRO SIGN
-    0x00b6: 0x00f4,     #  PILCROW SIGN
-    0x00b7: 0x00fa,     #  MIDDLE DOT
-    0x00b8: 0x00f7,     #  CEDILLA
-    0x00b9: 0x00fb,     #  SUPERSCRIPT ONE
-    0x00ba: 0x00a7,     #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
-    0x00be: 0x00f3,     #  VULGAR FRACTION THREE QUARTERS
-    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
-    0x00c0: 0x00b7,     #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0x00b5,     #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0x00b6,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0x00c7,     #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x008f,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x0092,     #  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0x00d4,     #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0x00d2,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0x00d3,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00cc: 0x00de,     #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0x00d6,     #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00ce: 0x00d7,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0x00d8,     #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d0: 0x00d1,     #  LATIN CAPITAL LETTER ETH
-    0x00d1: 0x00a5,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0x00e3,     #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0x00e0,     #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0x00e2,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0x00e5,     #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d7: 0x009e,     #  MULTIPLICATION SIGN
-    0x00d8: 0x009d,     #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00d9: 0x00eb,     #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0x00e9,     #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00db: 0x00ea,     #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0x00ed,     #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00de: 0x00e8,     #  LATIN CAPITAL LETTER THORN
-    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x00c6,     #  LATIN SMALL LETTER A WITH TILDE
-    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x0086,     #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x0091,     #  LATIN SMALL LIGATURE AE
-    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x008d,     #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x008c,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x008b,     #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f0: 0x00d0,     #  LATIN SMALL LETTER ETH
-    0x00f1: 0x00a4,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x0095,     #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0x00e4,     #  LATIN SMALL LETTER O WITH TILDE
-    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,     #  DIVISION SIGN
-    0x00f8: 0x009b,     #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0x0097,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x0096,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0x00ec,     #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00fe: 0x00e7,     #  LATIN SMALL LETTER THORN
-    0x00ff: 0x0098,     #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x20ac: 0x00d5,     #  EURO SIGN
-    0x0192: 0x009f,     #  LATIN SMALL LETTER F WITH HOOK
-    0x2017: 0x00f2,     #  DOUBLE LOW LINE
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp860.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp860.py
deleted file mode 100644
index ca96653..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp860.py
+++ /dev/null
@@ -1,698 +0,0 @@
-""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP860.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp860',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e3,     #  LATIN SMALL LETTER A WITH TILDE
-    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00c1,     #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00ca,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00cd,     #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x008c: 0x00d4,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x008d: 0x00ec,     #  LATIN SMALL LETTER I WITH GRAVE
-    0x008e: 0x00c3,     #  LATIN CAPITAL LETTER A WITH TILDE
-    0x008f: 0x00c2,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00c0,     #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x0092: 0x00c8,     #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f5,     #  LATIN SMALL LETTER O WITH TILDE
-    0x0095: 0x00f2,     #  LATIN SMALL LETTER O WITH GRAVE
-    0x0096: 0x00da,     #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x0097: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x0098: 0x00cc,     #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x0099: 0x00d5,     #  LATIN CAPITAL LETTER O WITH TILDE
-    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00a2,     #  CENT SIGN
-    0x009c: 0x00a3,     #  POUND SIGN
-    0x009d: 0x00d9,     #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x009e: 0x20a7,     #  PESETA SIGN
-    0x009f: 0x00d3,     #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00a5: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00a6: 0x00aa,     #  FEMININE ORDINAL INDICATOR
-    0x00a7: 0x00ba,     #  MASCULINE ORDINAL INDICATOR
-    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
-    0x00a9: 0x00d2,     #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00aa: 0x00ac,     #  NOT SIGN
-    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x258c,     #  LEFT HALF BLOCK
-    0x00de: 0x2590,     #  RIGHT HALF BLOCK
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x03b1,     #  GREEK SMALL LETTER ALPHA
-    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
-    0x00e3: 0x03c0,     #  GREEK SMALL LETTER PI
-    0x00e4: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
-    0x00e5: 0x03c3,     #  GREEK SMALL LETTER SIGMA
-    0x00e6: 0x00b5,     #  MICRO SIGN
-    0x00e7: 0x03c4,     #  GREEK SMALL LETTER TAU
-    0x00e8: 0x03a6,     #  GREEK CAPITAL LETTER PHI
-    0x00e9: 0x0398,     #  GREEK CAPITAL LETTER THETA
-    0x00ea: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
-    0x00eb: 0x03b4,     #  GREEK SMALL LETTER DELTA
-    0x00ec: 0x221e,     #  INFINITY
-    0x00ed: 0x03c6,     #  GREEK SMALL LETTER PHI
-    0x00ee: 0x03b5,     #  GREEK SMALL LETTER EPSILON
-    0x00ef: 0x2229,     #  INTERSECTION
-    0x00f0: 0x2261,     #  IDENTICAL TO
-    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
-    0x00f2: 0x2265,     #  GREATER-THAN OR EQUAL TO
-    0x00f3: 0x2264,     #  LESS-THAN OR EQUAL TO
-    0x00f4: 0x2320,     #  TOP HALF INTEGRAL
-    0x00f5: 0x2321,     #  BOTTOM HALF INTEGRAL
-    0x00f6: 0x00f7,     #  DIVISION SIGN
-    0x00f7: 0x2248,     #  ALMOST EQUAL TO
-    0x00f8: 0x00b0,     #  DEGREE SIGN
-    0x00f9: 0x2219,     #  BULLET OPERATOR
-    0x00fa: 0x00b7,     #  MIDDLE DOT
-    0x00fb: 0x221a,     #  SQUARE ROOT
-    0x00fc: 0x207f,     #  SUPERSCRIPT LATIN SMALL LETTER N
-    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'     #  0x0084 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xc1'     #  0x0086 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xca'     #  0x0089 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xcd'     #  0x008b -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xd4'     #  0x008c -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xec'     #  0x008d -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xc3'     #  0x008e -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc2'     #  0x008f -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xc0'     #  0x0091 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc8'     #  0x0092 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'     #  0x0094 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf2'     #  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xda'     #  0x0096 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xf9'     #  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xcc'     #  0x0098 -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd5'     #  0x0099 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xa2'     #  0x009b -> CENT SIGN
-    u'\xa3'     #  0x009c -> POUND SIGN
-    u'\xd9'     #  0x009d -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\u20a7'   #  0x009e -> PESETA SIGN
-    u'\xd3'     #  0x009f -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf1'     #  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xd1'     #  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xaa'     #  0x00a6 -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0x00a7 -> MASCULINE ORDINAL INDICATOR
-    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
-    u'\xd2'     #  0x00a9 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xac'     #  0x00aa -> NOT SIGN
-    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\u03b1'   #  0x00e0 -> GREEK SMALL LETTER ALPHA
-    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\u0393'   #  0x00e2 -> GREEK CAPITAL LETTER GAMMA
-    u'\u03c0'   #  0x00e3 -> GREEK SMALL LETTER PI
-    u'\u03a3'   #  0x00e4 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03c3'   #  0x00e5 -> GREEK SMALL LETTER SIGMA
-    u'\xb5'     #  0x00e6 -> MICRO SIGN
-    u'\u03c4'   #  0x00e7 -> GREEK SMALL LETTER TAU
-    u'\u03a6'   #  0x00e8 -> GREEK CAPITAL LETTER PHI
-    u'\u0398'   #  0x00e9 -> GREEK CAPITAL LETTER THETA
-    u'\u03a9'   #  0x00ea -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b4'   #  0x00eb -> GREEK SMALL LETTER DELTA
-    u'\u221e'   #  0x00ec -> INFINITY
-    u'\u03c6'   #  0x00ed -> GREEK SMALL LETTER PHI
-    u'\u03b5'   #  0x00ee -> GREEK SMALL LETTER EPSILON
-    u'\u2229'   #  0x00ef -> INTERSECTION
-    u'\u2261'   #  0x00f0 -> IDENTICAL TO
-    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2265'   #  0x00f2 -> GREATER-THAN OR EQUAL TO
-    u'\u2264'   #  0x00f3 -> LESS-THAN OR EQUAL TO
-    u'\u2320'   #  0x00f4 -> TOP HALF INTEGRAL
-    u'\u2321'   #  0x00f5 -> BOTTOM HALF INTEGRAL
-    u'\xf7'     #  0x00f6 -> DIVISION SIGN
-    u'\u2248'   #  0x00f7 -> ALMOST EQUAL TO
-    u'\xb0'     #  0x00f8 -> DEGREE SIGN
-    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
-    u'\xb7'     #  0x00fa -> MIDDLE DOT
-    u'\u221a'   #  0x00fb -> SQUARE ROOT
-    u'\u207f'   #  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
-    0x00a2: 0x009b,     #  CENT SIGN
-    0x00a3: 0x009c,     #  POUND SIGN
-    0x00aa: 0x00a6,     #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,     #  NOT SIGN
-    0x00b0: 0x00f8,     #  DEGREE SIGN
-    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
-    0x00b5: 0x00e6,     #  MICRO SIGN
-    0x00b7: 0x00fa,     #  MIDDLE DOT
-    0x00ba: 0x00a7,     #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
-    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
-    0x00c0: 0x0091,     #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c1: 0x0086,     #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c2: 0x008f,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c3: 0x008e,     #  LATIN CAPITAL LETTER A WITH TILDE
-    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0x0092,     #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0x0089,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cc: 0x0098,     #  LATIN CAPITAL LETTER I WITH GRAVE
-    0x00cd: 0x008b,     #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00d1: 0x00a5,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d2: 0x00a9,     #  LATIN CAPITAL LETTER O WITH GRAVE
-    0x00d3: 0x009f,     #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d4: 0x008c,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d5: 0x0099,     #  LATIN CAPITAL LETTER O WITH TILDE
-    0x00d9: 0x009d,     #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00da: 0x0096,     #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e3: 0x0084,     #  LATIN SMALL LETTER A WITH TILDE
-    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00ec: 0x008d,     #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00f1: 0x00a4,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x0095,     #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f5: 0x0094,     #  LATIN SMALL LETTER O WITH TILDE
-    0x00f7: 0x00f6,     #  DIVISION SIGN
-    0x00f9: 0x0097,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0393: 0x00e2,     #  GREEK CAPITAL LETTER GAMMA
-    0x0398: 0x00e9,     #  GREEK CAPITAL LETTER THETA
-    0x03a3: 0x00e4,     #  GREEK CAPITAL LETTER SIGMA
-    0x03a6: 0x00e8,     #  GREEK CAPITAL LETTER PHI
-    0x03a9: 0x00ea,     #  GREEK CAPITAL LETTER OMEGA
-    0x03b1: 0x00e0,     #  GREEK SMALL LETTER ALPHA
-    0x03b4: 0x00eb,     #  GREEK SMALL LETTER DELTA
-    0x03b5: 0x00ee,     #  GREEK SMALL LETTER EPSILON
-    0x03c0: 0x00e3,     #  GREEK SMALL LETTER PI
-    0x03c3: 0x00e5,     #  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00e7,     #  GREEK SMALL LETTER TAU
-    0x03c6: 0x00ed,     #  GREEK SMALL LETTER PHI
-    0x207f: 0x00fc,     #  SUPERSCRIPT LATIN SMALL LETTER N
-    0x20a7: 0x009e,     #  PESETA SIGN
-    0x2219: 0x00f9,     #  BULLET OPERATOR
-    0x221a: 0x00fb,     #  SQUARE ROOT
-    0x221e: 0x00ec,     #  INFINITY
-    0x2229: 0x00ef,     #  INTERSECTION
-    0x2248: 0x00f7,     #  ALMOST EQUAL TO
-    0x2261: 0x00f0,     #  IDENTICAL TO
-    0x2264: 0x00f3,     #  LESS-THAN OR EQUAL TO
-    0x2265: 0x00f2,     #  GREATER-THAN OR EQUAL TO
-    0x2320: 0x00f4,     #  TOP HALF INTEGRAL
-    0x2321: 0x00f5,     #  BOTTOM HALF INTEGRAL
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x258c: 0x00dd,     #  LEFT HALF BLOCK
-    0x2590: 0x00de,     #  RIGHT HALF BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp861.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp861.py
deleted file mode 100644
index ce08f10..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp861.py
+++ /dev/null
@@ -1,698 +0,0 @@
-""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP861.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp861',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00e5,     #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00d0,     #  LATIN CAPITAL LETTER ETH
-    0x008c: 0x00f0,     #  LATIN SMALL LETTER ETH
-    0x008d: 0x00de,     #  LATIN CAPITAL LETTER THORN
-    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x00c5,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00e6,     #  LATIN SMALL LIGATURE AE
-    0x0092: 0x00c6,     #  LATIN CAPITAL LIGATURE AE
-    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x00fe,     #  LATIN SMALL LETTER THORN
-    0x0096: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x0097: 0x00dd,     #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x0098: 0x00fd,     #  LATIN SMALL LETTER Y WITH ACUTE
-    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00f8,     #  LATIN SMALL LETTER O WITH STROKE
-    0x009c: 0x00a3,     #  POUND SIGN
-    0x009d: 0x00d8,     #  LATIN CAPITAL LETTER O WITH STROKE
-    0x009e: 0x20a7,     #  PESETA SIGN
-    0x009f: 0x0192,     #  LATIN SMALL LETTER F WITH HOOK
-    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00c1,     #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00a5: 0x00cd,     #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00a6: 0x00d3,     #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00a7: 0x00da,     #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
-    0x00a9: 0x2310,     #  REVERSED NOT SIGN
-    0x00aa: 0x00ac,     #  NOT SIGN
-    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x258c,     #  LEFT HALF BLOCK
-    0x00de: 0x2590,     #  RIGHT HALF BLOCK
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x03b1,     #  GREEK SMALL LETTER ALPHA
-    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
-    0x00e3: 0x03c0,     #  GREEK SMALL LETTER PI
-    0x00e4: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
-    0x00e5: 0x03c3,     #  GREEK SMALL LETTER SIGMA
-    0x00e6: 0x00b5,     #  MICRO SIGN
-    0x00e7: 0x03c4,     #  GREEK SMALL LETTER TAU
-    0x00e8: 0x03a6,     #  GREEK CAPITAL LETTER PHI
-    0x00e9: 0x0398,     #  GREEK CAPITAL LETTER THETA
-    0x00ea: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
-    0x00eb: 0x03b4,     #  GREEK SMALL LETTER DELTA
-    0x00ec: 0x221e,     #  INFINITY
-    0x00ed: 0x03c6,     #  GREEK SMALL LETTER PHI
-    0x00ee: 0x03b5,     #  GREEK SMALL LETTER EPSILON
-    0x00ef: 0x2229,     #  INTERSECTION
-    0x00f0: 0x2261,     #  IDENTICAL TO
-    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
-    0x00f2: 0x2265,     #  GREATER-THAN OR EQUAL TO
-    0x00f3: 0x2264,     #  LESS-THAN OR EQUAL TO
-    0x00f4: 0x2320,     #  TOP HALF INTEGRAL
-    0x00f5: 0x2321,     #  BOTTOM HALF INTEGRAL
-    0x00f6: 0x00f7,     #  DIVISION SIGN
-    0x00f7: 0x2248,     #  ALMOST EQUAL TO
-    0x00f8: 0x00b0,     #  DEGREE SIGN
-    0x00f9: 0x2219,     #  BULLET OPERATOR
-    0x00fa: 0x00b7,     #  MIDDLE DOT
-    0x00fb: 0x221a,     #  SQUARE ROOT
-    0x00fc: 0x207f,     #  SUPERSCRIPT LATIN SMALL LETTER N
-    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe5'     #  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xd0'     #  0x008b -> LATIN CAPITAL LETTER ETH
-    u'\xf0'     #  0x008c -> LATIN SMALL LETTER ETH
-    u'\xde'     #  0x008d -> LATIN CAPITAL LETTER THORN
-    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xe6'     #  0x0091 -> LATIN SMALL LIGATURE AE
-    u'\xc6'     #  0x0092 -> LATIN CAPITAL LIGATURE AE
-    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xfe'     #  0x0095 -> LATIN SMALL LETTER THORN
-    u'\xfb'     #  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xdd'     #  0x0097 -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xfd'     #  0x0098 -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xf8'     #  0x009b -> LATIN SMALL LETTER O WITH STROKE
-    u'\xa3'     #  0x009c -> POUND SIGN
-    u'\xd8'     #  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u20a7'   #  0x009e -> PESETA SIGN
-    u'\u0192'   #  0x009f -> LATIN SMALL LETTER F WITH HOOK
-    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xc1'     #  0x00a4 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xcd'     #  0x00a5 -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xd3'     #  0x00a6 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xda'     #  0x00a7 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
-    u'\u2310'   #  0x00a9 -> REVERSED NOT SIGN
-    u'\xac'     #  0x00aa -> NOT SIGN
-    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\u03b1'   #  0x00e0 -> GREEK SMALL LETTER ALPHA
-    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\u0393'   #  0x00e2 -> GREEK CAPITAL LETTER GAMMA
-    u'\u03c0'   #  0x00e3 -> GREEK SMALL LETTER PI
-    u'\u03a3'   #  0x00e4 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03c3'   #  0x00e5 -> GREEK SMALL LETTER SIGMA
-    u'\xb5'     #  0x00e6 -> MICRO SIGN
-    u'\u03c4'   #  0x00e7 -> GREEK SMALL LETTER TAU
-    u'\u03a6'   #  0x00e8 -> GREEK CAPITAL LETTER PHI
-    u'\u0398'   #  0x00e9 -> GREEK CAPITAL LETTER THETA
-    u'\u03a9'   #  0x00ea -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b4'   #  0x00eb -> GREEK SMALL LETTER DELTA
-    u'\u221e'   #  0x00ec -> INFINITY
-    u'\u03c6'   #  0x00ed -> GREEK SMALL LETTER PHI
-    u'\u03b5'   #  0x00ee -> GREEK SMALL LETTER EPSILON
-    u'\u2229'   #  0x00ef -> INTERSECTION
-    u'\u2261'   #  0x00f0 -> IDENTICAL TO
-    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2265'   #  0x00f2 -> GREATER-THAN OR EQUAL TO
-    u'\u2264'   #  0x00f3 -> LESS-THAN OR EQUAL TO
-    u'\u2320'   #  0x00f4 -> TOP HALF INTEGRAL
-    u'\u2321'   #  0x00f5 -> BOTTOM HALF INTEGRAL
-    u'\xf7'     #  0x00f6 -> DIVISION SIGN
-    u'\u2248'   #  0x00f7 -> ALMOST EQUAL TO
-    u'\xb0'     #  0x00f8 -> DEGREE SIGN
-    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
-    u'\xb7'     #  0x00fa -> MIDDLE DOT
-    u'\u221a'   #  0x00fb -> SQUARE ROOT
-    u'\u207f'   #  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
-    0x00a3: 0x009c,     #  POUND SIGN
-    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,     #  NOT SIGN
-    0x00b0: 0x00f8,     #  DEGREE SIGN
-    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
-    0x00b5: 0x00e6,     #  MICRO SIGN
-    0x00b7: 0x00fa,     #  MIDDLE DOT
-    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
-    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
-    0x00c1: 0x00a4,     #  LATIN CAPITAL LETTER A WITH ACUTE
-    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x008f,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x0092,     #  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00cd: 0x00a5,     #  LATIN CAPITAL LETTER I WITH ACUTE
-    0x00d0: 0x008b,     #  LATIN CAPITAL LETTER ETH
-    0x00d3: 0x00a6,     #  LATIN CAPITAL LETTER O WITH ACUTE
-    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d8: 0x009d,     #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00da: 0x00a7,     #  LATIN CAPITAL LETTER U WITH ACUTE
-    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00dd: 0x0097,     #  LATIN CAPITAL LETTER Y WITH ACUTE
-    0x00de: 0x008d,     #  LATIN CAPITAL LETTER THORN
-    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x0086,     #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x0091,     #  LATIN SMALL LIGATURE AE
-    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00f0: 0x008c,     #  LATIN SMALL LETTER ETH
-    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,     #  DIVISION SIGN
-    0x00f8: 0x009b,     #  LATIN SMALL LETTER O WITH STROKE
-    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x0096,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00fd: 0x0098,     #  LATIN SMALL LETTER Y WITH ACUTE
-    0x00fe: 0x0095,     #  LATIN SMALL LETTER THORN
-    0x0192: 0x009f,     #  LATIN SMALL LETTER F WITH HOOK
-    0x0393: 0x00e2,     #  GREEK CAPITAL LETTER GAMMA
-    0x0398: 0x00e9,     #  GREEK CAPITAL LETTER THETA
-    0x03a3: 0x00e4,     #  GREEK CAPITAL LETTER SIGMA
-    0x03a6: 0x00e8,     #  GREEK CAPITAL LETTER PHI
-    0x03a9: 0x00ea,     #  GREEK CAPITAL LETTER OMEGA
-    0x03b1: 0x00e0,     #  GREEK SMALL LETTER ALPHA
-    0x03b4: 0x00eb,     #  GREEK SMALL LETTER DELTA
-    0x03b5: 0x00ee,     #  GREEK SMALL LETTER EPSILON
-    0x03c0: 0x00e3,     #  GREEK SMALL LETTER PI
-    0x03c3: 0x00e5,     #  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00e7,     #  GREEK SMALL LETTER TAU
-    0x03c6: 0x00ed,     #  GREEK SMALL LETTER PHI
-    0x207f: 0x00fc,     #  SUPERSCRIPT LATIN SMALL LETTER N
-    0x20a7: 0x009e,     #  PESETA SIGN
-    0x2219: 0x00f9,     #  BULLET OPERATOR
-    0x221a: 0x00fb,     #  SQUARE ROOT
-    0x221e: 0x00ec,     #  INFINITY
-    0x2229: 0x00ef,     #  INTERSECTION
-    0x2248: 0x00f7,     #  ALMOST EQUAL TO
-    0x2261: 0x00f0,     #  IDENTICAL TO
-    0x2264: 0x00f3,     #  LESS-THAN OR EQUAL TO
-    0x2265: 0x00f2,     #  GREATER-THAN OR EQUAL TO
-    0x2310: 0x00a9,     #  REVERSED NOT SIGN
-    0x2320: 0x00f4,     #  TOP HALF INTEGRAL
-    0x2321: 0x00f5,     #  BOTTOM HALF INTEGRAL
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x258c: 0x00dd,     #  LEFT HALF BLOCK
-    0x2590: 0x00de,     #  RIGHT HALF BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp862.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp862.py
deleted file mode 100644
index ac81345..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp862.py
+++ /dev/null
@@ -1,698 +0,0 @@
-""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP862.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp862',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x05d0,     #  HEBREW LETTER ALEF
-    0x0081: 0x05d1,     #  HEBREW LETTER BET
-    0x0082: 0x05d2,     #  HEBREW LETTER GIMEL
-    0x0083: 0x05d3,     #  HEBREW LETTER DALET
-    0x0084: 0x05d4,     #  HEBREW LETTER HE
-    0x0085: 0x05d5,     #  HEBREW LETTER VAV
-    0x0086: 0x05d6,     #  HEBREW LETTER ZAYIN
-    0x0087: 0x05d7,     #  HEBREW LETTER HET
-    0x0088: 0x05d8,     #  HEBREW LETTER TET
-    0x0089: 0x05d9,     #  HEBREW LETTER YOD
-    0x008a: 0x05da,     #  HEBREW LETTER FINAL KAF
-    0x008b: 0x05db,     #  HEBREW LETTER KAF
-    0x008c: 0x05dc,     #  HEBREW LETTER LAMED
-    0x008d: 0x05dd,     #  HEBREW LETTER FINAL MEM
-    0x008e: 0x05de,     #  HEBREW LETTER MEM
-    0x008f: 0x05df,     #  HEBREW LETTER FINAL NUN
-    0x0090: 0x05e0,     #  HEBREW LETTER NUN
-    0x0091: 0x05e1,     #  HEBREW LETTER SAMEKH
-    0x0092: 0x05e2,     #  HEBREW LETTER AYIN
-    0x0093: 0x05e3,     #  HEBREW LETTER FINAL PE
-    0x0094: 0x05e4,     #  HEBREW LETTER PE
-    0x0095: 0x05e5,     #  HEBREW LETTER FINAL TSADI
-    0x0096: 0x05e6,     #  HEBREW LETTER TSADI
-    0x0097: 0x05e7,     #  HEBREW LETTER QOF
-    0x0098: 0x05e8,     #  HEBREW LETTER RESH
-    0x0099: 0x05e9,     #  HEBREW LETTER SHIN
-    0x009a: 0x05ea,     #  HEBREW LETTER TAV
-    0x009b: 0x00a2,     #  CENT SIGN
-    0x009c: 0x00a3,     #  POUND SIGN
-    0x009d: 0x00a5,     #  YEN SIGN
-    0x009e: 0x20a7,     #  PESETA SIGN
-    0x009f: 0x0192,     #  LATIN SMALL LETTER F WITH HOOK
-    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00a5: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00a6: 0x00aa,     #  FEMININE ORDINAL INDICATOR
-    0x00a7: 0x00ba,     #  MASCULINE ORDINAL INDICATOR
-    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
-    0x00a9: 0x2310,     #  REVERSED NOT SIGN
-    0x00aa: 0x00ac,     #  NOT SIGN
-    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x258c,     #  LEFT HALF BLOCK
-    0x00de: 0x2590,     #  RIGHT HALF BLOCK
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x03b1,     #  GREEK SMALL LETTER ALPHA
-    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00e2: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
-    0x00e3: 0x03c0,     #  GREEK SMALL LETTER PI
-    0x00e4: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
-    0x00e5: 0x03c3,     #  GREEK SMALL LETTER SIGMA
-    0x00e6: 0x00b5,     #  MICRO SIGN
-    0x00e7: 0x03c4,     #  GREEK SMALL LETTER TAU
-    0x00e8: 0x03a6,     #  GREEK CAPITAL LETTER PHI
-    0x00e9: 0x0398,     #  GREEK CAPITAL LETTER THETA
-    0x00ea: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
-    0x00eb: 0x03b4,     #  GREEK SMALL LETTER DELTA
-    0x00ec: 0x221e,     #  INFINITY
-    0x00ed: 0x03c6,     #  GREEK SMALL LETTER PHI
-    0x00ee: 0x03b5,     #  GREEK SMALL LETTER EPSILON
-    0x00ef: 0x2229,     #  INTERSECTION
-    0x00f0: 0x2261,     #  IDENTICAL TO
-    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
-    0x00f2: 0x2265,     #  GREATER-THAN OR EQUAL TO
-    0x00f3: 0x2264,     #  LESS-THAN OR EQUAL TO
-    0x00f4: 0x2320,     #  TOP HALF INTEGRAL
-    0x00f5: 0x2321,     #  BOTTOM HALF INTEGRAL
-    0x00f6: 0x00f7,     #  DIVISION SIGN
-    0x00f7: 0x2248,     #  ALMOST EQUAL TO
-    0x00f8: 0x00b0,     #  DEGREE SIGN
-    0x00f9: 0x2219,     #  BULLET OPERATOR
-    0x00fa: 0x00b7,     #  MIDDLE DOT
-    0x00fb: 0x221a,     #  SQUARE ROOT
-    0x00fc: 0x207f,     #  SUPERSCRIPT LATIN SMALL LETTER N
-    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\u05d0'   #  0x0080 -> HEBREW LETTER ALEF
-    u'\u05d1'   #  0x0081 -> HEBREW LETTER BET
-    u'\u05d2'   #  0x0082 -> HEBREW LETTER GIMEL
-    u'\u05d3'   #  0x0083 -> HEBREW LETTER DALET
-    u'\u05d4'   #  0x0084 -> HEBREW LETTER HE
-    u'\u05d5'   #  0x0085 -> HEBREW LETTER VAV
-    u'\u05d6'   #  0x0086 -> HEBREW LETTER ZAYIN
-    u'\u05d7'   #  0x0087 -> HEBREW LETTER HET
-    u'\u05d8'   #  0x0088 -> HEBREW LETTER TET
-    u'\u05d9'   #  0x0089 -> HEBREW LETTER YOD
-    u'\u05da'   #  0x008a -> HEBREW LETTER FINAL KAF
-    u'\u05db'   #  0x008b -> HEBREW LETTER KAF
-    u'\u05dc'   #  0x008c -> HEBREW LETTER LAMED
-    u'\u05dd'   #  0x008d -> HEBREW LETTER FINAL MEM
-    u'\u05de'   #  0x008e -> HEBREW LETTER MEM
-    u'\u05df'   #  0x008f -> HEBREW LETTER FINAL NUN
-    u'\u05e0'   #  0x0090 -> HEBREW LETTER NUN
-    u'\u05e1'   #  0x0091 -> HEBREW LETTER SAMEKH
-    u'\u05e2'   #  0x0092 -> HEBREW LETTER AYIN
-    u'\u05e3'   #  0x0093 -> HEBREW LETTER FINAL PE
-    u'\u05e4'   #  0x0094 -> HEBREW LETTER PE
-    u'\u05e5'   #  0x0095 -> HEBREW LETTER FINAL TSADI
-    u'\u05e6'   #  0x0096 -> HEBREW LETTER TSADI
-    u'\u05e7'   #  0x0097 -> HEBREW LETTER QOF
-    u'\u05e8'   #  0x0098 -> HEBREW LETTER RESH
-    u'\u05e9'   #  0x0099 -> HEBREW LETTER SHIN
-    u'\u05ea'   #  0x009a -> HEBREW LETTER TAV
-    u'\xa2'     #  0x009b -> CENT SIGN
-    u'\xa3'     #  0x009c -> POUND SIGN
-    u'\xa5'     #  0x009d -> YEN SIGN
-    u'\u20a7'   #  0x009e -> PESETA SIGN
-    u'\u0192'   #  0x009f -> LATIN SMALL LETTER F WITH HOOK
-    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf1'     #  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xd1'     #  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xaa'     #  0x00a6 -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0x00a7 -> MASCULINE ORDINAL INDICATOR
-    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
-    u'\u2310'   #  0x00a9 -> REVERSED NOT SIGN
-    u'\xac'     #  0x00aa -> NOT SIGN
-    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\u03b1'   #  0x00e0 -> GREEK SMALL LETTER ALPHA
-    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S (GERMAN)
-    u'\u0393'   #  0x00e2 -> GREEK CAPITAL LETTER GAMMA
-    u'\u03c0'   #  0x00e3 -> GREEK SMALL LETTER PI
-    u'\u03a3'   #  0x00e4 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03c3'   #  0x00e5 -> GREEK SMALL LETTER SIGMA
-    u'\xb5'     #  0x00e6 -> MICRO SIGN
-    u'\u03c4'   #  0x00e7 -> GREEK SMALL LETTER TAU
-    u'\u03a6'   #  0x00e8 -> GREEK CAPITAL LETTER PHI
-    u'\u0398'   #  0x00e9 -> GREEK CAPITAL LETTER THETA
-    u'\u03a9'   #  0x00ea -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b4'   #  0x00eb -> GREEK SMALL LETTER DELTA
-    u'\u221e'   #  0x00ec -> INFINITY
-    u'\u03c6'   #  0x00ed -> GREEK SMALL LETTER PHI
-    u'\u03b5'   #  0x00ee -> GREEK SMALL LETTER EPSILON
-    u'\u2229'   #  0x00ef -> INTERSECTION
-    u'\u2261'   #  0x00f0 -> IDENTICAL TO
-    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2265'   #  0x00f2 -> GREATER-THAN OR EQUAL TO
-    u'\u2264'   #  0x00f3 -> LESS-THAN OR EQUAL TO
-    u'\u2320'   #  0x00f4 -> TOP HALF INTEGRAL
-    u'\u2321'   #  0x00f5 -> BOTTOM HALF INTEGRAL
-    u'\xf7'     #  0x00f6 -> DIVISION SIGN
-    u'\u2248'   #  0x00f7 -> ALMOST EQUAL TO
-    u'\xb0'     #  0x00f8 -> DEGREE SIGN
-    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
-    u'\xb7'     #  0x00fa -> MIDDLE DOT
-    u'\u221a'   #  0x00fb -> SQUARE ROOT
-    u'\u207f'   #  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
-    0x00a2: 0x009b,     #  CENT SIGN
-    0x00a3: 0x009c,     #  POUND SIGN
-    0x00a5: 0x009d,     #  YEN SIGN
-    0x00aa: 0x00a6,     #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,     #  NOT SIGN
-    0x00b0: 0x00f8,     #  DEGREE SIGN
-    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
-    0x00b5: 0x00e6,     #  MICRO SIGN
-    0x00b7: 0x00fa,     #  MIDDLE DOT
-    0x00ba: 0x00a7,     #  MASCULINE ORDINAL INDICATOR
-    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
-    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
-    0x00d1: 0x00a5,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S (GERMAN)
-    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00f1: 0x00a4,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f7: 0x00f6,     #  DIVISION SIGN
-    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x0192: 0x009f,     #  LATIN SMALL LETTER F WITH HOOK
-    0x0393: 0x00e2,     #  GREEK CAPITAL LETTER GAMMA
-    0x0398: 0x00e9,     #  GREEK CAPITAL LETTER THETA
-    0x03a3: 0x00e4,     #  GREEK CAPITAL LETTER SIGMA
-    0x03a6: 0x00e8,     #  GREEK CAPITAL LETTER PHI
-    0x03a9: 0x00ea,     #  GREEK CAPITAL LETTER OMEGA
-    0x03b1: 0x00e0,     #  GREEK SMALL LETTER ALPHA
-    0x03b4: 0x00eb,     #  GREEK SMALL LETTER DELTA
-    0x03b5: 0x00ee,     #  GREEK SMALL LETTER EPSILON
-    0x03c0: 0x00e3,     #  GREEK SMALL LETTER PI
-    0x03c3: 0x00e5,     #  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00e7,     #  GREEK SMALL LETTER TAU
-    0x03c6: 0x00ed,     #  GREEK SMALL LETTER PHI
-    0x05d0: 0x0080,     #  HEBREW LETTER ALEF
-    0x05d1: 0x0081,     #  HEBREW LETTER BET
-    0x05d2: 0x0082,     #  HEBREW LETTER GIMEL
-    0x05d3: 0x0083,     #  HEBREW LETTER DALET
-    0x05d4: 0x0084,     #  HEBREW LETTER HE
-    0x05d5: 0x0085,     #  HEBREW LETTER VAV
-    0x05d6: 0x0086,     #  HEBREW LETTER ZAYIN
-    0x05d7: 0x0087,     #  HEBREW LETTER HET
-    0x05d8: 0x0088,     #  HEBREW LETTER TET
-    0x05d9: 0x0089,     #  HEBREW LETTER YOD
-    0x05da: 0x008a,     #  HEBREW LETTER FINAL KAF
-    0x05db: 0x008b,     #  HEBREW LETTER KAF
-    0x05dc: 0x008c,     #  HEBREW LETTER LAMED
-    0x05dd: 0x008d,     #  HEBREW LETTER FINAL MEM
-    0x05de: 0x008e,     #  HEBREW LETTER MEM
-    0x05df: 0x008f,     #  HEBREW LETTER FINAL NUN
-    0x05e0: 0x0090,     #  HEBREW LETTER NUN
-    0x05e1: 0x0091,     #  HEBREW LETTER SAMEKH
-    0x05e2: 0x0092,     #  HEBREW LETTER AYIN
-    0x05e3: 0x0093,     #  HEBREW LETTER FINAL PE
-    0x05e4: 0x0094,     #  HEBREW LETTER PE
-    0x05e5: 0x0095,     #  HEBREW LETTER FINAL TSADI
-    0x05e6: 0x0096,     #  HEBREW LETTER TSADI
-    0x05e7: 0x0097,     #  HEBREW LETTER QOF
-    0x05e8: 0x0098,     #  HEBREW LETTER RESH
-    0x05e9: 0x0099,     #  HEBREW LETTER SHIN
-    0x05ea: 0x009a,     #  HEBREW LETTER TAV
-    0x207f: 0x00fc,     #  SUPERSCRIPT LATIN SMALL LETTER N
-    0x20a7: 0x009e,     #  PESETA SIGN
-    0x2219: 0x00f9,     #  BULLET OPERATOR
-    0x221a: 0x00fb,     #  SQUARE ROOT
-    0x221e: 0x00ec,     #  INFINITY
-    0x2229: 0x00ef,     #  INTERSECTION
-    0x2248: 0x00f7,     #  ALMOST EQUAL TO
-    0x2261: 0x00f0,     #  IDENTICAL TO
-    0x2264: 0x00f3,     #  LESS-THAN OR EQUAL TO
-    0x2265: 0x00f2,     #  GREATER-THAN OR EQUAL TO
-    0x2310: 0x00a9,     #  REVERSED NOT SIGN
-    0x2320: 0x00f4,     #  TOP HALF INTEGRAL
-    0x2321: 0x00f5,     #  BOTTOM HALF INTEGRAL
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x258c: 0x00dd,     #  LEFT HALF BLOCK
-    0x2590: 0x00de,     #  RIGHT HALF BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp863.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp863.py
deleted file mode 100644
index fc8dfa5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp863.py
+++ /dev/null
@@ -1,698 +0,0 @@
-""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP863.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp863',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00c2,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00b6,     #  PILCROW SIGN
-    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00ef,     #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x008c: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x008d: 0x2017,     #  DOUBLE LOW LINE
-    0x008e: 0x00c0,     #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x008f: 0x00a7,     #  SECTION SIGN
-    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00c8,     #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x0092: 0x00ca,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00cb,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x0095: 0x00cf,     #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x0096: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x0097: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x0098: 0x00a4,     #  CURRENCY SIGN
-    0x0099: 0x00d4,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00a2,     #  CENT SIGN
-    0x009c: 0x00a3,     #  POUND SIGN
-    0x009d: 0x00d9,     #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x009e: 0x00db,     #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x009f: 0x0192,     #  LATIN SMALL LETTER F WITH HOOK
-    0x00a0: 0x00a6,     #  BROKEN BAR
-    0x00a1: 0x00b4,     #  ACUTE ACCENT
-    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00a8,     #  DIAERESIS
-    0x00a5: 0x00b8,     #  CEDILLA
-    0x00a6: 0x00b3,     #  SUPERSCRIPT THREE
-    0x00a7: 0x00af,     #  MACRON
-    0x00a8: 0x00ce,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00a9: 0x2310,     #  REVERSED NOT SIGN
-    0x00aa: 0x00ac,     #  NOT SIGN
-    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00be,     #  VULGAR FRACTION THREE QUARTERS
-    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x258c,     #  LEFT HALF BLOCK
-    0x00de: 0x2590,     #  RIGHT HALF BLOCK
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x03b1,     #  GREEK SMALL LETTER ALPHA
-    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
-    0x00e3: 0x03c0,     #  GREEK SMALL LETTER PI
-    0x00e4: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
-    0x00e5: 0x03c3,     #  GREEK SMALL LETTER SIGMA
-    0x00e6: 0x00b5,     #  MICRO SIGN
-    0x00e7: 0x03c4,     #  GREEK SMALL LETTER TAU
-    0x00e8: 0x03a6,     #  GREEK CAPITAL LETTER PHI
-    0x00e9: 0x0398,     #  GREEK CAPITAL LETTER THETA
-    0x00ea: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
-    0x00eb: 0x03b4,     #  GREEK SMALL LETTER DELTA
-    0x00ec: 0x221e,     #  INFINITY
-    0x00ed: 0x03c6,     #  GREEK SMALL LETTER PHI
-    0x00ee: 0x03b5,     #  GREEK SMALL LETTER EPSILON
-    0x00ef: 0x2229,     #  INTERSECTION
-    0x00f0: 0x2261,     #  IDENTICAL TO
-    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
-    0x00f2: 0x2265,     #  GREATER-THAN OR EQUAL TO
-    0x00f3: 0x2264,     #  LESS-THAN OR EQUAL TO
-    0x00f4: 0x2320,     #  TOP HALF INTEGRAL
-    0x00f5: 0x2321,     #  BOTTOM HALF INTEGRAL
-    0x00f6: 0x00f7,     #  DIVISION SIGN
-    0x00f7: 0x2248,     #  ALMOST EQUAL TO
-    0x00f8: 0x00b0,     #  DEGREE SIGN
-    0x00f9: 0x2219,     #  BULLET OPERATOR
-    0x00fa: 0x00b7,     #  MIDDLE DOT
-    0x00fb: 0x221a,     #  SQUARE ROOT
-    0x00fc: 0x207f,     #  SUPERSCRIPT LATIN SMALL LETTER N
-    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xc2'     #  0x0084 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xb6'     #  0x0086 -> PILCROW SIGN
-    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xef'     #  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xee'     #  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u2017'   #  0x008d -> DOUBLE LOW LINE
-    u'\xc0'     #  0x008e -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xa7'     #  0x008f -> SECTION SIGN
-    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xc8'     #  0x0091 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xca'     #  0x0092 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xcb'     #  0x0094 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcf'     #  0x0095 -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xfb'     #  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xf9'     #  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xa4'     #  0x0098 -> CURRENCY SIGN
-    u'\xd4'     #  0x0099 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xa2'     #  0x009b -> CENT SIGN
-    u'\xa3'     #  0x009c -> POUND SIGN
-    u'\xd9'     #  0x009d -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xdb'     #  0x009e -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\u0192'   #  0x009f -> LATIN SMALL LETTER F WITH HOOK
-    u'\xa6'     #  0x00a0 -> BROKEN BAR
-    u'\xb4'     #  0x00a1 -> ACUTE ACCENT
-    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xa8'     #  0x00a4 -> DIAERESIS
-    u'\xb8'     #  0x00a5 -> CEDILLA
-    u'\xb3'     #  0x00a6 -> SUPERSCRIPT THREE
-    u'\xaf'     #  0x00a7 -> MACRON
-    u'\xce'     #  0x00a8 -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\u2310'   #  0x00a9 -> REVERSED NOT SIGN
-    u'\xac'     #  0x00aa -> NOT SIGN
-    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xbe'     #  0x00ad -> VULGAR FRACTION THREE QUARTERS
-    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\u03b1'   #  0x00e0 -> GREEK SMALL LETTER ALPHA
-    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\u0393'   #  0x00e2 -> GREEK CAPITAL LETTER GAMMA
-    u'\u03c0'   #  0x00e3 -> GREEK SMALL LETTER PI
-    u'\u03a3'   #  0x00e4 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03c3'   #  0x00e5 -> GREEK SMALL LETTER SIGMA
-    u'\xb5'     #  0x00e6 -> MICRO SIGN
-    u'\u03c4'   #  0x00e7 -> GREEK SMALL LETTER TAU
-    u'\u03a6'   #  0x00e8 -> GREEK CAPITAL LETTER PHI
-    u'\u0398'   #  0x00e9 -> GREEK CAPITAL LETTER THETA
-    u'\u03a9'   #  0x00ea -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b4'   #  0x00eb -> GREEK SMALL LETTER DELTA
-    u'\u221e'   #  0x00ec -> INFINITY
-    u'\u03c6'   #  0x00ed -> GREEK SMALL LETTER PHI
-    u'\u03b5'   #  0x00ee -> GREEK SMALL LETTER EPSILON
-    u'\u2229'   #  0x00ef -> INTERSECTION
-    u'\u2261'   #  0x00f0 -> IDENTICAL TO
-    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2265'   #  0x00f2 -> GREATER-THAN OR EQUAL TO
-    u'\u2264'   #  0x00f3 -> LESS-THAN OR EQUAL TO
-    u'\u2320'   #  0x00f4 -> TOP HALF INTEGRAL
-    u'\u2321'   #  0x00f5 -> BOTTOM HALF INTEGRAL
-    u'\xf7'     #  0x00f6 -> DIVISION SIGN
-    u'\u2248'   #  0x00f7 -> ALMOST EQUAL TO
-    u'\xb0'     #  0x00f8 -> DEGREE SIGN
-    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
-    u'\xb7'     #  0x00fa -> MIDDLE DOT
-    u'\u221a'   #  0x00fb -> SQUARE ROOT
-    u'\u207f'   #  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00a2: 0x009b,     #  CENT SIGN
-    0x00a3: 0x009c,     #  POUND SIGN
-    0x00a4: 0x0098,     #  CURRENCY SIGN
-    0x00a6: 0x00a0,     #  BROKEN BAR
-    0x00a7: 0x008f,     #  SECTION SIGN
-    0x00a8: 0x00a4,     #  DIAERESIS
-    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,     #  NOT SIGN
-    0x00af: 0x00a7,     #  MACRON
-    0x00b0: 0x00f8,     #  DEGREE SIGN
-    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
-    0x00b3: 0x00a6,     #  SUPERSCRIPT THREE
-    0x00b4: 0x00a1,     #  ACUTE ACCENT
-    0x00b5: 0x00e6,     #  MICRO SIGN
-    0x00b6: 0x0086,     #  PILCROW SIGN
-    0x00b7: 0x00fa,     #  MIDDLE DOT
-    0x00b8: 0x00a5,     #  CEDILLA
-    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
-    0x00be: 0x00ad,     #  VULGAR FRACTION THREE QUARTERS
-    0x00c0: 0x008e,     #  LATIN CAPITAL LETTER A WITH GRAVE
-    0x00c2: 0x0084,     #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c8: 0x0091,     #  LATIN CAPITAL LETTER E WITH GRAVE
-    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00ca: 0x0092,     #  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    0x00cb: 0x0094,     #  LATIN CAPITAL LETTER E WITH DIAERESIS
-    0x00ce: 0x00a8,     #  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    0x00cf: 0x0095,     #  LATIN CAPITAL LETTER I WITH DIAERESIS
-    0x00d4: 0x0099,     #  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    0x00d9: 0x009d,     #  LATIN CAPITAL LETTER U WITH GRAVE
-    0x00db: 0x009e,     #  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ee: 0x008c,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x008b,     #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f7: 0x00f6,     #  DIVISION SIGN
-    0x00f9: 0x0097,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x0096,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0192: 0x009f,     #  LATIN SMALL LETTER F WITH HOOK
-    0x0393: 0x00e2,     #  GREEK CAPITAL LETTER GAMMA
-    0x0398: 0x00e9,     #  GREEK CAPITAL LETTER THETA
-    0x03a3: 0x00e4,     #  GREEK CAPITAL LETTER SIGMA
-    0x03a6: 0x00e8,     #  GREEK CAPITAL LETTER PHI
-    0x03a9: 0x00ea,     #  GREEK CAPITAL LETTER OMEGA
-    0x03b1: 0x00e0,     #  GREEK SMALL LETTER ALPHA
-    0x03b4: 0x00eb,     #  GREEK SMALL LETTER DELTA
-    0x03b5: 0x00ee,     #  GREEK SMALL LETTER EPSILON
-    0x03c0: 0x00e3,     #  GREEK SMALL LETTER PI
-    0x03c3: 0x00e5,     #  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00e7,     #  GREEK SMALL LETTER TAU
-    0x03c6: 0x00ed,     #  GREEK SMALL LETTER PHI
-    0x2017: 0x008d,     #  DOUBLE LOW LINE
-    0x207f: 0x00fc,     #  SUPERSCRIPT LATIN SMALL LETTER N
-    0x2219: 0x00f9,     #  BULLET OPERATOR
-    0x221a: 0x00fb,     #  SQUARE ROOT
-    0x221e: 0x00ec,     #  INFINITY
-    0x2229: 0x00ef,     #  INTERSECTION
-    0x2248: 0x00f7,     #  ALMOST EQUAL TO
-    0x2261: 0x00f0,     #  IDENTICAL TO
-    0x2264: 0x00f3,     #  LESS-THAN OR EQUAL TO
-    0x2265: 0x00f2,     #  GREATER-THAN OR EQUAL TO
-    0x2310: 0x00a9,     #  REVERSED NOT SIGN
-    0x2320: 0x00f4,     #  TOP HALF INTEGRAL
-    0x2321: 0x00f5,     #  BOTTOM HALF INTEGRAL
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x258c: 0x00dd,     #  LEFT HALF BLOCK
-    0x2590: 0x00de,     #  RIGHT HALF BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp864.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp864.py
deleted file mode 100644
index 9733ada..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp864.py
+++ /dev/null
@@ -1,690 +0,0 @@
-""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP864.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp864',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0025: 0x066a,     #  ARABIC PERCENT SIGN
-    0x0080: 0x00b0,     #  DEGREE SIGN
-    0x0081: 0x00b7,     #  MIDDLE DOT
-    0x0082: 0x2219,     #  BULLET OPERATOR
-    0x0083: 0x221a,     #  SQUARE ROOT
-    0x0084: 0x2592,     #  MEDIUM SHADE
-    0x0085: 0x2500,     #  FORMS LIGHT HORIZONTAL
-    0x0086: 0x2502,     #  FORMS LIGHT VERTICAL
-    0x0087: 0x253c,     #  FORMS LIGHT VERTICAL AND HORIZONTAL
-    0x0088: 0x2524,     #  FORMS LIGHT VERTICAL AND LEFT
-    0x0089: 0x252c,     #  FORMS LIGHT DOWN AND HORIZONTAL
-    0x008a: 0x251c,     #  FORMS LIGHT VERTICAL AND RIGHT
-    0x008b: 0x2534,     #  FORMS LIGHT UP AND HORIZONTAL
-    0x008c: 0x2510,     #  FORMS LIGHT DOWN AND LEFT
-    0x008d: 0x250c,     #  FORMS LIGHT DOWN AND RIGHT
-    0x008e: 0x2514,     #  FORMS LIGHT UP AND RIGHT
-    0x008f: 0x2518,     #  FORMS LIGHT UP AND LEFT
-    0x0090: 0x03b2,     #  GREEK SMALL BETA
-    0x0091: 0x221e,     #  INFINITY
-    0x0092: 0x03c6,     #  GREEK SMALL PHI
-    0x0093: 0x00b1,     #  PLUS-OR-MINUS SIGN
-    0x0094: 0x00bd,     #  FRACTION 1/2
-    0x0095: 0x00bc,     #  FRACTION 1/4
-    0x0096: 0x2248,     #  ALMOST EQUAL TO
-    0x0097: 0x00ab,     #  LEFT POINTING GUILLEMET
-    0x0098: 0x00bb,     #  RIGHT POINTING GUILLEMET
-    0x0099: 0xfef7,     #  ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
-    0x009a: 0xfef8,     #  ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
-    0x009b: None,       #  UNDEFINED
-    0x009c: None,       #  UNDEFINED
-    0x009d: 0xfefb,     #  ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
-    0x009e: 0xfefc,     #  ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-    0x009f: None,       #  UNDEFINED
-    0x00a1: 0x00ad,     #  SOFT HYPHEN
-    0x00a2: 0xfe82,     #  ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
-    0x00a5: 0xfe84,     #  ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
-    0x00a6: None,       #  UNDEFINED
-    0x00a7: None,       #  UNDEFINED
-    0x00a8: 0xfe8e,     #  ARABIC LETTER ALEF FINAL FORM
-    0x00a9: 0xfe8f,     #  ARABIC LETTER BEH ISOLATED FORM
-    0x00aa: 0xfe95,     #  ARABIC LETTER TEH ISOLATED FORM
-    0x00ab: 0xfe99,     #  ARABIC LETTER THEH ISOLATED FORM
-    0x00ac: 0x060c,     #  ARABIC COMMA
-    0x00ad: 0xfe9d,     #  ARABIC LETTER JEEM ISOLATED FORM
-    0x00ae: 0xfea1,     #  ARABIC LETTER HAH ISOLATED FORM
-    0x00af: 0xfea5,     #  ARABIC LETTER KHAH ISOLATED FORM
-    0x00b0: 0x0660,     #  ARABIC-INDIC DIGIT ZERO
-    0x00b1: 0x0661,     #  ARABIC-INDIC DIGIT ONE
-    0x00b2: 0x0662,     #  ARABIC-INDIC DIGIT TWO
-    0x00b3: 0x0663,     #  ARABIC-INDIC DIGIT THREE
-    0x00b4: 0x0664,     #  ARABIC-INDIC DIGIT FOUR
-    0x00b5: 0x0665,     #  ARABIC-INDIC DIGIT FIVE
-    0x00b6: 0x0666,     #  ARABIC-INDIC DIGIT SIX
-    0x00b7: 0x0667,     #  ARABIC-INDIC DIGIT SEVEN
-    0x00b8: 0x0668,     #  ARABIC-INDIC DIGIT EIGHT
-    0x00b9: 0x0669,     #  ARABIC-INDIC DIGIT NINE
-    0x00ba: 0xfed1,     #  ARABIC LETTER FEH ISOLATED FORM
-    0x00bb: 0x061b,     #  ARABIC SEMICOLON
-    0x00bc: 0xfeb1,     #  ARABIC LETTER SEEN ISOLATED FORM
-    0x00bd: 0xfeb5,     #  ARABIC LETTER SHEEN ISOLATED FORM
-    0x00be: 0xfeb9,     #  ARABIC LETTER SAD ISOLATED FORM
-    0x00bf: 0x061f,     #  ARABIC QUESTION MARK
-    0x00c0: 0x00a2,     #  CENT SIGN
-    0x00c1: 0xfe80,     #  ARABIC LETTER HAMZA ISOLATED FORM
-    0x00c2: 0xfe81,     #  ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-    0x00c3: 0xfe83,     #  ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
-    0x00c4: 0xfe85,     #  ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-    0x00c5: 0xfeca,     #  ARABIC LETTER AIN FINAL FORM
-    0x00c6: 0xfe8b,     #  ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-    0x00c7: 0xfe8d,     #  ARABIC LETTER ALEF ISOLATED FORM
-    0x00c8: 0xfe91,     #  ARABIC LETTER BEH INITIAL FORM
-    0x00c9: 0xfe93,     #  ARABIC LETTER TEH MARBUTA ISOLATED FORM
-    0x00ca: 0xfe97,     #  ARABIC LETTER TEH INITIAL FORM
-    0x00cb: 0xfe9b,     #  ARABIC LETTER THEH INITIAL FORM
-    0x00cc: 0xfe9f,     #  ARABIC LETTER JEEM INITIAL FORM
-    0x00cd: 0xfea3,     #  ARABIC LETTER HAH INITIAL FORM
-    0x00ce: 0xfea7,     #  ARABIC LETTER KHAH INITIAL FORM
-    0x00cf: 0xfea9,     #  ARABIC LETTER DAL ISOLATED FORM
-    0x00d0: 0xfeab,     #  ARABIC LETTER THAL ISOLATED FORM
-    0x00d1: 0xfead,     #  ARABIC LETTER REH ISOLATED FORM
-    0x00d2: 0xfeaf,     #  ARABIC LETTER ZAIN ISOLATED FORM
-    0x00d3: 0xfeb3,     #  ARABIC LETTER SEEN INITIAL FORM
-    0x00d4: 0xfeb7,     #  ARABIC LETTER SHEEN INITIAL FORM
-    0x00d5: 0xfebb,     #  ARABIC LETTER SAD INITIAL FORM
-    0x00d6: 0xfebf,     #  ARABIC LETTER DAD INITIAL FORM
-    0x00d7: 0xfec1,     #  ARABIC LETTER TAH ISOLATED FORM
-    0x00d8: 0xfec5,     #  ARABIC LETTER ZAH ISOLATED FORM
-    0x00d9: 0xfecb,     #  ARABIC LETTER AIN INITIAL FORM
-    0x00da: 0xfecf,     #  ARABIC LETTER GHAIN INITIAL FORM
-    0x00db: 0x00a6,     #  BROKEN VERTICAL BAR
-    0x00dc: 0x00ac,     #  NOT SIGN
-    0x00dd: 0x00f7,     #  DIVISION SIGN
-    0x00de: 0x00d7,     #  MULTIPLICATION SIGN
-    0x00df: 0xfec9,     #  ARABIC LETTER AIN ISOLATED FORM
-    0x00e0: 0x0640,     #  ARABIC TATWEEL
-    0x00e1: 0xfed3,     #  ARABIC LETTER FEH INITIAL FORM
-    0x00e2: 0xfed7,     #  ARABIC LETTER QAF INITIAL FORM
-    0x00e3: 0xfedb,     #  ARABIC LETTER KAF INITIAL FORM
-    0x00e4: 0xfedf,     #  ARABIC LETTER LAM INITIAL FORM
-    0x00e5: 0xfee3,     #  ARABIC LETTER MEEM INITIAL FORM
-    0x00e6: 0xfee7,     #  ARABIC LETTER NOON INITIAL FORM
-    0x00e7: 0xfeeb,     #  ARABIC LETTER HEH INITIAL FORM
-    0x00e8: 0xfeed,     #  ARABIC LETTER WAW ISOLATED FORM
-    0x00e9: 0xfeef,     #  ARABIC LETTER ALEF MAKSURA ISOLATED FORM
-    0x00ea: 0xfef3,     #  ARABIC LETTER YEH INITIAL FORM
-    0x00eb: 0xfebd,     #  ARABIC LETTER DAD ISOLATED FORM
-    0x00ec: 0xfecc,     #  ARABIC LETTER AIN MEDIAL FORM
-    0x00ed: 0xfece,     #  ARABIC LETTER GHAIN FINAL FORM
-    0x00ee: 0xfecd,     #  ARABIC LETTER GHAIN ISOLATED FORM
-    0x00ef: 0xfee1,     #  ARABIC LETTER MEEM ISOLATED FORM
-    0x00f0: 0xfe7d,     #  ARABIC SHADDA MEDIAL FORM
-    0x00f1: 0x0651,     #  ARABIC SHADDAH
-    0x00f2: 0xfee5,     #  ARABIC LETTER NOON ISOLATED FORM
-    0x00f3: 0xfee9,     #  ARABIC LETTER HEH ISOLATED FORM
-    0x00f4: 0xfeec,     #  ARABIC LETTER HEH MEDIAL FORM
-    0x00f5: 0xfef0,     #  ARABIC LETTER ALEF MAKSURA FINAL FORM
-    0x00f6: 0xfef2,     #  ARABIC LETTER YEH FINAL FORM
-    0x00f7: 0xfed0,     #  ARABIC LETTER GHAIN MEDIAL FORM
-    0x00f8: 0xfed5,     #  ARABIC LETTER QAF ISOLATED FORM
-    0x00f9: 0xfef5,     #  ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
-    0x00fa: 0xfef6,     #  ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
-    0x00fb: 0xfedd,     #  ARABIC LETTER LAM ISOLATED FORM
-    0x00fc: 0xfed9,     #  ARABIC LETTER KAF ISOLATED FORM
-    0x00fd: 0xfef1,     #  ARABIC LETTER YEH ISOLATED FORM
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: None,       #  UNDEFINED
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'\u066a'   #  0x0025 -> ARABIC PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\xb0'     #  0x0080 -> DEGREE SIGN
-    u'\xb7'     #  0x0081 -> MIDDLE DOT
-    u'\u2219'   #  0x0082 -> BULLET OPERATOR
-    u'\u221a'   #  0x0083 -> SQUARE ROOT
-    u'\u2592'   #  0x0084 -> MEDIUM SHADE
-    u'\u2500'   #  0x0085 -> FORMS LIGHT HORIZONTAL
-    u'\u2502'   #  0x0086 -> FORMS LIGHT VERTICAL
-    u'\u253c'   #  0x0087 -> FORMS LIGHT VERTICAL AND HORIZONTAL
-    u'\u2524'   #  0x0088 -> FORMS LIGHT VERTICAL AND LEFT
-    u'\u252c'   #  0x0089 -> FORMS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x008a -> FORMS LIGHT VERTICAL AND RIGHT
-    u'\u2534'   #  0x008b -> FORMS LIGHT UP AND HORIZONTAL
-    u'\u2510'   #  0x008c -> FORMS LIGHT DOWN AND LEFT
-    u'\u250c'   #  0x008d -> FORMS LIGHT DOWN AND RIGHT
-    u'\u2514'   #  0x008e -> FORMS LIGHT UP AND RIGHT
-    u'\u2518'   #  0x008f -> FORMS LIGHT UP AND LEFT
-    u'\u03b2'   #  0x0090 -> GREEK SMALL BETA
-    u'\u221e'   #  0x0091 -> INFINITY
-    u'\u03c6'   #  0x0092 -> GREEK SMALL PHI
-    u'\xb1'     #  0x0093 -> PLUS-OR-MINUS SIGN
-    u'\xbd'     #  0x0094 -> FRACTION 1/2
-    u'\xbc'     #  0x0095 -> FRACTION 1/4
-    u'\u2248'   #  0x0096 -> ALMOST EQUAL TO
-    u'\xab'     #  0x0097 -> LEFT POINTING GUILLEMET
-    u'\xbb'     #  0x0098 -> RIGHT POINTING GUILLEMET
-    u'\ufef7'   #  0x0099 -> ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufef8'   #  0x009a -> ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
-    u'\ufffe'   #  0x009b -> UNDEFINED
-    u'\ufffe'   #  0x009c -> UNDEFINED
-    u'\ufefb'   #  0x009d -> ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
-    u'\ufefc'   #  0x009e -> ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-    u'\ufffe'   #  0x009f -> UNDEFINED
-    u'\xa0'     #  0x00a0 -> NON-BREAKING SPACE
-    u'\xad'     #  0x00a1 -> SOFT HYPHEN
-    u'\ufe82'   #  0x00a2 -> ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
-    u'\xa3'     #  0x00a3 -> POUND SIGN
-    u'\xa4'     #  0x00a4 -> CURRENCY SIGN
-    u'\ufe84'   #  0x00a5 -> ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
-    u'\ufffe'   #  0x00a6 -> UNDEFINED
-    u'\ufffe'   #  0x00a7 -> UNDEFINED
-    u'\ufe8e'   #  0x00a8 -> ARABIC LETTER ALEF FINAL FORM
-    u'\ufe8f'   #  0x00a9 -> ARABIC LETTER BEH ISOLATED FORM
-    u'\ufe95'   #  0x00aa -> ARABIC LETTER TEH ISOLATED FORM
-    u'\ufe99'   #  0x00ab -> ARABIC LETTER THEH ISOLATED FORM
-    u'\u060c'   #  0x00ac -> ARABIC COMMA
-    u'\ufe9d'   #  0x00ad -> ARABIC LETTER JEEM ISOLATED FORM
-    u'\ufea1'   #  0x00ae -> ARABIC LETTER HAH ISOLATED FORM
-    u'\ufea5'   #  0x00af -> ARABIC LETTER KHAH ISOLATED FORM
-    u'\u0660'   #  0x00b0 -> ARABIC-INDIC DIGIT ZERO
-    u'\u0661'   #  0x00b1 -> ARABIC-INDIC DIGIT ONE
-    u'\u0662'   #  0x00b2 -> ARABIC-INDIC DIGIT TWO
-    u'\u0663'   #  0x00b3 -> ARABIC-INDIC DIGIT THREE
-    u'\u0664'   #  0x00b4 -> ARABIC-INDIC DIGIT FOUR
-    u'\u0665'   #  0x00b5 -> ARABIC-INDIC DIGIT FIVE
-    u'\u0666'   #  0x00b6 -> ARABIC-INDIC DIGIT SIX
-    u'\u0667'   #  0x00b7 -> ARABIC-INDIC DIGIT SEVEN
-    u'\u0668'   #  0x00b8 -> ARABIC-INDIC DIGIT EIGHT
-    u'\u0669'   #  0x00b9 -> ARABIC-INDIC DIGIT NINE
-    u'\ufed1'   #  0x00ba -> ARABIC LETTER FEH ISOLATED FORM
-    u'\u061b'   #  0x00bb -> ARABIC SEMICOLON
-    u'\ufeb1'   #  0x00bc -> ARABIC LETTER SEEN ISOLATED FORM
-    u'\ufeb5'   #  0x00bd -> ARABIC LETTER SHEEN ISOLATED FORM
-    u'\ufeb9'   #  0x00be -> ARABIC LETTER SAD ISOLATED FORM
-    u'\u061f'   #  0x00bf -> ARABIC QUESTION MARK
-    u'\xa2'     #  0x00c0 -> CENT SIGN
-    u'\ufe80'   #  0x00c1 -> ARABIC LETTER HAMZA ISOLATED FORM
-    u'\ufe81'   #  0x00c2 -> ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-    u'\ufe83'   #  0x00c3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufe85'   #  0x00c4 -> ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-    u'\ufeca'   #  0x00c5 -> ARABIC LETTER AIN FINAL FORM
-    u'\ufe8b'   #  0x00c6 -> ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-    u'\ufe8d'   #  0x00c7 -> ARABIC LETTER ALEF ISOLATED FORM
-    u'\ufe91'   #  0x00c8 -> ARABIC LETTER BEH INITIAL FORM
-    u'\ufe93'   #  0x00c9 -> ARABIC LETTER TEH MARBUTA ISOLATED FORM
-    u'\ufe97'   #  0x00ca -> ARABIC LETTER TEH INITIAL FORM
-    u'\ufe9b'   #  0x00cb -> ARABIC LETTER THEH INITIAL FORM
-    u'\ufe9f'   #  0x00cc -> ARABIC LETTER JEEM INITIAL FORM
-    u'\ufea3'   #  0x00cd -> ARABIC LETTER HAH INITIAL FORM
-    u'\ufea7'   #  0x00ce -> ARABIC LETTER KHAH INITIAL FORM
-    u'\ufea9'   #  0x00cf -> ARABIC LETTER DAL ISOLATED FORM
-    u'\ufeab'   #  0x00d0 -> ARABIC LETTER THAL ISOLATED FORM
-    u'\ufead'   #  0x00d1 -> ARABIC LETTER REH ISOLATED FORM
-    u'\ufeaf'   #  0x00d2 -> ARABIC LETTER ZAIN ISOLATED FORM
-    u'\ufeb3'   #  0x00d3 -> ARABIC LETTER SEEN INITIAL FORM
-    u'\ufeb7'   #  0x00d4 -> ARABIC LETTER SHEEN INITIAL FORM
-    u'\ufebb'   #  0x00d5 -> ARABIC LETTER SAD INITIAL FORM
-    u'\ufebf'   #  0x00d6 -> ARABIC LETTER DAD INITIAL FORM
-    u'\ufec1'   #  0x00d7 -> ARABIC LETTER TAH ISOLATED FORM
-    u'\ufec5'   #  0x00d8 -> ARABIC LETTER ZAH ISOLATED FORM
-    u'\ufecb'   #  0x00d9 -> ARABIC LETTER AIN INITIAL FORM
-    u'\ufecf'   #  0x00da -> ARABIC LETTER GHAIN INITIAL FORM
-    u'\xa6'     #  0x00db -> BROKEN VERTICAL BAR
-    u'\xac'     #  0x00dc -> NOT SIGN
-    u'\xf7'     #  0x00dd -> DIVISION SIGN
-    u'\xd7'     #  0x00de -> MULTIPLICATION SIGN
-    u'\ufec9'   #  0x00df -> ARABIC LETTER AIN ISOLATED FORM
-    u'\u0640'   #  0x00e0 -> ARABIC TATWEEL
-    u'\ufed3'   #  0x00e1 -> ARABIC LETTER FEH INITIAL FORM
-    u'\ufed7'   #  0x00e2 -> ARABIC LETTER QAF INITIAL FORM
-    u'\ufedb'   #  0x00e3 -> ARABIC LETTER KAF INITIAL FORM
-    u'\ufedf'   #  0x00e4 -> ARABIC LETTER LAM INITIAL FORM
-    u'\ufee3'   #  0x00e5 -> ARABIC LETTER MEEM INITIAL FORM
-    u'\ufee7'   #  0x00e6 -> ARABIC LETTER NOON INITIAL FORM
-    u'\ufeeb'   #  0x00e7 -> ARABIC LETTER HEH INITIAL FORM
-    u'\ufeed'   #  0x00e8 -> ARABIC LETTER WAW ISOLATED FORM
-    u'\ufeef'   #  0x00e9 -> ARABIC LETTER ALEF MAKSURA ISOLATED FORM
-    u'\ufef3'   #  0x00ea -> ARABIC LETTER YEH INITIAL FORM
-    u'\ufebd'   #  0x00eb -> ARABIC LETTER DAD ISOLATED FORM
-    u'\ufecc'   #  0x00ec -> ARABIC LETTER AIN MEDIAL FORM
-    u'\ufece'   #  0x00ed -> ARABIC LETTER GHAIN FINAL FORM
-    u'\ufecd'   #  0x00ee -> ARABIC LETTER GHAIN ISOLATED FORM
-    u'\ufee1'   #  0x00ef -> ARABIC LETTER MEEM ISOLATED FORM
-    u'\ufe7d'   #  0x00f0 -> ARABIC SHADDA MEDIAL FORM
-    u'\u0651'   #  0x00f1 -> ARABIC SHADDAH
-    u'\ufee5'   #  0x00f2 -> ARABIC LETTER NOON ISOLATED FORM
-    u'\ufee9'   #  0x00f3 -> ARABIC LETTER HEH ISOLATED FORM
-    u'\ufeec'   #  0x00f4 -> ARABIC LETTER HEH MEDIAL FORM
-    u'\ufef0'   #  0x00f5 -> ARABIC LETTER ALEF MAKSURA FINAL FORM
-    u'\ufef2'   #  0x00f6 -> ARABIC LETTER YEH FINAL FORM
-    u'\ufed0'   #  0x00f7 -> ARABIC LETTER GHAIN MEDIAL FORM
-    u'\ufed5'   #  0x00f8 -> ARABIC LETTER QAF ISOLATED FORM
-    u'\ufef5'   #  0x00f9 -> ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
-    u'\ufef6'   #  0x00fa -> ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
-    u'\ufedd'   #  0x00fb -> ARABIC LETTER LAM ISOLATED FORM
-    u'\ufed9'   #  0x00fc -> ARABIC LETTER KAF ISOLATED FORM
-    u'\ufef1'   #  0x00fd -> ARABIC LETTER YEH ISOLATED FORM
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\ufffe'   #  0x00ff -> UNDEFINED
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00a0,     #  NON-BREAKING SPACE
-    0x00a2: 0x00c0,     #  CENT SIGN
-    0x00a3: 0x00a3,     #  POUND SIGN
-    0x00a4: 0x00a4,     #  CURRENCY SIGN
-    0x00a6: 0x00db,     #  BROKEN VERTICAL BAR
-    0x00ab: 0x0097,     #  LEFT POINTING GUILLEMET
-    0x00ac: 0x00dc,     #  NOT SIGN
-    0x00ad: 0x00a1,     #  SOFT HYPHEN
-    0x00b0: 0x0080,     #  DEGREE SIGN
-    0x00b1: 0x0093,     #  PLUS-OR-MINUS SIGN
-    0x00b7: 0x0081,     #  MIDDLE DOT
-    0x00bb: 0x0098,     #  RIGHT POINTING GUILLEMET
-    0x00bc: 0x0095,     #  FRACTION 1/4
-    0x00bd: 0x0094,     #  FRACTION 1/2
-    0x00d7: 0x00de,     #  MULTIPLICATION SIGN
-    0x00f7: 0x00dd,     #  DIVISION SIGN
-    0x03b2: 0x0090,     #  GREEK SMALL BETA
-    0x03c6: 0x0092,     #  GREEK SMALL PHI
-    0x060c: 0x00ac,     #  ARABIC COMMA
-    0x061b: 0x00bb,     #  ARABIC SEMICOLON
-    0x061f: 0x00bf,     #  ARABIC QUESTION MARK
-    0x0640: 0x00e0,     #  ARABIC TATWEEL
-    0x0651: 0x00f1,     #  ARABIC SHADDAH
-    0x0660: 0x00b0,     #  ARABIC-INDIC DIGIT ZERO
-    0x0661: 0x00b1,     #  ARABIC-INDIC DIGIT ONE
-    0x0662: 0x00b2,     #  ARABIC-INDIC DIGIT TWO
-    0x0663: 0x00b3,     #  ARABIC-INDIC DIGIT THREE
-    0x0664: 0x00b4,     #  ARABIC-INDIC DIGIT FOUR
-    0x0665: 0x00b5,     #  ARABIC-INDIC DIGIT FIVE
-    0x0666: 0x00b6,     #  ARABIC-INDIC DIGIT SIX
-    0x0667: 0x00b7,     #  ARABIC-INDIC DIGIT SEVEN
-    0x0668: 0x00b8,     #  ARABIC-INDIC DIGIT EIGHT
-    0x0669: 0x00b9,     #  ARABIC-INDIC DIGIT NINE
-    0x066a: 0x0025,     #  ARABIC PERCENT SIGN
-    0x2219: 0x0082,     #  BULLET OPERATOR
-    0x221a: 0x0083,     #  SQUARE ROOT
-    0x221e: 0x0091,     #  INFINITY
-    0x2248: 0x0096,     #  ALMOST EQUAL TO
-    0x2500: 0x0085,     #  FORMS LIGHT HORIZONTAL
-    0x2502: 0x0086,     #  FORMS LIGHT VERTICAL
-    0x250c: 0x008d,     #  FORMS LIGHT DOWN AND RIGHT
-    0x2510: 0x008c,     #  FORMS LIGHT DOWN AND LEFT
-    0x2514: 0x008e,     #  FORMS LIGHT UP AND RIGHT
-    0x2518: 0x008f,     #  FORMS LIGHT UP AND LEFT
-    0x251c: 0x008a,     #  FORMS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x0088,     #  FORMS LIGHT VERTICAL AND LEFT
-    0x252c: 0x0089,     #  FORMS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x008b,     #  FORMS LIGHT UP AND HORIZONTAL
-    0x253c: 0x0087,     #  FORMS LIGHT VERTICAL AND HORIZONTAL
-    0x2592: 0x0084,     #  MEDIUM SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-    0xfe7d: 0x00f0,     #  ARABIC SHADDA MEDIAL FORM
-    0xfe80: 0x00c1,     #  ARABIC LETTER HAMZA ISOLATED FORM
-    0xfe81: 0x00c2,     #  ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
-    0xfe82: 0x00a2,     #  ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
-    0xfe83: 0x00c3,     #  ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
-    0xfe84: 0x00a5,     #  ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
-    0xfe85: 0x00c4,     #  ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
-    0xfe8b: 0x00c6,     #  ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
-    0xfe8d: 0x00c7,     #  ARABIC LETTER ALEF ISOLATED FORM
-    0xfe8e: 0x00a8,     #  ARABIC LETTER ALEF FINAL FORM
-    0xfe8f: 0x00a9,     #  ARABIC LETTER BEH ISOLATED FORM
-    0xfe91: 0x00c8,     #  ARABIC LETTER BEH INITIAL FORM
-    0xfe93: 0x00c9,     #  ARABIC LETTER TEH MARBUTA ISOLATED FORM
-    0xfe95: 0x00aa,     #  ARABIC LETTER TEH ISOLATED FORM
-    0xfe97: 0x00ca,     #  ARABIC LETTER TEH INITIAL FORM
-    0xfe99: 0x00ab,     #  ARABIC LETTER THEH ISOLATED FORM
-    0xfe9b: 0x00cb,     #  ARABIC LETTER THEH INITIAL FORM
-    0xfe9d: 0x00ad,     #  ARABIC LETTER JEEM ISOLATED FORM
-    0xfe9f: 0x00cc,     #  ARABIC LETTER JEEM INITIAL FORM
-    0xfea1: 0x00ae,     #  ARABIC LETTER HAH ISOLATED FORM
-    0xfea3: 0x00cd,     #  ARABIC LETTER HAH INITIAL FORM
-    0xfea5: 0x00af,     #  ARABIC LETTER KHAH ISOLATED FORM
-    0xfea7: 0x00ce,     #  ARABIC LETTER KHAH INITIAL FORM
-    0xfea9: 0x00cf,     #  ARABIC LETTER DAL ISOLATED FORM
-    0xfeab: 0x00d0,     #  ARABIC LETTER THAL ISOLATED FORM
-    0xfead: 0x00d1,     #  ARABIC LETTER REH ISOLATED FORM
-    0xfeaf: 0x00d2,     #  ARABIC LETTER ZAIN ISOLATED FORM
-    0xfeb1: 0x00bc,     #  ARABIC LETTER SEEN ISOLATED FORM
-    0xfeb3: 0x00d3,     #  ARABIC LETTER SEEN INITIAL FORM
-    0xfeb5: 0x00bd,     #  ARABIC LETTER SHEEN ISOLATED FORM
-    0xfeb7: 0x00d4,     #  ARABIC LETTER SHEEN INITIAL FORM
-    0xfeb9: 0x00be,     #  ARABIC LETTER SAD ISOLATED FORM
-    0xfebb: 0x00d5,     #  ARABIC LETTER SAD INITIAL FORM
-    0xfebd: 0x00eb,     #  ARABIC LETTER DAD ISOLATED FORM
-    0xfebf: 0x00d6,     #  ARABIC LETTER DAD INITIAL FORM
-    0xfec1: 0x00d7,     #  ARABIC LETTER TAH ISOLATED FORM
-    0xfec5: 0x00d8,     #  ARABIC LETTER ZAH ISOLATED FORM
-    0xfec9: 0x00df,     #  ARABIC LETTER AIN ISOLATED FORM
-    0xfeca: 0x00c5,     #  ARABIC LETTER AIN FINAL FORM
-    0xfecb: 0x00d9,     #  ARABIC LETTER AIN INITIAL FORM
-    0xfecc: 0x00ec,     #  ARABIC LETTER AIN MEDIAL FORM
-    0xfecd: 0x00ee,     #  ARABIC LETTER GHAIN ISOLATED FORM
-    0xfece: 0x00ed,     #  ARABIC LETTER GHAIN FINAL FORM
-    0xfecf: 0x00da,     #  ARABIC LETTER GHAIN INITIAL FORM
-    0xfed0: 0x00f7,     #  ARABIC LETTER GHAIN MEDIAL FORM
-    0xfed1: 0x00ba,     #  ARABIC LETTER FEH ISOLATED FORM
-    0xfed3: 0x00e1,     #  ARABIC LETTER FEH INITIAL FORM
-    0xfed5: 0x00f8,     #  ARABIC LETTER QAF ISOLATED FORM
-    0xfed7: 0x00e2,     #  ARABIC LETTER QAF INITIAL FORM
-    0xfed9: 0x00fc,     #  ARABIC LETTER KAF ISOLATED FORM
-    0xfedb: 0x00e3,     #  ARABIC LETTER KAF INITIAL FORM
-    0xfedd: 0x00fb,     #  ARABIC LETTER LAM ISOLATED FORM
-    0xfedf: 0x00e4,     #  ARABIC LETTER LAM INITIAL FORM
-    0xfee1: 0x00ef,     #  ARABIC LETTER MEEM ISOLATED FORM
-    0xfee3: 0x00e5,     #  ARABIC LETTER MEEM INITIAL FORM
-    0xfee5: 0x00f2,     #  ARABIC LETTER NOON ISOLATED FORM
-    0xfee7: 0x00e6,     #  ARABIC LETTER NOON INITIAL FORM
-    0xfee9: 0x00f3,     #  ARABIC LETTER HEH ISOLATED FORM
-    0xfeeb: 0x00e7,     #  ARABIC LETTER HEH INITIAL FORM
-    0xfeec: 0x00f4,     #  ARABIC LETTER HEH MEDIAL FORM
-    0xfeed: 0x00e8,     #  ARABIC LETTER WAW ISOLATED FORM
-    0xfeef: 0x00e9,     #  ARABIC LETTER ALEF MAKSURA ISOLATED FORM
-    0xfef0: 0x00f5,     #  ARABIC LETTER ALEF MAKSURA FINAL FORM
-    0xfef1: 0x00fd,     #  ARABIC LETTER YEH ISOLATED FORM
-    0xfef2: 0x00f6,     #  ARABIC LETTER YEH FINAL FORM
-    0xfef3: 0x00ea,     #  ARABIC LETTER YEH INITIAL FORM
-    0xfef5: 0x00f9,     #  ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
-    0xfef6: 0x00fa,     #  ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
-    0xfef7: 0x0099,     #  ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
-    0xfef8: 0x009a,     #  ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
-    0xfefb: 0x009d,     #  ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
-    0xfefc: 0x009e,     #  ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp865.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp865.py
deleted file mode 100644
index b246a49..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp865.py
+++ /dev/null
@@ -1,698 +0,0 @@
-""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP865.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp865',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0081: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x0082: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x0083: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x0084: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x0085: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x0086: 0x00e5,     #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x0087: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x0088: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0089: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x008a: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x008b: 0x00ef,     #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x008c: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x008d: 0x00ec,     #  LATIN SMALL LETTER I WITH GRAVE
-    0x008e: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x008f: 0x00c5,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x0090: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0091: 0x00e6,     #  LATIN SMALL LIGATURE AE
-    0x0092: 0x00c6,     #  LATIN CAPITAL LIGATURE AE
-    0x0093: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x0094: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x0095: 0x00f2,     #  LATIN SMALL LETTER O WITH GRAVE
-    0x0096: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x0097: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x0098: 0x00ff,     #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0099: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x009a: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x009b: 0x00f8,     #  LATIN SMALL LETTER O WITH STROKE
-    0x009c: 0x00a3,     #  POUND SIGN
-    0x009d: 0x00d8,     #  LATIN CAPITAL LETTER O WITH STROKE
-    0x009e: 0x20a7,     #  PESETA SIGN
-    0x009f: 0x0192,     #  LATIN SMALL LETTER F WITH HOOK
-    0x00a0: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00a1: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00a2: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00a3: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00a4: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00a5: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00a6: 0x00aa,     #  FEMININE ORDINAL INDICATOR
-    0x00a7: 0x00ba,     #  MASCULINE ORDINAL INDICATOR
-    0x00a8: 0x00bf,     #  INVERTED QUESTION MARK
-    0x00a9: 0x2310,     #  REVERSED NOT SIGN
-    0x00aa: 0x00ac,     #  NOT SIGN
-    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
-    0x00ac: 0x00bc,     #  VULGAR FRACTION ONE QUARTER
-    0x00ad: 0x00a1,     #  INVERTED EXCLAMATION MARK
-    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00a4,     #  CURRENCY SIGN
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x258c,     #  LEFT HALF BLOCK
-    0x00de: 0x2590,     #  RIGHT HALF BLOCK
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x03b1,     #  GREEK SMALL LETTER ALPHA
-    0x00e1: 0x00df,     #  LATIN SMALL LETTER SHARP S
-    0x00e2: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
-    0x00e3: 0x03c0,     #  GREEK SMALL LETTER PI
-    0x00e4: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
-    0x00e5: 0x03c3,     #  GREEK SMALL LETTER SIGMA
-    0x00e6: 0x00b5,     #  MICRO SIGN
-    0x00e7: 0x03c4,     #  GREEK SMALL LETTER TAU
-    0x00e8: 0x03a6,     #  GREEK CAPITAL LETTER PHI
-    0x00e9: 0x0398,     #  GREEK CAPITAL LETTER THETA
-    0x00ea: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
-    0x00eb: 0x03b4,     #  GREEK SMALL LETTER DELTA
-    0x00ec: 0x221e,     #  INFINITY
-    0x00ed: 0x03c6,     #  GREEK SMALL LETTER PHI
-    0x00ee: 0x03b5,     #  GREEK SMALL LETTER EPSILON
-    0x00ef: 0x2229,     #  INTERSECTION
-    0x00f0: 0x2261,     #  IDENTICAL TO
-    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
-    0x00f2: 0x2265,     #  GREATER-THAN OR EQUAL TO
-    0x00f3: 0x2264,     #  LESS-THAN OR EQUAL TO
-    0x00f4: 0x2320,     #  TOP HALF INTEGRAL
-    0x00f5: 0x2321,     #  BOTTOM HALF INTEGRAL
-    0x00f6: 0x00f7,     #  DIVISION SIGN
-    0x00f7: 0x2248,     #  ALMOST EQUAL TO
-    0x00f8: 0x00b0,     #  DEGREE SIGN
-    0x00f9: 0x2219,     #  BULLET OPERATOR
-    0x00fa: 0x00b7,     #  MIDDLE DOT
-    0x00fb: 0x221a,     #  SQUARE ROOT
-    0x00fc: 0x207f,     #  SUPERSCRIPT LATIN SMALL LETTER N
-    0x00fd: 0x00b2,     #  SUPERSCRIPT TWO
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\xc7'     #  0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xfc'     #  0x0081 -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xe9'     #  0x0082 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe2'     #  0x0083 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x0084 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe0'     #  0x0085 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe5'     #  0x0086 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'     #  0x0087 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xea'     #  0x0088 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x0089 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xe8'     #  0x008a -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xef'     #  0x008b -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xee'     #  0x008c -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xec'     #  0x008d -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xc4'     #  0x008e -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0x008f -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc9'     #  0x0090 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xe6'     #  0x0091 -> LATIN SMALL LIGATURE AE
-    u'\xc6'     #  0x0092 -> LATIN CAPITAL LIGATURE AE
-    u'\xf4'     #  0x0093 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x0094 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf2'     #  0x0095 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xfb'     #  0x0096 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xf9'     #  0x0097 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xff'     #  0x0098 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\xd6'     #  0x0099 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x009a -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xf8'     #  0x009b -> LATIN SMALL LETTER O WITH STROKE
-    u'\xa3'     #  0x009c -> POUND SIGN
-    u'\xd8'     #  0x009d -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u20a7'   #  0x009e -> PESETA SIGN
-    u'\u0192'   #  0x009f -> LATIN SMALL LETTER F WITH HOOK
-    u'\xe1'     #  0x00a0 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xed'     #  0x00a1 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xf3'     #  0x00a2 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xfa'     #  0x00a3 -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf1'     #  0x00a4 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xd1'     #  0x00a5 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xaa'     #  0x00a6 -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0x00a7 -> MASCULINE ORDINAL INDICATOR
-    u'\xbf'     #  0x00a8 -> INVERTED QUESTION MARK
-    u'\u2310'   #  0x00a9 -> REVERSED NOT SIGN
-    u'\xac'     #  0x00aa -> NOT SIGN
-    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\xbc'     #  0x00ac -> VULGAR FRACTION ONE QUARTER
-    u'\xa1'     #  0x00ad -> INVERTED EXCLAMATION MARK
-    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xa4'     #  0x00af -> CURRENCY SIGN
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\u03b1'   #  0x00e0 -> GREEK SMALL LETTER ALPHA
-    u'\xdf'     #  0x00e1 -> LATIN SMALL LETTER SHARP S
-    u'\u0393'   #  0x00e2 -> GREEK CAPITAL LETTER GAMMA
-    u'\u03c0'   #  0x00e3 -> GREEK SMALL LETTER PI
-    u'\u03a3'   #  0x00e4 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03c3'   #  0x00e5 -> GREEK SMALL LETTER SIGMA
-    u'\xb5'     #  0x00e6 -> MICRO SIGN
-    u'\u03c4'   #  0x00e7 -> GREEK SMALL LETTER TAU
-    u'\u03a6'   #  0x00e8 -> GREEK CAPITAL LETTER PHI
-    u'\u0398'   #  0x00e9 -> GREEK CAPITAL LETTER THETA
-    u'\u03a9'   #  0x00ea -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b4'   #  0x00eb -> GREEK SMALL LETTER DELTA
-    u'\u221e'   #  0x00ec -> INFINITY
-    u'\u03c6'   #  0x00ed -> GREEK SMALL LETTER PHI
-    u'\u03b5'   #  0x00ee -> GREEK SMALL LETTER EPSILON
-    u'\u2229'   #  0x00ef -> INTERSECTION
-    u'\u2261'   #  0x00f0 -> IDENTICAL TO
-    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
-    u'\u2265'   #  0x00f2 -> GREATER-THAN OR EQUAL TO
-    u'\u2264'   #  0x00f3 -> LESS-THAN OR EQUAL TO
-    u'\u2320'   #  0x00f4 -> TOP HALF INTEGRAL
-    u'\u2321'   #  0x00f5 -> BOTTOM HALF INTEGRAL
-    u'\xf7'     #  0x00f6 -> DIVISION SIGN
-    u'\u2248'   #  0x00f7 -> ALMOST EQUAL TO
-    u'\xb0'     #  0x00f8 -> DEGREE SIGN
-    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
-    u'\xb7'     #  0x00fa -> MIDDLE DOT
-    u'\u221a'   #  0x00fb -> SQUARE ROOT
-    u'\u207f'   #  0x00fc -> SUPERSCRIPT LATIN SMALL LETTER N
-    u'\xb2'     #  0x00fd -> SUPERSCRIPT TWO
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00a1: 0x00ad,     #  INVERTED EXCLAMATION MARK
-    0x00a3: 0x009c,     #  POUND SIGN
-    0x00a4: 0x00af,     #  CURRENCY SIGN
-    0x00aa: 0x00a6,     #  FEMININE ORDINAL INDICATOR
-    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x00aa,     #  NOT SIGN
-    0x00b0: 0x00f8,     #  DEGREE SIGN
-    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
-    0x00b2: 0x00fd,     #  SUPERSCRIPT TWO
-    0x00b5: 0x00e6,     #  MICRO SIGN
-    0x00b7: 0x00fa,     #  MIDDLE DOT
-    0x00ba: 0x00a7,     #  MASCULINE ORDINAL INDICATOR
-    0x00bc: 0x00ac,     #  VULGAR FRACTION ONE QUARTER
-    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
-    0x00bf: 0x00a8,     #  INVERTED QUESTION MARK
-    0x00c4: 0x008e,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c5: 0x008f,     #  LATIN CAPITAL LETTER A WITH RING ABOVE
-    0x00c6: 0x0092,     #  LATIN CAPITAL LIGATURE AE
-    0x00c7: 0x0080,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c9: 0x0090,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00d1: 0x00a5,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d6: 0x0099,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00d8: 0x009d,     #  LATIN CAPITAL LETTER O WITH STROKE
-    0x00dc: 0x009a,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00df: 0x00e1,     #  LATIN SMALL LETTER SHARP S
-    0x00e0: 0x0085,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x00a0,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0083,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0x0084,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e5: 0x0086,     #  LATIN SMALL LETTER A WITH RING ABOVE
-    0x00e6: 0x0091,     #  LATIN SMALL LIGATURE AE
-    0x00e7: 0x0087,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008a,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x0082,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0088,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0089,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ec: 0x008d,     #  LATIN SMALL LETTER I WITH GRAVE
-    0x00ed: 0x00a1,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x008c,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x008b,     #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0x00a4,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00f2: 0x0095,     #  LATIN SMALL LETTER O WITH GRAVE
-    0x00f3: 0x00a2,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0093,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0x0094,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x00f6,     #  DIVISION SIGN
-    0x00f8: 0x009b,     #  LATIN SMALL LETTER O WITH STROKE
-    0x00f9: 0x0097,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x00a3,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x0096,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x0081,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00ff: 0x0098,     #  LATIN SMALL LETTER Y WITH DIAERESIS
-    0x0192: 0x009f,     #  LATIN SMALL LETTER F WITH HOOK
-    0x0393: 0x00e2,     #  GREEK CAPITAL LETTER GAMMA
-    0x0398: 0x00e9,     #  GREEK CAPITAL LETTER THETA
-    0x03a3: 0x00e4,     #  GREEK CAPITAL LETTER SIGMA
-    0x03a6: 0x00e8,     #  GREEK CAPITAL LETTER PHI
-    0x03a9: 0x00ea,     #  GREEK CAPITAL LETTER OMEGA
-    0x03b1: 0x00e0,     #  GREEK SMALL LETTER ALPHA
-    0x03b4: 0x00eb,     #  GREEK SMALL LETTER DELTA
-    0x03b5: 0x00ee,     #  GREEK SMALL LETTER EPSILON
-    0x03c0: 0x00e3,     #  GREEK SMALL LETTER PI
-    0x03c3: 0x00e5,     #  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00e7,     #  GREEK SMALL LETTER TAU
-    0x03c6: 0x00ed,     #  GREEK SMALL LETTER PHI
-    0x207f: 0x00fc,     #  SUPERSCRIPT LATIN SMALL LETTER N
-    0x20a7: 0x009e,     #  PESETA SIGN
-    0x2219: 0x00f9,     #  BULLET OPERATOR
-    0x221a: 0x00fb,     #  SQUARE ROOT
-    0x221e: 0x00ec,     #  INFINITY
-    0x2229: 0x00ef,     #  INTERSECTION
-    0x2248: 0x00f7,     #  ALMOST EQUAL TO
-    0x2261: 0x00f0,     #  IDENTICAL TO
-    0x2264: 0x00f3,     #  LESS-THAN OR EQUAL TO
-    0x2265: 0x00f2,     #  GREATER-THAN OR EQUAL TO
-    0x2310: 0x00a9,     #  REVERSED NOT SIGN
-    0x2320: 0x00f4,     #  TOP HALF INTEGRAL
-    0x2321: 0x00f5,     #  BOTTOM HALF INTEGRAL
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x258c: 0x00dd,     #  LEFT HALF BLOCK
-    0x2590: 0x00de,     #  RIGHT HALF BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp866.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp866.py
deleted file mode 100644
index 70e5139..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp866.py
+++ /dev/null
@@ -1,698 +0,0 @@
-""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP866.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp866',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x0410,     #  CYRILLIC CAPITAL LETTER A
-    0x0081: 0x0411,     #  CYRILLIC CAPITAL LETTER BE
-    0x0082: 0x0412,     #  CYRILLIC CAPITAL LETTER VE
-    0x0083: 0x0413,     #  CYRILLIC CAPITAL LETTER GHE
-    0x0084: 0x0414,     #  CYRILLIC CAPITAL LETTER DE
-    0x0085: 0x0415,     #  CYRILLIC CAPITAL LETTER IE
-    0x0086: 0x0416,     #  CYRILLIC CAPITAL LETTER ZHE
-    0x0087: 0x0417,     #  CYRILLIC CAPITAL LETTER ZE
-    0x0088: 0x0418,     #  CYRILLIC CAPITAL LETTER I
-    0x0089: 0x0419,     #  CYRILLIC CAPITAL LETTER SHORT I
-    0x008a: 0x041a,     #  CYRILLIC CAPITAL LETTER KA
-    0x008b: 0x041b,     #  CYRILLIC CAPITAL LETTER EL
-    0x008c: 0x041c,     #  CYRILLIC CAPITAL LETTER EM
-    0x008d: 0x041d,     #  CYRILLIC CAPITAL LETTER EN
-    0x008e: 0x041e,     #  CYRILLIC CAPITAL LETTER O
-    0x008f: 0x041f,     #  CYRILLIC CAPITAL LETTER PE
-    0x0090: 0x0420,     #  CYRILLIC CAPITAL LETTER ER
-    0x0091: 0x0421,     #  CYRILLIC CAPITAL LETTER ES
-    0x0092: 0x0422,     #  CYRILLIC CAPITAL LETTER TE
-    0x0093: 0x0423,     #  CYRILLIC CAPITAL LETTER U
-    0x0094: 0x0424,     #  CYRILLIC CAPITAL LETTER EF
-    0x0095: 0x0425,     #  CYRILLIC CAPITAL LETTER HA
-    0x0096: 0x0426,     #  CYRILLIC CAPITAL LETTER TSE
-    0x0097: 0x0427,     #  CYRILLIC CAPITAL LETTER CHE
-    0x0098: 0x0428,     #  CYRILLIC CAPITAL LETTER SHA
-    0x0099: 0x0429,     #  CYRILLIC CAPITAL LETTER SHCHA
-    0x009a: 0x042a,     #  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x009b: 0x042b,     #  CYRILLIC CAPITAL LETTER YERU
-    0x009c: 0x042c,     #  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x009d: 0x042d,     #  CYRILLIC CAPITAL LETTER E
-    0x009e: 0x042e,     #  CYRILLIC CAPITAL LETTER YU
-    0x009f: 0x042f,     #  CYRILLIC CAPITAL LETTER YA
-    0x00a0: 0x0430,     #  CYRILLIC SMALL LETTER A
-    0x00a1: 0x0431,     #  CYRILLIC SMALL LETTER BE
-    0x00a2: 0x0432,     #  CYRILLIC SMALL LETTER VE
-    0x00a3: 0x0433,     #  CYRILLIC SMALL LETTER GHE
-    0x00a4: 0x0434,     #  CYRILLIC SMALL LETTER DE
-    0x00a5: 0x0435,     #  CYRILLIC SMALL LETTER IE
-    0x00a6: 0x0436,     #  CYRILLIC SMALL LETTER ZHE
-    0x00a7: 0x0437,     #  CYRILLIC SMALL LETTER ZE
-    0x00a8: 0x0438,     #  CYRILLIC SMALL LETTER I
-    0x00a9: 0x0439,     #  CYRILLIC SMALL LETTER SHORT I
-    0x00aa: 0x043a,     #  CYRILLIC SMALL LETTER KA
-    0x00ab: 0x043b,     #  CYRILLIC SMALL LETTER EL
-    0x00ac: 0x043c,     #  CYRILLIC SMALL LETTER EM
-    0x00ad: 0x043d,     #  CYRILLIC SMALL LETTER EN
-    0x00ae: 0x043e,     #  CYRILLIC SMALL LETTER O
-    0x00af: 0x043f,     #  CYRILLIC SMALL LETTER PE
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x2561,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x00b6: 0x2562,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x00b7: 0x2556,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x00b8: 0x2555,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x255c,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x00be: 0x255b,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x255e,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x00c7: 0x255f,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x2567,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x00d0: 0x2568,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x00d1: 0x2564,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x00d2: 0x2565,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x00d3: 0x2559,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x00d4: 0x2558,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x00d5: 0x2552,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x00d6: 0x2553,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x00d7: 0x256b,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x00d8: 0x256a,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x258c,     #  LEFT HALF BLOCK
-    0x00de: 0x2590,     #  RIGHT HALF BLOCK
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x0440,     #  CYRILLIC SMALL LETTER ER
-    0x00e1: 0x0441,     #  CYRILLIC SMALL LETTER ES
-    0x00e2: 0x0442,     #  CYRILLIC SMALL LETTER TE
-    0x00e3: 0x0443,     #  CYRILLIC SMALL LETTER U
-    0x00e4: 0x0444,     #  CYRILLIC SMALL LETTER EF
-    0x00e5: 0x0445,     #  CYRILLIC SMALL LETTER HA
-    0x00e6: 0x0446,     #  CYRILLIC SMALL LETTER TSE
-    0x00e7: 0x0447,     #  CYRILLIC SMALL LETTER CHE
-    0x00e8: 0x0448,     #  CYRILLIC SMALL LETTER SHA
-    0x00e9: 0x0449,     #  CYRILLIC SMALL LETTER SHCHA
-    0x00ea: 0x044a,     #  CYRILLIC SMALL LETTER HARD SIGN
-    0x00eb: 0x044b,     #  CYRILLIC SMALL LETTER YERU
-    0x00ec: 0x044c,     #  CYRILLIC SMALL LETTER SOFT SIGN
-    0x00ed: 0x044d,     #  CYRILLIC SMALL LETTER E
-    0x00ee: 0x044e,     #  CYRILLIC SMALL LETTER YU
-    0x00ef: 0x044f,     #  CYRILLIC SMALL LETTER YA
-    0x00f0: 0x0401,     #  CYRILLIC CAPITAL LETTER IO
-    0x00f1: 0x0451,     #  CYRILLIC SMALL LETTER IO
-    0x00f2: 0x0404,     #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x00f3: 0x0454,     #  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x00f4: 0x0407,     #  CYRILLIC CAPITAL LETTER YI
-    0x00f5: 0x0457,     #  CYRILLIC SMALL LETTER YI
-    0x00f6: 0x040e,     #  CYRILLIC CAPITAL LETTER SHORT U
-    0x00f7: 0x045e,     #  CYRILLIC SMALL LETTER SHORT U
-    0x00f8: 0x00b0,     #  DEGREE SIGN
-    0x00f9: 0x2219,     #  BULLET OPERATOR
-    0x00fa: 0x00b7,     #  MIDDLE DOT
-    0x00fb: 0x221a,     #  SQUARE ROOT
-    0x00fc: 0x2116,     #  NUMERO SIGN
-    0x00fd: 0x00a4,     #  CURRENCY SIGN
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\u0410'   #  0x0080 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'   #  0x0081 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0412'   #  0x0082 -> CYRILLIC CAPITAL LETTER VE
-    u'\u0413'   #  0x0083 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0414'   #  0x0084 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'   #  0x0085 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0416'   #  0x0086 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0417'   #  0x0087 -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0418'   #  0x0088 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'   #  0x0089 -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'   #  0x008a -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'   #  0x008b -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'   #  0x008c -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'   #  0x008d -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'   #  0x008e -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'   #  0x008f -> CYRILLIC CAPITAL LETTER PE
-    u'\u0420'   #  0x0090 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'   #  0x0091 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'   #  0x0092 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'   #  0x0093 -> CYRILLIC CAPITAL LETTER U
-    u'\u0424'   #  0x0094 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0425'   #  0x0095 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0426'   #  0x0096 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0427'   #  0x0097 -> CYRILLIC CAPITAL LETTER CHE
-    u'\u0428'   #  0x0098 -> CYRILLIC CAPITAL LETTER SHA
-    u'\u0429'   #  0x0099 -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u042a'   #  0x009a -> CYRILLIC CAPITAL LETTER HARD SIGN
-    u'\u042b'   #  0x009b -> CYRILLIC CAPITAL LETTER YERU
-    u'\u042c'   #  0x009c -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042d'   #  0x009d -> CYRILLIC CAPITAL LETTER E
-    u'\u042e'   #  0x009e -> CYRILLIC CAPITAL LETTER YU
-    u'\u042f'   #  0x009f -> CYRILLIC CAPITAL LETTER YA
-    u'\u0430'   #  0x00a0 -> CYRILLIC SMALL LETTER A
-    u'\u0431'   #  0x00a1 -> CYRILLIC SMALL LETTER BE
-    u'\u0432'   #  0x00a2 -> CYRILLIC SMALL LETTER VE
-    u'\u0433'   #  0x00a3 -> CYRILLIC SMALL LETTER GHE
-    u'\u0434'   #  0x00a4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'   #  0x00a5 -> CYRILLIC SMALL LETTER IE
-    u'\u0436'   #  0x00a6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0437'   #  0x00a7 -> CYRILLIC SMALL LETTER ZE
-    u'\u0438'   #  0x00a8 -> CYRILLIC SMALL LETTER I
-    u'\u0439'   #  0x00a9 -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'   #  0x00aa -> CYRILLIC SMALL LETTER KA
-    u'\u043b'   #  0x00ab -> CYRILLIC SMALL LETTER EL
-    u'\u043c'   #  0x00ac -> CYRILLIC SMALL LETTER EM
-    u'\u043d'   #  0x00ad -> CYRILLIC SMALL LETTER EN
-    u'\u043e'   #  0x00ae -> CYRILLIC SMALL LETTER O
-    u'\u043f'   #  0x00af -> CYRILLIC SMALL LETTER PE
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u2561'   #  0x00b5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u2562'   #  0x00b6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2556'   #  0x00b7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2555'   #  0x00b8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255c'   #  0x00bd -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255b'   #  0x00be -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u255e'   #  0x00c6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'   #  0x00c7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u2567'   #  0x00cf -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'   #  0x00d0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2564'   #  0x00d1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'   #  0x00d2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2559'   #  0x00d3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u2558'   #  0x00d4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2552'   #  0x00d5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u2553'   #  0x00d6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u256b'   #  0x00d7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256a'   #  0x00d8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\u258c'   #  0x00dd -> LEFT HALF BLOCK
-    u'\u2590'   #  0x00de -> RIGHT HALF BLOCK
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\u0440'   #  0x00e0 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'   #  0x00e1 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'   #  0x00e2 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'   #  0x00e3 -> CYRILLIC SMALL LETTER U
-    u'\u0444'   #  0x00e4 -> CYRILLIC SMALL LETTER EF
-    u'\u0445'   #  0x00e5 -> CYRILLIC SMALL LETTER HA
-    u'\u0446'   #  0x00e6 -> CYRILLIC SMALL LETTER TSE
-    u'\u0447'   #  0x00e7 -> CYRILLIC SMALL LETTER CHE
-    u'\u0448'   #  0x00e8 -> CYRILLIC SMALL LETTER SHA
-    u'\u0449'   #  0x00e9 -> CYRILLIC SMALL LETTER SHCHA
-    u'\u044a'   #  0x00ea -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u044b'   #  0x00eb -> CYRILLIC SMALL LETTER YERU
-    u'\u044c'   #  0x00ec -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044d'   #  0x00ed -> CYRILLIC SMALL LETTER E
-    u'\u044e'   #  0x00ee -> CYRILLIC SMALL LETTER YU
-    u'\u044f'   #  0x00ef -> CYRILLIC SMALL LETTER YA
-    u'\u0401'   #  0x00f0 -> CYRILLIC CAPITAL LETTER IO
-    u'\u0451'   #  0x00f1 -> CYRILLIC SMALL LETTER IO
-    u'\u0404'   #  0x00f2 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\u0454'   #  0x00f3 -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\u0407'   #  0x00f4 -> CYRILLIC CAPITAL LETTER YI
-    u'\u0457'   #  0x00f5 -> CYRILLIC SMALL LETTER YI
-    u'\u040e'   #  0x00f6 -> CYRILLIC CAPITAL LETTER SHORT U
-    u'\u045e'   #  0x00f7 -> CYRILLIC SMALL LETTER SHORT U
-    u'\xb0'     #  0x00f8 -> DEGREE SIGN
-    u'\u2219'   #  0x00f9 -> BULLET OPERATOR
-    u'\xb7'     #  0x00fa -> MIDDLE DOT
-    u'\u221a'   #  0x00fb -> SQUARE ROOT
-    u'\u2116'   #  0x00fc -> NUMERO SIGN
-    u'\xa4'     #  0x00fd -> CURRENCY SIGN
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00a4: 0x00fd,     #  CURRENCY SIGN
-    0x00b0: 0x00f8,     #  DEGREE SIGN
-    0x00b7: 0x00fa,     #  MIDDLE DOT
-    0x0401: 0x00f0,     #  CYRILLIC CAPITAL LETTER IO
-    0x0404: 0x00f2,     #  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    0x0407: 0x00f4,     #  CYRILLIC CAPITAL LETTER YI
-    0x040e: 0x00f6,     #  CYRILLIC CAPITAL LETTER SHORT U
-    0x0410: 0x0080,     #  CYRILLIC CAPITAL LETTER A
-    0x0411: 0x0081,     #  CYRILLIC CAPITAL LETTER BE
-    0x0412: 0x0082,     #  CYRILLIC CAPITAL LETTER VE
-    0x0413: 0x0083,     #  CYRILLIC CAPITAL LETTER GHE
-    0x0414: 0x0084,     #  CYRILLIC CAPITAL LETTER DE
-    0x0415: 0x0085,     #  CYRILLIC CAPITAL LETTER IE
-    0x0416: 0x0086,     #  CYRILLIC CAPITAL LETTER ZHE
-    0x0417: 0x0087,     #  CYRILLIC CAPITAL LETTER ZE
-    0x0418: 0x0088,     #  CYRILLIC CAPITAL LETTER I
-    0x0419: 0x0089,     #  CYRILLIC CAPITAL LETTER SHORT I
-    0x041a: 0x008a,     #  CYRILLIC CAPITAL LETTER KA
-    0x041b: 0x008b,     #  CYRILLIC CAPITAL LETTER EL
-    0x041c: 0x008c,     #  CYRILLIC CAPITAL LETTER EM
-    0x041d: 0x008d,     #  CYRILLIC CAPITAL LETTER EN
-    0x041e: 0x008e,     #  CYRILLIC CAPITAL LETTER O
-    0x041f: 0x008f,     #  CYRILLIC CAPITAL LETTER PE
-    0x0420: 0x0090,     #  CYRILLIC CAPITAL LETTER ER
-    0x0421: 0x0091,     #  CYRILLIC CAPITAL LETTER ES
-    0x0422: 0x0092,     #  CYRILLIC CAPITAL LETTER TE
-    0x0423: 0x0093,     #  CYRILLIC CAPITAL LETTER U
-    0x0424: 0x0094,     #  CYRILLIC CAPITAL LETTER EF
-    0x0425: 0x0095,     #  CYRILLIC CAPITAL LETTER HA
-    0x0426: 0x0096,     #  CYRILLIC CAPITAL LETTER TSE
-    0x0427: 0x0097,     #  CYRILLIC CAPITAL LETTER CHE
-    0x0428: 0x0098,     #  CYRILLIC CAPITAL LETTER SHA
-    0x0429: 0x0099,     #  CYRILLIC CAPITAL LETTER SHCHA
-    0x042a: 0x009a,     #  CYRILLIC CAPITAL LETTER HARD SIGN
-    0x042b: 0x009b,     #  CYRILLIC CAPITAL LETTER YERU
-    0x042c: 0x009c,     #  CYRILLIC CAPITAL LETTER SOFT SIGN
-    0x042d: 0x009d,     #  CYRILLIC CAPITAL LETTER E
-    0x042e: 0x009e,     #  CYRILLIC CAPITAL LETTER YU
-    0x042f: 0x009f,     #  CYRILLIC CAPITAL LETTER YA
-    0x0430: 0x00a0,     #  CYRILLIC SMALL LETTER A
-    0x0431: 0x00a1,     #  CYRILLIC SMALL LETTER BE
-    0x0432: 0x00a2,     #  CYRILLIC SMALL LETTER VE
-    0x0433: 0x00a3,     #  CYRILLIC SMALL LETTER GHE
-    0x0434: 0x00a4,     #  CYRILLIC SMALL LETTER DE
-    0x0435: 0x00a5,     #  CYRILLIC SMALL LETTER IE
-    0x0436: 0x00a6,     #  CYRILLIC SMALL LETTER ZHE
-    0x0437: 0x00a7,     #  CYRILLIC SMALL LETTER ZE
-    0x0438: 0x00a8,     #  CYRILLIC SMALL LETTER I
-    0x0439: 0x00a9,     #  CYRILLIC SMALL LETTER SHORT I
-    0x043a: 0x00aa,     #  CYRILLIC SMALL LETTER KA
-    0x043b: 0x00ab,     #  CYRILLIC SMALL LETTER EL
-    0x043c: 0x00ac,     #  CYRILLIC SMALL LETTER EM
-    0x043d: 0x00ad,     #  CYRILLIC SMALL LETTER EN
-    0x043e: 0x00ae,     #  CYRILLIC SMALL LETTER O
-    0x043f: 0x00af,     #  CYRILLIC SMALL LETTER PE
-    0x0440: 0x00e0,     #  CYRILLIC SMALL LETTER ER
-    0x0441: 0x00e1,     #  CYRILLIC SMALL LETTER ES
-    0x0442: 0x00e2,     #  CYRILLIC SMALL LETTER TE
-    0x0443: 0x00e3,     #  CYRILLIC SMALL LETTER U
-    0x0444: 0x00e4,     #  CYRILLIC SMALL LETTER EF
-    0x0445: 0x00e5,     #  CYRILLIC SMALL LETTER HA
-    0x0446: 0x00e6,     #  CYRILLIC SMALL LETTER TSE
-    0x0447: 0x00e7,     #  CYRILLIC SMALL LETTER CHE
-    0x0448: 0x00e8,     #  CYRILLIC SMALL LETTER SHA
-    0x0449: 0x00e9,     #  CYRILLIC SMALL LETTER SHCHA
-    0x044a: 0x00ea,     #  CYRILLIC SMALL LETTER HARD SIGN
-    0x044b: 0x00eb,     #  CYRILLIC SMALL LETTER YERU
-    0x044c: 0x00ec,     #  CYRILLIC SMALL LETTER SOFT SIGN
-    0x044d: 0x00ed,     #  CYRILLIC SMALL LETTER E
-    0x044e: 0x00ee,     #  CYRILLIC SMALL LETTER YU
-    0x044f: 0x00ef,     #  CYRILLIC SMALL LETTER YA
-    0x0451: 0x00f1,     #  CYRILLIC SMALL LETTER IO
-    0x0454: 0x00f3,     #  CYRILLIC SMALL LETTER UKRAINIAN IE
-    0x0457: 0x00f5,     #  CYRILLIC SMALL LETTER YI
-    0x045e: 0x00f7,     #  CYRILLIC SMALL LETTER SHORT U
-    0x2116: 0x00fc,     #  NUMERO SIGN
-    0x2219: 0x00f9,     #  BULLET OPERATOR
-    0x221a: 0x00fb,     #  SQUARE ROOT
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2552: 0x00d5,     #  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    0x2553: 0x00d6,     #  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2555: 0x00b8,     #  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    0x2556: 0x00b7,     #  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x2558: 0x00d4,     #  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    0x2559: 0x00d3,     #  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255b: 0x00be,     #  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    0x255c: 0x00bd,     #  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x255e: 0x00c6,     #  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    0x255f: 0x00c7,     #  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2561: 0x00b5,     #  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    0x2562: 0x00b6,     #  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2564: 0x00d1,     #  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    0x2565: 0x00d2,     #  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2567: 0x00cf,     #  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    0x2568: 0x00d0,     #  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256a: 0x00d8,     #  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    0x256b: 0x00d7,     #  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x258c: 0x00dd,     #  LEFT HALF BLOCK
-    0x2590: 0x00de,     #  RIGHT HALF BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp869.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp869.py
deleted file mode 100644
index 59e3318..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp869.py
+++ /dev/null
@@ -1,689 +0,0 @@
-""" Python Character Mapping Codec generated from 'VENDORS/MICSFT/PC/CP869.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp869',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: None,       #  UNDEFINED
-    0x0081: None,       #  UNDEFINED
-    0x0082: None,       #  UNDEFINED
-    0x0083: None,       #  UNDEFINED
-    0x0084: None,       #  UNDEFINED
-    0x0085: None,       #  UNDEFINED
-    0x0086: 0x0386,     #  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x0087: None,       #  UNDEFINED
-    0x0088: 0x00b7,     #  MIDDLE DOT
-    0x0089: 0x00ac,     #  NOT SIGN
-    0x008a: 0x00a6,     #  BROKEN BAR
-    0x008b: 0x2018,     #  LEFT SINGLE QUOTATION MARK
-    0x008c: 0x2019,     #  RIGHT SINGLE QUOTATION MARK
-    0x008d: 0x0388,     #  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x008e: 0x2015,     #  HORIZONTAL BAR
-    0x008f: 0x0389,     #  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x0090: 0x038a,     #  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x0091: 0x03aa,     #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x0092: 0x038c,     #  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x0093: None,       #  UNDEFINED
-    0x0094: None,       #  UNDEFINED
-    0x0095: 0x038e,     #  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x0096: 0x03ab,     #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x0097: 0x00a9,     #  COPYRIGHT SIGN
-    0x0098: 0x038f,     #  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x0099: 0x00b2,     #  SUPERSCRIPT TWO
-    0x009a: 0x00b3,     #  SUPERSCRIPT THREE
-    0x009b: 0x03ac,     #  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x009c: 0x00a3,     #  POUND SIGN
-    0x009d: 0x03ad,     #  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x009e: 0x03ae,     #  GREEK SMALL LETTER ETA WITH TONOS
-    0x009f: 0x03af,     #  GREEK SMALL LETTER IOTA WITH TONOS
-    0x00a0: 0x03ca,     #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x00a1: 0x0390,     #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    0x00a2: 0x03cc,     #  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x00a3: 0x03cd,     #  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x00a4: 0x0391,     #  GREEK CAPITAL LETTER ALPHA
-    0x00a5: 0x0392,     #  GREEK CAPITAL LETTER BETA
-    0x00a6: 0x0393,     #  GREEK CAPITAL LETTER GAMMA
-    0x00a7: 0x0394,     #  GREEK CAPITAL LETTER DELTA
-    0x00a8: 0x0395,     #  GREEK CAPITAL LETTER EPSILON
-    0x00a9: 0x0396,     #  GREEK CAPITAL LETTER ZETA
-    0x00aa: 0x0397,     #  GREEK CAPITAL LETTER ETA
-    0x00ab: 0x00bd,     #  VULGAR FRACTION ONE HALF
-    0x00ac: 0x0398,     #  GREEK CAPITAL LETTER THETA
-    0x00ad: 0x0399,     #  GREEK CAPITAL LETTER IOTA
-    0x00ae: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00af: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00b0: 0x2591,     #  LIGHT SHADE
-    0x00b1: 0x2592,     #  MEDIUM SHADE
-    0x00b2: 0x2593,     #  DARK SHADE
-    0x00b3: 0x2502,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x00b4: 0x2524,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x00b5: 0x039a,     #  GREEK CAPITAL LETTER KAPPA
-    0x00b6: 0x039b,     #  GREEK CAPITAL LETTER LAMDA
-    0x00b7: 0x039c,     #  GREEK CAPITAL LETTER MU
-    0x00b8: 0x039d,     #  GREEK CAPITAL LETTER NU
-    0x00b9: 0x2563,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x00ba: 0x2551,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x00bb: 0x2557,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x00bc: 0x255d,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x00bd: 0x039e,     #  GREEK CAPITAL LETTER XI
-    0x00be: 0x039f,     #  GREEK CAPITAL LETTER OMICRON
-    0x00bf: 0x2510,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x00c0: 0x2514,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x00c1: 0x2534,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x00c2: 0x252c,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x00c3: 0x251c,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x00c4: 0x2500,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x00c5: 0x253c,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x00c6: 0x03a0,     #  GREEK CAPITAL LETTER PI
-    0x00c7: 0x03a1,     #  GREEK CAPITAL LETTER RHO
-    0x00c8: 0x255a,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x00c9: 0x2554,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x00ca: 0x2569,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x00cb: 0x2566,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x00cc: 0x2560,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x00cd: 0x2550,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x00ce: 0x256c,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x00cf: 0x03a3,     #  GREEK CAPITAL LETTER SIGMA
-    0x00d0: 0x03a4,     #  GREEK CAPITAL LETTER TAU
-    0x00d1: 0x03a5,     #  GREEK CAPITAL LETTER UPSILON
-    0x00d2: 0x03a6,     #  GREEK CAPITAL LETTER PHI
-    0x00d3: 0x03a7,     #  GREEK CAPITAL LETTER CHI
-    0x00d4: 0x03a8,     #  GREEK CAPITAL LETTER PSI
-    0x00d5: 0x03a9,     #  GREEK CAPITAL LETTER OMEGA
-    0x00d6: 0x03b1,     #  GREEK SMALL LETTER ALPHA
-    0x00d7: 0x03b2,     #  GREEK SMALL LETTER BETA
-    0x00d8: 0x03b3,     #  GREEK SMALL LETTER GAMMA
-    0x00d9: 0x2518,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x00da: 0x250c,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x00db: 0x2588,     #  FULL BLOCK
-    0x00dc: 0x2584,     #  LOWER HALF BLOCK
-    0x00dd: 0x03b4,     #  GREEK SMALL LETTER DELTA
-    0x00de: 0x03b5,     #  GREEK SMALL LETTER EPSILON
-    0x00df: 0x2580,     #  UPPER HALF BLOCK
-    0x00e0: 0x03b6,     #  GREEK SMALL LETTER ZETA
-    0x00e1: 0x03b7,     #  GREEK SMALL LETTER ETA
-    0x00e2: 0x03b8,     #  GREEK SMALL LETTER THETA
-    0x00e3: 0x03b9,     #  GREEK SMALL LETTER IOTA
-    0x00e4: 0x03ba,     #  GREEK SMALL LETTER KAPPA
-    0x00e5: 0x03bb,     #  GREEK SMALL LETTER LAMDA
-    0x00e6: 0x03bc,     #  GREEK SMALL LETTER MU
-    0x00e7: 0x03bd,     #  GREEK SMALL LETTER NU
-    0x00e8: 0x03be,     #  GREEK SMALL LETTER XI
-    0x00e9: 0x03bf,     #  GREEK SMALL LETTER OMICRON
-    0x00ea: 0x03c0,     #  GREEK SMALL LETTER PI
-    0x00eb: 0x03c1,     #  GREEK SMALL LETTER RHO
-    0x00ec: 0x03c3,     #  GREEK SMALL LETTER SIGMA
-    0x00ed: 0x03c2,     #  GREEK SMALL LETTER FINAL SIGMA
-    0x00ee: 0x03c4,     #  GREEK SMALL LETTER TAU
-    0x00ef: 0x0384,     #  GREEK TONOS
-    0x00f0: 0x00ad,     #  SOFT HYPHEN
-    0x00f1: 0x00b1,     #  PLUS-MINUS SIGN
-    0x00f2: 0x03c5,     #  GREEK SMALL LETTER UPSILON
-    0x00f3: 0x03c6,     #  GREEK SMALL LETTER PHI
-    0x00f4: 0x03c7,     #  GREEK SMALL LETTER CHI
-    0x00f5: 0x00a7,     #  SECTION SIGN
-    0x00f6: 0x03c8,     #  GREEK SMALL LETTER PSI
-    0x00f7: 0x0385,     #  GREEK DIALYTIKA TONOS
-    0x00f8: 0x00b0,     #  DEGREE SIGN
-    0x00f9: 0x00a8,     #  DIAERESIS
-    0x00fa: 0x03c9,     #  GREEK SMALL LETTER OMEGA
-    0x00fb: 0x03cb,     #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x00fc: 0x03b0,     #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    0x00fd: 0x03ce,     #  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x00fe: 0x25a0,     #  BLACK SQUARE
-    0x00ff: 0x00a0,     #  NO-BREAK SPACE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> NULL
-    u'\x01'     #  0x0001 -> START OF HEADING
-    u'\x02'     #  0x0002 -> START OF TEXT
-    u'\x03'     #  0x0003 -> END OF TEXT
-    u'\x04'     #  0x0004 -> END OF TRANSMISSION
-    u'\x05'     #  0x0005 -> ENQUIRY
-    u'\x06'     #  0x0006 -> ACKNOWLEDGE
-    u'\x07'     #  0x0007 -> BELL
-    u'\x08'     #  0x0008 -> BACKSPACE
-    u'\t'       #  0x0009 -> HORIZONTAL TABULATION
-    u'\n'       #  0x000a -> LINE FEED
-    u'\x0b'     #  0x000b -> VERTICAL TABULATION
-    u'\x0c'     #  0x000c -> FORM FEED
-    u'\r'       #  0x000d -> CARRIAGE RETURN
-    u'\x0e'     #  0x000e -> SHIFT OUT
-    u'\x0f'     #  0x000f -> SHIFT IN
-    u'\x10'     #  0x0010 -> DATA LINK ESCAPE
-    u'\x11'     #  0x0011 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x0012 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x0013 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x0014 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x0015 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x0016 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x0017 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x0018 -> CANCEL
-    u'\x19'     #  0x0019 -> END OF MEDIUM
-    u'\x1a'     #  0x001a -> SUBSTITUTE
-    u'\x1b'     #  0x001b -> ESCAPE
-    u'\x1c'     #  0x001c -> FILE SEPARATOR
-    u'\x1d'     #  0x001d -> GROUP SEPARATOR
-    u'\x1e'     #  0x001e -> RECORD SEPARATOR
-    u'\x1f'     #  0x001f -> UNIT SEPARATOR
-    u' '        #  0x0020 -> SPACE
-    u'!'        #  0x0021 -> EXCLAMATION MARK
-    u'"'        #  0x0022 -> QUOTATION MARK
-    u'#'        #  0x0023 -> NUMBER SIGN
-    u'$'        #  0x0024 -> DOLLAR SIGN
-    u'%'        #  0x0025 -> PERCENT SIGN
-    u'&'        #  0x0026 -> AMPERSAND
-    u"'"        #  0x0027 -> APOSTROPHE
-    u'('        #  0x0028 -> LEFT PARENTHESIS
-    u')'        #  0x0029 -> RIGHT PARENTHESIS
-    u'*'        #  0x002a -> ASTERISK
-    u'+'        #  0x002b -> PLUS SIGN
-    u','        #  0x002c -> COMMA
-    u'-'        #  0x002d -> HYPHEN-MINUS
-    u'.'        #  0x002e -> FULL STOP
-    u'/'        #  0x002f -> SOLIDUS
-    u'0'        #  0x0030 -> DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE
-    u':'        #  0x003a -> COLON
-    u';'        #  0x003b -> SEMICOLON
-    u'<'        #  0x003c -> LESS-THAN SIGN
-    u'='        #  0x003d -> EQUALS SIGN
-    u'>'        #  0x003e -> GREATER-THAN SIGN
-    u'?'        #  0x003f -> QUESTION MARK
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET
-    u'\\'       #  0x005c -> REVERSE SOLIDUS
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT
-    u'_'        #  0x005f -> LOW LINE
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET
-    u'|'        #  0x007c -> VERTICAL LINE
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> DELETE
-    u'\ufffe'   #  0x0080 -> UNDEFINED
-    u'\ufffe'   #  0x0081 -> UNDEFINED
-    u'\ufffe'   #  0x0082 -> UNDEFINED
-    u'\ufffe'   #  0x0083 -> UNDEFINED
-    u'\ufffe'   #  0x0084 -> UNDEFINED
-    u'\ufffe'   #  0x0085 -> UNDEFINED
-    u'\u0386'   #  0x0086 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\ufffe'   #  0x0087 -> UNDEFINED
-    u'\xb7'     #  0x0088 -> MIDDLE DOT
-    u'\xac'     #  0x0089 -> NOT SIGN
-    u'\xa6'     #  0x008a -> BROKEN BAR
-    u'\u2018'   #  0x008b -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0x008c -> RIGHT SINGLE QUOTATION MARK
-    u'\u0388'   #  0x008d -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u2015'   #  0x008e -> HORIZONTAL BAR
-    u'\u0389'   #  0x008f -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\u038a'   #  0x0090 -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\u03aa'   #  0x0091 -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\u038c'   #  0x0092 -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\ufffe'   #  0x0093 -> UNDEFINED
-    u'\ufffe'   #  0x0094 -> UNDEFINED
-    u'\u038e'   #  0x0095 -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u03ab'   #  0x0096 -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'\xa9'     #  0x0097 -> COPYRIGHT SIGN
-    u'\u038f'   #  0x0098 -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'\xb2'     #  0x0099 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0x009a -> SUPERSCRIPT THREE
-    u'\u03ac'   #  0x009b -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\xa3'     #  0x009c -> POUND SIGN
-    u'\u03ad'   #  0x009d -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'   #  0x009e -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03af'   #  0x009f -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03ca'   #  0x00a0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u0390'   #  0x00a1 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    u'\u03cc'   #  0x00a2 -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u03cd'   #  0x00a3 -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u0391'   #  0x00a4 -> GREEK CAPITAL LETTER ALPHA
-    u'\u0392'   #  0x00a5 -> GREEK CAPITAL LETTER BETA
-    u'\u0393'   #  0x00a6 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'   #  0x00a7 -> GREEK CAPITAL LETTER DELTA
-    u'\u0395'   #  0x00a8 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'   #  0x00a9 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'   #  0x00aa -> GREEK CAPITAL LETTER ETA
-    u'\xbd'     #  0x00ab -> VULGAR FRACTION ONE HALF
-    u'\u0398'   #  0x00ac -> GREEK CAPITAL LETTER THETA
-    u'\u0399'   #  0x00ad -> GREEK CAPITAL LETTER IOTA
-    u'\xab'     #  0x00ae -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0x00af -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2591'   #  0x00b0 -> LIGHT SHADE
-    u'\u2592'   #  0x00b1 -> MEDIUM SHADE
-    u'\u2593'   #  0x00b2 -> DARK SHADE
-    u'\u2502'   #  0x00b3 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u2524'   #  0x00b4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u039a'   #  0x00b5 -> GREEK CAPITAL LETTER KAPPA
-    u'\u039b'   #  0x00b6 -> GREEK CAPITAL LETTER LAMDA
-    u'\u039c'   #  0x00b7 -> GREEK CAPITAL LETTER MU
-    u'\u039d'   #  0x00b8 -> GREEK CAPITAL LETTER NU
-    u'\u2563'   #  0x00b9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2551'   #  0x00ba -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2557'   #  0x00bb -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u255d'   #  0x00bc -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u039e'   #  0x00bd -> GREEK CAPITAL LETTER XI
-    u'\u039f'   #  0x00be -> GREEK CAPITAL LETTER OMICRON
-    u'\u2510'   #  0x00bf -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x00c0 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2534'   #  0x00c1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u252c'   #  0x00c2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u251c'   #  0x00c3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2500'   #  0x00c4 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u253c'   #  0x00c5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u03a0'   #  0x00c6 -> GREEK CAPITAL LETTER PI
-    u'\u03a1'   #  0x00c7 -> GREEK CAPITAL LETTER RHO
-    u'\u255a'   #  0x00c8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u2554'   #  0x00c9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2569'   #  0x00ca -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u2566'   #  0x00cb -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2560'   #  0x00cc -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2550'   #  0x00cd -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u256c'   #  0x00ce -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\u03a3'   #  0x00cf -> GREEK CAPITAL LETTER SIGMA
-    u'\u03a4'   #  0x00d0 -> GREEK CAPITAL LETTER TAU
-    u'\u03a5'   #  0x00d1 -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a6'   #  0x00d2 -> GREEK CAPITAL LETTER PHI
-    u'\u03a7'   #  0x00d3 -> GREEK CAPITAL LETTER CHI
-    u'\u03a8'   #  0x00d4 -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'   #  0x00d5 -> GREEK CAPITAL LETTER OMEGA
-    u'\u03b1'   #  0x00d6 -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'   #  0x00d7 -> GREEK SMALL LETTER BETA
-    u'\u03b3'   #  0x00d8 -> GREEK SMALL LETTER GAMMA
-    u'\u2518'   #  0x00d9 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u250c'   #  0x00da -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2588'   #  0x00db -> FULL BLOCK
-    u'\u2584'   #  0x00dc -> LOWER HALF BLOCK
-    u'\u03b4'   #  0x00dd -> GREEK SMALL LETTER DELTA
-    u'\u03b5'   #  0x00de -> GREEK SMALL LETTER EPSILON
-    u'\u2580'   #  0x00df -> UPPER HALF BLOCK
-    u'\u03b6'   #  0x00e0 -> GREEK SMALL LETTER ZETA
-    u'\u03b7'   #  0x00e1 -> GREEK SMALL LETTER ETA
-    u'\u03b8'   #  0x00e2 -> GREEK SMALL LETTER THETA
-    u'\u03b9'   #  0x00e3 -> GREEK SMALL LETTER IOTA
-    u'\u03ba'   #  0x00e4 -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'   #  0x00e5 -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'   #  0x00e6 -> GREEK SMALL LETTER MU
-    u'\u03bd'   #  0x00e7 -> GREEK SMALL LETTER NU
-    u'\u03be'   #  0x00e8 -> GREEK SMALL LETTER XI
-    u'\u03bf'   #  0x00e9 -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'   #  0x00ea -> GREEK SMALL LETTER PI
-    u'\u03c1'   #  0x00eb -> GREEK SMALL LETTER RHO
-    u'\u03c3'   #  0x00ec -> GREEK SMALL LETTER SIGMA
-    u'\u03c2'   #  0x00ed -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c4'   #  0x00ee -> GREEK SMALL LETTER TAU
-    u'\u0384'   #  0x00ef -> GREEK TONOS
-    u'\xad'     #  0x00f0 -> SOFT HYPHEN
-    u'\xb1'     #  0x00f1 -> PLUS-MINUS SIGN
-    u'\u03c5'   #  0x00f2 -> GREEK SMALL LETTER UPSILON
-    u'\u03c6'   #  0x00f3 -> GREEK SMALL LETTER PHI
-    u'\u03c7'   #  0x00f4 -> GREEK SMALL LETTER CHI
-    u'\xa7'     #  0x00f5 -> SECTION SIGN
-    u'\u03c8'   #  0x00f6 -> GREEK SMALL LETTER PSI
-    u'\u0385'   #  0x00f7 -> GREEK DIALYTIKA TONOS
-    u'\xb0'     #  0x00f8 -> DEGREE SIGN
-    u'\xa8'     #  0x00f9 -> DIAERESIS
-    u'\u03c9'   #  0x00fa -> GREEK SMALL LETTER OMEGA
-    u'\u03cb'   #  0x00fb -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u03b0'   #  0x00fc -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    u'\u03ce'   #  0x00fd -> GREEK SMALL LETTER OMEGA WITH TONOS
-    u'\u25a0'   #  0x00fe -> BLACK SQUARE
-    u'\xa0'     #  0x00ff -> NO-BREAK SPACE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  NULL
-    0x0001: 0x0001,     #  START OF HEADING
-    0x0002: 0x0002,     #  START OF TEXT
-    0x0003: 0x0003,     #  END OF TEXT
-    0x0004: 0x0004,     #  END OF TRANSMISSION
-    0x0005: 0x0005,     #  ENQUIRY
-    0x0006: 0x0006,     #  ACKNOWLEDGE
-    0x0007: 0x0007,     #  BELL
-    0x0008: 0x0008,     #  BACKSPACE
-    0x0009: 0x0009,     #  HORIZONTAL TABULATION
-    0x000a: 0x000a,     #  LINE FEED
-    0x000b: 0x000b,     #  VERTICAL TABULATION
-    0x000c: 0x000c,     #  FORM FEED
-    0x000d: 0x000d,     #  CARRIAGE RETURN
-    0x000e: 0x000e,     #  SHIFT OUT
-    0x000f: 0x000f,     #  SHIFT IN
-    0x0010: 0x0010,     #  DATA LINK ESCAPE
-    0x0011: 0x0011,     #  DEVICE CONTROL ONE
-    0x0012: 0x0012,     #  DEVICE CONTROL TWO
-    0x0013: 0x0013,     #  DEVICE CONTROL THREE
-    0x0014: 0x0014,     #  DEVICE CONTROL FOUR
-    0x0015: 0x0015,     #  NEGATIVE ACKNOWLEDGE
-    0x0016: 0x0016,     #  SYNCHRONOUS IDLE
-    0x0017: 0x0017,     #  END OF TRANSMISSION BLOCK
-    0x0018: 0x0018,     #  CANCEL
-    0x0019: 0x0019,     #  END OF MEDIUM
-    0x001a: 0x001a,     #  SUBSTITUTE
-    0x001b: 0x001b,     #  ESCAPE
-    0x001c: 0x001c,     #  FILE SEPARATOR
-    0x001d: 0x001d,     #  GROUP SEPARATOR
-    0x001e: 0x001e,     #  RECORD SEPARATOR
-    0x001f: 0x001f,     #  UNIT SEPARATOR
-    0x0020: 0x0020,     #  SPACE
-    0x0021: 0x0021,     #  EXCLAMATION MARK
-    0x0022: 0x0022,     #  QUOTATION MARK
-    0x0023: 0x0023,     #  NUMBER SIGN
-    0x0024: 0x0024,     #  DOLLAR SIGN
-    0x0025: 0x0025,     #  PERCENT SIGN
-    0x0026: 0x0026,     #  AMPERSAND
-    0x0027: 0x0027,     #  APOSTROPHE
-    0x0028: 0x0028,     #  LEFT PARENTHESIS
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS
-    0x002a: 0x002a,     #  ASTERISK
-    0x002b: 0x002b,     #  PLUS SIGN
-    0x002c: 0x002c,     #  COMMA
-    0x002d: 0x002d,     #  HYPHEN-MINUS
-    0x002e: 0x002e,     #  FULL STOP
-    0x002f: 0x002f,     #  SOLIDUS
-    0x0030: 0x0030,     #  DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE
-    0x003a: 0x003a,     #  COLON
-    0x003b: 0x003b,     #  SEMICOLON
-    0x003c: 0x003c,     #  LESS-THAN SIGN
-    0x003d: 0x003d,     #  EQUALS SIGN
-    0x003e: 0x003e,     #  GREATER-THAN SIGN
-    0x003f: 0x003f,     #  QUESTION MARK
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET
-    0x005c: 0x005c,     #  REVERSE SOLIDUS
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT
-    0x005f: 0x005f,     #  LOW LINE
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET
-    0x007c: 0x007c,     #  VERTICAL LINE
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  DELETE
-    0x00a0: 0x00ff,     #  NO-BREAK SPACE
-    0x00a3: 0x009c,     #  POUND SIGN
-    0x00a6: 0x008a,     #  BROKEN BAR
-    0x00a7: 0x00f5,     #  SECTION SIGN
-    0x00a8: 0x00f9,     #  DIAERESIS
-    0x00a9: 0x0097,     #  COPYRIGHT SIGN
-    0x00ab: 0x00ae,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00ac: 0x0089,     #  NOT SIGN
-    0x00ad: 0x00f0,     #  SOFT HYPHEN
-    0x00b0: 0x00f8,     #  DEGREE SIGN
-    0x00b1: 0x00f1,     #  PLUS-MINUS SIGN
-    0x00b2: 0x0099,     #  SUPERSCRIPT TWO
-    0x00b3: 0x009a,     #  SUPERSCRIPT THREE
-    0x00b7: 0x0088,     #  MIDDLE DOT
-    0x00bb: 0x00af,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    0x00bd: 0x00ab,     #  VULGAR FRACTION ONE HALF
-    0x0384: 0x00ef,     #  GREEK TONOS
-    0x0385: 0x00f7,     #  GREEK DIALYTIKA TONOS
-    0x0386: 0x0086,     #  GREEK CAPITAL LETTER ALPHA WITH TONOS
-    0x0388: 0x008d,     #  GREEK CAPITAL LETTER EPSILON WITH TONOS
-    0x0389: 0x008f,     #  GREEK CAPITAL LETTER ETA WITH TONOS
-    0x038a: 0x0090,     #  GREEK CAPITAL LETTER IOTA WITH TONOS
-    0x038c: 0x0092,     #  GREEK CAPITAL LETTER OMICRON WITH TONOS
-    0x038e: 0x0095,     #  GREEK CAPITAL LETTER UPSILON WITH TONOS
-    0x038f: 0x0098,     #  GREEK CAPITAL LETTER OMEGA WITH TONOS
-    0x0390: 0x00a1,     #  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    0x0391: 0x00a4,     #  GREEK CAPITAL LETTER ALPHA
-    0x0392: 0x00a5,     #  GREEK CAPITAL LETTER BETA
-    0x0393: 0x00a6,     #  GREEK CAPITAL LETTER GAMMA
-    0x0394: 0x00a7,     #  GREEK CAPITAL LETTER DELTA
-    0x0395: 0x00a8,     #  GREEK CAPITAL LETTER EPSILON
-    0x0396: 0x00a9,     #  GREEK CAPITAL LETTER ZETA
-    0x0397: 0x00aa,     #  GREEK CAPITAL LETTER ETA
-    0x0398: 0x00ac,     #  GREEK CAPITAL LETTER THETA
-    0x0399: 0x00ad,     #  GREEK CAPITAL LETTER IOTA
-    0x039a: 0x00b5,     #  GREEK CAPITAL LETTER KAPPA
-    0x039b: 0x00b6,     #  GREEK CAPITAL LETTER LAMDA
-    0x039c: 0x00b7,     #  GREEK CAPITAL LETTER MU
-    0x039d: 0x00b8,     #  GREEK CAPITAL LETTER NU
-    0x039e: 0x00bd,     #  GREEK CAPITAL LETTER XI
-    0x039f: 0x00be,     #  GREEK CAPITAL LETTER OMICRON
-    0x03a0: 0x00c6,     #  GREEK CAPITAL LETTER PI
-    0x03a1: 0x00c7,     #  GREEK CAPITAL LETTER RHO
-    0x03a3: 0x00cf,     #  GREEK CAPITAL LETTER SIGMA
-    0x03a4: 0x00d0,     #  GREEK CAPITAL LETTER TAU
-    0x03a5: 0x00d1,     #  GREEK CAPITAL LETTER UPSILON
-    0x03a6: 0x00d2,     #  GREEK CAPITAL LETTER PHI
-    0x03a7: 0x00d3,     #  GREEK CAPITAL LETTER CHI
-    0x03a8: 0x00d4,     #  GREEK CAPITAL LETTER PSI
-    0x03a9: 0x00d5,     #  GREEK CAPITAL LETTER OMEGA
-    0x03aa: 0x0091,     #  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    0x03ab: 0x0096,     #  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    0x03ac: 0x009b,     #  GREEK SMALL LETTER ALPHA WITH TONOS
-    0x03ad: 0x009d,     #  GREEK SMALL LETTER EPSILON WITH TONOS
-    0x03ae: 0x009e,     #  GREEK SMALL LETTER ETA WITH TONOS
-    0x03af: 0x009f,     #  GREEK SMALL LETTER IOTA WITH TONOS
-    0x03b0: 0x00fc,     #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    0x03b1: 0x00d6,     #  GREEK SMALL LETTER ALPHA
-    0x03b2: 0x00d7,     #  GREEK SMALL LETTER BETA
-    0x03b3: 0x00d8,     #  GREEK SMALL LETTER GAMMA
-    0x03b4: 0x00dd,     #  GREEK SMALL LETTER DELTA
-    0x03b5: 0x00de,     #  GREEK SMALL LETTER EPSILON
-    0x03b6: 0x00e0,     #  GREEK SMALL LETTER ZETA
-    0x03b7: 0x00e1,     #  GREEK SMALL LETTER ETA
-    0x03b8: 0x00e2,     #  GREEK SMALL LETTER THETA
-    0x03b9: 0x00e3,     #  GREEK SMALL LETTER IOTA
-    0x03ba: 0x00e4,     #  GREEK SMALL LETTER KAPPA
-    0x03bb: 0x00e5,     #  GREEK SMALL LETTER LAMDA
-    0x03bc: 0x00e6,     #  GREEK SMALL LETTER MU
-    0x03bd: 0x00e7,     #  GREEK SMALL LETTER NU
-    0x03be: 0x00e8,     #  GREEK SMALL LETTER XI
-    0x03bf: 0x00e9,     #  GREEK SMALL LETTER OMICRON
-    0x03c0: 0x00ea,     #  GREEK SMALL LETTER PI
-    0x03c1: 0x00eb,     #  GREEK SMALL LETTER RHO
-    0x03c2: 0x00ed,     #  GREEK SMALL LETTER FINAL SIGMA
-    0x03c3: 0x00ec,     #  GREEK SMALL LETTER SIGMA
-    0x03c4: 0x00ee,     #  GREEK SMALL LETTER TAU
-    0x03c5: 0x00f2,     #  GREEK SMALL LETTER UPSILON
-    0x03c6: 0x00f3,     #  GREEK SMALL LETTER PHI
-    0x03c7: 0x00f4,     #  GREEK SMALL LETTER CHI
-    0x03c8: 0x00f6,     #  GREEK SMALL LETTER PSI
-    0x03c9: 0x00fa,     #  GREEK SMALL LETTER OMEGA
-    0x03ca: 0x00a0,     #  GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    0x03cb: 0x00fb,     #  GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    0x03cc: 0x00a2,     #  GREEK SMALL LETTER OMICRON WITH TONOS
-    0x03cd: 0x00a3,     #  GREEK SMALL LETTER UPSILON WITH TONOS
-    0x03ce: 0x00fd,     #  GREEK SMALL LETTER OMEGA WITH TONOS
-    0x2015: 0x008e,     #  HORIZONTAL BAR
-    0x2018: 0x008b,     #  LEFT SINGLE QUOTATION MARK
-    0x2019: 0x008c,     #  RIGHT SINGLE QUOTATION MARK
-    0x2500: 0x00c4,     #  BOX DRAWINGS LIGHT HORIZONTAL
-    0x2502: 0x00b3,     #  BOX DRAWINGS LIGHT VERTICAL
-    0x250c: 0x00da,     #  BOX DRAWINGS LIGHT DOWN AND RIGHT
-    0x2510: 0x00bf,     #  BOX DRAWINGS LIGHT DOWN AND LEFT
-    0x2514: 0x00c0,     #  BOX DRAWINGS LIGHT UP AND RIGHT
-    0x2518: 0x00d9,     #  BOX DRAWINGS LIGHT UP AND LEFT
-    0x251c: 0x00c3,     #  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    0x2524: 0x00b4,     #  BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    0x252c: 0x00c2,     #  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    0x2534: 0x00c1,     #  BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    0x253c: 0x00c5,     #  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    0x2550: 0x00cd,     #  BOX DRAWINGS DOUBLE HORIZONTAL
-    0x2551: 0x00ba,     #  BOX DRAWINGS DOUBLE VERTICAL
-    0x2554: 0x00c9,     #  BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    0x2557: 0x00bb,     #  BOX DRAWINGS DOUBLE DOWN AND LEFT
-    0x255a: 0x00c8,     #  BOX DRAWINGS DOUBLE UP AND RIGHT
-    0x255d: 0x00bc,     #  BOX DRAWINGS DOUBLE UP AND LEFT
-    0x2560: 0x00cc,     #  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    0x2563: 0x00b9,     #  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    0x2566: 0x00cb,     #  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    0x2569: 0x00ca,     #  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    0x256c: 0x00ce,     #  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    0x2580: 0x00df,     #  UPPER HALF BLOCK
-    0x2584: 0x00dc,     #  LOWER HALF BLOCK
-    0x2588: 0x00db,     #  FULL BLOCK
-    0x2591: 0x00b0,     #  LIGHT SHADE
-    0x2592: 0x00b1,     #  MEDIUM SHADE
-    0x2593: 0x00b2,     #  DARK SHADE
-    0x25a0: 0x00fe,     #  BLACK SQUARE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp874.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp874.py
deleted file mode 100644
index 66f112f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp874.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp874 generated from 'MAPPINGS/VENDORS/MICSFT/WINDOWS/CP874.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp874',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\u20ac'   #  0x80 -> EURO SIGN
-    u'\ufffe'   #  0x81 -> UNDEFINED
-    u'\ufffe'   #  0x82 -> UNDEFINED
-    u'\ufffe'   #  0x83 -> UNDEFINED
-    u'\ufffe'   #  0x84 -> UNDEFINED
-    u'\u2026'   #  0x85 -> HORIZONTAL ELLIPSIS
-    u'\ufffe'   #  0x86 -> UNDEFINED
-    u'\ufffe'   #  0x87 -> UNDEFINED
-    u'\ufffe'   #  0x88 -> UNDEFINED
-    u'\ufffe'   #  0x89 -> UNDEFINED
-    u'\ufffe'   #  0x8A -> UNDEFINED
-    u'\ufffe'   #  0x8B -> UNDEFINED
-    u'\ufffe'   #  0x8C -> UNDEFINED
-    u'\ufffe'   #  0x8D -> UNDEFINED
-    u'\ufffe'   #  0x8E -> UNDEFINED
-    u'\ufffe'   #  0x8F -> UNDEFINED
-    u'\ufffe'   #  0x90 -> UNDEFINED
-    u'\u2018'   #  0x91 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0x92 -> RIGHT SINGLE QUOTATION MARK
-    u'\u201c'   #  0x93 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0x94 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2022'   #  0x95 -> BULLET
-    u'\u2013'   #  0x96 -> EN DASH
-    u'\u2014'   #  0x97 -> EM DASH
-    u'\ufffe'   #  0x98 -> UNDEFINED
-    u'\ufffe'   #  0x99 -> UNDEFINED
-    u'\ufffe'   #  0x9A -> UNDEFINED
-    u'\ufffe'   #  0x9B -> UNDEFINED
-    u'\ufffe'   #  0x9C -> UNDEFINED
-    u'\ufffe'   #  0x9D -> UNDEFINED
-    u'\ufffe'   #  0x9E -> UNDEFINED
-    u'\ufffe'   #  0x9F -> UNDEFINED
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u0e01'   #  0xA1 -> THAI CHARACTER KO KAI
-    u'\u0e02'   #  0xA2 -> THAI CHARACTER KHO KHAI
-    u'\u0e03'   #  0xA3 -> THAI CHARACTER KHO KHUAT
-    u'\u0e04'   #  0xA4 -> THAI CHARACTER KHO KHWAI
-    u'\u0e05'   #  0xA5 -> THAI CHARACTER KHO KHON
-    u'\u0e06'   #  0xA6 -> THAI CHARACTER KHO RAKHANG
-    u'\u0e07'   #  0xA7 -> THAI CHARACTER NGO NGU
-    u'\u0e08'   #  0xA8 -> THAI CHARACTER CHO CHAN
-    u'\u0e09'   #  0xA9 -> THAI CHARACTER CHO CHING
-    u'\u0e0a'   #  0xAA -> THAI CHARACTER CHO CHANG
-    u'\u0e0b'   #  0xAB -> THAI CHARACTER SO SO
-    u'\u0e0c'   #  0xAC -> THAI CHARACTER CHO CHOE
-    u'\u0e0d'   #  0xAD -> THAI CHARACTER YO YING
-    u'\u0e0e'   #  0xAE -> THAI CHARACTER DO CHADA
-    u'\u0e0f'   #  0xAF -> THAI CHARACTER TO PATAK
-    u'\u0e10'   #  0xB0 -> THAI CHARACTER THO THAN
-    u'\u0e11'   #  0xB1 -> THAI CHARACTER THO NANGMONTHO
-    u'\u0e12'   #  0xB2 -> THAI CHARACTER THO PHUTHAO
-    u'\u0e13'   #  0xB3 -> THAI CHARACTER NO NEN
-    u'\u0e14'   #  0xB4 -> THAI CHARACTER DO DEK
-    u'\u0e15'   #  0xB5 -> THAI CHARACTER TO TAO
-    u'\u0e16'   #  0xB6 -> THAI CHARACTER THO THUNG
-    u'\u0e17'   #  0xB7 -> THAI CHARACTER THO THAHAN
-    u'\u0e18'   #  0xB8 -> THAI CHARACTER THO THONG
-    u'\u0e19'   #  0xB9 -> THAI CHARACTER NO NU
-    u'\u0e1a'   #  0xBA -> THAI CHARACTER BO BAIMAI
-    u'\u0e1b'   #  0xBB -> THAI CHARACTER PO PLA
-    u'\u0e1c'   #  0xBC -> THAI CHARACTER PHO PHUNG
-    u'\u0e1d'   #  0xBD -> THAI CHARACTER FO FA
-    u'\u0e1e'   #  0xBE -> THAI CHARACTER PHO PHAN
-    u'\u0e1f'   #  0xBF -> THAI CHARACTER FO FAN
-    u'\u0e20'   #  0xC0 -> THAI CHARACTER PHO SAMPHAO
-    u'\u0e21'   #  0xC1 -> THAI CHARACTER MO MA
-    u'\u0e22'   #  0xC2 -> THAI CHARACTER YO YAK
-    u'\u0e23'   #  0xC3 -> THAI CHARACTER RO RUA
-    u'\u0e24'   #  0xC4 -> THAI CHARACTER RU
-    u'\u0e25'   #  0xC5 -> THAI CHARACTER LO LING
-    u'\u0e26'   #  0xC6 -> THAI CHARACTER LU
-    u'\u0e27'   #  0xC7 -> THAI CHARACTER WO WAEN
-    u'\u0e28'   #  0xC8 -> THAI CHARACTER SO SALA
-    u'\u0e29'   #  0xC9 -> THAI CHARACTER SO RUSI
-    u'\u0e2a'   #  0xCA -> THAI CHARACTER SO SUA
-    u'\u0e2b'   #  0xCB -> THAI CHARACTER HO HIP
-    u'\u0e2c'   #  0xCC -> THAI CHARACTER LO CHULA
-    u'\u0e2d'   #  0xCD -> THAI CHARACTER O ANG
-    u'\u0e2e'   #  0xCE -> THAI CHARACTER HO NOKHUK
-    u'\u0e2f'   #  0xCF -> THAI CHARACTER PAIYANNOI
-    u'\u0e30'   #  0xD0 -> THAI CHARACTER SARA A
-    u'\u0e31'   #  0xD1 -> THAI CHARACTER MAI HAN-AKAT
-    u'\u0e32'   #  0xD2 -> THAI CHARACTER SARA AA
-    u'\u0e33'   #  0xD3 -> THAI CHARACTER SARA AM
-    u'\u0e34'   #  0xD4 -> THAI CHARACTER SARA I
-    u'\u0e35'   #  0xD5 -> THAI CHARACTER SARA II
-    u'\u0e36'   #  0xD6 -> THAI CHARACTER SARA UE
-    u'\u0e37'   #  0xD7 -> THAI CHARACTER SARA UEE
-    u'\u0e38'   #  0xD8 -> THAI CHARACTER SARA U
-    u'\u0e39'   #  0xD9 -> THAI CHARACTER SARA UU
-    u'\u0e3a'   #  0xDA -> THAI CHARACTER PHINTHU
-    u'\ufffe'   #  0xDB -> UNDEFINED
-    u'\ufffe'   #  0xDC -> UNDEFINED
-    u'\ufffe'   #  0xDD -> UNDEFINED
-    u'\ufffe'   #  0xDE -> UNDEFINED
-    u'\u0e3f'   #  0xDF -> THAI CURRENCY SYMBOL BAHT
-    u'\u0e40'   #  0xE0 -> THAI CHARACTER SARA E
-    u'\u0e41'   #  0xE1 -> THAI CHARACTER SARA AE
-    u'\u0e42'   #  0xE2 -> THAI CHARACTER SARA O
-    u'\u0e43'   #  0xE3 -> THAI CHARACTER SARA AI MAIMUAN
-    u'\u0e44'   #  0xE4 -> THAI CHARACTER SARA AI MAIMALAI
-    u'\u0e45'   #  0xE5 -> THAI CHARACTER LAKKHANGYAO
-    u'\u0e46'   #  0xE6 -> THAI CHARACTER MAIYAMOK
-    u'\u0e47'   #  0xE7 -> THAI CHARACTER MAITAIKHU
-    u'\u0e48'   #  0xE8 -> THAI CHARACTER MAI EK
-    u'\u0e49'   #  0xE9 -> THAI CHARACTER MAI THO
-    u'\u0e4a'   #  0xEA -> THAI CHARACTER MAI TRI
-    u'\u0e4b'   #  0xEB -> THAI CHARACTER MAI CHATTAWA
-    u'\u0e4c'   #  0xEC -> THAI CHARACTER THANTHAKHAT
-    u'\u0e4d'   #  0xED -> THAI CHARACTER NIKHAHIT
-    u'\u0e4e'   #  0xEE -> THAI CHARACTER YAMAKKAN
-    u'\u0e4f'   #  0xEF -> THAI CHARACTER FONGMAN
-    u'\u0e50'   #  0xF0 -> THAI DIGIT ZERO
-    u'\u0e51'   #  0xF1 -> THAI DIGIT ONE
-    u'\u0e52'   #  0xF2 -> THAI DIGIT TWO
-    u'\u0e53'   #  0xF3 -> THAI DIGIT THREE
-    u'\u0e54'   #  0xF4 -> THAI DIGIT FOUR
-    u'\u0e55'   #  0xF5 -> THAI DIGIT FIVE
-    u'\u0e56'   #  0xF6 -> THAI DIGIT SIX
-    u'\u0e57'   #  0xF7 -> THAI DIGIT SEVEN
-    u'\u0e58'   #  0xF8 -> THAI DIGIT EIGHT
-    u'\u0e59'   #  0xF9 -> THAI DIGIT NINE
-    u'\u0e5a'   #  0xFA -> THAI CHARACTER ANGKHANKHU
-    u'\u0e5b'   #  0xFB -> THAI CHARACTER KHOMUT
-    u'\ufffe'   #  0xFC -> UNDEFINED
-    u'\ufffe'   #  0xFD -> UNDEFINED
-    u'\ufffe'   #  0xFE -> UNDEFINED
-    u'\ufffe'   #  0xFF -> UNDEFINED
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp875.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp875.py
deleted file mode 100644
index 50bbef3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp875.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec cp875 generated from 'MAPPINGS/VENDORS/MICSFT/EBCDIC/CP875.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp875',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x9c'     #  0x04 -> CONTROL
-    u'\t'       #  0x05 -> HORIZONTAL TABULATION
-    u'\x86'     #  0x06 -> CONTROL
-    u'\x7f'     #  0x07 -> DELETE
-    u'\x97'     #  0x08 -> CONTROL
-    u'\x8d'     #  0x09 -> CONTROL
-    u'\x8e'     #  0x0A -> CONTROL
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x9d'     #  0x14 -> CONTROL
-    u'\x85'     #  0x15 -> CONTROL
-    u'\x08'     #  0x16 -> BACKSPACE
-    u'\x87'     #  0x17 -> CONTROL
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x92'     #  0x1A -> CONTROL
-    u'\x8f'     #  0x1B -> CONTROL
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u'\x80'     #  0x20 -> CONTROL
-    u'\x81'     #  0x21 -> CONTROL
-    u'\x82'     #  0x22 -> CONTROL
-    u'\x83'     #  0x23 -> CONTROL
-    u'\x84'     #  0x24 -> CONTROL
-    u'\n'       #  0x25 -> LINE FEED
-    u'\x17'     #  0x26 -> END OF TRANSMISSION BLOCK
-    u'\x1b'     #  0x27 -> ESCAPE
-    u'\x88'     #  0x28 -> CONTROL
-    u'\x89'     #  0x29 -> CONTROL
-    u'\x8a'     #  0x2A -> CONTROL
-    u'\x8b'     #  0x2B -> CONTROL
-    u'\x8c'     #  0x2C -> CONTROL
-    u'\x05'     #  0x2D -> ENQUIRY
-    u'\x06'     #  0x2E -> ACKNOWLEDGE
-    u'\x07'     #  0x2F -> BELL
-    u'\x90'     #  0x30 -> CONTROL
-    u'\x91'     #  0x31 -> CONTROL
-    u'\x16'     #  0x32 -> SYNCHRONOUS IDLE
-    u'\x93'     #  0x33 -> CONTROL
-    u'\x94'     #  0x34 -> CONTROL
-    u'\x95'     #  0x35 -> CONTROL
-    u'\x96'     #  0x36 -> CONTROL
-    u'\x04'     #  0x37 -> END OF TRANSMISSION
-    u'\x98'     #  0x38 -> CONTROL
-    u'\x99'     #  0x39 -> CONTROL
-    u'\x9a'     #  0x3A -> CONTROL
-    u'\x9b'     #  0x3B -> CONTROL
-    u'\x14'     #  0x3C -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x3D -> NEGATIVE ACKNOWLEDGE
-    u'\x9e'     #  0x3E -> CONTROL
-    u'\x1a'     #  0x3F -> SUBSTITUTE
-    u' '        #  0x40 -> SPACE
-    u'\u0391'   #  0x41 -> GREEK CAPITAL LETTER ALPHA
-    u'\u0392'   #  0x42 -> GREEK CAPITAL LETTER BETA
-    u'\u0393'   #  0x43 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'   #  0x44 -> GREEK CAPITAL LETTER DELTA
-    u'\u0395'   #  0x45 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'   #  0x46 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'   #  0x47 -> GREEK CAPITAL LETTER ETA
-    u'\u0398'   #  0x48 -> GREEK CAPITAL LETTER THETA
-    u'\u0399'   #  0x49 -> GREEK CAPITAL LETTER IOTA
-    u'['        #  0x4A -> LEFT SQUARE BRACKET
-    u'.'        #  0x4B -> FULL STOP
-    u'<'        #  0x4C -> LESS-THAN SIGN
-    u'('        #  0x4D -> LEFT PARENTHESIS
-    u'+'        #  0x4E -> PLUS SIGN
-    u'!'        #  0x4F -> EXCLAMATION MARK
-    u'&'        #  0x50 -> AMPERSAND
-    u'\u039a'   #  0x51 -> GREEK CAPITAL LETTER KAPPA
-    u'\u039b'   #  0x52 -> GREEK CAPITAL LETTER LAMDA
-    u'\u039c'   #  0x53 -> GREEK CAPITAL LETTER MU
-    u'\u039d'   #  0x54 -> GREEK CAPITAL LETTER NU
-    u'\u039e'   #  0x55 -> GREEK CAPITAL LETTER XI
-    u'\u039f'   #  0x56 -> GREEK CAPITAL LETTER OMICRON
-    u'\u03a0'   #  0x57 -> GREEK CAPITAL LETTER PI
-    u'\u03a1'   #  0x58 -> GREEK CAPITAL LETTER RHO
-    u'\u03a3'   #  0x59 -> GREEK CAPITAL LETTER SIGMA
-    u']'        #  0x5A -> RIGHT SQUARE BRACKET
-    u'$'        #  0x5B -> DOLLAR SIGN
-    u'*'        #  0x5C -> ASTERISK
-    u')'        #  0x5D -> RIGHT PARENTHESIS
-    u';'        #  0x5E -> SEMICOLON
-    u'^'        #  0x5F -> CIRCUMFLEX ACCENT
-    u'-'        #  0x60 -> HYPHEN-MINUS
-    u'/'        #  0x61 -> SOLIDUS
-    u'\u03a4'   #  0x62 -> GREEK CAPITAL LETTER TAU
-    u'\u03a5'   #  0x63 -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a6'   #  0x64 -> GREEK CAPITAL LETTER PHI
-    u'\u03a7'   #  0x65 -> GREEK CAPITAL LETTER CHI
-    u'\u03a8'   #  0x66 -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'   #  0x67 -> GREEK CAPITAL LETTER OMEGA
-    u'\u03aa'   #  0x68 -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\u03ab'   #  0x69 -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'|'        #  0x6A -> VERTICAL LINE
-    u','        #  0x6B -> COMMA
-    u'%'        #  0x6C -> PERCENT SIGN
-    u'_'        #  0x6D -> LOW LINE
-    u'>'        #  0x6E -> GREATER-THAN SIGN
-    u'?'        #  0x6F -> QUESTION MARK
-    u'\xa8'     #  0x70 -> DIAERESIS
-    u'\u0386'   #  0x71 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\u0388'   #  0x72 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u0389'   #  0x73 -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\xa0'     #  0x74 -> NO-BREAK SPACE
-    u'\u038a'   #  0x75 -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\u038c'   #  0x76 -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\u038e'   #  0x77 -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u038f'   #  0x78 -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'`'        #  0x79 -> GRAVE ACCENT
-    u':'        #  0x7A -> COLON
-    u'#'        #  0x7B -> NUMBER SIGN
-    u'@'        #  0x7C -> COMMERCIAL AT
-    u"'"        #  0x7D -> APOSTROPHE
-    u'='        #  0x7E -> EQUALS SIGN
-    u'"'        #  0x7F -> QUOTATION MARK
-    u'\u0385'   #  0x80 -> GREEK DIALYTIKA TONOS
-    u'a'        #  0x81 -> LATIN SMALL LETTER A
-    u'b'        #  0x82 -> LATIN SMALL LETTER B
-    u'c'        #  0x83 -> LATIN SMALL LETTER C
-    u'd'        #  0x84 -> LATIN SMALL LETTER D
-    u'e'        #  0x85 -> LATIN SMALL LETTER E
-    u'f'        #  0x86 -> LATIN SMALL LETTER F
-    u'g'        #  0x87 -> LATIN SMALL LETTER G
-    u'h'        #  0x88 -> LATIN SMALL LETTER H
-    u'i'        #  0x89 -> LATIN SMALL LETTER I
-    u'\u03b1'   #  0x8A -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'   #  0x8B -> GREEK SMALL LETTER BETA
-    u'\u03b3'   #  0x8C -> GREEK SMALL LETTER GAMMA
-    u'\u03b4'   #  0x8D -> GREEK SMALL LETTER DELTA
-    u'\u03b5'   #  0x8E -> GREEK SMALL LETTER EPSILON
-    u'\u03b6'   #  0x8F -> GREEK SMALL LETTER ZETA
-    u'\xb0'     #  0x90 -> DEGREE SIGN
-    u'j'        #  0x91 -> LATIN SMALL LETTER J
-    u'k'        #  0x92 -> LATIN SMALL LETTER K
-    u'l'        #  0x93 -> LATIN SMALL LETTER L
-    u'm'        #  0x94 -> LATIN SMALL LETTER M
-    u'n'        #  0x95 -> LATIN SMALL LETTER N
-    u'o'        #  0x96 -> LATIN SMALL LETTER O
-    u'p'        #  0x97 -> LATIN SMALL LETTER P
-    u'q'        #  0x98 -> LATIN SMALL LETTER Q
-    u'r'        #  0x99 -> LATIN SMALL LETTER R
-    u'\u03b7'   #  0x9A -> GREEK SMALL LETTER ETA
-    u'\u03b8'   #  0x9B -> GREEK SMALL LETTER THETA
-    u'\u03b9'   #  0x9C -> GREEK SMALL LETTER IOTA
-    u'\u03ba'   #  0x9D -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'   #  0x9E -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'   #  0x9F -> GREEK SMALL LETTER MU
-    u'\xb4'     #  0xA0 -> ACUTE ACCENT
-    u'~'        #  0xA1 -> TILDE
-    u's'        #  0xA2 -> LATIN SMALL LETTER S
-    u't'        #  0xA3 -> LATIN SMALL LETTER T
-    u'u'        #  0xA4 -> LATIN SMALL LETTER U
-    u'v'        #  0xA5 -> LATIN SMALL LETTER V
-    u'w'        #  0xA6 -> LATIN SMALL LETTER W
-    u'x'        #  0xA7 -> LATIN SMALL LETTER X
-    u'y'        #  0xA8 -> LATIN SMALL LETTER Y
-    u'z'        #  0xA9 -> LATIN SMALL LETTER Z
-    u'\u03bd'   #  0xAA -> GREEK SMALL LETTER NU
-    u'\u03be'   #  0xAB -> GREEK SMALL LETTER XI
-    u'\u03bf'   #  0xAC -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'   #  0xAD -> GREEK SMALL LETTER PI
-    u'\u03c1'   #  0xAE -> GREEK SMALL LETTER RHO
-    u'\u03c3'   #  0xAF -> GREEK SMALL LETTER SIGMA
-    u'\xa3'     #  0xB0 -> POUND SIGN
-    u'\u03ac'   #  0xB1 -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\u03ad'   #  0xB2 -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'   #  0xB3 -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03ca'   #  0xB4 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u03af'   #  0xB5 -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03cc'   #  0xB6 -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u03cd'   #  0xB7 -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u03cb'   #  0xB8 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u03ce'   #  0xB9 -> GREEK SMALL LETTER OMEGA WITH TONOS
-    u'\u03c2'   #  0xBA -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c4'   #  0xBB -> GREEK SMALL LETTER TAU
-    u'\u03c5'   #  0xBC -> GREEK SMALL LETTER UPSILON
-    u'\u03c6'   #  0xBD -> GREEK SMALL LETTER PHI
-    u'\u03c7'   #  0xBE -> GREEK SMALL LETTER CHI
-    u'\u03c8'   #  0xBF -> GREEK SMALL LETTER PSI
-    u'{'        #  0xC0 -> LEFT CURLY BRACKET
-    u'A'        #  0xC1 -> LATIN CAPITAL LETTER A
-    u'B'        #  0xC2 -> LATIN CAPITAL LETTER B
-    u'C'        #  0xC3 -> LATIN CAPITAL LETTER C
-    u'D'        #  0xC4 -> LATIN CAPITAL LETTER D
-    u'E'        #  0xC5 -> LATIN CAPITAL LETTER E
-    u'F'        #  0xC6 -> LATIN CAPITAL LETTER F
-    u'G'        #  0xC7 -> LATIN CAPITAL LETTER G
-    u'H'        #  0xC8 -> LATIN CAPITAL LETTER H
-    u'I'        #  0xC9 -> LATIN CAPITAL LETTER I
-    u'\xad'     #  0xCA -> SOFT HYPHEN
-    u'\u03c9'   #  0xCB -> GREEK SMALL LETTER OMEGA
-    u'\u0390'   #  0xCC -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    u'\u03b0'   #  0xCD -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    u'\u2018'   #  0xCE -> LEFT SINGLE QUOTATION MARK
-    u'\u2015'   #  0xCF -> HORIZONTAL BAR
-    u'}'        #  0xD0 -> RIGHT CURLY BRACKET
-    u'J'        #  0xD1 -> LATIN CAPITAL LETTER J
-    u'K'        #  0xD2 -> LATIN CAPITAL LETTER K
-    u'L'        #  0xD3 -> LATIN CAPITAL LETTER L
-    u'M'        #  0xD4 -> LATIN CAPITAL LETTER M
-    u'N'        #  0xD5 -> LATIN CAPITAL LETTER N
-    u'O'        #  0xD6 -> LATIN CAPITAL LETTER O
-    u'P'        #  0xD7 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0xD8 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0xD9 -> LATIN CAPITAL LETTER R
-    u'\xb1'     #  0xDA -> PLUS-MINUS SIGN
-    u'\xbd'     #  0xDB -> VULGAR FRACTION ONE HALF
-    u'\x1a'     #  0xDC -> SUBSTITUTE
-    u'\u0387'   #  0xDD -> GREEK ANO TELEIA
-    u'\u2019'   #  0xDE -> RIGHT SINGLE QUOTATION MARK
-    u'\xa6'     #  0xDF -> BROKEN BAR
-    u'\\'       #  0xE0 -> REVERSE SOLIDUS
-    u'\x1a'     #  0xE1 -> SUBSTITUTE
-    u'S'        #  0xE2 -> LATIN CAPITAL LETTER S
-    u'T'        #  0xE3 -> LATIN CAPITAL LETTER T
-    u'U'        #  0xE4 -> LATIN CAPITAL LETTER U
-    u'V'        #  0xE5 -> LATIN CAPITAL LETTER V
-    u'W'        #  0xE6 -> LATIN CAPITAL LETTER W
-    u'X'        #  0xE7 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0xE8 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0xE9 -> LATIN CAPITAL LETTER Z
-    u'\xb2'     #  0xEA -> SUPERSCRIPT TWO
-    u'\xa7'     #  0xEB -> SECTION SIGN
-    u'\x1a'     #  0xEC -> SUBSTITUTE
-    u'\x1a'     #  0xED -> SUBSTITUTE
-    u'\xab'     #  0xEE -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xEF -> NOT SIGN
-    u'0'        #  0xF0 -> DIGIT ZERO
-    u'1'        #  0xF1 -> DIGIT ONE
-    u'2'        #  0xF2 -> DIGIT TWO
-    u'3'        #  0xF3 -> DIGIT THREE
-    u'4'        #  0xF4 -> DIGIT FOUR
-    u'5'        #  0xF5 -> DIGIT FIVE
-    u'6'        #  0xF6 -> DIGIT SIX
-    u'7'        #  0xF7 -> DIGIT SEVEN
-    u'8'        #  0xF8 -> DIGIT EIGHT
-    u'9'        #  0xF9 -> DIGIT NINE
-    u'\xb3'     #  0xFA -> SUPERSCRIPT THREE
-    u'\xa9'     #  0xFB -> COPYRIGHT SIGN
-    u'\x1a'     #  0xFC -> SUBSTITUTE
-    u'\x1a'     #  0xFD -> SUBSTITUTE
-    u'\xbb'     #  0xFE -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\x9f'     #  0xFF -> CONTROL
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp932.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp932.py
deleted file mode 100644
index 6321c20..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp932.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# cp932.py: Python Unicode Codec for CP932
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_jp, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_jp.getcodec('cp932')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp932',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp949.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp949.py
deleted file mode 100644
index 1d9725d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp949.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# cp949.py: Python Unicode Codec for CP949
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_kr, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_kr.getcodec('cp949')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp949',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp950.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp950.py
deleted file mode 100644
index e7772b1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/cp950.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# cp950.py: Python Unicode Codec for CP950
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_tw, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_tw.getcodec('cp950')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='cp950',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jis_2004.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jis_2004.py
deleted file mode 100644
index bb35520..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jis_2004.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# euc_jis_2004.py: Python Unicode Codec for EUC_JIS_2004
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_jp, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_jp.getcodec('euc_jis_2004')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='euc_jis_2004',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jisx0213.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jisx0213.py
deleted file mode 100644
index 9914c4f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jisx0213.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# euc_jisx0213.py: Python Unicode Codec for EUC_JISX0213
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_jp, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_jp.getcodec('euc_jisx0213')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='euc_jisx0213',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jp.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jp.py
deleted file mode 100644
index 29406b6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_jp.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# euc_jp.py: Python Unicode Codec for EUC_JP
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_jp, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_jp.getcodec('euc_jp')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='euc_jp',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_kr.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_kr.py
deleted file mode 100644
index 7d5eca4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/euc_kr.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# euc_kr.py: Python Unicode Codec for EUC_KR
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_kr, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_kr.getcodec('euc_kr')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='euc_kr',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gb18030.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gb18030.py
deleted file mode 100644
index 99059ff..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gb18030.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# gb18030.py: Python Unicode Codec for GB18030
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_cn, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_cn.getcodec('gb18030')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='gb18030',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gb2312.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gb2312.py
deleted file mode 100644
index 4e396fa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gb2312.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# gb2312.py: Python Unicode Codec for GB2312
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_cn, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_cn.getcodec('gb2312')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='gb2312',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gbk.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gbk.py
deleted file mode 100644
index 0fd2734..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/gbk.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# gbk.py: Python Unicode Codec for GBK
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_cn, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_cn.getcodec('gbk')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='gbk',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hex_codec.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hex_codec.py
deleted file mode 100644
index 5262bff..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hex_codec.py
+++ /dev/null
@@ -1,79 +0,0 @@
-""" Python 'hex_codec' Codec - 2-digit hex content transfer encoding
-
-    Unlike most of the other codecs which target Unicode, this codec
-    will return Python string objects for both encode and decode.
-
-    Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-"""
-import codecs, binascii
-
-### Codec APIs
-
-def hex_encode(input,errors='strict'):
-
-    """ Encodes the object input and returns a tuple (output
-        object, length consumed).
-
-        errors defines the error handling to apply. It defaults to
-        'strict' handling which is the only currently supported
-        error handling for this codec.
-
-    """
-    assert errors == 'strict'
-    output = binascii.b2a_hex(input)
-    return (output, len(input))
-
-def hex_decode(input,errors='strict'):
-
-    """ Decodes the object input and returns a tuple (output
-        object, length consumed).
-
-        input must be an object which provides the bf_getreadbuf
-        buffer slot. Python strings, buffer objects and memory
-        mapped files are examples of objects providing this slot.
-
-        errors defines the error handling to apply. It defaults to
-        'strict' handling which is the only currently supported
-        error handling for this codec.
-
-    """
-    assert errors == 'strict'
-    output = binascii.a2b_hex(input)
-    return (output, len(input))
-
-class Codec(codecs.Codec):
-
-    def encode(self, input,errors='strict'):
-        return hex_encode(input,errors)
-    def decode(self, input,errors='strict'):
-        return hex_decode(input,errors)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        assert self.errors == 'strict'
-        return binascii.b2a_hex(input)
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        assert self.errors == 'strict'
-        return binascii.a2b_hex(input)
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='hex',
-        encode=hex_encode,
-        decode=hex_decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hp_roman8.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hp_roman8.py
deleted file mode 100644
index 70c1ccc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hp_roman8.py
+++ /dev/null
@@ -1,152 +0,0 @@
-""" Python Character Mapping Codec generated from 'hp_roman8.txt' with gencodec.py.
-
-    Based on data from ftp://dkuug.dk/i18n/charmaps/HP-ROMAN8 (Keld Simonsen)
-
-    Original source: LaserJet IIP Printer User's Manual HP part no
-    33471-90901, Hewlet-Packard, June 1989.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_map)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_map)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='hp-roman8',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-        0x00a1: 0x00c0, #       LATIN CAPITAL LETTER A WITH GRAVE
-        0x00a2: 0x00c2, #       LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-        0x00a3: 0x00c8, #       LATIN CAPITAL LETTER E WITH GRAVE
-        0x00a4: 0x00ca, #       LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-        0x00a5: 0x00cb, #       LATIN CAPITAL LETTER E WITH DIAERESIS
-        0x00a6: 0x00ce, #       LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-        0x00a7: 0x00cf, #       LATIN CAPITAL LETTER I WITH DIAERESIS
-        0x00a8: 0x00b4, #       ACUTE ACCENT
-        0x00a9: 0x02cb, #       MODIFIER LETTER GRAVE ACCENT (Mandarin Chinese fourth tone)
-        0x00aa: 0x02c6, #       MODIFIER LETTER CIRCUMFLEX ACCENT
-        0x00ab: 0x00a8, #       DIAERESIS
-        0x00ac: 0x02dc, #       SMALL TILDE
-        0x00ad: 0x00d9, #       LATIN CAPITAL LETTER U WITH GRAVE
-        0x00ae: 0x00db, #       LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-        0x00af: 0x20a4, #       LIRA SIGN
-        0x00b0: 0x00af, #       MACRON
-        0x00b1: 0x00dd, #       LATIN CAPITAL LETTER Y WITH ACUTE
-        0x00b2: 0x00fd, #       LATIN SMALL LETTER Y WITH ACUTE
-        0x00b3: 0x00b0, #       DEGREE SIGN
-        0x00b4: 0x00c7, #       LATIN CAPITAL LETTER C WITH CEDILLA
-        0x00b5: 0x00e7, #       LATIN SMALL LETTER C WITH CEDILLA
-        0x00b6: 0x00d1, #       LATIN CAPITAL LETTER N WITH TILDE
-        0x00b7: 0x00f1, #       LATIN SMALL LETTER N WITH TILDE
-        0x00b8: 0x00a1, #       INVERTED EXCLAMATION MARK
-        0x00b9: 0x00bf, #       INVERTED QUESTION MARK
-        0x00ba: 0x00a4, #       CURRENCY SIGN
-        0x00bb: 0x00a3, #       POUND SIGN
-        0x00bc: 0x00a5, #       YEN SIGN
-        0x00bd: 0x00a7, #       SECTION SIGN
-        0x00be: 0x0192, #       LATIN SMALL LETTER F WITH HOOK
-        0x00bf: 0x00a2, #       CENT SIGN
-        0x00c0: 0x00e2, #       LATIN SMALL LETTER A WITH CIRCUMFLEX
-        0x00c1: 0x00ea, #       LATIN SMALL LETTER E WITH CIRCUMFLEX
-        0x00c2: 0x00f4, #       LATIN SMALL LETTER O WITH CIRCUMFLEX
-        0x00c3: 0x00fb, #       LATIN SMALL LETTER U WITH CIRCUMFLEX
-        0x00c4: 0x00e1, #       LATIN SMALL LETTER A WITH ACUTE
-        0x00c5: 0x00e9, #       LATIN SMALL LETTER E WITH ACUTE
-        0x00c6: 0x00f3, #       LATIN SMALL LETTER O WITH ACUTE
-        0x00c7: 0x00fa, #       LATIN SMALL LETTER U WITH ACUTE
-        0x00c8: 0x00e0, #       LATIN SMALL LETTER A WITH GRAVE
-        0x00c9: 0x00e8, #       LATIN SMALL LETTER E WITH GRAVE
-        0x00ca: 0x00f2, #       LATIN SMALL LETTER O WITH GRAVE
-        0x00cb: 0x00f9, #       LATIN SMALL LETTER U WITH GRAVE
-        0x00cc: 0x00e4, #       LATIN SMALL LETTER A WITH DIAERESIS
-        0x00cd: 0x00eb, #       LATIN SMALL LETTER E WITH DIAERESIS
-        0x00ce: 0x00f6, #       LATIN SMALL LETTER O WITH DIAERESIS
-        0x00cf: 0x00fc, #       LATIN SMALL LETTER U WITH DIAERESIS
-        0x00d0: 0x00c5, #       LATIN CAPITAL LETTER A WITH RING ABOVE
-        0x00d1: 0x00ee, #       LATIN SMALL LETTER I WITH CIRCUMFLEX
-        0x00d2: 0x00d8, #       LATIN CAPITAL LETTER O WITH STROKE
-        0x00d3: 0x00c6, #       LATIN CAPITAL LETTER AE
-        0x00d4: 0x00e5, #       LATIN SMALL LETTER A WITH RING ABOVE
-        0x00d5: 0x00ed, #       LATIN SMALL LETTER I WITH ACUTE
-        0x00d6: 0x00f8, #       LATIN SMALL LETTER O WITH STROKE
-        0x00d7: 0x00e6, #       LATIN SMALL LETTER AE
-        0x00d8: 0x00c4, #       LATIN CAPITAL LETTER A WITH DIAERESIS
-        0x00d9: 0x00ec, #       LATIN SMALL LETTER I WITH GRAVE
-        0x00da: 0x00d6, #       LATIN CAPITAL LETTER O WITH DIAERESIS
-        0x00db: 0x00dc, #       LATIN CAPITAL LETTER U WITH DIAERESIS
-        0x00dc: 0x00c9, #       LATIN CAPITAL LETTER E WITH ACUTE
-        0x00dd: 0x00ef, #       LATIN SMALL LETTER I WITH DIAERESIS
-        0x00de: 0x00df, #       LATIN SMALL LETTER SHARP S (German)
-        0x00df: 0x00d4, #       LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-        0x00e0: 0x00c1, #       LATIN CAPITAL LETTER A WITH ACUTE
-        0x00e1: 0x00c3, #       LATIN CAPITAL LETTER A WITH TILDE
-        0x00e2: 0x00e3, #       LATIN SMALL LETTER A WITH TILDE
-        0x00e3: 0x00d0, #       LATIN CAPITAL LETTER ETH (Icelandic)
-        0x00e4: 0x00f0, #       LATIN SMALL LETTER ETH (Icelandic)
-        0x00e5: 0x00cd, #       LATIN CAPITAL LETTER I WITH ACUTE
-        0x00e6: 0x00cc, #       LATIN CAPITAL LETTER I WITH GRAVE
-        0x00e7: 0x00d3, #       LATIN CAPITAL LETTER O WITH ACUTE
-        0x00e8: 0x00d2, #       LATIN CAPITAL LETTER O WITH GRAVE
-        0x00e9: 0x00d5, #       LATIN CAPITAL LETTER O WITH TILDE
-        0x00ea: 0x00f5, #       LATIN SMALL LETTER O WITH TILDE
-        0x00eb: 0x0160, #       LATIN CAPITAL LETTER S WITH CARON
-        0x00ec: 0x0161, #       LATIN SMALL LETTER S WITH CARON
-        0x00ed: 0x00da, #       LATIN CAPITAL LETTER U WITH ACUTE
-        0x00ee: 0x0178, #       LATIN CAPITAL LETTER Y WITH DIAERESIS
-        0x00ef: 0x00ff, #       LATIN SMALL LETTER Y WITH DIAERESIS
-        0x00f0: 0x00de, #       LATIN CAPITAL LETTER THORN (Icelandic)
-        0x00f1: 0x00fe, #       LATIN SMALL LETTER THORN (Icelandic)
-        0x00f2: 0x00b7, #       MIDDLE DOT
-        0x00f3: 0x00b5, #       MICRO SIGN
-        0x00f4: 0x00b6, #       PILCROW SIGN
-        0x00f5: 0x00be, #       VULGAR FRACTION THREE QUARTERS
-        0x00f6: 0x2014, #       EM DASH
-        0x00f7: 0x00bc, #       VULGAR FRACTION ONE QUARTER
-        0x00f8: 0x00bd, #       VULGAR FRACTION ONE HALF
-        0x00f9: 0x00aa, #       FEMININE ORDINAL INDICATOR
-        0x00fa: 0x00ba, #       MASCULINE ORDINAL INDICATOR
-        0x00fb: 0x00ab, #       LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-        0x00fc: 0x25a0, #       BLACK SQUARE
-        0x00fd: 0x00bb, #       RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-        0x00fe: 0x00b1, #       PLUS-MINUS SIGN
-        0x00ff: None,
-})
-
-### Encoding Map
-
-encoding_map = codecs.make_encoding_map(decoding_map)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hz.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hz.py
deleted file mode 100644
index 027c4fb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/hz.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# hz.py: Python Unicode Codec for HZ
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_cn, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_cn.getcodec('hz')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='hz',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/idna.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/idna.py
deleted file mode 100644
index ecbf2be..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/idna.py
+++ /dev/null
@@ -1,288 +0,0 @@
-# This module implements the RFCs 3490 (IDNA) and 3491 (Nameprep)
-
-import stringprep, re, codecs
-from unicodedata import ucd_3_2_0 as unicodedata
-
-# IDNA section 3.1
-dots = re.compile(u"[\u002E\u3002\uFF0E\uFF61]")
-
-# IDNA section 5
-ace_prefix = "xn--"
-uace_prefix = unicode(ace_prefix, "ascii")
-
-# This assumes query strings, so AllowUnassigned is true
-def nameprep(label):
-    # Map
-    newlabel = []
-    for c in label:
-        if stringprep.in_table_b1(c):
-            # Map to nothing
-            continue
-        newlabel.append(stringprep.map_table_b2(c))
-    label = u"".join(newlabel)
-
-    # Normalize
-    label = unicodedata.normalize("NFKC", label)
-
-    # Prohibit
-    for c in label:
-        if stringprep.in_table_c12(c) or \
-           stringprep.in_table_c22(c) or \
-           stringprep.in_table_c3(c) or \
-           stringprep.in_table_c4(c) or \
-           stringprep.in_table_c5(c) or \
-           stringprep.in_table_c6(c) or \
-           stringprep.in_table_c7(c) or \
-           stringprep.in_table_c8(c) or \
-           stringprep.in_table_c9(c):
-            raise UnicodeError("Invalid character %r" % c)
-
-    # Check bidi
-    RandAL = map(stringprep.in_table_d1, label)
-    for c in RandAL:
-        if c:
-            # There is a RandAL char in the string. Must perform further
-            # tests:
-            # 1) The characters in section 5.8 MUST be prohibited.
-            # This is table C.8, which was already checked
-            # 2) If a string contains any RandALCat character, the string
-            # MUST NOT contain any LCat character.
-            if filter(stringprep.in_table_d2, label):
-                raise UnicodeError("Violation of BIDI requirement 2")
-
-            # 3) If a string contains any RandALCat character, a
-            # RandALCat character MUST be the first character of the
-            # string, and a RandALCat character MUST be the last
-            # character of the string.
-            if not RandAL[0] or not RandAL[-1]:
-                raise UnicodeError("Violation of BIDI requirement 3")
-
-    return label
-
-def ToASCII(label):
-    try:
-        # Step 1: try ASCII
-        label = label.encode("ascii")
-    except UnicodeError:
-        pass
-    else:
-        # Skip to step 3: UseSTD3ASCIIRules is false, so
-        # Skip to step 8.
-        if 0 < len(label) < 64:
-            return label
-        raise UnicodeError("label empty or too long")
-
-    # Step 2: nameprep
-    label = nameprep(label)
-
-    # Step 3: UseSTD3ASCIIRules is false
-    # Step 4: try ASCII
-    try:
-        label = label.encode("ascii")
-    except UnicodeError:
-        pass
-    else:
-        # Skip to step 8.
-        if 0 < len(label) < 64:
-            return label
-        raise UnicodeError("label empty or too long")
-
-    # Step 5: Check ACE prefix
-    if label.startswith(uace_prefix):
-        raise UnicodeError("Label starts with ACE prefix")
-
-    # Step 6: Encode with PUNYCODE
-    label = label.encode("punycode")
-
-    # Step 7: Prepend ACE prefix
-    label = ace_prefix + label
-
-    # Step 8: Check size
-    if 0 < len(label) < 64:
-        return label
-    raise UnicodeError("label empty or too long")
-
-def ToUnicode(label):
-    # Step 1: Check for ASCII
-    if isinstance(label, str):
-        pure_ascii = True
-    else:
-        try:
-            label = label.encode("ascii")
-            pure_ascii = True
-        except UnicodeError:
-            pure_ascii = False
-    if not pure_ascii:
-        # Step 2: Perform nameprep
-        label = nameprep(label)
-        # It doesn't say this, but apparently, it should be ASCII now
-        try:
-            label = label.encode("ascii")
-        except UnicodeError:
-            raise UnicodeError("Invalid character in IDN label")
-    # Step 3: Check for ACE prefix
-    if not label.startswith(ace_prefix):
-        return unicode(label, "ascii")
-
-    # Step 4: Remove ACE prefix
-    label1 = label[len(ace_prefix):]
-
-    # Step 5: Decode using PUNYCODE
-    result = label1.decode("punycode")
-
-    # Step 6: Apply ToASCII
-    label2 = ToASCII(result)
-
-    # Step 7: Compare the result of step 6 with the one of step 3
-    # label2 will already be in lower case.
-    if label.lower() != label2:
-        raise UnicodeError("IDNA does not round-trip", label, label2)
-
-    # Step 8: return the result of step 5
-    return result
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-    def encode(self,input,errors='strict'):
-
-        if errors != 'strict':
-            # IDNA is quite clear that implementations must be strict
-            raise UnicodeError("unsupported error handling "+errors)
-
-        if not input:
-            return "", 0
-
-        result = []
-        labels = dots.split(input)
-        if labels and len(labels[-1])==0:
-            trailing_dot = '.'
-            del labels[-1]
-        else:
-            trailing_dot = ''
-        for label in labels:
-            result.append(ToASCII(label))
-        # Join with U+002E
-        return ".".join(result)+trailing_dot, len(input)
-
-    def decode(self,input,errors='strict'):
-
-        if errors != 'strict':
-            raise UnicodeError("Unsupported error handling "+errors)
-
-        if not input:
-            return u"", 0
-
-        # IDNA allows decoding to operate on Unicode strings, too.
-        if isinstance(input, unicode):
-            labels = dots.split(input)
-        else:
-            # Must be ASCII string
-            input = str(input)
-            unicode(input, "ascii")
-            labels = input.split(".")
-
-        if labels and len(labels[-1]) == 0:
-            trailing_dot = u'.'
-            del labels[-1]
-        else:
-            trailing_dot = u''
-
-        result = []
-        for label in labels:
-            result.append(ToUnicode(label))
-
-        return u".".join(result)+trailing_dot, len(input)
-
-class IncrementalEncoder(codecs.BufferedIncrementalEncoder):
-    def _buffer_encode(self, input, errors, final):
-        if errors != 'strict':
-            # IDNA is quite clear that implementations must be strict
-            raise UnicodeError("unsupported error handling "+errors)
-
-        if not input:
-            return ("", 0)
-
-        labels = dots.split(input)
-        trailing_dot = u''
-        if labels:
-            if not labels[-1]:
-                trailing_dot = '.'
-                del labels[-1]
-            elif not final:
-                # Keep potentially unfinished label until the next call
-                del labels[-1]
-                if labels:
-                    trailing_dot = '.'
-
-        result = []
-        size = 0
-        for label in labels:
-            result.append(ToASCII(label))
-            if size:
-                size += 1
-            size += len(label)
-
-        # Join with U+002E
-        result = ".".join(result) + trailing_dot
-        size += len(trailing_dot)
-        return (result, size)
-
-class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
-    def _buffer_decode(self, input, errors, final):
-        if errors != 'strict':
-            raise UnicodeError("Unsupported error handling "+errors)
-
-        if not input:
-            return (u"", 0)
-
-        # IDNA allows decoding to operate on Unicode strings, too.
-        if isinstance(input, unicode):
-            labels = dots.split(input)
-        else:
-            # Must be ASCII string
-            input = str(input)
-            unicode(input, "ascii")
-            labels = input.split(".")
-
-        trailing_dot = u''
-        if labels:
-            if not labels[-1]:
-                trailing_dot = u'.'
-                del labels[-1]
-            elif not final:
-                # Keep potentially unfinished label until the next call
-                del labels[-1]
-                if labels:
-                    trailing_dot = u'.'
-
-        result = []
-        size = 0
-        for label in labels:
-            result.append(ToUnicode(label))
-            if size:
-                size += 1
-            size += len(label)
-
-        result = u".".join(result) + trailing_dot
-        size += len(trailing_dot)
-        return (result, size)
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='idna',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp.py
deleted file mode 100644
index 3471999..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# iso2022_jp.py: Python Unicode Codec for ISO2022_JP
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_iso2022, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_iso2022.getcodec('iso2022_jp')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso2022_jp',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_1.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_1.py
deleted file mode 100644
index 8b04b84..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_1.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# iso2022_jp_1.py: Python Unicode Codec for ISO2022_JP_1
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_iso2022, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_iso2022.getcodec('iso2022_jp_1')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso2022_jp_1',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_2.py
deleted file mode 100644
index df92673..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_2.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# iso2022_jp_2.py: Python Unicode Codec for ISO2022_JP_2
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_iso2022, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_iso2022.getcodec('iso2022_jp_2')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso2022_jp_2',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_2004.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_2004.py
deleted file mode 100644
index 138e628..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_2004.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# iso2022_jp_2004.py: Python Unicode Codec for ISO2022_JP_2004
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_iso2022, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_iso2022.getcodec('iso2022_jp_2004')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso2022_jp_2004',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_3.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_3.py
deleted file mode 100644
index 5fd5825..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_3.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# iso2022_jp_3.py: Python Unicode Codec for ISO2022_JP_3
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_iso2022, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_iso2022.getcodec('iso2022_jp_3')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso2022_jp_3',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_ext.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_ext.py
deleted file mode 100644
index 4ac8a0c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_jp_ext.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# iso2022_jp_ext.py: Python Unicode Codec for ISO2022_JP_EXT
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_iso2022, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_iso2022.getcodec('iso2022_jp_ext')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso2022_jp_ext',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_kr.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_kr.py
deleted file mode 100644
index 3dfe986..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso2022_kr.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# iso2022_kr.py: Python Unicode Codec for ISO2022_KR
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_iso2022, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_iso2022.getcodec('iso2022_kr')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso2022_kr',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_1.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_1.py
deleted file mode 100644
index 7f6be30..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_1.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_1 generated from 'MAPPINGS/ISO8859/8859-1.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-1',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\xa1'     #  0xA1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\xa5'     #  0xA5 -> YEN SIGN
-    u'\xa6'     #  0xA6 -> BROKEN BAR
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xa8'     #  0xA8 -> DIAERESIS
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\xaa'     #  0xAA -> FEMININE ORDINAL INDICATOR
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\xaf'     #  0xAF -> MACRON
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'     #  0xB4 -> ACUTE ACCENT
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\xb8'     #  0xB8 -> CEDILLA
-    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
-    u'\xba'     #  0xBA -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'     #  0xBF -> INVERTED QUESTION MARK
-    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xd0'     #  0xD0 -> LATIN CAPITAL LETTER ETH (Icelandic)
-    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
-    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'     #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'     #  0xDE -> LATIN CAPITAL LETTER THORN (Icelandic)
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S (German)
-    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf0'     #  0xF0 -> LATIN SMALL LETTER ETH (Icelandic)
-    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'     #  0xF7 -> DIVISION SIGN
-    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'     #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'     #  0xFE -> LATIN SMALL LETTER THORN (Icelandic)
-    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_10.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_10.py
deleted file mode 100644
index d2a7a51..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_10.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_10 generated from 'MAPPINGS/ISO8859/8859-10.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-10',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u0104'   #  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u0112'   #  0xA2 -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u0122'   #  0xA3 -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u012a'   #  0xA4 -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u0128'   #  0xA5 -> LATIN CAPITAL LETTER I WITH TILDE
-    u'\u0136'   #  0xA6 -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\u013b'   #  0xA8 -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\u0110'   #  0xA9 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0160'   #  0xAA -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u0166'   #  0xAB -> LATIN CAPITAL LETTER T WITH STROKE
-    u'\u017d'   #  0xAC -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\u016a'   #  0xAE -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\u014a'   #  0xAF -> LATIN CAPITAL LETTER ENG
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\u0105'   #  0xB1 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u0113'   #  0xB2 -> LATIN SMALL LETTER E WITH MACRON
-    u'\u0123'   #  0xB3 -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u012b'   #  0xB4 -> LATIN SMALL LETTER I WITH MACRON
-    u'\u0129'   #  0xB5 -> LATIN SMALL LETTER I WITH TILDE
-    u'\u0137'   #  0xB6 -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\u013c'   #  0xB8 -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u0111'   #  0xB9 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0161'   #  0xBA -> LATIN SMALL LETTER S WITH CARON
-    u'\u0167'   #  0xBB -> LATIN SMALL LETTER T WITH STROKE
-    u'\u017e'   #  0xBC -> LATIN SMALL LETTER Z WITH CARON
-    u'\u2015'   #  0xBD -> HORIZONTAL BAR
-    u'\u016b'   #  0xBE -> LATIN SMALL LETTER U WITH MACRON
-    u'\u014b'   #  0xBF -> LATIN SMALL LETTER ENG
-    u'\u0100'   #  0xC0 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\u012e'   #  0xC7 -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u010c'   #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0118'   #  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u0116'   #  0xCC -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xd0'     #  0xD0 -> LATIN CAPITAL LETTER ETH (Icelandic)
-    u'\u0145'   #  0xD1 -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\u014c'   #  0xD2 -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\u0168'   #  0xD7 -> LATIN CAPITAL LETTER U WITH TILDE
-    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u0172'   #  0xD9 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'     #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'     #  0xDE -> LATIN CAPITAL LETTER THORN (Icelandic)
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S (German)
-    u'\u0101'   #  0xE0 -> LATIN SMALL LETTER A WITH MACRON
-    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
-    u'\u012f'   #  0xE7 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u010d'   #  0xE8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0119'   #  0xEA -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u0117'   #  0xEC -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf0'     #  0xF0 -> LATIN SMALL LETTER ETH (Icelandic)
-    u'\u0146'   #  0xF1 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\u014d'   #  0xF2 -> LATIN SMALL LETTER O WITH MACRON
-    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\u0169'   #  0xF7 -> LATIN SMALL LETTER U WITH TILDE
-    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\u0173'   #  0xF9 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'     #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'     #  0xFE -> LATIN SMALL LETTER THORN (Icelandic)
-    u'\u0138'   #  0xFF -> LATIN SMALL LETTER KRA
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_11.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_11.py
deleted file mode 100644
index 2f6252a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_11.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_11 generated from 'MAPPINGS/ISO8859/8859-11.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-11',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u0e01'   #  0xA1 -> THAI CHARACTER KO KAI
-    u'\u0e02'   #  0xA2 -> THAI CHARACTER KHO KHAI
-    u'\u0e03'   #  0xA3 -> THAI CHARACTER KHO KHUAT
-    u'\u0e04'   #  0xA4 -> THAI CHARACTER KHO KHWAI
-    u'\u0e05'   #  0xA5 -> THAI CHARACTER KHO KHON
-    u'\u0e06'   #  0xA6 -> THAI CHARACTER KHO RAKHANG
-    u'\u0e07'   #  0xA7 -> THAI CHARACTER NGO NGU
-    u'\u0e08'   #  0xA8 -> THAI CHARACTER CHO CHAN
-    u'\u0e09'   #  0xA9 -> THAI CHARACTER CHO CHING
-    u'\u0e0a'   #  0xAA -> THAI CHARACTER CHO CHANG
-    u'\u0e0b'   #  0xAB -> THAI CHARACTER SO SO
-    u'\u0e0c'   #  0xAC -> THAI CHARACTER CHO CHOE
-    u'\u0e0d'   #  0xAD -> THAI CHARACTER YO YING
-    u'\u0e0e'   #  0xAE -> THAI CHARACTER DO CHADA
-    u'\u0e0f'   #  0xAF -> THAI CHARACTER TO PATAK
-    u'\u0e10'   #  0xB0 -> THAI CHARACTER THO THAN
-    u'\u0e11'   #  0xB1 -> THAI CHARACTER THO NANGMONTHO
-    u'\u0e12'   #  0xB2 -> THAI CHARACTER THO PHUTHAO
-    u'\u0e13'   #  0xB3 -> THAI CHARACTER NO NEN
-    u'\u0e14'   #  0xB4 -> THAI CHARACTER DO DEK
-    u'\u0e15'   #  0xB5 -> THAI CHARACTER TO TAO
-    u'\u0e16'   #  0xB6 -> THAI CHARACTER THO THUNG
-    u'\u0e17'   #  0xB7 -> THAI CHARACTER THO THAHAN
-    u'\u0e18'   #  0xB8 -> THAI CHARACTER THO THONG
-    u'\u0e19'   #  0xB9 -> THAI CHARACTER NO NU
-    u'\u0e1a'   #  0xBA -> THAI CHARACTER BO BAIMAI
-    u'\u0e1b'   #  0xBB -> THAI CHARACTER PO PLA
-    u'\u0e1c'   #  0xBC -> THAI CHARACTER PHO PHUNG
-    u'\u0e1d'   #  0xBD -> THAI CHARACTER FO FA
-    u'\u0e1e'   #  0xBE -> THAI CHARACTER PHO PHAN
-    u'\u0e1f'   #  0xBF -> THAI CHARACTER FO FAN
-    u'\u0e20'   #  0xC0 -> THAI CHARACTER PHO SAMPHAO
-    u'\u0e21'   #  0xC1 -> THAI CHARACTER MO MA
-    u'\u0e22'   #  0xC2 -> THAI CHARACTER YO YAK
-    u'\u0e23'   #  0xC3 -> THAI CHARACTER RO RUA
-    u'\u0e24'   #  0xC4 -> THAI CHARACTER RU
-    u'\u0e25'   #  0xC5 -> THAI CHARACTER LO LING
-    u'\u0e26'   #  0xC6 -> THAI CHARACTER LU
-    u'\u0e27'   #  0xC7 -> THAI CHARACTER WO WAEN
-    u'\u0e28'   #  0xC8 -> THAI CHARACTER SO SALA
-    u'\u0e29'   #  0xC9 -> THAI CHARACTER SO RUSI
-    u'\u0e2a'   #  0xCA -> THAI CHARACTER SO SUA
-    u'\u0e2b'   #  0xCB -> THAI CHARACTER HO HIP
-    u'\u0e2c'   #  0xCC -> THAI CHARACTER LO CHULA
-    u'\u0e2d'   #  0xCD -> THAI CHARACTER O ANG
-    u'\u0e2e'   #  0xCE -> THAI CHARACTER HO NOKHUK
-    u'\u0e2f'   #  0xCF -> THAI CHARACTER PAIYANNOI
-    u'\u0e30'   #  0xD0 -> THAI CHARACTER SARA A
-    u'\u0e31'   #  0xD1 -> THAI CHARACTER MAI HAN-AKAT
-    u'\u0e32'   #  0xD2 -> THAI CHARACTER SARA AA
-    u'\u0e33'   #  0xD3 -> THAI CHARACTER SARA AM
-    u'\u0e34'   #  0xD4 -> THAI CHARACTER SARA I
-    u'\u0e35'   #  0xD5 -> THAI CHARACTER SARA II
-    u'\u0e36'   #  0xD6 -> THAI CHARACTER SARA UE
-    u'\u0e37'   #  0xD7 -> THAI CHARACTER SARA UEE
-    u'\u0e38'   #  0xD8 -> THAI CHARACTER SARA U
-    u'\u0e39'   #  0xD9 -> THAI CHARACTER SARA UU
-    u'\u0e3a'   #  0xDA -> THAI CHARACTER PHINTHU
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\u0e3f'   #  0xDF -> THAI CURRENCY SYMBOL BAHT
-    u'\u0e40'   #  0xE0 -> THAI CHARACTER SARA E
-    u'\u0e41'   #  0xE1 -> THAI CHARACTER SARA AE
-    u'\u0e42'   #  0xE2 -> THAI CHARACTER SARA O
-    u'\u0e43'   #  0xE3 -> THAI CHARACTER SARA AI MAIMUAN
-    u'\u0e44'   #  0xE4 -> THAI CHARACTER SARA AI MAIMALAI
-    u'\u0e45'   #  0xE5 -> THAI CHARACTER LAKKHANGYAO
-    u'\u0e46'   #  0xE6 -> THAI CHARACTER MAIYAMOK
-    u'\u0e47'   #  0xE7 -> THAI CHARACTER MAITAIKHU
-    u'\u0e48'   #  0xE8 -> THAI CHARACTER MAI EK
-    u'\u0e49'   #  0xE9 -> THAI CHARACTER MAI THO
-    u'\u0e4a'   #  0xEA -> THAI CHARACTER MAI TRI
-    u'\u0e4b'   #  0xEB -> THAI CHARACTER MAI CHATTAWA
-    u'\u0e4c'   #  0xEC -> THAI CHARACTER THANTHAKHAT
-    u'\u0e4d'   #  0xED -> THAI CHARACTER NIKHAHIT
-    u'\u0e4e'   #  0xEE -> THAI CHARACTER YAMAKKAN
-    u'\u0e4f'   #  0xEF -> THAI CHARACTER FONGMAN
-    u'\u0e50'   #  0xF0 -> THAI DIGIT ZERO
-    u'\u0e51'   #  0xF1 -> THAI DIGIT ONE
-    u'\u0e52'   #  0xF2 -> THAI DIGIT TWO
-    u'\u0e53'   #  0xF3 -> THAI DIGIT THREE
-    u'\u0e54'   #  0xF4 -> THAI DIGIT FOUR
-    u'\u0e55'   #  0xF5 -> THAI DIGIT FIVE
-    u'\u0e56'   #  0xF6 -> THAI DIGIT SIX
-    u'\u0e57'   #  0xF7 -> THAI DIGIT SEVEN
-    u'\u0e58'   #  0xF8 -> THAI DIGIT EIGHT
-    u'\u0e59'   #  0xF9 -> THAI DIGIT NINE
-    u'\u0e5a'   #  0xFA -> THAI CHARACTER ANGKHANKHU
-    u'\u0e5b'   #  0xFB -> THAI CHARACTER KHOMUT
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_13.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_13.py
deleted file mode 100644
index 0523133..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_13.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_13 generated from 'MAPPINGS/ISO8859/8859-13.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-13',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u201d'   #  0xA1 -> RIGHT DOUBLE QUOTATION MARK
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\u201e'   #  0xA5 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\xa6'     #  0xA6 -> BROKEN BAR
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xd8'     #  0xA8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u0156'   #  0xAA -> LATIN CAPITAL LETTER R WITH CEDILLA
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\xc6'     #  0xAF -> LATIN CAPITAL LETTER AE
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
-    u'\u201c'   #  0xB4 -> LEFT DOUBLE QUOTATION MARK
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\xf8'     #  0xB8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
-    u'\u0157'   #  0xBA -> LATIN SMALL LETTER R WITH CEDILLA
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xe6'     #  0xBF -> LATIN SMALL LETTER AE
-    u'\u0104'   #  0xC0 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u012e'   #  0xC1 -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u0100'   #  0xC2 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\u0106'   #  0xC3 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\u0118'   #  0xC6 -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\u0112'   #  0xC7 -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u010c'   #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0179'   #  0xCA -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\u0116'   #  0xCB -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\u0122'   #  0xCC -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u0136'   #  0xCD -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\u012a'   #  0xCE -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u013b'   #  0xCF -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\u0160'   #  0xD0 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u0143'   #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\u0145'   #  0xD2 -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\u014c'   #  0xD4 -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
-    u'\u0172'   #  0xD8 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\u0141'   #  0xD9 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\u015a'   #  0xDA -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u016a'   #  0xDB -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u017b'   #  0xDD -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\u017d'   #  0xDE -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S (German)
-    u'\u0105'   #  0xE0 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u012f'   #  0xE1 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u0101'   #  0xE2 -> LATIN SMALL LETTER A WITH MACRON
-    u'\u0107'   #  0xE3 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\u0119'   #  0xE6 -> LATIN SMALL LETTER E WITH OGONEK
-    u'\u0113'   #  0xE7 -> LATIN SMALL LETTER E WITH MACRON
-    u'\u010d'   #  0xE8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u017a'   #  0xEA -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u0117'   #  0xEB -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\u0123'   #  0xEC -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u0137'   #  0xED -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\u012b'   #  0xEE -> LATIN SMALL LETTER I WITH MACRON
-    u'\u013c'   #  0xEF -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u0161'   #  0xF0 -> LATIN SMALL LETTER S WITH CARON
-    u'\u0144'   #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0146'   #  0xF2 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\u014d'   #  0xF4 -> LATIN SMALL LETTER O WITH MACRON
-    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'     #  0xF7 -> DIVISION SIGN
-    u'\u0173'   #  0xF8 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\u0142'   #  0xF9 -> LATIN SMALL LETTER L WITH STROKE
-    u'\u015b'   #  0xFA -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u016b'   #  0xFB -> LATIN SMALL LETTER U WITH MACRON
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u017c'   #  0xFD -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u017e'   #  0xFE -> LATIN SMALL LETTER Z WITH CARON
-    u'\u2019'   #  0xFF -> RIGHT SINGLE QUOTATION MARK
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_14.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_14.py
deleted file mode 100644
index f0ed8fa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_14.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_14 generated from 'MAPPINGS/ISO8859/8859-14.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-14',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u1e02'   #  0xA1 -> LATIN CAPITAL LETTER B WITH DOT ABOVE
-    u'\u1e03'   #  0xA2 -> LATIN SMALL LETTER B WITH DOT ABOVE
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\u010a'   #  0xA4 -> LATIN CAPITAL LETTER C WITH DOT ABOVE
-    u'\u010b'   #  0xA5 -> LATIN SMALL LETTER C WITH DOT ABOVE
-    u'\u1e0a'   #  0xA6 -> LATIN CAPITAL LETTER D WITH DOT ABOVE
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\u1e80'   #  0xA8 -> LATIN CAPITAL LETTER W WITH GRAVE
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u1e82'   #  0xAA -> LATIN CAPITAL LETTER W WITH ACUTE
-    u'\u1e0b'   #  0xAB -> LATIN SMALL LETTER D WITH DOT ABOVE
-    u'\u1ef2'   #  0xAC -> LATIN CAPITAL LETTER Y WITH GRAVE
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\u0178'   #  0xAF -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u1e1e'   #  0xB0 -> LATIN CAPITAL LETTER F WITH DOT ABOVE
-    u'\u1e1f'   #  0xB1 -> LATIN SMALL LETTER F WITH DOT ABOVE
-    u'\u0120'   #  0xB2 -> LATIN CAPITAL LETTER G WITH DOT ABOVE
-    u'\u0121'   #  0xB3 -> LATIN SMALL LETTER G WITH DOT ABOVE
-    u'\u1e40'   #  0xB4 -> LATIN CAPITAL LETTER M WITH DOT ABOVE
-    u'\u1e41'   #  0xB5 -> LATIN SMALL LETTER M WITH DOT ABOVE
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\u1e56'   #  0xB7 -> LATIN CAPITAL LETTER P WITH DOT ABOVE
-    u'\u1e81'   #  0xB8 -> LATIN SMALL LETTER W WITH GRAVE
-    u'\u1e57'   #  0xB9 -> LATIN SMALL LETTER P WITH DOT ABOVE
-    u'\u1e83'   #  0xBA -> LATIN SMALL LETTER W WITH ACUTE
-    u'\u1e60'   #  0xBB -> LATIN CAPITAL LETTER S WITH DOT ABOVE
-    u'\u1ef3'   #  0xBC -> LATIN SMALL LETTER Y WITH GRAVE
-    u'\u1e84'   #  0xBD -> LATIN CAPITAL LETTER W WITH DIAERESIS
-    u'\u1e85'   #  0xBE -> LATIN SMALL LETTER W WITH DIAERESIS
-    u'\u1e61'   #  0xBF -> LATIN SMALL LETTER S WITH DOT ABOVE
-    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u0174'   #  0xD0 -> LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\u1e6a'   #  0xD7 -> LATIN CAPITAL LETTER T WITH DOT ABOVE
-    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'     #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\u0176'   #  0xDE -> LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u0175'   #  0xF0 -> LATIN SMALL LETTER W WITH CIRCUMFLEX
-    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\u1e6b'   #  0xF7 -> LATIN SMALL LETTER T WITH DOT ABOVE
-    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'     #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\u0177'   #  0xFE -> LATIN SMALL LETTER Y WITH CIRCUMFLEX
-    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_15.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_15.py
deleted file mode 100644
index 4c322be..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_15.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_15 generated from 'MAPPINGS/ISO8859/8859-15.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-15',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\xa1'     #  0xA1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\u20ac'   #  0xA4 -> EURO SIGN
-    u'\xa5'     #  0xA5 -> YEN SIGN
-    u'\u0160'   #  0xA6 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\u0161'   #  0xA8 -> LATIN SMALL LETTER S WITH CARON
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\xaa'     #  0xAA -> FEMININE ORDINAL INDICATOR
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\xaf'     #  0xAF -> MACRON
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
-    u'\u017d'   #  0xB4 -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\u017e'   #  0xB8 -> LATIN SMALL LETTER Z WITH CARON
-    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
-    u'\xba'     #  0xBA -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u0152'   #  0xBC -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'   #  0xBD -> LATIN SMALL LIGATURE OE
-    u'\u0178'   #  0xBE -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\xbf'     #  0xBF -> INVERTED QUESTION MARK
-    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xd0'     #  0xD0 -> LATIN CAPITAL LETTER ETH
-    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
-    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'     #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xde'     #  0xDE -> LATIN CAPITAL LETTER THORN
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf0'     #  0xF0 -> LATIN SMALL LETTER ETH
-    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'     #  0xF7 -> DIVISION SIGN
-    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'     #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xfe'     #  0xFE -> LATIN SMALL LETTER THORN
-    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_16.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_16.py
deleted file mode 100644
index e1bce0a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_16.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_16 generated from 'MAPPINGS/ISO8859/8859-16.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-16',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u0104'   #  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u0105'   #  0xA2 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u0141'   #  0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\u20ac'   #  0xA4 -> EURO SIGN
-    u'\u201e'   #  0xA5 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u0160'   #  0xA6 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\u0161'   #  0xA8 -> LATIN SMALL LETTER S WITH CARON
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u0218'   #  0xAA -> LATIN CAPITAL LETTER S WITH COMMA BELOW
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u0179'   #  0xAC -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\u017a'   #  0xAE -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u017b'   #  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\u010c'   #  0xB2 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\u0142'   #  0xB3 -> LATIN SMALL LETTER L WITH STROKE
-    u'\u017d'   #  0xB4 -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u201d'   #  0xB5 -> RIGHT DOUBLE QUOTATION MARK
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\u017e'   #  0xB8 -> LATIN SMALL LETTER Z WITH CARON
-    u'\u010d'   #  0xB9 -> LATIN SMALL LETTER C WITH CARON
-    u'\u0219'   #  0xBA -> LATIN SMALL LETTER S WITH COMMA BELOW
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u0152'   #  0xBC -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'   #  0xBD -> LATIN SMALL LIGATURE OE
-    u'\u0178'   #  0xBE -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u017c'   #  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0102'   #  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u0106'   #  0xC5 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u0110'   #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0143'   #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0150'   #  0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\u015a'   #  0xD7 -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u0170'   #  0xD8 -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0118'   #  0xDD -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\u021a'   #  0xDE -> LATIN CAPITAL LETTER T WITH COMMA BELOW
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0103'   #  0xE3 -> LATIN SMALL LETTER A WITH BREVE
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u0107'   #  0xE5 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u0111'   #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0144'   #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u0151'   #  0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\u015b'   #  0xF7 -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u0171'   #  0xF8 -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u0119'   #  0xFD -> LATIN SMALL LETTER E WITH OGONEK
-    u'\u021b'   #  0xFE -> LATIN SMALL LETTER T WITH COMMA BELOW
-    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_2.py
deleted file mode 100644
index fb3606f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_2.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_2 generated from 'MAPPINGS/ISO8859/8859-2.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-2',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u0104'   #  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u02d8'   #  0xA2 -> BREVE
-    u'\u0141'   #  0xA3 -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\u013d'   #  0xA5 -> LATIN CAPITAL LETTER L WITH CARON
-    u'\u015a'   #  0xA6 -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xa8'     #  0xA8 -> DIAERESIS
-    u'\u0160'   #  0xA9 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u015e'   #  0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\u0164'   #  0xAB -> LATIN CAPITAL LETTER T WITH CARON
-    u'\u0179'   #  0xAC -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\u017d'   #  0xAE -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u017b'   #  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\u0105'   #  0xB1 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u02db'   #  0xB2 -> OGONEK
-    u'\u0142'   #  0xB3 -> LATIN SMALL LETTER L WITH STROKE
-    u'\xb4'     #  0xB4 -> ACUTE ACCENT
-    u'\u013e'   #  0xB5 -> LATIN SMALL LETTER L WITH CARON
-    u'\u015b'   #  0xB6 -> LATIN SMALL LETTER S WITH ACUTE
-    u'\u02c7'   #  0xB7 -> CARON
-    u'\xb8'     #  0xB8 -> CEDILLA
-    u'\u0161'   #  0xB9 -> LATIN SMALL LETTER S WITH CARON
-    u'\u015f'   #  0xBA -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\u0165'   #  0xBB -> LATIN SMALL LETTER T WITH CARON
-    u'\u017a'   #  0xBC -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u02dd'   #  0xBD -> DOUBLE ACUTE ACCENT
-    u'\u017e'   #  0xBE -> LATIN SMALL LETTER Z WITH CARON
-    u'\u017c'   #  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u0154'   #  0xC0 -> LATIN CAPITAL LETTER R WITH ACUTE
-    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0102'   #  0xC3 -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u0139'   #  0xC5 -> LATIN CAPITAL LETTER L WITH ACUTE
-    u'\u0106'   #  0xC6 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\u010c'   #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0118'   #  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u011a'   #  0xCC -> LATIN CAPITAL LETTER E WITH CARON
-    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\u010e'   #  0xCF -> LATIN CAPITAL LETTER D WITH CARON
-    u'\u0110'   #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0143'   #  0xD1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\u0147'   #  0xD2 -> LATIN CAPITAL LETTER N WITH CARON
-    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0150'   #  0xD5 -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
-    u'\u0158'   #  0xD8 -> LATIN CAPITAL LETTER R WITH CARON
-    u'\u016e'   #  0xD9 -> LATIN CAPITAL LETTER U WITH RING ABOVE
-    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\u0170'   #  0xDB -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xdd'     #  0xDD -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\u0162'   #  0xDE -> LATIN CAPITAL LETTER T WITH CEDILLA
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\u0155'   #  0xE0 -> LATIN SMALL LETTER R WITH ACUTE
-    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\u0103'   #  0xE3 -> LATIN SMALL LETTER A WITH BREVE
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u013a'   #  0xE5 -> LATIN SMALL LETTER L WITH ACUTE
-    u'\u0107'   #  0xE6 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\u010d'   #  0xE8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0119'   #  0xEA -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u011b'   #  0xEC -> LATIN SMALL LETTER E WITH CARON
-    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u010f'   #  0xEF -> LATIN SMALL LETTER D WITH CARON
-    u'\u0111'   #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0144'   #  0xF1 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0148'   #  0xF2 -> LATIN SMALL LETTER N WITH CARON
-    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u0151'   #  0xF5 -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'     #  0xF7 -> DIVISION SIGN
-    u'\u0159'   #  0xF8 -> LATIN SMALL LETTER R WITH CARON
-    u'\u016f'   #  0xF9 -> LATIN SMALL LETTER U WITH RING ABOVE
-    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\u0171'   #  0xFB -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xfd'     #  0xFD -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\u0163'   #  0xFE -> LATIN SMALL LETTER T WITH CEDILLA
-    u'\u02d9'   #  0xFF -> DOT ABOVE
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_3.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_3.py
deleted file mode 100644
index aaa2f52..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_3.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_3 generated from 'MAPPINGS/ISO8859/8859-3.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-3',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u0126'   #  0xA1 -> LATIN CAPITAL LETTER H WITH STROKE
-    u'\u02d8'   #  0xA2 -> BREVE
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\ufffe'
-    u'\u0124'   #  0xA6 -> LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xa8'     #  0xA8 -> DIAERESIS
-    u'\u0130'   #  0xA9 -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'\u015e'   #  0xAA -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\u011e'   #  0xAB -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\u0134'   #  0xAC -> LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\ufffe'
-    u'\u017b'   #  0xAF -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\u0127'   #  0xB1 -> LATIN SMALL LETTER H WITH STROKE
-    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'     #  0xB4 -> ACUTE ACCENT
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\u0125'   #  0xB6 -> LATIN SMALL LETTER H WITH CIRCUMFLEX
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\xb8'     #  0xB8 -> CEDILLA
-    u'\u0131'   #  0xB9 -> LATIN SMALL LETTER DOTLESS I
-    u'\u015f'   #  0xBA -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\u011f'   #  0xBB -> LATIN SMALL LETTER G WITH BREVE
-    u'\u0135'   #  0xBC -> LATIN SMALL LETTER J WITH CIRCUMFLEX
-    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
-    u'\ufffe'
-    u'\u017c'   #  0xBF -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\ufffe'
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u010a'   #  0xC5 -> LATIN CAPITAL LETTER C WITH DOT ABOVE
-    u'\u0108'   #  0xC6 -> LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\ufffe'
-    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0120'   #  0xD5 -> LATIN CAPITAL LETTER G WITH DOT ABOVE
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
-    u'\u011c'   #  0xD8 -> LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u016c'   #  0xDD -> LATIN CAPITAL LETTER U WITH BREVE
-    u'\u015c'   #  0xDE -> LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\ufffe'
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u010b'   #  0xE5 -> LATIN SMALL LETTER C WITH DOT ABOVE
-    u'\u0109'   #  0xE6 -> LATIN SMALL LETTER C WITH CIRCUMFLEX
-    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\ufffe'
-    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\u0121'   #  0xF5 -> LATIN SMALL LETTER G WITH DOT ABOVE
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'     #  0xF7 -> DIVISION SIGN
-    u'\u011d'   #  0xF8 -> LATIN SMALL LETTER G WITH CIRCUMFLEX
-    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u016d'   #  0xFD -> LATIN SMALL LETTER U WITH BREVE
-    u'\u015d'   #  0xFE -> LATIN SMALL LETTER S WITH CIRCUMFLEX
-    u'\u02d9'   #  0xFF -> DOT ABOVE
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_4.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_4.py
deleted file mode 100644
index 6e86ed1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_4.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_4 generated from 'MAPPINGS/ISO8859/8859-4.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-4',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u0104'   #  0xA1 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\u0138'   #  0xA2 -> LATIN SMALL LETTER KRA
-    u'\u0156'   #  0xA3 -> LATIN CAPITAL LETTER R WITH CEDILLA
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\u0128'   #  0xA5 -> LATIN CAPITAL LETTER I WITH TILDE
-    u'\u013b'   #  0xA6 -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xa8'     #  0xA8 -> DIAERESIS
-    u'\u0160'   #  0xA9 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u0112'   #  0xAA -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u0122'   #  0xAB -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u0166'   #  0xAC -> LATIN CAPITAL LETTER T WITH STROKE
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\u017d'   #  0xAE -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xaf'     #  0xAF -> MACRON
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\u0105'   #  0xB1 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u02db'   #  0xB2 -> OGONEK
-    u'\u0157'   #  0xB3 -> LATIN SMALL LETTER R WITH CEDILLA
-    u'\xb4'     #  0xB4 -> ACUTE ACCENT
-    u'\u0129'   #  0xB5 -> LATIN SMALL LETTER I WITH TILDE
-    u'\u013c'   #  0xB6 -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u02c7'   #  0xB7 -> CARON
-    u'\xb8'     #  0xB8 -> CEDILLA
-    u'\u0161'   #  0xB9 -> LATIN SMALL LETTER S WITH CARON
-    u'\u0113'   #  0xBA -> LATIN SMALL LETTER E WITH MACRON
-    u'\u0123'   #  0xBB -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u0167'   #  0xBC -> LATIN SMALL LETTER T WITH STROKE
-    u'\u014a'   #  0xBD -> LATIN CAPITAL LETTER ENG
-    u'\u017e'   #  0xBE -> LATIN SMALL LETTER Z WITH CARON
-    u'\u014b'   #  0xBF -> LATIN SMALL LETTER ENG
-    u'\u0100'   #  0xC0 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\u012e'   #  0xC7 -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u010c'   #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0118'   #  0xCA -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u0116'   #  0xCC -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\u012a'   #  0xCF -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u0110'   #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u0145'   #  0xD1 -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\u014c'   #  0xD2 -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\u0136'   #  0xD3 -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
-    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u0172'   #  0xD9 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0168'   #  0xDD -> LATIN CAPITAL LETTER U WITH TILDE
-    u'\u016a'   #  0xDE -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\u0101'   #  0xE0 -> LATIN SMALL LETTER A WITH MACRON
-    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
-    u'\u012f'   #  0xE7 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u010d'   #  0xE8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0119'   #  0xEA -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\u0117'   #  0xEC -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\u012b'   #  0xEF -> LATIN SMALL LETTER I WITH MACRON
-    u'\u0111'   #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\u0146'   #  0xF1 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\u014d'   #  0xF2 -> LATIN SMALL LETTER O WITH MACRON
-    u'\u0137'   #  0xF3 -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'     #  0xF7 -> DIVISION SIGN
-    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\u0173'   #  0xF9 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u0169'   #  0xFD -> LATIN SMALL LETTER U WITH TILDE
-    u'\u016b'   #  0xFE -> LATIN SMALL LETTER U WITH MACRON
-    u'\u02d9'   #  0xFF -> DOT ABOVE
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_5.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_5.py
deleted file mode 100644
index c93283e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_5.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_5 generated from 'MAPPINGS/ISO8859/8859-5.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-5',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u0401'   #  0xA1 -> CYRILLIC CAPITAL LETTER IO
-    u'\u0402'   #  0xA2 -> CYRILLIC CAPITAL LETTER DJE
-    u'\u0403'   #  0xA3 -> CYRILLIC CAPITAL LETTER GJE
-    u'\u0404'   #  0xA4 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\u0405'   #  0xA5 -> CYRILLIC CAPITAL LETTER DZE
-    u'\u0406'   #  0xA6 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0407'   #  0xA7 -> CYRILLIC CAPITAL LETTER YI
-    u'\u0408'   #  0xA8 -> CYRILLIC CAPITAL LETTER JE
-    u'\u0409'   #  0xA9 -> CYRILLIC CAPITAL LETTER LJE
-    u'\u040a'   #  0xAA -> CYRILLIC CAPITAL LETTER NJE
-    u'\u040b'   #  0xAB -> CYRILLIC CAPITAL LETTER TSHE
-    u'\u040c'   #  0xAC -> CYRILLIC CAPITAL LETTER KJE
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\u040e'   #  0xAE -> CYRILLIC CAPITAL LETTER SHORT U
-    u'\u040f'   #  0xAF -> CYRILLIC CAPITAL LETTER DZHE
-    u'\u0410'   #  0xB0 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'   #  0xB1 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0412'   #  0xB2 -> CYRILLIC CAPITAL LETTER VE
-    u'\u0413'   #  0xB3 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0414'   #  0xB4 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'   #  0xB5 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0416'   #  0xB6 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0417'   #  0xB7 -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0418'   #  0xB8 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'   #  0xB9 -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'   #  0xBA -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'   #  0xBB -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'   #  0xBC -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'   #  0xBD -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'   #  0xBE -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'   #  0xBF -> CYRILLIC CAPITAL LETTER PE
-    u'\u0420'   #  0xC0 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'   #  0xC1 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'   #  0xC2 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'   #  0xC3 -> CYRILLIC CAPITAL LETTER U
-    u'\u0424'   #  0xC4 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0425'   #  0xC5 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0426'   #  0xC6 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0427'   #  0xC7 -> CYRILLIC CAPITAL LETTER CHE
-    u'\u0428'   #  0xC8 -> CYRILLIC CAPITAL LETTER SHA
-    u'\u0429'   #  0xC9 -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u042a'   #  0xCA -> CYRILLIC CAPITAL LETTER HARD SIGN
-    u'\u042b'   #  0xCB -> CYRILLIC CAPITAL LETTER YERU
-    u'\u042c'   #  0xCC -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042d'   #  0xCD -> CYRILLIC CAPITAL LETTER E
-    u'\u042e'   #  0xCE -> CYRILLIC CAPITAL LETTER YU
-    u'\u042f'   #  0xCF -> CYRILLIC CAPITAL LETTER YA
-    u'\u0430'   #  0xD0 -> CYRILLIC SMALL LETTER A
-    u'\u0431'   #  0xD1 -> CYRILLIC SMALL LETTER BE
-    u'\u0432'   #  0xD2 -> CYRILLIC SMALL LETTER VE
-    u'\u0433'   #  0xD3 -> CYRILLIC SMALL LETTER GHE
-    u'\u0434'   #  0xD4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'   #  0xD5 -> CYRILLIC SMALL LETTER IE
-    u'\u0436'   #  0xD6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0437'   #  0xD7 -> CYRILLIC SMALL LETTER ZE
-    u'\u0438'   #  0xD8 -> CYRILLIC SMALL LETTER I
-    u'\u0439'   #  0xD9 -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'   #  0xDA -> CYRILLIC SMALL LETTER KA
-    u'\u043b'   #  0xDB -> CYRILLIC SMALL LETTER EL
-    u'\u043c'   #  0xDC -> CYRILLIC SMALL LETTER EM
-    u'\u043d'   #  0xDD -> CYRILLIC SMALL LETTER EN
-    u'\u043e'   #  0xDE -> CYRILLIC SMALL LETTER O
-    u'\u043f'   #  0xDF -> CYRILLIC SMALL LETTER PE
-    u'\u0440'   #  0xE0 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'   #  0xE1 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'   #  0xE2 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'   #  0xE3 -> CYRILLIC SMALL LETTER U
-    u'\u0444'   #  0xE4 -> CYRILLIC SMALL LETTER EF
-    u'\u0445'   #  0xE5 -> CYRILLIC SMALL LETTER HA
-    u'\u0446'   #  0xE6 -> CYRILLIC SMALL LETTER TSE
-    u'\u0447'   #  0xE7 -> CYRILLIC SMALL LETTER CHE
-    u'\u0448'   #  0xE8 -> CYRILLIC SMALL LETTER SHA
-    u'\u0449'   #  0xE9 -> CYRILLIC SMALL LETTER SHCHA
-    u'\u044a'   #  0xEA -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u044b'   #  0xEB -> CYRILLIC SMALL LETTER YERU
-    u'\u044c'   #  0xEC -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044d'   #  0xED -> CYRILLIC SMALL LETTER E
-    u'\u044e'   #  0xEE -> CYRILLIC SMALL LETTER YU
-    u'\u044f'   #  0xEF -> CYRILLIC SMALL LETTER YA
-    u'\u2116'   #  0xF0 -> NUMERO SIGN
-    u'\u0451'   #  0xF1 -> CYRILLIC SMALL LETTER IO
-    u'\u0452'   #  0xF2 -> CYRILLIC SMALL LETTER DJE
-    u'\u0453'   #  0xF3 -> CYRILLIC SMALL LETTER GJE
-    u'\u0454'   #  0xF4 -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\u0455'   #  0xF5 -> CYRILLIC SMALL LETTER DZE
-    u'\u0456'   #  0xF6 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0457'   #  0xF7 -> CYRILLIC SMALL LETTER YI
-    u'\u0458'   #  0xF8 -> CYRILLIC SMALL LETTER JE
-    u'\u0459'   #  0xF9 -> CYRILLIC SMALL LETTER LJE
-    u'\u045a'   #  0xFA -> CYRILLIC SMALL LETTER NJE
-    u'\u045b'   #  0xFB -> CYRILLIC SMALL LETTER TSHE
-    u'\u045c'   #  0xFC -> CYRILLIC SMALL LETTER KJE
-    u'\xa7'     #  0xFD -> SECTION SIGN
-    u'\u045e'   #  0xFE -> CYRILLIC SMALL LETTER SHORT U
-    u'\u045f'   #  0xFF -> CYRILLIC SMALL LETTER DZHE
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_6.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_6.py
deleted file mode 100644
index 6fc769a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_6.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_6 generated from 'MAPPINGS/ISO8859/8859-6.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-6',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\u060c'   #  0xAC -> ARABIC COMMA
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\u061b'   #  0xBB -> ARABIC SEMICOLON
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\u061f'   #  0xBF -> ARABIC QUESTION MARK
-    u'\ufffe'
-    u'\u0621'   #  0xC1 -> ARABIC LETTER HAMZA
-    u'\u0622'   #  0xC2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
-    u'\u0623'   #  0xC3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
-    u'\u0624'   #  0xC4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
-    u'\u0625'   #  0xC5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
-    u'\u0626'   #  0xC6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
-    u'\u0627'   #  0xC7 -> ARABIC LETTER ALEF
-    u'\u0628'   #  0xC8 -> ARABIC LETTER BEH
-    u'\u0629'   #  0xC9 -> ARABIC LETTER TEH MARBUTA
-    u'\u062a'   #  0xCA -> ARABIC LETTER TEH
-    u'\u062b'   #  0xCB -> ARABIC LETTER THEH
-    u'\u062c'   #  0xCC -> ARABIC LETTER JEEM
-    u'\u062d'   #  0xCD -> ARABIC LETTER HAH
-    u'\u062e'   #  0xCE -> ARABIC LETTER KHAH
-    u'\u062f'   #  0xCF -> ARABIC LETTER DAL
-    u'\u0630'   #  0xD0 -> ARABIC LETTER THAL
-    u'\u0631'   #  0xD1 -> ARABIC LETTER REH
-    u'\u0632'   #  0xD2 -> ARABIC LETTER ZAIN
-    u'\u0633'   #  0xD3 -> ARABIC LETTER SEEN
-    u'\u0634'   #  0xD4 -> ARABIC LETTER SHEEN
-    u'\u0635'   #  0xD5 -> ARABIC LETTER SAD
-    u'\u0636'   #  0xD6 -> ARABIC LETTER DAD
-    u'\u0637'   #  0xD7 -> ARABIC LETTER TAH
-    u'\u0638'   #  0xD8 -> ARABIC LETTER ZAH
-    u'\u0639'   #  0xD9 -> ARABIC LETTER AIN
-    u'\u063a'   #  0xDA -> ARABIC LETTER GHAIN
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\u0640'   #  0xE0 -> ARABIC TATWEEL
-    u'\u0641'   #  0xE1 -> ARABIC LETTER FEH
-    u'\u0642'   #  0xE2 -> ARABIC LETTER QAF
-    u'\u0643'   #  0xE3 -> ARABIC LETTER KAF
-    u'\u0644'   #  0xE4 -> ARABIC LETTER LAM
-    u'\u0645'   #  0xE5 -> ARABIC LETTER MEEM
-    u'\u0646'   #  0xE6 -> ARABIC LETTER NOON
-    u'\u0647'   #  0xE7 -> ARABIC LETTER HEH
-    u'\u0648'   #  0xE8 -> ARABIC LETTER WAW
-    u'\u0649'   #  0xE9 -> ARABIC LETTER ALEF MAKSURA
-    u'\u064a'   #  0xEA -> ARABIC LETTER YEH
-    u'\u064b'   #  0xEB -> ARABIC FATHATAN
-    u'\u064c'   #  0xEC -> ARABIC DAMMATAN
-    u'\u064d'   #  0xED -> ARABIC KASRATAN
-    u'\u064e'   #  0xEE -> ARABIC FATHA
-    u'\u064f'   #  0xEF -> ARABIC DAMMA
-    u'\u0650'   #  0xF0 -> ARABIC KASRA
-    u'\u0651'   #  0xF1 -> ARABIC SHADDA
-    u'\u0652'   #  0xF2 -> ARABIC SUKUN
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_7.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_7.py
deleted file mode 100644
index 9fc2785..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_7.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_7 generated from 'MAPPINGS/ISO8859/8859-7.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-7',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\u2018'   #  0xA1 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0xA2 -> RIGHT SINGLE QUOTATION MARK
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\u20ac'   #  0xA4 -> EURO SIGN
-    u'\u20af'   #  0xA5 -> DRACHMA SIGN
-    u'\xa6'     #  0xA6 -> BROKEN BAR
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xa8'     #  0xA8 -> DIAERESIS
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u037a'   #  0xAA -> GREEK YPOGEGRAMMENI
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\ufffe'
-    u'\u2015'   #  0xAF -> HORIZONTAL BAR
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
-    u'\u0384'   #  0xB4 -> GREEK TONOS
-    u'\u0385'   #  0xB5 -> GREEK DIALYTIKA TONOS
-    u'\u0386'   #  0xB6 -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\u0388'   #  0xB8 -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u0389'   #  0xB9 -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\u038a'   #  0xBA -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u038c'   #  0xBC -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
-    u'\u038e'   #  0xBE -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u038f'   #  0xBF -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'\u0390'   #  0xC0 -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    u'\u0391'   #  0xC1 -> GREEK CAPITAL LETTER ALPHA
-    u'\u0392'   #  0xC2 -> GREEK CAPITAL LETTER BETA
-    u'\u0393'   #  0xC3 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'   #  0xC4 -> GREEK CAPITAL LETTER DELTA
-    u'\u0395'   #  0xC5 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'   #  0xC6 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'   #  0xC7 -> GREEK CAPITAL LETTER ETA
-    u'\u0398'   #  0xC8 -> GREEK CAPITAL LETTER THETA
-    u'\u0399'   #  0xC9 -> GREEK CAPITAL LETTER IOTA
-    u'\u039a'   #  0xCA -> GREEK CAPITAL LETTER KAPPA
-    u'\u039b'   #  0xCB -> GREEK CAPITAL LETTER LAMDA
-    u'\u039c'   #  0xCC -> GREEK CAPITAL LETTER MU
-    u'\u039d'   #  0xCD -> GREEK CAPITAL LETTER NU
-    u'\u039e'   #  0xCE -> GREEK CAPITAL LETTER XI
-    u'\u039f'   #  0xCF -> GREEK CAPITAL LETTER OMICRON
-    u'\u03a0'   #  0xD0 -> GREEK CAPITAL LETTER PI
-    u'\u03a1'   #  0xD1 -> GREEK CAPITAL LETTER RHO
-    u'\ufffe'
-    u'\u03a3'   #  0xD3 -> GREEK CAPITAL LETTER SIGMA
-    u'\u03a4'   #  0xD4 -> GREEK CAPITAL LETTER TAU
-    u'\u03a5'   #  0xD5 -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a6'   #  0xD6 -> GREEK CAPITAL LETTER PHI
-    u'\u03a7'   #  0xD7 -> GREEK CAPITAL LETTER CHI
-    u'\u03a8'   #  0xD8 -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'   #  0xD9 -> GREEK CAPITAL LETTER OMEGA
-    u'\u03aa'   #  0xDA -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\u03ab'   #  0xDB -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'\u03ac'   #  0xDC -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\u03ad'   #  0xDD -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'   #  0xDE -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03af'   #  0xDF -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03b0'   #  0xE0 -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    u'\u03b1'   #  0xE1 -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'   #  0xE2 -> GREEK SMALL LETTER BETA
-    u'\u03b3'   #  0xE3 -> GREEK SMALL LETTER GAMMA
-    u'\u03b4'   #  0xE4 -> GREEK SMALL LETTER DELTA
-    u'\u03b5'   #  0xE5 -> GREEK SMALL LETTER EPSILON
-    u'\u03b6'   #  0xE6 -> GREEK SMALL LETTER ZETA
-    u'\u03b7'   #  0xE7 -> GREEK SMALL LETTER ETA
-    u'\u03b8'   #  0xE8 -> GREEK SMALL LETTER THETA
-    u'\u03b9'   #  0xE9 -> GREEK SMALL LETTER IOTA
-    u'\u03ba'   #  0xEA -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'   #  0xEB -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'   #  0xEC -> GREEK SMALL LETTER MU
-    u'\u03bd'   #  0xED -> GREEK SMALL LETTER NU
-    u'\u03be'   #  0xEE -> GREEK SMALL LETTER XI
-    u'\u03bf'   #  0xEF -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'   #  0xF0 -> GREEK SMALL LETTER PI
-    u'\u03c1'   #  0xF1 -> GREEK SMALL LETTER RHO
-    u'\u03c2'   #  0xF2 -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c3'   #  0xF3 -> GREEK SMALL LETTER SIGMA
-    u'\u03c4'   #  0xF4 -> GREEK SMALL LETTER TAU
-    u'\u03c5'   #  0xF5 -> GREEK SMALL LETTER UPSILON
-    u'\u03c6'   #  0xF6 -> GREEK SMALL LETTER PHI
-    u'\u03c7'   #  0xF7 -> GREEK SMALL LETTER CHI
-    u'\u03c8'   #  0xF8 -> GREEK SMALL LETTER PSI
-    u'\u03c9'   #  0xF9 -> GREEK SMALL LETTER OMEGA
-    u'\u03ca'   #  0xFA -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u03cb'   #  0xFB -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u03cc'   #  0xFC -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u03cd'   #  0xFD -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u03ce'   #  0xFE -> GREEK SMALL LETTER OMEGA WITH TONOS
-    u'\ufffe'
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_8.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_8.py
deleted file mode 100644
index 8810aed..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_8.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_8 generated from 'MAPPINGS/ISO8859/8859-8.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-8',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\ufffe'
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\xa5'     #  0xA5 -> YEN SIGN
-    u'\xa6'     #  0xA6 -> BROKEN BAR
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xa8'     #  0xA8 -> DIAERESIS
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\xd7'     #  0xAA -> MULTIPLICATION SIGN
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\xaf'     #  0xAF -> MACRON
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'     #  0xB4 -> ACUTE ACCENT
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\xb8'     #  0xB8 -> CEDILLA
-    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
-    u'\xf7'     #  0xBA -> DIVISION SIGN
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\u2017'   #  0xDF -> DOUBLE LOW LINE
-    u'\u05d0'   #  0xE0 -> HEBREW LETTER ALEF
-    u'\u05d1'   #  0xE1 -> HEBREW LETTER BET
-    u'\u05d2'   #  0xE2 -> HEBREW LETTER GIMEL
-    u'\u05d3'   #  0xE3 -> HEBREW LETTER DALET
-    u'\u05d4'   #  0xE4 -> HEBREW LETTER HE
-    u'\u05d5'   #  0xE5 -> HEBREW LETTER VAV
-    u'\u05d6'   #  0xE6 -> HEBREW LETTER ZAYIN
-    u'\u05d7'   #  0xE7 -> HEBREW LETTER HET
-    u'\u05d8'   #  0xE8 -> HEBREW LETTER TET
-    u'\u05d9'   #  0xE9 -> HEBREW LETTER YOD
-    u'\u05da'   #  0xEA -> HEBREW LETTER FINAL KAF
-    u'\u05db'   #  0xEB -> HEBREW LETTER KAF
-    u'\u05dc'   #  0xEC -> HEBREW LETTER LAMED
-    u'\u05dd'   #  0xED -> HEBREW LETTER FINAL MEM
-    u'\u05de'   #  0xEE -> HEBREW LETTER MEM
-    u'\u05df'   #  0xEF -> HEBREW LETTER FINAL NUN
-    u'\u05e0'   #  0xF0 -> HEBREW LETTER NUN
-    u'\u05e1'   #  0xF1 -> HEBREW LETTER SAMEKH
-    u'\u05e2'   #  0xF2 -> HEBREW LETTER AYIN
-    u'\u05e3'   #  0xF3 -> HEBREW LETTER FINAL PE
-    u'\u05e4'   #  0xF4 -> HEBREW LETTER PE
-    u'\u05e5'   #  0xF5 -> HEBREW LETTER FINAL TSADI
-    u'\u05e6'   #  0xF6 -> HEBREW LETTER TSADI
-    u'\u05e7'   #  0xF7 -> HEBREW LETTER QOF
-    u'\u05e8'   #  0xF8 -> HEBREW LETTER RESH
-    u'\u05e9'   #  0xF9 -> HEBREW LETTER SHIN
-    u'\u05ea'   #  0xFA -> HEBREW LETTER TAV
-    u'\ufffe'
-    u'\ufffe'
-    u'\u200e'   #  0xFD -> LEFT-TO-RIGHT MARK
-    u'\u200f'   #  0xFE -> RIGHT-TO-LEFT MARK
-    u'\ufffe'
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_9.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_9.py
deleted file mode 100644
index 980e994..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/iso8859_9.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec iso8859_9 generated from 'MAPPINGS/ISO8859/8859-9.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-9',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\xa0'     #  0xA0 -> NO-BREAK SPACE
-    u'\xa1'     #  0xA1 -> INVERTED EXCLAMATION MARK
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa4'     #  0xA4 -> CURRENCY SIGN
-    u'\xa5'     #  0xA5 -> YEN SIGN
-    u'\xa6'     #  0xA6 -> BROKEN BAR
-    u'\xa7'     #  0xA7 -> SECTION SIGN
-    u'\xa8'     #  0xA8 -> DIAERESIS
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\xaa'     #  0xAA -> FEMININE ORDINAL INDICATOR
-    u'\xab'     #  0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xac'     #  0xAC -> NOT SIGN
-    u'\xad'     #  0xAD -> SOFT HYPHEN
-    u'\xae'     #  0xAE -> REGISTERED SIGN
-    u'\xaf'     #  0xAF -> MACRON
-    u'\xb0'     #  0xB0 -> DEGREE SIGN
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\xb2'     #  0xB2 -> SUPERSCRIPT TWO
-    u'\xb3'     #  0xB3 -> SUPERSCRIPT THREE
-    u'\xb4'     #  0xB4 -> ACUTE ACCENT
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\xb6'     #  0xB6 -> PILCROW SIGN
-    u'\xb7'     #  0xB7 -> MIDDLE DOT
-    u'\xb8'     #  0xB8 -> CEDILLA
-    u'\xb9'     #  0xB9 -> SUPERSCRIPT ONE
-    u'\xba'     #  0xBA -> MASCULINE ORDINAL INDICATOR
-    u'\xbb'     #  0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbc'     #  0xBC -> VULGAR FRACTION ONE QUARTER
-    u'\xbd'     #  0xBD -> VULGAR FRACTION ONE HALF
-    u'\xbe'     #  0xBE -> VULGAR FRACTION THREE QUARTERS
-    u'\xbf'     #  0xBF -> INVERTED QUESTION MARK
-    u'\xc0'     #  0xC0 -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc1'     #  0xC1 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xc2'     #  0xC2 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xc3'     #  0xC3 -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xc4'     #  0xC4 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0xC5 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc6'     #  0xC6 -> LATIN CAPITAL LETTER AE
-    u'\xc7'     #  0xC7 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc8'     #  0xC8 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xc9'     #  0xC9 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xca'     #  0xCA -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xcb'     #  0xCB -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xcc'     #  0xCC -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xcd'     #  0xCD -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xCE -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xCF -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\u011e'   #  0xD0 -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\xd1'     #  0xD1 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd2'     #  0xD2 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xd3'     #  0xD3 -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xD4 -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\xd5'     #  0xD5 -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\xd6'     #  0xD6 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xd7'     #  0xD7 -> MULTIPLICATION SIGN
-    u'\xd8'     #  0xD8 -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\xd9'     #  0xD9 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\xda'     #  0xDA -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xDB -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xdc'     #  0xDC -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0130'   #  0xDD -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'\u015e'   #  0xDE -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\xdf'     #  0xDF -> LATIN SMALL LETTER SHARP S
-    u'\xe0'     #  0xE0 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe1'     #  0xE1 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe2'     #  0xE2 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe3'     #  0xE3 -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe4'     #  0xE4 -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe5'     #  0xE5 -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe6'     #  0xE6 -> LATIN SMALL LETTER AE
-    u'\xe7'     #  0xE7 -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe8'     #  0xE8 -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xe9'     #  0xE9 -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xea'     #  0xEA -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0xEB -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xec'     #  0xEC -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xed'     #  0xED -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xee'     #  0xEE -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0xEF -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u011f'   #  0xF0 -> LATIN SMALL LETTER G WITH BREVE
-    u'\xf1'     #  0xF1 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf2'     #  0xF2 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf3'     #  0xF3 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf4'     #  0xF4 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf5'     #  0xF5 -> LATIN SMALL LETTER O WITH TILDE
-    u'\xf6'     #  0xF6 -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'     #  0xF7 -> DIVISION SIGN
-    u'\xf8'     #  0xF8 -> LATIN SMALL LETTER O WITH STROKE
-    u'\xf9'     #  0xF9 -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfa'     #  0xFA -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xfb'     #  0xFB -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0xFC -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u0131'   #  0xFD -> LATIN SMALL LETTER DOTLESS I
-    u'\u015f'   #  0xFE -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\xff'     #  0xFF -> LATIN SMALL LETTER Y WITH DIAERESIS
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/johab.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/johab.py
deleted file mode 100644
index 5c767cd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/johab.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# johab.py: Python Unicode Codec for JOHAB
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_kr, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_kr.getcodec('johab')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='johab',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/koi8_r.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/koi8_r.py
deleted file mode 100644
index 492a618..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/koi8_r.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec koi8_r generated from 'MAPPINGS/VENDORS/MISC/KOI8-R.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='koi8-r',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\u2500'   #  0x80 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u2502'   #  0x81 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u250c'   #  0x82 -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2510'   #  0x83 -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x84 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2518'   #  0x85 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u251c'   #  0x86 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2524'   #  0x87 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u252c'   #  0x88 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u2534'   #  0x89 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u253c'   #  0x8A -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u2580'   #  0x8B -> UPPER HALF BLOCK
-    u'\u2584'   #  0x8C -> LOWER HALF BLOCK
-    u'\u2588'   #  0x8D -> FULL BLOCK
-    u'\u258c'   #  0x8E -> LEFT HALF BLOCK
-    u'\u2590'   #  0x8F -> RIGHT HALF BLOCK
-    u'\u2591'   #  0x90 -> LIGHT SHADE
-    u'\u2592'   #  0x91 -> MEDIUM SHADE
-    u'\u2593'   #  0x92 -> DARK SHADE
-    u'\u2320'   #  0x93 -> TOP HALF INTEGRAL
-    u'\u25a0'   #  0x94 -> BLACK SQUARE
-    u'\u2219'   #  0x95 -> BULLET OPERATOR
-    u'\u221a'   #  0x96 -> SQUARE ROOT
-    u'\u2248'   #  0x97 -> ALMOST EQUAL TO
-    u'\u2264'   #  0x98 -> LESS-THAN OR EQUAL TO
-    u'\u2265'   #  0x99 -> GREATER-THAN OR EQUAL TO
-    u'\xa0'     #  0x9A -> NO-BREAK SPACE
-    u'\u2321'   #  0x9B -> BOTTOM HALF INTEGRAL
-    u'\xb0'     #  0x9C -> DEGREE SIGN
-    u'\xb2'     #  0x9D -> SUPERSCRIPT TWO
-    u'\xb7'     #  0x9E -> MIDDLE DOT
-    u'\xf7'     #  0x9F -> DIVISION SIGN
-    u'\u2550'   #  0xA0 -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u2551'   #  0xA1 -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2552'   #  0xA2 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u0451'   #  0xA3 -> CYRILLIC SMALL LETTER IO
-    u'\u2553'   #  0xA4 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-    u'\u2554'   #  0xA5 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u2555'   #  0xA6 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-    u'\u2556'   #  0xA7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-    u'\u2557'   #  0xA8 -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u2558'   #  0xA9 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2559'   #  0xAA -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u255a'   #  0xAB -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u255b'   #  0xAC -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u255c'   #  0xAD -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-    u'\u255d'   #  0xAE -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255e'   #  0xAF -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'   #  0xB0 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u2560'   #  0xB1 -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2561'   #  0xB2 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u0401'   #  0xB3 -> CYRILLIC CAPITAL LETTER IO
-    u'\u2562'   #  0xB4 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-    u'\u2563'   #  0xB5 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u2564'   #  0xB6 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-    u'\u2565'   #  0xB7 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-    u'\u2566'   #  0xB8 -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2567'   #  0xB9 -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'   #  0xBA -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2569'   #  0xBB -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u256a'   #  0xBC -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u256b'   #  0xBD -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-    u'\u256c'   #  0xBE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa9'     #  0xBF -> COPYRIGHT SIGN
-    u'\u044e'   #  0xC0 -> CYRILLIC SMALL LETTER YU
-    u'\u0430'   #  0xC1 -> CYRILLIC SMALL LETTER A
-    u'\u0431'   #  0xC2 -> CYRILLIC SMALL LETTER BE
-    u'\u0446'   #  0xC3 -> CYRILLIC SMALL LETTER TSE
-    u'\u0434'   #  0xC4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'   #  0xC5 -> CYRILLIC SMALL LETTER IE
-    u'\u0444'   #  0xC6 -> CYRILLIC SMALL LETTER EF
-    u'\u0433'   #  0xC7 -> CYRILLIC SMALL LETTER GHE
-    u'\u0445'   #  0xC8 -> CYRILLIC SMALL LETTER HA
-    u'\u0438'   #  0xC9 -> CYRILLIC SMALL LETTER I
-    u'\u0439'   #  0xCA -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'   #  0xCB -> CYRILLIC SMALL LETTER KA
-    u'\u043b'   #  0xCC -> CYRILLIC SMALL LETTER EL
-    u'\u043c'   #  0xCD -> CYRILLIC SMALL LETTER EM
-    u'\u043d'   #  0xCE -> CYRILLIC SMALL LETTER EN
-    u'\u043e'   #  0xCF -> CYRILLIC SMALL LETTER O
-    u'\u043f'   #  0xD0 -> CYRILLIC SMALL LETTER PE
-    u'\u044f'   #  0xD1 -> CYRILLIC SMALL LETTER YA
-    u'\u0440'   #  0xD2 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'   #  0xD3 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'   #  0xD4 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'   #  0xD5 -> CYRILLIC SMALL LETTER U
-    u'\u0436'   #  0xD6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0432'   #  0xD7 -> CYRILLIC SMALL LETTER VE
-    u'\u044c'   #  0xD8 -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044b'   #  0xD9 -> CYRILLIC SMALL LETTER YERU
-    u'\u0437'   #  0xDA -> CYRILLIC SMALL LETTER ZE
-    u'\u0448'   #  0xDB -> CYRILLIC SMALL LETTER SHA
-    u'\u044d'   #  0xDC -> CYRILLIC SMALL LETTER E
-    u'\u0449'   #  0xDD -> CYRILLIC SMALL LETTER SHCHA
-    u'\u0447'   #  0xDE -> CYRILLIC SMALL LETTER CHE
-    u'\u044a'   #  0xDF -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u042e'   #  0xE0 -> CYRILLIC CAPITAL LETTER YU
-    u'\u0410'   #  0xE1 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'   #  0xE2 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0426'   #  0xE3 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0414'   #  0xE4 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'   #  0xE5 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0424'   #  0xE6 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0413'   #  0xE7 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0425'   #  0xE8 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0418'   #  0xE9 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'   #  0xEA -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'   #  0xEB -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'   #  0xEC -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'   #  0xED -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'   #  0xEE -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'   #  0xEF -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'   #  0xF0 -> CYRILLIC CAPITAL LETTER PE
-    u'\u042f'   #  0xF1 -> CYRILLIC CAPITAL LETTER YA
-    u'\u0420'   #  0xF2 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'   #  0xF3 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'   #  0xF4 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'   #  0xF5 -> CYRILLIC CAPITAL LETTER U
-    u'\u0416'   #  0xF6 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0412'   #  0xF7 -> CYRILLIC CAPITAL LETTER VE
-    u'\u042c'   #  0xF8 -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042b'   #  0xF9 -> CYRILLIC CAPITAL LETTER YERU
-    u'\u0417'   #  0xFA -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0428'   #  0xFB -> CYRILLIC CAPITAL LETTER SHA
-    u'\u042d'   #  0xFC -> CYRILLIC CAPITAL LETTER E
-    u'\u0429'   #  0xFD -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u0427'   #  0xFE -> CYRILLIC CAPITAL LETTER CHE
-    u'\u042a'   #  0xFF -> CYRILLIC CAPITAL LETTER HARD SIGN
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/koi8_u.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/koi8_u.py
deleted file mode 100644
index edb85f4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/koi8_u.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec koi8_u generated from 'python-mappings/KOI8-U.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='koi8-u',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\u2500'   #  0x80 -> BOX DRAWINGS LIGHT HORIZONTAL
-    u'\u2502'   #  0x81 -> BOX DRAWINGS LIGHT VERTICAL
-    u'\u250c'   #  0x82 -> BOX DRAWINGS LIGHT DOWN AND RIGHT
-    u'\u2510'   #  0x83 -> BOX DRAWINGS LIGHT DOWN AND LEFT
-    u'\u2514'   #  0x84 -> BOX DRAWINGS LIGHT UP AND RIGHT
-    u'\u2518'   #  0x85 -> BOX DRAWINGS LIGHT UP AND LEFT
-    u'\u251c'   #  0x86 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-    u'\u2524'   #  0x87 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
-    u'\u252c'   #  0x88 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-    u'\u2534'   #  0x89 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
-    u'\u253c'   #  0x8A -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-    u'\u2580'   #  0x8B -> UPPER HALF BLOCK
-    u'\u2584'   #  0x8C -> LOWER HALF BLOCK
-    u'\u2588'   #  0x8D -> FULL BLOCK
-    u'\u258c'   #  0x8E -> LEFT HALF BLOCK
-    u'\u2590'   #  0x8F -> RIGHT HALF BLOCK
-    u'\u2591'   #  0x90 -> LIGHT SHADE
-    u'\u2592'   #  0x91 -> MEDIUM SHADE
-    u'\u2593'   #  0x92 -> DARK SHADE
-    u'\u2320'   #  0x93 -> TOP HALF INTEGRAL
-    u'\u25a0'   #  0x94 -> BLACK SQUARE
-    u'\u2219'   #  0x95 -> BULLET OPERATOR
-    u'\u221a'   #  0x96 -> SQUARE ROOT
-    u'\u2248'   #  0x97 -> ALMOST EQUAL TO
-    u'\u2264'   #  0x98 -> LESS-THAN OR EQUAL TO
-    u'\u2265'   #  0x99 -> GREATER-THAN OR EQUAL TO
-    u'\xa0'     #  0x9A -> NO-BREAK SPACE
-    u'\u2321'   #  0x9B -> BOTTOM HALF INTEGRAL
-    u'\xb0'     #  0x9C -> DEGREE SIGN
-    u'\xb2'     #  0x9D -> SUPERSCRIPT TWO
-    u'\xb7'     #  0x9E -> MIDDLE DOT
-    u'\xf7'     #  0x9F -> DIVISION SIGN
-    u'\u2550'   #  0xA0 -> BOX DRAWINGS DOUBLE HORIZONTAL
-    u'\u2551'   #  0xA1 -> BOX DRAWINGS DOUBLE VERTICAL
-    u'\u2552'   #  0xA2 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-    u'\u0451'   #  0xA3 -> CYRILLIC SMALL LETTER IO
-    u'\u0454'   #  0xA4 -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\u2554'   #  0xA5 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
-    u'\u0456'   #  0xA6 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0457'   #  0xA7 -> CYRILLIC SMALL LETTER YI (UKRAINIAN)
-    u'\u2557'   #  0xA8 -> BOX DRAWINGS DOUBLE DOWN AND LEFT
-    u'\u2558'   #  0xA9 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-    u'\u2559'   #  0xAA -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-    u'\u255a'   #  0xAB -> BOX DRAWINGS DOUBLE UP AND RIGHT
-    u'\u255b'   #  0xAC -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-    u'\u0491'   #  0xAD -> CYRILLIC SMALL LETTER UKRAINIAN GHE WITH UPTURN
-    u'\u255d'   #  0xAE -> BOX DRAWINGS DOUBLE UP AND LEFT
-    u'\u255e'   #  0xAF -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-    u'\u255f'   #  0xB0 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-    u'\u2560'   #  0xB1 -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-    u'\u2561'   #  0xB2 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-    u'\u0401'   #  0xB3 -> CYRILLIC CAPITAL LETTER IO
-    u'\u0404'   #  0xB4 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\u2563'   #  0xB5 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-    u'\u0406'   #  0xB6 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\u0407'   #  0xB7 -> CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
-    u'\u2566'   #  0xB8 -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-    u'\u2567'   #  0xB9 -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-    u'\u2568'   #  0xBA -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-    u'\u2569'   #  0xBB -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-    u'\u256a'   #  0xBC -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-    u'\u0490'   #  0xBD -> CYRILLIC CAPITAL LETTER UKRAINIAN GHE WITH UPTURN
-    u'\u256c'   #  0xBE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-    u'\xa9'     #  0xBF -> COPYRIGHT SIGN
-    u'\u044e'   #  0xC0 -> CYRILLIC SMALL LETTER YU
-    u'\u0430'   #  0xC1 -> CYRILLIC SMALL LETTER A
-    u'\u0431'   #  0xC2 -> CYRILLIC SMALL LETTER BE
-    u'\u0446'   #  0xC3 -> CYRILLIC SMALL LETTER TSE
-    u'\u0434'   #  0xC4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'   #  0xC5 -> CYRILLIC SMALL LETTER IE
-    u'\u0444'   #  0xC6 -> CYRILLIC SMALL LETTER EF
-    u'\u0433'   #  0xC7 -> CYRILLIC SMALL LETTER GHE
-    u'\u0445'   #  0xC8 -> CYRILLIC SMALL LETTER HA
-    u'\u0438'   #  0xC9 -> CYRILLIC SMALL LETTER I
-    u'\u0439'   #  0xCA -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'   #  0xCB -> CYRILLIC SMALL LETTER KA
-    u'\u043b'   #  0xCC -> CYRILLIC SMALL LETTER EL
-    u'\u043c'   #  0xCD -> CYRILLIC SMALL LETTER EM
-    u'\u043d'   #  0xCE -> CYRILLIC SMALL LETTER EN
-    u'\u043e'   #  0xCF -> CYRILLIC SMALL LETTER O
-    u'\u043f'   #  0xD0 -> CYRILLIC SMALL LETTER PE
-    u'\u044f'   #  0xD1 -> CYRILLIC SMALL LETTER YA
-    u'\u0440'   #  0xD2 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'   #  0xD3 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'   #  0xD4 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'   #  0xD5 -> CYRILLIC SMALL LETTER U
-    u'\u0436'   #  0xD6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0432'   #  0xD7 -> CYRILLIC SMALL LETTER VE
-    u'\u044c'   #  0xD8 -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044b'   #  0xD9 -> CYRILLIC SMALL LETTER YERU
-    u'\u0437'   #  0xDA -> CYRILLIC SMALL LETTER ZE
-    u'\u0448'   #  0xDB -> CYRILLIC SMALL LETTER SHA
-    u'\u044d'   #  0xDC -> CYRILLIC SMALL LETTER E
-    u'\u0449'   #  0xDD -> CYRILLIC SMALL LETTER SHCHA
-    u'\u0447'   #  0xDE -> CYRILLIC SMALL LETTER CHE
-    u'\u044a'   #  0xDF -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u042e'   #  0xE0 -> CYRILLIC CAPITAL LETTER YU
-    u'\u0410'   #  0xE1 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'   #  0xE2 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0426'   #  0xE3 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0414'   #  0xE4 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'   #  0xE5 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0424'   #  0xE6 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0413'   #  0xE7 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0425'   #  0xE8 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0418'   #  0xE9 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'   #  0xEA -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'   #  0xEB -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'   #  0xEC -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'   #  0xED -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'   #  0xEE -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'   #  0xEF -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'   #  0xF0 -> CYRILLIC CAPITAL LETTER PE
-    u'\u042f'   #  0xF1 -> CYRILLIC CAPITAL LETTER YA
-    u'\u0420'   #  0xF2 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'   #  0xF3 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'   #  0xF4 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'   #  0xF5 -> CYRILLIC CAPITAL LETTER U
-    u'\u0416'   #  0xF6 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0412'   #  0xF7 -> CYRILLIC CAPITAL LETTER VE
-    u'\u042c'   #  0xF8 -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042b'   #  0xF9 -> CYRILLIC CAPITAL LETTER YERU
-    u'\u0417'   #  0xFA -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0428'   #  0xFB -> CYRILLIC CAPITAL LETTER SHA
-    u'\u042d'   #  0xFC -> CYRILLIC CAPITAL LETTER E
-    u'\u0429'   #  0xFD -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u0427'   #  0xFE -> CYRILLIC CAPITAL LETTER CHE
-    u'\u042a'   #  0xFF -> CYRILLIC CAPITAL LETTER HARD SIGN
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/latin_1.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/latin_1.py
deleted file mode 100644
index a6193bc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/latin_1.py
+++ /dev/null
@@ -1,50 +0,0 @@
-""" Python 'latin-1' Codec
-
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    # Note: Binding these as C functions will result in the class not
-    # converting them to methods. This is intended.
-    encode = codecs.latin_1_encode
-    decode = codecs.latin_1_decode
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.latin_1_encode(input,self.errors)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.latin_1_decode(input,self.errors)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-class StreamConverter(StreamWriter,StreamReader):
-
-    encode = codecs.latin_1_decode
-    decode = codecs.latin_1_encode
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='iso8859-1',
-        encode=Codec.encode,
-        decode=Codec.decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_arabic.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_arabic.py
deleted file mode 100644
index e5e63e3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_arabic.py
+++ /dev/null
@@ -1,698 +0,0 @@
-""" Python Character Mapping Codec generated from 'VENDORS/APPLE/ARABIC.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='mac-arabic',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-    0x0080: 0x00c4,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x0081: 0x00a0,     #  NO-BREAK SPACE, right-left
-    0x0082: 0x00c7,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x0083: 0x00c9,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x0084: 0x00d1,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x0085: 0x00d6,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x0086: 0x00dc,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x0087: 0x00e1,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x0088: 0x00e0,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x0089: 0x00e2,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x008a: 0x00e4,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x008b: 0x06ba,     #  ARABIC LETTER NOON GHUNNA
-    0x008c: 0x00ab,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    0x008d: 0x00e7,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x008e: 0x00e9,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x008f: 0x00e8,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x0090: 0x00ea,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x0091: 0x00eb,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x0092: 0x00ed,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x0093: 0x2026,     #  HORIZONTAL ELLIPSIS, right-left
-    0x0094: 0x00ee,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x0095: 0x00ef,     #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x0096: 0x00f1,     #  LATIN SMALL LETTER N WITH TILDE
-    0x0097: 0x00f3,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x0098: 0x00bb,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    0x0099: 0x00f4,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x009a: 0x00f6,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x009b: 0x00f7,     #  DIVISION SIGN, right-left
-    0x009c: 0x00fa,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x009d: 0x00f9,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x009e: 0x00fb,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x009f: 0x00fc,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x00a0: 0x0020,     #  SPACE, right-left
-    0x00a1: 0x0021,     #  EXCLAMATION MARK, right-left
-    0x00a2: 0x0022,     #  QUOTATION MARK, right-left
-    0x00a3: 0x0023,     #  NUMBER SIGN, right-left
-    0x00a4: 0x0024,     #  DOLLAR SIGN, right-left
-    0x00a5: 0x066a,     #  ARABIC PERCENT SIGN
-    0x00a6: 0x0026,     #  AMPERSAND, right-left
-    0x00a7: 0x0027,     #  APOSTROPHE, right-left
-    0x00a8: 0x0028,     #  LEFT PARENTHESIS, right-left
-    0x00a9: 0x0029,     #  RIGHT PARENTHESIS, right-left
-    0x00aa: 0x002a,     #  ASTERISK, right-left
-    0x00ab: 0x002b,     #  PLUS SIGN, right-left
-    0x00ac: 0x060c,     #  ARABIC COMMA
-    0x00ad: 0x002d,     #  HYPHEN-MINUS, right-left
-    0x00ae: 0x002e,     #  FULL STOP, right-left
-    0x00af: 0x002f,     #  SOLIDUS, right-left
-    0x00b0: 0x0660,     #  ARABIC-INDIC DIGIT ZERO, right-left (need override)
-    0x00b1: 0x0661,     #  ARABIC-INDIC DIGIT ONE, right-left (need override)
-    0x00b2: 0x0662,     #  ARABIC-INDIC DIGIT TWO, right-left (need override)
-    0x00b3: 0x0663,     #  ARABIC-INDIC DIGIT THREE, right-left (need override)
-    0x00b4: 0x0664,     #  ARABIC-INDIC DIGIT FOUR, right-left (need override)
-    0x00b5: 0x0665,     #  ARABIC-INDIC DIGIT FIVE, right-left (need override)
-    0x00b6: 0x0666,     #  ARABIC-INDIC DIGIT SIX, right-left (need override)
-    0x00b7: 0x0667,     #  ARABIC-INDIC DIGIT SEVEN, right-left (need override)
-    0x00b8: 0x0668,     #  ARABIC-INDIC DIGIT EIGHT, right-left (need override)
-    0x00b9: 0x0669,     #  ARABIC-INDIC DIGIT NINE, right-left (need override)
-    0x00ba: 0x003a,     #  COLON, right-left
-    0x00bb: 0x061b,     #  ARABIC SEMICOLON
-    0x00bc: 0x003c,     #  LESS-THAN SIGN, right-left
-    0x00bd: 0x003d,     #  EQUALS SIGN, right-left
-    0x00be: 0x003e,     #  GREATER-THAN SIGN, right-left
-    0x00bf: 0x061f,     #  ARABIC QUESTION MARK
-    0x00c0: 0x274a,     #  EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
-    0x00c1: 0x0621,     #  ARABIC LETTER HAMZA
-    0x00c2: 0x0622,     #  ARABIC LETTER ALEF WITH MADDA ABOVE
-    0x00c3: 0x0623,     #  ARABIC LETTER ALEF WITH HAMZA ABOVE
-    0x00c4: 0x0624,     #  ARABIC LETTER WAW WITH HAMZA ABOVE
-    0x00c5: 0x0625,     #  ARABIC LETTER ALEF WITH HAMZA BELOW
-    0x00c6: 0x0626,     #  ARABIC LETTER YEH WITH HAMZA ABOVE
-    0x00c7: 0x0627,     #  ARABIC LETTER ALEF
-    0x00c8: 0x0628,     #  ARABIC LETTER BEH
-    0x00c9: 0x0629,     #  ARABIC LETTER TEH MARBUTA
-    0x00ca: 0x062a,     #  ARABIC LETTER TEH
-    0x00cb: 0x062b,     #  ARABIC LETTER THEH
-    0x00cc: 0x062c,     #  ARABIC LETTER JEEM
-    0x00cd: 0x062d,     #  ARABIC LETTER HAH
-    0x00ce: 0x062e,     #  ARABIC LETTER KHAH
-    0x00cf: 0x062f,     #  ARABIC LETTER DAL
-    0x00d0: 0x0630,     #  ARABIC LETTER THAL
-    0x00d1: 0x0631,     #  ARABIC LETTER REH
-    0x00d2: 0x0632,     #  ARABIC LETTER ZAIN
-    0x00d3: 0x0633,     #  ARABIC LETTER SEEN
-    0x00d4: 0x0634,     #  ARABIC LETTER SHEEN
-    0x00d5: 0x0635,     #  ARABIC LETTER SAD
-    0x00d6: 0x0636,     #  ARABIC LETTER DAD
-    0x00d7: 0x0637,     #  ARABIC LETTER TAH
-    0x00d8: 0x0638,     #  ARABIC LETTER ZAH
-    0x00d9: 0x0639,     #  ARABIC LETTER AIN
-    0x00da: 0x063a,     #  ARABIC LETTER GHAIN
-    0x00db: 0x005b,     #  LEFT SQUARE BRACKET, right-left
-    0x00dc: 0x005c,     #  REVERSE SOLIDUS, right-left
-    0x00dd: 0x005d,     #  RIGHT SQUARE BRACKET, right-left
-    0x00de: 0x005e,     #  CIRCUMFLEX ACCENT, right-left
-    0x00df: 0x005f,     #  LOW LINE, right-left
-    0x00e0: 0x0640,     #  ARABIC TATWEEL
-    0x00e1: 0x0641,     #  ARABIC LETTER FEH
-    0x00e2: 0x0642,     #  ARABIC LETTER QAF
-    0x00e3: 0x0643,     #  ARABIC LETTER KAF
-    0x00e4: 0x0644,     #  ARABIC LETTER LAM
-    0x00e5: 0x0645,     #  ARABIC LETTER MEEM
-    0x00e6: 0x0646,     #  ARABIC LETTER NOON
-    0x00e7: 0x0647,     #  ARABIC LETTER HEH
-    0x00e8: 0x0648,     #  ARABIC LETTER WAW
-    0x00e9: 0x0649,     #  ARABIC LETTER ALEF MAKSURA
-    0x00ea: 0x064a,     #  ARABIC LETTER YEH
-    0x00eb: 0x064b,     #  ARABIC FATHATAN
-    0x00ec: 0x064c,     #  ARABIC DAMMATAN
-    0x00ed: 0x064d,     #  ARABIC KASRATAN
-    0x00ee: 0x064e,     #  ARABIC FATHA
-    0x00ef: 0x064f,     #  ARABIC DAMMA
-    0x00f0: 0x0650,     #  ARABIC KASRA
-    0x00f1: 0x0651,     #  ARABIC SHADDA
-    0x00f2: 0x0652,     #  ARABIC SUKUN
-    0x00f3: 0x067e,     #  ARABIC LETTER PEH
-    0x00f4: 0x0679,     #  ARABIC LETTER TTEH
-    0x00f5: 0x0686,     #  ARABIC LETTER TCHEH
-    0x00f6: 0x06d5,     #  ARABIC LETTER AE
-    0x00f7: 0x06a4,     #  ARABIC LETTER VEH
-    0x00f8: 0x06af,     #  ARABIC LETTER GAF
-    0x00f9: 0x0688,     #  ARABIC LETTER DDAL
-    0x00fa: 0x0691,     #  ARABIC LETTER RREH
-    0x00fb: 0x007b,     #  LEFT CURLY BRACKET, right-left
-    0x00fc: 0x007c,     #  VERTICAL LINE, right-left
-    0x00fd: 0x007d,     #  RIGHT CURLY BRACKET, right-left
-    0x00fe: 0x0698,     #  ARABIC LETTER JEH
-    0x00ff: 0x06d2,     #  ARABIC LETTER YEH BARREE
-})
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x0000 -> CONTROL CHARACTER
-    u'\x01'     #  0x0001 -> CONTROL CHARACTER
-    u'\x02'     #  0x0002 -> CONTROL CHARACTER
-    u'\x03'     #  0x0003 -> CONTROL CHARACTER
-    u'\x04'     #  0x0004 -> CONTROL CHARACTER
-    u'\x05'     #  0x0005 -> CONTROL CHARACTER
-    u'\x06'     #  0x0006 -> CONTROL CHARACTER
-    u'\x07'     #  0x0007 -> CONTROL CHARACTER
-    u'\x08'     #  0x0008 -> CONTROL CHARACTER
-    u'\t'       #  0x0009 -> CONTROL CHARACTER
-    u'\n'       #  0x000a -> CONTROL CHARACTER
-    u'\x0b'     #  0x000b -> CONTROL CHARACTER
-    u'\x0c'     #  0x000c -> CONTROL CHARACTER
-    u'\r'       #  0x000d -> CONTROL CHARACTER
-    u'\x0e'     #  0x000e -> CONTROL CHARACTER
-    u'\x0f'     #  0x000f -> CONTROL CHARACTER
-    u'\x10'     #  0x0010 -> CONTROL CHARACTER
-    u'\x11'     #  0x0011 -> CONTROL CHARACTER
-    u'\x12'     #  0x0012 -> CONTROL CHARACTER
-    u'\x13'     #  0x0013 -> CONTROL CHARACTER
-    u'\x14'     #  0x0014 -> CONTROL CHARACTER
-    u'\x15'     #  0x0015 -> CONTROL CHARACTER
-    u'\x16'     #  0x0016 -> CONTROL CHARACTER
-    u'\x17'     #  0x0017 -> CONTROL CHARACTER
-    u'\x18'     #  0x0018 -> CONTROL CHARACTER
-    u'\x19'     #  0x0019 -> CONTROL CHARACTER
-    u'\x1a'     #  0x001a -> CONTROL CHARACTER
-    u'\x1b'     #  0x001b -> CONTROL CHARACTER
-    u'\x1c'     #  0x001c -> CONTROL CHARACTER
-    u'\x1d'     #  0x001d -> CONTROL CHARACTER
-    u'\x1e'     #  0x001e -> CONTROL CHARACTER
-    u'\x1f'     #  0x001f -> CONTROL CHARACTER
-    u' '        #  0x0020 -> SPACE, left-right
-    u'!'        #  0x0021 -> EXCLAMATION MARK, left-right
-    u'"'        #  0x0022 -> QUOTATION MARK, left-right
-    u'#'        #  0x0023 -> NUMBER SIGN, left-right
-    u'$'        #  0x0024 -> DOLLAR SIGN, left-right
-    u'%'        #  0x0025 -> PERCENT SIGN, left-right
-    u'&'        #  0x0026 -> AMPERSAND, left-right
-    u"'"        #  0x0027 -> APOSTROPHE, left-right
-    u'('        #  0x0028 -> LEFT PARENTHESIS, left-right
-    u')'        #  0x0029 -> RIGHT PARENTHESIS, left-right
-    u'*'        #  0x002a -> ASTERISK, left-right
-    u'+'        #  0x002b -> PLUS SIGN, left-right
-    u','        #  0x002c -> COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
-    u'-'        #  0x002d -> HYPHEN-MINUS, left-right
-    u'.'        #  0x002e -> FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
-    u'/'        #  0x002f -> SOLIDUS, left-right
-    u'0'        #  0x0030 -> DIGIT ZERO;  in Arabic-script context, displayed as 0x0660 ARABIC-INDIC DIGIT ZERO
-    u'1'        #  0x0031 -> DIGIT ONE;   in Arabic-script context, displayed as 0x0661 ARABIC-INDIC DIGIT ONE
-    u'2'        #  0x0032 -> DIGIT TWO;   in Arabic-script context, displayed as 0x0662 ARABIC-INDIC DIGIT TWO
-    u'3'        #  0x0033 -> DIGIT THREE; in Arabic-script context, displayed as 0x0663 ARABIC-INDIC DIGIT THREE
-    u'4'        #  0x0034 -> DIGIT FOUR;  in Arabic-script context, displayed as 0x0664 ARABIC-INDIC DIGIT FOUR
-    u'5'        #  0x0035 -> DIGIT FIVE;  in Arabic-script context, displayed as 0x0665 ARABIC-INDIC DIGIT FIVE
-    u'6'        #  0x0036 -> DIGIT SIX;   in Arabic-script context, displayed as 0x0666 ARABIC-INDIC DIGIT SIX
-    u'7'        #  0x0037 -> DIGIT SEVEN; in Arabic-script context, displayed as 0x0667 ARABIC-INDIC DIGIT SEVEN
-    u'8'        #  0x0038 -> DIGIT EIGHT; in Arabic-script context, displayed as 0x0668 ARABIC-INDIC DIGIT EIGHT
-    u'9'        #  0x0039 -> DIGIT NINE;  in Arabic-script context, displayed as 0x0669 ARABIC-INDIC DIGIT NINE
-    u':'        #  0x003a -> COLON, left-right
-    u';'        #  0x003b -> SEMICOLON, left-right
-    u'<'        #  0x003c -> LESS-THAN SIGN, left-right
-    u'='        #  0x003d -> EQUALS SIGN, left-right
-    u'>'        #  0x003e -> GREATER-THAN SIGN, left-right
-    u'?'        #  0x003f -> QUESTION MARK, left-right
-    u'@'        #  0x0040 -> COMMERCIAL AT
-    u'A'        #  0x0041 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x0042 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x0043 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x0044 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x0045 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x0046 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x0047 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x0048 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x0049 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x004a -> LATIN CAPITAL LETTER J
-    u'K'        #  0x004b -> LATIN CAPITAL LETTER K
-    u'L'        #  0x004c -> LATIN CAPITAL LETTER L
-    u'M'        #  0x004d -> LATIN CAPITAL LETTER M
-    u'N'        #  0x004e -> LATIN CAPITAL LETTER N
-    u'O'        #  0x004f -> LATIN CAPITAL LETTER O
-    u'P'        #  0x0050 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x0051 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x0052 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x0053 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x0054 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x0055 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x0056 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x0057 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x0058 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x0059 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x005a -> LATIN CAPITAL LETTER Z
-    u'['        #  0x005b -> LEFT SQUARE BRACKET, left-right
-    u'\\'       #  0x005c -> REVERSE SOLIDUS, left-right
-    u']'        #  0x005d -> RIGHT SQUARE BRACKET, left-right
-    u'^'        #  0x005e -> CIRCUMFLEX ACCENT, left-right
-    u'_'        #  0x005f -> LOW LINE, left-right
-    u'`'        #  0x0060 -> GRAVE ACCENT
-    u'a'        #  0x0061 -> LATIN SMALL LETTER A
-    u'b'        #  0x0062 -> LATIN SMALL LETTER B
-    u'c'        #  0x0063 -> LATIN SMALL LETTER C
-    u'd'        #  0x0064 -> LATIN SMALL LETTER D
-    u'e'        #  0x0065 -> LATIN SMALL LETTER E
-    u'f'        #  0x0066 -> LATIN SMALL LETTER F
-    u'g'        #  0x0067 -> LATIN SMALL LETTER G
-    u'h'        #  0x0068 -> LATIN SMALL LETTER H
-    u'i'        #  0x0069 -> LATIN SMALL LETTER I
-    u'j'        #  0x006a -> LATIN SMALL LETTER J
-    u'k'        #  0x006b -> LATIN SMALL LETTER K
-    u'l'        #  0x006c -> LATIN SMALL LETTER L
-    u'm'        #  0x006d -> LATIN SMALL LETTER M
-    u'n'        #  0x006e -> LATIN SMALL LETTER N
-    u'o'        #  0x006f -> LATIN SMALL LETTER O
-    u'p'        #  0x0070 -> LATIN SMALL LETTER P
-    u'q'        #  0x0071 -> LATIN SMALL LETTER Q
-    u'r'        #  0x0072 -> LATIN SMALL LETTER R
-    u's'        #  0x0073 -> LATIN SMALL LETTER S
-    u't'        #  0x0074 -> LATIN SMALL LETTER T
-    u'u'        #  0x0075 -> LATIN SMALL LETTER U
-    u'v'        #  0x0076 -> LATIN SMALL LETTER V
-    u'w'        #  0x0077 -> LATIN SMALL LETTER W
-    u'x'        #  0x0078 -> LATIN SMALL LETTER X
-    u'y'        #  0x0079 -> LATIN SMALL LETTER Y
-    u'z'        #  0x007a -> LATIN SMALL LETTER Z
-    u'{'        #  0x007b -> LEFT CURLY BRACKET, left-right
-    u'|'        #  0x007c -> VERTICAL LINE, left-right
-    u'}'        #  0x007d -> RIGHT CURLY BRACKET, left-right
-    u'~'        #  0x007e -> TILDE
-    u'\x7f'     #  0x007f -> CONTROL CHARACTER
-    u'\xc4'     #  0x0080 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xa0'     #  0x0081 -> NO-BREAK SPACE, right-left
-    u'\xc7'     #  0x0082 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc9'     #  0x0083 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xd1'     #  0x0084 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd6'     #  0x0085 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x0086 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'     #  0x0087 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe0'     #  0x0088 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'     #  0x0089 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x008a -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u06ba'   #  0x008b -> ARABIC LETTER NOON GHUNNA
-    u'\xab'     #  0x008c -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    u'\xe7'     #  0x008d -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'     #  0x008e -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'     #  0x008f -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'     #  0x0090 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x0091 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xed'     #  0x0092 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\u2026'   #  0x0093 -> HORIZONTAL ELLIPSIS, right-left
-    u'\xee'     #  0x0094 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0x0095 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf1'     #  0x0096 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf3'     #  0x0097 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xbb'     #  0x0098 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    u'\xf4'     #  0x0099 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x009a -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'     #  0x009b -> DIVISION SIGN, right-left
-    u'\xfa'     #  0x009c -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'     #  0x009d -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'     #  0x009e -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0x009f -> LATIN SMALL LETTER U WITH DIAERESIS
-    u' '        #  0x00a0 -> SPACE, right-left
-    u'!'        #  0x00a1 -> EXCLAMATION MARK, right-left
-    u'"'        #  0x00a2 -> QUOTATION MARK, right-left
-    u'#'        #  0x00a3 -> NUMBER SIGN, right-left
-    u'$'        #  0x00a4 -> DOLLAR SIGN, right-left
-    u'\u066a'   #  0x00a5 -> ARABIC PERCENT SIGN
-    u'&'        #  0x00a6 -> AMPERSAND, right-left
-    u"'"        #  0x00a7 -> APOSTROPHE, right-left
-    u'('        #  0x00a8 -> LEFT PARENTHESIS, right-left
-    u')'        #  0x00a9 -> RIGHT PARENTHESIS, right-left
-    u'*'        #  0x00aa -> ASTERISK, right-left
-    u'+'        #  0x00ab -> PLUS SIGN, right-left
-    u'\u060c'   #  0x00ac -> ARABIC COMMA
-    u'-'        #  0x00ad -> HYPHEN-MINUS, right-left
-    u'.'        #  0x00ae -> FULL STOP, right-left
-    u'/'        #  0x00af -> SOLIDUS, right-left
-    u'\u0660'   #  0x00b0 -> ARABIC-INDIC DIGIT ZERO, right-left (need override)
-    u'\u0661'   #  0x00b1 -> ARABIC-INDIC DIGIT ONE, right-left (need override)
-    u'\u0662'   #  0x00b2 -> ARABIC-INDIC DIGIT TWO, right-left (need override)
-    u'\u0663'   #  0x00b3 -> ARABIC-INDIC DIGIT THREE, right-left (need override)
-    u'\u0664'   #  0x00b4 -> ARABIC-INDIC DIGIT FOUR, right-left (need override)
-    u'\u0665'   #  0x00b5 -> ARABIC-INDIC DIGIT FIVE, right-left (need override)
-    u'\u0666'   #  0x00b6 -> ARABIC-INDIC DIGIT SIX, right-left (need override)
-    u'\u0667'   #  0x00b7 -> ARABIC-INDIC DIGIT SEVEN, right-left (need override)
-    u'\u0668'   #  0x00b8 -> ARABIC-INDIC DIGIT EIGHT, right-left (need override)
-    u'\u0669'   #  0x00b9 -> ARABIC-INDIC DIGIT NINE, right-left (need override)
-    u':'        #  0x00ba -> COLON, right-left
-    u'\u061b'   #  0x00bb -> ARABIC SEMICOLON
-    u'<'        #  0x00bc -> LESS-THAN SIGN, right-left
-    u'='        #  0x00bd -> EQUALS SIGN, right-left
-    u'>'        #  0x00be -> GREATER-THAN SIGN, right-left
-    u'\u061f'   #  0x00bf -> ARABIC QUESTION MARK
-    u'\u274a'   #  0x00c0 -> EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
-    u'\u0621'   #  0x00c1 -> ARABIC LETTER HAMZA
-    u'\u0622'   #  0x00c2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
-    u'\u0623'   #  0x00c3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
-    u'\u0624'   #  0x00c4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
-    u'\u0625'   #  0x00c5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
-    u'\u0626'   #  0x00c6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
-    u'\u0627'   #  0x00c7 -> ARABIC LETTER ALEF
-    u'\u0628'   #  0x00c8 -> ARABIC LETTER BEH
-    u'\u0629'   #  0x00c9 -> ARABIC LETTER TEH MARBUTA
-    u'\u062a'   #  0x00ca -> ARABIC LETTER TEH
-    u'\u062b'   #  0x00cb -> ARABIC LETTER THEH
-    u'\u062c'   #  0x00cc -> ARABIC LETTER JEEM
-    u'\u062d'   #  0x00cd -> ARABIC LETTER HAH
-    u'\u062e'   #  0x00ce -> ARABIC LETTER KHAH
-    u'\u062f'   #  0x00cf -> ARABIC LETTER DAL
-    u'\u0630'   #  0x00d0 -> ARABIC LETTER THAL
-    u'\u0631'   #  0x00d1 -> ARABIC LETTER REH
-    u'\u0632'   #  0x00d2 -> ARABIC LETTER ZAIN
-    u'\u0633'   #  0x00d3 -> ARABIC LETTER SEEN
-    u'\u0634'   #  0x00d4 -> ARABIC LETTER SHEEN
-    u'\u0635'   #  0x00d5 -> ARABIC LETTER SAD
-    u'\u0636'   #  0x00d6 -> ARABIC LETTER DAD
-    u'\u0637'   #  0x00d7 -> ARABIC LETTER TAH
-    u'\u0638'   #  0x00d8 -> ARABIC LETTER ZAH
-    u'\u0639'   #  0x00d9 -> ARABIC LETTER AIN
-    u'\u063a'   #  0x00da -> ARABIC LETTER GHAIN
-    u'['        #  0x00db -> LEFT SQUARE BRACKET, right-left
-    u'\\'       #  0x00dc -> REVERSE SOLIDUS, right-left
-    u']'        #  0x00dd -> RIGHT SQUARE BRACKET, right-left
-    u'^'        #  0x00de -> CIRCUMFLEX ACCENT, right-left
-    u'_'        #  0x00df -> LOW LINE, right-left
-    u'\u0640'   #  0x00e0 -> ARABIC TATWEEL
-    u'\u0641'   #  0x00e1 -> ARABIC LETTER FEH
-    u'\u0642'   #  0x00e2 -> ARABIC LETTER QAF
-    u'\u0643'   #  0x00e3 -> ARABIC LETTER KAF
-    u'\u0644'   #  0x00e4 -> ARABIC LETTER LAM
-    u'\u0645'   #  0x00e5 -> ARABIC LETTER MEEM
-    u'\u0646'   #  0x00e6 -> ARABIC LETTER NOON
-    u'\u0647'   #  0x00e7 -> ARABIC LETTER HEH
-    u'\u0648'   #  0x00e8 -> ARABIC LETTER WAW
-    u'\u0649'   #  0x00e9 -> ARABIC LETTER ALEF MAKSURA
-    u'\u064a'   #  0x00ea -> ARABIC LETTER YEH
-    u'\u064b'   #  0x00eb -> ARABIC FATHATAN
-    u'\u064c'   #  0x00ec -> ARABIC DAMMATAN
-    u'\u064d'   #  0x00ed -> ARABIC KASRATAN
-    u'\u064e'   #  0x00ee -> ARABIC FATHA
-    u'\u064f'   #  0x00ef -> ARABIC DAMMA
-    u'\u0650'   #  0x00f0 -> ARABIC KASRA
-    u'\u0651'   #  0x00f1 -> ARABIC SHADDA
-    u'\u0652'   #  0x00f2 -> ARABIC SUKUN
-    u'\u067e'   #  0x00f3 -> ARABIC LETTER PEH
-    u'\u0679'   #  0x00f4 -> ARABIC LETTER TTEH
-    u'\u0686'   #  0x00f5 -> ARABIC LETTER TCHEH
-    u'\u06d5'   #  0x00f6 -> ARABIC LETTER AE
-    u'\u06a4'   #  0x00f7 -> ARABIC LETTER VEH
-    u'\u06af'   #  0x00f8 -> ARABIC LETTER GAF
-    u'\u0688'   #  0x00f9 -> ARABIC LETTER DDAL
-    u'\u0691'   #  0x00fa -> ARABIC LETTER RREH
-    u'{'        #  0x00fb -> LEFT CURLY BRACKET, right-left
-    u'|'        #  0x00fc -> VERTICAL LINE, right-left
-    u'}'        #  0x00fd -> RIGHT CURLY BRACKET, right-left
-    u'\u0698'   #  0x00fe -> ARABIC LETTER JEH
-    u'\u06d2'   #  0x00ff -> ARABIC LETTER YEH BARREE
-)
-
-### Encoding Map
-
-encoding_map = {
-    0x0000: 0x0000,     #  CONTROL CHARACTER
-    0x0001: 0x0001,     #  CONTROL CHARACTER
-    0x0002: 0x0002,     #  CONTROL CHARACTER
-    0x0003: 0x0003,     #  CONTROL CHARACTER
-    0x0004: 0x0004,     #  CONTROL CHARACTER
-    0x0005: 0x0005,     #  CONTROL CHARACTER
-    0x0006: 0x0006,     #  CONTROL CHARACTER
-    0x0007: 0x0007,     #  CONTROL CHARACTER
-    0x0008: 0x0008,     #  CONTROL CHARACTER
-    0x0009: 0x0009,     #  CONTROL CHARACTER
-    0x000a: 0x000a,     #  CONTROL CHARACTER
-    0x000b: 0x000b,     #  CONTROL CHARACTER
-    0x000c: 0x000c,     #  CONTROL CHARACTER
-    0x000d: 0x000d,     #  CONTROL CHARACTER
-    0x000e: 0x000e,     #  CONTROL CHARACTER
-    0x000f: 0x000f,     #  CONTROL CHARACTER
-    0x0010: 0x0010,     #  CONTROL CHARACTER
-    0x0011: 0x0011,     #  CONTROL CHARACTER
-    0x0012: 0x0012,     #  CONTROL CHARACTER
-    0x0013: 0x0013,     #  CONTROL CHARACTER
-    0x0014: 0x0014,     #  CONTROL CHARACTER
-    0x0015: 0x0015,     #  CONTROL CHARACTER
-    0x0016: 0x0016,     #  CONTROL CHARACTER
-    0x0017: 0x0017,     #  CONTROL CHARACTER
-    0x0018: 0x0018,     #  CONTROL CHARACTER
-    0x0019: 0x0019,     #  CONTROL CHARACTER
-    0x001a: 0x001a,     #  CONTROL CHARACTER
-    0x001b: 0x001b,     #  CONTROL CHARACTER
-    0x001c: 0x001c,     #  CONTROL CHARACTER
-    0x001d: 0x001d,     #  CONTROL CHARACTER
-    0x001e: 0x001e,     #  CONTROL CHARACTER
-    0x001f: 0x001f,     #  CONTROL CHARACTER
-    0x0020: 0x0020,     #  SPACE, left-right
-    0x0020: 0x00a0,     #  SPACE, right-left
-    0x0021: 0x0021,     #  EXCLAMATION MARK, left-right
-    0x0021: 0x00a1,     #  EXCLAMATION MARK, right-left
-    0x0022: 0x0022,     #  QUOTATION MARK, left-right
-    0x0022: 0x00a2,     #  QUOTATION MARK, right-left
-    0x0023: 0x0023,     #  NUMBER SIGN, left-right
-    0x0023: 0x00a3,     #  NUMBER SIGN, right-left
-    0x0024: 0x0024,     #  DOLLAR SIGN, left-right
-    0x0024: 0x00a4,     #  DOLLAR SIGN, right-left
-    0x0025: 0x0025,     #  PERCENT SIGN, left-right
-    0x0026: 0x0026,     #  AMPERSAND, left-right
-    0x0026: 0x00a6,     #  AMPERSAND, right-left
-    0x0027: 0x0027,     #  APOSTROPHE, left-right
-    0x0027: 0x00a7,     #  APOSTROPHE, right-left
-    0x0028: 0x0028,     #  LEFT PARENTHESIS, left-right
-    0x0028: 0x00a8,     #  LEFT PARENTHESIS, right-left
-    0x0029: 0x0029,     #  RIGHT PARENTHESIS, left-right
-    0x0029: 0x00a9,     #  RIGHT PARENTHESIS, right-left
-    0x002a: 0x002a,     #  ASTERISK, left-right
-    0x002a: 0x00aa,     #  ASTERISK, right-left
-    0x002b: 0x002b,     #  PLUS SIGN, left-right
-    0x002b: 0x00ab,     #  PLUS SIGN, right-left
-    0x002c: 0x002c,     #  COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
-    0x002d: 0x002d,     #  HYPHEN-MINUS, left-right
-    0x002d: 0x00ad,     #  HYPHEN-MINUS, right-left
-    0x002e: 0x002e,     #  FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
-    0x002e: 0x00ae,     #  FULL STOP, right-left
-    0x002f: 0x002f,     #  SOLIDUS, left-right
-    0x002f: 0x00af,     #  SOLIDUS, right-left
-    0x0030: 0x0030,     #  DIGIT ZERO;  in Arabic-script context, displayed as 0x0660 ARABIC-INDIC DIGIT ZERO
-    0x0031: 0x0031,     #  DIGIT ONE;   in Arabic-script context, displayed as 0x0661 ARABIC-INDIC DIGIT ONE
-    0x0032: 0x0032,     #  DIGIT TWO;   in Arabic-script context, displayed as 0x0662 ARABIC-INDIC DIGIT TWO
-    0x0033: 0x0033,     #  DIGIT THREE; in Arabic-script context, displayed as 0x0663 ARABIC-INDIC DIGIT THREE
-    0x0034: 0x0034,     #  DIGIT FOUR;  in Arabic-script context, displayed as 0x0664 ARABIC-INDIC DIGIT FOUR
-    0x0035: 0x0035,     #  DIGIT FIVE;  in Arabic-script context, displayed as 0x0665 ARABIC-INDIC DIGIT FIVE
-    0x0036: 0x0036,     #  DIGIT SIX;   in Arabic-script context, displayed as 0x0666 ARABIC-INDIC DIGIT SIX
-    0x0037: 0x0037,     #  DIGIT SEVEN; in Arabic-script context, displayed as 0x0667 ARABIC-INDIC DIGIT SEVEN
-    0x0038: 0x0038,     #  DIGIT EIGHT; in Arabic-script context, displayed as 0x0668 ARABIC-INDIC DIGIT EIGHT
-    0x0039: 0x0039,     #  DIGIT NINE;  in Arabic-script context, displayed as 0x0669 ARABIC-INDIC DIGIT NINE
-    0x003a: 0x003a,     #  COLON, left-right
-    0x003a: 0x00ba,     #  COLON, right-left
-    0x003b: 0x003b,     #  SEMICOLON, left-right
-    0x003c: 0x003c,     #  LESS-THAN SIGN, left-right
-    0x003c: 0x00bc,     #  LESS-THAN SIGN, right-left
-    0x003d: 0x003d,     #  EQUALS SIGN, left-right
-    0x003d: 0x00bd,     #  EQUALS SIGN, right-left
-    0x003e: 0x003e,     #  GREATER-THAN SIGN, left-right
-    0x003e: 0x00be,     #  GREATER-THAN SIGN, right-left
-    0x003f: 0x003f,     #  QUESTION MARK, left-right
-    0x0040: 0x0040,     #  COMMERCIAL AT
-    0x0041: 0x0041,     #  LATIN CAPITAL LETTER A
-    0x0042: 0x0042,     #  LATIN CAPITAL LETTER B
-    0x0043: 0x0043,     #  LATIN CAPITAL LETTER C
-    0x0044: 0x0044,     #  LATIN CAPITAL LETTER D
-    0x0045: 0x0045,     #  LATIN CAPITAL LETTER E
-    0x0046: 0x0046,     #  LATIN CAPITAL LETTER F
-    0x0047: 0x0047,     #  LATIN CAPITAL LETTER G
-    0x0048: 0x0048,     #  LATIN CAPITAL LETTER H
-    0x0049: 0x0049,     #  LATIN CAPITAL LETTER I
-    0x004a: 0x004a,     #  LATIN CAPITAL LETTER J
-    0x004b: 0x004b,     #  LATIN CAPITAL LETTER K
-    0x004c: 0x004c,     #  LATIN CAPITAL LETTER L
-    0x004d: 0x004d,     #  LATIN CAPITAL LETTER M
-    0x004e: 0x004e,     #  LATIN CAPITAL LETTER N
-    0x004f: 0x004f,     #  LATIN CAPITAL LETTER O
-    0x0050: 0x0050,     #  LATIN CAPITAL LETTER P
-    0x0051: 0x0051,     #  LATIN CAPITAL LETTER Q
-    0x0052: 0x0052,     #  LATIN CAPITAL LETTER R
-    0x0053: 0x0053,     #  LATIN CAPITAL LETTER S
-    0x0054: 0x0054,     #  LATIN CAPITAL LETTER T
-    0x0055: 0x0055,     #  LATIN CAPITAL LETTER U
-    0x0056: 0x0056,     #  LATIN CAPITAL LETTER V
-    0x0057: 0x0057,     #  LATIN CAPITAL LETTER W
-    0x0058: 0x0058,     #  LATIN CAPITAL LETTER X
-    0x0059: 0x0059,     #  LATIN CAPITAL LETTER Y
-    0x005a: 0x005a,     #  LATIN CAPITAL LETTER Z
-    0x005b: 0x005b,     #  LEFT SQUARE BRACKET, left-right
-    0x005b: 0x00db,     #  LEFT SQUARE BRACKET, right-left
-    0x005c: 0x005c,     #  REVERSE SOLIDUS, left-right
-    0x005c: 0x00dc,     #  REVERSE SOLIDUS, right-left
-    0x005d: 0x005d,     #  RIGHT SQUARE BRACKET, left-right
-    0x005d: 0x00dd,     #  RIGHT SQUARE BRACKET, right-left
-    0x005e: 0x005e,     #  CIRCUMFLEX ACCENT, left-right
-    0x005e: 0x00de,     #  CIRCUMFLEX ACCENT, right-left
-    0x005f: 0x005f,     #  LOW LINE, left-right
-    0x005f: 0x00df,     #  LOW LINE, right-left
-    0x0060: 0x0060,     #  GRAVE ACCENT
-    0x0061: 0x0061,     #  LATIN SMALL LETTER A
-    0x0062: 0x0062,     #  LATIN SMALL LETTER B
-    0x0063: 0x0063,     #  LATIN SMALL LETTER C
-    0x0064: 0x0064,     #  LATIN SMALL LETTER D
-    0x0065: 0x0065,     #  LATIN SMALL LETTER E
-    0x0066: 0x0066,     #  LATIN SMALL LETTER F
-    0x0067: 0x0067,     #  LATIN SMALL LETTER G
-    0x0068: 0x0068,     #  LATIN SMALL LETTER H
-    0x0069: 0x0069,     #  LATIN SMALL LETTER I
-    0x006a: 0x006a,     #  LATIN SMALL LETTER J
-    0x006b: 0x006b,     #  LATIN SMALL LETTER K
-    0x006c: 0x006c,     #  LATIN SMALL LETTER L
-    0x006d: 0x006d,     #  LATIN SMALL LETTER M
-    0x006e: 0x006e,     #  LATIN SMALL LETTER N
-    0x006f: 0x006f,     #  LATIN SMALL LETTER O
-    0x0070: 0x0070,     #  LATIN SMALL LETTER P
-    0x0071: 0x0071,     #  LATIN SMALL LETTER Q
-    0x0072: 0x0072,     #  LATIN SMALL LETTER R
-    0x0073: 0x0073,     #  LATIN SMALL LETTER S
-    0x0074: 0x0074,     #  LATIN SMALL LETTER T
-    0x0075: 0x0075,     #  LATIN SMALL LETTER U
-    0x0076: 0x0076,     #  LATIN SMALL LETTER V
-    0x0077: 0x0077,     #  LATIN SMALL LETTER W
-    0x0078: 0x0078,     #  LATIN SMALL LETTER X
-    0x0079: 0x0079,     #  LATIN SMALL LETTER Y
-    0x007a: 0x007a,     #  LATIN SMALL LETTER Z
-    0x007b: 0x007b,     #  LEFT CURLY BRACKET, left-right
-    0x007b: 0x00fb,     #  LEFT CURLY BRACKET, right-left
-    0x007c: 0x007c,     #  VERTICAL LINE, left-right
-    0x007c: 0x00fc,     #  VERTICAL LINE, right-left
-    0x007d: 0x007d,     #  RIGHT CURLY BRACKET, left-right
-    0x007d: 0x00fd,     #  RIGHT CURLY BRACKET, right-left
-    0x007e: 0x007e,     #  TILDE
-    0x007f: 0x007f,     #  CONTROL CHARACTER
-    0x00a0: 0x0081,     #  NO-BREAK SPACE, right-left
-    0x00ab: 0x008c,     #  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    0x00bb: 0x0098,     #  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    0x00c4: 0x0080,     #  LATIN CAPITAL LETTER A WITH DIAERESIS
-    0x00c7: 0x0082,     #  LATIN CAPITAL LETTER C WITH CEDILLA
-    0x00c9: 0x0083,     #  LATIN CAPITAL LETTER E WITH ACUTE
-    0x00d1: 0x0084,     #  LATIN CAPITAL LETTER N WITH TILDE
-    0x00d6: 0x0085,     #  LATIN CAPITAL LETTER O WITH DIAERESIS
-    0x00dc: 0x0086,     #  LATIN CAPITAL LETTER U WITH DIAERESIS
-    0x00e0: 0x0088,     #  LATIN SMALL LETTER A WITH GRAVE
-    0x00e1: 0x0087,     #  LATIN SMALL LETTER A WITH ACUTE
-    0x00e2: 0x0089,     #  LATIN SMALL LETTER A WITH CIRCUMFLEX
-    0x00e4: 0x008a,     #  LATIN SMALL LETTER A WITH DIAERESIS
-    0x00e7: 0x008d,     #  LATIN SMALL LETTER C WITH CEDILLA
-    0x00e8: 0x008f,     #  LATIN SMALL LETTER E WITH GRAVE
-    0x00e9: 0x008e,     #  LATIN SMALL LETTER E WITH ACUTE
-    0x00ea: 0x0090,     #  LATIN SMALL LETTER E WITH CIRCUMFLEX
-    0x00eb: 0x0091,     #  LATIN SMALL LETTER E WITH DIAERESIS
-    0x00ed: 0x0092,     #  LATIN SMALL LETTER I WITH ACUTE
-    0x00ee: 0x0094,     #  LATIN SMALL LETTER I WITH CIRCUMFLEX
-    0x00ef: 0x0095,     #  LATIN SMALL LETTER I WITH DIAERESIS
-    0x00f1: 0x0096,     #  LATIN SMALL LETTER N WITH TILDE
-    0x00f3: 0x0097,     #  LATIN SMALL LETTER O WITH ACUTE
-    0x00f4: 0x0099,     #  LATIN SMALL LETTER O WITH CIRCUMFLEX
-    0x00f6: 0x009a,     #  LATIN SMALL LETTER O WITH DIAERESIS
-    0x00f7: 0x009b,     #  DIVISION SIGN, right-left
-    0x00f9: 0x009d,     #  LATIN SMALL LETTER U WITH GRAVE
-    0x00fa: 0x009c,     #  LATIN SMALL LETTER U WITH ACUTE
-    0x00fb: 0x009e,     #  LATIN SMALL LETTER U WITH CIRCUMFLEX
-    0x00fc: 0x009f,     #  LATIN SMALL LETTER U WITH DIAERESIS
-    0x060c: 0x00ac,     #  ARABIC COMMA
-    0x061b: 0x00bb,     #  ARABIC SEMICOLON
-    0x061f: 0x00bf,     #  ARABIC QUESTION MARK
-    0x0621: 0x00c1,     #  ARABIC LETTER HAMZA
-    0x0622: 0x00c2,     #  ARABIC LETTER ALEF WITH MADDA ABOVE
-    0x0623: 0x00c3,     #  ARABIC LETTER ALEF WITH HAMZA ABOVE
-    0x0624: 0x00c4,     #  ARABIC LETTER WAW WITH HAMZA ABOVE
-    0x0625: 0x00c5,     #  ARABIC LETTER ALEF WITH HAMZA BELOW
-    0x0626: 0x00c6,     #  ARABIC LETTER YEH WITH HAMZA ABOVE
-    0x0627: 0x00c7,     #  ARABIC LETTER ALEF
-    0x0628: 0x00c8,     #  ARABIC LETTER BEH
-    0x0629: 0x00c9,     #  ARABIC LETTER TEH MARBUTA
-    0x062a: 0x00ca,     #  ARABIC LETTER TEH
-    0x062b: 0x00cb,     #  ARABIC LETTER THEH
-    0x062c: 0x00cc,     #  ARABIC LETTER JEEM
-    0x062d: 0x00cd,     #  ARABIC LETTER HAH
-    0x062e: 0x00ce,     #  ARABIC LETTER KHAH
-    0x062f: 0x00cf,     #  ARABIC LETTER DAL
-    0x0630: 0x00d0,     #  ARABIC LETTER THAL
-    0x0631: 0x00d1,     #  ARABIC LETTER REH
-    0x0632: 0x00d2,     #  ARABIC LETTER ZAIN
-    0x0633: 0x00d3,     #  ARABIC LETTER SEEN
-    0x0634: 0x00d4,     #  ARABIC LETTER SHEEN
-    0x0635: 0x00d5,     #  ARABIC LETTER SAD
-    0x0636: 0x00d6,     #  ARABIC LETTER DAD
-    0x0637: 0x00d7,     #  ARABIC LETTER TAH
-    0x0638: 0x00d8,     #  ARABIC LETTER ZAH
-    0x0639: 0x00d9,     #  ARABIC LETTER AIN
-    0x063a: 0x00da,     #  ARABIC LETTER GHAIN
-    0x0640: 0x00e0,     #  ARABIC TATWEEL
-    0x0641: 0x00e1,     #  ARABIC LETTER FEH
-    0x0642: 0x00e2,     #  ARABIC LETTER QAF
-    0x0643: 0x00e3,     #  ARABIC LETTER KAF
-    0x0644: 0x00e4,     #  ARABIC LETTER LAM
-    0x0645: 0x00e5,     #  ARABIC LETTER MEEM
-    0x0646: 0x00e6,     #  ARABIC LETTER NOON
-    0x0647: 0x00e7,     #  ARABIC LETTER HEH
-    0x0648: 0x00e8,     #  ARABIC LETTER WAW
-    0x0649: 0x00e9,     #  ARABIC LETTER ALEF MAKSURA
-    0x064a: 0x00ea,     #  ARABIC LETTER YEH
-    0x064b: 0x00eb,     #  ARABIC FATHATAN
-    0x064c: 0x00ec,     #  ARABIC DAMMATAN
-    0x064d: 0x00ed,     #  ARABIC KASRATAN
-    0x064e: 0x00ee,     #  ARABIC FATHA
-    0x064f: 0x00ef,     #  ARABIC DAMMA
-    0x0650: 0x00f0,     #  ARABIC KASRA
-    0x0651: 0x00f1,     #  ARABIC SHADDA
-    0x0652: 0x00f2,     #  ARABIC SUKUN
-    0x0660: 0x00b0,     #  ARABIC-INDIC DIGIT ZERO, right-left (need override)
-    0x0661: 0x00b1,     #  ARABIC-INDIC DIGIT ONE, right-left (need override)
-    0x0662: 0x00b2,     #  ARABIC-INDIC DIGIT TWO, right-left (need override)
-    0x0663: 0x00b3,     #  ARABIC-INDIC DIGIT THREE, right-left (need override)
-    0x0664: 0x00b4,     #  ARABIC-INDIC DIGIT FOUR, right-left (need override)
-    0x0665: 0x00b5,     #  ARABIC-INDIC DIGIT FIVE, right-left (need override)
-    0x0666: 0x00b6,     #  ARABIC-INDIC DIGIT SIX, right-left (need override)
-    0x0667: 0x00b7,     #  ARABIC-INDIC DIGIT SEVEN, right-left (need override)
-    0x0668: 0x00b8,     #  ARABIC-INDIC DIGIT EIGHT, right-left (need override)
-    0x0669: 0x00b9,     #  ARABIC-INDIC DIGIT NINE, right-left (need override)
-    0x066a: 0x00a5,     #  ARABIC PERCENT SIGN
-    0x0679: 0x00f4,     #  ARABIC LETTER TTEH
-    0x067e: 0x00f3,     #  ARABIC LETTER PEH
-    0x0686: 0x00f5,     #  ARABIC LETTER TCHEH
-    0x0688: 0x00f9,     #  ARABIC LETTER DDAL
-    0x0691: 0x00fa,     #  ARABIC LETTER RREH
-    0x0698: 0x00fe,     #  ARABIC LETTER JEH
-    0x06a4: 0x00f7,     #  ARABIC LETTER VEH
-    0x06af: 0x00f8,     #  ARABIC LETTER GAF
-    0x06ba: 0x008b,     #  ARABIC LETTER NOON GHUNNA
-    0x06d2: 0x00ff,     #  ARABIC LETTER YEH BARREE
-    0x06d5: 0x00f6,     #  ARABIC LETTER AE
-    0x2026: 0x0093,     #  HORIZONTAL ELLIPSIS, right-left
-    0x274a: 0x00c0,     #  EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_centeuro.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_centeuro.py
deleted file mode 100644
index 3ef432c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_centeuro.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec mac_centeuro generated from 'MAPPINGS/VENDORS/APPLE/CENTEURO.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='mac-centeuro',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> CONTROL CHARACTER
-    u'\x01'     #  0x01 -> CONTROL CHARACTER
-    u'\x02'     #  0x02 -> CONTROL CHARACTER
-    u'\x03'     #  0x03 -> CONTROL CHARACTER
-    u'\x04'     #  0x04 -> CONTROL CHARACTER
-    u'\x05'     #  0x05 -> CONTROL CHARACTER
-    u'\x06'     #  0x06 -> CONTROL CHARACTER
-    u'\x07'     #  0x07 -> CONTROL CHARACTER
-    u'\x08'     #  0x08 -> CONTROL CHARACTER
-    u'\t'       #  0x09 -> CONTROL CHARACTER
-    u'\n'       #  0x0A -> CONTROL CHARACTER
-    u'\x0b'     #  0x0B -> CONTROL CHARACTER
-    u'\x0c'     #  0x0C -> CONTROL CHARACTER
-    u'\r'       #  0x0D -> CONTROL CHARACTER
-    u'\x0e'     #  0x0E -> CONTROL CHARACTER
-    u'\x0f'     #  0x0F -> CONTROL CHARACTER
-    u'\x10'     #  0x10 -> CONTROL CHARACTER
-    u'\x11'     #  0x11 -> CONTROL CHARACTER
-    u'\x12'     #  0x12 -> CONTROL CHARACTER
-    u'\x13'     #  0x13 -> CONTROL CHARACTER
-    u'\x14'     #  0x14 -> CONTROL CHARACTER
-    u'\x15'     #  0x15 -> CONTROL CHARACTER
-    u'\x16'     #  0x16 -> CONTROL CHARACTER
-    u'\x17'     #  0x17 -> CONTROL CHARACTER
-    u'\x18'     #  0x18 -> CONTROL CHARACTER
-    u'\x19'     #  0x19 -> CONTROL CHARACTER
-    u'\x1a'     #  0x1A -> CONTROL CHARACTER
-    u'\x1b'     #  0x1B -> CONTROL CHARACTER
-    u'\x1c'     #  0x1C -> CONTROL CHARACTER
-    u'\x1d'     #  0x1D -> CONTROL CHARACTER
-    u'\x1e'     #  0x1E -> CONTROL CHARACTER
-    u'\x1f'     #  0x1F -> CONTROL CHARACTER
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> CONTROL CHARACTER
-    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\u0100'   #  0x81 -> LATIN CAPITAL LETTER A WITH MACRON
-    u'\u0101'   #  0x82 -> LATIN SMALL LETTER A WITH MACRON
-    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\u0104'   #  0x84 -> LATIN CAPITAL LETTER A WITH OGONEK
-    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'     #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\u0105'   #  0x88 -> LATIN SMALL LETTER A WITH OGONEK
-    u'\u010c'   #  0x89 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u010d'   #  0x8B -> LATIN SMALL LETTER C WITH CARON
-    u'\u0106'   #  0x8C -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\u0107'   #  0x8D -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\u0179'   #  0x8F -> LATIN CAPITAL LETTER Z WITH ACUTE
-    u'\u017a'   #  0x90 -> LATIN SMALL LETTER Z WITH ACUTE
-    u'\u010e'   #  0x91 -> LATIN CAPITAL LETTER D WITH CARON
-    u'\xed'     #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\u010f'   #  0x93 -> LATIN SMALL LETTER D WITH CARON
-    u'\u0112'   #  0x94 -> LATIN CAPITAL LETTER E WITH MACRON
-    u'\u0113'   #  0x95 -> LATIN SMALL LETTER E WITH MACRON
-    u'\u0116'   #  0x96 -> LATIN CAPITAL LETTER E WITH DOT ABOVE
-    u'\xf3'     #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\u0117'   #  0x98 -> LATIN SMALL LETTER E WITH DOT ABOVE
-    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'     #  0x9B -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'     #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
-    u'\u011a'   #  0x9D -> LATIN CAPITAL LETTER E WITH CARON
-    u'\u011b'   #  0x9E -> LATIN SMALL LETTER E WITH CARON
-    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'   #  0xA0 -> DAGGER
-    u'\xb0'     #  0xA1 -> DEGREE SIGN
-    u'\u0118'   #  0xA2 -> LATIN CAPITAL LETTER E WITH OGONEK
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa7'     #  0xA4 -> SECTION SIGN
-    u'\u2022'   #  0xA5 -> BULLET
-    u'\xb6'     #  0xA6 -> PILCROW SIGN
-    u'\xdf'     #  0xA7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'     #  0xA8 -> REGISTERED SIGN
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u2122'   #  0xAA -> TRADE MARK SIGN
-    u'\u0119'   #  0xAB -> LATIN SMALL LETTER E WITH OGONEK
-    u'\xa8'     #  0xAC -> DIAERESIS
-    u'\u2260'   #  0xAD -> NOT EQUAL TO
-    u'\u0123'   #  0xAE -> LATIN SMALL LETTER G WITH CEDILLA
-    u'\u012e'   #  0xAF -> LATIN CAPITAL LETTER I WITH OGONEK
-    u'\u012f'   #  0xB0 -> LATIN SMALL LETTER I WITH OGONEK
-    u'\u012a'   #  0xB1 -> LATIN CAPITAL LETTER I WITH MACRON
-    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\u012b'   #  0xB4 -> LATIN SMALL LETTER I WITH MACRON
-    u'\u0136'   #  0xB5 -> LATIN CAPITAL LETTER K WITH CEDILLA
-    u'\u2202'   #  0xB6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'   #  0xB7 -> N-ARY SUMMATION
-    u'\u0142'   #  0xB8 -> LATIN SMALL LETTER L WITH STROKE
-    u'\u013b'   #  0xB9 -> LATIN CAPITAL LETTER L WITH CEDILLA
-    u'\u013c'   #  0xBA -> LATIN SMALL LETTER L WITH CEDILLA
-    u'\u013d'   #  0xBB -> LATIN CAPITAL LETTER L WITH CARON
-    u'\u013e'   #  0xBC -> LATIN SMALL LETTER L WITH CARON
-    u'\u0139'   #  0xBD -> LATIN CAPITAL LETTER L WITH ACUTE
-    u'\u013a'   #  0xBE -> LATIN SMALL LETTER L WITH ACUTE
-    u'\u0145'   #  0xBF -> LATIN CAPITAL LETTER N WITH CEDILLA
-    u'\u0146'   #  0xC0 -> LATIN SMALL LETTER N WITH CEDILLA
-    u'\u0143'   #  0xC1 -> LATIN CAPITAL LETTER N WITH ACUTE
-    u'\xac'     #  0xC2 -> NOT SIGN
-    u'\u221a'   #  0xC3 -> SQUARE ROOT
-    u'\u0144'   #  0xC4 -> LATIN SMALL LETTER N WITH ACUTE
-    u'\u0147'   #  0xC5 -> LATIN CAPITAL LETTER N WITH CARON
-    u'\u2206'   #  0xC6 -> INCREMENT
-    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'     #  0xCA -> NO-BREAK SPACE
-    u'\u0148'   #  0xCB -> LATIN SMALL LETTER N WITH CARON
-    u'\u0150'   #  0xCC -> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-    u'\xd5'     #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0151'   #  0xCE -> LATIN SMALL LETTER O WITH DOUBLE ACUTE
-    u'\u014c'   #  0xCF -> LATIN CAPITAL LETTER O WITH MACRON
-    u'\u2013'   #  0xD0 -> EN DASH
-    u'\u2014'   #  0xD1 -> EM DASH
-    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'     #  0xD6 -> DIVISION SIGN
-    u'\u25ca'   #  0xD7 -> LOZENGE
-    u'\u014d'   #  0xD8 -> LATIN SMALL LETTER O WITH MACRON
-    u'\u0154'   #  0xD9 -> LATIN CAPITAL LETTER R WITH ACUTE
-    u'\u0155'   #  0xDA -> LATIN SMALL LETTER R WITH ACUTE
-    u'\u0158'   #  0xDB -> LATIN CAPITAL LETTER R WITH CARON
-    u'\u2039'   #  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u203a'   #  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u0159'   #  0xDE -> LATIN SMALL LETTER R WITH CARON
-    u'\u0156'   #  0xDF -> LATIN CAPITAL LETTER R WITH CEDILLA
-    u'\u0157'   #  0xE0 -> LATIN SMALL LETTER R WITH CEDILLA
-    u'\u0160'   #  0xE1 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u201a'   #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'   #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u0161'   #  0xE4 -> LATIN SMALL LETTER S WITH CARON
-    u'\u015a'   #  0xE5 -> LATIN CAPITAL LETTER S WITH ACUTE
-    u'\u015b'   #  0xE6 -> LATIN SMALL LETTER S WITH ACUTE
-    u'\xc1'     #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\u0164'   #  0xE8 -> LATIN CAPITAL LETTER T WITH CARON
-    u'\u0165'   #  0xE9 -> LATIN SMALL LETTER T WITH CARON
-    u'\xcd'     #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\u017d'   #  0xEB -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\u017e'   #  0xEC -> LATIN SMALL LETTER Z WITH CARON
-    u'\u016a'   #  0xED -> LATIN CAPITAL LETTER U WITH MACRON
-    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u016b'   #  0xF0 -> LATIN SMALL LETTER U WITH MACRON
-    u'\u016e'   #  0xF1 -> LATIN CAPITAL LETTER U WITH RING ABOVE
-    u'\xda'     #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\u016f'   #  0xF3 -> LATIN SMALL LETTER U WITH RING ABOVE
-    u'\u0170'   #  0xF4 -> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-    u'\u0171'   #  0xF5 -> LATIN SMALL LETTER U WITH DOUBLE ACUTE
-    u'\u0172'   #  0xF6 -> LATIN CAPITAL LETTER U WITH OGONEK
-    u'\u0173'   #  0xF7 -> LATIN SMALL LETTER U WITH OGONEK
-    u'\xdd'     #  0xF8 -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xfd'     #  0xF9 -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\u0137'   #  0xFA -> LATIN SMALL LETTER K WITH CEDILLA
-    u'\u017b'   #  0xFB -> LATIN CAPITAL LETTER Z WITH DOT ABOVE
-    u'\u0141'   #  0xFC -> LATIN CAPITAL LETTER L WITH STROKE
-    u'\u017c'   #  0xFD -> LATIN SMALL LETTER Z WITH DOT ABOVE
-    u'\u0122'   #  0xFE -> LATIN CAPITAL LETTER G WITH CEDILLA
-    u'\u02c7'   #  0xFF -> CARON
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_croatian.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_croatian.py
deleted file mode 100644
index ebcb1cc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_croatian.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec mac_croatian generated from 'MAPPINGS/VENDORS/APPLE/CROATIAN.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='mac-croatian',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> CONTROL CHARACTER
-    u'\x01'     #  0x01 -> CONTROL CHARACTER
-    u'\x02'     #  0x02 -> CONTROL CHARACTER
-    u'\x03'     #  0x03 -> CONTROL CHARACTER
-    u'\x04'     #  0x04 -> CONTROL CHARACTER
-    u'\x05'     #  0x05 -> CONTROL CHARACTER
-    u'\x06'     #  0x06 -> CONTROL CHARACTER
-    u'\x07'     #  0x07 -> CONTROL CHARACTER
-    u'\x08'     #  0x08 -> CONTROL CHARACTER
-    u'\t'       #  0x09 -> CONTROL CHARACTER
-    u'\n'       #  0x0A -> CONTROL CHARACTER
-    u'\x0b'     #  0x0B -> CONTROL CHARACTER
-    u'\x0c'     #  0x0C -> CONTROL CHARACTER
-    u'\r'       #  0x0D -> CONTROL CHARACTER
-    u'\x0e'     #  0x0E -> CONTROL CHARACTER
-    u'\x0f'     #  0x0F -> CONTROL CHARACTER
-    u'\x10'     #  0x10 -> CONTROL CHARACTER
-    u'\x11'     #  0x11 -> CONTROL CHARACTER
-    u'\x12'     #  0x12 -> CONTROL CHARACTER
-    u'\x13'     #  0x13 -> CONTROL CHARACTER
-    u'\x14'     #  0x14 -> CONTROL CHARACTER
-    u'\x15'     #  0x15 -> CONTROL CHARACTER
-    u'\x16'     #  0x16 -> CONTROL CHARACTER
-    u'\x17'     #  0x17 -> CONTROL CHARACTER
-    u'\x18'     #  0x18 -> CONTROL CHARACTER
-    u'\x19'     #  0x19 -> CONTROL CHARACTER
-    u'\x1a'     #  0x1A -> CONTROL CHARACTER
-    u'\x1b'     #  0x1B -> CONTROL CHARACTER
-    u'\x1c'     #  0x1C -> CONTROL CHARACTER
-    u'\x1d'     #  0x1D -> CONTROL CHARACTER
-    u'\x1e'     #  0x1E -> CONTROL CHARACTER
-    u'\x1f'     #  0x1F -> CONTROL CHARACTER
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> CONTROL CHARACTER
-    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'     #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xd1'     #  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'     #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe0'     #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'     #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'     #  0x8B -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'     #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'     #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'     #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'     #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xed'     #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xec'     #  0x93 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xee'     #  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf1'     #  0x96 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf3'     #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf2'     #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'     #  0x9B -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'     #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'     #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'     #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'   #  0xA0 -> DAGGER
-    u'\xb0'     #  0xA1 -> DEGREE SIGN
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa7'     #  0xA4 -> SECTION SIGN
-    u'\u2022'   #  0xA5 -> BULLET
-    u'\xb6'     #  0xA6 -> PILCROW SIGN
-    u'\xdf'     #  0xA7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'     #  0xA8 -> REGISTERED SIGN
-    u'\u0160'   #  0xA9 -> LATIN CAPITAL LETTER S WITH CARON
-    u'\u2122'   #  0xAA -> TRADE MARK SIGN
-    u'\xb4'     #  0xAB -> ACUTE ACCENT
-    u'\xa8'     #  0xAC -> DIAERESIS
-    u'\u2260'   #  0xAD -> NOT EQUAL TO
-    u'\u017d'   #  0xAE -> LATIN CAPITAL LETTER Z WITH CARON
-    u'\xd8'     #  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u221e'   #  0xB0 -> INFINITY
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\u2206'   #  0xB4 -> INCREMENT
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\u2202'   #  0xB6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'   #  0xB7 -> N-ARY SUMMATION
-    u'\u220f'   #  0xB8 -> N-ARY PRODUCT
-    u'\u0161'   #  0xB9 -> LATIN SMALL LETTER S WITH CARON
-    u'\u222b'   #  0xBA -> INTEGRAL
-    u'\xaa'     #  0xBB -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0xBC -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'   #  0xBD -> GREEK CAPITAL LETTER OMEGA
-    u'\u017e'   #  0xBE -> LATIN SMALL LETTER Z WITH CARON
-    u'\xf8'     #  0xBF -> LATIN SMALL LETTER O WITH STROKE
-    u'\xbf'     #  0xC0 -> INVERTED QUESTION MARK
-    u'\xa1'     #  0xC1 -> INVERTED EXCLAMATION MARK
-    u'\xac'     #  0xC2 -> NOT SIGN
-    u'\u221a'   #  0xC3 -> SQUARE ROOT
-    u'\u0192'   #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'   #  0xC5 -> ALMOST EQUAL TO
-    u'\u0106'   #  0xC6 -> LATIN CAPITAL LETTER C WITH ACUTE
-    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u010c'   #  0xC8 -> LATIN CAPITAL LETTER C WITH CARON
-    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'     #  0xCA -> NO-BREAK SPACE
-    u'\xc0'     #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'     #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'     #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'   #  0xCE -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'   #  0xCF -> LATIN SMALL LIGATURE OE
-    u'\u0110'   #  0xD0 -> LATIN CAPITAL LETTER D WITH STROKE
-    u'\u2014'   #  0xD1 -> EM DASH
-    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'     #  0xD6 -> DIVISION SIGN
-    u'\u25ca'   #  0xD7 -> LOZENGE
-    u'\uf8ff'   #  0xD8 -> Apple logo
-    u'\xa9'     #  0xD9 -> COPYRIGHT SIGN
-    u'\u2044'   #  0xDA -> FRACTION SLASH
-    u'\u20ac'   #  0xDB -> EURO SIGN
-    u'\u2039'   #  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u203a'   #  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\xc6'     #  0xDE -> LATIN CAPITAL LETTER AE
-    u'\xbb'     #  0xDF -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2013'   #  0xE0 -> EN DASH
-    u'\xb7'     #  0xE1 -> MIDDLE DOT
-    u'\u201a'   #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'   #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'   #  0xE4 -> PER MILLE SIGN
-    u'\xc2'     #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\u0107'   #  0xE6 -> LATIN SMALL LETTER C WITH ACUTE
-    u'\xc1'     #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\u010d'   #  0xE8 -> LATIN SMALL LETTER C WITH CARON
-    u'\xc8'     #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'     #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'     #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\u0111'   #  0xF0 -> LATIN SMALL LETTER D WITH STROKE
-    u'\xd2'     #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'     #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'     #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\u0131'   #  0xF5 -> LATIN SMALL LETTER DOTLESS I
-    u'\u02c6'   #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'   #  0xF7 -> SMALL TILDE
-    u'\xaf'     #  0xF8 -> MACRON
-    u'\u03c0'   #  0xF9 -> GREEK SMALL LETTER PI
-    u'\xcb'     #  0xFA -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\u02da'   #  0xFB -> RING ABOVE
-    u'\xb8'     #  0xFC -> CEDILLA
-    u'\xca'     #  0xFD -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xe6'     #  0xFE -> LATIN SMALL LETTER AE
-    u'\u02c7'   #  0xFF -> CARON
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_cyrillic.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_cyrillic.py
deleted file mode 100644
index bca866f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_cyrillic.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec mac_cyrillic generated from 'MAPPINGS/VENDORS/APPLE/CYRILLIC.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='mac-cyrillic',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> CONTROL CHARACTER
-    u'\x01'     #  0x01 -> CONTROL CHARACTER
-    u'\x02'     #  0x02 -> CONTROL CHARACTER
-    u'\x03'     #  0x03 -> CONTROL CHARACTER
-    u'\x04'     #  0x04 -> CONTROL CHARACTER
-    u'\x05'     #  0x05 -> CONTROL CHARACTER
-    u'\x06'     #  0x06 -> CONTROL CHARACTER
-    u'\x07'     #  0x07 -> CONTROL CHARACTER
-    u'\x08'     #  0x08 -> CONTROL CHARACTER
-    u'\t'       #  0x09 -> CONTROL CHARACTER
-    u'\n'       #  0x0A -> CONTROL CHARACTER
-    u'\x0b'     #  0x0B -> CONTROL CHARACTER
-    u'\x0c'     #  0x0C -> CONTROL CHARACTER
-    u'\r'       #  0x0D -> CONTROL CHARACTER
-    u'\x0e'     #  0x0E -> CONTROL CHARACTER
-    u'\x0f'     #  0x0F -> CONTROL CHARACTER
-    u'\x10'     #  0x10 -> CONTROL CHARACTER
-    u'\x11'     #  0x11 -> CONTROL CHARACTER
-    u'\x12'     #  0x12 -> CONTROL CHARACTER
-    u'\x13'     #  0x13 -> CONTROL CHARACTER
-    u'\x14'     #  0x14 -> CONTROL CHARACTER
-    u'\x15'     #  0x15 -> CONTROL CHARACTER
-    u'\x16'     #  0x16 -> CONTROL CHARACTER
-    u'\x17'     #  0x17 -> CONTROL CHARACTER
-    u'\x18'     #  0x18 -> CONTROL CHARACTER
-    u'\x19'     #  0x19 -> CONTROL CHARACTER
-    u'\x1a'     #  0x1A -> CONTROL CHARACTER
-    u'\x1b'     #  0x1B -> CONTROL CHARACTER
-    u'\x1c'     #  0x1C -> CONTROL CHARACTER
-    u'\x1d'     #  0x1D -> CONTROL CHARACTER
-    u'\x1e'     #  0x1E -> CONTROL CHARACTER
-    u'\x1f'     #  0x1F -> CONTROL CHARACTER
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> CONTROL CHARACTER
-    u'\u0410'   #  0x80 -> CYRILLIC CAPITAL LETTER A
-    u'\u0411'   #  0x81 -> CYRILLIC CAPITAL LETTER BE
-    u'\u0412'   #  0x82 -> CYRILLIC CAPITAL LETTER VE
-    u'\u0413'   #  0x83 -> CYRILLIC CAPITAL LETTER GHE
-    u'\u0414'   #  0x84 -> CYRILLIC CAPITAL LETTER DE
-    u'\u0415'   #  0x85 -> CYRILLIC CAPITAL LETTER IE
-    u'\u0416'   #  0x86 -> CYRILLIC CAPITAL LETTER ZHE
-    u'\u0417'   #  0x87 -> CYRILLIC CAPITAL LETTER ZE
-    u'\u0418'   #  0x88 -> CYRILLIC CAPITAL LETTER I
-    u'\u0419'   #  0x89 -> CYRILLIC CAPITAL LETTER SHORT I
-    u'\u041a'   #  0x8A -> CYRILLIC CAPITAL LETTER KA
-    u'\u041b'   #  0x8B -> CYRILLIC CAPITAL LETTER EL
-    u'\u041c'   #  0x8C -> CYRILLIC CAPITAL LETTER EM
-    u'\u041d'   #  0x8D -> CYRILLIC CAPITAL LETTER EN
-    u'\u041e'   #  0x8E -> CYRILLIC CAPITAL LETTER O
-    u'\u041f'   #  0x8F -> CYRILLIC CAPITAL LETTER PE
-    u'\u0420'   #  0x90 -> CYRILLIC CAPITAL LETTER ER
-    u'\u0421'   #  0x91 -> CYRILLIC CAPITAL LETTER ES
-    u'\u0422'   #  0x92 -> CYRILLIC CAPITAL LETTER TE
-    u'\u0423'   #  0x93 -> CYRILLIC CAPITAL LETTER U
-    u'\u0424'   #  0x94 -> CYRILLIC CAPITAL LETTER EF
-    u'\u0425'   #  0x95 -> CYRILLIC CAPITAL LETTER HA
-    u'\u0426'   #  0x96 -> CYRILLIC CAPITAL LETTER TSE
-    u'\u0427'   #  0x97 -> CYRILLIC CAPITAL LETTER CHE
-    u'\u0428'   #  0x98 -> CYRILLIC CAPITAL LETTER SHA
-    u'\u0429'   #  0x99 -> CYRILLIC CAPITAL LETTER SHCHA
-    u'\u042a'   #  0x9A -> CYRILLIC CAPITAL LETTER HARD SIGN
-    u'\u042b'   #  0x9B -> CYRILLIC CAPITAL LETTER YERU
-    u'\u042c'   #  0x9C -> CYRILLIC CAPITAL LETTER SOFT SIGN
-    u'\u042d'   #  0x9D -> CYRILLIC CAPITAL LETTER E
-    u'\u042e'   #  0x9E -> CYRILLIC CAPITAL LETTER YU
-    u'\u042f'   #  0x9F -> CYRILLIC CAPITAL LETTER YA
-    u'\u2020'   #  0xA0 -> DAGGER
-    u'\xb0'     #  0xA1 -> DEGREE SIGN
-    u'\u0490'   #  0xA2 -> CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa7'     #  0xA4 -> SECTION SIGN
-    u'\u2022'   #  0xA5 -> BULLET
-    u'\xb6'     #  0xA6 -> PILCROW SIGN
-    u'\u0406'   #  0xA7 -> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\xae'     #  0xA8 -> REGISTERED SIGN
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u2122'   #  0xAA -> TRADE MARK SIGN
-    u'\u0402'   #  0xAB -> CYRILLIC CAPITAL LETTER DJE
-    u'\u0452'   #  0xAC -> CYRILLIC SMALL LETTER DJE
-    u'\u2260'   #  0xAD -> NOT EQUAL TO
-    u'\u0403'   #  0xAE -> CYRILLIC CAPITAL LETTER GJE
-    u'\u0453'   #  0xAF -> CYRILLIC SMALL LETTER GJE
-    u'\u221e'   #  0xB0 -> INFINITY
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\u0456'   #  0xB4 -> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\u0491'   #  0xB6 -> CYRILLIC SMALL LETTER GHE WITH UPTURN
-    u'\u0408'   #  0xB7 -> CYRILLIC CAPITAL LETTER JE
-    u'\u0404'   #  0xB8 -> CYRILLIC CAPITAL LETTER UKRAINIAN IE
-    u'\u0454'   #  0xB9 -> CYRILLIC SMALL LETTER UKRAINIAN IE
-    u'\u0407'   #  0xBA -> CYRILLIC CAPITAL LETTER YI
-    u'\u0457'   #  0xBB -> CYRILLIC SMALL LETTER YI
-    u'\u0409'   #  0xBC -> CYRILLIC CAPITAL LETTER LJE
-    u'\u0459'   #  0xBD -> CYRILLIC SMALL LETTER LJE
-    u'\u040a'   #  0xBE -> CYRILLIC CAPITAL LETTER NJE
-    u'\u045a'   #  0xBF -> CYRILLIC SMALL LETTER NJE
-    u'\u0458'   #  0xC0 -> CYRILLIC SMALL LETTER JE
-    u'\u0405'   #  0xC1 -> CYRILLIC CAPITAL LETTER DZE
-    u'\xac'     #  0xC2 -> NOT SIGN
-    u'\u221a'   #  0xC3 -> SQUARE ROOT
-    u'\u0192'   #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'   #  0xC5 -> ALMOST EQUAL TO
-    u'\u2206'   #  0xC6 -> INCREMENT
-    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'     #  0xCA -> NO-BREAK SPACE
-    u'\u040b'   #  0xCB -> CYRILLIC CAPITAL LETTER TSHE
-    u'\u045b'   #  0xCC -> CYRILLIC SMALL LETTER TSHE
-    u'\u040c'   #  0xCD -> CYRILLIC CAPITAL LETTER KJE
-    u'\u045c'   #  0xCE -> CYRILLIC SMALL LETTER KJE
-    u'\u0455'   #  0xCF -> CYRILLIC SMALL LETTER DZE
-    u'\u2013'   #  0xD0 -> EN DASH
-    u'\u2014'   #  0xD1 -> EM DASH
-    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'     #  0xD6 -> DIVISION SIGN
-    u'\u201e'   #  0xD7 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u040e'   #  0xD8 -> CYRILLIC CAPITAL LETTER SHORT U
-    u'\u045e'   #  0xD9 -> CYRILLIC SMALL LETTER SHORT U
-    u'\u040f'   #  0xDA -> CYRILLIC CAPITAL LETTER DZHE
-    u'\u045f'   #  0xDB -> CYRILLIC SMALL LETTER DZHE
-    u'\u2116'   #  0xDC -> NUMERO SIGN
-    u'\u0401'   #  0xDD -> CYRILLIC CAPITAL LETTER IO
-    u'\u0451'   #  0xDE -> CYRILLIC SMALL LETTER IO
-    u'\u044f'   #  0xDF -> CYRILLIC SMALL LETTER YA
-    u'\u0430'   #  0xE0 -> CYRILLIC SMALL LETTER A
-    u'\u0431'   #  0xE1 -> CYRILLIC SMALL LETTER BE
-    u'\u0432'   #  0xE2 -> CYRILLIC SMALL LETTER VE
-    u'\u0433'   #  0xE3 -> CYRILLIC SMALL LETTER GHE
-    u'\u0434'   #  0xE4 -> CYRILLIC SMALL LETTER DE
-    u'\u0435'   #  0xE5 -> CYRILLIC SMALL LETTER IE
-    u'\u0436'   #  0xE6 -> CYRILLIC SMALL LETTER ZHE
-    u'\u0437'   #  0xE7 -> CYRILLIC SMALL LETTER ZE
-    u'\u0438'   #  0xE8 -> CYRILLIC SMALL LETTER I
-    u'\u0439'   #  0xE9 -> CYRILLIC SMALL LETTER SHORT I
-    u'\u043a'   #  0xEA -> CYRILLIC SMALL LETTER KA
-    u'\u043b'   #  0xEB -> CYRILLIC SMALL LETTER EL
-    u'\u043c'   #  0xEC -> CYRILLIC SMALL LETTER EM
-    u'\u043d'   #  0xED -> CYRILLIC SMALL LETTER EN
-    u'\u043e'   #  0xEE -> CYRILLIC SMALL LETTER O
-    u'\u043f'   #  0xEF -> CYRILLIC SMALL LETTER PE
-    u'\u0440'   #  0xF0 -> CYRILLIC SMALL LETTER ER
-    u'\u0441'   #  0xF1 -> CYRILLIC SMALL LETTER ES
-    u'\u0442'   #  0xF2 -> CYRILLIC SMALL LETTER TE
-    u'\u0443'   #  0xF3 -> CYRILLIC SMALL LETTER U
-    u'\u0444'   #  0xF4 -> CYRILLIC SMALL LETTER EF
-    u'\u0445'   #  0xF5 -> CYRILLIC SMALL LETTER HA
-    u'\u0446'   #  0xF6 -> CYRILLIC SMALL LETTER TSE
-    u'\u0447'   #  0xF7 -> CYRILLIC SMALL LETTER CHE
-    u'\u0448'   #  0xF8 -> CYRILLIC SMALL LETTER SHA
-    u'\u0449'   #  0xF9 -> CYRILLIC SMALL LETTER SHCHA
-    u'\u044a'   #  0xFA -> CYRILLIC SMALL LETTER HARD SIGN
-    u'\u044b'   #  0xFB -> CYRILLIC SMALL LETTER YERU
-    u'\u044c'   #  0xFC -> CYRILLIC SMALL LETTER SOFT SIGN
-    u'\u044d'   #  0xFD -> CYRILLIC SMALL LETTER E
-    u'\u044e'   #  0xFE -> CYRILLIC SMALL LETTER YU
-    u'\u20ac'   #  0xFF -> EURO SIGN
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_farsi.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_farsi.py
deleted file mode 100644
index 06d9285..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_farsi.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec mac_farsi generated from 'MAPPINGS/VENDORS/APPLE/FARSI.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='mac-farsi',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> CONTROL CHARACTER
-    u'\x01'     #  0x01 -> CONTROL CHARACTER
-    u'\x02'     #  0x02 -> CONTROL CHARACTER
-    u'\x03'     #  0x03 -> CONTROL CHARACTER
-    u'\x04'     #  0x04 -> CONTROL CHARACTER
-    u'\x05'     #  0x05 -> CONTROL CHARACTER
-    u'\x06'     #  0x06 -> CONTROL CHARACTER
-    u'\x07'     #  0x07 -> CONTROL CHARACTER
-    u'\x08'     #  0x08 -> CONTROL CHARACTER
-    u'\t'       #  0x09 -> CONTROL CHARACTER
-    u'\n'       #  0x0A -> CONTROL CHARACTER
-    u'\x0b'     #  0x0B -> CONTROL CHARACTER
-    u'\x0c'     #  0x0C -> CONTROL CHARACTER
-    u'\r'       #  0x0D -> CONTROL CHARACTER
-    u'\x0e'     #  0x0E -> CONTROL CHARACTER
-    u'\x0f'     #  0x0F -> CONTROL CHARACTER
-    u'\x10'     #  0x10 -> CONTROL CHARACTER
-    u'\x11'     #  0x11 -> CONTROL CHARACTER
-    u'\x12'     #  0x12 -> CONTROL CHARACTER
-    u'\x13'     #  0x13 -> CONTROL CHARACTER
-    u'\x14'     #  0x14 -> CONTROL CHARACTER
-    u'\x15'     #  0x15 -> CONTROL CHARACTER
-    u'\x16'     #  0x16 -> CONTROL CHARACTER
-    u'\x17'     #  0x17 -> CONTROL CHARACTER
-    u'\x18'     #  0x18 -> CONTROL CHARACTER
-    u'\x19'     #  0x19 -> CONTROL CHARACTER
-    u'\x1a'     #  0x1A -> CONTROL CHARACTER
-    u'\x1b'     #  0x1B -> CONTROL CHARACTER
-    u'\x1c'     #  0x1C -> CONTROL CHARACTER
-    u'\x1d'     #  0x1D -> CONTROL CHARACTER
-    u'\x1e'     #  0x1E -> CONTROL CHARACTER
-    u'\x1f'     #  0x1F -> CONTROL CHARACTER
-    u' '        #  0x20 -> SPACE, left-right
-    u'!'        #  0x21 -> EXCLAMATION MARK, left-right
-    u'"'        #  0x22 -> QUOTATION MARK, left-right
-    u'#'        #  0x23 -> NUMBER SIGN, left-right
-    u'$'        #  0x24 -> DOLLAR SIGN, left-right
-    u'%'        #  0x25 -> PERCENT SIGN, left-right
-    u'&'        #  0x26 -> AMPERSAND, left-right
-    u"'"        #  0x27 -> APOSTROPHE, left-right
-    u'('        #  0x28 -> LEFT PARENTHESIS, left-right
-    u')'        #  0x29 -> RIGHT PARENTHESIS, left-right
-    u'*'        #  0x2A -> ASTERISK, left-right
-    u'+'        #  0x2B -> PLUS SIGN, left-right
-    u','        #  0x2C -> COMMA, left-right; in Arabic-script context, displayed as 0x066C ARABIC THOUSANDS SEPARATOR
-    u'-'        #  0x2D -> HYPHEN-MINUS, left-right
-    u'.'        #  0x2E -> FULL STOP, left-right; in Arabic-script context, displayed as 0x066B ARABIC DECIMAL SEPARATOR
-    u'/'        #  0x2F -> SOLIDUS, left-right
-    u'0'        #  0x30 -> DIGIT ZERO;  in Arabic-script context, displayed as 0x06F0 EXTENDED ARABIC-INDIC DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE;   in Arabic-script context, displayed as 0x06F1 EXTENDED ARABIC-INDIC DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO;   in Arabic-script context, displayed as 0x06F2 EXTENDED ARABIC-INDIC DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE; in Arabic-script context, displayed as 0x06F3 EXTENDED ARABIC-INDIC DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR;  in Arabic-script context, displayed as 0x06F4 EXTENDED ARABIC-INDIC DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE;  in Arabic-script context, displayed as 0x06F5 EXTENDED ARABIC-INDIC DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX;   in Arabic-script context, displayed as 0x06F6 EXTENDED ARABIC-INDIC DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN; in Arabic-script context, displayed as 0x06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT; in Arabic-script context, displayed as 0x06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE;  in Arabic-script context, displayed as 0x06F9 EXTENDED ARABIC-INDIC DIGIT NINE
-    u':'        #  0x3A -> COLON, left-right
-    u';'        #  0x3B -> SEMICOLON, left-right
-    u'<'        #  0x3C -> LESS-THAN SIGN, left-right
-    u'='        #  0x3D -> EQUALS SIGN, left-right
-    u'>'        #  0x3E -> GREATER-THAN SIGN, left-right
-    u'?'        #  0x3F -> QUESTION MARK, left-right
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET, left-right
-    u'\\'       #  0x5C -> REVERSE SOLIDUS, left-right
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET, left-right
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT, left-right
-    u'_'        #  0x5F -> LOW LINE, left-right
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET, left-right
-    u'|'        #  0x7C -> VERTICAL LINE, left-right
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET, left-right
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> CONTROL CHARACTER
-    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xa0'     #  0x81 -> NO-BREAK SPACE, right-left
-    u'\xc7'     #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xd1'     #  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'     #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe0'     #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'     #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u06ba'   #  0x8B -> ARABIC LETTER NOON GHUNNA
-    u'\xab'     #  0x8C -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    u'\xe7'     #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'     #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'     #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xed'     #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\u2026'   #  0x93 -> HORIZONTAL ELLIPSIS, right-left
-    u'\xee'     #  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf1'     #  0x96 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf3'     #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xbb'     #  0x98 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK, right-left
-    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf7'     #  0x9B -> DIVISION SIGN, right-left
-    u'\xfa'     #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'     #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'     #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u' '        #  0xA0 -> SPACE, right-left
-    u'!'        #  0xA1 -> EXCLAMATION MARK, right-left
-    u'"'        #  0xA2 -> QUOTATION MARK, right-left
-    u'#'        #  0xA3 -> NUMBER SIGN, right-left
-    u'$'        #  0xA4 -> DOLLAR SIGN, right-left
-    u'\u066a'   #  0xA5 -> ARABIC PERCENT SIGN
-    u'&'        #  0xA6 -> AMPERSAND, right-left
-    u"'"        #  0xA7 -> APOSTROPHE, right-left
-    u'('        #  0xA8 -> LEFT PARENTHESIS, right-left
-    u')'        #  0xA9 -> RIGHT PARENTHESIS, right-left
-    u'*'        #  0xAA -> ASTERISK, right-left
-    u'+'        #  0xAB -> PLUS SIGN, right-left
-    u'\u060c'   #  0xAC -> ARABIC COMMA
-    u'-'        #  0xAD -> HYPHEN-MINUS, right-left
-    u'.'        #  0xAE -> FULL STOP, right-left
-    u'/'        #  0xAF -> SOLIDUS, right-left
-    u'\u06f0'   #  0xB0 -> EXTENDED ARABIC-INDIC DIGIT ZERO, right-left (need override)
-    u'\u06f1'   #  0xB1 -> EXTENDED ARABIC-INDIC DIGIT ONE, right-left (need override)
-    u'\u06f2'   #  0xB2 -> EXTENDED ARABIC-INDIC DIGIT TWO, right-left (need override)
-    u'\u06f3'   #  0xB3 -> EXTENDED ARABIC-INDIC DIGIT THREE, right-left (need override)
-    u'\u06f4'   #  0xB4 -> EXTENDED ARABIC-INDIC DIGIT FOUR, right-left (need override)
-    u'\u06f5'   #  0xB5 -> EXTENDED ARABIC-INDIC DIGIT FIVE, right-left (need override)
-    u'\u06f6'   #  0xB6 -> EXTENDED ARABIC-INDIC DIGIT SIX, right-left (need override)
-    u'\u06f7'   #  0xB7 -> EXTENDED ARABIC-INDIC DIGIT SEVEN, right-left (need override)
-    u'\u06f8'   #  0xB8 -> EXTENDED ARABIC-INDIC DIGIT EIGHT, right-left (need override)
-    u'\u06f9'   #  0xB9 -> EXTENDED ARABIC-INDIC DIGIT NINE, right-left (need override)
-    u':'        #  0xBA -> COLON, right-left
-    u'\u061b'   #  0xBB -> ARABIC SEMICOLON
-    u'<'        #  0xBC -> LESS-THAN SIGN, right-left
-    u'='        #  0xBD -> EQUALS SIGN, right-left
-    u'>'        #  0xBE -> GREATER-THAN SIGN, right-left
-    u'\u061f'   #  0xBF -> ARABIC QUESTION MARK
-    u'\u274a'   #  0xC0 -> EIGHT TEARDROP-SPOKED PROPELLER ASTERISK, right-left
-    u'\u0621'   #  0xC1 -> ARABIC LETTER HAMZA
-    u'\u0622'   #  0xC2 -> ARABIC LETTER ALEF WITH MADDA ABOVE
-    u'\u0623'   #  0xC3 -> ARABIC LETTER ALEF WITH HAMZA ABOVE
-    u'\u0624'   #  0xC4 -> ARABIC LETTER WAW WITH HAMZA ABOVE
-    u'\u0625'   #  0xC5 -> ARABIC LETTER ALEF WITH HAMZA BELOW
-    u'\u0626'   #  0xC6 -> ARABIC LETTER YEH WITH HAMZA ABOVE
-    u'\u0627'   #  0xC7 -> ARABIC LETTER ALEF
-    u'\u0628'   #  0xC8 -> ARABIC LETTER BEH
-    u'\u0629'   #  0xC9 -> ARABIC LETTER TEH MARBUTA
-    u'\u062a'   #  0xCA -> ARABIC LETTER TEH
-    u'\u062b'   #  0xCB -> ARABIC LETTER THEH
-    u'\u062c'   #  0xCC -> ARABIC LETTER JEEM
-    u'\u062d'   #  0xCD -> ARABIC LETTER HAH
-    u'\u062e'   #  0xCE -> ARABIC LETTER KHAH
-    u'\u062f'   #  0xCF -> ARABIC LETTER DAL
-    u'\u0630'   #  0xD0 -> ARABIC LETTER THAL
-    u'\u0631'   #  0xD1 -> ARABIC LETTER REH
-    u'\u0632'   #  0xD2 -> ARABIC LETTER ZAIN
-    u'\u0633'   #  0xD3 -> ARABIC LETTER SEEN
-    u'\u0634'   #  0xD4 -> ARABIC LETTER SHEEN
-    u'\u0635'   #  0xD5 -> ARABIC LETTER SAD
-    u'\u0636'   #  0xD6 -> ARABIC LETTER DAD
-    u'\u0637'   #  0xD7 -> ARABIC LETTER TAH
-    u'\u0638'   #  0xD8 -> ARABIC LETTER ZAH
-    u'\u0639'   #  0xD9 -> ARABIC LETTER AIN
-    u'\u063a'   #  0xDA -> ARABIC LETTER GHAIN
-    u'['        #  0xDB -> LEFT SQUARE BRACKET, right-left
-    u'\\'       #  0xDC -> REVERSE SOLIDUS, right-left
-    u']'        #  0xDD -> RIGHT SQUARE BRACKET, right-left
-    u'^'        #  0xDE -> CIRCUMFLEX ACCENT, right-left
-    u'_'        #  0xDF -> LOW LINE, right-left
-    u'\u0640'   #  0xE0 -> ARABIC TATWEEL
-    u'\u0641'   #  0xE1 -> ARABIC LETTER FEH
-    u'\u0642'   #  0xE2 -> ARABIC LETTER QAF
-    u'\u0643'   #  0xE3 -> ARABIC LETTER KAF
-    u'\u0644'   #  0xE4 -> ARABIC LETTER LAM
-    u'\u0645'   #  0xE5 -> ARABIC LETTER MEEM
-    u'\u0646'   #  0xE6 -> ARABIC LETTER NOON
-    u'\u0647'   #  0xE7 -> ARABIC LETTER HEH
-    u'\u0648'   #  0xE8 -> ARABIC LETTER WAW
-    u'\u0649'   #  0xE9 -> ARABIC LETTER ALEF MAKSURA
-    u'\u064a'   #  0xEA -> ARABIC LETTER YEH
-    u'\u064b'   #  0xEB -> ARABIC FATHATAN
-    u'\u064c'   #  0xEC -> ARABIC DAMMATAN
-    u'\u064d'   #  0xED -> ARABIC KASRATAN
-    u'\u064e'   #  0xEE -> ARABIC FATHA
-    u'\u064f'   #  0xEF -> ARABIC DAMMA
-    u'\u0650'   #  0xF0 -> ARABIC KASRA
-    u'\u0651'   #  0xF1 -> ARABIC SHADDA
-    u'\u0652'   #  0xF2 -> ARABIC SUKUN
-    u'\u067e'   #  0xF3 -> ARABIC LETTER PEH
-    u'\u0679'   #  0xF4 -> ARABIC LETTER TTEH
-    u'\u0686'   #  0xF5 -> ARABIC LETTER TCHEH
-    u'\u06d5'   #  0xF6 -> ARABIC LETTER AE
-    u'\u06a4'   #  0xF7 -> ARABIC LETTER VEH
-    u'\u06af'   #  0xF8 -> ARABIC LETTER GAF
-    u'\u0688'   #  0xF9 -> ARABIC LETTER DDAL
-    u'\u0691'   #  0xFA -> ARABIC LETTER RREH
-    u'{'        #  0xFB -> LEFT CURLY BRACKET, right-left
-    u'|'        #  0xFC -> VERTICAL LINE, right-left
-    u'}'        #  0xFD -> RIGHT CURLY BRACKET, right-left
-    u'\u0698'   #  0xFE -> ARABIC LETTER JEH
-    u'\u06d2'   #  0xFF -> ARABIC LETTER YEH BARREE
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_greek.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_greek.py
deleted file mode 100644
index 77a25f4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_greek.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec mac_greek generated from 'MAPPINGS/VENDORS/APPLE/GREEK.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='mac-greek',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> CONTROL CHARACTER
-    u'\x01'     #  0x01 -> CONTROL CHARACTER
-    u'\x02'     #  0x02 -> CONTROL CHARACTER
-    u'\x03'     #  0x03 -> CONTROL CHARACTER
-    u'\x04'     #  0x04 -> CONTROL CHARACTER
-    u'\x05'     #  0x05 -> CONTROL CHARACTER
-    u'\x06'     #  0x06 -> CONTROL CHARACTER
-    u'\x07'     #  0x07 -> CONTROL CHARACTER
-    u'\x08'     #  0x08 -> CONTROL CHARACTER
-    u'\t'       #  0x09 -> CONTROL CHARACTER
-    u'\n'       #  0x0A -> CONTROL CHARACTER
-    u'\x0b'     #  0x0B -> CONTROL CHARACTER
-    u'\x0c'     #  0x0C -> CONTROL CHARACTER
-    u'\r'       #  0x0D -> CONTROL CHARACTER
-    u'\x0e'     #  0x0E -> CONTROL CHARACTER
-    u'\x0f'     #  0x0F -> CONTROL CHARACTER
-    u'\x10'     #  0x10 -> CONTROL CHARACTER
-    u'\x11'     #  0x11 -> CONTROL CHARACTER
-    u'\x12'     #  0x12 -> CONTROL CHARACTER
-    u'\x13'     #  0x13 -> CONTROL CHARACTER
-    u'\x14'     #  0x14 -> CONTROL CHARACTER
-    u'\x15'     #  0x15 -> CONTROL CHARACTER
-    u'\x16'     #  0x16 -> CONTROL CHARACTER
-    u'\x17'     #  0x17 -> CONTROL CHARACTER
-    u'\x18'     #  0x18 -> CONTROL CHARACTER
-    u'\x19'     #  0x19 -> CONTROL CHARACTER
-    u'\x1a'     #  0x1A -> CONTROL CHARACTER
-    u'\x1b'     #  0x1B -> CONTROL CHARACTER
-    u'\x1c'     #  0x1C -> CONTROL CHARACTER
-    u'\x1d'     #  0x1D -> CONTROL CHARACTER
-    u'\x1e'     #  0x1E -> CONTROL CHARACTER
-    u'\x1f'     #  0x1F -> CONTROL CHARACTER
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> CONTROL CHARACTER
-    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xb9'     #  0x81 -> SUPERSCRIPT ONE
-    u'\xb2'     #  0x82 -> SUPERSCRIPT TWO
-    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xb3'     #  0x84 -> SUPERSCRIPT THREE
-    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\u0385'   #  0x87 -> GREEK DIALYTIKA TONOS
-    u'\xe0'     #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'     #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\u0384'   #  0x8B -> GREEK TONOS
-    u'\xa8'     #  0x8C -> DIAERESIS
-    u'\xe7'     #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'     #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'     #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xa3'     #  0x92 -> POUND SIGN
-    u'\u2122'   #  0x93 -> TRADE MARK SIGN
-    u'\xee'     #  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\u2022'   #  0x96 -> BULLET
-    u'\xbd'     #  0x97 -> VULGAR FRACTION ONE HALF
-    u'\u2030'   #  0x98 -> PER MILLE SIGN
-    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xa6'     #  0x9B -> BROKEN BAR
-    u'\u20ac'   #  0x9C -> EURO SIGN # before Mac OS 9.2.2, was SOFT HYPHEN
-    u'\xf9'     #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'     #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'   #  0xA0 -> DAGGER
-    u'\u0393'   #  0xA1 -> GREEK CAPITAL LETTER GAMMA
-    u'\u0394'   #  0xA2 -> GREEK CAPITAL LETTER DELTA
-    u'\u0398'   #  0xA3 -> GREEK CAPITAL LETTER THETA
-    u'\u039b'   #  0xA4 -> GREEK CAPITAL LETTER LAMDA
-    u'\u039e'   #  0xA5 -> GREEK CAPITAL LETTER XI
-    u'\u03a0'   #  0xA6 -> GREEK CAPITAL LETTER PI
-    u'\xdf'     #  0xA7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'     #  0xA8 -> REGISTERED SIGN
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u03a3'   #  0xAA -> GREEK CAPITAL LETTER SIGMA
-    u'\u03aa'   #  0xAB -> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-    u'\xa7'     #  0xAC -> SECTION SIGN
-    u'\u2260'   #  0xAD -> NOT EQUAL TO
-    u'\xb0'     #  0xAE -> DEGREE SIGN
-    u'\xb7'     #  0xAF -> MIDDLE DOT
-    u'\u0391'   #  0xB0 -> GREEK CAPITAL LETTER ALPHA
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'     #  0xB4 -> YEN SIGN
-    u'\u0392'   #  0xB5 -> GREEK CAPITAL LETTER BETA
-    u'\u0395'   #  0xB6 -> GREEK CAPITAL LETTER EPSILON
-    u'\u0396'   #  0xB7 -> GREEK CAPITAL LETTER ZETA
-    u'\u0397'   #  0xB8 -> GREEK CAPITAL LETTER ETA
-    u'\u0399'   #  0xB9 -> GREEK CAPITAL LETTER IOTA
-    u'\u039a'   #  0xBA -> GREEK CAPITAL LETTER KAPPA
-    u'\u039c'   #  0xBB -> GREEK CAPITAL LETTER MU
-    u'\u03a6'   #  0xBC -> GREEK CAPITAL LETTER PHI
-    u'\u03ab'   #  0xBD -> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-    u'\u03a8'   #  0xBE -> GREEK CAPITAL LETTER PSI
-    u'\u03a9'   #  0xBF -> GREEK CAPITAL LETTER OMEGA
-    u'\u03ac'   #  0xC0 -> GREEK SMALL LETTER ALPHA WITH TONOS
-    u'\u039d'   #  0xC1 -> GREEK CAPITAL LETTER NU
-    u'\xac'     #  0xC2 -> NOT SIGN
-    u'\u039f'   #  0xC3 -> GREEK CAPITAL LETTER OMICRON
-    u'\u03a1'   #  0xC4 -> GREEK CAPITAL LETTER RHO
-    u'\u2248'   #  0xC5 -> ALMOST EQUAL TO
-    u'\u03a4'   #  0xC6 -> GREEK CAPITAL LETTER TAU
-    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'     #  0xCA -> NO-BREAK SPACE
-    u'\u03a5'   #  0xCB -> GREEK CAPITAL LETTER UPSILON
-    u'\u03a7'   #  0xCC -> GREEK CAPITAL LETTER CHI
-    u'\u0386'   #  0xCD -> GREEK CAPITAL LETTER ALPHA WITH TONOS
-    u'\u0388'   #  0xCE -> GREEK CAPITAL LETTER EPSILON WITH TONOS
-    u'\u0153'   #  0xCF -> LATIN SMALL LIGATURE OE
-    u'\u2013'   #  0xD0 -> EN DASH
-    u'\u2015'   #  0xD1 -> HORIZONTAL BAR
-    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'     #  0xD6 -> DIVISION SIGN
-    u'\u0389'   #  0xD7 -> GREEK CAPITAL LETTER ETA WITH TONOS
-    u'\u038a'   #  0xD8 -> GREEK CAPITAL LETTER IOTA WITH TONOS
-    u'\u038c'   #  0xD9 -> GREEK CAPITAL LETTER OMICRON WITH TONOS
-    u'\u038e'   #  0xDA -> GREEK CAPITAL LETTER UPSILON WITH TONOS
-    u'\u03ad'   #  0xDB -> GREEK SMALL LETTER EPSILON WITH TONOS
-    u'\u03ae'   #  0xDC -> GREEK SMALL LETTER ETA WITH TONOS
-    u'\u03af'   #  0xDD -> GREEK SMALL LETTER IOTA WITH TONOS
-    u'\u03cc'   #  0xDE -> GREEK SMALL LETTER OMICRON WITH TONOS
-    u'\u038f'   #  0xDF -> GREEK CAPITAL LETTER OMEGA WITH TONOS
-    u'\u03cd'   #  0xE0 -> GREEK SMALL LETTER UPSILON WITH TONOS
-    u'\u03b1'   #  0xE1 -> GREEK SMALL LETTER ALPHA
-    u'\u03b2'   #  0xE2 -> GREEK SMALL LETTER BETA
-    u'\u03c8'   #  0xE3 -> GREEK SMALL LETTER PSI
-    u'\u03b4'   #  0xE4 -> GREEK SMALL LETTER DELTA
-    u'\u03b5'   #  0xE5 -> GREEK SMALL LETTER EPSILON
-    u'\u03c6'   #  0xE6 -> GREEK SMALL LETTER PHI
-    u'\u03b3'   #  0xE7 -> GREEK SMALL LETTER GAMMA
-    u'\u03b7'   #  0xE8 -> GREEK SMALL LETTER ETA
-    u'\u03b9'   #  0xE9 -> GREEK SMALL LETTER IOTA
-    u'\u03be'   #  0xEA -> GREEK SMALL LETTER XI
-    u'\u03ba'   #  0xEB -> GREEK SMALL LETTER KAPPA
-    u'\u03bb'   #  0xEC -> GREEK SMALL LETTER LAMDA
-    u'\u03bc'   #  0xED -> GREEK SMALL LETTER MU
-    u'\u03bd'   #  0xEE -> GREEK SMALL LETTER NU
-    u'\u03bf'   #  0xEF -> GREEK SMALL LETTER OMICRON
-    u'\u03c0'   #  0xF0 -> GREEK SMALL LETTER PI
-    u'\u03ce'   #  0xF1 -> GREEK SMALL LETTER OMEGA WITH TONOS
-    u'\u03c1'   #  0xF2 -> GREEK SMALL LETTER RHO
-    u'\u03c3'   #  0xF3 -> GREEK SMALL LETTER SIGMA
-    u'\u03c4'   #  0xF4 -> GREEK SMALL LETTER TAU
-    u'\u03b8'   #  0xF5 -> GREEK SMALL LETTER THETA
-    u'\u03c9'   #  0xF6 -> GREEK SMALL LETTER OMEGA
-    u'\u03c2'   #  0xF7 -> GREEK SMALL LETTER FINAL SIGMA
-    u'\u03c7'   #  0xF8 -> GREEK SMALL LETTER CHI
-    u'\u03c5'   #  0xF9 -> GREEK SMALL LETTER UPSILON
-    u'\u03b6'   #  0xFA -> GREEK SMALL LETTER ZETA
-    u'\u03ca'   #  0xFB -> GREEK SMALL LETTER IOTA WITH DIALYTIKA
-    u'\u03cb'   #  0xFC -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-    u'\u0390'   #  0xFD -> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-    u'\u03b0'   #  0xFE -> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-    u'\xad'     #  0xFF -> SOFT HYPHEN # before Mac OS 9.2.2, was undefined
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_iceland.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_iceland.py
deleted file mode 100644
index 7045dc1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_iceland.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec mac_iceland generated from 'MAPPINGS/VENDORS/APPLE/ICELAND.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='mac-iceland',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> CONTROL CHARACTER
-    u'\x01'     #  0x01 -> CONTROL CHARACTER
-    u'\x02'     #  0x02 -> CONTROL CHARACTER
-    u'\x03'     #  0x03 -> CONTROL CHARACTER
-    u'\x04'     #  0x04 -> CONTROL CHARACTER
-    u'\x05'     #  0x05 -> CONTROL CHARACTER
-    u'\x06'     #  0x06 -> CONTROL CHARACTER
-    u'\x07'     #  0x07 -> CONTROL CHARACTER
-    u'\x08'     #  0x08 -> CONTROL CHARACTER
-    u'\t'       #  0x09 -> CONTROL CHARACTER
-    u'\n'       #  0x0A -> CONTROL CHARACTER
-    u'\x0b'     #  0x0B -> CONTROL CHARACTER
-    u'\x0c'     #  0x0C -> CONTROL CHARACTER
-    u'\r'       #  0x0D -> CONTROL CHARACTER
-    u'\x0e'     #  0x0E -> CONTROL CHARACTER
-    u'\x0f'     #  0x0F -> CONTROL CHARACTER
-    u'\x10'     #  0x10 -> CONTROL CHARACTER
-    u'\x11'     #  0x11 -> CONTROL CHARACTER
-    u'\x12'     #  0x12 -> CONTROL CHARACTER
-    u'\x13'     #  0x13 -> CONTROL CHARACTER
-    u'\x14'     #  0x14 -> CONTROL CHARACTER
-    u'\x15'     #  0x15 -> CONTROL CHARACTER
-    u'\x16'     #  0x16 -> CONTROL CHARACTER
-    u'\x17'     #  0x17 -> CONTROL CHARACTER
-    u'\x18'     #  0x18 -> CONTROL CHARACTER
-    u'\x19'     #  0x19 -> CONTROL CHARACTER
-    u'\x1a'     #  0x1A -> CONTROL CHARACTER
-    u'\x1b'     #  0x1B -> CONTROL CHARACTER
-    u'\x1c'     #  0x1C -> CONTROL CHARACTER
-    u'\x1d'     #  0x1D -> CONTROL CHARACTER
-    u'\x1e'     #  0x1E -> CONTROL CHARACTER
-    u'\x1f'     #  0x1F -> CONTROL CHARACTER
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> CONTROL CHARACTER
-    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'     #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xd1'     #  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'     #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe0'     #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'     #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'     #  0x8B -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'     #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'     #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'     #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'     #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xed'     #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xec'     #  0x93 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xee'     #  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf1'     #  0x96 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf3'     #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf2'     #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'     #  0x9B -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'     #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'     #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'     #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\xdd'     #  0xA0 -> LATIN CAPITAL LETTER Y WITH ACUTE
-    u'\xb0'     #  0xA1 -> DEGREE SIGN
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa7'     #  0xA4 -> SECTION SIGN
-    u'\u2022'   #  0xA5 -> BULLET
-    u'\xb6'     #  0xA6 -> PILCROW SIGN
-    u'\xdf'     #  0xA7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'     #  0xA8 -> REGISTERED SIGN
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u2122'   #  0xAA -> TRADE MARK SIGN
-    u'\xb4'     #  0xAB -> ACUTE ACCENT
-    u'\xa8'     #  0xAC -> DIAERESIS
-    u'\u2260'   #  0xAD -> NOT EQUAL TO
-    u'\xc6'     #  0xAE -> LATIN CAPITAL LETTER AE
-    u'\xd8'     #  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u221e'   #  0xB0 -> INFINITY
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'     #  0xB4 -> YEN SIGN
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\u2202'   #  0xB6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'   #  0xB7 -> N-ARY SUMMATION
-    u'\u220f'   #  0xB8 -> N-ARY PRODUCT
-    u'\u03c0'   #  0xB9 -> GREEK SMALL LETTER PI
-    u'\u222b'   #  0xBA -> INTEGRAL
-    u'\xaa'     #  0xBB -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0xBC -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'   #  0xBD -> GREEK CAPITAL LETTER OMEGA
-    u'\xe6'     #  0xBE -> LATIN SMALL LETTER AE
-    u'\xf8'     #  0xBF -> LATIN SMALL LETTER O WITH STROKE
-    u'\xbf'     #  0xC0 -> INVERTED QUESTION MARK
-    u'\xa1'     #  0xC1 -> INVERTED EXCLAMATION MARK
-    u'\xac'     #  0xC2 -> NOT SIGN
-    u'\u221a'   #  0xC3 -> SQUARE ROOT
-    u'\u0192'   #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'   #  0xC5 -> ALMOST EQUAL TO
-    u'\u2206'   #  0xC6 -> INCREMENT
-    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'     #  0xCA -> NO-BREAK SPACE
-    u'\xc0'     #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'     #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'     #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'   #  0xCE -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'   #  0xCF -> LATIN SMALL LIGATURE OE
-    u'\u2013'   #  0xD0 -> EN DASH
-    u'\u2014'   #  0xD1 -> EM DASH
-    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'     #  0xD6 -> DIVISION SIGN
-    u'\u25ca'   #  0xD7 -> LOZENGE
-    u'\xff'     #  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\u0178'   #  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u2044'   #  0xDA -> FRACTION SLASH
-    u'\u20ac'   #  0xDB -> EURO SIGN
-    u'\xd0'     #  0xDC -> LATIN CAPITAL LETTER ETH
-    u'\xf0'     #  0xDD -> LATIN SMALL LETTER ETH
-    u'\xde'     #  0xDE -> LATIN CAPITAL LETTER THORN
-    u'\xfe'     #  0xDF -> LATIN SMALL LETTER THORN
-    u'\xfd'     #  0xE0 -> LATIN SMALL LETTER Y WITH ACUTE
-    u'\xb7'     #  0xE1 -> MIDDLE DOT
-    u'\u201a'   #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'   #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'   #  0xE4 -> PER MILLE SIGN
-    u'\xc2'     #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xca'     #  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xc1'     #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xcb'     #  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'     #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'     #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'     #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\uf8ff'   #  0xF0 -> Apple logo
-    u'\xd2'     #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'     #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'     #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\u0131'   #  0xF5 -> LATIN SMALL LETTER DOTLESS I
-    u'\u02c6'   #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'   #  0xF7 -> SMALL TILDE
-    u'\xaf'     #  0xF8 -> MACRON
-    u'\u02d8'   #  0xF9 -> BREVE
-    u'\u02d9'   #  0xFA -> DOT ABOVE
-    u'\u02da'   #  0xFB -> RING ABOVE
-    u'\xb8'     #  0xFC -> CEDILLA
-    u'\u02dd'   #  0xFD -> DOUBLE ACUTE ACCENT
-    u'\u02db'   #  0xFE -> OGONEK
-    u'\u02c7'   #  0xFF -> CARON
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_latin2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_latin2.py
deleted file mode 100644
index 324b4af..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_latin2.py
+++ /dev/null
@@ -1,183 +0,0 @@
-""" Python Character Mapping Codec generated from 'LATIN2.TXT' with gencodec.py.
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-(c) Copyright 2000 Guido van Rossum.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_map)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_map)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='mac-latin2',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-        0x0080: 0x00c4, # LATIN CAPITAL LETTER A WITH DIAERESIS
-        0x0081: 0x0100, # LATIN CAPITAL LETTER A WITH MACRON
-        0x0082: 0x0101, # LATIN SMALL LETTER A WITH MACRON
-        0x0083: 0x00c9, # LATIN CAPITAL LETTER E WITH ACUTE
-        0x0084: 0x0104, # LATIN CAPITAL LETTER A WITH OGONEK
-        0x0085: 0x00d6, # LATIN CAPITAL LETTER O WITH DIAERESIS
-        0x0086: 0x00dc, # LATIN CAPITAL LETTER U WITH DIAERESIS
-        0x0087: 0x00e1, # LATIN SMALL LETTER A WITH ACUTE
-        0x0088: 0x0105, # LATIN SMALL LETTER A WITH OGONEK
-        0x0089: 0x010c, # LATIN CAPITAL LETTER C WITH CARON
-        0x008a: 0x00e4, # LATIN SMALL LETTER A WITH DIAERESIS
-        0x008b: 0x010d, # LATIN SMALL LETTER C WITH CARON
-        0x008c: 0x0106, # LATIN CAPITAL LETTER C WITH ACUTE
-        0x008d: 0x0107, # LATIN SMALL LETTER C WITH ACUTE
-        0x008e: 0x00e9, # LATIN SMALL LETTER E WITH ACUTE
-        0x008f: 0x0179, # LATIN CAPITAL LETTER Z WITH ACUTE
-        0x0090: 0x017a, # LATIN SMALL LETTER Z WITH ACUTE
-        0x0091: 0x010e, # LATIN CAPITAL LETTER D WITH CARON
-        0x0092: 0x00ed, # LATIN SMALL LETTER I WITH ACUTE
-        0x0093: 0x010f, # LATIN SMALL LETTER D WITH CARON
-        0x0094: 0x0112, # LATIN CAPITAL LETTER E WITH MACRON
-        0x0095: 0x0113, # LATIN SMALL LETTER E WITH MACRON
-        0x0096: 0x0116, # LATIN CAPITAL LETTER E WITH DOT ABOVE
-        0x0097: 0x00f3, # LATIN SMALL LETTER O WITH ACUTE
-        0x0098: 0x0117, # LATIN SMALL LETTER E WITH DOT ABOVE
-        0x0099: 0x00f4, # LATIN SMALL LETTER O WITH CIRCUMFLEX
-        0x009a: 0x00f6, # LATIN SMALL LETTER O WITH DIAERESIS
-        0x009b: 0x00f5, # LATIN SMALL LETTER O WITH TILDE
-        0x009c: 0x00fa, # LATIN SMALL LETTER U WITH ACUTE
-        0x009d: 0x011a, # LATIN CAPITAL LETTER E WITH CARON
-        0x009e: 0x011b, # LATIN SMALL LETTER E WITH CARON
-        0x009f: 0x00fc, # LATIN SMALL LETTER U WITH DIAERESIS
-        0x00a0: 0x2020, # DAGGER
-        0x00a1: 0x00b0, # DEGREE SIGN
-        0x00a2: 0x0118, # LATIN CAPITAL LETTER E WITH OGONEK
-        0x00a4: 0x00a7, # SECTION SIGN
-        0x00a5: 0x2022, # BULLET
-        0x00a6: 0x00b6, # PILCROW SIGN
-        0x00a7: 0x00df, # LATIN SMALL LETTER SHARP S
-        0x00a8: 0x00ae, # REGISTERED SIGN
-        0x00aa: 0x2122, # TRADE MARK SIGN
-        0x00ab: 0x0119, # LATIN SMALL LETTER E WITH OGONEK
-        0x00ac: 0x00a8, # DIAERESIS
-        0x00ad: 0x2260, # NOT EQUAL TO
-        0x00ae: 0x0123, # LATIN SMALL LETTER G WITH CEDILLA
-        0x00af: 0x012e, # LATIN CAPITAL LETTER I WITH OGONEK
-        0x00b0: 0x012f, # LATIN SMALL LETTER I WITH OGONEK
-        0x00b1: 0x012a, # LATIN CAPITAL LETTER I WITH MACRON
-        0x00b2: 0x2264, # LESS-THAN OR EQUAL TO
-        0x00b3: 0x2265, # GREATER-THAN OR EQUAL TO
-        0x00b4: 0x012b, # LATIN SMALL LETTER I WITH MACRON
-        0x00b5: 0x0136, # LATIN CAPITAL LETTER K WITH CEDILLA
-        0x00b6: 0x2202, # PARTIAL DIFFERENTIAL
-        0x00b7: 0x2211, # N-ARY SUMMATION
-        0x00b8: 0x0142, # LATIN SMALL LETTER L WITH STROKE
-        0x00b9: 0x013b, # LATIN CAPITAL LETTER L WITH CEDILLA
-        0x00ba: 0x013c, # LATIN SMALL LETTER L WITH CEDILLA
-        0x00bb: 0x013d, # LATIN CAPITAL LETTER L WITH CARON
-        0x00bc: 0x013e, # LATIN SMALL LETTER L WITH CARON
-        0x00bd: 0x0139, # LATIN CAPITAL LETTER L WITH ACUTE
-        0x00be: 0x013a, # LATIN SMALL LETTER L WITH ACUTE
-        0x00bf: 0x0145, # LATIN CAPITAL LETTER N WITH CEDILLA
-        0x00c0: 0x0146, # LATIN SMALL LETTER N WITH CEDILLA
-        0x00c1: 0x0143, # LATIN CAPITAL LETTER N WITH ACUTE
-        0x00c2: 0x00ac, # NOT SIGN
-        0x00c3: 0x221a, # SQUARE ROOT
-        0x00c4: 0x0144, # LATIN SMALL LETTER N WITH ACUTE
-        0x00c5: 0x0147, # LATIN CAPITAL LETTER N WITH CARON
-        0x00c6: 0x2206, # INCREMENT
-        0x00c7: 0x00ab, # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-        0x00c8: 0x00bb, # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-        0x00c9: 0x2026, # HORIZONTAL ELLIPSIS
-        0x00ca: 0x00a0, # NO-BREAK SPACE
-        0x00cb: 0x0148, # LATIN SMALL LETTER N WITH CARON
-        0x00cc: 0x0150, # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-        0x00cd: 0x00d5, # LATIN CAPITAL LETTER O WITH TILDE
-        0x00ce: 0x0151, # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-        0x00cf: 0x014c, # LATIN CAPITAL LETTER O WITH MACRON
-        0x00d0: 0x2013, # EN DASH
-        0x00d1: 0x2014, # EM DASH
-        0x00d2: 0x201c, # LEFT DOUBLE QUOTATION MARK
-        0x00d3: 0x201d, # RIGHT DOUBLE QUOTATION MARK
-        0x00d4: 0x2018, # LEFT SINGLE QUOTATION MARK
-        0x00d5: 0x2019, # RIGHT SINGLE QUOTATION MARK
-        0x00d6: 0x00f7, # DIVISION SIGN
-        0x00d7: 0x25ca, # LOZENGE
-        0x00d8: 0x014d, # LATIN SMALL LETTER O WITH MACRON
-        0x00d9: 0x0154, # LATIN CAPITAL LETTER R WITH ACUTE
-        0x00da: 0x0155, # LATIN SMALL LETTER R WITH ACUTE
-        0x00db: 0x0158, # LATIN CAPITAL LETTER R WITH CARON
-        0x00dc: 0x2039, # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-        0x00dd: 0x203a, # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-        0x00de: 0x0159, # LATIN SMALL LETTER R WITH CARON
-        0x00df: 0x0156, # LATIN CAPITAL LETTER R WITH CEDILLA
-        0x00e0: 0x0157, # LATIN SMALL LETTER R WITH CEDILLA
-        0x00e1: 0x0160, # LATIN CAPITAL LETTER S WITH CARON
-        0x00e2: 0x201a, # SINGLE LOW-9 QUOTATION MARK
-        0x00e3: 0x201e, # DOUBLE LOW-9 QUOTATION MARK
-        0x00e4: 0x0161, # LATIN SMALL LETTER S WITH CARON
-        0x00e5: 0x015a, # LATIN CAPITAL LETTER S WITH ACUTE
-        0x00e6: 0x015b, # LATIN SMALL LETTER S WITH ACUTE
-        0x00e7: 0x00c1, # LATIN CAPITAL LETTER A WITH ACUTE
-        0x00e8: 0x0164, # LATIN CAPITAL LETTER T WITH CARON
-        0x00e9: 0x0165, # LATIN SMALL LETTER T WITH CARON
-        0x00ea: 0x00cd, # LATIN CAPITAL LETTER I WITH ACUTE
-        0x00eb: 0x017d, # LATIN CAPITAL LETTER Z WITH CARON
-        0x00ec: 0x017e, # LATIN SMALL LETTER Z WITH CARON
-        0x00ed: 0x016a, # LATIN CAPITAL LETTER U WITH MACRON
-        0x00ee: 0x00d3, # LATIN CAPITAL LETTER O WITH ACUTE
-        0x00ef: 0x00d4, # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-        0x00f0: 0x016b, # LATIN SMALL LETTER U WITH MACRON
-        0x00f1: 0x016e, # LATIN CAPITAL LETTER U WITH RING ABOVE
-        0x00f2: 0x00da, # LATIN CAPITAL LETTER U WITH ACUTE
-        0x00f3: 0x016f, # LATIN SMALL LETTER U WITH RING ABOVE
-        0x00f4: 0x0170, # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-        0x00f5: 0x0171, # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-        0x00f6: 0x0172, # LATIN CAPITAL LETTER U WITH OGONEK
-        0x00f7: 0x0173, # LATIN SMALL LETTER U WITH OGONEK
-        0x00f8: 0x00dd, # LATIN CAPITAL LETTER Y WITH ACUTE
-        0x00f9: 0x00fd, # LATIN SMALL LETTER Y WITH ACUTE
-        0x00fa: 0x0137, # LATIN SMALL LETTER K WITH CEDILLA
-        0x00fb: 0x017b, # LATIN CAPITAL LETTER Z WITH DOT ABOVE
-        0x00fc: 0x0141, # LATIN CAPITAL LETTER L WITH STROKE
-        0x00fd: 0x017c, # LATIN SMALL LETTER Z WITH DOT ABOVE
-        0x00fe: 0x0122, # LATIN CAPITAL LETTER G WITH CEDILLA
-        0x00ff: 0x02c7, # CARON
-})
-
-### Encoding Map
-
-encoding_map = codecs.make_encoding_map(decoding_map)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_roman.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_roman.py
deleted file mode 100644
index 1098501..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_roman.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec mac_roman generated from 'MAPPINGS/VENDORS/APPLE/ROMAN.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='mac-roman',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> CONTROL CHARACTER
-    u'\x01'     #  0x01 -> CONTROL CHARACTER
-    u'\x02'     #  0x02 -> CONTROL CHARACTER
-    u'\x03'     #  0x03 -> CONTROL CHARACTER
-    u'\x04'     #  0x04 -> CONTROL CHARACTER
-    u'\x05'     #  0x05 -> CONTROL CHARACTER
-    u'\x06'     #  0x06 -> CONTROL CHARACTER
-    u'\x07'     #  0x07 -> CONTROL CHARACTER
-    u'\x08'     #  0x08 -> CONTROL CHARACTER
-    u'\t'       #  0x09 -> CONTROL CHARACTER
-    u'\n'       #  0x0A -> CONTROL CHARACTER
-    u'\x0b'     #  0x0B -> CONTROL CHARACTER
-    u'\x0c'     #  0x0C -> CONTROL CHARACTER
-    u'\r'       #  0x0D -> CONTROL CHARACTER
-    u'\x0e'     #  0x0E -> CONTROL CHARACTER
-    u'\x0f'     #  0x0F -> CONTROL CHARACTER
-    u'\x10'     #  0x10 -> CONTROL CHARACTER
-    u'\x11'     #  0x11 -> CONTROL CHARACTER
-    u'\x12'     #  0x12 -> CONTROL CHARACTER
-    u'\x13'     #  0x13 -> CONTROL CHARACTER
-    u'\x14'     #  0x14 -> CONTROL CHARACTER
-    u'\x15'     #  0x15 -> CONTROL CHARACTER
-    u'\x16'     #  0x16 -> CONTROL CHARACTER
-    u'\x17'     #  0x17 -> CONTROL CHARACTER
-    u'\x18'     #  0x18 -> CONTROL CHARACTER
-    u'\x19'     #  0x19 -> CONTROL CHARACTER
-    u'\x1a'     #  0x1A -> CONTROL CHARACTER
-    u'\x1b'     #  0x1B -> CONTROL CHARACTER
-    u'\x1c'     #  0x1C -> CONTROL CHARACTER
-    u'\x1d'     #  0x1D -> CONTROL CHARACTER
-    u'\x1e'     #  0x1E -> CONTROL CHARACTER
-    u'\x1f'     #  0x1F -> CONTROL CHARACTER
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> CONTROL CHARACTER
-    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'     #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xd1'     #  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'     #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe0'     #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'     #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'     #  0x8B -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'     #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'     #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'     #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'     #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xed'     #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xec'     #  0x93 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xee'     #  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf1'     #  0x96 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf3'     #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf2'     #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'     #  0x9B -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'     #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'     #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'     #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'   #  0xA0 -> DAGGER
-    u'\xb0'     #  0xA1 -> DEGREE SIGN
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa7'     #  0xA4 -> SECTION SIGN
-    u'\u2022'   #  0xA5 -> BULLET
-    u'\xb6'     #  0xA6 -> PILCROW SIGN
-    u'\xdf'     #  0xA7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'     #  0xA8 -> REGISTERED SIGN
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u2122'   #  0xAA -> TRADE MARK SIGN
-    u'\xb4'     #  0xAB -> ACUTE ACCENT
-    u'\xa8'     #  0xAC -> DIAERESIS
-    u'\u2260'   #  0xAD -> NOT EQUAL TO
-    u'\xc6'     #  0xAE -> LATIN CAPITAL LETTER AE
-    u'\xd8'     #  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u221e'   #  0xB0 -> INFINITY
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'     #  0xB4 -> YEN SIGN
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\u2202'   #  0xB6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'   #  0xB7 -> N-ARY SUMMATION
-    u'\u220f'   #  0xB8 -> N-ARY PRODUCT
-    u'\u03c0'   #  0xB9 -> GREEK SMALL LETTER PI
-    u'\u222b'   #  0xBA -> INTEGRAL
-    u'\xaa'     #  0xBB -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0xBC -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'   #  0xBD -> GREEK CAPITAL LETTER OMEGA
-    u'\xe6'     #  0xBE -> LATIN SMALL LETTER AE
-    u'\xf8'     #  0xBF -> LATIN SMALL LETTER O WITH STROKE
-    u'\xbf'     #  0xC0 -> INVERTED QUESTION MARK
-    u'\xa1'     #  0xC1 -> INVERTED EXCLAMATION MARK
-    u'\xac'     #  0xC2 -> NOT SIGN
-    u'\u221a'   #  0xC3 -> SQUARE ROOT
-    u'\u0192'   #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'   #  0xC5 -> ALMOST EQUAL TO
-    u'\u2206'   #  0xC6 -> INCREMENT
-    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'     #  0xCA -> NO-BREAK SPACE
-    u'\xc0'     #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'     #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'     #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'   #  0xCE -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'   #  0xCF -> LATIN SMALL LIGATURE OE
-    u'\u2013'   #  0xD0 -> EN DASH
-    u'\u2014'   #  0xD1 -> EM DASH
-    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'     #  0xD6 -> DIVISION SIGN
-    u'\u25ca'   #  0xD7 -> LOZENGE
-    u'\xff'     #  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\u0178'   #  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u2044'   #  0xDA -> FRACTION SLASH
-    u'\u20ac'   #  0xDB -> EURO SIGN
-    u'\u2039'   #  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u203a'   #  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\ufb01'   #  0xDE -> LATIN SMALL LIGATURE FI
-    u'\ufb02'   #  0xDF -> LATIN SMALL LIGATURE FL
-    u'\u2021'   #  0xE0 -> DOUBLE DAGGER
-    u'\xb7'     #  0xE1 -> MIDDLE DOT
-    u'\u201a'   #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'   #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'   #  0xE4 -> PER MILLE SIGN
-    u'\xc2'     #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xca'     #  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xc1'     #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xcb'     #  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'     #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'     #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'     #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\uf8ff'   #  0xF0 -> Apple logo
-    u'\xd2'     #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'     #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'     #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\u0131'   #  0xF5 -> LATIN SMALL LETTER DOTLESS I
-    u'\u02c6'   #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'   #  0xF7 -> SMALL TILDE
-    u'\xaf'     #  0xF8 -> MACRON
-    u'\u02d8'   #  0xF9 -> BREVE
-    u'\u02d9'   #  0xFA -> DOT ABOVE
-    u'\u02da'   #  0xFB -> RING ABOVE
-    u'\xb8'     #  0xFC -> CEDILLA
-    u'\u02dd'   #  0xFD -> DOUBLE ACUTE ACCENT
-    u'\u02db'   #  0xFE -> OGONEK
-    u'\u02c7'   #  0xFF -> CARON
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_romanian.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_romanian.py
deleted file mode 100644
index 26a5e53..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_romanian.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec mac_romanian generated from 'MAPPINGS/VENDORS/APPLE/ROMANIAN.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='mac-romanian',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> CONTROL CHARACTER
-    u'\x01'     #  0x01 -> CONTROL CHARACTER
-    u'\x02'     #  0x02 -> CONTROL CHARACTER
-    u'\x03'     #  0x03 -> CONTROL CHARACTER
-    u'\x04'     #  0x04 -> CONTROL CHARACTER
-    u'\x05'     #  0x05 -> CONTROL CHARACTER
-    u'\x06'     #  0x06 -> CONTROL CHARACTER
-    u'\x07'     #  0x07 -> CONTROL CHARACTER
-    u'\x08'     #  0x08 -> CONTROL CHARACTER
-    u'\t'       #  0x09 -> CONTROL CHARACTER
-    u'\n'       #  0x0A -> CONTROL CHARACTER
-    u'\x0b'     #  0x0B -> CONTROL CHARACTER
-    u'\x0c'     #  0x0C -> CONTROL CHARACTER
-    u'\r'       #  0x0D -> CONTROL CHARACTER
-    u'\x0e'     #  0x0E -> CONTROL CHARACTER
-    u'\x0f'     #  0x0F -> CONTROL CHARACTER
-    u'\x10'     #  0x10 -> CONTROL CHARACTER
-    u'\x11'     #  0x11 -> CONTROL CHARACTER
-    u'\x12'     #  0x12 -> CONTROL CHARACTER
-    u'\x13'     #  0x13 -> CONTROL CHARACTER
-    u'\x14'     #  0x14 -> CONTROL CHARACTER
-    u'\x15'     #  0x15 -> CONTROL CHARACTER
-    u'\x16'     #  0x16 -> CONTROL CHARACTER
-    u'\x17'     #  0x17 -> CONTROL CHARACTER
-    u'\x18'     #  0x18 -> CONTROL CHARACTER
-    u'\x19'     #  0x19 -> CONTROL CHARACTER
-    u'\x1a'     #  0x1A -> CONTROL CHARACTER
-    u'\x1b'     #  0x1B -> CONTROL CHARACTER
-    u'\x1c'     #  0x1C -> CONTROL CHARACTER
-    u'\x1d'     #  0x1D -> CONTROL CHARACTER
-    u'\x1e'     #  0x1E -> CONTROL CHARACTER
-    u'\x1f'     #  0x1F -> CONTROL CHARACTER
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> CONTROL CHARACTER
-    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'     #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xd1'     #  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'     #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe0'     #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'     #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'     #  0x8B -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'     #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'     #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'     #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'     #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xed'     #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xec'     #  0x93 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xee'     #  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf1'     #  0x96 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf3'     #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf2'     #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'     #  0x9B -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'     #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'     #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'     #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'   #  0xA0 -> DAGGER
-    u'\xb0'     #  0xA1 -> DEGREE SIGN
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa7'     #  0xA4 -> SECTION SIGN
-    u'\u2022'   #  0xA5 -> BULLET
-    u'\xb6'     #  0xA6 -> PILCROW SIGN
-    u'\xdf'     #  0xA7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'     #  0xA8 -> REGISTERED SIGN
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u2122'   #  0xAA -> TRADE MARK SIGN
-    u'\xb4'     #  0xAB -> ACUTE ACCENT
-    u'\xa8'     #  0xAC -> DIAERESIS
-    u'\u2260'   #  0xAD -> NOT EQUAL TO
-    u'\u0102'   #  0xAE -> LATIN CAPITAL LETTER A WITH BREVE
-    u'\u0218'   #  0xAF -> LATIN CAPITAL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
-    u'\u221e'   #  0xB0 -> INFINITY
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'     #  0xB4 -> YEN SIGN
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\u2202'   #  0xB6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'   #  0xB7 -> N-ARY SUMMATION
-    u'\u220f'   #  0xB8 -> N-ARY PRODUCT
-    u'\u03c0'   #  0xB9 -> GREEK SMALL LETTER PI
-    u'\u222b'   #  0xBA -> INTEGRAL
-    u'\xaa'     #  0xBB -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0xBC -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'   #  0xBD -> GREEK CAPITAL LETTER OMEGA
-    u'\u0103'   #  0xBE -> LATIN SMALL LETTER A WITH BREVE
-    u'\u0219'   #  0xBF -> LATIN SMALL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
-    u'\xbf'     #  0xC0 -> INVERTED QUESTION MARK
-    u'\xa1'     #  0xC1 -> INVERTED EXCLAMATION MARK
-    u'\xac'     #  0xC2 -> NOT SIGN
-    u'\u221a'   #  0xC3 -> SQUARE ROOT
-    u'\u0192'   #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'   #  0xC5 -> ALMOST EQUAL TO
-    u'\u2206'   #  0xC6 -> INCREMENT
-    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'     #  0xCA -> NO-BREAK SPACE
-    u'\xc0'     #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'     #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'     #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'   #  0xCE -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'   #  0xCF -> LATIN SMALL LIGATURE OE
-    u'\u2013'   #  0xD0 -> EN DASH
-    u'\u2014'   #  0xD1 -> EM DASH
-    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'     #  0xD6 -> DIVISION SIGN
-    u'\u25ca'   #  0xD7 -> LOZENGE
-    u'\xff'     #  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\u0178'   #  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u2044'   #  0xDA -> FRACTION SLASH
-    u'\u20ac'   #  0xDB -> EURO SIGN
-    u'\u2039'   #  0xDC -> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-    u'\u203a'   #  0xDD -> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-    u'\u021a'   #  0xDE -> LATIN CAPITAL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
-    u'\u021b'   #  0xDF -> LATIN SMALL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
-    u'\u2021'   #  0xE0 -> DOUBLE DAGGER
-    u'\xb7'     #  0xE1 -> MIDDLE DOT
-    u'\u201a'   #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'   #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'   #  0xE4 -> PER MILLE SIGN
-    u'\xc2'     #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xca'     #  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xc1'     #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xcb'     #  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'     #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'     #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'     #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\uf8ff'   #  0xF0 -> Apple logo
-    u'\xd2'     #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'     #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'     #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\u0131'   #  0xF5 -> LATIN SMALL LETTER DOTLESS I
-    u'\u02c6'   #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'   #  0xF7 -> SMALL TILDE
-    u'\xaf'     #  0xF8 -> MACRON
-    u'\u02d8'   #  0xF9 -> BREVE
-    u'\u02d9'   #  0xFA -> DOT ABOVE
-    u'\u02da'   #  0xFB -> RING ABOVE
-    u'\xb8'     #  0xFC -> CEDILLA
-    u'\u02dd'   #  0xFD -> DOUBLE ACUTE ACCENT
-    u'\u02db'   #  0xFE -> OGONEK
-    u'\u02c7'   #  0xFF -> CARON
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_turkish.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_turkish.py
deleted file mode 100644
index fafcc64..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mac_turkish.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec mac_turkish generated from 'MAPPINGS/VENDORS/APPLE/TURKISH.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='mac-turkish',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> CONTROL CHARACTER
-    u'\x01'     #  0x01 -> CONTROL CHARACTER
-    u'\x02'     #  0x02 -> CONTROL CHARACTER
-    u'\x03'     #  0x03 -> CONTROL CHARACTER
-    u'\x04'     #  0x04 -> CONTROL CHARACTER
-    u'\x05'     #  0x05 -> CONTROL CHARACTER
-    u'\x06'     #  0x06 -> CONTROL CHARACTER
-    u'\x07'     #  0x07 -> CONTROL CHARACTER
-    u'\x08'     #  0x08 -> CONTROL CHARACTER
-    u'\t'       #  0x09 -> CONTROL CHARACTER
-    u'\n'       #  0x0A -> CONTROL CHARACTER
-    u'\x0b'     #  0x0B -> CONTROL CHARACTER
-    u'\x0c'     #  0x0C -> CONTROL CHARACTER
-    u'\r'       #  0x0D -> CONTROL CHARACTER
-    u'\x0e'     #  0x0E -> CONTROL CHARACTER
-    u'\x0f'     #  0x0F -> CONTROL CHARACTER
-    u'\x10'     #  0x10 -> CONTROL CHARACTER
-    u'\x11'     #  0x11 -> CONTROL CHARACTER
-    u'\x12'     #  0x12 -> CONTROL CHARACTER
-    u'\x13'     #  0x13 -> CONTROL CHARACTER
-    u'\x14'     #  0x14 -> CONTROL CHARACTER
-    u'\x15'     #  0x15 -> CONTROL CHARACTER
-    u'\x16'     #  0x16 -> CONTROL CHARACTER
-    u'\x17'     #  0x17 -> CONTROL CHARACTER
-    u'\x18'     #  0x18 -> CONTROL CHARACTER
-    u'\x19'     #  0x19 -> CONTROL CHARACTER
-    u'\x1a'     #  0x1A -> CONTROL CHARACTER
-    u'\x1b'     #  0x1B -> CONTROL CHARACTER
-    u'\x1c'     #  0x1C -> CONTROL CHARACTER
-    u'\x1d'     #  0x1D -> CONTROL CHARACTER
-    u'\x1e'     #  0x1E -> CONTROL CHARACTER
-    u'\x1f'     #  0x1F -> CONTROL CHARACTER
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> CONTROL CHARACTER
-    u'\xc4'     #  0x80 -> LATIN CAPITAL LETTER A WITH DIAERESIS
-    u'\xc5'     #  0x81 -> LATIN CAPITAL LETTER A WITH RING ABOVE
-    u'\xc7'     #  0x82 -> LATIN CAPITAL LETTER C WITH CEDILLA
-    u'\xc9'     #  0x83 -> LATIN CAPITAL LETTER E WITH ACUTE
-    u'\xd1'     #  0x84 -> LATIN CAPITAL LETTER N WITH TILDE
-    u'\xd6'     #  0x85 -> LATIN CAPITAL LETTER O WITH DIAERESIS
-    u'\xdc'     #  0x86 -> LATIN CAPITAL LETTER U WITH DIAERESIS
-    u'\xe1'     #  0x87 -> LATIN SMALL LETTER A WITH ACUTE
-    u'\xe0'     #  0x88 -> LATIN SMALL LETTER A WITH GRAVE
-    u'\xe2'     #  0x89 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
-    u'\xe4'     #  0x8A -> LATIN SMALL LETTER A WITH DIAERESIS
-    u'\xe3'     #  0x8B -> LATIN SMALL LETTER A WITH TILDE
-    u'\xe5'     #  0x8C -> LATIN SMALL LETTER A WITH RING ABOVE
-    u'\xe7'     #  0x8D -> LATIN SMALL LETTER C WITH CEDILLA
-    u'\xe9'     #  0x8E -> LATIN SMALL LETTER E WITH ACUTE
-    u'\xe8'     #  0x8F -> LATIN SMALL LETTER E WITH GRAVE
-    u'\xea'     #  0x90 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
-    u'\xeb'     #  0x91 -> LATIN SMALL LETTER E WITH DIAERESIS
-    u'\xed'     #  0x92 -> LATIN SMALL LETTER I WITH ACUTE
-    u'\xec'     #  0x93 -> LATIN SMALL LETTER I WITH GRAVE
-    u'\xee'     #  0x94 -> LATIN SMALL LETTER I WITH CIRCUMFLEX
-    u'\xef'     #  0x95 -> LATIN SMALL LETTER I WITH DIAERESIS
-    u'\xf1'     #  0x96 -> LATIN SMALL LETTER N WITH TILDE
-    u'\xf3'     #  0x97 -> LATIN SMALL LETTER O WITH ACUTE
-    u'\xf2'     #  0x98 -> LATIN SMALL LETTER O WITH GRAVE
-    u'\xf4'     #  0x99 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
-    u'\xf6'     #  0x9A -> LATIN SMALL LETTER O WITH DIAERESIS
-    u'\xf5'     #  0x9B -> LATIN SMALL LETTER O WITH TILDE
-    u'\xfa'     #  0x9C -> LATIN SMALL LETTER U WITH ACUTE
-    u'\xf9'     #  0x9D -> LATIN SMALL LETTER U WITH GRAVE
-    u'\xfb'     #  0x9E -> LATIN SMALL LETTER U WITH CIRCUMFLEX
-    u'\xfc'     #  0x9F -> LATIN SMALL LETTER U WITH DIAERESIS
-    u'\u2020'   #  0xA0 -> DAGGER
-    u'\xb0'     #  0xA1 -> DEGREE SIGN
-    u'\xa2'     #  0xA2 -> CENT SIGN
-    u'\xa3'     #  0xA3 -> POUND SIGN
-    u'\xa7'     #  0xA4 -> SECTION SIGN
-    u'\u2022'   #  0xA5 -> BULLET
-    u'\xb6'     #  0xA6 -> PILCROW SIGN
-    u'\xdf'     #  0xA7 -> LATIN SMALL LETTER SHARP S
-    u'\xae'     #  0xA8 -> REGISTERED SIGN
-    u'\xa9'     #  0xA9 -> COPYRIGHT SIGN
-    u'\u2122'   #  0xAA -> TRADE MARK SIGN
-    u'\xb4'     #  0xAB -> ACUTE ACCENT
-    u'\xa8'     #  0xAC -> DIAERESIS
-    u'\u2260'   #  0xAD -> NOT EQUAL TO
-    u'\xc6'     #  0xAE -> LATIN CAPITAL LETTER AE
-    u'\xd8'     #  0xAF -> LATIN CAPITAL LETTER O WITH STROKE
-    u'\u221e'   #  0xB0 -> INFINITY
-    u'\xb1'     #  0xB1 -> PLUS-MINUS SIGN
-    u'\u2264'   #  0xB2 -> LESS-THAN OR EQUAL TO
-    u'\u2265'   #  0xB3 -> GREATER-THAN OR EQUAL TO
-    u'\xa5'     #  0xB4 -> YEN SIGN
-    u'\xb5'     #  0xB5 -> MICRO SIGN
-    u'\u2202'   #  0xB6 -> PARTIAL DIFFERENTIAL
-    u'\u2211'   #  0xB7 -> N-ARY SUMMATION
-    u'\u220f'   #  0xB8 -> N-ARY PRODUCT
-    u'\u03c0'   #  0xB9 -> GREEK SMALL LETTER PI
-    u'\u222b'   #  0xBA -> INTEGRAL
-    u'\xaa'     #  0xBB -> FEMININE ORDINAL INDICATOR
-    u'\xba'     #  0xBC -> MASCULINE ORDINAL INDICATOR
-    u'\u03a9'   #  0xBD -> GREEK CAPITAL LETTER OMEGA
-    u'\xe6'     #  0xBE -> LATIN SMALL LETTER AE
-    u'\xf8'     #  0xBF -> LATIN SMALL LETTER O WITH STROKE
-    u'\xbf'     #  0xC0 -> INVERTED QUESTION MARK
-    u'\xa1'     #  0xC1 -> INVERTED EXCLAMATION MARK
-    u'\xac'     #  0xC2 -> NOT SIGN
-    u'\u221a'   #  0xC3 -> SQUARE ROOT
-    u'\u0192'   #  0xC4 -> LATIN SMALL LETTER F WITH HOOK
-    u'\u2248'   #  0xC5 -> ALMOST EQUAL TO
-    u'\u2206'   #  0xC6 -> INCREMENT
-    u'\xab'     #  0xC7 -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\xbb'     #  0xC8 -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-    u'\u2026'   #  0xC9 -> HORIZONTAL ELLIPSIS
-    u'\xa0'     #  0xCA -> NO-BREAK SPACE
-    u'\xc0'     #  0xCB -> LATIN CAPITAL LETTER A WITH GRAVE
-    u'\xc3'     #  0xCC -> LATIN CAPITAL LETTER A WITH TILDE
-    u'\xd5'     #  0xCD -> LATIN CAPITAL LETTER O WITH TILDE
-    u'\u0152'   #  0xCE -> LATIN CAPITAL LIGATURE OE
-    u'\u0153'   #  0xCF -> LATIN SMALL LIGATURE OE
-    u'\u2013'   #  0xD0 -> EN DASH
-    u'\u2014'   #  0xD1 -> EM DASH
-    u'\u201c'   #  0xD2 -> LEFT DOUBLE QUOTATION MARK
-    u'\u201d'   #  0xD3 -> RIGHT DOUBLE QUOTATION MARK
-    u'\u2018'   #  0xD4 -> LEFT SINGLE QUOTATION MARK
-    u'\u2019'   #  0xD5 -> RIGHT SINGLE QUOTATION MARK
-    u'\xf7'     #  0xD6 -> DIVISION SIGN
-    u'\u25ca'   #  0xD7 -> LOZENGE
-    u'\xff'     #  0xD8 -> LATIN SMALL LETTER Y WITH DIAERESIS
-    u'\u0178'   #  0xD9 -> LATIN CAPITAL LETTER Y WITH DIAERESIS
-    u'\u011e'   #  0xDA -> LATIN CAPITAL LETTER G WITH BREVE
-    u'\u011f'   #  0xDB -> LATIN SMALL LETTER G WITH BREVE
-    u'\u0130'   #  0xDC -> LATIN CAPITAL LETTER I WITH DOT ABOVE
-    u'\u0131'   #  0xDD -> LATIN SMALL LETTER DOTLESS I
-    u'\u015e'   #  0xDE -> LATIN CAPITAL LETTER S WITH CEDILLA
-    u'\u015f'   #  0xDF -> LATIN SMALL LETTER S WITH CEDILLA
-    u'\u2021'   #  0xE0 -> DOUBLE DAGGER
-    u'\xb7'     #  0xE1 -> MIDDLE DOT
-    u'\u201a'   #  0xE2 -> SINGLE LOW-9 QUOTATION MARK
-    u'\u201e'   #  0xE3 -> DOUBLE LOW-9 QUOTATION MARK
-    u'\u2030'   #  0xE4 -> PER MILLE SIGN
-    u'\xc2'     #  0xE5 -> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-    u'\xca'     #  0xE6 -> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-    u'\xc1'     #  0xE7 -> LATIN CAPITAL LETTER A WITH ACUTE
-    u'\xcb'     #  0xE8 -> LATIN CAPITAL LETTER E WITH DIAERESIS
-    u'\xc8'     #  0xE9 -> LATIN CAPITAL LETTER E WITH GRAVE
-    u'\xcd'     #  0xEA -> LATIN CAPITAL LETTER I WITH ACUTE
-    u'\xce'     #  0xEB -> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-    u'\xcf'     #  0xEC -> LATIN CAPITAL LETTER I WITH DIAERESIS
-    u'\xcc'     #  0xED -> LATIN CAPITAL LETTER I WITH GRAVE
-    u'\xd3'     #  0xEE -> LATIN CAPITAL LETTER O WITH ACUTE
-    u'\xd4'     #  0xEF -> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-    u'\uf8ff'   #  0xF0 -> Apple logo
-    u'\xd2'     #  0xF1 -> LATIN CAPITAL LETTER O WITH GRAVE
-    u'\xda'     #  0xF2 -> LATIN CAPITAL LETTER U WITH ACUTE
-    u'\xdb'     #  0xF3 -> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-    u'\xd9'     #  0xF4 -> LATIN CAPITAL LETTER U WITH GRAVE
-    u'\uf8a0'   #  0xF5 -> undefined1
-    u'\u02c6'   #  0xF6 -> MODIFIER LETTER CIRCUMFLEX ACCENT
-    u'\u02dc'   #  0xF7 -> SMALL TILDE
-    u'\xaf'     #  0xF8 -> MACRON
-    u'\u02d8'   #  0xF9 -> BREVE
-    u'\u02d9'   #  0xFA -> DOT ABOVE
-    u'\u02da'   #  0xFB -> RING ABOVE
-    u'\xb8'     #  0xFC -> CEDILLA
-    u'\u02dd'   #  0xFD -> DOUBLE ACUTE ACCENT
-    u'\u02db'   #  0xFE -> OGONEK
-    u'\u02c7'   #  0xFF -> CARON
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mbcs.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mbcs.py
deleted file mode 100644
index d6b17b5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/mbcs.py
+++ /dev/null
@@ -1,47 +0,0 @@
-""" Python 'mbcs' Codec for Windows
-
-
-Cloned by Mark Hammond (mhammond@skippinet.com.au) from ascii.py,
-which was written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""
-# Import them explicitly to cause an ImportError
-# on non-Windows systems
-from codecs import mbcs_encode, mbcs_decode
-# for IncrementalDecoder, IncrementalEncoder, ...
-import codecs
-
-### Codec APIs
-
-encode = mbcs_encode
-
-def decode(input, errors='strict'):
-    return mbcs_decode(input, errors, True)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return mbcs_encode(input, self.errors)[0]
-
-class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
-    _buffer_decode = mbcs_decode
-
-class StreamWriter(codecs.StreamWriter):
-    encode = mbcs_encode
-
-class StreamReader(codecs.StreamReader):
-    decode = mbcs_decode
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='mbcs',
-        encode=encode,
-        decode=decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/palmos.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/palmos.py
deleted file mode 100644
index 4fc4b72..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/palmos.py
+++ /dev/null
@@ -1,83 +0,0 @@
-""" Python Character Mapping Codec for PalmOS 3.5.
-
-Written by Sjoerd Mullender (sjoerd@acm.org); based on iso8859_15.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_map)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_map)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='palmos',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-
-# The PalmOS character set is mostly iso-8859-1 with some differences.
-decoding_map.update({
-        0x0080: 0x20ac, #       EURO SIGN
-        0x0082: 0x201a, #       SINGLE LOW-9 QUOTATION MARK
-        0x0083: 0x0192, #       LATIN SMALL LETTER F WITH HOOK
-        0x0084: 0x201e, #       DOUBLE LOW-9 QUOTATION MARK
-        0x0085: 0x2026, #       HORIZONTAL ELLIPSIS
-        0x0086: 0x2020, #       DAGGER
-        0x0087: 0x2021, #       DOUBLE DAGGER
-        0x0088: 0x02c6, #       MODIFIER LETTER CIRCUMFLEX ACCENT
-        0x0089: 0x2030, #       PER MILLE SIGN
-        0x008a: 0x0160, #       LATIN CAPITAL LETTER S WITH CARON
-        0x008b: 0x2039, #       SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-        0x008c: 0x0152, #       LATIN CAPITAL LIGATURE OE
-        0x008d: 0x2666, #       BLACK DIAMOND SUIT
-        0x008e: 0x2663, #       BLACK CLUB SUIT
-        0x008f: 0x2665, #       BLACK HEART SUIT
-        0x0090: 0x2660, #       BLACK SPADE SUIT
-        0x0091: 0x2018, #       LEFT SINGLE QUOTATION MARK
-        0x0092: 0x2019, #       RIGHT SINGLE QUOTATION MARK
-        0x0093: 0x201c, #       LEFT DOUBLE QUOTATION MARK
-        0x0094: 0x201d, #       RIGHT DOUBLE QUOTATION MARK
-        0x0095: 0x2022, #       BULLET
-        0x0096: 0x2013, #       EN DASH
-        0x0097: 0x2014, #       EM DASH
-        0x0098: 0x02dc, #       SMALL TILDE
-        0x0099: 0x2122, #       TRADE MARK SIGN
-        0x009a: 0x0161, #       LATIN SMALL LETTER S WITH CARON
-        0x009c: 0x0153, #       LATIN SMALL LIGATURE OE
-        0x009f: 0x0178, #       LATIN CAPITAL LETTER Y WITH DIAERESIS
-})
-
-### Encoding Map
-
-encoding_map = codecs.make_encoding_map(decoding_map)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/ptcp154.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/ptcp154.py
deleted file mode 100644
index f197da5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/ptcp154.py
+++ /dev/null
@@ -1,175 +0,0 @@
-""" Python Character Mapping Codec generated from 'PTCP154.txt' with gencodec.py.
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-(c) Copyright 2000 Guido van Rossum.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_map)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_map)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='ptcp154',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-        0x0080: 0x0496, #        CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
-        0x0081: 0x0492, #        CYRILLIC CAPITAL LETTER GHE WITH STROKE
-        0x0082: 0x04ee, #        CYRILLIC CAPITAL LETTER U WITH MACRON
-        0x0083: 0x0493, #        CYRILLIC SMALL LETTER GHE WITH STROKE
-        0x0084: 0x201e, #        DOUBLE LOW-9 QUOTATION MARK
-        0x0085: 0x2026, #        HORIZONTAL ELLIPSIS
-        0x0086: 0x04b6, #        CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
-        0x0087: 0x04ae, #        CYRILLIC CAPITAL LETTER STRAIGHT U
-        0x0088: 0x04b2, #        CYRILLIC CAPITAL LETTER HA WITH DESCENDER
-        0x0089: 0x04af, #        CYRILLIC SMALL LETTER STRAIGHT U
-        0x008a: 0x04a0, #        CYRILLIC CAPITAL LETTER BASHKIR KA
-        0x008b: 0x04e2, #        CYRILLIC CAPITAL LETTER I WITH MACRON
-        0x008c: 0x04a2, #        CYRILLIC CAPITAL LETTER EN WITH DESCENDER
-        0x008d: 0x049a, #        CYRILLIC CAPITAL LETTER KA WITH DESCENDER
-        0x008e: 0x04ba, #        CYRILLIC CAPITAL LETTER SHHA
-        0x008f: 0x04b8, #        CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
-        0x0090: 0x0497, #        CYRILLIC SMALL LETTER ZHE WITH DESCENDER
-        0x0091: 0x2018, #        LEFT SINGLE QUOTATION MARK
-        0x0092: 0x2019, #        RIGHT SINGLE QUOTATION MARK
-        0x0093: 0x201c, #        LEFT DOUBLE QUOTATION MARK
-        0x0094: 0x201d, #        RIGHT DOUBLE QUOTATION MARK
-        0x0095: 0x2022, #        BULLET
-        0x0096: 0x2013, #        EN DASH
-        0x0097: 0x2014, #        EM DASH
-        0x0098: 0x04b3, #        CYRILLIC SMALL LETTER HA WITH DESCENDER
-        0x0099: 0x04b7, #        CYRILLIC SMALL LETTER CHE WITH DESCENDER
-        0x009a: 0x04a1, #        CYRILLIC SMALL LETTER BASHKIR KA
-        0x009b: 0x04e3, #        CYRILLIC SMALL LETTER I WITH MACRON
-        0x009c: 0x04a3, #        CYRILLIC SMALL LETTER EN WITH DESCENDER
-        0x009d: 0x049b, #        CYRILLIC SMALL LETTER KA WITH DESCENDER
-        0x009e: 0x04bb, #        CYRILLIC SMALL LETTER SHHA
-        0x009f: 0x04b9, #        CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
-        0x00a1: 0x040e, #        CYRILLIC CAPITAL LETTER SHORT U (Byelorussian)
-        0x00a2: 0x045e, #        CYRILLIC SMALL LETTER SHORT U (Byelorussian)
-        0x00a3: 0x0408, #        CYRILLIC CAPITAL LETTER JE
-        0x00a4: 0x04e8, #        CYRILLIC CAPITAL LETTER BARRED O
-        0x00a5: 0x0498, #        CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
-        0x00a6: 0x04b0, #        CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
-        0x00a8: 0x0401, #        CYRILLIC CAPITAL LETTER IO
-        0x00aa: 0x04d8, #        CYRILLIC CAPITAL LETTER SCHWA
-        0x00ad: 0x04ef, #        CYRILLIC SMALL LETTER U WITH MACRON
-        0x00af: 0x049c, #        CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
-        0x00b1: 0x04b1, #        CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
-        0x00b2: 0x0406, #        CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-        0x00b3: 0x0456, #        CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-        0x00b4: 0x0499, #        CYRILLIC SMALL LETTER ZE WITH DESCENDER
-        0x00b5: 0x04e9, #        CYRILLIC SMALL LETTER BARRED O
-        0x00b8: 0x0451, #        CYRILLIC SMALL LETTER IO
-        0x00b9: 0x2116, #        NUMERO SIGN
-        0x00ba: 0x04d9, #        CYRILLIC SMALL LETTER SCHWA
-        0x00bc: 0x0458, #        CYRILLIC SMALL LETTER JE
-        0x00bd: 0x04aa, #        CYRILLIC CAPITAL LETTER ES WITH DESCENDER
-        0x00be: 0x04ab, #        CYRILLIC SMALL LETTER ES WITH DESCENDER
-        0x00bf: 0x049d, #        CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
-        0x00c0: 0x0410, #        CYRILLIC CAPITAL LETTER A
-        0x00c1: 0x0411, #        CYRILLIC CAPITAL LETTER BE
-        0x00c2: 0x0412, #        CYRILLIC CAPITAL LETTER VE
-        0x00c3: 0x0413, #        CYRILLIC CAPITAL LETTER GHE
-        0x00c4: 0x0414, #        CYRILLIC CAPITAL LETTER DE
-        0x00c5: 0x0415, #        CYRILLIC CAPITAL LETTER IE
-        0x00c6: 0x0416, #        CYRILLIC CAPITAL LETTER ZHE
-        0x00c7: 0x0417, #        CYRILLIC CAPITAL LETTER ZE
-        0x00c8: 0x0418, #        CYRILLIC CAPITAL LETTER I
-        0x00c9: 0x0419, #        CYRILLIC CAPITAL LETTER SHORT I
-        0x00ca: 0x041a, #        CYRILLIC CAPITAL LETTER KA
-        0x00cb: 0x041b, #        CYRILLIC CAPITAL LETTER EL
-        0x00cc: 0x041c, #        CYRILLIC CAPITAL LETTER EM
-        0x00cd: 0x041d, #        CYRILLIC CAPITAL LETTER EN
-        0x00ce: 0x041e, #        CYRILLIC CAPITAL LETTER O
-        0x00cf: 0x041f, #        CYRILLIC CAPITAL LETTER PE
-        0x00d0: 0x0420, #        CYRILLIC CAPITAL LETTER ER
-        0x00d1: 0x0421, #        CYRILLIC CAPITAL LETTER ES
-        0x00d2: 0x0422, #        CYRILLIC CAPITAL LETTER TE
-        0x00d3: 0x0423, #        CYRILLIC CAPITAL LETTER U
-        0x00d4: 0x0424, #        CYRILLIC CAPITAL LETTER EF
-        0x00d5: 0x0425, #        CYRILLIC CAPITAL LETTER HA
-        0x00d6: 0x0426, #        CYRILLIC CAPITAL LETTER TSE
-        0x00d7: 0x0427, #        CYRILLIC CAPITAL LETTER CHE
-        0x00d8: 0x0428, #        CYRILLIC CAPITAL LETTER SHA
-        0x00d9: 0x0429, #        CYRILLIC CAPITAL LETTER SHCHA
-        0x00da: 0x042a, #        CYRILLIC CAPITAL LETTER HARD SIGN
-        0x00db: 0x042b, #        CYRILLIC CAPITAL LETTER YERU
-        0x00dc: 0x042c, #        CYRILLIC CAPITAL LETTER SOFT SIGN
-        0x00dd: 0x042d, #        CYRILLIC CAPITAL LETTER E
-        0x00de: 0x042e, #        CYRILLIC CAPITAL LETTER YU
-        0x00df: 0x042f, #        CYRILLIC CAPITAL LETTER YA
-        0x00e0: 0x0430, #        CYRILLIC SMALL LETTER A
-        0x00e1: 0x0431, #        CYRILLIC SMALL LETTER BE
-        0x00e2: 0x0432, #        CYRILLIC SMALL LETTER VE
-        0x00e3: 0x0433, #        CYRILLIC SMALL LETTER GHE
-        0x00e4: 0x0434, #        CYRILLIC SMALL LETTER DE
-        0x00e5: 0x0435, #        CYRILLIC SMALL LETTER IE
-        0x00e6: 0x0436, #        CYRILLIC SMALL LETTER ZHE
-        0x00e7: 0x0437, #        CYRILLIC SMALL LETTER ZE
-        0x00e8: 0x0438, #        CYRILLIC SMALL LETTER I
-        0x00e9: 0x0439, #        CYRILLIC SMALL LETTER SHORT I
-        0x00ea: 0x043a, #        CYRILLIC SMALL LETTER KA
-        0x00eb: 0x043b, #        CYRILLIC SMALL LETTER EL
-        0x00ec: 0x043c, #        CYRILLIC SMALL LETTER EM
-        0x00ed: 0x043d, #        CYRILLIC SMALL LETTER EN
-        0x00ee: 0x043e, #        CYRILLIC SMALL LETTER O
-        0x00ef: 0x043f, #        CYRILLIC SMALL LETTER PE
-        0x00f0: 0x0440, #        CYRILLIC SMALL LETTER ER
-        0x00f1: 0x0441, #        CYRILLIC SMALL LETTER ES
-        0x00f2: 0x0442, #        CYRILLIC SMALL LETTER TE
-        0x00f3: 0x0443, #        CYRILLIC SMALL LETTER U
-        0x00f4: 0x0444, #        CYRILLIC SMALL LETTER EF
-        0x00f5: 0x0445, #        CYRILLIC SMALL LETTER HA
-        0x00f6: 0x0446, #        CYRILLIC SMALL LETTER TSE
-        0x00f7: 0x0447, #        CYRILLIC SMALL LETTER CHE
-        0x00f8: 0x0448, #        CYRILLIC SMALL LETTER SHA
-        0x00f9: 0x0449, #        CYRILLIC SMALL LETTER SHCHA
-        0x00fa: 0x044a, #        CYRILLIC SMALL LETTER HARD SIGN
-        0x00fb: 0x044b, #        CYRILLIC SMALL LETTER YERU
-        0x00fc: 0x044c, #        CYRILLIC SMALL LETTER SOFT SIGN
-        0x00fd: 0x044d, #        CYRILLIC SMALL LETTER E
-        0x00fe: 0x044e, #        CYRILLIC SMALL LETTER YU
-        0x00ff: 0x044f, #        CYRILLIC SMALL LETTER YA
-})
-
-### Encoding Map
-
-encoding_map = codecs.make_encoding_map(decoding_map)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/punycode.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/punycode.py
deleted file mode 100644
index ad3cc55..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/punycode.py
+++ /dev/null
@@ -1,238 +0,0 @@
-# -*- coding: iso-8859-1 -*-
-""" Codec for the Punicode encoding, as specified in RFC 3492
-
-Written by Martin v. Löwis.
-"""
-
-import codecs
-
-##################### Encoding #####################################
-
-def segregate(str):
-    """3.1 Basic code point segregation"""
-    base = []
-    extended = {}
-    for c in str:
-        if ord(c) < 128:
-            base.append(c)
-        else:
-            extended[c] = 1
-    extended = extended.keys()
-    extended.sort()
-    return "".join(base).encode("ascii"),extended
-
-def selective_len(str, max):
-    """Return the length of str, considering only characters below max."""
-    res = 0
-    for c in str:
-        if ord(c) < max:
-            res += 1
-    return res
-
-def selective_find(str, char, index, pos):
-    """Return a pair (index, pos), indicating the next occurrence of
-    char in str. index is the position of the character considering
-    only ordinals up to and including char, and pos is the position in
-    the full string. index/pos is the starting position in the full
-    string."""
-
-    l = len(str)
-    while 1:
-        pos += 1
-        if pos == l:
-            return (-1, -1)
-        c = str[pos]
-        if c == char:
-            return index+1, pos
-        elif c < char:
-            index += 1
-
-def insertion_unsort(str, extended):
-    """3.2 Insertion unsort coding"""
-    oldchar = 0x80
-    result = []
-    oldindex = -1
-    for c in extended:
-        index = pos = -1
-        char = ord(c)
-        curlen = selective_len(str, char)
-        delta = (curlen+1) * (char - oldchar)
-        while 1:
-            index,pos = selective_find(str,c,index,pos)
-            if index == -1:
-                break
-            delta += index - oldindex
-            result.append(delta-1)
-            oldindex = index
-            delta = 0
-        oldchar = char
-
-    return result
-
-def T(j, bias):
-    # Punycode parameters: tmin = 1, tmax = 26, base = 36
-    res = 36 * (j + 1) - bias
-    if res < 1: return 1
-    if res > 26: return 26
-    return res
-
-digits = "abcdefghijklmnopqrstuvwxyz0123456789"
-def generate_generalized_integer(N, bias):
-    """3.3 Generalized variable-length integers"""
-    result = []
-    j = 0
-    while 1:
-        t = T(j, bias)
-        if N < t:
-            result.append(digits[N])
-            return result
-        result.append(digits[t + ((N - t) % (36 - t))])
-        N = (N - t) // (36 - t)
-        j += 1
-
-def adapt(delta, first, numchars):
-    if first:
-        delta //= 700
-    else:
-        delta //= 2
-    delta += delta // numchars
-    # ((base - tmin) * tmax) // 2 == 455
-    divisions = 0
-    while delta > 455:
-        delta = delta // 35 # base - tmin
-        divisions += 36
-    bias = divisions + (36 * delta // (delta + 38))
-    return bias
-
-
-def generate_integers(baselen, deltas):
-    """3.4 Bias adaptation"""
-    # Punycode parameters: initial bias = 72, damp = 700, skew = 38
-    result = []
-    bias = 72
-    for points, delta in enumerate(deltas):
-        s = generate_generalized_integer(delta, bias)
-        result.extend(s)
-        bias = adapt(delta, points==0, baselen+points+1)
-    return "".join(result)
-
-def punycode_encode(text):
-    base, extended = segregate(text)
-    base = base.encode("ascii")
-    deltas = insertion_unsort(text, extended)
-    extended = generate_integers(len(base), deltas)
-    if base:
-        return base + "-" + extended
-    return extended
-
-##################### Decoding #####################################
-
-def decode_generalized_number(extended, extpos, bias, errors):
-    """3.3 Generalized variable-length integers"""
-    result = 0
-    w = 1
-    j = 0
-    while 1:
-        try:
-            char = ord(extended[extpos])
-        except IndexError:
-            if errors == "strict":
-                raise UnicodeError, "incomplete punicode string"
-            return extpos + 1, None
-        extpos += 1
-        if 0x41 <= char <= 0x5A: # A-Z
-            digit = char - 0x41
-        elif 0x30 <= char <= 0x39:
-            digit = char - 22 # 0x30-26
-        elif errors == "strict":
-            raise UnicodeError("Invalid extended code point '%s'"
-                               % extended[extpos])
-        else:
-            return extpos, None
-        t = T(j, bias)
-        result += digit * w
-        if digit < t:
-            return extpos, result
-        w = w * (36 - t)
-        j += 1
-
-
-def insertion_sort(base, extended, errors):
-    """3.2 Insertion unsort coding"""
-    char = 0x80
-    pos = -1
-    bias = 72
-    extpos = 0
-    while extpos < len(extended):
-        newpos, delta = decode_generalized_number(extended, extpos,
-                                                  bias, errors)
-        if delta is None:
-            # There was an error in decoding. We can't continue because
-            # synchronization is lost.
-            return base
-        pos += delta+1
-        char += pos // (len(base) + 1)
-        if char > 0x10FFFF:
-            if errors == "strict":
-                raise UnicodeError, ("Invalid character U+%x" % char)
-            char = ord('?')
-        pos = pos % (len(base) + 1)
-        base = base[:pos] + unichr(char) + base[pos:]
-        bias = adapt(delta, (extpos == 0), len(base))
-        extpos = newpos
-    return base
-
-def punycode_decode(text, errors):
-    pos = text.rfind("-")
-    if pos == -1:
-        base = ""
-        extended = text
-    else:
-        base = text[:pos]
-        extended = text[pos+1:]
-    base = unicode(base, "ascii", errors)
-    extended = extended.upper()
-    return insertion_sort(base, extended, errors)
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        res = punycode_encode(input)
-        return res, len(input)
-
-    def decode(self,input,errors='strict'):
-        if errors not in ('strict', 'replace', 'ignore'):
-            raise UnicodeError, "Unsupported error handling "+errors
-        res = punycode_decode(input, errors)
-        return res, len(input)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return punycode_encode(input)
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        if self.errors not in ('strict', 'replace', 'ignore'):
-            raise UnicodeError, "Unsupported error handling "+self.errors
-        return punycode_decode(input, self.errors)
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='punycode',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/quopri_codec.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/quopri_codec.py
deleted file mode 100644
index 663d6a6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/quopri_codec.py
+++ /dev/null
@@ -1,75 +0,0 @@
-"""Codec for quoted-printable encoding.
-
-Like base64 and rot13, this returns Python strings, not Unicode.
-"""
-
-import codecs, quopri
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-def quopri_encode(input, errors='strict'):
-    """Encode the input, returning a tuple (output object, length consumed).
-
-    errors defines the error handling to apply. It defaults to
-    'strict' handling which is the only currently supported
-    error handling for this codec.
-
-    """
-    assert errors == 'strict'
-    # using str() because of cStringIO's Unicode undesired Unicode behavior.
-    f = StringIO(str(input))
-    g = StringIO()
-    quopri.encode(f, g, 1)
-    output = g.getvalue()
-    return (output, len(input))
-
-def quopri_decode(input, errors='strict'):
-    """Decode the input, returning a tuple (output object, length consumed).
-
-    errors defines the error handling to apply. It defaults to
-    'strict' handling which is the only currently supported
-    error handling for this codec.
-
-    """
-    assert errors == 'strict'
-    f = StringIO(str(input))
-    g = StringIO()
-    quopri.decode(f, g)
-    output = g.getvalue()
-    return (output, len(input))
-
-class Codec(codecs.Codec):
-
-    def encode(self, input,errors='strict'):
-        return quopri_encode(input,errors)
-    def decode(self, input,errors='strict'):
-        return quopri_decode(input,errors)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return quopri_encode(input, self.errors)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return quopri_decode(input, self.errors)[0]
-
-class StreamWriter(Codec, codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-# encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='quopri',
-        encode=quopri_encode,
-        decode=quopri_decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/raw_unicode_escape.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/raw_unicode_escape.py
deleted file mode 100644
index cb0abfb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/raw_unicode_escape.py
+++ /dev/null
@@ -1,45 +0,0 @@
-""" Python 'raw-unicode-escape' Codec
-
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    # Note: Binding these as C functions will result in the class not
-    # converting them to methods. This is intended.
-    encode = codecs.raw_unicode_escape_encode
-    decode = codecs.raw_unicode_escape_decode
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.raw_unicode_escape_encode(input, self.errors)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.raw_unicode_escape_decode(input, self.errors)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='raw-unicode-escape',
-        encode=Codec.encode,
-        decode=Codec.decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/rot_13.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/rot_13.py
deleted file mode 100644
index cb25ecb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/rot_13.py
+++ /dev/null
@@ -1,118 +0,0 @@
-#!/usr/bin/env python
-""" Python Character Mapping Codec for ROT13.
-
-    See http://ucsub.colorado.edu/~kominek/rot13/ for details.
-
-    Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_map)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_map)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='rot-13',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-   0x0041: 0x004e,
-   0x0042: 0x004f,
-   0x0043: 0x0050,
-   0x0044: 0x0051,
-   0x0045: 0x0052,
-   0x0046: 0x0053,
-   0x0047: 0x0054,
-   0x0048: 0x0055,
-   0x0049: 0x0056,
-   0x004a: 0x0057,
-   0x004b: 0x0058,
-   0x004c: 0x0059,
-   0x004d: 0x005a,
-   0x004e: 0x0041,
-   0x004f: 0x0042,
-   0x0050: 0x0043,
-   0x0051: 0x0044,
-   0x0052: 0x0045,
-   0x0053: 0x0046,
-   0x0054: 0x0047,
-   0x0055: 0x0048,
-   0x0056: 0x0049,
-   0x0057: 0x004a,
-   0x0058: 0x004b,
-   0x0059: 0x004c,
-   0x005a: 0x004d,
-   0x0061: 0x006e,
-   0x0062: 0x006f,
-   0x0063: 0x0070,
-   0x0064: 0x0071,
-   0x0065: 0x0072,
-   0x0066: 0x0073,
-   0x0067: 0x0074,
-   0x0068: 0x0075,
-   0x0069: 0x0076,
-   0x006a: 0x0077,
-   0x006b: 0x0078,
-   0x006c: 0x0079,
-   0x006d: 0x007a,
-   0x006e: 0x0061,
-   0x006f: 0x0062,
-   0x0070: 0x0063,
-   0x0071: 0x0064,
-   0x0072: 0x0065,
-   0x0073: 0x0066,
-   0x0074: 0x0067,
-   0x0075: 0x0068,
-   0x0076: 0x0069,
-   0x0077: 0x006a,
-   0x0078: 0x006b,
-   0x0079: 0x006c,
-   0x007a: 0x006d,
-})
-
-### Encoding Map
-
-encoding_map = codecs.make_encoding_map(decoding_map)
-
-### Filter API
-
-def rot13(infile, outfile):
-    outfile.write(infile.read().encode('rot-13'))
-
-if __name__ == '__main__':
-    import sys
-    rot13(sys.stdin, sys.stdout)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jis.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jis.py
deleted file mode 100644
index 3db9364..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jis.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# shift_jis.py: Python Unicode Codec for SHIFT_JIS
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_jp, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_jp.getcodec('shift_jis')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='shift_jis',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jis_2004.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jis_2004.py
deleted file mode 100644
index 3e48bb7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jis_2004.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# shift_jis_2004.py: Python Unicode Codec for SHIFT_JIS_2004
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_jp, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_jp.getcodec('shift_jis_2004')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='shift_jis_2004',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jisx0213.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jisx0213.py
deleted file mode 100644
index 4092e41..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/shift_jisx0213.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# shift_jisx0213.py: Python Unicode Codec for SHIFT_JISX0213
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_jp, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_jp.getcodec('shift_jisx0213')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='shift_jisx0213',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/string_escape.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/string_escape.py
deleted file mode 100644
index cb11794..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/string_escape.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# -*- coding: iso-8859-1 -*-
-""" Python 'escape' Codec
-
-
-Written by Martin v. Löwis (martin@v.loewis.de).
-
-"""
-import codecs
-
-class Codec(codecs.Codec):
-
-    encode = codecs.escape_encode
-    decode = codecs.escape_decode
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.escape_encode(input, self.errors)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.escape_decode(input, self.errors)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='string-escape',
-        encode=Codec.encode,
-        decode=Codec.decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/tis_620.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/tis_620.py
deleted file mode 100644
index 776525e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/tis_620.py
+++ /dev/null
@@ -1,307 +0,0 @@
-""" Python Character Mapping Codec tis_620 generated from 'python-mappings/TIS-620.TXT' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_table)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_table)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_table)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='tis-620',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-
-
-### Decoding Table
-
-decoding_table = (
-    u'\x00'     #  0x00 -> NULL
-    u'\x01'     #  0x01 -> START OF HEADING
-    u'\x02'     #  0x02 -> START OF TEXT
-    u'\x03'     #  0x03 -> END OF TEXT
-    u'\x04'     #  0x04 -> END OF TRANSMISSION
-    u'\x05'     #  0x05 -> ENQUIRY
-    u'\x06'     #  0x06 -> ACKNOWLEDGE
-    u'\x07'     #  0x07 -> BELL
-    u'\x08'     #  0x08 -> BACKSPACE
-    u'\t'       #  0x09 -> HORIZONTAL TABULATION
-    u'\n'       #  0x0A -> LINE FEED
-    u'\x0b'     #  0x0B -> VERTICAL TABULATION
-    u'\x0c'     #  0x0C -> FORM FEED
-    u'\r'       #  0x0D -> CARRIAGE RETURN
-    u'\x0e'     #  0x0E -> SHIFT OUT
-    u'\x0f'     #  0x0F -> SHIFT IN
-    u'\x10'     #  0x10 -> DATA LINK ESCAPE
-    u'\x11'     #  0x11 -> DEVICE CONTROL ONE
-    u'\x12'     #  0x12 -> DEVICE CONTROL TWO
-    u'\x13'     #  0x13 -> DEVICE CONTROL THREE
-    u'\x14'     #  0x14 -> DEVICE CONTROL FOUR
-    u'\x15'     #  0x15 -> NEGATIVE ACKNOWLEDGE
-    u'\x16'     #  0x16 -> SYNCHRONOUS IDLE
-    u'\x17'     #  0x17 -> END OF TRANSMISSION BLOCK
-    u'\x18'     #  0x18 -> CANCEL
-    u'\x19'     #  0x19 -> END OF MEDIUM
-    u'\x1a'     #  0x1A -> SUBSTITUTE
-    u'\x1b'     #  0x1B -> ESCAPE
-    u'\x1c'     #  0x1C -> FILE SEPARATOR
-    u'\x1d'     #  0x1D -> GROUP SEPARATOR
-    u'\x1e'     #  0x1E -> RECORD SEPARATOR
-    u'\x1f'     #  0x1F -> UNIT SEPARATOR
-    u' '        #  0x20 -> SPACE
-    u'!'        #  0x21 -> EXCLAMATION MARK
-    u'"'        #  0x22 -> QUOTATION MARK
-    u'#'        #  0x23 -> NUMBER SIGN
-    u'$'        #  0x24 -> DOLLAR SIGN
-    u'%'        #  0x25 -> PERCENT SIGN
-    u'&'        #  0x26 -> AMPERSAND
-    u"'"        #  0x27 -> APOSTROPHE
-    u'('        #  0x28 -> LEFT PARENTHESIS
-    u')'        #  0x29 -> RIGHT PARENTHESIS
-    u'*'        #  0x2A -> ASTERISK
-    u'+'        #  0x2B -> PLUS SIGN
-    u','        #  0x2C -> COMMA
-    u'-'        #  0x2D -> HYPHEN-MINUS
-    u'.'        #  0x2E -> FULL STOP
-    u'/'        #  0x2F -> SOLIDUS
-    u'0'        #  0x30 -> DIGIT ZERO
-    u'1'        #  0x31 -> DIGIT ONE
-    u'2'        #  0x32 -> DIGIT TWO
-    u'3'        #  0x33 -> DIGIT THREE
-    u'4'        #  0x34 -> DIGIT FOUR
-    u'5'        #  0x35 -> DIGIT FIVE
-    u'6'        #  0x36 -> DIGIT SIX
-    u'7'        #  0x37 -> DIGIT SEVEN
-    u'8'        #  0x38 -> DIGIT EIGHT
-    u'9'        #  0x39 -> DIGIT NINE
-    u':'        #  0x3A -> COLON
-    u';'        #  0x3B -> SEMICOLON
-    u'<'        #  0x3C -> LESS-THAN SIGN
-    u'='        #  0x3D -> EQUALS SIGN
-    u'>'        #  0x3E -> GREATER-THAN SIGN
-    u'?'        #  0x3F -> QUESTION MARK
-    u'@'        #  0x40 -> COMMERCIAL AT
-    u'A'        #  0x41 -> LATIN CAPITAL LETTER A
-    u'B'        #  0x42 -> LATIN CAPITAL LETTER B
-    u'C'        #  0x43 -> LATIN CAPITAL LETTER C
-    u'D'        #  0x44 -> LATIN CAPITAL LETTER D
-    u'E'        #  0x45 -> LATIN CAPITAL LETTER E
-    u'F'        #  0x46 -> LATIN CAPITAL LETTER F
-    u'G'        #  0x47 -> LATIN CAPITAL LETTER G
-    u'H'        #  0x48 -> LATIN CAPITAL LETTER H
-    u'I'        #  0x49 -> LATIN CAPITAL LETTER I
-    u'J'        #  0x4A -> LATIN CAPITAL LETTER J
-    u'K'        #  0x4B -> LATIN CAPITAL LETTER K
-    u'L'        #  0x4C -> LATIN CAPITAL LETTER L
-    u'M'        #  0x4D -> LATIN CAPITAL LETTER M
-    u'N'        #  0x4E -> LATIN CAPITAL LETTER N
-    u'O'        #  0x4F -> LATIN CAPITAL LETTER O
-    u'P'        #  0x50 -> LATIN CAPITAL LETTER P
-    u'Q'        #  0x51 -> LATIN CAPITAL LETTER Q
-    u'R'        #  0x52 -> LATIN CAPITAL LETTER R
-    u'S'        #  0x53 -> LATIN CAPITAL LETTER S
-    u'T'        #  0x54 -> LATIN CAPITAL LETTER T
-    u'U'        #  0x55 -> LATIN CAPITAL LETTER U
-    u'V'        #  0x56 -> LATIN CAPITAL LETTER V
-    u'W'        #  0x57 -> LATIN CAPITAL LETTER W
-    u'X'        #  0x58 -> LATIN CAPITAL LETTER X
-    u'Y'        #  0x59 -> LATIN CAPITAL LETTER Y
-    u'Z'        #  0x5A -> LATIN CAPITAL LETTER Z
-    u'['        #  0x5B -> LEFT SQUARE BRACKET
-    u'\\'       #  0x5C -> REVERSE SOLIDUS
-    u']'        #  0x5D -> RIGHT SQUARE BRACKET
-    u'^'        #  0x5E -> CIRCUMFLEX ACCENT
-    u'_'        #  0x5F -> LOW LINE
-    u'`'        #  0x60 -> GRAVE ACCENT
-    u'a'        #  0x61 -> LATIN SMALL LETTER A
-    u'b'        #  0x62 -> LATIN SMALL LETTER B
-    u'c'        #  0x63 -> LATIN SMALL LETTER C
-    u'd'        #  0x64 -> LATIN SMALL LETTER D
-    u'e'        #  0x65 -> LATIN SMALL LETTER E
-    u'f'        #  0x66 -> LATIN SMALL LETTER F
-    u'g'        #  0x67 -> LATIN SMALL LETTER G
-    u'h'        #  0x68 -> LATIN SMALL LETTER H
-    u'i'        #  0x69 -> LATIN SMALL LETTER I
-    u'j'        #  0x6A -> LATIN SMALL LETTER J
-    u'k'        #  0x6B -> LATIN SMALL LETTER K
-    u'l'        #  0x6C -> LATIN SMALL LETTER L
-    u'm'        #  0x6D -> LATIN SMALL LETTER M
-    u'n'        #  0x6E -> LATIN SMALL LETTER N
-    u'o'        #  0x6F -> LATIN SMALL LETTER O
-    u'p'        #  0x70 -> LATIN SMALL LETTER P
-    u'q'        #  0x71 -> LATIN SMALL LETTER Q
-    u'r'        #  0x72 -> LATIN SMALL LETTER R
-    u's'        #  0x73 -> LATIN SMALL LETTER S
-    u't'        #  0x74 -> LATIN SMALL LETTER T
-    u'u'        #  0x75 -> LATIN SMALL LETTER U
-    u'v'        #  0x76 -> LATIN SMALL LETTER V
-    u'w'        #  0x77 -> LATIN SMALL LETTER W
-    u'x'        #  0x78 -> LATIN SMALL LETTER X
-    u'y'        #  0x79 -> LATIN SMALL LETTER Y
-    u'z'        #  0x7A -> LATIN SMALL LETTER Z
-    u'{'        #  0x7B -> LEFT CURLY BRACKET
-    u'|'        #  0x7C -> VERTICAL LINE
-    u'}'        #  0x7D -> RIGHT CURLY BRACKET
-    u'~'        #  0x7E -> TILDE
-    u'\x7f'     #  0x7F -> DELETE
-    u'\x80'     #  0x80 -> <control>
-    u'\x81'     #  0x81 -> <control>
-    u'\x82'     #  0x82 -> <control>
-    u'\x83'     #  0x83 -> <control>
-    u'\x84'     #  0x84 -> <control>
-    u'\x85'     #  0x85 -> <control>
-    u'\x86'     #  0x86 -> <control>
-    u'\x87'     #  0x87 -> <control>
-    u'\x88'     #  0x88 -> <control>
-    u'\x89'     #  0x89 -> <control>
-    u'\x8a'     #  0x8A -> <control>
-    u'\x8b'     #  0x8B -> <control>
-    u'\x8c'     #  0x8C -> <control>
-    u'\x8d'     #  0x8D -> <control>
-    u'\x8e'     #  0x8E -> <control>
-    u'\x8f'     #  0x8F -> <control>
-    u'\x90'     #  0x90 -> <control>
-    u'\x91'     #  0x91 -> <control>
-    u'\x92'     #  0x92 -> <control>
-    u'\x93'     #  0x93 -> <control>
-    u'\x94'     #  0x94 -> <control>
-    u'\x95'     #  0x95 -> <control>
-    u'\x96'     #  0x96 -> <control>
-    u'\x97'     #  0x97 -> <control>
-    u'\x98'     #  0x98 -> <control>
-    u'\x99'     #  0x99 -> <control>
-    u'\x9a'     #  0x9A -> <control>
-    u'\x9b'     #  0x9B -> <control>
-    u'\x9c'     #  0x9C -> <control>
-    u'\x9d'     #  0x9D -> <control>
-    u'\x9e'     #  0x9E -> <control>
-    u'\x9f'     #  0x9F -> <control>
-    u'\ufffe'
-    u'\u0e01'   #  0xA1 -> THAI CHARACTER KO KAI
-    u'\u0e02'   #  0xA2 -> THAI CHARACTER KHO KHAI
-    u'\u0e03'   #  0xA3 -> THAI CHARACTER KHO KHUAT
-    u'\u0e04'   #  0xA4 -> THAI CHARACTER KHO KHWAI
-    u'\u0e05'   #  0xA5 -> THAI CHARACTER KHO KHON
-    u'\u0e06'   #  0xA6 -> THAI CHARACTER KHO RAKHANG
-    u'\u0e07'   #  0xA7 -> THAI CHARACTER NGO NGU
-    u'\u0e08'   #  0xA8 -> THAI CHARACTER CHO CHAN
-    u'\u0e09'   #  0xA9 -> THAI CHARACTER CHO CHING
-    u'\u0e0a'   #  0xAA -> THAI CHARACTER CHO CHANG
-    u'\u0e0b'   #  0xAB -> THAI CHARACTER SO SO
-    u'\u0e0c'   #  0xAC -> THAI CHARACTER CHO CHOE
-    u'\u0e0d'   #  0xAD -> THAI CHARACTER YO YING
-    u'\u0e0e'   #  0xAE -> THAI CHARACTER DO CHADA
-    u'\u0e0f'   #  0xAF -> THAI CHARACTER TO PATAK
-    u'\u0e10'   #  0xB0 -> THAI CHARACTER THO THAN
-    u'\u0e11'   #  0xB1 -> THAI CHARACTER THO NANGMONTHO
-    u'\u0e12'   #  0xB2 -> THAI CHARACTER THO PHUTHAO
-    u'\u0e13'   #  0xB3 -> THAI CHARACTER NO NEN
-    u'\u0e14'   #  0xB4 -> THAI CHARACTER DO DEK
-    u'\u0e15'   #  0xB5 -> THAI CHARACTER TO TAO
-    u'\u0e16'   #  0xB6 -> THAI CHARACTER THO THUNG
-    u'\u0e17'   #  0xB7 -> THAI CHARACTER THO THAHAN
-    u'\u0e18'   #  0xB8 -> THAI CHARACTER THO THONG
-    u'\u0e19'   #  0xB9 -> THAI CHARACTER NO NU
-    u'\u0e1a'   #  0xBA -> THAI CHARACTER BO BAIMAI
-    u'\u0e1b'   #  0xBB -> THAI CHARACTER PO PLA
-    u'\u0e1c'   #  0xBC -> THAI CHARACTER PHO PHUNG
-    u'\u0e1d'   #  0xBD -> THAI CHARACTER FO FA
-    u'\u0e1e'   #  0xBE -> THAI CHARACTER PHO PHAN
-    u'\u0e1f'   #  0xBF -> THAI CHARACTER FO FAN
-    u'\u0e20'   #  0xC0 -> THAI CHARACTER PHO SAMPHAO
-    u'\u0e21'   #  0xC1 -> THAI CHARACTER MO MA
-    u'\u0e22'   #  0xC2 -> THAI CHARACTER YO YAK
-    u'\u0e23'   #  0xC3 -> THAI CHARACTER RO RUA
-    u'\u0e24'   #  0xC4 -> THAI CHARACTER RU
-    u'\u0e25'   #  0xC5 -> THAI CHARACTER LO LING
-    u'\u0e26'   #  0xC6 -> THAI CHARACTER LU
-    u'\u0e27'   #  0xC7 -> THAI CHARACTER WO WAEN
-    u'\u0e28'   #  0xC8 -> THAI CHARACTER SO SALA
-    u'\u0e29'   #  0xC9 -> THAI CHARACTER SO RUSI
-    u'\u0e2a'   #  0xCA -> THAI CHARACTER SO SUA
-    u'\u0e2b'   #  0xCB -> THAI CHARACTER HO HIP
-    u'\u0e2c'   #  0xCC -> THAI CHARACTER LO CHULA
-    u'\u0e2d'   #  0xCD -> THAI CHARACTER O ANG
-    u'\u0e2e'   #  0xCE -> THAI CHARACTER HO NOKHUK
-    u'\u0e2f'   #  0xCF -> THAI CHARACTER PAIYANNOI
-    u'\u0e30'   #  0xD0 -> THAI CHARACTER SARA A
-    u'\u0e31'   #  0xD1 -> THAI CHARACTER MAI HAN-AKAT
-    u'\u0e32'   #  0xD2 -> THAI CHARACTER SARA AA
-    u'\u0e33'   #  0xD3 -> THAI CHARACTER SARA AM
-    u'\u0e34'   #  0xD4 -> THAI CHARACTER SARA I
-    u'\u0e35'   #  0xD5 -> THAI CHARACTER SARA II
-    u'\u0e36'   #  0xD6 -> THAI CHARACTER SARA UE
-    u'\u0e37'   #  0xD7 -> THAI CHARACTER SARA UEE
-    u'\u0e38'   #  0xD8 -> THAI CHARACTER SARA U
-    u'\u0e39'   #  0xD9 -> THAI CHARACTER SARA UU
-    u'\u0e3a'   #  0xDA -> THAI CHARACTER PHINTHU
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\u0e3f'   #  0xDF -> THAI CURRENCY SYMBOL BAHT
-    u'\u0e40'   #  0xE0 -> THAI CHARACTER SARA E
-    u'\u0e41'   #  0xE1 -> THAI CHARACTER SARA AE
-    u'\u0e42'   #  0xE2 -> THAI CHARACTER SARA O
-    u'\u0e43'   #  0xE3 -> THAI CHARACTER SARA AI MAIMUAN
-    u'\u0e44'   #  0xE4 -> THAI CHARACTER SARA AI MAIMALAI
-    u'\u0e45'   #  0xE5 -> THAI CHARACTER LAKKHANGYAO
-    u'\u0e46'   #  0xE6 -> THAI CHARACTER MAIYAMOK
-    u'\u0e47'   #  0xE7 -> THAI CHARACTER MAITAIKHU
-    u'\u0e48'   #  0xE8 -> THAI CHARACTER MAI EK
-    u'\u0e49'   #  0xE9 -> THAI CHARACTER MAI THO
-    u'\u0e4a'   #  0xEA -> THAI CHARACTER MAI TRI
-    u'\u0e4b'   #  0xEB -> THAI CHARACTER MAI CHATTAWA
-    u'\u0e4c'   #  0xEC -> THAI CHARACTER THANTHAKHAT
-    u'\u0e4d'   #  0xED -> THAI CHARACTER NIKHAHIT
-    u'\u0e4e'   #  0xEE -> THAI CHARACTER YAMAKKAN
-    u'\u0e4f'   #  0xEF -> THAI CHARACTER FONGMAN
-    u'\u0e50'   #  0xF0 -> THAI DIGIT ZERO
-    u'\u0e51'   #  0xF1 -> THAI DIGIT ONE
-    u'\u0e52'   #  0xF2 -> THAI DIGIT TWO
-    u'\u0e53'   #  0xF3 -> THAI DIGIT THREE
-    u'\u0e54'   #  0xF4 -> THAI DIGIT FOUR
-    u'\u0e55'   #  0xF5 -> THAI DIGIT FIVE
-    u'\u0e56'   #  0xF6 -> THAI DIGIT SIX
-    u'\u0e57'   #  0xF7 -> THAI DIGIT SEVEN
-    u'\u0e58'   #  0xF8 -> THAI DIGIT EIGHT
-    u'\u0e59'   #  0xF9 -> THAI DIGIT NINE
-    u'\u0e5a'   #  0xFA -> THAI CHARACTER ANGKHANKHU
-    u'\u0e5b'   #  0xFB -> THAI CHARACTER KHOMUT
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-    u'\ufffe'
-)
-
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/undefined.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/undefined.py
deleted file mode 100644
index a077fd6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/undefined.py
+++ /dev/null
@@ -1,49 +0,0 @@
-""" Python 'undefined' Codec
-
-    This codec will always raise a ValueError exception when being
-    used. It is intended for use by the site.py file to switch off
-    automatic string to Unicode coercion.
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        raise UnicodeError("undefined encoding")
-
-    def decode(self,input,errors='strict'):
-        raise UnicodeError("undefined encoding")
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        raise UnicodeError("undefined encoding")
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        raise UnicodeError("undefined encoding")
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='undefined',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/unicode_escape.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/unicode_escape.py
deleted file mode 100644
index 3b77cda..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/unicode_escape.py
+++ /dev/null
@@ -1,45 +0,0 @@
-""" Python 'unicode-escape' Codec
-
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    # Note: Binding these as C functions will result in the class not
-    # converting them to methods. This is intended.
-    encode = codecs.unicode_escape_encode
-    decode = codecs.unicode_escape_decode
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.unicode_escape_encode(input, self.errors)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.unicode_escape_decode(input, self.errors)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='unicode-escape',
-        encode=Codec.encode,
-        decode=Codec.decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/unicode_internal.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/unicode_internal.py
deleted file mode 100644
index 0803e7b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/unicode_internal.py
+++ /dev/null
@@ -1,45 +0,0 @@
-""" Python 'unicode-internal' Codec
-
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    # Note: Binding these as C functions will result in the class not
-    # converting them to methods. This is intended.
-    encode = codecs.unicode_internal_encode
-    decode = codecs.unicode_internal_decode
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.unicode_internal_encode(input, self.errors)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.unicode_internal_decode(input, self.errors)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='unicode-internal',
-        encode=Codec.encode,
-        decode=Codec.decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamwriter=StreamWriter,
-        streamreader=StreamReader,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16.py
deleted file mode 100644
index 566bcc7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16.py
+++ /dev/null
@@ -1,126 +0,0 @@
-""" Python 'utf-16' Codec
-
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""
-import codecs, sys
-
-### Codec APIs
-
-encode = codecs.utf_16_encode
-
-def decode(input, errors='strict'):
-    return codecs.utf_16_decode(input, errors, True)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def __init__(self, errors='strict'):
-        codecs.IncrementalEncoder.__init__(self, errors)
-        self.encoder = None
-
-    def encode(self, input, final=False):
-        if self.encoder is None:
-            result = codecs.utf_16_encode(input, self.errors)[0]
-            if sys.byteorder == 'little':
-                self.encoder = codecs.utf_16_le_encode
-            else:
-                self.encoder = codecs.utf_16_be_encode
-            return result
-        return self.encoder(input, self.errors)[0]
-
-    def reset(self):
-        codecs.IncrementalEncoder.reset(self)
-        self.encoder = None
-
-    def getstate(self):
-        # state info we return to the caller:
-        # 0: stream is in natural order for this platform
-        # 2: endianness hasn't been determined yet
-        # (we're never writing in unnatural order)
-        return (2 if self.encoder is None else 0)
-
-    def setstate(self, state):
-        if state:
-            self.encoder = None
-        else:
-            if sys.byteorder == 'little':
-                self.encoder = codecs.utf_16_le_encode
-            else:
-                self.encoder = codecs.utf_16_be_encode
-
-class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
-    def __init__(self, errors='strict'):
-        codecs.BufferedIncrementalDecoder.__init__(self, errors)
-        self.decoder = None
-
-    def _buffer_decode(self, input, errors, final):
-        if self.decoder is None:
-            (output, consumed, byteorder) = \
-                codecs.utf_16_ex_decode(input, errors, 0, final)
-            if byteorder == -1:
-                self.decoder = codecs.utf_16_le_decode
-            elif byteorder == 1:
-                self.decoder = codecs.utf_16_be_decode
-            elif consumed >= 2:
-                raise UnicodeError("UTF-16 stream does not start with BOM")
-            return (output, consumed)
-        return self.decoder(input, self.errors, final)
-
-    def reset(self):
-        codecs.BufferedIncrementalDecoder.reset(self)
-        self.decoder = None
-
-class StreamWriter(codecs.StreamWriter):
-    def __init__(self, stream, errors='strict'):
-        codecs.StreamWriter.__init__(self, stream, errors)
-        self.encoder = None
-
-    def reset(self):
-        codecs.StreamWriter.reset(self)
-        self.encoder = None
-
-    def encode(self, input, errors='strict'):
-        if self.encoder is None:
-            result = codecs.utf_16_encode(input, errors)
-            if sys.byteorder == 'little':
-                self.encoder = codecs.utf_16_le_encode
-            else:
-                self.encoder = codecs.utf_16_be_encode
-            return result
-        else:
-            return self.encoder(input, errors)
-
-class StreamReader(codecs.StreamReader):
-
-    def reset(self):
-        codecs.StreamReader.reset(self)
-        try:
-            del self.decode
-        except AttributeError:
-            pass
-
-    def decode(self, input, errors='strict'):
-        (object, consumed, byteorder) = \
-            codecs.utf_16_ex_decode(input, errors, 0, False)
-        if byteorder == -1:
-            self.decode = codecs.utf_16_le_decode
-        elif byteorder == 1:
-            self.decode = codecs.utf_16_be_decode
-        elif consumed>=2:
-            raise UnicodeError,"UTF-16 stream does not start with BOM"
-        return (object, consumed)
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='utf-16',
-        encode=encode,
-        decode=decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16_be.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16_be.py
deleted file mode 100644
index 780c499..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16_be.py
+++ /dev/null
@@ -1,42 +0,0 @@
-""" Python 'utf-16-be' Codec
-
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""
-import codecs
-
-### Codec APIs
-
-encode = codecs.utf_16_be_encode
-
-def decode(input, errors='strict'):
-    return codecs.utf_16_be_decode(input, errors, True)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.utf_16_be_encode(input, self.errors)[0]
-
-class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
-    _buffer_decode = codecs.utf_16_be_decode
-
-class StreamWriter(codecs.StreamWriter):
-    encode = codecs.utf_16_be_encode
-
-class StreamReader(codecs.StreamReader):
-    decode = codecs.utf_16_be_decode
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='utf-16-be',
-        encode=encode,
-        decode=decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16_le.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16_le.py
deleted file mode 100644
index 3964124..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_16_le.py
+++ /dev/null
@@ -1,42 +0,0 @@
-""" Python 'utf-16-le' Codec
-
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""
-import codecs
-
-### Codec APIs
-
-encode = codecs.utf_16_le_encode
-
-def decode(input, errors='strict'):
-    return codecs.utf_16_le_decode(input, errors, True)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.utf_16_le_encode(input, self.errors)[0]
-
-class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
-    _buffer_decode = codecs.utf_16_le_decode
-
-class StreamWriter(codecs.StreamWriter):
-    encode = codecs.utf_16_le_encode
-
-class StreamReader(codecs.StreamReader):
-    decode = codecs.utf_16_le_decode
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='utf-16-le',
-        encode=encode,
-        decode=decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32.py
deleted file mode 100644
index 9d836ea..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32.py
+++ /dev/null
@@ -1,150 +0,0 @@
-"""
-Python 'utf-32' Codec
-"""
-import codecs, sys
-
-### Codec APIs
-
-encode = codecs.utf_32_encode
-
-def decode(input, errors='strict'):
-    return codecs.utf_32_decode(input, errors, True)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def __init__(self, errors='strict'):
-        codecs.IncrementalEncoder.__init__(self, errors)
-        self.encoder = None
-
-    def encode(self, input, final=False):
-        if self.encoder is None:
-            result = codecs.utf_32_encode(input, self.errors)[0]
-            if sys.byteorder == 'little':
-                self.encoder = codecs.utf_32_le_encode
-            else:
-                self.encoder = codecs.utf_32_be_encode
-            return result
-        return self.encoder(input, self.errors)[0]
-
-    def reset(self):
-        codecs.IncrementalEncoder.reset(self)
-        self.encoder = None
-
-    def getstate(self):
-        # state info we return to the caller:
-        # 0: stream is in natural order for this platform
-        # 2: endianness hasn't been determined yet
-        # (we're never writing in unnatural order)
-        return (2 if self.encoder is None else 0)
-
-    def setstate(self, state):
-        if state:
-            self.encoder = None
-        else:
-            if sys.byteorder == 'little':
-                self.encoder = codecs.utf_32_le_encode
-            else:
-                self.encoder = codecs.utf_32_be_encode
-
-class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
-    def __init__(self, errors='strict'):
-        codecs.BufferedIncrementalDecoder.__init__(self, errors)
-        self.decoder = None
-
-    def _buffer_decode(self, input, errors, final):
-        if self.decoder is None:
-            (output, consumed, byteorder) = \
-                codecs.utf_32_ex_decode(input, errors, 0, final)
-            if byteorder == -1:
-                self.decoder = codecs.utf_32_le_decode
-            elif byteorder == 1:
-                self.decoder = codecs.utf_32_be_decode
-            elif consumed >= 4:
-                raise UnicodeError("UTF-32 stream does not start with BOM")
-            return (output, consumed)
-        return self.decoder(input, self.errors, final)
-
-    def reset(self):
-        codecs.BufferedIncrementalDecoder.reset(self)
-        self.decoder = None
-
-    def getstate(self):
-        # additonal state info from the base class must be None here,
-        # as it isn't passed along to the caller
-        state = codecs.BufferedIncrementalDecoder.getstate(self)[0]
-        # additional state info we pass to the caller:
-        # 0: stream is in natural order for this platform
-        # 1: stream is in unnatural order
-        # 2: endianness hasn't been determined yet
-        if self.decoder is None:
-            return (state, 2)
-        addstate = int((sys.byteorder == "big") !=
-                       (self.decoder is codecs.utf_32_be_decode))
-        return (state, addstate)
-
-    def setstate(self, state):
-        # state[1] will be ignored by BufferedIncrementalDecoder.setstate()
-        codecs.BufferedIncrementalDecoder.setstate(self, state)
-        state = state[1]
-        if state == 0:
-            self.decoder = (codecs.utf_32_be_decode
-                            if sys.byteorder == "big"
-                            else codecs.utf_32_le_decode)
-        elif state == 1:
-            self.decoder = (codecs.utf_32_le_decode
-                            if sys.byteorder == "big"
-                            else codecs.utf_32_be_decode)
-        else:
-            self.decoder = None
-
-class StreamWriter(codecs.StreamWriter):
-    def __init__(self, stream, errors='strict'):
-        self.encoder = None
-        codecs.StreamWriter.__init__(self, stream, errors)
-
-    def reset(self):
-        codecs.StreamWriter.reset(self)
-        self.encoder = None
-
-    def encode(self, input, errors='strict'):
-        if self.encoder is None:
-            result = codecs.utf_32_encode(input, errors)
-            if sys.byteorder == 'little':
-                self.encoder = codecs.utf_32_le_encode
-            else:
-                self.encoder = codecs.utf_32_be_encode
-            return result
-        else:
-            return self.encoder(input, errors)
-
-class StreamReader(codecs.StreamReader):
-
-    def reset(self):
-        codecs.StreamReader.reset(self)
-        try:
-            del self.decode
-        except AttributeError:
-            pass
-
-    def decode(self, input, errors='strict'):
-        (object, consumed, byteorder) = \
-            codecs.utf_32_ex_decode(input, errors, 0, False)
-        if byteorder == -1:
-            self.decode = codecs.utf_32_le_decode
-        elif byteorder == 1:
-            self.decode = codecs.utf_32_be_decode
-        elif consumed>=4:
-            raise UnicodeError,"UTF-32 stream does not start with BOM"
-        return (object, consumed)
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='utf-32',
-        encode=encode,
-        decode=decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32_be.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32_be.py
deleted file mode 100644
index f7c4b87..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32_be.py
+++ /dev/null
@@ -1,37 +0,0 @@
-"""
-Python 'utf-32-be' Codec
-"""
-import codecs
-
-### Codec APIs
-
-encode = codecs.utf_32_be_encode
-
-def decode(input, errors='strict'):
-    return codecs.utf_32_be_decode(input, errors, True)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.utf_32_be_encode(input, self.errors)[0]
-
-class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
-    _buffer_decode = codecs.utf_32_be_decode
-
-class StreamWriter(codecs.StreamWriter):
-    encode = codecs.utf_32_be_encode
-
-class StreamReader(codecs.StreamReader):
-    decode = codecs.utf_32_be_decode
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='utf-32-be',
-        encode=encode,
-        decode=decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32_le.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32_le.py
deleted file mode 100644
index 4346a12..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_32_le.py
+++ /dev/null
@@ -1,37 +0,0 @@
-"""
-Python 'utf-32-le' Codec
-"""
-import codecs
-
-### Codec APIs
-
-encode = codecs.utf_32_le_encode
-
-def decode(input, errors='strict'):
-    return codecs.utf_32_le_decode(input, errors, True)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.utf_32_le_encode(input, self.errors)[0]
-
-class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
-    _buffer_decode = codecs.utf_32_le_decode
-
-class StreamWriter(codecs.StreamWriter):
-    encode = codecs.utf_32_le_encode
-
-class StreamReader(codecs.StreamReader):
-    decode = codecs.utf_32_le_decode
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='utf-32-le',
-        encode=encode,
-        decode=decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_7.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_7.py
deleted file mode 100644
index 6c30538..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_7.py
+++ /dev/null
@@ -1,38 +0,0 @@
-""" Python 'utf-7' Codec
-
-Written by Brian Quinlan (brian@sweetapp.com).
-"""
-import codecs
-
-### Codec APIs
-
-encode = codecs.utf_7_encode
-
-def decode(input, errors='strict'):
-    return codecs.utf_7_decode(input, errors, True)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.utf_7_encode(input, self.errors)[0]
-
-class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
-    _buffer_decode = codecs.utf_7_decode
-
-class StreamWriter(codecs.StreamWriter):
-    encode = codecs.utf_7_encode
-
-class StreamReader(codecs.StreamReader):
-    decode = codecs.utf_7_decode
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='utf-7',
-        encode=encode,
-        decode=decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_8.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_8.py
deleted file mode 100644
index cc118ac..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_8.py
+++ /dev/null
@@ -1,42 +0,0 @@
-""" Python 'utf-8' Codec
-
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""
-import codecs
-
-### Codec APIs
-
-encode = codecs.utf_8_encode
-
-def decode(input, errors='strict'):
-    return codecs.utf_8_decode(input, errors, True)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.utf_8_encode(input, self.errors)[0]
-
-class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
-    _buffer_decode = codecs.utf_8_decode
-
-class StreamWriter(codecs.StreamWriter):
-    encode = codecs.utf_8_encode
-
-class StreamReader(codecs.StreamReader):
-    decode = codecs.utf_8_decode
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='utf-8',
-        encode=encode,
-        decode=decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_8_sig.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_8_sig.py
deleted file mode 100644
index 8cafef7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/utf_8_sig.py
+++ /dev/null
@@ -1,117 +0,0 @@
-""" Python 'utf-8-sig' Codec
-This work similar to UTF-8 with the following changes:
-
-* On encoding/writing a UTF-8 encoded BOM will be prepended/written as the
-  first three bytes.
-
-* On decoding/reading if the first three bytes are a UTF-8 encoded BOM, these
-  bytes will be skipped.
-"""
-import codecs
-
-### Codec APIs
-
-def encode(input, errors='strict'):
-    return (codecs.BOM_UTF8 + codecs.utf_8_encode(input, errors)[0], len(input))
-
-def decode(input, errors='strict'):
-    prefix = 0
-    if input[:3] == codecs.BOM_UTF8:
-        input = input[3:]
-        prefix = 3
-    (output, consumed) = codecs.utf_8_decode(input, errors, True)
-    return (output, consumed+prefix)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def __init__(self, errors='strict'):
-        codecs.IncrementalEncoder.__init__(self, errors)
-        self.first = 1
-
-    def encode(self, input, final=False):
-        if self.first:
-            self.first = 0
-            return codecs.BOM_UTF8 + codecs.utf_8_encode(input, self.errors)[0]
-        else:
-            return codecs.utf_8_encode(input, self.errors)[0]
-
-    def reset(self):
-        codecs.IncrementalEncoder.reset(self)
-        self.first = 1
-
-    def getstate(self):
-        return self.first
-
-    def setstate(self, state):
-        self.first = state
-
-class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
-    def __init__(self, errors='strict'):
-        codecs.BufferedIncrementalDecoder.__init__(self, errors)
-        self.first = True
-
-    def _buffer_decode(self, input, errors, final):
-        if self.first:
-            if len(input) < 3:
-                if codecs.BOM_UTF8.startswith(input):
-                    # not enough data to decide if this really is a BOM
-                    # => try again on the next call
-                    return (u"", 0)
-                else:
-                    self.first = None
-            else:
-                self.first = None
-                if input[:3] == codecs.BOM_UTF8:
-                    (output, consumed) = codecs.utf_8_decode(input[3:], errors, final)
-                    return (output, consumed+3)
-        return codecs.utf_8_decode(input, errors, final)
-
-    def reset(self):
-        codecs.BufferedIncrementalDecoder.reset(self)
-        self.first = True
-
-class StreamWriter(codecs.StreamWriter):
-    def reset(self):
-        codecs.StreamWriter.reset(self)
-        try:
-            del self.encode
-        except AttributeError:
-            pass
-
-    def encode(self, input, errors='strict'):
-        self.encode = codecs.utf_8_encode
-        return encode(input, errors)
-
-class StreamReader(codecs.StreamReader):
-    def reset(self):
-        codecs.StreamReader.reset(self)
-        try:
-            del self.decode
-        except AttributeError:
-            pass
-
-    def decode(self, input, errors='strict'):
-        if len(input) < 3:
-            if codecs.BOM_UTF8.startswith(input):
-                # not enough data to decide if this is a BOM
-                # => try again on the next call
-                return (u"", 0)
-        elif input[:3] == codecs.BOM_UTF8:
-            self.decode = codecs.utf_8_decode
-            (output, consumed) = codecs.utf_8_decode(input[3:],errors)
-            return (output, consumed+3)
-        # (else) no BOM present
-        self.decode = codecs.utf_8_decode
-        return codecs.utf_8_decode(input, errors)
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='utf-8-sig',
-        encode=encode,
-        decode=decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/uu_codec.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/uu_codec.py
deleted file mode 100644
index ce0fdf9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/uu_codec.py
+++ /dev/null
@@ -1,129 +0,0 @@
-""" Python 'uu_codec' Codec - UU content transfer encoding
-
-    Unlike most of the other codecs which target Unicode, this codec
-    will return Python string objects for both encode and decode.
-
-    Written by Marc-Andre Lemburg (mal@lemburg.com). Some details were
-    adapted from uu.py which was written by Lance Ellinghouse and
-    modified by Jack Jansen and Fredrik Lundh.
-
-"""
-import codecs, binascii
-
-### Codec APIs
-
-def uu_encode(input,errors='strict',filename='<data>',mode=0666):
-
-    """ Encodes the object input and returns a tuple (output
-        object, length consumed).
-
-        errors defines the error handling to apply. It defaults to
-        'strict' handling which is the only currently supported
-        error handling for this codec.
-
-    """
-    assert errors == 'strict'
-    from cStringIO import StringIO
-    from binascii import b2a_uu
-    # using str() because of cStringIO's Unicode undesired Unicode behavior.
-    infile = StringIO(str(input))
-    outfile = StringIO()
-    read = infile.read
-    write = outfile.write
-
-    # Encode
-    write('begin %o %s\n' % (mode & 0777, filename))
-    chunk = read(45)
-    while chunk:
-        write(b2a_uu(chunk))
-        chunk = read(45)
-    write(' \nend\n')
-
-    return (outfile.getvalue(), len(input))
-
-def uu_decode(input,errors='strict'):
-
-    """ Decodes the object input and returns a tuple (output
-        object, length consumed).
-
-        input must be an object which provides the bf_getreadbuf
-        buffer slot. Python strings, buffer objects and memory
-        mapped files are examples of objects providing this slot.
-
-        errors defines the error handling to apply. It defaults to
-        'strict' handling which is the only currently supported
-        error handling for this codec.
-
-        Note: filename and file mode information in the input data is
-        ignored.
-
-    """
-    assert errors == 'strict'
-    from cStringIO import StringIO
-    from binascii import a2b_uu
-    infile = StringIO(str(input))
-    outfile = StringIO()
-    readline = infile.readline
-    write = outfile.write
-
-    # Find start of encoded data
-    while 1:
-        s = readline()
-        if not s:
-            raise ValueError, 'Missing "begin" line in input data'
-        if s[:5] == 'begin':
-            break
-
-    # Decode
-    while 1:
-        s = readline()
-        if not s or \
-           s == 'end\n':
-            break
-        try:
-            data = a2b_uu(s)
-        except binascii.Error, v:
-            # Workaround for broken uuencoders by /Fredrik Lundh
-            nbytes = (((ord(s[0])-32) & 63) * 4 + 5) / 3
-            data = a2b_uu(s[:nbytes])
-            #sys.stderr.write("Warning: %s\n" % str(v))
-        write(data)
-    if not s:
-        raise ValueError, 'Truncated input data'
-
-    return (outfile.getvalue(), len(input))
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return uu_encode(input,errors)
-
-    def decode(self,input,errors='strict'):
-        return uu_decode(input,errors)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return uu_encode(input, self.errors)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return uu_decode(input, self.errors)[0]
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='uu',
-        encode=uu_encode,
-        decode=uu_decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/zlib_codec.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/zlib_codec.py
deleted file mode 100644
index 82557d0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/encodings/zlib_codec.py
+++ /dev/null
@@ -1,102 +0,0 @@
-""" Python 'zlib_codec' Codec - zlib compression encoding
-
-    Unlike most of the other codecs which target Unicode, this codec
-    will return Python string objects for both encode and decode.
-
-    Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-"""
-import codecs
-import zlib # this codec needs the optional zlib module !
-
-### Codec APIs
-
-def zlib_encode(input,errors='strict'):
-
-    """ Encodes the object input and returns a tuple (output
-        object, length consumed).
-
-        errors defines the error handling to apply. It defaults to
-        'strict' handling which is the only currently supported
-        error handling for this codec.
-
-    """
-    assert errors == 'strict'
-    output = zlib.compress(input)
-    return (output, len(input))
-
-def zlib_decode(input,errors='strict'):
-
-    """ Decodes the object input and returns a tuple (output
-        object, length consumed).
-
-        input must be an object which provides the bf_getreadbuf
-        buffer slot. Python strings, buffer objects and memory
-        mapped files are examples of objects providing this slot.
-
-        errors defines the error handling to apply. It defaults to
-        'strict' handling which is the only currently supported
-        error handling for this codec.
-
-    """
-    assert errors == 'strict'
-    output = zlib.decompress(input)
-    return (output, len(input))
-
-class Codec(codecs.Codec):
-
-    def encode(self, input, errors='strict'):
-        return zlib_encode(input, errors)
-    def decode(self, input, errors='strict'):
-        return zlib_decode(input, errors)
-
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def __init__(self, errors='strict'):
-        assert errors == 'strict'
-        self.errors = errors
-        self.compressobj = zlib.compressobj()
-
-    def encode(self, input, final=False):
-        if final:
-            c = self.compressobj.compress(input)
-            return c + self.compressobj.flush()
-        else:
-            return self.compressobj.compress(input)
-
-    def reset(self):
-        self.compressobj = zlib.compressobj()
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def __init__(self, errors='strict'):
-        assert errors == 'strict'
-        self.errors = errors
-        self.decompressobj = zlib.decompressobj()
-
-    def decode(self, input, final=False):
-        if final:
-            c = self.decompressobj.decompress(input)
-            return c + self.decompressobj.flush()
-        else:
-            return self.decompressobj.decompress(input)
-
-    def reset(self):
-        self.decompressobj = zlib.decompressobj()
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='zlib',
-        encode=zlib_encode,
-        decode=zlib_decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/filecmp.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/filecmp.py
deleted file mode 100644
index 8f677c5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/filecmp.py
+++ /dev/null
@@ -1,295 +0,0 @@
-"""Utilities for comparing files and directories.
-
-Classes:
-    dircmp
-
-Functions:
-    cmp(f1, f2, shallow=1) -> int
-    cmpfiles(a, b, common) -> ([], [], [])
-
-"""
-
-import os
-import stat
-from itertools import ifilter, ifilterfalse, imap, izip
-
-__all__ = ["cmp","dircmp","cmpfiles"]
-
-_cache = {}
-BUFSIZE=8*1024
-
-def cmp(f1, f2, shallow=1):
-    """Compare two files.
-
-    Arguments:
-
-    f1 -- First file name
-
-    f2 -- Second file name
-
-    shallow -- Just check stat signature (do not read the files).
-               defaults to 1.
-
-    Return value:
-
-    True if the files are the same, False otherwise.
-
-    This function uses a cache for past comparisons and the results,
-    with a cache invalidation mechanism relying on stale signatures.
-
-    """
-
-    s1 = _sig(os.stat(f1))
-    s2 = _sig(os.stat(f2))
-    if s1[0] != stat.S_IFREG or s2[0] != stat.S_IFREG:
-        return False
-    if shallow and s1 == s2:
-        return True
-    if s1[1] != s2[1]:
-        return False
-
-    result = _cache.get((f1, f2))
-    if result and (s1, s2) == result[:2]:
-        return result[2]
-    outcome = _do_cmp(f1, f2)
-    _cache[f1, f2] = s1, s2, outcome
-    return outcome
-
-def _sig(st):
-    return (stat.S_IFMT(st.st_mode),
-            st.st_size,
-            st.st_mtime)
-
-def _do_cmp(f1, f2):
-    bufsize = BUFSIZE
-    with open(f1, 'rb') as fp1, open(f2, 'rb') as fp2:
-        while True:
-            b1 = fp1.read(bufsize)
-            b2 = fp2.read(bufsize)
-            if b1 != b2:
-                return False
-            if not b1:
-                return True
-
-# Directory comparison class.
-#
-class dircmp:
-    """A class that manages the comparison of 2 directories.
-
-    dircmp(a,b,ignore=None,hide=None)
-      A and B are directories.
-      IGNORE is a list of names to ignore,
-        defaults to ['RCS', 'CVS', 'tags'].
-      HIDE is a list of names to hide,
-        defaults to [os.curdir, os.pardir].
-
-    High level usage:
-      x = dircmp(dir1, dir2)
-      x.report() -> prints a report on the differences between dir1 and dir2
-       or
-      x.report_partial_closure() -> prints report on differences between dir1
-            and dir2, and reports on common immediate subdirectories.
-      x.report_full_closure() -> like report_partial_closure,
-            but fully recursive.
-
-    Attributes:
-     left_list, right_list: The files in dir1 and dir2,
-        filtered by hide and ignore.
-     common: a list of names in both dir1 and dir2.
-     left_only, right_only: names only in dir1, dir2.
-     common_dirs: subdirectories in both dir1 and dir2.
-     common_files: files in both dir1 and dir2.
-     common_funny: names in both dir1 and dir2 where the type differs between
-        dir1 and dir2, or the name is not stat-able.
-     same_files: list of identical files.
-     diff_files: list of filenames which differ.
-     funny_files: list of files which could not be compared.
-     subdirs: a dictionary of dircmp objects, keyed by names in common_dirs.
-     """
-
-    def __init__(self, a, b, ignore=None, hide=None): # Initialize
-        self.left = a
-        self.right = b
-        if hide is None:
-            self.hide = [os.curdir, os.pardir] # Names never to be shown
-        else:
-            self.hide = hide
-        if ignore is None:
-            self.ignore = ['RCS', 'CVS', 'tags'] # Names ignored in comparison
-        else:
-            self.ignore = ignore
-
-    def phase0(self): # Compare everything except common subdirectories
-        self.left_list = _filter(os.listdir(self.left),
-                                 self.hide+self.ignore)
-        self.right_list = _filter(os.listdir(self.right),
-                                  self.hide+self.ignore)
-        self.left_list.sort()
-        self.right_list.sort()
-
-    def phase1(self): # Compute common names
-        a = dict(izip(imap(os.path.normcase, self.left_list), self.left_list))
-        b = dict(izip(imap(os.path.normcase, self.right_list), self.right_list))
-        self.common = map(a.__getitem__, ifilter(b.__contains__, a))
-        self.left_only = map(a.__getitem__, ifilterfalse(b.__contains__, a))
-        self.right_only = map(b.__getitem__, ifilterfalse(a.__contains__, b))
-
-    def phase2(self): # Distinguish files, directories, funnies
-        self.common_dirs = []
-        self.common_files = []
-        self.common_funny = []
-
-        for x in self.common:
-            a_path = os.path.join(self.left, x)
-            b_path = os.path.join(self.right, x)
-
-            ok = 1
-            try:
-                a_stat = os.stat(a_path)
-            except os.error, why:
-                # print 'Can\'t stat', a_path, ':', why[1]
-                ok = 0
-            try:
-                b_stat = os.stat(b_path)
-            except os.error, why:
-                # print 'Can\'t stat', b_path, ':', why[1]
-                ok = 0
-
-            if ok:
-                a_type = stat.S_IFMT(a_stat.st_mode)
-                b_type = stat.S_IFMT(b_stat.st_mode)
-                if a_type != b_type:
-                    self.common_funny.append(x)
-                elif stat.S_ISDIR(a_type):
-                    self.common_dirs.append(x)
-                elif stat.S_ISREG(a_type):
-                    self.common_files.append(x)
-                else:
-                    self.common_funny.append(x)
-            else:
-                self.common_funny.append(x)
-
-    def phase3(self): # Find out differences between common files
-        xx = cmpfiles(self.left, self.right, self.common_files)
-        self.same_files, self.diff_files, self.funny_files = xx
-
-    def phase4(self): # Find out differences between common subdirectories
-        # A new dircmp object is created for each common subdirectory,
-        # these are stored in a dictionary indexed by filename.
-        # The hide and ignore properties are inherited from the parent
-        self.subdirs = {}
-        for x in self.common_dirs:
-            a_x = os.path.join(self.left, x)
-            b_x = os.path.join(self.right, x)
-            self.subdirs[x]  = dircmp(a_x, b_x, self.ignore, self.hide)
-
-    def phase4_closure(self): # Recursively call phase4() on subdirectories
-        self.phase4()
-        for sd in self.subdirs.itervalues():
-            sd.phase4_closure()
-
-    def report(self): # Print a report on the differences between a and b
-        # Output format is purposely lousy
-        print 'diff', self.left, self.right
-        if self.left_only:
-            self.left_only.sort()
-            print 'Only in', self.left, ':', self.left_only
-        if self.right_only:
-            self.right_only.sort()
-            print 'Only in', self.right, ':', self.right_only
-        if self.same_files:
-            self.same_files.sort()
-            print 'Identical files :', self.same_files
-        if self.diff_files:
-            self.diff_files.sort()
-            print 'Differing files :', self.diff_files
-        if self.funny_files:
-            self.funny_files.sort()
-            print 'Trouble with common files :', self.funny_files
-        if self.common_dirs:
-            self.common_dirs.sort()
-            print 'Common subdirectories :', self.common_dirs
-        if self.common_funny:
-            self.common_funny.sort()
-            print 'Common funny cases :', self.common_funny
-
-    def report_partial_closure(self): # Print reports on self and on subdirs
-        self.report()
-        for sd in self.subdirs.itervalues():
-            print
-            sd.report()
-
-    def report_full_closure(self): # Report on self and subdirs recursively
-        self.report()
-        for sd in self.subdirs.itervalues():
-            print
-            sd.report_full_closure()
-
-    methodmap = dict(subdirs=phase4,
-                     same_files=phase3, diff_files=phase3, funny_files=phase3,
-                     common_dirs = phase2, common_files=phase2, common_funny=phase2,
-                     common=phase1, left_only=phase1, right_only=phase1,
-                     left_list=phase0, right_list=phase0)
-
-    def __getattr__(self, attr):
-        if attr not in self.methodmap:
-            raise AttributeError, attr
-        self.methodmap[attr](self)
-        return getattr(self, attr)
-
-def cmpfiles(a, b, common, shallow=1):
-    """Compare common files in two directories.
-
-    a, b -- directory names
-    common -- list of file names found in both directories
-    shallow -- if true, do comparison based solely on stat() information
-
-    Returns a tuple of three lists:
-      files that compare equal
-      files that are different
-      filenames that aren't regular files.
-
-    """
-    res = ([], [], [])
-    for x in common:
-        ax = os.path.join(a, x)
-        bx = os.path.join(b, x)
-        res[_cmp(ax, bx, shallow)].append(x)
-    return res
-
-
-# Compare two files.
-# Return:
-#       0 for equal
-#       1 for different
-#       2 for funny cases (can't stat, etc.)
-#
-def _cmp(a, b, sh, abs=abs, cmp=cmp):
-    try:
-        return not abs(cmp(a, b, sh))
-    except os.error:
-        return 2
-
-
-# Return a copy with items that occur in skip removed.
-#
-def _filter(flist, skip):
-    return list(ifilterfalse(skip.__contains__, flist))
-
-
-# Demonstration and testing.
-#
-def demo():
-    import sys
-    import getopt
-    options, args = getopt.getopt(sys.argv[1:], 'r')
-    if len(args) != 2:
-        raise getopt.GetoptError('need exactly two args', None)
-    dd = dircmp(args[0], args[1])
-    if ('-r', '') in options:
-        dd.report_full_closure()
-    else:
-        dd.report()
-
-if __name__ == '__main__':
-    demo()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/fileinput.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/fileinput.py
deleted file mode 100644
index c9c1b2f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/fileinput.py
+++ /dev/null
@@ -1,413 +0,0 @@
-"""Helper class to quickly write a loop over all standard input files.
-
-Typical use is:
-
-    import fileinput
-    for line in fileinput.input():
-        process(line)
-
-This iterates over the lines of all files listed in sys.argv[1:],
-defaulting to sys.stdin if the list is empty.  If a filename is '-' it
-is also replaced by sys.stdin.  To specify an alternative list of
-filenames, pass it as the argument to input().  A single file name is
-also allowed.
-
-Functions filename(), lineno() return the filename and cumulative line
-number of the line that has just been read; filelineno() returns its
-line number in the current file; isfirstline() returns true iff the
-line just read is the first line of its file; isstdin() returns true
-iff the line was read from sys.stdin.  Function nextfile() closes the
-current file so that the next iteration will read the first line from
-the next file (if any); lines not read from the file will not count
-towards the cumulative line count; the filename is not changed until
-after the first line of the next file has been read.  Function close()
-closes the sequence.
-
-Before any lines have been read, filename() returns None and both line
-numbers are zero; nextfile() has no effect.  After all lines have been
-read, filename() and the line number functions return the values
-pertaining to the last line read; nextfile() has no effect.
-
-All files are opened in text mode by default, you can override this by
-setting the mode parameter to input() or FileInput.__init__().
-If an I/O error occurs during opening or reading a file, the IOError
-exception is raised.
-
-If sys.stdin is used more than once, the second and further use will
-return no lines, except perhaps for interactive use, or if it has been
-explicitly reset (e.g. using sys.stdin.seek(0)).
-
-Empty files are opened and immediately closed; the only time their
-presence in the list of filenames is noticeable at all is when the
-last file opened is empty.
-
-It is possible that the last line of a file doesn't end in a newline
-character; otherwise lines are returned including the trailing
-newline.
-
-Class FileInput is the implementation; its methods filename(),
-lineno(), fileline(), isfirstline(), isstdin(), nextfile() and close()
-correspond to the functions in the module.  In addition it has a
-readline() method which returns the next input line, and a
-__getitem__() method which implements the sequence behavior.  The
-sequence must be accessed in strictly sequential order; sequence
-access and readline() cannot be mixed.
-
-Optional in-place filtering: if the keyword argument inplace=1 is
-passed to input() or to the FileInput constructor, the file is moved
-to a backup file and standard output is directed to the input file.
-This makes it possible to write a filter that rewrites its input file
-in place.  If the keyword argument backup=".<some extension>" is also
-given, it specifies the extension for the backup file, and the backup
-file remains around; by default, the extension is ".bak" and it is
-deleted when the output file is closed.  In-place filtering is
-disabled when standard input is read.  XXX The current implementation
-does not work for MS-DOS 8+3 filesystems.
-
-Performance: this module is unfortunately one of the slower ways of
-processing large numbers of input lines.  Nevertheless, a significant
-speed-up has been obtained by using readlines(bufsize) instead of
-readline().  A new keyword argument, bufsize=N, is present on the
-input() function and the FileInput() class to override the default
-buffer size.
-
-XXX Possible additions:
-
-- optional getopt argument processing
-- isatty()
-- read(), read(size), even readlines()
-
-"""
-
-import sys, os
-
-__all__ = ["input","close","nextfile","filename","lineno","filelineno",
-           "isfirstline","isstdin","FileInput"]
-
-_state = None
-
-DEFAULT_BUFSIZE = 8*1024
-
-def input(files=None, inplace=0, backup="", bufsize=0,
-          mode="r", openhook=None):
-    """input([files[, inplace[, backup[, mode[, openhook]]]]])
-
-    Create an instance of the FileInput class. The instance will be used
-    as global state for the functions of this module, and is also returned
-    to use during iteration. The parameters to this function will be passed
-    along to the constructor of the FileInput class.
-    """
-    global _state
-    if _state and _state._file:
-        raise RuntimeError, "input() already active"
-    _state = FileInput(files, inplace, backup, bufsize, mode, openhook)
-    return _state
-
-def close():
-    """Close the sequence."""
-    global _state
-    state = _state
-    _state = None
-    if state:
-        state.close()
-
-def nextfile():
-    """
-    Close the current file so that the next iteration will read the first
-    line from the next file (if any); lines not read from the file will
-    not count towards the cumulative line count. The filename is not
-    changed until after the first line of the next file has been read.
-    Before the first line has been read, this function has no effect;
-    it cannot be used to skip the first file. After the last line of the
-    last file has been read, this function has no effect.
-    """
-    if not _state:
-        raise RuntimeError, "no active input()"
-    return _state.nextfile()
-
-def filename():
-    """
-    Return the name of the file currently being read.
-    Before the first line has been read, returns None.
-    """
-    if not _state:
-        raise RuntimeError, "no active input()"
-    return _state.filename()
-
-def lineno():
-    """
-    Return the cumulative line number of the line that has just been read.
-    Before the first line has been read, returns 0. After the last line
-    of the last file has been read, returns the line number of that line.
-    """
-    if not _state:
-        raise RuntimeError, "no active input()"
-    return _state.lineno()
-
-def filelineno():
-    """
-    Return the line number in the current file. Before the first line
-    has been read, returns 0. After the last line of the last file has
-    been read, returns the line number of that line within the file.
-    """
-    if not _state:
-        raise RuntimeError, "no active input()"
-    return _state.filelineno()
-
-def fileno():
-    """
-    Return the file number of the current file. When no file is currently
-    opened, returns -1.
-    """
-    if not _state:
-        raise RuntimeError, "no active input()"
-    return _state.fileno()
-
-def isfirstline():
-    """
-    Returns true the line just read is the first line of its file,
-    otherwise returns false.
-    """
-    if not _state:
-        raise RuntimeError, "no active input()"
-    return _state.isfirstline()
-
-def isstdin():
-    """
-    Returns true if the last line was read from sys.stdin,
-    otherwise returns false.
-    """
-    if not _state:
-        raise RuntimeError, "no active input()"
-    return _state.isstdin()
-
-class FileInput:
-    """class FileInput([files[, inplace[, backup[, mode[, openhook]]]]])
-
-    Class FileInput is the implementation of the module; its methods
-    filename(), lineno(), fileline(), isfirstline(), isstdin(), fileno(),
-    nextfile() and close() correspond to the functions of the same name
-    in the module.
-    In addition it has a readline() method which returns the next
-    input line, and a __getitem__() method which implements the
-    sequence behavior. The sequence must be accessed in strictly
-    sequential order; random access and readline() cannot be mixed.
-    """
-
-    def __init__(self, files=None, inplace=0, backup="", bufsize=0,
-                 mode="r", openhook=None):
-        if isinstance(files, basestring):
-            files = (files,)
-        else:
-            if files is None:
-                files = sys.argv[1:]
-            if not files:
-                files = ('-',)
-            else:
-                files = tuple(files)
-        self._files = files
-        self._inplace = inplace
-        self._backup = backup
-        self._bufsize = bufsize or DEFAULT_BUFSIZE
-        self._savestdout = None
-        self._output = None
-        self._filename = None
-        self._lineno = 0
-        self._filelineno = 0
-        self._file = None
-        self._isstdin = False
-        self._backupfilename = None
-        self._buffer = []
-        self._bufindex = 0
-        # restrict mode argument to reading modes
-        if mode not in ('r', 'rU', 'U', 'rb'):
-            raise ValueError("FileInput opening mode must be one of "
-                             "'r', 'rU', 'U' and 'rb'")
-        self._mode = mode
-        if inplace and openhook:
-            raise ValueError("FileInput cannot use an opening hook in inplace mode")
-        elif openhook and not hasattr(openhook, '__call__'):
-            raise ValueError("FileInput openhook must be callable")
-        self._openhook = openhook
-
-    def __del__(self):
-        self.close()
-
-    def close(self):
-        self.nextfile()
-        self._files = ()
-
-    def __iter__(self):
-        return self
-
-    def next(self):
-        try:
-            line = self._buffer[self._bufindex]
-        except IndexError:
-            pass
-        else:
-            self._bufindex += 1
-            self._lineno += 1
-            self._filelineno += 1
-            return line
-        line = self.readline()
-        if not line:
-            raise StopIteration
-        return line
-
-    def __getitem__(self, i):
-        if i != self._lineno:
-            raise RuntimeError, "accessing lines out of order"
-        try:
-            return self.next()
-        except StopIteration:
-            raise IndexError, "end of input reached"
-
-    def nextfile(self):
-        savestdout = self._savestdout
-        self._savestdout = 0
-        if savestdout:
-            sys.stdout = savestdout
-
-        output = self._output
-        self._output = 0
-        if output:
-            output.close()
-
-        file = self._file
-        self._file = 0
-        if file and not self._isstdin:
-            file.close()
-
-        backupfilename = self._backupfilename
-        self._backupfilename = 0
-        if backupfilename and not self._backup:
-            try: os.unlink(backupfilename)
-            except OSError: pass
-
-        self._isstdin = False
-        self._buffer = []
-        self._bufindex = 0
-
-    def readline(self):
-        try:
-            line = self._buffer[self._bufindex]
-        except IndexError:
-            pass
-        else:
-            self._bufindex += 1
-            self._lineno += 1
-            self._filelineno += 1
-            return line
-        if not self._file:
-            if not self._files:
-                return ""
-            self._filename = self._files[0]
-            self._files = self._files[1:]
-            self._filelineno = 0
-            self._file = None
-            self._isstdin = False
-            self._backupfilename = 0
-            if self._filename == '-':
-                self._filename = '<stdin>'
-                self._file = sys.stdin
-                self._isstdin = True
-            else:
-                if self._inplace:
-                    self._backupfilename = (
-                        self._filename + (self._backup or os.extsep+"bak"))
-                    try: os.unlink(self._backupfilename)
-                    except os.error: pass
-                    # The next few lines may raise IOError
-                    os.rename(self._filename, self._backupfilename)
-                    self._file = open(self._backupfilename, self._mode)
-                    try:
-                        perm = os.fstat(self._file.fileno()).st_mode
-                    except OSError:
-                        self._output = open(self._filename, "w")
-                    else:
-                        fd = os.open(self._filename,
-                                     os.O_CREAT | os.O_WRONLY | os.O_TRUNC,
-                                     perm)
-                        self._output = os.fdopen(fd, "w")
-                        try:
-                            if hasattr(os, 'chmod'):
-                                os.chmod(self._filename, perm)
-                        except OSError:
-                            pass
-                    self._savestdout = sys.stdout
-                    sys.stdout = self._output
-                else:
-                    # This may raise IOError
-                    if self._openhook:
-                        self._file = self._openhook(self._filename, self._mode)
-                    else:
-                        self._file = open(self._filename, self._mode)
-        self._buffer = self._file.readlines(self._bufsize)
-        self._bufindex = 0
-        if not self._buffer:
-            self.nextfile()
-        # Recursive call
-        return self.readline()
-
-    def filename(self):
-        return self._filename
-
-    def lineno(self):
-        return self._lineno
-
-    def filelineno(self):
-        return self._filelineno
-
-    def fileno(self):
-        if self._file:
-            try:
-                return self._file.fileno()
-            except ValueError:
-                return -1
-        else:
-            return -1
-
-    def isfirstline(self):
-        return self._filelineno == 1
-
-    def isstdin(self):
-        return self._isstdin
-
-
-def hook_compressed(filename, mode):
-    ext = os.path.splitext(filename)[1]
-    if ext == '.gz':
-        import gzip
-        return gzip.open(filename, mode)
-    elif ext == '.bz2':
-        import bz2
-        return bz2.BZ2File(filename, mode)
-    else:
-        return open(filename, mode)
-
-
-def hook_encoded(encoding):
-    import codecs
-    def openhook(filename, mode):
-        return codecs.open(filename, mode, encoding)
-    return openhook
-
-
-def _test():
-    import getopt
-    inplace = 0
-    backup = 0
-    opts, args = getopt.getopt(sys.argv[1:], "ib:")
-    for o, a in opts:
-        if o == '-i': inplace = 1
-        if o == '-b': backup = a
-    for line in input(args, inplace=inplace, backup=backup):
-        if line[-1:] == '\n': line = line[:-1]
-        if line[-1:] == '\r': line = line[:-1]
-        print "%d: %s[%d]%s %s" % (lineno(), filename(), filelineno(),
-                                   isfirstline() and "*" or "", line)
-    print "%d: %s[%d]" % (lineno(), filename(), filelineno())
-
-if __name__ == '__main__':
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/fnmatch.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/fnmatch.py
deleted file mode 100644
index b0800f7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/fnmatch.py
+++ /dev/null
@@ -1,116 +0,0 @@
-"""Filename matching with shell patterns.
-
-fnmatch(FILENAME, PATTERN) matches according to the local convention.
-fnmatchcase(FILENAME, PATTERN) always takes case in account.
-
-The functions operate by translating the pattern into a regular
-expression.  They cache the compiled regular expressions for speed.
-
-The function translate(PATTERN) returns a regular expression
-corresponding to PATTERN.  (It does not compile it.)
-"""
-
-import re
-
-__all__ = ["filter", "fnmatch", "fnmatchcase", "translate"]
-
-_cache = {}
-_MAXCACHE = 100
-
-def _purge():
-    """Clear the pattern cache"""
-    _cache.clear()
-
-def fnmatch(name, pat):
-    """Test whether FILENAME matches PATTERN.
-
-    Patterns are Unix shell style:
-
-    *       matches everything
-    ?       matches any single character
-    [seq]   matches any character in seq
-    [!seq]  matches any char not in seq
-
-    An initial period in FILENAME is not special.
-    Both FILENAME and PATTERN are first case-normalized
-    if the operating system requires it.
-    If you don't want this, use fnmatchcase(FILENAME, PATTERN).
-    """
-
-    import os
-    name = os.path.normcase(name)
-    pat = os.path.normcase(pat)
-    return fnmatchcase(name, pat)
-
-def filter(names, pat):
-    """Return the subset of the list NAMES that match PAT"""
-    import os,posixpath
-    result=[]
-    pat=os.path.normcase(pat)
-    if not pat in _cache:
-        res = translate(pat)
-        if len(_cache) >= _MAXCACHE:
-            _cache.clear()
-        _cache[pat] = re.compile(res)
-    match=_cache[pat].match
-    if os.path is posixpath:
-        # normcase on posix is NOP. Optimize it away from the loop.
-        for name in names:
-            if match(name):
-                result.append(name)
-    else:
-        for name in names:
-            if match(os.path.normcase(name)):
-                result.append(name)
-    return result
-
-def fnmatchcase(name, pat):
-    """Test whether FILENAME matches PATTERN, including case.
-
-    This is a version of fnmatch() which doesn't case-normalize
-    its arguments.
-    """
-
-    if not pat in _cache:
-        res = translate(pat)
-        if len(_cache) >= _MAXCACHE:
-            _cache.clear()
-        _cache[pat] = re.compile(res)
-    return _cache[pat].match(name) is not None
-
-def translate(pat):
-    """Translate a shell PATTERN to a regular expression.
-
-    There is no way to quote meta-characters.
-    """
-
-    i, n = 0, len(pat)
-    res = ''
-    while i < n:
-        c = pat[i]
-        i = i+1
-        if c == '*':
-            res = res + '.*'
-        elif c == '?':
-            res = res + '.'
-        elif c == '[':
-            j = i
-            if j < n and pat[j] == '!':
-                j = j+1
-            if j < n and pat[j] == ']':
-                j = j+1
-            while j < n and pat[j] != ']':
-                j = j+1
-            if j >= n:
-                res = res + '\\['
-            else:
-                stuff = pat[i:j].replace('\\','\\\\')
-                i = j+1
-                if stuff[0] == '!':
-                    stuff = '^' + stuff[1:]
-                elif stuff[0] == '^':
-                    stuff = '\\' + stuff
-                res = '%s[%s]' % (res, stuff)
-        else:
-            res = res + re.escape(c)
-    return res + '\Z(?ms)'
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/formatter.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/formatter.py
deleted file mode 100644
index 8413f8c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/formatter.py
+++ /dev/null
@@ -1,445 +0,0 @@
-"""Generic output formatting.
-
-Formatter objects transform an abstract flow of formatting events into
-specific output events on writer objects. Formatters manage several stack
-structures to allow various properties of a writer object to be changed and
-restored; writers need not be able to handle relative changes nor any sort
-of ``change back'' operation. Specific writer properties which may be
-controlled via formatter objects are horizontal alignment, font, and left
-margin indentations. A mechanism is provided which supports providing
-arbitrary, non-exclusive style settings to a writer as well. Additional
-interfaces facilitate formatting events which are not reversible, such as
-paragraph separation.
-
-Writer objects encapsulate device interfaces. Abstract devices, such as
-file formats, are supported as well as physical devices. The provided
-implementations all work with abstract devices. The interface makes
-available mechanisms for setting the properties which formatter objects
-manage and inserting data into the output.
-"""
-
-import sys
-
-
-AS_IS = None
-
-
-class NullFormatter:
-    """A formatter which does nothing.
-
-    If the writer parameter is omitted, a NullWriter instance is created.
-    No methods of the writer are called by NullFormatter instances.
-
-    Implementations should inherit from this class if implementing a writer
-    interface but don't need to inherit any implementation.
-
-    """
-
-    def __init__(self, writer=None):
-        if writer is None:
-            writer = NullWriter()
-        self.writer = writer
-    def end_paragraph(self, blankline): pass
-    def add_line_break(self): pass
-    def add_hor_rule(self, *args, **kw): pass
-    def add_label_data(self, format, counter, blankline=None): pass
-    def add_flowing_data(self, data): pass
-    def add_literal_data(self, data): pass
-    def flush_softspace(self): pass
-    def push_alignment(self, align): pass
-    def pop_alignment(self): pass
-    def push_font(self, x): pass
-    def pop_font(self): pass
-    def push_margin(self, margin): pass
-    def pop_margin(self): pass
-    def set_spacing(self, spacing): pass
-    def push_style(self, *styles): pass
-    def pop_style(self, n=1): pass
-    def assert_line_data(self, flag=1): pass
-
-
-class AbstractFormatter:
-    """The standard formatter.
-
-    This implementation has demonstrated wide applicability to many writers,
-    and may be used directly in most circumstances.  It has been used to
-    implement a full-featured World Wide Web browser.
-
-    """
-
-    #  Space handling policy:  blank spaces at the boundary between elements
-    #  are handled by the outermost context.  "Literal" data is not checked
-    #  to determine context, so spaces in literal data are handled directly
-    #  in all circumstances.
-
-    def __init__(self, writer):
-        self.writer = writer            # Output device
-        self.align = None               # Current alignment
-        self.align_stack = []           # Alignment stack
-        self.font_stack = []            # Font state
-        self.margin_stack = []          # Margin state
-        self.spacing = None             # Vertical spacing state
-        self.style_stack = []           # Other state, e.g. color
-        self.nospace = 1                # Should leading space be suppressed
-        self.softspace = 0              # Should a space be inserted
-        self.para_end = 1               # Just ended a paragraph
-        self.parskip = 0                # Skipped space between paragraphs?
-        self.hard_break = 1             # Have a hard break
-        self.have_label = 0
-
-    def end_paragraph(self, blankline):
-        if not self.hard_break:
-            self.writer.send_line_break()
-            self.have_label = 0
-        if self.parskip < blankline and not self.have_label:
-            self.writer.send_paragraph(blankline - self.parskip)
-            self.parskip = blankline
-            self.have_label = 0
-        self.hard_break = self.nospace = self.para_end = 1
-        self.softspace = 0
-
-    def add_line_break(self):
-        if not (self.hard_break or self.para_end):
-            self.writer.send_line_break()
-            self.have_label = self.parskip = 0
-        self.hard_break = self.nospace = 1
-        self.softspace = 0
-
-    def add_hor_rule(self, *args, **kw):
-        if not self.hard_break:
-            self.writer.send_line_break()
-        self.writer.send_hor_rule(*args, **kw)
-        self.hard_break = self.nospace = 1
-        self.have_label = self.para_end = self.softspace = self.parskip = 0
-
-    def add_label_data(self, format, counter, blankline = None):
-        if self.have_label or not self.hard_break:
-            self.writer.send_line_break()
-        if not self.para_end:
-            self.writer.send_paragraph((blankline and 1) or 0)
-        if isinstance(format, str):
-            self.writer.send_label_data(self.format_counter(format, counter))
-        else:
-            self.writer.send_label_data(format)
-        self.nospace = self.have_label = self.hard_break = self.para_end = 1
-        self.softspace = self.parskip = 0
-
-    def format_counter(self, format, counter):
-        label = ''
-        for c in format:
-            if c == '1':
-                label = label + ('%d' % counter)
-            elif c in 'aA':
-                if counter > 0:
-                    label = label + self.format_letter(c, counter)
-            elif c in 'iI':
-                if counter > 0:
-                    label = label + self.format_roman(c, counter)
-            else:
-                label = label + c
-        return label
-
-    def format_letter(self, case, counter):
-        label = ''
-        while counter > 0:
-            counter, x = divmod(counter-1, 26)
-            # This makes a strong assumption that lowercase letters
-            # and uppercase letters form two contiguous blocks, with
-            # letters in order!
-            s = chr(ord(case) + x)
-            label = s + label
-        return label
-
-    def format_roman(self, case, counter):
-        ones = ['i', 'x', 'c', 'm']
-        fives = ['v', 'l', 'd']
-        label, index = '', 0
-        # This will die of IndexError when counter is too big
-        while counter > 0:
-            counter, x = divmod(counter, 10)
-            if x == 9:
-                label = ones[index] + ones[index+1] + label
-            elif x == 4:
-                label = ones[index] + fives[index] + label
-            else:
-                if x >= 5:
-                    s = fives[index]
-                    x = x-5
-                else:
-                    s = ''
-                s = s + ones[index]*x
-                label = s + label
-            index = index + 1
-        if case == 'I':
-            return label.upper()
-        return label
-
-    def add_flowing_data(self, data):
-        if not data: return
-        prespace = data[:1].isspace()
-        postspace = data[-1:].isspace()
-        data = " ".join(data.split())
-        if self.nospace and not data:
-            return
-        elif prespace or self.softspace:
-            if not data:
-                if not self.nospace:
-                    self.softspace = 1
-                    self.parskip = 0
-                return
-            if not self.nospace:
-                data = ' ' + data
-        self.hard_break = self.nospace = self.para_end = \
-                          self.parskip = self.have_label = 0
-        self.softspace = postspace
-        self.writer.send_flowing_data(data)
-
-    def add_literal_data(self, data):
-        if not data: return
-        if self.softspace:
-            self.writer.send_flowing_data(" ")
-        self.hard_break = data[-1:] == '\n'
-        self.nospace = self.para_end = self.softspace = \
-                       self.parskip = self.have_label = 0
-        self.writer.send_literal_data(data)
-
-    def flush_softspace(self):
-        if self.softspace:
-            self.hard_break = self.para_end = self.parskip = \
-                              self.have_label = self.softspace = 0
-            self.nospace = 1
-            self.writer.send_flowing_data(' ')
-
-    def push_alignment(self, align):
-        if align and align != self.align:
-            self.writer.new_alignment(align)
-            self.align = align
-            self.align_stack.append(align)
-        else:
-            self.align_stack.append(self.align)
-
-    def pop_alignment(self):
-        if self.align_stack:
-            del self.align_stack[-1]
-        if self.align_stack:
-            self.align = align = self.align_stack[-1]
-            self.writer.new_alignment(align)
-        else:
-            self.align = None
-            self.writer.new_alignment(None)
-
-    def push_font(self, font):
-        size, i, b, tt = font
-        if self.softspace:
-            self.hard_break = self.para_end = self.softspace = 0
-            self.nospace = 1
-            self.writer.send_flowing_data(' ')
-        if self.font_stack:
-            csize, ci, cb, ctt = self.font_stack[-1]
-            if size is AS_IS: size = csize
-            if i is AS_IS: i = ci
-            if b is AS_IS: b = cb
-            if tt is AS_IS: tt = ctt
-        font = (size, i, b, tt)
-        self.font_stack.append(font)
-        self.writer.new_font(font)
-
-    def pop_font(self):
-        if self.font_stack:
-            del self.font_stack[-1]
-        if self.font_stack:
-            font = self.font_stack[-1]
-        else:
-            font = None
-        self.writer.new_font(font)
-
-    def push_margin(self, margin):
-        self.margin_stack.append(margin)
-        fstack = filter(None, self.margin_stack)
-        if not margin and fstack:
-            margin = fstack[-1]
-        self.writer.new_margin(margin, len(fstack))
-
-    def pop_margin(self):
-        if self.margin_stack:
-            del self.margin_stack[-1]
-        fstack = filter(None, self.margin_stack)
-        if fstack:
-            margin = fstack[-1]
-        else:
-            margin = None
-        self.writer.new_margin(margin, len(fstack))
-
-    def set_spacing(self, spacing):
-        self.spacing = spacing
-        self.writer.new_spacing(spacing)
-
-    def push_style(self, *styles):
-        if self.softspace:
-            self.hard_break = self.para_end = self.softspace = 0
-            self.nospace = 1
-            self.writer.send_flowing_data(' ')
-        for style in styles:
-            self.style_stack.append(style)
-        self.writer.new_styles(tuple(self.style_stack))
-
-    def pop_style(self, n=1):
-        del self.style_stack[-n:]
-        self.writer.new_styles(tuple(self.style_stack))
-
-    def assert_line_data(self, flag=1):
-        self.nospace = self.hard_break = not flag
-        self.para_end = self.parskip = self.have_label = 0
-
-
-class NullWriter:
-    """Minimal writer interface to use in testing & inheritance.
-
-    A writer which only provides the interface definition; no actions are
-    taken on any methods.  This should be the base class for all writers
-    which do not need to inherit any implementation methods.
-
-    """
-    def __init__(self): pass
-    def flush(self): pass
-    def new_alignment(self, align): pass
-    def new_font(self, font): pass
-    def new_margin(self, margin, level): pass
-    def new_spacing(self, spacing): pass
-    def new_styles(self, styles): pass
-    def send_paragraph(self, blankline): pass
-    def send_line_break(self): pass
-    def send_hor_rule(self, *args, **kw): pass
-    def send_label_data(self, data): pass
-    def send_flowing_data(self, data): pass
-    def send_literal_data(self, data): pass
-
-
-class AbstractWriter(NullWriter):
-    """A writer which can be used in debugging formatters, but not much else.
-
-    Each method simply announces itself by printing its name and
-    arguments on standard output.
-
-    """
-
-    def new_alignment(self, align):
-        print "new_alignment(%r)" % (align,)
-
-    def new_font(self, font):
-        print "new_font(%r)" % (font,)
-
-    def new_margin(self, margin, level):
-        print "new_margin(%r, %d)" % (margin, level)
-
-    def new_spacing(self, spacing):
-        print "new_spacing(%r)" % (spacing,)
-
-    def new_styles(self, styles):
-        print "new_styles(%r)" % (styles,)
-
-    def send_paragraph(self, blankline):
-        print "send_paragraph(%r)" % (blankline,)
-
-    def send_line_break(self):
-        print "send_line_break()"
-
-    def send_hor_rule(self, *args, **kw):
-        print "send_hor_rule()"
-
-    def send_label_data(self, data):
-        print "send_label_data(%r)" % (data,)
-
-    def send_flowing_data(self, data):
-        print "send_flowing_data(%r)" % (data,)
-
-    def send_literal_data(self, data):
-        print "send_literal_data(%r)" % (data,)
-
-
-class DumbWriter(NullWriter):
-    """Simple writer class which writes output on the file object passed in
-    as the file parameter or, if file is omitted, on standard output.  The
-    output is simply word-wrapped to the number of columns specified by
-    the maxcol parameter.  This class is suitable for reflowing a sequence
-    of paragraphs.
-
-    """
-
-    def __init__(self, file=None, maxcol=72):
-        self.file = file or sys.stdout
-        self.maxcol = maxcol
-        NullWriter.__init__(self)
-        self.reset()
-
-    def reset(self):
-        self.col = 0
-        self.atbreak = 0
-
-    def send_paragraph(self, blankline):
-        self.file.write('\n'*blankline)
-        self.col = 0
-        self.atbreak = 0
-
-    def send_line_break(self):
-        self.file.write('\n')
-        self.col = 0
-        self.atbreak = 0
-
-    def send_hor_rule(self, *args, **kw):
-        self.file.write('\n')
-        self.file.write('-'*self.maxcol)
-        self.file.write('\n')
-        self.col = 0
-        self.atbreak = 0
-
-    def send_literal_data(self, data):
-        self.file.write(data)
-        i = data.rfind('\n')
-        if i >= 0:
-            self.col = 0
-            data = data[i+1:]
-        data = data.expandtabs()
-        self.col = self.col + len(data)
-        self.atbreak = 0
-
-    def send_flowing_data(self, data):
-        if not data: return
-        atbreak = self.atbreak or data[0].isspace()
-        col = self.col
-        maxcol = self.maxcol
-        write = self.file.write
-        for word in data.split():
-            if atbreak:
-                if col + len(word) >= maxcol:
-                    write('\n')
-                    col = 0
-                else:
-                    write(' ')
-                    col = col + 1
-            write(word)
-            col = col + len(word)
-            atbreak = 1
-        self.col = col
-        self.atbreak = data[-1].isspace()
-
-
-def test(file = None):
-    w = DumbWriter()
-    f = AbstractFormatter(w)
-    if file is not None:
-        fp = open(file)
-    elif sys.argv[1:]:
-        fp = open(sys.argv[1])
-    else:
-        fp = sys.stdin
-    for line in fp:
-        if line == '\n':
-            f.end_paragraph(1)
-        else:
-            f.add_flowing_data(line)
-    f.end_paragraph(0)
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/fpformat.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/fpformat.py
deleted file mode 100644
index b33c949..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/fpformat.py
+++ /dev/null
@@ -1,145 +0,0 @@
-"""General floating point formatting functions.
-
-Functions:
-fix(x, digits_behind)
-sci(x, digits_behind)
-
-Each takes a number or a string and a number of digits as arguments.
-
-Parameters:
-x:             number to be formatted; or a string resembling a number
-digits_behind: number of digits behind the decimal point
-"""
-from warnings import warnpy3k
-warnpy3k("the fpformat module has been removed in Python 3.0", stacklevel=2)
-del warnpy3k
-
-import re
-
-__all__ = ["fix","sci","NotANumber"]
-
-# Compiled regular expression to "decode" a number
-decoder = re.compile(r'^([-+]?)0*(\d*)((?:\.\d*)?)(([eE][-+]?\d+)?)$')
-# \0 the whole thing
-# \1 leading sign or empty
-# \2 digits left of decimal point
-# \3 fraction (empty or begins with point)
-# \4 exponent part (empty or begins with 'e' or 'E')
-
-try:
-    class NotANumber(ValueError):
-        pass
-except TypeError:
-    NotANumber = 'fpformat.NotANumber'
-
-def extract(s):
-    """Return (sign, intpart, fraction, expo) or raise an exception:
-    sign is '+' or '-'
-    intpart is 0 or more digits beginning with a nonzero
-    fraction is 0 or more digits
-    expo is an integer"""
-    res = decoder.match(s)
-    if res is None: raise NotANumber, s
-    sign, intpart, fraction, exppart = res.group(1,2,3,4)
-    if sign == '+': sign = ''
-    if fraction: fraction = fraction[1:]
-    if exppart: expo = int(exppart[1:])
-    else: expo = 0
-    return sign, intpart, fraction, expo
-
-def unexpo(intpart, fraction, expo):
-    """Remove the exponent by changing intpart and fraction."""
-    if expo > 0: # Move the point left
-        f = len(fraction)
-        intpart, fraction = intpart + fraction[:expo], fraction[expo:]
-        if expo > f:
-            intpart = intpart + '0'*(expo-f)
-    elif expo < 0: # Move the point right
-        i = len(intpart)
-        intpart, fraction = intpart[:expo], intpart[expo:] + fraction
-        if expo < -i:
-            fraction = '0'*(-expo-i) + fraction
-    return intpart, fraction
-
-def roundfrac(intpart, fraction, digs):
-    """Round or extend the fraction to size digs."""
-    f = len(fraction)
-    if f <= digs:
-        return intpart, fraction + '0'*(digs-f)
-    i = len(intpart)
-    if i+digs < 0:
-        return '0'*-digs, ''
-    total = intpart + fraction
-    nextdigit = total[i+digs]
-    if nextdigit >= '5': # Hard case: increment last digit, may have carry!
-        n = i + digs - 1
-        while n >= 0:
-            if total[n] != '9': break
-            n = n-1
-        else:
-            total = '0' + total
-            i = i+1
-            n = 0
-        total = total[:n] + chr(ord(total[n]) + 1) + '0'*(len(total)-n-1)
-        intpart, fraction = total[:i], total[i:]
-    if digs >= 0:
-        return intpart, fraction[:digs]
-    else:
-        return intpart[:digs] + '0'*-digs, ''
-
-def fix(x, digs):
-    """Format x as [-]ddd.ddd with 'digs' digits after the point
-    and at least one digit before.
-    If digs <= 0, the point is suppressed."""
-    if type(x) != type(''): x = repr(x)
-    try:
-        sign, intpart, fraction, expo = extract(x)
-    except NotANumber:
-        return x
-    intpart, fraction = unexpo(intpart, fraction, expo)
-    intpart, fraction = roundfrac(intpart, fraction, digs)
-    while intpart and intpart[0] == '0': intpart = intpart[1:]
-    if intpart == '': intpart = '0'
-    if digs > 0: return sign + intpart + '.' + fraction
-    else: return sign + intpart
-
-def sci(x, digs):
-    """Format x as [-]d.dddE[+-]ddd with 'digs' digits after the point
-    and exactly one digit before.
-    If digs is <= 0, one digit is kept and the point is suppressed."""
-    if type(x) != type(''): x = repr(x)
-    sign, intpart, fraction, expo = extract(x)
-    if not intpart:
-        while fraction and fraction[0] == '0':
-            fraction = fraction[1:]
-            expo = expo - 1
-        if fraction:
-            intpart, fraction = fraction[0], fraction[1:]
-            expo = expo - 1
-        else:
-            intpart = '0'
-    else:
-        expo = expo + len(intpart) - 1
-        intpart, fraction = intpart[0], intpart[1:] + fraction
-    digs = max(0, digs)
-    intpart, fraction = roundfrac(intpart, fraction, digs)
-    if len(intpart) > 1:
-        intpart, fraction, expo = \
-            intpart[0], intpart[1:] + fraction[:-1], \
-            expo + len(intpart) - 1
-    s = sign + intpart
-    if digs > 0: s = s + '.' + fraction
-    e = repr(abs(expo))
-    e = '0'*(3-len(e)) + e
-    if expo < 0: e = '-' + e
-    else: e = '+' + e
-    return s + 'e' + e
-
-def test():
-    """Interactive test run."""
-    try:
-        while 1:
-            x, digs = input('Enter (x, digs): ')
-            print x, fix(x, digs), sci(x, digs)
-    except (EOFError, KeyboardInterrupt):
-        pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/fractions.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/fractions.py
deleted file mode 100644
index adbc4fe..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/fractions.py
+++ /dev/null
@@ -1,605 +0,0 @@
-# Originally contributed by Sjoerd Mullender.
-# Significantly modified by Jeffrey Yasskin <jyasskin at gmail.com>.
-
-"""Rational, infinite-precision, real numbers."""
-
-from __future__ import division
-from decimal import Decimal
-import math
-import numbers
-import operator
-import re
-
-__all__ = ['Fraction', 'gcd']
-
-Rational = numbers.Rational
-
-
-def gcd(a, b):
-    """Calculate the Greatest Common Divisor of a and b.
-
-    Unless b==0, the result will have the same sign as b (so that when
-    b is divided by it, the result comes out positive).
-    """
-    while b:
-        a, b = b, a%b
-    return a
-
-
-_RATIONAL_FORMAT = re.compile(r"""
-    \A\s*                      # optional whitespace at the start, then
-    (?P<sign>[-+]?)            # an optional sign, then
-    (?=\d|\.\d)                # lookahead for digit or .digit
-    (?P<num>\d*)               # numerator (possibly empty)
-    (?:                        # followed by
-       (?:/(?P<denom>\d+))?    # an optional denominator
-    |                          # or
-       (?:\.(?P<decimal>\d*))? # an optional fractional part
-       (?:E(?P<exp>[-+]?\d+))? # and optional exponent
-    )
-    \s*\Z                      # and optional whitespace to finish
-""", re.VERBOSE | re.IGNORECASE)
-
-
-class Fraction(Rational):
-    """This class implements rational numbers.
-
-    In the two-argument form of the constructor, Fraction(8, 6) will
-    produce a rational number equivalent to 4/3. Both arguments must
-    be Rational. The numerator defaults to 0 and the denominator
-    defaults to 1 so that Fraction(3) == 3 and Fraction() == 0.
-
-    Fractions can also be constructed from:
-
-      - numeric strings similar to those accepted by the
-        float constructor (for example, '-2.3' or '1e10')
-
-      - strings of the form '123/456'
-
-      - float and Decimal instances
-
-      - other Rational instances (including integers)
-
-    """
-
-    __slots__ = ('_numerator', '_denominator')
-
-    # We're immutable, so use __new__ not __init__
-    def __new__(cls, numerator=0, denominator=None):
-        """Constructs a Fraction.
-
-        Takes a string like '3/2' or '1.5', another Rational instance, a
-        numerator/denominator pair, or a float.
-
-        Examples
-        --------
-
-        >>> Fraction(10, -8)
-        Fraction(-5, 4)
-        >>> Fraction(Fraction(1, 7), 5)
-        Fraction(1, 35)
-        >>> Fraction(Fraction(1, 7), Fraction(2, 3))
-        Fraction(3, 14)
-        >>> Fraction('314')
-        Fraction(314, 1)
-        >>> Fraction('-35/4')
-        Fraction(-35, 4)
-        >>> Fraction('3.1415') # conversion from numeric string
-        Fraction(6283, 2000)
-        >>> Fraction('-47e-2') # string may include a decimal exponent
-        Fraction(-47, 100)
-        >>> Fraction(1.47)  # direct construction from float (exact conversion)
-        Fraction(6620291452234629, 4503599627370496)
-        >>> Fraction(2.25)
-        Fraction(9, 4)
-        >>> Fraction(Decimal('1.47'))
-        Fraction(147, 100)
-
-        """
-        self = super(Fraction, cls).__new__(cls)
-
-        if denominator is None:
-            if isinstance(numerator, Rational):
-                self._numerator = numerator.numerator
-                self._denominator = numerator.denominator
-                return self
-
-            elif isinstance(numerator, float):
-                # Exact conversion from float
-                value = Fraction.from_float(numerator)
-                self._numerator = value._numerator
-                self._denominator = value._denominator
-                return self
-
-            elif isinstance(numerator, Decimal):
-                value = Fraction.from_decimal(numerator)
-                self._numerator = value._numerator
-                self._denominator = value._denominator
-                return self
-
-            elif isinstance(numerator, basestring):
-                # Handle construction from strings.
-                m = _RATIONAL_FORMAT.match(numerator)
-                if m is None:
-                    raise ValueError('Invalid literal for Fraction: %r' %
-                                     numerator)
-                numerator = int(m.group('num') or '0')
-                denom = m.group('denom')
-                if denom:
-                    denominator = int(denom)
-                else:
-                    denominator = 1
-                    decimal = m.group('decimal')
-                    if decimal:
-                        scale = 10**len(decimal)
-                        numerator = numerator * scale + int(decimal)
-                        denominator *= scale
-                    exp = m.group('exp')
-                    if exp:
-                        exp = int(exp)
-                        if exp >= 0:
-                            numerator *= 10**exp
-                        else:
-                            denominator *= 10**-exp
-                if m.group('sign') == '-':
-                    numerator = -numerator
-
-            else:
-                raise TypeError("argument should be a string "
-                                "or a Rational instance")
-
-        elif (isinstance(numerator, Rational) and
-            isinstance(denominator, Rational)):
-            numerator, denominator = (
-                numerator.numerator * denominator.denominator,
-                denominator.numerator * numerator.denominator
-                )
-        else:
-            raise TypeError("both arguments should be "
-                            "Rational instances")
-
-        if denominator == 0:
-            raise ZeroDivisionError('Fraction(%s, 0)' % numerator)
-        g = gcd(numerator, denominator)
-        self._numerator = numerator // g
-        self._denominator = denominator // g
-        return self
-
-    @classmethod
-    def from_float(cls, f):
-        """Converts a finite float to a rational number, exactly.
-
-        Beware that Fraction.from_float(0.3) != Fraction(3, 10).
-
-        """
-        if isinstance(f, numbers.Integral):
-            return cls(f)
-        elif not isinstance(f, float):
-            raise TypeError("%s.from_float() only takes floats, not %r (%s)" %
-                            (cls.__name__, f, type(f).__name__))
-        if math.isnan(f) or math.isinf(f):
-            raise TypeError("Cannot convert %r to %s." % (f, cls.__name__))
-        return cls(*f.as_integer_ratio())
-
-    @classmethod
-    def from_decimal(cls, dec):
-        """Converts a finite Decimal instance to a rational number, exactly."""
-        from decimal import Decimal
-        if isinstance(dec, numbers.Integral):
-            dec = Decimal(int(dec))
-        elif not isinstance(dec, Decimal):
-            raise TypeError(
-                "%s.from_decimal() only takes Decimals, not %r (%s)" %
-                (cls.__name__, dec, type(dec).__name__))
-        if not dec.is_finite():
-            # Catches infinities and nans.
-            raise TypeError("Cannot convert %s to %s." % (dec, cls.__name__))
-        sign, digits, exp = dec.as_tuple()
-        digits = int(''.join(map(str, digits)))
-        if sign:
-            digits = -digits
-        if exp >= 0:
-            return cls(digits * 10 ** exp)
-        else:
-            return cls(digits, 10 ** -exp)
-
-    def limit_denominator(self, max_denominator=1000000):
-        """Closest Fraction to self with denominator at most max_denominator.
-
-        >>> Fraction('3.141592653589793').limit_denominator(10)
-        Fraction(22, 7)
-        >>> Fraction('3.141592653589793').limit_denominator(100)
-        Fraction(311, 99)
-        >>> Fraction(4321, 8765).limit_denominator(10000)
-        Fraction(4321, 8765)
-
-        """
-        # Algorithm notes: For any real number x, define a *best upper
-        # approximation* to x to be a rational number p/q such that:
-        #
-        #   (1) p/q >= x, and
-        #   (2) if p/q > r/s >= x then s > q, for any rational r/s.
-        #
-        # Define *best lower approximation* similarly.  Then it can be
-        # proved that a rational number is a best upper or lower
-        # approximation to x if, and only if, it is a convergent or
-        # semiconvergent of the (unique shortest) continued fraction
-        # associated to x.
-        #
-        # To find a best rational approximation with denominator <= M,
-        # we find the best upper and lower approximations with
-        # denominator <= M and take whichever of these is closer to x.
-        # In the event of a tie, the bound with smaller denominator is
-        # chosen.  If both denominators are equal (which can happen
-        # only when max_denominator == 1 and self is midway between
-        # two integers) the lower bound---i.e., the floor of self, is
-        # taken.
-
-        if max_denominator < 1:
-            raise ValueError("max_denominator should be at least 1")
-        if self._denominator <= max_denominator:
-            return Fraction(self)
-
-        p0, q0, p1, q1 = 0, 1, 1, 0
-        n, d = self._numerator, self._denominator
-        while True:
-            a = n//d
-            q2 = q0+a*q1
-            if q2 > max_denominator:
-                break
-            p0, q0, p1, q1 = p1, q1, p0+a*p1, q2
-            n, d = d, n-a*d
-
-        k = (max_denominator-q0)//q1
-        bound1 = Fraction(p0+k*p1, q0+k*q1)
-        bound2 = Fraction(p1, q1)
-        if abs(bound2 - self) <= abs(bound1-self):
-            return bound2
-        else:
-            return bound1
-
-    @property
-    def numerator(a):
-        return a._numerator
-
-    @property
-    def denominator(a):
-        return a._denominator
-
-    def __repr__(self):
-        """repr(self)"""
-        return ('Fraction(%s, %s)' % (self._numerator, self._denominator))
-
-    def __str__(self):
-        """str(self)"""
-        if self._denominator == 1:
-            return str(self._numerator)
-        else:
-            return '%s/%s' % (self._numerator, self._denominator)
-
-    def _operator_fallbacks(monomorphic_operator, fallback_operator):
-        """Generates forward and reverse operators given a purely-rational
-        operator and a function from the operator module.
-
-        Use this like:
-        __op__, __rop__ = _operator_fallbacks(just_rational_op, operator.op)
-
-        In general, we want to implement the arithmetic operations so
-        that mixed-mode operations either call an implementation whose
-        author knew about the types of both arguments, or convert both
-        to the nearest built in type and do the operation there. In
-        Fraction, that means that we define __add__ and __radd__ as:
-
-            def __add__(self, other):
-                # Both types have numerators/denominator attributes,
-                # so do the operation directly
-                if isinstance(other, (int, long, Fraction)):
-                    return Fraction(self.numerator * other.denominator +
-                                    other.numerator * self.denominator,
-                                    self.denominator * other.denominator)
-                # float and complex don't have those operations, but we
-                # know about those types, so special case them.
-                elif isinstance(other, float):
-                    return float(self) + other
-                elif isinstance(other, complex):
-                    return complex(self) + other
-                # Let the other type take over.
-                return NotImplemented
-
-            def __radd__(self, other):
-                # radd handles more types than add because there's
-                # nothing left to fall back to.
-                if isinstance(other, Rational):
-                    return Fraction(self.numerator * other.denominator +
-                                    other.numerator * self.denominator,
-                                    self.denominator * other.denominator)
-                elif isinstance(other, Real):
-                    return float(other) + float(self)
-                elif isinstance(other, Complex):
-                    return complex(other) + complex(self)
-                return NotImplemented
-
-
-        There are 5 different cases for a mixed-type addition on
-        Fraction. I'll refer to all of the above code that doesn't
-        refer to Fraction, float, or complex as "boilerplate". 'r'
-        will be an instance of Fraction, which is a subtype of
-        Rational (r : Fraction <: Rational), and b : B <:
-        Complex. The first three involve 'r + b':
-
-            1. If B <: Fraction, int, float, or complex, we handle
-               that specially, and all is well.
-            2. If Fraction falls back to the boilerplate code, and it
-               were to return a value from __add__, we'd miss the
-               possibility that B defines a more intelligent __radd__,
-               so the boilerplate should return NotImplemented from
-               __add__. In particular, we don't handle Rational
-               here, even though we could get an exact answer, in case
-               the other type wants to do something special.
-            3. If B <: Fraction, Python tries B.__radd__ before
-               Fraction.__add__. This is ok, because it was
-               implemented with knowledge of Fraction, so it can
-               handle those instances before delegating to Real or
-               Complex.
-
-        The next two situations describe 'b + r'. We assume that b
-        didn't know about Fraction in its implementation, and that it
-        uses similar boilerplate code:
-
-            4. If B <: Rational, then __radd_ converts both to the
-               builtin rational type (hey look, that's us) and
-               proceeds.
-            5. Otherwise, __radd__ tries to find the nearest common
-               base ABC, and fall back to its builtin type. Since this
-               class doesn't subclass a concrete type, there's no
-               implementation to fall back to, so we need to try as
-               hard as possible to return an actual value, or the user
-               will get a TypeError.
-
-        """
-        def forward(a, b):
-            if isinstance(b, (int, long, Fraction)):
-                return monomorphic_operator(a, b)
-            elif isinstance(b, float):
-                return fallback_operator(float(a), b)
-            elif isinstance(b, complex):
-                return fallback_operator(complex(a), b)
-            else:
-                return NotImplemented
-        forward.__name__ = '__' + fallback_operator.__name__ + '__'
-        forward.__doc__ = monomorphic_operator.__doc__
-
-        def reverse(b, a):
-            if isinstance(a, Rational):
-                # Includes ints.
-                return monomorphic_operator(a, b)
-            elif isinstance(a, numbers.Real):
-                return fallback_operator(float(a), float(b))
-            elif isinstance(a, numbers.Complex):
-                return fallback_operator(complex(a), complex(b))
-            else:
-                return NotImplemented
-        reverse.__name__ = '__r' + fallback_operator.__name__ + '__'
-        reverse.__doc__ = monomorphic_operator.__doc__
-
-        return forward, reverse
-
-    def _add(a, b):
-        """a + b"""
-        return Fraction(a.numerator * b.denominator +
-                        b.numerator * a.denominator,
-                        a.denominator * b.denominator)
-
-    __add__, __radd__ = _operator_fallbacks(_add, operator.add)
-
-    def _sub(a, b):
-        """a - b"""
-        return Fraction(a.numerator * b.denominator -
-                        b.numerator * a.denominator,
-                        a.denominator * b.denominator)
-
-    __sub__, __rsub__ = _operator_fallbacks(_sub, operator.sub)
-
-    def _mul(a, b):
-        """a * b"""
-        return Fraction(a.numerator * b.numerator, a.denominator * b.denominator)
-
-    __mul__, __rmul__ = _operator_fallbacks(_mul, operator.mul)
-
-    def _div(a, b):
-        """a / b"""
-        return Fraction(a.numerator * b.denominator,
-                        a.denominator * b.numerator)
-
-    __truediv__, __rtruediv__ = _operator_fallbacks(_div, operator.truediv)
-    __div__, __rdiv__ = _operator_fallbacks(_div, operator.div)
-
-    def __floordiv__(a, b):
-        """a // b"""
-        # Will be math.floor(a / b) in 3.0.
-        div = a / b
-        if isinstance(div, Rational):
-            # trunc(math.floor(div)) doesn't work if the rational is
-            # more precise than a float because the intermediate
-            # rounding may cross an integer boundary.
-            return div.numerator // div.denominator
-        else:
-            return math.floor(div)
-
-    def __rfloordiv__(b, a):
-        """a // b"""
-        # Will be math.floor(a / b) in 3.0.
-        div = a / b
-        if isinstance(div, Rational):
-            # trunc(math.floor(div)) doesn't work if the rational is
-            # more precise than a float because the intermediate
-            # rounding may cross an integer boundary.
-            return div.numerator // div.denominator
-        else:
-            return math.floor(div)
-
-    def __mod__(a, b):
-        """a % b"""
-        div = a // b
-        return a - b * div
-
-    def __rmod__(b, a):
-        """a % b"""
-        div = a // b
-        return a - b * div
-
-    def __pow__(a, b):
-        """a ** b
-
-        If b is not an integer, the result will be a float or complex
-        since roots are generally irrational. If b is an integer, the
-        result will be rational.
-
-        """
-        if isinstance(b, Rational):
-            if b.denominator == 1:
-                power = b.numerator
-                if power >= 0:
-                    return Fraction(a._numerator ** power,
-                                    a._denominator ** power)
-                else:
-                    return Fraction(a._denominator ** -power,
-                                    a._numerator ** -power)
-            else:
-                # A fractional power will generally produce an
-                # irrational number.
-                return float(a) ** float(b)
-        else:
-            return float(a) ** b
-
-    def __rpow__(b, a):
-        """a ** b"""
-        if b._denominator == 1 and b._numerator >= 0:
-            # If a is an int, keep it that way if possible.
-            return a ** b._numerator
-
-        if isinstance(a, Rational):
-            return Fraction(a.numerator, a.denominator) ** b
-
-        if b._denominator == 1:
-            return a ** b._numerator
-
-        return a ** float(b)
-
-    def __pos__(a):
-        """+a: Coerces a subclass instance to Fraction"""
-        return Fraction(a._numerator, a._denominator)
-
-    def __neg__(a):
-        """-a"""
-        return Fraction(-a._numerator, a._denominator)
-
-    def __abs__(a):
-        """abs(a)"""
-        return Fraction(abs(a._numerator), a._denominator)
-
-    def __trunc__(a):
-        """trunc(a)"""
-        if a._numerator < 0:
-            return -(-a._numerator // a._denominator)
-        else:
-            return a._numerator // a._denominator
-
-    def __hash__(self):
-        """hash(self)
-
-        Tricky because values that are exactly representable as a
-        float must have the same hash as that float.
-
-        """
-        # XXX since this method is expensive, consider caching the result
-        if self._denominator == 1:
-            # Get integers right.
-            return hash(self._numerator)
-        # Expensive check, but definitely correct.
-        if self == float(self):
-            return hash(float(self))
-        else:
-            # Use tuple's hash to avoid a high collision rate on
-            # simple fractions.
-            return hash((self._numerator, self._denominator))
-
-    def __eq__(a, b):
-        """a == b"""
-        if isinstance(b, Rational):
-            return (a._numerator == b.numerator and
-                    a._denominator == b.denominator)
-        if isinstance(b, numbers.Complex) and b.imag == 0:
-            b = b.real
-        if isinstance(b, float):
-            if math.isnan(b) or math.isinf(b):
-                # comparisons with an infinity or nan should behave in
-                # the same way for any finite a, so treat a as zero.
-                return 0.0 == b
-            else:
-                return a == a.from_float(b)
-        else:
-            # Since a doesn't know how to compare with b, let's give b
-            # a chance to compare itself with a.
-            return NotImplemented
-
-    def _richcmp(self, other, op):
-        """Helper for comparison operators, for internal use only.
-
-        Implement comparison between a Rational instance `self`, and
-        either another Rational instance or a float `other`.  If
-        `other` is not a Rational instance or a float, return
-        NotImplemented. `op` should be one of the six standard
-        comparison operators.
-
-        """
-        # convert other to a Rational instance where reasonable.
-        if isinstance(other, Rational):
-            return op(self._numerator * other.denominator,
-                      self._denominator * other.numerator)
-        # comparisons with complex should raise a TypeError, for consistency
-        # with int<->complex, float<->complex, and complex<->complex comparisons.
-        if isinstance(other, complex):
-            raise TypeError("no ordering relation is defined for complex numbers")
-        if isinstance(other, float):
-            if math.isnan(other) or math.isinf(other):
-                return op(0.0, other)
-            else:
-                return op(self, self.from_float(other))
-        else:
-            return NotImplemented
-
-    def __lt__(a, b):
-        """a < b"""
-        return a._richcmp(b, operator.lt)
-
-    def __gt__(a, b):
-        """a > b"""
-        return a._richcmp(b, operator.gt)
-
-    def __le__(a, b):
-        """a <= b"""
-        return a._richcmp(b, operator.le)
-
-    def __ge__(a, b):
-        """a >= b"""
-        return a._richcmp(b, operator.ge)
-
-    def __nonzero__(a):
-        """a != 0"""
-        return a._numerator != 0
-
-    # support for pickling, copy, and deepcopy
-
-    def __reduce__(self):
-        return (self.__class__, (str(self),))
-
-    def __copy__(self):
-        if type(self) == Fraction:
-            return self     # I'm immutable; therefore I am my own clone
-        return self.__class__(self._numerator, self._denominator)
-
-    def __deepcopy__(self, memo):
-        if type(self) == Fraction:
-            return self     # My components are also immutable
-        return self.__class__(self._numerator, self._denominator)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/ftplib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/ftplib.py
deleted file mode 100644
index 0fc8ccd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/ftplib.py
+++ /dev/null
@@ -1,1036 +0,0 @@
-"""An FTP client class and some helper functions.
-
-Based on RFC 959: File Transfer Protocol (FTP), by J. Postel and J. Reynolds
-
-Example:
-
->>> from ftplib import FTP
->>> ftp = FTP('ftp.python.org') # connect to host, default port
->>> ftp.login() # default, i.e.: user anonymous, passwd anonymous@
-'230 Guest login ok, access restrictions apply.'
->>> ftp.retrlines('LIST') # list directory contents
-total 9
-drwxr-xr-x   8 root     wheel        1024 Jan  3  1994 .
-drwxr-xr-x   8 root     wheel        1024 Jan  3  1994 ..
-drwxr-xr-x   2 root     wheel        1024 Jan  3  1994 bin
-drwxr-xr-x   2 root     wheel        1024 Jan  3  1994 etc
-d-wxrwxr-x   2 ftp      wheel        1024 Sep  5 13:43 incoming
-drwxr-xr-x   2 root     wheel        1024 Nov 17  1993 lib
-drwxr-xr-x   6 1094     wheel        1024 Sep 13 19:07 pub
-drwxr-xr-x   3 root     wheel        1024 Jan  3  1994 usr
--rw-r--r--   1 root     root          312 Aug  1  1994 welcome.msg
-'226 Transfer complete.'
->>> ftp.quit()
-'221 Goodbye.'
->>>
-
-A nice test that reveals some of the network dialogue would be:
-python ftplib.py -d localhost -l -p -l
-"""
-
-#
-# Changes and improvements suggested by Steve Majewski.
-# Modified by Jack to work on the mac.
-# Modified by Siebren to support docstrings and PASV.
-# Modified by Phil Schwartz to add storbinary and storlines callbacks.
-# Modified by Giampaolo Rodola' to add TLS support.
-#
-
-import os
-import sys
-
-# Import SOCKS module if it exists, else standard socket module socket
-try:
-    import SOCKS; socket = SOCKS; del SOCKS # import SOCKS as socket
-    from socket import getfqdn; socket.getfqdn = getfqdn; del getfqdn
-except ImportError:
-    import socket
-from socket import _GLOBAL_DEFAULT_TIMEOUT
-
-__all__ = ["FTP","Netrc"]
-
-# Magic number from <socket.h>
-MSG_OOB = 0x1                           # Process data out of band
-
-
-# The standard FTP server control port
-FTP_PORT = 21
-
-
-# Exception raised when an error or invalid response is received
-class Error(Exception): pass
-class error_reply(Error): pass          # unexpected [123]xx reply
-class error_temp(Error): pass           # 4xx errors
-class error_perm(Error): pass           # 5xx errors
-class error_proto(Error): pass          # response does not begin with [1-5]
-
-
-# All exceptions (hopefully) that may be raised here and that aren't
-# (always) programming errors on our side
-all_errors = (Error, IOError, EOFError)
-
-
-# Line terminators (we always output CRLF, but accept any of CRLF, CR, LF)
-CRLF = '\r\n'
-
-# The class itself
-class FTP:
-
-    '''An FTP client class.
-
-    To create a connection, call the class using these arguments:
-            host, user, passwd, acct, timeout
-
-    The first four arguments are all strings, and have default value ''.
-    timeout must be numeric and defaults to None if not passed,
-    meaning that no timeout will be set on any ftp socket(s)
-    If a timeout is passed, then this is now the default timeout for all ftp
-    socket operations for this instance.
-
-    Then use self.connect() with optional host and port argument.
-
-    To download a file, use ftp.retrlines('RETR ' + filename),
-    or ftp.retrbinary() with slightly different arguments.
-    To upload a file, use ftp.storlines() or ftp.storbinary(),
-    which have an open file as argument (see their definitions
-    below for details).
-    The download/upload functions first issue appropriate TYPE
-    and PORT or PASV commands.
-'''
-
-    debugging = 0
-    host = ''
-    port = FTP_PORT
-    sock = None
-    file = None
-    welcome = None
-    passiveserver = 1
-
-    # Initialization method (called by class instantiation).
-    # Initialize host to localhost, port to standard ftp port
-    # Optional arguments are host (for connect()),
-    # and user, passwd, acct (for login())
-    def __init__(self, host='', user='', passwd='', acct='',
-                 timeout=_GLOBAL_DEFAULT_TIMEOUT):
-        self.timeout = timeout
-        if host:
-            self.connect(host)
-            if user:
-                self.login(user, passwd, acct)
-
-    def connect(self, host='', port=0, timeout=-999):
-        '''Connect to host.  Arguments are:
-         - host: hostname to connect to (string, default previous host)
-         - port: port to connect to (integer, default previous port)
-        '''
-        if host != '':
-            self.host = host
-        if port > 0:
-            self.port = port
-        if timeout != -999:
-            self.timeout = timeout
-        self.sock = socket.create_connection((self.host, self.port), self.timeout)
-        self.af = self.sock.family
-        self.file = self.sock.makefile('rb')
-        self.welcome = self.getresp()
-        return self.welcome
-
-    def getwelcome(self):
-        '''Get the welcome message from the server.
-        (this is read and squirreled away by connect())'''
-        if self.debugging:
-            print '*welcome*', self.sanitize(self.welcome)
-        return self.welcome
-
-    def set_debuglevel(self, level):
-        '''Set the debugging level.
-        The required argument level means:
-        0: no debugging output (default)
-        1: print commands and responses but not body text etc.
-        2: also print raw lines read and sent before stripping CR/LF'''
-        self.debugging = level
-    debug = set_debuglevel
-
-    def set_pasv(self, val):
-        '''Use passive or active mode for data transfers.
-        With a false argument, use the normal PORT mode,
-        With a true argument, use the PASV command.'''
-        self.passiveserver = val
-
-    # Internal: "sanitize" a string for printing
-    def sanitize(self, s):
-        if s[:5] == 'pass ' or s[:5] == 'PASS ':
-            i = len(s)
-            while i > 5 and s[i-1] in '\r\n':
-                i = i-1
-            s = s[:5] + '*'*(i-5) + s[i:]
-        return repr(s)
-
-    # Internal: send one line to the server, appending CRLF
-    def putline(self, line):
-        line = line + CRLF
-        if self.debugging > 1: print '*put*', self.sanitize(line)
-        self.sock.sendall(line)
-
-    # Internal: send one command to the server (through putline())
-    def putcmd(self, line):
-        if self.debugging: print '*cmd*', self.sanitize(line)
-        self.putline(line)
-
-    # Internal: return one line from the server, stripping CRLF.
-    # Raise EOFError if the connection is closed
-    def getline(self):
-        line = self.file.readline()
-        if self.debugging > 1:
-            print '*get*', self.sanitize(line)
-        if not line: raise EOFError
-        if line[-2:] == CRLF: line = line[:-2]
-        elif line[-1:] in CRLF: line = line[:-1]
-        return line
-
-    # Internal: get a response from the server, which may possibly
-    # consist of multiple lines.  Return a single string with no
-    # trailing CRLF.  If the response consists of multiple lines,
-    # these are separated by '\n' characters in the string
-    def getmultiline(self):
-        line = self.getline()
-        if line[3:4] == '-':
-            code = line[:3]
-            while 1:
-                nextline = self.getline()
-                line = line + ('\n' + nextline)
-                if nextline[:3] == code and \
-                        nextline[3:4] != '-':
-                    break
-        return line
-
-    # Internal: get a response from the server.
-    # Raise various errors if the response indicates an error
-    def getresp(self):
-        resp = self.getmultiline()
-        if self.debugging: print '*resp*', self.sanitize(resp)
-        self.lastresp = resp[:3]
-        c = resp[:1]
-        if c in ('1', '2', '3'):
-            return resp
-        if c == '4':
-            raise error_temp, resp
-        if c == '5':
-            raise error_perm, resp
-        raise error_proto, resp
-
-    def voidresp(self):
-        """Expect a response beginning with '2'."""
-        resp = self.getresp()
-        if resp[:1] != '2':
-            raise error_reply, resp
-        return resp
-
-    def abort(self):
-        '''Abort a file transfer.  Uses out-of-band data.
-        This does not follow the procedure from the RFC to send Telnet
-        IP and Synch; that doesn't seem to work with the servers I've
-        tried.  Instead, just send the ABOR command as OOB data.'''
-        line = 'ABOR' + CRLF
-        if self.debugging > 1: print '*put urgent*', self.sanitize(line)
-        self.sock.sendall(line, MSG_OOB)
-        resp = self.getmultiline()
-        if resp[:3] not in ('426', '225', '226'):
-            raise error_proto, resp
-
-    def sendcmd(self, cmd):
-        '''Send a command and return the response.'''
-        self.putcmd(cmd)
-        return self.getresp()
-
-    def voidcmd(self, cmd):
-        """Send a command and expect a response beginning with '2'."""
-        self.putcmd(cmd)
-        return self.voidresp()
-
-    def sendport(self, host, port):
-        '''Send a PORT command with the current host and the given
-        port number.
-        '''
-        hbytes = host.split('.')
-        pbytes = [repr(port//256), repr(port%256)]
-        bytes = hbytes + pbytes
-        cmd = 'PORT ' + ','.join(bytes)
-        return self.voidcmd(cmd)
-
-    def sendeprt(self, host, port):
-        '''Send a EPRT command with the current host and the given port number.'''
-        af = 0
-        if self.af == socket.AF_INET:
-            af = 1
-        if self.af == socket.AF_INET6:
-            af = 2
-        if af == 0:
-            raise error_proto, 'unsupported address family'
-        fields = ['', repr(af), host, repr(port), '']
-        cmd = 'EPRT ' + '|'.join(fields)
-        return self.voidcmd(cmd)
-
-    def makeport(self):
-        '''Create a new socket and send a PORT command for it.'''
-        msg = "getaddrinfo returns an empty list"
-        sock = None
-        for res in socket.getaddrinfo(None, 0, self.af, socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
-            af, socktype, proto, canonname, sa = res
-            try:
-                sock = socket.socket(af, socktype, proto)
-                sock.bind(sa)
-            except socket.error, msg:
-                if sock:
-                    sock.close()
-                sock = None
-                continue
-            break
-        if not sock:
-            raise socket.error, msg
-        sock.listen(1)
-        port = sock.getsockname()[1] # Get proper port
-        host = self.sock.getsockname()[0] # Get proper host
-        if self.af == socket.AF_INET:
-            resp = self.sendport(host, port)
-        else:
-            resp = self.sendeprt(host, port)
-        if self.timeout is not _GLOBAL_DEFAULT_TIMEOUT:
-            sock.settimeout(self.timeout)
-        return sock
-
-    def makepasv(self):
-        if self.af == socket.AF_INET:
-            host, port = parse227(self.sendcmd('PASV'))
-        else:
-            host, port = parse229(self.sendcmd('EPSV'), self.sock.getpeername())
-        return host, port
-
-    def ntransfercmd(self, cmd, rest=None):
-        """Initiate a transfer over the data connection.
-
-        If the transfer is active, send a port command and the
-        transfer command, and accept the connection.  If the server is
-        passive, send a pasv command, connect to it, and start the
-        transfer command.  Either way, return the socket for the
-        connection and the expected size of the transfer.  The
-        expected size may be None if it could not be determined.
-
-        Optional `rest' argument can be a string that is sent as the
-        argument to a REST command.  This is essentially a server
-        marker used to tell the server to skip over any data up to the
-        given marker.
-        """
-        size = None
-        if self.passiveserver:
-            host, port = self.makepasv()
-            conn = socket.create_connection((host, port), self.timeout)
-            if rest is not None:
-                self.sendcmd("REST %s" % rest)
-            resp = self.sendcmd(cmd)
-            # Some servers apparently send a 200 reply to
-            # a LIST or STOR command, before the 150 reply
-            # (and way before the 226 reply). This seems to
-            # be in violation of the protocol (which only allows
-            # 1xx or error messages for LIST), so we just discard
-            # this response.
-            if resp[0] == '2':
-                resp = self.getresp()
-            if resp[0] != '1':
-                raise error_reply, resp
-        else:
-            sock = self.makeport()
-            if rest is not None:
-                self.sendcmd("REST %s" % rest)
-            resp = self.sendcmd(cmd)
-            # See above.
-            if resp[0] == '2':
-                resp = self.getresp()
-            if resp[0] != '1':
-                raise error_reply, resp
-            conn, sockaddr = sock.accept()
-            if self.timeout is not _GLOBAL_DEFAULT_TIMEOUT:
-                conn.settimeout(self.timeout)
-        if resp[:3] == '150':
-            # this is conditional in case we received a 125
-            size = parse150(resp)
-        return conn, size
-
-    def transfercmd(self, cmd, rest=None):
-        """Like ntransfercmd() but returns only the socket."""
-        return self.ntransfercmd(cmd, rest)[0]
-
-    def login(self, user = '', passwd = '', acct = ''):
-        '''Login, default anonymous.'''
-        if not user: user = 'anonymous'
-        if not passwd: passwd = ''
-        if not acct: acct = ''
-        if user == 'anonymous' and passwd in ('', '-'):
-            # If there is no anonymous ftp password specified
-            # then we'll just use anonymous@
-            # We don't send any other thing because:
-            # - We want to remain anonymous
-            # - We want to stop SPAM
-            # - We don't want to let ftp sites to discriminate by the user,
-            #   host or country.
-            passwd = passwd + 'anonymous@'
-        resp = self.sendcmd('USER ' + user)
-        if resp[0] == '3': resp = self.sendcmd('PASS ' + passwd)
-        if resp[0] == '3': resp = self.sendcmd('ACCT ' + acct)
-        if resp[0] != '2':
-            raise error_reply, resp
-        return resp
-
-    def retrbinary(self, cmd, callback, blocksize=8192, rest=None):
-        """Retrieve data in binary mode.  A new port is created for you.
-
-        Args:
-          cmd: A RETR command.
-          callback: A single parameter callable to be called on each
-                    block of data read.
-          blocksize: The maximum number of bytes to read from the
-                     socket at one time.  [default: 8192]
-          rest: Passed to transfercmd().  [default: None]
-
-        Returns:
-          The response code.
-        """
-        self.voidcmd('TYPE I')
-        conn = self.transfercmd(cmd, rest)
-        while 1:
-            data = conn.recv(blocksize)
-            if not data:
-                break
-            callback(data)
-        conn.close()
-        return self.voidresp()
-
-    def retrlines(self, cmd, callback = None):
-        """Retrieve data in line mode.  A new port is created for you.
-
-        Args:
-          cmd: A RETR, LIST, NLST, or MLSD command.
-          callback: An optional single parameter callable that is called
-                    for each line with the trailing CRLF stripped.
-                    [default: print_line()]
-
-        Returns:
-          The response code.
-        """
-        if callback is None: callback = print_line
-        resp = self.sendcmd('TYPE A')
-        conn = self.transfercmd(cmd)
-        fp = conn.makefile('rb')
-        while 1:
-            line = fp.readline()
-            if self.debugging > 2: print '*retr*', repr(line)
-            if not line:
-                break
-            if line[-2:] == CRLF:
-                line = line[:-2]
-            elif line[-1:] == '\n':
-                line = line[:-1]
-            callback(line)
-        fp.close()
-        conn.close()
-        return self.voidresp()
-
-    def storbinary(self, cmd, fp, blocksize=8192, callback=None, rest=None):
-        """Store a file in binary mode.  A new port is created for you.
-
-        Args:
-          cmd: A STOR command.
-          fp: A file-like object with a read(num_bytes) method.
-          blocksize: The maximum data size to read from fp and send over
-                     the connection at once.  [default: 8192]
-          callback: An optional single parameter callable that is called on
-                    on each block of data after it is sent.  [default: None]
-          rest: Passed to transfercmd().  [default: None]
-
-        Returns:
-          The response code.
-        """
-        self.voidcmd('TYPE I')
-        conn = self.transfercmd(cmd, rest)
-        while 1:
-            buf = fp.read(blocksize)
-            if not buf: break
-            conn.sendall(buf)
-            if callback: callback(buf)
-        conn.close()
-        return self.voidresp()
-
-    def storlines(self, cmd, fp, callback=None):
-        """Store a file in line mode.  A new port is created for you.
-
-        Args:
-          cmd: A STOR command.
-          fp: A file-like object with a readline() method.
-          callback: An optional single parameter callable that is called on
-                    on each line after it is sent.  [default: None]
-
-        Returns:
-          The response code.
-        """
-        self.voidcmd('TYPE A')
-        conn = self.transfercmd(cmd)
-        while 1:
-            buf = fp.readline()
-            if not buf: break
-            if buf[-2:] != CRLF:
-                if buf[-1] in CRLF: buf = buf[:-1]
-                buf = buf + CRLF
-            conn.sendall(buf)
-            if callback: callback(buf)
-        conn.close()
-        return self.voidresp()
-
-    def acct(self, password):
-        '''Send new account name.'''
-        cmd = 'ACCT ' + password
-        return self.voidcmd(cmd)
-
-    def nlst(self, *args):
-        '''Return a list of files in a given directory (default the current).'''
-        cmd = 'NLST'
-        for arg in args:
-            cmd = cmd + (' ' + arg)
-        files = []
-        self.retrlines(cmd, files.append)
-        return files
-
-    def dir(self, *args):
-        '''List a directory in long form.
-        By default list current directory to stdout.
-        Optional last argument is callback function; all
-        non-empty arguments before it are concatenated to the
-        LIST command.  (This *should* only be used for a pathname.)'''
-        cmd = 'LIST'
-        func = None
-        if args[-1:] and type(args[-1]) != type(''):
-            args, func = args[:-1], args[-1]
-        for arg in args:
-            if arg:
-                cmd = cmd + (' ' + arg)
-        self.retrlines(cmd, func)
-
-    def rename(self, fromname, toname):
-        '''Rename a file.'''
-        resp = self.sendcmd('RNFR ' + fromname)
-        if resp[0] != '3':
-            raise error_reply, resp
-        return self.voidcmd('RNTO ' + toname)
-
-    def delete(self, filename):
-        '''Delete a file.'''
-        resp = self.sendcmd('DELE ' + filename)
-        if resp[:3] in ('250', '200'):
-            return resp
-        else:
-            raise error_reply, resp
-
-    def cwd(self, dirname):
-        '''Change to a directory.'''
-        if dirname == '..':
-            try:
-                return self.voidcmd('CDUP')
-            except error_perm, msg:
-                if msg.args[0][:3] != '500':
-                    raise
-        elif dirname == '':
-            dirname = '.'  # does nothing, but could return error
-        cmd = 'CWD ' + dirname
-        return self.voidcmd(cmd)
-
-    def size(self, filename):
-        '''Retrieve the size of a file.'''
-        # The SIZE command is defined in RFC-3659
-        resp = self.sendcmd('SIZE ' + filename)
-        if resp[:3] == '213':
-            s = resp[3:].strip()
-            try:
-                return int(s)
-            except (OverflowError, ValueError):
-                return long(s)
-
-    def mkd(self, dirname):
-        '''Make a directory, return its full pathname.'''
-        resp = self.sendcmd('MKD ' + dirname)
-        return parse257(resp)
-
-    def rmd(self, dirname):
-        '''Remove a directory.'''
-        return self.voidcmd('RMD ' + dirname)
-
-    def pwd(self):
-        '''Return current working directory.'''
-        resp = self.sendcmd('PWD')
-        return parse257(resp)
-
-    def quit(self):
-        '''Quit, and close the connection.'''
-        resp = self.voidcmd('QUIT')
-        self.close()
-        return resp
-
-    def close(self):
-        '''Close the connection without assuming anything about it.'''
-        if self.file:
-            self.file.close()
-            self.sock.close()
-            self.file = self.sock = None
-
-
-try:
-    import ssl
-except ImportError:
-    pass
-else:
-    class FTP_TLS(FTP):
-        '''A FTP subclass which adds TLS support to FTP as described
-        in RFC-4217.
-
-        Connect as usual to port 21 implicitly securing the FTP control
-        connection before authenticating.
-
-        Securing the data connection requires user to explicitly ask
-        for it by calling prot_p() method.
-
-        Usage example:
-        >>> from ftplib import FTP_TLS
-        >>> ftps = FTP_TLS('ftp.python.org')
-        >>> ftps.login()  # login anonymously previously securing control channel
-        '230 Guest login ok, access restrictions apply.'
-        >>> ftps.prot_p()  # switch to secure data connection
-        '200 Protection level set to P'
-        >>> ftps.retrlines('LIST')  # list directory content securely
-        total 9
-        drwxr-xr-x   8 root     wheel        1024 Jan  3  1994 .
-        drwxr-xr-x   8 root     wheel        1024 Jan  3  1994 ..
-        drwxr-xr-x   2 root     wheel        1024 Jan  3  1994 bin
-        drwxr-xr-x   2 root     wheel        1024 Jan  3  1994 etc
-        d-wxrwxr-x   2 ftp      wheel        1024 Sep  5 13:43 incoming
-        drwxr-xr-x   2 root     wheel        1024 Nov 17  1993 lib
-        drwxr-xr-x   6 1094     wheel        1024 Sep 13 19:07 pub
-        drwxr-xr-x   3 root     wheel        1024 Jan  3  1994 usr
-        -rw-r--r--   1 root     root          312 Aug  1  1994 welcome.msg
-        '226 Transfer complete.'
-        >>> ftps.quit()
-        '221 Goodbye.'
-        >>>
-        '''
-        ssl_version = ssl.PROTOCOL_TLSv1
-
-        def __init__(self, host='', user='', passwd='', acct='', keyfile=None,
-                     certfile=None, timeout=_GLOBAL_DEFAULT_TIMEOUT):
-            self.keyfile = keyfile
-            self.certfile = certfile
-            self._prot_p = False
-            FTP.__init__(self, host, user, passwd, acct, timeout)
-
-        def login(self, user='', passwd='', acct='', secure=True):
-            if secure and not isinstance(self.sock, ssl.SSLSocket):
-                self.auth()
-            return FTP.login(self, user, passwd, acct)
-
-        def auth(self):
-            '''Set up secure control connection by using TLS/SSL.'''
-            if isinstance(self.sock, ssl.SSLSocket):
-                raise ValueError("Already using TLS")
-            if self.ssl_version == ssl.PROTOCOL_TLSv1:
-                resp = self.voidcmd('AUTH TLS')
-            else:
-                resp = self.voidcmd('AUTH SSL')
-            self.sock = ssl.wrap_socket(self.sock, self.keyfile, self.certfile,
-                                        ssl_version=self.ssl_version)
-            self.file = self.sock.makefile(mode='rb')
-            return resp
-
-        def prot_p(self):
-            '''Set up secure data connection.'''
-            # PROT defines whether or not the data channel is to be protected.
-            # Though RFC-2228 defines four possible protection levels,
-            # RFC-4217 only recommends two, Clear and Private.
-            # Clear (PROT C) means that no security is to be used on the
-            # data-channel, Private (PROT P) means that the data-channel
-            # should be protected by TLS.
-            # PBSZ command MUST still be issued, but must have a parameter of
-            # '0' to indicate that no buffering is taking place and the data
-            # connection should not be encapsulated.
-            self.voidcmd('PBSZ 0')
-            resp = self.voidcmd('PROT P')
-            self._prot_p = True
-            return resp
-
-        def prot_c(self):
-            '''Set up clear text data connection.'''
-            resp = self.voidcmd('PROT C')
-            self._prot_p = False
-            return resp
-
-        # --- Overridden FTP methods
-
-        def ntransfercmd(self, cmd, rest=None):
-            conn, size = FTP.ntransfercmd(self, cmd, rest)
-            if self._prot_p:
-                conn = ssl.wrap_socket(conn, self.keyfile, self.certfile,
-                                       ssl_version=self.ssl_version)
-            return conn, size
-
-        def retrbinary(self, cmd, callback, blocksize=8192, rest=None):
-            self.voidcmd('TYPE I')
-            conn = self.transfercmd(cmd, rest)
-            try:
-                while 1:
-                    data = conn.recv(blocksize)
-                    if not data:
-                        break
-                    callback(data)
-                # shutdown ssl layer
-                if isinstance(conn, ssl.SSLSocket):
-                    conn.unwrap()
-            finally:
-                conn.close()
-            return self.voidresp()
-
-        def retrlines(self, cmd, callback = None):
-            if callback is None: callback = print_line
-            resp = self.sendcmd('TYPE A')
-            conn = self.transfercmd(cmd)
-            fp = conn.makefile('rb')
-            try:
-                while 1:
-                    line = fp.readline()
-                    if self.debugging > 2: print '*retr*', repr(line)
-                    if not line:
-                        break
-                    if line[-2:] == CRLF:
-                        line = line[:-2]
-                    elif line[-1:] == '\n':
-                        line = line[:-1]
-                    callback(line)
-                # shutdown ssl layer
-                if isinstance(conn, ssl.SSLSocket):
-                    conn.unwrap()
-            finally:
-                fp.close()
-                conn.close()
-            return self.voidresp()
-
-        def storbinary(self, cmd, fp, blocksize=8192, callback=None, rest=None):
-            self.voidcmd('TYPE I')
-            conn = self.transfercmd(cmd, rest)
-            try:
-                while 1:
-                    buf = fp.read(blocksize)
-                    if not buf: break
-                    conn.sendall(buf)
-                    if callback: callback(buf)
-                # shutdown ssl layer
-                if isinstance(conn, ssl.SSLSocket):
-                    conn.unwrap()
-            finally:
-                conn.close()
-            return self.voidresp()
-
-        def storlines(self, cmd, fp, callback=None):
-            self.voidcmd('TYPE A')
-            conn = self.transfercmd(cmd)
-            try:
-                while 1:
-                    buf = fp.readline()
-                    if not buf: break
-                    if buf[-2:] != CRLF:
-                        if buf[-1] in CRLF: buf = buf[:-1]
-                        buf = buf + CRLF
-                    conn.sendall(buf)
-                    if callback: callback(buf)
-                # shutdown ssl layer
-                if isinstance(conn, ssl.SSLSocket):
-                    conn.unwrap()
-            finally:
-                conn.close()
-            return self.voidresp()
-
-    __all__.append('FTP_TLS')
-    all_errors = (Error, IOError, EOFError, ssl.SSLError)
-
-
-_150_re = None
-
-def parse150(resp):
-    '''Parse the '150' response for a RETR request.
-    Returns the expected transfer size or None; size is not guaranteed to
-    be present in the 150 message.
-    '''
-    if resp[:3] != '150':
-        raise error_reply, resp
-    global _150_re
-    if _150_re is None:
-        import re
-        _150_re = re.compile("150 .* \((\d+) bytes\)", re.IGNORECASE)
-    m = _150_re.match(resp)
-    if not m:
-        return None
-    s = m.group(1)
-    try:
-        return int(s)
-    except (OverflowError, ValueError):
-        return long(s)
-
-
-_227_re = None
-
-def parse227(resp):
-    '''Parse the '227' response for a PASV request.
-    Raises error_proto if it does not contain '(h1,h2,h3,h4,p1,p2)'
-    Return ('host.addr.as.numbers', port#) tuple.'''
-
-    if resp[:3] != '227':
-        raise error_reply, resp
-    global _227_re
-    if _227_re is None:
-        import re
-        _227_re = re.compile(r'(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)')
-    m = _227_re.search(resp)
-    if not m:
-        raise error_proto, resp
-    numbers = m.groups()
-    host = '.'.join(numbers[:4])
-    port = (int(numbers[4]) << 8) + int(numbers[5])
-    return host, port
-
-
-def parse229(resp, peer):
-    '''Parse the '229' response for a EPSV request.
-    Raises error_proto if it does not contain '(|||port|)'
-    Return ('host.addr.as.numbers', port#) tuple.'''
-
-    if resp[:3] != '229':
-        raise error_reply, resp
-    left = resp.find('(')
-    if left < 0: raise error_proto, resp
-    right = resp.find(')', left + 1)
-    if right < 0:
-        raise error_proto, resp # should contain '(|||port|)'
-    if resp[left + 1] != resp[right - 1]:
-        raise error_proto, resp
-    parts = resp[left + 1:right].split(resp[left+1])
-    if len(parts) != 5:
-        raise error_proto, resp
-    host = peer[0]
-    port = int(parts[3])
-    return host, port
-
-
-def parse257(resp):
-    '''Parse the '257' response for a MKD or PWD request.
-    This is a response to a MKD or PWD request: a directory name.
-    Returns the directoryname in the 257 reply.'''
-
-    if resp[:3] != '257':
-        raise error_reply, resp
-    if resp[3:5] != ' "':
-        return '' # Not compliant to RFC 959, but UNIX ftpd does this
-    dirname = ''
-    i = 5
-    n = len(resp)
-    while i < n:
-        c = resp[i]
-        i = i+1
-        if c == '"':
-            if i >= n or resp[i] != '"':
-                break
-            i = i+1
-        dirname = dirname + c
-    return dirname
-
-
-def print_line(line):
-    '''Default retrlines callback to print a line.'''
-    print line
-
-
-def ftpcp(source, sourcename, target, targetname = '', type = 'I'):
-    '''Copy file from one FTP-instance to another.'''
-    if not targetname: targetname = sourcename
-    type = 'TYPE ' + type
-    source.voidcmd(type)
-    target.voidcmd(type)
-    sourcehost, sourceport = parse227(source.sendcmd('PASV'))
-    target.sendport(sourcehost, sourceport)
-    # RFC 959: the user must "listen" [...] BEFORE sending the
-    # transfer request.
-    # So: STOR before RETR, because here the target is a "user".
-    treply = target.sendcmd('STOR ' + targetname)
-    if treply[:3] not in ('125', '150'): raise error_proto  # RFC 959
-    sreply = source.sendcmd('RETR ' + sourcename)
-    if sreply[:3] not in ('125', '150'): raise error_proto  # RFC 959
-    source.voidresp()
-    target.voidresp()
-
-
-class Netrc:
-    """Class to parse & provide access to 'netrc' format files.
-
-    See the netrc(4) man page for information on the file format.
-
-    WARNING: This class is obsolete -- use module netrc instead.
-
-    """
-    __defuser = None
-    __defpasswd = None
-    __defacct = None
-
-    def __init__(self, filename=None):
-        if filename is None:
-            if "HOME" in os.environ:
-                filename = os.path.join(os.environ["HOME"],
-                                        ".netrc")
-            else:
-                raise IOError, \
-                      "specify file to load or set $HOME"
-        self.__hosts = {}
-        self.__macros = {}
-        fp = open(filename, "r")
-        in_macro = 0
-        while 1:
-            line = fp.readline()
-            if not line: break
-            if in_macro and line.strip():
-                macro_lines.append(line)
-                continue
-            elif in_macro:
-                self.__macros[macro_name] = tuple(macro_lines)
-                in_macro = 0
-            words = line.split()
-            host = user = passwd = acct = None
-            default = 0
-            i = 0
-            while i < len(words):
-                w1 = words[i]
-                if i+1 < len(words):
-                    w2 = words[i + 1]
-                else:
-                    w2 = None
-                if w1 == 'default':
-                    default = 1
-                elif w1 == 'machine' and w2:
-                    host = w2.lower()
-                    i = i + 1
-                elif w1 == 'login' and w2:
-                    user = w2
-                    i = i + 1
-                elif w1 == 'password' and w2:
-                    passwd = w2
-                    i = i + 1
-                elif w1 == 'account' and w2:
-                    acct = w2
-                    i = i + 1
-                elif w1 == 'macdef' and w2:
-                    macro_name = w2
-                    macro_lines = []
-                    in_macro = 1
-                    break
-                i = i + 1
-            if default:
-                self.__defuser = user or self.__defuser
-                self.__defpasswd = passwd or self.__defpasswd
-                self.__defacct = acct or self.__defacct
-            if host:
-                if host in self.__hosts:
-                    ouser, opasswd, oacct = \
-                           self.__hosts[host]
-                    user = user or ouser
-                    passwd = passwd or opasswd
-                    acct = acct or oacct
-                self.__hosts[host] = user, passwd, acct
-        fp.close()
-
-    def get_hosts(self):
-        """Return a list of hosts mentioned in the .netrc file."""
-        return self.__hosts.keys()
-
-    def get_account(self, host):
-        """Returns login information for the named host.
-
-        The return value is a triple containing userid,
-        password, and the accounting field.
-
-        """
-        host = host.lower()
-        user = passwd = acct = None
-        if host in self.__hosts:
-            user, passwd, acct = self.__hosts[host]
-        user = user or self.__defuser
-        passwd = passwd or self.__defpasswd
-        acct = acct or self.__defacct
-        return user, passwd, acct
-
-    def get_macros(self):
-        """Return a list of all defined macro names."""
-        return self.__macros.keys()
-
-    def get_macro(self, macro):
-        """Return a sequence of lines which define a named macro."""
-        return self.__macros[macro]
-
-
-
-def test():
-    '''Test program.
-    Usage: ftp [-d] [-r[file]] host [-l[dir]] [-d[dir]] [-p] [file] ...
-
-    -d dir
-    -l list
-    -p password
-    '''
-
-    if len(sys.argv) < 2:
-        print test.__doc__
-        sys.exit(0)
-
-    debugging = 0
-    rcfile = None
-    while sys.argv[1] == '-d':
-        debugging = debugging+1
-        del sys.argv[1]
-    if sys.argv[1][:2] == '-r':
-        # get name of alternate ~/.netrc file:
-        rcfile = sys.argv[1][2:]
-        del sys.argv[1]
-    host = sys.argv[1]
-    ftp = FTP(host)
-    ftp.set_debuglevel(debugging)
-    userid = passwd = acct = ''
-    try:
-        netrc = Netrc(rcfile)
-    except IOError:
-        if rcfile is not None:
-            sys.stderr.write("Could not open account file"
-                             " -- using anonymous login.")
-    else:
-        try:
-            userid, passwd, acct = netrc.get_account(host)
-        except KeyError:
-            # no account for host
-            sys.stderr.write(
-                    "No account -- using anonymous login.")
-    ftp.login(userid, passwd, acct)
-    for file in sys.argv[2:]:
-        if file[:2] == '-l':
-            ftp.dir(file[2:])
-        elif file[:2] == '-d':
-            cmd = 'CWD'
-            if file[2:]: cmd = cmd + ' ' + file[2:]
-            resp = ftp.sendcmd(cmd)
-        elif file == '-p':
-            ftp.set_pasv(not ftp.passiveserver)
-        else:
-            ftp.retrbinary('RETR ' + file, \
-                           sys.stdout.write, 1024)
-    ftp.quit()
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/functools.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/functools.py
deleted file mode 100644
index b267245..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/functools.py
+++ /dev/null
@@ -1,100 +0,0 @@
-"""functools.py - Tools for working with functions and callable objects
-"""
-# Python module wrapper for _functools C module
-# to allow utilities written in Python to be added
-# to the functools module.
-# Written by Nick Coghlan <ncoghlan at gmail.com>
-#   Copyright (C) 2006 Python Software Foundation.
-# See C source code for _functools credits/copyright
-
-from _functools import partial, reduce
-
-# update_wrapper() and wraps() are tools to help write
-# wrapper functions that can handle naive introspection
-
-WRAPPER_ASSIGNMENTS = ('__module__', '__name__', '__doc__')
-WRAPPER_UPDATES = ('__dict__',)
-def update_wrapper(wrapper,
-                   wrapped,
-                   assigned = WRAPPER_ASSIGNMENTS,
-                   updated = WRAPPER_UPDATES):
-    """Update a wrapper function to look like the wrapped function
-
-       wrapper is the function to be updated
-       wrapped is the original function
-       assigned is a tuple naming the attributes assigned directly
-       from the wrapped function to the wrapper function (defaults to
-       functools.WRAPPER_ASSIGNMENTS)
-       updated is a tuple naming the attributes of the wrapper that
-       are updated with the corresponding attribute from the wrapped
-       function (defaults to functools.WRAPPER_UPDATES)
-    """
-    for attr in assigned:
-        setattr(wrapper, attr, getattr(wrapped, attr))
-    for attr in updated:
-        getattr(wrapper, attr).update(getattr(wrapped, attr, {}))
-    # Return the wrapper so this can be used as a decorator via partial()
-    return wrapper
-
-def wraps(wrapped,
-          assigned = WRAPPER_ASSIGNMENTS,
-          updated = WRAPPER_UPDATES):
-    """Decorator factory to apply update_wrapper() to a wrapper function
-
-       Returns a decorator that invokes update_wrapper() with the decorated
-       function as the wrapper argument and the arguments to wraps() as the
-       remaining arguments. Default arguments are as for update_wrapper().
-       This is a convenience function to simplify applying partial() to
-       update_wrapper().
-    """
-    return partial(update_wrapper, wrapped=wrapped,
-                   assigned=assigned, updated=updated)
-
-def total_ordering(cls):
-    """Class decorator that fills in missing ordering methods"""
-    convert = {
-        '__lt__': [('__gt__', lambda self, other: not (self < other or self == other)),
-                   ('__le__', lambda self, other: self < other or self == other),
-                   ('__ge__', lambda self, other: not self < other)],
-        '__le__': [('__ge__', lambda self, other: not self <= other or self == other),
-                   ('__lt__', lambda self, other: self <= other and not self == other),
-                   ('__gt__', lambda self, other: not self <= other)],
-        '__gt__': [('__lt__', lambda self, other: not (self > other or self == other)),
-                   ('__ge__', lambda self, other: self > other or self == other),
-                   ('__le__', lambda self, other: not self > other)],
-        '__ge__': [('__le__', lambda self, other: (not self >= other) or self == other),
-                   ('__gt__', lambda self, other: self >= other and not self == other),
-                   ('__lt__', lambda self, other: not self >= other)]
-    }
-    roots = set(dir(cls)) & set(convert)
-    if not roots:
-        raise ValueError('must define at least one ordering operation: < > <= >=')
-    root = max(roots)       # prefer __lt__ to __le__ to __gt__ to __ge__
-    for opname, opfunc in convert[root]:
-        if opname not in roots:
-            opfunc.__name__ = opname
-            opfunc.__doc__ = getattr(int, opname).__doc__
-            setattr(cls, opname, opfunc)
-    return cls
-
-def cmp_to_key(mycmp):
-    """Convert a cmp= function into a key= function"""
-    class K(object):
-        __slots__ = ['obj']
-        def __init__(self, obj, *args):
-            self.obj = obj
-        def __lt__(self, other):
-            return mycmp(self.obj, other.obj) < 0
-        def __gt__(self, other):
-            return mycmp(self.obj, other.obj) > 0
-        def __eq__(self, other):
-            return mycmp(self.obj, other.obj) == 0
-        def __le__(self, other):
-            return mycmp(self.obj, other.obj) <= 0
-        def __ge__(self, other):
-            return mycmp(self.obj, other.obj) >= 0
-        def __ne__(self, other):
-            return mycmp(self.obj, other.obj) != 0
-        def __hash__(self):
-            raise TypeError('hash not implemented')
-    return K
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/genericpath.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/genericpath.py
deleted file mode 100644
index 35659e3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/genericpath.py
+++ /dev/null
@@ -1,105 +0,0 @@
-"""
-Path operations common to more than one OS
-Do not use directly.  The OS specific modules import the appropriate
-functions from this module themselves.
-"""
-import os
-import stat
-
-__all__ = ['commonprefix', 'exists', 'getatime', 'getctime', 'getmtime',
-           'getsize', 'isdir', 'isfile']
-
-
-# Does a path exist?
-# This is false for dangling symbolic links on systems that support them.
-def exists(path):
-    """Test whether a path exists.  Returns False for broken symbolic links"""
-    try:
-        os.stat(path)
-    except os.error:
-        return False
-    return True
-
-
-# This follows symbolic links, so both islink() and isdir() can be true
-# for the same path ono systems that support symlinks
-def isfile(path):
-    """Test whether a path is a regular file"""
-    try:
-        st = os.stat(path)
-    except os.error:
-        return False
-    return stat.S_ISREG(st.st_mode)
-
-
-# Is a path a directory?
-# This follows symbolic links, so both islink() and isdir()
-# can be true for the same path on systems that support symlinks
-def isdir(s):
-    """Return true if the pathname refers to an existing directory."""
-    try:
-        st = os.stat(s)
-    except os.error:
-        return False
-    return stat.S_ISDIR(st.st_mode)
-
-
-def getsize(filename):
-    """Return the size of a file, reported by os.stat()."""
-    return os.stat(filename).st_size
-
-
-def getmtime(filename):
-    """Return the last modification time of a file, reported by os.stat()."""
-    return os.stat(filename).st_mtime
-
-
-def getatime(filename):
-    """Return the last access time of a file, reported by os.stat()."""
-    return os.stat(filename).st_atime
-
-
-def getctime(filename):
-    """Return the metadata change time of a file, reported by os.stat()."""
-    return os.stat(filename).st_ctime
-
-
-# Return the longest prefix of all list elements.
-def commonprefix(m):
-    "Given a list of pathnames, returns the longest common leading component"
-    if not m: return ''
-    s1 = min(m)
-    s2 = max(m)
-    for i, c in enumerate(s1):
-        if c != s2[i]:
-            return s1[:i]
-    return s1
-
-# Split a path in root and extension.
-# The extension is everything starting at the last dot in the last
-# pathname component; the root is everything before that.
-# It is always true that root + ext == p.
-
-# Generic implementation of splitext, to be parametrized with
-# the separators
-def _splitext(p, sep, altsep, extsep):
-    """Split the extension from a pathname.
-
-    Extension is everything from the last dot to the end, ignoring
-    leading dots.  Returns "(root, ext)"; ext may be empty."""
-
-    sepIndex = p.rfind(sep)
-    if altsep:
-        altsepIndex = p.rfind(altsep)
-        sepIndex = max(sepIndex, altsepIndex)
-
-    dotIndex = p.rfind(extsep)
-    if dotIndex > sepIndex:
-        # skip all leading dots
-        filenameIndex = sepIndex + 1
-        while filenameIndex < dotIndex:
-            if p[filenameIndex] != extsep:
-                return p[:dotIndex], p[dotIndex:]
-            filenameIndex += 1
-
-    return p, ''
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/getopt.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/getopt.py
deleted file mode 100644
index c6a763a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/getopt.py
+++ /dev/null
@@ -1,210 +0,0 @@
-"""Parser for command line options.
-
-This module helps scripts to parse the command line arguments in
-sys.argv.  It supports the same conventions as the Unix getopt()
-function (including the special meanings of arguments of the form `-'
-and `--').  Long options similar to those supported by GNU software
-may be used as well via an optional third argument.  This module
-provides two functions and an exception:
-
-getopt() -- Parse command line options
-gnu_getopt() -- Like getopt(), but allow option and non-option arguments
-to be intermixed.
-GetoptError -- exception (class) raised with 'opt' attribute, which is the
-option involved with the exception.
-"""
-
-# Long option support added by Lars Wirzenius <liw@iki.fi>.
-#
-# Gerrit Holl <gerrit@nl.linux.org> moved the string-based exceptions
-# to class-based exceptions.
-#
-# Peter Astrand <astrand@lysator.liu.se> added gnu_getopt().
-#
-# TODO for gnu_getopt():
-#
-# - GNU getopt_long_only mechanism
-# - allow the caller to specify ordering
-# - RETURN_IN_ORDER option
-# - GNU extension with '-' as first character of option string
-# - optional arguments, specified by double colons
-# - a option string with a W followed by semicolon should
-#   treat "-W foo" as "--foo"
-
-__all__ = ["GetoptError","error","getopt","gnu_getopt"]
-
-import os
-
-class GetoptError(Exception):
-    opt = ''
-    msg = ''
-    def __init__(self, msg, opt=''):
-        self.msg = msg
-        self.opt = opt
-        Exception.__init__(self, msg, opt)
-
-    def __str__(self):
-        return self.msg
-
-error = GetoptError # backward compatibility
-
-def getopt(args, shortopts, longopts = []):
-    """getopt(args, options[, long_options]) -> opts, args
-
-    Parses command line options and parameter list.  args is the
-    argument list to be parsed, without the leading reference to the
-    running program.  Typically, this means "sys.argv[1:]".  shortopts
-    is the string of option letters that the script wants to
-    recognize, with options that require an argument followed by a
-    colon (i.e., the same format that Unix getopt() uses).  If
-    specified, longopts is a list of strings with the names of the
-    long options which should be supported.  The leading '--'
-    characters should not be included in the option name.  Options
-    which require an argument should be followed by an equal sign
-    ('=').
-
-    The return value consists of two elements: the first is a list of
-    (option, value) pairs; the second is the list of program arguments
-    left after the option list was stripped (this is a trailing slice
-    of the first argument).  Each option-and-value pair returned has
-    the option as its first element, prefixed with a hyphen (e.g.,
-    '-x'), and the option argument as its second element, or an empty
-    string if the option has no argument.  The options occur in the
-    list in the same order in which they were found, thus allowing
-    multiple occurrences.  Long and short options may be mixed.
-
-    """
-
-    opts = []
-    if type(longopts) == type(""):
-        longopts = [longopts]
-    else:
-        longopts = list(longopts)
-    while args and args[0].startswith('-') and args[0] != '-':
-        if args[0] == '--':
-            args = args[1:]
-            break
-        if args[0].startswith('--'):
-            opts, args = do_longs(opts, args[0][2:], longopts, args[1:])
-        else:
-            opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:])
-
-    return opts, args
-
-def gnu_getopt(args, shortopts, longopts = []):
-    """getopt(args, options[, long_options]) -> opts, args
-
-    This function works like getopt(), except that GNU style scanning
-    mode is used by default. This means that option and non-option
-    arguments may be intermixed. The getopt() function stops
-    processing options as soon as a non-option argument is
-    encountered.
-
-    If the first character of the option string is `+', or if the
-    environment variable POSIXLY_CORRECT is set, then option
-    processing stops as soon as a non-option argument is encountered.
-
-    """
-
-    opts = []
-    prog_args = []
-    if isinstance(longopts, str):
-        longopts = [longopts]
-    else:
-        longopts = list(longopts)
-
-    # Allow options after non-option arguments?
-    if shortopts.startswith('+'):
-        shortopts = shortopts[1:]
-        all_options_first = True
-    elif os.environ.get("POSIXLY_CORRECT"):
-        all_options_first = True
-    else:
-        all_options_first = False
-
-    while args:
-        if args[0] == '--':
-            prog_args += args[1:]
-            break
-
-        if args[0][:2] == '--':
-            opts, args = do_longs(opts, args[0][2:], longopts, args[1:])
-        elif args[0][:1] == '-' and args[0] != '-':
-            opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:])
-        else:
-            if all_options_first:
-                prog_args += args
-                break
-            else:
-                prog_args.append(args[0])
-                args = args[1:]
-
-    return opts, prog_args
-
-def do_longs(opts, opt, longopts, args):
-    try:
-        i = opt.index('=')
-    except ValueError:
-        optarg = None
-    else:
-        opt, optarg = opt[:i], opt[i+1:]
-
-    has_arg, opt = long_has_args(opt, longopts)
-    if has_arg:
-        if optarg is None:
-            if not args:
-                raise GetoptError('option --%s requires argument' % opt, opt)
-            optarg, args = args[0], args[1:]
-    elif optarg is not None:
-        raise GetoptError('option --%s must not have an argument' % opt, opt)
-    opts.append(('--' + opt, optarg or ''))
-    return opts, args
-
-# Return:
-#   has_arg?
-#   full option name
-def long_has_args(opt, longopts):
-    possibilities = [o for o in longopts if o.startswith(opt)]
-    if not possibilities:
-        raise GetoptError('option --%s not recognized' % opt, opt)
-    # Is there an exact match?
-    if opt in possibilities:
-        return False, opt
-    elif opt + '=' in possibilities:
-        return True, opt
-    # No exact match, so better be unique.
-    if len(possibilities) > 1:
-        # XXX since possibilities contains all valid continuations, might be
-        # nice to work them into the error msg
-        raise GetoptError('option --%s not a unique prefix' % opt, opt)
-    assert len(possibilities) == 1
-    unique_match = possibilities[0]
-    has_arg = unique_match.endswith('=')
-    if has_arg:
-        unique_match = unique_match[:-1]
-    return has_arg, unique_match
-
-def do_shorts(opts, optstring, shortopts, args):
-    while optstring != '':
-        opt, optstring = optstring[0], optstring[1:]
-        if short_has_arg(opt, shortopts):
-            if optstring == '':
-                if not args:
-                    raise GetoptError('option -%s requires argument' % opt,
-                                      opt)
-                optstring, args = args[0], args[1:]
-            optarg, optstring = optstring, ''
-        else:
-            optarg = ''
-        opts.append(('-' + opt, optarg))
-    return opts, args
-
-def short_has_arg(opt, shortopts):
-    for i in range(len(shortopts)):
-        if opt == shortopts[i] != ':':
-            return shortopts.startswith(':', i+1)
-    raise GetoptError('option -%s not recognized' % opt, opt)
-
-if __name__ == '__main__':
-    import sys
-    print getopt(sys.argv[1:], "a:b", ["alpha=", "beta"])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/getpass.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/getpass.py
deleted file mode 100644
index c6f5813..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/getpass.py
+++ /dev/null
@@ -1,179 +0,0 @@
-"""Utilities to get a password and/or the current user name.
-
-getpass(prompt[, stream]) - Prompt for a password, with echo turned off.
-getuser() - Get the user name from the environment or password database.
-
-GetPassWarning - This UserWarning is issued when getpass() cannot prevent
-                 echoing of the password contents while reading.
-
-On Windows, the msvcrt module will be used.
-On the Mac EasyDialogs.AskPassword is used, if available.
-
-"""
-
-# Authors: Piers Lauder (original)
-#          Guido van Rossum (Windows support and cleanup)
-#          Gregory P. Smith (tty support & GetPassWarning)
-
-import os, sys, warnings
-
-__all__ = ["getpass","getuser","GetPassWarning"]
-
-
-class GetPassWarning(UserWarning): pass
-
-
-def unix_getpass(prompt='Password: ', stream=None):
-    """Prompt for a password, with echo turned off.
-
-    Args:
-      prompt: Written on stream to ask for the input.  Default: 'Password: '
-      stream: A writable file object to display the prompt.  Defaults to
-              the tty.  If no tty is available defaults to sys.stderr.
-    Returns:
-      The seKr3t input.
-    Raises:
-      EOFError: If our input tty or stdin was closed.
-      GetPassWarning: When we were unable to turn echo off on the input.
-
-    Always restores terminal settings before returning.
-    """
-    fd = None
-    tty = None
-    try:
-        # Always try reading and writing directly on the tty first.
-        fd = os.open('/dev/tty', os.O_RDWR|os.O_NOCTTY)
-        tty = os.fdopen(fd, 'w+', 1)
-        input = tty
-        if not stream:
-            stream = tty
-    except EnvironmentError, e:
-        # If that fails, see if stdin can be controlled.
-        try:
-            fd = sys.stdin.fileno()
-        except (AttributeError, ValueError):
-            passwd = fallback_getpass(prompt, stream)
-        input = sys.stdin
-        if not stream:
-            stream = sys.stderr
-
-    if fd is not None:
-        passwd = None
-        try:
-            old = termios.tcgetattr(fd)     # a copy to save
-            new = old[:]
-            new[3] &= ~termios.ECHO  # 3 == 'lflags'
-            tcsetattr_flags = termios.TCSAFLUSH
-            if hasattr(termios, 'TCSASOFT'):
-                tcsetattr_flags |= termios.TCSASOFT
-            try:
-                termios.tcsetattr(fd, tcsetattr_flags, new)
-                passwd = _raw_input(prompt, stream, input=input)
-            finally:
-                termios.tcsetattr(fd, tcsetattr_flags, old)
-                stream.flush()  # issue7208
-        except termios.error, e:
-            if passwd is not None:
-                # _raw_input succeeded.  The final tcsetattr failed.  Reraise
-                # instead of leaving the terminal in an unknown state.
-                raise
-            # We can't control the tty or stdin.  Give up and use normal IO.
-            # fallback_getpass() raises an appropriate warning.
-            del input, tty  # clean up unused file objects before blocking
-            passwd = fallback_getpass(prompt, stream)
-
-    stream.write('\n')
-    return passwd
-
-
-def win_getpass(prompt='Password: ', stream=None):
-    """Prompt for password with echo off, using Windows getch()."""
-    if sys.stdin is not sys.__stdin__:
-        return fallback_getpass(prompt, stream)
-    import msvcrt
-    for c in prompt:
-        msvcrt.putch(c)
-    pw = ""
-    while 1:
-        c = msvcrt.getch()
-        if c == '\r' or c == '\n':
-            break
-        if c == '\003':
-            raise KeyboardInterrupt
-        if c == '\b':
-            pw = pw[:-1]
-        else:
-            pw = pw + c
-    msvcrt.putch('\r')
-    msvcrt.putch('\n')
-    return pw
-
-
-def fallback_getpass(prompt='Password: ', stream=None):
-    warnings.warn("Can not control echo on the terminal.", GetPassWarning,
-                  stacklevel=2)
-    if not stream:
-        stream = sys.stderr
-    print >>stream, "Warning: Password input may be echoed."
-    return _raw_input(prompt, stream)
-
-
-def _raw_input(prompt="", stream=None, input=None):
-    # A raw_input() replacement that doesn't save the string in the
-    # GNU readline history.
-    if not stream:
-        stream = sys.stderr
-    if not input:
-        input = sys.stdin
-    prompt = str(prompt)
-    if prompt:
-        stream.write(prompt)
-        stream.flush()
-    # NOTE: The Python C API calls flockfile() (and unlock) during readline.
-    line = input.readline()
-    if not line:
-        raise EOFError
-    if line[-1] == '\n':
-        line = line[:-1]
-    return line
-
-
-def getuser():
-    """Get the username from the environment or password database.
-
-    First try various environment variables, then the password
-    database.  This works on Windows as long as USERNAME is set.
-
-    """
-
-    import os
-
-    for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'):
-        user = os.environ.get(name)
-        if user:
-            return user
-
-    # If this fails, the exception will "explain" why
-    import pwd
-    return pwd.getpwuid(os.getuid())[0]
-
-# Bind the name getpass to the appropriate function
-try:
-    import termios
-    # it's possible there is an incompatible termios from the
-    # McMillan Installer, make sure we have a UNIX-compatible termios
-    termios.tcgetattr, termios.tcsetattr
-except (ImportError, AttributeError):
-    try:
-        import msvcrt
-    except ImportError:
-        try:
-            from EasyDialogs import AskPassword
-        except ImportError:
-            getpass = fallback_getpass
-        else:
-            getpass = AskPassword
-    else:
-        getpass = win_getpass
-else:
-    getpass = unix_getpass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/gettext.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/gettext.py
deleted file mode 100644
index cfca03f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/gettext.py
+++ /dev/null
@@ -1,591 +0,0 @@
-"""Internationalization and localization support.
-
-This module provides internationalization (I18N) and localization (L10N)
-support for your Python programs by providing an interface to the GNU gettext
-message catalog library.
-
-I18N refers to the operation by which a program is made aware of multiple
-languages.  L10N refers to the adaptation of your program, once
-internationalized, to the local language and cultural habits.
-
-"""
-
-# This module represents the integration of work, contributions, feedback, and
-# suggestions from the following people:
-#
-# Martin von Loewis, who wrote the initial implementation of the underlying
-# C-based libintlmodule (later renamed _gettext), along with a skeletal
-# gettext.py implementation.
-#
-# Peter Funk, who wrote fintl.py, a fairly complete wrapper around intlmodule,
-# which also included a pure-Python implementation to read .mo files if
-# intlmodule wasn't available.
-#
-# James Henstridge, who also wrote a gettext.py module, which has some
-# interesting, but currently unsupported experimental features: the notion of
-# a Catalog class and instances, and the ability to add to a catalog file via
-# a Python API.
-#
-# Barry Warsaw integrated these modules, wrote the .install() API and code,
-# and conformed all C and Python code to Python's coding standards.
-#
-# Francois Pinard and Marc-Andre Lemburg also contributed valuably to this
-# module.
-#
-# J. David Ibanez implemented plural forms. Bruno Haible fixed some bugs.
-#
-# TODO:
-# - Lazy loading of .mo files.  Currently the entire catalog is loaded into
-#   memory, but that's probably bad for large translated programs.  Instead,
-#   the lexical sort of original strings in GNU .mo files should be exploited
-#   to do binary searches and lazy initializations.  Or you might want to use
-#   the undocumented double-hash algorithm for .mo files with hash tables, but
-#   you'll need to study the GNU gettext code to do this.
-#
-# - Support Solaris .mo file formats.  Unfortunately, we've been unable to
-#   find this format documented anywhere.
-
-
-import locale, copy, os, re, struct, sys
-from errno import ENOENT
-
-
-__all__ = ['NullTranslations', 'GNUTranslations', 'Catalog',
-           'find', 'translation', 'install', 'textdomain', 'bindtextdomain',
-           'dgettext', 'dngettext', 'gettext', 'ngettext',
-           ]
-
-_default_localedir = os.path.join(sys.prefix, 'share', 'locale')
-
-
-def test(condition, true, false):
-    """
-    Implements the C expression:
-
-      condition ? true : false
-
-    Required to correctly interpret plural forms.
-    """
-    if condition:
-        return true
-    else:
-        return false
-
-
-def c2py(plural):
-    """Gets a C expression as used in PO files for plural forms and returns a
-    Python lambda function that implements an equivalent expression.
-    """
-    # Security check, allow only the "n" identifier
-    try:
-        from cStringIO import StringIO
-    except ImportError:
-        from StringIO import StringIO
-    import token, tokenize
-    tokens = tokenize.generate_tokens(StringIO(plural).readline)
-    try:
-        danger = [x for x in tokens if x[0] == token.NAME and x[1] != 'n']
-    except tokenize.TokenError:
-        raise ValueError, \
-              'plural forms expression error, maybe unbalanced parenthesis'
-    else:
-        if danger:
-            raise ValueError, 'plural forms expression could be dangerous'
-
-    # Replace some C operators by their Python equivalents
-    plural = plural.replace('&&', ' and ')
-    plural = plural.replace('||', ' or ')
-
-    expr = re.compile(r'\!([^=])')
-    plural = expr.sub(' not \\1', plural)
-
-    # Regular expression and replacement function used to transform
-    # "a?b:c" to "test(a,b,c)".
-    expr = re.compile(r'(.*?)\?(.*?):(.*)')
-    def repl(x):
-        return "test(%s, %s, %s)" % (x.group(1), x.group(2),
-                                     expr.sub(repl, x.group(3)))
-
-    # Code to transform the plural expression, taking care of parentheses
-    stack = ['']
-    for c in plural:
-        if c == '(':
-            stack.append('')
-        elif c == ')':
-            if len(stack) == 1:
-                # Actually, we never reach this code, because unbalanced
-                # parentheses get caught in the security check at the
-                # beginning.
-                raise ValueError, 'unbalanced parenthesis in plural form'
-            s = expr.sub(repl, stack.pop())
-            stack[-1] += '(%s)' % s
-        else:
-            stack[-1] += c
-    plural = expr.sub(repl, stack.pop())
-
-    return eval('lambda n: int(%s)' % plural)
-
-
-
-def _expand_lang(locale):
-    from locale import normalize
-    locale = normalize(locale)
-    COMPONENT_CODESET   = 1 << 0
-    COMPONENT_TERRITORY = 1 << 1
-    COMPONENT_MODIFIER  = 1 << 2
-    # split up the locale into its base components
-    mask = 0
-    pos = locale.find('@')
-    if pos >= 0:
-        modifier = locale[pos:]
-        locale = locale[:pos]
-        mask |= COMPONENT_MODIFIER
-    else:
-        modifier = ''
-    pos = locale.find('.')
-    if pos >= 0:
-        codeset = locale[pos:]
-        locale = locale[:pos]
-        mask |= COMPONENT_CODESET
-    else:
-        codeset = ''
-    pos = locale.find('_')
-    if pos >= 0:
-        territory = locale[pos:]
-        locale = locale[:pos]
-        mask |= COMPONENT_TERRITORY
-    else:
-        territory = ''
-    language = locale
-    ret = []
-    for i in range(mask+1):
-        if not (i & ~mask):  # if all components for this combo exist ...
-            val = language
-            if i & COMPONENT_TERRITORY: val += territory
-            if i & COMPONENT_CODESET:   val += codeset
-            if i & COMPONENT_MODIFIER:  val += modifier
-            ret.append(val)
-    ret.reverse()
-    return ret
-
-
-
-class NullTranslations:
-    def __init__(self, fp=None):
-        self._info = {}
-        self._charset = None
-        self._output_charset = None
-        self._fallback = None
-        if fp is not None:
-            self._parse(fp)
-
-    def _parse(self, fp):
-        pass
-
-    def add_fallback(self, fallback):
-        if self._fallback:
-            self._fallback.add_fallback(fallback)
-        else:
-            self._fallback = fallback
-
-    def gettext(self, message):
-        if self._fallback:
-            return self._fallback.gettext(message)
-        return message
-
-    def lgettext(self, message):
-        if self._fallback:
-            return self._fallback.lgettext(message)
-        return message
-
-    def ngettext(self, msgid1, msgid2, n):
-        if self._fallback:
-            return self._fallback.ngettext(msgid1, msgid2, n)
-        if n == 1:
-            return msgid1
-        else:
-            return msgid2
-
-    def lngettext(self, msgid1, msgid2, n):
-        if self._fallback:
-            return self._fallback.lngettext(msgid1, msgid2, n)
-        if n == 1:
-            return msgid1
-        else:
-            return msgid2
-
-    def ugettext(self, message):
-        if self._fallback:
-            return self._fallback.ugettext(message)
-        return unicode(message)
-
-    def ungettext(self, msgid1, msgid2, n):
-        if self._fallback:
-            return self._fallback.ungettext(msgid1, msgid2, n)
-        if n == 1:
-            return unicode(msgid1)
-        else:
-            return unicode(msgid2)
-
-    def info(self):
-        return self._info
-
-    def charset(self):
-        return self._charset
-
-    def output_charset(self):
-        return self._output_charset
-
-    def set_output_charset(self, charset):
-        self._output_charset = charset
-
-    def install(self, unicode=False, names=None):
-        import __builtin__
-        __builtin__.__dict__['_'] = unicode and self.ugettext or self.gettext
-        if hasattr(names, "__contains__"):
-            if "gettext" in names:
-                __builtin__.__dict__['gettext'] = __builtin__.__dict__['_']
-            if "ngettext" in names:
-                __builtin__.__dict__['ngettext'] = (unicode and self.ungettext
-                                                             or self.ngettext)
-            if "lgettext" in names:
-                __builtin__.__dict__['lgettext'] = self.lgettext
-            if "lngettext" in names:
-                __builtin__.__dict__['lngettext'] = self.lngettext
-
-
-class GNUTranslations(NullTranslations):
-    # Magic number of .mo files
-    LE_MAGIC = 0x950412deL
-    BE_MAGIC = 0xde120495L
-
-    def _parse(self, fp):
-        """Override this method to support alternative .mo formats."""
-        unpack = struct.unpack
-        filename = getattr(fp, 'name', '')
-        # Parse the .mo file header, which consists of 5 little endian 32
-        # bit words.
-        self._catalog = catalog = {}
-        self.plural = lambda n: int(n != 1) # germanic plural by default
-        buf = fp.read()
-        buflen = len(buf)
-        # Are we big endian or little endian?
-        magic = unpack('<I', buf[:4])[0]
-        if magic == self.LE_MAGIC:
-            version, msgcount, masteridx, transidx = unpack('<4I', buf[4:20])
-            ii = '<II'
-        elif magic == self.BE_MAGIC:
-            version, msgcount, masteridx, transidx = unpack('>4I', buf[4:20])
-            ii = '>II'
-        else:
-            raise IOError(0, 'Bad magic number', filename)
-        # Now put all messages from the .mo file buffer into the catalog
-        # dictionary.
-        for i in xrange(0, msgcount):
-            mlen, moff = unpack(ii, buf[masteridx:masteridx+8])
-            mend = moff + mlen
-            tlen, toff = unpack(ii, buf[transidx:transidx+8])
-            tend = toff + tlen
-            if mend < buflen and tend < buflen:
-                msg = buf[moff:mend]
-                tmsg = buf[toff:tend]
-            else:
-                raise IOError(0, 'File is corrupt', filename)
-            # See if we're looking at GNU .mo conventions for metadata
-            if mlen == 0:
-                # Catalog description
-                lastk = k = None
-                for item in tmsg.splitlines():
-                    item = item.strip()
-                    if not item:
-                        continue
-                    if ':' in item:
-                        k, v = item.split(':', 1)
-                        k = k.strip().lower()
-                        v = v.strip()
-                        self._info[k] = v
-                        lastk = k
-                    elif lastk:
-                        self._info[lastk] += '\n' + item
-                    if k == 'content-type':
-                        self._charset = v.split('charset=')[1]
-                    elif k == 'plural-forms':
-                        v = v.split(';')
-                        plural = v[1].split('plural=')[1]
-                        self.plural = c2py(plural)
-            # Note: we unconditionally convert both msgids and msgstrs to
-            # Unicode using the character encoding specified in the charset
-            # parameter of the Content-Type header.  The gettext documentation
-            # strongly encourages msgids to be us-ascii, but some applications
-            # require alternative encodings (e.g. Zope's ZCML and ZPT).  For
-            # traditional gettext applications, the msgid conversion will
-            # cause no problems since us-ascii should always be a subset of
-            # the charset encoding.  We may want to fall back to 8-bit msgids
-            # if the Unicode conversion fails.
-            if '\x00' in msg:
-                # Plural forms
-                msgid1, msgid2 = msg.split('\x00')
-                tmsg = tmsg.split('\x00')
-                if self._charset:
-                    msgid1 = unicode(msgid1, self._charset)
-                    tmsg = [unicode(x, self._charset) for x in tmsg]
-                for i in range(len(tmsg)):
-                    catalog[(msgid1, i)] = tmsg[i]
-            else:
-                if self._charset:
-                    msg = unicode(msg, self._charset)
-                    tmsg = unicode(tmsg, self._charset)
-                catalog[msg] = tmsg
-            # advance to next entry in the seek tables
-            masteridx += 8
-            transidx += 8
-
-    def gettext(self, message):
-        missing = object()
-        tmsg = self._catalog.get(message, missing)
-        if tmsg is missing:
-            if self._fallback:
-                return self._fallback.gettext(message)
-            return message
-        # Encode the Unicode tmsg back to an 8-bit string, if possible
-        if self._output_charset:
-            return tmsg.encode(self._output_charset)
-        elif self._charset:
-            return tmsg.encode(self._charset)
-        return tmsg
-
-    def lgettext(self, message):
-        missing = object()
-        tmsg = self._catalog.get(message, missing)
-        if tmsg is missing:
-            if self._fallback:
-                return self._fallback.lgettext(message)
-            return message
-        if self._output_charset:
-            return tmsg.encode(self._output_charset)
-        return tmsg.encode(locale.getpreferredencoding())
-
-    def ngettext(self, msgid1, msgid2, n):
-        try:
-            tmsg = self._catalog[(msgid1, self.plural(n))]
-            if self._output_charset:
-                return tmsg.encode(self._output_charset)
-            elif self._charset:
-                return tmsg.encode(self._charset)
-            return tmsg
-        except KeyError:
-            if self._fallback:
-                return self._fallback.ngettext(msgid1, msgid2, n)
-            if n == 1:
-                return msgid1
-            else:
-                return msgid2
-
-    def lngettext(self, msgid1, msgid2, n):
-        try:
-            tmsg = self._catalog[(msgid1, self.plural(n))]
-            if self._output_charset:
-                return tmsg.encode(self._output_charset)
-            return tmsg.encode(locale.getpreferredencoding())
-        except KeyError:
-            if self._fallback:
-                return self._fallback.lngettext(msgid1, msgid2, n)
-            if n == 1:
-                return msgid1
-            else:
-                return msgid2
-
-    def ugettext(self, message):
-        missing = object()
-        tmsg = self._catalog.get(message, missing)
-        if tmsg is missing:
-            if self._fallback:
-                return self._fallback.ugettext(message)
-            return unicode(message)
-        return tmsg
-
-    def ungettext(self, msgid1, msgid2, n):
-        try:
-            tmsg = self._catalog[(msgid1, self.plural(n))]
-        except KeyError:
-            if self._fallback:
-                return self._fallback.ungettext(msgid1, msgid2, n)
-            if n == 1:
-                tmsg = unicode(msgid1)
-            else:
-                tmsg = unicode(msgid2)
-        return tmsg
-
-
-# Locate a .mo file using the gettext strategy
-def find(domain, localedir=None, languages=None, all=0):
-    # Get some reasonable defaults for arguments that were not supplied
-    if localedir is None:
-        localedir = _default_localedir
-    if languages is None:
-        languages = []
-        for envar in ('LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG'):
-            val = os.environ.get(envar)
-            if val:
-                languages = val.split(':')
-                break
-        if 'C' not in languages:
-            languages.append('C')
-    # now normalize and expand the languages
-    nelangs = []
-    for lang in languages:
-        for nelang in _expand_lang(lang):
-            if nelang not in nelangs:
-                nelangs.append(nelang)
-    # select a language
-    if all:
-        result = []
-    else:
-        result = None
-    for lang in nelangs:
-        if lang == 'C':
-            break
-        mofile = os.path.join(localedir, lang, 'LC_MESSAGES', '%s.mo' % domain)
-        if os.path.exists(mofile):
-            if all:
-                result.append(mofile)
-            else:
-                return mofile
-    return result
-
-
-
-# a mapping between absolute .mo file path and Translation object
-_translations = {}
-
-def translation(domain, localedir=None, languages=None,
-                class_=None, fallback=False, codeset=None):
-    if class_ is None:
-        class_ = GNUTranslations
-    mofiles = find(domain, localedir, languages, all=1)
-    if not mofiles:
-        if fallback:
-            return NullTranslations()
-        raise IOError(ENOENT, 'No translation file found for domain', domain)
-    # Avoid opening, reading, and parsing the .mo file after it's been done
-    # once.
-    result = None
-    for mofile in mofiles:
-        key = (class_, os.path.abspath(mofile))
-        t = _translations.get(key)
-        if t is None:
-            with open(mofile, 'rb') as fp:
-                t = _translations.setdefault(key, class_(fp))
-        # Copy the translation object to allow setting fallbacks and
-        # output charset. All other instance data is shared with the
-        # cached object.
-        t = copy.copy(t)
-        if codeset:
-            t.set_output_charset(codeset)
-        if result is None:
-            result = t
-        else:
-            result.add_fallback(t)
-    return result
-
-
-def install(domain, localedir=None, unicode=False, codeset=None, names=None):
-    t = translation(domain, localedir, fallback=True, codeset=codeset)
-    t.install(unicode, names)
-
-
-
-# a mapping b/w domains and locale directories
-_localedirs = {}
-# a mapping b/w domains and codesets
-_localecodesets = {}
-# current global domain, `messages' used for compatibility w/ GNU gettext
-_current_domain = 'messages'
-
-
-def textdomain(domain=None):
-    global _current_domain
-    if domain is not None:
-        _current_domain = domain
-    return _current_domain
-
-
-def bindtextdomain(domain, localedir=None):
-    global _localedirs
-    if localedir is not None:
-        _localedirs[domain] = localedir
-    return _localedirs.get(domain, _default_localedir)
-
-
-def bind_textdomain_codeset(domain, codeset=None):
-    global _localecodesets
-    if codeset is not None:
-        _localecodesets[domain] = codeset
-    return _localecodesets.get(domain)
-
-
-def dgettext(domain, message):
-    try:
-        t = translation(domain, _localedirs.get(domain, None),
-                        codeset=_localecodesets.get(domain))
-    except IOError:
-        return message
-    return t.gettext(message)
-
-def ldgettext(domain, message):
-    try:
-        t = translation(domain, _localedirs.get(domain, None),
-                        codeset=_localecodesets.get(domain))
-    except IOError:
-        return message
-    return t.lgettext(message)
-
-def dngettext(domain, msgid1, msgid2, n):
-    try:
-        t = translation(domain, _localedirs.get(domain, None),
-                        codeset=_localecodesets.get(domain))
-    except IOError:
-        if n == 1:
-            return msgid1
-        else:
-            return msgid2
-    return t.ngettext(msgid1, msgid2, n)
-
-def ldngettext(domain, msgid1, msgid2, n):
-    try:
-        t = translation(domain, _localedirs.get(domain, None),
-                        codeset=_localecodesets.get(domain))
-    except IOError:
-        if n == 1:
-            return msgid1
-        else:
-            return msgid2
-    return t.lngettext(msgid1, msgid2, n)
-
-def gettext(message):
-    return dgettext(_current_domain, message)
-
-def lgettext(message):
-    return ldgettext(_current_domain, message)
-
-def ngettext(msgid1, msgid2, n):
-    return dngettext(_current_domain, msgid1, msgid2, n)
-
-def lngettext(msgid1, msgid2, n):
-    return ldngettext(_current_domain, msgid1, msgid2, n)
-
-# dcgettext() has been deemed unnecessary and is not implemented.
-
-# James Henstridge's Catalog constructor from GNOME gettext.  Documented usage
-# was:
-#
-#    import gettext
-#    cat = gettext.Catalog(PACKAGE, localedir=LOCALEDIR)
-#    _ = cat.gettext
-#    print _('Hello World')
-
-# The resulting catalog object currently don't support access through a
-# dictionary API, which was supported (but apparently unused) in GNOME
-# gettext.
-
-Catalog = translation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/glob.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/glob.py
deleted file mode 100644
index 15f885c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/glob.py
+++ /dev/null
@@ -1,78 +0,0 @@
-"""Filename globbing utility."""
-
-import sys
-import os
-import re
-import fnmatch
-
-__all__ = ["glob", "iglob"]
-
-def glob(pathname):
-    """Return a list of paths matching a pathname pattern.
-
-    The pattern may contain simple shell-style wildcards a la fnmatch.
-
-    """
-    return list(iglob(pathname))
-
-def iglob(pathname):
-    """Return an iterator which yields the paths matching a pathname pattern.
-
-    The pattern may contain simple shell-style wildcards a la fnmatch.
-
-    """
-    if not has_magic(pathname):
-        if os.path.lexists(pathname):
-            yield pathname
-        return
-    dirname, basename = os.path.split(pathname)
-    if not dirname:
-        for name in glob1(os.curdir, basename):
-            yield name
-        return
-    if has_magic(dirname):
-        dirs = iglob(dirname)
-    else:
-        dirs = [dirname]
-    if has_magic(basename):
-        glob_in_dir = glob1
-    else:
-        glob_in_dir = glob0
-    for dirname in dirs:
-        for name in glob_in_dir(dirname, basename):
-            yield os.path.join(dirname, name)
-
-# These 2 helper functions non-recursively glob inside a literal directory.
-# They return a list of basenames. `glob1` accepts a pattern while `glob0`
-# takes a literal basename (so it only has to check for its existence).
-
-def glob1(dirname, pattern):
-    if not dirname:
-        dirname = os.curdir
-    if isinstance(pattern, unicode) and not isinstance(dirname, unicode):
-        dirname = unicode(dirname, sys.getfilesystemencoding() or
-                                   sys.getdefaultencoding())
-    try:
-        names = os.listdir(dirname)
-    except os.error:
-        return []
-    if pattern[0] != '.':
-        names = filter(lambda x: x[0] != '.', names)
-    return fnmatch.filter(names, pattern)
-
-def glob0(dirname, basename):
-    if basename == '':
-        # `os.path.split()` returns an empty basename for paths ending with a
-        # directory separator.  'q*x/' should match only directories.
-        if os.path.isdir(dirname):
-            return [basename]
-    else:
-        if os.path.lexists(os.path.join(dirname, basename)):
-            return [basename]
-    return []
-
-
-magic_check = re.compile('[*?[]')
-
-def has_magic(s):
-    return magic_check.search(s) is not None
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/gzip.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/gzip.py
deleted file mode 100644
index 74e1241..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/gzip.py
+++ /dev/null
@@ -1,509 +0,0 @@
-"""Functions that read and write gzipped files.
-
-The user of the file doesn't have to worry about the compression,
-but random access is not allowed."""
-
-# based on Andrew Kuchling's minigzip.py distributed with the zlib module
-
-import struct, sys, time, os
-import zlib
-import io
-import __builtin__
-
-__all__ = ["GzipFile","open"]
-
-FTEXT, FHCRC, FEXTRA, FNAME, FCOMMENT = 1, 2, 4, 8, 16
-
-READ, WRITE = 1, 2
-
-def write32u(output, value):
-    # The L format writes the bit pattern correctly whether signed
-    # or unsigned.
-    output.write(struct.pack("<L", value))
-
-def read32(input):
-    return struct.unpack("<I", input.read(4))[0]
-
-def open(filename, mode="rb", compresslevel=9):
-    """Shorthand for GzipFile(filename, mode, compresslevel).
-
-    The filename argument is required; mode defaults to 'rb'
-    and compresslevel defaults to 9.
-
-    """
-    return GzipFile(filename, mode, compresslevel)
-
-class GzipFile(io.BufferedIOBase):
-    """The GzipFile class simulates most of the methods of a file object with
-    the exception of the readinto() and truncate() methods.
-
-    """
-
-    myfileobj = None
-    max_read_chunk = 10 * 1024 * 1024   # 10Mb
-
-    def __init__(self, filename=None, mode=None,
-                 compresslevel=9, fileobj=None, mtime=None):
-        """Constructor for the GzipFile class.
-
-        At least one of fileobj and filename must be given a
-        non-trivial value.
-
-        The new class instance is based on fileobj, which can be a regular
-        file, a StringIO object, or any other object which simulates a file.
-        It defaults to None, in which case filename is opened to provide
-        a file object.
-
-        When fileobj is not None, the filename argument is only used to be
-        included in the gzip file header, which may includes the original
-        filename of the uncompressed file.  It defaults to the filename of
-        fileobj, if discernible; otherwise, it defaults to the empty string,
-        and in this case the original filename is not included in the header.
-
-        The mode argument can be any of 'r', 'rb', 'a', 'ab', 'w', or 'wb',
-        depending on whether the file will be read or written.  The default
-        is the mode of fileobj if discernible; otherwise, the default is 'rb'.
-        Be aware that only the 'rb', 'ab', and 'wb' values should be used
-        for cross-platform portability.
-
-        The compresslevel argument is an integer from 1 to 9 controlling the
-        level of compression; 1 is fastest and produces the least compression,
-        and 9 is slowest and produces the most compression.  The default is 9.
-
-        The mtime argument is an optional numeric timestamp to be written
-        to the stream when compressing.  All gzip compressed streams
-        are required to contain a timestamp.  If omitted or None, the
-        current time is used.  This module ignores the timestamp when
-        decompressing; however, some programs, such as gunzip, make use
-        of it.  The format of the timestamp is the same as that of the
-        return value of time.time() and of the st_mtime member of the
-        object returned by os.stat().
-
-        """
-
-        # guarantee the file is opened in binary mode on platforms
-        # that care about that sort of thing
-        if mode and 'b' not in mode:
-            mode += 'b'
-        if fileobj is None:
-            fileobj = self.myfileobj = __builtin__.open(filename, mode or 'rb')
-        if filename is None:
-            if hasattr(fileobj, 'name'): filename = fileobj.name
-            else: filename = ''
-        if mode is None:
-            if hasattr(fileobj, 'mode'): mode = fileobj.mode
-            else: mode = 'rb'
-
-        if mode[0:1] == 'r':
-            self.mode = READ
-            # Set flag indicating start of a new member
-            self._new_member = True
-            # Buffer data read from gzip file. extrastart is offset in
-            # stream where buffer starts. extrasize is number of
-            # bytes remaining in buffer from current stream position.
-            self.extrabuf = ""
-            self.extrasize = 0
-            self.extrastart = 0
-            self.name = filename
-            # Starts small, scales exponentially
-            self.min_readsize = 100
-
-        elif mode[0:1] == 'w' or mode[0:1] == 'a':
-            self.mode = WRITE
-            self._init_write(filename)
-            self.compress = zlib.compressobj(compresslevel,
-                                             zlib.DEFLATED,
-                                             -zlib.MAX_WBITS,
-                                             zlib.DEF_MEM_LEVEL,
-                                             0)
-        else:
-            raise IOError, "Mode " + mode + " not supported"
-
-        self.fileobj = fileobj
-        self.offset = 0
-        self.mtime = mtime
-
-        if self.mode == WRITE:
-            self._write_gzip_header()
-
-    @property
-    def filename(self):
-        import warnings
-        warnings.warn("use the name attribute", DeprecationWarning, 2)
-        if self.mode == WRITE and self.name[-3:] != ".gz":
-            return self.name + ".gz"
-        return self.name
-
-    def __repr__(self):
-        s = repr(self.fileobj)
-        return '<gzip ' + s[1:-1] + ' ' + hex(id(self)) + '>'
-
-    def _check_closed(self):
-        """Raises a ValueError if the underlying file object has been closed.
-
-        """
-        if self.closed:
-            raise ValueError('I/O operation on closed file.')
-
-    def _init_write(self, filename):
-        self.name = filename
-        self.crc = zlib.crc32("") & 0xffffffffL
-        self.size = 0
-        self.writebuf = []
-        self.bufsize = 0
-
-    def _write_gzip_header(self):
-        self.fileobj.write('\037\213')             # magic header
-        self.fileobj.write('\010')                 # compression method
-        fname = os.path.basename(self.name)
-        if fname.endswith(".gz"):
-            fname = fname[:-3]
-        flags = 0
-        if fname:
-            flags = FNAME
-        self.fileobj.write(chr(flags))
-        mtime = self.mtime
-        if mtime is None:
-            mtime = time.time()
-        write32u(self.fileobj, long(mtime))
-        self.fileobj.write('\002')
-        self.fileobj.write('\377')
-        if fname:
-            self.fileobj.write(fname + '\000')
-
-    def _init_read(self):
-        self.crc = zlib.crc32("") & 0xffffffffL
-        self.size = 0
-
-    def _read_gzip_header(self):
-        magic = self.fileobj.read(2)
-        if magic != '\037\213':
-            raise IOError, 'Not a gzipped file'
-        method = ord( self.fileobj.read(1) )
-        if method != 8:
-            raise IOError, 'Unknown compression method'
-        flag = ord( self.fileobj.read(1) )
-        self.mtime = read32(self.fileobj)
-        # extraflag = self.fileobj.read(1)
-        # os = self.fileobj.read(1)
-        self.fileobj.read(2)
-
-        if flag & FEXTRA:
-            # Read & discard the extra field, if present
-            xlen = ord(self.fileobj.read(1))
-            xlen = xlen + 256*ord(self.fileobj.read(1))
-            self.fileobj.read(xlen)
-        if flag & FNAME:
-            # Read and discard a null-terminated string containing the filename
-            while True:
-                s = self.fileobj.read(1)
-                if not s or s=='\000':
-                    break
-        if flag & FCOMMENT:
-            # Read and discard a null-terminated string containing a comment
-            while True:
-                s = self.fileobj.read(1)
-                if not s or s=='\000':
-                    break
-        if flag & FHCRC:
-            self.fileobj.read(2)     # Read & discard the 16-bit header CRC
-
-    def write(self,data):
-        self._check_closed()
-        if self.mode != WRITE:
-            import errno
-            raise IOError(errno.EBADF, "write() on read-only GzipFile object")
-
-        if self.fileobj is None:
-            raise ValueError, "write() on closed GzipFile object"
-
-        # Convert data type if called by io.BufferedWriter.
-        if isinstance(data, memoryview):
-            data = data.tobytes()
-
-        if len(data) > 0:
-            self.size = self.size + len(data)
-            self.crc = zlib.crc32(data, self.crc) & 0xffffffffL
-            self.fileobj.write( self.compress.compress(data) )
-            self.offset += len(data)
-
-        return len(data)
-
-    def read(self, size=-1):
-        self._check_closed()
-        if self.mode != READ:
-            import errno
-            raise IOError(errno.EBADF, "read() on write-only GzipFile object")
-
-        if self.extrasize <= 0 and self.fileobj is None:
-            return ''
-
-        readsize = 1024
-        if size < 0:        # get the whole thing
-            try:
-                while True:
-                    self._read(readsize)
-                    readsize = min(self.max_read_chunk, readsize * 2)
-            except EOFError:
-                size = self.extrasize
-        else:               # just get some more of it
-            try:
-                while size > self.extrasize:
-                    self._read(readsize)
-                    readsize = min(self.max_read_chunk, readsize * 2)
-            except EOFError:
-                if size > self.extrasize:
-                    size = self.extrasize
-
-        offset = self.offset - self.extrastart
-        chunk = self.extrabuf[offset: offset + size]
-        self.extrasize = self.extrasize - size
-
-        self.offset += size
-        return chunk
-
-    def _unread(self, buf):
-        self.extrasize = len(buf) + self.extrasize
-        self.offset -= len(buf)
-
-    def _read(self, size=1024):
-        if self.fileobj is None:
-            raise EOFError, "Reached EOF"
-
-        if self._new_member:
-            # If the _new_member flag is set, we have to
-            # jump to the next member, if there is one.
-            #
-            # First, check if we're at the end of the file;
-            # if so, it's time to stop; no more members to read.
-            pos = self.fileobj.tell()   # Save current position
-            self.fileobj.seek(0, 2)     # Seek to end of file
-            if pos == self.fileobj.tell():
-                raise EOFError, "Reached EOF"
-            else:
-                self.fileobj.seek( pos ) # Return to original position
-
-            self._init_read()
-            self._read_gzip_header()
-            self.decompress = zlib.decompressobj(-zlib.MAX_WBITS)
-            self._new_member = False
-
-        # Read a chunk of data from the file
-        buf = self.fileobj.read(size)
-
-        # If the EOF has been reached, flush the decompression object
-        # and mark this object as finished.
-
-        if buf == "":
-            uncompress = self.decompress.flush()
-            self._read_eof()
-            self._add_read_data( uncompress )
-            raise EOFError, 'Reached EOF'
-
-        uncompress = self.decompress.decompress(buf)
-        self._add_read_data( uncompress )
-
-        if self.decompress.unused_data != "":
-            # Ending case: we've come to the end of a member in the file,
-            # so seek back to the start of the unused data, finish up
-            # this member, and read a new gzip header.
-            # (The number of bytes to seek back is the length of the unused
-            # data, minus 8 because _read_eof() will rewind a further 8 bytes)
-            self.fileobj.seek( -len(self.decompress.unused_data)+8, 1)
-
-            # Check the CRC and file size, and set the flag so we read
-            # a new member on the next call
-            self._read_eof()
-            self._new_member = True
-
-    def _add_read_data(self, data):
-        self.crc = zlib.crc32(data, self.crc) & 0xffffffffL
-        offset = self.offset - self.extrastart
-        self.extrabuf = self.extrabuf[offset:] + data
-        self.extrasize = self.extrasize + len(data)
-        self.extrastart = self.offset
-        self.size = self.size + len(data)
-
-    def _read_eof(self):
-        # We've read to the end of the file, so we have to rewind in order
-        # to reread the 8 bytes containing the CRC and the file size.
-        # We check the that the computed CRC and size of the
-        # uncompressed data matches the stored values.  Note that the size
-        # stored is the true file size mod 2**32.
-        self.fileobj.seek(-8, 1)
-        crc32 = read32(self.fileobj)
-        isize = read32(self.fileobj)  # may exceed 2GB
-        if crc32 != self.crc:
-            raise IOError("CRC check failed %s != %s" % (hex(crc32),
-                                                         hex(self.crc)))
-        elif isize != (self.size & 0xffffffffL):
-            raise IOError, "Incorrect length of data produced"
-
-        # Gzip files can be padded with zeroes and still have archives.
-        # Consume all zero bytes and set the file position to the first
-        # non-zero byte. See http://www.gzip.org/#faq8
-        c = "\x00"
-        while c == "\x00":
-            c = self.fileobj.read(1)
-        if c:
-            self.fileobj.seek(-1, 1)
-
-    @property
-    def closed(self):
-        return self.fileobj is None
-
-    def close(self):
-        if self.fileobj is None:
-            return
-        if self.mode == WRITE:
-            self.fileobj.write(self.compress.flush())
-            write32u(self.fileobj, self.crc)
-            # self.size may exceed 2GB, or even 4GB
-            write32u(self.fileobj, self.size & 0xffffffffL)
-            self.fileobj = None
-        elif self.mode == READ:
-            self.fileobj = None
-        if self.myfileobj:
-            self.myfileobj.close()
-            self.myfileobj = None
-
-    def flush(self,zlib_mode=zlib.Z_SYNC_FLUSH):
-        self._check_closed()
-        if self.mode == WRITE:
-            # Ensure the compressor's buffer is flushed
-            self.fileobj.write(self.compress.flush(zlib_mode))
-            self.fileobj.flush()
-
-    def fileno(self):
-        """Invoke the underlying file object's fileno() method.
-
-        This will raise AttributeError if the underlying file object
-        doesn't support fileno().
-        """
-        return self.fileobj.fileno()
-
-    def rewind(self):
-        '''Return the uncompressed stream file position indicator to the
-        beginning of the file'''
-        if self.mode != READ:
-            raise IOError("Can't rewind in write mode")
-        self.fileobj.seek(0)
-        self._new_member = True
-        self.extrabuf = ""
-        self.extrasize = 0
-        self.extrastart = 0
-        self.offset = 0
-
-    def readable(self):
-        return self.mode == READ
-
-    def writable(self):
-        return self.mode == WRITE
-
-    def seekable(self):
-        return True
-
-    def seek(self, offset, whence=0):
-        if whence:
-            if whence == 1:
-                offset = self.offset + offset
-            else:
-                raise ValueError('Seek from end not supported')
-        if self.mode == WRITE:
-            if offset < self.offset:
-                raise IOError('Negative seek in write mode')
-            count = offset - self.offset
-            for i in range(count // 1024):
-                self.write(1024 * '\0')
-            self.write((count % 1024) * '\0')
-        elif self.mode == READ:
-            if offset < self.offset:
-                # for negative seek, rewind and do positive seek
-                self.rewind()
-            count = offset - self.offset
-            for i in range(count // 1024):
-                self.read(1024)
-            self.read(count % 1024)
-
-        return self.offset
-
-    def readline(self, size=-1):
-        if size < 0:
-            # Shortcut common case - newline found in buffer.
-            offset = self.offset - self.extrastart
-            i = self.extrabuf.find('\n', offset) + 1
-            if i > 0:
-                self.extrasize -= i - offset
-                self.offset += i - offset
-                return self.extrabuf[offset: i]
-
-            size = sys.maxint
-            readsize = self.min_readsize
-        else:
-            readsize = size
-        bufs = []
-        while size != 0:
-            c = self.read(readsize)
-            i = c.find('\n')
-
-            # We set i=size to break out of the loop under two
-            # conditions: 1) there's no newline, and the chunk is
-            # larger than size, or 2) there is a newline, but the
-            # resulting line would be longer than 'size'.
-            if (size <= i) or (i == -1 and len(c) > size):
-                i = size - 1
-
-            if i >= 0 or c == '':
-                bufs.append(c[:i + 1])    # Add portion of last chunk
-                self._unread(c[i + 1:])   # Push back rest of chunk
-                break
-
-            # Append chunk to list, decrease 'size',
-            bufs.append(c)
-            size = size - len(c)
-            readsize = min(size, readsize * 2)
-        if readsize > self.min_readsize:
-            self.min_readsize = min(readsize, self.min_readsize * 2, 512)
-        return ''.join(bufs) # Return resulting line
-
-
-def _test():
-    # Act like gzip; with -d, act like gunzip.
-    # The input file is not deleted, however, nor are any other gzip
-    # options or features supported.
-    args = sys.argv[1:]
-    decompress = args and args[0] == "-d"
-    if decompress:
-        args = args[1:]
-    if not args:
-        args = ["-"]
-    for arg in args:
-        if decompress:
-            if arg == "-":
-                f = GzipFile(filename="", mode="rb", fileobj=sys.stdin)
-                g = sys.stdout
-            else:
-                if arg[-3:] != ".gz":
-                    print "filename doesn't end in .gz:", repr(arg)
-                    continue
-                f = open(arg, "rb")
-                g = __builtin__.open(arg[:-3], "wb")
-        else:
-            if arg == "-":
-                f = sys.stdin
-                g = GzipFile(filename="", mode="wb", fileobj=sys.stdout)
-            else:
-                f = __builtin__.open(arg, "rb")
-                g = open(arg + ".gz", "wb")
-        while True:
-            chunk = f.read(1024)
-            if not chunk:
-                break
-            g.write(chunk)
-        if g is not sys.stdout:
-            g.close()
-        if f is not sys.stdin:
-            f.close()
-
-if __name__ == '__main__':
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/hashlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/hashlib.py
deleted file mode 100644
index a380948..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/hashlib.py
+++ /dev/null
@@ -1,146 +0,0 @@
-# $Id$
-#
-#  Copyright (C) 2005   Gregory P. Smith (greg@krypto.org)
-#  Licensed to PSF under a Contributor Agreement.
-#
-
-__doc__ = """hashlib module - A common interface to many hash functions.
-
-new(name, string='') - returns a new hash object implementing the
-                       given hash function; initializing the hash
-                       using the given string data.
-
-Named constructor functions are also available, these are much faster
-than using new():
-
-md5(), sha1(), sha224(), sha256(), sha384(), and sha512()
-
-More algorithms may be available on your platform but the above are
-guaranteed to exist.
-
-NOTE: If you want the adler32 or crc32 hash functions they are available in
-the zlib module.
-
-Choose your hash function wisely.  Some have known collision weaknesses.
-sha384 and sha512 will be slow on 32 bit platforms.
-
-Hash objects have these methods:
- - update(arg): Update the hash object with the string arg. Repeated calls
-                are equivalent to a single call with the concatenation of all
-                the arguments.
- - digest():    Return the digest of the strings passed to the update() method
-                so far. This may contain non-ASCII characters, including
-                NUL bytes.
- - hexdigest(): Like digest() except the digest is returned as a string of
-                double length, containing only hexadecimal digits.
- - copy():      Return a copy (clone) of the hash object. This can be used to
-                efficiently compute the digests of strings that share a common
-                initial substring.
-
-For example, to obtain the digest of the string 'Nobody inspects the
-spammish repetition':
-
-    >>> import hashlib
-    >>> m = hashlib.md5()
-    >>> m.update("Nobody inspects")
-    >>> m.update(" the spammish repetition")
-    >>> m.digest()
-    '\\xbbd\\x9c\\x83\\xdd\\x1e\\xa5\\xc9\\xd9\\xde\\xc9\\xa1\\x8d\\xf0\\xff\\xe9'
-
-More condensed:
-
-    >>> hashlib.sha224("Nobody inspects the spammish repetition").hexdigest()
-    'a4337bc45a8fc544c03f52dc550cd6e1e87021bc896588bd79e901e2'
-
-"""
-
-# This tuple and __get_builtin_constructor() must be modified if a new
-# always available algorithm is added.
-__always_supported = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512')
-
-algorithms = __always_supported
-
-__all__ = __always_supported + ('new', 'algorithms')
-
-
-def __get_builtin_constructor(name):
-    try:
-        if name in ('SHA1', 'sha1'):
-            import _sha
-            return _sha.new
-        elif name in ('MD5', 'md5'):
-            import _md5
-            return _md5.new
-        elif name in ('SHA256', 'sha256', 'SHA224', 'sha224'):
-            import _sha256
-            bs = name[3:]
-            if bs == '256':
-                return _sha256.sha256
-            elif bs == '224':
-                return _sha256.sha224
-        elif name in ('SHA512', 'sha512', 'SHA384', 'sha384'):
-            import _sha512
-            bs = name[3:]
-            if bs == '512':
-                return _sha512.sha512
-            elif bs == '384':
-                return _sha512.sha384
-    except ImportError:
-        pass  # no extension module, this hash is unsupported.
-
-    raise ValueError('unsupported hash type %s' % name)
-
-
-def __get_openssl_constructor(name):
-    try:
-        f = getattr(_hashlib, 'openssl_' + name)
-        # Allow the C module to raise ValueError.  The function will be
-        # defined but the hash not actually available thanks to OpenSSL.
-        f()
-        # Use the C function directly (very fast)
-        return f
-    except (AttributeError, ValueError):
-        return __get_builtin_constructor(name)
-
-
-def __py_new(name, string=''):
-    """new(name, string='') - Return a new hashing object using the named algorithm;
-    optionally initialized with a string.
-    """
-    return __get_builtin_constructor(name)(string)
-
-
-def __hash_new(name, string=''):
-    """new(name, string='') - Return a new hashing object using the named algorithm;
-    optionally initialized with a string.
-    """
-    try:
-        return _hashlib.new(name, string)
-    except ValueError:
-        # If the _hashlib module (OpenSSL) doesn't support the named
-        # hash, try using our builtin implementations.
-        # This allows for SHA224/256 and SHA384/512 support even though
-        # the OpenSSL library prior to 0.9.8 doesn't provide them.
-        return __get_builtin_constructor(name)(string)
-
-
-try:
-    import _hashlib
-    new = __hash_new
-    __get_hash = __get_openssl_constructor
-except ImportError:
-    new = __py_new
-    __get_hash = __get_builtin_constructor
-
-for __func_name in __always_supported:
-    # try them all, some may not work due to the OpenSSL
-    # version not supporting that algorithm.
-    try:
-        globals()[__func_name] = __get_hash(__func_name)
-    except ValueError:
-        import logging
-        logging.exception('code for hash %s was not found.', __func_name)
-
-# Cleanup locals()
-del __always_supported, __func_name, __get_hash
-del __py_new, __hash_new, __get_openssl_constructor
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/heapq.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/heapq.py
deleted file mode 100644
index 5c9b639..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/heapq.py
+++ /dev/null
@@ -1,442 +0,0 @@
-# -*- coding: latin-1 -*-
-
-"""Heap queue algorithm (a.k.a. priority queue).
-
-Heaps are arrays for which a[k] <= a[2*k+1] and a[k] <= a[2*k+2] for
-all k, counting elements from 0.  For the sake of comparison,
-non-existing elements are considered to be infinite.  The interesting
-property of a heap is that a[0] is always its smallest element.
-
-Usage:
-
-heap = []            # creates an empty heap
-heappush(heap, item) # pushes a new item on the heap
-item = heappop(heap) # pops the smallest item from the heap
-item = heap[0]       # smallest item on the heap without popping it
-heapify(x)           # transforms list into a heap, in-place, in linear time
-item = heapreplace(heap, item) # pops and returns smallest item, and adds
-                               # new item; the heap size is unchanged
-
-Our API differs from textbook heap algorithms as follows:
-
-- We use 0-based indexing.  This makes the relationship between the
-  index for a node and the indexes for its children slightly less
-  obvious, but is more suitable since Python uses 0-based indexing.
-
-- Our heappop() method returns the smallest item, not the largest.
-
-These two make it possible to view the heap as a regular Python list
-without surprises: heap[0] is the smallest item, and heap.sort()
-maintains the heap invariant!
-"""
-
-# Original code by Kevin O'Connor, augmented by Tim Peters and Raymond Hettinger
-
-__about__ = """Heap queues
-
-[explanation by François Pinard]
-
-Heaps are arrays for which a[k] <= a[2*k+1] and a[k] <= a[2*k+2] for
-all k, counting elements from 0.  For the sake of comparison,
-non-existing elements are considered to be infinite.  The interesting
-property of a heap is that a[0] is always its smallest element.
-
-The strange invariant above is meant to be an efficient memory
-representation for a tournament.  The numbers below are `k', not a[k]:
-
-                                   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
-
-
-In the tree above, each cell `k' is topping `2*k+1' and `2*k+2'.  In
-an usual binary tournament we see in sports, each cell is the winner
-over the two cells it tops, and we can trace the winner down the tree
-to see all opponents s/he had.  However, in many computer applications
-of such tournaments, we do not need to trace the history of a winner.
-To be more memory efficient, when a winner is promoted, we try to
-replace it by something else at a lower level, and the rule becomes
-that a cell and the two cells it tops contain three different items,
-but the top cell "wins" over the two topped cells.
-
-If this heap invariant is protected at all time, index 0 is clearly
-the overall winner.  The simplest algorithmic way to remove it and
-find the "next" winner is to move some loser (let's say cell 30 in the
-diagram above) into the 0 position, and then percolate this new 0 down
-the tree, exchanging values, until the invariant is re-established.
-This is clearly logarithmic on the total number of items in the tree.
-By iterating over all items, you get an O(n ln n) sort.
-
-A nice feature of this sort is that you can efficiently insert new
-items while the sort is going on, provided that the inserted items are
-not "better" than the last 0'th element you extracted.  This is
-especially useful in simulation contexts, where the tree holds all
-incoming events, and the "win" condition means the smallest scheduled
-time.  When an event schedule other events for execution, they are
-scheduled into the future, so they can easily go into the heap.  So, a
-heap is a good structure for implementing schedulers (this is what I
-used for my MIDI sequencer :-).
-
-Various structures for implementing schedulers have been extensively
-studied, and heaps are good for this, as they are reasonably speedy,
-the speed is almost constant, and the worst case is not much different
-than the average case.  However, there are other representations which
-are more efficient overall, yet the worst cases might be terrible.
-
-Heaps are also very useful in big disk sorts.  You most probably all
-know that a big sort implies producing "runs" (which are pre-sorted
-sequences, which size is usually related to the amount of CPU memory),
-followed by a merging passes for these runs, which merging is often
-very cleverly organised[1].  It is very important that the initial
-sort produces the longest runs possible.  Tournaments are a good way
-to that.  If, using all the memory available to hold a tournament, you
-replace and percolate items that happen to fit the current run, you'll
-produce runs which are twice the size of the memory for random input,
-and much better for input fuzzily ordered.
-
-Moreover, if you output the 0'th item on disk and get an input which
-may not fit in the current tournament (because the value "wins" over
-the last output value), it cannot fit in the heap, so the size of the
-heap decreases.  The freed memory could be cleverly reused immediately
-for progressively building a second heap, which grows at exactly the
-same rate the first heap is melting.  When the first heap completely
-vanishes, you switch heaps and start a new run.  Clever and quite
-effective!
-
-In a word, heaps are useful memory structures to know.  I use them in
-a few applications, and I think it is good to keep a `heap' module
-around. :-)
-
---------------------
-[1] The disk balancing algorithms which are current, nowadays, are
-more annoying than clever, and this is a consequence of the seeking
-capabilities of the disks.  On devices which cannot seek, like big
-tape drives, the story was quite different, and one had to be very
-clever to ensure (far in advance) that each tape movement will be the
-most effective possible (that is, will best participate at
-"progressing" the merge).  Some tapes were even able to read
-backwards, and this was also used to avoid the rewinding time.
-Believe me, real good tape sorts were quite spectacular to watch!
-From all times, sorting has always been a Great Art! :-)
-"""
-
-__all__ = ['heappush', 'heappop', 'heapify', 'heapreplace', 'merge',
-           'nlargest', 'nsmallest', 'heappushpop']
-
-from itertools import islice, repeat, count, imap, izip, tee, chain
-from operator import itemgetter
-import bisect
-
-def cmp_lt(x, y):
-    # Use __lt__ if available; otherwise, try __le__.
-    # In Py3.x, only __lt__ will be called.
-    return (x < y) if hasattr(x, '__lt__') else (not y <= x)
-
-def heappush(heap, item):
-    """Push item onto heap, maintaining the heap invariant."""
-    heap.append(item)
-    _siftdown(heap, 0, len(heap)-1)
-
-def heappop(heap):
-    """Pop the smallest item off the heap, maintaining the heap invariant."""
-    lastelt = heap.pop()    # raises appropriate IndexError if heap is empty
-    if heap:
-        returnitem = heap[0]
-        heap[0] = lastelt
-        _siftup(heap, 0)
-    else:
-        returnitem = lastelt
-    return returnitem
-
-def heapreplace(heap, item):
-    """Pop and return the current smallest value, and add the new item.
-
-    This is more efficient than heappop() followed by heappush(), and can be
-    more appropriate when using a fixed-size heap.  Note that the value
-    returned may be larger than item!  That constrains reasonable uses of
-    this routine unless written as part of a conditional replacement:
-
-        if item > heap[0]:
-            item = heapreplace(heap, item)
-    """
-    returnitem = heap[0]    # raises appropriate IndexError if heap is empty
-    heap[0] = item
-    _siftup(heap, 0)
-    return returnitem
-
-def heappushpop(heap, item):
-    """Fast version of a heappush followed by a heappop."""
-    if heap and cmp_lt(heap[0], item):
-        item, heap[0] = heap[0], item
-        _siftup(heap, 0)
-    return item
-
-def heapify(x):
-    """Transform list into a heap, in-place, in O(len(x)) time."""
-    n = len(x)
-    # Transform bottom-up.  The largest index there's any point to looking at
-    # is the largest with a child index in-range, so must have 2*i + 1 < n,
-    # or i < (n-1)/2.  If n is even = 2*j, this is (2*j-1)/2 = j-1/2 so
-    # j-1 is the largest, which is n//2 - 1.  If n is odd = 2*j+1, this is
-    # (2*j+1-1)/2 = j so j-1 is the largest, and that's again n//2-1.
-    for i in reversed(xrange(n//2)):
-        _siftup(x, i)
-
-def nlargest(n, iterable):
-    """Find the n largest elements in a dataset.
-
-    Equivalent to:  sorted(iterable, reverse=True)[:n]
-    """
-    it = iter(iterable)
-    result = list(islice(it, n))
-    if not result:
-        return result
-    heapify(result)
-    _heappushpop = heappushpop
-    for elem in it:
-        _heappushpop(result, elem)
-    result.sort(reverse=True)
-    return result
-
-def nsmallest(n, iterable):
-    """Find the n smallest elements in a dataset.
-
-    Equivalent to:  sorted(iterable)[:n]
-    """
-    if hasattr(iterable, '__len__') and n * 10 <= len(iterable):
-        # For smaller values of n, the bisect method is faster than a minheap.
-        # It is also memory efficient, consuming only n elements of space.
-        it = iter(iterable)
-        result = sorted(islice(it, 0, n))
-        if not result:
-            return result
-        insort = bisect.insort
-        pop = result.pop
-        los = result[-1]    # los --> Largest of the nsmallest
-        for elem in it:
-            if cmp_lt(elem, los):
-                insort(result, elem)
-                pop()
-                los = result[-1]
-        return result
-    # An alternative approach manifests the whole iterable in memory but
-    # saves comparisons by heapifying all at once.  Also, saves time
-    # over bisect.insort() which has O(n) data movement time for every
-    # insertion.  Finding the n smallest of an m length iterable requires
-    #    O(m) + O(n log m) comparisons.
-    h = list(iterable)
-    heapify(h)
-    return map(heappop, repeat(h, min(n, len(h))))
-
-# 'heap' is a heap at all indices >= startpos, except possibly for pos.  pos
-# is the index of a leaf with a possibly out-of-order value.  Restore the
-# heap invariant.
-def _siftdown(heap, startpos, pos):
-    newitem = heap[pos]
-    # Follow the path to the root, moving parents down until finding a place
-    # newitem fits.
-    while pos > startpos:
-        parentpos = (pos - 1) >> 1
-        parent = heap[parentpos]
-        if cmp_lt(newitem, parent):
-            heap[pos] = parent
-            pos = parentpos
-            continue
-        break
-    heap[pos] = newitem
-
-# The child indices of heap index pos are already heaps, and we want to make
-# a heap at index pos too.  We do this by bubbling the smaller child of
-# pos up (and so on with that child's children, etc) until hitting a leaf,
-# then using _siftdown to move the oddball originally at index pos into place.
-#
-# We *could* break out of the loop as soon as we find a pos where newitem <=
-# both its children, but turns out that's not a good idea, and despite that
-# many books write the algorithm that way.  During a heap pop, the last array
-# element is sifted in, and that tends to be large, so that comparing it
-# against values starting from the root usually doesn't pay (= usually doesn't
-# get us out of the loop early).  See Knuth, Volume 3, where this is
-# explained and quantified in an exercise.
-#
-# Cutting the # of comparisons is important, since these routines have no
-# way to extract "the priority" from an array element, so that intelligence
-# is likely to be hiding in custom __cmp__ methods, or in array elements
-# storing (priority, record) tuples.  Comparisons are thus potentially
-# expensive.
-#
-# On random arrays of length 1000, making this change cut the number of
-# comparisons made by heapify() a little, and those made by exhaustive
-# heappop() a lot, in accord with theory.  Here are typical results from 3
-# runs (3 just to demonstrate how small the variance is):
-#
-# Compares needed by heapify     Compares needed by 1000 heappops
-# --------------------------     --------------------------------
-# 1837 cut to 1663               14996 cut to 8680
-# 1855 cut to 1659               14966 cut to 8678
-# 1847 cut to 1660               15024 cut to 8703
-#
-# Building the heap by using heappush() 1000 times instead required
-# 2198, 2148, and 2219 compares:  heapify() is more efficient, when
-# you can use it.
-#
-# The total compares needed by list.sort() on the same lists were 8627,
-# 8627, and 8632 (this should be compared to the sum of heapify() and
-# heappop() compares):  list.sort() is (unsurprisingly!) more efficient
-# for sorting.
-
-def _siftup(heap, pos):
-    endpos = len(heap)
-    startpos = pos
-    newitem = heap[pos]
-    # Bubble up the smaller child until hitting a leaf.
-    childpos = 2*pos + 1    # leftmost child position
-    while childpos < endpos:
-        # Set childpos to index of smaller child.
-        rightpos = childpos + 1
-        if rightpos < endpos and not cmp_lt(heap[childpos], heap[rightpos]):
-            childpos = rightpos
-        # Move the smaller child up.
-        heap[pos] = heap[childpos]
-        pos = childpos
-        childpos = 2*pos + 1
-    # The leaf at pos is empty now.  Put newitem there, and bubble it up
-    # to its final resting place (by sifting its parents down).
-    heap[pos] = newitem
-    _siftdown(heap, startpos, pos)
-
-# If available, use C implementation
-try:
-    from _heapq import *
-except ImportError:
-    pass
-
-def merge(*iterables):
-    '''Merge multiple sorted inputs into a single sorted output.
-
-    Similar to sorted(itertools.chain(*iterables)) but returns a generator,
-    does not pull the data into memory all at once, and assumes that each of
-    the input streams is already sorted (smallest to largest).
-
-    >>> list(merge([1,3,5,7], [0,2,4,8], [5,10,15,20], [], [25]))
-    [0, 1, 2, 3, 4, 5, 5, 7, 8, 10, 15, 20, 25]
-
-    '''
-    _heappop, _heapreplace, _StopIteration = heappop, heapreplace, StopIteration
-
-    h = []
-    h_append = h.append
-    for itnum, it in enumerate(map(iter, iterables)):
-        try:
-            next = it.next
-            h_append([next(), itnum, next])
-        except _StopIteration:
-            pass
-    heapify(h)
-
-    while 1:
-        try:
-            while 1:
-                v, itnum, next = s = h[0]   # raises IndexError when h is empty
-                yield v
-                s[0] = next()               # raises StopIteration when exhausted
-                _heapreplace(h, s)          # restore heap condition
-        except _StopIteration:
-            _heappop(h)                     # remove empty iterator
-        except IndexError:
-            return
-
-# Extend the implementations of nsmallest and nlargest to use a key= argument
-_nsmallest = nsmallest
-def nsmallest(n, iterable, key=None):
-    """Find the n smallest elements in a dataset.
-
-    Equivalent to:  sorted(iterable, key=key)[:n]
-    """
-    # Short-cut for n==1 is to use min() when len(iterable)>0
-    if n == 1:
-        it = iter(iterable)
-        head = list(islice(it, 1))
-        if not head:
-            return []
-        if key is None:
-            return [min(chain(head, it))]
-        return [min(chain(head, it), key=key)]
-
-    # When n>=size, it's faster to use sorted()
-    try:
-        size = len(iterable)
-    except (TypeError, AttributeError):
-        pass
-    else:
-        if n >= size:
-            return sorted(iterable, key=key)[:n]
-
-    # When key is none, use simpler decoration
-    if key is None:
-        it = izip(iterable, count())                        # decorate
-        result = _nsmallest(n, it)
-        return map(itemgetter(0), result)                   # undecorate
-
-    # General case, slowest method
-    in1, in2 = tee(iterable)
-    it = izip(imap(key, in1), count(), in2)                 # decorate
-    result = _nsmallest(n, it)
-    return map(itemgetter(2), result)                       # undecorate
-
-_nlargest = nlargest
-def nlargest(n, iterable, key=None):
-    """Find the n largest elements in a dataset.
-
-    Equivalent to:  sorted(iterable, key=key, reverse=True)[:n]
-    """
-
-    # Short-cut for n==1 is to use max() when len(iterable)>0
-    if n == 1:
-        it = iter(iterable)
-        head = list(islice(it, 1))
-        if not head:
-            return []
-        if key is None:
-            return [max(chain(head, it))]
-        return [max(chain(head, it), key=key)]
-
-    # When n>=size, it's faster to use sorted()
-    try:
-        size = len(iterable)
-    except (TypeError, AttributeError):
-        pass
-    else:
-        if n >= size:
-            return sorted(iterable, key=key, reverse=True)[:n]
-
-    # When key is none, use simpler decoration
-    if key is None:
-        it = izip(iterable, count(0,-1))                    # decorate
-        result = _nlargest(n, it)
-        return map(itemgetter(0), result)                   # undecorate
-
-    # General case, slowest method
-    in1, in2 = tee(iterable)
-    it = izip(imap(key, in1), count(0,-1), in2)             # decorate
-    result = _nlargest(n, it)
-    return map(itemgetter(2), result)                       # undecorate
-
-if __name__ == "__main__":
-    # Simple sanity test
-    heap = []
-    data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]
-    for item in data:
-        heappush(heap, item)
-    sort = []
-    while heap:
-        sort.append(heappop(heap))
-    print sort
-
-    import doctest
-    doctest.testmod()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/hmac.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/hmac.py
deleted file mode 100644
index 9ad2184..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/hmac.py
+++ /dev/null
@@ -1,133 +0,0 @@
-"""HMAC (Keyed-Hashing for Message Authentication) Python module.
-
-Implements the HMAC algorithm as described by RFC 2104.
-"""
-
-import warnings as _warnings
-
-trans_5C = "".join ([chr (x ^ 0x5C) for x in xrange(256)])
-trans_36 = "".join ([chr (x ^ 0x36) for x in xrange(256)])
-
-# The size of the digests returned by HMAC depends on the underlying
-# hashing module used.  Use digest_size from the instance of HMAC instead.
-digest_size = None
-
-# A unique object passed by HMAC.copy() to the HMAC constructor, in order
-# that the latter return very quickly.  HMAC("") in contrast is quite
-# expensive.
-_secret_backdoor_key = []
-
-class HMAC:
-    """RFC 2104 HMAC class.  Also complies with RFC 4231.
-
-    This supports the API for Cryptographic Hash Functions (PEP 247).
-    """
-    blocksize = 64  # 512-bit HMAC; can be changed in subclasses.
-
-    def __init__(self, key, msg = None, digestmod = None):
-        """Create a new HMAC object.
-
-        key:       key for the keyed hash object.
-        msg:       Initial input for the hash, if provided.
-        digestmod: A module supporting PEP 247.  *OR*
-                   A hashlib constructor returning a new hash object.
-                   Defaults to hashlib.md5.
-        """
-
-        if key is _secret_backdoor_key: # cheap
-            return
-
-        if digestmod is None:
-            import hashlib
-            digestmod = hashlib.md5
-
-        if hasattr(digestmod, '__call__'):
-            self.digest_cons = digestmod
-        else:
-            self.digest_cons = lambda d='': digestmod.new(d)
-
-        self.outer = self.digest_cons()
-        self.inner = self.digest_cons()
-        self.digest_size = self.inner.digest_size
-
-        if hasattr(self.inner, 'block_size'):
-            blocksize = self.inner.block_size
-            if blocksize < 16:
-                # Very low blocksize, most likely a legacy value like
-                # Lib/sha.py and Lib/md5.py have.
-                _warnings.warn('block_size of %d seems too small; using our '
-                               'default of %d.' % (blocksize, self.blocksize),
-                               RuntimeWarning, 2)
-                blocksize = self.blocksize
-        else:
-            _warnings.warn('No block_size attribute on given digest object; '
-                           'Assuming %d.' % (self.blocksize),
-                           RuntimeWarning, 2)
-            blocksize = self.blocksize
-
-        if len(key) > blocksize:
-            key = self.digest_cons(key).digest()
-
-        key = key + chr(0) * (blocksize - len(key))
-        self.outer.update(key.translate(trans_5C))
-        self.inner.update(key.translate(trans_36))
-        if msg is not None:
-            self.update(msg)
-
-##    def clear(self):
-##        raise NotImplementedError, "clear() method not available in HMAC."
-
-    def update(self, msg):
-        """Update this hashing object with the string msg.
-        """
-        self.inner.update(msg)
-
-    def copy(self):
-        """Return a separate copy of this hashing object.
-
-        An update to this copy won't affect the original object.
-        """
-        other = self.__class__(_secret_backdoor_key)
-        other.digest_cons = self.digest_cons
-        other.digest_size = self.digest_size
-        other.inner = self.inner.copy()
-        other.outer = self.outer.copy()
-        return other
-
-    def _current(self):
-        """Return a hash object for the current state.
-
-        To be used only internally with digest() and hexdigest().
-        """
-        h = self.outer.copy()
-        h.update(self.inner.digest())
-        return h
-
-    def digest(self):
-        """Return the hash value of this hashing object.
-
-        This returns a string containing 8-bit data.  The object is
-        not altered in any way by this function; you can continue
-        updating the object after calling this function.
-        """
-        h = self._current()
-        return h.digest()
-
-    def hexdigest(self):
-        """Like digest(), but returns a string of hexadecimal digits instead.
-        """
-        h = self._current()
-        return h.hexdigest()
-
-def new(key, msg = None, digestmod = None):
-    """Create a new hashing object and return it.
-
-    key: The starting key for the hash.
-    msg: if available, will immediately be hashed into the object's starting
-    state.
-
-    You can now feed arbitrary strings into the object using its update()
-    method, and can ask for the hash value at any time by calling its digest()
-    method.
-    """
-    return HMAC(key, msg, digestmod)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/__init__.py
deleted file mode 100644
index 4bf714a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/__init__.py
+++ /dev/null
@@ -1,78 +0,0 @@
-"""High-perfomance logging profiler, mostly written in C."""
-
-import _hotshot
-from _hotshot import ProfilerError
-
-from warnings import warnpy3k as _warnpy3k
-_warnpy3k("The 'hotshot' module is not supported in 3.x, "
-          "use the 'profile' module instead.", stacklevel=2)
-
-class Profile:
-    def __init__(self, logfn, lineevents=0, linetimings=1):
-        self.lineevents = lineevents and 1 or 0
-        self.linetimings = (linetimings and lineevents) and 1 or 0
-        self._prof = p = _hotshot.profiler(
-            logfn, self.lineevents, self.linetimings)
-
-        # Attempt to avoid confusing results caused by the presence of
-        # Python wrappers around these functions, but only if we can
-        # be sure the methods have not been overridden or extended.
-        if self.__class__ is Profile:
-            self.close = p.close
-            self.start = p.start
-            self.stop = p.stop
-            self.addinfo = p.addinfo
-
-    def close(self):
-        """Close the logfile and terminate the profiler."""
-        self._prof.close()
-
-    def fileno(self):
-        """Return the file descriptor of the profiler's log file."""
-        return self._prof.fileno()
-
-    def start(self):
-        """Start the profiler."""
-        self._prof.start()
-
-    def stop(self):
-        """Stop the profiler."""
-        self._prof.stop()
-
-    def addinfo(self, key, value):
-        """Add an arbitrary labelled value to the profile log."""
-        self._prof.addinfo(key, value)
-
-    # These methods offer the same interface as the profile.Profile class,
-    # but delegate most of the work to the C implementation underneath.
-
-    def run(self, cmd):
-        """Profile an exec-compatible string in the script
-        environment.
-
-        The globals from the __main__ module are used as both the
-        globals and locals for the script.
-        """
-        import __main__
-        dict = __main__.__dict__
-        return self.runctx(cmd, dict, dict)
-
-    def runctx(self, cmd, globals, locals):
-        """Evaluate an exec-compatible string in a specific
-        environment.
-
-        The string is compiled before profiling begins.
-        """
-        code = compile(cmd, "<string>", "exec")
-        self._prof.runcode(code, globals, locals)
-        return self
-
-    def runcall(self, func, *args, **kw):
-        """Profile a single call of a callable.
-
-        Additional positional and keyword arguments may be passed
-        along; the result of the call is returned, and exceptions are
-        allowed to propogate cleanly, while ensuring that profiling is
-        disabled on the way out.
-        """
-        return self._prof.runcall(func, args, kw)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/log.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/log.py
deleted file mode 100644
index 7f30b59..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/log.py
+++ /dev/null
@@ -1,194 +0,0 @@
-import _hotshot
-import os.path
-import parser
-import symbol
-
-from _hotshot import \
-     WHAT_ENTER, \
-     WHAT_EXIT, \
-     WHAT_LINENO, \
-     WHAT_DEFINE_FILE, \
-     WHAT_DEFINE_FUNC, \
-     WHAT_ADD_INFO
-
-
-__all__ = ["LogReader", "ENTER", "EXIT", "LINE"]
-
-
-ENTER = WHAT_ENTER
-EXIT  = WHAT_EXIT
-LINE  = WHAT_LINENO
-
-
-class LogReader:
-    def __init__(self, logfn):
-        # fileno -> filename
-        self._filemap = {}
-        # (fileno, lineno) -> filename, funcname
-        self._funcmap = {}
-
-        self._reader = _hotshot.logreader(logfn)
-        self._nextitem = self._reader.next
-        self._info = self._reader.info
-        if 'current-directory' in self._info:
-            self.cwd = self._info['current-directory']
-        else:
-            self.cwd = None
-
-        # This mirrors the call stack of the profiled code as the log
-        # is read back in.  It contains tuples of the form:
-        #
-        #   (file name, line number of function def, function name)
-        #
-        self._stack = []
-        self._append = self._stack.append
-        self._pop = self._stack.pop
-
-    def close(self):
-        self._reader.close()
-
-    def fileno(self):
-        """Return the file descriptor of the log reader's log file."""
-        return self._reader.fileno()
-
-    def addinfo(self, key, value):
-        """This method is called for each additional ADD_INFO record.
-
-        This can be overridden by applications that want to receive
-        these events.  The default implementation does not need to be
-        called by alternate implementations.
-
-        The initial set of ADD_INFO records do not pass through this
-        mechanism; this is only needed to receive notification when
-        new values are added.  Subclasses can inspect self._info after
-        calling LogReader.__init__().
-        """
-        pass
-
-    def get_filename(self, fileno):
-        try:
-            return self._filemap[fileno]
-        except KeyError:
-            raise ValueError, "unknown fileno"
-
-    def get_filenames(self):
-        return self._filemap.values()
-
-    def get_fileno(self, filename):
-        filename = os.path.normcase(os.path.normpath(filename))
-        for fileno, name in self._filemap.items():
-            if name == filename:
-                return fileno
-        raise ValueError, "unknown filename"
-
-    def get_funcname(self, fileno, lineno):
-        try:
-            return self._funcmap[(fileno, lineno)]
-        except KeyError:
-            raise ValueError, "unknown function location"
-
-    # Iteration support:
-    # This adds an optional (& ignored) parameter to next() so that the
-    # same bound method can be used as the __getitem__() method -- this
-    # avoids using an additional method call which kills the performance.
-
-    def next(self, index=0):
-        while 1:
-            # This call may raise StopIteration:
-            what, tdelta, fileno, lineno = self._nextitem()
-
-            # handle the most common cases first
-
-            if what == WHAT_ENTER:
-                filename, funcname = self._decode_location(fileno, lineno)
-                t = (filename, lineno, funcname)
-                self._append(t)
-                return what, t, tdelta
-
-            if what == WHAT_EXIT:
-                try:
-                    return what, self._pop(), tdelta
-                except IndexError:
-                    raise StopIteration
-
-            if what == WHAT_LINENO:
-                filename, firstlineno, funcname = self._stack[-1]
-                return what, (filename, lineno, funcname), tdelta
-
-            if what == WHAT_DEFINE_FILE:
-                filename = os.path.normcase(os.path.normpath(tdelta))
-                self._filemap[fileno] = filename
-            elif what == WHAT_DEFINE_FUNC:
-                filename = self._filemap[fileno]
-                self._funcmap[(fileno, lineno)] = (filename, tdelta)
-            elif what == WHAT_ADD_INFO:
-                # value already loaded into self.info; call the
-                # overridable addinfo() handler so higher-level code
-                # can pick up the new value
-                if tdelta == 'current-directory':
-                    self.cwd = lineno
-                self.addinfo(tdelta, lineno)
-            else:
-                raise ValueError, "unknown event type"
-
-    def __iter__(self):
-        return self
-
-    #
-    #  helpers
-    #
-
-    def _decode_location(self, fileno, lineno):
-        try:
-            return self._funcmap[(fileno, lineno)]
-        except KeyError:
-            #
-            # This should only be needed when the log file does not
-            # contain all the DEFINE_FUNC records needed to allow the
-            # function name to be retrieved from the log file.
-            #
-            if self._loadfile(fileno):
-                filename = funcname = None
-            try:
-                filename, funcname = self._funcmap[(fileno, lineno)]
-            except KeyError:
-                filename = self._filemap.get(fileno)
-                funcname = None
-                self._funcmap[(fileno, lineno)] = (filename, funcname)
-        return filename, funcname
-
-    def _loadfile(self, fileno):
-        try:
-            filename = self._filemap[fileno]
-        except KeyError:
-            print "Could not identify fileId", fileno
-            return 1
-        if filename is None:
-            return 1
-        absname = os.path.normcase(os.path.join(self.cwd, filename))
-
-        try:
-            fp = open(absname)
-        except IOError:
-            return
-        st = parser.suite(fp.read())
-        fp.close()
-
-        # Scan the tree looking for def and lambda nodes, filling in
-        # self._funcmap with all the available information.
-        funcdef = symbol.funcdef
-        lambdef = symbol.lambdef
-
-        stack = [st.totuple(1)]
-
-        while stack:
-            tree = stack.pop()
-            try:
-                sym = tree[0]
-            except (IndexError, TypeError):
-                continue
-            if sym == funcdef:
-                self._funcmap[(fileno, tree[2][2])] = filename, tree[2][1]
-            elif sym == lambdef:
-                self._funcmap[(fileno, tree[1][2])] = filename, "<lambda>"
-            stack.extend(list(tree[1:]))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/stats.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/stats.py
deleted file mode 100644
index c514185..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/stats.py
+++ /dev/null
@@ -1,93 +0,0 @@
-"""Statistics analyzer for HotShot."""
-
-import profile
-import pstats
-
-import hotshot.log
-
-from hotshot.log import ENTER, EXIT
-
-
-def load(filename):
-    return StatsLoader(filename).load()
-
-
-class StatsLoader:
-    def __init__(self, logfn):
-        self._logfn = logfn
-        self._code = {}
-        self._stack = []
-        self.pop_frame = self._stack.pop
-
-    def load(self):
-        # The timer selected by the profiler should never be used, so make
-        # sure it doesn't work:
-        p = Profile()
-        p.get_time = _brokentimer
-        log = hotshot.log.LogReader(self._logfn)
-        taccum = 0
-        for event in log:
-            what, (filename, lineno, funcname), tdelta = event
-            if tdelta > 0:
-                taccum += tdelta
-
-            # We multiply taccum to convert from the microseconds we
-            # have to the seconds that the profile/pstats module work
-            # with; this allows the numbers to have some basis in
-            # reality (ignoring calibration issues for now).
-
-            if what == ENTER:
-                frame = self.new_frame(filename, lineno, funcname)
-                p.trace_dispatch_call(frame, taccum * .000001)
-                taccum = 0
-
-            elif what == EXIT:
-                frame = self.pop_frame()
-                p.trace_dispatch_return(frame, taccum * .000001)
-                taccum = 0
-
-            # no further work for line events
-
-        assert not self._stack
-        return pstats.Stats(p)
-
-    def new_frame(self, *args):
-        # args must be filename, firstlineno, funcname
-        # our code objects are cached since we don't need to create
-        # new ones every time
-        try:
-            code = self._code[args]
-        except KeyError:
-            code = FakeCode(*args)
-            self._code[args] = code
-        # frame objects are create fresh, since the back pointer will
-        # vary considerably
-        if self._stack:
-            back = self._stack[-1]
-        else:
-            back = None
-        frame = FakeFrame(code, back)
-        self._stack.append(frame)
-        return frame
-
-
-class Profile(profile.Profile):
-    def simulate_cmd_complete(self):
-        pass
-
-
-class FakeCode:
-    def __init__(self, filename, firstlineno, funcname):
-        self.co_filename = filename
-        self.co_firstlineno = firstlineno
-        self.co_name = self.__name__ = funcname
-
-
-class FakeFrame:
-    def __init__(self, code, back):
-        self.f_back = back
-        self.f_code = code
-
-
-def _brokentimer():
-    raise RuntimeError, "this timer should not be called"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/stones.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/stones.py
deleted file mode 100644
index ec5d576..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/hotshot/stones.py
+++ /dev/null
@@ -1,30 +0,0 @@
-import errno
-import hotshot
-import hotshot.stats
-import sys
-import test.pystone
-
-def main(logfile):
-    p = hotshot.Profile(logfile)
-    benchtime, stones = p.runcall(test.pystone.pystones)
-    p.close()
-
-    print "Pystone(%s) time for %d passes = %g" % \
-          (test.pystone.__version__, test.pystone.LOOPS, benchtime)
-    print "This machine benchmarks at %g pystones/second" % stones
-
-    stats = hotshot.stats.load(logfile)
-    stats.strip_dirs()
-    stats.sort_stats('time', 'calls')
-    try:
-        stats.print_stats(20)
-    except IOError, e:
-        if e.errno != errno.EPIPE:
-            raise
-
-if __name__ == '__main__':
-    if sys.argv[1:]:
-        main(sys.argv[1])
-    else:
-        import tempfile
-        main(tempfile.NamedTemporaryFile().name)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/htmlentitydefs.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/htmlentitydefs.py
deleted file mode 100644
index 9d7ab06..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/htmlentitydefs.py
+++ /dev/null
@@ -1,273 +0,0 @@
-"""HTML character entity references."""
-
-# maps the HTML entity name to the Unicode codepoint
-name2codepoint = {
-    'AElig':    0x00c6, # latin capital letter AE = latin capital ligature AE, U+00C6 ISOlat1
-    'Aacute':   0x00c1, # latin capital letter A with acute, U+00C1 ISOlat1
-    'Acirc':    0x00c2, # latin capital letter A with circumflex, U+00C2 ISOlat1
-    'Agrave':   0x00c0, # latin capital letter A with grave = latin capital letter A grave, U+00C0 ISOlat1
-    'Alpha':    0x0391, # greek capital letter alpha, U+0391
-    'Aring':    0x00c5, # latin capital letter A with ring above = latin capital letter A ring, U+00C5 ISOlat1
-    'Atilde':   0x00c3, # latin capital letter A with tilde, U+00C3 ISOlat1
-    'Auml':     0x00c4, # latin capital letter A with diaeresis, U+00C4 ISOlat1
-    'Beta':     0x0392, # greek capital letter beta, U+0392
-    'Ccedil':   0x00c7, # latin capital letter C with cedilla, U+00C7 ISOlat1
-    'Chi':      0x03a7, # greek capital letter chi, U+03A7
-    'Dagger':   0x2021, # double dagger, U+2021 ISOpub
-    'Delta':    0x0394, # greek capital letter delta, U+0394 ISOgrk3
-    'ETH':      0x00d0, # latin capital letter ETH, U+00D0 ISOlat1
-    'Eacute':   0x00c9, # latin capital letter E with acute, U+00C9 ISOlat1
-    'Ecirc':    0x00ca, # latin capital letter E with circumflex, U+00CA ISOlat1
-    'Egrave':   0x00c8, # latin capital letter E with grave, U+00C8 ISOlat1
-    'Epsilon':  0x0395, # greek capital letter epsilon, U+0395
-    'Eta':      0x0397, # greek capital letter eta, U+0397
-    'Euml':     0x00cb, # latin capital letter E with diaeresis, U+00CB ISOlat1
-    'Gamma':    0x0393, # greek capital letter gamma, U+0393 ISOgrk3
-    'Iacute':   0x00cd, # latin capital letter I with acute, U+00CD ISOlat1
-    'Icirc':    0x00ce, # latin capital letter I with circumflex, U+00CE ISOlat1
-    'Igrave':   0x00cc, # latin capital letter I with grave, U+00CC ISOlat1
-    'Iota':     0x0399, # greek capital letter iota, U+0399
-    'Iuml':     0x00cf, # latin capital letter I with diaeresis, U+00CF ISOlat1
-    'Kappa':    0x039a, # greek capital letter kappa, U+039A
-    'Lambda':   0x039b, # greek capital letter lambda, U+039B ISOgrk3
-    'Mu':       0x039c, # greek capital letter mu, U+039C
-    'Ntilde':   0x00d1, # latin capital letter N with tilde, U+00D1 ISOlat1
-    'Nu':       0x039d, # greek capital letter nu, U+039D
-    'OElig':    0x0152, # latin capital ligature OE, U+0152 ISOlat2
-    'Oacute':   0x00d3, # latin capital letter O with acute, U+00D3 ISOlat1
-    'Ocirc':    0x00d4, # latin capital letter O with circumflex, U+00D4 ISOlat1
-    'Ograve':   0x00d2, # latin capital letter O with grave, U+00D2 ISOlat1
-    'Omega':    0x03a9, # greek capital letter omega, U+03A9 ISOgrk3
-    'Omicron':  0x039f, # greek capital letter omicron, U+039F
-    'Oslash':   0x00d8, # latin capital letter O with stroke = latin capital letter O slash, U+00D8 ISOlat1
-    'Otilde':   0x00d5, # latin capital letter O with tilde, U+00D5 ISOlat1
-    'Ouml':     0x00d6, # latin capital letter O with diaeresis, U+00D6 ISOlat1
-    'Phi':      0x03a6, # greek capital letter phi, U+03A6 ISOgrk3
-    'Pi':       0x03a0, # greek capital letter pi, U+03A0 ISOgrk3
-    'Prime':    0x2033, # double prime = seconds = inches, U+2033 ISOtech
-    'Psi':      0x03a8, # greek capital letter psi, U+03A8 ISOgrk3
-    'Rho':      0x03a1, # greek capital letter rho, U+03A1
-    'Scaron':   0x0160, # latin capital letter S with caron, U+0160 ISOlat2
-    'Sigma':    0x03a3, # greek capital letter sigma, U+03A3 ISOgrk3
-    'THORN':    0x00de, # latin capital letter THORN, U+00DE ISOlat1
-    'Tau':      0x03a4, # greek capital letter tau, U+03A4
-    'Theta':    0x0398, # greek capital letter theta, U+0398 ISOgrk3
-    'Uacute':   0x00da, # latin capital letter U with acute, U+00DA ISOlat1
-    'Ucirc':    0x00db, # latin capital letter U with circumflex, U+00DB ISOlat1
-    'Ugrave':   0x00d9, # latin capital letter U with grave, U+00D9 ISOlat1
-    'Upsilon':  0x03a5, # greek capital letter upsilon, U+03A5 ISOgrk3
-    'Uuml':     0x00dc, # latin capital letter U with diaeresis, U+00DC ISOlat1
-    'Xi':       0x039e, # greek capital letter xi, U+039E ISOgrk3
-    'Yacute':   0x00dd, # latin capital letter Y with acute, U+00DD ISOlat1
-    'Yuml':     0x0178, # latin capital letter Y with diaeresis, U+0178 ISOlat2
-    'Zeta':     0x0396, # greek capital letter zeta, U+0396
-    'aacute':   0x00e1, # latin small letter a with acute, U+00E1 ISOlat1
-    'acirc':    0x00e2, # latin small letter a with circumflex, U+00E2 ISOlat1
-    'acute':    0x00b4, # acute accent = spacing acute, U+00B4 ISOdia
-    'aelig':    0x00e6, # latin small letter ae = latin small ligature ae, U+00E6 ISOlat1
-    'agrave':   0x00e0, # latin small letter a with grave = latin small letter a grave, U+00E0 ISOlat1
-    'alefsym':  0x2135, # alef symbol = first transfinite cardinal, U+2135 NEW
-    'alpha':    0x03b1, # greek small letter alpha, U+03B1 ISOgrk3
-    'amp':      0x0026, # ampersand, U+0026 ISOnum
-    'and':      0x2227, # logical and = wedge, U+2227 ISOtech
-    'ang':      0x2220, # angle, U+2220 ISOamso
-    'aring':    0x00e5, # latin small letter a with ring above = latin small letter a ring, U+00E5 ISOlat1
-    'asymp':    0x2248, # almost equal to = asymptotic to, U+2248 ISOamsr
-    'atilde':   0x00e3, # latin small letter a with tilde, U+00E3 ISOlat1
-    'auml':     0x00e4, # latin small letter a with diaeresis, U+00E4 ISOlat1
-    'bdquo':    0x201e, # double low-9 quotation mark, U+201E NEW
-    'beta':     0x03b2, # greek small letter beta, U+03B2 ISOgrk3
-    'brvbar':   0x00a6, # broken bar = broken vertical bar, U+00A6 ISOnum
-    'bull':     0x2022, # bullet = black small circle, U+2022 ISOpub
-    'cap':      0x2229, # intersection = cap, U+2229 ISOtech
-    'ccedil':   0x00e7, # latin small letter c with cedilla, U+00E7 ISOlat1
-    'cedil':    0x00b8, # cedilla = spacing cedilla, U+00B8 ISOdia
-    'cent':     0x00a2, # cent sign, U+00A2 ISOnum
-    'chi':      0x03c7, # greek small letter chi, U+03C7 ISOgrk3
-    'circ':     0x02c6, # modifier letter circumflex accent, U+02C6 ISOpub
-    'clubs':    0x2663, # black club suit = shamrock, U+2663 ISOpub
-    'cong':     0x2245, # approximately equal to, U+2245 ISOtech
-    'copy':     0x00a9, # copyright sign, U+00A9 ISOnum
-    'crarr':    0x21b5, # downwards arrow with corner leftwards = carriage return, U+21B5 NEW
-    'cup':      0x222a, # union = cup, U+222A ISOtech
-    'curren':   0x00a4, # currency sign, U+00A4 ISOnum
-    'dArr':     0x21d3, # downwards double arrow, U+21D3 ISOamsa
-    'dagger':   0x2020, # dagger, U+2020 ISOpub
-    'darr':     0x2193, # downwards arrow, U+2193 ISOnum
-    'deg':      0x00b0, # degree sign, U+00B0 ISOnum
-    'delta':    0x03b4, # greek small letter delta, U+03B4 ISOgrk3
-    'diams':    0x2666, # black diamond suit, U+2666 ISOpub
-    'divide':   0x00f7, # division sign, U+00F7 ISOnum
-    'eacute':   0x00e9, # latin small letter e with acute, U+00E9 ISOlat1
-    'ecirc':    0x00ea, # latin small letter e with circumflex, U+00EA ISOlat1
-    'egrave':   0x00e8, # latin small letter e with grave, U+00E8 ISOlat1
-    'empty':    0x2205, # empty set = null set = diameter, U+2205 ISOamso
-    'emsp':     0x2003, # em space, U+2003 ISOpub
-    'ensp':     0x2002, # en space, U+2002 ISOpub
-    'epsilon':  0x03b5, # greek small letter epsilon, U+03B5 ISOgrk3
-    'equiv':    0x2261, # identical to, U+2261 ISOtech
-    'eta':      0x03b7, # greek small letter eta, U+03B7 ISOgrk3
-    'eth':      0x00f0, # latin small letter eth, U+00F0 ISOlat1
-    'euml':     0x00eb, # latin small letter e with diaeresis, U+00EB ISOlat1
-    'euro':     0x20ac, # euro sign, U+20AC NEW
-    'exist':    0x2203, # there exists, U+2203 ISOtech
-    'fnof':     0x0192, # latin small f with hook = function = florin, U+0192 ISOtech
-    'forall':   0x2200, # for all, U+2200 ISOtech
-    'frac12':   0x00bd, # vulgar fraction one half = fraction one half, U+00BD ISOnum
-    'frac14':   0x00bc, # vulgar fraction one quarter = fraction one quarter, U+00BC ISOnum
-    'frac34':   0x00be, # vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum
-    'frasl':    0x2044, # fraction slash, U+2044 NEW
-    'gamma':    0x03b3, # greek small letter gamma, U+03B3 ISOgrk3
-    'ge':       0x2265, # greater-than or equal to, U+2265 ISOtech
-    'gt':       0x003e, # greater-than sign, U+003E ISOnum
-    'hArr':     0x21d4, # left right double arrow, U+21D4 ISOamsa
-    'harr':     0x2194, # left right arrow, U+2194 ISOamsa
-    'hearts':   0x2665, # black heart suit = valentine, U+2665 ISOpub
-    'hellip':   0x2026, # horizontal ellipsis = three dot leader, U+2026 ISOpub
-    'iacute':   0x00ed, # latin small letter i with acute, U+00ED ISOlat1
-    'icirc':    0x00ee, # latin small letter i with circumflex, U+00EE ISOlat1
-    'iexcl':    0x00a1, # inverted exclamation mark, U+00A1 ISOnum
-    'igrave':   0x00ec, # latin small letter i with grave, U+00EC ISOlat1
-    'image':    0x2111, # blackletter capital I = imaginary part, U+2111 ISOamso
-    'infin':    0x221e, # infinity, U+221E ISOtech
-    'int':      0x222b, # integral, U+222B ISOtech
-    'iota':     0x03b9, # greek small letter iota, U+03B9 ISOgrk3
-    'iquest':   0x00bf, # inverted question mark = turned question mark, U+00BF ISOnum
-    'isin':     0x2208, # element of, U+2208 ISOtech
-    'iuml':     0x00ef, # latin small letter i with diaeresis, U+00EF ISOlat1
-    'kappa':    0x03ba, # greek small letter kappa, U+03BA ISOgrk3
-    'lArr':     0x21d0, # leftwards double arrow, U+21D0 ISOtech
-    'lambda':   0x03bb, # greek small letter lambda, U+03BB ISOgrk3
-    'lang':     0x2329, # left-pointing angle bracket = bra, U+2329 ISOtech
-    'laquo':    0x00ab, # left-pointing double angle quotation mark = left pointing guillemet, U+00AB ISOnum
-    'larr':     0x2190, # leftwards arrow, U+2190 ISOnum
-    'lceil':    0x2308, # left ceiling = apl upstile, U+2308 ISOamsc
-    'ldquo':    0x201c, # left double quotation mark, U+201C ISOnum
-    'le':       0x2264, # less-than or equal to, U+2264 ISOtech
-    'lfloor':   0x230a, # left floor = apl downstile, U+230A ISOamsc
-    'lowast':   0x2217, # asterisk operator, U+2217 ISOtech
-    'loz':      0x25ca, # lozenge, U+25CA ISOpub
-    'lrm':      0x200e, # left-to-right mark, U+200E NEW RFC 2070
-    'lsaquo':   0x2039, # single left-pointing angle quotation mark, U+2039 ISO proposed
-    'lsquo':    0x2018, # left single quotation mark, U+2018 ISOnum
-    'lt':       0x003c, # less-than sign, U+003C ISOnum
-    'macr':     0x00af, # macron = spacing macron = overline = APL overbar, U+00AF ISOdia
-    'mdash':    0x2014, # em dash, U+2014 ISOpub
-    'micro':    0x00b5, # micro sign, U+00B5 ISOnum
-    'middot':   0x00b7, # middle dot = Georgian comma = Greek middle dot, U+00B7 ISOnum
-    'minus':    0x2212, # minus sign, U+2212 ISOtech
-    'mu':       0x03bc, # greek small letter mu, U+03BC ISOgrk3
-    'nabla':    0x2207, # nabla = backward difference, U+2207 ISOtech
-    'nbsp':     0x00a0, # no-break space = non-breaking space, U+00A0 ISOnum
-    'ndash':    0x2013, # en dash, U+2013 ISOpub
-    'ne':       0x2260, # not equal to, U+2260 ISOtech
-    'ni':       0x220b, # contains as member, U+220B ISOtech
-    'not':      0x00ac, # not sign, U+00AC ISOnum
-    'notin':    0x2209, # not an element of, U+2209 ISOtech
-    'nsub':     0x2284, # not a subset of, U+2284 ISOamsn
-    'ntilde':   0x00f1, # latin small letter n with tilde, U+00F1 ISOlat1
-    'nu':       0x03bd, # greek small letter nu, U+03BD ISOgrk3
-    'oacute':   0x00f3, # latin small letter o with acute, U+00F3 ISOlat1
-    'ocirc':    0x00f4, # latin small letter o with circumflex, U+00F4 ISOlat1
-    'oelig':    0x0153, # latin small ligature oe, U+0153 ISOlat2
-    'ograve':   0x00f2, # latin small letter o with grave, U+00F2 ISOlat1
-    'oline':    0x203e, # overline = spacing overscore, U+203E NEW
-    'omega':    0x03c9, # greek small letter omega, U+03C9 ISOgrk3
-    'omicron':  0x03bf, # greek small letter omicron, U+03BF NEW
-    'oplus':    0x2295, # circled plus = direct sum, U+2295 ISOamsb
-    'or':       0x2228, # logical or = vee, U+2228 ISOtech
-    'ordf':     0x00aa, # feminine ordinal indicator, U+00AA ISOnum
-    'ordm':     0x00ba, # masculine ordinal indicator, U+00BA ISOnum
-    'oslash':   0x00f8, # latin small letter o with stroke, = latin small letter o slash, U+00F8 ISOlat1
-    'otilde':   0x00f5, # latin small letter o with tilde, U+00F5 ISOlat1
-    'otimes':   0x2297, # circled times = vector product, U+2297 ISOamsb
-    'ouml':     0x00f6, # latin small letter o with diaeresis, U+00F6 ISOlat1
-    'para':     0x00b6, # pilcrow sign = paragraph sign, U+00B6 ISOnum
-    'part':     0x2202, # partial differential, U+2202 ISOtech
-    'permil':   0x2030, # per mille sign, U+2030 ISOtech
-    'perp':     0x22a5, # up tack = orthogonal to = perpendicular, U+22A5 ISOtech
-    'phi':      0x03c6, # greek small letter phi, U+03C6 ISOgrk3
-    'pi':       0x03c0, # greek small letter pi, U+03C0 ISOgrk3
-    'piv':      0x03d6, # greek pi symbol, U+03D6 ISOgrk3
-    'plusmn':   0x00b1, # plus-minus sign = plus-or-minus sign, U+00B1 ISOnum
-    'pound':    0x00a3, # pound sign, U+00A3 ISOnum
-    'prime':    0x2032, # prime = minutes = feet, U+2032 ISOtech
-    'prod':     0x220f, # n-ary product = product sign, U+220F ISOamsb
-    'prop':     0x221d, # proportional to, U+221D ISOtech
-    'psi':      0x03c8, # greek small letter psi, U+03C8 ISOgrk3
-    'quot':     0x0022, # quotation mark = APL quote, U+0022 ISOnum
-    'rArr':     0x21d2, # rightwards double arrow, U+21D2 ISOtech
-    'radic':    0x221a, # square root = radical sign, U+221A ISOtech
-    'rang':     0x232a, # right-pointing angle bracket = ket, U+232A ISOtech
-    'raquo':    0x00bb, # right-pointing double angle quotation mark = right pointing guillemet, U+00BB ISOnum
-    'rarr':     0x2192, # rightwards arrow, U+2192 ISOnum
-    'rceil':    0x2309, # right ceiling, U+2309 ISOamsc
-    'rdquo':    0x201d, # right double quotation mark, U+201D ISOnum
-    'real':     0x211c, # blackletter capital R = real part symbol, U+211C ISOamso
-    'reg':      0x00ae, # registered sign = registered trade mark sign, U+00AE ISOnum
-    'rfloor':   0x230b, # right floor, U+230B ISOamsc
-    'rho':      0x03c1, # greek small letter rho, U+03C1 ISOgrk3
-    'rlm':      0x200f, # right-to-left mark, U+200F NEW RFC 2070
-    'rsaquo':   0x203a, # single right-pointing angle quotation mark, U+203A ISO proposed
-    'rsquo':    0x2019, # right single quotation mark, U+2019 ISOnum
-    'sbquo':    0x201a, # single low-9 quotation mark, U+201A NEW
-    'scaron':   0x0161, # latin small letter s with caron, U+0161 ISOlat2
-    'sdot':     0x22c5, # dot operator, U+22C5 ISOamsb
-    'sect':     0x00a7, # section sign, U+00A7 ISOnum
-    'shy':      0x00ad, # soft hyphen = discretionary hyphen, U+00AD ISOnum
-    'sigma':    0x03c3, # greek small letter sigma, U+03C3 ISOgrk3
-    'sigmaf':   0x03c2, # greek small letter final sigma, U+03C2 ISOgrk3
-    'sim':      0x223c, # tilde operator = varies with = similar to, U+223C ISOtech
-    'spades':   0x2660, # black spade suit, U+2660 ISOpub
-    'sub':      0x2282, # subset of, U+2282 ISOtech
-    'sube':     0x2286, # subset of or equal to, U+2286 ISOtech
-    'sum':      0x2211, # n-ary sumation, U+2211 ISOamsb
-    'sup':      0x2283, # superset of, U+2283 ISOtech
-    'sup1':     0x00b9, # superscript one = superscript digit one, U+00B9 ISOnum
-    'sup2':     0x00b2, # superscript two = superscript digit two = squared, U+00B2 ISOnum
-    'sup3':     0x00b3, # superscript three = superscript digit three = cubed, U+00B3 ISOnum
-    'supe':     0x2287, # superset of or equal to, U+2287 ISOtech
-    'szlig':    0x00df, # latin small letter sharp s = ess-zed, U+00DF ISOlat1
-    'tau':      0x03c4, # greek small letter tau, U+03C4 ISOgrk3
-    'there4':   0x2234, # therefore, U+2234 ISOtech
-    'theta':    0x03b8, # greek small letter theta, U+03B8 ISOgrk3
-    'thetasym': 0x03d1, # greek small letter theta symbol, U+03D1 NEW
-    'thinsp':   0x2009, # thin space, U+2009 ISOpub
-    'thorn':    0x00fe, # latin small letter thorn with, U+00FE ISOlat1
-    'tilde':    0x02dc, # small tilde, U+02DC ISOdia
-    'times':    0x00d7, # multiplication sign, U+00D7 ISOnum
-    'trade':    0x2122, # trade mark sign, U+2122 ISOnum
-    'uArr':     0x21d1, # upwards double arrow, U+21D1 ISOamsa
-    'uacute':   0x00fa, # latin small letter u with acute, U+00FA ISOlat1
-    'uarr':     0x2191, # upwards arrow, U+2191 ISOnum
-    'ucirc':    0x00fb, # latin small letter u with circumflex, U+00FB ISOlat1
-    'ugrave':   0x00f9, # latin small letter u with grave, U+00F9 ISOlat1
-    'uml':      0x00a8, # diaeresis = spacing diaeresis, U+00A8 ISOdia
-    'upsih':    0x03d2, # greek upsilon with hook symbol, U+03D2 NEW
-    'upsilon':  0x03c5, # greek small letter upsilon, U+03C5 ISOgrk3
-    'uuml':     0x00fc, # latin small letter u with diaeresis, U+00FC ISOlat1
-    'weierp':   0x2118, # script capital P = power set = Weierstrass p, U+2118 ISOamso
-    'xi':       0x03be, # greek small letter xi, U+03BE ISOgrk3
-    'yacute':   0x00fd, # latin small letter y with acute, U+00FD ISOlat1
-    'yen':      0x00a5, # yen sign = yuan sign, U+00A5 ISOnum
-    'yuml':     0x00ff, # latin small letter y with diaeresis, U+00FF ISOlat1
-    'zeta':     0x03b6, # greek small letter zeta, U+03B6 ISOgrk3
-    'zwj':      0x200d, # zero width joiner, U+200D NEW RFC 2070
-    'zwnj':     0x200c, # zero width non-joiner, U+200C NEW RFC 2070
-}
-
-# maps the Unicode codepoint to the HTML entity name
-codepoint2name = {}
-
-# maps the HTML entity name to the character
-# (or a character reference if the character is outside the Latin-1 range)
-entitydefs = {}
-
-for (name, codepoint) in name2codepoint.iteritems():
-    codepoint2name[codepoint] = name
-    if codepoint <= 0xff:
-        entitydefs[name] = chr(codepoint)
-    else:
-        entitydefs[name] = '&#%d;' % codepoint
-
-del name, codepoint
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/htmllib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/htmllib.py
deleted file mode 100644
index 42f8986..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/htmllib.py
+++ /dev/null
@@ -1,491 +0,0 @@
-"""HTML 2.0 parser.
-
-See the HTML 2.0 specification:
-http://www.w3.org/hypertext/WWW/MarkUp/html-spec/html-spec_toc.html
-"""
-
-from warnings import warnpy3k
-warnpy3k("the htmllib module has been removed in Python 3.0",
-         stacklevel=2)
-del warnpy3k
-
-import sgmllib
-
-from formatter import AS_IS
-
-__all__ = ["HTMLParser", "HTMLParseError"]
-
-
-class HTMLParseError(sgmllib.SGMLParseError):
-    """Error raised when an HTML document can't be parsed."""
-
-
-class HTMLParser(sgmllib.SGMLParser):
-    """This is the basic HTML parser class.
-
-    It supports all entity names required by the XHTML 1.0 Recommendation.
-    It also defines handlers for all HTML 2.0 and many HTML 3.0 and 3.2
-    elements.
-
-    """
-
-    from htmlentitydefs import entitydefs
-
-    def __init__(self, formatter, verbose=0):
-        """Creates an instance of the HTMLParser class.
-
-        The formatter parameter is the formatter instance associated with
-        the parser.
-
-        """
-        sgmllib.SGMLParser.__init__(self, verbose)
-        self.formatter = formatter
-
-    def error(self, message):
-        raise HTMLParseError(message)
-
-    def reset(self):
-        sgmllib.SGMLParser.reset(self)
-        self.savedata = None
-        self.isindex = 0
-        self.title = None
-        self.base = None
-        self.anchor = None
-        self.anchorlist = []
-        self.nofill = 0
-        self.list_stack = []
-
-    # ------ Methods used internally; some may be overridden
-
-    # --- Formatter interface, taking care of 'savedata' mode;
-    # shouldn't need to be overridden
-
-    def handle_data(self, data):
-        if self.savedata is not None:
-            self.savedata = self.savedata + data
-        else:
-            if self.nofill:
-                self.formatter.add_literal_data(data)
-            else:
-                self.formatter.add_flowing_data(data)
-
-    # --- Hooks to save data; shouldn't need to be overridden
-
-    def save_bgn(self):
-        """Begins saving character data in a buffer instead of sending it
-        to the formatter object.
-
-        Retrieve the stored data via the save_end() method.  Use of the
-        save_bgn() / save_end() pair may not be nested.
-
-        """
-        self.savedata = ''
-
-    def save_end(self):
-        """Ends buffering character data and returns all data saved since
-        the preceding call to the save_bgn() method.
-
-        If the nofill flag is false, whitespace is collapsed to single
-        spaces.  A call to this method without a preceding call to the
-        save_bgn() method will raise a TypeError exception.
-
-        """
-        data = self.savedata
-        self.savedata = None
-        if not self.nofill:
-            data = ' '.join(data.split())
-        return data
-
-    # --- Hooks for anchors; should probably be overridden
-
-    def anchor_bgn(self, href, name, type):
-        """This method is called at the start of an anchor region.
-
-        The arguments correspond to the attributes of the <A> tag with
-        the same names.  The default implementation maintains a list of
-        hyperlinks (defined by the HREF attribute for <A> tags) within
-        the document.  The list of hyperlinks is available as the data
-        attribute anchorlist.
-
-        """
-        self.anchor = href
-        if self.anchor:
-            self.anchorlist.append(href)
-
-    def anchor_end(self):
-        """This method is called at the end of an anchor region.
-
-        The default implementation adds a textual footnote marker using an
-        index into the list of hyperlinks created by the anchor_bgn()method.
-
-        """
-        if self.anchor:
-            self.handle_data("[%d]" % len(self.anchorlist))
-            self.anchor = None
-
-    # --- Hook for images; should probably be overridden
-
-    def handle_image(self, src, alt, *args):
-        """This method is called to handle images.
-
-        The default implementation simply passes the alt value to the
-        handle_data() method.
-
-        """
-        self.handle_data(alt)
-
-    # --------- Top level elememts
-
-    def start_html(self, attrs): pass
-    def end_html(self): pass
-
-    def start_head(self, attrs): pass
-    def end_head(self): pass
-
-    def start_body(self, attrs): pass
-    def end_body(self): pass
-
-    # ------ Head elements
-
-    def start_title(self, attrs):
-        self.save_bgn()
-
-    def end_title(self):
-        self.title = self.save_end()
-
-    def do_base(self, attrs):
-        for a, v in attrs:
-            if a == 'href':
-                self.base = v
-
-    def do_isindex(self, attrs):
-        self.isindex = 1
-
-    def do_link(self, attrs):
-        pass
-
-    def do_meta(self, attrs):
-        pass
-
-    def do_nextid(self, attrs): # Deprecated
-        pass
-
-    # ------ Body elements
-
-    # --- Headings
-
-    def start_h1(self, attrs):
-        self.formatter.end_paragraph(1)
-        self.formatter.push_font(('h1', 0, 1, 0))
-
-    def end_h1(self):
-        self.formatter.end_paragraph(1)
-        self.formatter.pop_font()
-
-    def start_h2(self, attrs):
-        self.formatter.end_paragraph(1)
-        self.formatter.push_font(('h2', 0, 1, 0))
-
-    def end_h2(self):
-        self.formatter.end_paragraph(1)
-        self.formatter.pop_font()
-
-    def start_h3(self, attrs):
-        self.formatter.end_paragraph(1)
-        self.formatter.push_font(('h3', 0, 1, 0))
-
-    def end_h3(self):
-        self.formatter.end_paragraph(1)
-        self.formatter.pop_font()
-
-    def start_h4(self, attrs):
-        self.formatter.end_paragraph(1)
-        self.formatter.push_font(('h4', 0, 1, 0))
-
-    def end_h4(self):
-        self.formatter.end_paragraph(1)
-        self.formatter.pop_font()
-
-    def start_h5(self, attrs):
-        self.formatter.end_paragraph(1)
-        self.formatter.push_font(('h5', 0, 1, 0))
-
-    def end_h5(self):
-        self.formatter.end_paragraph(1)
-        self.formatter.pop_font()
-
-    def start_h6(self, attrs):
-        self.formatter.end_paragraph(1)
-        self.formatter.push_font(('h6', 0, 1, 0))
-
-    def end_h6(self):
-        self.formatter.end_paragraph(1)
-        self.formatter.pop_font()
-
-    # --- Block Structuring Elements
-
-    def do_p(self, attrs):
-        self.formatter.end_paragraph(1)
-
-    def start_pre(self, attrs):
-        self.formatter.end_paragraph(1)
-        self.formatter.push_font((AS_IS, AS_IS, AS_IS, 1))
-        self.nofill = self.nofill + 1
-
-    def end_pre(self):
-        self.formatter.end_paragraph(1)
-        self.formatter.pop_font()
-        self.nofill = max(0, self.nofill - 1)
-
-    def start_xmp(self, attrs):
-        self.start_pre(attrs)
-        self.setliteral('xmp') # Tell SGML parser
-
-    def end_xmp(self):
-        self.end_pre()
-
-    def start_listing(self, attrs):
-        self.start_pre(attrs)
-        self.setliteral('listing') # Tell SGML parser
-
-    def end_listing(self):
-        self.end_pre()
-
-    def start_address(self, attrs):
-        self.formatter.end_paragraph(0)
-        self.formatter.push_font((AS_IS, 1, AS_IS, AS_IS))
-
-    def end_address(self):
-        self.formatter.end_paragraph(0)
-        self.formatter.pop_font()
-
-    def start_blockquote(self, attrs):
-        self.formatter.end_paragraph(1)
-        self.formatter.push_margin('blockquote')
-
-    def end_blockquote(self):
-        self.formatter.end_paragraph(1)
-        self.formatter.pop_margin()
-
-    # --- List Elements
-
-    def start_ul(self, attrs):
-        self.formatter.end_paragraph(not self.list_stack)
-        self.formatter.push_margin('ul')
-        self.list_stack.append(['ul', '*', 0])
-
-    def end_ul(self):
-        if self.list_stack: del self.list_stack[-1]
-        self.formatter.end_paragraph(not self.list_stack)
-        self.formatter.pop_margin()
-
-    def do_li(self, attrs):
-        self.formatter.end_paragraph(0)
-        if self.list_stack:
-            [dummy, label, counter] = top = self.list_stack[-1]
-            top[2] = counter = counter+1
-        else:
-            label, counter = '*', 0
-        self.formatter.add_label_data(label, counter)
-
-    def start_ol(self, attrs):
-        self.formatter.end_paragraph(not self.list_stack)
-        self.formatter.push_margin('ol')
-        label = '1.'
-        for a, v in attrs:
-            if a == 'type':
-                if len(v) == 1: v = v + '.'
-                label = v
-        self.list_stack.append(['ol', label, 0])
-
-    def end_ol(self):
-        if self.list_stack: del self.list_stack[-1]
-        self.formatter.end_paragraph(not self.list_stack)
-        self.formatter.pop_margin()
-
-    def start_menu(self, attrs):
-        self.start_ul(attrs)
-
-    def end_menu(self):
-        self.end_ul()
-
-    def start_dir(self, attrs):
-        self.start_ul(attrs)
-
-    def end_dir(self):
-        self.end_ul()
-
-    def start_dl(self, attrs):
-        self.formatter.end_paragraph(1)
-        self.list_stack.append(['dl', '', 0])
-
-    def end_dl(self):
-        self.ddpop(1)
-        if self.list_stack: del self.list_stack[-1]
-
-    def do_dt(self, attrs):
-        self.ddpop()
-
-    def do_dd(self, attrs):
-        self.ddpop()
-        self.formatter.push_margin('dd')
-        self.list_stack.append(['dd', '', 0])
-
-    def ddpop(self, bl=0):
-        self.formatter.end_paragraph(bl)
-        if self.list_stack:
-            if self.list_stack[-1][0] == 'dd':
-                del self.list_stack[-1]
-                self.formatter.pop_margin()
-
-    # --- Phrase Markup
-
-    # Idiomatic Elements
-
-    def start_cite(self, attrs): self.start_i(attrs)
-    def end_cite(self): self.end_i()
-
-    def start_code(self, attrs): self.start_tt(attrs)
-    def end_code(self): self.end_tt()
-
-    def start_em(self, attrs): self.start_i(attrs)
-    def end_em(self): self.end_i()
-
-    def start_kbd(self, attrs): self.start_tt(attrs)
-    def end_kbd(self): self.end_tt()
-
-    def start_samp(self, attrs): self.start_tt(attrs)
-    def end_samp(self): self.end_tt()
-
-    def start_strong(self, attrs): self.start_b(attrs)
-    def end_strong(self): self.end_b()
-
-    def start_var(self, attrs): self.start_i(attrs)
-    def end_var(self): self.end_i()
-
-    # Typographic Elements
-
-    def start_i(self, attrs):
-        self.formatter.push_font((AS_IS, 1, AS_IS, AS_IS))
-    def end_i(self):
-        self.formatter.pop_font()
-
-    def start_b(self, attrs):
-        self.formatter.push_font((AS_IS, AS_IS, 1, AS_IS))
-    def end_b(self):
-        self.formatter.pop_font()
-
-    def start_tt(self, attrs):
-        self.formatter.push_font((AS_IS, AS_IS, AS_IS, 1))
-    def end_tt(self):
-        self.formatter.pop_font()
-
-    def start_a(self, attrs):
-        href = ''
-        name = ''
-        type = ''
-        for attrname, value in attrs:
-            value = value.strip()
-            if attrname == 'href':
-                href = value
-            if attrname == 'name':
-                name = value
-            if attrname == 'type':
-                type = value.lower()
-        self.anchor_bgn(href, name, type)
-
-    def end_a(self):
-        self.anchor_end()
-
-    # --- Line Break
-
-    def do_br(self, attrs):
-        self.formatter.add_line_break()
-
-    # --- Horizontal Rule
-
-    def do_hr(self, attrs):
-        self.formatter.add_hor_rule()
-
-    # --- Image
-
-    def do_img(self, attrs):
-        align = ''
-        alt = '(image)'
-        ismap = ''
-        src = ''
-        width = 0
-        height = 0
-        for attrname, value in attrs:
-            if attrname == 'align':
-                align = value
-            if attrname == 'alt':
-                alt = value
-            if attrname == 'ismap':
-                ismap = value
-            if attrname == 'src':
-                src = value
-            if attrname == 'width':
-                try: width = int(value)
-                except ValueError: pass
-            if attrname == 'height':
-                try: height = int(value)
-                except ValueError: pass
-        self.handle_image(src, alt, ismap, align, width, height)
-
-    # --- Really Old Unofficial Deprecated Stuff
-
-    def do_plaintext(self, attrs):
-        self.start_pre(attrs)
-        self.setnomoretags() # Tell SGML parser
-
-    # --- Unhandled tags
-
-    def unknown_starttag(self, tag, attrs):
-        pass
-
-    def unknown_endtag(self, tag):
-        pass
-
-
-def test(args = None):
-    import sys, formatter
-
-    if not args:
-        args = sys.argv[1:]
-
-    silent = args and args[0] == '-s'
-    if silent:
-        del args[0]
-
-    if args:
-        file = args[0]
-    else:
-        file = 'test.html'
-
-    if file == '-':
-        f = sys.stdin
-    else:
-        try:
-            f = open(file, 'r')
-        except IOError, msg:
-            print file, ":", msg
-            sys.exit(1)
-
-    data = f.read()
-
-    if f is not sys.stdin:
-        f.close()
-
-    if silent:
-        f = formatter.NullFormatter()
-    else:
-        f = formatter.AbstractFormatter(formatter.DumbWriter())
-
-    p = HTMLParser(f)
-    p.feed(data)
-    p.close()
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/httplib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/httplib.py
deleted file mode 100644
index 4a230c5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/httplib.py
+++ /dev/null
@@ -1,1392 +0,0 @@
-"""HTTP/1.1 client library
-
-<intro stuff goes here>
-<other stuff, too>
-
-HTTPConnection goes through a number of "states", which define when a client
-may legally make another request or fetch the response for a particular
-request. This diagram details these state transitions:
-
-    (null)
-      |
-      | HTTPConnection()
-      v
-    Idle
-      |
-      | putrequest()
-      v
-    Request-started
-      |
-      | ( putheader() )*  endheaders()
-      v
-    Request-sent
-      |
-      | response = getresponse()
-      v
-    Unread-response   [Response-headers-read]
-      |\____________________
-      |                     |
-      | response.read()     | putrequest()
-      v                     v
-    Idle                  Req-started-unread-response
-                     ______/|
-                   /        |
-   response.read() |        | ( putheader() )*  endheaders()
-                   v        v
-       Request-started    Req-sent-unread-response
-                            |
-                            | response.read()
-                            v
-                          Request-sent
-
-This diagram presents the following rules:
-  -- a second request may not be started until {response-headers-read}
-  -- a response [object] cannot be retrieved until {request-sent}
-  -- there is no differentiation between an unread response body and a
-     partially read response body
-
-Note: this enforcement is applied by the HTTPConnection class. The
-      HTTPResponse class does not enforce this state machine, which
-      implies sophisticated clients may accelerate the request/response
-      pipeline. Caution should be taken, though: accelerating the states
-      beyond the above pattern may imply knowledge of the server's
-      connection-close behavior for certain requests. For example, it
-      is impossible to tell whether the server will close the connection
-      UNTIL the response headers have been read; this means that further
-      requests cannot be placed into the pipeline until it is known that
-      the server will NOT be closing the connection.
-
-Logical State                  __state            __response
--------------                  -------            ----------
-Idle                           _CS_IDLE           None
-Request-started                _CS_REQ_STARTED    None
-Request-sent                   _CS_REQ_SENT       None
-Unread-response                _CS_IDLE           <response_class>
-Req-started-unread-response    _CS_REQ_STARTED    <response_class>
-Req-sent-unread-response       _CS_REQ_SENT       <response_class>
-"""
-
-from array import array
-import os
-import socket
-from sys import py3kwarning
-from urlparse import urlsplit
-import warnings
-with warnings.catch_warnings():
-    if py3kwarning:
-        warnings.filterwarnings("ignore", ".*mimetools has been removed",
-                                DeprecationWarning)
-    import mimetools
-
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-__all__ = ["HTTP", "HTTPResponse", "HTTPConnection",
-           "HTTPException", "NotConnected", "UnknownProtocol",
-           "UnknownTransferEncoding", "UnimplementedFileMode",
-           "IncompleteRead", "InvalidURL", "ImproperConnectionState",
-           "CannotSendRequest", "CannotSendHeader", "ResponseNotReady",
-           "BadStatusLine", "error", "responses"]
-
-HTTP_PORT = 80
-HTTPS_PORT = 443
-
-_UNKNOWN = 'UNKNOWN'
-
-# connection states
-_CS_IDLE = 'Idle'
-_CS_REQ_STARTED = 'Request-started'
-_CS_REQ_SENT = 'Request-sent'
-
-# status codes
-# informational
-CONTINUE = 100
-SWITCHING_PROTOCOLS = 101
-PROCESSING = 102
-
-# successful
-OK = 200
-CREATED = 201
-ACCEPTED = 202
-NON_AUTHORITATIVE_INFORMATION = 203
-NO_CONTENT = 204
-RESET_CONTENT = 205
-PARTIAL_CONTENT = 206
-MULTI_STATUS = 207
-IM_USED = 226
-
-# redirection
-MULTIPLE_CHOICES = 300
-MOVED_PERMANENTLY = 301
-FOUND = 302
-SEE_OTHER = 303
-NOT_MODIFIED = 304
-USE_PROXY = 305
-TEMPORARY_REDIRECT = 307
-
-# client error
-BAD_REQUEST = 400
-UNAUTHORIZED = 401
-PAYMENT_REQUIRED = 402
-FORBIDDEN = 403
-NOT_FOUND = 404
-METHOD_NOT_ALLOWED = 405
-NOT_ACCEPTABLE = 406
-PROXY_AUTHENTICATION_REQUIRED = 407
-REQUEST_TIMEOUT = 408
-CONFLICT = 409
-GONE = 410
-LENGTH_REQUIRED = 411
-PRECONDITION_FAILED = 412
-REQUEST_ENTITY_TOO_LARGE = 413
-REQUEST_URI_TOO_LONG = 414
-UNSUPPORTED_MEDIA_TYPE = 415
-REQUESTED_RANGE_NOT_SATISFIABLE = 416
-EXPECTATION_FAILED = 417
-UNPROCESSABLE_ENTITY = 422
-LOCKED = 423
-FAILED_DEPENDENCY = 424
-UPGRADE_REQUIRED = 426
-
-# server error
-INTERNAL_SERVER_ERROR = 500
-NOT_IMPLEMENTED = 501
-BAD_GATEWAY = 502
-SERVICE_UNAVAILABLE = 503
-GATEWAY_TIMEOUT = 504
-HTTP_VERSION_NOT_SUPPORTED = 505
-INSUFFICIENT_STORAGE = 507
-NOT_EXTENDED = 510
-
-# Mapping status codes to official W3C names
-responses = {
-    100: 'Continue',
-    101: 'Switching Protocols',
-
-    200: 'OK',
-    201: 'Created',
-    202: 'Accepted',
-    203: 'Non-Authoritative Information',
-    204: 'No Content',
-    205: 'Reset Content',
-    206: 'Partial Content',
-
-    300: 'Multiple Choices',
-    301: 'Moved Permanently',
-    302: 'Found',
-    303: 'See Other',
-    304: 'Not Modified',
-    305: 'Use Proxy',
-    306: '(Unused)',
-    307: 'Temporary Redirect',
-
-    400: 'Bad Request',
-    401: 'Unauthorized',
-    402: 'Payment Required',
-    403: 'Forbidden',
-    404: 'Not Found',
-    405: 'Method Not Allowed',
-    406: 'Not Acceptable',
-    407: 'Proxy Authentication Required',
-    408: 'Request Timeout',
-    409: 'Conflict',
-    410: 'Gone',
-    411: 'Length Required',
-    412: 'Precondition Failed',
-    413: 'Request Entity Too Large',
-    414: 'Request-URI Too Long',
-    415: 'Unsupported Media Type',
-    416: 'Requested Range Not Satisfiable',
-    417: 'Expectation Failed',
-
-    500: 'Internal Server Error',
-    501: 'Not Implemented',
-    502: 'Bad Gateway',
-    503: 'Service Unavailable',
-    504: 'Gateway Timeout',
-    505: 'HTTP Version Not Supported',
-}
-
-# maximal amount of data to read at one time in _safe_read
-MAXAMOUNT = 1048576
-
-# maximal line length when calling readline().
-_MAXLINE = 65536
-
-class HTTPMessage(mimetools.Message):
-
-    def addheader(self, key, value):
-        """Add header for field key handling repeats."""
-        prev = self.dict.get(key)
-        if prev is None:
-            self.dict[key] = value
-        else:
-            combined = ", ".join((prev, value))
-            self.dict[key] = combined
-
-    def addcontinue(self, key, more):
-        """Add more field data from a continuation line."""
-        prev = self.dict[key]
-        self.dict[key] = prev + "\n " + more
-
-    def readheaders(self):
-        """Read header lines.
-
-        Read header lines up to the entirely blank line that terminates them.
-        The (normally blank) line that ends the headers is skipped, but not
-        included in the returned list.  If a non-header line ends the headers,
-        (which is an error), an attempt is made to backspace over it; it is
-        never included in the returned list.
-
-        The variable self.status is set to the empty string if all went well,
-        otherwise it is an error message.  The variable self.headers is a
-        completely uninterpreted list of lines contained in the header (so
-        printing them will reproduce the header exactly as it appears in the
-        file).
-
-        If multiple header fields with the same name occur, they are combined
-        according to the rules in RFC 2616 sec 4.2:
-
-        Appending each subsequent field-value to the first, each separated
-        by a comma. The order in which header fields with the same field-name
-        are received is significant to the interpretation of the combined
-        field value.
-        """
-        # XXX The implementation overrides the readheaders() method of
-        # rfc822.Message.  The base class design isn't amenable to
-        # customized behavior here so the method here is a copy of the
-        # base class code with a few small changes.
-
-        self.dict = {}
-        self.unixfrom = ''
-        self.headers = hlist = []
-        self.status = ''
-        headerseen = ""
-        firstline = 1
-        startofline = unread = tell = None
-        if hasattr(self.fp, 'unread'):
-            unread = self.fp.unread
-        elif self.seekable:
-            tell = self.fp.tell
-        while True:
-            if tell:
-                try:
-                    startofline = tell()
-                except IOError:
-                    startofline = tell = None
-                    self.seekable = 0
-            line = self.fp.readline(_MAXLINE + 1)
-            if len(line) > _MAXLINE:
-                raise LineTooLong("header line")
-            if not line:
-                self.status = 'EOF in headers'
-                break
-            # Skip unix From name time lines
-            if firstline and line.startswith('From '):
-                self.unixfrom = self.unixfrom + line
-                continue
-            firstline = 0
-            if headerseen and line[0] in ' \t':
-                # XXX Not sure if continuation lines are handled properly
-                # for http and/or for repeating headers
-                # It's a continuation line.
-                hlist.append(line)
-                self.addcontinue(headerseen, line.strip())
-                continue
-            elif self.iscomment(line):
-                # It's a comment.  Ignore it.
-                continue
-            elif self.islast(line):
-                # Note! No pushback here!  The delimiter line gets eaten.
-                break
-            headerseen = self.isheader(line)
-            if headerseen:
-                # It's a legal header line, save it.
-                hlist.append(line)
-                self.addheader(headerseen, line[len(headerseen)+1:].strip())
-                continue
-            else:
-                # It's not a header line; throw it back and stop here.
-                if not self.dict:
-                    self.status = 'No headers'
-                else:
-                    self.status = 'Non-header line where header expected'
-                # Try to undo the read.
-                if unread:
-                    unread(line)
-                elif tell:
-                    self.fp.seek(startofline)
-                else:
-                    self.status = self.status + '; bad seek'
-                break
-
-class HTTPResponse:
-
-    # strict: If true, raise BadStatusLine if the status line can't be
-    # parsed as a valid HTTP/1.0 or 1.1 status line.  By default it is
-    # false because it prevents clients from talking to HTTP/0.9
-    # servers.  Note that a response with a sufficiently corrupted
-    # status line will look like an HTTP/0.9 response.
-
-    # See RFC 2616 sec 19.6 and RFC 1945 sec 6 for details.
-
-    def __init__(self, sock, debuglevel=0, strict=0, method=None, buffering=False):
-        if buffering:
-            # The caller won't be using any sock.recv() calls, so buffering
-            # is fine and recommended for performance.
-            self.fp = sock.makefile('rb')
-        else:
-            # The buffer size is specified as zero, because the headers of
-            # the response are read with readline().  If the reads were
-            # buffered the readline() calls could consume some of the
-            # response, which make be read via a recv() on the underlying
-            # socket.
-            self.fp = sock.makefile('rb', 0)
-        self.debuglevel = debuglevel
-        self.strict = strict
-        self._method = method
-
-        self.msg = None
-
-        # from the Status-Line of the response
-        self.version = _UNKNOWN # HTTP-Version
-        self.status = _UNKNOWN  # Status-Code
-        self.reason = _UNKNOWN  # Reason-Phrase
-
-        self.chunked = _UNKNOWN         # is "chunked" being used?
-        self.chunk_left = _UNKNOWN      # bytes left to read in current chunk
-        self.length = _UNKNOWN          # number of bytes left in response
-        self.will_close = _UNKNOWN      # conn will close at end of response
-
-    def _read_status(self):
-        # Initialize with Simple-Response defaults
-        line = self.fp.readline()
-        if self.debuglevel > 0:
-            print "reply:", repr(line)
-        if not line:
-            # Presumably, the server closed the connection before
-            # sending a valid response.
-            raise BadStatusLine(line)
-        try:
-            [version, status, reason] = line.split(None, 2)
-        except ValueError:
-            try:
-                [version, status] = line.split(None, 1)
-                reason = ""
-            except ValueError:
-                # empty version will cause next test to fail and status
-                # will be treated as 0.9 response.
-                version = ""
-        if not version.startswith('HTTP/'):
-            if self.strict:
-                self.close()
-                raise BadStatusLine(line)
-            else:
-                # assume it's a Simple-Response from an 0.9 server
-                self.fp = LineAndFileWrapper(line, self.fp)
-                return "HTTP/0.9", 200, ""
-
-        # The status code is a three-digit number
-        try:
-            status = int(status)
-            if status < 100 or status > 999:
-                raise BadStatusLine(line)
-        except ValueError:
-            raise BadStatusLine(line)
-        return version, status, reason
-
-    def begin(self):
-        if self.msg is not None:
-            # we've already started reading the response
-            return
-
-        # read until we get a non-100 response
-        while True:
-            version, status, reason = self._read_status()
-            if status != CONTINUE:
-                break
-            # skip the header from the 100 response
-            while True:
-                skip = self.fp.readline(_MAXLINE + 1)
-                if len(skip) > _MAXLINE:
-                    raise LineTooLong("header line")
-                skip = skip.strip()
-                if not skip:
-                    break
-                if self.debuglevel > 0:
-                    print "header:", skip
-
-        self.status = status
-        self.reason = reason.strip()
-        if version == 'HTTP/1.0':
-            self.version = 10
-        elif version.startswith('HTTP/1.'):
-            self.version = 11   # use HTTP/1.1 code for HTTP/1.x where x>=1
-        elif version == 'HTTP/0.9':
-            self.version = 9
-        else:
-            raise UnknownProtocol(version)
-
-        if self.version == 9:
-            self.length = None
-            self.chunked = 0
-            self.will_close = 1
-            self.msg = HTTPMessage(StringIO())
-            return
-
-        self.msg = HTTPMessage(self.fp, 0)
-        if self.debuglevel > 0:
-            for hdr in self.msg.headers:
-                print "header:", hdr,
-
-        # don't let the msg keep an fp
-        self.msg.fp = None
-
-        # are we using the chunked-style of transfer encoding?
-        tr_enc = self.msg.getheader('transfer-encoding')
-        if tr_enc and tr_enc.lower() == "chunked":
-            self.chunked = 1
-            self.chunk_left = None
-        else:
-            self.chunked = 0
-
-        # will the connection close at the end of the response?
-        self.will_close = self._check_close()
-
-        # do we have a Content-Length?
-        # NOTE: RFC 2616, S4.4, #3 says we ignore this if tr_enc is "chunked"
-        length = self.msg.getheader('content-length')
-        if length and not self.chunked:
-            try:
-                self.length = int(length)
-            except ValueError:
-                self.length = None
-            else:
-                if self.length < 0:  # ignore nonsensical negative lengths
-                    self.length = None
-        else:
-            self.length = None
-
-        # does the body have a fixed length? (of zero)
-        if (status == NO_CONTENT or status == NOT_MODIFIED or
-            100 <= status < 200 or      # 1xx codes
-            self._method == 'HEAD'):
-            self.length = 0
-
-        # if the connection remains open, and we aren't using chunked, and
-        # a content-length was not provided, then assume that the connection
-        # WILL close.
-        if not self.will_close and \
-           not self.chunked and \
-           self.length is None:
-            self.will_close = 1
-
-    def _check_close(self):
-        conn = self.msg.getheader('connection')
-        if self.version == 11:
-            # An HTTP/1.1 proxy is assumed to stay open unless
-            # explicitly closed.
-            conn = self.msg.getheader('connection')
-            if conn and "close" in conn.lower():
-                return True
-            return False
-
-        # Some HTTP/1.0 implementations have support for persistent
-        # connections, using rules different than HTTP/1.1.
-
-        # For older HTTP, Keep-Alive indicates persistent connection.
-        if self.msg.getheader('keep-alive'):
-            return False
-
-        # At least Akamai returns a "Connection: Keep-Alive" header,
-        # which was supposed to be sent by the client.
-        if conn and "keep-alive" in conn.lower():
-            return False
-
-        # Proxy-Connection is a netscape hack.
-        pconn = self.msg.getheader('proxy-connection')
-        if pconn and "keep-alive" in pconn.lower():
-            return False
-
-        # otherwise, assume it will close
-        return True
-
-    def close(self):
-        if self.fp:
-            self.fp.close()
-            self.fp = None
-
-    def isclosed(self):
-        # NOTE: it is possible that we will not ever call self.close(). This
-        #       case occurs when will_close is TRUE, length is None, and we
-        #       read up to the last byte, but NOT past it.
-        #
-        # IMPLIES: if will_close is FALSE, then self.close() will ALWAYS be
-        #          called, meaning self.isclosed() is meaningful.
-        return self.fp is None
-
-    # XXX It would be nice to have readline and __iter__ for this, too.
-
-    def read(self, amt=None):
-        if self.fp is None:
-            return ''
-
-        if self._method == 'HEAD':
-            self.close()
-            return ''
-
-        if self.chunked:
-            return self._read_chunked(amt)
-
-        if amt is None:
-            # unbounded read
-            if self.length is None:
-                s = self.fp.read()
-            else:
-                s = self._safe_read(self.length)
-                self.length = 0
-            self.close()        # we read everything
-            return s
-
-        if self.length is not None:
-            if amt > self.length:
-                # clip the read to the "end of response"
-                amt = self.length
-
-        # we do not use _safe_read() here because this may be a .will_close
-        # connection, and the user is reading more bytes than will be provided
-        # (for example, reading in 1k chunks)
-        s = self.fp.read(amt)
-        if self.length is not None:
-            self.length -= len(s)
-            if not self.length:
-                self.close()
-        return s
-
-    def _read_chunked(self, amt):
-        assert self.chunked != _UNKNOWN
-        chunk_left = self.chunk_left
-        value = []
-        while True:
-            if chunk_left is None:
-                line = self.fp.readline(_MAXLINE + 1)
-                if len(line) > _MAXLINE:
-                    raise LineTooLong("chunk size")
-                i = line.find(';')
-                if i >= 0:
-                    line = line[:i] # strip chunk-extensions
-                try:
-                    chunk_left = int(line, 16)
-                except ValueError:
-                    # close the connection as protocol synchronisation is
-                    # probably lost
-                    self.close()
-                    raise IncompleteRead(''.join(value))
-                if chunk_left == 0:
-                    break
-            if amt is None:
-                value.append(self._safe_read(chunk_left))
-            elif amt < chunk_left:
-                value.append(self._safe_read(amt))
-                self.chunk_left = chunk_left - amt
-                return ''.join(value)
-            elif amt == chunk_left:
-                value.append(self._safe_read(amt))
-                self._safe_read(2)  # toss the CRLF at the end of the chunk
-                self.chunk_left = None
-                return ''.join(value)
-            else:
-                value.append(self._safe_read(chunk_left))
-                amt -= chunk_left
-
-            # we read the whole chunk, get another
-            self._safe_read(2)      # toss the CRLF at the end of the chunk
-            chunk_left = None
-
-        # read and discard trailer up to the CRLF terminator
-        ### note: we shouldn't have any trailers!
-        while True:
-            line = self.fp.readline(_MAXLINE + 1)
-            if len(line) > _MAXLINE:
-                raise LineTooLong("trailer line")
-            if not line:
-                # a vanishingly small number of sites EOF without
-                # sending the trailer
-                break
-            if line == '\r\n':
-                break
-
-        # we read everything; close the "file"
-        self.close()
-
-        return ''.join(value)
-
-    def _safe_read(self, amt):
-        """Read the number of bytes requested, compensating for partial reads.
-
-        Normally, we have a blocking socket, but a read() can be interrupted
-        by a signal (resulting in a partial read).
-
-        Note that we cannot distinguish between EOF and an interrupt when zero
-        bytes have been read. IncompleteRead() will be raised in this
-        situation.
-
-        This function should be used when <amt> bytes "should" be present for
-        reading. If the bytes are truly not available (due to EOF), then the
-        IncompleteRead exception can be used to detect the problem.
-        """
-        # NOTE(gps): As of svn r74426 socket._fileobject.read(x) will never
-        # return less than x bytes unless EOF is encountered.  It now handles
-        # signal interruptions (socket.error EINTR) internally.  This code
-        # never caught that exception anyways.  It seems largely pointless.
-        # self.fp.read(amt) will work fine.
-        s = []
-        while amt > 0:
-            chunk = self.fp.read(min(amt, MAXAMOUNT))
-            if not chunk:
-                raise IncompleteRead(''.join(s), amt)
-            s.append(chunk)
-            amt -= len(chunk)
-        return ''.join(s)
-
-    def fileno(self):
-        return self.fp.fileno()
-
-    def getheader(self, name, default=None):
-        if self.msg is None:
-            raise ResponseNotReady()
-        return self.msg.getheader(name, default)
-
-    def getheaders(self):
-        """Return list of (header, value) tuples."""
-        if self.msg is None:
-            raise ResponseNotReady()
-        return self.msg.items()
-
-
-class HTTPConnection:
-
-    _http_vsn = 11
-    _http_vsn_str = 'HTTP/1.1'
-
-    response_class = HTTPResponse
-    default_port = HTTP_PORT
-    auto_open = 1
-    debuglevel = 0
-    strict = 0
-
-    def __init__(self, host, port=None, strict=None,
-                 timeout=socket._GLOBAL_DEFAULT_TIMEOUT, source_address=None):
-        self.timeout = timeout
-        self.source_address = source_address
-        self.sock = None
-        self._buffer = []
-        self.__response = None
-        self.__state = _CS_IDLE
-        self._method = None
-        self._tunnel_host = None
-        self._tunnel_port = None
-        self._tunnel_headers = {}
-
-        self._set_hostport(host, port)
-        if strict is not None:
-            self.strict = strict
-
-    def set_tunnel(self, host, port=None, headers=None):
-        """ Sets up the host and the port for the HTTP CONNECT Tunnelling.
-
-        The headers argument should be a mapping of extra HTTP headers
-        to send with the CONNECT request.
-        """
-        self._tunnel_host = host
-        self._tunnel_port = port
-        if headers:
-            self._tunnel_headers = headers
-        else:
-            self._tunnel_headers.clear()
-
-    def _set_hostport(self, host, port):
-        if port is None:
-            i = host.rfind(':')
-            j = host.rfind(']')         # ipv6 addresses have [...]
-            if i > j:
-                try:
-                    port = int(host[i+1:])
-                except ValueError:
-                    raise InvalidURL("nonnumeric port: '%s'" % host[i+1:])
-                host = host[:i]
-            else:
-                port = self.default_port
-            if host and host[0] == '[' and host[-1] == ']':
-                host = host[1:-1]
-        self.host = host
-        self.port = port
-
-    def set_debuglevel(self, level):
-        self.debuglevel = level
-
-    def _tunnel(self):
-        self._set_hostport(self._tunnel_host, self._tunnel_port)
-        self.send("CONNECT %s:%d HTTP/1.0\r\n" % (self.host, self.port))
-        for header, value in self._tunnel_headers.iteritems():
-            self.send("%s: %s\r\n" % (header, value))
-        self.send("\r\n")
-        response = self.response_class(self.sock, strict = self.strict,
-                                       method = self._method)
-        (version, code, message) = response._read_status()
-
-        if code != 200:
-            self.close()
-            raise socket.error("Tunnel connection failed: %d %s" % (code,
-                                                                    message.strip()))
-        while True:
-            line = response.fp.readline(_MAXLINE + 1)
-            if len(line) > _MAXLINE:
-                raise LineTooLong("header line")
-            if line == '\r\n': break
-
-
-    def connect(self):
-        """Connect to the host and port specified in __init__."""
-        self.sock = socket.create_connection((self.host,self.port),
-                                             self.timeout, self.source_address)
-
-        if self._tunnel_host:
-            self._tunnel()
-
-    def close(self):
-        """Close the connection to the HTTP server."""
-        if self.sock:
-            self.sock.close()   # close it manually... there may be other refs
-            self.sock = None
-        if self.__response:
-            self.__response.close()
-            self.__response = None
-        self.__state = _CS_IDLE
-
-    def send(self, data):
-        """Send `data' to the server."""
-        if self.sock is None:
-            if self.auto_open:
-                self.connect()
-            else:
-                raise NotConnected()
-
-        if self.debuglevel > 0:
-            print "send:", repr(data)
-        blocksize = 8192
-        if hasattr(data,'read') and not isinstance(data, array):
-            if self.debuglevel > 0: print "sendIng a read()able"
-            datablock = data.read(blocksize)
-            while datablock:
-                self.sock.sendall(datablock)
-                datablock = data.read(blocksize)
-        else:
-            self.sock.sendall(data)
-
-    def _output(self, s):
-        """Add a line of output to the current request buffer.
-
-        Assumes that the line does *not* end with \\r\\n.
-        """
-        self._buffer.append(s)
-
-    def _send_output(self, message_body=None):
-        """Send the currently buffered request and clear the buffer.
-
-        Appends an extra \\r\\n to the buffer.
-        A message_body may be specified, to be appended to the request.
-        """
-        self._buffer.extend(("", ""))
-        msg = "\r\n".join(self._buffer)
-        del self._buffer[:]
-        # If msg and message_body are sent in a single send() call,
-        # it will avoid performance problems caused by the interaction
-        # between delayed ack and the Nagle algorithm.
-        if isinstance(message_body, str):
-            msg += message_body
-            message_body = None
-        self.send(msg)
-        if message_body is not None:
-            #message_body was not a string (i.e. it is a file) and
-            #we must run the risk of Nagle
-            self.send(message_body)
-
-    def putrequest(self, method, url, skip_host=0, skip_accept_encoding=0):
-        """Send a request to the server.
-
-        `method' specifies an HTTP request method, e.g. 'GET'.
-        `url' specifies the object being requested, e.g. '/index.html'.
-        `skip_host' if True does not add automatically a 'Host:' header
-        `skip_accept_encoding' if True does not add automatically an
-           'Accept-Encoding:' header
-        """
-
-        # if a prior response has been completed, then forget about it.
-        if self.__response and self.__response.isclosed():
-            self.__response = None
-
-
-        # in certain cases, we cannot issue another request on this connection.
-        # this occurs when:
-        #   1) we are in the process of sending a request.   (_CS_REQ_STARTED)
-        #   2) a response to a previous request has signalled that it is going
-        #      to close the connection upon completion.
-        #   3) the headers for the previous response have not been read, thus
-        #      we cannot determine whether point (2) is true.   (_CS_REQ_SENT)
-        #
-        # if there is no prior response, then we can request at will.
-        #
-        # if point (2) is true, then we will have passed the socket to the
-        # response (effectively meaning, "there is no prior response"), and
-        # will open a new one when a new request is made.
-        #
-        # Note: if a prior response exists, then we *can* start a new request.
-        #       We are not allowed to begin fetching the response to this new
-        #       request, however, until that prior response is complete.
-        #
-        if self.__state == _CS_IDLE:
-            self.__state = _CS_REQ_STARTED
-        else:
-            raise CannotSendRequest()
-
-        # Save the method we use, we need it later in the response phase
-        self._method = method
-        if not url:
-            url = '/'
-        hdr = '%s %s %s' % (method, url, self._http_vsn_str)
-
-        self._output(hdr)
-
-        if self._http_vsn == 11:
-            # Issue some standard headers for better HTTP/1.1 compliance
-
-            if not skip_host:
-                # this header is issued *only* for HTTP/1.1
-                # connections. more specifically, this means it is
-                # only issued when the client uses the new
-                # HTTPConnection() class. backwards-compat clients
-                # will be using HTTP/1.0 and those clients may be
-                # issuing this header themselves. we should NOT issue
-                # it twice; some web servers (such as Apache) barf
-                # when they see two Host: headers
-
-                # If we need a non-standard port,include it in the
-                # header.  If the request is going through a proxy,
-                # but the host of the actual URL, not the host of the
-                # proxy.
-
-                netloc = ''
-                if url.startswith('http'):
-                    nil, netloc, nil, nil, nil = urlsplit(url)
-
-                if netloc:
-                    try:
-                        netloc_enc = netloc.encode("ascii")
-                    except UnicodeEncodeError:
-                        netloc_enc = netloc.encode("idna")
-                    self.putheader('Host', netloc_enc)
-                else:
-                    try:
-                        host_enc = self.host.encode("ascii")
-                    except UnicodeEncodeError:
-                        host_enc = self.host.encode("idna")
-                    # Wrap the IPv6 Host Header with [] (RFC 2732)
-                    if host_enc.find(':') >= 0:
-                        host_enc = "[" + host_enc + "]"
-                    if self.port == self.default_port:
-                        self.putheader('Host', host_enc)
-                    else:
-                        self.putheader('Host', "%s:%s" % (host_enc, self.port))
-
-            # note: we are assuming that clients will not attempt to set these
-            #       headers since *this* library must deal with the
-            #       consequences. this also means that when the supporting
-            #       libraries are updated to recognize other forms, then this
-            #       code should be changed (removed or updated).
-
-            # we only want a Content-Encoding of "identity" since we don't
-            # support encodings such as x-gzip or x-deflate.
-            if not skip_accept_encoding:
-                self.putheader('Accept-Encoding', 'identity')
-
-            # we can accept "chunked" Transfer-Encodings, but no others
-            # NOTE: no TE header implies *only* "chunked"
-            #self.putheader('TE', 'chunked')
-
-            # if TE is supplied in the header, then it must appear in a
-            # Connection header.
-            #self.putheader('Connection', 'TE')
-
-        else:
-            # For HTTP/1.0, the server will assume "not chunked"
-            pass
-
-    def putheader(self, header, *values):
-        """Send a request header line to the server.
-
-        For example: h.putheader('Accept', 'text/html')
-        """
-        if self.__state != _CS_REQ_STARTED:
-            raise CannotSendHeader()
-
-        hdr = '%s: %s' % (header, '\r\n\t'.join([str(v) for v in values]))
-        self._output(hdr)
-
-    def endheaders(self, message_body=None):
-        """Indicate that the last header line has been sent to the server.
-
-        This method sends the request to the server.  The optional
-        message_body argument can be used to pass message body
-        associated with the request.  The message body will be sent in
-        the same packet as the message headers if possible.  The
-        message_body should be a string.
-        """
-        if self.__state == _CS_REQ_STARTED:
-            self.__state = _CS_REQ_SENT
-        else:
-            raise CannotSendHeader()
-        self._send_output(message_body)
-
-    def request(self, method, url, body=None, headers={}):
-        """Send a complete request to the server."""
-        self._send_request(method, url, body, headers)
-
-    def _set_content_length(self, body):
-        # Set the content-length based on the body.
-        thelen = None
-        try:
-            thelen = str(len(body))
-        except TypeError, te:
-            # If this is a file-like object, try to
-            # fstat its file descriptor
-            try:
-                thelen = str(os.fstat(body.fileno()).st_size)
-            except (AttributeError, OSError):
-                # Don't send a length if this failed
-                if self.debuglevel > 0: print "Cannot stat!!"
-
-        if thelen is not None:
-            self.putheader('Content-Length', thelen)
-
-    def _send_request(self, method, url, body, headers):
-        # Honor explicitly requested Host: and Accept-Encoding: headers.
-        header_names = dict.fromkeys([k.lower() for k in headers])
-        skips = {}
-        if 'host' in header_names:
-            skips['skip_host'] = 1
-        if 'accept-encoding' in header_names:
-            skips['skip_accept_encoding'] = 1
-
-        self.putrequest(method, url, **skips)
-
-        if body and ('content-length' not in header_names):
-            self._set_content_length(body)
-        for hdr, value in headers.iteritems():
-            self.putheader(hdr, value)
-        self.endheaders(body)
-
-    def getresponse(self, buffering=False):
-        "Get the response from the server."
-
-        # if a prior response has been completed, then forget about it.
-        if self.__response and self.__response.isclosed():
-            self.__response = None
-
-        #
-        # if a prior response exists, then it must be completed (otherwise, we
-        # cannot read this response's header to determine the connection-close
-        # behavior)
-        #
-        # note: if a prior response existed, but was connection-close, then the
-        # socket and response were made independent of this HTTPConnection
-        # object since a new request requires that we open a whole new
-        # connection
-        #
-        # this means the prior response had one of two states:
-        #   1) will_close: this connection was reset and the prior socket and
-        #                  response operate independently
-        #   2) persistent: the response was retained and we await its
-        #                  isclosed() status to become true.
-        #
-        if self.__state != _CS_REQ_SENT or self.__response:
-            raise ResponseNotReady()
-
-        args = (self.sock,)
-        kwds = {"strict":self.strict, "method":self._method}
-        if self.debuglevel > 0:
-            args += (self.debuglevel,)
-        if buffering:
-            #only add this keyword if non-default, for compatibility with
-            #other response_classes.
-            kwds["buffering"] = True;
-        response = self.response_class(*args, **kwds)
-
-        response.begin()
-        assert response.will_close != _UNKNOWN
-        self.__state = _CS_IDLE
-
-        if response.will_close:
-            # this effectively passes the connection to the response
-            self.close()
-        else:
-            # remember this, so we can tell when it is complete
-            self.__response = response
-
-        return response
-
-
-class HTTP:
-    "Compatibility class with httplib.py from 1.5."
-
-    _http_vsn = 10
-    _http_vsn_str = 'HTTP/1.0'
-
-    debuglevel = 0
-
-    _connection_class = HTTPConnection
-
-    def __init__(self, host='', port=None, strict=None):
-        "Provide a default host, since the superclass requires one."
-
-        # some joker passed 0 explicitly, meaning default port
-        if port == 0:
-            port = None
-
-        # Note that we may pass an empty string as the host; this will throw
-        # an error when we attempt to connect. Presumably, the client code
-        # will call connect before then, with a proper host.
-        self._setup(self._connection_class(host, port, strict))
-
-    def _setup(self, conn):
-        self._conn = conn
-
-        # set up delegation to flesh out interface
-        self.send = conn.send
-        self.putrequest = conn.putrequest
-        self.putheader = conn.putheader
-        self.endheaders = conn.endheaders
-        self.set_debuglevel = conn.set_debuglevel
-
-        conn._http_vsn = self._http_vsn
-        conn._http_vsn_str = self._http_vsn_str
-
-        self.file = None
-
-    def connect(self, host=None, port=None):
-        "Accept arguments to set the host/port, since the superclass doesn't."
-
-        if host is not None:
-            self._conn._set_hostport(host, port)
-        self._conn.connect()
-
-    def getfile(self):
-        "Provide a getfile, since the superclass' does not use this concept."
-        return self.file
-
-    def getreply(self, buffering=False):
-        """Compat definition since superclass does not define it.
-
-        Returns a tuple consisting of:
-        - server status code (e.g. '200' if all goes well)
-        - server "reason" corresponding to status code
-        - any RFC822 headers in the response from the server
-        """
-        try:
-            if not buffering:
-                response = self._conn.getresponse()
-            else:
-                #only add this keyword if non-default for compatibility
-                #with other connection classes
-                response = self._conn.getresponse(buffering)
-        except BadStatusLine, e:
-            ### hmm. if getresponse() ever closes the socket on a bad request,
-            ### then we are going to have problems with self.sock
-
-            ### should we keep this behavior? do people use it?
-            # keep the socket open (as a file), and return it
-            self.file = self._conn.sock.makefile('rb', 0)
-
-            # close our socket -- we want to restart after any protocol error
-            self.close()
-
-            self.headers = None
-            return -1, e.line, None
-
-        self.headers = response.msg
-        self.file = response.fp
-        return response.status, response.reason, response.msg
-
-    def close(self):
-        self._conn.close()
-
-        # note that self.file == response.fp, which gets closed by the
-        # superclass. just clear the object ref here.
-        ### hmm. messy. if status==-1, then self.file is owned by us.
-        ### well... we aren't explicitly closing, but losing this ref will
-        ### do it
-        self.file = None
-
-try:
-    import ssl
-except ImportError:
-    pass
-else:
-    class HTTPSConnection(HTTPConnection):
-        "This class allows communication via SSL."
-
-        default_port = HTTPS_PORT
-
-        def __init__(self, host, port=None, key_file=None, cert_file=None,
-                     strict=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
-                     source_address=None):
-            HTTPConnection.__init__(self, host, port, strict, timeout,
-                                    source_address)
-            self.key_file = key_file
-            self.cert_file = cert_file
-
-        def connect(self):
-            "Connect to a host on a given (SSL) port."
-
-            sock = socket.create_connection((self.host, self.port),
-                                            self.timeout, self.source_address)
-            if self._tunnel_host:
-                self.sock = sock
-                self._tunnel()
-            self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file)
-
-    __all__.append("HTTPSConnection")
-
-    class HTTPS(HTTP):
-        """Compatibility with 1.5 httplib interface
-
-        Python 1.5.2 did not have an HTTPS class, but it defined an
-        interface for sending http requests that is also useful for
-        https.
-        """
-
-        _connection_class = HTTPSConnection
-
-        def __init__(self, host='', port=None, key_file=None, cert_file=None,
-                     strict=None):
-            # provide a default host, pass the X509 cert info
-
-            # urf. compensate for bad input.
-            if port == 0:
-                port = None
-            self._setup(self._connection_class(host, port, key_file,
-                                               cert_file, strict))
-
-            # we never actually use these for anything, but we keep them
-            # here for compatibility with post-1.5.2 CVS.
-            self.key_file = key_file
-            self.cert_file = cert_file
-
-
-    def FakeSocket (sock, sslobj):
-        warnings.warn("FakeSocket is deprecated, and won't be in 3.x.  " +
-                      "Use the result of ssl.wrap_socket() directly instead.",
-                      DeprecationWarning, stacklevel=2)
-        return sslobj
-
-
-class HTTPException(Exception):
-    # Subclasses that define an __init__ must call Exception.__init__
-    # or define self.args.  Otherwise, str() will fail.
-    pass
-
-class NotConnected(HTTPException):
-    pass
-
-class InvalidURL(HTTPException):
-    pass
-
-class UnknownProtocol(HTTPException):
-    def __init__(self, version):
-        self.args = version,
-        self.version = version
-
-class UnknownTransferEncoding(HTTPException):
-    pass
-
-class UnimplementedFileMode(HTTPException):
-    pass
-
-class IncompleteRead(HTTPException):
-    def __init__(self, partial, expected=None):
-        self.args = partial,
-        self.partial = partial
-        self.expected = expected
-    def __repr__(self):
-        if self.expected is not None:
-            e = ', %i more expected' % self.expected
-        else:
-            e = ''
-        return 'IncompleteRead(%i bytes read%s)' % (len(self.partial), e)
-    def __str__(self):
-        return repr(self)
-
-class ImproperConnectionState(HTTPException):
-    pass
-
-class CannotSendRequest(ImproperConnectionState):
-    pass
-
-class CannotSendHeader(ImproperConnectionState):
-    pass
-
-class ResponseNotReady(ImproperConnectionState):
-    pass
-
-class BadStatusLine(HTTPException):
-    def __init__(self, line):
-        if not line:
-            line = repr(line)
-        self.args = line,
-        self.line = line
-
-class LineTooLong(HTTPException):
-    def __init__(self, line_type):
-        HTTPException.__init__(self, "got more than %d bytes when reading %s"
-                                     % (_MAXLINE, line_type))
-
-# for backwards compatibility
-error = HTTPException
-
-class LineAndFileWrapper:
-    """A limited file-like object for HTTP/0.9 responses."""
-
-    # The status-line parsing code calls readline(), which normally
-    # get the HTTP status line.  For a 0.9 response, however, this is
-    # actually the first line of the body!  Clients need to get a
-    # readable file object that contains that line.
-
-    def __init__(self, line, file):
-        self._line = line
-        self._file = file
-        self._line_consumed = 0
-        self._line_offset = 0
-        self._line_left = len(line)
-
-    def __getattr__(self, attr):
-        return getattr(self._file, attr)
-
-    def _done(self):
-        # called when the last byte is read from the line.  After the
-        # call, all read methods are delegated to the underlying file
-        # object.
-        self._line_consumed = 1
-        self.read = self._file.read
-        self.readline = self._file.readline
-        self.readlines = self._file.readlines
-
-    def read(self, amt=None):
-        if self._line_consumed:
-            return self._file.read(amt)
-        assert self._line_left
-        if amt is None or amt > self._line_left:
-            s = self._line[self._line_offset:]
-            self._done()
-            if amt is None:
-                return s + self._file.read()
-            else:
-                return s + self._file.read(amt - len(s))
-        else:
-            assert amt <= self._line_left
-            i = self._line_offset
-            j = i + amt
-            s = self._line[i:j]
-            self._line_offset = j
-            self._line_left -= amt
-            if self._line_left == 0:
-                self._done()
-            return s
-
-    def readline(self):
-        if self._line_consumed:
-            return self._file.readline()
-        assert self._line_left
-        s = self._line[self._line_offset:]
-        self._done()
-        return s
-
-    def readlines(self, size=None):
-        if self._line_consumed:
-            return self._file.readlines(size)
-        assert self._line_left
-        L = [self._line[self._line_offset:]]
-        self._done()
-        if size is None:
-            return L + self._file.readlines()
-        else:
-            return L + self._file.readlines(size)
-
-def test():
-    """Test this module.
-
-    A hodge podge of tests collected here, because they have too many
-    external dependencies for the regular test suite.
-    """
-
-    import sys
-    import getopt
-    opts, args = getopt.getopt(sys.argv[1:], 'd')
-    dl = 0
-    for o, a in opts:
-        if o == '-d': dl = dl + 1
-    host = 'www.python.org'
-    selector = '/'
-    if args[0:]: host = args[0]
-    if args[1:]: selector = args[1]
-    h = HTTP()
-    h.set_debuglevel(dl)
-    h.connect(host)
-    h.putrequest('GET', selector)
-    h.endheaders()
-    status, reason, headers = h.getreply()
-    print 'status =', status
-    print 'reason =', reason
-    print "read", len(h.getfile().read())
-    print
-    if headers:
-        for header in headers.headers: print header.strip()
-    print
-
-    # minimal test that code to extract host from url works
-    class HTTP11(HTTP):
-        _http_vsn = 11
-        _http_vsn_str = 'HTTP/1.1'
-
-    h = HTTP11('www.python.org')
-    h.putrequest('GET', 'http://www.python.org/~jeremy/')
-    h.endheaders()
-    h.getreply()
-    h.close()
-
-    try:
-        import ssl
-    except ImportError:
-        pass
-    else:
-
-        for host, selector in (('sourceforge.net', '/projects/python'),
-                               ):
-            print "https://%s%s" % (host, selector)
-            hs = HTTPS()
-            hs.set_debuglevel(dl)
-            hs.connect(host)
-            hs.putrequest('GET', selector)
-            hs.endheaders()
-            status, reason, headers = hs.getreply()
-            print 'status =', status
-            print 'reason =', reason
-            print "read", len(hs.getfile().read())
-            print
-            if headers:
-                for header in headers.headers: print header.strip()
-            print
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/ihooks.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/ihooks.py
deleted file mode 100644
index 6f1a7eb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/ihooks.py
+++ /dev/null
@@ -1,554 +0,0 @@
-"""Import hook support.
-
-Consistent use of this module will make it possible to change the
-different mechanisms involved in loading modules independently.
-
-While the built-in module imp exports interfaces to the built-in
-module searching and loading algorithm, and it is possible to replace
-the built-in function __import__ in order to change the semantics of
-the import statement, until now it has been difficult to combine the
-effect of different __import__ hacks, like loading modules from URLs
-by rimport.py, or restricted execution by rexec.py.
-
-This module defines three new concepts:
-
-1) A "file system hooks" class provides an interface to a filesystem.
-
-One hooks class is defined (Hooks), which uses the interface provided
-by standard modules os and os.path.  It should be used as the base
-class for other hooks classes.
-
-2) A "module loader" class provides an interface to search for a
-module in a search path and to load it.  It defines a method which
-searches for a module in a single directory; by overriding this method
-one can redefine the details of the search.  If the directory is None,
-built-in and frozen modules are searched instead.
-
-Two module loader class are defined, both implementing the search
-strategy used by the built-in __import__ function: ModuleLoader uses
-the imp module's find_module interface, while HookableModuleLoader
-uses a file system hooks class to interact with the file system.  Both
-use the imp module's load_* interfaces to actually load the module.
-
-3) A "module importer" class provides an interface to import a
-module, as well as interfaces to reload and unload a module.  It also
-provides interfaces to install and uninstall itself instead of the
-default __import__ and reload (and unload) functions.
-
-One module importer class is defined (ModuleImporter), which uses a
-module loader instance passed in (by default HookableModuleLoader is
-instantiated).
-
-The classes defined here should be used as base classes for extended
-functionality along those lines.
-
-If a module importer class supports dotted names, its import_module()
-must return a different value depending on whether it is called on
-behalf of a "from ... import ..." statement or not.  (This is caused
-by the way the __import__ hook is used by the Python interpreter.)  It
-would also do wise to install a different version of reload().
-
-"""
-from warnings import warnpy3k, warn
-warnpy3k("the ihooks module has been removed in Python 3.0", stacklevel=2)
-del warnpy3k
-
-import __builtin__
-import imp
-import os
-import sys
-
-__all__ = ["BasicModuleLoader","Hooks","ModuleLoader","FancyModuleLoader",
-           "BasicModuleImporter","ModuleImporter","install","uninstall"]
-
-VERBOSE = 0
-
-
-from imp import C_EXTENSION, PY_SOURCE, PY_COMPILED
-from imp import C_BUILTIN, PY_FROZEN, PKG_DIRECTORY
-BUILTIN_MODULE = C_BUILTIN
-FROZEN_MODULE = PY_FROZEN
-
-
-class _Verbose:
-
-    def __init__(self, verbose = VERBOSE):
-        self.verbose = verbose
-
-    def get_verbose(self):
-        return self.verbose
-
-    def set_verbose(self, verbose):
-        self.verbose = verbose
-
-    # XXX The following is an experimental interface
-
-    def note(self, *args):
-        if self.verbose:
-            self.message(*args)
-
-    def message(self, format, *args):
-        if args:
-            print format%args
-        else:
-            print format
-
-
-class BasicModuleLoader(_Verbose):
-
-    """Basic module loader.
-
-    This provides the same functionality as built-in import.  It
-    doesn't deal with checking sys.modules -- all it provides is
-    find_module() and a load_module(), as well as find_module_in_dir()
-    which searches just one directory, and can be overridden by a
-    derived class to change the module search algorithm when the basic
-    dependency on sys.path is unchanged.
-
-    The interface is a little more convenient than imp's:
-    find_module(name, [path]) returns None or 'stuff', and
-    load_module(name, stuff) loads the module.
-
-    """
-
-    def find_module(self, name, path = None):
-        if path is None:
-            path = [None] + self.default_path()
-        for dir in path:
-            stuff = self.find_module_in_dir(name, dir)
-            if stuff: return stuff
-        return None
-
-    def default_path(self):
-        return sys.path
-
-    def find_module_in_dir(self, name, dir):
-        if dir is None:
-            return self.find_builtin_module(name)
-        else:
-            try:
-                return imp.find_module(name, [dir])
-            except ImportError:
-                return None
-
-    def find_builtin_module(self, name):
-        # XXX frozen packages?
-        if imp.is_builtin(name):
-            return None, '', ('', '', BUILTIN_MODULE)
-        if imp.is_frozen(name):
-            return None, '', ('', '', FROZEN_MODULE)
-        return None
-
-    def load_module(self, name, stuff):
-        file, filename, info = stuff
-        try:
-            return imp.load_module(name, file, filename, info)
-        finally:
-            if file: file.close()
-
-
-class Hooks(_Verbose):
-
-    """Hooks into the filesystem and interpreter.
-
-    By deriving a subclass you can redefine your filesystem interface,
-    e.g. to merge it with the URL space.
-
-    This base class behaves just like the native filesystem.
-
-    """
-
-    # imp interface
-    def get_suffixes(self): return imp.get_suffixes()
-    def new_module(self, name): return imp.new_module(name)
-    def is_builtin(self, name): return imp.is_builtin(name)
-    def init_builtin(self, name): return imp.init_builtin(name)
-    def is_frozen(self, name): return imp.is_frozen(name)
-    def init_frozen(self, name): return imp.init_frozen(name)
-    def get_frozen_object(self, name): return imp.get_frozen_object(name)
-    def load_source(self, name, filename, file=None):
-        return imp.load_source(name, filename, file)
-    def load_compiled(self, name, filename, file=None):
-        return imp.load_compiled(name, filename, file)
-    def load_dynamic(self, name, filename, file=None):
-        return imp.load_dynamic(name, filename, file)
-    def load_package(self, name, filename, file=None):
-        return imp.load_module(name, file, filename, ("", "", PKG_DIRECTORY))
-
-    def add_module(self, name):
-        d = self.modules_dict()
-        if name in d: return d[name]
-        d[name] = m = self.new_module(name)
-        return m
-
-    # sys interface
-    def modules_dict(self): return sys.modules
-    def default_path(self): return sys.path
-
-    def path_split(self, x): return os.path.split(x)
-    def path_join(self, x, y): return os.path.join(x, y)
-    def path_isabs(self, x): return os.path.isabs(x)
-    # etc.
-
-    def path_exists(self, x): return os.path.exists(x)
-    def path_isdir(self, x): return os.path.isdir(x)
-    def path_isfile(self, x): return os.path.isfile(x)
-    def path_islink(self, x): return os.path.islink(x)
-    # etc.
-
-    def openfile(self, *x): return open(*x)
-    openfile_error = IOError
-    def listdir(self, x): return os.listdir(x)
-    listdir_error = os.error
-    # etc.
-
-
-class ModuleLoader(BasicModuleLoader):
-
-    """Default module loader; uses file system hooks.
-
-    By defining suitable hooks, you might be able to load modules from
-    other sources than the file system, e.g. from compressed or
-    encrypted files, tar files or (if you're brave!) URLs.
-
-    """
-
-    def __init__(self, hooks = None, verbose = VERBOSE):
-        BasicModuleLoader.__init__(self, verbose)
-        self.hooks = hooks or Hooks(verbose)
-
-    def default_path(self):
-        return self.hooks.default_path()
-
-    def modules_dict(self):
-        return self.hooks.modules_dict()
-
-    def get_hooks(self):
-        return self.hooks
-
-    def set_hooks(self, hooks):
-        self.hooks = hooks
-
-    def find_builtin_module(self, name):
-        # XXX frozen packages?
-        if self.hooks.is_builtin(name):
-            return None, '', ('', '', BUILTIN_MODULE)
-        if self.hooks.is_frozen(name):
-            return None, '', ('', '', FROZEN_MODULE)
-        return None
-
-    def find_module_in_dir(self, name, dir, allow_packages=1):
-        if dir is None:
-            return self.find_builtin_module(name)
-        if allow_packages:
-            fullname = self.hooks.path_join(dir, name)
-            if self.hooks.path_isdir(fullname):
-                stuff = self.find_module_in_dir("__init__", fullname, 0)
-                if stuff:
-                    file = stuff[0]
-                    if file: file.close()
-                    return None, fullname, ('', '', PKG_DIRECTORY)
-        for info in self.hooks.get_suffixes():
-            suff, mode, type = info
-            fullname = self.hooks.path_join(dir, name+suff)
-            try:
-                fp = self.hooks.openfile(fullname, mode)
-                return fp, fullname, info
-            except self.hooks.openfile_error:
-                pass
-        return None
-
-    def load_module(self, name, stuff):
-        file, filename, info = stuff
-        (suff, mode, type) = info
-        try:
-            if type == BUILTIN_MODULE:
-                return self.hooks.init_builtin(name)
-            if type == FROZEN_MODULE:
-                return self.hooks.init_frozen(name)
-            if type == C_EXTENSION:
-                m = self.hooks.load_dynamic(name, filename, file)
-            elif type == PY_SOURCE:
-                m = self.hooks.load_source(name, filename, file)
-            elif type == PY_COMPILED:
-                m = self.hooks.load_compiled(name, filename, file)
-            elif type == PKG_DIRECTORY:
-                m = self.hooks.load_package(name, filename, file)
-            else:
-                raise ImportError, "Unrecognized module type (%r) for %s" % \
-                      (type, name)
-        finally:
-            if file: file.close()
-        m.__file__ = filename
-        return m
-
-
-class FancyModuleLoader(ModuleLoader):
-
-    """Fancy module loader -- parses and execs the code itself."""
-
-    def load_module(self, name, stuff):
-        file, filename, (suff, mode, type) = stuff
-        realfilename = filename
-        path = None
-
-        if type == PKG_DIRECTORY:
-            initstuff = self.find_module_in_dir("__init__", filename, 0)
-            if not initstuff:
-                raise ImportError, "No __init__ module in package %s" % name
-            initfile, initfilename, initinfo = initstuff
-            initsuff, initmode, inittype = initinfo
-            if inittype not in (PY_COMPILED, PY_SOURCE):
-                if initfile: initfile.close()
-                raise ImportError, \
-                    "Bad type (%r) for __init__ module in package %s" % (
-                    inittype, name)
-            path = [filename]
-            file = initfile
-            realfilename = initfilename
-            type = inittype
-
-        if type == FROZEN_MODULE:
-            code = self.hooks.get_frozen_object(name)
-        elif type == PY_COMPILED:
-            import marshal
-            file.seek(8)
-            code = marshal.load(file)
-        elif type == PY_SOURCE:
-            data = file.read()
-            code = compile(data, realfilename, 'exec')
-        else:
-            return ModuleLoader.load_module(self, name, stuff)
-
-        m = self.hooks.add_module(name)
-        if path:
-            m.__path__ = path
-        m.__file__ = filename
-        try:
-            exec code in m.__dict__
-        except:
-            d = self.hooks.modules_dict()
-            if name in d:
-                del d[name]
-            raise
-        return m
-
-
-class BasicModuleImporter(_Verbose):
-
-    """Basic module importer; uses module loader.
-
-    This provides basic import facilities but no package imports.
-
-    """
-
-    def __init__(self, loader = None, verbose = VERBOSE):
-        _Verbose.__init__(self, verbose)
-        self.loader = loader or ModuleLoader(None, verbose)
-        self.modules = self.loader.modules_dict()
-
-    def get_loader(self):
-        return self.loader
-
-    def set_loader(self, loader):
-        self.loader = loader
-
-    def get_hooks(self):
-        return self.loader.get_hooks()
-
-    def set_hooks(self, hooks):
-        return self.loader.set_hooks(hooks)
-
-    def import_module(self, name, globals={}, locals={}, fromlist=[]):
-        name = str(name)
-        if name in self.modules:
-            return self.modules[name] # Fast path
-        stuff = self.loader.find_module(name)
-        if not stuff:
-            raise ImportError, "No module named %s" % name
-        return self.loader.load_module(name, stuff)
-
-    def reload(self, module, path = None):
-        name = str(module.__name__)
-        stuff = self.loader.find_module(name, path)
-        if not stuff:
-            raise ImportError, "Module %s not found for reload" % name
-        return self.loader.load_module(name, stuff)
-
-    def unload(self, module):
-        del self.modules[str(module.__name__)]
-        # XXX Should this try to clear the module's namespace?
-
-    def install(self):
-        self.save_import_module = __builtin__.__import__
-        self.save_reload = __builtin__.reload
-        if not hasattr(__builtin__, 'unload'):
-            __builtin__.unload = None
-        self.save_unload = __builtin__.unload
-        __builtin__.__import__ = self.import_module
-        __builtin__.reload = self.reload
-        __builtin__.unload = self.unload
-
-    def uninstall(self):
-        __builtin__.__import__ = self.save_import_module
-        __builtin__.reload = self.save_reload
-        __builtin__.unload = self.save_unload
-        if not __builtin__.unload:
-            del __builtin__.unload
-
-
-class ModuleImporter(BasicModuleImporter):
-
-    """A module importer that supports packages."""
-
-    def import_module(self, name, globals=None, locals=None, fromlist=None,
-                      level=-1):
-        parent = self.determine_parent(globals, level)
-        q, tail = self.find_head_package(parent, str(name))
-        m = self.load_tail(q, tail)
-        if not fromlist:
-            return q
-        if hasattr(m, "__path__"):
-            self.ensure_fromlist(m, fromlist)
-        return m
-
-    def determine_parent(self, globals, level=-1):
-        if not globals or not level:
-            return None
-        pkgname = globals.get('__package__')
-        if pkgname is not None:
-            if not pkgname and level > 0:
-                raise ValueError, 'Attempted relative import in non-package'
-        else:
-            # __package__ not set, figure it out and set it
-            modname = globals.get('__name__')
-            if modname is None:
-                return None
-            if "__path__" in globals:
-                # __path__ is set so modname is already the package name
-                pkgname = modname
-            else:
-                # normal module, work out package name if any
-                if '.' not in modname:
-                    if level > 0:
-                        raise ValueError, ('Attempted relative import in '
-                                           'non-package')
-                    globals['__package__'] = None
-                    return None
-                pkgname = modname.rpartition('.')[0]
-            globals['__package__'] = pkgname
-        if level > 0:
-            dot = len(pkgname)
-            for x in range(level, 1, -1):
-                try:
-                    dot = pkgname.rindex('.', 0, dot)
-                except ValueError:
-                    raise ValueError('attempted relative import beyond '
-                                     'top-level package')
-            pkgname = pkgname[:dot]
-        try:
-            return sys.modules[pkgname]
-        except KeyError:
-            if level < 1:
-                warn("Parent module '%s' not found while handling "
-                     "absolute import" % pkgname, RuntimeWarning, 1)
-                return None
-            else:
-                raise SystemError, ("Parent module '%s' not loaded, cannot "
-                                    "perform relative import" % pkgname)
-
-    def find_head_package(self, parent, name):
-        if '.' in name:
-            i = name.find('.')
-            head = name[:i]
-            tail = name[i+1:]
-        else:
-            head = name
-            tail = ""
-        if parent:
-            qname = "%s.%s" % (parent.__name__, head)
-        else:
-            qname = head
-        q = self.import_it(head, qname, parent)
-        if q: return q, tail
-        if parent:
-            qname = head
-            parent = None
-            q = self.import_it(head, qname, parent)
-            if q: return q, tail
-        raise ImportError, "No module named '%s'" % qname
-
-    def load_tail(self, q, tail):
-        m = q
-        while tail:
-            i = tail.find('.')
-            if i < 0: i = len(tail)
-            head, tail = tail[:i], tail[i+1:]
-            mname = "%s.%s" % (m.__name__, head)
-            m = self.import_it(head, mname, m)
-            if not m:
-                raise ImportError, "No module named '%s'" % mname
-        return m
-
-    def ensure_fromlist(self, m, fromlist, recursive=0):
-        for sub in fromlist:
-            if sub == "*":
-                if not recursive:
-                    try:
-                        all = m.__all__
-                    except AttributeError:
-                        pass
-                    else:
-                        self.ensure_fromlist(m, all, 1)
-                continue
-            if sub != "*" and not hasattr(m, sub):
-                subname = "%s.%s" % (m.__name__, sub)
-                submod = self.import_it(sub, subname, m)
-                if not submod:
-                    raise ImportError, "No module named '%s'" % subname
-
-    def import_it(self, partname, fqname, parent, force_load=0):
-        if not partname:
-            # completely empty module name should only happen in
-            # 'from . import' or __import__("")
-            return parent
-        if not force_load:
-            try:
-                return self.modules[fqname]
-            except KeyError:
-                pass
-        try:
-            path = parent and parent.__path__
-        except AttributeError:
-            return None
-        partname = str(partname)
-        stuff = self.loader.find_module(partname, path)
-        if not stuff:
-            return None
-        fqname = str(fqname)
-        m = self.loader.load_module(fqname, stuff)
-        if parent:
-            setattr(parent, partname, m)
-        return m
-
-    def reload(self, module):
-        name = str(module.__name__)
-        if '.' not in name:
-            return self.import_it(name, name, None, force_load=1)
-        i = name.rfind('.')
-        pname = name[:i]
-        parent = self.modules[pname]
-        return self.import_it(name[i+1:], name, parent, force_load=1)
-
-
-default_importer = None
-current_importer = None
-
-def install(importer = None):
-    global current_importer
-    current_importer = importer or default_importer or ModuleImporter()
-    current_importer.install()
-
-def uninstall():
-    global current_importer
-    current_importer.uninstall()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/imaplib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/imaplib.py
deleted file mode 100644
index a8d7625..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/imaplib.py
+++ /dev/null
@@ -1,1518 +0,0 @@
-"""IMAP4 client.
-
-Based on RFC 2060.
-
-Public class:           IMAP4
-Public variable:        Debug
-Public functions:       Internaldate2tuple
-                        Int2AP
-                        ParseFlags
-                        Time2Internaldate
-"""
-
-# Author: Piers Lauder <piers@cs.su.oz.au> December 1997.
-#
-# Authentication code contributed by Donn Cave <donn@u.washington.edu> June 1998.
-# String method conversion by ESR, February 2001.
-# GET/SETACL contributed by Anthony Baxter <anthony@interlink.com.au> April 2001.
-# IMAP4_SSL contributed by Tino Lange <Tino.Lange@isg.de> March 2002.
-# GET/SETQUOTA contributed by Andreas Zeidler <az@kreativkombinat.de> June 2002.
-# PROXYAUTH contributed by Rick Holbert <holbert.13@osu.edu> November 2002.
-# GET/SETANNOTATION contributed by Tomas Lindroos <skitta@abo.fi> June 2005.
-
-__version__ = "2.58"
-
-import binascii, errno, random, re, socket, subprocess, sys, time
-
-__all__ = ["IMAP4", "IMAP4_stream", "Internaldate2tuple",
-           "Int2AP", "ParseFlags", "Time2Internaldate"]
-
-#       Globals
-
-CRLF = '\r\n'
-Debug = 0
-IMAP4_PORT = 143
-IMAP4_SSL_PORT = 993
-AllowedVersions = ('IMAP4REV1', 'IMAP4')        # Most recent first
-
-#       Commands
-
-Commands = {
-        # name            valid states
-        'APPEND':       ('AUTH', 'SELECTED'),
-        'AUTHENTICATE': ('NONAUTH',),
-        'CAPABILITY':   ('NONAUTH', 'AUTH', 'SELECTED', 'LOGOUT'),
-        'CHECK':        ('SELECTED',),
-        'CLOSE':        ('SELECTED',),
-        'COPY':         ('SELECTED',),
-        'CREATE':       ('AUTH', 'SELECTED'),
-        'DELETE':       ('AUTH', 'SELECTED'),
-        'DELETEACL':    ('AUTH', 'SELECTED'),
-        'EXAMINE':      ('AUTH', 'SELECTED'),
-        'EXPUNGE':      ('SELECTED',),
-        'FETCH':        ('SELECTED',),
-        'GETACL':       ('AUTH', 'SELECTED'),
-        'GETANNOTATION':('AUTH', 'SELECTED'),
-        'GETQUOTA':     ('AUTH', 'SELECTED'),
-        'GETQUOTAROOT': ('AUTH', 'SELECTED'),
-        'MYRIGHTS':     ('AUTH', 'SELECTED'),
-        'LIST':         ('AUTH', 'SELECTED'),
-        'LOGIN':        ('NONAUTH',),
-        'LOGOUT':       ('NONAUTH', 'AUTH', 'SELECTED', 'LOGOUT'),
-        'LSUB':         ('AUTH', 'SELECTED'),
-        'NAMESPACE':    ('AUTH', 'SELECTED'),
-        'NOOP':         ('NONAUTH', 'AUTH', 'SELECTED', 'LOGOUT'),
-        'PARTIAL':      ('SELECTED',),                                  # NB: obsolete
-        'PROXYAUTH':    ('AUTH',),
-        'RENAME':       ('AUTH', 'SELECTED'),
-        'SEARCH':       ('SELECTED',),
-        'SELECT':       ('AUTH', 'SELECTED'),
-        'SETACL':       ('AUTH', 'SELECTED'),
-        'SETANNOTATION':('AUTH', 'SELECTED'),
-        'SETQUOTA':     ('AUTH', 'SELECTED'),
-        'SORT':         ('SELECTED',),
-        'STATUS':       ('AUTH', 'SELECTED'),
-        'STORE':        ('SELECTED',),
-        'SUBSCRIBE':    ('AUTH', 'SELECTED'),
-        'THREAD':       ('SELECTED',),
-        'UID':          ('SELECTED',),
-        'UNSUBSCRIBE':  ('AUTH', 'SELECTED'),
-        }
-
-#       Patterns to match server responses
-
-Continuation = re.compile(r'\+( (?P<data>.*))?')
-Flags = re.compile(r'.*FLAGS \((?P<flags>[^\)]*)\)')
-InternalDate = re.compile(r'.*INTERNALDATE "'
-        r'(?P<day>[ 0123][0-9])-(?P<mon>[A-Z][a-z][a-z])-(?P<year>[0-9][0-9][0-9][0-9])'
-        r' (?P<hour>[0-9][0-9]):(?P<min>[0-9][0-9]):(?P<sec>[0-9][0-9])'
-        r' (?P<zonen>[-+])(?P<zoneh>[0-9][0-9])(?P<zonem>[0-9][0-9])'
-        r'"')
-Literal = re.compile(r'.*{(?P<size>\d+)}$')
-MapCRLF = re.compile(r'\r\n|\r|\n')
-Response_code = re.compile(r'\[(?P<type>[A-Z-]+)( (?P<data>[^\]]*))?\]')
-Untagged_response = re.compile(r'\* (?P<type>[A-Z-]+)( (?P<data>.*))?')
-Untagged_status = re.compile(r'\* (?P<data>\d+) (?P<type>[A-Z-]+)( (?P<data2>.*))?')
-
-
-
-class IMAP4:
-
-    """IMAP4 client class.
-
-    Instantiate with: IMAP4([host[, port]])
-
-            host - host's name (default: localhost);
-            port - port number (default: standard IMAP4 port).
-
-    All IMAP4rev1 commands are supported by methods of the same
-    name (in lower-case).
-
-    All arguments to commands are converted to strings, except for
-    AUTHENTICATE, and the last argument to APPEND which is passed as
-    an IMAP4 literal.  If necessary (the string contains any
-    non-printing characters or white-space and isn't enclosed with
-    either parentheses or double quotes) each string is quoted.
-    However, the 'password' argument to the LOGIN command is always
-    quoted.  If you want to avoid having an argument string quoted
-    (eg: the 'flags' argument to STORE) then enclose the string in
-    parentheses (eg: "(\Deleted)").
-
-    Each command returns a tuple: (type, [data, ...]) where 'type'
-    is usually 'OK' or 'NO', and 'data' is either the text from the
-    tagged response, or untagged results from command. Each 'data'
-    is either a string, or a tuple. If a tuple, then the first part
-    is the header of the response, and the second part contains
-    the data (ie: 'literal' value).
-
-    Errors raise the exception class <instance>.error("<reason>").
-    IMAP4 server errors raise <instance>.abort("<reason>"),
-    which is a sub-class of 'error'. Mailbox status changes
-    from READ-WRITE to READ-ONLY raise the exception class
-    <instance>.readonly("<reason>"), which is a sub-class of 'abort'.
-
-    "error" exceptions imply a program error.
-    "abort" exceptions imply the connection should be reset, and
-            the command re-tried.
-    "readonly" exceptions imply the command should be re-tried.
-
-    Note: to use this module, you must read the RFCs pertaining to the
-    IMAP4 protocol, as the semantics of the arguments to each IMAP4
-    command are left to the invoker, not to mention the results. Also,
-    most IMAP servers implement a sub-set of the commands available here.
-    """
-
-    class error(Exception): pass    # Logical errors - debug required
-    class abort(error): pass        # Service errors - close and retry
-    class readonly(abort): pass     # Mailbox status changed to READ-ONLY
-
-    mustquote = re.compile(r"[^\w!#$%&'*+,.:;<=>?^`|~-]")
-
-    def __init__(self, host = '', port = IMAP4_PORT):
-        self.debug = Debug
-        self.state = 'LOGOUT'
-        self.literal = None             # A literal argument to a command
-        self.tagged_commands = {}       # Tagged commands awaiting response
-        self.untagged_responses = {}    # {typ: [data, ...], ...}
-        self.continuation_response = '' # Last continuation response
-        self.is_readonly = False        # READ-ONLY desired state
-        self.tagnum = 0
-
-        # Open socket to server.
-
-        self.open(host, port)
-
-        # Create unique tag for this session,
-        # and compile tagged response matcher.
-
-        self.tagpre = Int2AP(random.randint(4096, 65535))
-        self.tagre = re.compile(r'(?P<tag>'
-                        + self.tagpre
-                        + r'\d+) (?P<type>[A-Z]+) (?P<data>.*)')
-
-        # Get server welcome message,
-        # request and store CAPABILITY response.
-
-        if __debug__:
-            self._cmd_log_len = 10
-            self._cmd_log_idx = 0
-            self._cmd_log = {}           # Last `_cmd_log_len' interactions
-            if self.debug >= 1:
-                self._mesg('imaplib version %s' % __version__)
-                self._mesg('new IMAP4 connection, tag=%s' % self.tagpre)
-
-        self.welcome = self._get_response()
-        if 'PREAUTH' in self.untagged_responses:
-            self.state = 'AUTH'
-        elif 'OK' in self.untagged_responses:
-            self.state = 'NONAUTH'
-        else:
-            raise self.error(self.welcome)
-
-        typ, dat = self.capability()
-        if dat == [None]:
-            raise self.error('no CAPABILITY response from server')
-        self.capabilities = tuple(dat[-1].upper().split())
-
-        if __debug__:
-            if self.debug >= 3:
-                self._mesg('CAPABILITIES: %r' % (self.capabilities,))
-
-        for version in AllowedVersions:
-            if not version in self.capabilities:
-                continue
-            self.PROTOCOL_VERSION = version
-            return
-
-        raise self.error('server not IMAP4 compliant')
-
-
-    def __getattr__(self, attr):
-        #       Allow UPPERCASE variants of IMAP4 command methods.
-        if attr in Commands:
-            return getattr(self, attr.lower())
-        raise AttributeError("Unknown IMAP4 command: '%s'" % attr)
-
-
-
-    #       Overridable methods
-
-
-    def open(self, host = '', port = IMAP4_PORT):
-        """Setup connection to remote server on "host:port"
-            (default: localhost:standard IMAP4 port).
-        This connection will be used by the routines:
-            read, readline, send, shutdown.
-        """
-        self.host = host
-        self.port = port
-        self.sock = socket.create_connection((host, port))
-        self.file = self.sock.makefile('rb')
-
-
-    def read(self, size):
-        """Read 'size' bytes from remote."""
-        return self.file.read(size)
-
-
-    def readline(self):
-        """Read line from remote."""
-        return self.file.readline()
-
-
-    def send(self, data):
-        """Send data to remote."""
-        self.sock.sendall(data)
-
-
-    def shutdown(self):
-        """Close I/O established in "open"."""
-        self.file.close()
-        try:
-            self.sock.shutdown(socket.SHUT_RDWR)
-        except socket.error as e:
-            # The server might already have closed the connection
-            if e.errno != errno.ENOTCONN:
-                raise
-        finally:
-            self.sock.close()
-
-
-    def socket(self):
-        """Return socket instance used to connect to IMAP4 server.
-
-        socket = <instance>.socket()
-        """
-        return self.sock
-
-
-
-    #       Utility methods
-
-
-    def recent(self):
-        """Return most recent 'RECENT' responses if any exist,
-        else prompt server for an update using the 'NOOP' command.
-
-        (typ, [data]) = <instance>.recent()
-
-        'data' is None if no new messages,
-        else list of RECENT responses, most recent last.
-        """
-        name = 'RECENT'
-        typ, dat = self._untagged_response('OK', [None], name)
-        if dat[-1]:
-            return typ, dat
-        typ, dat = self.noop()  # Prod server for response
-        return self._untagged_response(typ, dat, name)
-
-
-    def response(self, code):
-        """Return data for response 'code' if received, or None.
-
-        Old value for response 'code' is cleared.
-
-        (code, [data]) = <instance>.response(code)
-        """
-        return self._untagged_response(code, [None], code.upper())
-
-
-
-    #       IMAP4 commands
-
-
-    def append(self, mailbox, flags, date_time, message):
-        """Append message to named mailbox.
-
-        (typ, [data]) = <instance>.append(mailbox, flags, date_time, message)
-
-                All args except `message' can be None.
-        """
-        name = 'APPEND'
-        if not mailbox:
-            mailbox = 'INBOX'
-        if flags:
-            if (flags[0],flags[-1]) != ('(',')'):
-                flags = '(%s)' % flags
-        else:
-            flags = None
-        if date_time:
-            date_time = Time2Internaldate(date_time)
-        else:
-            date_time = None
-        self.literal = MapCRLF.sub(CRLF, message)
-        return self._simple_command(name, mailbox, flags, date_time)
-
-
-    def authenticate(self, mechanism, authobject):
-        """Authenticate command - requires response processing.
-
-        'mechanism' specifies which authentication mechanism is to
-        be used - it must appear in <instance>.capabilities in the
-        form AUTH=<mechanism>.
-
-        'authobject' must be a callable object:
-
-                data = authobject(response)
-
-        It will be called to process server continuation responses.
-        It should return data that will be encoded and sent to server.
-        It should return None if the client abort response '*' should
-        be sent instead.
-        """
-        mech = mechanism.upper()
-        # XXX: shouldn't this code be removed, not commented out?
-        #cap = 'AUTH=%s' % mech
-        #if not cap in self.capabilities:       # Let the server decide!
-        #    raise self.error("Server doesn't allow %s authentication." % mech)
-        self.literal = _Authenticator(authobject).process
-        typ, dat = self._simple_command('AUTHENTICATE', mech)
-        if typ != 'OK':
-            raise self.error(dat[-1])
-        self.state = 'AUTH'
-        return typ, dat
-
-
-    def capability(self):
-        """(typ, [data]) = <instance>.capability()
-        Fetch capabilities list from server."""
-
-        name = 'CAPABILITY'
-        typ, dat = self._simple_command(name)
-        return self._untagged_response(typ, dat, name)
-
-
-    def check(self):
-        """Checkpoint mailbox on server.
-
-        (typ, [data]) = <instance>.check()
-        """
-        return self._simple_command('CHECK')
-
-
-    def close(self):
-        """Close currently selected mailbox.
-
-        Deleted messages are removed from writable mailbox.
-        This is the recommended command before 'LOGOUT'.
-
-        (typ, [data]) = <instance>.close()
-        """
-        try:
-            typ, dat = self._simple_command('CLOSE')
-        finally:
-            self.state = 'AUTH'
-        return typ, dat
-
-
-    def copy(self, message_set, new_mailbox):
-        """Copy 'message_set' messages onto end of 'new_mailbox'.
-
-        (typ, [data]) = <instance>.copy(message_set, new_mailbox)
-        """
-        return self._simple_command('COPY', message_set, new_mailbox)
-
-
-    def create(self, mailbox):
-        """Create new mailbox.
-
-        (typ, [data]) = <instance>.create(mailbox)
-        """
-        return self._simple_command('CREATE', mailbox)
-
-
-    def delete(self, mailbox):
-        """Delete old mailbox.
-
-        (typ, [data]) = <instance>.delete(mailbox)
-        """
-        return self._simple_command('DELETE', mailbox)
-
-    def deleteacl(self, mailbox, who):
-        """Delete the ACLs (remove any rights) set for who on mailbox.
-
-        (typ, [data]) = <instance>.deleteacl(mailbox, who)
-        """
-        return self._simple_command('DELETEACL', mailbox, who)
-
-    def expunge(self):
-        """Permanently remove deleted items from selected mailbox.
-
-        Generates 'EXPUNGE' response for each deleted message.
-
-        (typ, [data]) = <instance>.expunge()
-
-        'data' is list of 'EXPUNGE'd message numbers in order received.
-        """
-        name = 'EXPUNGE'
-        typ, dat = self._simple_command(name)
-        return self._untagged_response(typ, dat, name)
-
-
-    def fetch(self, message_set, message_parts):
-        """Fetch (parts of) messages.
-
-        (typ, [data, ...]) = <instance>.fetch(message_set, message_parts)
-
-        'message_parts' should be a string of selected parts
-        enclosed in parentheses, eg: "(UID BODY[TEXT])".
-
-        'data' are tuples of message part envelope and data.
-        """
-        name = 'FETCH'
-        typ, dat = self._simple_command(name, message_set, message_parts)
-        return self._untagged_response(typ, dat, name)
-
-
-    def getacl(self, mailbox):
-        """Get the ACLs for a mailbox.
-
-        (typ, [data]) = <instance>.getacl(mailbox)
-        """
-        typ, dat = self._simple_command('GETACL', mailbox)
-        return self._untagged_response(typ, dat, 'ACL')
-
-
-    def getannotation(self, mailbox, entry, attribute):
-        """(typ, [data]) = <instance>.getannotation(mailbox, entry, attribute)
-        Retrieve ANNOTATIONs."""
-
-        typ, dat = self._simple_command('GETANNOTATION', mailbox, entry, attribute)
-        return self._untagged_response(typ, dat, 'ANNOTATION')
-
-
-    def getquota(self, root):
-        """Get the quota root's resource usage and limits.
-
-        Part of the IMAP4 QUOTA extension defined in rfc2087.
-
-        (typ, [data]) = <instance>.getquota(root)
-        """
-        typ, dat = self._simple_command('GETQUOTA', root)
-        return self._untagged_response(typ, dat, 'QUOTA')
-
-
-    def getquotaroot(self, mailbox):
-        """Get the list of quota roots for the named mailbox.
-
-        (typ, [[QUOTAROOT responses...], [QUOTA responses]]) = <instance>.getquotaroot(mailbox)
-        """
-        typ, dat = self._simple_command('GETQUOTAROOT', mailbox)
-        typ, quota = self._untagged_response(typ, dat, 'QUOTA')
-        typ, quotaroot = self._untagged_response(typ, dat, 'QUOTAROOT')
-        return typ, [quotaroot, quota]
-
-
-    def list(self, directory='""', pattern='*'):
-        """List mailbox names in directory matching pattern.
-
-        (typ, [data]) = <instance>.list(directory='""', pattern='*')
-
-        'data' is list of LIST responses.
-        """
-        name = 'LIST'
-        typ, dat = self._simple_command(name, directory, pattern)
-        return self._untagged_response(typ, dat, name)
-
-
-    def login(self, user, password):
-        """Identify client using plaintext password.
-
-        (typ, [data]) = <instance>.login(user, password)
-
-        NB: 'password' will be quoted.
-        """
-        typ, dat = self._simple_command('LOGIN', user, self._quote(password))
-        if typ != 'OK':
-            raise self.error(dat[-1])
-        self.state = 'AUTH'
-        return typ, dat
-
-
-    def login_cram_md5(self, user, password):
-        """ Force use of CRAM-MD5 authentication.
-
-        (typ, [data]) = <instance>.login_cram_md5(user, password)
-        """
-        self.user, self.password = user, password
-        return self.authenticate('CRAM-MD5', self._CRAM_MD5_AUTH)
-
-
-    def _CRAM_MD5_AUTH(self, challenge):
-        """ Authobject to use with CRAM-MD5 authentication. """
-        import hmac
-        return self.user + " " + hmac.HMAC(self.password, challenge).hexdigest()
-
-
-    def logout(self):
-        """Shutdown connection to server.
-
-        (typ, [data]) = <instance>.logout()
-
-        Returns server 'BYE' response.
-        """
-        self.state = 'LOGOUT'
-        try: typ, dat = self._simple_command('LOGOUT')
-        except: typ, dat = 'NO', ['%s: %s' % sys.exc_info()[:2]]
-        self.shutdown()
-        if 'BYE' in self.untagged_responses:
-            return 'BYE', self.untagged_responses['BYE']
-        return typ, dat
-
-
-    def lsub(self, directory='""', pattern='*'):
-        """List 'subscribed' mailbox names in directory matching pattern.
-
-        (typ, [data, ...]) = <instance>.lsub(directory='""', pattern='*')
-
-        'data' are tuples of message part envelope and data.
-        """
-        name = 'LSUB'
-        typ, dat = self._simple_command(name, directory, pattern)
-        return self._untagged_response(typ, dat, name)
-
-    def myrights(self, mailbox):
-        """Show my ACLs for a mailbox (i.e. the rights that I have on mailbox).
-
-        (typ, [data]) = <instance>.myrights(mailbox)
-        """
-        typ,dat = self._simple_command('MYRIGHTS', mailbox)
-        return self._untagged_response(typ, dat, 'MYRIGHTS')
-
-    def namespace(self):
-        """ Returns IMAP namespaces ala rfc2342
-
-        (typ, [data, ...]) = <instance>.namespace()
-        """
-        name = 'NAMESPACE'
-        typ, dat = self._simple_command(name)
-        return self._untagged_response(typ, dat, name)
-
-
-    def noop(self):
-        """Send NOOP command.
-
-        (typ, [data]) = <instance>.noop()
-        """
-        if __debug__:
-            if self.debug >= 3:
-                self._dump_ur(self.untagged_responses)
-        return self._simple_command('NOOP')
-
-
-    def partial(self, message_num, message_part, start, length):
-        """Fetch truncated part of a message.
-
-        (typ, [data, ...]) = <instance>.partial(message_num, message_part, start, length)
-
-        'data' is tuple of message part envelope and data.
-        """
-        name = 'PARTIAL'
-        typ, dat = self._simple_command(name, message_num, message_part, start, length)
-        return self._untagged_response(typ, dat, 'FETCH')
-
-
-    def proxyauth(self, user):
-        """Assume authentication as "user".
-
-        Allows an authorised administrator to proxy into any user's
-        mailbox.
-
-        (typ, [data]) = <instance>.proxyauth(user)
-        """
-
-        name = 'PROXYAUTH'
-        return self._simple_command('PROXYAUTH', user)
-
-
-    def rename(self, oldmailbox, newmailbox):
-        """Rename old mailbox name to new.
-
-        (typ, [data]) = <instance>.rename(oldmailbox, newmailbox)
-        """
-        return self._simple_command('RENAME', oldmailbox, newmailbox)
-
-
-    def search(self, charset, *criteria):
-        """Search mailbox for matching messages.
-
-        (typ, [data]) = <instance>.search(charset, criterion, ...)
-
-        'data' is space separated list of matching message numbers.
-        """
-        name = 'SEARCH'
-        if charset:
-            typ, dat = self._simple_command(name, 'CHARSET', charset, *criteria)
-        else:
-            typ, dat = self._simple_command(name, *criteria)
-        return self._untagged_response(typ, dat, name)
-
-
-    def select(self, mailbox='INBOX', readonly=False):
-        """Select a mailbox.
-
-        Flush all untagged responses.
-
-        (typ, [data]) = <instance>.select(mailbox='INBOX', readonly=False)
-
-        'data' is count of messages in mailbox ('EXISTS' response).
-
-        Mandated responses are ('FLAGS', 'EXISTS', 'RECENT', 'UIDVALIDITY'), so
-        other responses should be obtained via <instance>.response('FLAGS') etc.
-        """
-        self.untagged_responses = {}    # Flush old responses.
-        self.is_readonly = readonly
-        if readonly:
-            name = 'EXAMINE'
-        else:
-            name = 'SELECT'
-        typ, dat = self._simple_command(name, mailbox)
-        if typ != 'OK':
-            self.state = 'AUTH'     # Might have been 'SELECTED'
-            return typ, dat
-        self.state = 'SELECTED'
-        if 'READ-ONLY' in self.untagged_responses \
-                and not readonly:
-            if __debug__:
-                if self.debug >= 1:
-                    self._dump_ur(self.untagged_responses)
-            raise self.readonly('%s is not writable' % mailbox)
-        return typ, self.untagged_responses.get('EXISTS', [None])
-
-
-    def setacl(self, mailbox, who, what):
-        """Set a mailbox acl.
-
-        (typ, [data]) = <instance>.setacl(mailbox, who, what)
-        """
-        return self._simple_command('SETACL', mailbox, who, what)
-
-
-    def setannotation(self, *args):
-        """(typ, [data]) = <instance>.setannotation(mailbox[, entry, attribute]+)
-        Set ANNOTATIONs."""
-
-        typ, dat = self._simple_command('SETANNOTATION', *args)
-        return self._untagged_response(typ, dat, 'ANNOTATION')
-
-
-    def setquota(self, root, limits):
-        """Set the quota root's resource limits.
-
-        (typ, [data]) = <instance>.setquota(root, limits)
-        """
-        typ, dat = self._simple_command('SETQUOTA', root, limits)
-        return self._untagged_response(typ, dat, 'QUOTA')
-
-
-    def sort(self, sort_criteria, charset, *search_criteria):
-        """IMAP4rev1 extension SORT command.
-
-        (typ, [data]) = <instance>.sort(sort_criteria, charset, search_criteria, ...)
-        """
-        name = 'SORT'
-        #if not name in self.capabilities:      # Let the server decide!
-        #       raise self.error('unimplemented extension command: %s' % name)
-        if (sort_criteria[0],sort_criteria[-1]) != ('(',')'):
-            sort_criteria = '(%s)' % sort_criteria
-        typ, dat = self._simple_command(name, sort_criteria, charset, *search_criteria)
-        return self._untagged_response(typ, dat, name)
-
-
-    def status(self, mailbox, names):
-        """Request named status conditions for mailbox.
-
-        (typ, [data]) = <instance>.status(mailbox, names)
-        """
-        name = 'STATUS'
-        #if self.PROTOCOL_VERSION == 'IMAP4':   # Let the server decide!
-        #    raise self.error('%s unimplemented in IMAP4 (obtain IMAP4rev1 server, or re-code)' % name)
-        typ, dat = self._simple_command(name, mailbox, names)
-        return self._untagged_response(typ, dat, name)
-
-
-    def store(self, message_set, command, flags):
-        """Alters flag dispositions for messages in mailbox.
-
-        (typ, [data]) = <instance>.store(message_set, command, flags)
-        """
-        if (flags[0],flags[-1]) != ('(',')'):
-            flags = '(%s)' % flags  # Avoid quoting the flags
-        typ, dat = self._simple_command('STORE', message_set, command, flags)
-        return self._untagged_response(typ, dat, 'FETCH')
-
-
-    def subscribe(self, mailbox):
-        """Subscribe to new mailbox.
-
-        (typ, [data]) = <instance>.subscribe(mailbox)
-        """
-        return self._simple_command('SUBSCRIBE', mailbox)
-
-
-    def thread(self, threading_algorithm, charset, *search_criteria):
-        """IMAPrev1 extension THREAD command.
-
-        (type, [data]) = <instance>.thread(threading_algorithm, charset, search_criteria, ...)
-        """
-        name = 'THREAD'
-        typ, dat = self._simple_command(name, threading_algorithm, charset, *search_criteria)
-        return self._untagged_response(typ, dat, name)
-
-
-    def uid(self, command, *args):
-        """Execute "command arg ..." with messages identified by UID,
-                rather than message number.
-
-        (typ, [data]) = <instance>.uid(command, arg1, arg2, ...)
-
-        Returns response appropriate to 'command'.
-        """
-        command = command.upper()
-        if not command in Commands:
-            raise self.error("Unknown IMAP4 UID command: %s" % command)
-        if self.state not in Commands[command]:
-            raise self.error("command %s illegal in state %s, "
-                             "only allowed in states %s" %
-                             (command, self.state,
-                              ', '.join(Commands[command])))
-        name = 'UID'
-        typ, dat = self._simple_command(name, command, *args)
-        if command in ('SEARCH', 'SORT', 'THREAD'):
-            name = command
-        else:
-            name = 'FETCH'
-        return self._untagged_response(typ, dat, name)
-
-
-    def unsubscribe(self, mailbox):
-        """Unsubscribe from old mailbox.
-
-        (typ, [data]) = <instance>.unsubscribe(mailbox)
-        """
-        return self._simple_command('UNSUBSCRIBE', mailbox)
-
-
-    def xatom(self, name, *args):
-        """Allow simple extension commands
-                notified by server in CAPABILITY response.
-
-        Assumes command is legal in current state.
-
-        (typ, [data]) = <instance>.xatom(name, arg, ...)
-
-        Returns response appropriate to extension command `name'.
-        """
-        name = name.upper()
-        #if not name in self.capabilities:      # Let the server decide!
-        #    raise self.error('unknown extension command: %s' % name)
-        if not name in Commands:
-            Commands[name] = (self.state,)
-        return self._simple_command(name, *args)
-
-
-
-    #       Private methods
-
-
-    def _append_untagged(self, typ, dat):
-
-        if dat is None: dat = ''
-        ur = self.untagged_responses
-        if __debug__:
-            if self.debug >= 5:
-                self._mesg('untagged_responses[%s] %s += ["%s"]' %
-                        (typ, len(ur.get(typ,'')), dat))
-        if typ in ur:
-            ur[typ].append(dat)
-        else:
-            ur[typ] = [dat]
-
-
-    def _check_bye(self):
-        bye = self.untagged_responses.get('BYE')
-        if bye:
-            raise self.abort(bye[-1])
-
-
-    def _command(self, name, *args):
-
-        if self.state not in Commands[name]:
-            self.literal = None
-            raise self.error("command %s illegal in state %s, "
-                             "only allowed in states %s" %
-                             (name, self.state,
-                              ', '.join(Commands[name])))
-
-        for typ in ('OK', 'NO', 'BAD'):
-            if typ in self.untagged_responses:
-                del self.untagged_responses[typ]
-
-        if 'READ-ONLY' in self.untagged_responses \
-        and not self.is_readonly:
-            raise self.readonly('mailbox status changed to READ-ONLY')
-
-        tag = self._new_tag()
-        data = '%s %s' % (tag, name)
-        for arg in args:
-            if arg is None: continue
-            data = '%s %s' % (data, self._checkquote(arg))
-
-        literal = self.literal
-        if literal is not None:
-            self.literal = None
-            if type(literal) is type(self._command):
-                literator = literal
-            else:
-                literator = None
-                data = '%s {%s}' % (data, len(literal))
-
-        if __debug__:
-            if self.debug >= 4:
-                self._mesg('> %s' % data)
-            else:
-                self._log('> %s' % data)
-
-        try:
-            self.send('%s%s' % (data, CRLF))
-        except (socket.error, OSError), val:
-            raise self.abort('socket error: %s' % val)
-
-        if literal is None:
-            return tag
-
-        while 1:
-            # Wait for continuation response
-
-            while self._get_response():
-                if self.tagged_commands[tag]:   # BAD/NO?
-                    return tag
-
-            # Send literal
-
-            if literator:
-                literal = literator(self.continuation_response)
-
-            if __debug__:
-                if self.debug >= 4:
-                    self._mesg('write literal size %s' % len(literal))
-
-            try:
-                self.send(literal)
-                self.send(CRLF)
-            except (socket.error, OSError), val:
-                raise self.abort('socket error: %s' % val)
-
-            if not literator:
-                break
-
-        return tag
-
-
-    def _command_complete(self, name, tag):
-        # BYE is expected after LOGOUT
-        if name != 'LOGOUT':
-            self._check_bye()
-        try:
-            typ, data = self._get_tagged_response(tag)
-        except self.abort, val:
-            raise self.abort('command: %s => %s' % (name, val))
-        except self.error, val:
-            raise self.error('command: %s => %s' % (name, val))
-        if name != 'LOGOUT':
-            self._check_bye()
-        if typ == 'BAD':
-            raise self.error('%s command error: %s %s' % (name, typ, data))
-        return typ, data
-
-
-    def _get_response(self):
-
-        # Read response and store.
-        #
-        # Returns None for continuation responses,
-        # otherwise first response line received.
-
-        resp = self._get_line()
-
-        # Command completion response?
-
-        if self._match(self.tagre, resp):
-            tag = self.mo.group('tag')
-            if not tag in self.tagged_commands:
-                raise self.abort('unexpected tagged response: %s' % resp)
-
-            typ = self.mo.group('type')
-            dat = self.mo.group('data')
-            self.tagged_commands[tag] = (typ, [dat])
-        else:
-            dat2 = None
-
-            # '*' (untagged) responses?
-
-            if not self._match(Untagged_response, resp):
-                if self._match(Untagged_status, resp):
-                    dat2 = self.mo.group('data2')
-
-            if self.mo is None:
-                # Only other possibility is '+' (continuation) response...
-
-                if self._match(Continuation, resp):
-                    self.continuation_response = self.mo.group('data')
-                    return None     # NB: indicates continuation
-
-                raise self.abort("unexpected response: '%s'" % resp)
-
-            typ = self.mo.group('type')
-            dat = self.mo.group('data')
-            if dat is None: dat = ''        # Null untagged response
-            if dat2: dat = dat + ' ' + dat2
-
-            # Is there a literal to come?
-
-            while self._match(Literal, dat):
-
-                # Read literal direct from connection.
-
-                size = int(self.mo.group('size'))
-                if __debug__:
-                    if self.debug >= 4:
-                        self._mesg('read literal size %s' % size)
-                data = self.read(size)
-
-                # Store response with literal as tuple
-
-                self._append_untagged(typ, (dat, data))
-
-                # Read trailer - possibly containing another literal
-
-                dat = self._get_line()
-
-            self._append_untagged(typ, dat)
-
-        # Bracketed response information?
-
-        if typ in ('OK', 'NO', 'BAD') and self._match(Response_code, dat):
-            self._append_untagged(self.mo.group('type'), self.mo.group('data'))
-
-        if __debug__:
-            if self.debug >= 1 and typ in ('NO', 'BAD', 'BYE'):
-                self._mesg('%s response: %s' % (typ, dat))
-
-        return resp
-
-
-    def _get_tagged_response(self, tag):
-
-        while 1:
-            result = self.tagged_commands[tag]
-            if result is not None:
-                del self.tagged_commands[tag]
-                return result
-
-            # Some have reported "unexpected response" exceptions.
-            # Note that ignoring them here causes loops.
-            # Instead, send me details of the unexpected response and
-            # I'll update the code in `_get_response()'.
-
-            try:
-                self._get_response()
-            except self.abort, val:
-                if __debug__:
-                    if self.debug >= 1:
-                        self.print_log()
-                raise
-
-
-    def _get_line(self):
-
-        line = self.readline()
-        if not line:
-            raise self.abort('socket error: EOF')
-
-        # Protocol mandates all lines terminated by CRLF
-        if not line.endswith('\r\n'):
-            raise self.abort('socket error: unterminated line')
-
-        line = line[:-2]
-        if __debug__:
-            if self.debug >= 4:
-                self._mesg('< %s' % line)
-            else:
-                self._log('< %s' % line)
-        return line
-
-
-    def _match(self, cre, s):
-
-        # Run compiled regular expression match method on 's'.
-        # Save result, return success.
-
-        self.mo = cre.match(s)
-        if __debug__:
-            if self.mo is not None and self.debug >= 5:
-                self._mesg("\tmatched r'%s' => %r" % (cre.pattern, self.mo.groups()))
-        return self.mo is not None
-
-
-    def _new_tag(self):
-
-        tag = '%s%s' % (self.tagpre, self.tagnum)
-        self.tagnum = self.tagnum + 1
-        self.tagged_commands[tag] = None
-        return tag
-
-
-    def _checkquote(self, arg):
-
-        # Must quote command args if non-alphanumeric chars present,
-        # and not already quoted.
-
-        if type(arg) is not type(''):
-            return arg
-        if len(arg) >= 2 and (arg[0],arg[-1]) in (('(',')'),('"','"')):
-            return arg
-        if arg and self.mustquote.search(arg) is None:
-            return arg
-        return self._quote(arg)
-
-
-    def _quote(self, arg):
-
-        arg = arg.replace('\\', '\\\\')
-        arg = arg.replace('"', '\\"')
-
-        return '"%s"' % arg
-
-
-    def _simple_command(self, name, *args):
-
-        return self._command_complete(name, self._command(name, *args))
-
-
-    def _untagged_response(self, typ, dat, name):
-
-        if typ == 'NO':
-            return typ, dat
-        if not name in self.untagged_responses:
-            return typ, [None]
-        data = self.untagged_responses.pop(name)
-        if __debug__:
-            if self.debug >= 5:
-                self._mesg('untagged_responses[%s] => %s' % (name, data))
-        return typ, data
-
-
-    if __debug__:
-
-        def _mesg(self, s, secs=None):
-            if secs is None:
-                secs = time.time()
-            tm = time.strftime('%M:%S', time.localtime(secs))
-            sys.stderr.write('  %s.%02d %s\n' % (tm, (secs*100)%100, s))
-            sys.stderr.flush()
-
-        def _dump_ur(self, dict):
-            # Dump untagged responses (in `dict').
-            l = dict.items()
-            if not l: return
-            t = '\n\t\t'
-            l = map(lambda x:'%s: "%s"' % (x[0], x[1][0] and '" "'.join(x[1]) or ''), l)
-            self._mesg('untagged responses dump:%s%s' % (t, t.join(l)))
-
-        def _log(self, line):
-            # Keep log of last `_cmd_log_len' interactions for debugging.
-            self._cmd_log[self._cmd_log_idx] = (line, time.time())
-            self._cmd_log_idx += 1
-            if self._cmd_log_idx >= self._cmd_log_len:
-                self._cmd_log_idx = 0
-
-        def print_log(self):
-            self._mesg('last %d IMAP4 interactions:' % len(self._cmd_log))
-            i, n = self._cmd_log_idx, self._cmd_log_len
-            while n:
-                try:
-                    self._mesg(*self._cmd_log[i])
-                except:
-                    pass
-                i += 1
-                if i >= self._cmd_log_len:
-                    i = 0
-                n -= 1
-
-
-
-try:
-    import ssl
-except ImportError:
-    pass
-else:
-    class IMAP4_SSL(IMAP4):
-
-        """IMAP4 client class over SSL connection
-
-        Instantiate with: IMAP4_SSL([host[, port[, keyfile[, certfile]]]])
-
-                host - host's name (default: localhost);
-                port - port number (default: standard IMAP4 SSL port).
-                keyfile - PEM formatted file that contains your private key (default: None);
-                certfile - PEM formatted certificate chain file (default: None);
-
-        for more documentation see the docstring of the parent class IMAP4.
-        """
-
-
-        def __init__(self, host = '', port = IMAP4_SSL_PORT, keyfile = None, certfile = None):
-            self.keyfile = keyfile
-            self.certfile = certfile
-            IMAP4.__init__(self, host, port)
-
-
-        def open(self, host = '', port = IMAP4_SSL_PORT):
-            """Setup connection to remote server on "host:port".
-                (default: localhost:standard IMAP4 SSL port).
-            This connection will be used by the routines:
-                read, readline, send, shutdown.
-            """
-            self.host = host
-            self.port = port
-            self.sock = socket.create_connection((host, port))
-            self.sslobj = ssl.wrap_socket(self.sock, self.keyfile, self.certfile)
-            self.file = self.sslobj.makefile('rb')
-
-
-        def read(self, size):
-            """Read 'size' bytes from remote."""
-            return self.file.read(size)
-
-
-        def readline(self):
-            """Read line from remote."""
-            return self.file.readline()
-
-
-        def send(self, data):
-            """Send data to remote."""
-            bytes = len(data)
-            while bytes > 0:
-                sent = self.sslobj.write(data)
-                if sent == bytes:
-                    break    # avoid copy
-                data = data[sent:]
-                bytes = bytes - sent
-
-
-        def shutdown(self):
-            """Close I/O established in "open"."""
-            self.file.close()
-            self.sock.close()
-
-
-        def socket(self):
-            """Return socket instance used to connect to IMAP4 server.
-
-            socket = <instance>.socket()
-            """
-            return self.sock
-
-
-        def ssl(self):
-            """Return SSLObject instance used to communicate with the IMAP4 server.
-
-            ssl = ssl.wrap_socket(<instance>.socket)
-            """
-            return self.sslobj
-
-    __all__.append("IMAP4_SSL")
-
-
-class IMAP4_stream(IMAP4):
-
-    """IMAP4 client class over a stream
-
-    Instantiate with: IMAP4_stream(command)
-
-            where "command" is a string that can be passed to subprocess.Popen()
-
-    for more documentation see the docstring of the parent class IMAP4.
-    """
-
-
-    def __init__(self, command):
-        self.command = command
-        IMAP4.__init__(self)
-
-
-    def open(self, host = None, port = None):
-        """Setup a stream connection.
-        This connection will be used by the routines:
-            read, readline, send, shutdown.
-        """
-        self.host = None        # For compatibility with parent class
-        self.port = None
-        self.sock = None
-        self.file = None
-        self.process = subprocess.Popen(self.command,
-            stdin=subprocess.PIPE, stdout=subprocess.PIPE,
-            shell=True, close_fds=True)
-        self.writefile = self.process.stdin
-        self.readfile = self.process.stdout
-
-
-    def read(self, size):
-        """Read 'size' bytes from remote."""
-        return self.readfile.read(size)
-
-
-    def readline(self):
-        """Read line from remote."""
-        return self.readfile.readline()
-
-
-    def send(self, data):
-        """Send data to remote."""
-        self.writefile.write(data)
-        self.writefile.flush()
-
-
-    def shutdown(self):
-        """Close I/O established in "open"."""
-        self.readfile.close()
-        self.writefile.close()
-        self.process.wait()
-
-
-
-class _Authenticator:
-
-    """Private class to provide en/decoding
-            for base64-based authentication conversation.
-    """
-
-    def __init__(self, mechinst):
-        self.mech = mechinst    # Callable object to provide/process data
-
-    def process(self, data):
-        ret = self.mech(self.decode(data))
-        if ret is None:
-            return '*'      # Abort conversation
-        return self.encode(ret)
-
-    def encode(self, inp):
-        #
-        #  Invoke binascii.b2a_base64 iteratively with
-        #  short even length buffers, strip the trailing
-        #  line feed from the result and append.  "Even"
-        #  means a number that factors to both 6 and 8,
-        #  so when it gets to the end of the 8-bit input
-        #  there's no partial 6-bit output.
-        #
-        oup = ''
-        while inp:
-            if len(inp) > 48:
-                t = inp[:48]
-                inp = inp[48:]
-            else:
-                t = inp
-                inp = ''
-            e = binascii.b2a_base64(t)
-            if e:
-                oup = oup + e[:-1]
-        return oup
-
-    def decode(self, inp):
-        if not inp:
-            return ''
-        return binascii.a2b_base64(inp)
-
-
-
-Mon2num = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,
-        'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}
-
-def Internaldate2tuple(resp):
-    """Parse an IMAP4 INTERNALDATE string.
-
-    Return corresponding local time.  The return value is a
-    time.struct_time instance or None if the string has wrong format.
-    """
-
-    mo = InternalDate.match(resp)
-    if not mo:
-        return None
-
-    mon = Mon2num[mo.group('mon')]
-    zonen = mo.group('zonen')
-
-    day = int(mo.group('day'))
-    year = int(mo.group('year'))
-    hour = int(mo.group('hour'))
-    min = int(mo.group('min'))
-    sec = int(mo.group('sec'))
-    zoneh = int(mo.group('zoneh'))
-    zonem = int(mo.group('zonem'))
-
-    # INTERNALDATE timezone must be subtracted to get UT
-
-    zone = (zoneh*60 + zonem)*60
-    if zonen == '-':
-        zone = -zone
-
-    tt = (year, mon, day, hour, min, sec, -1, -1, -1)
-
-    utc = time.mktime(tt)
-
-    # Following is necessary because the time module has no 'mkgmtime'.
-    # 'mktime' assumes arg in local timezone, so adds timezone/altzone.
-
-    lt = time.localtime(utc)
-    if time.daylight and lt[-1]:
-        zone = zone + time.altzone
-    else:
-        zone = zone + time.timezone
-
-    return time.localtime(utc - zone)
-
-
-
-def Int2AP(num):
-
-    """Convert integer to A-P string representation."""
-
-    val = ''; AP = 'ABCDEFGHIJKLMNOP'
-    num = int(abs(num))
-    while num:
-        num, mod = divmod(num, 16)
-        val = AP[mod] + val
-    return val
-
-
-
-def ParseFlags(resp):
-
-    """Convert IMAP4 flags response to python tuple."""
-
-    mo = Flags.match(resp)
-    if not mo:
-        return ()
-
-    return tuple(mo.group('flags').split())
-
-
-def Time2Internaldate(date_time):
-
-    """Convert date_time to IMAP4 INTERNALDATE representation.
-
-    Return string in form: '"DD-Mmm-YYYY HH:MM:SS +HHMM"'.  The
-    date_time argument can be a number (int or float) representing
-    seconds since epoch (as returned by time.time()), a 9-tuple
-    representing local time (as returned by time.localtime()), or a
-    double-quoted string.  In the last case, it is assumed to already
-    be in the correct format.
-    """
-
-    if isinstance(date_time, (int, float)):
-        tt = time.localtime(date_time)
-    elif isinstance(date_time, (tuple, time.struct_time)):
-        tt = date_time
-    elif isinstance(date_time, str) and (date_time[0],date_time[-1]) == ('"','"'):
-        return date_time        # Assume in correct format
-    else:
-        raise ValueError("date_time not of a known type")
-
-    dt = time.strftime("%d-%b-%Y %H:%M:%S", tt)
-    if dt[0] == '0':
-        dt = ' ' + dt[1:]
-    if time.daylight and tt[-1]:
-        zone = -time.altzone
-    else:
-        zone = -time.timezone
-    return '"' + dt + " %+03d%02d" % divmod(zone//60, 60) + '"'
-
-
-
-if __name__ == '__main__':
-
-    # To test: invoke either as 'python imaplib.py [IMAP4_server_hostname]'
-    # or 'python imaplib.py -s "rsh IMAP4_server_hostname exec /etc/rimapd"'
-    # to test the IMAP4_stream class
-
-    import getopt, getpass
-
-    try:
-        optlist, args = getopt.getopt(sys.argv[1:], 'd:s:')
-    except getopt.error, val:
-        optlist, args = (), ()
-
-    stream_command = None
-    for opt,val in optlist:
-        if opt == '-d':
-            Debug = int(val)
-        elif opt == '-s':
-            stream_command = val
-            if not args: args = (stream_command,)
-
-    if not args: args = ('',)
-
-    host = args[0]
-
-    USER = getpass.getuser()
-    PASSWD = getpass.getpass("IMAP password for %s on %s: " % (USER, host or "localhost"))
-
-    test_mesg = 'From: %(user)s@localhost%(lf)sSubject: IMAP4 test%(lf)s%(lf)sdata...%(lf)s' % {'user':USER, 'lf':'\n'}
-    test_seq1 = (
-    ('login', (USER, PASSWD)),
-    ('create', ('/tmp/xxx 1',)),
-    ('rename', ('/tmp/xxx 1', '/tmp/yyy')),
-    ('CREATE', ('/tmp/yyz 2',)),
-    ('append', ('/tmp/yyz 2', None, None, test_mesg)),
-    ('list', ('/tmp', 'yy*')),
-    ('select', ('/tmp/yyz 2',)),
-    ('search', (None, 'SUBJECT', 'test')),
-    ('fetch', ('1', '(FLAGS INTERNALDATE RFC822)')),
-    ('store', ('1', 'FLAGS', '(\Deleted)')),
-    ('namespace', ()),
-    ('expunge', ()),
-    ('recent', ()),
-    ('close', ()),
-    )
-
-    test_seq2 = (
-    ('select', ()),
-    ('response',('UIDVALIDITY',)),
-    ('uid', ('SEARCH', 'ALL')),
-    ('response', ('EXISTS',)),
-    ('append', (None, None, None, test_mesg)),
-    ('recent', ()),
-    ('logout', ()),
-    )
-
-    def run(cmd, args):
-        M._mesg('%s %s' % (cmd, args))
-        typ, dat = getattr(M, cmd)(*args)
-        M._mesg('%s => %s %s' % (cmd, typ, dat))
-        if typ == 'NO': raise dat[0]
-        return dat
-
-    try:
-        if stream_command:
-            M = IMAP4_stream(stream_command)
-        else:
-            M = IMAP4(host)
-        if M.state == 'AUTH':
-            test_seq1 = test_seq1[1:]   # Login not needed
-        M._mesg('PROTOCOL_VERSION = %s' % M.PROTOCOL_VERSION)
-        M._mesg('CAPABILITIES = %r' % (M.capabilities,))
-
-        for cmd,args in test_seq1:
-            run(cmd, args)
-
-        for ml in run('list', ('/tmp/', 'yy%')):
-            mo = re.match(r'.*"([^"]+)"$', ml)
-            if mo: path = mo.group(1)
-            else: path = ml.split()[-1]
-            run('delete', (path,))
-
-        for cmd,args in test_seq2:
-            dat = run(cmd, args)
-
-            if (cmd,args) != ('uid', ('SEARCH', 'ALL')):
-                continue
-
-            uid = dat[-1].split()
-            if not uid: continue
-            run('uid', ('FETCH', '%s' % uid[-1],
-                    '(FLAGS INTERNALDATE RFC822.SIZE RFC822.HEADER RFC822.TEXT)'))
-
-        print '\nAll tests OK.'
-
-    except:
-        print '\nTests failed.'
-
-        if not Debug:
-            print '''
-If you would like to see debugging output,
-try: %s -d5
-''' % sys.argv[0]
-
-        raise
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/imghdr.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/imghdr.py
deleted file mode 100644
index e113fba..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/imghdr.py
+++ /dev/null
@@ -1,161 +0,0 @@
-"""Recognize image file formats based on their first few bytes."""
-
-__all__ = ["what"]
-
-#-------------------------#
-# Recognize image headers #
-#-------------------------#
-
-def what(file, h=None):
-    if h is None:
-        if isinstance(file, basestring):
-            f = open(file, 'rb')
-            h = f.read(32)
-        else:
-            location = file.tell()
-            h = file.read(32)
-            file.seek(location)
-            f = None
-    else:
-        f = None
-    try:
-        for tf in tests:
-            res = tf(h, f)
-            if res:
-                return res
-    finally:
-        if f: f.close()
-    return None
-
-
-#---------------------------------#
-# Subroutines per image file type #
-#---------------------------------#
-
-tests = []
-
-def test_jpeg(h, f):
-    """JPEG data in JFIF format"""
-    if h[6:10] == 'JFIF':
-        return 'jpeg'
-
-tests.append(test_jpeg)
-
-def test_exif(h, f):
-    """JPEG data in Exif format"""
-    if h[6:10] == 'Exif':
-        return 'jpeg'
-
-tests.append(test_exif)
-
-def test_png(h, f):
-    if h[:8] == "\211PNG\r\n\032\n":
-        return 'png'
-
-tests.append(test_png)
-
-def test_gif(h, f):
-    """GIF ('87 and '89 variants)"""
-    if h[:6] in ('GIF87a', 'GIF89a'):
-        return 'gif'
-
-tests.append(test_gif)
-
-def test_tiff(h, f):
-    """TIFF (can be in Motorola or Intel byte order)"""
-    if h[:2] in ('MM', 'II'):
-        return 'tiff'
-
-tests.append(test_tiff)
-
-def test_rgb(h, f):
-    """SGI image library"""
-    if h[:2] == '\001\332':
-        return 'rgb'
-
-tests.append(test_rgb)
-
-def test_pbm(h, f):
-    """PBM (portable bitmap)"""
-    if len(h) >= 3 and \
-        h[0] == 'P' and h[1] in '14' and h[2] in ' \t\n\r':
-        return 'pbm'
-
-tests.append(test_pbm)
-
-def test_pgm(h, f):
-    """PGM (portable graymap)"""
-    if len(h) >= 3 and \
-        h[0] == 'P' and h[1] in '25' and h[2] in ' \t\n\r':
-        return 'pgm'
-
-tests.append(test_pgm)
-
-def test_ppm(h, f):
-    """PPM (portable pixmap)"""
-    if len(h) >= 3 and \
-        h[0] == 'P' and h[1] in '36' and h[2] in ' \t\n\r':
-        return 'ppm'
-
-tests.append(test_ppm)
-
-def test_rast(h, f):
-    """Sun raster file"""
-    if h[:4] == '\x59\xA6\x6A\x95':
-        return 'rast'
-
-tests.append(test_rast)
-
-def test_xbm(h, f):
-    """X bitmap (X10 or X11)"""
-    s = '#define '
-    if h[:len(s)] == s:
-        return 'xbm'
-
-tests.append(test_xbm)
-
-def test_bmp(h, f):
-    if h[:2] == 'BM':
-        return 'bmp'
-
-tests.append(test_bmp)
-
-#--------------------#
-# Small test program #
-#--------------------#
-
-def test():
-    import sys
-    recursive = 0
-    if sys.argv[1:] and sys.argv[1] == '-r':
-        del sys.argv[1:2]
-        recursive = 1
-    try:
-        if sys.argv[1:]:
-            testall(sys.argv[1:], recursive, 1)
-        else:
-            testall(['.'], recursive, 1)
-    except KeyboardInterrupt:
-        sys.stderr.write('\n[Interrupted]\n')
-        sys.exit(1)
-
-def testall(list, recursive, toplevel):
-    import sys
-    import os
-    for filename in list:
-        if os.path.isdir(filename):
-            print filename + '/:',
-            if recursive or toplevel:
-                print 'recursing down:'
-                import glob
-                names = glob.glob(os.path.join(filename, '*'))
-                testall(names, recursive, 0)
-            else:
-                print '*** directory (use -r) ***'
-        else:
-            print filename + ':',
-            sys.stdout.flush()
-            try:
-                print what(filename)
-            except IOError:
-                print '*** not found ***'
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/importlib/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/importlib/__init__.py
deleted file mode 100644
index a44aea4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/importlib/__init__.py
+++ /dev/null
@@ -1,38 +0,0 @@
-"""Backport of importlib.import_module from 3.x."""
-# While not critical (and in no way guaranteed!), it would be nice to keep this
-# code compatible with Python 2.3.
-import sys
-
-def _resolve_name(name, package, level):
-    """Return the absolute name of the module to be imported."""
-    if not hasattr(package, 'rindex'):
-        raise ValueError("'package' not set to a string")
-    dot = len(package)
-    for x in xrange(level, 1, -1):
-        try:
-            dot = package.rindex('.', 0, dot)
-        except ValueError:
-            raise ValueError("attempted relative import beyond top-level "
-                              "package")
-    return "%s.%s" % (package[:dot], name)
-
-
-def import_module(name, package=None):
-    """Import a module.
-
-    The 'package' argument is required when performing a relative import. It
-    specifies the package to use as the anchor point from which to resolve the
-    relative import to an absolute import.
-
-    """
-    if name.startswith('.'):
-        if not package:
-            raise TypeError("relative imports require the 'package' argument")
-        level = 0
-        for character in name:
-            if character != '.':
-                break
-            level += 1
-        name = _resolve_name(name[level:], package, level)
-    __import__(name)
-    return sys.modules[name]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/imputil.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/imputil.py
deleted file mode 100644
index 480d896..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/imputil.py
+++ /dev/null
@@ -1,725 +0,0 @@
-"""
-Import utilities
-
-Exported classes:
-    ImportManager   Manage the import process
-
-    Importer        Base class for replacing standard import functions
-    BuiltinImporter Emulate the import mechanism for builtin and frozen modules
-
-    DynLoadSuffixImporter
-"""
-from warnings import warnpy3k
-warnpy3k("the imputil module has been removed in Python 3.0", stacklevel=2)
-del warnpy3k
-
-# note: avoid importing non-builtin modules
-import imp                      ### not available in Jython?
-import sys
-import __builtin__
-
-# for the DirectoryImporter
-import struct
-import marshal
-
-__all__ = ["ImportManager","Importer","BuiltinImporter"]
-
-_StringType = type('')
-_ModuleType = type(sys)         ### doesn't work in Jython...
-
-class ImportManager:
-    "Manage the import process."
-
-    def install(self, namespace=vars(__builtin__)):
-        "Install this ImportManager into the specified namespace."
-
-        if isinstance(namespace, _ModuleType):
-            namespace = vars(namespace)
-
-        # Note: we have no notion of "chaining"
-
-        # Record the previous import hook, then install our own.
-        self.previous_importer = namespace['__import__']
-        self.namespace = namespace
-        namespace['__import__'] = self._import_hook
-
-        ### fix this
-        #namespace['reload'] = self._reload_hook
-
-    def uninstall(self):
-        "Restore the previous import mechanism."
-        self.namespace['__import__'] = self.previous_importer
-
-    def add_suffix(self, suffix, importFunc):
-        assert hasattr(importFunc, '__call__')
-        self.fs_imp.add_suffix(suffix, importFunc)
-
-    ######################################################################
-    #
-    # PRIVATE METHODS
-    #
-
-    clsFilesystemImporter = None
-
-    def __init__(self, fs_imp=None):
-        # we're definitely going to be importing something in the future,
-        # so let's just load the OS-related facilities.
-        if not _os_stat:
-            _os_bootstrap()
-
-        # This is the Importer that we use for grabbing stuff from the
-        # filesystem. It defines one more method (import_from_dir) for our use.
-        if fs_imp is None:
-            cls = self.clsFilesystemImporter or _FilesystemImporter
-            fs_imp = cls()
-        self.fs_imp = fs_imp
-
-        # Initialize the set of suffixes that we recognize and import.
-        # The default will import dynamic-load modules first, followed by
-        # .py files (or a .py file's cached bytecode)
-        for desc in imp.get_suffixes():
-            if desc[2] == imp.C_EXTENSION:
-                self.add_suffix(desc[0],
-                                DynLoadSuffixImporter(desc).import_file)
-        self.add_suffix('.py', py_suffix_importer)
-
-    def _import_hook(self, fqname, globals=None, locals=None, fromlist=None):
-        """Python calls this hook to locate and import a module."""
-
-        parts = fqname.split('.')
-
-        # determine the context of this import
-        parent = self._determine_import_context(globals)
-
-        # if there is a parent, then its importer should manage this import
-        if parent:
-            module = parent.__importer__._do_import(parent, parts, fromlist)
-            if module:
-                return module
-
-        # has the top module already been imported?
-        try:
-            top_module = sys.modules[parts[0]]
-        except KeyError:
-
-            # look for the topmost module
-            top_module = self._import_top_module(parts[0])
-            if not top_module:
-                # the topmost module wasn't found at all.
-                raise ImportError, 'No module named ' + fqname
-
-        # fast-path simple imports
-        if len(parts) == 1:
-            if not fromlist:
-                return top_module
-
-            if not top_module.__dict__.get('__ispkg__'):
-                # __ispkg__ isn't defined (the module was not imported by us),
-                # or it is zero.
-                #
-                # In the former case, there is no way that we could import
-                # sub-modules that occur in the fromlist (but we can't raise an
-                # error because it may just be names) because we don't know how
-                # to deal with packages that were imported by other systems.
-                #
-                # In the latter case (__ispkg__ == 0), there can't be any sub-
-                # modules present, so we can just return.
-                #
-                # In both cases, since len(parts) == 1, the top_module is also
-                # the "bottom" which is the defined return when a fromlist
-                # exists.
-                return top_module
-
-        importer = top_module.__dict__.get('__importer__')
-        if importer:
-            return importer._finish_import(top_module, parts[1:], fromlist)
-
-        # Grrr, some people "import os.path" or do "from os.path import ..."
-        if len(parts) == 2 and hasattr(top_module, parts[1]):
-            if fromlist:
-                return getattr(top_module, parts[1])
-            else:
-                return top_module
-
-        # If the importer does not exist, then we have to bail. A missing
-        # importer means that something else imported the module, and we have
-        # no knowledge of how to get sub-modules out of the thing.
-        raise ImportError, 'No module named ' + fqname
-
-    def _determine_import_context(self, globals):
-        """Returns the context in which a module should be imported.
-
-        The context could be a loaded (package) module and the imported module
-        will be looked for within that package. The context could also be None,
-        meaning there is no context -- the module should be looked for as a
-        "top-level" module.
-        """
-
-        if not globals or not globals.get('__importer__'):
-            # globals does not refer to one of our modules or packages. That
-            # implies there is no relative import context (as far as we are
-            # concerned), and it should just pick it off the standard path.
-            return None
-
-        # The globals refer to a module or package of ours. It will define
-        # the context of the new import. Get the module/package fqname.
-        parent_fqname = globals['__name__']
-
-        # if a package is performing the import, then return itself (imports
-        # refer to pkg contents)
-        if globals['__ispkg__']:
-            parent = sys.modules[parent_fqname]
-            assert globals is parent.__dict__
-            return parent
-
-        i = parent_fqname.rfind('.')
-
-        # a module outside of a package has no particular import context
-        if i == -1:
-            return None
-
-        # if a module in a package is performing the import, then return the
-        # package (imports refer to siblings)
-        parent_fqname = parent_fqname[:i]
-        parent = sys.modules[parent_fqname]
-        assert parent.__name__ == parent_fqname
-        return parent
-
-    def _import_top_module(self, name):
-        # scan sys.path looking for a location in the filesystem that contains
-        # the module, or an Importer object that can import the module.
-        for item in sys.path:
-            if isinstance(item, _StringType):
-                module = self.fs_imp.import_from_dir(item, name)
-            else:
-                module = item.import_top(name)
-            if module:
-                return module
-        return None
-
-    def _reload_hook(self, module):
-        "Python calls this hook to reload a module."
-
-        # reloading of a module may or may not be possible (depending on the
-        # importer), but at least we can validate that it's ours to reload
-        importer = module.__dict__.get('__importer__')
-        if not importer:
-            ### oops. now what...
-            pass
-
-        # okay. it is using the imputil system, and we must delegate it, but
-        # we don't know what to do (yet)
-        ### we should blast the module dict and do another get_code(). need to
-        ### flesh this out and add proper docco...
-        raise SystemError, "reload not yet implemented"
-
-
-class Importer:
-    "Base class for replacing standard import functions."
-
-    def import_top(self, name):
-        "Import a top-level module."
-        return self._import_one(None, name, name)
-
-    ######################################################################
-    #
-    # PRIVATE METHODS
-    #
-    def _finish_import(self, top, parts, fromlist):
-        # if "a.b.c" was provided, then load the ".b.c" portion down from
-        # below the top-level module.
-        bottom = self._load_tail(top, parts)
-
-        # if the form is "import a.b.c", then return "a"
-        if not fromlist:
-            # no fromlist: return the top of the import tree
-            return top
-
-        # the top module was imported by self.
-        #
-        # this means that the bottom module was also imported by self (just
-        # now, or in the past and we fetched it from sys.modules).
-        #
-        # since we imported/handled the bottom module, this means that we can
-        # also handle its fromlist (and reliably use __ispkg__).
-
-        # if the bottom node is a package, then (potentially) import some
-        # modules.
-        #
-        # note: if it is not a package, then "fromlist" refers to names in
-        #       the bottom module rather than modules.
-        # note: for a mix of names and modules in the fromlist, we will
-        #       import all modules and insert those into the namespace of
-        #       the package module. Python will pick up all fromlist names
-        #       from the bottom (package) module; some will be modules that
-        #       we imported and stored in the namespace, others are expected
-        #       to be present already.
-        if bottom.__ispkg__:
-            self._import_fromlist(bottom, fromlist)
-
-        # if the form is "from a.b import c, d" then return "b"
-        return bottom
-
-    def _import_one(self, parent, modname, fqname):
-        "Import a single module."
-
-        # has the module already been imported?
-        try:
-            return sys.modules[fqname]
-        except KeyError:
-            pass
-
-        # load the module's code, or fetch the module itself
-        result = self.get_code(parent, modname, fqname)
-        if result is None:
-            return None
-
-        module = self._process_result(result, fqname)
-
-        # insert the module into its parent
-        if parent:
-            setattr(parent, modname, module)
-        return module
-
-    def _process_result(self, result, fqname):
-        ispkg, code, values = result
-        # did get_code() return an actual module? (rather than a code object)
-        is_module = isinstance(code, _ModuleType)
-
-        # use the returned module, or create a new one to exec code into
-        if is_module:
-            module = code
-        else:
-            module = imp.new_module(fqname)
-
-        ### record packages a bit differently??
-        module.__importer__ = self
-        module.__ispkg__ = ispkg
-
-        # insert additional values into the module (before executing the code)
-        module.__dict__.update(values)
-
-        # the module is almost ready... make it visible
-        sys.modules[fqname] = module
-
-        # execute the code within the module's namespace
-        if not is_module:
-            try:
-                exec code in module.__dict__
-            except:
-                if fqname in sys.modules:
-                    del sys.modules[fqname]
-                raise
-
-        # fetch from sys.modules instead of returning module directly.
-        # also make module's __name__ agree with fqname, in case
-        # the "exec code in module.__dict__" played games on us.
-        module = sys.modules[fqname]
-        module.__name__ = fqname
-        return module
-
-    def _load_tail(self, m, parts):
-        """Import the rest of the modules, down from the top-level module.
-
-        Returns the last module in the dotted list of modules.
-        """
-        for part in parts:
-            fqname = "%s.%s" % (m.__name__, part)
-            m = self._import_one(m, part, fqname)
-            if not m:
-                raise ImportError, "No module named " + fqname
-        return m
-
-    def _import_fromlist(self, package, fromlist):
-        'Import any sub-modules in the "from" list.'
-
-        # if '*' is present in the fromlist, then look for the '__all__'
-        # variable to find additional items (modules) to import.
-        if '*' in fromlist:
-            fromlist = list(fromlist) + \
-                       list(package.__dict__.get('__all__', []))
-
-        for sub in fromlist:
-            # if the name is already present, then don't try to import it (it
-            # might not be a module!).
-            if sub != '*' and not hasattr(package, sub):
-                subname = "%s.%s" % (package.__name__, sub)
-                submod = self._import_one(package, sub, subname)
-                if not submod:
-                    raise ImportError, "cannot import name " + subname
-
-    def _do_import(self, parent, parts, fromlist):
-        """Attempt to import the module relative to parent.
-
-        This method is used when the import context specifies that <self>
-        imported the parent module.
-        """
-        top_name = parts[0]
-        top_fqname = parent.__name__ + '.' + top_name
-        top_module = self._import_one(parent, top_name, top_fqname)
-        if not top_module:
-            # this importer and parent could not find the module (relatively)
-            return None
-
-        return self._finish_import(top_module, parts[1:], fromlist)
-
-    ######################################################################
-    #
-    # METHODS TO OVERRIDE
-    #
-    def get_code(self, parent, modname, fqname):
-        """Find and retrieve the code for the given module.
-
-        parent specifies a parent module to define a context for importing. It
-        may be None, indicating no particular context for the search.
-
-        modname specifies a single module (not dotted) within the parent.
-
-        fqname specifies the fully-qualified module name. This is a
-        (potentially) dotted name from the "root" of the module namespace
-        down to the modname.
-        If there is no parent, then modname==fqname.
-
-        This method should return None, or a 3-tuple.
-
-        * If the module was not found, then None should be returned.
-
-        * The first item of the 2- or 3-tuple should be the integer 0 or 1,
-            specifying whether the module that was found is a package or not.
-
-        * The second item is the code object for the module (it will be
-            executed within the new module's namespace). This item can also
-            be a fully-loaded module object (e.g. loaded from a shared lib).
-
-        * The third item is a dictionary of name/value pairs that will be
-            inserted into new module before the code object is executed. This
-            is provided in case the module's code expects certain values (such
-            as where the module was found). When the second item is a module
-            object, then these names/values will be inserted *after* the module
-            has been loaded/initialized.
-        """
-        raise RuntimeError, "get_code not implemented"
-
-
-######################################################################
-#
-# Some handy stuff for the Importers
-#
-
-# byte-compiled file suffix character
-_suffix_char = __debug__ and 'c' or 'o'
-
-# byte-compiled file suffix
-_suffix = '.py' + _suffix_char
-
-def _compile(pathname, timestamp):
-    """Compile (and cache) a Python source file.
-
-    The file specified by <pathname> is compiled to a code object and
-    returned.
-
-    Presuming the appropriate privileges exist, the bytecodes will be
-    saved back to the filesystem for future imports. The source file's
-    modification timestamp must be provided as a Long value.
-    """
-    codestring = open(pathname, 'rU').read()
-    if codestring and codestring[-1] != '\n':
-        codestring = codestring + '\n'
-    code = __builtin__.compile(codestring, pathname, 'exec')
-
-    # try to cache the compiled code
-    try:
-        f = open(pathname + _suffix_char, 'wb')
-    except IOError:
-        pass
-    else:
-        f.write('\0\0\0\0')
-        f.write(struct.pack('<I', timestamp))
-        marshal.dump(code, f)
-        f.flush()
-        f.seek(0, 0)
-        f.write(imp.get_magic())
-        f.close()
-
-    return code
-
-_os_stat = _os_path_join = None
-def _os_bootstrap():
-    "Set up 'os' module replacement functions for use during import bootstrap."
-
-    names = sys.builtin_module_names
-
-    join = None
-    if 'posix' in names:
-        sep = '/'
-        from posix import stat
-    elif 'nt' in names:
-        sep = '\\'
-        from nt import stat
-    elif 'dos' in names:
-        sep = '\\'
-        from dos import stat
-    elif 'os2' in names:
-        sep = '\\'
-        from os2 import stat
-    else:
-        raise ImportError, 'no os specific module found'
-
-    if join is None:
-        def join(a, b, sep=sep):
-            if a == '':
-                return b
-            lastchar = a[-1:]
-            if lastchar == '/' or lastchar == sep:
-                return a + b
-            return a + sep + b
-
-    global _os_stat
-    _os_stat = stat
-
-    global _os_path_join
-    _os_path_join = join
-
-def _os_path_isdir(pathname):
-    "Local replacement for os.path.isdir()."
-    try:
-        s = _os_stat(pathname)
-    except OSError:
-        return None
-    return (s.st_mode & 0170000) == 0040000
-
-def _timestamp(pathname):
-    "Return the file modification time as a Long."
-    try:
-        s = _os_stat(pathname)
-    except OSError:
-        return None
-    return long(s.st_mtime)
-
-
-######################################################################
-#
-# Emulate the import mechanism for builtin and frozen modules
-#
-class BuiltinImporter(Importer):
-    def get_code(self, parent, modname, fqname):
-        if parent:
-            # these modules definitely do not occur within a package context
-            return None
-
-        # look for the module
-        if imp.is_builtin(modname):
-            type = imp.C_BUILTIN
-        elif imp.is_frozen(modname):
-            type = imp.PY_FROZEN
-        else:
-            # not found
-            return None
-
-        # got it. now load and return it.
-        module = imp.load_module(modname, None, modname, ('', '', type))
-        return 0, module, { }
-
-
-######################################################################
-#
-# Internal importer used for importing from the filesystem
-#
-class _FilesystemImporter(Importer):
-    def __init__(self):
-        self.suffixes = [ ]
-
-    def add_suffix(self, suffix, importFunc):
-        assert hasattr(importFunc, '__call__')
-        self.suffixes.append((suffix, importFunc))
-
-    def import_from_dir(self, dir, fqname):
-        result = self._import_pathname(_os_path_join(dir, fqname), fqname)
-        if result:
-            return self._process_result(result, fqname)
-        return None
-
-    def get_code(self, parent, modname, fqname):
-        # This importer is never used with an empty parent. Its existence is
-        # private to the ImportManager. The ImportManager uses the
-        # import_from_dir() method to import top-level modules/packages.
-        # This method is only used when we look for a module within a package.
-        assert parent
-
-        for submodule_path in parent.__path__:
-            code = self._import_pathname(_os_path_join(submodule_path, modname), fqname)
-            if code is not None:
-                return code
-        return self._import_pathname(_os_path_join(parent.__pkgdir__, modname),
-                                     fqname)
-
-    def _import_pathname(self, pathname, fqname):
-        if _os_path_isdir(pathname):
-            result = self._import_pathname(_os_path_join(pathname, '__init__'),
-                                           fqname)
-            if result:
-                values = result[2]
-                values['__pkgdir__'] = pathname
-                values['__path__'] = [ pathname ]
-                return 1, result[1], values
-            return None
-
-        for suffix, importFunc in self.suffixes:
-            filename = pathname + suffix
-            try:
-                finfo = _os_stat(filename)
-            except OSError:
-                pass
-            else:
-                return importFunc(filename, finfo, fqname)
-        return None
-
-######################################################################
-#
-# SUFFIX-BASED IMPORTERS
-#
-
-def py_suffix_importer(filename, finfo, fqname):
-    file = filename[:-3] + _suffix
-    t_py = long(finfo[8])
-    t_pyc = _timestamp(file)
-
-    code = None
-    if t_pyc is not None and t_pyc >= t_py:
-        f = open(file, 'rb')
-        if f.read(4) == imp.get_magic():
-            t = struct.unpack('<I', f.read(4))[0]
-            if t == t_py:
-                code = marshal.load(f)
-        f.close()
-    if code is None:
-        file = filename
-        code = _compile(file, t_py)
-
-    return 0, code, { '__file__' : file }
-
-class DynLoadSuffixImporter:
-    def __init__(self, desc):
-        self.desc = desc
-
-    def import_file(self, filename, finfo, fqname):
-        fp = open(filename, self.desc[1])
-        module = imp.load_module(fqname, fp, filename, self.desc)
-        module.__file__ = filename
-        return 0, module, { }
-
-
-######################################################################
-
-def _print_importers():
-    items = sys.modules.items()
-    items.sort()
-    for name, module in items:
-        if module:
-            print name, module.__dict__.get('__importer__', '-- no importer')
-        else:
-            print name, '-- non-existent module'
-
-def _test_revamp():
-    ImportManager().install()
-    sys.path.insert(0, BuiltinImporter())
-
-######################################################################
-
-#
-# TODO
-#
-# from Finn Bock:
-#   type(sys) is not a module in Jython. what to use instead?
-#   imp.C_EXTENSION is not in Jython. same for get_suffixes and new_module
-#
-#   given foo.py of:
-#      import sys
-#      sys.modules['foo'] = sys
-#
-#   ---- standard import mechanism
-#   >>> import foo
-#   >>> foo
-#   <module 'sys' (built-in)>
-#
-#   ---- revamped import mechanism
-#   >>> import imputil
-#   >>> imputil._test_revamp()
-#   >>> import foo
-#   >>> foo
-#   <module 'foo' from 'foo.py'>
-#
-#
-# from MAL:
-#   should BuiltinImporter exist in sys.path or hard-wired in ImportManager?
-#   need __path__ processing
-#   performance
-#   move chaining to a subclass [gjs: it's been nuked]
-#   deinstall should be possible
-#   query mechanism needed: is a specific Importer installed?
-#   py/pyc/pyo piping hooks to filter/process these files
-#   wish list:
-#     distutils importer hooked to list of standard Internet repositories
-#     module->file location mapper to speed FS-based imports
-#     relative imports
-#     keep chaining so that it can play nice with other import hooks
-#
-# from Gordon:
-#   push MAL's mapper into sys.path[0] as a cache (hard-coded for apps)
-#
-# from Guido:
-#   need to change sys.* references for rexec environs
-#   need hook for MAL's walk-me-up import strategy, or Tim's absolute strategy
-#   watch out for sys.modules[...] is None
-#   flag to force absolute imports? (speeds _determine_import_context and
-#       checking for a relative module)
-#   insert names of archives into sys.path  (see quote below)
-#   note: reload does NOT blast module dict
-#   shift import mechanisms and policies around; provide for hooks, overrides
-#       (see quote below)
-#   add get_source stuff
-#   get_topcode and get_subcode
-#   CRLF handling in _compile
-#   race condition in _compile
-#   refactoring of os.py to deal with _os_bootstrap problem
-#   any special handling to do for importing a module with a SyntaxError?
-#       (e.g. clean up the traceback)
-#   implement "domain" for path-type functionality using pkg namespace
-#       (rather than FS-names like __path__)
-#   don't use the word "private"... maybe "internal"
-#
-#
-# Guido's comments on sys.path caching:
-#
-# We could cache this in a dictionary: the ImportManager can have a
-# cache dict mapping pathnames to importer objects, and a separate
-# method for coming up with an importer given a pathname that's not yet
-# in the cache.  The method should do a stat and/or look at the
-# extension to decide which importer class to use; you can register new
-# importer classes by registering a suffix or a Boolean function, plus a
-# class.  If you register a new importer class, the cache is zapped.
-# The cache is independent from sys.path (but maintained per
-# ImportManager instance) so that rearrangements of sys.path do the
-# right thing.  If a path is dropped from sys.path the corresponding
-# cache entry is simply no longer used.
-#
-# My/Guido's comments on factoring ImportManager and Importer:
-#
-# > However, we still have a tension occurring here:
-# >
-# > 1) implementing policy in ImportManager assists in single-point policy
-# >    changes for app/rexec situations
-# > 2) implementing policy in Importer assists in package-private policy
-# >    changes for normal, operating conditions
-# >
-# > I'll see if I can sort out a way to do this. Maybe the Importer class will
-# > implement the methods (which can be overridden to change policy) by
-# > delegating to ImportManager.
-#
-# Maybe also think about what kind of policies an Importer would be
-# likely to want to change.  I have a feeling that a lot of the code
-# there is actually not so much policy but a *necessity* to get things
-# working given the calling conventions for the __import__ hook: whether
-# to return the head or tail of a dotted name, or when to do the "finish
-# fromlist" stuff.
-#
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/inspect.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/inspect.py
deleted file mode 100644
index d124ae9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/inspect.py
+++ /dev/null
@@ -1,1056 +0,0 @@
-# -*- coding: iso-8859-1 -*-
-"""Get useful information from live Python objects.
-
-This module encapsulates the interface provided by the internal special
-attributes (func_*, co_*, im_*, tb_*, etc.) in a friendlier fashion.
-It also provides some help for examining source code and class layout.
-
-Here are some of the useful functions provided by this module:
-
-    ismodule(), isclass(), ismethod(), isfunction(), isgeneratorfunction(),
-        isgenerator(), istraceback(), isframe(), iscode(), isbuiltin(),
-        isroutine() - check object types
-    getmembers() - get members of an object that satisfy a given condition
-
-    getfile(), getsourcefile(), getsource() - find an object's source code
-    getdoc(), getcomments() - get documentation on an object
-    getmodule() - determine the module that an object came from
-    getclasstree() - arrange classes so as to represent their hierarchy
-
-    getargspec(), getargvalues(), getcallargs() - get info about function arguments
-    formatargspec(), formatargvalues() - format an argument spec
-    getouterframes(), getinnerframes() - get info about frames
-    currentframe() - get the current stack frame
-    stack(), trace() - get info about frames on the stack or in a traceback
-"""
-
-# This module is in the public domain.  No warranties.
-
-__author__ = 'Ka-Ping Yee <ping@lfw.org>'
-__date__ = '1 Jan 2001'
-
-import sys
-import os
-import types
-import string
-import re
-import dis
-import imp
-import tokenize
-import linecache
-from operator import attrgetter
-from collections import namedtuple
-
-# These constants are from Include/code.h.
-CO_OPTIMIZED, CO_NEWLOCALS, CO_VARARGS, CO_VARKEYWORDS = 0x1, 0x2, 0x4, 0x8
-CO_NESTED, CO_GENERATOR, CO_NOFREE = 0x10, 0x20, 0x40
-# See Include/object.h
-TPFLAGS_IS_ABSTRACT = 1 << 20
-
-# ----------------------------------------------------------- type-checking
-def ismodule(object):
-    """Return true if the object is a module.
-
-    Module objects provide these attributes:
-        __doc__         documentation string
-        __file__        filename (missing for built-in modules)"""
-    return isinstance(object, types.ModuleType)
-
-def isclass(object):
-    """Return true if the object is a class.
-
-    Class objects provide these attributes:
-        __doc__         documentation string
-        __module__      name of module in which this class was defined"""
-    return isinstance(object, (type, types.ClassType))
-
-def ismethod(object):
-    """Return true if the object is an instance method.
-
-    Instance method objects provide these attributes:
-        __doc__         documentation string
-        __name__        name with which this method was defined
-        im_class        class object in which this method belongs
-        im_func         function object containing implementation of method
-        im_self         instance to which this method is bound, or None"""
-    return isinstance(object, types.MethodType)
-
-def ismethoddescriptor(object):
-    """Return true if the object is a method descriptor.
-
-    But not if ismethod() or isclass() or isfunction() are true.
-
-    This is new in Python 2.2, and, for example, is true of int.__add__.
-    An object passing this test has a __get__ attribute but not a __set__
-    attribute, but beyond that the set of attributes varies.  __name__ is
-    usually sensible, and __doc__ often is.
-
-    Methods implemented via descriptors that also pass one of the other
-    tests return false from the ismethoddescriptor() test, simply because
-    the other tests promise more -- you can, e.g., count on having the
-    im_func attribute (etc) when an object passes ismethod()."""
-    return (hasattr(object, "__get__")
-            and not hasattr(object, "__set__") # else it's a data descriptor
-            and not ismethod(object)           # mutual exclusion
-            and not isfunction(object)
-            and not isclass(object))
-
-def isdatadescriptor(object):
-    """Return true if the object is a data descriptor.
-
-    Data descriptors have both a __get__ and a __set__ attribute.  Examples are
-    properties (defined in Python) and getsets and members (defined in C).
-    Typically, data descriptors will also have __name__ and __doc__ attributes
-    (properties, getsets, and members have both of these attributes), but this
-    is not guaranteed."""
-    return (hasattr(object, "__set__") and hasattr(object, "__get__"))
-
-if hasattr(types, 'MemberDescriptorType'):
-    # CPython and equivalent
-    def ismemberdescriptor(object):
-        """Return true if the object is a member descriptor.
-
-        Member descriptors are specialized descriptors defined in extension
-        modules."""
-        return isinstance(object, types.MemberDescriptorType)
-else:
-    # Other implementations
-    def ismemberdescriptor(object):
-        """Return true if the object is a member descriptor.
-
-        Member descriptors are specialized descriptors defined in extension
-        modules."""
-        return False
-
-if hasattr(types, 'GetSetDescriptorType'):
-    # CPython and equivalent
-    def isgetsetdescriptor(object):
-        """Return true if the object is a getset descriptor.
-
-        getset descriptors are specialized descriptors defined in extension
-        modules."""
-        return isinstance(object, types.GetSetDescriptorType)
-else:
-    # Other implementations
-    def isgetsetdescriptor(object):
-        """Return true if the object is a getset descriptor.
-
-        getset descriptors are specialized descriptors defined in extension
-        modules."""
-        return False
-
-def isfunction(object):
-    """Return true if the object is a user-defined function.
-
-    Function objects provide these attributes:
-        __doc__         documentation string
-        __name__        name with which this function was defined
-        func_code       code object containing compiled function bytecode
-        func_defaults   tuple of any default values for arguments
-        func_doc        (same as __doc__)
-        func_globals    global namespace in which this function was defined
-        func_name       (same as __name__)"""
-    return isinstance(object, types.FunctionType)
-
-def isgeneratorfunction(object):
-    """Return true if the object is a user-defined generator function.
-
-    Generator function objects provides same attributes as functions.
-
-    See help(isfunction) for attributes listing."""
-    return bool((isfunction(object) or ismethod(object)) and
-                object.func_code.co_flags & CO_GENERATOR)
-
-def isgenerator(object):
-    """Return true if the object is a generator.
-
-    Generator objects provide these attributes:
-        __iter__        defined to support interation over container
-        close           raises a new GeneratorExit exception inside the
-                        generator to terminate the iteration
-        gi_code         code object
-        gi_frame        frame object or possibly None once the generator has
-                        been exhausted
-        gi_running      set to 1 when generator is executing, 0 otherwise
-        next            return the next item from the container
-        send            resumes the generator and "sends" a value that becomes
-                        the result of the current yield-expression
-        throw           used to raise an exception inside the generator"""
-    return isinstance(object, types.GeneratorType)
-
-def istraceback(object):
-    """Return true if the object is a traceback.
-
-    Traceback objects provide these attributes:
-        tb_frame        frame object at this level
-        tb_lasti        index of last attempted instruction in bytecode
-        tb_lineno       current line number in Python source code
-        tb_next         next inner traceback object (called by this level)"""
-    return isinstance(object, types.TracebackType)
-
-def isframe(object):
-    """Return true if the object is a frame object.
-
-    Frame objects provide these attributes:
-        f_back          next outer frame object (this frame's caller)
-        f_builtins      built-in namespace seen by this frame
-        f_code          code object being executed in this frame
-        f_exc_traceback traceback if raised in this frame, or None
-        f_exc_type      exception type if raised in this frame, or None
-        f_exc_value     exception value if raised in this frame, or None
-        f_globals       global namespace seen by this frame
-        f_lasti         index of last attempted instruction in bytecode
-        f_lineno        current line number in Python source code
-        f_locals        local namespace seen by this frame
-        f_restricted    0 or 1 if frame is in restricted execution mode
-        f_trace         tracing function for this frame, or None"""
-    return isinstance(object, types.FrameType)
-
-def iscode(object):
-    """Return true if the object is a code object.
-
-    Code objects provide these attributes:
-        co_argcount     number of arguments (not including * or ** args)
-        co_code         string of raw compiled bytecode
-        co_consts       tuple of constants used in the bytecode
-        co_filename     name of file in which this code object was created
-        co_firstlineno  number of first line in Python source code
-        co_flags        bitmap: 1=optimized | 2=newlocals | 4=*arg | 8=**arg
-        co_lnotab       encoded mapping of line numbers to bytecode indices
-        co_name         name with which this code object was defined
-        co_names        tuple of names of local variables
-        co_nlocals      number of local variables
-        co_stacksize    virtual machine stack space required
-        co_varnames     tuple of names of arguments and local variables"""
-    return isinstance(object, types.CodeType)
-
-def isbuiltin(object):
-    """Return true if the object is a built-in function or method.
-
-    Built-in functions and methods provide these attributes:
-        __doc__         documentation string
-        __name__        original name of this function or method
-        __self__        instance to which a method is bound, or None"""
-    return isinstance(object, types.BuiltinFunctionType)
-
-def isroutine(object):
-    """Return true if the object is any kind of function or method."""
-    return (isbuiltin(object)
-            or isfunction(object)
-            or ismethod(object)
-            or ismethoddescriptor(object))
-
-def isabstract(object):
-    """Return true if the object is an abstract base class (ABC)."""
-    return bool(isinstance(object, type) and object.__flags__ & TPFLAGS_IS_ABSTRACT)
-
-def getmembers(object, predicate=None):
-    """Return all members of an object as (name, value) pairs sorted by name.
-    Optionally, only return members that satisfy a given predicate."""
-    results = []
-    for key in dir(object):
-        try:
-            value = getattr(object, key)
-        except AttributeError:
-            continue
-        if not predicate or predicate(value):
-            results.append((key, value))
-    results.sort()
-    return results
-
-Attribute = namedtuple('Attribute', 'name kind defining_class object')
-
-def classify_class_attrs(cls):
-    """Return list of attribute-descriptor tuples.
-
-    For each name in dir(cls), the return list contains a 4-tuple
-    with these elements:
-
-        0. The name (a string).
-
-        1. The kind of attribute this is, one of these strings:
-               'class method'    created via classmethod()
-               'static method'   created via staticmethod()
-               'property'        created via property()
-               'method'          any other flavor of method
-               'data'            not a method
-
-        2. The class which defined this attribute (a class).
-
-        3. The object as obtained directly from the defining class's
-           __dict__, not via getattr.  This is especially important for
-           data attributes:  C.data is just a data object, but
-           C.__dict__['data'] may be a data descriptor with additional
-           info, like a __doc__ string.
-    """
-
-    mro = getmro(cls)
-    names = dir(cls)
-    result = []
-    for name in names:
-        # Get the object associated with the name.
-        # Getting an obj from the __dict__ sometimes reveals more than
-        # using getattr.  Static and class methods are dramatic examples.
-        if name in cls.__dict__:
-            obj = cls.__dict__[name]
-        else:
-            obj = getattr(cls, name)
-
-        # Figure out where it was defined.
-        homecls = getattr(obj, "__objclass__", None)
-        if homecls is None:
-            # search the dicts.
-            for base in mro:
-                if name in base.__dict__:
-                    homecls = base
-                    break
-
-        # Get the object again, in order to get it from the defining
-        # __dict__ instead of via getattr (if possible).
-        if homecls is not None and name in homecls.__dict__:
-            obj = homecls.__dict__[name]
-
-        # Also get the object via getattr.
-        obj_via_getattr = getattr(cls, name)
-
-        # Classify the object.
-        if isinstance(obj, staticmethod):
-            kind = "static method"
-        elif isinstance(obj, classmethod):
-            kind = "class method"
-        elif isinstance(obj, property):
-            kind = "property"
-        elif (ismethod(obj_via_getattr) or
-              ismethoddescriptor(obj_via_getattr)):
-            kind = "method"
-        else:
-            kind = "data"
-
-        result.append(Attribute(name, kind, homecls, obj))
-
-    return result
-
-# ----------------------------------------------------------- class helpers
-def _searchbases(cls, accum):
-    # Simulate the "classic class" search order.
-    if cls in accum:
-        return
-    accum.append(cls)
-    for base in cls.__bases__:
-        _searchbases(base, accum)
-
-def getmro(cls):
-    "Return tuple of base classes (including cls) in method resolution order."
-    if hasattr(cls, "__mro__"):
-        return cls.__mro__
-    else:
-        result = []
-        _searchbases(cls, result)
-        return tuple(result)
-
-# -------------------------------------------------- source code extraction
-def indentsize(line):
-    """Return the indent size, in spaces, at the start of a line of text."""
-    expline = string.expandtabs(line)
-    return len(expline) - len(string.lstrip(expline))
-
-def getdoc(object):
-    """Get the documentation string for an object.
-
-    All tabs are expanded to spaces.  To clean up docstrings that are
-    indented to line up with blocks of code, any whitespace than can be
-    uniformly removed from the second line onwards is removed."""
-    try:
-        doc = object.__doc__
-    except AttributeError:
-        return None
-    if not isinstance(doc, types.StringTypes):
-        return None
-    return cleandoc(doc)
-
-def cleandoc(doc):
-    """Clean up indentation from docstrings.
-
-    Any whitespace that can be uniformly removed from the second line
-    onwards is removed."""
-    try:
-        lines = string.split(string.expandtabs(doc), '\n')
-    except UnicodeError:
-        return None
-    else:
-        # Find minimum indentation of any non-blank lines after first line.
-        margin = sys.maxint
-        for line in lines[1:]:
-            content = len(string.lstrip(line))
-            if content:
-                indent = len(line) - content
-                margin = min(margin, indent)
-        # Remove indentation.
-        if lines:
-            lines[0] = lines[0].lstrip()
-        if margin < sys.maxint:
-            for i in range(1, len(lines)): lines[i] = lines[i][margin:]
-        # Remove any trailing or leading blank lines.
-        while lines and not lines[-1]:
-            lines.pop()
-        while lines and not lines[0]:
-            lines.pop(0)
-        return string.join(lines, '\n')
-
-def getfile(object):
-    """Work out which source or compiled file an object was defined in."""
-    if ismodule(object):
-        if hasattr(object, '__file__'):
-            return object.__file__
-        raise TypeError('{!r} is a built-in module'.format(object))
-    if isclass(object):
-        object = sys.modules.get(object.__module__)
-        if hasattr(object, '__file__'):
-            return object.__file__
-        raise TypeError('{!r} is a built-in class'.format(object))
-    if ismethod(object):
-        object = object.im_func
-    if isfunction(object):
-        object = object.func_code
-    if istraceback(object):
-        object = object.tb_frame
-    if isframe(object):
-        object = object.f_code
-    if iscode(object):
-        return object.co_filename
-    raise TypeError('{!r} is not a module, class, method, '
-                    'function, traceback, frame, or code object'.format(object))
-
-ModuleInfo = namedtuple('ModuleInfo', 'name suffix mode module_type')
-
-def getmoduleinfo(path):
-    """Get the module name, suffix, mode, and module type for a given file."""
-    filename = os.path.basename(path)
-    suffixes = map(lambda info:
-                   (-len(info[0]), info[0], info[1], info[2]),
-                    imp.get_suffixes())
-    suffixes.sort() # try longest suffixes first, in case they overlap
-    for neglen, suffix, mode, mtype in suffixes:
-        if filename[neglen:] == suffix:
-            return ModuleInfo(filename[:neglen], suffix, mode, mtype)
-
-def getmodulename(path):
-    """Return the module name for a given file, or None."""
-    info = getmoduleinfo(path)
-    if info: return info[0]
-
-def getsourcefile(object):
-    """Return the filename that can be used to locate an object's source.
-    Return None if no way can be identified to get the source.
-    """
-    filename = getfile(object)
-    if string.lower(filename[-4:]) in ('.pyc', '.pyo'):
-        filename = filename[:-4] + '.py'
-    for suffix, mode, kind in imp.get_suffixes():
-        if 'b' in mode and string.lower(filename[-len(suffix):]) == suffix:
-            # Looks like a binary file.  We want to only return a text file.
-            return None
-    if os.path.exists(filename):
-        return filename
-    # only return a non-existent filename if the module has a PEP 302 loader
-    if hasattr(getmodule(object, filename), '__loader__'):
-        return filename
-    # or it is in the linecache
-    if filename in linecache.cache:
-        return filename
-
-def getabsfile(object, _filename=None):
-    """Return an absolute path to the source or compiled file for an object.
-
-    The idea is for each object to have a unique origin, so this routine
-    normalizes the result as much as possible."""
-    if _filename is None:
-        _filename = getsourcefile(object) or getfile(object)
-    return os.path.normcase(os.path.abspath(_filename))
-
-modulesbyfile = {}
-_filesbymodname = {}
-
-def getmodule(object, _filename=None):
-    """Return the module an object was defined in, or None if not found."""
-    if ismodule(object):
-        return object
-    if hasattr(object, '__module__'):
-        return sys.modules.get(object.__module__)
-    # Try the filename to modulename cache
-    if _filename is not None and _filename in modulesbyfile:
-        return sys.modules.get(modulesbyfile[_filename])
-    # Try the cache again with the absolute file name
-    try:
-        file = getabsfile(object, _filename)
-    except TypeError:
-        return None
-    if file in modulesbyfile:
-        return sys.modules.get(modulesbyfile[file])
-    # Update the filename to module name cache and check yet again
-    # Copy sys.modules in order to cope with changes while iterating
-    for modname, module in sys.modules.items():
-        if ismodule(module) and hasattr(module, '__file__'):
-            f = module.__file__
-            if f == _filesbymodname.get(modname, None):
-                # Have already mapped this module, so skip it
-                continue
-            _filesbymodname[modname] = f
-            f = getabsfile(module)
-            # Always map to the name the module knows itself by
-            modulesbyfile[f] = modulesbyfile[
-                os.path.realpath(f)] = module.__name__
-    if file in modulesbyfile:
-        return sys.modules.get(modulesbyfile[file])
-    # Check the main module
-    main = sys.modules['__main__']
-    if not hasattr(object, '__name__'):
-        return None
-    if hasattr(main, object.__name__):
-        mainobject = getattr(main, object.__name__)
-        if mainobject is object:
-            return main
-    # Check builtins
-    builtin = sys.modules['__builtin__']
-    if hasattr(builtin, object.__name__):
-        builtinobject = getattr(builtin, object.__name__)
-        if builtinobject is object:
-            return builtin
-
-def findsource(object):
-    """Return the entire source file and starting line number for an object.
-
-    The argument may be a module, class, method, function, traceback, frame,
-    or code object.  The source code is returned as a list of all the lines
-    in the file and the line number indexes a line in that list.  An IOError
-    is raised if the source code cannot be retrieved."""
-    file = getsourcefile(object)
-    if not file:
-        raise IOError('source code not available')
-    module = getmodule(object, file)
-    if module:
-        lines = linecache.getlines(file, module.__dict__)
-    else:
-        lines = linecache.getlines(file)
-    if not lines:
-        raise IOError('could not get source code')
-
-    if ismodule(object):
-        return lines, 0
-
-    if isclass(object):
-        name = object.__name__
-        pat = re.compile(r'^(\s*)class\s*' + name + r'\b')
-        # make some effort to find the best matching class definition:
-        # use the one with the least indentation, which is the one
-        # that's most probably not inside a function definition.
-        candidates = []
-        for i in range(len(lines)):
-            match = pat.match(lines[i])
-            if match:
-                # if it's at toplevel, it's already the best one
-                if lines[i][0] == 'c':
-                    return lines, i
-                # else add whitespace to candidate list
-                candidates.append((match.group(1), i))
-        if candidates:
-            # this will sort by whitespace, and by line number,
-            # less whitespace first
-            candidates.sort()
-            return lines, candidates[0][1]
-        else:
-            raise IOError('could not find class definition')
-
-    if ismethod(object):
-        object = object.im_func
-    if isfunction(object):
-        object = object.func_code
-    if istraceback(object):
-        object = object.tb_frame
-    if isframe(object):
-        object = object.f_code
-    if iscode(object):
-        if not hasattr(object, 'co_firstlineno'):
-            raise IOError('could not find function definition')
-        lnum = object.co_firstlineno - 1
-        pat = re.compile(r'^(\s*def\s)|(.*(?<!\w)lambda(:|\s))|^(\s*@)')
-        while lnum > 0:
-            if pat.match(lines[lnum]): break
-            lnum = lnum - 1
-        return lines, lnum
-    raise IOError('could not find code object')
-
-def getcomments(object):
-    """Get lines of comments immediately preceding an object's source code.
-
-    Returns None when source can't be found.
-    """
-    try:
-        lines, lnum = findsource(object)
-    except (IOError, TypeError):
-        return None
-
-    if ismodule(object):
-        # Look for a comment block at the top of the file.
-        start = 0
-        if lines and lines[0][:2] == '#!': start = 1
-        while start < len(lines) and string.strip(lines[start]) in ('', '#'):
-            start = start + 1
-        if start < len(lines) and lines[start][:1] == '#':
-            comments = []
-            end = start
-            while end < len(lines) and lines[end][:1] == '#':
-                comments.append(string.expandtabs(lines[end]))
-                end = end + 1
-            return string.join(comments, '')
-
-    # Look for a preceding block of comments at the same indentation.
-    elif lnum > 0:
-        indent = indentsize(lines[lnum])
-        end = lnum - 1
-        if end >= 0 and string.lstrip(lines[end])[:1] == '#' and \
-            indentsize(lines[end]) == indent:
-            comments = [string.lstrip(string.expandtabs(lines[end]))]
-            if end > 0:
-                end = end - 1
-                comment = string.lstrip(string.expandtabs(lines[end]))
-                while comment[:1] == '#' and indentsize(lines[end]) == indent:
-                    comments[:0] = [comment]
-                    end = end - 1
-                    if end < 0: break
-                    comment = string.lstrip(string.expandtabs(lines[end]))
-            while comments and string.strip(comments[0]) == '#':
-                comments[:1] = []
-            while comments and string.strip(comments[-1]) == '#':
-                comments[-1:] = []
-            return string.join(comments, '')
-
-class EndOfBlock(Exception): pass
-
-class BlockFinder:
-    """Provide a tokeneater() method to detect the end of a code block."""
-    def __init__(self):
-        self.indent = 0
-        self.islambda = False
-        self.started = False
-        self.passline = False
-        self.last = 1
-
-    def tokeneater(self, type, token, srow_scol, erow_ecol, line):
-        srow, scol = srow_scol
-        erow, ecol = erow_ecol
-        if not self.started:
-            # look for the first "def", "class" or "lambda"
-            if token in ("def", "class", "lambda"):
-                if token == "lambda":
-                    self.islambda = True
-                self.started = True
-            self.passline = True    # skip to the end of the line
-        elif type == tokenize.NEWLINE:
-            self.passline = False   # stop skipping when a NEWLINE is seen
-            self.last = srow
-            if self.islambda:       # lambdas always end at the first NEWLINE
-                raise EndOfBlock
-        elif self.passline:
-            pass
-        elif type == tokenize.INDENT:
-            self.indent = self.indent + 1
-            self.passline = True
-        elif type == tokenize.DEDENT:
-            self.indent = self.indent - 1
-            # the end of matching indent/dedent pairs end a block
-            # (note that this only works for "def"/"class" blocks,
-            #  not e.g. for "if: else:" or "try: finally:" blocks)
-            if self.indent <= 0:
-                raise EndOfBlock
-        elif self.indent == 0 and type not in (tokenize.COMMENT, tokenize.NL):
-            # any other token on the same indentation level end the previous
-            # block as well, except the pseudo-tokens COMMENT and NL.
-            raise EndOfBlock
-
-def getblock(lines):
-    """Extract the block of code at the top of the given list of lines."""
-    blockfinder = BlockFinder()
-    try:
-        tokenize.tokenize(iter(lines).next, blockfinder.tokeneater)
-    except (EndOfBlock, IndentationError):
-        pass
-    return lines[:blockfinder.last]
-
-def getsourcelines(object):
-    """Return a list of source lines and starting line number for an object.
-
-    The argument may be a module, class, method, function, traceback, frame,
-    or code object.  The source code is returned as a list of the lines
-    corresponding to the object and the line number indicates where in the
-    original source file the first line of code was found.  An IOError is
-    raised if the source code cannot be retrieved."""
-    lines, lnum = findsource(object)
-
-    if ismodule(object): return lines, 0
-    else: return getblock(lines[lnum:]), lnum + 1
-
-def getsource(object):
-    """Return the text of the source code for an object.
-
-    The argument may be a module, class, method, function, traceback, frame,
-    or code object.  The source code is returned as a single string.  An
-    IOError is raised if the source code cannot be retrieved."""
-    lines, lnum = getsourcelines(object)
-    return string.join(lines, '')
-
-# --------------------------------------------------- class tree extraction
-def walktree(classes, children, parent):
-    """Recursive helper function for getclasstree()."""
-    results = []
-    classes.sort(key=attrgetter('__module__', '__name__'))
-    for c in classes:
-        results.append((c, c.__bases__))
-        if c in children:
-            results.append(walktree(children[c], children, c))
-    return results
-
-def getclasstree(classes, unique=0):
-    """Arrange the given list of classes into a hierarchy of nested lists.
-
-    Where a nested list appears, it contains classes derived from the class
-    whose entry immediately precedes the list.  Each entry is a 2-tuple
-    containing a class and a tuple of its base classes.  If the 'unique'
-    argument is true, exactly one entry appears in the returned structure
-    for each class in the given list.  Otherwise, classes using multiple
-    inheritance and their descendants will appear multiple times."""
-    children = {}
-    roots = []
-    for c in classes:
-        if c.__bases__:
-            for parent in c.__bases__:
-                if not parent in children:
-                    children[parent] = []
-                children[parent].append(c)
-                if unique and parent in classes: break
-        elif c not in roots:
-            roots.append(c)
-    for parent in children:
-        if parent not in classes:
-            roots.append(parent)
-    return walktree(roots, children, None)
-
-# ------------------------------------------------ argument list extraction
-Arguments = namedtuple('Arguments', 'args varargs keywords')
-
-def getargs(co):
-    """Get information about the arguments accepted by a code object.
-
-    Three things are returned: (args, varargs, varkw), where 'args' is
-    a list of argument names (possibly containing nested lists), and
-    'varargs' and 'varkw' are the names of the * and ** arguments or None."""
-
-    if not iscode(co):
-        raise TypeError('{!r} is not a code object'.format(co))
-
-    nargs = co.co_argcount
-    names = co.co_varnames
-    args = list(names[:nargs])
-    step = 0
-
-    # The following acrobatics are for anonymous (tuple) arguments.
-    for i in range(nargs):
-        if args[i][:1] in ('', '.'):
-            stack, remain, count = [], [], []
-            while step < len(co.co_code):
-                op = ord(co.co_code[step])
-                step = step + 1
-                if op >= dis.HAVE_ARGUMENT:
-                    opname = dis.opname[op]
-                    value = ord(co.co_code[step]) + ord(co.co_code[step+1])*256
-                    step = step + 2
-                    if opname in ('UNPACK_TUPLE', 'UNPACK_SEQUENCE'):
-                        remain.append(value)
-                        count.append(value)
-                    elif opname == 'STORE_FAST':
-                        stack.append(names[value])
-
-                        # Special case for sublists of length 1: def foo((bar))
-                        # doesn't generate the UNPACK_TUPLE bytecode, so if
-                        # `remain` is empty here, we have such a sublist.
-                        if not remain:
-                            stack[0] = [stack[0]]
-                            break
-                        else:
-                            remain[-1] = remain[-1] - 1
-                            while remain[-1] == 0:
-                                remain.pop()
-                                size = count.pop()
-                                stack[-size:] = [stack[-size:]]
-                                if not remain: break
-                                remain[-1] = remain[-1] - 1
-                            if not remain: break
-            args[i] = stack[0]
-
-    varargs = None
-    if co.co_flags & CO_VARARGS:
-        varargs = co.co_varnames[nargs]
-        nargs = nargs + 1
-    varkw = None
-    if co.co_flags & CO_VARKEYWORDS:
-        varkw = co.co_varnames[nargs]
-    return Arguments(args, varargs, varkw)
-
-ArgSpec = namedtuple('ArgSpec', 'args varargs keywords defaults')
-
-def getargspec(func):
-    """Get the names and default values of a function's arguments.
-
-    A tuple of four things is returned: (args, varargs, varkw, defaults).
-    'args' is a list of the argument names (it may contain nested lists).
-    'varargs' and 'varkw' are the names of the * and ** arguments or None.
-    'defaults' is an n-tuple of the default values of the last n arguments.
-    """
-
-    if ismethod(func):
-        func = func.im_func
-    if not isfunction(func):
-        raise TypeError('{!r} is not a Python function'.format(func))
-    args, varargs, varkw = getargs(func.func_code)
-    return ArgSpec(args, varargs, varkw, func.func_defaults)
-
-ArgInfo = namedtuple('ArgInfo', 'args varargs keywords locals')
-
-def getargvalues(frame):
-    """Get information about arguments passed into a particular frame.
-
-    A tuple of four things is returned: (args, varargs, varkw, locals).
-    'args' is a list of the argument names (it may contain nested lists).
-    'varargs' and 'varkw' are the names of the * and ** arguments or None.
-    'locals' is the locals dictionary of the given frame."""
-    args, varargs, varkw = getargs(frame.f_code)
-    return ArgInfo(args, varargs, varkw, frame.f_locals)
-
-def joinseq(seq):
-    if len(seq) == 1:
-        return '(' + seq[0] + ',)'
-    else:
-        return '(' + string.join(seq, ', ') + ')'
-
-def strseq(object, convert, join=joinseq):
-    """Recursively walk a sequence, stringifying each element."""
-    if type(object) in (list, tuple):
-        return join(map(lambda o, c=convert, j=join: strseq(o, c, j), object))
-    else:
-        return convert(object)
-
-def formatargspec(args, varargs=None, varkw=None, defaults=None,
-                  formatarg=str,
-                  formatvarargs=lambda name: '*' + name,
-                  formatvarkw=lambda name: '**' + name,
-                  formatvalue=lambda value: '=' + repr(value),
-                  join=joinseq):
-    """Format an argument spec from the 4 values returned by getargspec.
-
-    The first four arguments are (args, varargs, varkw, defaults).  The
-    other four arguments are the corresponding optional formatting functions
-    that are called to turn names and values into strings.  The ninth
-    argument is an optional function to format the sequence of arguments."""
-    specs = []
-    if defaults:
-        firstdefault = len(args) - len(defaults)
-    for i, arg in enumerate(args):
-        spec = strseq(arg, formatarg, join)
-        if defaults and i >= firstdefault:
-            spec = spec + formatvalue(defaults[i - firstdefault])
-        specs.append(spec)
-    if varargs is not None:
-        specs.append(formatvarargs(varargs))
-    if varkw is not None:
-        specs.append(formatvarkw(varkw))
-    return '(' + string.join(specs, ', ') + ')'
-
-def formatargvalues(args, varargs, varkw, locals,
-                    formatarg=str,
-                    formatvarargs=lambda name: '*' + name,
-                    formatvarkw=lambda name: '**' + name,
-                    formatvalue=lambda value: '=' + repr(value),
-                    join=joinseq):
-    """Format an argument spec from the 4 values returned by getargvalues.
-
-    The first four arguments are (args, varargs, varkw, locals).  The
-    next four arguments are the corresponding optional formatting functions
-    that are called to turn names and values into strings.  The ninth
-    argument is an optional function to format the sequence of arguments."""
-    def convert(name, locals=locals,
-                formatarg=formatarg, formatvalue=formatvalue):
-        return formatarg(name) + formatvalue(locals[name])
-    specs = []
-    for i in range(len(args)):
-        specs.append(strseq(args[i], convert, join))
-    if varargs:
-        specs.append(formatvarargs(varargs) + formatvalue(locals[varargs]))
-    if varkw:
-        specs.append(formatvarkw(varkw) + formatvalue(locals[varkw]))
-    return '(' + string.join(specs, ', ') + ')'
-
-def getcallargs(func, *positional, **named):
-    """Get the mapping of arguments to values.
-
-    A dict is returned, with keys the function argument names (including the
-    names of the * and ** arguments, if any), and values the respective bound
-    values from 'positional' and 'named'."""
-    args, varargs, varkw, defaults = getargspec(func)
-    f_name = func.__name__
-    arg2value = {}
-
-    # The following closures are basically because of tuple parameter unpacking.
-    assigned_tuple_params = []
-    def assign(arg, value):
-        if isinstance(arg, str):
-            arg2value[arg] = value
-        else:
-            assigned_tuple_params.append(arg)
-            value = iter(value)
-            for i, subarg in enumerate(arg):
-                try:
-                    subvalue = next(value)
-                except StopIteration:
-                    raise ValueError('need more than %d %s to unpack' %
-                                     (i, 'values' if i > 1 else 'value'))
-                assign(subarg,subvalue)
-            try:
-                next(value)
-            except StopIteration:
-                pass
-            else:
-                raise ValueError('too many values to unpack')
-    def is_assigned(arg):
-        if isinstance(arg,str):
-            return arg in arg2value
-        return arg in assigned_tuple_params
-    if ismethod(func) and func.im_self is not None:
-        # implicit 'self' (or 'cls' for classmethods) argument
-        positional = (func.im_self,) + positional
-    num_pos = len(positional)
-    num_total = num_pos + len(named)
-    num_args = len(args)
-    num_defaults = len(defaults) if defaults else 0
-    for arg, value in zip(args, positional):
-        assign(arg, value)
-    if varargs:
-        if num_pos > num_args:
-            assign(varargs, positional[-(num_pos-num_args):])
-        else:
-            assign(varargs, ())
-    elif 0 < num_args < num_pos:
-        raise TypeError('%s() takes %s %d %s (%d given)' % (
-            f_name, 'at most' if defaults else 'exactly', num_args,
-            'arguments' if num_args > 1 else 'argument', num_total))
-    elif num_args == 0 and num_total:
-        if varkw:
-            if num_pos:
-                # XXX: We should use num_pos, but Python also uses num_total:
-                raise TypeError('%s() takes exactly 0 arguments '
-                                '(%d given)' % (f_name, num_total))
-        else:
-            raise TypeError('%s() takes no arguments (%d given)' %
-                            (f_name, num_total))
-    for arg in args:
-        if isinstance(arg, str) and arg in named:
-            if is_assigned(arg):
-                raise TypeError("%s() got multiple values for keyword "
-                                "argument '%s'" % (f_name, arg))
-            else:
-                assign(arg, named.pop(arg))
-    if defaults:    # fill in any missing values with the defaults
-        for arg, value in zip(args[-num_defaults:], defaults):
-            if not is_assigned(arg):
-                assign(arg, value)
-    if varkw:
-        assign(varkw, named)
-    elif named:
-        unexpected = next(iter(named))
-        if isinstance(unexpected, unicode):
-            unexpected = unexpected.encode(sys.getdefaultencoding(), 'replace')
-        raise TypeError("%s() got an unexpected keyword argument '%s'" %
-                        (f_name, unexpected))
-    unassigned = num_args - len([arg for arg in args if is_assigned(arg)])
-    if unassigned:
-        num_required = num_args - num_defaults
-        raise TypeError('%s() takes %s %d %s (%d given)' % (
-            f_name, 'at least' if defaults else 'exactly', num_required,
-            'arguments' if num_required > 1 else 'argument', num_total))
-    return arg2value
-
-# -------------------------------------------------- stack frame extraction
-
-Traceback = namedtuple('Traceback', 'filename lineno function code_context index')
-
-def getframeinfo(frame, context=1):
-    """Get information about a frame or traceback object.
-
-    A tuple of five things is returned: the filename, the line number of
-    the current line, the function name, a list of lines of context from
-    the source code, and the index of the current line within that list.
-    The optional second argument specifies the number of lines of context
-    to return, which are centered around the current line."""
-    if istraceback(frame):
-        lineno = frame.tb_lineno
-        frame = frame.tb_frame
-    else:
-        lineno = frame.f_lineno
-    if not isframe(frame):
-        raise TypeError('{!r} is not a frame or traceback object'.format(frame))
-
-    filename = getsourcefile(frame) or getfile(frame)
-    if context > 0:
-        start = lineno - 1 - context//2
-        try:
-            lines, lnum = findsource(frame)
-        except IOError:
-            lines = index = None
-        else:
-            start = max(start, 1)
-            start = max(0, min(start, len(lines) - context))
-            lines = lines[start:start+context]
-            index = lineno - 1 - start
-    else:
-        lines = index = None
-
-    return Traceback(filename, lineno, frame.f_code.co_name, lines, index)
-
-def getlineno(frame):
-    """Get the line number from a frame object, allowing for optimization."""
-    # FrameType.f_lineno is now a descriptor that grovels co_lnotab
-    return frame.f_lineno
-
-def getouterframes(frame, context=1):
-    """Get a list of records for a frame and all higher (calling) frames.
-
-    Each record contains a frame object, filename, line number, function
-    name, a list of lines of context, and index within the context."""
-    framelist = []
-    while frame:
-        framelist.append((frame,) + getframeinfo(frame, context))
-        frame = frame.f_back
-    return framelist
-
-def getinnerframes(tb, context=1):
-    """Get a list of records for a traceback's frame and all lower frames.
-
-    Each record contains a frame object, filename, line number, function
-    name, a list of lines of context, and index within the context."""
-    framelist = []
-    while tb:
-        framelist.append((tb.tb_frame,) + getframeinfo(tb, context))
-        tb = tb.tb_next
-    return framelist
-
-if hasattr(sys, '_getframe'):
-    currentframe = sys._getframe
-else:
-    currentframe = lambda _=None: None
-
-def stack(context=1):
-    """Return a list of records for the stack above the caller's frame."""
-    return getouterframes(sys._getframe(1), context)
-
-def trace(context=1):
-    """Return a list of records for the stack below the current exception."""
-    return getinnerframes(sys.exc_info()[2], context)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/io.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/io.py
deleted file mode 100644
index c79730f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/io.py
+++ /dev/null
@@ -1,98 +0,0 @@
-"""The io module provides the Python interfaces to stream handling. The
-builtin open function is defined in this module.
-
-At the top of the I/O hierarchy is the abstract base class IOBase. It
-defines the basic interface to a stream. Note, however, that there is no
-separation between reading and writing to streams; implementations are
-allowed to throw an IOError if they do not support a given operation.
-
-Extending IOBase is RawIOBase which deals simply with the reading and
-writing of raw bytes to a stream. FileIO subclasses RawIOBase to provide
-an interface to OS files.
-
-BufferedIOBase deals with buffering on a raw byte stream (RawIOBase). Its
-subclasses, BufferedWriter, BufferedReader, and BufferedRWPair buffer
-streams that are readable, writable, and both respectively.
-BufferedRandom provides a buffered interface to random access
-streams. BytesIO is a simple stream of in-memory bytes.
-
-Another IOBase subclass, TextIOBase, deals with the encoding and decoding
-of streams into text. TextIOWrapper, which extends it, is a buffered text
-interface to a buffered raw stream (`BufferedIOBase`). Finally, StringIO
-is a in-memory stream for text.
-
-Argument names are not part of the specification, and only the arguments
-of open() are intended to be used as keyword arguments.
-
-data:
-
-DEFAULT_BUFFER_SIZE
-
-   An int containing the default buffer size used by the module's buffered
-   I/O classes. open() uses the file's blksize (as obtained by os.stat) if
-   possible.
-"""
-# New I/O library conforming to PEP 3116.
-
-# XXX edge cases when switching between reading/writing
-# XXX need to support 1 meaning line-buffered
-# XXX whenever an argument is None, use the default value
-# XXX read/write ops should check readable/writable
-# XXX buffered readinto should work with arbitrary buffer objects
-# XXX use incremental encoder for text output, at least for UTF-16 and UTF-8-SIG
-# XXX check writable, readable and seekable in appropriate places
-
-
-__author__ = ("Guido van Rossum <guido@python.org>, "
-              "Mike Verdone <mike.verdone@gmail.com>, "
-              "Mark Russell <mark.russell@zen.co.uk>, "
-              "Antoine Pitrou <solipsis@pitrou.net>, "
-              "Amaury Forgeot d'Arc <amauryfa@gmail.com>, "
-              "Benjamin Peterson <benjamin@python.org>")
-
-__all__ = ["BlockingIOError", "open", "IOBase", "RawIOBase", "FileIO",
-           "BytesIO", "StringIO", "BufferedIOBase",
-           "BufferedReader", "BufferedWriter", "BufferedRWPair",
-           "BufferedRandom", "TextIOBase", "TextIOWrapper",
-           "UnsupportedOperation", "SEEK_SET", "SEEK_CUR", "SEEK_END"]
-
-
-import _io
-import abc
-
-from _io import (DEFAULT_BUFFER_SIZE, BlockingIOError, UnsupportedOperation,
-                 open, FileIO, BytesIO, StringIO, BufferedReader,
-                 BufferedWriter, BufferedRWPair, BufferedRandom,
-                 IncrementalNewlineDecoder, TextIOWrapper)
-
-OpenWrapper = _io.open # for compatibility with _pyio
-
-# for seek()
-SEEK_SET = 0
-SEEK_CUR = 1
-SEEK_END = 2
-
-# Declaring ABCs in C is tricky so we do it here.
-# Method descriptions and default implementations are inherited from the C
-# version however.
-class IOBase(_io._IOBase):
-    __metaclass__ = abc.ABCMeta
-
-class RawIOBase(_io._RawIOBase, IOBase):
-    pass
-
-class BufferedIOBase(_io._BufferedIOBase, IOBase):
-    pass
-
-class TextIOBase(_io._TextIOBase, IOBase):
-    pass
-
-RawIOBase.register(FileIO)
-
-for klass in (BytesIO, BufferedReader, BufferedWriter, BufferedRandom,
-              BufferedRWPair):
-    BufferedIOBase.register(klass)
-
-for klass in (StringIO, TextIOWrapper):
-    TextIOBase.register(klass)
-del klass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/__init__.py
deleted file mode 100644
index 2f9cce8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/__init__.py
+++ /dev/null
@@ -1,339 +0,0 @@
-r"""JSON (JavaScript Object Notation) <http://json.org> is a subset of
-JavaScript syntax (ECMA-262 3rd edition) used as a lightweight data
-interchange format.
-
-:mod:`json` exposes an API familiar to users of the standard library
-:mod:`marshal` and :mod:`pickle` modules. It is the externally maintained
-version of the :mod:`json` library contained in Python 2.6, but maintains
-compatibility with Python 2.4 and Python 2.5 and (currently) has
-significant performance advantages, even without using the optional C
-extension for speedups.
-
-Encoding basic Python object hierarchies::
-
-    >>> import json
-    >>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
-    '["foo", {"bar": ["baz", null, 1.0, 2]}]'
-    >>> print json.dumps("\"foo\bar")
-    "\"foo\bar"
-    >>> print json.dumps(u'\u1234')
-    "\u1234"
-    >>> print json.dumps('\\')
-    "\\"
-    >>> print json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)
-    {"a": 0, "b": 0, "c": 0}
-    >>> from StringIO import StringIO
-    >>> io = StringIO()
-    >>> json.dump(['streaming API'], io)
-    >>> io.getvalue()
-    '["streaming API"]'
-
-Compact encoding::
-
-    >>> import json
-    >>> json.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',',':'))
-    '[1,2,3,{"4":5,"6":7}]'
-
-Pretty printing::
-
-    >>> import json
-    >>> s = json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4)
-    >>> print '\n'.join([l.rstrip() for l in  s.splitlines()])
-    {
-        "4": 5,
-        "6": 7
-    }
-
-Decoding JSON::
-
-    >>> import json
-    >>> obj = [u'foo', {u'bar': [u'baz', None, 1.0, 2]}]
-    >>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]') == obj
-    True
-    >>> json.loads('"\\"foo\\bar"') == u'"foo\x08ar'
-    True
-    >>> from StringIO import StringIO
-    >>> io = StringIO('["streaming API"]')
-    >>> json.load(io)[0] == 'streaming API'
-    True
-
-Specializing JSON object decoding::
-
-    >>> import json
-    >>> def as_complex(dct):
-    ...     if '__complex__' in dct:
-    ...         return complex(dct['real'], dct['imag'])
-    ...     return dct
-    ...
-    >>> json.loads('{"__complex__": true, "real": 1, "imag": 2}',
-    ...     object_hook=as_complex)
-    (1+2j)
-    >>> from decimal import Decimal
-    >>> json.loads('1.1', parse_float=Decimal) == Decimal('1.1')
-    True
-
-Specializing JSON object encoding::
-
-    >>> import json
-    >>> def encode_complex(obj):
-    ...     if isinstance(obj, complex):
-    ...         return [obj.real, obj.imag]
-    ...     raise TypeError(repr(o) + " is not JSON serializable")
-    ...
-    >>> json.dumps(2 + 1j, default=encode_complex)
-    '[2.0, 1.0]'
-    >>> json.JSONEncoder(default=encode_complex).encode(2 + 1j)
-    '[2.0, 1.0]'
-    >>> ''.join(json.JSONEncoder(default=encode_complex).iterencode(2 + 1j))
-    '[2.0, 1.0]'
-
-
-Using json.tool from the shell to validate and pretty-print::
-
-    $ echo '{"json":"obj"}' | python -m json.tool
-    {
-        "json": "obj"
-    }
-    $ echo '{ 1.2:3.4}' | python -m json.tool
-    Expecting property name: line 1 column 2 (char 2)
-"""
-__version__ = '2.0.9'
-__all__ = [
-    'dump', 'dumps', 'load', 'loads',
-    'JSONDecoder', 'JSONEncoder',
-]
-
-__author__ = 'Bob Ippolito <bob@redivi.com>'
-
-from .decoder import JSONDecoder
-from .encoder import JSONEncoder
-
-_default_encoder = JSONEncoder(
-    skipkeys=False,
-    ensure_ascii=True,
-    check_circular=True,
-    allow_nan=True,
-    indent=None,
-    separators=None,
-    encoding='utf-8',
-    default=None,
-)
-
-def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,
-        allow_nan=True, cls=None, indent=None, separators=None,
-        encoding='utf-8', default=None, **kw):
-    """Serialize ``obj`` as a JSON formatted stream to ``fp`` (a
-    ``.write()``-supporting file-like object).
-
-    If ``skipkeys`` is true then ``dict`` keys that are not basic types
-    (``str``, ``unicode``, ``int``, ``long``, ``float``, ``bool``, ``None``)
-    will be skipped instead of raising a ``TypeError``.
-
-    If ``ensure_ascii`` is false, then the some chunks written to ``fp``
-    may be ``unicode`` instances, subject to normal Python ``str`` to
-    ``unicode`` coercion rules. Unless ``fp.write()`` explicitly
-    understands ``unicode`` (as in ``codecs.getwriter()``) this is likely
-    to cause an error.
-
-    If ``check_circular`` is false, then the circular reference check
-    for container types will be skipped and a circular reference will
-    result in an ``OverflowError`` (or worse).
-
-    If ``allow_nan`` is false, then it will be a ``ValueError`` to
-    serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``)
-    in strict compliance of the JSON specification, instead of using the
-    JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).
-
-    If ``indent`` is a non-negative integer, then JSON array elements and
-    object members will be pretty-printed with that indent level. An indent
-    level of 0 will only insert newlines. ``None`` is the most compact
-    representation.
-
-    If ``separators`` is an ``(item_separator, dict_separator)`` tuple
-    then it will be used instead of the default ``(', ', ': ')`` separators.
-    ``(',', ':')`` is the most compact JSON representation.
-
-    ``encoding`` is the character encoding for str instances, default is UTF-8.
-
-    ``default(obj)`` is a function that should return a serializable version
-    of obj or raise TypeError. The default simply raises TypeError.
-
-    To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the
-    ``.default()`` method to serialize additional types), specify it with
-    the ``cls`` kwarg; otherwise ``JSONEncoder`` is used.
-
-    """
-    # cached encoder
-    if (not skipkeys and ensure_ascii and
-        check_circular and allow_nan and
-        cls is None and indent is None and separators is None and
-        encoding == 'utf-8' and default is None and not kw):
-        iterable = _default_encoder.iterencode(obj)
-    else:
-        if cls is None:
-            cls = JSONEncoder
-        iterable = cls(skipkeys=skipkeys, ensure_ascii=ensure_ascii,
-            check_circular=check_circular, allow_nan=allow_nan, indent=indent,
-            separators=separators, encoding=encoding,
-            default=default, **kw).iterencode(obj)
-    # could accelerate with writelines in some versions of Python, at
-    # a debuggability cost
-    for chunk in iterable:
-        fp.write(chunk)
-
-
-def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,
-        allow_nan=True, cls=None, indent=None, separators=None,
-        encoding='utf-8', default=None, **kw):
-    """Serialize ``obj`` to a JSON formatted ``str``.
-
-    If ``skipkeys`` is false then ``dict`` keys that are not basic types
-    (``str``, ``unicode``, ``int``, ``long``, ``float``, ``bool``, ``None``)
-    will be skipped instead of raising a ``TypeError``.
-
-    If ``ensure_ascii`` is false, then the return value will be a
-    ``unicode`` instance subject to normal Python ``str`` to ``unicode``
-    coercion rules instead of being escaped to an ASCII ``str``.
-
-    If ``check_circular`` is false, then the circular reference check
-    for container types will be skipped and a circular reference will
-    result in an ``OverflowError`` (or worse).
-
-    If ``allow_nan`` is false, then it will be a ``ValueError`` to
-    serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``) in
-    strict compliance of the JSON specification, instead of using the
-    JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).
-
-    If ``indent`` is a non-negative integer, then JSON array elements and
-    object members will be pretty-printed with that indent level. An indent
-    level of 0 will only insert newlines. ``None`` is the most compact
-    representation.
-
-    If ``separators`` is an ``(item_separator, dict_separator)`` tuple
-    then it will be used instead of the default ``(', ', ': ')`` separators.
-    ``(',', ':')`` is the most compact JSON representation.
-
-    ``encoding`` is the character encoding for str instances, default is UTF-8.
-
-    ``default(obj)`` is a function that should return a serializable version
-    of obj or raise TypeError. The default simply raises TypeError.
-
-    To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the
-    ``.default()`` method to serialize additional types), specify it with
-    the ``cls`` kwarg; otherwise ``JSONEncoder`` is used.
-
-    """
-    # cached encoder
-    if (not skipkeys and ensure_ascii and
-        check_circular and allow_nan and
-        cls is None and indent is None and separators is None and
-        encoding == 'utf-8' and default is None and not kw):
-        return _default_encoder.encode(obj)
-    if cls is None:
-        cls = JSONEncoder
-    return cls(
-        skipkeys=skipkeys, ensure_ascii=ensure_ascii,
-        check_circular=check_circular, allow_nan=allow_nan, indent=indent,
-        separators=separators, encoding=encoding, default=default,
-        **kw).encode(obj)
-
-
-_default_decoder = JSONDecoder(encoding=None, object_hook=None,
-                               object_pairs_hook=None)
-
-
-def load(fp, encoding=None, cls=None, object_hook=None, parse_float=None,
-        parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
-    """Deserialize ``fp`` (a ``.read()``-supporting file-like object containing
-    a JSON document) to a Python object.
-
-    If the contents of ``fp`` is encoded with an ASCII based encoding other
-    than utf-8 (e.g. latin-1), then an appropriate ``encoding`` name must
-    be specified. Encodings that are not ASCII based (such as UCS-2) are
-    not allowed, and should be wrapped with
-    ``codecs.getreader(fp)(encoding)``, or simply decoded to a ``unicode``
-    object and passed to ``loads()``
-
-    ``object_hook`` is an optional function that will be called with the
-    result of any object literal decode (a ``dict``). The return value of
-    ``object_hook`` will be used instead of the ``dict``. This feature
-    can be used to implement custom decoders (e.g. JSON-RPC class hinting).
-
-    ``object_pairs_hook`` is an optional function that will be called with the
-    result of any object literal decoded with an ordered list of pairs.  The
-    return value of ``object_pairs_hook`` will be used instead of the ``dict``.
-    This feature can be used to implement custom decoders that rely on the
-    order that the key and value pairs are decoded (for example,
-    collections.OrderedDict will remember the order of insertion). If
-    ``object_hook`` is also defined, the ``object_pairs_hook`` takes priority.
-
-    To use a custom ``JSONDecoder`` subclass, specify it with the ``cls``
-    kwarg; otherwise ``JSONDecoder`` is used.
-
-    """
-    return loads(fp.read(),
-        encoding=encoding, cls=cls, object_hook=object_hook,
-        parse_float=parse_float, parse_int=parse_int,
-        parse_constant=parse_constant, object_pairs_hook=object_pairs_hook,
-        **kw)
-
-
-def loads(s, encoding=None, cls=None, object_hook=None, parse_float=None,
-        parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
-    """Deserialize ``s`` (a ``str`` or ``unicode`` instance containing a JSON
-    document) to a Python object.
-
-    If ``s`` is a ``str`` instance and is encoded with an ASCII based encoding
-    other than utf-8 (e.g. latin-1) then an appropriate ``encoding`` name
-    must be specified. Encodings that are not ASCII based (such as UCS-2)
-    are not allowed and should be decoded to ``unicode`` first.
-
-    ``object_hook`` is an optional function that will be called with the
-    result of any object literal decode (a ``dict``). The return value of
-    ``object_hook`` will be used instead of the ``dict``. This feature
-    can be used to implement custom decoders (e.g. JSON-RPC class hinting).
-
-    ``object_pairs_hook`` is an optional function that will be called with the
-    result of any object literal decoded with an ordered list of pairs.  The
-    return value of ``object_pairs_hook`` will be used instead of the ``dict``.
-    This feature can be used to implement custom decoders that rely on the
-    order that the key and value pairs are decoded (for example,
-    collections.OrderedDict will remember the order of insertion). If
-    ``object_hook`` is also defined, the ``object_pairs_hook`` takes priority.
-
-    ``parse_float``, if specified, will be called with the string
-    of every JSON float to be decoded. By default this is equivalent to
-    float(num_str). This can be used to use another datatype or parser
-    for JSON floats (e.g. decimal.Decimal).
-
-    ``parse_int``, if specified, will be called with the string
-    of every JSON int to be decoded. By default this is equivalent to
-    int(num_str). This can be used to use another datatype or parser
-    for JSON integers (e.g. float).
-
-    ``parse_constant``, if specified, will be called with one of the
-    following strings: -Infinity, Infinity, NaN, null, true, false.
-    This can be used to raise an exception if invalid JSON numbers
-    are encountered.
-
-    To use a custom ``JSONDecoder`` subclass, specify it with the ``cls``
-    kwarg; otherwise ``JSONDecoder`` is used.
-
-    """
-    if (cls is None and encoding is None and object_hook is None and
-            parse_int is None and parse_float is None and
-            parse_constant is None and object_pairs_hook is None and not kw):
-        return _default_decoder.decode(s)
-    if cls is None:
-        cls = JSONDecoder
-    if object_hook is not None:
-        kw['object_hook'] = object_hook
-    if object_pairs_hook is not None:
-        kw['object_pairs_hook'] = object_pairs_hook
-    if parse_float is not None:
-        kw['parse_float'] = parse_float
-    if parse_int is not None:
-        kw['parse_int'] = parse_int
-    if parse_constant is not None:
-        kw['parse_constant'] = parse_constant
-    return cls(encoding=encoding, **kw).decode(s)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/decoder.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/decoder.py
deleted file mode 100644
index dcae8f7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/decoder.py
+++ /dev/null
@@ -1,385 +0,0 @@
-"""Implementation of JSONDecoder
-"""
-import re
-import sys
-import struct
-
-from json import scanner
-try:
-    from _json import scanstring as c_scanstring
-except ImportError:
-    c_scanstring = None
-
-__all__ = ['JSONDecoder']
-
-FLAGS = re.VERBOSE | re.MULTILINE | re.DOTALL
-
-def _floatconstants():
-    _BYTES = '7FF80000000000007FF0000000000000'.decode('hex')
-    if sys.byteorder != 'big':
-        _BYTES = _BYTES[:8][::-1] + _BYTES[8:][::-1]
-    nan, inf = struct.unpack('dd', _BYTES)
-    return nan, inf, -inf
-
-NaN, PosInf, NegInf = _floatconstants()
-
-
-def linecol(doc, pos):
-    lineno = doc.count('\n', 0, pos) + 1
-    if lineno == 1:
-        colno = pos
-    else:
-        colno = pos - doc.rindex('\n', 0, pos)
-    return lineno, colno
-
-
-def errmsg(msg, doc, pos, end=None):
-    # Note that this function is called from _json
-    lineno, colno = linecol(doc, pos)
-    if end is None:
-        fmt = '{0}: line {1} column {2} (char {3})'
-        return fmt.format(msg, lineno, colno, pos)
-        #fmt = '%s: line %d column %d (char %d)'
-        #return fmt % (msg, lineno, colno, pos)
-    endlineno, endcolno = linecol(doc, end)
-    fmt = '{0}: line {1} column {2} - line {3} column {4} (char {5} - {6})'
-    return fmt.format(msg, lineno, colno, endlineno, endcolno, pos, end)
-    #fmt = '%s: line %d column %d - line %d column %d (char %d - %d)'
-    #return fmt % (msg, lineno, colno, endlineno, endcolno, pos, end)
-
-
-_CONSTANTS = {
-    '-Infinity': NegInf,
-    'Infinity': PosInf,
-    'NaN': NaN,
-}
-
-STRINGCHUNK = re.compile(r'(.*?)(["\\\x00-\x1f])', FLAGS)
-BACKSLASH = {
-    '"': u'"', '\\': u'\\', '/': u'/',
-    'b': u'\b', 'f': u'\f', 'n': u'\n', 'r': u'\r', 't': u'\t',
-}
-
-DEFAULT_ENCODING = "utf-8"
-
-def py_scanstring(s, end, encoding=None, strict=True,
-        _b=BACKSLASH, _m=STRINGCHUNK.match):
-    """Scan the string s for a JSON string. End is the index of the
-    character in s after the quote that started the JSON string.
-    Unescapes all valid JSON string escape sequences and raises ValueError
-    on attempt to decode an invalid string. If strict is False then literal
-    control characters are allowed in the string.
-
-    Returns a tuple of the decoded string and the index of the character in s
-    after the end quote."""
-    if encoding is None:
-        encoding = DEFAULT_ENCODING
-    chunks = []
-    _append = chunks.append
-    begin = end - 1
-    while 1:
-        chunk = _m(s, end)
-        if chunk is None:
-            raise ValueError(
-                errmsg("Unterminated string starting at", s, begin))
-        end = chunk.end()
-        content, terminator = chunk.groups()
-        # Content is contains zero or more unescaped string characters
-        if content:
-            if not isinstance(content, unicode):
-                content = unicode(content, encoding)
-            _append(content)
-        # Terminator is the end of string, a literal control character,
-        # or a backslash denoting that an escape sequence follows
-        if terminator == '"':
-            break
-        elif terminator != '\\':
-            if strict:
-                #msg = "Invalid control character %r at" % (terminator,)
-                msg = "Invalid control character {0!r} at".format(terminator)
-                raise ValueError(errmsg(msg, s, end))
-            else:
-                _append(terminator)
-                continue
-        try:
-            esc = s[end]
-        except IndexError:
-            raise ValueError(
-                errmsg("Unterminated string starting at", s, begin))
-        # If not a unicode escape sequence, must be in the lookup table
-        if esc != 'u':
-            try:
-                char = _b[esc]
-            except KeyError:
-                msg = "Invalid \\escape: " + repr(esc)
-                raise ValueError(errmsg(msg, s, end))
-            end += 1
-        else:
-            # Unicode escape sequence
-            esc = s[end + 1:end + 5]
-            next_end = end + 5
-            if len(esc) != 4:
-                msg = "Invalid \\uXXXX escape"
-                raise ValueError(errmsg(msg, s, end))
-            uni = int(esc, 16)
-            # Check for surrogate pair on UCS-4 systems
-            if 0xd800 <= uni <= 0xdbff and sys.maxunicode > 65535:
-                msg = "Invalid \\uXXXX\\uXXXX surrogate pair"
-                if not s[end + 5:end + 7] == '\\u':
-                    raise ValueError(errmsg(msg, s, end))
-                esc2 = s[end + 7:end + 11]
-                if len(esc2) != 4:
-                    raise ValueError(errmsg(msg, s, end))
-                uni2 = int(esc2, 16)
-                uni = 0x10000 + (((uni - 0xd800) << 10) | (uni2 - 0xdc00))
-                next_end += 6
-            char = unichr(uni)
-            end = next_end
-        # Append the unescaped character
-        _append(char)
-    return u''.join(chunks), end
-
-
-# Use speedup if available
-scanstring = c_scanstring or py_scanstring
-
-WHITESPACE = re.compile(r'[ \t\n\r]*', FLAGS)
-WHITESPACE_STR = ' \t\n\r'
-
-def JSONObject(s_and_end, encoding, strict, scan_once, object_hook,
-               object_pairs_hook, _w=WHITESPACE.match, _ws=WHITESPACE_STR):
-    s, end = s_and_end
-    pairs = []
-    pairs_append = pairs.append
-    # Use a slice to prevent IndexError from being raised, the following
-    # check will raise a more specific ValueError if the string is empty
-    nextchar = s[end:end + 1]
-    # Normally we expect nextchar == '"'
-    if nextchar != '"':
-        if nextchar in _ws:
-            end = _w(s, end).end()
-            nextchar = s[end:end + 1]
-        # Trivial empty object
-        if nextchar == '}':
-            if object_pairs_hook is not None:
-                result = object_pairs_hook(pairs)
-                return result, end
-            pairs = {}
-            if object_hook is not None:
-                pairs = object_hook(pairs)
-            return pairs, end + 1
-        elif nextchar != '"':
-            raise ValueError(errmsg("Expecting property name", s, end))
-    end += 1
-    while True:
-        key, end = scanstring(s, end, encoding, strict)
-
-        # To skip some function call overhead we optimize the fast paths where
-        # the JSON key separator is ": " or just ":".
-        if s[end:end + 1] != ':':
-            end = _w(s, end).end()
-            if s[end:end + 1] != ':':
-                raise ValueError(errmsg("Expecting : delimiter", s, end))
-
-        end += 1
-
-        try:
-            if s[end] in _ws:
-                end += 1
-                if s[end] in _ws:
-                    end = _w(s, end + 1).end()
-        except IndexError:
-            pass
-
-        try:
-            value, end = scan_once(s, end)
-        except StopIteration:
-            raise ValueError(errmsg("Expecting object", s, end))
-        pairs_append((key, value))
-
-        try:
-            nextchar = s[end]
-            if nextchar in _ws:
-                end = _w(s, end + 1).end()
-                nextchar = s[end]
-        except IndexError:
-            nextchar = ''
-        end += 1
-
-        if nextchar == '}':
-            break
-        elif nextchar != ',':
-            raise ValueError(errmsg("Expecting , delimiter", s, end - 1))
-
-        try:
-            nextchar = s[end]
-            if nextchar in _ws:
-                end += 1
-                nextchar = s[end]
-                if nextchar in _ws:
-                    end = _w(s, end + 1).end()
-                    nextchar = s[end]
-        except IndexError:
-            nextchar = ''
-
-        end += 1
-        if nextchar != '"':
-            raise ValueError(errmsg("Expecting property name", s, end - 1))
-
-    if object_pairs_hook is not None:
-        result = object_pairs_hook(pairs)
-        return result, end
-    pairs = dict(pairs)
-    if object_hook is not None:
-        pairs = object_hook(pairs)
-    return pairs, end
-
-def JSONArray(s_and_end, scan_once, _w=WHITESPACE.match, _ws=WHITESPACE_STR):
-    s, end = s_and_end
-    values = []
-    nextchar = s[end:end + 1]
-    if nextchar in _ws:
-        end = _w(s, end + 1).end()
-        nextchar = s[end:end + 1]
-    # Look-ahead for trivial empty array
-    if nextchar == ']':
-        return values, end + 1
-    _append = values.append
-    while True:
-        try:
-            value, end = scan_once(s, end)
-        except StopIteration:
-            raise ValueError(errmsg("Expecting object", s, end))
-        _append(value)
-        nextchar = s[end:end + 1]
-        if nextchar in _ws:
-            end = _w(s, end + 1).end()
-            nextchar = s[end:end + 1]
-        end += 1
-        if nextchar == ']':
-            break
-        elif nextchar != ',':
-            raise ValueError(errmsg("Expecting , delimiter", s, end))
-
-        try:
-            if s[end] in _ws:
-                end += 1
-                if s[end] in _ws:
-                    end = _w(s, end + 1).end()
-        except IndexError:
-            pass
-
-    return values, end
-
-class JSONDecoder(object):
-    """Simple JSON <http://json.org> decoder
-
-    Performs the following translations in decoding by default:
-
-    +---------------+-------------------+
-    | JSON          | Python            |
-    +===============+===================+
-    | object        | dict              |
-    +---------------+-------------------+
-    | array         | list              |
-    +---------------+-------------------+
-    | string        | unicode           |
-    +---------------+-------------------+
-    | number (int)  | int, long         |
-    +---------------+-------------------+
-    | number (real) | float             |
-    +---------------+-------------------+
-    | true          | True              |
-    +---------------+-------------------+
-    | false         | False             |
-    +---------------+-------------------+
-    | null          | None              |
-    +---------------+-------------------+
-
-    It also understands ``NaN``, ``Infinity``, and ``-Infinity`` as
-    their corresponding ``float`` values, which is outside the JSON spec.
-
-    """
-
-    def __init__(self, encoding=None, object_hook=None, parse_float=None,
-            parse_int=None, parse_constant=None, strict=True,
-            object_pairs_hook=None):
-        """``encoding`` determines the encoding used to interpret any ``str``
-        objects decoded by this instance (utf-8 by default).  It has no
-        effect when decoding ``unicode`` objects.
-
-        Note that currently only encodings that are a superset of ASCII work,
-        strings of other encodings should be passed in as ``unicode``.
-
-        ``object_hook``, if specified, will be called with the result
-        of every JSON object decoded and its return value will be used in
-        place of the given ``dict``.  This can be used to provide custom
-        deserializations (e.g. to support JSON-RPC class hinting).
-
-        ``object_pairs_hook``, if specified will be called with the result of
-        every JSON object decoded with an ordered list of pairs.  The return
-        value of ``object_pairs_hook`` will be used instead of the ``dict``.
-        This feature can be used to implement custom decoders that rely on the
-        order that the key and value pairs are decoded (for example,
-        collections.OrderedDict will remember the order of insertion). If
-        ``object_hook`` is also defined, the ``object_pairs_hook`` takes
-        priority.
-
-        ``parse_float``, if specified, will be called with the string
-        of every JSON float to be decoded. By default this is equivalent to
-        float(num_str). This can be used to use another datatype or parser
-        for JSON floats (e.g. decimal.Decimal).
-
-        ``parse_int``, if specified, will be called with the string
-        of every JSON int to be decoded. By default this is equivalent to
-        int(num_str). This can be used to use another datatype or parser
-        for JSON integers (e.g. float).
-
-        ``parse_constant``, if specified, will be called with one of the
-        following strings: -Infinity, Infinity, NaN.
-        This can be used to raise an exception if invalid JSON numbers
-        are encountered.
-
-        If ``strict`` is false (true is the default), then control
-        characters will be allowed inside strings.  Control characters in
-        this context are those with character codes in the 0-31 range,
-        including ``'\\t'`` (tab), ``'\\n'``, ``'\\r'`` and ``'\\0'``.
-
-        """
-        self.encoding = encoding
-        self.object_hook = object_hook
-        self.object_pairs_hook = object_pairs_hook
-        self.parse_float = parse_float or float
-        self.parse_int = parse_int or int
-        self.parse_constant = parse_constant or _CONSTANTS.__getitem__
-        self.strict = strict
-        self.parse_object = JSONObject
-        self.parse_array = JSONArray
-        self.parse_string = scanstring
-        self.scan_once = scanner.make_scanner(self)
-
-    def decode(self, s, _w=WHITESPACE.match):
-        """Return the Python representation of ``s`` (a ``str`` or ``unicode``
-        instance containing a JSON document)
-
-        """
-        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
-        end = _w(s, end).end()
-        if end != len(s):
-            raise ValueError(errmsg("Extra data", s, end, len(s)))
-        return obj
-
-    def raw_decode(self, s, idx=0):
-        """Decode a JSON document from ``s`` (a ``str`` or ``unicode``
-        beginning with a JSON document) and return a 2-tuple of the Python
-        representation and the index in ``s`` where the document ended.
-
-        This can be used to decode a JSON document from a string that may
-        have extraneous data at the end.
-
-        """
-        try:
-            obj, end = self.scan_once(s, idx)
-        except StopIteration:
-            raise ValueError("No JSON object could be decoded")
-        return obj, end
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/encoder.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/encoder.py
deleted file mode 100644
index 5de8978..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/encoder.py
+++ /dev/null
@@ -1,442 +0,0 @@
-"""Implementation of JSONEncoder
-"""
-import re
-
-try:
-    from _json import encode_basestring_ascii as c_encode_basestring_ascii
-except ImportError:
-    c_encode_basestring_ascii = None
-try:
-    from _json import make_encoder as c_make_encoder
-except ImportError:
-    c_make_encoder = None
-
-ESCAPE = re.compile(r'[\x00-\x1f\\"\b\f\n\r\t]')
-ESCAPE_ASCII = re.compile(r'([\\"]|[^\ -~])')
-HAS_UTF8 = re.compile(r'[\x80-\xff]')
-ESCAPE_DCT = {
-    '\\': '\\\\',
-    '"': '\\"',
-    '\b': '\\b',
-    '\f': '\\f',
-    '\n': '\\n',
-    '\r': '\\r',
-    '\t': '\\t',
-}
-for i in range(0x20):
-    ESCAPE_DCT.setdefault(chr(i), '\\u{0:04x}'.format(i))
-    #ESCAPE_DCT.setdefault(chr(i), '\\u%04x' % (i,))
-
-# Assume this produces an infinity on all machines (probably not guaranteed)
-INFINITY = float('1e66666')
-FLOAT_REPR = repr
-
-def encode_basestring(s):
-    """Return a JSON representation of a Python string
-
-    """
-    def replace(match):
-        return ESCAPE_DCT[match.group(0)]
-    return '"' + ESCAPE.sub(replace, s) + '"'
-
-
-def py_encode_basestring_ascii(s):
-    """Return an ASCII-only JSON representation of a Python string
-
-    """
-    if isinstance(s, str) and HAS_UTF8.search(s) is not None:
-        s = s.decode('utf-8')
-    def replace(match):
-        s = match.group(0)
-        try:
-            return ESCAPE_DCT[s]
-        except KeyError:
-            n = ord(s)
-            if n < 0x10000:
-                return '\\u{0:04x}'.format(n)
-                #return '\\u%04x' % (n,)
-            else:
-                # surrogate pair
-                n -= 0x10000
-                s1 = 0xd800 | ((n >> 10) & 0x3ff)
-                s2 = 0xdc00 | (n & 0x3ff)
-                return '\\u{0:04x}\\u{1:04x}'.format(s1, s2)
-                #return '\\u%04x\\u%04x' % (s1, s2)
-    return '"' + str(ESCAPE_ASCII.sub(replace, s)) + '"'
-
-
-encode_basestring_ascii = (
-    c_encode_basestring_ascii or py_encode_basestring_ascii)
-
-class JSONEncoder(object):
-    """Extensible JSON <http://json.org> encoder for Python data structures.
-
-    Supports the following objects and types by default:
-
-    +-------------------+---------------+
-    | Python            | JSON          |
-    +===================+===============+
-    | dict              | object        |
-    +-------------------+---------------+
-    | list, tuple       | array         |
-    +-------------------+---------------+
-    | str, unicode      | string        |
-    +-------------------+---------------+
-    | int, long, float  | number        |
-    +-------------------+---------------+
-    | True              | true          |
-    +-------------------+---------------+
-    | False             | false         |
-    +-------------------+---------------+
-    | None              | null          |
-    +-------------------+---------------+
-
-    To extend this to recognize other objects, subclass and implement a
-    ``.default()`` method with another method that returns a serializable
-    object for ``o`` if possible, otherwise it should call the superclass
-    implementation (to raise ``TypeError``).
-
-    """
-    item_separator = ', '
-    key_separator = ': '
-    def __init__(self, skipkeys=False, ensure_ascii=True,
-            check_circular=True, allow_nan=True, sort_keys=False,
-            indent=None, separators=None, encoding='utf-8', default=None):
-        """Constructor for JSONEncoder, with sensible defaults.
-
-        If skipkeys is false, then it is a TypeError to attempt
-        encoding of keys that are not str, int, long, float or None.  If
-        skipkeys is True, such items are simply skipped.
-
-        If ensure_ascii is true, the output is guaranteed to be str
-        objects with all incoming unicode characters escaped.  If
-        ensure_ascii is false, the output will be unicode object.
-
-        If check_circular is true, then lists, dicts, and custom encoded
-        objects will be checked for circular references during encoding to
-        prevent an infinite recursion (which would cause an OverflowError).
-        Otherwise, no such check takes place.
-
-        If allow_nan is true, then NaN, Infinity, and -Infinity will be
-        encoded as such.  This behavior is not JSON specification compliant,
-        but is consistent with most JavaScript based encoders and decoders.
-        Otherwise, it will be a ValueError to encode such floats.
-
-        If sort_keys is true, then the output of dictionaries will be
-        sorted by key; this is useful for regression tests to ensure
-        that JSON serializations can be compared on a day-to-day basis.
-
-        If indent is a non-negative integer, then JSON array
-        elements and object members will be pretty-printed with that
-        indent level.  An indent level of 0 will only insert newlines.
-        None is the most compact representation.
-
-        If specified, separators should be a (item_separator, key_separator)
-        tuple.  The default is (', ', ': ').  To get the most compact JSON
-        representation you should specify (',', ':') to eliminate whitespace.
-
-        If specified, default is a function that gets called for objects
-        that can't otherwise be serialized.  It should return a JSON encodable
-        version of the object or raise a ``TypeError``.
-
-        If encoding is not None, then all input strings will be
-        transformed into unicode using that encoding prior to JSON-encoding.
-        The default is UTF-8.
-
-        """
-
-        self.skipkeys = skipkeys
-        self.ensure_ascii = ensure_ascii
-        self.check_circular = check_circular
-        self.allow_nan = allow_nan
-        self.sort_keys = sort_keys
-        self.indent = indent
-        if separators is not None:
-            self.item_separator, self.key_separator = separators
-        if default is not None:
-            self.default = default
-        self.encoding = encoding
-
-    def default(self, o):
-        """Implement this method in a subclass such that it returns
-        a serializable object for ``o``, or calls the base implementation
-        (to raise a ``TypeError``).
-
-        For example, to support arbitrary iterators, you could
-        implement default like this::
-
-            def default(self, o):
-                try:
-                    iterable = iter(o)
-                except TypeError:
-                    pass
-                else:
-                    return list(iterable)
-                return JSONEncoder.default(self, o)
-
-        """
-        raise TypeError(repr(o) + " is not JSON serializable")
-
-    def encode(self, o):
-        """Return a JSON string representation of a Python data structure.
-
-        >>> JSONEncoder().encode({"foo": ["bar", "baz"]})
-        '{"foo": ["bar", "baz"]}'
-
-        """
-        # This is for extremely simple cases and benchmarks.
-        if isinstance(o, basestring):
-            if isinstance(o, str):
-                _encoding = self.encoding
-                if (_encoding is not None
-                        and not (_encoding == 'utf-8')):
-                    o = o.decode(_encoding)
-            if self.ensure_ascii:
-                return encode_basestring_ascii(o)
-            else:
-                return encode_basestring(o)
-        # This doesn't pass the iterator directly to ''.join() because the
-        # exceptions aren't as detailed.  The list call should be roughly
-        # equivalent to the PySequence_Fast that ''.join() would do.
-        chunks = self.iterencode(o, _one_shot=True)
-        if not isinstance(chunks, (list, tuple)):
-            chunks = list(chunks)
-        return ''.join(chunks)
-
-    def iterencode(self, o, _one_shot=False):
-        """Encode the given object and yield each string
-        representation as available.
-
-        For example::
-
-            for chunk in JSONEncoder().iterencode(bigobject):
-                mysocket.write(chunk)
-
-        """
-        if self.check_circular:
-            markers = {}
-        else:
-            markers = None
-        if self.ensure_ascii:
-            _encoder = encode_basestring_ascii
-        else:
-            _encoder = encode_basestring
-        if self.encoding != 'utf-8':
-            def _encoder(o, _orig_encoder=_encoder, _encoding=self.encoding):
-                if isinstance(o, str):
-                    o = o.decode(_encoding)
-                return _orig_encoder(o)
-
-        def floatstr(o, allow_nan=self.allow_nan,
-                _repr=FLOAT_REPR, _inf=INFINITY, _neginf=-INFINITY):
-            # Check for specials.  Note that this type of test is processor
-            # and/or platform-specific, so do tests which don't depend on the
-            # internals.
-
-            if o != o:
-                text = 'NaN'
-            elif o == _inf:
-                text = 'Infinity'
-            elif o == _neginf:
-                text = '-Infinity'
-            else:
-                return _repr(o)
-
-            if not allow_nan:
-                raise ValueError(
-                    "Out of range float values are not JSON compliant: " +
-                    repr(o))
-
-            return text
-
-
-        if (_one_shot and c_make_encoder is not None
-                and self.indent is None and not self.sort_keys):
-            _iterencode = c_make_encoder(
-                markers, self.default, _encoder, self.indent,
-                self.key_separator, self.item_separator, self.sort_keys,
-                self.skipkeys, self.allow_nan)
-        else:
-            _iterencode = _make_iterencode(
-                markers, self.default, _encoder, self.indent, floatstr,
-                self.key_separator, self.item_separator, self.sort_keys,
-                self.skipkeys, _one_shot)
-        return _iterencode(o, 0)
-
-def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,
-        _key_separator, _item_separator, _sort_keys, _skipkeys, _one_shot,
-        ## HACK: hand-optimized bytecode; turn globals into locals
-        ValueError=ValueError,
-        basestring=basestring,
-        dict=dict,
-        float=float,
-        id=id,
-        int=int,
-        isinstance=isinstance,
-        list=list,
-        long=long,
-        str=str,
-        tuple=tuple,
-    ):
-
-    def _iterencode_list(lst, _current_indent_level):
-        if not lst:
-            yield '[]'
-            return
-        if markers is not None:
-            markerid = id(lst)
-            if markerid in markers:
-                raise ValueError("Circular reference detected")
-            markers[markerid] = lst
-        buf = '['
-        if _indent is not None:
-            _current_indent_level += 1
-            newline_indent = '\n' + (' ' * (_indent * _current_indent_level))
-            separator = _item_separator + newline_indent
-            buf += newline_indent
-        else:
-            newline_indent = None
-            separator = _item_separator
-        first = True
-        for value in lst:
-            if first:
-                first = False
-            else:
-                buf = separator
-            if isinstance(value, basestring):
-                yield buf + _encoder(value)
-            elif value is None:
-                yield buf + 'null'
-            elif value is True:
-                yield buf + 'true'
-            elif value is False:
-                yield buf + 'false'
-            elif isinstance(value, (int, long)):
-                yield buf + str(value)
-            elif isinstance(value, float):
-                yield buf + _floatstr(value)
-            else:
-                yield buf
-                if isinstance(value, (list, tuple)):
-                    chunks = _iterencode_list(value, _current_indent_level)
-                elif isinstance(value, dict):
-                    chunks = _iterencode_dict(value, _current_indent_level)
-                else:
-                    chunks = _iterencode(value, _current_indent_level)
-                for chunk in chunks:
-                    yield chunk
-        if newline_indent is not None:
-            _current_indent_level -= 1
-            yield '\n' + (' ' * (_indent * _current_indent_level))
-        yield ']'
-        if markers is not None:
-            del markers[markerid]
-
-    def _iterencode_dict(dct, _current_indent_level):
-        if not dct:
-            yield '{}'
-            return
-        if markers is not None:
-            markerid = id(dct)
-            if markerid in markers:
-                raise ValueError("Circular reference detected")
-            markers[markerid] = dct
-        yield '{'
-        if _indent is not None:
-            _current_indent_level += 1
-            newline_indent = '\n' + (' ' * (_indent * _current_indent_level))
-            item_separator = _item_separator + newline_indent
-            yield newline_indent
-        else:
-            newline_indent = None
-            item_separator = _item_separator
-        first = True
-        if _sort_keys:
-            items = sorted(dct.items(), key=lambda kv: kv[0])
-        else:
-            items = dct.iteritems()
-        for key, value in items:
-            if isinstance(key, basestring):
-                pass
-            # JavaScript is weakly typed for these, so it makes sense to
-            # also allow them.  Many encoders seem to do something like this.
-            elif isinstance(key, float):
-                key = _floatstr(key)
-            elif key is True:
-                key = 'true'
-            elif key is False:
-                key = 'false'
-            elif key is None:
-                key = 'null'
-            elif isinstance(key, (int, long)):
-                key = str(key)
-            elif _skipkeys:
-                continue
-            else:
-                raise TypeError("key " + repr(key) + " is not a string")
-            if first:
-                first = False
-            else:
-                yield item_separator
-            yield _encoder(key)
-            yield _key_separator
-            if isinstance(value, basestring):
-                yield _encoder(value)
-            elif value is None:
-                yield 'null'
-            elif value is True:
-                yield 'true'
-            elif value is False:
-                yield 'false'
-            elif isinstance(value, (int, long)):
-                yield str(value)
-            elif isinstance(value, float):
-                yield _floatstr(value)
-            else:
-                if isinstance(value, (list, tuple)):
-                    chunks = _iterencode_list(value, _current_indent_level)
-                elif isinstance(value, dict):
-                    chunks = _iterencode_dict(value, _current_indent_level)
-                else:
-                    chunks = _iterencode(value, _current_indent_level)
-                for chunk in chunks:
-                    yield chunk
-        if newline_indent is not None:
-            _current_indent_level -= 1
-            yield '\n' + (' ' * (_indent * _current_indent_level))
-        yield '}'
-        if markers is not None:
-            del markers[markerid]
-
-    def _iterencode(o, _current_indent_level):
-        if isinstance(o, basestring):
-            yield _encoder(o)
-        elif o is None:
-            yield 'null'
-        elif o is True:
-            yield 'true'
-        elif o is False:
-            yield 'false'
-        elif isinstance(o, (int, long)):
-            yield str(o)
-        elif isinstance(o, float):
-            yield _floatstr(o)
-        elif isinstance(o, (list, tuple)):
-            for chunk in _iterencode_list(o, _current_indent_level):
-                yield chunk
-        elif isinstance(o, dict):
-            for chunk in _iterencode_dict(o, _current_indent_level):
-                yield chunk
-        else:
-            if markers is not None:
-                markerid = id(o)
-                if markerid in markers:
-                    raise ValueError("Circular reference detected")
-                markers[markerid] = o
-            o = _default(o)
-            for chunk in _iterencode(o, _current_indent_level):
-                yield chunk
-            if markers is not None:
-                del markers[markerid]
-
-    return _iterencode
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/scanner.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/scanner.py
deleted file mode 100644
index 259e955..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/scanner.py
+++ /dev/null
@@ -1,67 +0,0 @@
-"""JSON token scanner
-"""
-import re
-try:
-    from _json import make_scanner as c_make_scanner
-except ImportError:
-    c_make_scanner = None
-
-__all__ = ['make_scanner']
-
-NUMBER_RE = re.compile(
-    r'(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?',
-    (re.VERBOSE | re.MULTILINE | re.DOTALL))
-
-def py_make_scanner(context):
-    parse_object = context.parse_object
-    parse_array = context.parse_array
-    parse_string = context.parse_string
-    match_number = NUMBER_RE.match
-    encoding = context.encoding
-    strict = context.strict
-    parse_float = context.parse_float
-    parse_int = context.parse_int
-    parse_constant = context.parse_constant
-    object_hook = context.object_hook
-    object_pairs_hook = context.object_pairs_hook
-
-    def _scan_once(string, idx):
-        try:
-            nextchar = string[idx]
-        except IndexError:
-            raise StopIteration
-
-        if nextchar == '"':
-            return parse_string(string, idx + 1, encoding, strict)
-        elif nextchar == '{':
-            return parse_object((string, idx + 1), encoding, strict,
-                _scan_once, object_hook, object_pairs_hook)
-        elif nextchar == '[':
-            return parse_array((string, idx + 1), _scan_once)
-        elif nextchar == 'n' and string[idx:idx + 4] == 'null':
-            return None, idx + 4
-        elif nextchar == 't' and string[idx:idx + 4] == 'true':
-            return True, idx + 4
-        elif nextchar == 'f' and string[idx:idx + 5] == 'false':
-            return False, idx + 5
-
-        m = match_number(string, idx)
-        if m is not None:
-            integer, frac, exp = m.groups()
-            if frac or exp:
-                res = parse_float(integer + (frac or '') + (exp or ''))
-            else:
-                res = parse_int(integer)
-            return res, m.end()
-        elif nextchar == 'N' and string[idx:idx + 3] == 'NaN':
-            return parse_constant('NaN'), idx + 3
-        elif nextchar == 'I' and string[idx:idx + 8] == 'Infinity':
-            return parse_constant('Infinity'), idx + 8
-        elif nextchar == '-' and string[idx:idx + 9] == '-Infinity':
-            return parse_constant('-Infinity'), idx + 9
-        else:
-            raise StopIteration
-
-    return _scan_once
-
-make_scanner = c_make_scanner or py_make_scanner
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/__init__.py
deleted file mode 100644
index 17d3849..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/__init__.py
+++ /dev/null
@@ -1,73 +0,0 @@
-import os
-import sys
-import json
-import doctest
-import unittest
-
-from test import test_support
-
-# import json with and without accelerations
-cjson = test_support.import_fresh_module('json', fresh=['_json'])
-pyjson = test_support.import_fresh_module('json', blocked=['_json'])
-
-# create two base classes that will be used by the other tests
-class PyTest(unittest.TestCase):
-    json = pyjson
-    loads = staticmethod(pyjson.loads)
-    dumps = staticmethod(pyjson.dumps)
-
-@unittest.skipUnless(cjson, 'requires _json')
-class CTest(unittest.TestCase):
-    if cjson is not None:
-        json = cjson
-        loads = staticmethod(cjson.loads)
-        dumps = staticmethod(cjson.dumps)
-
-# test PyTest and CTest checking if the functions come from the right module
-class TestPyTest(PyTest):
-    def test_pyjson(self):
-        self.assertEqual(self.json.scanner.make_scanner.__module__,
-                         'json.scanner')
-        self.assertEqual(self.json.decoder.scanstring.__module__,
-                         'json.decoder')
-        self.assertEqual(self.json.encoder.encode_basestring_ascii.__module__,
-                         'json.encoder')
-
-class TestCTest(CTest):
-    def test_cjson(self):
-        self.assertEqual(self.json.scanner.make_scanner.__module__, '_json')
-        self.assertEqual(self.json.decoder.scanstring.__module__, '_json')
-        self.assertEqual(self.json.encoder.c_make_encoder.__module__, '_json')
-        self.assertEqual(self.json.encoder.encode_basestring_ascii.__module__,
-                         '_json')
-
-
-here = os.path.dirname(__file__)
-
-def test_suite():
-    suite = additional_tests()
-    loader = unittest.TestLoader()
-    for fn in os.listdir(here):
-        if fn.startswith("test") and fn.endswith(".py"):
-            modname = "json.tests." + fn[:-3]
-            __import__(modname)
-            module = sys.modules[modname]
-            suite.addTests(loader.loadTestsFromModule(module))
-    return suite
-
-def additional_tests():
-    suite = unittest.TestSuite()
-    for mod in (json, json.encoder, json.decoder):
-        suite.addTest(doctest.DocTestSuite(mod))
-    suite.addTest(TestPyTest('test_pyjson'))
-    suite.addTest(TestCTest('test_cjson'))
-    return suite
-
-def main():
-    suite = test_suite()
-    runner = unittest.TextTestRunner()
-    runner.run(suite)
-
-if __name__ == '__main__':
-    sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_check_circular.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_check_circular.py
deleted file mode 100644
index 94a63c5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_check_circular.py
+++ /dev/null
@@ -1,34 +0,0 @@
-from json.tests import PyTest, CTest
-
-
-def default_iterable(obj):
-    return list(obj)
-
-class TestCheckCircular(object):
-    def test_circular_dict(self):
-        dct = {}
-        dct['a'] = dct
-        self.assertRaises(ValueError, self.dumps, dct)
-
-    def test_circular_list(self):
-        lst = []
-        lst.append(lst)
-        self.assertRaises(ValueError, self.dumps, lst)
-
-    def test_circular_composite(self):
-        dct2 = {}
-        dct2['a'] = []
-        dct2['a'].append(dct2)
-        self.assertRaises(ValueError, self.dumps, dct2)
-
-    def test_circular_default(self):
-        self.dumps([set()], default=default_iterable)
-        self.assertRaises(TypeError, self.dumps, [set()])
-
-    def test_circular_off_default(self):
-        self.dumps([set()], default=default_iterable, check_circular=False)
-        self.assertRaises(TypeError, self.dumps, [set()], check_circular=False)
-
-
-class TestPyCheckCircular(TestCheckCircular, PyTest): pass
-class TestCCheckCircular(TestCheckCircular, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_decode.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_decode.py
deleted file mode 100644
index fd3e66a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_decode.py
+++ /dev/null
@@ -1,50 +0,0 @@
-import decimal
-from StringIO import StringIO
-from collections import OrderedDict
-from json.tests import PyTest, CTest
-
-
-class TestDecode(object):
-    def test_decimal(self):
-        rval = self.loads('1.1', parse_float=decimal.Decimal)
-        self.assertTrue(isinstance(rval, decimal.Decimal))
-        self.assertEqual(rval, decimal.Decimal('1.1'))
-
-    def test_float(self):
-        rval = self.loads('1', parse_int=float)
-        self.assertTrue(isinstance(rval, float))
-        self.assertEqual(rval, 1.0)
-
-    def test_decoder_optimizations(self):
-        # Several optimizations were made that skip over calls to
-        # the whitespace regex, so this test is designed to try and
-        # exercise the uncommon cases. The array cases are already covered.
-        rval = self.loads('{   "key"    :    "value"    ,  "k":"v"    }')
-        self.assertEqual(rval, {"key":"value", "k":"v"})
-
-    def test_empty_objects(self):
-        self.assertEqual(self.loads('{}'), {})
-        self.assertEqual(self.loads('[]'), [])
-        self.assertEqual(self.loads('""'), u"")
-        self.assertIsInstance(self.loads('""'), unicode)
-
-    def test_object_pairs_hook(self):
-        s = '{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}'
-        p = [("xkd", 1), ("kcw", 2), ("art", 3), ("hxm", 4),
-             ("qrt", 5), ("pad", 6), ("hoy", 7)]
-        self.assertEqual(self.loads(s), eval(s))
-        self.assertEqual(self.loads(s, object_pairs_hook=lambda x: x), p)
-        self.assertEqual(self.json.load(StringIO(s),
-                                        object_pairs_hook=lambda x: x), p)
-        od = self.loads(s, object_pairs_hook=OrderedDict)
-        self.assertEqual(od, OrderedDict(p))
-        self.assertEqual(type(od), OrderedDict)
-        # the object_pairs_hook takes priority over the object_hook
-        self.assertEqual(self.loads(s,
-                                    object_pairs_hook=OrderedDict,
-                                    object_hook=lambda x: None),
-                         OrderedDict(p))
-
-
-class TestPyDecode(TestDecode, PyTest): pass
-class TestCDecode(TestDecode, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_default.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_default.py
deleted file mode 100644
index 74aacee..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_default.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from json.tests import PyTest, CTest
-
-
-class TestDefault(object):
-    def test_default(self):
-        self.assertEqual(
-            self.dumps(type, default=repr),
-            self.dumps(repr(type)))
-
-
-class TestPyDefault(TestDefault, PyTest): pass
-class TestCDefault(TestDefault, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_dump.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_dump.py
deleted file mode 100644
index 755096b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_dump.py
+++ /dev/null
@@ -1,23 +0,0 @@
-from cStringIO import StringIO
-from json.tests import PyTest, CTest
-
-
-class TestDump(object):
-    def test_dump(self):
-        sio = StringIO()
-        self.json.dump({}, sio)
-        self.assertEqual(sio.getvalue(), '{}')
-
-    def test_dumps(self):
-        self.assertEqual(self.dumps({}), '{}')
-
-    def test_encode_truefalse(self):
-        self.assertEqual(self.dumps(
-                 {True: False, False: True}, sort_keys=True),
-                 '{"false": true, "true": false}')
-        self.assertEqual(self.dumps(
-                {2: 3.0, 4.0: 5L, False: 1, 6L: True}, sort_keys=True),
-                '{"false": 1, "2": 3.0, "4.0": 5, "6": true}')
-
-class TestPyDump(TestDump, PyTest): pass
-class TestCDump(TestDump, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_encode_basestring_ascii.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_encode_basestring_ascii.py
deleted file mode 100644
index d3a8d5c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_encode_basestring_ascii.py
+++ /dev/null
@@ -1,41 +0,0 @@
-from collections import OrderedDict
-from json.tests import PyTest, CTest
-
-
-CASES = [
-    (u'/\\"\ucafe\ubabe\uab98\ufcde\ubcda\uef4a\x08\x0c\n\r\t`1~!@#$%^&*()_+-=[]{}|;:\',./<>?', '"/\\\\\\"\\ucafe\\ubabe\\uab98\\ufcde\\ubcda\\uef4a\\b\\f\\n\\r\\t`1~!@#$%^&*()_+-=[]{}|;:\',./<>?"'),
-    (u'\u0123\u4567\u89ab\ucdef\uabcd\uef4a', '"\\u0123\\u4567\\u89ab\\ucdef\\uabcd\\uef4a"'),
-    (u'controls', '"controls"'),
-    (u'\x08\x0c\n\r\t', '"\\b\\f\\n\\r\\t"'),
-    (u'{"object with 1 member":["array with 1 element"]}', '"{\\"object with 1 member\\":[\\"array with 1 element\\"]}"'),
-    (u' s p a c e d ', '" s p a c e d "'),
-    (u'\U0001d120', '"\\ud834\\udd20"'),
-    (u'\u03b1\u03a9', '"\\u03b1\\u03a9"'),
-    ('\xce\xb1\xce\xa9', '"\\u03b1\\u03a9"'),
-    (u'\u03b1\u03a9', '"\\u03b1\\u03a9"'),
-    ('\xce\xb1\xce\xa9', '"\\u03b1\\u03a9"'),
-    (u'\u03b1\u03a9', '"\\u03b1\\u03a9"'),
-    (u'\u03b1\u03a9', '"\\u03b1\\u03a9"'),
-    (u"`1~!@#$%^&*()_+-={':[,]}|;.</>?", '"`1~!@#$%^&*()_+-={\':[,]}|;.</>?"'),
-    (u'\x08\x0c\n\r\t', '"\\b\\f\\n\\r\\t"'),
-    (u'\u0123\u4567\u89ab\ucdef\uabcd\uef4a', '"\\u0123\\u4567\\u89ab\\ucdef\\uabcd\\uef4a"'),
-]
-
-class TestEncodeBasestringAscii(object):
-    def test_encode_basestring_ascii(self):
-        fname = self.json.encoder.encode_basestring_ascii.__name__
-        for input_string, expect in CASES:
-            result = self.json.encoder.encode_basestring_ascii(input_string)
-            self.assertEqual(result, expect,
-                '{0!r} != {1!r} for {2}({3!r})'.format(
-                    result, expect, fname, input_string))
-
-    def test_ordered_dict(self):
-        # See issue 6105
-        items = [('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)]
-        s = self.dumps(OrderedDict(items))
-        self.assertEqual(s, '{"one": 1, "two": 2, "three": 3, "four": 4, "five": 5}')
-
-
-class TestPyEncodeBasestringAscii(TestEncodeBasestringAscii, PyTest): pass
-class TestCEncodeBasestringAscii(TestEncodeBasestringAscii, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_fail.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_fail.py
deleted file mode 100644
index 81656cc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_fail.py
+++ /dev/null
@@ -1,87 +0,0 @@
-from json.tests import PyTest, CTest
-
-# Fri Dec 30 18:57:26 2005
-JSONDOCS = [
-    # http://json.org/JSON_checker/test/fail1.json
-    '"A JSON payload should be an object or array, not a string."',
-    # http://json.org/JSON_checker/test/fail2.json
-    '["Unclosed array"',
-    # http://json.org/JSON_checker/test/fail3.json
-    '{unquoted_key: "keys must be quoted}',
-    # http://json.org/JSON_checker/test/fail4.json
-    '["extra comma",]',
-    # http://json.org/JSON_checker/test/fail5.json
-    '["double extra comma",,]',
-    # http://json.org/JSON_checker/test/fail6.json
-    '[   , "<-- missing value"]',
-    # http://json.org/JSON_checker/test/fail7.json
-    '["Comma after the close"],',
-    # http://json.org/JSON_checker/test/fail8.json
-    '["Extra close"]]',
-    # http://json.org/JSON_checker/test/fail9.json
-    '{"Extra comma": true,}',
-    # http://json.org/JSON_checker/test/fail10.json
-    '{"Extra value after close": true} "misplaced quoted value"',
-    # http://json.org/JSON_checker/test/fail11.json
-    '{"Illegal expression": 1 + 2}',
-    # http://json.org/JSON_checker/test/fail12.json
-    '{"Illegal invocation": alert()}',
-    # http://json.org/JSON_checker/test/fail13.json
-    '{"Numbers cannot have leading zeroes": 013}',
-    # http://json.org/JSON_checker/test/fail14.json
-    '{"Numbers cannot be hex": 0x14}',
-    # http://json.org/JSON_checker/test/fail15.json
-    '["Illegal backslash escape: \\x15"]',
-    # http://json.org/JSON_checker/test/fail16.json
-    '["Illegal backslash escape: \\\'"]',
-    # http://json.org/JSON_checker/test/fail17.json
-    '["Illegal backslash escape: \\017"]',
-    # http://json.org/JSON_checker/test/fail18.json
-    '[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]',
-    # http://json.org/JSON_checker/test/fail19.json
-    '{"Missing colon" null}',
-    # http://json.org/JSON_checker/test/fail20.json
-    '{"Double colon":: null}',
-    # http://json.org/JSON_checker/test/fail21.json
-    '{"Comma instead of colon", null}',
-    # http://json.org/JSON_checker/test/fail22.json
-    '["Colon instead of comma": false]',
-    # http://json.org/JSON_checker/test/fail23.json
-    '["Bad value", truth]',
-    # http://json.org/JSON_checker/test/fail24.json
-    "['single quote']",
-    # http://code.google.com/p/simplejson/issues/detail?id=3
-    u'["A\u001FZ control characters in string"]',
-]
-
-SKIPS = {
-    1: "why not have a string payload?",
-    18: "spec doesn't specify any nesting limitations",
-}
-
-class TestFail(object):
-    def test_failures(self):
-        for idx, doc in enumerate(JSONDOCS):
-            idx = idx + 1
-            if idx in SKIPS:
-                self.loads(doc)
-                continue
-            try:
-                self.loads(doc)
-            except ValueError:
-                pass
-            else:
-                self.fail("Expected failure for fail{0}.json: {1!r}".format(idx, doc))
-
-    def test_non_string_keys_dict(self):
-        data = {'a' : 1, (1, 2) : 2}
-
-        #This is for c encoder
-        self.assertRaises(TypeError, self.dumps, data)
-
-        #This is for python encoder
-        self.assertRaises(TypeError, self.dumps, data, indent=True)
-
-
-class TestPyFail(TestFail, PyTest): pass
-class TestCFail(TestFail, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_float.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_float.py
deleted file mode 100644
index a10786b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_float.py
+++ /dev/null
@@ -1,22 +0,0 @@
-import math
-from json.tests import PyTest, CTest
-
-
-class TestFloat(object):
-    def test_floats(self):
-        for num in [1617161771.7650001, math.pi, math.pi**100,
-                    math.pi**-100, 3.1]:
-            self.assertEqual(float(self.dumps(num)), num)
-            self.assertEqual(self.loads(self.dumps(num)), num)
-            self.assertEqual(self.loads(unicode(self.dumps(num))), num)
-
-    def test_ints(self):
-        for num in [1, 1L, 1<<32, 1<<64]:
-            self.assertEqual(self.dumps(num), str(num))
-            self.assertEqual(int(self.dumps(num)), num)
-            self.assertEqual(self.loads(self.dumps(num)), num)
-            self.assertEqual(self.loads(unicode(self.dumps(num))), num)
-
-
-class TestPyFloat(TestFloat, PyTest): pass
-class TestCFloat(TestFloat, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_indent.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_indent.py
deleted file mode 100644
index 866abb1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_indent.py
+++ /dev/null
@@ -1,60 +0,0 @@
-import textwrap
-from StringIO import StringIO
-from json.tests import PyTest, CTest
-
-
-class TestIndent(object):
-    def test_indent(self):
-        h = [['blorpie'], ['whoops'], [], 'd-shtaeou', 'd-nthiouh', 'i-vhbjkhnth',
-             {'nifty': 87}, {'field': 'yes', 'morefield': False} ]
-
-        expect = textwrap.dedent("""\
-        [
-          [
-            "blorpie"
-          ],
-          [
-            "whoops"
-          ],
-          [],
-          "d-shtaeou",
-          "d-nthiouh",
-          "i-vhbjkhnth",
-          {
-            "nifty": 87
-          },
-          {
-            "field": "yes",
-            "morefield": false
-          }
-        ]""")
-
-
-        d1 = self.dumps(h)
-        d2 = self.dumps(h, indent=2, sort_keys=True, separators=(',', ': '))
-
-        h1 = self.loads(d1)
-        h2 = self.loads(d2)
-
-        self.assertEqual(h1, h)
-        self.assertEqual(h2, h)
-        self.assertEqual(d2, expect)
-
-    def test_indent0(self):
-        h = {3: 1}
-        def check(indent, expected):
-            d1 = self.dumps(h, indent=indent)
-            self.assertEqual(d1, expected)
-
-            sio = StringIO()
-            self.json.dump(h, sio, indent=indent)
-            self.assertEqual(sio.getvalue(), expected)
-
-        # indent=0 should emit newlines
-        check(0, '{\n"3": 1\n}')
-        # indent=None is more compact
-        check(None, '{"3": 1}')
-
-
-class TestPyIndent(TestIndent, PyTest): pass
-class TestCIndent(TestIndent, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass1.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass1.py
deleted file mode 100644
index 8501c0b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass1.py
+++ /dev/null
@@ -1,79 +0,0 @@
-from json.tests import PyTest, CTest
-
-
-# from http://json.org/JSON_checker/test/pass1.json
-JSON = r'''
-[
-    "JSON Test Pattern pass1",
-    {"object with 1 member":["array with 1 element"]},
-    {},
-    [],
-    -42,
-    true,
-    false,
-    null,
-    {
-        "integer": 1234567890,
-        "real": -9876.543210,
-        "e": 0.123456789e-12,
-        "E": 1.234567890E+34,
-        "":  23456789012E666,
-        "zero": 0,
-        "one": 1,
-        "space": " ",
-        "quote": "\"",
-        "backslash": "\\",
-        "controls": "\b\f\n\r\t",
-        "slash": "/ & \/",
-        "alpha": "abcdefghijklmnopqrstuvwyz",
-        "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ",
-        "digit": "0123456789",
-        "special": "`1~!@#$%^&*()_+-={':[,]}|;.</>?",
-        "hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
-        "true": true,
-        "false": false,
-        "null": null,
-        "array":[  ],
-        "object":{  },
-        "address": "50 St. James Street",
-        "url": "http://www.JSON.org/",
-        "comment": "// /* <!-- --",
-        "# -- --> */": " ",
-        " s p a c e d " :[1,2 , 3
-
-,
-
-4 , 5        ,          6           ,7        ],
-        "compact": [1,2,3,4,5,6,7],
-        "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}",
-        "quotes": "&#34; \u0022 %22 0x22 034 &#x22;",
-        "\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?"
-: "A key can be any string"
-    },
-    0.5 ,98.6
-,
-99.44
-,
-
-1066
-
-
-,"rosebud"]
-'''
-
-class TestPass1(object):
-    def test_parse(self):
-        # test in/out equivalence and parsing
-        res = self.loads(JSON)
-        out = self.dumps(res)
-        self.assertEqual(res, self.loads(out))
-        try:
-            self.dumps(res, allow_nan=False)
-        except ValueError:
-            pass
-        else:
-            self.fail("23456789012E666 should be out of range")
-
-
-class TestPyPass1(TestPass1, PyTest): pass
-class TestCPass1(TestPass1, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass2.py
deleted file mode 100644
index 4972490..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass2.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from json.tests import PyTest, CTest
-
-
-# from http://json.org/JSON_checker/test/pass2.json
-JSON = r'''
-[[[[[[[[[[[[[[[[[[["Not too deep"]]]]]]]]]]]]]]]]]]]
-'''
-
-class TestPass2(object):
-    def test_parse(self):
-        # test in/out equivalence and parsing
-        res = self.loads(JSON)
-        out = self.dumps(res)
-        self.assertEqual(res, self.loads(out))
-
-
-class TestPyPass2(TestPass2, PyTest): pass
-class TestCPass2(TestPass2, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass3.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass3.py
deleted file mode 100644
index 8dc6d76..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_pass3.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from json.tests import PyTest, CTest
-
-
-# from http://json.org/JSON_checker/test/pass3.json
-JSON = r'''
-{
-    "JSON Test Pattern pass3": {
-        "The outermost value": "must be an object or array.",
-        "In this test": "It is an object."
-    }
-}
-'''
-
-
-class TestPass3(object):
-    def test_parse(self):
-        # test in/out equivalence and parsing
-        res = self.loads(JSON)
-        out = self.dumps(res)
-        self.assertEqual(res, self.loads(out))
-
-
-class TestPyPass3(TestPass3, PyTest): pass
-class TestCPass3(TestPass3, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_recursion.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_recursion.py
deleted file mode 100644
index 016cd81..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_recursion.py
+++ /dev/null
@@ -1,108 +0,0 @@
-from json.tests import PyTest, CTest
-
-
-class JSONTestObject:
-    pass
-
-
-class TestRecursion(object):
-    def test_listrecursion(self):
-        x = []
-        x.append(x)
-        try:
-            self.dumps(x)
-        except ValueError:
-            pass
-        else:
-            self.fail("didn't raise ValueError on list recursion")
-        x = []
-        y = [x]
-        x.append(y)
-        try:
-            self.dumps(x)
-        except ValueError:
-            pass
-        else:
-            self.fail("didn't raise ValueError on alternating list recursion")
-        y = []
-        x = [y, y]
-        # ensure that the marker is cleared
-        self.dumps(x)
-
-    def test_dictrecursion(self):
-        x = {}
-        x["test"] = x
-        try:
-            self.dumps(x)
-        except ValueError:
-            pass
-        else:
-            self.fail("didn't raise ValueError on dict recursion")
-        x = {}
-        y = {"a": x, "b": x}
-        # ensure that the marker is cleared
-        self.dumps(x)
-
-    def test_defaultrecursion(self):
-        class RecursiveJSONEncoder(self.json.JSONEncoder):
-            recurse = False
-            def default(self, o):
-                if o is JSONTestObject:
-                    if self.recurse:
-                        return [JSONTestObject]
-                    else:
-                        return 'JSONTestObject'
-                return pyjson.JSONEncoder.default(o)
-
-        enc = RecursiveJSONEncoder()
-        self.assertEqual(enc.encode(JSONTestObject), '"JSONTestObject"')
-        enc.recurse = True
-        try:
-            enc.encode(JSONTestObject)
-        except ValueError:
-            pass
-        else:
-            self.fail("didn't raise ValueError on default recursion")
-
-
-    def test_highly_nested_objects_decoding(self):
-        # test that loading highly-nested objects doesn't segfault when C
-        # accelerations are used. See #12017
-        # str
-        with self.assertRaises(RuntimeError):
-            self.loads('{"a":' * 100000 + '1' + '}' * 100000)
-        with self.assertRaises(RuntimeError):
-            self.loads('{"a":' * 100000 + '[1]' + '}' * 100000)
-        with self.assertRaises(RuntimeError):
-            self.loads('[' * 100000 + '1' + ']' * 100000)
-        # unicode
-        with self.assertRaises(RuntimeError):
-            self.loads(u'{"a":' * 100000 + u'1' + u'}' * 100000)
-        with self.assertRaises(RuntimeError):
-            self.loads(u'{"a":' * 100000 + u'[1]' + u'}' * 100000)
-        with self.assertRaises(RuntimeError):
-            self.loads(u'[' * 100000 + u'1' + u']' * 100000)
-
-    def test_highly_nested_objects_encoding(self):
-        # See #12051
-        l, d = [], {}
-        for x in xrange(100000):
-            l, d = [l], {'k':d}
-        with self.assertRaises(RuntimeError):
-            self.dumps(l)
-        with self.assertRaises(RuntimeError):
-            self.dumps(d)
-
-    def test_endless_recursion(self):
-        # See #12051
-        class EndlessJSONEncoder(self.json.JSONEncoder):
-            def default(self, o):
-                """If check_circular is False, this will keep adding another list."""
-                return [o]
-
-        with self.assertRaises(RuntimeError):
-            EndlessJSONEncoder(check_circular=False).encode(5j)
-
-
-class TestPyRecursion(TestRecursion, PyTest): pass
-class TestCRecursion(TestRecursion, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_scanstring.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_scanstring.py
deleted file mode 100644
index b6735ca..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_scanstring.py
+++ /dev/null
@@ -1,109 +0,0 @@
-import sys
-from json.tests import PyTest, CTest
-
-
-class TestScanstring(object):
-    def test_scanstring(self):
-        scanstring = self.json.decoder.scanstring
-        self.assertEqual(
-            scanstring('"z\\ud834\\udd20x"', 1, None, True),
-            (u'z\U0001d120x', 16))
-
-        if sys.maxunicode == 65535:
-            self.assertEqual(
-                scanstring(u'"z\U0001d120x"', 1, None, True),
-                (u'z\U0001d120x', 6))
-        else:
-            self.assertEqual(
-                scanstring(u'"z\U0001d120x"', 1, None, True),
-                (u'z\U0001d120x', 5))
-
-        self.assertEqual(
-            scanstring('"\\u007b"', 1, None, True),
-            (u'{', 8))
-
-        self.assertEqual(
-            scanstring('"A JSON payload should be an object or array, not a string."', 1, None, True),
-            (u'A JSON payload should be an object or array, not a string.', 60))
-
-        self.assertEqual(
-            scanstring('["Unclosed array"', 2, None, True),
-            (u'Unclosed array', 17))
-
-        self.assertEqual(
-            scanstring('["extra comma",]', 2, None, True),
-            (u'extra comma', 14))
-
-        self.assertEqual(
-            scanstring('["double extra comma",,]', 2, None, True),
-            (u'double extra comma', 21))
-
-        self.assertEqual(
-            scanstring('["Comma after the close"],', 2, None, True),
-            (u'Comma after the close', 24))
-
-        self.assertEqual(
-            scanstring('["Extra close"]]', 2, None, True),
-            (u'Extra close', 14))
-
-        self.assertEqual(
-            scanstring('{"Extra comma": true,}', 2, None, True),
-            (u'Extra comma', 14))
-
-        self.assertEqual(
-            scanstring('{"Extra value after close": true} "misplaced quoted value"', 2, None, True),
-            (u'Extra value after close', 26))
-
-        self.assertEqual(
-            scanstring('{"Illegal expression": 1 + 2}', 2, None, True),
-            (u'Illegal expression', 21))
-
-        self.assertEqual(
-            scanstring('{"Illegal invocation": alert()}', 2, None, True),
-            (u'Illegal invocation', 21))
-
-        self.assertEqual(
-            scanstring('{"Numbers cannot have leading zeroes": 013}', 2, None, True),
-            (u'Numbers cannot have leading zeroes', 37))
-
-        self.assertEqual(
-            scanstring('{"Numbers cannot be hex": 0x14}', 2, None, True),
-            (u'Numbers cannot be hex', 24))
-
-        self.assertEqual(
-            scanstring('[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]', 21, None, True),
-            (u'Too deep', 30))
-
-        self.assertEqual(
-            scanstring('{"Missing colon" null}', 2, None, True),
-            (u'Missing colon', 16))
-
-        self.assertEqual(
-            scanstring('{"Double colon":: null}', 2, None, True),
-            (u'Double colon', 15))
-
-        self.assertEqual(
-            scanstring('{"Comma instead of colon", null}', 2, None, True),
-            (u'Comma instead of colon', 25))
-
-        self.assertEqual(
-            scanstring('["Colon instead of comma": false]', 2, None, True),
-            (u'Colon instead of comma', 25))
-
-        self.assertEqual(
-            scanstring('["Bad value", truth]', 2, None, True),
-            (u'Bad value', 12))
-
-    def test_issue3623(self):
-        self.assertRaises(ValueError, self.json.decoder.scanstring, b"xxx", 1,
-                          "xxx")
-        self.assertRaises(UnicodeDecodeError,
-                          self.json.encoder.encode_basestring_ascii, b"xx\xff")
-
-    def test_overflow(self):
-        with self.assertRaises(OverflowError):
-            self.json.decoder.scanstring(b"xxx", sys.maxsize+1)
-
-
-class TestPyScanstring(TestScanstring, PyTest): pass
-class TestCScanstring(TestScanstring, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_separators.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_separators.py
deleted file mode 100644
index b468c3b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_separators.py
+++ /dev/null
@@ -1,44 +0,0 @@
-import textwrap
-from json.tests import PyTest, CTest
-
-
-class TestSeparators(object):
-    def test_separators(self):
-        h = [['blorpie'], ['whoops'], [], 'd-shtaeou', 'd-nthiouh', 'i-vhbjkhnth',
-             {'nifty': 87}, {'field': 'yes', 'morefield': False} ]
-
-        expect = textwrap.dedent("""\
-        [
-          [
-            "blorpie"
-          ] ,
-          [
-            "whoops"
-          ] ,
-          [] ,
-          "d-shtaeou" ,
-          "d-nthiouh" ,
-          "i-vhbjkhnth" ,
-          {
-            "nifty" : 87
-          } ,
-          {
-            "field" : "yes" ,
-            "morefield" : false
-          }
-        ]""")
-
-
-        d1 = self.dumps(h)
-        d2 = self.dumps(h, indent=2, sort_keys=True, separators=(' ,', ' : '))
-
-        h1 = self.loads(d1)
-        h2 = self.loads(d2)
-
-        self.assertEqual(h1, h)
-        self.assertEqual(h2, h)
-        self.assertEqual(d2, expect)
-
-
-class TestPySeparators(TestSeparators, PyTest): pass
-class TestCSeparators(TestSeparators, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_speedups.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_speedups.py
deleted file mode 100644
index bc0e00d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_speedups.py
+++ /dev/null
@@ -1,23 +0,0 @@
-from json.tests import CTest
-
-
-class TestSpeedups(CTest):
-    def test_scanstring(self):
-        self.assertEqual(self.json.decoder.scanstring.__module__, "_json")
-        self.assertIs(self.json.decoder.scanstring, self.json.decoder.c_scanstring)
-
-    def test_encode_basestring_ascii(self):
-        self.assertEqual(self.json.encoder.encode_basestring_ascii.__module__,
-                         "_json")
-        self.assertIs(self.json.encoder.encode_basestring_ascii,
-                      self.json.encoder.c_encode_basestring_ascii)
-
-class TestDecode(CTest):
-    def test_make_scanner(self):
-        self.assertRaises(AttributeError, self.json.scanner.c_make_scanner, 1)
-
-    def test_make_encoder(self):
-        self.assertRaises(TypeError, self.json.encoder.c_make_encoder,
-            None,
-            "\xCD\x7D\x3D\x4E\x12\x4C\xF9\x79\xD7\x52\xBA\x82\xF2\x27\x4A\x7D\xA0\xCA\x75",
-            None)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_unicode.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_unicode.py
deleted file mode 100644
index ebe7353..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tests/test_unicode.py
+++ /dev/null
@@ -1,85 +0,0 @@
-from collections import OrderedDict
-from json.tests import PyTest, CTest
-
-
-class TestUnicode(object):
-    def test_encoding1(self):
-        encoder = self.json.JSONEncoder(encoding='utf-8')
-        u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
-        s = u.encode('utf-8')
-        ju = encoder.encode(u)
-        js = encoder.encode(s)
-        self.assertEqual(ju, js)
-
-    def test_encoding2(self):
-        u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
-        s = u.encode('utf-8')
-        ju = self.dumps(u, encoding='utf-8')
-        js = self.dumps(s, encoding='utf-8')
-        self.assertEqual(ju, js)
-
-    def test_encoding3(self):
-        u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
-        j = self.dumps(u)
-        self.assertEqual(j, '"\\u03b1\\u03a9"')
-
-    def test_encoding4(self):
-        u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
-        j = self.dumps([u])
-        self.assertEqual(j, '["\\u03b1\\u03a9"]')
-
-    def test_encoding5(self):
-        u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
-        j = self.dumps(u, ensure_ascii=False)
-        self.assertEqual(j, u'"{0}"'.format(u))
-
-    def test_encoding6(self):
-        u = u'\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
-        j = self.dumps([u], ensure_ascii=False)
-        self.assertEqual(j, u'["{0}"]'.format(u))
-
-    def test_big_unicode_encode(self):
-        u = u'\U0001d120'
-        self.assertEqual(self.dumps(u), '"\\ud834\\udd20"')
-        self.assertEqual(self.dumps(u, ensure_ascii=False), u'"\U0001d120"')
-
-    def test_big_unicode_decode(self):
-        u = u'z\U0001d120x'
-        self.assertEqual(self.loads('"' + u + '"'), u)
-        self.assertEqual(self.loads('"z\\ud834\\udd20x"'), u)
-
-    def test_unicode_decode(self):
-        for i in range(0, 0xd7ff):
-            u = unichr(i)
-            s = '"\\u{0:04x}"'.format(i)
-            self.assertEqual(self.loads(s), u)
-
-    def test_object_pairs_hook_with_unicode(self):
-        s = u'{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}'
-        p = [(u"xkd", 1), (u"kcw", 2), (u"art", 3), (u"hxm", 4),
-             (u"qrt", 5), (u"pad", 6), (u"hoy", 7)]
-        self.assertEqual(self.loads(s), eval(s))
-        self.assertEqual(self.loads(s, object_pairs_hook = lambda x: x), p)
-        od = self.loads(s, object_pairs_hook = OrderedDict)
-        self.assertEqual(od, OrderedDict(p))
-        self.assertEqual(type(od), OrderedDict)
-        # the object_pairs_hook takes priority over the object_hook
-        self.assertEqual(self.loads(s,
-                                    object_pairs_hook = OrderedDict,
-                                    object_hook = lambda x: None),
-                         OrderedDict(p))
-
-    def test_default_encoding(self):
-        self.assertEqual(self.loads(u'{"a": "\xe9"}'.encode('utf-8')),
-            {'a': u'\xe9'})
-
-    def test_unicode_preservation(self):
-        self.assertEqual(type(self.loads(u'""')), unicode)
-        self.assertEqual(type(self.loads(u'"a"')), unicode)
-        self.assertEqual(type(self.loads(u'["a"]')[0]), unicode)
-        # Issue 10038.
-        self.assertEqual(type(self.loads('"foo"')), unicode)
-
-
-class TestPyUnicode(TestUnicode, PyTest): pass
-class TestCUnicode(TestUnicode, CTest): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tool.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tool.py
deleted file mode 100644
index accc958..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/json/tool.py
+++ /dev/null
@@ -1,37 +0,0 @@
-r"""Command-line tool to validate and pretty-print JSON
-
-Usage::
-
-    $ echo '{"json":"obj"}' | python -m json.tool
-    {
-        "json": "obj"
-    }
-    $ echo '{ 1.2:3.4}' | python -m json.tool
-    Expecting property name: line 1 column 2 (char 2)
-
-"""
-import sys
-import json
-
-def main():
-    if len(sys.argv) == 1:
-        infile = sys.stdin
-        outfile = sys.stdout
-    elif len(sys.argv) == 2:
-        infile = open(sys.argv[1], 'rb')
-        outfile = sys.stdout
-    elif len(sys.argv) == 3:
-        infile = open(sys.argv[1], 'rb')
-        outfile = open(sys.argv[2], 'wb')
-    else:
-        raise SystemExit(sys.argv[0] + " [infile [outfile]]")
-    try:
-        obj = json.load(infile)
-    except ValueError, e:
-        raise SystemExit(e)
-    json.dump(obj, outfile, sort_keys=True, indent=4)
-    outfile.write('\n')
-
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/keyword.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/keyword.py
deleted file mode 100644
index db35abe..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/keyword.py
+++ /dev/null
@@ -1,93 +0,0 @@
-#! /usr/bin/env python
-
-"""Keywords (from "graminit.c")
-
-This file is automatically generated; please don't muck it up!
-
-To update the symbols in this file, 'cd' to the top directory of
-the python source tree after building the interpreter and run:
-
-    python Lib/keyword.py
-"""
-
-__all__ = ["iskeyword", "kwlist"]
-
-kwlist = [
-#--start keywords--
-        'and',
-        'as',
-        'assert',
-        'break',
-        'class',
-        'continue',
-        'def',
-        'del',
-        'elif',
-        'else',
-        'except',
-        'exec',
-        'finally',
-        'for',
-        'from',
-        'global',
-        'if',
-        'import',
-        'in',
-        'is',
-        'lambda',
-        'not',
-        'or',
-        'pass',
-        'print',
-        'raise',
-        'return',
-        'try',
-        'while',
-        'with',
-        'yield',
-#--end keywords--
-        ]
-
-iskeyword = frozenset(kwlist).__contains__
-
-def main():
-    import sys, re
-
-    args = sys.argv[1:]
-    iptfile = args and args[0] or "Python/graminit.c"
-    if len(args) > 1: optfile = args[1]
-    else: optfile = "Lib/keyword.py"
-
-    # scan the source file for keywords
-    fp = open(iptfile)
-    strprog = re.compile('"([^"]+)"')
-    lines = []
-    for line in fp:
-        if '{1, "' in line:
-            match = strprog.search(line)
-            if match:
-                lines.append("        '" + match.group(1) + "',\n")
-    fp.close()
-    lines.sort()
-
-    # load the output skeleton from the target
-    fp = open(optfile)
-    format = fp.readlines()
-    fp.close()
-
-    # insert the lines of keywords
-    try:
-        start = format.index("#--start keywords--\n") + 1
-        end = format.index("#--end keywords--\n")
-        format[start:end] = lines
-    except ValueError:
-        sys.stderr.write("target does not contain format markers\n")
-        sys.exit(1)
-
-    # write the output file
-    fp = open(optfile, 'w')
-    fp.write(''.join(format))
-    fp.close()
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/Grammar.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/Grammar.txt
deleted file mode 100644
index 3a84738..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/Grammar.txt
+++ /dev/null
@@ -1,158 +0,0 @@
-# Grammar for Python
-
-# Note:  Changing the grammar specified in this file will most likely
-#        require corresponding changes in the parser module
-#        (../Modules/parsermodule.c).  If you can't make the changes to
-#        that module yourself, please co-ordinate the required changes
-#        with someone who can; ask around on python-dev for help.  Fred
-#        Drake <fdrake@acm.org> will probably be listening there.
-
-# NOTE WELL: You should also follow all the steps listed in PEP 306,
-# "How to Change Python's Grammar"
-
-# Commands for Kees Blom's railroad program
-#diagram:token NAME
-#diagram:token NUMBER
-#diagram:token STRING
-#diagram:token NEWLINE
-#diagram:token ENDMARKER
-#diagram:token INDENT
-#diagram:output\input python.bla
-#diagram:token DEDENT
-#diagram:output\textwidth 20.04cm\oddsidemargin  0.0cm\evensidemargin 0.0cm
-#diagram:rules
-
-# Start symbols for the grammar:
-#	file_input is a module or sequence of commands read from an input file;
-#	single_input is a single interactive statement;
-#	eval_input is the input for the eval() and input() functions.
-# NB: compound_stmt in single_input is followed by extra NEWLINE!
-file_input: (NEWLINE | stmt)* ENDMARKER
-single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE
-eval_input: testlist NEWLINE* ENDMARKER
-
-decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
-decorators: decorator+
-decorated: decorators (classdef | funcdef)
-funcdef: 'def' NAME parameters ['->' test] ':' suite
-parameters: '(' [typedargslist] ')'
-typedargslist: ((tfpdef ['=' test] ',')*
-                ('*' [tname] (',' tname ['=' test])* [',' '**' tname] | '**' tname)
-                | tfpdef ['=' test] (',' tfpdef ['=' test])* [','])
-tname: NAME [':' test]
-tfpdef: tname | '(' tfplist ')'
-tfplist: tfpdef (',' tfpdef)* [',']
-varargslist: ((vfpdef ['=' test] ',')*
-              ('*' [vname] (',' vname ['=' test])*  [',' '**' vname] | '**' vname)
-              | vfpdef ['=' test] (',' vfpdef ['=' test])* [','])
-vname: NAME
-vfpdef: vname | '(' vfplist ')'
-vfplist: vfpdef (',' vfpdef)* [',']
-
-stmt: simple_stmt | compound_stmt
-simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
-small_stmt: (expr_stmt | print_stmt  | del_stmt | pass_stmt | flow_stmt |
-             import_stmt | global_stmt | exec_stmt | assert_stmt)
-expr_stmt: testlist_star_expr (augassign (yield_expr|testlist) |
-                     ('=' (yield_expr|testlist_star_expr))*)
-testlist_star_expr: (test|star_expr) (',' (test|star_expr))* [',']
-augassign: ('+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' |
-            '<<=' | '>>=' | '**=' | '//=')
-# For normal assignments, additional restrictions enforced by the interpreter
-print_stmt: 'print' ( [ test (',' test)* [','] ] |
-                      '>>' test [ (',' test)+ [','] ] )
-del_stmt: 'del' exprlist
-pass_stmt: 'pass'
-flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt
-break_stmt: 'break'
-continue_stmt: 'continue'
-return_stmt: 'return' [testlist]
-yield_stmt: yield_expr
-raise_stmt: 'raise' [test ['from' test | ',' test [',' test]]]
-import_stmt: import_name | import_from
-import_name: 'import' dotted_as_names
-import_from: ('from' ('.'* dotted_name | '.'+)
-              'import' ('*' | '(' import_as_names ')' | import_as_names))
-import_as_name: NAME ['as' NAME]
-dotted_as_name: dotted_name ['as' NAME]
-import_as_names: import_as_name (',' import_as_name)* [',']
-dotted_as_names: dotted_as_name (',' dotted_as_name)*
-dotted_name: NAME ('.' NAME)*
-global_stmt: ('global' | 'nonlocal') NAME (',' NAME)*
-exec_stmt: 'exec' expr ['in' test [',' test]]
-assert_stmt: 'assert' test [',' test]
-
-compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated
-if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite]
-while_stmt: 'while' test ':' suite ['else' ':' suite]
-for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite]
-try_stmt: ('try' ':' suite
-           ((except_clause ':' suite)+
-	    ['else' ':' suite]
-	    ['finally' ':' suite] |
-	   'finally' ':' suite))
-with_stmt: 'with' with_item (',' with_item)*  ':' suite
-with_item: test ['as' expr]
-with_var: 'as' expr
-# NB compile.c makes sure that the default except clause is last
-except_clause: 'except' [test [(',' | 'as') test]]
-suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT
-
-# Backward compatibility cruft to support:
-# [ x for x in lambda: True, lambda: False if x() ]
-# even while also allowing:
-# lambda x: 5 if x else 2
-# (But not a mix of the two)
-testlist_safe: old_test [(',' old_test)+ [',']]
-old_test: or_test | old_lambdef
-old_lambdef: 'lambda' [varargslist] ':' old_test
-
-test: or_test ['if' or_test 'else' test] | lambdef
-or_test: and_test ('or' and_test)*
-and_test: not_test ('and' not_test)*
-not_test: 'not' not_test | comparison
-comparison: expr (comp_op expr)*
-comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not'
-star_expr: '*' expr
-expr: xor_expr ('|' xor_expr)*
-xor_expr: and_expr ('^' and_expr)*
-and_expr: shift_expr ('&' shift_expr)*
-shift_expr: arith_expr (('<<'|'>>') arith_expr)*
-arith_expr: term (('+'|'-') term)*
-term: factor (('*'|'/'|'%'|'//') factor)*
-factor: ('+'|'-'|'~') factor | power
-power: atom trailer* ['**' factor]
-atom: ('(' [yield_expr|testlist_gexp] ')' |
-       '[' [listmaker] ']' |
-       '{' [dictsetmaker] '}' |
-       '`' testlist1 '`' |
-       NAME | NUMBER | STRING+ | '.' '.' '.')
-listmaker: (test|star_expr) ( comp_for | (',' (test|star_expr))* [','] )
-testlist_gexp: (test|star_expr) ( comp_for | (',' (test|star_expr))* [','] )
-lambdef: 'lambda' [varargslist] ':' test
-trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME
-subscriptlist: subscript (',' subscript)* [',']
-subscript: test | [test] ':' [test] [sliceop]
-sliceop: ':' [test]
-exprlist: (expr|star_expr) (',' (expr|star_expr))* [',']
-testlist: test (',' test)* [',']
-dictsetmaker: ( (test ':' test (comp_for | (',' test ':' test)* [','])) |
-                (test (comp_for | (',' test)* [','])) )
-
-classdef: 'class' NAME ['(' [arglist] ')'] ':' suite
-
-arglist: (argument ',')* (argument [',']
-                         |'*' test (',' argument)* [',' '**' test] 
-                         |'**' test)
-argument: test [comp_for] | test '=' test  # Really [keyword '='] test
-
-comp_iter: comp_for | comp_if
-comp_for: 'for' exprlist 'in' testlist_safe [comp_iter]
-comp_if: 'if' old_test [comp_iter]
-
-testlist1: test (',' test)*
-
-# not used in grammar, but may appear in "node" passed from Parser to Compiler
-encoding_decl: NAME
-
-yield_expr: 'yield' [testlist]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/PatternGrammar.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/PatternGrammar.txt
deleted file mode 100644
index 7fea3fa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/PatternGrammar.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-# A grammar to describe tree matching patterns.
-# Not shown here:
-# - 'TOKEN' stands for any token (leaf node)
-# - 'any' stands for any node (leaf or interior)
-# With 'any' we can still specify the sub-structure.
-
-# The start symbol is 'Matcher'.
-
-Matcher: Alternatives ENDMARKER
-
-Alternatives: Alternative ('|' Alternative)*
-
-Alternative: (Unit | NegatedUnit)+
-
-Unit: [NAME '='] ( STRING [Repeater]
-                 | NAME [Details] [Repeater]
-                 | '(' Alternatives ')' [Repeater]
-                 | '[' Alternatives ']'
-		 )
-
-NegatedUnit: 'not' (STRING | NAME [Details] | '(' Alternatives ')')
-
-Repeater: '*' | '+' | '{' NUMBER [',' NUMBER] '}'
-
-Details: '<' Alternatives '>'
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/__init__.py
deleted file mode 100644
index 21ab634..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-#empty
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/__main__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/__main__.py
deleted file mode 100644
index 41f0167..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/__main__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-import sys
-from .main import main
-
-sys.exit(main("lib2to3.fixes"))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/btm_matcher.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/btm_matcher.py
deleted file mode 100644
index d417af3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/btm_matcher.py
+++ /dev/null
@@ -1,168 +0,0 @@
-"""A bottom-up tree matching algorithm implementation meant to speed
-up 2to3's matching process. After the tree patterns are reduced to
-their rarest linear path, a linear Aho-Corasick automaton is
-created. The linear automaton traverses the linear paths from the
-leaves to the root of the AST and returns a set of nodes for further
-matching. This reduces significantly the number of candidate nodes."""
-
-__author__ = "George Boutsioukis <gboutsioukis@gmail.com>"
-
-import logging
-import itertools
-from collections import defaultdict
-
-from . import pytree
-from .btm_utils import reduce_tree
-
-class BMNode(object):
-    """Class for a node of the Aho-Corasick automaton used in matching"""
-    count = itertools.count()
-    def __init__(self):
-        self.transition_table = {}
-        self.fixers = []
-        self.id = next(BMNode.count)
-        self.content = ''
-
-class BottomMatcher(object):
-    """The main matcher class. After instantiating the patterns should
-    be added using the add_fixer method"""
-
-    def __init__(self):
-        self.match = set()
-        self.root = BMNode()
-        self.nodes = [self.root]
-        self.fixers = []
-        self.logger = logging.getLogger("RefactoringTool")
-
-    def add_fixer(self, fixer):
-        """Reduces a fixer's pattern tree to a linear path and adds it
-        to the matcher(a common Aho-Corasick automaton). The fixer is
-        appended on the matching states and called when they are
-        reached"""
-        self.fixers.append(fixer)
-        tree = reduce_tree(fixer.pattern_tree)
-        linear = tree.get_linear_subpattern()
-        match_nodes = self.add(linear, start=self.root)
-        for match_node in match_nodes:
-            match_node.fixers.append(fixer)
-
-    def add(self, pattern, start):
-        "Recursively adds a linear pattern to the AC automaton"
-        #print("adding pattern", pattern, "to", start)
-        if not pattern:
-            #print("empty pattern")
-            return [start]
-        if isinstance(pattern[0], tuple):
-            #alternatives
-            #print("alternatives")
-            match_nodes = []
-            for alternative in pattern[0]:
-                #add all alternatives, and add the rest of the pattern
-                #to each end node
-                end_nodes = self.add(alternative, start=start)
-                for end in end_nodes:
-                    match_nodes.extend(self.add(pattern[1:], end))
-            return match_nodes
-        else:
-            #single token
-            #not last
-            if pattern[0] not in start.transition_table:
-                #transition did not exist, create new
-                next_node = BMNode()
-                start.transition_table[pattern[0]] = next_node
-            else:
-                #transition exists already, follow
-                next_node = start.transition_table[pattern[0]]
-
-            if pattern[1:]:
-                end_nodes = self.add(pattern[1:], start=next_node)
-            else:
-                end_nodes = [next_node]
-            return end_nodes
-
-    def run(self, leaves):
-        """The main interface with the bottom matcher. The tree is
-        traversed from the bottom using the constructed
-        automaton. Nodes are only checked once as the tree is
-        retraversed. When the automaton fails, we give it one more
-        shot(in case the above tree matches as a whole with the
-        rejected leaf), then we break for the next leaf. There is the
-        special case of multiple arguments(see code comments) where we
-        recheck the nodes
-
-        Args:
-           The leaves of the AST tree to be matched
-
-        Returns:
-           A dictionary of node matches with fixers as the keys
-        """
-        current_ac_node = self.root
-        results = defaultdict(list)
-        for leaf in leaves:
-            current_ast_node = leaf
-            while current_ast_node:
-                current_ast_node.was_checked = True
-                for child in current_ast_node.children:
-                    # multiple statements, recheck
-                    if isinstance(child, pytree.Leaf) and child.value == u";":
-                        current_ast_node.was_checked = False
-                        break
-                if current_ast_node.type == 1:
-                    #name
-                    node_token = current_ast_node.value
-                else:
-                    node_token = current_ast_node.type
-
-                if node_token in current_ac_node.transition_table:
-                    #token matches
-                    current_ac_node = current_ac_node.transition_table[node_token]
-                    for fixer in current_ac_node.fixers:
-                        if not fixer in results:
-                            results[fixer] = []
-                        results[fixer].append(current_ast_node)
-
-                else:
-                    #matching failed, reset automaton
-                    current_ac_node = self.root
-                    if (current_ast_node.parent is not None
-                        and current_ast_node.parent.was_checked):
-                        #the rest of the tree upwards has been checked, next leaf
-                        break
-
-                    #recheck the rejected node once from the root
-                    if node_token in current_ac_node.transition_table:
-                        #token matches
-                        current_ac_node = current_ac_node.transition_table[node_token]
-                        for fixer in current_ac_node.fixers:
-                            if not fixer in results.keys():
-                                results[fixer] = []
-                            results[fixer].append(current_ast_node)
-
-                current_ast_node = current_ast_node.parent
-        return results
-
-    def print_ac(self):
-        "Prints a graphviz diagram of the BM automaton(for debugging)"
-        print("digraph g{")
-        def print_node(node):
-            for subnode_key in node.transition_table.keys():
-                subnode = node.transition_table[subnode_key]
-                print("%d -> %d [label=%s] //%s" %
-                      (node.id, subnode.id, type_repr(subnode_key), str(subnode.fixers)))
-                if subnode_key == 1:
-                    print(subnode.content)
-                print_node(subnode)
-        print_node(self.root)
-        print("}")
-
-# taken from pytree.py for debugging; only used by print_ac
-_type_reprs = {}
-def type_repr(type_num):
-    global _type_reprs
-    if not _type_reprs:
-        from .pygram import python_symbols
-        # printing tokens is possible but not as useful
-        # from .pgen2 import token // token.__dict__.items():
-        for name, val in python_symbols.__dict__.items():
-            if type(val) == int: _type_reprs[val] = name
-    return _type_reprs.setdefault(type_num, type_num)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/btm_utils.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/btm_utils.py
deleted file mode 100644
index 372a6a3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/btm_utils.py
+++ /dev/null
@@ -1,283 +0,0 @@
-"Utility functions used by the btm_matcher module"
-
-from . import pytree
-from .pgen2 import grammar, token
-from .pygram import pattern_symbols, python_symbols
-
-syms = pattern_symbols
-pysyms = python_symbols
-tokens = grammar.opmap
-token_labels = token
-
-TYPE_ANY = -1
-TYPE_ALTERNATIVES = -2
-TYPE_GROUP = -3
-
-class MinNode(object):
-    """This class serves as an intermediate representation of the
-    pattern tree during the conversion to sets of leaf-to-root
-    subpatterns"""
-
-    def __init__(self, type=None, name=None):
-        self.type = type
-        self.name = name
-        self.children = []
-        self.leaf = False
-        self.parent = None
-        self.alternatives = []
-        self.group = []
-
-    def __repr__(self):
-        return str(self.type) + ' ' + str(self.name)
-
-    def leaf_to_root(self):
-        """Internal method. Returns a characteristic path of the
-        pattern tree. This method must be run for all leaves until the
-        linear subpatterns are merged into a single"""
-        node = self
-        subp = []
-        while node:
-            if node.type == TYPE_ALTERNATIVES:
-                node.alternatives.append(subp)
-                if len(node.alternatives) == len(node.children):
-                    #last alternative
-                    subp = [tuple(node.alternatives)]
-                    node.alternatives = []
-                    node = node.parent
-                    continue
-                else:
-                    node = node.parent
-                    subp = None
-                    break
-
-            if node.type == TYPE_GROUP:
-                node.group.append(subp)
-                #probably should check the number of leaves
-                if len(node.group) == len(node.children):
-                    subp = get_characteristic_subpattern(node.group)
-                    node.group = []
-                    node = node.parent
-                    continue
-                else:
-                    node = node.parent
-                    subp = None
-                    break
-
-            if node.type == token_labels.NAME and node.name:
-                #in case of type=name, use the name instead
-                subp.append(node.name)
-            else:
-                subp.append(node.type)
-
-            node = node.parent
-        return subp
-
-    def get_linear_subpattern(self):
-        """Drives the leaf_to_root method. The reason that
-        leaf_to_root must be run multiple times is because we need to
-        reject 'group' matches; for example the alternative form
-        (a | b c) creates a group [b c] that needs to be matched. Since
-        matching multiple linear patterns overcomes the automaton's
-        capabilities, leaf_to_root merges each group into a single
-        choice based on 'characteristic'ity,
-
-        i.e. (a|b c) -> (a|b) if b more characteristic than c
-
-        Returns: The most 'characteristic'(as defined by
-          get_characteristic_subpattern) path for the compiled pattern
-          tree.
-        """
-
-        for l in self.leaves():
-            subp = l.leaf_to_root()
-            if subp:
-                return subp
-
-    def leaves(self):
-        "Generator that returns the leaves of the tree"
-        for child in self.children:
-            for x in child.leaves():
-                yield x
-        if not self.children:
-            yield self
-
-def reduce_tree(node, parent=None):
-    """
-    Internal function. Reduces a compiled pattern tree to an
-    intermediate representation suitable for feeding the
-    automaton. This also trims off any optional pattern elements(like
-    [a], a*).
-    """
-
-    new_node = None
-    #switch on the node type
-    if node.type == syms.Matcher:
-        #skip
-        node = node.children[0]
-
-    if node.type == syms.Alternatives  :
-        #2 cases
-        if len(node.children) <= 2:
-            #just a single 'Alternative', skip this node
-            new_node = reduce_tree(node.children[0], parent)
-        else:
-            #real alternatives
-            new_node = MinNode(type=TYPE_ALTERNATIVES)
-            #skip odd children('|' tokens)
-            for child in node.children:
-                if node.children.index(child)%2:
-                    continue
-                reduced = reduce_tree(child, new_node)
-                if reduced is not None:
-                    new_node.children.append(reduced)
-    elif node.type == syms.Alternative:
-        if len(node.children) > 1:
-
-            new_node = MinNode(type=TYPE_GROUP)
-            for child in node.children:
-                reduced = reduce_tree(child, new_node)
-                if reduced:
-                    new_node.children.append(reduced)
-            if not new_node.children:
-                # delete the group if all of the children were reduced to None
-                new_node = None
-
-        else:
-            new_node = reduce_tree(node.children[0], parent)
-
-    elif node.type == syms.Unit:
-        if (isinstance(node.children[0], pytree.Leaf) and
-            node.children[0].value == '('):
-            #skip parentheses
-            return reduce_tree(node.children[1], parent)
-        if ((isinstance(node.children[0], pytree.Leaf) and
-               node.children[0].value == '[')
-               or
-               (len(node.children)>1 and
-               hasattr(node.children[1], "value") and
-               node.children[1].value == '[')):
-            #skip whole unit if its optional
-            return None
-
-        leaf = True
-        details_node = None
-        alternatives_node = None
-        has_repeater = False
-        repeater_node = None
-        has_variable_name = False
-
-        for child in node.children:
-            if child.type == syms.Details:
-                leaf = False
-                details_node = child
-            elif child.type == syms.Repeater:
-                has_repeater = True
-                repeater_node = child
-            elif child.type == syms.Alternatives:
-                alternatives_node = child
-            if hasattr(child, 'value') and child.value == '=': # variable name
-                has_variable_name = True
-
-        #skip variable name
-        if has_variable_name:
-            #skip variable name, '='
-            name_leaf = node.children[2]
-            if hasattr(name_leaf, 'value') and name_leaf.value == '(':
-                # skip parenthesis
-                name_leaf = node.children[3]
-        else:
-            name_leaf = node.children[0]
-
-        #set node type
-        if name_leaf.type == token_labels.NAME:
-            #(python) non-name or wildcard
-            if name_leaf.value == 'any':
-                new_node = MinNode(type=TYPE_ANY)
-            else:
-                if hasattr(token_labels, name_leaf.value):
-                    new_node = MinNode(type=getattr(token_labels, name_leaf.value))
-                else:
-                    new_node = MinNode(type=getattr(pysyms, name_leaf.value))
-
-        elif name_leaf.type == token_labels.STRING:
-            #(python) name or character; remove the apostrophes from
-            #the string value
-            name = name_leaf.value.strip("'")
-            if name in tokens:
-                new_node = MinNode(type=tokens[name])
-            else:
-                new_node = MinNode(type=token_labels.NAME, name=name)
-        elif name_leaf.type == syms.Alternatives:
-            new_node = reduce_tree(alternatives_node, parent)
-
-        #handle repeaters
-        if has_repeater:
-            if repeater_node.children[0].value == '*':
-                #reduce to None
-                new_node = None
-            elif repeater_node.children[0].value == '+':
-                #reduce to a single occurence i.e. do nothing
-                pass
-            else:
-                #TODO: handle {min, max} repeaters
-                raise NotImplementedError
-                pass
-
-        #add children
-        if details_node and new_node is not None:
-            for child in details_node.children[1:-1]:
-                #skip '<', '>' markers
-                reduced = reduce_tree(child, new_node)
-                if reduced is not None:
-                    new_node.children.append(reduced)
-    if new_node:
-        new_node.parent = parent
-    return new_node
-
-
-def get_characteristic_subpattern(subpatterns):
-    """Picks the most characteristic from a list of linear patterns
-    Current order used is:
-    names > common_names > common_chars
-    """
-    if not isinstance(subpatterns, list):
-        return subpatterns
-    if len(subpatterns)==1:
-        return subpatterns[0]
-
-    # first pick out the ones containing variable names
-    subpatterns_with_names = []
-    subpatterns_with_common_names = []
-    common_names = ['in', 'for', 'if' , 'not', 'None']
-    subpatterns_with_common_chars = []
-    common_chars = "[]().,:"
-    for subpattern in subpatterns:
-        if any(rec_test(subpattern, lambda x: type(x) is str)):
-            if any(rec_test(subpattern,
-                            lambda x: isinstance(x, str) and x in common_chars)):
-                subpatterns_with_common_chars.append(subpattern)
-            elif any(rec_test(subpattern,
-                              lambda x: isinstance(x, str) and x in common_names)):
-                subpatterns_with_common_names.append(subpattern)
-
-            else:
-                subpatterns_with_names.append(subpattern)
-
-    if subpatterns_with_names:
-        subpatterns = subpatterns_with_names
-    elif subpatterns_with_common_names:
-        subpatterns = subpatterns_with_common_names
-    elif subpatterns_with_common_chars:
-        subpatterns = subpatterns_with_common_chars
-    # of the remaining subpatterns pick out the longest one
-    return max(subpatterns, key=len)
-
-def rec_test(sequence, test_func):
-    """Tests test_func on all items of sequence and items of included
-    sub-iterables"""
-    for x in sequence:
-        if isinstance(x, (list, tuple)):
-            for y in rec_test(x, test_func):
-                yield y
-        else:
-            yield test_func(x)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixer_base.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixer_base.py
deleted file mode 100644
index a2033c9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixer_base.py
+++ /dev/null
@@ -1,189 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Base class for fixers (optional, but recommended)."""
-
-# Python imports
-import logging
-import itertools
-
-# Local imports
-from .patcomp import PatternCompiler
-from . import pygram
-from .fixer_util import does_tree_import
-
-class BaseFix(object):
-
-    """Optional base class for fixers.
-
-    The subclass name must be FixFooBar where FooBar is the result of
-    removing underscores and capitalizing the words of the fix name.
-    For example, the class name for a fixer named 'has_key' should be
-    FixHasKey.
-    """
-
-    PATTERN = None  # Most subclasses should override with a string literal
-    pattern = None  # Compiled pattern, set by compile_pattern()
-    pattern_tree = None # Tree representation of the pattern
-    options = None  # Options object passed to initializer
-    filename = None # The filename (set by set_filename)
-    logger = None   # A logger (set by set_filename)
-    numbers = itertools.count(1) # For new_name()
-    used_names = set() # A set of all used NAMEs
-    order = "post" # Does the fixer prefer pre- or post-order traversal
-    explicit = False # Is this ignored by refactor.py -f all?
-    run_order = 5   # Fixers will be sorted by run order before execution
-                    # Lower numbers will be run first.
-    _accept_type = None # [Advanced and not public] This tells RefactoringTool
-                        # which node type to accept when there's not a pattern.
-
-    keep_line_order = False # For the bottom matcher: match with the
-                            # original line order
-    BM_compatible = False # Compatibility with the bottom matching
-                          # module; every fixer should set this
-                          # manually
-
-    # Shortcut for access to Python grammar symbols
-    syms = pygram.python_symbols
-
-    def __init__(self, options, log):
-        """Initializer.  Subclass may override.
-
-        Args:
-            options: an dict containing the options passed to RefactoringTool
-            that could be used to customize the fixer through the command line.
-            log: a list to append warnings and other messages to.
-        """
-        self.options = options
-        self.log = log
-        self.compile_pattern()
-
-    def compile_pattern(self):
-        """Compiles self.PATTERN into self.pattern.
-
-        Subclass may override if it doesn't want to use
-        self.{pattern,PATTERN} in .match().
-        """
-        if self.PATTERN is not None:
-            PC = PatternCompiler()
-            self.pattern, self.pattern_tree = PC.compile_pattern(self.PATTERN,
-                                                                 with_tree=True)
-
-    def set_filename(self, filename):
-        """Set the filename, and a logger derived from it.
-
-        The main refactoring tool should call this.
-        """
-        self.filename = filename
-        self.logger = logging.getLogger(filename)
-
-    def match(self, node):
-        """Returns match for a given parse tree node.
-
-        Should return a true or false object (not necessarily a bool).
-        It may return a non-empty dict of matching sub-nodes as
-        returned by a matching pattern.
-
-        Subclass may override.
-        """
-        results = {"node": node}
-        return self.pattern.match(node, results) and results
-
-    def transform(self, node, results):
-        """Returns the transformation for a given parse tree node.
-
-        Args:
-          node: the root of the parse tree that matched the fixer.
-          results: a dict mapping symbolic names to part of the match.
-
-        Returns:
-          None, or a node that is a modified copy of the
-          argument node.  The node argument may also be modified in-place to
-          effect the same change.
-
-        Subclass *must* override.
-        """
-        raise NotImplementedError()
-
-    def new_name(self, template=u"xxx_todo_changeme"):
-        """Return a string suitable for use as an identifier
-
-        The new name is guaranteed not to conflict with other identifiers.
-        """
-        name = template
-        while name in self.used_names:
-            name = template + unicode(self.numbers.next())
-        self.used_names.add(name)
-        return name
-
-    def log_message(self, message):
-        if self.first_log:
-            self.first_log = False
-            self.log.append("### In file %s ###" % self.filename)
-        self.log.append(message)
-
-    def cannot_convert(self, node, reason=None):
-        """Warn the user that a given chunk of code is not valid Python 3,
-        but that it cannot be converted automatically.
-
-        First argument is the top-level node for the code in question.
-        Optional second argument is why it can't be converted.
-        """
-        lineno = node.get_lineno()
-        for_output = node.clone()
-        for_output.prefix = u""
-        msg = "Line %d: could not convert: %s"
-        self.log_message(msg % (lineno, for_output))
-        if reason:
-            self.log_message(reason)
-
-    def warning(self, node, reason):
-        """Used for warning the user about possible uncertainty in the
-        translation.
-
-        First argument is the top-level node for the code in question.
-        Optional second argument is why it can't be converted.
-        """
-        lineno = node.get_lineno()
-        self.log_message("Line %d: %s" % (lineno, reason))
-
-    def start_tree(self, tree, filename):
-        """Some fixers need to maintain tree-wide state.
-        This method is called once, at the start of tree fix-up.
-
-        tree - the root node of the tree to be processed.
-        filename - the name of the file the tree came from.
-        """
-        self.used_names = tree.used_names
-        self.set_filename(filename)
-        self.numbers = itertools.count(1)
-        self.first_log = True
-
-    def finish_tree(self, tree, filename):
-        """Some fixers need to maintain tree-wide state.
-        This method is called once, at the conclusion of tree fix-up.
-
-        tree - the root node of the tree to be processed.
-        filename - the name of the file the tree came from.
-        """
-        pass
-
-
-class ConditionalFix(BaseFix):
-    """ Base class for fixers which not execute if an import is found. """
-
-    # This is the name of the import which, if found, will cause the test to be skipped
-    skip_on = None
-
-    def start_tree(self, *args):
-        super(ConditionalFix, self).start_tree(*args)
-        self._should_skip = None
-
-    def should_skip(self, node):
-        if self._should_skip is not None:
-            return self._should_skip
-        pkg = self.skip_on.split(".")
-        name = pkg[-1]
-        pkg = ".".join(pkg[:-1])
-        self._should_skip = does_tree_import(pkg, name, node)
-        return self._should_skip
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixer_util.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixer_util.py
deleted file mode 100644
index cd70b9d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixer_util.py
+++ /dev/null
@@ -1,432 +0,0 @@
-"""Utility functions, node construction macros, etc."""
-# Author: Collin Winter
-
-from itertools import islice
-
-# Local imports
-from .pgen2 import token
-from .pytree import Leaf, Node
-from .pygram import python_symbols as syms
-from . import patcomp
-
-
-###########################################################
-### Common node-construction "macros"
-###########################################################
-
-def KeywordArg(keyword, value):
-    return Node(syms.argument,
-                [keyword, Leaf(token.EQUAL, u"="), value])
-
-def LParen():
-    return Leaf(token.LPAR, u"(")
-
-def RParen():
-    return Leaf(token.RPAR, u")")
-
-def Assign(target, source):
-    """Build an assignment statement"""
-    if not isinstance(target, list):
-        target = [target]
-    if not isinstance(source, list):
-        source.prefix = u" "
-        source = [source]
-
-    return Node(syms.atom,
-                target + [Leaf(token.EQUAL, u"=", prefix=u" ")] + source)
-
-def Name(name, prefix=None):
-    """Return a NAME leaf"""
-    return Leaf(token.NAME, name, prefix=prefix)
-
-def Attr(obj, attr):
-    """A node tuple for obj.attr"""
-    return [obj, Node(syms.trailer, [Dot(), attr])]
-
-def Comma():
-    """A comma leaf"""
-    return Leaf(token.COMMA, u",")
-
-def Dot():
-    """A period (.) leaf"""
-    return Leaf(token.DOT, u".")
-
-def ArgList(args, lparen=LParen(), rparen=RParen()):
-    """A parenthesised argument list, used by Call()"""
-    node = Node(syms.trailer, [lparen.clone(), rparen.clone()])
-    if args:
-        node.insert_child(1, Node(syms.arglist, args))
-    return node
-
-def Call(func_name, args=None, prefix=None):
-    """A function call"""
-    node = Node(syms.power, [func_name, ArgList(args)])
-    if prefix is not None:
-        node.prefix = prefix
-    return node
-
-def Newline():
-    """A newline literal"""
-    return Leaf(token.NEWLINE, u"\n")
-
-def BlankLine():
-    """A blank line"""
-    return Leaf(token.NEWLINE, u"")
-
-def Number(n, prefix=None):
-    return Leaf(token.NUMBER, n, prefix=prefix)
-
-def Subscript(index_node):
-    """A numeric or string subscript"""
-    return Node(syms.trailer, [Leaf(token.LBRACE, u"["),
-                               index_node,
-                               Leaf(token.RBRACE, u"]")])
-
-def String(string, prefix=None):
-    """A string leaf"""
-    return Leaf(token.STRING, string, prefix=prefix)
-
-def ListComp(xp, fp, it, test=None):
-    """A list comprehension of the form [xp for fp in it if test].
-
-    If test is None, the "if test" part is omitted.
-    """
-    xp.prefix = u""
-    fp.prefix = u" "
-    it.prefix = u" "
-    for_leaf = Leaf(token.NAME, u"for")
-    for_leaf.prefix = u" "
-    in_leaf = Leaf(token.NAME, u"in")
-    in_leaf.prefix = u" "
-    inner_args = [for_leaf, fp, in_leaf, it]
-    if test:
-        test.prefix = u" "
-        if_leaf = Leaf(token.NAME, u"if")
-        if_leaf.prefix = u" "
-        inner_args.append(Node(syms.comp_if, [if_leaf, test]))
-    inner = Node(syms.listmaker, [xp, Node(syms.comp_for, inner_args)])
-    return Node(syms.atom,
-                       [Leaf(token.LBRACE, u"["),
-                        inner,
-                        Leaf(token.RBRACE, u"]")])
-
-def FromImport(package_name, name_leafs):
-    """ Return an import statement in the form:
-        from package import name_leafs"""
-    # XXX: May not handle dotted imports properly (eg, package_name='foo.bar')
-    #assert package_name == '.' or '.' not in package_name, "FromImport has "\
-    #       "not been tested with dotted package names -- use at your own "\
-    #       "peril!"
-
-    for leaf in name_leafs:
-        # Pull the leaves out of their old tree
-        leaf.remove()
-
-    children = [Leaf(token.NAME, u"from"),
-                Leaf(token.NAME, package_name, prefix=u" "),
-                Leaf(token.NAME, u"import", prefix=u" "),
-                Node(syms.import_as_names, name_leafs)]
-    imp = Node(syms.import_from, children)
-    return imp
-
-
-###########################################################
-### Determine whether a node represents a given literal
-###########################################################
-
-def is_tuple(node):
-    """Does the node represent a tuple literal?"""
-    if isinstance(node, Node) and node.children == [LParen(), RParen()]:
-        return True
-    return (isinstance(node, Node)
-            and len(node.children) == 3
-            and isinstance(node.children[0], Leaf)
-            and isinstance(node.children[1], Node)
-            and isinstance(node.children[2], Leaf)
-            and node.children[0].value == u"("
-            and node.children[2].value == u")")
-
-def is_list(node):
-    """Does the node represent a list literal?"""
-    return (isinstance(node, Node)
-            and len(node.children) > 1
-            and isinstance(node.children[0], Leaf)
-            and isinstance(node.children[-1], Leaf)
-            and node.children[0].value == u"["
-            and node.children[-1].value == u"]")
-
-
-###########################################################
-### Misc
-###########################################################
-
-def parenthesize(node):
-    return Node(syms.atom, [LParen(), node, RParen()])
-
-
-consuming_calls = set(["sorted", "list", "set", "any", "all", "tuple", "sum",
-                       "min", "max"])
-
-def attr_chain(obj, attr):
-    """Follow an attribute chain.
-
-    If you have a chain of objects where a.foo -> b, b.foo-> c, etc,
-    use this to iterate over all objects in the chain. Iteration is
-    terminated by getattr(x, attr) is None.
-
-    Args:
-        obj: the starting object
-        attr: the name of the chaining attribute
-
-    Yields:
-        Each successive object in the chain.
-    """
-    next = getattr(obj, attr)
-    while next:
-        yield next
-        next = getattr(next, attr)
-
-p0 = """for_stmt< 'for' any 'in' node=any ':' any* >
-        | comp_for< 'for' any 'in' node=any any* >
-     """
-p1 = """
-power<
-    ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'sum' |
-      'any' | 'all' | (any* trailer< '.' 'join' >) )
-    trailer< '(' node=any ')' >
-    any*
->
-"""
-p2 = """
-power<
-    'sorted'
-    trailer< '(' arglist<node=any any*> ')' >
-    any*
->
-"""
-pats_built = False
-def in_special_context(node):
-    """ Returns true if node is in an environment where all that is required
-        of it is being itterable (ie, it doesn't matter if it returns a list
-        or an itterator).
-        See test_map_nochange in test_fixers.py for some examples and tests.
-        """
-    global p0, p1, p2, pats_built
-    if not pats_built:
-        p1 = patcomp.compile_pattern(p1)
-        p0 = patcomp.compile_pattern(p0)
-        p2 = patcomp.compile_pattern(p2)
-        pats_built = True
-    patterns = [p0, p1, p2]
-    for pattern, parent in zip(patterns, attr_chain(node, "parent")):
-        results = {}
-        if pattern.match(parent, results) and results["node"] is node:
-            return True
-    return False
-
-def is_probably_builtin(node):
-    """
-    Check that something isn't an attribute or function name etc.
-    """
-    prev = node.prev_sibling
-    if prev is not None and prev.type == token.DOT:
-        # Attribute lookup.
-        return False
-    parent = node.parent
-    if parent.type in (syms.funcdef, syms.classdef):
-        return False
-    if parent.type == syms.expr_stmt and parent.children[0] is node:
-        # Assignment.
-        return False
-    if parent.type == syms.parameters or \
-            (parent.type == syms.typedargslist and (
-            (prev is not None and prev.type == token.COMMA) or
-            parent.children[0] is node
-            )):
-        # The name of an argument.
-        return False
-    return True
-
-def find_indentation(node):
-    """Find the indentation of *node*."""
-    while node is not None:
-        if node.type == syms.suite and len(node.children) > 2:
-            indent = node.children[1]
-            if indent.type == token.INDENT:
-                return indent.value
-        node = node.parent
-    return u""
-
-###########################################################
-### The following functions are to find bindings in a suite
-###########################################################
-
-def make_suite(node):
-    if node.type == syms.suite:
-        return node
-    node = node.clone()
-    parent, node.parent = node.parent, None
-    suite = Node(syms.suite, [node])
-    suite.parent = parent
-    return suite
-
-def find_root(node):
-    """Find the top level namespace."""
-    # Scamper up to the top level namespace
-    while node.type != syms.file_input:
-        assert node.parent, "Tree is insane! root found before "\
-                           "file_input node was found."
-        node = node.parent
-    return node
-
-def does_tree_import(package, name, node):
-    """ Returns true if name is imported from package at the
-        top level of the tree which node belongs to.
-        To cover the case of an import like 'import foo', use
-        None for the package and 'foo' for the name. """
-    binding = find_binding(name, find_root(node), package)
-    return bool(binding)
-
-def is_import(node):
-    """Returns true if the node is an import statement."""
-    return node.type in (syms.import_name, syms.import_from)
-
-def touch_import(package, name, node):
-    """ Works like `does_tree_import` but adds an import statement
-        if it was not imported. """
-    def is_import_stmt(node):
-        return (node.type == syms.simple_stmt and node.children and
-                is_import(node.children[0]))
-
-    root = find_root(node)
-
-    if does_tree_import(package, name, root):
-        return
-
-    # figure out where to insert the new import.  First try to find
-    # the first import and then skip to the last one.
-    insert_pos = offset = 0
-    for idx, node in enumerate(root.children):
-        if not is_import_stmt(node):
-            continue
-        for offset, node2 in enumerate(root.children[idx:]):
-            if not is_import_stmt(node2):
-                break
-        insert_pos = idx + offset
-        break
-
-    # if there are no imports where we can insert, find the docstring.
-    # if that also fails, we stick to the beginning of the file
-    if insert_pos == 0:
-        for idx, node in enumerate(root.children):
-            if (node.type == syms.simple_stmt and node.children and
-               node.children[0].type == token.STRING):
-                insert_pos = idx + 1
-                break
-
-    if package is None:
-        import_ = Node(syms.import_name, [
-            Leaf(token.NAME, u"import"),
-            Leaf(token.NAME, name, prefix=u" ")
-        ])
-    else:
-        import_ = FromImport(package, [Leaf(token.NAME, name, prefix=u" ")])
-
-    children = [import_, Newline()]
-    root.insert_child(insert_pos, Node(syms.simple_stmt, children))
-
-
-_def_syms = set([syms.classdef, syms.funcdef])
-def find_binding(name, node, package=None):
-    """ Returns the node which binds variable name, otherwise None.
-        If optional argument package is supplied, only imports will
-        be returned.
-        See test cases for examples."""
-    for child in node.children:
-        ret = None
-        if child.type == syms.for_stmt:
-            if _find(name, child.children[1]):
-                return child
-            n = find_binding(name, make_suite(child.children[-1]), package)
-            if n: ret = n
-        elif child.type in (syms.if_stmt, syms.while_stmt):
-            n = find_binding(name, make_suite(child.children[-1]), package)
-            if n: ret = n
-        elif child.type == syms.try_stmt:
-            n = find_binding(name, make_suite(child.children[2]), package)
-            if n:
-                ret = n
-            else:
-                for i, kid in enumerate(child.children[3:]):
-                    if kid.type == token.COLON and kid.value == ":":
-                        # i+3 is the colon, i+4 is the suite
-                        n = find_binding(name, make_suite(child.children[i+4]), package)
-                        if n: ret = n
-        elif child.type in _def_syms and child.children[1].value == name:
-            ret = child
-        elif _is_import_binding(child, name, package):
-            ret = child
-        elif child.type == syms.simple_stmt:
-            ret = find_binding(name, child, package)
-        elif child.type == syms.expr_stmt:
-            if _find(name, child.children[0]):
-                ret = child
-
-        if ret:
-            if not package:
-                return ret
-            if is_import(ret):
-                return ret
-    return None
-
-_block_syms = set([syms.funcdef, syms.classdef, syms.trailer])
-def _find(name, node):
-    nodes = [node]
-    while nodes:
-        node = nodes.pop()
-        if node.type > 256 and node.type not in _block_syms:
-            nodes.extend(node.children)
-        elif node.type == token.NAME and node.value == name:
-            return node
-    return None
-
-def _is_import_binding(node, name, package=None):
-    """ Will reuturn node if node will import name, or node
-        will import * from package.  None is returned otherwise.
-        See test cases for examples. """
-
-    if node.type == syms.import_name and not package:
-        imp = node.children[1]
-        if imp.type == syms.dotted_as_names:
-            for child in imp.children:
-                if child.type == syms.dotted_as_name:
-                    if child.children[2].value == name:
-                        return node
-                elif child.type == token.NAME and child.value == name:
-                    return node
-        elif imp.type == syms.dotted_as_name:
-            last = imp.children[-1]
-            if last.type == token.NAME and last.value == name:
-                return node
-        elif imp.type == token.NAME and imp.value == name:
-            return node
-    elif node.type == syms.import_from:
-        # unicode(...) is used to make life easier here, because
-        # from a.b import parses to ['import', ['a', '.', 'b'], ...]
-        if package and unicode(node.children[1]).strip() != package:
-            return None
-        n = node.children[3]
-        if package and _find(u"as", n):
-            # See test_from_import_as for explanation
-            return None
-        elif n.type == syms.import_as_names and _find(name, n):
-            return node
-        elif n.type == syms.import_as_name:
-            child = n.children[2]
-            if child.type == token.NAME and child.value == name:
-                return node
-        elif n.type == token.NAME and n.value == name:
-            return node
-        elif package and n.type == token.STAR:
-            return node
-    return None
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/__init__.py
deleted file mode 100644
index ee074ac..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Dummy file to make this directory a package.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_apply.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_apply.py
deleted file mode 100644
index 7c5b219..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_apply.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer for apply().
-
-This converts apply(func, v, k) into (func)(*v, **k)."""
-
-# Local imports
-from .. import pytree
-from ..pgen2 import token
-from .. import fixer_base
-from ..fixer_util import Call, Comma, parenthesize
-
-class FixApply(fixer_base.BaseFix):
-    BM_compatible = True
-
-    PATTERN = """
-    power< 'apply'
-        trailer<
-            '('
-            arglist<
-                (not argument<NAME '=' any>) func=any ','
-                (not argument<NAME '=' any>) args=any [','
-                (not argument<NAME '=' any>) kwds=any] [',']
-            >
-            ')'
-        >
-    >
-    """
-
-    def transform(self, node, results):
-        syms = self.syms
-        assert results
-        func = results["func"]
-        args = results["args"]
-        kwds = results.get("kwds")
-        prefix = node.prefix
-        func = func.clone()
-        if (func.type not in (token.NAME, syms.atom) and
-            (func.type != syms.power or
-             func.children[-2].type == token.DOUBLESTAR)):
-            # Need to parenthesize
-            func = parenthesize(func)
-        func.prefix = ""
-        args = args.clone()
-        args.prefix = ""
-        if kwds is not None:
-            kwds = kwds.clone()
-            kwds.prefix = ""
-        l_newargs = [pytree.Leaf(token.STAR, u"*"), args]
-        if kwds is not None:
-            l_newargs.extend([Comma(),
-                              pytree.Leaf(token.DOUBLESTAR, u"**"),
-                              kwds])
-            l_newargs[-2].prefix = u" " # that's the ** token
-        # XXX Sometimes we could be cleverer, e.g. apply(f, (x, y) + t)
-        # can be translated into f(x, y, *t) instead of f(*(x, y) + t)
-        #new = pytree.Node(syms.power, (func, ArgList(l_newargs)))
-        return Call(func, l_newargs, prefix=prefix)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_basestring.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_basestring.py
deleted file mode 100644
index 54f06e4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_basestring.py
+++ /dev/null
@@ -1,14 +0,0 @@
-"""Fixer for basestring -> str."""
-# Author: Christian Heimes
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Name
-
-class FixBasestring(fixer_base.BaseFix):
-    BM_compatible = True
-
-    PATTERN = "'basestring'"
-
-    def transform(self, node, results):
-        return Name(u"str", prefix=node.prefix)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_buffer.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_buffer.py
deleted file mode 100644
index 5dd1af3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_buffer.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2007 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer that changes buffer(...) into memoryview(...)."""
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Name
-
-
-class FixBuffer(fixer_base.BaseFix):
-    BM_compatible = True
-
-    explicit = True # The user must ask for this fixer
-
-    PATTERN = """
-              power< name='buffer' trailer< '(' [any] ')' > any* >
-              """
-
-    def transform(self, node, results):
-        name = results["name"]
-        name.replace(Name(u"memoryview", prefix=name.prefix))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_callable.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_callable.py
deleted file mode 100644
index ffc7ac5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_callable.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2007 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer for callable().
-
-This converts callable(obj) into isinstance(obj, collections.Callable), adding a
-collections import if needed."""
-
-# Local imports
-from lib2to3 import fixer_base
-from lib2to3.fixer_util import Call, Name, String, Attr, touch_import
-
-class FixCallable(fixer_base.BaseFix):
-    BM_compatible = True
-
-    order = "pre"
-
-    # Ignore callable(*args) or use of keywords.
-    # Either could be a hint that the builtin callable() is not being used.
-    PATTERN = """
-    power< 'callable'
-           trailer< lpar='('
-                    ( not(arglist | argument<any '=' any>) func=any
-                      | func=arglist<(not argument<any '=' any>) any ','> )
-                    rpar=')' >
-           after=any*
-    >
-    """
-
-    def transform(self, node, results):
-        func = results['func']
-
-        touch_import(None, u'collections', node=node)
-
-        args = [func.clone(), String(u', ')]
-        args.extend(Attr(Name(u'collections'), Name(u'Callable')))
-        return Call(Name(u'isinstance'), args, prefix=node.prefix)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_dict.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_dict.py
deleted file mode 100644
index abf776f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_dict.py
+++ /dev/null
@@ -1,107 +0,0 @@
-# Copyright 2007 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer for dict methods.
-
-d.keys() -> list(d.keys())
-d.items() -> list(d.items())
-d.values() -> list(d.values())
-
-d.iterkeys() -> iter(d.keys())
-d.iteritems() -> iter(d.items())
-d.itervalues() -> iter(d.values())
-
-d.viewkeys() -> d.keys()
-d.viewitems() -> d.items()
-d.viewvalues() -> d.values()
-
-Except in certain very specific contexts: the iter() can be dropped
-when the context is list(), sorted(), iter() or for...in; the list()
-can be dropped when the context is list() or sorted() (but not iter()
-or for...in!). Special contexts that apply to both: list(), sorted(), tuple()
-set(), any(), all(), sum().
-
-Note: iter(d.keys()) could be written as iter(d) but since the
-original d.iterkeys() was also redundant we don't fix this.  And there
-are (rare) contexts where it makes a difference (e.g. when passing it
-as an argument to a function that introspects the argument).
-"""
-
-# Local imports
-from .. import pytree
-from .. import patcomp
-from ..pgen2 import token
-from .. import fixer_base
-from ..fixer_util import Name, Call, LParen, RParen, ArgList, Dot
-from .. import fixer_util
-
-
-iter_exempt = fixer_util.consuming_calls | set(["iter"])
-
-
-class FixDict(fixer_base.BaseFix):
-    BM_compatible = True
-
-    PATTERN = """
-    power< head=any+
-         trailer< '.' method=('keys'|'items'|'values'|
-                              'iterkeys'|'iteritems'|'itervalues'|
-                              'viewkeys'|'viewitems'|'viewvalues') >
-         parens=trailer< '(' ')' >
-         tail=any*
-    >
-    """
-
-    def transform(self, node, results):
-        head = results["head"]
-        method = results["method"][0] # Extract node for method name
-        tail = results["tail"]
-        syms = self.syms
-        method_name = method.value
-        isiter = method_name.startswith(u"iter")
-        isview = method_name.startswith(u"view")
-        if isiter or isview:
-            method_name = method_name[4:]
-        assert method_name in (u"keys", u"items", u"values"), repr(method)
-        head = [n.clone() for n in head]
-        tail = [n.clone() for n in tail]
-        special = not tail and self.in_special_context(node, isiter)
-        args = head + [pytree.Node(syms.trailer,
-                                   [Dot(),
-                                    Name(method_name,
-                                         prefix=method.prefix)]),
-                       results["parens"].clone()]
-        new = pytree.Node(syms.power, args)
-        if not (special or isview):
-            new.prefix = u""
-            new = Call(Name(u"iter" if isiter else u"list"), [new])
-        if tail:
-            new = pytree.Node(syms.power, [new] + tail)
-        new.prefix = node.prefix
-        return new
-
-    P1 = "power< func=NAME trailer< '(' node=any ')' > any* >"
-    p1 = patcomp.compile_pattern(P1)
-
-    P2 = """for_stmt< 'for' any 'in' node=any ':' any* >
-            | comp_for< 'for' any 'in' node=any any* >
-         """
-    p2 = patcomp.compile_pattern(P2)
-
-    def in_special_context(self, node, isiter):
-        if node.parent is None:
-            return False
-        results = {}
-        if (node.parent.parent is not None and
-               self.p1.match(node.parent.parent, results) and
-               results["node"] is node):
-            if isiter:
-                # iter(d.iterkeys()) -> iter(d.keys()), etc.
-                return results["func"].value in iter_exempt
-            else:
-                # list(d.keys()) -> list(d.keys()), etc.
-                return results["func"].value in fixer_util.consuming_calls
-        if not isiter:
-            return False
-        # for ... in d.iterkeys() -> for ... in d.keys(), etc.
-        return self.p2.match(node.parent, results) and results["node"] is node
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_except.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_except.py
deleted file mode 100644
index 7ddf4f6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_except.py
+++ /dev/null
@@ -1,93 +0,0 @@
-"""Fixer for except statements with named exceptions.
-
-The following cases will be converted:
-
-- "except E, T:" where T is a name:
-
-    except E as T:
-
-- "except E, T:" where T is not a name, tuple or list:
-
-        except E as t:
-            T = t
-
-    This is done because the target of an "except" clause must be a
-    name.
-
-- "except E, T:" where T is a tuple or list literal:
-
-        except E as t:
-            T = t.args
-"""
-# Author: Collin Winter
-
-# Local imports
-from .. import pytree
-from ..pgen2 import token
-from .. import fixer_base
-from ..fixer_util import Assign, Attr, Name, is_tuple, is_list, syms
-
-def find_excepts(nodes):
-    for i, n in enumerate(nodes):
-        if n.type == syms.except_clause:
-            if n.children[0].value == u'except':
-                yield (n, nodes[i+2])
-
-class FixExcept(fixer_base.BaseFix):
-    BM_compatible = True
-
-    PATTERN = """
-    try_stmt< 'try' ':' (simple_stmt | suite)
-                  cleanup=(except_clause ':' (simple_stmt | suite))+
-                  tail=(['except' ':' (simple_stmt | suite)]
-                        ['else' ':' (simple_stmt | suite)]
-                        ['finally' ':' (simple_stmt | suite)]) >
-    """
-
-    def transform(self, node, results):
-        syms = self.syms
-
-        tail = [n.clone() for n in results["tail"]]
-
-        try_cleanup = [ch.clone() for ch in results["cleanup"]]
-        for except_clause, e_suite in find_excepts(try_cleanup):
-            if len(except_clause.children) == 4:
-                (E, comma, N) = except_clause.children[1:4]
-                comma.replace(Name(u"as", prefix=u" "))
-
-                if N.type != token.NAME:
-                    # Generate a new N for the except clause
-                    new_N = Name(self.new_name(), prefix=u" ")
-                    target = N.clone()
-                    target.prefix = u""
-                    N.replace(new_N)
-                    new_N = new_N.clone()
-
-                    # Insert "old_N = new_N" as the first statement in
-                    #  the except body. This loop skips leading whitespace
-                    #  and indents
-                    #TODO(cwinter) suite-cleanup
-                    suite_stmts = e_suite.children
-                    for i, stmt in enumerate(suite_stmts):
-                        if isinstance(stmt, pytree.Node):
-                            break
-
-                    # The assignment is different if old_N is a tuple or list
-                    # In that case, the assignment is old_N = new_N.args
-                    if is_tuple(N) or is_list(N):
-                        assign = Assign(target, Attr(new_N, Name(u'args')))
-                    else:
-                        assign = Assign(target, new_N)
-
-                    #TODO(cwinter) stopgap until children becomes a smart list
-                    for child in reversed(suite_stmts[:i]):
-                        e_suite.insert_child(0, child)
-                    e_suite.insert_child(i, assign)
-                elif N.prefix == u"":
-                    # No space after a comma is legal; no space after "as",
-                    # not so much.
-                    N.prefix = u" "
-
-        #TODO(cwinter) fix this when children becomes a smart list
-        children = [c.clone() for c in node.children[:3]] + try_cleanup + tail
-        return pytree.Node(node.type, children)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_exec.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_exec.py
deleted file mode 100644
index 163683b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_exec.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer for exec.
-
-This converts usages of the exec statement into calls to a built-in
-exec() function.
-
-exec code in ns1, ns2 -> exec(code, ns1, ns2)
-"""
-
-# Local imports
-from .. import pytree
-from .. import fixer_base
-from ..fixer_util import Comma, Name, Call
-
-
-class FixExec(fixer_base.BaseFix):
-    BM_compatible = True
-
-    PATTERN = """
-    exec_stmt< 'exec' a=any 'in' b=any [',' c=any] >
-    |
-    exec_stmt< 'exec' (not atom<'(' [any] ')'>) a=any >
-    """
-
-    def transform(self, node, results):
-        assert results
-        syms = self.syms
-        a = results["a"]
-        b = results.get("b")
-        c = results.get("c")
-        args = [a.clone()]
-        args[0].prefix = ""
-        if b is not None:
-            args.extend([Comma(), b.clone()])
-        if c is not None:
-            args.extend([Comma(), c.clone()])
-
-        return Call(Name(u"exec"), args, prefix=node.prefix)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_execfile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_execfile.py
deleted file mode 100644
index 9bcc0e9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_execfile.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer for execfile.
-
-This converts usages of the execfile function into calls to the built-in
-exec() function.
-"""
-
-from .. import fixer_base
-from ..fixer_util import (Comma, Name, Call, LParen, RParen, Dot, Node,
-                          ArgList, String, syms)
-
-
-class FixExecfile(fixer_base.BaseFix):
-    BM_compatible = True
-
-    PATTERN = """
-    power< 'execfile' trailer< '(' arglist< filename=any [',' globals=any [',' locals=any ] ] > ')' > >
-    |
-    power< 'execfile' trailer< '(' filename=any ')' > >
-    """
-
-    def transform(self, node, results):
-        assert results
-        filename = results["filename"]
-        globals = results.get("globals")
-        locals = results.get("locals")
-
-        # Copy over the prefix from the right parentheses end of the execfile
-        # call.
-        execfile_paren = node.children[-1].children[-1].clone()
-        # Construct open().read().
-        open_args = ArgList([filename.clone()], rparen=execfile_paren)
-        open_call = Node(syms.power, [Name(u"open"), open_args])
-        read = [Node(syms.trailer, [Dot(), Name(u'read')]),
-                Node(syms.trailer, [LParen(), RParen()])]
-        open_expr = [open_call] + read
-        # Wrap the open call in a compile call. This is so the filename will be
-        # preserved in the execed code.
-        filename_arg = filename.clone()
-        filename_arg.prefix = u" "
-        exec_str = String(u"'exec'", u" ")
-        compile_args = open_expr + [Comma(), filename_arg, Comma(), exec_str]
-        compile_call = Call(Name(u"compile"), compile_args, u"")
-        # Finally, replace the execfile call with an exec call.
-        args = [compile_call]
-        if globals is not None:
-            args.extend([Comma(), globals.clone()])
-        if locals is not None:
-            args.extend([Comma(), locals.clone()])
-        return Call(Name(u"exec"), args, prefix=node.prefix)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_exitfunc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_exitfunc.py
deleted file mode 100644
index 404d00a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_exitfunc.py
+++ /dev/null
@@ -1,72 +0,0 @@
-"""
-Convert use of sys.exitfunc to use the atexit module.
-"""
-
-# Author: Benjamin Peterson
-
-from lib2to3 import pytree, fixer_base
-from lib2to3.fixer_util import Name, Attr, Call, Comma, Newline, syms
-
-
-class FixExitfunc(fixer_base.BaseFix):
-    keep_line_order = True
-    BM_compatible = True
-
-    PATTERN = """
-              (
-                  sys_import=import_name<'import'
-                      ('sys'
-                      |
-                      dotted_as_names< (any ',')* 'sys' (',' any)* >
-                      )
-                  >
-              |
-                  expr_stmt<
-                      power< 'sys' trailer< '.' 'exitfunc' > >
-                  '=' func=any >
-              )
-              """
-
-    def __init__(self, *args):
-        super(FixExitfunc, self).__init__(*args)
-
-    def start_tree(self, tree, filename):
-        super(FixExitfunc, self).start_tree(tree, filename)
-        self.sys_import = None
-
-    def transform(self, node, results):
-        # First, find a the sys import. We'll just hope it's global scope.
-        if "sys_import" in results:
-            if self.sys_import is None:
-                self.sys_import = results["sys_import"]
-            return
-
-        func = results["func"].clone()
-        func.prefix = u""
-        register = pytree.Node(syms.power,
-                               Attr(Name(u"atexit"), Name(u"register"))
-                               )
-        call = Call(register, [func], node.prefix)
-        node.replace(call)
-
-        if self.sys_import is None:
-            # That's interesting.
-            self.warning(node, "Can't find sys import; Please add an atexit "
-                             "import at the top of your file.")
-            return
-
-        # Now add an atexit import after the sys import.
-        names = self.sys_import.children[1]
-        if names.type == syms.dotted_as_names:
-            names.append_child(Comma())
-            names.append_child(Name(u"atexit", u" "))
-        else:
-            containing_stmt = self.sys_import.parent
-            position = containing_stmt.children.index(self.sys_import)
-            stmt_container = containing_stmt.parent
-            new_import = pytree.Node(syms.import_name,
-                              [Name(u"import"), Name(u"atexit", u" ")]
-                              )
-            new = pytree.Node(syms.simple_stmt, [new_import])
-            containing_stmt.insert_child(position + 1, Newline())
-            containing_stmt.insert_child(position + 2, new)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_filter.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_filter.py
deleted file mode 100644
index 024987b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_filter.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright 2007 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer that changes filter(F, X) into list(filter(F, X)).
-
-We avoid the transformation if the filter() call is directly contained
-in iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or
-for V in <>:.
-
-NOTE: This is still not correct if the original code was depending on
-filter(F, X) to return a string if X is a string and a tuple if X is a
-tuple.  That would require type inference, which we don't do.  Let
-Python 2.6 figure it out.
-"""
-
-# Local imports
-from ..pgen2 import token
-from .. import fixer_base
-from ..fixer_util import Name, Call, ListComp, in_special_context
-
-class FixFilter(fixer_base.ConditionalFix):
-    BM_compatible = True
-
-    PATTERN = """
-    filter_lambda=power<
-        'filter'
-        trailer<
-            '('
-            arglist<
-                lambdef< 'lambda'
-                         (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any
-                >
-                ','
-                it=any
-            >
-            ')'
-        >
-    >
-    |
-    power<
-        'filter'
-        trailer< '(' arglist< none='None' ',' seq=any > ')' >
-    >
-    |
-    power<
-        'filter'
-        args=trailer< '(' [any] ')' >
-    >
-    """
-
-    skip_on = "future_builtins.filter"
-
-    def transform(self, node, results):
-        if self.should_skip(node):
-            return
-
-        if "filter_lambda" in results:
-            new = ListComp(results.get("fp").clone(),
-                           results.get("fp").clone(),
-                           results.get("it").clone(),
-                           results.get("xp").clone())
-
-        elif "none" in results:
-            new = ListComp(Name(u"_f"),
-                           Name(u"_f"),
-                           results["seq"].clone(),
-                           Name(u"_f"))
-
-        else:
-            if in_special_context(node):
-                return None
-            new = node.clone()
-            new.prefix = u""
-            new = Call(Name(u"list"), [new])
-        new.prefix = node.prefix
-        return new
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_funcattrs.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_funcattrs.py
deleted file mode 100644
index 7490876..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_funcattrs.py
+++ /dev/null
@@ -1,21 +0,0 @@
-"""Fix function attribute names (f.func_x -> f.__x__)."""
-# Author: Collin Winter
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Name
-
-
-class FixFuncattrs(fixer_base.BaseFix):
-    BM_compatible = True
-
-    PATTERN = """
-    power< any+ trailer< '.' attr=('func_closure' | 'func_doc' | 'func_globals'
-                                  | 'func_name' | 'func_defaults' | 'func_code'
-                                  | 'func_dict') > any* >
-    """
-
-    def transform(self, node, results):
-        attr = results["attr"][0]
-        attr.replace(Name((u"__%s__" % attr.value[5:]),
-                          prefix=attr.prefix))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_future.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_future.py
deleted file mode 100644
index bae2fab..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_future.py
+++ /dev/null
@@ -1,22 +0,0 @@
-"""Remove __future__ imports
-
-from __future__ import foo is replaced with an empty line.
-"""
-# Author: Christian Heimes
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import BlankLine
-
-class FixFuture(fixer_base.BaseFix):
-    BM_compatible = True
-
-    PATTERN = """import_from< 'from' module_name="__future__" 'import' any >"""
-
-    # This should be run last -- some things check for the import
-    run_order = 10
-
-    def transform(self, node, results):
-        new = BlankLine()
-        new.prefix = node.prefix
-        return new
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_getcwdu.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_getcwdu.py
deleted file mode 100644
index 11255f2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_getcwdu.py
+++ /dev/null
@@ -1,19 +0,0 @@
-"""
-Fixer that changes os.getcwdu() to os.getcwd().
-"""
-# Author: Victor Stinner
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Name
-
-class FixGetcwdu(fixer_base.BaseFix):
-    BM_compatible = True
-
-    PATTERN = """
-              power< 'os' trailer< dot='.' name='getcwdu' > any* >
-              """
-
-    def transform(self, node, results):
-        name = results["name"]
-        name.replace(Name(u"getcwd", prefix=name.prefix))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_has_key.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_has_key.py
deleted file mode 100644
index d7bf071..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_has_key.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer for has_key().
-
-Calls to .has_key() methods are expressed in terms of the 'in'
-operator:
-
-    d.has_key(k) -> k in d
-
-CAVEATS:
-1) While the primary target of this fixer is dict.has_key(), the
-   fixer will change any has_key() method call, regardless of its
-   class.
-
-2) Cases like this will not be converted:
-
-    m = d.has_key
-    if m(k):
-        ...
-
-   Only *calls* to has_key() are converted. While it is possible to
-   convert the above to something like
-
-    m = d.__contains__
-    if m(k):
-        ...
-
-   this is currently not done.
-"""
-
-# Local imports
-from .. import pytree
-from ..pgen2 import token
-from .. import fixer_base
-from ..fixer_util import Name, parenthesize
-
-
-class FixHasKey(fixer_base.BaseFix):
-    BM_compatible = True
-
-    PATTERN = """
-    anchor=power<
-        before=any+
-        trailer< '.' 'has_key' >
-        trailer<
-            '('
-            ( not(arglist | argument<any '=' any>) arg=any
-            | arglist<(not argument<any '=' any>) arg=any ','>
-            )
-            ')'
-        >
-        after=any*
-    >
-    |
-    negation=not_test<
-        'not'
-        anchor=power<
-            before=any+
-            trailer< '.' 'has_key' >
-            trailer<
-                '('
-                ( not(arglist | argument<any '=' any>) arg=any
-                | arglist<(not argument<any '=' any>) arg=any ','>
-                )
-                ')'
-            >
-        >
-    >
-    """
-
-    def transform(self, node, results):
-        assert results
-        syms = self.syms
-        if (node.parent.type == syms.not_test and
-            self.pattern.match(node.parent)):
-            # Don't transform a node matching the first alternative of the
-            # pattern when its parent matches the second alternative
-            return None
-        negation = results.get("negation")
-        anchor = results["anchor"]
-        prefix = node.prefix
-        before = [n.clone() for n in results["before"]]
-        arg = results["arg"].clone()
-        after = results.get("after")
-        if after:
-            after = [n.clone() for n in after]
-        if arg.type in (syms.comparison, syms.not_test, syms.and_test,
-                        syms.or_test, syms.test, syms.lambdef, syms.argument):
-            arg = parenthesize(arg)
-        if len(before) == 1:
-            before = before[0]
-        else:
-            before = pytree.Node(syms.power, before)
-        before.prefix = u" "
-        n_op = Name(u"in", prefix=u" ")
-        if negation:
-            n_not = Name(u"not", prefix=u" ")
-            n_op = pytree.Node(syms.comp_op, (n_not, n_op))
-        new = pytree.Node(syms.comparison, (arg, n_op, before))
-        if after:
-            new = parenthesize(new)
-            new = pytree.Node(syms.power, (new,) + tuple(after))
-        if node.parent.type in (syms.comparison, syms.expr, syms.xor_expr,
-                                syms.and_expr, syms.shift_expr,
-                                syms.arith_expr, syms.term,
-                                syms.factor, syms.power):
-            new = parenthesize(new)
-        new.prefix = prefix
-        return new
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_idioms.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_idioms.py
deleted file mode 100644
index e5300d9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_idioms.py
+++ /dev/null
@@ -1,152 +0,0 @@
-"""Adjust some old Python 2 idioms to their modern counterparts.
-
-* Change some type comparisons to isinstance() calls:
-    type(x) == T -> isinstance(x, T)
-    type(x) is T -> isinstance(x, T)
-    type(x) != T -> not isinstance(x, T)
-    type(x) is not T -> not isinstance(x, T)
-
-* Change "while 1:" into "while True:".
-
-* Change both
-
-    v = list(EXPR)
-    v.sort()
-    foo(v)
-
-and the more general
-
-    v = EXPR
-    v.sort()
-    foo(v)
-
-into
-
-    v = sorted(EXPR)
-    foo(v)
-"""
-# Author: Jacques Frechet, Collin Winter
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Call, Comma, Name, Node, BlankLine, syms
-
-CMP = "(n='!=' | '==' | 'is' | n=comp_op< 'is' 'not' >)"
-TYPE = "power< 'type' trailer< '(' x=any ')' > >"
-
-class FixIdioms(fixer_base.BaseFix):
-    explicit = True # The user must ask for this fixer
-
-    PATTERN = r"""
-        isinstance=comparison< %s %s T=any >
-        |
-        isinstance=comparison< T=any %s %s >
-        |
-        while_stmt< 'while' while='1' ':' any+ >
-        |
-        sorted=any<
-            any*
-            simple_stmt<
-              expr_stmt< id1=any '='
-                         power< list='list' trailer< '(' (not arglist<any+>) any ')' > >
-              >
-              '\n'
-            >
-            sort=
-            simple_stmt<
-              power< id2=any
-                     trailer< '.' 'sort' > trailer< '(' ')' >
-              >
-              '\n'
-            >
-            next=any*
-        >
-        |
-        sorted=any<
-            any*
-            simple_stmt< expr_stmt< id1=any '=' expr=any > '\n' >
-            sort=
-            simple_stmt<
-              power< id2=any
-                     trailer< '.' 'sort' > trailer< '(' ')' >
-              >
-              '\n'
-            >
-            next=any*
-        >
-    """ % (TYPE, CMP, CMP, TYPE)
-
-    def match(self, node):
-        r = super(FixIdioms, self).match(node)
-        # If we've matched one of the sort/sorted subpatterns above, we
-        # want to reject matches where the initial assignment and the
-        # subsequent .sort() call involve different identifiers.
-        if r and "sorted" in r:
-            if r["id1"] == r["id2"]:
-                return r
-            return None
-        return r
-
-    def transform(self, node, results):
-        if "isinstance" in results:
-            return self.transform_isinstance(node, results)
-        elif "while" in results:
-            return self.transform_while(node, results)
-        elif "sorted" in results:
-            return self.transform_sort(node, results)
-        else:
-            raise RuntimeError("Invalid match")
-
-    def transform_isinstance(self, node, results):
-        x = results["x"].clone() # The thing inside of type()
-        T = results["T"].clone() # The type being compared against
-        x.prefix = u""
-        T.prefix = u" "
-        test = Call(Name(u"isinstance"), [x, Comma(), T])
-        if "n" in results:
-            test.prefix = u" "
-            test = Node(syms.not_test, [Name(u"not"), test])
-        test.prefix = node.prefix
-        return test
-
-    def transform_while(self, node, results):
-        one = results["while"]
-        one.replace(Name(u"True", prefix=one.prefix))
-
-    def transform_sort(self, node, results):
-        sort_stmt = results["sort"]
-        next_stmt = results["next"]
-        list_call = results.get("list")
-        simple_expr = results.get("expr")
-
-        if list_call:
-            list_call.replace(Name(u"sorted", prefix=list_call.prefix))
-        elif simple_expr:
-            new = simple_expr.clone()
-            new.prefix = u""
-            simple_expr.replace(Call(Name(u"sorted"), [new],
-                                     prefix=simple_expr.prefix))
-        else:
-            raise RuntimeError("should not have reached here")
-        sort_stmt.remove()
-
-        btwn = sort_stmt.prefix
-        # Keep any prefix lines between the sort_stmt and the list_call and
-        # shove them right after the sorted() call.
-        if u"\n" in btwn:
-            if next_stmt:
-                # The new prefix should be everything from the sort_stmt's
-                # prefix up to the last newline, then the old prefix after a new
-                # line.
-                prefix_lines = (btwn.rpartition(u"\n")[0], next_stmt[0].prefix)
-                next_stmt[0].prefix = u"\n".join(prefix_lines)
-            else:
-                assert list_call.parent
-                assert list_call.next_sibling is None
-                # Put a blank line after list_call and set its prefix.
-                end_line = BlankLine()
-                list_call.parent.append_child(end_line)
-                assert list_call.next_sibling is end_line
-                # The new prefix should be everything up to the first new line
-                # of sort_stmt's prefix.
-                end_line.prefix = btwn.rpartition(u"\n")[0]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_import.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_import.py
deleted file mode 100644
index 467fe0f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_import.py
+++ /dev/null
@@ -1,99 +0,0 @@
-"""Fixer for import statements.
-If spam is being imported from the local directory, this import:
-    from spam import eggs
-Becomes:
-    from .spam import eggs
-
-And this import:
-    import spam
-Becomes:
-    from . import spam
-"""
-
-# Local imports
-from .. import fixer_base
-from os.path import dirname, join, exists, sep
-from ..fixer_util import FromImport, syms, token
-
-
-def traverse_imports(names):
-    """
-    Walks over all the names imported in a dotted_as_names node.
-    """
-    pending = [names]
-    while pending:
-        node = pending.pop()
-        if node.type == token.NAME:
-            yield node.value
-        elif node.type == syms.dotted_name:
-            yield "".join([ch.value for ch in node.children])
-        elif node.type == syms.dotted_as_name:
-            pending.append(node.children[0])
-        elif node.type == syms.dotted_as_names:
-            pending.extend(node.children[::-2])
-        else:
-            raise AssertionError("unkown node type")
-
-
-class FixImport(fixer_base.BaseFix):
-    BM_compatible = True
-
-    PATTERN = """
-    import_from< 'from' imp=any 'import' ['('] any [')'] >
-    |
-    import_name< 'import' imp=any >
-    """
-
-    def start_tree(self, tree, name):
-        super(FixImport, self).start_tree(tree, name)
-        self.skip = "absolute_import" in tree.future_features
-
-    def transform(self, node, results):
-        if self.skip:
-            return
-        imp = results['imp']
-
-        if node.type == syms.import_from:
-            # Some imps are top-level (eg: 'import ham')
-            # some are first level (eg: 'import ham.eggs')
-            # some are third level (eg: 'import ham.eggs as spam')
-            # Hence, the loop
-            while not hasattr(imp, 'value'):
-                imp = imp.children[0]
-            if self.probably_a_local_import(imp.value):
-                imp.value = u"." + imp.value
-                imp.changed()
-        else:
-            have_local = False
-            have_absolute = False
-            for mod_name in traverse_imports(imp):
-                if self.probably_a_local_import(mod_name):
-                    have_local = True
-                else:
-                    have_absolute = True
-            if have_absolute:
-                if have_local:
-                    # We won't handle both sibling and absolute imports in the
-                    # same statement at the moment.
-                    self.warning(node, "absolute and local imports together")
-                return
-
-            new = FromImport(u".", [imp])
-            new.prefix = node.prefix
-            return new
-
-    def probably_a_local_import(self, imp_name):
-        if imp_name.startswith(u"."):
-            # Relative imports are certainly not local imports.
-            return False
-        imp_name = imp_name.split(u".", 1)[0]
-        base_path = dirname(self.filename)
-        base_path = join(base_path, imp_name)
-        # If there is no __init__.py next to the file its not in a package
-        # so can't be a relative import.
-        if not exists(join(dirname(base_path), "__init__.py")):
-            return False
-        for ext in [".py", sep, ".pyc", ".so", ".sl", ".pyd"]:
-            if exists(base_path + ext):
-                return True
-        return False
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_imports.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_imports.py
deleted file mode 100644
index 2bd6c10..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_imports.py
+++ /dev/null
@@ -1,145 +0,0 @@
-"""Fix incompatible imports and module references."""
-# Authors: Collin Winter, Nick Edds
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Name, attr_chain
-
-MAPPING = {'StringIO':  'io',
-           'cStringIO': 'io',
-           'cPickle': 'pickle',
-           '__builtin__' : 'builtins',
-           'copy_reg': 'copyreg',
-           'Queue': 'queue',
-           'SocketServer': 'socketserver',
-           'ConfigParser': 'configparser',
-           'repr': 'reprlib',
-           'FileDialog': 'tkinter.filedialog',
-           'tkFileDialog': 'tkinter.filedialog',
-           'SimpleDialog': 'tkinter.simpledialog',
-           'tkSimpleDialog': 'tkinter.simpledialog',
-           'tkColorChooser': 'tkinter.colorchooser',
-           'tkCommonDialog': 'tkinter.commondialog',
-           'Dialog': 'tkinter.dialog',
-           'Tkdnd': 'tkinter.dnd',
-           'tkFont': 'tkinter.font',
-           'tkMessageBox': 'tkinter.messagebox',
-           'ScrolledText': 'tkinter.scrolledtext',
-           'Tkconstants': 'tkinter.constants',
-           'Tix': 'tkinter.tix',
-           'ttk': 'tkinter.ttk',
-           'Tkinter': 'tkinter',
-           'markupbase': '_markupbase',
-           '_winreg': 'winreg',
-           'thread': '_thread',
-           'dummy_thread': '_dummy_thread',
-           # anydbm and whichdb are handled by fix_imports2
-           'dbhash': 'dbm.bsd',
-           'dumbdbm': 'dbm.dumb',
-           'dbm': 'dbm.ndbm',
-           'gdbm': 'dbm.gnu',
-           'xmlrpclib': 'xmlrpc.client',
-           'DocXMLRPCServer': 'xmlrpc.server',
-           'SimpleXMLRPCServer': 'xmlrpc.server',
-           'httplib': 'http.client',
-           'htmlentitydefs' : 'html.entities',
-           'HTMLParser' : 'html.parser',
-           'Cookie': 'http.cookies',
-           'cookielib': 'http.cookiejar',
-           'BaseHTTPServer': 'http.server',
-           'SimpleHTTPServer': 'http.server',
-           'CGIHTTPServer': 'http.server',
-           #'test.test_support': 'test.support',
-           'commands': 'subprocess',
-           'UserString' : 'collections',
-           'UserList' : 'collections',
-           'urlparse' : 'urllib.parse',
-           'robotparser' : 'urllib.robotparser',
-}
-
-
-def alternates(members):
-    return "(" + "|".join(map(repr, members)) + ")"
-
-
-def build_pattern(mapping=MAPPING):
-    mod_list = ' | '.join(["module_name='%s'" % key for key in mapping])
-    bare_names = alternates(mapping.keys())
-
-    yield """name_import=import_name< 'import' ((%s) |
-               multiple_imports=dotted_as_names< any* (%s) any* >) >
-          """ % (mod_list, mod_list)
-    yield """import_from< 'from' (%s) 'import' ['(']
-              ( any | import_as_name< any 'as' any > |
-                import_as_names< any* >)  [')'] >
-          """ % mod_list
-    yield """import_name< 'import' (dotted_as_name< (%s) 'as' any > |
-               multiple_imports=dotted_as_names<
-                 any* dotted_as_name< (%s) 'as' any > any* >) >
-          """ % (mod_list, mod_list)
-
-    # Find usages of module members in code e.g. thread.foo(bar)
-    yield "power< bare_with_attr=(%s) trailer<'.' any > any* >" % bare_names
-
-
-class FixImports(fixer_base.BaseFix):
-
-    BM_compatible = True
-    keep_line_order = True
-    # This is overridden in fix_imports2.
-    mapping = MAPPING
-
-    # We want to run this fixer late, so fix_import doesn't try to make stdlib
-    # renames into relative imports.
-    run_order = 6
-
-    def build_pattern(self):
-        return "|".join(build_pattern(self.mapping))
-
-    def compile_pattern(self):
-        # We override this, so MAPPING can be pragmatically altered and the
-        # changes will be reflected in PATTERN.
-        self.PATTERN = self.build_pattern()
-        super(FixImports, self).compile_pattern()
-
-    # Don't match the node if it's within another match.
-    def match(self, node):
-        match = super(FixImports, self).match
-        results = match(node)
-        if results:
-            # Module usage could be in the trailer of an attribute lookup, so we
-            # might have nested matches when "bare_with_attr" is present.
-            if "bare_with_attr" not in results and \
-                    any(match(obj) for obj in attr_chain(node, "parent")):
-                return False
-            return results
-        return False
-
-    def start_tree(self, tree, filename):
-        super(FixImports, self).start_tree(tree, filename)
-        self.replace = {}
-
-    def transform(self, node, results):
-        import_mod = results.get("module_name")
-        if import_mod:
-            mod_name = import_mod.value
-            new_name = unicode(self.mapping[mod_name])
-            import_mod.replace(Name(new_name, prefix=import_mod.prefix))
-            if "name_import" in results:
-                # If it's not a "from x import x, y" or "import x as y" import,
-                # marked its usage to be replaced.
-                self.replace[mod_name] = new_name
-            if "multiple_imports" in results:
-                # This is a nasty hack to fix multiple imports on a line (e.g.,
-                # "import StringIO, urlparse"). The problem is that I can't
-                # figure out an easy way to make a pattern recognize the keys of
-                # MAPPING randomly sprinkled in an import statement.
-                results = self.match(node)
-                if results:
-                    self.transform(node, results)
-        else:
-            # Replace usage of the module.
-            bare_name = results["bare_with_attr"][0]
-            new_name = self.replace.get(bare_name.value)
-            if new_name:
-                bare_name.replace(Name(new_name, prefix=bare_name.prefix))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_imports2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_imports2.py
deleted file mode 100644
index 4fccb1d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_imports2.py
+++ /dev/null
@@ -1,16 +0,0 @@
-"""Fix incompatible imports and module references that must be fixed after
-fix_imports."""
-from . import fix_imports
-
-
-MAPPING = {
-            'whichdb': 'dbm',
-            'anydbm': 'dbm',
-          }
-
-
-class FixImports2(fix_imports.FixImports):
-
-    run_order = 7
-
-    mapping = MAPPING
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_input.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_input.py
deleted file mode 100644
index 1b4d2f3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_input.py
+++ /dev/null
@@ -1,26 +0,0 @@
-"""Fixer that changes input(...) into eval(input(...))."""
-# Author: Andre Roberge
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Call, Name
-from .. import patcomp
-
-
-context = patcomp.compile_pattern("power< 'eval' trailer< '(' any ')' > >")
-
-
-class FixInput(fixer_base.BaseFix):
-    BM_compatible = True
-    PATTERN = """
-              power< 'input' args=trailer< '(' [any] ')' > >
-              """
-
-    def transform(self, node, results):
-        # If we're already wrapped in a eval() call, we're done.
-        if context.match(node.parent.parent):
-            return
-
-        new = node.clone()
-        new.prefix = u""
-        return Call(Name(u"eval"), [new], prefix=node.prefix)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_intern.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_intern.py
deleted file mode 100644
index 15ba798..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_intern.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2006 Georg Brandl.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer for intern().
-
-intern(s) -> sys.intern(s)"""
-
-# Local imports
-from .. import pytree
-from .. import fixer_base
-from ..fixer_util import Name, Attr, touch_import
-
-
-class FixIntern(fixer_base.BaseFix):
-    BM_compatible = True
-    order = "pre"
-
-    PATTERN = """
-    power< 'intern'
-           trailer< lpar='('
-                    ( not(arglist | argument<any '=' any>) obj=any
-                      | obj=arglist<(not argument<any '=' any>) any ','> )
-                    rpar=')' >
-           after=any*
-    >
-    """
-
-    def transform(self, node, results):
-        syms = self.syms
-        obj = results["obj"].clone()
-        if obj.type == syms.arglist:
-            newarglist = obj.clone()
-        else:
-            newarglist = pytree.Node(syms.arglist, [obj.clone()])
-        after = results["after"]
-        if after:
-            after = [n.clone() for n in after]
-        new = pytree.Node(syms.power,
-                          Attr(Name(u"sys"), Name(u"intern")) +
-                          [pytree.Node(syms.trailer,
-                                       [results["lpar"].clone(),
-                                        newarglist,
-                                        results["rpar"].clone()])] + after)
-        new.prefix = node.prefix
-        touch_import(None, u'sys', node)
-        return new
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_isinstance.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_isinstance.py
deleted file mode 100644
index 0c2363e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_isinstance.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 2008 Armin Ronacher.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer that cleans up a tuple argument to isinstance after the tokens
-in it were fixed.  This is mainly used to remove double occurrences of
-tokens as a leftover of the long -> int / unicode -> str conversion.
-
-eg.  isinstance(x, (int, long)) -> isinstance(x, (int, int))
-       -> isinstance(x, int)
-"""
-
-from .. import fixer_base
-from ..fixer_util import token
-
-
-class FixIsinstance(fixer_base.BaseFix):
-    BM_compatible = True
-    PATTERN = """
-    power<
-        'isinstance'
-        trailer< '(' arglist< any ',' atom< '('
-            args=testlist_gexp< any+ >
-        ')' > > ')' >
-    >
-    """
-
-    run_order = 6
-
-    def transform(self, node, results):
-        names_inserted = set()
-        testlist = results["args"]
-        args = testlist.children
-        new_args = []
-        iterator = enumerate(args)
-        for idx, arg in iterator:
-            if arg.type == token.NAME and arg.value in names_inserted:
-                if idx < len(args) - 1 and args[idx + 1].type == token.COMMA:
-                    iterator.next()
-                    continue
-            else:
-                new_args.append(arg)
-                if arg.type == token.NAME:
-                    names_inserted.add(arg.value)
-        if new_args and new_args[-1].type == token.COMMA:
-            del new_args[-1]
-        if len(new_args) == 1:
-            atom = testlist.parent
-            new_args[0].prefix = atom.prefix
-            atom.replace(new_args[0])
-        else:
-            args[:] = new_args
-            node.changed()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_itertools.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_itertools.py
deleted file mode 100644
index 897da0a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_itertools.py
+++ /dev/null
@@ -1,43 +0,0 @@
-""" Fixer for itertools.(imap|ifilter|izip) --> (map|filter|zip) and
-    itertools.ifilterfalse --> itertools.filterfalse (bugs 2360-2363)
-
-    imports from itertools are fixed in fix_itertools_import.py
-
-    If itertools is imported as something else (ie: import itertools as it;
-    it.izip(spam, eggs)) method calls will not get fixed.
-    """
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Name
-
-class FixItertools(fixer_base.BaseFix):
-    BM_compatible = True
-    it_funcs = "('imap'|'ifilter'|'izip'|'izip_longest'|'ifilterfalse')"
-    PATTERN = """
-              power< it='itertools'
-                  trailer<
-                     dot='.' func=%(it_funcs)s > trailer< '(' [any] ')' > >
-              |
-              power< func=%(it_funcs)s trailer< '(' [any] ')' > >
-              """ %(locals())
-
-    # Needs to be run after fix_(map|zip|filter)
-    run_order = 6
-
-    def transform(self, node, results):
-        prefix = None
-        func = results['func'][0]
-        if ('it' in results and
-            func.value not in (u'ifilterfalse', u'izip_longest')):
-            dot, it = (results['dot'], results['it'])
-            # Remove the 'itertools'
-            prefix = it.prefix
-            it.remove()
-            # Replace the node wich contains ('.', 'function') with the
-            # function (to be consistant with the second part of the pattern)
-            dot.remove()
-            func.parent.replace(func)
-
-        prefix = prefix or func.prefix
-        func.replace(Name(func.value[1:], prefix=prefix))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_itertools_imports.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_itertools_imports.py
deleted file mode 100644
index 8758fb9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_itertools_imports.py
+++ /dev/null
@@ -1,57 +0,0 @@
-""" Fixer for imports of itertools.(imap|ifilter|izip|ifilterfalse) """
-
-# Local imports
-from lib2to3 import fixer_base
-from lib2to3.fixer_util import BlankLine, syms, token
-
-
-class FixItertoolsImports(fixer_base.BaseFix):
-    BM_compatible = True
-    PATTERN = """
-              import_from< 'from' 'itertools' 'import' imports=any >
-              """ %(locals())
-
-    def transform(self, node, results):
-        imports = results['imports']
-        if imports.type == syms.import_as_name or not imports.children:
-            children = [imports]
-        else:
-            children = imports.children
-        for child in children[::2]:
-            if child.type == token.NAME:
-                member = child.value
-                name_node = child
-            elif child.type == token.STAR:
-                # Just leave the import as is.
-                return
-            else:
-                assert child.type == syms.import_as_name
-                name_node = child.children[0]
-            member_name = name_node.value
-            if member_name in (u'imap', u'izip', u'ifilter'):
-                child.value = None
-                child.remove()
-            elif member_name in (u'ifilterfalse', u'izip_longest'):
-                node.changed()
-                name_node.value = (u'filterfalse' if member_name[1] == u'f'
-                                   else u'zip_longest')
-
-        # Make sure the import statement is still sane
-        children = imports.children[:] or [imports]
-        remove_comma = True
-        for child in children:
-            if remove_comma and child.type == token.COMMA:
-                child.remove()
-            else:
-                remove_comma ^= True
-
-        while children and children[-1].type == token.COMMA:
-            children.pop().remove()
-
-        # If there are no imports left, just get rid of the entire statement
-        if (not (imports.children or getattr(imports, 'value', None)) or
-            imports.parent is None):
-            p = node.prefix
-            node = BlankLine()
-            node.prefix = p
-            return node
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_long.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_long.py
deleted file mode 100644
index 0869b65..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_long.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer that turns 'long' into 'int' everywhere.
-"""
-
-# Local imports
-from lib2to3 import fixer_base
-from lib2to3.fixer_util import is_probably_builtin
-
-
-class FixLong(fixer_base.BaseFix):
-    BM_compatible = True
-    PATTERN = "'long'"
-
-    def transform(self, node, results):
-        if is_probably_builtin(node):
-            node.value = u"int"
-            node.changed()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_map.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_map.py
deleted file mode 100644
index 23f2d24..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_map.py
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright 2007 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer that changes map(F, ...) into list(map(F, ...)) unless there
-exists a 'from future_builtins import map' statement in the top-level
-namespace.
-
-As a special case, map(None, X) is changed into list(X).  (This is
-necessary because the semantics are changed in this case -- the new
-map(None, X) is equivalent to [(x,) for x in X].)
-
-We avoid the transformation (except for the special case mentioned
-above) if the map() call is directly contained in iter(<>), list(<>),
-tuple(<>), sorted(<>), ...join(<>), or for V in <>:.
-
-NOTE: This is still not correct if the original code was depending on
-map(F, X, Y, ...) to go on until the longest argument is exhausted,
-substituting None for missing values -- like zip(), it now stops as
-soon as the shortest argument is exhausted.
-"""
-
-# Local imports
-from ..pgen2 import token
-from .. import fixer_base
-from ..fixer_util import Name, Call, ListComp, in_special_context
-from ..pygram import python_symbols as syms
-
-class FixMap(fixer_base.ConditionalFix):
-    BM_compatible = True
-
-    PATTERN = """
-    map_none=power<
-        'map'
-        trailer< '(' arglist< 'None' ',' arg=any [','] > ')' >
-    >
-    |
-    map_lambda=power<
-        'map'
-        trailer<
-            '('
-            arglist<
-                lambdef< 'lambda'
-                         (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any
-                >
-                ','
-                it=any
-            >
-            ')'
-        >
-    >
-    |
-    power<
-        'map' trailer< '(' [arglist=any] ')' >
-    >
-    """
-
-    skip_on = 'future_builtins.map'
-
-    def transform(self, node, results):
-        if self.should_skip(node):
-            return
-
-        if node.parent.type == syms.simple_stmt:
-            self.warning(node, "You should use a for loop here")
-            new = node.clone()
-            new.prefix = u""
-            new = Call(Name(u"list"), [new])
-        elif "map_lambda" in results:
-            new = ListComp(results["xp"].clone(),
-                           results["fp"].clone(),
-                           results["it"].clone())
-        else:
-            if "map_none" in results:
-                new = results["arg"].clone()
-            else:
-                if "arglist" in results:
-                    args = results["arglist"]
-                    if args.type == syms.arglist and \
-                       args.children[0].type == token.NAME and \
-                       args.children[0].value == "None":
-                        self.warning(node, "cannot convert map(None, ...) "
-                                     "with multiple arguments because map() "
-                                     "now truncates to the shortest sequence")
-                        return
-                if in_special_context(node):
-                    return None
-                new = node.clone()
-            new.prefix = u""
-            new = Call(Name(u"list"), [new])
-        new.prefix = node.prefix
-        return new
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_metaclass.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_metaclass.py
deleted file mode 100644
index 2a027dd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_metaclass.py
+++ /dev/null
@@ -1,228 +0,0 @@
-"""Fixer for __metaclass__ = X -> (metaclass=X) methods.
-
-   The various forms of classef (inherits nothing, inherits once, inherints
-   many) don't parse the same in the CST so we look at ALL classes for
-   a __metaclass__ and if we find one normalize the inherits to all be
-   an arglist.
-
-   For one-liner classes ('class X: pass') there is no indent/dedent so
-   we normalize those into having a suite.
-
-   Moving the __metaclass__ into the classdef can also cause the class
-   body to be empty so there is some special casing for that as well.
-
-   This fixer also tries very hard to keep original indenting and spacing
-   in all those corner cases.
-
-"""
-# Author: Jack Diederich
-
-# Local imports
-from .. import fixer_base
-from ..pygram import token
-from ..fixer_util import Name, syms, Node, Leaf
-
-
-def has_metaclass(parent):
-    """ we have to check the cls_node without changing it.
-        There are two possiblities:
-          1)  clsdef => suite => simple_stmt => expr_stmt => Leaf('__meta')
-          2)  clsdef => simple_stmt => expr_stmt => Leaf('__meta')
-    """
-    for node in parent.children:
-        if node.type == syms.suite:
-            return has_metaclass(node)
-        elif node.type == syms.simple_stmt and node.children:
-            expr_node = node.children[0]
-            if expr_node.type == syms.expr_stmt and expr_node.children:
-                left_side = expr_node.children[0]
-                if isinstance(left_side, Leaf) and \
-                        left_side.value == '__metaclass__':
-                    return True
-    return False
-
-
-def fixup_parse_tree(cls_node):
-    """ one-line classes don't get a suite in the parse tree so we add
-        one to normalize the tree
-    """
-    for node in cls_node.children:
-        if node.type == syms.suite:
-            # already in the preferred format, do nothing
-            return
-
-    # !%@#! oneliners have no suite node, we have to fake one up
-    for i, node in enumerate(cls_node.children):
-        if node.type == token.COLON:
-            break
-    else:
-        raise ValueError("No class suite and no ':'!")
-
-    # move everything into a suite node
-    suite = Node(syms.suite, [])
-    while cls_node.children[i+1:]:
-        move_node = cls_node.children[i+1]
-        suite.append_child(move_node.clone())
-        move_node.remove()
-    cls_node.append_child(suite)
-    node = suite
-
-
-def fixup_simple_stmt(parent, i, stmt_node):
-    """ if there is a semi-colon all the parts count as part of the same
-        simple_stmt.  We just want the __metaclass__ part so we move
-        everything efter the semi-colon into its own simple_stmt node
-    """
-    for semi_ind, node in enumerate(stmt_node.children):
-        if node.type == token.SEMI: # *sigh*
-            break
-    else:
-        return
-
-    node.remove() # kill the semicolon
-    new_expr = Node(syms.expr_stmt, [])
-    new_stmt = Node(syms.simple_stmt, [new_expr])
-    while stmt_node.children[semi_ind:]:
-        move_node = stmt_node.children[semi_ind]
-        new_expr.append_child(move_node.clone())
-        move_node.remove()
-    parent.insert_child(i, new_stmt)
-    new_leaf1 = new_stmt.children[0].children[0]
-    old_leaf1 = stmt_node.children[0].children[0]
-    new_leaf1.prefix = old_leaf1.prefix
-
-
-def remove_trailing_newline(node):
-    if node.children and node.children[-1].type == token.NEWLINE:
-        node.children[-1].remove()
-
-
-def find_metas(cls_node):
-    # find the suite node (Mmm, sweet nodes)
-    for node in cls_node.children:
-        if node.type == syms.suite:
-            break
-    else:
-        raise ValueError("No class suite!")
-
-    # look for simple_stmt[ expr_stmt[ Leaf('__metaclass__') ] ]
-    for i, simple_node in list(enumerate(node.children)):
-        if simple_node.type == syms.simple_stmt and simple_node.children:
-            expr_node = simple_node.children[0]
-            if expr_node.type == syms.expr_stmt and expr_node.children:
-                # Check if the expr_node is a simple assignment.
-                left_node = expr_node.children[0]
-                if isinstance(left_node, Leaf) and \
-                        left_node.value == u'__metaclass__':
-                    # We found a assignment to __metaclass__.
-                    fixup_simple_stmt(node, i, simple_node)
-                    remove_trailing_newline(simple_node)
-                    yield (node, i, simple_node)
-
-
-def fixup_indent(suite):
-    """ If an INDENT is followed by a thing with a prefix then nuke the prefix
-        Otherwise we get in trouble when removing __metaclass__ at suite start
-    """
-    kids = suite.children[::-1]
-    # find the first indent
-    while kids:
-        node = kids.pop()
-        if node.type == token.INDENT:
-            break
-
-    # find the first Leaf
-    while kids:
-        node = kids.pop()
-        if isinstance(node, Leaf) and node.type != token.DEDENT:
-            if node.prefix:
-                node.prefix = u''
-            return
-        else:
-            kids.extend(node.children[::-1])
-
-
-class FixMetaclass(fixer_base.BaseFix):
-    BM_compatible = True
-
-    PATTERN = """
-    classdef<any*>
-    """
-
-    def transform(self, node, results):
-        if not has_metaclass(node):
-            return
-
-        fixup_parse_tree(node)
-
-        # find metaclasses, keep the last one
-        last_metaclass = None
-        for suite, i, stmt in find_metas(node):
-            last_metaclass = stmt
-            stmt.remove()
-
-        text_type = node.children[0].type # always Leaf(nnn, 'class')
-
-        # figure out what kind of classdef we have
-        if len(node.children) == 7:
-            # Node(classdef, ['class', 'name', '(', arglist, ')', ':', suite])
-            #                 0        1       2    3        4    5    6
-            if node.children[3].type == syms.arglist:
-                arglist = node.children[3]
-            # Node(classdef, ['class', 'name', '(', 'Parent', ')', ':', suite])
-            else:
-                parent = node.children[3].clone()
-                arglist = Node(syms.arglist, [parent])
-                node.set_child(3, arglist)
-        elif len(node.children) == 6:
-            # Node(classdef, ['class', 'name', '(',  ')', ':', suite])
-            #                 0        1       2     3    4    5
-            arglist = Node(syms.arglist, [])
-            node.insert_child(3, arglist)
-        elif len(node.children) == 4:
-            # Node(classdef, ['class', 'name', ':', suite])
-            #                 0        1       2    3
-            arglist = Node(syms.arglist, [])
-            node.insert_child(2, Leaf(token.RPAR, u')'))
-            node.insert_child(2, arglist)
-            node.insert_child(2, Leaf(token.LPAR, u'('))
-        else:
-            raise ValueError("Unexpected class definition")
-
-        # now stick the metaclass in the arglist
-        meta_txt = last_metaclass.children[0].children[0]
-        meta_txt.value = 'metaclass'
-        orig_meta_prefix = meta_txt.prefix
-
-        if arglist.children:
-            arglist.append_child(Leaf(token.COMMA, u','))
-            meta_txt.prefix = u' '
-        else:
-            meta_txt.prefix = u''
-
-        # compact the expression "metaclass = Meta" -> "metaclass=Meta"
-        expr_stmt = last_metaclass.children[0]
-        assert expr_stmt.type == syms.expr_stmt
-        expr_stmt.children[1].prefix = u''
-        expr_stmt.children[2].prefix = u''
-
-        arglist.append_child(last_metaclass)
-
-        fixup_indent(suite)
-
-        # check for empty suite
-        if not suite.children:
-            # one-liner that was just __metaclass_
-            suite.remove()
-            pass_leaf = Leaf(text_type, u'pass')
-            pass_leaf.prefix = orig_meta_prefix
-            node.append_child(pass_leaf)
-            node.append_child(Leaf(token.NEWLINE, u'\n'))
-
-        elif len(suite.children) > 1 and \
-                 (suite.children[-2].type == token.INDENT and
-                  suite.children[-1].type == token.DEDENT):
-            # there was only one line in the class body and it was __metaclass__
-            pass_leaf = Leaf(text_type, u'pass')
-            suite.insert_child(-1, pass_leaf)
-            suite.insert_child(-1, Leaf(token.NEWLINE, u'\n'))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_methodattrs.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_methodattrs.py
deleted file mode 100644
index 43b219f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_methodattrs.py
+++ /dev/null
@@ -1,24 +0,0 @@
-"""Fix bound method attributes (method.im_? -> method.__?__).
-"""
-# Author: Christian Heimes
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Name
-
-MAP = {
-    "im_func" : "__func__",
-    "im_self" : "__self__",
-    "im_class" : "__self__.__class__"
-    }
-
-class FixMethodattrs(fixer_base.BaseFix):
-    BM_compatible = True
-    PATTERN = """
-    power< any+ trailer< '.' attr=('im_func' | 'im_self' | 'im_class') > any* >
-    """
-
-    def transform(self, node, results):
-        attr = results["attr"][0]
-        new = unicode(MAP[attr.value])
-        attr.replace(Name(new, prefix=attr.prefix))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_ne.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_ne.py
deleted file mode 100644
index 5fb89fe..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_ne.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer that turns <> into !=."""
-
-# Local imports
-from .. import pytree
-from ..pgen2 import token
-from .. import fixer_base
-
-
-class FixNe(fixer_base.BaseFix):
-    # This is so simple that we don't need the pattern compiler.
-
-    _accept_type = token.NOTEQUAL
-
-    def match(self, node):
-        # Override
-        return node.value == u"<>"
-
-    def transform(self, node, results):
-        new = pytree.Leaf(token.NOTEQUAL, u"!=", prefix=node.prefix)
-        return new
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_next.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_next.py
deleted file mode 100644
index bd0cfe9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_next.py
+++ /dev/null
@@ -1,103 +0,0 @@
-"""Fixer for it.next() -> next(it), per PEP 3114."""
-# Author: Collin Winter
-
-# Things that currently aren't covered:
-#   - listcomp "next" names aren't warned
-#   - "with" statement targets aren't checked
-
-# Local imports
-from ..pgen2 import token
-from ..pygram import python_symbols as syms
-from .. import fixer_base
-from ..fixer_util import Name, Call, find_binding
-
-bind_warning = "Calls to builtin next() possibly shadowed by global binding"
-
-
-class FixNext(fixer_base.BaseFix):
-    BM_compatible = True
-    PATTERN = """
-    power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > >
-    |
-    power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > >
-    |
-    classdef< 'class' any+ ':'
-              suite< any*
-                     funcdef< 'def'
-                              name='next'
-                              parameters< '(' NAME ')' > any+ >
-                     any* > >
-    |
-    global=global_stmt< 'global' any* 'next' any* >
-    """
-
-    order = "pre" # Pre-order tree traversal
-
-    def start_tree(self, tree, filename):
-        super(FixNext, self).start_tree(tree, filename)
-
-        n = find_binding(u'next', tree)
-        if n:
-            self.warning(n, bind_warning)
-            self.shadowed_next = True
-        else:
-            self.shadowed_next = False
-
-    def transform(self, node, results):
-        assert results
-
-        base = results.get("base")
-        attr = results.get("attr")
-        name = results.get("name")
-
-        if base:
-            if self.shadowed_next:
-                attr.replace(Name(u"__next__", prefix=attr.prefix))
-            else:
-                base = [n.clone() for n in base]
-                base[0].prefix = u""
-                node.replace(Call(Name(u"next", prefix=node.prefix), base))
-        elif name:
-            n = Name(u"__next__", prefix=name.prefix)
-            name.replace(n)
-        elif attr:
-            # We don't do this transformation if we're assigning to "x.next".
-            # Unfortunately, it doesn't seem possible to do this in PATTERN,
-            #  so it's being done here.
-            if is_assign_target(node):
-                head = results["head"]
-                if "".join([str(n) for n in head]).strip() == u'__builtin__':
-                    self.warning(node, bind_warning)
-                return
-            attr.replace(Name(u"__next__"))
-        elif "global" in results:
-            self.warning(node, bind_warning)
-            self.shadowed_next = True
-
-
-### The following functions help test if node is part of an assignment
-###  target.
-
-def is_assign_target(node):
-    assign = find_assign(node)
-    if assign is None:
-        return False
-
-    for child in assign.children:
-        if child.type == token.EQUAL:
-            return False
-        elif is_subtree(child, node):
-            return True
-    return False
-
-def find_assign(node):
-    if node.type == syms.expr_stmt:
-        return node
-    if node.type == syms.simple_stmt or node.parent is None:
-        return None
-    return find_assign(node.parent)
-
-def is_subtree(root, node):
-    if root == node:
-        return True
-    return any(is_subtree(c, node) for c in root.children)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_nonzero.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_nonzero.py
deleted file mode 100644
index 490993b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_nonzero.py
+++ /dev/null
@@ -1,21 +0,0 @@
-"""Fixer for __nonzero__ -> __bool__ methods."""
-# Author: Collin Winter
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Name, syms
-
-class FixNonzero(fixer_base.BaseFix):
-    BM_compatible = True
-    PATTERN = """
-    classdef< 'class' any+ ':'
-              suite< any*
-                     funcdef< 'def' name='__nonzero__'
-                              parameters< '(' NAME ')' > any+ >
-                     any* > >
-    """
-
-    def transform(self, node, results):
-        name = results["name"]
-        new = Name(u"__bool__", prefix=name.prefix)
-        name.replace(new)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_numliterals.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_numliterals.py
deleted file mode 100644
index 23bdc93..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_numliterals.py
+++ /dev/null
@@ -1,28 +0,0 @@
-"""Fixer that turns 1L into 1, 0755 into 0o755.
-"""
-# Copyright 2007 Georg Brandl.
-# Licensed to PSF under a Contributor Agreement.
-
-# Local imports
-from ..pgen2 import token
-from .. import fixer_base
-from ..fixer_util import Number
-
-
-class FixNumliterals(fixer_base.BaseFix):
-    # This is so simple that we don't need the pattern compiler.
-
-    _accept_type = token.NUMBER
-
-    def match(self, node):
-        # Override
-        return (node.value.startswith(u"0") or node.value[-1] in u"Ll")
-
-    def transform(self, node, results):
-        val = node.value
-        if val[-1] in u'Ll':
-            val = val[:-1]
-        elif val.startswith(u'0') and val.isdigit() and len(set(val)) > 1:
-            val = u"0o" + val[1:]
-
-        return Number(val, prefix=node.prefix)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_operator.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_operator.py
deleted file mode 100644
index 866e6f3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_operator.py
+++ /dev/null
@@ -1,96 +0,0 @@
-"""Fixer for operator functions.
-
-operator.isCallable(obj)       -> hasattr(obj, '__call__')
-operator.sequenceIncludes(obj) -> operator.contains(obj)
-operator.isSequenceType(obj)   -> isinstance(obj, collections.Sequence)
-operator.isMappingType(obj)    -> isinstance(obj, collections.Mapping)
-operator.isNumberType(obj)     -> isinstance(obj, numbers.Number)
-operator.repeat(obj, n)        -> operator.mul(obj, n)
-operator.irepeat(obj, n)       -> operator.imul(obj, n)
-"""
-
-# Local imports
-from lib2to3 import fixer_base
-from lib2to3.fixer_util import Call, Name, String, touch_import
-
-
-def invocation(s):
-    def dec(f):
-        f.invocation = s
-        return f
-    return dec
-
-
-class FixOperator(fixer_base.BaseFix):
-    BM_compatible = True
-    order = "pre"
-
-    methods = """
-              method=('isCallable'|'sequenceIncludes'
-                     |'isSequenceType'|'isMappingType'|'isNumberType'
-                     |'repeat'|'irepeat')
-              """
-    obj = "'(' obj=any ')'"
-    PATTERN = """
-              power< module='operator'
-                trailer< '.' %(methods)s > trailer< %(obj)s > >
-              |
-              power< %(methods)s trailer< %(obj)s > >
-              """ % dict(methods=methods, obj=obj)
-
-    def transform(self, node, results):
-        method = self._check_method(node, results)
-        if method is not None:
-            return method(node, results)
-
-    @invocation("operator.contains(%s)")
-    def _sequenceIncludes(self, node, results):
-        return self._handle_rename(node, results, u"contains")
-
-    @invocation("hasattr(%s, '__call__')")
-    def _isCallable(self, node, results):
-        obj = results["obj"]
-        args = [obj.clone(), String(u", "), String(u"'__call__'")]
-        return Call(Name(u"hasattr"), args, prefix=node.prefix)
-
-    @invocation("operator.mul(%s)")
-    def _repeat(self, node, results):
-        return self._handle_rename(node, results, u"mul")
-
-    @invocation("operator.imul(%s)")
-    def _irepeat(self, node, results):
-        return self._handle_rename(node, results, u"imul")
-
-    @invocation("isinstance(%s, collections.Sequence)")
-    def _isSequenceType(self, node, results):
-        return self._handle_type2abc(node, results, u"collections", u"Sequence")
-
-    @invocation("isinstance(%s, collections.Mapping)")
-    def _isMappingType(self, node, results):
-        return self._handle_type2abc(node, results, u"collections", u"Mapping")
-
-    @invocation("isinstance(%s, numbers.Number)")
-    def _isNumberType(self, node, results):
-        return self._handle_type2abc(node, results, u"numbers", u"Number")
-
-    def _handle_rename(self, node, results, name):
-        method = results["method"][0]
-        method.value = name
-        method.changed()
-
-    def _handle_type2abc(self, node, results, module, abc):
-        touch_import(None, module, node)
-        obj = results["obj"]
-        args = [obj.clone(), String(u", " + u".".join([module, abc]))]
-        return Call(Name(u"isinstance"), args, prefix=node.prefix)
-
-    def _check_method(self, node, results):
-        method = getattr(self, "_" + results["method"][0].value.encode("ascii"))
-        if callable(method):
-            if "module" in results:
-                return method
-            else:
-                sub = (unicode(results["obj"]),)
-                invocation_str = unicode(method.invocation) % sub
-                self.warning(node, u"You should use '%s' here." % invocation_str)
-        return None
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_paren.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_paren.py
deleted file mode 100644
index a954d7c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_paren.py
+++ /dev/null
@@ -1,44 +0,0 @@
-"""Fixer that addes parentheses where they are required
-
-This converts ``[x for x in 1, 2]`` to ``[x for x in (1, 2)]``."""
-
-# By Taek Joo Kim and Benjamin Peterson
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import LParen, RParen
-
-# XXX This doesn't support nested for loops like [x for x in 1, 2 for x in 1, 2]
-class FixParen(fixer_base.BaseFix):
-    BM_compatible = True
-
-    PATTERN = """
-        atom< ('[' | '(')
-            (listmaker< any
-                comp_for<
-                    'for' NAME 'in'
-                    target=testlist_safe< any (',' any)+ [',']
-                     >
-                    [any]
-                >
-            >
-            |
-            testlist_gexp< any
-                comp_for<
-                    'for' NAME 'in'
-                    target=testlist_safe< any (',' any)+ [',']
-                     >
-                    [any]
-                >
-            >)
-        (']' | ')') >
-    """
-
-    def transform(self, node, results):
-        target = results["target"]
-
-        lparen = LParen()
-        lparen.prefix = target.prefix
-        target.prefix = u"" # Make it hug the parentheses
-        target.insert_child(0, lparen)
-        target.append_child(RParen())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_print.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_print.py
deleted file mode 100644
index 185d25c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_print.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer for print.
-
-Change:
-    'print'          into 'print()'
-    'print ...'      into 'print(...)'
-    'print ... ,'    into 'print(..., end=" ")'
-    'print >>x, ...' into 'print(..., file=x)'
-
-No changes are applied if print_function is imported from __future__
-
-"""
-
-# Local imports
-from .. import patcomp
-from .. import pytree
-from ..pgen2 import token
-from .. import fixer_base
-from ..fixer_util import Name, Call, Comma, String, is_tuple
-
-
-parend_expr = patcomp.compile_pattern(
-              """atom< '(' [atom|STRING|NAME] ')' >"""
-              )
-
-
-class FixPrint(fixer_base.BaseFix):
-
-    BM_compatible = True
-
-    PATTERN = """
-              simple_stmt< any* bare='print' any* > | print_stmt
-              """
-
-    def transform(self, node, results):
-        assert results
-
-        bare_print = results.get("bare")
-
-        if bare_print:
-            # Special-case print all by itself
-            bare_print.replace(Call(Name(u"print"), [],
-                               prefix=bare_print.prefix))
-            return
-        assert node.children[0] == Name(u"print")
-        args = node.children[1:]
-        if len(args) == 1 and parend_expr.match(args[0]):
-            # We don't want to keep sticking parens around an
-            # already-parenthesised expression.
-            return
-
-        sep = end = file = None
-        if args and args[-1] == Comma():
-            args = args[:-1]
-            end = " "
-        if args and args[0] == pytree.Leaf(token.RIGHTSHIFT, u">>"):
-            assert len(args) >= 2
-            file = args[1].clone()
-            args = args[3:] # Strip a possible comma after the file expression
-        # Now synthesize a print(args, sep=..., end=..., file=...) node.
-        l_args = [arg.clone() for arg in args]
-        if l_args:
-            l_args[0].prefix = u""
-        if sep is not None or end is not None or file is not None:
-            if sep is not None:
-                self.add_kwarg(l_args, u"sep", String(repr(sep)))
-            if end is not None:
-                self.add_kwarg(l_args, u"end", String(repr(end)))
-            if file is not None:
-                self.add_kwarg(l_args, u"file", file)
-        n_stmt = Call(Name(u"print"), l_args)
-        n_stmt.prefix = node.prefix
-        return n_stmt
-
-    def add_kwarg(self, l_nodes, s_kwd, n_expr):
-        # XXX All this prefix-setting may lose comments (though rarely)
-        n_expr.prefix = u""
-        n_argument = pytree.Node(self.syms.argument,
-                                 (Name(s_kwd),
-                                  pytree.Leaf(token.EQUAL, u"="),
-                                  n_expr))
-        if l_nodes:
-            l_nodes.append(Comma())
-            n_argument.prefix = u" "
-        l_nodes.append(n_argument)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_raise.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_raise.py
deleted file mode 100644
index 67cc4c0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_raise.py
+++ /dev/null
@@ -1,90 +0,0 @@
-"""Fixer for 'raise E, V, T'
-
-raise         -> raise
-raise E       -> raise E
-raise E, V    -> raise E(V)
-raise E, V, T -> raise E(V).with_traceback(T)
-raise E, None, T -> raise E.with_traceback(T)
-
-raise (((E, E'), E''), E'''), V -> raise E(V)
-raise "foo", V, T               -> warns about string exceptions
-
-
-CAVEATS:
-1) "raise E, V" will be incorrectly translated if V is an exception
-   instance. The correct Python 3 idiom is
-
-        raise E from V
-
-   but since we can't detect instance-hood by syntax alone and since
-   any client code would have to be changed as well, we don't automate
-   this.
-"""
-# Author: Collin Winter
-
-# Local imports
-from .. import pytree
-from ..pgen2 import token
-from .. import fixer_base
-from ..fixer_util import Name, Call, Attr, ArgList, is_tuple
-
-class FixRaise(fixer_base.BaseFix):
-
-    BM_compatible = True
-    PATTERN = """
-    raise_stmt< 'raise' exc=any [',' val=any [',' tb=any]] >
-    """
-
-    def transform(self, node, results):
-        syms = self.syms
-
-        exc = results["exc"].clone()
-        if exc.type == token.STRING:
-            msg = "Python 3 does not support string exceptions"
-            self.cannot_convert(node, msg)
-            return
-
-        # Python 2 supports
-        #  raise ((((E1, E2), E3), E4), E5), V
-        # as a synonym for
-        #  raise E1, V
-        # Since Python 3 will not support this, we recurse down any tuple
-        # literals, always taking the first element.
-        if is_tuple(exc):
-            while is_tuple(exc):
-                # exc.children[1:-1] is the unparenthesized tuple
-                # exc.children[1].children[0] is the first element of the tuple
-                exc = exc.children[1].children[0].clone()
-            exc.prefix = u" "
-
-        if "val" not in results:
-            # One-argument raise
-            new = pytree.Node(syms.raise_stmt, [Name(u"raise"), exc])
-            new.prefix = node.prefix
-            return new
-
-        val = results["val"].clone()
-        if is_tuple(val):
-            args = [c.clone() for c in val.children[1:-1]]
-        else:
-            val.prefix = u""
-            args = [val]
-
-        if "tb" in results:
-            tb = results["tb"].clone()
-            tb.prefix = u""
-
-            e = exc
-            # If there's a traceback and None is passed as the value, then don't
-            # add a call, since the user probably just wants to add a
-            # traceback. See issue #9661.
-            if val.type != token.NAME or val.value != u"None":
-                e = Call(exc, args)
-            with_tb = Attr(e, Name(u'with_traceback')) + [ArgList([tb])]
-            new = pytree.Node(syms.simple_stmt, [Name(u"raise")] + with_tb)
-            new.prefix = node.prefix
-            return new
-        else:
-            return pytree.Node(syms.raise_stmt,
-                               [Name(u"raise"), Call(exc, args)],
-                               prefix=node.prefix)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_raw_input.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_raw_input.py
deleted file mode 100644
index 7918445..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_raw_input.py
+++ /dev/null
@@ -1,17 +0,0 @@
-"""Fixer that changes raw_input(...) into input(...)."""
-# Author: Andre Roberge
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Name
-
-class FixRawInput(fixer_base.BaseFix):
-
-    BM_compatible = True
-    PATTERN = """
-              power< name='raw_input' trailer< '(' [any] ')' > any* >
-              """
-
-    def transform(self, node, results):
-        name = results["name"]
-        name.replace(Name(u"input", prefix=name.prefix))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_reduce.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_reduce.py
deleted file mode 100644
index 35b94ee..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_reduce.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2008 Armin Ronacher.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer for reduce().
-
-Makes sure reduce() is imported from the functools module if reduce is
-used in that module.
-"""
-
-from lib2to3 import fixer_base
-from lib2to3.fixer_util import touch_import
-
-
-
-class FixReduce(fixer_base.BaseFix):
-
-    BM_compatible = True
-    order = "pre"
-
-    PATTERN = """
-    power< 'reduce'
-        trailer< '('
-            arglist< (
-                (not(argument<any '=' any>) any ','
-                 not(argument<any '=' any>) any) |
-                (not(argument<any '=' any>) any ','
-                 not(argument<any '=' any>) any ','
-                 not(argument<any '=' any>) any)
-            ) >
-        ')' >
-    >
-    """
-
-    def transform(self, node, results):
-        touch_import(u'functools', u'reduce', node)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_renames.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_renames.py
deleted file mode 100644
index e7794dd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_renames.py
+++ /dev/null
@@ -1,70 +0,0 @@
-"""Fix incompatible renames
-
-Fixes:
-  * sys.maxint -> sys.maxsize
-"""
-# Author: Christian Heimes
-# based on Collin Winter's fix_import
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Name, attr_chain
-
-MAPPING = {"sys":  {"maxint" : "maxsize"},
-          }
-LOOKUP = {}
-
-def alternates(members):
-    return "(" + "|".join(map(repr, members)) + ")"
-
-
-def build_pattern():
-    #bare = set()
-    for module, replace in MAPPING.items():
-        for old_attr, new_attr in replace.items():
-            LOOKUP[(module, old_attr)] = new_attr
-            #bare.add(module)
-            #bare.add(old_attr)
-            #yield """
-            #      import_name< 'import' (module=%r
-            #          | dotted_as_names< any* module=%r any* >) >
-            #      """ % (module, module)
-            yield """
-                  import_from< 'from' module_name=%r 'import'
-                      ( attr_name=%r | import_as_name< attr_name=%r 'as' any >) >
-                  """ % (module, old_attr, old_attr)
-            yield """
-                  power< module_name=%r trailer< '.' attr_name=%r > any* >
-                  """ % (module, old_attr)
-    #yield """bare_name=%s""" % alternates(bare)
-
-
-class FixRenames(fixer_base.BaseFix):
-    BM_compatible = True
-    PATTERN = "|".join(build_pattern())
-
-    order = "pre" # Pre-order tree traversal
-
-    # Don't match the node if it's within another match
-    def match(self, node):
-        match = super(FixRenames, self).match
-        results = match(node)
-        if results:
-            if any(match(obj) for obj in attr_chain(node, "parent")):
-                return False
-            return results
-        return False
-
-    #def start_tree(self, tree, filename):
-    #    super(FixRenames, self).start_tree(tree, filename)
-    #    self.replace = {}
-
-    def transform(self, node, results):
-        mod_name = results.get("module_name")
-        attr_name = results.get("attr_name")
-        #bare_name = results.get("bare_name")
-        #import_mod = results.get("module")
-
-        if mod_name and attr_name:
-            new_attr = unicode(LOOKUP[(mod_name.value, attr_name.value)])
-            attr_name.replace(Name(new_attr, prefix=attr_name.prefix))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_repr.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_repr.py
deleted file mode 100644
index fafed4a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_repr.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer that transforms `xyzzy` into repr(xyzzy)."""
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Call, Name, parenthesize
-
-
-class FixRepr(fixer_base.BaseFix):
-
-    BM_compatible = True
-    PATTERN = """
-              atom < '`' expr=any '`' >
-              """
-
-    def transform(self, node, results):
-        expr = results["expr"].clone()
-
-        if expr.type == self.syms.testlist1:
-            expr = parenthesize(expr)
-        return Call(Name(u"repr"), [expr], prefix=node.prefix)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_set_literal.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_set_literal.py
deleted file mode 100644
index 1f4e305..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_set_literal.py
+++ /dev/null
@@ -1,53 +0,0 @@
-"""
-Optional fixer to transform set() calls to set literals.
-"""
-
-# Author: Benjamin Peterson
-
-from lib2to3 import fixer_base, pytree
-from lib2to3.fixer_util import token, syms
-
-
-
-class FixSetLiteral(fixer_base.BaseFix):
-
-    BM_compatible = True
-    explicit = True
-
-    PATTERN = """power< 'set' trailer< '('
-                     (atom=atom< '[' (items=listmaker< any ((',' any)* [',']) >
-                                |
-                                single=any) ']' >
-                     |
-                     atom< '(' items=testlist_gexp< any ((',' any)* [',']) > ')' >
-                     )
-                     ')' > >
-              """
-
-    def transform(self, node, results):
-        single = results.get("single")
-        if single:
-            # Make a fake listmaker
-            fake = pytree.Node(syms.listmaker, [single.clone()])
-            single.replace(fake)
-            items = fake
-        else:
-            items = results["items"]
-
-        # Build the contents of the literal
-        literal = [pytree.Leaf(token.LBRACE, u"{")]
-        literal.extend(n.clone() for n in items.children)
-        literal.append(pytree.Leaf(token.RBRACE, u"}"))
-        # Set the prefix of the right brace to that of the ')' or ']'
-        literal[-1].prefix = items.next_sibling.prefix
-        maker = pytree.Node(syms.dictsetmaker, literal)
-        maker.prefix = node.prefix
-
-        # If the original was a one tuple, we need to remove the extra comma.
-        if len(maker.children) == 4:
-            n = maker.children[2]
-            n.remove()
-            maker.children[-1].prefix = n.prefix
-
-        # Finally, replace the set call with our shiny new literal.
-        return maker
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_standarderror.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_standarderror.py
deleted file mode 100644
index 89126c5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_standarderror.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2007 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer for StandardError -> Exception."""
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Name
-
-
-class FixStandarderror(fixer_base.BaseFix):
-    BM_compatible = True
-    PATTERN = """
-              'StandardError'
-              """
-
-    def transform(self, node, results):
-        return Name(u"Exception", prefix=node.prefix)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_sys_exc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_sys_exc.py
deleted file mode 100644
index 2502aac..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_sys_exc.py
+++ /dev/null
@@ -1,30 +0,0 @@
-"""Fixer for sys.exc_{type, value, traceback}
-
-sys.exc_type -> sys.exc_info()[0]
-sys.exc_value -> sys.exc_info()[1]
-sys.exc_traceback -> sys.exc_info()[2]
-"""
-
-# By Jeff Balogh and Benjamin Peterson
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Attr, Call, Name, Number, Subscript, Node, syms
-
-class FixSysExc(fixer_base.BaseFix):
-    # This order matches the ordering of sys.exc_info().
-    exc_info = [u"exc_type", u"exc_value", u"exc_traceback"]
-    BM_compatible = True
-    PATTERN = """
-              power< 'sys' trailer< dot='.' attribute=(%s) > >
-              """ % '|'.join("'%s'" % e for e in exc_info)
-
-    def transform(self, node, results):
-        sys_attr = results["attribute"][0]
-        index = Number(self.exc_info.index(sys_attr.value))
-
-        call = Call(Name(u"exc_info"), prefix=sys_attr.prefix)
-        attr = Attr(Name(u"sys"), call)
-        attr[1].children[0].prefix = results["dot"].prefix
-        attr.append(Subscript(index))
-        return Node(syms.power, attr, prefix=node.prefix)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_throw.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_throw.py
deleted file mode 100644
index ddc429b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_throw.py
+++ /dev/null
@@ -1,56 +0,0 @@
-"""Fixer for generator.throw(E, V, T).
-
-g.throw(E)       -> g.throw(E)
-g.throw(E, V)    -> g.throw(E(V))
-g.throw(E, V, T) -> g.throw(E(V).with_traceback(T))
-
-g.throw("foo"[, V[, T]]) will warn about string exceptions."""
-# Author: Collin Winter
-
-# Local imports
-from .. import pytree
-from ..pgen2 import token
-from .. import fixer_base
-from ..fixer_util import Name, Call, ArgList, Attr, is_tuple
-
-class FixThrow(fixer_base.BaseFix):
-    BM_compatible = True
-    PATTERN = """
-    power< any trailer< '.' 'throw' >
-           trailer< '(' args=arglist< exc=any ',' val=any [',' tb=any] > ')' >
-    >
-    |
-    power< any trailer< '.' 'throw' > trailer< '(' exc=any ')' > >
-    """
-
-    def transform(self, node, results):
-        syms = self.syms
-
-        exc = results["exc"].clone()
-        if exc.type is token.STRING:
-            self.cannot_convert(node, "Python 3 does not support string exceptions")
-            return
-
-        # Leave "g.throw(E)" alone
-        val = results.get(u"val")
-        if val is None:
-            return
-
-        val = val.clone()
-        if is_tuple(val):
-            args = [c.clone() for c in val.children[1:-1]]
-        else:
-            val.prefix = u""
-            args = [val]
-
-        throw_args = results["args"]
-
-        if "tb" in results:
-            tb = results["tb"].clone()
-            tb.prefix = u""
-
-            e = Call(exc, args)
-            with_tb = Attr(e, Name(u'with_traceback')) + [ArgList([tb])]
-            throw_args.replace(pytree.Node(syms.power, with_tb))
-        else:
-            throw_args.replace(Call(exc, args))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_tuple_params.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_tuple_params.py
deleted file mode 100644
index 22a1d06..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_tuple_params.py
+++ /dev/null
@@ -1,175 +0,0 @@
-"""Fixer for function definitions with tuple parameters.
-
-def func(((a, b), c), d):
-    ...
-
-    ->
-
-def func(x, d):
-    ((a, b), c) = x
-    ...
-
-It will also support lambdas:
-
-    lambda (x, y): x + y -> lambda t: t[0] + t[1]
-
-    # The parens are a syntax error in Python 3
-    lambda (x): x + y -> lambda x: x + y
-"""
-# Author: Collin Winter
-
-# Local imports
-from .. import pytree
-from ..pgen2 import token
-from .. import fixer_base
-from ..fixer_util import Assign, Name, Newline, Number, Subscript, syms
-
-def is_docstring(stmt):
-    return isinstance(stmt, pytree.Node) and \
-           stmt.children[0].type == token.STRING
-
-class FixTupleParams(fixer_base.BaseFix):
-    run_order = 4 #use a lower order since lambda is part of other
-                  #patterns
-    BM_compatible = True
-
-    PATTERN = """
-              funcdef< 'def' any parameters< '(' args=any ')' >
-                       ['->' any] ':' suite=any+ >
-              |
-              lambda=
-              lambdef< 'lambda' args=vfpdef< '(' inner=any ')' >
-                       ':' body=any
-              >
-              """
-
-    def transform(self, node, results):
-        if "lambda" in results:
-            return self.transform_lambda(node, results)
-
-        new_lines = []
-        suite = results["suite"]
-        args = results["args"]
-        # This crap is so "def foo(...): x = 5; y = 7" is handled correctly.
-        # TODO(cwinter): suite-cleanup
-        if suite[0].children[1].type == token.INDENT:
-            start = 2
-            indent = suite[0].children[1].value
-            end = Newline()
-        else:
-            start = 0
-            indent = u"; "
-            end = pytree.Leaf(token.INDENT, u"")
-
-        # We need access to self for new_name(), and making this a method
-        #  doesn't feel right. Closing over self and new_lines makes the
-        #  code below cleaner.
-        def handle_tuple(tuple_arg, add_prefix=False):
-            n = Name(self.new_name())
-            arg = tuple_arg.clone()
-            arg.prefix = u""
-            stmt = Assign(arg, n.clone())
-            if add_prefix:
-                n.prefix = u" "
-            tuple_arg.replace(n)
-            new_lines.append(pytree.Node(syms.simple_stmt,
-                                         [stmt, end.clone()]))
-
-        if args.type == syms.tfpdef:
-            handle_tuple(args)
-        elif args.type == syms.typedargslist:
-            for i, arg in enumerate(args.children):
-                if arg.type == syms.tfpdef:
-                    # Without add_prefix, the emitted code is correct,
-                    #  just ugly.
-                    handle_tuple(arg, add_prefix=(i > 0))
-
-        if not new_lines:
-            return
-
-        # This isn't strictly necessary, but it plays nicely with other fixers.
-        # TODO(cwinter) get rid of this when children becomes a smart list
-        for line in new_lines:
-            line.parent = suite[0]
-
-        # TODO(cwinter) suite-cleanup
-        after = start
-        if start == 0:
-            new_lines[0].prefix = u" "
-        elif is_docstring(suite[0].children[start]):
-            new_lines[0].prefix = indent
-            after = start + 1
-
-        for line in new_lines:
-            line.parent = suite[0]
-        suite[0].children[after:after] = new_lines
-        for i in range(after+1, after+len(new_lines)+1):
-            suite[0].children[i].prefix = indent
-        suite[0].changed()
-
-    def transform_lambda(self, node, results):
-        args = results["args"]
-        body = results["body"]
-        inner = simplify_args(results["inner"])
-
-        # Replace lambda ((((x)))): x  with lambda x: x
-        if inner.type == token.NAME:
-            inner = inner.clone()
-            inner.prefix = u" "
-            args.replace(inner)
-            return
-
-        params = find_params(args)
-        to_index = map_to_index(params)
-        tup_name = self.new_name(tuple_name(params))
-
-        new_param = Name(tup_name, prefix=u" ")
-        args.replace(new_param.clone())
-        for n in body.post_order():
-            if n.type == token.NAME and n.value in to_index:
-                subscripts = [c.clone() for c in to_index[n.value]]
-                new = pytree.Node(syms.power,
-                                  [new_param.clone()] + subscripts)
-                new.prefix = n.prefix
-                n.replace(new)
-
-
-### Helper functions for transform_lambda()
-
-def simplify_args(node):
-    if node.type in (syms.vfplist, token.NAME):
-        return node
-    elif node.type == syms.vfpdef:
-        # These look like vfpdef< '(' x ')' > where x is NAME
-        # or another vfpdef instance (leading to recursion).
-        while node.type == syms.vfpdef:
-            node = node.children[1]
-        return node
-    raise RuntimeError("Received unexpected node %s" % node)
-
-def find_params(node):
-    if node.type == syms.vfpdef:
-        return find_params(node.children[1])
-    elif node.type == token.NAME:
-        return node.value
-    return [find_params(c) for c in node.children if c.type != token.COMMA]
-
-def map_to_index(param_list, prefix=[], d=None):
-    if d is None:
-        d = {}
-    for i, obj in enumerate(param_list):
-        trailer = [Subscript(Number(unicode(i)))]
-        if isinstance(obj, list):
-            map_to_index(obj, trailer, d=d)
-        else:
-            d[obj] = prefix + trailer
-    return d
-
-def tuple_name(param_list):
-    l = []
-    for obj in param_list:
-        if isinstance(obj, list):
-            l.append(tuple_name(obj))
-        else:
-            l.append(obj)
-    return u"_".join(l)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_types.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_types.py
deleted file mode 100644
index 2bca6c2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_types.py
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 2007 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer for removing uses of the types module.
-
-These work for only the known names in the types module.  The forms above
-can include types. or not.  ie, It is assumed the module is imported either as:
-
-    import types
-    from types import ... # either * or specific types
-
-The import statements are not modified.
-
-There should be another fixer that handles at least the following constants:
-
-   type([]) -> list
-   type(()) -> tuple
-   type('') -> str
-
-"""
-
-# Local imports
-from ..pgen2 import token
-from .. import fixer_base
-from ..fixer_util import Name
-
-_TYPE_MAPPING = {
-        'BooleanType' : 'bool',
-        'BufferType' : 'memoryview',
-        'ClassType' : 'type',
-        'ComplexType' : 'complex',
-        'DictType': 'dict',
-        'DictionaryType' : 'dict',
-        'EllipsisType' : 'type(Ellipsis)',
-        #'FileType' : 'io.IOBase',
-        'FloatType': 'float',
-        'IntType': 'int',
-        'ListType': 'list',
-        'LongType': 'int',
-        'ObjectType' : 'object',
-        'NoneType': 'type(None)',
-        'NotImplementedType' : 'type(NotImplemented)',
-        'SliceType' : 'slice',
-        'StringType': 'bytes', # XXX ?
-        'StringTypes' : 'str', # XXX ?
-        'TupleType': 'tuple',
-        'TypeType' : 'type',
-        'UnicodeType': 'str',
-        'XRangeType' : 'range',
-    }
-
-_pats = ["power< 'types' trailer< '.' name='%s' > >" % t for t in _TYPE_MAPPING]
-
-class FixTypes(fixer_base.BaseFix):
-    BM_compatible = True
-    PATTERN = '|'.join(_pats)
-
-    def transform(self, node, results):
-        new_value = unicode(_TYPE_MAPPING.get(results["name"].value))
-        if new_value:
-            return Name(new_value, prefix=node.prefix)
-        return None
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_unicode.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_unicode.py
deleted file mode 100644
index 4919ff5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_unicode.py
+++ /dev/null
@@ -1,25 +0,0 @@
-"""Fixer that changes unicode to str, unichr to chr, and u"..." into "...".
-
-"""
-
-import re
-from ..pgen2 import token
-from .. import fixer_base
-
-_mapping = {u"unichr" : u"chr", u"unicode" : u"str"}
-_literal_re = re.compile(ur"[uU][rR]?[\'\"]")
-
-class FixUnicode(fixer_base.BaseFix):
-    BM_compatible = True
-    PATTERN = "STRING | 'unicode' | 'unichr'"
-
-    def transform(self, node, results):
-        if node.type == token.NAME:
-            new = node.clone()
-            new.value = _mapping[node.value]
-            return new
-        elif node.type == token.STRING:
-            if _literal_re.match(node.value):
-                new = node.clone()
-                new.value = new.value[1:]
-                return new
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_urllib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_urllib.py
deleted file mode 100644
index 6b6bbf5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_urllib.py
+++ /dev/null
@@ -1,197 +0,0 @@
-"""Fix changes imports of urllib which are now incompatible.
-   This is rather similar to fix_imports, but because of the more
-   complex nature of the fixing for urllib, it has its own fixer.
-"""
-# Author: Nick Edds
-
-# Local imports
-from lib2to3.fixes.fix_imports import alternates, FixImports
-from lib2to3 import fixer_base
-from lib2to3.fixer_util import (Name, Comma, FromImport, Newline,
-                                find_indentation, Node, syms)
-
-MAPPING = {"urllib":  [
-                ("urllib.request",
-                    ["URLopener", "FancyURLopener", "urlretrieve",
-                     "_urlopener", "urlopen", "urlcleanup",
-                     "pathname2url", "url2pathname"]),
-                ("urllib.parse",
-                    ["quote", "quote_plus", "unquote", "unquote_plus",
-                     "urlencode", "splitattr", "splithost", "splitnport",
-                     "splitpasswd", "splitport", "splitquery", "splittag",
-                     "splittype", "splituser", "splitvalue", ]),
-                ("urllib.error",
-                    ["ContentTooShortError"])],
-           "urllib2" : [
-                ("urllib.request",
-                    ["urlopen", "install_opener", "build_opener",
-                     "Request", "OpenerDirector", "BaseHandler",
-                     "HTTPDefaultErrorHandler", "HTTPRedirectHandler",
-                     "HTTPCookieProcessor", "ProxyHandler",
-                     "HTTPPasswordMgr",
-                     "HTTPPasswordMgrWithDefaultRealm",
-                     "AbstractBasicAuthHandler",
-                     "HTTPBasicAuthHandler", "ProxyBasicAuthHandler",
-                     "AbstractDigestAuthHandler",
-                     "HTTPDigestAuthHandler", "ProxyDigestAuthHandler",
-                     "HTTPHandler", "HTTPSHandler", "FileHandler",
-                     "FTPHandler", "CacheFTPHandler",
-                     "UnknownHandler"]),
-                ("urllib.error",
-                    ["URLError", "HTTPError"]),
-           ]
-}
-
-# Duplicate the url parsing functions for urllib2.
-MAPPING["urllib2"].append(MAPPING["urllib"][1])
-
-
-def build_pattern():
-    bare = set()
-    for old_module, changes in MAPPING.items():
-        for change in changes:
-            new_module, members = change
-            members = alternates(members)
-            yield """import_name< 'import' (module=%r
-                                  | dotted_as_names< any* module=%r any* >) >
-                  """ % (old_module, old_module)
-            yield """import_from< 'from' mod_member=%r 'import'
-                       ( member=%s | import_as_name< member=%s 'as' any > |
-                         import_as_names< members=any*  >) >
-                  """ % (old_module, members, members)
-            yield """import_from< 'from' module_star=%r 'import' star='*' >
-                  """ % old_module
-            yield """import_name< 'import'
-                                  dotted_as_name< module_as=%r 'as' any > >
-                  """ % old_module
-            # bare_with_attr has a special significance for FixImports.match().
-            yield """power< bare_with_attr=%r trailer< '.' member=%s > any* >
-                  """ % (old_module, members)
-
-
-class FixUrllib(FixImports):
-
-    def build_pattern(self):
-        return "|".join(build_pattern())
-
-    def transform_import(self, node, results):
-        """Transform for the basic import case. Replaces the old
-           import name with a comma separated list of its
-           replacements.
-        """
-        import_mod = results.get("module")
-        pref = import_mod.prefix
-
-        names = []
-
-        # create a Node list of the replacement modules
-        for name in MAPPING[import_mod.value][:-1]:
-            names.extend([Name(name[0], prefix=pref), Comma()])
-        names.append(Name(MAPPING[import_mod.value][-1][0], prefix=pref))
-        import_mod.replace(names)
-
-    def transform_member(self, node, results):
-        """Transform for imports of specific module elements. Replaces
-           the module to be imported from with the appropriate new
-           module.
-        """
-        mod_member = results.get("mod_member")
-        pref = mod_member.prefix
-        member = results.get("member")
-
-        # Simple case with only a single member being imported
-        if member:
-            # this may be a list of length one, or just a node
-            if isinstance(member, list):
-                member = member[0]
-            new_name = None
-            for change in MAPPING[mod_member.value]:
-                if member.value in change[1]:
-                    new_name = change[0]
-                    break
-            if new_name:
-                mod_member.replace(Name(new_name, prefix=pref))
-            else:
-                self.cannot_convert(node, "This is an invalid module element")
-
-        # Multiple members being imported
-        else:
-            # a dictionary for replacements, order matters
-            modules = []
-            mod_dict = {}
-            members = results["members"]
-            for member in members:
-                # we only care about the actual members
-                if member.type == syms.import_as_name:
-                    as_name = member.children[2].value
-                    member_name = member.children[0].value
-                else:
-                    member_name = member.value
-                    as_name = None
-                if member_name != u",":
-                    for change in MAPPING[mod_member.value]:
-                        if member_name in change[1]:
-                            if change[0] not in mod_dict:
-                                modules.append(change[0])
-                            mod_dict.setdefault(change[0], []).append(member)
-
-            new_nodes = []
-            indentation = find_indentation(node)
-            first = True
-            def handle_name(name, prefix):
-                if name.type == syms.import_as_name:
-                    kids = [Name(name.children[0].value, prefix=prefix),
-                            name.children[1].clone(),
-                            name.children[2].clone()]
-                    return [Node(syms.import_as_name, kids)]
-                return [Name(name.value, prefix=prefix)]
-            for module in modules:
-                elts = mod_dict[module]
-                names = []
-                for elt in elts[:-1]:
-                    names.extend(handle_name(elt, pref))
-                    names.append(Comma())
-                names.extend(handle_name(elts[-1], pref))
-                new = FromImport(module, names)
-                if not first or node.parent.prefix.endswith(indentation):
-                    new.prefix = indentation
-                new_nodes.append(new)
-                first = False
-            if new_nodes:
-                nodes = []
-                for new_node in new_nodes[:-1]:
-                    nodes.extend([new_node, Newline()])
-                nodes.append(new_nodes[-1])
-                node.replace(nodes)
-            else:
-                self.cannot_convert(node, "All module elements are invalid")
-
-    def transform_dot(self, node, results):
-        """Transform for calls to module members in code."""
-        module_dot = results.get("bare_with_attr")
-        member = results.get("member")
-        new_name = None
-        if isinstance(member, list):
-            member = member[0]
-        for change in MAPPING[module_dot.value]:
-            if member.value in change[1]:
-                new_name = change[0]
-                break
-        if new_name:
-            module_dot.replace(Name(new_name,
-                                    prefix=module_dot.prefix))
-        else:
-            self.cannot_convert(node, "This is an invalid module element")
-
-    def transform(self, node, results):
-        if results.get("module"):
-            self.transform_import(node, results)
-        elif results.get("mod_member"):
-            self.transform_member(node, results)
-        elif results.get("bare_with_attr"):
-            self.transform_dot(node, results)
-        # Renaming and star imports are not supported for these modules.
-        elif results.get("module_star"):
-            self.cannot_convert(node, "Cannot handle star imports.")
-        elif results.get("module_as"):
-            self.cannot_convert(node, "This module is now multiple modules")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_ws_comma.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_ws_comma.py
deleted file mode 100644
index d5e6061..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_ws_comma.py
+++ /dev/null
@@ -1,39 +0,0 @@
-"""Fixer that changes 'a ,b' into 'a, b'.
-
-This also changes '{a :b}' into '{a: b}', but does not touch other
-uses of colons.  It does not touch other uses of whitespace.
-
-"""
-
-from .. import pytree
-from ..pgen2 import token
-from .. import fixer_base
-
-class FixWsComma(fixer_base.BaseFix):
-
-    explicit = True # The user must ask for this fixers
-
-    PATTERN = """
-    any<(not(',') any)+ ',' ((not(',') any)+ ',')* [not(',') any]>
-    """
-
-    COMMA = pytree.Leaf(token.COMMA, u",")
-    COLON = pytree.Leaf(token.COLON, u":")
-    SEPS = (COMMA, COLON)
-
-    def transform(self, node, results):
-        new = node.clone()
-        comma = False
-        for child in new.children:
-            if child in self.SEPS:
-                prefix = child.prefix
-                if prefix.isspace() and u"\n" not in prefix:
-                    child.prefix = u""
-                comma = True
-            else:
-                if comma:
-                    prefix = child.prefix
-                    if not prefix:
-                        child.prefix = u" "
-                comma = False
-        return new
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_xrange.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_xrange.py
deleted file mode 100644
index 109c5ca..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_xrange.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright 2007 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Fixer that changes xrange(...) into range(...)."""
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Name, Call, consuming_calls
-from .. import patcomp
-
-
-class FixXrange(fixer_base.BaseFix):
-    BM_compatible = True
-    PATTERN = """
-              power<
-                 (name='range'|name='xrange') trailer< '(' args=any ')' >
-              rest=any* >
-              """
-
-    def start_tree(self, tree, filename):
-        super(FixXrange, self).start_tree(tree, filename)
-        self.transformed_xranges = set()
-
-    def finish_tree(self, tree, filename):
-        self.transformed_xranges = None
-
-    def transform(self, node, results):
-        name = results["name"]
-        if name.value == u"xrange":
-            return self.transform_xrange(node, results)
-        elif name.value == u"range":
-            return self.transform_range(node, results)
-        else:
-            raise ValueError(repr(name))
-
-    def transform_xrange(self, node, results):
-        name = results["name"]
-        name.replace(Name(u"range", prefix=name.prefix))
-        # This prevents the new range call from being wrapped in a list later.
-        self.transformed_xranges.add(id(node))
-
-    def transform_range(self, node, results):
-        if (id(node) not in self.transformed_xranges and
-            not self.in_special_context(node)):
-            range_call = Call(Name(u"range"), [results["args"].clone()])
-            # Encase the range call in list().
-            list_call = Call(Name(u"list"), [range_call],
-                             prefix=node.prefix)
-            # Put things that were after the range() call after the list call.
-            for n in results["rest"]:
-                list_call.append_child(n)
-            return list_call
-
-    P1 = "power< func=NAME trailer< '(' node=any ')' > any* >"
-    p1 = patcomp.compile_pattern(P1)
-
-    P2 = """for_stmt< 'for' any 'in' node=any ':' any* >
-            | comp_for< 'for' any 'in' node=any any* >
-            | comparison< any 'in' node=any any*>
-         """
-    p2 = patcomp.compile_pattern(P2)
-
-    def in_special_context(self, node):
-        if node.parent is None:
-            return False
-        results = {}
-        if (node.parent.parent is not None and
-               self.p1.match(node.parent.parent, results) and
-               results["node"] is node):
-            # list(d.keys()) -> list(d.keys()), etc.
-            return results["func"].value in consuming_calls
-        # for ... in d.iterkeys() -> for ... in d.keys(), etc.
-        return self.p2.match(node.parent, results) and results["node"] is node
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_xreadlines.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_xreadlines.py
deleted file mode 100644
index 7b7ce56..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_xreadlines.py
+++ /dev/null
@@ -1,25 +0,0 @@
-"""Fix "for x in f.xreadlines()" -> "for x in f".
-
-This fixer will also convert g(f.xreadlines) into g(f.__iter__)."""
-# Author: Collin Winter
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Name
-
-
-class FixXreadlines(fixer_base.BaseFix):
-    BM_compatible = True
-    PATTERN = """
-    power< call=any+ trailer< '.' 'xreadlines' > trailer< '(' ')' > >
-    |
-    power< any+ trailer< '.' no_call='xreadlines' > >
-    """
-
-    def transform(self, node, results):
-        no_call = results.get("no_call")
-
-        if no_call:
-            no_call.replace(Name(u"__iter__", prefix=no_call.prefix))
-        else:
-            node.replace([x.clone() for x in results["call"]])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_zip.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_zip.py
deleted file mode 100644
index 63aac02..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/fixes/fix_zip.py
+++ /dev/null
@@ -1,35 +0,0 @@
-"""
-Fixer that changes zip(seq0, seq1, ...) into list(zip(seq0, seq1, ...)
-unless there exists a 'from future_builtins import zip' statement in the
-top-level namespace.
-
-We avoid the transformation if the zip() call is directly contained in
-iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:.
-"""
-
-# Local imports
-from .. import fixer_base
-from ..fixer_util import Name, Call, in_special_context
-
-class FixZip(fixer_base.ConditionalFix):
-
-    BM_compatible = True
-    PATTERN = """
-    power< 'zip' args=trailer< '(' [any] ')' >
-    >
-    """
-
-    skip_on = "future_builtins.zip"
-
-    def transform(self, node, results):
-        if self.should_skip(node):
-            return
-
-        if in_special_context(node):
-            return None
-
-        new = node.clone()
-        new.prefix = u""
-        new = Call(Name(u"list"), [new])
-        new.prefix = node.prefix
-        return new
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/main.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/main.py
deleted file mode 100644
index e0fab43..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/main.py
+++ /dev/null
@@ -1,182 +0,0 @@
-"""
-Main program for 2to3.
-"""
-
-from __future__ import with_statement
-
-import sys
-import os
-import difflib
-import logging
-import shutil
-import optparse
-
-from . import refactor
-
-
-def diff_texts(a, b, filename):
-    """Return a unified diff of two strings."""
-    a = a.splitlines()
-    b = b.splitlines()
-    return difflib.unified_diff(a, b, filename, filename,
-                                "(original)", "(refactored)",
-                                lineterm="")
-
-
-class StdoutRefactoringTool(refactor.MultiprocessRefactoringTool):
-    """
-    Prints output to stdout.
-    """
-
-    def __init__(self, fixers, options, explicit, nobackups, show_diffs):
-        self.nobackups = nobackups
-        self.show_diffs = show_diffs
-        super(StdoutRefactoringTool, self).__init__(fixers, options, explicit)
-
-    def log_error(self, msg, *args, **kwargs):
-        self.errors.append((msg, args, kwargs))
-        self.logger.error(msg, *args, **kwargs)
-
-    def write_file(self, new_text, filename, old_text, encoding):
-        if not self.nobackups:
-            # Make backup
-            backup = filename + ".bak"
-            if os.path.lexists(backup):
-                try:
-                    os.remove(backup)
-                except os.error, err:
-                    self.log_message("Can't remove backup %s", backup)
-            try:
-                os.rename(filename, backup)
-            except os.error, err:
-                self.log_message("Can't rename %s to %s", filename, backup)
-        # Actually write the new file
-        write = super(StdoutRefactoringTool, self).write_file
-        write(new_text, filename, old_text, encoding)
-        if not self.nobackups:
-            shutil.copymode(backup, filename)
-
-    def print_output(self, old, new, filename, equal):
-        if equal:
-            self.log_message("No changes to %s", filename)
-        else:
-            self.log_message("Refactored %s", filename)
-            if self.show_diffs:
-                diff_lines = diff_texts(old, new, filename)
-                try:
-                    if self.output_lock is not None:
-                        with self.output_lock:
-                            for line in diff_lines:
-                                print line
-                            sys.stdout.flush()
-                    else:
-                        for line in diff_lines:
-                            print line
-                except UnicodeEncodeError:
-                    warn("couldn't encode %s's diff for your terminal" %
-                         (filename,))
-                    return
-
-
-def warn(msg):
-    print >> sys.stderr, "WARNING: %s" % (msg,)
-
-
-def main(fixer_pkg, args=None):
-    """Main program.
-
-    Args:
-        fixer_pkg: the name of a package where the fixers are located.
-        args: optional; a list of command line arguments. If omitted,
-              sys.argv[1:] is used.
-
-    Returns a suggested exit status (0, 1, 2).
-    """
-    # Set up option parser
-    parser = optparse.OptionParser(usage="2to3 [options] file|dir ...")
-    parser.add_option("-d", "--doctests_only", action="store_true",
-                      help="Fix up doctests only")
-    parser.add_option("-f", "--fix", action="append", default=[],
-                      help="Each FIX specifies a transformation; default: all")
-    parser.add_option("-j", "--processes", action="store", default=1,
-                      type="int", help="Run 2to3 concurrently")
-    parser.add_option("-x", "--nofix", action="append", default=[],
-                      help="Prevent a transformation from being run")
-    parser.add_option("-l", "--list-fixes", action="store_true",
-                      help="List available transformations")
-    parser.add_option("-p", "--print-function", action="store_true",
-                      help="Modify the grammar so that print() is a function")
-    parser.add_option("-v", "--verbose", action="store_true",
-                      help="More verbose logging")
-    parser.add_option("--no-diffs", action="store_true",
-                      help="Don't show diffs of the refactoring")
-    parser.add_option("-w", "--write", action="store_true",
-                      help="Write back modified files")
-    parser.add_option("-n", "--nobackups", action="store_true", default=False,
-                      help="Don't write backups for modified files")
-
-    # Parse command line arguments
-    refactor_stdin = False
-    flags = {}
-    options, args = parser.parse_args(args)
-    if not options.write and options.no_diffs:
-        warn("not writing files and not printing diffs; that's not very useful")
-    if not options.write and options.nobackups:
-        parser.error("Can't use -n without -w")
-    if options.list_fixes:
-        print "Available transformations for the -f/--fix option:"
-        for fixname in refactor.get_all_fix_names(fixer_pkg):
-            print fixname
-        if not args:
-            return 0
-    if not args:
-        print >> sys.stderr, "At least one file or directory argument required."
-        print >> sys.stderr, "Use --help to show usage."
-        return 2
-    if "-" in args:
-        refactor_stdin = True
-        if options.write:
-            print >> sys.stderr, "Can't write to stdin."
-            return 2
-    if options.print_function:
-        flags["print_function"] = True
-
-    # Set up logging handler
-    level = logging.DEBUG if options.verbose else logging.INFO
-    logging.basicConfig(format='%(name)s: %(message)s', level=level)
-
-    # Initialize the refactoring tool
-    avail_fixes = set(refactor.get_fixers_from_package(fixer_pkg))
-    unwanted_fixes = set(fixer_pkg + ".fix_" + fix for fix in options.nofix)
-    explicit = set()
-    if options.fix:
-        all_present = False
-        for fix in options.fix:
-            if fix == "all":
-                all_present = True
-            else:
-                explicit.add(fixer_pkg + ".fix_" + fix)
-        requested = avail_fixes.union(explicit) if all_present else explicit
-    else:
-        requested = avail_fixes.union(explicit)
-    fixer_names = requested.difference(unwanted_fixes)
-    rt = StdoutRefactoringTool(sorted(fixer_names), flags, sorted(explicit),
-                               options.nobackups, not options.no_diffs)
-
-    # Refactor all files and directories passed as arguments
-    if not rt.errors:
-        if refactor_stdin:
-            rt.refactor_stdin()
-        else:
-            try:
-                rt.refactor(args, options.write, options.doctests_only,
-                            options.processes)
-            except refactor.MultiprocessingUnsupported:
-                assert options.processes > 1
-                print >> sys.stderr, "Sorry, -j isn't " \
-                    "supported on this platform."
-                return 1
-        rt.summarize()
-
-    # Return error status (0 if rt.errors is zero)
-    return int(bool(rt.errors))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/patcomp.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/patcomp.py
deleted file mode 100644
index a8a2835..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/patcomp.py
+++ /dev/null
@@ -1,205 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Pattern compiler.
-
-The grammer is taken from PatternGrammar.txt.
-
-The compiler compiles a pattern to a pytree.*Pattern instance.
-"""
-
-__author__ = "Guido van Rossum <guido@python.org>"
-
-# Python imports
-import os
-import StringIO
-
-# Fairly local imports
-from .pgen2 import driver, literals, token, tokenize, parse, grammar
-
-# Really local imports
-from . import pytree
-from . import pygram
-
-# The pattern grammar file
-_PATTERN_GRAMMAR_FILE = os.path.join(os.path.dirname(__file__),
-                                     "PatternGrammar.txt")
-
-
-class PatternSyntaxError(Exception):
-    pass
-
-
-def tokenize_wrapper(input):
-    """Tokenizes a string suppressing significant whitespace."""
-    skip = set((token.NEWLINE, token.INDENT, token.DEDENT))
-    tokens = tokenize.generate_tokens(StringIO.StringIO(input).readline)
-    for quintuple in tokens:
-        type, value, start, end, line_text = quintuple
-        if type not in skip:
-            yield quintuple
-
-
-class PatternCompiler(object):
-
-    def __init__(self, grammar_file=_PATTERN_GRAMMAR_FILE):
-        """Initializer.
-
-        Takes an optional alternative filename for the pattern grammar.
-        """
-        self.grammar = driver.load_grammar(grammar_file)
-        self.syms = pygram.Symbols(self.grammar)
-        self.pygrammar = pygram.python_grammar
-        self.pysyms = pygram.python_symbols
-        self.driver = driver.Driver(self.grammar, convert=pattern_convert)
-
-    def compile_pattern(self, input, debug=False, with_tree=False):
-        """Compiles a pattern string to a nested pytree.*Pattern object."""
-        tokens = tokenize_wrapper(input)
-        try:
-            root = self.driver.parse_tokens(tokens, debug=debug)
-        except parse.ParseError as e:
-            raise PatternSyntaxError(str(e))
-        if with_tree:
-            return self.compile_node(root), root
-        else:
-            return self.compile_node(root)
-
-    def compile_node(self, node):
-        """Compiles a node, recursively.
-
-        This is one big switch on the node type.
-        """
-        # XXX Optimize certain Wildcard-containing-Wildcard patterns
-        # that can be merged
-        if node.type == self.syms.Matcher:
-            node = node.children[0] # Avoid unneeded recursion
-
-        if node.type == self.syms.Alternatives:
-            # Skip the odd children since they are just '|' tokens
-            alts = [self.compile_node(ch) for ch in node.children[::2]]
-            if len(alts) == 1:
-                return alts[0]
-            p = pytree.WildcardPattern([[a] for a in alts], min=1, max=1)
-            return p.optimize()
-
-        if node.type == self.syms.Alternative:
-            units = [self.compile_node(ch) for ch in node.children]
-            if len(units) == 1:
-                return units[0]
-            p = pytree.WildcardPattern([units], min=1, max=1)
-            return p.optimize()
-
-        if node.type == self.syms.NegatedUnit:
-            pattern = self.compile_basic(node.children[1:])
-            p = pytree.NegatedPattern(pattern)
-            return p.optimize()
-
-        assert node.type == self.syms.Unit
-
-        name = None
-        nodes = node.children
-        if len(nodes) >= 3 and nodes[1].type == token.EQUAL:
-            name = nodes[0].value
-            nodes = nodes[2:]
-        repeat = None
-        if len(nodes) >= 2 and nodes[-1].type == self.syms.Repeater:
-            repeat = nodes[-1]
-            nodes = nodes[:-1]
-
-        # Now we've reduced it to: STRING | NAME [Details] | (...) | [...]
-        pattern = self.compile_basic(nodes, repeat)
-
-        if repeat is not None:
-            assert repeat.type == self.syms.Repeater
-            children = repeat.children
-            child = children[0]
-            if child.type == token.STAR:
-                min = 0
-                max = pytree.HUGE
-            elif child.type == token.PLUS:
-                min = 1
-                max = pytree.HUGE
-            elif child.type == token.LBRACE:
-                assert children[-1].type == token.RBRACE
-                assert  len(children) in (3, 5)
-                min = max = self.get_int(children[1])
-                if len(children) == 5:
-                    max = self.get_int(children[3])
-            else:
-                assert False
-            if min != 1 or max != 1:
-                pattern = pattern.optimize()
-                pattern = pytree.WildcardPattern([[pattern]], min=min, max=max)
-
-        if name is not None:
-            pattern.name = name
-        return pattern.optimize()
-
-    def compile_basic(self, nodes, repeat=None):
-        # Compile STRING | NAME [Details] | (...) | [...]
-        assert len(nodes) >= 1
-        node = nodes[0]
-        if node.type == token.STRING:
-            value = unicode(literals.evalString(node.value))
-            return pytree.LeafPattern(_type_of_literal(value), value)
-        elif node.type == token.NAME:
-            value = node.value
-            if value.isupper():
-                if value not in TOKEN_MAP:
-                    raise PatternSyntaxError("Invalid token: %r" % value)
-                if nodes[1:]:
-                    raise PatternSyntaxError("Can't have details for token")
-                return pytree.LeafPattern(TOKEN_MAP[value])
-            else:
-                if value == "any":
-                    type = None
-                elif not value.startswith("_"):
-                    type = getattr(self.pysyms, value, None)
-                    if type is None:
-                        raise PatternSyntaxError("Invalid symbol: %r" % value)
-                if nodes[1:]: # Details present
-                    content = [self.compile_node(nodes[1].children[1])]
-                else:
-                    content = None
-                return pytree.NodePattern(type, content)
-        elif node.value == "(":
-            return self.compile_node(nodes[1])
-        elif node.value == "[":
-            assert repeat is None
-            subpattern = self.compile_node(nodes[1])
-            return pytree.WildcardPattern([[subpattern]], min=0, max=1)
-        assert False, node
-
-    def get_int(self, node):
-        assert node.type == token.NUMBER
-        return int(node.value)
-
-
-# Map named tokens to the type value for a LeafPattern
-TOKEN_MAP = {"NAME": token.NAME,
-             "STRING": token.STRING,
-             "NUMBER": token.NUMBER,
-             "TOKEN": None}
-
-
-def _type_of_literal(value):
-    if value[0].isalpha():
-        return token.NAME
-    elif value in grammar.opmap:
-        return grammar.opmap[value]
-    else:
-        return None
-
-
-def pattern_convert(grammar, raw_node_info):
-    """Converts raw node information to a Node or Leaf instance."""
-    type, value, context, children = raw_node_info
-    if children or type in grammar.number2symbol:
-        return pytree.Node(type, children, context=context)
-    else:
-        return pytree.Leaf(type, value, context=context)
-
-
-def compile_pattern(pattern):
-    return PatternCompiler().compile_pattern(pattern)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/__init__.py
deleted file mode 100644
index bcc8f8e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# Copyright 2004-2005 Elemental Security, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""The pgen2 package."""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/conv.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/conv.py
deleted file mode 100644
index a179ff0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/conv.py
+++ /dev/null
@@ -1,257 +0,0 @@
-# Copyright 2004-2005 Elemental Security, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Convert graminit.[ch] spit out by pgen to Python code.
-
-Pgen is the Python parser generator.  It is useful to quickly create a
-parser from a grammar file in Python's grammar notation.  But I don't
-want my parsers to be written in C (yet), so I'm translating the
-parsing tables to Python data structures and writing a Python parse
-engine.
-
-Note that the token numbers are constants determined by the standard
-Python tokenizer.  The standard token module defines these numbers and
-their names (the names are not used much).  The token numbers are
-hardcoded into the Python tokenizer and into pgen.  A Python
-implementation of the Python tokenizer is also available, in the
-standard tokenize module.
-
-On the other hand, symbol numbers (representing the grammar's
-non-terminals) are assigned by pgen based on the actual grammar
-input.
-
-Note: this module is pretty much obsolete; the pgen module generates
-equivalent grammar tables directly from the Grammar.txt input file
-without having to invoke the Python pgen C program.
-
-"""
-
-# Python imports
-import re
-
-# Local imports
-from pgen2 import grammar, token
-
-
-class Converter(grammar.Grammar):
-    """Grammar subclass that reads classic pgen output files.
-
-    The run() method reads the tables as produced by the pgen parser
-    generator, typically contained in two C files, graminit.h and
-    graminit.c.  The other methods are for internal use only.
-
-    See the base class for more documentation.
-
-    """
-
-    def run(self, graminit_h, graminit_c):
-        """Load the grammar tables from the text files written by pgen."""
-        self.parse_graminit_h(graminit_h)
-        self.parse_graminit_c(graminit_c)
-        self.finish_off()
-
-    def parse_graminit_h(self, filename):
-        """Parse the .h file written by pgen.  (Internal)
-
-        This file is a sequence of #define statements defining the
-        nonterminals of the grammar as numbers.  We build two tables
-        mapping the numbers to names and back.
-
-        """
-        try:
-            f = open(filename)
-        except IOError, err:
-            print "Can't open %s: %s" % (filename, err)
-            return False
-        self.symbol2number = {}
-        self.number2symbol = {}
-        lineno = 0
-        for line in f:
-            lineno += 1
-            mo = re.match(r"^#define\s+(\w+)\s+(\d+)$", line)
-            if not mo and line.strip():
-                print "%s(%s): can't parse %s" % (filename, lineno,
-                                                  line.strip())
-            else:
-                symbol, number = mo.groups()
-                number = int(number)
-                assert symbol not in self.symbol2number
-                assert number not in self.number2symbol
-                self.symbol2number[symbol] = number
-                self.number2symbol[number] = symbol
-        return True
-
-    def parse_graminit_c(self, filename):
-        """Parse the .c file written by pgen.  (Internal)
-
-        The file looks as follows.  The first two lines are always this:
-
-        #include "pgenheaders.h"
-        #include "grammar.h"
-
-        After that come four blocks:
-
-        1) one or more state definitions
-        2) a table defining dfas
-        3) a table defining labels
-        4) a struct defining the grammar
-
-        A state definition has the following form:
-        - one or more arc arrays, each of the form:
-          static arc arcs_<n>_<m>[<k>] = {
-                  {<i>, <j>},
-                  ...
-          };
-        - followed by a state array, of the form:
-          static state states_<s>[<t>] = {
-                  {<k>, arcs_<n>_<m>},
-                  ...
-          };
-
-        """
-        try:
-            f = open(filename)
-        except IOError, err:
-            print "Can't open %s: %s" % (filename, err)
-            return False
-        # The code below essentially uses f's iterator-ness!
-        lineno = 0
-
-        # Expect the two #include lines
-        lineno, line = lineno+1, f.next()
-        assert line == '#include "pgenheaders.h"\n', (lineno, line)
-        lineno, line = lineno+1, f.next()
-        assert line == '#include "grammar.h"\n', (lineno, line)
-
-        # Parse the state definitions
-        lineno, line = lineno+1, f.next()
-        allarcs = {}
-        states = []
-        while line.startswith("static arc "):
-            while line.startswith("static arc "):
-                mo = re.match(r"static arc arcs_(\d+)_(\d+)\[(\d+)\] = {$",
-                              line)
-                assert mo, (lineno, line)
-                n, m, k = map(int, mo.groups())
-                arcs = []
-                for _ in range(k):
-                    lineno, line = lineno+1, f.next()
-                    mo = re.match(r"\s+{(\d+), (\d+)},$", line)
-                    assert mo, (lineno, line)
-                    i, j = map(int, mo.groups())
-                    arcs.append((i, j))
-                lineno, line = lineno+1, f.next()
-                assert line == "};\n", (lineno, line)
-                allarcs[(n, m)] = arcs
-                lineno, line = lineno+1, f.next()
-            mo = re.match(r"static state states_(\d+)\[(\d+)\] = {$", line)
-            assert mo, (lineno, line)
-            s, t = map(int, mo.groups())
-            assert s == len(states), (lineno, line)
-            state = []
-            for _ in range(t):
-                lineno, line = lineno+1, f.next()
-                mo = re.match(r"\s+{(\d+), arcs_(\d+)_(\d+)},$", line)
-                assert mo, (lineno, line)
-                k, n, m = map(int, mo.groups())
-                arcs = allarcs[n, m]
-                assert k == len(arcs), (lineno, line)
-                state.append(arcs)
-            states.append(state)
-            lineno, line = lineno+1, f.next()
-            assert line == "};\n", (lineno, line)
-            lineno, line = lineno+1, f.next()
-        self.states = states
-
-        # Parse the dfas
-        dfas = {}
-        mo = re.match(r"static dfa dfas\[(\d+)\] = {$", line)
-        assert mo, (lineno, line)
-        ndfas = int(mo.group(1))
-        for i in range(ndfas):
-            lineno, line = lineno+1, f.next()
-            mo = re.match(r'\s+{(\d+), "(\w+)", (\d+), (\d+), states_(\d+),$',
-                          line)
-            assert mo, (lineno, line)
-            symbol = mo.group(2)
-            number, x, y, z = map(int, mo.group(1, 3, 4, 5))
-            assert self.symbol2number[symbol] == number, (lineno, line)
-            assert self.number2symbol[number] == symbol, (lineno, line)
-            assert x == 0, (lineno, line)
-            state = states[z]
-            assert y == len(state), (lineno, line)
-            lineno, line = lineno+1, f.next()
-            mo = re.match(r'\s+("(?:\\\d\d\d)*")},$', line)
-            assert mo, (lineno, line)
-            first = {}
-            rawbitset = eval(mo.group(1))
-            for i, c in enumerate(rawbitset):
-                byte = ord(c)
-                for j in range(8):
-                    if byte & (1<<j):
-                        first[i*8 + j] = 1
-            dfas[number] = (state, first)
-        lineno, line = lineno+1, f.next()
-        assert line == "};\n", (lineno, line)
-        self.dfas = dfas
-
-        # Parse the labels
-        labels = []
-        lineno, line = lineno+1, f.next()
-        mo = re.match(r"static label labels\[(\d+)\] = {$", line)
-        assert mo, (lineno, line)
-        nlabels = int(mo.group(1))
-        for i in range(nlabels):
-            lineno, line = lineno+1, f.next()
-            mo = re.match(r'\s+{(\d+), (0|"\w+")},$', line)
-            assert mo, (lineno, line)
-            x, y = mo.groups()
-            x = int(x)
-            if y == "0":
-                y = None
-            else:
-                y = eval(y)
-            labels.append((x, y))
-        lineno, line = lineno+1, f.next()
-        assert line == "};\n", (lineno, line)
-        self.labels = labels
-
-        # Parse the grammar struct
-        lineno, line = lineno+1, f.next()
-        assert line == "grammar _PyParser_Grammar = {\n", (lineno, line)
-        lineno, line = lineno+1, f.next()
-        mo = re.match(r"\s+(\d+),$", line)
-        assert mo, (lineno, line)
-        ndfas = int(mo.group(1))
-        assert ndfas == len(self.dfas)
-        lineno, line = lineno+1, f.next()
-        assert line == "\tdfas,\n", (lineno, line)
-        lineno, line = lineno+1, f.next()
-        mo = re.match(r"\s+{(\d+), labels},$", line)
-        assert mo, (lineno, line)
-        nlabels = int(mo.group(1))
-        assert nlabels == len(self.labels), (lineno, line)
-        lineno, line = lineno+1, f.next()
-        mo = re.match(r"\s+(\d+)$", line)
-        assert mo, (lineno, line)
-        start = int(mo.group(1))
-        assert start in self.number2symbol, (lineno, line)
-        self.start = start
-        lineno, line = lineno+1, f.next()
-        assert line == "};\n", (lineno, line)
-        try:
-            lineno, line = lineno+1, f.next()
-        except StopIteration:
-            pass
-        else:
-            assert 0, (lineno, line)
-
-    def finish_off(self):
-        """Create additional useful structures.  (Internal)."""
-        self.keywords = {} # map from keyword strings to arc labels
-        self.tokens = {}   # map from numeric token values to arc labels
-        for ilabel, (type, value) in enumerate(self.labels):
-            if type == token.NAME and value is not None:
-                self.keywords[value] = ilabel
-            elif value is None:
-                self.tokens[type] = ilabel
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/driver.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/driver.py
deleted file mode 100644
index ccf7bca..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/driver.py
+++ /dev/null
@@ -1,140 +0,0 @@
-# Copyright 2004-2005 Elemental Security, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-# Modifications:
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Parser driver.
-
-This provides a high-level interface to parse a file into a syntax tree.
-
-"""
-
-__author__ = "Guido van Rossum <guido@python.org>"
-
-__all__ = ["Driver", "load_grammar"]
-
-# Python imports
-import codecs
-import os
-import logging
-import StringIO
-import sys
-
-# Pgen imports
-from . import grammar, parse, token, tokenize, pgen
-
-
-class Driver(object):
-
-    def __init__(self, grammar, convert=None, logger=None):
-        self.grammar = grammar
-        if logger is None:
-            logger = logging.getLogger()
-        self.logger = logger
-        self.convert = convert
-
-    def parse_tokens(self, tokens, debug=False):
-        """Parse a series of tokens and return the syntax tree."""
-        # XXX Move the prefix computation into a wrapper around tokenize.
-        p = parse.Parser(self.grammar, self.convert)
-        p.setup()
-        lineno = 1
-        column = 0
-        type = value = start = end = line_text = None
-        prefix = u""
-        for quintuple in tokens:
-            type, value, start, end, line_text = quintuple
-            if start != (lineno, column):
-                assert (lineno, column) <= start, ((lineno, column), start)
-                s_lineno, s_column = start
-                if lineno < s_lineno:
-                    prefix += "\n" * (s_lineno - lineno)
-                    lineno = s_lineno
-                    column = 0
-                if column < s_column:
-                    prefix += line_text[column:s_column]
-                    column = s_column
-            if type in (tokenize.COMMENT, tokenize.NL):
-                prefix += value
-                lineno, column = end
-                if value.endswith("\n"):
-                    lineno += 1
-                    column = 0
-                continue
-            if type == token.OP:
-                type = grammar.opmap[value]
-            if debug:
-                self.logger.debug("%s %r (prefix=%r)",
-                                  token.tok_name[type], value, prefix)
-            if p.addtoken(type, value, (prefix, start)):
-                if debug:
-                    self.logger.debug("Stop.")
-                break
-            prefix = ""
-            lineno, column = end
-            if value.endswith("\n"):
-                lineno += 1
-                column = 0
-        else:
-            # We never broke out -- EOF is too soon (how can this happen???)
-            raise parse.ParseError("incomplete input",
-                                   type, value, (prefix, start))
-        return p.rootnode
-
-    def parse_stream_raw(self, stream, debug=False):
-        """Parse a stream and return the syntax tree."""
-        tokens = tokenize.generate_tokens(stream.readline)
-        return self.parse_tokens(tokens, debug)
-
-    def parse_stream(self, stream, debug=False):
-        """Parse a stream and return the syntax tree."""
-        return self.parse_stream_raw(stream, debug)
-
-    def parse_file(self, filename, encoding=None, debug=False):
-        """Parse a file and return the syntax tree."""
-        stream = codecs.open(filename, "r", encoding)
-        try:
-            return self.parse_stream(stream, debug)
-        finally:
-            stream.close()
-
-    def parse_string(self, text, debug=False):
-        """Parse a string and return the syntax tree."""
-        tokens = tokenize.generate_tokens(StringIO.StringIO(text).readline)
-        return self.parse_tokens(tokens, debug)
-
-
-def load_grammar(gt="Grammar.txt", gp=None,
-                 save=True, force=False, logger=None):
-    """Load the grammar (maybe from a pickle)."""
-    if logger is None:
-        logger = logging.getLogger()
-    if gp is None:
-        head, tail = os.path.splitext(gt)
-        if tail == ".txt":
-            tail = ""
-        gp = head + tail + ".".join(map(str, sys.version_info)) + ".pickle"
-    if force or not _newer(gp, gt):
-        logger.info("Generating grammar tables from %s", gt)
-        g = pgen.generate_grammar(gt)
-        if save:
-            logger.info("Writing grammar tables to %s", gp)
-            try:
-                g.dump(gp)
-            except IOError, e:
-                logger.info("Writing failed:"+str(e))
-    else:
-        g = grammar.Grammar()
-        g.load(gp)
-    return g
-
-
-def _newer(a, b):
-    """Inquire whether file a was written since file b."""
-    if not os.path.exists(a):
-        return False
-    if not os.path.exists(b):
-        return True
-    return os.path.getmtime(a) >= os.path.getmtime(b)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/grammar.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/grammar.py
deleted file mode 100644
index 3056bd3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/grammar.py
+++ /dev/null
@@ -1,184 +0,0 @@
-# Copyright 2004-2005 Elemental Security, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""This module defines the data structures used to represent a grammar.
-
-These are a bit arcane because they are derived from the data
-structures used by Python's 'pgen' parser generator.
-
-There's also a table here mapping operators to their names in the
-token module; the Python tokenize module reports all operators as the
-fallback token code OP, but the parser needs the actual token code.
-
-"""
-
-# Python imports
-import pickle
-
-# Local imports
-from . import token, tokenize
-
-
-class Grammar(object):
-    """Pgen parsing tables tables conversion class.
-
-    Once initialized, this class supplies the grammar tables for the
-    parsing engine implemented by parse.py.  The parsing engine
-    accesses the instance variables directly.  The class here does not
-    provide initialization of the tables; several subclasses exist to
-    do this (see the conv and pgen modules).
-
-    The load() method reads the tables from a pickle file, which is
-    much faster than the other ways offered by subclasses.  The pickle
-    file is written by calling dump() (after loading the grammar
-    tables using a subclass).  The report() method prints a readable
-    representation of the tables to stdout, for debugging.
-
-    The instance variables are as follows:
-
-    symbol2number -- a dict mapping symbol names to numbers.  Symbol
-                     numbers are always 256 or higher, to distinguish
-                     them from token numbers, which are between 0 and
-                     255 (inclusive).
-
-    number2symbol -- a dict mapping numbers to symbol names;
-                     these two are each other's inverse.
-
-    states        -- a list of DFAs, where each DFA is a list of
-                     states, each state is is a list of arcs, and each
-                     arc is a (i, j) pair where i is a label and j is
-                     a state number.  The DFA number is the index into
-                     this list.  (This name is slightly confusing.)
-                     Final states are represented by a special arc of
-                     the form (0, j) where j is its own state number.
-
-    dfas          -- a dict mapping symbol numbers to (DFA, first)
-                     pairs, where DFA is an item from the states list
-                     above, and first is a set of tokens that can
-                     begin this grammar rule (represented by a dict
-                     whose values are always 1).
-
-    labels        -- a list of (x, y) pairs where x is either a token
-                     number or a symbol number, and y is either None
-                     or a string; the strings are keywords.  The label
-                     number is the index in this list; label numbers
-                     are used to mark state transitions (arcs) in the
-                     DFAs.
-
-    start         -- the number of the grammar's start symbol.
-
-    keywords      -- a dict mapping keyword strings to arc labels.
-
-    tokens        -- a dict mapping token numbers to arc labels.
-
-    """
-
-    def __init__(self):
-        self.symbol2number = {}
-        self.number2symbol = {}
-        self.states = []
-        self.dfas = {}
-        self.labels = [(0, "EMPTY")]
-        self.keywords = {}
-        self.tokens = {}
-        self.symbol2label = {}
-        self.start = 256
-
-    def dump(self, filename):
-        """Dump the grammar tables to a pickle file."""
-        f = open(filename, "wb")
-        pickle.dump(self.__dict__, f, 2)
-        f.close()
-
-    def load(self, filename):
-        """Load the grammar tables from a pickle file."""
-        f = open(filename, "rb")
-        d = pickle.load(f)
-        f.close()
-        self.__dict__.update(d)
-
-    def copy(self):
-        """
-        Copy the grammar.
-        """
-        new = self.__class__()
-        for dict_attr in ("symbol2number", "number2symbol", "dfas", "keywords",
-                          "tokens", "symbol2label"):
-            setattr(new, dict_attr, getattr(self, dict_attr).copy())
-        new.labels = self.labels[:]
-        new.states = self.states[:]
-        new.start = self.start
-        return new
-
-    def report(self):
-        """Dump the grammar tables to standard output, for debugging."""
-        from pprint import pprint
-        print "s2n"
-        pprint(self.symbol2number)
-        print "n2s"
-        pprint(self.number2symbol)
-        print "states"
-        pprint(self.states)
-        print "dfas"
-        pprint(self.dfas)
-        print "labels"
-        pprint(self.labels)
-        print "start", self.start
-
-
-# Map from operator to number (since tokenize doesn't do this)
-
-opmap_raw = """
-( LPAR
-) RPAR
-[ LSQB
-] RSQB
-: COLON
-, COMMA
-; SEMI
-+ PLUS
-- MINUS
-* STAR
-/ SLASH
-| VBAR
-& AMPER
-< LESS
-> GREATER
-= EQUAL
-. DOT
-% PERCENT
-` BACKQUOTE
-{ LBRACE
-} RBRACE
-@ AT
-== EQEQUAL
-!= NOTEQUAL
-<> NOTEQUAL
-<= LESSEQUAL
->= GREATEREQUAL
-~ TILDE
-^ CIRCUMFLEX
-<< LEFTSHIFT
->> RIGHTSHIFT
-** DOUBLESTAR
-+= PLUSEQUAL
--= MINEQUAL
-*= STAREQUAL
-/= SLASHEQUAL
-%= PERCENTEQUAL
-&= AMPEREQUAL
-|= VBAREQUAL
-^= CIRCUMFLEXEQUAL
-<<= LEFTSHIFTEQUAL
->>= RIGHTSHIFTEQUAL
-**= DOUBLESTAREQUAL
-// DOUBLESLASH
-//= DOUBLESLASHEQUAL
--> RARROW
-"""
-
-opmap = {}
-for line in opmap_raw.splitlines():
-    if line:
-        op, name = line.split()
-        opmap[op] = getattr(token, name)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/literals.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/literals.py
deleted file mode 100644
index 09b2b8e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/literals.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright 2004-2005 Elemental Security, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Safely evaluate Python string literals without using eval()."""
-
-import re
-
-simple_escapes = {"a": "\a",
-                  "b": "\b",
-                  "f": "\f",
-                  "n": "\n",
-                  "r": "\r",
-                  "t": "\t",
-                  "v": "\v",
-                  "'": "'",
-                  '"': '"',
-                  "\\": "\\"}
-
-def escape(m):
-    all, tail = m.group(0, 1)
-    assert all.startswith("\\")
-    esc = simple_escapes.get(tail)
-    if esc is not None:
-        return esc
-    if tail.startswith("x"):
-        hexes = tail[1:]
-        if len(hexes) < 2:
-            raise ValueError("invalid hex string escape ('\\%s')" % tail)
-        try:
-            i = int(hexes, 16)
-        except ValueError:
-            raise ValueError("invalid hex string escape ('\\%s')" % tail)
-    else:
-        try:
-            i = int(tail, 8)
-        except ValueError:
-            raise ValueError("invalid octal string escape ('\\%s')" % tail)
-    return chr(i)
-
-def evalString(s):
-    assert s.startswith("'") or s.startswith('"'), repr(s[:1])
-    q = s[0]
-    if s[:3] == q*3:
-        q = q*3
-    assert s.endswith(q), repr(s[-len(q):])
-    assert len(s) >= 2*len(q)
-    s = s[len(q):-len(q)]
-    return re.sub(r"\\(\'|\"|\\|[abfnrtv]|x.{0,2}|[0-7]{1,3})", escape, s)
-
-def test():
-    for i in range(256):
-        c = chr(i)
-        s = repr(c)
-        e = evalString(s)
-        if e != c:
-            print i, c, s, e
-
-
-if __name__ == "__main__":
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/parse.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/parse.py
deleted file mode 100644
index fb372cd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/parse.py
+++ /dev/null
@@ -1,201 +0,0 @@
-# Copyright 2004-2005 Elemental Security, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Parser engine for the grammar tables generated by pgen.
-
-The grammar table must be loaded first.
-
-See Parser/parser.c in the Python distribution for additional info on
-how this parsing engine works.
-
-"""
-
-# Local imports
-from . import token
-
-class ParseError(Exception):
-    """Exception to signal the parser is stuck."""
-
-    def __init__(self, msg, type, value, context):
-        Exception.__init__(self, "%s: type=%r, value=%r, context=%r" %
-                           (msg, type, value, context))
-        self.msg = msg
-        self.type = type
-        self.value = value
-        self.context = context
-
-class Parser(object):
-    """Parser engine.
-
-    The proper usage sequence is:
-
-    p = Parser(grammar, [converter])  # create instance
-    p.setup([start])                  # prepare for parsing
-    <for each input token>:
-        if p.addtoken(...):           # parse a token; may raise ParseError
-            break
-    root = p.rootnode                 # root of abstract syntax tree
-
-    A Parser instance may be reused by calling setup() repeatedly.
-
-    A Parser instance contains state pertaining to the current token
-    sequence, and should not be used concurrently by different threads
-    to parse separate token sequences.
-
-    See driver.py for how to get input tokens by tokenizing a file or
-    string.
-
-    Parsing is complete when addtoken() returns True; the root of the
-    abstract syntax tree can then be retrieved from the rootnode
-    instance variable.  When a syntax error occurs, addtoken() raises
-    the ParseError exception.  There is no error recovery; the parser
-    cannot be used after a syntax error was reported (but it can be
-    reinitialized by calling setup()).
-
-    """
-
-    def __init__(self, grammar, convert=None):
-        """Constructor.
-
-        The grammar argument is a grammar.Grammar instance; see the
-        grammar module for more information.
-
-        The parser is not ready yet for parsing; you must call the
-        setup() method to get it started.
-
-        The optional convert argument is a function mapping concrete
-        syntax tree nodes to abstract syntax tree nodes.  If not
-        given, no conversion is done and the syntax tree produced is
-        the concrete syntax tree.  If given, it must be a function of
-        two arguments, the first being the grammar (a grammar.Grammar
-        instance), and the second being the concrete syntax tree node
-        to be converted.  The syntax tree is converted from the bottom
-        up.
-
-        A concrete syntax tree node is a (type, value, context, nodes)
-        tuple, where type is the node type (a token or symbol number),
-        value is None for symbols and a string for tokens, context is
-        None or an opaque value used for error reporting (typically a
-        (lineno, offset) pair), and nodes is a list of children for
-        symbols, and None for tokens.
-
-        An abstract syntax tree node may be anything; this is entirely
-        up to the converter function.
-
-        """
-        self.grammar = grammar
-        self.convert = convert or (lambda grammar, node: node)
-
-    def setup(self, start=None):
-        """Prepare for parsing.
-
-        This *must* be called before starting to parse.
-
-        The optional argument is an alternative start symbol; it
-        defaults to the grammar's start symbol.
-
-        You can use a Parser instance to parse any number of programs;
-        each time you call setup() the parser is reset to an initial
-        state determined by the (implicit or explicit) start symbol.
-
-        """
-        if start is None:
-            start = self.grammar.start
-        # Each stack entry is a tuple: (dfa, state, node).
-        # A node is a tuple: (type, value, context, children),
-        # where children is a list of nodes or None, and context may be None.
-        newnode = (start, None, None, [])
-        stackentry = (self.grammar.dfas[start], 0, newnode)
-        self.stack = [stackentry]
-        self.rootnode = None
-        self.used_names = set() # Aliased to self.rootnode.used_names in pop()
-
-    def addtoken(self, type, value, context):
-        """Add a token; return True iff this is the end of the program."""
-        # Map from token to label
-        ilabel = self.classify(type, value, context)
-        # Loop until the token is shifted; may raise exceptions
-        while True:
-            dfa, state, node = self.stack[-1]
-            states, first = dfa
-            arcs = states[state]
-            # Look for a state with this label
-            for i, newstate in arcs:
-                t, v = self.grammar.labels[i]
-                if ilabel == i:
-                    # Look it up in the list of labels
-                    assert t < 256
-                    # Shift a token; we're done with it
-                    self.shift(type, value, newstate, context)
-                    # Pop while we are in an accept-only state
-                    state = newstate
-                    while states[state] == [(0, state)]:
-                        self.pop()
-                        if not self.stack:
-                            # Done parsing!
-                            return True
-                        dfa, state, node = self.stack[-1]
-                        states, first = dfa
-                    # Done with this token
-                    return False
-                elif t >= 256:
-                    # See if it's a symbol and if we're in its first set
-                    itsdfa = self.grammar.dfas[t]
-                    itsstates, itsfirst = itsdfa
-                    if ilabel in itsfirst:
-                        # Push a symbol
-                        self.push(t, self.grammar.dfas[t], newstate, context)
-                        break # To continue the outer while loop
-            else:
-                if (0, state) in arcs:
-                    # An accepting state, pop it and try something else
-                    self.pop()
-                    if not self.stack:
-                        # Done parsing, but another token is input
-                        raise ParseError("too much input",
-                                         type, value, context)
-                else:
-                    # No success finding a transition
-                    raise ParseError("bad input", type, value, context)
-
-    def classify(self, type, value, context):
-        """Turn a token into a label.  (Internal)"""
-        if type == token.NAME:
-            # Keep a listing of all used names
-            self.used_names.add(value)
-            # Check for reserved words
-            ilabel = self.grammar.keywords.get(value)
-            if ilabel is not None:
-                return ilabel
-        ilabel = self.grammar.tokens.get(type)
-        if ilabel is None:
-            raise ParseError("bad token", type, value, context)
-        return ilabel
-
-    def shift(self, type, value, newstate, context):
-        """Shift a token.  (Internal)"""
-        dfa, state, node = self.stack[-1]
-        newnode = (type, value, context, None)
-        newnode = self.convert(self.grammar, newnode)
-        if newnode is not None:
-            node[-1].append(newnode)
-        self.stack[-1] = (dfa, newstate, node)
-
-    def push(self, type, newdfa, newstate, context):
-        """Push a nonterminal.  (Internal)"""
-        dfa, state, node = self.stack[-1]
-        newnode = (type, None, context, [])
-        self.stack[-1] = (dfa, newstate, node)
-        self.stack.append((newdfa, 0, newnode))
-
-    def pop(self):
-        """Pop a nonterminal.  (Internal)"""
-        popdfa, popstate, popnode = self.stack.pop()
-        newnode = self.convert(self.grammar, popnode)
-        if newnode is not None:
-            if self.stack:
-                dfa, state, node = self.stack[-1]
-                node[-1].append(newnode)
-            else:
-                self.rootnode = newnode
-                self.rootnode.used_names = self.used_names
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/pgen.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/pgen.py
deleted file mode 100644
index 27644eb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/pgen.py
+++ /dev/null
@@ -1,386 +0,0 @@
-# Copyright 2004-2005 Elemental Security, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-# Pgen imports
-from . import grammar, token, tokenize
-
-class PgenGrammar(grammar.Grammar):
-    pass
-
-class ParserGenerator(object):
-
-    def __init__(self, filename, stream=None):
-        close_stream = None
-        if stream is None:
-            stream = open(filename)
-            close_stream = stream.close
-        self.filename = filename
-        self.stream = stream
-        self.generator = tokenize.generate_tokens(stream.readline)
-        self.gettoken() # Initialize lookahead
-        self.dfas, self.startsymbol = self.parse()
-        if close_stream is not None:
-            close_stream()
-        self.first = {} # map from symbol name to set of tokens
-        self.addfirstsets()
-
-    def make_grammar(self):
-        c = PgenGrammar()
-        names = self.dfas.keys()
-        names.sort()
-        names.remove(self.startsymbol)
-        names.insert(0, self.startsymbol)
-        for name in names:
-            i = 256 + len(c.symbol2number)
-            c.symbol2number[name] = i
-            c.number2symbol[i] = name
-        for name in names:
-            dfa = self.dfas[name]
-            states = []
-            for state in dfa:
-                arcs = []
-                for label, next in state.arcs.iteritems():
-                    arcs.append((self.make_label(c, label), dfa.index(next)))
-                if state.isfinal:
-                    arcs.append((0, dfa.index(state)))
-                states.append(arcs)
-            c.states.append(states)
-            c.dfas[c.symbol2number[name]] = (states, self.make_first(c, name))
-        c.start = c.symbol2number[self.startsymbol]
-        return c
-
-    def make_first(self, c, name):
-        rawfirst = self.first[name]
-        first = {}
-        for label in rawfirst:
-            ilabel = self.make_label(c, label)
-            ##assert ilabel not in first # XXX failed on <> ... !=
-            first[ilabel] = 1
-        return first
-
-    def make_label(self, c, label):
-        # XXX Maybe this should be a method on a subclass of converter?
-        ilabel = len(c.labels)
-        if label[0].isalpha():
-            # Either a symbol name or a named token
-            if label in c.symbol2number:
-                # A symbol name (a non-terminal)
-                if label in c.symbol2label:
-                    return c.symbol2label[label]
-                else:
-                    c.labels.append((c.symbol2number[label], None))
-                    c.symbol2label[label] = ilabel
-                    return ilabel
-            else:
-                # A named token (NAME, NUMBER, STRING)
-                itoken = getattr(token, label, None)
-                assert isinstance(itoken, int), label
-                assert itoken in token.tok_name, label
-                if itoken in c.tokens:
-                    return c.tokens[itoken]
-                else:
-                    c.labels.append((itoken, None))
-                    c.tokens[itoken] = ilabel
-                    return ilabel
-        else:
-            # Either a keyword or an operator
-            assert label[0] in ('"', "'"), label
-            value = eval(label)
-            if value[0].isalpha():
-                # A keyword
-                if value in c.keywords:
-                    return c.keywords[value]
-                else:
-                    c.labels.append((token.NAME, value))
-                    c.keywords[value] = ilabel
-                    return ilabel
-            else:
-                # An operator (any non-numeric token)
-                itoken = grammar.opmap[value] # Fails if unknown token
-                if itoken in c.tokens:
-                    return c.tokens[itoken]
-                else:
-                    c.labels.append((itoken, None))
-                    c.tokens[itoken] = ilabel
-                    return ilabel
-
-    def addfirstsets(self):
-        names = self.dfas.keys()
-        names.sort()
-        for name in names:
-            if name not in self.first:
-                self.calcfirst(name)
-            #print name, self.first[name].keys()
-
-    def calcfirst(self, name):
-        dfa = self.dfas[name]
-        self.first[name] = None # dummy to detect left recursion
-        state = dfa[0]
-        totalset = {}
-        overlapcheck = {}
-        for label, next in state.arcs.iteritems():
-            if label in self.dfas:
-                if label in self.first:
-                    fset = self.first[label]
-                    if fset is None:
-                        raise ValueError("recursion for rule %r" % name)
-                else:
-                    self.calcfirst(label)
-                    fset = self.first[label]
-                totalset.update(fset)
-                overlapcheck[label] = fset
-            else:
-                totalset[label] = 1
-                overlapcheck[label] = {label: 1}
-        inverse = {}
-        for label, itsfirst in overlapcheck.iteritems():
-            for symbol in itsfirst:
-                if symbol in inverse:
-                    raise ValueError("rule %s is ambiguous; %s is in the"
-                                     " first sets of %s as well as %s" %
-                                     (name, symbol, label, inverse[symbol]))
-                inverse[symbol] = label
-        self.first[name] = totalset
-
-    def parse(self):
-        dfas = {}
-        startsymbol = None
-        # MSTART: (NEWLINE | RULE)* ENDMARKER
-        while self.type != token.ENDMARKER:
-            while self.type == token.NEWLINE:
-                self.gettoken()
-            # RULE: NAME ':' RHS NEWLINE
-            name = self.expect(token.NAME)
-            self.expect(token.OP, ":")
-            a, z = self.parse_rhs()
-            self.expect(token.NEWLINE)
-            #self.dump_nfa(name, a, z)
-            dfa = self.make_dfa(a, z)
-            #self.dump_dfa(name, dfa)
-            oldlen = len(dfa)
-            self.simplify_dfa(dfa)
-            newlen = len(dfa)
-            dfas[name] = dfa
-            #print name, oldlen, newlen
-            if startsymbol is None:
-                startsymbol = name
-        return dfas, startsymbol
-
-    def make_dfa(self, start, finish):
-        # To turn an NFA into a DFA, we define the states of the DFA
-        # to correspond to *sets* of states of the NFA.  Then do some
-        # state reduction.  Let's represent sets as dicts with 1 for
-        # values.
-        assert isinstance(start, NFAState)
-        assert isinstance(finish, NFAState)
-        def closure(state):
-            base = {}
-            addclosure(state, base)
-            return base
-        def addclosure(state, base):
-            assert isinstance(state, NFAState)
-            if state in base:
-                return
-            base[state] = 1
-            for label, next in state.arcs:
-                if label is None:
-                    addclosure(next, base)
-        states = [DFAState(closure(start), finish)]
-        for state in states: # NB states grows while we're iterating
-            arcs = {}
-            for nfastate in state.nfaset:
-                for label, next in nfastate.arcs:
-                    if label is not None:
-                        addclosure(next, arcs.setdefault(label, {}))
-            for label, nfaset in arcs.iteritems():
-                for st in states:
-                    if st.nfaset == nfaset:
-                        break
-                else:
-                    st = DFAState(nfaset, finish)
-                    states.append(st)
-                state.addarc(st, label)
-        return states # List of DFAState instances; first one is start
-
-    def dump_nfa(self, name, start, finish):
-        print "Dump of NFA for", name
-        todo = [start]
-        for i, state in enumerate(todo):
-            print "  State", i, state is finish and "(final)" or ""
-            for label, next in state.arcs:
-                if next in todo:
-                    j = todo.index(next)
-                else:
-                    j = len(todo)
-                    todo.append(next)
-                if label is None:
-                    print "    -> %d" % j
-                else:
-                    print "    %s -> %d" % (label, j)
-
-    def dump_dfa(self, name, dfa):
-        print "Dump of DFA for", name
-        for i, state in enumerate(dfa):
-            print "  State", i, state.isfinal and "(final)" or ""
-            for label, next in state.arcs.iteritems():
-                print "    %s -> %d" % (label, dfa.index(next))
-
-    def simplify_dfa(self, dfa):
-        # This is not theoretically optimal, but works well enough.
-        # Algorithm: repeatedly look for two states that have the same
-        # set of arcs (same labels pointing to the same nodes) and
-        # unify them, until things stop changing.
-
-        # dfa is a list of DFAState instances
-        changes = True
-        while changes:
-            changes = False
-            for i, state_i in enumerate(dfa):
-                for j in range(i+1, len(dfa)):
-                    state_j = dfa[j]
-                    if state_i == state_j:
-                        #print "  unify", i, j
-                        del dfa[j]
-                        for state in dfa:
-                            state.unifystate(state_j, state_i)
-                        changes = True
-                        break
-
-    def parse_rhs(self):
-        # RHS: ALT ('|' ALT)*
-        a, z = self.parse_alt()
-        if self.value != "|":
-            return a, z
-        else:
-            aa = NFAState()
-            zz = NFAState()
-            aa.addarc(a)
-            z.addarc(zz)
-            while self.value == "|":
-                self.gettoken()
-                a, z = self.parse_alt()
-                aa.addarc(a)
-                z.addarc(zz)
-            return aa, zz
-
-    def parse_alt(self):
-        # ALT: ITEM+
-        a, b = self.parse_item()
-        while (self.value in ("(", "[") or
-               self.type in (token.NAME, token.STRING)):
-            c, d = self.parse_item()
-            b.addarc(c)
-            b = d
-        return a, b
-
-    def parse_item(self):
-        # ITEM: '[' RHS ']' | ATOM ['+' | '*']
-        if self.value == "[":
-            self.gettoken()
-            a, z = self.parse_rhs()
-            self.expect(token.OP, "]")
-            a.addarc(z)
-            return a, z
-        else:
-            a, z = self.parse_atom()
-            value = self.value
-            if value not in ("+", "*"):
-                return a, z
-            self.gettoken()
-            z.addarc(a)
-            if value == "+":
-                return a, z
-            else:
-                return a, a
-
-    def parse_atom(self):
-        # ATOM: '(' RHS ')' | NAME | STRING
-        if self.value == "(":
-            self.gettoken()
-            a, z = self.parse_rhs()
-            self.expect(token.OP, ")")
-            return a, z
-        elif self.type in (token.NAME, token.STRING):
-            a = NFAState()
-            z = NFAState()
-            a.addarc(z, self.value)
-            self.gettoken()
-            return a, z
-        else:
-            self.raise_error("expected (...) or NAME or STRING, got %s/%s",
-                             self.type, self.value)
-
-    def expect(self, type, value=None):
-        if self.type != type or (value is not None and self.value != value):
-            self.raise_error("expected %s/%s, got %s/%s",
-                             type, value, self.type, self.value)
-        value = self.value
-        self.gettoken()
-        return value
-
-    def gettoken(self):
-        tup = self.generator.next()
-        while tup[0] in (tokenize.COMMENT, tokenize.NL):
-            tup = self.generator.next()
-        self.type, self.value, self.begin, self.end, self.line = tup
-        #print token.tok_name[self.type], repr(self.value)
-
-    def raise_error(self, msg, *args):
-        if args:
-            try:
-                msg = msg % args
-            except:
-                msg = " ".join([msg] + map(str, args))
-        raise SyntaxError(msg, (self.filename, self.end[0],
-                                self.end[1], self.line))
-
-class NFAState(object):
-
-    def __init__(self):
-        self.arcs = [] # list of (label, NFAState) pairs
-
-    def addarc(self, next, label=None):
-        assert label is None or isinstance(label, str)
-        assert isinstance(next, NFAState)
-        self.arcs.append((label, next))
-
-class DFAState(object):
-
-    def __init__(self, nfaset, final):
-        assert isinstance(nfaset, dict)
-        assert isinstance(iter(nfaset).next(), NFAState)
-        assert isinstance(final, NFAState)
-        self.nfaset = nfaset
-        self.isfinal = final in nfaset
-        self.arcs = {} # map from label to DFAState
-
-    def addarc(self, next, label):
-        assert isinstance(label, str)
-        assert label not in self.arcs
-        assert isinstance(next, DFAState)
-        self.arcs[label] = next
-
-    def unifystate(self, old, new):
-        for label, next in self.arcs.iteritems():
-            if next is old:
-                self.arcs[label] = new
-
-    def __eq__(self, other):
-        # Equality test -- ignore the nfaset instance variable
-        assert isinstance(other, DFAState)
-        if self.isfinal != other.isfinal:
-            return False
-        # Can't just return self.arcs == other.arcs, because that
-        # would invoke this method recursively, with cycles...
-        if len(self.arcs) != len(other.arcs):
-            return False
-        for label, next in self.arcs.iteritems():
-            if next is not other.arcs.get(label):
-                return False
-        return True
-
-    __hash__ = None # For Py3 compatibility.
-
-def generate_grammar(filename="Grammar.txt"):
-    p = ParserGenerator(filename)
-    return p.make_grammar()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/token.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/token.py
deleted file mode 100644
index 99b3ea4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/token.py
+++ /dev/null
@@ -1,82 +0,0 @@
-#! /usr/bin/env python
-
-"""Token constants (from "token.h")."""
-
-#  Taken from Python (r53757) and modified to include some tokens
-#   originally monkeypatched in by pgen2.tokenize
-
-#--start constants--
-ENDMARKER = 0
-NAME = 1
-NUMBER = 2
-STRING = 3
-NEWLINE = 4
-INDENT = 5
-DEDENT = 6
-LPAR = 7
-RPAR = 8
-LSQB = 9
-RSQB = 10
-COLON = 11
-COMMA = 12
-SEMI = 13
-PLUS = 14
-MINUS = 15
-STAR = 16
-SLASH = 17
-VBAR = 18
-AMPER = 19
-LESS = 20
-GREATER = 21
-EQUAL = 22
-DOT = 23
-PERCENT = 24
-BACKQUOTE = 25
-LBRACE = 26
-RBRACE = 27
-EQEQUAL = 28
-NOTEQUAL = 29
-LESSEQUAL = 30
-GREATEREQUAL = 31
-TILDE = 32
-CIRCUMFLEX = 33
-LEFTSHIFT = 34
-RIGHTSHIFT = 35
-DOUBLESTAR = 36
-PLUSEQUAL = 37
-MINEQUAL = 38
-STAREQUAL = 39
-SLASHEQUAL = 40
-PERCENTEQUAL = 41
-AMPEREQUAL = 42
-VBAREQUAL = 43
-CIRCUMFLEXEQUAL = 44
-LEFTSHIFTEQUAL = 45
-RIGHTSHIFTEQUAL = 46
-DOUBLESTAREQUAL = 47
-DOUBLESLASH = 48
-DOUBLESLASHEQUAL = 49
-AT = 50
-OP = 51
-COMMENT = 52
-NL = 53
-RARROW = 54
-ERRORTOKEN = 55
-N_TOKENS = 56
-NT_OFFSET = 256
-#--end constants--
-
-tok_name = {}
-for _name, _value in globals().items():
-    if type(_value) is type(0):
-        tok_name[_value] = _name
-
-
-def ISTERMINAL(x):
-    return x < NT_OFFSET
-
-def ISNONTERMINAL(x):
-    return x >= NT_OFFSET
-
-def ISEOF(x):
-    return x == ENDMARKER
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/tokenize.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/tokenize.py
deleted file mode 100644
index 5ac8f3a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pgen2/tokenize.py
+++ /dev/null
@@ -1,500 +0,0 @@
-# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation.
-# All rights reserved.
-
-"""Tokenization help for Python programs.
-
-generate_tokens(readline) is a generator that breaks a stream of
-text into Python tokens.  It accepts a readline-like method which is called
-repeatedly to get the next line of input (or "" for EOF).  It generates
-5-tuples with these members:
-
-    the token type (see token.py)
-    the token (a string)
-    the starting (row, column) indices of the token (a 2-tuple of ints)
-    the ending (row, column) indices of the token (a 2-tuple of ints)
-    the original line (string)
-
-It is designed to match the working of the Python tokenizer exactly, except
-that it produces COMMENT tokens for comments and gives type OP for all
-operators
-
-Older entry points
-    tokenize_loop(readline, tokeneater)
-    tokenize(readline, tokeneater=printtoken)
-are the same, except instead of generating tokens, tokeneater is a callback
-function to which the 5 fields described above are passed as 5 arguments,
-each time a new token is found."""
-
-__author__ = 'Ka-Ping Yee <ping@lfw.org>'
-__credits__ = \
-    'GvR, ESR, Tim Peters, Thomas Wouters, Fred Drake, Skip Montanaro'
-
-import string, re
-from codecs import BOM_UTF8, lookup
-from lib2to3.pgen2.token import *
-
-from . import token
-__all__ = [x for x in dir(token) if x[0] != '_'] + ["tokenize",
-           "generate_tokens", "untokenize"]
-del token
-
-try:
-    bytes
-except NameError:
-    # Support bytes type in Python <= 2.5, so 2to3 turns itself into
-    # valid Python 3 code.
-    bytes = str
-
-def group(*choices): return '(' + '|'.join(choices) + ')'
-def any(*choices): return group(*choices) + '*'
-def maybe(*choices): return group(*choices) + '?'
-
-Whitespace = r'[ \f\t]*'
-Comment = r'#[^\r\n]*'
-Ignore = Whitespace + any(r'\\\r?\n' + Whitespace) + maybe(Comment)
-Name = r'[a-zA-Z_]\w*'
-
-Binnumber = r'0[bB][01]*'
-Hexnumber = r'0[xX][\da-fA-F]*[lL]?'
-Octnumber = r'0[oO]?[0-7]*[lL]?'
-Decnumber = r'[1-9]\d*[lL]?'
-Intnumber = group(Binnumber, Hexnumber, Octnumber, Decnumber)
-Exponent = r'[eE][-+]?\d+'
-Pointfloat = group(r'\d+\.\d*', r'\.\d+') + maybe(Exponent)
-Expfloat = r'\d+' + Exponent
-Floatnumber = group(Pointfloat, Expfloat)
-Imagnumber = group(r'\d+[jJ]', Floatnumber + r'[jJ]')
-Number = group(Imagnumber, Floatnumber, Intnumber)
-
-# Tail end of ' string.
-Single = r"[^'\\]*(?:\\.[^'\\]*)*'"
-# Tail end of " string.
-Double = r'[^"\\]*(?:\\.[^"\\]*)*"'
-# Tail end of ''' string.
-Single3 = r"[^'\\]*(?:(?:\\.|'(?!''))[^'\\]*)*'''"
-# Tail end of """ string.
-Double3 = r'[^"\\]*(?:(?:\\.|"(?!""))[^"\\]*)*"""'
-Triple = group("[ubUB]?[rR]?'''", '[ubUB]?[rR]?"""')
-# Single-line ' or " string.
-String = group(r"[uU]?[rR]?'[^\n'\\]*(?:\\.[^\n'\\]*)*'",
-               r'[uU]?[rR]?"[^\n"\\]*(?:\\.[^\n"\\]*)*"')
-
-# Because of leftmost-then-longest match semantics, be sure to put the
-# longest operators first (e.g., if = came before ==, == would get
-# recognized as two instances of =).
-Operator = group(r"\*\*=?", r">>=?", r"<<=?", r"<>", r"!=",
-                 r"//=?", r"->",
-                 r"[+\-*/%&|^=<>]=?",
-                 r"~")
-
-Bracket = '[][(){}]'
-Special = group(r'\r?\n', r'[:;.,`@]')
-Funny = group(Operator, Bracket, Special)
-
-PlainToken = group(Number, Funny, String, Name)
-Token = Ignore + PlainToken
-
-# First (or only) line of ' or " string.
-ContStr = group(r"[uUbB]?[rR]?'[^\n'\\]*(?:\\.[^\n'\\]*)*" +
-                group("'", r'\\\r?\n'),
-                r'[uUbB]?[rR]?"[^\n"\\]*(?:\\.[^\n"\\]*)*' +
-                group('"', r'\\\r?\n'))
-PseudoExtras = group(r'\\\r?\n', Comment, Triple)
-PseudoToken = Whitespace + group(PseudoExtras, Number, Funny, ContStr, Name)
-
-tokenprog, pseudoprog, single3prog, double3prog = map(
-    re.compile, (Token, PseudoToken, Single3, Double3))
-endprogs = {"'": re.compile(Single), '"': re.compile(Double),
-            "'''": single3prog, '"""': double3prog,
-            "r'''": single3prog, 'r"""': double3prog,
-            "u'''": single3prog, 'u"""': double3prog,
-            "b'''": single3prog, 'b"""': double3prog,
-            "ur'''": single3prog, 'ur"""': double3prog,
-            "br'''": single3prog, 'br"""': double3prog,
-            "R'''": single3prog, 'R"""': double3prog,
-            "U'''": single3prog, 'U"""': double3prog,
-            "B'''": single3prog, 'B"""': double3prog,
-            "uR'''": single3prog, 'uR"""': double3prog,
-            "Ur'''": single3prog, 'Ur"""': double3prog,
-            "UR'''": single3prog, 'UR"""': double3prog,
-            "bR'''": single3prog, 'bR"""': double3prog,
-            "Br'''": single3prog, 'Br"""': double3prog,
-            "BR'''": single3prog, 'BR"""': double3prog,
-            'r': None, 'R': None,
-            'u': None, 'U': None,
-            'b': None, 'B': None}
-
-triple_quoted = {}
-for t in ("'''", '"""',
-          "r'''", 'r"""', "R'''", 'R"""',
-          "u'''", 'u"""', "U'''", 'U"""',
-          "b'''", 'b"""', "B'''", 'B"""',
-          "ur'''", 'ur"""', "Ur'''", 'Ur"""',
-          "uR'''", 'uR"""', "UR'''", 'UR"""',
-          "br'''", 'br"""', "Br'''", 'Br"""',
-          "bR'''", 'bR"""', "BR'''", 'BR"""',):
-    triple_quoted[t] = t
-single_quoted = {}
-for t in ("'", '"',
-          "r'", 'r"', "R'", 'R"',
-          "u'", 'u"', "U'", 'U"',
-          "b'", 'b"', "B'", 'B"',
-          "ur'", 'ur"', "Ur'", 'Ur"',
-          "uR'", 'uR"', "UR'", 'UR"',
-          "br'", 'br"', "Br'", 'Br"',
-          "bR'", 'bR"', "BR'", 'BR"', ):
-    single_quoted[t] = t
-
-tabsize = 8
-
-class TokenError(Exception): pass
-
-class StopTokenizing(Exception): pass
-
-def printtoken(type, token, start, end, line): # for testing
-    (srow, scol) = start
-    (erow, ecol) = end
-    print "%d,%d-%d,%d:\t%s\t%s" % \
-        (srow, scol, erow, ecol, tok_name[type], repr(token))
-
-def tokenize(readline, tokeneater=printtoken):
-    """
-    The tokenize() function accepts two parameters: one representing the
-    input stream, and one providing an output mechanism for tokenize().
-
-    The first parameter, readline, must be a callable object which provides
-    the same interface as the readline() method of built-in file objects.
-    Each call to the function should return one line of input as a string.
-
-    The second parameter, tokeneater, must also be a callable object. It is
-    called once for each token, with five arguments, corresponding to the
-    tuples generated by generate_tokens().
-    """
-    try:
-        tokenize_loop(readline, tokeneater)
-    except StopTokenizing:
-        pass
-
-# backwards compatible interface
-def tokenize_loop(readline, tokeneater):
-    for token_info in generate_tokens(readline):
-        tokeneater(*token_info)
-
-class Untokenizer:
-
-    def __init__(self):
-        self.tokens = []
-        self.prev_row = 1
-        self.prev_col = 0
-
-    def add_whitespace(self, start):
-        row, col = start
-        assert row <= self.prev_row
-        col_offset = col - self.prev_col
-        if col_offset:
-            self.tokens.append(" " * col_offset)
-
-    def untokenize(self, iterable):
-        for t in iterable:
-            if len(t) == 2:
-                self.compat(t, iterable)
-                break
-            tok_type, token, start, end, line = t
-            self.add_whitespace(start)
-            self.tokens.append(token)
-            self.prev_row, self.prev_col = end
-            if tok_type in (NEWLINE, NL):
-                self.prev_row += 1
-                self.prev_col = 0
-        return "".join(self.tokens)
-
-    def compat(self, token, iterable):
-        startline = False
-        indents = []
-        toks_append = self.tokens.append
-        toknum, tokval = token
-        if toknum in (NAME, NUMBER):
-            tokval += ' '
-        if toknum in (NEWLINE, NL):
-            startline = True
-        for tok in iterable:
-            toknum, tokval = tok[:2]
-
-            if toknum in (NAME, NUMBER):
-                tokval += ' '
-
-            if toknum == INDENT:
-                indents.append(tokval)
-                continue
-            elif toknum == DEDENT:
-                indents.pop()
-                continue
-            elif toknum in (NEWLINE, NL):
-                startline = True
-            elif startline and indents:
-                toks_append(indents[-1])
-                startline = False
-            toks_append(tokval)
-
-cookie_re = re.compile("coding[:=]\s*([-\w.]+)")
-
-def _get_normal_name(orig_enc):
-    """Imitates get_normal_name in tokenizer.c."""
-    # Only care about the first 12 characters.
-    enc = orig_enc[:12].lower().replace("_", "-")
-    if enc == "utf-8" or enc.startswith("utf-8-"):
-        return "utf-8"
-    if enc in ("latin-1", "iso-8859-1", "iso-latin-1") or \
-       enc.startswith(("latin-1-", "iso-8859-1-", "iso-latin-1-")):
-        return "iso-8859-1"
-    return orig_enc
-
-def detect_encoding(readline):
-    """
-    The detect_encoding() function is used to detect the encoding that should
-    be used to decode a Python source file. It requires one argment, readline,
-    in the same way as the tokenize() generator.
-
-    It will call readline a maximum of twice, and return the encoding used
-    (as a string) and a list of any lines (left as bytes) it has read
-    in.
-
-    It detects the encoding from the presence of a utf-8 bom or an encoding
-    cookie as specified in pep-0263. If both a bom and a cookie are present, but
-    disagree, a SyntaxError will be raised. If the encoding cookie is an invalid
-    charset, raise a SyntaxError.  Note that if a utf-8 bom is found,
-    'utf-8-sig' is returned.
-
-    If no encoding is specified, then the default of 'utf-8' will be returned.
-    """
-    bom_found = False
-    encoding = None
-    default = 'utf-8'
-    def read_or_stop():
-        try:
-            return readline()
-        except StopIteration:
-            return bytes()
-
-    def find_cookie(line):
-        try:
-            line_string = line.decode('ascii')
-        except UnicodeDecodeError:
-            return None
-
-        matches = cookie_re.findall(line_string)
-        if not matches:
-            return None
-        encoding = _get_normal_name(matches[0])
-        try:
-            codec = lookup(encoding)
-        except LookupError:
-            # This behaviour mimics the Python interpreter
-            raise SyntaxError("unknown encoding: " + encoding)
-
-        if bom_found:
-            if codec.name != 'utf-8':
-                # This behaviour mimics the Python interpreter
-                raise SyntaxError('encoding problem: utf-8')
-            encoding += '-sig'
-        return encoding
-
-    first = read_or_stop()
-    if first.startswith(BOM_UTF8):
-        bom_found = True
-        first = first[3:]
-        default = 'utf-8-sig'
-    if not first:
-        return default, []
-
-    encoding = find_cookie(first)
-    if encoding:
-        return encoding, [first]
-
-    second = read_or_stop()
-    if not second:
-        return default, [first]
-
-    encoding = find_cookie(second)
-    if encoding:
-        return encoding, [first, second]
-
-    return default, [first, second]
-
-def untokenize(iterable):
-    """Transform tokens back into Python source code.
-
-    Each element returned by the iterable must be a token sequence
-    with at least two elements, a token number and token value.  If
-    only two tokens are passed, the resulting output is poor.
-
-    Round-trip invariant for full input:
-        Untokenized source will match input source exactly
-
-    Round-trip invariant for limited intput:
-        # Output text will tokenize the back to the input
-        t1 = [tok[:2] for tok in generate_tokens(f.readline)]
-        newcode = untokenize(t1)
-        readline = iter(newcode.splitlines(1)).next
-        t2 = [tok[:2] for tokin generate_tokens(readline)]
-        assert t1 == t2
-    """
-    ut = Untokenizer()
-    return ut.untokenize(iterable)
-
-def generate_tokens(readline):
-    """
-    The generate_tokens() generator requires one argment, readline, which
-    must be a callable object which provides the same interface as the
-    readline() method of built-in file objects. Each call to the function
-    should return one line of input as a string.  Alternately, readline
-    can be a callable function terminating with StopIteration:
-        readline = open(myfile).next    # Example of alternate readline
-
-    The generator produces 5-tuples with these members: the token type; the
-    token string; a 2-tuple (srow, scol) of ints specifying the row and
-    column where the token begins in the source; a 2-tuple (erow, ecol) of
-    ints specifying the row and column where the token ends in the source;
-    and the line on which the token was found. The line passed is the
-    logical line; continuation lines are included.
-    """
-    lnum = parenlev = continued = 0
-    namechars, numchars = string.ascii_letters + '_', '0123456789'
-    contstr, needcont = '', 0
-    contline = None
-    indents = [0]
-
-    while 1:                                   # loop over lines in stream
-        try:
-            line = readline()
-        except StopIteration:
-            line = ''
-        lnum = lnum + 1
-        pos, max = 0, len(line)
-
-        if contstr:                            # continued string
-            if not line:
-                raise TokenError, ("EOF in multi-line string", strstart)
-            endmatch = endprog.match(line)
-            if endmatch:
-                pos = end = endmatch.end(0)
-                yield (STRING, contstr + line[:end],
-                       strstart, (lnum, end), contline + line)
-                contstr, needcont = '', 0
-                contline = None
-            elif needcont and line[-2:] != '\\\n' and line[-3:] != '\\\r\n':
-                yield (ERRORTOKEN, contstr + line,
-                           strstart, (lnum, len(line)), contline)
-                contstr = ''
-                contline = None
-                continue
-            else:
-                contstr = contstr + line
-                contline = contline + line
-                continue
-
-        elif parenlev == 0 and not continued:  # new statement
-            if not line: break
-            column = 0
-            while pos < max:                   # measure leading whitespace
-                if line[pos] == ' ': column = column + 1
-                elif line[pos] == '\t': column = (column//tabsize + 1)*tabsize
-                elif line[pos] == '\f': column = 0
-                else: break
-                pos = pos + 1
-            if pos == max: break
-
-            if line[pos] in '#\r\n':           # skip comments or blank lines
-                if line[pos] == '#':
-                    comment_token = line[pos:].rstrip('\r\n')
-                    nl_pos = pos + len(comment_token)
-                    yield (COMMENT, comment_token,
-                           (lnum, pos), (lnum, pos + len(comment_token)), line)
-                    yield (NL, line[nl_pos:],
-                           (lnum, nl_pos), (lnum, len(line)), line)
-                else:
-                    yield ((NL, COMMENT)[line[pos] == '#'], line[pos:],
-                           (lnum, pos), (lnum, len(line)), line)
-                continue
-
-            if column > indents[-1]:           # count indents or dedents
-                indents.append(column)
-                yield (INDENT, line[:pos], (lnum, 0), (lnum, pos), line)
-            while column < indents[-1]:
-                if column not in indents:
-                    raise IndentationError(
-                        "unindent does not match any outer indentation level",
-                        ("<tokenize>", lnum, pos, line))
-                indents = indents[:-1]
-                yield (DEDENT, '', (lnum, pos), (lnum, pos), line)
-
-        else:                                  # continued statement
-            if not line:
-                raise TokenError, ("EOF in multi-line statement", (lnum, 0))
-            continued = 0
-
-        while pos < max:
-            pseudomatch = pseudoprog.match(line, pos)
-            if pseudomatch:                                # scan for tokens
-                start, end = pseudomatch.span(1)
-                spos, epos, pos = (lnum, start), (lnum, end), end
-                token, initial = line[start:end], line[start]
-
-                if initial in numchars or \
-                   (initial == '.' and token != '.'):      # ordinary number
-                    yield (NUMBER, token, spos, epos, line)
-                elif initial in '\r\n':
-                    newline = NEWLINE
-                    if parenlev > 0:
-                        newline = NL
-                    yield (newline, token, spos, epos, line)
-                elif initial == '#':
-                    assert not token.endswith("\n")
-                    yield (COMMENT, token, spos, epos, line)
-                elif token in triple_quoted:
-                    endprog = endprogs[token]
-                    endmatch = endprog.match(line, pos)
-                    if endmatch:                           # all on one line
-                        pos = endmatch.end(0)
-                        token = line[start:pos]
-                        yield (STRING, token, spos, (lnum, pos), line)
-                    else:
-                        strstart = (lnum, start)           # multiple lines
-                        contstr = line[start:]
-                        contline = line
-                        break
-                elif initial in single_quoted or \
-                    token[:2] in single_quoted or \
-                    token[:3] in single_quoted:
-                    if token[-1] == '\n':                  # continued string
-                        strstart = (lnum, start)
-                        endprog = (endprogs[initial] or endprogs[token[1]] or
-                                   endprogs[token[2]])
-                        contstr, needcont = line[start:], 1
-                        contline = line
-                        break
-                    else:                                  # ordinary string
-                        yield (STRING, token, spos, epos, line)
-                elif initial in namechars:                 # ordinary name
-                    yield (NAME, token, spos, epos, line)
-                elif initial == '\\':                      # continued stmt
-                    # This yield is new; needed for better idempotency:
-                    yield (NL, token, spos, (lnum, pos), line)
-                    continued = 1
-                else:
-                    if initial in '([{': parenlev = parenlev + 1
-                    elif initial in ')]}': parenlev = parenlev - 1
-                    yield (OP, token, spos, epos, line)
-            else:
-                yield (ERRORTOKEN, line[pos],
-                           (lnum, pos), (lnum, pos+1), line)
-                pos = pos + 1
-
-    for indent in indents[1:]:                 # pop remaining indent levels
-        yield (DEDENT, '', (lnum, 0), (lnum, 0), '')
-    yield (ENDMARKER, '', (lnum, 0), (lnum, 0), '')
-
-if __name__ == '__main__':                     # testing
-    import sys
-    if len(sys.argv) > 1: tokenize(open(sys.argv[1]).readline)
-    else: tokenize(sys.stdin.readline)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pygram.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pygram.py
deleted file mode 100644
index b8f82f6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pygram.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Export the Python grammar and symbols."""
-
-# Python imports
-import os
-
-# Local imports
-from .pgen2 import token
-from .pgen2 import driver
-from . import pytree
-
-# The grammar file
-_GRAMMAR_FILE = os.path.join(os.path.dirname(__file__), "Grammar.txt")
-_PATTERN_GRAMMAR_FILE = os.path.join(os.path.dirname(__file__),
-                                     "PatternGrammar.txt")
-
-
-class Symbols(object):
-
-    def __init__(self, grammar):
-        """Initializer.
-
-        Creates an attribute for each grammar symbol (nonterminal),
-        whose value is the symbol's type (an int >= 256).
-        """
-        for name, symbol in grammar.symbol2number.iteritems():
-            setattr(self, name, symbol)
-
-
-python_grammar = driver.load_grammar(_GRAMMAR_FILE)
-
-python_symbols = Symbols(python_grammar)
-
-python_grammar_no_print_statement = python_grammar.copy()
-del python_grammar_no_print_statement.keywords["print"]
-
-pattern_grammar = driver.load_grammar(_PATTERN_GRAMMAR_FILE)
-pattern_symbols = Symbols(pattern_grammar)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pytree.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pytree.py
deleted file mode 100644
index 12261df..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/pytree.py
+++ /dev/null
@@ -1,887 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""
-Python parse tree definitions.
-
-This is a very concrete parse tree; we need to keep every token and
-even the comments and whitespace between tokens.
-
-There's also a pattern matching implementation here.
-"""
-
-__author__ = "Guido van Rossum <guido@python.org>"
-
-import sys
-import warnings
-from StringIO import StringIO
-
-HUGE = 0x7FFFFFFF  # maximum repeat count, default max
-
-_type_reprs = {}
-def type_repr(type_num):
-    global _type_reprs
-    if not _type_reprs:
-        from .pygram import python_symbols
-        # printing tokens is possible but not as useful
-        # from .pgen2 import token // token.__dict__.items():
-        for name, val in python_symbols.__dict__.items():
-            if type(val) == int: _type_reprs[val] = name
-    return _type_reprs.setdefault(type_num, type_num)
-
-class Base(object):
-
-    """
-    Abstract base class for Node and Leaf.
-
-    This provides some default functionality and boilerplate using the
-    template pattern.
-
-    A node may be a subnode of at most one parent.
-    """
-
-    # Default values for instance variables
-    type = None    # int: token number (< 256) or symbol number (>= 256)
-    parent = None  # Parent node pointer, or None
-    children = ()  # Tuple of subnodes
-    was_changed = False
-    was_checked = False
-
-    def __new__(cls, *args, **kwds):
-        """Constructor that prevents Base from being instantiated."""
-        assert cls is not Base, "Cannot instantiate Base"
-        return object.__new__(cls)
-
-    def __eq__(self, other):
-        """
-        Compare two nodes for equality.
-
-        This calls the method _eq().
-        """
-        if self.__class__ is not other.__class__:
-            return NotImplemented
-        return self._eq(other)
-
-    __hash__ = None # For Py3 compatibility.
-
-    def __ne__(self, other):
-        """
-        Compare two nodes for inequality.
-
-        This calls the method _eq().
-        """
-        if self.__class__ is not other.__class__:
-            return NotImplemented
-        return not self._eq(other)
-
-    def _eq(self, other):
-        """
-        Compare two nodes for equality.
-
-        This is called by __eq__ and __ne__.  It is only called if the two nodes
-        have the same type.  This must be implemented by the concrete subclass.
-        Nodes should be considered equal if they have the same structure,
-        ignoring the prefix string and other context information.
-        """
-        raise NotImplementedError
-
-    def clone(self):
-        """
-        Return a cloned (deep) copy of self.
-
-        This must be implemented by the concrete subclass.
-        """
-        raise NotImplementedError
-
-    def post_order(self):
-        """
-        Return a post-order iterator for the tree.
-
-        This must be implemented by the concrete subclass.
-        """
-        raise NotImplementedError
-
-    def pre_order(self):
-        """
-        Return a pre-order iterator for the tree.
-
-        This must be implemented by the concrete subclass.
-        """
-        raise NotImplementedError
-
-    def set_prefix(self, prefix):
-        """
-        Set the prefix for the node (see Leaf class).
-
-        DEPRECATED; use the prefix property directly.
-        """
-        warnings.warn("set_prefix() is deprecated; use the prefix property",
-                      DeprecationWarning, stacklevel=2)
-        self.prefix = prefix
-
-    def get_prefix(self):
-        """
-        Return the prefix for the node (see Leaf class).
-
-        DEPRECATED; use the prefix property directly.
-        """
-        warnings.warn("get_prefix() is deprecated; use the prefix property",
-                      DeprecationWarning, stacklevel=2)
-        return self.prefix
-
-    def replace(self, new):
-        """Replace this node with a new one in the parent."""
-        assert self.parent is not None, str(self)
-        assert new is not None
-        if not isinstance(new, list):
-            new = [new]
-        l_children = []
-        found = False
-        for ch in self.parent.children:
-            if ch is self:
-                assert not found, (self.parent.children, self, new)
-                if new is not None:
-                    l_children.extend(new)
-                found = True
-            else:
-                l_children.append(ch)
-        assert found, (self.children, self, new)
-        self.parent.changed()
-        self.parent.children = l_children
-        for x in new:
-            x.parent = self.parent
-        self.parent = None
-
-    def get_lineno(self):
-        """Return the line number which generated the invocant node."""
-        node = self
-        while not isinstance(node, Leaf):
-            if not node.children:
-                return
-            node = node.children[0]
-        return node.lineno
-
-    def changed(self):
-        if self.parent:
-            self.parent.changed()
-        self.was_changed = True
-
-    def remove(self):
-        """
-        Remove the node from the tree. Returns the position of the node in its
-        parent's children before it was removed.
-        """
-        if self.parent:
-            for i, node in enumerate(self.parent.children):
-                if node is self:
-                    self.parent.changed()
-                    del self.parent.children[i]
-                    self.parent = None
-                    return i
-
-    @property
-    def next_sibling(self):
-        """
-        The node immediately following the invocant in their parent's children
-        list. If the invocant does not have a next sibling, it is None
-        """
-        if self.parent is None:
-            return None
-
-        # Can't use index(); we need to test by identity
-        for i, child in enumerate(self.parent.children):
-            if child is self:
-                try:
-                    return self.parent.children[i+1]
-                except IndexError:
-                    return None
-
-    @property
-    def prev_sibling(self):
-        """
-        The node immediately preceding the invocant in their parent's children
-        list. If the invocant does not have a previous sibling, it is None.
-        """
-        if self.parent is None:
-            return None
-
-        # Can't use index(); we need to test by identity
-        for i, child in enumerate(self.parent.children):
-            if child is self:
-                if i == 0:
-                    return None
-                return self.parent.children[i-1]
-
-    def leaves(self):
-        for child in self.children:
-            for x in child.leaves():
-                yield x
-
-    def depth(self):
-        if self.parent is None:
-            return 0
-        return 1 + self.parent.depth()
-
-    def get_suffix(self):
-        """
-        Return the string immediately following the invocant node. This is
-        effectively equivalent to node.next_sibling.prefix
-        """
-        next_sib = self.next_sibling
-        if next_sib is None:
-            return u""
-        return next_sib.prefix
-
-    if sys.version_info < (3, 0):
-        def __str__(self):
-            return unicode(self).encode("ascii")
-
-class Node(Base):
-
-    """Concrete implementation for interior nodes."""
-
-    def __init__(self,type, children,
-                 context=None,
-                 prefix=None,
-                 fixers_applied=None):
-        """
-        Initializer.
-
-        Takes a type constant (a symbol number >= 256), a sequence of
-        child nodes, and an optional context keyword argument.
-
-        As a side effect, the parent pointers of the children are updated.
-        """
-        assert type >= 256, type
-        self.type = type
-        self.children = list(children)
-        for ch in self.children:
-            assert ch.parent is None, repr(ch)
-            ch.parent = self
-        if prefix is not None:
-            self.prefix = prefix
-        if fixers_applied:
-            self.fixers_applied = fixers_applied[:]
-        else:
-            self.fixers_applied = None
-
-    def __repr__(self):
-        """Return a canonical string representation."""
-        return "%s(%s, %r)" % (self.__class__.__name__,
-                               type_repr(self.type),
-                               self.children)
-
-    def __unicode__(self):
-        """
-        Return a pretty string representation.
-
-        This reproduces the input source exactly.
-        """
-        return u"".join(map(unicode, self.children))
-
-    if sys.version_info > (3, 0):
-        __str__ = __unicode__
-
-    def _eq(self, other):
-        """Compare two nodes for equality."""
-        return (self.type, self.children) == (other.type, other.children)
-
-    def clone(self):
-        """Return a cloned (deep) copy of self."""
-        return Node(self.type, [ch.clone() for ch in self.children],
-                    fixers_applied=self.fixers_applied)
-
-    def post_order(self):
-        """Return a post-order iterator for the tree."""
-        for child in self.children:
-            for node in child.post_order():
-                yield node
-        yield self
-
-    def pre_order(self):
-        """Return a pre-order iterator for the tree."""
-        yield self
-        for child in self.children:
-            for node in child.pre_order():
-                yield node
-
-    def _prefix_getter(self):
-        """
-        The whitespace and comments preceding this node in the input.
-        """
-        if not self.children:
-            return ""
-        return self.children[0].prefix
-
-    def _prefix_setter(self, prefix):
-        if self.children:
-            self.children[0].prefix = prefix
-
-    prefix = property(_prefix_getter, _prefix_setter)
-
-    def set_child(self, i, child):
-        """
-        Equivalent to 'node.children[i] = child'. This method also sets the
-        child's parent attribute appropriately.
-        """
-        child.parent = self
-        self.children[i].parent = None
-        self.children[i] = child
-        self.changed()
-
-    def insert_child(self, i, child):
-        """
-        Equivalent to 'node.children.insert(i, child)'. This method also sets
-        the child's parent attribute appropriately.
-        """
-        child.parent = self
-        self.children.insert(i, child)
-        self.changed()
-
-    def append_child(self, child):
-        """
-        Equivalent to 'node.children.append(child)'. This method also sets the
-        child's parent attribute appropriately.
-        """
-        child.parent = self
-        self.children.append(child)
-        self.changed()
-
-
-class Leaf(Base):
-
-    """Concrete implementation for leaf nodes."""
-
-    # Default values for instance variables
-    _prefix = ""  # Whitespace and comments preceding this token in the input
-    lineno = 0    # Line where this token starts in the input
-    column = 0    # Column where this token tarts in the input
-
-    def __init__(self, type, value,
-                 context=None,
-                 prefix=None,
-                 fixers_applied=[]):
-        """
-        Initializer.
-
-        Takes a type constant (a token number < 256), a string value, and an
-        optional context keyword argument.
-        """
-        assert 0 <= type < 256, type
-        if context is not None:
-            self._prefix, (self.lineno, self.column) = context
-        self.type = type
-        self.value = value
-        if prefix is not None:
-            self._prefix = prefix
-        self.fixers_applied = fixers_applied[:]
-
-    def __repr__(self):
-        """Return a canonical string representation."""
-        return "%s(%r, %r)" % (self.__class__.__name__,
-                               self.type,
-                               self.value)
-
-    def __unicode__(self):
-        """
-        Return a pretty string representation.
-
-        This reproduces the input source exactly.
-        """
-        return self.prefix + unicode(self.value)
-
-    if sys.version_info > (3, 0):
-        __str__ = __unicode__
-
-    def _eq(self, other):
-        """Compare two nodes for equality."""
-        return (self.type, self.value) == (other.type, other.value)
-
-    def clone(self):
-        """Return a cloned (deep) copy of self."""
-        return Leaf(self.type, self.value,
-                    (self.prefix, (self.lineno, self.column)),
-                    fixers_applied=self.fixers_applied)
-
-    def leaves(self):
-        yield self
-
-    def post_order(self):
-        """Return a post-order iterator for the tree."""
-        yield self
-
-    def pre_order(self):
-        """Return a pre-order iterator for the tree."""
-        yield self
-
-    def _prefix_getter(self):
-        """
-        The whitespace and comments preceding this token in the input.
-        """
-        return self._prefix
-
-    def _prefix_setter(self, prefix):
-        self.changed()
-        self._prefix = prefix
-
-    prefix = property(_prefix_getter, _prefix_setter)
-
-def convert(gr, raw_node):
-    """
-    Convert raw node information to a Node or Leaf instance.
-
-    This is passed to the parser driver which calls it whenever a reduction of a
-    grammar rule produces a new complete node, so that the tree is build
-    strictly bottom-up.
-    """
-    type, value, context, children = raw_node
-    if children or type in gr.number2symbol:
-        # If there's exactly one child, return that child instead of
-        # creating a new node.
-        if len(children) == 1:
-            return children[0]
-        return Node(type, children, context=context)
-    else:
-        return Leaf(type, value, context=context)
-
-
-class BasePattern(object):
-
-    """
-    A pattern is a tree matching pattern.
-
-    It looks for a specific node type (token or symbol), and
-    optionally for a specific content.
-
-    This is an abstract base class.  There are three concrete
-    subclasses:
-
-    - LeafPattern matches a single leaf node;
-    - NodePattern matches a single node (usually non-leaf);
-    - WildcardPattern matches a sequence of nodes of variable length.
-    """
-
-    # Defaults for instance variables
-    type = None     # Node type (token if < 256, symbol if >= 256)
-    content = None  # Optional content matching pattern
-    name = None     # Optional name used to store match in results dict
-
-    def __new__(cls, *args, **kwds):
-        """Constructor that prevents BasePattern from being instantiated."""
-        assert cls is not BasePattern, "Cannot instantiate BasePattern"
-        return object.__new__(cls)
-
-    def __repr__(self):
-        args = [type_repr(self.type), self.content, self.name]
-        while args and args[-1] is None:
-            del args[-1]
-        return "%s(%s)" % (self.__class__.__name__, ", ".join(map(repr, args)))
-
-    def optimize(self):
-        """
-        A subclass can define this as a hook for optimizations.
-
-        Returns either self or another node with the same effect.
-        """
-        return self
-
-    def match(self, node, results=None):
-        """
-        Does this pattern exactly match a node?
-
-        Returns True if it matches, False if not.
-
-        If results is not None, it must be a dict which will be
-        updated with the nodes matching named subpatterns.
-
-        Default implementation for non-wildcard patterns.
-        """
-        if self.type is not None and node.type != self.type:
-            return False
-        if self.content is not None:
-            r = None
-            if results is not None:
-                r = {}
-            if not self._submatch(node, r):
-                return False
-            if r:
-                results.update(r)
-        if results is not None and self.name:
-            results[self.name] = node
-        return True
-
-    def match_seq(self, nodes, results=None):
-        """
-        Does this pattern exactly match a sequence of nodes?
-
-        Default implementation for non-wildcard patterns.
-        """
-        if len(nodes) != 1:
-            return False
-        return self.match(nodes[0], results)
-
-    def generate_matches(self, nodes):
-        """
-        Generator yielding all matches for this pattern.
-
-        Default implementation for non-wildcard patterns.
-        """
-        r = {}
-        if nodes and self.match(nodes[0], r):
-            yield 1, r
-
-
-class LeafPattern(BasePattern):
-
-    def __init__(self, type=None, content=None, name=None):
-        """
-        Initializer.  Takes optional type, content, and name.
-
-        The type, if given must be a token type (< 256).  If not given,
-        this matches any *leaf* node; the content may still be required.
-
-        The content, if given, must be a string.
-
-        If a name is given, the matching node is stored in the results
-        dict under that key.
-        """
-        if type is not None:
-            assert 0 <= type < 256, type
-        if content is not None:
-            assert isinstance(content, basestring), repr(content)
-        self.type = type
-        self.content = content
-        self.name = name
-
-    def match(self, node, results=None):
-        """Override match() to insist on a leaf node."""
-        if not isinstance(node, Leaf):
-            return False
-        return BasePattern.match(self, node, results)
-
-    def _submatch(self, node, results=None):
-        """
-        Match the pattern's content to the node's children.
-
-        This assumes the node type matches and self.content is not None.
-
-        Returns True if it matches, False if not.
-
-        If results is not None, it must be a dict which will be
-        updated with the nodes matching named subpatterns.
-
-        When returning False, the results dict may still be updated.
-        """
-        return self.content == node.value
-
-
-class NodePattern(BasePattern):
-
-    wildcards = False
-
-    def __init__(self, type=None, content=None, name=None):
-        """
-        Initializer.  Takes optional type, content, and name.
-
-        The type, if given, must be a symbol type (>= 256).  If the
-        type is None this matches *any* single node (leaf or not),
-        except if content is not None, in which it only matches
-        non-leaf nodes that also match the content pattern.
-
-        The content, if not None, must be a sequence of Patterns that
-        must match the node's children exactly.  If the content is
-        given, the type must not be None.
-
-        If a name is given, the matching node is stored in the results
-        dict under that key.
-        """
-        if type is not None:
-            assert type >= 256, type
-        if content is not None:
-            assert not isinstance(content, basestring), repr(content)
-            content = list(content)
-            for i, item in enumerate(content):
-                assert isinstance(item, BasePattern), (i, item)
-                if isinstance(item, WildcardPattern):
-                    self.wildcards = True
-        self.type = type
-        self.content = content
-        self.name = name
-
-    def _submatch(self, node, results=None):
-        """
-        Match the pattern's content to the node's children.
-
-        This assumes the node type matches and self.content is not None.
-
-        Returns True if it matches, False if not.
-
-        If results is not None, it must be a dict which will be
-        updated with the nodes matching named subpatterns.
-
-        When returning False, the results dict may still be updated.
-        """
-        if self.wildcards:
-            for c, r in generate_matches(self.content, node.children):
-                if c == len(node.children):
-                    if results is not None:
-                        results.update(r)
-                    return True
-            return False
-        if len(self.content) != len(node.children):
-            return False
-        for subpattern, child in zip(self.content, node.children):
-            if not subpattern.match(child, results):
-                return False
-        return True
-
-
-class WildcardPattern(BasePattern):
-
-    """
-    A wildcard pattern can match zero or more nodes.
-
-    This has all the flexibility needed to implement patterns like:
-
-    .*      .+      .?      .{m,n}
-    (a b c | d e | f)
-    (...)*  (...)+  (...)?  (...){m,n}
-
-    except it always uses non-greedy matching.
-    """
-
-    def __init__(self, content=None, min=0, max=HUGE, name=None):
-        """
-        Initializer.
-
-        Args:
-            content: optional sequence of subsequences of patterns;
-                     if absent, matches one node;
-                     if present, each subsequence is an alternative [*]
-            min: optional minimum number of times to match, default 0
-            max: optional maximum number of times to match, default HUGE
-            name: optional name assigned to this match
-
-        [*] Thus, if content is [[a, b, c], [d, e], [f, g, h]] this is
-            equivalent to (a b c | d e | f g h); if content is None,
-            this is equivalent to '.' in regular expression terms.
-            The min and max parameters work as follows:
-                min=0, max=maxint: .*
-                min=1, max=maxint: .+
-                min=0, max=1: .?
-                min=1, max=1: .
-            If content is not None, replace the dot with the parenthesized
-            list of alternatives, e.g. (a b c | d e | f g h)*
-        """
-        assert 0 <= min <= max <= HUGE, (min, max)
-        if content is not None:
-            content = tuple(map(tuple, content))  # Protect against alterations
-            # Check sanity of alternatives
-            assert len(content), repr(content)  # Can't have zero alternatives
-            for alt in content:
-                assert len(alt), repr(alt) # Can have empty alternatives
-        self.content = content
-        self.min = min
-        self.max = max
-        self.name = name
-
-    def optimize(self):
-        """Optimize certain stacked wildcard patterns."""
-        subpattern = None
-        if (self.content is not None and
-            len(self.content) == 1 and len(self.content[0]) == 1):
-            subpattern = self.content[0][0]
-        if self.min == 1 and self.max == 1:
-            if self.content is None:
-                return NodePattern(name=self.name)
-            if subpattern is not None and  self.name == subpattern.name:
-                return subpattern.optimize()
-        if (self.min <= 1 and isinstance(subpattern, WildcardPattern) and
-            subpattern.min <= 1 and self.name == subpattern.name):
-            return WildcardPattern(subpattern.content,
-                                   self.min*subpattern.min,
-                                   self.max*subpattern.max,
-                                   subpattern.name)
-        return self
-
-    def match(self, node, results=None):
-        """Does this pattern exactly match a node?"""
-        return self.match_seq([node], results)
-
-    def match_seq(self, nodes, results=None):
-        """Does this pattern exactly match a sequence of nodes?"""
-        for c, r in self.generate_matches(nodes):
-            if c == len(nodes):
-                if results is not None:
-                    results.update(r)
-                    if self.name:
-                        results[self.name] = list(nodes)
-                return True
-        return False
-
-    def generate_matches(self, nodes):
-        """
-        Generator yielding matches for a sequence of nodes.
-
-        Args:
-            nodes: sequence of nodes
-
-        Yields:
-            (count, results) tuples where:
-            count: the match comprises nodes[:count];
-            results: dict containing named submatches.
-        """
-        if self.content is None:
-            # Shortcut for special case (see __init__.__doc__)
-            for count in xrange(self.min, 1 + min(len(nodes), self.max)):
-                r = {}
-                if self.name:
-                    r[self.name] = nodes[:count]
-                yield count, r
-        elif self.name == "bare_name":
-            yield self._bare_name_matches(nodes)
-        else:
-            # The reason for this is that hitting the recursion limit usually
-            # results in some ugly messages about how RuntimeErrors are being
-            # ignored. We don't do this on non-CPython implementation because
-            # they don't have this problem.
-            if hasattr(sys, "getrefcount"):
-                save_stderr = sys.stderr
-                sys.stderr = StringIO()
-            try:
-                for count, r in self._recursive_matches(nodes, 0):
-                    if self.name:
-                        r[self.name] = nodes[:count]
-                    yield count, r
-            except RuntimeError:
-                # We fall back to the iterative pattern matching scheme if the recursive
-                # scheme hits the recursion limit.
-                for count, r in self._iterative_matches(nodes):
-                    if self.name:
-                        r[self.name] = nodes[:count]
-                    yield count, r
-            finally:
-                if hasattr(sys, "getrefcount"):
-                    sys.stderr = save_stderr
-
-    def _iterative_matches(self, nodes):
-        """Helper to iteratively yield the matches."""
-        nodelen = len(nodes)
-        if 0 >= self.min:
-            yield 0, {}
-
-        results = []
-        # generate matches that use just one alt from self.content
-        for alt in self.content:
-            for c, r in generate_matches(alt, nodes):
-                yield c, r
-                results.append((c, r))
-
-        # for each match, iterate down the nodes
-        while results:
-            new_results = []
-            for c0, r0 in results:
-                # stop if the entire set of nodes has been matched
-                if c0 < nodelen and c0 <= self.max:
-                    for alt in self.content:
-                        for c1, r1 in generate_matches(alt, nodes[c0:]):
-                            if c1 > 0:
-                                r = {}
-                                r.update(r0)
-                                r.update(r1)
-                                yield c0 + c1, r
-                                new_results.append((c0 + c1, r))
-            results = new_results
-
-    def _bare_name_matches(self, nodes):
-        """Special optimized matcher for bare_name."""
-        count = 0
-        r = {}
-        done = False
-        max = len(nodes)
-        while not done and count < max:
-            done = True
-            for leaf in self.content:
-                if leaf[0].match(nodes[count], r):
-                    count += 1
-                    done = False
-                    break
-        r[self.name] = nodes[:count]
-        return count, r
-
-    def _recursive_matches(self, nodes, count):
-        """Helper to recursively yield the matches."""
-        assert self.content is not None
-        if count >= self.min:
-            yield 0, {}
-        if count < self.max:
-            for alt in self.content:
-                for c0, r0 in generate_matches(alt, nodes):
-                    for c1, r1 in self._recursive_matches(nodes[c0:], count+1):
-                        r = {}
-                        r.update(r0)
-                        r.update(r1)
-                        yield c0 + c1, r
-
-
-class NegatedPattern(BasePattern):
-
-    def __init__(self, content=None):
-        """
-        Initializer.
-
-        The argument is either a pattern or None.  If it is None, this
-        only matches an empty sequence (effectively '$' in regex
-        lingo).  If it is not None, this matches whenever the argument
-        pattern doesn't have any matches.
-        """
-        if content is not None:
-            assert isinstance(content, BasePattern), repr(content)
-        self.content = content
-
-    def match(self, node):
-        # We never match a node in its entirety
-        return False
-
-    def match_seq(self, nodes):
-        # We only match an empty sequence of nodes in its entirety
-        return len(nodes) == 0
-
-    def generate_matches(self, nodes):
-        if self.content is None:
-            # Return a match if there is an empty sequence
-            if len(nodes) == 0:
-                yield 0, {}
-        else:
-            # Return a match if the argument pattern has no matches
-            for c, r in self.content.generate_matches(nodes):
-                return
-            yield 0, {}
-
-
-def generate_matches(patterns, nodes):
-    """
-    Generator yielding matches for a sequence of patterns and nodes.
-
-    Args:
-        patterns: a sequence of patterns
-        nodes: a sequence of nodes
-
-    Yields:
-        (count, results) tuples where:
-        count: the entire sequence of patterns matches nodes[:count];
-        results: dict containing named submatches.
-        """
-    if not patterns:
-        yield 0, {}
-    else:
-        p, rest = patterns[0], patterns[1:]
-        for c0, r0 in p.generate_matches(nodes):
-            if not rest:
-                yield c0, r0
-            else:
-                for c1, r1 in generate_matches(rest, nodes[c0:]):
-                    r = {}
-                    r.update(r0)
-                    r.update(r1)
-                    yield c0 + c1, r
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/refactor.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/refactor.py
deleted file mode 100644
index 97c4f5e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/refactor.py
+++ /dev/null
@@ -1,741 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Refactoring framework.
-
-Used as a main program, this can refactor any number of files and/or
-recursively descend down directories.  Imported as a module, this
-provides infrastructure to write your own refactoring tool.
-"""
-
-from __future__ import with_statement
-
-__author__ = "Guido van Rossum <guido@python.org>"
-
-
-# Python imports
-import os
-import sys
-import logging
-import operator
-import collections
-import StringIO
-from itertools import chain
-
-# Local imports
-from .pgen2 import driver, tokenize, token
-from .fixer_util import find_root
-from . import pytree, pygram
-from . import btm_utils as bu
-from . import btm_matcher as bm
-
-
-def get_all_fix_names(fixer_pkg, remove_prefix=True):
-    """Return a sorted list of all available fix names in the given package."""
-    pkg = __import__(fixer_pkg, [], [], ["*"])
-    fixer_dir = os.path.dirname(pkg.__file__)
-    fix_names = []
-    for name in sorted(os.listdir(fixer_dir)):
-        if name.startswith("fix_") and name.endswith(".py"):
-            if remove_prefix:
-                name = name[4:]
-            fix_names.append(name[:-3])
-    return fix_names
-
-
-class _EveryNode(Exception):
-    pass
-
-
-def _get_head_types(pat):
-    """ Accepts a pytree Pattern Node and returns a set
-        of the pattern types which will match first. """
-
-    if isinstance(pat, (pytree.NodePattern, pytree.LeafPattern)):
-        # NodePatters must either have no type and no content
-        #   or a type and content -- so they don't get any farther
-        # Always return leafs
-        if pat.type is None:
-            raise _EveryNode
-        return set([pat.type])
-
-    if isinstance(pat, pytree.NegatedPattern):
-        if pat.content:
-            return _get_head_types(pat.content)
-        raise _EveryNode # Negated Patterns don't have a type
-
-    if isinstance(pat, pytree.WildcardPattern):
-        # Recurse on each node in content
-        r = set()
-        for p in pat.content:
-            for x in p:
-                r.update(_get_head_types(x))
-        return r
-
-    raise Exception("Oh no! I don't understand pattern %s" %(pat))
-
-
-def _get_headnode_dict(fixer_list):
-    """ Accepts a list of fixers and returns a dictionary
-        of head node type --> fixer list.  """
-    head_nodes = collections.defaultdict(list)
-    every = []
-    for fixer in fixer_list:
-        if fixer.pattern:
-            try:
-                heads = _get_head_types(fixer.pattern)
-            except _EveryNode:
-                every.append(fixer)
-            else:
-                for node_type in heads:
-                    head_nodes[node_type].append(fixer)
-        else:
-            if fixer._accept_type is not None:
-                head_nodes[fixer._accept_type].append(fixer)
-            else:
-                every.append(fixer)
-    for node_type in chain(pygram.python_grammar.symbol2number.itervalues(),
-                           pygram.python_grammar.tokens):
-        head_nodes[node_type].extend(every)
-    return dict(head_nodes)
-
-
-def get_fixers_from_package(pkg_name):
-    """
-    Return the fully qualified names for fixers in the package pkg_name.
-    """
-    return [pkg_name + "." + fix_name
-            for fix_name in get_all_fix_names(pkg_name, False)]
-
-def _identity(obj):
-    return obj
-
-if sys.version_info < (3, 0):
-    import codecs
-    _open_with_encoding = codecs.open
-    # codecs.open doesn't translate newlines sadly.
-    def _from_system_newlines(input):
-        return input.replace(u"\r\n", u"\n")
-    def _to_system_newlines(input):
-        if os.linesep != "\n":
-            return input.replace(u"\n", os.linesep)
-        else:
-            return input
-else:
-    _open_with_encoding = open
-    _from_system_newlines = _identity
-    _to_system_newlines = _identity
-
-
-def _detect_future_features(source):
-    have_docstring = False
-    gen = tokenize.generate_tokens(StringIO.StringIO(source).readline)
-    def advance():
-        tok = gen.next()
-        return tok[0], tok[1]
-    ignore = frozenset((token.NEWLINE, tokenize.NL, token.COMMENT))
-    features = set()
-    try:
-        while True:
-            tp, value = advance()
-            if tp in ignore:
-                continue
-            elif tp == token.STRING:
-                if have_docstring:
-                    break
-                have_docstring = True
-            elif tp == token.NAME and value == u"from":
-                tp, value = advance()
-                if tp != token.NAME or value != u"__future__":
-                    break
-                tp, value = advance()
-                if tp != token.NAME or value != u"import":
-                    break
-                tp, value = advance()
-                if tp == token.OP and value == u"(":
-                    tp, value = advance()
-                while tp == token.NAME:
-                    features.add(value)
-                    tp, value = advance()
-                    if tp != token.OP or value != u",":
-                        break
-                    tp, value = advance()
-            else:
-                break
-    except StopIteration:
-        pass
-    return frozenset(features)
-
-
-class FixerError(Exception):
-    """A fixer could not be loaded."""
-
-
-class RefactoringTool(object):
-
-    _default_options = {"print_function" : False}
-
-    CLASS_PREFIX = "Fix" # The prefix for fixer classes
-    FILE_PREFIX = "fix_" # The prefix for modules with a fixer within
-
-    def __init__(self, fixer_names, options=None, explicit=None):
-        """Initializer.
-
-        Args:
-            fixer_names: a list of fixers to import
-            options: an dict with configuration.
-            explicit: a list of fixers to run even if they are explicit.
-        """
-        self.fixers = fixer_names
-        self.explicit = explicit or []
-        self.options = self._default_options.copy()
-        if options is not None:
-            self.options.update(options)
-        if self.options["print_function"]:
-            self.grammar = pygram.python_grammar_no_print_statement
-        else:
-            self.grammar = pygram.python_grammar
-        self.errors = []
-        self.logger = logging.getLogger("RefactoringTool")
-        self.fixer_log = []
-        self.wrote = False
-        self.driver = driver.Driver(self.grammar,
-                                    convert=pytree.convert,
-                                    logger=self.logger)
-        self.pre_order, self.post_order = self.get_fixers()
-
-
-        self.files = []  # List of files that were or should be modified
-
-        self.BM = bm.BottomMatcher()
-        self.bmi_pre_order = [] # Bottom Matcher incompatible fixers
-        self.bmi_post_order = []
-
-        for fixer in chain(self.post_order, self.pre_order):
-            if fixer.BM_compatible:
-                self.BM.add_fixer(fixer)
-                # remove fixers that will be handled by the bottom-up
-                # matcher
-            elif fixer in self.pre_order:
-                self.bmi_pre_order.append(fixer)
-            elif fixer in self.post_order:
-                self.bmi_post_order.append(fixer)
-
-        self.bmi_pre_order_heads = _get_headnode_dict(self.bmi_pre_order)
-        self.bmi_post_order_heads = _get_headnode_dict(self.bmi_post_order)
-
-
-
-    def get_fixers(self):
-        """Inspects the options to load the requested patterns and handlers.
-
-        Returns:
-          (pre_order, post_order), where pre_order is the list of fixers that
-          want a pre-order AST traversal, and post_order is the list that want
-          post-order traversal.
-        """
-        pre_order_fixers = []
-        post_order_fixers = []
-        for fix_mod_path in self.fixers:
-            mod = __import__(fix_mod_path, {}, {}, ["*"])
-            fix_name = fix_mod_path.rsplit(".", 1)[-1]
-            if fix_name.startswith(self.FILE_PREFIX):
-                fix_name = fix_name[len(self.FILE_PREFIX):]
-            parts = fix_name.split("_")
-            class_name = self.CLASS_PREFIX + "".join([p.title() for p in parts])
-            try:
-                fix_class = getattr(mod, class_name)
-            except AttributeError:
-                raise FixerError("Can't find %s.%s" % (fix_name, class_name))
-            fixer = fix_class(self.options, self.fixer_log)
-            if fixer.explicit and self.explicit is not True and \
-                    fix_mod_path not in self.explicit:
-                self.log_message("Skipping implicit fixer: %s", fix_name)
-                continue
-
-            self.log_debug("Adding transformation: %s", fix_name)
-            if fixer.order == "pre":
-                pre_order_fixers.append(fixer)
-            elif fixer.order == "post":
-                post_order_fixers.append(fixer)
-            else:
-                raise FixerError("Illegal fixer order: %r" % fixer.order)
-
-        key_func = operator.attrgetter("run_order")
-        pre_order_fixers.sort(key=key_func)
-        post_order_fixers.sort(key=key_func)
-        return (pre_order_fixers, post_order_fixers)
-
-    def log_error(self, msg, *args, **kwds):
-        """Called when an error occurs."""
-        raise
-
-    def log_message(self, msg, *args):
-        """Hook to log a message."""
-        if args:
-            msg = msg % args
-        self.logger.info(msg)
-
-    def log_debug(self, msg, *args):
-        if args:
-            msg = msg % args
-        self.logger.debug(msg)
-
-    def print_output(self, old_text, new_text, filename, equal):
-        """Called with the old version, new version, and filename of a
-        refactored file."""
-        pass
-
-    def refactor(self, items, write=False, doctests_only=False):
-        """Refactor a list of files and directories."""
-
-        for dir_or_file in items:
-            if os.path.isdir(dir_or_file):
-                self.refactor_dir(dir_or_file, write, doctests_only)
-            else:
-                self.refactor_file(dir_or_file, write, doctests_only)
-
-    def refactor_dir(self, dir_name, write=False, doctests_only=False):
-        """Descends down a directory and refactor every Python file found.
-
-        Python files are assumed to have a .py extension.
-
-        Files and subdirectories starting with '.' are skipped.
-        """
-        py_ext = os.extsep + "py"
-        for dirpath, dirnames, filenames in os.walk(dir_name):
-            self.log_debug("Descending into %s", dirpath)
-            dirnames.sort()
-            filenames.sort()
-            for name in filenames:
-                if (not name.startswith(".") and
-                    os.path.splitext(name)[1] == py_ext):
-                    fullname = os.path.join(dirpath, name)
-                    self.refactor_file(fullname, write, doctests_only)
-            # Modify dirnames in-place to remove subdirs with leading dots
-            dirnames[:] = [dn for dn in dirnames if not dn.startswith(".")]
-
-    def _read_python_source(self, filename):
-        """
-        Do our best to decode a Python source file correctly.
-        """
-        try:
-            f = open(filename, "rb")
-        except IOError as err:
-            self.log_error("Can't open %s: %s", filename, err)
-            return None, None
-        try:
-            encoding = tokenize.detect_encoding(f.readline)[0]
-        finally:
-            f.close()
-        with _open_with_encoding(filename, "r", encoding=encoding) as f:
-            return _from_system_newlines(f.read()), encoding
-
-    def refactor_file(self, filename, write=False, doctests_only=False):
-        """Refactors a file."""
-        input, encoding = self._read_python_source(filename)
-        if input is None:
-            # Reading the file failed.
-            return
-        input += u"\n" # Silence certain parse errors
-        if doctests_only:
-            self.log_debug("Refactoring doctests in %s", filename)
-            output = self.refactor_docstring(input, filename)
-            if output != input:
-                self.processed_file(output, filename, input, write, encoding)
-            else:
-                self.log_debug("No doctest changes in %s", filename)
-        else:
-            tree = self.refactor_string(input, filename)
-            if tree and tree.was_changed:
-                # The [:-1] is to take off the \n we added earlier
-                self.processed_file(unicode(tree)[:-1], filename,
-                                    write=write, encoding=encoding)
-            else:
-                self.log_debug("No changes in %s", filename)
-
-    def refactor_string(self, data, name):
-        """Refactor a given input string.
-
-        Args:
-            data: a string holding the code to be refactored.
-            name: a human-readable name for use in error/log messages.
-
-        Returns:
-            An AST corresponding to the refactored input stream; None if
-            there were errors during the parse.
-        """
-        features = _detect_future_features(data)
-        if "print_function" in features:
-            self.driver.grammar = pygram.python_grammar_no_print_statement
-        try:
-            tree = self.driver.parse_string(data)
-        except Exception as err:
-            self.log_error("Can't parse %s: %s: %s",
-                           name, err.__class__.__name__, err)
-            return
-        finally:
-            self.driver.grammar = self.grammar
-        tree.future_features = features
-        self.log_debug("Refactoring %s", name)
-        self.refactor_tree(tree, name)
-        return tree
-
-    def refactor_stdin(self, doctests_only=False):
-        input = sys.stdin.read()
-        if doctests_only:
-            self.log_debug("Refactoring doctests in stdin")
-            output = self.refactor_docstring(input, "<stdin>")
-            if output != input:
-                self.processed_file(output, "<stdin>", input)
-            else:
-                self.log_debug("No doctest changes in stdin")
-        else:
-            tree = self.refactor_string(input, "<stdin>")
-            if tree and tree.was_changed:
-                self.processed_file(unicode(tree), "<stdin>", input)
-            else:
-                self.log_debug("No changes in stdin")
-
-    def refactor_tree(self, tree, name):
-        """Refactors a parse tree (modifying the tree in place).
-
-        For compatible patterns the bottom matcher module is
-        used. Otherwise the tree is traversed node-to-node for
-        matches.
-
-        Args:
-            tree: a pytree.Node instance representing the root of the tree
-                  to be refactored.
-            name: a human-readable name for this tree.
-
-        Returns:
-            True if the tree was modified, False otherwise.
-        """
-
-        for fixer in chain(self.pre_order, self.post_order):
-            fixer.start_tree(tree, name)
-
-        #use traditional matching for the incompatible fixers
-        self.traverse_by(self.bmi_pre_order_heads, tree.pre_order())
-        self.traverse_by(self.bmi_post_order_heads, tree.post_order())
-
-        # obtain a set of candidate nodes
-        match_set = self.BM.run(tree.leaves())
-
-        while any(match_set.values()):
-            for fixer in self.BM.fixers:
-                if fixer in match_set and match_set[fixer]:
-                    #sort by depth; apply fixers from bottom(of the AST) to top
-                    match_set[fixer].sort(key=pytree.Base.depth, reverse=True)
-
-                    if fixer.keep_line_order:
-                        #some fixers(eg fix_imports) must be applied
-                        #with the original file's line order
-                        match_set[fixer].sort(key=pytree.Base.get_lineno)
-
-                    for node in list(match_set[fixer]):
-                        if node in match_set[fixer]:
-                            match_set[fixer].remove(node)
-
-                        try:
-                            find_root(node)
-                        except AssertionError:
-                            # this node has been cut off from a
-                            # previous transformation ; skip
-                            continue
-
-                        if node.fixers_applied and fixer in node.fixers_applied:
-                            # do not apply the same fixer again
-                            continue
-
-                        results = fixer.match(node)
-
-                        if results:
-                            new = fixer.transform(node, results)
-                            if new is not None:
-                                node.replace(new)
-                                #new.fixers_applied.append(fixer)
-                                for node in new.post_order():
-                                    # do not apply the fixer again to
-                                    # this or any subnode
-                                    if not node.fixers_applied:
-                                        node.fixers_applied = []
-                                    node.fixers_applied.append(fixer)
-
-                                # update the original match set for
-                                # the added code
-                                new_matches = self.BM.run(new.leaves())
-                                for fxr in new_matches:
-                                    if not fxr in match_set:
-                                        match_set[fxr]=[]
-
-                                    match_set[fxr].extend(new_matches[fxr])
-
-        for fixer in chain(self.pre_order, self.post_order):
-            fixer.finish_tree(tree, name)
-        return tree.was_changed
-
-    def traverse_by(self, fixers, traversal):
-        """Traverse an AST, applying a set of fixers to each node.
-
-        This is a helper method for refactor_tree().
-
-        Args:
-            fixers: a list of fixer instances.
-            traversal: a generator that yields AST nodes.
-
-        Returns:
-            None
-        """
-        if not fixers:
-            return
-        for node in traversal:
-            for fixer in fixers[node.type]:
-                results = fixer.match(node)
-                if results:
-                    new = fixer.transform(node, results)
-                    if new is not None:
-                        node.replace(new)
-                        node = new
-
-    def processed_file(self, new_text, filename, old_text=None, write=False,
-                       encoding=None):
-        """
-        Called when a file has been refactored, and there are changes.
-        """
-        self.files.append(filename)
-        if old_text is None:
-            old_text = self._read_python_source(filename)[0]
-            if old_text is None:
-                return
-        equal = old_text == new_text
-        self.print_output(old_text, new_text, filename, equal)
-        if equal:
-            self.log_debug("No changes to %s", filename)
-            return
-        if write:
-            self.write_file(new_text, filename, old_text, encoding)
-        else:
-            self.log_debug("Not writing changes to %s", filename)
-
-    def write_file(self, new_text, filename, old_text, encoding=None):
-        """Writes a string to a file.
-
-        It first shows a unified diff between the old text and the new text, and
-        then rewrites the file; the latter is only done if the write option is
-        set.
-        """
-        try:
-            f = _open_with_encoding(filename, "w", encoding=encoding)
-        except os.error as err:
-            self.log_error("Can't create %s: %s", filename, err)
-            return
-        try:
-            f.write(_to_system_newlines(new_text))
-        except os.error as err:
-            self.log_error("Can't write %s: %s", filename, err)
-        finally:
-            f.close()
-        self.log_debug("Wrote changes to %s", filename)
-        self.wrote = True
-
-    PS1 = ">>> "
-    PS2 = "... "
-
-    def refactor_docstring(self, input, filename):
-        """Refactors a docstring, looking for doctests.
-
-        This returns a modified version of the input string.  It looks
-        for doctests, which start with a ">>>" prompt, and may be
-        continued with "..." prompts, as long as the "..." is indented
-        the same as the ">>>".
-
-        (Unfortunately we can't use the doctest module's parser,
-        since, like most parsers, it is not geared towards preserving
-        the original source.)
-        """
-        result = []
-        block = None
-        block_lineno = None
-        indent = None
-        lineno = 0
-        for line in input.splitlines(True):
-            lineno += 1
-            if line.lstrip().startswith(self.PS1):
-                if block is not None:
-                    result.extend(self.refactor_doctest(block, block_lineno,
-                                                        indent, filename))
-                block_lineno = lineno
-                block = [line]
-                i = line.find(self.PS1)
-                indent = line[:i]
-            elif (indent is not None and
-                  (line.startswith(indent + self.PS2) or
-                   line == indent + self.PS2.rstrip() + u"\n")):
-                block.append(line)
-            else:
-                if block is not None:
-                    result.extend(self.refactor_doctest(block, block_lineno,
-                                                        indent, filename))
-                block = None
-                indent = None
-                result.append(line)
-        if block is not None:
-            result.extend(self.refactor_doctest(block, block_lineno,
-                                                indent, filename))
-        return u"".join(result)
-
-    def refactor_doctest(self, block, lineno, indent, filename):
-        """Refactors one doctest.
-
-        A doctest is given as a block of lines, the first of which starts
-        with ">>>" (possibly indented), while the remaining lines start
-        with "..." (identically indented).
-
-        """
-        try:
-            tree = self.parse_block(block, lineno, indent)
-        except Exception as err:
-            if self.logger.isEnabledFor(logging.DEBUG):
-                for line in block:
-                    self.log_debug("Source: %s", line.rstrip(u"\n"))
-            self.log_error("Can't parse docstring in %s line %s: %s: %s",
-                           filename, lineno, err.__class__.__name__, err)
-            return block
-        if self.refactor_tree(tree, filename):
-            new = unicode(tree).splitlines(True)
-            # Undo the adjustment of the line numbers in wrap_toks() below.
-            clipped, new = new[:lineno-1], new[lineno-1:]
-            assert clipped == [u"\n"] * (lineno-1), clipped
-            if not new[-1].endswith(u"\n"):
-                new[-1] += u"\n"
-            block = [indent + self.PS1 + new.pop(0)]
-            if new:
-                block += [indent + self.PS2 + line for line in new]
-        return block
-
-    def summarize(self):
-        if self.wrote:
-            were = "were"
-        else:
-            were = "need to be"
-        if not self.files:
-            self.log_message("No files %s modified.", were)
-        else:
-            self.log_message("Files that %s modified:", were)
-            for file in self.files:
-                self.log_message(file)
-        if self.fixer_log:
-            self.log_message("Warnings/messages while refactoring:")
-            for message in self.fixer_log:
-                self.log_message(message)
-        if self.errors:
-            if len(self.errors) == 1:
-                self.log_message("There was 1 error:")
-            else:
-                self.log_message("There were %d errors:", len(self.errors))
-            for msg, args, kwds in self.errors:
-                self.log_message(msg, *args, **kwds)
-
-    def parse_block(self, block, lineno, indent):
-        """Parses a block into a tree.
-
-        This is necessary to get correct line number / offset information
-        in the parser diagnostics and embedded into the parse tree.
-        """
-        tree = self.driver.parse_tokens(self.wrap_toks(block, lineno, indent))
-        tree.future_features = frozenset()
-        return tree
-
-    def wrap_toks(self, block, lineno, indent):
-        """Wraps a tokenize stream to systematically modify start/end."""
-        tokens = tokenize.generate_tokens(self.gen_lines(block, indent).next)
-        for type, value, (line0, col0), (line1, col1), line_text in tokens:
-            line0 += lineno - 1
-            line1 += lineno - 1
-            # Don't bother updating the columns; this is too complicated
-            # since line_text would also have to be updated and it would
-            # still break for tokens spanning lines.  Let the user guess
-            # that the column numbers for doctests are relative to the
-            # end of the prompt string (PS1 or PS2).
-            yield type, value, (line0, col0), (line1, col1), line_text
-
-
-    def gen_lines(self, block, indent):
-        """Generates lines as expected by tokenize from a list of lines.
-
-        This strips the first len(indent + self.PS1) characters off each line.
-        """
-        prefix1 = indent + self.PS1
-        prefix2 = indent + self.PS2
-        prefix = prefix1
-        for line in block:
-            if line.startswith(prefix):
-                yield line[len(prefix):]
-            elif line == prefix.rstrip() + u"\n":
-                yield u"\n"
-            else:
-                raise AssertionError("line=%r, prefix=%r" % (line, prefix))
-            prefix = prefix2
-        while True:
-            yield ""
-
-
-class MultiprocessingUnsupported(Exception):
-    pass
-
-
-class MultiprocessRefactoringTool(RefactoringTool):
-
-    def __init__(self, *args, **kwargs):
-        super(MultiprocessRefactoringTool, self).__init__(*args, **kwargs)
-        self.queue = None
-        self.output_lock = None
-
-    def refactor(self, items, write=False, doctests_only=False,
-                 num_processes=1):
-        if num_processes == 1:
-            return super(MultiprocessRefactoringTool, self).refactor(
-                items, write, doctests_only)
-        try:
-            import multiprocessing
-        except ImportError:
-            raise MultiprocessingUnsupported
-        if self.queue is not None:
-            raise RuntimeError("already doing multiple processes")
-        self.queue = multiprocessing.JoinableQueue()
-        self.output_lock = multiprocessing.Lock()
-        processes = [multiprocessing.Process(target=self._child)
-                     for i in xrange(num_processes)]
-        try:
-            for p in processes:
-                p.start()
-            super(MultiprocessRefactoringTool, self).refactor(items, write,
-                                                              doctests_only)
-        finally:
-            self.queue.join()
-            for i in xrange(num_processes):
-                self.queue.put(None)
-            for p in processes:
-                if p.is_alive():
-                    p.join()
-            self.queue = None
-
-    def _child(self):
-        task = self.queue.get()
-        while task is not None:
-            args, kwargs = task
-            try:
-                super(MultiprocessRefactoringTool, self).refactor_file(
-                    *args, **kwargs)
-            finally:
-                self.queue.task_done()
-            task = self.queue.get()
-
-    def refactor_file(self, *args, **kwargs):
-        if self.queue is not None:
-            self.queue.put((args, kwargs))
-        else:
-            return super(MultiprocessRefactoringTool, self).refactor_file(
-                *args, **kwargs)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/__init__.py
deleted file mode 100644
index 6275600..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/__init__.py
+++ /dev/null
@@ -1,24 +0,0 @@
-"""Make tests/ into a package. This allows us to "import tests" and
-have tests.all_tests be a TestSuite representing all test cases
-from all test_*.py files in tests/."""
-# Author: Collin Winter
-
-import os
-import os.path
-import unittest
-import types
-
-from . import support
-
-all_tests = unittest.TestSuite()
-
-tests_dir = os.path.join(os.path.dirname(__file__), '..', 'tests')
-tests = [t[0:-3] for t in os.listdir(tests_dir)
-                        if t.startswith('test_') and t.endswith('.py')]
-
-loader = unittest.TestLoader()
-
-for t in tests:
-    __import__("",globals(),locals(),[t],level=1)
-    mod = globals()[t]
-    all_tests.addTests(loader.loadTestsFromModule(mod))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/README b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/README
deleted file mode 100644
index 5c11dae..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/README
+++ /dev/null
@@ -1,6 +0,0 @@
-In this directory:
-- py2_test_grammar.py -- test file that exercises most/all of Python 2.x's grammar.
-- py3_test_grammar.py -- test file that exercises most/all of Python 3.x's grammar.
-- infinite_recursion.py -- test file that causes lib2to3's faster recursive pattern matching
-  scheme to fail, but passes when lib2to3 falls back to iterative pattern matching.
-- fixes/ -- for use by test_refactor.py
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/bom.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/bom.py
deleted file mode 100644
index 9bc3975..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/bom.py
+++ /dev/null
@@ -1,2 +0,0 @@
-# coding: utf-8
-print "BOM BOOM!"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/crlf.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/crlf.py
deleted file mode 100644
index a83ca8f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/crlf.py
+++ /dev/null
@@ -1,3 +0,0 @@
-print "hi"
-
-print "Like bad Windows newlines?"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/different_encoding.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/different_encoding.py
deleted file mode 100644
index 9f32bd0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/different_encoding.py
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-print u'ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ'
-
-def f(x):
-    print '%s\t->  α(%2i):%s  β(%s)'
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/bad_order.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/bad_order.py
deleted file mode 100644
index 5b4d0b5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/bad_order.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from lib2to3.fixer_base import BaseFix
-
-class FixBadOrder(BaseFix):
-
-    order = "crazy"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_explicit.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_explicit.py
deleted file mode 100644
index 06c3a97..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_explicit.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from lib2to3.fixer_base import BaseFix
-
-class FixExplicit(BaseFix):
-    explicit = True
-
-    def match(self): return False
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_first.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_first.py
deleted file mode 100644
index 84d545b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_first.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from lib2to3.fixer_base import BaseFix
-
-class FixFirst(BaseFix):
-    run_order = 1
-
-    def match(self, node): return False
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_last.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_last.py
deleted file mode 100644
index ddf8618..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_last.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from lib2to3.fixer_base import BaseFix
-
-class FixLast(BaseFix):
-
-    run_order = 10
-
-    def match(self, node): return False
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_parrot.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_parrot.py
deleted file mode 100644
index b6d7c20..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_parrot.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from lib2to3.fixer_base import BaseFix
-from lib2to3.fixer_util import Name
-
-class FixParrot(BaseFix):
-    """
-    Change functions named 'parrot' to 'cheese'.
-    """
-
-    PATTERN = """funcdef < 'def' name='parrot' any* >"""
-
-    def transform(self, node, results):
-        name = results["name"]
-        name.replace(Name("cheese", name.prefix))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_preorder.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_preorder.py
deleted file mode 100644
index 198c41f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/myfixes/fix_preorder.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from lib2to3.fixer_base import BaseFix
-
-class FixPreorder(BaseFix):
-    order = "pre"
-
-    def match(self, node): return False
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/no_fixer_cls.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/no_fixer_cls.py
deleted file mode 100644
index 3742803..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/no_fixer_cls.py
+++ /dev/null
@@ -1 +0,0 @@
-# This is empty so trying to fetch the fixer class gives an AttributeError
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/parrot_example.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/parrot_example.py
deleted file mode 100644
index 2ebdf89..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/fixers/parrot_example.py
+++ /dev/null
@@ -1,2 +0,0 @@
-def parrot():
-    pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/infinite_recursion.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/infinite_recursion.py
deleted file mode 100644
index 1fb6533..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/infinite_recursion.py
+++ /dev/null
@@ -1,2669 +0,0 @@
-# This file is used to verify that 2to3 falls back to a slower, iterative pattern matching
-# scheme in the event that the faster recursive system fails due to infinite recursion.
-from ctypes import *
-STRING = c_char_p
-
-
-OSUnknownByteOrder = 0
-UIT_PROMPT = 1
-P_PGID = 2
-P_PID = 1
-UIT_ERROR = 5
-UIT_INFO = 4
-UIT_NONE = 0
-P_ALL = 0
-UIT_VERIFY = 2
-OSBigEndian = 2
-UIT_BOOLEAN = 3
-OSLittleEndian = 1
-__darwin_nl_item = c_int
-__darwin_wctrans_t = c_int
-__darwin_wctype_t = c_ulong
-__int8_t = c_byte
-__uint8_t = c_ubyte
-__int16_t = c_short
-__uint16_t = c_ushort
-__int32_t = c_int
-__uint32_t = c_uint
-__int64_t = c_longlong
-__uint64_t = c_ulonglong
-__darwin_intptr_t = c_long
-__darwin_natural_t = c_uint
-__darwin_ct_rune_t = c_int
-class __mbstate_t(Union):
-    pass
-__mbstate_t._pack_ = 4
-__mbstate_t._fields_ = [
-    ('__mbstate8', c_char * 128),
-    ('_mbstateL', c_longlong),
-]
-assert sizeof(__mbstate_t) == 128, sizeof(__mbstate_t)
-assert alignment(__mbstate_t) == 4, alignment(__mbstate_t)
-__darwin_mbstate_t = __mbstate_t
-__darwin_ptrdiff_t = c_int
-__darwin_size_t = c_ulong
-__darwin_va_list = STRING
-__darwin_wchar_t = c_int
-__darwin_rune_t = __darwin_wchar_t
-__darwin_wint_t = c_int
-__darwin_clock_t = c_ulong
-__darwin_socklen_t = __uint32_t
-__darwin_ssize_t = c_long
-__darwin_time_t = c_long
-sig_atomic_t = c_int
-class sigcontext(Structure):
-    pass
-sigcontext._fields_ = [
-    ('sc_onstack', c_int),
-    ('sc_mask', c_int),
-    ('sc_eax', c_uint),
-    ('sc_ebx', c_uint),
-    ('sc_ecx', c_uint),
-    ('sc_edx', c_uint),
-    ('sc_edi', c_uint),
-    ('sc_esi', c_uint),
-    ('sc_ebp', c_uint),
-    ('sc_esp', c_uint),
-    ('sc_ss', c_uint),
-    ('sc_eflags', c_uint),
-    ('sc_eip', c_uint),
-    ('sc_cs', c_uint),
-    ('sc_ds', c_uint),
-    ('sc_es', c_uint),
-    ('sc_fs', c_uint),
-    ('sc_gs', c_uint),
-]
-assert sizeof(sigcontext) == 72, sizeof(sigcontext)
-assert alignment(sigcontext) == 4, alignment(sigcontext)
-u_int8_t = c_ubyte
-u_int16_t = c_ushort
-u_int32_t = c_uint
-u_int64_t = c_ulonglong
-int32_t = c_int
-register_t = int32_t
-user_addr_t = u_int64_t
-user_size_t = u_int64_t
-int64_t = c_longlong
-user_ssize_t = int64_t
-user_long_t = int64_t
-user_ulong_t = u_int64_t
-user_time_t = int64_t
-syscall_arg_t = u_int64_t
-
-# values for unnamed enumeration
-class aes_key_st(Structure):
-    pass
-aes_key_st._fields_ = [
-    ('rd_key', c_ulong * 60),
-    ('rounds', c_int),
-]
-assert sizeof(aes_key_st) == 244, sizeof(aes_key_st)
-assert alignment(aes_key_st) == 4, alignment(aes_key_st)
-AES_KEY = aes_key_st
-class asn1_ctx_st(Structure):
-    pass
-asn1_ctx_st._fields_ = [
-    ('p', POINTER(c_ubyte)),
-    ('eos', c_int),
-    ('error', c_int),
-    ('inf', c_int),
-    ('tag', c_int),
-    ('xclass', c_int),
-    ('slen', c_long),
-    ('max', POINTER(c_ubyte)),
-    ('q', POINTER(c_ubyte)),
-    ('pp', POINTER(POINTER(c_ubyte))),
-    ('line', c_int),
-]
-assert sizeof(asn1_ctx_st) == 44, sizeof(asn1_ctx_st)
-assert alignment(asn1_ctx_st) == 4, alignment(asn1_ctx_st)
-ASN1_CTX = asn1_ctx_st
-class asn1_object_st(Structure):
-    pass
-asn1_object_st._fields_ = [
-    ('sn', STRING),
-    ('ln', STRING),
-    ('nid', c_int),
-    ('length', c_int),
-    ('data', POINTER(c_ubyte)),
-    ('flags', c_int),
-]
-assert sizeof(asn1_object_st) == 24, sizeof(asn1_object_st)
-assert alignment(asn1_object_st) == 4, alignment(asn1_object_st)
-ASN1_OBJECT = asn1_object_st
-class asn1_string_st(Structure):
-    pass
-asn1_string_st._fields_ = [
-    ('length', c_int),
-    ('type', c_int),
-    ('data', POINTER(c_ubyte)),
-    ('flags', c_long),
-]
-assert sizeof(asn1_string_st) == 16, sizeof(asn1_string_st)
-assert alignment(asn1_string_st) == 4, alignment(asn1_string_st)
-ASN1_STRING = asn1_string_st
-class ASN1_ENCODING_st(Structure):
-    pass
-ASN1_ENCODING_st._fields_ = [
-    ('enc', POINTER(c_ubyte)),
-    ('len', c_long),
-    ('modified', c_int),
-]
-assert sizeof(ASN1_ENCODING_st) == 12, sizeof(ASN1_ENCODING_st)
-assert alignment(ASN1_ENCODING_st) == 4, alignment(ASN1_ENCODING_st)
-ASN1_ENCODING = ASN1_ENCODING_st
-class asn1_string_table_st(Structure):
-    pass
-asn1_string_table_st._fields_ = [
-    ('nid', c_int),
-    ('minsize', c_long),
-    ('maxsize', c_long),
-    ('mask', c_ulong),
-    ('flags', c_ulong),
-]
-assert sizeof(asn1_string_table_st) == 20, sizeof(asn1_string_table_st)
-assert alignment(asn1_string_table_st) == 4, alignment(asn1_string_table_st)
-ASN1_STRING_TABLE = asn1_string_table_st
-class ASN1_TEMPLATE_st(Structure):
-    pass
-ASN1_TEMPLATE_st._fields_ = [
-]
-ASN1_TEMPLATE = ASN1_TEMPLATE_st
-class ASN1_ITEM_st(Structure):
-    pass
-ASN1_ITEM = ASN1_ITEM_st
-ASN1_ITEM_st._fields_ = [
-]
-class ASN1_TLC_st(Structure):
-    pass
-ASN1_TLC = ASN1_TLC_st
-ASN1_TLC_st._fields_ = [
-]
-class ASN1_VALUE_st(Structure):
-    pass
-ASN1_VALUE_st._fields_ = [
-]
-ASN1_VALUE = ASN1_VALUE_st
-ASN1_ITEM_EXP = ASN1_ITEM
-class asn1_type_st(Structure):
-    pass
-class N12asn1_type_st4DOLLAR_11E(Union):
-    pass
-ASN1_BOOLEAN = c_int
-ASN1_INTEGER = asn1_string_st
-ASN1_ENUMERATED = asn1_string_st
-ASN1_BIT_STRING = asn1_string_st
-ASN1_OCTET_STRING = asn1_string_st
-ASN1_PRINTABLESTRING = asn1_string_st
-ASN1_T61STRING = asn1_string_st
-ASN1_IA5STRING = asn1_string_st
-ASN1_GENERALSTRING = asn1_string_st
-ASN1_BMPSTRING = asn1_string_st
-ASN1_UNIVERSALSTRING = asn1_string_st
-ASN1_UTCTIME = asn1_string_st
-ASN1_GENERALIZEDTIME = asn1_string_st
-ASN1_VISIBLESTRING = asn1_string_st
-ASN1_UTF8STRING = asn1_string_st
-N12asn1_type_st4DOLLAR_11E._fields_ = [
-    ('ptr', STRING),
-    ('boolean', ASN1_BOOLEAN),
-    ('asn1_string', POINTER(ASN1_STRING)),
-    ('object', POINTER(ASN1_OBJECT)),
-    ('integer', POINTER(ASN1_INTEGER)),
-    ('enumerated', POINTER(ASN1_ENUMERATED)),
-    ('bit_string', POINTER(ASN1_BIT_STRING)),
-    ('octet_string', POINTER(ASN1_OCTET_STRING)),
-    ('printablestring', POINTER(ASN1_PRINTABLESTRING)),
-    ('t61string', POINTER(ASN1_T61STRING)),
-    ('ia5string', POINTER(ASN1_IA5STRING)),
-    ('generalstring', POINTER(ASN1_GENERALSTRING)),
-    ('bmpstring', POINTER(ASN1_BMPSTRING)),
-    ('universalstring', POINTER(ASN1_UNIVERSALSTRING)),
-    ('utctime', POINTER(ASN1_UTCTIME)),
-    ('generalizedtime', POINTER(ASN1_GENERALIZEDTIME)),
-    ('visiblestring', POINTER(ASN1_VISIBLESTRING)),
-    ('utf8string', POINTER(ASN1_UTF8STRING)),
-    ('set', POINTER(ASN1_STRING)),
-    ('sequence', POINTER(ASN1_STRING)),
-]
-assert sizeof(N12asn1_type_st4DOLLAR_11E) == 4, sizeof(N12asn1_type_st4DOLLAR_11E)
-assert alignment(N12asn1_type_st4DOLLAR_11E) == 4, alignment(N12asn1_type_st4DOLLAR_11E)
-asn1_type_st._fields_ = [
-    ('type', c_int),
-    ('value', N12asn1_type_st4DOLLAR_11E),
-]
-assert sizeof(asn1_type_st) == 8, sizeof(asn1_type_st)
-assert alignment(asn1_type_st) == 4, alignment(asn1_type_st)
-ASN1_TYPE = asn1_type_st
-class asn1_method_st(Structure):
-    pass
-asn1_method_st._fields_ = [
-    ('i2d', CFUNCTYPE(c_int)),
-    ('d2i', CFUNCTYPE(STRING)),
-    ('create', CFUNCTYPE(STRING)),
-    ('destroy', CFUNCTYPE(None)),
-]
-assert sizeof(asn1_method_st) == 16, sizeof(asn1_method_st)
-assert alignment(asn1_method_st) == 4, alignment(asn1_method_st)
-ASN1_METHOD = asn1_method_st
-class asn1_header_st(Structure):
-    pass
-asn1_header_st._fields_ = [
-    ('header', POINTER(ASN1_OCTET_STRING)),
-    ('data', STRING),
-    ('meth', POINTER(ASN1_METHOD)),
-]
-assert sizeof(asn1_header_st) == 12, sizeof(asn1_header_st)
-assert alignment(asn1_header_st) == 4, alignment(asn1_header_st)
-ASN1_HEADER = asn1_header_st
-class BIT_STRING_BITNAME_st(Structure):
-    pass
-BIT_STRING_BITNAME_st._fields_ = [
-    ('bitnum', c_int),
-    ('lname', STRING),
-    ('sname', STRING),
-]
-assert sizeof(BIT_STRING_BITNAME_st) == 12, sizeof(BIT_STRING_BITNAME_st)
-assert alignment(BIT_STRING_BITNAME_st) == 4, alignment(BIT_STRING_BITNAME_st)
-BIT_STRING_BITNAME = BIT_STRING_BITNAME_st
-class bio_st(Structure):
-    pass
-BIO = bio_st
-bio_info_cb = CFUNCTYPE(None, POINTER(bio_st), c_int, STRING, c_int, c_long, c_long)
-class bio_method_st(Structure):
-    pass
-bio_method_st._fields_ = [
-    ('type', c_int),
-    ('name', STRING),
-    ('bwrite', CFUNCTYPE(c_int, POINTER(BIO), STRING, c_int)),
-    ('bread', CFUNCTYPE(c_int, POINTER(BIO), STRING, c_int)),
-    ('bputs', CFUNCTYPE(c_int, POINTER(BIO), STRING)),
-    ('bgets', CFUNCTYPE(c_int, POINTER(BIO), STRING, c_int)),
-    ('ctrl', CFUNCTYPE(c_long, POINTER(BIO), c_int, c_long, c_void_p)),
-    ('create', CFUNCTYPE(c_int, POINTER(BIO))),
-    ('destroy', CFUNCTYPE(c_int, POINTER(BIO))),
-    ('callback_ctrl', CFUNCTYPE(c_long, POINTER(BIO), c_int, POINTER(bio_info_cb))),
-]
-assert sizeof(bio_method_st) == 40, sizeof(bio_method_st)
-assert alignment(bio_method_st) == 4, alignment(bio_method_st)
-BIO_METHOD = bio_method_st
-class crypto_ex_data_st(Structure):
-    pass
-class stack_st(Structure):
-    pass
-STACK = stack_st
-crypto_ex_data_st._fields_ = [
-    ('sk', POINTER(STACK)),
-    ('dummy', c_int),
-]
-assert sizeof(crypto_ex_data_st) == 8, sizeof(crypto_ex_data_st)
-assert alignment(crypto_ex_data_st) == 4, alignment(crypto_ex_data_st)
-CRYPTO_EX_DATA = crypto_ex_data_st
-bio_st._fields_ = [
-    ('method', POINTER(BIO_METHOD)),
-    ('callback', CFUNCTYPE(c_long, POINTER(bio_st), c_int, STRING, c_int, c_long, c_long)),
-    ('cb_arg', STRING),
-    ('init', c_int),
-    ('shutdown', c_int),
-    ('flags', c_int),
-    ('retry_reason', c_int),
-    ('num', c_int),
-    ('ptr', c_void_p),
-    ('next_bio', POINTER(bio_st)),
-    ('prev_bio', POINTER(bio_st)),
-    ('references', c_int),
-    ('num_read', c_ulong),
-    ('num_write', c_ulong),
-    ('ex_data', CRYPTO_EX_DATA),
-]
-assert sizeof(bio_st) == 64, sizeof(bio_st)
-assert alignment(bio_st) == 4, alignment(bio_st)
-class bio_f_buffer_ctx_struct(Structure):
-    pass
-bio_f_buffer_ctx_struct._fields_ = [
-    ('ibuf_size', c_int),
-    ('obuf_size', c_int),
-    ('ibuf', STRING),
-    ('ibuf_len', c_int),
-    ('ibuf_off', c_int),
-    ('obuf', STRING),
-    ('obuf_len', c_int),
-    ('obuf_off', c_int),
-]
-assert sizeof(bio_f_buffer_ctx_struct) == 32, sizeof(bio_f_buffer_ctx_struct)
-assert alignment(bio_f_buffer_ctx_struct) == 4, alignment(bio_f_buffer_ctx_struct)
-BIO_F_BUFFER_CTX = bio_f_buffer_ctx_struct
-class hostent(Structure):
-    pass
-hostent._fields_ = [
-]
-class bf_key_st(Structure):
-    pass
-bf_key_st._fields_ = [
-    ('P', c_uint * 18),
-    ('S', c_uint * 1024),
-]
-assert sizeof(bf_key_st) == 4168, sizeof(bf_key_st)
-assert alignment(bf_key_st) == 4, alignment(bf_key_st)
-BF_KEY = bf_key_st
-class bignum_st(Structure):
-    pass
-bignum_st._fields_ = [
-    ('d', POINTER(c_ulong)),
-    ('top', c_int),
-    ('dmax', c_int),
-    ('neg', c_int),
-    ('flags', c_int),
-]
-assert sizeof(bignum_st) == 20, sizeof(bignum_st)
-assert alignment(bignum_st) == 4, alignment(bignum_st)
-BIGNUM = bignum_st
-class bignum_ctx(Structure):
-    pass
-bignum_ctx._fields_ = [
-]
-BN_CTX = bignum_ctx
-class bn_blinding_st(Structure):
-    pass
-bn_blinding_st._fields_ = [
-    ('init', c_int),
-    ('A', POINTER(BIGNUM)),
-    ('Ai', POINTER(BIGNUM)),
-    ('mod', POINTER(BIGNUM)),
-    ('thread_id', c_ulong),
-]
-assert sizeof(bn_blinding_st) == 20, sizeof(bn_blinding_st)
-assert alignment(bn_blinding_st) == 4, alignment(bn_blinding_st)
-BN_BLINDING = bn_blinding_st
-class bn_mont_ctx_st(Structure):
-    pass
-bn_mont_ctx_st._fields_ = [
-    ('ri', c_int),
-    ('RR', BIGNUM),
-    ('N', BIGNUM),
-    ('Ni', BIGNUM),
-    ('n0', c_ulong),
-    ('flags', c_int),
-]
-assert sizeof(bn_mont_ctx_st) == 72, sizeof(bn_mont_ctx_st)
-assert alignment(bn_mont_ctx_st) == 4, alignment(bn_mont_ctx_st)
-BN_MONT_CTX = bn_mont_ctx_st
-class bn_recp_ctx_st(Structure):
-    pass
-bn_recp_ctx_st._fields_ = [
-    ('N', BIGNUM),
-    ('Nr', BIGNUM),
-    ('num_bits', c_int),
-    ('shift', c_int),
-    ('flags', c_int),
-]
-assert sizeof(bn_recp_ctx_st) == 52, sizeof(bn_recp_ctx_st)
-assert alignment(bn_recp_ctx_st) == 4, alignment(bn_recp_ctx_st)
-BN_RECP_CTX = bn_recp_ctx_st
-class buf_mem_st(Structure):
-    pass
-buf_mem_st._fields_ = [
-    ('length', c_int),
-    ('data', STRING),
-    ('max', c_int),
-]
-assert sizeof(buf_mem_st) == 12, sizeof(buf_mem_st)
-assert alignment(buf_mem_st) == 4, alignment(buf_mem_st)
-BUF_MEM = buf_mem_st
-class cast_key_st(Structure):
-    pass
-cast_key_st._fields_ = [
-    ('data', c_ulong * 32),
-    ('short_key', c_int),
-]
-assert sizeof(cast_key_st) == 132, sizeof(cast_key_st)
-assert alignment(cast_key_st) == 4, alignment(cast_key_st)
-CAST_KEY = cast_key_st
-class comp_method_st(Structure):
-    pass
-comp_method_st._fields_ = [
-    ('type', c_int),
-    ('name', STRING),
-    ('init', CFUNCTYPE(c_int)),
-    ('finish', CFUNCTYPE(None)),
-    ('compress', CFUNCTYPE(c_int)),
-    ('expand', CFUNCTYPE(c_int)),
-    ('ctrl', CFUNCTYPE(c_long)),
-    ('callback_ctrl', CFUNCTYPE(c_long)),
-]
-assert sizeof(comp_method_st) == 32, sizeof(comp_method_st)
-assert alignment(comp_method_st) == 4, alignment(comp_method_st)
-COMP_METHOD = comp_method_st
-class comp_ctx_st(Structure):
-    pass
-comp_ctx_st._fields_ = [
-    ('meth', POINTER(COMP_METHOD)),
-    ('compress_in', c_ulong),
-    ('compress_out', c_ulong),
-    ('expand_in', c_ulong),
-    ('expand_out', c_ulong),
-    ('ex_data', CRYPTO_EX_DATA),
-]
-assert sizeof(comp_ctx_st) == 28, sizeof(comp_ctx_st)
-assert alignment(comp_ctx_st) == 4, alignment(comp_ctx_st)
-COMP_CTX = comp_ctx_st
-class CRYPTO_dynlock_value(Structure):
-    pass
-CRYPTO_dynlock_value._fields_ = [
-]
-class CRYPTO_dynlock(Structure):
-    pass
-CRYPTO_dynlock._fields_ = [
-    ('references', c_int),
-    ('data', POINTER(CRYPTO_dynlock_value)),
-]
-assert sizeof(CRYPTO_dynlock) == 8, sizeof(CRYPTO_dynlock)
-assert alignment(CRYPTO_dynlock) == 4, alignment(CRYPTO_dynlock)
-BIO_dummy = bio_st
-CRYPTO_EX_new = CFUNCTYPE(c_int, c_void_p, c_void_p, POINTER(CRYPTO_EX_DATA), c_int, c_long, c_void_p)
-CRYPTO_EX_free = CFUNCTYPE(None, c_void_p, c_void_p, POINTER(CRYPTO_EX_DATA), c_int, c_long, c_void_p)
-CRYPTO_EX_dup = CFUNCTYPE(c_int, POINTER(CRYPTO_EX_DATA), POINTER(CRYPTO_EX_DATA), c_void_p, c_int, c_long, c_void_p)
-class crypto_ex_data_func_st(Structure):
-    pass
-crypto_ex_data_func_st._fields_ = [
-    ('argl', c_long),
-    ('argp', c_void_p),
-    ('new_func', POINTER(CRYPTO_EX_new)),
-    ('free_func', POINTER(CRYPTO_EX_free)),
-    ('dup_func', POINTER(CRYPTO_EX_dup)),
-]
-assert sizeof(crypto_ex_data_func_st) == 20, sizeof(crypto_ex_data_func_st)
-assert alignment(crypto_ex_data_func_st) == 4, alignment(crypto_ex_data_func_st)
-CRYPTO_EX_DATA_FUNCS = crypto_ex_data_func_st
-class st_CRYPTO_EX_DATA_IMPL(Structure):
-    pass
-CRYPTO_EX_DATA_IMPL = st_CRYPTO_EX_DATA_IMPL
-st_CRYPTO_EX_DATA_IMPL._fields_ = [
-]
-CRYPTO_MEM_LEAK_CB = CFUNCTYPE(c_void_p, c_ulong, STRING, c_int, c_int, c_void_p)
-DES_cblock = c_ubyte * 8
-const_DES_cblock = c_ubyte * 8
-class DES_ks(Structure):
-    pass
-class N6DES_ks3DOLLAR_9E(Union):
-    pass
-N6DES_ks3DOLLAR_9E._fields_ = [
-    ('cblock', DES_cblock),
-    ('deslong', c_ulong * 2),
-]
-assert sizeof(N6DES_ks3DOLLAR_9E) == 8, sizeof(N6DES_ks3DOLLAR_9E)
-assert alignment(N6DES_ks3DOLLAR_9E) == 4, alignment(N6DES_ks3DOLLAR_9E)
-DES_ks._fields_ = [
-    ('ks', N6DES_ks3DOLLAR_9E * 16),
-]
-assert sizeof(DES_ks) == 128, sizeof(DES_ks)
-assert alignment(DES_ks) == 4, alignment(DES_ks)
-DES_key_schedule = DES_ks
-_ossl_old_des_cblock = c_ubyte * 8
-class _ossl_old_des_ks_struct(Structure):
-    pass
-class N23_ossl_old_des_ks_struct4DOLLAR_10E(Union):
-    pass
-N23_ossl_old_des_ks_struct4DOLLAR_10E._fields_ = [
-    ('_', _ossl_old_des_cblock),
-    ('pad', c_ulong * 2),
-]
-assert sizeof(N23_ossl_old_des_ks_struct4DOLLAR_10E) == 8, sizeof(N23_ossl_old_des_ks_struct4DOLLAR_10E)
-assert alignment(N23_ossl_old_des_ks_struct4DOLLAR_10E) == 4, alignment(N23_ossl_old_des_ks_struct4DOLLAR_10E)
-_ossl_old_des_ks_struct._fields_ = [
-    ('ks', N23_ossl_old_des_ks_struct4DOLLAR_10E),
-]
-assert sizeof(_ossl_old_des_ks_struct) == 8, sizeof(_ossl_old_des_ks_struct)
-assert alignment(_ossl_old_des_ks_struct) == 4, alignment(_ossl_old_des_ks_struct)
-_ossl_old_des_key_schedule = _ossl_old_des_ks_struct * 16
-class dh_st(Structure):
-    pass
-DH = dh_st
-class dh_method(Structure):
-    pass
-dh_method._fields_ = [
-    ('name', STRING),
-    ('generate_key', CFUNCTYPE(c_int, POINTER(DH))),
-    ('compute_key', CFUNCTYPE(c_int, POINTER(c_ubyte), POINTER(BIGNUM), POINTER(DH))),
-    ('bn_mod_exp', CFUNCTYPE(c_int, POINTER(DH), POINTER(BIGNUM), POINTER(BIGNUM), POINTER(BIGNUM), POINTER(BIGNUM), POINTER(BN_CTX), POINTER(BN_MONT_CTX))),
-    ('init', CFUNCTYPE(c_int, POINTER(DH))),
-    ('finish', CFUNCTYPE(c_int, POINTER(DH))),
-    ('flags', c_int),
-    ('app_data', STRING),
-]
-assert sizeof(dh_method) == 32, sizeof(dh_method)
-assert alignment(dh_method) == 4, alignment(dh_method)
-DH_METHOD = dh_method
-class engine_st(Structure):
-    pass
-ENGINE = engine_st
-dh_st._fields_ = [
-    ('pad', c_int),
-    ('version', c_int),
-    ('p', POINTER(BIGNUM)),
-    ('g', POINTER(BIGNUM)),
-    ('length', c_long),
-    ('pub_key', POINTER(BIGNUM)),
-    ('priv_key', POINTER(BIGNUM)),
-    ('flags', c_int),
-    ('method_mont_p', STRING),
-    ('q', POINTER(BIGNUM)),
-    ('j', POINTER(BIGNUM)),
-    ('seed', POINTER(c_ubyte)),
-    ('seedlen', c_int),
-    ('counter', POINTER(BIGNUM)),
-    ('references', c_int),
-    ('ex_data', CRYPTO_EX_DATA),
-    ('meth', POINTER(DH_METHOD)),
-    ('engine', POINTER(ENGINE)),
-]
-assert sizeof(dh_st) == 76, sizeof(dh_st)
-assert alignment(dh_st) == 4, alignment(dh_st)
-class dsa_st(Structure):
-    pass
-DSA = dsa_st
-class DSA_SIG_st(Structure):
-    pass
-DSA_SIG_st._fields_ = [
-    ('r', POINTER(BIGNUM)),
-    ('s', POINTER(BIGNUM)),
-]
-assert sizeof(DSA_SIG_st) == 8, sizeof(DSA_SIG_st)
-assert alignment(DSA_SIG_st) == 4, alignment(DSA_SIG_st)
-DSA_SIG = DSA_SIG_st
-class dsa_method(Structure):
-    pass
-dsa_method._fields_ = [
-    ('name', STRING),
-    ('dsa_do_sign', CFUNCTYPE(POINTER(DSA_SIG), POINTER(c_ubyte), c_int, POINTER(DSA))),
-    ('dsa_sign_setup', CFUNCTYPE(c_int, POINTER(DSA), POINTER(BN_CTX), POINTER(POINTER(BIGNUM)), POINTER(POINTER(BIGNUM)))),
-    ('dsa_do_verify', CFUNCTYPE(c_int, POINTER(c_ubyte), c_int, POINTER(DSA_SIG), POINTER(DSA))),
-    ('dsa_mod_exp', CFUNCTYPE(c_int, POINTER(DSA), POINTER(BIGNUM), POINTER(BIGNUM), POINTER(BIGNUM), POINTER(BIGNUM), POINTER(BIGNUM), POINTER(BIGNUM), POINTER(BN_CTX), POINTER(BN_MONT_CTX))),
-    ('bn_mod_exp', CFUNCTYPE(c_int, POINTER(DSA), POINTER(BIGNUM), POINTER(BIGNUM), POINTER(BIGNUM), POINTER(BIGNUM), POINTER(BN_CTX), POINTER(BN_MONT_CTX))),
-    ('init', CFUNCTYPE(c_int, POINTER(DSA))),
-    ('finish', CFUNCTYPE(c_int, POINTER(DSA))),
-    ('flags', c_int),
-    ('app_data', STRING),
-]
-assert sizeof(dsa_method) == 40, sizeof(dsa_method)
-assert alignment(dsa_method) == 4, alignment(dsa_method)
-DSA_METHOD = dsa_method
-dsa_st._fields_ = [
-    ('pad', c_int),
-    ('version', c_long),
-    ('write_params', c_int),
-    ('p', POINTER(BIGNUM)),
-    ('q', POINTER(BIGNUM)),
-    ('g', POINTER(BIGNUM)),
-    ('pub_key', POINTER(BIGNUM)),
-    ('priv_key', POINTER(BIGNUM)),
-    ('kinv', POINTER(BIGNUM)),
-    ('r', POINTER(BIGNUM)),
-    ('flags', c_int),
-    ('method_mont_p', STRING),
-    ('references', c_int),
-    ('ex_data', CRYPTO_EX_DATA),
-    ('meth', POINTER(DSA_METHOD)),
-    ('engine', POINTER(ENGINE)),
-]
-assert sizeof(dsa_st) == 68, sizeof(dsa_st)
-assert alignment(dsa_st) == 4, alignment(dsa_st)
-class evp_pkey_st(Structure):
-    pass
-class N11evp_pkey_st4DOLLAR_12E(Union):
-    pass
-class rsa_st(Structure):
-    pass
-N11evp_pkey_st4DOLLAR_12E._fields_ = [
-    ('ptr', STRING),
-    ('rsa', POINTER(rsa_st)),
-    ('dsa', POINTER(dsa_st)),
-    ('dh', POINTER(dh_st)),
-]
-assert sizeof(N11evp_pkey_st4DOLLAR_12E) == 4, sizeof(N11evp_pkey_st4DOLLAR_12E)
-assert alignment(N11evp_pkey_st4DOLLAR_12E) == 4, alignment(N11evp_pkey_st4DOLLAR_12E)
-evp_pkey_st._fields_ = [
-    ('type', c_int),
-    ('save_type', c_int),
-    ('references', c_int),
-    ('pkey', N11evp_pkey_st4DOLLAR_12E),
-    ('save_parameters', c_int),
-    ('attributes', POINTER(STACK)),
-]
-assert sizeof(evp_pkey_st) == 24, sizeof(evp_pkey_st)
-assert alignment(evp_pkey_st) == 4, alignment(evp_pkey_st)
-class env_md_st(Structure):
-    pass
-class env_md_ctx_st(Structure):
-    pass
-EVP_MD_CTX = env_md_ctx_st
-env_md_st._fields_ = [
-    ('type', c_int),
-    ('pkey_type', c_int),
-    ('md_size', c_int),
-    ('flags', c_ulong),
-    ('init', CFUNCTYPE(c_int, POINTER(EVP_MD_CTX))),
-    ('update', CFUNCTYPE(c_int, POINTER(EVP_MD_CTX), c_void_p, c_ulong)),
-    ('final', CFUNCTYPE(c_int, POINTER(EVP_MD_CTX), POINTER(c_ubyte))),
-    ('copy', CFUNCTYPE(c_int, POINTER(EVP_MD_CTX), POINTER(EVP_MD_CTX))),
-    ('cleanup', CFUNCTYPE(c_int, POINTER(EVP_MD_CTX))),
-    ('sign', CFUNCTYPE(c_int)),
-    ('verify', CFUNCTYPE(c_int)),
-    ('required_pkey_type', c_int * 5),
-    ('block_size', c_int),
-    ('ctx_size', c_int),
-]
-assert sizeof(env_md_st) == 72, sizeof(env_md_st)
-assert alignment(env_md_st) == 4, alignment(env_md_st)
-EVP_MD = env_md_st
-env_md_ctx_st._fields_ = [
-    ('digest', POINTER(EVP_MD)),
-    ('engine', POINTER(ENGINE)),
-    ('flags', c_ulong),
-    ('md_data', c_void_p),
-]
-assert sizeof(env_md_ctx_st) == 16, sizeof(env_md_ctx_st)
-assert alignment(env_md_ctx_st) == 4, alignment(env_md_ctx_st)
-class evp_cipher_st(Structure):
-    pass
-class evp_cipher_ctx_st(Structure):
-    pass
-EVP_CIPHER_CTX = evp_cipher_ctx_st
-evp_cipher_st._fields_ = [
-    ('nid', c_int),
-    ('block_size', c_int),
-    ('key_len', c_int),
-    ('iv_len', c_int),
-    ('flags', c_ulong),
-    ('init', CFUNCTYPE(c_int, POINTER(EVP_CIPHER_CTX), POINTER(c_ubyte), POINTER(c_ubyte), c_int)),
-    ('do_cipher', CFUNCTYPE(c_int, POINTER(EVP_CIPHER_CTX), POINTER(c_ubyte), POINTER(c_ubyte), c_uint)),
-    ('cleanup', CFUNCTYPE(c_int, POINTER(EVP_CIPHER_CTX))),
-    ('ctx_size', c_int),
-    ('set_asn1_parameters', CFUNCTYPE(c_int, POINTER(EVP_CIPHER_CTX), POINTER(ASN1_TYPE))),
-    ('get_asn1_parameters', CFUNCTYPE(c_int, POINTER(EVP_CIPHER_CTX), POINTER(ASN1_TYPE))),
-    ('ctrl', CFUNCTYPE(c_int, POINTER(EVP_CIPHER_CTX), c_int, c_int, c_void_p)),
-    ('app_data', c_void_p),
-]
-assert sizeof(evp_cipher_st) == 52, sizeof(evp_cipher_st)
-assert alignment(evp_cipher_st) == 4, alignment(evp_cipher_st)
-class evp_cipher_info_st(Structure):
-    pass
-EVP_CIPHER = evp_cipher_st
-evp_cipher_info_st._fields_ = [
-    ('cipher', POINTER(EVP_CIPHER)),
-    ('iv', c_ubyte * 16),
-]
-assert sizeof(evp_cipher_info_st) == 20, sizeof(evp_cipher_info_st)
-assert alignment(evp_cipher_info_st) == 4, alignment(evp_cipher_info_st)
-EVP_CIPHER_INFO = evp_cipher_info_st
-evp_cipher_ctx_st._fields_ = [
-    ('cipher', POINTER(EVP_CIPHER)),
-    ('engine', POINTER(ENGINE)),
-    ('encrypt', c_int),
-    ('buf_len', c_int),
-    ('oiv', c_ubyte * 16),
-    ('iv', c_ubyte * 16),
-    ('buf', c_ubyte * 32),
-    ('num', c_int),
-    ('app_data', c_void_p),
-    ('key_len', c_int),
-    ('flags', c_ulong),
-    ('cipher_data', c_void_p),
-    ('final_used', c_int),
-    ('block_mask', c_int),
-    ('final', c_ubyte * 32),
-]
-assert sizeof(evp_cipher_ctx_st) == 140, sizeof(evp_cipher_ctx_st)
-assert alignment(evp_cipher_ctx_st) == 4, alignment(evp_cipher_ctx_st)
-class evp_Encode_Ctx_st(Structure):
-    pass
-evp_Encode_Ctx_st._fields_ = [
-    ('num', c_int),
-    ('length', c_int),
-    ('enc_data', c_ubyte * 80),
-    ('line_num', c_int),
-    ('expect_nl', c_int),
-]
-assert sizeof(evp_Encode_Ctx_st) == 96, sizeof(evp_Encode_Ctx_st)
-assert alignment(evp_Encode_Ctx_st) == 4, alignment(evp_Encode_Ctx_st)
-EVP_ENCODE_CTX = evp_Encode_Ctx_st
-EVP_PBE_KEYGEN = CFUNCTYPE(c_int, POINTER(EVP_CIPHER_CTX), STRING, c_int, POINTER(ASN1_TYPE), POINTER(EVP_CIPHER), POINTER(EVP_MD), c_int)
-class lhash_node_st(Structure):
-    pass
-lhash_node_st._fields_ = [
-    ('data', c_void_p),
-    ('next', POINTER(lhash_node_st)),
-    ('hash', c_ulong),
-]
-assert sizeof(lhash_node_st) == 12, sizeof(lhash_node_st)
-assert alignment(lhash_node_st) == 4, alignment(lhash_node_st)
-LHASH_NODE = lhash_node_st
-LHASH_COMP_FN_TYPE = CFUNCTYPE(c_int, c_void_p, c_void_p)
-LHASH_HASH_FN_TYPE = CFUNCTYPE(c_ulong, c_void_p)
-LHASH_DOALL_FN_TYPE = CFUNCTYPE(None, c_void_p)
-LHASH_DOALL_ARG_FN_TYPE = CFUNCTYPE(None, c_void_p, c_void_p)
-class lhash_st(Structure):
-    pass
-lhash_st._fields_ = [
-    ('b', POINTER(POINTER(LHASH_NODE))),
-    ('comp', LHASH_COMP_FN_TYPE),
-    ('hash', LHASH_HASH_FN_TYPE),
-    ('num_nodes', c_uint),
-    ('num_alloc_nodes', c_uint),
-    ('p', c_uint),
-    ('pmax', c_uint),
-    ('up_load', c_ulong),
-    ('down_load', c_ulong),
-    ('num_items', c_ulong),
-    ('num_expands', c_ulong),
-    ('num_expand_reallocs', c_ulong),
-    ('num_contracts', c_ulong),
-    ('num_contract_reallocs', c_ulong),
-    ('num_hash_calls', c_ulong),
-    ('num_comp_calls', c_ulong),
-    ('num_insert', c_ulong),
-    ('num_replace', c_ulong),
-    ('num_delete', c_ulong),
-    ('num_no_delete', c_ulong),
-    ('num_retrieve', c_ulong),
-    ('num_retrieve_miss', c_ulong),
-    ('num_hash_comps', c_ulong),
-    ('error', c_int),
-]
-assert sizeof(lhash_st) == 96, sizeof(lhash_st)
-assert alignment(lhash_st) == 4, alignment(lhash_st)
-LHASH = lhash_st
-class MD2state_st(Structure):
-    pass
-MD2state_st._fields_ = [
-    ('num', c_int),
-    ('data', c_ubyte * 16),
-    ('cksm', c_uint * 16),
-    ('state', c_uint * 16),
-]
-assert sizeof(MD2state_st) == 148, sizeof(MD2state_st)
-assert alignment(MD2state_st) == 4, alignment(MD2state_st)
-MD2_CTX = MD2state_st
-class MD4state_st(Structure):
-    pass
-MD4state_st._fields_ = [
-    ('A', c_uint),
-    ('B', c_uint),
-    ('C', c_uint),
-    ('D', c_uint),
-    ('Nl', c_uint),
-    ('Nh', c_uint),
-    ('data', c_uint * 16),
-    ('num', c_int),
-]
-assert sizeof(MD4state_st) == 92, sizeof(MD4state_st)
-assert alignment(MD4state_st) == 4, alignment(MD4state_st)
-MD4_CTX = MD4state_st
-class MD5state_st(Structure):
-    pass
-MD5state_st._fields_ = [
-    ('A', c_uint),
-    ('B', c_uint),
-    ('C', c_uint),
-    ('D', c_uint),
-    ('Nl', c_uint),
-    ('Nh', c_uint),
-    ('data', c_uint * 16),
-    ('num', c_int),
-]
-assert sizeof(MD5state_st) == 92, sizeof(MD5state_st)
-assert alignment(MD5state_st) == 4, alignment(MD5state_st)
-MD5_CTX = MD5state_st
-class mdc2_ctx_st(Structure):
-    pass
-mdc2_ctx_st._fields_ = [
-    ('num', c_int),
-    ('data', c_ubyte * 8),
-    ('h', DES_cblock),
-    ('hh', DES_cblock),
-    ('pad_type', c_int),
-]
-assert sizeof(mdc2_ctx_st) == 32, sizeof(mdc2_ctx_st)
-assert alignment(mdc2_ctx_st) == 4, alignment(mdc2_ctx_st)
-MDC2_CTX = mdc2_ctx_st
-class obj_name_st(Structure):
-    pass
-obj_name_st._fields_ = [
-    ('type', c_int),
-    ('alias', c_int),
-    ('name', STRING),
-    ('data', STRING),
-]
-assert sizeof(obj_name_st) == 16, sizeof(obj_name_st)
-assert alignment(obj_name_st) == 4, alignment(obj_name_st)
-OBJ_NAME = obj_name_st
-ASN1_TIME = asn1_string_st
-ASN1_NULL = c_int
-EVP_PKEY = evp_pkey_st
-class x509_st(Structure):
-    pass
-X509 = x509_st
-class X509_algor_st(Structure):
-    pass
-X509_ALGOR = X509_algor_st
-class X509_crl_st(Structure):
-    pass
-X509_CRL = X509_crl_st
-class X509_name_st(Structure):
-    pass
-X509_NAME = X509_name_st
-class x509_store_st(Structure):
-    pass
-X509_STORE = x509_store_st
-class x509_store_ctx_st(Structure):
-    pass
-X509_STORE_CTX = x509_store_ctx_st
-engine_st._fields_ = [
-]
-class PEM_Encode_Seal_st(Structure):
-    pass
-PEM_Encode_Seal_st._fields_ = [
-    ('encode', EVP_ENCODE_CTX),
-    ('md', EVP_MD_CTX),
-    ('cipher', EVP_CIPHER_CTX),
-]
-assert sizeof(PEM_Encode_Seal_st) == 252, sizeof(PEM_Encode_Seal_st)
-assert alignment(PEM_Encode_Seal_st) == 4, alignment(PEM_Encode_Seal_st)
-PEM_ENCODE_SEAL_CTX = PEM_Encode_Seal_st
-class pem_recip_st(Structure):
-    pass
-pem_recip_st._fields_ = [
-    ('name', STRING),
-    ('dn', POINTER(X509_NAME)),
-    ('cipher', c_int),
-    ('key_enc', c_int),
-]
-assert sizeof(pem_recip_st) == 16, sizeof(pem_recip_st)
-assert alignment(pem_recip_st) == 4, alignment(pem_recip_st)
-PEM_USER = pem_recip_st
-class pem_ctx_st(Structure):
-    pass
-class N10pem_ctx_st4DOLLAR_16E(Structure):
-    pass
-N10pem_ctx_st4DOLLAR_16E._fields_ = [
-    ('version', c_int),
-    ('mode', c_int),
-]
-assert sizeof(N10pem_ctx_st4DOLLAR_16E) == 8, sizeof(N10pem_ctx_st4DOLLAR_16E)
-assert alignment(N10pem_ctx_st4DOLLAR_16E) == 4, alignment(N10pem_ctx_st4DOLLAR_16E)
-class N10pem_ctx_st4DOLLAR_17E(Structure):
-    pass
-N10pem_ctx_st4DOLLAR_17E._fields_ = [
-    ('cipher', c_int),
-]
-assert sizeof(N10pem_ctx_st4DOLLAR_17E) == 4, sizeof(N10pem_ctx_st4DOLLAR_17E)
-assert alignment(N10pem_ctx_st4DOLLAR_17E) == 4, alignment(N10pem_ctx_st4DOLLAR_17E)
-pem_ctx_st._fields_ = [
-    ('type', c_int),
-    ('proc_type', N10pem_ctx_st4DOLLAR_16E),
-    ('domain', STRING),
-    ('DEK_info', N10pem_ctx_st4DOLLAR_17E),
-    ('originator', POINTER(PEM_USER)),
-    ('num_recipient', c_int),
-    ('recipient', POINTER(POINTER(PEM_USER))),
-    ('x509_chain', POINTER(STACK)),
-    ('md', POINTER(EVP_MD)),
-    ('md_enc', c_int),
-    ('md_len', c_int),
-    ('md_data', STRING),
-    ('dec', POINTER(EVP_CIPHER)),
-    ('key_len', c_int),
-    ('key', POINTER(c_ubyte)),
-    ('data_enc', c_int),
-    ('data_len', c_int),
-    ('data', POINTER(c_ubyte)),
-]
-assert sizeof(pem_ctx_st) == 76, sizeof(pem_ctx_st)
-assert alignment(pem_ctx_st) == 4, alignment(pem_ctx_st)
-PEM_CTX = pem_ctx_st
-pem_password_cb = CFUNCTYPE(c_int, STRING, c_int, c_int, c_void_p)
-class pkcs7_issuer_and_serial_st(Structure):
-    pass
-pkcs7_issuer_and_serial_st._fields_ = [
-    ('issuer', POINTER(X509_NAME)),
-    ('serial', POINTER(ASN1_INTEGER)),
-]
-assert sizeof(pkcs7_issuer_and_serial_st) == 8, sizeof(pkcs7_issuer_and_serial_st)
-assert alignment(pkcs7_issuer_and_serial_st) == 4, alignment(pkcs7_issuer_and_serial_st)
-PKCS7_ISSUER_AND_SERIAL = pkcs7_issuer_and_serial_st
-class pkcs7_signer_info_st(Structure):
-    pass
-pkcs7_signer_info_st._fields_ = [
-    ('version', POINTER(ASN1_INTEGER)),
-    ('issuer_and_serial', POINTER(PKCS7_ISSUER_AND_SERIAL)),
-    ('digest_alg', POINTER(X509_ALGOR)),
-    ('auth_attr', POINTER(STACK)),
-    ('digest_enc_alg', POINTER(X509_ALGOR)),
-    ('enc_digest', POINTER(ASN1_OCTET_STRING)),
-    ('unauth_attr', POINTER(STACK)),
-    ('pkey', POINTER(EVP_PKEY)),
-]
-assert sizeof(pkcs7_signer_info_st) == 32, sizeof(pkcs7_signer_info_st)
-assert alignment(pkcs7_signer_info_st) == 4, alignment(pkcs7_signer_info_st)
-PKCS7_SIGNER_INFO = pkcs7_signer_info_st
-class pkcs7_recip_info_st(Structure):
-    pass
-pkcs7_recip_info_st._fields_ = [
-    ('version', POINTER(ASN1_INTEGER)),
-    ('issuer_and_serial', POINTER(PKCS7_ISSUER_AND_SERIAL)),
-    ('key_enc_algor', POINTER(X509_ALGOR)),
-    ('enc_key', POINTER(ASN1_OCTET_STRING)),
-    ('cert', POINTER(X509)),
-]
-assert sizeof(pkcs7_recip_info_st) == 20, sizeof(pkcs7_recip_info_st)
-assert alignment(pkcs7_recip_info_st) == 4, alignment(pkcs7_recip_info_st)
-PKCS7_RECIP_INFO = pkcs7_recip_info_st
-class pkcs7_signed_st(Structure):
-    pass
-class pkcs7_st(Structure):
-    pass
-pkcs7_signed_st._fields_ = [
-    ('version', POINTER(ASN1_INTEGER)),
-    ('md_algs', POINTER(STACK)),
-    ('cert', POINTER(STACK)),
-    ('crl', POINTER(STACK)),
-    ('signer_info', POINTER(STACK)),
-    ('contents', POINTER(pkcs7_st)),
-]
-assert sizeof(pkcs7_signed_st) == 24, sizeof(pkcs7_signed_st)
-assert alignment(pkcs7_signed_st) == 4, alignment(pkcs7_signed_st)
-PKCS7_SIGNED = pkcs7_signed_st
-class pkcs7_enc_content_st(Structure):
-    pass
-pkcs7_enc_content_st._fields_ = [
-    ('content_type', POINTER(ASN1_OBJECT)),
-    ('algorithm', POINTER(X509_ALGOR)),
-    ('enc_data', POINTER(ASN1_OCTET_STRING)),
-    ('cipher', POINTER(EVP_CIPHER)),
-]
-assert sizeof(pkcs7_enc_content_st) == 16, sizeof(pkcs7_enc_content_st)
-assert alignment(pkcs7_enc_content_st) == 4, alignment(pkcs7_enc_content_st)
-PKCS7_ENC_CONTENT = pkcs7_enc_content_st
-class pkcs7_enveloped_st(Structure):
-    pass
-pkcs7_enveloped_st._fields_ = [
-    ('version', POINTER(ASN1_INTEGER)),
-    ('recipientinfo', POINTER(STACK)),
-    ('enc_data', POINTER(PKCS7_ENC_CONTENT)),
-]
-assert sizeof(pkcs7_enveloped_st) == 12, sizeof(pkcs7_enveloped_st)
-assert alignment(pkcs7_enveloped_st) == 4, alignment(pkcs7_enveloped_st)
-PKCS7_ENVELOPE = pkcs7_enveloped_st
-class pkcs7_signedandenveloped_st(Structure):
-    pass
-pkcs7_signedandenveloped_st._fields_ = [
-    ('version', POINTER(ASN1_INTEGER)),
-    ('md_algs', POINTER(STACK)),
-    ('cert', POINTER(STACK)),
-    ('crl', POINTER(STACK)),
-    ('signer_info', POINTER(STACK)),
-    ('enc_data', POINTER(PKCS7_ENC_CONTENT)),
-    ('recipientinfo', POINTER(STACK)),
-]
-assert sizeof(pkcs7_signedandenveloped_st) == 28, sizeof(pkcs7_signedandenveloped_st)
-assert alignment(pkcs7_signedandenveloped_st) == 4, alignment(pkcs7_signedandenveloped_st)
-PKCS7_SIGN_ENVELOPE = pkcs7_signedandenveloped_st
-class pkcs7_digest_st(Structure):
-    pass
-pkcs7_digest_st._fields_ = [
-    ('version', POINTER(ASN1_INTEGER)),
-    ('md', POINTER(X509_ALGOR)),
-    ('contents', POINTER(pkcs7_st)),
-    ('digest', POINTER(ASN1_OCTET_STRING)),
-]
-assert sizeof(pkcs7_digest_st) == 16, sizeof(pkcs7_digest_st)
-assert alignment(pkcs7_digest_st) == 4, alignment(pkcs7_digest_st)
-PKCS7_DIGEST = pkcs7_digest_st
-class pkcs7_encrypted_st(Structure):
-    pass
-pkcs7_encrypted_st._fields_ = [
-    ('version', POINTER(ASN1_INTEGER)),
-    ('enc_data', POINTER(PKCS7_ENC_CONTENT)),
-]
-assert sizeof(pkcs7_encrypted_st) == 8, sizeof(pkcs7_encrypted_st)
-assert alignment(pkcs7_encrypted_st) == 4, alignment(pkcs7_encrypted_st)
-PKCS7_ENCRYPT = pkcs7_encrypted_st
-class N8pkcs7_st4DOLLAR_15E(Union):
-    pass
-N8pkcs7_st4DOLLAR_15E._fields_ = [
-    ('ptr', STRING),
-    ('data', POINTER(ASN1_OCTET_STRING)),
-    ('sign', POINTER(PKCS7_SIGNED)),
-    ('enveloped', POINTER(PKCS7_ENVELOPE)),
-    ('signed_and_enveloped', POINTER(PKCS7_SIGN_ENVELOPE)),
-    ('digest', POINTER(PKCS7_DIGEST)),
-    ('encrypted', POINTER(PKCS7_ENCRYPT)),
-    ('other', POINTER(ASN1_TYPE)),
-]
-assert sizeof(N8pkcs7_st4DOLLAR_15E) == 4, sizeof(N8pkcs7_st4DOLLAR_15E)
-assert alignment(N8pkcs7_st4DOLLAR_15E) == 4, alignment(N8pkcs7_st4DOLLAR_15E)
-pkcs7_st._fields_ = [
-    ('asn1', POINTER(c_ubyte)),
-    ('length', c_long),
-    ('state', c_int),
-    ('detached', c_int),
-    ('type', POINTER(ASN1_OBJECT)),
-    ('d', N8pkcs7_st4DOLLAR_15E),
-]
-assert sizeof(pkcs7_st) == 24, sizeof(pkcs7_st)
-assert alignment(pkcs7_st) == 4, alignment(pkcs7_st)
-PKCS7 = pkcs7_st
-class rc2_key_st(Structure):
-    pass
-rc2_key_st._fields_ = [
-    ('data', c_uint * 64),
-]
-assert sizeof(rc2_key_st) == 256, sizeof(rc2_key_st)
-assert alignment(rc2_key_st) == 4, alignment(rc2_key_st)
-RC2_KEY = rc2_key_st
-class rc4_key_st(Structure):
-    pass
-rc4_key_st._fields_ = [
-    ('x', c_ubyte),
-    ('y', c_ubyte),
-    ('data', c_ubyte * 256),
-]
-assert sizeof(rc4_key_st) == 258, sizeof(rc4_key_st)
-assert alignment(rc4_key_st) == 1, alignment(rc4_key_st)
-RC4_KEY = rc4_key_st
-class rc5_key_st(Structure):
-    pass
-rc5_key_st._fields_ = [
-    ('rounds', c_int),
-    ('data', c_ulong * 34),
-]
-assert sizeof(rc5_key_st) == 140, sizeof(rc5_key_st)
-assert alignment(rc5_key_st) == 4, alignment(rc5_key_st)
-RC5_32_KEY = rc5_key_st
-class RIPEMD160state_st(Structure):
-    pass
-RIPEMD160state_st._fields_ = [
-    ('A', c_uint),
-    ('B', c_uint),
-    ('C', c_uint),
-    ('D', c_uint),
-    ('E', c_uint),
-    ('Nl', c_uint),
-    ('Nh', c_uint),
-    ('data', c_uint * 16),
-    ('num', c_int),
-]
-assert sizeof(RIPEMD160state_st) == 96, sizeof(RIPEMD160state_st)
-assert alignment(RIPEMD160state_st) == 4, alignment(RIPEMD160state_st)
-RIPEMD160_CTX = RIPEMD160state_st
-RSA = rsa_st
-class rsa_meth_st(Structure):
-    pass
-rsa_meth_st._fields_ = [
-    ('name', STRING),
-    ('rsa_pub_enc', CFUNCTYPE(c_int, c_int, POINTER(c_ubyte), POINTER(c_ubyte), POINTER(RSA), c_int)),
-    ('rsa_pub_dec', CFUNCTYPE(c_int, c_int, POINTER(c_ubyte), POINTER(c_ubyte), POINTER(RSA), c_int)),
-    ('rsa_priv_enc', CFUNCTYPE(c_int, c_int, POINTER(c_ubyte), POINTER(c_ubyte), POINTER(RSA), c_int)),
-    ('rsa_priv_dec', CFUNCTYPE(c_int, c_int, POINTER(c_ubyte), POINTER(c_ubyte), POINTER(RSA), c_int)),
-    ('rsa_mod_exp', CFUNCTYPE(c_int, POINTER(BIGNUM), POINTER(BIGNUM), POINTER(RSA))),
-    ('bn_mod_exp', CFUNCTYPE(c_int, POINTER(BIGNUM), POINTER(BIGNUM), POINTER(BIGNUM), POINTER(BIGNUM), POINTER(BN_CTX), POINTER(BN_MONT_CTX))),
-    ('init', CFUNCTYPE(c_int, POINTER(RSA))),
-    ('finish', CFUNCTYPE(c_int, POINTER(RSA))),
-    ('flags', c_int),
-    ('app_data', STRING),
-    ('rsa_sign', CFUNCTYPE(c_int, c_int, POINTER(c_ubyte), c_uint, POINTER(c_ubyte), POINTER(c_uint), POINTER(RSA))),
-    ('rsa_verify', CFUNCTYPE(c_int, c_int, POINTER(c_ubyte), c_uint, POINTER(c_ubyte), c_uint, POINTER(RSA))),
-]
-assert sizeof(rsa_meth_st) == 52, sizeof(rsa_meth_st)
-assert alignment(rsa_meth_st) == 4, alignment(rsa_meth_st)
-RSA_METHOD = rsa_meth_st
-rsa_st._fields_ = [
-    ('pad', c_int),
-    ('version', c_long),
-    ('meth', POINTER(RSA_METHOD)),
-    ('engine', POINTER(ENGINE)),
-    ('n', POINTER(BIGNUM)),
-    ('e', POINTER(BIGNUM)),
-    ('d', POINTER(BIGNUM)),
-    ('p', POINTER(BIGNUM)),
-    ('q', POINTER(BIGNUM)),
-    ('dmp1', POINTER(BIGNUM)),
-    ('dmq1', POINTER(BIGNUM)),
-    ('iqmp', POINTER(BIGNUM)),
-    ('ex_data', CRYPTO_EX_DATA),
-    ('references', c_int),
-    ('flags', c_int),
-    ('_method_mod_n', POINTER(BN_MONT_CTX)),
-    ('_method_mod_p', POINTER(BN_MONT_CTX)),
-    ('_method_mod_q', POINTER(BN_MONT_CTX)),
-    ('bignum_data', STRING),
-    ('blinding', POINTER(BN_BLINDING)),
-]
-assert sizeof(rsa_st) == 84, sizeof(rsa_st)
-assert alignment(rsa_st) == 4, alignment(rsa_st)
-openssl_fptr = CFUNCTYPE(None)
-class SHAstate_st(Structure):
-    pass
-SHAstate_st._fields_ = [
-    ('h0', c_uint),
-    ('h1', c_uint),
-    ('h2', c_uint),
-    ('h3', c_uint),
-    ('h4', c_uint),
-    ('Nl', c_uint),
-    ('Nh', c_uint),
-    ('data', c_uint * 16),
-    ('num', c_int),
-]
-assert sizeof(SHAstate_st) == 96, sizeof(SHAstate_st)
-assert alignment(SHAstate_st) == 4, alignment(SHAstate_st)
-SHA_CTX = SHAstate_st
-class ssl_st(Structure):
-    pass
-ssl_crock_st = POINTER(ssl_st)
-class ssl_cipher_st(Structure):
-    pass
-ssl_cipher_st._fields_ = [
-    ('valid', c_int),
-    ('name', STRING),
-    ('id', c_ulong),
-    ('algorithms', c_ulong),
-    ('algo_strength', c_ulong),
-    ('algorithm2', c_ulong),
-    ('strength_bits', c_int),
-    ('alg_bits', c_int),
-    ('mask', c_ulong),
-    ('mask_strength', c_ulong),
-]
-assert sizeof(ssl_cipher_st) == 40, sizeof(ssl_cipher_st)
-assert alignment(ssl_cipher_st) == 4, alignment(ssl_cipher_st)
-SSL_CIPHER = ssl_cipher_st
-SSL = ssl_st
-class ssl_ctx_st(Structure):
-    pass
-SSL_CTX = ssl_ctx_st
-class ssl_method_st(Structure):
-    pass
-class ssl3_enc_method(Structure):
-    pass
-ssl_method_st._fields_ = [
-    ('version', c_int),
-    ('ssl_new', CFUNCTYPE(c_int, POINTER(SSL))),
-    ('ssl_clear', CFUNCTYPE(None, POINTER(SSL))),
-    ('ssl_free', CFUNCTYPE(None, POINTER(SSL))),
-    ('ssl_accept', CFUNCTYPE(c_int, POINTER(SSL))),
-    ('ssl_connect', CFUNCTYPE(c_int, POINTER(SSL))),
-    ('ssl_read', CFUNCTYPE(c_int, POINTER(SSL), c_void_p, c_int)),
-    ('ssl_peek', CFUNCTYPE(c_int, POINTER(SSL), c_void_p, c_int)),
-    ('ssl_write', CFUNCTYPE(c_int, POINTER(SSL), c_void_p, c_int)),
-    ('ssl_shutdown', CFUNCTYPE(c_int, POINTER(SSL))),
-    ('ssl_renegotiate', CFUNCTYPE(c_int, POINTER(SSL))),
-    ('ssl_renegotiate_check', CFUNCTYPE(c_int, POINTER(SSL))),
-    ('ssl_ctrl', CFUNCTYPE(c_long, POINTER(SSL), c_int, c_long, c_void_p)),
-    ('ssl_ctx_ctrl', CFUNCTYPE(c_long, POINTER(SSL_CTX), c_int, c_long, c_void_p)),
-    ('get_cipher_by_char', CFUNCTYPE(POINTER(SSL_CIPHER), POINTER(c_ubyte))),
-    ('put_cipher_by_char', CFUNCTYPE(c_int, POINTER(SSL_CIPHER), POINTER(c_ubyte))),
-    ('ssl_pending', CFUNCTYPE(c_int, POINTER(SSL))),
-    ('num_ciphers', CFUNCTYPE(c_int)),
-    ('get_cipher', CFUNCTYPE(POINTER(SSL_CIPHER), c_uint)),
-    ('get_ssl_method', CFUNCTYPE(POINTER(ssl_method_st), c_int)),
-    ('get_timeout', CFUNCTYPE(c_long)),
-    ('ssl3_enc', POINTER(ssl3_enc_method)),
-    ('ssl_version', CFUNCTYPE(c_int)),
-    ('ssl_callback_ctrl', CFUNCTYPE(c_long, POINTER(SSL), c_int, CFUNCTYPE(None))),
-    ('ssl_ctx_callback_ctrl', CFUNCTYPE(c_long, POINTER(SSL_CTX), c_int, CFUNCTYPE(None))),
-]
-assert sizeof(ssl_method_st) == 100, sizeof(ssl_method_st)
-assert alignment(ssl_method_st) == 4, alignment(ssl_method_st)
-ssl3_enc_method._fields_ = [
-]
-SSL_METHOD = ssl_method_st
-class ssl_session_st(Structure):
-    pass
-class sess_cert_st(Structure):
-    pass
-ssl_session_st._fields_ = [
-    ('ssl_version', c_int),
-    ('key_arg_length', c_uint),
-    ('key_arg', c_ubyte * 8),
-    ('master_key_length', c_int),
-    ('master_key', c_ubyte * 48),
-    ('session_id_length', c_uint),
-    ('session_id', c_ubyte * 32),
-    ('sid_ctx_length', c_uint),
-    ('sid_ctx', c_ubyte * 32),
-    ('not_resumable', c_int),
-    ('sess_cert', POINTER(sess_cert_st)),
-    ('peer', POINTER(X509)),
-    ('verify_result', c_long),
-    ('references', c_int),
-    ('timeout', c_long),
-    ('time', c_long),
-    ('compress_meth', c_int),
-    ('cipher', POINTER(SSL_CIPHER)),
-    ('cipher_id', c_ulong),
-    ('ciphers', POINTER(STACK)),
-    ('ex_data', CRYPTO_EX_DATA),
-    ('prev', POINTER(ssl_session_st)),
-    ('next', POINTER(ssl_session_st)),
-]
-assert sizeof(ssl_session_st) == 200, sizeof(ssl_session_st)
-assert alignment(ssl_session_st) == 4, alignment(ssl_session_st)
-sess_cert_st._fields_ = [
-]
-SSL_SESSION = ssl_session_st
-GEN_SESSION_CB = CFUNCTYPE(c_int, POINTER(SSL), POINTER(c_ubyte), POINTER(c_uint))
-class ssl_comp_st(Structure):
-    pass
-ssl_comp_st._fields_ = [
-    ('id', c_int),
-    ('name', STRING),
-    ('method', POINTER(COMP_METHOD)),
-]
-assert sizeof(ssl_comp_st) == 12, sizeof(ssl_comp_st)
-assert alignment(ssl_comp_st) == 4, alignment(ssl_comp_st)
-SSL_COMP = ssl_comp_st
-class N10ssl_ctx_st4DOLLAR_18E(Structure):
-    pass
-N10ssl_ctx_st4DOLLAR_18E._fields_ = [
-    ('sess_connect', c_int),
-    ('sess_connect_renegotiate', c_int),
-    ('sess_connect_good', c_int),
-    ('sess_accept', c_int),
-    ('sess_accept_renegotiate', c_int),
-    ('sess_accept_good', c_int),
-    ('sess_miss', c_int),
-    ('sess_timeout', c_int),
-    ('sess_cache_full', c_int),
-    ('sess_hit', c_int),
-    ('sess_cb_hit', c_int),
-]
-assert sizeof(N10ssl_ctx_st4DOLLAR_18E) == 44, sizeof(N10ssl_ctx_st4DOLLAR_18E)
-assert alignment(N10ssl_ctx_st4DOLLAR_18E) == 4, alignment(N10ssl_ctx_st4DOLLAR_18E)
-class cert_st(Structure):
-    pass
-ssl_ctx_st._fields_ = [
-    ('method', POINTER(SSL_METHOD)),
-    ('cipher_list', POINTER(STACK)),
-    ('cipher_list_by_id', POINTER(STACK)),
-    ('cert_store', POINTER(x509_store_st)),
-    ('sessions', POINTER(lhash_st)),
-    ('session_cache_size', c_ulong),
-    ('session_cache_head', POINTER(ssl_session_st)),
-    ('session_cache_tail', POINTER(ssl_session_st)),
-    ('session_cache_mode', c_int),
-    ('session_timeout', c_long),
-    ('new_session_cb', CFUNCTYPE(c_int, POINTER(ssl_st), POINTER(SSL_SESSION))),
-    ('remove_session_cb', CFUNCTYPE(None, POINTER(ssl_ctx_st), POINTER(SSL_SESSION))),
-    ('get_session_cb', CFUNCTYPE(POINTER(SSL_SESSION), POINTER(ssl_st), POINTER(c_ubyte), c_int, POINTER(c_int))),
-    ('stats', N10ssl_ctx_st4DOLLAR_18E),
-    ('references', c_int),
-    ('app_verify_callback', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX), c_void_p)),
-    ('app_verify_arg', c_void_p),
-    ('default_passwd_callback', POINTER(pem_password_cb)),
-    ('default_passwd_callback_userdata', c_void_p),
-    ('client_cert_cb', CFUNCTYPE(c_int, POINTER(SSL), POINTER(POINTER(X509)), POINTER(POINTER(EVP_PKEY)))),
-    ('ex_data', CRYPTO_EX_DATA),
-    ('rsa_md5', POINTER(EVP_MD)),
-    ('md5', POINTER(EVP_MD)),
-    ('sha1', POINTER(EVP_MD)),
-    ('extra_certs', POINTER(STACK)),
-    ('comp_methods', POINTER(STACK)),
-    ('info_callback', CFUNCTYPE(None, POINTER(SSL), c_int, c_int)),
-    ('client_CA', POINTER(STACK)),
-    ('options', c_ulong),
-    ('mode', c_ulong),
-    ('max_cert_list', c_long),
-    ('cert', POINTER(cert_st)),
-    ('read_ahead', c_int),
-    ('msg_callback', CFUNCTYPE(None, c_int, c_int, c_int, c_void_p, c_ulong, POINTER(SSL), c_void_p)),
-    ('msg_callback_arg', c_void_p),
-    ('verify_mode', c_int),
-    ('verify_depth', c_int),
-    ('sid_ctx_length', c_uint),
-    ('sid_ctx', c_ubyte * 32),
-    ('default_verify_callback', CFUNCTYPE(c_int, c_int, POINTER(X509_STORE_CTX))),
-    ('generate_session_id', GEN_SESSION_CB),
-    ('purpose', c_int),
-    ('trust', c_int),
-    ('quiet_shutdown', c_int),
-]
-assert sizeof(ssl_ctx_st) == 248, sizeof(ssl_ctx_st)
-assert alignment(ssl_ctx_st) == 4, alignment(ssl_ctx_st)
-cert_st._fields_ = [
-]
-class ssl2_state_st(Structure):
-    pass
-class ssl3_state_st(Structure):
-    pass
-ssl_st._fields_ = [
-    ('version', c_int),
-    ('type', c_int),
-    ('method', POINTER(SSL_METHOD)),
-    ('rbio', POINTER(BIO)),
-    ('wbio', POINTER(BIO)),
-    ('bbio', POINTER(BIO)),
-    ('rwstate', c_int),
-    ('in_handshake', c_int),
-    ('handshake_func', CFUNCTYPE(c_int)),
-    ('server', c_int),
-    ('new_session', c_int),
-    ('quiet_shutdown', c_int),
-    ('shutdown', c_int),
-    ('state', c_int),
-    ('rstate', c_int),
-    ('init_buf', POINTER(BUF_MEM)),
-    ('init_msg', c_void_p),
-    ('init_num', c_int),
-    ('init_off', c_int),
-    ('packet', POINTER(c_ubyte)),
-    ('packet_length', c_uint),
-    ('s2', POINTER(ssl2_state_st)),
-    ('s3', POINTER(ssl3_state_st)),
-    ('read_ahead', c_int),
-    ('msg_callback', CFUNCTYPE(None, c_int, c_int, c_int, c_void_p, c_ulong, POINTER(SSL), c_void_p)),
-    ('msg_callback_arg', c_void_p),
-    ('hit', c_int),
-    ('purpose', c_int),
-    ('trust', c_int),
-    ('cipher_list', POINTER(STACK)),
-    ('cipher_list_by_id', POINTER(STACK)),
-    ('enc_read_ctx', POINTER(EVP_CIPHER_CTX)),
-    ('read_hash', POINTER(EVP_MD)),
-    ('expand', POINTER(COMP_CTX)),
-    ('enc_write_ctx', POINTER(EVP_CIPHER_CTX)),
-    ('write_hash', POINTER(EVP_MD)),
-    ('compress', POINTER(COMP_CTX)),
-    ('cert', POINTER(cert_st)),
-    ('sid_ctx_length', c_uint),
-    ('sid_ctx', c_ubyte * 32),
-    ('session', POINTER(SSL_SESSION)),
-    ('generate_session_id', GEN_SESSION_CB),
-    ('verify_mode', c_int),
-    ('verify_depth', c_int),
-    ('verify_callback', CFUNCTYPE(c_int, c_int, POINTER(X509_STORE_CTX))),
-    ('info_callback', CFUNCTYPE(None, POINTER(SSL), c_int, c_int)),
-    ('error', c_int),
-    ('error_code', c_int),
-    ('ctx', POINTER(SSL_CTX)),
-    ('debug', c_int),
-    ('verify_result', c_long),
-    ('ex_data', CRYPTO_EX_DATA),
-    ('client_CA', POINTER(STACK)),
-    ('references', c_int),
-    ('options', c_ulong),
-    ('mode', c_ulong),
-    ('max_cert_list', c_long),
-    ('first_packet', c_int),
-    ('client_version', c_int),
-]
-assert sizeof(ssl_st) == 268, sizeof(ssl_st)
-assert alignment(ssl_st) == 4, alignment(ssl_st)
-class N13ssl2_state_st4DOLLAR_19E(Structure):
-    pass
-N13ssl2_state_st4DOLLAR_19E._fields_ = [
-    ('conn_id_length', c_uint),
-    ('cert_type', c_uint),
-    ('cert_length', c_uint),
-    ('csl', c_uint),
-    ('clear', c_uint),
-    ('enc', c_uint),
-    ('ccl', c_ubyte * 32),
-    ('cipher_spec_length', c_uint),
-    ('session_id_length', c_uint),
-    ('clen', c_uint),
-    ('rlen', c_uint),
-]
-assert sizeof(N13ssl2_state_st4DOLLAR_19E) == 72, sizeof(N13ssl2_state_st4DOLLAR_19E)
-assert alignment(N13ssl2_state_st4DOLLAR_19E) == 4, alignment(N13ssl2_state_st4DOLLAR_19E)
-ssl2_state_st._fields_ = [
-    ('three_byte_header', c_int),
-    ('clear_text', c_int),
-    ('escape', c_int),
-    ('ssl2_rollback', c_int),
-    ('wnum', c_uint),
-    ('wpend_tot', c_int),
-    ('wpend_buf', POINTER(c_ubyte)),
-    ('wpend_off', c_int),
-    ('wpend_len', c_int),
-    ('wpend_ret', c_int),
-    ('rbuf_left', c_int),
-    ('rbuf_offs', c_int),
-    ('rbuf', POINTER(c_ubyte)),
-    ('wbuf', POINTER(c_ubyte)),
-    ('write_ptr', POINTER(c_ubyte)),
-    ('padding', c_uint),
-    ('rlength', c_uint),
-    ('ract_data_length', c_int),
-    ('wlength', c_uint),
-    ('wact_data_length', c_int),
-    ('ract_data', POINTER(c_ubyte)),
-    ('wact_data', POINTER(c_ubyte)),
-    ('mac_data', POINTER(c_ubyte)),
-    ('read_key', POINTER(c_ubyte)),
-    ('write_key', POINTER(c_ubyte)),
-    ('challenge_length', c_uint),
-    ('challenge', c_ubyte * 32),
-    ('conn_id_length', c_uint),
-    ('conn_id', c_ubyte * 16),
-    ('key_material_length', c_uint),
-    ('key_material', c_ubyte * 48),
-    ('read_sequence', c_ulong),
-    ('write_sequence', c_ulong),
-    ('tmp', N13ssl2_state_st4DOLLAR_19E),
-]
-assert sizeof(ssl2_state_st) == 288, sizeof(ssl2_state_st)
-assert alignment(ssl2_state_st) == 4, alignment(ssl2_state_st)
-SSL2_STATE = ssl2_state_st
-class ssl3_record_st(Structure):
-    pass
-ssl3_record_st._fields_ = [
-    ('type', c_int),
-    ('length', c_uint),
-    ('off', c_uint),
-    ('data', POINTER(c_ubyte)),
-    ('input', POINTER(c_ubyte)),
-    ('comp', POINTER(c_ubyte)),
-]
-assert sizeof(ssl3_record_st) == 24, sizeof(ssl3_record_st)
-assert alignment(ssl3_record_st) == 4, alignment(ssl3_record_st)
-SSL3_RECORD = ssl3_record_st
-class ssl3_buffer_st(Structure):
-    pass
-size_t = __darwin_size_t
-ssl3_buffer_st._fields_ = [
-    ('buf', POINTER(c_ubyte)),
-    ('len', size_t),
-    ('offset', c_int),
-    ('left', c_int),
-]
-assert sizeof(ssl3_buffer_st) == 16, sizeof(ssl3_buffer_st)
-assert alignment(ssl3_buffer_st) == 4, alignment(ssl3_buffer_st)
-SSL3_BUFFER = ssl3_buffer_st
-class N13ssl3_state_st4DOLLAR_20E(Structure):
-    pass
-N13ssl3_state_st4DOLLAR_20E._fields_ = [
-    ('cert_verify_md', c_ubyte * 72),
-    ('finish_md', c_ubyte * 72),
-    ('finish_md_len', c_int),
-    ('peer_finish_md', c_ubyte * 72),
-    ('peer_finish_md_len', c_int),
-    ('message_size', c_ulong),
-    ('message_type', c_int),
-    ('new_cipher', POINTER(SSL_CIPHER)),
-    ('dh', POINTER(DH)),
-    ('next_state', c_int),
-    ('reuse_message', c_int),
-    ('cert_req', c_int),
-    ('ctype_num', c_int),
-    ('ctype', c_char * 7),
-    ('ca_names', POINTER(STACK)),
-    ('use_rsa_tmp', c_int),
-    ('key_block_length', c_int),
-    ('key_block', POINTER(c_ubyte)),
-    ('new_sym_enc', POINTER(EVP_CIPHER)),
-    ('new_hash', POINTER(EVP_MD)),
-    ('new_compression', POINTER(SSL_COMP)),
-    ('cert_request', c_int),
-]
-assert sizeof(N13ssl3_state_st4DOLLAR_20E) == 296, sizeof(N13ssl3_state_st4DOLLAR_20E)
-assert alignment(N13ssl3_state_st4DOLLAR_20E) == 4, alignment(N13ssl3_state_st4DOLLAR_20E)
-ssl3_state_st._fields_ = [
-    ('flags', c_long),
-    ('delay_buf_pop_ret', c_int),
-    ('read_sequence', c_ubyte * 8),
-    ('read_mac_secret', c_ubyte * 36),
-    ('write_sequence', c_ubyte * 8),
-    ('write_mac_secret', c_ubyte * 36),
-    ('server_random', c_ubyte * 32),
-    ('client_random', c_ubyte * 32),
-    ('need_empty_fragments', c_int),
-    ('empty_fragment_done', c_int),
-    ('rbuf', SSL3_BUFFER),
-    ('wbuf', SSL3_BUFFER),
-    ('rrec', SSL3_RECORD),
-    ('wrec', SSL3_RECORD),
-    ('alert_fragment', c_ubyte * 2),
-    ('alert_fragment_len', c_uint),
-    ('handshake_fragment', c_ubyte * 4),
-    ('handshake_fragment_len', c_uint),
-    ('wnum', c_uint),
-    ('wpend_tot', c_int),
-    ('wpend_type', c_int),
-    ('wpend_ret', c_int),
-    ('wpend_buf', POINTER(c_ubyte)),
-    ('finish_dgst1', EVP_MD_CTX),
-    ('finish_dgst2', EVP_MD_CTX),
-    ('change_cipher_spec', c_int),
-    ('warn_alert', c_int),
-    ('fatal_alert', c_int),
-    ('alert_dispatch', c_int),
-    ('send_alert', c_ubyte * 2),
-    ('renegotiate', c_int),
-    ('total_renegotiations', c_int),
-    ('num_renegotiations', c_int),
-    ('in_read_app_data', c_int),
-    ('tmp', N13ssl3_state_st4DOLLAR_20E),
-]
-assert sizeof(ssl3_state_st) == 648, sizeof(ssl3_state_st)
-assert alignment(ssl3_state_st) == 4, alignment(ssl3_state_st)
-SSL3_STATE = ssl3_state_st
-stack_st._fields_ = [
-    ('num', c_int),
-    ('data', POINTER(STRING)),
-    ('sorted', c_int),
-    ('num_alloc', c_int),
-    ('comp', CFUNCTYPE(c_int, POINTER(STRING), POINTER(STRING))),
-]
-assert sizeof(stack_st) == 20, sizeof(stack_st)
-assert alignment(stack_st) == 4, alignment(stack_st)
-class ui_st(Structure):
-    pass
-ui_st._fields_ = [
-]
-UI = ui_st
-class ui_method_st(Structure):
-    pass
-ui_method_st._fields_ = [
-]
-UI_METHOD = ui_method_st
-class ui_string_st(Structure):
-    pass
-ui_string_st._fields_ = [
-]
-UI_STRING = ui_string_st
-
-# values for enumeration 'UI_string_types'
-UI_string_types = c_int # enum
-class X509_objects_st(Structure):
-    pass
-X509_objects_st._fields_ = [
-    ('nid', c_int),
-    ('a2i', CFUNCTYPE(c_int)),
-    ('i2a', CFUNCTYPE(c_int)),
-]
-assert sizeof(X509_objects_st) == 12, sizeof(X509_objects_st)
-assert alignment(X509_objects_st) == 4, alignment(X509_objects_st)
-X509_OBJECTS = X509_objects_st
-X509_algor_st._fields_ = [
-    ('algorithm', POINTER(ASN1_OBJECT)),
-    ('parameter', POINTER(ASN1_TYPE)),
-]
-assert sizeof(X509_algor_st) == 8, sizeof(X509_algor_st)
-assert alignment(X509_algor_st) == 4, alignment(X509_algor_st)
-class X509_val_st(Structure):
-    pass
-X509_val_st._fields_ = [
-    ('notBefore', POINTER(ASN1_TIME)),
-    ('notAfter', POINTER(ASN1_TIME)),
-]
-assert sizeof(X509_val_st) == 8, sizeof(X509_val_st)
-assert alignment(X509_val_st) == 4, alignment(X509_val_st)
-X509_VAL = X509_val_st
-class X509_pubkey_st(Structure):
-    pass
-X509_pubkey_st._fields_ = [
-    ('algor', POINTER(X509_ALGOR)),
-    ('public_key', POINTER(ASN1_BIT_STRING)),
-    ('pkey', POINTER(EVP_PKEY)),
-]
-assert sizeof(X509_pubkey_st) == 12, sizeof(X509_pubkey_st)
-assert alignment(X509_pubkey_st) == 4, alignment(X509_pubkey_st)
-X509_PUBKEY = X509_pubkey_st
-class X509_sig_st(Structure):
-    pass
-X509_sig_st._fields_ = [
-    ('algor', POINTER(X509_ALGOR)),
-    ('digest', POINTER(ASN1_OCTET_STRING)),
-]
-assert sizeof(X509_sig_st) == 8, sizeof(X509_sig_st)
-assert alignment(X509_sig_st) == 4, alignment(X509_sig_st)
-X509_SIG = X509_sig_st
-class X509_name_entry_st(Structure):
-    pass
-X509_name_entry_st._fields_ = [
-    ('object', POINTER(ASN1_OBJECT)),
-    ('value', POINTER(ASN1_STRING)),
-    ('set', c_int),
-    ('size', c_int),
-]
-assert sizeof(X509_name_entry_st) == 16, sizeof(X509_name_entry_st)
-assert alignment(X509_name_entry_st) == 4, alignment(X509_name_entry_st)
-X509_NAME_ENTRY = X509_name_entry_st
-X509_name_st._fields_ = [
-    ('entries', POINTER(STACK)),
-    ('modified', c_int),
-    ('bytes', POINTER(BUF_MEM)),
-    ('hash', c_ulong),
-]
-assert sizeof(X509_name_st) == 16, sizeof(X509_name_st)
-assert alignment(X509_name_st) == 4, alignment(X509_name_st)
-class X509_extension_st(Structure):
-    pass
-X509_extension_st._fields_ = [
-    ('object', POINTER(ASN1_OBJECT)),
-    ('critical', ASN1_BOOLEAN),
-    ('value', POINTER(ASN1_OCTET_STRING)),
-]
-assert sizeof(X509_extension_st) == 12, sizeof(X509_extension_st)
-assert alignment(X509_extension_st) == 4, alignment(X509_extension_st)
-X509_EXTENSION = X509_extension_st
-class x509_attributes_st(Structure):
-    pass
-class N18x509_attributes_st4DOLLAR_13E(Union):
-    pass
-N18x509_attributes_st4DOLLAR_13E._fields_ = [
-    ('ptr', STRING),
-    ('set', POINTER(STACK)),
-    ('single', POINTER(ASN1_TYPE)),
-]
-assert sizeof(N18x509_attributes_st4DOLLAR_13E) == 4, sizeof(N18x509_attributes_st4DOLLAR_13E)
-assert alignment(N18x509_attributes_st4DOLLAR_13E) == 4, alignment(N18x509_attributes_st4DOLLAR_13E)
-x509_attributes_st._fields_ = [
-    ('object', POINTER(ASN1_OBJECT)),
-    ('single', c_int),
-    ('value', N18x509_attributes_st4DOLLAR_13E),
-]
-assert sizeof(x509_attributes_st) == 12, sizeof(x509_attributes_st)
-assert alignment(x509_attributes_st) == 4, alignment(x509_attributes_st)
-X509_ATTRIBUTE = x509_attributes_st
-class X509_req_info_st(Structure):
-    pass
-X509_req_info_st._fields_ = [
-    ('enc', ASN1_ENCODING),
-    ('version', POINTER(ASN1_INTEGER)),
-    ('subject', POINTER(X509_NAME)),
-    ('pubkey', POINTER(X509_PUBKEY)),
-    ('attributes', POINTER(STACK)),
-]
-assert sizeof(X509_req_info_st) == 28, sizeof(X509_req_info_st)
-assert alignment(X509_req_info_st) == 4, alignment(X509_req_info_st)
-X509_REQ_INFO = X509_req_info_st
-class X509_req_st(Structure):
-    pass
-X509_req_st._fields_ = [
-    ('req_info', POINTER(X509_REQ_INFO)),
-    ('sig_alg', POINTER(X509_ALGOR)),
-    ('signature', POINTER(ASN1_BIT_STRING)),
-    ('references', c_int),
-]
-assert sizeof(X509_req_st) == 16, sizeof(X509_req_st)
-assert alignment(X509_req_st) == 4, alignment(X509_req_st)
-X509_REQ = X509_req_st
-class x509_cinf_st(Structure):
-    pass
-x509_cinf_st._fields_ = [
-    ('version', POINTER(ASN1_INTEGER)),
-    ('serialNumber', POINTER(ASN1_INTEGER)),
-    ('signature', POINTER(X509_ALGOR)),
-    ('issuer', POINTER(X509_NAME)),
-    ('validity', POINTER(X509_VAL)),
-    ('subject', POINTER(X509_NAME)),
-    ('key', POINTER(X509_PUBKEY)),
-    ('issuerUID', POINTER(ASN1_BIT_STRING)),
-    ('subjectUID', POINTER(ASN1_BIT_STRING)),
-    ('extensions', POINTER(STACK)),
-]
-assert sizeof(x509_cinf_st) == 40, sizeof(x509_cinf_st)
-assert alignment(x509_cinf_st) == 4, alignment(x509_cinf_st)
-X509_CINF = x509_cinf_st
-class x509_cert_aux_st(Structure):
-    pass
-x509_cert_aux_st._fields_ = [
-    ('trust', POINTER(STACK)),
-    ('reject', POINTER(STACK)),
-    ('alias', POINTER(ASN1_UTF8STRING)),
-    ('keyid', POINTER(ASN1_OCTET_STRING)),
-    ('other', POINTER(STACK)),
-]
-assert sizeof(x509_cert_aux_st) == 20, sizeof(x509_cert_aux_st)
-assert alignment(x509_cert_aux_st) == 4, alignment(x509_cert_aux_st)
-X509_CERT_AUX = x509_cert_aux_st
-class AUTHORITY_KEYID_st(Structure):
-    pass
-x509_st._fields_ = [
-    ('cert_info', POINTER(X509_CINF)),
-    ('sig_alg', POINTER(X509_ALGOR)),
-    ('signature', POINTER(ASN1_BIT_STRING)),
-    ('valid', c_int),
-    ('references', c_int),
-    ('name', STRING),
-    ('ex_data', CRYPTO_EX_DATA),
-    ('ex_pathlen', c_long),
-    ('ex_flags', c_ulong),
-    ('ex_kusage', c_ulong),
-    ('ex_xkusage', c_ulong),
-    ('ex_nscert', c_ulong),
-    ('skid', POINTER(ASN1_OCTET_STRING)),
-    ('akid', POINTER(AUTHORITY_KEYID_st)),
-    ('sha1_hash', c_ubyte * 20),
-    ('aux', POINTER(X509_CERT_AUX)),
-]
-assert sizeof(x509_st) == 84, sizeof(x509_st)
-assert alignment(x509_st) == 4, alignment(x509_st)
-AUTHORITY_KEYID_st._fields_ = [
-]
-class x509_trust_st(Structure):
-    pass
-x509_trust_st._fields_ = [
-    ('trust', c_int),
-    ('flags', c_int),
-    ('check_trust', CFUNCTYPE(c_int, POINTER(x509_trust_st), POINTER(X509), c_int)),
-    ('name', STRING),
-    ('arg1', c_int),
-    ('arg2', c_void_p),
-]
-assert sizeof(x509_trust_st) == 24, sizeof(x509_trust_st)
-assert alignment(x509_trust_st) == 4, alignment(x509_trust_st)
-X509_TRUST = x509_trust_st
-class X509_revoked_st(Structure):
-    pass
-X509_revoked_st._fields_ = [
-    ('serialNumber', POINTER(ASN1_INTEGER)),
-    ('revocationDate', POINTER(ASN1_TIME)),
-    ('extensions', POINTER(STACK)),
-    ('sequence', c_int),
-]
-assert sizeof(X509_revoked_st) == 16, sizeof(X509_revoked_st)
-assert alignment(X509_revoked_st) == 4, alignment(X509_revoked_st)
-X509_REVOKED = X509_revoked_st
-class X509_crl_info_st(Structure):
-    pass
-X509_crl_info_st._fields_ = [
-    ('version', POINTER(ASN1_INTEGER)),
-    ('sig_alg', POINTER(X509_ALGOR)),
-    ('issuer', POINTER(X509_NAME)),
-    ('lastUpdate', POINTER(ASN1_TIME)),
-    ('nextUpdate', POINTER(ASN1_TIME)),
-    ('revoked', POINTER(STACK)),
-    ('extensions', POINTER(STACK)),
-    ('enc', ASN1_ENCODING),
-]
-assert sizeof(X509_crl_info_st) == 40, sizeof(X509_crl_info_st)
-assert alignment(X509_crl_info_st) == 4, alignment(X509_crl_info_st)
-X509_CRL_INFO = X509_crl_info_st
-X509_crl_st._fields_ = [
-    ('crl', POINTER(X509_CRL_INFO)),
-    ('sig_alg', POINTER(X509_ALGOR)),
-    ('signature', POINTER(ASN1_BIT_STRING)),
-    ('references', c_int),
-]
-assert sizeof(X509_crl_st) == 16, sizeof(X509_crl_st)
-assert alignment(X509_crl_st) == 4, alignment(X509_crl_st)
-class private_key_st(Structure):
-    pass
-private_key_st._fields_ = [
-    ('version', c_int),
-    ('enc_algor', POINTER(X509_ALGOR)),
-    ('enc_pkey', POINTER(ASN1_OCTET_STRING)),
-    ('dec_pkey', POINTER(EVP_PKEY)),
-    ('key_length', c_int),
-    ('key_data', STRING),
-    ('key_free', c_int),
-    ('cipher', EVP_CIPHER_INFO),
-    ('references', c_int),
-]
-assert sizeof(private_key_st) == 52, sizeof(private_key_st)
-assert alignment(private_key_st) == 4, alignment(private_key_st)
-X509_PKEY = private_key_st
-class X509_info_st(Structure):
-    pass
-X509_info_st._fields_ = [
-    ('x509', POINTER(X509)),
-    ('crl', POINTER(X509_CRL)),
-    ('x_pkey', POINTER(X509_PKEY)),
-    ('enc_cipher', EVP_CIPHER_INFO),
-    ('enc_len', c_int),
-    ('enc_data', STRING),
-    ('references', c_int),
-]
-assert sizeof(X509_info_st) == 44, sizeof(X509_info_st)
-assert alignment(X509_info_st) == 4, alignment(X509_info_st)
-X509_INFO = X509_info_st
-class Netscape_spkac_st(Structure):
-    pass
-Netscape_spkac_st._fields_ = [
-    ('pubkey', POINTER(X509_PUBKEY)),
-    ('challenge', POINTER(ASN1_IA5STRING)),
-]
-assert sizeof(Netscape_spkac_st) == 8, sizeof(Netscape_spkac_st)
-assert alignment(Netscape_spkac_st) == 4, alignment(Netscape_spkac_st)
-NETSCAPE_SPKAC = Netscape_spkac_st
-class Netscape_spki_st(Structure):
-    pass
-Netscape_spki_st._fields_ = [
-    ('spkac', POINTER(NETSCAPE_SPKAC)),
-    ('sig_algor', POINTER(X509_ALGOR)),
-    ('signature', POINTER(ASN1_BIT_STRING)),
-]
-assert sizeof(Netscape_spki_st) == 12, sizeof(Netscape_spki_st)
-assert alignment(Netscape_spki_st) == 4, alignment(Netscape_spki_st)
-NETSCAPE_SPKI = Netscape_spki_st
-class Netscape_certificate_sequence(Structure):
-    pass
-Netscape_certificate_sequence._fields_ = [
-    ('type', POINTER(ASN1_OBJECT)),
-    ('certs', POINTER(STACK)),
-]
-assert sizeof(Netscape_certificate_sequence) == 8, sizeof(Netscape_certificate_sequence)
-assert alignment(Netscape_certificate_sequence) == 4, alignment(Netscape_certificate_sequence)
-NETSCAPE_CERT_SEQUENCE = Netscape_certificate_sequence
-class PBEPARAM_st(Structure):
-    pass
-PBEPARAM_st._fields_ = [
-    ('salt', POINTER(ASN1_OCTET_STRING)),
-    ('iter', POINTER(ASN1_INTEGER)),
-]
-assert sizeof(PBEPARAM_st) == 8, sizeof(PBEPARAM_st)
-assert alignment(PBEPARAM_st) == 4, alignment(PBEPARAM_st)
-PBEPARAM = PBEPARAM_st
-class PBE2PARAM_st(Structure):
-    pass
-PBE2PARAM_st._fields_ = [
-    ('keyfunc', POINTER(X509_ALGOR)),
-    ('encryption', POINTER(X509_ALGOR)),
-]
-assert sizeof(PBE2PARAM_st) == 8, sizeof(PBE2PARAM_st)
-assert alignment(PBE2PARAM_st) == 4, alignment(PBE2PARAM_st)
-PBE2PARAM = PBE2PARAM_st
-class PBKDF2PARAM_st(Structure):
-    pass
-PBKDF2PARAM_st._fields_ = [
-    ('salt', POINTER(ASN1_TYPE)),
-    ('iter', POINTER(ASN1_INTEGER)),
-    ('keylength', POINTER(ASN1_INTEGER)),
-    ('prf', POINTER(X509_ALGOR)),
-]
-assert sizeof(PBKDF2PARAM_st) == 16, sizeof(PBKDF2PARAM_st)
-assert alignment(PBKDF2PARAM_st) == 4, alignment(PBKDF2PARAM_st)
-PBKDF2PARAM = PBKDF2PARAM_st
-class pkcs8_priv_key_info_st(Structure):
-    pass
-pkcs8_priv_key_info_st._fields_ = [
-    ('broken', c_int),
-    ('version', POINTER(ASN1_INTEGER)),
-    ('pkeyalg', POINTER(X509_ALGOR)),
-    ('pkey', POINTER(ASN1_TYPE)),
-    ('attributes', POINTER(STACK)),
-]
-assert sizeof(pkcs8_priv_key_info_st) == 20, sizeof(pkcs8_priv_key_info_st)
-assert alignment(pkcs8_priv_key_info_st) == 4, alignment(pkcs8_priv_key_info_st)
-PKCS8_PRIV_KEY_INFO = pkcs8_priv_key_info_st
-class x509_hash_dir_st(Structure):
-    pass
-x509_hash_dir_st._fields_ = [
-    ('num_dirs', c_int),
-    ('dirs', POINTER(STRING)),
-    ('dirs_type', POINTER(c_int)),
-    ('num_dirs_alloced', c_int),
-]
-assert sizeof(x509_hash_dir_st) == 16, sizeof(x509_hash_dir_st)
-assert alignment(x509_hash_dir_st) == 4, alignment(x509_hash_dir_st)
-X509_HASH_DIR_CTX = x509_hash_dir_st
-class x509_file_st(Structure):
-    pass
-x509_file_st._fields_ = [
-    ('num_paths', c_int),
-    ('num_alloced', c_int),
-    ('paths', POINTER(STRING)),
-    ('path_type', POINTER(c_int)),
-]
-assert sizeof(x509_file_st) == 16, sizeof(x509_file_st)
-assert alignment(x509_file_st) == 4, alignment(x509_file_st)
-X509_CERT_FILE_CTX = x509_file_st
-class x509_object_st(Structure):
-    pass
-class N14x509_object_st4DOLLAR_14E(Union):
-    pass
-N14x509_object_st4DOLLAR_14E._fields_ = [
-    ('ptr', STRING),
-    ('x509', POINTER(X509)),
-    ('crl', POINTER(X509_CRL)),
-    ('pkey', POINTER(EVP_PKEY)),
-]
-assert sizeof(N14x509_object_st4DOLLAR_14E) == 4, sizeof(N14x509_object_st4DOLLAR_14E)
-assert alignment(N14x509_object_st4DOLLAR_14E) == 4, alignment(N14x509_object_st4DOLLAR_14E)
-x509_object_st._fields_ = [
-    ('type', c_int),
-    ('data', N14x509_object_st4DOLLAR_14E),
-]
-assert sizeof(x509_object_st) == 8, sizeof(x509_object_st)
-assert alignment(x509_object_st) == 4, alignment(x509_object_st)
-X509_OBJECT = x509_object_st
-class x509_lookup_st(Structure):
-    pass
-X509_LOOKUP = x509_lookup_st
-class x509_lookup_method_st(Structure):
-    pass
-x509_lookup_method_st._fields_ = [
-    ('name', STRING),
-    ('new_item', CFUNCTYPE(c_int, POINTER(X509_LOOKUP))),
-    ('free', CFUNCTYPE(None, POINTER(X509_LOOKUP))),
-    ('init', CFUNCTYPE(c_int, POINTER(X509_LOOKUP))),
-    ('shutdown', CFUNCTYPE(c_int, POINTER(X509_LOOKUP))),
-    ('ctrl', CFUNCTYPE(c_int, POINTER(X509_LOOKUP), c_int, STRING, c_long, POINTER(STRING))),
-    ('get_by_subject', CFUNCTYPE(c_int, POINTER(X509_LOOKUP), c_int, POINTER(X509_NAME), POINTER(X509_OBJECT))),
-    ('get_by_issuer_serial', CFUNCTYPE(c_int, POINTER(X509_LOOKUP), c_int, POINTER(X509_NAME), POINTER(ASN1_INTEGER), POINTER(X509_OBJECT))),
-    ('get_by_fingerprint', CFUNCTYPE(c_int, POINTER(X509_LOOKUP), c_int, POINTER(c_ubyte), c_int, POINTER(X509_OBJECT))),
-    ('get_by_alias', CFUNCTYPE(c_int, POINTER(X509_LOOKUP), c_int, STRING, c_int, POINTER(X509_OBJECT))),
-]
-assert sizeof(x509_lookup_method_st) == 40, sizeof(x509_lookup_method_st)
-assert alignment(x509_lookup_method_st) == 4, alignment(x509_lookup_method_st)
-X509_LOOKUP_METHOD = x509_lookup_method_st
-x509_store_st._fields_ = [
-    ('cache', c_int),
-    ('objs', POINTER(STACK)),
-    ('get_cert_methods', POINTER(STACK)),
-    ('flags', c_ulong),
-    ('purpose', c_int),
-    ('trust', c_int),
-    ('verify', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX))),
-    ('verify_cb', CFUNCTYPE(c_int, c_int, POINTER(X509_STORE_CTX))),
-    ('get_issuer', CFUNCTYPE(c_int, POINTER(POINTER(X509)), POINTER(X509_STORE_CTX), POINTER(X509))),
-    ('check_issued', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX), POINTER(X509), POINTER(X509))),
-    ('check_revocation', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX))),
-    ('get_crl', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX), POINTER(POINTER(X509_CRL)), POINTER(X509))),
-    ('check_crl', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX), POINTER(X509_CRL))),
-    ('cert_crl', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX), POINTER(X509_CRL), POINTER(X509))),
-    ('cleanup', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX))),
-    ('ex_data', CRYPTO_EX_DATA),
-    ('references', c_int),
-    ('depth', c_int),
-]
-assert sizeof(x509_store_st) == 76, sizeof(x509_store_st)
-assert alignment(x509_store_st) == 4, alignment(x509_store_st)
-x509_lookup_st._fields_ = [
-    ('init', c_int),
-    ('skip', c_int),
-    ('method', POINTER(X509_LOOKUP_METHOD)),
-    ('method_data', STRING),
-    ('store_ctx', POINTER(X509_STORE)),
-]
-assert sizeof(x509_lookup_st) == 20, sizeof(x509_lookup_st)
-assert alignment(x509_lookup_st) == 4, alignment(x509_lookup_st)
-time_t = __darwin_time_t
-x509_store_ctx_st._fields_ = [
-    ('ctx', POINTER(X509_STORE)),
-    ('current_method', c_int),
-    ('cert', POINTER(X509)),
-    ('untrusted', POINTER(STACK)),
-    ('purpose', c_int),
-    ('trust', c_int),
-    ('check_time', time_t),
-    ('flags', c_ulong),
-    ('other_ctx', c_void_p),
-    ('verify', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX))),
-    ('verify_cb', CFUNCTYPE(c_int, c_int, POINTER(X509_STORE_CTX))),
-    ('get_issuer', CFUNCTYPE(c_int, POINTER(POINTER(X509)), POINTER(X509_STORE_CTX), POINTER(X509))),
-    ('check_issued', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX), POINTER(X509), POINTER(X509))),
-    ('check_revocation', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX))),
-    ('get_crl', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX), POINTER(POINTER(X509_CRL)), POINTER(X509))),
-    ('check_crl', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX), POINTER(X509_CRL))),
-    ('cert_crl', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX), POINTER(X509_CRL), POINTER(X509))),
-    ('cleanup', CFUNCTYPE(c_int, POINTER(X509_STORE_CTX))),
-    ('depth', c_int),
-    ('valid', c_int),
-    ('last_untrusted', c_int),
-    ('chain', POINTER(STACK)),
-    ('error_depth', c_int),
-    ('error', c_int),
-    ('current_cert', POINTER(X509)),
-    ('current_issuer', POINTER(X509)),
-    ('current_crl', POINTER(X509_CRL)),
-    ('ex_data', CRYPTO_EX_DATA),
-]
-assert sizeof(x509_store_ctx_st) == 116, sizeof(x509_store_ctx_st)
-assert alignment(x509_store_ctx_st) == 4, alignment(x509_store_ctx_st)
-va_list = __darwin_va_list
-__darwin_off_t = __int64_t
-fpos_t = __darwin_off_t
-class __sbuf(Structure):
-    pass
-__sbuf._fields_ = [
-    ('_base', POINTER(c_ubyte)),
-    ('_size', c_int),
-]
-assert sizeof(__sbuf) == 8, sizeof(__sbuf)
-assert alignment(__sbuf) == 4, alignment(__sbuf)
-class __sFILEX(Structure):
-    pass
-__sFILEX._fields_ = [
-]
-class __sFILE(Structure):
-    pass
-__sFILE._pack_ = 4
-__sFILE._fields_ = [
-    ('_p', POINTER(c_ubyte)),
-    ('_r', c_int),
-    ('_w', c_int),
-    ('_flags', c_short),
-    ('_file', c_short),
-    ('_bf', __sbuf),
-    ('_lbfsize', c_int),
-    ('_cookie', c_void_p),
-    ('_close', CFUNCTYPE(c_int, c_void_p)),
-    ('_read', CFUNCTYPE(c_int, c_void_p, STRING, c_int)),
-    ('_seek', CFUNCTYPE(fpos_t, c_void_p, c_longlong, c_int)),
-    ('_write', CFUNCTYPE(c_int, c_void_p, STRING, c_int)),
-    ('_ub', __sbuf),
-    ('_extra', POINTER(__sFILEX)),
-    ('_ur', c_int),
-    ('_ubuf', c_ubyte * 3),
-    ('_nbuf', c_ubyte * 1),
-    ('_lb', __sbuf),
-    ('_blksize', c_int),
-    ('_offset', fpos_t),
-]
-assert sizeof(__sFILE) == 88, sizeof(__sFILE)
-assert alignment(__sFILE) == 4, alignment(__sFILE)
-FILE = __sFILE
-ct_rune_t = __darwin_ct_rune_t
-rune_t = __darwin_rune_t
-class div_t(Structure):
-    pass
-div_t._fields_ = [
-    ('quot', c_int),
-    ('rem', c_int),
-]
-assert sizeof(div_t) == 8, sizeof(div_t)
-assert alignment(div_t) == 4, alignment(div_t)
-class ldiv_t(Structure):
-    pass
-ldiv_t._fields_ = [
-    ('quot', c_long),
-    ('rem', c_long),
-]
-assert sizeof(ldiv_t) == 8, sizeof(ldiv_t)
-assert alignment(ldiv_t) == 4, alignment(ldiv_t)
-class lldiv_t(Structure):
-    pass
-lldiv_t._pack_ = 4
-lldiv_t._fields_ = [
-    ('quot', c_longlong),
-    ('rem', c_longlong),
-]
-assert sizeof(lldiv_t) == 16, sizeof(lldiv_t)
-assert alignment(lldiv_t) == 4, alignment(lldiv_t)
-__darwin_dev_t = __int32_t
-dev_t = __darwin_dev_t
-__darwin_mode_t = __uint16_t
-mode_t = __darwin_mode_t
-class mcontext(Structure):
-    pass
-mcontext._fields_ = [
-]
-class mcontext64(Structure):
-    pass
-mcontext64._fields_ = [
-]
-class __darwin_pthread_handler_rec(Structure):
-    pass
-__darwin_pthread_handler_rec._fields_ = [
-    ('__routine', CFUNCTYPE(None, c_void_p)),
-    ('__arg', c_void_p),
-    ('__next', POINTER(__darwin_pthread_handler_rec)),
-]
-assert sizeof(__darwin_pthread_handler_rec) == 12, sizeof(__darwin_pthread_handler_rec)
-assert alignment(__darwin_pthread_handler_rec) == 4, alignment(__darwin_pthread_handler_rec)
-class _opaque_pthread_attr_t(Structure):
-    pass
-_opaque_pthread_attr_t._fields_ = [
-    ('__sig', c_long),
-    ('__opaque', c_char * 36),
-]
-assert sizeof(_opaque_pthread_attr_t) == 40, sizeof(_opaque_pthread_attr_t)
-assert alignment(_opaque_pthread_attr_t) == 4, alignment(_opaque_pthread_attr_t)
-class _opaque_pthread_cond_t(Structure):
-    pass
-_opaque_pthread_cond_t._fields_ = [
-    ('__sig', c_long),
-    ('__opaque', c_char * 24),
-]
-assert sizeof(_opaque_pthread_cond_t) == 28, sizeof(_opaque_pthread_cond_t)
-assert alignment(_opaque_pthread_cond_t) == 4, alignment(_opaque_pthread_cond_t)
-class _opaque_pthread_condattr_t(Structure):
-    pass
-_opaque_pthread_condattr_t._fields_ = [
-    ('__sig', c_long),
-    ('__opaque', c_char * 4),
-]
-assert sizeof(_opaque_pthread_condattr_t) == 8, sizeof(_opaque_pthread_condattr_t)
-assert alignment(_opaque_pthread_condattr_t) == 4, alignment(_opaque_pthread_condattr_t)
-class _opaque_pthread_mutex_t(Structure):
-    pass
-_opaque_pthread_mutex_t._fields_ = [
-    ('__sig', c_long),
-    ('__opaque', c_char * 40),
-]
-assert sizeof(_opaque_pthread_mutex_t) == 44, sizeof(_opaque_pthread_mutex_t)
-assert alignment(_opaque_pthread_mutex_t) == 4, alignment(_opaque_pthread_mutex_t)
-class _opaque_pthread_mutexattr_t(Structure):
-    pass
-_opaque_pthread_mutexattr_t._fields_ = [
-    ('__sig', c_long),
-    ('__opaque', c_char * 8),
-]
-assert sizeof(_opaque_pthread_mutexattr_t) == 12, sizeof(_opaque_pthread_mutexattr_t)
-assert alignment(_opaque_pthread_mutexattr_t) == 4, alignment(_opaque_pthread_mutexattr_t)
-class _opaque_pthread_once_t(Structure):
-    pass
-_opaque_pthread_once_t._fields_ = [
-    ('__sig', c_long),
-    ('__opaque', c_char * 4),
-]
-assert sizeof(_opaque_pthread_once_t) == 8, sizeof(_opaque_pthread_once_t)
-assert alignment(_opaque_pthread_once_t) == 4, alignment(_opaque_pthread_once_t)
-class _opaque_pthread_rwlock_t(Structure):
-    pass
-_opaque_pthread_rwlock_t._fields_ = [
-    ('__sig', c_long),
-    ('__opaque', c_char * 124),
-]
-assert sizeof(_opaque_pthread_rwlock_t) == 128, sizeof(_opaque_pthread_rwlock_t)
-assert alignment(_opaque_pthread_rwlock_t) == 4, alignment(_opaque_pthread_rwlock_t)
-class _opaque_pthread_rwlockattr_t(Structure):
-    pass
-_opaque_pthread_rwlockattr_t._fields_ = [
-    ('__sig', c_long),
-    ('__opaque', c_char * 12),
-]
-assert sizeof(_opaque_pthread_rwlockattr_t) == 16, sizeof(_opaque_pthread_rwlockattr_t)
-assert alignment(_opaque_pthread_rwlockattr_t) == 4, alignment(_opaque_pthread_rwlockattr_t)
-class _opaque_pthread_t(Structure):
-    pass
-_opaque_pthread_t._fields_ = [
-    ('__sig', c_long),
-    ('__cleanup_stack', POINTER(__darwin_pthread_handler_rec)),
-    ('__opaque', c_char * 596),
-]
-assert sizeof(_opaque_pthread_t) == 604, sizeof(_opaque_pthread_t)
-assert alignment(_opaque_pthread_t) == 4, alignment(_opaque_pthread_t)
-__darwin_blkcnt_t = __int64_t
-__darwin_blksize_t = __int32_t
-__darwin_fsblkcnt_t = c_uint
-__darwin_fsfilcnt_t = c_uint
-__darwin_gid_t = __uint32_t
-__darwin_id_t = __uint32_t
-__darwin_ino_t = __uint32_t
-__darwin_mach_port_name_t = __darwin_natural_t
-__darwin_mach_port_t = __darwin_mach_port_name_t
-__darwin_mcontext_t = POINTER(mcontext)
-__darwin_mcontext64_t = POINTER(mcontext64)
-__darwin_pid_t = __int32_t
-__darwin_pthread_attr_t = _opaque_pthread_attr_t
-__darwin_pthread_cond_t = _opaque_pthread_cond_t
-__darwin_pthread_condattr_t = _opaque_pthread_condattr_t
-__darwin_pthread_key_t = c_ulong
-__darwin_pthread_mutex_t = _opaque_pthread_mutex_t
-__darwin_pthread_mutexattr_t = _opaque_pthread_mutexattr_t
-__darwin_pthread_once_t = _opaque_pthread_once_t
-__darwin_pthread_rwlock_t = _opaque_pthread_rwlock_t
-__darwin_pthread_rwlockattr_t = _opaque_pthread_rwlockattr_t
-__darwin_pthread_t = POINTER(_opaque_pthread_t)
-__darwin_sigset_t = __uint32_t
-__darwin_suseconds_t = __int32_t
-__darwin_uid_t = __uint32_t
-__darwin_useconds_t = __uint32_t
-__darwin_uuid_t = c_ubyte * 16
-class sigaltstack(Structure):
-    pass
-sigaltstack._fields_ = [
-    ('ss_sp', c_void_p),
-    ('ss_size', __darwin_size_t),
-    ('ss_flags', c_int),
-]
-assert sizeof(sigaltstack) == 12, sizeof(sigaltstack)
-assert alignment(sigaltstack) == 4, alignment(sigaltstack)
-__darwin_stack_t = sigaltstack
-class ucontext(Structure):
-    pass
-ucontext._fields_ = [
-    ('uc_onstack', c_int),
-    ('uc_sigmask', __darwin_sigset_t),
-    ('uc_stack', __darwin_stack_t),
-    ('uc_link', POINTER(ucontext)),
-    ('uc_mcsize', __darwin_size_t),
-    ('uc_mcontext', __darwin_mcontext_t),
-]
-assert sizeof(ucontext) == 32, sizeof(ucontext)
-assert alignment(ucontext) == 4, alignment(ucontext)
-__darwin_ucontext_t = ucontext
-class ucontext64(Structure):
-    pass
-ucontext64._fields_ = [
-    ('uc_onstack', c_int),
-    ('uc_sigmask', __darwin_sigset_t),
-    ('uc_stack', __darwin_stack_t),
-    ('uc_link', POINTER(ucontext64)),
-    ('uc_mcsize', __darwin_size_t),
-    ('uc_mcontext64', __darwin_mcontext64_t),
-]
-assert sizeof(ucontext64) == 32, sizeof(ucontext64)
-assert alignment(ucontext64) == 4, alignment(ucontext64)
-__darwin_ucontext64_t = ucontext64
-class timeval(Structure):
-    pass
-timeval._fields_ = [
-    ('tv_sec', __darwin_time_t),
-    ('tv_usec', __darwin_suseconds_t),
-]
-assert sizeof(timeval) == 8, sizeof(timeval)
-assert alignment(timeval) == 4, alignment(timeval)
-rlim_t = __int64_t
-class rusage(Structure):
-    pass
-rusage._fields_ = [
-    ('ru_utime', timeval),
-    ('ru_stime', timeval),
-    ('ru_maxrss', c_long),
-    ('ru_ixrss', c_long),
-    ('ru_idrss', c_long),
-    ('ru_isrss', c_long),
-    ('ru_minflt', c_long),
-    ('ru_majflt', c_long),
-    ('ru_nswap', c_long),
-    ('ru_inblock', c_long),
-    ('ru_oublock', c_long),
-    ('ru_msgsnd', c_long),
-    ('ru_msgrcv', c_long),
-    ('ru_nsignals', c_long),
-    ('ru_nvcsw', c_long),
-    ('ru_nivcsw', c_long),
-]
-assert sizeof(rusage) == 72, sizeof(rusage)
-assert alignment(rusage) == 4, alignment(rusage)
-class rlimit(Structure):
-    pass
-rlimit._pack_ = 4
-rlimit._fields_ = [
-    ('rlim_cur', rlim_t),
-    ('rlim_max', rlim_t),
-]
-assert sizeof(rlimit) == 16, sizeof(rlimit)
-assert alignment(rlimit) == 4, alignment(rlimit)
-mcontext_t = __darwin_mcontext_t
-mcontext64_t = __darwin_mcontext64_t
-pthread_attr_t = __darwin_pthread_attr_t
-sigset_t = __darwin_sigset_t
-ucontext_t = __darwin_ucontext_t
-ucontext64_t = __darwin_ucontext64_t
-uid_t = __darwin_uid_t
-class sigval(Union):
-    pass
-sigval._fields_ = [
-    ('sival_int', c_int),
-    ('sival_ptr', c_void_p),
-]
-assert sizeof(sigval) == 4, sizeof(sigval)
-assert alignment(sigval) == 4, alignment(sigval)
-class sigevent(Structure):
-    pass
-sigevent._fields_ = [
-    ('sigev_notify', c_int),
-    ('sigev_signo', c_int),
-    ('sigev_value', sigval),
-    ('sigev_notify_function', CFUNCTYPE(None, sigval)),
-    ('sigev_notify_attributes', POINTER(pthread_attr_t)),
-]
-assert sizeof(sigevent) == 20, sizeof(sigevent)
-assert alignment(sigevent) == 4, alignment(sigevent)
-class __siginfo(Structure):
-    pass
-pid_t = __darwin_pid_t
-__siginfo._fields_ = [
-    ('si_signo', c_int),
-    ('si_errno', c_int),
-    ('si_code', c_int),
-    ('si_pid', pid_t),
-    ('si_uid', uid_t),
-    ('si_status', c_int),
-    ('si_addr', c_void_p),
-    ('si_value', sigval),
-    ('si_band', c_long),
-    ('pad', c_ulong * 7),
-]
-assert sizeof(__siginfo) == 64, sizeof(__siginfo)
-assert alignment(__siginfo) == 4, alignment(__siginfo)
-siginfo_t = __siginfo
-class __sigaction_u(Union):
-    pass
-__sigaction_u._fields_ = [
-    ('__sa_handler', CFUNCTYPE(None, c_int)),
-    ('__sa_sigaction', CFUNCTYPE(None, c_int, POINTER(__siginfo), c_void_p)),
-]
-assert sizeof(__sigaction_u) == 4, sizeof(__sigaction_u)
-assert alignment(__sigaction_u) == 4, alignment(__sigaction_u)
-class __sigaction(Structure):
-    pass
-__sigaction._fields_ = [
-    ('__sigaction_u', __sigaction_u),
-    ('sa_tramp', CFUNCTYPE(None, c_void_p, c_int, c_int, POINTER(siginfo_t), c_void_p)),
-    ('sa_mask', sigset_t),
-    ('sa_flags', c_int),
-]
-assert sizeof(__sigaction) == 16, sizeof(__sigaction)
-assert alignment(__sigaction) == 4, alignment(__sigaction)
-class sigaction(Structure):
-    pass
-sigaction._fields_ = [
-    ('__sigaction_u', __sigaction_u),
-    ('sa_mask', sigset_t),
-    ('sa_flags', c_int),
-]
-assert sizeof(sigaction) == 12, sizeof(sigaction)
-assert alignment(sigaction) == 4, alignment(sigaction)
-sig_t = CFUNCTYPE(None, c_int)
-stack_t = __darwin_stack_t
-class sigvec(Structure):
-    pass
-sigvec._fields_ = [
-    ('sv_handler', CFUNCTYPE(None, c_int)),
-    ('sv_mask', c_int),
-    ('sv_flags', c_int),
-]
-assert sizeof(sigvec) == 12, sizeof(sigvec)
-assert alignment(sigvec) == 4, alignment(sigvec)
-class sigstack(Structure):
-    pass
-sigstack._fields_ = [
-    ('ss_sp', STRING),
-    ('ss_onstack', c_int),
-]
-assert sizeof(sigstack) == 8, sizeof(sigstack)
-assert alignment(sigstack) == 4, alignment(sigstack)
-u_char = c_ubyte
-u_short = c_ushort
-u_int = c_uint
-u_long = c_ulong
-ushort = c_ushort
-uint = c_uint
-u_quad_t = u_int64_t
-quad_t = int64_t
-qaddr_t = POINTER(quad_t)
-caddr_t = STRING
-daddr_t = int32_t
-fixpt_t = u_int32_t
-blkcnt_t = __darwin_blkcnt_t
-blksize_t = __darwin_blksize_t
-gid_t = __darwin_gid_t
-in_addr_t = __uint32_t
-in_port_t = __uint16_t
-ino_t = __darwin_ino_t
-key_t = __int32_t
-nlink_t = __uint16_t
-off_t = __darwin_off_t
-segsz_t = int32_t
-swblk_t = int32_t
-clock_t = __darwin_clock_t
-ssize_t = __darwin_ssize_t
-useconds_t = __darwin_useconds_t
-suseconds_t = __darwin_suseconds_t
-fd_mask = __int32_t
-class fd_set(Structure):
-    pass
-fd_set._fields_ = [
-    ('fds_bits', __int32_t * 32),
-]
-assert sizeof(fd_set) == 128, sizeof(fd_set)
-assert alignment(fd_set) == 4, alignment(fd_set)
-pthread_cond_t = __darwin_pthread_cond_t
-pthread_condattr_t = __darwin_pthread_condattr_t
-pthread_mutex_t = __darwin_pthread_mutex_t
-pthread_mutexattr_t = __darwin_pthread_mutexattr_t
-pthread_once_t = __darwin_pthread_once_t
-pthread_rwlock_t = __darwin_pthread_rwlock_t
-pthread_rwlockattr_t = __darwin_pthread_rwlockattr_t
-pthread_t = __darwin_pthread_t
-pthread_key_t = __darwin_pthread_key_t
-fsblkcnt_t = __darwin_fsblkcnt_t
-fsfilcnt_t = __darwin_fsfilcnt_t
-
-# values for enumeration 'idtype_t'
-idtype_t = c_int # enum
-id_t = __darwin_id_t
-class wait(Union):
-    pass
-class N4wait3DOLLAR_3E(Structure):
-    pass
-N4wait3DOLLAR_3E._fields_ = [
-    ('w_Termsig', c_uint, 7),
-    ('w_Coredump', c_uint, 1),
-    ('w_Retcode', c_uint, 8),
-    ('w_Filler', c_uint, 16),
-]
-assert sizeof(N4wait3DOLLAR_3E) == 4, sizeof(N4wait3DOLLAR_3E)
-assert alignment(N4wait3DOLLAR_3E) == 4, alignment(N4wait3DOLLAR_3E)
-class N4wait3DOLLAR_4E(Structure):
-    pass
-N4wait3DOLLAR_4E._fields_ = [
-    ('w_Stopval', c_uint, 8),
-    ('w_Stopsig', c_uint, 8),
-    ('w_Filler', c_uint, 16),
-]
-assert sizeof(N4wait3DOLLAR_4E) == 4, sizeof(N4wait3DOLLAR_4E)
-assert alignment(N4wait3DOLLAR_4E) == 4, alignment(N4wait3DOLLAR_4E)
-wait._fields_ = [
-    ('w_status', c_int),
-    ('w_T', N4wait3DOLLAR_3E),
-    ('w_S', N4wait3DOLLAR_4E),
-]
-assert sizeof(wait) == 4, sizeof(wait)
-assert alignment(wait) == 4, alignment(wait)
-class timespec(Structure):
-    pass
-timespec._fields_ = [
-    ('tv_sec', time_t),
-    ('tv_nsec', c_long),
-]
-assert sizeof(timespec) == 8, sizeof(timespec)
-assert alignment(timespec) == 4, alignment(timespec)
-class tm(Structure):
-    pass
-tm._fields_ = [
-    ('tm_sec', c_int),
-    ('tm_min', c_int),
-    ('tm_hour', c_int),
-    ('tm_mday', c_int),
-    ('tm_mon', c_int),
-    ('tm_year', c_int),
-    ('tm_wday', c_int),
-    ('tm_yday', c_int),
-    ('tm_isdst', c_int),
-    ('tm_gmtoff', c_long),
-    ('tm_zone', STRING),
-]
-assert sizeof(tm) == 44, sizeof(tm)
-assert alignment(tm) == 4, alignment(tm)
-__gnuc_va_list = STRING
-ptrdiff_t = c_int
-int8_t = c_byte
-int16_t = c_short
-uint8_t = c_ubyte
-uint16_t = c_ushort
-uint32_t = c_uint
-uint64_t = c_ulonglong
-int_least8_t = int8_t
-int_least16_t = int16_t
-int_least32_t = int32_t
-int_least64_t = int64_t
-uint_least8_t = uint8_t
-uint_least16_t = uint16_t
-uint_least32_t = uint32_t
-uint_least64_t = uint64_t
-int_fast8_t = int8_t
-int_fast16_t = int16_t
-int_fast32_t = int32_t
-int_fast64_t = int64_t
-uint_fast8_t = uint8_t
-uint_fast16_t = uint16_t
-uint_fast32_t = uint32_t
-uint_fast64_t = uint64_t
-intptr_t = c_long
-uintptr_t = c_ulong
-intmax_t = c_longlong
-uintmax_t = c_ulonglong
-__all__ = ['ENGINE', 'pkcs7_enc_content_st', '__int16_t',
-           'X509_REVOKED', 'SSL_CTX', 'UIT_BOOLEAN',
-           '__darwin_time_t', 'ucontext64_t', 'int_fast32_t',
-           'pem_ctx_st', 'uint8_t', 'fpos_t', 'X509', 'COMP_CTX',
-           'tm', 'N10pem_ctx_st4DOLLAR_17E', 'swblk_t',
-           'ASN1_TEMPLATE', '__darwin_pthread_t', 'fixpt_t',
-           'BIO_METHOD', 'ASN1_PRINTABLESTRING', 'EVP_ENCODE_CTX',
-           'dh_method', 'bio_f_buffer_ctx_struct', 'in_port_t',
-           'X509_SIG', '__darwin_ssize_t', '__darwin_sigset_t',
-           'wait', 'uint_fast16_t', 'N12asn1_type_st4DOLLAR_11E',
-           'uint_least8_t', 'pthread_rwlock_t', 'ASN1_IA5STRING',
-           'fsfilcnt_t', 'ucontext', '__uint64_t', 'timespec',
-           'x509_cinf_st', 'COMP_METHOD', 'MD5_CTX', 'buf_mem_st',
-           'ASN1_ENCODING_st', 'PBEPARAM', 'X509_NAME_ENTRY',
-           '__darwin_va_list', 'ucontext_t', 'lhash_st',
-           'N4wait3DOLLAR_4E', '__darwin_uuid_t',
-           '_ossl_old_des_ks_struct', 'id_t', 'ASN1_BIT_STRING',
-           'va_list', '__darwin_wchar_t', 'pthread_key_t',
-           'pkcs7_signer_info_st', 'ASN1_METHOD', 'DSA_SIG', 'DSA',
-           'UIT_NONE', 'pthread_t', '__darwin_useconds_t',
-           'uint_fast8_t', 'UI_STRING', 'DES_cblock',
-           '__darwin_mcontext64_t', 'rlim_t', 'PEM_Encode_Seal_st',
-           'SHAstate_st', 'u_quad_t', 'openssl_fptr',
-           '_opaque_pthread_rwlockattr_t',
-           'N18x509_attributes_st4DOLLAR_13E',
-           '__darwin_pthread_rwlock_t', 'daddr_t', 'ui_string_st',
-           'x509_file_st', 'X509_req_info_st', 'int_least64_t',
-           'evp_Encode_Ctx_st', 'X509_OBJECTS', 'CRYPTO_EX_DATA',
-           '__int8_t', 'AUTHORITY_KEYID_st', '_opaque_pthread_attr_t',
-           'sigstack', 'EVP_CIPHER_CTX', 'X509_extension_st', 'pid_t',
-           'RSA_METHOD', 'PEM_USER', 'pem_recip_st', 'env_md_ctx_st',
-           'rc5_key_st', 'ui_st', 'X509_PUBKEY', 'u_int8_t',
-           'ASN1_ITEM_st', 'pkcs7_recip_info_st', 'ssl2_state_st',
-           'off_t', 'N10ssl_ctx_st4DOLLAR_18E', 'crypto_ex_data_st',
-           'ui_method_st', '__darwin_pthread_rwlockattr_t',
-           'CRYPTO_EX_dup', '__darwin_ino_t', '__sFILE',
-           'OSUnknownByteOrder', 'BN_MONT_CTX', 'ASN1_NULL', 'time_t',
-           'CRYPTO_EX_new', 'asn1_type_st', 'CRYPTO_EX_DATA_FUNCS',
-           'user_time_t', 'BIGNUM', 'pthread_rwlockattr_t',
-           'ASN1_VALUE_st', 'DH_METHOD', '__darwin_off_t',
-           '_opaque_pthread_t', 'bn_blinding_st', 'RSA', 'ssize_t',
-           'mcontext64_t', 'user_long_t', 'fsblkcnt_t', 'cert_st',
-           '__darwin_pthread_condattr_t', 'X509_PKEY',
-           '__darwin_id_t', '__darwin_nl_item', 'SSL2_STATE', 'FILE',
-           'pthread_mutexattr_t', 'size_t',
-           '_ossl_old_des_key_schedule', 'pkcs7_issuer_and_serial_st',
-           'sigval', 'CRYPTO_MEM_LEAK_CB', 'X509_NAME', 'blkcnt_t',
-           'uint_least16_t', '__darwin_dev_t', 'evp_cipher_info_st',
-           'BN_BLINDING', 'ssl3_state_st', 'uint_least64_t',
-           'user_addr_t', 'DES_key_schedule', 'RIPEMD160_CTX',
-           'u_char', 'X509_algor_st', 'uid_t', 'sess_cert_st',
-           'u_int64_t', 'u_int16_t', 'sigset_t', '__darwin_ptrdiff_t',
-           'ASN1_CTX', 'STACK', '__int32_t', 'UI_METHOD',
-           'NETSCAPE_SPKI', 'UIT_PROMPT', 'st_CRYPTO_EX_DATA_IMPL',
-           'cast_key_st', 'X509_HASH_DIR_CTX', 'sigevent',
-           'user_ssize_t', 'clock_t', 'aes_key_st',
-           '__darwin_socklen_t', '__darwin_intptr_t', 'int_fast64_t',
-           'asn1_string_table_st', 'uint_fast32_t',
-           'ASN1_VISIBLESTRING', 'DSA_SIG_st', 'obj_name_st',
-           'X509_LOOKUP_METHOD', 'u_int32_t', 'EVP_CIPHER_INFO',
-           '__gnuc_va_list', 'AES_KEY', 'PKCS7_ISSUER_AND_SERIAL',
-           'BN_CTX', '__darwin_blkcnt_t', 'key_t', 'SHA_CTX',
-           'pkcs7_signed_st', 'SSL', 'N10pem_ctx_st4DOLLAR_16E',
-           'pthread_attr_t', 'EVP_MD', 'uint', 'ASN1_BOOLEAN',
-           'ino_t', '__darwin_clock_t', 'ASN1_OCTET_STRING',
-           'asn1_ctx_st', 'BIO_F_BUFFER_CTX', 'bn_mont_ctx_st',
-           'X509_REQ_INFO', 'PEM_CTX', 'sigvec',
-           '__darwin_pthread_mutexattr_t', 'x509_attributes_st',
-           'stack_t', '__darwin_mode_t', '__mbstate_t',
-           'asn1_object_st', 'ASN1_ENCODING', '__uint8_t',
-           'LHASH_NODE', 'PKCS7_SIGNER_INFO', 'asn1_method_st',
-           'stack_st', 'bio_info_cb', 'div_t', 'UIT_VERIFY',
-           'PBEPARAM_st', 'N4wait3DOLLAR_3E', 'quad_t', '__siginfo',
-           '__darwin_mbstate_t', 'rsa_st', 'ASN1_UNIVERSALSTRING',
-           'uint64_t', 'ssl_comp_st', 'X509_OBJECT', 'pthread_cond_t',
-           'DH', '__darwin_wctype_t', 'PKCS7_ENVELOPE', 'ASN1_TLC_st',
-           'sig_atomic_t', 'BIO', 'nlink_t', 'BUF_MEM', 'SSL3_RECORD',
-           'bio_method_st', 'timeval', 'UI_string_types', 'BIO_dummy',
-           'ssl_ctx_st', 'NETSCAPE_CERT_SEQUENCE',
-           'BIT_STRING_BITNAME_st', '__darwin_pthread_attr_t',
-           'int8_t', '__darwin_wint_t', 'OBJ_NAME',
-           'PKCS8_PRIV_KEY_INFO', 'PBE2PARAM_st',
-           'LHASH_DOALL_FN_TYPE', 'x509_st', 'X509_VAL', 'dev_t',
-           'ASN1_TEMPLATE_st', 'MD5state_st', '__uint16_t',
-           'LHASH_DOALL_ARG_FN_TYPE', 'mdc2_ctx_st', 'SSL3_STATE',
-           'ssl3_buffer_st', 'ASN1_ITEM_EXP',
-           '_opaque_pthread_condattr_t', 'mode_t', 'ASN1_VALUE',
-           'qaddr_t', '__darwin_gid_t', 'EVP_PKEY', 'CRYPTO_EX_free',
-           '_ossl_old_des_cblock', 'X509_INFO', 'asn1_string_st',
-           'intptr_t', 'UIT_INFO', 'int_fast8_t', 'sigaltstack',
-           'env_md_st', 'LHASH', '__darwin_ucontext_t',
-           'PKCS7_SIGN_ENVELOPE', '__darwin_mcontext_t', 'ct_rune_t',
-           'MD2_CTX', 'pthread_once_t', 'SSL3_BUFFER', 'fd_mask',
-           'ASN1_TYPE', 'PKCS7_SIGNED', 'ssl3_record_st', 'BF_KEY',
-           'MD4state_st', 'MD4_CTX', 'int16_t', 'SSL_CIPHER',
-           'rune_t', 'X509_TRUST', 'siginfo_t', 'X509_STORE',
-           '__sbuf', 'X509_STORE_CTX', '__darwin_blksize_t', 'ldiv_t',
-           'ASN1_TIME', 'SSL_METHOD', 'X509_LOOKUP',
-           'Netscape_spki_st', 'P_PID', 'sigaction', 'sig_t',
-           'hostent', 'x509_cert_aux_st', '_opaque_pthread_cond_t',
-           'segsz_t', 'ushort', '__darwin_ct_rune_t', 'fd_set',
-           'BN_RECP_CTX', 'x509_lookup_st', 'uint16_t', 'pkcs7_st',
-           'asn1_header_st', '__darwin_pthread_key_t',
-           'x509_trust_st', '__darwin_pthread_handler_rec', 'int32_t',
-           'X509_CRL_INFO', 'N11evp_pkey_st4DOLLAR_12E', 'MDC2_CTX',
-           'N23_ossl_old_des_ks_struct4DOLLAR_10E', 'ASN1_HEADER',
-           'X509_crl_info_st', 'LHASH_HASH_FN_TYPE',
-           '_opaque_pthread_mutexattr_t', 'ssl_st',
-           'N8pkcs7_st4DOLLAR_15E', 'evp_pkey_st',
-           'pkcs7_signedandenveloped_st', '__darwin_mach_port_t',
-           'EVP_PBE_KEYGEN', '_opaque_pthread_mutex_t',
-           'ASN1_UTCTIME', 'mcontext', 'crypto_ex_data_func_st',
-           'u_long', 'PBKDF2PARAM_st', 'rc4_key_st', 'DSA_METHOD',
-           'EVP_CIPHER', 'BIT_STRING_BITNAME', 'PKCS7_RECIP_INFO',
-           'ssl3_enc_method', 'X509_CERT_AUX', 'uintmax_t',
-           'int_fast16_t', 'RC5_32_KEY', 'ucontext64', 'ASN1_INTEGER',
-           'u_short', 'N14x509_object_st4DOLLAR_14E', 'mcontext64',
-           'X509_sig_st', 'ASN1_GENERALSTRING', 'PKCS7', '__sFILEX',
-           'X509_name_entry_st', 'ssl_session_st', 'caddr_t',
-           'bignum_st', 'X509_CINF', '__darwin_pthread_cond_t',
-           'ASN1_TLC', 'PKCS7_ENCRYPT', 'NETSCAPE_SPKAC',
-           'Netscape_spkac_st', 'idtype_t', 'UIT_ERROR',
-           'uint_fast64_t', 'in_addr_t', 'pthread_mutex_t',
-           '__int64_t', 'ASN1_BMPSTRING', 'uint32_t',
-           'PEM_ENCODE_SEAL_CTX', 'suseconds_t', 'ASN1_OBJECT',
-           'X509_val_st', 'private_key_st', 'CRYPTO_dynlock',
-           'X509_objects_st', 'CRYPTO_EX_DATA_IMPL',
-           'pthread_condattr_t', 'PKCS7_DIGEST', 'uint_least32_t',
-           'ASN1_STRING', '__uint32_t', 'P_PGID', 'rsa_meth_st',
-           'X509_crl_st', 'RC2_KEY', '__darwin_fsfilcnt_t',
-           'X509_revoked_st', 'PBE2PARAM', 'blksize_t',
-           'Netscape_certificate_sequence', 'ssl_cipher_st',
-           'bignum_ctx', 'register_t', 'ASN1_UTF8STRING',
-           'pkcs7_encrypted_st', 'RC4_KEY', '__darwin_ucontext64_t',
-           'N13ssl2_state_st4DOLLAR_19E', 'bn_recp_ctx_st',
-           'CAST_KEY', 'X509_ATTRIBUTE', '__darwin_suseconds_t',
-           '__sigaction', 'user_ulong_t', 'syscall_arg_t',
-           'evp_cipher_ctx_st', 'X509_ALGOR', 'mcontext_t',
-           'const_DES_cblock', '__darwin_fsblkcnt_t', 'dsa_st',
-           'int_least8_t', 'MD2state_st', 'X509_EXTENSION',
-           'GEN_SESSION_CB', 'int_least16_t', '__darwin_wctrans_t',
-           'PBKDF2PARAM', 'x509_lookup_method_st', 'pem_password_cb',
-           'X509_info_st', 'x509_store_st', '__darwin_natural_t',
-           'X509_pubkey_st', 'pkcs7_digest_st', '__darwin_size_t',
-           'ASN1_STRING_TABLE', 'OSLittleEndian', 'RIPEMD160state_st',
-           'pkcs7_enveloped_st', 'UI', 'ptrdiff_t', 'X509_REQ',
-           'CRYPTO_dynlock_value', 'X509_req_st', 'x509_store_ctx_st',
-           'N13ssl3_state_st4DOLLAR_20E', 'lhash_node_st',
-           '__darwin_pthread_mutex_t', 'LHASH_COMP_FN_TYPE',
-           '__darwin_rune_t', 'rlimit', '__darwin_pthread_once_t',
-           'OSBigEndian', 'uintptr_t', '__darwin_uid_t', 'u_int',
-           'ASN1_T61STRING', 'gid_t', 'ssl_method_st', 'ASN1_ITEM',
-           'ASN1_ENUMERATED', '_opaque_pthread_rwlock_t',
-           'pkcs8_priv_key_info_st', 'intmax_t', 'sigcontext',
-           'X509_CRL', 'rc2_key_st', 'engine_st', 'x509_object_st',
-           '_opaque_pthread_once_t', 'DES_ks', 'SSL_COMP',
-           'dsa_method', 'int64_t', 'bio_st', 'bf_key_st',
-           'ASN1_GENERALIZEDTIME', 'PKCS7_ENC_CONTENT',
-           '__darwin_pid_t', 'lldiv_t', 'comp_method_st',
-           'EVP_MD_CTX', 'evp_cipher_st', 'X509_name_st',
-           'x509_hash_dir_st', '__darwin_mach_port_name_t',
-           'useconds_t', 'user_size_t', 'SSL_SESSION', 'rusage',
-           'ssl_crock_st', 'int_least32_t', '__sigaction_u', 'dh_st',
-           'P_ALL', '__darwin_stack_t', 'N6DES_ks3DOLLAR_9E',
-           'comp_ctx_st', 'X509_CERT_FILE_CTX']
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/py2_test_grammar.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/py2_test_grammar.py
deleted file mode 100644
index 06f2ddb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/py2_test_grammar.py
+++ /dev/null
@@ -1,974 +0,0 @@
-# Python test set -- part 1, grammar.
-# This just tests whether the parser accepts them all.
-
-# NOTE: When you run this test as a script from the command line, you
-# get warnings about certain hex/oct constants.  Since those are
-# issued by the parser, you can't suppress them by adding a
-# filterwarnings() call to this module.  Therefore, to shut up the
-# regression test, the filterwarnings() call has been added to
-# regrtest.py.
-
-from test.test_support import run_unittest, check_syntax_error
-import unittest
-import sys
-# testing import *
-from sys import *
-
-class TokenTests(unittest.TestCase):
-
-    def testBackslash(self):
-        # Backslash means line continuation:
-        x = 1 \
-        + 1
-        self.assertEquals(x, 2, 'backslash for line continuation')
-
-        # Backslash does not means continuation in comments :\
-        x = 0
-        self.assertEquals(x, 0, 'backslash ending comment')
-
-    def testPlainIntegers(self):
-        self.assertEquals(0xff, 255)
-        self.assertEquals(0377, 255)
-        self.assertEquals(2147483647, 017777777777)
-        # "0x" is not a valid literal
-        self.assertRaises(SyntaxError, eval, "0x")
-        from sys import maxint
-        if maxint == 2147483647:
-            self.assertEquals(-2147483647-1, -020000000000)
-            # XXX -2147483648
-            self.assert_(037777777777 > 0)
-            self.assert_(0xffffffff > 0)
-            for s in '2147483648', '040000000000', '0x100000000':
-                try:
-                    x = eval(s)
-                except OverflowError:
-                    self.fail("OverflowError on huge integer literal %r" % s)
-        elif maxint == 9223372036854775807:
-            self.assertEquals(-9223372036854775807-1, -01000000000000000000000)
-            self.assert_(01777777777777777777777 > 0)
-            self.assert_(0xffffffffffffffff > 0)
-            for s in '9223372036854775808', '02000000000000000000000', \
-                     '0x10000000000000000':
-                try:
-                    x = eval(s)
-                except OverflowError:
-                    self.fail("OverflowError on huge integer literal %r" % s)
-        else:
-            self.fail('Weird maxint value %r' % maxint)
-
-    def testLongIntegers(self):
-        x = 0L
-        x = 0l
-        x = 0xffffffffffffffffL
-        x = 0xffffffffffffffffl
-        x = 077777777777777777L
-        x = 077777777777777777l
-        x = 123456789012345678901234567890L
-        x = 123456789012345678901234567890l
-
-    def testFloats(self):
-        x = 3.14
-        x = 314.
-        x = 0.314
-        # XXX x = 000.314
-        x = .314
-        x = 3e14
-        x = 3E14
-        x = 3e-14
-        x = 3e+14
-        x = 3.e14
-        x = .3e14
-        x = 3.1e4
-
-    def testStringLiterals(self):
-        x = ''; y = ""; self.assert_(len(x) == 0 and x == y)
-        x = '\''; y = "'"; self.assert_(len(x) == 1 and x == y and ord(x) == 39)
-        x = '"'; y = "\""; self.assert_(len(x) == 1 and x == y and ord(x) == 34)
-        x = "doesn't \"shrink\" does it"
-        y = 'doesn\'t "shrink" does it'
-        self.assert_(len(x) == 24 and x == y)
-        x = "does \"shrink\" doesn't it"
-        y = 'does "shrink" doesn\'t it'
-        self.assert_(len(x) == 24 and x == y)
-        x = """
-The "quick"
-brown fox
-jumps over
-the 'lazy' dog.
-"""
-        y = '\nThe "quick"\nbrown fox\njumps over\nthe \'lazy\' dog.\n'
-        self.assertEquals(x, y)
-        y = '''
-The "quick"
-brown fox
-jumps over
-the 'lazy' dog.
-'''
-        self.assertEquals(x, y)
-        y = "\n\
-The \"quick\"\n\
-brown fox\n\
-jumps over\n\
-the 'lazy' dog.\n\
-"
-        self.assertEquals(x, y)
-        y = '\n\
-The \"quick\"\n\
-brown fox\n\
-jumps over\n\
-the \'lazy\' dog.\n\
-'
-        self.assertEquals(x, y)
-
-
-class GrammarTests(unittest.TestCase):
-
-    # single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE
-    # XXX can't test in a script -- this rule is only used when interactive
-
-    # file_input: (NEWLINE | stmt)* ENDMARKER
-    # Being tested as this very moment this very module
-
-    # expr_input: testlist NEWLINE
-    # XXX Hard to test -- used only in calls to input()
-
-    def testEvalInput(self):
-        # testlist ENDMARKER
-        x = eval('1, 0 or 1')
-
-    def testFuncdef(self):
-        ### 'def' NAME parameters ':' suite
-        ### parameters: '(' [varargslist] ')'
-        ### varargslist: (fpdef ['=' test] ',')* ('*' NAME [',' ('**'|'*' '*') NAME]
-        ###            | ('**'|'*' '*') NAME)
-        ###            | fpdef ['=' test] (',' fpdef ['=' test])* [',']
-        ### fpdef: NAME | '(' fplist ')'
-        ### fplist: fpdef (',' fpdef)* [',']
-        ### arglist: (argument ',')* (argument | *' test [',' '**' test] | '**' test)
-        ### argument: [test '='] test   # Really [keyword '='] test
-        def f1(): pass
-        f1()
-        f1(*())
-        f1(*(), **{})
-        def f2(one_argument): pass
-        def f3(two, arguments): pass
-        def f4(two, (compound, (argument, list))): pass
-        def f5((compound, first), two): pass
-        self.assertEquals(f2.func_code.co_varnames, ('one_argument',))
-        self.assertEquals(f3.func_code.co_varnames, ('two', 'arguments'))
-        if sys.platform.startswith('java'):
-            self.assertEquals(f4.func_code.co_varnames,
-                   ('two', '(compound, (argument, list))', 'compound', 'argument',
-                                'list',))
-            self.assertEquals(f5.func_code.co_varnames,
-                   ('(compound, first)', 'two', 'compound', 'first'))
-        else:
-            self.assertEquals(f4.func_code.co_varnames,
-                  ('two', '.1', 'compound', 'argument',  'list'))
-            self.assertEquals(f5.func_code.co_varnames,
-                  ('.0', 'two', 'compound', 'first'))
-        def a1(one_arg,): pass
-        def a2(two, args,): pass
-        def v0(*rest): pass
-        def v1(a, *rest): pass
-        def v2(a, b, *rest): pass
-        def v3(a, (b, c), *rest): return a, b, c, rest
-
-        f1()
-        f2(1)
-        f2(1,)
-        f3(1, 2)
-        f3(1, 2,)
-        f4(1, (2, (3, 4)))
-        v0()
-        v0(1)
-        v0(1,)
-        v0(1,2)
-        v0(1,2,3,4,5,6,7,8,9,0)
-        v1(1)
-        v1(1,)
-        v1(1,2)
-        v1(1,2,3)
-        v1(1,2,3,4,5,6,7,8,9,0)
-        v2(1,2)
-        v2(1,2,3)
-        v2(1,2,3,4)
-        v2(1,2,3,4,5,6,7,8,9,0)
-        v3(1,(2,3))
-        v3(1,(2,3),4)
-        v3(1,(2,3),4,5,6,7,8,9,0)
-
-        # ceval unpacks the formal arguments into the first argcount names;
-        # thus, the names nested inside tuples must appear after these names.
-        if sys.platform.startswith('java'):
-            self.assertEquals(v3.func_code.co_varnames, ('a', '(b, c)', 'rest', 'b', 'c'))
-        else:
-            self.assertEquals(v3.func_code.co_varnames, ('a', '.1', 'rest', 'b', 'c'))
-        self.assertEquals(v3(1, (2, 3), 4), (1, 2, 3, (4,)))
-        def d01(a=1): pass
-        d01()
-        d01(1)
-        d01(*(1,))
-        d01(**{'a':2})
-        def d11(a, b=1): pass
-        d11(1)
-        d11(1, 2)
-        d11(1, **{'b':2})
-        def d21(a, b, c=1): pass
-        d21(1, 2)
-        d21(1, 2, 3)
-        d21(*(1, 2, 3))
-        d21(1, *(2, 3))
-        d21(1, 2, *(3,))
-        d21(1, 2, **{'c':3})
-        def d02(a=1, b=2): pass
-        d02()
-        d02(1)
-        d02(1, 2)
-        d02(*(1, 2))
-        d02(1, *(2,))
-        d02(1, **{'b':2})
-        d02(**{'a': 1, 'b': 2})
-        def d12(a, b=1, c=2): pass
-        d12(1)
-        d12(1, 2)
-        d12(1, 2, 3)
-        def d22(a, b, c=1, d=2): pass
-        d22(1, 2)
-        d22(1, 2, 3)
-        d22(1, 2, 3, 4)
-        def d01v(a=1, *rest): pass
-        d01v()
-        d01v(1)
-        d01v(1, 2)
-        d01v(*(1, 2, 3, 4))
-        d01v(*(1,))
-        d01v(**{'a':2})
-        def d11v(a, b=1, *rest): pass
-        d11v(1)
-        d11v(1, 2)
-        d11v(1, 2, 3)
-        def d21v(a, b, c=1, *rest): pass
-        d21v(1, 2)
-        d21v(1, 2, 3)
-        d21v(1, 2, 3, 4)
-        d21v(*(1, 2, 3, 4))
-        d21v(1, 2, **{'c': 3})
-        def d02v(a=1, b=2, *rest): pass
-        d02v()
-        d02v(1)
-        d02v(1, 2)
-        d02v(1, 2, 3)
-        d02v(1, *(2, 3, 4))
-        d02v(**{'a': 1, 'b': 2})
-        def d12v(a, b=1, c=2, *rest): pass
-        d12v(1)
-        d12v(1, 2)
-        d12v(1, 2, 3)
-        d12v(1, 2, 3, 4)
-        d12v(*(1, 2, 3, 4))
-        d12v(1, 2, *(3, 4, 5))
-        d12v(1, *(2,), **{'c': 3})
-        def d22v(a, b, c=1, d=2, *rest): pass
-        d22v(1, 2)
-        d22v(1, 2, 3)
-        d22v(1, 2, 3, 4)
-        d22v(1, 2, 3, 4, 5)
-        d22v(*(1, 2, 3, 4))
-        d22v(1, 2, *(3, 4, 5))
-        d22v(1, *(2, 3), **{'d': 4})
-        def d31v((x)): pass
-        d31v(1)
-        def d32v((x,)): pass
-        d32v((1,))
-
-        # keyword arguments after *arglist
-        def f(*args, **kwargs):
-            return args, kwargs
-        self.assertEquals(f(1, x=2, *[3, 4], y=5), ((1, 3, 4),
-                                                    {'x':2, 'y':5}))
-        self.assertRaises(SyntaxError, eval, "f(1, *(2,3), 4)")
-        self.assertRaises(SyntaxError, eval, "f(1, x=2, *(3,4), x=5)")
-
-        # Check ast errors in *args and *kwargs
-        check_syntax_error(self, "f(*g(1=2))")
-        check_syntax_error(self, "f(**g(1=2))")
-
-    def testLambdef(self):
-        ### lambdef: 'lambda' [varargslist] ':' test
-        l1 = lambda : 0
-        self.assertEquals(l1(), 0)
-        l2 = lambda : a[d] # XXX just testing the expression
-        l3 = lambda : [2 < x for x in [-1, 3, 0L]]
-        self.assertEquals(l3(), [0, 1, 0])
-        l4 = lambda x = lambda y = lambda z=1 : z : y() : x()
-        self.assertEquals(l4(), 1)
-        l5 = lambda x, y, z=2: x + y + z
-        self.assertEquals(l5(1, 2), 5)
-        self.assertEquals(l5(1, 2, 3), 6)
-        check_syntax_error(self, "lambda x: x = 2")
-        check_syntax_error(self, "lambda (None,): None")
-
-    ### stmt: simple_stmt | compound_stmt
-    # Tested below
-
-    def testSimpleStmt(self):
-        ### simple_stmt: small_stmt (';' small_stmt)* [';']
-        x = 1; pass; del x
-        def foo():
-            # verify statements that end with semi-colons
-            x = 1; pass; del x;
-        foo()
-
-    ### small_stmt: expr_stmt | print_stmt  | pass_stmt | del_stmt | flow_stmt | import_stmt | global_stmt | access_stmt | exec_stmt
-    # Tested below
-
-    def testExprStmt(self):
-        # (exprlist '=')* exprlist
-        1
-        1, 2, 3
-        x = 1
-        x = 1, 2, 3
-        x = y = z = 1, 2, 3
-        x, y, z = 1, 2, 3
-        abc = a, b, c = x, y, z = xyz = 1, 2, (3, 4)
-
-        check_syntax_error(self, "x + 1 = 1")
-        check_syntax_error(self, "a + 1 = b + 2")
-
-    def testPrintStmt(self):
-        # 'print' (test ',')* [test]
-        import StringIO
-
-        # Can't test printing to real stdout without comparing output
-        # which is not available in unittest.
-        save_stdout = sys.stdout
-        sys.stdout = StringIO.StringIO()
-
-        print 1, 2, 3
-        print 1, 2, 3,
-        print
-        print 0 or 1, 0 or 1,
-        print 0 or 1
-
-        # 'print' '>>' test ','
-        print >> sys.stdout, 1, 2, 3
-        print >> sys.stdout, 1, 2, 3,
-        print >> sys.stdout
-        print >> sys.stdout, 0 or 1, 0 or 1,
-        print >> sys.stdout, 0 or 1
-
-        # test printing to an instance
-        class Gulp:
-            def write(self, msg): pass
-
-        gulp = Gulp()
-        print >> gulp, 1, 2, 3
-        print >> gulp, 1, 2, 3,
-        print >> gulp
-        print >> gulp, 0 or 1, 0 or 1,
-        print >> gulp, 0 or 1
-
-        # test print >> None
-        def driver():
-            oldstdout = sys.stdout
-            sys.stdout = Gulp()
-            try:
-                tellme(Gulp())
-                tellme()
-            finally:
-                sys.stdout = oldstdout
-
-        # we should see this once
-        def tellme(file=sys.stdout):
-            print >> file, 'hello world'
-
-        driver()
-
-        # we should not see this at all
-        def tellme(file=None):
-            print >> file, 'goodbye universe'
-
-        driver()
-
-        self.assertEqual(sys.stdout.getvalue(), '''\
-1 2 3
-1 2 3
-1 1 1
-1 2 3
-1 2 3
-1 1 1
-hello world
-''')
-        sys.stdout = save_stdout
-
-        # syntax errors
-        check_syntax_error(self, 'print ,')
-        check_syntax_error(self, 'print >> x,')
-
-    def testDelStmt(self):
-        # 'del' exprlist
-        abc = [1,2,3]
-        x, y, z = abc
-        xyz = x, y, z
-
-        del abc
-        del x, y, (z, xyz)
-
-    def testPassStmt(self):
-        # 'pass'
-        pass
-
-    # flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt
-    # Tested below
-
-    def testBreakStmt(self):
-        # 'break'
-        while 1: break
-
-    def testContinueStmt(self):
-        # 'continue'
-        i = 1
-        while i: i = 0; continue
-
-        msg = ""
-        while not msg:
-            msg = "ok"
-            try:
-                continue
-                msg = "continue failed to continue inside try"
-            except:
-                msg = "continue inside try called except block"
-        if msg != "ok":
-            self.fail(msg)
-
-        msg = ""
-        while not msg:
-            msg = "finally block not called"
-            try:
-                continue
-            finally:
-                msg = "ok"
-        if msg != "ok":
-            self.fail(msg)
-
-    def test_break_continue_loop(self):
-        # This test warrants an explanation. It is a test specifically for SF bugs
-        # #463359 and #462937. The bug is that a 'break' statement executed or
-        # exception raised inside a try/except inside a loop, *after* a continue
-        # statement has been executed in that loop, will cause the wrong number of
-        # arguments to be popped off the stack and the instruction pointer reset to
-        # a very small number (usually 0.) Because of this, the following test
-        # *must* written as a function, and the tracking vars *must* be function
-        # arguments with default values. Otherwise, the test will loop and loop.
-
-        def test_inner(extra_burning_oil = 1, count=0):
-            big_hippo = 2
-            while big_hippo:
-                count += 1
-                try:
-                    if extra_burning_oil and big_hippo == 1:
-                        extra_burning_oil -= 1
-                        break
-                    big_hippo -= 1
-                    continue
-                except:
-                    raise
-            if count > 2 or big_hippo <> 1:
-                self.fail("continue then break in try/except in loop broken!")
-        test_inner()
-
-    def testReturn(self):
-        # 'return' [testlist]
-        def g1(): return
-        def g2(): return 1
-        g1()
-        x = g2()
-        check_syntax_error(self, "class foo:return 1")
-
-    def testYield(self):
-        check_syntax_error(self, "class foo:yield 1")
-
-    def testRaise(self):
-        # 'raise' test [',' test]
-        try: raise RuntimeError, 'just testing'
-        except RuntimeError: pass
-        try: raise KeyboardInterrupt
-        except KeyboardInterrupt: pass
-
-    def testImport(self):
-        # 'import' dotted_as_names
-        import sys
-        import time, sys
-        # 'from' dotted_name 'import' ('*' | '(' import_as_names ')' | import_as_names)
-        from time import time
-        from time import (time)
-        # not testable inside a function, but already done at top of the module
-        # from sys import *
-        from sys import path, argv
-        from sys import (path, argv)
-        from sys import (path, argv,)
-
-    def testGlobal(self):
-        # 'global' NAME (',' NAME)*
-        global a
-        global a, b
-        global one, two, three, four, five, six, seven, eight, nine, ten
-
-    def testExec(self):
-        # 'exec' expr ['in' expr [',' expr]]
-        z = None
-        del z
-        exec 'z=1+1\n'
-        if z != 2: self.fail('exec \'z=1+1\'\\n')
-        del z
-        exec 'z=1+1'
-        if z != 2: self.fail('exec \'z=1+1\'')
-        z = None
-        del z
-        import types
-        if hasattr(types, "UnicodeType"):
-            exec r"""if 1:
-            exec u'z=1+1\n'
-            if z != 2: self.fail('exec u\'z=1+1\'\\n')
-            del z
-            exec u'z=1+1'
-            if z != 2: self.fail('exec u\'z=1+1\'')"""
-        g = {}
-        exec 'z = 1' in g
-        if g.has_key('__builtins__'): del g['__builtins__']
-        if g != {'z': 1}: self.fail('exec \'z = 1\' in g')
-        g = {}
-        l = {}
-
-        import warnings
-        warnings.filterwarnings("ignore", "global statement", module="<string>")
-        exec 'global a; a = 1; b = 2' in g, l
-        if g.has_key('__builtins__'): del g['__builtins__']
-        if l.has_key('__builtins__'): del l['__builtins__']
-        if (g, l) != ({'a':1}, {'b':2}):
-            self.fail('exec ... in g (%s), l (%s)' %(g,l))
-
-    def testAssert(self):
-        # assert_stmt: 'assert' test [',' test]
-        assert 1
-        assert 1, 1
-        assert lambda x:x
-        assert 1, lambda x:x+1
-        try:
-            assert 0, "msg"
-        except AssertionError, e:
-            self.assertEquals(e.args[0], "msg")
-        else:
-            if __debug__:
-                self.fail("AssertionError not raised by assert 0")
-
-    ### compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef
-    # Tested below
-
-    def testIf(self):
-        # 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite]
-        if 1: pass
-        if 1: pass
-        else: pass
-        if 0: pass
-        elif 0: pass
-        if 0: pass
-        elif 0: pass
-        elif 0: pass
-        elif 0: pass
-        else: pass
-
-    def testWhile(self):
-        # 'while' test ':' suite ['else' ':' suite]
-        while 0: pass
-        while 0: pass
-        else: pass
-
-        # Issue1920: "while 0" is optimized away,
-        # ensure that the "else" clause is still present.
-        x = 0
-        while 0:
-            x = 1
-        else:
-            x = 2
-        self.assertEquals(x, 2)
-
-    def testFor(self):
-        # 'for' exprlist 'in' exprlist ':' suite ['else' ':' suite]
-        for i in 1, 2, 3: pass
-        for i, j, k in (): pass
-        else: pass
-        class Squares:
-            def __init__(self, max):
-                self.max = max
-                self.sofar = []
-            def __len__(self): return len(self.sofar)
-            def __getitem__(self, i):
-                if not 0 <= i < self.max: raise IndexError
-                n = len(self.sofar)
-                while n <= i:
-                    self.sofar.append(n*n)
-                    n = n+1
-                return self.sofar[i]
-        n = 0
-        for x in Squares(10): n = n+x
-        if n != 285:
-            self.fail('for over growing sequence')
-
-        result = []
-        for x, in [(1,), (2,), (3,)]:
-            result.append(x)
-        self.assertEqual(result, [1, 2, 3])
-
-    def testTry(self):
-        ### try_stmt: 'try' ':' suite (except_clause ':' suite)+ ['else' ':' suite]
-        ###         | 'try' ':' suite 'finally' ':' suite
-        ### except_clause: 'except' [expr [('as' | ',') expr]]
-        try:
-            1/0
-        except ZeroDivisionError:
-            pass
-        else:
-            pass
-        try: 1/0
-        except EOFError: pass
-        except TypeError as msg: pass
-        except RuntimeError, msg: pass
-        except: pass
-        else: pass
-        try: 1/0
-        except (EOFError, TypeError, ZeroDivisionError): pass
-        try: 1/0
-        except (EOFError, TypeError, ZeroDivisionError), msg: pass
-        try: pass
-        finally: pass
-
-    def testSuite(self):
-        # simple_stmt | NEWLINE INDENT NEWLINE* (stmt NEWLINE*)+ DEDENT
-        if 1: pass
-        if 1:
-            pass
-        if 1:
-            #
-            #
-            #
-            pass
-            pass
-            #
-            pass
-            #
-
-    def testTest(self):
-        ### and_test ('or' and_test)*
-        ### and_test: not_test ('and' not_test)*
-        ### not_test: 'not' not_test | comparison
-        if not 1: pass
-        if 1 and 1: pass
-        if 1 or 1: pass
-        if not not not 1: pass
-        if not 1 and 1 and 1: pass
-        if 1 and 1 or 1 and 1 and 1 or not 1 and 1: pass
-
-    def testComparison(self):
-        ### comparison: expr (comp_op expr)*
-        ### comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not'
-        if 1: pass
-        x = (1 == 1)
-        if 1 == 1: pass
-        if 1 != 1: pass
-        if 1 <> 1: pass
-        if 1 < 1: pass
-        if 1 > 1: pass
-        if 1 <= 1: pass
-        if 1 >= 1: pass
-        if 1 is 1: pass
-        if 1 is not 1: pass
-        if 1 in (): pass
-        if 1 not in (): pass
-        if 1 < 1 > 1 == 1 >= 1 <= 1 <> 1 != 1 in 1 not in 1 is 1 is not 1: pass
-
-    def testBinaryMaskOps(self):
-        x = 1 & 1
-        x = 1 ^ 1
-        x = 1 | 1
-
-    def testShiftOps(self):
-        x = 1 << 1
-        x = 1 >> 1
-        x = 1 << 1 >> 1
-
-    def testAdditiveOps(self):
-        x = 1
-        x = 1 + 1
-        x = 1 - 1 - 1
-        x = 1 - 1 + 1 - 1 + 1
-
-    def testMultiplicativeOps(self):
-        x = 1 * 1
-        x = 1 / 1
-        x = 1 % 1
-        x = 1 / 1 * 1 % 1
-
-    def testUnaryOps(self):
-        x = +1
-        x = -1
-        x = ~1
-        x = ~1 ^ 1 & 1 | 1 & 1 ^ -1
-        x = -1*1/1 + 1*1 - ---1*1
-
-    def testSelectors(self):
-        ### trailer: '(' [testlist] ')' | '[' subscript ']' | '.' NAME
-        ### subscript: expr | [expr] ':' [expr]
-
-        import sys, time
-        c = sys.path[0]
-        x = time.time()
-        x = sys.modules['time'].time()
-        a = '01234'
-        c = a[0]
-        c = a[-1]
-        s = a[0:5]
-        s = a[:5]
-        s = a[0:]
-        s = a[:]
-        s = a[-5:]
-        s = a[:-1]
-        s = a[-4:-3]
-        # A rough test of SF bug 1333982.  http://python.org/sf/1333982
-        # The testing here is fairly incomplete.
-        # Test cases should include: commas with 1 and 2 colons
-        d = {}
-        d[1] = 1
-        d[1,] = 2
-        d[1,2] = 3
-        d[1,2,3] = 4
-        L = list(d)
-        L.sort()
-        self.assertEquals(str(L), '[1, (1,), (1, 2), (1, 2, 3)]')
-
-    def testAtoms(self):
-        ### atom: '(' [testlist] ')' | '[' [testlist] ']' | '{' [dictmaker] '}' | '`' testlist '`' | NAME | NUMBER | STRING
-        ### dictmaker: test ':' test (',' test ':' test)* [',']
-
-        x = (1)
-        x = (1 or 2 or 3)
-        x = (1 or 2 or 3, 2, 3)
-
-        x = []
-        x = [1]
-        x = [1 or 2 or 3]
-        x = [1 or 2 or 3, 2, 3]
-        x = []
-
-        x = {}
-        x = {'one': 1}
-        x = {'one': 1,}
-        x = {'one' or 'two': 1 or 2}
-        x = {'one': 1, 'two': 2}
-        x = {'one': 1, 'two': 2,}
-        x = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6}
-
-        x = `x`
-        x = `1 or 2 or 3`
-        self.assertEqual(`1,2`, '(1, 2)')
-
-        x = x
-        x = 'x'
-        x = 123
-
-    ### exprlist: expr (',' expr)* [',']
-    ### testlist: test (',' test)* [',']
-    # These have been exercised enough above
-
-    def testClassdef(self):
-        # 'class' NAME ['(' [testlist] ')'] ':' suite
-        class B: pass
-        class B2(): pass
-        class C1(B): pass
-        class C2(B): pass
-        class D(C1, C2, B): pass
-        class C:
-            def meth1(self): pass
-            def meth2(self, arg): pass
-            def meth3(self, a1, a2): pass
-        # decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
-        # decorators: decorator+
-        # decorated: decorators (classdef | funcdef)
-        def class_decorator(x):
-            x.decorated = True
-            return x
-        @class_decorator
-        class G:
-            pass
-        self.assertEqual(G.decorated, True)
-
-    def testListcomps(self):
-        # list comprehension tests
-        nums = [1, 2, 3, 4, 5]
-        strs = ["Apple", "Banana", "Coconut"]
-        spcs = ["  Apple", " Banana ", "Coco  nut  "]
-
-        self.assertEqual([s.strip() for s in spcs], ['Apple', 'Banana', 'Coco  nut'])
-        self.assertEqual([3 * x for x in nums], [3, 6, 9, 12, 15])
-        self.assertEqual([x for x in nums if x > 2], [3, 4, 5])
-        self.assertEqual([(i, s) for i in nums for s in strs],
-                         [(1, 'Apple'), (1, 'Banana'), (1, 'Coconut'),
-                          (2, 'Apple'), (2, 'Banana'), (2, 'Coconut'),
-                          (3, 'Apple'), (3, 'Banana'), (3, 'Coconut'),
-                          (4, 'Apple'), (4, 'Banana'), (4, 'Coconut'),
-                          (5, 'Apple'), (5, 'Banana'), (5, 'Coconut')])
-        self.assertEqual([(i, s) for i in nums for s in [f for f in strs if "n" in f]],
-                         [(1, 'Banana'), (1, 'Coconut'), (2, 'Banana'), (2, 'Coconut'),
-                          (3, 'Banana'), (3, 'Coconut'), (4, 'Banana'), (4, 'Coconut'),
-                          (5, 'Banana'), (5, 'Coconut')])
-        self.assertEqual([(lambda a:[a**i for i in range(a+1)])(j) for j in range(5)],
-                         [[1], [1, 1], [1, 2, 4], [1, 3, 9, 27], [1, 4, 16, 64, 256]])
-
-        def test_in_func(l):
-            return [None < x < 3 for x in l if x > 2]
-
-        self.assertEqual(test_in_func(nums), [False, False, False])
-
-        def test_nested_front():
-            self.assertEqual([[y for y in [x, x + 1]] for x in [1,3,5]],
-                             [[1, 2], [3, 4], [5, 6]])
-
-        test_nested_front()
-
-        check_syntax_error(self, "[i, s for i in nums for s in strs]")
-        check_syntax_error(self, "[x if y]")
-
-        suppliers = [
-          (1, "Boeing"),
-          (2, "Ford"),
-          (3, "Macdonalds")
-        ]
-
-        parts = [
-          (10, "Airliner"),
-          (20, "Engine"),
-          (30, "Cheeseburger")
-        ]
-
-        suppart = [
-          (1, 10), (1, 20), (2, 20), (3, 30)
-        ]
-
-        x = [
-          (sname, pname)
-            for (sno, sname) in suppliers
-              for (pno, pname) in parts
-                for (sp_sno, sp_pno) in suppart
-                  if sno == sp_sno and pno == sp_pno
-        ]
-
-        self.assertEqual(x, [('Boeing', 'Airliner'), ('Boeing', 'Engine'), ('Ford', 'Engine'),
-                             ('Macdonalds', 'Cheeseburger')])
-
-    def testGenexps(self):
-        # generator expression tests
-        g = ([x for x in range(10)] for x in range(1))
-        self.assertEqual(g.next(), [x for x in range(10)])
-        try:
-            g.next()
-            self.fail('should produce StopIteration exception')
-        except StopIteration:
-            pass
-
-        a = 1
-        try:
-            g = (a for d in a)
-            g.next()
-            self.fail('should produce TypeError')
-        except TypeError:
-            pass
-
-        self.assertEqual(list((x, y) for x in 'abcd' for y in 'abcd'), [(x, y) for x in 'abcd' for y in 'abcd'])
-        self.assertEqual(list((x, y) for x in 'ab' for y in 'xy'), [(x, y) for x in 'ab' for y in 'xy'])
-
-        a = [x for x in range(10)]
-        b = (x for x in (y for y in a))
-        self.assertEqual(sum(b), sum([x for x in range(10)]))
-
-        self.assertEqual(sum(x**2 for x in range(10)), sum([x**2 for x in range(10)]))
-        self.assertEqual(sum(x*x for x in range(10) if x%2), sum([x*x for x in range(10) if x%2]))
-        self.assertEqual(sum(x for x in (y for y in range(10))), sum([x for x in range(10)]))
-        self.assertEqual(sum(x for x in (y for y in (z for z in range(10)))), sum([x for x in range(10)]))
-        self.assertEqual(sum(x for x in [y for y in (z for z in range(10))]), sum([x for x in range(10)]))
-        self.assertEqual(sum(x for x in (y for y in (z for z in range(10) if True)) if True), sum([x for x in range(10)]))
-        self.assertEqual(sum(x for x in (y for y in (z for z in range(10) if True) if False) if True), 0)
-        check_syntax_error(self, "foo(x for x in range(10), 100)")
-        check_syntax_error(self, "foo(100, x for x in range(10))")
-
-    def testComprehensionSpecials(self):
-        # test for outmost iterable precomputation
-        x = 10; g = (i for i in range(x)); x = 5
-        self.assertEqual(len(list(g)), 10)
-
-        # This should hold, since we're only precomputing outmost iterable.
-        x = 10; t = False; g = ((i,j) for i in range(x) if t for j in range(x))
-        x = 5; t = True;
-        self.assertEqual([(i,j) for i in range(10) for j in range(5)], list(g))
-
-        # Grammar allows multiple adjacent 'if's in listcomps and genexps,
-        # even though it's silly. Make sure it works (ifelse broke this.)
-        self.assertEqual([ x for x in range(10) if x % 2 if x % 3 ], [1, 5, 7])
-        self.assertEqual(list(x for x in range(10) if x % 2 if x % 3), [1, 5, 7])
-
-        # verify unpacking single element tuples in listcomp/genexp.
-        self.assertEqual([x for x, in [(4,), (5,), (6,)]], [4, 5, 6])
-        self.assertEqual(list(x for x, in [(7,), (8,), (9,)]), [7, 8, 9])
-
-    def test_with_statement(self):
-        class manager(object):
-            def __enter__(self):
-                return (1, 2)
-            def __exit__(self, *args):
-                pass
-
-        with manager():
-            pass
-        with manager() as x:
-            pass
-        with manager() as (x, y):
-            pass
-        with manager(), manager():
-            pass
-        with manager() as x, manager() as y:
-            pass
-        with manager() as x, manager():
-            pass
-
-    def testIfElseExpr(self):
-        # Test ifelse expressions in various cases
-        def _checkeval(msg, ret):
-            "helper to check that evaluation of expressions is done correctly"
-            print x
-            return ret
-
-        self.assertEqual([ x() for x in lambda: True, lambda: False if x() ], [True])
-        self.assertEqual([ x() for x in (lambda: True, lambda: False) if x() ], [True])
-        self.assertEqual([ x(False) for x in (lambda x: False if x else True, lambda x: True if x else False) if x(False) ], [True])
-        self.assertEqual((5 if 1 else _checkeval("check 1", 0)), 5)
-        self.assertEqual((_checkeval("check 2", 0) if 0 else 5), 5)
-        self.assertEqual((5 and 6 if 0 else 1), 1)
-        self.assertEqual(((5 and 6) if 0 else 1), 1)
-        self.assertEqual((5 and (6 if 1 else 1)), 6)
-        self.assertEqual((0 or _checkeval("check 3", 2) if 0 else 3), 3)
-        self.assertEqual((1 or _checkeval("check 4", 2) if 1 else _checkeval("check 5", 3)), 1)
-        self.assertEqual((0 or 5 if 1 else _checkeval("check 6", 3)), 5)
-        self.assertEqual((not 5 if 1 else 1), False)
-        self.assertEqual((not 5 if 0 else 1), 1)
-        self.assertEqual((6 + 1 if 1 else 2), 7)
-        self.assertEqual((6 - 1 if 1 else 2), 5)
-        self.assertEqual((6 * 2 if 1 else 4), 12)
-        self.assertEqual((6 / 2 if 1 else 3), 3)
-        self.assertEqual((6 < 4 if 0 else 2), 2)
-
-
-def test_main():
-    run_unittest(TokenTests, GrammarTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/py3_test_grammar.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/py3_test_grammar.py
deleted file mode 100644
index f37e76f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/data/py3_test_grammar.py
+++ /dev/null
@@ -1,923 +0,0 @@
-# Python test set -- part 1, grammar.
-# This just tests whether the parser accepts them all.
-
-# NOTE: When you run this test as a script from the command line, you
-# get warnings about certain hex/oct constants.  Since those are
-# issued by the parser, you can't suppress them by adding a
-# filterwarnings() call to this module.  Therefore, to shut up the
-# regression test, the filterwarnings() call has been added to
-# regrtest.py.
-
-from test.support import run_unittest, check_syntax_error
-import unittest
-import sys
-# testing import *
-from sys import *
-
-class TokenTests(unittest.TestCase):
-
-    def testBackslash(self):
-        # Backslash means line continuation:
-        x = 1 \
-        + 1
-        self.assertEquals(x, 2, 'backslash for line continuation')
-
-        # Backslash does not means continuation in comments :\
-        x = 0
-        self.assertEquals(x, 0, 'backslash ending comment')
-
-    def testPlainIntegers(self):
-        self.assertEquals(type(000), type(0))
-        self.assertEquals(0xff, 255)
-        self.assertEquals(0o377, 255)
-        self.assertEquals(2147483647, 0o17777777777)
-        self.assertEquals(0b1001, 9)
-        # "0x" is not a valid literal
-        self.assertRaises(SyntaxError, eval, "0x")
-        from sys import maxsize
-        if maxsize == 2147483647:
-            self.assertEquals(-2147483647-1, -0o20000000000)
-            # XXX -2147483648
-            self.assert_(0o37777777777 > 0)
-            self.assert_(0xffffffff > 0)
-            self.assert_(0b1111111111111111111111111111111 > 0)
-            for s in ('2147483648', '0o40000000000', '0x100000000',
-                      '0b10000000000000000000000000000000'):
-                try:
-                    x = eval(s)
-                except OverflowError:
-                    self.fail("OverflowError on huge integer literal %r" % s)
-        elif maxsize == 9223372036854775807:
-            self.assertEquals(-9223372036854775807-1, -0o1000000000000000000000)
-            self.assert_(0o1777777777777777777777 > 0)
-            self.assert_(0xffffffffffffffff > 0)
-            self.assert_(0b11111111111111111111111111111111111111111111111111111111111111 > 0)
-            for s in '9223372036854775808', '0o2000000000000000000000', \
-                     '0x10000000000000000', \
-                     '0b100000000000000000000000000000000000000000000000000000000000000':
-                try:
-                    x = eval(s)
-                except OverflowError:
-                    self.fail("OverflowError on huge integer literal %r" % s)
-        else:
-            self.fail('Weird maxsize value %r' % maxsize)
-
-    def testLongIntegers(self):
-        x = 0
-        x = 0xffffffffffffffff
-        x = 0Xffffffffffffffff
-        x = 0o77777777777777777
-        x = 0O77777777777777777
-        x = 123456789012345678901234567890
-        x = 0b100000000000000000000000000000000000000000000000000000000000000000000
-        x = 0B111111111111111111111111111111111111111111111111111111111111111111111
-
-    def testFloats(self):
-        x = 3.14
-        x = 314.
-        x = 0.314
-        # XXX x = 000.314
-        x = .314
-        x = 3e14
-        x = 3E14
-        x = 3e-14
-        x = 3e+14
-        x = 3.e14
-        x = .3e14
-        x = 3.1e4
-
-    def testStringLiterals(self):
-        x = ''; y = ""; self.assert_(len(x) == 0 and x == y)
-        x = '\''; y = "'"; self.assert_(len(x) == 1 and x == y and ord(x) == 39)
-        x = '"'; y = "\""; self.assert_(len(x) == 1 and x == y and ord(x) == 34)
-        x = "doesn't \"shrink\" does it"
-        y = 'doesn\'t "shrink" does it'
-        self.assert_(len(x) == 24 and x == y)
-        x = "does \"shrink\" doesn't it"
-        y = 'does "shrink" doesn\'t it'
-        self.assert_(len(x) == 24 and x == y)
-        x = """
-The "quick"
-brown fox
-jumps over
-the 'lazy' dog.
-"""
-        y = '\nThe "quick"\nbrown fox\njumps over\nthe \'lazy\' dog.\n'
-        self.assertEquals(x, y)
-        y = '''
-The "quick"
-brown fox
-jumps over
-the 'lazy' dog.
-'''
-        self.assertEquals(x, y)
-        y = "\n\
-The \"quick\"\n\
-brown fox\n\
-jumps over\n\
-the 'lazy' dog.\n\
-"
-        self.assertEquals(x, y)
-        y = '\n\
-The \"quick\"\n\
-brown fox\n\
-jumps over\n\
-the \'lazy\' dog.\n\
-'
-        self.assertEquals(x, y)
-
-    def testEllipsis(self):
-        x = ...
-        self.assert_(x is Ellipsis)
-        self.assertRaises(SyntaxError, eval, ".. .")
-
-class GrammarTests(unittest.TestCase):
-
-    # single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE
-    # XXX can't test in a script -- this rule is only used when interactive
-
-    # file_input: (NEWLINE | stmt)* ENDMARKER
-    # Being tested as this very moment this very module
-
-    # expr_input: testlist NEWLINE
-    # XXX Hard to test -- used only in calls to input()
-
-    def testEvalInput(self):
-        # testlist ENDMARKER
-        x = eval('1, 0 or 1')
-
-    def testFuncdef(self):
-        ### [decorators] 'def' NAME parameters ['->' test] ':' suite
-        ### decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
-        ### decorators: decorator+
-        ### parameters: '(' [typedargslist] ')'
-        ### typedargslist: ((tfpdef ['=' test] ',')*
-        ###                ('*' [tfpdef] (',' tfpdef ['=' test])* [',' '**' tfpdef] | '**' tfpdef)
-        ###                | tfpdef ['=' test] (',' tfpdef ['=' test])* [','])
-        ### tfpdef: NAME [':' test]
-        ### varargslist: ((vfpdef ['=' test] ',')*
-        ###              ('*' [vfpdef] (',' vfpdef ['=' test])*  [',' '**' vfpdef] | '**' vfpdef)
-        ###              | vfpdef ['=' test] (',' vfpdef ['=' test])* [','])
-        ### vfpdef: NAME
-        def f1(): pass
-        f1()
-        f1(*())
-        f1(*(), **{})
-        def f2(one_argument): pass
-        def f3(two, arguments): pass
-        self.assertEquals(f2.__code__.co_varnames, ('one_argument',))
-        self.assertEquals(f3.__code__.co_varnames, ('two', 'arguments'))
-        def a1(one_arg,): pass
-        def a2(two, args,): pass
-        def v0(*rest): pass
-        def v1(a, *rest): pass
-        def v2(a, b, *rest): pass
-
-        f1()
-        f2(1)
-        f2(1,)
-        f3(1, 2)
-        f3(1, 2,)
-        v0()
-        v0(1)
-        v0(1,)
-        v0(1,2)
-        v0(1,2,3,4,5,6,7,8,9,0)
-        v1(1)
-        v1(1,)
-        v1(1,2)
-        v1(1,2,3)
-        v1(1,2,3,4,5,6,7,8,9,0)
-        v2(1,2)
-        v2(1,2,3)
-        v2(1,2,3,4)
-        v2(1,2,3,4,5,6,7,8,9,0)
-
-        def d01(a=1): pass
-        d01()
-        d01(1)
-        d01(*(1,))
-        d01(**{'a':2})
-        def d11(a, b=1): pass
-        d11(1)
-        d11(1, 2)
-        d11(1, **{'b':2})
-        def d21(a, b, c=1): pass
-        d21(1, 2)
-        d21(1, 2, 3)
-        d21(*(1, 2, 3))
-        d21(1, *(2, 3))
-        d21(1, 2, *(3,))
-        d21(1, 2, **{'c':3})
-        def d02(a=1, b=2): pass
-        d02()
-        d02(1)
-        d02(1, 2)
-        d02(*(1, 2))
-        d02(1, *(2,))
-        d02(1, **{'b':2})
-        d02(**{'a': 1, 'b': 2})
-        def d12(a, b=1, c=2): pass
-        d12(1)
-        d12(1, 2)
-        d12(1, 2, 3)
-        def d22(a, b, c=1, d=2): pass
-        d22(1, 2)
-        d22(1, 2, 3)
-        d22(1, 2, 3, 4)
-        def d01v(a=1, *rest): pass
-        d01v()
-        d01v(1)
-        d01v(1, 2)
-        d01v(*(1, 2, 3, 4))
-        d01v(*(1,))
-        d01v(**{'a':2})
-        def d11v(a, b=1, *rest): pass
-        d11v(1)
-        d11v(1, 2)
-        d11v(1, 2, 3)
-        def d21v(a, b, c=1, *rest): pass
-        d21v(1, 2)
-        d21v(1, 2, 3)
-        d21v(1, 2, 3, 4)
-        d21v(*(1, 2, 3, 4))
-        d21v(1, 2, **{'c': 3})
-        def d02v(a=1, b=2, *rest): pass
-        d02v()
-        d02v(1)
-        d02v(1, 2)
-        d02v(1, 2, 3)
-        d02v(1, *(2, 3, 4))
-        d02v(**{'a': 1, 'b': 2})
-        def d12v(a, b=1, c=2, *rest): pass
-        d12v(1)
-        d12v(1, 2)
-        d12v(1, 2, 3)
-        d12v(1, 2, 3, 4)
-        d12v(*(1, 2, 3, 4))
-        d12v(1, 2, *(3, 4, 5))
-        d12v(1, *(2,), **{'c': 3})
-        def d22v(a, b, c=1, d=2, *rest): pass
-        d22v(1, 2)
-        d22v(1, 2, 3)
-        d22v(1, 2, 3, 4)
-        d22v(1, 2, 3, 4, 5)
-        d22v(*(1, 2, 3, 4))
-        d22v(1, 2, *(3, 4, 5))
-        d22v(1, *(2, 3), **{'d': 4})
-
-        # keyword argument type tests
-        try:
-            str('x', **{b'foo':1 })
-        except TypeError:
-            pass
-        else:
-            self.fail('Bytes should not work as keyword argument names')
-        # keyword only argument tests
-        def pos0key1(*, key): return key
-        pos0key1(key=100)
-        def pos2key2(p1, p2, *, k1, k2=100): return p1,p2,k1,k2
-        pos2key2(1, 2, k1=100)
-        pos2key2(1, 2, k1=100, k2=200)
-        pos2key2(1, 2, k2=100, k1=200)
-        def pos2key2dict(p1, p2, *, k1=100, k2, **kwarg): return p1,p2,k1,k2,kwarg
-        pos2key2dict(1,2,k2=100,tokwarg1=100,tokwarg2=200)
-        pos2key2dict(1,2,tokwarg1=100,tokwarg2=200, k2=100)
-
-        # keyword arguments after *arglist
-        def f(*args, **kwargs):
-            return args, kwargs
-        self.assertEquals(f(1, x=2, *[3, 4], y=5), ((1, 3, 4),
-                                                    {'x':2, 'y':5}))
-        self.assertRaises(SyntaxError, eval, "f(1, *(2,3), 4)")
-        self.assertRaises(SyntaxError, eval, "f(1, x=2, *(3,4), x=5)")
-
-        # argument annotation tests
-        def f(x) -> list: pass
-        self.assertEquals(f.__annotations__, {'return': list})
-        def f(x:int): pass
-        self.assertEquals(f.__annotations__, {'x': int})
-        def f(*x:str): pass
-        self.assertEquals(f.__annotations__, {'x': str})
-        def f(**x:float): pass
-        self.assertEquals(f.__annotations__, {'x': float})
-        def f(x, y:1+2): pass
-        self.assertEquals(f.__annotations__, {'y': 3})
-        def f(a, b:1, c:2, d): pass
-        self.assertEquals(f.__annotations__, {'b': 1, 'c': 2})
-        def f(a, b:1, c:2, d, e:3=4, f=5, *g:6): pass
-        self.assertEquals(f.__annotations__,
-                          {'b': 1, 'c': 2, 'e': 3, 'g': 6})
-        def f(a, b:1, c:2, d, e:3=4, f=5, *g:6, h:7, i=8, j:9=10,
-              **k:11) -> 12: pass
-        self.assertEquals(f.__annotations__,
-                          {'b': 1, 'c': 2, 'e': 3, 'g': 6, 'h': 7, 'j': 9,
-                           'k': 11, 'return': 12})
-        # Check for SF Bug #1697248 - mixing decorators and a return annotation
-        def null(x): return x
-        @null
-        def f(x) -> list: pass
-        self.assertEquals(f.__annotations__, {'return': list})
-
-        # test MAKE_CLOSURE with a variety of oparg's
-        closure = 1
-        def f(): return closure
-        def f(x=1): return closure
-        def f(*, k=1): return closure
-        def f() -> int: return closure
-
-        # Check ast errors in *args and *kwargs
-        check_syntax_error(self, "f(*g(1=2))")
-        check_syntax_error(self, "f(**g(1=2))")
-
-    def testLambdef(self):
-        ### lambdef: 'lambda' [varargslist] ':' test
-        l1 = lambda : 0
-        self.assertEquals(l1(), 0)
-        l2 = lambda : a[d] # XXX just testing the expression
-        l3 = lambda : [2 < x for x in [-1, 3, 0]]
-        self.assertEquals(l3(), [0, 1, 0])
-        l4 = lambda x = lambda y = lambda z=1 : z : y() : x()
-        self.assertEquals(l4(), 1)
-        l5 = lambda x, y, z=2: x + y + z
-        self.assertEquals(l5(1, 2), 5)
-        self.assertEquals(l5(1, 2, 3), 6)
-        check_syntax_error(self, "lambda x: x = 2")
-        check_syntax_error(self, "lambda (None,): None")
-        l6 = lambda x, y, *, k=20: x+y+k
-        self.assertEquals(l6(1,2), 1+2+20)
-        self.assertEquals(l6(1,2,k=10), 1+2+10)
-
-
-    ### stmt: simple_stmt | compound_stmt
-    # Tested below
-
-    def testSimpleStmt(self):
-        ### simple_stmt: small_stmt (';' small_stmt)* [';']
-        x = 1; pass; del x
-        def foo():
-            # verify statements that end with semi-colons
-            x = 1; pass; del x;
-        foo()
-
-    ### small_stmt: expr_stmt | pass_stmt | del_stmt | flow_stmt | import_stmt | global_stmt | access_stmt
-    # Tested below
-
-    def testExprStmt(self):
-        # (exprlist '=')* exprlist
-        1
-        1, 2, 3
-        x = 1
-        x = 1, 2, 3
-        x = y = z = 1, 2, 3
-        x, y, z = 1, 2, 3
-        abc = a, b, c = x, y, z = xyz = 1, 2, (3, 4)
-
-        check_syntax_error(self, "x + 1 = 1")
-        check_syntax_error(self, "a + 1 = b + 2")
-
-    def testDelStmt(self):
-        # 'del' exprlist
-        abc = [1,2,3]
-        x, y, z = abc
-        xyz = x, y, z
-
-        del abc
-        del x, y, (z, xyz)
-
-    def testPassStmt(self):
-        # 'pass'
-        pass
-
-    # flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt
-    # Tested below
-
-    def testBreakStmt(self):
-        # 'break'
-        while 1: break
-
-    def testContinueStmt(self):
-        # 'continue'
-        i = 1
-        while i: i = 0; continue
-
-        msg = ""
-        while not msg:
-            msg = "ok"
-            try:
-                continue
-                msg = "continue failed to continue inside try"
-            except:
-                msg = "continue inside try called except block"
-        if msg != "ok":
-            self.fail(msg)
-
-        msg = ""
-        while not msg:
-            msg = "finally block not called"
-            try:
-                continue
-            finally:
-                msg = "ok"
-        if msg != "ok":
-            self.fail(msg)
-
-    def test_break_continue_loop(self):
-        # This test warrants an explanation. It is a test specifically for SF bugs
-        # #463359 and #462937. The bug is that a 'break' statement executed or
-        # exception raised inside a try/except inside a loop, *after* a continue
-        # statement has been executed in that loop, will cause the wrong number of
-        # arguments to be popped off the stack and the instruction pointer reset to
-        # a very small number (usually 0.) Because of this, the following test
-        # *must* written as a function, and the tracking vars *must* be function
-        # arguments with default values. Otherwise, the test will loop and loop.
-
-        def test_inner(extra_burning_oil = 1, count=0):
-            big_hippo = 2
-            while big_hippo:
-                count += 1
-                try:
-                    if extra_burning_oil and big_hippo == 1:
-                        extra_burning_oil -= 1
-                        break
-                    big_hippo -= 1
-                    continue
-                except:
-                    raise
-            if count > 2 or big_hippo != 1:
-                self.fail("continue then break in try/except in loop broken!")
-        test_inner()
-
-    def testReturn(self):
-        # 'return' [testlist]
-        def g1(): return
-        def g2(): return 1
-        g1()
-        x = g2()
-        check_syntax_error(self, "class foo:return 1")
-
-    def testYield(self):
-        check_syntax_error(self, "class foo:yield 1")
-
-    def testRaise(self):
-        # 'raise' test [',' test]
-        try: raise RuntimeError('just testing')
-        except RuntimeError: pass
-        try: raise KeyboardInterrupt
-        except KeyboardInterrupt: pass
-
-    def testImport(self):
-        # 'import' dotted_as_names
-        import sys
-        import time, sys
-        # 'from' dotted_name 'import' ('*' | '(' import_as_names ')' | import_as_names)
-        from time import time
-        from time import (time)
-        # not testable inside a function, but already done at top of the module
-        # from sys import *
-        from sys import path, argv
-        from sys import (path, argv)
-        from sys import (path, argv,)
-
-    def testGlobal(self):
-        # 'global' NAME (',' NAME)*
-        global a
-        global a, b
-        global one, two, three, four, five, six, seven, eight, nine, ten
-
-    def testNonlocal(self):
-        # 'nonlocal' NAME (',' NAME)*
-        x = 0
-        y = 0
-        def f():
-            nonlocal x
-            nonlocal x, y
-
-    def testAssert(self):
-        # assert_stmt: 'assert' test [',' test]
-        assert 1
-        assert 1, 1
-        assert lambda x:x
-        assert 1, lambda x:x+1
-        try:
-            assert 0, "msg"
-        except AssertionError as e:
-            self.assertEquals(e.args[0], "msg")
-        else:
-            if __debug__:
-                self.fail("AssertionError not raised by assert 0")
-
-    ### compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef
-    # Tested below
-
-    def testIf(self):
-        # 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite]
-        if 1: pass
-        if 1: pass
-        else: pass
-        if 0: pass
-        elif 0: pass
-        if 0: pass
-        elif 0: pass
-        elif 0: pass
-        elif 0: pass
-        else: pass
-
-    def testWhile(self):
-        # 'while' test ':' suite ['else' ':' suite]
-        while 0: pass
-        while 0: pass
-        else: pass
-
-        # Issue1920: "while 0" is optimized away,
-        # ensure that the "else" clause is still present.
-        x = 0
-        while 0:
-            x = 1
-        else:
-            x = 2
-        self.assertEquals(x, 2)
-
-    def testFor(self):
-        # 'for' exprlist 'in' exprlist ':' suite ['else' ':' suite]
-        for i in 1, 2, 3: pass
-        for i, j, k in (): pass
-        else: pass
-        class Squares:
-            def __init__(self, max):
-                self.max = max
-                self.sofar = []
-            def __len__(self): return len(self.sofar)
-            def __getitem__(self, i):
-                if not 0 <= i < self.max: raise IndexError
-                n = len(self.sofar)
-                while n <= i:
-                    self.sofar.append(n*n)
-                    n = n+1
-                return self.sofar[i]
-        n = 0
-        for x in Squares(10): n = n+x
-        if n != 285:
-            self.fail('for over growing sequence')
-
-        result = []
-        for x, in [(1,), (2,), (3,)]:
-            result.append(x)
-        self.assertEqual(result, [1, 2, 3])
-
-    def testTry(self):
-        ### try_stmt: 'try' ':' suite (except_clause ':' suite)+ ['else' ':' suite]
-        ###         | 'try' ':' suite 'finally' ':' suite
-        ### except_clause: 'except' [expr ['as' expr]]
-        try:
-            1/0
-        except ZeroDivisionError:
-            pass
-        else:
-            pass
-        try: 1/0
-        except EOFError: pass
-        except TypeError as msg: pass
-        except RuntimeError as msg: pass
-        except: pass
-        else: pass
-        try: 1/0
-        except (EOFError, TypeError, ZeroDivisionError): pass
-        try: 1/0
-        except (EOFError, TypeError, ZeroDivisionError) as msg: pass
-        try: pass
-        finally: pass
-
-    def testSuite(self):
-        # simple_stmt | NEWLINE INDENT NEWLINE* (stmt NEWLINE*)+ DEDENT
-        if 1: pass
-        if 1:
-            pass
-        if 1:
-            #
-            #
-            #
-            pass
-            pass
-            #
-            pass
-            #
-
-    def testTest(self):
-        ### and_test ('or' and_test)*
-        ### and_test: not_test ('and' not_test)*
-        ### not_test: 'not' not_test | comparison
-        if not 1: pass
-        if 1 and 1: pass
-        if 1 or 1: pass
-        if not not not 1: pass
-        if not 1 and 1 and 1: pass
-        if 1 and 1 or 1 and 1 and 1 or not 1 and 1: pass
-
-    def testComparison(self):
-        ### comparison: expr (comp_op expr)*
-        ### comp_op: '<'|'>'|'=='|'>='|'<='|'!='|'in'|'not' 'in'|'is'|'is' 'not'
-        if 1: pass
-        x = (1 == 1)
-        if 1 == 1: pass
-        if 1 != 1: pass
-        if 1 < 1: pass
-        if 1 > 1: pass
-        if 1 <= 1: pass
-        if 1 >= 1: pass
-        if 1 is 1: pass
-        if 1 is not 1: pass
-        if 1 in (): pass
-        if 1 not in (): pass
-        if 1 < 1 > 1 == 1 >= 1 <= 1 != 1 in 1 not in 1 is 1 is not 1: pass
-
-    def testBinaryMaskOps(self):
-        x = 1 & 1
-        x = 1 ^ 1
-        x = 1 | 1
-
-    def testShiftOps(self):
-        x = 1 << 1
-        x = 1 >> 1
-        x = 1 << 1 >> 1
-
-    def testAdditiveOps(self):
-        x = 1
-        x = 1 + 1
-        x = 1 - 1 - 1
-        x = 1 - 1 + 1 - 1 + 1
-
-    def testMultiplicativeOps(self):
-        x = 1 * 1
-        x = 1 / 1
-        x = 1 % 1
-        x = 1 / 1 * 1 % 1
-
-    def testUnaryOps(self):
-        x = +1
-        x = -1
-        x = ~1
-        x = ~1 ^ 1 & 1 | 1 & 1 ^ -1
-        x = -1*1/1 + 1*1 - ---1*1
-
-    def testSelectors(self):
-        ### trailer: '(' [testlist] ')' | '[' subscript ']' | '.' NAME
-        ### subscript: expr | [expr] ':' [expr]
-
-        import sys, time
-        c = sys.path[0]
-        x = time.time()
-        x = sys.modules['time'].time()
-        a = '01234'
-        c = a[0]
-        c = a[-1]
-        s = a[0:5]
-        s = a[:5]
-        s = a[0:]
-        s = a[:]
-        s = a[-5:]
-        s = a[:-1]
-        s = a[-4:-3]
-        # A rough test of SF bug 1333982.  http://python.org/sf/1333982
-        # The testing here is fairly incomplete.
-        # Test cases should include: commas with 1 and 2 colons
-        d = {}
-        d[1] = 1
-        d[1,] = 2
-        d[1,2] = 3
-        d[1,2,3] = 4
-        L = list(d)
-        L.sort(key=lambda x: x if isinstance(x, tuple) else ())
-        self.assertEquals(str(L), '[1, (1,), (1, 2), (1, 2, 3)]')
-
-    def testAtoms(self):
-        ### atom: '(' [testlist] ')' | '[' [testlist] ']' | '{' [dictsetmaker] '}' | NAME | NUMBER | STRING
-        ### dictsetmaker: (test ':' test (',' test ':' test)* [',']) | (test (',' test)* [','])
-
-        x = (1)
-        x = (1 or 2 or 3)
-        x = (1 or 2 or 3, 2, 3)
-
-        x = []
-        x = [1]
-        x = [1 or 2 or 3]
-        x = [1 or 2 or 3, 2, 3]
-        x = []
-
-        x = {}
-        x = {'one': 1}
-        x = {'one': 1,}
-        x = {'one' or 'two': 1 or 2}
-        x = {'one': 1, 'two': 2}
-        x = {'one': 1, 'two': 2,}
-        x = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6}
-
-        x = {'one'}
-        x = {'one', 1,}
-        x = {'one', 'two', 'three'}
-        x = {2, 3, 4,}
-
-        x = x
-        x = 'x'
-        x = 123
-
-    ### exprlist: expr (',' expr)* [',']
-    ### testlist: test (',' test)* [',']
-    # These have been exercised enough above
-
-    def testClassdef(self):
-        # 'class' NAME ['(' [testlist] ')'] ':' suite
-        class B: pass
-        class B2(): pass
-        class C1(B): pass
-        class C2(B): pass
-        class D(C1, C2, B): pass
-        class C:
-            def meth1(self): pass
-            def meth2(self, arg): pass
-            def meth3(self, a1, a2): pass
-
-        # decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
-        # decorators: decorator+
-        # decorated: decorators (classdef | funcdef)
-        def class_decorator(x): return x
-        @class_decorator
-        class G: pass
-
-    def testDictcomps(self):
-        # dictorsetmaker: ( (test ':' test (comp_for |
-        #                                   (',' test ':' test)* [','])) |
-        #                   (test (comp_for | (',' test)* [','])) )
-        nums = [1, 2, 3]
-        self.assertEqual({i:i+1 for i in nums}, {1: 2, 2: 3, 3: 4})
-
-    def testListcomps(self):
-        # list comprehension tests
-        nums = [1, 2, 3, 4, 5]
-        strs = ["Apple", "Banana", "Coconut"]
-        spcs = ["  Apple", " Banana ", "Coco  nut  "]
-
-        self.assertEqual([s.strip() for s in spcs], ['Apple', 'Banana', 'Coco  nut'])
-        self.assertEqual([3 * x for x in nums], [3, 6, 9, 12, 15])
-        self.assertEqual([x for x in nums if x > 2], [3, 4, 5])
-        self.assertEqual([(i, s) for i in nums for s in strs],
-                         [(1, 'Apple'), (1, 'Banana'), (1, 'Coconut'),
-                          (2, 'Apple'), (2, 'Banana'), (2, 'Coconut'),
-                          (3, 'Apple'), (3, 'Banana'), (3, 'Coconut'),
-                          (4, 'Apple'), (4, 'Banana'), (4, 'Coconut'),
-                          (5, 'Apple'), (5, 'Banana'), (5, 'Coconut')])
-        self.assertEqual([(i, s) for i in nums for s in [f for f in strs if "n" in f]],
-                         [(1, 'Banana'), (1, 'Coconut'), (2, 'Banana'), (2, 'Coconut'),
-                          (3, 'Banana'), (3, 'Coconut'), (4, 'Banana'), (4, 'Coconut'),
-                          (5, 'Banana'), (5, 'Coconut')])
-        self.assertEqual([(lambda a:[a**i for i in range(a+1)])(j) for j in range(5)],
-                         [[1], [1, 1], [1, 2, 4], [1, 3, 9, 27], [1, 4, 16, 64, 256]])
-
-        def test_in_func(l):
-            return [0 < x < 3 for x in l if x > 2]
-
-        self.assertEqual(test_in_func(nums), [False, False, False])
-
-        def test_nested_front():
-            self.assertEqual([[y for y in [x, x + 1]] for x in [1,3,5]],
-                             [[1, 2], [3, 4], [5, 6]])
-
-        test_nested_front()
-
-        check_syntax_error(self, "[i, s for i in nums for s in strs]")
-        check_syntax_error(self, "[x if y]")
-
-        suppliers = [
-          (1, "Boeing"),
-          (2, "Ford"),
-          (3, "Macdonalds")
-        ]
-
-        parts = [
-          (10, "Airliner"),
-          (20, "Engine"),
-          (30, "Cheeseburger")
-        ]
-
-        suppart = [
-          (1, 10), (1, 20), (2, 20), (3, 30)
-        ]
-
-        x = [
-          (sname, pname)
-            for (sno, sname) in suppliers
-              for (pno, pname) in parts
-                for (sp_sno, sp_pno) in suppart
-                  if sno == sp_sno and pno == sp_pno
-        ]
-
-        self.assertEqual(x, [('Boeing', 'Airliner'), ('Boeing', 'Engine'), ('Ford', 'Engine'),
-                             ('Macdonalds', 'Cheeseburger')])
-
-    def testGenexps(self):
-        # generator expression tests
-        g = ([x for x in range(10)] for x in range(1))
-        self.assertEqual(next(g), [x for x in range(10)])
-        try:
-            next(g)
-            self.fail('should produce StopIteration exception')
-        except StopIteration:
-            pass
-
-        a = 1
-        try:
-            g = (a for d in a)
-            next(g)
-            self.fail('should produce TypeError')
-        except TypeError:
-            pass
-
-        self.assertEqual(list((x, y) for x in 'abcd' for y in 'abcd'), [(x, y) for x in 'abcd' for y in 'abcd'])
-        self.assertEqual(list((x, y) for x in 'ab' for y in 'xy'), [(x, y) for x in 'ab' for y in 'xy'])
-
-        a = [x for x in range(10)]
-        b = (x for x in (y for y in a))
-        self.assertEqual(sum(b), sum([x for x in range(10)]))
-
-        self.assertEqual(sum(x**2 for x in range(10)), sum([x**2 for x in range(10)]))
-        self.assertEqual(sum(x*x for x in range(10) if x%2), sum([x*x for x in range(10) if x%2]))
-        self.assertEqual(sum(x for x in (y for y in range(10))), sum([x for x in range(10)]))
-        self.assertEqual(sum(x for x in (y for y in (z for z in range(10)))), sum([x for x in range(10)]))
-        self.assertEqual(sum(x for x in [y for y in (z for z in range(10))]), sum([x for x in range(10)]))
-        self.assertEqual(sum(x for x in (y for y in (z for z in range(10) if True)) if True), sum([x for x in range(10)]))
-        self.assertEqual(sum(x for x in (y for y in (z for z in range(10) if True) if False) if True), 0)
-        check_syntax_error(self, "foo(x for x in range(10), 100)")
-        check_syntax_error(self, "foo(100, x for x in range(10))")
-
-    def testComprehensionSpecials(self):
-        # test for outmost iterable precomputation
-        x = 10; g = (i for i in range(x)); x = 5
-        self.assertEqual(len(list(g)), 10)
-
-        # This should hold, since we're only precomputing outmost iterable.
-        x = 10; t = False; g = ((i,j) for i in range(x) if t for j in range(x))
-        x = 5; t = True;
-        self.assertEqual([(i,j) for i in range(10) for j in range(5)], list(g))
-
-        # Grammar allows multiple adjacent 'if's in listcomps and genexps,
-        # even though it's silly. Make sure it works (ifelse broke this.)
-        self.assertEqual([ x for x in range(10) if x % 2 if x % 3 ], [1, 5, 7])
-        self.assertEqual(list(x for x in range(10) if x % 2 if x % 3), [1, 5, 7])
-
-        # verify unpacking single element tuples in listcomp/genexp.
-        self.assertEqual([x for x, in [(4,), (5,), (6,)]], [4, 5, 6])
-        self.assertEqual(list(x for x, in [(7,), (8,), (9,)]), [7, 8, 9])
-
-    def test_with_statement(self):
-        class manager(object):
-            def __enter__(self):
-                return (1, 2)
-            def __exit__(self, *args):
-                pass
-
-        with manager():
-            pass
-        with manager() as x:
-            pass
-        with manager() as (x, y):
-            pass
-        with manager(), manager():
-            pass
-        with manager() as x, manager() as y:
-            pass
-        with manager() as x, manager():
-            pass
-
-    def testIfElseExpr(self):
-        # Test ifelse expressions in various cases
-        def _checkeval(msg, ret):
-            "helper to check that evaluation of expressions is done correctly"
-            print(x)
-            return ret
-
-        # the next line is not allowed anymore
-        #self.assertEqual([ x() for x in lambda: True, lambda: False if x() ], [True])
-        self.assertEqual([ x() for x in (lambda: True, lambda: False) if x() ], [True])
-        self.assertEqual([ x(False) for x in (lambda x: False if x else True, lambda x: True if x else False) if x(False) ], [True])
-        self.assertEqual((5 if 1 else _checkeval("check 1", 0)), 5)
-        self.assertEqual((_checkeval("check 2", 0) if 0 else 5), 5)
-        self.assertEqual((5 and 6 if 0 else 1), 1)
-        self.assertEqual(((5 and 6) if 0 else 1), 1)
-        self.assertEqual((5 and (6 if 1 else 1)), 6)
-        self.assertEqual((0 or _checkeval("check 3", 2) if 0 else 3), 3)
-        self.assertEqual((1 or _checkeval("check 4", 2) if 1 else _checkeval("check 5", 3)), 1)
-        self.assertEqual((0 or 5 if 1 else _checkeval("check 6", 3)), 5)
-        self.assertEqual((not 5 if 1 else 1), False)
-        self.assertEqual((not 5 if 0 else 1), 1)
-        self.assertEqual((6 + 1 if 1 else 2), 7)
-        self.assertEqual((6 - 1 if 1 else 2), 5)
-        self.assertEqual((6 * 2 if 1 else 4), 12)
-        self.assertEqual((6 / 2 if 1 else 3), 3)
-        self.assertEqual((6 < 4 if 0 else 2), 2)
-
-
-def test_main():
-    run_unittest(TokenTests, GrammarTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/pytree_idempotency.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/pytree_idempotency.py
deleted file mode 100644
index 05991b0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/pytree_idempotency.py
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Main program for testing the infrastructure."""
-
-__author__ = "Guido van Rossum <guido@python.org>"
-
-# Support imports (need to be imported first)
-from . import support
-
-# Python imports
-import os
-import sys
-import logging
-
-# Local imports
-from .. import pytree
-import pgen2
-from pgen2 import driver
-
-logging.basicConfig()
-
-def main():
-    gr = driver.load_grammar("Grammar.txt")
-    dr = driver.Driver(gr, convert=pytree.convert)
-
-    fn = "example.py"
-    tree = dr.parse_file(fn, debug=True)
-    if not diff(fn, tree):
-        print "No diffs."
-    if not sys.argv[1:]:
-        return # Pass a dummy argument to run the complete test suite below
-
-    problems = []
-
-    # Process every imported module
-    for name in sys.modules:
-        mod = sys.modules[name]
-        if mod is None or not hasattr(mod, "__file__"):
-            continue
-        fn = mod.__file__
-        if fn.endswith(".pyc"):
-            fn = fn[:-1]
-        if not fn.endswith(".py"):
-            continue
-        print >>sys.stderr, "Parsing", fn
-        tree = dr.parse_file(fn, debug=True)
-        if diff(fn, tree):
-            problems.append(fn)
-
-    # Process every single module on sys.path (but not in packages)
-    for dir in sys.path:
-        try:
-            names = os.listdir(dir)
-        except os.error:
-            continue
-        print >>sys.stderr, "Scanning", dir, "..."
-        for name in names:
-            if not name.endswith(".py"):
-                continue
-            print >>sys.stderr, "Parsing", name
-            fn = os.path.join(dir, name)
-            try:
-                tree = dr.parse_file(fn, debug=True)
-            except pgen2.parse.ParseError, err:
-                print "ParseError:", err
-            else:
-                if diff(fn, tree):
-                    problems.append(fn)
-
-    # Show summary of problem files
-    if not problems:
-        print "No problems.  Congratulations!"
-    else:
-        print "Problems in following files:"
-        for fn in problems:
-            print "***", fn
-
-def diff(fn, tree):
-    f = open("@", "w")
-    try:
-        f.write(str(tree))
-    finally:
-        f.close()
-    try:
-        return os.system("diff -u %s @" % fn)
-    finally:
-        os.remove("@")
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/support.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/support.py
deleted file mode 100644
index 8a218af..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/support.py
+++ /dev/null
@@ -1,54 +0,0 @@
-"""Support code for test_*.py files"""
-# Author: Collin Winter
-
-# Python imports
-import unittest
-import sys
-import os
-import os.path
-import re
-from textwrap import dedent
-
-# Local imports
-from lib2to3 import pytree, refactor
-from lib2to3.pgen2 import driver
-
-test_dir = os.path.dirname(__file__)
-proj_dir = os.path.normpath(os.path.join(test_dir, ".."))
-grammar_path = os.path.join(test_dir, "..", "Grammar.txt")
-grammar = driver.load_grammar(grammar_path)
-driver = driver.Driver(grammar, convert=pytree.convert)
-
-def parse_string(string):
-    return driver.parse_string(reformat(string), debug=True)
-
-def run_all_tests(test_mod=None, tests=None):
-    if tests is None:
-        tests = unittest.TestLoader().loadTestsFromModule(test_mod)
-    unittest.TextTestRunner(verbosity=2).run(tests)
-
-def reformat(string):
-    return dedent(string) + u"\n\n"
-
-def get_refactorer(fixer_pkg="lib2to3", fixers=None, options=None):
-    """
-    A convenience function for creating a RefactoringTool for tests.
-
-    fixers is a list of fixers for the RefactoringTool to use. By default
-    "lib2to3.fixes.*" is used. options is an optional dictionary of options to
-    be passed to the RefactoringTool.
-    """
-    if fixers is not None:
-        fixers = [fixer_pkg + ".fixes.fix_" + fix for fix in fixers]
-    else:
-        fixers = refactor.get_fixers_from_package(fixer_pkg + ".fixes")
-    options = options or {}
-    return refactor.RefactoringTool(fixers, options, explicit=True)
-
-def all_project_files():
-    for dirpath, dirnames, filenames in os.walk(proj_dir):
-        for filename in filenames:
-            if filename.endswith(".py"):
-                yield os.path.join(dirpath, filename)
-
-TestCase = unittest.TestCase
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_all_fixers.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_all_fixers.py
deleted file mode 100644
index 18f532c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_all_fixers.py
+++ /dev/null
@@ -1,23 +0,0 @@
-"""Tests that run all fixer modules over an input stream.
-
-This has been broken out into its own test module because of its
-running time.
-"""
-# Author: Collin Winter
-
-# Python imports
-import unittest
-
-# Local imports
-from lib2to3 import refactor
-from . import support
-
-
-class Test_all(support.TestCase):
-
-    def setUp(self):
-        self.refactor = support.get_refactorer()
-
-    def test_all_project_files(self):
-        for filepath in support.all_project_files():
-            self.refactor.refactor_file(filepath)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_fixers.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_fixers.py
deleted file mode 100644
index 25ad5ac..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_fixers.py
+++ /dev/null
@@ -1,4529 +0,0 @@
-""" Test suite for the fixer modules """
-
-# Python imports
-import os
-import unittest
-from itertools import chain
-from operator import itemgetter
-
-# Local imports
-from lib2to3 import pygram, pytree, refactor, fixer_util
-from lib2to3.tests import support
-
-
-class FixerTestCase(support.TestCase):
-
-    # Other test cases can subclass this class and replace "fixer_pkg" with
-    # their own.
-    def setUp(self, fix_list=None, fixer_pkg="lib2to3", options=None):
-        if fix_list is None:
-            fix_list = [self.fixer]
-        self.refactor = support.get_refactorer(fixer_pkg, fix_list, options)
-        self.fixer_log = []
-        self.filename = u"<string>"
-
-        for fixer in chain(self.refactor.pre_order,
-                           self.refactor.post_order):
-            fixer.log = self.fixer_log
-
-    def _check(self, before, after):
-        before = support.reformat(before)
-        after = support.reformat(after)
-        tree = self.refactor.refactor_string(before, self.filename)
-        self.assertEqual(after, unicode(tree))
-        return tree
-
-    def check(self, before, after, ignore_warnings=False):
-        tree = self._check(before, after)
-        self.assertTrue(tree.was_changed)
-        if not ignore_warnings:
-            self.assertEqual(self.fixer_log, [])
-
-    def warns(self, before, after, message, unchanged=False):
-        tree = self._check(before, after)
-        self.assertTrue(message in "".join(self.fixer_log))
-        if not unchanged:
-            self.assertTrue(tree.was_changed)
-
-    def warns_unchanged(self, before, message):
-        self.warns(before, before, message, unchanged=True)
-
-    def unchanged(self, before, ignore_warnings=False):
-        self._check(before, before)
-        if not ignore_warnings:
-            self.assertEqual(self.fixer_log, [])
-
-    def assert_runs_after(self, *names):
-        fixes = [self.fixer]
-        fixes.extend(names)
-        r = support.get_refactorer("lib2to3", fixes)
-        (pre, post) = r.get_fixers()
-        n = "fix_" + self.fixer
-        if post and post[-1].__class__.__module__.endswith(n):
-            # We're the last fixer to run
-            return
-        if pre and pre[-1].__class__.__module__.endswith(n) and not post:
-            # We're the last in pre and post is empty
-            return
-        self.fail("Fixer run order (%s) is incorrect; %s should be last."\
-               %(", ".join([x.__class__.__module__ for x in (pre+post)]), n))
-
-class Test_ne(FixerTestCase):
-    fixer = "ne"
-
-    def test_basic(self):
-        b = """if x <> y:
-            pass"""
-
-        a = """if x != y:
-            pass"""
-        self.check(b, a)
-
-    def test_no_spaces(self):
-        b = """if x<>y:
-            pass"""
-
-        a = """if x!=y:
-            pass"""
-        self.check(b, a)
-
-    def test_chained(self):
-        b = """if x<>y<>z:
-            pass"""
-
-        a = """if x!=y!=z:
-            pass"""
-        self.check(b, a)
-
-class Test_has_key(FixerTestCase):
-    fixer = "has_key"
-
-    def test_1(self):
-        b = """x = d.has_key("x") or d.has_key("y")"""
-        a = """x = "x" in d or "y" in d"""
-        self.check(b, a)
-
-    def test_2(self):
-        b = """x = a.b.c.d.has_key("x") ** 3"""
-        a = """x = ("x" in a.b.c.d) ** 3"""
-        self.check(b, a)
-
-    def test_3(self):
-        b = """x = a.b.has_key(1 + 2).__repr__()"""
-        a = """x = (1 + 2 in a.b).__repr__()"""
-        self.check(b, a)
-
-    def test_4(self):
-        b = """x = a.b.has_key(1 + 2).__repr__() ** -3 ** 4"""
-        a = """x = (1 + 2 in a.b).__repr__() ** -3 ** 4"""
-        self.check(b, a)
-
-    def test_5(self):
-        b = """x = a.has_key(f or g)"""
-        a = """x = (f or g) in a"""
-        self.check(b, a)
-
-    def test_6(self):
-        b = """x = a + b.has_key(c)"""
-        a = """x = a + (c in b)"""
-        self.check(b, a)
-
-    def test_7(self):
-        b = """x = a.has_key(lambda: 12)"""
-        a = """x = (lambda: 12) in a"""
-        self.check(b, a)
-
-    def test_8(self):
-        b = """x = a.has_key(a for a in b)"""
-        a = """x = (a for a in b) in a"""
-        self.check(b, a)
-
-    def test_9(self):
-        b = """if not a.has_key(b): pass"""
-        a = """if b not in a: pass"""
-        self.check(b, a)
-
-    def test_10(self):
-        b = """if not a.has_key(b).__repr__(): pass"""
-        a = """if not (b in a).__repr__(): pass"""
-        self.check(b, a)
-
-    def test_11(self):
-        b = """if not a.has_key(b) ** 2: pass"""
-        a = """if not (b in a) ** 2: pass"""
-        self.check(b, a)
-
-class Test_apply(FixerTestCase):
-    fixer = "apply"
-
-    def test_1(self):
-        b = """x = apply(f, g + h)"""
-        a = """x = f(*g + h)"""
-        self.check(b, a)
-
-    def test_2(self):
-        b = """y = apply(f, g, h)"""
-        a = """y = f(*g, **h)"""
-        self.check(b, a)
-
-    def test_3(self):
-        b = """z = apply(fs[0], g or h, h or g)"""
-        a = """z = fs[0](*g or h, **h or g)"""
-        self.check(b, a)
-
-    def test_4(self):
-        b = """apply(f, (x, y) + t)"""
-        a = """f(*(x, y) + t)"""
-        self.check(b, a)
-
-    def test_5(self):
-        b = """apply(f, args,)"""
-        a = """f(*args)"""
-        self.check(b, a)
-
-    def test_6(self):
-        b = """apply(f, args, kwds,)"""
-        a = """f(*args, **kwds)"""
-        self.check(b, a)
-
-    # Test that complex functions are parenthesized
-
-    def test_complex_1(self):
-        b = """x = apply(f+g, args)"""
-        a = """x = (f+g)(*args)"""
-        self.check(b, a)
-
-    def test_complex_2(self):
-        b = """x = apply(f*g, args)"""
-        a = """x = (f*g)(*args)"""
-        self.check(b, a)
-
-    def test_complex_3(self):
-        b = """x = apply(f**g, args)"""
-        a = """x = (f**g)(*args)"""
-        self.check(b, a)
-
-    # But dotted names etc. not
-
-    def test_dotted_name(self):
-        b = """x = apply(f.g, args)"""
-        a = """x = f.g(*args)"""
-        self.check(b, a)
-
-    def test_subscript(self):
-        b = """x = apply(f[x], args)"""
-        a = """x = f[x](*args)"""
-        self.check(b, a)
-
-    def test_call(self):
-        b = """x = apply(f(), args)"""
-        a = """x = f()(*args)"""
-        self.check(b, a)
-
-    # Extreme case
-    def test_extreme(self):
-        b = """x = apply(a.b.c.d.e.f, args, kwds)"""
-        a = """x = a.b.c.d.e.f(*args, **kwds)"""
-        self.check(b, a)
-
-    # XXX Comments in weird places still get lost
-    def test_weird_comments(self):
-        b = """apply(   # foo
-          f, # bar
-          args)"""
-        a = """f(*args)"""
-        self.check(b, a)
-
-    # These should *not* be touched
-
-    def test_unchanged_1(self):
-        s = """apply()"""
-        self.unchanged(s)
-
-    def test_unchanged_2(self):
-        s = """apply(f)"""
-        self.unchanged(s)
-
-    def test_unchanged_3(self):
-        s = """apply(f,)"""
-        self.unchanged(s)
-
-    def test_unchanged_4(self):
-        s = """apply(f, args, kwds, extras)"""
-        self.unchanged(s)
-
-    def test_unchanged_5(self):
-        s = """apply(f, *args, **kwds)"""
-        self.unchanged(s)
-
-    def test_unchanged_6(self):
-        s = """apply(f, *args)"""
-        self.unchanged(s)
-
-    def test_unchanged_7(self):
-        s = """apply(func=f, args=args, kwds=kwds)"""
-        self.unchanged(s)
-
-    def test_unchanged_8(self):
-        s = """apply(f, args=args, kwds=kwds)"""
-        self.unchanged(s)
-
-    def test_unchanged_9(self):
-        s = """apply(f, args, kwds=kwds)"""
-        self.unchanged(s)
-
-    def test_space_1(self):
-        a = """apply(  f,  args,   kwds)"""
-        b = """f(*args, **kwds)"""
-        self.check(a, b)
-
-    def test_space_2(self):
-        a = """apply(  f  ,args,kwds   )"""
-        b = """f(*args, **kwds)"""
-        self.check(a, b)
-
-class Test_intern(FixerTestCase):
-    fixer = "intern"
-
-    def test_prefix_preservation(self):
-        b = """x =   intern(  a  )"""
-        a = """import sys\nx =   sys.intern(  a  )"""
-        self.check(b, a)
-
-        b = """y = intern("b" # test
-              )"""
-        a = """import sys\ny = sys.intern("b" # test
-              )"""
-        self.check(b, a)
-
-        b = """z = intern(a+b+c.d,   )"""
-        a = """import sys\nz = sys.intern(a+b+c.d,   )"""
-        self.check(b, a)
-
-    def test(self):
-        b = """x = intern(a)"""
-        a = """import sys\nx = sys.intern(a)"""
-        self.check(b, a)
-
-        b = """z = intern(a+b+c.d,)"""
-        a = """import sys\nz = sys.intern(a+b+c.d,)"""
-        self.check(b, a)
-
-        b = """intern("y%s" % 5).replace("y", "")"""
-        a = """import sys\nsys.intern("y%s" % 5).replace("y", "")"""
-        self.check(b, a)
-
-    # These should not be refactored
-
-    def test_unchanged(self):
-        s = """intern(a=1)"""
-        self.unchanged(s)
-
-        s = """intern(f, g)"""
-        self.unchanged(s)
-
-        s = """intern(*h)"""
-        self.unchanged(s)
-
-        s = """intern(**i)"""
-        self.unchanged(s)
-
-        s = """intern()"""
-        self.unchanged(s)
-
-class Test_reduce(FixerTestCase):
-    fixer = "reduce"
-
-    def test_simple_call(self):
-        b = "reduce(a, b, c)"
-        a = "from functools import reduce\nreduce(a, b, c)"
-        self.check(b, a)
-
-    def test_bug_7253(self):
-        # fix_tuple_params was being bad and orphaning nodes in the tree.
-        b = "def x(arg): reduce(sum, [])"
-        a = "from functools import reduce\ndef x(arg): reduce(sum, [])"
-        self.check(b, a)
-
-    def test_call_with_lambda(self):
-        b = "reduce(lambda x, y: x + y, seq)"
-        a = "from functools import reduce\nreduce(lambda x, y: x + y, seq)"
-        self.check(b, a)
-
-    def test_unchanged(self):
-        s = "reduce(a)"
-        self.unchanged(s)
-
-        s = "reduce(a, b=42)"
-        self.unchanged(s)
-
-        s = "reduce(a, b, c, d)"
-        self.unchanged(s)
-
-        s = "reduce(**c)"
-        self.unchanged(s)
-
-        s = "reduce()"
-        self.unchanged(s)
-
-class Test_print(FixerTestCase):
-    fixer = "print"
-
-    def test_prefix_preservation(self):
-        b = """print 1,   1+1,   1+1+1"""
-        a = """print(1,   1+1,   1+1+1)"""
-        self.check(b, a)
-
-    def test_idempotency(self):
-        s = """print()"""
-        self.unchanged(s)
-
-        s = """print('')"""
-        self.unchanged(s)
-
-    def test_idempotency_print_as_function(self):
-        self.refactor.driver.grammar = pygram.python_grammar_no_print_statement
-        s = """print(1, 1+1, 1+1+1)"""
-        self.unchanged(s)
-
-        s = """print()"""
-        self.unchanged(s)
-
-        s = """print('')"""
-        self.unchanged(s)
-
-    def test_1(self):
-        b = """print 1, 1+1, 1+1+1"""
-        a = """print(1, 1+1, 1+1+1)"""
-        self.check(b, a)
-
-    def test_2(self):
-        b = """print 1, 2"""
-        a = """print(1, 2)"""
-        self.check(b, a)
-
-    def test_3(self):
-        b = """print"""
-        a = """print()"""
-        self.check(b, a)
-
-    def test_4(self):
-        # from bug 3000
-        b = """print whatever; print"""
-        a = """print(whatever); print()"""
-        self.check(b, a)
-
-    def test_5(self):
-        b = """print; print whatever;"""
-        a = """print(); print(whatever);"""
-        self.check(b, a)
-
-    def test_tuple(self):
-        b = """print (a, b, c)"""
-        a = """print((a, b, c))"""
-        self.check(b, a)
-
-    # trailing commas
-
-    def test_trailing_comma_1(self):
-        b = """print 1, 2, 3,"""
-        a = """print(1, 2, 3, end=' ')"""
-        self.check(b, a)
-
-    def test_trailing_comma_2(self):
-        b = """print 1, 2,"""
-        a = """print(1, 2, end=' ')"""
-        self.check(b, a)
-
-    def test_trailing_comma_3(self):
-        b = """print 1,"""
-        a = """print(1, end=' ')"""
-        self.check(b, a)
-
-    # >> stuff
-
-    def test_vargs_without_trailing_comma(self):
-        b = """print >>sys.stderr, 1, 2, 3"""
-        a = """print(1, 2, 3, file=sys.stderr)"""
-        self.check(b, a)
-
-    def test_with_trailing_comma(self):
-        b = """print >>sys.stderr, 1, 2,"""
-        a = """print(1, 2, end=' ', file=sys.stderr)"""
-        self.check(b, a)
-
-    def test_no_trailing_comma(self):
-        b = """print >>sys.stderr, 1+1"""
-        a = """print(1+1, file=sys.stderr)"""
-        self.check(b, a)
-
-    def test_spaces_before_file(self):
-        b = """print >>  sys.stderr"""
-        a = """print(file=sys.stderr)"""
-        self.check(b, a)
-
-    def test_with_future_print_function(self):
-        s = "from __future__ import print_function\n" \
-            "print('Hai!', end=' ')"
-        self.unchanged(s)
-
-        b = "print 'Hello, world!'"
-        a = "print('Hello, world!')"
-        self.check(b, a)
-
-
-class Test_exec(FixerTestCase):
-    fixer = "exec"
-
-    def test_prefix_preservation(self):
-        b = """  exec code in ns1,   ns2"""
-        a = """  exec(code, ns1,   ns2)"""
-        self.check(b, a)
-
-    def test_basic(self):
-        b = """exec code"""
-        a = """exec(code)"""
-        self.check(b, a)
-
-    def test_with_globals(self):
-        b = """exec code in ns"""
-        a = """exec(code, ns)"""
-        self.check(b, a)
-
-    def test_with_globals_locals(self):
-        b = """exec code in ns1, ns2"""
-        a = """exec(code, ns1, ns2)"""
-        self.check(b, a)
-
-    def test_complex_1(self):
-        b = """exec (a.b()) in ns"""
-        a = """exec((a.b()), ns)"""
-        self.check(b, a)
-
-    def test_complex_2(self):
-        b = """exec a.b() + c in ns"""
-        a = """exec(a.b() + c, ns)"""
-        self.check(b, a)
-
-    # These should not be touched
-
-    def test_unchanged_1(self):
-        s = """exec(code)"""
-        self.unchanged(s)
-
-    def test_unchanged_2(self):
-        s = """exec (code)"""
-        self.unchanged(s)
-
-    def test_unchanged_3(self):
-        s = """exec(code, ns)"""
-        self.unchanged(s)
-
-    def test_unchanged_4(self):
-        s = """exec(code, ns1, ns2)"""
-        self.unchanged(s)
-
-class Test_repr(FixerTestCase):
-    fixer = "repr"
-
-    def test_prefix_preservation(self):
-        b = """x =   `1 + 2`"""
-        a = """x =   repr(1 + 2)"""
-        self.check(b, a)
-
-    def test_simple_1(self):
-        b = """x = `1 + 2`"""
-        a = """x = repr(1 + 2)"""
-        self.check(b, a)
-
-    def test_simple_2(self):
-        b = """y = `x`"""
-        a = """y = repr(x)"""
-        self.check(b, a)
-
-    def test_complex(self):
-        b = """z = `y`.__repr__()"""
-        a = """z = repr(y).__repr__()"""
-        self.check(b, a)
-
-    def test_tuple(self):
-        b = """x = `1, 2, 3`"""
-        a = """x = repr((1, 2, 3))"""
-        self.check(b, a)
-
-    def test_nested(self):
-        b = """x = `1 + `2``"""
-        a = """x = repr(1 + repr(2))"""
-        self.check(b, a)
-
-    def test_nested_tuples(self):
-        b = """x = `1, 2 + `3, 4``"""
-        a = """x = repr((1, 2 + repr((3, 4))))"""
-        self.check(b, a)
-
-class Test_except(FixerTestCase):
-    fixer = "except"
-
-    def test_prefix_preservation(self):
-        b = """
-            try:
-                pass
-            except (RuntimeError, ImportError),    e:
-                pass"""
-        a = """
-            try:
-                pass
-            except (RuntimeError, ImportError) as    e:
-                pass"""
-        self.check(b, a)
-
-    def test_simple(self):
-        b = """
-            try:
-                pass
-            except Foo, e:
-                pass"""
-        a = """
-            try:
-                pass
-            except Foo as e:
-                pass"""
-        self.check(b, a)
-
-    def test_simple_no_space_before_target(self):
-        b = """
-            try:
-                pass
-            except Foo,e:
-                pass"""
-        a = """
-            try:
-                pass
-            except Foo as e:
-                pass"""
-        self.check(b, a)
-
-    def test_tuple_unpack(self):
-        b = """
-            def foo():
-                try:
-                    pass
-                except Exception, (f, e):
-                    pass
-                except ImportError, e:
-                    pass"""
-
-        a = """
-            def foo():
-                try:
-                    pass
-                except Exception as xxx_todo_changeme:
-                    (f, e) = xxx_todo_changeme.args
-                    pass
-                except ImportError as e:
-                    pass"""
-        self.check(b, a)
-
-    def test_multi_class(self):
-        b = """
-            try:
-                pass
-            except (RuntimeError, ImportError), e:
-                pass"""
-
-        a = """
-            try:
-                pass
-            except (RuntimeError, ImportError) as e:
-                pass"""
-        self.check(b, a)
-
-    def test_list_unpack(self):
-        b = """
-            try:
-                pass
-            except Exception, [a, b]:
-                pass"""
-
-        a = """
-            try:
-                pass
-            except Exception as xxx_todo_changeme:
-                [a, b] = xxx_todo_changeme.args
-                pass"""
-        self.check(b, a)
-
-    def test_weird_target_1(self):
-        b = """
-            try:
-                pass
-            except Exception, d[5]:
-                pass"""
-
-        a = """
-            try:
-                pass
-            except Exception as xxx_todo_changeme:
-                d[5] = xxx_todo_changeme
-                pass"""
-        self.check(b, a)
-
-    def test_weird_target_2(self):
-        b = """
-            try:
-                pass
-            except Exception, a.foo:
-                pass"""
-
-        a = """
-            try:
-                pass
-            except Exception as xxx_todo_changeme:
-                a.foo = xxx_todo_changeme
-                pass"""
-        self.check(b, a)
-
-    def test_weird_target_3(self):
-        b = """
-            try:
-                pass
-            except Exception, a().foo:
-                pass"""
-
-        a = """
-            try:
-                pass
-            except Exception as xxx_todo_changeme:
-                a().foo = xxx_todo_changeme
-                pass"""
-        self.check(b, a)
-
-    def test_bare_except(self):
-        b = """
-            try:
-                pass
-            except Exception, a:
-                pass
-            except:
-                pass"""
-
-        a = """
-            try:
-                pass
-            except Exception as a:
-                pass
-            except:
-                pass"""
-        self.check(b, a)
-
-    def test_bare_except_and_else_finally(self):
-        b = """
-            try:
-                pass
-            except Exception, a:
-                pass
-            except:
-                pass
-            else:
-                pass
-            finally:
-                pass"""
-
-        a = """
-            try:
-                pass
-            except Exception as a:
-                pass
-            except:
-                pass
-            else:
-                pass
-            finally:
-                pass"""
-        self.check(b, a)
-
-    def test_multi_fixed_excepts_before_bare_except(self):
-        b = """
-            try:
-                pass
-            except TypeError, b:
-                pass
-            except Exception, a:
-                pass
-            except:
-                pass"""
-
-        a = """
-            try:
-                pass
-            except TypeError as b:
-                pass
-            except Exception as a:
-                pass
-            except:
-                pass"""
-        self.check(b, a)
-
-    def test_one_line_suites(self):
-        b = """
-            try: raise TypeError
-            except TypeError, e:
-                pass
-            """
-        a = """
-            try: raise TypeError
-            except TypeError as e:
-                pass
-            """
-        self.check(b, a)
-        b = """
-            try:
-                raise TypeError
-            except TypeError, e: pass
-            """
-        a = """
-            try:
-                raise TypeError
-            except TypeError as e: pass
-            """
-        self.check(b, a)
-        b = """
-            try: raise TypeError
-            except TypeError, e: pass
-            """
-        a = """
-            try: raise TypeError
-            except TypeError as e: pass
-            """
-        self.check(b, a)
-        b = """
-            try: raise TypeError
-            except TypeError, e: pass
-            else: function()
-            finally: done()
-            """
-        a = """
-            try: raise TypeError
-            except TypeError as e: pass
-            else: function()
-            finally: done()
-            """
-        self.check(b, a)
-
-    # These should not be touched:
-
-    def test_unchanged_1(self):
-        s = """
-            try:
-                pass
-            except:
-                pass"""
-        self.unchanged(s)
-
-    def test_unchanged_2(self):
-        s = """
-            try:
-                pass
-            except Exception:
-                pass"""
-        self.unchanged(s)
-
-    def test_unchanged_3(self):
-        s = """
-            try:
-                pass
-            except (Exception, SystemExit):
-                pass"""
-        self.unchanged(s)
-
-class Test_raise(FixerTestCase):
-    fixer = "raise"
-
-    def test_basic(self):
-        b = """raise Exception, 5"""
-        a = """raise Exception(5)"""
-        self.check(b, a)
-
-    def test_prefix_preservation(self):
-        b = """raise Exception,5"""
-        a = """raise Exception(5)"""
-        self.check(b, a)
-
-        b = """raise   Exception,    5"""
-        a = """raise   Exception(5)"""
-        self.check(b, a)
-
-    def test_with_comments(self):
-        b = """raise Exception, 5 # foo"""
-        a = """raise Exception(5) # foo"""
-        self.check(b, a)
-
-        b = """raise E, (5, 6) % (a, b) # foo"""
-        a = """raise E((5, 6) % (a, b)) # foo"""
-        self.check(b, a)
-
-        b = """def foo():
-                    raise Exception, 5, 6 # foo"""
-        a = """def foo():
-                    raise Exception(5).with_traceback(6) # foo"""
-        self.check(b, a)
-
-    def test_None_value(self):
-        b = """raise Exception(5), None, tb"""
-        a = """raise Exception(5).with_traceback(tb)"""
-        self.check(b, a)
-
-    def test_tuple_value(self):
-        b = """raise Exception, (5, 6, 7)"""
-        a = """raise Exception(5, 6, 7)"""
-        self.check(b, a)
-
-    def test_tuple_detection(self):
-        b = """raise E, (5, 6) % (a, b)"""
-        a = """raise E((5, 6) % (a, b))"""
-        self.check(b, a)
-
-    def test_tuple_exc_1(self):
-        b = """raise (((E1, E2), E3), E4), V"""
-        a = """raise E1(V)"""
-        self.check(b, a)
-
-    def test_tuple_exc_2(self):
-        b = """raise (E1, (E2, E3), E4), V"""
-        a = """raise E1(V)"""
-        self.check(b, a)
-
-    # These should produce a warning
-
-    def test_string_exc(self):
-        s = """raise 'foo'"""
-        self.warns_unchanged(s, "Python 3 does not support string exceptions")
-
-    def test_string_exc_val(self):
-        s = """raise "foo", 5"""
-        self.warns_unchanged(s, "Python 3 does not support string exceptions")
-
-    def test_string_exc_val_tb(self):
-        s = """raise "foo", 5, 6"""
-        self.warns_unchanged(s, "Python 3 does not support string exceptions")
-
-    # These should result in traceback-assignment
-
-    def test_tb_1(self):
-        b = """def foo():
-                    raise Exception, 5, 6"""
-        a = """def foo():
-                    raise Exception(5).with_traceback(6)"""
-        self.check(b, a)
-
-    def test_tb_2(self):
-        b = """def foo():
-                    a = 5
-                    raise Exception, 5, 6
-                    b = 6"""
-        a = """def foo():
-                    a = 5
-                    raise Exception(5).with_traceback(6)
-                    b = 6"""
-        self.check(b, a)
-
-    def test_tb_3(self):
-        b = """def foo():
-                    raise Exception,5,6"""
-        a = """def foo():
-                    raise Exception(5).with_traceback(6)"""
-        self.check(b, a)
-
-    def test_tb_4(self):
-        b = """def foo():
-                    a = 5
-                    raise Exception,5,6
-                    b = 6"""
-        a = """def foo():
-                    a = 5
-                    raise Exception(5).with_traceback(6)
-                    b = 6"""
-        self.check(b, a)
-
-    def test_tb_5(self):
-        b = """def foo():
-                    raise Exception, (5, 6, 7), 6"""
-        a = """def foo():
-                    raise Exception(5, 6, 7).with_traceback(6)"""
-        self.check(b, a)
-
-    def test_tb_6(self):
-        b = """def foo():
-                    a = 5
-                    raise Exception, (5, 6, 7), 6
-                    b = 6"""
-        a = """def foo():
-                    a = 5
-                    raise Exception(5, 6, 7).with_traceback(6)
-                    b = 6"""
-        self.check(b, a)
-
-class Test_throw(FixerTestCase):
-    fixer = "throw"
-
-    def test_1(self):
-        b = """g.throw(Exception, 5)"""
-        a = """g.throw(Exception(5))"""
-        self.check(b, a)
-
-    def test_2(self):
-        b = """g.throw(Exception,5)"""
-        a = """g.throw(Exception(5))"""
-        self.check(b, a)
-
-    def test_3(self):
-        b = """g.throw(Exception, (5, 6, 7))"""
-        a = """g.throw(Exception(5, 6, 7))"""
-        self.check(b, a)
-
-    def test_4(self):
-        b = """5 + g.throw(Exception, 5)"""
-        a = """5 + g.throw(Exception(5))"""
-        self.check(b, a)
-
-    # These should produce warnings
-
-    def test_warn_1(self):
-        s = """g.throw("foo")"""
-        self.warns_unchanged(s, "Python 3 does not support string exceptions")
-
-    def test_warn_2(self):
-        s = """g.throw("foo", 5)"""
-        self.warns_unchanged(s, "Python 3 does not support string exceptions")
-
-    def test_warn_3(self):
-        s = """g.throw("foo", 5, 6)"""
-        self.warns_unchanged(s, "Python 3 does not support string exceptions")
-
-    # These should not be touched
-
-    def test_untouched_1(self):
-        s = """g.throw(Exception)"""
-        self.unchanged(s)
-
-    def test_untouched_2(self):
-        s = """g.throw(Exception(5, 6))"""
-        self.unchanged(s)
-
-    def test_untouched_3(self):
-        s = """5 + g.throw(Exception(5, 6))"""
-        self.unchanged(s)
-
-    # These should result in traceback-assignment
-
-    def test_tb_1(self):
-        b = """def foo():
-                    g.throw(Exception, 5, 6)"""
-        a = """def foo():
-                    g.throw(Exception(5).with_traceback(6))"""
-        self.check(b, a)
-
-    def test_tb_2(self):
-        b = """def foo():
-                    a = 5
-                    g.throw(Exception, 5, 6)
-                    b = 6"""
-        a = """def foo():
-                    a = 5
-                    g.throw(Exception(5).with_traceback(6))
-                    b = 6"""
-        self.check(b, a)
-
-    def test_tb_3(self):
-        b = """def foo():
-                    g.throw(Exception,5,6)"""
-        a = """def foo():
-                    g.throw(Exception(5).with_traceback(6))"""
-        self.check(b, a)
-
-    def test_tb_4(self):
-        b = """def foo():
-                    a = 5
-                    g.throw(Exception,5,6)
-                    b = 6"""
-        a = """def foo():
-                    a = 5
-                    g.throw(Exception(5).with_traceback(6))
-                    b = 6"""
-        self.check(b, a)
-
-    def test_tb_5(self):
-        b = """def foo():
-                    g.throw(Exception, (5, 6, 7), 6)"""
-        a = """def foo():
-                    g.throw(Exception(5, 6, 7).with_traceback(6))"""
-        self.check(b, a)
-
-    def test_tb_6(self):
-        b = """def foo():
-                    a = 5
-                    g.throw(Exception, (5, 6, 7), 6)
-                    b = 6"""
-        a = """def foo():
-                    a = 5
-                    g.throw(Exception(5, 6, 7).with_traceback(6))
-                    b = 6"""
-        self.check(b, a)
-
-    def test_tb_7(self):
-        b = """def foo():
-                    a + g.throw(Exception, 5, 6)"""
-        a = """def foo():
-                    a + g.throw(Exception(5).with_traceback(6))"""
-        self.check(b, a)
-
-    def test_tb_8(self):
-        b = """def foo():
-                    a = 5
-                    a + g.throw(Exception, 5, 6)
-                    b = 6"""
-        a = """def foo():
-                    a = 5
-                    a + g.throw(Exception(5).with_traceback(6))
-                    b = 6"""
-        self.check(b, a)
-
-class Test_long(FixerTestCase):
-    fixer = "long"
-
-    def test_1(self):
-        b = """x = long(x)"""
-        a = """x = int(x)"""
-        self.check(b, a)
-
-    def test_2(self):
-        b = """y = isinstance(x, long)"""
-        a = """y = isinstance(x, int)"""
-        self.check(b, a)
-
-    def test_3(self):
-        b = """z = type(x) in (int, long)"""
-        a = """z = type(x) in (int, int)"""
-        self.check(b, a)
-
-    def test_unchanged(self):
-        s = """long = True"""
-        self.unchanged(s)
-
-        s = """s.long = True"""
-        self.unchanged(s)
-
-        s = """def long(): pass"""
-        self.unchanged(s)
-
-        s = """class long(): pass"""
-        self.unchanged(s)
-
-        s = """def f(long): pass"""
-        self.unchanged(s)
-
-        s = """def f(g, long): pass"""
-        self.unchanged(s)
-
-        s = """def f(x, long=True): pass"""
-        self.unchanged(s)
-
-    def test_prefix_preservation(self):
-        b = """x =   long(  x  )"""
-        a = """x =   int(  x  )"""
-        self.check(b, a)
-
-
-class Test_execfile(FixerTestCase):
-    fixer = "execfile"
-
-    def test_conversion(self):
-        b = """execfile("fn")"""
-        a = """exec(compile(open("fn").read(), "fn", 'exec'))"""
-        self.check(b, a)
-
-        b = """execfile("fn", glob)"""
-        a = """exec(compile(open("fn").read(), "fn", 'exec'), glob)"""
-        self.check(b, a)
-
-        b = """execfile("fn", glob, loc)"""
-        a = """exec(compile(open("fn").read(), "fn", 'exec'), glob, loc)"""
-        self.check(b, a)
-
-        b = """execfile("fn", globals=glob)"""
-        a = """exec(compile(open("fn").read(), "fn", 'exec'), globals=glob)"""
-        self.check(b, a)
-
-        b = """execfile("fn", locals=loc)"""
-        a = """exec(compile(open("fn").read(), "fn", 'exec'), locals=loc)"""
-        self.check(b, a)
-
-        b = """execfile("fn", globals=glob, locals=loc)"""
-        a = """exec(compile(open("fn").read(), "fn", 'exec'), globals=glob, locals=loc)"""
-        self.check(b, a)
-
-    def test_spacing(self):
-        b = """execfile( "fn" )"""
-        a = """exec(compile(open( "fn" ).read(), "fn", 'exec'))"""
-        self.check(b, a)
-
-        b = """execfile("fn",  globals = glob)"""
-        a = """exec(compile(open("fn").read(), "fn", 'exec'),  globals = glob)"""
-        self.check(b, a)
-
-
-class Test_isinstance(FixerTestCase):
-    fixer = "isinstance"
-
-    def test_remove_multiple_items(self):
-        b = """isinstance(x, (int, int, int))"""
-        a = """isinstance(x, int)"""
-        self.check(b, a)
-
-        b = """isinstance(x, (int, float, int, int, float))"""
-        a = """isinstance(x, (int, float))"""
-        self.check(b, a)
-
-        b = """isinstance(x, (int, float, int, int, float, str))"""
-        a = """isinstance(x, (int, float, str))"""
-        self.check(b, a)
-
-        b = """isinstance(foo() + bar(), (x(), y(), x(), int, int))"""
-        a = """isinstance(foo() + bar(), (x(), y(), x(), int))"""
-        self.check(b, a)
-
-    def test_prefix_preservation(self):
-        b = """if    isinstance(  foo(), (  bar, bar, baz )) : pass"""
-        a = """if    isinstance(  foo(), (  bar, baz )) : pass"""
-        self.check(b, a)
-
-    def test_unchanged(self):
-        self.unchanged("isinstance(x, (str, int))")
-
-class Test_dict(FixerTestCase):
-    fixer = "dict"
-
-    def test_prefix_preservation(self):
-        b = "if   d. keys  (  )  : pass"
-        a = "if   list(d. keys  (  ))  : pass"
-        self.check(b, a)
-
-        b = "if   d. items  (  )  : pass"
-        a = "if   list(d. items  (  ))  : pass"
-        self.check(b, a)
-
-        b = "if   d. iterkeys  ( )  : pass"
-        a = "if   iter(d. keys  ( ))  : pass"
-        self.check(b, a)
-
-        b = "[i for i in    d.  iterkeys(  )  ]"
-        a = "[i for i in    d.  keys(  )  ]"
-        self.check(b, a)
-
-        b = "if   d. viewkeys  ( )  : pass"
-        a = "if   d. keys  ( )  : pass"
-        self.check(b, a)
-
-        b = "[i for i in    d.  viewkeys(  )  ]"
-        a = "[i for i in    d.  keys(  )  ]"
-        self.check(b, a)
-
-    def test_trailing_comment(self):
-        b = "d.keys() # foo"
-        a = "list(d.keys()) # foo"
-        self.check(b, a)
-
-        b = "d.items()  # foo"
-        a = "list(d.items())  # foo"
-        self.check(b, a)
-
-        b = "d.iterkeys()  # foo"
-        a = "iter(d.keys())  # foo"
-        self.check(b, a)
-
-        b = """[i for i in d.iterkeys() # foo
-               ]"""
-        a = """[i for i in d.keys() # foo
-               ]"""
-        self.check(b, a)
-
-        b = """[i for i in d.iterkeys() # foo
-               ]"""
-        a = """[i for i in d.keys() # foo
-               ]"""
-        self.check(b, a)
-
-        b = "d.viewitems()  # foo"
-        a = "d.items()  # foo"
-        self.check(b, a)
-
-    def test_unchanged(self):
-        for wrapper in fixer_util.consuming_calls:
-            s = "s = %s(d.keys())" % wrapper
-            self.unchanged(s)
-
-            s = "s = %s(d.values())" % wrapper
-            self.unchanged(s)
-
-            s = "s = %s(d.items())" % wrapper
-            self.unchanged(s)
-
-    def test_01(self):
-        b = "d.keys()"
-        a = "list(d.keys())"
-        self.check(b, a)
-
-        b = "a[0].foo().keys()"
-        a = "list(a[0].foo().keys())"
-        self.check(b, a)
-
-    def test_02(self):
-        b = "d.items()"
-        a = "list(d.items())"
-        self.check(b, a)
-
-    def test_03(self):
-        b = "d.values()"
-        a = "list(d.values())"
-        self.check(b, a)
-
-    def test_04(self):
-        b = "d.iterkeys()"
-        a = "iter(d.keys())"
-        self.check(b, a)
-
-    def test_05(self):
-        b = "d.iteritems()"
-        a = "iter(d.items())"
-        self.check(b, a)
-
-    def test_06(self):
-        b = "d.itervalues()"
-        a = "iter(d.values())"
-        self.check(b, a)
-
-    def test_07(self):
-        s = "list(d.keys())"
-        self.unchanged(s)
-
-    def test_08(self):
-        s = "sorted(d.keys())"
-        self.unchanged(s)
-
-    def test_09(self):
-        b = "iter(d.keys())"
-        a = "iter(list(d.keys()))"
-        self.check(b, a)
-
-    def test_10(self):
-        b = "foo(d.keys())"
-        a = "foo(list(d.keys()))"
-        self.check(b, a)
-
-    def test_11(self):
-        b = "for i in d.keys(): print i"
-        a = "for i in list(d.keys()): print i"
-        self.check(b, a)
-
-    def test_12(self):
-        b = "for i in d.iterkeys(): print i"
-        a = "for i in d.keys(): print i"
-        self.check(b, a)
-
-    def test_13(self):
-        b = "[i for i in d.keys()]"
-        a = "[i for i in list(d.keys())]"
-        self.check(b, a)
-
-    def test_14(self):
-        b = "[i for i in d.iterkeys()]"
-        a = "[i for i in d.keys()]"
-        self.check(b, a)
-
-    def test_15(self):
-        b = "(i for i in d.keys())"
-        a = "(i for i in list(d.keys()))"
-        self.check(b, a)
-
-    def test_16(self):
-        b = "(i for i in d.iterkeys())"
-        a = "(i for i in d.keys())"
-        self.check(b, a)
-
-    def test_17(self):
-        b = "iter(d.iterkeys())"
-        a = "iter(d.keys())"
-        self.check(b, a)
-
-    def test_18(self):
-        b = "list(d.iterkeys())"
-        a = "list(d.keys())"
-        self.check(b, a)
-
-    def test_19(self):
-        b = "sorted(d.iterkeys())"
-        a = "sorted(d.keys())"
-        self.check(b, a)
-
-    def test_20(self):
-        b = "foo(d.iterkeys())"
-        a = "foo(iter(d.keys()))"
-        self.check(b, a)
-
-    def test_21(self):
-        b = "print h.iterkeys().next()"
-        a = "print iter(h.keys()).next()"
-        self.check(b, a)
-
-    def test_22(self):
-        b = "print h.keys()[0]"
-        a = "print list(h.keys())[0]"
-        self.check(b, a)
-
-    def test_23(self):
-        b = "print list(h.iterkeys().next())"
-        a = "print list(iter(h.keys()).next())"
-        self.check(b, a)
-
-    def test_24(self):
-        b = "for x in h.keys()[0]: print x"
-        a = "for x in list(h.keys())[0]: print x"
-        self.check(b, a)
-
-    def test_25(self):
-        b = "d.viewkeys()"
-        a = "d.keys()"
-        self.check(b, a)
-
-    def test_26(self):
-        b = "d.viewitems()"
-        a = "d.items()"
-        self.check(b, a)
-
-    def test_27(self):
-        b = "d.viewvalues()"
-        a = "d.values()"
-        self.check(b, a)
-
-    def test_14(self):
-        b = "[i for i in d.viewkeys()]"
-        a = "[i for i in d.keys()]"
-        self.check(b, a)
-
-    def test_15(self):
-        b = "(i for i in d.viewkeys())"
-        a = "(i for i in d.keys())"
-        self.check(b, a)
-
-    def test_17(self):
-        b = "iter(d.viewkeys())"
-        a = "iter(d.keys())"
-        self.check(b, a)
-
-    def test_18(self):
-        b = "list(d.viewkeys())"
-        a = "list(d.keys())"
-        self.check(b, a)
-
-    def test_19(self):
-        b = "sorted(d.viewkeys())"
-        a = "sorted(d.keys())"
-        self.check(b, a)
-
-class Test_xrange(FixerTestCase):
-    fixer = "xrange"
-
-    def test_prefix_preservation(self):
-        b = """x =    xrange(  10  )"""
-        a = """x =    range(  10  )"""
-        self.check(b, a)
-
-        b = """x = xrange(  1  ,  10   )"""
-        a = """x = range(  1  ,  10   )"""
-        self.check(b, a)
-
-        b = """x = xrange(  0  ,  10 ,  2 )"""
-        a = """x = range(  0  ,  10 ,  2 )"""
-        self.check(b, a)
-
-    def test_single_arg(self):
-        b = """x = xrange(10)"""
-        a = """x = range(10)"""
-        self.check(b, a)
-
-    def test_two_args(self):
-        b = """x = xrange(1, 10)"""
-        a = """x = range(1, 10)"""
-        self.check(b, a)
-
-    def test_three_args(self):
-        b = """x = xrange(0, 10, 2)"""
-        a = """x = range(0, 10, 2)"""
-        self.check(b, a)
-
-    def test_wrap_in_list(self):
-        b = """x = range(10, 3, 9)"""
-        a = """x = list(range(10, 3, 9))"""
-        self.check(b, a)
-
-        b = """x = foo(range(10, 3, 9))"""
-        a = """x = foo(list(range(10, 3, 9)))"""
-        self.check(b, a)
-
-        b = """x = range(10, 3, 9) + [4]"""
-        a = """x = list(range(10, 3, 9)) + [4]"""
-        self.check(b, a)
-
-        b = """x = range(10)[::-1]"""
-        a = """x = list(range(10))[::-1]"""
-        self.check(b, a)
-
-        b = """x = range(10)  [3]"""
-        a = """x = list(range(10))  [3]"""
-        self.check(b, a)
-
-    def test_xrange_in_for(self):
-        b = """for i in xrange(10):\n    j=i"""
-        a = """for i in range(10):\n    j=i"""
-        self.check(b, a)
-
-        b = """[i for i in xrange(10)]"""
-        a = """[i for i in range(10)]"""
-        self.check(b, a)
-
-    def test_range_in_for(self):
-        self.unchanged("for i in range(10): pass")
-        self.unchanged("[i for i in range(10)]")
-
-    def test_in_contains_test(self):
-        self.unchanged("x in range(10, 3, 9)")
-
-    def test_in_consuming_context(self):
-        for call in fixer_util.consuming_calls:
-            self.unchanged("a = %s(range(10))" % call)
-
-class Test_xrange_with_reduce(FixerTestCase):
-
-    def setUp(self):
-        super(Test_xrange_with_reduce, self).setUp(["xrange", "reduce"])
-
-    def test_double_transform(self):
-        b = """reduce(x, xrange(5))"""
-        a = """from functools import reduce
-reduce(x, range(5))"""
-        self.check(b, a)
-
-class Test_raw_input(FixerTestCase):
-    fixer = "raw_input"
-
-    def test_prefix_preservation(self):
-        b = """x =    raw_input(   )"""
-        a = """x =    input(   )"""
-        self.check(b, a)
-
-        b = """x = raw_input(   ''   )"""
-        a = """x = input(   ''   )"""
-        self.check(b, a)
-
-    def test_1(self):
-        b = """x = raw_input()"""
-        a = """x = input()"""
-        self.check(b, a)
-
-    def test_2(self):
-        b = """x = raw_input('')"""
-        a = """x = input('')"""
-        self.check(b, a)
-
-    def test_3(self):
-        b = """x = raw_input('prompt')"""
-        a = """x = input('prompt')"""
-        self.check(b, a)
-
-    def test_4(self):
-        b = """x = raw_input(foo(a) + 6)"""
-        a = """x = input(foo(a) + 6)"""
-        self.check(b, a)
-
-    def test_5(self):
-        b = """x = raw_input(invite).split()"""
-        a = """x = input(invite).split()"""
-        self.check(b, a)
-
-    def test_6(self):
-        b = """x = raw_input(invite) . split ()"""
-        a = """x = input(invite) . split ()"""
-        self.check(b, a)
-
-    def test_8(self):
-        b = "x = int(raw_input())"
-        a = "x = int(input())"
-        self.check(b, a)
-
-class Test_funcattrs(FixerTestCase):
-    fixer = "funcattrs"
-
-    attrs = ["closure", "doc", "name", "defaults", "code", "globals", "dict"]
-
-    def test(self):
-        for attr in self.attrs:
-            b = "a.func_%s" % attr
-            a = "a.__%s__" % attr
-            self.check(b, a)
-
-            b = "self.foo.func_%s.foo_bar" % attr
-            a = "self.foo.__%s__.foo_bar" % attr
-            self.check(b, a)
-
-    def test_unchanged(self):
-        for attr in self.attrs:
-            s = "foo(func_%s + 5)" % attr
-            self.unchanged(s)
-
-            s = "f(foo.__%s__)" % attr
-            self.unchanged(s)
-
-            s = "f(foo.__%s__.foo)" % attr
-            self.unchanged(s)
-
-class Test_xreadlines(FixerTestCase):
-    fixer = "xreadlines"
-
-    def test_call(self):
-        b = "for x in f.xreadlines(): pass"
-        a = "for x in f: pass"
-        self.check(b, a)
-
-        b = "for x in foo().xreadlines(): pass"
-        a = "for x in foo(): pass"
-        self.check(b, a)
-
-        b = "for x in (5 + foo()).xreadlines(): pass"
-        a = "for x in (5 + foo()): pass"
-        self.check(b, a)
-
-    def test_attr_ref(self):
-        b = "foo(f.xreadlines + 5)"
-        a = "foo(f.__iter__ + 5)"
-        self.check(b, a)
-
-        b = "foo(f().xreadlines + 5)"
-        a = "foo(f().__iter__ + 5)"
-        self.check(b, a)
-
-        b = "foo((5 + f()).xreadlines + 5)"
-        a = "foo((5 + f()).__iter__ + 5)"
-        self.check(b, a)
-
-    def test_unchanged(self):
-        s = "for x in f.xreadlines(5): pass"
-        self.unchanged(s)
-
-        s = "for x in f.xreadlines(k=5): pass"
-        self.unchanged(s)
-
-        s = "for x in f.xreadlines(*k, **v): pass"
-        self.unchanged(s)
-
-        s = "foo(xreadlines)"
-        self.unchanged(s)
-
-
-class ImportsFixerTests:
-
-    def test_import_module(self):
-        for old, new in self.modules.items():
-            b = "import %s" % old
-            a = "import %s" % new
-            self.check(b, a)
-
-            b = "import foo, %s, bar" % old
-            a = "import foo, %s, bar" % new
-            self.check(b, a)
-
-    def test_import_from(self):
-        for old, new in self.modules.items():
-            b = "from %s import foo" % old
-            a = "from %s import foo" % new
-            self.check(b, a)
-
-            b = "from %s import foo, bar" % old
-            a = "from %s import foo, bar" % new
-            self.check(b, a)
-
-            b = "from %s import (yes, no)" % old
-            a = "from %s import (yes, no)" % new
-            self.check(b, a)
-
-    def test_import_module_as(self):
-        for old, new in self.modules.items():
-            b = "import %s as foo_bar" % old
-            a = "import %s as foo_bar" % new
-            self.check(b, a)
-
-            b = "import %s as foo_bar" % old
-            a = "import %s as foo_bar" % new
-            self.check(b, a)
-
-    def test_import_from_as(self):
-        for old, new in self.modules.items():
-            b = "from %s import foo as bar" % old
-            a = "from %s import foo as bar" % new
-            self.check(b, a)
-
-    def test_star(self):
-        for old, new in self.modules.items():
-            b = "from %s import *" % old
-            a = "from %s import *" % new
-            self.check(b, a)
-
-    def test_import_module_usage(self):
-        for old, new in self.modules.items():
-            b = """
-                import %s
-                foo(%s.bar)
-                """ % (old, old)
-            a = """
-                import %s
-                foo(%s.bar)
-                """ % (new, new)
-            self.check(b, a)
-
-            b = """
-                from %s import x
-                %s = 23
-                """ % (old, old)
-            a = """
-                from %s import x
-                %s = 23
-                """ % (new, old)
-            self.check(b, a)
-
-            s = """
-                def f():
-                    %s.method()
-                """ % (old,)
-            self.unchanged(s)
-
-            # test nested usage
-            b = """
-                import %s
-                %s.bar(%s.foo)
-                """ % (old, old, old)
-            a = """
-                import %s
-                %s.bar(%s.foo)
-                """ % (new, new, new)
-            self.check(b, a)
-
-            b = """
-                import %s
-                x.%s
-                """ % (old, old)
-            a = """
-                import %s
-                x.%s
-                """ % (new, old)
-            self.check(b, a)
-
-
-class Test_imports(FixerTestCase, ImportsFixerTests):
-    fixer = "imports"
-    from ..fixes.fix_imports import MAPPING as modules
-
-    def test_multiple_imports(self):
-        b = """import urlparse, cStringIO"""
-        a = """import urllib.parse, io"""
-        self.check(b, a)
-
-    def test_multiple_imports_as(self):
-        b = """
-            import copy_reg as bar, HTMLParser as foo, urlparse
-            s = urlparse.spam(bar.foo())
-            """
-        a = """
-            import copyreg as bar, html.parser as foo, urllib.parse
-            s = urllib.parse.spam(bar.foo())
-            """
-        self.check(b, a)
-
-
-class Test_imports2(FixerTestCase, ImportsFixerTests):
-    fixer = "imports2"
-    from ..fixes.fix_imports2 import MAPPING as modules
-
-
-class Test_imports_fixer_order(FixerTestCase, ImportsFixerTests):
-
-    def setUp(self):
-        super(Test_imports_fixer_order, self).setUp(['imports', 'imports2'])
-        from ..fixes.fix_imports2 import MAPPING as mapping2
-        self.modules = mapping2.copy()
-        from ..fixes.fix_imports import MAPPING as mapping1
-        for key in ('dbhash', 'dumbdbm', 'dbm', 'gdbm'):
-            self.modules[key] = mapping1[key]
-
-    def test_after_local_imports_refactoring(self):
-        for fix in ("imports", "imports2"):
-            self.fixer = fix
-            self.assert_runs_after("import")
-
-
-class Test_urllib(FixerTestCase):
-    fixer = "urllib"
-    from ..fixes.fix_urllib import MAPPING as modules
-
-    def test_import_module(self):
-        for old, changes in self.modules.items():
-            b = "import %s" % old
-            a = "import %s" % ", ".join(map(itemgetter(0), changes))
-            self.check(b, a)
-
-    def test_import_from(self):
-        for old, changes in self.modules.items():
-            all_members = []
-            for new, members in changes:
-                for member in members:
-                    all_members.append(member)
-                    b = "from %s import %s" % (old, member)
-                    a = "from %s import %s" % (new, member)
-                    self.check(b, a)
-
-                    s = "from foo import %s" % member
-                    self.unchanged(s)
-
-                b = "from %s import %s" % (old, ", ".join(members))
-                a = "from %s import %s" % (new, ", ".join(members))
-                self.check(b, a)
-
-                s = "from foo import %s" % ", ".join(members)
-                self.unchanged(s)
-
-            # test the breaking of a module into multiple replacements
-            b = "from %s import %s" % (old, ", ".join(all_members))
-            a = "\n".join(["from %s import %s" % (new, ", ".join(members))
-                            for (new, members) in changes])
-            self.check(b, a)
-
-    def test_import_module_as(self):
-        for old in self.modules:
-            s = "import %s as foo" % old
-            self.warns_unchanged(s, "This module is now multiple modules")
-
-    def test_import_from_as(self):
-        for old, changes in self.modules.items():
-            for new, members in changes:
-                for member in members:
-                    b = "from %s import %s as foo_bar" % (old, member)
-                    a = "from %s import %s as foo_bar" % (new, member)
-                    self.check(b, a)
-                    b = "from %s import %s as blah, %s" % (old, member, member)
-                    a = "from %s import %s as blah, %s" % (new, member, member)
-                    self.check(b, a)
-
-    def test_star(self):
-        for old in self.modules:
-            s = "from %s import *" % old
-            self.warns_unchanged(s, "Cannot handle star imports")
-
-    def test_indented(self):
-        b = """
-def foo():
-    from urllib import urlencode, urlopen
-"""
-        a = """
-def foo():
-    from urllib.parse import urlencode
-    from urllib.request import urlopen
-"""
-        self.check(b, a)
-
-        b = """
-def foo():
-    other()
-    from urllib import urlencode, urlopen
-"""
-        a = """
-def foo():
-    other()
-    from urllib.parse import urlencode
-    from urllib.request import urlopen
-"""
-        self.check(b, a)
-
-
-
-    def test_import_module_usage(self):
-        for old, changes in self.modules.items():
-            for new, members in changes:
-                for member in members:
-                    new_import = ", ".join([n for (n, mems)
-                                            in self.modules[old]])
-                    b = """
-                        import %s
-                        foo(%s.%s)
-                        """ % (old, old, member)
-                    a = """
-                        import %s
-                        foo(%s.%s)
-                        """ % (new_import, new, member)
-                    self.check(b, a)
-                    b = """
-                        import %s
-                        %s.%s(%s.%s)
-                        """ % (old, old, member, old, member)
-                    a = """
-                        import %s
-                        %s.%s(%s.%s)
-                        """ % (new_import, new, member, new, member)
-                    self.check(b, a)
-
-
-class Test_input(FixerTestCase):
-    fixer = "input"
-
-    def test_prefix_preservation(self):
-        b = """x =   input(   )"""
-        a = """x =   eval(input(   ))"""
-        self.check(b, a)
-
-        b = """x = input(   ''   )"""
-        a = """x = eval(input(   ''   ))"""
-        self.check(b, a)
-
-    def test_trailing_comment(self):
-        b = """x = input()  #  foo"""
-        a = """x = eval(input())  #  foo"""
-        self.check(b, a)
-
-    def test_idempotency(self):
-        s = """x = eval(input())"""
-        self.unchanged(s)
-
-        s = """x = eval(input(''))"""
-        self.unchanged(s)
-
-        s = """x = eval(input(foo(5) + 9))"""
-        self.unchanged(s)
-
-    def test_1(self):
-        b = """x = input()"""
-        a = """x = eval(input())"""
-        self.check(b, a)
-
-    def test_2(self):
-        b = """x = input('')"""
-        a = """x = eval(input(''))"""
-        self.check(b, a)
-
-    def test_3(self):
-        b = """x = input('prompt')"""
-        a = """x = eval(input('prompt'))"""
-        self.check(b, a)
-
-    def test_4(self):
-        b = """x = input(foo(5) + 9)"""
-        a = """x = eval(input(foo(5) + 9))"""
-        self.check(b, a)
-
-class Test_tuple_params(FixerTestCase):
-    fixer = "tuple_params"
-
-    def test_unchanged_1(self):
-        s = """def foo(): pass"""
-        self.unchanged(s)
-
-    def test_unchanged_2(self):
-        s = """def foo(a, b, c): pass"""
-        self.unchanged(s)
-
-    def test_unchanged_3(self):
-        s = """def foo(a=3, b=4, c=5): pass"""
-        self.unchanged(s)
-
-    def test_1(self):
-        b = """
-            def foo(((a, b), c)):
-                x = 5"""
-
-        a = """
-            def foo(xxx_todo_changeme):
-                ((a, b), c) = xxx_todo_changeme
-                x = 5"""
-        self.check(b, a)
-
-    def test_2(self):
-        b = """
-            def foo(((a, b), c), d):
-                x = 5"""
-
-        a = """
-            def foo(xxx_todo_changeme, d):
-                ((a, b), c) = xxx_todo_changeme
-                x = 5"""
-        self.check(b, a)
-
-    def test_3(self):
-        b = """
-            def foo(((a, b), c), d) -> e:
-                x = 5"""
-
-        a = """
-            def foo(xxx_todo_changeme, d) -> e:
-                ((a, b), c) = xxx_todo_changeme
-                x = 5"""
-        self.check(b, a)
-
-    def test_semicolon(self):
-        b = """
-            def foo(((a, b), c)): x = 5; y = 7"""
-
-        a = """
-            def foo(xxx_todo_changeme): ((a, b), c) = xxx_todo_changeme; x = 5; y = 7"""
-        self.check(b, a)
-
-    def test_keywords(self):
-        b = """
-            def foo(((a, b), c), d, e=5) -> z:
-                x = 5"""
-
-        a = """
-            def foo(xxx_todo_changeme, d, e=5) -> z:
-                ((a, b), c) = xxx_todo_changeme
-                x = 5"""
-        self.check(b, a)
-
-    def test_varargs(self):
-        b = """
-            def foo(((a, b), c), d, *vargs, **kwargs) -> z:
-                x = 5"""
-
-        a = """
-            def foo(xxx_todo_changeme, d, *vargs, **kwargs) -> z:
-                ((a, b), c) = xxx_todo_changeme
-                x = 5"""
-        self.check(b, a)
-
-    def test_multi_1(self):
-        b = """
-            def foo(((a, b), c), (d, e, f)) -> z:
-                x = 5"""
-
-        a = """
-            def foo(xxx_todo_changeme, xxx_todo_changeme1) -> z:
-                ((a, b), c) = xxx_todo_changeme
-                (d, e, f) = xxx_todo_changeme1
-                x = 5"""
-        self.check(b, a)
-
-    def test_multi_2(self):
-        b = """
-            def foo(x, ((a, b), c), d, (e, f, g), y) -> z:
-                x = 5"""
-
-        a = """
-            def foo(x, xxx_todo_changeme, d, xxx_todo_changeme1, y) -> z:
-                ((a, b), c) = xxx_todo_changeme
-                (e, f, g) = xxx_todo_changeme1
-                x = 5"""
-        self.check(b, a)
-
-    def test_docstring(self):
-        b = """
-            def foo(((a, b), c), (d, e, f)) -> z:
-                "foo foo foo foo"
-                x = 5"""
-
-        a = """
-            def foo(xxx_todo_changeme, xxx_todo_changeme1) -> z:
-                "foo foo foo foo"
-                ((a, b), c) = xxx_todo_changeme
-                (d, e, f) = xxx_todo_changeme1
-                x = 5"""
-        self.check(b, a)
-
-    def test_lambda_no_change(self):
-        s = """lambda x: x + 5"""
-        self.unchanged(s)
-
-    def test_lambda_parens_single_arg(self):
-        b = """lambda (x): x + 5"""
-        a = """lambda x: x + 5"""
-        self.check(b, a)
-
-        b = """lambda(x): x + 5"""
-        a = """lambda x: x + 5"""
-        self.check(b, a)
-
-        b = """lambda ((((x)))): x + 5"""
-        a = """lambda x: x + 5"""
-        self.check(b, a)
-
-        b = """lambda((((x)))): x + 5"""
-        a = """lambda x: x + 5"""
-        self.check(b, a)
-
-    def test_lambda_simple(self):
-        b = """lambda (x, y): x + f(y)"""
-        a = """lambda x_y: x_y[0] + f(x_y[1])"""
-        self.check(b, a)
-
-        b = """lambda(x, y): x + f(y)"""
-        a = """lambda x_y: x_y[0] + f(x_y[1])"""
-        self.check(b, a)
-
-        b = """lambda (((x, y))): x + f(y)"""
-        a = """lambda x_y: x_y[0] + f(x_y[1])"""
-        self.check(b, a)
-
-        b = """lambda(((x, y))): x + f(y)"""
-        a = """lambda x_y: x_y[0] + f(x_y[1])"""
-        self.check(b, a)
-
-    def test_lambda_one_tuple(self):
-        b = """lambda (x,): x + f(x)"""
-        a = """lambda x1: x1[0] + f(x1[0])"""
-        self.check(b, a)
-
-        b = """lambda (((x,))): x + f(x)"""
-        a = """lambda x1: x1[0] + f(x1[0])"""
-        self.check(b, a)
-
-    def test_lambda_simple_multi_use(self):
-        b = """lambda (x, y): x + x + f(x) + x"""
-        a = """lambda x_y: x_y[0] + x_y[0] + f(x_y[0]) + x_y[0]"""
-        self.check(b, a)
-
-    def test_lambda_simple_reverse(self):
-        b = """lambda (x, y): y + x"""
-        a = """lambda x_y: x_y[1] + x_y[0]"""
-        self.check(b, a)
-
-    def test_lambda_nested(self):
-        b = """lambda (x, (y, z)): x + y + z"""
-        a = """lambda x_y_z: x_y_z[0] + x_y_z[1][0] + x_y_z[1][1]"""
-        self.check(b, a)
-
-        b = """lambda (((x, (y, z)))): x + y + z"""
-        a = """lambda x_y_z: x_y_z[0] + x_y_z[1][0] + x_y_z[1][1]"""
-        self.check(b, a)
-
-    def test_lambda_nested_multi_use(self):
-        b = """lambda (x, (y, z)): x + y + f(y)"""
-        a = """lambda x_y_z: x_y_z[0] + x_y_z[1][0] + f(x_y_z[1][0])"""
-        self.check(b, a)
-
-class Test_methodattrs(FixerTestCase):
-    fixer = "methodattrs"
-
-    attrs = ["func", "self", "class"]
-
-    def test(self):
-        for attr in self.attrs:
-            b = "a.im_%s" % attr
-            if attr == "class":
-                a = "a.__self__.__class__"
-            else:
-                a = "a.__%s__" % attr
-            self.check(b, a)
-
-            b = "self.foo.im_%s.foo_bar" % attr
-            if attr == "class":
-                a = "self.foo.__self__.__class__.foo_bar"
-            else:
-                a = "self.foo.__%s__.foo_bar" % attr
-            self.check(b, a)
-
-    def test_unchanged(self):
-        for attr in self.attrs:
-            s = "foo(im_%s + 5)" % attr
-            self.unchanged(s)
-
-            s = "f(foo.__%s__)" % attr
-            self.unchanged(s)
-
-            s = "f(foo.__%s__.foo)" % attr
-            self.unchanged(s)
-
-class Test_next(FixerTestCase):
-    fixer = "next"
-
-    def test_1(self):
-        b = """it.next()"""
-        a = """next(it)"""
-        self.check(b, a)
-
-    def test_2(self):
-        b = """a.b.c.d.next()"""
-        a = """next(a.b.c.d)"""
-        self.check(b, a)
-
-    def test_3(self):
-        b = """(a + b).next()"""
-        a = """next((a + b))"""
-        self.check(b, a)
-
-    def test_4(self):
-        b = """a().next()"""
-        a = """next(a())"""
-        self.check(b, a)
-
-    def test_5(self):
-        b = """a().next() + b"""
-        a = """next(a()) + b"""
-        self.check(b, a)
-
-    def test_6(self):
-        b = """c(      a().next() + b)"""
-        a = """c(      next(a()) + b)"""
-        self.check(b, a)
-
-    def test_prefix_preservation_1(self):
-        b = """
-            for a in b:
-                foo(a)
-                a.next()
-            """
-        a = """
-            for a in b:
-                foo(a)
-                next(a)
-            """
-        self.check(b, a)
-
-    def test_prefix_preservation_2(self):
-        b = """
-            for a in b:
-                foo(a) # abc
-                # def
-                a.next()
-            """
-        a = """
-            for a in b:
-                foo(a) # abc
-                # def
-                next(a)
-            """
-        self.check(b, a)
-
-    def test_prefix_preservation_3(self):
-        b = """
-            next = 5
-            for a in b:
-                foo(a)
-                a.next()
-            """
-        a = """
-            next = 5
-            for a in b:
-                foo(a)
-                a.__next__()
-            """
-        self.check(b, a, ignore_warnings=True)
-
-    def test_prefix_preservation_4(self):
-        b = """
-            next = 5
-            for a in b:
-                foo(a) # abc
-                # def
-                a.next()
-            """
-        a = """
-            next = 5
-            for a in b:
-                foo(a) # abc
-                # def
-                a.__next__()
-            """
-        self.check(b, a, ignore_warnings=True)
-
-    def test_prefix_preservation_5(self):
-        b = """
-            next = 5
-            for a in b:
-                foo(foo(a), # abc
-                    a.next())
-            """
-        a = """
-            next = 5
-            for a in b:
-                foo(foo(a), # abc
-                    a.__next__())
-            """
-        self.check(b, a, ignore_warnings=True)
-
-    def test_prefix_preservation_6(self):
-        b = """
-            for a in b:
-                foo(foo(a), # abc
-                    a.next())
-            """
-        a = """
-            for a in b:
-                foo(foo(a), # abc
-                    next(a))
-            """
-        self.check(b, a)
-
-    def test_method_1(self):
-        b = """
-            class A:
-                def next(self):
-                    pass
-            """
-        a = """
-            class A:
-                def __next__(self):
-                    pass
-            """
-        self.check(b, a)
-
-    def test_method_2(self):
-        b = """
-            class A(object):
-                def next(self):
-                    pass
-            """
-        a = """
-            class A(object):
-                def __next__(self):
-                    pass
-            """
-        self.check(b, a)
-
-    def test_method_3(self):
-        b = """
-            class A:
-                def next(x):
-                    pass
-            """
-        a = """
-            class A:
-                def __next__(x):
-                    pass
-            """
-        self.check(b, a)
-
-    def test_method_4(self):
-        b = """
-            class A:
-                def __init__(self, foo):
-                    self.foo = foo
-
-                def next(self):
-                    pass
-
-                def __iter__(self):
-                    return self
-            """
-        a = """
-            class A:
-                def __init__(self, foo):
-                    self.foo = foo
-
-                def __next__(self):
-                    pass
-
-                def __iter__(self):
-                    return self
-            """
-        self.check(b, a)
-
-    def test_method_unchanged(self):
-        s = """
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.unchanged(s)
-
-    def test_shadowing_assign_simple(self):
-        s = """
-            next = foo
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_assign_tuple_1(self):
-        s = """
-            (next, a) = foo
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_assign_tuple_2(self):
-        s = """
-            (a, (b, (next, c)), a) = foo
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_assign_list_1(self):
-        s = """
-            [next, a] = foo
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_assign_list_2(self):
-        s = """
-            [a, [b, [next, c]], a] = foo
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_builtin_assign(self):
-        s = """
-            def foo():
-                __builtin__.next = foo
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_builtin_assign_in_tuple(self):
-        s = """
-            def foo():
-                (a, __builtin__.next) = foo
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_builtin_assign_in_list(self):
-        s = """
-            def foo():
-                [a, __builtin__.next] = foo
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_assign_to_next(self):
-        s = """
-            def foo():
-                A.next = foo
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.unchanged(s)
-
-    def test_assign_to_next_in_tuple(self):
-        s = """
-            def foo():
-                (a, A.next) = foo
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.unchanged(s)
-
-    def test_assign_to_next_in_list(self):
-        s = """
-            def foo():
-                [a, A.next] = foo
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.unchanged(s)
-
-    def test_shadowing_import_1(self):
-        s = """
-            import foo.bar as next
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_import_2(self):
-        s = """
-            import bar, bar.foo as next
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_import_3(self):
-        s = """
-            import bar, bar.foo as next, baz
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_import_from_1(self):
-        s = """
-            from x import next
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_import_from_2(self):
-        s = """
-            from x.a import next
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_import_from_3(self):
-        s = """
-            from x import a, next, b
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_import_from_4(self):
-        s = """
-            from x.a import a, next, b
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_funcdef_1(self):
-        s = """
-            def next(a):
-                pass
-
-            class A:
-                def next(self, a, b):
-                    pass
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_funcdef_2(self):
-        b = """
-            def next(a):
-                pass
-
-            class A:
-                def next(self):
-                    pass
-
-            it.next()
-            """
-        a = """
-            def next(a):
-                pass
-
-            class A:
-                def __next__(self):
-                    pass
-
-            it.__next__()
-            """
-        self.warns(b, a, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_global_1(self):
-        s = """
-            def f():
-                global next
-                next = 5
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_global_2(self):
-        s = """
-            def f():
-                global a, next, b
-                next = 5
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_for_simple(self):
-        s = """
-            for next in it():
-                pass
-
-            b = 5
-            c = 6
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_for_tuple_1(self):
-        s = """
-            for next, b in it():
-                pass
-
-            b = 5
-            c = 6
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_shadowing_for_tuple_2(self):
-        s = """
-            for a, (next, c), b in it():
-                pass
-
-            b = 5
-            c = 6
-            """
-        self.warns_unchanged(s, "Calls to builtin next() possibly shadowed")
-
-    def test_noncall_access_1(self):
-        b = """gnext = g.next"""
-        a = """gnext = g.__next__"""
-        self.check(b, a)
-
-    def test_noncall_access_2(self):
-        b = """f(g.next + 5)"""
-        a = """f(g.__next__ + 5)"""
-        self.check(b, a)
-
-    def test_noncall_access_3(self):
-        b = """f(g().next + 5)"""
-        a = """f(g().__next__ + 5)"""
-        self.check(b, a)
-
-class Test_nonzero(FixerTestCase):
-    fixer = "nonzero"
-
-    def test_1(self):
-        b = """
-            class A:
-                def __nonzero__(self):
-                    pass
-            """
-        a = """
-            class A:
-                def __bool__(self):
-                    pass
-            """
-        self.check(b, a)
-
-    def test_2(self):
-        b = """
-            class A(object):
-                def __nonzero__(self):
-                    pass
-            """
-        a = """
-            class A(object):
-                def __bool__(self):
-                    pass
-            """
-        self.check(b, a)
-
-    def test_unchanged_1(self):
-        s = """
-            class A(object):
-                def __bool__(self):
-                    pass
-            """
-        self.unchanged(s)
-
-    def test_unchanged_2(self):
-        s = """
-            class A(object):
-                def __nonzero__(self, a):
-                    pass
-            """
-        self.unchanged(s)
-
-    def test_unchanged_func(self):
-        s = """
-            def __nonzero__(self):
-                pass
-            """
-        self.unchanged(s)
-
-class Test_numliterals(FixerTestCase):
-    fixer = "numliterals"
-
-    def test_octal_1(self):
-        b = """0755"""
-        a = """0o755"""
-        self.check(b, a)
-
-    def test_long_int_1(self):
-        b = """a = 12L"""
-        a = """a = 12"""
-        self.check(b, a)
-
-    def test_long_int_2(self):
-        b = """a = 12l"""
-        a = """a = 12"""
-        self.check(b, a)
-
-    def test_long_hex(self):
-        b = """b = 0x12l"""
-        a = """b = 0x12"""
-        self.check(b, a)
-
-    def test_comments_and_spacing(self):
-        b = """b =   0x12L"""
-        a = """b =   0x12"""
-        self.check(b, a)
-
-        b = """b = 0755 # spam"""
-        a = """b = 0o755 # spam"""
-        self.check(b, a)
-
-    def test_unchanged_int(self):
-        s = """5"""
-        self.unchanged(s)
-
-    def test_unchanged_float(self):
-        s = """5.0"""
-        self.unchanged(s)
-
-    def test_unchanged_octal(self):
-        s = """0o755"""
-        self.unchanged(s)
-
-    def test_unchanged_hex(self):
-        s = """0xABC"""
-        self.unchanged(s)
-
-    def test_unchanged_exp(self):
-        s = """5.0e10"""
-        self.unchanged(s)
-
-    def test_unchanged_complex_int(self):
-        s = """5 + 4j"""
-        self.unchanged(s)
-
-    def test_unchanged_complex_float(self):
-        s = """5.4 + 4.9j"""
-        self.unchanged(s)
-
-    def test_unchanged_complex_bare(self):
-        s = """4j"""
-        self.unchanged(s)
-        s = """4.4j"""
-        self.unchanged(s)
-
-class Test_renames(FixerTestCase):
-    fixer = "renames"
-
-    modules = {"sys":  ("maxint", "maxsize"),
-              }
-
-    def test_import_from(self):
-        for mod, (old, new) in self.modules.items():
-            b = "from %s import %s" % (mod, old)
-            a = "from %s import %s" % (mod, new)
-            self.check(b, a)
-
-            s = "from foo import %s" % old
-            self.unchanged(s)
-
-    def test_import_from_as(self):
-        for mod, (old, new) in self.modules.items():
-            b = "from %s import %s as foo_bar" % (mod, old)
-            a = "from %s import %s as foo_bar" % (mod, new)
-            self.check(b, a)
-
-    def test_import_module_usage(self):
-        for mod, (old, new) in self.modules.items():
-            b = """
-                import %s
-                foo(%s, %s.%s)
-                """ % (mod, mod, mod, old)
-            a = """
-                import %s
-                foo(%s, %s.%s)
-                """ % (mod, mod, mod, new)
-            self.check(b, a)
-
-    def XXX_test_from_import_usage(self):
-        # not implemented yet
-        for mod, (old, new) in self.modules.items():
-            b = """
-                from %s import %s
-                foo(%s, %s)
-                """ % (mod, old, mod, old)
-            a = """
-                from %s import %s
-                foo(%s, %s)
-                """ % (mod, new, mod, new)
-            self.check(b, a)
-
-class Test_unicode(FixerTestCase):
-    fixer = "unicode"
-
-    def test_whitespace(self):
-        b = """unicode( x)"""
-        a = """str( x)"""
-        self.check(b, a)
-
-        b = """ unicode(x )"""
-        a = """ str(x )"""
-        self.check(b, a)
-
-        b = """ u'h'"""
-        a = """ 'h'"""
-        self.check(b, a)
-
-    def test_unicode_call(self):
-        b = """unicode(x, y, z)"""
-        a = """str(x, y, z)"""
-        self.check(b, a)
-
-    def test_unichr(self):
-        b = """unichr(u'h')"""
-        a = """chr('h')"""
-        self.check(b, a)
-
-    def test_unicode_literal_1(self):
-        b = '''u"x"'''
-        a = '''"x"'''
-        self.check(b, a)
-
-    def test_unicode_literal_2(self):
-        b = """ur'x'"""
-        a = """r'x'"""
-        self.check(b, a)
-
-    def test_unicode_literal_3(self):
-        b = """UR'''x''' """
-        a = """R'''x''' """
-        self.check(b, a)
-
-class Test_callable(FixerTestCase):
-    fixer = "callable"
-
-    def test_prefix_preservation(self):
-        b = """callable(    x)"""
-        a = """import collections\nisinstance(    x, collections.Callable)"""
-        self.check(b, a)
-
-        b = """if     callable(x): pass"""
-        a = """import collections
-if     isinstance(x, collections.Callable): pass"""
-        self.check(b, a)
-
-    def test_callable_call(self):
-        b = """callable(x)"""
-        a = """import collections\nisinstance(x, collections.Callable)"""
-        self.check(b, a)
-
-    def test_global_import(self):
-        b = """
-def spam(foo):
-    callable(foo)"""[1:]
-        a = """
-import collections
-def spam(foo):
-    isinstance(foo, collections.Callable)"""[1:]
-        self.check(b, a)
-
-        b = """
-import collections
-def spam(foo):
-    callable(foo)"""[1:]
-        # same output if it was already imported
-        self.check(b, a)
-
-        b = """
-from collections import *
-def spam(foo):
-    callable(foo)"""[1:]
-        a = """
-from collections import *
-import collections
-def spam(foo):
-    isinstance(foo, collections.Callable)"""[1:]
-        self.check(b, a)
-
-        b = """
-do_stuff()
-do_some_other_stuff()
-assert callable(do_stuff)"""[1:]
-        a = """
-import collections
-do_stuff()
-do_some_other_stuff()
-assert isinstance(do_stuff, collections.Callable)"""[1:]
-        self.check(b, a)
-
-        b = """
-if isinstance(do_stuff, Callable):
-    assert callable(do_stuff)
-    do_stuff(do_stuff)
-    if not callable(do_stuff):
-        exit(1)
-    else:
-        assert callable(do_stuff)
-else:
-    assert not callable(do_stuff)"""[1:]
-        a = """
-import collections
-if isinstance(do_stuff, Callable):
-    assert isinstance(do_stuff, collections.Callable)
-    do_stuff(do_stuff)
-    if not isinstance(do_stuff, collections.Callable):
-        exit(1)
-    else:
-        assert isinstance(do_stuff, collections.Callable)
-else:
-    assert not isinstance(do_stuff, collections.Callable)"""[1:]
-        self.check(b, a)
-
-    def test_callable_should_not_change(self):
-        a = """callable(*x)"""
-        self.unchanged(a)
-
-        a = """callable(x, y)"""
-        self.unchanged(a)
-
-        a = """callable(x, kw=y)"""
-        self.unchanged(a)
-
-        a = """callable()"""
-        self.unchanged(a)
-
-class Test_filter(FixerTestCase):
-    fixer = "filter"
-
-    def test_prefix_preservation(self):
-        b = """x =   filter(    foo,     'abc'   )"""
-        a = """x =   list(filter(    foo,     'abc'   ))"""
-        self.check(b, a)
-
-        b = """x =   filter(  None , 'abc'  )"""
-        a = """x =   [_f for _f in 'abc' if _f]"""
-        self.check(b, a)
-
-    def test_filter_basic(self):
-        b = """x = filter(None, 'abc')"""
-        a = """x = [_f for _f in 'abc' if _f]"""
-        self.check(b, a)
-
-        b = """x = len(filter(f, 'abc'))"""
-        a = """x = len(list(filter(f, 'abc')))"""
-        self.check(b, a)
-
-        b = """x = filter(lambda x: x%2 == 0, range(10))"""
-        a = """x = [x for x in range(10) if x%2 == 0]"""
-        self.check(b, a)
-
-        # Note the parens around x
-        b = """x = filter(lambda (x): x%2 == 0, range(10))"""
-        a = """x = [x for x in range(10) if x%2 == 0]"""
-        self.check(b, a)
-
-        # XXX This (rare) case is not supported
-##         b = """x = filter(f, 'abc')[0]"""
-##         a = """x = list(filter(f, 'abc'))[0]"""
-##         self.check(b, a)
-
-    def test_filter_nochange(self):
-        a = """b.join(filter(f, 'abc'))"""
-        self.unchanged(a)
-        a = """(a + foo(5)).join(filter(f, 'abc'))"""
-        self.unchanged(a)
-        a = """iter(filter(f, 'abc'))"""
-        self.unchanged(a)
-        a = """list(filter(f, 'abc'))"""
-        self.unchanged(a)
-        a = """list(filter(f, 'abc'))[0]"""
-        self.unchanged(a)
-        a = """set(filter(f, 'abc'))"""
-        self.unchanged(a)
-        a = """set(filter(f, 'abc')).pop()"""
-        self.unchanged(a)
-        a = """tuple(filter(f, 'abc'))"""
-        self.unchanged(a)
-        a = """any(filter(f, 'abc'))"""
-        self.unchanged(a)
-        a = """all(filter(f, 'abc'))"""
-        self.unchanged(a)
-        a = """sum(filter(f, 'abc'))"""
-        self.unchanged(a)
-        a = """sorted(filter(f, 'abc'))"""
-        self.unchanged(a)
-        a = """sorted(filter(f, 'abc'), key=blah)"""
-        self.unchanged(a)
-        a = """sorted(filter(f, 'abc'), key=blah)[0]"""
-        self.unchanged(a)
-        a = """for i in filter(f, 'abc'): pass"""
-        self.unchanged(a)
-        a = """[x for x in filter(f, 'abc')]"""
-        self.unchanged(a)
-        a = """(x for x in filter(f, 'abc'))"""
-        self.unchanged(a)
-
-    def test_future_builtins(self):
-        a = "from future_builtins import spam, filter; filter(f, 'ham')"
-        self.unchanged(a)
-
-        b = """from future_builtins import spam; x = filter(f, 'abc')"""
-        a = """from future_builtins import spam; x = list(filter(f, 'abc'))"""
-        self.check(b, a)
-
-        a = "from future_builtins import *; filter(f, 'ham')"
-        self.unchanged(a)
-
-class Test_map(FixerTestCase):
-    fixer = "map"
-
-    def check(self, b, a):
-        self.unchanged("from future_builtins import map; " + b, a)
-        super(Test_map, self).check(b, a)
-
-    def test_prefix_preservation(self):
-        b = """x =    map(   f,    'abc'   )"""
-        a = """x =    list(map(   f,    'abc'   ))"""
-        self.check(b, a)
-
-    def test_trailing_comment(self):
-        b = """x = map(f, 'abc')   #   foo"""
-        a = """x = list(map(f, 'abc'))   #   foo"""
-        self.check(b, a)
-
-    def test_None_with_multiple_arguments(self):
-        s = """x = map(None, a, b, c)"""
-        self.warns_unchanged(s, "cannot convert map(None, ...) with "
-                             "multiple arguments")
-
-    def test_map_basic(self):
-        b = """x = map(f, 'abc')"""
-        a = """x = list(map(f, 'abc'))"""
-        self.check(b, a)
-
-        b = """x = len(map(f, 'abc', 'def'))"""
-        a = """x = len(list(map(f, 'abc', 'def')))"""
-        self.check(b, a)
-
-        b = """x = map(None, 'abc')"""
-        a = """x = list('abc')"""
-        self.check(b, a)
-
-        b = """x = map(lambda x: x+1, range(4))"""
-        a = """x = [x+1 for x in range(4)]"""
-        self.check(b, a)
-
-        # Note the parens around x
-        b = """x = map(lambda (x): x+1, range(4))"""
-        a = """x = [x+1 for x in range(4)]"""
-        self.check(b, a)
-
-        b = """
-            foo()
-            # foo
-            map(f, x)
-            """
-        a = """
-            foo()
-            # foo
-            list(map(f, x))
-            """
-        self.warns(b, a, "You should use a for loop here")
-
-        # XXX This (rare) case is not supported
-##         b = """x = map(f, 'abc')[0]"""
-##         a = """x = list(map(f, 'abc'))[0]"""
-##         self.check(b, a)
-
-    def test_map_nochange(self):
-        a = """b.join(map(f, 'abc'))"""
-        self.unchanged(a)
-        a = """(a + foo(5)).join(map(f, 'abc'))"""
-        self.unchanged(a)
-        a = """iter(map(f, 'abc'))"""
-        self.unchanged(a)
-        a = """list(map(f, 'abc'))"""
-        self.unchanged(a)
-        a = """list(map(f, 'abc'))[0]"""
-        self.unchanged(a)
-        a = """set(map(f, 'abc'))"""
-        self.unchanged(a)
-        a = """set(map(f, 'abc')).pop()"""
-        self.unchanged(a)
-        a = """tuple(map(f, 'abc'))"""
-        self.unchanged(a)
-        a = """any(map(f, 'abc'))"""
-        self.unchanged(a)
-        a = """all(map(f, 'abc'))"""
-        self.unchanged(a)
-        a = """sum(map(f, 'abc'))"""
-        self.unchanged(a)
-        a = """sorted(map(f, 'abc'))"""
-        self.unchanged(a)
-        a = """sorted(map(f, 'abc'), key=blah)"""
-        self.unchanged(a)
-        a = """sorted(map(f, 'abc'), key=blah)[0]"""
-        self.unchanged(a)
-        a = """for i in map(f, 'abc'): pass"""
-        self.unchanged(a)
-        a = """[x for x in map(f, 'abc')]"""
-        self.unchanged(a)
-        a = """(x for x in map(f, 'abc'))"""
-        self.unchanged(a)
-
-    def test_future_builtins(self):
-        a = "from future_builtins import spam, map, eggs; map(f, 'ham')"
-        self.unchanged(a)
-
-        b = """from future_builtins import spam, eggs; x = map(f, 'abc')"""
-        a = """from future_builtins import spam, eggs; x = list(map(f, 'abc'))"""
-        self.check(b, a)
-
-        a = "from future_builtins import *; map(f, 'ham')"
-        self.unchanged(a)
-
-class Test_zip(FixerTestCase):
-    fixer = "zip"
-
-    def check(self, b, a):
-        self.unchanged("from future_builtins import zip; " + b, a)
-        super(Test_zip, self).check(b, a)
-
-    def test_zip_basic(self):
-        b = """x = zip(a, b, c)"""
-        a = """x = list(zip(a, b, c))"""
-        self.check(b, a)
-
-        b = """x = len(zip(a, b))"""
-        a = """x = len(list(zip(a, b)))"""
-        self.check(b, a)
-
-    def test_zip_nochange(self):
-        a = """b.join(zip(a, b))"""
-        self.unchanged(a)
-        a = """(a + foo(5)).join(zip(a, b))"""
-        self.unchanged(a)
-        a = """iter(zip(a, b))"""
-        self.unchanged(a)
-        a = """list(zip(a, b))"""
-        self.unchanged(a)
-        a = """list(zip(a, b))[0]"""
-        self.unchanged(a)
-        a = """set(zip(a, b))"""
-        self.unchanged(a)
-        a = """set(zip(a, b)).pop()"""
-        self.unchanged(a)
-        a = """tuple(zip(a, b))"""
-        self.unchanged(a)
-        a = """any(zip(a, b))"""
-        self.unchanged(a)
-        a = """all(zip(a, b))"""
-        self.unchanged(a)
-        a = """sum(zip(a, b))"""
-        self.unchanged(a)
-        a = """sorted(zip(a, b))"""
-        self.unchanged(a)
-        a = """sorted(zip(a, b), key=blah)"""
-        self.unchanged(a)
-        a = """sorted(zip(a, b), key=blah)[0]"""
-        self.unchanged(a)
-        a = """for i in zip(a, b): pass"""
-        self.unchanged(a)
-        a = """[x for x in zip(a, b)]"""
-        self.unchanged(a)
-        a = """(x for x in zip(a, b))"""
-        self.unchanged(a)
-
-    def test_future_builtins(self):
-        a = "from future_builtins import spam, zip, eggs; zip(a, b)"
-        self.unchanged(a)
-
-        b = """from future_builtins import spam, eggs; x = zip(a, b)"""
-        a = """from future_builtins import spam, eggs; x = list(zip(a, b))"""
-        self.check(b, a)
-
-        a = "from future_builtins import *; zip(a, b)"
-        self.unchanged(a)
-
-class Test_standarderror(FixerTestCase):
-    fixer = "standarderror"
-
-    def test(self):
-        b = """x =    StandardError()"""
-        a = """x =    Exception()"""
-        self.check(b, a)
-
-        b = """x = StandardError(a, b, c)"""
-        a = """x = Exception(a, b, c)"""
-        self.check(b, a)
-
-        b = """f(2 + StandardError(a, b, c))"""
-        a = """f(2 + Exception(a, b, c))"""
-        self.check(b, a)
-
-class Test_types(FixerTestCase):
-    fixer = "types"
-
-    def test_basic_types_convert(self):
-        b = """types.StringType"""
-        a = """bytes"""
-        self.check(b, a)
-
-        b = """types.DictType"""
-        a = """dict"""
-        self.check(b, a)
-
-        b = """types . IntType"""
-        a = """int"""
-        self.check(b, a)
-
-        b = """types.ListType"""
-        a = """list"""
-        self.check(b, a)
-
-        b = """types.LongType"""
-        a = """int"""
-        self.check(b, a)
-
-        b = """types.NoneType"""
-        a = """type(None)"""
-        self.check(b, a)
-
-class Test_idioms(FixerTestCase):
-    fixer = "idioms"
-
-    def test_while(self):
-        b = """while 1: foo()"""
-        a = """while True: foo()"""
-        self.check(b, a)
-
-        b = """while   1: foo()"""
-        a = """while   True: foo()"""
-        self.check(b, a)
-
-        b = """
-            while 1:
-                foo()
-            """
-        a = """
-            while True:
-                foo()
-            """
-        self.check(b, a)
-
-    def test_while_unchanged(self):
-        s = """while 11: foo()"""
-        self.unchanged(s)
-
-        s = """while 0: foo()"""
-        self.unchanged(s)
-
-        s = """while foo(): foo()"""
-        self.unchanged(s)
-
-        s = """while []: foo()"""
-        self.unchanged(s)
-
-    def test_eq_simple(self):
-        b = """type(x) == T"""
-        a = """isinstance(x, T)"""
-        self.check(b, a)
-
-        b = """if   type(x) == T: pass"""
-        a = """if   isinstance(x, T): pass"""
-        self.check(b, a)
-
-    def test_eq_reverse(self):
-        b = """T == type(x)"""
-        a = """isinstance(x, T)"""
-        self.check(b, a)
-
-        b = """if   T == type(x): pass"""
-        a = """if   isinstance(x, T): pass"""
-        self.check(b, a)
-
-    def test_eq_expression(self):
-        b = """type(x+y) == d.get('T')"""
-        a = """isinstance(x+y, d.get('T'))"""
-        self.check(b, a)
-
-        b = """type(   x  +  y) == d.get('T')"""
-        a = """isinstance(x  +  y, d.get('T'))"""
-        self.check(b, a)
-
-    def test_is_simple(self):
-        b = """type(x) is T"""
-        a = """isinstance(x, T)"""
-        self.check(b, a)
-
-        b = """if   type(x) is T: pass"""
-        a = """if   isinstance(x, T): pass"""
-        self.check(b, a)
-
-    def test_is_reverse(self):
-        b = """T is type(x)"""
-        a = """isinstance(x, T)"""
-        self.check(b, a)
-
-        b = """if   T is type(x): pass"""
-        a = """if   isinstance(x, T): pass"""
-        self.check(b, a)
-
-    def test_is_expression(self):
-        b = """type(x+y) is d.get('T')"""
-        a = """isinstance(x+y, d.get('T'))"""
-        self.check(b, a)
-
-        b = """type(   x  +  y) is d.get('T')"""
-        a = """isinstance(x  +  y, d.get('T'))"""
-        self.check(b, a)
-
-    def test_is_not_simple(self):
-        b = """type(x) is not T"""
-        a = """not isinstance(x, T)"""
-        self.check(b, a)
-
-        b = """if   type(x) is not T: pass"""
-        a = """if   not isinstance(x, T): pass"""
-        self.check(b, a)
-
-    def test_is_not_reverse(self):
-        b = """T is not type(x)"""
-        a = """not isinstance(x, T)"""
-        self.check(b, a)
-
-        b = """if   T is not type(x): pass"""
-        a = """if   not isinstance(x, T): pass"""
-        self.check(b, a)
-
-    def test_is_not_expression(self):
-        b = """type(x+y) is not d.get('T')"""
-        a = """not isinstance(x+y, d.get('T'))"""
-        self.check(b, a)
-
-        b = """type(   x  +  y) is not d.get('T')"""
-        a = """not isinstance(x  +  y, d.get('T'))"""
-        self.check(b, a)
-
-    def test_ne_simple(self):
-        b = """type(x) != T"""
-        a = """not isinstance(x, T)"""
-        self.check(b, a)
-
-        b = """if   type(x) != T: pass"""
-        a = """if   not isinstance(x, T): pass"""
-        self.check(b, a)
-
-    def test_ne_reverse(self):
-        b = """T != type(x)"""
-        a = """not isinstance(x, T)"""
-        self.check(b, a)
-
-        b = """if   T != type(x): pass"""
-        a = """if   not isinstance(x, T): pass"""
-        self.check(b, a)
-
-    def test_ne_expression(self):
-        b = """type(x+y) != d.get('T')"""
-        a = """not isinstance(x+y, d.get('T'))"""
-        self.check(b, a)
-
-        b = """type(   x  +  y) != d.get('T')"""
-        a = """not isinstance(x  +  y, d.get('T'))"""
-        self.check(b, a)
-
-    def test_type_unchanged(self):
-        a = """type(x).__name__"""
-        self.unchanged(a)
-
-    def test_sort_list_call(self):
-        b = """
-            v = list(t)
-            v.sort()
-            foo(v)
-            """
-        a = """
-            v = sorted(t)
-            foo(v)
-            """
-        self.check(b, a)
-
-        b = """
-            v = list(foo(b) + d)
-            v.sort()
-            foo(v)
-            """
-        a = """
-            v = sorted(foo(b) + d)
-            foo(v)
-            """
-        self.check(b, a)
-
-        b = """
-            while x:
-                v = list(t)
-                v.sort()
-                foo(v)
-            """
-        a = """
-            while x:
-                v = sorted(t)
-                foo(v)
-            """
-        self.check(b, a)
-
-        b = """
-            v = list(t)
-            # foo
-            v.sort()
-            foo(v)
-            """
-        a = """
-            v = sorted(t)
-            # foo
-            foo(v)
-            """
-        self.check(b, a)
-
-        b = r"""
-            v = list(   t)
-            v.sort()
-            foo(v)
-            """
-        a = r"""
-            v = sorted(   t)
-            foo(v)
-            """
-        self.check(b, a)
-
-        b = r"""
-            try:
-                m = list(s)
-                m.sort()
-            except: pass
-            """
-
-        a = r"""
-            try:
-                m = sorted(s)
-            except: pass
-            """
-        self.check(b, a)
-
-        b = r"""
-            try:
-                m = list(s)
-                # foo
-                m.sort()
-            except: pass
-            """
-
-        a = r"""
-            try:
-                m = sorted(s)
-                # foo
-            except: pass
-            """
-        self.check(b, a)
-
-        b = r"""
-            m = list(s)
-            # more comments
-            m.sort()"""
-
-        a = r"""
-            m = sorted(s)
-            # more comments"""
-        self.check(b, a)
-
-    def test_sort_simple_expr(self):
-        b = """
-            v = t
-            v.sort()
-            foo(v)
-            """
-        a = """
-            v = sorted(t)
-            foo(v)
-            """
-        self.check(b, a)
-
-        b = """
-            v = foo(b)
-            v.sort()
-            foo(v)
-            """
-        a = """
-            v = sorted(foo(b))
-            foo(v)
-            """
-        self.check(b, a)
-
-        b = """
-            v = b.keys()
-            v.sort()
-            foo(v)
-            """
-        a = """
-            v = sorted(b.keys())
-            foo(v)
-            """
-        self.check(b, a)
-
-        b = """
-            v = foo(b) + d
-            v.sort()
-            foo(v)
-            """
-        a = """
-            v = sorted(foo(b) + d)
-            foo(v)
-            """
-        self.check(b, a)
-
-        b = """
-            while x:
-                v = t
-                v.sort()
-                foo(v)
-            """
-        a = """
-            while x:
-                v = sorted(t)
-                foo(v)
-            """
-        self.check(b, a)
-
-        b = """
-            v = t
-            # foo
-            v.sort()
-            foo(v)
-            """
-        a = """
-            v = sorted(t)
-            # foo
-            foo(v)
-            """
-        self.check(b, a)
-
-        b = r"""
-            v =   t
-            v.sort()
-            foo(v)
-            """
-        a = r"""
-            v =   sorted(t)
-            foo(v)
-            """
-        self.check(b, a)
-
-    def test_sort_unchanged(self):
-        s = """
-            v = list(t)
-            w.sort()
-            foo(w)
-            """
-        self.unchanged(s)
-
-        s = """
-            v = list(t)
-            v.sort(u)
-            foo(v)
-            """
-        self.unchanged(s)
-
-class Test_basestring(FixerTestCase):
-    fixer = "basestring"
-
-    def test_basestring(self):
-        b = """isinstance(x, basestring)"""
-        a = """isinstance(x, str)"""
-        self.check(b, a)
-
-class Test_buffer(FixerTestCase):
-    fixer = "buffer"
-
-    def test_buffer(self):
-        b = """x = buffer(y)"""
-        a = """x = memoryview(y)"""
-        self.check(b, a)
-
-    def test_slicing(self):
-        b = """buffer(y)[4:5]"""
-        a = """memoryview(y)[4:5]"""
-        self.check(b, a)
-
-class Test_future(FixerTestCase):
-    fixer = "future"
-
-    def test_future(self):
-        b = """from __future__ import braces"""
-        a = """"""
-        self.check(b, a)
-
-        b = """# comment\nfrom __future__ import braces"""
-        a = """# comment\n"""
-        self.check(b, a)
-
-        b = """from __future__ import braces\n# comment"""
-        a = """\n# comment"""
-        self.check(b, a)
-
-    def test_run_order(self):
-        self.assert_runs_after('print')
-
-class Test_itertools(FixerTestCase):
-    fixer = "itertools"
-
-    def checkall(self, before, after):
-        # Because we need to check with and without the itertools prefix
-        # and on each of the three functions, these loops make it all
-        # much easier
-        for i in ('itertools.', ''):
-            for f in ('map', 'filter', 'zip'):
-                b = before %(i+'i'+f)
-                a = after %(f)
-                self.check(b, a)
-
-    def test_0(self):
-        # A simple example -- test_1 covers exactly the same thing,
-        # but it's not quite as clear.
-        b = "itertools.izip(a, b)"
-        a = "zip(a, b)"
-        self.check(b, a)
-
-    def test_1(self):
-        b = """%s(f, a)"""
-        a = """%s(f, a)"""
-        self.checkall(b, a)
-
-    def test_qualified(self):
-        b = """itertools.ifilterfalse(a, b)"""
-        a = """itertools.filterfalse(a, b)"""
-        self.check(b, a)
-
-        b = """itertools.izip_longest(a, b)"""
-        a = """itertools.zip_longest(a, b)"""
-        self.check(b, a)
-
-    def test_2(self):
-        b = """ifilterfalse(a, b)"""
-        a = """filterfalse(a, b)"""
-        self.check(b, a)
-
-        b = """izip_longest(a, b)"""
-        a = """zip_longest(a, b)"""
-        self.check(b, a)
-
-    def test_space_1(self):
-        b = """    %s(f, a)"""
-        a = """    %s(f, a)"""
-        self.checkall(b, a)
-
-    def test_space_2(self):
-        b = """    itertools.ifilterfalse(a, b)"""
-        a = """    itertools.filterfalse(a, b)"""
-        self.check(b, a)
-
-        b = """    itertools.izip_longest(a, b)"""
-        a = """    itertools.zip_longest(a, b)"""
-        self.check(b, a)
-
-    def test_run_order(self):
-        self.assert_runs_after('map', 'zip', 'filter')
-
-
-class Test_itertools_imports(FixerTestCase):
-    fixer = 'itertools_imports'
-
-    def test_reduced(self):
-        b = "from itertools import imap, izip, foo"
-        a = "from itertools import foo"
-        self.check(b, a)
-
-        b = "from itertools import bar, imap, izip, foo"
-        a = "from itertools import bar, foo"
-        self.check(b, a)
-
-        b = "from itertools import chain, imap, izip"
-        a = "from itertools import chain"
-        self.check(b, a)
-
-    def test_comments(self):
-        b = "#foo\nfrom itertools import imap, izip"
-        a = "#foo\n"
-        self.check(b, a)
-
-    def test_none(self):
-        b = "from itertools import imap, izip"
-        a = ""
-        self.check(b, a)
-
-        b = "from itertools import izip"
-        a = ""
-        self.check(b, a)
-
-    def test_import_as(self):
-        b = "from itertools import izip, bar as bang, imap"
-        a = "from itertools import bar as bang"
-        self.check(b, a)
-
-        b = "from itertools import izip as _zip, imap, bar"
-        a = "from itertools import bar"
-        self.check(b, a)
-
-        b = "from itertools import imap as _map"
-        a = ""
-        self.check(b, a)
-
-        b = "from itertools import imap as _map, izip as _zip"
-        a = ""
-        self.check(b, a)
-
-        s = "from itertools import bar as bang"
-        self.unchanged(s)
-
-    def test_ifilter_and_zip_longest(self):
-        for name in "filterfalse", "zip_longest":
-            b = "from itertools import i%s" % (name,)
-            a = "from itertools import %s" % (name,)
-            self.check(b, a)
-
-            b = "from itertools import imap, i%s, foo" % (name,)
-            a = "from itertools import %s, foo" % (name,)
-            self.check(b, a)
-
-            b = "from itertools import bar, i%s, foo" % (name,)
-            a = "from itertools import bar, %s, foo" % (name,)
-            self.check(b, a)
-
-    def test_import_star(self):
-        s = "from itertools import *"
-        self.unchanged(s)
-
-
-    def test_unchanged(self):
-        s = "from itertools import foo"
-        self.unchanged(s)
-
-
-class Test_import(FixerTestCase):
-    fixer = "import"
-
-    def setUp(self):
-        super(Test_import, self).setUp()
-        # Need to replace fix_import's exists method
-        # so we can check that it's doing the right thing
-        self.files_checked = []
-        self.present_files = set()
-        self.always_exists = True
-        def fake_exists(name):
-            self.files_checked.append(name)
-            return self.always_exists or (name in self.present_files)
-
-        from lib2to3.fixes import fix_import
-        fix_import.exists = fake_exists
-
-    def tearDown(self):
-        from lib2to3.fixes import fix_import
-        fix_import.exists = os.path.exists
-
-    def check_both(self, b, a):
-        self.always_exists = True
-        super(Test_import, self).check(b, a)
-        self.always_exists = False
-        super(Test_import, self).unchanged(b)
-
-    def test_files_checked(self):
-        def p(path):
-            # Takes a unix path and returns a path with correct separators
-            return os.path.pathsep.join(path.split("/"))
-
-        self.always_exists = False
-        self.present_files = set(['__init__.py'])
-        expected_extensions = ('.py', os.path.sep, '.pyc', '.so', '.sl', '.pyd')
-        names_to_test = (p("/spam/eggs.py"), "ni.py", p("../../shrubbery.py"))
-
-        for name in names_to_test:
-            self.files_checked = []
-            self.filename = name
-            self.unchanged("import jam")
-
-            if os.path.dirname(name):
-                name = os.path.dirname(name) + '/jam'
-            else:
-                name = 'jam'
-            expected_checks = set(name + ext for ext in expected_extensions)
-            expected_checks.add("__init__.py")
-
-            self.assertEqual(set(self.files_checked), expected_checks)
-
-    def test_not_in_package(self):
-        s = "import bar"
-        self.always_exists = False
-        self.present_files = set(["bar.py"])
-        self.unchanged(s)
-
-    def test_with_absolute_import_enabled(self):
-        s = "from __future__ import absolute_import\nimport bar"
-        self.always_exists = False
-        self.present_files = set(["__init__.py", "bar.py"])
-        self.unchanged(s)
-
-    def test_in_package(self):
-        b = "import bar"
-        a = "from . import bar"
-        self.always_exists = False
-        self.present_files = set(["__init__.py", "bar.py"])
-        self.check(b, a)
-
-    def test_import_from_package(self):
-        b = "import bar"
-        a = "from . import bar"
-        self.always_exists = False
-        self.present_files = set(["__init__.py", "bar" + os.path.sep])
-        self.check(b, a)
-
-    def test_already_relative_import(self):
-        s = "from . import bar"
-        self.unchanged(s)
-
-    def test_comments_and_indent(self):
-        b = "import bar # Foo"
-        a = "from . import bar # Foo"
-        self.check(b, a)
-
-    def test_from(self):
-        b = "from foo import bar, baz"
-        a = "from .foo import bar, baz"
-        self.check_both(b, a)
-
-        b = "from foo import bar"
-        a = "from .foo import bar"
-        self.check_both(b, a)
-
-        b = "from foo import (bar, baz)"
-        a = "from .foo import (bar, baz)"
-        self.check_both(b, a)
-
-    def test_dotted_from(self):
-        b = "from green.eggs import ham"
-        a = "from .green.eggs import ham"
-        self.check_both(b, a)
-
-    def test_from_as(self):
-        b = "from green.eggs import ham as spam"
-        a = "from .green.eggs import ham as spam"
-        self.check_both(b, a)
-
-    def test_import(self):
-        b = "import foo"
-        a = "from . import foo"
-        self.check_both(b, a)
-
-        b = "import foo, bar"
-        a = "from . import foo, bar"
-        self.check_both(b, a)
-
-        b = "import foo, bar, x"
-        a = "from . import foo, bar, x"
-        self.check_both(b, a)
-
-        b = "import x, y, z"
-        a = "from . import x, y, z"
-        self.check_both(b, a)
-
-    def test_import_as(self):
-        b = "import foo as x"
-        a = "from . import foo as x"
-        self.check_both(b, a)
-
-        b = "import a as b, b as c, c as d"
-        a = "from . import a as b, b as c, c as d"
-        self.check_both(b, a)
-
-    def test_local_and_absolute(self):
-        self.always_exists = False
-        self.present_files = set(["foo.py", "__init__.py"])
-
-        s = "import foo, bar"
-        self.warns_unchanged(s, "absolute and local imports together")
-
-    def test_dotted_import(self):
-        b = "import foo.bar"
-        a = "from . import foo.bar"
-        self.check_both(b, a)
-
-    def test_dotted_import_as(self):
-        b = "import foo.bar as bang"
-        a = "from . import foo.bar as bang"
-        self.check_both(b, a)
-
-    def test_prefix(self):
-        b = """
-        # prefix
-        import foo.bar
-        """
-        a = """
-        # prefix
-        from . import foo.bar
-        """
-        self.check_both(b, a)
-
-
-class Test_set_literal(FixerTestCase):
-
-    fixer = "set_literal"
-
-    def test_basic(self):
-        b = """set([1, 2, 3])"""
-        a = """{1, 2, 3}"""
-        self.check(b, a)
-
-        b = """set((1, 2, 3))"""
-        a = """{1, 2, 3}"""
-        self.check(b, a)
-
-        b = """set((1,))"""
-        a = """{1}"""
-        self.check(b, a)
-
-        b = """set([1])"""
-        self.check(b, a)
-
-        b = """set((a, b))"""
-        a = """{a, b}"""
-        self.check(b, a)
-
-        b = """set([a, b])"""
-        self.check(b, a)
-
-        b = """set((a*234, f(args=23)))"""
-        a = """{a*234, f(args=23)}"""
-        self.check(b, a)
-
-        b = """set([a*23, f(23)])"""
-        a = """{a*23, f(23)}"""
-        self.check(b, a)
-
-        b = """set([a-234**23])"""
-        a = """{a-234**23}"""
-        self.check(b, a)
-
-    def test_listcomps(self):
-        b = """set([x for x in y])"""
-        a = """{x for x in y}"""
-        self.check(b, a)
-
-        b = """set([x for x in y if x == m])"""
-        a = """{x for x in y if x == m}"""
-        self.check(b, a)
-
-        b = """set([x for x in y for a in b])"""
-        a = """{x for x in y for a in b}"""
-        self.check(b, a)
-
-        b = """set([f(x) - 23 for x in y])"""
-        a = """{f(x) - 23 for x in y}"""
-        self.check(b, a)
-
-    def test_whitespace(self):
-        b = """set( [1, 2])"""
-        a = """{1, 2}"""
-        self.check(b, a)
-
-        b = """set([1 ,  2])"""
-        a = """{1 ,  2}"""
-        self.check(b, a)
-
-        b = """set([ 1 ])"""
-        a = """{ 1 }"""
-        self.check(b, a)
-
-        b = """set( [1] )"""
-        a = """{1}"""
-        self.check(b, a)
-
-        b = """set([  1,  2  ])"""
-        a = """{  1,  2  }"""
-        self.check(b, a)
-
-        b = """set([x  for x in y ])"""
-        a = """{x  for x in y }"""
-        self.check(b, a)
-
-        b = """set(
-                   [1, 2]
-               )
-            """
-        a = """{1, 2}\n"""
-        self.check(b, a)
-
-    def test_comments(self):
-        b = """set((1, 2)) # Hi"""
-        a = """{1, 2} # Hi"""
-        self.check(b, a)
-
-        # This isn't optimal behavior, but the fixer is optional.
-        b = """
-            # Foo
-            set( # Bar
-               (1, 2)
-            )
-            """
-        a = """
-            # Foo
-            {1, 2}
-            """
-        self.check(b, a)
-
-    def test_unchanged(self):
-        s = """set()"""
-        self.unchanged(s)
-
-        s = """set(a)"""
-        self.unchanged(s)
-
-        s = """set(a, b, c)"""
-        self.unchanged(s)
-
-        # Don't transform generators because they might have to be lazy.
-        s = """set(x for x in y)"""
-        self.unchanged(s)
-
-        s = """set(x for x in y if z)"""
-        self.unchanged(s)
-
-        s = """set(a*823-23**2 + f(23))"""
-        self.unchanged(s)
-
-
-class Test_sys_exc(FixerTestCase):
-    fixer = "sys_exc"
-
-    def test_0(self):
-        b = "sys.exc_type"
-        a = "sys.exc_info()[0]"
-        self.check(b, a)
-
-    def test_1(self):
-        b = "sys.exc_value"
-        a = "sys.exc_info()[1]"
-        self.check(b, a)
-
-    def test_2(self):
-        b = "sys.exc_traceback"
-        a = "sys.exc_info()[2]"
-        self.check(b, a)
-
-    def test_3(self):
-        b = "sys.exc_type # Foo"
-        a = "sys.exc_info()[0] # Foo"
-        self.check(b, a)
-
-    def test_4(self):
-        b = "sys.  exc_type"
-        a = "sys.  exc_info()[0]"
-        self.check(b, a)
-
-    def test_5(self):
-        b = "sys  .exc_type"
-        a = "sys  .exc_info()[0]"
-        self.check(b, a)
-
-
-class Test_paren(FixerTestCase):
-    fixer = "paren"
-
-    def test_0(self):
-        b = """[i for i in 1, 2 ]"""
-        a = """[i for i in (1, 2) ]"""
-        self.check(b, a)
-
-    def test_1(self):
-        b = """[i for i in 1, 2, ]"""
-        a = """[i for i in (1, 2,) ]"""
-        self.check(b, a)
-
-    def test_2(self):
-        b = """[i for i  in     1, 2 ]"""
-        a = """[i for i  in     (1, 2) ]"""
-        self.check(b, a)
-
-    def test_3(self):
-        b = """[i for i in 1, 2 if i]"""
-        a = """[i for i in (1, 2) if i]"""
-        self.check(b, a)
-
-    def test_4(self):
-        b = """[i for i in 1,    2    ]"""
-        a = """[i for i in (1,    2)    ]"""
-        self.check(b, a)
-
-    def test_5(self):
-        b = """(i for i in 1, 2)"""
-        a = """(i for i in (1, 2))"""
-        self.check(b, a)
-
-    def test_6(self):
-        b = """(i for i in 1   ,2   if i)"""
-        a = """(i for i in (1   ,2)   if i)"""
-        self.check(b, a)
-
-    def test_unchanged_0(self):
-        s = """[i for i in (1, 2)]"""
-        self.unchanged(s)
-
-    def test_unchanged_1(self):
-        s = """[i for i in foo()]"""
-        self.unchanged(s)
-
-    def test_unchanged_2(self):
-        s = """[i for i in (1, 2) if nothing]"""
-        self.unchanged(s)
-
-    def test_unchanged_3(self):
-        s = """(i for i in (1, 2))"""
-        self.unchanged(s)
-
-    def test_unchanged_4(self):
-        s = """[i for i in m]"""
-        self.unchanged(s)
-
-class Test_metaclass(FixerTestCase):
-
-    fixer = 'metaclass'
-
-    def test_unchanged(self):
-        self.unchanged("class X(): pass")
-        self.unchanged("class X(object): pass")
-        self.unchanged("class X(object1, object2): pass")
-        self.unchanged("class X(object1, object2, object3): pass")
-        self.unchanged("class X(metaclass=Meta): pass")
-        self.unchanged("class X(b, arg=23, metclass=Meta): pass")
-        self.unchanged("class X(b, arg=23, metaclass=Meta, other=42): pass")
-
-        s = """
-        class X:
-            def __metaclass__(self): pass
-        """
-        self.unchanged(s)
-
-        s = """
-        class X:
-            a[23] = 74
-        """
-        self.unchanged(s)
-
-    def test_comments(self):
-        b = """
-        class X:
-            # hi
-            __metaclass__ = AppleMeta
-        """
-        a = """
-        class X(metaclass=AppleMeta):
-            # hi
-            pass
-        """
-        self.check(b, a)
-
-        b = """
-        class X:
-            __metaclass__ = Meta
-            # Bedtime!
-        """
-        a = """
-        class X(metaclass=Meta):
-            pass
-            # Bedtime!
-        """
-        self.check(b, a)
-
-    def test_meta(self):
-        # no-parent class, odd body
-        b = """
-        class X():
-            __metaclass__ = Q
-            pass
-        """
-        a = """
-        class X(metaclass=Q):
-            pass
-        """
-        self.check(b, a)
-
-        # one parent class, no body
-        b = """class X(object): __metaclass__ = Q"""
-        a = """class X(object, metaclass=Q): pass"""
-        self.check(b, a)
-
-
-        # one parent, simple body
-        b = """
-        class X(object):
-            __metaclass__ = Meta
-            bar = 7
-        """
-        a = """
-        class X(object, metaclass=Meta):
-            bar = 7
-        """
-        self.check(b, a)
-
-        b = """
-        class X:
-            __metaclass__ = Meta; x = 4; g = 23
-        """
-        a = """
-        class X(metaclass=Meta):
-            x = 4; g = 23
-        """
-        self.check(b, a)
-
-        # one parent, simple body, __metaclass__ last
-        b = """
-        class X(object):
-            bar = 7
-            __metaclass__ = Meta
-        """
-        a = """
-        class X(object, metaclass=Meta):
-            bar = 7
-        """
-        self.check(b, a)
-
-        # redefining __metaclass__
-        b = """
-        class X():
-            __metaclass__ = A
-            __metaclass__ = B
-            bar = 7
-        """
-        a = """
-        class X(metaclass=B):
-            bar = 7
-        """
-        self.check(b, a)
-
-        # multiple inheritance, simple body
-        b = """
-        class X(clsA, clsB):
-            __metaclass__ = Meta
-            bar = 7
-        """
-        a = """
-        class X(clsA, clsB, metaclass=Meta):
-            bar = 7
-        """
-        self.check(b, a)
-
-        # keywords in the class statement
-        b = """class m(a, arg=23): __metaclass__ = Meta"""
-        a = """class m(a, arg=23, metaclass=Meta): pass"""
-        self.check(b, a)
-
-        b = """
-        class X(expression(2 + 4)):
-            __metaclass__ = Meta
-        """
-        a = """
-        class X(expression(2 + 4), metaclass=Meta):
-            pass
-        """
-        self.check(b, a)
-
-        b = """
-        class X(expression(2 + 4), x**4):
-            __metaclass__ = Meta
-        """
-        a = """
-        class X(expression(2 + 4), x**4, metaclass=Meta):
-            pass
-        """
-        self.check(b, a)
-
-        b = """
-        class X:
-            __metaclass__ = Meta
-            save.py = 23
-        """
-        a = """
-        class X(metaclass=Meta):
-            save.py = 23
-        """
-        self.check(b, a)
-
-
-class Test_getcwdu(FixerTestCase):
-
-    fixer = 'getcwdu'
-
-    def test_basic(self):
-        b = """os.getcwdu"""
-        a = """os.getcwd"""
-        self.check(b, a)
-
-        b = """os.getcwdu()"""
-        a = """os.getcwd()"""
-        self.check(b, a)
-
-        b = """meth = os.getcwdu"""
-        a = """meth = os.getcwd"""
-        self.check(b, a)
-
-        b = """os.getcwdu(args)"""
-        a = """os.getcwd(args)"""
-        self.check(b, a)
-
-    def test_comment(self):
-        b = """os.getcwdu() # Foo"""
-        a = """os.getcwd() # Foo"""
-        self.check(b, a)
-
-    def test_unchanged(self):
-        s = """os.getcwd()"""
-        self.unchanged(s)
-
-        s = """getcwdu()"""
-        self.unchanged(s)
-
-        s = """os.getcwdb()"""
-        self.unchanged(s)
-
-    def test_indentation(self):
-        b = """
-            if 1:
-                os.getcwdu()
-            """
-        a = """
-            if 1:
-                os.getcwd()
-            """
-        self.check(b, a)
-
-    def test_multilation(self):
-        b = """os .getcwdu()"""
-        a = """os .getcwd()"""
-        self.check(b, a)
-
-        b = """os.  getcwdu"""
-        a = """os.  getcwd"""
-        self.check(b, a)
-
-        b = """os.getcwdu (  )"""
-        a = """os.getcwd (  )"""
-        self.check(b, a)
-
-
-class Test_operator(FixerTestCase):
-
-    fixer = "operator"
-
-    def test_operator_isCallable(self):
-        b = "operator.isCallable(x)"
-        a = "hasattr(x, '__call__')"
-        self.check(b, a)
-
-    def test_operator_sequenceIncludes(self):
-        b = "operator.sequenceIncludes(x, y)"
-        a = "operator.contains(x, y)"
-        self.check(b, a)
-
-        b = "operator .sequenceIncludes(x, y)"
-        a = "operator .contains(x, y)"
-        self.check(b, a)
-
-        b = "operator.  sequenceIncludes(x, y)"
-        a = "operator.  contains(x, y)"
-        self.check(b, a)
-
-    def test_operator_isSequenceType(self):
-        b = "operator.isSequenceType(x)"
-        a = "import collections\nisinstance(x, collections.Sequence)"
-        self.check(b, a)
-
-    def test_operator_isMappingType(self):
-        b = "operator.isMappingType(x)"
-        a = "import collections\nisinstance(x, collections.Mapping)"
-        self.check(b, a)
-
-    def test_operator_isNumberType(self):
-        b = "operator.isNumberType(x)"
-        a = "import numbers\nisinstance(x, numbers.Number)"
-        self.check(b, a)
-
-    def test_operator_repeat(self):
-        b = "operator.repeat(x, n)"
-        a = "operator.mul(x, n)"
-        self.check(b, a)
-
-        b = "operator .repeat(x, n)"
-        a = "operator .mul(x, n)"
-        self.check(b, a)
-
-        b = "operator.  repeat(x, n)"
-        a = "operator.  mul(x, n)"
-        self.check(b, a)
-
-    def test_operator_irepeat(self):
-        b = "operator.irepeat(x, n)"
-        a = "operator.imul(x, n)"
-        self.check(b, a)
-
-        b = "operator .irepeat(x, n)"
-        a = "operator .imul(x, n)"
-        self.check(b, a)
-
-        b = "operator.  irepeat(x, n)"
-        a = "operator.  imul(x, n)"
-        self.check(b, a)
-
-    def test_bare_isCallable(self):
-        s = "isCallable(x)"
-        t = "You should use 'hasattr(x, '__call__')' here."
-        self.warns_unchanged(s, t)
-
-    def test_bare_sequenceIncludes(self):
-        s = "sequenceIncludes(x, y)"
-        t = "You should use 'operator.contains(x, y)' here."
-        self.warns_unchanged(s, t)
-
-    def test_bare_operator_isSequenceType(self):
-        s = "isSequenceType(z)"
-        t = "You should use 'isinstance(z, collections.Sequence)' here."
-        self.warns_unchanged(s, t)
-
-    def test_bare_operator_isMappingType(self):
-        s = "isMappingType(x)"
-        t = "You should use 'isinstance(x, collections.Mapping)' here."
-        self.warns_unchanged(s, t)
-
-    def test_bare_operator_isNumberType(self):
-        s = "isNumberType(y)"
-        t = "You should use 'isinstance(y, numbers.Number)' here."
-        self.warns_unchanged(s, t)
-
-    def test_bare_operator_repeat(self):
-        s = "repeat(x, n)"
-        t = "You should use 'operator.mul(x, n)' here."
-        self.warns_unchanged(s, t)
-
-    def test_bare_operator_irepeat(self):
-        s = "irepeat(y, 187)"
-        t = "You should use 'operator.imul(y, 187)' here."
-        self.warns_unchanged(s, t)
-
-
-class Test_exitfunc(FixerTestCase):
-
-    fixer = "exitfunc"
-
-    def test_simple(self):
-        b = """
-            import sys
-            sys.exitfunc = my_atexit
-            """
-        a = """
-            import sys
-            import atexit
-            atexit.register(my_atexit)
-            """
-        self.check(b, a)
-
-    def test_names_import(self):
-        b = """
-            import sys, crumbs
-            sys.exitfunc = my_func
-            """
-        a = """
-            import sys, crumbs, atexit
-            atexit.register(my_func)
-            """
-        self.check(b, a)
-
-    def test_complex_expression(self):
-        b = """
-            import sys
-            sys.exitfunc = do(d)/a()+complex(f=23, g=23)*expression
-            """
-        a = """
-            import sys
-            import atexit
-            atexit.register(do(d)/a()+complex(f=23, g=23)*expression)
-            """
-        self.check(b, a)
-
-    def test_comments(self):
-        b = """
-            import sys # Foo
-            sys.exitfunc = f # Blah
-            """
-        a = """
-            import sys
-            import atexit # Foo
-            atexit.register(f) # Blah
-            """
-        self.check(b, a)
-
-        b = """
-            import apples, sys, crumbs, larry # Pleasant comments
-            sys.exitfunc = func
-            """
-        a = """
-            import apples, sys, crumbs, larry, atexit # Pleasant comments
-            atexit.register(func)
-            """
-        self.check(b, a)
-
-    def test_in_a_function(self):
-        b = """
-            import sys
-            def f():
-                sys.exitfunc = func
-            """
-        a = """
-            import sys
-            import atexit
-            def f():
-                atexit.register(func)
-             """
-        self.check(b, a)
-
-    def test_no_sys_import(self):
-        b = """sys.exitfunc = f"""
-        a = """atexit.register(f)"""
-        msg = ("Can't find sys import; Please add an atexit import at the "
-            "top of your file.")
-        self.warns(b, a, msg)
-
-
-    def test_unchanged(self):
-        s = """f(sys.exitfunc)"""
-        self.unchanged(s)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_main.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_main.py
deleted file mode 100644
index f423168..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_main.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# -*- coding: utf-8 -*-
-import sys
-import codecs
-import logging
-import StringIO
-import unittest
-
-from lib2to3 import main
-
-
-class TestMain(unittest.TestCase):
-
-    def tearDown(self):
-        # Clean up logging configuration down by main.
-        del logging.root.handlers[:]
-
-    def run_2to3_capture(self, args, in_capture, out_capture, err_capture):
-        save_stdin = sys.stdin
-        save_stdout = sys.stdout
-        save_stderr = sys.stderr
-        sys.stdin = in_capture
-        sys.stdout = out_capture
-        sys.stderr = err_capture
-        try:
-            return main.main("lib2to3.fixes", args)
-        finally:
-            sys.stdin = save_stdin
-            sys.stdout = save_stdout
-            sys.stderr = save_stderr
-
-    def test_unencodable_diff(self):
-        input_stream = StringIO.StringIO(u"print 'nothing'\nprint u'über'\n")
-        out = StringIO.StringIO()
-        out_enc = codecs.getwriter("ascii")(out)
-        err = StringIO.StringIO()
-        ret = self.run_2to3_capture(["-"], input_stream, out_enc, err)
-        self.assertEqual(ret, 0)
-        output = out.getvalue()
-        self.assertTrue("-print 'nothing'" in output)
-        self.assertTrue("WARNING: couldn't encode <stdin>'s diff for "
-                        "your terminal" in err.getvalue())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_parser.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_parser.py
deleted file mode 100644
index c3b8f98..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_parser.py
+++ /dev/null
@@ -1,227 +0,0 @@
-"""Test suite for 2to3's parser and grammar files.
-
-This is the place to add tests for changes to 2to3's grammar, such as those
-merging the grammars for Python 2 and 3. In addition to specific tests for
-parts of the grammar we've changed, we also make sure we can parse the
-test_grammar.py files from both Python 2 and Python 3.
-"""
-
-from __future__ import with_statement
-
-# Testing imports
-from . import support
-from .support import driver, test_dir
-
-# Python imports
-import os
-import sys
-
-# Local imports
-from lib2to3.pgen2 import tokenize
-from ..pgen2.parse import ParseError
-from lib2to3.pygram import python_symbols as syms
-
-
-class TestDriver(support.TestCase):
-
-    def test_formfeed(self):
-        s = """print 1\n\x0Cprint 2\n"""
-        t = driver.parse_string(s)
-        self.assertEqual(t.children[0].children[0].type, syms.print_stmt)
-        self.assertEqual(t.children[1].children[0].type, syms.print_stmt)
-
-
-class GrammarTest(support.TestCase):
-    def validate(self, code):
-        support.parse_string(code)
-
-    def invalid_syntax(self, code):
-        try:
-            self.validate(code)
-        except ParseError:
-            pass
-        else:
-            raise AssertionError("Syntax shouldn't have been valid")
-
-
-class TestRaiseChanges(GrammarTest):
-    def test_2x_style_1(self):
-        self.validate("raise")
-
-    def test_2x_style_2(self):
-        self.validate("raise E, V")
-
-    def test_2x_style_3(self):
-        self.validate("raise E, V, T")
-
-    def test_2x_style_invalid_1(self):
-        self.invalid_syntax("raise E, V, T, Z")
-
-    def test_3x_style(self):
-        self.validate("raise E1 from E2")
-
-    def test_3x_style_invalid_1(self):
-        self.invalid_syntax("raise E, V from E1")
-
-    def test_3x_style_invalid_2(self):
-        self.invalid_syntax("raise E from E1, E2")
-
-    def test_3x_style_invalid_3(self):
-        self.invalid_syntax("raise from E1, E2")
-
-    def test_3x_style_invalid_4(self):
-        self.invalid_syntax("raise E from")
-
-
-# Adapated from Python 3's Lib/test/test_grammar.py:GrammarTests.testFuncdef
-class TestFunctionAnnotations(GrammarTest):
-    def test_1(self):
-        self.validate("""def f(x) -> list: pass""")
-
-    def test_2(self):
-        self.validate("""def f(x:int): pass""")
-
-    def test_3(self):
-        self.validate("""def f(*x:str): pass""")
-
-    def test_4(self):
-        self.validate("""def f(**x:float): pass""")
-
-    def test_5(self):
-        self.validate("""def f(x, y:1+2): pass""")
-
-    def test_6(self):
-        self.validate("""def f(a, (b:1, c:2, d)): pass""")
-
-    def test_7(self):
-        self.validate("""def f(a, (b:1, c:2, d), e:3=4, f=5, *g:6): pass""")
-
-    def test_8(self):
-        s = """def f(a, (b:1, c:2, d), e:3=4, f=5,
-                        *g:6, h:7, i=8, j:9=10, **k:11) -> 12: pass"""
-        self.validate(s)
-
-
-class TestExcept(GrammarTest):
-    def test_new(self):
-        s = """
-            try:
-                x
-            except E as N:
-                y"""
-        self.validate(s)
-
-    def test_old(self):
-        s = """
-            try:
-                x
-            except E, N:
-                y"""
-        self.validate(s)
-
-
-# Adapted from Python 3's Lib/test/test_grammar.py:GrammarTests.testAtoms
-class TestSetLiteral(GrammarTest):
-    def test_1(self):
-        self.validate("""x = {'one'}""")
-
-    def test_2(self):
-        self.validate("""x = {'one', 1,}""")
-
-    def test_3(self):
-        self.validate("""x = {'one', 'two', 'three'}""")
-
-    def test_4(self):
-        self.validate("""x = {2, 3, 4,}""")
-
-
-class TestNumericLiterals(GrammarTest):
-    def test_new_octal_notation(self):
-        self.validate("""0o7777777777777""")
-        self.invalid_syntax("""0o7324528887""")
-
-    def test_new_binary_notation(self):
-        self.validate("""0b101010""")
-        self.invalid_syntax("""0b0101021""")
-
-
-class TestClassDef(GrammarTest):
-    def test_new_syntax(self):
-        self.validate("class B(t=7): pass")
-        self.validate("class B(t, *args): pass")
-        self.validate("class B(t, **kwargs): pass")
-        self.validate("class B(t, *args, **kwargs): pass")
-        self.validate("class B(t, y=9, *args, **kwargs): pass")
-
-
-class TestParserIdempotency(support.TestCase):
-
-    """A cut-down version of pytree_idempotency.py."""
-
-    def test_all_project_files(self):
-        if sys.platform.startswith("win"):
-            # XXX something with newlines goes wrong on Windows.
-            return
-        for filepath in support.all_project_files():
-            with open(filepath, "rb") as fp:
-                encoding = tokenize.detect_encoding(fp.readline)[0]
-            self.assertTrue(encoding is not None,
-                            "can't detect encoding for %s" % filepath)
-            with open(filepath, "r") as fp:
-                source = fp.read()
-                source = source.decode(encoding)
-            tree = driver.parse_string(source)
-            new = unicode(tree)
-            if diff(filepath, new, encoding):
-                self.fail("Idempotency failed: %s" % filepath)
-
-    def test_extended_unpacking(self):
-        driver.parse_string("a, *b, c = x\n")
-        driver.parse_string("[*a, b] = x\n")
-        driver.parse_string("(z, *y, w) = m\n")
-        driver.parse_string("for *z, m in d: pass\n")
-
-class TestLiterals(GrammarTest):
-
-    def validate(self, s):
-        driver.parse_string(support.dedent(s) + "\n\n")
-
-    def test_multiline_bytes_literals(self):
-        s = """
-            md5test(b"\xaa" * 80,
-                    (b"Test Using Larger Than Block-Size Key "
-                     b"and Larger Than One Block-Size Data"),
-                    "6f630fad67cda0ee1fb1f562db3aa53e")
-            """
-        self.validate(s)
-
-    def test_multiline_bytes_tripquote_literals(self):
-        s = '''
-            b"""
-            <?xml version="1.0" encoding="UTF-8"?>
-            <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN">
-            """
-            '''
-        self.validate(s)
-
-    def test_multiline_str_literals(self):
-        s = """
-            md5test("\xaa" * 80,
-                    ("Test Using Larger Than Block-Size Key "
-                     "and Larger Than One Block-Size Data"),
-                    "6f630fad67cda0ee1fb1f562db3aa53e")
-            """
-        self.validate(s)
-
-
-def diff(fn, result, encoding):
-    f = open("@", "w")
-    try:
-        f.write(result.encode(encoding))
-    finally:
-        f.close()
-    try:
-        fn = fn.replace('"', '\\"')
-        return os.system('diff -u "%s" @' % fn)
-    finally:
-        os.remove("@")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_pytree.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_pytree.py
deleted file mode 100644
index c9fc24d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_pytree.py
+++ /dev/null
@@ -1,494 +0,0 @@
-# Copyright 2006 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Unit tests for pytree.py.
-
-NOTE: Please *don't* add doc strings to individual test methods!
-In verbose mode, printing of the module, class and method name is much
-more helpful than printing of (the first line of) the docstring,
-especially when debugging a test.
-"""
-
-from __future__ import with_statement
-
-import sys
-import warnings
-
-# Testing imports
-from . import support
-
-from lib2to3 import pytree
-
-try:
-    sorted
-except NameError:
-    def sorted(lst):
-        l = list(lst)
-        l.sort()
-        return l
-
-class TestNodes(support.TestCase):
-
-    """Unit tests for nodes (Base, Leaf, Node)."""
-
-    if sys.version_info >= (2,6):
-        # warnings.catch_warnings is new in 2.6.
-        def test_deprecated_prefix_methods(self):
-            l = pytree.Leaf(100, "foo")
-            with warnings.catch_warnings(record=True) as w:
-                warnings.simplefilter("always", DeprecationWarning)
-                self.assertEqual(l.get_prefix(), "")
-                l.set_prefix("hi")
-            self.assertEqual(l.prefix, "hi")
-            self.assertEqual(len(w), 2)
-            for warning in w:
-                self.assertTrue(warning.category is DeprecationWarning)
-            self.assertEqual(str(w[0].message), "get_prefix() is deprecated; " \
-                                 "use the prefix property")
-            self.assertEqual(str(w[1].message), "set_prefix() is deprecated; " \
-                                 "use the prefix property")
-
-    def test_instantiate_base(self):
-        if __debug__:
-            # Test that instantiating Base() raises an AssertionError
-            self.assertRaises(AssertionError, pytree.Base)
-
-    def test_leaf(self):
-        l1 = pytree.Leaf(100, "foo")
-        self.assertEqual(l1.type, 100)
-        self.assertEqual(l1.value, "foo")
-
-    def test_leaf_repr(self):
-        l1 = pytree.Leaf(100, "foo")
-        self.assertEqual(repr(l1), "Leaf(100, 'foo')")
-
-    def test_leaf_str(self):
-        l1 = pytree.Leaf(100, "foo")
-        self.assertEqual(str(l1), "foo")
-        l2 = pytree.Leaf(100, "foo", context=(" ", (10, 1)))
-        self.assertEqual(str(l2), " foo")
-
-    def test_leaf_str_numeric_value(self):
-        # Make sure that the Leaf's value is stringified. Failing to
-        #  do this can cause a TypeError in certain situations.
-        l1 = pytree.Leaf(2, 5)
-        l1.prefix = "foo_"
-        self.assertEqual(str(l1), "foo_5")
-
-    def test_leaf_equality(self):
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(100, "foo", context=(" ", (1, 0)))
-        self.assertEqual(l1, l2)
-        l3 = pytree.Leaf(101, "foo")
-        l4 = pytree.Leaf(100, "bar")
-        self.assertNotEqual(l1, l3)
-        self.assertNotEqual(l1, l4)
-
-    def test_leaf_prefix(self):
-        l1 = pytree.Leaf(100, "foo")
-        self.assertEqual(l1.prefix, "")
-        self.assertFalse(l1.was_changed)
-        l1.prefix = "  ##\n\n"
-        self.assertEqual(l1.prefix, "  ##\n\n")
-        self.assertTrue(l1.was_changed)
-
-    def test_node(self):
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(200, "bar")
-        n1 = pytree.Node(1000, [l1, l2])
-        self.assertEqual(n1.type, 1000)
-        self.assertEqual(n1.children, [l1, l2])
-
-    def test_node_repr(self):
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(100, "bar", context=(" ", (1, 0)))
-        n1 = pytree.Node(1000, [l1, l2])
-        self.assertEqual(repr(n1),
-                         "Node(1000, [%s, %s])" % (repr(l1), repr(l2)))
-
-    def test_node_str(self):
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(100, "bar", context=(" ", (1, 0)))
-        n1 = pytree.Node(1000, [l1, l2])
-        self.assertEqual(str(n1), "foo bar")
-
-    def test_node_prefix(self):
-        l1 = pytree.Leaf(100, "foo")
-        self.assertEqual(l1.prefix, "")
-        n1 = pytree.Node(1000, [l1])
-        self.assertEqual(n1.prefix, "")
-        n1.prefix = " "
-        self.assertEqual(n1.prefix, " ")
-        self.assertEqual(l1.prefix, " ")
-
-    def test_get_suffix(self):
-        l1 = pytree.Leaf(100, "foo", prefix="a")
-        l2 = pytree.Leaf(100, "bar", prefix="b")
-        n1 = pytree.Node(1000, [l1, l2])
-
-        self.assertEqual(l1.get_suffix(), l2.prefix)
-        self.assertEqual(l2.get_suffix(), "")
-        self.assertEqual(n1.get_suffix(), "")
-
-        l3 = pytree.Leaf(100, "bar", prefix="c")
-        n2 = pytree.Node(1000, [n1, l3])
-
-        self.assertEqual(n1.get_suffix(), l3.prefix)
-        self.assertEqual(l3.get_suffix(), "")
-        self.assertEqual(n2.get_suffix(), "")
-
-    def test_node_equality(self):
-        n1 = pytree.Node(1000, ())
-        n2 = pytree.Node(1000, [], context=(" ", (1, 0)))
-        self.assertEqual(n1, n2)
-        n3 = pytree.Node(1001, ())
-        self.assertNotEqual(n1, n3)
-
-    def test_node_recursive_equality(self):
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(100, "foo")
-        n1 = pytree.Node(1000, [l1])
-        n2 = pytree.Node(1000, [l2])
-        self.assertEqual(n1, n2)
-        l3 = pytree.Leaf(100, "bar")
-        n3 = pytree.Node(1000, [l3])
-        self.assertNotEqual(n1, n3)
-
-    def test_replace(self):
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(100, "+")
-        l3 = pytree.Leaf(100, "bar")
-        n1 = pytree.Node(1000, [l1, l2, l3])
-        self.assertEqual(n1.children, [l1, l2, l3])
-        self.assertTrue(isinstance(n1.children, list))
-        self.assertFalse(n1.was_changed)
-        l2new = pytree.Leaf(100, "-")
-        l2.replace(l2new)
-        self.assertEqual(n1.children, [l1, l2new, l3])
-        self.assertTrue(isinstance(n1.children, list))
-        self.assertTrue(n1.was_changed)
-
-    def test_replace_with_list(self):
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(100, "+")
-        l3 = pytree.Leaf(100, "bar")
-        n1 = pytree.Node(1000, [l1, l2, l3])
-
-        l2.replace([pytree.Leaf(100, "*"), pytree.Leaf(100, "*")])
-        self.assertEqual(str(n1), "foo**bar")
-        self.assertTrue(isinstance(n1.children, list))
-
-    def test_leaves(self):
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(100, "bar")
-        l3 = pytree.Leaf(100, "fooey")
-        n2 = pytree.Node(1000, [l1, l2])
-        n3 = pytree.Node(1000, [l3])
-        n1 = pytree.Node(1000, [n2, n3])
-
-        self.assertEqual(list(n1.leaves()), [l1, l2, l3])
-
-    def test_depth(self):
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(100, "bar")
-        n2 = pytree.Node(1000, [l1, l2])
-        n3 = pytree.Node(1000, [])
-        n1 = pytree.Node(1000, [n2, n3])
-
-        self.assertEqual(l1.depth(), 2)
-        self.assertEqual(n3.depth(), 1)
-        self.assertEqual(n1.depth(), 0)
-
-    def test_post_order(self):
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(100, "bar")
-        l3 = pytree.Leaf(100, "fooey")
-        c1 = pytree.Node(1000, [l1, l2])
-        n1 = pytree.Node(1000, [c1, l3])
-        self.assertEqual(list(n1.post_order()), [l1, l2, c1, l3, n1])
-
-    def test_pre_order(self):
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(100, "bar")
-        l3 = pytree.Leaf(100, "fooey")
-        c1 = pytree.Node(1000, [l1, l2])
-        n1 = pytree.Node(1000, [c1, l3])
-        self.assertEqual(list(n1.pre_order()), [n1, c1, l1, l2, l3])
-
-    def test_changed(self):
-        l1 = pytree.Leaf(100, "f")
-        self.assertFalse(l1.was_changed)
-        l1.changed()
-        self.assertTrue(l1.was_changed)
-
-        l1 = pytree.Leaf(100, "f")
-        n1 = pytree.Node(1000, [l1])
-        self.assertFalse(n1.was_changed)
-        n1.changed()
-        self.assertTrue(n1.was_changed)
-
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(100, "+")
-        l3 = pytree.Leaf(100, "bar")
-        n1 = pytree.Node(1000, [l1, l2, l3])
-        n2 = pytree.Node(1000, [n1])
-        self.assertFalse(l1.was_changed)
-        self.assertFalse(n1.was_changed)
-        self.assertFalse(n2.was_changed)
-
-        n1.changed()
-        self.assertTrue(n1.was_changed)
-        self.assertTrue(n2.was_changed)
-        self.assertFalse(l1.was_changed)
-
-    def test_leaf_constructor_prefix(self):
-        for prefix in ("xyz_", ""):
-            l1 = pytree.Leaf(100, "self", prefix=prefix)
-            self.assertTrue(str(l1), prefix + "self")
-            self.assertEqual(l1.prefix, prefix)
-
-    def test_node_constructor_prefix(self):
-        for prefix in ("xyz_", ""):
-            l1 = pytree.Leaf(100, "self")
-            l2 = pytree.Leaf(100, "foo", prefix="_")
-            n1 = pytree.Node(1000, [l1, l2], prefix=prefix)
-            self.assertTrue(str(n1), prefix + "self_foo")
-            self.assertEqual(n1.prefix, prefix)
-            self.assertEqual(l1.prefix, prefix)
-            self.assertEqual(l2.prefix, "_")
-
-    def test_remove(self):
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(100, "foo")
-        n1 = pytree.Node(1000, [l1, l2])
-        n2 = pytree.Node(1000, [n1])
-
-        self.assertEqual(n1.remove(), 0)
-        self.assertEqual(n2.children, [])
-        self.assertEqual(l1.parent, n1)
-        self.assertEqual(n1.parent, None)
-        self.assertEqual(n2.parent, None)
-        self.assertFalse(n1.was_changed)
-        self.assertTrue(n2.was_changed)
-
-        self.assertEqual(l2.remove(), 1)
-        self.assertEqual(l1.remove(), 0)
-        self.assertEqual(n1.children, [])
-        self.assertEqual(l1.parent, None)
-        self.assertEqual(n1.parent, None)
-        self.assertEqual(n2.parent, None)
-        self.assertTrue(n1.was_changed)
-        self.assertTrue(n2.was_changed)
-
-    def test_remove_parentless(self):
-        n1 = pytree.Node(1000, [])
-        n1.remove()
-        self.assertEqual(n1.parent, None)
-
-        l1 = pytree.Leaf(100, "foo")
-        l1.remove()
-        self.assertEqual(l1.parent, None)
-
-    def test_node_set_child(self):
-        l1 = pytree.Leaf(100, "foo")
-        n1 = pytree.Node(1000, [l1])
-
-        l2 = pytree.Leaf(100, "bar")
-        n1.set_child(0, l2)
-        self.assertEqual(l1.parent, None)
-        self.assertEqual(l2.parent, n1)
-        self.assertEqual(n1.children, [l2])
-
-        n2 = pytree.Node(1000, [l1])
-        n2.set_child(0, n1)
-        self.assertEqual(l1.parent, None)
-        self.assertEqual(n1.parent, n2)
-        self.assertEqual(n2.parent, None)
-        self.assertEqual(n2.children, [n1])
-
-        self.assertRaises(IndexError, n1.set_child, 4, l2)
-        # I don't care what it raises, so long as it's an exception
-        self.assertRaises(Exception, n1.set_child, 0, list)
-
-    def test_node_insert_child(self):
-        l1 = pytree.Leaf(100, "foo")
-        n1 = pytree.Node(1000, [l1])
-
-        l2 = pytree.Leaf(100, "bar")
-        n1.insert_child(0, l2)
-        self.assertEqual(l2.parent, n1)
-        self.assertEqual(n1.children, [l2, l1])
-
-        l3 = pytree.Leaf(100, "abc")
-        n1.insert_child(2, l3)
-        self.assertEqual(n1.children, [l2, l1, l3])
-
-        # I don't care what it raises, so long as it's an exception
-        self.assertRaises(Exception, n1.insert_child, 0, list)
-
-    def test_node_append_child(self):
-        n1 = pytree.Node(1000, [])
-
-        l1 = pytree.Leaf(100, "foo")
-        n1.append_child(l1)
-        self.assertEqual(l1.parent, n1)
-        self.assertEqual(n1.children, [l1])
-
-        l2 = pytree.Leaf(100, "bar")
-        n1.append_child(l2)
-        self.assertEqual(l2.parent, n1)
-        self.assertEqual(n1.children, [l1, l2])
-
-        # I don't care what it raises, so long as it's an exception
-        self.assertRaises(Exception, n1.append_child, list)
-
-    def test_node_next_sibling(self):
-        n1 = pytree.Node(1000, [])
-        n2 = pytree.Node(1000, [])
-        p1 = pytree.Node(1000, [n1, n2])
-
-        self.assertTrue(n1.next_sibling is n2)
-        self.assertEqual(n2.next_sibling, None)
-        self.assertEqual(p1.next_sibling, None)
-
-    def test_leaf_next_sibling(self):
-        l1 = pytree.Leaf(100, "a")
-        l2 = pytree.Leaf(100, "b")
-        p1 = pytree.Node(1000, [l1, l2])
-
-        self.assertTrue(l1.next_sibling is l2)
-        self.assertEqual(l2.next_sibling, None)
-        self.assertEqual(p1.next_sibling, None)
-
-    def test_node_prev_sibling(self):
-        n1 = pytree.Node(1000, [])
-        n2 = pytree.Node(1000, [])
-        p1 = pytree.Node(1000, [n1, n2])
-
-        self.assertTrue(n2.prev_sibling is n1)
-        self.assertEqual(n1.prev_sibling, None)
-        self.assertEqual(p1.prev_sibling, None)
-
-    def test_leaf_prev_sibling(self):
-        l1 = pytree.Leaf(100, "a")
-        l2 = pytree.Leaf(100, "b")
-        p1 = pytree.Node(1000, [l1, l2])
-
-        self.assertTrue(l2.prev_sibling is l1)
-        self.assertEqual(l1.prev_sibling, None)
-        self.assertEqual(p1.prev_sibling, None)
-
-
-class TestPatterns(support.TestCase):
-
-    """Unit tests for tree matching patterns."""
-
-    def test_basic_patterns(self):
-        # Build a tree
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(100, "bar")
-        l3 = pytree.Leaf(100, "foo")
-        n1 = pytree.Node(1000, [l1, l2])
-        n2 = pytree.Node(1000, [l3])
-        root = pytree.Node(1000, [n1, n2])
-        # Build a pattern matching a leaf
-        pl = pytree.LeafPattern(100, "foo", name="pl")
-        r = {}
-        self.assertFalse(pl.match(root, results=r))
-        self.assertEqual(r, {})
-        self.assertFalse(pl.match(n1, results=r))
-        self.assertEqual(r, {})
-        self.assertFalse(pl.match(n2, results=r))
-        self.assertEqual(r, {})
-        self.assertTrue(pl.match(l1, results=r))
-        self.assertEqual(r, {"pl": l1})
-        r = {}
-        self.assertFalse(pl.match(l2, results=r))
-        self.assertEqual(r, {})
-        # Build a pattern matching a node
-        pn = pytree.NodePattern(1000, [pl], name="pn")
-        self.assertFalse(pn.match(root, results=r))
-        self.assertEqual(r, {})
-        self.assertFalse(pn.match(n1, results=r))
-        self.assertEqual(r, {})
-        self.assertTrue(pn.match(n2, results=r))
-        self.assertEqual(r, {"pn": n2, "pl": l3})
-        r = {}
-        self.assertFalse(pn.match(l1, results=r))
-        self.assertEqual(r, {})
-        self.assertFalse(pn.match(l2, results=r))
-        self.assertEqual(r, {})
-
-    def test_wildcard(self):
-        # Build a tree for testing
-        l1 = pytree.Leaf(100, "foo")
-        l2 = pytree.Leaf(100, "bar")
-        l3 = pytree.Leaf(100, "foo")
-        n1 = pytree.Node(1000, [l1, l2])
-        n2 = pytree.Node(1000, [l3])
-        root = pytree.Node(1000, [n1, n2])
-        # Build a pattern
-        pl = pytree.LeafPattern(100, "foo", name="pl")
-        pn = pytree.NodePattern(1000, [pl], name="pn")
-        pw = pytree.WildcardPattern([[pn], [pl, pl]], name="pw")
-        r = {}
-        self.assertFalse(pw.match_seq([root], r))
-        self.assertEqual(r, {})
-        self.assertFalse(pw.match_seq([n1], r))
-        self.assertEqual(r, {})
-        self.assertTrue(pw.match_seq([n2], r))
-        # These are easier to debug
-        self.assertEqual(sorted(r.keys()), ["pl", "pn", "pw"])
-        self.assertEqual(r["pl"], l1)
-        self.assertEqual(r["pn"], n2)
-        self.assertEqual(r["pw"], [n2])
-        # But this is equivalent
-        self.assertEqual(r, {"pl": l1, "pn": n2, "pw": [n2]})
-        r = {}
-        self.assertTrue(pw.match_seq([l1, l3], r))
-        self.assertEqual(r, {"pl": l3, "pw": [l1, l3]})
-        self.assertTrue(r["pl"] is l3)
-        r = {}
-
-    def test_generate_matches(self):
-        la = pytree.Leaf(1, "a")
-        lb = pytree.Leaf(1, "b")
-        lc = pytree.Leaf(1, "c")
-        ld = pytree.Leaf(1, "d")
-        le = pytree.Leaf(1, "e")
-        lf = pytree.Leaf(1, "f")
-        leaves = [la, lb, lc, ld, le, lf]
-        root = pytree.Node(1000, leaves)
-        pa = pytree.LeafPattern(1, "a", "pa")
-        pb = pytree.LeafPattern(1, "b", "pb")
-        pc = pytree.LeafPattern(1, "c", "pc")
-        pd = pytree.LeafPattern(1, "d", "pd")
-        pe = pytree.LeafPattern(1, "e", "pe")
-        pf = pytree.LeafPattern(1, "f", "pf")
-        pw = pytree.WildcardPattern([[pa, pb, pc], [pd, pe],
-                                     [pa, pb], [pc, pd], [pe, pf]],
-                                    min=1, max=4, name="pw")
-        self.assertEqual([x[0] for x in pw.generate_matches(leaves)],
-                         [3, 5, 2, 4, 6])
-        pr = pytree.NodePattern(type=1000, content=[pw], name="pr")
-        matches = list(pytree.generate_matches([pr], [root]))
-        self.assertEqual(len(matches), 1)
-        c, r = matches[0]
-        self.assertEqual(c, 1)
-        self.assertEqual(str(r["pr"]), "abcdef")
-        self.assertEqual(r["pw"], [la, lb, lc, ld, le, lf])
-        for c in "abcdef":
-            self.assertEqual(r["p" + c], pytree.Leaf(1, c))
-
-    def test_has_key_example(self):
-        pattern = pytree.NodePattern(331,
-                                     (pytree.LeafPattern(7),
-                                      pytree.WildcardPattern(name="args"),
-                                      pytree.LeafPattern(8)))
-        l1 = pytree.Leaf(7, "(")
-        l2 = pytree.Leaf(3, "x")
-        l3 = pytree.Leaf(8, ")")
-        node = pytree.Node(331, [l1, l2, l3])
-        r = {}
-        self.assertTrue(pattern.match(node, r))
-        self.assertEqual(r["args"], [l2])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_refactor.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_refactor.py
deleted file mode 100644
index ec52330..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_refactor.py
+++ /dev/null
@@ -1,281 +0,0 @@
-"""
-Unit tests for refactor.py.
-"""
-
-from __future__ import with_statement
-
-import sys
-import os
-import codecs
-import operator
-import StringIO
-import tempfile
-import shutil
-import unittest
-import warnings
-
-from lib2to3 import refactor, pygram, fixer_base
-from lib2to3.pgen2 import token
-
-from . import support
-
-
-TEST_DATA_DIR = os.path.join(os.path.dirname(__file__), "data")
-FIXER_DIR = os.path.join(TEST_DATA_DIR, "fixers")
-
-sys.path.append(FIXER_DIR)
-try:
-    _DEFAULT_FIXERS = refactor.get_fixers_from_package("myfixes")
-finally:
-    sys.path.pop()
-
-_2TO3_FIXERS = refactor.get_fixers_from_package("lib2to3.fixes")
-
-class TestRefactoringTool(unittest.TestCase):
-
-    def setUp(self):
-        sys.path.append(FIXER_DIR)
-
-    def tearDown(self):
-        sys.path.pop()
-
-    def check_instances(self, instances, classes):
-        for inst, cls in zip(instances, classes):
-            if not isinstance(inst, cls):
-                self.fail("%s are not instances of %s" % instances, classes)
-
-    def rt(self, options=None, fixers=_DEFAULT_FIXERS, explicit=None):
-        return refactor.RefactoringTool(fixers, options, explicit)
-
-    def test_print_function_option(self):
-        rt = self.rt({"print_function" : True})
-        self.assertTrue(rt.grammar is pygram.python_grammar_no_print_statement)
-        self.assertTrue(rt.driver.grammar is
-                        pygram.python_grammar_no_print_statement)
-
-    def test_fixer_loading_helpers(self):
-        contents = ["explicit", "first", "last", "parrot", "preorder"]
-        non_prefixed = refactor.get_all_fix_names("myfixes")
-        prefixed = refactor.get_all_fix_names("myfixes", False)
-        full_names = refactor.get_fixers_from_package("myfixes")
-        self.assertEqual(prefixed, ["fix_" + name for name in contents])
-        self.assertEqual(non_prefixed, contents)
-        self.assertEqual(full_names,
-                         ["myfixes.fix_" + name for name in contents])
-
-    def test_detect_future_features(self):
-        run = refactor._detect_future_features
-        fs = frozenset
-        empty = fs()
-        self.assertEqual(run(""), empty)
-        self.assertEqual(run("from __future__ import print_function"),
-                         fs(("print_function",)))
-        self.assertEqual(run("from __future__ import generators"),
-                         fs(("generators",)))
-        self.assertEqual(run("from __future__ import generators, feature"),
-                         fs(("generators", "feature")))
-        inp = "from __future__ import generators, print_function"
-        self.assertEqual(run(inp), fs(("generators", "print_function")))
-        inp ="from __future__ import print_function, generators"
-        self.assertEqual(run(inp), fs(("print_function", "generators")))
-        inp = "from __future__ import (print_function,)"
-        self.assertEqual(run(inp), fs(("print_function",)))
-        inp = "from __future__ import (generators, print_function)"
-        self.assertEqual(run(inp), fs(("generators", "print_function")))
-        inp = "from __future__ import (generators, nested_scopes)"
-        self.assertEqual(run(inp), fs(("generators", "nested_scopes")))
-        inp = """from __future__ import generators
-from __future__ import print_function"""
-        self.assertEqual(run(inp), fs(("generators", "print_function")))
-        invalid = ("from",
-                   "from 4",
-                   "from x",
-                   "from x 5",
-                   "from x im",
-                   "from x import",
-                   "from x import 4",
-                   )
-        for inp in invalid:
-            self.assertEqual(run(inp), empty)
-        inp = "'docstring'\nfrom __future__ import print_function"
-        self.assertEqual(run(inp), fs(("print_function",)))
-        inp = "'docstring'\n'somng'\nfrom __future__ import print_function"
-        self.assertEqual(run(inp), empty)
-        inp = "# comment\nfrom __future__ import print_function"
-        self.assertEqual(run(inp), fs(("print_function",)))
-        inp = "# comment\n'doc'\nfrom __future__ import print_function"
-        self.assertEqual(run(inp), fs(("print_function",)))
-        inp = "class x: pass\nfrom __future__ import print_function"
-        self.assertEqual(run(inp), empty)
-
-    def test_get_headnode_dict(self):
-        class NoneFix(fixer_base.BaseFix):
-            pass
-
-        class FileInputFix(fixer_base.BaseFix):
-            PATTERN = "file_input< any * >"
-
-        class SimpleFix(fixer_base.BaseFix):
-            PATTERN = "'name'"
-
-        no_head = NoneFix({}, [])
-        with_head = FileInputFix({}, [])
-        simple = SimpleFix({}, [])
-        d = refactor._get_headnode_dict([no_head, with_head, simple])
-        top_fixes = d.pop(pygram.python_symbols.file_input)
-        self.assertEqual(top_fixes, [with_head, no_head])
-        name_fixes = d.pop(token.NAME)
-        self.assertEqual(name_fixes, [simple, no_head])
-        for fixes in d.itervalues():
-            self.assertEqual(fixes, [no_head])
-
-    def test_fixer_loading(self):
-        from myfixes.fix_first import FixFirst
-        from myfixes.fix_last import FixLast
-        from myfixes.fix_parrot import FixParrot
-        from myfixes.fix_preorder import FixPreorder
-
-        rt = self.rt()
-        pre, post = rt.get_fixers()
-
-        self.check_instances(pre, [FixPreorder])
-        self.check_instances(post, [FixFirst, FixParrot, FixLast])
-
-    def test_naughty_fixers(self):
-        self.assertRaises(ImportError, self.rt, fixers=["not_here"])
-        self.assertRaises(refactor.FixerError, self.rt, fixers=["no_fixer_cls"])
-        self.assertRaises(refactor.FixerError, self.rt, fixers=["bad_order"])
-
-    def test_refactor_string(self):
-        rt = self.rt()
-        input = "def parrot(): pass\n\n"
-        tree = rt.refactor_string(input, "<test>")
-        self.assertNotEqual(str(tree), input)
-
-        input = "def f(): pass\n\n"
-        tree = rt.refactor_string(input, "<test>")
-        self.assertEqual(str(tree), input)
-
-    def test_refactor_stdin(self):
-
-        class MyRT(refactor.RefactoringTool):
-
-            def print_output(self, old_text, new_text, filename, equal):
-                results.extend([old_text, new_text, filename, equal])
-
-        results = []
-        rt = MyRT(_DEFAULT_FIXERS)
-        save = sys.stdin
-        sys.stdin = StringIO.StringIO("def parrot(): pass\n\n")
-        try:
-            rt.refactor_stdin()
-        finally:
-            sys.stdin = save
-        expected = ["def parrot(): pass\n\n",
-                    "def cheese(): pass\n\n",
-                    "<stdin>", False]
-        self.assertEqual(results, expected)
-
-    def check_file_refactoring(self, test_file, fixers=_2TO3_FIXERS):
-        def read_file():
-            with open(test_file, "rb") as fp:
-                return fp.read()
-        old_contents = read_file()
-        rt = self.rt(fixers=fixers)
-
-        rt.refactor_file(test_file)
-        self.assertEqual(old_contents, read_file())
-
-        try:
-            rt.refactor_file(test_file, True)
-            new_contents = read_file()
-            self.assertNotEqual(old_contents, new_contents)
-        finally:
-            with open(test_file, "wb") as fp:
-                fp.write(old_contents)
-        return new_contents
-
-    def test_refactor_file(self):
-        test_file = os.path.join(FIXER_DIR, "parrot_example.py")
-        self.check_file_refactoring(test_file, _DEFAULT_FIXERS)
-
-    def test_refactor_dir(self):
-        def check(structure, expected):
-            def mock_refactor_file(self, f, *args):
-                got.append(f)
-            save_func = refactor.RefactoringTool.refactor_file
-            refactor.RefactoringTool.refactor_file = mock_refactor_file
-            rt = self.rt()
-            got = []
-            dir = tempfile.mkdtemp(prefix="2to3-test_refactor")
-            try:
-                os.mkdir(os.path.join(dir, "a_dir"))
-                for fn in structure:
-                    open(os.path.join(dir, fn), "wb").close()
-                rt.refactor_dir(dir)
-            finally:
-                refactor.RefactoringTool.refactor_file = save_func
-                shutil.rmtree(dir)
-            self.assertEqual(got,
-                             [os.path.join(dir, path) for path in expected])
-        check([], [])
-        tree = ["nothing",
-                "hi.py",
-                ".dumb",
-                ".after.py",
-                "notpy.npy",
-                "sappy"]
-        expected = ["hi.py"]
-        check(tree, expected)
-        tree = ["hi.py",
-                os.path.join("a_dir", "stuff.py")]
-        check(tree, tree)
-
-    def test_file_encoding(self):
-        fn = os.path.join(TEST_DATA_DIR, "different_encoding.py")
-        self.check_file_refactoring(fn)
-
-    def test_bom(self):
-        fn = os.path.join(TEST_DATA_DIR, "bom.py")
-        data = self.check_file_refactoring(fn)
-        self.assertTrue(data.startswith(codecs.BOM_UTF8))
-
-    def test_crlf_newlines(self):
-        old_sep = os.linesep
-        os.linesep = "\r\n"
-        try:
-            fn = os.path.join(TEST_DATA_DIR, "crlf.py")
-            fixes = refactor.get_fixers_from_package("lib2to3.fixes")
-            self.check_file_refactoring(fn, fixes)
-        finally:
-            os.linesep = old_sep
-
-    def test_refactor_docstring(self):
-        rt = self.rt()
-
-        doc = """
->>> example()
-42
-"""
-        out = rt.refactor_docstring(doc, "<test>")
-        self.assertEqual(out, doc)
-
-        doc = """
->>> def parrot():
-...      return 43
-"""
-        out = rt.refactor_docstring(doc, "<test>")
-        self.assertNotEqual(out, doc)
-
-    def test_explicit(self):
-        from myfixes.fix_explicit import FixExplicit
-
-        rt = self.rt(fixers=["myfixes.fix_explicit"])
-        self.assertEqual(len(rt.post_order), 0)
-
-        rt = self.rt(explicit=["myfixes.fix_explicit"])
-        for fix in rt.post_order:
-            if isinstance(fix, FixExplicit):
-                break
-        else:
-            self.fail("explicit fixer not loaded")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_util.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_util.py
deleted file mode 100644
index bc7cf75..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/lib2to3/tests/test_util.py
+++ /dev/null
@@ -1,594 +0,0 @@
-""" Test suite for the code in fixer_util """
-
-# Testing imports
-from . import support
-
-# Python imports
-import os.path
-
-# Local imports
-from lib2to3.pytree import Node, Leaf
-from lib2to3 import fixer_util
-from lib2to3.fixer_util import Attr, Name, Call, Comma
-from lib2to3.pgen2 import token
-
-def parse(code, strip_levels=0):
-    # The topmost node is file_input, which we don't care about.
-    # The next-topmost node is a *_stmt node, which we also don't care about
-    tree = support.parse_string(code)
-    for i in range(strip_levels):
-        tree = tree.children[0]
-    tree.parent = None
-    return tree
-
-class MacroTestCase(support.TestCase):
-    def assertStr(self, node, string):
-        if isinstance(node, (tuple, list)):
-            node = Node(fixer_util.syms.simple_stmt, node)
-        self.assertEqual(str(node), string)
-
-
-class Test_is_tuple(support.TestCase):
-    def is_tuple(self, string):
-        return fixer_util.is_tuple(parse(string, strip_levels=2))
-
-    def test_valid(self):
-        self.assertTrue(self.is_tuple("(a, b)"))
-        self.assertTrue(self.is_tuple("(a, (b, c))"))
-        self.assertTrue(self.is_tuple("((a, (b, c)),)"))
-        self.assertTrue(self.is_tuple("(a,)"))
-        self.assertTrue(self.is_tuple("()"))
-
-    def test_invalid(self):
-        self.assertFalse(self.is_tuple("(a)"))
-        self.assertFalse(self.is_tuple("('foo') % (b, c)"))
-
-
-class Test_is_list(support.TestCase):
-    def is_list(self, string):
-        return fixer_util.is_list(parse(string, strip_levels=2))
-
-    def test_valid(self):
-        self.assertTrue(self.is_list("[]"))
-        self.assertTrue(self.is_list("[a]"))
-        self.assertTrue(self.is_list("[a, b]"))
-        self.assertTrue(self.is_list("[a, [b, c]]"))
-        self.assertTrue(self.is_list("[[a, [b, c]],]"))
-
-    def test_invalid(self):
-        self.assertFalse(self.is_list("[]+[]"))
-
-
-class Test_Attr(MacroTestCase):
-    def test(self):
-        call = parse("foo()", strip_levels=2)
-
-        self.assertStr(Attr(Name("a"), Name("b")), "a.b")
-        self.assertStr(Attr(call, Name("b")), "foo().b")
-
-    def test_returns(self):
-        attr = Attr(Name("a"), Name("b"))
-        self.assertEqual(type(attr), list)
-
-
-class Test_Name(MacroTestCase):
-    def test(self):
-        self.assertStr(Name("a"), "a")
-        self.assertStr(Name("foo.foo().bar"), "foo.foo().bar")
-        self.assertStr(Name("a", prefix="b"), "ba")
-
-
-class Test_Call(MacroTestCase):
-    def _Call(self, name, args=None, prefix=None):
-        """Help the next test"""
-        children = []
-        if isinstance(args, list):
-            for arg in args:
-                children.append(arg)
-                children.append(Comma())
-            children.pop()
-        return Call(Name(name), children, prefix)
-
-    def test(self):
-        kids = [None,
-                [Leaf(token.NUMBER, 1), Leaf(token.NUMBER, 2),
-                 Leaf(token.NUMBER, 3)],
-                [Leaf(token.NUMBER, 1), Leaf(token.NUMBER, 3),
-                 Leaf(token.NUMBER, 2), Leaf(token.NUMBER, 4)],
-                [Leaf(token.STRING, "b"), Leaf(token.STRING, "j", prefix=" ")]
-                ]
-        self.assertStr(self._Call("A"), "A()")
-        self.assertStr(self._Call("b", kids[1]), "b(1,2,3)")
-        self.assertStr(self._Call("a.b().c", kids[2]), "a.b().c(1,3,2,4)")
-        self.assertStr(self._Call("d", kids[3], prefix=" "), " d(b, j)")
-
-
-class Test_does_tree_import(support.TestCase):
-    def _find_bind_rec(self, name, node):
-        # Search a tree for a binding -- used to find the starting
-        # point for these tests.
-        c = fixer_util.find_binding(name, node)
-        if c: return c
-        for child in node.children:
-            c = self._find_bind_rec(name, child)
-            if c: return c
-
-    def does_tree_import(self, package, name, string):
-        node = parse(string)
-        # Find the binding of start -- that's what we'll go from
-        node = self._find_bind_rec('start', node)
-        return fixer_util.does_tree_import(package, name, node)
-
-    def try_with(self, string):
-        failing_tests = (("a", "a", "from a import b"),
-                         ("a.d", "a", "from a.d import b"),
-                         ("d.a", "a", "from d.a import b"),
-                         (None, "a", "import b"),
-                         (None, "a", "import b, c, d"))
-        for package, name, import_ in failing_tests:
-            n = self.does_tree_import(package, name, import_ + "\n" + string)
-            self.assertFalse(n)
-            n = self.does_tree_import(package, name, string + "\n" + import_)
-            self.assertFalse(n)
-
-        passing_tests = (("a", "a", "from a import a"),
-                         ("x", "a", "from x import a"),
-                         ("x", "a", "from x import b, c, a, d"),
-                         ("x.b", "a", "from x.b import a"),
-                         ("x.b", "a", "from x.b import b, c, a, d"),
-                         (None, "a", "import a"),
-                         (None, "a", "import b, c, a, d"))
-        for package, name, import_ in passing_tests:
-            n = self.does_tree_import(package, name, import_ + "\n" + string)
-            self.assertTrue(n)
-            n = self.does_tree_import(package, name, string + "\n" + import_)
-            self.assertTrue(n)
-
-    def test_in_function(self):
-        self.try_with("def foo():\n\tbar.baz()\n\tstart=3")
-
-class Test_find_binding(support.TestCase):
-    def find_binding(self, name, string, package=None):
-        return fixer_util.find_binding(name, parse(string), package)
-
-    def test_simple_assignment(self):
-        self.assertTrue(self.find_binding("a", "a = b"))
-        self.assertTrue(self.find_binding("a", "a = [b, c, d]"))
-        self.assertTrue(self.find_binding("a", "a = foo()"))
-        self.assertTrue(self.find_binding("a", "a = foo().foo.foo[6][foo]"))
-        self.assertFalse(self.find_binding("a", "foo = a"))
-        self.assertFalse(self.find_binding("a", "foo = (a, b, c)"))
-
-    def test_tuple_assignment(self):
-        self.assertTrue(self.find_binding("a", "(a,) = b"))
-        self.assertTrue(self.find_binding("a", "(a, b, c) = [b, c, d]"))
-        self.assertTrue(self.find_binding("a", "(c, (d, a), b) = foo()"))
-        self.assertTrue(self.find_binding("a", "(a, b) = foo().foo[6][foo]"))
-        self.assertFalse(self.find_binding("a", "(foo, b) = (b, a)"))
-        self.assertFalse(self.find_binding("a", "(foo, (b, c)) = (a, b, c)"))
-
-    def test_list_assignment(self):
-        self.assertTrue(self.find_binding("a", "[a] = b"))
-        self.assertTrue(self.find_binding("a", "[a, b, c] = [b, c, d]"))
-        self.assertTrue(self.find_binding("a", "[c, [d, a], b] = foo()"))
-        self.assertTrue(self.find_binding("a", "[a, b] = foo().foo[a][foo]"))
-        self.assertFalse(self.find_binding("a", "[foo, b] = (b, a)"))
-        self.assertFalse(self.find_binding("a", "[foo, [b, c]] = (a, b, c)"))
-
-    def test_invalid_assignments(self):
-        self.assertFalse(self.find_binding("a", "foo.a = 5"))
-        self.assertFalse(self.find_binding("a", "foo[a] = 5"))
-        self.assertFalse(self.find_binding("a", "foo(a) = 5"))
-        self.assertFalse(self.find_binding("a", "foo(a, b) = 5"))
-
-    def test_simple_import(self):
-        self.assertTrue(self.find_binding("a", "import a"))
-        self.assertTrue(self.find_binding("a", "import b, c, a, d"))
-        self.assertFalse(self.find_binding("a", "import b"))
-        self.assertFalse(self.find_binding("a", "import b, c, d"))
-
-    def test_from_import(self):
-        self.assertTrue(self.find_binding("a", "from x import a"))
-        self.assertTrue(self.find_binding("a", "from a import a"))
-        self.assertTrue(self.find_binding("a", "from x import b, c, a, d"))
-        self.assertTrue(self.find_binding("a", "from x.b import a"))
-        self.assertTrue(self.find_binding("a", "from x.b import b, c, a, d"))
-        self.assertFalse(self.find_binding("a", "from a import b"))
-        self.assertFalse(self.find_binding("a", "from a.d import b"))
-        self.assertFalse(self.find_binding("a", "from d.a import b"))
-
-    def test_import_as(self):
-        self.assertTrue(self.find_binding("a", "import b as a"))
-        self.assertTrue(self.find_binding("a", "import b as a, c, a as f, d"))
-        self.assertFalse(self.find_binding("a", "import a as f"))
-        self.assertFalse(self.find_binding("a", "import b, c as f, d as e"))
-
-    def test_from_import_as(self):
-        self.assertTrue(self.find_binding("a", "from x import b as a"))
-        self.assertTrue(self.find_binding("a", "from x import g as a, d as b"))
-        self.assertTrue(self.find_binding("a", "from x.b import t as a"))
-        self.assertTrue(self.find_binding("a", "from x.b import g as a, d"))
-        self.assertFalse(self.find_binding("a", "from a import b as t"))
-        self.assertFalse(self.find_binding("a", "from a.d import b as t"))
-        self.assertFalse(self.find_binding("a", "from d.a import b as t"))
-
-    def test_simple_import_with_package(self):
-        self.assertTrue(self.find_binding("b", "import b"))
-        self.assertTrue(self.find_binding("b", "import b, c, d"))
-        self.assertFalse(self.find_binding("b", "import b", "b"))
-        self.assertFalse(self.find_binding("b", "import b, c, d", "c"))
-
-    def test_from_import_with_package(self):
-        self.assertTrue(self.find_binding("a", "from x import a", "x"))
-        self.assertTrue(self.find_binding("a", "from a import a", "a"))
-        self.assertTrue(self.find_binding("a", "from x import *", "x"))
-        self.assertTrue(self.find_binding("a", "from x import b, c, a, d", "x"))
-        self.assertTrue(self.find_binding("a", "from x.b import a", "x.b"))
-        self.assertTrue(self.find_binding("a", "from x.b import *", "x.b"))
-        self.assertTrue(self.find_binding("a", "from x.b import b, c, a, d", "x.b"))
-        self.assertFalse(self.find_binding("a", "from a import b", "a"))
-        self.assertFalse(self.find_binding("a", "from a.d import b", "a.d"))
-        self.assertFalse(self.find_binding("a", "from d.a import b", "a.d"))
-        self.assertFalse(self.find_binding("a", "from x.y import *", "a.b"))
-
-    def test_import_as_with_package(self):
-        self.assertFalse(self.find_binding("a", "import b.c as a", "b.c"))
-        self.assertFalse(self.find_binding("a", "import a as f", "f"))
-        self.assertFalse(self.find_binding("a", "import a as f", "a"))
-
-    def test_from_import_as_with_package(self):
-        # Because it would take a lot of special-case code in the fixers
-        # to deal with from foo import bar as baz, we'll simply always
-        # fail if there is an "from ... import ... as ..."
-        self.assertFalse(self.find_binding("a", "from x import b as a", "x"))
-        self.assertFalse(self.find_binding("a", "from x import g as a, d as b", "x"))
-        self.assertFalse(self.find_binding("a", "from x.b import t as a", "x.b"))
-        self.assertFalse(self.find_binding("a", "from x.b import g as a, d", "x.b"))
-        self.assertFalse(self.find_binding("a", "from a import b as t", "a"))
-        self.assertFalse(self.find_binding("a", "from a import b as t", "b"))
-        self.assertFalse(self.find_binding("a", "from a import b as t", "t"))
-
-    def test_function_def(self):
-        self.assertTrue(self.find_binding("a", "def a(): pass"))
-        self.assertTrue(self.find_binding("a", "def a(b, c, d): pass"))
-        self.assertTrue(self.find_binding("a", "def a(): b = 7"))
-        self.assertFalse(self.find_binding("a", "def d(b, (c, a), e): pass"))
-        self.assertFalse(self.find_binding("a", "def d(a=7): pass"))
-        self.assertFalse(self.find_binding("a", "def d(a): pass"))
-        self.assertFalse(self.find_binding("a", "def d(): a = 7"))
-
-        s = """
-            def d():
-                def a():
-                    pass"""
-        self.assertFalse(self.find_binding("a", s))
-
-    def test_class_def(self):
-        self.assertTrue(self.find_binding("a", "class a: pass"))
-        self.assertTrue(self.find_binding("a", "class a(): pass"))
-        self.assertTrue(self.find_binding("a", "class a(b): pass"))
-        self.assertTrue(self.find_binding("a", "class a(b, c=8): pass"))
-        self.assertFalse(self.find_binding("a", "class d: pass"))
-        self.assertFalse(self.find_binding("a", "class d(a): pass"))
-        self.assertFalse(self.find_binding("a", "class d(b, a=7): pass"))
-        self.assertFalse(self.find_binding("a", "class d(b, *a): pass"))
-        self.assertFalse(self.find_binding("a", "class d(b, **a): pass"))
-        self.assertFalse(self.find_binding("a", "class d: a = 7"))
-
-        s = """
-            class d():
-                class a():
-                    pass"""
-        self.assertFalse(self.find_binding("a", s))
-
-    def test_for(self):
-        self.assertTrue(self.find_binding("a", "for a in r: pass"))
-        self.assertTrue(self.find_binding("a", "for a, b in r: pass"))
-        self.assertTrue(self.find_binding("a", "for (a, b) in r: pass"))
-        self.assertTrue(self.find_binding("a", "for c, (a,) in r: pass"))
-        self.assertTrue(self.find_binding("a", "for c, (a, b) in r: pass"))
-        self.assertTrue(self.find_binding("a", "for c in r: a = c"))
-        self.assertFalse(self.find_binding("a", "for c in a: pass"))
-
-    def test_for_nested(self):
-        s = """
-            for b in r:
-                for a in b:
-                    pass"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            for b in r:
-                for a, c in b:
-                    pass"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            for b in r:
-                for (a, c) in b:
-                    pass"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            for b in r:
-                for (a,) in b:
-                    pass"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            for b in r:
-                for c, (a, d) in b:
-                    pass"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            for b in r:
-                for c in b:
-                    a = 7"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            for b in r:
-                for c in b:
-                    d = a"""
-        self.assertFalse(self.find_binding("a", s))
-
-        s = """
-            for b in r:
-                for c in a:
-                    d = 7"""
-        self.assertFalse(self.find_binding("a", s))
-
-    def test_if(self):
-        self.assertTrue(self.find_binding("a", "if b in r: a = c"))
-        self.assertFalse(self.find_binding("a", "if a in r: d = e"))
-
-    def test_if_nested(self):
-        s = """
-            if b in r:
-                if c in d:
-                    a = c"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            if b in r:
-                if c in d:
-                    c = a"""
-        self.assertFalse(self.find_binding("a", s))
-
-    def test_while(self):
-        self.assertTrue(self.find_binding("a", "while b in r: a = c"))
-        self.assertFalse(self.find_binding("a", "while a in r: d = e"))
-
-    def test_while_nested(self):
-        s = """
-            while b in r:
-                while c in d:
-                    a = c"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            while b in r:
-                while c in d:
-                    c = a"""
-        self.assertFalse(self.find_binding("a", s))
-
-    def test_try_except(self):
-        s = """
-            try:
-                a = 6
-            except:
-                b = 8"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            try:
-                b = 8
-            except:
-                a = 6"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            try:
-                b = 8
-            except KeyError:
-                pass
-            except:
-                a = 6"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            try:
-                b = 8
-            except:
-                b = 6"""
-        self.assertFalse(self.find_binding("a", s))
-
-    def test_try_except_nested(self):
-        s = """
-            try:
-                try:
-                    a = 6
-                except:
-                    pass
-            except:
-                b = 8"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            try:
-                b = 8
-            except:
-                try:
-                    a = 6
-                except:
-                    pass"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            try:
-                b = 8
-            except:
-                try:
-                    pass
-                except:
-                    a = 6"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            try:
-                try:
-                    b = 8
-                except KeyError:
-                    pass
-                except:
-                    a = 6
-            except:
-                pass"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            try:
-                pass
-            except:
-                try:
-                    b = 8
-                except KeyError:
-                    pass
-                except:
-                    a = 6"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            try:
-                b = 8
-            except:
-                b = 6"""
-        self.assertFalse(self.find_binding("a", s))
-
-        s = """
-            try:
-                try:
-                    b = 8
-                except:
-                    c = d
-            except:
-                try:
-                    b = 6
-                except:
-                    t = 8
-                except:
-                    o = y"""
-        self.assertFalse(self.find_binding("a", s))
-
-    def test_try_except_finally(self):
-        s = """
-            try:
-                c = 6
-            except:
-                b = 8
-            finally:
-                a = 9"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            try:
-                b = 8
-            finally:
-                a = 6"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            try:
-                b = 8
-            finally:
-                b = 6"""
-        self.assertFalse(self.find_binding("a", s))
-
-        s = """
-            try:
-                b = 8
-            except:
-                b = 9
-            finally:
-                b = 6"""
-        self.assertFalse(self.find_binding("a", s))
-
-    def test_try_except_finally_nested(self):
-        s = """
-            try:
-                c = 6
-            except:
-                b = 8
-            finally:
-                try:
-                    a = 9
-                except:
-                    b = 9
-                finally:
-                    c = 9"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            try:
-                b = 8
-            finally:
-                try:
-                    pass
-                finally:
-                    a = 6"""
-        self.assertTrue(self.find_binding("a", s))
-
-        s = """
-            try:
-                b = 8
-            finally:
-                try:
-                    b = 6
-                finally:
-                    b = 7"""
-        self.assertFalse(self.find_binding("a", s))
-
-class Test_touch_import(support.TestCase):
-
-    def test_after_docstring(self):
-        node = parse('"""foo"""\nbar()')
-        fixer_util.touch_import(None, "foo", node)
-        self.assertEqual(str(node), '"""foo"""\nimport foo\nbar()\n\n')
-
-    def test_after_imports(self):
-        node = parse('"""foo"""\nimport bar\nbar()')
-        fixer_util.touch_import(None, "foo", node)
-        self.assertEqual(str(node), '"""foo"""\nimport bar\nimport foo\nbar()\n\n')
-
-    def test_beginning(self):
-        node = parse('bar()')
-        fixer_util.touch_import(None, "foo", node)
-        self.assertEqual(str(node), 'import foo\nbar()\n\n')
-
-    def test_from_import(self):
-        node = parse('bar()')
-        fixer_util.touch_import("html", "escape", node)
-        self.assertEqual(str(node), 'from html import escape\nbar()\n\n')
-
-    def test_name_import(self):
-        node = parse('bar()')
-        fixer_util.touch_import(None, "cgi", node)
-        self.assertEqual(str(node), 'import cgi\nbar()\n\n')
-
-class Test_find_indentation(support.TestCase):
-
-    def test_nothing(self):
-        fi = fixer_util.find_indentation
-        node = parse("node()")
-        self.assertEqual(fi(node), u"")
-        node = parse("")
-        self.assertEqual(fi(node), u"")
-
-    def test_simple(self):
-        fi = fixer_util.find_indentation
-        node = parse("def f():\n    x()")
-        self.assertEqual(fi(node), u"")
-        self.assertEqual(fi(node.children[0].children[4].children[2]), u"    ")
-        node = parse("def f():\n    x()\n    y()")
-        self.assertEqual(fi(node.children[0].children[4].children[4]), u"    ")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/linecache.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/linecache.py
deleted file mode 100644
index 277e38f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/linecache.py
+++ /dev/null
@@ -1,135 +0,0 @@
-"""Cache lines from files.
-
-This is intended to read lines from modules imported -- hence if a filename
-is not found, it will look down the module search path for a file by
-that name.
-"""
-
-import sys
-import os
-
-__all__ = ["getline", "clearcache", "checkcache"]
-
-def getline(filename, lineno, module_globals=None):
-    lines = getlines(filename, module_globals)
-    if 1 <= lineno <= len(lines):
-        return lines[lineno-1]
-    else:
-        return ''
-
-
-# The cache
-
-cache = {} # The cache
-
-
-def clearcache():
-    """Clear the cache entirely."""
-
-    global cache
-    cache = {}
-
-
-def getlines(filename, module_globals=None):
-    """Get the lines for a file from the cache.
-    Update the cache if it doesn't contain an entry for this file already."""
-
-    if filename in cache:
-        return cache[filename][2]
-    else:
-        return updatecache(filename, module_globals)
-
-
-def checkcache(filename=None):
-    """Discard cache entries that are out of date.
-    (This is not checked upon each call!)"""
-
-    if filename is None:
-        filenames = cache.keys()
-    else:
-        if filename in cache:
-            filenames = [filename]
-        else:
-            return
-
-    for filename in filenames:
-        size, mtime, lines, fullname = cache[filename]
-        if mtime is None:
-            continue   # no-op for files loaded via a __loader__
-        try:
-            stat = os.stat(fullname)
-        except os.error:
-            del cache[filename]
-            continue
-        if size != stat.st_size or mtime != stat.st_mtime:
-            del cache[filename]
-
-
-def updatecache(filename, module_globals=None):
-    """Update a cache entry and return its list of lines.
-    If something's wrong, print a message, discard the cache entry,
-    and return an empty list."""
-
-    if filename in cache:
-        del cache[filename]
-    if not filename or (filename.startswith('<') and filename.endswith('>')):
-        return []
-
-    fullname = filename
-    try:
-        stat = os.stat(fullname)
-    except OSError:
-        basename = filename
-
-        # Try for a __loader__, if available
-        if module_globals and '__loader__' in module_globals:
-            name = module_globals.get('__name__')
-            loader = module_globals['__loader__']
-            get_source = getattr(loader, 'get_source', None)
-
-            if name and get_source:
-                try:
-                    data = get_source(name)
-                except (ImportError, IOError):
-                    pass
-                else:
-                    if data is None:
-                        # No luck, the PEP302 loader cannot find the source
-                        # for this module.
-                        return []
-                    cache[filename] = (
-                        len(data), None,
-                        [line+'\n' for line in data.splitlines()], fullname
-                    )
-                    return cache[filename][2]
-
-        # Try looking through the module search path, which is only useful
-        # when handling a relative filename.
-        if os.path.isabs(filename):
-            return []
-
-        for dirname in sys.path:
-            # When using imputil, sys.path may contain things other than
-            # strings; ignore them when it happens.
-            try:
-                fullname = os.path.join(dirname, basename)
-            except (TypeError, AttributeError):
-                # Not sufficiently string-like to do anything useful with.
-                continue
-            try:
-                stat = os.stat(fullname)
-                break
-            except os.error:
-                pass
-        else:
-            return []
-    try:
-        with open(fullname, 'rU') as fp:
-            lines = fp.readlines()
-    except IOError:
-        return []
-    if lines and not lines[-1].endswith('\n'):
-        lines[-1] += '\n'
-    size, mtime = stat.st_size, stat.st_mtime
-    cache[filename] = size, mtime, lines, fullname
-    return lines
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/locale.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/locale.py
deleted file mode 100644
index 1516e9b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/locale.py
+++ /dev/null
@@ -1,1867 +0,0 @@
-""" Locale support.
-
-    The module provides low-level access to the C lib's locale APIs
-    and adds high level number formatting APIs as well as a locale
-    aliasing engine to complement these.
-
-    The aliasing engine includes support for many commonly used locale
-    names and maps them to values suitable for passing to the C lib's
-    setlocale() function. It also includes default encodings for all
-    supported locale names.
-
-"""
-
-import sys
-import encodings
-import encodings.aliases
-import re
-import operator
-import functools
-
-# Try importing the _locale module.
-#
-# If this fails, fall back on a basic 'C' locale emulation.
-
-# Yuck:  LC_MESSAGES is non-standard:  can't tell whether it exists before
-# trying the import.  So __all__ is also fiddled at the end of the file.
-__all__ = ["getlocale", "getdefaultlocale", "getpreferredencoding", "Error",
-           "setlocale", "resetlocale", "localeconv", "strcoll", "strxfrm",
-           "str", "atof", "atoi", "format", "format_string", "currency",
-           "normalize", "LC_CTYPE", "LC_COLLATE", "LC_TIME", "LC_MONETARY",
-           "LC_NUMERIC", "LC_ALL", "CHAR_MAX"]
-
-try:
-
-    from _locale import *
-
-except ImportError:
-
-    # Locale emulation
-
-    CHAR_MAX = 127
-    LC_ALL = 6
-    LC_COLLATE = 3
-    LC_CTYPE = 0
-    LC_MESSAGES = 5
-    LC_MONETARY = 4
-    LC_NUMERIC = 1
-    LC_TIME = 2
-    Error = ValueError
-
-    def localeconv():
-        """ localeconv() -> dict.
-            Returns numeric and monetary locale-specific parameters.
-        """
-        # 'C' locale default values
-        return {'grouping': [127],
-                'currency_symbol': '',
-                'n_sign_posn': 127,
-                'p_cs_precedes': 127,
-                'n_cs_precedes': 127,
-                'mon_grouping': [],
-                'n_sep_by_space': 127,
-                'decimal_point': '.',
-                'negative_sign': '',
-                'positive_sign': '',
-                'p_sep_by_space': 127,
-                'int_curr_symbol': '',
-                'p_sign_posn': 127,
-                'thousands_sep': '',
-                'mon_thousands_sep': '',
-                'frac_digits': 127,
-                'mon_decimal_point': '',
-                'int_frac_digits': 127}
-
-    def setlocale(category, value=None):
-        """ setlocale(integer,string=None) -> string.
-            Activates/queries locale processing.
-        """
-        if value not in (None, '', 'C'):
-            raise Error, '_locale emulation only supports "C" locale'
-        return 'C'
-
-    def strcoll(a,b):
-        """ strcoll(string,string) -> int.
-            Compares two strings according to the locale.
-        """
-        return cmp(a,b)
-
-    def strxfrm(s):
-        """ strxfrm(string) -> string.
-            Returns a string that behaves for cmp locale-aware.
-        """
-        return s
-
-
-_localeconv = localeconv
-
-# With this dict, you can override some items of localeconv's return value.
-# This is useful for testing purposes.
-_override_localeconv = {}
-
-@functools.wraps(_localeconv)
-def localeconv():
-    d = _localeconv()
-    if _override_localeconv:
-        d.update(_override_localeconv)
-    return d
-
-
-### Number formatting APIs
-
-# Author: Martin von Loewis
-# improved by Georg Brandl
-
-# Iterate over grouping intervals
-def _grouping_intervals(grouping):
-    last_interval = None
-    for interval in grouping:
-        # if grouping is -1, we are done
-        if interval == CHAR_MAX:
-            return
-        # 0: re-use last group ad infinitum
-        if interval == 0:
-            if last_interval is None:
-                raise ValueError("invalid grouping")
-            while True:
-                yield last_interval
-        yield interval
-        last_interval = interval
-
-#perform the grouping from right to left
-def _group(s, monetary=False):
-    conv = localeconv()
-    thousands_sep = conv[monetary and 'mon_thousands_sep' or 'thousands_sep']
-    grouping = conv[monetary and 'mon_grouping' or 'grouping']
-    if not grouping:
-        return (s, 0)
-    result = ""
-    seps = 0
-    if s[-1] == ' ':
-        stripped = s.rstrip()
-        right_spaces = s[len(stripped):]
-        s = stripped
-    else:
-        right_spaces = ''
-    left_spaces = ''
-    groups = []
-    for interval in _grouping_intervals(grouping):
-        if not s or s[-1] not in "0123456789":
-            # only non-digit characters remain (sign, spaces)
-            left_spaces = s
-            s = ''
-            break
-        groups.append(s[-interval:])
-        s = s[:-interval]
-    if s:
-        groups.append(s)
-    groups.reverse()
-    return (
-        left_spaces + thousands_sep.join(groups) + right_spaces,
-        len(thousands_sep) * (len(groups) - 1)
-    )
-
-# Strip a given amount of excess padding from the given string
-def _strip_padding(s, amount):
-    lpos = 0
-    while amount and s[lpos] == ' ':
-        lpos += 1
-        amount -= 1
-    rpos = len(s) - 1
-    while amount and s[rpos] == ' ':
-        rpos -= 1
-        amount -= 1
-    return s[lpos:rpos+1]
-
-_percent_re = re.compile(r'%(?:\((?P<key>.*?)\))?'
-                         r'(?P<modifiers>[-#0-9 +*.hlL]*?)[eEfFgGdiouxXcrs%]')
-
-def format(percent, value, grouping=False, monetary=False, *additional):
-    """Returns the locale-aware substitution of a %? specifier
-    (percent).
-
-    additional is for format strings which contain one or more
-    '*' modifiers."""
-    # this is only for one-percent-specifier strings and this should be checked
-    match = _percent_re.match(percent)
-    if not match or len(match.group())!= len(percent):
-        raise ValueError(("format() must be given exactly one %%char "
-                         "format specifier, %s not valid") % repr(percent))
-    return _format(percent, value, grouping, monetary, *additional)
-
-def _format(percent, value, grouping=False, monetary=False, *additional):
-    if additional:
-        formatted = percent % ((value,) + additional)
-    else:
-        formatted = percent % value
-    # floats and decimal ints need special action!
-    if percent[-1] in 'eEfFgG':
-        seps = 0
-        parts = formatted.split('.')
-        if grouping:
-            parts[0], seps = _group(parts[0], monetary=monetary)
-        decimal_point = localeconv()[monetary and 'mon_decimal_point'
-                                              or 'decimal_point']
-        formatted = decimal_point.join(parts)
-        if seps:
-            formatted = _strip_padding(formatted, seps)
-    elif percent[-1] in 'diu':
-        seps = 0
-        if grouping:
-            formatted, seps = _group(formatted, monetary=monetary)
-        if seps:
-            formatted = _strip_padding(formatted, seps)
-    return formatted
-
-def format_string(f, val, grouping=False):
-    """Formats a string in the same way that the % formatting would use,
-    but takes the current locale into account.
-    Grouping is applied if the third parameter is true."""
-    percents = list(_percent_re.finditer(f))
-    new_f = _percent_re.sub('%s', f)
-
-    if operator.isMappingType(val):
-        new_val = []
-        for perc in percents:
-            if perc.group()[-1]=='%':
-                new_val.append('%')
-            else:
-                new_val.append(format(perc.group(), val, grouping))
-    else:
-        if not isinstance(val, tuple):
-            val = (val,)
-        new_val = []
-        i = 0
-        for perc in percents:
-            if perc.group()[-1]=='%':
-                new_val.append('%')
-            else:
-                starcount = perc.group('modifiers').count('*')
-                new_val.append(_format(perc.group(),
-                                      val[i],
-                                      grouping,
-                                      False,
-                                      *val[i+1:i+1+starcount]))
-                i += (1 + starcount)
-    val = tuple(new_val)
-
-    return new_f % val
-
-def currency(val, symbol=True, grouping=False, international=False):
-    """Formats val according to the currency settings
-    in the current locale."""
-    conv = localeconv()
-
-    # check for illegal values
-    digits = conv[international and 'int_frac_digits' or 'frac_digits']
-    if digits == 127:
-        raise ValueError("Currency formatting is not possible using "
-                         "the 'C' locale.")
-
-    s = format('%%.%if' % digits, abs(val), grouping, monetary=True)
-    # '<' and '>' are markers if the sign must be inserted between symbol and value
-    s = '<' + s + '>'
-
-    if symbol:
-        smb = conv[international and 'int_curr_symbol' or 'currency_symbol']
-        precedes = conv[val<0 and 'n_cs_precedes' or 'p_cs_precedes']
-        separated = conv[val<0 and 'n_sep_by_space' or 'p_sep_by_space']
-
-        if precedes:
-            s = smb + (separated and ' ' or '') + s
-        else:
-            s = s + (separated and ' ' or '') + smb
-
-    sign_pos = conv[val<0 and 'n_sign_posn' or 'p_sign_posn']
-    sign = conv[val<0 and 'negative_sign' or 'positive_sign']
-
-    if sign_pos == 0:
-        s = '(' + s + ')'
-    elif sign_pos == 1:
-        s = sign + s
-    elif sign_pos == 2:
-        s = s + sign
-    elif sign_pos == 3:
-        s = s.replace('<', sign)
-    elif sign_pos == 4:
-        s = s.replace('>', sign)
-    else:
-        # the default if nothing specified;
-        # this should be the most fitting sign position
-        s = sign + s
-
-    return s.replace('<', '').replace('>', '')
-
-def str(val):
-    """Convert float to integer, taking the locale into account."""
-    return format("%.12g", val)
-
-def atof(string, func=float):
-    "Parses a string as a float according to the locale settings."
-    #First, get rid of the grouping
-    ts = localeconv()['thousands_sep']
-    if ts:
-        string = string.replace(ts, '')
-    #next, replace the decimal point with a dot
-    dd = localeconv()['decimal_point']
-    if dd:
-        string = string.replace(dd, '.')
-    #finally, parse the string
-    return func(string)
-
-def atoi(str):
-    "Converts a string to an integer according to the locale settings."
-    return atof(str, int)
-
-def _test():
-    setlocale(LC_ALL, "")
-    #do grouping
-    s1 = format("%d", 123456789,1)
-    print s1, "is", atoi(s1)
-    #standard formatting
-    s1 = str(3.14)
-    print s1, "is", atof(s1)
-
-### Locale name aliasing engine
-
-# Author: Marc-Andre Lemburg, mal@lemburg.com
-# Various tweaks by Fredrik Lundh <fredrik@pythonware.com>
-
-# store away the low-level version of setlocale (it's
-# overridden below)
-_setlocale = setlocale
-
-def normalize(localename):
-
-    """ Returns a normalized locale code for the given locale
-        name.
-
-        The returned locale code is formatted for use with
-        setlocale().
-
-        If normalization fails, the original name is returned
-        unchanged.
-
-        If the given encoding is not known, the function defaults to
-        the default encoding for the locale code just like setlocale()
-        does.
-
-    """
-    # Normalize the locale name and extract the encoding
-    fullname = localename.lower()
-    if ':' in fullname:
-        # ':' is sometimes used as encoding delimiter.
-        fullname = fullname.replace(':', '.')
-    if '.' in fullname:
-        langname, encoding = fullname.split('.')[:2]
-        fullname = langname + '.' + encoding
-    else:
-        langname = fullname
-        encoding = ''
-
-    # First lookup: fullname (possibly with encoding)
-    norm_encoding = encoding.replace('-', '')
-    norm_encoding = norm_encoding.replace('_', '')
-    lookup_name = langname + '.' + encoding
-    code = locale_alias.get(lookup_name, None)
-    if code is not None:
-        return code
-    #print 'first lookup failed'
-
-    # Second try: langname (without encoding)
-    code = locale_alias.get(langname, None)
-    if code is not None:
-        #print 'langname lookup succeeded'
-        if '.' in code:
-            langname, defenc = code.split('.')
-        else:
-            langname = code
-            defenc = ''
-        if encoding:
-            # Convert the encoding to a C lib compatible encoding string
-            norm_encoding = encodings.normalize_encoding(encoding)
-            #print 'norm encoding: %r' % norm_encoding
-            norm_encoding = encodings.aliases.aliases.get(norm_encoding,
-                                                          norm_encoding)
-            #print 'aliased encoding: %r' % norm_encoding
-            encoding = locale_encoding_alias.get(norm_encoding,
-                                                 norm_encoding)
-        else:
-            encoding = defenc
-        #print 'found encoding %r' % encoding
-        if encoding:
-            return langname + '.' + encoding
-        else:
-            return langname
-
-    else:
-        return localename
-
-def _parse_localename(localename):
-
-    """ Parses the locale code for localename and returns the
-        result as tuple (language code, encoding).
-
-        The localename is normalized and passed through the locale
-        alias engine. A ValueError is raised in case the locale name
-        cannot be parsed.
-
-        The language code corresponds to RFC 1766.  code and encoding
-        can be None in case the values cannot be determined or are
-        unknown to this implementation.
-
-    """
-    code = normalize(localename)
-    if '@' in code:
-        # Deal with locale modifiers
-        code, modifier = code.split('@')
-        if modifier == 'euro' and '.' not in code:
-            # Assume Latin-9 for @euro locales. This is bogus,
-            # since some systems may use other encodings for these
-            # locales. Also, we ignore other modifiers.
-            return code, 'iso-8859-15'
-
-    if '.' in code:
-        return tuple(code.split('.')[:2])
-    elif code == 'C':
-        return None, None
-    raise ValueError, 'unknown locale: %s' % localename
-
-def _build_localename(localetuple):
-
-    """ Builds a locale code from the given tuple (language code,
-        encoding).
-
-        No aliasing or normalizing takes place.
-
-    """
-    language, encoding = localetuple
-    if language is None:
-        language = 'C'
-    if encoding is None:
-        return language
-    else:
-        return language + '.' + encoding
-
-def getdefaultlocale(envvars=('LC_ALL', 'LC_CTYPE', 'LANG', 'LANGUAGE')):
-
-    """ Tries to determine the default locale settings and returns
-        them as tuple (language code, encoding).
-
-        According to POSIX, a program which has not called
-        setlocale(LC_ALL, "") runs using the portable 'C' locale.
-        Calling setlocale(LC_ALL, "") lets it use the default locale as
-        defined by the LANG variable. Since we don't want to interfere
-        with the current locale setting we thus emulate the behavior
-        in the way described above.
-
-        To maintain compatibility with other platforms, not only the
-        LANG variable is tested, but a list of variables given as
-        envvars parameter. The first found to be defined will be
-        used. envvars defaults to the search path used in GNU gettext;
-        it must always contain the variable name 'LANG'.
-
-        Except for the code 'C', the language code corresponds to RFC
-        1766.  code and encoding can be None in case the values cannot
-        be determined.
-
-    """
-
-    try:
-        # check if it's supported by the _locale module
-        import _locale
-        code, encoding = _locale._getdefaultlocale()
-    except (ImportError, AttributeError):
-        pass
-    else:
-        # make sure the code/encoding values are valid
-        if sys.platform == "win32" and code and code[:2] == "0x":
-            # map windows language identifier to language name
-            code = windows_locale.get(int(code, 0))
-        # ...add other platform-specific processing here, if
-        # necessary...
-        return code, encoding
-
-    # fall back on POSIX behaviour
-    import os
-    lookup = os.environ.get
-    for variable in envvars:
-        localename = lookup(variable,None)
-        if localename:
-            if variable == 'LANGUAGE':
-                localename = localename.split(':')[0]
-            break
-    else:
-        localename = 'C'
-    return _parse_localename(localename)
-
-
-def getlocale(category=LC_CTYPE):
-
-    """ Returns the current setting for the given locale category as
-        tuple (language code, encoding).
-
-        category may be one of the LC_* value except LC_ALL. It
-        defaults to LC_CTYPE.
-
-        Except for the code 'C', the language code corresponds to RFC
-        1766.  code and encoding can be None in case the values cannot
-        be determined.
-
-    """
-    localename = _setlocale(category)
-    if category == LC_ALL and ';' in localename:
-        raise TypeError, 'category LC_ALL is not supported'
-    return _parse_localename(localename)
-
-def setlocale(category, locale=None):
-
-    """ Set the locale for the given category.  The locale can be
-        a string, a locale tuple (language code, encoding), or None.
-
-        Locale tuples are converted to strings the locale aliasing
-        engine.  Locale strings are passed directly to the C lib.
-
-        category may be given as one of the LC_* values.
-
-    """
-    if locale and type(locale) is not type(""):
-        # convert to string
-        locale = normalize(_build_localename(locale))
-    return _setlocale(category, locale)
-
-def resetlocale(category=LC_ALL):
-
-    """ Sets the locale for category to the default setting.
-
-        The default setting is determined by calling
-        getdefaultlocale(). category defaults to LC_ALL.
-
-    """
-    _setlocale(category, _build_localename(getdefaultlocale()))
-
-if sys.platform.startswith("win"):
-    # On Win32, this will return the ANSI code page
-    def getpreferredencoding(do_setlocale = True):
-        """Return the charset that the user is likely using."""
-        import _locale
-        return _locale._getdefaultlocale()[1]
-else:
-    # On Unix, if CODESET is available, use that.
-    try:
-        CODESET
-    except NameError:
-        # Fall back to parsing environment variables :-(
-        def getpreferredencoding(do_setlocale = True):
-            """Return the charset that the user is likely using,
-            by looking at environment variables."""
-            return getdefaultlocale()[1]
-    else:
-        def getpreferredencoding(do_setlocale = True):
-            """Return the charset that the user is likely using,
-            according to the system configuration."""
-            if do_setlocale:
-                oldloc = setlocale(LC_CTYPE)
-                try:
-                    setlocale(LC_CTYPE, "")
-                except Error:
-                    pass
-                result = nl_langinfo(CODESET)
-                setlocale(LC_CTYPE, oldloc)
-                return result
-            else:
-                return nl_langinfo(CODESET)
-
-
-### Database
-#
-# The following data was extracted from the locale.alias file which
-# comes with X11 and then hand edited removing the explicit encoding
-# definitions and adding some more aliases. The file is usually
-# available as /usr/lib/X11/locale/locale.alias.
-#
-
-#
-# The local_encoding_alias table maps lowercase encoding alias names
-# to C locale encoding names (case-sensitive). Note that normalize()
-# first looks up the encoding in the encodings.aliases dictionary and
-# then applies this mapping to find the correct C lib name for the
-# encoding.
-#
-locale_encoding_alias = {
-
-    # Mappings for non-standard encoding names used in locale names
-    '437':                          'C',
-    'c':                            'C',
-    'en':                           'ISO8859-1',
-    'jis':                          'JIS7',
-    'jis7':                         'JIS7',
-    'ajec':                         'eucJP',
-
-    # Mappings from Python codec names to C lib encoding names
-    'ascii':                        'ISO8859-1',
-    'latin_1':                      'ISO8859-1',
-    'iso8859_1':                    'ISO8859-1',
-    'iso8859_10':                   'ISO8859-10',
-    'iso8859_11':                   'ISO8859-11',
-    'iso8859_13':                   'ISO8859-13',
-    'iso8859_14':                   'ISO8859-14',
-    'iso8859_15':                   'ISO8859-15',
-    'iso8859_16':                   'ISO8859-16',
-    'iso8859_2':                    'ISO8859-2',
-    'iso8859_3':                    'ISO8859-3',
-    'iso8859_4':                    'ISO8859-4',
-    'iso8859_5':                    'ISO8859-5',
-    'iso8859_6':                    'ISO8859-6',
-    'iso8859_7':                    'ISO8859-7',
-    'iso8859_8':                    'ISO8859-8',
-    'iso8859_9':                    'ISO8859-9',
-    'iso2022_jp':                   'JIS7',
-    'shift_jis':                    'SJIS',
-    'tactis':                       'TACTIS',
-    'euc_jp':                       'eucJP',
-    'euc_kr':                       'eucKR',
-    'utf_8':                        'UTF-8',
-    'koi8_r':                       'KOI8-R',
-    'koi8_u':                       'KOI8-U',
-    # XXX This list is still incomplete. If you know more
-    # mappings, please file a bug report. Thanks.
-}
-
-#
-# The locale_alias table maps lowercase alias names to C locale names
-# (case-sensitive). Encodings are always separated from the locale
-# name using a dot ('.'); they should only be given in case the
-# language name is needed to interpret the given encoding alias
-# correctly (CJK codes often have this need).
-#
-# Note that the normalize() function which uses this tables
-# removes '_' and '-' characters from the encoding part of the
-# locale name before doing the lookup. This saves a lot of
-# space in the table.
-#
-# MAL 2004-12-10:
-# Updated alias mapping to most recent locale.alias file
-# from X.org distribution using makelocalealias.py.
-#
-# These are the differences compared to the old mapping (Python 2.4
-# and older):
-#
-#    updated 'bg' -> 'bg_BG.ISO8859-5' to 'bg_BG.CP1251'
-#    updated 'bg_bg' -> 'bg_BG.ISO8859-5' to 'bg_BG.CP1251'
-#    updated 'bulgarian' -> 'bg_BG.ISO8859-5' to 'bg_BG.CP1251'
-#    updated 'cz' -> 'cz_CZ.ISO8859-2' to 'cs_CZ.ISO8859-2'
-#    updated 'cz_cz' -> 'cz_CZ.ISO8859-2' to 'cs_CZ.ISO8859-2'
-#    updated 'czech' -> 'cs_CS.ISO8859-2' to 'cs_CZ.ISO8859-2'
-#    updated 'dutch' -> 'nl_BE.ISO8859-1' to 'nl_NL.ISO8859-1'
-#    updated 'et' -> 'et_EE.ISO8859-4' to 'et_EE.ISO8859-15'
-#    updated 'et_ee' -> 'et_EE.ISO8859-4' to 'et_EE.ISO8859-15'
-#    updated 'fi' -> 'fi_FI.ISO8859-1' to 'fi_FI.ISO8859-15'
-#    updated 'fi_fi' -> 'fi_FI.ISO8859-1' to 'fi_FI.ISO8859-15'
-#    updated 'iw' -> 'iw_IL.ISO8859-8' to 'he_IL.ISO8859-8'
-#    updated 'iw_il' -> 'iw_IL.ISO8859-8' to 'he_IL.ISO8859-8'
-#    updated 'japanese' -> 'ja_JP.SJIS' to 'ja_JP.eucJP'
-#    updated 'lt' -> 'lt_LT.ISO8859-4' to 'lt_LT.ISO8859-13'
-#    updated 'lv' -> 'lv_LV.ISO8859-4' to 'lv_LV.ISO8859-13'
-#    updated 'sl' -> 'sl_CS.ISO8859-2' to 'sl_SI.ISO8859-2'
-#    updated 'slovene' -> 'sl_CS.ISO8859-2' to 'sl_SI.ISO8859-2'
-#    updated 'th_th' -> 'th_TH.TACTIS' to 'th_TH.ISO8859-11'
-#    updated 'zh_cn' -> 'zh_CN.eucCN' to 'zh_CN.gb2312'
-#    updated 'zh_cn.big5' -> 'zh_TW.eucTW' to 'zh_TW.big5'
-#    updated 'zh_tw' -> 'zh_TW.eucTW' to 'zh_TW.big5'
-#
-# MAL 2008-05-30:
-# Updated alias mapping to most recent locale.alias file
-# from X.org distribution using makelocalealias.py.
-#
-# These are the differences compared to the old mapping (Python 2.5
-# and older):
-#
-#    updated 'cs_cs.iso88592' -> 'cs_CZ.ISO8859-2' to 'cs_CS.ISO8859-2'
-#    updated 'serbocroatian' -> 'sh_YU.ISO8859-2' to 'sr_CS.ISO8859-2'
-#    updated 'sh' -> 'sh_YU.ISO8859-2' to 'sr_CS.ISO8859-2'
-#    updated 'sh_hr.iso88592' -> 'sh_HR.ISO8859-2' to 'hr_HR.ISO8859-2'
-#    updated 'sh_sp' -> 'sh_YU.ISO8859-2' to 'sr_CS.ISO8859-2'
-#    updated 'sh_yu' -> 'sh_YU.ISO8859-2' to 'sr_CS.ISO8859-2'
-#    updated 'sp' -> 'sp_YU.ISO8859-5' to 'sr_CS.ISO8859-5'
-#    updated 'sp_yu' -> 'sp_YU.ISO8859-5' to 'sr_CS.ISO8859-5'
-#    updated 'sr' -> 'sr_YU.ISO8859-5' to 'sr_CS.ISO8859-5'
-#    updated 'sr@cyrillic' -> 'sr_YU.ISO8859-5' to 'sr_CS.ISO8859-5'
-#    updated 'sr_sp' -> 'sr_SP.ISO8859-2' to 'sr_CS.ISO8859-2'
-#    updated 'sr_yu' -> 'sr_YU.ISO8859-5' to 'sr_CS.ISO8859-5'
-#    updated 'sr_yu.cp1251@cyrillic' -> 'sr_YU.CP1251' to 'sr_CS.CP1251'
-#    updated 'sr_yu.iso88592' -> 'sr_YU.ISO8859-2' to 'sr_CS.ISO8859-2'
-#    updated 'sr_yu.iso88595' -> 'sr_YU.ISO8859-5' to 'sr_CS.ISO8859-5'
-#    updated 'sr_yu.iso88595@cyrillic' -> 'sr_YU.ISO8859-5' to 'sr_CS.ISO8859-5'
-#    updated 'sr_yu.microsoftcp1251@cyrillic' -> 'sr_YU.CP1251' to 'sr_CS.CP1251'
-#    updated 'sr_yu.utf8@cyrillic' -> 'sr_YU.UTF-8' to 'sr_CS.UTF-8'
-#    updated 'sr_yu@cyrillic' -> 'sr_YU.ISO8859-5' to 'sr_CS.ISO8859-5'
-#
-# AP 2010-04-12:
-# Updated alias mapping to most recent locale.alias file
-# from X.org distribution using makelocalealias.py.
-#
-# These are the differences compared to the old mapping (Python 2.6.5
-# and older):
-#
-#    updated 'ru' -> 'ru_RU.ISO8859-5' to 'ru_RU.UTF-8'
-#    updated 'ru_ru' -> 'ru_RU.ISO8859-5' to 'ru_RU.UTF-8'
-#    updated 'serbocroatian' -> 'sr_CS.ISO8859-2' to 'sr_RS.UTF-8@latin'
-#    updated 'sh' -> 'sr_CS.ISO8859-2' to 'sr_RS.UTF-8@latin'
-#    updated 'sh_yu' -> 'sr_CS.ISO8859-2' to 'sr_RS.UTF-8@latin'
-#    updated 'sr' -> 'sr_CS.ISO8859-5' to 'sr_RS.UTF-8'
-#    updated 'sr@cyrillic' -> 'sr_CS.ISO8859-5' to 'sr_RS.UTF-8'
-#    updated 'sr@latn' -> 'sr_CS.ISO8859-2' to 'sr_RS.UTF-8@latin'
-#    updated 'sr_cs.utf8@latn' -> 'sr_CS.UTF-8' to 'sr_RS.UTF-8@latin'
-#    updated 'sr_cs@latn' -> 'sr_CS.ISO8859-2' to 'sr_RS.UTF-8@latin'
-#    updated 'sr_yu' -> 'sr_CS.ISO8859-5' to 'sr_RS.UTF-8@latin'
-#    updated 'sr_yu.utf8@cyrillic' -> 'sr_CS.UTF-8' to 'sr_RS.UTF-8'
-#    updated 'sr_yu@cyrillic' -> 'sr_CS.ISO8859-5' to 'sr_RS.UTF-8'
-#
-
-locale_alias = {
-    'a3':                                   'a3_AZ.KOI8-C',
-    'a3_az':                                'a3_AZ.KOI8-C',
-    'a3_az.koi8c':                          'a3_AZ.KOI8-C',
-    'af':                                   'af_ZA.ISO8859-1',
-    'af_za':                                'af_ZA.ISO8859-1',
-    'af_za.iso88591':                       'af_ZA.ISO8859-1',
-    'am':                                   'am_ET.UTF-8',
-    'am_et':                                'am_ET.UTF-8',
-    'american':                             'en_US.ISO8859-1',
-    'american.iso88591':                    'en_US.ISO8859-1',
-    'ar':                                   'ar_AA.ISO8859-6',
-    'ar_aa':                                'ar_AA.ISO8859-6',
-    'ar_aa.iso88596':                       'ar_AA.ISO8859-6',
-    'ar_ae':                                'ar_AE.ISO8859-6',
-    'ar_ae.iso88596':                       'ar_AE.ISO8859-6',
-    'ar_bh':                                'ar_BH.ISO8859-6',
-    'ar_bh.iso88596':                       'ar_BH.ISO8859-6',
-    'ar_dz':                                'ar_DZ.ISO8859-6',
-    'ar_dz.iso88596':                       'ar_DZ.ISO8859-6',
-    'ar_eg':                                'ar_EG.ISO8859-6',
-    'ar_eg.iso88596':                       'ar_EG.ISO8859-6',
-    'ar_iq':                                'ar_IQ.ISO8859-6',
-    'ar_iq.iso88596':                       'ar_IQ.ISO8859-6',
-    'ar_jo':                                'ar_JO.ISO8859-6',
-    'ar_jo.iso88596':                       'ar_JO.ISO8859-6',
-    'ar_kw':                                'ar_KW.ISO8859-6',
-    'ar_kw.iso88596':                       'ar_KW.ISO8859-6',
-    'ar_lb':                                'ar_LB.ISO8859-6',
-    'ar_lb.iso88596':                       'ar_LB.ISO8859-6',
-    'ar_ly':                                'ar_LY.ISO8859-6',
-    'ar_ly.iso88596':                       'ar_LY.ISO8859-6',
-    'ar_ma':                                'ar_MA.ISO8859-6',
-    'ar_ma.iso88596':                       'ar_MA.ISO8859-6',
-    'ar_om':                                'ar_OM.ISO8859-6',
-    'ar_om.iso88596':                       'ar_OM.ISO8859-6',
-    'ar_qa':                                'ar_QA.ISO8859-6',
-    'ar_qa.iso88596':                       'ar_QA.ISO8859-6',
-    'ar_sa':                                'ar_SA.ISO8859-6',
-    'ar_sa.iso88596':                       'ar_SA.ISO8859-6',
-    'ar_sd':                                'ar_SD.ISO8859-6',
-    'ar_sd.iso88596':                       'ar_SD.ISO8859-6',
-    'ar_sy':                                'ar_SY.ISO8859-6',
-    'ar_sy.iso88596':                       'ar_SY.ISO8859-6',
-    'ar_tn':                                'ar_TN.ISO8859-6',
-    'ar_tn.iso88596':                       'ar_TN.ISO8859-6',
-    'ar_ye':                                'ar_YE.ISO8859-6',
-    'ar_ye.iso88596':                       'ar_YE.ISO8859-6',
-    'arabic':                               'ar_AA.ISO8859-6',
-    'arabic.iso88596':                      'ar_AA.ISO8859-6',
-    'as':                                   'as_IN.UTF-8',
-    'az':                                   'az_AZ.ISO8859-9E',
-    'az_az':                                'az_AZ.ISO8859-9E',
-    'az_az.iso88599e':                      'az_AZ.ISO8859-9E',
-    'be':                                   'be_BY.CP1251',
-    'be@latin':                             'be_BY.UTF-8@latin',
-    'be_by':                                'be_BY.CP1251',
-    'be_by.cp1251':                         'be_BY.CP1251',
-    'be_by.microsoftcp1251':                'be_BY.CP1251',
-    'be_by.utf8@latin':                     'be_BY.UTF-8@latin',
-    'be_by@latin':                          'be_BY.UTF-8@latin',
-    'bg':                                   'bg_BG.CP1251',
-    'bg_bg':                                'bg_BG.CP1251',
-    'bg_bg.cp1251':                         'bg_BG.CP1251',
-    'bg_bg.iso88595':                       'bg_BG.ISO8859-5',
-    'bg_bg.koi8r':                          'bg_BG.KOI8-R',
-    'bg_bg.microsoftcp1251':                'bg_BG.CP1251',
-    'bn_in':                                'bn_IN.UTF-8',
-    'bokmal':                               'nb_NO.ISO8859-1',
-    'bokm\xe5l':                            'nb_NO.ISO8859-1',
-    'br':                                   'br_FR.ISO8859-1',
-    'br_fr':                                'br_FR.ISO8859-1',
-    'br_fr.iso88591':                       'br_FR.ISO8859-1',
-    'br_fr.iso885914':                      'br_FR.ISO8859-14',
-    'br_fr.iso885915':                      'br_FR.ISO8859-15',
-    'br_fr.iso885915@euro':                 'br_FR.ISO8859-15',
-    'br_fr.utf8@euro':                      'br_FR.UTF-8',
-    'br_fr@euro':                           'br_FR.ISO8859-15',
-    'bs':                                   'bs_BA.ISO8859-2',
-    'bs_ba':                                'bs_BA.ISO8859-2',
-    'bs_ba.iso88592':                       'bs_BA.ISO8859-2',
-    'bulgarian':                            'bg_BG.CP1251',
-    'c':                                    'C',
-    'c-french':                             'fr_CA.ISO8859-1',
-    'c-french.iso88591':                    'fr_CA.ISO8859-1',
-    'c.en':                                 'C',
-    'c.iso88591':                           'en_US.ISO8859-1',
-    'c_c':                                  'C',
-    'c_c.c':                                'C',
-    'ca':                                   'ca_ES.ISO8859-1',
-    'ca_ad':                                'ca_AD.ISO8859-1',
-    'ca_ad.iso88591':                       'ca_AD.ISO8859-1',
-    'ca_ad.iso885915':                      'ca_AD.ISO8859-15',
-    'ca_ad.iso885915@euro':                 'ca_AD.ISO8859-15',
-    'ca_ad.utf8@euro':                      'ca_AD.UTF-8',
-    'ca_ad@euro':                           'ca_AD.ISO8859-15',
-    'ca_es':                                'ca_ES.ISO8859-1',
-    'ca_es.iso88591':                       'ca_ES.ISO8859-1',
-    'ca_es.iso885915':                      'ca_ES.ISO8859-15',
-    'ca_es.iso885915@euro':                 'ca_ES.ISO8859-15',
-    'ca_es.utf8@euro':                      'ca_ES.UTF-8',
-    'ca_es@euro':                           'ca_ES.ISO8859-15',
-    'ca_fr':                                'ca_FR.ISO8859-1',
-    'ca_fr.iso88591':                       'ca_FR.ISO8859-1',
-    'ca_fr.iso885915':                      'ca_FR.ISO8859-15',
-    'ca_fr.iso885915@euro':                 'ca_FR.ISO8859-15',
-    'ca_fr.utf8@euro':                      'ca_FR.UTF-8',
-    'ca_fr@euro':                           'ca_FR.ISO8859-15',
-    'ca_it':                                'ca_IT.ISO8859-1',
-    'ca_it.iso88591':                       'ca_IT.ISO8859-1',
-    'ca_it.iso885915':                      'ca_IT.ISO8859-15',
-    'ca_it.iso885915@euro':                 'ca_IT.ISO8859-15',
-    'ca_it.utf8@euro':                      'ca_IT.UTF-8',
-    'ca_it@euro':                           'ca_IT.ISO8859-15',
-    'catalan':                              'ca_ES.ISO8859-1',
-    'cextend':                              'en_US.ISO8859-1',
-    'cextend.en':                           'en_US.ISO8859-1',
-    'chinese-s':                            'zh_CN.eucCN',
-    'chinese-t':                            'zh_TW.eucTW',
-    'croatian':                             'hr_HR.ISO8859-2',
-    'cs':                                   'cs_CZ.ISO8859-2',
-    'cs_cs':                                'cs_CZ.ISO8859-2',
-    'cs_cs.iso88592':                       'cs_CS.ISO8859-2',
-    'cs_cz':                                'cs_CZ.ISO8859-2',
-    'cs_cz.iso88592':                       'cs_CZ.ISO8859-2',
-    'cy':                                   'cy_GB.ISO8859-1',
-    'cy_gb':                                'cy_GB.ISO8859-1',
-    'cy_gb.iso88591':                       'cy_GB.ISO8859-1',
-    'cy_gb.iso885914':                      'cy_GB.ISO8859-14',
-    'cy_gb.iso885915':                      'cy_GB.ISO8859-15',
-    'cy_gb@euro':                           'cy_GB.ISO8859-15',
-    'cz':                                   'cs_CZ.ISO8859-2',
-    'cz_cz':                                'cs_CZ.ISO8859-2',
-    'czech':                                'cs_CZ.ISO8859-2',
-    'da':                                   'da_DK.ISO8859-1',
-    'da.iso885915':                         'da_DK.ISO8859-15',
-    'da_dk':                                'da_DK.ISO8859-1',
-    'da_dk.88591':                          'da_DK.ISO8859-1',
-    'da_dk.885915':                         'da_DK.ISO8859-15',
-    'da_dk.iso88591':                       'da_DK.ISO8859-1',
-    'da_dk.iso885915':                      'da_DK.ISO8859-15',
-    'da_dk@euro':                           'da_DK.ISO8859-15',
-    'danish':                               'da_DK.ISO8859-1',
-    'danish.iso88591':                      'da_DK.ISO8859-1',
-    'dansk':                                'da_DK.ISO8859-1',
-    'de':                                   'de_DE.ISO8859-1',
-    'de.iso885915':                         'de_DE.ISO8859-15',
-    'de_at':                                'de_AT.ISO8859-1',
-    'de_at.iso88591':                       'de_AT.ISO8859-1',
-    'de_at.iso885915':                      'de_AT.ISO8859-15',
-    'de_at.iso885915@euro':                 'de_AT.ISO8859-15',
-    'de_at.utf8@euro':                      'de_AT.UTF-8',
-    'de_at@euro':                           'de_AT.ISO8859-15',
-    'de_be':                                'de_BE.ISO8859-1',
-    'de_be.iso88591':                       'de_BE.ISO8859-1',
-    'de_be.iso885915':                      'de_BE.ISO8859-15',
-    'de_be.iso885915@euro':                 'de_BE.ISO8859-15',
-    'de_be.utf8@euro':                      'de_BE.UTF-8',
-    'de_be@euro':                           'de_BE.ISO8859-15',
-    'de_ch':                                'de_CH.ISO8859-1',
-    'de_ch.iso88591':                       'de_CH.ISO8859-1',
-    'de_ch.iso885915':                      'de_CH.ISO8859-15',
-    'de_ch@euro':                           'de_CH.ISO8859-15',
-    'de_de':                                'de_DE.ISO8859-1',
-    'de_de.88591':                          'de_DE.ISO8859-1',
-    'de_de.885915':                         'de_DE.ISO8859-15',
-    'de_de.885915@euro':                    'de_DE.ISO8859-15',
-    'de_de.iso88591':                       'de_DE.ISO8859-1',
-    'de_de.iso885915':                      'de_DE.ISO8859-15',
-    'de_de.iso885915@euro':                 'de_DE.ISO8859-15',
-    'de_de.utf8@euro':                      'de_DE.UTF-8',
-    'de_de@euro':                           'de_DE.ISO8859-15',
-    'de_lu':                                'de_LU.ISO8859-1',
-    'de_lu.iso88591':                       'de_LU.ISO8859-1',
-    'de_lu.iso885915':                      'de_LU.ISO8859-15',
-    'de_lu.iso885915@euro':                 'de_LU.ISO8859-15',
-    'de_lu.utf8@euro':                      'de_LU.UTF-8',
-    'de_lu@euro':                           'de_LU.ISO8859-15',
-    'deutsch':                              'de_DE.ISO8859-1',
-    'dutch':                                'nl_NL.ISO8859-1',
-    'dutch.iso88591':                       'nl_BE.ISO8859-1',
-    'ee':                                   'ee_EE.ISO8859-4',
-    'ee_ee':                                'ee_EE.ISO8859-4',
-    'ee_ee.iso88594':                       'ee_EE.ISO8859-4',
-    'eesti':                                'et_EE.ISO8859-1',
-    'el':                                   'el_GR.ISO8859-7',
-    'el_gr':                                'el_GR.ISO8859-7',
-    'el_gr.iso88597':                       'el_GR.ISO8859-7',
-    'el_gr@euro':                           'el_GR.ISO8859-15',
-    'en':                                   'en_US.ISO8859-1',
-    'en.iso88591':                          'en_US.ISO8859-1',
-    'en_au':                                'en_AU.ISO8859-1',
-    'en_au.iso88591':                       'en_AU.ISO8859-1',
-    'en_be':                                'en_BE.ISO8859-1',
-    'en_be@euro':                           'en_BE.ISO8859-15',
-    'en_bw':                                'en_BW.ISO8859-1',
-    'en_bw.iso88591':                       'en_BW.ISO8859-1',
-    'en_ca':                                'en_CA.ISO8859-1',
-    'en_ca.iso88591':                       'en_CA.ISO8859-1',
-    'en_gb':                                'en_GB.ISO8859-1',
-    'en_gb.88591':                          'en_GB.ISO8859-1',
-    'en_gb.iso88591':                       'en_GB.ISO8859-1',
-    'en_gb.iso885915':                      'en_GB.ISO8859-15',
-    'en_gb@euro':                           'en_GB.ISO8859-15',
-    'en_hk':                                'en_HK.ISO8859-1',
-    'en_hk.iso88591':                       'en_HK.ISO8859-1',
-    'en_ie':                                'en_IE.ISO8859-1',
-    'en_ie.iso88591':                       'en_IE.ISO8859-1',
-    'en_ie.iso885915':                      'en_IE.ISO8859-15',
-    'en_ie.iso885915@euro':                 'en_IE.ISO8859-15',
-    'en_ie.utf8@euro':                      'en_IE.UTF-8',
-    'en_ie@euro':                           'en_IE.ISO8859-15',
-    'en_in':                                'en_IN.ISO8859-1',
-    'en_nz':                                'en_NZ.ISO8859-1',
-    'en_nz.iso88591':                       'en_NZ.ISO8859-1',
-    'en_ph':                                'en_PH.ISO8859-1',
-    'en_ph.iso88591':                       'en_PH.ISO8859-1',
-    'en_sg':                                'en_SG.ISO8859-1',
-    'en_sg.iso88591':                       'en_SG.ISO8859-1',
-    'en_uk':                                'en_GB.ISO8859-1',
-    'en_us':                                'en_US.ISO8859-1',
-    'en_us.88591':                          'en_US.ISO8859-1',
-    'en_us.885915':                         'en_US.ISO8859-15',
-    'en_us.iso88591':                       'en_US.ISO8859-1',
-    'en_us.iso885915':                      'en_US.ISO8859-15',
-    'en_us.iso885915@euro':                 'en_US.ISO8859-15',
-    'en_us@euro':                           'en_US.ISO8859-15',
-    'en_us@euro@euro':                      'en_US.ISO8859-15',
-    'en_za':                                'en_ZA.ISO8859-1',
-    'en_za.88591':                          'en_ZA.ISO8859-1',
-    'en_za.iso88591':                       'en_ZA.ISO8859-1',
-    'en_za.iso885915':                      'en_ZA.ISO8859-15',
-    'en_za@euro':                           'en_ZA.ISO8859-15',
-    'en_zw':                                'en_ZW.ISO8859-1',
-    'en_zw.iso88591':                       'en_ZW.ISO8859-1',
-    'eng_gb':                               'en_GB.ISO8859-1',
-    'eng_gb.8859':                          'en_GB.ISO8859-1',
-    'english':                              'en_EN.ISO8859-1',
-    'english.iso88591':                     'en_EN.ISO8859-1',
-    'english_uk':                           'en_GB.ISO8859-1',
-    'english_uk.8859':                      'en_GB.ISO8859-1',
-    'english_united-states':                'en_US.ISO8859-1',
-    'english_united-states.437':            'C',
-    'english_us':                           'en_US.ISO8859-1',
-    'english_us.8859':                      'en_US.ISO8859-1',
-    'english_us.ascii':                     'en_US.ISO8859-1',
-    'eo':                                   'eo_XX.ISO8859-3',
-    'eo_eo':                                'eo_EO.ISO8859-3',
-    'eo_eo.iso88593':                       'eo_EO.ISO8859-3',
-    'eo_xx':                                'eo_XX.ISO8859-3',
-    'eo_xx.iso88593':                       'eo_XX.ISO8859-3',
-    'es':                                   'es_ES.ISO8859-1',
-    'es_ar':                                'es_AR.ISO8859-1',
-    'es_ar.iso88591':                       'es_AR.ISO8859-1',
-    'es_bo':                                'es_BO.ISO8859-1',
-    'es_bo.iso88591':                       'es_BO.ISO8859-1',
-    'es_cl':                                'es_CL.ISO8859-1',
-    'es_cl.iso88591':                       'es_CL.ISO8859-1',
-    'es_co':                                'es_CO.ISO8859-1',
-    'es_co.iso88591':                       'es_CO.ISO8859-1',
-    'es_cr':                                'es_CR.ISO8859-1',
-    'es_cr.iso88591':                       'es_CR.ISO8859-1',
-    'es_do':                                'es_DO.ISO8859-1',
-    'es_do.iso88591':                       'es_DO.ISO8859-1',
-    'es_ec':                                'es_EC.ISO8859-1',
-    'es_ec.iso88591':                       'es_EC.ISO8859-1',
-    'es_es':                                'es_ES.ISO8859-1',
-    'es_es.88591':                          'es_ES.ISO8859-1',
-    'es_es.iso88591':                       'es_ES.ISO8859-1',
-    'es_es.iso885915':                      'es_ES.ISO8859-15',
-    'es_es.iso885915@euro':                 'es_ES.ISO8859-15',
-    'es_es.utf8@euro':                      'es_ES.UTF-8',
-    'es_es@euro':                           'es_ES.ISO8859-15',
-    'es_gt':                                'es_GT.ISO8859-1',
-    'es_gt.iso88591':                       'es_GT.ISO8859-1',
-    'es_hn':                                'es_HN.ISO8859-1',
-    'es_hn.iso88591':                       'es_HN.ISO8859-1',
-    'es_mx':                                'es_MX.ISO8859-1',
-    'es_mx.iso88591':                       'es_MX.ISO8859-1',
-    'es_ni':                                'es_NI.ISO8859-1',
-    'es_ni.iso88591':                       'es_NI.ISO8859-1',
-    'es_pa':                                'es_PA.ISO8859-1',
-    'es_pa.iso88591':                       'es_PA.ISO8859-1',
-    'es_pa.iso885915':                      'es_PA.ISO8859-15',
-    'es_pa@euro':                           'es_PA.ISO8859-15',
-    'es_pe':                                'es_PE.ISO8859-1',
-    'es_pe.iso88591':                       'es_PE.ISO8859-1',
-    'es_pe.iso885915':                      'es_PE.ISO8859-15',
-    'es_pe@euro':                           'es_PE.ISO8859-15',
-    'es_pr':                                'es_PR.ISO8859-1',
-    'es_pr.iso88591':                       'es_PR.ISO8859-1',
-    'es_py':                                'es_PY.ISO8859-1',
-    'es_py.iso88591':                       'es_PY.ISO8859-1',
-    'es_py.iso885915':                      'es_PY.ISO8859-15',
-    'es_py@euro':                           'es_PY.ISO8859-15',
-    'es_sv':                                'es_SV.ISO8859-1',
-    'es_sv.iso88591':                       'es_SV.ISO8859-1',
-    'es_sv.iso885915':                      'es_SV.ISO8859-15',
-    'es_sv@euro':                           'es_SV.ISO8859-15',
-    'es_us':                                'es_US.ISO8859-1',
-    'es_us.iso88591':                       'es_US.ISO8859-1',
-    'es_uy':                                'es_UY.ISO8859-1',
-    'es_uy.iso88591':                       'es_UY.ISO8859-1',
-    'es_uy.iso885915':                      'es_UY.ISO8859-15',
-    'es_uy@euro':                           'es_UY.ISO8859-15',
-    'es_ve':                                'es_VE.ISO8859-1',
-    'es_ve.iso88591':                       'es_VE.ISO8859-1',
-    'es_ve.iso885915':                      'es_VE.ISO8859-15',
-    'es_ve@euro':                           'es_VE.ISO8859-15',
-    'estonian':                             'et_EE.ISO8859-1',
-    'et':                                   'et_EE.ISO8859-15',
-    'et_ee':                                'et_EE.ISO8859-15',
-    'et_ee.iso88591':                       'et_EE.ISO8859-1',
-    'et_ee.iso885913':                      'et_EE.ISO8859-13',
-    'et_ee.iso885915':                      'et_EE.ISO8859-15',
-    'et_ee.iso88594':                       'et_EE.ISO8859-4',
-    'et_ee@euro':                           'et_EE.ISO8859-15',
-    'eu':                                   'eu_ES.ISO8859-1',
-    'eu_es':                                'eu_ES.ISO8859-1',
-    'eu_es.iso88591':                       'eu_ES.ISO8859-1',
-    'eu_es.iso885915':                      'eu_ES.ISO8859-15',
-    'eu_es.iso885915@euro':                 'eu_ES.ISO8859-15',
-    'eu_es.utf8@euro':                      'eu_ES.UTF-8',
-    'eu_es@euro':                           'eu_ES.ISO8859-15',
-    'fa':                                   'fa_IR.UTF-8',
-    'fa_ir':                                'fa_IR.UTF-8',
-    'fa_ir.isiri3342':                      'fa_IR.ISIRI-3342',
-    'fi':                                   'fi_FI.ISO8859-15',
-    'fi.iso885915':                         'fi_FI.ISO8859-15',
-    'fi_fi':                                'fi_FI.ISO8859-15',
-    'fi_fi.88591':                          'fi_FI.ISO8859-1',
-    'fi_fi.iso88591':                       'fi_FI.ISO8859-1',
-    'fi_fi.iso885915':                      'fi_FI.ISO8859-15',
-    'fi_fi.iso885915@euro':                 'fi_FI.ISO8859-15',
-    'fi_fi.utf8@euro':                      'fi_FI.UTF-8',
-    'fi_fi@euro':                           'fi_FI.ISO8859-15',
-    'finnish':                              'fi_FI.ISO8859-1',
-    'finnish.iso88591':                     'fi_FI.ISO8859-1',
-    'fo':                                   'fo_FO.ISO8859-1',
-    'fo_fo':                                'fo_FO.ISO8859-1',
-    'fo_fo.iso88591':                       'fo_FO.ISO8859-1',
-    'fo_fo.iso885915':                      'fo_FO.ISO8859-15',
-    'fo_fo@euro':                           'fo_FO.ISO8859-15',
-    'fr':                                   'fr_FR.ISO8859-1',
-    'fr.iso885915':                         'fr_FR.ISO8859-15',
-    'fr_be':                                'fr_BE.ISO8859-1',
-    'fr_be.88591':                          'fr_BE.ISO8859-1',
-    'fr_be.iso88591':                       'fr_BE.ISO8859-1',
-    'fr_be.iso885915':                      'fr_BE.ISO8859-15',
-    'fr_be.iso885915@euro':                 'fr_BE.ISO8859-15',
-    'fr_be.utf8@euro':                      'fr_BE.UTF-8',
-    'fr_be@euro':                           'fr_BE.ISO8859-15',
-    'fr_ca':                                'fr_CA.ISO8859-1',
-    'fr_ca.88591':                          'fr_CA.ISO8859-1',
-    'fr_ca.iso88591':                       'fr_CA.ISO8859-1',
-    'fr_ca.iso885915':                      'fr_CA.ISO8859-15',
-    'fr_ca@euro':                           'fr_CA.ISO8859-15',
-    'fr_ch':                                'fr_CH.ISO8859-1',
-    'fr_ch.88591':                          'fr_CH.ISO8859-1',
-    'fr_ch.iso88591':                       'fr_CH.ISO8859-1',
-    'fr_ch.iso885915':                      'fr_CH.ISO8859-15',
-    'fr_ch@euro':                           'fr_CH.ISO8859-15',
-    'fr_fr':                                'fr_FR.ISO8859-1',
-    'fr_fr.88591':                          'fr_FR.ISO8859-1',
-    'fr_fr.iso88591':                       'fr_FR.ISO8859-1',
-    'fr_fr.iso885915':                      'fr_FR.ISO8859-15',
-    'fr_fr.iso885915@euro':                 'fr_FR.ISO8859-15',
-    'fr_fr.utf8@euro':                      'fr_FR.UTF-8',
-    'fr_fr@euro':                           'fr_FR.ISO8859-15',
-    'fr_lu':                                'fr_LU.ISO8859-1',
-    'fr_lu.88591':                          'fr_LU.ISO8859-1',
-    'fr_lu.iso88591':                       'fr_LU.ISO8859-1',
-    'fr_lu.iso885915':                      'fr_LU.ISO8859-15',
-    'fr_lu.iso885915@euro':                 'fr_LU.ISO8859-15',
-    'fr_lu.utf8@euro':                      'fr_LU.UTF-8',
-    'fr_lu@euro':                           'fr_LU.ISO8859-15',
-    'fran\xe7ais':                          'fr_FR.ISO8859-1',
-    'fre_fr':                               'fr_FR.ISO8859-1',
-    'fre_fr.8859':                          'fr_FR.ISO8859-1',
-    'french':                               'fr_FR.ISO8859-1',
-    'french.iso88591':                      'fr_CH.ISO8859-1',
-    'french_france':                        'fr_FR.ISO8859-1',
-    'french_france.8859':                   'fr_FR.ISO8859-1',
-    'ga':                                   'ga_IE.ISO8859-1',
-    'ga_ie':                                'ga_IE.ISO8859-1',
-    'ga_ie.iso88591':                       'ga_IE.ISO8859-1',
-    'ga_ie.iso885914':                      'ga_IE.ISO8859-14',
-    'ga_ie.iso885915':                      'ga_IE.ISO8859-15',
-    'ga_ie.iso885915@euro':                 'ga_IE.ISO8859-15',
-    'ga_ie.utf8@euro':                      'ga_IE.UTF-8',
-    'ga_ie@euro':                           'ga_IE.ISO8859-15',
-    'galego':                               'gl_ES.ISO8859-1',
-    'galician':                             'gl_ES.ISO8859-1',
-    'gd':                                   'gd_GB.ISO8859-1',
-    'gd_gb':                                'gd_GB.ISO8859-1',
-    'gd_gb.iso88591':                       'gd_GB.ISO8859-1',
-    'gd_gb.iso885914':                      'gd_GB.ISO8859-14',
-    'gd_gb.iso885915':                      'gd_GB.ISO8859-15',
-    'gd_gb@euro':                           'gd_GB.ISO8859-15',
-    'ger_de':                               'de_DE.ISO8859-1',
-    'ger_de.8859':                          'de_DE.ISO8859-1',
-    'german':                               'de_DE.ISO8859-1',
-    'german.iso88591':                      'de_CH.ISO8859-1',
-    'german_germany':                       'de_DE.ISO8859-1',
-    'german_germany.8859':                  'de_DE.ISO8859-1',
-    'gl':                                   'gl_ES.ISO8859-1',
-    'gl_es':                                'gl_ES.ISO8859-1',
-    'gl_es.iso88591':                       'gl_ES.ISO8859-1',
-    'gl_es.iso885915':                      'gl_ES.ISO8859-15',
-    'gl_es.iso885915@euro':                 'gl_ES.ISO8859-15',
-    'gl_es.utf8@euro':                      'gl_ES.UTF-8',
-    'gl_es@euro':                           'gl_ES.ISO8859-15',
-    'greek':                                'el_GR.ISO8859-7',
-    'greek.iso88597':                       'el_GR.ISO8859-7',
-    'gu_in':                                'gu_IN.UTF-8',
-    'gv':                                   'gv_GB.ISO8859-1',
-    'gv_gb':                                'gv_GB.ISO8859-1',
-    'gv_gb.iso88591':                       'gv_GB.ISO8859-1',
-    'gv_gb.iso885914':                      'gv_GB.ISO8859-14',
-    'gv_gb.iso885915':                      'gv_GB.ISO8859-15',
-    'gv_gb@euro':                           'gv_GB.ISO8859-15',
-    'he':                                   'he_IL.ISO8859-8',
-    'he_il':                                'he_IL.ISO8859-8',
-    'he_il.cp1255':                         'he_IL.CP1255',
-    'he_il.iso88598':                       'he_IL.ISO8859-8',
-    'he_il.microsoftcp1255':                'he_IL.CP1255',
-    'hebrew':                               'iw_IL.ISO8859-8',
-    'hebrew.iso88598':                      'iw_IL.ISO8859-8',
-    'hi':                                   'hi_IN.ISCII-DEV',
-    'hi_in':                                'hi_IN.ISCII-DEV',
-    'hi_in.isciidev':                       'hi_IN.ISCII-DEV',
-    'hne':                                  'hne_IN.UTF-8',
-    'hr':                                   'hr_HR.ISO8859-2',
-    'hr_hr':                                'hr_HR.ISO8859-2',
-    'hr_hr.iso88592':                       'hr_HR.ISO8859-2',
-    'hrvatski':                             'hr_HR.ISO8859-2',
-    'hu':                                   'hu_HU.ISO8859-2',
-    'hu_hu':                                'hu_HU.ISO8859-2',
-    'hu_hu.iso88592':                       'hu_HU.ISO8859-2',
-    'hungarian':                            'hu_HU.ISO8859-2',
-    'icelandic':                            'is_IS.ISO8859-1',
-    'icelandic.iso88591':                   'is_IS.ISO8859-1',
-    'id':                                   'id_ID.ISO8859-1',
-    'id_id':                                'id_ID.ISO8859-1',
-    'in':                                   'id_ID.ISO8859-1',
-    'in_id':                                'id_ID.ISO8859-1',
-    'is':                                   'is_IS.ISO8859-1',
-    'is_is':                                'is_IS.ISO8859-1',
-    'is_is.iso88591':                       'is_IS.ISO8859-1',
-    'is_is.iso885915':                      'is_IS.ISO8859-15',
-    'is_is@euro':                           'is_IS.ISO8859-15',
-    'iso-8859-1':                           'en_US.ISO8859-1',
-    'iso-8859-15':                          'en_US.ISO8859-15',
-    'iso8859-1':                            'en_US.ISO8859-1',
-    'iso8859-15':                           'en_US.ISO8859-15',
-    'iso_8859_1':                           'en_US.ISO8859-1',
-    'iso_8859_15':                          'en_US.ISO8859-15',
-    'it':                                   'it_IT.ISO8859-1',
-    'it.iso885915':                         'it_IT.ISO8859-15',
-    'it_ch':                                'it_CH.ISO8859-1',
-    'it_ch.iso88591':                       'it_CH.ISO8859-1',
-    'it_ch.iso885915':                      'it_CH.ISO8859-15',
-    'it_ch@euro':                           'it_CH.ISO8859-15',
-    'it_it':                                'it_IT.ISO8859-1',
-    'it_it.88591':                          'it_IT.ISO8859-1',
-    'it_it.iso88591':                       'it_IT.ISO8859-1',
-    'it_it.iso885915':                      'it_IT.ISO8859-15',
-    'it_it.iso885915@euro':                 'it_IT.ISO8859-15',
-    'it_it.utf8@euro':                      'it_IT.UTF-8',
-    'it_it@euro':                           'it_IT.ISO8859-15',
-    'italian':                              'it_IT.ISO8859-1',
-    'italian.iso88591':                     'it_IT.ISO8859-1',
-    'iu':                                   'iu_CA.NUNACOM-8',
-    'iu_ca':                                'iu_CA.NUNACOM-8',
-    'iu_ca.nunacom8':                       'iu_CA.NUNACOM-8',
-    'iw':                                   'he_IL.ISO8859-8',
-    'iw_il':                                'he_IL.ISO8859-8',
-    'iw_il.iso88598':                       'he_IL.ISO8859-8',
-    'ja':                                   'ja_JP.eucJP',
-    'ja.jis':                               'ja_JP.JIS7',
-    'ja.sjis':                              'ja_JP.SJIS',
-    'ja_jp':                                'ja_JP.eucJP',
-    'ja_jp.ajec':                           'ja_JP.eucJP',
-    'ja_jp.euc':                            'ja_JP.eucJP',
-    'ja_jp.eucjp':                          'ja_JP.eucJP',
-    'ja_jp.iso-2022-jp':                    'ja_JP.JIS7',
-    'ja_jp.iso2022jp':                      'ja_JP.JIS7',
-    'ja_jp.jis':                            'ja_JP.JIS7',
-    'ja_jp.jis7':                           'ja_JP.JIS7',
-    'ja_jp.mscode':                         'ja_JP.SJIS',
-    'ja_jp.pck':                            'ja_JP.SJIS',
-    'ja_jp.sjis':                           'ja_JP.SJIS',
-    'ja_jp.ujis':                           'ja_JP.eucJP',
-    'japan':                                'ja_JP.eucJP',
-    'japanese':                             'ja_JP.eucJP',
-    'japanese-euc':                         'ja_JP.eucJP',
-    'japanese.euc':                         'ja_JP.eucJP',
-    'japanese.sjis':                        'ja_JP.SJIS',
-    'jp_jp':                                'ja_JP.eucJP',
-    'ka':                                   'ka_GE.GEORGIAN-ACADEMY',
-    'ka_ge':                                'ka_GE.GEORGIAN-ACADEMY',
-    'ka_ge.georgianacademy':                'ka_GE.GEORGIAN-ACADEMY',
-    'ka_ge.georgianps':                     'ka_GE.GEORGIAN-PS',
-    'ka_ge.georgianrs':                     'ka_GE.GEORGIAN-ACADEMY',
-    'kl':                                   'kl_GL.ISO8859-1',
-    'kl_gl':                                'kl_GL.ISO8859-1',
-    'kl_gl.iso88591':                       'kl_GL.ISO8859-1',
-    'kl_gl.iso885915':                      'kl_GL.ISO8859-15',
-    'kl_gl@euro':                           'kl_GL.ISO8859-15',
-    'km_kh':                                'km_KH.UTF-8',
-    'kn':                                   'kn_IN.UTF-8',
-    'kn_in':                                'kn_IN.UTF-8',
-    'ko':                                   'ko_KR.eucKR',
-    'ko_kr':                                'ko_KR.eucKR',
-    'ko_kr.euc':                            'ko_KR.eucKR',
-    'ko_kr.euckr':                          'ko_KR.eucKR',
-    'korean':                               'ko_KR.eucKR',
-    'korean.euc':                           'ko_KR.eucKR',
-    'ks':                                   'ks_IN.UTF-8',
-    'ks_in@devanagari':                     'ks_IN@devanagari.UTF-8',
-    'kw':                                   'kw_GB.ISO8859-1',
-    'kw_gb':                                'kw_GB.ISO8859-1',
-    'kw_gb.iso88591':                       'kw_GB.ISO8859-1',
-    'kw_gb.iso885914':                      'kw_GB.ISO8859-14',
-    'kw_gb.iso885915':                      'kw_GB.ISO8859-15',
-    'kw_gb@euro':                           'kw_GB.ISO8859-15',
-    'ky':                                   'ky_KG.UTF-8',
-    'ky_kg':                                'ky_KG.UTF-8',
-    'lithuanian':                           'lt_LT.ISO8859-13',
-    'lo':                                   'lo_LA.MULELAO-1',
-    'lo_la':                                'lo_LA.MULELAO-1',
-    'lo_la.cp1133':                         'lo_LA.IBM-CP1133',
-    'lo_la.ibmcp1133':                      'lo_LA.IBM-CP1133',
-    'lo_la.mulelao1':                       'lo_LA.MULELAO-1',
-    'lt':                                   'lt_LT.ISO8859-13',
-    'lt_lt':                                'lt_LT.ISO8859-13',
-    'lt_lt.iso885913':                      'lt_LT.ISO8859-13',
-    'lt_lt.iso88594':                       'lt_LT.ISO8859-4',
-    'lv':                                   'lv_LV.ISO8859-13',
-    'lv_lv':                                'lv_LV.ISO8859-13',
-    'lv_lv.iso885913':                      'lv_LV.ISO8859-13',
-    'lv_lv.iso88594':                       'lv_LV.ISO8859-4',
-    'mai':                                  'mai_IN.UTF-8',
-    'mi':                                   'mi_NZ.ISO8859-1',
-    'mi_nz':                                'mi_NZ.ISO8859-1',
-    'mi_nz.iso88591':                       'mi_NZ.ISO8859-1',
-    'mk':                                   'mk_MK.ISO8859-5',
-    'mk_mk':                                'mk_MK.ISO8859-5',
-    'mk_mk.cp1251':                         'mk_MK.CP1251',
-    'mk_mk.iso88595':                       'mk_MK.ISO8859-5',
-    'mk_mk.microsoftcp1251':                'mk_MK.CP1251',
-    'ml':                                   'ml_IN.UTF-8',
-    'mr':                                   'mr_IN.UTF-8',
-    'mr_in':                                'mr_IN.UTF-8',
-    'ms':                                   'ms_MY.ISO8859-1',
-    'ms_my':                                'ms_MY.ISO8859-1',
-    'ms_my.iso88591':                       'ms_MY.ISO8859-1',
-    'mt':                                   'mt_MT.ISO8859-3',
-    'mt_mt':                                'mt_MT.ISO8859-3',
-    'mt_mt.iso88593':                       'mt_MT.ISO8859-3',
-    'nb':                                   'nb_NO.ISO8859-1',
-    'nb_no':                                'nb_NO.ISO8859-1',
-    'nb_no.88591':                          'nb_NO.ISO8859-1',
-    'nb_no.iso88591':                       'nb_NO.ISO8859-1',
-    'nb_no.iso885915':                      'nb_NO.ISO8859-15',
-    'nb_no@euro':                           'nb_NO.ISO8859-15',
-    'nl':                                   'nl_NL.ISO8859-1',
-    'nl.iso885915':                         'nl_NL.ISO8859-15',
-    'nl_be':                                'nl_BE.ISO8859-1',
-    'nl_be.88591':                          'nl_BE.ISO8859-1',
-    'nl_be.iso88591':                       'nl_BE.ISO8859-1',
-    'nl_be.iso885915':                      'nl_BE.ISO8859-15',
-    'nl_be.iso885915@euro':                 'nl_BE.ISO8859-15',
-    'nl_be.utf8@euro':                      'nl_BE.UTF-8',
-    'nl_be@euro':                           'nl_BE.ISO8859-15',
-    'nl_nl':                                'nl_NL.ISO8859-1',
-    'nl_nl.88591':                          'nl_NL.ISO8859-1',
-    'nl_nl.iso88591':                       'nl_NL.ISO8859-1',
-    'nl_nl.iso885915':                      'nl_NL.ISO8859-15',
-    'nl_nl.iso885915@euro':                 'nl_NL.ISO8859-15',
-    'nl_nl.utf8@euro':                      'nl_NL.UTF-8',
-    'nl_nl@euro':                           'nl_NL.ISO8859-15',
-    'nn':                                   'nn_NO.ISO8859-1',
-    'nn_no':                                'nn_NO.ISO8859-1',
-    'nn_no.88591':                          'nn_NO.ISO8859-1',
-    'nn_no.iso88591':                       'nn_NO.ISO8859-1',
-    'nn_no.iso885915':                      'nn_NO.ISO8859-15',
-    'nn_no@euro':                           'nn_NO.ISO8859-15',
-    'no':                                   'no_NO.ISO8859-1',
-    'no@nynorsk':                           'ny_NO.ISO8859-1',
-    'no_no':                                'no_NO.ISO8859-1',
-    'no_no.88591':                          'no_NO.ISO8859-1',
-    'no_no.iso88591':                       'no_NO.ISO8859-1',
-    'no_no.iso885915':                      'no_NO.ISO8859-15',
-    'no_no.iso88591@bokmal':                'no_NO.ISO8859-1',
-    'no_no.iso88591@nynorsk':               'no_NO.ISO8859-1',
-    'no_no@euro':                           'no_NO.ISO8859-15',
-    'norwegian':                            'no_NO.ISO8859-1',
-    'norwegian.iso88591':                   'no_NO.ISO8859-1',
-    'nr':                                   'nr_ZA.ISO8859-1',
-    'nr_za':                                'nr_ZA.ISO8859-1',
-    'nr_za.iso88591':                       'nr_ZA.ISO8859-1',
-    'nso':                                  'nso_ZA.ISO8859-15',
-    'nso_za':                               'nso_ZA.ISO8859-15',
-    'nso_za.iso885915':                     'nso_ZA.ISO8859-15',
-    'ny':                                   'ny_NO.ISO8859-1',
-    'ny_no':                                'ny_NO.ISO8859-1',
-    'ny_no.88591':                          'ny_NO.ISO8859-1',
-    'ny_no.iso88591':                       'ny_NO.ISO8859-1',
-    'ny_no.iso885915':                      'ny_NO.ISO8859-15',
-    'ny_no@euro':                           'ny_NO.ISO8859-15',
-    'nynorsk':                              'nn_NO.ISO8859-1',
-    'oc':                                   'oc_FR.ISO8859-1',
-    'oc_fr':                                'oc_FR.ISO8859-1',
-    'oc_fr.iso88591':                       'oc_FR.ISO8859-1',
-    'oc_fr.iso885915':                      'oc_FR.ISO8859-15',
-    'oc_fr@euro':                           'oc_FR.ISO8859-15',
-    'or':                                   'or_IN.UTF-8',
-    'pa':                                   'pa_IN.UTF-8',
-    'pa_in':                                'pa_IN.UTF-8',
-    'pd':                                   'pd_US.ISO8859-1',
-    'pd_de':                                'pd_DE.ISO8859-1',
-    'pd_de.iso88591':                       'pd_DE.ISO8859-1',
-    'pd_de.iso885915':                      'pd_DE.ISO8859-15',
-    'pd_de@euro':                           'pd_DE.ISO8859-15',
-    'pd_us':                                'pd_US.ISO8859-1',
-    'pd_us.iso88591':                       'pd_US.ISO8859-1',
-    'pd_us.iso885915':                      'pd_US.ISO8859-15',
-    'pd_us@euro':                           'pd_US.ISO8859-15',
-    'ph':                                   'ph_PH.ISO8859-1',
-    'ph_ph':                                'ph_PH.ISO8859-1',
-    'ph_ph.iso88591':                       'ph_PH.ISO8859-1',
-    'pl':                                   'pl_PL.ISO8859-2',
-    'pl_pl':                                'pl_PL.ISO8859-2',
-    'pl_pl.iso88592':                       'pl_PL.ISO8859-2',
-    'polish':                               'pl_PL.ISO8859-2',
-    'portuguese':                           'pt_PT.ISO8859-1',
-    'portuguese.iso88591':                  'pt_PT.ISO8859-1',
-    'portuguese_brazil':                    'pt_BR.ISO8859-1',
-    'portuguese_brazil.8859':               'pt_BR.ISO8859-1',
-    'posix':                                'C',
-    'posix-utf2':                           'C',
-    'pp':                                   'pp_AN.ISO8859-1',
-    'pp_an':                                'pp_AN.ISO8859-1',
-    'pp_an.iso88591':                       'pp_AN.ISO8859-1',
-    'pt':                                   'pt_PT.ISO8859-1',
-    'pt.iso885915':                         'pt_PT.ISO8859-15',
-    'pt_br':                                'pt_BR.ISO8859-1',
-    'pt_br.88591':                          'pt_BR.ISO8859-1',
-    'pt_br.iso88591':                       'pt_BR.ISO8859-1',
-    'pt_br.iso885915':                      'pt_BR.ISO8859-15',
-    'pt_br@euro':                           'pt_BR.ISO8859-15',
-    'pt_pt':                                'pt_PT.ISO8859-1',
-    'pt_pt.88591':                          'pt_PT.ISO8859-1',
-    'pt_pt.iso88591':                       'pt_PT.ISO8859-1',
-    'pt_pt.iso885915':                      'pt_PT.ISO8859-15',
-    'pt_pt.iso885915@euro':                 'pt_PT.ISO8859-15',
-    'pt_pt.utf8@euro':                      'pt_PT.UTF-8',
-    'pt_pt@euro':                           'pt_PT.ISO8859-15',
-    'ro':                                   'ro_RO.ISO8859-2',
-    'ro_ro':                                'ro_RO.ISO8859-2',
-    'ro_ro.iso88592':                       'ro_RO.ISO8859-2',
-    'romanian':                             'ro_RO.ISO8859-2',
-    'ru':                                   'ru_RU.UTF-8',
-    'ru.koi8r':                             'ru_RU.KOI8-R',
-    'ru_ru':                                'ru_RU.UTF-8',
-    'ru_ru.cp1251':                         'ru_RU.CP1251',
-    'ru_ru.iso88595':                       'ru_RU.ISO8859-5',
-    'ru_ru.koi8r':                          'ru_RU.KOI8-R',
-    'ru_ru.microsoftcp1251':                'ru_RU.CP1251',
-    'ru_ua':                                'ru_UA.KOI8-U',
-    'ru_ua.cp1251':                         'ru_UA.CP1251',
-    'ru_ua.koi8u':                          'ru_UA.KOI8-U',
-    'ru_ua.microsoftcp1251':                'ru_UA.CP1251',
-    'rumanian':                             'ro_RO.ISO8859-2',
-    'russian':                              'ru_RU.ISO8859-5',
-    'rw':                                   'rw_RW.ISO8859-1',
-    'rw_rw':                                'rw_RW.ISO8859-1',
-    'rw_rw.iso88591':                       'rw_RW.ISO8859-1',
-    'sd':                                   'sd_IN@devanagari.UTF-8',
-    'se_no':                                'se_NO.UTF-8',
-    'serbocroatian':                        'sr_RS.UTF-8@latin',
-    'sh':                                   'sr_RS.UTF-8@latin',
-    'sh_ba.iso88592@bosnia':                'sr_CS.ISO8859-2',
-    'sh_hr':                                'sh_HR.ISO8859-2',
-    'sh_hr.iso88592':                       'hr_HR.ISO8859-2',
-    'sh_sp':                                'sr_CS.ISO8859-2',
-    'sh_yu':                                'sr_RS.UTF-8@latin',
-    'si':                                   'si_LK.UTF-8',
-    'si_lk':                                'si_LK.UTF-8',
-    'sinhala':                              'si_LK.UTF-8',
-    'sk':                                   'sk_SK.ISO8859-2',
-    'sk_sk':                                'sk_SK.ISO8859-2',
-    'sk_sk.iso88592':                       'sk_SK.ISO8859-2',
-    'sl':                                   'sl_SI.ISO8859-2',
-    'sl_cs':                                'sl_CS.ISO8859-2',
-    'sl_si':                                'sl_SI.ISO8859-2',
-    'sl_si.iso88592':                       'sl_SI.ISO8859-2',
-    'slovak':                               'sk_SK.ISO8859-2',
-    'slovene':                              'sl_SI.ISO8859-2',
-    'slovenian':                            'sl_SI.ISO8859-2',
-    'sp':                                   'sr_CS.ISO8859-5',
-    'sp_yu':                                'sr_CS.ISO8859-5',
-    'spanish':                              'es_ES.ISO8859-1',
-    'spanish.iso88591':                     'es_ES.ISO8859-1',
-    'spanish_spain':                        'es_ES.ISO8859-1',
-    'spanish_spain.8859':                   'es_ES.ISO8859-1',
-    'sq':                                   'sq_AL.ISO8859-2',
-    'sq_al':                                'sq_AL.ISO8859-2',
-    'sq_al.iso88592':                       'sq_AL.ISO8859-2',
-    'sr':                                   'sr_RS.UTF-8',
-    'sr@cyrillic':                          'sr_RS.UTF-8',
-    'sr@latin':                             'sr_RS.UTF-8@latin',
-    'sr@latn':                              'sr_RS.UTF-8@latin',
-    'sr_cs':                                'sr_RS.UTF-8',
-    'sr_cs.iso88592':                       'sr_CS.ISO8859-2',
-    'sr_cs.iso88592@latn':                  'sr_CS.ISO8859-2',
-    'sr_cs.iso88595':                       'sr_CS.ISO8859-5',
-    'sr_cs.utf8@latn':                      'sr_RS.UTF-8@latin',
-    'sr_cs@latn':                           'sr_RS.UTF-8@latin',
-    'sr_me':                                'sr_ME.UTF-8',
-    'sr_rs':                                'sr_RS.UTF-8',
-    'sr_rs.utf8@latn':                      'sr_RS.UTF-8@latin',
-    'sr_rs@latin':                          'sr_RS.UTF-8@latin',
-    'sr_rs@latn':                           'sr_RS.UTF-8@latin',
-    'sr_sp':                                'sr_CS.ISO8859-2',
-    'sr_yu':                                'sr_RS.UTF-8@latin',
-    'sr_yu.cp1251@cyrillic':                'sr_CS.CP1251',
-    'sr_yu.iso88592':                       'sr_CS.ISO8859-2',
-    'sr_yu.iso88595':                       'sr_CS.ISO8859-5',
-    'sr_yu.iso88595@cyrillic':              'sr_CS.ISO8859-5',
-    'sr_yu.microsoftcp1251@cyrillic':       'sr_CS.CP1251',
-    'sr_yu.utf8@cyrillic':                  'sr_RS.UTF-8',
-    'sr_yu@cyrillic':                       'sr_RS.UTF-8',
-    'ss':                                   'ss_ZA.ISO8859-1',
-    'ss_za':                                'ss_ZA.ISO8859-1',
-    'ss_za.iso88591':                       'ss_ZA.ISO8859-1',
-    'st':                                   'st_ZA.ISO8859-1',
-    'st_za':                                'st_ZA.ISO8859-1',
-    'st_za.iso88591':                       'st_ZA.ISO8859-1',
-    'sv':                                   'sv_SE.ISO8859-1',
-    'sv.iso885915':                         'sv_SE.ISO8859-15',
-    'sv_fi':                                'sv_FI.ISO8859-1',
-    'sv_fi.iso88591':                       'sv_FI.ISO8859-1',
-    'sv_fi.iso885915':                      'sv_FI.ISO8859-15',
-    'sv_fi.iso885915@euro':                 'sv_FI.ISO8859-15',
-    'sv_fi.utf8@euro':                      'sv_FI.UTF-8',
-    'sv_fi@euro':                           'sv_FI.ISO8859-15',
-    'sv_se':                                'sv_SE.ISO8859-1',
-    'sv_se.88591':                          'sv_SE.ISO8859-1',
-    'sv_se.iso88591':                       'sv_SE.ISO8859-1',
-    'sv_se.iso885915':                      'sv_SE.ISO8859-15',
-    'sv_se@euro':                           'sv_SE.ISO8859-15',
-    'swedish':                              'sv_SE.ISO8859-1',
-    'swedish.iso88591':                     'sv_SE.ISO8859-1',
-    'ta':                                   'ta_IN.TSCII-0',
-    'ta_in':                                'ta_IN.TSCII-0',
-    'ta_in.tscii':                          'ta_IN.TSCII-0',
-    'ta_in.tscii0':                         'ta_IN.TSCII-0',
-    'te':                                   'te_IN.UTF-8',
-    'tg':                                   'tg_TJ.KOI8-C',
-    'tg_tj':                                'tg_TJ.KOI8-C',
-    'tg_tj.koi8c':                          'tg_TJ.KOI8-C',
-    'th':                                   'th_TH.ISO8859-11',
-    'th_th':                                'th_TH.ISO8859-11',
-    'th_th.iso885911':                      'th_TH.ISO8859-11',
-    'th_th.tactis':                         'th_TH.TIS620',
-    'th_th.tis620':                         'th_TH.TIS620',
-    'thai':                                 'th_TH.ISO8859-11',
-    'tl':                                   'tl_PH.ISO8859-1',
-    'tl_ph':                                'tl_PH.ISO8859-1',
-    'tl_ph.iso88591':                       'tl_PH.ISO8859-1',
-    'tn':                                   'tn_ZA.ISO8859-15',
-    'tn_za':                                'tn_ZA.ISO8859-15',
-    'tn_za.iso885915':                      'tn_ZA.ISO8859-15',
-    'tr':                                   'tr_TR.ISO8859-9',
-    'tr_tr':                                'tr_TR.ISO8859-9',
-    'tr_tr.iso88599':                       'tr_TR.ISO8859-9',
-    'ts':                                   'ts_ZA.ISO8859-1',
-    'ts_za':                                'ts_ZA.ISO8859-1',
-    'ts_za.iso88591':                       'ts_ZA.ISO8859-1',
-    'tt':                                   'tt_RU.TATAR-CYR',
-    'tt_ru':                                'tt_RU.TATAR-CYR',
-    'tt_ru.koi8c':                          'tt_RU.KOI8-C',
-    'tt_ru.tatarcyr':                       'tt_RU.TATAR-CYR',
-    'turkish':                              'tr_TR.ISO8859-9',
-    'turkish.iso88599':                     'tr_TR.ISO8859-9',
-    'uk':                                   'uk_UA.KOI8-U',
-    'uk_ua':                                'uk_UA.KOI8-U',
-    'uk_ua.cp1251':                         'uk_UA.CP1251',
-    'uk_ua.iso88595':                       'uk_UA.ISO8859-5',
-    'uk_ua.koi8u':                          'uk_UA.KOI8-U',
-    'uk_ua.microsoftcp1251':                'uk_UA.CP1251',
-    'univ':                                 'en_US.utf',
-    'universal':                            'en_US.utf',
-    'universal.utf8@ucs4':                  'en_US.UTF-8',
-    'ur':                                   'ur_PK.CP1256',
-    'ur_pk':                                'ur_PK.CP1256',
-    'ur_pk.cp1256':                         'ur_PK.CP1256',
-    'ur_pk.microsoftcp1256':                'ur_PK.CP1256',
-    'uz':                                   'uz_UZ.UTF-8',
-    'uz_uz':                                'uz_UZ.UTF-8',
-    'uz_uz.iso88591':                       'uz_UZ.ISO8859-1',
-    'uz_uz.utf8@cyrillic':                  'uz_UZ.UTF-8',
-    'uz_uz@cyrillic':                       'uz_UZ.UTF-8',
-    've':                                   've_ZA.UTF-8',
-    've_za':                                've_ZA.UTF-8',
-    'vi':                                   'vi_VN.TCVN',
-    'vi_vn':                                'vi_VN.TCVN',
-    'vi_vn.tcvn':                           'vi_VN.TCVN',
-    'vi_vn.tcvn5712':                       'vi_VN.TCVN',
-    'vi_vn.viscii':                         'vi_VN.VISCII',
-    'vi_vn.viscii111':                      'vi_VN.VISCII',
-    'wa':                                   'wa_BE.ISO8859-1',
-    'wa_be':                                'wa_BE.ISO8859-1',
-    'wa_be.iso88591':                       'wa_BE.ISO8859-1',
-    'wa_be.iso885915':                      'wa_BE.ISO8859-15',
-    'wa_be.iso885915@euro':                 'wa_BE.ISO8859-15',
-    'wa_be@euro':                           'wa_BE.ISO8859-15',
-    'xh':                                   'xh_ZA.ISO8859-1',
-    'xh_za':                                'xh_ZA.ISO8859-1',
-    'xh_za.iso88591':                       'xh_ZA.ISO8859-1',
-    'yi':                                   'yi_US.CP1255',
-    'yi_us':                                'yi_US.CP1255',
-    'yi_us.cp1255':                         'yi_US.CP1255',
-    'yi_us.microsoftcp1255':                'yi_US.CP1255',
-    'zh':                                   'zh_CN.eucCN',
-    'zh_cn':                                'zh_CN.gb2312',
-    'zh_cn.big5':                           'zh_TW.big5',
-    'zh_cn.euc':                            'zh_CN.eucCN',
-    'zh_cn.gb18030':                        'zh_CN.gb18030',
-    'zh_cn.gb2312':                         'zh_CN.gb2312',
-    'zh_cn.gbk':                            'zh_CN.gbk',
-    'zh_hk':                                'zh_HK.big5hkscs',
-    'zh_hk.big5':                           'zh_HK.big5',
-    'zh_hk.big5hk':                         'zh_HK.big5hkscs',
-    'zh_hk.big5hkscs':                      'zh_HK.big5hkscs',
-    'zh_tw':                                'zh_TW.big5',
-    'zh_tw.big5':                           'zh_TW.big5',
-    'zh_tw.euc':                            'zh_TW.eucTW',
-    'zh_tw.euctw':                          'zh_TW.eucTW',
-    'zu':                                   'zu_ZA.ISO8859-1',
-    'zu_za':                                'zu_ZA.ISO8859-1',
-    'zu_za.iso88591':                       'zu_ZA.ISO8859-1',
-}
-
-#
-# This maps Windows language identifiers to locale strings.
-#
-# This list has been updated from
-# http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_238z.asp
-# to include every locale up to Windows Vista.
-#
-# NOTE: this mapping is incomplete.  If your language is missing, please
-# submit a bug report to Python bug manager, which you can find via:
-#     http://www.python.org/dev/
-# Make sure you include the missing language identifier and the suggested
-# locale code.
-#
-
-windows_locale = {
-    0x0436: "af_ZA", # Afrikaans
-    0x041c: "sq_AL", # Albanian
-    0x0484: "gsw_FR",# Alsatian - France
-    0x045e: "am_ET", # Amharic - Ethiopia
-    0x0401: "ar_SA", # Arabic - Saudi Arabia
-    0x0801: "ar_IQ", # Arabic - Iraq
-    0x0c01: "ar_EG", # Arabic - Egypt
-    0x1001: "ar_LY", # Arabic - Libya
-    0x1401: "ar_DZ", # Arabic - Algeria
-    0x1801: "ar_MA", # Arabic - Morocco
-    0x1c01: "ar_TN", # Arabic - Tunisia
-    0x2001: "ar_OM", # Arabic - Oman
-    0x2401: "ar_YE", # Arabic - Yemen
-    0x2801: "ar_SY", # Arabic - Syria
-    0x2c01: "ar_JO", # Arabic - Jordan
-    0x3001: "ar_LB", # Arabic - Lebanon
-    0x3401: "ar_KW", # Arabic - Kuwait
-    0x3801: "ar_AE", # Arabic - United Arab Emirates
-    0x3c01: "ar_BH", # Arabic - Bahrain
-    0x4001: "ar_QA", # Arabic - Qatar
-    0x042b: "hy_AM", # Armenian
-    0x044d: "as_IN", # Assamese - India
-    0x042c: "az_AZ", # Azeri - Latin
-    0x082c: "az_AZ", # Azeri - Cyrillic
-    0x046d: "ba_RU", # Bashkir
-    0x042d: "eu_ES", # Basque - Russia
-    0x0423: "be_BY", # Belarusian
-    0x0445: "bn_IN", # Begali
-    0x201a: "bs_BA", # Bosnian - Cyrillic
-    0x141a: "bs_BA", # Bosnian - Latin
-    0x047e: "br_FR", # Breton - France
-    0x0402: "bg_BG", # Bulgarian
-#    0x0455: "my_MM", # Burmese - Not supported
-    0x0403: "ca_ES", # Catalan
-    0x0004: "zh_CHS",# Chinese - Simplified
-    0x0404: "zh_TW", # Chinese - Taiwan
-    0x0804: "zh_CN", # Chinese - PRC
-    0x0c04: "zh_HK", # Chinese - Hong Kong S.A.R.
-    0x1004: "zh_SG", # Chinese - Singapore
-    0x1404: "zh_MO", # Chinese - Macao S.A.R.
-    0x7c04: "zh_CHT",# Chinese - Traditional
-    0x0483: "co_FR", # Corsican - France
-    0x041a: "hr_HR", # Croatian
-    0x101a: "hr_BA", # Croatian - Bosnia
-    0x0405: "cs_CZ", # Czech
-    0x0406: "da_DK", # Danish
-    0x048c: "gbz_AF",# Dari - Afghanistan
-    0x0465: "div_MV",# Divehi - Maldives
-    0x0413: "nl_NL", # Dutch - The Netherlands
-    0x0813: "nl_BE", # Dutch - Belgium
-    0x0409: "en_US", # English - United States
-    0x0809: "en_GB", # English - United Kingdom
-    0x0c09: "en_AU", # English - Australia
-    0x1009: "en_CA", # English - Canada
-    0x1409: "en_NZ", # English - New Zealand
-    0x1809: "en_IE", # English - Ireland
-    0x1c09: "en_ZA", # English - South Africa
-    0x2009: "en_JA", # English - Jamaica
-    0x2409: "en_CB", # English - Carribbean
-    0x2809: "en_BZ", # English - Belize
-    0x2c09: "en_TT", # English - Trinidad
-    0x3009: "en_ZW", # English - Zimbabwe
-    0x3409: "en_PH", # English - Philippines
-    0x4009: "en_IN", # English - India
-    0x4409: "en_MY", # English - Malaysia
-    0x4809: "en_IN", # English - Singapore
-    0x0425: "et_EE", # Estonian
-    0x0438: "fo_FO", # Faroese
-    0x0464: "fil_PH",# Filipino
-    0x040b: "fi_FI", # Finnish
-    0x040c: "fr_FR", # French - France
-    0x080c: "fr_BE", # French - Belgium
-    0x0c0c: "fr_CA", # French - Canada
-    0x100c: "fr_CH", # French - Switzerland
-    0x140c: "fr_LU", # French - Luxembourg
-    0x180c: "fr_MC", # French - Monaco
-    0x0462: "fy_NL", # Frisian - Netherlands
-    0x0456: "gl_ES", # Galician
-    0x0437: "ka_GE", # Georgian
-    0x0407: "de_DE", # German - Germany
-    0x0807: "de_CH", # German - Switzerland
-    0x0c07: "de_AT", # German - Austria
-    0x1007: "de_LU", # German - Luxembourg
-    0x1407: "de_LI", # German - Liechtenstein
-    0x0408: "el_GR", # Greek
-    0x046f: "kl_GL", # Greenlandic - Greenland
-    0x0447: "gu_IN", # Gujarati
-    0x0468: "ha_NG", # Hausa - Latin
-    0x040d: "he_IL", # Hebrew
-    0x0439: "hi_IN", # Hindi
-    0x040e: "hu_HU", # Hungarian
-    0x040f: "is_IS", # Icelandic
-    0x0421: "id_ID", # Indonesian
-    0x045d: "iu_CA", # Inuktitut - Syllabics
-    0x085d: "iu_CA", # Inuktitut - Latin
-    0x083c: "ga_IE", # Irish - Ireland
-    0x0410: "it_IT", # Italian - Italy
-    0x0810: "it_CH", # Italian - Switzerland
-    0x0411: "ja_JP", # Japanese
-    0x044b: "kn_IN", # Kannada - India
-    0x043f: "kk_KZ", # Kazakh
-    0x0453: "kh_KH", # Khmer - Cambodia
-    0x0486: "qut_GT",# K'iche - Guatemala
-    0x0487: "rw_RW", # Kinyarwanda - Rwanda
-    0x0457: "kok_IN",# Konkani
-    0x0412: "ko_KR", # Korean
-    0x0440: "ky_KG", # Kyrgyz
-    0x0454: "lo_LA", # Lao - Lao PDR
-    0x0426: "lv_LV", # Latvian
-    0x0427: "lt_LT", # Lithuanian
-    0x082e: "dsb_DE",# Lower Sorbian - Germany
-    0x046e: "lb_LU", # Luxembourgish
-    0x042f: "mk_MK", # FYROM Macedonian
-    0x043e: "ms_MY", # Malay - Malaysia
-    0x083e: "ms_BN", # Malay - Brunei Darussalam
-    0x044c: "ml_IN", # Malayalam - India
-    0x043a: "mt_MT", # Maltese
-    0x0481: "mi_NZ", # Maori
-    0x047a: "arn_CL",# Mapudungun
-    0x044e: "mr_IN", # Marathi
-    0x047c: "moh_CA",# Mohawk - Canada
-    0x0450: "mn_MN", # Mongolian - Cyrillic
-    0x0850: "mn_CN", # Mongolian - PRC
-    0x0461: "ne_NP", # Nepali
-    0x0414: "nb_NO", # Norwegian - Bokmal
-    0x0814: "nn_NO", # Norwegian - Nynorsk
-    0x0482: "oc_FR", # Occitan - France
-    0x0448: "or_IN", # Oriya - India
-    0x0463: "ps_AF", # Pashto - Afghanistan
-    0x0429: "fa_IR", # Persian
-    0x0415: "pl_PL", # Polish
-    0x0416: "pt_BR", # Portuguese - Brazil
-    0x0816: "pt_PT", # Portuguese - Portugal
-    0x0446: "pa_IN", # Punjabi
-    0x046b: "quz_BO",# Quechua (Bolivia)
-    0x086b: "quz_EC",# Quechua (Ecuador)
-    0x0c6b: "quz_PE",# Quechua (Peru)
-    0x0418: "ro_RO", # Romanian - Romania
-    0x0417: "rm_CH", # Romansh
-    0x0419: "ru_RU", # Russian
-    0x243b: "smn_FI",# Sami Finland
-    0x103b: "smj_NO",# Sami Norway
-    0x143b: "smj_SE",# Sami Sweden
-    0x043b: "se_NO", # Sami Northern Norway
-    0x083b: "se_SE", # Sami Northern Sweden
-    0x0c3b: "se_FI", # Sami Northern Finland
-    0x203b: "sms_FI",# Sami Skolt
-    0x183b: "sma_NO",# Sami Southern Norway
-    0x1c3b: "sma_SE",# Sami Southern Sweden
-    0x044f: "sa_IN", # Sanskrit
-    0x0c1a: "sr_SP", # Serbian - Cyrillic
-    0x1c1a: "sr_BA", # Serbian - Bosnia Cyrillic
-    0x081a: "sr_SP", # Serbian - Latin
-    0x181a: "sr_BA", # Serbian - Bosnia Latin
-    0x045b: "si_LK", # Sinhala - Sri Lanka
-    0x046c: "ns_ZA", # Northern Sotho
-    0x0432: "tn_ZA", # Setswana - Southern Africa
-    0x041b: "sk_SK", # Slovak
-    0x0424: "sl_SI", # Slovenian
-    0x040a: "es_ES", # Spanish - Spain
-    0x080a: "es_MX", # Spanish - Mexico
-    0x0c0a: "es_ES", # Spanish - Spain (Modern)
-    0x100a: "es_GT", # Spanish - Guatemala
-    0x140a: "es_CR", # Spanish - Costa Rica
-    0x180a: "es_PA", # Spanish - Panama
-    0x1c0a: "es_DO", # Spanish - Dominican Republic
-    0x200a: "es_VE", # Spanish - Venezuela
-    0x240a: "es_CO", # Spanish - Colombia
-    0x280a: "es_PE", # Spanish - Peru
-    0x2c0a: "es_AR", # Spanish - Argentina
-    0x300a: "es_EC", # Spanish - Ecuador
-    0x340a: "es_CL", # Spanish - Chile
-    0x380a: "es_UR", # Spanish - Uruguay
-    0x3c0a: "es_PY", # Spanish - Paraguay
-    0x400a: "es_BO", # Spanish - Bolivia
-    0x440a: "es_SV", # Spanish - El Salvador
-    0x480a: "es_HN", # Spanish - Honduras
-    0x4c0a: "es_NI", # Spanish - Nicaragua
-    0x500a: "es_PR", # Spanish - Puerto Rico
-    0x540a: "es_US", # Spanish - United States
-#    0x0430: "", # Sutu - Not supported
-    0x0441: "sw_KE", # Swahili
-    0x041d: "sv_SE", # Swedish - Sweden
-    0x081d: "sv_FI", # Swedish - Finland
-    0x045a: "syr_SY",# Syriac
-    0x0428: "tg_TJ", # Tajik - Cyrillic
-    0x085f: "tmz_DZ",# Tamazight - Latin
-    0x0449: "ta_IN", # Tamil
-    0x0444: "tt_RU", # Tatar
-    0x044a: "te_IN", # Telugu
-    0x041e: "th_TH", # Thai
-    0x0851: "bo_BT", # Tibetan - Bhutan
-    0x0451: "bo_CN", # Tibetan - PRC
-    0x041f: "tr_TR", # Turkish
-    0x0442: "tk_TM", # Turkmen - Cyrillic
-    0x0480: "ug_CN", # Uighur - Arabic
-    0x0422: "uk_UA", # Ukrainian
-    0x042e: "wen_DE",# Upper Sorbian - Germany
-    0x0420: "ur_PK", # Urdu
-    0x0820: "ur_IN", # Urdu - India
-    0x0443: "uz_UZ", # Uzbek - Latin
-    0x0843: "uz_UZ", # Uzbek - Cyrillic
-    0x042a: "vi_VN", # Vietnamese
-    0x0452: "cy_GB", # Welsh
-    0x0488: "wo_SN", # Wolof - Senegal
-    0x0434: "xh_ZA", # Xhosa - South Africa
-    0x0485: "sah_RU",# Yakut - Cyrillic
-    0x0478: "ii_CN", # Yi - PRC
-    0x046a: "yo_NG", # Yoruba - Nigeria
-    0x0435: "zu_ZA", # Zulu
-}
-
-def _print_locale():
-
-    """ Test function.
-    """
-    categories = {}
-    def _init_categories(categories=categories):
-        for k,v in globals().items():
-            if k[:3] == 'LC_':
-                categories[k] = v
-    _init_categories()
-    del categories['LC_ALL']
-
-    print 'Locale defaults as determined by getdefaultlocale():'
-    print '-'*72
-    lang, enc = getdefaultlocale()
-    print 'Language: ', lang or '(undefined)'
-    print 'Encoding: ', enc or '(undefined)'
-    print
-
-    print 'Locale settings on startup:'
-    print '-'*72
-    for name,category in categories.items():
-        print name, '...'
-        lang, enc = getlocale(category)
-        print '   Language: ', lang or '(undefined)'
-        print '   Encoding: ', enc or '(undefined)'
-        print
-
-    print
-    print 'Locale settings after calling resetlocale():'
-    print '-'*72
-    resetlocale()
-    for name,category in categories.items():
-        print name, '...'
-        lang, enc = getlocale(category)
-        print '   Language: ', lang or '(undefined)'
-        print '   Encoding: ', enc or '(undefined)'
-        print
-
-    try:
-        setlocale(LC_ALL, "")
-    except:
-        print 'NOTE:'
-        print 'setlocale(LC_ALL, "") does not support the default locale'
-        print 'given in the OS environment variables.'
-    else:
-        print
-        print 'Locale settings after calling setlocale(LC_ALL, ""):'
-        print '-'*72
-        for name,category in categories.items():
-            print name, '...'
-            lang, enc = getlocale(category)
-            print '   Language: ', lang or '(undefined)'
-            print '   Encoding: ', enc or '(undefined)'
-            print
-
-###
-
-try:
-    LC_MESSAGES
-except NameError:
-    pass
-else:
-    __all__.append("LC_MESSAGES")
-
-if __name__=='__main__':
-    print 'Locale aliasing:'
-    print
-    _print_locale()
-    print
-    print 'Number formatting:'
-    print
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/logging/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/logging/__init__.py
deleted file mode 100644
index 955b28c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/logging/__init__.py
+++ /dev/null
@@ -1,1707 +0,0 @@
-# Copyright 2001-2010 by Vinay Sajip. All Rights Reserved.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted,
-# provided that the above copyright notice appear in all copies and that
-# both that copyright notice and this permission notice appear in
-# supporting documentation, and that the name of Vinay Sajip
-# not be used in advertising or publicity pertaining to distribution
-# of the software without specific, written prior permission.
-# VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
-# VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
-# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-"""
-Logging package for Python. Based on PEP 282 and comments thereto in
-comp.lang.python, and influenced by Apache's log4j system.
-
-Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved.
-
-To use, simply 'import logging' and log away!
-"""
-
-import sys, os, time, cStringIO, traceback, warnings, weakref
-
-__all__ = ['BASIC_FORMAT', 'BufferingFormatter', 'CRITICAL', 'DEBUG', 'ERROR',
-           'FATAL', 'FileHandler', 'Filter', 'Formatter', 'Handler', 'INFO',
-           'LogRecord', 'Logger', 'LoggerAdapter', 'NOTSET', 'NullHandler',
-           'StreamHandler', 'WARN', 'WARNING', 'addLevelName', 'basicConfig',
-           'captureWarnings', 'critical', 'debug', 'disable', 'error',
-           'exception', 'fatal', 'getLevelName', 'getLogger', 'getLoggerClass',
-           'info', 'log', 'makeLogRecord', 'setLoggerClass', 'warn', 'warning']
-
-try:
-    import codecs
-except ImportError:
-    codecs = None
-
-try:
-    import thread
-    import threading
-except ImportError:
-    thread = None
-
-__author__  = "Vinay Sajip <vinay_sajip@red-dove.com>"
-__status__  = "production"
-__version__ = "0.5.1.2"
-__date__    = "07 February 2010"
-
-#---------------------------------------------------------------------------
-#   Miscellaneous module data
-#---------------------------------------------------------------------------
-try:
-    unicode
-    _unicode = True
-except NameError:
-    _unicode = False
-
-#
-# _srcfile is used when walking the stack to check when we've got the first
-# caller stack frame.
-#
-if hasattr(sys, 'frozen'): #support for py2exe
-    _srcfile = "logging%s__init__%s" % (os.sep, __file__[-4:])
-elif __file__[-4:].lower() in ['.pyc', '.pyo']:
-    _srcfile = __file__[:-4] + '.py'
-else:
-    _srcfile = __file__
-_srcfile = os.path.normcase(_srcfile)
-
-# next bit filched from 1.5.2's inspect.py
-def currentframe():
-    """Return the frame object for the caller's stack frame."""
-    try:
-        raise Exception
-    except:
-        return sys.exc_info()[2].tb_frame.f_back
-
-if hasattr(sys, '_getframe'): currentframe = lambda: sys._getframe(3)
-# done filching
-
-# _srcfile is only used in conjunction with sys._getframe().
-# To provide compatibility with older versions of Python, set _srcfile
-# to None if _getframe() is not available; this value will prevent
-# findCaller() from being called.
-#if not hasattr(sys, "_getframe"):
-#    _srcfile = None
-
-#
-#_startTime is used as the base when calculating the relative time of events
-#
-_startTime = time.time()
-
-#
-#raiseExceptions is used to see if exceptions during handling should be
-#propagated
-#
-raiseExceptions = 1
-
-#
-# If you don't want threading information in the log, set this to zero
-#
-logThreads = 1
-
-#
-# If you don't want multiprocessing information in the log, set this to zero
-#
-logMultiprocessing = 1
-
-#
-# If you don't want process information in the log, set this to zero
-#
-logProcesses = 1
-
-#---------------------------------------------------------------------------
-#   Level related stuff
-#---------------------------------------------------------------------------
-#
-# Default levels and level names, these can be replaced with any positive set
-# of values having corresponding names. There is a pseudo-level, NOTSET, which
-# is only really there as a lower limit for user-defined levels. Handlers and
-# loggers are initialized with NOTSET so that they will log all messages, even
-# at user-defined levels.
-#
-
-CRITICAL = 50
-FATAL = CRITICAL
-ERROR = 40
-WARNING = 30
-WARN = WARNING
-INFO = 20
-DEBUG = 10
-NOTSET = 0
-
-_levelNames = {
-    CRITICAL : 'CRITICAL',
-    ERROR : 'ERROR',
-    WARNING : 'WARNING',
-    INFO : 'INFO',
-    DEBUG : 'DEBUG',
-    NOTSET : 'NOTSET',
-    'CRITICAL' : CRITICAL,
-    'ERROR' : ERROR,
-    'WARN' : WARNING,
-    'WARNING' : WARNING,
-    'INFO' : INFO,
-    'DEBUG' : DEBUG,
-    'NOTSET' : NOTSET,
-}
-
-def getLevelName(level):
-    """
-    Return the textual representation of logging level 'level'.
-
-    If the level is one of the predefined levels (CRITICAL, ERROR, WARNING,
-    INFO, DEBUG) then you get the corresponding string. If you have
-    associated levels with names using addLevelName then the name you have
-    associated with 'level' is returned.
-
-    If a numeric value corresponding to one of the defined levels is passed
-    in, the corresponding string representation is returned.
-
-    Otherwise, the string "Level %s" % level is returned.
-    """
-    return _levelNames.get(level, ("Level %s" % level))
-
-def addLevelName(level, levelName):
-    """
-    Associate 'levelName' with 'level'.
-
-    This is used when converting levels to text during message formatting.
-    """
-    _acquireLock()
-    try:    #unlikely to cause an exception, but you never know...
-        _levelNames[level] = levelName
-        _levelNames[levelName] = level
-    finally:
-        _releaseLock()
-
-def _checkLevel(level):
-    if isinstance(level, int):
-        rv = level
-    elif str(level) == level:
-        if level not in _levelNames:
-            raise ValueError("Unknown level: %r" % level)
-        rv = _levelNames[level]
-    else:
-        raise TypeError("Level not an integer or a valid string: %r" % level)
-    return rv
-
-#---------------------------------------------------------------------------
-#   Thread-related stuff
-#---------------------------------------------------------------------------
-
-#
-#_lock is used to serialize access to shared data structures in this module.
-#This needs to be an RLock because fileConfig() creates and configures
-#Handlers, and so might arbitrary user threads. Since Handler code updates the
-#shared dictionary _handlers, it needs to acquire the lock. But if configuring,
-#the lock would already have been acquired - so we need an RLock.
-#The same argument applies to Loggers and Manager.loggerDict.
-#
-if thread:
-    _lock = threading.RLock()
-else:
-    _lock = None
-
-def _acquireLock():
-    """
-    Acquire the module-level lock for serializing access to shared data.
-
-    This should be released with _releaseLock().
-    """
-    if _lock:
-        _lock.acquire()
-
-def _releaseLock():
-    """
-    Release the module-level lock acquired by calling _acquireLock().
-    """
-    if _lock:
-        _lock.release()
-
-#---------------------------------------------------------------------------
-#   The logging record
-#---------------------------------------------------------------------------
-
-class LogRecord(object):
-    """
-    A LogRecord instance represents an event being logged.
-
-    LogRecord instances are created every time something is logged. They
-    contain all the information pertinent to the event being logged. The
-    main information passed in is in msg and args, which are combined
-    using str(msg) % args to create the message field of the record. The
-    record also includes information such as when the record was created,
-    the source line where the logging call was made, and any exception
-    information to be logged.
-    """
-    def __init__(self, name, level, pathname, lineno,
-                 msg, args, exc_info, func=None):
-        """
-        Initialize a logging record with interesting information.
-        """
-        ct = time.time()
-        self.name = name
-        self.msg = msg
-        #
-        # The following statement allows passing of a dictionary as a sole
-        # argument, so that you can do something like
-        #  logging.debug("a %(a)d b %(b)s", {'a':1, 'b':2})
-        # Suggested by Stefan Behnel.
-        # Note that without the test for args[0], we get a problem because
-        # during formatting, we test to see if the arg is present using
-        # 'if self.args:'. If the event being logged is e.g. 'Value is %d'
-        # and if the passed arg fails 'if self.args:' then no formatting
-        # is done. For example, logger.warn('Value is %d', 0) would log
-        # 'Value is %d' instead of 'Value is 0'.
-        # For the use case of passing a dictionary, this should not be a
-        # problem.
-        if args and len(args) == 1 and isinstance(args[0], dict) and args[0]:
-            args = args[0]
-        self.args = args
-        self.levelname = getLevelName(level)
-        self.levelno = level
-        self.pathname = pathname
-        try:
-            self.filename = os.path.basename(pathname)
-            self.module = os.path.splitext(self.filename)[0]
-        except (TypeError, ValueError, AttributeError):
-            self.filename = pathname
-            self.module = "Unknown module"
-        self.exc_info = exc_info
-        self.exc_text = None      # used to cache the traceback text
-        self.lineno = lineno
-        self.funcName = func
-        self.created = ct
-        self.msecs = (ct - long(ct)) * 1000
-        self.relativeCreated = (self.created - _startTime) * 1000
-        if logThreads and thread:
-            self.thread = thread.get_ident()
-            self.threadName = threading.current_thread().name
-        else:
-            self.thread = None
-            self.threadName = None
-        if not logMultiprocessing:
-            self.processName = None
-        else:
-            self.processName = 'MainProcess'
-            mp = sys.modules.get('multiprocessing')
-            if mp is not None:
-                # Errors may occur if multiprocessing has not finished loading
-                # yet - e.g. if a custom import hook causes third-party code
-                # to run when multiprocessing calls import. See issue 8200
-                # for an example
-                try:
-                    self.processName = mp.current_process().name
-                except StandardError:
-                    pass
-        if logProcesses and hasattr(os, 'getpid'):
-            self.process = os.getpid()
-        else:
-            self.process = None
-
-    def __str__(self):
-        return '<LogRecord: %s, %s, %s, %s, "%s">'%(self.name, self.levelno,
-            self.pathname, self.lineno, self.msg)
-
-    def getMessage(self):
-        """
-        Return the message for this LogRecord.
-
-        Return the message for this LogRecord after merging any user-supplied
-        arguments with the message.
-        """
-        if not _unicode: #if no unicode support...
-            msg = str(self.msg)
-        else:
-            msg = self.msg
-            if not isinstance(msg, basestring):
-                try:
-                    msg = str(self.msg)
-                except UnicodeError:
-                    msg = self.msg      #Defer encoding till later
-        if self.args:
-            msg = msg % self.args
-        return msg
-
-def makeLogRecord(dict):
-    """
-    Make a LogRecord whose attributes are defined by the specified dictionary,
-    This function is useful for converting a logging event received over
-    a socket connection (which is sent as a dictionary) into a LogRecord
-    instance.
-    """
-    rv = LogRecord(None, None, "", 0, "", (), None, None)
-    rv.__dict__.update(dict)
-    return rv
-
-#---------------------------------------------------------------------------
-#   Formatter classes and functions
-#---------------------------------------------------------------------------
-
-class Formatter(object):
-    """
-    Formatter instances are used to convert a LogRecord to text.
-
-    Formatters need to know how a LogRecord is constructed. They are
-    responsible for converting a LogRecord to (usually) a string which can
-    be interpreted by either a human or an external system. The base Formatter
-    allows a formatting string to be specified. If none is supplied, the
-    default value of "%s(message)\\n" is used.
-
-    The Formatter can be initialized with a format string which makes use of
-    knowledge of the LogRecord attributes - e.g. the default value mentioned
-    above makes use of the fact that the user's message and arguments are pre-
-    formatted into a LogRecord's message attribute. Currently, the useful
-    attributes in a LogRecord are described by:
-
-    %(name)s            Name of the logger (logging channel)
-    %(levelno)s         Numeric logging level for the message (DEBUG, INFO,
-                        WARNING, ERROR, CRITICAL)
-    %(levelname)s       Text logging level for the message ("DEBUG", "INFO",
-                        "WARNING", "ERROR", "CRITICAL")
-    %(pathname)s        Full pathname of the source file where the logging
-                        call was issued (if available)
-    %(filename)s        Filename portion of pathname
-    %(module)s          Module (name portion of filename)
-    %(lineno)d          Source line number where the logging call was issued
-                        (if available)
-    %(funcName)s        Function name
-    %(created)f         Time when the LogRecord was created (time.time()
-                        return value)
-    %(asctime)s         Textual time when the LogRecord was created
-    %(msecs)d           Millisecond portion of the creation time
-    %(relativeCreated)d Time in milliseconds when the LogRecord was created,
-                        relative to the time the logging module was loaded
-                        (typically at application startup time)
-    %(thread)d          Thread ID (if available)
-    %(threadName)s      Thread name (if available)
-    %(process)d         Process ID (if available)
-    %(message)s         The result of record.getMessage(), computed just as
-                        the record is emitted
-    """
-
-    converter = time.localtime
-
-    def __init__(self, fmt=None, datefmt=None):
-        """
-        Initialize the formatter with specified format strings.
-
-        Initialize the formatter either with the specified format string, or a
-        default as described above. Allow for specialized date formatting with
-        the optional datefmt argument (if omitted, you get the ISO8601 format).
-        """
-        if fmt:
-            self._fmt = fmt
-        else:
-            self._fmt = "%(message)s"
-        self.datefmt = datefmt
-
-    def formatTime(self, record, datefmt=None):
-        """
-        Return the creation time of the specified LogRecord as formatted text.
-
-        This method should be called from format() by a formatter which
-        wants to make use of a formatted time. This method can be overridden
-        in formatters to provide for any specific requirement, but the
-        basic behaviour is as follows: if datefmt (a string) is specified,
-        it is used with time.strftime() to format the creation time of the
-        record. Otherwise, the ISO8601 format is used. The resulting
-        string is returned. This function uses a user-configurable function
-        to convert the creation time to a tuple. By default, time.localtime()
-        is used; to change this for a particular formatter instance, set the
-        'converter' attribute to a function with the same signature as
-        time.localtime() or time.gmtime(). To change it for all formatters,
-        for example if you want all logging times to be shown in GMT,
-        set the 'converter' attribute in the Formatter class.
-        """
-        ct = self.converter(record.created)
-        if datefmt:
-            s = time.strftime(datefmt, ct)
-        else:
-            t = time.strftime("%Y-%m-%d %H:%M:%S", ct)
-            s = "%s,%03d" % (t, record.msecs)
-        return s
-
-    def formatException(self, ei):
-        """
-        Format and return the specified exception information as a string.
-
-        This default implementation just uses
-        traceback.print_exception()
-        """
-        sio = cStringIO.StringIO()
-        traceback.print_exception(ei[0], ei[1], ei[2], None, sio)
-        s = sio.getvalue()
-        sio.close()
-        if s[-1:] == "\n":
-            s = s[:-1]
-        return s
-
-    def usesTime(self):
-        """
-        Check if the format uses the creation time of the record.
-        """
-        return self._fmt.find("%(asctime)") >= 0
-
-    def format(self, record):
-        """
-        Format the specified record as text.
-
-        The record's attribute dictionary is used as the operand to a
-        string formatting operation which yields the returned string.
-        Before formatting the dictionary, a couple of preparatory steps
-        are carried out. The message attribute of the record is computed
-        using LogRecord.getMessage(). If the formatting string uses the
-        time (as determined by a call to usesTime(), formatTime() is
-        called to format the event time. If there is exception information,
-        it is formatted using formatException() and appended to the message.
-        """
-        record.message = record.getMessage()
-        if self.usesTime():
-            record.asctime = self.formatTime(record, self.datefmt)
-        s = self._fmt % record.__dict__
-        if record.exc_info:
-            # Cache the traceback text to avoid converting it multiple times
-            # (it's constant anyway)
-            if not record.exc_text:
-                record.exc_text = self.formatException(record.exc_info)
-        if record.exc_text:
-            if s[-1:] != "\n":
-                s = s + "\n"
-            try:
-                s = s + record.exc_text
-            except UnicodeError:
-                # Sometimes filenames have non-ASCII chars, which can lead
-                # to errors when s is Unicode and record.exc_text is str
-                # See issue 8924
-                s = s + record.exc_text.decode(sys.getfilesystemencoding())
-        return s
-
-#
-#   The default formatter to use when no other is specified
-#
-_defaultFormatter = Formatter()
-
-class BufferingFormatter(object):
-    """
-    A formatter suitable for formatting a number of records.
-    """
-    def __init__(self, linefmt=None):
-        """
-        Optionally specify a formatter which will be used to format each
-        individual record.
-        """
-        if linefmt:
-            self.linefmt = linefmt
-        else:
-            self.linefmt = _defaultFormatter
-
-    def formatHeader(self, records):
-        """
-        Return the header string for the specified records.
-        """
-        return ""
-
-    def formatFooter(self, records):
-        """
-        Return the footer string for the specified records.
-        """
-        return ""
-
-    def format(self, records):
-        """
-        Format the specified records and return the result as a string.
-        """
-        rv = ""
-        if len(records) > 0:
-            rv = rv + self.formatHeader(records)
-            for record in records:
-                rv = rv + self.linefmt.format(record)
-            rv = rv + self.formatFooter(records)
-        return rv
-
-#---------------------------------------------------------------------------
-#   Filter classes and functions
-#---------------------------------------------------------------------------
-
-class Filter(object):
-    """
-    Filter instances are used to perform arbitrary filtering of LogRecords.
-
-    Loggers and Handlers can optionally use Filter instances to filter
-    records as desired. The base filter class only allows events which are
-    below a certain point in the logger hierarchy. For example, a filter
-    initialized with "A.B" will allow events logged by loggers "A.B",
-    "A.B.C", "A.B.C.D", "A.B.D" etc. but not "A.BB", "B.A.B" etc. If
-    initialized with the empty string, all events are passed.
-    """
-    def __init__(self, name=''):
-        """
-        Initialize a filter.
-
-        Initialize with the name of the logger which, together with its
-        children, will have its events allowed through the filter. If no
-        name is specified, allow every event.
-        """
-        self.name = name
-        self.nlen = len(name)
-
-    def filter(self, record):
-        """
-        Determine if the specified record is to be logged.
-
-        Is the specified record to be logged? Returns 0 for no, nonzero for
-        yes. If deemed appropriate, the record may be modified in-place.
-        """
-        if self.nlen == 0:
-            return 1
-        elif self.name == record.name:
-            return 1
-        elif record.name.find(self.name, 0, self.nlen) != 0:
-            return 0
-        return (record.name[self.nlen] == ".")
-
-class Filterer(object):
-    """
-    A base class for loggers and handlers which allows them to share
-    common code.
-    """
-    def __init__(self):
-        """
-        Initialize the list of filters to be an empty list.
-        """
-        self.filters = []
-
-    def addFilter(self, filter):
-        """
-        Add the specified filter to this handler.
-        """
-        if not (filter in self.filters):
-            self.filters.append(filter)
-
-    def removeFilter(self, filter):
-        """
-        Remove the specified filter from this handler.
-        """
-        if filter in self.filters:
-            self.filters.remove(filter)
-
-    def filter(self, record):
-        """
-        Determine if a record is loggable by consulting all the filters.
-
-        The default is to allow the record to be logged; any filter can veto
-        this and the record is then dropped. Returns a zero value if a record
-        is to be dropped, else non-zero.
-        """
-        rv = 1
-        for f in self.filters:
-            if not f.filter(record):
-                rv = 0
-                break
-        return rv
-
-#---------------------------------------------------------------------------
-#   Handler classes and functions
-#---------------------------------------------------------------------------
-
-_handlers = weakref.WeakValueDictionary()  #map of handler names to handlers
-_handlerList = [] # added to allow handlers to be removed in reverse of order initialized
-
-def _removeHandlerRef(wr):
-    """
-    Remove a handler reference from the internal cleanup list.
-    """
-    # This function can be called during module teardown, when globals are
-    # set to None. If _acquireLock is None, assume this is the case and do
-    # nothing.
-    if _acquireLock is not None:
-        _acquireLock()
-        try:
-            if wr in _handlerList:
-                _handlerList.remove(wr)
-        finally:
-            _releaseLock()
-
-def _addHandlerRef(handler):
-    """
-    Add a handler to the internal cleanup list using a weak reference.
-    """
-    _acquireLock()
-    try:
-        _handlerList.append(weakref.ref(handler, _removeHandlerRef))
-    finally:
-        _releaseLock()
-
-class Handler(Filterer):
-    """
-    Handler instances dispatch logging events to specific destinations.
-
-    The base handler class. Acts as a placeholder which defines the Handler
-    interface. Handlers can optionally use Formatter instances to format
-    records as desired. By default, no formatter is specified; in this case,
-    the 'raw' message as determined by record.message is logged.
-    """
-    def __init__(self, level=NOTSET):
-        """
-        Initializes the instance - basically setting the formatter to None
-        and the filter list to empty.
-        """
-        Filterer.__init__(self)
-        self._name = None
-        self.level = _checkLevel(level)
-        self.formatter = None
-        # Add the handler to the global _handlerList (for cleanup on shutdown)
-        _addHandlerRef(self)
-        self.createLock()
-
-    def get_name(self):
-        return self._name
-
-    def set_name(self, name):
-        _acquireLock()
-        try:
-            if self._name in _handlers:
-                del _handlers[self._name]
-            self._name = name
-            if name:
-                _handlers[name] = self
-        finally:
-            _releaseLock()
-
-    name = property(get_name, set_name)
-
-    def createLock(self):
-        """
-        Acquire a thread lock for serializing access to the underlying I/O.
-        """
-        if thread:
-            self.lock = threading.RLock()
-        else:
-            self.lock = None
-
-    def acquire(self):
-        """
-        Acquire the I/O thread lock.
-        """
-        if self.lock:
-            self.lock.acquire()
-
-    def release(self):
-        """
-        Release the I/O thread lock.
-        """
-        if self.lock:
-            self.lock.release()
-
-    def setLevel(self, level):
-        """
-        Set the logging level of this handler.
-        """
-        self.level = _checkLevel(level)
-
-    def format(self, record):
-        """
-        Format the specified record.
-
-        If a formatter is set, use it. Otherwise, use the default formatter
-        for the module.
-        """
-        if self.formatter:
-            fmt = self.formatter
-        else:
-            fmt = _defaultFormatter
-        return fmt.format(record)
-
-    def emit(self, record):
-        """
-        Do whatever it takes to actually log the specified logging record.
-
-        This version is intended to be implemented by subclasses and so
-        raises a NotImplementedError.
-        """
-        raise NotImplementedError('emit must be implemented '
-                                  'by Handler subclasses')
-
-    def handle(self, record):
-        """
-        Conditionally emit the specified logging record.
-
-        Emission depends on filters which may have been added to the handler.
-        Wrap the actual emission of the record with acquisition/release of
-        the I/O thread lock. Returns whether the filter passed the record for
-        emission.
-        """
-        rv = self.filter(record)
-        if rv:
-            self.acquire()
-            try:
-                self.emit(record)
-            finally:
-                self.release()
-        return rv
-
-    def setFormatter(self, fmt):
-        """
-        Set the formatter for this handler.
-        """
-        self.formatter = fmt
-
-    def flush(self):
-        """
-        Ensure all logging output has been flushed.
-
-        This version does nothing and is intended to be implemented by
-        subclasses.
-        """
-        pass
-
-    def close(self):
-        """
-        Tidy up any resources used by the handler.
-
-        This version removes the handler from an internal map of handlers,
-        _handlers, which is used for handler lookup by name. Subclasses
-        should ensure that this gets called from overridden close()
-        methods.
-        """
-        #get the module data lock, as we're updating a shared structure.
-        _acquireLock()
-        try:    #unlikely to raise an exception, but you never know...
-            if self._name and self._name in _handlers:
-                del _handlers[self._name]
-        finally:
-            _releaseLock()
-
-    def handleError(self, record):
-        """
-        Handle errors which occur during an emit() call.
-
-        This method should be called from handlers when an exception is
-        encountered during an emit() call. If raiseExceptions is false,
-        exceptions get silently ignored. This is what is mostly wanted
-        for a logging system - most users will not care about errors in
-        the logging system, they are more interested in application errors.
-        You could, however, replace this with a custom handler if you wish.
-        The record which was being processed is passed in to this method.
-        """
-        if raiseExceptions:
-            ei = sys.exc_info()
-            try:
-                traceback.print_exception(ei[0], ei[1], ei[2],
-                                          None, sys.stderr)
-                sys.stderr.write('Logged from file %s, line %s\n' % (
-                                 record.filename, record.lineno))
-            except IOError:
-                pass    # see issue 5971
-            finally:
-                del ei
-
-class StreamHandler(Handler):
-    """
-    A handler class which writes logging records, appropriately formatted,
-    to a stream. Note that this class does not close the stream, as
-    sys.stdout or sys.stderr may be used.
-    """
-
-    def __init__(self, stream=None):
-        """
-        Initialize the handler.
-
-        If stream is not specified, sys.stderr is used.
-        """
-        Handler.__init__(self)
-        if stream is None:
-            stream = sys.stderr
-        self.stream = stream
-
-    def flush(self):
-        """
-        Flushes the stream.
-        """
-        if self.stream and hasattr(self.stream, "flush"):
-            self.stream.flush()
-
-    def emit(self, record):
-        """
-        Emit a record.
-
-        If a formatter is specified, it is used to format the record.
-        The record is then written to the stream with a trailing newline.  If
-        exception information is present, it is formatted using
-        traceback.print_exception and appended to the stream.  If the stream
-        has an 'encoding' attribute, it is used to determine how to do the
-        output to the stream.
-        """
-        try:
-            msg = self.format(record)
-            stream = self.stream
-            fs = "%s\n"
-            if not _unicode: #if no unicode support...
-                stream.write(fs % msg)
-            else:
-                try:
-                    if (isinstance(msg, unicode) and
-                        getattr(stream, 'encoding', None)):
-                        ufs = fs.decode(stream.encoding)
-                        try:
-                            stream.write(ufs % msg)
-                        except UnicodeEncodeError:
-                            #Printing to terminals sometimes fails. For example,
-                            #with an encoding of 'cp1251', the above write will
-                            #work if written to a stream opened or wrapped by
-                            #the codecs module, but fail when writing to a
-                            #terminal even when the codepage is set to cp1251.
-                            #An extra encoding step seems to be needed.
-                            stream.write((ufs % msg).encode(stream.encoding))
-                    else:
-                        stream.write(fs % msg)
-                except UnicodeError:
-                    stream.write(fs % msg.encode("UTF-8"))
-            self.flush()
-        except (KeyboardInterrupt, SystemExit):
-            raise
-        except:
-            self.handleError(record)
-
-class FileHandler(StreamHandler):
-    """
-    A handler class which writes formatted logging records to disk files.
-    """
-    def __init__(self, filename, mode='a', encoding=None, delay=0):
-        """
-        Open the specified file and use it as the stream for logging.
-        """
-        #keep the absolute path, otherwise derived classes which use this
-        #may come a cropper when the current directory changes
-        if codecs is None:
-            encoding = None
-        self.baseFilename = os.path.abspath(filename)
-        self.mode = mode
-        self.encoding = encoding
-        if delay:
-            #We don't open the stream, but we still need to call the
-            #Handler constructor to set level, formatter, lock etc.
-            Handler.__init__(self)
-            self.stream = None
-        else:
-            StreamHandler.__init__(self, self._open())
-
-    def close(self):
-        """
-        Closes the stream.
-        """
-        if self.stream:
-            self.flush()
-            if hasattr(self.stream, "close"):
-                self.stream.close()
-            StreamHandler.close(self)
-            self.stream = None
-
-    def _open(self):
-        """
-        Open the current base file with the (original) mode and encoding.
-        Return the resulting stream.
-        """
-        if self.encoding is None:
-            stream = open(self.baseFilename, self.mode)
-        else:
-            stream = codecs.open(self.baseFilename, self.mode, self.encoding)
-        return stream
-
-    def emit(self, record):
-        """
-        Emit a record.
-
-        If the stream was not opened because 'delay' was specified in the
-        constructor, open it before calling the superclass's emit.
-        """
-        if self.stream is None:
-            self.stream = self._open()
-        StreamHandler.emit(self, record)
-
-#---------------------------------------------------------------------------
-#   Manager classes and functions
-#---------------------------------------------------------------------------
-
-class PlaceHolder(object):
-    """
-    PlaceHolder instances are used in the Manager logger hierarchy to take
-    the place of nodes for which no loggers have been defined. This class is
-    intended for internal use only and not as part of the public API.
-    """
-    def __init__(self, alogger):
-        """
-        Initialize with the specified logger being a child of this placeholder.
-        """
-        #self.loggers = [alogger]
-        self.loggerMap = { alogger : None }
-
-    def append(self, alogger):
-        """
-        Add the specified logger as a child of this placeholder.
-        """
-        #if alogger not in self.loggers:
-        if alogger not in self.loggerMap:
-            #self.loggers.append(alogger)
-            self.loggerMap[alogger] = None
-
-#
-#   Determine which class to use when instantiating loggers.
-#
-_loggerClass = None
-
-def setLoggerClass(klass):
-    """
-    Set the class to be used when instantiating a logger. The class should
-    define __init__() such that only a name argument is required, and the
-    __init__() should call Logger.__init__()
-    """
-    if klass != Logger:
-        if not issubclass(klass, Logger):
-            raise TypeError("logger not derived from logging.Logger: "
-                            + klass.__name__)
-    global _loggerClass
-    _loggerClass = klass
-
-def getLoggerClass():
-    """
-    Return the class to be used when instantiating a logger.
-    """
-
-    return _loggerClass
-
-class Manager(object):
-    """
-    There is [under normal circumstances] just one Manager instance, which
-    holds the hierarchy of loggers.
-    """
-    def __init__(self, rootnode):
-        """
-        Initialize the manager with the root node of the logger hierarchy.
-        """
-        self.root = rootnode
-        self.disable = 0
-        self.emittedNoHandlerWarning = 0
-        self.loggerDict = {}
-        self.loggerClass = None
-
-    def getLogger(self, name):
-        """
-        Get a logger with the specified name (channel name), creating it
-        if it doesn't yet exist. This name is a dot-separated hierarchical
-        name, such as "a", "a.b", "a.b.c" or similar.
-
-        If a PlaceHolder existed for the specified name [i.e. the logger
-        didn't exist but a child of it did], replace it with the created
-        logger and fix up the parent/child references which pointed to the
-        placeholder to now point to the logger.
-        """
-        rv = None
-        _acquireLock()
-        try:
-            if name in self.loggerDict:
-                rv = self.loggerDict[name]
-                if isinstance(rv, PlaceHolder):
-                    ph = rv
-                    rv = (self.loggerClass or _loggerClass)(name)
-                    rv.manager = self
-                    self.loggerDict[name] = rv
-                    self._fixupChildren(ph, rv)
-                    self._fixupParents(rv)
-            else:
-                rv = (self.loggerClass or _loggerClass)(name)
-                rv.manager = self
-                self.loggerDict[name] = rv
-                self._fixupParents(rv)
-        finally:
-            _releaseLock()
-        return rv
-
-    def setLoggerClass(self, klass):
-        """
-        Set the class to be used when instantiating a logger with this Manager.
-        """
-        if klass != Logger:
-            if not issubclass(klass, Logger):
-                raise TypeError("logger not derived from logging.Logger: "
-                                + klass.__name__)
-        self.loggerClass = klass
-
-    def _fixupParents(self, alogger):
-        """
-        Ensure that there are either loggers or placeholders all the way
-        from the specified logger to the root of the logger hierarchy.
-        """
-        name = alogger.name
-        i = name.rfind(".")
-        rv = None
-        while (i > 0) and not rv:
-            substr = name[:i]
-            if substr not in self.loggerDict:
-                self.loggerDict[substr] = PlaceHolder(alogger)
-            else:
-                obj = self.loggerDict[substr]
-                if isinstance(obj, Logger):
-                    rv = obj
-                else:
-                    assert isinstance(obj, PlaceHolder)
-                    obj.append(alogger)
-            i = name.rfind(".", 0, i - 1)
-        if not rv:
-            rv = self.root
-        alogger.parent = rv
-
-    def _fixupChildren(self, ph, alogger):
-        """
-        Ensure that children of the placeholder ph are connected to the
-        specified logger.
-        """
-        name = alogger.name
-        namelen = len(name)
-        for c in ph.loggerMap.keys():
-            #The if means ... if not c.parent.name.startswith(nm)
-            if c.parent.name[:namelen] != name:
-                alogger.parent = c.parent
-                c.parent = alogger
-
-#---------------------------------------------------------------------------
-#   Logger classes and functions
-#---------------------------------------------------------------------------
-
-class Logger(Filterer):
-    """
-    Instances of the Logger class represent a single logging channel. A
-    "logging channel" indicates an area of an application. Exactly how an
-    "area" is defined is up to the application developer. Since an
-    application can have any number of areas, logging channels are identified
-    by a unique string. Application areas can be nested (e.g. an area
-    of "input processing" might include sub-areas "read CSV files", "read
-    XLS files" and "read Gnumeric files"). To cater for this natural nesting,
-    channel names are organized into a namespace hierarchy where levels are
-    separated by periods, much like the Java or Python package namespace. So
-    in the instance given above, channel names might be "input" for the upper
-    level, and "input.csv", "input.xls" and "input.gnu" for the sub-levels.
-    There is no arbitrary limit to the depth of nesting.
-    """
-    def __init__(self, name, level=NOTSET):
-        """
-        Initialize the logger with a name and an optional level.
-        """
-        Filterer.__init__(self)
-        self.name = name
-        self.level = _checkLevel(level)
-        self.parent = None
-        self.propagate = 1
-        self.handlers = []
-        self.disabled = 0
-
-    def setLevel(self, level):
-        """
-        Set the logging level of this logger.
-        """
-        self.level = _checkLevel(level)
-
-    def debug(self, msg, *args, **kwargs):
-        """
-        Log 'msg % args' with severity 'DEBUG'.
-
-        To pass exception information, use the keyword argument exc_info with
-        a true value, e.g.
-
-        logger.debug("Houston, we have a %s", "thorny problem", exc_info=1)
-        """
-        if self.isEnabledFor(DEBUG):
-            self._log(DEBUG, msg, args, **kwargs)
-
-    def info(self, msg, *args, **kwargs):
-        """
-        Log 'msg % args' with severity 'INFO'.
-
-        To pass exception information, use the keyword argument exc_info with
-        a true value, e.g.
-
-        logger.info("Houston, we have a %s", "interesting problem", exc_info=1)
-        """
-        if self.isEnabledFor(INFO):
-            self._log(INFO, msg, args, **kwargs)
-
-    def warning(self, msg, *args, **kwargs):
-        """
-        Log 'msg % args' with severity 'WARNING'.
-
-        To pass exception information, use the keyword argument exc_info with
-        a true value, e.g.
-
-        logger.warning("Houston, we have a %s", "bit of a problem", exc_info=1)
-        """
-        if self.isEnabledFor(WARNING):
-            self._log(WARNING, msg, args, **kwargs)
-
-    warn = warning
-
-    def error(self, msg, *args, **kwargs):
-        """
-        Log 'msg % args' with severity 'ERROR'.
-
-        To pass exception information, use the keyword argument exc_info with
-        a true value, e.g.
-
-        logger.error("Houston, we have a %s", "major problem", exc_info=1)
-        """
-        if self.isEnabledFor(ERROR):
-            self._log(ERROR, msg, args, **kwargs)
-
-    def exception(self, msg, *args):
-        """
-        Convenience method for logging an ERROR with exception information.
-        """
-        self.error(msg, exc_info=1, *args)
-
-    def critical(self, msg, *args, **kwargs):
-        """
-        Log 'msg % args' with severity 'CRITICAL'.
-
-        To pass exception information, use the keyword argument exc_info with
-        a true value, e.g.
-
-        logger.critical("Houston, we have a %s", "major disaster", exc_info=1)
-        """
-        if self.isEnabledFor(CRITICAL):
-            self._log(CRITICAL, msg, args, **kwargs)
-
-    fatal = critical
-
-    def log(self, level, msg, *args, **kwargs):
-        """
-        Log 'msg % args' with the integer severity 'level'.
-
-        To pass exception information, use the keyword argument exc_info with
-        a true value, e.g.
-
-        logger.log(level, "We have a %s", "mysterious problem", exc_info=1)
-        """
-        if not isinstance(level, int):
-            if raiseExceptions:
-                raise TypeError("level must be an integer")
-            else:
-                return
-        if self.isEnabledFor(level):
-            self._log(level, msg, args, **kwargs)
-
-    def findCaller(self):
-        """
-        Find the stack frame of the caller so that we can note the source
-        file name, line number and function name.
-        """
-        f = currentframe()
-        #On some versions of IronPython, currentframe() returns None if
-        #IronPython isn't run with -X:Frames.
-        if f is not None:
-            f = f.f_back
-        rv = "(unknown file)", 0, "(unknown function)"
-        while hasattr(f, "f_code"):
-            co = f.f_code
-            filename = os.path.normcase(co.co_filename)
-            if filename == _srcfile:
-                f = f.f_back
-                continue
-            rv = (co.co_filename, f.f_lineno, co.co_name)
-            break
-        return rv
-
-    def makeRecord(self, name, level, fn, lno, msg, args, exc_info, func=None, extra=None):
-        """
-        A factory method which can be overridden in subclasses to create
-        specialized LogRecords.
-        """
-        rv = LogRecord(name, level, fn, lno, msg, args, exc_info, func)
-        if extra is not None:
-            for key in extra:
-                if (key in ["message", "asctime"]) or (key in rv.__dict__):
-                    raise KeyError("Attempt to overwrite %r in LogRecord" % key)
-                rv.__dict__[key] = extra[key]
-        return rv
-
-    def _log(self, level, msg, args, exc_info=None, extra=None):
-        """
-        Low-level logging routine which creates a LogRecord and then calls
-        all the handlers of this logger to handle the record.
-        """
-        if _srcfile:
-            #IronPython doesn't track Python frames, so findCaller throws an
-            #exception on some versions of IronPython. We trap it here so that
-            #IronPython can use logging.
-            try:
-                fn, lno, func = self.findCaller()
-            except ValueError:
-                fn, lno, func = "(unknown file)", 0, "(unknown function)"
-        else:
-            fn, lno, func = "(unknown file)", 0, "(unknown function)"
-        if exc_info:
-            if not isinstance(exc_info, tuple):
-                exc_info = sys.exc_info()
-        record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info, func, extra)
-        self.handle(record)
-
-    def handle(self, record):
-        """
-        Call the handlers for the specified record.
-
-        This method is used for unpickled records received from a socket, as
-        well as those created locally. Logger-level filtering is applied.
-        """
-        if (not self.disabled) and self.filter(record):
-            self.callHandlers(record)
-
-    def addHandler(self, hdlr):
-        """
-        Add the specified handler to this logger.
-        """
-        _acquireLock()
-        try:
-            if not (hdlr in self.handlers):
-                self.handlers.append(hdlr)
-        finally:
-            _releaseLock()
-
-    def removeHandler(self, hdlr):
-        """
-        Remove the specified handler from this logger.
-        """
-        _acquireLock()
-        try:
-            if hdlr in self.handlers:
-                self.handlers.remove(hdlr)
-        finally:
-            _releaseLock()
-
-    def callHandlers(self, record):
-        """
-        Pass a record to all relevant handlers.
-
-        Loop through all handlers for this logger and its parents in the
-        logger hierarchy. If no handler was found, output a one-off error
-        message to sys.stderr. Stop searching up the hierarchy whenever a
-        logger with the "propagate" attribute set to zero is found - that
-        will be the last logger whose handlers are called.
-        """
-        c = self
-        found = 0
-        while c:
-            for hdlr in c.handlers:
-                found = found + 1
-                if record.levelno >= hdlr.level:
-                    hdlr.handle(record)
-            if not c.propagate:
-                c = None    #break out
-            else:
-                c = c.parent
-        if (found == 0) and raiseExceptions and not self.manager.emittedNoHandlerWarning:
-            sys.stderr.write("No handlers could be found for logger"
-                             " \"%s\"\n" % self.name)
-            self.manager.emittedNoHandlerWarning = 1
-
-    def getEffectiveLevel(self):
-        """
-        Get the effective level for this logger.
-
-        Loop through this logger and its parents in the logger hierarchy,
-        looking for a non-zero logging level. Return the first one found.
-        """
-        logger = self
-        while logger:
-            if logger.level:
-                return logger.level
-            logger = logger.parent
-        return NOTSET
-
-    def isEnabledFor(self, level):
-        """
-        Is this logger enabled for level 'level'?
-        """
-        if self.manager.disable >= level:
-            return 0
-        return level >= self.getEffectiveLevel()
-
-    def getChild(self, suffix):
-        """
-        Get a logger which is a descendant to this one.
-
-        This is a convenience method, such that
-
-        logging.getLogger('abc').getChild('def.ghi')
-
-        is the same as
-
-        logging.getLogger('abc.def.ghi')
-
-        It's useful, for example, when the parent logger is named using
-        __name__ rather than a literal string.
-        """
-        if self.root is not self:
-            suffix = '.'.join((self.name, suffix))
-        return self.manager.getLogger(suffix)
-
-class RootLogger(Logger):
-    """
-    A root logger is not that different to any other logger, except that
-    it must have a logging level and there is only one instance of it in
-    the hierarchy.
-    """
-    def __init__(self, level):
-        """
-        Initialize the logger with the name "root".
-        """
-        Logger.__init__(self, "root", level)
-
-_loggerClass = Logger
-
-class LoggerAdapter(object):
-    """
-    An adapter for loggers which makes it easier to specify contextual
-    information in logging output.
-    """
-
-    def __init__(self, logger, extra):
-        """
-        Initialize the adapter with a logger and a dict-like object which
-        provides contextual information. This constructor signature allows
-        easy stacking of LoggerAdapters, if so desired.
-
-        You can effectively pass keyword arguments as shown in the
-        following example:
-
-        adapter = LoggerAdapter(someLogger, dict(p1=v1, p2="v2"))
-        """
-        self.logger = logger
-        self.extra = extra
-
-    def process(self, msg, kwargs):
-        """
-        Process the logging message and keyword arguments passed in to
-        a logging call to insert contextual information. You can either
-        manipulate the message itself, the keyword args or both. Return
-        the message and kwargs modified (or not) to suit your needs.
-
-        Normally, you'll only need to override this one method in a
-        LoggerAdapter subclass for your specific needs.
-        """
-        kwargs["extra"] = self.extra
-        return msg, kwargs
-
-    def debug(self, msg, *args, **kwargs):
-        """
-        Delegate a debug call to the underlying logger, after adding
-        contextual information from this adapter instance.
-        """
-        msg, kwargs = self.process(msg, kwargs)
-        self.logger.debug(msg, *args, **kwargs)
-
-    def info(self, msg, *args, **kwargs):
-        """
-        Delegate an info call to the underlying logger, after adding
-        contextual information from this adapter instance.
-        """
-        msg, kwargs = self.process(msg, kwargs)
-        self.logger.info(msg, *args, **kwargs)
-
-    def warning(self, msg, *args, **kwargs):
-        """
-        Delegate a warning call to the underlying logger, after adding
-        contextual information from this adapter instance.
-        """
-        msg, kwargs = self.process(msg, kwargs)
-        self.logger.warning(msg, *args, **kwargs)
-
-    def error(self, msg, *args, **kwargs):
-        """
-        Delegate an error call to the underlying logger, after adding
-        contextual information from this adapter instance.
-        """
-        msg, kwargs = self.process(msg, kwargs)
-        self.logger.error(msg, *args, **kwargs)
-
-    def exception(self, msg, *args, **kwargs):
-        """
-        Delegate an exception call to the underlying logger, after adding
-        contextual information from this adapter instance.
-        """
-        msg, kwargs = self.process(msg, kwargs)
-        kwargs["exc_info"] = 1
-        self.logger.error(msg, *args, **kwargs)
-
-    def critical(self, msg, *args, **kwargs):
-        """
-        Delegate a critical call to the underlying logger, after adding
-        contextual information from this adapter instance.
-        """
-        msg, kwargs = self.process(msg, kwargs)
-        self.logger.critical(msg, *args, **kwargs)
-
-    def log(self, level, msg, *args, **kwargs):
-        """
-        Delegate a log call to the underlying logger, after adding
-        contextual information from this adapter instance.
-        """
-        msg, kwargs = self.process(msg, kwargs)
-        self.logger.log(level, msg, *args, **kwargs)
-
-    def isEnabledFor(self, level):
-        """
-        See if the underlying logger is enabled for the specified level.
-        """
-        return self.logger.isEnabledFor(level)
-
-root = RootLogger(WARNING)
-Logger.root = root
-Logger.manager = Manager(Logger.root)
-
-#---------------------------------------------------------------------------
-# Configuration classes and functions
-#---------------------------------------------------------------------------
-
-BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"
-
-def basicConfig(**kwargs):
-    """
-    Do basic configuration for the logging system.
-
-    This function does nothing if the root logger already has handlers
-    configured. It is a convenience method intended for use by simple scripts
-    to do one-shot configuration of the logging package.
-
-    The default behaviour is to create a StreamHandler which writes to
-    sys.stderr, set a formatter using the BASIC_FORMAT format string, and
-    add the handler to the root logger.
-
-    A number of optional keyword arguments may be specified, which can alter
-    the default behaviour.
-
-    filename  Specifies that a FileHandler be created, using the specified
-              filename, rather than a StreamHandler.
-    filemode  Specifies the mode to open the file, if filename is specified
-              (if filemode is unspecified, it defaults to 'a').
-    format    Use the specified format string for the handler.
-    datefmt   Use the specified date/time format.
-    level     Set the root logger level to the specified level.
-    stream    Use the specified stream to initialize the StreamHandler. Note
-              that this argument is incompatible with 'filename' - if both
-              are present, 'stream' is ignored.
-
-    Note that you could specify a stream created using open(filename, mode)
-    rather than passing the filename and mode in. However, it should be
-    remembered that StreamHandler does not close its stream (since it may be
-    using sys.stdout or sys.stderr), whereas FileHandler closes its stream
-    when the handler is closed.
-    """
-    # Add thread safety in case someone mistakenly calls
-    # basicConfig() from multiple threads
-    _acquireLock()
-    try:
-        if len(root.handlers) == 0:
-            filename = kwargs.get("filename")
-            if filename:
-                mode = kwargs.get("filemode", 'a')
-                hdlr = FileHandler(filename, mode)
-            else:
-                stream = kwargs.get("stream")
-                hdlr = StreamHandler(stream)
-            fs = kwargs.get("format", BASIC_FORMAT)
-            dfs = kwargs.get("datefmt", None)
-            fmt = Formatter(fs, dfs)
-            hdlr.setFormatter(fmt)
-            root.addHandler(hdlr)
-            level = kwargs.get("level")
-            if level is not None:
-                root.setLevel(level)
-    finally:
-        _releaseLock()
-
-#---------------------------------------------------------------------------
-# Utility functions at module level.
-# Basically delegate everything to the root logger.
-#---------------------------------------------------------------------------
-
-def getLogger(name=None):
-    """
-    Return a logger with the specified name, creating it if necessary.
-
-    If no name is specified, return the root logger.
-    """
-    if name:
-        return Logger.manager.getLogger(name)
-    else:
-        return root
-
-#def getRootLogger():
-#    """
-#    Return the root logger.
-#
-#    Note that getLogger('') now does the same thing, so this function is
-#    deprecated and may disappear in the future.
-#    """
-#    return root
-
-def critical(msg, *args, **kwargs):
-    """
-    Log a message with severity 'CRITICAL' on the root logger.
-    """
-    if len(root.handlers) == 0:
-        basicConfig()
-    root.critical(msg, *args, **kwargs)
-
-fatal = critical
-
-def error(msg, *args, **kwargs):
-    """
-    Log a message with severity 'ERROR' on the root logger.
-    """
-    if len(root.handlers) == 0:
-        basicConfig()
-    root.error(msg, *args, **kwargs)
-
-def exception(msg, *args):
-    """
-    Log a message with severity 'ERROR' on the root logger,
-    with exception information.
-    """
-    error(msg, exc_info=1, *args)
-
-def warning(msg, *args, **kwargs):
-    """
-    Log a message with severity 'WARNING' on the root logger.
-    """
-    if len(root.handlers) == 0:
-        basicConfig()
-    root.warning(msg, *args, **kwargs)
-
-warn = warning
-
-def info(msg, *args, **kwargs):
-    """
-    Log a message with severity 'INFO' on the root logger.
-    """
-    if len(root.handlers) == 0:
-        basicConfig()
-    root.info(msg, *args, **kwargs)
-
-def debug(msg, *args, **kwargs):
-    """
-    Log a message with severity 'DEBUG' on the root logger.
-    """
-    if len(root.handlers) == 0:
-        basicConfig()
-    root.debug(msg, *args, **kwargs)
-
-def log(level, msg, *args, **kwargs):
-    """
-    Log 'msg % args' with the integer severity 'level' on the root logger.
-    """
-    if len(root.handlers) == 0:
-        basicConfig()
-    root.log(level, msg, *args, **kwargs)
-
-def disable(level):
-    """
-    Disable all logging calls of severity 'level' and below.
-    """
-    root.manager.disable = level
-
-def shutdown(handlerList=_handlerList):
-    """
-    Perform any cleanup actions in the logging system (e.g. flushing
-    buffers).
-
-    Should be called at application exit.
-    """
-    for wr in reversed(handlerList[:]):
-        #errors might occur, for example, if files are locked
-        #we just ignore them if raiseExceptions is not set
-        try:
-            h = wr()
-            if h:
-                try:
-                    h.acquire()
-                    h.flush()
-                    h.close()
-                except (IOError, ValueError):
-                    # Ignore errors which might be caused
-                    # because handlers have been closed but
-                    # references to them are still around at
-                    # application exit.
-                    pass
-                finally:
-                    h.release()
-        except:
-            if raiseExceptions:
-                raise
-            #else, swallow
-
-#Let's try and shutdown automatically on application exit...
-import atexit
-atexit.register(shutdown)
-
-# Null handler
-
-class NullHandler(Handler):
-    """
-    This handler does nothing. It's intended to be used to avoid the
-    "No handlers could be found for logger XXX" one-off warning. This is
-    important for library code, which may contain code to log events. If a user
-    of the library does not configure logging, the one-off warning might be
-    produced; to avoid this, the library developer simply needs to instantiate
-    a NullHandler and add it to the top-level logger of the library module or
-    package.
-    """
-    def handle(self, record):
-        pass
-
-    def emit(self, record):
-        pass
-
-    def createLock(self):
-        self.lock = None
-
-# Warnings integration
-
-_warnings_showwarning = None
-
-def _showwarning(message, category, filename, lineno, file=None, line=None):
-    """
-    Implementation of showwarnings which redirects to logging, which will first
-    check to see if the file parameter is None. If a file is specified, it will
-    delegate to the original warnings implementation of showwarning. Otherwise,
-    it will call warnings.formatwarning and will log the resulting string to a
-    warnings logger named "py.warnings" with level logging.WARNING.
-    """
-    if file is not None:
-        if _warnings_showwarning is not None:
-            _warnings_showwarning(message, category, filename, lineno, file, line)
-    else:
-        s = warnings.formatwarning(message, category, filename, lineno, line)
-        logger = getLogger("py.warnings")
-        if not logger.handlers:
-            logger.addHandler(NullHandler())
-        logger.warning("%s", s)
-
-def captureWarnings(capture):
-    """
-    If capture is true, redirect all warnings to the logging package.
-    If capture is False, ensure that warnings are not redirected to logging
-    but to their original destinations.
-    """
-    global _warnings_showwarning
-    if capture:
-        if _warnings_showwarning is None:
-            _warnings_showwarning = warnings.showwarning
-            warnings.showwarning = _showwarning
-    else:
-        if _warnings_showwarning is not None:
-            warnings.showwarning = _warnings_showwarning
-            _warnings_showwarning = None
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/logging/config.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/logging/config.py
deleted file mode 100644
index 12d42bd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/logging/config.py
+++ /dev/null
@@ -1,905 +0,0 @@
-# Copyright 2001-2010 by Vinay Sajip. All Rights Reserved.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted,
-# provided that the above copyright notice appear in all copies and that
-# both that copyright notice and this permission notice appear in
-# supporting documentation, and that the name of Vinay Sajip
-# not be used in advertising or publicity pertaining to distribution
-# of the software without specific, written prior permission.
-# VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
-# VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
-# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-"""
-Configuration functions for the logging package for Python. The core package
-is based on PEP 282 and comments thereto in comp.lang.python, and influenced
-by Apache's log4j system.
-
-Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved.
-
-To use, simply 'import logging' and log away!
-"""
-
-import sys, logging, logging.handlers, socket, struct, os, traceback, re
-import types, cStringIO
-
-try:
-    import thread
-    import threading
-except ImportError:
-    thread = None
-
-from SocketServer import ThreadingTCPServer, StreamRequestHandler
-
-
-DEFAULT_LOGGING_CONFIG_PORT = 9030
-
-if sys.platform == "win32":
-    RESET_ERROR = 10054   #WSAECONNRESET
-else:
-    RESET_ERROR = 104     #ECONNRESET
-
-#
-#   The following code implements a socket listener for on-the-fly
-#   reconfiguration of logging.
-#
-#   _listener holds the server object doing the listening
-_listener = None
-
-def fileConfig(fname, defaults=None, disable_existing_loggers=True):
-    """
-    Read the logging configuration from a ConfigParser-format file.
-
-    This can be called several times from an application, allowing an end user
-    the ability to select from various pre-canned configurations (if the
-    developer provides a mechanism to present the choices and load the chosen
-    configuration).
-    """
-    import ConfigParser
-
-    cp = ConfigParser.ConfigParser(defaults)
-    if hasattr(fname, 'readline'):
-        cp.readfp(fname)
-    else:
-        cp.read(fname)
-
-    formatters = _create_formatters(cp)
-
-    # critical section
-    logging._acquireLock()
-    try:
-        logging._handlers.clear()
-        del logging._handlerList[:]
-        # Handlers add themselves to logging._handlers
-        handlers = _install_handlers(cp, formatters)
-        _install_loggers(cp, handlers, disable_existing_loggers)
-    finally:
-        logging._releaseLock()
-
-
-def _resolve(name):
-    """Resolve a dotted name to a global object."""
-    name = name.split('.')
-    used = name.pop(0)
-    found = __import__(used)
-    for n in name:
-        used = used + '.' + n
-        try:
-            found = getattr(found, n)
-        except AttributeError:
-            __import__(used)
-            found = getattr(found, n)
-    return found
-
-def _strip_spaces(alist):
-    return map(lambda x: x.strip(), alist)
-
-def _encoded(s):
-    return s if isinstance(s, str) else s.encode('utf-8')
-
-def _create_formatters(cp):
-    """Create and return formatters"""
-    flist = cp.get("formatters", "keys")
-    if not len(flist):
-        return {}
-    flist = flist.split(",")
-    flist = _strip_spaces(flist)
-    formatters = {}
-    for form in flist:
-        sectname = "formatter_%s" % form
-        opts = cp.options(sectname)
-        if "format" in opts:
-            fs = cp.get(sectname, "format", 1)
-        else:
-            fs = None
-        if "datefmt" in opts:
-            dfs = cp.get(sectname, "datefmt", 1)
-        else:
-            dfs = None
-        c = logging.Formatter
-        if "class" in opts:
-            class_name = cp.get(sectname, "class")
-            if class_name:
-                c = _resolve(class_name)
-        f = c(fs, dfs)
-        formatters[form] = f
-    return formatters
-
-
-def _install_handlers(cp, formatters):
-    """Install and return handlers"""
-    hlist = cp.get("handlers", "keys")
-    if not len(hlist):
-        return {}
-    hlist = hlist.split(",")
-    hlist = _strip_spaces(hlist)
-    handlers = {}
-    fixups = [] #for inter-handler references
-    for hand in hlist:
-        sectname = "handler_%s" % hand
-        klass = cp.get(sectname, "class")
-        opts = cp.options(sectname)
-        if "formatter" in opts:
-            fmt = cp.get(sectname, "formatter")
-        else:
-            fmt = ""
-        try:
-            klass = eval(klass, vars(logging))
-        except (AttributeError, NameError):
-            klass = _resolve(klass)
-        args = cp.get(sectname, "args")
-        args = eval(args, vars(logging))
-        h = klass(*args)
-        if "level" in opts:
-            level = cp.get(sectname, "level")
-            h.setLevel(logging._levelNames[level])
-        if len(fmt):
-            h.setFormatter(formatters[fmt])
-        if issubclass(klass, logging.handlers.MemoryHandler):
-            if "target" in opts:
-                target = cp.get(sectname,"target")
-            else:
-                target = ""
-            if len(target): #the target handler may not be loaded yet, so keep for later...
-                fixups.append((h, target))
-        handlers[hand] = h
-    #now all handlers are loaded, fixup inter-handler references...
-    for h, t in fixups:
-        h.setTarget(handlers[t])
-    return handlers
-
-
-def _install_loggers(cp, handlers, disable_existing_loggers):
-    """Create and install loggers"""
-
-    # configure the root first
-    llist = cp.get("loggers", "keys")
-    llist = llist.split(",")
-    llist = list(map(lambda x: x.strip(), llist))
-    llist.remove("root")
-    sectname = "logger_root"
-    root = logging.root
-    log = root
-    opts = cp.options(sectname)
-    if "level" in opts:
-        level = cp.get(sectname, "level")
-        log.setLevel(logging._levelNames[level])
-    for h in root.handlers[:]:
-        root.removeHandler(h)
-    hlist = cp.get(sectname, "handlers")
-    if len(hlist):
-        hlist = hlist.split(",")
-        hlist = _strip_spaces(hlist)
-        for hand in hlist:
-            log.addHandler(handlers[hand])
-
-    #and now the others...
-    #we don't want to lose the existing loggers,
-    #since other threads may have pointers to them.
-    #existing is set to contain all existing loggers,
-    #and as we go through the new configuration we
-    #remove any which are configured. At the end,
-    #what's left in existing is the set of loggers
-    #which were in the previous configuration but
-    #which are not in the new configuration.
-    existing = list(root.manager.loggerDict.keys())
-    #The list needs to be sorted so that we can
-    #avoid disabling child loggers of explicitly
-    #named loggers. With a sorted list it is easier
-    #to find the child loggers.
-    existing.sort(key=_encoded)
-    #We'll keep the list of existing loggers
-    #which are children of named loggers here...
-    child_loggers = []
-    #now set up the new ones...
-    for log in llist:
-        sectname = "logger_%s" % log
-        qn = cp.get(sectname, "qualname")
-        opts = cp.options(sectname)
-        if "propagate" in opts:
-            propagate = cp.getint(sectname, "propagate")
-        else:
-            propagate = 1
-        logger = logging.getLogger(qn)
-        if qn in existing:
-            i = existing.index(qn) + 1 # start with the entry after qn
-            prefixed = qn + "."
-            pflen = len(prefixed)
-            num_existing = len(existing)
-            while i < num_existing:
-                if existing[i][:pflen] == prefixed:
-                    child_loggers.append(existing[i])
-                i += 1
-            existing.remove(qn)
-        if "level" in opts:
-            level = cp.get(sectname, "level")
-            logger.setLevel(logging._levelNames[level])
-        for h in logger.handlers[:]:
-            logger.removeHandler(h)
-        logger.propagate = propagate
-        logger.disabled = 0
-        hlist = cp.get(sectname, "handlers")
-        if len(hlist):
-            hlist = hlist.split(",")
-            hlist = _strip_spaces(hlist)
-            for hand in hlist:
-                logger.addHandler(handlers[hand])
-
-    #Disable any old loggers. There's no point deleting
-    #them as other threads may continue to hold references
-    #and by disabling them, you stop them doing any logging.
-    #However, don't disable children of named loggers, as that's
-    #probably not what was intended by the user.
-    for log in existing:
-        logger = root.manager.loggerDict[log]
-        if log in child_loggers:
-            logger.level = logging.NOTSET
-            logger.handlers = []
-            logger.propagate = 1
-        elif disable_existing_loggers:
-            logger.disabled = 1
-
-
-
-IDENTIFIER = re.compile('^[a-z_][a-z0-9_]*$', re.I)
-
-
-def valid_ident(s):
-    m = IDENTIFIER.match(s)
-    if not m:
-        raise ValueError('Not a valid Python identifier: %r' % s)
-    return True
-
-
-# The ConvertingXXX classes are wrappers around standard Python containers,
-# and they serve to convert any suitable values in the container. The
-# conversion converts base dicts, lists and tuples to their wrapped
-# equivalents, whereas strings which match a conversion format are converted
-# appropriately.
-#
-# Each wrapper should have a configurator attribute holding the actual
-# configurator to use for conversion.
-
-class ConvertingDict(dict):
-    """A converting dictionary wrapper."""
-
-    def __getitem__(self, key):
-        value = dict.__getitem__(self, key)
-        result = self.configurator.convert(value)
-        #If the converted value is different, save for next time
-        if value is not result:
-            self[key] = result
-            if type(result) in (ConvertingDict, ConvertingList,
-                                ConvertingTuple):
-                result.parent = self
-                result.key = key
-        return result
-
-    def get(self, key, default=None):
-        value = dict.get(self, key, default)
-        result = self.configurator.convert(value)
-        #If the converted value is different, save for next time
-        if value is not result:
-            self[key] = result
-            if type(result) in (ConvertingDict, ConvertingList,
-                                ConvertingTuple):
-                result.parent = self
-                result.key = key
-        return result
-
-    def pop(self, key, default=None):
-        value = dict.pop(self, key, default)
-        result = self.configurator.convert(value)
-        if value is not result:
-            if type(result) in (ConvertingDict, ConvertingList,
-                                ConvertingTuple):
-                result.parent = self
-                result.key = key
-        return result
-
-class ConvertingList(list):
-    """A converting list wrapper."""
-    def __getitem__(self, key):
-        value = list.__getitem__(self, key)
-        result = self.configurator.convert(value)
-        #If the converted value is different, save for next time
-        if value is not result:
-            self[key] = result
-            if type(result) in (ConvertingDict, ConvertingList,
-                                ConvertingTuple):
-                result.parent = self
-                result.key = key
-        return result
-
-    def pop(self, idx=-1):
-        value = list.pop(self, idx)
-        result = self.configurator.convert(value)
-        if value is not result:
-            if type(result) in (ConvertingDict, ConvertingList,
-                                ConvertingTuple):
-                result.parent = self
-        return result
-
-class ConvertingTuple(tuple):
-    """A converting tuple wrapper."""
-    def __getitem__(self, key):
-        value = tuple.__getitem__(self, key)
-        result = self.configurator.convert(value)
-        if value is not result:
-            if type(result) in (ConvertingDict, ConvertingList,
-                                ConvertingTuple):
-                result.parent = self
-                result.key = key
-        return result
-
-class BaseConfigurator(object):
-    """
-    The configurator base class which defines some useful defaults.
-    """
-
-    CONVERT_PATTERN = re.compile(r'^(?P<prefix>[a-z]+)://(?P<suffix>.*)$')
-
-    WORD_PATTERN = re.compile(r'^\s*(\w+)\s*')
-    DOT_PATTERN = re.compile(r'^\.\s*(\w+)\s*')
-    INDEX_PATTERN = re.compile(r'^\[\s*(\w+)\s*\]\s*')
-    DIGIT_PATTERN = re.compile(r'^\d+$')
-
-    value_converters = {
-        'ext' : 'ext_convert',
-        'cfg' : 'cfg_convert',
-    }
-
-    # We might want to use a different one, e.g. importlib
-    importer = __import__
-
-    def __init__(self, config):
-        self.config = ConvertingDict(config)
-        self.config.configurator = self
-
-    def resolve(self, s):
-        """
-        Resolve strings to objects using standard import and attribute
-        syntax.
-        """
-        name = s.split('.')
-        used = name.pop(0)
-        try:
-            found = self.importer(used)
-            for frag in name:
-                used += '.' + frag
-                try:
-                    found = getattr(found, frag)
-                except AttributeError:
-                    self.importer(used)
-                    found = getattr(found, frag)
-            return found
-        except ImportError:
-            e, tb = sys.exc_info()[1:]
-            v = ValueError('Cannot resolve %r: %s' % (s, e))
-            v.__cause__, v.__traceback__ = e, tb
-            raise v
-
-    def ext_convert(self, value):
-        """Default converter for the ext:// protocol."""
-        return self.resolve(value)
-
-    def cfg_convert(self, value):
-        """Default converter for the cfg:// protocol."""
-        rest = value
-        m = self.WORD_PATTERN.match(rest)
-        if m is None:
-            raise ValueError("Unable to convert %r" % value)
-        else:
-            rest = rest[m.end():]
-            d = self.config[m.groups()[0]]
-            #print d, rest
-            while rest:
-                m = self.DOT_PATTERN.match(rest)
-                if m:
-                    d = d[m.groups()[0]]
-                else:
-                    m = self.INDEX_PATTERN.match(rest)
-                    if m:
-                        idx = m.groups()[0]
-                        if not self.DIGIT_PATTERN.match(idx):
-                            d = d[idx]
-                        else:
-                            try:
-                                n = int(idx) # try as number first (most likely)
-                                d = d[n]
-                            except TypeError:
-                                d = d[idx]
-                if m:
-                    rest = rest[m.end():]
-                else:
-                    raise ValueError('Unable to convert '
-                                     '%r at %r' % (value, rest))
-        #rest should be empty
-        return d
-
-    def convert(self, value):
-        """
-        Convert values to an appropriate type. dicts, lists and tuples are
-        replaced by their converting alternatives. Strings are checked to
-        see if they have a conversion format and are converted if they do.
-        """
-        if not isinstance(value, ConvertingDict) and isinstance(value, dict):
-            value = ConvertingDict(value)
-            value.configurator = self
-        elif not isinstance(value, ConvertingList) and isinstance(value, list):
-            value = ConvertingList(value)
-            value.configurator = self
-        elif not isinstance(value, ConvertingTuple) and\
-                 isinstance(value, tuple):
-            value = ConvertingTuple(value)
-            value.configurator = self
-        elif isinstance(value, basestring): # str for py3k
-            m = self.CONVERT_PATTERN.match(value)
-            if m:
-                d = m.groupdict()
-                prefix = d['prefix']
-                converter = self.value_converters.get(prefix, None)
-                if converter:
-                    suffix = d['suffix']
-                    converter = getattr(self, converter)
-                    value = converter(suffix)
-        return value
-
-    def configure_custom(self, config):
-        """Configure an object with a user-supplied factory."""
-        c = config.pop('()')
-        if not hasattr(c, '__call__') and hasattr(types, 'ClassType') and type(c) != types.ClassType:
-            c = self.resolve(c)
-        props = config.pop('.', None)
-        # Check for valid identifiers
-        kwargs = dict([(k, config[k]) for k in config if valid_ident(k)])
-        result = c(**kwargs)
-        if props:
-            for name, value in props.items():
-                setattr(result, name, value)
-        return result
-
-    def as_tuple(self, value):
-        """Utility function which converts lists to tuples."""
-        if isinstance(value, list):
-            value = tuple(value)
-        return value
-
-class DictConfigurator(BaseConfigurator):
-    """
-    Configure logging using a dictionary-like object to describe the
-    configuration.
-    """
-
-    def configure(self):
-        """Do the configuration."""
-
-        config = self.config
-        if 'version' not in config:
-            raise ValueError("dictionary doesn't specify a version")
-        if config['version'] != 1:
-            raise ValueError("Unsupported version: %s" % config['version'])
-        incremental = config.pop('incremental', False)
-        EMPTY_DICT = {}
-        logging._acquireLock()
-        try:
-            if incremental:
-                handlers = config.get('handlers', EMPTY_DICT)
-                for name in handlers:
-                    if name not in logging._handlers:
-                        raise ValueError('No handler found with '
-                                         'name %r'  % name)
-                    else:
-                        try:
-                            handler = logging._handlers[name]
-                            handler_config = handlers[name]
-                            level = handler_config.get('level', None)
-                            if level:
-                                handler.setLevel(logging._checkLevel(level))
-                        except StandardError, e:
-                            raise ValueError('Unable to configure handler '
-                                             '%r: %s' % (name, e))
-                loggers = config.get('loggers', EMPTY_DICT)
-                for name in loggers:
-                    try:
-                        self.configure_logger(name, loggers[name], True)
-                    except StandardError, e:
-                        raise ValueError('Unable to configure logger '
-                                         '%r: %s' % (name, e))
-                root = config.get('root', None)
-                if root:
-                    try:
-                        self.configure_root(root, True)
-                    except StandardError, e:
-                        raise ValueError('Unable to configure root '
-                                         'logger: %s' % e)
-            else:
-                disable_existing = config.pop('disable_existing_loggers', True)
-
-                logging._handlers.clear()
-                del logging._handlerList[:]
-
-                # Do formatters first - they don't refer to anything else
-                formatters = config.get('formatters', EMPTY_DICT)
-                for name in formatters:
-                    try:
-                        formatters[name] = self.configure_formatter(
-                                                            formatters[name])
-                    except StandardError, e:
-                        raise ValueError('Unable to configure '
-                                         'formatter %r: %s' % (name, e))
-                # Next, do filters - they don't refer to anything else, either
-                filters = config.get('filters', EMPTY_DICT)
-                for name in filters:
-                    try:
-                        filters[name] = self.configure_filter(filters[name])
-                    except StandardError, e:
-                        raise ValueError('Unable to configure '
-                                         'filter %r: %s' % (name, e))
-
-                # Next, do handlers - they refer to formatters and filters
-                # As handlers can refer to other handlers, sort the keys
-                # to allow a deterministic order of configuration
-                handlers = config.get('handlers', EMPTY_DICT)
-                for name in sorted(handlers):
-                    try:
-                        handler = self.configure_handler(handlers[name])
-                        handler.name = name
-                        handlers[name] = handler
-                    except StandardError, e:
-                        raise ValueError('Unable to configure handler '
-                                         '%r: %s' % (name, e))
-                # Next, do loggers - they refer to handlers and filters
-
-                #we don't want to lose the existing loggers,
-                #since other threads may have pointers to them.
-                #existing is set to contain all existing loggers,
-                #and as we go through the new configuration we
-                #remove any which are configured. At the end,
-                #what's left in existing is the set of loggers
-                #which were in the previous configuration but
-                #which are not in the new configuration.
-                root = logging.root
-                existing = root.manager.loggerDict.keys()
-                #The list needs to be sorted so that we can
-                #avoid disabling child loggers of explicitly
-                #named loggers. With a sorted list it is easier
-                #to find the child loggers.
-                existing.sort(key=_encoded)
-                #We'll keep the list of existing loggers
-                #which are children of named loggers here...
-                child_loggers = []
-                #now set up the new ones...
-                loggers = config.get('loggers', EMPTY_DICT)
-                for name in loggers:
-                    if name in existing:
-                        i = existing.index(name)
-                        prefixed = name + "."
-                        pflen = len(prefixed)
-                        num_existing = len(existing)
-                        i = i + 1 # look at the entry after name
-                        while (i < num_existing) and\
-                              (existing[i][:pflen] == prefixed):
-                            child_loggers.append(existing[i])
-                            i = i + 1
-                        existing.remove(name)
-                    try:
-                        self.configure_logger(name, loggers[name])
-                    except StandardError, e:
-                        raise ValueError('Unable to configure logger '
-                                         '%r: %s' % (name, e))
-
-                #Disable any old loggers. There's no point deleting
-                #them as other threads may continue to hold references
-                #and by disabling them, you stop them doing any logging.
-                #However, don't disable children of named loggers, as that's
-                #probably not what was intended by the user.
-                for log in existing:
-                    logger = root.manager.loggerDict[log]
-                    if log in child_loggers:
-                        logger.level = logging.NOTSET
-                        logger.handlers = []
-                        logger.propagate = True
-                    elif disable_existing:
-                        logger.disabled = True
-
-                # And finally, do the root logger
-                root = config.get('root', None)
-                if root:
-                    try:
-                        self.configure_root(root)
-                    except StandardError, e:
-                        raise ValueError('Unable to configure root '
-                                         'logger: %s' % e)
-        finally:
-            logging._releaseLock()
-
-    def configure_formatter(self, config):
-        """Configure a formatter from a dictionary."""
-        if '()' in config:
-            factory = config['()'] # for use in exception handler
-            try:
-                result = self.configure_custom(config)
-            except TypeError, te:
-                if "'format'" not in str(te):
-                    raise
-                #Name of parameter changed from fmt to format.
-                #Retry with old name.
-                #This is so that code can be used with older Python versions
-                #(e.g. by Django)
-                config['fmt'] = config.pop('format')
-                config['()'] = factory
-                result = self.configure_custom(config)
-        else:
-            fmt = config.get('format', None)
-            dfmt = config.get('datefmt', None)
-            result = logging.Formatter(fmt, dfmt)
-        return result
-
-    def configure_filter(self, config):
-        """Configure a filter from a dictionary."""
-        if '()' in config:
-            result = self.configure_custom(config)
-        else:
-            name = config.get('name', '')
-            result = logging.Filter(name)
-        return result
-
-    def add_filters(self, filterer, filters):
-        """Add filters to a filterer from a list of names."""
-        for f in filters:
-            try:
-                filterer.addFilter(self.config['filters'][f])
-            except StandardError, e:
-                raise ValueError('Unable to add filter %r: %s' % (f, e))
-
-    def configure_handler(self, config):
-        """Configure a handler from a dictionary."""
-        formatter = config.pop('formatter', None)
-        if formatter:
-            try:
-                formatter = self.config['formatters'][formatter]
-            except StandardError, e:
-                raise ValueError('Unable to set formatter '
-                                 '%r: %s' % (formatter, e))
-        level = config.pop('level', None)
-        filters = config.pop('filters', None)
-        if '()' in config:
-            c = config.pop('()')
-            if not hasattr(c, '__call__') and hasattr(types, 'ClassType') and type(c) != types.ClassType:
-                c = self.resolve(c)
-            factory = c
-        else:
-            klass = self.resolve(config.pop('class'))
-            #Special case for handler which refers to another handler
-            if issubclass(klass, logging.handlers.MemoryHandler) and\
-                'target' in config:
-                try:
-                    config['target'] = self.config['handlers'][config['target']]
-                except StandardError, e:
-                    raise ValueError('Unable to set target handler '
-                                     '%r: %s' % (config['target'], e))
-            elif issubclass(klass, logging.handlers.SMTPHandler) and\
-                'mailhost' in config:
-                config['mailhost'] = self.as_tuple(config['mailhost'])
-            elif issubclass(klass, logging.handlers.SysLogHandler) and\
-                'address' in config:
-                config['address'] = self.as_tuple(config['address'])
-            factory = klass
-        kwargs = dict([(k, config[k]) for k in config if valid_ident(k)])
-        try:
-            result = factory(**kwargs)
-        except TypeError, te:
-            if "'stream'" not in str(te):
-                raise
-            #The argument name changed from strm to stream
-            #Retry with old name.
-            #This is so that code can be used with older Python versions
-            #(e.g. by Django)
-            kwargs['strm'] = kwargs.pop('stream')
-            result = factory(**kwargs)
-        if formatter:
-            result.setFormatter(formatter)
-        if level is not None:
-            result.setLevel(logging._checkLevel(level))
-        if filters:
-            self.add_filters(result, filters)
-        return result
-
-    def add_handlers(self, logger, handlers):
-        """Add handlers to a logger from a list of names."""
-        for h in handlers:
-            try:
-                logger.addHandler(self.config['handlers'][h])
-            except StandardError, e:
-                raise ValueError('Unable to add handler %r: %s' % (h, e))
-
-    def common_logger_config(self, logger, config, incremental=False):
-        """
-        Perform configuration which is common to root and non-root loggers.
-        """
-        level = config.get('level', None)
-        if level is not None:
-            logger.setLevel(logging._checkLevel(level))
-        if not incremental:
-            #Remove any existing handlers
-            for h in logger.handlers[:]:
-                logger.removeHandler(h)
-            handlers = config.get('handlers', None)
-            if handlers:
-                self.add_handlers(logger, handlers)
-            filters = config.get('filters', None)
-            if filters:
-                self.add_filters(logger, filters)
-
-    def configure_logger(self, name, config, incremental=False):
-        """Configure a non-root logger from a dictionary."""
-        logger = logging.getLogger(name)
-        self.common_logger_config(logger, config, incremental)
-        propagate = config.get('propagate', None)
-        if propagate is not None:
-            logger.propagate = propagate
-
-    def configure_root(self, config, incremental=False):
-        """Configure a root logger from a dictionary."""
-        root = logging.getLogger()
-        self.common_logger_config(root, config, incremental)
-
-dictConfigClass = DictConfigurator
-
-def dictConfig(config):
-    """Configure logging using a dictionary."""
-    dictConfigClass(config).configure()
-
-
-def listen(port=DEFAULT_LOGGING_CONFIG_PORT):
-    """
-    Start up a socket server on the specified port, and listen for new
-    configurations.
-
-    These will be sent as a file suitable for processing by fileConfig().
-    Returns a Thread object on which you can call start() to start the server,
-    and which you can join() when appropriate. To stop the server, call
-    stopListening().
-    """
-    if not thread:
-        raise NotImplementedError("listen() needs threading to work")
-
-    class ConfigStreamHandler(StreamRequestHandler):
-        """
-        Handler for a logging configuration request.
-
-        It expects a completely new logging configuration and uses fileConfig
-        to install it.
-        """
-        def handle(self):
-            """
-            Handle a request.
-
-            Each request is expected to be a 4-byte length, packed using
-            struct.pack(">L", n), followed by the config file.
-            Uses fileConfig() to do the grunt work.
-            """
-            import tempfile
-            try:
-                conn = self.connection
-                chunk = conn.recv(4)
-                if len(chunk) == 4:
-                    slen = struct.unpack(">L", chunk)[0]
-                    chunk = self.connection.recv(slen)
-                    while len(chunk) < slen:
-                        chunk = chunk + conn.recv(slen - len(chunk))
-                    try:
-                        import json
-                        d =json.loads(chunk)
-                        assert isinstance(d, dict)
-                        dictConfig(d)
-                    except:
-                        #Apply new configuration.
-
-                        file = cStringIO.StringIO(chunk)
-                        try:
-                            fileConfig(file)
-                        except (KeyboardInterrupt, SystemExit):
-                            raise
-                        except:
-                            traceback.print_exc()
-                    if self.server.ready:
-                        self.server.ready.set()
-            except socket.error, e:
-                if not isinstance(e.args, tuple):
-                    raise
-                else:
-                    errcode = e.args[0]
-                    if errcode != RESET_ERROR:
-                        raise
-
-    class ConfigSocketReceiver(ThreadingTCPServer):
-        """
-        A simple TCP socket-based logging config receiver.
-        """
-
-        allow_reuse_address = 1
-
-        def __init__(self, host='localhost', port=DEFAULT_LOGGING_CONFIG_PORT,
-                     handler=None, ready=None):
-            ThreadingTCPServer.__init__(self, (host, port), handler)
-            logging._acquireLock()
-            self.abort = 0
-            logging._releaseLock()
-            self.timeout = 1
-            self.ready = ready
-
-        def serve_until_stopped(self):
-            import select
-            abort = 0
-            while not abort:
-                rd, wr, ex = select.select([self.socket.fileno()],
-                                           [], [],
-                                           self.timeout)
-                if rd:
-                    self.handle_request()
-                logging._acquireLock()
-                abort = self.abort
-                logging._releaseLock()
-            self.socket.close()
-
-    class Server(threading.Thread):
-
-        def __init__(self, rcvr, hdlr, port):
-            super(Server, self).__init__()
-            self.rcvr = rcvr
-            self.hdlr = hdlr
-            self.port = port
-            self.ready = threading.Event()
-
-        def run(self):
-            server = self.rcvr(port=self.port, handler=self.hdlr,
-                               ready=self.ready)
-            if self.port == 0:
-                self.port = server.server_address[1]
-            self.ready.set()
-            global _listener
-            logging._acquireLock()
-            _listener = server
-            logging._releaseLock()
-            server.serve_until_stopped()
-
-    return Server(ConfigSocketReceiver, ConfigStreamHandler, port)
-
-def stopListening():
-    """
-    Stop the listening server which was created with a call to listen().
-    """
-    global _listener
-    logging._acquireLock()
-    try:
-        if _listener:
-            _listener.abort = 1
-            _listener = None
-    finally:
-        logging._releaseLock()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/logging/handlers.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/logging/handlers.py
deleted file mode 100644
index 652d0c1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/logging/handlers.py
+++ /dev/null
@@ -1,1158 +0,0 @@
-# Copyright 2001-2010 by Vinay Sajip. All Rights Reserved.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted,
-# provided that the above copyright notice appear in all copies and that
-# both that copyright notice and this permission notice appear in
-# supporting documentation, and that the name of Vinay Sajip
-# not be used in advertising or publicity pertaining to distribution
-# of the software without specific, written prior permission.
-# VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
-# VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
-# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-"""
-Additional handlers for the logging package for Python. The core package is
-based on PEP 282 and comments thereto in comp.lang.python, and influenced by
-Apache's log4j system.
-
-Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved.
-
-To use, simply 'import logging.handlers' and log away!
-"""
-
-import logging, socket, os, cPickle, struct, time, re
-from stat import ST_DEV, ST_INO, ST_MTIME
-
-try:
-    import codecs
-except ImportError:
-    codecs = None
-try:
-    unicode
-    _unicode = True
-except NameError:
-    _unicode = False
-
-#
-# Some constants...
-#
-
-DEFAULT_TCP_LOGGING_PORT    = 9020
-DEFAULT_UDP_LOGGING_PORT    = 9021
-DEFAULT_HTTP_LOGGING_PORT   = 9022
-DEFAULT_SOAP_LOGGING_PORT   = 9023
-SYSLOG_UDP_PORT             = 514
-SYSLOG_TCP_PORT             = 514
-
-_MIDNIGHT = 24 * 60 * 60  # number of seconds in a day
-
-class BaseRotatingHandler(logging.FileHandler):
-    """
-    Base class for handlers that rotate log files at a certain point.
-    Not meant to be instantiated directly.  Instead, use RotatingFileHandler
-    or TimedRotatingFileHandler.
-    """
-    def __init__(self, filename, mode, encoding=None, delay=0):
-        """
-        Use the specified filename for streamed logging
-        """
-        if codecs is None:
-            encoding = None
-        logging.FileHandler.__init__(self, filename, mode, encoding, delay)
-        self.mode = mode
-        self.encoding = encoding
-
-    def emit(self, record):
-        """
-        Emit a record.
-
-        Output the record to the file, catering for rollover as described
-        in doRollover().
-        """
-        try:
-            if self.shouldRollover(record):
-                self.doRollover()
-            logging.FileHandler.emit(self, record)
-        except (KeyboardInterrupt, SystemExit):
-            raise
-        except:
-            self.handleError(record)
-
-class RotatingFileHandler(BaseRotatingHandler):
-    """
-    Handler for logging to a set of files, which switches from one file
-    to the next when the current file reaches a certain size.
-    """
-    def __init__(self, filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=0):
-        """
-        Open the specified file and use it as the stream for logging.
-
-        By default, the file grows indefinitely. You can specify particular
-        values of maxBytes and backupCount to allow the file to rollover at
-        a predetermined size.
-
-        Rollover occurs whenever the current log file is nearly maxBytes in
-        length. If backupCount is >= 1, the system will successively create
-        new files with the same pathname as the base file, but with extensions
-        ".1", ".2" etc. appended to it. For example, with a backupCount of 5
-        and a base file name of "app.log", you would get "app.log",
-        "app.log.1", "app.log.2", ... through to "app.log.5". The file being
-        written to is always "app.log" - when it gets filled up, it is closed
-        and renamed to "app.log.1", and if files "app.log.1", "app.log.2" etc.
-        exist, then they are renamed to "app.log.2", "app.log.3" etc.
-        respectively.
-
-        If maxBytes is zero, rollover never occurs.
-        """
-        # If rotation/rollover is wanted, it doesn't make sense to use another
-        # mode. If for example 'w' were specified, then if there were multiple
-        # runs of the calling application, the logs from previous runs would be
-        # lost if the 'w' is respected, because the log file would be truncated
-        # on each run.
-        if maxBytes > 0:
-            mode = 'a'
-        BaseRotatingHandler.__init__(self, filename, mode, encoding, delay)
-        self.maxBytes = maxBytes
-        self.backupCount = backupCount
-
-    def doRollover(self):
-        """
-        Do a rollover, as described in __init__().
-        """
-        if self.stream:
-            self.stream.close()
-            self.stream = None
-        if self.backupCount > 0:
-            for i in range(self.backupCount - 1, 0, -1):
-                sfn = "%s.%d" % (self.baseFilename, i)
-                dfn = "%s.%d" % (self.baseFilename, i + 1)
-                if os.path.exists(sfn):
-                    #print "%s -> %s" % (sfn, dfn)
-                    if os.path.exists(dfn):
-                        os.remove(dfn)
-                    os.rename(sfn, dfn)
-            dfn = self.baseFilename + ".1"
-            if os.path.exists(dfn):
-                os.remove(dfn)
-            os.rename(self.baseFilename, dfn)
-            #print "%s -> %s" % (self.baseFilename, dfn)
-        self.mode = 'w'
-        self.stream = self._open()
-
-    def shouldRollover(self, record):
-        """
-        Determine if rollover should occur.
-
-        Basically, see if the supplied record would cause the file to exceed
-        the size limit we have.
-        """
-        if self.stream is None:                 # delay was set...
-            self.stream = self._open()
-        if self.maxBytes > 0:                   # are we rolling over?
-            msg = "%s\n" % self.format(record)
-            self.stream.seek(0, 2)  #due to non-posix-compliant Windows feature
-            if self.stream.tell() + len(msg) >= self.maxBytes:
-                return 1
-        return 0
-
-class TimedRotatingFileHandler(BaseRotatingHandler):
-    """
-    Handler for logging to a file, rotating the log file at certain timed
-    intervals.
-
-    If backupCount is > 0, when rollover is done, no more than backupCount
-    files are kept - the oldest ones are deleted.
-    """
-    def __init__(self, filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False):
-        BaseRotatingHandler.__init__(self, filename, 'a', encoding, delay)
-        self.when = when.upper()
-        self.backupCount = backupCount
-        self.utc = utc
-        # Calculate the real rollover interval, which is just the number of
-        # seconds between rollovers.  Also set the filename suffix used when
-        # a rollover occurs.  Current 'when' events supported:
-        # S - Seconds
-        # M - Minutes
-        # H - Hours
-        # D - Days
-        # midnight - roll over at midnight
-        # W{0-6} - roll over on a certain day; 0 - Monday
-        #
-        # Case of the 'when' specifier is not important; lower or upper case
-        # will work.
-        if self.when == 'S':
-            self.interval = 1 # one second
-            self.suffix = "%Y-%m-%d_%H-%M-%S"
-            self.extMatch = r"^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}$"
-        elif self.when == 'M':
-            self.interval = 60 # one minute
-            self.suffix = "%Y-%m-%d_%H-%M"
-            self.extMatch = r"^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}$"
-        elif self.when == 'H':
-            self.interval = 60 * 60 # one hour
-            self.suffix = "%Y-%m-%d_%H"
-            self.extMatch = r"^\d{4}-\d{2}-\d{2}_\d{2}$"
-        elif self.when == 'D' or self.when == 'MIDNIGHT':
-            self.interval = 60 * 60 * 24 # one day
-            self.suffix = "%Y-%m-%d"
-            self.extMatch = r"^\d{4}-\d{2}-\d{2}$"
-        elif self.when.startswith('W'):
-            self.interval = 60 * 60 * 24 * 7 # one week
-            if len(self.when) != 2:
-                raise ValueError("You must specify a day for weekly rollover from 0 to 6 (0 is Monday): %s" % self.when)
-            if self.when[1] < '0' or self.when[1] > '6':
-                raise ValueError("Invalid day specified for weekly rollover: %s" % self.when)
-            self.dayOfWeek = int(self.when[1])
-            self.suffix = "%Y-%m-%d"
-            self.extMatch = r"^\d{4}-\d{2}-\d{2}$"
-        else:
-            raise ValueError("Invalid rollover interval specified: %s" % self.when)
-
-        self.extMatch = re.compile(self.extMatch)
-        self.interval = self.interval * interval # multiply by units requested
-        if os.path.exists(filename):
-            t = os.stat(filename)[ST_MTIME]
-        else:
-            t = int(time.time())
-        self.rolloverAt = self.computeRollover(t)
-
-    def computeRollover(self, currentTime):
-        """
-        Work out the rollover time based on the specified time.
-        """
-        result = currentTime + self.interval
-        # If we are rolling over at midnight or weekly, then the interval is already known.
-        # What we need to figure out is WHEN the next interval is.  In other words,
-        # if you are rolling over at midnight, then your base interval is 1 day,
-        # but you want to start that one day clock at midnight, not now.  So, we
-        # have to fudge the rolloverAt value in order to trigger the first rollover
-        # at the right time.  After that, the regular interval will take care of
-        # the rest.  Note that this code doesn't care about leap seconds. :)
-        if self.when == 'MIDNIGHT' or self.when.startswith('W'):
-            # This could be done with less code, but I wanted it to be clear
-            if self.utc:
-                t = time.gmtime(currentTime)
-            else:
-                t = time.localtime(currentTime)
-            currentHour = t[3]
-            currentMinute = t[4]
-            currentSecond = t[5]
-            # r is the number of seconds left between now and midnight
-            r = _MIDNIGHT - ((currentHour * 60 + currentMinute) * 60 +
-                    currentSecond)
-            result = currentTime + r
-            # If we are rolling over on a certain day, add in the number of days until
-            # the next rollover, but offset by 1 since we just calculated the time
-            # until the next day starts.  There are three cases:
-            # Case 1) The day to rollover is today; in this case, do nothing
-            # Case 2) The day to rollover is further in the interval (i.e., today is
-            #         day 2 (Wednesday) and rollover is on day 6 (Sunday).  Days to
-            #         next rollover is simply 6 - 2 - 1, or 3.
-            # Case 3) The day to rollover is behind us in the interval (i.e., today
-            #         is day 5 (Saturday) and rollover is on day 3 (Thursday).
-            #         Days to rollover is 6 - 5 + 3, or 4.  In this case, it's the
-            #         number of days left in the current week (1) plus the number
-            #         of days in the next week until the rollover day (3).
-            # The calculations described in 2) and 3) above need to have a day added.
-            # This is because the above time calculation takes us to midnight on this
-            # day, i.e. the start of the next day.
-            if self.when.startswith('W'):
-                day = t[6] # 0 is Monday
-                if day != self.dayOfWeek:
-                    if day < self.dayOfWeek:
-                        daysToWait = self.dayOfWeek - day
-                    else:
-                        daysToWait = 6 - day + self.dayOfWeek + 1
-                    newRolloverAt = result + (daysToWait * (60 * 60 * 24))
-                    if not self.utc:
-                        dstNow = t[-1]
-                        dstAtRollover = time.localtime(newRolloverAt)[-1]
-                        if dstNow != dstAtRollover:
-                            if not dstNow:  # DST kicks in before next rollover, so we need to deduct an hour
-                                newRolloverAt = newRolloverAt - 3600
-                            else:           # DST bows out before next rollover, so we need to add an hour
-                                newRolloverAt = newRolloverAt + 3600
-                    result = newRolloverAt
-        return result
-
-    def shouldRollover(self, record):
-        """
-        Determine if rollover should occur.
-
-        record is not used, as we are just comparing times, but it is needed so
-        the method signatures are the same
-        """
-        t = int(time.time())
-        if t >= self.rolloverAt:
-            return 1
-        #print "No need to rollover: %d, %d" % (t, self.rolloverAt)
-        return 0
-
-    def getFilesToDelete(self):
-        """
-        Determine the files to delete when rolling over.
-
-        More specific than the earlier method, which just used glob.glob().
-        """
-        dirName, baseName = os.path.split(self.baseFilename)
-        fileNames = os.listdir(dirName)
-        result = []
-        prefix = baseName + "."
-        plen = len(prefix)
-        for fileName in fileNames:
-            if fileName[:plen] == prefix:
-                suffix = fileName[plen:]
-                if self.extMatch.match(suffix):
-                    result.append(os.path.join(dirName, fileName))
-        result.sort()
-        if len(result) < self.backupCount:
-            result = []
-        else:
-            result = result[:len(result) - self.backupCount]
-        return result
-
-    def doRollover(self):
-        """
-        do a rollover; in this case, a date/time stamp is appended to the filename
-        when the rollover happens.  However, you want the file to be named for the
-        start of the interval, not the current time.  If there is a backup count,
-        then we have to get a list of matching filenames, sort them and remove
-        the one with the oldest suffix.
-        """
-        if self.stream:
-            self.stream.close()
-            self.stream = None
-        # get the time that this sequence started at and make it a TimeTuple
-        t = self.rolloverAt - self.interval
-        if self.utc:
-            timeTuple = time.gmtime(t)
-        else:
-            timeTuple = time.localtime(t)
-        dfn = self.baseFilename + "." + time.strftime(self.suffix, timeTuple)
-        if os.path.exists(dfn):
-            os.remove(dfn)
-        os.rename(self.baseFilename, dfn)
-        if self.backupCount > 0:
-            # find the oldest log file and delete it
-            #s = glob.glob(self.baseFilename + ".20*")
-            #if len(s) > self.backupCount:
-            #    s.sort()
-            #    os.remove(s[0])
-            for s in self.getFilesToDelete():
-                os.remove(s)
-        #print "%s -> %s" % (self.baseFilename, dfn)
-        self.mode = 'w'
-        self.stream = self._open()
-        currentTime = int(time.time())
-        newRolloverAt = self.computeRollover(currentTime)
-        while newRolloverAt <= currentTime:
-            newRolloverAt = newRolloverAt + self.interval
-        #If DST changes and midnight or weekly rollover, adjust for this.
-        if (self.when == 'MIDNIGHT' or self.when.startswith('W')) and not self.utc:
-            dstNow = time.localtime(currentTime)[-1]
-            dstAtRollover = time.localtime(newRolloverAt)[-1]
-            if dstNow != dstAtRollover:
-                if not dstNow:  # DST kicks in before next rollover, so we need to deduct an hour
-                    newRolloverAt = newRolloverAt - 3600
-                else:           # DST bows out before next rollover, so we need to add an hour
-                    newRolloverAt = newRolloverAt + 3600
-        self.rolloverAt = newRolloverAt
-
-class WatchedFileHandler(logging.FileHandler):
-    """
-    A handler for logging to a file, which watches the file
-    to see if it has changed while in use. This can happen because of
-    usage of programs such as newsyslog and logrotate which perform
-    log file rotation. This handler, intended for use under Unix,
-    watches the file to see if it has changed since the last emit.
-    (A file has changed if its device or inode have changed.)
-    If it has changed, the old file stream is closed, and the file
-    opened to get a new stream.
-
-    This handler is not appropriate for use under Windows, because
-    under Windows open files cannot be moved or renamed - logging
-    opens the files with exclusive locks - and so there is no need
-    for such a handler. Furthermore, ST_INO is not supported under
-    Windows; stat always returns zero for this value.
-
-    This handler is based on a suggestion and patch by Chad J.
-    Schroeder.
-    """
-    def __init__(self, filename, mode='a', encoding=None, delay=0):
-        logging.FileHandler.__init__(self, filename, mode, encoding, delay)
-        if not os.path.exists(self.baseFilename):
-            self.dev, self.ino = -1, -1
-        else:
-            stat = os.stat(self.baseFilename)
-            self.dev, self.ino = stat[ST_DEV], stat[ST_INO]
-
-    def emit(self, record):
-        """
-        Emit a record.
-
-        First check if the underlying file has changed, and if it
-        has, close the old stream and reopen the file to get the
-        current stream.
-        """
-        if not os.path.exists(self.baseFilename):
-            stat = None
-            changed = 1
-        else:
-            stat = os.stat(self.baseFilename)
-            changed = (stat[ST_DEV] != self.dev) or (stat[ST_INO] != self.ino)
-        if changed and self.stream is not None:
-            self.stream.flush()
-            self.stream.close()
-            self.stream = self._open()
-            if stat is None:
-                stat = os.stat(self.baseFilename)
-            self.dev, self.ino = stat[ST_DEV], stat[ST_INO]
-        logging.FileHandler.emit(self, record)
-
-class SocketHandler(logging.Handler):
-    """
-    A handler class which writes logging records, in pickle format, to
-    a streaming socket. The socket is kept open across logging calls.
-    If the peer resets it, an attempt is made to reconnect on the next call.
-    The pickle which is sent is that of the LogRecord's attribute dictionary
-    (__dict__), so that the receiver does not need to have the logging module
-    installed in order to process the logging event.
-
-    To unpickle the record at the receiving end into a LogRecord, use the
-    makeLogRecord function.
-    """
-
-    def __init__(self, host, port):
-        """
-        Initializes the handler with a specific host address and port.
-
-        The attribute 'closeOnError' is set to 1 - which means that if
-        a socket error occurs, the socket is silently closed and then
-        reopened on the next logging call.
-        """
-        logging.Handler.__init__(self)
-        self.host = host
-        self.port = port
-        self.sock = None
-        self.closeOnError = 0
-        self.retryTime = None
-        #
-        # Exponential backoff parameters.
-        #
-        self.retryStart = 1.0
-        self.retryMax = 30.0
-        self.retryFactor = 2.0
-
-    def makeSocket(self, timeout=1):
-        """
-        A factory method which allows subclasses to define the precise
-        type of socket they want.
-        """
-        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        if hasattr(s, 'settimeout'):
-            s.settimeout(timeout)
-        s.connect((self.host, self.port))
-        return s
-
-    def createSocket(self):
-        """
-        Try to create a socket, using an exponential backoff with
-        a max retry time. Thanks to Robert Olson for the original patch
-        (SF #815911) which has been slightly refactored.
-        """
-        now = time.time()
-        # Either retryTime is None, in which case this
-        # is the first time back after a disconnect, or
-        # we've waited long enough.
-        if self.retryTime is None:
-            attempt = 1
-        else:
-            attempt = (now >= self.retryTime)
-        if attempt:
-            try:
-                self.sock = self.makeSocket()
-                self.retryTime = None # next time, no delay before trying
-            except socket.error:
-                #Creation failed, so set the retry time and return.
-                if self.retryTime is None:
-                    self.retryPeriod = self.retryStart
-                else:
-                    self.retryPeriod = self.retryPeriod * self.retryFactor
-                    if self.retryPeriod > self.retryMax:
-                        self.retryPeriod = self.retryMax
-                self.retryTime = now + self.retryPeriod
-
-    def send(self, s):
-        """
-        Send a pickled string to the socket.
-
-        This function allows for partial sends which can happen when the
-        network is busy.
-        """
-        if self.sock is None:
-            self.createSocket()
-        #self.sock can be None either because we haven't reached the retry
-        #time yet, or because we have reached the retry time and retried,
-        #but are still unable to connect.
-        if self.sock:
-            try:
-                if hasattr(self.sock, "sendall"):
-                    self.sock.sendall(s)
-                else:
-                    sentsofar = 0
-                    left = len(s)
-                    while left > 0:
-                        sent = self.sock.send(s[sentsofar:])
-                        sentsofar = sentsofar + sent
-                        left = left - sent
-            except socket.error:
-                self.sock.close()
-                self.sock = None  # so we can call createSocket next time
-
-    def makePickle(self, record):
-        """
-        Pickles the record in binary format with a length prefix, and
-        returns it ready for transmission across the socket.
-        """
-        ei = record.exc_info
-        if ei:
-            dummy = self.format(record) # just to get traceback text into record.exc_text
-            record.exc_info = None  # to avoid Unpickleable error
-        s = cPickle.dumps(record.__dict__, 1)
-        if ei:
-            record.exc_info = ei  # for next handler
-        slen = struct.pack(">L", len(s))
-        return slen + s
-
-    def handleError(self, record):
-        """
-        Handle an error during logging.
-
-        An error has occurred during logging. Most likely cause -
-        connection lost. Close the socket so that we can retry on the
-        next event.
-        """
-        if self.closeOnError and self.sock:
-            self.sock.close()
-            self.sock = None        #try to reconnect next time
-        else:
-            logging.Handler.handleError(self, record)
-
-    def emit(self, record):
-        """
-        Emit a record.
-
-        Pickles the record and writes it to the socket in binary format.
-        If there is an error with the socket, silently drop the packet.
-        If there was a problem with the socket, re-establishes the
-        socket.
-        """
-        try:
-            s = self.makePickle(record)
-            self.send(s)
-        except (KeyboardInterrupt, SystemExit):
-            raise
-        except:
-            self.handleError(record)
-
-    def close(self):
-        """
-        Closes the socket.
-        """
-        if self.sock:
-            self.sock.close()
-            self.sock = None
-        logging.Handler.close(self)
-
-class DatagramHandler(SocketHandler):
-    """
-    A handler class which writes logging records, in pickle format, to
-    a datagram socket.  The pickle which is sent is that of the LogRecord's
-    attribute dictionary (__dict__), so that the receiver does not need to
-    have the logging module installed in order to process the logging event.
-
-    To unpickle the record at the receiving end into a LogRecord, use the
-    makeLogRecord function.
-
-    """
-    def __init__(self, host, port):
-        """
-        Initializes the handler with a specific host address and port.
-        """
-        SocketHandler.__init__(self, host, port)
-        self.closeOnError = 0
-
-    def makeSocket(self):
-        """
-        The factory method of SocketHandler is here overridden to create
-        a UDP socket (SOCK_DGRAM).
-        """
-        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-        return s
-
-    def send(self, s):
-        """
-        Send a pickled string to a socket.
-
-        This function no longer allows for partial sends which can happen
-        when the network is busy - UDP does not guarantee delivery and
-        can deliver packets out of sequence.
-        """
-        if self.sock is None:
-            self.createSocket()
-        self.sock.sendto(s, (self.host, self.port))
-
-class SysLogHandler(logging.Handler):
-    """
-    A handler class which sends formatted logging records to a syslog
-    server. Based on Sam Rushing's syslog module:
-    http://www.nightmare.com/squirl/python-ext/misc/syslog.py
-    Contributed by Nicolas Untz (after which minor refactoring changes
-    have been made).
-    """
-
-    # from <linux/sys/syslog.h>:
-    # ======================================================================
-    # priorities/facilities are encoded into a single 32-bit quantity, where
-    # the bottom 3 bits are the priority (0-7) and the top 28 bits are the
-    # facility (0-big number). Both the priorities and the facilities map
-    # roughly one-to-one to strings in the syslogd(8) source code.  This
-    # mapping is included in this file.
-    #
-    # priorities (these are ordered)
-
-    LOG_EMERG     = 0       #  system is unusable
-    LOG_ALERT     = 1       #  action must be taken immediately
-    LOG_CRIT      = 2       #  critical conditions
-    LOG_ERR       = 3       #  error conditions
-    LOG_WARNING   = 4       #  warning conditions
-    LOG_NOTICE    = 5       #  normal but significant condition
-    LOG_INFO      = 6       #  informational
-    LOG_DEBUG     = 7       #  debug-level messages
-
-    #  facility codes
-    LOG_KERN      = 0       #  kernel messages
-    LOG_USER      = 1       #  random user-level messages
-    LOG_MAIL      = 2       #  mail system
-    LOG_DAEMON    = 3       #  system daemons
-    LOG_AUTH      = 4       #  security/authorization messages
-    LOG_SYSLOG    = 5       #  messages generated internally by syslogd
-    LOG_LPR       = 6       #  line printer subsystem
-    LOG_NEWS      = 7       #  network news subsystem
-    LOG_UUCP      = 8       #  UUCP subsystem
-    LOG_CRON      = 9       #  clock daemon
-    LOG_AUTHPRIV  = 10      #  security/authorization messages (private)
-    LOG_FTP       = 11      #  FTP daemon
-
-    #  other codes through 15 reserved for system use
-    LOG_LOCAL0    = 16      #  reserved for local use
-    LOG_LOCAL1    = 17      #  reserved for local use
-    LOG_LOCAL2    = 18      #  reserved for local use
-    LOG_LOCAL3    = 19      #  reserved for local use
-    LOG_LOCAL4    = 20      #  reserved for local use
-    LOG_LOCAL5    = 21      #  reserved for local use
-    LOG_LOCAL6    = 22      #  reserved for local use
-    LOG_LOCAL7    = 23      #  reserved for local use
-
-    priority_names = {
-        "alert":    LOG_ALERT,
-        "crit":     LOG_CRIT,
-        "critical": LOG_CRIT,
-        "debug":    LOG_DEBUG,
-        "emerg":    LOG_EMERG,
-        "err":      LOG_ERR,
-        "error":    LOG_ERR,        #  DEPRECATED
-        "info":     LOG_INFO,
-        "notice":   LOG_NOTICE,
-        "panic":    LOG_EMERG,      #  DEPRECATED
-        "warn":     LOG_WARNING,    #  DEPRECATED
-        "warning":  LOG_WARNING,
-        }
-
-    facility_names = {
-        "auth":     LOG_AUTH,
-        "authpriv": LOG_AUTHPRIV,
-        "cron":     LOG_CRON,
-        "daemon":   LOG_DAEMON,
-        "ftp":      LOG_FTP,
-        "kern":     LOG_KERN,
-        "lpr":      LOG_LPR,
-        "mail":     LOG_MAIL,
-        "news":     LOG_NEWS,
-        "security": LOG_AUTH,       #  DEPRECATED
-        "syslog":   LOG_SYSLOG,
-        "user":     LOG_USER,
-        "uucp":     LOG_UUCP,
-        "local0":   LOG_LOCAL0,
-        "local1":   LOG_LOCAL1,
-        "local2":   LOG_LOCAL2,
-        "local3":   LOG_LOCAL3,
-        "local4":   LOG_LOCAL4,
-        "local5":   LOG_LOCAL5,
-        "local6":   LOG_LOCAL6,
-        "local7":   LOG_LOCAL7,
-        }
-
-    #The map below appears to be trivially lowercasing the key. However,
-    #there's more to it than meets the eye - in some locales, lowercasing
-    #gives unexpected results. See SF #1524081: in the Turkish locale,
-    #"INFO".lower() != "info"
-    priority_map = {
-        "DEBUG" : "debug",
-        "INFO" : "info",
-        "WARNING" : "warning",
-        "ERROR" : "error",
-        "CRITICAL" : "critical"
-    }
-
-    def __init__(self, address=('localhost', SYSLOG_UDP_PORT),
-                 facility=LOG_USER, socktype=socket.SOCK_DGRAM):
-        """
-        Initialize a handler.
-
-        If address is specified as a string, a UNIX socket is used. To log to a
-        local syslogd, "SysLogHandler(address="/dev/log")" can be used.
-        If facility is not specified, LOG_USER is used.
-        """
-        logging.Handler.__init__(self)
-
-        self.address = address
-        self.facility = facility
-        self.socktype = socktype
-
-        if isinstance(address, basestring):
-            self.unixsocket = 1
-            self._connect_unixsocket(address)
-        else:
-            self.unixsocket = 0
-            self.socket = socket.socket(socket.AF_INET, socktype)
-            if socktype == socket.SOCK_STREAM:
-                self.socket.connect(address)
-        self.formatter = None
-
-    def _connect_unixsocket(self, address):
-        self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
-        # syslog may require either DGRAM or STREAM sockets
-        try:
-            self.socket.connect(address)
-        except socket.error:
-            self.socket.close()
-            self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
-            self.socket.connect(address)
-
-    # curious: when talking to the unix-domain '/dev/log' socket, a
-    #   zero-terminator seems to be required.  this string is placed
-    #   into a class variable so that it can be overridden if
-    #   necessary.
-    log_format_string = '<%d>%s\000'
-
-    def encodePriority(self, facility, priority):
-        """
-        Encode the facility and priority. You can pass in strings or
-        integers - if strings are passed, the facility_names and
-        priority_names mapping dictionaries are used to convert them to
-        integers.
-        """
-        if isinstance(facility, basestring):
-            facility = self.facility_names[facility]
-        if isinstance(priority, basestring):
-            priority = self.priority_names[priority]
-        return (facility << 3) | priority
-
-    def close (self):
-        """
-        Closes the socket.
-        """
-        if self.unixsocket:
-            self.socket.close()
-        logging.Handler.close(self)
-
-    def mapPriority(self, levelName):
-        """
-        Map a logging level name to a key in the priority_names map.
-        This is useful in two scenarios: when custom levels are being
-        used, and in the case where you can't do a straightforward
-        mapping by lowercasing the logging level name because of locale-
-        specific issues (see SF #1524081).
-        """
-        return self.priority_map.get(levelName, "warning")
-
-    def emit(self, record):
-        """
-        Emit a record.
-
-        The record is formatted, and then sent to the syslog server. If
-        exception information is present, it is NOT sent to the server.
-        """
-        msg = self.format(record) + '\000'
-        """
-        We need to convert record level to lowercase, maybe this will
-        change in the future.
-        """
-        prio = '<%d>' % self.encodePriority(self.facility,
-                                            self.mapPriority(record.levelname))
-        # Message is a string. Convert to bytes as required by RFC 5424
-        if type(msg) is unicode:
-            msg = msg.encode('utf-8')
-            if codecs:
-                msg = codecs.BOM_UTF8 + msg
-        msg = prio + msg
-        try:
-            if self.unixsocket:
-                try:
-                    self.socket.send(msg)
-                except socket.error:
-                    self._connect_unixsocket(self.address)
-                    self.socket.send(msg)
-            elif self.socktype == socket.SOCK_DGRAM:
-                self.socket.sendto(msg, self.address)
-            else:
-                self.socket.sendall(msg)
-        except (KeyboardInterrupt, SystemExit):
-            raise
-        except:
-            self.handleError(record)
-
-class SMTPHandler(logging.Handler):
-    """
-    A handler class which sends an SMTP email for each logging event.
-    """
-    def __init__(self, mailhost, fromaddr, toaddrs, subject,
-                 credentials=None, secure=None):
-        """
-        Initialize the handler.
-
-        Initialize the instance with the from and to addresses and subject
-        line of the email. To specify a non-standard SMTP port, use the
-        (host, port) tuple format for the mailhost argument. To specify
-        authentication credentials, supply a (username, password) tuple
-        for the credentials argument. To specify the use of a secure
-        protocol (TLS), pass in a tuple for the secure argument. This will
-        only be used when authentication credentials are supplied. The tuple
-        will be either an empty tuple, or a single-value tuple with the name
-        of a keyfile, or a 2-value tuple with the names of the keyfile and
-        certificate file. (This tuple is passed to the `starttls` method).
-        """
-        logging.Handler.__init__(self)
-        if isinstance(mailhost, tuple):
-            self.mailhost, self.mailport = mailhost
-        else:
-            self.mailhost, self.mailport = mailhost, None
-        if isinstance(credentials, tuple):
-            self.username, self.password = credentials
-        else:
-            self.username = None
-        self.fromaddr = fromaddr
-        if isinstance(toaddrs, basestring):
-            toaddrs = [toaddrs]
-        self.toaddrs = toaddrs
-        self.subject = subject
-        self.secure = secure
-
-    def getSubject(self, record):
-        """
-        Determine the subject for the email.
-
-        If you want to specify a subject line which is record-dependent,
-        override this method.
-        """
-        return self.subject
-
-    def emit(self, record):
-        """
-        Emit a record.
-
-        Format the record and send it to the specified addressees.
-        """
-        try:
-            import smtplib
-            from email.utils import formatdate
-            port = self.mailport
-            if not port:
-                port = smtplib.SMTP_PORT
-            smtp = smtplib.SMTP(self.mailhost, port)
-            msg = self.format(record)
-            msg = "From: %s\r\nTo: %s\r\nSubject: %s\r\nDate: %s\r\n\r\n%s" % (
-                            self.fromaddr,
-                            ",".join(self.toaddrs),
-                            self.getSubject(record),
-                            formatdate(), msg)
-            if self.username:
-                if self.secure is not None:
-                    smtp.ehlo()
-                    smtp.starttls(*self.secure)
-                    smtp.ehlo()
-                smtp.login(self.username, self.password)
-            smtp.sendmail(self.fromaddr, self.toaddrs, msg)
-            smtp.quit()
-        except (KeyboardInterrupt, SystemExit):
-            raise
-        except:
-            self.handleError(record)
-
-class NTEventLogHandler(logging.Handler):
-    """
-    A handler class which sends events to the NT Event Log. Adds a
-    registry entry for the specified application name. If no dllname is
-    provided, win32service.pyd (which contains some basic message
-    placeholders) is used. Note that use of these placeholders will make
-    your event logs big, as the entire message source is held in the log.
-    If you want slimmer logs, you have to pass in the name of your own DLL
-    which contains the message definitions you want to use in the event log.
-    """
-    def __init__(self, appname, dllname=None, logtype="Application"):
-        logging.Handler.__init__(self)
-        try:
-            import win32evtlogutil, win32evtlog
-            self.appname = appname
-            self._welu = win32evtlogutil
-            if not dllname:
-                dllname = os.path.split(self._welu.__file__)
-                dllname = os.path.split(dllname[0])
-                dllname = os.path.join(dllname[0], r'win32service.pyd')
-            self.dllname = dllname
-            self.logtype = logtype
-            self._welu.AddSourceToRegistry(appname, dllname, logtype)
-            self.deftype = win32evtlog.EVENTLOG_ERROR_TYPE
-            self.typemap = {
-                logging.DEBUG   : win32evtlog.EVENTLOG_INFORMATION_TYPE,
-                logging.INFO    : win32evtlog.EVENTLOG_INFORMATION_TYPE,
-                logging.WARNING : win32evtlog.EVENTLOG_WARNING_TYPE,
-                logging.ERROR   : win32evtlog.EVENTLOG_ERROR_TYPE,
-                logging.CRITICAL: win32evtlog.EVENTLOG_ERROR_TYPE,
-         }
-        except ImportError:
-            print("The Python Win32 extensions for NT (service, event "\
-                        "logging) appear not to be available.")
-            self._welu = None
-
-    def getMessageID(self, record):
-        """
-        Return the message ID for the event record. If you are using your
-        own messages, you could do this by having the msg passed to the
-        logger being an ID rather than a formatting string. Then, in here,
-        you could use a dictionary lookup to get the message ID. This
-        version returns 1, which is the base message ID in win32service.pyd.
-        """
-        return 1
-
-    def getEventCategory(self, record):
-        """
-        Return the event category for the record.
-
-        Override this if you want to specify your own categories. This version
-        returns 0.
-        """
-        return 0
-
-    def getEventType(self, record):
-        """
-        Return the event type for the record.
-
-        Override this if you want to specify your own types. This version does
-        a mapping using the handler's typemap attribute, which is set up in
-        __init__() to a dictionary which contains mappings for DEBUG, INFO,
-        WARNING, ERROR and CRITICAL. If you are using your own levels you will
-        either need to override this method or place a suitable dictionary in
-        the handler's typemap attribute.
-        """
-        return self.typemap.get(record.levelno, self.deftype)
-
-    def emit(self, record):
-        """
-        Emit a record.
-
-        Determine the message ID, event category and event type. Then
-        log the message in the NT event log.
-        """
-        if self._welu:
-            try:
-                id = self.getMessageID(record)
-                cat = self.getEventCategory(record)
-                type = self.getEventType(record)
-                msg = self.format(record)
-                self._welu.ReportEvent(self.appname, id, cat, type, [msg])
-            except (KeyboardInterrupt, SystemExit):
-                raise
-            except:
-                self.handleError(record)
-
-    def close(self):
-        """
-        Clean up this handler.
-
-        You can remove the application name from the registry as a
-        source of event log entries. However, if you do this, you will
-        not be able to see the events as you intended in the Event Log
-        Viewer - it needs to be able to access the registry to get the
-        DLL name.
-        """
-        #self._welu.RemoveSourceFromRegistry(self.appname, self.logtype)
-        logging.Handler.close(self)
-
-class HTTPHandler(logging.Handler):
-    """
-    A class which sends records to a Web server, using either GET or
-    POST semantics.
-    """
-    def __init__(self, host, url, method="GET"):
-        """
-        Initialize the instance with the host, the request URL, and the method
-        ("GET" or "POST")
-        """
-        logging.Handler.__init__(self)
-        method = method.upper()
-        if method not in ["GET", "POST"]:
-            raise ValueError("method must be GET or POST")
-        self.host = host
-        self.url = url
-        self.method = method
-
-    def mapLogRecord(self, record):
-        """
-        Default implementation of mapping the log record into a dict
-        that is sent as the CGI data. Overwrite in your class.
-        Contributed by Franz  Glasner.
-        """
-        return record.__dict__
-
-    def emit(self, record):
-        """
-        Emit a record.
-
-        Send the record to the Web server as a percent-encoded dictionary
-        """
-        try:
-            import httplib, urllib
-            host = self.host
-            h = httplib.HTTP(host)
-            url = self.url
-            data = urllib.urlencode(self.mapLogRecord(record))
-            if self.method == "GET":
-                if (url.find('?') >= 0):
-                    sep = '&'
-                else:
-                    sep = '?'
-                url = url + "%c%s" % (sep, data)
-            h.putrequest(self.method, url)
-            # support multiple hosts on one IP address...
-            # need to strip optional :port from host, if present
-            i = host.find(":")
-            if i >= 0:
-                host = host[:i]
-            h.putheader("Host", host)
-            if self.method == "POST":
-                h.putheader("Content-type",
-                            "application/x-www-form-urlencoded")
-                h.putheader("Content-length", str(len(data)))
-            h.endheaders(data if self.method == "POST" else None)
-            h.getreply()    #can't do anything with the result
-        except (KeyboardInterrupt, SystemExit):
-            raise
-        except:
-            self.handleError(record)
-
-class BufferingHandler(logging.Handler):
-    """
-  A handler class which buffers logging records in memory. Whenever each
-  record is added to the buffer, a check is made to see if the buffer should
-  be flushed. If it should, then flush() is expected to do what's needed.
-    """
-    def __init__(self, capacity):
-        """
-        Initialize the handler with the buffer size.
-        """
-        logging.Handler.__init__(self)
-        self.capacity = capacity
-        self.buffer = []
-
-    def shouldFlush(self, record):
-        """
-        Should the handler flush its buffer?
-
-        Returns true if the buffer is up to capacity. This method can be
-        overridden to implement custom flushing strategies.
-        """
-        return (len(self.buffer) >= self.capacity)
-
-    def emit(self, record):
-        """
-        Emit a record.
-
-        Append the record. If shouldFlush() tells us to, call flush() to process
-        the buffer.
-        """
-        self.buffer.append(record)
-        if self.shouldFlush(record):
-            self.flush()
-
-    def flush(self):
-        """
-        Override to implement custom flushing behaviour.
-
-        This version just zaps the buffer to empty.
-        """
-        self.buffer = []
-
-    def close(self):
-        """
-        Close the handler.
-
-        This version just flushes and chains to the parent class' close().
-        """
-        self.flush()
-        logging.Handler.close(self)
-
-class MemoryHandler(BufferingHandler):
-    """
-    A handler class which buffers logging records in memory, periodically
-    flushing them to a target handler. Flushing occurs whenever the buffer
-    is full, or when an event of a certain severity or greater is seen.
-    """
-    def __init__(self, capacity, flushLevel=logging.ERROR, target=None):
-        """
-        Initialize the handler with the buffer size, the level at which
-        flushing should occur and an optional target.
-
-        Note that without a target being set either here or via setTarget(),
-        a MemoryHandler is no use to anyone!
-        """
-        BufferingHandler.__init__(self, capacity)
-        self.flushLevel = flushLevel
-        self.target = target
-
-    def shouldFlush(self, record):
-        """
-        Check for buffer full or a record at the flushLevel or higher.
-        """
-        return (len(self.buffer) >= self.capacity) or \
-                (record.levelno >= self.flushLevel)
-
-    def setTarget(self, target):
-        """
-        Set the target handler for this handler.
-        """
-        self.target = target
-
-    def flush(self):
-        """
-        For a MemoryHandler, flushing means just sending the buffered
-        records to the target, if there is one. Override if you want
-        different behaviour.
-        """
-        if self.target:
-            for record in self.buffer:
-                self.target.handle(record)
-            self.buffer = []
-
-    def close(self):
-        """
-        Flush, set the target to None and lose the buffer.
-        """
-        self.flush()
-        self.target = None
-        BufferingHandler.close(self)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/mailbox.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/mailbox.py
deleted file mode 100644
index 3c6489f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/mailbox.py
+++ /dev/null
@@ -1,2171 +0,0 @@
-#! /usr/bin/env python
-
-"""Read/write support for Maildir, mbox, MH, Babyl, and MMDF mailboxes."""
-
-# Notes for authors of new mailbox subclasses:
-#
-# Remember to fsync() changes to disk before closing a modified file
-# or returning from a flush() method.  See functions _sync_flush() and
-# _sync_close().
-
-import sys
-import os
-import time
-import calendar
-import socket
-import errno
-import copy
-import email
-import email.message
-import email.generator
-import StringIO
-try:
-    if sys.platform == 'os2emx':
-        # OS/2 EMX fcntl() not adequate
-        raise ImportError
-    import fcntl
-except ImportError:
-    fcntl = None
-
-import warnings
-with warnings.catch_warnings():
-    if sys.py3kwarning:
-        warnings.filterwarnings("ignore", ".*rfc822 has been removed",
-                                DeprecationWarning)
-    import rfc822
-
-__all__ = [ 'Mailbox', 'Maildir', 'mbox', 'MH', 'Babyl', 'MMDF',
-            'Message', 'MaildirMessage', 'mboxMessage', 'MHMessage',
-            'BabylMessage', 'MMDFMessage', 'UnixMailbox',
-            'PortableUnixMailbox', 'MmdfMailbox', 'MHMailbox', 'BabylMailbox' ]
-
-class Mailbox:
-    """A group of messages in a particular place."""
-
-    def __init__(self, path, factory=None, create=True):
-        """Initialize a Mailbox instance."""
-        self._path = os.path.abspath(os.path.expanduser(path))
-        self._factory = factory
-
-    def add(self, message):
-        """Add message and return assigned key."""
-        raise NotImplementedError('Method must be implemented by subclass')
-
-    def remove(self, key):
-        """Remove the keyed message; raise KeyError if it doesn't exist."""
-        raise NotImplementedError('Method must be implemented by subclass')
-
-    def __delitem__(self, key):
-        self.remove(key)
-
-    def discard(self, key):
-        """If the keyed message exists, remove it."""
-        try:
-            self.remove(key)
-        except KeyError:
-            pass
-
-    def __setitem__(self, key, message):
-        """Replace the keyed message; raise KeyError if it doesn't exist."""
-        raise NotImplementedError('Method must be implemented by subclass')
-
-    def get(self, key, default=None):
-        """Return the keyed message, or default if it doesn't exist."""
-        try:
-            return self.__getitem__(key)
-        except KeyError:
-            return default
-
-    def __getitem__(self, key):
-        """Return the keyed message; raise KeyError if it doesn't exist."""
-        if not self._factory:
-            return self.get_message(key)
-        else:
-            return self._factory(self.get_file(key))
-
-    def get_message(self, key):
-        """Return a Message representation or raise a KeyError."""
-        raise NotImplementedError('Method must be implemented by subclass')
-
-    def get_string(self, key):
-        """Return a string representation or raise a KeyError."""
-        raise NotImplementedError('Method must be implemented by subclass')
-
-    def get_file(self, key):
-        """Return a file-like representation or raise a KeyError."""
-        raise NotImplementedError('Method must be implemented by subclass')
-
-    def iterkeys(self):
-        """Return an iterator over keys."""
-        raise NotImplementedError('Method must be implemented by subclass')
-
-    def keys(self):
-        """Return a list of keys."""
-        return list(self.iterkeys())
-
-    def itervalues(self):
-        """Return an iterator over all messages."""
-        for key in self.iterkeys():
-            try:
-                value = self[key]
-            except KeyError:
-                continue
-            yield value
-
-    def __iter__(self):
-        return self.itervalues()
-
-    def values(self):
-        """Return a list of messages. Memory intensive."""
-        return list(self.itervalues())
-
-    def iteritems(self):
-        """Return an iterator over (key, message) tuples."""
-        for key in self.iterkeys():
-            try:
-                value = self[key]
-            except KeyError:
-                continue
-            yield (key, value)
-
-    def items(self):
-        """Return a list of (key, message) tuples. Memory intensive."""
-        return list(self.iteritems())
-
-    def has_key(self, key):
-        """Return True if the keyed message exists, False otherwise."""
-        raise NotImplementedError('Method must be implemented by subclass')
-
-    def __contains__(self, key):
-        return self.has_key(key)
-
-    def __len__(self):
-        """Return a count of messages in the mailbox."""
-        raise NotImplementedError('Method must be implemented by subclass')
-
-    def clear(self):
-        """Delete all messages."""
-        for key in self.iterkeys():
-            self.discard(key)
-
-    def pop(self, key, default=None):
-        """Delete the keyed message and return it, or default."""
-        try:
-            result = self[key]
-        except KeyError:
-            return default
-        self.discard(key)
-        return result
-
-    def popitem(self):
-        """Delete an arbitrary (key, message) pair and return it."""
-        for key in self.iterkeys():
-            return (key, self.pop(key))     # This is only run once.
-        else:
-            raise KeyError('No messages in mailbox')
-
-    def update(self, arg=None):
-        """Change the messages that correspond to certain keys."""
-        if hasattr(arg, 'iteritems'):
-            source = arg.iteritems()
-        elif hasattr(arg, 'items'):
-            source = arg.items()
-        else:
-            source = arg
-        bad_key = False
-        for key, message in source:
-            try:
-                self[key] = message
-            except KeyError:
-                bad_key = True
-        if bad_key:
-            raise KeyError('No message with key(s)')
-
-    def flush(self):
-        """Write any pending changes to the disk."""
-        raise NotImplementedError('Method must be implemented by subclass')
-
-    def lock(self):
-        """Lock the mailbox."""
-        raise NotImplementedError('Method must be implemented by subclass')
-
-    def unlock(self):
-        """Unlock the mailbox if it is locked."""
-        raise NotImplementedError('Method must be implemented by subclass')
-
-    def close(self):
-        """Flush and close the mailbox."""
-        raise NotImplementedError('Method must be implemented by subclass')
-
-    def _dump_message(self, message, target, mangle_from_=False):
-        # Most files are opened in binary mode to allow predictable seeking.
-        # To get native line endings on disk, the user-friendly \n line endings
-        # used in strings and by email.Message are translated here.
-        """Dump message contents to target file."""
-        if isinstance(message, email.message.Message):
-            buffer = StringIO.StringIO()
-            gen = email.generator.Generator(buffer, mangle_from_, 0)
-            gen.flatten(message)
-            buffer.seek(0)
-            target.write(buffer.read().replace('\n', os.linesep))
-        elif isinstance(message, str):
-            if mangle_from_:
-                message = message.replace('\nFrom ', '\n>From ')
-            message = message.replace('\n', os.linesep)
-            target.write(message)
-        elif hasattr(message, 'read'):
-            while True:
-                line = message.readline()
-                if line == '':
-                    break
-                if mangle_from_ and line.startswith('From '):
-                    line = '>From ' + line[5:]
-                line = line.replace('\n', os.linesep)
-                target.write(line)
-        else:
-            raise TypeError('Invalid message type: %s' % type(message))
-
-
-class Maildir(Mailbox):
-    """A qmail-style Maildir mailbox."""
-
-    colon = ':'
-
-    def __init__(self, dirname, factory=rfc822.Message, create=True):
-        """Initialize a Maildir instance."""
-        Mailbox.__init__(self, dirname, factory, create)
-        self._paths = {
-            'tmp': os.path.join(self._path, 'tmp'),
-            'new': os.path.join(self._path, 'new'),
-            'cur': os.path.join(self._path, 'cur'),
-            }
-        if not os.path.exists(self._path):
-            if create:
-                os.mkdir(self._path, 0700)
-                for path in self._paths.values():
-                    os.mkdir(path, 0o700)
-            else:
-                raise NoSuchMailboxError(self._path)
-        self._toc = {}
-        self._toc_mtimes = {}
-        for subdir in ('cur', 'new'):
-            self._toc_mtimes[subdir] = os.path.getmtime(self._paths[subdir])
-        self._last_read = time.time()  # Records last time we read cur/new
-        self._skewfactor = 0.1         # Adjust if os/fs clocks are skewing
-
-    def add(self, message):
-        """Add message and return assigned key."""
-        tmp_file = self._create_tmp()
-        try:
-            self._dump_message(message, tmp_file)
-        except BaseException:
-            tmp_file.close()
-            os.remove(tmp_file.name)
-            raise
-        _sync_close(tmp_file)
-        if isinstance(message, MaildirMessage):
-            subdir = message.get_subdir()
-            suffix = self.colon + message.get_info()
-            if suffix == self.colon:
-                suffix = ''
-        else:
-            subdir = 'new'
-            suffix = ''
-        uniq = os.path.basename(tmp_file.name).split(self.colon)[0]
-        dest = os.path.join(self._path, subdir, uniq + suffix)
-        try:
-            if hasattr(os, 'link'):
-                os.link(tmp_file.name, dest)
-                os.remove(tmp_file.name)
-            else:
-                os.rename(tmp_file.name, dest)
-        except OSError, e:
-            os.remove(tmp_file.name)
-            if e.errno == errno.EEXIST:
-                raise ExternalClashError('Name clash with existing message: %s'
-                                         % dest)
-            else:
-                raise
-        if isinstance(message, MaildirMessage):
-            os.utime(dest, (os.path.getatime(dest), message.get_date()))
-        return uniq
-
-    def remove(self, key):
-        """Remove the keyed message; raise KeyError if it doesn't exist."""
-        os.remove(os.path.join(self._path, self._lookup(key)))
-
-    def discard(self, key):
-        """If the keyed message exists, remove it."""
-        # This overrides an inapplicable implementation in the superclass.
-        try:
-            self.remove(key)
-        except KeyError:
-            pass
-        except OSError, e:
-            if e.errno != errno.ENOENT:
-                raise
-
-    def __setitem__(self, key, message):
-        """Replace the keyed message; raise KeyError if it doesn't exist."""
-        old_subpath = self._lookup(key)
-        temp_key = self.add(message)
-        temp_subpath = self._lookup(temp_key)
-        if isinstance(message, MaildirMessage):
-            # temp's subdir and suffix were specified by message.
-            dominant_subpath = temp_subpath
-        else:
-            # temp's subdir and suffix were defaults from add().
-            dominant_subpath = old_subpath
-        subdir = os.path.dirname(dominant_subpath)
-        if self.colon in dominant_subpath:
-            suffix = self.colon + dominant_subpath.split(self.colon)[-1]
-        else:
-            suffix = ''
-        self.discard(key)
-        new_path = os.path.join(self._path, subdir, key + suffix)
-        os.rename(os.path.join(self._path, temp_subpath), new_path)
-        if isinstance(message, MaildirMessage):
-            os.utime(new_path, (os.path.getatime(new_path),
-                                message.get_date()))
-
-    def get_message(self, key):
-        """Return a Message representation or raise a KeyError."""
-        subpath = self._lookup(key)
-        f = open(os.path.join(self._path, subpath), 'r')
-        try:
-            if self._factory:
-                msg = self._factory(f)
-            else:
-                msg = MaildirMessage(f)
-        finally:
-            f.close()
-        subdir, name = os.path.split(subpath)
-        msg.set_subdir(subdir)
-        if self.colon in name:
-            msg.set_info(name.split(self.colon)[-1])
-        msg.set_date(os.path.getmtime(os.path.join(self._path, subpath)))
-        return msg
-
-    def get_string(self, key):
-        """Return a string representation or raise a KeyError."""
-        f = open(os.path.join(self._path, self._lookup(key)), 'r')
-        try:
-            return f.read()
-        finally:
-            f.close()
-
-    def get_file(self, key):
-        """Return a file-like representation or raise a KeyError."""
-        f = open(os.path.join(self._path, self._lookup(key)), 'rb')
-        return _ProxyFile(f)
-
-    def iterkeys(self):
-        """Return an iterator over keys."""
-        self._refresh()
-        for key in self._toc:
-            try:
-                self._lookup(key)
-            except KeyError:
-                continue
-            yield key
-
-    def has_key(self, key):
-        """Return True if the keyed message exists, False otherwise."""
-        self._refresh()
-        return key in self._toc
-
-    def __len__(self):
-        """Return a count of messages in the mailbox."""
-        self._refresh()
-        return len(self._toc)
-
-    def flush(self):
-        """Write any pending changes to disk."""
-        # Maildir changes are always written immediately, so there's nothing
-        # to do.
-        pass
-
-    def lock(self):
-        """Lock the mailbox."""
-        return
-
-    def unlock(self):
-        """Unlock the mailbox if it is locked."""
-        return
-
-    def close(self):
-        """Flush and close the mailbox."""
-        return
-
-    def list_folders(self):
-        """Return a list of folder names."""
-        result = []
-        for entry in os.listdir(self._path):
-            if len(entry) > 1 and entry[0] == '.' and \
-               os.path.isdir(os.path.join(self._path, entry)):
-                result.append(entry[1:])
-        return result
-
-    def get_folder(self, folder):
-        """Return a Maildir instance for the named folder."""
-        return Maildir(os.path.join(self._path, '.' + folder),
-                       factory=self._factory,
-                       create=False)
-
-    def add_folder(self, folder):
-        """Create a folder and return a Maildir instance representing it."""
-        path = os.path.join(self._path, '.' + folder)
-        result = Maildir(path, factory=self._factory)
-        maildirfolder_path = os.path.join(path, 'maildirfolder')
-        if not os.path.exists(maildirfolder_path):
-            os.close(os.open(maildirfolder_path, os.O_CREAT | os.O_WRONLY,
-                0666))
-        return result
-
-    def remove_folder(self, folder):
-        """Delete the named folder, which must be empty."""
-        path = os.path.join(self._path, '.' + folder)
-        for entry in os.listdir(os.path.join(path, 'new')) + \
-                     os.listdir(os.path.join(path, 'cur')):
-            if len(entry) < 1 or entry[0] != '.':
-                raise NotEmptyError('Folder contains message(s): %s' % folder)
-        for entry in os.listdir(path):
-            if entry != 'new' and entry != 'cur' and entry != 'tmp' and \
-               os.path.isdir(os.path.join(path, entry)):
-                raise NotEmptyError("Folder contains subdirectory '%s': %s" %
-                                    (folder, entry))
-        for root, dirs, files in os.walk(path, topdown=False):
-            for entry in files:
-                os.remove(os.path.join(root, entry))
-            for entry in dirs:
-                os.rmdir(os.path.join(root, entry))
-        os.rmdir(path)
-
-    def clean(self):
-        """Delete old files in "tmp"."""
-        now = time.time()
-        for entry in os.listdir(os.path.join(self._path, 'tmp')):
-            path = os.path.join(self._path, 'tmp', entry)
-            if now - os.path.getatime(path) > 129600:   # 60 * 60 * 36
-                os.remove(path)
-
-    _count = 1  # This is used to generate unique file names.
-
-    def _create_tmp(self):
-        """Create a file in the tmp subdirectory and open and return it."""
-        now = time.time()
-        hostname = socket.gethostname()
-        if '/' in hostname:
-            hostname = hostname.replace('/', r'\057')
-        if ':' in hostname:
-            hostname = hostname.replace(':', r'\072')
-        uniq = "%s.M%sP%sQ%s.%s" % (int(now), int(now % 1 * 1e6), os.getpid(),
-                                    Maildir._count, hostname)
-        path = os.path.join(self._path, 'tmp', uniq)
-        try:
-            os.stat(path)
-        except OSError, e:
-            if e.errno == errno.ENOENT:
-                Maildir._count += 1
-                try:
-                    return _create_carefully(path)
-                except OSError, e:
-                    if e.errno != errno.EEXIST:
-                        raise
-            else:
-                raise
-
-        # Fall through to here if stat succeeded or open raised EEXIST.
-        raise ExternalClashError('Name clash prevented file creation: %s' %
-                                 path)
-
-    def _refresh(self):
-        """Update table of contents mapping."""
-        # If it has been less than two seconds since the last _refresh() call,
-        # we have to unconditionally re-read the mailbox just in case it has
-        # been modified, because os.path.mtime() has a 2 sec resolution in the
-        # most common worst case (FAT) and a 1 sec resolution typically.  This
-        # results in a few unnecessary re-reads when _refresh() is called
-        # multiple times in that interval, but once the clock ticks over, we
-        # will only re-read as needed.  Because the filesystem might be being
-        # served by an independent system with its own clock, we record and
-        # compare with the mtimes from the filesystem.  Because the other
-        # system's clock might be skewing relative to our clock, we add an
-        # extra delta to our wait.  The default is one tenth second, but is an
-        # instance variable and so can be adjusted if dealing with a
-        # particularly skewed or irregular system.
-        if time.time() - self._last_read > 2 + self._skewfactor:
-            refresh = False
-            for subdir in self._toc_mtimes:
-                mtime = os.path.getmtime(self._paths[subdir])
-                if mtime > self._toc_mtimes[subdir]:
-                    refresh = True
-                self._toc_mtimes[subdir] = mtime
-            if not refresh:
-                return
-        # Refresh toc
-        self._toc = {}
-        for subdir in self._toc_mtimes:
-            path = self._paths[subdir]
-            for entry in os.listdir(path):
-                p = os.path.join(path, entry)
-                if os.path.isdir(p):
-                    continue
-                uniq = entry.split(self.colon)[0]
-                self._toc[uniq] = os.path.join(subdir, entry)
-        self._last_read = time.time()
-
-    def _lookup(self, key):
-        """Use TOC to return subpath for given key, or raise a KeyError."""
-        try:
-            if os.path.exists(os.path.join(self._path, self._toc[key])):
-                return self._toc[key]
-        except KeyError:
-            pass
-        self._refresh()
-        try:
-            return self._toc[key]
-        except KeyError:
-            raise KeyError('No message with key: %s' % key)
-
-    # This method is for backward compatibility only.
-    def next(self):
-        """Return the next message in a one-time iteration."""
-        if not hasattr(self, '_onetime_keys'):
-            self._onetime_keys = self.iterkeys()
-        while True:
-            try:
-                return self[self._onetime_keys.next()]
-            except StopIteration:
-                return None
-            except KeyError:
-                continue
-
-
-class _singlefileMailbox(Mailbox):
-    """A single-file mailbox."""
-
-    def __init__(self, path, factory=None, create=True):
-        """Initialize a single-file mailbox."""
-        Mailbox.__init__(self, path, factory, create)
-        try:
-            f = open(self._path, 'rb+')
-        except IOError, e:
-            if e.errno == errno.ENOENT:
-                if create:
-                    f = open(self._path, 'wb+')
-                else:
-                    raise NoSuchMailboxError(self._path)
-            elif e.errno in (errno.EACCES, errno.EROFS):
-                f = open(self._path, 'rb')
-            else:
-                raise
-        self._file = f
-        self._toc = None
-        self._next_key = 0
-        self._pending = False   # No changes require rewriting the file.
-        self._locked = False
-        self._file_length = None        # Used to record mailbox size
-
-    def add(self, message):
-        """Add message and return assigned key."""
-        self._lookup()
-        self._toc[self._next_key] = self._append_message(message)
-        self._next_key += 1
-        self._pending = True
-        return self._next_key - 1
-
-    def remove(self, key):
-        """Remove the keyed message; raise KeyError if it doesn't exist."""
-        self._lookup(key)
-        del self._toc[key]
-        self._pending = True
-
-    def __setitem__(self, key, message):
-        """Replace the keyed message; raise KeyError if it doesn't exist."""
-        self._lookup(key)
-        self._toc[key] = self._append_message(message)
-        self._pending = True
-
-    def iterkeys(self):
-        """Return an iterator over keys."""
-        self._lookup()
-        for key in self._toc.keys():
-            yield key
-
-    def has_key(self, key):
-        """Return True if the keyed message exists, False otherwise."""
-        self._lookup()
-        return key in self._toc
-
-    def __len__(self):
-        """Return a count of messages in the mailbox."""
-        self._lookup()
-        return len(self._toc)
-
-    def lock(self):
-        """Lock the mailbox."""
-        if not self._locked:
-            _lock_file(self._file)
-            self._locked = True
-
-    def unlock(self):
-        """Unlock the mailbox if it is locked."""
-        if self._locked:
-            _unlock_file(self._file)
-            self._locked = False
-
-    def flush(self):
-        """Write any pending changes to disk."""
-        if not self._pending:
-            return
-
-        # In order to be writing anything out at all, self._toc must
-        # already have been generated (and presumably has been modified
-        # by adding or deleting an item).
-        assert self._toc is not None
-
-        # Check length of self._file; if it's changed, some other process
-        # has modified the mailbox since we scanned it.
-        self._file.seek(0, 2)
-        cur_len = self._file.tell()
-        if cur_len != self._file_length:
-            raise ExternalClashError('Size of mailbox file changed '
-                                     '(expected %i, found %i)' %
-                                     (self._file_length, cur_len))
-
-        new_file = _create_temporary(self._path)
-        try:
-            new_toc = {}
-            self._pre_mailbox_hook(new_file)
-            for key in sorted(self._toc.keys()):
-                start, stop = self._toc[key]
-                self._file.seek(start)
-                self._pre_message_hook(new_file)
-                new_start = new_file.tell()
-                while True:
-                    buffer = self._file.read(min(4096,
-                                                 stop - self._file.tell()))
-                    if buffer == '':
-                        break
-                    new_file.write(buffer)
-                new_toc[key] = (new_start, new_file.tell())
-                self._post_message_hook(new_file)
-        except:
-            new_file.close()
-            os.remove(new_file.name)
-            raise
-        _sync_close(new_file)
-        # self._file is about to get replaced, so no need to sync.
-        self._file.close()
-        try:
-            os.rename(new_file.name, self._path)
-        except OSError, e:
-            if e.errno == errno.EEXIST or \
-              (os.name == 'os2' and e.errno == errno.EACCES):
-                os.remove(self._path)
-                os.rename(new_file.name, self._path)
-            else:
-                raise
-        self._file = open(self._path, 'rb+')
-        self._toc = new_toc
-        self._pending = False
-        if self._locked:
-            _lock_file(self._file, dotlock=False)
-
-    def _pre_mailbox_hook(self, f):
-        """Called before writing the mailbox to file f."""
-        return
-
-    def _pre_message_hook(self, f):
-        """Called before writing each message to file f."""
-        return
-
-    def _post_message_hook(self, f):
-        """Called after writing each message to file f."""
-        return
-
-    def close(self):
-        """Flush and close the mailbox."""
-        self.flush()
-        if self._locked:
-            self.unlock()
-        self._file.close()  # Sync has been done by self.flush() above.
-
-    def _lookup(self, key=None):
-        """Return (start, stop) or raise KeyError."""
-        if self._toc is None:
-            self._generate_toc()
-        if key is not None:
-            try:
-                return self._toc[key]
-            except KeyError:
-                raise KeyError('No message with key: %s' % key)
-
-    def _append_message(self, message):
-        """Append message to mailbox and return (start, stop) offsets."""
-        self._file.seek(0, 2)
-        before = self._file.tell()
-        try:
-            self._pre_message_hook(self._file)
-            offsets = self._install_message(message)
-            self._post_message_hook(self._file)
-        except BaseException:
-            self._file.truncate(before)
-            raise
-        self._file.flush()
-        self._file_length = self._file.tell()  # Record current length of mailbox
-        return offsets
-
-
-
-class _mboxMMDF(_singlefileMailbox):
-    """An mbox or MMDF mailbox."""
-
-    _mangle_from_ = True
-
-    def get_message(self, key):
-        """Return a Message representation or raise a KeyError."""
-        start, stop = self._lookup(key)
-        self._file.seek(start)
-        from_line = self._file.readline().replace(os.linesep, '')
-        string = self._file.read(stop - self._file.tell())
-        msg = self._message_factory(string.replace(os.linesep, '\n'))
-        msg.set_from(from_line[5:])
-        return msg
-
-    def get_string(self, key, from_=False):
-        """Return a string representation or raise a KeyError."""
-        start, stop = self._lookup(key)
-        self._file.seek(start)
-        if not from_:
-            self._file.readline()
-        string = self._file.read(stop - self._file.tell())
-        return string.replace(os.linesep, '\n')
-
-    def get_file(self, key, from_=False):
-        """Return a file-like representation or raise a KeyError."""
-        start, stop = self._lookup(key)
-        self._file.seek(start)
-        if not from_:
-            self._file.readline()
-        return _PartialFile(self._file, self._file.tell(), stop)
-
-    def _install_message(self, message):
-        """Format a message and blindly write to self._file."""
-        from_line = None
-        if isinstance(message, str) and message.startswith('From '):
-            newline = message.find('\n')
-            if newline != -1:
-                from_line = message[:newline]
-                message = message[newline + 1:]
-            else:
-                from_line = message
-                message = ''
-        elif isinstance(message, _mboxMMDFMessage):
-            from_line = 'From ' + message.get_from()
-        elif isinstance(message, email.message.Message):
-            from_line = message.get_unixfrom()  # May be None.
-        if from_line is None:
-            from_line = 'From MAILER-DAEMON %s' % time.asctime(time.gmtime())
-        start = self._file.tell()
-        self._file.write(from_line + os.linesep)
-        self._dump_message(message, self._file, self._mangle_from_)
-        stop = self._file.tell()
-        return (start, stop)
-
-
-class mbox(_mboxMMDF):
-    """A classic mbox mailbox."""
-
-    _mangle_from_ = True
-
-    def __init__(self, path, factory=None, create=True):
-        """Initialize an mbox mailbox."""
-        self._message_factory = mboxMessage
-        _mboxMMDF.__init__(self, path, factory, create)
-
-    def _pre_message_hook(self, f):
-        """Called before writing each message to file f."""
-        if f.tell() != 0:
-            f.write(os.linesep)
-
-    def _generate_toc(self):
-        """Generate key-to-(start, stop) table of contents."""
-        starts, stops = [], []
-        self._file.seek(0)
-        while True:
-            line_pos = self._file.tell()
-            line = self._file.readline()
-            if line.startswith('From '):
-                if len(stops) < len(starts):
-                    stops.append(line_pos - len(os.linesep))
-                starts.append(line_pos)
-            elif line == '':
-                stops.append(line_pos)
-                break
-        self._toc = dict(enumerate(zip(starts, stops)))
-        self._next_key = len(self._toc)
-        self._file_length = self._file.tell()
-
-
-class MMDF(_mboxMMDF):
-    """An MMDF mailbox."""
-
-    def __init__(self, path, factory=None, create=True):
-        """Initialize an MMDF mailbox."""
-        self._message_factory = MMDFMessage
-        _mboxMMDF.__init__(self, path, factory, create)
-
-    def _pre_message_hook(self, f):
-        """Called before writing each message to file f."""
-        f.write('\001\001\001\001' + os.linesep)
-
-    def _post_message_hook(self, f):
-        """Called after writing each message to file f."""
-        f.write(os.linesep + '\001\001\001\001' + os.linesep)
-
-    def _generate_toc(self):
-        """Generate key-to-(start, stop) table of contents."""
-        starts, stops = [], []
-        self._file.seek(0)
-        next_pos = 0
-        while True:
-            line_pos = next_pos
-            line = self._file.readline()
-            next_pos = self._file.tell()
-            if line.startswith('\001\001\001\001' + os.linesep):
-                starts.append(next_pos)
-                while True:
-                    line_pos = next_pos
-                    line = self._file.readline()
-                    next_pos = self._file.tell()
-                    if line == '\001\001\001\001' + os.linesep:
-                        stops.append(line_pos - len(os.linesep))
-                        break
-                    elif line == '':
-                        stops.append(line_pos)
-                        break
-            elif line == '':
-                break
-        self._toc = dict(enumerate(zip(starts, stops)))
-        self._next_key = len(self._toc)
-        self._file.seek(0, 2)
-        self._file_length = self._file.tell()
-
-
-class MH(Mailbox):
-    """An MH mailbox."""
-
-    def __init__(self, path, factory=None, create=True):
-        """Initialize an MH instance."""
-        Mailbox.__init__(self, path, factory, create)
-        if not os.path.exists(self._path):
-            if create:
-                os.mkdir(self._path, 0700)
-                os.close(os.open(os.path.join(self._path, '.mh_sequences'),
-                                 os.O_CREAT | os.O_EXCL | os.O_WRONLY, 0600))
-            else:
-                raise NoSuchMailboxError(self._path)
-        self._locked = False
-
-    def add(self, message):
-        """Add message and return assigned key."""
-        keys = self.keys()
-        if len(keys) == 0:
-            new_key = 1
-        else:
-            new_key = max(keys) + 1
-        new_path = os.path.join(self._path, str(new_key))
-        f = _create_carefully(new_path)
-        closed = False
-        try:
-            if self._locked:
-                _lock_file(f)
-            try:
-                try:
-                    self._dump_message(message, f)
-                except BaseException:
-                    # Unlock and close so it can be deleted on Windows
-                    if self._locked:
-                        _unlock_file(f)
-                    _sync_close(f)
-                    closed = True
-                    os.remove(new_path)
-                    raise
-                if isinstance(message, MHMessage):
-                    self._dump_sequences(message, new_key)
-            finally:
-                if self._locked:
-                    _unlock_file(f)
-        finally:
-            if not closed:
-                _sync_close(f)
-        return new_key
-
-    def remove(self, key):
-        """Remove the keyed message; raise KeyError if it doesn't exist."""
-        path = os.path.join(self._path, str(key))
-        try:
-            f = open(path, 'rb+')
-        except IOError, e:
-            if e.errno == errno.ENOENT:
-                raise KeyError('No message with key: %s' % key)
-            else:
-                raise
-        else:
-            f.close()
-            os.remove(path)
-
-    def __setitem__(self, key, message):
-        """Replace the keyed message; raise KeyError if it doesn't exist."""
-        path = os.path.join(self._path, str(key))
-        try:
-            f = open(path, 'rb+')
-        except IOError, e:
-            if e.errno == errno.ENOENT:
-                raise KeyError('No message with key: %s' % key)
-            else:
-                raise
-        try:
-            if self._locked:
-                _lock_file(f)
-            try:
-                os.close(os.open(path, os.O_WRONLY | os.O_TRUNC))
-                self._dump_message(message, f)
-                if isinstance(message, MHMessage):
-                    self._dump_sequences(message, key)
-            finally:
-                if self._locked:
-                    _unlock_file(f)
-        finally:
-            _sync_close(f)
-
-    def get_message(self, key):
-        """Return a Message representation or raise a KeyError."""
-        try:
-            if self._locked:
-                f = open(os.path.join(self._path, str(key)), 'r+')
-            else:
-                f = open(os.path.join(self._path, str(key)), 'r')
-        except IOError, e:
-            if e.errno == errno.ENOENT:
-                raise KeyError('No message with key: %s' % key)
-            else:
-                raise
-        try:
-            if self._locked:
-                _lock_file(f)
-            try:
-                msg = MHMessage(f)
-            finally:
-                if self._locked:
-                    _unlock_file(f)
-        finally:
-            f.close()
-        for name, key_list in self.get_sequences().iteritems():
-            if key in key_list:
-                msg.add_sequence(name)
-        return msg
-
-    def get_string(self, key):
-        """Return a string representation or raise a KeyError."""
-        try:
-            if self._locked:
-                f = open(os.path.join(self._path, str(key)), 'r+')
-            else:
-                f = open(os.path.join(self._path, str(key)), 'r')
-        except IOError, e:
-            if e.errno == errno.ENOENT:
-                raise KeyError('No message with key: %s' % key)
-            else:
-                raise
-        try:
-            if self._locked:
-                _lock_file(f)
-            try:
-                return f.read()
-            finally:
-                if self._locked:
-                    _unlock_file(f)
-        finally:
-            f.close()
-
-    def get_file(self, key):
-        """Return a file-like representation or raise a KeyError."""
-        try:
-            f = open(os.path.join(self._path, str(key)), 'rb')
-        except IOError, e:
-            if e.errno == errno.ENOENT:
-                raise KeyError('No message with key: %s' % key)
-            else:
-                raise
-        return _ProxyFile(f)
-
-    def iterkeys(self):
-        """Return an iterator over keys."""
-        return iter(sorted(int(entry) for entry in os.listdir(self._path)
-                                      if entry.isdigit()))
-
-    def has_key(self, key):
-        """Return True if the keyed message exists, False otherwise."""
-        return os.path.exists(os.path.join(self._path, str(key)))
-
-    def __len__(self):
-        """Return a count of messages in the mailbox."""
-        return len(list(self.iterkeys()))
-
-    def lock(self):
-        """Lock the mailbox."""
-        if not self._locked:
-            self._file = open(os.path.join(self._path, '.mh_sequences'), 'rb+')
-            _lock_file(self._file)
-            self._locked = True
-
-    def unlock(self):
-        """Unlock the mailbox if it is locked."""
-        if self._locked:
-            _unlock_file(self._file)
-            _sync_close(self._file)
-            del self._file
-            self._locked = False
-
-    def flush(self):
-        """Write any pending changes to the disk."""
-        return
-
-    def close(self):
-        """Flush and close the mailbox."""
-        if self._locked:
-            self.unlock()
-
-    def list_folders(self):
-        """Return a list of folder names."""
-        result = []
-        for entry in os.listdir(self._path):
-            if os.path.isdir(os.path.join(self._path, entry)):
-                result.append(entry)
-        return result
-
-    def get_folder(self, folder):
-        """Return an MH instance for the named folder."""
-        return MH(os.path.join(self._path, folder),
-                  factory=self._factory, create=False)
-
-    def add_folder(self, folder):
-        """Create a folder and return an MH instance representing it."""
-        return MH(os.path.join(self._path, folder),
-                  factory=self._factory)
-
-    def remove_folder(self, folder):
-        """Delete the named folder, which must be empty."""
-        path = os.path.join(self._path, folder)
-        entries = os.listdir(path)
-        if entries == ['.mh_sequences']:
-            os.remove(os.path.join(path, '.mh_sequences'))
-        elif entries == []:
-            pass
-        else:
-            raise NotEmptyError('Folder not empty: %s' % self._path)
-        os.rmdir(path)
-
-    def get_sequences(self):
-        """Return a name-to-key-list dictionary to define each sequence."""
-        results = {}
-        f = open(os.path.join(self._path, '.mh_sequences'), 'r')
-        try:
-            all_keys = set(self.keys())
-            for line in f:
-                try:
-                    name, contents = line.split(':')
-                    keys = set()
-                    for spec in contents.split():
-                        if spec.isdigit():
-                            keys.add(int(spec))
-                        else:
-                            start, stop = (int(x) for x in spec.split('-'))
-                            keys.update(range(start, stop + 1))
-                    results[name] = [key for key in sorted(keys) \
-                                         if key in all_keys]
-                    if len(results[name]) == 0:
-                        del results[name]
-                except ValueError:
-                    raise FormatError('Invalid sequence specification: %s' %
-                                      line.rstrip())
-        finally:
-            f.close()
-        return results
-
-    def set_sequences(self, sequences):
-        """Set sequences using the given name-to-key-list dictionary."""
-        f = open(os.path.join(self._path, '.mh_sequences'), 'r+')
-        try:
-            os.close(os.open(f.name, os.O_WRONLY | os.O_TRUNC))
-            for name, keys in sequences.iteritems():
-                if len(keys) == 0:
-                    continue
-                f.write('%s:' % name)
-                prev = None
-                completing = False
-                for key in sorted(set(keys)):
-                    if key - 1 == prev:
-                        if not completing:
-                            completing = True
-                            f.write('-')
-                    elif completing:
-                        completing = False
-                        f.write('%s %s' % (prev, key))
-                    else:
-                        f.write(' %s' % key)
-                    prev = key
-                if completing:
-                    f.write(str(prev) + '\n')
-                else:
-                    f.write('\n')
-        finally:
-            _sync_close(f)
-
-    def pack(self):
-        """Re-name messages to eliminate numbering gaps. Invalidates keys."""
-        sequences = self.get_sequences()
-        prev = 0
-        changes = []
-        for key in self.iterkeys():
-            if key - 1 != prev:
-                changes.append((key, prev + 1))
-                if hasattr(os, 'link'):
-                    os.link(os.path.join(self._path, str(key)),
-                            os.path.join(self._path, str(prev + 1)))
-                    os.unlink(os.path.join(self._path, str(key)))
-                else:
-                    os.rename(os.path.join(self._path, str(key)),
-                              os.path.join(self._path, str(prev + 1)))
-            prev += 1
-        self._next_key = prev + 1
-        if len(changes) == 0:
-            return
-        for name, key_list in sequences.items():
-            for old, new in changes:
-                if old in key_list:
-                    key_list[key_list.index(old)] = new
-        self.set_sequences(sequences)
-
-    def _dump_sequences(self, message, key):
-        """Inspect a new MHMessage and update sequences appropriately."""
-        pending_sequences = message.get_sequences()
-        all_sequences = self.get_sequences()
-        for name, key_list in all_sequences.iteritems():
-            if name in pending_sequences:
-                key_list.append(key)
-            elif key in key_list:
-                del key_list[key_list.index(key)]
-        for sequence in pending_sequences:
-            if sequence not in all_sequences:
-                all_sequences[sequence] = [key]
-        self.set_sequences(all_sequences)
-
-
-class Babyl(_singlefileMailbox):
-    """An Rmail-style Babyl mailbox."""
-
-    _special_labels = frozenset(('unseen', 'deleted', 'filed', 'answered',
-                                 'forwarded', 'edited', 'resent'))
-
-    def __init__(self, path, factory=None, create=True):
-        """Initialize a Babyl mailbox."""
-        _singlefileMailbox.__init__(self, path, factory, create)
-        self._labels = {}
-
-    def add(self, message):
-        """Add message and return assigned key."""
-        key = _singlefileMailbox.add(self, message)
-        if isinstance(message, BabylMessage):
-            self._labels[key] = message.get_labels()
-        return key
-
-    def remove(self, key):
-        """Remove the keyed message; raise KeyError if it doesn't exist."""
-        _singlefileMailbox.remove(self, key)
-        if key in self._labels:
-            del self._labels[key]
-
-    def __setitem__(self, key, message):
-        """Replace the keyed message; raise KeyError if it doesn't exist."""
-        _singlefileMailbox.__setitem__(self, key, message)
-        if isinstance(message, BabylMessage):
-            self._labels[key] = message.get_labels()
-
-    def get_message(self, key):
-        """Return a Message representation or raise a KeyError."""
-        start, stop = self._lookup(key)
-        self._file.seek(start)
-        self._file.readline()   # Skip '1,' line specifying labels.
-        original_headers = StringIO.StringIO()
-        while True:
-            line = self._file.readline()
-            if line == '*** EOOH ***' + os.linesep or line == '':
-                break
-            original_headers.write(line.replace(os.linesep, '\n'))
-        visible_headers = StringIO.StringIO()
-        while True:
-            line = self._file.readline()
-            if line == os.linesep or line == '':
-                break
-            visible_headers.write(line.replace(os.linesep, '\n'))
-        body = self._file.read(stop - self._file.tell()).replace(os.linesep,
-                                                                 '\n')
-        msg = BabylMessage(original_headers.getvalue() + body)
-        msg.set_visible(visible_headers.getvalue())
-        if key in self._labels:
-            msg.set_labels(self._labels[key])
-        return msg
-
-    def get_string(self, key):
-        """Return a string representation or raise a KeyError."""
-        start, stop = self._lookup(key)
-        self._file.seek(start)
-        self._file.readline()   # Skip '1,' line specifying labels.
-        original_headers = StringIO.StringIO()
-        while True:
-            line = self._file.readline()
-            if line == '*** EOOH ***' + os.linesep or line == '':
-                break
-            original_headers.write(line.replace(os.linesep, '\n'))
-        while True:
-            line = self._file.readline()
-            if line == os.linesep or line == '':
-                break
-        return original_headers.getvalue() + \
-               self._file.read(stop - self._file.tell()).replace(os.linesep,
-                                                                 '\n')
-
-    def get_file(self, key):
-        """Return a file-like representation or raise a KeyError."""
-        return StringIO.StringIO(self.get_string(key).replace('\n',
-                                                              os.linesep))
-
-    def get_labels(self):
-        """Return a list of user-defined labels in the mailbox."""
-        self._lookup()
-        labels = set()
-        for label_list in self._labels.values():
-            labels.update(label_list)
-        labels.difference_update(self._special_labels)
-        return list(labels)
-
-    def _generate_toc(self):
-        """Generate key-to-(start, stop) table of contents."""
-        starts, stops = [], []
-        self._file.seek(0)
-        next_pos = 0
-        label_lists = []
-        while True:
-            line_pos = next_pos
-            line = self._file.readline()
-            next_pos = self._file.tell()
-            if line == '\037\014' + os.linesep:
-                if len(stops) < len(starts):
-                    stops.append(line_pos - len(os.linesep))
-                starts.append(next_pos)
-                labels = [label.strip() for label
-                                        in self._file.readline()[1:].split(',')
-                                        if label.strip() != '']
-                label_lists.append(labels)
-            elif line == '\037' or line == '\037' + os.linesep:
-                if len(stops) < len(starts):
-                    stops.append(line_pos - len(os.linesep))
-            elif line == '':
-                stops.append(line_pos - len(os.linesep))
-                break
-        self._toc = dict(enumerate(zip(starts, stops)))
-        self._labels = dict(enumerate(label_lists))
-        self._next_key = len(self._toc)
-        self._file.seek(0, 2)
-        self._file_length = self._file.tell()
-
-    def _pre_mailbox_hook(self, f):
-        """Called before writing the mailbox to file f."""
-        f.write('BABYL OPTIONS:%sVersion: 5%sLabels:%s%s\037' %
-                (os.linesep, os.linesep, ','.join(self.get_labels()),
-                 os.linesep))
-
-    def _pre_message_hook(self, f):
-        """Called before writing each message to file f."""
-        f.write('\014' + os.linesep)
-
-    def _post_message_hook(self, f):
-        """Called after writing each message to file f."""
-        f.write(os.linesep + '\037')
-
-    def _install_message(self, message):
-        """Write message contents and return (start, stop)."""
-        start = self._file.tell()
-        if isinstance(message, BabylMessage):
-            special_labels = []
-            labels = []
-            for label in message.get_labels():
-                if label in self._special_labels:
-                    special_labels.append(label)
-                else:
-                    labels.append(label)
-            self._file.write('1')
-            for label in special_labels:
-                self._file.write(', ' + label)
-            self._file.write(',,')
-            for label in labels:
-                self._file.write(' ' + label + ',')
-            self._file.write(os.linesep)
-        else:
-            self._file.write('1,,' + os.linesep)
-        if isinstance(message, email.message.Message):
-            orig_buffer = StringIO.StringIO()
-            orig_generator = email.generator.Generator(orig_buffer, False, 0)
-            orig_generator.flatten(message)
-            orig_buffer.seek(0)
-            while True:
-                line = orig_buffer.readline()
-                self._file.write(line.replace('\n', os.linesep))
-                if line == '\n' or line == '':
-                    break
-            self._file.write('*** EOOH ***' + os.linesep)
-            if isinstance(message, BabylMessage):
-                vis_buffer = StringIO.StringIO()
-                vis_generator = email.generator.Generator(vis_buffer, False, 0)
-                vis_generator.flatten(message.get_visible())
-                while True:
-                    line = vis_buffer.readline()
-                    self._file.write(line.replace('\n', os.linesep))
-                    if line == '\n' or line == '':
-                        break
-            else:
-                orig_buffer.seek(0)
-                while True:
-                    line = orig_buffer.readline()
-                    self._file.write(line.replace('\n', os.linesep))
-                    if line == '\n' or line == '':
-                        break
-            while True:
-                buffer = orig_buffer.read(4096) # Buffer size is arbitrary.
-                if buffer == '':
-                    break
-                self._file.write(buffer.replace('\n', os.linesep))
-        elif isinstance(message, str):
-            body_start = message.find('\n\n') + 2
-            if body_start - 2 != -1:
-                self._file.write(message[:body_start].replace('\n',
-                                                              os.linesep))
-                self._file.write('*** EOOH ***' + os.linesep)
-                self._file.write(message[:body_start].replace('\n',
-                                                              os.linesep))
-                self._file.write(message[body_start:].replace('\n',
-                                                              os.linesep))
-            else:
-                self._file.write('*** EOOH ***' + os.linesep + os.linesep)
-                self._file.write(message.replace('\n', os.linesep))
-        elif hasattr(message, 'readline'):
-            original_pos = message.tell()
-            first_pass = True
-            while True:
-                line = message.readline()
-                self._file.write(line.replace('\n', os.linesep))
-                if line == '\n' or line == '':
-                    self._file.write('*** EOOH ***' + os.linesep)
-                    if first_pass:
-                        first_pass = False
-                        message.seek(original_pos)
-                    else:
-                        break
-            while True:
-                buffer = message.read(4096)     # Buffer size is arbitrary.
-                if buffer == '':
-                    break
-                self._file.write(buffer.replace('\n', os.linesep))
-        else:
-            raise TypeError('Invalid message type: %s' % type(message))
-        stop = self._file.tell()
-        return (start, stop)
-
-
-class Message(email.message.Message):
-    """Message with mailbox-format-specific properties."""
-
-    def __init__(self, message=None):
-        """Initialize a Message instance."""
-        if isinstance(message, email.message.Message):
-            self._become_message(copy.deepcopy(message))
-            if isinstance(message, Message):
-                message._explain_to(self)
-        elif isinstance(message, str):
-            self._become_message(email.message_from_string(message))
-        elif hasattr(message, "read"):
-            self._become_message(email.message_from_file(message))
-        elif message is None:
-            email.message.Message.__init__(self)
-        else:
-            raise TypeError('Invalid message type: %s' % type(message))
-
-    def _become_message(self, message):
-        """Assume the non-format-specific state of message."""
-        for name in ('_headers', '_unixfrom', '_payload', '_charset',
-                     'preamble', 'epilogue', 'defects', '_default_type'):
-            self.__dict__[name] = message.__dict__[name]
-
-    def _explain_to(self, message):
-        """Copy format-specific state to message insofar as possible."""
-        if isinstance(message, Message):
-            return  # There's nothing format-specific to explain.
-        else:
-            raise TypeError('Cannot convert to specified type')
-
-
-class MaildirMessage(Message):
-    """Message with Maildir-specific properties."""
-
-    def __init__(self, message=None):
-        """Initialize a MaildirMessage instance."""
-        self._subdir = 'new'
-        self._info = ''
-        self._date = time.time()
-        Message.__init__(self, message)
-
-    def get_subdir(self):
-        """Return 'new' or 'cur'."""
-        return self._subdir
-
-    def set_subdir(self, subdir):
-        """Set subdir to 'new' or 'cur'."""
-        if subdir == 'new' or subdir == 'cur':
-            self._subdir = subdir
-        else:
-            raise ValueError("subdir must be 'new' or 'cur': %s" % subdir)
-
-    def get_flags(self):
-        """Return as a string the flags that are set."""
-        if self._info.startswith('2,'):
-            return self._info[2:]
-        else:
-            return ''
-
-    def set_flags(self, flags):
-        """Set the given flags and unset all others."""
-        self._info = '2,' + ''.join(sorted(flags))
-
-    def add_flag(self, flag):
-        """Set the given flag(s) without changing others."""
-        self.set_flags(''.join(set(self.get_flags()) | set(flag)))
-
-    def remove_flag(self, flag):
-        """Unset the given string flag(s) without changing others."""
-        if self.get_flags() != '':
-            self.set_flags(''.join(set(self.get_flags()) - set(flag)))
-
-    def get_date(self):
-        """Return delivery date of message, in seconds since the epoch."""
-        return self._date
-
-    def set_date(self, date):
-        """Set delivery date of message, in seconds since the epoch."""
-        try:
-            self._date = float(date)
-        except ValueError:
-            raise TypeError("can't convert to float: %s" % date)
-
-    def get_info(self):
-        """Get the message's "info" as a string."""
-        return self._info
-
-    def set_info(self, info):
-        """Set the message's "info" string."""
-        if isinstance(info, str):
-            self._info = info
-        else:
-            raise TypeError('info must be a string: %s' % type(info))
-
-    def _explain_to(self, message):
-        """Copy Maildir-specific state to message insofar as possible."""
-        if isinstance(message, MaildirMessage):
-            message.set_flags(self.get_flags())
-            message.set_subdir(self.get_subdir())
-            message.set_date(self.get_date())
-        elif isinstance(message, _mboxMMDFMessage):
-            flags = set(self.get_flags())
-            if 'S' in flags:
-                message.add_flag('R')
-            if self.get_subdir() == 'cur':
-                message.add_flag('O')
-            if 'T' in flags:
-                message.add_flag('D')
-            if 'F' in flags:
-                message.add_flag('F')
-            if 'R' in flags:
-                message.add_flag('A')
-            message.set_from('MAILER-DAEMON', time.gmtime(self.get_date()))
-        elif isinstance(message, MHMessage):
-            flags = set(self.get_flags())
-            if 'S' not in flags:
-                message.add_sequence('unseen')
-            if 'R' in flags:
-                message.add_sequence('replied')
-            if 'F' in flags:
-                message.add_sequence('flagged')
-        elif isinstance(message, BabylMessage):
-            flags = set(self.get_flags())
-            if 'S' not in flags:
-                message.add_label('unseen')
-            if 'T' in flags:
-                message.add_label('deleted')
-            if 'R' in flags:
-                message.add_label('answered')
-            if 'P' in flags:
-                message.add_label('forwarded')
-        elif isinstance(message, Message):
-            pass
-        else:
-            raise TypeError('Cannot convert to specified type: %s' %
-                            type(message))
-
-
-class _mboxMMDFMessage(Message):
-    """Message with mbox- or MMDF-specific properties."""
-
-    def __init__(self, message=None):
-        """Initialize an mboxMMDFMessage instance."""
-        self.set_from('MAILER-DAEMON', True)
-        if isinstance(message, email.message.Message):
-            unixfrom = message.get_unixfrom()
-            if unixfrom is not None and unixfrom.startswith('From '):
-                self.set_from(unixfrom[5:])
-        Message.__init__(self, message)
-
-    def get_from(self):
-        """Return contents of "From " line."""
-        return self._from
-
-    def set_from(self, from_, time_=None):
-        """Set "From " line, formatting and appending time_ if specified."""
-        if time_ is not None:
-            if time_ is True:
-                time_ = time.gmtime()
-            from_ += ' ' + time.asctime(time_)
-        self._from = from_
-
-    def get_flags(self):
-        """Return as a string the flags that are set."""
-        return self.get('Status', '') + self.get('X-Status', '')
-
-    def set_flags(self, flags):
-        """Set the given flags and unset all others."""
-        flags = set(flags)
-        status_flags, xstatus_flags = '', ''
-        for flag in ('R', 'O'):
-            if flag in flags:
-                status_flags += flag
-                flags.remove(flag)
-        for flag in ('D', 'F', 'A'):
-            if flag in flags:
-                xstatus_flags += flag
-                flags.remove(flag)
-        xstatus_flags += ''.join(sorted(flags))
-        try:
-            self.replace_header('Status', status_flags)
-        except KeyError:
-            self.add_header('Status', status_flags)
-        try:
-            self.replace_header('X-Status', xstatus_flags)
-        except KeyError:
-            self.add_header('X-Status', xstatus_flags)
-
-    def add_flag(self, flag):
-        """Set the given flag(s) without changing others."""
-        self.set_flags(''.join(set(self.get_flags()) | set(flag)))
-
-    def remove_flag(self, flag):
-        """Unset the given string flag(s) without changing others."""
-        if 'Status' in self or 'X-Status' in self:
-            self.set_flags(''.join(set(self.get_flags()) - set(flag)))
-
-    def _explain_to(self, message):
-        """Copy mbox- or MMDF-specific state to message insofar as possible."""
-        if isinstance(message, MaildirMessage):
-            flags = set(self.get_flags())
-            if 'O' in flags:
-                message.set_subdir('cur')
-            if 'F' in flags:
-                message.add_flag('F')
-            if 'A' in flags:
-                message.add_flag('R')
-            if 'R' in flags:
-                message.add_flag('S')
-            if 'D' in flags:
-                message.add_flag('T')
-            del message['status']
-            del message['x-status']
-            maybe_date = ' '.join(self.get_from().split()[-5:])
-            try:
-                message.set_date(calendar.timegm(time.strptime(maybe_date,
-                                                      '%a %b %d %H:%M:%S %Y')))
-            except (ValueError, OverflowError):
-                pass
-        elif isinstance(message, _mboxMMDFMessage):
-            message.set_flags(self.get_flags())
-            message.set_from(self.get_from())
-        elif isinstance(message, MHMessage):
-            flags = set(self.get_flags())
-            if 'R' not in flags:
-                message.add_sequence('unseen')
-            if 'A' in flags:
-                message.add_sequence('replied')
-            if 'F' in flags:
-                message.add_sequence('flagged')
-            del message['status']
-            del message['x-status']
-        elif isinstance(message, BabylMessage):
-            flags = set(self.get_flags())
-            if 'R' not in flags:
-                message.add_label('unseen')
-            if 'D' in flags:
-                message.add_label('deleted')
-            if 'A' in flags:
-                message.add_label('answered')
-            del message['status']
-            del message['x-status']
-        elif isinstance(message, Message):
-            pass
-        else:
-            raise TypeError('Cannot convert to specified type: %s' %
-                            type(message))
-
-
-class mboxMessage(_mboxMMDFMessage):
-    """Message with mbox-specific properties."""
-
-
-class MHMessage(Message):
-    """Message with MH-specific properties."""
-
-    def __init__(self, message=None):
-        """Initialize an MHMessage instance."""
-        self._sequences = []
-        Message.__init__(self, message)
-
-    def get_sequences(self):
-        """Return a list of sequences that include the message."""
-        return self._sequences[:]
-
-    def set_sequences(self, sequences):
-        """Set the list of sequences that include the message."""
-        self._sequences = list(sequences)
-
-    def add_sequence(self, sequence):
-        """Add sequence to list of sequences including the message."""
-        if isinstance(sequence, str):
-            if not sequence in self._sequences:
-                self._sequences.append(sequence)
-        else:
-            raise TypeError('sequence must be a string: %s' % type(sequence))
-
-    def remove_sequence(self, sequence):
-        """Remove sequence from the list of sequences including the message."""
-        try:
-            self._sequences.remove(sequence)
-        except ValueError:
-            pass
-
-    def _explain_to(self, message):
-        """Copy MH-specific state to message insofar as possible."""
-        if isinstance(message, MaildirMessage):
-            sequences = set(self.get_sequences())
-            if 'unseen' in sequences:
-                message.set_subdir('cur')
-            else:
-                message.set_subdir('cur')
-                message.add_flag('S')
-            if 'flagged' in sequences:
-                message.add_flag('F')
-            if 'replied' in sequences:
-                message.add_flag('R')
-        elif isinstance(message, _mboxMMDFMessage):
-            sequences = set(self.get_sequences())
-            if 'unseen' not in sequences:
-                message.add_flag('RO')
-            else:
-                message.add_flag('O')
-            if 'flagged' in sequences:
-                message.add_flag('F')
-            if 'replied' in sequences:
-                message.add_flag('A')
-        elif isinstance(message, MHMessage):
-            for sequence in self.get_sequences():
-                message.add_sequence(sequence)
-        elif isinstance(message, BabylMessage):
-            sequences = set(self.get_sequences())
-            if 'unseen' in sequences:
-                message.add_label('unseen')
-            if 'replied' in sequences:
-                message.add_label('answered')
-        elif isinstance(message, Message):
-            pass
-        else:
-            raise TypeError('Cannot convert to specified type: %s' %
-                            type(message))
-
-
-class BabylMessage(Message):
-    """Message with Babyl-specific properties."""
-
-    def __init__(self, message=None):
-        """Initialize an BabylMessage instance."""
-        self._labels = []
-        self._visible = Message()
-        Message.__init__(self, message)
-
-    def get_labels(self):
-        """Return a list of labels on the message."""
-        return self._labels[:]
-
-    def set_labels(self, labels):
-        """Set the list of labels on the message."""
-        self._labels = list(labels)
-
-    def add_label(self, label):
-        """Add label to list of labels on the message."""
-        if isinstance(label, str):
-            if label not in self._labels:
-                self._labels.append(label)
-        else:
-            raise TypeError('label must be a string: %s' % type(label))
-
-    def remove_label(self, label):
-        """Remove label from the list of labels on the message."""
-        try:
-            self._labels.remove(label)
-        except ValueError:
-            pass
-
-    def get_visible(self):
-        """Return a Message representation of visible headers."""
-        return Message(self._visible)
-
-    def set_visible(self, visible):
-        """Set the Message representation of visible headers."""
-        self._visible = Message(visible)
-
-    def update_visible(self):
-        """Update and/or sensibly generate a set of visible headers."""
-        for header in self._visible.keys():
-            if header in self:
-                self._visible.replace_header(header, self[header])
-            else:
-                del self._visible[header]
-        for header in ('Date', 'From', 'Reply-To', 'To', 'CC', 'Subject'):
-            if header in self and header not in self._visible:
-                self._visible[header] = self[header]
-
-    def _explain_to(self, message):
-        """Copy Babyl-specific state to message insofar as possible."""
-        if isinstance(message, MaildirMessage):
-            labels = set(self.get_labels())
-            if 'unseen' in labels:
-                message.set_subdir('cur')
-            else:
-                message.set_subdir('cur')
-                message.add_flag('S')
-            if 'forwarded' in labels or 'resent' in labels:
-                message.add_flag('P')
-            if 'answered' in labels:
-                message.add_flag('R')
-            if 'deleted' in labels:
-                message.add_flag('T')
-        elif isinstance(message, _mboxMMDFMessage):
-            labels = set(self.get_labels())
-            if 'unseen' not in labels:
-                message.add_flag('RO')
-            else:
-                message.add_flag('O')
-            if 'deleted' in labels:
-                message.add_flag('D')
-            if 'answered' in labels:
-                message.add_flag('A')
-        elif isinstance(message, MHMessage):
-            labels = set(self.get_labels())
-            if 'unseen' in labels:
-                message.add_sequence('unseen')
-            if 'answered' in labels:
-                message.add_sequence('replied')
-        elif isinstance(message, BabylMessage):
-            message.set_visible(self.get_visible())
-            for label in self.get_labels():
-                message.add_label(label)
-        elif isinstance(message, Message):
-            pass
-        else:
-            raise TypeError('Cannot convert to specified type: %s' %
-                            type(message))
-
-
-class MMDFMessage(_mboxMMDFMessage):
-    """Message with MMDF-specific properties."""
-
-
-class _ProxyFile:
-    """A read-only wrapper of a file."""
-
-    def __init__(self, f, pos=None):
-        """Initialize a _ProxyFile."""
-        self._file = f
-        if pos is None:
-            self._pos = f.tell()
-        else:
-            self._pos = pos
-
-    def read(self, size=None):
-        """Read bytes."""
-        return self._read(size, self._file.read)
-
-    def readline(self, size=None):
-        """Read a line."""
-        return self._read(size, self._file.readline)
-
-    def readlines(self, sizehint=None):
-        """Read multiple lines."""
-        result = []
-        for line in self:
-            result.append(line)
-            if sizehint is not None:
-                sizehint -= len(line)
-                if sizehint <= 0:
-                    break
-        return result
-
-    def __iter__(self):
-        """Iterate over lines."""
-        return iter(self.readline, "")
-
-    def tell(self):
-        """Return the position."""
-        return self._pos
-
-    def seek(self, offset, whence=0):
-        """Change position."""
-        if whence == 1:
-            self._file.seek(self._pos)
-        self._file.seek(offset, whence)
-        self._pos = self._file.tell()
-
-    def close(self):
-        """Close the file."""
-        del self._file
-
-    def _read(self, size, read_method):
-        """Read size bytes using read_method."""
-        if size is None:
-            size = -1
-        self._file.seek(self._pos)
-        result = read_method(size)
-        self._pos = self._file.tell()
-        return result
-
-
-class _PartialFile(_ProxyFile):
-    """A read-only wrapper of part of a file."""
-
-    def __init__(self, f, start=None, stop=None):
-        """Initialize a _PartialFile."""
-        _ProxyFile.__init__(self, f, start)
-        self._start = start
-        self._stop = stop
-
-    def tell(self):
-        """Return the position with respect to start."""
-        return _ProxyFile.tell(self) - self._start
-
-    def seek(self, offset, whence=0):
-        """Change position, possibly with respect to start or stop."""
-        if whence == 0:
-            self._pos = self._start
-            whence = 1
-        elif whence == 2:
-            self._pos = self._stop
-            whence = 1
-        _ProxyFile.seek(self, offset, whence)
-
-    def _read(self, size, read_method):
-        """Read size bytes using read_method, honoring start and stop."""
-        remaining = self._stop - self._pos
-        if remaining <= 0:
-            return ''
-        if size is None or size < 0 or size > remaining:
-            size = remaining
-        return _ProxyFile._read(self, size, read_method)
-
-
-def _lock_file(f, dotlock=True):
-    """Lock file f using lockf and dot locking."""
-    dotlock_done = False
-    try:
-        if fcntl:
-            try:
-                fcntl.lockf(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
-            except IOError, e:
-                if e.errno in (errno.EAGAIN, errno.EACCES, errno.EROFS):
-                    raise ExternalClashError('lockf: lock unavailable: %s' %
-                                             f.name)
-                else:
-                    raise
-        if dotlock:
-            try:
-                pre_lock = _create_temporary(f.name + '.lock')
-                pre_lock.close()
-            except IOError, e:
-                if e.errno in (errno.EACCES, errno.EROFS):
-                    return  # Without write access, just skip dotlocking.
-                else:
-                    raise
-            try:
-                if hasattr(os, 'link'):
-                    os.link(pre_lock.name, f.name + '.lock')
-                    dotlock_done = True
-                    os.unlink(pre_lock.name)
-                else:
-                    os.rename(pre_lock.name, f.name + '.lock')
-                    dotlock_done = True
-            except OSError, e:
-                if e.errno == errno.EEXIST or \
-                  (os.name == 'os2' and e.errno == errno.EACCES):
-                    os.remove(pre_lock.name)
-                    raise ExternalClashError('dot lock unavailable: %s' %
-                                             f.name)
-                else:
-                    raise
-    except:
-        if fcntl:
-            fcntl.lockf(f, fcntl.LOCK_UN)
-        if dotlock_done:
-            os.remove(f.name + '.lock')
-        raise
-
-def _unlock_file(f):
-    """Unlock file f using lockf and dot locking."""
-    if fcntl:
-        fcntl.lockf(f, fcntl.LOCK_UN)
-    if os.path.exists(f.name + '.lock'):
-        os.remove(f.name + '.lock')
-
-def _create_carefully(path):
-    """Create a file if it doesn't exist and open for reading and writing."""
-    fd = os.open(path, os.O_CREAT | os.O_EXCL | os.O_RDWR, 0666)
-    try:
-        return open(path, 'rb+')
-    finally:
-        os.close(fd)
-
-def _create_temporary(path):
-    """Create a temp file based on path and open for reading and writing."""
-    return _create_carefully('%s.%s.%s.%s' % (path, int(time.time()),
-                                              socket.gethostname(),
-                                              os.getpid()))
-
-def _sync_flush(f):
-    """Ensure changes to file f are physically on disk."""
-    f.flush()
-    if hasattr(os, 'fsync'):
-        os.fsync(f.fileno())
-
-def _sync_close(f):
-    """Close file f, ensuring all changes are physically on disk."""
-    _sync_flush(f)
-    f.close()
-
-## Start: classes from the original module (for backward compatibility).
-
-# Note that the Maildir class, whose name is unchanged, itself offers a next()
-# method for backward compatibility.
-
-class _Mailbox:
-
-    def __init__(self, fp, factory=rfc822.Message):
-        self.fp = fp
-        self.seekp = 0
-        self.factory = factory
-
-    def __iter__(self):
-        return iter(self.next, None)
-
-    def next(self):
-        while 1:
-            self.fp.seek(self.seekp)
-            try:
-                self._search_start()
-            except EOFError:
-                self.seekp = self.fp.tell()
-                return None
-            start = self.fp.tell()
-            self._search_end()
-            self.seekp = stop = self.fp.tell()
-            if start != stop:
-                break
-        return self.factory(_PartialFile(self.fp, start, stop))
-
-# Recommended to use PortableUnixMailbox instead!
-class UnixMailbox(_Mailbox):
-
-    def _search_start(self):
-        while 1:
-            pos = self.fp.tell()
-            line = self.fp.readline()
-            if not line:
-                raise EOFError
-            if line[:5] == 'From ' and self._isrealfromline(line):
-                self.fp.seek(pos)
-                return
-
-    def _search_end(self):
-        self.fp.readline()      # Throw away header line
-        while 1:
-            pos = self.fp.tell()
-            line = self.fp.readline()
-            if not line:
-                return
-            if line[:5] == 'From ' and self._isrealfromline(line):
-                self.fp.seek(pos)
-                return
-
-    # An overridable mechanism to test for From-line-ness.  You can either
-    # specify a different regular expression or define a whole new
-    # _isrealfromline() method.  Note that this only gets called for lines
-    # starting with the 5 characters "From ".
-    #
-    # BAW: According to
-    #http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/content-length.html
-    # the only portable, reliable way to find message delimiters in a BSD (i.e
-    # Unix mailbox) style folder is to search for "\n\nFrom .*\n", or at the
-    # beginning of the file, "^From .*\n".  While _fromlinepattern below seems
-    # like a good idea, in practice, there are too many variations for more
-    # strict parsing of the line to be completely accurate.
-    #
-    # _strict_isrealfromline() is the old version which tries to do stricter
-    # parsing of the From_ line.  _portable_isrealfromline() simply returns
-    # true, since it's never called if the line doesn't already start with
-    # "From ".
-    #
-    # This algorithm, and the way it interacts with _search_start() and
-    # _search_end() may not be completely correct, because it doesn't check
-    # that the two characters preceding "From " are \n\n or the beginning of
-    # the file.  Fixing this would require a more extensive rewrite than is
-    # necessary.  For convenience, we've added a PortableUnixMailbox class
-    # which does no checking of the format of the 'From' line.
-
-    _fromlinepattern = (r"From \s*[^\s]+\s+\w\w\w\s+\w\w\w\s+\d?\d\s+"
-                        r"\d?\d:\d\d(:\d\d)?(\s+[^\s]+)?\s+\d\d\d\d\s*"
-                        r"[^\s]*\s*"
-                        "$")
-    _regexp = None
-
-    def _strict_isrealfromline(self, line):
-        if not self._regexp:
-            import re
-            self._regexp = re.compile(self._fromlinepattern)
-        return self._regexp.match(line)
-
-    def _portable_isrealfromline(self, line):
-        return True
-
-    _isrealfromline = _strict_isrealfromline
-
-
-class PortableUnixMailbox(UnixMailbox):
-    _isrealfromline = UnixMailbox._portable_isrealfromline
-
-
-class MmdfMailbox(_Mailbox):
-
-    def _search_start(self):
-        while 1:
-            line = self.fp.readline()
-            if not line:
-                raise EOFError
-            if line[:5] == '\001\001\001\001\n':
-                return
-
-    def _search_end(self):
-        while 1:
-            pos = self.fp.tell()
-            line = self.fp.readline()
-            if not line:
-                return
-            if line == '\001\001\001\001\n':
-                self.fp.seek(pos)
-                return
-
-
-class MHMailbox:
-
-    def __init__(self, dirname, factory=rfc822.Message):
-        import re
-        pat = re.compile('^[1-9][0-9]*$')
-        self.dirname = dirname
-        # the three following lines could be combined into:
-        # list = map(long, filter(pat.match, os.listdir(self.dirname)))
-        list = os.listdir(self.dirname)
-        list = filter(pat.match, list)
-        list = map(long, list)
-        list.sort()
-        # This only works in Python 1.6 or later;
-        # before that str() added 'L':
-        self.boxes = map(str, list)
-        self.boxes.reverse()
-        self.factory = factory
-
-    def __iter__(self):
-        return iter(self.next, None)
-
-    def next(self):
-        if not self.boxes:
-            return None
-        fn = self.boxes.pop()
-        fp = open(os.path.join(self.dirname, fn))
-        msg = self.factory(fp)
-        try:
-            msg._mh_msgno = fn
-        except (AttributeError, TypeError):
-            pass
-        return msg
-
-
-class BabylMailbox(_Mailbox):
-
-    def _search_start(self):
-        while 1:
-            line = self.fp.readline()
-            if not line:
-                raise EOFError
-            if line == '*** EOOH ***\n':
-                return
-
-    def _search_end(self):
-        while 1:
-            pos = self.fp.tell()
-            line = self.fp.readline()
-            if not line:
-                return
-            if line == '\037\014\n' or line == '\037':
-                self.fp.seek(pos)
-                return
-
-## End: classes from the original module (for backward compatibility).
-
-
-class Error(Exception):
-    """Raised for module-specific errors."""
-
-class NoSuchMailboxError(Error):
-    """The specified mailbox does not exist and won't be created."""
-
-class NotEmptyError(Error):
-    """The specified mailbox is not empty and deletion was requested."""
-
-class ExternalClashError(Error):
-    """Another process caused an action to fail."""
-
-class FormatError(Error):
-    """A file appears to have an invalid format."""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/mailcap.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/mailcap.py
deleted file mode 100644
index a5fdb30..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/mailcap.py
+++ /dev/null
@@ -1,255 +0,0 @@
-"""Mailcap file handling.  See RFC 1524."""
-
-import os
-
-__all__ = ["getcaps","findmatch"]
-
-# Part 1: top-level interface.
-
-def getcaps():
-    """Return a dictionary containing the mailcap database.
-
-    The dictionary maps a MIME type (in all lowercase, e.g. 'text/plain')
-    to a list of dictionaries corresponding to mailcap entries.  The list
-    collects all the entries for that MIME type from all available mailcap
-    files.  Each dictionary contains key-value pairs for that MIME type,
-    where the viewing command is stored with the key "view".
-
-    """
-    caps = {}
-    for mailcap in listmailcapfiles():
-        try:
-            fp = open(mailcap, 'r')
-        except IOError:
-            continue
-        morecaps = readmailcapfile(fp)
-        fp.close()
-        for key, value in morecaps.iteritems():
-            if not key in caps:
-                caps[key] = value
-            else:
-                caps[key] = caps[key] + value
-    return caps
-
-def listmailcapfiles():
-    """Return a list of all mailcap files found on the system."""
-    # XXX Actually, this is Unix-specific
-    if 'MAILCAPS' in os.environ:
-        str = os.environ['MAILCAPS']
-        mailcaps = str.split(':')
-    else:
-        if 'HOME' in os.environ:
-            home = os.environ['HOME']
-        else:
-            # Don't bother with getpwuid()
-            home = '.' # Last resort
-        mailcaps = [home + '/.mailcap', '/etc/mailcap',
-                '/usr/etc/mailcap', '/usr/local/etc/mailcap']
-    return mailcaps
-
-
-# Part 2: the parser.
-
-def readmailcapfile(fp):
-    """Read a mailcap file and return a dictionary keyed by MIME type.
-
-    Each MIME type is mapped to an entry consisting of a list of
-    dictionaries; the list will contain more than one such dictionary
-    if a given MIME type appears more than once in the mailcap file.
-    Each dictionary contains key-value pairs for that MIME type, where
-    the viewing command is stored with the key "view".
-    """
-    caps = {}
-    while 1:
-        line = fp.readline()
-        if not line: break
-        # Ignore comments and blank lines
-        if line[0] == '#' or line.strip() == '':
-            continue
-        nextline = line
-        # Join continuation lines
-        while nextline[-2:] == '\\\n':
-            nextline = fp.readline()
-            if not nextline: nextline = '\n'
-            line = line[:-2] + nextline
-        # Parse the line
-        key, fields = parseline(line)
-        if not (key and fields):
-            continue
-        # Normalize the key
-        types = key.split('/')
-        for j in range(len(types)):
-            types[j] = types[j].strip()
-        key = '/'.join(types).lower()
-        # Update the database
-        if key in caps:
-            caps[key].append(fields)
-        else:
-            caps[key] = [fields]
-    return caps
-
-def parseline(line):
-    """Parse one entry in a mailcap file and return a dictionary.
-
-    The viewing command is stored as the value with the key "view",
-    and the rest of the fields produce key-value pairs in the dict.
-    """
-    fields = []
-    i, n = 0, len(line)
-    while i < n:
-        field, i = parsefield(line, i, n)
-        fields.append(field)
-        i = i+1 # Skip semicolon
-    if len(fields) < 2:
-        return None, None
-    key, view, rest = fields[0], fields[1], fields[2:]
-    fields = {'view': view}
-    for field in rest:
-        i = field.find('=')
-        if i < 0:
-            fkey = field
-            fvalue = ""
-        else:
-            fkey = field[:i].strip()
-            fvalue = field[i+1:].strip()
-        if fkey in fields:
-            # Ignore it
-            pass
-        else:
-            fields[fkey] = fvalue
-    return key, fields
-
-def parsefield(line, i, n):
-    """Separate one key-value pair in a mailcap entry."""
-    start = i
-    while i < n:
-        c = line[i]
-        if c == ';':
-            break
-        elif c == '\\':
-            i = i+2
-        else:
-            i = i+1
-    return line[start:i].strip(), i
-
-
-# Part 3: using the database.
-
-def findmatch(caps, MIMEtype, key='view', filename="/dev/null", plist=[]):
-    """Find a match for a mailcap entry.
-
-    Return a tuple containing the command line, and the mailcap entry
-    used; (None, None) if no match is found.  This may invoke the
-    'test' command of several matching entries before deciding which
-    entry to use.
-
-    """
-    entries = lookup(caps, MIMEtype, key)
-    # XXX This code should somehow check for the needsterminal flag.
-    for e in entries:
-        if 'test' in e:
-            test = subst(e['test'], filename, plist)
-            if test and os.system(test) != 0:
-                continue
-        command = subst(e[key], MIMEtype, filename, plist)
-        return command, e
-    return None, None
-
-def lookup(caps, MIMEtype, key=None):
-    entries = []
-    if MIMEtype in caps:
-        entries = entries + caps[MIMEtype]
-    MIMEtypes = MIMEtype.split('/')
-    MIMEtype = MIMEtypes[0] + '/*'
-    if MIMEtype in caps:
-        entries = entries + caps[MIMEtype]
-    if key is not None:
-        entries = filter(lambda e, key=key: key in e, entries)
-    return entries
-
-def subst(field, MIMEtype, filename, plist=[]):
-    # XXX Actually, this is Unix-specific
-    res = ''
-    i, n = 0, len(field)
-    while i < n:
-        c = field[i]; i = i+1
-        if c != '%':
-            if c == '\\':
-                c = field[i:i+1]; i = i+1
-            res = res + c
-        else:
-            c = field[i]; i = i+1
-            if c == '%':
-                res = res + c
-            elif c == 's':
-                res = res + filename
-            elif c == 't':
-                res = res + MIMEtype
-            elif c == '{':
-                start = i
-                while i < n and field[i] != '}':
-                    i = i+1
-                name = field[start:i]
-                i = i+1
-                res = res + findparam(name, plist)
-            # XXX To do:
-            # %n == number of parts if type is multipart/*
-            # %F == list of alternating type and filename for parts
-            else:
-                res = res + '%' + c
-    return res
-
-def findparam(name, plist):
-    name = name.lower() + '='
-    n = len(name)
-    for p in plist:
-        if p[:n].lower() == name:
-            return p[n:]
-    return ''
-
-
-# Part 4: test program.
-
-def test():
-    import sys
-    caps = getcaps()
-    if not sys.argv[1:]:
-        show(caps)
-        return
-    for i in range(1, len(sys.argv), 2):
-        args = sys.argv[i:i+2]
-        if len(args) < 2:
-            print "usage: mailcap [MIMEtype file] ..."
-            return
-        MIMEtype = args[0]
-        file = args[1]
-        command, e = findmatch(caps, MIMEtype, 'view', file)
-        if not command:
-            print "No viewer found for", type
-        else:
-            print "Executing:", command
-            sts = os.system(command)
-            if sts:
-                print "Exit status:", sts
-
-def show(caps):
-    print "Mailcap files:"
-    for fn in listmailcapfiles(): print "\t" + fn
-    print
-    if not caps: caps = getcaps()
-    print "Mailcap entries:"
-    print
-    ckeys = caps.keys()
-    ckeys.sort()
-    for type in ckeys:
-        print type
-        entries = caps[type]
-        for e in entries:
-            keys = e.keys()
-            keys.sort()
-            for k in keys:
-                print "  %-15s" % k, e[k]
-            print
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/markupbase.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/markupbase.py
deleted file mode 100644
index d376d03..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/markupbase.py
+++ /dev/null
@@ -1,392 +0,0 @@
-"""Shared support for scanning document type declarations in HTML and XHTML.
-
-This module is used as a foundation for the HTMLParser and sgmllib
-modules (indirectly, for htmllib as well).  It has no documented
-public API and should not be used directly.
-
-"""
-
-import re
-
-_declname_match = re.compile(r'[a-zA-Z][-_.a-zA-Z0-9]*\s*').match
-_declstringlit_match = re.compile(r'(\'[^\']*\'|"[^"]*")\s*').match
-_commentclose = re.compile(r'--\s*>')
-_markedsectionclose = re.compile(r']\s*]\s*>')
-
-# An analysis of the MS-Word extensions is available at
-# http://www.planetpublish.com/xmlarena/xap/Thursday/WordtoXML.pdf
-
-_msmarkedsectionclose = re.compile(r']\s*>')
-
-del re
-
-
-class ParserBase:
-    """Parser base class which provides some common support methods used
-    by the SGML/HTML and XHTML parsers."""
-
-    def __init__(self):
-        if self.__class__ is ParserBase:
-            raise RuntimeError(
-                "markupbase.ParserBase must be subclassed")
-
-    def error(self, message):
-        raise NotImplementedError(
-            "subclasses of ParserBase must override error()")
-
-    def reset(self):
-        self.lineno = 1
-        self.offset = 0
-
-    def getpos(self):
-        """Return current line number and offset."""
-        return self.lineno, self.offset
-
-    # Internal -- update line number and offset.  This should be
-    # called for each piece of data exactly once, in order -- in other
-    # words the concatenation of all the input strings to this
-    # function should be exactly the entire input.
-    def updatepos(self, i, j):
-        if i >= j:
-            return j
-        rawdata = self.rawdata
-        nlines = rawdata.count("\n", i, j)
-        if nlines:
-            self.lineno = self.lineno + nlines
-            pos = rawdata.rindex("\n", i, j) # Should not fail
-            self.offset = j-(pos+1)
-        else:
-            self.offset = self.offset + j-i
-        return j
-
-    _decl_otherchars = ''
-
-    # Internal -- parse declaration (for use by subclasses).
-    def parse_declaration(self, i):
-        # This is some sort of declaration; in "HTML as
-        # deployed," this should only be the document type
-        # declaration ("<!DOCTYPE html...>").
-        # ISO 8879:1986, however, has more complex
-        # declaration syntax for elements in <!...>, including:
-        # --comment--
-        # [marked section]
-        # name in the following list: ENTITY, DOCTYPE, ELEMENT,
-        # ATTLIST, NOTATION, SHORTREF, USEMAP,
-        # LINKTYPE, LINK, IDLINK, USELINK, SYSTEM
-        rawdata = self.rawdata
-        j = i + 2
-        assert rawdata[i:j] == "<!", "unexpected call to parse_declaration"
-        if rawdata[j:j+1] == ">":
-            # the empty comment <!>
-            return j + 1
-        if rawdata[j:j+1] in ("-", ""):
-            # Start of comment followed by buffer boundary,
-            # or just a buffer boundary.
-            return -1
-        # A simple, practical version could look like: ((name|stringlit) S*) + '>'
-        n = len(rawdata)
-        if rawdata[j:j+2] == '--': #comment
-            # Locate --.*-- as the body of the comment
-            return self.parse_comment(i)
-        elif rawdata[j] == '[': #marked section
-            # Locate [statusWord [...arbitrary SGML...]] as the body of the marked section
-            # Where statusWord is one of TEMP, CDATA, IGNORE, INCLUDE, RCDATA
-            # Note that this is extended by Microsoft Office "Save as Web" function
-            # to include [if...] and [endif].
-            return self.parse_marked_section(i)
-        else: #all other declaration elements
-            decltype, j = self._scan_name(j, i)
-        if j < 0:
-            return j
-        if decltype == "doctype":
-            self._decl_otherchars = ''
-        while j < n:
-            c = rawdata[j]
-            if c == ">":
-                # end of declaration syntax
-                data = rawdata[i+2:j]
-                if decltype == "doctype":
-                    self.handle_decl(data)
-                else:
-                    self.unknown_decl(data)
-                return j + 1
-            if c in "\"'":
-                m = _declstringlit_match(rawdata, j)
-                if not m:
-                    return -1 # incomplete
-                j = m.end()
-            elif c in "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ":
-                name, j = self._scan_name(j, i)
-            elif c in self._decl_otherchars:
-                j = j + 1
-            elif c == "[":
-                # this could be handled in a separate doctype parser
-                if decltype == "doctype":
-                    j = self._parse_doctype_subset(j + 1, i)
-                elif decltype in ("attlist", "linktype", "link", "element"):
-                    # must tolerate []'d groups in a content model in an element declaration
-                    # also in data attribute specifications of attlist declaration
-                    # also link type declaration subsets in linktype declarations
-                    # also link attribute specification lists in link declarations
-                    self.error("unsupported '[' char in %s declaration" % decltype)
-                else:
-                    self.error("unexpected '[' char in declaration")
-            else:
-                self.error(
-                    "unexpected %r char in declaration" % rawdata[j])
-            if j < 0:
-                return j
-        return -1 # incomplete
-
-    # Internal -- parse a marked section
-    # Override this to handle MS-word extension syntax <![if word]>content<![endif]>
-    def parse_marked_section(self, i, report=1):
-        rawdata= self.rawdata
-        assert rawdata[i:i+3] == '<![', "unexpected call to parse_marked_section()"
-        sectName, j = self._scan_name( i+3, i )
-        if j < 0:
-            return j
-        if sectName in ("temp", "cdata", "ignore", "include", "rcdata"):
-            # look for standard ]]> ending
-            match= _markedsectionclose.search(rawdata, i+3)
-        elif sectName in ("if", "else", "endif"):
-            # look for MS Office ]> ending
-            match= _msmarkedsectionclose.search(rawdata, i+3)
-        else:
-            self.error('unknown status keyword %r in marked section' % rawdata[i+3:j])
-        if not match:
-            return -1
-        if report:
-            j = match.start(0)
-            self.unknown_decl(rawdata[i+3: j])
-        return match.end(0)
-
-    # Internal -- parse comment, return length or -1 if not terminated
-    def parse_comment(self, i, report=1):
-        rawdata = self.rawdata
-        if rawdata[i:i+4] != '<!--':
-            self.error('unexpected call to parse_comment()')
-        match = _commentclose.search(rawdata, i+4)
-        if not match:
-            return -1
-        if report:
-            j = match.start(0)
-            self.handle_comment(rawdata[i+4: j])
-        return match.end(0)
-
-    # Internal -- scan past the internal subset in a <!DOCTYPE declaration,
-    # returning the index just past any whitespace following the trailing ']'.
-    def _parse_doctype_subset(self, i, declstartpos):
-        rawdata = self.rawdata
-        n = len(rawdata)
-        j = i
-        while j < n:
-            c = rawdata[j]
-            if c == "<":
-                s = rawdata[j:j+2]
-                if s == "<":
-                    # end of buffer; incomplete
-                    return -1
-                if s != "<!":
-                    self.updatepos(declstartpos, j + 1)
-                    self.error("unexpected char in internal subset (in %r)" % s)
-                if (j + 2) == n:
-                    # end of buffer; incomplete
-                    return -1
-                if (j + 4) > n:
-                    # end of buffer; incomplete
-                    return -1
-                if rawdata[j:j+4] == "<!--":
-                    j = self.parse_comment(j, report=0)
-                    if j < 0:
-                        return j
-                    continue
-                name, j = self._scan_name(j + 2, declstartpos)
-                if j == -1:
-                    return -1
-                if name not in ("attlist", "element", "entity", "notation"):
-                    self.updatepos(declstartpos, j + 2)
-                    self.error(
-                        "unknown declaration %r in internal subset" % name)
-                # handle the individual names
-                meth = getattr(self, "_parse_doctype_" + name)
-                j = meth(j, declstartpos)
-                if j < 0:
-                    return j
-            elif c == "%":
-                # parameter entity reference
-                if (j + 1) == n:
-                    # end of buffer; incomplete
-                    return -1
-                s, j = self._scan_name(j + 1, declstartpos)
-                if j < 0:
-                    return j
-                if rawdata[j] == ";":
-                    j = j + 1
-            elif c == "]":
-                j = j + 1
-                while j < n and rawdata[j].isspace():
-                    j = j + 1
-                if j < n:
-                    if rawdata[j] == ">":
-                        return j
-                    self.updatepos(declstartpos, j)
-                    self.error("unexpected char after internal subset")
-                else:
-                    return -1
-            elif c.isspace():
-                j = j + 1
-            else:
-                self.updatepos(declstartpos, j)
-                self.error("unexpected char %r in internal subset" % c)
-        # end of buffer reached
-        return -1
-
-    # Internal -- scan past <!ELEMENT declarations
-    def _parse_doctype_element(self, i, declstartpos):
-        name, j = self._scan_name(i, declstartpos)
-        if j == -1:
-            return -1
-        # style content model; just skip until '>'
-        rawdata = self.rawdata
-        if '>' in rawdata[j:]:
-            return rawdata.find(">", j) + 1
-        return -1
-
-    # Internal -- scan past <!ATTLIST declarations
-    def _parse_doctype_attlist(self, i, declstartpos):
-        rawdata = self.rawdata
-        name, j = self._scan_name(i, declstartpos)
-        c = rawdata[j:j+1]
-        if c == "":
-            return -1
-        if c == ">":
-            return j + 1
-        while 1:
-            # scan a series of attribute descriptions; simplified:
-            #   name type [value] [#constraint]
-            name, j = self._scan_name(j, declstartpos)
-            if j < 0:
-                return j
-            c = rawdata[j:j+1]
-            if c == "":
-                return -1
-            if c == "(":
-                # an enumerated type; look for ')'
-                if ")" in rawdata[j:]:
-                    j = rawdata.find(")", j) + 1
-                else:
-                    return -1
-                while rawdata[j:j+1].isspace():
-                    j = j + 1
-                if not rawdata[j:]:
-                    # end of buffer, incomplete
-                    return -1
-            else:
-                name, j = self._scan_name(j, declstartpos)
-            c = rawdata[j:j+1]
-            if not c:
-                return -1
-            if c in "'\"":
-                m = _declstringlit_match(rawdata, j)
-                if m:
-                    j = m.end()
-                else:
-                    return -1
-                c = rawdata[j:j+1]
-                if not c:
-                    return -1
-            if c == "#":
-                if rawdata[j:] == "#":
-                    # end of buffer
-                    return -1
-                name, j = self._scan_name(j + 1, declstartpos)
-                if j < 0:
-                    return j
-                c = rawdata[j:j+1]
-                if not c:
-                    return -1
-            if c == '>':
-                # all done
-                return j + 1
-
-    # Internal -- scan past <!NOTATION declarations
-    def _parse_doctype_notation(self, i, declstartpos):
-        name, j = self._scan_name(i, declstartpos)
-        if j < 0:
-            return j
-        rawdata = self.rawdata
-        while 1:
-            c = rawdata[j:j+1]
-            if not c:
-                # end of buffer; incomplete
-                return -1
-            if c == '>':
-                return j + 1
-            if c in "'\"":
-                m = _declstringlit_match(rawdata, j)
-                if not m:
-                    return -1
-                j = m.end()
-            else:
-                name, j = self._scan_name(j, declstartpos)
-                if j < 0:
-                    return j
-
-    # Internal -- scan past <!ENTITY declarations
-    def _parse_doctype_entity(self, i, declstartpos):
-        rawdata = self.rawdata
-        if rawdata[i:i+1] == "%":
-            j = i + 1
-            while 1:
-                c = rawdata[j:j+1]
-                if not c:
-                    return -1
-                if c.isspace():
-                    j = j + 1
-                else:
-                    break
-        else:
-            j = i
-        name, j = self._scan_name(j, declstartpos)
-        if j < 0:
-            return j
-        while 1:
-            c = self.rawdata[j:j+1]
-            if not c:
-                return -1
-            if c in "'\"":
-                m = _declstringlit_match(rawdata, j)
-                if m:
-                    j = m.end()
-                else:
-                    return -1    # incomplete
-            elif c == ">":
-                return j + 1
-            else:
-                name, j = self._scan_name(j, declstartpos)
-                if j < 0:
-                    return j
-
-    # Internal -- scan a name token and the new position and the token, or
-    # return -1 if we've reached the end of the buffer.
-    def _scan_name(self, i, declstartpos):
-        rawdata = self.rawdata
-        n = len(rawdata)
-        if i == n:
-            return None, -1
-        m = _declname_match(rawdata, i)
-        if m:
-            s = m.group()
-            name = s.strip()
-            if (i + len(s)) == n:
-                return None, -1  # end of buffer
-            return name.lower(), m.end()
-        else:
-            self.updatepos(declstartpos, i)
-            self.error("expected name token at %r"
-                       % rawdata[declstartpos:declstartpos+20])
-
-    # To be overridden -- handlers for unknown objects
-    def unknown_decl(self, data):
-        pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/md5.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/md5.py
deleted file mode 100644
index 10d0b05..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/md5.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# $Id$
-#
-#  Copyright (C) 2005   Gregory P. Smith (greg@krypto.org)
-#  Licensed to PSF under a Contributor Agreement.
-
-import warnings
-warnings.warn("the md5 module is deprecated; use hashlib instead",
-                DeprecationWarning, 2)
-
-from hashlib import md5
-new = md5
-
-blocksize = 1        # legacy value (wrong in any useful sense)
-digest_size = 16
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/mhlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/mhlib.py
deleted file mode 100644
index a21f1d6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/mhlib.py
+++ /dev/null
@@ -1,1005 +0,0 @@
-"""MH interface -- purely object-oriented (well, almost)
-
-Executive summary:
-
-import mhlib
-
-mh = mhlib.MH()         # use default mailbox directory and profile
-mh = mhlib.MH(mailbox)  # override mailbox location (default from profile)
-mh = mhlib.MH(mailbox, profile) # override mailbox and profile
-
-mh.error(format, ...)   # print error message -- can be overridden
-s = mh.getprofile(key)  # profile entry (None if not set)
-path = mh.getpath()     # mailbox pathname
-name = mh.getcontext()  # name of current folder
-mh.setcontext(name)     # set name of current folder
-
-list = mh.listfolders() # names of top-level folders
-list = mh.listallfolders() # names of all folders, including subfolders
-list = mh.listsubfolders(name) # direct subfolders of given folder
-list = mh.listallsubfolders(name) # all subfolders of given folder
-
-mh.makefolder(name)     # create new folder
-mh.deletefolder(name)   # delete folder -- must have no subfolders
-
-f = mh.openfolder(name) # new open folder object
-
-f.error(format, ...)    # same as mh.error(format, ...)
-path = f.getfullname()  # folder's full pathname
-path = f.getsequencesfilename() # full pathname of folder's sequences file
-path = f.getmessagefilename(n)  # full pathname of message n in folder
-
-list = f.listmessages() # list of messages in folder (as numbers)
-n = f.getcurrent()      # get current message
-f.setcurrent(n)         # set current message
-list = f.parsesequence(seq)     # parse msgs syntax into list of messages
-n = f.getlast()         # get last message (0 if no messagse)
-f.setlast(n)            # set last message (internal use only)
-
-dict = f.getsequences() # dictionary of sequences in folder {name: list}
-f.putsequences(dict)    # write sequences back to folder
-
-f.createmessage(n, fp)  # add message from file f as number n
-f.removemessages(list)  # remove messages in list from folder
-f.refilemessages(list, tofolder) # move messages in list to other folder
-f.movemessage(n, tofolder, ton)  # move one message to a given destination
-f.copymessage(n, tofolder, ton)  # copy one message to a given destination
-
-m = f.openmessage(n)    # new open message object (costs a file descriptor)
-m is a derived class of mimetools.Message(rfc822.Message), with:
-s = m.getheadertext()   # text of message's headers
-s = m.getheadertext(pred) # text of message's headers, filtered by pred
-s = m.getbodytext()     # text of message's body, decoded
-s = m.getbodytext(0)    # text of message's body, not decoded
-"""
-from warnings import warnpy3k
-warnpy3k("the mhlib module has been removed in Python 3.0; use the mailbox "
-            "module instead", stacklevel=2)
-del warnpy3k
-
-# XXX To do, functionality:
-# - annotate messages
-# - send messages
-#
-# XXX To do, organization:
-# - move IntSet to separate file
-# - move most Message functionality to module mimetools
-
-
-# Customizable defaults
-
-MH_PROFILE = '~/.mh_profile'
-PATH = '~/Mail'
-MH_SEQUENCES = '.mh_sequences'
-FOLDER_PROTECT = 0700
-
-
-# Imported modules
-
-import os
-import sys
-import re
-import mimetools
-import multifile
-import shutil
-from bisect import bisect
-
-__all__ = ["MH","Error","Folder","Message"]
-
-# Exported constants
-
-class Error(Exception):
-    pass
-
-
-class MH:
-    """Class representing a particular collection of folders.
-    Optional constructor arguments are the pathname for the directory
-    containing the collection, and the MH profile to use.
-    If either is omitted or empty a default is used; the default
-    directory is taken from the MH profile if it is specified there."""
-
-    def __init__(self, path = None, profile = None):
-        """Constructor."""
-        if profile is None: profile = MH_PROFILE
-        self.profile = os.path.expanduser(profile)
-        if path is None: path = self.getprofile('Path')
-        if not path: path = PATH
-        if not os.path.isabs(path) and path[0] != '~':
-            path = os.path.join('~', path)
-        path = os.path.expanduser(path)
-        if not os.path.isdir(path): raise Error, 'MH() path not found'
-        self.path = path
-
-    def __repr__(self):
-        """String representation."""
-        return 'MH(%r, %r)' % (self.path, self.profile)
-
-    def error(self, msg, *args):
-        """Routine to print an error.  May be overridden by a derived class."""
-        sys.stderr.write('MH error: %s\n' % (msg % args))
-
-    def getprofile(self, key):
-        """Return a profile entry, None if not found."""
-        return pickline(self.profile, key)
-
-    def getpath(self):
-        """Return the path (the name of the collection's directory)."""
-        return self.path
-
-    def getcontext(self):
-        """Return the name of the current folder."""
-        context = pickline(os.path.join(self.getpath(), 'context'),
-                  'Current-Folder')
-        if not context: context = 'inbox'
-        return context
-
-    def setcontext(self, context):
-        """Set the name of the current folder."""
-        fn = os.path.join(self.getpath(), 'context')
-        f = open(fn, "w")
-        f.write("Current-Folder: %s\n" % context)
-        f.close()
-
-    def listfolders(self):
-        """Return the names of the top-level folders."""
-        folders = []
-        path = self.getpath()
-        for name in os.listdir(path):
-            fullname = os.path.join(path, name)
-            if os.path.isdir(fullname):
-                folders.append(name)
-        folders.sort()
-        return folders
-
-    def listsubfolders(self, name):
-        """Return the names of the subfolders in a given folder
-        (prefixed with the given folder name)."""
-        fullname = os.path.join(self.path, name)
-        # Get the link count so we can avoid listing folders
-        # that have no subfolders.
-        nlinks = os.stat(fullname).st_nlink
-        if nlinks <= 2:
-            return []
-        subfolders = []
-        subnames = os.listdir(fullname)
-        for subname in subnames:
-            fullsubname = os.path.join(fullname, subname)
-            if os.path.isdir(fullsubname):
-                name_subname = os.path.join(name, subname)
-                subfolders.append(name_subname)
-                # Stop looking for subfolders when
-                # we've seen them all
-                nlinks = nlinks - 1
-                if nlinks <= 2:
-                    break
-        subfolders.sort()
-        return subfolders
-
-    def listallfolders(self):
-        """Return the names of all folders and subfolders, recursively."""
-        return self.listallsubfolders('')
-
-    def listallsubfolders(self, name):
-        """Return the names of subfolders in a given folder, recursively."""
-        fullname = os.path.join(self.path, name)
-        # Get the link count so we can avoid listing folders
-        # that have no subfolders.
-        nlinks = os.stat(fullname).st_nlink
-        if nlinks <= 2:
-            return []
-        subfolders = []
-        subnames = os.listdir(fullname)
-        for subname in subnames:
-            if subname[0] == ',' or isnumeric(subname): continue
-            fullsubname = os.path.join(fullname, subname)
-            if os.path.isdir(fullsubname):
-                name_subname = os.path.join(name, subname)
-                subfolders.append(name_subname)
-                if not os.path.islink(fullsubname):
-                    subsubfolders = self.listallsubfolders(
-                              name_subname)
-                    subfolders = subfolders + subsubfolders
-                # Stop looking for subfolders when
-                # we've seen them all
-                nlinks = nlinks - 1
-                if nlinks <= 2:
-                    break
-        subfolders.sort()
-        return subfolders
-
-    def openfolder(self, name):
-        """Return a new Folder object for the named folder."""
-        return Folder(self, name)
-
-    def makefolder(self, name):
-        """Create a new folder (or raise os.error if it cannot be created)."""
-        protect = pickline(self.profile, 'Folder-Protect')
-        if protect and isnumeric(protect):
-            mode = int(protect, 8)
-        else:
-            mode = FOLDER_PROTECT
-        os.mkdir(os.path.join(self.getpath(), name), mode)
-
-    def deletefolder(self, name):
-        """Delete a folder.  This removes files in the folder but not
-        subdirectories.  Raise os.error if deleting the folder itself fails."""
-        fullname = os.path.join(self.getpath(), name)
-        for subname in os.listdir(fullname):
-            fullsubname = os.path.join(fullname, subname)
-            try:
-                os.unlink(fullsubname)
-            except os.error:
-                self.error('%s not deleted, continuing...' %
-                          fullsubname)
-        os.rmdir(fullname)
-
-
-numericprog = re.compile('^[1-9][0-9]*$')
-def isnumeric(str):
-    return numericprog.match(str) is not None
-
-class Folder:
-    """Class representing a particular folder."""
-
-    def __init__(self, mh, name):
-        """Constructor."""
-        self.mh = mh
-        self.name = name
-        if not os.path.isdir(self.getfullname()):
-            raise Error, 'no folder %s' % name
-
-    def __repr__(self):
-        """String representation."""
-        return 'Folder(%r, %r)' % (self.mh, self.name)
-
-    def error(self, *args):
-        """Error message handler."""
-        self.mh.error(*args)
-
-    def getfullname(self):
-        """Return the full pathname of the folder."""
-        return os.path.join(self.mh.path, self.name)
-
-    def getsequencesfilename(self):
-        """Return the full pathname of the folder's sequences file."""
-        return os.path.join(self.getfullname(), MH_SEQUENCES)
-
-    def getmessagefilename(self, n):
-        """Return the full pathname of a message in the folder."""
-        return os.path.join(self.getfullname(), str(n))
-
-    def listsubfolders(self):
-        """Return list of direct subfolders."""
-        return self.mh.listsubfolders(self.name)
-
-    def listallsubfolders(self):
-        """Return list of all subfolders."""
-        return self.mh.listallsubfolders(self.name)
-
-    def listmessages(self):
-        """Return the list of messages currently present in the folder.
-        As a side effect, set self.last to the last message (or 0)."""
-        messages = []
-        match = numericprog.match
-        append = messages.append
-        for name in os.listdir(self.getfullname()):
-            if match(name):
-                append(name)
-        messages = map(int, messages)
-        messages.sort()
-        if messages:
-            self.last = messages[-1]
-        else:
-            self.last = 0
-        return messages
-
-    def getsequences(self):
-        """Return the set of sequences for the folder."""
-        sequences = {}
-        fullname = self.getsequencesfilename()
-        try:
-            f = open(fullname, 'r')
-        except IOError:
-            return sequences
-        while 1:
-            line = f.readline()
-            if not line: break
-            fields = line.split(':')
-            if len(fields) != 2:
-                self.error('bad sequence in %s: %s' %
-                          (fullname, line.strip()))
-            key = fields[0].strip()
-            value = IntSet(fields[1].strip(), ' ').tolist()
-            sequences[key] = value
-        return sequences
-
-    def putsequences(self, sequences):
-        """Write the set of sequences back to the folder."""
-        fullname = self.getsequencesfilename()
-        f = None
-        for key, seq in sequences.iteritems():
-            s = IntSet('', ' ')
-            s.fromlist(seq)
-            if not f: f = open(fullname, 'w')
-            f.write('%s: %s\n' % (key, s.tostring()))
-        if not f:
-            try:
-                os.unlink(fullname)
-            except os.error:
-                pass
-        else:
-            f.close()
-
-    def getcurrent(self):
-        """Return the current message.  Raise Error when there is none."""
-        seqs = self.getsequences()
-        try:
-            return max(seqs['cur'])
-        except (ValueError, KeyError):
-            raise Error, "no cur message"
-
-    def setcurrent(self, n):
-        """Set the current message."""
-        updateline(self.getsequencesfilename(), 'cur', str(n), 0)
-
-    def parsesequence(self, seq):
-        """Parse an MH sequence specification into a message list.
-        Attempt to mimic mh-sequence(5) as close as possible.
-        Also attempt to mimic observed behavior regarding which
-        conditions cause which error messages."""
-        # XXX Still not complete (see mh-format(5)).
-        # Missing are:
-        # - 'prev', 'next' as count
-        # - Sequence-Negation option
-        all = self.listmessages()
-        # Observed behavior: test for empty folder is done first
-        if not all:
-            raise Error, "no messages in %s" % self.name
-        # Common case first: all is frequently the default
-        if seq == 'all':
-            return all
-        # Test for X:Y before X-Y because 'seq:-n' matches both
-        i = seq.find(':')
-        if i >= 0:
-            head, dir, tail = seq[:i], '', seq[i+1:]
-            if tail[:1] in '-+':
-                dir, tail = tail[:1], tail[1:]
-            if not isnumeric(tail):
-                raise Error, "bad message list %s" % seq
-            try:
-                count = int(tail)
-            except (ValueError, OverflowError):
-                # Can't use sys.maxint because of i+count below
-                count = len(all)
-            try:
-                anchor = self._parseindex(head, all)
-            except Error, msg:
-                seqs = self.getsequences()
-                if not head in seqs:
-                    if not msg:
-                        msg = "bad message list %s" % seq
-                    raise Error, msg, sys.exc_info()[2]
-                msgs = seqs[head]
-                if not msgs:
-                    raise Error, "sequence %s empty" % head
-                if dir == '-':
-                    return msgs[-count:]
-                else:
-                    return msgs[:count]
-            else:
-                if not dir:
-                    if head in ('prev', 'last'):
-                        dir = '-'
-                if dir == '-':
-                    i = bisect(all, anchor)
-                    return all[max(0, i-count):i]
-                else:
-                    i = bisect(all, anchor-1)
-                    return all[i:i+count]
-        # Test for X-Y next
-        i = seq.find('-')
-        if i >= 0:
-            begin = self._parseindex(seq[:i], all)
-            end = self._parseindex(seq[i+1:], all)
-            i = bisect(all, begin-1)
-            j = bisect(all, end)
-            r = all[i:j]
-            if not r:
-                raise Error, "bad message list %s" % seq
-            return r
-        # Neither X:Y nor X-Y; must be a number or a (pseudo-)sequence
-        try:
-            n = self._parseindex(seq, all)
-        except Error, msg:
-            seqs = self.getsequences()
-            if not seq in seqs:
-                if not msg:
-                    msg = "bad message list %s" % seq
-                raise Error, msg
-            return seqs[seq]
-        else:
-            if n not in all:
-                if isnumeric(seq):
-                    raise Error, "message %d doesn't exist" % n
-                else:
-                    raise Error, "no %s message" % seq
-            else:
-                return [n]
-
-    def _parseindex(self, seq, all):
-        """Internal: parse a message number (or cur, first, etc.)."""
-        if isnumeric(seq):
-            try:
-                return int(seq)
-            except (OverflowError, ValueError):
-                return sys.maxint
-        if seq in ('cur', '.'):
-            return self.getcurrent()
-        if seq == 'first':
-            return all[0]
-        if seq == 'last':
-            return all[-1]
-        if seq == 'next':
-            n = self.getcurrent()
-            i = bisect(all, n)
-            try:
-                return all[i]
-            except IndexError:
-                raise Error, "no next message"
-        if seq == 'prev':
-            n = self.getcurrent()
-            i = bisect(all, n-1)
-            if i == 0:
-                raise Error, "no prev message"
-            try:
-                return all[i-1]
-            except IndexError:
-                raise Error, "no prev message"
-        raise Error, None
-
-    def openmessage(self, n):
-        """Open a message -- returns a Message object."""
-        return Message(self, n)
-
-    def removemessages(self, list):
-        """Remove one or more messages -- may raise os.error."""
-        errors = []
-        deleted = []
-        for n in list:
-            path = self.getmessagefilename(n)
-            commapath = self.getmessagefilename(',' + str(n))
-            try:
-                os.unlink(commapath)
-            except os.error:
-                pass
-            try:
-                os.rename(path, commapath)
-            except os.error, msg:
-                errors.append(msg)
-            else:
-                deleted.append(n)
-        if deleted:
-            self.removefromallsequences(deleted)
-        if errors:
-            if len(errors) == 1:
-                raise os.error, errors[0]
-            else:
-                raise os.error, ('multiple errors:', errors)
-
-    def refilemessages(self, list, tofolder, keepsequences=0):
-        """Refile one or more messages -- may raise os.error.
-        'tofolder' is an open folder object."""
-        errors = []
-        refiled = {}
-        for n in list:
-            ton = tofolder.getlast() + 1
-            path = self.getmessagefilename(n)
-            topath = tofolder.getmessagefilename(ton)
-            try:
-                os.rename(path, topath)
-            except os.error:
-                # Try copying
-                try:
-                    shutil.copy2(path, topath)
-                    os.unlink(path)
-                except (IOError, os.error), msg:
-                    errors.append(msg)
-                    try:
-                        os.unlink(topath)
-                    except os.error:
-                        pass
-                    continue
-            tofolder.setlast(ton)
-            refiled[n] = ton
-        if refiled:
-            if keepsequences:
-                tofolder._copysequences(self, refiled.items())
-            self.removefromallsequences(refiled.keys())
-        if errors:
-            if len(errors) == 1:
-                raise os.error, errors[0]
-            else:
-                raise os.error, ('multiple errors:', errors)
-
-    def _copysequences(self, fromfolder, refileditems):
-        """Helper for refilemessages() to copy sequences."""
-        fromsequences = fromfolder.getsequences()
-        tosequences = self.getsequences()
-        changed = 0
-        for name, seq in fromsequences.items():
-            try:
-                toseq = tosequences[name]
-                new = 0
-            except KeyError:
-                toseq = []
-                new = 1
-            for fromn, ton in refileditems:
-                if fromn in seq:
-                    toseq.append(ton)
-                    changed = 1
-            if new and toseq:
-                tosequences[name] = toseq
-        if changed:
-            self.putsequences(tosequences)
-
-    def movemessage(self, n, tofolder, ton):
-        """Move one message over a specific destination message,
-        which may or may not already exist."""
-        path = self.getmessagefilename(n)
-        # Open it to check that it exists
-        f = open(path)
-        f.close()
-        del f
-        topath = tofolder.getmessagefilename(ton)
-        backuptopath = tofolder.getmessagefilename(',%d' % ton)
-        try:
-            os.rename(topath, backuptopath)
-        except os.error:
-            pass
-        try:
-            os.rename(path, topath)
-        except os.error:
-            # Try copying
-            ok = 0
-            try:
-                tofolder.setlast(None)
-                shutil.copy2(path, topath)
-                ok = 1
-            finally:
-                if not ok:
-                    try:
-                        os.unlink(topath)
-                    except os.error:
-                        pass
-            os.unlink(path)
-        self.removefromallsequences([n])
-
-    def copymessage(self, n, tofolder, ton):
-        """Copy one message over a specific destination message,
-        which may or may not already exist."""
-        path = self.getmessagefilename(n)
-        # Open it to check that it exists
-        f = open(path)
-        f.close()
-        del f
-        topath = tofolder.getmessagefilename(ton)
-        backuptopath = tofolder.getmessagefilename(',%d' % ton)
-        try:
-            os.rename(topath, backuptopath)
-        except os.error:
-            pass
-        ok = 0
-        try:
-            tofolder.setlast(None)
-            shutil.copy2(path, topath)
-            ok = 1
-        finally:
-            if not ok:
-                try:
-                    os.unlink(topath)
-                except os.error:
-                    pass
-
-    def createmessage(self, n, txt):
-        """Create a message, with text from the open file txt."""
-        path = self.getmessagefilename(n)
-        backuppath = self.getmessagefilename(',%d' % n)
-        try:
-            os.rename(path, backuppath)
-        except os.error:
-            pass
-        ok = 0
-        BUFSIZE = 16*1024
-        try:
-            f = open(path, "w")
-            while 1:
-                buf = txt.read(BUFSIZE)
-                if not buf:
-                    break
-                f.write(buf)
-            f.close()
-            ok = 1
-        finally:
-            if not ok:
-                try:
-                    os.unlink(path)
-                except os.error:
-                    pass
-
-    def removefromallsequences(self, list):
-        """Remove one or more messages from all sequences (including last)
-        -- but not from 'cur'!!!"""
-        if hasattr(self, 'last') and self.last in list:
-            del self.last
-        sequences = self.getsequences()
-        changed = 0
-        for name, seq in sequences.items():
-            if name == 'cur':
-                continue
-            for n in list:
-                if n in seq:
-                    seq.remove(n)
-                    changed = 1
-                    if not seq:
-                        del sequences[name]
-        if changed:
-            self.putsequences(sequences)
-
-    def getlast(self):
-        """Return the last message number."""
-        if not hasattr(self, 'last'):
-            self.listmessages() # Set self.last
-        return self.last
-
-    def setlast(self, last):
-        """Set the last message number."""
-        if last is None:
-            if hasattr(self, 'last'):
-                del self.last
-        else:
-            self.last = last
-
-class Message(mimetools.Message):
-
-    def __init__(self, f, n, fp = None):
-        """Constructor."""
-        self.folder = f
-        self.number = n
-        if fp is None:
-            path = f.getmessagefilename(n)
-            fp = open(path, 'r')
-        mimetools.Message.__init__(self, fp)
-
-    def __repr__(self):
-        """String representation."""
-        return 'Message(%s, %s)' % (repr(self.folder), self.number)
-
-    def getheadertext(self, pred = None):
-        """Return the message's header text as a string.  If an
-        argument is specified, it is used as a filter predicate to
-        decide which headers to return (its argument is the header
-        name converted to lower case)."""
-        if pred is None:
-            return ''.join(self.headers)
-        headers = []
-        hit = 0
-        for line in self.headers:
-            if not line[0].isspace():
-                i = line.find(':')
-                if i > 0:
-                    hit = pred(line[:i].lower())
-            if hit: headers.append(line)
-        return ''.join(headers)
-
-    def getbodytext(self, decode = 1):
-        """Return the message's body text as string.  This undoes a
-        Content-Transfer-Encoding, but does not interpret other MIME
-        features (e.g. multipart messages).  To suppress decoding,
-        pass 0 as an argument."""
-        self.fp.seek(self.startofbody)
-        encoding = self.getencoding()
-        if not decode or encoding in ('', '7bit', '8bit', 'binary'):
-            return self.fp.read()
-        try:
-            from cStringIO import StringIO
-        except ImportError:
-            from StringIO import StringIO
-        output = StringIO()
-        mimetools.decode(self.fp, output, encoding)
-        return output.getvalue()
-
-    def getbodyparts(self):
-        """Only for multipart messages: return the message's body as a
-        list of SubMessage objects.  Each submessage object behaves
-        (almost) as a Message object."""
-        if self.getmaintype() != 'multipart':
-            raise Error, 'Content-Type is not multipart/*'
-        bdry = self.getparam('boundary')
-        if not bdry:
-            raise Error, 'multipart/* without boundary param'
-        self.fp.seek(self.startofbody)
-        mf = multifile.MultiFile(self.fp)
-        mf.push(bdry)
-        parts = []
-        while mf.next():
-            n = "%s.%r" % (self.number, 1 + len(parts))
-            part = SubMessage(self.folder, n, mf)
-            parts.append(part)
-        mf.pop()
-        return parts
-
-    def getbody(self):
-        """Return body, either a string or a list of messages."""
-        if self.getmaintype() == 'multipart':
-            return self.getbodyparts()
-        else:
-            return self.getbodytext()
-
-
-class SubMessage(Message):
-
-    def __init__(self, f, n, fp):
-        """Constructor."""
-        Message.__init__(self, f, n, fp)
-        if self.getmaintype() == 'multipart':
-            self.body = Message.getbodyparts(self)
-        else:
-            self.body = Message.getbodytext(self)
-        self.bodyencoded = Message.getbodytext(self, decode=0)
-            # XXX If this is big, should remember file pointers
-
-    def __repr__(self):
-        """String representation."""
-        f, n, fp = self.folder, self.number, self.fp
-        return 'SubMessage(%s, %s, %s)' % (f, n, fp)
-
-    def getbodytext(self, decode = 1):
-        if not decode:
-            return self.bodyencoded
-        if type(self.body) == type(''):
-            return self.body
-
-    def getbodyparts(self):
-        if type(self.body) == type([]):
-            return self.body
-
-    def getbody(self):
-        return self.body
-
-
-class IntSet:
-    """Class implementing sets of integers.
-
-    This is an efficient representation for sets consisting of several
-    continuous ranges, e.g. 1-100,200-400,402-1000 is represented
-    internally as a list of three pairs: [(1,100), (200,400),
-    (402,1000)].  The internal representation is always kept normalized.
-
-    The constructor has up to three arguments:
-    - the string used to initialize the set (default ''),
-    - the separator between ranges (default ',')
-    - the separator between begin and end of a range (default '-')
-    The separators must be strings (not regexprs) and should be different.
-
-    The tostring() function yields a string that can be passed to another
-    IntSet constructor; __repr__() is a valid IntSet constructor itself.
-    """
-
-    # XXX The default begin/end separator means that negative numbers are
-    #     not supported very well.
-    #
-    # XXX There are currently no operations to remove set elements.
-
-    def __init__(self, data = None, sep = ',', rng = '-'):
-        self.pairs = []
-        self.sep = sep
-        self.rng = rng
-        if data: self.fromstring(data)
-
-    def reset(self):
-        self.pairs = []
-
-    def __cmp__(self, other):
-        return cmp(self.pairs, other.pairs)
-
-    def __hash__(self):
-        return hash(self.pairs)
-
-    def __repr__(self):
-        return 'IntSet(%r, %r, %r)' % (self.tostring(), self.sep, self.rng)
-
-    def normalize(self):
-        self.pairs.sort()
-        i = 1
-        while i < len(self.pairs):
-            alo, ahi = self.pairs[i-1]
-            blo, bhi = self.pairs[i]
-            if ahi >= blo-1:
-                self.pairs[i-1:i+1] = [(alo, max(ahi, bhi))]
-            else:
-                i = i+1
-
-    def tostring(self):
-        s = ''
-        for lo, hi in self.pairs:
-            if lo == hi: t = repr(lo)
-            else: t = repr(lo) + self.rng + repr(hi)
-            if s: s = s + (self.sep + t)
-            else: s = t
-        return s
-
-    def tolist(self):
-        l = []
-        for lo, hi in self.pairs:
-            m = range(lo, hi+1)
-            l = l + m
-        return l
-
-    def fromlist(self, list):
-        for i in list:
-            self.append(i)
-
-    def clone(self):
-        new = IntSet()
-        new.pairs = self.pairs[:]
-        return new
-
-    def min(self):
-        return self.pairs[0][0]
-
-    def max(self):
-        return self.pairs[-1][-1]
-
-    def contains(self, x):
-        for lo, hi in self.pairs:
-            if lo <= x <= hi: return True
-        return False
-
-    def append(self, x):
-        for i in range(len(self.pairs)):
-            lo, hi = self.pairs[i]
-            if x < lo: # Need to insert before
-                if x+1 == lo:
-                    self.pairs[i] = (x, hi)
-                else:
-                    self.pairs.insert(i, (x, x))
-                if i > 0 and x-1 == self.pairs[i-1][1]:
-                    # Merge with previous
-                    self.pairs[i-1:i+1] = [
-                            (self.pairs[i-1][0],
-                             self.pairs[i][1])
-                          ]
-                return
-            if x <= hi: # Already in set
-                return
-        i = len(self.pairs) - 1
-        if i >= 0:
-            lo, hi = self.pairs[i]
-            if x-1 == hi:
-                self.pairs[i] = lo, x
-                return
-        self.pairs.append((x, x))
-
-    def addpair(self, xlo, xhi):
-        if xlo > xhi: return
-        self.pairs.append((xlo, xhi))
-        self.normalize()
-
-    def fromstring(self, data):
-        new = []
-        for part in data.split(self.sep):
-            list = []
-            for subp in part.split(self.rng):
-                s = subp.strip()
-                list.append(int(s))
-            if len(list) == 1:
-                new.append((list[0], list[0]))
-            elif len(list) == 2 and list[0] <= list[1]:
-                new.append((list[0], list[1]))
-            else:
-                raise ValueError, 'bad data passed to IntSet'
-        self.pairs = self.pairs + new
-        self.normalize()
-
-
-# Subroutines to read/write entries in .mh_profile and .mh_sequences
-
-def pickline(file, key, casefold = 1):
-    try:
-        f = open(file, 'r')
-    except IOError:
-        return None
-    pat = re.escape(key) + ':'
-    prog = re.compile(pat, casefold and re.IGNORECASE)
-    while 1:
-        line = f.readline()
-        if not line: break
-        if prog.match(line):
-            text = line[len(key)+1:]
-            while 1:
-                line = f.readline()
-                if not line or not line[0].isspace():
-                    break
-                text = text + line
-            return text.strip()
-    return None
-
-def updateline(file, key, value, casefold = 1):
-    try:
-        f = open(file, 'r')
-        lines = f.readlines()
-        f.close()
-    except IOError:
-        lines = []
-    pat = re.escape(key) + ':(.*)\n'
-    prog = re.compile(pat, casefold and re.IGNORECASE)
-    if value is None:
-        newline = None
-    else:
-        newline = '%s: %s\n' % (key, value)
-    for i in range(len(lines)):
-        line = lines[i]
-        if prog.match(line):
-            if newline is None:
-                del lines[i]
-            else:
-                lines[i] = newline
-            break
-    else:
-        if newline is not None:
-            lines.append(newline)
-    tempfile = file + "~"
-    f = open(tempfile, 'w')
-    for line in lines:
-        f.write(line)
-    f.close()
-    os.rename(tempfile, file)
-
-
-# Test program
-
-def test():
-    global mh, f
-    os.system('rm -rf $HOME/Mail/@test')
-    mh = MH()
-    def do(s): print s; print eval(s)
-    do('mh.listfolders()')
-    do('mh.listallfolders()')
-    testfolders = ['@test', '@test/test1', '@test/test2',
-                   '@test/test1/test11', '@test/test1/test12',
-                   '@test/test1/test11/test111']
-    for t in testfolders: do('mh.makefolder(%r)' % (t,))
-    do('mh.listsubfolders(\'@test\')')
-    do('mh.listallsubfolders(\'@test\')')
-    f = mh.openfolder('@test')
-    do('f.listsubfolders()')
-    do('f.listallsubfolders()')
-    do('f.getsequences()')
-    seqs = f.getsequences()
-    seqs['foo'] = IntSet('1-10 12-20', ' ').tolist()
-    print seqs
-    f.putsequences(seqs)
-    do('f.getsequences()')
-    for t in reversed(testfolders): do('mh.deletefolder(%r)' % (t,))
-    do('mh.getcontext()')
-    context = mh.getcontext()
-    f = mh.openfolder(context)
-    do('f.getcurrent()')
-    for seq in ('first', 'last', 'cur', '.', 'prev', 'next',
-                'first:3', 'last:3', 'cur:3', 'cur:-3',
-                'prev:3', 'next:3',
-                '1:3', '1:-3', '100:3', '100:-3', '10000:3', '10000:-3',
-                'all'):
-        try:
-            do('f.parsesequence(%r)' % (seq,))
-        except Error, msg:
-            print "Error:", msg
-        stuff = os.popen("pick %r 2>/dev/null" % (seq,)).read()
-        list = map(int, stuff.split())
-        print list, "<-- pick"
-    do('f.listmessages()')
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/mimetools.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/mimetools.py
deleted file mode 100644
index abcef31..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/mimetools.py
+++ /dev/null
@@ -1,250 +0,0 @@
-"""Various tools used by MIME-reading or MIME-writing programs."""
-
-
-import os
-import sys
-import tempfile
-from warnings import filterwarnings, catch_warnings
-with catch_warnings():
-    if sys.py3kwarning:
-        filterwarnings("ignore", ".*rfc822 has been removed", DeprecationWarning)
-    import rfc822
-
-from warnings import warnpy3k
-warnpy3k("in 3.x, mimetools has been removed in favor of the email package",
-         stacklevel=2)
-
-__all__ = ["Message","choose_boundary","encode","decode","copyliteral",
-           "copybinary"]
-
-class Message(rfc822.Message):
-    """A derived class of rfc822.Message that knows about MIME headers and
-    contains some hooks for decoding encoded and multipart messages."""
-
-    def __init__(self, fp, seekable = 1):
-        rfc822.Message.__init__(self, fp, seekable)
-        self.encodingheader = \
-                self.getheader('content-transfer-encoding')
-        self.typeheader = \
-                self.getheader('content-type')
-        self.parsetype()
-        self.parseplist()
-
-    def parsetype(self):
-        str = self.typeheader
-        if str is None:
-            str = 'text/plain'
-        if ';' in str:
-            i = str.index(';')
-            self.plisttext = str[i:]
-            str = str[:i]
-        else:
-            self.plisttext = ''
-        fields = str.split('/')
-        for i in range(len(fields)):
-            fields[i] = fields[i].strip().lower()
-        self.type = '/'.join(fields)
-        self.maintype = fields[0]
-        self.subtype = '/'.join(fields[1:])
-
-    def parseplist(self):
-        str = self.plisttext
-        self.plist = []
-        while str[:1] == ';':
-            str = str[1:]
-            if ';' in str:
-                # XXX Should parse quotes!
-                end = str.index(';')
-            else:
-                end = len(str)
-            f = str[:end]
-            if '=' in f:
-                i = f.index('=')
-                f = f[:i].strip().lower() + \
-                        '=' + f[i+1:].strip()
-            self.plist.append(f.strip())
-            str = str[end:]
-
-    def getplist(self):
-        return self.plist
-
-    def getparam(self, name):
-        name = name.lower() + '='
-        n = len(name)
-        for p in self.plist:
-            if p[:n] == name:
-                return rfc822.unquote(p[n:])
-        return None
-
-    def getparamnames(self):
-        result = []
-        for p in self.plist:
-            i = p.find('=')
-            if i >= 0:
-                result.append(p[:i].lower())
-        return result
-
-    def getencoding(self):
-        if self.encodingheader is None:
-            return '7bit'
-        return self.encodingheader.lower()
-
-    def gettype(self):
-        return self.type
-
-    def getmaintype(self):
-        return self.maintype
-
-    def getsubtype(self):
-        return self.subtype
-
-
-
-
-# Utility functions
-# -----------------
-
-try:
-    import thread
-except ImportError:
-    import dummy_thread as thread
-_counter_lock = thread.allocate_lock()
-del thread
-
-_counter = 0
-def _get_next_counter():
-    global _counter
-    _counter_lock.acquire()
-    _counter += 1
-    result = _counter
-    _counter_lock.release()
-    return result
-
-_prefix = None
-
-def choose_boundary():
-    """Return a string usable as a multipart boundary.
-
-    The string chosen is unique within a single program run, and
-    incorporates the user id (if available), process id (if available),
-    and current time.  So it's very unlikely the returned string appears
-    in message text, but there's no guarantee.
-
-    The boundary contains dots so you have to quote it in the header."""
-
-    global _prefix
-    import time
-    if _prefix is None:
-        import socket
-        try:
-            hostid = socket.gethostbyname(socket.gethostname())
-        except socket.gaierror:
-            hostid = '127.0.0.1'
-        try:
-            uid = repr(os.getuid())
-        except AttributeError:
-            uid = '1'
-        try:
-            pid = repr(os.getpid())
-        except AttributeError:
-            pid = '1'
-        _prefix = hostid + '.' + uid + '.' + pid
-    return "%s.%.3f.%d" % (_prefix, time.time(), _get_next_counter())
-
-
-# Subroutines for decoding some common content-transfer-types
-
-def decode(input, output, encoding):
-    """Decode common content-transfer-encodings (base64, quopri, uuencode)."""
-    if encoding == 'base64':
-        import base64
-        return base64.decode(input, output)
-    if encoding == 'quoted-printable':
-        import quopri
-        return quopri.decode(input, output)
-    if encoding in ('uuencode', 'x-uuencode', 'uue', 'x-uue'):
-        import uu
-        return uu.decode(input, output)
-    if encoding in ('7bit', '8bit'):
-        return output.write(input.read())
-    if encoding in decodetab:
-        pipethrough(input, decodetab[encoding], output)
-    else:
-        raise ValueError, \
-              'unknown Content-Transfer-Encoding: %s' % encoding
-
-def encode(input, output, encoding):
-    """Encode common content-transfer-encodings (base64, quopri, uuencode)."""
-    if encoding == 'base64':
-        import base64
-        return base64.encode(input, output)
-    if encoding == 'quoted-printable':
-        import quopri
-        return quopri.encode(input, output, 0)
-    if encoding in ('uuencode', 'x-uuencode', 'uue', 'x-uue'):
-        import uu
-        return uu.encode(input, output)
-    if encoding in ('7bit', '8bit'):
-        return output.write(input.read())
-    if encoding in encodetab:
-        pipethrough(input, encodetab[encoding], output)
-    else:
-        raise ValueError, \
-              'unknown Content-Transfer-Encoding: %s' % encoding
-
-# The following is no longer used for standard encodings
-
-# XXX This requires that uudecode and mmencode are in $PATH
-
-uudecode_pipe = '''(
-TEMP=/tmp/@uu.$$
-sed "s%^begin [0-7][0-7]* .*%begin 600 $TEMP%" | uudecode
-cat $TEMP
-rm $TEMP
-)'''
-
-decodetab = {
-        'uuencode':             uudecode_pipe,
-        'x-uuencode':           uudecode_pipe,
-        'uue':                  uudecode_pipe,
-        'x-uue':                uudecode_pipe,
-        'quoted-printable':     'mmencode -u -q',
-        'base64':               'mmencode -u -b',
-}
-
-encodetab = {
-        'x-uuencode':           'uuencode tempfile',
-        'uuencode':             'uuencode tempfile',
-        'x-uue':                'uuencode tempfile',
-        'uue':                  'uuencode tempfile',
-        'quoted-printable':     'mmencode -q',
-        'base64':               'mmencode -b',
-}
-
-def pipeto(input, command):
-    pipe = os.popen(command, 'w')
-    copyliteral(input, pipe)
-    pipe.close()
-
-def pipethrough(input, command, output):
-    (fd, tempname) = tempfile.mkstemp()
-    temp = os.fdopen(fd, 'w')
-    copyliteral(input, temp)
-    temp.close()
-    pipe = os.popen(command + ' <' + tempname, 'r')
-    copybinary(pipe, output)
-    pipe.close()
-    os.unlink(tempname)
-
-def copyliteral(input, output):
-    while 1:
-        line = input.readline()
-        if not line: break
-        output.write(line)
-
-def copybinary(input, output):
-    BUFSIZE = 8192
-    while 1:
-        line = input.read(BUFSIZE)
-        if not line: break
-        output.write(line)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/mimetypes.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/mimetypes.py
deleted file mode 100644
index cb5d4a5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/mimetypes.py
+++ /dev/null
@@ -1,591 +0,0 @@
-"""Guess the MIME type of a file.
-
-This module defines two useful functions:
-
-guess_type(url, strict=1) -- guess the MIME type and encoding of a URL.
-
-guess_extension(type, strict=1) -- guess the extension for a given MIME type.
-
-It also contains the following, for tuning the behavior:
-
-Data:
-
-knownfiles -- list of files to parse
-inited -- flag set when init() has been called
-suffix_map -- dictionary mapping suffixes to suffixes
-encodings_map -- dictionary mapping suffixes to encodings
-types_map -- dictionary mapping suffixes to types
-
-Functions:
-
-init([files]) -- parse a list of files, default knownfiles (on Windows, the
-  default values are taken from the registry)
-read_mime_types(file) -- parse one file, return a dictionary or None
-"""
-
-import os
-import sys
-import posixpath
-import urllib
-try:
-    import _winreg
-except ImportError:
-    _winreg = None
-
-__all__ = [
-    "guess_type","guess_extension","guess_all_extensions",
-    "add_type","read_mime_types","init"
-]
-
-knownfiles = [
-    "/etc/mime.types",
-    "/etc/httpd/mime.types",                    # Mac OS X
-    "/etc/httpd/conf/mime.types",               # Apache
-    "/etc/apache/mime.types",                   # Apache 1
-    "/etc/apache2/mime.types",                  # Apache 2
-    "/usr/local/etc/httpd/conf/mime.types",
-    "/usr/local/lib/netscape/mime.types",
-    "/usr/local/etc/httpd/conf/mime.types",     # Apache 1.2
-    "/usr/local/etc/mime.types",                # Apache 1.3
-    ]
-
-inited = False
-_db = None
-
-
-class MimeTypes:
-    """MIME-types datastore.
-
-    This datastore can handle information from mime.types-style files
-    and supports basic determination of MIME type from a filename or
-    URL, and can guess a reasonable extension given a MIME type.
-    """
-
-    def __init__(self, filenames=(), strict=True):
-        if not inited:
-            init()
-        self.encodings_map = encodings_map.copy()
-        self.suffix_map = suffix_map.copy()
-        self.types_map = ({}, {}) # dict for (non-strict, strict)
-        self.types_map_inv = ({}, {})
-        for (ext, type) in types_map.items():
-            self.add_type(type, ext, True)
-        for (ext, type) in common_types.items():
-            self.add_type(type, ext, False)
-        for name in filenames:
-            self.read(name, strict)
-
-    def add_type(self, type, ext, strict=True):
-        """Add a mapping between a type and an extension.
-
-        When the extension is already known, the new
-        type will replace the old one. When the type
-        is already known the extension will be added
-        to the list of known extensions.
-
-        If strict is true, information will be added to
-        list of standard types, else to the list of non-standard
-        types.
-        """
-        self.types_map[strict][ext] = type
-        exts = self.types_map_inv[strict].setdefault(type, [])
-        if ext not in exts:
-            exts.append(ext)
-
-    def guess_type(self, url, strict=True):
-        """Guess the type of a file based on its URL.
-
-        Return value is a tuple (type, encoding) where type is None if
-        the type can't be guessed (no or unknown suffix) or a string
-        of the form type/subtype, usable for a MIME Content-type
-        header; and encoding is None for no encoding or the name of
-        the program used to encode (e.g. compress or gzip).  The
-        mappings are table driven.  Encoding suffixes are case
-        sensitive; type suffixes are first tried case sensitive, then
-        case insensitive.
-
-        The suffixes .tgz, .taz and .tz (case sensitive!) are all
-        mapped to '.tar.gz'.  (This is table-driven too, using the
-        dictionary suffix_map.)
-
-        Optional `strict' argument when False adds a bunch of commonly found,
-        but non-standard types.
-        """
-        scheme, url = urllib.splittype(url)
-        if scheme == 'data':
-            # syntax of data URLs:
-            # dataurl   := "data:" [ mediatype ] [ ";base64" ] "," data
-            # mediatype := [ type "/" subtype ] *( ";" parameter )
-            # data      := *urlchar
-            # parameter := attribute "=" value
-            # type/subtype defaults to "text/plain"
-            comma = url.find(',')
-            if comma < 0:
-                # bad data URL
-                return None, None
-            semi = url.find(';', 0, comma)
-            if semi >= 0:
-                type = url[:semi]
-            else:
-                type = url[:comma]
-            if '=' in type or '/' not in type:
-                type = 'text/plain'
-            return type, None           # never compressed, so encoding is None
-        base, ext = posixpath.splitext(url)
-        while ext in self.suffix_map:
-            base, ext = posixpath.splitext(base + self.suffix_map[ext])
-        if ext in self.encodings_map:
-            encoding = self.encodings_map[ext]
-            base, ext = posixpath.splitext(base)
-        else:
-            encoding = None
-        types_map = self.types_map[True]
-        if ext in types_map:
-            return types_map[ext], encoding
-        elif ext.lower() in types_map:
-            return types_map[ext.lower()], encoding
-        elif strict:
-            return None, encoding
-        types_map = self.types_map[False]
-        if ext in types_map:
-            return types_map[ext], encoding
-        elif ext.lower() in types_map:
-            return types_map[ext.lower()], encoding
-        else:
-            return None, encoding
-
-    def guess_all_extensions(self, type, strict=True):
-        """Guess the extensions for a file based on its MIME type.
-
-        Return value is a list of strings giving the possible filename
-        extensions, including the leading dot ('.').  The extension is not
-        guaranteed to have been associated with any particular data stream,
-        but would be mapped to the MIME type `type' by guess_type().
-
-        Optional `strict' argument when false adds a bunch of commonly found,
-        but non-standard types.
-        """
-        type = type.lower()
-        extensions = self.types_map_inv[True].get(type, [])
-        if not strict:
-            for ext in self.types_map_inv[False].get(type, []):
-                if ext not in extensions:
-                    extensions.append(ext)
-        return extensions
-
-    def guess_extension(self, type, strict=True):
-        """Guess the extension for a file based on its MIME type.
-
-        Return value is a string giving a filename extension,
-        including the leading dot ('.').  The extension is not
-        guaranteed to have been associated with any particular data
-        stream, but would be mapped to the MIME type `type' by
-        guess_type().  If no extension can be guessed for `type', None
-        is returned.
-
-        Optional `strict' argument when false adds a bunch of commonly found,
-        but non-standard types.
-        """
-        extensions = self.guess_all_extensions(type, strict)
-        if not extensions:
-            return None
-        return extensions[0]
-
-    def read(self, filename, strict=True):
-        """
-        Read a single mime.types-format file, specified by pathname.
-
-        If strict is true, information will be added to
-        list of standard types, else to the list of non-standard
-        types.
-        """
-        with open(filename) as fp:
-            self.readfp(fp, strict)
-
-    def readfp(self, fp, strict=True):
-        """
-        Read a single mime.types-format file.
-
-        If strict is true, information will be added to
-        list of standard types, else to the list of non-standard
-        types.
-        """
-        while 1:
-            line = fp.readline()
-            if not line:
-                break
-            words = line.split()
-            for i in range(len(words)):
-                if words[i][0] == '#':
-                    del words[i:]
-                    break
-            if not words:
-                continue
-            type, suffixes = words[0], words[1:]
-            for suff in suffixes:
-                self.add_type(type, '.' + suff, strict)
-
-    def read_windows_registry(self, strict=True):
-        """
-        Load the MIME types database from Windows registry.
-
-        If strict is true, information will be added to
-        list of standard types, else to the list of non-standard
-        types.
-        """
-
-        # Windows only
-        if not _winreg:
-            return
-
-        def enum_types(mimedb):
-            i = 0
-            while True:
-                try:
-                    ctype = _winreg.EnumKey(mimedb, i)
-                except EnvironmentError:
-                    break
-                try:
-                    ctype = ctype.encode(default_encoding) # omit in 3.x!
-                except UnicodeEncodeError:
-                    pass
-                else:
-                    yield ctype
-                i += 1
-
-        default_encoding = sys.getdefaultencoding()
-        with _winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT,
-                             r'MIME\Database\Content Type') as mimedb:
-            for ctype in enum_types(mimedb):
-                try:
-                    with _winreg.OpenKey(mimedb, ctype) as key:
-                        suffix, datatype = _winreg.QueryValueEx(key,
-                                                                'Extension')
-                except EnvironmentError:
-                    continue
-                if datatype != _winreg.REG_SZ:
-                    continue
-                try:
-                    suffix = suffix.encode(default_encoding) # omit in 3.x!
-                except UnicodeEncodeError:
-                    continue
-                self.add_type(ctype, suffix, strict)
-
-
-def guess_type(url, strict=True):
-    """Guess the type of a file based on its URL.
-
-    Return value is a tuple (type, encoding) where type is None if the
-    type can't be guessed (no or unknown suffix) or a string of the
-    form type/subtype, usable for a MIME Content-type header; and
-    encoding is None for no encoding or the name of the program used
-    to encode (e.g. compress or gzip).  The mappings are table
-    driven.  Encoding suffixes are case sensitive; type suffixes are
-    first tried case sensitive, then case insensitive.
-
-    The suffixes .tgz, .taz and .tz (case sensitive!) are all mapped
-    to ".tar.gz".  (This is table-driven too, using the dictionary
-    suffix_map).
-
-    Optional `strict' argument when false adds a bunch of commonly found, but
-    non-standard types.
-    """
-    if _db is None:
-        init()
-    return _db.guess_type(url, strict)
-
-
-def guess_all_extensions(type, strict=True):
-    """Guess the extensions for a file based on its MIME type.
-
-    Return value is a list of strings giving the possible filename
-    extensions, including the leading dot ('.').  The extension is not
-    guaranteed to have been associated with any particular data
-    stream, but would be mapped to the MIME type `type' by
-    guess_type().  If no extension can be guessed for `type', None
-    is returned.
-
-    Optional `strict' argument when false adds a bunch of commonly found,
-    but non-standard types.
-    """
-    if _db is None:
-        init()
-    return _db.guess_all_extensions(type, strict)
-
-def guess_extension(type, strict=True):
-    """Guess the extension for a file based on its MIME type.
-
-    Return value is a string giving a filename extension, including the
-    leading dot ('.').  The extension is not guaranteed to have been
-    associated with any particular data stream, but would be mapped to the
-    MIME type `type' by guess_type().  If no extension can be guessed for
-    `type', None is returned.
-
-    Optional `strict' argument when false adds a bunch of commonly found,
-    but non-standard types.
-    """
-    if _db is None:
-        init()
-    return _db.guess_extension(type, strict)
-
-def add_type(type, ext, strict=True):
-    """Add a mapping between a type and an extension.
-
-    When the extension is already known, the new
-    type will replace the old one. When the type
-    is already known the extension will be added
-    to the list of known extensions.
-
-    If strict is true, information will be added to
-    list of standard types, else to the list of non-standard
-    types.
-    """
-    if _db is None:
-        init()
-    return _db.add_type(type, ext, strict)
-
-
-def init(files=None):
-    global suffix_map, types_map, encodings_map, common_types
-    global inited, _db
-    inited = True    # so that MimeTypes.__init__() doesn't call us again
-    db = MimeTypes()
-    if files is None:
-        if _winreg:
-            db.read_windows_registry()
-        files = knownfiles
-    for file in files:
-        if os.path.isfile(file):
-            db.read(file)
-    encodings_map = db.encodings_map
-    suffix_map = db.suffix_map
-    types_map = db.types_map[True]
-    common_types = db.types_map[False]
-    # Make the DB a global variable now that it is fully initialized
-    _db = db
-
-
-def read_mime_types(file):
-    try:
-        f = open(file)
-    except IOError:
-        return None
-    db = MimeTypes()
-    db.readfp(f, True)
-    return db.types_map[True]
-
-
-def _default_mime_types():
-    global suffix_map
-    global encodings_map
-    global types_map
-    global common_types
-
-    suffix_map = {
-        '.tgz': '.tar.gz',
-        '.taz': '.tar.gz',
-        '.tz': '.tar.gz',
-        '.tbz2': '.tar.bz2',
-        }
-
-    encodings_map = {
-        '.gz': 'gzip',
-        '.Z': 'compress',
-        '.bz2': 'bzip2',
-        }
-
-    # Before adding new types, make sure they are either registered with IANA,
-    # at http://www.isi.edu/in-notes/iana/assignments/media-types
-    # or extensions, i.e. using the x- prefix
-
-    # If you add to these, please keep them sorted!
-    types_map = {
-        '.a'      : 'application/octet-stream',
-        '.ai'     : 'application/postscript',
-        '.aif'    : 'audio/x-aiff',
-        '.aifc'   : 'audio/x-aiff',
-        '.aiff'   : 'audio/x-aiff',
-        '.au'     : 'audio/basic',
-        '.avi'    : 'video/x-msvideo',
-        '.bat'    : 'text/plain',
-        '.bcpio'  : 'application/x-bcpio',
-        '.bin'    : 'application/octet-stream',
-        '.bmp'    : 'image/x-ms-bmp',
-        '.c'      : 'text/plain',
-        # Duplicates :(
-        '.cdf'    : 'application/x-cdf',
-        '.cdf'    : 'application/x-netcdf',
-        '.cpio'   : 'application/x-cpio',
-        '.csh'    : 'application/x-csh',
-        '.css'    : 'text/css',
-        '.dll'    : 'application/octet-stream',
-        '.doc'    : 'application/msword',
-        '.dot'    : 'application/msword',
-        '.dvi'    : 'application/x-dvi',
-        '.eml'    : 'message/rfc822',
-        '.eps'    : 'application/postscript',
-        '.etx'    : 'text/x-setext',
-        '.exe'    : 'application/octet-stream',
-        '.gif'    : 'image/gif',
-        '.gtar'   : 'application/x-gtar',
-        '.h'      : 'text/plain',
-        '.hdf'    : 'application/x-hdf',
-        '.htm'    : 'text/html',
-        '.html'   : 'text/html',
-        '.ief'    : 'image/ief',
-        '.jpe'    : 'image/jpeg',
-        '.jpeg'   : 'image/jpeg',
-        '.jpg'    : 'image/jpeg',
-        '.js'     : 'application/x-javascript',
-        '.ksh'    : 'text/plain',
-        '.latex'  : 'application/x-latex',
-        '.m1v'    : 'video/mpeg',
-        '.man'    : 'application/x-troff-man',
-        '.me'     : 'application/x-troff-me',
-        '.mht'    : 'message/rfc822',
-        '.mhtml'  : 'message/rfc822',
-        '.mif'    : 'application/x-mif',
-        '.mov'    : 'video/quicktime',
-        '.movie'  : 'video/x-sgi-movie',
-        '.mp2'    : 'audio/mpeg',
-        '.mp3'    : 'audio/mpeg',
-        '.mp4'    : 'video/mp4',
-        '.mpa'    : 'video/mpeg',
-        '.mpe'    : 'video/mpeg',
-        '.mpeg'   : 'video/mpeg',
-        '.mpg'    : 'video/mpeg',
-        '.ms'     : 'application/x-troff-ms',
-        '.nc'     : 'application/x-netcdf',
-        '.nws'    : 'message/rfc822',
-        '.o'      : 'application/octet-stream',
-        '.obj'    : 'application/octet-stream',
-        '.oda'    : 'application/oda',
-        '.p12'    : 'application/x-pkcs12',
-        '.p7c'    : 'application/pkcs7-mime',
-        '.pbm'    : 'image/x-portable-bitmap',
-        '.pdf'    : 'application/pdf',
-        '.pfx'    : 'application/x-pkcs12',
-        '.pgm'    : 'image/x-portable-graymap',
-        '.pl'     : 'text/plain',
-        '.png'    : 'image/png',
-        '.pnm'    : 'image/x-portable-anymap',
-        '.pot'    : 'application/vnd.ms-powerpoint',
-        '.ppa'    : 'application/vnd.ms-powerpoint',
-        '.ppm'    : 'image/x-portable-pixmap',
-        '.pps'    : 'application/vnd.ms-powerpoint',
-        '.ppt'    : 'application/vnd.ms-powerpoint',
-        '.ps'     : 'application/postscript',
-        '.pwz'    : 'application/vnd.ms-powerpoint',
-        '.py'     : 'text/x-python',
-        '.pyc'    : 'application/x-python-code',
-        '.pyo'    : 'application/x-python-code',
-        '.qt'     : 'video/quicktime',
-        '.ra'     : 'audio/x-pn-realaudio',
-        '.ram'    : 'application/x-pn-realaudio',
-        '.ras'    : 'image/x-cmu-raster',
-        '.rdf'    : 'application/xml',
-        '.rgb'    : 'image/x-rgb',
-        '.roff'   : 'application/x-troff',
-        '.rtx'    : 'text/richtext',
-        '.sgm'    : 'text/x-sgml',
-        '.sgml'   : 'text/x-sgml',
-        '.sh'     : 'application/x-sh',
-        '.shar'   : 'application/x-shar',
-        '.snd'    : 'audio/basic',
-        '.so'     : 'application/octet-stream',
-        '.src'    : 'application/x-wais-source',
-        '.sv4cpio': 'application/x-sv4cpio',
-        '.sv4crc' : 'application/x-sv4crc',
-        '.swf'    : 'application/x-shockwave-flash',
-        '.t'      : 'application/x-troff',
-        '.tar'    : 'application/x-tar',
-        '.tcl'    : 'application/x-tcl',
-        '.tex'    : 'application/x-tex',
-        '.texi'   : 'application/x-texinfo',
-        '.texinfo': 'application/x-texinfo',
-        '.tif'    : 'image/tiff',
-        '.tiff'   : 'image/tiff',
-        '.tr'     : 'application/x-troff',
-        '.tsv'    : 'text/tab-separated-values',
-        '.txt'    : 'text/plain',
-        '.ustar'  : 'application/x-ustar',
-        '.vcf'    : 'text/x-vcard',
-        '.wav'    : 'audio/x-wav',
-        '.wiz'    : 'application/msword',
-        '.wsdl'   : 'application/xml',
-        '.xbm'    : 'image/x-xbitmap',
-        '.xlb'    : 'application/vnd.ms-excel',
-        # Duplicates :(
-        '.xls'    : 'application/excel',
-        '.xls'    : 'application/vnd.ms-excel',
-        '.xml'    : 'text/xml',
-        '.xpdl'   : 'application/xml',
-        '.xpm'    : 'image/x-xpixmap',
-        '.xsl'    : 'application/xml',
-        '.xwd'    : 'image/x-xwindowdump',
-        '.zip'    : 'application/zip',
-        }
-
-    # These are non-standard types, commonly found in the wild.  They will
-    # only match if strict=0 flag is given to the API methods.
-
-    # Please sort these too
-    common_types = {
-        '.jpg' : 'image/jpg',
-        '.mid' : 'audio/midi',
-        '.midi': 'audio/midi',
-        '.pct' : 'image/pict',
-        '.pic' : 'image/pict',
-        '.pict': 'image/pict',
-        '.rtf' : 'application/rtf',
-        '.xul' : 'text/xul'
-        }
-
-
-_default_mime_types()
-
-
-if __name__ == '__main__':
-    import getopt
-
-    USAGE = """\
-Usage: mimetypes.py [options] type
-
-Options:
-    --help / -h       -- print this message and exit
-    --lenient / -l    -- additionally search of some common, but non-standard
-                         types.
-    --extension / -e  -- guess extension instead of type
-
-More than one type argument may be given.
-"""
-
-    def usage(code, msg=''):
-        print USAGE
-        if msg: print msg
-        sys.exit(code)
-
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'hle',
-                                   ['help', 'lenient', 'extension'])
-    except getopt.error, msg:
-        usage(1, msg)
-
-    strict = 1
-    extension = 0
-    for opt, arg in opts:
-        if opt in ('-h', '--help'):
-            usage(0)
-        elif opt in ('-l', '--lenient'):
-            strict = 0
-        elif opt in ('-e', '--extension'):
-            extension = 1
-    for gtype in args:
-        if extension:
-            guess = guess_extension(gtype, strict)
-            if not guess: print "I don't know anything about type", gtype
-            else: print guess
-        else:
-            guess, encoding = guess_type(gtype, strict)
-            if not guess: print "I don't know anything about type", gtype
-            else: print 'type:', guess, 'encoding:', encoding
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/mimify.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/mimify.py
deleted file mode 100644
index 92225ca..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/mimify.py
+++ /dev/null
@@ -1,468 +0,0 @@
-#! /usr/bin/env python
-
-"""Mimification and unmimification of mail messages.
-
-Decode quoted-printable parts of a mail message or encode using
-quoted-printable.
-
-Usage:
-        mimify(input, output)
-        unmimify(input, output, decode_base64 = 0)
-to encode and decode respectively.  Input and output may be the name
-of a file or an open file object.  Only a readline() method is used
-on the input file, only a write() method is used on the output file.
-When using file names, the input and output file names may be the
-same.
-
-Interactive usage:
-        mimify.py -e [infile [outfile]]
-        mimify.py -d [infile [outfile]]
-to encode and decode respectively.  Infile defaults to standard
-input and outfile to standard output.
-"""
-
-# Configure
-MAXLEN = 200    # if lines longer than this, encode as quoted-printable
-CHARSET = 'ISO-8859-1'  # default charset for non-US-ASCII mail
-QUOTE = '> '            # string replies are quoted with
-# End configure
-
-import re
-
-import warnings
-warnings.warn("the mimify module is deprecated; use the email package instead",
-                DeprecationWarning, 2)
-
-__all__ = ["mimify","unmimify","mime_encode_header","mime_decode_header"]
-
-qp = re.compile('^content-transfer-encoding:\\s*quoted-printable', re.I)
-base64_re = re.compile('^content-transfer-encoding:\\s*base64', re.I)
-mp = re.compile('^content-type:.*multipart/.*boundary="?([^;"\n]*)', re.I|re.S)
-chrset = re.compile('^(content-type:.*charset=")(us-ascii|iso-8859-[0-9]+)(".*)', re.I|re.S)
-he = re.compile('^-*\n')
-mime_code = re.compile('=([0-9a-f][0-9a-f])', re.I)
-mime_head = re.compile('=\\?iso-8859-1\\?q\\?([^? \t\n]+)\\?=', re.I)
-repl = re.compile('^subject:\\s+re: ', re.I)
-
-class File:
-    """A simple fake file object that knows about limited read-ahead and
-    boundaries.  The only supported method is readline()."""
-
-    def __init__(self, file, boundary):
-        self.file = file
-        self.boundary = boundary
-        self.peek = None
-
-    def readline(self):
-        if self.peek is not None:
-            return ''
-        line = self.file.readline()
-        if not line:
-            return line
-        if self.boundary:
-            if line == self.boundary + '\n':
-                self.peek = line
-                return ''
-            if line == self.boundary + '--\n':
-                self.peek = line
-                return ''
-        return line
-
-class HeaderFile:
-    def __init__(self, file):
-        self.file = file
-        self.peek = None
-
-    def readline(self):
-        if self.peek is not None:
-            line = self.peek
-            self.peek = None
-        else:
-            line = self.file.readline()
-        if not line:
-            return line
-        if he.match(line):
-            return line
-        while 1:
-            self.peek = self.file.readline()
-            if len(self.peek) == 0 or \
-               (self.peek[0] != ' ' and self.peek[0] != '\t'):
-                return line
-            line = line + self.peek
-            self.peek = None
-
-def mime_decode(line):
-    """Decode a single line of quoted-printable text to 8bit."""
-    newline = ''
-    pos = 0
-    while 1:
-        res = mime_code.search(line, pos)
-        if res is None:
-            break
-        newline = newline + line[pos:res.start(0)] + \
-                  chr(int(res.group(1), 16))
-        pos = res.end(0)
-    return newline + line[pos:]
-
-def mime_decode_header(line):
-    """Decode a header line to 8bit."""
-    newline = ''
-    pos = 0
-    while 1:
-        res = mime_head.search(line, pos)
-        if res is None:
-            break
-        match = res.group(1)
-        # convert underscores to spaces (before =XX conversion!)
-        match = ' '.join(match.split('_'))
-        newline = newline + line[pos:res.start(0)] + mime_decode(match)
-        pos = res.end(0)
-    return newline + line[pos:]
-
-def unmimify_part(ifile, ofile, decode_base64 = 0):
-    """Convert a quoted-printable part of a MIME mail message to 8bit."""
-    multipart = None
-    quoted_printable = 0
-    is_base64 = 0
-    is_repl = 0
-    if ifile.boundary and ifile.boundary[:2] == QUOTE:
-        prefix = QUOTE
-    else:
-        prefix = ''
-
-    # read header
-    hfile = HeaderFile(ifile)
-    while 1:
-        line = hfile.readline()
-        if not line:
-            return
-        if prefix and line[:len(prefix)] == prefix:
-            line = line[len(prefix):]
-            pref = prefix
-        else:
-            pref = ''
-        line = mime_decode_header(line)
-        if qp.match(line):
-            quoted_printable = 1
-            continue        # skip this header
-        if decode_base64 and base64_re.match(line):
-            is_base64 = 1
-            continue
-        ofile.write(pref + line)
-        if not prefix and repl.match(line):
-            # we're dealing with a reply message
-            is_repl = 1
-        mp_res = mp.match(line)
-        if mp_res:
-            multipart = '--' + mp_res.group(1)
-        if he.match(line):
-            break
-    if is_repl and (quoted_printable or multipart):
-        is_repl = 0
-
-    # read body
-    while 1:
-        line = ifile.readline()
-        if not line:
-            return
-        line = re.sub(mime_head, '\\1', line)
-        if prefix and line[:len(prefix)] == prefix:
-            line = line[len(prefix):]
-            pref = prefix
-        else:
-            pref = ''
-##              if is_repl and len(line) >= 4 and line[:4] == QUOTE+'--' and line[-3:] != '--\n':
-##                      multipart = line[:-1]
-        while multipart:
-            if line == multipart + '--\n':
-                ofile.write(pref + line)
-                multipart = None
-                line = None
-                break
-            if line == multipart + '\n':
-                ofile.write(pref + line)
-                nifile = File(ifile, multipart)
-                unmimify_part(nifile, ofile, decode_base64)
-                line = nifile.peek
-                if not line:
-                    # premature end of file
-                    break
-                continue
-            # not a boundary between parts
-            break
-        if line and quoted_printable:
-            while line[-2:] == '=\n':
-                line = line[:-2]
-                newline = ifile.readline()
-                if newline[:len(QUOTE)] == QUOTE:
-                    newline = newline[len(QUOTE):]
-                line = line + newline
-            line = mime_decode(line)
-        if line and is_base64 and not pref:
-            import base64
-            line = base64.decodestring(line)
-        if line:
-            ofile.write(pref + line)
-
-def unmimify(infile, outfile, decode_base64 = 0):
-    """Convert quoted-printable parts of a MIME mail message to 8bit."""
-    if type(infile) == type(''):
-        ifile = open(infile)
-        if type(outfile) == type('') and infile == outfile:
-            import os
-            d, f = os.path.split(infile)
-            os.rename(infile, os.path.join(d, ',' + f))
-    else:
-        ifile = infile
-    if type(outfile) == type(''):
-        ofile = open(outfile, 'w')
-    else:
-        ofile = outfile
-    nifile = File(ifile, None)
-    unmimify_part(nifile, ofile, decode_base64)
-    ofile.flush()
-
-mime_char = re.compile('[=\177-\377]') # quote these chars in body
-mime_header_char = re.compile('[=?\177-\377]') # quote these in header
-
-def mime_encode(line, header):
-    """Code a single line as quoted-printable.
-    If header is set, quote some extra characters."""
-    if header:
-        reg = mime_header_char
-    else:
-        reg = mime_char
-    newline = ''
-    pos = 0
-    if len(line) >= 5 and line[:5] == 'From ':
-        # quote 'From ' at the start of a line for stupid mailers
-        newline = ('=%02x' % ord('F')).upper()
-        pos = 1
-    while 1:
-        res = reg.search(line, pos)
-        if res is None:
-            break
-        newline = newline + line[pos:res.start(0)] + \
-                  ('=%02x' % ord(res.group(0))).upper()
-        pos = res.end(0)
-    line = newline + line[pos:]
-
-    newline = ''
-    while len(line) >= 75:
-        i = 73
-        while line[i] == '=' or line[i-1] == '=':
-            i = i - 1
-        i = i + 1
-        newline = newline + line[:i] + '=\n'
-        line = line[i:]
-    return newline + line
-
-mime_header = re.compile('([ \t(]|^)([-a-zA-Z0-9_+]*[\177-\377][-a-zA-Z0-9_+\177-\377]*)(?=[ \t)]|\n)')
-
-def mime_encode_header(line):
-    """Code a single header line as quoted-printable."""
-    newline = ''
-    pos = 0
-    while 1:
-        res = mime_header.search(line, pos)
-        if res is None:
-            break
-        newline = '%s%s%s=?%s?Q?%s?=' % \
-                  (newline, line[pos:res.start(0)], res.group(1),
-                   CHARSET, mime_encode(res.group(2), 1))
-        pos = res.end(0)
-    return newline + line[pos:]
-
-mv = re.compile('^mime-version:', re.I)
-cte = re.compile('^content-transfer-encoding:', re.I)
-iso_char = re.compile('[\177-\377]')
-
-def mimify_part(ifile, ofile, is_mime):
-    """Convert an 8bit part of a MIME mail message to quoted-printable."""
-    has_cte = is_qp = is_base64 = 0
-    multipart = None
-    must_quote_body = must_quote_header = has_iso_chars = 0
-
-    header = []
-    header_end = ''
-    message = []
-    message_end = ''
-    # read header
-    hfile = HeaderFile(ifile)
-    while 1:
-        line = hfile.readline()
-        if not line:
-            break
-        if not must_quote_header and iso_char.search(line):
-            must_quote_header = 1
-        if mv.match(line):
-            is_mime = 1
-        if cte.match(line):
-            has_cte = 1
-            if qp.match(line):
-                is_qp = 1
-            elif base64_re.match(line):
-                is_base64 = 1
-        mp_res = mp.match(line)
-        if mp_res:
-            multipart = '--' + mp_res.group(1)
-        if he.match(line):
-            header_end = line
-            break
-        header.append(line)
-
-    # read body
-    while 1:
-        line = ifile.readline()
-        if not line:
-            break
-        if multipart:
-            if line == multipart + '--\n':
-                message_end = line
-                break
-            if line == multipart + '\n':
-                message_end = line
-                break
-        if is_base64:
-            message.append(line)
-            continue
-        if is_qp:
-            while line[-2:] == '=\n':
-                line = line[:-2]
-                newline = ifile.readline()
-                if newline[:len(QUOTE)] == QUOTE:
-                    newline = newline[len(QUOTE):]
-                line = line + newline
-            line = mime_decode(line)
-        message.append(line)
-        if not has_iso_chars:
-            if iso_char.search(line):
-                has_iso_chars = must_quote_body = 1
-        if not must_quote_body:
-            if len(line) > MAXLEN:
-                must_quote_body = 1
-
-    # convert and output header and body
-    for line in header:
-        if must_quote_header:
-            line = mime_encode_header(line)
-        chrset_res = chrset.match(line)
-        if chrset_res:
-            if has_iso_chars:
-                # change us-ascii into iso-8859-1
-                if chrset_res.group(2).lower() == 'us-ascii':
-                    line = '%s%s%s' % (chrset_res.group(1),
-                                       CHARSET,
-                                       chrset_res.group(3))
-            else:
-                # change iso-8859-* into us-ascii
-                line = '%sus-ascii%s' % chrset_res.group(1, 3)
-        if has_cte and cte.match(line):
-            line = 'Content-Transfer-Encoding: '
-            if is_base64:
-                line = line + 'base64\n'
-            elif must_quote_body:
-                line = line + 'quoted-printable\n'
-            else:
-                line = line + '7bit\n'
-        ofile.write(line)
-    if (must_quote_header or must_quote_body) and not is_mime:
-        ofile.write('Mime-Version: 1.0\n')
-        ofile.write('Content-Type: text/plain; ')
-        if has_iso_chars:
-            ofile.write('charset="%s"\n' % CHARSET)
-        else:
-            ofile.write('charset="us-ascii"\n')
-    if must_quote_body and not has_cte:
-        ofile.write('Content-Transfer-Encoding: quoted-printable\n')
-    ofile.write(header_end)
-
-    for line in message:
-        if must_quote_body:
-            line = mime_encode(line, 0)
-        ofile.write(line)
-    ofile.write(message_end)
-
-    line = message_end
-    while multipart:
-        if line == multipart + '--\n':
-            # read bit after the end of the last part
-            while 1:
-                line = ifile.readline()
-                if not line:
-                    return
-                if must_quote_body:
-                    line = mime_encode(line, 0)
-                ofile.write(line)
-        if line == multipart + '\n':
-            nifile = File(ifile, multipart)
-            mimify_part(nifile, ofile, 1)
-            line = nifile.peek
-            if not line:
-                # premature end of file
-                break
-            ofile.write(line)
-            continue
-        # unexpectedly no multipart separator--copy rest of file
-        while 1:
-            line = ifile.readline()
-            if not line:
-                return
-            if must_quote_body:
-                line = mime_encode(line, 0)
-            ofile.write(line)
-
-def mimify(infile, outfile):
-    """Convert 8bit parts of a MIME mail message to quoted-printable."""
-    if type(infile) == type(''):
-        ifile = open(infile)
-        if type(outfile) == type('') and infile == outfile:
-            import os
-            d, f = os.path.split(infile)
-            os.rename(infile, os.path.join(d, ',' + f))
-    else:
-        ifile = infile
-    if type(outfile) == type(''):
-        ofile = open(outfile, 'w')
-    else:
-        ofile = outfile
-    nifile = File(ifile, None)
-    mimify_part(nifile, ofile, 0)
-    ofile.flush()
-
-import sys
-if __name__ == '__main__' or (len(sys.argv) > 0 and sys.argv[0] == 'mimify'):
-    import getopt
-    usage = 'Usage: mimify [-l len] -[ed] [infile [outfile]]'
-
-    decode_base64 = 0
-    opts, args = getopt.getopt(sys.argv[1:], 'l:edb')
-    if len(args) not in (0, 1, 2):
-        print usage
-        sys.exit(1)
-    if (('-e', '') in opts) == (('-d', '') in opts) or \
-       ((('-b', '') in opts) and (('-d', '') not in opts)):
-        print usage
-        sys.exit(1)
-    for o, a in opts:
-        if o == '-e':
-            encode = mimify
-        elif o == '-d':
-            encode = unmimify
-        elif o == '-l':
-            try:
-                MAXLEN = int(a)
-            except (ValueError, OverflowError):
-                print usage
-                sys.exit(1)
-        elif o == '-b':
-            decode_base64 = 1
-    if len(args) == 0:
-        encode_args = (sys.stdin, sys.stdout)
-    elif len(args) == 1:
-        encode_args = (args[0], sys.stdout)
-    else:
-        encode_args = (args[0], args[1])
-    if decode_base64:
-        encode_args = encode_args + (decode_base64,)
-    encode(*encode_args)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/modulefinder.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/modulefinder.py
deleted file mode 100644
index 5da8912..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/modulefinder.py
+++ /dev/null
@@ -1,671 +0,0 @@
-"""Find modules used by a script, using introspection."""
-# This module should be kept compatible with Python 2.2, see PEP 291.
-
-from __future__ import generators
-import dis
-import imp
-import marshal
-import os
-import sys
-import types
-import struct
-
-if hasattr(sys.__stdout__, "newlines"):
-    READ_MODE = "U"  # universal line endings
-else:
-    # remain compatible with Python  < 2.3
-    READ_MODE = "r"
-
-LOAD_CONST = chr(dis.opname.index('LOAD_CONST'))
-IMPORT_NAME = chr(dis.opname.index('IMPORT_NAME'))
-STORE_NAME = chr(dis.opname.index('STORE_NAME'))
-STORE_GLOBAL = chr(dis.opname.index('STORE_GLOBAL'))
-STORE_OPS = [STORE_NAME, STORE_GLOBAL]
-HAVE_ARGUMENT = chr(dis.HAVE_ARGUMENT)
-
-# Modulefinder does a good job at simulating Python's, but it can not
-# handle __path__ modifications packages make at runtime.  Therefore there
-# is a mechanism whereby you can register extra paths in this map for a
-# package, and it will be honored.
-
-# Note this is a mapping is lists of paths.
-packagePathMap = {}
-
-# A Public interface
-def AddPackagePath(packagename, path):
-    paths = packagePathMap.get(packagename, [])
-    paths.append(path)
-    packagePathMap[packagename] = paths
-
-replacePackageMap = {}
-
-# This ReplacePackage mechanism allows modulefinder to work around the
-# way the _xmlplus package injects itself under the name "xml" into
-# sys.modules at runtime by calling ReplacePackage("_xmlplus", "xml")
-# before running ModuleFinder.
-
-def ReplacePackage(oldname, newname):
-    replacePackageMap[oldname] = newname
-
-
-class Module:
-
-    def __init__(self, name, file=None, path=None):
-        self.__name__ = name
-        self.__file__ = file
-        self.__path__ = path
-        self.__code__ = None
-        # The set of global names that are assigned to in the module.
-        # This includes those names imported through starimports of
-        # Python modules.
-        self.globalnames = {}
-        # The set of starimports this module did that could not be
-        # resolved, ie. a starimport from a non-Python module.
-        self.starimports = {}
-
-    def __repr__(self):
-        s = "Module(%r" % (self.__name__,)
-        if self.__file__ is not None:
-            s = s + ", %r" % (self.__file__,)
-        if self.__path__ is not None:
-            s = s + ", %r" % (self.__path__,)
-        s = s + ")"
-        return s
-
-class ModuleFinder:
-
-    def __init__(self, path=None, debug=0, excludes=[], replace_paths=[]):
-        if path is None:
-            path = sys.path
-        self.path = path
-        self.modules = {}
-        self.badmodules = {}
-        self.debug = debug
-        self.indent = 0
-        self.excludes = excludes
-        self.replace_paths = replace_paths
-        self.processed_paths = []   # Used in debugging only
-
-    def msg(self, level, str, *args):
-        if level <= self.debug:
-            for i in range(self.indent):
-                print "   ",
-            print str,
-            for arg in args:
-                print repr(arg),
-            print
-
-    def msgin(self, *args):
-        level = args[0]
-        if level <= self.debug:
-            self.indent = self.indent + 1
-            self.msg(*args)
-
-    def msgout(self, *args):
-        level = args[0]
-        if level <= self.debug:
-            self.indent = self.indent - 1
-            self.msg(*args)
-
-    def run_script(self, pathname):
-        self.msg(2, "run_script", pathname)
-        fp = open(pathname, READ_MODE)
-        stuff = ("", "r", imp.PY_SOURCE)
-        self.load_module('__main__', fp, pathname, stuff)
-
-    def load_file(self, pathname):
-        dir, name = os.path.split(pathname)
-        name, ext = os.path.splitext(name)
-        fp = open(pathname, READ_MODE)
-        stuff = (ext, "r", imp.PY_SOURCE)
-        self.load_module(name, fp, pathname, stuff)
-
-    def import_hook(self, name, caller=None, fromlist=None, level=-1):
-        self.msg(3, "import_hook", name, caller, fromlist, level)
-        parent = self.determine_parent(caller, level=level)
-        q, tail = self.find_head_package(parent, name)
-        m = self.load_tail(q, tail)
-        if not fromlist:
-            return q
-        if m.__path__:
-            self.ensure_fromlist(m, fromlist)
-        return None
-
-    def determine_parent(self, caller, level=-1):
-        self.msgin(4, "determine_parent", caller, level)
-        if not caller or level == 0:
-            self.msgout(4, "determine_parent -> None")
-            return None
-        pname = caller.__name__
-        if level >= 1: # relative import
-            if caller.__path__:
-                level -= 1
-            if level == 0:
-                parent = self.modules[pname]
-                assert parent is caller
-                self.msgout(4, "determine_parent ->", parent)
-                return parent
-            if pname.count(".") < level:
-                raise ImportError, "relative importpath too deep"
-            pname = ".".join(pname.split(".")[:-level])
-            parent = self.modules[pname]
-            self.msgout(4, "determine_parent ->", parent)
-            return parent
-        if caller.__path__:
-            parent = self.modules[pname]
-            assert caller is parent
-            self.msgout(4, "determine_parent ->", parent)
-            return parent
-        if '.' in pname:
-            i = pname.rfind('.')
-            pname = pname[:i]
-            parent = self.modules[pname]
-            assert parent.__name__ == pname
-            self.msgout(4, "determine_parent ->", parent)
-            return parent
-        self.msgout(4, "determine_parent -> None")
-        return None
-
-    def find_head_package(self, parent, name):
-        self.msgin(4, "find_head_package", parent, name)
-        if '.' in name:
-            i = name.find('.')
-            head = name[:i]
-            tail = name[i+1:]
-        else:
-            head = name
-            tail = ""
-        if parent:
-            qname = "%s.%s" % (parent.__name__, head)
-        else:
-            qname = head
-        q = self.import_module(head, qname, parent)
-        if q:
-            self.msgout(4, "find_head_package ->", (q, tail))
-            return q, tail
-        if parent:
-            qname = head
-            parent = None
-            q = self.import_module(head, qname, parent)
-            if q:
-                self.msgout(4, "find_head_package ->", (q, tail))
-                return q, tail
-        self.msgout(4, "raise ImportError: No module named", qname)
-        raise ImportError, "No module named " + qname
-
-    def load_tail(self, q, tail):
-        self.msgin(4, "load_tail", q, tail)
-        m = q
-        while tail:
-            i = tail.find('.')
-            if i < 0: i = len(tail)
-            head, tail = tail[:i], tail[i+1:]
-            mname = "%s.%s" % (m.__name__, head)
-            m = self.import_module(head, mname, m)
-            if not m:
-                self.msgout(4, "raise ImportError: No module named", mname)
-                raise ImportError, "No module named " + mname
-        self.msgout(4, "load_tail ->", m)
-        return m
-
-    def ensure_fromlist(self, m, fromlist, recursive=0):
-        self.msg(4, "ensure_fromlist", m, fromlist, recursive)
-        for sub in fromlist:
-            if sub == "*":
-                if not recursive:
-                    all = self.find_all_submodules(m)
-                    if all:
-                        self.ensure_fromlist(m, all, 1)
-            elif not hasattr(m, sub):
-                subname = "%s.%s" % (m.__name__, sub)
-                submod = self.import_module(sub, subname, m)
-                if not submod:
-                    raise ImportError, "No module named " + subname
-
-    def find_all_submodules(self, m):
-        if not m.__path__:
-            return
-        modules = {}
-        # 'suffixes' used to be a list hardcoded to [".py", ".pyc", ".pyo"].
-        # But we must also collect Python extension modules - although
-        # we cannot separate normal dlls from Python extensions.
-        suffixes = []
-        for triple in imp.get_suffixes():
-            suffixes.append(triple[0])
-        for dir in m.__path__:
-            try:
-                names = os.listdir(dir)
-            except os.error:
-                self.msg(2, "can't list directory", dir)
-                continue
-            for name in names:
-                mod = None
-                for suff in suffixes:
-                    n = len(suff)
-                    if name[-n:] == suff:
-                        mod = name[:-n]
-                        break
-                if mod and mod != "__init__":
-                    modules[mod] = mod
-        return modules.keys()
-
-    def import_module(self, partname, fqname, parent):
-        self.msgin(3, "import_module", partname, fqname, parent)
-        try:
-            m = self.modules[fqname]
-        except KeyError:
-            pass
-        else:
-            self.msgout(3, "import_module ->", m)
-            return m
-        if fqname in self.badmodules:
-            self.msgout(3, "import_module -> None")
-            return None
-        if parent and parent.__path__ is None:
-            self.msgout(3, "import_module -> None")
-            return None
-        try:
-            fp, pathname, stuff = self.find_module(partname,
-                                                   parent and parent.__path__, parent)
-        except ImportError:
-            self.msgout(3, "import_module ->", None)
-            return None
-        try:
-            m = self.load_module(fqname, fp, pathname, stuff)
-        finally:
-            if fp: fp.close()
-        if parent:
-            setattr(parent, partname, m)
-        self.msgout(3, "import_module ->", m)
-        return m
-
-    def load_module(self, fqname, fp, pathname, file_info):
-        suffix, mode, type = file_info
-        self.msgin(2, "load_module", fqname, fp and "fp", pathname)
-        if type == imp.PKG_DIRECTORY:
-            m = self.load_package(fqname, pathname)
-            self.msgout(2, "load_module ->", m)
-            return m
-        if type == imp.PY_SOURCE:
-            co = compile(fp.read()+'\n', pathname, 'exec')
-        elif type == imp.PY_COMPILED:
-            if fp.read(4) != imp.get_magic():
-                self.msgout(2, "raise ImportError: Bad magic number", pathname)
-                raise ImportError, "Bad magic number in %s" % pathname
-            fp.read(4)
-            co = marshal.load(fp)
-        else:
-            co = None
-        m = self.add_module(fqname)
-        m.__file__ = pathname
-        if co:
-            if self.replace_paths:
-                co = self.replace_paths_in_code(co)
-            m.__code__ = co
-            self.scan_code(co, m)
-        self.msgout(2, "load_module ->", m)
-        return m
-
-    def _add_badmodule(self, name, caller):
-        if name not in self.badmodules:
-            self.badmodules[name] = {}
-        if caller:
-            self.badmodules[name][caller.__name__] = 1
-        else:
-            self.badmodules[name]["-"] = 1
-
-    def _safe_import_hook(self, name, caller, fromlist, level=-1):
-        # wrapper for self.import_hook() that won't raise ImportError
-        if name in self.badmodules:
-            self._add_badmodule(name, caller)
-            return
-        try:
-            self.import_hook(name, caller, level=level)
-        except ImportError, msg:
-            self.msg(2, "ImportError:", str(msg))
-            self._add_badmodule(name, caller)
-        else:
-            if fromlist:
-                for sub in fromlist:
-                    if sub in self.badmodules:
-                        self._add_badmodule(sub, caller)
-                        continue
-                    try:
-                        self.import_hook(name, caller, [sub], level=level)
-                    except ImportError, msg:
-                        self.msg(2, "ImportError:", str(msg))
-                        fullname = name + "." + sub
-                        self._add_badmodule(fullname, caller)
-
-    def scan_opcodes(self, co,
-                     unpack = struct.unpack):
-        # Scan the code, and yield 'interesting' opcode combinations
-        # Version for Python 2.4 and older
-        code = co.co_code
-        names = co.co_names
-        consts = co.co_consts
-        while code:
-            c = code[0]
-            if c in STORE_OPS:
-                oparg, = unpack('<H', code[1:3])
-                yield "store", (names[oparg],)
-                code = code[3:]
-                continue
-            if c == LOAD_CONST and code[3] == IMPORT_NAME:
-                oparg_1, oparg_2 = unpack('<xHxH', code[:6])
-                yield "import", (consts[oparg_1], names[oparg_2])
-                code = code[6:]
-                continue
-            if c >= HAVE_ARGUMENT:
-                code = code[3:]
-            else:
-                code = code[1:]
-
-    def scan_opcodes_25(self, co,
-                     unpack = struct.unpack):
-        # Scan the code, and yield 'interesting' opcode combinations
-        # Python 2.5 version (has absolute and relative imports)
-        code = co.co_code
-        names = co.co_names
-        consts = co.co_consts
-        LOAD_LOAD_AND_IMPORT = LOAD_CONST + LOAD_CONST + IMPORT_NAME
-        while code:
-            c = code[0]
-            if c in STORE_OPS:
-                oparg, = unpack('<H', code[1:3])
-                yield "store", (names[oparg],)
-                code = code[3:]
-                continue
-            if code[:9:3] == LOAD_LOAD_AND_IMPORT:
-                oparg_1, oparg_2, oparg_3 = unpack('<xHxHxH', code[:9])
-                level = consts[oparg_1]
-                if level == -1: # normal import
-                    yield "import", (consts[oparg_2], names[oparg_3])
-                elif level == 0: # absolute import
-                    yield "absolute_import", (consts[oparg_2], names[oparg_3])
-                else: # relative import
-                    yield "relative_import", (level, consts[oparg_2], names[oparg_3])
-                code = code[9:]
-                continue
-            if c >= HAVE_ARGUMENT:
-                code = code[3:]
-            else:
-                code = code[1:]
-
-    def scan_code(self, co, m):
-        code = co.co_code
-        if sys.version_info >= (2, 5):
-            scanner = self.scan_opcodes_25
-        else:
-            scanner = self.scan_opcodes
-        for what, args in scanner(co):
-            if what == "store":
-                name, = args
-                m.globalnames[name] = 1
-            elif what in ("import", "absolute_import"):
-                fromlist, name = args
-                have_star = 0
-                if fromlist is not None:
-                    if "*" in fromlist:
-                        have_star = 1
-                    fromlist = [f for f in fromlist if f != "*"]
-                if what == "absolute_import": level = 0
-                else: level = -1
-                self._safe_import_hook(name, m, fromlist, level=level)
-                if have_star:
-                    # We've encountered an "import *". If it is a Python module,
-                    # the code has already been parsed and we can suck out the
-                    # global names.
-                    mm = None
-                    if m.__path__:
-                        # At this point we don't know whether 'name' is a
-                        # submodule of 'm' or a global module. Let's just try
-                        # the full name first.
-                        mm = self.modules.get(m.__name__ + "." + name)
-                    if mm is None:
-                        mm = self.modules.get(name)
-                    if mm is not None:
-                        m.globalnames.update(mm.globalnames)
-                        m.starimports.update(mm.starimports)
-                        if mm.__code__ is None:
-                            m.starimports[name] = 1
-                    else:
-                        m.starimports[name] = 1
-            elif what == "relative_import":
-                level, fromlist, name = args
-                if name:
-                    self._safe_import_hook(name, m, fromlist, level=level)
-                else:
-                    parent = self.determine_parent(m, level=level)
-                    self._safe_import_hook(parent.__name__, None, fromlist, level=0)
-            else:
-                # We don't expect anything else from the generator.
-                raise RuntimeError(what)
-
-        for c in co.co_consts:
-            if isinstance(c, type(co)):
-                self.scan_code(c, m)
-
-    def load_package(self, fqname, pathname):
-        self.msgin(2, "load_package", fqname, pathname)
-        newname = replacePackageMap.get(fqname)
-        if newname:
-            fqname = newname
-        m = self.add_module(fqname)
-        m.__file__ = pathname
-        m.__path__ = [pathname]
-
-        # As per comment at top of file, simulate runtime __path__ additions.
-        m.__path__ = m.__path__ + packagePathMap.get(fqname, [])
-
-        fp, buf, stuff = self.find_module("__init__", m.__path__)
-        self.load_module(fqname, fp, buf, stuff)
-        self.msgout(2, "load_package ->", m)
-        return m
-
-    def add_module(self, fqname):
-        if fqname in self.modules:
-            return self.modules[fqname]
-        self.modules[fqname] = m = Module(fqname)
-        return m
-
-    def find_module(self, name, path, parent=None):
-        if parent is not None:
-            # assert path is not None
-            fullname = parent.__name__+'.'+name
-        else:
-            fullname = name
-        if fullname in self.excludes:
-            self.msgout(3, "find_module -> Excluded", fullname)
-            raise ImportError, name
-
-        if path is None:
-            if name in sys.builtin_module_names:
-                return (None, None, ("", "", imp.C_BUILTIN))
-
-            path = self.path
-        return imp.find_module(name, path)
-
-    def report(self):
-        """Print a report to stdout, listing the found modules with their
-        paths, as well as modules that are missing, or seem to be missing.
-        """
-        print
-        print "  %-25s %s" % ("Name", "File")
-        print "  %-25s %s" % ("----", "----")
-        # Print modules found
-        keys = self.modules.keys()
-        keys.sort()
-        for key in keys:
-            m = self.modules[key]
-            if m.__path__:
-                print "P",
-            else:
-                print "m",
-            print "%-25s" % key, m.__file__ or ""
-
-        # Print missing modules
-        missing, maybe = self.any_missing_maybe()
-        if missing:
-            print
-            print "Missing modules:"
-            for name in missing:
-                mods = self.badmodules[name].keys()
-                mods.sort()
-                print "?", name, "imported from", ', '.join(mods)
-        # Print modules that may be missing, but then again, maybe not...
-        if maybe:
-            print
-            print "Submodules thay appear to be missing, but could also be",
-            print "global names in the parent package:"
-            for name in maybe:
-                mods = self.badmodules[name].keys()
-                mods.sort()
-                print "?", name, "imported from", ', '.join(mods)
-
-    def any_missing(self):
-        """Return a list of modules that appear to be missing. Use
-        any_missing_maybe() if you want to know which modules are
-        certain to be missing, and which *may* be missing.
-        """
-        missing, maybe = self.any_missing_maybe()
-        return missing + maybe
-
-    def any_missing_maybe(self):
-        """Return two lists, one with modules that are certainly missing
-        and one with modules that *may* be missing. The latter names could
-        either be submodules *or* just global names in the package.
-
-        The reason it can't always be determined is that it's impossible to
-        tell which names are imported when "from module import *" is done
-        with an extension module, short of actually importing it.
-        """
-        missing = []
-        maybe = []
-        for name in self.badmodules:
-            if name in self.excludes:
-                continue
-            i = name.rfind(".")
-            if i < 0:
-                missing.append(name)
-                continue
-            subname = name[i+1:]
-            pkgname = name[:i]
-            pkg = self.modules.get(pkgname)
-            if pkg is not None:
-                if pkgname in self.badmodules[name]:
-                    # The package tried to import this module itself and
-                    # failed. It's definitely missing.
-                    missing.append(name)
-                elif subname in pkg.globalnames:
-                    # It's a global in the package: definitely not missing.
-                    pass
-                elif pkg.starimports:
-                    # It could be missing, but the package did an "import *"
-                    # from a non-Python module, so we simply can't be sure.
-                    maybe.append(name)
-                else:
-                    # It's not a global in the package, the package didn't
-                    # do funny star imports, it's very likely to be missing.
-                    # The symbol could be inserted into the package from the
-                    # outside, but since that's not good style we simply list
-                    # it missing.
-                    missing.append(name)
-            else:
-                missing.append(name)
-        missing.sort()
-        maybe.sort()
-        return missing, maybe
-
-    def replace_paths_in_code(self, co):
-        new_filename = original_filename = os.path.normpath(co.co_filename)
-        for f, r in self.replace_paths:
-            if original_filename.startswith(f):
-                new_filename = r + original_filename[len(f):]
-                break
-
-        if self.debug and original_filename not in self.processed_paths:
-            if new_filename != original_filename:
-                self.msgout(2, "co_filename %r changed to %r" \
-                                    % (original_filename,new_filename,))
-            else:
-                self.msgout(2, "co_filename %r remains unchanged" \
-                                    % (original_filename,))
-            self.processed_paths.append(original_filename)
-
-        consts = list(co.co_consts)
-        for i in range(len(consts)):
-            if isinstance(consts[i], type(co)):
-                consts[i] = self.replace_paths_in_code(consts[i])
-
-        return types.CodeType(co.co_argcount, co.co_nlocals, co.co_stacksize,
-                         co.co_flags, co.co_code, tuple(consts), co.co_names,
-                         co.co_varnames, new_filename, co.co_name,
-                         co.co_firstlineno, co.co_lnotab,
-                         co.co_freevars, co.co_cellvars)
-
-
-def test():
-    # Parse command line
-    import getopt
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "dmp:qx:")
-    except getopt.error, msg:
-        print msg
-        return
-
-    # Process options
-    debug = 1
-    domods = 0
-    addpath = []
-    exclude = []
-    for o, a in opts:
-        if o == '-d':
-            debug = debug + 1
-        if o == '-m':
-            domods = 1
-        if o == '-p':
-            addpath = addpath + a.split(os.pathsep)
-        if o == '-q':
-            debug = 0
-        if o == '-x':
-            exclude.append(a)
-
-    # Provide default arguments
-    if not args:
-        script = "hello.py"
-    else:
-        script = args[0]
-
-    # Set the path based on sys.path and the script directory
-    path = sys.path[:]
-    path[0] = os.path.dirname(script)
-    path = addpath + path
-    if debug > 1:
-        print "path:"
-        for item in path:
-            print "   ", repr(item)
-
-    # Create the module finder and turn its crank
-    mf = ModuleFinder(path, debug, exclude)
-    for arg in args[1:]:
-        if arg == '-m':
-            domods = 1
-            continue
-        if domods:
-            if arg[-2:] == '.*':
-                mf.import_hook(arg[:-2], None, ["*"])
-            else:
-                mf.import_hook(arg)
-        else:
-            mf.load_file(arg)
-    mf.run_script(script)
-    mf.report()
-    return mf  # for -i debugging
-
-
-if __name__ == '__main__':
-    try:
-        mf = test()
-    except KeyboardInterrupt:
-        print "\n[interrupt]"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/multifile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/multifile.py
deleted file mode 100644
index bad0214..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/multifile.py
+++ /dev/null
@@ -1,162 +0,0 @@
-"""A readline()-style interface to the parts of a multipart message.
-
-The MultiFile class makes each part of a multipart message "feel" like
-an ordinary file, as long as you use fp.readline().  Allows recursive
-use, for nested multipart messages.  Probably best used together
-with module mimetools.
-
-Suggested use:
-
-real_fp = open(...)
-fp = MultiFile(real_fp)
-
-"read some lines from fp"
-fp.push(separator)
-while 1:
-        "read lines from fp until it returns an empty string" (A)
-        if not fp.next(): break
-fp.pop()
-"read remaining lines from fp until it returns an empty string"
-
-The latter sequence may be used recursively at (A).
-It is also allowed to use multiple push()...pop() sequences.
-
-If seekable is given as 0, the class code will not do the bookkeeping
-it normally attempts in order to make seeks relative to the beginning of the
-current file part.  This may be useful when using MultiFile with a non-
-seekable stream object.
-"""
-from warnings import warn
-warn("the multifile module has been deprecated since Python 2.5",
-        DeprecationWarning, stacklevel=2)
-del warn
-
-__all__ = ["MultiFile","Error"]
-
-class Error(Exception):
-    pass
-
-class MultiFile:
-
-    seekable = 0
-
-    def __init__(self, fp, seekable=1):
-        self.fp = fp
-        self.stack = []
-        self.level = 0
-        self.last = 0
-        if seekable:
-            self.seekable = 1
-            self.start = self.fp.tell()
-            self.posstack = []
-
-    def tell(self):
-        if self.level > 0:
-            return self.lastpos
-        return self.fp.tell() - self.start
-
-    def seek(self, pos, whence=0):
-        here = self.tell()
-        if whence:
-            if whence == 1:
-                pos = pos + here
-            elif whence == 2:
-                if self.level > 0:
-                    pos = pos + self.lastpos
-                else:
-                    raise Error, "can't use whence=2 yet"
-        if not 0 <= pos <= here or \
-                        self.level > 0 and pos > self.lastpos:
-            raise Error, 'bad MultiFile.seek() call'
-        self.fp.seek(pos + self.start)
-        self.level = 0
-        self.last = 0
-
-    def readline(self):
-        if self.level > 0:
-            return ''
-        line = self.fp.readline()
-        # Real EOF?
-        if not line:
-            self.level = len(self.stack)
-            self.last = (self.level > 0)
-            if self.last:
-                raise Error, 'sudden EOF in MultiFile.readline()'
-            return ''
-        assert self.level == 0
-        # Fast check to see if this is just data
-        if self.is_data(line):
-            return line
-        else:
-            # Ignore trailing whitespace on marker lines
-            marker = line.rstrip()
-        # No?  OK, try to match a boundary.
-        # Return the line (unstripped) if we don't.
-        for i, sep in enumerate(reversed(self.stack)):
-            if marker == self.section_divider(sep):
-                self.last = 0
-                break
-            elif marker == self.end_marker(sep):
-                self.last = 1
-                break
-        else:
-            return line
-        # We only get here if we see a section divider or EOM line
-        if self.seekable:
-            self.lastpos = self.tell() - len(line)
-        self.level = i+1
-        if self.level > 1:
-            raise Error,'Missing endmarker in MultiFile.readline()'
-        return ''
-
-    def readlines(self):
-        list = []
-        while 1:
-            line = self.readline()
-            if not line: break
-            list.append(line)
-        return list
-
-    def read(self): # Note: no size argument -- read until EOF only!
-        return ''.join(self.readlines())
-
-    def next(self):
-        while self.readline(): pass
-        if self.level > 1 or self.last:
-            return 0
-        self.level = 0
-        self.last = 0
-        if self.seekable:
-            self.start = self.fp.tell()
-        return 1
-
-    def push(self, sep):
-        if self.level > 0:
-            raise Error, 'bad MultiFile.push() call'
-        self.stack.append(sep)
-        if self.seekable:
-            self.posstack.append(self.start)
-            self.start = self.fp.tell()
-
-    def pop(self):
-        if self.stack == []:
-            raise Error, 'bad MultiFile.pop() call'
-        if self.level <= 1:
-            self.last = 0
-        else:
-            abslastpos = self.lastpos + self.start
-        self.level = max(0, self.level - 1)
-        self.stack.pop()
-        if self.seekable:
-            self.start = self.posstack.pop()
-            if self.level > 0:
-                self.lastpos = abslastpos - self.start
-
-    def is_data(self, line):
-        return line[:2] != '--'
-
-    def section_divider(self, str):
-        return "--" + str
-
-    def end_marker(self, str):
-        return "--" + str + "--"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/mutex.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/mutex.py
deleted file mode 100644
index 57aa9aa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/mutex.py
+++ /dev/null
@@ -1,55 +0,0 @@
-"""Mutual exclusion -- for use with module sched
-
-A mutex has two pieces of state -- a 'locked' bit and a queue.
-When the mutex is not locked, the queue is empty.
-Otherwise, the queue contains 0 or more (function, argument) pairs
-representing functions (or methods) waiting to acquire the lock.
-When the mutex is unlocked while the queue is not empty,
-the first queue entry is removed and its function(argument) pair called,
-implying it now has the lock.
-
-Of course, no multi-threading is implied -- hence the funny interface
-for lock, where a function is called once the lock is aquired.
-"""
-from warnings import warnpy3k
-warnpy3k("the mutex module has been removed in Python 3.0", stacklevel=2)
-del warnpy3k
-
-from collections import deque
-
-class mutex:
-    def __init__(self):
-        """Create a new mutex -- initially unlocked."""
-        self.locked = False
-        self.queue = deque()
-
-    def test(self):
-        """Test the locked bit of the mutex."""
-        return self.locked
-
-    def testandset(self):
-        """Atomic test-and-set -- grab the lock if it is not set,
-        return True if it succeeded."""
-        if not self.locked:
-            self.locked = True
-            return True
-        else:
-            return False
-
-    def lock(self, function, argument):
-        """Lock a mutex, call the function with supplied argument
-        when it is acquired.  If the mutex is already locked, place
-        function and argument in the queue."""
-        if self.testandset():
-            function(argument)
-        else:
-            self.queue.append((function, argument))
-
-    def unlock(self):
-        """Unlock a mutex.  If the queue is not empty, call the next
-        function with its argument."""
-        if self.queue:
-            function, argument = self.queue.popleft()
-            function(argument)
-        else:
-            self.locked = False
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/netrc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/netrc.py
deleted file mode 100644
index 822365a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/netrc.py
+++ /dev/null
@@ -1,122 +0,0 @@
-"""An object-oriented interface to .netrc files."""
-
-# Module and documentation by Eric S. Raymond, 21 Dec 1998
-
-import os, shlex
-
-__all__ = ["netrc", "NetrcParseError"]
-
-
-class NetrcParseError(Exception):
-    """Exception raised on syntax errors in the .netrc file."""
-    def __init__(self, msg, filename=None, lineno=None):
-        self.filename = filename
-        self.lineno = lineno
-        self.msg = msg
-        Exception.__init__(self, msg)
-
-    def __str__(self):
-        return "%s (%s, line %s)" % (self.msg, self.filename, self.lineno)
-
-
-class netrc:
-    def __init__(self, file=None):
-        if file is None:
-            try:
-                file = os.path.join(os.environ['HOME'], ".netrc")
-            except KeyError:
-                raise IOError("Could not find .netrc: $HOME is not set")
-        self.hosts = {}
-        self.macros = {}
-        with open(file) as fp:
-            self._parse(file, fp)
-
-    def _parse(self, file, fp):
-        lexer = shlex.shlex(fp)
-        lexer.wordchars += r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""
-        lexer.commenters = lexer.commenters.replace('#', '')
-        while 1:
-            # Look for a machine, default, or macdef top-level keyword
-            toplevel = tt = lexer.get_token()
-            if not tt:
-                break
-            elif tt[0] == '#':
-                # seek to beginning of comment, in case reading the token put
-                # us on a new line, and then skip the rest of the line.
-                pos = len(tt) + 1
-                lexer.instream.seek(-pos, 1)
-                lexer.instream.readline()
-                continue
-            elif tt == 'machine':
-                entryname = lexer.get_token()
-            elif tt == 'default':
-                entryname = 'default'
-            elif tt == 'macdef':                # Just skip to end of macdefs
-                entryname = lexer.get_token()
-                self.macros[entryname] = []
-                lexer.whitespace = ' \t'
-                while 1:
-                    line = lexer.instream.readline()
-                    if not line or line == '\012':
-                        lexer.whitespace = ' \t\r\n'
-                        break
-                    self.macros[entryname].append(line)
-                continue
-            else:
-                raise NetrcParseError(
-                    "bad toplevel token %r" % tt, file, lexer.lineno)
-
-            # We're looking at start of an entry for a named machine or default.
-            login = ''
-            account = password = None
-            self.hosts[entryname] = {}
-            while 1:
-                tt = lexer.get_token()
-                if (tt.startswith('#') or
-                    tt in {'', 'machine', 'default', 'macdef'}):
-                    if password:
-                        self.hosts[entryname] = (login, account, password)
-                        lexer.push_token(tt)
-                        break
-                    else:
-                        raise NetrcParseError(
-                            "malformed %s entry %s terminated by %s"
-                            % (toplevel, entryname, repr(tt)),
-                            file, lexer.lineno)
-                elif tt == 'login' or tt == 'user':
-                    login = lexer.get_token()
-                elif tt == 'account':
-                    account = lexer.get_token()
-                elif tt == 'password':
-                    password = lexer.get_token()
-                else:
-                    raise NetrcParseError("bad follower token %r" % tt,
-                                          file, lexer.lineno)
-
-    def authenticators(self, host):
-        """Return a (user, account, password) tuple for given host."""
-        if host in self.hosts:
-            return self.hosts[host]
-        elif 'default' in self.hosts:
-            return self.hosts['default']
-        else:
-            return None
-
-    def __repr__(self):
-        """Dump the class data in the format of a .netrc file."""
-        rep = ""
-        for host in self.hosts.keys():
-            attrs = self.hosts[host]
-            rep = rep + "machine "+ host + "\n\tlogin " + repr(attrs[0]) + "\n"
-            if attrs[1]:
-                rep = rep + "account " + repr(attrs[1])
-            rep = rep + "\tpassword " + repr(attrs[2]) + "\n"
-        for macro in self.macros.keys():
-            rep = rep + "macdef " + macro + "\n"
-            for line in self.macros[macro]:
-                rep = rep + line
-            rep = rep + "\n"
-        return rep
-
-if __name__ == '__main__':
-    print netrc()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/new.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/new.py
deleted file mode 100644
index 82bd0cc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/new.py
+++ /dev/null
@@ -1,17 +0,0 @@
-"""Create new objects of various types.  Deprecated.
-
-This module is no longer required except for backward compatibility.
-Objects of most types can now be created by calling the type object.
-"""
-from warnings import warnpy3k
-warnpy3k("The 'new' module has been removed in Python 3.0; use the 'types' "
-            "module instead.", stacklevel=2)
-del warnpy3k
-
-from types import ClassType as classobj
-from types import FunctionType as function
-from types import InstanceType as instance
-from types import MethodType as instancemethod
-from types import ModuleType as module
-
-from types import CodeType as code
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/nntplib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/nntplib.py
deleted file mode 100644
index 1329279..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/nntplib.py
+++ /dev/null
@@ -1,627 +0,0 @@
-"""An NNTP client class based on RFC 977: Network News Transfer Protocol.
-
-Example:
-
->>> from nntplib import NNTP
->>> s = NNTP('news')
->>> resp, count, first, last, name = s.group('comp.lang.python')
->>> print 'Group', name, 'has', count, 'articles, range', first, 'to', last
-Group comp.lang.python has 51 articles, range 5770 to 5821
->>> resp, subs = s.xhdr('subject', first + '-' + last)
->>> resp = s.quit()
->>>
-
-Here 'resp' is the server response line.
-Error responses are turned into exceptions.
-
-To post an article from a file:
->>> f = open(filename, 'r') # file containing article, including header
->>> resp = s.post(f)
->>>
-
-For descriptions of all methods, read the comments in the code below.
-Note that all arguments and return values representing article numbers
-are strings, not numbers, since they are rarely used for calculations.
-"""
-
-# RFC 977 by Brian Kantor and Phil Lapsley.
-# xover, xgtitle, xpath, date methods by Kevan Heydon
-
-
-# Imports
-import re
-import socket
-
-__all__ = ["NNTP","NNTPReplyError","NNTPTemporaryError",
-           "NNTPPermanentError","NNTPProtocolError","NNTPDataError",
-           "error_reply","error_temp","error_perm","error_proto",
-           "error_data",]
-
-# Exceptions raised when an error or invalid response is received
-class NNTPError(Exception):
-    """Base class for all nntplib exceptions"""
-    def __init__(self, *args):
-        Exception.__init__(self, *args)
-        try:
-            self.response = args[0]
-        except IndexError:
-            self.response = 'No response given'
-
-class NNTPReplyError(NNTPError):
-    """Unexpected [123]xx reply"""
-    pass
-
-class NNTPTemporaryError(NNTPError):
-    """4xx errors"""
-    pass
-
-class NNTPPermanentError(NNTPError):
-    """5xx errors"""
-    pass
-
-class NNTPProtocolError(NNTPError):
-    """Response does not begin with [1-5]"""
-    pass
-
-class NNTPDataError(NNTPError):
-    """Error in response data"""
-    pass
-
-# for backwards compatibility
-error_reply = NNTPReplyError
-error_temp = NNTPTemporaryError
-error_perm = NNTPPermanentError
-error_proto = NNTPProtocolError
-error_data = NNTPDataError
-
-
-
-# Standard port used by NNTP servers
-NNTP_PORT = 119
-
-
-# Response numbers that are followed by additional text (e.g. article)
-LONGRESP = ['100', '215', '220', '221', '222', '224', '230', '231', '282']
-
-
-# Line terminators (we always output CRLF, but accept any of CRLF, CR, LF)
-CRLF = '\r\n'
-
-
-
-# The class itself
-class NNTP:
-    def __init__(self, host, port=NNTP_PORT, user=None, password=None,
-                 readermode=None, usenetrc=True):
-        """Initialize an instance.  Arguments:
-        - host: hostname to connect to
-        - port: port to connect to (default the standard NNTP port)
-        - user: username to authenticate with
-        - password: password to use with username
-        - readermode: if true, send 'mode reader' command after
-                      connecting.
-
-        readermode is sometimes necessary if you are connecting to an
-        NNTP server on the local machine and intend to call
-        reader-specific commands, such as `group'.  If you get
-        unexpected NNTPPermanentErrors, you might need to set
-        readermode.
-        """
-        self.host = host
-        self.port = port
-        self.sock = socket.create_connection((host, port))
-        self.file = self.sock.makefile('rb')
-        self.debugging = 0
-        self.welcome = self.getresp()
-
-        # 'mode reader' is sometimes necessary to enable 'reader' mode.
-        # However, the order in which 'mode reader' and 'authinfo' need to
-        # arrive differs between some NNTP servers. Try to send
-        # 'mode reader', and if it fails with an authorization failed
-        # error, try again after sending authinfo.
-        readermode_afterauth = 0
-        if readermode:
-            try:
-                self.welcome = self.shortcmd('mode reader')
-            except NNTPPermanentError:
-                # error 500, probably 'not implemented'
-                pass
-            except NNTPTemporaryError, e:
-                if user and e.response[:3] == '480':
-                    # Need authorization before 'mode reader'
-                    readermode_afterauth = 1
-                else:
-                    raise
-        # If no login/password was specified, try to get them from ~/.netrc
-        # Presume that if .netc has an entry, NNRP authentication is required.
-        try:
-            if usenetrc and not user:
-                import netrc
-                credentials = netrc.netrc()
-                auth = credentials.authenticators(host)
-                if auth:
-                    user = auth[0]
-                    password = auth[2]
-        except IOError:
-            pass
-        # Perform NNRP authentication if needed.
-        if user:
-            resp = self.shortcmd('authinfo user '+user)
-            if resp[:3] == '381':
-                if not password:
-                    raise NNTPReplyError(resp)
-                else:
-                    resp = self.shortcmd(
-                            'authinfo pass '+password)
-                    if resp[:3] != '281':
-                        raise NNTPPermanentError(resp)
-            if readermode_afterauth:
-                try:
-                    self.welcome = self.shortcmd('mode reader')
-                except NNTPPermanentError:
-                    # error 500, probably 'not implemented'
-                    pass
-
-
-    # Get the welcome message from the server
-    # (this is read and squirreled away by __init__()).
-    # If the response code is 200, posting is allowed;
-    # if it 201, posting is not allowed
-
-    def getwelcome(self):
-        """Get the welcome message from the server
-        (this is read and squirreled away by __init__()).
-        If the response code is 200, posting is allowed;
-        if it 201, posting is not allowed."""
-
-        if self.debugging: print '*welcome*', repr(self.welcome)
-        return self.welcome
-
-    def set_debuglevel(self, level):
-        """Set the debugging level.  Argument 'level' means:
-        0: no debugging output (default)
-        1: print commands and responses but not body text etc.
-        2: also print raw lines read and sent before stripping CR/LF"""
-
-        self.debugging = level
-    debug = set_debuglevel
-
-    def putline(self, line):
-        """Internal: send one line to the server, appending CRLF."""
-        line = line + CRLF
-        if self.debugging > 1: print '*put*', repr(line)
-        self.sock.sendall(line)
-
-    def putcmd(self, line):
-        """Internal: send one command to the server (through putline())."""
-        if self.debugging: print '*cmd*', repr(line)
-        self.putline(line)
-
-    def getline(self):
-        """Internal: return one line from the server, stripping CRLF.
-        Raise EOFError if the connection is closed."""
-        line = self.file.readline()
-        if self.debugging > 1:
-            print '*get*', repr(line)
-        if not line: raise EOFError
-        if line[-2:] == CRLF: line = line[:-2]
-        elif line[-1:] in CRLF: line = line[:-1]
-        return line
-
-    def getresp(self):
-        """Internal: get a response from the server.
-        Raise various errors if the response indicates an error."""
-        resp = self.getline()
-        if self.debugging: print '*resp*', repr(resp)
-        c = resp[:1]
-        if c == '4':
-            raise NNTPTemporaryError(resp)
-        if c == '5':
-            raise NNTPPermanentError(resp)
-        if c not in '123':
-            raise NNTPProtocolError(resp)
-        return resp
-
-    def getlongresp(self, file=None):
-        """Internal: get a response plus following text from the server.
-        Raise various errors if the response indicates an error."""
-
-        openedFile = None
-        try:
-            # If a string was passed then open a file with that name
-            if isinstance(file, str):
-                openedFile = file = open(file, "w")
-
-            resp = self.getresp()
-            if resp[:3] not in LONGRESP:
-                raise NNTPReplyError(resp)
-            list = []
-            while 1:
-                line = self.getline()
-                if line == '.':
-                    break
-                if line[:2] == '..':
-                    line = line[1:]
-                if file:
-                    file.write(line + "\n")
-                else:
-                    list.append(line)
-        finally:
-            # If this method created the file, then it must close it
-            if openedFile:
-                openedFile.close()
-
-        return resp, list
-
-    def shortcmd(self, line):
-        """Internal: send a command and get the response."""
-        self.putcmd(line)
-        return self.getresp()
-
-    def longcmd(self, line, file=None):
-        """Internal: send a command and get the response plus following text."""
-        self.putcmd(line)
-        return self.getlongresp(file)
-
-    def newgroups(self, date, time, file=None):
-        """Process a NEWGROUPS command.  Arguments:
-        - date: string 'yymmdd' indicating the date
-        - time: string 'hhmmss' indicating the time
-        Return:
-        - resp: server response if successful
-        - list: list of newsgroup names"""
-
-        return self.longcmd('NEWGROUPS ' + date + ' ' + time, file)
-
-    def newnews(self, group, date, time, file=None):
-        """Process a NEWNEWS command.  Arguments:
-        - group: group name or '*'
-        - date: string 'yymmdd' indicating the date
-        - time: string 'hhmmss' indicating the time
-        Return:
-        - resp: server response if successful
-        - list: list of message ids"""
-
-        cmd = 'NEWNEWS ' + group + ' ' + date + ' ' + time
-        return self.longcmd(cmd, file)
-
-    def list(self, file=None):
-        """Process a LIST command.  Return:
-        - resp: server response if successful
-        - list: list of (group, last, first, flag) (strings)"""
-
-        resp, list = self.longcmd('LIST', file)
-        for i in range(len(list)):
-            # Parse lines into "group last first flag"
-            list[i] = tuple(list[i].split())
-        return resp, list
-
-    def description(self, group):
-
-        """Get a description for a single group.  If more than one
-        group matches ('group' is a pattern), return the first.  If no
-        group matches, return an empty string.
-
-        This elides the response code from the server, since it can
-        only be '215' or '285' (for xgtitle) anyway.  If the response
-        code is needed, use the 'descriptions' method.
-
-        NOTE: This neither checks for a wildcard in 'group' nor does
-        it check whether the group actually exists."""
-
-        resp, lines = self.descriptions(group)
-        if len(lines) == 0:
-            return ""
-        else:
-            return lines[0][1]
-
-    def descriptions(self, group_pattern):
-        """Get descriptions for a range of groups."""
-        line_pat = re.compile("^(?P<group>[^ \t]+)[ \t]+(.*)$")
-        # Try the more std (acc. to RFC2980) LIST NEWSGROUPS first
-        resp, raw_lines = self.longcmd('LIST NEWSGROUPS ' + group_pattern)
-        if resp[:3] != "215":
-            # Now the deprecated XGTITLE.  This either raises an error
-            # or succeeds with the same output structure as LIST
-            # NEWSGROUPS.
-            resp, raw_lines = self.longcmd('XGTITLE ' + group_pattern)
-        lines = []
-        for raw_line in raw_lines:
-            match = line_pat.search(raw_line.strip())
-            if match:
-                lines.append(match.group(1, 2))
-        return resp, lines
-
-    def group(self, name):
-        """Process a GROUP command.  Argument:
-        - group: the group name
-        Returns:
-        - resp: server response if successful
-        - count: number of articles (string)
-        - first: first article number (string)
-        - last: last article number (string)
-        - name: the group name"""
-
-        resp = self.shortcmd('GROUP ' + name)
-        if resp[:3] != '211':
-            raise NNTPReplyError(resp)
-        words = resp.split()
-        count = first = last = 0
-        n = len(words)
-        if n > 1:
-            count = words[1]
-            if n > 2:
-                first = words[2]
-                if n > 3:
-                    last = words[3]
-                    if n > 4:
-                        name = words[4].lower()
-        return resp, count, first, last, name
-
-    def help(self, file=None):
-        """Process a HELP command.  Returns:
-        - resp: server response if successful
-        - list: list of strings"""
-
-        return self.longcmd('HELP',file)
-
-    def statparse(self, resp):
-        """Internal: parse the response of a STAT, NEXT or LAST command."""
-        if resp[:2] != '22':
-            raise NNTPReplyError(resp)
-        words = resp.split()
-        nr = 0
-        id = ''
-        n = len(words)
-        if n > 1:
-            nr = words[1]
-            if n > 2:
-                id = words[2]
-        return resp, nr, id
-
-    def statcmd(self, line):
-        """Internal: process a STAT, NEXT or LAST command."""
-        resp = self.shortcmd(line)
-        return self.statparse(resp)
-
-    def stat(self, id):
-        """Process a STAT command.  Argument:
-        - id: article number or message id
-        Returns:
-        - resp: server response if successful
-        - nr:   the article number
-        - id:   the message id"""
-
-        return self.statcmd('STAT ' + id)
-
-    def next(self):
-        """Process a NEXT command.  No arguments.  Return as for STAT."""
-        return self.statcmd('NEXT')
-
-    def last(self):
-        """Process a LAST command.  No arguments.  Return as for STAT."""
-        return self.statcmd('LAST')
-
-    def artcmd(self, line, file=None):
-        """Internal: process a HEAD, BODY or ARTICLE command."""
-        resp, list = self.longcmd(line, file)
-        resp, nr, id = self.statparse(resp)
-        return resp, nr, id, list
-
-    def head(self, id):
-        """Process a HEAD command.  Argument:
-        - id: article number or message id
-        Returns:
-        - resp: server response if successful
-        - nr: article number
-        - id: message id
-        - list: the lines of the article's header"""
-
-        return self.artcmd('HEAD ' + id)
-
-    def body(self, id, file=None):
-        """Process a BODY command.  Argument:
-        - id: article number or message id
-        - file: Filename string or file object to store the article in
-        Returns:
-        - resp: server response if successful
-        - nr: article number
-        - id: message id
-        - list: the lines of the article's body or an empty list
-                if file was used"""
-
-        return self.artcmd('BODY ' + id, file)
-
-    def article(self, id):
-        """Process an ARTICLE command.  Argument:
-        - id: article number or message id
-        Returns:
-        - resp: server response if successful
-        - nr: article number
-        - id: message id
-        - list: the lines of the article"""
-
-        return self.artcmd('ARTICLE ' + id)
-
-    def slave(self):
-        """Process a SLAVE command.  Returns:
-        - resp: server response if successful"""
-
-        return self.shortcmd('SLAVE')
-
-    def xhdr(self, hdr, str, file=None):
-        """Process an XHDR command (optional server extension).  Arguments:
-        - hdr: the header type (e.g. 'subject')
-        - str: an article nr, a message id, or a range nr1-nr2
-        Returns:
-        - resp: server response if successful
-        - list: list of (nr, value) strings"""
-
-        pat = re.compile('^([0-9]+) ?(.*)\n?')
-        resp, lines = self.longcmd('XHDR ' + hdr + ' ' + str, file)
-        for i in range(len(lines)):
-            line = lines[i]
-            m = pat.match(line)
-            if m:
-                lines[i] = m.group(1, 2)
-        return resp, lines
-
-    def xover(self, start, end, file=None):
-        """Process an XOVER command (optional server extension) Arguments:
-        - start: start of range
-        - end: end of range
-        Returns:
-        - resp: server response if successful
-        - list: list of (art-nr, subject, poster, date,
-                         id, references, size, lines)"""
-
-        resp, lines = self.longcmd('XOVER ' + start + '-' + end, file)
-        xover_lines = []
-        for line in lines:
-            elem = line.split("\t")
-            try:
-                xover_lines.append((elem[0],
-                                    elem[1],
-                                    elem[2],
-                                    elem[3],
-                                    elem[4],
-                                    elem[5].split(),
-                                    elem[6],
-                                    elem[7]))
-            except IndexError:
-                raise NNTPDataError(line)
-        return resp,xover_lines
-
-    def xgtitle(self, group, file=None):
-        """Process an XGTITLE command (optional server extension) Arguments:
-        - group: group name wildcard (i.e. news.*)
-        Returns:
-        - resp: server response if successful
-        - list: list of (name,title) strings"""
-
-        line_pat = re.compile("^([^ \t]+)[ \t]+(.*)$")
-        resp, raw_lines = self.longcmd('XGTITLE ' + group, file)
-        lines = []
-        for raw_line in raw_lines:
-            match = line_pat.search(raw_line.strip())
-            if match:
-                lines.append(match.group(1, 2))
-        return resp, lines
-
-    def xpath(self,id):
-        """Process an XPATH command (optional server extension) Arguments:
-        - id: Message id of article
-        Returns:
-        resp: server response if successful
-        path: directory path to article"""
-
-        resp = self.shortcmd("XPATH " + id)
-        if resp[:3] != '223':
-            raise NNTPReplyError(resp)
-        try:
-            [resp_num, path] = resp.split()
-        except ValueError:
-            raise NNTPReplyError(resp)
-        else:
-            return resp, path
-
-    def date (self):
-        """Process the DATE command. Arguments:
-        None
-        Returns:
-        resp: server response if successful
-        date: Date suitable for newnews/newgroups commands etc.
-        time: Time suitable for newnews/newgroups commands etc."""
-
-        resp = self.shortcmd("DATE")
-        if resp[:3] != '111':
-            raise NNTPReplyError(resp)
-        elem = resp.split()
-        if len(elem) != 2:
-            raise NNTPDataError(resp)
-        date = elem[1][2:8]
-        time = elem[1][-6:]
-        if len(date) != 6 or len(time) != 6:
-            raise NNTPDataError(resp)
-        return resp, date, time
-
-
-    def post(self, f):
-        """Process a POST command.  Arguments:
-        - f: file containing the article
-        Returns:
-        - resp: server response if successful"""
-
-        resp = self.shortcmd('POST')
-        # Raises error_??? if posting is not allowed
-        if resp[0] != '3':
-            raise NNTPReplyError(resp)
-        while 1:
-            line = f.readline()
-            if not line:
-                break
-            if line[-1] == '\n':
-                line = line[:-1]
-            if line[:1] == '.':
-                line = '.' + line
-            self.putline(line)
-        self.putline('.')
-        return self.getresp()
-
-    def ihave(self, id, f):
-        """Process an IHAVE command.  Arguments:
-        - id: message-id of the article
-        - f:  file containing the article
-        Returns:
-        - resp: server response if successful
-        Note that if the server refuses the article an exception is raised."""
-
-        resp = self.shortcmd('IHAVE ' + id)
-        # Raises error_??? if the server already has it
-        if resp[0] != '3':
-            raise NNTPReplyError(resp)
-        while 1:
-            line = f.readline()
-            if not line:
-                break
-            if line[-1] == '\n':
-                line = line[:-1]
-            if line[:1] == '.':
-                line = '.' + line
-            self.putline(line)
-        self.putline('.')
-        return self.getresp()
-
-    def quit(self):
-        """Process a QUIT command and close the socket.  Returns:
-        - resp: server response if successful"""
-
-        resp = self.shortcmd('QUIT')
-        self.file.close()
-        self.sock.close()
-        del self.file, self.sock
-        return resp
-
-
-# Test retrieval when run as a script.
-# Assumption: if there's a local news server, it's called 'news'.
-# Assumption: if user queries a remote news server, it's named
-# in the environment variable NNTPSERVER (used by slrn and kin)
-# and we want readermode off.
-if __name__ == '__main__':
-    import os
-    newshost = 'news' and os.environ["NNTPSERVER"]
-    if newshost.find('.') == -1:
-        mode = 'readermode'
-    else:
-        mode = None
-    s = NNTP(newshost, readermode=mode)
-    resp, count, first, last, name = s.group('comp.lang.python')
-    print resp
-    print 'Group', name, 'has', count, 'articles, range', first, 'to', last
-    resp, subs = s.xhdr('subject', first + '-' + last)
-    print resp
-    for item in subs:
-        print "%7s %s" % item
-    resp = s.quit()
-    print resp
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/ntpath.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/ntpath.py
deleted file mode 100644
index 3ac0b6d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/ntpath.py
+++ /dev/null
@@ -1,523 +0,0 @@
-# Module 'ntpath' -- common operations on WinNT/Win95 pathnames
-"""Common pathname manipulations, WindowsNT/95 version.
-
-Instead of importing this module directly, import os and refer to this
-module as os.path.
-"""
-
-import os
-import sys
-import stat
-import genericpath
-import warnings
-
-from genericpath import *
-
-__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","relpath"]
-
-# strings representing various path-related bits and pieces
-curdir = '.'
-pardir = '..'
-extsep = '.'
-sep = '\\'
-pathsep = ';'
-altsep = '/'
-defpath = '.;C:\\bin'
-if 'ce' in sys.builtin_module_names:
-    defpath = '\\Windows'
-elif 'os2' in sys.builtin_module_names:
-    # OS/2 w/ VACPP
-    altsep = '/'
-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 slashes into backslashes."""
-    return s.replace("/", "\\").lower()
-
-
-# Return whether a path is absolute.
-# Trivial in Posix, harder on the Mac or MS-DOS.
-# For DOS it is absolute if it starts with a slash or backslash (current
-# volume), or if a pathname after the volume letter and colon / UNC resource
-# starts with a slash or backslash.
-
-def isabs(s):
-    """Test whether a path is absolute"""
-    s = splitdrive(s)[1]
-    return s != '' and s[:1] in '/\\'
-
-
-# Join two (or more) paths.
-
-def join(a, *p):
-    """Join two or more pathname components, inserting "\\" as needed.
-    If any component is an absolute path, all previous path components
-    will be discarded."""
-    path = a
-    for b in p:
-        b_wins = 0  # set to 1 iff b makes path irrelevant
-        if path == "":
-            b_wins = 1
-
-        elif isabs(b):
-            # This probably wipes out path so far.  However, it's more
-            # complicated if path begins with a drive letter:
-            #     1. join('c:', '/a') == 'c:/a'
-            #     2. join('c:/', '/a') == 'c:/a'
-            # But
-            #     3. join('c:/a', '/b') == '/b'
-            #     4. join('c:', 'd:/') = 'd:/'
-            #     5. join('c:/', 'd:/') = 'd:/'
-            if path[1:2] != ":" or b[1:2] == ":":
-                # Path doesn't start with a drive letter, or cases 4 and 5.
-                b_wins = 1
-
-            # Else path has a drive letter, and b doesn't but is absolute.
-            elif len(path) > 3 or (len(path) == 3 and
-                                   path[-1] not in "/\\"):
-                # case 3
-                b_wins = 1
-
-        if b_wins:
-            path = b
-        else:
-            # Join, and ensure there's a separator.
-            assert len(path) > 0
-            if path[-1] in "/\\":
-                if b and b[0] in "/\\":
-                    path += b[1:]
-                else:
-                    path += b
-            elif path[-1] == ":":
-                path += b
-            elif b:
-                if b[0] in "/\\":
-                    path += b
-                else:
-                    path += "\\" + b
-            else:
-                # path is not empty and does not end with a backslash,
-                # but b is empty; since, e.g., split('a/') produces
-                # ('a', ''), it's best if join() adds a backslash in
-                # this case.
-                path += '\\'
-
-    return path
-
-
-# Split a path in a drive specification (a drive letter followed by a
-# colon) and the path specification.
-# It is always true that drivespec + pathspec == p
-def splitdrive(p):
-    """Split a pathname into drive and path specifiers. Returns a 2-tuple
-"(drive,path)";  either part may be empty"""
-    if p[1:2] == ':':
-        return p[0:2], p[2:]
-    return '', p
-
-
-# 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 == '//' or firstTwo == '\\\\':
-        # 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
-
-
-# Split a path in head (everything up to the last '/') and tail (the
-# rest).  After the trailing '/' is stripped, the invariant
-# join(head, tail) == p holds.
-# The resulting head won't end in '/' unless it is the root.
-
-def split(p):
-    """Split a pathname.
-
-    Return tuple (head, tail) where tail is everything after the final slash.
-    Either part may be empty."""
-
-    d, p = splitdrive(p)
-    # set i to index beyond p's last slash
-    i = len(p)
-    while i and p[i-1] not in '/\\':
-        i = i - 1
-    head, tail = p[:i], p[i:]  # now tail has no slashes
-    # remove trailing slashes from head, unless it's all slashes
-    head2 = head
-    while head2 and head2[-1] in '/\\':
-        head2 = head2[:-1]
-    head = head2 or head
-    return d + head, tail
-
-
-# Split a path in root and extension.
-# The extension is everything starting at the last dot in the last
-# pathname component; the root is everything before that.
-# It is always true that root + ext == p.
-
-def splitext(p):
-    return genericpath._splitext(p, sep, altsep, extsep)
-splitext.__doc__ = genericpath._splitext.__doc__
-
-
-# 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]
-
-# Is a path a symbolic link?
-# This will always return false on systems where posix.lstat doesn't exist.
-
-def islink(path):
-    """Test for symbolic link.
-    On WindowsNT/95 and OS/2 always returns false
-    """
-    return False
-
-# alias exists to lexists
-lexists = exists
-
-# 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 '/\\'
-
-
-# Directory tree walk.
-# For each directory under top (including top itself, but excluding
-# '.' and '..'), func(arg, dirname, filenames) is called, where
-# dirname is the name of the directory and filenames is the list
-# of files (and subdirectories etc.) in the directory.
-# The func may modify the filenames list, to implement a filter,
-# or to impose a different order of visiting.
-
-def walk(top, func, arg):
-    """Directory tree walk with callback function.
-
-    For each directory in the directory tree rooted at top (including top
-    itself, but excluding '.' and '..'), call func(arg, dirname, fnames).
-    dirname is the name of the directory, and fnames a list of the names of
-    the files and subdirectories in dirname (excluding '.' and '..').  func
-    may modify the fnames list in-place (e.g. via del or slice assignment),
-    and walk will only recurse into the subdirectories whose names remain in
-    fnames; this can be used to implement a filter, or to impose a specific
-    order of visiting.  No semantics are defined for, or required of, arg,
-    beyond that arg is always passed to func.  It can be used, e.g., to pass
-    a filename pattern, or a mutable object designed to accumulate
-    statistics.  Passing None for arg is common."""
-    warnings.warnpy3k("In 3.x, os.path.walk is removed in favor of os.walk.",
-                      stacklevel=2)
-    try:
-        names = os.listdir(top)
-    except os.error:
-        return
-    func(arg, top, names)
-    for name in names:
-        name = join(top, name)
-        if isdir(name):
-            walk(name, func, arg)
-
-
-# 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."""
-    if path[:1] != '~':
-        return path
-    i, n = 1, len(path)
-    while i < n and path[i] not in '/\\':
-        i = i + 1
-
-    if 'HOME' in os.environ:
-        userhome = os.environ['HOME']
-    elif 'USERPROFILE' in os.environ:
-        userhome = os.environ['USERPROFILE']
-    elif not 'HOMEPATH' in os.environ:
-        return path
-    else:
-        try:
-            drive = os.environ['HOMEDRIVE']
-        except KeyError:
-            drive = ''
-        userhome = join(drive, os.environ['HOMEPATH'])
-
-    if i != 1: #~user
-        userhome = join(dirname(userhome), path[1:i])
-
-    return userhome + path[i:]
-
-
-# Expand paths containing shell variable substitutions.
-# The following rules apply:
-#       - no expansion within single quotes
-#       - '$$' is translated into '$'
-#       - '%%' is translated into '%' if '%%' are not seen in %var1%%var2%
-#       - ${varname} is accepted.
-#       - $varname is accepted.
-#       - %varname% is accepted.
-#       - varnames can be made out of letters, digits and the characters '_-'
-#         (though is not verified in the ${varname} and %varname% cases)
-# XXX With COMMAND.COM you can use any characters in a variable name,
-# XXX except '^|<>='.
-
-def expandvars(path):
-    """Expand shell variables of the forms $var, ${var} and %var%.
-
-    Unknown variables are left unchanged."""
-    if '$' not in path and '%' not in path:
-        return path
-    import string
-    varchars = string.ascii_letters + string.digits + '_-'
-    res = ''
-    index = 0
-    pathlen = len(path)
-    while index < pathlen:
-        c = path[index]
-        if c == '\'':   # no expansion within single quotes
-            path = path[index + 1:]
-            pathlen = len(path)
-            try:
-                index = path.index('\'')
-                res = res + '\'' + path[:index + 1]
-            except ValueError:
-                res = res + path
-                index = pathlen - 1
-        elif c == '%':  # variable or '%'
-            if path[index + 1:index + 2] == '%':
-                res = res + c
-                index = index + 1
-            else:
-                path = path[index+1:]
-                pathlen = len(path)
-                try:
-                    index = path.index('%')
-                except ValueError:
-                    res = res + '%' + path
-                    index = pathlen - 1
-                else:
-                    var = path[:index]
-                    if var in os.environ:
-                        res = res + os.environ[var]
-                    else:
-                        res = res + '%' + var + '%'
-        elif c == '$':  # variable or '$$'
-            if path[index + 1:index + 2] == '$':
-                res = res + c
-                index = index + 1
-            elif path[index + 1:index + 2] == '{':
-                path = path[index+2:]
-                pathlen = len(path)
-                try:
-                    index = path.index('}')
-                    var = path[:index]
-                    if var in os.environ:
-                        res = res + os.environ[var]
-                    else:
-                        res = res + '${' + var + '}'
-                except ValueError:
-                    res = res + '${' + path
-                    index = pathlen - 1
-            else:
-                var = ''
-                index = index + 1
-                c = path[index:index + 1]
-                while c != '' and c in varchars:
-                    var = var + c
-                    index = index + 1
-                    c = path[index:index + 1]
-                if var in os.environ:
-                    res = res + os.environ[var]
-                else:
-                    res = res + '$' + var
-                if c != '':
-                    index = index - 1
-        else:
-            res = res + c
-        index = index + 1
-    return res
-
-
-# Normalize a path, e.g. A//B, A/./B and A/foo/../B all become A\B.
-# Previously, this function also truncated pathnames to 8+3 format,
-# but as this module is called "ntpath", that's obviously wrong!
-
-def normpath(path):
-    """Normalize path, eliminating double slashes, etc."""
-    # Preserve unicode (if path is unicode)
-    backslash, dot = (u'\\', u'.') if isinstance(path, unicode) else ('\\', '.')
-    if path.startswith(('\\\\.\\', '\\\\?\\')):
-        # in the case of paths with these prefixes:
-        # \\.\ -> device names
-        # \\?\ -> literal paths
-        # do not do any normalization, but return the path unchanged
-        return path
-    path = path.replace("/", "\\")
-    prefix, path = splitdrive(path)
-    # We need to be careful here. If the prefix is empty, and the path starts
-    # with a backslash, it could either be an absolute path on the current
-    # drive (\dir1\dir2\file) or a UNC filename (\\server\mount\dir1\file). It
-    # is therefore imperative NOT to collapse multiple backslashes blindly in
-    # that case.
-    # The code below preserves multiple backslashes when there is no drive
-    # letter. This means that the invalid filename \\\a\b is preserved
-    # unchanged, where a\\\b is normalised to a\b. It's not clear that there
-    # is any better behaviour for such edge cases.
-    if prefix == '':
-        # No drive letter - preserve initial backslashes
-        while path[:1] == "\\":
-            prefix = prefix + backslash
-            path = path[1:]
-    else:
-        # We have a drive letter - collapse initial backslashes
-        if path.startswith("\\"):
-            prefix = prefix + backslash
-            path = path.lstrip("\\")
-    comps = path.split("\\")
-    i = 0
-    while i < len(comps):
-        if comps[i] in ('.', ''):
-            del comps[i]
-        elif comps[i] == '..':
-            if i > 0 and comps[i-1] != '..':
-                del comps[i-1:i+1]
-                i -= 1
-            elif i == 0 and prefix.endswith("\\"):
-                del comps[i]
-            else:
-                i += 1
-        else:
-            i += 1
-    # If the path is now empty, substitute '.'
-    if not prefix and not comps:
-        comps.append(dot)
-    return prefix + backslash.join(comps)
-
-
-# Return an absolute path.
-try:
-    from nt import _getfullpathname
-
-except ImportError: # not running on Windows - mock up something sensible
-    def abspath(path):
-        """Return the absolute version of a path."""
-        if not isabs(path):
-            if isinstance(path, unicode):
-                cwd = os.getcwdu()
-            else:
-                cwd = os.getcwd()
-            path = join(cwd, path)
-        return normpath(path)
-
-else:  # use native Windows method on Windows
-    def abspath(path):
-        """Return the absolute version of a path."""
-
-        if path: # Empty path must return current working directory.
-            try:
-                path = _getfullpathname(path)
-            except WindowsError:
-                pass # Bad path - return unchanged.
-        elif isinstance(path, unicode):
-            path = os.getcwdu()
-        else:
-            path = os.getcwd()
-        return normpath(path)
-
-# realpath is a no-op on systems without islink support
-realpath = abspath
-# Win9x family and earlier have no Unicode filename support.
-supports_unicode_filenames = (hasattr(sys, "getwindowsversion") and
-                              sys.getwindowsversion()[3] >= 2)
-
-def _abspath_split(path):
-    abs = abspath(normpath(path))
-    prefix, rest = splitunc(abs)
-    is_unc = bool(prefix)
-    if not is_unc:
-        prefix, rest = splitdrive(abs)
-    return is_unc, prefix, [x for x in rest.split(sep) if x]
-
-def relpath(path, start=curdir):
-    """Return a relative version of a path"""
-
-    if not path:
-        raise ValueError("no path specified")
-
-    start_is_unc, start_prefix, start_list = _abspath_split(start)
-    path_is_unc, path_prefix, path_list = _abspath_split(path)
-
-    if path_is_unc ^ start_is_unc:
-        raise ValueError("Cannot mix UNC and non-UNC paths (%s and %s)"
-                                                            % (path, start))
-    if path_prefix.lower() != start_prefix.lower():
-        if path_is_unc:
-            raise ValueError("path is on UNC root %s, start on UNC root %s"
-                                                % (path_prefix, start_prefix))
-        else:
-            raise ValueError("path is on drive %s, start on drive %s"
-                                                % (path_prefix, start_prefix))
-    # 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 e1.lower() != e2.lower():
-            break
-        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/AppPkg/Applications/Python/Python-2.7.2/Lib/nturl2path.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/nturl2path.py
deleted file mode 100644
index b77c16b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/nturl2path.py
+++ /dev/null
@@ -1,66 +0,0 @@
-"""Convert a NT pathname to a file URL and vice versa."""
-
-def url2pathname(url):
-    """OS-specific conversion from a relative URL of the 'file' scheme
-    to a file system path; not recommended for general use."""
-    # e.g.
-    # ///C|/foo/bar/spam.foo
-    # becomes
-    # C:\foo\bar\spam.foo
-    import string, urllib
-    # Windows itself uses ":" even in URLs.
-    url = url.replace(':', '|')
-    if not '|' in url:
-        # No drive specifier, just convert slashes
-        if url[:4] == '////':
-            # path is something like ////host/path/on/remote/host
-            # convert this to \\host\path\on\remote\host
-            # (notice halving of slashes at the start of the path)
-            url = url[2:]
-        components = url.split('/')
-        # make sure not to convert quoted slashes :-)
-        return urllib.unquote('\\'.join(components))
-    comp = url.split('|')
-    if len(comp) != 2 or comp[0][-1] not in string.ascii_letters:
-        error = 'Bad URL: ' + url
-        raise IOError, error
-    drive = comp[0][-1].upper()
-    path = drive + ':'
-    components = comp[1].split('/')
-    for comp in components:
-        if comp:
-            path = path + '\\' + urllib.unquote(comp)
-    # Issue #11474: url like '/C|/' should convert into 'C:\\'
-    if path.endswith(':') and url.endswith('/'):
-        path += '\\'
-    return path
-
-def pathname2url(p):
-    """OS-specific conversion from a file system path to a relative URL
-    of the 'file' scheme; not recommended for general use."""
-    # e.g.
-    # C:\foo\bar\spam.foo
-    # becomes
-    # ///C|/foo/bar/spam.foo
-    import urllib
-    if not ':' in p:
-        # No drive specifier, just convert slashes and quote the name
-        if p[:2] == '\\\\':
-        # path is something like \\host\path\on\remote\host
-        # convert this to ////host/path/on/remote/host
-        # (notice doubling of slashes at the start of the path)
-            p = '\\\\' + p
-        components = p.split('\\')
-        return urllib.quote('/'.join(components))
-    comp = p.split(':')
-    if len(comp) != 2 or len(comp[0]) > 1:
-        error = 'Bad path: ' + p
-        raise IOError, error
-
-    drive = urllib.quote(comp[0].upper())
-    components = comp[1].split('\\')
-    path = '///' + drive + ':'
-    for comp in components:
-        if comp:
-            path = path + '/' + urllib.quote(comp)
-    return path
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/numbers.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/numbers.py
deleted file mode 100644
index fec9dfb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/numbers.py
+++ /dev/null
@@ -1,391 +0,0 @@
-# Copyright 2007 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Abstract Base Classes (ABCs) for numbers, according to PEP 3141.
-
-TODO: Fill out more detailed documentation on the operators."""
-
-from __future__ import division
-from abc import ABCMeta, abstractmethod, abstractproperty
-
-__all__ = ["Number", "Complex", "Real", "Rational", "Integral"]
-
-class Number(object):
-    """All numbers inherit from this class.
-
-    If you just want to check if an argument x is a number, without
-    caring what kind, use isinstance(x, Number).
-    """
-    __metaclass__ = ABCMeta
-    __slots__ = ()
-
-    # Concrete numeric types must provide their own hash implementation
-    __hash__ = None
-
-
-## Notes on Decimal
-## ----------------
-## Decimal has all of the methods specified by the Real abc, but it should
-## not be registered as a Real because decimals do not interoperate with
-## binary floats (i.e.  Decimal('3.14') + 2.71828 is undefined).  But,
-## abstract reals are expected to interoperate (i.e. R1 + R2 should be
-## expected to work if R1 and R2 are both Reals).
-
-class Complex(Number):
-    """Complex defines the operations that work on the builtin complex type.
-
-    In short, those are: a conversion to complex, .real, .imag, +, -,
-    *, /, abs(), .conjugate, ==, and !=.
-
-    If it is given heterogenous arguments, and doesn't have special
-    knowledge about them, it should fall back to the builtin complex
-    type as described below.
-    """
-
-    __slots__ = ()
-
-    @abstractmethod
-    def __complex__(self):
-        """Return a builtin complex instance. Called for complex(self)."""
-
-    # Will be __bool__ in 3.0.
-    def __nonzero__(self):
-        """True if self != 0. Called for bool(self)."""
-        return self != 0
-
-    @abstractproperty
-    def real(self):
-        """Retrieve the real component of this number.
-
-        This should subclass Real.
-        """
-        raise NotImplementedError
-
-    @abstractproperty
-    def imag(self):
-        """Retrieve the imaginary component of this number.
-
-        This should subclass Real.
-        """
-        raise NotImplementedError
-
-    @abstractmethod
-    def __add__(self, other):
-        """self + other"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __radd__(self, other):
-        """other + self"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __neg__(self):
-        """-self"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __pos__(self):
-        """+self"""
-        raise NotImplementedError
-
-    def __sub__(self, other):
-        """self - other"""
-        return self + -other
-
-    def __rsub__(self, other):
-        """other - self"""
-        return -self + other
-
-    @abstractmethod
-    def __mul__(self, other):
-        """self * other"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __rmul__(self, other):
-        """other * self"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __div__(self, other):
-        """self / other without __future__ division
-
-        May promote to float.
-        """
-        raise NotImplementedError
-
-    @abstractmethod
-    def __rdiv__(self, other):
-        """other / self without __future__ division"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __truediv__(self, other):
-        """self / other with __future__ division.
-
-        Should promote to float when necessary.
-        """
-        raise NotImplementedError
-
-    @abstractmethod
-    def __rtruediv__(self, other):
-        """other / self with __future__ division"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __pow__(self, exponent):
-        """self**exponent; should promote to float or complex when necessary."""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __rpow__(self, base):
-        """base ** self"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __abs__(self):
-        """Returns the Real distance from 0. Called for abs(self)."""
-        raise NotImplementedError
-
-    @abstractmethod
-    def conjugate(self):
-        """(x+y*i).conjugate() returns (x-y*i)."""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __eq__(self, other):
-        """self == other"""
-        raise NotImplementedError
-
-    def __ne__(self, other):
-        """self != other"""
-        # The default __ne__ doesn't negate __eq__ until 3.0.
-        return not (self == other)
-
-Complex.register(complex)
-
-
-class Real(Complex):
-    """To Complex, Real adds the operations that work on real numbers.
-
-    In short, those are: a conversion to float, trunc(), divmod,
-    %, <, <=, >, and >=.
-
-    Real also provides defaults for the derived operations.
-    """
-
-    __slots__ = ()
-
-    @abstractmethod
-    def __float__(self):
-        """Any Real can be converted to a native float object.
-
-        Called for float(self)."""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __trunc__(self):
-        """trunc(self): Truncates self to an Integral.
-
-        Returns an Integral i such that:
-          * i>0 iff self>0;
-          * abs(i) <= abs(self);
-          * for any Integral j satisfying the first two conditions,
-            abs(i) >= abs(j) [i.e. i has "maximal" abs among those].
-        i.e. "truncate towards 0".
-        """
-        raise NotImplementedError
-
-    def __divmod__(self, other):
-        """divmod(self, other): The pair (self // other, self % other).
-
-        Sometimes this can be computed faster than the pair of
-        operations.
-        """
-        return (self // other, self % other)
-
-    def __rdivmod__(self, other):
-        """divmod(other, self): The pair (self // other, self % other).
-
-        Sometimes this can be computed faster than the pair of
-        operations.
-        """
-        return (other // self, other % self)
-
-    @abstractmethod
-    def __floordiv__(self, other):
-        """self // other: The floor() of self/other."""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __rfloordiv__(self, other):
-        """other // self: The floor() of other/self."""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __mod__(self, other):
-        """self % other"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __rmod__(self, other):
-        """other % self"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __lt__(self, other):
-        """self < other
-
-        < on Reals defines a total ordering, except perhaps for NaN."""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __le__(self, other):
-        """self <= other"""
-        raise NotImplementedError
-
-    # Concrete implementations of Complex abstract methods.
-    def __complex__(self):
-        """complex(self) == complex(float(self), 0)"""
-        return complex(float(self))
-
-    @property
-    def real(self):
-        """Real numbers are their real component."""
-        return +self
-
-    @property
-    def imag(self):
-        """Real numbers have no imaginary component."""
-        return 0
-
-    def conjugate(self):
-        """Conjugate is a no-op for Reals."""
-        return +self
-
-Real.register(float)
-
-
-class Rational(Real):
-    """.numerator and .denominator should be in lowest terms."""
-
-    __slots__ = ()
-
-    @abstractproperty
-    def numerator(self):
-        raise NotImplementedError
-
-    @abstractproperty
-    def denominator(self):
-        raise NotImplementedError
-
-    # Concrete implementation of Real's conversion to float.
-    def __float__(self):
-        """float(self) = self.numerator / self.denominator
-
-        It's important that this conversion use the integer's "true"
-        division rather than casting one side to float before dividing
-        so that ratios of huge integers convert without overflowing.
-
-        """
-        return self.numerator / self.denominator
-
-
-class Integral(Rational):
-    """Integral adds a conversion to long and the bit-string operations."""
-
-    __slots__ = ()
-
-    @abstractmethod
-    def __long__(self):
-        """long(self)"""
-        raise NotImplementedError
-
-    def __index__(self):
-        """index(self)"""
-        return long(self)
-
-    @abstractmethod
-    def __pow__(self, exponent, modulus=None):
-        """self ** exponent % modulus, but maybe faster.
-
-        Accept the modulus argument if you want to support the
-        3-argument version of pow(). Raise a TypeError if exponent < 0
-        or any argument isn't Integral. Otherwise, just implement the
-        2-argument version described in Complex.
-        """
-        raise NotImplementedError
-
-    @abstractmethod
-    def __lshift__(self, other):
-        """self << other"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __rlshift__(self, other):
-        """other << self"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __rshift__(self, other):
-        """self >> other"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __rrshift__(self, other):
-        """other >> self"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __and__(self, other):
-        """self & other"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __rand__(self, other):
-        """other & self"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __xor__(self, other):
-        """self ^ other"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __rxor__(self, other):
-        """other ^ self"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __or__(self, other):
-        """self | other"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __ror__(self, other):
-        """other | self"""
-        raise NotImplementedError
-
-    @abstractmethod
-    def __invert__(self):
-        """~self"""
-        raise NotImplementedError
-
-    # Concrete implementations of Rational and Real abstract methods.
-    def __float__(self):
-        """float(self) == float(long(self))"""
-        return float(long(self))
-
-    @property
-    def numerator(self):
-        """Integers are their own numerators."""
-        return +self
-
-    @property
-    def denominator(self):
-        """Integers have a denominator of 1."""
-        return 1
-
-Integral.register(int)
-Integral.register(long)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/opcode.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/opcode.py
deleted file mode 100644
index 14e8d5c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/opcode.py
+++ /dev/null
@@ -1,192 +0,0 @@
-
-"""
-opcode module - potentially shared between dis and other modules which
-operate on bytecodes (e.g. peephole optimizers).
-"""
-
-__all__ = ["cmp_op", "hasconst", "hasname", "hasjrel", "hasjabs",
-           "haslocal", "hascompare", "hasfree", "opname", "opmap",
-           "HAVE_ARGUMENT", "EXTENDED_ARG"]
-
-cmp_op = ('<', '<=', '==', '!=', '>', '>=', 'in', 'not in', 'is',
-        'is not', 'exception match', 'BAD')
-
-hasconst = []
-hasname = []
-hasjrel = []
-hasjabs = []
-haslocal = []
-hascompare = []
-hasfree = []
-
-opmap = {}
-opname = [''] * 256
-for op in range(256): opname[op] = '<%r>' % (op,)
-del op
-
-def def_op(name, op):
-    opname[op] = name
-    opmap[name] = op
-
-def name_op(name, op):
-    def_op(name, op)
-    hasname.append(op)
-
-def jrel_op(name, op):
-    def_op(name, op)
-    hasjrel.append(op)
-
-def jabs_op(name, op):
-    def_op(name, op)
-    hasjabs.append(op)
-
-# Instruction opcodes for compiled code
-# Blank lines correspond to available opcodes
-
-def_op('STOP_CODE', 0)
-def_op('POP_TOP', 1)
-def_op('ROT_TWO', 2)
-def_op('ROT_THREE', 3)
-def_op('DUP_TOP', 4)
-def_op('ROT_FOUR', 5)
-
-def_op('NOP', 9)
-def_op('UNARY_POSITIVE', 10)
-def_op('UNARY_NEGATIVE', 11)
-def_op('UNARY_NOT', 12)
-def_op('UNARY_CONVERT', 13)
-
-def_op('UNARY_INVERT', 15)
-
-def_op('BINARY_POWER', 19)
-def_op('BINARY_MULTIPLY', 20)
-def_op('BINARY_DIVIDE', 21)
-def_op('BINARY_MODULO', 22)
-def_op('BINARY_ADD', 23)
-def_op('BINARY_SUBTRACT', 24)
-def_op('BINARY_SUBSCR', 25)
-def_op('BINARY_FLOOR_DIVIDE', 26)
-def_op('BINARY_TRUE_DIVIDE', 27)
-def_op('INPLACE_FLOOR_DIVIDE', 28)
-def_op('INPLACE_TRUE_DIVIDE', 29)
-def_op('SLICE+0', 30)
-def_op('SLICE+1', 31)
-def_op('SLICE+2', 32)
-def_op('SLICE+3', 33)
-
-def_op('STORE_SLICE+0', 40)
-def_op('STORE_SLICE+1', 41)
-def_op('STORE_SLICE+2', 42)
-def_op('STORE_SLICE+3', 43)
-
-def_op('DELETE_SLICE+0', 50)
-def_op('DELETE_SLICE+1', 51)
-def_op('DELETE_SLICE+2', 52)
-def_op('DELETE_SLICE+3', 53)
-
-def_op('STORE_MAP', 54)
-def_op('INPLACE_ADD', 55)
-def_op('INPLACE_SUBTRACT', 56)
-def_op('INPLACE_MULTIPLY', 57)
-def_op('INPLACE_DIVIDE', 58)
-def_op('INPLACE_MODULO', 59)
-def_op('STORE_SUBSCR', 60)
-def_op('DELETE_SUBSCR', 61)
-def_op('BINARY_LSHIFT', 62)
-def_op('BINARY_RSHIFT', 63)
-def_op('BINARY_AND', 64)
-def_op('BINARY_XOR', 65)
-def_op('BINARY_OR', 66)
-def_op('INPLACE_POWER', 67)
-def_op('GET_ITER', 68)
-
-def_op('PRINT_EXPR', 70)
-def_op('PRINT_ITEM', 71)
-def_op('PRINT_NEWLINE', 72)
-def_op('PRINT_ITEM_TO', 73)
-def_op('PRINT_NEWLINE_TO', 74)
-def_op('INPLACE_LSHIFT', 75)
-def_op('INPLACE_RSHIFT', 76)
-def_op('INPLACE_AND', 77)
-def_op('INPLACE_XOR', 78)
-def_op('INPLACE_OR', 79)
-def_op('BREAK_LOOP', 80)
-def_op('WITH_CLEANUP', 81)
-def_op('LOAD_LOCALS', 82)
-def_op('RETURN_VALUE', 83)
-def_op('IMPORT_STAR', 84)
-def_op('EXEC_STMT', 85)
-def_op('YIELD_VALUE', 86)
-def_op('POP_BLOCK', 87)
-def_op('END_FINALLY', 88)
-def_op('BUILD_CLASS', 89)
-
-HAVE_ARGUMENT = 90              # Opcodes from here have an argument:
-
-name_op('STORE_NAME', 90)       # Index in name list
-name_op('DELETE_NAME', 91)      # ""
-def_op('UNPACK_SEQUENCE', 92)   # Number of tuple items
-jrel_op('FOR_ITER', 93)
-def_op('LIST_APPEND', 94)
-name_op('STORE_ATTR', 95)       # Index in name list
-name_op('DELETE_ATTR', 96)      # ""
-name_op('STORE_GLOBAL', 97)     # ""
-name_op('DELETE_GLOBAL', 98)    # ""
-def_op('DUP_TOPX', 99)          # number of items to duplicate
-def_op('LOAD_CONST', 100)       # Index in const list
-hasconst.append(100)
-name_op('LOAD_NAME', 101)       # Index in name list
-def_op('BUILD_TUPLE', 102)      # Number of tuple items
-def_op('BUILD_LIST', 103)       # Number of list items
-def_op('BUILD_SET', 104)        # Number of set items
-def_op('BUILD_MAP', 105)        # Number of dict entries (upto 255)
-name_op('LOAD_ATTR', 106)       # Index in name list
-def_op('COMPARE_OP', 107)       # Comparison operator
-hascompare.append(107)
-name_op('IMPORT_NAME', 108)     # Index in name list
-name_op('IMPORT_FROM', 109)     # Index in name list
-jrel_op('JUMP_FORWARD', 110)    # Number of bytes to skip
-jabs_op('JUMP_IF_FALSE_OR_POP', 111) # Target byte offset from beginning of code
-jabs_op('JUMP_IF_TRUE_OR_POP', 112)  # ""
-jabs_op('JUMP_ABSOLUTE', 113)        # ""
-jabs_op('POP_JUMP_IF_FALSE', 114)    # ""
-jabs_op('POP_JUMP_IF_TRUE', 115)     # ""
-
-name_op('LOAD_GLOBAL', 116)     # Index in name list
-
-jabs_op('CONTINUE_LOOP', 119)   # Target address
-jrel_op('SETUP_LOOP', 120)      # Distance to target address
-jrel_op('SETUP_EXCEPT', 121)    # ""
-jrel_op('SETUP_FINALLY', 122)   # ""
-
-def_op('LOAD_FAST', 124)        # Local variable number
-haslocal.append(124)
-def_op('STORE_FAST', 125)       # Local variable number
-haslocal.append(125)
-def_op('DELETE_FAST', 126)      # Local variable number
-haslocal.append(126)
-
-def_op('RAISE_VARARGS', 130)    # Number of raise arguments (1, 2, or 3)
-def_op('CALL_FUNCTION', 131)    # #args + (#kwargs << 8)
-def_op('MAKE_FUNCTION', 132)    # Number of args with default values
-def_op('BUILD_SLICE', 133)      # Number of items
-def_op('MAKE_CLOSURE', 134)
-def_op('LOAD_CLOSURE', 135)
-hasfree.append(135)
-def_op('LOAD_DEREF', 136)
-hasfree.append(136)
-def_op('STORE_DEREF', 137)
-hasfree.append(137)
-
-def_op('CALL_FUNCTION_VAR', 140)     # #args + (#kwargs << 8)
-def_op('CALL_FUNCTION_KW', 141)      # #args + (#kwargs << 8)
-def_op('CALL_FUNCTION_VAR_KW', 142)  # #args + (#kwargs << 8)
-
-jrel_op('SETUP_WITH', 143)
-
-def_op('EXTENDED_ARG', 145)
-EXTENDED_ARG = 145
-def_op('SET_ADD', 146)
-def_op('MAP_ADD', 147)
-
-del def_op, name_op, jrel_op, jabs_op
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/optparse.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/optparse.py
deleted file mode 100644
index 3b87e19..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/optparse.py
+++ /dev/null
@@ -1,1703 +0,0 @@
-"""A powerful, extensible, and easy-to-use option parser.
-
-By Greg Ward <gward@python.net>
-
-Originally distributed as Optik.
-
-For support, use the optik-users@lists.sourceforge.net mailing list
-(http://lists.sourceforge.net/lists/listinfo/optik-users).
-
-Simple usage example:
-
-   from optparse import OptionParser
-
-   parser = OptionParser()
-   parser.add_option("-f", "--file", dest="filename",
-                     help="write report to FILE", metavar="FILE")
-   parser.add_option("-q", "--quiet",
-                     action="store_false", dest="verbose", default=True,
-                     help="don't print status messages to stdout")
-
-   (options, args) = parser.parse_args()
-"""
-
-__version__ = "1.5.3"
-
-__all__ = ['Option',
-           'make_option',
-           'SUPPRESS_HELP',
-           'SUPPRESS_USAGE',
-           'Values',
-           'OptionContainer',
-           'OptionGroup',
-           'OptionParser',
-           'HelpFormatter',
-           'IndentedHelpFormatter',
-           'TitledHelpFormatter',
-           'OptParseError',
-           'OptionError',
-           'OptionConflictError',
-           'OptionValueError',
-           'BadOptionError']
-
-__copyright__ = """
-Copyright (c) 2001-2006 Gregory P. Ward.  All rights reserved.
-Copyright (c) 2002-2006 Python Software Foundation.  All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-  * Neither the name of the author nor the names of its
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""
-
-import sys, os
-import types
-import textwrap
-
-def _repr(self):
-    return "<%s at 0x%x: %s>" % (self.__class__.__name__, id(self), self)
-
-
-# This file was generated from:
-#   Id: option_parser.py 527 2006-07-23 15:21:30Z greg
-#   Id: option.py 522 2006-06-11 16:22:03Z gward
-#   Id: help.py 527 2006-07-23 15:21:30Z greg
-#   Id: errors.py 509 2006-04-20 00:58:24Z gward
-
-try:
-    from gettext import gettext
-except ImportError:
-    def gettext(message):
-        return message
-_ = gettext
-
-
-class OptParseError (Exception):
-    def __init__(self, msg):
-        self.msg = msg
-
-    def __str__(self):
-        return self.msg
-
-
-class OptionError (OptParseError):
-    """
-    Raised if an Option instance is created with invalid or
-    inconsistent arguments.
-    """
-
-    def __init__(self, msg, option):
-        self.msg = msg
-        self.option_id = str(option)
-
-    def __str__(self):
-        if self.option_id:
-            return "option %s: %s" % (self.option_id, self.msg)
-        else:
-            return self.msg
-
-class OptionConflictError (OptionError):
-    """
-    Raised if conflicting options are added to an OptionParser.
-    """
-
-class OptionValueError (OptParseError):
-    """
-    Raised if an invalid option value is encountered on the command
-    line.
-    """
-
-class BadOptionError (OptParseError):
-    """
-    Raised if an invalid option is seen on the command line.
-    """
-    def __init__(self, opt_str):
-        self.opt_str = opt_str
-
-    def __str__(self):
-        return _("no such option: %s") % self.opt_str
-
-class AmbiguousOptionError (BadOptionError):
-    """
-    Raised if an ambiguous option is seen on the command line.
-    """
-    def __init__(self, opt_str, possibilities):
-        BadOptionError.__init__(self, opt_str)
-        self.possibilities = possibilities
-
-    def __str__(self):
-        return (_("ambiguous option: %s (%s?)")
-                % (self.opt_str, ", ".join(self.possibilities)))
-
-
-class HelpFormatter:
-
-    """
-    Abstract base class for formatting option help.  OptionParser
-    instances should use one of the HelpFormatter subclasses for
-    formatting help; by default IndentedHelpFormatter is used.
-
-    Instance attributes:
-      parser : OptionParser
-        the controlling OptionParser instance
-      indent_increment : int
-        the number of columns to indent per nesting level
-      max_help_position : int
-        the maximum starting column for option help text
-      help_position : int
-        the calculated starting column for option help text;
-        initially the same as the maximum
-      width : int
-        total number of columns for output (pass None to constructor for
-        this value to be taken from the $COLUMNS environment variable)
-      level : int
-        current indentation level
-      current_indent : int
-        current indentation level (in columns)
-      help_width : int
-        number of columns available for option help text (calculated)
-      default_tag : str
-        text to replace with each option's default value, "%default"
-        by default.  Set to false value to disable default value expansion.
-      option_strings : { Option : str }
-        maps Option instances to the snippet of help text explaining
-        the syntax of that option, e.g. "-h, --help" or
-        "-fFILE, --file=FILE"
-      _short_opt_fmt : str
-        format string controlling how short options with values are
-        printed in help text.  Must be either "%s%s" ("-fFILE") or
-        "%s %s" ("-f FILE"), because those are the two syntaxes that
-        Optik supports.
-      _long_opt_fmt : str
-        similar but for long options; must be either "%s %s" ("--file FILE")
-        or "%s=%s" ("--file=FILE").
-    """
-
-    NO_DEFAULT_VALUE = "none"
-
-    def __init__(self,
-                 indent_increment,
-                 max_help_position,
-                 width,
-                 short_first):
-        self.parser = None
-        self.indent_increment = indent_increment
-        self.help_position = self.max_help_position = max_help_position
-        if width is None:
-            try:
-                width = int(os.environ['COLUMNS'])
-            except (KeyError, ValueError):
-                width = 80
-            width -= 2
-        self.width = width
-        self.current_indent = 0
-        self.level = 0
-        self.help_width = None          # computed later
-        self.short_first = short_first
-        self.default_tag = "%default"
-        self.option_strings = {}
-        self._short_opt_fmt = "%s %s"
-        self._long_opt_fmt = "%s=%s"
-
-    def set_parser(self, parser):
-        self.parser = parser
-
-    def set_short_opt_delimiter(self, delim):
-        if delim not in ("", " "):
-            raise ValueError(
-                "invalid metavar delimiter for short options: %r" % delim)
-        self._short_opt_fmt = "%s" + delim + "%s"
-
-    def set_long_opt_delimiter(self, delim):
-        if delim not in ("=", " "):
-            raise ValueError(
-                "invalid metavar delimiter for long options: %r" % delim)
-        self._long_opt_fmt = "%s" + delim + "%s"
-
-    def indent(self):
-        self.current_indent += self.indent_increment
-        self.level += 1
-
-    def dedent(self):
-        self.current_indent -= self.indent_increment
-        assert self.current_indent >= 0, "Indent decreased below 0."
-        self.level -= 1
-
-    def format_usage(self, usage):
-        raise NotImplementedError, "subclasses must implement"
-
-    def format_heading(self, heading):
-        raise NotImplementedError, "subclasses must implement"
-
-    def _format_text(self, text):
-        """
-        Format a paragraph of free-form text for inclusion in the
-        help output at the current indentation level.
-        """
-        text_width = self.width - self.current_indent
-        indent = " "*self.current_indent
-        return textwrap.fill(text,
-                             text_width,
-                             initial_indent=indent,
-                             subsequent_indent=indent)
-
-    def format_description(self, description):
-        if description:
-            return self._format_text(description) + "\n"
-        else:
-            return ""
-
-    def format_epilog(self, epilog):
-        if epilog:
-            return "\n" + self._format_text(epilog) + "\n"
-        else:
-            return ""
-
-
-    def expand_default(self, option):
-        if self.parser is None or not self.default_tag:
-            return option.help
-
-        default_value = self.parser.defaults.get(option.dest)
-        if default_value is NO_DEFAULT or default_value is None:
-            default_value = self.NO_DEFAULT_VALUE
-
-        return option.help.replace(self.default_tag, str(default_value))
-
-    def format_option(self, option):
-        # The help for each option consists of two parts:
-        #   * the opt strings and metavars
-        #     eg. ("-x", or "-fFILENAME, --file=FILENAME")
-        #   * the user-supplied help string
-        #     eg. ("turn on expert mode", "read data from FILENAME")
-        #
-        # If possible, we write both of these on the same line:
-        #   -x      turn on expert mode
-        #
-        # But if the opt string list is too long, we put the help
-        # string on a second line, indented to the same column it would
-        # start in if it fit on the first line.
-        #   -fFILENAME, --file=FILENAME
-        #           read data from FILENAME
-        result = []
-        opts = self.option_strings[option]
-        opt_width = self.help_position - self.current_indent - 2
-        if len(opts) > opt_width:
-            opts = "%*s%s\n" % (self.current_indent, "", opts)
-            indent_first = self.help_position
-        else:                       # start help on same line as opts
-            opts = "%*s%-*s  " % (self.current_indent, "", opt_width, opts)
-            indent_first = 0
-        result.append(opts)
-        if option.help:
-            help_text = self.expand_default(option)
-            help_lines = textwrap.wrap(help_text, self.help_width)
-            result.append("%*s%s\n" % (indent_first, "", help_lines[0]))
-            result.extend(["%*s%s\n" % (self.help_position, "", line)
-                           for line in help_lines[1:]])
-        elif opts[-1] != "\n":
-            result.append("\n")
-        return "".join(result)
-
-    def store_option_strings(self, parser):
-        self.indent()
-        max_len = 0
-        for opt in parser.option_list:
-            strings = self.format_option_strings(opt)
-            self.option_strings[opt] = strings
-            max_len = max(max_len, len(strings) + self.current_indent)
-        self.indent()
-        for group in parser.option_groups:
-            for opt in group.option_list:
-                strings = self.format_option_strings(opt)
-                self.option_strings[opt] = strings
-                max_len = max(max_len, len(strings) + self.current_indent)
-        self.dedent()
-        self.dedent()
-        self.help_position = min(max_len + 2, self.max_help_position)
-        self.help_width = self.width - self.help_position
-
-    def format_option_strings(self, option):
-        """Return a comma-separated list of option strings & metavariables."""
-        if option.takes_value():
-            metavar = option.metavar or option.dest.upper()
-            short_opts = [self._short_opt_fmt % (sopt, metavar)
-                          for sopt in option._short_opts]
-            long_opts = [self._long_opt_fmt % (lopt, metavar)
-                         for lopt in option._long_opts]
-        else:
-            short_opts = option._short_opts
-            long_opts = option._long_opts
-
-        if self.short_first:
-            opts = short_opts + long_opts
-        else:
-            opts = long_opts + short_opts
-
-        return ", ".join(opts)
-
-class IndentedHelpFormatter (HelpFormatter):
-    """Format help with indented section bodies.
-    """
-
-    def __init__(self,
-                 indent_increment=2,
-                 max_help_position=24,
-                 width=None,
-                 short_first=1):
-        HelpFormatter.__init__(
-            self, indent_increment, max_help_position, width, short_first)
-
-    def format_usage(self, usage):
-        return _("Usage: %s\n") % usage
-
-    def format_heading(self, heading):
-        return "%*s%s:\n" % (self.current_indent, "", heading)
-
-
-class TitledHelpFormatter (HelpFormatter):
-    """Format help with underlined section headers.
-    """
-
-    def __init__(self,
-                 indent_increment=0,
-                 max_help_position=24,
-                 width=None,
-                 short_first=0):
-        HelpFormatter.__init__ (
-            self, indent_increment, max_help_position, width, short_first)
-
-    def format_usage(self, usage):
-        return "%s  %s\n" % (self.format_heading(_("Usage")), usage)
-
-    def format_heading(self, heading):
-        return "%s\n%s\n" % (heading, "=-"[self.level] * len(heading))
-
-
-def _parse_num(val, type):
-    if val[:2].lower() == "0x":         # hexadecimal
-        radix = 16
-    elif val[:2].lower() == "0b":       # binary
-        radix = 2
-        val = val[2:] or "0"            # have to remove "0b" prefix
-    elif val[:1] == "0":                # octal
-        radix = 8
-    else:                               # decimal
-        radix = 10
-
-    return type(val, radix)
-
-def _parse_int(val):
-    return _parse_num(val, int)
-
-def _parse_long(val):
-    return _parse_num(val, long)
-
-_builtin_cvt = { "int" : (_parse_int, _("integer")),
-                 "long" : (_parse_long, _("long integer")),
-                 "float" : (float, _("floating-point")),
-                 "complex" : (complex, _("complex")) }
-
-def check_builtin(option, opt, value):
-    (cvt, what) = _builtin_cvt[option.type]
-    try:
-        return cvt(value)
-    except ValueError:
-        raise OptionValueError(
-            _("option %s: invalid %s value: %r") % (opt, what, value))
-
-def check_choice(option, opt, value):
-    if value in option.choices:
-        return value
-    else:
-        choices = ", ".join(map(repr, option.choices))
-        raise OptionValueError(
-            _("option %s: invalid choice: %r (choose from %s)")
-            % (opt, value, choices))
-
-# Not supplying a default is different from a default of None,
-# so we need an explicit "not supplied" value.
-NO_DEFAULT = ("NO", "DEFAULT")
-
-
-class Option:
-    """
-    Instance attributes:
-      _short_opts : [string]
-      _long_opts : [string]
-
-      action : string
-      type : string
-      dest : string
-      default : any
-      nargs : int
-      const : any
-      choices : [string]
-      callback : function
-      callback_args : (any*)
-      callback_kwargs : { string : any }
-      help : string
-      metavar : string
-    """
-
-    # The list of instance attributes that may be set through
-    # keyword args to the constructor.
-    ATTRS = ['action',
-             'type',
-             'dest',
-             'default',
-             'nargs',
-             'const',
-             'choices',
-             'callback',
-             'callback_args',
-             'callback_kwargs',
-             'help',
-             'metavar']
-
-    # The set of actions allowed by option parsers.  Explicitly listed
-    # here so the constructor can validate its arguments.
-    ACTIONS = ("store",
-               "store_const",
-               "store_true",
-               "store_false",
-               "append",
-               "append_const",
-               "count",
-               "callback",
-               "help",
-               "version")
-
-    # The set of actions that involve storing a value somewhere;
-    # also listed just for constructor argument validation.  (If
-    # the action is one of these, there must be a destination.)
-    STORE_ACTIONS = ("store",
-                     "store_const",
-                     "store_true",
-                     "store_false",
-                     "append",
-                     "append_const",
-                     "count")
-
-    # The set of actions for which it makes sense to supply a value
-    # type, ie. which may consume an argument from the command line.
-    TYPED_ACTIONS = ("store",
-                     "append",
-                     "callback")
-
-    # The set of actions which *require* a value type, ie. that
-    # always consume an argument from the command line.
-    ALWAYS_TYPED_ACTIONS = ("store",
-                            "append")
-
-    # The set of actions which take a 'const' attribute.
-    CONST_ACTIONS = ("store_const",
-                     "append_const")
-
-    # The set of known types for option parsers.  Again, listed here for
-    # constructor argument validation.
-    TYPES = ("string", "int", "long", "float", "complex", "choice")
-
-    # Dictionary of argument checking functions, which convert and
-    # validate option arguments according to the option type.
-    #
-    # Signature of checking functions is:
-    #   check(option : Option, opt : string, value : string) -> any
-    # where
-    #   option is the Option instance calling the checker
-    #   opt is the actual option seen on the command-line
-    #     (eg. "-a", "--file")
-    #   value is the option argument seen on the command-line
-    #
-    # The return value should be in the appropriate Python type
-    # for option.type -- eg. an integer if option.type == "int".
-    #
-    # If no checker is defined for a type, arguments will be
-    # unchecked and remain strings.
-    TYPE_CHECKER = { "int"    : check_builtin,
-                     "long"   : check_builtin,
-                     "float"  : check_builtin,
-                     "complex": check_builtin,
-                     "choice" : check_choice,
-                   }
-
-
-    # CHECK_METHODS is a list of unbound method objects; they are called
-    # by the constructor, in order, after all attributes are
-    # initialized.  The list is created and filled in later, after all
-    # the methods are actually defined.  (I just put it here because I
-    # like to define and document all class attributes in the same
-    # place.)  Subclasses that add another _check_*() method should
-    # define their own CHECK_METHODS list that adds their check method
-    # to those from this class.
-    CHECK_METHODS = None
-
-
-    # -- Constructor/initialization methods ----------------------------
-
-    def __init__(self, *opts, **attrs):
-        # Set _short_opts, _long_opts attrs from 'opts' tuple.
-        # Have to be set now, in case no option strings are supplied.
-        self._short_opts = []
-        self._long_opts = []
-        opts = self._check_opt_strings(opts)
-        self._set_opt_strings(opts)
-
-        # Set all other attrs (action, type, etc.) from 'attrs' dict
-        self._set_attrs(attrs)
-
-        # Check all the attributes we just set.  There are lots of
-        # complicated interdependencies, but luckily they can be farmed
-        # out to the _check_*() methods listed in CHECK_METHODS -- which
-        # could be handy for subclasses!  The one thing these all share
-        # is that they raise OptionError if they discover a problem.
-        for checker in self.CHECK_METHODS:
-            checker(self)
-
-    def _check_opt_strings(self, opts):
-        # Filter out None because early versions of Optik had exactly
-        # one short option and one long option, either of which
-        # could be None.
-        opts = filter(None, opts)
-        if not opts:
-            raise TypeError("at least one option string must be supplied")
-        return opts
-
-    def _set_opt_strings(self, opts):
-        for opt in opts:
-            if len(opt) < 2:
-                raise OptionError(
-                    "invalid option string %r: "
-                    "must be at least two characters long" % opt, self)
-            elif len(opt) == 2:
-                if not (opt[0] == "-" and opt[1] != "-"):
-                    raise OptionError(
-                        "invalid short option string %r: "
-                        "must be of the form -x, (x any non-dash char)" % opt,
-                        self)
-                self._short_opts.append(opt)
-            else:
-                if not (opt[0:2] == "--" and opt[2] != "-"):
-                    raise OptionError(
-                        "invalid long option string %r: "
-                        "must start with --, followed by non-dash" % opt,
-                        self)
-                self._long_opts.append(opt)
-
-    def _set_attrs(self, attrs):
-        for attr in self.ATTRS:
-            if attr in attrs:
-                setattr(self, attr, attrs[attr])
-                del attrs[attr]
-            else:
-                if attr == 'default':
-                    setattr(self, attr, NO_DEFAULT)
-                else:
-                    setattr(self, attr, None)
-        if attrs:
-            attrs = attrs.keys()
-            attrs.sort()
-            raise OptionError(
-                "invalid keyword arguments: %s" % ", ".join(attrs),
-                self)
-
-
-    # -- Constructor validation methods --------------------------------
-
-    def _check_action(self):
-        if self.action is None:
-            self.action = "store"
-        elif self.action not in self.ACTIONS:
-            raise OptionError("invalid action: %r" % self.action, self)
-
-    def _check_type(self):
-        if self.type is None:
-            if self.action in self.ALWAYS_TYPED_ACTIONS:
-                if self.choices is not None:
-                    # The "choices" attribute implies "choice" type.
-                    self.type = "choice"
-                else:
-                    # No type given?  "string" is the most sensible default.
-                    self.type = "string"
-        else:
-            # Allow type objects or builtin type conversion functions
-            # (int, str, etc.) as an alternative to their names.  (The
-            # complicated check of __builtin__ is only necessary for
-            # Python 2.1 and earlier, and is short-circuited by the
-            # first check on modern Pythons.)
-            import __builtin__
-            if ( type(self.type) is types.TypeType or
-                 (hasattr(self.type, "__name__") and
-                  getattr(__builtin__, self.type.__name__, None) is self.type) ):
-                self.type = self.type.__name__
-
-            if self.type == "str":
-                self.type = "string"
-
-            if self.type not in self.TYPES:
-                raise OptionError("invalid option type: %r" % self.type, self)
-            if self.action not in self.TYPED_ACTIONS:
-                raise OptionError(
-                    "must not supply a type for action %r" % self.action, self)
-
-    def _check_choice(self):
-        if self.type == "choice":
-            if self.choices is None:
-                raise OptionError(
-                    "must supply a list of choices for type 'choice'", self)
-            elif type(self.choices) not in (types.TupleType, types.ListType):
-                raise OptionError(
-                    "choices must be a list of strings ('%s' supplied)"
-                    % str(type(self.choices)).split("'")[1], self)
-        elif self.choices is not None:
-            raise OptionError(
-                "must not supply choices for type %r" % self.type, self)
-
-    def _check_dest(self):
-        # No destination given, and we need one for this action.  The
-        # self.type check is for callbacks that take a value.
-        takes_value = (self.action in self.STORE_ACTIONS or
-                       self.type is not None)
-        if self.dest is None and takes_value:
-
-            # Glean a destination from the first long option string,
-            # or from the first short option string if no long options.
-            if self._long_opts:
-                # eg. "--foo-bar" -> "foo_bar"
-                self.dest = self._long_opts[0][2:].replace('-', '_')
-            else:
-                self.dest = self._short_opts[0][1]
-
-    def _check_const(self):
-        if self.action not in self.CONST_ACTIONS and self.const is not None:
-            raise OptionError(
-                "'const' must not be supplied for action %r" % self.action,
-                self)
-
-    def _check_nargs(self):
-        if self.action in self.TYPED_ACTIONS:
-            if self.nargs is None:
-                self.nargs = 1
-        elif self.nargs is not None:
-            raise OptionError(
-                "'nargs' must not be supplied for action %r" % self.action,
-                self)
-
-    def _check_callback(self):
-        if self.action == "callback":
-            if not hasattr(self.callback, '__call__'):
-                raise OptionError(
-                    "callback not callable: %r" % self.callback, self)
-            if (self.callback_args is not None and
-                type(self.callback_args) is not types.TupleType):
-                raise OptionError(
-                    "callback_args, if supplied, must be a tuple: not %r"
-                    % self.callback_args, self)
-            if (self.callback_kwargs is not None and
-                type(self.callback_kwargs) is not types.DictType):
-                raise OptionError(
-                    "callback_kwargs, if supplied, must be a dict: not %r"
-                    % self.callback_kwargs, self)
-        else:
-            if self.callback is not None:
-                raise OptionError(
-                    "callback supplied (%r) for non-callback option"
-                    % self.callback, self)
-            if self.callback_args is not None:
-                raise OptionError(
-                    "callback_args supplied for non-callback option", self)
-            if self.callback_kwargs is not None:
-                raise OptionError(
-                    "callback_kwargs supplied for non-callback option", self)
-
-
-    CHECK_METHODS = [_check_action,
-                     _check_type,
-                     _check_choice,
-                     _check_dest,
-                     _check_const,
-                     _check_nargs,
-                     _check_callback]
-
-
-    # -- Miscellaneous methods -----------------------------------------
-
-    def __str__(self):
-        return "/".join(self._short_opts + self._long_opts)
-
-    __repr__ = _repr
-
-    def takes_value(self):
-        return self.type is not None
-
-    def get_opt_string(self):
-        if self._long_opts:
-            return self._long_opts[0]
-        else:
-            return self._short_opts[0]
-
-
-    # -- Processing methods --------------------------------------------
-
-    def check_value(self, opt, value):
-        checker = self.TYPE_CHECKER.get(self.type)
-        if checker is None:
-            return value
-        else:
-            return checker(self, opt, value)
-
-    def convert_value(self, opt, value):
-        if value is not None:
-            if self.nargs == 1:
-                return self.check_value(opt, value)
-            else:
-                return tuple([self.check_value(opt, v) for v in value])
-
-    def process(self, opt, value, values, parser):
-
-        # First, convert the value(s) to the right type.  Howl if any
-        # value(s) are bogus.
-        value = self.convert_value(opt, value)
-
-        # And then take whatever action is expected of us.
-        # This is a separate method to make life easier for
-        # subclasses to add new actions.
-        return self.take_action(
-            self.action, self.dest, opt, value, values, parser)
-
-    def take_action(self, action, dest, opt, value, values, parser):
-        if action == "store":
-            setattr(values, dest, value)
-        elif action == "store_const":
-            setattr(values, dest, self.const)
-        elif action == "store_true":
-            setattr(values, dest, True)
-        elif action == "store_false":
-            setattr(values, dest, False)
-        elif action == "append":
-            values.ensure_value(dest, []).append(value)
-        elif action == "append_const":
-            values.ensure_value(dest, []).append(self.const)
-        elif action == "count":
-            setattr(values, dest, values.ensure_value(dest, 0) + 1)
-        elif action == "callback":
-            args = self.callback_args or ()
-            kwargs = self.callback_kwargs or {}
-            self.callback(self, opt, value, parser, *args, **kwargs)
-        elif action == "help":
-            parser.print_help()
-            parser.exit()
-        elif action == "version":
-            parser.print_version()
-            parser.exit()
-        else:
-            raise ValueError("unknown action %r" % self.action)
-
-        return 1
-
-# class Option
-
-
-SUPPRESS_HELP = "SUPPRESS"+"HELP"
-SUPPRESS_USAGE = "SUPPRESS"+"USAGE"
-
-try:
-    basestring
-except NameError:
-    def isbasestring(x):
-        return isinstance(x, (types.StringType, types.UnicodeType))
-else:
-    def isbasestring(x):
-        return isinstance(x, basestring)
-
-class Values:
-
-    def __init__(self, defaults=None):
-        if defaults:
-            for (attr, val) in defaults.items():
-                setattr(self, attr, val)
-
-    def __str__(self):
-        return str(self.__dict__)
-
-    __repr__ = _repr
-
-    def __cmp__(self, other):
-        if isinstance(other, Values):
-            return cmp(self.__dict__, other.__dict__)
-        elif isinstance(other, types.DictType):
-            return cmp(self.__dict__, other)
-        else:
-            return -1
-
-    def _update_careful(self, dict):
-        """
-        Update the option values from an arbitrary dictionary, but only
-        use keys from dict that already have a corresponding attribute
-        in self.  Any keys in dict without a corresponding attribute
-        are silently ignored.
-        """
-        for attr in dir(self):
-            if attr in dict:
-                dval = dict[attr]
-                if dval is not None:
-                    setattr(self, attr, dval)
-
-    def _update_loose(self, dict):
-        """
-        Update the option values from an arbitrary dictionary,
-        using all keys from the dictionary regardless of whether
-        they have a corresponding attribute in self or not.
-        """
-        self.__dict__.update(dict)
-
-    def _update(self, dict, mode):
-        if mode == "careful":
-            self._update_careful(dict)
-        elif mode == "loose":
-            self._update_loose(dict)
-        else:
-            raise ValueError, "invalid update mode: %r" % mode
-
-    def read_module(self, modname, mode="careful"):
-        __import__(modname)
-        mod = sys.modules[modname]
-        self._update(vars(mod), mode)
-
-    def read_file(self, filename, mode="careful"):
-        vars = {}
-        execfile(filename, vars)
-        self._update(vars, mode)
-
-    def ensure_value(self, attr, value):
-        if not hasattr(self, attr) or getattr(self, attr) is None:
-            setattr(self, attr, value)
-        return getattr(self, attr)
-
-
-class OptionContainer:
-
-    """
-    Abstract base class.
-
-    Class attributes:
-      standard_option_list : [Option]
-        list of standard options that will be accepted by all instances
-        of this parser class (intended to be overridden by subclasses).
-
-    Instance attributes:
-      option_list : [Option]
-        the list of Option objects contained by this OptionContainer
-      _short_opt : { string : Option }
-        dictionary mapping short option strings, eg. "-f" or "-X",
-        to the Option instances that implement them.  If an Option
-        has multiple short option strings, it will appears in this
-        dictionary multiple times. [1]
-      _long_opt : { string : Option }
-        dictionary mapping long option strings, eg. "--file" or
-        "--exclude", to the Option instances that implement them.
-        Again, a given Option can occur multiple times in this
-        dictionary. [1]
-      defaults : { string : any }
-        dictionary mapping option destination names to default
-        values for each destination [1]
-
-    [1] These mappings are common to (shared by) all components of the
-        controlling OptionParser, where they are initially created.
-
-    """
-
-    def __init__(self, option_class, conflict_handler, description):
-        # Initialize the option list and related data structures.
-        # This method must be provided by subclasses, and it must
-        # initialize at least the following instance attributes:
-        # option_list, _short_opt, _long_opt, defaults.
-        self._create_option_list()
-
-        self.option_class = option_class
-        self.set_conflict_handler(conflict_handler)
-        self.set_description(description)
-
-    def _create_option_mappings(self):
-        # For use by OptionParser constructor -- create the master
-        # option mappings used by this OptionParser and all
-        # OptionGroups that it owns.
-        self._short_opt = {}            # single letter -> Option instance
-        self._long_opt = {}             # long option -> Option instance
-        self.defaults = {}              # maps option dest -> default value
-
-
-    def _share_option_mappings(self, parser):
-        # For use by OptionGroup constructor -- use shared option
-        # mappings from the OptionParser that owns this OptionGroup.
-        self._short_opt = parser._short_opt
-        self._long_opt = parser._long_opt
-        self.defaults = parser.defaults
-
-    def set_conflict_handler(self, handler):
-        if handler not in ("error", "resolve"):
-            raise ValueError, "invalid conflict_resolution value %r" % handler
-        self.conflict_handler = handler
-
-    def set_description(self, description):
-        self.description = description
-
-    def get_description(self):
-        return self.description
-
-
-    def destroy(self):
-        """see OptionParser.destroy()."""
-        del self._short_opt
-        del self._long_opt
-        del self.defaults
-
-
-    # -- Option-adding methods -----------------------------------------
-
-    def _check_conflict(self, option):
-        conflict_opts = []
-        for opt in option._short_opts:
-            if opt in self._short_opt:
-                conflict_opts.append((opt, self._short_opt[opt]))
-        for opt in option._long_opts:
-            if opt in self._long_opt:
-                conflict_opts.append((opt, self._long_opt[opt]))
-
-        if conflict_opts:
-            handler = self.conflict_handler
-            if handler == "error":
-                raise OptionConflictError(
-                    "conflicting option string(s): %s"
-                    % ", ".join([co[0] for co in conflict_opts]),
-                    option)
-            elif handler == "resolve":
-                for (opt, c_option) in conflict_opts:
-                    if opt.startswith("--"):
-                        c_option._long_opts.remove(opt)
-                        del self._long_opt[opt]
-                    else:
-                        c_option._short_opts.remove(opt)
-                        del self._short_opt[opt]
-                    if not (c_option._short_opts or c_option._long_opts):
-                        c_option.container.option_list.remove(c_option)
-
-    def add_option(self, *args, **kwargs):
-        """add_option(Option)
-           add_option(opt_str, ..., kwarg=val, ...)
-        """
-        if type(args[0]) in types.StringTypes:
-            option = self.option_class(*args, **kwargs)
-        elif len(args) == 1 and not kwargs:
-            option = args[0]
-            if not isinstance(option, Option):
-                raise TypeError, "not an Option instance: %r" % option
-        else:
-            raise TypeError, "invalid arguments"
-
-        self._check_conflict(option)
-
-        self.option_list.append(option)
-        option.container = self
-        for opt in option._short_opts:
-            self._short_opt[opt] = option
-        for opt in option._long_opts:
-            self._long_opt[opt] = option
-
-        if option.dest is not None:     # option has a dest, we need a default
-            if option.default is not NO_DEFAULT:
-                self.defaults[option.dest] = option.default
-            elif option.dest not in self.defaults:
-                self.defaults[option.dest] = None
-
-        return option
-
-    def add_options(self, option_list):
-        for option in option_list:
-            self.add_option(option)
-
-    # -- Option query/removal methods ----------------------------------
-
-    def get_option(self, opt_str):
-        return (self._short_opt.get(opt_str) or
-                self._long_opt.get(opt_str))
-
-    def has_option(self, opt_str):
-        return (opt_str in self._short_opt or
-                opt_str in self._long_opt)
-
-    def remove_option(self, opt_str):
-        option = self._short_opt.get(opt_str)
-        if option is None:
-            option = self._long_opt.get(opt_str)
-        if option is None:
-            raise ValueError("no such option %r" % opt_str)
-
-        for opt in option._short_opts:
-            del self._short_opt[opt]
-        for opt in option._long_opts:
-            del self._long_opt[opt]
-        option.container.option_list.remove(option)
-
-
-    # -- Help-formatting methods ---------------------------------------
-
-    def format_option_help(self, formatter):
-        if not self.option_list:
-            return ""
-        result = []
-        for option in self.option_list:
-            if not option.help is SUPPRESS_HELP:
-                result.append(formatter.format_option(option))
-        return "".join(result)
-
-    def format_description(self, formatter):
-        return formatter.format_description(self.get_description())
-
-    def format_help(self, formatter):
-        result = []
-        if self.description:
-            result.append(self.format_description(formatter))
-        if self.option_list:
-            result.append(self.format_option_help(formatter))
-        return "\n".join(result)
-
-
-class OptionGroup (OptionContainer):
-
-    def __init__(self, parser, title, description=None):
-        self.parser = parser
-        OptionContainer.__init__(
-            self, parser.option_class, parser.conflict_handler, description)
-        self.title = title
-
-    def _create_option_list(self):
-        self.option_list = []
-        self._share_option_mappings(self.parser)
-
-    def set_title(self, title):
-        self.title = title
-
-    def destroy(self):
-        """see OptionParser.destroy()."""
-        OptionContainer.destroy(self)
-        del self.option_list
-
-    # -- Help-formatting methods ---------------------------------------
-
-    def format_help(self, formatter):
-        result = formatter.format_heading(self.title)
-        formatter.indent()
-        result += OptionContainer.format_help(self, formatter)
-        formatter.dedent()
-        return result
-
-
-class OptionParser (OptionContainer):
-
-    """
-    Class attributes:
-      standard_option_list : [Option]
-        list of standard options that will be accepted by all instances
-        of this parser class (intended to be overridden by subclasses).
-
-    Instance attributes:
-      usage : string
-        a usage string for your program.  Before it is displayed
-        to the user, "%prog" will be expanded to the name of
-        your program (self.prog or os.path.basename(sys.argv[0])).
-      prog : string
-        the name of the current program (to override
-        os.path.basename(sys.argv[0])).
-      description : string
-        A paragraph of text giving a brief overview of your program.
-        optparse reformats this paragraph to fit the current terminal
-        width and prints it when the user requests help (after usage,
-        but before the list of options).
-      epilog : string
-        paragraph of help text to print after option help
-
-      option_groups : [OptionGroup]
-        list of option groups in this parser (option groups are
-        irrelevant for parsing the command-line, but very useful
-        for generating help)
-
-      allow_interspersed_args : bool = true
-        if true, positional arguments may be interspersed with options.
-        Assuming -a and -b each take a single argument, the command-line
-          -ablah foo bar -bboo baz
-        will be interpreted the same as
-          -ablah -bboo -- foo bar baz
-        If this flag were false, that command line would be interpreted as
-          -ablah -- foo bar -bboo baz
-        -- ie. we stop processing options as soon as we see the first
-        non-option argument.  (This is the tradition followed by
-        Python's getopt module, Perl's Getopt::Std, and other argument-
-        parsing libraries, but it is generally annoying to users.)
-
-      process_default_values : bool = true
-        if true, option default values are processed similarly to option
-        values from the command line: that is, they are passed to the
-        type-checking function for the option's type (as long as the
-        default value is a string).  (This really only matters if you
-        have defined custom types; see SF bug #955889.)  Set it to false
-        to restore the behaviour of Optik 1.4.1 and earlier.
-
-      rargs : [string]
-        the argument list currently being parsed.  Only set when
-        parse_args() is active, and continually trimmed down as
-        we consume arguments.  Mainly there for the benefit of
-        callback options.
-      largs : [string]
-        the list of leftover arguments that we have skipped while
-        parsing options.  If allow_interspersed_args is false, this
-        list is always empty.
-      values : Values
-        the set of option values currently being accumulated.  Only
-        set when parse_args() is active.  Also mainly for callbacks.
-
-    Because of the 'rargs', 'largs', and 'values' attributes,
-    OptionParser is not thread-safe.  If, for some perverse reason, you
-    need to parse command-line arguments simultaneously in different
-    threads, use different OptionParser instances.
-
-    """
-
-    standard_option_list = []
-
-    def __init__(self,
-                 usage=None,
-                 option_list=None,
-                 option_class=Option,
-                 version=None,
-                 conflict_handler="error",
-                 description=None,
-                 formatter=None,
-                 add_help_option=True,
-                 prog=None,
-                 epilog=None):
-        OptionContainer.__init__(
-            self, option_class, conflict_handler, description)
-        self.set_usage(usage)
-        self.prog = prog
-        self.version = version
-        self.allow_interspersed_args = True
-        self.process_default_values = True
-        if formatter is None:
-            formatter = IndentedHelpFormatter()
-        self.formatter = formatter
-        self.formatter.set_parser(self)
-        self.epilog = epilog
-
-        # Populate the option list; initial sources are the
-        # standard_option_list class attribute, the 'option_list'
-        # argument, and (if applicable) the _add_version_option() and
-        # _add_help_option() methods.
-        self._populate_option_list(option_list,
-                                   add_help=add_help_option)
-
-        self._init_parsing_state()
-
-
-    def destroy(self):
-        """
-        Declare that you are done with this OptionParser.  This cleans up
-        reference cycles so the OptionParser (and all objects referenced by
-        it) can be garbage-collected promptly.  After calling destroy(), the
-        OptionParser is unusable.
-        """
-        OptionContainer.destroy(self)
-        for group in self.option_groups:
-            group.destroy()
-        del self.option_list
-        del self.option_groups
-        del self.formatter
-
-
-    # -- Private methods -----------------------------------------------
-    # (used by our or OptionContainer's constructor)
-
-    def _create_option_list(self):
-        self.option_list = []
-        self.option_groups = []
-        self._create_option_mappings()
-
-    def _add_help_option(self):
-        self.add_option("-h", "--help",
-                        action="help",
-                        help=_("show this help message and exit"))
-
-    def _add_version_option(self):
-        self.add_option("--version",
-                        action="version",
-                        help=_("show program's version number and exit"))
-
-    def _populate_option_list(self, option_list, add_help=True):
-        if self.standard_option_list:
-            self.add_options(self.standard_option_list)
-        if option_list:
-            self.add_options(option_list)
-        if self.version:
-            self._add_version_option()
-        if add_help:
-            self._add_help_option()
-
-    def _init_parsing_state(self):
-        # These are set in parse_args() for the convenience of callbacks.
-        self.rargs = None
-        self.largs = None
-        self.values = None
-
-
-    # -- Simple modifier methods ---------------------------------------
-
-    def set_usage(self, usage):
-        if usage is None:
-            self.usage = _("%prog [options]")
-        elif usage is SUPPRESS_USAGE:
-            self.usage = None
-        # For backwards compatibility with Optik 1.3 and earlier.
-        elif usage.lower().startswith("usage: "):
-            self.usage = usage[7:]
-        else:
-            self.usage = usage
-
-    def enable_interspersed_args(self):
-        """Set parsing to not stop on the first non-option, allowing
-        interspersing switches with command arguments. This is the
-        default behavior. See also disable_interspersed_args() and the
-        class documentation description of the attribute
-        allow_interspersed_args."""
-        self.allow_interspersed_args = True
-
-    def disable_interspersed_args(self):
-        """Set parsing to stop on the first non-option. Use this if
-        you have a command processor which runs another command that
-        has options of its own and you want to make sure these options
-        don't get confused.
-        """
-        self.allow_interspersed_args = False
-
-    def set_process_default_values(self, process):
-        self.process_default_values = process
-
-    def set_default(self, dest, value):
-        self.defaults[dest] = value
-
-    def set_defaults(self, **kwargs):
-        self.defaults.update(kwargs)
-
-    def _get_all_options(self):
-        options = self.option_list[:]
-        for group in self.option_groups:
-            options.extend(group.option_list)
-        return options
-
-    def get_default_values(self):
-        if not self.process_default_values:
-            # Old, pre-Optik 1.5 behaviour.
-            return Values(self.defaults)
-
-        defaults = self.defaults.copy()
-        for option in self._get_all_options():
-            default = defaults.get(option.dest)
-            if isbasestring(default):
-                opt_str = option.get_opt_string()
-                defaults[option.dest] = option.check_value(opt_str, default)
-
-        return Values(defaults)
-
-
-    # -- OptionGroup methods -------------------------------------------
-
-    def add_option_group(self, *args, **kwargs):
-        # XXX lots of overlap with OptionContainer.add_option()
-        if type(args[0]) is types.StringType:
-            group = OptionGroup(self, *args, **kwargs)
-        elif len(args) == 1 and not kwargs:
-            group = args[0]
-            if not isinstance(group, OptionGroup):
-                raise TypeError, "not an OptionGroup instance: %r" % group
-            if group.parser is not self:
-                raise ValueError, "invalid OptionGroup (wrong parser)"
-        else:
-            raise TypeError, "invalid arguments"
-
-        self.option_groups.append(group)
-        return group
-
-    def get_option_group(self, opt_str):
-        option = (self._short_opt.get(opt_str) or
-                  self._long_opt.get(opt_str))
-        if option and option.container is not self:
-            return option.container
-        return None
-
-
-    # -- Option-parsing methods ----------------------------------------
-
-    def _get_args(self, args):
-        if args is None:
-            return sys.argv[1:]
-        else:
-            return args[:]              # don't modify caller's list
-
-    def parse_args(self, args=None, values=None):
-        """
-        parse_args(args : [string] = sys.argv[1:],
-                   values : Values = None)
-        -> (values : Values, args : [string])
-
-        Parse the command-line options found in 'args' (default:
-        sys.argv[1:]).  Any errors result in a call to 'error()', which
-        by default prints the usage message to stderr and calls
-        sys.exit() with an error message.  On success returns a pair
-        (values, args) where 'values' is an Values instance (with all
-        your option values) and 'args' is the list of arguments left
-        over after parsing options.
-        """
-        rargs = self._get_args(args)
-        if values is None:
-            values = self.get_default_values()
-
-        # Store the halves of the argument list as attributes for the
-        # convenience of callbacks:
-        #   rargs
-        #     the rest of the command-line (the "r" stands for
-        #     "remaining" or "right-hand")
-        #   largs
-        #     the leftover arguments -- ie. what's left after removing
-        #     options and their arguments (the "l" stands for "leftover"
-        #     or "left-hand")
-        self.rargs = rargs
-        self.largs = largs = []
-        self.values = values
-
-        try:
-            stop = self._process_args(largs, rargs, values)
-        except (BadOptionError, OptionValueError), err:
-            self.error(str(err))
-
-        args = largs + rargs
-        return self.check_values(values, args)
-
-    def check_values(self, values, args):
-        """
-        check_values(values : Values, args : [string])
-        -> (values : Values, args : [string])
-
-        Check that the supplied option values and leftover arguments are
-        valid.  Returns the option values and leftover arguments
-        (possibly adjusted, possibly completely new -- whatever you
-        like).  Default implementation just returns the passed-in
-        values; subclasses may override as desired.
-        """
-        return (values, args)
-
-    def _process_args(self, largs, rargs, values):
-        """_process_args(largs : [string],
-                         rargs : [string],
-                         values : Values)
-
-        Process command-line arguments and populate 'values', consuming
-        options and arguments from 'rargs'.  If 'allow_interspersed_args' is
-        false, stop at the first non-option argument.  If true, accumulate any
-        interspersed non-option arguments in 'largs'.
-        """
-        while rargs:
-            arg = rargs[0]
-            # We handle bare "--" explicitly, and bare "-" is handled by the
-            # standard arg handler since the short arg case ensures that the
-            # len of the opt string is greater than 1.
-            if arg == "--":
-                del rargs[0]
-                return
-            elif arg[0:2] == "--":
-                # process a single long option (possibly with value(s))
-                self._process_long_opt(rargs, values)
-            elif arg[:1] == "-" and len(arg) > 1:
-                # process a cluster of short options (possibly with
-                # value(s) for the last one only)
-                self._process_short_opts(rargs, values)
-            elif self.allow_interspersed_args:
-                largs.append(arg)
-                del rargs[0]
-            else:
-                return                  # stop now, leave this arg in rargs
-
-        # Say this is the original argument list:
-        # [arg0, arg1, ..., arg(i-1), arg(i), arg(i+1), ..., arg(N-1)]
-        #                            ^
-        # (we are about to process arg(i)).
-        #
-        # Then rargs is [arg(i), ..., arg(N-1)] and largs is a *subset* of
-        # [arg0, ..., arg(i-1)] (any options and their arguments will have
-        # been removed from largs).
-        #
-        # The while loop will usually consume 1 or more arguments per pass.
-        # If it consumes 1 (eg. arg is an option that takes no arguments),
-        # then after _process_arg() is done the situation is:
-        #
-        #   largs = subset of [arg0, ..., arg(i)]
-        #   rargs = [arg(i+1), ..., arg(N-1)]
-        #
-        # If allow_interspersed_args is false, largs will always be
-        # *empty* -- still a subset of [arg0, ..., arg(i-1)], but
-        # not a very interesting subset!
-
-    def _match_long_opt(self, opt):
-        """_match_long_opt(opt : string) -> string
-
-        Determine which long option string 'opt' matches, ie. which one
-        it is an unambiguous abbrevation for.  Raises BadOptionError if
-        'opt' doesn't unambiguously match any long option string.
-        """
-        return _match_abbrev(opt, self._long_opt)
-
-    def _process_long_opt(self, rargs, values):
-        arg = rargs.pop(0)
-
-        # Value explicitly attached to arg?  Pretend it's the next
-        # argument.
-        if "=" in arg:
-            (opt, next_arg) = arg.split("=", 1)
-            rargs.insert(0, next_arg)
-            had_explicit_value = True
-        else:
-            opt = arg
-            had_explicit_value = False
-
-        opt = self._match_long_opt(opt)
-        option = self._long_opt[opt]
-        if option.takes_value():
-            nargs = option.nargs
-            if len(rargs) < nargs:
-                if nargs == 1:
-                    self.error(_("%s option requires an argument") % opt)
-                else:
-                    self.error(_("%s option requires %d arguments")
-                               % (opt, nargs))
-            elif nargs == 1:
-                value = rargs.pop(0)
-            else:
-                value = tuple(rargs[0:nargs])
-                del rargs[0:nargs]
-
-        elif had_explicit_value:
-            self.error(_("%s option does not take a value") % opt)
-
-        else:
-            value = None
-
-        option.process(opt, value, values, self)
-
-    def _process_short_opts(self, rargs, values):
-        arg = rargs.pop(0)
-        stop = False
-        i = 1
-        for ch in arg[1:]:
-            opt = "-" + ch
-            option = self._short_opt.get(opt)
-            i += 1                      # we have consumed a character
-
-            if not option:
-                raise BadOptionError(opt)
-            if option.takes_value():
-                # Any characters left in arg?  Pretend they're the
-                # next arg, and stop consuming characters of arg.
-                if i < len(arg):
-                    rargs.insert(0, arg[i:])
-                    stop = True
-
-                nargs = option.nargs
-                if len(rargs) < nargs:
-                    if nargs == 1:
-                        self.error(_("%s option requires an argument") % opt)
-                    else:
-                        self.error(_("%s option requires %d arguments")
-                                   % (opt, nargs))
-                elif nargs == 1:
-                    value = rargs.pop(0)
-                else:
-                    value = tuple(rargs[0:nargs])
-                    del rargs[0:nargs]
-
-            else:                       # option doesn't take a value
-                value = None
-
-            option.process(opt, value, values, self)
-
-            if stop:
-                break
-
-
-    # -- Feedback methods ----------------------------------------------
-
-    def get_prog_name(self):
-        if self.prog is None:
-            return os.path.basename(sys.argv[0])
-        else:
-            return self.prog
-
-    def expand_prog_name(self, s):
-        return s.replace("%prog", self.get_prog_name())
-
-    def get_description(self):
-        return self.expand_prog_name(self.description)
-
-    def exit(self, status=0, msg=None):
-        if msg:
-            sys.stderr.write(msg)
-        sys.exit(status)
-
-    def error(self, msg):
-        """error(msg : string)
-
-        Print a usage message incorporating 'msg' to stderr and exit.
-        If you override this in a subclass, it should not return -- it
-        should either exit or raise an exception.
-        """
-        self.print_usage(sys.stderr)
-        self.exit(2, "%s: error: %s\n" % (self.get_prog_name(), msg))
-
-    def get_usage(self):
-        if self.usage:
-            return self.formatter.format_usage(
-                self.expand_prog_name(self.usage))
-        else:
-            return ""
-
-    def print_usage(self, file=None):
-        """print_usage(file : file = stdout)
-
-        Print the usage message for the current program (self.usage) to
-        'file' (default stdout).  Any occurrence of the string "%prog" in
-        self.usage is replaced with the name of the current program
-        (basename of sys.argv[0]).  Does nothing if self.usage is empty
-        or not defined.
-        """
-        if self.usage:
-            print >>file, self.get_usage()
-
-    def get_version(self):
-        if self.version:
-            return self.expand_prog_name(self.version)
-        else:
-            return ""
-
-    def print_version(self, file=None):
-        """print_version(file : file = stdout)
-
-        Print the version message for this program (self.version) to
-        'file' (default stdout).  As with print_usage(), any occurrence
-        of "%prog" in self.version is replaced by the current program's
-        name.  Does nothing if self.version is empty or undefined.
-        """
-        if self.version:
-            print >>file, self.get_version()
-
-    def format_option_help(self, formatter=None):
-        if formatter is None:
-            formatter = self.formatter
-        formatter.store_option_strings(self)
-        result = []
-        result.append(formatter.format_heading(_("Options")))
-        formatter.indent()
-        if self.option_list:
-            result.append(OptionContainer.format_option_help(self, formatter))
-            result.append("\n")
-        for group in self.option_groups:
-            result.append(group.format_help(formatter))
-            result.append("\n")
-        formatter.dedent()
-        # Drop the last "\n", or the header if no options or option groups:
-        return "".join(result[:-1])
-
-    def format_epilog(self, formatter):
-        return formatter.format_epilog(self.epilog)
-
-    def format_help(self, formatter=None):
-        if formatter is None:
-            formatter = self.formatter
-        result = []
-        if self.usage:
-            result.append(self.get_usage() + "\n")
-        if self.description:
-            result.append(self.format_description(formatter) + "\n")
-        result.append(self.format_option_help(formatter))
-        result.append(self.format_epilog(formatter))
-        return "".join(result)
-
-    # used by test suite
-    def _get_encoding(self, file):
-        encoding = getattr(file, "encoding", None)
-        if not encoding:
-            encoding = sys.getdefaultencoding()
-        return encoding
-
-    def print_help(self, file=None):
-        """print_help(file : file = stdout)
-
-        Print an extended help message, listing all options and any
-        help text provided with them, to 'file' (default stdout).
-        """
-        if file is None:
-            file = sys.stdout
-        encoding = self._get_encoding(file)
-        file.write(self.format_help().encode(encoding, "replace"))
-
-# class OptionParser
-
-
-def _match_abbrev(s, wordmap):
-    """_match_abbrev(s : string, wordmap : {string : Option}) -> string
-
-    Return the string key in 'wordmap' for which 's' is an unambiguous
-    abbreviation.  If 's' is found to be ambiguous or doesn't match any of
-    'words', raise BadOptionError.
-    """
-    # Is there an exact match?
-    if s in wordmap:
-        return s
-    else:
-        # Isolate all words with s as a prefix.
-        possibilities = [word for word in wordmap.keys()
-                         if word.startswith(s)]
-        # No exact match, so there had better be just one possibility.
-        if len(possibilities) == 1:
-            return possibilities[0]
-        elif not possibilities:
-            raise BadOptionError(s)
-        else:
-            # More than one possible completion: ambiguous prefix.
-            possibilities.sort()
-            raise AmbiguousOptionError(s, possibilities)
-
-
-# Some day, there might be many Option classes.  As of Optik 1.3, the
-# preferred way to instantiate Options is indirectly, via make_option(),
-# which will become a factory function when there are many Option
-# classes.
-make_option = Option
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/os.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/os.py
deleted file mode 100644
index 47399ab..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/os.py
+++ /dev/null
@@ -1,759 +0,0 @@
-r"""OS routines for Mac, NT, or Posix depending on what system we're on.
-
-This exports:
-  - all functions from posix, nt, os2, or ce, e.g. unlink, stat, etc.
-  - os.path is one of the modules posixpath, or ntpath
-  - os.name is 'posix', 'nt', 'os2', 'ce' or 'riscos'
-  - os.curdir is a string representing the current directory ('.' or ':')
-  - os.pardir is a string representing the parent directory ('..' or '::')
-  - os.sep is the (or a most common) pathname separator ('/' or ':' or '\\')
-  - os.extsep is the extension separator ('.' or '/')
-  - os.altsep is the alternate pathname separator (None or '/')
-  - os.pathsep is the component separator used in $PATH etc
-  - os.linesep is the line separator in text files ('\r' or '\n' or '\r\n')
-  - os.defpath is the default search path for executables
-  - os.devnull is the file path of the null device ('/dev/null', etc.)
-
-Programs that import and use 'os' stand a better chance of being
-portable between different platforms.  Of course, they must then
-only use functions that are defined by all platforms (e.g., unlink
-and opendir), and leave all pathname manipulation to os.path
-(e.g., split and join).
-"""
-
-#'
-
-import sys, errno
-
-_names = sys.builtin_module_names
-
-# Note:  more names are added to __all__ later.
-__all__ = ["altsep", "curdir", "pardir", "sep", "extsep", "pathsep", "linesep",
-           "defpath", "name", "path", "devnull",
-           "SEEK_SET", "SEEK_CUR", "SEEK_END"]
-
-def _get_exports_list(module):
-    try:
-        return list(module.__all__)
-    except AttributeError:
-        return [n for n in dir(module) if n[0] != '_']
-
-if 'posix' in _names:
-    name = 'posix'
-    linesep = '\n'
-    from posix import *
-    try:
-        from posix import _exit
-    except ImportError:
-        pass
-    import posixpath as path
-
-    import posix
-    __all__.extend(_get_exports_list(posix))
-    del posix
-
-elif 'nt' in _names:
-    name = 'nt'
-    linesep = '\r\n'
-    from nt import *
-    try:
-        from nt import _exit
-    except ImportError:
-        pass
-    import ntpath as path
-
-    import nt
-    __all__.extend(_get_exports_list(nt))
-    del nt
-
-elif 'os2' in _names:
-    name = 'os2'
-    linesep = '\r\n'
-    from os2 import *
-    try:
-        from os2 import _exit
-    except ImportError:
-        pass
-    if sys.version.find('EMX GCC') == -1:
-        import ntpath as path
-    else:
-        import os2emxpath as path
-        from _emx_link import link
-
-    import os2
-    __all__.extend(_get_exports_list(os2))
-    del os2
-
-elif 'ce' in _names:
-    name = 'ce'
-    linesep = '\r\n'
-    from ce import *
-    try:
-        from ce import _exit
-    except ImportError:
-        pass
-    # We can use the standard Windows path.
-    import ntpath as path
-
-    import ce
-    __all__.extend(_get_exports_list(ce))
-    del ce
-
-elif 'riscos' in _names:
-    name = 'riscos'
-    linesep = '\n'
-    from riscos import *
-    try:
-        from riscos import _exit
-    except ImportError:
-        pass
-    import riscospath as path
-
-    import riscos
-    __all__.extend(_get_exports_list(riscos))
-    del riscos
-
-else:
-    raise ImportError, 'no os specific module found'
-
-sys.modules['os.path'] = path
-from os.path import (curdir, pardir, sep, pathsep, defpath, extsep, altsep,
-    devnull)
-
-del _names
-
-# Python uses fixed values for the SEEK_ constants; they are mapped
-# to native constants if necessary in posixmodule.c
-SEEK_SET = 0
-SEEK_CUR = 1
-SEEK_END = 2
-
-#'
-
-# Super directory utilities.
-# (Inspired by Eric Raymond; the doc strings are mostly his)
-
-def makedirs(name, mode=0777):
-    """makedirs(path [, mode=0777])
-
-    Super-mkdir; create a leaf directory and all intermediate ones.
-    Works like mkdir, except that any intermediate path segment (not
-    just the rightmost) will be created if it does not exist.  This is
-    recursive.
-
-    """
-    head, tail = path.split(name)
-    if not tail:
-        head, tail = path.split(head)
-    if head and tail and not path.exists(head):
-        try:
-            makedirs(head, mode)
-        except OSError, e:
-            # be happy if someone already created the path
-            if e.errno != errno.EEXIST:
-                raise
-        if tail == curdir:           # xxx/newdir/. exists if xxx/newdir exists
-            return
-    mkdir(name, mode)
-
-def removedirs(name):
-    """removedirs(path)
-
-    Super-rmdir; remove a leaf directory and all empty intermediate
-    ones.  Works like rmdir except that, if the leaf directory is
-    successfully removed, directories corresponding to rightmost path
-    segments will be pruned away until either the whole path is
-    consumed or an error occurs.  Errors during this latter phase are
-    ignored -- they generally mean that a directory was not empty.
-
-    """
-    rmdir(name)
-    head, tail = path.split(name)
-    if not tail:
-        head, tail = path.split(head)
-    while head and tail:
-        try:
-            rmdir(head)
-        except error:
-            break
-        head, tail = path.split(head)
-
-def renames(old, new):
-    """renames(old, new)
-
-    Super-rename; create directories as necessary and delete any left
-    empty.  Works like rename, except creation of any intermediate
-    directories needed to make the new pathname good is attempted
-    first.  After the rename, directories corresponding to rightmost
-    path segments of the old name will be pruned way until either the
-    whole path is consumed or a nonempty directory is found.
-
-    Note: this function can fail with the new directory structure made
-    if you lack permissions needed to unlink the leaf directory or
-    file.
-
-    """
-    head, tail = path.split(new)
-    if head and tail and not path.exists(head):
-        makedirs(head)
-    rename(old, new)
-    head, tail = path.split(old)
-    if head and tail:
-        try:
-            removedirs(head)
-        except error:
-            pass
-
-__all__.extend(["makedirs", "removedirs", "renames"])
-
-def walk(top, topdown=True, onerror=None, followlinks=False):
-    """Directory tree generator.
-
-    For each directory in the directory tree rooted at top (including top
-    itself, but excluding '.' and '..'), yields a 3-tuple
-
-        dirpath, dirnames, filenames
-
-    dirpath is a string, the path to the directory.  dirnames is a list of
-    the names of the subdirectories in dirpath (excluding '.' and '..').
-    filenames is a list of the names of the non-directory files in dirpath.
-    Note that the names in the lists are just names, with no path components.
-    To get a full path (which begins with top) to a file or directory in
-    dirpath, do os.path.join(dirpath, name).
-
-    If optional arg 'topdown' is true or not specified, the triple for a
-    directory is generated before the triples for any of its subdirectories
-    (directories are generated top down).  If topdown is false, the triple
-    for a directory is generated after the triples for all of its
-    subdirectories (directories are generated bottom up).
-
-    When topdown is true, the caller can modify the dirnames list in-place
-    (e.g., via del or slice assignment), and walk will only recurse into the
-    subdirectories whose names remain in dirnames; this can be used to prune
-    the search, or to impose a specific order of visiting.  Modifying
-    dirnames when topdown is false is ineffective, since the directories in
-    dirnames have already been generated by the time dirnames itself is
-    generated.
-
-    By default errors from the os.listdir() call are ignored.  If
-    optional arg 'onerror' is specified, it should be a function; it
-    will be called with one argument, an os.error instance.  It can
-    report the error to continue with the walk, or raise the exception
-    to abort the walk.  Note that the filename is available as the
-    filename attribute of the exception object.
-
-    By default, os.walk does not follow symbolic links to subdirectories on
-    systems that support them.  In order to get this functionality, set the
-    optional argument 'followlinks' to true.
-
-    Caution:  if you pass a relative pathname for top, don't change the
-    current working directory between resumptions of walk.  walk never
-    changes the current directory, and assumes that the client doesn't
-    either.
-
-    Example:
-
-    import os
-    from os.path import join, getsize
-    for root, dirs, files in os.walk('python/Lib/email'):
-        print root, "consumes",
-        print sum([getsize(join(root, name)) for name in files]),
-        print "bytes in", len(files), "non-directory files"
-        if 'CVS' in dirs:
-            dirs.remove('CVS')  # don't visit CVS directories
-    """
-
-    islink, join, isdir = path.islink, path.join, path.isdir
-
-    # We may not have read permission for top, in which case we can't
-    # get a list of the files the directory contains.  os.path.walk
-    # always suppressed the exception then, rather than blow up for a
-    # minor reason when (say) a thousand readable directories are still
-    # left to visit.  That logic is copied here.
-    try:
-        # Note that listdir and error are globals in this module due
-        # to earlier import-*.
-        names = listdir(top)
-    except error, err:
-        if onerror is not None:
-            onerror(err)
-        return
-
-    dirs, nondirs = [], []
-    for name in names:
-        if isdir(join(top, name)):
-            dirs.append(name)
-        else:
-            nondirs.append(name)
-
-    if topdown:
-        yield top, dirs, nondirs
-    for name in dirs:
-        new_path = join(top, name)
-        if followlinks or not islink(new_path):
-            for x in walk(new_path, topdown, onerror, followlinks):
-                yield x
-    if not topdown:
-        yield top, dirs, nondirs
-
-__all__.append("walk")
-
-# Make sure os.environ exists, at least
-try:
-    environ
-except NameError:
-    environ = {}
-
-def execl(file, *args):
-    """execl(file, *args)
-
-    Execute the executable file with argument list args, replacing the
-    current process. """
-    execv(file, args)
-
-def execle(file, *args):
-    """execle(file, *args, env)
-
-    Execute the executable file with argument list args and
-    environment env, replacing the current process. """
-    env = args[-1]
-    execve(file, args[:-1], env)
-
-def execlp(file, *args):
-    """execlp(file, *args)
-
-    Execute the executable file (which is searched for along $PATH)
-    with argument list args, replacing the current process. """
-    execvp(file, args)
-
-def execlpe(file, *args):
-    """execlpe(file, *args, env)
-
-    Execute the executable file (which is searched for along $PATH)
-    with argument list args and environment env, replacing the current
-    process. """
-    env = args[-1]
-    execvpe(file, args[:-1], env)
-
-def execvp(file, args):
-    """execvp(file, args)
-
-    Execute the executable file (which is searched for along $PATH)
-    with argument list args, replacing the current process.
-    args may be a list or tuple of strings. """
-    _execvpe(file, args)
-
-def execvpe(file, args, env):
-    """execvpe(file, args, env)
-
-    Execute the executable file (which is searched for along $PATH)
-    with argument list args and environment env , replacing the
-    current process.
-    args may be a list or tuple of strings. """
-    _execvpe(file, args, env)
-
-__all__.extend(["execl","execle","execlp","execlpe","execvp","execvpe"])
-
-def _execvpe(file, args, env=None):
-    if env is not None:
-        func = execve
-        argrest = (args, env)
-    else:
-        func = execv
-        argrest = (args,)
-        env = environ
-
-    head, tail = path.split(file)
-    if head:
-        func(file, *argrest)
-        return
-    if 'PATH' in env:
-        envpath = env['PATH']
-    else:
-        envpath = defpath
-    PATH = envpath.split(pathsep)
-    saved_exc = None
-    saved_tb = None
-    for dir in PATH:
-        fullname = path.join(dir, file)
-        try:
-            func(fullname, *argrest)
-        except error, e:
-            tb = sys.exc_info()[2]
-            if (e.errno != errno.ENOENT and e.errno != errno.ENOTDIR
-                and saved_exc is None):
-                saved_exc = e
-                saved_tb = tb
-    if saved_exc:
-        raise error, saved_exc, saved_tb
-    raise error, e, tb
-
-# Change environ to automatically call putenv() if it exists
-try:
-    # This will fail if there's no putenv
-    putenv
-except NameError:
-    pass
-else:
-    import UserDict
-
-    # Fake unsetenv() for Windows
-    # not sure about os2 here but
-    # I'm guessing they are the same.
-
-    if name in ('os2', 'nt'):
-        def unsetenv(key):
-            putenv(key, "")
-
-    if name == "riscos":
-        # On RISC OS, all env access goes through getenv and putenv
-        from riscosenviron import _Environ
-    elif name in ('os2', 'nt'):  # Where Env Var Names Must Be UPPERCASE
-        # But we store them as upper case
-        class _Environ(UserDict.IterableUserDict):
-            def __init__(self, environ):
-                UserDict.UserDict.__init__(self)
-                data = self.data
-                for k, v in environ.items():
-                    data[k.upper()] = v
-            def __setitem__(self, key, item):
-                putenv(key, item)
-                self.data[key.upper()] = item
-            def __getitem__(self, key):
-                return self.data[key.upper()]
-            try:
-                unsetenv
-            except NameError:
-                def __delitem__(self, key):
-                    del self.data[key.upper()]
-            else:
-                def __delitem__(self, key):
-                    unsetenv(key)
-                    del self.data[key.upper()]
-                def clear(self):
-                    for key in self.data.keys():
-                        unsetenv(key)
-                        del self.data[key]
-                def pop(self, key, *args):
-                    unsetenv(key)
-                    return self.data.pop(key.upper(), *args)
-            def has_key(self, key):
-                return key.upper() in self.data
-            def __contains__(self, key):
-                return key.upper() in self.data
-            def get(self, key, failobj=None):
-                return self.data.get(key.upper(), failobj)
-            def update(self, dict=None, **kwargs):
-                if dict:
-                    try:
-                        keys = dict.keys()
-                    except AttributeError:
-                        # List of (key, value)
-                        for k, v in dict:
-                            self[k] = v
-                    else:
-                        # got keys
-                        # cannot use items(), since mappings
-                        # may not have them.
-                        for k in keys:
-                            self[k] = dict[k]
-                if kwargs:
-                    self.update(kwargs)
-            def copy(self):
-                return dict(self)
-
-    else:  # Where Env Var Names Can Be Mixed Case
-        class _Environ(UserDict.IterableUserDict):
-            def __init__(self, environ):
-                UserDict.UserDict.__init__(self)
-                self.data = environ
-            def __setitem__(self, key, item):
-                putenv(key, item)
-                self.data[key] = item
-            def update(self,  dict=None, **kwargs):
-                if dict:
-                    try:
-                        keys = dict.keys()
-                    except AttributeError:
-                        # List of (key, value)
-                        for k, v in dict:
-                            self[k] = v
-                    else:
-                        # got keys
-                        # cannot use items(), since mappings
-                        # may not have them.
-                        for k in keys:
-                            self[k] = dict[k]
-                if kwargs:
-                    self.update(kwargs)
-            try:
-                unsetenv
-            except NameError:
-                pass
-            else:
-                def __delitem__(self, key):
-                    unsetenv(key)
-                    del self.data[key]
-                def clear(self):
-                    for key in self.data.keys():
-                        unsetenv(key)
-                        del self.data[key]
-                def pop(self, key, *args):
-                    unsetenv(key)
-                    return self.data.pop(key, *args)
-            def copy(self):
-                return dict(self)
-
-
-    environ = _Environ(environ)
-
-def getenv(key, default=None):
-    """Get an environment variable, return None if it doesn't exist.
-    The optional second argument can specify an alternate default."""
-    return environ.get(key, default)
-__all__.append("getenv")
-
-def _exists(name):
-    return name in globals()
-
-# Supply spawn*() (probably only for Unix)
-if _exists("fork") and not _exists("spawnv") and _exists("execv"):
-
-    P_WAIT = 0
-    P_NOWAIT = P_NOWAITO = 1
-
-    # XXX Should we support P_DETACH?  I suppose it could fork()**2
-    # and close the std I/O streams.  Also, P_OVERLAY is the same
-    # as execv*()?
-
-    def _spawnvef(mode, file, args, env, func):
-        # Internal helper; func is the exec*() function to use
-        pid = fork()
-        if not pid:
-            # Child
-            try:
-                if env is None:
-                    func(file, args)
-                else:
-                    func(file, args, env)
-            except:
-                _exit(127)
-        else:
-            # Parent
-            if mode == P_NOWAIT:
-                return pid # Caller is responsible for waiting!
-            while 1:
-                wpid, sts = waitpid(pid, 0)
-                if WIFSTOPPED(sts):
-                    continue
-                elif WIFSIGNALED(sts):
-                    return -WTERMSIG(sts)
-                elif WIFEXITED(sts):
-                    return WEXITSTATUS(sts)
-                else:
-                    raise error, "Not stopped, signaled or exited???"
-
-    def spawnv(mode, file, args):
-        """spawnv(mode, file, args) -> integer
-
-Execute file with arguments from args in a subprocess.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        return _spawnvef(mode, file, args, None, execv)
-
-    def spawnve(mode, file, args, env):
-        """spawnve(mode, file, args, env) -> integer
-
-Execute file with arguments from args in a subprocess with the
-specified environment.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        return _spawnvef(mode, file, args, env, execve)
-
-    # Note: spawnvp[e] is't currently supported on Windows
-
-    def spawnvp(mode, file, args):
-        """spawnvp(mode, file, args) -> integer
-
-Execute file (which is looked for along $PATH) with arguments from
-args in a subprocess.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        return _spawnvef(mode, file, args, None, execvp)
-
-    def spawnvpe(mode, file, args, env):
-        """spawnvpe(mode, file, args, env) -> integer
-
-Execute file (which is looked for along $PATH) with arguments from
-args in a subprocess with the supplied environment.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        return _spawnvef(mode, file, args, env, execvpe)
-
-if _exists("spawnv"):
-    # These aren't supplied by the basic Windows code
-    # but can be easily implemented in Python
-
-    def spawnl(mode, file, *args):
-        """spawnl(mode, file, *args) -> integer
-
-Execute file with arguments from args in a subprocess.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        return spawnv(mode, file, args)
-
-    def spawnle(mode, file, *args):
-        """spawnle(mode, file, *args, env) -> integer
-
-Execute file with arguments from args in a subprocess with the
-supplied environment.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        env = args[-1]
-        return spawnve(mode, file, args[:-1], env)
-
-
-    __all__.extend(["spawnv", "spawnve", "spawnl", "spawnle",])
-
-
-if _exists("spawnvp"):
-    # At the moment, Windows doesn't implement spawnvp[e],
-    # so it won't have spawnlp[e] either.
-    def spawnlp(mode, file, *args):
-        """spawnlp(mode, file, *args) -> integer
-
-Execute file (which is looked for along $PATH) with arguments from
-args in a subprocess with the supplied environment.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        return spawnvp(mode, file, args)
-
-    def spawnlpe(mode, file, *args):
-        """spawnlpe(mode, file, *args, env) -> integer
-
-Execute file (which is looked for along $PATH) with arguments from
-args in a subprocess with the supplied environment.
-If mode == P_NOWAIT return the pid of the process.
-If mode == P_WAIT return the process's exit code if it exits normally;
-otherwise return -SIG, where SIG is the signal that killed it. """
-        env = args[-1]
-        return spawnvpe(mode, file, args[:-1], env)
-
-
-    __all__.extend(["spawnvp", "spawnvpe", "spawnlp", "spawnlpe",])
-
-
-# Supply popen2 etc. (for Unix)
-if _exists("fork"):
-    if not _exists("popen2"):
-        def popen2(cmd, mode="t", bufsize=-1):
-            """Execute the shell command 'cmd' in a sub-process.  On UNIX, 'cmd'
-            may be a sequence, in which case arguments will be passed directly to
-            the program without shell intervention (as with os.spawnv()).  If 'cmd'
-            is a string it will be passed to the shell (as with os.system()). If
-            'bufsize' is specified, it sets the buffer size for the I/O pipes.  The
-            file objects (child_stdin, child_stdout) are returned."""
-            import warnings
-            msg = "os.popen2 is deprecated.  Use the subprocess module."
-            warnings.warn(msg, DeprecationWarning, stacklevel=2)
-
-            import subprocess
-            PIPE = subprocess.PIPE
-            p = subprocess.Popen(cmd, shell=isinstance(cmd, basestring),
-                                 bufsize=bufsize, stdin=PIPE, stdout=PIPE,
-                                 close_fds=True)
-            return p.stdin, p.stdout
-        __all__.append("popen2")
-
-    if not _exists("popen3"):
-        def popen3(cmd, mode="t", bufsize=-1):
-            """Execute the shell command 'cmd' in a sub-process.  On UNIX, 'cmd'
-            may be a sequence, in which case arguments will be passed directly to
-            the program without shell intervention (as with os.spawnv()).  If 'cmd'
-            is a string it will be passed to the shell (as with os.system()). If
-            'bufsize' is specified, it sets the buffer size for the I/O pipes.  The
-            file objects (child_stdin, child_stdout, child_stderr) are returned."""
-            import warnings
-            msg = "os.popen3 is deprecated.  Use the subprocess module."
-            warnings.warn(msg, DeprecationWarning, stacklevel=2)
-
-            import subprocess
-            PIPE = subprocess.PIPE
-            p = subprocess.Popen(cmd, shell=isinstance(cmd, basestring),
-                                 bufsize=bufsize, stdin=PIPE, stdout=PIPE,
-                                 stderr=PIPE, close_fds=True)
-            return p.stdin, p.stdout, p.stderr
-        __all__.append("popen3")
-
-    if not _exists("popen4"):
-        def popen4(cmd, mode="t", bufsize=-1):
-            """Execute the shell command 'cmd' in a sub-process.  On UNIX, 'cmd'
-            may be a sequence, in which case arguments will be passed directly to
-            the program without shell intervention (as with os.spawnv()).  If 'cmd'
-            is a string it will be passed to the shell (as with os.system()). If
-            'bufsize' is specified, it sets the buffer size for the I/O pipes.  The
-            file objects (child_stdin, child_stdout_stderr) are returned."""
-            import warnings
-            msg = "os.popen4 is deprecated.  Use the subprocess module."
-            warnings.warn(msg, DeprecationWarning, stacklevel=2)
-
-            import subprocess
-            PIPE = subprocess.PIPE
-            p = subprocess.Popen(cmd, shell=isinstance(cmd, basestring),
-                                 bufsize=bufsize, stdin=PIPE, stdout=PIPE,
-                                 stderr=subprocess.STDOUT, close_fds=True)
-            return p.stdin, p.stdout
-        __all__.append("popen4")
-
-import copy_reg as _copy_reg
-
-def _make_stat_result(tup, dict):
-    return stat_result(tup, dict)
-
-def _pickle_stat_result(sr):
-    (type, args) = sr.__reduce__()
-    return (_make_stat_result, args)
-
-try:
-    _copy_reg.pickle(stat_result, _pickle_stat_result, _make_stat_result)
-except NameError: # stat_result may not exist
-    pass
-
-def _make_statvfs_result(tup, dict):
-    return statvfs_result(tup, dict)
-
-def _pickle_statvfs_result(sr):
-    (type, args) = sr.__reduce__()
-    return (_make_statvfs_result, args)
-
-try:
-    _copy_reg.pickle(statvfs_result, _pickle_statvfs_result,
-                     _make_statvfs_result)
-except NameError: # statvfs_result may not exist
-    pass
-
-if not _exists("urandom"):
-    def urandom(n):
-        """urandom(n) -> str
-
-        Return a string of n random bytes suitable for cryptographic use.
-
-        """
-        try:
-            _urandomfd = open("/dev/urandom", O_RDONLY)
-        except (OSError, IOError):
-            raise NotImplementedError("/dev/urandom (or equivalent) not found")
-        try:
-            bs = b""
-            while n > len(bs):
-                bs += read(_urandomfd, n - len(bs))
-        finally:
-            close(_urandomfd)
-        return bs
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/pdb.doc b/AppPkg/Applications/Python/Python-2.7.2/Lib/pdb.doc
deleted file mode 100644
index b5a514f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/pdb.doc
+++ /dev/null
@@ -1,202 +0,0 @@
-The Python Debugger Pdb
-=======================
-
-To use the debugger in its simplest form:
-
-        >>> import pdb
-        >>> pdb.run('<a statement>')
-
-The debugger's prompt is '(Pdb) '.  This will stop in the first
-function call in <a statement>.
-
-Alternatively, if a statement terminated with an unhandled exception,
-you can use pdb's post-mortem facility to inspect the contents of the
-traceback:
-
-        >>> <a statement>
-        <exception traceback>
-        >>> import pdb
-        >>> pdb.pm()
-
-The commands recognized by the debugger are listed in the next
-section.  Most can be abbreviated as indicated; e.g., h(elp) means
-that 'help' can be typed as 'h' or 'help' (but not as 'he' or 'hel',
-nor as 'H' or 'Help' or 'HELP').  Optional arguments are enclosed in
-square brackets.
-
-A blank line repeats the previous command literally, except for
-'list', where it lists the next 11 lines.
-
-Commands that the debugger doesn't recognize are assumed to be Python
-statements and are executed in the context of the program being
-debugged.  Python statements can also be prefixed with an exclamation
-point ('!').  This is a powerful way to inspect the program being
-debugged; it is even possible to change variables.  When an exception
-occurs in such a statement, the exception name is printed but the
-debugger's state is not changed.
-
-The debugger supports aliases, which can save typing.  And aliases can
-have parameters (see the alias help entry) which allows one a certain
-level of adaptability to the context under examination.
-
-Multiple commands may be entered on a single line, separated by the
-pair ';;'.  No intelligence is applied to separating the commands; the
-input is split at the first ';;', even if it is in the middle of a
-quoted string.
-
-If a file ".pdbrc" exists in your home directory or in the current
-directory, it is read in and executed as if it had been typed at the
-debugger prompt.  This is particularly useful for aliases.  If both
-files exist, the one in the home directory is read first and aliases
-defined there can be overriden by the local file.
-
-Aside from aliases, the debugger is not directly programmable; but it
-is implemented as a class from which you can derive your own debugger
-class, which you can make as fancy as you like.
-
-
-Debugger commands
-=================
-
-h(elp)
-        Without argument, print the list of available commands.  With
-        a command name as argument, print help about that command
-        (this is currently not implemented).
-
-w(here)
-        Print a stack trace, with the most recent frame at the bottom.
-        An arrow indicates the "current frame", which determines the
-        context of most commands.
-
-d(own)
-        Move the current frame one level down in the stack trace
-        (to a newer frame).
-
-u(p)
-        Move the current frame one level up in the stack trace
-        (to an older frame).
-
-b(reak) [ ([filename:]lineno | function) [, condition] ]
-        With a filename:line number argument, set a break there.  If
-        filename is omitted, use the current file.  With a function
-        name, set a break at the first executable line of that
-        function.  Without argument, list all breaks.  Each breakpoint
-        is assigned a number to which all the other breakpoint
-        commands refer.
-
-        The condition argument, if present, is a string which must
-        evaluate to true in order for the breakpoint to be honored.
-
-tbreak [ ([filename:]lineno | function) [, condition] ]
-        Temporary breakpoint, which is removed automatically when it
-        is first hit.  The arguments are the same as break.
-
-cl(ear) [bpnumber [bpnumber ...] ]
-        With a space separated list of breakpoint numbers, clear those
-        breakpoints.  Without argument, clear all breaks (but first
-        ask confirmation).
-
-disable bpnumber [bpnumber ...]
-        Disables the breakpoints given as a space separated list of
-        breakpoint numbers.  Disabling a breakpoint means it cannot
-        cause the program to stop execution, but unlike clearing a
-        breakpoint, it remains in the list of breakpoints and can be
-        (re-)enabled.
-
-enable bpnumber [bpnumber ...]
-        Enables the breakpoints specified.
-
-ignore bpnumber count
-        Sets the ignore count for the given breakpoint number.  If
-        count is omitted, the ignore count is set to 0.  A breakpoint
-        becomes active when the ignore count is zero.  When non-zero,
-        the count is decremented each time the breakpoint is reached
-        and the breakpoint is not disabled and any associated
-        condition evaluates to true.
-
-condition bpnumber condition
-        condition is an expression which must evaluate to true before
-        the breakpoint is honored.  If condition is absent, any
-        existing condition is removed; i.e., the breakpoint is made
-        unconditional.
-
-s(tep)
-        Execute the current line, stop at the first possible occasion
-        (either in a function that is called or in the current function).
-
-n(ext)
-        Continue execution until the next line in the current function
-        is reached or it returns.
-
-unt(il)
-        Continue execution until the line with a number greater than the 
-        current one is reached or until the current frame returns.
-
-r(eturn)
-        Continue execution until the current function returns.
-
-run [args...]
-        Restart the debugged python program. If a string is supplied it is
-        splitted with "shlex", and the result is used as the new sys.argv.
-        History, breakpoints, actions and debugger options are preserved.
-        "restart" is an alias for "run".
-
-c(ont(inue))
-        Continue execution, only stop when a breakpoint is encountered.
-
-l(ist) [first [,last]]
-        List source code for the current file.
-        Without arguments, list 11 lines around the current line
-        or continue the previous listing.
-        With one argument, list 11 lines starting at that line.
-        With two arguments, list the given range;
-        if the second argument is less than the first, it is a count.
-
-a(rgs)
-        Print the argument list of the current function.
-
-p expression
-        Print the value of the expression.
-
-(!) statement
-        Execute the (one-line) statement in the context of the current
-        stack frame.  The exclamation point can be omitted unless the
-        first word of the statement resembles a debugger command.  To
-        assign to a global variable you must always prefix the command
-        with a 'global' command, e.g.:
-        (Pdb) global list_options; list_options = ['-l']
-        (Pdb)
-
-
-whatis arg
-         Prints the type of the argument.
-
-alias [name [command]]
-        Creates an alias called 'name' that executes 'command'.  The
-        command must *not* be enclosed in quotes.  Replaceable
-        parameters can be indicated by %1, %2, and so on, while %* is
-        replaced by all the parameters.  If no command is given, the
-        current alias for name is shown. If no name is given, all
-        aliases are listed.
-
-        Aliases may be nested and can contain anything that can be
-        legally typed at the pdb prompt.  Note!  You *can* override
-        internal pdb commands with aliases!  Those internal commands
-        are then hidden until the alias is removed.  Aliasing is
-        recursively applied to the first word of the command line; all
-        other words in the line are left alone.
-
-        As an example, here are two useful aliases (especially when
-        placed in the .pdbrc file):
-
-        #Print instance variables (usage "pi classInst")
-        alias pi for k in %1.__dict__.keys(): print "%1.",k,"=",%1.__dict__[k]
-        #Print instance variables in self
-        alias ps pi self
-                
-unalias name
-        Deletes the specified alias.
-
-q(uit)
-        Quit from the debugger.
-        The program being executed is aborted.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/pdb.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/pdb.py
deleted file mode 100644
index 4c88e24..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/pdb.py
+++ /dev/null
@@ -1,1338 +0,0 @@
-#! /usr/bin/env python
-
-"""A Python debugger."""
-
-# (See pdb.doc for documentation.)
-
-import sys
-import linecache
-import cmd
-import bdb
-from repr import Repr
-import os
-import re
-import pprint
-import traceback
-
-
-class Restart(Exception):
-    """Causes a debugger to be restarted for the debugged python program."""
-    pass
-
-# Create a custom safe Repr instance and increase its maxstring.
-# The default of 30 truncates error messages too easily.
-_repr = Repr()
-_repr.maxstring = 200
-_saferepr = _repr.repr
-
-__all__ = ["run", "pm", "Pdb", "runeval", "runctx", "runcall", "set_trace",
-           "post_mortem", "help"]
-
-def find_function(funcname, filename):
-    cre = re.compile(r'def\s+%s\s*[(]' % re.escape(funcname))
-    try:
-        fp = open(filename)
-    except IOError:
-        return None
-    # consumer of this info expects the first line to be 1
-    lineno = 1
-    answer = None
-    while 1:
-        line = fp.readline()
-        if line == '':
-            break
-        if cre.match(line):
-            answer = funcname, filename, lineno
-            break
-        lineno = lineno + 1
-    fp.close()
-    return answer
-
-
-# Interaction prompt line will separate file and call info from code
-# text using value of line_prefix string.  A newline and arrow may
-# be to your liking.  You can set it once pdb is imported using the
-# command "pdb.line_prefix = '\n% '".
-# line_prefix = ': '    # Use this to get the old situation back
-line_prefix = '\n-> '   # Probably a better default
-
-class Pdb(bdb.Bdb, cmd.Cmd):
-
-    def __init__(self, completekey='tab', stdin=None, stdout=None, skip=None):
-        bdb.Bdb.__init__(self, skip=skip)
-        cmd.Cmd.__init__(self, completekey, stdin, stdout)
-        if stdout:
-            self.use_rawinput = 0
-        self.prompt = '(Pdb) '
-        self.aliases = {}
-        self.mainpyfile = ''
-        self._wait_for_mainpyfile = 0
-        # Try to load readline if it exists
-        try:
-            import readline
-        except ImportError:
-            pass
-
-        # Read $HOME/.pdbrc and ./.pdbrc
-        self.rcLines = []
-        if 'HOME' in os.environ:
-            envHome = os.environ['HOME']
-            try:
-                rcFile = open(os.path.join(envHome, ".pdbrc"))
-            except IOError:
-                pass
-            else:
-                for line in rcFile.readlines():
-                    self.rcLines.append(line)
-                rcFile.close()
-        try:
-            rcFile = open(".pdbrc")
-        except IOError:
-            pass
-        else:
-            for line in rcFile.readlines():
-                self.rcLines.append(line)
-            rcFile.close()
-
-        self.commands = {} # associates a command list to breakpoint numbers
-        self.commands_doprompt = {} # for each bp num, tells if the prompt
-                                    # must be disp. after execing the cmd list
-        self.commands_silent = {} # for each bp num, tells if the stack trace
-                                  # must be disp. after execing the cmd list
-        self.commands_defining = False # True while in the process of defining
-                                       # a command list
-        self.commands_bnum = None # The breakpoint number for which we are
-                                  # defining a list
-
-    def reset(self):
-        bdb.Bdb.reset(self)
-        self.forget()
-
-    def forget(self):
-        self.lineno = None
-        self.stack = []
-        self.curindex = 0
-        self.curframe = None
-
-    def setup(self, f, t):
-        self.forget()
-        self.stack, self.curindex = self.get_stack(f, t)
-        self.curframe = self.stack[self.curindex][0]
-        # The f_locals dictionary is updated from the actual frame
-        # locals whenever the .f_locals accessor is called, so we
-        # cache it here to ensure that modifications are not overwritten.
-        self.curframe_locals = self.curframe.f_locals
-        self.execRcLines()
-
-    # Can be executed earlier than 'setup' if desired
-    def execRcLines(self):
-        if self.rcLines:
-            # Make local copy because of recursion
-            rcLines = self.rcLines
-            # executed only once
-            self.rcLines = []
-            for line in rcLines:
-                line = line[:-1]
-                if len(line) > 0 and line[0] != '#':
-                    self.onecmd(line)
-
-    # Override Bdb methods
-
-    def user_call(self, frame, argument_list):
-        """This method is called when there is the remote possibility
-        that we ever need to stop in this function."""
-        if self._wait_for_mainpyfile:
-            return
-        if self.stop_here(frame):
-            print >>self.stdout, '--Call--'
-            self.interaction(frame, None)
-
-    def user_line(self, frame):
-        """This function is called when we stop or break at this line."""
-        if self._wait_for_mainpyfile:
-            if (self.mainpyfile != self.canonic(frame.f_code.co_filename)
-                or frame.f_lineno<= 0):
-                return
-            self._wait_for_mainpyfile = 0
-        if self.bp_commands(frame):
-            self.interaction(frame, None)
-
-    def bp_commands(self,frame):
-        """Call every command that was set for the current active breakpoint
-        (if there is one).
-
-        Returns True if the normal interaction function must be called,
-        False otherwise."""
-        # self.currentbp is set in bdb in Bdb.break_here if a breakpoint was hit
-        if getattr(self, "currentbp", False) and \
-               self.currentbp in self.commands:
-            currentbp = self.currentbp
-            self.currentbp = 0
-            lastcmd_back = self.lastcmd
-            self.setup(frame, None)
-            for line in self.commands[currentbp]:
-                self.onecmd(line)
-            self.lastcmd = lastcmd_back
-            if not self.commands_silent[currentbp]:
-                self.print_stack_entry(self.stack[self.curindex])
-            if self.commands_doprompt[currentbp]:
-                self.cmdloop()
-            self.forget()
-            return
-        return 1
-
-    def user_return(self, frame, return_value):
-        """This function is called when a return trap is set here."""
-        if self._wait_for_mainpyfile:
-            return
-        frame.f_locals['__return__'] = return_value
-        print >>self.stdout, '--Return--'
-        self.interaction(frame, None)
-
-    def user_exception(self, frame, exc_info):
-        """This function is called if an exception occurs,
-        but only if we are to stop at or just below this level."""
-        if self._wait_for_mainpyfile:
-            return
-        exc_type, exc_value, exc_traceback = exc_info
-        frame.f_locals['__exception__'] = exc_type, exc_value
-        if type(exc_type) == type(''):
-            exc_type_name = exc_type
-        else: exc_type_name = exc_type.__name__
-        print >>self.stdout, exc_type_name + ':', _saferepr(exc_value)
-        self.interaction(frame, exc_traceback)
-
-    # General interaction function
-
-    def interaction(self, frame, traceback):
-        self.setup(frame, traceback)
-        self.print_stack_entry(self.stack[self.curindex])
-        self.cmdloop()
-        self.forget()
-
-    def displayhook(self, obj):
-        """Custom displayhook for the exec in default(), which prevents
-        assignment of the _ variable in the builtins.
-        """
-        # reproduce the behavior of the standard displayhook, not printing None
-        if obj is not None:
-            print repr(obj)
-
-    def default(self, line):
-        if line[:1] == '!': line = line[1:]
-        locals = self.curframe_locals
-        globals = self.curframe.f_globals
-        try:
-            code = compile(line + '\n', '<stdin>', 'single')
-            save_stdout = sys.stdout
-            save_stdin = sys.stdin
-            save_displayhook = sys.displayhook
-            try:
-                sys.stdin = self.stdin
-                sys.stdout = self.stdout
-                sys.displayhook = self.displayhook
-                exec code in globals, locals
-            finally:
-                sys.stdout = save_stdout
-                sys.stdin = save_stdin
-                sys.displayhook = save_displayhook
-        except:
-            t, v = sys.exc_info()[:2]
-            if type(t) == type(''):
-                exc_type_name = t
-            else: exc_type_name = t.__name__
-            print >>self.stdout, '***', exc_type_name + ':', v
-
-    def precmd(self, line):
-        """Handle alias expansion and ';;' separator."""
-        if not line.strip():
-            return line
-        args = line.split()
-        while args[0] in self.aliases:
-            line = self.aliases[args[0]]
-            ii = 1
-            for tmpArg in args[1:]:
-                line = line.replace("%" + str(ii),
-                                      tmpArg)
-                ii = ii + 1
-            line = line.replace("%*", ' '.join(args[1:]))
-            args = line.split()
-        # split into ';;' separated commands
-        # unless it's an alias command
-        if args[0] != 'alias':
-            marker = line.find(';;')
-            if marker >= 0:
-                # queue up everything after marker
-                next = line[marker+2:].lstrip()
-                self.cmdqueue.append(next)
-                line = line[:marker].rstrip()
-        return line
-
-    def onecmd(self, line):
-        """Interpret the argument as though it had been typed in response
-        to the prompt.
-
-        Checks whether this line is typed at the normal prompt or in
-        a breakpoint command list definition.
-        """
-        if not self.commands_defining:
-            return cmd.Cmd.onecmd(self, line)
-        else:
-            return self.handle_command_def(line)
-
-    def handle_command_def(self,line):
-        """Handles one command line during command list definition."""
-        cmd, arg, line = self.parseline(line)
-        if not cmd:
-            return
-        if cmd == 'silent':
-            self.commands_silent[self.commands_bnum] = True
-            return # continue to handle other cmd def in the cmd list
-        elif cmd == 'end':
-            self.cmdqueue = []
-            return 1 # end of cmd list
-        cmdlist = self.commands[self.commands_bnum]
-        if arg:
-            cmdlist.append(cmd+' '+arg)
-        else:
-            cmdlist.append(cmd)
-        # Determine if we must stop
-        try:
-            func = getattr(self, 'do_' + cmd)
-        except AttributeError:
-            func = self.default
-        # one of the resuming commands
-        if func.func_name in self.commands_resuming:
-            self.commands_doprompt[self.commands_bnum] = False
-            self.cmdqueue = []
-            return 1
-        return
-
-    # Command definitions, called by cmdloop()
-    # The argument is the remaining string on the command line
-    # Return true to exit from the command loop
-
-    do_h = cmd.Cmd.do_help
-
-    def do_commands(self, arg):
-        """Defines a list of commands associated to a breakpoint.
-
-        Those commands will be executed whenever the breakpoint causes
-        the program to stop execution."""
-        if not arg:
-            bnum = len(bdb.Breakpoint.bpbynumber)-1
-        else:
-            try:
-                bnum = int(arg)
-            except:
-                print >>self.stdout, "Usage : commands [bnum]\n        ..." \
-                                     "\n        end"
-                return
-        self.commands_bnum = bnum
-        self.commands[bnum] = []
-        self.commands_doprompt[bnum] = True
-        self.commands_silent[bnum] = False
-        prompt_back = self.prompt
-        self.prompt = '(com) '
-        self.commands_defining = True
-        try:
-            self.cmdloop()
-        finally:
-            self.commands_defining = False
-            self.prompt = prompt_back
-
-    def do_break(self, arg, temporary = 0):
-        # break [ ([filename:]lineno | function) [, "condition"] ]
-        if not arg:
-            if self.breaks:  # There's at least one
-                print >>self.stdout, "Num Type         Disp Enb   Where"
-                for bp in bdb.Breakpoint.bpbynumber:
-                    if bp:
-                        bp.bpprint(self.stdout)
-            return
-        # parse arguments; comma has lowest precedence
-        # and cannot occur in filename
-        filename = None
-        lineno = None
-        cond = None
-        comma = arg.find(',')
-        if comma > 0:
-            # parse stuff after comma: "condition"
-            cond = arg[comma+1:].lstrip()
-            arg = arg[:comma].rstrip()
-        # parse stuff before comma: [filename:]lineno | function
-        colon = arg.rfind(':')
-        funcname = None
-        if colon >= 0:
-            filename = arg[:colon].rstrip()
-            f = self.lookupmodule(filename)
-            if not f:
-                print >>self.stdout, '*** ', repr(filename),
-                print >>self.stdout, 'not found from sys.path'
-                return
-            else:
-                filename = f
-            arg = arg[colon+1:].lstrip()
-            try:
-                lineno = int(arg)
-            except ValueError, msg:
-                print >>self.stdout, '*** Bad lineno:', arg
-                return
-        else:
-            # no colon; can be lineno or function
-            try:
-                lineno = int(arg)
-            except ValueError:
-                try:
-                    func = eval(arg,
-                                self.curframe.f_globals,
-                                self.curframe_locals)
-                except:
-                    func = arg
-                try:
-                    if hasattr(func, 'im_func'):
-                        func = func.im_func
-                    code = func.func_code
-                    #use co_name to identify the bkpt (function names
-                    #could be aliased, but co_name is invariant)
-                    funcname = code.co_name
-                    lineno = code.co_firstlineno
-                    filename = code.co_filename
-                except:
-                    # last thing to try
-                    (ok, filename, ln) = self.lineinfo(arg)
-                    if not ok:
-                        print >>self.stdout, '*** The specified object',
-                        print >>self.stdout, repr(arg),
-                        print >>self.stdout, 'is not a function'
-                        print >>self.stdout, 'or was not found along sys.path.'
-                        return
-                    funcname = ok # ok contains a function name
-                    lineno = int(ln)
-        if not filename:
-            filename = self.defaultFile()
-        # Check for reasonable breakpoint
-        line = self.checkline(filename, lineno)
-        if line:
-            # now set the break point
-            err = self.set_break(filename, line, temporary, cond, funcname)
-            if err: print >>self.stdout, '***', err
-            else:
-                bp = self.get_breaks(filename, line)[-1]
-                print >>self.stdout, "Breakpoint %d at %s:%d" % (bp.number,
-                                                                 bp.file,
-                                                                 bp.line)
-
-    # To be overridden in derived debuggers
-    def defaultFile(self):
-        """Produce a reasonable default."""
-        filename = self.curframe.f_code.co_filename
-        if filename == '<string>' and self.mainpyfile:
-            filename = self.mainpyfile
-        return filename
-
-    do_b = do_break
-
-    def do_tbreak(self, arg):
-        self.do_break(arg, 1)
-
-    def lineinfo(self, identifier):
-        failed = (None, None, None)
-        # Input is identifier, may be in single quotes
-        idstring = identifier.split("'")
-        if len(idstring) == 1:
-            # not in single quotes
-            id = idstring[0].strip()
-        elif len(idstring) == 3:
-            # quoted
-            id = idstring[1].strip()
-        else:
-            return failed
-        if id == '': return failed
-        parts = id.split('.')
-        # Protection for derived debuggers
-        if parts[0] == 'self':
-            del parts[0]
-            if len(parts) == 0:
-                return failed
-        # Best first guess at file to look at
-        fname = self.defaultFile()
-        if len(parts) == 1:
-            item = parts[0]
-        else:
-            # More than one part.
-            # First is module, second is method/class
-            f = self.lookupmodule(parts[0])
-            if f:
-                fname = f
-            item = parts[1]
-        answer = find_function(item, fname)
-        return answer or failed
-
-    def checkline(self, filename, lineno):
-        """Check whether specified line seems to be executable.
-
-        Return `lineno` if it is, 0 if not (e.g. a docstring, comment, blank
-        line or EOF). Warning: testing is not comprehensive.
-        """
-        # this method should be callable before starting debugging, so default
-        # to "no globals" if there is no current frame
-        globs = self.curframe.f_globals if hasattr(self, 'curframe') else None
-        line = linecache.getline(filename, lineno, globs)
-        if not line:
-            print >>self.stdout, 'End of file'
-            return 0
-        line = line.strip()
-        # Don't allow setting breakpoint at a blank line
-        if (not line or (line[0] == '#') or
-             (line[:3] == '"""') or line[:3] == "'''"):
-            print >>self.stdout, '*** Blank or comment'
-            return 0
-        return lineno
-
-    def do_enable(self, arg):
-        args = arg.split()
-        for i in args:
-            try:
-                i = int(i)
-            except ValueError:
-                print >>self.stdout, 'Breakpoint index %r is not a number' % i
-                continue
-
-            if not (0 <= i < len(bdb.Breakpoint.bpbynumber)):
-                print >>self.stdout, 'No breakpoint numbered', i
-                continue
-
-            bp = bdb.Breakpoint.bpbynumber[i]
-            if bp:
-                bp.enable()
-
-    def do_disable(self, arg):
-        args = arg.split()
-        for i in args:
-            try:
-                i = int(i)
-            except ValueError:
-                print >>self.stdout, 'Breakpoint index %r is not a number' % i
-                continue
-
-            if not (0 <= i < len(bdb.Breakpoint.bpbynumber)):
-                print >>self.stdout, 'No breakpoint numbered', i
-                continue
-
-            bp = bdb.Breakpoint.bpbynumber[i]
-            if bp:
-                bp.disable()
-
-    def do_condition(self, arg):
-        # arg is breakpoint number and condition
-        args = arg.split(' ', 1)
-        try:
-            bpnum = int(args[0].strip())
-        except ValueError:
-            # something went wrong
-            print >>self.stdout, \
-                'Breakpoint index %r is not a number' % args[0]
-            return
-        try:
-            cond = args[1]
-        except:
-            cond = None
-        try:
-            bp = bdb.Breakpoint.bpbynumber[bpnum]
-        except IndexError:
-            print >>self.stdout, 'Breakpoint index %r is not valid' % args[0]
-            return
-        if bp:
-            bp.cond = cond
-            if not cond:
-                print >>self.stdout, 'Breakpoint', bpnum,
-                print >>self.stdout, 'is now unconditional.'
-
-    def do_ignore(self,arg):
-        """arg is bp number followed by ignore count."""
-        args = arg.split()
-        try:
-            bpnum = int(args[0].strip())
-        except ValueError:
-            # something went wrong
-            print >>self.stdout, \
-                'Breakpoint index %r is not a number' % args[0]
-            return
-        try:
-            count = int(args[1].strip())
-        except:
-            count = 0
-        try:
-            bp = bdb.Breakpoint.bpbynumber[bpnum]
-        except IndexError:
-            print >>self.stdout, 'Breakpoint index %r is not valid' % args[0]
-            return
-        if bp:
-            bp.ignore = count
-            if count > 0:
-                reply = 'Will ignore next '
-                if count > 1:
-                    reply = reply + '%d crossings' % count
-                else:
-                    reply = reply + '1 crossing'
-                print >>self.stdout, reply + ' of breakpoint %d.' % bpnum
-            else:
-                print >>self.stdout, 'Will stop next time breakpoint',
-                print >>self.stdout, bpnum, 'is reached.'
-
-    def do_clear(self, arg):
-        """Three possibilities, tried in this order:
-        clear -> clear all breaks, ask for confirmation
-        clear file:lineno -> clear all breaks at file:lineno
-        clear bpno bpno ... -> clear breakpoints by number"""
-        if not arg:
-            try:
-                reply = raw_input('Clear all breaks? ')
-            except EOFError:
-                reply = 'no'
-            reply = reply.strip().lower()
-            if reply in ('y', 'yes'):
-                self.clear_all_breaks()
-            return
-        if ':' in arg:
-            # Make sure it works for "clear C:\foo\bar.py:12"
-            i = arg.rfind(':')
-            filename = arg[:i]
-            arg = arg[i+1:]
-            try:
-                lineno = int(arg)
-            except ValueError:
-                err = "Invalid line number (%s)" % arg
-            else:
-                err = self.clear_break(filename, lineno)
-            if err: print >>self.stdout, '***', err
-            return
-        numberlist = arg.split()
-        for i in numberlist:
-            try:
-                i = int(i)
-            except ValueError:
-                print >>self.stdout, 'Breakpoint index %r is not a number' % i
-                continue
-
-            if not (0 <= i < len(bdb.Breakpoint.bpbynumber)):
-                print >>self.stdout, 'No breakpoint numbered', i
-                continue
-            err = self.clear_bpbynumber(i)
-            if err:
-                print >>self.stdout, '***', err
-            else:
-                print >>self.stdout, 'Deleted breakpoint', i
-    do_cl = do_clear # 'c' is already an abbreviation for 'continue'
-
-    def do_where(self, arg):
-        self.print_stack_trace()
-    do_w = do_where
-    do_bt = do_where
-
-    def do_up(self, arg):
-        if self.curindex == 0:
-            print >>self.stdout, '*** Oldest frame'
-        else:
-            self.curindex = self.curindex - 1
-            self.curframe = self.stack[self.curindex][0]
-            self.curframe_locals = self.curframe.f_locals
-            self.print_stack_entry(self.stack[self.curindex])
-            self.lineno = None
-    do_u = do_up
-
-    def do_down(self, arg):
-        if self.curindex + 1 == len(self.stack):
-            print >>self.stdout, '*** Newest frame'
-        else:
-            self.curindex = self.curindex + 1
-            self.curframe = self.stack[self.curindex][0]
-            self.curframe_locals = self.curframe.f_locals
-            self.print_stack_entry(self.stack[self.curindex])
-            self.lineno = None
-    do_d = do_down
-
-    def do_until(self, arg):
-        self.set_until(self.curframe)
-        return 1
-    do_unt = do_until
-
-    def do_step(self, arg):
-        self.set_step()
-        return 1
-    do_s = do_step
-
-    def do_next(self, arg):
-        self.set_next(self.curframe)
-        return 1
-    do_n = do_next
-
-    def do_run(self, arg):
-        """Restart program by raising an exception to be caught in the main
-        debugger loop.  If arguments were given, set them in sys.argv."""
-        if arg:
-            import shlex
-            argv0 = sys.argv[0:1]
-            sys.argv = shlex.split(arg)
-            sys.argv[:0] = argv0
-        raise Restart
-
-    do_restart = do_run
-
-    def do_return(self, arg):
-        self.set_return(self.curframe)
-        return 1
-    do_r = do_return
-
-    def do_continue(self, arg):
-        self.set_continue()
-        return 1
-    do_c = do_cont = do_continue
-
-    def do_jump(self, arg):
-        if self.curindex + 1 != len(self.stack):
-            print >>self.stdout, "*** You can only jump within the bottom frame"
-            return
-        try:
-            arg = int(arg)
-        except ValueError:
-            print >>self.stdout, "*** The 'jump' command requires a line number."
-        else:
-            try:
-                # Do the jump, fix up our copy of the stack, and display the
-                # new position
-                self.curframe.f_lineno = arg
-                self.stack[self.curindex] = self.stack[self.curindex][0], arg
-                self.print_stack_entry(self.stack[self.curindex])
-            except ValueError, e:
-                print >>self.stdout, '*** Jump failed:', e
-    do_j = do_jump
-
-    def do_debug(self, arg):
-        sys.settrace(None)
-        globals = self.curframe.f_globals
-        locals = self.curframe_locals
-        p = Pdb(self.completekey, self.stdin, self.stdout)
-        p.prompt = "(%s) " % self.prompt.strip()
-        print >>self.stdout, "ENTERING RECURSIVE DEBUGGER"
-        sys.call_tracing(p.run, (arg, globals, locals))
-        print >>self.stdout, "LEAVING RECURSIVE DEBUGGER"
-        sys.settrace(self.trace_dispatch)
-        self.lastcmd = p.lastcmd
-
-    def do_quit(self, arg):
-        self._user_requested_quit = 1
-        self.set_quit()
-        return 1
-
-    do_q = do_quit
-    do_exit = do_quit
-
-    def do_EOF(self, arg):
-        print >>self.stdout
-        self._user_requested_quit = 1
-        self.set_quit()
-        return 1
-
-    def do_args(self, arg):
-        co = self.curframe.f_code
-        dict = self.curframe_locals
-        n = co.co_argcount
-        if co.co_flags & 4: n = n+1
-        if co.co_flags & 8: n = n+1
-        for i in range(n):
-            name = co.co_varnames[i]
-            print >>self.stdout, name, '=',
-            if name in dict: print >>self.stdout, dict[name]
-            else: print >>self.stdout, "*** undefined ***"
-    do_a = do_args
-
-    def do_retval(self, arg):
-        if '__return__' in self.curframe_locals:
-            print >>self.stdout, self.curframe_locals['__return__']
-        else:
-            print >>self.stdout, '*** Not yet returned!'
-    do_rv = do_retval
-
-    def _getval(self, arg):
-        try:
-            return eval(arg, self.curframe.f_globals,
-                        self.curframe_locals)
-        except:
-            t, v = sys.exc_info()[:2]
-            if isinstance(t, str):
-                exc_type_name = t
-            else: exc_type_name = t.__name__
-            print >>self.stdout, '***', exc_type_name + ':', repr(v)
-            raise
-
-    def do_p(self, arg):
-        try:
-            print >>self.stdout, repr(self._getval(arg))
-        except:
-            pass
-
-    def do_pp(self, arg):
-        try:
-            pprint.pprint(self._getval(arg), self.stdout)
-        except:
-            pass
-
-    def do_list(self, arg):
-        self.lastcmd = 'list'
-        last = None
-        if arg:
-            try:
-                x = eval(arg, {}, {})
-                if type(x) == type(()):
-                    first, last = x
-                    first = int(first)
-                    last = int(last)
-                    if last < first:
-                        # Assume it's a count
-                        last = first + last
-                else:
-                    first = max(1, int(x) - 5)
-            except:
-                print >>self.stdout, '*** Error in argument:', repr(arg)
-                return
-        elif self.lineno is None:
-            first = max(1, self.curframe.f_lineno - 5)
-        else:
-            first = self.lineno + 1
-        if last is None:
-            last = first + 10
-        filename = self.curframe.f_code.co_filename
-        breaklist = self.get_file_breaks(filename)
-        try:
-            for lineno in range(first, last+1):
-                line = linecache.getline(filename, lineno,
-                                         self.curframe.f_globals)
-                if not line:
-                    print >>self.stdout, '[EOF]'
-                    break
-                else:
-                    s = repr(lineno).rjust(3)
-                    if len(s) < 4: s = s + ' '
-                    if lineno in breaklist: s = s + 'B'
-                    else: s = s + ' '
-                    if lineno == self.curframe.f_lineno:
-                        s = s + '->'
-                    print >>self.stdout, s + '\t' + line,
-                    self.lineno = lineno
-        except KeyboardInterrupt:
-            pass
-    do_l = do_list
-
-    def do_whatis(self, arg):
-        try:
-            value = eval(arg, self.curframe.f_globals,
-                            self.curframe_locals)
-        except:
-            t, v = sys.exc_info()[:2]
-            if type(t) == type(''):
-                exc_type_name = t
-            else: exc_type_name = t.__name__
-            print >>self.stdout, '***', exc_type_name + ':', repr(v)
-            return
-        code = None
-        # Is it a function?
-        try: code = value.func_code
-        except: pass
-        if code:
-            print >>self.stdout, 'Function', code.co_name
-            return
-        # Is it an instance method?
-        try: code = value.im_func.func_code
-        except: pass
-        if code:
-            print >>self.stdout, 'Method', code.co_name
-            return
-        # None of the above...
-        print >>self.stdout, type(value)
-
-    def do_alias(self, arg):
-        args = arg.split()
-        if len(args) == 0:
-            keys = self.aliases.keys()
-            keys.sort()
-            for alias in keys:
-                print >>self.stdout, "%s = %s" % (alias, self.aliases[alias])
-            return
-        if args[0] in self.aliases and len(args) == 1:
-            print >>self.stdout, "%s = %s" % (args[0], self.aliases[args[0]])
-        else:
-            self.aliases[args[0]] = ' '.join(args[1:])
-
-    def do_unalias(self, arg):
-        args = arg.split()
-        if len(args) == 0: return
-        if args[0] in self.aliases:
-            del self.aliases[args[0]]
-
-    #list of all the commands making the program resume execution.
-    commands_resuming = ['do_continue', 'do_step', 'do_next', 'do_return',
-                         'do_quit', 'do_jump']
-
-    # Print a traceback starting at the top stack frame.
-    # The most recently entered frame is printed last;
-    # this is different from dbx and gdb, but consistent with
-    # the Python interpreter's stack trace.
-    # It is also consistent with the up/down commands (which are
-    # compatible with dbx and gdb: up moves towards 'main()'
-    # and down moves towards the most recent stack frame).
-
-    def print_stack_trace(self):
-        try:
-            for frame_lineno in self.stack:
-                self.print_stack_entry(frame_lineno)
-        except KeyboardInterrupt:
-            pass
-
-    def print_stack_entry(self, frame_lineno, prompt_prefix=line_prefix):
-        frame, lineno = frame_lineno
-        if frame is self.curframe:
-            print >>self.stdout, '>',
-        else:
-            print >>self.stdout, ' ',
-        print >>self.stdout, self.format_stack_entry(frame_lineno,
-                                                     prompt_prefix)
-
-
-    # Help methods (derived from pdb.doc)
-
-    def help_help(self):
-        self.help_h()
-
-    def help_h(self):
-        print >>self.stdout, """h(elp)
-Without argument, print the list of available commands.
-With a command name as argument, print help about that command
-"help pdb" pipes the full documentation file to the $PAGER
-"help exec" gives help on the ! command"""
-
-    def help_where(self):
-        self.help_w()
-
-    def help_w(self):
-        print >>self.stdout, """w(here)
-Print a stack trace, with the most recent frame at the bottom.
-An arrow indicates the "current frame", which determines the
-context of most commands.  'bt' is an alias for this command."""
-
-    help_bt = help_w
-
-    def help_down(self):
-        self.help_d()
-
-    def help_d(self):
-        print >>self.stdout, """d(own)
-Move the current frame one level down in the stack trace
-(to a newer frame)."""
-
-    def help_up(self):
-        self.help_u()
-
-    def help_u(self):
-        print >>self.stdout, """u(p)
-Move the current frame one level up in the stack trace
-(to an older frame)."""
-
-    def help_break(self):
-        self.help_b()
-
-    def help_b(self):
-        print >>self.stdout, """b(reak) ([file:]lineno | function) [, condition]
-With a line number argument, set a break there in the current
-file.  With a function name, set a break at first executable line
-of that function.  Without argument, list all breaks.  If a second
-argument is present, it is a string specifying an expression
-which must evaluate to true before the breakpoint is honored.
-
-The line number may be prefixed with a filename and a colon,
-to specify a breakpoint in another file (probably one that
-hasn't been loaded yet).  The file is searched for on sys.path;
-the .py suffix may be omitted."""
-
-    def help_clear(self):
-        self.help_cl()
-
-    def help_cl(self):
-        print >>self.stdout, "cl(ear) filename:lineno"
-        print >>self.stdout, """cl(ear) [bpnumber [bpnumber...]]
-With a space separated list of breakpoint numbers, clear
-those breakpoints.  Without argument, clear all breaks (but
-first ask confirmation).  With a filename:lineno argument,
-clear all breaks at that line in that file.
-
-Note that the argument is different from previous versions of
-the debugger (in python distributions 1.5.1 and before) where
-a linenumber was used instead of either filename:lineno or
-breakpoint numbers."""
-
-    def help_tbreak(self):
-        print >>self.stdout, """tbreak  same arguments as break, but breakpoint
-is removed when first hit."""
-
-    def help_enable(self):
-        print >>self.stdout, """enable bpnumber [bpnumber ...]
-Enables the breakpoints given as a space separated list of
-bp numbers."""
-
-    def help_disable(self):
-        print >>self.stdout, """disable bpnumber [bpnumber ...]
-Disables the breakpoints given as a space separated list of
-bp numbers."""
-
-    def help_ignore(self):
-        print >>self.stdout, """ignore bpnumber count
-Sets the ignore count for the given breakpoint number.  A breakpoint
-becomes active when the ignore count is zero.  When non-zero, the
-count is decremented each time the breakpoint is reached and the
-breakpoint is not disabled and any associated condition evaluates
-to true."""
-
-    def help_condition(self):
-        print >>self.stdout, """condition bpnumber str_condition
-str_condition is a string specifying an expression which
-must evaluate to true before the breakpoint is honored.
-If str_condition is absent, any existing condition is removed;
-i.e., the breakpoint is made unconditional."""
-
-    def help_step(self):
-        self.help_s()
-
-    def help_s(self):
-        print >>self.stdout, """s(tep)
-Execute the current line, stop at the first possible occasion
-(either in a function that is called or in the current function)."""
-
-    def help_until(self):
-        self.help_unt()
-
-    def help_unt(self):
-        print """unt(il)
-Continue execution until the line with a number greater than the current
-one is reached or until the current frame returns"""
-
-    def help_next(self):
-        self.help_n()
-
-    def help_n(self):
-        print >>self.stdout, """n(ext)
-Continue execution until the next line in the current function
-is reached or it returns."""
-
-    def help_return(self):
-        self.help_r()
-
-    def help_r(self):
-        print >>self.stdout, """r(eturn)
-Continue execution until the current function returns."""
-
-    def help_continue(self):
-        self.help_c()
-
-    def help_cont(self):
-        self.help_c()
-
-    def help_c(self):
-        print >>self.stdout, """c(ont(inue))
-Continue execution, only stop when a breakpoint is encountered."""
-
-    def help_jump(self):
-        self.help_j()
-
-    def help_j(self):
-        print >>self.stdout, """j(ump) lineno
-Set the next line that will be executed."""
-
-    def help_debug(self):
-        print >>self.stdout, """debug code
-Enter a recursive debugger that steps through the code argument
-(which is an arbitrary expression or statement to be executed
-in the current environment)."""
-
-    def help_list(self):
-        self.help_l()
-
-    def help_l(self):
-        print >>self.stdout, """l(ist) [first [,last]]
-List source code for the current file.
-Without arguments, list 11 lines around the current line
-or continue the previous listing.
-With one argument, list 11 lines starting at that line.
-With two arguments, list the given range;
-if the second argument is less than the first, it is a count."""
-
-    def help_args(self):
-        self.help_a()
-
-    def help_a(self):
-        print >>self.stdout, """a(rgs)
-Print the arguments of the current function."""
-
-    def help_p(self):
-        print >>self.stdout, """p expression
-Print the value of the expression."""
-
-    def help_pp(self):
-        print >>self.stdout, """pp expression
-Pretty-print the value of the expression."""
-
-    def help_exec(self):
-        print >>self.stdout, """(!) statement
-Execute the (one-line) statement in the context of
-the current stack frame.
-The exclamation point can be omitted unless the first word
-of the statement resembles a debugger command.
-To assign to a global variable you must always prefix the
-command with a 'global' command, e.g.:
-(Pdb) global list_options; list_options = ['-l']
-(Pdb)"""
-
-    def help_run(self):
-        print """run [args...]
-Restart the debugged python program. If a string is supplied, it is
-splitted with "shlex" and the result is used as the new sys.argv.
-History, breakpoints, actions and debugger options are preserved.
-"restart" is an alias for "run"."""
-
-    help_restart = help_run
-
-    def help_quit(self):
-        self.help_q()
-
-    def help_q(self):
-        print >>self.stdout, """q(uit) or exit - Quit from the debugger.
-The program being executed is aborted."""
-
-    help_exit = help_q
-
-    def help_whatis(self):
-        print >>self.stdout, """whatis arg
-Prints the type of the argument."""
-
-    def help_EOF(self):
-        print >>self.stdout, """EOF
-Handles the receipt of EOF as a command."""
-
-    def help_alias(self):
-        print >>self.stdout, """alias [name [command [parameter parameter ...]]]
-Creates an alias called 'name' the executes 'command'.  The command
-must *not* be enclosed in quotes.  Replaceable parameters are
-indicated by %1, %2, and so on, while %* is replaced by all the
-parameters.  If no command is given, the current alias for name
-is shown. If no name is given, all aliases are listed.
-
-Aliases may be nested and can contain anything that can be
-legally typed at the pdb prompt.  Note!  You *can* override
-internal pdb commands with aliases!  Those internal commands
-are then hidden until the alias is removed.  Aliasing is recursively
-applied to the first word of the command line; all other words
-in the line are left alone.
-
-Some useful aliases (especially when placed in the .pdbrc file) are:
-
-#Print instance variables (usage "pi classInst")
-alias pi for k in %1.__dict__.keys(): print "%1.",k,"=",%1.__dict__[k]
-
-#Print instance variables in self
-alias ps pi self
-"""
-
-    def help_unalias(self):
-        print >>self.stdout, """unalias name
-Deletes the specified alias."""
-
-    def help_commands(self):
-        print >>self.stdout, """commands [bpnumber]
-(com) ...
-(com) end
-(Pdb)
-
-Specify a list of commands for breakpoint number bpnumber.  The
-commands themselves appear on the following lines.  Type a line
-containing just 'end' to terminate the commands.
-
-To remove all commands from a breakpoint, type commands and
-follow it immediately with  end; that is, give no commands.
-
-With no bpnumber argument, commands refers to the last
-breakpoint set.
-
-You can use breakpoint commands to start your program up again.
-Simply use the continue command, or step, or any other
-command that resumes execution.
-
-Specifying any command resuming execution (currently continue,
-step, next, return, jump, quit and their abbreviations) terminates
-the command list (as if that command was immediately followed by end).
-This is because any time you resume execution
-(even with a simple next or step), you may encounter
-another breakpoint--which could have its own command list, leading to
-ambiguities about which list to execute.
-
-   If you use the 'silent' command in the command list, the
-usual message about stopping at a breakpoint is not printed.  This may
-be desirable for breakpoints that are to print a specific message and
-then continue.  If none of the other commands print anything, you
-see no sign that the breakpoint was reached.
-"""
-
-    def help_pdb(self):
-        help()
-
-    def lookupmodule(self, filename):
-        """Helper function for break/clear parsing -- may be overridden.
-
-        lookupmodule() translates (possibly incomplete) file or module name
-        into an absolute file name.
-        """
-        if os.path.isabs(filename) and  os.path.exists(filename):
-            return filename
-        f = os.path.join(sys.path[0], filename)
-        if  os.path.exists(f) and self.canonic(f) == self.mainpyfile:
-            return f
-        root, ext = os.path.splitext(filename)
-        if ext == '':
-            filename = filename + '.py'
-        if os.path.isabs(filename):
-            return filename
-        for dirname in sys.path:
-            while os.path.islink(dirname):
-                dirname = os.readlink(dirname)
-            fullname = os.path.join(dirname, filename)
-            if os.path.exists(fullname):
-                return fullname
-        return None
-
-    def _runscript(self, filename):
-        # The script has to run in __main__ namespace (or imports from
-        # __main__ will break).
-        #
-        # So we clear up the __main__ and set several special variables
-        # (this gets rid of pdb's globals and cleans old variables on restarts).
-        import __main__
-        __main__.__dict__.clear()
-        __main__.__dict__.update({"__name__"    : "__main__",
-                                  "__file__"    : filename,
-                                  "__builtins__": __builtins__,
-                                 })
-
-        # When bdb sets tracing, a number of call and line events happens
-        # BEFORE debugger even reaches user's code (and the exact sequence of
-        # events depends on python version). So we take special measures to
-        # avoid stopping before we reach the main script (see user_line and
-        # user_call for details).
-        self._wait_for_mainpyfile = 1
-        self.mainpyfile = self.canonic(filename)
-        self._user_requested_quit = 0
-        statement = 'execfile( "%s")' % filename
-        self.run(statement)
-
-# Simplified interface
-
-def run(statement, globals=None, locals=None):
-    Pdb().run(statement, globals, locals)
-
-def runeval(expression, globals=None, locals=None):
-    return Pdb().runeval(expression, globals, locals)
-
-def runctx(statement, globals, locals):
-    # B/W compatibility
-    run(statement, globals, locals)
-
-def runcall(*args, **kwds):
-    return Pdb().runcall(*args, **kwds)
-
-def set_trace():
-    Pdb().set_trace(sys._getframe().f_back)
-
-# Post-Mortem interface
-
-def post_mortem(t=None):
-    # handling the default
-    if t is None:
-        # sys.exc_info() returns (type, value, traceback) if an exception is
-        # being handled, otherwise it returns None
-        t = sys.exc_info()[2]
-        if t is None:
-            raise ValueError("A valid traceback must be passed if no "
-                                               "exception is being handled")
-
-    p = Pdb()
-    p.reset()
-    p.interaction(None, t)
-
-def pm():
-    post_mortem(sys.last_traceback)
-
-
-# Main program for testing
-
-TESTCMD = 'import x; x.main()'
-
-def test():
-    run(TESTCMD)
-
-# print help
-def help():
-    for dirname in sys.path:
-        fullname = os.path.join(dirname, 'pdb.doc')
-        if os.path.exists(fullname):
-            sts = os.system('${PAGER-more} '+fullname)
-            if sts: print '*** Pager exit status:', sts
-            break
-    else:
-        print 'Sorry, can\'t find the help file "pdb.doc"',
-        print 'along the Python search path'
-
-def main():
-    if not sys.argv[1:] or sys.argv[1] in ("--help", "-h"):
-        print "usage: pdb.py scriptfile [arg] ..."
-        sys.exit(2)
-
-    mainpyfile =  sys.argv[1]     # Get script filename
-    if not os.path.exists(mainpyfile):
-        print 'Error:', mainpyfile, 'does not exist'
-        sys.exit(1)
-
-    del sys.argv[0]         # Hide "pdb.py" from argument list
-
-    # Replace pdb's dir with script's dir in front of module search path.
-    sys.path[0] = os.path.dirname(mainpyfile)
-
-    # Note on saving/restoring sys.argv: it's a good idea when sys.argv was
-    # modified by the script being debugged. It's a bad idea when it was
-    # changed by the user from the command line. There is a "restart" command
-    # which allows explicit specification of command line arguments.
-    pdb = Pdb()
-    while True:
-        try:
-            pdb._runscript(mainpyfile)
-            if pdb._user_requested_quit:
-                break
-            print "The program finished and will be restarted"
-        except Restart:
-            print "Restarting", mainpyfile, "with arguments:"
-            print "\t" + " ".join(sys.argv[1:])
-        except SystemExit:
-            # In most cases SystemExit does not warrant a post-mortem session.
-            print "The program exited via sys.exit(). Exit status: ",
-            print sys.exc_info()[1]
-        except:
-            traceback.print_exc()
-            print "Uncaught exception. Entering post mortem debugging"
-            print "Running 'cont' or 'step' will restart the program"
-            t = sys.exc_info()[2]
-            pdb.interaction(None, t)
-            print "Post mortem debugger finished. The " + mainpyfile + \
-                  " will be restarted"
-
-
-# When invoked as main program, invoke the debugger on a script
-if __name__ == '__main__':
-    import pdb
-    pdb.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/pickle.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/pickle.py
deleted file mode 100644
index 9b35432..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/pickle.py
+++ /dev/null
@@ -1,1391 +0,0 @@
-"""Create portable serialized representations of Python objects.
-
-See module cPickle for a (much) faster implementation.
-See module copy_reg for a mechanism for registering custom picklers.
-See module pickletools source for extensive comments.
-
-Classes:
-
-    Pickler
-    Unpickler
-
-Functions:
-
-    dump(object, file)
-    dumps(object) -> string
-    load(file) -> object
-    loads(string) -> object
-
-Misc variables:
-
-    __version__
-    format_version
-    compatible_formats
-
-"""
-
-__version__ = "$Revision$"       # Code version
-
-from types import *
-from copy_reg import dispatch_table
-from copy_reg import _extension_registry, _inverted_registry, _extension_cache
-import marshal
-import sys
-import struct
-import re
-
-__all__ = ["PickleError", "PicklingError", "UnpicklingError", "Pickler",
-           "Unpickler", "dump", "dumps", "load", "loads"]
-
-# These are purely informational; no code uses these.
-format_version = "2.0"                  # File format version we write
-compatible_formats = ["1.0",            # Original protocol 0
-                      "1.1",            # Protocol 0 with INST added
-                      "1.2",            # Original protocol 1
-                      "1.3",            # Protocol 1 with BINFLOAT added
-                      "2.0",            # Protocol 2
-                      ]                 # Old format versions we can read
-
-# Keep in synch with cPickle.  This is the highest protocol number we
-# know how to read.
-HIGHEST_PROTOCOL = 2
-
-# Why use struct.pack() for pickling but marshal.loads() for
-# unpickling?  struct.pack() is 40% faster than marshal.dumps(), but
-# marshal.loads() is twice as fast as struct.unpack()!
-mloads = marshal.loads
-
-class PickleError(Exception):
-    """A common base class for the other pickling exceptions."""
-    pass
-
-class PicklingError(PickleError):
-    """This exception is raised when an unpicklable object is passed to the
-    dump() method.
-
-    """
-    pass
-
-class UnpicklingError(PickleError):
-    """This exception is raised when there is a problem unpickling an object,
-    such as a security violation.
-
-    Note that other exceptions may also be raised during unpickling, including
-    (but not necessarily limited to) AttributeError, EOFError, ImportError,
-    and IndexError.
-
-    """
-    pass
-
-# An instance of _Stop is raised by Unpickler.load_stop() in response to
-# the STOP opcode, passing the object that is the result of unpickling.
-class _Stop(Exception):
-    def __init__(self, value):
-        self.value = value
-
-# Jython has PyStringMap; it's a dict subclass with string keys
-try:
-    from org.python.core import PyStringMap
-except ImportError:
-    PyStringMap = None
-
-# UnicodeType may or may not be exported (normally imported from types)
-try:
-    UnicodeType
-except NameError:
-    UnicodeType = None
-
-# Pickle opcodes.  See pickletools.py for extensive docs.  The listing
-# here is in kind-of alphabetical order of 1-character pickle code.
-# pickletools groups them by purpose.
-
-MARK            = '('   # push special markobject on stack
-STOP            = '.'   # every pickle ends with STOP
-POP             = '0'   # discard topmost stack item
-POP_MARK        = '1'   # discard stack top through topmost markobject
-DUP             = '2'   # duplicate top stack item
-FLOAT           = 'F'   # push float object; decimal string argument
-INT             = 'I'   # push integer or bool; decimal string argument
-BININT          = 'J'   # push four-byte signed int
-BININT1         = 'K'   # push 1-byte unsigned int
-LONG            = 'L'   # push long; decimal string argument
-BININT2         = 'M'   # push 2-byte unsigned int
-NONE            = 'N'   # push None
-PERSID          = 'P'   # push persistent object; id is taken from string arg
-BINPERSID       = 'Q'   #  "       "         "  ;  "  "   "     "  stack
-REDUCE          = 'R'   # apply callable to argtuple, both on stack
-STRING          = 'S'   # push string; NL-terminated string argument
-BINSTRING       = 'T'   # push string; counted binary string argument
-SHORT_BINSTRING = 'U'   #  "     "   ;    "      "       "      " < 256 bytes
-UNICODE         = 'V'   # push Unicode string; raw-unicode-escaped'd argument
-BINUNICODE      = 'X'   #   "     "       "  ; counted UTF-8 string argument
-APPEND          = 'a'   # append stack top to list below it
-BUILD           = 'b'   # call __setstate__ or __dict__.update()
-GLOBAL          = 'c'   # push self.find_class(modname, name); 2 string args
-DICT            = 'd'   # build a dict from stack items
-EMPTY_DICT      = '}'   # push empty dict
-APPENDS         = 'e'   # extend list on stack by topmost stack slice
-GET             = 'g'   # push item from memo on stack; index is string arg
-BINGET          = 'h'   #   "    "    "    "   "   "  ;   "    " 1-byte arg
-INST            = 'i'   # build & push class instance
-LONG_BINGET     = 'j'   # push item from memo on stack; index is 4-byte arg
-LIST            = 'l'   # build list from topmost stack items
-EMPTY_LIST      = ']'   # push empty list
-OBJ             = 'o'   # build & push class instance
-PUT             = 'p'   # store stack top in memo; index is string arg
-BINPUT          = 'q'   #   "     "    "   "   " ;   "    " 1-byte arg
-LONG_BINPUT     = 'r'   #   "     "    "   "   " ;   "    " 4-byte arg
-SETITEM         = 's'   # add key+value pair to dict
-TUPLE           = 't'   # build tuple from topmost stack items
-EMPTY_TUPLE     = ')'   # push empty tuple
-SETITEMS        = 'u'   # modify dict by adding topmost key+value pairs
-BINFLOAT        = 'G'   # push float; arg is 8-byte float encoding
-
-TRUE            = 'I01\n'  # not an opcode; see INT docs in pickletools.py
-FALSE           = 'I00\n'  # not an opcode; see INT docs in pickletools.py
-
-# Protocol 2
-
-PROTO           = '\x80'  # identify pickle protocol
-NEWOBJ          = '\x81'  # build object by applying cls.__new__ to argtuple
-EXT1            = '\x82'  # push object from extension registry; 1-byte index
-EXT2            = '\x83'  # ditto, but 2-byte index
-EXT4            = '\x84'  # ditto, but 4-byte index
-TUPLE1          = '\x85'  # build 1-tuple from stack top
-TUPLE2          = '\x86'  # build 2-tuple from two topmost stack items
-TUPLE3          = '\x87'  # build 3-tuple from three topmost stack items
-NEWTRUE         = '\x88'  # push True
-NEWFALSE        = '\x89'  # push False
-LONG1           = '\x8a'  # push long from < 256 bytes
-LONG4           = '\x8b'  # push really big long
-
-_tuplesize2code = [EMPTY_TUPLE, TUPLE1, TUPLE2, TUPLE3]
-
-
-__all__.extend([x for x in dir() if re.match("[A-Z][A-Z0-9_]+$",x)])
-del x
-
-
-# Pickling machinery
-
-class Pickler:
-
-    def __init__(self, file, protocol=None):
-        """This takes a file-like object for writing a pickle data stream.
-
-        The optional protocol argument tells the pickler to use the
-        given protocol; supported protocols are 0, 1, 2.  The default
-        protocol is 0, to be backwards compatible.  (Protocol 0 is the
-        only protocol that can be written to a file opened in text
-        mode and read back successfully.  When using a protocol higher
-        than 0, make sure the file is opened in binary mode, both when
-        pickling and unpickling.)
-
-        Protocol 1 is more efficient than protocol 0; protocol 2 is
-        more efficient than protocol 1.
-
-        Specifying a negative protocol version selects the highest
-        protocol version supported.  The higher the protocol used, the
-        more recent the version of Python needed to read the pickle
-        produced.
-
-        The file parameter must have a write() method that accepts a single
-        string argument.  It can thus be an open file object, a StringIO
-        object, or any other custom object that meets this interface.
-
-        """
-        if protocol is None:
-            protocol = 0
-        if protocol < 0:
-            protocol = HIGHEST_PROTOCOL
-        elif not 0 <= protocol <= HIGHEST_PROTOCOL:
-            raise ValueError("pickle protocol must be <= %d" % HIGHEST_PROTOCOL)
-        self.write = file.write
-        self.memo = {}
-        self.proto = int(protocol)
-        self.bin = protocol >= 1
-        self.fast = 0
-
-    def clear_memo(self):
-        """Clears the pickler's "memo".
-
-        The memo is the data structure that remembers which objects the
-        pickler has already seen, so that shared or recursive objects are
-        pickled by reference and not by value.  This method is useful when
-        re-using picklers.
-
-        """
-        self.memo.clear()
-
-    def dump(self, obj):
-        """Write a pickled representation of obj to the open file."""
-        if self.proto >= 2:
-            self.write(PROTO + chr(self.proto))
-        self.save(obj)
-        self.write(STOP)
-
-    def memoize(self, obj):
-        """Store an object in the memo."""
-
-        # The Pickler memo is a dictionary mapping object ids to 2-tuples
-        # that contain the Unpickler memo key and the object being memoized.
-        # The memo key is written to the pickle and will become
-        # the key in the Unpickler's memo.  The object is stored in the
-        # Pickler memo so that transient objects are kept alive during
-        # pickling.
-
-        # The use of the Unpickler memo length as the memo key is just a
-        # convention.  The only requirement is that the memo values be unique.
-        # But there appears no advantage to any other scheme, and this
-        # scheme allows the Unpickler memo to be implemented as a plain (but
-        # growable) array, indexed by memo key.
-        if self.fast:
-            return
-        assert id(obj) not in self.memo
-        memo_len = len(self.memo)
-        self.write(self.put(memo_len))
-        self.memo[id(obj)] = memo_len, obj
-
-    # Return a PUT (BINPUT, LONG_BINPUT) opcode string, with argument i.
-    def put(self, i, pack=struct.pack):
-        if self.bin:
-            if i < 256:
-                return BINPUT + chr(i)
-            else:
-                return LONG_BINPUT + pack("<i", i)
-
-        return PUT + repr(i) + '\n'
-
-    # Return a GET (BINGET, LONG_BINGET) opcode string, with argument i.
-    def get(self, i, pack=struct.pack):
-        if self.bin:
-            if i < 256:
-                return BINGET + chr(i)
-            else:
-                return LONG_BINGET + pack("<i", i)
-
-        return GET + repr(i) + '\n'
-
-    def save(self, obj):
-        # Check for persistent id (defined by a subclass)
-        pid = self.persistent_id(obj)
-        if pid:
-            self.save_pers(pid)
-            return
-
-        # Check the memo
-        x = self.memo.get(id(obj))
-        if x:
-            self.write(self.get(x[0]))
-            return
-
-        # Check the type dispatch table
-        t = type(obj)
-        f = self.dispatch.get(t)
-        if f:
-            f(self, obj) # Call unbound method with explicit self
-            return
-
-        # Check for a class with a custom metaclass; treat as regular class
-        try:
-            issc = issubclass(t, TypeType)
-        except TypeError: # t is not a class (old Boost; see SF #502085)
-            issc = 0
-        if issc:
-            self.save_global(obj)
-            return
-
-        # Check copy_reg.dispatch_table
-        reduce = dispatch_table.get(t)
-        if reduce:
-            rv = reduce(obj)
-        else:
-            # Check for a __reduce_ex__ method, fall back to __reduce__
-            reduce = getattr(obj, "__reduce_ex__", None)
-            if reduce:
-                rv = reduce(self.proto)
-            else:
-                reduce = getattr(obj, "__reduce__", None)
-                if reduce:
-                    rv = reduce()
-                else:
-                    raise PicklingError("Can't pickle %r object: %r" %
-                                        (t.__name__, obj))
-
-        # Check for string returned by reduce(), meaning "save as global"
-        if type(rv) is StringType:
-            self.save_global(obj, rv)
-            return
-
-        # Assert that reduce() returned a tuple
-        if type(rv) is not TupleType:
-            raise PicklingError("%s must return string or tuple" % reduce)
-
-        # Assert that it returned an appropriately sized tuple
-        l = len(rv)
-        if not (2 <= l <= 5):
-            raise PicklingError("Tuple returned by %s must have "
-                                "two to five elements" % reduce)
-
-        # Save the reduce() output and finally memoize the object
-        self.save_reduce(obj=obj, *rv)
-
-    def persistent_id(self, obj):
-        # This exists so a subclass can override it
-        return None
-
-    def save_pers(self, pid):
-        # Save a persistent id reference
-        if self.bin:
-            self.save(pid)
-            self.write(BINPERSID)
-        else:
-            self.write(PERSID + str(pid) + '\n')
-
-    def save_reduce(self, func, args, state=None,
-                    listitems=None, dictitems=None, obj=None):
-        # This API is called by some subclasses
-
-        # Assert that args is a tuple or None
-        if not isinstance(args, TupleType):
-            raise PicklingError("args from reduce() should be a tuple")
-
-        # Assert that func is callable
-        if not hasattr(func, '__call__'):
-            raise PicklingError("func from reduce should be callable")
-
-        save = self.save
-        write = self.write
-
-        # Protocol 2 special case: if func's name is __newobj__, use NEWOBJ
-        if self.proto >= 2 and getattr(func, "__name__", "") == "__newobj__":
-            # A __reduce__ implementation can direct protocol 2 to
-            # use the more efficient NEWOBJ opcode, while still
-            # allowing protocol 0 and 1 to work normally.  For this to
-            # work, the function returned by __reduce__ should be
-            # called __newobj__, and its first argument should be a
-            # new-style class.  The implementation for __newobj__
-            # should be as follows, although pickle has no way to
-            # verify this:
-            #
-            # def __newobj__(cls, *args):
-            #     return cls.__new__(cls, *args)
-            #
-            # Protocols 0 and 1 will pickle a reference to __newobj__,
-            # while protocol 2 (and above) will pickle a reference to
-            # cls, the remaining args tuple, and the NEWOBJ code,
-            # which calls cls.__new__(cls, *args) at unpickling time
-            # (see load_newobj below).  If __reduce__ returns a
-            # three-tuple, the state from the third tuple item will be
-            # pickled regardless of the protocol, calling __setstate__
-            # at unpickling time (see load_build below).
-            #
-            # Note that no standard __newobj__ implementation exists;
-            # you have to provide your own.  This is to enforce
-            # compatibility with Python 2.2 (pickles written using
-            # protocol 0 or 1 in Python 2.3 should be unpicklable by
-            # Python 2.2).
-            cls = args[0]
-            if not hasattr(cls, "__new__"):
-                raise PicklingError(
-                    "args[0] from __newobj__ args has no __new__")
-            if obj is not None and cls is not obj.__class__:
-                raise PicklingError(
-                    "args[0] from __newobj__ args has the wrong class")
-            args = args[1:]
-            save(cls)
-            save(args)
-            write(NEWOBJ)
-        else:
-            save(func)
-            save(args)
-            write(REDUCE)
-
-        if obj is not None:
-            self.memoize(obj)
-
-        # More new special cases (that work with older protocols as
-        # well): when __reduce__ returns a tuple with 4 or 5 items,
-        # the 4th and 5th item should be iterators that provide list
-        # items and dict items (as (key, value) tuples), or None.
-
-        if listitems is not None:
-            self._batch_appends(listitems)
-
-        if dictitems is not None:
-            self._batch_setitems(dictitems)
-
-        if state is not None:
-            save(state)
-            write(BUILD)
-
-    # Methods below this point are dispatched through the dispatch table
-
-    dispatch = {}
-
-    def save_none(self, obj):
-        self.write(NONE)
-    dispatch[NoneType] = save_none
-
-    def save_bool(self, obj):
-        if self.proto >= 2:
-            self.write(obj and NEWTRUE or NEWFALSE)
-        else:
-            self.write(obj and TRUE or FALSE)
-    dispatch[bool] = save_bool
-
-    def save_int(self, obj, pack=struct.pack):
-        if self.bin:
-            # If the int is small enough to fit in a signed 4-byte 2's-comp
-            # format, we can store it more efficiently than the general
-            # case.
-            # First one- and two-byte unsigned ints:
-            if obj >= 0:
-                if obj <= 0xff:
-                    self.write(BININT1 + chr(obj))
-                    return
-                if obj <= 0xffff:
-                    self.write("%c%c%c" % (BININT2, obj&0xff, obj>>8))
-                    return
-            # Next check for 4-byte signed ints:
-            high_bits = obj >> 31  # note that Python shift sign-extends
-            if high_bits == 0 or high_bits == -1:
-                # All high bits are copies of bit 2**31, so the value
-                # fits in a 4-byte signed int.
-                self.write(BININT + pack("<i", obj))
-                return
-        # Text pickle, or int too big to fit in signed 4-byte format.
-        self.write(INT + repr(obj) + '\n')
-    dispatch[IntType] = save_int
-
-    def save_long(self, obj, pack=struct.pack):
-        if self.proto >= 2:
-            bytes = encode_long(obj)
-            n = len(bytes)
-            if n < 256:
-                self.write(LONG1 + chr(n) + bytes)
-            else:
-                self.write(LONG4 + pack("<i", n) + bytes)
-            return
-        self.write(LONG + repr(obj) + '\n')
-    dispatch[LongType] = save_long
-
-    def save_float(self, obj, pack=struct.pack):
-        if self.bin:
-            self.write(BINFLOAT + pack('>d', obj))
-        else:
-            self.write(FLOAT + repr(obj) + '\n')
-    dispatch[FloatType] = save_float
-
-    def save_string(self, obj, pack=struct.pack):
-        if self.bin:
-            n = len(obj)
-            if n < 256:
-                self.write(SHORT_BINSTRING + chr(n) + obj)
-            else:
-                self.write(BINSTRING + pack("<i", n) + obj)
-        else:
-            self.write(STRING + repr(obj) + '\n')
-        self.memoize(obj)
-    dispatch[StringType] = save_string
-
-    def save_unicode(self, obj, pack=struct.pack):
-        if self.bin:
-            encoding = obj.encode('utf-8')
-            n = len(encoding)
-            self.write(BINUNICODE + pack("<i", n) + encoding)
-        else:
-            obj = obj.replace("\\", "\\u005c")
-            obj = obj.replace("\n", "\\u000a")
-            self.write(UNICODE + obj.encode('raw-unicode-escape') + '\n')
-        self.memoize(obj)
-    dispatch[UnicodeType] = save_unicode
-
-    if StringType is UnicodeType:
-        # This is true for Jython
-        def save_string(self, obj, pack=struct.pack):
-            unicode = obj.isunicode()
-
-            if self.bin:
-                if unicode:
-                    obj = obj.encode("utf-8")
-                l = len(obj)
-                if l < 256 and not unicode:
-                    self.write(SHORT_BINSTRING + chr(l) + obj)
-                else:
-                    s = pack("<i", l)
-                    if unicode:
-                        self.write(BINUNICODE + s + obj)
-                    else:
-                        self.write(BINSTRING + s + obj)
-            else:
-                if unicode:
-                    obj = obj.replace("\\", "\\u005c")
-                    obj = obj.replace("\n", "\\u000a")
-                    obj = obj.encode('raw-unicode-escape')
-                    self.write(UNICODE + obj + '\n')
-                else:
-                    self.write(STRING + repr(obj) + '\n')
-            self.memoize(obj)
-        dispatch[StringType] = save_string
-
-    def save_tuple(self, obj):
-        write = self.write
-        proto = self.proto
-
-        n = len(obj)
-        if n == 0:
-            if proto:
-                write(EMPTY_TUPLE)
-            else:
-                write(MARK + TUPLE)
-            return
-
-        save = self.save
-        memo = self.memo
-        if n <= 3 and proto >= 2:
-            for element in obj:
-                save(element)
-            # Subtle.  Same as in the big comment below.
-            if id(obj) in memo:
-                get = self.get(memo[id(obj)][0])
-                write(POP * n + get)
-            else:
-                write(_tuplesize2code[n])
-                self.memoize(obj)
-            return
-
-        # proto 0 or proto 1 and tuple isn't empty, or proto > 1 and tuple
-        # has more than 3 elements.
-        write(MARK)
-        for element in obj:
-            save(element)
-
-        if id(obj) in memo:
-            # Subtle.  d was not in memo when we entered save_tuple(), so
-            # the process of saving the tuple's elements must have saved
-            # the tuple itself:  the tuple is recursive.  The proper action
-            # now is to throw away everything we put on the stack, and
-            # simply GET the tuple (it's already constructed).  This check
-            # could have been done in the "for element" loop instead, but
-            # recursive tuples are a rare thing.
-            get = self.get(memo[id(obj)][0])
-            if proto:
-                write(POP_MARK + get)
-            else:   # proto 0 -- POP_MARK not available
-                write(POP * (n+1) + get)
-            return
-
-        # No recursion.
-        self.write(TUPLE)
-        self.memoize(obj)
-
-    dispatch[TupleType] = save_tuple
-
-    # save_empty_tuple() isn't used by anything in Python 2.3.  However, I
-    # found a Pickler subclass in Zope3 that calls it, so it's not harmless
-    # to remove it.
-    def save_empty_tuple(self, obj):
-        self.write(EMPTY_TUPLE)
-
-    def save_list(self, obj):
-        write = self.write
-
-        if self.bin:
-            write(EMPTY_LIST)
-        else:   # proto 0 -- can't use EMPTY_LIST
-            write(MARK + LIST)
-
-        self.memoize(obj)
-        self._batch_appends(iter(obj))
-
-    dispatch[ListType] = save_list
-
-    # Keep in synch with cPickle's BATCHSIZE.  Nothing will break if it gets
-    # out of synch, though.
-    _BATCHSIZE = 1000
-
-    def _batch_appends(self, items):
-        # Helper to batch up APPENDS sequences
-        save = self.save
-        write = self.write
-
-        if not self.bin:
-            for x in items:
-                save(x)
-                write(APPEND)
-            return
-
-        r = xrange(self._BATCHSIZE)
-        while items is not None:
-            tmp = []
-            for i in r:
-                try:
-                    x = items.next()
-                    tmp.append(x)
-                except StopIteration:
-                    items = None
-                    break
-            n = len(tmp)
-            if n > 1:
-                write(MARK)
-                for x in tmp:
-                    save(x)
-                write(APPENDS)
-            elif n:
-                save(tmp[0])
-                write(APPEND)
-            # else tmp is empty, and we're done
-
-    def save_dict(self, obj):
-        write = self.write
-
-        if self.bin:
-            write(EMPTY_DICT)
-        else:   # proto 0 -- can't use EMPTY_DICT
-            write(MARK + DICT)
-
-        self.memoize(obj)
-        self._batch_setitems(obj.iteritems())
-
-    dispatch[DictionaryType] = save_dict
-    if not PyStringMap is None:
-        dispatch[PyStringMap] = save_dict
-
-    def _batch_setitems(self, items):
-        # Helper to batch up SETITEMS sequences; proto >= 1 only
-        save = self.save
-        write = self.write
-
-        if not self.bin:
-            for k, v in items:
-                save(k)
-                save(v)
-                write(SETITEM)
-            return
-
-        r = xrange(self._BATCHSIZE)
-        while items is not None:
-            tmp = []
-            for i in r:
-                try:
-                    tmp.append(items.next())
-                except StopIteration:
-                    items = None
-                    break
-            n = len(tmp)
-            if n > 1:
-                write(MARK)
-                for k, v in tmp:
-                    save(k)
-                    save(v)
-                write(SETITEMS)
-            elif n:
-                k, v = tmp[0]
-                save(k)
-                save(v)
-                write(SETITEM)
-            # else tmp is empty, and we're done
-
-    def save_inst(self, obj):
-        cls = obj.__class__
-
-        memo  = self.memo
-        write = self.write
-        save  = self.save
-
-        if hasattr(obj, '__getinitargs__'):
-            args = obj.__getinitargs__()
-            len(args) # XXX Assert it's a sequence
-            _keep_alive(args, memo)
-        else:
-            args = ()
-
-        write(MARK)
-
-        if self.bin:
-            save(cls)
-            for arg in args:
-                save(arg)
-            write(OBJ)
-        else:
-            for arg in args:
-                save(arg)
-            write(INST + cls.__module__ + '\n' + cls.__name__ + '\n')
-
-        self.memoize(obj)
-
-        try:
-            getstate = obj.__getstate__
-        except AttributeError:
-            stuff = obj.__dict__
-        else:
-            stuff = getstate()
-            _keep_alive(stuff, memo)
-        save(stuff)
-        write(BUILD)
-
-    dispatch[InstanceType] = save_inst
-
-    def save_global(self, obj, name=None, pack=struct.pack):
-        write = self.write
-        memo = self.memo
-
-        if name is None:
-            name = obj.__name__
-
-        module = getattr(obj, "__module__", None)
-        if module is None:
-            module = whichmodule(obj, name)
-
-        try:
-            __import__(module)
-            mod = sys.modules[module]
-            klass = getattr(mod, name)
-        except (ImportError, KeyError, AttributeError):
-            raise PicklingError(
-                "Can't pickle %r: it's not found as %s.%s" %
-                (obj, module, name))
-        else:
-            if klass is not obj:
-                raise PicklingError(
-                    "Can't pickle %r: it's not the same object as %s.%s" %
-                    (obj, module, name))
-
-        if self.proto >= 2:
-            code = _extension_registry.get((module, name))
-            if code:
-                assert code > 0
-                if code <= 0xff:
-                    write(EXT1 + chr(code))
-                elif code <= 0xffff:
-                    write("%c%c%c" % (EXT2, code&0xff, code>>8))
-                else:
-                    write(EXT4 + pack("<i", code))
-                return
-
-        write(GLOBAL + module + '\n' + name + '\n')
-        self.memoize(obj)
-
-    dispatch[ClassType] = save_global
-    dispatch[FunctionType] = save_global
-    dispatch[BuiltinFunctionType] = save_global
-    dispatch[TypeType] = save_global
-
-# Pickling helpers
-
-def _keep_alive(x, memo):
-    """Keeps a reference to the object x in the memo.
-
-    Because we remember objects by their id, we have
-    to assure that possibly temporary objects are kept
-    alive by referencing them.
-    We store a reference at the id of the memo, which should
-    normally not be used unless someone tries to deepcopy
-    the memo itself...
-    """
-    try:
-        memo[id(memo)].append(x)
-    except KeyError:
-        # aha, this is the first one :-)
-        memo[id(memo)]=[x]
-
-
-# A cache for whichmodule(), mapping a function object to the name of
-# the module in which the function was found.
-
-classmap = {} # called classmap for backwards compatibility
-
-def whichmodule(func, funcname):
-    """Figure out the module in which a function occurs.
-
-    Search sys.modules for the module.
-    Cache in classmap.
-    Return a module name.
-    If the function cannot be found, return "__main__".
-    """
-    # Python functions should always get an __module__ from their globals.
-    mod = getattr(func, "__module__", None)
-    if mod is not None:
-        return mod
-    if func in classmap:
-        return classmap[func]
-
-    for name, module in sys.modules.items():
-        if module is None:
-            continue # skip dummy package entries
-        if name != '__main__' and getattr(module, funcname, None) is func:
-            break
-    else:
-        name = '__main__'
-    classmap[func] = name
-    return name
-
-
-# Unpickling machinery
-
-class Unpickler:
-
-    def __init__(self, file):
-        """This takes a file-like object for reading a pickle data stream.
-
-        The protocol version of the pickle is detected automatically, so no
-        proto argument is needed.
-
-        The file-like object must have two methods, a read() method that
-        takes an integer argument, and a readline() method that requires no
-        arguments.  Both methods should return a string.  Thus file-like
-        object can be a file object opened for reading, a StringIO object,
-        or any other custom object that meets this interface.
-        """
-        self.readline = file.readline
-        self.read = file.read
-        self.memo = {}
-
-    def load(self):
-        """Read a pickled object representation from the open file.
-
-        Return the reconstituted object hierarchy specified in the file.
-        """
-        self.mark = object() # any new unique object
-        self.stack = []
-        self.append = self.stack.append
-        read = self.read
-        dispatch = self.dispatch
-        try:
-            while 1:
-                key = read(1)
-                dispatch[key](self)
-        except _Stop, stopinst:
-            return stopinst.value
-
-    # Return largest index k such that self.stack[k] is self.mark.
-    # If the stack doesn't contain a mark, eventually raises IndexError.
-    # This could be sped by maintaining another stack, of indices at which
-    # the mark appears.  For that matter, the latter stack would suffice,
-    # and we wouldn't need to push mark objects on self.stack at all.
-    # Doing so is probably a good thing, though, since if the pickle is
-    # corrupt (or hostile) we may get a clue from finding self.mark embedded
-    # in unpickled objects.
-    def marker(self):
-        stack = self.stack
-        mark = self.mark
-        k = len(stack)-1
-        while stack[k] is not mark: k = k-1
-        return k
-
-    dispatch = {}
-
-    def load_eof(self):
-        raise EOFError
-    dispatch[''] = load_eof
-
-    def load_proto(self):
-        proto = ord(self.read(1))
-        if not 0 <= proto <= 2:
-            raise ValueError, "unsupported pickle protocol: %d" % proto
-    dispatch[PROTO] = load_proto
-
-    def load_persid(self):
-        pid = self.readline()[:-1]
-        self.append(self.persistent_load(pid))
-    dispatch[PERSID] = load_persid
-
-    def load_binpersid(self):
-        pid = self.stack.pop()
-        self.append(self.persistent_load(pid))
-    dispatch[BINPERSID] = load_binpersid
-
-    def load_none(self):
-        self.append(None)
-    dispatch[NONE] = load_none
-
-    def load_false(self):
-        self.append(False)
-    dispatch[NEWFALSE] = load_false
-
-    def load_true(self):
-        self.append(True)
-    dispatch[NEWTRUE] = load_true
-
-    def load_int(self):
-        data = self.readline()
-        if data == FALSE[1:]:
-            val = False
-        elif data == TRUE[1:]:
-            val = True
-        else:
-            try:
-                val = int(data)
-            except ValueError:
-                val = long(data)
-        self.append(val)
-    dispatch[INT] = load_int
-
-    def load_binint(self):
-        self.append(mloads('i' + self.read(4)))
-    dispatch[BININT] = load_binint
-
-    def load_binint1(self):
-        self.append(ord(self.read(1)))
-    dispatch[BININT1] = load_binint1
-
-    def load_binint2(self):
-        self.append(mloads('i' + self.read(2) + '\000\000'))
-    dispatch[BININT2] = load_binint2
-
-    def load_long(self):
-        self.append(long(self.readline()[:-1], 0))
-    dispatch[LONG] = load_long
-
-    def load_long1(self):
-        n = ord(self.read(1))
-        bytes = self.read(n)
-        self.append(decode_long(bytes))
-    dispatch[LONG1] = load_long1
-
-    def load_long4(self):
-        n = mloads('i' + self.read(4))
-        bytes = self.read(n)
-        self.append(decode_long(bytes))
-    dispatch[LONG4] = load_long4
-
-    def load_float(self):
-        self.append(float(self.readline()[:-1]))
-    dispatch[FLOAT] = load_float
-
-    def load_binfloat(self, unpack=struct.unpack):
-        self.append(unpack('>d', self.read(8))[0])
-    dispatch[BINFLOAT] = load_binfloat
-
-    def load_string(self):
-        rep = self.readline()[:-1]
-        for q in "\"'": # double or single quote
-            if rep.startswith(q):
-                if not rep.endswith(q):
-                    raise ValueError, "insecure string pickle"
-                rep = rep[len(q):-len(q)]
-                break
-        else:
-            raise ValueError, "insecure string pickle"
-        self.append(rep.decode("string-escape"))
-    dispatch[STRING] = load_string
-
-    def load_binstring(self):
-        len = mloads('i' + self.read(4))
-        self.append(self.read(len))
-    dispatch[BINSTRING] = load_binstring
-
-    def load_unicode(self):
-        self.append(unicode(self.readline()[:-1],'raw-unicode-escape'))
-    dispatch[UNICODE] = load_unicode
-
-    def load_binunicode(self):
-        len = mloads('i' + self.read(4))
-        self.append(unicode(self.read(len),'utf-8'))
-    dispatch[BINUNICODE] = load_binunicode
-
-    def load_short_binstring(self):
-        len = ord(self.read(1))
-        self.append(self.read(len))
-    dispatch[SHORT_BINSTRING] = load_short_binstring
-
-    def load_tuple(self):
-        k = self.marker()
-        self.stack[k:] = [tuple(self.stack[k+1:])]
-    dispatch[TUPLE] = load_tuple
-
-    def load_empty_tuple(self):
-        self.stack.append(())
-    dispatch[EMPTY_TUPLE] = load_empty_tuple
-
-    def load_tuple1(self):
-        self.stack[-1] = (self.stack[-1],)
-    dispatch[TUPLE1] = load_tuple1
-
-    def load_tuple2(self):
-        self.stack[-2:] = [(self.stack[-2], self.stack[-1])]
-    dispatch[TUPLE2] = load_tuple2
-
-    def load_tuple3(self):
-        self.stack[-3:] = [(self.stack[-3], self.stack[-2], self.stack[-1])]
-    dispatch[TUPLE3] = load_tuple3
-
-    def load_empty_list(self):
-        self.stack.append([])
-    dispatch[EMPTY_LIST] = load_empty_list
-
-    def load_empty_dictionary(self):
-        self.stack.append({})
-    dispatch[EMPTY_DICT] = load_empty_dictionary
-
-    def load_list(self):
-        k = self.marker()
-        self.stack[k:] = [self.stack[k+1:]]
-    dispatch[LIST] = load_list
-
-    def load_dict(self):
-        k = self.marker()
-        d = {}
-        items = self.stack[k+1:]
-        for i in range(0, len(items), 2):
-            key = items[i]
-            value = items[i+1]
-            d[key] = value
-        self.stack[k:] = [d]
-    dispatch[DICT] = load_dict
-
-    # INST and OBJ differ only in how they get a class object.  It's not
-    # only sensible to do the rest in a common routine, the two routines
-    # previously diverged and grew different bugs.
-    # klass is the class to instantiate, and k points to the topmost mark
-    # object, following which are the arguments for klass.__init__.
-    def _instantiate(self, klass, k):
-        args = tuple(self.stack[k+1:])
-        del self.stack[k:]
-        instantiated = 0
-        if (not args and
-                type(klass) is ClassType and
-                not hasattr(klass, "__getinitargs__")):
-            try:
-                value = _EmptyClass()
-                value.__class__ = klass
-                instantiated = 1
-            except RuntimeError:
-                # In restricted execution, assignment to inst.__class__ is
-                # prohibited
-                pass
-        if not instantiated:
-            try:
-                value = klass(*args)
-            except TypeError, err:
-                raise TypeError, "in constructor for %s: %s" % (
-                    klass.__name__, str(err)), sys.exc_info()[2]
-        self.append(value)
-
-    def load_inst(self):
-        module = self.readline()[:-1]
-        name = self.readline()[:-1]
-        klass = self.find_class(module, name)
-        self._instantiate(klass, self.marker())
-    dispatch[INST] = load_inst
-
-    def load_obj(self):
-        # Stack is ... markobject classobject arg1 arg2 ...
-        k = self.marker()
-        klass = self.stack.pop(k+1)
-        self._instantiate(klass, k)
-    dispatch[OBJ] = load_obj
-
-    def load_newobj(self):
-        args = self.stack.pop()
-        cls = self.stack[-1]
-        obj = cls.__new__(cls, *args)
-        self.stack[-1] = obj
-    dispatch[NEWOBJ] = load_newobj
-
-    def load_global(self):
-        module = self.readline()[:-1]
-        name = self.readline()[:-1]
-        klass = self.find_class(module, name)
-        self.append(klass)
-    dispatch[GLOBAL] = load_global
-
-    def load_ext1(self):
-        code = ord(self.read(1))
-        self.get_extension(code)
-    dispatch[EXT1] = load_ext1
-
-    def load_ext2(self):
-        code = mloads('i' + self.read(2) + '\000\000')
-        self.get_extension(code)
-    dispatch[EXT2] = load_ext2
-
-    def load_ext4(self):
-        code = mloads('i' + self.read(4))
-        self.get_extension(code)
-    dispatch[EXT4] = load_ext4
-
-    def get_extension(self, code):
-        nil = []
-        obj = _extension_cache.get(code, nil)
-        if obj is not nil:
-            self.append(obj)
-            return
-        key = _inverted_registry.get(code)
-        if not key:
-            raise ValueError("unregistered extension code %d" % code)
-        obj = self.find_class(*key)
-        _extension_cache[code] = obj
-        self.append(obj)
-
-    def find_class(self, module, name):
-        # Subclasses may override this
-        __import__(module)
-        mod = sys.modules[module]
-        klass = getattr(mod, name)
-        return klass
-
-    def load_reduce(self):
-        stack = self.stack
-        args = stack.pop()
-        func = stack[-1]
-        value = func(*args)
-        stack[-1] = value
-    dispatch[REDUCE] = load_reduce
-
-    def load_pop(self):
-        del self.stack[-1]
-    dispatch[POP] = load_pop
-
-    def load_pop_mark(self):
-        k = self.marker()
-        del self.stack[k:]
-    dispatch[POP_MARK] = load_pop_mark
-
-    def load_dup(self):
-        self.append(self.stack[-1])
-    dispatch[DUP] = load_dup
-
-    def load_get(self):
-        self.append(self.memo[self.readline()[:-1]])
-    dispatch[GET] = load_get
-
-    def load_binget(self):
-        i = ord(self.read(1))
-        self.append(self.memo[repr(i)])
-    dispatch[BINGET] = load_binget
-
-    def load_long_binget(self):
-        i = mloads('i' + self.read(4))
-        self.append(self.memo[repr(i)])
-    dispatch[LONG_BINGET] = load_long_binget
-
-    def load_put(self):
-        self.memo[self.readline()[:-1]] = self.stack[-1]
-    dispatch[PUT] = load_put
-
-    def load_binput(self):
-        i = ord(self.read(1))
-        self.memo[repr(i)] = self.stack[-1]
-    dispatch[BINPUT] = load_binput
-
-    def load_long_binput(self):
-        i = mloads('i' + self.read(4))
-        self.memo[repr(i)] = self.stack[-1]
-    dispatch[LONG_BINPUT] = load_long_binput
-
-    def load_append(self):
-        stack = self.stack
-        value = stack.pop()
-        list = stack[-1]
-        list.append(value)
-    dispatch[APPEND] = load_append
-
-    def load_appends(self):
-        stack = self.stack
-        mark = self.marker()
-        list = stack[mark - 1]
-        list.extend(stack[mark + 1:])
-        del stack[mark:]
-    dispatch[APPENDS] = load_appends
-
-    def load_setitem(self):
-        stack = self.stack
-        value = stack.pop()
-        key = stack.pop()
-        dict = stack[-1]
-        dict[key] = value
-    dispatch[SETITEM] = load_setitem
-
-    def load_setitems(self):
-        stack = self.stack
-        mark = self.marker()
-        dict = stack[mark - 1]
-        for i in range(mark + 1, len(stack), 2):
-            dict[stack[i]] = stack[i + 1]
-
-        del stack[mark:]
-    dispatch[SETITEMS] = load_setitems
-
-    def load_build(self):
-        stack = self.stack
-        state = stack.pop()
-        inst = stack[-1]
-        setstate = getattr(inst, "__setstate__", None)
-        if setstate:
-            setstate(state)
-            return
-        slotstate = None
-        if isinstance(state, tuple) and len(state) == 2:
-            state, slotstate = state
-        if state:
-            try:
-                d = inst.__dict__
-                try:
-                    for k, v in state.iteritems():
-                        d[intern(k)] = v
-                # keys in state don't have to be strings
-                # don't blow up, but don't go out of our way
-                except TypeError:
-                    d.update(state)
-
-            except RuntimeError:
-                # XXX In restricted execution, the instance's __dict__
-                # is not accessible.  Use the old way of unpickling
-                # the instance variables.  This is a semantic
-                # difference when unpickling in restricted
-                # vs. unrestricted modes.
-                # Note, however, that cPickle has never tried to do the
-                # .update() business, and always uses
-                #     PyObject_SetItem(inst.__dict__, key, value) in a
-                # loop over state.items().
-                for k, v in state.items():
-                    setattr(inst, k, v)
-        if slotstate:
-            for k, v in slotstate.items():
-                setattr(inst, k, v)
-    dispatch[BUILD] = load_build
-
-    def load_mark(self):
-        self.append(self.mark)
-    dispatch[MARK] = load_mark
-
-    def load_stop(self):
-        value = self.stack.pop()
-        raise _Stop(value)
-    dispatch[STOP] = load_stop
-
-# Helper class for load_inst/load_obj
-
-class _EmptyClass:
-    pass
-
-# Encode/decode longs in linear time.
-
-import binascii as _binascii
-
-def encode_long(x):
-    r"""Encode a long to a two's complement little-endian binary string.
-    Note that 0L is a special case, returning an empty string, to save a
-    byte in the LONG1 pickling context.
-
-    >>> encode_long(0L)
-    ''
-    >>> encode_long(255L)
-    '\xff\x00'
-    >>> encode_long(32767L)
-    '\xff\x7f'
-    >>> encode_long(-256L)
-    '\x00\xff'
-    >>> encode_long(-32768L)
-    '\x00\x80'
-    >>> encode_long(-128L)
-    '\x80'
-    >>> encode_long(127L)
-    '\x7f'
-    >>>
-    """
-
-    if x == 0:
-        return ''
-    if x > 0:
-        ashex = hex(x)
-        assert ashex.startswith("0x")
-        njunkchars = 2 + ashex.endswith('L')
-        nibbles = len(ashex) - njunkchars
-        if nibbles & 1:
-            # need an even # of nibbles for unhexlify
-            ashex = "0x0" + ashex[2:]
-        elif int(ashex[2], 16) >= 8:
-            # "looks negative", so need a byte of sign bits
-            ashex = "0x00" + ashex[2:]
-    else:
-        # Build the 256's-complement:  (1L << nbytes) + x.  The trick is
-        # to find the number of bytes in linear time (although that should
-        # really be a constant-time task).
-        ashex = hex(-x)
-        assert ashex.startswith("0x")
-        njunkchars = 2 + ashex.endswith('L')
-        nibbles = len(ashex) - njunkchars
-        if nibbles & 1:
-            # Extend to a full byte.
-            nibbles += 1
-        nbits = nibbles * 4
-        x += 1L << nbits
-        assert x > 0
-        ashex = hex(x)
-        njunkchars = 2 + ashex.endswith('L')
-        newnibbles = len(ashex) - njunkchars
-        if newnibbles < nibbles:
-            ashex = "0x" + "0" * (nibbles - newnibbles) + ashex[2:]
-        if int(ashex[2], 16) < 8:
-            # "looks positive", so need a byte of sign bits
-            ashex = "0xff" + ashex[2:]
-
-    if ashex.endswith('L'):
-        ashex = ashex[2:-1]
-    else:
-        ashex = ashex[2:]
-    assert len(ashex) & 1 == 0, (x, ashex)
-    binary = _binascii.unhexlify(ashex)
-    return binary[::-1]
-
-def decode_long(data):
-    r"""Decode a long from a two's complement little-endian binary string.
-
-    >>> decode_long('')
-    0L
-    >>> decode_long("\xff\x00")
-    255L
-    >>> decode_long("\xff\x7f")
-    32767L
-    >>> decode_long("\x00\xff")
-    -256L
-    >>> decode_long("\x00\x80")
-    -32768L
-    >>> decode_long("\x80")
-    -128L
-    >>> decode_long("\x7f")
-    127L
-    """
-
-    nbytes = len(data)
-    if nbytes == 0:
-        return 0L
-    ashex = _binascii.hexlify(data[::-1])
-    n = long(ashex, 16) # quadratic time before Python 2.3; linear now
-    if data[-1] >= '\x80':
-        n -= 1L << (nbytes * 8)
-    return n
-
-# Shorthands
-
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-def dump(obj, file, protocol=None):
-    Pickler(file, protocol).dump(obj)
-
-def dumps(obj, protocol=None):
-    file = StringIO()
-    Pickler(file, protocol).dump(obj)
-    return file.getvalue()
-
-def load(file):
-    return Unpickler(file).load()
-
-def loads(str):
-    file = StringIO(str)
-    return Unpickler(file).load()
-
-# Doctest
-
-def _test():
-    import doctest
-    return doctest.testmod()
-
-if __name__ == "__main__":
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/pickletools.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/pickletools.py
deleted file mode 100644
index 4887f62..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/pickletools.py
+++ /dev/null
@@ -1,2274 +0,0 @@
-'''"Executable documentation" for the pickle module.
-
-Extensive comments about the pickle protocols and pickle-machine opcodes
-can be found here.  Some functions meant for external use:
-
-genops(pickle)
-   Generate all the opcodes in a pickle, as (opcode, arg, position) triples.
-
-dis(pickle, out=None, memo=None, indentlevel=4)
-   Print a symbolic disassembly of a pickle.
-'''
-
-__all__ = ['dis', 'genops', 'optimize']
-
-# Other ideas:
-#
-# - A pickle verifier:  read a pickle and check it exhaustively for
-#   well-formedness.  dis() does a lot of this already.
-#
-# - A protocol identifier:  examine a pickle and return its protocol number
-#   (== the highest .proto attr value among all the opcodes in the pickle).
-#   dis() already prints this info at the end.
-#
-# - A pickle optimizer:  for example, tuple-building code is sometimes more
-#   elaborate than necessary, catering for the possibility that the tuple
-#   is recursive.  Or lots of times a PUT is generated that's never accessed
-#   by a later GET.
-
-
-"""
-"A pickle" is a program for a virtual pickle machine (PM, but more accurately
-called an unpickling machine).  It's a sequence of opcodes, interpreted by the
-PM, building an arbitrarily complex Python object.
-
-For the most part, the PM is very simple:  there are no looping, testing, or
-conditional instructions, no arithmetic and no function calls.  Opcodes are
-executed once each, from first to last, until a STOP opcode is reached.
-
-The PM has two data areas, "the stack" and "the memo".
-
-Many opcodes push Python objects onto the stack; e.g., INT pushes a Python
-integer object on the stack, whose value is gotten from a decimal string
-literal immediately following the INT opcode in the pickle bytestream.  Other
-opcodes take Python objects off the stack.  The result of unpickling is
-whatever object is left on the stack when the final STOP opcode is executed.
-
-The memo is simply an array of objects, or it can be implemented as a dict
-mapping little integers to objects.  The memo serves as the PM's "long term
-memory", and the little integers indexing the memo are akin to variable
-names.  Some opcodes pop a stack object into the memo at a given index,
-and others push a memo object at a given index onto the stack again.
-
-At heart, that's all the PM has.  Subtleties arise for these reasons:
-
-+ Object identity.  Objects can be arbitrarily complex, and subobjects
-  may be shared (for example, the list [a, a] refers to the same object a
-  twice).  It can be vital that unpickling recreate an isomorphic object
-  graph, faithfully reproducing sharing.
-
-+ Recursive objects.  For example, after "L = []; L.append(L)", L is a
-  list, and L[0] is the same list.  This is related to the object identity
-  point, and some sequences of pickle opcodes are subtle in order to
-  get the right result in all cases.
-
-+ Things pickle doesn't know everything about.  Examples of things pickle
-  does know everything about are Python's builtin scalar and container
-  types, like ints and tuples.  They generally have opcodes dedicated to
-  them.  For things like module references and instances of user-defined
-  classes, pickle's knowledge is limited.  Historically, many enhancements
-  have been made to the pickle protocol in order to do a better (faster,
-  and/or more compact) job on those.
-
-+ Backward compatibility and micro-optimization.  As explained below,
-  pickle opcodes never go away, not even when better ways to do a thing
-  get invented.  The repertoire of the PM just keeps growing over time.
-  For example, protocol 0 had two opcodes for building Python integers (INT
-  and LONG), protocol 1 added three more for more-efficient pickling of short
-  integers, and protocol 2 added two more for more-efficient pickling of
-  long integers (before protocol 2, the only ways to pickle a Python long
-  took time quadratic in the number of digits, for both pickling and
-  unpickling).  "Opcode bloat" isn't so much a subtlety as a source of
-  wearying complication.
-
-
-Pickle protocols:
-
-For compatibility, the meaning of a pickle opcode never changes.  Instead new
-pickle opcodes get added, and each version's unpickler can handle all the
-pickle opcodes in all protocol versions to date.  So old pickles continue to
-be readable forever.  The pickler can generally be told to restrict itself to
-the subset of opcodes available under previous protocol versions too, so that
-users can create pickles under the current version readable by older
-versions.  However, a pickle does not contain its version number embedded
-within it.  If an older unpickler tries to read a pickle using a later
-protocol, the result is most likely an exception due to seeing an unknown (in
-the older unpickler) opcode.
-
-The original pickle used what's now called "protocol 0", and what was called
-"text mode" before Python 2.3.  The entire pickle bytestream is made up of
-printable 7-bit ASCII characters, plus the newline character, in protocol 0.
-That's why it was called text mode.  Protocol 0 is small and elegant, but
-sometimes painfully inefficient.
-
-The second major set of additions is now called "protocol 1", and was called
-"binary mode" before Python 2.3.  This added many opcodes with arguments
-consisting of arbitrary bytes, including NUL bytes and unprintable "high bit"
-bytes.  Binary mode pickles can be substantially smaller than equivalent
-text mode pickles, and sometimes faster too; e.g., BININT represents a 4-byte
-int as 4 bytes following the opcode, which is cheaper to unpickle than the
-(perhaps) 11-character decimal string attached to INT.  Protocol 1 also added
-a number of opcodes that operate on many stack elements at once (like APPENDS
-and SETITEMS), and "shortcut" opcodes (like EMPTY_DICT and EMPTY_TUPLE).
-
-The third major set of additions came in Python 2.3, and is called "protocol
-2".  This added:
-
-- A better way to pickle instances of new-style classes (NEWOBJ).
-
-- A way for a pickle to identify its protocol (PROTO).
-
-- Time- and space- efficient pickling of long ints (LONG{1,4}).
-
-- Shortcuts for small tuples (TUPLE{1,2,3}}.
-
-- Dedicated opcodes for bools (NEWTRUE, NEWFALSE).
-
-- The "extension registry", a vector of popular objects that can be pushed
-  efficiently by index (EXT{1,2,4}).  This is akin to the memo and GET, but
-  the registry contents are predefined (there's nothing akin to the memo's
-  PUT).
-
-Another independent change with Python 2.3 is the abandonment of any
-pretense that it might be safe to load pickles received from untrusted
-parties -- no sufficient security analysis has been done to guarantee
-this and there isn't a use case that warrants the expense of such an
-analysis.
-
-To this end, all tests for __safe_for_unpickling__ or for
-copy_reg.safe_constructors are removed from the unpickling code.
-References to these variables in the descriptions below are to be seen
-as describing unpickling in Python 2.2 and before.
-"""
-
-# Meta-rule:  Descriptions are stored in instances of descriptor objects,
-# with plain constructors.  No meta-language is defined from which
-# descriptors could be constructed.  If you want, e.g., XML, write a little
-# program to generate XML from the objects.
-
-##############################################################################
-# Some pickle opcodes have an argument, following the opcode in the
-# bytestream.  An argument is of a specific type, described by an instance
-# of ArgumentDescriptor.  These are not to be confused with arguments taken
-# off the stack -- ArgumentDescriptor applies only to arguments embedded in
-# the opcode stream, immediately following an opcode.
-
-# Represents the number of bytes consumed by an argument delimited by the
-# next newline character.
-UP_TO_NEWLINE = -1
-
-# Represents the number of bytes consumed by a two-argument opcode where
-# the first argument gives the number of bytes in the second argument.
-TAKEN_FROM_ARGUMENT1 = -2   # num bytes is 1-byte unsigned int
-TAKEN_FROM_ARGUMENT4 = -3   # num bytes is 4-byte signed little-endian int
-
-class ArgumentDescriptor(object):
-    __slots__ = (
-        # name of descriptor record, also a module global name; a string
-        'name',
-
-        # length of argument, in bytes; an int; UP_TO_NEWLINE and
-        # TAKEN_FROM_ARGUMENT{1,4} are negative values for variable-length
-        # cases
-        'n',
-
-        # a function taking a file-like object, reading this kind of argument
-        # from the object at the current position, advancing the current
-        # position by n bytes, and returning the value of the argument
-        'reader',
-
-        # human-readable docs for this arg descriptor; a string
-        'doc',
-    )
-
-    def __init__(self, name, n, reader, doc):
-        assert isinstance(name, str)
-        self.name = name
-
-        assert isinstance(n, int) and (n >= 0 or
-                                       n in (UP_TO_NEWLINE,
-                                             TAKEN_FROM_ARGUMENT1,
-                                             TAKEN_FROM_ARGUMENT4))
-        self.n = n
-
-        self.reader = reader
-
-        assert isinstance(doc, str)
-        self.doc = doc
-
-from struct import unpack as _unpack
-
-def read_uint1(f):
-    r"""
-    >>> import StringIO
-    >>> read_uint1(StringIO.StringIO('\xff'))
-    255
-    """
-
-    data = f.read(1)
-    if data:
-        return ord(data)
-    raise ValueError("not enough data in stream to read uint1")
-
-uint1 = ArgumentDescriptor(
-            name='uint1',
-            n=1,
-            reader=read_uint1,
-            doc="One-byte unsigned integer.")
-
-
-def read_uint2(f):
-    r"""
-    >>> import StringIO
-    >>> read_uint2(StringIO.StringIO('\xff\x00'))
-    255
-    >>> read_uint2(StringIO.StringIO('\xff\xff'))
-    65535
-    """
-
-    data = f.read(2)
-    if len(data) == 2:
-        return _unpack("<H", data)[0]
-    raise ValueError("not enough data in stream to read uint2")
-
-uint2 = ArgumentDescriptor(
-            name='uint2',
-            n=2,
-            reader=read_uint2,
-            doc="Two-byte unsigned integer, little-endian.")
-
-
-def read_int4(f):
-    r"""
-    >>> import StringIO
-    >>> read_int4(StringIO.StringIO('\xff\x00\x00\x00'))
-    255
-    >>> read_int4(StringIO.StringIO('\x00\x00\x00\x80')) == -(2**31)
-    True
-    """
-
-    data = f.read(4)
-    if len(data) == 4:
-        return _unpack("<i", data)[0]
-    raise ValueError("not enough data in stream to read int4")
-
-int4 = ArgumentDescriptor(
-           name='int4',
-           n=4,
-           reader=read_int4,
-           doc="Four-byte signed integer, little-endian, 2's complement.")
-
-
-def read_stringnl(f, decode=True, stripquotes=True):
-    r"""
-    >>> import StringIO
-    >>> read_stringnl(StringIO.StringIO("'abcd'\nefg\n"))
-    'abcd'
-
-    >>> read_stringnl(StringIO.StringIO("\n"))
-    Traceback (most recent call last):
-    ...
-    ValueError: no string quotes around ''
-
-    >>> read_stringnl(StringIO.StringIO("\n"), stripquotes=False)
-    ''
-
-    >>> read_stringnl(StringIO.StringIO("''\n"))
-    ''
-
-    >>> read_stringnl(StringIO.StringIO('"abcd"'))
-    Traceback (most recent call last):
-    ...
-    ValueError: no newline found when trying to read stringnl
-
-    Embedded escapes are undone in the result.
-    >>> read_stringnl(StringIO.StringIO(r"'a\n\\b\x00c\td'" + "\n'e'"))
-    'a\n\\b\x00c\td'
-    """
-
-    data = f.readline()
-    if not data.endswith('\n'):
-        raise ValueError("no newline found when trying to read stringnl")
-    data = data[:-1]    # lose the newline
-
-    if stripquotes:
-        for q in "'\"":
-            if data.startswith(q):
-                if not data.endswith(q):
-                    raise ValueError("strinq quote %r not found at both "
-                                     "ends of %r" % (q, data))
-                data = data[1:-1]
-                break
-        else:
-            raise ValueError("no string quotes around %r" % data)
-
-    # I'm not sure when 'string_escape' was added to the std codecs; it's
-    # crazy not to use it if it's there.
-    if decode:
-        data = data.decode('string_escape')
-    return data
-
-stringnl = ArgumentDescriptor(
-               name='stringnl',
-               n=UP_TO_NEWLINE,
-               reader=read_stringnl,
-               doc="""A newline-terminated string.
-
-                   This is a repr-style string, with embedded escapes, and
-                   bracketing quotes.
-                   """)
-
-def read_stringnl_noescape(f):
-    return read_stringnl(f, decode=False, stripquotes=False)
-
-stringnl_noescape = ArgumentDescriptor(
-                        name='stringnl_noescape',
-                        n=UP_TO_NEWLINE,
-                        reader=read_stringnl_noescape,
-                        doc="""A newline-terminated string.
-
-                        This is a str-style string, without embedded escapes,
-                        or bracketing quotes.  It should consist solely of
-                        printable ASCII characters.
-                        """)
-
-def read_stringnl_noescape_pair(f):
-    r"""
-    >>> import StringIO
-    >>> read_stringnl_noescape_pair(StringIO.StringIO("Queue\nEmpty\njunk"))
-    'Queue Empty'
-    """
-
-    return "%s %s" % (read_stringnl_noescape(f), read_stringnl_noescape(f))
-
-stringnl_noescape_pair = ArgumentDescriptor(
-                             name='stringnl_noescape_pair',
-                             n=UP_TO_NEWLINE,
-                             reader=read_stringnl_noescape_pair,
-                             doc="""A pair of newline-terminated strings.
-
-                             These are str-style strings, without embedded
-                             escapes, or bracketing quotes.  They should
-                             consist solely of printable ASCII characters.
-                             The pair is returned as a single string, with
-                             a single blank separating the two strings.
-                             """)
-
-def read_string4(f):
-    r"""
-    >>> import StringIO
-    >>> read_string4(StringIO.StringIO("\x00\x00\x00\x00abc"))
-    ''
-    >>> read_string4(StringIO.StringIO("\x03\x00\x00\x00abcdef"))
-    'abc'
-    >>> read_string4(StringIO.StringIO("\x00\x00\x00\x03abcdef"))
-    Traceback (most recent call last):
-    ...
-    ValueError: expected 50331648 bytes in a string4, but only 6 remain
-    """
-
-    n = read_int4(f)
-    if n < 0:
-        raise ValueError("string4 byte count < 0: %d" % n)
-    data = f.read(n)
-    if len(data) == n:
-        return data
-    raise ValueError("expected %d bytes in a string4, but only %d remain" %
-                     (n, len(data)))
-
-string4 = ArgumentDescriptor(
-              name="string4",
-              n=TAKEN_FROM_ARGUMENT4,
-              reader=read_string4,
-              doc="""A counted string.
-
-              The first argument is a 4-byte little-endian signed int giving
-              the number of bytes in the string, and the second argument is
-              that many bytes.
-              """)
-
-
-def read_string1(f):
-    r"""
-    >>> import StringIO
-    >>> read_string1(StringIO.StringIO("\x00"))
-    ''
-    >>> read_string1(StringIO.StringIO("\x03abcdef"))
-    'abc'
-    """
-
-    n = read_uint1(f)
-    assert n >= 0
-    data = f.read(n)
-    if len(data) == n:
-        return data
-    raise ValueError("expected %d bytes in a string1, but only %d remain" %
-                     (n, len(data)))
-
-string1 = ArgumentDescriptor(
-              name="string1",
-              n=TAKEN_FROM_ARGUMENT1,
-              reader=read_string1,
-              doc="""A counted string.
-
-              The first argument is a 1-byte unsigned int giving the number
-              of bytes in the string, and the second argument is that many
-              bytes.
-              """)
-
-
-def read_unicodestringnl(f):
-    r"""
-    >>> import StringIO
-    >>> read_unicodestringnl(StringIO.StringIO("abc\uabcd\njunk"))
-    u'abc\uabcd'
-    """
-
-    data = f.readline()
-    if not data.endswith('\n'):
-        raise ValueError("no newline found when trying to read "
-                         "unicodestringnl")
-    data = data[:-1]    # lose the newline
-    return unicode(data, 'raw-unicode-escape')
-
-unicodestringnl = ArgumentDescriptor(
-                      name='unicodestringnl',
-                      n=UP_TO_NEWLINE,
-                      reader=read_unicodestringnl,
-                      doc="""A newline-terminated Unicode string.
-
-                      This is raw-unicode-escape encoded, so consists of
-                      printable ASCII characters, and may contain embedded
-                      escape sequences.
-                      """)
-
-def read_unicodestring4(f):
-    r"""
-    >>> import StringIO
-    >>> s = u'abcd\uabcd'
-    >>> enc = s.encode('utf-8')
-    >>> enc
-    'abcd\xea\xaf\x8d'
-    >>> n = chr(len(enc)) + chr(0) * 3  # little-endian 4-byte length
-    >>> t = read_unicodestring4(StringIO.StringIO(n + enc + 'junk'))
-    >>> s == t
-    True
-
-    >>> read_unicodestring4(StringIO.StringIO(n + enc[:-1]))
-    Traceback (most recent call last):
-    ...
-    ValueError: expected 7 bytes in a unicodestring4, but only 6 remain
-    """
-
-    n = read_int4(f)
-    if n < 0:
-        raise ValueError("unicodestring4 byte count < 0: %d" % n)
-    data = f.read(n)
-    if len(data) == n:
-        return unicode(data, 'utf-8')
-    raise ValueError("expected %d bytes in a unicodestring4, but only %d "
-                     "remain" % (n, len(data)))
-
-unicodestring4 = ArgumentDescriptor(
-                    name="unicodestring4",
-                    n=TAKEN_FROM_ARGUMENT4,
-                    reader=read_unicodestring4,
-                    doc="""A counted Unicode string.
-
-                    The first argument is a 4-byte little-endian signed int
-                    giving the number of bytes in the string, and the second
-                    argument-- the UTF-8 encoding of the Unicode string --
-                    contains that many bytes.
-                    """)
-
-
-def read_decimalnl_short(f):
-    r"""
-    >>> import StringIO
-    >>> read_decimalnl_short(StringIO.StringIO("1234\n56"))
-    1234
-
-    >>> read_decimalnl_short(StringIO.StringIO("1234L\n56"))
-    Traceback (most recent call last):
-    ...
-    ValueError: trailing 'L' not allowed in '1234L'
-    """
-
-    s = read_stringnl(f, decode=False, stripquotes=False)
-    if s.endswith("L"):
-        raise ValueError("trailing 'L' not allowed in %r" % s)
-
-    # It's not necessarily true that the result fits in a Python short int:
-    # the pickle may have been written on a 64-bit box.  There's also a hack
-    # for True and False here.
-    if s == "00":
-        return False
-    elif s == "01":
-        return True
-
-    try:
-        return int(s)
-    except OverflowError:
-        return long(s)
-
-def read_decimalnl_long(f):
-    r"""
-    >>> import StringIO
-
-    >>> read_decimalnl_long(StringIO.StringIO("1234\n56"))
-    Traceback (most recent call last):
-    ...
-    ValueError: trailing 'L' required in '1234'
-
-    Someday the trailing 'L' will probably go away from this output.
-
-    >>> read_decimalnl_long(StringIO.StringIO("1234L\n56"))
-    1234L
-
-    >>> read_decimalnl_long(StringIO.StringIO("123456789012345678901234L\n6"))
-    123456789012345678901234L
-    """
-
-    s = read_stringnl(f, decode=False, stripquotes=False)
-    if not s.endswith("L"):
-        raise ValueError("trailing 'L' required in %r" % s)
-    return long(s)
-
-
-decimalnl_short = ArgumentDescriptor(
-                      name='decimalnl_short',
-                      n=UP_TO_NEWLINE,
-                      reader=read_decimalnl_short,
-                      doc="""A newline-terminated decimal integer literal.
-
-                          This never has a trailing 'L', and the integer fit
-                          in a short Python int on the box where the pickle
-                          was written -- but there's no guarantee it will fit
-                          in a short Python int on the box where the pickle
-                          is read.
-                          """)
-
-decimalnl_long = ArgumentDescriptor(
-                     name='decimalnl_long',
-                     n=UP_TO_NEWLINE,
-                     reader=read_decimalnl_long,
-                     doc="""A newline-terminated decimal integer literal.
-
-                         This has a trailing 'L', and can represent integers
-                         of any size.
-                         """)
-
-
-def read_floatnl(f):
-    r"""
-    >>> import StringIO
-    >>> read_floatnl(StringIO.StringIO("-1.25\n6"))
-    -1.25
-    """
-    s = read_stringnl(f, decode=False, stripquotes=False)
-    return float(s)
-
-floatnl = ArgumentDescriptor(
-              name='floatnl',
-              n=UP_TO_NEWLINE,
-              reader=read_floatnl,
-              doc="""A newline-terminated decimal floating literal.
-
-              In general this requires 17 significant digits for roundtrip
-              identity, and pickling then unpickling infinities, NaNs, and
-              minus zero doesn't work across boxes, or on some boxes even
-              on itself (e.g., Windows can't read the strings it produces
-              for infinities or NaNs).
-              """)
-
-def read_float8(f):
-    r"""
-    >>> import StringIO, struct
-    >>> raw = struct.pack(">d", -1.25)
-    >>> raw
-    '\xbf\xf4\x00\x00\x00\x00\x00\x00'
-    >>> read_float8(StringIO.StringIO(raw + "\n"))
-    -1.25
-    """
-
-    data = f.read(8)
-    if len(data) == 8:
-        return _unpack(">d", data)[0]
-    raise ValueError("not enough data in stream to read float8")
-
-
-float8 = ArgumentDescriptor(
-             name='float8',
-             n=8,
-             reader=read_float8,
-             doc="""An 8-byte binary representation of a float, big-endian.
-
-             The format is unique to Python, and shared with the struct
-             module (format string '>d') "in theory" (the struct and cPickle
-             implementations don't share the code -- they should).  It's
-             strongly related to the IEEE-754 double format, and, in normal
-             cases, is in fact identical to the big-endian 754 double format.
-             On other boxes the dynamic range is limited to that of a 754
-             double, and "add a half and chop" rounding is used to reduce
-             the precision to 53 bits.  However, even on a 754 box,
-             infinities, NaNs, and minus zero may not be handled correctly
-             (may not survive roundtrip pickling intact).
-             """)
-
-# Protocol 2 formats
-
-from pickle import decode_long
-
-def read_long1(f):
-    r"""
-    >>> import StringIO
-    >>> read_long1(StringIO.StringIO("\x00"))
-    0L
-    >>> read_long1(StringIO.StringIO("\x02\xff\x00"))
-    255L
-    >>> read_long1(StringIO.StringIO("\x02\xff\x7f"))
-    32767L
-    >>> read_long1(StringIO.StringIO("\x02\x00\xff"))
-    -256L
-    >>> read_long1(StringIO.StringIO("\x02\x00\x80"))
-    -32768L
-    """
-
-    n = read_uint1(f)
-    data = f.read(n)
-    if len(data) != n:
-        raise ValueError("not enough data in stream to read long1")
-    return decode_long(data)
-
-long1 = ArgumentDescriptor(
-    name="long1",
-    n=TAKEN_FROM_ARGUMENT1,
-    reader=read_long1,
-    doc="""A binary long, little-endian, using 1-byte size.
-
-    This first reads one byte as an unsigned size, then reads that
-    many bytes and interprets them as a little-endian 2's-complement long.
-    If the size is 0, that's taken as a shortcut for the long 0L.
-    """)
-
-def read_long4(f):
-    r"""
-    >>> import StringIO
-    >>> read_long4(StringIO.StringIO("\x02\x00\x00\x00\xff\x00"))
-    255L
-    >>> read_long4(StringIO.StringIO("\x02\x00\x00\x00\xff\x7f"))
-    32767L
-    >>> read_long4(StringIO.StringIO("\x02\x00\x00\x00\x00\xff"))
-    -256L
-    >>> read_long4(StringIO.StringIO("\x02\x00\x00\x00\x00\x80"))
-    -32768L
-    >>> read_long1(StringIO.StringIO("\x00\x00\x00\x00"))
-    0L
-    """
-
-    n = read_int4(f)
-    if n < 0:
-        raise ValueError("long4 byte count < 0: %d" % n)
-    data = f.read(n)
-    if len(data) != n:
-        raise ValueError("not enough data in stream to read long4")
-    return decode_long(data)
-
-long4 = ArgumentDescriptor(
-    name="long4",
-    n=TAKEN_FROM_ARGUMENT4,
-    reader=read_long4,
-    doc="""A binary representation of a long, little-endian.
-
-    This first reads four bytes as a signed size (but requires the
-    size to be >= 0), then reads that many bytes and interprets them
-    as a little-endian 2's-complement long.  If the size is 0, that's taken
-    as a shortcut for the long 0L, although LONG1 should really be used
-    then instead (and in any case where # of bytes < 256).
-    """)
-
-
-##############################################################################
-# Object descriptors.  The stack used by the pickle machine holds objects,
-# and in the stack_before and stack_after attributes of OpcodeInfo
-# descriptors we need names to describe the various types of objects that can
-# appear on the stack.
-
-class StackObject(object):
-    __slots__ = (
-        # name of descriptor record, for info only
-        'name',
-
-        # type of object, or tuple of type objects (meaning the object can
-        # be of any type in the tuple)
-        'obtype',
-
-        # human-readable docs for this kind of stack object; a string
-        'doc',
-    )
-
-    def __init__(self, name, obtype, doc):
-        assert isinstance(name, str)
-        self.name = name
-
-        assert isinstance(obtype, type) or isinstance(obtype, tuple)
-        if isinstance(obtype, tuple):
-            for contained in obtype:
-                assert isinstance(contained, type)
-        self.obtype = obtype
-
-        assert isinstance(doc, str)
-        self.doc = doc
-
-    def __repr__(self):
-        return self.name
-
-
-pyint = StackObject(
-            name='int',
-            obtype=int,
-            doc="A short (as opposed to long) Python integer object.")
-
-pylong = StackObject(
-             name='long',
-             obtype=long,
-             doc="A long (as opposed to short) Python integer object.")
-
-pyinteger_or_bool = StackObject(
-                        name='int_or_bool',
-                        obtype=(int, long, bool),
-                        doc="A Python integer object (short or long), or "
-                            "a Python bool.")
-
-pybool = StackObject(
-             name='bool',
-             obtype=(bool,),
-             doc="A Python bool object.")
-
-pyfloat = StackObject(
-              name='float',
-              obtype=float,
-              doc="A Python float object.")
-
-pystring = StackObject(
-               name='str',
-               obtype=str,
-               doc="A Python string object.")
-
-pyunicode = StackObject(
-                name='unicode',
-                obtype=unicode,
-                doc="A Python Unicode string object.")
-
-pynone = StackObject(
-             name="None",
-             obtype=type(None),
-             doc="The Python None object.")
-
-pytuple = StackObject(
-              name="tuple",
-              obtype=tuple,
-              doc="A Python tuple object.")
-
-pylist = StackObject(
-             name="list",
-             obtype=list,
-             doc="A Python list object.")
-
-pydict = StackObject(
-             name="dict",
-             obtype=dict,
-             doc="A Python dict object.")
-
-anyobject = StackObject(
-                name='any',
-                obtype=object,
-                doc="Any kind of object whatsoever.")
-
-markobject = StackObject(
-                 name="mark",
-                 obtype=StackObject,
-                 doc="""'The mark' is a unique object.
-
-                 Opcodes that operate on a variable number of objects
-                 generally don't embed the count of objects in the opcode,
-                 or pull it off the stack.  Instead the MARK opcode is used
-                 to push a special marker object on the stack, and then
-                 some other opcodes grab all the objects from the top of
-                 the stack down to (but not including) the topmost marker
-                 object.
-                 """)
-
-stackslice = StackObject(
-                 name="stackslice",
-                 obtype=StackObject,
-                 doc="""An object representing a contiguous slice of the stack.
-
-                 This is used in conjuction with markobject, to represent all
-                 of the stack following the topmost markobject.  For example,
-                 the POP_MARK opcode changes the stack from
-
-                     [..., markobject, stackslice]
-                 to
-                     [...]
-
-                 No matter how many object are on the stack after the topmost
-                 markobject, POP_MARK gets rid of all of them (including the
-                 topmost markobject too).
-                 """)
-
-##############################################################################
-# Descriptors for pickle opcodes.
-
-class OpcodeInfo(object):
-
-    __slots__ = (
-        # symbolic name of opcode; a string
-        'name',
-
-        # the code used in a bytestream to represent the opcode; a
-        # one-character string
-        'code',
-
-        # If the opcode has an argument embedded in the byte string, an
-        # instance of ArgumentDescriptor specifying its type.  Note that
-        # arg.reader(s) can be used to read and decode the argument from
-        # the bytestream s, and arg.doc documents the format of the raw
-        # argument bytes.  If the opcode doesn't have an argument embedded
-        # in the bytestream, arg should be None.
-        'arg',
-
-        # what the stack looks like before this opcode runs; a list
-        'stack_before',
-
-        # what the stack looks like after this opcode runs; a list
-        'stack_after',
-
-        # the protocol number in which this opcode was introduced; an int
-        'proto',
-
-        # human-readable docs for this opcode; a string
-        'doc',
-    )
-
-    def __init__(self, name, code, arg,
-                 stack_before, stack_after, proto, doc):
-        assert isinstance(name, str)
-        self.name = name
-
-        assert isinstance(code, str)
-        assert len(code) == 1
-        self.code = code
-
-        assert arg is None or isinstance(arg, ArgumentDescriptor)
-        self.arg = arg
-
-        assert isinstance(stack_before, list)
-        for x in stack_before:
-            assert isinstance(x, StackObject)
-        self.stack_before = stack_before
-
-        assert isinstance(stack_after, list)
-        for x in stack_after:
-            assert isinstance(x, StackObject)
-        self.stack_after = stack_after
-
-        assert isinstance(proto, int) and 0 <= proto <= 2
-        self.proto = proto
-
-        assert isinstance(doc, str)
-        self.doc = doc
-
-I = OpcodeInfo
-opcodes = [
-
-    # Ways to spell integers.
-
-    I(name='INT',
-      code='I',
-      arg=decimalnl_short,
-      stack_before=[],
-      stack_after=[pyinteger_or_bool],
-      proto=0,
-      doc="""Push an integer or bool.
-
-      The argument is a newline-terminated decimal literal string.
-
-      The intent may have been that this always fit in a short Python int,
-      but INT can be generated in pickles written on a 64-bit box that
-      require a Python long on a 32-bit box.  The difference between this
-      and LONG then is that INT skips a trailing 'L', and produces a short
-      int whenever possible.
-
-      Another difference is due to that, when bool was introduced as a
-      distinct type in 2.3, builtin names True and False were also added to
-      2.2.2, mapping to ints 1 and 0.  For compatibility in both directions,
-      True gets pickled as INT + "I01\\n", and False as INT + "I00\\n".
-      Leading zeroes are never produced for a genuine integer.  The 2.3
-      (and later) unpicklers special-case these and return bool instead;
-      earlier unpicklers ignore the leading "0" and return the int.
-      """),
-
-    I(name='BININT',
-      code='J',
-      arg=int4,
-      stack_before=[],
-      stack_after=[pyint],
-      proto=1,
-      doc="""Push a four-byte signed integer.
-
-      This handles the full range of Python (short) integers on a 32-bit
-      box, directly as binary bytes (1 for the opcode and 4 for the integer).
-      If the integer is non-negative and fits in 1 or 2 bytes, pickling via
-      BININT1 or BININT2 saves space.
-      """),
-
-    I(name='BININT1',
-      code='K',
-      arg=uint1,
-      stack_before=[],
-      stack_after=[pyint],
-      proto=1,
-      doc="""Push a one-byte unsigned integer.
-
-      This is a space optimization for pickling very small non-negative ints,
-      in range(256).
-      """),
-
-    I(name='BININT2',
-      code='M',
-      arg=uint2,
-      stack_before=[],
-      stack_after=[pyint],
-      proto=1,
-      doc="""Push a two-byte unsigned integer.
-
-      This is a space optimization for pickling small positive ints, in
-      range(256, 2**16).  Integers in range(256) can also be pickled via
-      BININT2, but BININT1 instead saves a byte.
-      """),
-
-    I(name='LONG',
-      code='L',
-      arg=decimalnl_long,
-      stack_before=[],
-      stack_after=[pylong],
-      proto=0,
-      doc="""Push a long integer.
-
-      The same as INT, except that the literal ends with 'L', and always
-      unpickles to a Python long.  There doesn't seem a real purpose to the
-      trailing 'L'.
-
-      Note that LONG takes time quadratic in the number of digits when
-      unpickling (this is simply due to the nature of decimal->binary
-      conversion).  Proto 2 added linear-time (in C; still quadratic-time
-      in Python) LONG1 and LONG4 opcodes.
-      """),
-
-    I(name="LONG1",
-      code='\x8a',
-      arg=long1,
-      stack_before=[],
-      stack_after=[pylong],
-      proto=2,
-      doc="""Long integer using one-byte length.
-
-      A more efficient encoding of a Python long; the long1 encoding
-      says it all."""),
-
-    I(name="LONG4",
-      code='\x8b',
-      arg=long4,
-      stack_before=[],
-      stack_after=[pylong],
-      proto=2,
-      doc="""Long integer using found-byte length.
-
-      A more efficient encoding of a Python long; the long4 encoding
-      says it all."""),
-
-    # Ways to spell strings (8-bit, not Unicode).
-
-    I(name='STRING',
-      code='S',
-      arg=stringnl,
-      stack_before=[],
-      stack_after=[pystring],
-      proto=0,
-      doc="""Push a Python string object.
-
-      The argument is a repr-style string, with bracketing quote characters,
-      and perhaps embedded escapes.  The argument extends until the next
-      newline character.
-      """),
-
-    I(name='BINSTRING',
-      code='T',
-      arg=string4,
-      stack_before=[],
-      stack_after=[pystring],
-      proto=1,
-      doc="""Push a Python string object.
-
-      There are two arguments:  the first is a 4-byte little-endian signed int
-      giving the number of bytes in the string, and the second is that many
-      bytes, which are taken literally as the string content.
-      """),
-
-    I(name='SHORT_BINSTRING',
-      code='U',
-      arg=string1,
-      stack_before=[],
-      stack_after=[pystring],
-      proto=1,
-      doc="""Push a Python string object.
-
-      There are two arguments:  the first is a 1-byte unsigned int giving
-      the number of bytes in the string, and the second is that many bytes,
-      which are taken literally as the string content.
-      """),
-
-    # Ways to spell None.
-
-    I(name='NONE',
-      code='N',
-      arg=None,
-      stack_before=[],
-      stack_after=[pynone],
-      proto=0,
-      doc="Push None on the stack."),
-
-    # Ways to spell bools, starting with proto 2.  See INT for how this was
-    # done before proto 2.
-
-    I(name='NEWTRUE',
-      code='\x88',
-      arg=None,
-      stack_before=[],
-      stack_after=[pybool],
-      proto=2,
-      doc="""True.
-
-      Push True onto the stack."""),
-
-    I(name='NEWFALSE',
-      code='\x89',
-      arg=None,
-      stack_before=[],
-      stack_after=[pybool],
-      proto=2,
-      doc="""True.
-
-      Push False onto the stack."""),
-
-    # Ways to spell Unicode strings.
-
-    I(name='UNICODE',
-      code='V',
-      arg=unicodestringnl,
-      stack_before=[],
-      stack_after=[pyunicode],
-      proto=0,  # this may be pure-text, but it's a later addition
-      doc="""Push a Python Unicode string object.
-
-      The argument is a raw-unicode-escape encoding of a Unicode string,
-      and so may contain embedded escape sequences.  The argument extends
-      until the next newline character.
-      """),
-
-    I(name='BINUNICODE',
-      code='X',
-      arg=unicodestring4,
-      stack_before=[],
-      stack_after=[pyunicode],
-      proto=1,
-      doc="""Push a Python Unicode string object.
-
-      There are two arguments:  the first is a 4-byte little-endian signed int
-      giving the number of bytes in the string.  The second is that many
-      bytes, and is the UTF-8 encoding of the Unicode string.
-      """),
-
-    # Ways to spell floats.
-
-    I(name='FLOAT',
-      code='F',
-      arg=floatnl,
-      stack_before=[],
-      stack_after=[pyfloat],
-      proto=0,
-      doc="""Newline-terminated decimal float literal.
-
-      The argument is repr(a_float), and in general requires 17 significant
-      digits for roundtrip conversion to be an identity (this is so for
-      IEEE-754 double precision values, which is what Python float maps to
-      on most boxes).
-
-      In general, FLOAT cannot be used to transport infinities, NaNs, or
-      minus zero across boxes (or even on a single box, if the platform C
-      library can't read the strings it produces for such things -- Windows
-      is like that), but may do less damage than BINFLOAT on boxes with
-      greater precision or dynamic range than IEEE-754 double.
-      """),
-
-    I(name='BINFLOAT',
-      code='G',
-      arg=float8,
-      stack_before=[],
-      stack_after=[pyfloat],
-      proto=1,
-      doc="""Float stored in binary form, with 8 bytes of data.
-
-      This generally requires less than half the space of FLOAT encoding.
-      In general, BINFLOAT cannot be used to transport infinities, NaNs, or
-      minus zero, raises an exception if the exponent exceeds the range of
-      an IEEE-754 double, and retains no more than 53 bits of precision (if
-      there are more than that, "add a half and chop" rounding is used to
-      cut it back to 53 significant bits).
-      """),
-
-    # Ways to build lists.
-
-    I(name='EMPTY_LIST',
-      code=']',
-      arg=None,
-      stack_before=[],
-      stack_after=[pylist],
-      proto=1,
-      doc="Push an empty list."),
-
-    I(name='APPEND',
-      code='a',
-      arg=None,
-      stack_before=[pylist, anyobject],
-      stack_after=[pylist],
-      proto=0,
-      doc="""Append an object to a list.
-
-      Stack before:  ... pylist anyobject
-      Stack after:   ... pylist+[anyobject]
-
-      although pylist is really extended in-place.
-      """),
-
-    I(name='APPENDS',
-      code='e',
-      arg=None,
-      stack_before=[pylist, markobject, stackslice],
-      stack_after=[pylist],
-      proto=1,
-      doc="""Extend a list by a slice of stack objects.
-
-      Stack before:  ... pylist markobject stackslice
-      Stack after:   ... pylist+stackslice
-
-      although pylist is really extended in-place.
-      """),
-
-    I(name='LIST',
-      code='l',
-      arg=None,
-      stack_before=[markobject, stackslice],
-      stack_after=[pylist],
-      proto=0,
-      doc="""Build a list out of the topmost stack slice, after markobject.
-
-      All the stack entries following the topmost markobject are placed into
-      a single Python list, which single list object replaces all of the
-      stack from the topmost markobject onward.  For example,
-
-      Stack before: ... markobject 1 2 3 'abc'
-      Stack after:  ... [1, 2, 3, 'abc']
-      """),
-
-    # Ways to build tuples.
-
-    I(name='EMPTY_TUPLE',
-      code=')',
-      arg=None,
-      stack_before=[],
-      stack_after=[pytuple],
-      proto=1,
-      doc="Push an empty tuple."),
-
-    I(name='TUPLE',
-      code='t',
-      arg=None,
-      stack_before=[markobject, stackslice],
-      stack_after=[pytuple],
-      proto=0,
-      doc="""Build a tuple out of the topmost stack slice, after markobject.
-
-      All the stack entries following the topmost markobject are placed into
-      a single Python tuple, which single tuple object replaces all of the
-      stack from the topmost markobject onward.  For example,
-
-      Stack before: ... markobject 1 2 3 'abc'
-      Stack after:  ... (1, 2, 3, 'abc')
-      """),
-
-    I(name='TUPLE1',
-      code='\x85',
-      arg=None,
-      stack_before=[anyobject],
-      stack_after=[pytuple],
-      proto=2,
-      doc="""Build a one-tuple out of the topmost item on the stack.
-
-      This code pops one value off the stack and pushes a tuple of
-      length 1 whose one item is that value back onto it.  In other
-      words:
-
-          stack[-1] = tuple(stack[-1:])
-      """),
-
-    I(name='TUPLE2',
-      code='\x86',
-      arg=None,
-      stack_before=[anyobject, anyobject],
-      stack_after=[pytuple],
-      proto=2,
-      doc="""Build a two-tuple out of the top two items on the stack.
-
-      This code pops two values off the stack and pushes a tuple of
-      length 2 whose items are those values back onto it.  In other
-      words:
-
-          stack[-2:] = [tuple(stack[-2:])]
-      """),
-
-    I(name='TUPLE3',
-      code='\x87',
-      arg=None,
-      stack_before=[anyobject, anyobject, anyobject],
-      stack_after=[pytuple],
-      proto=2,
-      doc="""Build a three-tuple out of the top three items on the stack.
-
-      This code pops three values off the stack and pushes a tuple of
-      length 3 whose items are those values back onto it.  In other
-      words:
-
-          stack[-3:] = [tuple(stack[-3:])]
-      """),
-
-    # Ways to build dicts.
-
-    I(name='EMPTY_DICT',
-      code='}',
-      arg=None,
-      stack_before=[],
-      stack_after=[pydict],
-      proto=1,
-      doc="Push an empty dict."),
-
-    I(name='DICT',
-      code='d',
-      arg=None,
-      stack_before=[markobject, stackslice],
-      stack_after=[pydict],
-      proto=0,
-      doc="""Build a dict out of the topmost stack slice, after markobject.
-
-      All the stack entries following the topmost markobject are placed into
-      a single Python dict, which single dict object replaces all of the
-      stack from the topmost markobject onward.  The stack slice alternates
-      key, value, key, value, ....  For example,
-
-      Stack before: ... markobject 1 2 3 'abc'
-      Stack after:  ... {1: 2, 3: 'abc'}
-      """),
-
-    I(name='SETITEM',
-      code='s',
-      arg=None,
-      stack_before=[pydict, anyobject, anyobject],
-      stack_after=[pydict],
-      proto=0,
-      doc="""Add a key+value pair to an existing dict.
-
-      Stack before:  ... pydict key value
-      Stack after:   ... pydict
-
-      where pydict has been modified via pydict[key] = value.
-      """),
-
-    I(name='SETITEMS',
-      code='u',
-      arg=None,
-      stack_before=[pydict, markobject, stackslice],
-      stack_after=[pydict],
-      proto=1,
-      doc="""Add an arbitrary number of key+value pairs to an existing dict.
-
-      The slice of the stack following the topmost markobject is taken as
-      an alternating sequence of keys and values, added to the dict
-      immediately under the topmost markobject.  Everything at and after the
-      topmost markobject is popped, leaving the mutated dict at the top
-      of the stack.
-
-      Stack before:  ... pydict markobject key_1 value_1 ... key_n value_n
-      Stack after:   ... pydict
-
-      where pydict has been modified via pydict[key_i] = value_i for i in
-      1, 2, ..., n, and in that order.
-      """),
-
-    # Stack manipulation.
-
-    I(name='POP',
-      code='0',
-      arg=None,
-      stack_before=[anyobject],
-      stack_after=[],
-      proto=0,
-      doc="Discard the top stack item, shrinking the stack by one item."),
-
-    I(name='DUP',
-      code='2',
-      arg=None,
-      stack_before=[anyobject],
-      stack_after=[anyobject, anyobject],
-      proto=0,
-      doc="Push the top stack item onto the stack again, duplicating it."),
-
-    I(name='MARK',
-      code='(',
-      arg=None,
-      stack_before=[],
-      stack_after=[markobject],
-      proto=0,
-      doc="""Push markobject onto the stack.
-
-      markobject is a unique object, used by other opcodes to identify a
-      region of the stack containing a variable number of objects for them
-      to work on.  See markobject.doc for more detail.
-      """),
-
-    I(name='POP_MARK',
-      code='1',
-      arg=None,
-      stack_before=[markobject, stackslice],
-      stack_after=[],
-      proto=1,
-      doc="""Pop all the stack objects at and above the topmost markobject.
-
-      When an opcode using a variable number of stack objects is done,
-      POP_MARK is used to remove those objects, and to remove the markobject
-      that delimited their starting position on the stack.
-      """),
-
-    # Memo manipulation.  There are really only two operations (get and put),
-    # each in all-text, "short binary", and "long binary" flavors.
-
-    I(name='GET',
-      code='g',
-      arg=decimalnl_short,
-      stack_before=[],
-      stack_after=[anyobject],
-      proto=0,
-      doc="""Read an object from the memo and push it on the stack.
-
-      The index of the memo object to push is given by the newline-terminated
-      decimal string following.  BINGET and LONG_BINGET are space-optimized
-      versions.
-      """),
-
-    I(name='BINGET',
-      code='h',
-      arg=uint1,
-      stack_before=[],
-      stack_after=[anyobject],
-      proto=1,
-      doc="""Read an object from the memo and push it on the stack.
-
-      The index of the memo object to push is given by the 1-byte unsigned
-      integer following.
-      """),
-
-    I(name='LONG_BINGET',
-      code='j',
-      arg=int4,
-      stack_before=[],
-      stack_after=[anyobject],
-      proto=1,
-      doc="""Read an object from the memo and push it on the stack.
-
-      The index of the memo object to push is given by the 4-byte signed
-      little-endian integer following.
-      """),
-
-    I(name='PUT',
-      code='p',
-      arg=decimalnl_short,
-      stack_before=[],
-      stack_after=[],
-      proto=0,
-      doc="""Store the stack top into the memo.  The stack is not popped.
-
-      The index of the memo location to write into is given by the newline-
-      terminated decimal string following.  BINPUT and LONG_BINPUT are
-      space-optimized versions.
-      """),
-
-    I(name='BINPUT',
-      code='q',
-      arg=uint1,
-      stack_before=[],
-      stack_after=[],
-      proto=1,
-      doc="""Store the stack top into the memo.  The stack is not popped.
-
-      The index of the memo location to write into is given by the 1-byte
-      unsigned integer following.
-      """),
-
-    I(name='LONG_BINPUT',
-      code='r',
-      arg=int4,
-      stack_before=[],
-      stack_after=[],
-      proto=1,
-      doc="""Store the stack top into the memo.  The stack is not popped.
-
-      The index of the memo location to write into is given by the 4-byte
-      signed little-endian integer following.
-      """),
-
-    # Access the extension registry (predefined objects).  Akin to the GET
-    # family.
-
-    I(name='EXT1',
-      code='\x82',
-      arg=uint1,
-      stack_before=[],
-      stack_after=[anyobject],
-      proto=2,
-      doc="""Extension code.
-
-      This code and the similar EXT2 and EXT4 allow using a registry
-      of popular objects that are pickled by name, typically classes.
-      It is envisioned that through a global negotiation and
-      registration process, third parties can set up a mapping between
-      ints and object names.
-
-      In order to guarantee pickle interchangeability, the extension
-      code registry ought to be global, although a range of codes may
-      be reserved for private use.
-
-      EXT1 has a 1-byte integer argument.  This is used to index into the
-      extension registry, and the object at that index is pushed on the stack.
-      """),
-
-    I(name='EXT2',
-      code='\x83',
-      arg=uint2,
-      stack_before=[],
-      stack_after=[anyobject],
-      proto=2,
-      doc="""Extension code.
-
-      See EXT1.  EXT2 has a two-byte integer argument.
-      """),
-
-    I(name='EXT4',
-      code='\x84',
-      arg=int4,
-      stack_before=[],
-      stack_after=[anyobject],
-      proto=2,
-      doc="""Extension code.
-
-      See EXT1.  EXT4 has a four-byte integer argument.
-      """),
-
-    # Push a class object, or module function, on the stack, via its module
-    # and name.
-
-    I(name='GLOBAL',
-      code='c',
-      arg=stringnl_noescape_pair,
-      stack_before=[],
-      stack_after=[anyobject],
-      proto=0,
-      doc="""Push a global object (module.attr) on the stack.
-
-      Two newline-terminated strings follow the GLOBAL opcode.  The first is
-      taken as a module name, and the second as a class name.  The class
-      object module.class is pushed on the stack.  More accurately, the
-      object returned by self.find_class(module, class) is pushed on the
-      stack, so unpickling subclasses can override this form of lookup.
-      """),
-
-    # Ways to build objects of classes pickle doesn't know about directly
-    # (user-defined classes).  I despair of documenting this accurately
-    # and comprehensibly -- you really have to read the pickle code to
-    # find all the special cases.
-
-    I(name='REDUCE',
-      code='R',
-      arg=None,
-      stack_before=[anyobject, anyobject],
-      stack_after=[anyobject],
-      proto=0,
-      doc="""Push an object built from a callable and an argument tuple.
-
-      The opcode is named to remind of the __reduce__() method.
-
-      Stack before: ... callable pytuple
-      Stack after:  ... callable(*pytuple)
-
-      The callable and the argument tuple are the first two items returned
-      by a __reduce__ method.  Applying the callable to the argtuple is
-      supposed to reproduce the original object, or at least get it started.
-      If the __reduce__ method returns a 3-tuple, the last component is an
-      argument to be passed to the object's __setstate__, and then the REDUCE
-      opcode is followed by code to create setstate's argument, and then a
-      BUILD opcode to apply  __setstate__ to that argument.
-
-      If type(callable) is not ClassType, REDUCE complains unless the
-      callable has been registered with the copy_reg module's
-      safe_constructors dict, or the callable has a magic
-      '__safe_for_unpickling__' attribute with a true value.  I'm not sure
-      why it does this, but I've sure seen this complaint often enough when
-      I didn't want to <wink>.
-      """),
-
-    I(name='BUILD',
-      code='b',
-      arg=None,
-      stack_before=[anyobject, anyobject],
-      stack_after=[anyobject],
-      proto=0,
-      doc="""Finish building an object, via __setstate__ or dict update.
-
-      Stack before: ... anyobject argument
-      Stack after:  ... anyobject
-
-      where anyobject may have been mutated, as follows:
-
-      If the object has a __setstate__ method,
-
-          anyobject.__setstate__(argument)
-
-      is called.
-
-      Else the argument must be a dict, the object must have a __dict__, and
-      the object is updated via
-
-          anyobject.__dict__.update(argument)
-
-      This may raise RuntimeError in restricted execution mode (which
-      disallows access to __dict__ directly); in that case, the object
-      is updated instead via
-
-          for k, v in argument.items():
-              anyobject[k] = v
-      """),
-
-    I(name='INST',
-      code='i',
-      arg=stringnl_noescape_pair,
-      stack_before=[markobject, stackslice],
-      stack_after=[anyobject],
-      proto=0,
-      doc="""Build a class instance.
-
-      This is the protocol 0 version of protocol 1's OBJ opcode.
-      INST is followed by two newline-terminated strings, giving a
-      module and class name, just as for the GLOBAL opcode (and see
-      GLOBAL for more details about that).  self.find_class(module, name)
-      is used to get a class object.
-
-      In addition, all the objects on the stack following the topmost
-      markobject are gathered into a tuple and popped (along with the
-      topmost markobject), just as for the TUPLE opcode.
-
-      Now it gets complicated.  If all of these are true:
-
-        + The argtuple is empty (markobject was at the top of the stack
-          at the start).
-
-        + It's an old-style class object (the type of the class object is
-          ClassType).
-
-        + The class object does not have a __getinitargs__ attribute.
-
-      then we want to create an old-style class instance without invoking
-      its __init__() method (pickle has waffled on this over the years; not
-      calling __init__() is current wisdom).  In this case, an instance of
-      an old-style dummy class is created, and then we try to rebind its
-      __class__ attribute to the desired class object.  If this succeeds,
-      the new instance object is pushed on the stack, and we're done.  In
-      restricted execution mode it can fail (assignment to __class__ is
-      disallowed), and I'm not really sure what happens then -- it looks
-      like the code ends up calling the class object's __init__ anyway,
-      via falling into the next case.
-
-      Else (the argtuple is not empty, it's not an old-style class object,
-      or the class object does have a __getinitargs__ attribute), the code
-      first insists that the class object have a __safe_for_unpickling__
-      attribute.  Unlike as for the __safe_for_unpickling__ check in REDUCE,
-      it doesn't matter whether this attribute has a true or false value, it
-      only matters whether it exists (XXX this is a bug; cPickle
-      requires the attribute to be true).  If __safe_for_unpickling__
-      doesn't exist, UnpicklingError is raised.
-
-      Else (the class object does have a __safe_for_unpickling__ attr),
-      the class object obtained from INST's arguments is applied to the
-      argtuple obtained from the stack, and the resulting instance object
-      is pushed on the stack.
-
-      NOTE:  checks for __safe_for_unpickling__ went away in Python 2.3.
-      """),
-
-    I(name='OBJ',
-      code='o',
-      arg=None,
-      stack_before=[markobject, anyobject, stackslice],
-      stack_after=[anyobject],
-      proto=1,
-      doc="""Build a class instance.
-
-      This is the protocol 1 version of protocol 0's INST opcode, and is
-      very much like it.  The major difference is that the class object
-      is taken off the stack, allowing it to be retrieved from the memo
-      repeatedly if several instances of the same class are created.  This
-      can be much more efficient (in both time and space) than repeatedly
-      embedding the module and class names in INST opcodes.
-
-      Unlike INST, OBJ takes no arguments from the opcode stream.  Instead
-      the class object is taken off the stack, immediately above the
-      topmost markobject:
-
-      Stack before: ... markobject classobject stackslice
-      Stack after:  ... new_instance_object
-
-      As for INST, the remainder of the stack above the markobject is
-      gathered into an argument tuple, and then the logic seems identical,
-      except that no __safe_for_unpickling__ check is done (XXX this is
-      a bug; cPickle does test __safe_for_unpickling__).  See INST for
-      the gory details.
-
-      NOTE:  In Python 2.3, INST and OBJ are identical except for how they
-      get the class object.  That was always the intent; the implementations
-      had diverged for accidental reasons.
-      """),
-
-    I(name='NEWOBJ',
-      code='\x81',
-      arg=None,
-      stack_before=[anyobject, anyobject],
-      stack_after=[anyobject],
-      proto=2,
-      doc="""Build an object instance.
-
-      The stack before should be thought of as containing a class
-      object followed by an argument tuple (the tuple being the stack
-      top).  Call these cls and args.  They are popped off the stack,
-      and the value returned by cls.__new__(cls, *args) is pushed back
-      onto the stack.
-      """),
-
-    # Machine control.
-
-    I(name='PROTO',
-      code='\x80',
-      arg=uint1,
-      stack_before=[],
-      stack_after=[],
-      proto=2,
-      doc="""Protocol version indicator.
-
-      For protocol 2 and above, a pickle must start with this opcode.
-      The argument is the protocol version, an int in range(2, 256).
-      """),
-
-    I(name='STOP',
-      code='.',
-      arg=None,
-      stack_before=[anyobject],
-      stack_after=[],
-      proto=0,
-      doc="""Stop the unpickling machine.
-
-      Every pickle ends with this opcode.  The object at the top of the stack
-      is popped, and that's the result of unpickling.  The stack should be
-      empty then.
-      """),
-
-    # Ways to deal with persistent IDs.
-
-    I(name='PERSID',
-      code='P',
-      arg=stringnl_noescape,
-      stack_before=[],
-      stack_after=[anyobject],
-      proto=0,
-      doc="""Push an object identified by a persistent ID.
-
-      The pickle module doesn't define what a persistent ID means.  PERSID's
-      argument is a newline-terminated str-style (no embedded escapes, no
-      bracketing quote characters) string, which *is* "the persistent ID".
-      The unpickler passes this string to self.persistent_load().  Whatever
-      object that returns is pushed on the stack.  There is no implementation
-      of persistent_load() in Python's unpickler:  it must be supplied by an
-      unpickler subclass.
-      """),
-
-    I(name='BINPERSID',
-      code='Q',
-      arg=None,
-      stack_before=[anyobject],
-      stack_after=[anyobject],
-      proto=1,
-      doc="""Push an object identified by a persistent ID.
-
-      Like PERSID, except the persistent ID is popped off the stack (instead
-      of being a string embedded in the opcode bytestream).  The persistent
-      ID is passed to self.persistent_load(), and whatever object that
-      returns is pushed on the stack.  See PERSID for more detail.
-      """),
-]
-del I
-
-# Verify uniqueness of .name and .code members.
-name2i = {}
-code2i = {}
-
-for i, d in enumerate(opcodes):
-    if d.name in name2i:
-        raise ValueError("repeated name %r at indices %d and %d" %
-                         (d.name, name2i[d.name], i))
-    if d.code in code2i:
-        raise ValueError("repeated code %r at indices %d and %d" %
-                         (d.code, code2i[d.code], i))
-
-    name2i[d.name] = i
-    code2i[d.code] = i
-
-del name2i, code2i, i, d
-
-##############################################################################
-# Build a code2op dict, mapping opcode characters to OpcodeInfo records.
-# Also ensure we've got the same stuff as pickle.py, although the
-# introspection here is dicey.
-
-code2op = {}
-for d in opcodes:
-    code2op[d.code] = d
-del d
-
-def assure_pickle_consistency(verbose=False):
-    import pickle, re
-
-    copy = code2op.copy()
-    for name in pickle.__all__:
-        if not re.match("[A-Z][A-Z0-9_]+$", name):
-            if verbose:
-                print "skipping %r: it doesn't look like an opcode name" % name
-            continue
-        picklecode = getattr(pickle, name)
-        if not isinstance(picklecode, str) or len(picklecode) != 1:
-            if verbose:
-                print ("skipping %r: value %r doesn't look like a pickle "
-                       "code" % (name, picklecode))
-            continue
-        if picklecode in copy:
-            if verbose:
-                print "checking name %r w/ code %r for consistency" % (
-                      name, picklecode)
-            d = copy[picklecode]
-            if d.name != name:
-                raise ValueError("for pickle code %r, pickle.py uses name %r "
-                                 "but we're using name %r" % (picklecode,
-                                                              name,
-                                                              d.name))
-            # Forget this one.  Any left over in copy at the end are a problem
-            # of a different kind.
-            del copy[picklecode]
-        else:
-            raise ValueError("pickle.py appears to have a pickle opcode with "
-                             "name %r and code %r, but we don't" %
-                             (name, picklecode))
-    if copy:
-        msg = ["we appear to have pickle opcodes that pickle.py doesn't have:"]
-        for code, d in copy.items():
-            msg.append("    name %r with code %r" % (d.name, code))
-        raise ValueError("\n".join(msg))
-
-assure_pickle_consistency()
-del assure_pickle_consistency
-
-##############################################################################
-# A pickle opcode generator.
-
-def genops(pickle):
-    """Generate all the opcodes in a pickle.
-
-    'pickle' is a file-like object, or string, containing the pickle.
-
-    Each opcode in the pickle is generated, from the current pickle position,
-    stopping after a STOP opcode is delivered.  A triple is generated for
-    each opcode:
-
-        opcode, arg, pos
-
-    opcode is an OpcodeInfo record, describing the current opcode.
-
-    If the opcode has an argument embedded in the pickle, arg is its decoded
-    value, as a Python object.  If the opcode doesn't have an argument, arg
-    is None.
-
-    If the pickle has a tell() method, pos was the value of pickle.tell()
-    before reading the current opcode.  If the pickle is a string object,
-    it's wrapped in a StringIO object, and the latter's tell() result is
-    used.  Else (the pickle doesn't have a tell(), and it's not obvious how
-    to query its current position) pos is None.
-    """
-
-    import cStringIO as StringIO
-
-    if isinstance(pickle, str):
-        pickle = StringIO.StringIO(pickle)
-
-    if hasattr(pickle, "tell"):
-        getpos = pickle.tell
-    else:
-        getpos = lambda: None
-
-    while True:
-        pos = getpos()
-        code = pickle.read(1)
-        opcode = code2op.get(code)
-        if opcode is None:
-            if code == "":
-                raise ValueError("pickle exhausted before seeing STOP")
-            else:
-                raise ValueError("at position %s, opcode %r unknown" % (
-                                 pos is None and "<unknown>" or pos,
-                                 code))
-        if opcode.arg is None:
-            arg = None
-        else:
-            arg = opcode.arg.reader(pickle)
-        yield opcode, arg, pos
-        if code == '.':
-            assert opcode.name == 'STOP'
-            break
-
-##############################################################################
-# A pickle optimizer.
-
-def optimize(p):
-    'Optimize a pickle string by removing unused PUT opcodes'
-    gets = set()            # set of args used by a GET opcode
-    puts = []               # (arg, startpos, stoppos) for the PUT opcodes
-    prevpos = None          # set to pos if previous opcode was a PUT
-    for opcode, arg, pos in genops(p):
-        if prevpos is not None:
-            puts.append((prevarg, prevpos, pos))
-            prevpos = None
-        if 'PUT' in opcode.name:
-            prevarg, prevpos = arg, pos
-        elif 'GET' in opcode.name:
-            gets.add(arg)
-
-    # Copy the pickle string except for PUTS without a corresponding GET
-    s = []
-    i = 0
-    for arg, start, stop in puts:
-        j = stop if (arg in gets) else start
-        s.append(p[i:j])
-        i = stop
-    s.append(p[i:])
-    return ''.join(s)
-
-##############################################################################
-# A symbolic pickle disassembler.
-
-def dis(pickle, out=None, memo=None, indentlevel=4):
-    """Produce a symbolic disassembly of a pickle.
-
-    'pickle' is a file-like object, or string, containing a (at least one)
-    pickle.  The pickle is disassembled from the current position, through
-    the first STOP opcode encountered.
-
-    Optional arg 'out' is a file-like object to which the disassembly is
-    printed.  It defaults to sys.stdout.
-
-    Optional arg 'memo' is a Python dict, used as the pickle's memo.  It
-    may be mutated by dis(), if the pickle contains PUT or BINPUT opcodes.
-    Passing the same memo object to another dis() call then allows disassembly
-    to proceed across multiple pickles that were all created by the same
-    pickler with the same memo.  Ordinarily you don't need to worry about this.
-
-    Optional arg indentlevel is the number of blanks by which to indent
-    a new MARK level.  It defaults to 4.
-
-    In addition to printing the disassembly, some sanity checks are made:
-
-    + All embedded opcode arguments "make sense".
-
-    + Explicit and implicit pop operations have enough items on the stack.
-
-    + When an opcode implicitly refers to a markobject, a markobject is
-      actually on the stack.
-
-    + A memo entry isn't referenced before it's defined.
-
-    + The markobject isn't stored in the memo.
-
-    + A memo entry isn't redefined.
-    """
-
-    # Most of the hair here is for sanity checks, but most of it is needed
-    # anyway to detect when a protocol 0 POP takes a MARK off the stack
-    # (which in turn is needed to indent MARK blocks correctly).
-
-    stack = []          # crude emulation of unpickler stack
-    if memo is None:
-        memo = {}       # crude emulation of unpicker memo
-    maxproto = -1       # max protocol number seen
-    markstack = []      # bytecode positions of MARK opcodes
-    indentchunk = ' ' * indentlevel
-    errormsg = None
-    for opcode, arg, pos in genops(pickle):
-        if pos is not None:
-            print >> out, "%5d:" % pos,
-
-        line = "%-4s %s%s" % (repr(opcode.code)[1:-1],
-                              indentchunk * len(markstack),
-                              opcode.name)
-
-        maxproto = max(maxproto, opcode.proto)
-        before = opcode.stack_before    # don't mutate
-        after = opcode.stack_after      # don't mutate
-        numtopop = len(before)
-
-        # See whether a MARK should be popped.
-        markmsg = None
-        if markobject in before or (opcode.name == "POP" and
-                                    stack and
-                                    stack[-1] is markobject):
-            assert markobject not in after
-            if __debug__:
-                if markobject in before:
-                    assert before[-1] is stackslice
-            if markstack:
-                markpos = markstack.pop()
-                if markpos is None:
-                    markmsg = "(MARK at unknown opcode offset)"
-                else:
-                    markmsg = "(MARK at %d)" % markpos
-                # Pop everything at and after the topmost markobject.
-                while stack[-1] is not markobject:
-                    stack.pop()
-                stack.pop()
-                # Stop later code from popping too much.
-                try:
-                    numtopop = before.index(markobject)
-                except ValueError:
-                    assert opcode.name == "POP"
-                    numtopop = 0
-            else:
-                errormsg = markmsg = "no MARK exists on stack"
-
-        # Check for correct memo usage.
-        if opcode.name in ("PUT", "BINPUT", "LONG_BINPUT"):
-            assert arg is not None
-            if arg in memo:
-                errormsg = "memo key %r already defined" % arg
-            elif not stack:
-                errormsg = "stack is empty -- can't store into memo"
-            elif stack[-1] is markobject:
-                errormsg = "can't store markobject in the memo"
-            else:
-                memo[arg] = stack[-1]
-
-        elif opcode.name in ("GET", "BINGET", "LONG_BINGET"):
-            if arg in memo:
-                assert len(after) == 1
-                after = [memo[arg]]     # for better stack emulation
-            else:
-                errormsg = "memo key %r has never been stored into" % arg
-
-        if arg is not None or markmsg:
-            # make a mild effort to align arguments
-            line += ' ' * (10 - len(opcode.name))
-            if arg is not None:
-                line += ' ' + repr(arg)
-            if markmsg:
-                line += ' ' + markmsg
-        print >> out, line
-
-        if errormsg:
-            # Note that we delayed complaining until the offending opcode
-            # was printed.
-            raise ValueError(errormsg)
-
-        # Emulate the stack effects.
-        if len(stack) < numtopop:
-            raise ValueError("tries to pop %d items from stack with "
-                             "only %d items" % (numtopop, len(stack)))
-        if numtopop:
-            del stack[-numtopop:]
-        if markobject in after:
-            assert markobject not in before
-            markstack.append(pos)
-
-        stack.extend(after)
-
-    print >> out, "highest protocol among opcodes =", maxproto
-    if stack:
-        raise ValueError("stack not empty after STOP: %r" % stack)
-
-# For use in the doctest, simply as an example of a class to pickle.
-class _Example:
-    def __init__(self, value):
-        self.value = value
-
-_dis_test = r"""
->>> import pickle
->>> x = [1, 2, (3, 4), {'abc': u"def"}]
->>> pkl = pickle.dumps(x, 0)
->>> dis(pkl)
-    0: (    MARK
-    1: l        LIST       (MARK at 0)
-    2: p    PUT        0
-    5: I    INT        1
-    8: a    APPEND
-    9: I    INT        2
-   12: a    APPEND
-   13: (    MARK
-   14: I        INT        3
-   17: I        INT        4
-   20: t        TUPLE      (MARK at 13)
-   21: p    PUT        1
-   24: a    APPEND
-   25: (    MARK
-   26: d        DICT       (MARK at 25)
-   27: p    PUT        2
-   30: S    STRING     'abc'
-   37: p    PUT        3
-   40: V    UNICODE    u'def'
-   45: p    PUT        4
-   48: s    SETITEM
-   49: a    APPEND
-   50: .    STOP
-highest protocol among opcodes = 0
-
-Try again with a "binary" pickle.
-
->>> pkl = pickle.dumps(x, 1)
->>> dis(pkl)
-    0: ]    EMPTY_LIST
-    1: q    BINPUT     0
-    3: (    MARK
-    4: K        BININT1    1
-    6: K        BININT1    2
-    8: (        MARK
-    9: K            BININT1    3
-   11: K            BININT1    4
-   13: t            TUPLE      (MARK at 8)
-   14: q        BINPUT     1
-   16: }        EMPTY_DICT
-   17: q        BINPUT     2
-   19: U        SHORT_BINSTRING 'abc'
-   24: q        BINPUT     3
-   26: X        BINUNICODE u'def'
-   34: q        BINPUT     4
-   36: s        SETITEM
-   37: e        APPENDS    (MARK at 3)
-   38: .    STOP
-highest protocol among opcodes = 1
-
-Exercise the INST/OBJ/BUILD family.
-
->>> import pickletools
->>> dis(pickle.dumps(pickletools.dis, 0))
-    0: c    GLOBAL     'pickletools dis'
-   17: p    PUT        0
-   20: .    STOP
-highest protocol among opcodes = 0
-
->>> from pickletools import _Example
->>> x = [_Example(42)] * 2
->>> dis(pickle.dumps(x, 0))
-    0: (    MARK
-    1: l        LIST       (MARK at 0)
-    2: p    PUT        0
-    5: (    MARK
-    6: i        INST       'pickletools _Example' (MARK at 5)
-   28: p    PUT        1
-   31: (    MARK
-   32: d        DICT       (MARK at 31)
-   33: p    PUT        2
-   36: S    STRING     'value'
-   45: p    PUT        3
-   48: I    INT        42
-   52: s    SETITEM
-   53: b    BUILD
-   54: a    APPEND
-   55: g    GET        1
-   58: a    APPEND
-   59: .    STOP
-highest protocol among opcodes = 0
-
->>> dis(pickle.dumps(x, 1))
-    0: ]    EMPTY_LIST
-    1: q    BINPUT     0
-    3: (    MARK
-    4: (        MARK
-    5: c            GLOBAL     'pickletools _Example'
-   27: q            BINPUT     1
-   29: o            OBJ        (MARK at 4)
-   30: q        BINPUT     2
-   32: }        EMPTY_DICT
-   33: q        BINPUT     3
-   35: U        SHORT_BINSTRING 'value'
-   42: q        BINPUT     4
-   44: K        BININT1    42
-   46: s        SETITEM
-   47: b        BUILD
-   48: h        BINGET     2
-   50: e        APPENDS    (MARK at 3)
-   51: .    STOP
-highest protocol among opcodes = 1
-
-Try "the canonical" recursive-object test.
-
->>> L = []
->>> T = L,
->>> L.append(T)
->>> L[0] is T
-True
->>> T[0] is L
-True
->>> L[0][0] is L
-True
->>> T[0][0] is T
-True
->>> dis(pickle.dumps(L, 0))
-    0: (    MARK
-    1: l        LIST       (MARK at 0)
-    2: p    PUT        0
-    5: (    MARK
-    6: g        GET        0
-    9: t        TUPLE      (MARK at 5)
-   10: p    PUT        1
-   13: a    APPEND
-   14: .    STOP
-highest protocol among opcodes = 0
-
->>> dis(pickle.dumps(L, 1))
-    0: ]    EMPTY_LIST
-    1: q    BINPUT     0
-    3: (    MARK
-    4: h        BINGET     0
-    6: t        TUPLE      (MARK at 3)
-    7: q    BINPUT     1
-    9: a    APPEND
-   10: .    STOP
-highest protocol among opcodes = 1
-
-Note that, in the protocol 0 pickle of the recursive tuple, the disassembler
-has to emulate the stack in order to realize that the POP opcode at 16 gets
-rid of the MARK at 0.
-
->>> dis(pickle.dumps(T, 0))
-    0: (    MARK
-    1: (        MARK
-    2: l            LIST       (MARK at 1)
-    3: p        PUT        0
-    6: (        MARK
-    7: g            GET        0
-   10: t            TUPLE      (MARK at 6)
-   11: p        PUT        1
-   14: a        APPEND
-   15: 0        POP
-   16: 0        POP        (MARK at 0)
-   17: g    GET        1
-   20: .    STOP
-highest protocol among opcodes = 0
-
->>> dis(pickle.dumps(T, 1))
-    0: (    MARK
-    1: ]        EMPTY_LIST
-    2: q        BINPUT     0
-    4: (        MARK
-    5: h            BINGET     0
-    7: t            TUPLE      (MARK at 4)
-    8: q        BINPUT     1
-   10: a        APPEND
-   11: 1        POP_MARK   (MARK at 0)
-   12: h    BINGET     1
-   14: .    STOP
-highest protocol among opcodes = 1
-
-Try protocol 2.
-
->>> dis(pickle.dumps(L, 2))
-    0: \x80 PROTO      2
-    2: ]    EMPTY_LIST
-    3: q    BINPUT     0
-    5: h    BINGET     0
-    7: \x85 TUPLE1
-    8: q    BINPUT     1
-   10: a    APPEND
-   11: .    STOP
-highest protocol among opcodes = 2
-
->>> dis(pickle.dumps(T, 2))
-    0: \x80 PROTO      2
-    2: ]    EMPTY_LIST
-    3: q    BINPUT     0
-    5: h    BINGET     0
-    7: \x85 TUPLE1
-    8: q    BINPUT     1
-   10: a    APPEND
-   11: 0    POP
-   12: h    BINGET     1
-   14: .    STOP
-highest protocol among opcodes = 2
-"""
-
-_memo_test = r"""
->>> import pickle
->>> from StringIO import StringIO
->>> f = StringIO()
->>> p = pickle.Pickler(f, 2)
->>> x = [1, 2, 3]
->>> p.dump(x)
->>> p.dump(x)
->>> f.seek(0)
->>> memo = {}
->>> dis(f, memo=memo)
-    0: \x80 PROTO      2
-    2: ]    EMPTY_LIST
-    3: q    BINPUT     0
-    5: (    MARK
-    6: K        BININT1    1
-    8: K        BININT1    2
-   10: K        BININT1    3
-   12: e        APPENDS    (MARK at 5)
-   13: .    STOP
-highest protocol among opcodes = 2
->>> dis(f, memo=memo)
-   14: \x80 PROTO      2
-   16: h    BINGET     0
-   18: .    STOP
-highest protocol among opcodes = 2
-"""
-
-__test__ = {'disassembler_test': _dis_test,
-            'disassembler_memo_test': _memo_test,
-           }
-
-def _test():
-    import doctest
-    return doctest.testmod()
-
-if __name__ == "__main__":
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/pipes.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/pipes.py
deleted file mode 100644
index 79a3d5e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/pipes.py
+++ /dev/null
@@ -1,280 +0,0 @@
-"""Conversion pipeline templates.
-
-The problem:
-------------
-
-Suppose you have some data that you want to convert to another format,
-such as from GIF image format to PPM image format.  Maybe the
-conversion involves several steps (e.g. piping it through compress or
-uuencode).  Some of the conversion steps may require that their input
-is a disk file, others may be able to read standard input; similar for
-their output.  The input to the entire conversion may also be read
-from a disk file or from an open file, and similar for its output.
-
-The module lets you construct a pipeline template by sticking one or
-more conversion steps together.  It will take care of creating and
-removing temporary files if they are necessary to hold intermediate
-data.  You can then use the template to do conversions from many
-different sources to many different destinations.  The temporary
-file names used are different each time the template is used.
-
-The templates are objects so you can create templates for many
-different conversion steps and store them in a dictionary, for
-instance.
-
-
-Directions:
------------
-
-To create a template:
-    t = Template()
-
-To add a conversion step to a template:
-   t.append(command, kind)
-where kind is a string of two characters: the first is '-' if the
-command reads its standard input or 'f' if it requires a file; the
-second likewise for the output. The command must be valid /bin/sh
-syntax.  If input or output files are required, they are passed as
-$IN and $OUT; otherwise, it must be  possible to use the command in
-a pipeline.
-
-To add a conversion step at the beginning:
-   t.prepend(command, kind)
-
-To convert a file to another file using a template:
-  sts = t.copy(infile, outfile)
-If infile or outfile are the empty string, standard input is read or
-standard output is written, respectively.  The return value is the
-exit status of the conversion pipeline.
-
-To open a file for reading or writing through a conversion pipeline:
-   fp = t.open(file, mode)
-where mode is 'r' to read the file, or 'w' to write it -- just like
-for the built-in function open() or for os.popen().
-
-To create a new template object initialized to a given one:
-   t2 = t.clone()
-
-For an example, see the function test() at the end of the file.
-"""                                     # '
-
-
-import re
-import os
-import tempfile
-import string
-
-__all__ = ["Template"]
-
-# Conversion step kinds
-
-FILEIN_FILEOUT = 'ff'                   # Must read & write real files
-STDIN_FILEOUT  = '-f'                   # Must write a real file
-FILEIN_STDOUT  = 'f-'                   # Must read a real file
-STDIN_STDOUT   = '--'                   # Normal pipeline element
-SOURCE         = '.-'                   # Must be first, writes stdout
-SINK           = '-.'                   # Must be last, reads stdin
-
-stepkinds = [FILEIN_FILEOUT, STDIN_FILEOUT, FILEIN_STDOUT, STDIN_STDOUT, \
-             SOURCE, SINK]
-
-
-class Template:
-    """Class representing a pipeline template."""
-
-    def __init__(self):
-        """Template() returns a fresh pipeline template."""
-        self.debugging = 0
-        self.reset()
-
-    def __repr__(self):
-        """t.__repr__() implements repr(t)."""
-        return '<Template instance, steps=%r>' % (self.steps,)
-
-    def reset(self):
-        """t.reset() restores a pipeline template to its initial state."""
-        self.steps = []
-
-    def clone(self):
-        """t.clone() returns a new pipeline template with identical
-        initial state as the current one."""
-        t = Template()
-        t.steps = self.steps[:]
-        t.debugging = self.debugging
-        return t
-
-    def debug(self, flag):
-        """t.debug(flag) turns debugging on or off."""
-        self.debugging = flag
-
-    def append(self, cmd, kind):
-        """t.append(cmd, kind) adds a new step at the end."""
-        if type(cmd) is not type(''):
-            raise TypeError, \
-                  'Template.append: cmd must be a string'
-        if kind not in stepkinds:
-            raise ValueError, \
-                  'Template.append: bad kind %r' % (kind,)
-        if kind == SOURCE:
-            raise ValueError, \
-                  'Template.append: SOURCE can only be prepended'
-        if self.steps and self.steps[-1][1] == SINK:
-            raise ValueError, \
-                  'Template.append: already ends with SINK'
-        if kind[0] == 'f' and not re.search(r'\$IN\b', cmd):
-            raise ValueError, \
-                  'Template.append: missing $IN in cmd'
-        if kind[1] == 'f' and not re.search(r'\$OUT\b', cmd):
-            raise ValueError, \
-                  'Template.append: missing $OUT in cmd'
-        self.steps.append((cmd, kind))
-
-    def prepend(self, cmd, kind):
-        """t.prepend(cmd, kind) adds a new step at the front."""
-        if type(cmd) is not type(''):
-            raise TypeError, \
-                  'Template.prepend: cmd must be a string'
-        if kind not in stepkinds:
-            raise ValueError, \
-                  'Template.prepend: bad kind %r' % (kind,)
-        if kind == SINK:
-            raise ValueError, \
-                  'Template.prepend: SINK can only be appended'
-        if self.steps and self.steps[0][1] == SOURCE:
-            raise ValueError, \
-                  'Template.prepend: already begins with SOURCE'
-        if kind[0] == 'f' and not re.search(r'\$IN\b', cmd):
-            raise ValueError, \
-                  'Template.prepend: missing $IN in cmd'
-        if kind[1] == 'f' and not re.search(r'\$OUT\b', cmd):
-            raise ValueError, \
-                  'Template.prepend: missing $OUT in cmd'
-        self.steps.insert(0, (cmd, kind))
-
-    def open(self, file, rw):
-        """t.open(file, rw) returns a pipe or file object open for
-        reading or writing; the file is the other end of the pipeline."""
-        if rw == 'r':
-            return self.open_r(file)
-        if rw == 'w':
-            return self.open_w(file)
-        raise ValueError, \
-              'Template.open: rw must be \'r\' or \'w\', not %r' % (rw,)
-
-    def open_r(self, file):
-        """t.open_r(file) and t.open_w(file) implement
-        t.open(file, 'r') and t.open(file, 'w') respectively."""
-        if not self.steps:
-            return open(file, 'r')
-        if self.steps[-1][1] == SINK:
-            raise ValueError, \
-                  'Template.open_r: pipeline ends width SINK'
-        cmd = self.makepipeline(file, '')
-        return os.popen(cmd, 'r')
-
-    def open_w(self, file):
-        if not self.steps:
-            return open(file, 'w')
-        if self.steps[0][1] == SOURCE:
-            raise ValueError, \
-                  'Template.open_w: pipeline begins with SOURCE'
-        cmd = self.makepipeline('', file)
-        return os.popen(cmd, 'w')
-
-    def copy(self, infile, outfile):
-        return os.system(self.makepipeline(infile, outfile))
-
-    def makepipeline(self, infile, outfile):
-        cmd = makepipeline(infile, self.steps, outfile)
-        if self.debugging:
-            print cmd
-            cmd = 'set -x; ' + cmd
-        return cmd
-
-
-def makepipeline(infile, steps, outfile):
-    # Build a list with for each command:
-    # [input filename or '', command string, kind, output filename or '']
-
-    list = []
-    for cmd, kind in steps:
-        list.append(['', cmd, kind, ''])
-    #
-    # Make sure there is at least one step
-    #
-    if not list:
-        list.append(['', 'cat', '--', ''])
-    #
-    # Take care of the input and output ends
-    #
-    [cmd, kind] = list[0][1:3]
-    if kind[0] == 'f' and not infile:
-        list.insert(0, ['', 'cat', '--', ''])
-    list[0][0] = infile
-    #
-    [cmd, kind] = list[-1][1:3]
-    if kind[1] == 'f' and not outfile:
-        list.append(['', 'cat', '--', ''])
-    list[-1][-1] = outfile
-    #
-    # Invent temporary files to connect stages that need files
-    #
-    garbage = []
-    for i in range(1, len(list)):
-        lkind = list[i-1][2]
-        rkind = list[i][2]
-        if lkind[1] == 'f' or rkind[0] == 'f':
-            (fd, temp) = tempfile.mkstemp()
-            os.close(fd)
-            garbage.append(temp)
-            list[i-1][-1] = list[i][0] = temp
-    #
-    for item in list:
-        [inf, cmd, kind, outf] = item
-        if kind[1] == 'f':
-            cmd = 'OUT=' + quote(outf) + '; ' + cmd
-        if kind[0] == 'f':
-            cmd = 'IN=' + quote(inf) + '; ' + cmd
-        if kind[0] == '-' and inf:
-            cmd = cmd + ' <' + quote(inf)
-        if kind[1] == '-' and outf:
-            cmd = cmd + ' >' + quote(outf)
-        item[1] = cmd
-    #
-    cmdlist = list[0][1]
-    for item in list[1:]:
-        [cmd, kind] = item[1:3]
-        if item[0] == '':
-            if 'f' in kind:
-                cmd = '{ ' + cmd + '; }'
-            cmdlist = cmdlist + ' |\n' + cmd
-        else:
-            cmdlist = cmdlist + '\n' + cmd
-    #
-    if garbage:
-        rmcmd = 'rm -f'
-        for file in garbage:
-            rmcmd = rmcmd + ' ' + quote(file)
-        trapcmd = 'trap ' + quote(rmcmd + '; exit') + ' 1 2 3 13 14 15'
-        cmdlist = trapcmd + '\n' + cmdlist + '\n' + rmcmd
-    #
-    return cmdlist
-
-
-# Reliably quote a string as a single argument for /bin/sh
-
-# Safe unquoted
-_safechars = frozenset(string.ascii_letters + string.digits + '@%_-+=:,./')
-
-def quote(file):
-    """Return a shell-escaped version of the file string."""
-    for c in file:
-        if c not in _safechars:
-            break
-    else:
-        if not file:
-            return "''"
-        return file
-    # use single quotes, and put single quotes into double quotes
-    # the string $'b is then quoted as '$'"'"'b'
-    return "'" + file.replace("'", "'\"'\"'") + "'"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/pkgutil.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/pkgutil.py
deleted file mode 100644
index 6a0c978..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/pkgutil.py
+++ /dev/null
@@ -1,583 +0,0 @@
-"""Utilities to support packages."""
-
-# NOTE: This module must remain compatible with Python 2.3, as it is shared
-# by setuptools for distribution with Python 2.3 and up.
-
-import os
-import sys
-import imp
-import os.path
-from types import ModuleType
-
-__all__ = [
-    'get_importer', 'iter_importers', 'get_loader', 'find_loader',
-    'walk_packages', 'iter_modules', 'get_data',
-    'ImpImporter', 'ImpLoader', 'read_code', 'extend_path',
-]
-
-def read_code(stream):
-    # This helper is needed in order for the PEP 302 emulation to
-    # correctly handle compiled files
-    import marshal
-
-    magic = stream.read(4)
-    if magic != imp.get_magic():
-        return None
-
-    stream.read(4) # Skip timestamp
-    return marshal.load(stream)
-
-
-def simplegeneric(func):
-    """Make a trivial single-dispatch generic function"""
-    registry = {}
-    def wrapper(*args, **kw):
-        ob = args[0]
-        try:
-            cls = ob.__class__
-        except AttributeError:
-            cls = type(ob)
-        try:
-            mro = cls.__mro__
-        except AttributeError:
-            try:
-                class cls(cls, object):
-                    pass
-                mro = cls.__mro__[1:]
-            except TypeError:
-                mro = object,   # must be an ExtensionClass or some such  :(
-        for t in mro:
-            if t in registry:
-                return registry[t](*args, **kw)
-        else:
-            return func(*args, **kw)
-    try:
-        wrapper.__name__ = func.__name__
-    except (TypeError, AttributeError):
-        pass    # Python 2.3 doesn't allow functions to be renamed
-
-    def register(typ, func=None):
-        if func is None:
-            return lambda f: register(typ, f)
-        registry[typ] = func
-        return func
-
-    wrapper.__dict__ = func.__dict__
-    wrapper.__doc__ = func.__doc__
-    wrapper.register = register
-    return wrapper
-
-
-def walk_packages(path=None, prefix='', onerror=None):
-    """Yields (module_loader, name, ispkg) for all modules recursively
-    on path, or, if path is None, all accessible modules.
-
-    'path' should be either None or a list of paths to look for
-    modules in.
-
-    'prefix' is a string to output on the front of every module name
-    on output.
-
-    Note that this function must import all *packages* (NOT all
-    modules!) on the given path, in order to access the __path__
-    attribute to find submodules.
-
-    'onerror' is a function which gets called with one argument (the
-    name of the package which was being imported) if any exception
-    occurs while trying to import a package.  If no onerror function is
-    supplied, ImportErrors are caught and ignored, while all other
-    exceptions are propagated, terminating the search.
-
-    Examples:
-
-    # list all modules python can access
-    walk_packages()
-
-    # list all submodules of ctypes
-    walk_packages(ctypes.__path__, ctypes.__name__+'.')
-    """
-
-    def seen(p, m={}):
-        if p in m:
-            return True
-        m[p] = True
-
-    for importer, name, ispkg in iter_modules(path, prefix):
-        yield importer, name, ispkg
-
-        if ispkg:
-            try:
-                __import__(name)
-            except ImportError:
-                if onerror is not None:
-                    onerror(name)
-            except Exception:
-                if onerror is not None:
-                    onerror(name)
-                else:
-                    raise
-            else:
-                path = getattr(sys.modules[name], '__path__', None) or []
-
-                # don't traverse path items we've seen before
-                path = [p for p in path if not seen(p)]
-
-                for item in walk_packages(path, name+'.', onerror):
-                    yield item
-
-
-def iter_modules(path=None, prefix=''):
-    """Yields (module_loader, name, ispkg) for all submodules on path,
-    or, if path is None, all top-level modules on sys.path.
-
-    'path' should be either None or a list of paths to look for
-    modules in.
-
-    'prefix' is a string to output on the front of every module name
-    on output.
-    """
-
-    if path is None:
-        importers = iter_importers()
-    else:
-        importers = map(get_importer, path)
-
-    yielded = {}
-    for i in importers:
-        for name, ispkg in iter_importer_modules(i, prefix):
-            if name not in yielded:
-                yielded[name] = 1
-                yield i, name, ispkg
-
-
-#@simplegeneric
-def iter_importer_modules(importer, prefix=''):
-    if not hasattr(importer, 'iter_modules'):
-        return []
-    return importer.iter_modules(prefix)
-
-iter_importer_modules = simplegeneric(iter_importer_modules)
-
-
-class ImpImporter:
-    """PEP 302 Importer that wraps Python's "classic" import algorithm
-
-    ImpImporter(dirname) produces a PEP 302 importer that searches that
-    directory.  ImpImporter(None) produces a PEP 302 importer that searches
-    the current sys.path, plus any modules that are frozen or built-in.
-
-    Note that ImpImporter does not currently support being used by placement
-    on sys.meta_path.
-    """
-
-    def __init__(self, path=None):
-        self.path = path
-
-    def find_module(self, fullname, path=None):
-        # Note: we ignore 'path' argument since it is only used via meta_path
-        subname = fullname.split(".")[-1]
-        if subname != fullname and self.path is None:
-            return None
-        if self.path is None:
-            path = None
-        else:
-            path = [os.path.realpath(self.path)]
-        try:
-            file, filename, etc = imp.find_module(subname, path)
-        except ImportError:
-            return None
-        return ImpLoader(fullname, file, filename, etc)
-
-    def iter_modules(self, prefix=''):
-        if self.path is None or not os.path.isdir(self.path):
-            return
-
-        yielded = {}
-        import inspect
-
-        filenames = os.listdir(self.path)
-        filenames.sort()  # handle packages before same-named modules
-
-        for fn in filenames:
-            modname = inspect.getmodulename(fn)
-            if modname=='__init__' or modname in yielded:
-                continue
-
-            path = os.path.join(self.path, fn)
-            ispkg = False
-
-            if not modname and os.path.isdir(path) and '.' not in fn:
-                modname = fn
-                for fn in os.listdir(path):
-                    subname = inspect.getmodulename(fn)
-                    if subname=='__init__':
-                        ispkg = True
-                        break
-                else:
-                    continue    # not a package
-
-            if modname and '.' not in modname:
-                yielded[modname] = 1
-                yield prefix + modname, ispkg
-
-
-class ImpLoader:
-    """PEP 302 Loader that wraps Python's "classic" import algorithm
-    """
-    code = source = None
-
-    def __init__(self, fullname, file, filename, etc):
-        self.file = file
-        self.filename = filename
-        self.fullname = fullname
-        self.etc = etc
-
-    def load_module(self, fullname):
-        self._reopen()
-        try:
-            mod = imp.load_module(fullname, self.file, self.filename, self.etc)
-        finally:
-            if self.file:
-                self.file.close()
-        # Note: we don't set __loader__ because we want the module to look
-        # normal; i.e. this is just a wrapper for standard import machinery
-        return mod
-
-    def get_data(self, pathname):
-        return open(pathname, "rb").read()
-
-    def _reopen(self):
-        if self.file and self.file.closed:
-            mod_type = self.etc[2]
-            if mod_type==imp.PY_SOURCE:
-                self.file = open(self.filename, 'rU')
-            elif mod_type in (imp.PY_COMPILED, imp.C_EXTENSION):
-                self.file = open(self.filename, 'rb')
-
-    def _fix_name(self, fullname):
-        if fullname is None:
-            fullname = self.fullname
-        elif fullname != self.fullname:
-            raise ImportError("Loader for module %s cannot handle "
-                              "module %s" % (self.fullname, fullname))
-        return fullname
-
-    def is_package(self, fullname):
-        fullname = self._fix_name(fullname)
-        return self.etc[2]==imp.PKG_DIRECTORY
-
-    def get_code(self, fullname=None):
-        fullname = self._fix_name(fullname)
-        if self.code is None:
-            mod_type = self.etc[2]
-            if mod_type==imp.PY_SOURCE:
-                source = self.get_source(fullname)
-                self.code = compile(source, self.filename, 'exec')
-            elif mod_type==imp.PY_COMPILED:
-                self._reopen()
-                try:
-                    self.code = read_code(self.file)
-                finally:
-                    self.file.close()
-            elif mod_type==imp.PKG_DIRECTORY:
-                self.code = self._get_delegate().get_code()
-        return self.code
-
-    def get_source(self, fullname=None):
-        fullname = self._fix_name(fullname)
-        if self.source is None:
-            mod_type = self.etc[2]
-            if mod_type==imp.PY_SOURCE:
-                self._reopen()
-                try:
-                    self.source = self.file.read()
-                finally:
-                    self.file.close()
-            elif mod_type==imp.PY_COMPILED:
-                if os.path.exists(self.filename[:-1]):
-                    f = open(self.filename[:-1], 'rU')
-                    self.source = f.read()
-                    f.close()
-            elif mod_type==imp.PKG_DIRECTORY:
-                self.source = self._get_delegate().get_source()
-        return self.source
-
-
-    def _get_delegate(self):
-        return ImpImporter(self.filename).find_module('__init__')
-
-    def get_filename(self, fullname=None):
-        fullname = self._fix_name(fullname)
-        mod_type = self.etc[2]
-        if self.etc[2]==imp.PKG_DIRECTORY:
-            return self._get_delegate().get_filename()
-        elif self.etc[2] in (imp.PY_SOURCE, imp.PY_COMPILED, imp.C_EXTENSION):
-            return self.filename
-        return None
-
-
-try:
-    import zipimport
-    from zipimport import zipimporter
-
-    def iter_zipimport_modules(importer, prefix=''):
-        dirlist = zipimport._zip_directory_cache[importer.archive].keys()
-        dirlist.sort()
-        _prefix = importer.prefix
-        plen = len(_prefix)
-        yielded = {}
-        import inspect
-        for fn in dirlist:
-            if not fn.startswith(_prefix):
-                continue
-
-            fn = fn[plen:].split(os.sep)
-
-            if len(fn)==2 and fn[1].startswith('__init__.py'):
-                if fn[0] not in yielded:
-                    yielded[fn[0]] = 1
-                    yield fn[0], True
-
-            if len(fn)!=1:
-                continue
-
-            modname = inspect.getmodulename(fn[0])
-            if modname=='__init__':
-                continue
-
-            if modname and '.' not in modname and modname not in yielded:
-                yielded[modname] = 1
-                yield prefix + modname, False
-
-    iter_importer_modules.register(zipimporter, iter_zipimport_modules)
-
-except ImportError:
-    pass
-
-
-def get_importer(path_item):
-    """Retrieve a PEP 302 importer for the given path item
-
-    The returned importer is cached in sys.path_importer_cache
-    if it was newly created by a path hook.
-
-    If there is no importer, a wrapper around the basic import
-    machinery is returned. This wrapper is never inserted into
-    the importer cache (None is inserted instead).
-
-    The cache (or part of it) can be cleared manually if a
-    rescan of sys.path_hooks is necessary.
-    """
-    try:
-        importer = sys.path_importer_cache[path_item]
-    except KeyError:
-        for path_hook in sys.path_hooks:
-            try:
-                importer = path_hook(path_item)
-                break
-            except ImportError:
-                pass
-        else:
-            importer = None
-        sys.path_importer_cache.setdefault(path_item, importer)
-
-    if importer is None:
-        try:
-            importer = ImpImporter(path_item)
-        except ImportError:
-            importer = None
-    return importer
-
-
-def iter_importers(fullname=""):
-    """Yield PEP 302 importers for the given module name
-
-    If fullname contains a '.', the importers will be for the package
-    containing fullname, otherwise they will be importers for sys.meta_path,
-    sys.path, and Python's "classic" import machinery, in that order.  If
-    the named module is in a package, that package is imported as a side
-    effect of invoking this function.
-
-    Non PEP 302 mechanisms (e.g. the Windows registry) used by the
-    standard import machinery to find files in alternative locations
-    are partially supported, but are searched AFTER sys.path. Normally,
-    these locations are searched BEFORE sys.path, preventing sys.path
-    entries from shadowing them.
-
-    For this to cause a visible difference in behaviour, there must
-    be a module or package name that is accessible via both sys.path
-    and one of the non PEP 302 file system mechanisms. In this case,
-    the emulation will find the former version, while the builtin
-    import mechanism will find the latter.
-
-    Items of the following types can be affected by this discrepancy:
-        imp.C_EXTENSION, imp.PY_SOURCE, imp.PY_COMPILED, imp.PKG_DIRECTORY
-    """
-    if fullname.startswith('.'):
-        raise ImportError("Relative module names not supported")
-    if '.' in fullname:
-        # Get the containing package's __path__
-        pkg = '.'.join(fullname.split('.')[:-1])
-        if pkg not in sys.modules:
-            __import__(pkg)
-        path = getattr(sys.modules[pkg], '__path__', None) or []
-    else:
-        for importer in sys.meta_path:
-            yield importer
-        path = sys.path
-    for item in path:
-        yield get_importer(item)
-    if '.' not in fullname:
-        yield ImpImporter()
-
-def get_loader(module_or_name):
-    """Get a PEP 302 "loader" object for module_or_name
-
-    If the module or package is accessible via the normal import
-    mechanism, a wrapper around the relevant part of that machinery
-    is returned.  Returns None if the module cannot be found or imported.
-    If the named module is not already imported, its containing package
-    (if any) is imported, in order to establish the package __path__.
-
-    This function uses iter_importers(), and is thus subject to the same
-    limitations regarding platform-specific special import locations such
-    as the Windows registry.
-    """
-    if module_or_name in sys.modules:
-        module_or_name = sys.modules[module_or_name]
-    if isinstance(module_or_name, ModuleType):
-        module = module_or_name
-        loader = getattr(module, '__loader__', None)
-        if loader is not None:
-            return loader
-        fullname = module.__name__
-    else:
-        fullname = module_or_name
-    return find_loader(fullname)
-
-def find_loader(fullname):
-    """Find a PEP 302 "loader" object for fullname
-
-    If fullname contains dots, path must be the containing package's __path__.
-    Returns None if the module cannot be found or imported. This function uses
-    iter_importers(), and is thus subject to the same limitations regarding
-    platform-specific special import locations such as the Windows registry.
-    """
-    for importer in iter_importers(fullname):
-        loader = importer.find_module(fullname)
-        if loader is not None:
-            return loader
-
-    return None
-
-
-def extend_path(path, name):
-    """Extend a package's path.
-
-    Intended use is to place the following code in a package's __init__.py:
-
-        from pkgutil import extend_path
-        __path__ = extend_path(__path__, __name__)
-
-    This will add to the package's __path__ all subdirectories of
-    directories on sys.path named after the package.  This is useful
-    if one wants to distribute different parts of a single logical
-    package as multiple directories.
-
-    It also looks for *.pkg files beginning where * matches the name
-    argument.  This feature is similar to *.pth files (see site.py),
-    except that it doesn't special-case lines starting with 'import'.
-    A *.pkg file is trusted at face value: apart from checking for
-    duplicates, all entries found in a *.pkg file are added to the
-    path, regardless of whether they are exist the filesystem.  (This
-    is a feature.)
-
-    If the input path is not a list (as is the case for frozen
-    packages) it is returned unchanged.  The input path is not
-    modified; an extended copy is returned.  Items are only appended
-    to the copy at the end.
-
-    It is assumed that sys.path is a sequence.  Items of sys.path that
-    are not (unicode or 8-bit) strings referring to existing
-    directories are ignored.  Unicode items of sys.path that cause
-    errors when used as filenames may cause this function to raise an
-    exception (in line with os.path.isdir() behavior).
-    """
-
-    if not isinstance(path, list):
-        # This could happen e.g. when this is called from inside a
-        # frozen package.  Return the path unchanged in that case.
-        return path
-
-    pname = os.path.join(*name.split('.')) # Reconstitute as relative path
-    # Just in case os.extsep != '.'
-    sname = os.extsep.join(name.split('.'))
-    sname_pkg = sname + os.extsep + "pkg"
-    init_py = "__init__" + os.extsep + "py"
-
-    path = path[:] # Start with a copy of the existing path
-
-    for dir in sys.path:
-        if not isinstance(dir, basestring) or not os.path.isdir(dir):
-            continue
-        subdir = os.path.join(dir, pname)
-        # XXX This may still add duplicate entries to path on
-        # case-insensitive filesystems
-        initfile = os.path.join(subdir, init_py)
-        if subdir not in path and os.path.isfile(initfile):
-            path.append(subdir)
-        # XXX Is this the right thing for subpackages like zope.app?
-        # It looks for a file named "zope.app.pkg"
-        pkgfile = os.path.join(dir, sname_pkg)
-        if os.path.isfile(pkgfile):
-            try:
-                f = open(pkgfile)
-            except IOError, msg:
-                sys.stderr.write("Can't open %s: %s\n" %
-                                 (pkgfile, msg))
-            else:
-                for line in f:
-                    line = line.rstrip('\n')
-                    if not line or line.startswith('#'):
-                        continue
-                    path.append(line) # Don't check for existence!
-                f.close()
-
-    return path
-
-def get_data(package, resource):
-    """Get a resource from a package.
-
-    This is a wrapper round the PEP 302 loader get_data API. The package
-    argument should be the name of a package, in standard module format
-    (foo.bar). The resource argument should be in the form of a relative
-    filename, using '/' as the path separator. The parent directory name '..'
-    is not allowed, and nor is a rooted name (starting with a '/').
-
-    The function returns a binary string, which is the contents of the
-    specified resource.
-
-    For packages located in the filesystem, which have already been imported,
-    this is the rough equivalent of
-
-        d = os.path.dirname(sys.modules[package].__file__)
-        data = open(os.path.join(d, resource), 'rb').read()
-
-    If the package cannot be located or loaded, or it uses a PEP 302 loader
-    which does not support get_data(), then None is returned.
-    """
-
-    loader = get_loader(package)
-    if loader is None or not hasattr(loader, 'get_data'):
-        return None
-    mod = sys.modules.get(package) or loader.load_module(package)
-    if mod is None or not hasattr(mod, '__file__'):
-        return None
-
-    # Modify the resource name to be compatible with the loader.get_data
-    # signature - an os.path format "filename" starting with the dirname of
-    # the package's __file__
-    parts = resource.split('/')
-    parts.insert(0, os.path.dirname(mod.__file__))
-    resource_name = os.path.join(*parts)
-    return loader.get_data(resource_name)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/platform.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/platform.py
deleted file mode 100644
index 16321ab..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/platform.py
+++ /dev/null
@@ -1,1614 +0,0 @@
-#!/usr/bin/env python
-
-""" This module tries to retrieve as much platform-identifying data as
-    possible. It makes this information available via function APIs.
-
-    If called from the command line, it prints the platform
-    information concatenated as single string to stdout. The output
-    format is useable as part of a filename.
-
-"""
-#    This module is maintained by Marc-Andre Lemburg <mal@egenix.com>.
-#    If you find problems, please submit bug reports/patches via the
-#    Python bug tracker (http://bugs.python.org) and assign them to "lemburg".
-#
-#    Note: Please keep this module compatible to Python 1.5.2.
-#
-#    Still needed:
-#    * more support for WinCE
-#    * support for MS-DOS (PythonDX ?)
-#    * support for Amiga and other still unsupported platforms running Python
-#    * support for additional Linux distributions
-#
-#    Many thanks to all those who helped adding platform-specific
-#    checks (in no particular order):
-#
-#      Charles G Waldman, David Arnold, Gordon McMillan, Ben Darnell,
-#      Jeff Bauer, Cliff Crawford, Ivan Van Laningham, Josef
-#      Betancourt, Randall Hopper, Karl Putland, John Farrell, Greg
-#      Andruk, Just van Rossum, Thomas Heller, Mark R. Levinson, Mark
-#      Hammond, Bill Tutt, Hans Nowak, Uwe Zessin (OpenVMS support),
-#      Colin Kong, Trent Mick, Guido van Rossum, Anthony Baxter
-#
-#    History:
-#
-#    <see CVS and SVN checkin messages for history>
-#
-#    1.0.7 - added DEV_NULL
-#    1.0.6 - added linux_distribution()
-#    1.0.5 - fixed Java support to allow running the module on Jython
-#    1.0.4 - added IronPython support
-#    1.0.3 - added normalization of Windows system name
-#    1.0.2 - added more Windows support
-#    1.0.1 - reformatted to make doc.py happy
-#    1.0.0 - reformatted a bit and checked into Python CVS
-#    0.8.0 - added sys.version parser and various new access
-#            APIs (python_version(), python_compiler(), etc.)
-#    0.7.2 - fixed architecture() to use sizeof(pointer) where available
-#    0.7.1 - added support for Caldera OpenLinux
-#    0.7.0 - some fixes for WinCE; untabified the source file
-#    0.6.2 - support for OpenVMS - requires version 1.5.2-V006 or higher and
-#            vms_lib.getsyi() configured
-#    0.6.1 - added code to prevent 'uname -p' on platforms which are
-#            known not to support it
-#    0.6.0 - fixed win32_ver() to hopefully work on Win95,98,NT and Win2k;
-#            did some cleanup of the interfaces - some APIs have changed
-#    0.5.5 - fixed another type in the MacOS code... should have
-#            used more coffee today ;-)
-#    0.5.4 - fixed a few typos in the MacOS code
-#    0.5.3 - added experimental MacOS support; added better popen()
-#            workarounds in _syscmd_ver() -- still not 100% elegant
-#            though
-#    0.5.2 - fixed uname() to return '' instead of 'unknown' in all
-#            return values (the system uname command tends to return
-#            'unknown' instead of just leaving the field emtpy)
-#    0.5.1 - included code for slackware dist; added exception handlers
-#            to cover up situations where platforms don't have os.popen
-#            (e.g. Mac) or fail on socket.gethostname(); fixed libc
-#            detection RE
-#    0.5.0 - changed the API names referring to system commands to *syscmd*;
-#            added java_ver(); made syscmd_ver() a private
-#            API (was system_ver() in previous versions) -- use uname()
-#            instead; extended the win32_ver() to also return processor
-#            type information
-#    0.4.0 - added win32_ver() and modified the platform() output for WinXX
-#    0.3.4 - fixed a bug in _follow_symlinks()
-#    0.3.3 - fixed popen() and "file" command invokation bugs
-#    0.3.2 - added architecture() API and support for it in platform()
-#    0.3.1 - fixed syscmd_ver() RE to support Windows NT
-#    0.3.0 - added system alias support
-#    0.2.3 - removed 'wince' again... oh well.
-#    0.2.2 - added 'wince' to syscmd_ver() supported platforms
-#    0.2.1 - added cache logic and changed the platform string format
-#    0.2.0 - changed the API to use functions instead of module globals
-#            since some action take too long to be run on module import
-#    0.1.0 - first release
-#
-#    You can always get the latest version of this module at:
-#
-#             http://www.egenix.com/files/python/platform.py
-#
-#    If that URL should fail, try contacting the author.
-
-__copyright__ = """
-    Copyright (c) 1999-2000, Marc-Andre Lemburg; mailto:mal@lemburg.com
-    Copyright (c) 2000-2010, eGenix.com Software GmbH; mailto:info@egenix.com
-
-    Permission to use, copy, modify, and distribute this software and its
-    documentation for any purpose and without fee or royalty is hereby granted,
-    provided that the above copyright notice appear in all copies and that
-    both that copyright notice and this permission notice appear in
-    supporting documentation or portions thereof, including modifications,
-    that you make.
-
-    EGENIX.COM SOFTWARE GMBH DISCLAIMS ALL WARRANTIES WITH REGARD TO
-    THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-    FITNESS, IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL,
-    INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
-    FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-    NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-    WITH THE USE OR PERFORMANCE OF THIS SOFTWARE !
-
-"""
-
-__version__ = '1.0.7'
-
-import sys,string,os,re
-
-### Globals & Constants
-
-# Determine the platform's /dev/null device
-try:
-    DEV_NULL = os.devnull
-except AttributeError:
-    # os.devnull was added in Python 2.4, so emulate it for earlier
-    # Python versions
-    if sys.platform in ('dos','win32','win16','os2'):
-        # Use the old CP/M NUL as device name
-        DEV_NULL = 'NUL'
-    else:
-        # Standard Unix uses /dev/null
-        DEV_NULL = '/dev/null'
-
-### Platform specific APIs
-
-_libc_search = re.compile(r'(__libc_init)'
-                          '|'
-                          '(GLIBC_([0-9.]+))'
-                          '|'
-                          '(libc(_\w+)?\.so(?:\.(\d[0-9.]*))?)')
-
-def libc_ver(executable=sys.executable,lib='',version='',
-
-             chunksize=2048):
-
-    """ Tries to determine the libc version that the file executable
-        (which defaults to the Python interpreter) is linked against.
-
-        Returns a tuple of strings (lib,version) which default to the
-        given parameters in case the lookup fails.
-
-        Note that the function has intimate knowledge of how different
-        libc versions add symbols to the executable and thus is probably
-        only useable for executables compiled using gcc.
-
-        The file is read and scanned in chunks of chunksize bytes.
-
-    """
-    if hasattr(os.path, 'realpath'):
-        # Python 2.2 introduced os.path.realpath(); it is used
-        # here to work around problems with Cygwin not being
-        # able to open symlinks for reading
-        executable = os.path.realpath(executable)
-    f = open(executable,'rb')
-    binary = f.read(chunksize)
-    pos = 0
-    while 1:
-        m = _libc_search.search(binary,pos)
-        if not m:
-            binary = f.read(chunksize)
-            if not binary:
-                break
-            pos = 0
-            continue
-        libcinit,glibc,glibcversion,so,threads,soversion = m.groups()
-        if libcinit and not lib:
-            lib = 'libc'
-        elif glibc:
-            if lib != 'glibc':
-                lib = 'glibc'
-                version = glibcversion
-            elif glibcversion > version:
-                version = glibcversion
-        elif so:
-            if lib != 'glibc':
-                lib = 'libc'
-                if soversion > version:
-                    version = soversion
-                if threads and version[-len(threads):] != threads:
-                    version = version + threads
-        pos = m.end()
-    f.close()
-    return lib,version
-
-def _dist_try_harder(distname,version,id):
-
-    """ Tries some special tricks to get the distribution
-        information in case the default method fails.
-
-        Currently supports older SuSE Linux, Caldera OpenLinux and
-        Slackware Linux distributions.
-
-    """
-    if os.path.exists('/var/adm/inst-log/info'):
-        # SuSE Linux stores distribution information in that file
-        info = open('/var/adm/inst-log/info').readlines()
-        distname = 'SuSE'
-        for line in info:
-            tv = string.split(line)
-            if len(tv) == 2:
-                tag,value = tv
-            else:
-                continue
-            if tag == 'MIN_DIST_VERSION':
-                version = string.strip(value)
-            elif tag == 'DIST_IDENT':
-                values = string.split(value,'-')
-                id = values[2]
-        return distname,version,id
-
-    if os.path.exists('/etc/.installed'):
-        # Caldera OpenLinux has some infos in that file (thanks to Colin Kong)
-        info = open('/etc/.installed').readlines()
-        for line in info:
-            pkg = string.split(line,'-')
-            if len(pkg) >= 2 and pkg[0] == 'OpenLinux':
-                # XXX does Caldera support non Intel platforms ? If yes,
-                #     where can we find the needed id ?
-                return 'OpenLinux',pkg[1],id
-
-    if os.path.isdir('/usr/lib/setup'):
-        # Check for slackware verson tag file (thanks to Greg Andruk)
-        verfiles = os.listdir('/usr/lib/setup')
-        for n in range(len(verfiles)-1, -1, -1):
-            if verfiles[n][:14] != 'slack-version-':
-                del verfiles[n]
-        if verfiles:
-            verfiles.sort()
-            distname = 'slackware'
-            version = verfiles[-1][14:]
-            return distname,version,id
-
-    return distname,version,id
-
-_release_filename = re.compile(r'(\w+)[-_](release|version)')
-_lsb_release_version = re.compile(r'(.+)'
-                                   ' release '
-                                   '([\d.]+)'
-                                   '[^(]*(?:\((.+)\))?')
-_release_version = re.compile(r'([^0-9]+)'
-                               '(?: release )?'
-                               '([\d.]+)'
-                               '[^(]*(?:\((.+)\))?')
-
-# See also http://www.novell.com/coolsolutions/feature/11251.html
-# and http://linuxmafia.com/faq/Admin/release-files.html
-# and http://data.linux-ntfs.org/rpm/whichrpm
-# and http://www.die.net/doc/linux/man/man1/lsb_release.1.html
-
-_supported_dists = (
-    'SuSE', 'debian', 'fedora', 'redhat', 'centos',
-    'mandrake', 'mandriva', 'rocks', 'slackware', 'yellowdog', 'gentoo',
-    'UnitedLinux', 'turbolinux')
-
-def _parse_release_file(firstline):
-
-    # Default to empty 'version' and 'id' strings.  Both defaults are used
-    # when 'firstline' is empty.  'id' defaults to empty when an id can not
-    # be deduced.
-    version = ''
-    id = ''
-
-    # Parse the first line
-    m = _lsb_release_version.match(firstline)
-    if m is not None:
-        # LSB format: "distro release x.x (codename)"
-        return tuple(m.groups())
-
-    # Pre-LSB format: "distro x.x (codename)"
-    m = _release_version.match(firstline)
-    if m is not None:
-        return tuple(m.groups())
-
-    # Unkown format... take the first two words
-    l = string.split(string.strip(firstline))
-    if l:
-        version = l[0]
-        if len(l) > 1:
-            id = l[1]
-    return '', version, id
-
-def linux_distribution(distname='', version='', id='',
-
-                       supported_dists=_supported_dists,
-                       full_distribution_name=1):
-
-    """ Tries to determine the name of the Linux OS distribution name.
-
-        The function first looks for a distribution release file in
-        /etc and then reverts to _dist_try_harder() in case no
-        suitable files are found.
-
-        supported_dists may be given to define the set of Linux
-        distributions to look for. It defaults to a list of currently
-        supported Linux distributions identified by their release file
-        name.
-
-        If full_distribution_name is true (default), the full
-        distribution read from the OS is returned. Otherwise the short
-        name taken from supported_dists is used.
-
-        Returns a tuple (distname,version,id) which default to the
-        args given as parameters.
-
-    """
-    try:
-        etc = os.listdir('/etc')
-    except os.error:
-        # Probably not a Unix system
-        return distname,version,id
-    etc.sort()
-    for file in etc:
-        m = _release_filename.match(file)
-        if m is not None:
-            _distname,dummy = m.groups()
-            if _distname in supported_dists:
-                distname = _distname
-                break
-    else:
-        return _dist_try_harder(distname,version,id)
-
-    # Read the first line
-    f = open('/etc/'+file, 'r')
-    firstline = f.readline()
-    f.close()
-    _distname, _version, _id = _parse_release_file(firstline)
-
-    if _distname and full_distribution_name:
-        distname = _distname
-    if _version:
-        version = _version
-    if _id:
-        id = _id
-    return distname, version, id
-
-# To maintain backwards compatibility:
-
-def dist(distname='',version='',id='',
-
-         supported_dists=_supported_dists):
-
-    """ Tries to determine the name of the Linux OS distribution name.
-
-        The function first looks for a distribution release file in
-        /etc and then reverts to _dist_try_harder() in case no
-        suitable files are found.
-
-        Returns a tuple (distname,version,id) which default to the
-        args given as parameters.
-
-    """
-    return linux_distribution(distname, version, id,
-                              supported_dists=supported_dists,
-                              full_distribution_name=0)
-
-class _popen:
-
-    """ Fairly portable (alternative) popen implementation.
-
-        This is mostly needed in case os.popen() is not available, or
-        doesn't work as advertised, e.g. in Win9X GUI programs like
-        PythonWin or IDLE.
-
-        Writing to the pipe is currently not supported.
-
-    """
-    tmpfile = ''
-    pipe = None
-    bufsize = None
-    mode = 'r'
-
-    def __init__(self,cmd,mode='r',bufsize=None):
-
-        if mode != 'r':
-            raise ValueError,'popen()-emulation only supports read mode'
-        import tempfile
-        self.tmpfile = tmpfile = tempfile.mktemp()
-        os.system(cmd + ' > %s' % tmpfile)
-        self.pipe = open(tmpfile,'rb')
-        self.bufsize = bufsize
-        self.mode = mode
-
-    def read(self):
-
-        return self.pipe.read()
-
-    def readlines(self):
-
-        if self.bufsize is not None:
-            return self.pipe.readlines()
-
-    def close(self,
-
-              remove=os.unlink,error=os.error):
-
-        if self.pipe:
-            rc = self.pipe.close()
-        else:
-            rc = 255
-        if self.tmpfile:
-            try:
-                remove(self.tmpfile)
-            except error:
-                pass
-        return rc
-
-    # Alias
-    __del__ = close
-
-def popen(cmd, mode='r', bufsize=None):
-
-    """ Portable popen() interface.
-    """
-    # Find a working popen implementation preferring win32pipe.popen
-    # over os.popen over _popen
-    popen = None
-    if os.environ.get('OS','') == 'Windows_NT':
-        # On NT win32pipe should work; on Win9x it hangs due to bugs
-        # in the MS C lib (see MS KnowledgeBase article Q150956)
-        try:
-            import win32pipe
-        except ImportError:
-            pass
-        else:
-            popen = win32pipe.popen
-    if popen is None:
-        if hasattr(os,'popen'):
-            popen = os.popen
-            # Check whether it works... it doesn't in GUI programs
-            # on Windows platforms
-            if sys.platform == 'win32': # XXX Others too ?
-                try:
-                    popen('')
-                except os.error:
-                    popen = _popen
-        else:
-            popen = _popen
-    if bufsize is None:
-        return popen(cmd,mode)
-    else:
-        return popen(cmd,mode,bufsize)
-
-def _norm_version(version, build=''):
-
-    """ Normalize the version and build strings and return a single
-        version string using the format major.minor.build (or patchlevel).
-    """
-    l = string.split(version,'.')
-    if build:
-        l.append(build)
-    try:
-        ints = map(int,l)
-    except ValueError:
-        strings = l
-    else:
-        strings = map(str,ints)
-    version = string.join(strings[:3],'.')
-    return version
-
-_ver_output = re.compile(r'(?:([\w ]+) ([\w.]+) '
-                         '.*'
-                         '\[.* ([\d.]+)\])')
-
-# Examples of VER command output:
-#
-#   Windows 2000:  Microsoft Windows 2000 [Version 5.00.2195]
-#   Windows XP:    Microsoft Windows XP [Version 5.1.2600]
-#   Windows Vista: Microsoft Windows [Version 6.0.6002]
-#
-# Note that the "Version" string gets localized on different
-# Windows versions.
-
-def _syscmd_ver(system='', release='', version='',
-
-               supported_platforms=('win32','win16','dos','os2')):
-
-    """ Tries to figure out the OS version used and returns
-        a tuple (system,release,version).
-
-        It uses the "ver" shell command for this which is known
-        to exists on Windows, DOS and OS/2. XXX Others too ?
-
-        In case this fails, the given parameters are used as
-        defaults.
-
-    """
-    if sys.platform not in supported_platforms:
-        return system,release,version
-
-    # Try some common cmd strings
-    for cmd in ('ver','command /c ver','cmd /c ver'):
-        try:
-            pipe = popen(cmd)
-            info = pipe.read()
-            if pipe.close():
-                raise os.error,'command failed'
-            # XXX How can I suppress shell errors from being written
-            #     to stderr ?
-        except os.error,why:
-            #print 'Command %s failed: %s' % (cmd,why)
-            continue
-        except IOError,why:
-            #print 'Command %s failed: %s' % (cmd,why)
-            continue
-        else:
-            break
-    else:
-        return system,release,version
-
-    # Parse the output
-    info = string.strip(info)
-    m = _ver_output.match(info)
-    if m is not None:
-        system,release,version = m.groups()
-        # Strip trailing dots from version and release
-        if release[-1] == '.':
-            release = release[:-1]
-        if version[-1] == '.':
-            version = version[:-1]
-        # Normalize the version and build strings (eliminating additional
-        # zeros)
-        version = _norm_version(version)
-    return system,release,version
-
-def _win32_getvalue(key,name,default=''):
-
-    """ Read a value for name from the registry key.
-
-        In case this fails, default is returned.
-
-    """
-    try:
-        # Use win32api if available
-        from win32api import RegQueryValueEx
-    except ImportError:
-        # On Python 2.0 and later, emulate using _winreg
-        import _winreg
-        RegQueryValueEx = _winreg.QueryValueEx
-    try:
-        return RegQueryValueEx(key,name)
-    except:
-        return default
-
-def win32_ver(release='',version='',csd='',ptype=''):
-
-    """ Get additional version information from the Windows Registry
-        and return a tuple (version,csd,ptype) referring to version
-        number, CSD level and OS type (multi/single
-        processor).
-
-        As a hint: ptype returns 'Uniprocessor Free' on single
-        processor NT machines and 'Multiprocessor Free' on multi
-        processor machines. The 'Free' refers to the OS version being
-        free of debugging code. It could also state 'Checked' which
-        means the OS version uses debugging code, i.e. code that
-        checks arguments, ranges, etc. (Thomas Heller).
-
-        Note: this function works best with Mark Hammond's win32
-        package installed, but also on Python 2.3 and later. It
-        obviously only runs on Win32 compatible platforms.
-
-    """
-    # XXX Is there any way to find out the processor type on WinXX ?
-    # XXX Is win32 available on Windows CE ?
-    #
-    # Adapted from code posted by Karl Putland to comp.lang.python.
-    #
-    # The mappings between reg. values and release names can be found
-    # here: http://msdn.microsoft.com/library/en-us/sysinfo/base/osversioninfo_str.asp
-
-    # Import the needed APIs
-    try:
-        import win32api
-        from win32api import RegQueryValueEx, RegOpenKeyEx, \
-             RegCloseKey, GetVersionEx
-        from win32con import HKEY_LOCAL_MACHINE, VER_PLATFORM_WIN32_NT, \
-             VER_PLATFORM_WIN32_WINDOWS, VER_NT_WORKSTATION
-    except ImportError:
-        # Emulate the win32api module using Python APIs
-        try:
-            sys.getwindowsversion
-        except AttributeError:
-            # No emulation possible, so return the defaults...
-            return release,version,csd,ptype
-        else:
-            # Emulation using _winreg (added in Python 2.0) and
-            # sys.getwindowsversion() (added in Python 2.3)
-            import _winreg
-            GetVersionEx = sys.getwindowsversion
-            RegQueryValueEx = _winreg.QueryValueEx
-            RegOpenKeyEx = _winreg.OpenKeyEx
-            RegCloseKey = _winreg.CloseKey
-            HKEY_LOCAL_MACHINE = _winreg.HKEY_LOCAL_MACHINE
-            VER_PLATFORM_WIN32_WINDOWS = 1
-            VER_PLATFORM_WIN32_NT = 2
-            VER_NT_WORKSTATION = 1
-            VER_NT_SERVER = 3
-            REG_SZ = 1
-
-    # Find out the registry key and some general version infos
-    winver = GetVersionEx()
-    maj,min,buildno,plat,csd = winver
-    version = '%i.%i.%i' % (maj,min,buildno & 0xFFFF)
-    if hasattr(winver, "service_pack"):
-        if winver.service_pack != "":
-            csd = 'SP%s' % winver.service_pack_major
-    else:
-        if csd[:13] == 'Service Pack ':
-            csd = 'SP' + csd[13:]
-
-    if plat == VER_PLATFORM_WIN32_WINDOWS:
-        regkey = 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion'
-        # Try to guess the release name
-        if maj == 4:
-            if min == 0:
-                release = '95'
-            elif min == 10:
-                release = '98'
-            elif min == 90:
-                release = 'Me'
-            else:
-                release = 'postMe'
-        elif maj == 5:
-            release = '2000'
-
-    elif plat == VER_PLATFORM_WIN32_NT:
-        regkey = 'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'
-        if maj <= 4:
-            release = 'NT'
-        elif maj == 5:
-            if min == 0:
-                release = '2000'
-            elif min == 1:
-                release = 'XP'
-            elif min == 2:
-                release = '2003Server'
-            else:
-                release = 'post2003'
-        elif maj == 6:
-            if hasattr(winver, "product_type"):
-                product_type = winver.product_type
-            else:
-                product_type = VER_NT_WORKSTATION
-                # Without an OSVERSIONINFOEX capable sys.getwindowsversion(),
-                # or help from the registry, we cannot properly identify
-                # non-workstation versions.
-                try:
-                    key = RegOpenKeyEx(HKEY_LOCAL_MACHINE, regkey)
-                    name, type = RegQueryValueEx(key, "ProductName")
-                    # Discard any type that isn't REG_SZ
-                    if type == REG_SZ and name.find("Server") != -1:
-                        product_type = VER_NT_SERVER
-                except WindowsError:
-                    # Use default of VER_NT_WORKSTATION
-                    pass
-
-            if min == 0:
-                if product_type == VER_NT_WORKSTATION:
-                    release = 'Vista'
-                else:
-                    release = '2008Server'
-            elif min == 1:
-                if product_type == VER_NT_WORKSTATION:
-                    release = '7'
-                else:
-                    release = '2008ServerR2'
-            else:
-                release = 'post2008Server'
-
-    else:
-        if not release:
-            # E.g. Win3.1 with win32s
-            release = '%i.%i' % (maj,min)
-        return release,version,csd,ptype
-
-    # Open the registry key
-    try:
-        keyCurVer = RegOpenKeyEx(HKEY_LOCAL_MACHINE, regkey)
-        # Get a value to make sure the key exists...
-        RegQueryValueEx(keyCurVer, 'SystemRoot')
-    except:
-        return release,version,csd,ptype
-
-    # Parse values
-    #subversion = _win32_getvalue(keyCurVer,
-    #                            'SubVersionNumber',
-    #                            ('',1))[0]
-    #if subversion:
-    #   release = release + subversion # 95a, 95b, etc.
-    build = _win32_getvalue(keyCurVer,
-                            'CurrentBuildNumber',
-                            ('',1))[0]
-    ptype = _win32_getvalue(keyCurVer,
-                           'CurrentType',
-                           (ptype,1))[0]
-
-    # Normalize version
-    version = _norm_version(version,build)
-
-    # Close key
-    RegCloseKey(keyCurVer)
-    return release,version,csd,ptype
-
-def _mac_ver_lookup(selectors,default=None):
-
-    from gestalt import gestalt
-    import MacOS
-    l = []
-    append = l.append
-    for selector in selectors:
-        try:
-            append(gestalt(selector))
-        except (RuntimeError, MacOS.Error):
-            append(default)
-    return l
-
-def _bcd2str(bcd):
-
-    return hex(bcd)[2:]
-
-def _mac_ver_gestalt():
-    """
-        Thanks to Mark R. Levinson for mailing documentation links and
-        code examples for this function. Documentation for the
-        gestalt() API is available online at:
-
-           http://www.rgaros.nl/gestalt/
-    """
-    # Check whether the version info module is available
-    try:
-        import gestalt
-        import MacOS
-    except ImportError:
-        return None
-    # Get the infos
-    sysv,sysa = _mac_ver_lookup(('sysv','sysa'))
-    # Decode the infos
-    if sysv:
-        major = (sysv & 0xFF00) >> 8
-        minor = (sysv & 0x00F0) >> 4
-        patch = (sysv & 0x000F)
-
-        if (major, minor) >= (10, 4):
-            # the 'sysv' gestald cannot return patchlevels
-            # higher than 9. Apple introduced 3 new
-            # gestalt codes in 10.4 to deal with this
-            # issue (needed because patch levels can
-            # run higher than 9, such as 10.4.11)
-            major,minor,patch = _mac_ver_lookup(('sys1','sys2','sys3'))
-            release = '%i.%i.%i' %(major, minor, patch)
-        else:
-            release = '%s.%i.%i' % (_bcd2str(major),minor,patch)
-
-    if sysa:
-        machine = {0x1: '68k',
-                   0x2: 'PowerPC',
-                   0xa: 'i386'}.get(sysa,'')
-
-    return release,versioninfo,machine
-
-def _mac_ver_xml():
-    fn = '/System/Library/CoreServices/SystemVersion.plist'
-    if not os.path.exists(fn):
-        return None
-
-    try:
-        import plistlib
-    except ImportError:
-        return None
-
-    pl = plistlib.readPlist(fn)
-    release = pl['ProductVersion']
-    versioninfo=('', '', '')
-    machine = os.uname()[4]
-    if machine in ('ppc', 'Power Macintosh'):
-        # for compatibility with the gestalt based code
-        machine = 'PowerPC'
-
-    return release,versioninfo,machine
-
-
-def mac_ver(release='',versioninfo=('','',''),machine=''):
-
-    """ Get MacOS version information and return it as tuple (release,
-        versioninfo, machine) with versioninfo being a tuple (version,
-        dev_stage, non_release_version).
-
-        Entries which cannot be determined are set to the paramter values
-        which default to ''. All tuple entries are strings.
-    """
-
-    # First try reading the information from an XML file which should
-    # always be present
-    info = _mac_ver_xml()
-    if info is not None:
-        return info
-
-    # If that doesn't work for some reason fall back to reading the
-    # information using gestalt calls.
-    info = _mac_ver_gestalt()
-    if info is not None:
-        return info
-
-    # If that also doesn't work return the default values
-    return release,versioninfo,machine
-
-def _java_getprop(name,default):
-
-    from java.lang import System
-    try:
-        value = System.getProperty(name)
-        if value is None:
-            return default
-        return value
-    except AttributeError:
-        return default
-
-def java_ver(release='',vendor='',vminfo=('','',''),osinfo=('','','')):
-
-    """ Version interface for Jython.
-
-        Returns a tuple (release,vendor,vminfo,osinfo) with vminfo being
-        a tuple (vm_name,vm_release,vm_vendor) and osinfo being a
-        tuple (os_name,os_version,os_arch).
-
-        Values which cannot be determined are set to the defaults
-        given as parameters (which all default to '').
-
-    """
-    # Import the needed APIs
-    try:
-        import java.lang
-    except ImportError:
-        return release,vendor,vminfo,osinfo
-
-    vendor = _java_getprop('java.vendor', vendor)
-    release = _java_getprop('java.version', release)
-    vm_name, vm_release, vm_vendor = vminfo
-    vm_name = _java_getprop('java.vm.name', vm_name)
-    vm_vendor = _java_getprop('java.vm.vendor', vm_vendor)
-    vm_release = _java_getprop('java.vm.version', vm_release)
-    vminfo = vm_name, vm_release, vm_vendor
-    os_name, os_version, os_arch = osinfo
-    os_arch = _java_getprop('java.os.arch', os_arch)
-    os_name = _java_getprop('java.os.name', os_name)
-    os_version = _java_getprop('java.os.version', os_version)
-    osinfo = os_name, os_version, os_arch
-
-    return release, vendor, vminfo, osinfo
-
-### System name aliasing
-
-def system_alias(system,release,version):
-
-    """ Returns (system,release,version) aliased to common
-        marketing names used for some systems.
-
-        It also does some reordering of the information in some cases
-        where it would otherwise cause confusion.
-
-    """
-    if system == 'Rhapsody':
-        # Apple's BSD derivative
-        # XXX How can we determine the marketing release number ?
-        return 'MacOS X Server',system+release,version
-
-    elif system == 'SunOS':
-        # Sun's OS
-        if release < '5':
-            # These releases use the old name SunOS
-            return system,release,version
-        # Modify release (marketing release = SunOS release - 3)
-        l = string.split(release,'.')
-        if l:
-            try:
-                major = int(l[0])
-            except ValueError:
-                pass
-            else:
-                major = major - 3
-                l[0] = str(major)
-                release = string.join(l,'.')
-        if release < '6':
-            system = 'Solaris'
-        else:
-            # XXX Whatever the new SunOS marketing name is...
-            system = 'Solaris'
-
-    elif system == 'IRIX64':
-        # IRIX reports IRIX64 on platforms with 64-bit support; yet it
-        # is really a version and not a different platform, since 32-bit
-        # apps are also supported..
-        system = 'IRIX'
-        if version:
-            version = version + ' (64bit)'
-        else:
-            version = '64bit'
-
-    elif system in ('win32','win16'):
-        # In case one of the other tricks
-        system = 'Windows'
-
-    return system,release,version
-
-### Various internal helpers
-
-def _platform(*args):
-
-    """ Helper to format the platform string in a filename
-        compatible format e.g. "system-version-machine".
-    """
-    # Format the platform string
-    platform = string.join(
-        map(string.strip,
-            filter(len, args)),
-        '-')
-
-    # Cleanup some possible filename obstacles...
-    replace = string.replace
-    platform = replace(platform,' ','_')
-    platform = replace(platform,'/','-')
-    platform = replace(platform,'\\','-')
-    platform = replace(platform,':','-')
-    platform = replace(platform,';','-')
-    platform = replace(platform,'"','-')
-    platform = replace(platform,'(','-')
-    platform = replace(platform,')','-')
-
-    # No need to report 'unknown' information...
-    platform = replace(platform,'unknown','')
-
-    # Fold '--'s and remove trailing '-'
-    while 1:
-        cleaned = replace(platform,'--','-')
-        if cleaned == platform:
-            break
-        platform = cleaned
-    while platform[-1] == '-':
-        platform = platform[:-1]
-
-    return platform
-
-def _node(default=''):
-
-    """ Helper to determine the node name of this machine.
-    """
-    try:
-        import socket
-    except ImportError:
-        # No sockets...
-        return default
-    try:
-        return socket.gethostname()
-    except socket.error:
-        # Still not working...
-        return default
-
-# os.path.abspath is new in Python 1.5.2:
-if not hasattr(os.path,'abspath'):
-
-    def _abspath(path,
-
-                 isabs=os.path.isabs,join=os.path.join,getcwd=os.getcwd,
-                 normpath=os.path.normpath):
-
-        if not isabs(path):
-            path = join(getcwd(), path)
-        return normpath(path)
-
-else:
-
-    _abspath = os.path.abspath
-
-def _follow_symlinks(filepath):
-
-    """ In case filepath is a symlink, follow it until a
-        real file is reached.
-    """
-    filepath = _abspath(filepath)
-    while os.path.islink(filepath):
-        filepath = os.path.normpath(
-            os.path.join(os.path.dirname(filepath),os.readlink(filepath)))
-    return filepath
-
-def _syscmd_uname(option,default=''):
-
-    """ Interface to the system's uname command.
-    """
-    if sys.platform in ('dos','win32','win16','os2'):
-        # XXX Others too ?
-        return default
-    try:
-        f = os.popen('uname %s 2> %s' % (option, DEV_NULL))
-    except (AttributeError,os.error):
-        return default
-    output = string.strip(f.read())
-    rc = f.close()
-    if not output or rc:
-        return default
-    else:
-        return output
-
-def _syscmd_file(target,default=''):
-
-    """ Interface to the system's file command.
-
-        The function uses the -b option of the file command to have it
-        ommit the filename in its output and if possible the -L option
-        to have the command follow symlinks. It returns default in
-        case the command should fail.
-
-    """
-    if sys.platform in ('dos','win32','win16','os2'):
-        # XXX Others too ?
-        return default
-    target = _follow_symlinks(target).replace('"', '\\"')
-    try:
-        f = os.popen('file "%s" 2> %s' % (target, DEV_NULL))
-    except (AttributeError,os.error):
-        return default
-    output = string.strip(f.read())
-    rc = f.close()
-    if not output or rc:
-        return default
-    else:
-        return output
-
-### Information about the used architecture
-
-# Default values for architecture; non-empty strings override the
-# defaults given as parameters
-_default_architecture = {
-    'win32': ('','WindowsPE'),
-    'win16': ('','Windows'),
-    'dos': ('','MSDOS'),
-}
-
-_architecture_split = re.compile(r'[\s,]').split
-
-def architecture(executable=sys.executable,bits='',linkage=''):
-
-    """ Queries the given executable (defaults to the Python interpreter
-        binary) for various architecture information.
-
-        Returns a tuple (bits,linkage) which contains information about
-        the bit architecture and the linkage format used for the
-        executable. Both values are returned as strings.
-
-        Values that cannot be determined are returned as given by the
-        parameter presets. If bits is given as '', the sizeof(pointer)
-        (or sizeof(long) on Python version < 1.5.2) is used as
-        indicator for the supported pointer size.
-
-        The function relies on the system's "file" command to do the
-        actual work. This is available on most if not all Unix
-        platforms. On some non-Unix platforms where the "file" command
-        does not exist and the executable is set to the Python interpreter
-        binary defaults from _default_architecture are used.
-
-    """
-    # Use the sizeof(pointer) as default number of bits if nothing
-    # else is given as default.
-    if not bits:
-        import struct
-        try:
-            size = struct.calcsize('P')
-        except struct.error:
-            # Older installations can only query longs
-            size = struct.calcsize('l')
-        bits = str(size*8) + 'bit'
-
-    # Get data from the 'file' system command
-    if executable:
-        output = _syscmd_file(executable, '')
-    else:
-        output = ''
-
-    if not output and \
-       executable == sys.executable:
-        # "file" command did not return anything; we'll try to provide
-        # some sensible defaults then...
-        if sys.platform in _default_architecture:
-            b, l = _default_architecture[sys.platform]
-            if b:
-                bits = b
-            if l:
-                linkage = l
-        return bits, linkage
-
-    # Split the output into a list of strings omitting the filename
-    fileout = _architecture_split(output)[1:]
-
-    if 'executable' not in fileout:
-        # Format not supported
-        return bits,linkage
-
-    # Bits
-    if '32-bit' in fileout:
-        bits = '32bit'
-    elif 'N32' in fileout:
-        # On Irix only
-        bits = 'n32bit'
-    elif '64-bit' in fileout:
-        bits = '64bit'
-
-    # Linkage
-    if 'ELF' in fileout:
-        linkage = 'ELF'
-    elif 'PE' in fileout:
-        # E.g. Windows uses this format
-        if 'Windows' in fileout:
-            linkage = 'WindowsPE'
-        else:
-            linkage = 'PE'
-    elif 'COFF' in fileout:
-        linkage = 'COFF'
-    elif 'MS-DOS' in fileout:
-        linkage = 'MSDOS'
-    else:
-        # XXX the A.OUT format also falls under this class...
-        pass
-
-    return bits,linkage
-
-### Portable uname() interface
-
-_uname_cache = None
-
-def uname():
-
-    """ Fairly portable uname interface. Returns a tuple
-        of strings (system,node,release,version,machine,processor)
-        identifying the underlying platform.
-
-        Note that unlike the os.uname function this also returns
-        possible processor information as an additional tuple entry.
-
-        Entries which cannot be determined are set to ''.
-
-    """
-    global _uname_cache
-    no_os_uname = 0
-
-    if _uname_cache is not None:
-        return _uname_cache
-
-    processor = ''
-
-    # Get some infos from the builtin os.uname API...
-    try:
-        system,node,release,version,machine = os.uname()
-    except AttributeError:
-        no_os_uname = 1
-
-    if no_os_uname or not filter(None, (system, node, release, version, machine)):
-        # Hmm, no there is either no uname or uname has returned
-        #'unknowns'... we'll have to poke around the system then.
-        if no_os_uname:
-            system = sys.platform
-            release = ''
-            version = ''
-            node = _node()
-            machine = ''
-
-        use_syscmd_ver = 1
-
-        # Try win32_ver() on win32 platforms
-        if system == 'win32':
-            release,version,csd,ptype = win32_ver()
-            if release and version:
-                use_syscmd_ver = 0
-            # Try to use the PROCESSOR_* environment variables
-            # available on Win XP and later; see
-            # http://support.microsoft.com/kb/888731 and
-            # http://www.geocities.com/rick_lively/MANUALS/ENV/MSWIN/PROCESSI.HTM
-            if not machine:
-                # WOW64 processes mask the native architecture
-                if "PROCESSOR_ARCHITEW6432" in os.environ:
-                    machine = os.environ.get("PROCESSOR_ARCHITEW6432", '')
-                else:
-                    machine = os.environ.get('PROCESSOR_ARCHITECTURE', '')
-            if not processor:
-                processor = os.environ.get('PROCESSOR_IDENTIFIER', machine)
-
-        # Try the 'ver' system command available on some
-        # platforms
-        if use_syscmd_ver:
-            system,release,version = _syscmd_ver(system)
-            # Normalize system to what win32_ver() normally returns
-            # (_syscmd_ver() tends to return the vendor name as well)
-            if system == 'Microsoft Windows':
-                system = 'Windows'
-            elif system == 'Microsoft' and release == 'Windows':
-                # Under Windows Vista and Windows Server 2008,
-                # Microsoft changed the output of the ver command. The
-                # release is no longer printed.  This causes the
-                # system and release to be misidentified.
-                system = 'Windows'
-                if '6.0' == version[:3]:
-                    release = 'Vista'
-                else:
-                    release = ''
-
-        # In case we still don't know anything useful, we'll try to
-        # help ourselves
-        if system in ('win32','win16'):
-            if not version:
-                if system == 'win32':
-                    version = '32bit'
-                else:
-                    version = '16bit'
-            system = 'Windows'
-
-        elif system[:4] == 'java':
-            release,vendor,vminfo,osinfo = java_ver()
-            system = 'Java'
-            version = string.join(vminfo,', ')
-            if not version:
-                version = vendor
-
-    # System specific extensions
-    if system == 'OpenVMS':
-        # OpenVMS seems to have release and version mixed up
-        if not release or release == '0':
-            release = version
-            version = ''
-        # Get processor information
-        try:
-            import vms_lib
-        except ImportError:
-            pass
-        else:
-            csid, cpu_number = vms_lib.getsyi('SYI$_CPU',0)
-            if (cpu_number >= 128):
-                processor = 'Alpha'
-            else:
-                processor = 'VAX'
-    if not processor:
-        # Get processor information from the uname system command
-        processor = _syscmd_uname('-p','')
-
-    #If any unknowns still exist, replace them with ''s, which are more portable
-    if system == 'unknown':
-        system = ''
-    if node == 'unknown':
-        node = ''
-    if release == 'unknown':
-        release = ''
-    if version == 'unknown':
-        version = ''
-    if machine == 'unknown':
-        machine = ''
-    if processor == 'unknown':
-        processor = ''
-
-    #  normalize name
-    if system == 'Microsoft' and release == 'Windows':
-        system = 'Windows'
-        release = 'Vista'
-
-    _uname_cache = system,node,release,version,machine,processor
-    return _uname_cache
-
-### Direct interfaces to some of the uname() return values
-
-def system():
-
-    """ Returns the system/OS name, e.g. 'Linux', 'Windows' or 'Java'.
-
-        An empty string is returned if the value cannot be determined.
-
-    """
-    return uname()[0]
-
-def node():
-
-    """ Returns the computer's network name (which may not be fully
-        qualified)
-
-        An empty string is returned if the value cannot be determined.
-
-    """
-    return uname()[1]
-
-def release():
-
-    """ Returns the system's release, e.g. '2.2.0' or 'NT'
-
-        An empty string is returned if the value cannot be determined.
-
-    """
-    return uname()[2]
-
-def version():
-
-    """ Returns the system's release version, e.g. '#3 on degas'
-
-        An empty string is returned if the value cannot be determined.
-
-    """
-    return uname()[3]
-
-def machine():
-
-    """ Returns the machine type, e.g. 'i386'
-
-        An empty string is returned if the value cannot be determined.
-
-    """
-    return uname()[4]
-
-def processor():
-
-    """ Returns the (true) processor name, e.g. 'amdk6'
-
-        An empty string is returned if the value cannot be
-        determined. Note that many platforms do not provide this
-        information or simply return the same value as for machine(),
-        e.g.  NetBSD does this.
-
-    """
-    return uname()[5]
-
-### Various APIs for extracting information from sys.version
-
-_sys_version_parser = re.compile(
-    r'([\w.+]+)\s*'
-    '\(#?([^,]+),\s*([\w ]+),\s*([\w :]+)\)\s*'
-    '\[([^\]]+)\]?')
-
-_ironpython_sys_version_parser = re.compile(
-    r'IronPython\s*'
-    '([\d\.]+)'
-    '(?: \(([\d\.]+)\))?'
-    ' on (.NET [\d\.]+)')
-
-_pypy_sys_version_parser = re.compile(
-    r'([\w.+]+)\s*'
-    '\(#?([^,]+),\s*([\w ]+),\s*([\w :]+)\)\s*'
-    '\[PyPy [^\]]+\]?')
-
-_sys_version_cache = {}
-
-def _sys_version(sys_version=None):
-
-    """ Returns a parsed version of Python's sys.version as tuple
-        (name, version, branch, revision, buildno, builddate, compiler)
-        referring to the Python implementation name, version, branch,
-        revision, build number, build date/time as string and the compiler
-        identification string.
-
-        Note that unlike the Python sys.version, the returned value
-        for the Python version will always include the patchlevel (it
-        defaults to '.0').
-
-        The function returns empty strings for tuple entries that
-        cannot be determined.
-
-        sys_version may be given to parse an alternative version
-        string, e.g. if the version was read from a different Python
-        interpreter.
-
-    """
-    # Get the Python version
-    if sys_version is None:
-        sys_version = sys.version
-
-    # Try the cache first
-    result = _sys_version_cache.get(sys_version, None)
-    if result is not None:
-        return result
-
-    # Parse it
-    if sys_version[:10] == 'IronPython':
-        # IronPython
-        name = 'IronPython'
-        match = _ironpython_sys_version_parser.match(sys_version)
-        if match is None:
-            raise ValueError(
-                'failed to parse IronPython sys.version: %s' %
-                repr(sys_version))
-        version, alt_version, compiler = match.groups()
-        buildno = ''
-        builddate = ''
-
-    elif sys.platform[:4] == 'java':
-        # Jython
-        name = 'Jython'
-        match = _sys_version_parser.match(sys_version)
-        if match is None:
-            raise ValueError(
-                'failed to parse Jython sys.version: %s' %
-                repr(sys_version))
-        version, buildno, builddate, buildtime, _ = match.groups()
-        compiler = sys.platform
-
-    elif "PyPy" in sys_version:
-        # PyPy
-        name = "PyPy"
-        match = _pypy_sys_version_parser.match(sys_version)
-        if match is None:
-            raise ValueError("failed to parse PyPy sys.version: %s" %
-                             repr(sys_version))
-        version, buildno, builddate, buildtime = match.groups()
-        compiler = ""
-
-    else:
-        # CPython
-        match = _sys_version_parser.match(sys_version)
-        if match is None:
-            raise ValueError(
-                'failed to parse CPython sys.version: %s' %
-                repr(sys_version))
-        version, buildno, builddate, buildtime, compiler = \
-              match.groups()
-        name = 'CPython'
-        builddate = builddate + ' ' + buildtime
-
-    if hasattr(sys, 'subversion'):
-        # sys.subversion was added in Python 2.5
-        _, branch, revision = sys.subversion
-    else:
-        branch = ''
-        revision = ''
-
-    # Add the patchlevel version if missing
-    l = string.split(version, '.')
-    if len(l) == 2:
-        l.append('0')
-        version = string.join(l, '.')
-
-    # Build and cache the result
-    result = (name, version, branch, revision, buildno, builddate, compiler)
-    _sys_version_cache[sys_version] = result
-    return result
-
-def python_implementation():
-
-    """ Returns a string identifying the Python implementation.
-
-        Currently, the following implementations are identified:
-          'CPython' (C implementation of Python),
-          'IronPython' (.NET implementation of Python),
-          'Jython' (Java implementation of Python),
-          'PyPy' (Python implementation of Python).
-
-    """
-    return _sys_version()[0]
-
-def python_version():
-
-    """ Returns the Python version as string 'major.minor.patchlevel'
-
-        Note that unlike the Python sys.version, the returned value
-        will always include the patchlevel (it defaults to 0).
-
-    """
-    return _sys_version()[1]
-
-def python_version_tuple():
-
-    """ Returns the Python version as tuple (major, minor, patchlevel)
-        of strings.
-
-        Note that unlike the Python sys.version, the returned value
-        will always include the patchlevel (it defaults to 0).
-
-    """
-    return tuple(string.split(_sys_version()[1], '.'))
-
-def python_branch():
-
-    """ Returns a string identifying the Python implementation
-        branch.
-
-        For CPython this is the Subversion branch from which the
-        Python binary was built.
-
-        If not available, an empty string is returned.
-
-    """
-
-    return _sys_version()[2]
-
-def python_revision():
-
-    """ Returns a string identifying the Python implementation
-        revision.
-
-        For CPython this is the Subversion revision from which the
-        Python binary was built.
-
-        If not available, an empty string is returned.
-
-    """
-    return _sys_version()[3]
-
-def python_build():
-
-    """ Returns a tuple (buildno, builddate) stating the Python
-        build number and date as strings.
-
-    """
-    return _sys_version()[4:6]
-
-def python_compiler():
-
-    """ Returns a string identifying the compiler used for compiling
-        Python.
-
-    """
-    return _sys_version()[6]
-
-### The Opus Magnum of platform strings :-)
-
-_platform_cache = {}
-
-def platform(aliased=0, terse=0):
-
-    """ Returns a single string identifying the underlying platform
-        with as much useful information as possible (but no more :).
-
-        The output is intended to be human readable rather than
-        machine parseable. It may look different on different
-        platforms and this is intended.
-
-        If "aliased" is true, the function will use aliases for
-        various platforms that report system names which differ from
-        their common names, e.g. SunOS will be reported as
-        Solaris. The system_alias() function is used to implement
-        this.
-
-        Setting terse to true causes the function to return only the
-        absolute minimum information needed to identify the platform.
-
-    """
-    result = _platform_cache.get((aliased, terse), None)
-    if result is not None:
-        return result
-
-    # Get uname information and then apply platform specific cosmetics
-    # to it...
-    system,node,release,version,machine,processor = uname()
-    if machine == processor:
-        processor = ''
-    if aliased:
-        system,release,version = system_alias(system,release,version)
-
-    if system == 'Windows':
-        # MS platforms
-        rel,vers,csd,ptype = win32_ver(version)
-        if terse:
-            platform = _platform(system,release)
-        else:
-            platform = _platform(system,release,version,csd)
-
-    elif system in ('Linux',):
-        # Linux based systems
-        distname,distversion,distid = dist('')
-        if distname and not terse:
-            platform = _platform(system,release,machine,processor,
-                                 'with',
-                                 distname,distversion,distid)
-        else:
-            # If the distribution name is unknown check for libc vs. glibc
-            libcname,libcversion = libc_ver(sys.executable)
-            platform = _platform(system,release,machine,processor,
-                                 'with',
-                                 libcname+libcversion)
-    elif system == 'Java':
-        # Java platforms
-        r,v,vminfo,(os_name,os_version,os_arch) = java_ver()
-        if terse or not os_name:
-            platform = _platform(system,release,version)
-        else:
-            platform = _platform(system,release,version,
-                                 'on',
-                                 os_name,os_version,os_arch)
-
-    elif system == 'MacOS':
-        # MacOS platforms
-        if terse:
-            platform = _platform(system,release)
-        else:
-            platform = _platform(system,release,machine)
-
-    else:
-        # Generic handler
-        if terse:
-            platform = _platform(system,release)
-        else:
-            bits,linkage = architecture(sys.executable)
-            platform = _platform(system,release,machine,processor,bits,linkage)
-
-    _platform_cache[(aliased, terse)] = platform
-    return platform
-
-### Command line interface
-
-if __name__ == '__main__':
-    # Default is to print the aliased verbose platform string
-    terse = ('terse' in sys.argv or '--terse' in sys.argv)
-    aliased = (not 'nonaliased' in sys.argv and not '--nonaliased' in sys.argv)
-    print platform(aliased,terse)
-    sys.exit(0)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/plistlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/plistlib.py
deleted file mode 100644
index b5bf6c5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/plistlib.py
+++ /dev/null
@@ -1,474 +0,0 @@
-r"""plistlib.py -- a tool to generate and parse MacOSX .plist files.
-
-The PropertyList (.plist) file format is a simple XML pickle supporting
-basic object types, like dictionaries, lists, numbers and strings.
-Usually the top level object is a dictionary.
-
-To write out a plist file, use the writePlist(rootObject, pathOrFile)
-function. 'rootObject' is the top level object, 'pathOrFile' is a
-filename or a (writable) file object.
-
-To parse a plist from a file, use the readPlist(pathOrFile) function,
-with a file name or a (readable) file object as the only argument. It
-returns the top level object (again, usually a dictionary).
-
-To work with plist data in strings, you can use readPlistFromString()
-and writePlistToString().
-
-Values can be strings, integers, floats, booleans, tuples, lists,
-dictionaries, Data or datetime.datetime objects. String values (including
-dictionary keys) may be unicode strings -- they will be written out as
-UTF-8.
-
-The <data> plist type is supported through the Data class. This is a
-thin wrapper around a Python string.
-
-Generate Plist example:
-
-    pl = dict(
-        aString="Doodah",
-        aList=["A", "B", 12, 32.1, [1, 2, 3]],
-        aFloat=0.1,
-        anInt=728,
-        aDict=dict(
-            anotherString="<hello & hi there!>",
-            aUnicodeValue=u'M\xe4ssig, Ma\xdf',
-            aTrueValue=True,
-            aFalseValue=False,
-        ),
-        someData=Data("<binary gunk>"),
-        someMoreData=Data("<lots of binary gunk>" * 10),
-        aDate=datetime.datetime.fromtimestamp(time.mktime(time.gmtime())),
-    )
-    # unicode keys are possible, but a little awkward to use:
-    pl[u'\xc5benraa'] = "That was a unicode key."
-    writePlist(pl, fileName)
-
-Parse Plist example:
-
-    pl = readPlist(pathOrFile)
-    print pl["aKey"]
-"""
-
-
-__all__ = [
-    "readPlist", "writePlist", "readPlistFromString", "writePlistToString",
-    "readPlistFromResource", "writePlistToResource",
-    "Plist", "Data", "Dict"
-]
-# Note: the Plist and Dict classes have been deprecated.
-
-import binascii
-import datetime
-from cStringIO import StringIO
-import re
-import warnings
-
-
-def readPlist(pathOrFile):
-    """Read a .plist file. 'pathOrFile' may either be a file name or a
-    (readable) file object. Return the unpacked root object (which
-    usually is a dictionary).
-    """
-    didOpen = 0
-    if isinstance(pathOrFile, (str, unicode)):
-        pathOrFile = open(pathOrFile)
-        didOpen = 1
-    p = PlistParser()
-    rootObject = p.parse(pathOrFile)
-    if didOpen:
-        pathOrFile.close()
-    return rootObject
-
-
-def writePlist(rootObject, pathOrFile):
-    """Write 'rootObject' to a .plist file. 'pathOrFile' may either be a
-    file name or a (writable) file object.
-    """
-    didOpen = 0
-    if isinstance(pathOrFile, (str, unicode)):
-        pathOrFile = open(pathOrFile, "w")
-        didOpen = 1
-    writer = PlistWriter(pathOrFile)
-    writer.writeln("<plist version=\"1.0\">")
-    writer.writeValue(rootObject)
-    writer.writeln("</plist>")
-    if didOpen:
-        pathOrFile.close()
-
-
-def readPlistFromString(data):
-    """Read a plist data from a string. Return the root object.
-    """
-    return readPlist(StringIO(data))
-
-
-def writePlistToString(rootObject):
-    """Return 'rootObject' as a plist-formatted string.
-    """
-    f = StringIO()
-    writePlist(rootObject, f)
-    return f.getvalue()
-
-
-def readPlistFromResource(path, restype='plst', resid=0):
-    """Read plst resource from the resource fork of path.
-    """
-    warnings.warnpy3k("In 3.x, readPlistFromResource is removed.",
-                      stacklevel=2)
-    from Carbon.File import FSRef, FSGetResourceForkName
-    from Carbon.Files import fsRdPerm
-    from Carbon import Res
-    fsRef = FSRef(path)
-    resNum = Res.FSOpenResourceFile(fsRef, FSGetResourceForkName(), fsRdPerm)
-    Res.UseResFile(resNum)
-    plistData = Res.Get1Resource(restype, resid).data
-    Res.CloseResFile(resNum)
-    return readPlistFromString(plistData)
-
-
-def writePlistToResource(rootObject, path, restype='plst', resid=0):
-    """Write 'rootObject' as a plst resource to the resource fork of path.
-    """
-    warnings.warnpy3k("In 3.x, writePlistToResource is removed.", stacklevel=2)
-    from Carbon.File import FSRef, FSGetResourceForkName
-    from Carbon.Files import fsRdWrPerm
-    from Carbon import Res
-    plistData = writePlistToString(rootObject)
-    fsRef = FSRef(path)
-    resNum = Res.FSOpenResourceFile(fsRef, FSGetResourceForkName(), fsRdWrPerm)
-    Res.UseResFile(resNum)
-    try:
-        Res.Get1Resource(restype, resid).RemoveResource()
-    except Res.Error:
-        pass
-    res = Res.Resource(plistData)
-    res.AddResource(restype, resid, '')
-    res.WriteResource()
-    Res.CloseResFile(resNum)
-
-
-class DumbXMLWriter:
-
-    def __init__(self, file, indentLevel=0, indent="\t"):
-        self.file = file
-        self.stack = []
-        self.indentLevel = indentLevel
-        self.indent = indent
-
-    def beginElement(self, element):
-        self.stack.append(element)
-        self.writeln("<%s>" % element)
-        self.indentLevel += 1
-
-    def endElement(self, element):
-        assert self.indentLevel > 0
-        assert self.stack.pop() == element
-        self.indentLevel -= 1
-        self.writeln("</%s>" % element)
-
-    def simpleElement(self, element, value=None):
-        if value is not None:
-            value = _escapeAndEncode(value)
-            self.writeln("<%s>%s</%s>" % (element, value, element))
-        else:
-            self.writeln("<%s/>" % element)
-
-    def writeln(self, line):
-        if line:
-            self.file.write(self.indentLevel * self.indent + line + "\n")
-        else:
-            self.file.write("\n")
-
-
-# Contents should conform to a subset of ISO 8601
-# (in particular, YYYY '-' MM '-' DD 'T' HH ':' MM ':' SS 'Z'.  Smaller units may be omitted with
-#  a loss of precision)
-_dateParser = re.compile(r"(?P<year>\d\d\d\d)(?:-(?P<month>\d\d)(?:-(?P<day>\d\d)(?:T(?P<hour>\d\d)(?::(?P<minute>\d\d)(?::(?P<second>\d\d))?)?)?)?)?Z")
-
-def _dateFromString(s):
-    order = ('year', 'month', 'day', 'hour', 'minute', 'second')
-    gd = _dateParser.match(s).groupdict()
-    lst = []
-    for key in order:
-        val = gd[key]
-        if val is None:
-            break
-        lst.append(int(val))
-    return datetime.datetime(*lst)
-
-def _dateToString(d):
-    return '%04d-%02d-%02dT%02d:%02d:%02dZ' % (
-        d.year, d.month, d.day,
-        d.hour, d.minute, d.second
-    )
-
-
-# Regex to find any control chars, except for \t \n and \r
-_controlCharPat = re.compile(
-    r"[\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0e\x0f"
-    r"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]")
-
-def _escapeAndEncode(text):
-    m = _controlCharPat.search(text)
-    if m is not None:
-        raise ValueError("strings can't contains control characters; "
-                         "use plistlib.Data instead")
-    text = text.replace("\r\n", "\n")       # convert DOS line endings
-    text = text.replace("\r", "\n")         # convert Mac line endings
-    text = text.replace("&", "&amp;")       # escape '&'
-    text = text.replace("<", "&lt;")        # escape '<'
-    text = text.replace(">", "&gt;")        # escape '>'
-    return text.encode("utf-8")             # encode as UTF-8
-
-
-PLISTHEADER = """\
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-"""
-
-class PlistWriter(DumbXMLWriter):
-
-    def __init__(self, file, indentLevel=0, indent="\t", writeHeader=1):
-        if writeHeader:
-            file.write(PLISTHEADER)
-        DumbXMLWriter.__init__(self, file, indentLevel, indent)
-
-    def writeValue(self, value):
-        if isinstance(value, (str, unicode)):
-            self.simpleElement("string", value)
-        elif isinstance(value, bool):
-            # must switch for bool before int, as bool is a
-            # subclass of int...
-            if value:
-                self.simpleElement("true")
-            else:
-                self.simpleElement("false")
-        elif isinstance(value, (int, long)):
-            self.simpleElement("integer", "%d" % value)
-        elif isinstance(value, float):
-            self.simpleElement("real", repr(value))
-        elif isinstance(value, dict):
-            self.writeDict(value)
-        elif isinstance(value, Data):
-            self.writeData(value)
-        elif isinstance(value, datetime.datetime):
-            self.simpleElement("date", _dateToString(value))
-        elif isinstance(value, (tuple, list)):
-            self.writeArray(value)
-        else:
-            raise TypeError("unsuported type: %s" % type(value))
-
-    def writeData(self, data):
-        self.beginElement("data")
-        self.indentLevel -= 1
-        maxlinelength = 76 - len(self.indent.replace("\t", " " * 8) *
-                                 self.indentLevel)
-        for line in data.asBase64(maxlinelength).split("\n"):
-            if line:
-                self.writeln(line)
-        self.indentLevel += 1
-        self.endElement("data")
-
-    def writeDict(self, d):
-        self.beginElement("dict")
-        items = d.items()
-        items.sort()
-        for key, value in items:
-            if not isinstance(key, (str, unicode)):
-                raise TypeError("keys must be strings")
-            self.simpleElement("key", key)
-            self.writeValue(value)
-        self.endElement("dict")
-
-    def writeArray(self, array):
-        self.beginElement("array")
-        for value in array:
-            self.writeValue(value)
-        self.endElement("array")
-
-
-class _InternalDict(dict):
-
-    # This class is needed while Dict is scheduled for deprecation:
-    # we only need to warn when a *user* instantiates Dict or when
-    # the "attribute notation for dict keys" is used.
-
-    def __getattr__(self, attr):
-        try:
-            value = self[attr]
-        except KeyError:
-            raise AttributeError, attr
-        from warnings import warn
-        warn("Attribute access from plist dicts is deprecated, use d[key] "
-             "notation instead", PendingDeprecationWarning, 2)
-        return value
-
-    def __setattr__(self, attr, value):
-        from warnings import warn
-        warn("Attribute access from plist dicts is deprecated, use d[key] "
-             "notation instead", PendingDeprecationWarning, 2)
-        self[attr] = value
-
-    def __delattr__(self, attr):
-        try:
-            del self[attr]
-        except KeyError:
-            raise AttributeError, attr
-        from warnings import warn
-        warn("Attribute access from plist dicts is deprecated, use d[key] "
-             "notation instead", PendingDeprecationWarning, 2)
-
-class Dict(_InternalDict):
-
-    def __init__(self, **kwargs):
-        from warnings import warn
-        warn("The plistlib.Dict class is deprecated, use builtin dict instead",
-             PendingDeprecationWarning, 2)
-        super(Dict, self).__init__(**kwargs)
-
-
-class Plist(_InternalDict):
-
-    """This class has been deprecated. Use readPlist() and writePlist()
-    functions instead, together with regular dict objects.
-    """
-
-    def __init__(self, **kwargs):
-        from warnings import warn
-        warn("The Plist class is deprecated, use the readPlist() and "
-             "writePlist() functions instead", PendingDeprecationWarning, 2)
-        super(Plist, self).__init__(**kwargs)
-
-    def fromFile(cls, pathOrFile):
-        """Deprecated. Use the readPlist() function instead."""
-        rootObject = readPlist(pathOrFile)
-        plist = cls()
-        plist.update(rootObject)
-        return plist
-    fromFile = classmethod(fromFile)
-
-    def write(self, pathOrFile):
-        """Deprecated. Use the writePlist() function instead."""
-        writePlist(self, pathOrFile)
-
-
-def _encodeBase64(s, maxlinelength=76):
-    # copied from base64.encodestring(), with added maxlinelength argument
-    maxbinsize = (maxlinelength//4)*3
-    pieces = []
-    for i in range(0, len(s), maxbinsize):
-        chunk = s[i : i + maxbinsize]
-        pieces.append(binascii.b2a_base64(chunk))
-    return "".join(pieces)
-
-class Data:
-
-    """Wrapper for binary data."""
-
-    def __init__(self, data):
-        self.data = data
-
-    def fromBase64(cls, data):
-        # base64.decodestring just calls binascii.a2b_base64;
-        # it seems overkill to use both base64 and binascii.
-        return cls(binascii.a2b_base64(data))
-    fromBase64 = classmethod(fromBase64)
-
-    def asBase64(self, maxlinelength=76):
-        return _encodeBase64(self.data, maxlinelength)
-
-    def __cmp__(self, other):
-        if isinstance(other, self.__class__):
-            return cmp(self.data, other.data)
-        elif isinstance(other, str):
-            return cmp(self.data, other)
-        else:
-            return cmp(id(self), id(other))
-
-    def __repr__(self):
-        return "%s(%s)" % (self.__class__.__name__, repr(self.data))
-
-
-class PlistParser:
-
-    def __init__(self):
-        self.stack = []
-        self.currentKey = None
-        self.root = None
-
-    def parse(self, fileobj):
-        from xml.parsers.expat import ParserCreate
-        parser = ParserCreate()
-        parser.StartElementHandler = self.handleBeginElement
-        parser.EndElementHandler = self.handleEndElement
-        parser.CharacterDataHandler = self.handleData
-        parser.ParseFile(fileobj)
-        return self.root
-
-    def handleBeginElement(self, element, attrs):
-        self.data = []
-        handler = getattr(self, "begin_" + element, None)
-        if handler is not None:
-            handler(attrs)
-
-    def handleEndElement(self, element):
-        handler = getattr(self, "end_" + element, None)
-        if handler is not None:
-            handler()
-
-    def handleData(self, data):
-        self.data.append(data)
-
-    def addObject(self, value):
-        if self.currentKey is not None:
-            self.stack[-1][self.currentKey] = value
-            self.currentKey = None
-        elif not self.stack:
-            # this is the root object
-            self.root = value
-        else:
-            self.stack[-1].append(value)
-
-    def getData(self):
-        data = "".join(self.data)
-        try:
-            data = data.encode("ascii")
-        except UnicodeError:
-            pass
-        self.data = []
-        return data
-
-    # element handlers
-
-    def begin_dict(self, attrs):
-        d = _InternalDict()
-        self.addObject(d)
-        self.stack.append(d)
-    def end_dict(self):
-        self.stack.pop()
-
-    def end_key(self):
-        self.currentKey = self.getData()
-
-    def begin_array(self, attrs):
-        a = []
-        self.addObject(a)
-        self.stack.append(a)
-    def end_array(self):
-        self.stack.pop()
-
-    def end_true(self):
-        self.addObject(True)
-    def end_false(self):
-        self.addObject(False)
-    def end_integer(self):
-        self.addObject(int(self.getData()))
-    def end_real(self):
-        self.addObject(float(self.getData()))
-    def end_string(self):
-        self.addObject(self.getData())
-    def end_data(self):
-        self.addObject(Data.fromBase64(self.getData()))
-    def end_date(self):
-        self.addObject(_dateFromString(self.getData()))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/popen2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/popen2.py
deleted file mode 100644
index a989a83..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/popen2.py
+++ /dev/null
@@ -1,201 +0,0 @@
-"""Spawn a command with pipes to its stdin, stdout, and optionally stderr.
-
-The normal os.popen(cmd, mode) call spawns a shell command and provides a
-file interface to just the input or output of the process depending on
-whether mode is 'r' or 'w'.  This module provides the functions popen2(cmd)
-and popen3(cmd) which return two or three pipes to the spawned command.
-"""
-
-import os
-import sys
-import warnings
-warnings.warn("The popen2 module is deprecated.  Use the subprocess module.",
-              DeprecationWarning, stacklevel=2)
-
-__all__ = ["popen2", "popen3", "popen4"]
-
-try:
-    MAXFD = os.sysconf('SC_OPEN_MAX')
-except (AttributeError, ValueError):
-    MAXFD = 256
-
-_active = []
-
-def _cleanup():
-    for inst in _active[:]:
-        if inst.poll(_deadstate=sys.maxint) >= 0:
-            try:
-                _active.remove(inst)
-            except ValueError:
-                # This can happen if two threads create a new Popen instance.
-                # It's harmless that it was already removed, so ignore.
-                pass
-
-class Popen3:
-    """Class representing a child process.  Normally, instances are created
-    internally by the functions popen2() and popen3()."""
-
-    sts = -1                    # Child not completed yet
-
-    def __init__(self, cmd, capturestderr=False, bufsize=-1):
-        """The parameter 'cmd' is the shell command to execute in a
-        sub-process.  On UNIX, 'cmd' may be a sequence, in which case arguments
-        will be passed directly to the program without shell intervention (as
-        with os.spawnv()).  If 'cmd' is a string it will be passed to the shell
-        (as with os.system()).   The 'capturestderr' flag, if true, specifies
-        that the object should capture standard error output of the child
-        process.  The default is false.  If the 'bufsize' parameter is
-        specified, it specifies the size of the I/O buffers to/from the child
-        process."""
-        _cleanup()
-        self.cmd = cmd
-        p2cread, p2cwrite = os.pipe()
-        c2pread, c2pwrite = os.pipe()
-        if capturestderr:
-            errout, errin = os.pipe()
-        self.pid = os.fork()
-        if self.pid == 0:
-            # Child
-            os.dup2(p2cread, 0)
-            os.dup2(c2pwrite, 1)
-            if capturestderr:
-                os.dup2(errin, 2)
-            self._run_child(cmd)
-        os.close(p2cread)
-        self.tochild = os.fdopen(p2cwrite, 'w', bufsize)
-        os.close(c2pwrite)
-        self.fromchild = os.fdopen(c2pread, 'r', bufsize)
-        if capturestderr:
-            os.close(errin)
-            self.childerr = os.fdopen(errout, 'r', bufsize)
-        else:
-            self.childerr = None
-
-    def __del__(self):
-        # In case the child hasn't been waited on, check if it's done.
-        self.poll(_deadstate=sys.maxint)
-        if self.sts < 0:
-            if _active is not None:
-                # Child is still running, keep us alive until we can wait on it.
-                _active.append(self)
-
-    def _run_child(self, cmd):
-        if isinstance(cmd, basestring):
-            cmd = ['/bin/sh', '-c', cmd]
-        os.closerange(3, MAXFD)
-        try:
-            os.execvp(cmd[0], cmd)
-        finally:
-            os._exit(1)
-
-    def poll(self, _deadstate=None):
-        """Return the exit status of the child process if it has finished,
-        or -1 if it hasn't finished yet."""
-        if self.sts < 0:
-            try:
-                pid, sts = os.waitpid(self.pid, os.WNOHANG)
-                # pid will be 0 if self.pid hasn't terminated
-                if pid == self.pid:
-                    self.sts = sts
-            except os.error:
-                if _deadstate is not None:
-                    self.sts = _deadstate
-        return self.sts
-
-    def wait(self):
-        """Wait for and return the exit status of the child process."""
-        if self.sts < 0:
-            pid, sts = os.waitpid(self.pid, 0)
-            # This used to be a test, but it is believed to be
-            # always true, so I changed it to an assertion - mvl
-            assert pid == self.pid
-            self.sts = sts
-        return self.sts
-
-
-class Popen4(Popen3):
-    childerr = None
-
-    def __init__(self, cmd, bufsize=-1):
-        _cleanup()
-        self.cmd = cmd
-        p2cread, p2cwrite = os.pipe()
-        c2pread, c2pwrite = os.pipe()
-        self.pid = os.fork()
-        if self.pid == 0:
-            # Child
-            os.dup2(p2cread, 0)
-            os.dup2(c2pwrite, 1)
-            os.dup2(c2pwrite, 2)
-            self._run_child(cmd)
-        os.close(p2cread)
-        self.tochild = os.fdopen(p2cwrite, 'w', bufsize)
-        os.close(c2pwrite)
-        self.fromchild = os.fdopen(c2pread, 'r', bufsize)
-
-
-if sys.platform[:3] == "win" or sys.platform == "os2emx":
-    # Some things don't make sense on non-Unix platforms.
-    del Popen3, Popen4
-
-    def popen2(cmd, bufsize=-1, mode='t'):
-        """Execute the shell command 'cmd' in a sub-process. On UNIX, 'cmd' may
-        be a sequence, in which case arguments will be passed directly to the
-        program without shell intervention (as with os.spawnv()). If 'cmd' is a
-        string it will be passed to the shell (as with os.system()). If
-        'bufsize' is specified, it sets the buffer size for the I/O pipes. The
-        file objects (child_stdout, child_stdin) are returned."""
-        w, r = os.popen2(cmd, mode, bufsize)
-        return r, w
-
-    def popen3(cmd, bufsize=-1, mode='t'):
-        """Execute the shell command 'cmd' in a sub-process. On UNIX, 'cmd' may
-        be a sequence, in which case arguments will be passed directly to the
-        program without shell intervention (as with os.spawnv()). If 'cmd' is a
-        string it will be passed to the shell (as with os.system()). If
-        'bufsize' is specified, it sets the buffer size for the I/O pipes. The
-        file objects (child_stdout, child_stdin, child_stderr) are returned."""
-        w, r, e = os.popen3(cmd, mode, bufsize)
-        return r, w, e
-
-    def popen4(cmd, bufsize=-1, mode='t'):
-        """Execute the shell command 'cmd' in a sub-process. On UNIX, 'cmd' may
-        be a sequence, in which case arguments will be passed directly to the
-        program without shell intervention (as with os.spawnv()). If 'cmd' is a
-        string it will be passed to the shell (as with os.system()). If
-        'bufsize' is specified, it sets the buffer size for the I/O pipes. The
-        file objects (child_stdout_stderr, child_stdin) are returned."""
-        w, r = os.popen4(cmd, mode, bufsize)
-        return r, w
-else:
-    def popen2(cmd, bufsize=-1, mode='t'):
-        """Execute the shell command 'cmd' in a sub-process. On UNIX, 'cmd' may
-        be a sequence, in which case arguments will be passed directly to the
-        program without shell intervention (as with os.spawnv()). If 'cmd' is a
-        string it will be passed to the shell (as with os.system()). If
-        'bufsize' is specified, it sets the buffer size for the I/O pipes. The
-        file objects (child_stdout, child_stdin) are returned."""
-        inst = Popen3(cmd, False, bufsize)
-        return inst.fromchild, inst.tochild
-
-    def popen3(cmd, bufsize=-1, mode='t'):
-        """Execute the shell command 'cmd' in a sub-process. On UNIX, 'cmd' may
-        be a sequence, in which case arguments will be passed directly to the
-        program without shell intervention (as with os.spawnv()). If 'cmd' is a
-        string it will be passed to the shell (as with os.system()). If
-        'bufsize' is specified, it sets the buffer size for the I/O pipes. The
-        file objects (child_stdout, child_stdin, child_stderr) are returned."""
-        inst = Popen3(cmd, True, bufsize)
-        return inst.fromchild, inst.tochild, inst.childerr
-
-    def popen4(cmd, bufsize=-1, mode='t'):
-        """Execute the shell command 'cmd' in a sub-process. On UNIX, 'cmd' may
-        be a sequence, in which case arguments will be passed directly to the
-        program without shell intervention (as with os.spawnv()). If 'cmd' is a
-        string it will be passed to the shell (as with os.system()). If
-        'bufsize' is specified, it sets the buffer size for the I/O pipes. The
-        file objects (child_stdout_stderr, child_stdin) are returned."""
-        inst = Popen4(cmd, bufsize)
-        return inst.fromchild, inst.tochild
-
-    __all__.extend(["Popen3", "Popen4"])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/poplib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/poplib.py
deleted file mode 100644
index 8f0de66..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/poplib.py
+++ /dev/null
@@ -1,417 +0,0 @@
-"""A POP3 client class.
-
-Based on the J. Myers POP3 draft, Jan. 96
-"""
-
-# Author: David Ascher <david_ascher@brown.edu>
-#         [heavily stealing from nntplib.py]
-# Updated: Piers Lauder <piers@cs.su.oz.au> [Jul '97]
-# String method conversion and test jig improvements by ESR, February 2001.
-# Added the POP3_SSL class. Methods loosely based on IMAP_SSL. Hector Urtubia <urtubia@mrbook.org> Aug 2003
-
-# Example (see the test function at the end of this file)
-
-# Imports
-
-import re, socket
-
-__all__ = ["POP3","error_proto"]
-
-# Exception raised when an error or invalid response is received:
-
-class error_proto(Exception): pass
-
-# Standard Port
-POP3_PORT = 110
-
-# POP SSL PORT
-POP3_SSL_PORT = 995
-
-# Line terminators (we always output CRLF, but accept any of CRLF, LFCR, LF)
-CR = '\r'
-LF = '\n'
-CRLF = CR+LF
-
-
-class POP3:
-
-    """This class supports both the minimal and optional command sets.
-    Arguments can be strings or integers (where appropriate)
-    (e.g.: retr(1) and retr('1') both work equally well.
-
-    Minimal Command Set:
-            USER name               user(name)
-            PASS string             pass_(string)
-            STAT                    stat()
-            LIST [msg]              list(msg = None)
-            RETR msg                retr(msg)
-            DELE msg                dele(msg)
-            NOOP                    noop()
-            RSET                    rset()
-            QUIT                    quit()
-
-    Optional Commands (some servers support these):
-            RPOP name               rpop(name)
-            APOP name digest        apop(name, digest)
-            TOP msg n               top(msg, n)
-            UIDL [msg]              uidl(msg = None)
-
-    Raises one exception: 'error_proto'.
-
-    Instantiate with:
-            POP3(hostname, port=110)
-
-    NB:     the POP protocol locks the mailbox from user
-            authorization until QUIT, so be sure to get in, suck
-            the messages, and quit, each time you access the
-            mailbox.
-
-            POP is a line-based protocol, which means large mail
-            messages consume lots of python cycles reading them
-            line-by-line.
-
-            If it's available on your mail server, use IMAP4
-            instead, it doesn't suffer from the two problems
-            above.
-    """
-
-
-    def __init__(self, host, port=POP3_PORT,
-                 timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
-        self.host = host
-        self.port = port
-        self.sock = socket.create_connection((host, port), timeout)
-        self.file = self.sock.makefile('rb')
-        self._debugging = 0
-        self.welcome = self._getresp()
-
-
-    def _putline(self, line):
-        if self._debugging > 1: print '*put*', repr(line)
-        self.sock.sendall('%s%s' % (line, CRLF))
-
-
-    # Internal: send one command to the server (through _putline())
-
-    def _putcmd(self, line):
-        if self._debugging: print '*cmd*', repr(line)
-        self._putline(line)
-
-
-    # Internal: return one line from the server, stripping CRLF.
-    # This is where all the CPU time of this module is consumed.
-    # Raise error_proto('-ERR EOF') if the connection is closed.
-
-    def _getline(self):
-        line = self.file.readline()
-        if self._debugging > 1: print '*get*', repr(line)
-        if not line: raise error_proto('-ERR EOF')
-        octets = len(line)
-        # server can send any combination of CR & LF
-        # however, 'readline()' returns lines ending in LF
-        # so only possibilities are ...LF, ...CRLF, CR...LF
-        if line[-2:] == CRLF:
-            return line[:-2], octets
-        if line[0] == CR:
-            return line[1:-1], octets
-        return line[:-1], octets
-
-
-    # Internal: get a response from the server.
-    # Raise 'error_proto' if the response doesn't start with '+'.
-
-    def _getresp(self):
-        resp, o = self._getline()
-        if self._debugging > 1: print '*resp*', repr(resp)
-        c = resp[:1]
-        if c != '+':
-            raise error_proto(resp)
-        return resp
-
-
-    # Internal: get a response plus following text from the server.
-
-    def _getlongresp(self):
-        resp = self._getresp()
-        list = []; octets = 0
-        line, o = self._getline()
-        while line != '.':
-            if line[:2] == '..':
-                o = o-1
-                line = line[1:]
-            octets = octets + o
-            list.append(line)
-            line, o = self._getline()
-        return resp, list, octets
-
-
-    # Internal: send a command and get the response
-
-    def _shortcmd(self, line):
-        self._putcmd(line)
-        return self._getresp()
-
-
-    # Internal: send a command and get the response plus following text
-
-    def _longcmd(self, line):
-        self._putcmd(line)
-        return self._getlongresp()
-
-
-    # These can be useful:
-
-    def getwelcome(self):
-        return self.welcome
-
-
-    def set_debuglevel(self, level):
-        self._debugging = level
-
-
-    # Here are all the POP commands:
-
-    def user(self, user):
-        """Send user name, return response
-
-        (should indicate password required).
-        """
-        return self._shortcmd('USER %s' % user)
-
-
-    def pass_(self, pswd):
-        """Send password, return response
-
-        (response includes message count, mailbox size).
-
-        NB: mailbox is locked by server from here to 'quit()'
-        """
-        return self._shortcmd('PASS %s' % pswd)
-
-
-    def stat(self):
-        """Get mailbox status.
-
-        Result is tuple of 2 ints (message count, mailbox size)
-        """
-        retval = self._shortcmd('STAT')
-        rets = retval.split()
-        if self._debugging: print '*stat*', repr(rets)
-        numMessages = int(rets[1])
-        sizeMessages = int(rets[2])
-        return (numMessages, sizeMessages)
-
-
-    def list(self, which=None):
-        """Request listing, return result.
-
-        Result without a message number argument is in form
-        ['response', ['mesg_num octets', ...], octets].
-
-        Result when a message number argument is given is a
-        single response: the "scan listing" for that message.
-        """
-        if which is not None:
-            return self._shortcmd('LIST %s' % which)
-        return self._longcmd('LIST')
-
-
-    def retr(self, which):
-        """Retrieve whole message number 'which'.
-
-        Result is in form ['response', ['line', ...], octets].
-        """
-        return self._longcmd('RETR %s' % which)
-
-
-    def dele(self, which):
-        """Delete message number 'which'.
-
-        Result is 'response'.
-        """
-        return self._shortcmd('DELE %s' % which)
-
-
-    def noop(self):
-        """Does nothing.
-
-        One supposes the response indicates the server is alive.
-        """
-        return self._shortcmd('NOOP')
-
-
-    def rset(self):
-        """Unmark all messages marked for deletion."""
-        return self._shortcmd('RSET')
-
-
-    def quit(self):
-        """Signoff: commit changes on server, unlock mailbox, close connection."""
-        try:
-            resp = self._shortcmd('QUIT')
-        except error_proto, val:
-            resp = val
-        self.file.close()
-        self.sock.close()
-        del self.file, self.sock
-        return resp
-
-    #__del__ = quit
-
-
-    # optional commands:
-
-    def rpop(self, user):
-        """Not sure what this does."""
-        return self._shortcmd('RPOP %s' % user)
-
-
-    timestamp = re.compile(r'\+OK.*(<[^>]+>)')
-
-    def apop(self, user, secret):
-        """Authorisation
-
-        - only possible if server has supplied a timestamp in initial greeting.
-
-        Args:
-                user    - mailbox user;
-                secret  - secret shared between client and server.
-
-        NB: mailbox is locked by server from here to 'quit()'
-        """
-        m = self.timestamp.match(self.welcome)
-        if not m:
-            raise error_proto('-ERR APOP not supported by server')
-        import hashlib
-        digest = hashlib.md5(m.group(1)+secret).digest()
-        digest = ''.join(map(lambda x:'%02x'%ord(x), digest))
-        return self._shortcmd('APOP %s %s' % (user, digest))
-
-
-    def top(self, which, howmuch):
-        """Retrieve message header of message number 'which'
-        and first 'howmuch' lines of message body.
-
-        Result is in form ['response', ['line', ...], octets].
-        """
-        return self._longcmd('TOP %s %s' % (which, howmuch))
-
-
-    def uidl(self, which=None):
-        """Return message digest (unique id) list.
-
-        If 'which', result contains unique id for that message
-        in the form 'response mesgnum uid', otherwise result is
-        the list ['response', ['mesgnum uid', ...], octets]
-        """
-        if which is not None:
-            return self._shortcmd('UIDL %s' % which)
-        return self._longcmd('UIDL')
-
-try:
-    import ssl
-except ImportError:
-    pass
-else:
-
-    class POP3_SSL(POP3):
-        """POP3 client class over SSL connection
-
-        Instantiate with: POP3_SSL(hostname, port=995, keyfile=None, certfile=None)
-
-               hostname - the hostname of the pop3 over ssl server
-               port - port number
-               keyfile - PEM formatted file that countains your private key
-               certfile - PEM formatted certificate chain file
-
-            See the methods of the parent class POP3 for more documentation.
-        """
-
-        def __init__(self, host, port = POP3_SSL_PORT, keyfile = None, certfile = None):
-            self.host = host
-            self.port = port
-            self.keyfile = keyfile
-            self.certfile = certfile
-            self.buffer = ""
-            msg = "getaddrinfo returns an empty list"
-            self.sock = None
-            for res in socket.getaddrinfo(self.host, self.port, 0, socket.SOCK_STREAM):
-                af, socktype, proto, canonname, sa = res
-                try:
-                    self.sock = socket.socket(af, socktype, proto)
-                    self.sock.connect(sa)
-                except socket.error, msg:
-                    if self.sock:
-                        self.sock.close()
-                    self.sock = None
-                    continue
-                break
-            if not self.sock:
-                raise socket.error, msg
-            self.file = self.sock.makefile('rb')
-            self.sslobj = ssl.wrap_socket(self.sock, self.keyfile, self.certfile)
-            self._debugging = 0
-            self.welcome = self._getresp()
-
-        def _fillBuffer(self):
-            localbuf = self.sslobj.read()
-            if len(localbuf) == 0:
-                raise error_proto('-ERR EOF')
-            self.buffer += localbuf
-
-        def _getline(self):
-            line = ""
-            renewline = re.compile(r'.*?\n')
-            match = renewline.match(self.buffer)
-            while not match:
-                self._fillBuffer()
-                match = renewline.match(self.buffer)
-            line = match.group(0)
-            self.buffer = renewline.sub('' ,self.buffer, 1)
-            if self._debugging > 1: print '*get*', repr(line)
-
-            octets = len(line)
-            if line[-2:] == CRLF:
-                return line[:-2], octets
-            if line[0] == CR:
-                return line[1:-1], octets
-            return line[:-1], octets
-
-        def _putline(self, line):
-            if self._debugging > 1: print '*put*', repr(line)
-            line += CRLF
-            bytes = len(line)
-            while bytes > 0:
-                sent = self.sslobj.write(line)
-                if sent == bytes:
-                    break    # avoid copy
-                line = line[sent:]
-                bytes = bytes - sent
-
-        def quit(self):
-            """Signoff: commit changes on server, unlock mailbox, close connection."""
-            try:
-                resp = self._shortcmd('QUIT')
-            except error_proto, val:
-                resp = val
-            self.sock.close()
-            del self.sslobj, self.sock
-            return resp
-
-    __all__.append("POP3_SSL")
-
-if __name__ == "__main__":
-    import sys
-    a = POP3(sys.argv[1])
-    print a.getwelcome()
-    a.user(sys.argv[2])
-    a.pass_(sys.argv[3])
-    a.list()
-    (numMsgs, totalSize) = a.stat()
-    for i in range(1, numMsgs + 1):
-        (header, msg, octets) = a.retr(i)
-        print "Message %d:" % i
-        for line in msg:
-            print '   ' + line
-        print '-----------------------'
-    a.quit()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/posixfile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/posixfile.py
deleted file mode 100644
index 9be656b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/posixfile.py
+++ /dev/null
@@ -1,237 +0,0 @@
-"""Extended file operations available in POSIX.
-
-f = posixfile.open(filename, [mode, [bufsize]])
-      will create a new posixfile object
-
-f = posixfile.fileopen(fileobject)
-      will create a posixfile object from a builtin file object
-
-f.file()
-      will return the original builtin file object
-
-f.dup()
-      will return a new file object based on a new filedescriptor
-
-f.dup2(fd)
-      will return a new file object based on the given filedescriptor
-
-f.flags(mode)
-      will turn on the associated flag (merge)
-      mode can contain the following characters:
-
-  (character representing a flag)
-      a       append only flag
-      c       close on exec flag
-      n       no delay flag
-      s       synchronization flag
-  (modifiers)
-      !       turn flags 'off' instead of default 'on'
-      =       copy flags 'as is' instead of default 'merge'
-      ?       return a string in which the characters represent the flags
-              that are set
-
-      note: - the '!' and '=' modifiers are mutually exclusive.
-            - the '?' modifier will return the status of the flags after they
-              have been changed by other characters in the mode string
-
-f.lock(mode [, len [, start [, whence]]])
-      will (un)lock a region
-      mode can contain the following characters:
-
-  (character representing type of lock)
-      u       unlock
-      r       read lock
-      w       write lock
-  (modifiers)
-      |       wait until the lock can be granted
-      ?       return the first lock conflicting with the requested lock
-              or 'None' if there is no conflict. The lock returned is in the
-              format (mode, len, start, whence, pid) where mode is a
-              character representing the type of lock ('r' or 'w')
-
-      note: - the '?' modifier prevents a region from being locked; it is
-              query only
-"""
-import warnings
-warnings.warn("The posixfile module is deprecated; "
-                "fcntl.lockf() provides better locking", DeprecationWarning, 2)
-
-class _posixfile_:
-    """File wrapper class that provides extra POSIX file routines."""
-
-    states = ['open', 'closed']
-
-    #
-    # Internal routines
-    #
-    def __repr__(self):
-        file = self._file_
-        return "<%s posixfile '%s', mode '%s' at %s>" % \
-                (self.states[file.closed], file.name, file.mode, \
-                 hex(id(self))[2:])
-
-    #
-    # Initialization routines
-    #
-    def open(self, name, mode='r', bufsize=-1):
-        import __builtin__
-        return self.fileopen(__builtin__.open(name, mode, bufsize))
-
-    def fileopen(self, file):
-        import types
-        if repr(type(file)) != "<type 'file'>":
-            raise TypeError, 'posixfile.fileopen() arg must be file object'
-        self._file_  = file
-        # Copy basic file methods
-        for maybemethod in dir(file):
-            if not maybemethod.startswith('_'):
-                attr = getattr(file, maybemethod)
-                if isinstance(attr, types.BuiltinMethodType):
-                    setattr(self, maybemethod, attr)
-        return self
-
-    #
-    # New methods
-    #
-    def file(self):
-        return self._file_
-
-    def dup(self):
-        import posix
-
-        if not hasattr(posix, 'fdopen'):
-            raise AttributeError, 'dup() method unavailable'
-
-        return posix.fdopen(posix.dup(self._file_.fileno()), self._file_.mode)
-
-    def dup2(self, fd):
-        import posix
-
-        if not hasattr(posix, 'fdopen'):
-            raise AttributeError, 'dup() method unavailable'
-
-        posix.dup2(self._file_.fileno(), fd)
-        return posix.fdopen(fd, self._file_.mode)
-
-    def flags(self, *which):
-        import fcntl, os
-
-        if which:
-            if len(which) > 1:
-                raise TypeError, 'Too many arguments'
-            which = which[0]
-        else: which = '?'
-
-        l_flags = 0
-        if 'n' in which: l_flags = l_flags | os.O_NDELAY
-        if 'a' in which: l_flags = l_flags | os.O_APPEND
-        if 's' in which: l_flags = l_flags | os.O_SYNC
-
-        file = self._file_
-
-        if '=' not in which:
-            cur_fl = fcntl.fcntl(file.fileno(), fcntl.F_GETFL, 0)
-            if '!' in which: l_flags = cur_fl & ~ l_flags
-            else: l_flags = cur_fl | l_flags
-
-        l_flags = fcntl.fcntl(file.fileno(), fcntl.F_SETFL, l_flags)
-
-        if 'c' in which:
-            arg = ('!' not in which)    # 0 is don't, 1 is do close on exec
-            l_flags = fcntl.fcntl(file.fileno(), fcntl.F_SETFD, arg)
-
-        if '?' in which:
-            which = ''                  # Return current flags
-            l_flags = fcntl.fcntl(file.fileno(), fcntl.F_GETFL, 0)
-            if os.O_APPEND & l_flags: which = which + 'a'
-            if fcntl.fcntl(file.fileno(), fcntl.F_GETFD, 0) & 1:
-                which = which + 'c'
-            if os.O_NDELAY & l_flags: which = which + 'n'
-            if os.O_SYNC & l_flags: which = which + 's'
-            return which
-
-    def lock(self, how, *args):
-        import struct, fcntl
-
-        if 'w' in how: l_type = fcntl.F_WRLCK
-        elif 'r' in how: l_type = fcntl.F_RDLCK
-        elif 'u' in how: l_type = fcntl.F_UNLCK
-        else: raise TypeError, 'no type of lock specified'
-
-        if '|' in how: cmd = fcntl.F_SETLKW
-        elif '?' in how: cmd = fcntl.F_GETLK
-        else: cmd = fcntl.F_SETLK
-
-        l_whence = 0
-        l_start = 0
-        l_len = 0
-
-        if len(args) == 1:
-            l_len = args[0]
-        elif len(args) == 2:
-            l_len, l_start = args
-        elif len(args) == 3:
-            l_len, l_start, l_whence = args
-        elif len(args) > 3:
-            raise TypeError, 'too many arguments'
-
-        # Hack by davem@magnet.com to get locking to go on freebsd;
-        # additions for AIX by Vladimir.Marangozov@imag.fr
-        import sys, os
-        if sys.platform in ('netbsd1',
-                            'openbsd2',
-                            'freebsd2', 'freebsd3', 'freebsd4', 'freebsd5',
-                            'freebsd6', 'freebsd7', 'freebsd8',
-                            'bsdos2', 'bsdos3', 'bsdos4'):
-            flock = struct.pack('lxxxxlxxxxlhh', \
-                  l_start, l_len, os.getpid(), l_type, l_whence)
-        elif sys.platform in ('aix3', 'aix4'):
-            flock = struct.pack('hhlllii', \
-                  l_type, l_whence, l_start, l_len, 0, 0, 0)
-        else:
-            flock = struct.pack('hhllhh', \
-                  l_type, l_whence, l_start, l_len, 0, 0)
-
-        flock = fcntl.fcntl(self._file_.fileno(), cmd, flock)
-
-        if '?' in how:
-            if sys.platform in ('netbsd1',
-                                'openbsd2',
-                                'freebsd2', 'freebsd3', 'freebsd4', 'freebsd5',
-                                'bsdos2', 'bsdos3', 'bsdos4'):
-                l_start, l_len, l_pid, l_type, l_whence = \
-                    struct.unpack('lxxxxlxxxxlhh', flock)
-            elif sys.platform in ('aix3', 'aix4'):
-                l_type, l_whence, l_start, l_len, l_sysid, l_pid, l_vfs = \
-                    struct.unpack('hhlllii', flock)
-            elif sys.platform == "linux2":
-                l_type, l_whence, l_start, l_len, l_pid, l_sysid = \
-                    struct.unpack('hhllhh', flock)
-            else:
-                l_type, l_whence, l_start, l_len, l_sysid, l_pid = \
-                    struct.unpack('hhllhh', flock)
-
-            if l_type != fcntl.F_UNLCK:
-                if l_type == fcntl.F_RDLCK:
-                    return 'r', l_len, l_start, l_whence, l_pid
-                else:
-                    return 'w', l_len, l_start, l_whence, l_pid
-
-def open(name, mode='r', bufsize=-1):
-    """Public routine to open a file as a posixfile object."""
-    return _posixfile_().open(name, mode, bufsize)
-
-def fileopen(file):
-    """Public routine to get a posixfile object from a Python file object."""
-    return _posixfile_().fileopen(file)
-
-#
-# Constants
-#
-SEEK_SET = 0
-SEEK_CUR = 1
-SEEK_END = 2
-
-#
-# End of posixfile.py
-#
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/posixpath.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/posixpath.py
deleted file mode 100644
index 55ea03e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/posixpath.py
+++ /dev/null
@@ -1,415 +0,0 @@
-"""Common operations on Posix pathnames.
-
-Instead of importing this module directly, import os and refer to
-this module as os.path.  The "os.path" name is an alias for this
-module on Posix systems; on other systems (e.g. Mac, Windows),
-os.path provides the same operations in a manner specific to that
-platform, and is an alias to another module (e.g. macpath, ntpath).
-
-Some of this can actually be useful on non-Posix systems too, e.g.
-for manipulation of the pathname component of URLs.
-"""
-
-import os
-import sys
-import stat
-import genericpath
-import warnings
-from genericpath import *
-
-__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",
-           "curdir","pardir","sep","pathsep","defpath","altsep","extsep",
-           "devnull","realpath","supports_unicode_filenames","relpath"]
-
-# strings representing various path-related bits and pieces
-curdir = '.'
-pardir = '..'
-extsep = '.'
-sep = '/'
-pathsep = ':'
-defpath = ':/bin:/usr/bin'
-altsep = None
-devnull = '/dev/null'
-
-# Normalize the case of a pathname.  Trivial in Posix, string.lower on Mac.
-# On MS-DOS this may also turn slashes into backslashes; however, other
-# normalizations (such as optimizing '../' away) are not allowed
-# (another function should be defined to do that).
-
-def normcase(s):
-    """Normalize case of pathname.  Has no effect under Posix"""
-    return s
-
-
-# Return whether a path is absolute.
-# Trivial in Posix, harder on the Mac or MS-DOS.
-
-def isabs(s):
-    """Test whether a path is absolute"""
-    return s.startswith('/')
-
-
-# Join pathnames.
-# Ignore the previous parts if a part is absolute.
-# Insert a '/' unless the first part is empty or already ends in '/'.
-
-def join(a, *p):
-    """Join two or more pathname components, inserting '/' as needed.
-    If any component is an absolute path, all previous path components
-    will be discarded."""
-    path = a
-    for b in p:
-        if b.startswith('/'):
-            path = b
-        elif path == '' or path.endswith('/'):
-            path +=  b
-        else:
-            path += '/' + b
-    return path
-
-
-# Split a path in head (everything up to the last '/') and tail (the
-# rest).  If the path ends in '/', tail will be empty.  If there is no
-# '/' in the path, head  will be empty.
-# Trailing '/'es are stripped from head unless it is the root.
-
-def split(p):
-    """Split a pathname.  Returns tuple "(head, tail)" where "tail" is
-    everything after the final slash.  Either part may be empty."""
-    i = p.rfind('/') + 1
-    head, tail = p[:i], p[i:]
-    if head and head != '/'*len(head):
-        head = head.rstrip('/')
-    return head, tail
-
-
-# Split a path in root and extension.
-# The extension is everything starting at the last dot in the last
-# pathname component; the root is everything before that.
-# It is always true that root + ext == p.
-
-def splitext(p):
-    return genericpath._splitext(p, sep, altsep, extsep)
-splitext.__doc__ = genericpath._splitext.__doc__
-
-# Split a pathname into a drive specification and the rest of the
-# path.  Useful on DOS/Windows/NT; on Unix, the drive is always empty.
-
-def splitdrive(p):
-    """Split a pathname into drive and path. On Posix, drive is always
-    empty."""
-    return '', p
-
-
-# Return the tail (basename) part of a path, same as split(path)[1].
-
-def basename(p):
-    """Returns the final component of a pathname"""
-    i = p.rfind('/') + 1
-    return p[i:]
-
-
-# Return the head (dirname) part of a path, same as split(path)[0].
-
-def dirname(p):
-    """Returns the directory component of a pathname"""
-    i = p.rfind('/') + 1
-    head = p[:i]
-    if head and head != '/'*len(head):
-        head = head.rstrip('/')
-    return head
-
-
-# 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:
-        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
-
-
-# Is a path a mount point?
-# (Does this work for all UNIXes?  Is it even guaranteed to work by Posix?)
-
-def ismount(path):
-    """Test whether a path is a mount point"""
-    if islink(path):
-        # A symlink can never be a mount point
-        return False
-    try:
-        s1 = os.lstat(path)
-        s2 = os.lstat(join(path, '..'))
-    except os.error:
-        return False # It doesn't exist -- so not a mount point :-)
-    dev1 = s1.st_dev
-    dev2 = s2.st_dev
-    if dev1 != dev2:
-        return True     # path/.. on a different device as path
-    ino1 = s1.st_ino
-    ino2 = s2.st_ino
-    if ino1 == ino2:
-        return True     # path/.. is the same i-node as path
-    return False
-
-
-# Directory tree walk.
-# For each directory under top (including top itself, but excluding
-# '.' and '..'), func(arg, dirname, filenames) is called, where
-# dirname is the name of the directory and filenames is the list
-# of files (and subdirectories etc.) in the directory.
-# The func may modify the filenames list, to implement a filter,
-# or to impose a different order of visiting.
-
-def walk(top, func, arg):
-    """Directory tree walk with callback function.
-
-    For each directory in the directory tree rooted at top (including top
-    itself, but excluding '.' and '..'), call func(arg, dirname, fnames).
-    dirname is the name of the directory, and fnames a list of the names of
-    the files and subdirectories in dirname (excluding '.' and '..').  func
-    may modify the fnames list in-place (e.g. via del or slice assignment),
-    and walk will only recurse into the subdirectories whose names remain in
-    fnames; this can be used to implement a filter, or to impose a specific
-    order of visiting.  No semantics are defined for, or required of, arg,
-    beyond that arg is always passed to func.  It can be used, e.g., to pass
-    a filename pattern, or a mutable object designed to accumulate
-    statistics.  Passing None for arg is common."""
-    warnings.warnpy3k("In 3.x, os.path.walk is removed in favor of os.walk.",
-                      stacklevel=2)
-    try:
-        names = os.listdir(top)
-    except os.error:
-        return
-    func(arg, top, names)
-    for name in names:
-        name = join(top, name)
-        try:
-            st = os.lstat(name)
-        except os.error:
-            continue
-        if stat.S_ISDIR(st.st_mode):
-            walk(name, func, arg)
-
-
-# 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 constructions.  If user or $HOME is unknown,
-    do nothing."""
-    if not path.startswith('~'):
-        return path
-    i = path.find('/', 1)
-    if i < 0:
-        i = len(path)
-    if i == 1:
-        if 'HOME' not in os.environ:
-            import pwd
-            userhome = pwd.getpwuid(os.getuid()).pw_dir
-        else:
-            userhome = os.environ['HOME']
-    else:
-        import pwd
-        try:
-            pwent = pwd.getpwnam(path[1:i])
-        except KeyError:
-            return path
-        userhome = pwent.pw_dir
-    userhome = userhome.rstrip('/') or userhome
-    return userhome + path[i:]
-
-
-# Expand paths containing shell variable substitutions.
-# This expands the forms $variable and ${variable} only.
-# Non-existent variables are left unchanged.
-
-_varprog = None
-
-def expandvars(path):
-    """Expand shell variables of form $var and ${var}.  Unknown variables
-    are left unchanged."""
-    global _varprog
-    if '$' not in path:
-        return path
-    if not _varprog:
-        import re
-        _varprog = re.compile(r'\$(\w+|\{[^}]*\})')
-    i = 0
-    while True:
-        m = _varprog.search(path, i)
-        if not m:
-            break
-        i, j = m.span(0)
-        name = m.group(1)
-        if name.startswith('{') and name.endswith('}'):
-            name = name[1:-1]
-        if name in os.environ:
-            tail = path[j:]
-            path = path[:i] + os.environ[name]
-            i = len(path)
-            path += tail
-        else:
-            i = j
-    return path
-
-
-# Normalize a path, e.g. A//B, A/./B and A/foo/../B all become A/B.
-# It should be understood that this may change the meaning of the path
-# if it contains symbolic links!
-
-def normpath(path):
-    """Normalize path, eliminating double slashes, etc."""
-    # Preserve unicode (if path is unicode)
-    slash, dot = (u'/', u'.') if isinstance(path, unicode) else ('/', '.')
-    if path == '':
-        return dot
-    initial_slashes = path.startswith('/')
-    # POSIX allows one or two initial slashes, but treats three or more
-    # as single slash.
-    if (initial_slashes and
-        path.startswith('//') and not path.startswith('///')):
-        initial_slashes = 2
-    comps = path.split('/')
-    new_comps = []
-    for comp in comps:
-        if comp in ('', '.'):
-            continue
-        if (comp != '..' or (not initial_slashes and not new_comps) or
-             (new_comps and new_comps[-1] == '..')):
-            new_comps.append(comp)
-        elif new_comps:
-            new_comps.pop()
-    comps = new_comps
-    path = slash.join(comps)
-    if initial_slashes:
-        path = slash*initial_slashes + path
-    return path or dot
-
-
-def abspath(path):
-    """Return an absolute path."""
-    if not isabs(path):
-        if isinstance(path, unicode):
-            cwd = os.getcwdu()
-        else:
-            cwd = os.getcwd()
-        path = join(cwd, path)
-    return normpath(path)
-
-
-# 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 = set()
-    while islink(path):
-        if path in paths_seen:
-            # Already seen this path, so we must have a symlink loop
-            return None
-        paths_seen.add(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
-
-supports_unicode_filenames = (sys.platform == 'darwin')
-
-def relpath(path, start=curdir):
-    """Return a relative version of a path"""
-
-    if not path:
-        raise ValueError("no path specified")
-
-    start_list = [x for x in abspath(start).split(sep) if x]
-    path_list = [x for x in abspath(path).split(sep) if x]
-
-    # Work out how much of the filepath is shared by start and path.
-    i = len(commonprefix([start_list, path_list]))
-
-    rel_list = [pardir] * (len(start_list)-i) + path_list[i:]
-    if not rel_list:
-        return curdir
-    return join(*rel_list)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/pprint.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/pprint.py
deleted file mode 100644
index 9ba763c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/pprint.py
+++ /dev/null
@@ -1,350 +0,0 @@
-#  Author:      Fred L. Drake, Jr.
-#               fdrake@acm.org
-#
-#  This is a simple little module I wrote to make life easier.  I didn't
-#  see anything quite like it in the library, though I may have overlooked
-#  something.  I wrote this when I was trying to read some heavily nested
-#  tuples with fairly non-descriptive content.  This is modeled very much
-#  after Lisp/Scheme - style pretty-printing of lists.  If you find it
-#  useful, thank small children who sleep at night.
-
-"""Support to pretty-print lists, tuples, & dictionaries recursively.
-
-Very simple, but useful, especially in debugging data structures.
-
-Classes
--------
-
-PrettyPrinter()
-    Handle pretty-printing operations onto a stream using a configured
-    set of formatting parameters.
-
-Functions
----------
-
-pformat()
-    Format a Python object into a pretty-printed representation.
-
-pprint()
-    Pretty-print a Python object to a stream [default is sys.stdout].
-
-saferepr()
-    Generate a 'standard' repr()-like value, but protect against recursive
-    data structures.
-
-"""
-
-import sys as _sys
-import warnings
-
-from cStringIO import StringIO as _StringIO
-
-__all__ = ["pprint","pformat","isreadable","isrecursive","saferepr",
-           "PrettyPrinter"]
-
-# cache these for faster access:
-_commajoin = ", ".join
-_id = id
-_len = len
-_type = type
-
-
-def pprint(object, stream=None, indent=1, width=80, depth=None):
-    """Pretty-print a Python object to a stream [default is sys.stdout]."""
-    printer = PrettyPrinter(
-        stream=stream, indent=indent, width=width, depth=depth)
-    printer.pprint(object)
-
-def pformat(object, indent=1, width=80, depth=None):
-    """Format a Python object into a pretty-printed representation."""
-    return PrettyPrinter(indent=indent, width=width, depth=depth).pformat(object)
-
-def saferepr(object):
-    """Version of repr() which can handle recursive data structures."""
-    return _safe_repr(object, {}, None, 0)[0]
-
-def isreadable(object):
-    """Determine if saferepr(object) is readable by eval()."""
-    return _safe_repr(object, {}, None, 0)[1]
-
-def isrecursive(object):
-    """Determine if object requires a recursive representation."""
-    return _safe_repr(object, {}, None, 0)[2]
-
-def _sorted(iterable):
-    with warnings.catch_warnings():
-        if _sys.py3kwarning:
-            warnings.filterwarnings("ignore", "comparing unequal types "
-                                    "not supported", DeprecationWarning)
-        return sorted(iterable)
-
-class PrettyPrinter:
-    def __init__(self, indent=1, width=80, depth=None, stream=None):
-        """Handle pretty printing operations onto a stream using a set of
-        configured parameters.
-
-        indent
-            Number of spaces to indent for each level of nesting.
-
-        width
-            Attempted maximum number of columns in the output.
-
-        depth
-            The maximum depth to print out nested structures.
-
-        stream
-            The desired output stream.  If omitted (or false), the standard
-            output stream available at construction will be used.
-
-        """
-        indent = int(indent)
-        width = int(width)
-        assert indent >= 0, "indent must be >= 0"
-        assert depth is None or depth > 0, "depth must be > 0"
-        assert width, "width must be != 0"
-        self._depth = depth
-        self._indent_per_level = indent
-        self._width = width
-        if stream is not None:
-            self._stream = stream
-        else:
-            self._stream = _sys.stdout
-
-    def pprint(self, object):
-        self._format(object, self._stream, 0, 0, {}, 0)
-        self._stream.write("\n")
-
-    def pformat(self, object):
-        sio = _StringIO()
-        self._format(object, sio, 0, 0, {}, 0)
-        return sio.getvalue()
-
-    def isrecursive(self, object):
-        return self.format(object, {}, 0, 0)[2]
-
-    def isreadable(self, object):
-        s, readable, recursive = self.format(object, {}, 0, 0)
-        return readable and not recursive
-
-    def _format(self, object, stream, indent, allowance, context, level):
-        level = level + 1
-        objid = _id(object)
-        if objid in context:
-            stream.write(_recursion(object))
-            self._recursive = True
-            self._readable = False
-            return
-        rep = self._repr(object, context, level - 1)
-        typ = _type(object)
-        sepLines = _len(rep) > (self._width - 1 - indent - allowance)
-        write = stream.write
-
-        if self._depth and level > self._depth:
-            write(rep)
-            return
-
-        r = getattr(typ, "__repr__", None)
-        if issubclass(typ, dict) and r is dict.__repr__:
-            write('{')
-            if self._indent_per_level > 1:
-                write((self._indent_per_level - 1) * ' ')
-            length = _len(object)
-            if length:
-                context[objid] = 1
-                indent = indent + self._indent_per_level
-                items = _sorted(object.items())
-                key, ent = items[0]
-                rep = self._repr(key, context, level)
-                write(rep)
-                write(': ')
-                self._format(ent, stream, indent + _len(rep) + 2,
-                              allowance + 1, context, level)
-                if length > 1:
-                    for key, ent in items[1:]:
-                        rep = self._repr(key, context, level)
-                        if sepLines:
-                            write(',\n%s%s: ' % (' '*indent, rep))
-                        else:
-                            write(', %s: ' % rep)
-                        self._format(ent, stream, indent + _len(rep) + 2,
-                                      allowance + 1, context, level)
-                indent = indent - self._indent_per_level
-                del context[objid]
-            write('}')
-            return
-
-        if ((issubclass(typ, list) and r is list.__repr__) or
-            (issubclass(typ, tuple) and r is tuple.__repr__) or
-            (issubclass(typ, set) and r is set.__repr__) or
-            (issubclass(typ, frozenset) and r is frozenset.__repr__)
-           ):
-            length = _len(object)
-            if issubclass(typ, list):
-                write('[')
-                endchar = ']'
-            elif issubclass(typ, set):
-                if not length:
-                    write('set()')
-                    return
-                write('set([')
-                endchar = '])'
-                object = _sorted(object)
-                indent += 4
-            elif issubclass(typ, frozenset):
-                if not length:
-                    write('frozenset()')
-                    return
-                write('frozenset([')
-                endchar = '])'
-                object = _sorted(object)
-                indent += 10
-            else:
-                write('(')
-                endchar = ')'
-            if self._indent_per_level > 1 and sepLines:
-                write((self._indent_per_level - 1) * ' ')
-            if length:
-                context[objid] = 1
-                indent = indent + self._indent_per_level
-                self._format(object[0], stream, indent, allowance + 1,
-                             context, level)
-                if length > 1:
-                    for ent in object[1:]:
-                        if sepLines:
-                            write(',\n' + ' '*indent)
-                        else:
-                            write(', ')
-                        self._format(ent, stream, indent,
-                                      allowance + 1, context, level)
-                indent = indent - self._indent_per_level
-                del context[objid]
-            if issubclass(typ, tuple) and length == 1:
-                write(',')
-            write(endchar)
-            return
-
-        write(rep)
-
-    def _repr(self, object, context, level):
-        repr, readable, recursive = self.format(object, context.copy(),
-                                                self._depth, level)
-        if not readable:
-            self._readable = False
-        if recursive:
-            self._recursive = True
-        return repr
-
-    def format(self, object, context, maxlevels, level):
-        """Format object for a specific context, returning a string
-        and flags indicating whether the representation is 'readable'
-        and whether the object represents a recursive construct.
-        """
-        return _safe_repr(object, context, maxlevels, level)
-
-
-# Return triple (repr_string, isreadable, isrecursive).
-
-def _safe_repr(object, context, maxlevels, level):
-    typ = _type(object)
-    if typ is str:
-        if 'locale' not in _sys.modules:
-            return repr(object), True, False
-        if "'" in object and '"' not in object:
-            closure = '"'
-            quotes = {'"': '\\"'}
-        else:
-            closure = "'"
-            quotes = {"'": "\\'"}
-        qget = quotes.get
-        sio = _StringIO()
-        write = sio.write
-        for char in object:
-            if char.isalpha():
-                write(char)
-            else:
-                write(qget(char, repr(char)[1:-1]))
-        return ("%s%s%s" % (closure, sio.getvalue(), closure)), True, False
-
-    r = getattr(typ, "__repr__", None)
-    if issubclass(typ, dict) and r is dict.__repr__:
-        if not object:
-            return "{}", True, False
-        objid = _id(object)
-        if maxlevels and level >= maxlevels:
-            return "{...}", False, objid in context
-        if objid in context:
-            return _recursion(object), False, True
-        context[objid] = 1
-        readable = True
-        recursive = False
-        components = []
-        append = components.append
-        level += 1
-        saferepr = _safe_repr
-        for k, v in _sorted(object.items()):
-            krepr, kreadable, krecur = saferepr(k, context, maxlevels, level)
-            vrepr, vreadable, vrecur = saferepr(v, context, maxlevels, level)
-            append("%s: %s" % (krepr, vrepr))
-            readable = readable and kreadable and vreadable
-            if krecur or vrecur:
-                recursive = True
-        del context[objid]
-        return "{%s}" % _commajoin(components), readable, recursive
-
-    if (issubclass(typ, list) and r is list.__repr__) or \
-       (issubclass(typ, tuple) and r is tuple.__repr__):
-        if issubclass(typ, list):
-            if not object:
-                return "[]", True, False
-            format = "[%s]"
-        elif _len(object) == 1:
-            format = "(%s,)"
-        else:
-            if not object:
-                return "()", True, False
-            format = "(%s)"
-        objid = _id(object)
-        if maxlevels and level >= maxlevels:
-            return format % "...", False, objid in context
-        if objid in context:
-            return _recursion(object), False, True
-        context[objid] = 1
-        readable = True
-        recursive = False
-        components = []
-        append = components.append
-        level += 1
-        for o in object:
-            orepr, oreadable, orecur = _safe_repr(o, context, maxlevels, level)
-            append(orepr)
-            if not oreadable:
-                readable = False
-            if orecur:
-                recursive = True
-        del context[objid]
-        return format % _commajoin(components), readable, recursive
-
-    rep = repr(object)
-    return rep, (rep and not rep.startswith('<')), False
-
-
-def _recursion(object):
-    return ("<Recursion on %s with id=%s>"
-            % (_type(object).__name__, _id(object)))
-
-
-def _perfcheck(object=None):
-    import time
-    if object is None:
-        object = [("string", (1, 2), [3, 4], {5: 6, 7: 8})] * 100000
-    p = PrettyPrinter()
-    t1 = time.time()
-    _safe_repr(object, {}, None, 0)
-    t2 = time.time()
-    p.pformat(object)
-    t3 = time.time()
-    print "_safe_repr:", t2 - t1
-    print "pformat:", t3 - t2
-
-if __name__ == "__main__":
-    _perfcheck()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/profile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/profile.py
deleted file mode 100644
index 210b207..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/profile.py
+++ /dev/null
@@ -1,619 +0,0 @@
-#! /usr/bin/env python
-#
-# Class for profiling python code. rev 1.0  6/2/94
-#
-# Based on prior profile module by Sjoerd Mullender...
-#   which was hacked somewhat by: Guido van Rossum
-
-"""Class for profiling Python code."""
-
-# Copyright 1994, by InfoSeek Corporation, all rights reserved.
-# Written by James Roskind
-#
-# Permission to use, copy, modify, and distribute this Python software
-# and its associated documentation for any purpose (subject to the
-# restriction in the following sentence) without fee is hereby granted,
-# provided that the above copyright notice appears in all copies, and
-# that both that copyright notice and this permission notice appear in
-# supporting documentation, and that the name of InfoSeek not be used in
-# advertising or publicity pertaining to distribution of the software
-# without specific, written prior permission.  This permission is
-# explicitly restricted to the copying and modification of the software
-# to remain in Python, compiled Python, or other languages (such as C)
-# wherein the modified or derived code is exclusively imported into a
-# Python module.
-#
-# INFOSEEK CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-# FITNESS. IN NO EVENT SHALL INFOSEEK CORPORATION BE LIABLE FOR ANY
-# SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
-# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
-# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
-# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-
-
-import sys
-import os
-import time
-import marshal
-from optparse import OptionParser
-
-__all__ = ["run", "runctx", "help", "Profile"]
-
-# Sample timer for use with
-#i_count = 0
-#def integer_timer():
-#       global i_count
-#       i_count = i_count + 1
-#       return i_count
-#itimes = integer_timer # replace with C coded timer returning integers
-
-#**************************************************************************
-# The following are the static member functions for the profiler class
-# Note that an instance of Profile() is *not* needed to call them.
-#**************************************************************************
-
-def run(statement, filename=None, sort=-1):
-    """Run statement under profiler optionally saving results in filename
-
-    This function takes a single argument that can be passed to the
-    "exec" statement, and an optional file name.  In all cases this
-    routine attempts to "exec" its first argument and gather profiling
-    statistics from the execution. If no file name is present, then this
-    function automatically prints a simple profiling report, sorted by the
-    standard name string (file/line/function-name) that is presented in
-    each line.
-    """
-    prof = Profile()
-    try:
-        prof = prof.run(statement)
-    except SystemExit:
-        pass
-    if filename is not None:
-        prof.dump_stats(filename)
-    else:
-        return prof.print_stats(sort)
-
-def runctx(statement, globals, locals, filename=None, sort=-1):
-    """Run statement under profiler, supplying your own globals and locals,
-    optionally saving results in filename.
-
-    statement and filename have the same semantics as profile.run
-    """
-    prof = Profile()
-    try:
-        prof = prof.runctx(statement, globals, locals)
-    except SystemExit:
-        pass
-
-    if filename is not None:
-        prof.dump_stats(filename)
-    else:
-        return prof.print_stats(sort)
-
-# Backwards compatibility.
-def help():
-    print "Documentation for the profile module can be found "
-    print "in the Python Library Reference, section 'The Python Profiler'."
-
-if hasattr(os, "times"):
-    def _get_time_times(timer=os.times):
-        t = timer()
-        return t[0] + t[1]
-
-# Using getrusage(3) is better than clock(3) if available:
-# on some systems (e.g. FreeBSD), getrusage has a higher resolution
-# Furthermore, on a POSIX system, returns microseconds, which
-# wrap around after 36min.
-_has_res = 0
-try:
-    import resource
-    resgetrusage = lambda: resource.getrusage(resource.RUSAGE_SELF)
-    def _get_time_resource(timer=resgetrusage):
-        t = timer()
-        return t[0] + t[1]
-    _has_res = 1
-except ImportError:
-    pass
-
-class Profile:
-    """Profiler class.
-
-    self.cur is always a tuple.  Each such tuple corresponds to a stack
-    frame that is currently active (self.cur[-2]).  The following are the
-    definitions of its members.  We use this external "parallel stack" to
-    avoid contaminating the program that we are profiling. (old profiler
-    used to write into the frames local dictionary!!) Derived classes
-    can change the definition of some entries, as long as they leave
-    [-2:] intact (frame and previous tuple).  In case an internal error is
-    detected, the -3 element is used as the function name.
-
-    [ 0] = Time that needs to be charged to the parent frame's function.
-           It is used so that a function call will not have to access the
-           timing data for the parent frame.
-    [ 1] = Total time spent in this frame's function, excluding time in
-           subfunctions (this latter is tallied in cur[2]).
-    [ 2] = Total time spent in subfunctions, excluding time executing the
-           frame's function (this latter is tallied in cur[1]).
-    [-3] = Name of the function that corresponds to this frame.
-    [-2] = Actual frame that we correspond to (used to sync exception handling).
-    [-1] = Our parent 6-tuple (corresponds to frame.f_back).
-
-    Timing data for each function is stored as a 5-tuple in the dictionary
-    self.timings[].  The index is always the name stored in self.cur[-3].
-    The following are the definitions of the members:
-
-    [0] = The number of times this function was called, not counting direct
-          or indirect recursion,
-    [1] = Number of times this function appears on the stack, minus one
-    [2] = Total time spent internal to this function
-    [3] = Cumulative time that this function was present on the stack.  In
-          non-recursive functions, this is the total execution time from start
-          to finish of each invocation of a function, including time spent in
-          all subfunctions.
-    [4] = A dictionary indicating for each function name, the number of times
-          it was called by us.
-    """
-
-    bias = 0  # calibration constant
-
-    def __init__(self, timer=None, bias=None):
-        self.timings = {}
-        self.cur = None
-        self.cmd = ""
-        self.c_func_name = ""
-
-        if bias is None:
-            bias = self.bias
-        self.bias = bias     # Materialize in local dict for lookup speed.
-
-        if not timer:
-            if _has_res:
-                self.timer = resgetrusage
-                self.dispatcher = self.trace_dispatch
-                self.get_time = _get_time_resource
-            elif hasattr(time, 'clock'):
-                self.timer = self.get_time = time.clock
-                self.dispatcher = self.trace_dispatch_i
-            elif hasattr(os, 'times'):
-                self.timer = os.times
-                self.dispatcher = self.trace_dispatch
-                self.get_time = _get_time_times
-            else:
-                self.timer = self.get_time = time.time
-                self.dispatcher = self.trace_dispatch_i
-        else:
-            self.timer = timer
-            t = self.timer() # test out timer function
-            try:
-                length = len(t)
-            except TypeError:
-                self.get_time = timer
-                self.dispatcher = self.trace_dispatch_i
-            else:
-                if length == 2:
-                    self.dispatcher = self.trace_dispatch
-                else:
-                    self.dispatcher = self.trace_dispatch_l
-                # This get_time() implementation needs to be defined
-                # here to capture the passed-in timer in the parameter
-                # list (for performance).  Note that we can't assume
-                # the timer() result contains two values in all
-                # cases.
-                def get_time_timer(timer=timer, sum=sum):
-                    return sum(timer())
-                self.get_time = get_time_timer
-        self.t = self.get_time()
-        self.simulate_call('profiler')
-
-    # Heavily optimized dispatch routine for os.times() timer
-
-    def trace_dispatch(self, frame, event, arg):
-        timer = self.timer
-        t = timer()
-        t = t[0] + t[1] - self.t - self.bias
-
-        if event == "c_call":
-            self.c_func_name = arg.__name__
-
-        if self.dispatch[event](self, frame,t):
-            t = timer()
-            self.t = t[0] + t[1]
-        else:
-            r = timer()
-            self.t = r[0] + r[1] - t # put back unrecorded delta
-
-    # Dispatch routine for best timer program (return = scalar, fastest if
-    # an integer but float works too -- and time.clock() relies on that).
-
-    def trace_dispatch_i(self, frame, event, arg):
-        timer = self.timer
-        t = timer() - self.t - self.bias
-
-        if event == "c_call":
-            self.c_func_name = arg.__name__
-
-        if self.dispatch[event](self, frame, t):
-            self.t = timer()
-        else:
-            self.t = timer() - t  # put back unrecorded delta
-
-    # Dispatch routine for macintosh (timer returns time in ticks of
-    # 1/60th second)
-
-    def trace_dispatch_mac(self, frame, event, arg):
-        timer = self.timer
-        t = timer()/60.0 - self.t - self.bias
-
-        if event == "c_call":
-            self.c_func_name = arg.__name__
-
-        if self.dispatch[event](self, frame, t):
-            self.t = timer()/60.0
-        else:
-            self.t = timer()/60.0 - t  # put back unrecorded delta
-
-    # SLOW generic dispatch routine for timer returning lists of numbers
-
-    def trace_dispatch_l(self, frame, event, arg):
-        get_time = self.get_time
-        t = get_time() - self.t - self.bias
-
-        if event == "c_call":
-            self.c_func_name = arg.__name__
-
-        if self.dispatch[event](self, frame, t):
-            self.t = get_time()
-        else:
-            self.t = get_time() - t # put back unrecorded delta
-
-    # In the event handlers, the first 3 elements of self.cur are unpacked
-    # into vrbls w/ 3-letter names.  The last two characters are meant to be
-    # mnemonic:
-    #     _pt  self.cur[0] "parent time"   time to be charged to parent frame
-    #     _it  self.cur[1] "internal time" time spent directly in the function
-    #     _et  self.cur[2] "external time" time spent in subfunctions
-
-    def trace_dispatch_exception(self, frame, t):
-        rpt, rit, ret, rfn, rframe, rcur = self.cur
-        if (rframe is not frame) and rcur:
-            return self.trace_dispatch_return(rframe, t)
-        self.cur = rpt, rit+t, ret, rfn, rframe, rcur
-        return 1
-
-
-    def trace_dispatch_call(self, frame, t):
-        if self.cur and frame.f_back is not self.cur[-2]:
-            rpt, rit, ret, rfn, rframe, rcur = self.cur
-            if not isinstance(rframe, Profile.fake_frame):
-                assert rframe.f_back is frame.f_back, ("Bad call", rfn,
-                                                       rframe, rframe.f_back,
-                                                       frame, frame.f_back)
-                self.trace_dispatch_return(rframe, 0)
-                assert (self.cur is None or \
-                        frame.f_back is self.cur[-2]), ("Bad call",
-                                                        self.cur[-3])
-        fcode = frame.f_code
-        fn = (fcode.co_filename, fcode.co_firstlineno, fcode.co_name)
-        self.cur = (t, 0, 0, fn, frame, self.cur)
-        timings = self.timings
-        if fn in timings:
-            cc, ns, tt, ct, callers = timings[fn]
-            timings[fn] = cc, ns + 1, tt, ct, callers
-        else:
-            timings[fn] = 0, 0, 0, 0, {}
-        return 1
-
-    def trace_dispatch_c_call (self, frame, t):
-        fn = ("", 0, self.c_func_name)
-        self.cur = (t, 0, 0, fn, frame, self.cur)
-        timings = self.timings
-        if fn in timings:
-            cc, ns, tt, ct, callers = timings[fn]
-            timings[fn] = cc, ns+1, tt, ct, callers
-        else:
-            timings[fn] = 0, 0, 0, 0, {}
-        return 1
-
-    def trace_dispatch_return(self, frame, t):
-        if frame is not self.cur[-2]:
-            assert frame is self.cur[-2].f_back, ("Bad return", self.cur[-3])
-            self.trace_dispatch_return(self.cur[-2], 0)
-
-        # Prefix "r" means part of the Returning or exiting frame.
-        # Prefix "p" means part of the Previous or Parent or older frame.
-
-        rpt, rit, ret, rfn, frame, rcur = self.cur
-        rit = rit + t
-        frame_total = rit + ret
-
-        ppt, pit, pet, pfn, pframe, pcur = rcur
-        self.cur = ppt, pit + rpt, pet + frame_total, pfn, pframe, pcur
-
-        timings = self.timings
-        cc, ns, tt, ct, callers = timings[rfn]
-        if not ns:
-            # This is the only occurrence of the function on the stack.
-            # Else this is a (directly or indirectly) recursive call, and
-            # its cumulative time will get updated when the topmost call to
-            # it returns.
-            ct = ct + frame_total
-            cc = cc + 1
-
-        if pfn in callers:
-            callers[pfn] = callers[pfn] + 1  # hack: gather more
-            # stats such as the amount of time added to ct courtesy
-            # of this specific call, and the contribution to cc
-            # courtesy of this call.
-        else:
-            callers[pfn] = 1
-
-        timings[rfn] = cc, ns - 1, tt + rit, ct, callers
-
-        return 1
-
-
-    dispatch = {
-        "call": trace_dispatch_call,
-        "exception": trace_dispatch_exception,
-        "return": trace_dispatch_return,
-        "c_call": trace_dispatch_c_call,
-        "c_exception": trace_dispatch_return,  # the C function returned
-        "c_return": trace_dispatch_return,
-        }
-
-
-    # The next few functions play with self.cmd. By carefully preloading
-    # our parallel stack, we can force the profiled result to include
-    # an arbitrary string as the name of the calling function.
-    # We use self.cmd as that string, and the resulting stats look
-    # very nice :-).
-
-    def set_cmd(self, cmd):
-        if self.cur[-1]: return   # already set
-        self.cmd = cmd
-        self.simulate_call(cmd)
-
-    class fake_code:
-        def __init__(self, filename, line, name):
-            self.co_filename = filename
-            self.co_line = line
-            self.co_name = name
-            self.co_firstlineno = 0
-
-        def __repr__(self):
-            return repr((self.co_filename, self.co_line, self.co_name))
-
-    class fake_frame:
-        def __init__(self, code, prior):
-            self.f_code = code
-            self.f_back = prior
-
-    def simulate_call(self, name):
-        code = self.fake_code('profile', 0, name)
-        if self.cur:
-            pframe = self.cur[-2]
-        else:
-            pframe = None
-        frame = self.fake_frame(code, pframe)
-        self.dispatch['call'](self, frame, 0)
-
-    # collect stats from pending stack, including getting final
-    # timings for self.cmd frame.
-
-    def simulate_cmd_complete(self):
-        get_time = self.get_time
-        t = get_time() - self.t
-        while self.cur[-1]:
-            # We *can* cause assertion errors here if
-            # dispatch_trace_return checks for a frame match!
-            self.dispatch['return'](self, self.cur[-2], t)
-            t = 0
-        self.t = get_time() - t
-
-
-    def print_stats(self, sort=-1):
-        import pstats
-        pstats.Stats(self).strip_dirs().sort_stats(sort). \
-                  print_stats()
-
-    def dump_stats(self, file):
-        f = open(file, 'wb')
-        self.create_stats()
-        marshal.dump(self.stats, f)
-        f.close()
-
-    def create_stats(self):
-        self.simulate_cmd_complete()
-        self.snapshot_stats()
-
-    def snapshot_stats(self):
-        self.stats = {}
-        for func, (cc, ns, tt, ct, callers) in self.timings.iteritems():
-            callers = callers.copy()
-            nc = 0
-            for callcnt in callers.itervalues():
-                nc += callcnt
-            self.stats[func] = cc, nc, tt, ct, callers
-
-
-    # The following two methods can be called by clients to use
-    # a profiler to profile a statement, given as a string.
-
-    def run(self, cmd):
-        import __main__
-        dict = __main__.__dict__
-        return self.runctx(cmd, dict, dict)
-
-    def runctx(self, cmd, globals, locals):
-        self.set_cmd(cmd)
-        sys.setprofile(self.dispatcher)
-        try:
-            exec cmd in globals, locals
-        finally:
-            sys.setprofile(None)
-        return self
-
-    # This method is more useful to profile a single function call.
-    def runcall(self, func, *args, **kw):
-        self.set_cmd(repr(func))
-        sys.setprofile(self.dispatcher)
-        try:
-            return func(*args, **kw)
-        finally:
-            sys.setprofile(None)
-
-
-    #******************************************************************
-    # The following calculates the overhead for using a profiler.  The
-    # problem is that it takes a fair amount of time for the profiler
-    # to stop the stopwatch (from the time it receives an event).
-    # Similarly, there is a delay from the time that the profiler
-    # re-starts the stopwatch before the user's code really gets to
-    # continue.  The following code tries to measure the difference on
-    # a per-event basis.
-    #
-    # Note that this difference is only significant if there are a lot of
-    # events, and relatively little user code per event.  For example,
-    # code with small functions will typically benefit from having the
-    # profiler calibrated for the current platform.  This *could* be
-    # done on the fly during init() time, but it is not worth the
-    # effort.  Also note that if too large a value specified, then
-    # execution time on some functions will actually appear as a
-    # negative number.  It is *normal* for some functions (with very
-    # low call counts) to have such negative stats, even if the
-    # calibration figure is "correct."
-    #
-    # One alternative to profile-time calibration adjustments (i.e.,
-    # adding in the magic little delta during each event) is to track
-    # more carefully the number of events (and cumulatively, the number
-    # of events during sub functions) that are seen.  If this were
-    # done, then the arithmetic could be done after the fact (i.e., at
-    # display time).  Currently, we track only call/return events.
-    # These values can be deduced by examining the callees and callers
-    # vectors for each functions.  Hence we *can* almost correct the
-    # internal time figure at print time (note that we currently don't
-    # track exception event processing counts).  Unfortunately, there
-    # is currently no similar information for cumulative sub-function
-    # time.  It would not be hard to "get all this info" at profiler
-    # time.  Specifically, we would have to extend the tuples to keep
-    # counts of this in each frame, and then extend the defs of timing
-    # tuples to include the significant two figures. I'm a bit fearful
-    # that this additional feature will slow the heavily optimized
-    # event/time ratio (i.e., the profiler would run slower, fur a very
-    # low "value added" feature.)
-    #**************************************************************
-
-    def calibrate(self, m, verbose=0):
-        if self.__class__ is not Profile:
-            raise TypeError("Subclasses must override .calibrate().")
-
-        saved_bias = self.bias
-        self.bias = 0
-        try:
-            return self._calibrate_inner(m, verbose)
-        finally:
-            self.bias = saved_bias
-
-    def _calibrate_inner(self, m, verbose):
-        get_time = self.get_time
-
-        # Set up a test case to be run with and without profiling.  Include
-        # lots of calls, because we're trying to quantify stopwatch overhead.
-        # Do not raise any exceptions, though, because we want to know
-        # exactly how many profile events are generated (one call event, +
-        # one return event, per Python-level call).
-
-        def f1(n):
-            for i in range(n):
-                x = 1
-
-        def f(m, f1=f1):
-            for i in range(m):
-                f1(100)
-
-        f(m)    # warm up the cache
-
-        # elapsed_noprofile <- time f(m) takes without profiling.
-        t0 = get_time()
-        f(m)
-        t1 = get_time()
-        elapsed_noprofile = t1 - t0
-        if verbose:
-            print "elapsed time without profiling =", elapsed_noprofile
-
-        # elapsed_profile <- time f(m) takes with profiling.  The difference
-        # is profiling overhead, only some of which the profiler subtracts
-        # out on its own.
-        p = Profile()
-        t0 = get_time()
-        p.runctx('f(m)', globals(), locals())
-        t1 = get_time()
-        elapsed_profile = t1 - t0
-        if verbose:
-            print "elapsed time with profiling =", elapsed_profile
-
-        # reported_time <- "CPU seconds" the profiler charged to f and f1.
-        total_calls = 0.0
-        reported_time = 0.0
-        for (filename, line, funcname), (cc, ns, tt, ct, callers) in \
-                p.timings.items():
-            if funcname in ("f", "f1"):
-                total_calls += cc
-                reported_time += tt
-
-        if verbose:
-            print "'CPU seconds' profiler reported =", reported_time
-            print "total # calls =", total_calls
-        if total_calls != m + 1:
-            raise ValueError("internal error: total calls = %d" % total_calls)
-
-        # reported_time - elapsed_noprofile = overhead the profiler wasn't
-        # able to measure.  Divide by twice the number of calls (since there
-        # are two profiler events per call in this test) to get the hidden
-        # overhead per event.
-        mean = (reported_time - elapsed_noprofile) / 2.0 / total_calls
-        if verbose:
-            print "mean stopwatch overhead per profile event =", mean
-        return mean
-
-#****************************************************************************
-def Stats(*args):
-    print 'Report generating functions are in the "pstats" module\a'
-
-def main():
-    usage = "profile.py [-o output_file_path] [-s sort] scriptfile [arg] ..."
-    parser = OptionParser(usage=usage)
-    parser.allow_interspersed_args = False
-    parser.add_option('-o', '--outfile', dest="outfile",
-        help="Save stats to <outfile>", default=None)
-    parser.add_option('-s', '--sort', dest="sort",
-        help="Sort order when printing to stdout, based on pstats.Stats class",
-        default=-1)
-
-    if not sys.argv[1:]:
-        parser.print_usage()
-        sys.exit(2)
-
-    (options, args) = parser.parse_args()
-    sys.argv[:] = args
-
-    if len(args) > 0:
-        progname = args[0]
-        sys.path.insert(0, os.path.dirname(progname))
-        with open(progname, 'rb') as fp:
-            code = compile(fp.read(), progname, 'exec')
-        globs = {
-            '__file__': progname,
-            '__name__': '__main__',
-            '__package__': None,
-        }
-        runctx(code, globs, None, options.outfile, options.sort)
-    else:
-        parser.print_usage()
-    return parser
-
-# When invoked as main program, invoke the profiler on a script
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/pstats.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/pstats.py
deleted file mode 100644
index 98aae30..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/pstats.py
+++ /dev/null
@@ -1,713 +0,0 @@
-"""Class for printing reports on profiled python code."""
-
-# Class for printing reports on profiled python code. rev 1.0  4/1/94
-#
-# Based on prior profile module by Sjoerd Mullender...
-#   which was hacked somewhat by: Guido van Rossum
-#
-# see profile.py for more info.
-
-# Copyright 1994, by InfoSeek Corporation, all rights reserved.
-# Written by James Roskind
-#
-# Permission to use, copy, modify, and distribute this Python software
-# and its associated documentation for any purpose (subject to the
-# restriction in the following sentence) without fee is hereby granted,
-# provided that the above copyright notice appears in all copies, and
-# that both that copyright notice and this permission notice appear in
-# supporting documentation, and that the name of InfoSeek not be used in
-# advertising or publicity pertaining to distribution of the software
-# without specific, written prior permission.  This permission is
-# explicitly restricted to the copying and modification of the software
-# to remain in Python, compiled Python, or other languages (such as C)
-# wherein the modified or derived code is exclusively imported into a
-# Python module.
-#
-# INFOSEEK CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-# FITNESS. IN NO EVENT SHALL INFOSEEK CORPORATION BE LIABLE FOR ANY
-# SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
-# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
-# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
-# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-
-import sys
-import os
-import time
-import marshal
-import re
-from functools import cmp_to_key
-
-__all__ = ["Stats"]
-
-class Stats:
-    """This class is used for creating reports from data generated by the
-    Profile class.  It is a "friend" of that class, and imports data either
-    by direct access to members of Profile class, or by reading in a dictionary
-    that was emitted (via marshal) from the Profile class.
-
-    The big change from the previous Profiler (in terms of raw functionality)
-    is that an "add()" method has been provided to combine Stats from
-    several distinct profile runs.  Both the constructor and the add()
-    method now take arbitrarily many file names as arguments.
-
-    All the print methods now take an argument that indicates how many lines
-    to print.  If the arg is a floating point number between 0 and 1.0, then
-    it is taken as a decimal percentage of the available lines to be printed
-    (e.g., .1 means print 10% of all available lines).  If it is an integer,
-    it is taken to mean the number of lines of data that you wish to have
-    printed.
-
-    The sort_stats() method now processes some additional options (i.e., in
-    addition to the old -1, 0, 1, or 2).  It takes an arbitrary number of
-    quoted strings to select the sort order.  For example sort_stats('time',
-    'name') sorts on the major key of 'internal function time', and on the
-    minor key of 'the name of the function'.  Look at the two tables in
-    sort_stats() and get_sort_arg_defs(self) for more examples.
-
-    All methods return self, so you can string together commands like:
-        Stats('foo', 'goo').strip_dirs().sort_stats('calls').\
-                            print_stats(5).print_callers(5)
-    """
-
-    def __init__(self, *args, **kwds):
-        # I can't figure out how to explictly specify a stream keyword arg
-        # with *args:
-        #   def __init__(self, *args, stream=sys.stdout): ...
-        # so I use **kwds and sqauwk if something unexpected is passed in.
-        self.stream = sys.stdout
-        if "stream" in kwds:
-            self.stream = kwds["stream"]
-            del kwds["stream"]
-        if kwds:
-            keys = kwds.keys()
-            keys.sort()
-            extras = ", ".join(["%s=%s" % (k, kwds[k]) for k in keys])
-            raise ValueError, "unrecognized keyword args: %s" % extras
-        if not len(args):
-            arg = None
-        else:
-            arg = args[0]
-            args = args[1:]
-        self.init(arg)
-        self.add(*args)
-
-    def init(self, arg):
-        self.all_callees = None  # calc only if needed
-        self.files = []
-        self.fcn_list = None
-        self.total_tt = 0
-        self.total_calls = 0
-        self.prim_calls = 0
-        self.max_name_len = 0
-        self.top_level = {}
-        self.stats = {}
-        self.sort_arg_dict = {}
-        self.load_stats(arg)
-        trouble = 1
-        try:
-            self.get_top_level_stats()
-            trouble = 0
-        finally:
-            if trouble:
-                print >> self.stream, "Invalid timing data",
-                if self.files: print >> self.stream, self.files[-1],
-                print >> self.stream
-
-    def load_stats(self, arg):
-        if not arg:  self.stats = {}
-        elif isinstance(arg, basestring):
-            f = open(arg, 'rb')
-            self.stats = marshal.load(f)
-            f.close()
-            try:
-                file_stats = os.stat(arg)
-                arg = time.ctime(file_stats.st_mtime) + "    " + arg
-            except:  # in case this is not unix
-                pass
-            self.files = [ arg ]
-        elif hasattr(arg, 'create_stats'):
-            arg.create_stats()
-            self.stats = arg.stats
-            arg.stats = {}
-        if not self.stats:
-            raise TypeError,  "Cannot create or construct a %r object from '%r''" % (
-                              self.__class__, arg)
-        return
-
-    def get_top_level_stats(self):
-        for func, (cc, nc, tt, ct, callers) in self.stats.items():
-            self.total_calls += nc
-            self.prim_calls  += cc
-            self.total_tt    += tt
-            if ("jprofile", 0, "profiler") in callers:
-                self.top_level[func] = None
-            if len(func_std_string(func)) > self.max_name_len:
-                self.max_name_len = len(func_std_string(func))
-
-    def add(self, *arg_list):
-        if not arg_list: return self
-        if len(arg_list) > 1: self.add(*arg_list[1:])
-        other = arg_list[0]
-        if type(self) != type(other) or self.__class__ != other.__class__:
-            other = Stats(other)
-        self.files += other.files
-        self.total_calls += other.total_calls
-        self.prim_calls += other.prim_calls
-        self.total_tt += other.total_tt
-        for func in other.top_level:
-            self.top_level[func] = None
-
-        if self.max_name_len < other.max_name_len:
-            self.max_name_len = other.max_name_len
-
-        self.fcn_list = None
-
-        for func, stat in other.stats.iteritems():
-            if func in self.stats:
-                old_func_stat = self.stats[func]
-            else:
-                old_func_stat = (0, 0, 0, 0, {},)
-            self.stats[func] = add_func_stats(old_func_stat, stat)
-        return self
-
-    def dump_stats(self, filename):
-        """Write the profile data to a file we know how to load back."""
-        f = file(filename, 'wb')
-        try:
-            marshal.dump(self.stats, f)
-        finally:
-            f.close()
-
-    # list the tuple indices and directions for sorting,
-    # along with some printable description
-    sort_arg_dict_default = {
-              "calls"     : (((1,-1),              ), "call count"),
-              "cumulative": (((3,-1),              ), "cumulative time"),
-              "file"      : (((4, 1),              ), "file name"),
-              "line"      : (((5, 1),              ), "line number"),
-              "module"    : (((4, 1),              ), "file name"),
-              "name"      : (((6, 1),              ), "function name"),
-              "nfl"       : (((6, 1),(4, 1),(5, 1),), "name/file/line"),
-              "pcalls"    : (((0,-1),              ), "call count"),
-              "stdname"   : (((7, 1),              ), "standard name"),
-              "time"      : (((2,-1),              ), "internal time"),
-              }
-
-    def get_sort_arg_defs(self):
-        """Expand all abbreviations that are unique."""
-        if not self.sort_arg_dict:
-            self.sort_arg_dict = dict = {}
-            bad_list = {}
-            for word, tup in self.sort_arg_dict_default.iteritems():
-                fragment = word
-                while fragment:
-                    if not fragment:
-                        break
-                    if fragment in dict:
-                        bad_list[fragment] = 0
-                        break
-                    dict[fragment] = tup
-                    fragment = fragment[:-1]
-            for word in bad_list:
-                del dict[word]
-        return self.sort_arg_dict
-
-    def sort_stats(self, *field):
-        if not field:
-            self.fcn_list = 0
-            return self
-        if len(field) == 1 and isinstance(field[0], (int, long)):
-            # Be compatible with old profiler
-            field = [ {-1: "stdname",
-                       0:  "calls",
-                       1:  "time",
-                       2:  "cumulative"}[field[0]] ]
-
-        sort_arg_defs = self.get_sort_arg_defs()
-        sort_tuple = ()
-        self.sort_type = ""
-        connector = ""
-        for word in field:
-            sort_tuple = sort_tuple + sort_arg_defs[word][0]
-            self.sort_type += connector + sort_arg_defs[word][1]
-            connector = ", "
-
-        stats_list = []
-        for func, (cc, nc, tt, ct, callers) in self.stats.iteritems():
-            stats_list.append((cc, nc, tt, ct) + func +
-                              (func_std_string(func), func))
-
-        stats_list.sort(key=cmp_to_key(TupleComp(sort_tuple).compare))
-
-        self.fcn_list = fcn_list = []
-        for tuple in stats_list:
-            fcn_list.append(tuple[-1])
-        return self
-
-    def reverse_order(self):
-        if self.fcn_list:
-            self.fcn_list.reverse()
-        return self
-
-    def strip_dirs(self):
-        oldstats = self.stats
-        self.stats = newstats = {}
-        max_name_len = 0
-        for func, (cc, nc, tt, ct, callers) in oldstats.iteritems():
-            newfunc = func_strip_path(func)
-            if len(func_std_string(newfunc)) > max_name_len:
-                max_name_len = len(func_std_string(newfunc))
-            newcallers = {}
-            for func2, caller in callers.iteritems():
-                newcallers[func_strip_path(func2)] = caller
-
-            if newfunc in newstats:
-                newstats[newfunc] = add_func_stats(
-                                        newstats[newfunc],
-                                        (cc, nc, tt, ct, newcallers))
-            else:
-                newstats[newfunc] = (cc, nc, tt, ct, newcallers)
-        old_top = self.top_level
-        self.top_level = new_top = {}
-        for func in old_top:
-            new_top[func_strip_path(func)] = None
-
-        self.max_name_len = max_name_len
-
-        self.fcn_list = None
-        self.all_callees = None
-        return self
-
-    def calc_callees(self):
-        if self.all_callees: return
-        self.all_callees = all_callees = {}
-        for func, (cc, nc, tt, ct, callers) in self.stats.iteritems():
-            if not func in all_callees:
-                all_callees[func] = {}
-            for func2, caller in callers.iteritems():
-                if not func2 in all_callees:
-                    all_callees[func2] = {}
-                all_callees[func2][func]  = caller
-        return
-
-    #******************************************************************
-    # The following functions support actual printing of reports
-    #******************************************************************
-
-    # Optional "amount" is either a line count, or a percentage of lines.
-
-    def eval_print_amount(self, sel, list, msg):
-        new_list = list
-        if isinstance(sel, basestring):
-            try:
-                rex = re.compile(sel)
-            except re.error:
-                msg += "   <Invalid regular expression %r>\n" % sel
-                return new_list, msg
-            new_list = []
-            for func in list:
-                if rex.search(func_std_string(func)):
-                    new_list.append(func)
-        else:
-            count = len(list)
-            if isinstance(sel, float) and 0.0 <= sel < 1.0:
-                count = int(count * sel + .5)
-                new_list = list[:count]
-            elif isinstance(sel, (int, long)) and 0 <= sel < count:
-                count = sel
-                new_list = list[:count]
-        if len(list) != len(new_list):
-            msg += "   List reduced from %r to %r due to restriction <%r>\n" % (
-                len(list), len(new_list), sel)
-
-        return new_list, msg
-
-    def get_print_list(self, sel_list):
-        width = self.max_name_len
-        if self.fcn_list:
-            stat_list = self.fcn_list[:]
-            msg = "   Ordered by: " + self.sort_type + '\n'
-        else:
-            stat_list = self.stats.keys()
-            msg = "   Random listing order was used\n"
-
-        for selection in sel_list:
-            stat_list, msg = self.eval_print_amount(selection, stat_list, msg)
-
-        count = len(stat_list)
-
-        if not stat_list:
-            return 0, stat_list
-        print >> self.stream, msg
-        if count < len(self.stats):
-            width = 0
-            for func in stat_list:
-                if  len(func_std_string(func)) > width:
-                    width = len(func_std_string(func))
-        return width+2, stat_list
-
-    def print_stats(self, *amount):
-        for filename in self.files:
-            print >> self.stream, filename
-        if self.files: print >> self.stream
-        indent = ' ' * 8
-        for func in self.top_level:
-            print >> self.stream, indent, func_get_function_name(func)
-
-        print >> self.stream, indent, self.total_calls, "function calls",
-        if self.total_calls != self.prim_calls:
-            print >> self.stream, "(%d primitive calls)" % self.prim_calls,
-        print >> self.stream, "in %.3f seconds" % self.total_tt
-        print >> self.stream
-        width, list = self.get_print_list(amount)
-        if list:
-            self.print_title()
-            for func in list:
-                self.print_line(func)
-            print >> self.stream
-            print >> self.stream
-        return self
-
-    def print_callees(self, *amount):
-        width, list = self.get_print_list(amount)
-        if list:
-            self.calc_callees()
-
-            self.print_call_heading(width, "called...")
-            for func in list:
-                if func in self.all_callees:
-                    self.print_call_line(width, func, self.all_callees[func])
-                else:
-                    self.print_call_line(width, func, {})
-            print >> self.stream
-            print >> self.stream
-        return self
-
-    def print_callers(self, *amount):
-        width, list = self.get_print_list(amount)
-        if list:
-            self.print_call_heading(width, "was called by...")
-            for func in list:
-                cc, nc, tt, ct, callers = self.stats[func]
-                self.print_call_line(width, func, callers, "<-")
-            print >> self.stream
-            print >> self.stream
-        return self
-
-    def print_call_heading(self, name_size, column_title):
-        print >> self.stream, "Function ".ljust(name_size) + column_title
-        # print sub-header only if we have new-style callers
-        subheader = False
-        for cc, nc, tt, ct, callers in self.stats.itervalues():
-            if callers:
-                value = callers.itervalues().next()
-                subheader = isinstance(value, tuple)
-                break
-        if subheader:
-            print >> self.stream, " "*name_size + "    ncalls  tottime  cumtime"
-
-    def print_call_line(self, name_size, source, call_dict, arrow="->"):
-        print >> self.stream, func_std_string(source).ljust(name_size) + arrow,
-        if not call_dict:
-            print >> self.stream
-            return
-        clist = call_dict.keys()
-        clist.sort()
-        indent = ""
-        for func in clist:
-            name = func_std_string(func)
-            value = call_dict[func]
-            if isinstance(value, tuple):
-                nc, cc, tt, ct = value
-                if nc != cc:
-                    substats = '%d/%d' % (nc, cc)
-                else:
-                    substats = '%d' % (nc,)
-                substats = '%s %s %s  %s' % (substats.rjust(7+2*len(indent)),
-                                             f8(tt), f8(ct), name)
-                left_width = name_size + 1
-            else:
-                substats = '%s(%r) %s' % (name, value, f8(self.stats[func][3]))
-                left_width = name_size + 3
-            print >> self.stream, indent*left_width + substats
-            indent = " "
-
-    def print_title(self):
-        print >> self.stream, '   ncalls  tottime  percall  cumtime  percall',
-        print >> self.stream, 'filename:lineno(function)'
-
-    def print_line(self, func):  # hack : should print percentages
-        cc, nc, tt, ct, callers = self.stats[func]
-        c = str(nc)
-        if nc != cc:
-            c = c + '/' + str(cc)
-        print >> self.stream, c.rjust(9),
-        print >> self.stream, f8(tt),
-        if nc == 0:
-            print >> self.stream, ' '*8,
-        else:
-            print >> self.stream, f8(float(tt)/nc),
-        print >> self.stream, f8(ct),
-        if cc == 0:
-            print >> self.stream, ' '*8,
-        else:
-            print >> self.stream, f8(float(ct)/cc),
-        print >> self.stream, func_std_string(func)
-
-class TupleComp:
-    """This class provides a generic function for comparing any two tuples.
-    Each instance records a list of tuple-indices (from most significant
-    to least significant), and sort direction (ascending or decending) for
-    each tuple-index.  The compare functions can then be used as the function
-    argument to the system sort() function when a list of tuples need to be
-    sorted in the instances order."""
-
-    def __init__(self, comp_select_list):
-        self.comp_select_list = comp_select_list
-
-    def compare (self, left, right):
-        for index, direction in self.comp_select_list:
-            l = left[index]
-            r = right[index]
-            if l < r:
-                return -direction
-            if l > r:
-                return direction
-        return 0
-
-#**************************************************************************
-# func_name is a triple (file:string, line:int, name:string)
-
-def func_strip_path(func_name):
-    filename, line, name = func_name
-    return os.path.basename(filename), line, name
-
-def func_get_function_name(func):
-    return func[2]
-
-def func_std_string(func_name): # match what old profile produced
-    if func_name[:2] == ('~', 0):
-        # special case for built-in functions
-        name = func_name[2]
-        if name.startswith('<') and name.endswith('>'):
-            return '{%s}' % name[1:-1]
-        else:
-            return name
-    else:
-        return "%s:%d(%s)" % func_name
-
-#**************************************************************************
-# The following functions combine statists for pairs functions.
-# The bulk of the processing involves correctly handling "call" lists,
-# such as callers and callees.
-#**************************************************************************
-
-def add_func_stats(target, source):
-    """Add together all the stats for two profile entries."""
-    cc, nc, tt, ct, callers = source
-    t_cc, t_nc, t_tt, t_ct, t_callers = target
-    return (cc+t_cc, nc+t_nc, tt+t_tt, ct+t_ct,
-              add_callers(t_callers, callers))
-
-def add_callers(target, source):
-    """Combine two caller lists in a single list."""
-    new_callers = {}
-    for func, caller in target.iteritems():
-        new_callers[func] = caller
-    for func, caller in source.iteritems():
-        if func in new_callers:
-            if isinstance(caller, tuple):
-                # format used by cProfile
-                new_callers[func] = tuple([i[0] + i[1] for i in
-                                           zip(caller, new_callers[func])])
-            else:
-                # format used by profile
-                new_callers[func] += caller
-        else:
-            new_callers[func] = caller
-    return new_callers
-
-def count_calls(callers):
-    """Sum the caller statistics to get total number of calls received."""
-    nc = 0
-    for calls in callers.itervalues():
-        nc += calls
-    return nc
-
-#**************************************************************************
-# The following functions support printing of reports
-#**************************************************************************
-
-def f8(x):
-    return "%8.3f" % x
-
-#**************************************************************************
-# Statistics browser added by ESR, April 2001
-#**************************************************************************
-
-if __name__ == '__main__':
-    import cmd
-    try:
-        import readline
-    except ImportError:
-        pass
-
-    class ProfileBrowser(cmd.Cmd):
-        def __init__(self, profile=None):
-            cmd.Cmd.__init__(self)
-            self.prompt = "% "
-            self.stats = None
-            self.stream = sys.stdout
-            if profile is not None:
-                self.do_read(profile)
-
-        def generic(self, fn, line):
-            args = line.split()
-            processed = []
-            for term in args:
-                try:
-                    processed.append(int(term))
-                    continue
-                except ValueError:
-                    pass
-                try:
-                    frac = float(term)
-                    if frac > 1 or frac < 0:
-                        print >> self.stream, "Fraction argument must be in [0, 1]"
-                        continue
-                    processed.append(frac)
-                    continue
-                except ValueError:
-                    pass
-                processed.append(term)
-            if self.stats:
-                getattr(self.stats, fn)(*processed)
-            else:
-                print >> self.stream, "No statistics object is loaded."
-            return 0
-        def generic_help(self):
-            print >> self.stream, "Arguments may be:"
-            print >> self.stream, "* An integer maximum number of entries to print."
-            print >> self.stream, "* A decimal fractional number between 0 and 1, controlling"
-            print >> self.stream, "  what fraction of selected entries to print."
-            print >> self.stream, "* A regular expression; only entries with function names"
-            print >> self.stream, "  that match it are printed."
-
-        def do_add(self, line):
-            if self.stats:
-                self.stats.add(line)
-            else:
-                print >> self.stream, "No statistics object is loaded."
-            return 0
-        def help_add(self):
-            print >> self.stream, "Add profile info from given file to current statistics object."
-
-        def do_callees(self, line):
-            return self.generic('print_callees', line)
-        def help_callees(self):
-            print >> self.stream, "Print callees statistics from the current stat object."
-            self.generic_help()
-
-        def do_callers(self, line):
-            return self.generic('print_callers', line)
-        def help_callers(self):
-            print >> self.stream, "Print callers statistics from the current stat object."
-            self.generic_help()
-
-        def do_EOF(self, line):
-            print >> self.stream, ""
-            return 1
-        def help_EOF(self):
-            print >> self.stream, "Leave the profile brower."
-
-        def do_quit(self, line):
-            return 1
-        def help_quit(self):
-            print >> self.stream, "Leave the profile brower."
-
-        def do_read(self, line):
-            if line:
-                try:
-                    self.stats = Stats(line)
-                except IOError, args:
-                    print >> self.stream, args[1]
-                    return
-                except Exception as err:
-                    print >> self.stream, err.__class__.__name__ + ':', err
-                    return
-                self.prompt = line + "% "
-            elif len(self.prompt) > 2:
-                line = self.prompt[:-2]
-                self.do_read(line)
-            else:
-                print >> self.stream, "No statistics object is current -- cannot reload."
-            return 0
-        def help_read(self):
-            print >> self.stream, "Read in profile data from a specified file."
-            print >> self.stream, "Without argument, reload the current file."
-
-        def do_reverse(self, line):
-            if self.stats:
-                self.stats.reverse_order()
-            else:
-                print >> self.stream, "No statistics object is loaded."
-            return 0
-        def help_reverse(self):
-            print >> self.stream, "Reverse the sort order of the profiling report."
-
-        def do_sort(self, line):
-            if not self.stats:
-                print >> self.stream, "No statistics object is loaded."
-                return
-            abbrevs = self.stats.get_sort_arg_defs()
-            if line and all((x in abbrevs) for x in line.split()):
-                self.stats.sort_stats(*line.split())
-            else:
-                print >> self.stream, "Valid sort keys (unique prefixes are accepted):"
-                for (key, value) in Stats.sort_arg_dict_default.iteritems():
-                    print >> self.stream, "%s -- %s" % (key, value[1])
-            return 0
-        def help_sort(self):
-            print >> self.stream, "Sort profile data according to specified keys."
-            print >> self.stream, "(Typing `sort' without arguments lists valid keys.)"
-        def complete_sort(self, text, *args):
-            return [a for a in Stats.sort_arg_dict_default if a.startswith(text)]
-
-        def do_stats(self, line):
-            return self.generic('print_stats', line)
-        def help_stats(self):
-            print >> self.stream, "Print statistics from the current stat object."
-            self.generic_help()
-
-        def do_strip(self, line):
-            if self.stats:
-                self.stats.strip_dirs()
-            else:
-                print >> self.stream, "No statistics object is loaded."
-        def help_strip(self):
-            print >> self.stream, "Strip leading path information from filenames in the report."
-
-        def help_help(self):
-            print >> self.stream, "Show help for a given command."
-
-        def postcmd(self, stop, line):
-            if stop:
-                return stop
-            return None
-
-    import sys
-    if len(sys.argv) > 1:
-        initprofile = sys.argv[1]
-    else:
-        initprofile = None
-    try:
-        browser = ProfileBrowser(initprofile)
-        print >> browser.stream, "Welcome to the profile statistics browser."
-        browser.cmdloop()
-        print >> browser.stream, "Goodbye."
-    except KeyboardInterrupt:
-        pass
-
-# That's all, folks.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/pty.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/pty.py
deleted file mode 100644
index f3c4dcd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/pty.py
+++ /dev/null
@@ -1,174 +0,0 @@
-"""Pseudo terminal utilities."""
-
-# Bugs: No signal handling.  Doesn't set slave termios and window size.
-#       Only tested on Linux.
-# See:  W. Richard Stevens. 1992.  Advanced Programming in the
-#       UNIX Environment.  Chapter 19.
-# Author: Steen Lumholt -- with additions by Guido.
-
-from select import select
-import os
-import tty
-
-__all__ = ["openpty","fork","spawn"]
-
-STDIN_FILENO = 0
-STDOUT_FILENO = 1
-STDERR_FILENO = 2
-
-CHILD = 0
-
-def openpty():
-    """openpty() -> (master_fd, slave_fd)
-    Open a pty master/slave pair, using os.openpty() if possible."""
-
-    try:
-        return os.openpty()
-    except (AttributeError, OSError):
-        pass
-    master_fd, slave_name = _open_terminal()
-    slave_fd = slave_open(slave_name)
-    return master_fd, slave_fd
-
-def master_open():
-    """master_open() -> (master_fd, slave_name)
-    Open a pty master and return the fd, and the filename of the slave end.
-    Deprecated, use openpty() instead."""
-
-    try:
-        master_fd, slave_fd = os.openpty()
-    except (AttributeError, OSError):
-        pass
-    else:
-        slave_name = os.ttyname(slave_fd)
-        os.close(slave_fd)
-        return master_fd, slave_name
-
-    return _open_terminal()
-
-def _open_terminal():
-    """Open pty master and return (master_fd, tty_name).
-    SGI and generic BSD version, for when openpty() fails."""
-    try:
-        import sgi
-    except ImportError:
-        pass
-    else:
-        try:
-            tty_name, master_fd = sgi._getpty(os.O_RDWR, 0666, 0)
-        except IOError, msg:
-            raise os.error, msg
-        return master_fd, tty_name
-    for x in 'pqrstuvwxyzPQRST':
-        for y in '0123456789abcdef':
-            pty_name = '/dev/pty' + x + y
-            try:
-                fd = os.open(pty_name, os.O_RDWR)
-            except os.error:
-                continue
-            return (fd, '/dev/tty' + x + y)
-    raise os.error, 'out of pty devices'
-
-def slave_open(tty_name):
-    """slave_open(tty_name) -> slave_fd
-    Open the pty slave and acquire the controlling terminal, returning
-    opened filedescriptor.
-    Deprecated, use openpty() instead."""
-
-    result = os.open(tty_name, os.O_RDWR)
-    try:
-        from fcntl import ioctl, I_PUSH
-    except ImportError:
-        return result
-    try:
-        ioctl(result, I_PUSH, "ptem")
-        ioctl(result, I_PUSH, "ldterm")
-    except IOError:
-        pass
-    return result
-
-def fork():
-    """fork() -> (pid, master_fd)
-    Fork and make the child a session leader with a controlling terminal."""
-
-    try:
-        pid, fd = os.forkpty()
-    except (AttributeError, OSError):
-        pass
-    else:
-        if pid == CHILD:
-            try:
-                os.setsid()
-            except OSError:
-                # os.forkpty() already set us session leader
-                pass
-        return pid, fd
-
-    master_fd, slave_fd = openpty()
-    pid = os.fork()
-    if pid == CHILD:
-        # Establish a new session.
-        os.setsid()
-        os.close(master_fd)
-
-        # Slave becomes stdin/stdout/stderr of child.
-        os.dup2(slave_fd, STDIN_FILENO)
-        os.dup2(slave_fd, STDOUT_FILENO)
-        os.dup2(slave_fd, STDERR_FILENO)
-        if (slave_fd > STDERR_FILENO):
-            os.close (slave_fd)
-
-        # Explicitly open the tty to make it become a controlling tty.
-        tmp_fd = os.open(os.ttyname(STDOUT_FILENO), os.O_RDWR)
-        os.close(tmp_fd)
-    else:
-        os.close(slave_fd)
-
-    # Parent and child process.
-    return pid, master_fd
-
-def _writen(fd, data):
-    """Write all the data to a descriptor."""
-    while data != '':
-        n = os.write(fd, data)
-        data = data[n:]
-
-def _read(fd):
-    """Default read function."""
-    return os.read(fd, 1024)
-
-def _copy(master_fd, master_read=_read, stdin_read=_read):
-    """Parent copy loop.
-    Copies
-            pty master -> standard output   (master_read)
-            standard input -> pty master    (stdin_read)"""
-    while 1:
-        rfds, wfds, xfds = select(
-                [master_fd, STDIN_FILENO], [], [])
-        if master_fd in rfds:
-            data = master_read(master_fd)
-            os.write(STDOUT_FILENO, data)
-        if STDIN_FILENO in rfds:
-            data = stdin_read(STDIN_FILENO)
-            _writen(master_fd, data)
-
-def spawn(argv, master_read=_read, stdin_read=_read):
-    """Create a spawned process."""
-    if type(argv) == type(''):
-        argv = (argv,)
-    pid, master_fd = fork()
-    if pid == CHILD:
-        os.execlp(argv[0], *argv)
-    try:
-        mode = tty.tcgetattr(STDIN_FILENO)
-        tty.setraw(STDIN_FILENO)
-        restore = 1
-    except tty.error:    # This is the same as termios.error
-        restore = 0
-    try:
-        _copy(master_fd, master_read, stdin_read)
-    except (IOError, OSError):
-        if restore:
-            tty.tcsetattr(STDIN_FILENO, tty.TCSAFLUSH, mode)
-
-    os.close(master_fd)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/py_compile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/py_compile.py
deleted file mode 100644
index 34f20bf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/py_compile.py
+++ /dev/null
@@ -1,170 +0,0 @@
-"""Routine to "compile" a .py file to a .pyc (or .pyo) file.
-
-This module has intimate knowledge of the format of .pyc files.
-"""
-
-import __builtin__
-import imp
-import marshal
-import os
-import sys
-import traceback
-
-MAGIC = imp.get_magic()
-
-__all__ = ["compile", "main", "PyCompileError"]
-
-
-class PyCompileError(Exception):
-    """Exception raised when an error occurs while attempting to
-    compile the file.
-
-    To raise this exception, use
-
-        raise PyCompileError(exc_type,exc_value,file[,msg])
-
-    where
-
-        exc_type:   exception type to be used in error message
-                    type name can be accesses as class variable
-                    'exc_type_name'
-
-        exc_value:  exception value to be used in error message
-                    can be accesses as class variable 'exc_value'
-
-        file:       name of file being compiled to be used in error message
-                    can be accesses as class variable 'file'
-
-        msg:        string message to be written as error message
-                    If no value is given, a default exception message will be given,
-                    consistent with 'standard' py_compile output.
-                    message (or default) can be accesses as class variable 'msg'
-
-    """
-
-    def __init__(self, exc_type, exc_value, file, msg=''):
-        exc_type_name = exc_type.__name__
-        if exc_type is SyntaxError:
-            tbtext = ''.join(traceback.format_exception_only(exc_type, exc_value))
-            errmsg = tbtext.replace('File "<string>"', 'File "%s"' % file)
-        else:
-            errmsg = "Sorry: %s: %s" % (exc_type_name,exc_value)
-
-        Exception.__init__(self,msg or errmsg,exc_type_name,exc_value,file)
-
-        self.exc_type_name = exc_type_name
-        self.exc_value = exc_value
-        self.file = file
-        self.msg = msg or errmsg
-
-    def __str__(self):
-        return self.msg
-
-
-def wr_long(f, x):
-    """Internal; write a 32-bit int to a file in little-endian order."""
-    f.write(chr( x        & 0xff))
-    f.write(chr((x >> 8)  & 0xff))
-    f.write(chr((x >> 16) & 0xff))
-    f.write(chr((x >> 24) & 0xff))
-
-def compile(file, cfile=None, dfile=None, doraise=False):
-    """Byte-compile one Python source file to Python bytecode.
-
-    Arguments:
-
-    file:    source filename
-    cfile:   target filename; defaults to source with 'c' or 'o' appended
-             ('c' normally, 'o' in optimizing mode, giving .pyc or .pyo)
-    dfile:   purported filename; defaults to source (this is the filename
-             that will show up in error messages)
-    doraise: flag indicating whether or not an exception should be
-             raised when a compile error is found. If an exception
-             occurs and this flag is set to False, a string
-             indicating the nature of the exception will be printed,
-             and the function will return to the caller. If an
-             exception occurs and this flag is set to True, a
-             PyCompileError exception will be raised.
-
-    Note that it isn't necessary to byte-compile Python modules for
-    execution efficiency -- Python itself byte-compiles a module when
-    it is loaded, and if it can, writes out the bytecode to the
-    corresponding .pyc (or .pyo) file.
-
-    However, if a Python installation is shared between users, it is a
-    good idea to byte-compile all modules upon installation, since
-    other users may not be able to write in the source directories,
-    and thus they won't be able to write the .pyc/.pyo file, and then
-    they would be byte-compiling every module each time it is loaded.
-    This can slow down program start-up considerably.
-
-    See compileall.py for a script/module that uses this module to
-    byte-compile all installed files (or all files in selected
-    directories).
-
-    """
-    with open(file, 'U') as f:
-        try:
-            timestamp = long(os.fstat(f.fileno()).st_mtime)
-        except AttributeError:
-            timestamp = long(os.stat(file).st_mtime)
-        codestring = f.read()
-    try:
-        codeobject = __builtin__.compile(codestring, dfile or file,'exec')
-    except Exception,err:
-        py_exc = PyCompileError(err.__class__,err.args,dfile or file)
-        if doraise:
-            raise py_exc
-        else:
-            sys.stderr.write(py_exc.msg + '\n')
-            return
-    if cfile is None:
-        cfile = file + (__debug__ and 'c' or 'o')
-    with open(cfile, 'wb') as fc:
-        fc.write('\0\0\0\0')
-        wr_long(fc, timestamp)
-        marshal.dump(codeobject, fc)
-        fc.flush()
-        fc.seek(0, 0)
-        fc.write(MAGIC)
-
-def main(args=None):
-    """Compile several source files.
-
-    The files named in 'args' (or on the command line, if 'args' is
-    not specified) are compiled and the resulting bytecode is cached
-    in the normal manner.  This function does not search a directory
-    structure to locate source files; it only compiles files named
-    explicitly.  If '-' is the only parameter in args, the list of
-    files is taken from standard input.
-
-    """
-    if args is None:
-        args = sys.argv[1:]
-    rv = 0
-    if args == ['-']:
-        while True:
-            filename = sys.stdin.readline()
-            if not filename:
-                break
-            filename = filename.rstrip('\n')
-            try:
-                compile(filename, doraise=True)
-            except PyCompileError as error:
-                rv = 1
-                sys.stderr.write("%s\n" % error.msg)
-            except IOError as error:
-                rv = 1
-                sys.stderr.write("%s\n" % error)
-    else:
-        for filename in args:
-            try:
-                compile(filename, doraise=True)
-            except PyCompileError as error:
-                # return value to indicate at least one failure
-                rv = 1
-                sys.stderr.write(error.msg)
-    return rv
-
-if __name__ == "__main__":
-    sys.exit(main())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/pyclbr.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/pyclbr.py
deleted file mode 100644
index b32241e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/pyclbr.py
+++ /dev/null
@@ -1,342 +0,0 @@
-"""Parse a Python module and describe its classes and methods.
-
-Parse enough of a Python file to recognize imports and class and
-method definitions, and to find out the superclasses of a class.
-
-The interface consists of a single function:
-        readmodule_ex(module [, path])
-where module is the name of a Python module, and path is an optional
-list of directories where the module is to be searched.  If present,
-path is prepended to the system search path sys.path.  The return
-value is a dictionary.  The keys of the dictionary are the names of
-the classes defined in the module (including classes that are defined
-via the from XXX import YYY construct).  The values are class
-instances of the class Class defined here.  One special key/value pair
-is present for packages: the key '__path__' has a list as its value
-which contains the package search path.
-
-A class is described by the class Class in this module.  Instances
-of this class have the following instance variables:
-        module -- the module name
-        name -- the name of the class
-        super -- a list of super classes (Class instances)
-        methods -- a dictionary of methods
-        file -- the file in which the class was defined
-        lineno -- the line in the file on which the class statement occurred
-The dictionary of methods uses the method names as keys and the line
-numbers on which the method was defined as values.
-If the name of a super class is not recognized, the corresponding
-entry in the list of super classes is not a class instance but a
-string giving the name of the super class.  Since import statements
-are recognized and imported modules are scanned as well, this
-shouldn't happen often.
-
-A function is described by the class Function in this module.
-Instances of this class have the following instance variables:
-        module -- the module name
-        name -- the name of the class
-        file -- the file in which the class was defined
-        lineno -- the line in the file on which the class statement occurred
-"""
-
-import sys
-import imp
-import tokenize
-from token import NAME, DEDENT, OP
-from operator import itemgetter
-
-__all__ = ["readmodule", "readmodule_ex", "Class", "Function"]
-
-_modules = {}                           # cache of modules we've seen
-
-# each Python class is represented by an instance of this class
-class Class:
-    '''Class to represent a Python class.'''
-    def __init__(self, module, name, super, file, lineno):
-        self.module = module
-        self.name = name
-        if super is None:
-            super = []
-        self.super = super
-        self.methods = {}
-        self.file = file
-        self.lineno = lineno
-
-    def _addmethod(self, name, lineno):
-        self.methods[name] = lineno
-
-class Function:
-    '''Class to represent a top-level Python function'''
-    def __init__(self, module, name, file, lineno):
-        self.module = module
-        self.name = name
-        self.file = file
-        self.lineno = lineno
-
-def readmodule(module, path=None):
-    '''Backwards compatible interface.
-
-    Call readmodule_ex() and then only keep Class objects from the
-    resulting dictionary.'''
-
-    res = {}
-    for key, value in _readmodule(module, path or []).items():
-        if isinstance(value, Class):
-            res[key] = value
-    return res
-
-def readmodule_ex(module, path=None):
-    '''Read a module file and return a dictionary of classes.
-
-    Search for MODULE in PATH and sys.path, read and parse the
-    module and return a dictionary with one entry for each class
-    found in the module.
-    '''
-    return _readmodule(module, path or [])
-
-def _readmodule(module, path, inpackage=None):
-    '''Do the hard work for readmodule[_ex].
-
-    If INPACKAGE is given, it must be the dotted name of the package in
-    which we are searching for a submodule, and then PATH must be the
-    package search path; otherwise, we are searching for a top-level
-    module, and PATH is combined with sys.path.
-    '''
-    # Compute the full module name (prepending inpackage if set)
-    if inpackage is not None:
-        fullmodule = "%s.%s" % (inpackage, module)
-    else:
-        fullmodule = module
-
-    # Check in the cache
-    if fullmodule in _modules:
-        return _modules[fullmodule]
-
-    # Initialize the dict for this module's contents
-    dict = {}
-
-    # Check if it is a built-in module; we don't do much for these
-    if module in sys.builtin_module_names and inpackage is None:
-        _modules[module] = dict
-        return dict
-
-    # Check for a dotted module name
-    i = module.rfind('.')
-    if i >= 0:
-        package = module[:i]
-        submodule = module[i+1:]
-        parent = _readmodule(package, path, inpackage)
-        if inpackage is not None:
-            package = "%s.%s" % (inpackage, package)
-        return _readmodule(submodule, parent['__path__'], package)
-
-    # Search the path for the module
-    f = None
-    if inpackage is not None:
-        f, fname, (_s, _m, ty) = imp.find_module(module, path)
-    else:
-        f, fname, (_s, _m, ty) = imp.find_module(module, path + sys.path)
-    if ty == imp.PKG_DIRECTORY:
-        dict['__path__'] = [fname]
-        path = [fname] + path
-        f, fname, (_s, _m, ty) = imp.find_module('__init__', [fname])
-    _modules[fullmodule] = dict
-    if ty != imp.PY_SOURCE:
-        # not Python source, can't do anything with this module
-        f.close()
-        return dict
-
-    stack = [] # stack of (class, indent) pairs
-
-    g = tokenize.generate_tokens(f.readline)
-    try:
-        for tokentype, token, start, _end, _line in g:
-            if tokentype == DEDENT:
-                lineno, thisindent = start
-                # close nested classes and defs
-                while stack and stack[-1][1] >= thisindent:
-                    del stack[-1]
-            elif token == 'def':
-                lineno, thisindent = start
-                # close previous nested classes and defs
-                while stack and stack[-1][1] >= thisindent:
-                    del stack[-1]
-                tokentype, meth_name, start = g.next()[0:3]
-                if tokentype != NAME:
-                    continue # Syntax error
-                if stack:
-                    cur_class = stack[-1][0]
-                    if isinstance(cur_class, Class):
-                        # it's a method
-                        cur_class._addmethod(meth_name, lineno)
-                    # else it's a nested def
-                else:
-                    # it's a function
-                    dict[meth_name] = Function(fullmodule, meth_name,
-                                               fname, lineno)
-                stack.append((None, thisindent)) # Marker for nested fns
-            elif token == 'class':
-                lineno, thisindent = start
-                # close previous nested classes and defs
-                while stack and stack[-1][1] >= thisindent:
-                    del stack[-1]
-                tokentype, class_name, start = g.next()[0:3]
-                if tokentype != NAME:
-                    continue # Syntax error
-                # parse what follows the class name
-                tokentype, token, start = g.next()[0:3]
-                inherit = None
-                if token == '(':
-                    names = [] # List of superclasses
-                    # there's a list of superclasses
-                    level = 1
-                    super = [] # Tokens making up current superclass
-                    while True:
-                        tokentype, token, start = g.next()[0:3]
-                        if token in (')', ',') and level == 1:
-                            n = "".join(super)
-                            if n in dict:
-                                # we know this super class
-                                n = dict[n]
-                            else:
-                                c = n.split('.')
-                                if len(c) > 1:
-                                    # super class is of the form
-                                    # module.class: look in module for
-                                    # class
-                                    m = c[-2]
-                                    c = c[-1]
-                                    if m in _modules:
-                                        d = _modules[m]
-                                        if c in d:
-                                            n = d[c]
-                            names.append(n)
-                            super = []
-                        if token == '(':
-                            level += 1
-                        elif token == ')':
-                            level -= 1
-                            if level == 0:
-                                break
-                        elif token == ',' and level == 1:
-                            pass
-                        # only use NAME and OP (== dot) tokens for type name
-                        elif tokentype in (NAME, OP) and level == 1:
-                            super.append(token)
-                        # expressions in the base list are not supported
-                    inherit = names
-                cur_class = Class(fullmodule, class_name, inherit,
-                                  fname, lineno)
-                if not stack:
-                    dict[class_name] = cur_class
-                stack.append((cur_class, thisindent))
-            elif token == 'import' and start[1] == 0:
-                modules = _getnamelist(g)
-                for mod, _mod2 in modules:
-                    try:
-                        # Recursively read the imported module
-                        if inpackage is None:
-                            _readmodule(mod, path)
-                        else:
-                            try:
-                                _readmodule(mod, path, inpackage)
-                            except ImportError:
-                                _readmodule(mod, [])
-                    except:
-                        # If we can't find or parse the imported module,
-                        # too bad -- don't die here.
-                        pass
-            elif token == 'from' and start[1] == 0:
-                mod, token = _getname(g)
-                if not mod or token != "import":
-                    continue
-                names = _getnamelist(g)
-                try:
-                    # Recursively read the imported module
-                    d = _readmodule(mod, path, inpackage)
-                except:
-                    # If we can't find or parse the imported module,
-                    # too bad -- don't die here.
-                    continue
-                # add any classes that were defined in the imported module
-                # to our name space if they were mentioned in the list
-                for n, n2 in names:
-                    if n in d:
-                        dict[n2 or n] = d[n]
-                    elif n == '*':
-                        # don't add names that start with _
-                        for n in d:
-                            if n[0] != '_':
-                                dict[n] = d[n]
-    except StopIteration:
-        pass
-
-    f.close()
-    return dict
-
-def _getnamelist(g):
-    # Helper to get a comma-separated list of dotted names plus 'as'
-    # clauses.  Return a list of pairs (name, name2) where name2 is
-    # the 'as' name, or None if there is no 'as' clause.
-    names = []
-    while True:
-        name, token = _getname(g)
-        if not name:
-            break
-        if token == 'as':
-            name2, token = _getname(g)
-        else:
-            name2 = None
-        names.append((name, name2))
-        while token != "," and "\n" not in token:
-            token = g.next()[1]
-        if token != ",":
-            break
-    return names
-
-def _getname(g):
-    # Helper to get a dotted name, return a pair (name, token) where
-    # name is the dotted name, or None if there was no dotted name,
-    # and token is the next input token.
-    parts = []
-    tokentype, token = g.next()[0:2]
-    if tokentype != NAME and token != '*':
-        return (None, token)
-    parts.append(token)
-    while True:
-        tokentype, token = g.next()[0:2]
-        if token != '.':
-            break
-        tokentype, token = g.next()[0:2]
-        if tokentype != NAME:
-            break
-        parts.append(token)
-    return (".".join(parts), token)
-
-def _main():
-    # Main program for testing.
-    import os
-    mod = sys.argv[1]
-    if os.path.exists(mod):
-        path = [os.path.dirname(mod)]
-        mod = os.path.basename(mod)
-        if mod.lower().endswith(".py"):
-            mod = mod[:-3]
-    else:
-        path = []
-    dict = readmodule_ex(mod, path)
-    objs = dict.values()
-    objs.sort(lambda a, b: cmp(getattr(a, 'lineno', 0),
-                               getattr(b, 'lineno', 0)))
-    for obj in objs:
-        if isinstance(obj, Class):
-            print "class", obj.name, obj.super, obj.lineno
-            methods = sorted(obj.methods.iteritems(), key=itemgetter(1))
-            for name, lineno in methods:
-                if name != "__path__":
-                    print "  def", name, lineno
-        elif isinstance(obj, Function):
-            print "def", obj.name, obj.lineno
-
-if __name__ == "__main__":
-    _main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/pydoc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/pydoc.py
deleted file mode 100644
index 4b5b387..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/pydoc.py
+++ /dev/null
@@ -1,2337 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: latin-1 -*-
-"""Generate Python documentation in HTML or text for interactive use.
-
-In the Python interpreter, do "from pydoc import help" to provide online
-help.  Calling help(thing) on a Python object documents the object.
-
-Or, at the shell command line outside of Python:
-
-Run "pydoc <name>" to show documentation on something.  <name> may be
-the name of a function, module, package, or a dotted reference to a
-class or function within a module or module in a package.  If the
-argument contains a path segment delimiter (e.g. slash on Unix,
-backslash on Windows) it is treated as the path to a Python source file.
-
-Run "pydoc -k <keyword>" to search for a keyword in the synopsis lines
-of all available modules.
-
-Run "pydoc -p <port>" to start an HTTP server on a given port on the
-local machine to generate documentation web pages.
-
-For platforms without a command line, "pydoc -g" starts the HTTP server
-and also pops up a little window for controlling it.
-
-Run "pydoc -w <name>" to write out the HTML documentation for a module
-to a file named "<name>.html".
-
-Module docs for core modules are assumed to be in
-
-    http://docs.python.org/library/
-
-This can be overridden by setting the PYTHONDOCS environment variable
-to a different URL or to a local directory containing the Library
-Reference Manual pages.
-"""
-
-__author__ = "Ka-Ping Yee <ping@lfw.org>"
-__date__ = "26 February 2001"
-
-__version__ = "$Revision$"
-__credits__ = """Guido van Rossum, for an excellent programming language.
-Tommy Burnette, the original creator of manpy.
-Paul Prescod, for all his work on onlinehelp.
-Richard Chamberlain, for the first implementation of textdoc.
-"""
-
-# Known bugs that can't be fixed here:
-#   - imp.load_module() cannot be prevented from clobbering existing
-#     loaded modules, so calling synopsis() on a binary module file
-#     changes the contents of any existing module with the same name.
-#   - If the __file__ attribute on a module is a relative path and
-#     the current directory is changed with os.chdir(), an incorrect
-#     path will be displayed.
-
-import sys, imp, os, re, types, inspect, __builtin__, pkgutil
-from repr import Repr
-from string import expandtabs, find, join, lower, split, strip, rfind, rstrip
-from traceback import extract_tb
-try:
-    from collections import deque
-except ImportError:
-    # Python 2.3 compatibility
-    class deque(list):
-        def popleft(self):
-            return self.pop(0)
-
-# --------------------------------------------------------- common routines
-
-def pathdirs():
-    """Convert sys.path into a list of absolute, existing, unique paths."""
-    dirs = []
-    normdirs = []
-    for dir in sys.path:
-        dir = os.path.abspath(dir or '.')
-        normdir = os.path.normcase(dir)
-        if normdir not in normdirs and os.path.isdir(dir):
-            dirs.append(dir)
-            normdirs.append(normdir)
-    return dirs
-
-def getdoc(object):
-    """Get the doc string or comments for an object."""
-    result = inspect.getdoc(object) or inspect.getcomments(object)
-    return result and re.sub('^ *\n', '', rstrip(result)) or ''
-
-def splitdoc(doc):
-    """Split a doc string into a synopsis line (if any) and the rest."""
-    lines = split(strip(doc), '\n')
-    if len(lines) == 1:
-        return lines[0], ''
-    elif len(lines) >= 2 and not rstrip(lines[1]):
-        return lines[0], join(lines[2:], '\n')
-    return '', join(lines, '\n')
-
-def classname(object, modname):
-    """Get a class name and qualify it with a module name if necessary."""
-    name = object.__name__
-    if object.__module__ != modname:
-        name = object.__module__ + '.' + name
-    return name
-
-def isdata(object):
-    """Check if an object is of a type that probably means it's data."""
-    return not (inspect.ismodule(object) or inspect.isclass(object) or
-                inspect.isroutine(object) or inspect.isframe(object) or
-                inspect.istraceback(object) or inspect.iscode(object))
-
-def replace(text, *pairs):
-    """Do a series of global replacements on a string."""
-    while pairs:
-        text = join(split(text, pairs[0]), pairs[1])
-        pairs = pairs[2:]
-    return text
-
-def cram(text, maxlen):
-    """Omit part of a string if needed to make it fit in a maximum length."""
-    if len(text) > maxlen:
-        pre = max(0, (maxlen-3)//2)
-        post = max(0, maxlen-3-pre)
-        return text[:pre] + '...' + text[len(text)-post:]
-    return text
-
-_re_stripid = re.compile(r' at 0x[0-9a-f]{6,16}(>+)$', re.IGNORECASE)
-def stripid(text):
-    """Remove the hexadecimal id from a Python object representation."""
-    # The behaviour of %p is implementation-dependent in terms of case.
-    return _re_stripid.sub(r'\1', text)
-
-def _is_some_method(obj):
-    return inspect.ismethod(obj) or inspect.ismethoddescriptor(obj)
-
-def allmethods(cl):
-    methods = {}
-    for key, value in inspect.getmembers(cl, _is_some_method):
-        methods[key] = 1
-    for base in cl.__bases__:
-        methods.update(allmethods(base)) # all your base are belong to us
-    for key in methods.keys():
-        methods[key] = getattr(cl, key)
-    return methods
-
-def _split_list(s, predicate):
-    """Split sequence s via predicate, and return pair ([true], [false]).
-
-    The return value is a 2-tuple of lists,
-        ([x for x in s if predicate(x)],
-         [x for x in s if not predicate(x)])
-    """
-
-    yes = []
-    no = []
-    for x in s:
-        if predicate(x):
-            yes.append(x)
-        else:
-            no.append(x)
-    return yes, no
-
-def visiblename(name, all=None, obj=None):
-    """Decide whether to show documentation on a variable."""
-    # Certain special names are redundant.
-    _hidden_names = ('__builtins__', '__doc__', '__file__', '__path__',
-                     '__module__', '__name__', '__slots__', '__package__')
-    if name in _hidden_names: return 0
-    # Private names are hidden, but special names are displayed.
-    if name.startswith('__') and name.endswith('__'): return 1
-    # Namedtuples have public fields and methods with a single leading underscore
-    if name.startswith('_') and hasattr(obj, '_fields'):
-        return 1
-    if all is not None:
-        # only document that which the programmer exported in __all__
-        return name in all
-    else:
-        return not name.startswith('_')
-
-def classify_class_attrs(object):
-    """Wrap inspect.classify_class_attrs, with fixup for data descriptors."""
-    def fixup(data):
-        name, kind, cls, value = data
-        if inspect.isdatadescriptor(value):
-            kind = 'data descriptor'
-        return name, kind, cls, value
-    return map(fixup, inspect.classify_class_attrs(object))
-
-# ----------------------------------------------------- module manipulation
-
-def ispackage(path):
-    """Guess whether a path refers to a package directory."""
-    if os.path.isdir(path):
-        for ext in ('.py', '.pyc', '.pyo'):
-            if os.path.isfile(os.path.join(path, '__init__' + ext)):
-                return True
-    return False
-
-def source_synopsis(file):
-    line = file.readline()
-    while line[:1] == '#' or not strip(line):
-        line = file.readline()
-        if not line: break
-    line = strip(line)
-    if line[:4] == 'r"""': line = line[1:]
-    if line[:3] == '"""':
-        line = line[3:]
-        if line[-1:] == '\\': line = line[:-1]
-        while not strip(line):
-            line = file.readline()
-            if not line: break
-        result = strip(split(line, '"""')[0])
-    else: result = None
-    return result
-
-def synopsis(filename, cache={}):
-    """Get the one-line summary out of a module file."""
-    mtime = os.stat(filename).st_mtime
-    lastupdate, result = cache.get(filename, (0, None))
-    if lastupdate < mtime:
-        info = inspect.getmoduleinfo(filename)
-        try:
-            file = open(filename)
-        except IOError:
-            # module can't be opened, so skip it
-            return None
-        if info and 'b' in info[2]: # binary modules have to be imported
-            try: module = imp.load_module('__temp__', file, filename, info[1:])
-            except: return None
-            result = (module.__doc__ or '').splitlines()[0]
-            del sys.modules['__temp__']
-        else: # text modules can be directly examined
-            result = source_synopsis(file)
-            file.close()
-        cache[filename] = (mtime, result)
-    return result
-
-class ErrorDuringImport(Exception):
-    """Errors that occurred while trying to import something to document it."""
-    def __init__(self, filename, exc_info):
-        exc, value, tb = exc_info
-        self.filename = filename
-        self.exc = exc
-        self.value = value
-        self.tb = tb
-
-    def __str__(self):
-        exc = self.exc
-        if type(exc) is types.ClassType:
-            exc = exc.__name__
-        return 'problem in %s - %s: %s' % (self.filename, exc, self.value)
-
-def importfile(path):
-    """Import a Python source file or compiled file given its path."""
-    magic = imp.get_magic()
-    file = open(path, 'r')
-    if file.read(len(magic)) == magic:
-        kind = imp.PY_COMPILED
-    else:
-        kind = imp.PY_SOURCE
-    file.close()
-    filename = os.path.basename(path)
-    name, ext = os.path.splitext(filename)
-    file = open(path, 'r')
-    try:
-        module = imp.load_module(name, file, path, (ext, 'r', kind))
-    except:
-        raise ErrorDuringImport(path, sys.exc_info())
-    file.close()
-    return module
-
-def safeimport(path, forceload=0, cache={}):
-    """Import a module; handle errors; return None if the module isn't found.
-
-    If the module *is* found but an exception occurs, it's wrapped in an
-    ErrorDuringImport exception and reraised.  Unlike __import__, if a
-    package path is specified, the module at the end of the path is returned,
-    not the package at the beginning.  If the optional 'forceload' argument
-    is 1, we reload the module from disk (unless it's a dynamic extension)."""
-    try:
-        # If forceload is 1 and the module has been previously loaded from
-        # disk, we always have to reload the module.  Checking the file's
-        # mtime isn't good enough (e.g. the module could contain a class
-        # that inherits from another module that has changed).
-        if forceload and path in sys.modules:
-            if path not in sys.builtin_module_names:
-                # Avoid simply calling reload() because it leaves names in
-                # the currently loaded module lying around if they're not
-                # defined in the new source file.  Instead, remove the
-                # module from sys.modules and re-import.  Also remove any
-                # submodules because they won't appear in the newly loaded
-                # module's namespace if they're already in sys.modules.
-                subs = [m for m in sys.modules if m.startswith(path + '.')]
-                for key in [path] + subs:
-                    # Prevent garbage collection.
-                    cache[key] = sys.modules[key]
-                    del sys.modules[key]
-        module = __import__(path)
-    except:
-        # Did the error occur before or after the module was found?
-        (exc, value, tb) = info = sys.exc_info()
-        if path in sys.modules:
-            # An error occurred while executing the imported module.
-            raise ErrorDuringImport(sys.modules[path].__file__, info)
-        elif exc is SyntaxError:
-            # A SyntaxError occurred before we could execute the module.
-            raise ErrorDuringImport(value.filename, info)
-        elif exc is ImportError and extract_tb(tb)[-1][2]=='safeimport':
-            # The import error occurred directly in this function,
-            # which means there is no such module in the path.
-            return None
-        else:
-            # Some other error occurred during the importing process.
-            raise ErrorDuringImport(path, sys.exc_info())
-    for part in split(path, '.')[1:]:
-        try: module = getattr(module, part)
-        except AttributeError: return None
-    return module
-
-# ---------------------------------------------------- formatter base class
-
-class Doc:
-    def document(self, object, name=None, *args):
-        """Generate documentation for an object."""
-        args = (object, name) + args
-        # 'try' clause is to attempt to handle the possibility that inspect
-        # identifies something in a way that pydoc itself has issues handling;
-        # think 'super' and how it is a descriptor (which raises the exception
-        # by lacking a __name__ attribute) and an instance.
-        if inspect.isgetsetdescriptor(object): return self.docdata(*args)
-        if inspect.ismemberdescriptor(object): return self.docdata(*args)
-        try:
-            if inspect.ismodule(object): return self.docmodule(*args)
-            if inspect.isclass(object): return self.docclass(*args)
-            if inspect.isroutine(object): return self.docroutine(*args)
-        except AttributeError:
-            pass
-        if isinstance(object, property): return self.docproperty(*args)
-        return self.docother(*args)
-
-    def fail(self, object, name=None, *args):
-        """Raise an exception for unimplemented types."""
-        message = "don't know how to document object%s of type %s" % (
-            name and ' ' + repr(name), type(object).__name__)
-        raise TypeError, message
-
-    docmodule = docclass = docroutine = docother = docproperty = docdata = fail
-
-    def getdocloc(self, object):
-        """Return the location of module docs or None"""
-
-        try:
-            file = inspect.getabsfile(object)
-        except TypeError:
-            file = '(built-in)'
-
-        docloc = os.environ.get("PYTHONDOCS",
-                                "http://docs.python.org/library")
-        basedir = os.path.join(sys.exec_prefix, "lib",
-                               "python"+sys.version[0:3])
-        if (isinstance(object, type(os)) and
-            (object.__name__ in ('errno', 'exceptions', 'gc', 'imp',
-                                 'marshal', 'posix', 'signal', 'sys',
-                                 'thread', 'zipimport') or
-             (file.startswith(basedir) and
-              not file.startswith(os.path.join(basedir, 'site-packages')))) and
-            object.__name__ not in ('xml.etree', 'test.pydoc_mod')):
-            if docloc.startswith("http://"):
-                docloc = "%s/%s" % (docloc.rstrip("/"), object.__name__)
-            else:
-                docloc = os.path.join(docloc, object.__name__ + ".html")
-        else:
-            docloc = None
-        return docloc
-
-# -------------------------------------------- HTML documentation generator
-
-class HTMLRepr(Repr):
-    """Class for safely making an HTML representation of a Python object."""
-    def __init__(self):
-        Repr.__init__(self)
-        self.maxlist = self.maxtuple = 20
-        self.maxdict = 10
-        self.maxstring = self.maxother = 100
-
-    def escape(self, text):
-        return replace(text, '&', '&amp;', '<', '&lt;', '>', '&gt;')
-
-    def repr(self, object):
-        return Repr.repr(self, object)
-
-    def repr1(self, x, level):
-        if hasattr(type(x), '__name__'):
-            methodname = 'repr_' + join(split(type(x).__name__), '_')
-            if hasattr(self, methodname):
-                return getattr(self, methodname)(x, level)
-        return self.escape(cram(stripid(repr(x)), self.maxother))
-
-    def repr_string(self, x, level):
-        test = cram(x, self.maxstring)
-        testrepr = repr(test)
-        if '\\' in test and '\\' not in replace(testrepr, r'\\', ''):
-            # Backslashes are only literal in the string and are never
-            # needed to make any special characters, so show a raw string.
-            return 'r' + testrepr[0] + self.escape(test) + testrepr[0]
-        return re.sub(r'((\\[\\abfnrtv\'"]|\\[0-9]..|\\x..|\\u....)+)',
-                      r'<font color="#c040c0">\1</font>',
-                      self.escape(testrepr))
-
-    repr_str = repr_string
-
-    def repr_instance(self, x, level):
-        try:
-            return self.escape(cram(stripid(repr(x)), self.maxstring))
-        except:
-            return self.escape('<%s instance>' % x.__class__.__name__)
-
-    repr_unicode = repr_string
-
-class HTMLDoc(Doc):
-    """Formatter class for HTML documentation."""
-
-    # ------------------------------------------- HTML formatting utilities
-
-    _repr_instance = HTMLRepr()
-    repr = _repr_instance.repr
-    escape = _repr_instance.escape
-
-    def page(self, title, contents):
-        """Format an HTML page."""
-        return '''
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html><head><title>Python: %s</title>
-</head><body bgcolor="#f0f0f8">
-%s
-</body></html>''' % (title, contents)
-
-    def heading(self, title, fgcol, bgcol, extras=''):
-        """Format a page heading."""
-        return '''
-<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="heading">
-<tr bgcolor="%s">
-<td valign=bottom>&nbsp;<br>
-<font color="%s" face="helvetica, arial">&nbsp;<br>%s</font></td
-><td align=right valign=bottom
-><font color="%s" face="helvetica, arial">%s</font></td></tr></table>
-    ''' % (bgcol, fgcol, title, fgcol, extras or '&nbsp;')
-
-    def section(self, title, fgcol, bgcol, contents, width=6,
-                prelude='', marginalia=None, gap='&nbsp;'):
-        """Format a section with a heading."""
-        if marginalia is None:
-            marginalia = '<tt>' + '&nbsp;' * width + '</tt>'
-        result = '''<p>
-<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="%s">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="%s" face="helvetica, arial">%s</font></td></tr>
-    ''' % (bgcol, fgcol, title)
-        if prelude:
-            result = result + '''
-<tr bgcolor="%s"><td rowspan=2>%s</td>
-<td colspan=2>%s</td></tr>
-<tr><td>%s</td>''' % (bgcol, marginalia, prelude, gap)
-        else:
-            result = result + '''
-<tr><td bgcolor="%s">%s</td><td>%s</td>''' % (bgcol, marginalia, gap)
-
-        return result + '\n<td width="100%%">%s</td></tr></table>' % contents
-
-    def bigsection(self, title, *args):
-        """Format a section with a big heading."""
-        title = '<big><strong>%s</strong></big>' % title
-        return self.section(title, *args)
-
-    def preformat(self, text):
-        """Format literal preformatted text."""
-        text = self.escape(expandtabs(text))
-        return replace(text, '\n\n', '\n \n', '\n\n', '\n \n',
-                             ' ', '&nbsp;', '\n', '<br>\n')
-
-    def multicolumn(self, list, format, cols=4):
-        """Format a list of items into a multi-column list."""
-        result = ''
-        rows = (len(list)+cols-1)//cols
-        for col in range(cols):
-            result = result + '<td width="%d%%" valign=top>' % (100//cols)
-            for i in range(rows*col, rows*col+rows):
-                if i < len(list):
-                    result = result + format(list[i]) + '<br>\n'
-            result = result + '</td>'
-        return '<table width="100%%" summary="list"><tr>%s</tr></table>' % result
-
-    def grey(self, text): return '<font color="#909090">%s</font>' % text
-
-    def namelink(self, name, *dicts):
-        """Make a link for an identifier, given name-to-URL mappings."""
-        for dict in dicts:
-            if name in dict:
-                return '<a href="%s">%s</a>' % (dict[name], name)
-        return name
-
-    def classlink(self, object, modname):
-        """Make a link for a class."""
-        name, module = object.__name__, sys.modules.get(object.__module__)
-        if hasattr(module, name) and getattr(module, name) is object:
-            return '<a href="%s.html#%s">%s</a>' % (
-                module.__name__, name, classname(object, modname))
-        return classname(object, modname)
-
-    def modulelink(self, object):
-        """Make a link for a module."""
-        return '<a href="%s.html">%s</a>' % (object.__name__, object.__name__)
-
-    def modpkglink(self, data):
-        """Make a link for a module or package to display in an index."""
-        name, path, ispackage, shadowed = data
-        if shadowed:
-            return self.grey(name)
-        if path:
-            url = '%s.%s.html' % (path, name)
-        else:
-            url = '%s.html' % name
-        if ispackage:
-            text = '<strong>%s</strong>&nbsp;(package)' % name
-        else:
-            text = name
-        return '<a href="%s">%s</a>' % (url, text)
-
-    def markup(self, text, escape=None, funcs={}, classes={}, methods={}):
-        """Mark up some plain text, given a context of symbols to look for.
-        Each context dictionary maps object names to anchor names."""
-        escape = escape or self.escape
-        results = []
-        here = 0
-        pattern = re.compile(r'\b((http|ftp)://\S+[\w/]|'
-                                r'RFC[- ]?(\d+)|'
-                                r'PEP[- ]?(\d+)|'
-                                r'(self\.)?(\w+))')
-        while True:
-            match = pattern.search(text, here)
-            if not match: break
-            start, end = match.span()
-            results.append(escape(text[here:start]))
-
-            all, scheme, rfc, pep, selfdot, name = match.groups()
-            if scheme:
-                url = escape(all).replace('"', '&quot;')
-                results.append('<a href="%s">%s</a>' % (url, url))
-            elif rfc:
-                url = 'http://www.rfc-editor.org/rfc/rfc%d.txt' % int(rfc)
-                results.append('<a href="%s">%s</a>' % (url, escape(all)))
-            elif pep:
-                url = 'http://www.python.org/dev/peps/pep-%04d/' % int(pep)
-                results.append('<a href="%s">%s</a>' % (url, escape(all)))
-            elif text[end:end+1] == '(':
-                results.append(self.namelink(name, methods, funcs, classes))
-            elif selfdot:
-                results.append('self.<strong>%s</strong>' % name)
-            else:
-                results.append(self.namelink(name, classes))
-            here = end
-        results.append(escape(text[here:]))
-        return join(results, '')
-
-    # ---------------------------------------------- type-specific routines
-
-    def formattree(self, tree, modname, parent=None):
-        """Produce HTML for a class tree as given by inspect.getclasstree()."""
-        result = ''
-        for entry in tree:
-            if type(entry) is type(()):
-                c, bases = entry
-                result = result + '<dt><font face="helvetica, arial">'
-                result = result + self.classlink(c, modname)
-                if bases and bases != (parent,):
-                    parents = []
-                    for base in bases:
-                        parents.append(self.classlink(base, modname))
-                    result = result + '(' + join(parents, ', ') + ')'
-                result = result + '\n</font></dt>'
-            elif type(entry) is type([]):
-                result = result + '<dd>\n%s</dd>\n' % self.formattree(
-                    entry, modname, c)
-        return '<dl>\n%s</dl>\n' % result
-
-    def docmodule(self, object, name=None, mod=None, *ignored):
-        """Produce HTML documentation for a module object."""
-        name = object.__name__ # ignore the passed-in name
-        try:
-            all = object.__all__
-        except AttributeError:
-            all = None
-        parts = split(name, '.')
-        links = []
-        for i in range(len(parts)-1):
-            links.append(
-                '<a href="%s.html"><font color="#ffffff">%s</font></a>' %
-                (join(parts[:i+1], '.'), parts[i]))
-        linkedname = join(links + parts[-1:], '.')
-        head = '<big><big><strong>%s</strong></big></big>' % linkedname
-        try:
-            path = inspect.getabsfile(object)
-            url = path
-            if sys.platform == 'win32':
-                import nturl2path
-                url = nturl2path.pathname2url(path)
-            filelink = '<a href="file:%s">%s</a>' % (url, path)
-        except TypeError:
-            filelink = '(built-in)'
-        info = []
-        if hasattr(object, '__version__'):
-            version = str(object.__version__)
-            if version[:11] == '$' + 'Revision: ' and version[-1:] == '$':
-                version = strip(version[11:-1])
-            info.append('version %s' % self.escape(version))
-        if hasattr(object, '__date__'):
-            info.append(self.escape(str(object.__date__)))
-        if info:
-            head = head + ' (%s)' % join(info, ', ')
-        docloc = self.getdocloc(object)
-        if docloc is not None:
-            docloc = '<br><a href="%(docloc)s">Module Docs</a>' % locals()
-        else:
-            docloc = ''
-        result = self.heading(
-            head, '#ffffff', '#7799ee',
-            '<a href=".">index</a><br>' + filelink + docloc)
-
-        modules = inspect.getmembers(object, inspect.ismodule)
-
-        classes, cdict = [], {}
-        for key, value in inspect.getmembers(object, inspect.isclass):
-            # if __all__ exists, believe it.  Otherwise use old heuristic.
-            if (all is not None or
-                (inspect.getmodule(value) or object) is object):
-                if visiblename(key, all, object):
-                    classes.append((key, value))
-                    cdict[key] = cdict[value] = '#' + key
-        for key, value in classes:
-            for base in value.__bases__:
-                key, modname = base.__name__, base.__module__
-                module = sys.modules.get(modname)
-                if modname != name and module and hasattr(module, key):
-                    if getattr(module, key) is base:
-                        if not key in cdict:
-                            cdict[key] = cdict[base] = modname + '.html#' + key
-        funcs, fdict = [], {}
-        for key, value in inspect.getmembers(object, inspect.isroutine):
-            # if __all__ exists, believe it.  Otherwise use old heuristic.
-            if (all is not None or
-                inspect.isbuiltin(value) or inspect.getmodule(value) is object):
-                if visiblename(key, all, object):
-                    funcs.append((key, value))
-                    fdict[key] = '#-' + key
-                    if inspect.isfunction(value): fdict[value] = fdict[key]
-        data = []
-        for key, value in inspect.getmembers(object, isdata):
-            if visiblename(key, all, object):
-                data.append((key, value))
-
-        doc = self.markup(getdoc(object), self.preformat, fdict, cdict)
-        doc = doc and '<tt>%s</tt>' % doc
-        result = result + '<p>%s</p>\n' % doc
-
-        if hasattr(object, '__path__'):
-            modpkgs = []
-            for importer, modname, ispkg in pkgutil.iter_modules(object.__path__):
-                modpkgs.append((modname, name, ispkg, 0))
-            modpkgs.sort()
-            contents = self.multicolumn(modpkgs, self.modpkglink)
-            result = result + self.bigsection(
-                'Package Contents', '#ffffff', '#aa55cc', contents)
-        elif modules:
-            contents = self.multicolumn(
-                modules, lambda key_value, s=self: s.modulelink(key_value[1]))
-            result = result + self.bigsection(
-                'Modules', '#ffffff', '#aa55cc', contents)
-
-        if classes:
-            classlist = map(lambda key_value: key_value[1], classes)
-            contents = [
-                self.formattree(inspect.getclasstree(classlist, 1), name)]
-            for key, value in classes:
-                contents.append(self.document(value, key, name, fdict, cdict))
-            result = result + self.bigsection(
-                'Classes', '#ffffff', '#ee77aa', join(contents))
-        if funcs:
-            contents = []
-            for key, value in funcs:
-                contents.append(self.document(value, key, name, fdict, cdict))
-            result = result + self.bigsection(
-                'Functions', '#ffffff', '#eeaa77', join(contents))
-        if data:
-            contents = []
-            for key, value in data:
-                contents.append(self.document(value, key))
-            result = result + self.bigsection(
-                'Data', '#ffffff', '#55aa55', join(contents, '<br>\n'))
-        if hasattr(object, '__author__'):
-            contents = self.markup(str(object.__author__), self.preformat)
-            result = result + self.bigsection(
-                'Author', '#ffffff', '#7799ee', contents)
-        if hasattr(object, '__credits__'):
-            contents = self.markup(str(object.__credits__), self.preformat)
-            result = result + self.bigsection(
-                'Credits', '#ffffff', '#7799ee', contents)
-
-        return result
-
-    def docclass(self, object, name=None, mod=None, funcs={}, classes={},
-                 *ignored):
-        """Produce HTML documentation for a class object."""
-        realname = object.__name__
-        name = name or realname
-        bases = object.__bases__
-
-        contents = []
-        push = contents.append
-
-        # Cute little class to pump out a horizontal rule between sections.
-        class HorizontalRule:
-            def __init__(self):
-                self.needone = 0
-            def maybe(self):
-                if self.needone:
-                    push('<hr>\n')
-                self.needone = 1
-        hr = HorizontalRule()
-
-        # List the mro, if non-trivial.
-        mro = deque(inspect.getmro(object))
-        if len(mro) > 2:
-            hr.maybe()
-            push('<dl><dt>Method resolution order:</dt>\n')
-            for base in mro:
-                push('<dd>%s</dd>\n' % self.classlink(base,
-                                                      object.__module__))
-            push('</dl>\n')
-
-        def spill(msg, attrs, predicate):
-            ok, attrs = _split_list(attrs, predicate)
-            if ok:
-                hr.maybe()
-                push(msg)
-                for name, kind, homecls, value in ok:
-                    push(self.document(getattr(object, name), name, mod,
-                                       funcs, classes, mdict, object))
-                    push('\n')
-            return attrs
-
-        def spilldescriptors(msg, attrs, predicate):
-            ok, attrs = _split_list(attrs, predicate)
-            if ok:
-                hr.maybe()
-                push(msg)
-                for name, kind, homecls, value in ok:
-                    push(self._docdescriptor(name, value, mod))
-            return attrs
-
-        def spilldata(msg, attrs, predicate):
-            ok, attrs = _split_list(attrs, predicate)
-            if ok:
-                hr.maybe()
-                push(msg)
-                for name, kind, homecls, value in ok:
-                    base = self.docother(getattr(object, name), name, mod)
-                    if (hasattr(value, '__call__') or
-                            inspect.isdatadescriptor(value)):
-                        doc = getattr(value, "__doc__", None)
-                    else:
-                        doc = None
-                    if doc is None:
-                        push('<dl><dt>%s</dl>\n' % base)
-                    else:
-                        doc = self.markup(getdoc(value), self.preformat,
-                                          funcs, classes, mdict)
-                        doc = '<dd><tt>%s</tt>' % doc
-                        push('<dl><dt>%s%s</dl>\n' % (base, doc))
-                    push('\n')
-            return attrs
-
-        attrs = filter(lambda data: visiblename(data[0], obj=object),
-                       classify_class_attrs(object))
-        mdict = {}
-        for key, kind, homecls, value in attrs:
-            mdict[key] = anchor = '#' + name + '-' + key
-            value = getattr(object, key)
-            try:
-                # The value may not be hashable (e.g., a data attr with
-                # a dict or list value).
-                mdict[value] = anchor
-            except TypeError:
-                pass
-
-        while attrs:
-            if mro:
-                thisclass = mro.popleft()
-            else:
-                thisclass = attrs[0][2]
-            attrs, inherited = _split_list(attrs, lambda t: t[2] is thisclass)
-
-            if thisclass is __builtin__.object:
-                attrs = inherited
-                continue
-            elif thisclass is object:
-                tag = 'defined here'
-            else:
-                tag = 'inherited from %s' % self.classlink(thisclass,
-                                                           object.__module__)
-            tag += ':<br>\n'
-
-            # Sort attrs by name.
-            try:
-                attrs.sort(key=lambda t: t[0])
-            except TypeError:
-                attrs.sort(lambda t1, t2: cmp(t1[0], t2[0]))    # 2.3 compat
-
-            # Pump out the attrs, segregated by kind.
-            attrs = spill('Methods %s' % tag, attrs,
-                          lambda t: t[1] == 'method')
-            attrs = spill('Class methods %s' % tag, attrs,
-                          lambda t: t[1] == 'class method')
-            attrs = spill('Static methods %s' % tag, attrs,
-                          lambda t: t[1] == 'static method')
-            attrs = spilldescriptors('Data descriptors %s' % tag, attrs,
-                                     lambda t: t[1] == 'data descriptor')
-            attrs = spilldata('Data and other attributes %s' % tag, attrs,
-                              lambda t: t[1] == 'data')
-            assert attrs == []
-            attrs = inherited
-
-        contents = ''.join(contents)
-
-        if name == realname:
-            title = '<a name="%s">class <strong>%s</strong></a>' % (
-                name, realname)
-        else:
-            title = '<strong>%s</strong> = <a name="%s">class %s</a>' % (
-                name, name, realname)
-        if bases:
-            parents = []
-            for base in bases:
-                parents.append(self.classlink(base, object.__module__))
-            title = title + '(%s)' % join(parents, ', ')
-        doc = self.markup(getdoc(object), self.preformat, funcs, classes, mdict)
-        doc = doc and '<tt>%s<br>&nbsp;</tt>' % doc
-
-        return self.section(title, '#000000', '#ffc8d8', contents, 3, doc)
-
-    def formatvalue(self, object):
-        """Format an argument default value as text."""
-        return self.grey('=' + self.repr(object))
-
-    def docroutine(self, object, name=None, mod=None,
-                   funcs={}, classes={}, methods={}, cl=None):
-        """Produce HTML documentation for a function or method object."""
-        realname = object.__name__
-        name = name or realname
-        anchor = (cl and cl.__name__ or '') + '-' + name
-        note = ''
-        skipdocs = 0
-        if inspect.ismethod(object):
-            imclass = object.im_class
-            if cl:
-                if imclass is not cl:
-                    note = ' from ' + self.classlink(imclass, mod)
-            else:
-                if object.im_self is not None:
-                    note = ' method of %s instance' % self.classlink(
-                        object.im_self.__class__, mod)
-                else:
-                    note = ' unbound %s method' % self.classlink(imclass,mod)
-            object = object.im_func
-
-        if name == realname:
-            title = '<a name="%s"><strong>%s</strong></a>' % (anchor, realname)
-        else:
-            if (cl and realname in cl.__dict__ and
-                cl.__dict__[realname] is object):
-                reallink = '<a href="#%s">%s</a>' % (
-                    cl.__name__ + '-' + realname, realname)
-                skipdocs = 1
-            else:
-                reallink = realname
-            title = '<a name="%s"><strong>%s</strong></a> = %s' % (
-                anchor, name, reallink)
-        if inspect.isfunction(object):
-            args, varargs, varkw, defaults = inspect.getargspec(object)
-            argspec = inspect.formatargspec(
-                args, varargs, varkw, defaults, formatvalue=self.formatvalue)
-            if realname == '<lambda>':
-                title = '<strong>%s</strong> <em>lambda</em> ' % name
-                argspec = argspec[1:-1] # remove parentheses
-        else:
-            argspec = '(...)'
-
-        decl = title + argspec + (note and self.grey(
-               '<font face="helvetica, arial">%s</font>' % note))
-
-        if skipdocs:
-            return '<dl><dt>%s</dt></dl>\n' % decl
-        else:
-            doc = self.markup(
-                getdoc(object), self.preformat, funcs, classes, methods)
-            doc = doc and '<dd><tt>%s</tt></dd>' % doc
-            return '<dl><dt>%s</dt>%s</dl>\n' % (decl, doc)
-
-    def _docdescriptor(self, name, value, mod):
-        results = []
-        push = results.append
-
-        if name:
-            push('<dl><dt><strong>%s</strong></dt>\n' % name)
-        if value.__doc__ is not None:
-            doc = self.markup(getdoc(value), self.preformat)
-            push('<dd><tt>%s</tt></dd>\n' % doc)
-        push('</dl>\n')
-
-        return ''.join(results)
-
-    def docproperty(self, object, name=None, mod=None, cl=None):
-        """Produce html documentation for a property."""
-        return self._docdescriptor(name, object, mod)
-
-    def docother(self, object, name=None, mod=None, *ignored):
-        """Produce HTML documentation for a data object."""
-        lhs = name and '<strong>%s</strong> = ' % name or ''
-        return lhs + self.repr(object)
-
-    def docdata(self, object, name=None, mod=None, cl=None):
-        """Produce html documentation for a data descriptor."""
-        return self._docdescriptor(name, object, mod)
-
-    def index(self, dir, shadowed=None):
-        """Generate an HTML index for a directory of modules."""
-        modpkgs = []
-        if shadowed is None: shadowed = {}
-        for importer, name, ispkg in pkgutil.iter_modules([dir]):
-            modpkgs.append((name, '', ispkg, name in shadowed))
-            shadowed[name] = 1
-
-        modpkgs.sort()
-        contents = self.multicolumn(modpkgs, self.modpkglink)
-        return self.bigsection(dir, '#ffffff', '#ee77aa', contents)
-
-# -------------------------------------------- text documentation generator
-
-class TextRepr(Repr):
-    """Class for safely making a text representation of a Python object."""
-    def __init__(self):
-        Repr.__init__(self)
-        self.maxlist = self.maxtuple = 20
-        self.maxdict = 10
-        self.maxstring = self.maxother = 100
-
-    def repr1(self, x, level):
-        if hasattr(type(x), '__name__'):
-            methodname = 'repr_' + join(split(type(x).__name__), '_')
-            if hasattr(self, methodname):
-                return getattr(self, methodname)(x, level)
-        return cram(stripid(repr(x)), self.maxother)
-
-    def repr_string(self, x, level):
-        test = cram(x, self.maxstring)
-        testrepr = repr(test)
-        if '\\' in test and '\\' not in replace(testrepr, r'\\', ''):
-            # Backslashes are only literal in the string and are never
-            # needed to make any special characters, so show a raw string.
-            return 'r' + testrepr[0] + test + testrepr[0]
-        return testrepr
-
-    repr_str = repr_string
-
-    def repr_instance(self, x, level):
-        try:
-            return cram(stripid(repr(x)), self.maxstring)
-        except:
-            return '<%s instance>' % x.__class__.__name__
-
-class TextDoc(Doc):
-    """Formatter class for text documentation."""
-
-    # ------------------------------------------- text formatting utilities
-
-    _repr_instance = TextRepr()
-    repr = _repr_instance.repr
-
-    def bold(self, text):
-        """Format a string in bold by overstriking."""
-        return join(map(lambda ch: ch + '\b' + ch, text), '')
-
-    def indent(self, text, prefix='    '):
-        """Indent text by prepending a given prefix to each line."""
-        if not text: return ''
-        lines = split(text, '\n')
-        lines = map(lambda line, prefix=prefix: prefix + line, lines)
-        if lines: lines[-1] = rstrip(lines[-1])
-        return join(lines, '\n')
-
-    def section(self, title, contents):
-        """Format a section with a given heading."""
-        return self.bold(title) + '\n' + rstrip(self.indent(contents)) + '\n\n'
-
-    # ---------------------------------------------- type-specific routines
-
-    def formattree(self, tree, modname, parent=None, prefix=''):
-        """Render in text a class tree as returned by inspect.getclasstree()."""
-        result = ''
-        for entry in tree:
-            if type(entry) is type(()):
-                c, bases = entry
-                result = result + prefix + classname(c, modname)
-                if bases and bases != (parent,):
-                    parents = map(lambda c, m=modname: classname(c, m), bases)
-                    result = result + '(%s)' % join(parents, ', ')
-                result = result + '\n'
-            elif type(entry) is type([]):
-                result = result + self.formattree(
-                    entry, modname, c, prefix + '    ')
-        return result
-
-    def docmodule(self, object, name=None, mod=None):
-        """Produce text documentation for a given module object."""
-        name = object.__name__ # ignore the passed-in name
-        synop, desc = splitdoc(getdoc(object))
-        result = self.section('NAME', name + (synop and ' - ' + synop))
-
-        try:
-            all = object.__all__
-        except AttributeError:
-            all = None
-
-        try:
-            file = inspect.getabsfile(object)
-        except TypeError:
-            file = '(built-in)'
-        result = result + self.section('FILE', file)
-
-        docloc = self.getdocloc(object)
-        if docloc is not None:
-            result = result + self.section('MODULE DOCS', docloc)
-
-        if desc:
-            result = result + self.section('DESCRIPTION', desc)
-
-        classes = []
-        for key, value in inspect.getmembers(object, inspect.isclass):
-            # if __all__ exists, believe it.  Otherwise use old heuristic.
-            if (all is not None
-                or (inspect.getmodule(value) or object) is object):
-                if visiblename(key, all, object):
-                    classes.append((key, value))
-        funcs = []
-        for key, value in inspect.getmembers(object, inspect.isroutine):
-            # if __all__ exists, believe it.  Otherwise use old heuristic.
-            if (all is not None or
-                inspect.isbuiltin(value) or inspect.getmodule(value) is object):
-                if visiblename(key, all, object):
-                    funcs.append((key, value))
-        data = []
-        for key, value in inspect.getmembers(object, isdata):
-            if visiblename(key, all, object):
-                data.append((key, value))
-
-        modpkgs = []
-        modpkgs_names = set()
-        if hasattr(object, '__path__'):
-            for importer, modname, ispkg in pkgutil.iter_modules(object.__path__):
-                modpkgs_names.add(modname)
-                if ispkg:
-                    modpkgs.append(modname + ' (package)')
-                else:
-                    modpkgs.append(modname)
-
-            modpkgs.sort()
-            result = result + self.section(
-                'PACKAGE CONTENTS', join(modpkgs, '\n'))
-
-        # Detect submodules as sometimes created by C extensions
-        submodules = []
-        for key, value in inspect.getmembers(object, inspect.ismodule):
-            if value.__name__.startswith(name + '.') and key not in modpkgs_names:
-                submodules.append(key)
-        if submodules:
-            submodules.sort()
-            result = result + self.section(
-                'SUBMODULES', join(submodules, '\n'))
-
-        if classes:
-            classlist = map(lambda key_value: key_value[1], classes)
-            contents = [self.formattree(
-                inspect.getclasstree(classlist, 1), name)]
-            for key, value in classes:
-                contents.append(self.document(value, key, name))
-            result = result + self.section('CLASSES', join(contents, '\n'))
-
-        if funcs:
-            contents = []
-            for key, value in funcs:
-                contents.append(self.document(value, key, name))
-            result = result + self.section('FUNCTIONS', join(contents, '\n'))
-
-        if data:
-            contents = []
-            for key, value in data:
-                contents.append(self.docother(value, key, name, maxlen=70))
-            result = result + self.section('DATA', join(contents, '\n'))
-
-        if hasattr(object, '__version__'):
-            version = str(object.__version__)
-            if version[:11] == '$' + 'Revision: ' and version[-1:] == '$':
-                version = strip(version[11:-1])
-            result = result + self.section('VERSION', version)
-        if hasattr(object, '__date__'):
-            result = result + self.section('DATE', str(object.__date__))
-        if hasattr(object, '__author__'):
-            result = result + self.section('AUTHOR', str(object.__author__))
-        if hasattr(object, '__credits__'):
-            result = result + self.section('CREDITS', str(object.__credits__))
-        return result
-
-    def docclass(self, object, name=None, mod=None, *ignored):
-        """Produce text documentation for a given class object."""
-        realname = object.__name__
-        name = name or realname
-        bases = object.__bases__
-
-        def makename(c, m=object.__module__):
-            return classname(c, m)
-
-        if name == realname:
-            title = 'class ' + self.bold(realname)
-        else:
-            title = self.bold(name) + ' = class ' + realname
-        if bases:
-            parents = map(makename, bases)
-            title = title + '(%s)' % join(parents, ', ')
-
-        doc = getdoc(object)
-        contents = doc and [doc + '\n'] or []
-        push = contents.append
-
-        # List the mro, if non-trivial.
-        mro = deque(inspect.getmro(object))
-        if len(mro) > 2:
-            push("Method resolution order:")
-            for base in mro:
-                push('    ' + makename(base))
-            push('')
-
-        # Cute little class to pump out a horizontal rule between sections.
-        class HorizontalRule:
-            def __init__(self):
-                self.needone = 0
-            def maybe(self):
-                if self.needone:
-                    push('-' * 70)
-                self.needone = 1
-        hr = HorizontalRule()
-
-        def spill(msg, attrs, predicate):
-            ok, attrs = _split_list(attrs, predicate)
-            if ok:
-                hr.maybe()
-                push(msg)
-                for name, kind, homecls, value in ok:
-                    push(self.document(getattr(object, name),
-                                       name, mod, object))
-            return attrs
-
-        def spilldescriptors(msg, attrs, predicate):
-            ok, attrs = _split_list(attrs, predicate)
-            if ok:
-                hr.maybe()
-                push(msg)
-                for name, kind, homecls, value in ok:
-                    push(self._docdescriptor(name, value, mod))
-            return attrs
-
-        def spilldata(msg, attrs, predicate):
-            ok, attrs = _split_list(attrs, predicate)
-            if ok:
-                hr.maybe()
-                push(msg)
-                for name, kind, homecls, value in ok:
-                    if (hasattr(value, '__call__') or
-                            inspect.isdatadescriptor(value)):
-                        doc = getdoc(value)
-                    else:
-                        doc = None
-                    push(self.docother(getattr(object, name),
-                                       name, mod, maxlen=70, doc=doc) + '\n')
-            return attrs
-
-        attrs = filter(lambda data: visiblename(data[0], obj=object),
-                       classify_class_attrs(object))
-        while attrs:
-            if mro:
-                thisclass = mro.popleft()
-            else:
-                thisclass = attrs[0][2]
-            attrs, inherited = _split_list(attrs, lambda t: t[2] is thisclass)
-
-            if thisclass is __builtin__.object:
-                attrs = inherited
-                continue
-            elif thisclass is object:
-                tag = "defined here"
-            else:
-                tag = "inherited from %s" % classname(thisclass,
-                                                      object.__module__)
-
-            # Sort attrs by name.
-            attrs.sort()
-
-            # Pump out the attrs, segregated by kind.
-            attrs = spill("Methods %s:\n" % tag, attrs,
-                          lambda t: t[1] == 'method')
-            attrs = spill("Class methods %s:\n" % tag, attrs,
-                          lambda t: t[1] == 'class method')
-            attrs = spill("Static methods %s:\n" % tag, attrs,
-                          lambda t: t[1] == 'static method')
-            attrs = spilldescriptors("Data descriptors %s:\n" % tag, attrs,
-                                     lambda t: t[1] == 'data descriptor')
-            attrs = spilldata("Data and other attributes %s:\n" % tag, attrs,
-                              lambda t: t[1] == 'data')
-            assert attrs == []
-            attrs = inherited
-
-        contents = '\n'.join(contents)
-        if not contents:
-            return title + '\n'
-        return title + '\n' + self.indent(rstrip(contents), ' |  ') + '\n'
-
-    def formatvalue(self, object):
-        """Format an argument default value as text."""
-        return '=' + self.repr(object)
-
-    def docroutine(self, object, name=None, mod=None, cl=None):
-        """Produce text documentation for a function or method object."""
-        realname = object.__name__
-        name = name or realname
-        note = ''
-        skipdocs = 0
-        if inspect.ismethod(object):
-            imclass = object.im_class
-            if cl:
-                if imclass is not cl:
-                    note = ' from ' + classname(imclass, mod)
-            else:
-                if object.im_self is not None:
-                    note = ' method of %s instance' % classname(
-                        object.im_self.__class__, mod)
-                else:
-                    note = ' unbound %s method' % classname(imclass,mod)
-            object = object.im_func
-
-        if name == realname:
-            title = self.bold(realname)
-        else:
-            if (cl and realname in cl.__dict__ and
-                cl.__dict__[realname] is object):
-                skipdocs = 1
-            title = self.bold(name) + ' = ' + realname
-        if inspect.isfunction(object):
-            args, varargs, varkw, defaults = inspect.getargspec(object)
-            argspec = inspect.formatargspec(
-                args, varargs, varkw, defaults, formatvalue=self.formatvalue)
-            if realname == '<lambda>':
-                title = self.bold(name) + ' lambda '
-                argspec = argspec[1:-1] # remove parentheses
-        else:
-            argspec = '(...)'
-        decl = title + argspec + note
-
-        if skipdocs:
-            return decl + '\n'
-        else:
-            doc = getdoc(object) or ''
-            return decl + '\n' + (doc and rstrip(self.indent(doc)) + '\n')
-
-    def _docdescriptor(self, name, value, mod):
-        results = []
-        push = results.append
-
-        if name:
-            push(self.bold(name))
-            push('\n')
-        doc = getdoc(value) or ''
-        if doc:
-            push(self.indent(doc))
-            push('\n')
-        return ''.join(results)
-
-    def docproperty(self, object, name=None, mod=None, cl=None):
-        """Produce text documentation for a property."""
-        return self._docdescriptor(name, object, mod)
-
-    def docdata(self, object, name=None, mod=None, cl=None):
-        """Produce text documentation for a data descriptor."""
-        return self._docdescriptor(name, object, mod)
-
-    def docother(self, object, name=None, mod=None, parent=None, maxlen=None, doc=None):
-        """Produce text documentation for a data object."""
-        repr = self.repr(object)
-        if maxlen:
-            line = (name and name + ' = ' or '') + repr
-            chop = maxlen - len(line)
-            if chop < 0: repr = repr[:chop] + '...'
-        line = (name and self.bold(name) + ' = ' or '') + repr
-        if doc is not None:
-            line += '\n' + self.indent(str(doc))
-        return line
-
-# --------------------------------------------------------- user interfaces
-
-def pager(text):
-    """The first time this is called, determine what kind of pager to use."""
-    global pager
-    pager = getpager()
-    pager(text)
-
-def getpager():
-    """Decide what method to use for paging through text."""
-    if type(sys.stdout) is not types.FileType:
-        return plainpager
-    if not sys.stdin.isatty() or not sys.stdout.isatty():
-        return plainpager
-    if 'PAGER' in os.environ:
-        if sys.platform == 'win32': # pipes completely broken in Windows
-            return lambda text: tempfilepager(plain(text), os.environ['PAGER'])
-        elif os.environ.get('TERM') in ('dumb', 'emacs'):
-            return lambda text: pipepager(plain(text), os.environ['PAGER'])
-        else:
-            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')
-
-    import tempfile
-    (fd, filename) = tempfile.mkstemp()
-    os.close(fd)
-    try:
-        if hasattr(os, 'system') and os.system('more "%s"' % filename) == 0:
-            return lambda text: pipepager(text, 'more')
-        else:
-            return ttypager
-    finally:
-        os.unlink(filename)
-
-def plain(text):
-    """Remove boldface formatting from text."""
-    return re.sub('.\b', '', text)
-
-def pipepager(text, cmd):
-    """Page through text by feeding it to another program."""
-    pipe = os.popen(cmd, 'w')
-    try:
-        pipe.write(text)
-        pipe.close()
-    except IOError:
-        pass # Ignore broken pipes caused by quitting the pager program.
-
-def tempfilepager(text, cmd):
-    """Page through text by invoking a program on a temporary file."""
-    import tempfile
-    filename = tempfile.mktemp()
-    file = open(filename, 'w')
-    file.write(text)
-    file.close()
-    try:
-        os.system(cmd + ' "' + filename + '"')
-    finally:
-        os.unlink(filename)
-
-def ttypager(text):
-    """Page through text on a text terminal."""
-    lines = split(plain(text), '\n')
-    try:
-        import tty
-        fd = sys.stdin.fileno()
-        old = tty.tcgetattr(fd)
-        tty.setcbreak(fd)
-        getchar = lambda: sys.stdin.read(1)
-    except (ImportError, AttributeError):
-        tty = None
-        getchar = lambda: sys.stdin.readline()[:-1][:1]
-
-    try:
-        r = inc = os.environ.get('LINES', 25) - 1
-        sys.stdout.write(join(lines[:inc], '\n') + '\n')
-        while lines[r:]:
-            sys.stdout.write('-- more --')
-            sys.stdout.flush()
-            c = getchar()
-
-            if c in ('q', 'Q'):
-                sys.stdout.write('\r          \r')
-                break
-            elif c in ('\r', '\n'):
-                sys.stdout.write('\r          \r' + lines[r] + '\n')
-                r = r + 1
-                continue
-            if c in ('b', 'B', '\x1b'):
-                r = r - inc - inc
-                if r < 0: r = 0
-            sys.stdout.write('\n' + join(lines[r:r+inc], '\n') + '\n')
-            r = r + inc
-
-    finally:
-        if tty:
-            tty.tcsetattr(fd, tty.TCSAFLUSH, old)
-
-def plainpager(text):
-    """Simply print unformatted text.  This is the ultimate fallback."""
-    sys.stdout.write(plain(text))
-
-def describe(thing):
-    """Produce a short description of the given thing."""
-    if inspect.ismodule(thing):
-        if thing.__name__ in sys.builtin_module_names:
-            return 'built-in module ' + thing.__name__
-        if hasattr(thing, '__path__'):
-            return 'package ' + thing.__name__
-        else:
-            return 'module ' + thing.__name__
-    if inspect.isbuiltin(thing):
-        return 'built-in function ' + thing.__name__
-    if inspect.isgetsetdescriptor(thing):
-        return 'getset descriptor %s.%s.%s' % (
-            thing.__objclass__.__module__, thing.__objclass__.__name__,
-            thing.__name__)
-    if inspect.ismemberdescriptor(thing):
-        return 'member descriptor %s.%s.%s' % (
-            thing.__objclass__.__module__, thing.__objclass__.__name__,
-            thing.__name__)
-    if inspect.isclass(thing):
-        return 'class ' + thing.__name__
-    if inspect.isfunction(thing):
-        return 'function ' + thing.__name__
-    if inspect.ismethod(thing):
-        return 'method ' + thing.__name__
-    if type(thing) is types.InstanceType:
-        return 'instance of ' + thing.__class__.__name__
-    return type(thing).__name__
-
-def locate(path, forceload=0):
-    """Locate an object by name or dotted path, importing as necessary."""
-    parts = [part for part in split(path, '.') if part]
-    module, n = None, 0
-    while n < len(parts):
-        nextmodule = safeimport(join(parts[:n+1], '.'), forceload)
-        if nextmodule: module, n = nextmodule, n + 1
-        else: break
-    if module:
-        object = module
-        for part in parts[n:]:
-            try: object = getattr(object, part)
-            except AttributeError: return None
-        return object
-    else:
-        if hasattr(__builtin__, path):
-            return getattr(__builtin__, path)
-
-# --------------------------------------- interactive interpreter interface
-
-text = TextDoc()
-html = HTMLDoc()
-
-class _OldStyleClass: pass
-_OLD_INSTANCE_TYPE = type(_OldStyleClass())
-
-def resolve(thing, forceload=0):
-    """Given an object or a path to an object, get the object and its name."""
-    if isinstance(thing, str):
-        object = locate(thing, forceload)
-        if not object:
-            raise ImportError, 'no Python documentation found for %r' % thing
-        return object, thing
-    else:
-        return thing, getattr(thing, '__name__', None)
-
-def render_doc(thing, title='Python Library Documentation: %s', forceload=0):
-    """Render text documentation, given an object or a path to an object."""
-    object, name = resolve(thing, forceload)
-    desc = describe(object)
-    module = inspect.getmodule(object)
-    if name and '.' in name:
-        desc += ' in ' + name[:name.rfind('.')]
-    elif module and module is not object:
-        desc += ' in module ' + module.__name__
-    if type(object) is _OLD_INSTANCE_TYPE:
-        # If the passed object is an instance of an old-style class,
-        # document its available methods instead of its value.
-        object = object.__class__
-    elif not (inspect.ismodule(object) or
-              inspect.isclass(object) or
-              inspect.isroutine(object) or
-              inspect.isgetsetdescriptor(object) or
-              inspect.ismemberdescriptor(object) or
-              isinstance(object, property)):
-        # If the passed object is a piece of data or an instance,
-        # document its available methods instead of its value.
-        object = type(object)
-        desc += ' object'
-    return title % desc + '\n\n' + text.document(object, name)
-
-def doc(thing, title='Python Library Documentation: %s', forceload=0):
-    """Display text documentation, given an object or a path to an object."""
-    try:
-        pager(render_doc(thing, title, forceload))
-    except (ImportError, ErrorDuringImport), value:
-        print value
-
-def writedoc(thing, forceload=0):
-    """Write HTML documentation to a file in the current directory."""
-    try:
-        object, name = resolve(thing, forceload)
-        page = html.page(describe(object), html.document(object, name))
-        file = open(name + '.html', 'w')
-        file.write(page)
-        file.close()
-        print 'wrote', name + '.html'
-    except (ImportError, ErrorDuringImport), value:
-        print value
-
-def writedocs(dir, pkgpath='', done=None):
-    """Write out HTML documentation for all modules in a directory tree."""
-    if done is None: done = {}
-    for importer, modname, ispkg in pkgutil.walk_packages([dir], pkgpath):
-        writedoc(modname)
-    return
-
-class Helper:
-
-    # These dictionaries map a topic name to either an alias, or a tuple
-    # (label, seealso-items).  The "label" is the label of the corresponding
-    # section in the .rst file under Doc/ and an index into the dictionary
-    # in pydoc_data/topics.py.
-    #
-    # CAUTION: if you change one of these dictionaries, be sure to adapt the
-    #          list of needed labels in Doc/tools/sphinxext/pyspecific.py and
-    #          regenerate the pydoc_data/topics.py file by running
-    #              make pydoc-topics
-    #          in Doc/ and copying the output file into the Lib/ directory.
-
-    keywords = {
-        'and': 'BOOLEAN',
-        'as': 'with',
-        'assert': ('assert', ''),
-        'break': ('break', 'while for'),
-        'class': ('class', 'CLASSES SPECIALMETHODS'),
-        'continue': ('continue', 'while for'),
-        'def': ('function', ''),
-        'del': ('del', 'BASICMETHODS'),
-        'elif': 'if',
-        'else': ('else', 'while for'),
-        'except': 'try',
-        'exec': ('exec', ''),
-        'finally': 'try',
-        'for': ('for', 'break continue while'),
-        'from': 'import',
-        'global': ('global', 'NAMESPACES'),
-        'if': ('if', 'TRUTHVALUE'),
-        'import': ('import', 'MODULES'),
-        'in': ('in', 'SEQUENCEMETHODS2'),
-        'is': 'COMPARISON',
-        'lambda': ('lambda', 'FUNCTIONS'),
-        'not': 'BOOLEAN',
-        'or': 'BOOLEAN',
-        'pass': ('pass', ''),
-        'print': ('print', ''),
-        'raise': ('raise', 'EXCEPTIONS'),
-        'return': ('return', 'FUNCTIONS'),
-        'try': ('try', 'EXCEPTIONS'),
-        'while': ('while', 'break continue if TRUTHVALUE'),
-        'with': ('with', 'CONTEXTMANAGERS EXCEPTIONS yield'),
-        'yield': ('yield', ''),
-    }
-    # Either add symbols to this dictionary or to the symbols dictionary
-    # directly: Whichever is easier. They are merged later.
-    _symbols_inverse = {
-        'STRINGS' : ("'", "'''", "r'", "u'", '"""', '"', 'r"', 'u"'),
-        'OPERATORS' : ('+', '-', '*', '**', '/', '//', '%', '<<', '>>', '&',
-                       '|', '^', '~', '<', '>', '<=', '>=', '==', '!=', '<>'),
-        'COMPARISON' : ('<', '>', '<=', '>=', '==', '!=', '<>'),
-        'UNARY' : ('-', '~'),
-        'AUGMENTEDASSIGNMENT' : ('+=', '-=', '*=', '/=', '%=', '&=', '|=',
-                                '^=', '<<=', '>>=', '**=', '//='),
-        'BITWISE' : ('<<', '>>', '&', '|', '^', '~'),
-        'COMPLEX' : ('j', 'J')
-    }
-    symbols = {
-        '%': 'OPERATORS FORMATTING',
-        '**': 'POWER',
-        ',': 'TUPLES LISTS FUNCTIONS',
-        '.': 'ATTRIBUTES FLOAT MODULES OBJECTS',
-        '...': 'ELLIPSIS',
-        ':': 'SLICINGS DICTIONARYLITERALS',
-        '@': 'def class',
-        '\\': 'STRINGS',
-        '_': 'PRIVATENAMES',
-        '__': 'PRIVATENAMES SPECIALMETHODS',
-        '`': 'BACKQUOTES',
-        '(': 'TUPLES FUNCTIONS CALLS',
-        ')': 'TUPLES FUNCTIONS CALLS',
-        '[': 'LISTS SUBSCRIPTS SLICINGS',
-        ']': 'LISTS SUBSCRIPTS SLICINGS'
-    }
-    for topic, symbols_ in _symbols_inverse.iteritems():
-        for symbol in symbols_:
-            topics = symbols.get(symbol, topic)
-            if topic not in topics:
-                topics = topics + ' ' + topic
-            symbols[symbol] = topics
-
-    topics = {
-        'TYPES': ('types', 'STRINGS UNICODE NUMBERS SEQUENCES MAPPINGS '
-                  'FUNCTIONS CLASSES MODULES FILES inspect'),
-        'STRINGS': ('strings', 'str UNICODE SEQUENCES STRINGMETHODS FORMATTING '
-                    'TYPES'),
-        'STRINGMETHODS': ('string-methods', 'STRINGS FORMATTING'),
-        'FORMATTING': ('formatstrings', 'OPERATORS'),
-        'UNICODE': ('strings', 'encodings unicode SEQUENCES STRINGMETHODS '
-                    'FORMATTING TYPES'),
-        'NUMBERS': ('numbers', 'INTEGER FLOAT COMPLEX TYPES'),
-        'INTEGER': ('integers', 'int range'),
-        'FLOAT': ('floating', 'float math'),
-        'COMPLEX': ('imaginary', 'complex cmath'),
-        'SEQUENCES': ('typesseq', 'STRINGMETHODS FORMATTING xrange LISTS'),
-        'MAPPINGS': 'DICTIONARIES',
-        'FUNCTIONS': ('typesfunctions', 'def TYPES'),
-        'METHODS': ('typesmethods', 'class def CLASSES TYPES'),
-        'CODEOBJECTS': ('bltin-code-objects', 'compile FUNCTIONS TYPES'),
-        'TYPEOBJECTS': ('bltin-type-objects', 'types TYPES'),
-        'FRAMEOBJECTS': 'TYPES',
-        'TRACEBACKS': 'TYPES',
-        'NONE': ('bltin-null-object', ''),
-        'ELLIPSIS': ('bltin-ellipsis-object', 'SLICINGS'),
-        'FILES': ('bltin-file-objects', ''),
-        'SPECIALATTRIBUTES': ('specialattrs', ''),
-        'CLASSES': ('types', 'class SPECIALMETHODS PRIVATENAMES'),
-        'MODULES': ('typesmodules', 'import'),
-        'PACKAGES': 'import',
-        'EXPRESSIONS': ('operator-summary', 'lambda or and not in is BOOLEAN '
-                        'COMPARISON BITWISE SHIFTING BINARY FORMATTING POWER '
-                        'UNARY ATTRIBUTES SUBSCRIPTS SLICINGS CALLS TUPLES '
-                        'LISTS DICTIONARIES BACKQUOTES'),
-        'OPERATORS': 'EXPRESSIONS',
-        'PRECEDENCE': 'EXPRESSIONS',
-        'OBJECTS': ('objects', 'TYPES'),
-        'SPECIALMETHODS': ('specialnames', 'BASICMETHODS ATTRIBUTEMETHODS '
-                           'CALLABLEMETHODS SEQUENCEMETHODS1 MAPPINGMETHODS '
-                           'SEQUENCEMETHODS2 NUMBERMETHODS CLASSES'),
-        'BASICMETHODS': ('customization', 'cmp hash repr str SPECIALMETHODS'),
-        'ATTRIBUTEMETHODS': ('attribute-access', 'ATTRIBUTES SPECIALMETHODS'),
-        'CALLABLEMETHODS': ('callable-types', 'CALLS SPECIALMETHODS'),
-        'SEQUENCEMETHODS1': ('sequence-types', 'SEQUENCES SEQUENCEMETHODS2 '
-                             'SPECIALMETHODS'),
-        'SEQUENCEMETHODS2': ('sequence-methods', 'SEQUENCES SEQUENCEMETHODS1 '
-                             'SPECIALMETHODS'),
-        'MAPPINGMETHODS': ('sequence-types', 'MAPPINGS SPECIALMETHODS'),
-        'NUMBERMETHODS': ('numeric-types', 'NUMBERS AUGMENTEDASSIGNMENT '
-                          'SPECIALMETHODS'),
-        'EXECUTION': ('execmodel', 'NAMESPACES DYNAMICFEATURES EXCEPTIONS'),
-        'NAMESPACES': ('naming', 'global ASSIGNMENT DELETION DYNAMICFEATURES'),
-        'DYNAMICFEATURES': ('dynamic-features', ''),
-        'SCOPING': 'NAMESPACES',
-        'FRAMES': 'NAMESPACES',
-        'EXCEPTIONS': ('exceptions', 'try except finally raise'),
-        'COERCIONS': ('coercion-rules','CONVERSIONS'),
-        'CONVERSIONS': ('conversions', 'COERCIONS'),
-        'IDENTIFIERS': ('identifiers', 'keywords SPECIALIDENTIFIERS'),
-        'SPECIALIDENTIFIERS': ('id-classes', ''),
-        'PRIVATENAMES': ('atom-identifiers', ''),
-        'LITERALS': ('atom-literals', 'STRINGS BACKQUOTES NUMBERS '
-                     'TUPLELITERALS LISTLITERALS DICTIONARYLITERALS'),
-        'TUPLES': 'SEQUENCES',
-        'TUPLELITERALS': ('exprlists', 'TUPLES LITERALS'),
-        'LISTS': ('typesseq-mutable', 'LISTLITERALS'),
-        'LISTLITERALS': ('lists', 'LISTS LITERALS'),
-        'DICTIONARIES': ('typesmapping', 'DICTIONARYLITERALS'),
-        'DICTIONARYLITERALS': ('dict', 'DICTIONARIES LITERALS'),
-        'BACKQUOTES': ('string-conversions', 'repr str STRINGS LITERALS'),
-        'ATTRIBUTES': ('attribute-references', 'getattr hasattr setattr '
-                       'ATTRIBUTEMETHODS'),
-        'SUBSCRIPTS': ('subscriptions', 'SEQUENCEMETHODS1'),
-        'SLICINGS': ('slicings', 'SEQUENCEMETHODS2'),
-        'CALLS': ('calls', 'EXPRESSIONS'),
-        'POWER': ('power', 'EXPRESSIONS'),
-        'UNARY': ('unary', 'EXPRESSIONS'),
-        'BINARY': ('binary', 'EXPRESSIONS'),
-        'SHIFTING': ('shifting', 'EXPRESSIONS'),
-        'BITWISE': ('bitwise', 'EXPRESSIONS'),
-        'COMPARISON': ('comparisons', 'EXPRESSIONS BASICMETHODS'),
-        'BOOLEAN': ('booleans', 'EXPRESSIONS TRUTHVALUE'),
-        'ASSERTION': 'assert',
-        'ASSIGNMENT': ('assignment', 'AUGMENTEDASSIGNMENT'),
-        'AUGMENTEDASSIGNMENT': ('augassign', 'NUMBERMETHODS'),
-        'DELETION': 'del',
-        'PRINTING': 'print',
-        'RETURNING': 'return',
-        'IMPORTING': 'import',
-        'CONDITIONAL': 'if',
-        'LOOPING': ('compound', 'for while break continue'),
-        'TRUTHVALUE': ('truth', 'if while and or not BASICMETHODS'),
-        'DEBUGGING': ('debugger', 'pdb'),
-        'CONTEXTMANAGERS': ('context-managers', 'with'),
-    }
-
-    def __init__(self, input=None, output=None):
-        self._input = input
-        self._output = output
-
-    input  = property(lambda self: self._input or sys.stdin)
-    output = property(lambda self: self._output or sys.stdout)
-
-    def __repr__(self):
-        if inspect.stack()[1][3] == '?':
-            self()
-            return ''
-        return '<pydoc.Helper instance>'
-
-    _GoInteractive = object()
-    def __call__(self, request=_GoInteractive):
-        if request is not self._GoInteractive:
-            self.help(request)
-        else:
-            self.intro()
-            self.interact()
-            self.output.write('''
-You are now leaving help and returning to the Python interpreter.
-If you want to ask for help on a particular object directly from the
-interpreter, you can type "help(object)".  Executing "help('string')"
-has the same effect as typing a particular string at the help> prompt.
-''')
-
-    def interact(self):
-        self.output.write('\n')
-        while True:
-            try:
-                request = self.getline('help> ')
-                if not request: break
-            except (KeyboardInterrupt, EOFError):
-                break
-            request = strip(replace(request, '"', '', "'", ''))
-            if lower(request) in ('q', 'quit'): break
-            self.help(request)
-
-    def getline(self, prompt):
-        """Read one line, using raw_input when available."""
-        if self.input is sys.stdin:
-            return raw_input(prompt)
-        else:
-            self.output.write(prompt)
-            self.output.flush()
-            return self.input.readline()
-
-    def help(self, request):
-        if type(request) is type(''):
-            request = request.strip()
-            if request == 'help': self.intro()
-            elif request == 'keywords': self.listkeywords()
-            elif request == 'symbols': self.listsymbols()
-            elif request == 'topics': self.listtopics()
-            elif request == 'modules': self.listmodules()
-            elif request[:8] == 'modules ':
-                self.listmodules(split(request)[1])
-            elif request in self.symbols: self.showsymbol(request)
-            elif request in self.keywords: self.showtopic(request)
-            elif request in self.topics: self.showtopic(request)
-            elif request: doc(request, 'Help on %s:')
-        elif isinstance(request, Helper): self()
-        else: doc(request, 'Help on %s:')
-        self.output.write('\n')
-
-    def intro(self):
-        self.output.write('''
-Welcome to Python %s!  This is the online help utility.
-
-If this is your first time using Python, you should definitely check out
-the tutorial on the Internet at http://docs.python.org/tutorial/.
-
-Enter the name of any module, keyword, or topic to get help on writing
-Python programs and using Python modules.  To quit this help utility and
-return to the interpreter, just type "quit".
-
-To get a list of available modules, keywords, or topics, type "modules",
-"keywords", or "topics".  Each module also comes with a one-line summary
-of what it does; to list the modules whose summaries contain a given word
-such as "spam", type "modules spam".
-''' % sys.version[:3])
-
-    def list(self, items, columns=4, width=80):
-        items = items[:]
-        items.sort()
-        colw = width / columns
-        rows = (len(items) + columns - 1) / columns
-        for row in range(rows):
-            for col in range(columns):
-                i = col * rows + row
-                if i < len(items):
-                    self.output.write(items[i])
-                    if col < columns - 1:
-                        self.output.write(' ' + ' ' * (colw-1 - len(items[i])))
-            self.output.write('\n')
-
-    def listkeywords(self):
-        self.output.write('''
-Here is a list of the Python keywords.  Enter any keyword to get more help.
-
-''')
-        self.list(self.keywords.keys())
-
-    def listsymbols(self):
-        self.output.write('''
-Here is a list of the punctuation symbols which Python assigns special meaning
-to. Enter any symbol to get more help.
-
-''')
-        self.list(self.symbols.keys())
-
-    def listtopics(self):
-        self.output.write('''
-Here is a list of available topics.  Enter any topic name to get more help.
-
-''')
-        self.list(self.topics.keys())
-
-    def showtopic(self, topic, more_xrefs=''):
-        try:
-            import pydoc_data.topics
-        except ImportError:
-            self.output.write('''
-Sorry, topic and keyword documentation is not available because the
-module "pydoc_data.topics" could not be found.
-''')
-            return
-        target = self.topics.get(topic, self.keywords.get(topic))
-        if not target:
-            self.output.write('no documentation found for %s\n' % repr(topic))
-            return
-        if type(target) is type(''):
-            return self.showtopic(target, more_xrefs)
-
-        label, xrefs = target
-        try:
-            doc = pydoc_data.topics.topics[label]
-        except KeyError:
-            self.output.write('no documentation found for %s\n' % repr(topic))
-            return
-        pager(strip(doc) + '\n')
-        if more_xrefs:
-            xrefs = (xrefs or '') + ' ' + more_xrefs
-        if xrefs:
-            import StringIO, formatter
-            buffer = StringIO.StringIO()
-            formatter.DumbWriter(buffer).send_flowing_data(
-                'Related help topics: ' + join(split(xrefs), ', ') + '\n')
-            self.output.write('\n%s\n' % buffer.getvalue())
-
-    def showsymbol(self, symbol):
-        target = self.symbols[symbol]
-        topic, _, xrefs = target.partition(' ')
-        self.showtopic(topic, xrefs)
-
-    def listmodules(self, key=''):
-        if key:
-            self.output.write('''
-Here is a list of matching modules.  Enter any module name to get more help.
-
-''')
-            apropos(key)
-        else:
-            self.output.write('''
-Please wait a moment while I gather a list of all available modules...
-
-''')
-            modules = {}
-            def callback(path, modname, desc, modules=modules):
-                if modname and modname[-9:] == '.__init__':
-                    modname = modname[:-9] + ' (package)'
-                if find(modname, '.') < 0:
-                    modules[modname] = 1
-            def onerror(modname):
-                callback(None, modname, None)
-            ModuleScanner().run(callback, onerror=onerror)
-            self.list(modules.keys())
-            self.output.write('''
-Enter any module name to get more help.  Or, type "modules spam" to search
-for modules whose descriptions contain the word "spam".
-''')
-
-help = Helper()
-
-class Scanner:
-    """A generic tree iterator."""
-    def __init__(self, roots, children, descendp):
-        self.roots = roots[:]
-        self.state = []
-        self.children = children
-        self.descendp = descendp
-
-    def next(self):
-        if not self.state:
-            if not self.roots:
-                return None
-            root = self.roots.pop(0)
-            self.state = [(root, self.children(root))]
-        node, children = self.state[-1]
-        if not children:
-            self.state.pop()
-            return self.next()
-        child = children.pop(0)
-        if self.descendp(child):
-            self.state.append((child, self.children(child)))
-        return child
-
-
-class ModuleScanner:
-    """An interruptible scanner that searches module synopses."""
-
-    def run(self, callback, key=None, completer=None, onerror=None):
-        if key: key = lower(key)
-        self.quit = False
-        seen = {}
-
-        for modname in sys.builtin_module_names:
-            if modname != '__main__':
-                seen[modname] = 1
-                if key is None:
-                    callback(None, modname, '')
-                else:
-                    desc = split(__import__(modname).__doc__ or '', '\n')[0]
-                    if find(lower(modname + ' - ' + desc), key) >= 0:
-                        callback(None, modname, desc)
-
-        for importer, modname, ispkg in pkgutil.walk_packages(onerror=onerror):
-            if self.quit:
-                break
-            if key is None:
-                callback(None, modname, '')
-            else:
-                loader = importer.find_module(modname)
-                if hasattr(loader,'get_source'):
-                    import StringIO
-                    desc = source_synopsis(
-                        StringIO.StringIO(loader.get_source(modname))
-                    ) or ''
-                    if hasattr(loader,'get_filename'):
-                        path = loader.get_filename(modname)
-                    else:
-                        path = None
-                else:
-                    module = loader.load_module(modname)
-                    desc = (module.__doc__ or '').splitlines()[0]
-                    path = getattr(module,'__file__',None)
-                if find(lower(modname + ' - ' + desc), key) >= 0:
-                    callback(path, modname, desc)
-
-        if completer:
-            completer()
-
-def apropos(key):
-    """Print all the one-line module summaries that contain a substring."""
-    def callback(path, modname, desc):
-        if modname[-9:] == '.__init__':
-            modname = modname[:-9] + ' (package)'
-        print modname, desc and '- ' + desc
-    try: import warnings
-    except ImportError: pass
-    else: warnings.filterwarnings('ignore') # ignore problems during import
-    ModuleScanner().run(callback, key)
-
-# --------------------------------------------------- web browser interface
-
-def serve(port, callback=None, completer=None):
-    import BaseHTTPServer, mimetools, select
-
-    # Patch up mimetools.Message so it doesn't break if rfc822 is reloaded.
-    class Message(mimetools.Message):
-        def __init__(self, fp, seekable=1):
-            Message = self.__class__
-            Message.__bases__[0].__bases__[0].__init__(self, fp, seekable)
-            self.encodingheader = self.getheader('content-transfer-encoding')
-            self.typeheader = self.getheader('content-type')
-            self.parsetype()
-            self.parseplist()
-
-    class DocHandler(BaseHTTPServer.BaseHTTPRequestHandler):
-        def send_document(self, title, contents):
-            try:
-                self.send_response(200)
-                self.send_header('Content-Type', 'text/html')
-                self.end_headers()
-                self.wfile.write(html.page(title, contents))
-            except IOError: pass
-
-        def do_GET(self):
-            path = self.path
-            if path[-5:] == '.html': path = path[:-5]
-            if path[:1] == '/': path = path[1:]
-            if path and path != '.':
-                try:
-                    obj = locate(path, forceload=1)
-                except ErrorDuringImport, value:
-                    self.send_document(path, html.escape(str(value)))
-                    return
-                if obj:
-                    self.send_document(describe(obj), html.document(obj, path))
-                else:
-                    self.send_document(path,
-'no Python documentation found for %s' % repr(path))
-            else:
-                heading = html.heading(
-'<big><big><strong>Python: Index of Modules</strong></big></big>',
-'#ffffff', '#7799ee')
-                def bltinlink(name):
-                    return '<a href="%s.html">%s</a>' % (name, name)
-                names = filter(lambda x: x != '__main__',
-                               sys.builtin_module_names)
-                contents = html.multicolumn(names, bltinlink)
-                indices = ['<p>' + html.bigsection(
-                    'Built-in Modules', '#ffffff', '#ee77aa', contents)]
-
-                seen = {}
-                for dir in sys.path:
-                    indices.append(html.index(dir, seen))
-                contents = heading + join(indices) + '''<p align=right>
-<font color="#909090" face="helvetica, arial"><strong>
-pydoc</strong> by Ka-Ping Yee &lt;ping@lfw.org&gt;</font>'''
-                self.send_document('Index of Modules', contents)
-
-        def log_message(self, *args): pass
-
-    class DocServer(BaseHTTPServer.HTTPServer):
-        def __init__(self, port, callback):
-            host = 'localhost'
-            self.address = (host, port)
-            self.url = 'http://%s:%d/' % (host, port)
-            self.callback = callback
-            self.base.__init__(self, self.address, self.handler)
-
-        def serve_until_quit(self):
-            import select
-            self.quit = False
-            while not self.quit:
-                rd, wr, ex = select.select([self.socket.fileno()], [], [], 1)
-                if rd: self.handle_request()
-
-        def server_activate(self):
-            self.base.server_activate(self)
-            if self.callback: self.callback(self)
-
-    DocServer.base = BaseHTTPServer.HTTPServer
-    DocServer.handler = DocHandler
-    DocHandler.MessageClass = Message
-    try:
-        try:
-            DocServer(port, callback).serve_until_quit()
-        except (KeyboardInterrupt, select.error):
-            pass
-    finally:
-        if completer: completer()
-
-# ----------------------------------------------------- graphical interface
-
-def gui():
-    """Graphical interface (starts web server and pops up a control window)."""
-    class GUI:
-        def __init__(self, window, port=7464):
-            self.window = window
-            self.server = None
-            self.scanner = None
-
-            import Tkinter
-            self.server_frm = Tkinter.Frame(window)
-            self.title_lbl = Tkinter.Label(self.server_frm,
-                text='Starting server...\n ')
-            self.open_btn = Tkinter.Button(self.server_frm,
-                text='open browser', command=self.open, state='disabled')
-            self.quit_btn = Tkinter.Button(self.server_frm,
-                text='quit serving', command=self.quit, state='disabled')
-
-            self.search_frm = Tkinter.Frame(window)
-            self.search_lbl = Tkinter.Label(self.search_frm, text='Search for')
-            self.search_ent = Tkinter.Entry(self.search_frm)
-            self.search_ent.bind('<Return>', self.search)
-            self.stop_btn = Tkinter.Button(self.search_frm,
-                text='stop', pady=0, command=self.stop, state='disabled')
-            if sys.platform == 'win32':
-                # Trying to hide and show this button crashes under Windows.
-                self.stop_btn.pack(side='right')
-
-            self.window.title('pydoc')
-            self.window.protocol('WM_DELETE_WINDOW', self.quit)
-            self.title_lbl.pack(side='top', fill='x')
-            self.open_btn.pack(side='left', fill='x', expand=1)
-            self.quit_btn.pack(side='right', fill='x', expand=1)
-            self.server_frm.pack(side='top', fill='x')
-
-            self.search_lbl.pack(side='left')
-            self.search_ent.pack(side='right', fill='x', expand=1)
-            self.search_frm.pack(side='top', fill='x')
-            self.search_ent.focus_set()
-
-            font = ('helvetica', sys.platform == 'win32' and 8 or 10)
-            self.result_lst = Tkinter.Listbox(window, font=font, height=6)
-            self.result_lst.bind('<Button-1>', self.select)
-            self.result_lst.bind('<Double-Button-1>', self.goto)
-            self.result_scr = Tkinter.Scrollbar(window,
-                orient='vertical', command=self.result_lst.yview)
-            self.result_lst.config(yscrollcommand=self.result_scr.set)
-
-            self.result_frm = Tkinter.Frame(window)
-            self.goto_btn = Tkinter.Button(self.result_frm,
-                text='go to selected', command=self.goto)
-            self.hide_btn = Tkinter.Button(self.result_frm,
-                text='hide results', command=self.hide)
-            self.goto_btn.pack(side='left', fill='x', expand=1)
-            self.hide_btn.pack(side='right', fill='x', expand=1)
-
-            self.window.update()
-            self.minwidth = self.window.winfo_width()
-            self.minheight = self.window.winfo_height()
-            self.bigminheight = (self.server_frm.winfo_reqheight() +
-                                 self.search_frm.winfo_reqheight() +
-                                 self.result_lst.winfo_reqheight() +
-                                 self.result_frm.winfo_reqheight())
-            self.bigwidth, self.bigheight = self.minwidth, self.bigminheight
-            self.expanded = 0
-            self.window.wm_geometry('%dx%d' % (self.minwidth, self.minheight))
-            self.window.wm_minsize(self.minwidth, self.minheight)
-            self.window.tk.willdispatch()
-
-            import threading
-            threading.Thread(
-                target=serve, args=(port, self.ready, self.quit)).start()
-
-        def ready(self, server):
-            self.server = server
-            self.title_lbl.config(
-                text='Python documentation server at\n' + server.url)
-            self.open_btn.config(state='normal')
-            self.quit_btn.config(state='normal')
-
-        def open(self, event=None, url=None):
-            url = url or self.server.url
-            try:
-                import webbrowser
-                webbrowser.open(url)
-            except ImportError: # pre-webbrowser.py compatibility
-                if sys.platform == 'win32':
-                    os.system('start "%s"' % url)
-                else:
-                    rc = os.system('netscape -remote "openURL(%s)" &' % url)
-                    if rc: os.system('netscape "%s" &' % url)
-
-        def quit(self, event=None):
-            if self.server:
-                self.server.quit = 1
-            self.window.quit()
-
-        def search(self, event=None):
-            key = self.search_ent.get()
-            self.stop_btn.pack(side='right')
-            self.stop_btn.config(state='normal')
-            self.search_lbl.config(text='Searching for "%s"...' % key)
-            self.search_ent.forget()
-            self.search_lbl.pack(side='left')
-            self.result_lst.delete(0, 'end')
-            self.goto_btn.config(state='disabled')
-            self.expand()
-
-            import threading
-            if self.scanner:
-                self.scanner.quit = 1
-            self.scanner = ModuleScanner()
-            threading.Thread(target=self.scanner.run,
-                             args=(self.update, key, self.done)).start()
-
-        def update(self, path, modname, desc):
-            if modname[-9:] == '.__init__':
-                modname = modname[:-9] + ' (package)'
-            self.result_lst.insert('end',
-                modname + ' - ' + (desc or '(no description)'))
-
-        def stop(self, event=None):
-            if self.scanner:
-                self.scanner.quit = 1
-                self.scanner = None
-
-        def done(self):
-            self.scanner = None
-            self.search_lbl.config(text='Search for')
-            self.search_lbl.pack(side='left')
-            self.search_ent.pack(side='right', fill='x', expand=1)
-            if sys.platform != 'win32': self.stop_btn.forget()
-            self.stop_btn.config(state='disabled')
-
-        def select(self, event=None):
-            self.goto_btn.config(state='normal')
-
-        def goto(self, event=None):
-            selection = self.result_lst.curselection()
-            if selection:
-                modname = split(self.result_lst.get(selection[0]))[0]
-                self.open(url=self.server.url + modname + '.html')
-
-        def collapse(self):
-            if not self.expanded: return
-            self.result_frm.forget()
-            self.result_scr.forget()
-            self.result_lst.forget()
-            self.bigwidth = self.window.winfo_width()
-            self.bigheight = self.window.winfo_height()
-            self.window.wm_geometry('%dx%d' % (self.minwidth, self.minheight))
-            self.window.wm_minsize(self.minwidth, self.minheight)
-            self.expanded = 0
-
-        def expand(self):
-            if self.expanded: return
-            self.result_frm.pack(side='bottom', fill='x')
-            self.result_scr.pack(side='right', fill='y')
-            self.result_lst.pack(side='top', fill='both', expand=1)
-            self.window.wm_geometry('%dx%d' % (self.bigwidth, self.bigheight))
-            self.window.wm_minsize(self.minwidth, self.bigminheight)
-            self.expanded = 1
-
-        def hide(self, event=None):
-            self.stop()
-            self.collapse()
-
-    import Tkinter
-    try:
-        root = Tkinter.Tk()
-        # Tk will crash if pythonw.exe has an XP .manifest
-        # file and the root has is not destroyed explicitly.
-        # If the problem is ever fixed in Tk, the explicit
-        # destroy can go.
-        try:
-            gui = GUI(root)
-            root.mainloop()
-        finally:
-            root.destroy()
-    except KeyboardInterrupt:
-        pass
-
-# -------------------------------------------------- command-line interface
-
-def ispath(x):
-    return isinstance(x, str) and find(x, os.sep) >= 0
-
-def cli():
-    """Command-line interface (looks at sys.argv to decide what to do)."""
-    import getopt
-    class BadUsage: pass
-
-    # Scripts don't get the current directory in their path by default
-    # unless they are run with the '-m' switch
-    if '' not in sys.path:
-        scriptdir = os.path.dirname(sys.argv[0])
-        if scriptdir in sys.path:
-            sys.path.remove(scriptdir)
-        sys.path.insert(0, '.')
-
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'gk:p:w')
-        writing = 0
-
-        for opt, val in opts:
-            if opt == '-g':
-                gui()
-                return
-            if opt == '-k':
-                apropos(val)
-                return
-            if opt == '-p':
-                try:
-                    port = int(val)
-                except ValueError:
-                    raise BadUsage
-                def ready(server):
-                    print 'pydoc server ready at %s' % server.url
-                def stopped():
-                    print 'pydoc server stopped'
-                serve(port, ready, stopped)
-                return
-            if opt == '-w':
-                writing = 1
-
-        if not args: raise BadUsage
-        for arg in args:
-            if ispath(arg) and not os.path.exists(arg):
-                print 'file %r does not exist' % arg
-                break
-            try:
-                if ispath(arg) and os.path.isfile(arg):
-                    arg = importfile(arg)
-                if writing:
-                    if ispath(arg) and os.path.isdir(arg):
-                        writedocs(arg)
-                    else:
-                        writedoc(arg)
-                else:
-                    help.help(arg)
-            except ErrorDuringImport, value:
-                print value
-
-    except (getopt.error, BadUsage):
-        cmd = os.path.basename(sys.argv[0])
-        print """pydoc - the Python documentation tool
-
-%s <name> ...
-    Show text documentation on something.  <name> may be the name of a
-    Python keyword, topic, function, module, or package, or a dotted
-    reference to a class or function within a module or module in a
-    package.  If <name> contains a '%s', it is used as the path to a
-    Python source file to document. If name is 'keywords', 'topics',
-    or 'modules', a listing of these things is displayed.
-
-%s -k <keyword>
-    Search for a keyword in the synopsis lines of all available modules.
-
-%s -p <port>
-    Start an HTTP server on the given port on the local machine.
-
-%s -g
-    Pop up a graphical interface for finding and serving documentation.
-
-%s -w <name> ...
-    Write out the HTML documentation for a module to a file in the current
-    directory.  If <name> contains a '%s', it is treated as a filename; if
-    it names a directory, documentation is written for all the contents.
-""" % (cmd, os.sep, cmd, cmd, cmd, cmd, os.sep)
-
-if __name__ == '__main__': cli()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/pydoc_data/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/pydoc_data/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/pydoc_data/topics.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/pydoc_data/topics.py
deleted file mode 100644
index c09bc7b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/pydoc_data/topics.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# Autogenerated by Sphinx on Sat Jun 11 09:49:30 2011
-topics = {'assert': u'\nThe ``assert`` statement\n************************\n\nAssert statements are a convenient way to insert debugging assertions\ninto a program:\n\n   assert_stmt ::= "assert" expression ["," expression]\n\nThe simple form, ``assert expression``, is equivalent to\n\n   if __debug__:\n      if not expression: raise AssertionError\n\nThe extended form, ``assert expression1, expression2``, is equivalent\nto\n\n   if __debug__:\n      if not expression1: raise AssertionError(expression2)\n\nThese equivalences assume that ``__debug__`` and ``AssertionError``\nrefer to the built-in variables with those names.  In the current\nimplementation, the built-in variable ``__debug__`` is ``True`` under\nnormal circumstances, ``False`` when optimization is requested\n(command line option -O).  The current code generator emits no code\nfor an assert statement when optimization is requested at compile\ntime.  Note that it is unnecessary to include the source code for the\nexpression that failed in the error message; it will be displayed as\npart of the stack trace.\n\nAssignments to ``__debug__`` are illegal.  The value for the built-in\nvariable is determined when the interpreter starts.\n',
- 'assignment': u'\nAssignment statements\n*********************\n\nAssignment statements are used to (re)bind names to values and to\nmodify attributes or items of mutable objects:\n\n   assignment_stmt ::= (target_list "=")+ (expression_list | yield_expression)\n   target_list     ::= target ("," target)* [","]\n   target          ::= identifier\n              | "(" target_list ")"\n              | "[" target_list "]"\n              | attributeref\n              | subscription\n              | slicing\n\n(See section *Primaries* for the syntax definitions for the last three\nsymbols.)\n\nAn assignment statement evaluates the expression list (remember that\nthis can be a single expression or a comma-separated list, the latter\nyielding a tuple) and assigns the single resulting object to each of\nthe target lists, from left to right.\n\nAssignment is defined recursively depending on the form of the target\n(list). When a target is part of a mutable object (an attribute\nreference, subscription or slicing), the mutable object must\nultimately perform the assignment and decide about its validity, and\nmay raise an exception if the assignment is unacceptable.  The rules\nobserved by various types and the exceptions raised are given with the\ndefinition of the object types (see section *The standard type\nhierarchy*).\n\nAssignment of an object to a target list is recursively defined as\nfollows.\n\n* If the target list is a single target: The object is assigned to\n  that target.\n\n* If the target list is a comma-separated list of targets: The object\n  must be an iterable with the same number of items as there are\n  targets in the target list, and the items are assigned, from left to\n  right, to the corresponding targets.\n\nAssignment of an object to a single target is recursively defined as\nfollows.\n\n* If the target is an identifier (name):\n\n  * If the name does not occur in a ``global`` statement in the\n    current code block: the name is bound to the object in the current\n    local namespace.\n\n  * Otherwise: the name is bound to the object in the current global\n    namespace.\n\n  The name is rebound if it was already bound.  This may cause the\n  reference count for the object previously bound to the name to reach\n  zero, causing the object to be deallocated and its destructor (if it\n  has one) to be called.\n\n* If the target is a target list enclosed in parentheses or in square\n  brackets: The object must be an iterable with the same number of\n  items as there are targets in the target list, and its items are\n  assigned, from left to right, to the corresponding targets.\n\n* If the target is an attribute reference: The primary expression in\n  the reference is evaluated.  It should yield an object with\n  assignable attributes; if this is not the case, ``TypeError`` is\n  raised.  That object is then asked to assign the assigned object to\n  the given attribute; if it cannot perform the assignment, it raises\n  an exception (usually but not necessarily ``AttributeError``).\n\n  Note: If the object is a class instance and the attribute reference\n  occurs on both sides of the assignment operator, the RHS expression,\n  ``a.x`` can access either an instance attribute or (if no instance\n  attribute exists) a class attribute.  The LHS target ``a.x`` is\n  always set as an instance attribute, creating it if necessary.\n  Thus, the two occurrences of ``a.x`` do not necessarily refer to the\n  same attribute: if the RHS expression refers to a class attribute,\n  the LHS creates a new instance attribute as the target of the\n  assignment:\n\n     class Cls:\n         x = 3             # class variable\n     inst = Cls()\n     inst.x = inst.x + 1   # writes inst.x as 4 leaving Cls.x as 3\n\n  This description does not necessarily apply to descriptor\n  attributes, such as properties created with ``property()``.\n\n* If the target is a subscription: The primary expression in the\n  reference is evaluated.  It should yield either a mutable sequence\n  object (such as a list) or a mapping object (such as a dictionary).\n  Next, the subscript expression is evaluated.\n\n  If the primary is a mutable sequence object (such as a list), the\n  subscript must yield a plain integer.  If it is negative, the\n  sequence\'s length is added to it. The resulting value must be a\n  nonnegative integer less than the sequence\'s length, and the\n  sequence is asked to assign the assigned object to its item with\n  that index.  If the index is out of range, ``IndexError`` is raised\n  (assignment to a subscripted sequence cannot add new items to a\n  list).\n\n  If the primary is a mapping object (such as a dictionary), the\n  subscript must have a type compatible with the mapping\'s key type,\n  and the mapping is then asked to create a key/datum pair which maps\n  the subscript to the assigned object.  This can either replace an\n  existing key/value pair with the same key value, or insert a new\n  key/value pair (if no key with the same value existed).\n\n* If the target is a slicing: The primary expression in the reference\n  is evaluated.  It should yield a mutable sequence object (such as a\n  list).  The assigned object should be a sequence object of the same\n  type.  Next, the lower and upper bound expressions are evaluated,\n  insofar they are present; defaults are zero and the sequence\'s\n  length.  The bounds should evaluate to (small) integers.  If either\n  bound is negative, the sequence\'s length is added to it. The\n  resulting bounds are clipped to lie between zero and the sequence\'s\n  length, inclusive.  Finally, the sequence object is asked to replace\n  the slice with the items of the assigned sequence.  The length of\n  the slice may be different from the length of the assigned sequence,\n  thus changing the length of the target sequence, if the object\n  allows it.\n\n**CPython implementation detail:** In the current implementation, the\nsyntax for targets is taken to be the same as for expressions, and\ninvalid syntax is rejected during the code generation phase, causing\nless detailed error messages.\n\nWARNING: Although the definition of assignment implies that overlaps\nbetween the left-hand side and the right-hand side are \'safe\' (for\nexample ``a, b = b, a`` swaps two variables), overlaps *within* the\ncollection of assigned-to variables are not safe!  For instance, the\nfollowing program prints ``[0, 2]``:\n\n   x = [0, 1]\n   i = 0\n   i, x[i] = 1, 2\n   print x\n\n\nAugmented assignment statements\n===============================\n\nAugmented assignment is the combination, in a single statement, of a\nbinary operation and an assignment statement:\n\n   augmented_assignment_stmt ::= augtarget augop (expression_list | yield_expression)\n   augtarget                 ::= identifier | attributeref | subscription | slicing\n   augop                     ::= "+=" | "-=" | "*=" | "/=" | "//=" | "%=" | "**="\n             | ">>=" | "<<=" | "&=" | "^=" | "|="\n\n(See section *Primaries* for the syntax definitions for the last three\nsymbols.)\n\nAn augmented assignment evaluates the target (which, unlike normal\nassignment statements, cannot be an unpacking) and the expression\nlist, performs the binary operation specific to the type of assignment\non the two operands, and assigns the result to the original target.\nThe target is only evaluated once.\n\nAn augmented assignment expression like ``x += 1`` can be rewritten as\n``x = x + 1`` to achieve a similar, but not exactly equal effect. In\nthe augmented version, ``x`` is only evaluated once. Also, when\npossible, the actual operation is performed *in-place*, meaning that\nrather than creating a new object and assigning that to the target,\nthe old object is modified instead.\n\nWith the exception of assigning to tuples and multiple targets in a\nsingle statement, the assignment done by augmented assignment\nstatements is handled the same way as normal assignments. Similarly,\nwith the exception of the possible *in-place* behavior, the binary\noperation performed by augmented assignment is the same as the normal\nbinary operations.\n\nFor targets which are attribute references, the same *caveat about\nclass and instance attributes* applies as for regular assignments.\n',
- 'atom-identifiers': u'\nIdentifiers (Names)\n*******************\n\nAn identifier occurring as an atom is a name.  See section\n*Identifiers and keywords* for lexical definition and section *Naming\nand binding* for documentation of naming and binding.\n\nWhen the name is bound to an object, evaluation of the atom yields\nthat object. When a name is not bound, an attempt to evaluate it\nraises a ``NameError`` exception.\n\n**Private name mangling:** When an identifier that textually occurs in\na class definition begins with two or more underscore characters and\ndoes not end in two or more underscores, it is considered a *private\nname* of that class. Private names are transformed to a longer form\nbefore code is generated for them.  The transformation inserts the\nclass name in front of the name, with leading underscores removed, and\na single underscore inserted in front of the class name.  For example,\nthe identifier ``__spam`` occurring in a class named ``Ham`` will be\ntransformed to ``_Ham__spam``.  This transformation is independent of\nthe syntactical context in which the identifier is used.  If the\ntransformed name is extremely long (longer than 255 characters),\nimplementation defined truncation may happen.  If the class name\nconsists only of underscores, no transformation is done.\n',
- 'atom-literals': u"\nLiterals\n********\n\nPython supports string literals and various numeric literals:\n\n   literal ::= stringliteral | integer | longinteger\n               | floatnumber | imagnumber\n\nEvaluation of a literal yields an object of the given type (string,\ninteger, long integer, floating point number, complex number) with the\ngiven value.  The value may be approximated in the case of floating\npoint and imaginary (complex) literals.  See section *Literals* for\ndetails.\n\nAll literals correspond to immutable data types, and hence the\nobject's identity is less important than its value.  Multiple\nevaluations of literals with the same value (either the same\noccurrence in the program text or a different occurrence) may obtain\nthe same object or a different object with the same value.\n",
- 'attribute-access': u'\nCustomizing attribute access\n****************************\n\nThe following methods can be defined to customize the meaning of\nattribute access (use of, assignment to, or deletion of ``x.name``)\nfor class instances.\n\nobject.__getattr__(self, name)\n\n   Called when an attribute lookup has not found the attribute in the\n   usual places (i.e. it is not an instance attribute nor is it found\n   in the class tree for ``self``).  ``name`` is the attribute name.\n   This method should return the (computed) attribute value or raise\n   an ``AttributeError`` exception.\n\n   Note that if the attribute is found through the normal mechanism,\n   ``__getattr__()`` is not called.  (This is an intentional asymmetry\n   between ``__getattr__()`` and ``__setattr__()``.) This is done both\n   for efficiency reasons and because otherwise ``__getattr__()``\n   would have no way to access other attributes of the instance.  Note\n   that at least for instance variables, you can fake total control by\n   not inserting any values in the instance attribute dictionary (but\n   instead inserting them in another object).  See the\n   ``__getattribute__()`` method below for a way to actually get total\n   control in new-style classes.\n\nobject.__setattr__(self, name, value)\n\n   Called when an attribute assignment is attempted.  This is called\n   instead of the normal mechanism (i.e. store the value in the\n   instance dictionary).  *name* is the attribute name, *value* is the\n   value to be assigned to it.\n\n   If ``__setattr__()`` wants to assign to an instance attribute, it\n   should not simply execute ``self.name = value`` --- this would\n   cause a recursive call to itself.  Instead, it should insert the\n   value in the dictionary of instance attributes, e.g.,\n   ``self.__dict__[name] = value``.  For new-style classes, rather\n   than accessing the instance dictionary, it should call the base\n   class method with the same name, for example,\n   ``object.__setattr__(self, name, value)``.\n\nobject.__delattr__(self, name)\n\n   Like ``__setattr__()`` but for attribute deletion instead of\n   assignment.  This should only be implemented if ``del obj.name`` is\n   meaningful for the object.\n\n\nMore attribute access for new-style classes\n===========================================\n\nThe following methods only apply to new-style classes.\n\nobject.__getattribute__(self, name)\n\n   Called unconditionally to implement attribute accesses for\n   instances of the class. If the class also defines\n   ``__getattr__()``, the latter will not be called unless\n   ``__getattribute__()`` either calls it explicitly or raises an\n   ``AttributeError``. This method should return the (computed)\n   attribute value or raise an ``AttributeError`` exception. In order\n   to avoid infinite recursion in this method, its implementation\n   should always call the base class method with the same name to\n   access any attributes it needs, for example,\n   ``object.__getattribute__(self, name)``.\n\n   Note: This method may still be bypassed when looking up special methods\n     as the result of implicit invocation via language syntax or\n     built-in functions. See *Special method lookup for new-style\n     classes*.\n\n\nImplementing Descriptors\n========================\n\nThe following methods only apply when an instance of the class\ncontaining the method (a so-called *descriptor* class) appears in an\n*owner* class (the descriptor must be in either the owner\'s class\ndictionary or in the class dictionary for one of its parents).  In the\nexamples below, "the attribute" refers to the attribute whose name is\nthe key of the property in the owner class\' ``__dict__``.\n\nobject.__get__(self, instance, owner)\n\n   Called to get the attribute of the owner class (class attribute\n   access) or of an instance of that class (instance attribute\n   access). *owner* is always the owner class, while *instance* is the\n   instance that the attribute was accessed through, or ``None`` when\n   the attribute is accessed through the *owner*.  This method should\n   return the (computed) attribute value or raise an\n   ``AttributeError`` exception.\n\nobject.__set__(self, instance, value)\n\n   Called to set the attribute on an instance *instance* of the owner\n   class to a new value, *value*.\n\nobject.__delete__(self, instance)\n\n   Called to delete the attribute on an instance *instance* of the\n   owner class.\n\n\nInvoking Descriptors\n====================\n\nIn general, a descriptor is an object attribute with "binding\nbehavior", one whose attribute access has been overridden by methods\nin the descriptor protocol:  ``__get__()``, ``__set__()``, and\n``__delete__()``. If any of those methods are defined for an object,\nit is said to be a descriptor.\n\nThe default behavior for attribute access is to get, set, or delete\nthe attribute from an object\'s dictionary. For instance, ``a.x`` has a\nlookup chain starting with ``a.__dict__[\'x\']``, then\n``type(a).__dict__[\'x\']``, and continuing through the base classes of\n``type(a)`` excluding metaclasses.\n\nHowever, if the looked-up value is an object defining one of the\ndescriptor methods, then Python may override the default behavior and\ninvoke the descriptor method instead.  Where this occurs in the\nprecedence chain depends on which descriptor methods were defined and\nhow they were called.  Note that descriptors are only invoked for new\nstyle objects or classes (ones that subclass ``object()`` or\n``type()``).\n\nThe starting point for descriptor invocation is a binding, ``a.x``.\nHow the arguments are assembled depends on ``a``:\n\nDirect Call\n   The simplest and least common call is when user code directly\n   invokes a descriptor method:    ``x.__get__(a)``.\n\nInstance Binding\n   If binding to a new-style object instance, ``a.x`` is transformed\n   into the call: ``type(a).__dict__[\'x\'].__get__(a, type(a))``.\n\nClass Binding\n   If binding to a new-style class, ``A.x`` is transformed into the\n   call: ``A.__dict__[\'x\'].__get__(None, A)``.\n\nSuper Binding\n   If ``a`` is an instance of ``super``, then the binding ``super(B,\n   obj).m()`` searches ``obj.__class__.__mro__`` for the base class\n   ``A`` immediately preceding ``B`` and then invokes the descriptor\n   with the call: ``A.__dict__[\'m\'].__get__(obj, obj.__class__)``.\n\nFor instance bindings, the precedence of descriptor invocation depends\non the which descriptor methods are defined.  A descriptor can define\nany combination of ``__get__()``, ``__set__()`` and ``__delete__()``.\nIf it does not define ``__get__()``, then accessing the attribute will\nreturn the descriptor object itself unless there is a value in the\nobject\'s instance dictionary.  If the descriptor defines ``__set__()``\nand/or ``__delete__()``, it is a data descriptor; if it defines\nneither, it is a non-data descriptor.  Normally, data descriptors\ndefine both ``__get__()`` and ``__set__()``, while non-data\ndescriptors have just the ``__get__()`` method.  Data descriptors with\n``__set__()`` and ``__get__()`` defined always override a redefinition\nin an instance dictionary.  In contrast, non-data descriptors can be\noverridden by instances.\n\nPython methods (including ``staticmethod()`` and ``classmethod()``)\nare implemented as non-data descriptors.  Accordingly, instances can\nredefine and override methods.  This allows individual instances to\nacquire behaviors that differ from other instances of the same class.\n\nThe ``property()`` function is implemented as a data descriptor.\nAccordingly, instances cannot override the behavior of a property.\n\n\n__slots__\n=========\n\nBy default, instances of both old and new-style classes have a\ndictionary for attribute storage.  This wastes space for objects\nhaving very few instance variables.  The space consumption can become\nacute when creating large numbers of instances.\n\nThe default can be overridden by defining *__slots__* in a new-style\nclass definition.  The *__slots__* declaration takes a sequence of\ninstance variables and reserves just enough space in each instance to\nhold a value for each variable.  Space is saved because *__dict__* is\nnot created for each instance.\n\n__slots__\n\n   This class variable can be assigned a string, iterable, or sequence\n   of strings with variable names used by instances.  If defined in a\n   new-style class, *__slots__* reserves space for the declared\n   variables and prevents the automatic creation of *__dict__* and\n   *__weakref__* for each instance.\n\n   New in version 2.2.\n\nNotes on using *__slots__*\n\n* When inheriting from a class without *__slots__*, the *__dict__*\n  attribute of that class will always be accessible, so a *__slots__*\n  definition in the subclass is meaningless.\n\n* Without a *__dict__* variable, instances cannot be assigned new\n  variables not listed in the *__slots__* definition.  Attempts to\n  assign to an unlisted variable name raises ``AttributeError``. If\n  dynamic assignment of new variables is desired, then add\n  ``\'__dict__\'`` to the sequence of strings in the *__slots__*\n  declaration.\n\n  Changed in version 2.3: Previously, adding ``\'__dict__\'`` to the\n  *__slots__* declaration would not enable the assignment of new\n  attributes not specifically listed in the sequence of instance\n  variable names.\n\n* Without a *__weakref__* variable for each instance, classes defining\n  *__slots__* do not support weak references to its instances. If weak\n  reference support is needed, then add ``\'__weakref__\'`` to the\n  sequence of strings in the *__slots__* declaration.\n\n  Changed in version 2.3: Previously, adding ``\'__weakref__\'`` to the\n  *__slots__* declaration would not enable support for weak\n  references.\n\n* *__slots__* are implemented at the class level by creating\n  descriptors (*Implementing Descriptors*) for each variable name.  As\n  a result, class attributes cannot be used to set default values for\n  instance variables defined by *__slots__*; otherwise, the class\n  attribute would overwrite the descriptor assignment.\n\n* The action of a *__slots__* declaration is limited to the class\n  where it is defined.  As a result, subclasses will have a *__dict__*\n  unless they also define *__slots__* (which must only contain names\n  of any *additional* slots).\n\n* If a class defines a slot also defined in a base class, the instance\n  variable defined by the base class slot is inaccessible (except by\n  retrieving its descriptor directly from the base class). This\n  renders the meaning of the program undefined.  In the future, a\n  check may be added to prevent this.\n\n* Nonempty *__slots__* does not work for classes derived from\n  "variable-length" built-in types such as ``long``, ``str`` and\n  ``tuple``.\n\n* Any non-string iterable may be assigned to *__slots__*. Mappings may\n  also be used; however, in the future, special meaning may be\n  assigned to the values corresponding to each key.\n\n* *__class__* assignment works only if both classes have the same\n  *__slots__*.\n\n  Changed in version 2.6: Previously, *__class__* assignment raised an\n  error if either new or old class had *__slots__*.\n',
- 'attribute-references': u'\nAttribute references\n********************\n\nAn attribute reference is a primary followed by a period and a name:\n\n   attributeref ::= primary "." identifier\n\nThe primary must evaluate to an object of a type that supports\nattribute references, e.g., a module, list, or an instance.  This\nobject is then asked to produce the attribute whose name is the\nidentifier.  If this attribute is not available, the exception\n``AttributeError`` is raised. Otherwise, the type and value of the\nobject produced is determined by the object.  Multiple evaluations of\nthe same attribute reference may yield different objects.\n',
- 'augassign': u'\nAugmented assignment statements\n*******************************\n\nAugmented assignment is the combination, in a single statement, of a\nbinary operation and an assignment statement:\n\n   augmented_assignment_stmt ::= augtarget augop (expression_list | yield_expression)\n   augtarget                 ::= identifier | attributeref | subscription | slicing\n   augop                     ::= "+=" | "-=" | "*=" | "/=" | "//=" | "%=" | "**="\n             | ">>=" | "<<=" | "&=" | "^=" | "|="\n\n(See section *Primaries* for the syntax definitions for the last three\nsymbols.)\n\nAn augmented assignment evaluates the target (which, unlike normal\nassignment statements, cannot be an unpacking) and the expression\nlist, performs the binary operation specific to the type of assignment\non the two operands, and assigns the result to the original target.\nThe target is only evaluated once.\n\nAn augmented assignment expression like ``x += 1`` can be rewritten as\n``x = x + 1`` to achieve a similar, but not exactly equal effect. In\nthe augmented version, ``x`` is only evaluated once. Also, when\npossible, the actual operation is performed *in-place*, meaning that\nrather than creating a new object and assigning that to the target,\nthe old object is modified instead.\n\nWith the exception of assigning to tuples and multiple targets in a\nsingle statement, the assignment done by augmented assignment\nstatements is handled the same way as normal assignments. Similarly,\nwith the exception of the possible *in-place* behavior, the binary\noperation performed by augmented assignment is the same as the normal\nbinary operations.\n\nFor targets which are attribute references, the same *caveat about\nclass and instance attributes* applies as for regular assignments.\n',
- 'binary': u'\nBinary arithmetic operations\n****************************\n\nThe binary arithmetic operations have the conventional priority\nlevels.  Note that some of these operations also apply to certain non-\nnumeric types.  Apart from the power operator, there are only two\nlevels, one for multiplicative operators and one for additive\noperators:\n\n   m_expr ::= u_expr | m_expr "*" u_expr | m_expr "//" u_expr | m_expr "/" u_expr\n              | m_expr "%" u_expr\n   a_expr ::= m_expr | a_expr "+" m_expr | a_expr "-" m_expr\n\nThe ``*`` (multiplication) operator yields the product of its\narguments.  The arguments must either both be numbers, or one argument\nmust be an integer (plain or long) and the other must be a sequence.\nIn the former case, the numbers are converted to a common type and\nthen multiplied together.  In the latter case, sequence repetition is\nperformed; a negative repetition factor yields an empty sequence.\n\nThe ``/`` (division) and ``//`` (floor division) operators yield the\nquotient of their arguments.  The numeric arguments are first\nconverted to a common type. Plain or long integer division yields an\ninteger of the same type; the result is that of mathematical division\nwith the \'floor\' function applied to the result. Division by zero\nraises the ``ZeroDivisionError`` exception.\n\nThe ``%`` (modulo) operator yields the remainder from the division of\nthe first argument by the second.  The numeric arguments are first\nconverted to a common type.  A zero right argument raises the\n``ZeroDivisionError`` exception.  The arguments may be floating point\nnumbers, e.g., ``3.14%0.7`` equals ``0.34`` (since ``3.14`` equals\n``4*0.7 + 0.34``.)  The modulo operator always yields a result with\nthe same sign as its second operand (or zero); the absolute value of\nthe result is strictly smaller than the absolute value of the second\noperand [2].\n\nThe integer division and modulo operators are connected by the\nfollowing identity: ``x == (x/y)*y + (x%y)``.  Integer division and\nmodulo are also connected with the built-in function ``divmod()``:\n``divmod(x, y) == (x/y, x%y)``.  These identities don\'t hold for\nfloating point numbers; there similar identities hold approximately\nwhere ``x/y`` is replaced by ``floor(x/y)`` or ``floor(x/y) - 1`` [3].\n\nIn addition to performing the modulo operation on numbers, the ``%``\noperator is also overloaded by string and unicode objects to perform\nstring formatting (also known as interpolation). The syntax for string\nformatting is described in the Python Library Reference, section\n*String Formatting Operations*.\n\nDeprecated since version 2.3: The floor division operator, the modulo\noperator, and the ``divmod()`` function are no longer defined for\ncomplex numbers.  Instead, convert to a floating point number using\nthe ``abs()`` function if appropriate.\n\nThe ``+`` (addition) operator yields the sum of its arguments. The\narguments must either both be numbers or both sequences of the same\ntype.  In the former case, the numbers are converted to a common type\nand then added together.  In the latter case, the sequences are\nconcatenated.\n\nThe ``-`` (subtraction) operator yields the difference of its\narguments.  The numeric arguments are first converted to a common\ntype.\n',
- 'bitwise': u'\nBinary bitwise operations\n*************************\n\nEach of the three bitwise operations has a different priority level:\n\n   and_expr ::= shift_expr | and_expr "&" shift_expr\n   xor_expr ::= and_expr | xor_expr "^" and_expr\n   or_expr  ::= xor_expr | or_expr "|" xor_expr\n\nThe ``&`` operator yields the bitwise AND of its arguments, which must\nbe plain or long integers.  The arguments are converted to a common\ntype.\n\nThe ``^`` operator yields the bitwise XOR (exclusive OR) of its\narguments, which must be plain or long integers.  The arguments are\nconverted to a common type.\n\nThe ``|`` operator yields the bitwise (inclusive) OR of its arguments,\nwhich must be plain or long integers.  The arguments are converted to\na common type.\n',
- 'bltin-code-objects': u'\nCode Objects\n************\n\nCode objects are used by the implementation to represent "pseudo-\ncompiled" executable Python code such as a function body. They differ\nfrom function objects because they don\'t contain a reference to their\nglobal execution environment.  Code objects are returned by the built-\nin ``compile()`` function and can be extracted from function objects\nthrough their ``func_code`` attribute. See also the ``code`` module.\n\nA code object can be executed or evaluated by passing it (instead of a\nsource string) to the ``exec`` statement or the built-in ``eval()``\nfunction.\n\nSee *The standard type hierarchy* for more information.\n',
- 'bltin-ellipsis-object': u'\nThe Ellipsis Object\n*******************\n\nThis object is used by extended slice notation (see *Slicings*).  It\nsupports no special operations.  There is exactly one ellipsis object,\nnamed ``Ellipsis`` (a built-in name).\n\nIt is written as ``Ellipsis``.\n',
- 'bltin-file-objects': u'\nFile Objects\n************\n\nFile objects are implemented using C\'s ``stdio`` package and can be\ncreated with the built-in ``open()`` function.  File objects are also\nreturned by some other built-in functions and methods, such as\n``os.popen()`` and ``os.fdopen()`` and the ``makefile()`` method of\nsocket objects. Temporary files can be created using the ``tempfile``\nmodule, and high-level file operations such as copying, moving, and\ndeleting files and directories can be achieved with the ``shutil``\nmodule.\n\nWhen a file operation fails for an I/O-related reason, the exception\n``IOError`` is raised.  This includes situations where the operation\nis not defined for some reason, like ``seek()`` on a tty device or\nwriting a file opened for reading.\n\nFiles have the following methods:\n\nfile.close()\n\n   Close the file.  A closed file cannot be read or written any more.\n   Any operation which requires that the file be open will raise a\n   ``ValueError`` after the file has been closed.  Calling ``close()``\n   more than once is allowed.\n\n   As of Python 2.5, you can avoid having to call this method\n   explicitly if you use the ``with`` statement.  For example, the\n   following code will automatically close *f* when the ``with`` block\n   is exited:\n\n      from __future__ import with_statement # This isn\'t required in Python 2.6\n\n      with open("hello.txt") as f:\n          for line in f:\n              print line\n\n   In older versions of Python, you would have needed to do this to\n   get the same effect:\n\n      f = open("hello.txt")\n      try:\n          for line in f:\n              print line\n      finally:\n          f.close()\n\n   Note: Not all "file-like" types in Python support use as a context\n     manager for the ``with`` statement.  If your code is intended to\n     work with any file-like object, you can use the function\n     ``contextlib.closing()`` instead of using the object directly.\n\nfile.flush()\n\n   Flush the internal buffer, like ``stdio``\'s ``fflush()``.  This may\n   be a no-op on some file-like objects.\n\n   Note: ``flush()`` does not necessarily write the file\'s data to disk.\n     Use ``flush()`` followed by ``os.fsync()`` to ensure this\n     behavior.\n\nfile.fileno()\n\n   Return the integer "file descriptor" that is used by the underlying\n   implementation to request I/O operations from the operating system.\n   This can be useful for other, lower level interfaces that use file\n   descriptors, such as the ``fcntl`` module or ``os.read()`` and\n   friends.\n\n   Note: File-like objects which do not have a real file descriptor should\n     *not* provide this method!\n\nfile.isatty()\n\n   Return ``True`` if the file is connected to a tty(-like) device,\n   else ``False``.\n\n   Note: If a file-like object is not associated with a real file, this\n     method should *not* be implemented.\n\nfile.next()\n\n   A file object is its own iterator, for example ``iter(f)`` returns\n   *f* (unless *f* is closed).  When a file is used as an iterator,\n   typically in a ``for`` loop (for example, ``for line in f: print\n   line``), the ``next()`` method is called repeatedly.  This method\n   returns the next input line, or raises ``StopIteration`` when EOF\n   is hit when the file is open for reading (behavior is undefined\n   when the file is open for writing).  In order to make a ``for``\n   loop the most efficient way of looping over the lines of a file (a\n   very common operation), the ``next()`` method uses a hidden read-\n   ahead buffer.  As a consequence of using a read-ahead buffer,\n   combining ``next()`` with other file methods (like ``readline()``)\n   does not work right.  However, using ``seek()`` to reposition the\n   file to an absolute position will flush the read-ahead buffer.\n\n   New in version 2.3.\n\nfile.read([size])\n\n   Read at most *size* bytes from the file (less if the read hits EOF\n   before obtaining *size* bytes).  If the *size* argument is negative\n   or omitted, read all data until EOF is reached.  The bytes are\n   returned as a string object.  An empty string is returned when EOF\n   is encountered immediately.  (For certain files, like ttys, it\n   makes sense to continue reading after an EOF is hit.)  Note that\n   this method may call the underlying C function ``fread()`` more\n   than once in an effort to acquire as close to *size* bytes as\n   possible. Also note that when in non-blocking mode, less data than\n   was requested may be returned, even if no *size* parameter was\n   given.\n\n   Note: This function is simply a wrapper for the underlying ``fread()``\n     C function, and will behave the same in corner cases, such as\n     whether the EOF value is cached.\n\nfile.readline([size])\n\n   Read one entire line from the file.  A trailing newline character\n   is kept in the string (but may be absent when a file ends with an\n   incomplete line). [5] If the *size* argument is present and non-\n   negative, it is a maximum byte count (including the trailing\n   newline) and an incomplete line may be returned. When *size* is not\n   0, an empty string is returned *only* when EOF is encountered\n   immediately.\n\n   Note: Unlike ``stdio``\'s ``fgets()``, the returned string contains null\n     characters (``\'\\0\'``) if they occurred in the input.\n\nfile.readlines([sizehint])\n\n   Read until EOF using ``readline()`` and return a list containing\n   the lines thus read.  If the optional *sizehint* argument is\n   present, instead of reading up to EOF, whole lines totalling\n   approximately *sizehint* bytes (possibly after rounding up to an\n   internal buffer size) are read.  Objects implementing a file-like\n   interface may choose to ignore *sizehint* if it cannot be\n   implemented, or cannot be implemented efficiently.\n\nfile.xreadlines()\n\n   This method returns the same thing as ``iter(f)``.\n\n   New in version 2.1.\n\n   Deprecated since version 2.3: Use ``for line in file`` instead.\n\nfile.seek(offset[, whence])\n\n   Set the file\'s current position, like ``stdio``\'s ``fseek()``. The\n   *whence* argument is optional and defaults to  ``os.SEEK_SET`` or\n   ``0`` (absolute file positioning); other values are ``os.SEEK_CUR``\n   or ``1`` (seek relative to the current position) and\n   ``os.SEEK_END`` or ``2``  (seek relative to the file\'s end).  There\n   is no return value.\n\n   For example, ``f.seek(2, os.SEEK_CUR)`` advances the position by\n   two and ``f.seek(-3, os.SEEK_END)`` sets the position to the third\n   to last.\n\n   Note that if the file is opened for appending (mode ``\'a\'`` or\n   ``\'a+\'``), any ``seek()`` operations will be undone at the next\n   write.  If the file is only opened for writing in append mode (mode\n   ``\'a\'``), this method is essentially a no-op, but it remains useful\n   for files opened in append mode with reading enabled (mode\n   ``\'a+\'``).  If the file is opened in text mode (without ``\'b\'``),\n   only offsets returned by ``tell()`` are legal.  Use of other\n   offsets causes undefined behavior.\n\n   Note that not all file objects are seekable.\n\n   Changed in version 2.6: Passing float values as offset has been\n   deprecated.\n\nfile.tell()\n\n   Return the file\'s current position, like ``stdio``\'s ``ftell()``.\n\n   Note: On Windows, ``tell()`` can return illegal values (after an\n     ``fgets()``) when reading files with Unix-style line-endings. Use\n     binary mode (``\'rb\'``) to circumvent this problem.\n\nfile.truncate([size])\n\n   Truncate the file\'s size.  If the optional *size* argument is\n   present, the file is truncated to (at most) that size.  The size\n   defaults to the current position. The current file position is not\n   changed.  Note that if a specified size exceeds the file\'s current\n   size, the result is platform-dependent:  possibilities include that\n   the file may remain unchanged, increase to the specified size as if\n   zero-filled, or increase to the specified size with undefined new\n   content. Availability:  Windows, many Unix variants.\n\nfile.write(str)\n\n   Write a string to the file.  There is no return value.  Due to\n   buffering, the string may not actually show up in the file until\n   the ``flush()`` or ``close()`` method is called.\n\nfile.writelines(sequence)\n\n   Write a sequence of strings to the file.  The sequence can be any\n   iterable object producing strings, typically a list of strings.\n   There is no return value. (The name is intended to match\n   ``readlines()``; ``writelines()`` does not add line separators.)\n\nFiles support the iterator protocol.  Each iteration returns the same\nresult as ``file.readline()``, and iteration ends when the\n``readline()`` method returns an empty string.\n\nFile objects also offer a number of other interesting attributes.\nThese are not required for file-like objects, but should be\nimplemented if they make sense for the particular object.\n\nfile.closed\n\n   bool indicating the current state of the file object.  This is a\n   read-only attribute; the ``close()`` method changes the value. It\n   may not be available on all file-like objects.\n\nfile.encoding\n\n   The encoding that this file uses. When Unicode strings are written\n   to a file, they will be converted to byte strings using this\n   encoding. In addition, when the file is connected to a terminal,\n   the attribute gives the encoding that the terminal is likely to use\n   (that  information might be incorrect if the user has misconfigured\n   the  terminal). The attribute is read-only and may not be present\n   on all file-like objects. It may also be ``None``, in which case\n   the file uses the system default encoding for converting Unicode\n   strings.\n\n   New in version 2.3.\n\nfile.errors\n\n   The Unicode error handler used along with the encoding.\n\n   New in version 2.6.\n\nfile.mode\n\n   The I/O mode for the file.  If the file was created using the\n   ``open()`` built-in function, this will be the value of the *mode*\n   parameter.  This is a read-only attribute and may not be present on\n   all file-like objects.\n\nfile.name\n\n   If the file object was created using ``open()``, the name of the\n   file. Otherwise, some string that indicates the source of the file\n   object, of the form ``<...>``.  This is a read-only attribute and\n   may not be present on all file-like objects.\n\nfile.newlines\n\n   If Python was built with universal newlines enabled (the default)\n   this read-only attribute exists, and for files opened in universal\n   newline read mode it keeps track of the types of newlines\n   encountered while reading the file. The values it can take are\n   ``\'\\r\'``, ``\'\\n\'``, ``\'\\r\\n\'``, ``None`` (unknown, no newlines read\n   yet) or a tuple containing all the newline types seen, to indicate\n   that multiple newline conventions were encountered. For files not\n   opened in universal newline read mode the value of this attribute\n   will be ``None``.\n\nfile.softspace\n\n   Boolean that indicates whether a space character needs to be\n   printed before another value when using the ``print`` statement.\n   Classes that are trying to simulate a file object should also have\n   a writable ``softspace`` attribute, which should be initialized to\n   zero.  This will be automatic for most classes implemented in\n   Python (care may be needed for objects that override attribute\n   access); types implemented in C will have to provide a writable\n   ``softspace`` attribute.\n\n   Note: This attribute is not used to control the ``print`` statement,\n     but to allow the implementation of ``print`` to keep track of its\n     internal state.\n',
- 'bltin-null-object': u"\nThe Null Object\n***************\n\nThis object is returned by functions that don't explicitly return a\nvalue.  It supports no special operations.  There is exactly one null\nobject, named ``None`` (a built-in name).\n\nIt is written as ``None``.\n",
- 'bltin-type-objects': u"\nType Objects\n************\n\nType objects represent the various object types.  An object's type is\naccessed by the built-in function ``type()``.  There are no special\noperations on types.  The standard module ``types`` defines names for\nall standard built-in types.\n\nTypes are written like this: ``<type 'int'>``.\n",
- 'booleans': u'\nBoolean operations\n******************\n\n   or_test  ::= and_test | or_test "or" and_test\n   and_test ::= not_test | and_test "and" not_test\n   not_test ::= comparison | "not" not_test\n\nIn the context of Boolean operations, and also when expressions are\nused by control flow statements, the following values are interpreted\nas false: ``False``, ``None``, numeric zero of all types, and empty\nstrings and containers (including strings, tuples, lists,\ndictionaries, sets and frozensets).  All other values are interpreted\nas true.  (See the ``__nonzero__()`` special method for a way to\nchange this.)\n\nThe operator ``not`` yields ``True`` if its argument is false,\n``False`` otherwise.\n\nThe expression ``x and y`` first evaluates *x*; if *x* is false, its\nvalue is returned; otherwise, *y* is evaluated and the resulting value\nis returned.\n\nThe expression ``x or y`` first evaluates *x*; if *x* is true, its\nvalue is returned; otherwise, *y* is evaluated and the resulting value\nis returned.\n\n(Note that neither ``and`` nor ``or`` restrict the value and type they\nreturn to ``False`` and ``True``, but rather return the last evaluated\nargument. This is sometimes useful, e.g., if ``s`` is a string that\nshould be replaced by a default value if it is empty, the expression\n``s or \'foo\'`` yields the desired value.  Because ``not`` has to\ninvent a value anyway, it does not bother to return a value of the\nsame type as its argument, so e.g., ``not \'foo\'`` yields ``False``,\nnot ``\'\'``.)\n',
- 'break': u'\nThe ``break`` statement\n***********************\n\n   break_stmt ::= "break"\n\n``break`` may only occur syntactically nested in a ``for`` or\n``while`` loop, but not nested in a function or class definition\nwithin that loop.\n\nIt terminates the nearest enclosing loop, skipping the optional\n``else`` clause if the loop has one.\n\nIf a ``for`` loop is terminated by ``break``, the loop control target\nkeeps its current value.\n\nWhen ``break`` passes control out of a ``try`` statement with a\n``finally`` clause, that ``finally`` clause is executed before really\nleaving the loop.\n',
- 'callable-types': u'\nEmulating callable objects\n**************************\n\nobject.__call__(self[, args...])\n\n   Called when the instance is "called" as a function; if this method\n   is defined, ``x(arg1, arg2, ...)`` is a shorthand for\n   ``x.__call__(arg1, arg2, ...)``.\n',
- 'calls': u'\nCalls\n*****\n\nA call calls a callable object (e.g., a function) with a possibly\nempty series of arguments:\n\n   call                 ::= primary "(" [argument_list [","]\n            | expression genexpr_for] ")"\n   argument_list        ::= positional_arguments ["," keyword_arguments]\n                       ["," "*" expression] ["," keyword_arguments]\n                       ["," "**" expression]\n                     | keyword_arguments ["," "*" expression]\n                       ["," "**" expression]\n                     | "*" expression ["," "*" expression] ["," "**" expression]\n                     | "**" expression\n   positional_arguments ::= expression ("," expression)*\n   keyword_arguments    ::= keyword_item ("," keyword_item)*\n   keyword_item         ::= identifier "=" expression\n\nA trailing comma may be present after the positional and keyword\narguments but does not affect the semantics.\n\nThe primary must evaluate to a callable object (user-defined\nfunctions, built-in functions, methods of built-in objects, class\nobjects, methods of class instances, and certain class instances\nthemselves are callable; extensions may define additional callable\nobject types).  All argument expressions are evaluated before the call\nis attempted.  Please refer to section *Function definitions* for the\nsyntax of formal parameter lists.\n\nIf keyword arguments are present, they are first converted to\npositional arguments, as follows.  First, a list of unfilled slots is\ncreated for the formal parameters.  If there are N positional\narguments, they are placed in the first N slots.  Next, for each\nkeyword argument, the identifier is used to determine the\ncorresponding slot (if the identifier is the same as the first formal\nparameter name, the first slot is used, and so on).  If the slot is\nalready filled, a ``TypeError`` exception is raised. Otherwise, the\nvalue of the argument is placed in the slot, filling it (even if the\nexpression is ``None``, it fills the slot).  When all arguments have\nbeen processed, the slots that are still unfilled are filled with the\ncorresponding default value from the function definition.  (Default\nvalues are calculated, once, when the function is defined; thus, a\nmutable object such as a list or dictionary used as default value will\nbe shared by all calls that don\'t specify an argument value for the\ncorresponding slot; this should usually be avoided.)  If there are any\nunfilled slots for which no default value is specified, a\n``TypeError`` exception is raised.  Otherwise, the list of filled\nslots is used as the argument list for the call.\n\n**CPython implementation detail:** An implementation may provide\nbuilt-in functions whose positional parameters do not have names, even\nif they are \'named\' for the purpose of documentation, and which\ntherefore cannot be supplied by keyword.  In CPython, this is the case\nfor functions implemented in C that use ``PyArg_ParseTuple()`` to\nparse their arguments.\n\nIf there are more positional arguments than there are formal parameter\nslots, a ``TypeError`` exception is raised, unless a formal parameter\nusing the syntax ``*identifier`` is present; in this case, that formal\nparameter receives a tuple containing the excess positional arguments\n(or an empty tuple if there were no excess positional arguments).\n\nIf any keyword argument does not correspond to a formal parameter\nname, a ``TypeError`` exception is raised, unless a formal parameter\nusing the syntax ``**identifier`` is present; in this case, that\nformal parameter receives a dictionary containing the excess keyword\narguments (using the keywords as keys and the argument values as\ncorresponding values), or a (new) empty dictionary if there were no\nexcess keyword arguments.\n\nIf the syntax ``*expression`` appears in the function call,\n``expression`` must evaluate to a sequence.  Elements from this\nsequence are treated as if they were additional positional arguments;\nif there are positional arguments *x1*,..., *xN*, and ``expression``\nevaluates to a sequence *y1*, ..., *yM*, this is equivalent to a call\nwith M+N positional arguments *x1*, ..., *xN*, *y1*, ..., *yM*.\n\nA consequence of this is that although the ``*expression`` syntax may\nappear *after* some keyword arguments, it is processed *before* the\nkeyword arguments (and the ``**expression`` argument, if any -- see\nbelow).  So:\n\n   >>> def f(a, b):\n   ...  print a, b\n   ...\n   >>> f(b=1, *(2,))\n   2 1\n   >>> f(a=1, *(2,))\n   Traceback (most recent call last):\n     File "<stdin>", line 1, in ?\n   TypeError: f() got multiple values for keyword argument \'a\'\n   >>> f(1, *(2,))\n   1 2\n\nIt is unusual for both keyword arguments and the ``*expression``\nsyntax to be used in the same call, so in practice this confusion does\nnot arise.\n\nIf the syntax ``**expression`` appears in the function call,\n``expression`` must evaluate to a mapping, the contents of which are\ntreated as additional keyword arguments.  In the case of a keyword\nappearing in both ``expression`` and as an explicit keyword argument,\na ``TypeError`` exception is raised.\n\nFormal parameters using the syntax ``*identifier`` or ``**identifier``\ncannot be used as positional argument slots or as keyword argument\nnames.  Formal parameters using the syntax ``(sublist)`` cannot be\nused as keyword argument names; the outermost sublist corresponds to a\nsingle unnamed argument slot, and the argument value is assigned to\nthe sublist using the usual tuple assignment rules after all other\nparameter processing is done.\n\nA call always returns some value, possibly ``None``, unless it raises\nan exception.  How this value is computed depends on the type of the\ncallable object.\n\nIf it is---\n\na user-defined function:\n   The code block for the function is executed, passing it the\n   argument list.  The first thing the code block will do is bind the\n   formal parameters to the arguments; this is described in section\n   *Function definitions*.  When the code block executes a ``return``\n   statement, this specifies the return value of the function call.\n\na built-in function or method:\n   The result is up to the interpreter; see *Built-in Functions* for\n   the descriptions of built-in functions and methods.\n\na class object:\n   A new instance of that class is returned.\n\na class instance method:\n   The corresponding user-defined function is called, with an argument\n   list that is one longer than the argument list of the call: the\n   instance becomes the first argument.\n\na class instance:\n   The class must define a ``__call__()`` method; the effect is then\n   the same as if that method was called.\n',
- 'class': u'\nClass definitions\n*****************\n\nA class definition defines a class object (see section *The standard\ntype hierarchy*):\n\n   classdef    ::= "class" classname [inheritance] ":" suite\n   inheritance ::= "(" [expression_list] ")"\n   classname   ::= identifier\n\nA class definition is an executable statement.  It first evaluates the\ninheritance list, if present.  Each item in the inheritance list\nshould evaluate to a class object or class type which allows\nsubclassing.  The class\'s suite is then executed in a new execution\nframe (see section *Naming and binding*), using a newly created local\nnamespace and the original global namespace. (Usually, the suite\ncontains only function definitions.)  When the class\'s suite finishes\nexecution, its execution frame is discarded but its local namespace is\nsaved. [4] A class object is then created using the inheritance list\nfor the base classes and the saved local namespace for the attribute\ndictionary.  The class name is bound to this class object in the\noriginal local namespace.\n\n**Programmer\'s note:** Variables defined in the class definition are\nclass variables; they are shared by all instances.  To create instance\nvariables, they can be set in a method with ``self.name = value``.\nBoth class and instance variables are accessible through the notation\n"``self.name``", and an instance variable hides a class variable with\nthe same name when accessed in this way. Class variables can be used\nas defaults for instance variables, but using mutable values there can\nlead to unexpected results.  For *new-style class*es, descriptors can\nbe used to create instance variables with different implementation\ndetails.\n\nClass definitions, like function definitions, may be wrapped by one or\nmore *decorator* expressions.  The evaluation rules for the decorator\nexpressions are the same as for functions.  The result must be a class\nobject, which is then bound to the class name.\n\n-[ Footnotes ]-\n\n[1] The exception is propagated to the invocation stack only if there\n    is no ``finally`` clause that negates the exception.\n\n[2] Currently, control "flows off the end" except in the case of an\n    exception or the execution of a ``return``, ``continue``, or\n    ``break`` statement.\n\n[3] A string literal appearing as the first statement in the function\n    body is transformed into the function\'s ``__doc__`` attribute and\n    therefore the function\'s *docstring*.\n\n[4] A string literal appearing as the first statement in the class\n    body is transformed into the namespace\'s ``__doc__`` item and\n    therefore the class\'s *docstring*.\n',
- 'coercion-rules': u"\nCoercion rules\n**************\n\nThis section used to document the rules for coercion.  As the language\nhas evolved, the coercion rules have become hard to document\nprecisely; documenting what one version of one particular\nimplementation does is undesirable.  Instead, here are some informal\nguidelines regarding coercion.  In Python 3.0, coercion will not be\nsupported.\n\n* If the left operand of a % operator is a string or Unicode object,\n  no coercion takes place and the string formatting operation is\n  invoked instead.\n\n* It is no longer recommended to define a coercion operation. Mixed-\n  mode operations on types that don't define coercion pass the\n  original arguments to the operation.\n\n* New-style classes (those derived from ``object``) never invoke the\n  ``__coerce__()`` method in response to a binary operator; the only\n  time ``__coerce__()`` is invoked is when the built-in function\n  ``coerce()`` is called.\n\n* For most intents and purposes, an operator that returns\n  ``NotImplemented`` is treated the same as one that is not\n  implemented at all.\n\n* Below, ``__op__()`` and ``__rop__()`` are used to signify the\n  generic method names corresponding to an operator; ``__iop__()`` is\n  used for the corresponding in-place operator.  For example, for the\n  operator '``+``', ``__add__()`` and ``__radd__()`` are used for the\n  left and right variant of the binary operator, and ``__iadd__()``\n  for the in-place variant.\n\n* For objects *x* and *y*, first ``x.__op__(y)`` is tried.  If this is\n  not implemented or returns ``NotImplemented``, ``y.__rop__(x)`` is\n  tried.  If this is also not implemented or returns\n  ``NotImplemented``, a ``TypeError`` exception is raised.  But see\n  the following exception:\n\n* Exception to the previous item: if the left operand is an instance\n  of a built-in type or a new-style class, and the right operand is an\n  instance of a proper subclass of that type or class and overrides\n  the base's ``__rop__()`` method, the right operand's ``__rop__()``\n  method is tried *before* the left operand's ``__op__()`` method.\n\n  This is done so that a subclass can completely override binary\n  operators. Otherwise, the left operand's ``__op__()`` method would\n  always accept the right operand: when an instance of a given class\n  is expected, an instance of a subclass of that class is always\n  acceptable.\n\n* When either operand type defines a coercion, this coercion is called\n  before that type's ``__op__()`` or ``__rop__()`` method is called,\n  but no sooner.  If the coercion returns an object of a different\n  type for the operand whose coercion is invoked, part of the process\n  is redone using the new object.\n\n* When an in-place operator (like '``+=``') is used, if the left\n  operand implements ``__iop__()``, it is invoked without any\n  coercion.  When the operation falls back to ``__op__()`` and/or\n  ``__rop__()``, the normal coercion rules apply.\n\n* In ``x + y``, if *x* is a sequence that implements sequence\n  concatenation, sequence concatenation is invoked.\n\n* In ``x * y``, if one operator is a sequence that implements sequence\n  repetition, and the other is an integer (``int`` or ``long``),\n  sequence repetition is invoked.\n\n* Rich comparisons (implemented by methods ``__eq__()`` and so on)\n  never use coercion.  Three-way comparison (implemented by\n  ``__cmp__()``) does use coercion under the same conditions as other\n  binary operations use it.\n\n* In the current implementation, the built-in numeric types ``int``,\n  ``long``, ``float``, and ``complex`` do not use coercion. All these\n  types implement a ``__coerce__()`` method, for use by the built-in\n  ``coerce()`` function.\n\n  Changed in version 2.7.\n",
- 'comparisons': u'\nComparisons\n***********\n\nUnlike C, all comparison operations in Python have the same priority,\nwhich is lower than that of any arithmetic, shifting or bitwise\noperation.  Also unlike C, expressions like ``a < b < c`` have the\ninterpretation that is conventional in mathematics:\n\n   comparison    ::= or_expr ( comp_operator or_expr )*\n   comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "<>" | "!="\n                     | "is" ["not"] | ["not"] "in"\n\nComparisons yield boolean values: ``True`` or ``False``.\n\nComparisons can be chained arbitrarily, e.g., ``x < y <= z`` is\nequivalent to ``x < y and y <= z``, except that ``y`` is evaluated\nonly once (but in both cases ``z`` is not evaluated at all when ``x <\ny`` is found to be false).\n\nFormally, if *a*, *b*, *c*, ..., *y*, *z* are expressions and *op1*,\n*op2*, ..., *opN* are comparison operators, then ``a op1 b op2 c ... y\nopN z`` is equivalent to ``a op1 b and b op2 c and ... y opN z``,\nexcept that each expression is evaluated at most once.\n\nNote that ``a op1 b op2 c`` doesn\'t imply any kind of comparison\nbetween *a* and *c*, so that, e.g., ``x < y > z`` is perfectly legal\n(though perhaps not pretty).\n\nThe forms ``<>`` and ``!=`` are equivalent; for consistency with C,\n``!=`` is preferred; where ``!=`` is mentioned below ``<>`` is also\naccepted.  The ``<>`` spelling is considered obsolescent.\n\nThe operators ``<``, ``>``, ``==``, ``>=``, ``<=``, and ``!=`` compare\nthe values of two objects.  The objects need not have the same type.\nIf both are numbers, they are converted to a common type.  Otherwise,\nobjects of different types *always* compare unequal, and are ordered\nconsistently but arbitrarily. You can control comparison behavior of\nobjects of non-built-in types by defining a ``__cmp__`` method or rich\ncomparison methods like ``__gt__``, described in section *Special\nmethod names*.\n\n(This unusual definition of comparison was used to simplify the\ndefinition of operations like sorting and the ``in`` and ``not in``\noperators. In the future, the comparison rules for objects of\ndifferent types are likely to change.)\n\nComparison of objects of the same type depends on the type:\n\n* Numbers are compared arithmetically.\n\n* Strings are compared lexicographically using the numeric equivalents\n  (the result of the built-in function ``ord()``) of their characters.\n  Unicode and 8-bit strings are fully interoperable in this behavior.\n  [4]\n\n* Tuples and lists are compared lexicographically using comparison of\n  corresponding elements.  This means that to compare equal, each\n  element must compare equal and the two sequences must be of the same\n  type and have the same length.\n\n  If not equal, the sequences are ordered the same as their first\n  differing elements.  For example, ``cmp([1,2,x], [1,2,y])`` returns\n  the same as ``cmp(x,y)``.  If the corresponding element does not\n  exist, the shorter sequence is ordered first (for example, ``[1,2] <\n  [1,2,3]``).\n\n* Mappings (dictionaries) compare equal if and only if their sorted\n  (key, value) lists compare equal. [5] Outcomes other than equality\n  are resolved consistently, but are not otherwise defined. [6]\n\n* Most other objects of built-in types compare unequal unless they are\n  the same object; the choice whether one object is considered smaller\n  or larger than another one is made arbitrarily but consistently\n  within one execution of a program.\n\nThe operators ``in`` and ``not in`` test for collection membership.\n``x in s`` evaluates to true if *x* is a member of the collection *s*,\nand false otherwise.  ``x not in s`` returns the negation of ``x in\ns``. The collection membership test has traditionally been bound to\nsequences; an object is a member of a collection if the collection is\na sequence and contains an element equal to that object.  However, it\nmake sense for many other object types to support membership tests\nwithout being a sequence.  In particular, dictionaries (for keys) and\nsets support membership testing.\n\nFor the list and tuple types, ``x in y`` is true if and only if there\nexists an index *i* such that ``x == y[i]`` is true.\n\nFor the Unicode and string types, ``x in y`` is true if and only if\n*x* is a substring of *y*.  An equivalent test is ``y.find(x) != -1``.\nNote, *x* and *y* need not be the same type; consequently, ``u\'ab\' in\n\'abc\'`` will return ``True``. Empty strings are always considered to\nbe a substring of any other string, so ``"" in "abc"`` will return\n``True``.\n\nChanged in version 2.3: Previously, *x* was required to be a string of\nlength ``1``.\n\nFor user-defined classes which define the ``__contains__()`` method,\n``x in y`` is true if and only if ``y.__contains__(x)`` is true.\n\nFor user-defined classes which do not define ``__contains__()`` but do\ndefine ``__iter__()``, ``x in y`` is true if some value ``z`` with ``x\n== z`` is produced while iterating over ``y``.  If an exception is\nraised during the iteration, it is as if ``in`` raised that exception.\n\nLastly, the old-style iteration protocol is tried: if a class defines\n``__getitem__()``, ``x in y`` is true if and only if there is a non-\nnegative integer index *i* such that ``x == y[i]``, and all lower\ninteger indices do not raise ``IndexError`` exception. (If any other\nexception is raised, it is as if ``in`` raised that exception).\n\nThe operator ``not in`` is defined to have the inverse true value of\n``in``.\n\nThe operators ``is`` and ``is not`` test for object identity: ``x is\ny`` is true if and only if *x* and *y* are the same object.  ``x is\nnot y`` yields the inverse truth value. [7]\n',
- 'compound': u'\nCompound statements\n*******************\n\nCompound statements contain (groups of) other statements; they affect\nor control the execution of those other statements in some way.  In\ngeneral, compound statements span multiple lines, although in simple\nincarnations a whole compound statement may be contained in one line.\n\nThe ``if``, ``while`` and ``for`` statements implement traditional\ncontrol flow constructs.  ``try`` specifies exception handlers and/or\ncleanup code for a group of statements.  Function and class\ndefinitions are also syntactically compound statements.\n\nCompound statements consist of one or more \'clauses.\'  A clause\nconsists of a header and a \'suite.\'  The clause headers of a\nparticular compound statement are all at the same indentation level.\nEach clause header begins with a uniquely identifying keyword and ends\nwith a colon.  A suite is a group of statements controlled by a\nclause.  A suite can be one or more semicolon-separated simple\nstatements on the same line as the header, following the header\'s\ncolon, or it can be one or more indented statements on subsequent\nlines.  Only the latter form of suite can contain nested compound\nstatements; the following is illegal, mostly because it wouldn\'t be\nclear to which ``if`` clause a following ``else`` clause would belong:\n\n   if test1: if test2: print x\n\nAlso note that the semicolon binds tighter than the colon in this\ncontext, so that in the following example, either all or none of the\n``print`` statements are executed:\n\n   if x < y < z: print x; print y; print z\n\nSummarizing:\n\n   compound_stmt ::= if_stmt\n                     | while_stmt\n                     | for_stmt\n                     | try_stmt\n                     | with_stmt\n                     | funcdef\n                     | classdef\n                     | decorated\n   suite         ::= stmt_list NEWLINE | NEWLINE INDENT statement+ DEDENT\n   statement     ::= stmt_list NEWLINE | compound_stmt\n   stmt_list     ::= simple_stmt (";" simple_stmt)* [";"]\n\nNote that statements always end in a ``NEWLINE`` possibly followed by\na ``DEDENT``. Also note that optional continuation clauses always\nbegin with a keyword that cannot start a statement, thus there are no\nambiguities (the \'dangling ``else``\' problem is solved in Python by\nrequiring nested ``if`` statements to be indented).\n\nThe formatting of the grammar rules in the following sections places\neach clause on a separate line for clarity.\n\n\nThe ``if`` statement\n====================\n\nThe ``if`` statement is used for conditional execution:\n\n   if_stmt ::= "if" expression ":" suite\n               ( "elif" expression ":" suite )*\n               ["else" ":" suite]\n\nIt selects exactly one of the suites by evaluating the expressions one\nby one until one is found to be true (see section *Boolean operations*\nfor the definition of true and false); then that suite is executed\n(and no other part of the ``if`` statement is executed or evaluated).\nIf all expressions are false, the suite of the ``else`` clause, if\npresent, is executed.\n\n\nThe ``while`` statement\n=======================\n\nThe ``while`` statement is used for repeated execution as long as an\nexpression is true:\n\n   while_stmt ::= "while" expression ":" suite\n                  ["else" ":" suite]\n\nThis repeatedly tests the expression and, if it is true, executes the\nfirst suite; if the expression is false (which may be the first time\nit is tested) the suite of the ``else`` clause, if present, is\nexecuted and the loop terminates.\n\nA ``break`` statement executed in the first suite terminates the loop\nwithout executing the ``else`` clause\'s suite.  A ``continue``\nstatement executed in the first suite skips the rest of the suite and\ngoes back to testing the expression.\n\n\nThe ``for`` statement\n=====================\n\nThe ``for`` statement is used to iterate over the elements of a\nsequence (such as a string, tuple or list) or other iterable object:\n\n   for_stmt ::= "for" target_list "in" expression_list ":" suite\n                ["else" ":" suite]\n\nThe expression list is evaluated once; it should yield an iterable\nobject.  An iterator is created for the result of the\n``expression_list``.  The suite is then executed once for each item\nprovided by the iterator, in the order of ascending indices.  Each\nitem in turn is assigned to the target list using the standard rules\nfor assignments, and then the suite is executed.  When the items are\nexhausted (which is immediately when the sequence is empty), the suite\nin the ``else`` clause, if present, is executed, and the loop\nterminates.\n\nA ``break`` statement executed in the first suite terminates the loop\nwithout executing the ``else`` clause\'s suite.  A ``continue``\nstatement executed in the first suite skips the rest of the suite and\ncontinues with the next item, or with the ``else`` clause if there was\nno next item.\n\nThe suite may assign to the variable(s) in the target list; this does\nnot affect the next item assigned to it.\n\nThe target list is not deleted when the loop is finished, but if the\nsequence is empty, it will not have been assigned to at all by the\nloop.  Hint: the built-in function ``range()`` returns a sequence of\nintegers suitable to emulate the effect of Pascal\'s ``for i := a to b\ndo``; e.g., ``range(3)`` returns the list ``[0, 1, 2]``.\n\nNote: There is a subtlety when the sequence is being modified by the loop\n  (this can only occur for mutable sequences, i.e. lists). An internal\n  counter is used to keep track of which item is used next, and this\n  is incremented on each iteration.  When this counter has reached the\n  length of the sequence the loop terminates.  This means that if the\n  suite deletes the current (or a previous) item from the sequence,\n  the next item will be skipped (since it gets the index of the\n  current item which has already been treated).  Likewise, if the\n  suite inserts an item in the sequence before the current item, the\n  current item will be treated again the next time through the loop.\n  This can lead to nasty bugs that can be avoided by making a\n  temporary copy using a slice of the whole sequence, e.g.,\n\n     for x in a[:]:\n         if x < 0: a.remove(x)\n\n\nThe ``try`` statement\n=====================\n\nThe ``try`` statement specifies exception handlers and/or cleanup code\nfor a group of statements:\n\n   try_stmt  ::= try1_stmt | try2_stmt\n   try1_stmt ::= "try" ":" suite\n                 ("except" [expression [("as" | ",") target]] ":" suite)+\n                 ["else" ":" suite]\n                 ["finally" ":" suite]\n   try2_stmt ::= "try" ":" suite\n                 "finally" ":" suite\n\nChanged in version 2.5: In previous versions of Python,\n``try``...``except``...``finally`` did not work. ``try``...``except``\nhad to be nested in ``try``...``finally``.\n\nThe ``except`` clause(s) specify one or more exception handlers. When\nno exception occurs in the ``try`` clause, no exception handler is\nexecuted. When an exception occurs in the ``try`` suite, a search for\nan exception handler is started.  This search inspects the except\nclauses in turn until one is found that matches the exception.  An\nexpression-less except clause, if present, must be last; it matches\nany exception.  For an except clause with an expression, that\nexpression is evaluated, and the clause matches the exception if the\nresulting object is "compatible" with the exception.  An object is\ncompatible with an exception if it is the class or a base class of the\nexception object, a tuple containing an item compatible with the\nexception, or, in the (deprecated) case of string exceptions, is the\nraised string itself (note that the object identities must match, i.e.\nit must be the same string object, not just a string with the same\nvalue).\n\nIf no except clause matches the exception, the search for an exception\nhandler continues in the surrounding code and on the invocation stack.\n[1]\n\nIf the evaluation of an expression in the header of an except clause\nraises an exception, the original search for a handler is canceled and\na search starts for the new exception in the surrounding code and on\nthe call stack (it is treated as if the entire ``try`` statement\nraised the exception).\n\nWhen a matching except clause is found, the exception is assigned to\nthe target specified in that except clause, if present, and the except\nclause\'s suite is executed.  All except clauses must have an\nexecutable block.  When the end of this block is reached, execution\ncontinues normally after the entire try statement.  (This means that\nif two nested handlers exist for the same exception, and the exception\noccurs in the try clause of the inner handler, the outer handler will\nnot handle the exception.)\n\nBefore an except clause\'s suite is executed, details about the\nexception are assigned to three variables in the ``sys`` module:\n``sys.exc_type`` receives the object identifying the exception;\n``sys.exc_value`` receives the exception\'s parameter;\n``sys.exc_traceback`` receives a traceback object (see section *The\nstandard type hierarchy*) identifying the point in the program where\nthe exception occurred. These details are also available through the\n``sys.exc_info()`` function, which returns a tuple ``(exc_type,\nexc_value, exc_traceback)``.  Use of the corresponding variables is\ndeprecated in favor of this function, since their use is unsafe in a\nthreaded program.  As of Python 1.5, the variables are restored to\ntheir previous values (before the call) when returning from a function\nthat handled an exception.\n\nThe optional ``else`` clause is executed if and when control flows off\nthe end of the ``try`` clause. [2] Exceptions in the ``else`` clause\nare not handled by the preceding ``except`` clauses.\n\nIf ``finally`` is present, it specifies a \'cleanup\' handler.  The\n``try`` clause is executed, including any ``except`` and ``else``\nclauses.  If an exception occurs in any of the clauses and is not\nhandled, the exception is temporarily saved. The ``finally`` clause is\nexecuted.  If there is a saved exception, it is re-raised at the end\nof the ``finally`` clause. If the ``finally`` clause raises another\nexception or executes a ``return`` or ``break`` statement, the saved\nexception is lost.  The exception information is not available to the\nprogram during execution of the ``finally`` clause.\n\nWhen a ``return``, ``break`` or ``continue`` statement is executed in\nthe ``try`` suite of a ``try``...``finally`` statement, the\n``finally`` clause is also executed \'on the way out.\' A ``continue``\nstatement is illegal in the ``finally`` clause. (The reason is a\nproblem with the current implementation --- this restriction may be\nlifted in the future).\n\nAdditional information on exceptions can be found in section\n*Exceptions*, and information on using the ``raise`` statement to\ngenerate exceptions may be found in section *The raise statement*.\n\n\nThe ``with`` statement\n======================\n\nNew in version 2.5.\n\nThe ``with`` statement is used to wrap the execution of a block with\nmethods defined by a context manager (see section *With Statement\nContext Managers*). This allows common\n``try``...``except``...``finally`` usage patterns to be encapsulated\nfor convenient reuse.\n\n   with_stmt ::= "with" with_item ("," with_item)* ":" suite\n   with_item ::= expression ["as" target]\n\nThe execution of the ``with`` statement with one "item" proceeds as\nfollows:\n\n1. The context expression (the expression given in the **with_item**)\n   is evaluated to obtain a context manager.\n\n2. The context manager\'s ``__exit__()`` is loaded for later use.\n\n3. The context manager\'s ``__enter__()`` method is invoked.\n\n4. If a target was included in the ``with`` statement, the return\n   value from ``__enter__()`` is assigned to it.\n\n   Note: The ``with`` statement guarantees that if the ``__enter__()``\n     method returns without an error, then ``__exit__()`` will always\n     be called. Thus, if an error occurs during the assignment to the\n     target list, it will be treated the same as an error occurring\n     within the suite would be. See step 6 below.\n\n5. The suite is executed.\n\n6. The context manager\'s ``__exit__()`` method is invoked. If an\n   exception caused the suite to be exited, its type, value, and\n   traceback are passed as arguments to ``__exit__()``. Otherwise,\n   three ``None`` arguments are supplied.\n\n   If the suite was exited due to an exception, and the return value\n   from the ``__exit__()`` method was false, the exception is\n   reraised. If the return value was true, the exception is\n   suppressed, and execution continues with the statement following\n   the ``with`` statement.\n\n   If the suite was exited for any reason other than an exception, the\n   return value from ``__exit__()`` is ignored, and execution proceeds\n   at the normal location for the kind of exit that was taken.\n\nWith more than one item, the context managers are processed as if\nmultiple ``with`` statements were nested:\n\n   with A() as a, B() as b:\n       suite\n\nis equivalent to\n\n   with A() as a:\n       with B() as b:\n           suite\n\nNote: In Python 2.5, the ``with`` statement is only allowed when the\n  ``with_statement`` feature has been enabled.  It is always enabled\n  in Python 2.6.\n\nChanged in version 2.7: Support for multiple context expressions.\n\nSee also:\n\n   **PEP 0343** - The "with" statement\n      The specification, background, and examples for the Python\n      ``with`` statement.\n\n\nFunction definitions\n====================\n\nA function definition defines a user-defined function object (see\nsection *The standard type hierarchy*):\n\n   decorated      ::= decorators (classdef | funcdef)\n   decorators     ::= decorator+\n   decorator      ::= "@" dotted_name ["(" [argument_list [","]] ")"] NEWLINE\n   funcdef        ::= "def" funcname "(" [parameter_list] ")" ":" suite\n   dotted_name    ::= identifier ("." identifier)*\n   parameter_list ::= (defparameter ",")*\n                      (  "*" identifier [, "**" identifier]\n                      | "**" identifier\n                      | defparameter [","] )\n   defparameter   ::= parameter ["=" expression]\n   sublist        ::= parameter ("," parameter)* [","]\n   parameter      ::= identifier | "(" sublist ")"\n   funcname       ::= identifier\n\nA function definition is an executable statement.  Its execution binds\nthe function name in the current local namespace to a function object\n(a wrapper around the executable code for the function).  This\nfunction object contains a reference to the current global namespace\nas the global namespace to be used when the function is called.\n\nThe function definition does not execute the function body; this gets\nexecuted only when the function is called. [3]\n\nA function definition may be wrapped by one or more *decorator*\nexpressions. Decorator expressions are evaluated when the function is\ndefined, in the scope that contains the function definition.  The\nresult must be a callable, which is invoked with the function object\nas the only argument. The returned value is bound to the function name\ninstead of the function object.  Multiple decorators are applied in\nnested fashion. For example, the following code:\n\n   @f1(arg)\n   @f2\n   def func(): pass\n\nis equivalent to:\n\n   def func(): pass\n   func = f1(arg)(f2(func))\n\nWhen one or more top-level parameters have the form *parameter* ``=``\n*expression*, the function is said to have "default parameter values."\nFor a parameter with a default value, the corresponding argument may\nbe omitted from a call, in which case the parameter\'s default value is\nsubstituted.  If a parameter has a default value, all following\nparameters must also have a default value --- this is a syntactic\nrestriction that is not expressed by the grammar.\n\n**Default parameter values are evaluated when the function definition\nis executed.**  This means that the expression is evaluated once, when\nthe function is defined, and that that same "pre-computed" value is\nused for each call.  This is especially important to understand when a\ndefault parameter is a mutable object, such as a list or a dictionary:\nif the function modifies the object (e.g. by appending an item to a\nlist), the default value is in effect modified. This is generally not\nwhat was intended.  A way around this  is to use ``None`` as the\ndefault, and explicitly test for it in the body of the function, e.g.:\n\n   def whats_on_the_telly(penguin=None):\n       if penguin is None:\n           penguin = []\n       penguin.append("property of the zoo")\n       return penguin\n\nFunction call semantics are described in more detail in section\n*Calls*. A function call always assigns values to all parameters\nmentioned in the parameter list, either from position arguments, from\nkeyword arguments, or from default values.  If the form\n"``*identifier``" is present, it is initialized to a tuple receiving\nany excess positional parameters, defaulting to the empty tuple.  If\nthe form "``**identifier``" is present, it is initialized to a new\ndictionary receiving any excess keyword arguments, defaulting to a new\nempty dictionary.\n\nIt is also possible to create anonymous functions (functions not bound\nto a name), for immediate use in expressions.  This uses lambda forms,\ndescribed in section *Lambdas*.  Note that the lambda form is merely a\nshorthand for a simplified function definition; a function defined in\na "``def``" statement can be passed around or assigned to another name\njust like a function defined by a lambda form.  The "``def``" form is\nactually more powerful since it allows the execution of multiple\nstatements.\n\n**Programmer\'s note:** Functions are first-class objects.  A "``def``"\nform executed inside a function definition defines a local function\nthat can be returned or passed around.  Free variables used in the\nnested function can access the local variables of the function\ncontaining the def.  See section *Naming and binding* for details.\n\n\nClass definitions\n=================\n\nA class definition defines a class object (see section *The standard\ntype hierarchy*):\n\n   classdef    ::= "class" classname [inheritance] ":" suite\n   inheritance ::= "(" [expression_list] ")"\n   classname   ::= identifier\n\nA class definition is an executable statement.  It first evaluates the\ninheritance list, if present.  Each item in the inheritance list\nshould evaluate to a class object or class type which allows\nsubclassing.  The class\'s suite is then executed in a new execution\nframe (see section *Naming and binding*), using a newly created local\nnamespace and the original global namespace. (Usually, the suite\ncontains only function definitions.)  When the class\'s suite finishes\nexecution, its execution frame is discarded but its local namespace is\nsaved. [4] A class object is then created using the inheritance list\nfor the base classes and the saved local namespace for the attribute\ndictionary.  The class name is bound to this class object in the\noriginal local namespace.\n\n**Programmer\'s note:** Variables defined in the class definition are\nclass variables; they are shared by all instances.  To create instance\nvariables, they can be set in a method with ``self.name = value``.\nBoth class and instance variables are accessible through the notation\n"``self.name``", and an instance variable hides a class variable with\nthe same name when accessed in this way. Class variables can be used\nas defaults for instance variables, but using mutable values there can\nlead to unexpected results.  For *new-style class*es, descriptors can\nbe used to create instance variables with different implementation\ndetails.\n\nClass definitions, like function definitions, may be wrapped by one or\nmore *decorator* expressions.  The evaluation rules for the decorator\nexpressions are the same as for functions.  The result must be a class\nobject, which is then bound to the class name.\n\n-[ Footnotes ]-\n\n[1] The exception is propagated to the invocation stack only if there\n    is no ``finally`` clause that negates the exception.\n\n[2] Currently, control "flows off the end" except in the case of an\n    exception or the execution of a ``return``, ``continue``, or\n    ``break`` statement.\n\n[3] A string literal appearing as the first statement in the function\n    body is transformed into the function\'s ``__doc__`` attribute and\n    therefore the function\'s *docstring*.\n\n[4] A string literal appearing as the first statement in the class\n    body is transformed into the namespace\'s ``__doc__`` item and\n    therefore the class\'s *docstring*.\n',
- 'context-managers': u'\nWith Statement Context Managers\n*******************************\n\nNew in version 2.5.\n\nA *context manager* is an object that defines the runtime context to\nbe established when executing a ``with`` statement. The context\nmanager handles the entry into, and the exit from, the desired runtime\ncontext for the execution of the block of code.  Context managers are\nnormally invoked using the ``with`` statement (described in section\n*The with statement*), but can also be used by directly invoking their\nmethods.\n\nTypical uses of context managers include saving and restoring various\nkinds of global state, locking and unlocking resources, closing opened\nfiles, etc.\n\nFor more information on context managers, see *Context Manager Types*.\n\nobject.__enter__(self)\n\n   Enter the runtime context related to this object. The ``with``\n   statement will bind this method\'s return value to the target(s)\n   specified in the ``as`` clause of the statement, if any.\n\nobject.__exit__(self, exc_type, exc_value, traceback)\n\n   Exit the runtime context related to this object. The parameters\n   describe the exception that caused the context to be exited. If the\n   context was exited without an exception, all three arguments will\n   be ``None``.\n\n   If an exception is supplied, and the method wishes to suppress the\n   exception (i.e., prevent it from being propagated), it should\n   return a true value. Otherwise, the exception will be processed\n   normally upon exit from this method.\n\n   Note that ``__exit__()`` methods should not reraise the passed-in\n   exception; this is the caller\'s responsibility.\n\nSee also:\n\n   **PEP 0343** - The "with" statement\n      The specification, background, and examples for the Python\n      ``with`` statement.\n',
- 'continue': u'\nThe ``continue`` statement\n**************************\n\n   continue_stmt ::= "continue"\n\n``continue`` may only occur syntactically nested in a ``for`` or\n``while`` loop, but not nested in a function or class definition or\n``finally`` clause within that loop.  It continues with the next cycle\nof the nearest enclosing loop.\n\nWhen ``continue`` passes control out of a ``try`` statement with a\n``finally`` clause, that ``finally`` clause is executed before really\nstarting the next loop cycle.\n',
- 'conversions': u'\nArithmetic conversions\n**********************\n\nWhen a description of an arithmetic operator below uses the phrase\n"the numeric arguments are converted to a common type," the arguments\nare coerced using the coercion rules listed at  *Coercion rules*.  If\nboth arguments are standard numeric types, the following coercions are\napplied:\n\n* If either argument is a complex number, the other is converted to\n  complex;\n\n* otherwise, if either argument is a floating point number, the other\n  is converted to floating point;\n\n* otherwise, if either argument is a long integer, the other is\n  converted to long integer;\n\n* otherwise, both must be plain integers and no conversion is\n  necessary.\n\nSome additional rules apply for certain operators (e.g., a string left\nargument to the \'%\' operator). Extensions can define their own\ncoercions.\n',
- 'customization': u'\nBasic customization\n*******************\n\nobject.__new__(cls[, ...])\n\n   Called to create a new instance of class *cls*.  ``__new__()`` is a\n   static method (special-cased so you need not declare it as such)\n   that takes the class of which an instance was requested as its\n   first argument.  The remaining arguments are those passed to the\n   object constructor expression (the call to the class).  The return\n   value of ``__new__()`` should be the new object instance (usually\n   an instance of *cls*).\n\n   Typical implementations create a new instance of the class by\n   invoking the superclass\'s ``__new__()`` method using\n   ``super(currentclass, cls).__new__(cls[, ...])`` with appropriate\n   arguments and then modifying the newly-created instance as\n   necessary before returning it.\n\n   If ``__new__()`` returns an instance of *cls*, then the new\n   instance\'s ``__init__()`` method will be invoked like\n   ``__init__(self[, ...])``, where *self* is the new instance and the\n   remaining arguments are the same as were passed to ``__new__()``.\n\n   If ``__new__()`` does not return an instance of *cls*, then the new\n   instance\'s ``__init__()`` method will not be invoked.\n\n   ``__new__()`` is intended mainly to allow subclasses of immutable\n   types (like int, str, or tuple) to customize instance creation.  It\n   is also commonly overridden in custom metaclasses in order to\n   customize class creation.\n\nobject.__init__(self[, ...])\n\n   Called when the instance is created.  The arguments are those\n   passed to the class constructor expression.  If a base class has an\n   ``__init__()`` method, the derived class\'s ``__init__()`` method,\n   if any, must explicitly call it to ensure proper initialization of\n   the base class part of the instance; for example:\n   ``BaseClass.__init__(self, [args...])``.  As a special constraint\n   on constructors, no value may be returned; doing so will cause a\n   ``TypeError`` to be raised at runtime.\n\nobject.__del__(self)\n\n   Called when the instance is about to be destroyed.  This is also\n   called a destructor.  If a base class has a ``__del__()`` method,\n   the derived class\'s ``__del__()`` method, if any, must explicitly\n   call it to ensure proper deletion of the base class part of the\n   instance.  Note that it is possible (though not recommended!) for\n   the ``__del__()`` method to postpone destruction of the instance by\n   creating a new reference to it.  It may then be called at a later\n   time when this new reference is deleted.  It is not guaranteed that\n   ``__del__()`` methods are called for objects that still exist when\n   the interpreter exits.\n\n   Note: ``del x`` doesn\'t directly call ``x.__del__()`` --- the former\n     decrements the reference count for ``x`` by one, and the latter\n     is only called when ``x``\'s reference count reaches zero.  Some\n     common situations that may prevent the reference count of an\n     object from going to zero include: circular references between\n     objects (e.g., a doubly-linked list or a tree data structure with\n     parent and child pointers); a reference to the object on the\n     stack frame of a function that caught an exception (the traceback\n     stored in ``sys.exc_traceback`` keeps the stack frame alive); or\n     a reference to the object on the stack frame that raised an\n     unhandled exception in interactive mode (the traceback stored in\n     ``sys.last_traceback`` keeps the stack frame alive).  The first\n     situation can only be remedied by explicitly breaking the cycles;\n     the latter two situations can be resolved by storing ``None`` in\n     ``sys.exc_traceback`` or ``sys.last_traceback``.  Circular\n     references which are garbage are detected when the option cycle\n     detector is enabled (it\'s on by default), but can only be cleaned\n     up if there are no Python-level ``__del__()`` methods involved.\n     Refer to the documentation for the ``gc`` module for more\n     information about how ``__del__()`` methods are handled by the\n     cycle detector, particularly the description of the ``garbage``\n     value.\n\n   Warning: Due to the precarious circumstances under which ``__del__()``\n     methods are invoked, exceptions that occur during their execution\n     are ignored, and a warning is printed to ``sys.stderr`` instead.\n     Also, when ``__del__()`` is invoked in response to a module being\n     deleted (e.g., when execution of the program is done), other\n     globals referenced by the ``__del__()`` method may already have\n     been deleted or in the process of being torn down (e.g. the\n     import machinery shutting down).  For this reason, ``__del__()``\n     methods should do the absolute minimum needed to maintain\n     external invariants.  Starting with version 1.5, Python\n     guarantees that globals whose name begins with a single\n     underscore are deleted from their module before other globals are\n     deleted; if no other references to such globals exist, this may\n     help in assuring that imported modules are still available at the\n     time when the ``__del__()`` method is called.\n\nobject.__repr__(self)\n\n   Called by the ``repr()`` built-in function and by string\n   conversions (reverse quotes) to compute the "official" string\n   representation of an object.  If at all possible, this should look\n   like a valid Python expression that could be used to recreate an\n   object with the same value (given an appropriate environment).  If\n   this is not possible, a string of the form ``<...some useful\n   description...>`` should be returned.  The return value must be a\n   string object. If a class defines ``__repr__()`` but not\n   ``__str__()``, then ``__repr__()`` is also used when an "informal"\n   string representation of instances of that class is required.\n\n   This is typically used for debugging, so it is important that the\n   representation is information-rich and unambiguous.\n\nobject.__str__(self)\n\n   Called by the ``str()`` built-in function and by the ``print``\n   statement to compute the "informal" string representation of an\n   object.  This differs from ``__repr__()`` in that it does not have\n   to be a valid Python expression: a more convenient or concise\n   representation may be used instead. The return value must be a\n   string object.\n\nobject.__lt__(self, other)\nobject.__le__(self, other)\nobject.__eq__(self, other)\nobject.__ne__(self, other)\nobject.__gt__(self, other)\nobject.__ge__(self, other)\n\n   New in version 2.1.\n\n   These are the so-called "rich comparison" methods, and are called\n   for comparison operators in preference to ``__cmp__()`` below. The\n   correspondence between operator symbols and method names is as\n   follows: ``x<y`` calls ``x.__lt__(y)``, ``x<=y`` calls\n   ``x.__le__(y)``, ``x==y`` calls ``x.__eq__(y)``, ``x!=y`` and\n   ``x<>y`` call ``x.__ne__(y)``, ``x>y`` calls ``x.__gt__(y)``, and\n   ``x>=y`` calls ``x.__ge__(y)``.\n\n   A rich comparison method may return the singleton\n   ``NotImplemented`` if it does not implement the operation for a\n   given pair of arguments. By convention, ``False`` and ``True`` are\n   returned for a successful comparison. However, these methods can\n   return any value, so if the comparison operator is used in a\n   Boolean context (e.g., in the condition of an ``if`` statement),\n   Python will call ``bool()`` on the value to determine if the result\n   is true or false.\n\n   There are no implied relationships among the comparison operators.\n   The truth of ``x==y`` does not imply that ``x!=y`` is false.\n   Accordingly, when defining ``__eq__()``, one should also define\n   ``__ne__()`` so that the operators will behave as expected.  See\n   the paragraph on ``__hash__()`` for some important notes on\n   creating *hashable* objects which support custom comparison\n   operations and are usable as dictionary keys.\n\n   There are no swapped-argument versions of these methods (to be used\n   when the left argument does not support the operation but the right\n   argument does); rather, ``__lt__()`` and ``__gt__()`` are each\n   other\'s reflection, ``__le__()`` and ``__ge__()`` are each other\'s\n   reflection, and ``__eq__()`` and ``__ne__()`` are their own\n   reflection.\n\n   Arguments to rich comparison methods are never coerced.\n\n   To automatically generate ordering operations from a single root\n   operation, see ``functools.total_ordering()``.\n\nobject.__cmp__(self, other)\n\n   Called by comparison operations if rich comparison (see above) is\n   not defined.  Should return a negative integer if ``self < other``,\n   zero if ``self == other``, a positive integer if ``self > other``.\n   If no ``__cmp__()``, ``__eq__()`` or ``__ne__()`` operation is\n   defined, class instances are compared by object identity\n   ("address").  See also the description of ``__hash__()`` for some\n   important notes on creating *hashable* objects which support custom\n   comparison operations and are usable as dictionary keys. (Note: the\n   restriction that exceptions are not propagated by ``__cmp__()`` has\n   been removed since Python 1.5.)\n\nobject.__rcmp__(self, other)\n\n   Changed in version 2.1: No longer supported.\n\nobject.__hash__(self)\n\n   Called by built-in function ``hash()`` and for operations on\n   members of hashed collections including ``set``, ``frozenset``, and\n   ``dict``.  ``__hash__()`` should return an integer.  The only\n   required property is that objects which compare equal have the same\n   hash value; it is advised to somehow mix together (e.g. using\n   exclusive or) the hash values for the components of the object that\n   also play a part in comparison of objects.\n\n   If a class does not define a ``__cmp__()`` or ``__eq__()`` method\n   it should not define a ``__hash__()`` operation either; if it\n   defines ``__cmp__()`` or ``__eq__()`` but not ``__hash__()``, its\n   instances will not be usable in hashed collections.  If a class\n   defines mutable objects and implements a ``__cmp__()`` or\n   ``__eq__()`` method, it should not implement ``__hash__()``, since\n   hashable collection implementations require that a object\'s hash\n   value is immutable (if the object\'s hash value changes, it will be\n   in the wrong hash bucket).\n\n   User-defined classes have ``__cmp__()`` and ``__hash__()`` methods\n   by default; with them, all objects compare unequal (except with\n   themselves) and ``x.__hash__()`` returns ``id(x)``.\n\n   Classes which inherit a ``__hash__()`` method from a parent class\n   but change the meaning of ``__cmp__()`` or ``__eq__()`` such that\n   the hash value returned is no longer appropriate (e.g. by switching\n   to a value-based concept of equality instead of the default\n   identity based equality) can explicitly flag themselves as being\n   unhashable by setting ``__hash__ = None`` in the class definition.\n   Doing so means that not only will instances of the class raise an\n   appropriate ``TypeError`` when a program attempts to retrieve their\n   hash value, but they will also be correctly identified as\n   unhashable when checking ``isinstance(obj, collections.Hashable)``\n   (unlike classes which define their own ``__hash__()`` to explicitly\n   raise ``TypeError``).\n\n   Changed in version 2.5: ``__hash__()`` may now also return a long\n   integer object; the 32-bit integer is then derived from the hash of\n   that object.\n\n   Changed in version 2.6: ``__hash__`` may now be set to ``None`` to\n   explicitly flag instances of a class as unhashable.\n\nobject.__nonzero__(self)\n\n   Called to implement truth value testing and the built-in operation\n   ``bool()``; should return ``False`` or ``True``, or their integer\n   equivalents ``0`` or ``1``.  When this method is not defined,\n   ``__len__()`` is called, if it is defined, and the object is\n   considered true if its result is nonzero. If a class defines\n   neither ``__len__()`` nor ``__nonzero__()``, all its instances are\n   considered true.\n\nobject.__unicode__(self)\n\n   Called to implement ``unicode()`` built-in; should return a Unicode\n   object. When this method is not defined, string conversion is\n   attempted, and the result of string conversion is converted to\n   Unicode using the system default encoding.\n',
- 'debugger': u'\n``pdb`` --- The Python Debugger\n*******************************\n\nThe module ``pdb`` defines an interactive source code debugger for\nPython programs.  It supports setting (conditional) breakpoints and\nsingle stepping at the source line level, inspection of stack frames,\nsource code listing, and evaluation of arbitrary Python code in the\ncontext of any stack frame.  It also supports post-mortem debugging\nand can be called under program control.\n\nThe debugger is extensible --- it is actually defined as the class\n``Pdb``. This is currently undocumented but easily understood by\nreading the source.  The extension interface uses the modules ``bdb``\nand ``cmd``.\n\nThe debugger\'s prompt is ``(Pdb)``. Typical usage to run a program\nunder control of the debugger is:\n\n   >>> import pdb\n   >>> import mymodule\n   >>> pdb.run(\'mymodule.test()\')\n   > <string>(0)?()\n   (Pdb) continue\n   > <string>(1)?()\n   (Pdb) continue\n   NameError: \'spam\'\n   > <string>(1)?()\n   (Pdb)\n\n``pdb.py`` can also be invoked as a script to debug other scripts.\nFor example:\n\n   python -m pdb myscript.py\n\nWhen invoked as a script, pdb will automatically enter post-mortem\ndebugging if the program being debugged exits abnormally. After post-\nmortem debugging (or after normal exit of the program), pdb will\nrestart the program. Automatic restarting preserves pdb\'s state (such\nas breakpoints) and in most cases is more useful than quitting the\ndebugger upon program\'s exit.\n\nNew in version 2.4: Restarting post-mortem behavior added.\n\nThe typical usage to break into the debugger from a running program is\nto insert\n\n   import pdb; pdb.set_trace()\n\nat the location you want to break into the debugger.  You can then\nstep through the code following this statement, and continue running\nwithout the debugger using the ``c`` command.\n\nThe typical usage to inspect a crashed program is:\n\n   >>> import pdb\n   >>> import mymodule\n   >>> mymodule.test()\n   Traceback (most recent call last):\n     File "<stdin>", line 1, in ?\n     File "./mymodule.py", line 4, in test\n       test2()\n     File "./mymodule.py", line 3, in test2\n       print spam\n   NameError: spam\n   >>> pdb.pm()\n   > ./mymodule.py(3)test2()\n   -> print spam\n   (Pdb)\n\nThe module defines the following functions; each enters the debugger\nin a slightly different way:\n\npdb.run(statement[, globals[, locals]])\n\n   Execute the *statement* (given as a string) under debugger control.\n   The debugger prompt appears before any code is executed; you can\n   set breakpoints and type ``continue``, or you can step through the\n   statement using ``step`` or ``next`` (all these commands are\n   explained below).  The optional *globals* and *locals* arguments\n   specify the environment in which the code is executed; by default\n   the dictionary of the module ``__main__`` is used.  (See the\n   explanation of the ``exec`` statement or the ``eval()`` built-in\n   function.)\n\npdb.runeval(expression[, globals[, locals]])\n\n   Evaluate the *expression* (given as a string) under debugger\n   control.  When ``runeval()`` returns, it returns the value of the\n   expression.  Otherwise this function is similar to ``run()``.\n\npdb.runcall(function[, argument, ...])\n\n   Call the *function* (a function or method object, not a string)\n   with the given arguments.  When ``runcall()`` returns, it returns\n   whatever the function call returned.  The debugger prompt appears\n   as soon as the function is entered.\n\npdb.set_trace()\n\n   Enter the debugger at the calling stack frame.  This is useful to\n   hard-code a breakpoint at a given point in a program, even if the\n   code is not otherwise being debugged (e.g. when an assertion\n   fails).\n\npdb.post_mortem([traceback])\n\n   Enter post-mortem debugging of the given *traceback* object.  If no\n   *traceback* is given, it uses the one of the exception that is\n   currently being handled (an exception must be being handled if the\n   default is to be used).\n\npdb.pm()\n\n   Enter post-mortem debugging of the traceback found in\n   ``sys.last_traceback``.\n\nThe ``run*`` functions and ``set_trace()`` are aliases for\ninstantiating the ``Pdb`` class and calling the method of the same\nname.  If you want to access further features, you have to do this\nyourself:\n\nclass class pdb.Pdb(completekey=\'tab\', stdin=None, stdout=None, skip=None)\n\n   ``Pdb`` is the debugger class.\n\n   The *completekey*, *stdin* and *stdout* arguments are passed to the\n   underlying ``cmd.Cmd`` class; see the description there.\n\n   The *skip* argument, if given, must be an iterable of glob-style\n   module name patterns.  The debugger will not step into frames that\n   originate in a module that matches one of these patterns. [1]\n\n   Example call to enable tracing with *skip*:\n\n      import pdb; pdb.Pdb(skip=[\'django.*\']).set_trace()\n\n   New in version 2.7: The *skip* argument.\n\n   run(statement[, globals[, locals]])\n   runeval(expression[, globals[, locals]])\n   runcall(function[, argument, ...])\n   set_trace()\n\n      See the documentation for the functions explained above.\n',
- 'del': u'\nThe ``del`` statement\n*********************\n\n   del_stmt ::= "del" target_list\n\nDeletion is recursively defined very similar to the way assignment is\ndefined. Rather that spelling it out in full details, here are some\nhints.\n\nDeletion of a target list recursively deletes each target, from left\nto right.\n\nDeletion of a name removes the binding of that name  from the local or\nglobal namespace, depending on whether the name occurs in a ``global``\nstatement in the same code block.  If the name is unbound, a\n``NameError`` exception will be raised.\n\nIt is illegal to delete a name from the local namespace if it occurs\nas a free variable in a nested block.\n\nDeletion of attribute references, subscriptions and slicings is passed\nto the primary object involved; deletion of a slicing is in general\nequivalent to assignment of an empty slice of the right type (but even\nthis is determined by the sliced object).\n',
- 'dict': u'\nDictionary displays\n*******************\n\nA dictionary display is a possibly empty series of key/datum pairs\nenclosed in curly braces:\n\n   dict_display       ::= "{" [key_datum_list | dict_comprehension] "}"\n   key_datum_list     ::= key_datum ("," key_datum)* [","]\n   key_datum          ::= expression ":" expression\n   dict_comprehension ::= expression ":" expression comp_for\n\nA dictionary display yields a new dictionary object.\n\nIf a comma-separated sequence of key/datum pairs is given, they are\nevaluated from left to right to define the entries of the dictionary:\neach key object is used as a key into the dictionary to store the\ncorresponding datum.  This means that you can specify the same key\nmultiple times in the key/datum list, and the final dictionary\'s value\nfor that key will be the last one given.\n\nA dict comprehension, in contrast to list and set comprehensions,\nneeds two expressions separated with a colon followed by the usual\n"for" and "if" clauses. When the comprehension is run, the resulting\nkey and value elements are inserted in the new dictionary in the order\nthey are produced.\n\nRestrictions on the types of the key values are listed earlier in\nsection *The standard type hierarchy*.  (To summarize, the key type\nshould be *hashable*, which excludes all mutable objects.)  Clashes\nbetween duplicate keys are not detected; the last datum (textually\nrightmost in the display) stored for a given key value prevails.\n',
- 'dynamic-features': u'\nInteraction with dynamic features\n*********************************\n\nThere are several cases where Python statements are illegal when used\nin conjunction with nested scopes that contain free variables.\n\nIf a variable is referenced in an enclosing scope, it is illegal to\ndelete the name.  An error will be reported at compile time.\n\nIf the wild card form of import --- ``import *`` --- is used in a\nfunction and the function contains or is a nested block with free\nvariables, the compiler will raise a ``SyntaxError``.\n\nIf ``exec`` is used in a function and the function contains or is a\nnested block with free variables, the compiler will raise a\n``SyntaxError`` unless the exec explicitly specifies the local\nnamespace for the ``exec``.  (In other words, ``exec obj`` would be\nillegal, but ``exec obj in ns`` would be legal.)\n\nThe ``eval()``, ``execfile()``, and ``input()`` functions and the\n``exec`` statement do not have access to the full environment for\nresolving names.  Names may be resolved in the local and global\nnamespaces of the caller.  Free variables are not resolved in the\nnearest enclosing namespace, but in the global namespace. [1] The\n``exec`` statement and the ``eval()`` and ``execfile()`` functions\nhave optional arguments to override the global and local namespace.\nIf only one namespace is specified, it is used for both.\n',
- 'else': u'\nThe ``if`` statement\n********************\n\nThe ``if`` statement is used for conditional execution:\n\n   if_stmt ::= "if" expression ":" suite\n               ( "elif" expression ":" suite )*\n               ["else" ":" suite]\n\nIt selects exactly one of the suites by evaluating the expressions one\nby one until one is found to be true (see section *Boolean operations*\nfor the definition of true and false); then that suite is executed\n(and no other part of the ``if`` statement is executed or evaluated).\nIf all expressions are false, the suite of the ``else`` clause, if\npresent, is executed.\n',
- 'exceptions': u'\nExceptions\n**********\n\nExceptions are a means of breaking out of the normal flow of control\nof a code block in order to handle errors or other exceptional\nconditions.  An exception is *raised* at the point where the error is\ndetected; it may be *handled* by the surrounding code block or by any\ncode block that directly or indirectly invoked the code block where\nthe error occurred.\n\nThe Python interpreter raises an exception when it detects a run-time\nerror (such as division by zero).  A Python program can also\nexplicitly raise an exception with the ``raise`` statement. Exception\nhandlers are specified with the ``try`` ... ``except`` statement.  The\n``finally`` clause of such a statement can be used to specify cleanup\ncode which does not handle the exception, but is executed whether an\nexception occurred or not in the preceding code.\n\nPython uses the "termination" model of error handling: an exception\nhandler can find out what happened and continue execution at an outer\nlevel, but it cannot repair the cause of the error and retry the\nfailing operation (except by re-entering the offending piece of code\nfrom the top).\n\nWhen an exception is not handled at all, the interpreter terminates\nexecution of the program, or returns to its interactive main loop.  In\neither case, it prints a stack backtrace, except when the exception is\n``SystemExit``.\n\nExceptions are identified by class instances.  The ``except`` clause\nis selected depending on the class of the instance: it must reference\nthe class of the instance or a base class thereof.  The instance can\nbe received by the handler and can carry additional information about\nthe exceptional condition.\n\nExceptions can also be identified by strings, in which case the\n``except`` clause is selected by object identity.  An arbitrary value\ncan be raised along with the identifying string which can be passed to\nthe handler.\n\nNote: Messages to exceptions are not part of the Python API.  Their\n  contents may change from one version of Python to the next without\n  warning and should not be relied on by code which will run under\n  multiple versions of the interpreter.\n\nSee also the description of the ``try`` statement in section *The try\nstatement* and ``raise`` statement in section *The raise statement*.\n\n-[ Footnotes ]-\n\n[1] This limitation occurs because the code that is executed by these\n    operations is not available at the time the module is compiled.\n',
- 'exec': u'\nThe ``exec`` statement\n**********************\n\n   exec_stmt ::= "exec" or_expr ["in" expression ["," expression]]\n\nThis statement supports dynamic execution of Python code.  The first\nexpression should evaluate to either a string, an open file object, or\na code object.  If it is a string, the string is parsed as a suite of\nPython statements which is then executed (unless a syntax error\noccurs). [1]  If it is an open file, the file is parsed until EOF and\nexecuted.  If it is a code object, it is simply executed.  In all\ncases, the code that\'s executed is expected to be valid as file input\n(see section *File input*).  Be aware that the ``return`` and\n``yield`` statements may not be used outside of function definitions\neven within the context of code passed to the ``exec`` statement.\n\nIn all cases, if the optional parts are omitted, the code is executed\nin the current scope.  If only the first expression after ``in`` is\nspecified, it should be a dictionary, which will be used for both the\nglobal and the local variables.  If two expressions are given, they\nare used for the global and local variables, respectively. If\nprovided, *locals* can be any mapping object.\n\nChanged in version 2.4: Formerly, *locals* was required to be a\ndictionary.\n\nAs a side effect, an implementation may insert additional keys into\nthe dictionaries given besides those corresponding to variable names\nset by the executed code.  For example, the current implementation may\nadd a reference to the dictionary of the built-in module\n``__builtin__`` under the key ``__builtins__`` (!).\n\n**Programmer\'s hints:** dynamic evaluation of expressions is supported\nby the built-in function ``eval()``.  The built-in functions\n``globals()`` and ``locals()`` return the current global and local\ndictionary, respectively, which may be useful to pass around for use\nby ``exec``.\n\n-[ Footnotes ]-\n\n[1] Note that the parser only accepts the Unix-style end of line\n    convention. If you are reading the code from a file, make sure to\n    use universal newline mode to convert Windows or Mac-style\n    newlines.\n',
- 'execmodel': u'\nExecution model\n***************\n\n\nNaming and binding\n==================\n\n*Names* refer to objects.  Names are introduced by name binding\noperations. Each occurrence of a name in the program text refers to\nthe *binding* of that name established in the innermost function block\ncontaining the use.\n\nA *block* is a piece of Python program text that is executed as a\nunit. The following are blocks: a module, a function body, and a class\ndefinition. Each command typed interactively is a block.  A script\nfile (a file given as standard input to the interpreter or specified\non the interpreter command line the first argument) is a code block.\nA script command (a command specified on the interpreter command line\nwith the \'**-c**\' option) is a code block.  The file read by the\nbuilt-in function ``execfile()`` is a code block.  The string argument\npassed to the built-in function ``eval()`` and to the ``exec``\nstatement is a code block. The expression read and evaluated by the\nbuilt-in function ``input()`` is a code block.\n\nA code block is executed in an *execution frame*.  A frame contains\nsome administrative information (used for debugging) and determines\nwhere and how execution continues after the code block\'s execution has\ncompleted.\n\nA *scope* defines the visibility of a name within a block.  If a local\nvariable is defined in a block, its scope includes that block.  If the\ndefinition occurs in a function block, the scope extends to any blocks\ncontained within the defining one, unless a contained block introduces\na different binding for the name.  The scope of names defined in a\nclass block is limited to the class block; it does not extend to the\ncode blocks of methods -- this includes generator expressions since\nthey are implemented using a function scope.  This means that the\nfollowing will fail:\n\n   class A:\n       a = 42\n       b = list(a + i for i in range(10))\n\nWhen a name is used in a code block, it is resolved using the nearest\nenclosing scope.  The set of all such scopes visible to a code block\nis called the block\'s *environment*.\n\nIf a name is bound in a block, it is a local variable of that block.\nIf a name is bound at the module level, it is a global variable.  (The\nvariables of the module code block are local and global.)  If a\nvariable is used in a code block but not defined there, it is a *free\nvariable*.\n\nWhen a name is not found at all, a ``NameError`` exception is raised.\nIf the name refers to a local variable that has not been bound, a\n``UnboundLocalError`` exception is raised.  ``UnboundLocalError`` is a\nsubclass of ``NameError``.\n\nThe following constructs bind names: formal parameters to functions,\n``import`` statements, class and function definitions (these bind the\nclass or function name in the defining block), and targets that are\nidentifiers if occurring in an assignment, ``for`` loop header, in the\nsecond position of an ``except`` clause header or after ``as`` in a\n``with`` statement.  The ``import`` statement of the form ``from ...\nimport *`` binds all names defined in the imported module, except\nthose beginning with an underscore.  This form may only be used at the\nmodule level.\n\nA target occurring in a ``del`` statement is also considered bound for\nthis purpose (though the actual semantics are to unbind the name).  It\nis illegal to unbind a name that is referenced by an enclosing scope;\nthe compiler will report a ``SyntaxError``.\n\nEach assignment or import statement occurs within a block defined by a\nclass or function definition or at the module level (the top-level\ncode block).\n\nIf a name binding operation occurs anywhere within a code block, all\nuses of the name within the block are treated as references to the\ncurrent block.  This can lead to errors when a name is used within a\nblock before it is bound. This rule is subtle.  Python lacks\ndeclarations and allows name binding operations to occur anywhere\nwithin a code block.  The local variables of a code block can be\ndetermined by scanning the entire text of the block for name binding\noperations.\n\nIf the global statement occurs within a block, all uses of the name\nspecified in the statement refer to the binding of that name in the\ntop-level namespace. Names are resolved in the top-level namespace by\nsearching the global namespace, i.e. the namespace of the module\ncontaining the code block, and the builtins namespace, the namespace\nof the module ``__builtin__``.  The global namespace is searched\nfirst.  If the name is not found there, the builtins namespace is\nsearched.  The global statement must precede all uses of the name.\n\nThe builtins namespace associated with the execution of a code block\nis actually found by looking up the name ``__builtins__`` in its\nglobal namespace; this should be a dictionary or a module (in the\nlatter case the module\'s dictionary is used).  By default, when in the\n``__main__`` module, ``__builtins__`` is the built-in module\n``__builtin__`` (note: no \'s\'); when in any other module,\n``__builtins__`` is an alias for the dictionary of the ``__builtin__``\nmodule itself.  ``__builtins__`` can be set to a user-created\ndictionary to create a weak form of restricted execution.\n\n**CPython implementation detail:** Users should not touch\n``__builtins__``; it is strictly an implementation detail.  Users\nwanting to override values in the builtins namespace should ``import``\nthe ``__builtin__`` (no \'s\') module and modify its attributes\nappropriately.\n\nThe namespace for a module is automatically created the first time a\nmodule is imported.  The main module for a script is always called\n``__main__``.\n\nThe ``global`` statement has the same scope as a name binding\noperation in the same block.  If the nearest enclosing scope for a\nfree variable contains a global statement, the free variable is\ntreated as a global.\n\nA class definition is an executable statement that may use and define\nnames. These references follow the normal rules for name resolution.\nThe namespace of the class definition becomes the attribute dictionary\nof the class.  Names defined at the class scope are not visible in\nmethods.\n\n\nInteraction with dynamic features\n---------------------------------\n\nThere are several cases where Python statements are illegal when used\nin conjunction with nested scopes that contain free variables.\n\nIf a variable is referenced in an enclosing scope, it is illegal to\ndelete the name.  An error will be reported at compile time.\n\nIf the wild card form of import --- ``import *`` --- is used in a\nfunction and the function contains or is a nested block with free\nvariables, the compiler will raise a ``SyntaxError``.\n\nIf ``exec`` is used in a function and the function contains or is a\nnested block with free variables, the compiler will raise a\n``SyntaxError`` unless the exec explicitly specifies the local\nnamespace for the ``exec``.  (In other words, ``exec obj`` would be\nillegal, but ``exec obj in ns`` would be legal.)\n\nThe ``eval()``, ``execfile()``, and ``input()`` functions and the\n``exec`` statement do not have access to the full environment for\nresolving names.  Names may be resolved in the local and global\nnamespaces of the caller.  Free variables are not resolved in the\nnearest enclosing namespace, but in the global namespace. [1] The\n``exec`` statement and the ``eval()`` and ``execfile()`` functions\nhave optional arguments to override the global and local namespace.\nIf only one namespace is specified, it is used for both.\n\n\nExceptions\n==========\n\nExceptions are a means of breaking out of the normal flow of control\nof a code block in order to handle errors or other exceptional\nconditions.  An exception is *raised* at the point where the error is\ndetected; it may be *handled* by the surrounding code block or by any\ncode block that directly or indirectly invoked the code block where\nthe error occurred.\n\nThe Python interpreter raises an exception when it detects a run-time\nerror (such as division by zero).  A Python program can also\nexplicitly raise an exception with the ``raise`` statement. Exception\nhandlers are specified with the ``try`` ... ``except`` statement.  The\n``finally`` clause of such a statement can be used to specify cleanup\ncode which does not handle the exception, but is executed whether an\nexception occurred or not in the preceding code.\n\nPython uses the "termination" model of error handling: an exception\nhandler can find out what happened and continue execution at an outer\nlevel, but it cannot repair the cause of the error and retry the\nfailing operation (except by re-entering the offending piece of code\nfrom the top).\n\nWhen an exception is not handled at all, the interpreter terminates\nexecution of the program, or returns to its interactive main loop.  In\neither case, it prints a stack backtrace, except when the exception is\n``SystemExit``.\n\nExceptions are identified by class instances.  The ``except`` clause\nis selected depending on the class of the instance: it must reference\nthe class of the instance or a base class thereof.  The instance can\nbe received by the handler and can carry additional information about\nthe exceptional condition.\n\nExceptions can also be identified by strings, in which case the\n``except`` clause is selected by object identity.  An arbitrary value\ncan be raised along with the identifying string which can be passed to\nthe handler.\n\nNote: Messages to exceptions are not part of the Python API.  Their\n  contents may change from one version of Python to the next without\n  warning and should not be relied on by code which will run under\n  multiple versions of the interpreter.\n\nSee also the description of the ``try`` statement in section *The try\nstatement* and ``raise`` statement in section *The raise statement*.\n\n-[ Footnotes ]-\n\n[1] This limitation occurs because the code that is executed by these\n    operations is not available at the time the module is compiled.\n',
- 'exprlists': u'\nExpression lists\n****************\n\n   expression_list ::= expression ( "," expression )* [","]\n\nAn expression list containing at least one comma yields a tuple.  The\nlength of the tuple is the number of expressions in the list.  The\nexpressions are evaluated from left to right.\n\nThe trailing comma is required only to create a single tuple (a.k.a. a\n*singleton*); it is optional in all other cases.  A single expression\nwithout a trailing comma doesn\'t create a tuple, but rather yields the\nvalue of that expression. (To create an empty tuple, use an empty pair\nof parentheses: ``()``.)\n',
- 'floating': u'\nFloating point literals\n***********************\n\nFloating point literals are described by the following lexical\ndefinitions:\n\n   floatnumber   ::= pointfloat | exponentfloat\n   pointfloat    ::= [intpart] fraction | intpart "."\n   exponentfloat ::= (intpart | pointfloat) exponent\n   intpart       ::= digit+\n   fraction      ::= "." digit+\n   exponent      ::= ("e" | "E") ["+" | "-"] digit+\n\nNote that the integer and exponent parts of floating point numbers can\nlook like octal integers, but are interpreted using radix 10.  For\nexample, ``077e010`` is legal, and denotes the same number as\n``77e10``. The allowed range of floating point literals is\nimplementation-dependent. Some examples of floating point literals:\n\n   3.14    10.    .001    1e100    3.14e-10    0e0\n\nNote that numeric literals do not include a sign; a phrase like ``-1``\nis actually an expression composed of the unary operator ``-`` and the\nliteral ``1``.\n',
- 'for': u'\nThe ``for`` statement\n*********************\n\nThe ``for`` statement is used to iterate over the elements of a\nsequence (such as a string, tuple or list) or other iterable object:\n\n   for_stmt ::= "for" target_list "in" expression_list ":" suite\n                ["else" ":" suite]\n\nThe expression list is evaluated once; it should yield an iterable\nobject.  An iterator is created for the result of the\n``expression_list``.  The suite is then executed once for each item\nprovided by the iterator, in the order of ascending indices.  Each\nitem in turn is assigned to the target list using the standard rules\nfor assignments, and then the suite is executed.  When the items are\nexhausted (which is immediately when the sequence is empty), the suite\nin the ``else`` clause, if present, is executed, and the loop\nterminates.\n\nA ``break`` statement executed in the first suite terminates the loop\nwithout executing the ``else`` clause\'s suite.  A ``continue``\nstatement executed in the first suite skips the rest of the suite and\ncontinues with the next item, or with the ``else`` clause if there was\nno next item.\n\nThe suite may assign to the variable(s) in the target list; this does\nnot affect the next item assigned to it.\n\nThe target list is not deleted when the loop is finished, but if the\nsequence is empty, it will not have been assigned to at all by the\nloop.  Hint: the built-in function ``range()`` returns a sequence of\nintegers suitable to emulate the effect of Pascal\'s ``for i := a to b\ndo``; e.g., ``range(3)`` returns the list ``[0, 1, 2]``.\n\nNote: There is a subtlety when the sequence is being modified by the loop\n  (this can only occur for mutable sequences, i.e. lists). An internal\n  counter is used to keep track of which item is used next, and this\n  is incremented on each iteration.  When this counter has reached the\n  length of the sequence the loop terminates.  This means that if the\n  suite deletes the current (or a previous) item from the sequence,\n  the next item will be skipped (since it gets the index of the\n  current item which has already been treated).  Likewise, if the\n  suite inserts an item in the sequence before the current item, the\n  current item will be treated again the next time through the loop.\n  This can lead to nasty bugs that can be avoided by making a\n  temporary copy using a slice of the whole sequence, e.g.,\n\n     for x in a[:]:\n         if x < 0: a.remove(x)\n',
- 'formatstrings': u'\nFormat String Syntax\n********************\n\nThe ``str.format()`` method and the ``Formatter`` class share the same\nsyntax for format strings (although in the case of ``Formatter``,\nsubclasses can define their own format string syntax).\n\nFormat strings contain "replacement fields" surrounded by curly braces\n``{}``. Anything that is not contained in braces is considered literal\ntext, which is copied unchanged to the output.  If you need to include\na brace character in the literal text, it can be escaped by doubling:\n``{{`` and ``}}``.\n\nThe grammar for a replacement field is as follows:\n\n      replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"\n      field_name        ::= arg_name ("." attribute_name | "[" element_index "]")*\n      arg_name          ::= [identifier | integer]\n      attribute_name    ::= identifier\n      element_index     ::= integer | index_string\n      index_string      ::= <any source character except "]"> +\n      conversion        ::= "r" | "s"\n      format_spec       ::= <described in the next section>\n\nIn less formal terms, the replacement field can start with a\n*field_name* that specifies the object whose value is to be formatted\nand inserted into the output instead of the replacement field. The\n*field_name* is optionally followed by a  *conversion* field, which is\npreceded by an exclamation point ``\'!\'``, and a *format_spec*, which\nis preceded by a colon ``\':\'``.  These specify a non-default format\nfor the replacement value.\n\nSee also the *Format Specification Mini-Language* section.\n\nThe *field_name* itself begins with an *arg_name* that is either\neither a number or a keyword.  If it\'s a number, it refers to a\npositional argument, and if it\'s a keyword, it refers to a named\nkeyword argument.  If the numerical arg_names in a format string are\n0, 1, 2, ... in sequence, they can all be omitted (not just some) and\nthe numbers 0, 1, 2, ... will be automatically inserted in that order.\nThe *arg_name* can be followed by any number of index or attribute\nexpressions. An expression of the form ``\'.name\'`` selects the named\nattribute using ``getattr()``, while an expression of the form\n``\'[index]\'`` does an index lookup using ``__getitem__()``.\n\nChanged in version 2.7: The positional argument specifiers can be\nomitted, so ``\'{} {}\'`` is equivalent to ``\'{0} {1}\'``.\n\nSome simple format string examples:\n\n   "First, thou shalt count to {0}" # References first positional argument\n   "Bring me a {}"                  # Implicitly references the first positional argument\n   "From {} to {}"                  # Same as "From {0} to {1}"\n   "My quest is {name}"             # References keyword argument \'name\'\n   "Weight in tons {0.weight}"      # \'weight\' attribute of first positional arg\n   "Units destroyed: {players[0]}"  # First element of keyword argument \'players\'.\n\nThe *conversion* field causes a type coercion before formatting.\nNormally, the job of formatting a value is done by the\n``__format__()`` method of the value itself.  However, in some cases\nit is desirable to force a type to be formatted as a string,\noverriding its own definition of formatting.  By converting the value\nto a string before calling ``__format__()``, the normal formatting\nlogic is bypassed.\n\nTwo conversion flags are currently supported: ``\'!s\'`` which calls\n``str()`` on the value, and ``\'!r\'`` which calls ``repr()``.\n\nSome examples:\n\n   "Harold\'s a clever {0!s}"        # Calls str() on the argument first\n   "Bring out the holy {name!r}"    # Calls repr() on the argument first\n\nThe *format_spec* field contains a specification of how the value\nshould be presented, including such details as field width, alignment,\npadding, decimal precision and so on.  Each value type can define its\nown "formatting mini-language" or interpretation of the *format_spec*.\n\nMost built-in types support a common formatting mini-language, which\nis described in the next section.\n\nA *format_spec* field can also include nested replacement fields\nwithin it. These nested replacement fields can contain only a field\nname; conversion flags and format specifications are not allowed.  The\nreplacement fields within the format_spec are substituted before the\n*format_spec* string is interpreted. This allows the formatting of a\nvalue to be dynamically specified.\n\nSee the *Format examples* section for some examples.\n\n\nFormat Specification Mini-Language\n==================================\n\n"Format specifications" are used within replacement fields contained\nwithin a format string to define how individual values are presented\n(see *Format String Syntax*).  They can also be passed directly to the\nbuilt-in ``format()`` function.  Each formattable type may define how\nthe format specification is to be interpreted.\n\nMost built-in types implement the following options for format\nspecifications, although some of the formatting options are only\nsupported by the numeric types.\n\nA general convention is that an empty format string (``""``) produces\nthe same result as if you had called ``str()`` on the value. A non-\nempty format string typically modifies the result.\n\nThe general form of a *standard format specifier* is:\n\n   format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]\n   fill        ::= <a character other than \'}\'>\n   align       ::= "<" | ">" | "=" | "^"\n   sign        ::= "+" | "-" | " "\n   width       ::= integer\n   precision   ::= integer\n   type        ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"\n\nThe *fill* character can be any character other than \'{\' or \'}\'.  The\npresence of a fill character is signaled by the character following\nit, which must be one of the alignment options.  If the second\ncharacter of *format_spec* is not a valid alignment option, then it is\nassumed that both the fill character and the alignment option are\nabsent.\n\nThe meaning of the various alignment options is as follows:\n\n   +-----------+------------------------------------------------------------+\n   | Option    | Meaning                                                    |\n   +===========+============================================================+\n   | ``\'<\'``   | Forces the field to be left-aligned within the available   |\n   |           | space (this is the default for most objects).              |\n   +-----------+------------------------------------------------------------+\n   | ``\'>\'``   | Forces the field to be right-aligned within the available  |\n   |           | space (this is the default for numbers).                   |\n   +-----------+------------------------------------------------------------+\n   | ``\'=\'``   | Forces the padding to be placed after the sign (if any)    |\n   |           | but before the digits.  This is used for printing fields   |\n   |           | in the form \'+000000120\'. This alignment option is only    |\n   |           | valid for numeric types.                                   |\n   +-----------+------------------------------------------------------------+\n   | ``\'^\'``   | Forces the field to be centered within the available       |\n   |           | space.                                                     |\n   +-----------+------------------------------------------------------------+\n\nNote that unless a minimum field width is defined, the field width\nwill always be the same size as the data to fill it, so that the\nalignment option has no meaning in this case.\n\nThe *sign* option is only valid for number types, and can be one of\nthe following:\n\n   +-----------+------------------------------------------------------------+\n   | Option    | Meaning                                                    |\n   +===========+============================================================+\n   | ``\'+\'``   | indicates that a sign should be used for both positive as  |\n   |           | well as negative numbers.                                  |\n   +-----------+------------------------------------------------------------+\n   | ``\'-\'``   | indicates that a sign should be used only for negative     |\n   |           | numbers (this is the default behavior).                    |\n   +-----------+------------------------------------------------------------+\n   | space     | indicates that a leading space should be used on positive  |\n   |           | numbers, and a minus sign on negative numbers.             |\n   +-----------+------------------------------------------------------------+\n\nThe ``\'#\'`` option is only valid for integers, and only for binary,\noctal, or hexadecimal output.  If present, it specifies that the\noutput will be prefixed by ``\'0b\'``, ``\'0o\'``, or ``\'0x\'``,\nrespectively.\n\nThe ``\',\'`` option signals the use of a comma for a thousands\nseparator. For a locale aware separator, use the ``\'n\'`` integer\npresentation type instead.\n\nChanged in version 2.7: Added the ``\',\'`` option (see also **PEP\n378**).\n\n*width* is a decimal integer defining the minimum field width.  If not\nspecified, then the field width will be determined by the content.\n\nIf the *width* field is preceded by a zero (``\'0\'``) character, this\nenables zero-padding.  This is equivalent to an *alignment* type of\n``\'=\'`` and a *fill* character of ``\'0\'``.\n\nThe *precision* is a decimal number indicating how many digits should\nbe displayed after the decimal point for a floating point value\nformatted with ``\'f\'`` and ``\'F\'``, or before and after the decimal\npoint for a floating point value formatted with ``\'g\'`` or ``\'G\'``.\nFor non-number types the field indicates the maximum field size - in\nother words, how many characters will be used from the field content.\nThe *precision* is not allowed for integer values.\n\nFinally, the *type* determines how the data should be presented.\n\nThe available string presentation types are:\n\n   +-----------+------------------------------------------------------------+\n   | Type      | Meaning                                                    |\n   +===========+============================================================+\n   | ``\'s\'``   | String format. This is the default type for strings and    |\n   |           | may be omitted.                                            |\n   +-----------+------------------------------------------------------------+\n   | None      | The same as ``\'s\'``.                                       |\n   +-----------+------------------------------------------------------------+\n\nThe available integer presentation types are:\n\n   +-----------+------------------------------------------------------------+\n   | Type      | Meaning                                                    |\n   +===========+============================================================+\n   | ``\'b\'``   | Binary format. Outputs the number in base 2.               |\n   +-----------+------------------------------------------------------------+\n   | ``\'c\'``   | Character. Converts the integer to the corresponding       |\n   |           | unicode character before printing.                         |\n   +-----------+------------------------------------------------------------+\n   | ``\'d\'``   | Decimal Integer. Outputs the number in base 10.            |\n   +-----------+------------------------------------------------------------+\n   | ``\'o\'``   | Octal format. Outputs the number in base 8.                |\n   +-----------+------------------------------------------------------------+\n   | ``\'x\'``   | Hex format. Outputs the number in base 16, using lower-    |\n   |           | case letters for the digits above 9.                       |\n   +-----------+------------------------------------------------------------+\n   | ``\'X\'``   | Hex format. Outputs the number in base 16, using upper-    |\n   |           | case letters for the digits above 9.                       |\n   +-----------+------------------------------------------------------------+\n   | ``\'n\'``   | Number. This is the same as ``\'d\'``, except that it uses   |\n   |           | the current locale setting to insert the appropriate       |\n   |           | number separator characters.                               |\n   +-----------+------------------------------------------------------------+\n   | None      | The same as ``\'d\'``.                                       |\n   +-----------+------------------------------------------------------------+\n\nIn addition to the above presentation types, integers can be formatted\nwith the floating point presentation types listed below (except\n``\'n\'`` and None). When doing so, ``float()`` is used to convert the\ninteger to a floating point number before formatting.\n\nThe available presentation types for floating point and decimal values\nare:\n\n   +-----------+------------------------------------------------------------+\n   | Type      | Meaning                                                    |\n   +===========+============================================================+\n   | ``\'e\'``   | Exponent notation. Prints the number in scientific         |\n   |           | notation using the letter \'e\' to indicate the exponent.    |\n   +-----------+------------------------------------------------------------+\n   | ``\'E\'``   | Exponent notation. Same as ``\'e\'`` except it uses an upper |\n   |           | case \'E\' as the separator character.                       |\n   +-----------+------------------------------------------------------------+\n   | ``\'f\'``   | Fixed point. Displays the number as a fixed-point number.  |\n   +-----------+------------------------------------------------------------+\n   | ``\'F\'``   | Fixed point. Same as ``\'f\'``.                              |\n   +-----------+------------------------------------------------------------+\n   | ``\'g\'``   | General format.  For a given precision ``p >= 1``, this    |\n   |           | rounds the number to ``p`` significant digits and then     |\n   |           | formats the result in either fixed-point format or in      |\n   |           | scientific notation, depending on its magnitude.  The      |\n   |           | precise rules are as follows: suppose that the result      |\n   |           | formatted with presentation type ``\'e\'`` and precision     |\n   |           | ``p-1`` would have exponent ``exp``.  Then if ``-4 <= exp  |\n   |           | < p``, the number is formatted with presentation type      |\n   |           | ``\'f\'`` and precision ``p-1-exp``. Otherwise, the number   |\n   |           | is formatted with presentation type ``\'e\'`` and precision  |\n   |           | ``p-1``. In both cases insignificant trailing zeros are    |\n   |           | removed from the significand, and the decimal point is     |\n   |           | also removed if there are no remaining digits following    |\n   |           | it.  Positive and negative infinity, positive and negative |\n   |           | zero, and nans, are formatted as ``inf``, ``-inf``, ``0``, |\n   |           | ``-0`` and ``nan`` respectively, regardless of the         |\n   |           | precision.  A precision of ``0`` is treated as equivalent  |\n   |           | to a precision of ``1``.                                   |\n   +-----------+------------------------------------------------------------+\n   | ``\'G\'``   | General format. Same as ``\'g\'`` except switches to ``\'E\'`` |\n   |           | if the number gets too large. The representations of       |\n   |           | infinity and NaN are uppercased, too.                      |\n   +-----------+------------------------------------------------------------+\n   | ``\'n\'``   | Number. This is the same as ``\'g\'``, except that it uses   |\n   |           | the current locale setting to insert the appropriate       |\n   |           | number separator characters.                               |\n   +-----------+------------------------------------------------------------+\n   | ``\'%\'``   | Percentage. Multiplies the number by 100 and displays in   |\n   |           | fixed (``\'f\'``) format, followed by a percent sign.        |\n   +-----------+------------------------------------------------------------+\n   | None      | The same as ``\'g\'``.                                       |\n   +-----------+------------------------------------------------------------+\n\n\nFormat examples\n===============\n\nThis section contains examples of the new format syntax and comparison\nwith the old ``%``-formatting.\n\nIn most of the cases the syntax is similar to the old\n``%``-formatting, with the addition of the ``{}`` and with ``:`` used\ninstead of ``%``. For example, ``\'%03.2f\'`` can be translated to\n``\'{:03.2f}\'``.\n\nThe new format syntax also supports new and different options, shown\nin the follow examples.\n\nAccessing arguments by position:\n\n   >>> \'{0}, {1}, {2}\'.format(\'a\', \'b\', \'c\')\n   \'a, b, c\'\n   >>> \'{}, {}, {}\'.format(\'a\', \'b\', \'c\')  # 2.7+ only\n   \'a, b, c\'\n   >>> \'{2}, {1}, {0}\'.format(\'a\', \'b\', \'c\')\n   \'c, b, a\'\n   >>> \'{2}, {1}, {0}\'.format(*\'abc\')      # unpacking argument sequence\n   \'c, b, a\'\n   >>> \'{0}{1}{0}\'.format(\'abra\', \'cad\')   # arguments\' indices can be repeated\n   \'abracadabra\'\n\nAccessing arguments by name:\n\n   >>> \'Coordinates: {latitude}, {longitude}\'.format(latitude=\'37.24N\', longitude=\'-115.81W\')\n   \'Coordinates: 37.24N, -115.81W\'\n   >>> coord = {\'latitude\': \'37.24N\', \'longitude\': \'-115.81W\'}\n   >>> \'Coordinates: {latitude}, {longitude}\'.format(**coord)\n   \'Coordinates: 37.24N, -115.81W\'\n\nAccessing arguments\' attributes:\n\n   >>> c = 3-5j\n   >>> (\'The complex number {0} is formed from the real part {0.real} \'\n   ...  \'and the imaginary part {0.imag}.\').format(c)\n   \'The complex number (3-5j) is formed from the real part 3.0 and the imaginary part -5.0.\'\n   >>> class Point(object):\n   ...     def __init__(self, x, y):\n   ...         self.x, self.y = x, y\n   ...     def __str__(self):\n   ...         return \'Point({self.x}, {self.y})\'.format(self=self)\n   ...\n   >>> str(Point(4, 2))\n   \'Point(4, 2)\'\n\nAccessing arguments\' items:\n\n   >>> coord = (3, 5)\n   >>> \'X: {0[0]};  Y: {0[1]}\'.format(coord)\n   \'X: 3;  Y: 5\'\n\nReplacing ``%s`` and ``%r``:\n\n   >>> "repr() shows quotes: {!r}; str() doesn\'t: {!s}".format(\'test1\', \'test2\')\n   "repr() shows quotes: \'test1\'; str() doesn\'t: test2"\n\nAligning the text and specifying a width:\n\n   >>> \'{:<30}\'.format(\'left aligned\')\n   \'left aligned                  \'\n   >>> \'{:>30}\'.format(\'right aligned\')\n   \'                 right aligned\'\n   >>> \'{:^30}\'.format(\'centered\')\n   \'           centered           \'\n   >>> \'{:*^30}\'.format(\'centered\')  # use \'*\' as a fill char\n   \'***********centered***********\'\n\nReplacing ``%+f``, ``%-f``, and ``% f`` and specifying a sign:\n\n   >>> \'{:+f}; {:+f}\'.format(3.14, -3.14)  # show it always\n   \'+3.140000; -3.140000\'\n   >>> \'{: f}; {: f}\'.format(3.14, -3.14)  # show a space for positive numbers\n   \' 3.140000; -3.140000\'\n   >>> \'{:-f}; {:-f}\'.format(3.14, -3.14)  # show only the minus -- same as \'{:f}; {:f}\'\n   \'3.140000; -3.140000\'\n\nReplacing ``%x`` and ``%o`` and converting the value to different\nbases:\n\n   >>> # format also supports binary numbers\n   >>> "int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(42)\n   \'int: 42;  hex: 2a;  oct: 52;  bin: 101010\'\n   >>> # with 0x, 0o, or 0b as prefix:\n   >>> "int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42)\n   \'int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010\'\n\nUsing the comma as a thousands separator:\n\n   >>> \'{:,}\'.format(1234567890)\n   \'1,234,567,890\'\n\nExpressing a percentage:\n\n   >>> points = 19.5\n   >>> total = 22\n   >>> \'Correct answers: {:.2%}.\'.format(points/total)\n   \'Correct answers: 88.64%\'\n\nUsing type-specific formatting:\n\n   >>> import datetime\n   >>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)\n   >>> \'{:%Y-%m-%d %H:%M:%S}\'.format(d)\n   \'2010-07-04 12:15:58\'\n\nNesting arguments and more complex examples:\n\n   >>> for align, text in zip(\'<^>\', [\'left\', \'center\', \'right\']):\n   ...     \'{0:{fill}{align}16}\'.format(text, fill=align, align=align)\n   ...\n   \'left<<<<<<<<<<<<\'\n   \'^^^^^center^^^^^\'\n   \'>>>>>>>>>>>right\'\n   >>>\n   >>> octets = [192, 168, 0, 1]\n   >>> \'{:02X}{:02X}{:02X}{:02X}\'.format(*octets)\n   \'C0A80001\'\n   >>> int(_, 16)\n   3232235521\n   >>>\n   >>> width = 5\n   >>> for num in range(5,12):\n   ...     for base in \'dXob\':\n   ...         print \'{0:{width}{base}}\'.format(num, base=base, width=width),\n   ...     print\n   ...\n       5     5     5   101\n       6     6     6   110\n       7     7     7   111\n       8     8    10  1000\n       9     9    11  1001\n      10     A    12  1010\n      11     B    13  1011\n',
- 'function': u'\nFunction definitions\n********************\n\nA function definition defines a user-defined function object (see\nsection *The standard type hierarchy*):\n\n   decorated      ::= decorators (classdef | funcdef)\n   decorators     ::= decorator+\n   decorator      ::= "@" dotted_name ["(" [argument_list [","]] ")"] NEWLINE\n   funcdef        ::= "def" funcname "(" [parameter_list] ")" ":" suite\n   dotted_name    ::= identifier ("." identifier)*\n   parameter_list ::= (defparameter ",")*\n                      (  "*" identifier [, "**" identifier]\n                      | "**" identifier\n                      | defparameter [","] )\n   defparameter   ::= parameter ["=" expression]\n   sublist        ::= parameter ("," parameter)* [","]\n   parameter      ::= identifier | "(" sublist ")"\n   funcname       ::= identifier\n\nA function definition is an executable statement.  Its execution binds\nthe function name in the current local namespace to a function object\n(a wrapper around the executable code for the function).  This\nfunction object contains a reference to the current global namespace\nas the global namespace to be used when the function is called.\n\nThe function definition does not execute the function body; this gets\nexecuted only when the function is called. [3]\n\nA function definition may be wrapped by one or more *decorator*\nexpressions. Decorator expressions are evaluated when the function is\ndefined, in the scope that contains the function definition.  The\nresult must be a callable, which is invoked with the function object\nas the only argument. The returned value is bound to the function name\ninstead of the function object.  Multiple decorators are applied in\nnested fashion. For example, the following code:\n\n   @f1(arg)\n   @f2\n   def func(): pass\n\nis equivalent to:\n\n   def func(): pass\n   func = f1(arg)(f2(func))\n\nWhen one or more top-level parameters have the form *parameter* ``=``\n*expression*, the function is said to have "default parameter values."\nFor a parameter with a default value, the corresponding argument may\nbe omitted from a call, in which case the parameter\'s default value is\nsubstituted.  If a parameter has a default value, all following\nparameters must also have a default value --- this is a syntactic\nrestriction that is not expressed by the grammar.\n\n**Default parameter values are evaluated when the function definition\nis executed.**  This means that the expression is evaluated once, when\nthe function is defined, and that that same "pre-computed" value is\nused for each call.  This is especially important to understand when a\ndefault parameter is a mutable object, such as a list or a dictionary:\nif the function modifies the object (e.g. by appending an item to a\nlist), the default value is in effect modified. This is generally not\nwhat was intended.  A way around this  is to use ``None`` as the\ndefault, and explicitly test for it in the body of the function, e.g.:\n\n   def whats_on_the_telly(penguin=None):\n       if penguin is None:\n           penguin = []\n       penguin.append("property of the zoo")\n       return penguin\n\nFunction call semantics are described in more detail in section\n*Calls*. A function call always assigns values to all parameters\nmentioned in the parameter list, either from position arguments, from\nkeyword arguments, or from default values.  If the form\n"``*identifier``" is present, it is initialized to a tuple receiving\nany excess positional parameters, defaulting to the empty tuple.  If\nthe form "``**identifier``" is present, it is initialized to a new\ndictionary receiving any excess keyword arguments, defaulting to a new\nempty dictionary.\n\nIt is also possible to create anonymous functions (functions not bound\nto a name), for immediate use in expressions.  This uses lambda forms,\ndescribed in section *Lambdas*.  Note that the lambda form is merely a\nshorthand for a simplified function definition; a function defined in\na "``def``" statement can be passed around or assigned to another name\njust like a function defined by a lambda form.  The "``def``" form is\nactually more powerful since it allows the execution of multiple\nstatements.\n\n**Programmer\'s note:** Functions are first-class objects.  A "``def``"\nform executed inside a function definition defines a local function\nthat can be returned or passed around.  Free variables used in the\nnested function can access the local variables of the function\ncontaining the def.  See section *Naming and binding* for details.\n',
- 'global': u'\nThe ``global`` statement\n************************\n\n   global_stmt ::= "global" identifier ("," identifier)*\n\nThe ``global`` statement is a declaration which holds for the entire\ncurrent code block.  It means that the listed identifiers are to be\ninterpreted as globals.  It would be impossible to assign to a global\nvariable without ``global``, although free variables may refer to\nglobals without being declared global.\n\nNames listed in a ``global`` statement must not be used in the same\ncode block textually preceding that ``global`` statement.\n\nNames listed in a ``global`` statement must not be defined as formal\nparameters or in a ``for`` loop control target, ``class`` definition,\nfunction definition, or ``import`` statement.\n\n**CPython implementation detail:** The current implementation does not\nenforce the latter two restrictions, but programs should not abuse\nthis freedom, as future implementations may enforce them or silently\nchange the meaning of the program.\n\n**Programmer\'s note:** the ``global`` is a directive to the parser.\nIt applies only to code parsed at the same time as the ``global``\nstatement. In particular, a ``global`` statement contained in an\n``exec`` statement does not affect the code block *containing* the\n``exec`` statement, and code contained in an ``exec`` statement is\nunaffected by ``global`` statements in the code containing the\n``exec`` statement.  The same applies to the ``eval()``,\n``execfile()`` and ``compile()`` functions.\n',
- 'id-classes': u'\nReserved classes of identifiers\n*******************************\n\nCertain classes of identifiers (besides keywords) have special\nmeanings.  These classes are identified by the patterns of leading and\ntrailing underscore characters:\n\n``_*``\n   Not imported by ``from module import *``.  The special identifier\n   ``_`` is used in the interactive interpreter to store the result of\n   the last evaluation; it is stored in the ``__builtin__`` module.\n   When not in interactive mode, ``_`` has no special meaning and is\n   not defined. See section *The import statement*.\n\n   Note: The name ``_`` is often used in conjunction with\n     internationalization; refer to the documentation for the\n     ``gettext`` module for more information on this convention.\n\n``__*__``\n   System-defined names. These names are defined by the interpreter\n   and its implementation (including the standard library).  Current\n   system names are discussed in the *Special method names* section\n   and elsewhere.  More will likely be defined in future versions of\n   Python.  *Any* use of ``__*__`` names, in any context, that does\n   not follow explicitly documented use, is subject to breakage\n   without warning.\n\n``__*``\n   Class-private names.  Names in this category, when used within the\n   context of a class definition, are re-written to use a mangled form\n   to help avoid name clashes between "private" attributes of base and\n   derived classes. See section *Identifiers (Names)*.\n',
- 'identifiers': u'\nIdentifiers and keywords\n************************\n\nIdentifiers (also referred to as *names*) are described by the\nfollowing lexical definitions:\n\n   identifier ::= (letter|"_") (letter | digit | "_")*\n   letter     ::= lowercase | uppercase\n   lowercase  ::= "a"..."z"\n   uppercase  ::= "A"..."Z"\n   digit      ::= "0"..."9"\n\nIdentifiers are unlimited in length.  Case is significant.\n\n\nKeywords\n========\n\nThe following identifiers are used as reserved words, or *keywords* of\nthe language, and cannot be used as ordinary identifiers.  They must\nbe spelled exactly as written here:\n\n   and       del       from      not       while\n   as        elif      global    or        with\n   assert    else      if        pass      yield\n   break     except    import    print\n   class     exec      in        raise\n   continue  finally   is        return\n   def       for       lambda    try\n\nChanged in version 2.4: ``None`` became a constant and is now\nrecognized by the compiler as a name for the built-in object ``None``.\nAlthough it is not a keyword, you cannot assign a different object to\nit.\n\nChanged in version 2.5: Both ``as`` and ``with`` are only recognized\nwhen the ``with_statement`` future feature has been enabled. It will\nalways be enabled in Python 2.6.  See section *The with statement* for\ndetails.  Note that using ``as`` and ``with`` as identifiers will\nalways issue a warning, even when the ``with_statement`` future\ndirective is not in effect.\n\n\nReserved classes of identifiers\n===============================\n\nCertain classes of identifiers (besides keywords) have special\nmeanings.  These classes are identified by the patterns of leading and\ntrailing underscore characters:\n\n``_*``\n   Not imported by ``from module import *``.  The special identifier\n   ``_`` is used in the interactive interpreter to store the result of\n   the last evaluation; it is stored in the ``__builtin__`` module.\n   When not in interactive mode, ``_`` has no special meaning and is\n   not defined. See section *The import statement*.\n\n   Note: The name ``_`` is often used in conjunction with\n     internationalization; refer to the documentation for the\n     ``gettext`` module for more information on this convention.\n\n``__*__``\n   System-defined names. These names are defined by the interpreter\n   and its implementation (including the standard library).  Current\n   system names are discussed in the *Special method names* section\n   and elsewhere.  More will likely be defined in future versions of\n   Python.  *Any* use of ``__*__`` names, in any context, that does\n   not follow explicitly documented use, is subject to breakage\n   without warning.\n\n``__*``\n   Class-private names.  Names in this category, when used within the\n   context of a class definition, are re-written to use a mangled form\n   to help avoid name clashes between "private" attributes of base and\n   derived classes. See section *Identifiers (Names)*.\n',
- 'if': u'\nThe ``if`` statement\n********************\n\nThe ``if`` statement is used for conditional execution:\n\n   if_stmt ::= "if" expression ":" suite\n               ( "elif" expression ":" suite )*\n               ["else" ":" suite]\n\nIt selects exactly one of the suites by evaluating the expressions one\nby one until one is found to be true (see section *Boolean operations*\nfor the definition of true and false); then that suite is executed\n(and no other part of the ``if`` statement is executed or evaluated).\nIf all expressions are false, the suite of the ``else`` clause, if\npresent, is executed.\n',
- 'imaginary': u'\nImaginary literals\n******************\n\nImaginary literals are described by the following lexical definitions:\n\n   imagnumber ::= (floatnumber | intpart) ("j" | "J")\n\nAn imaginary literal yields a complex number with a real part of 0.0.\nComplex numbers are represented as a pair of floating point numbers\nand have the same restrictions on their range.  To create a complex\nnumber with a nonzero real part, add a floating point number to it,\ne.g., ``(3+4j)``.  Some examples of imaginary literals:\n\n   3.14j   10.j    10j     .001j   1e100j  3.14e-10j\n',
- 'import': u'\nThe ``import`` statement\n************************\n\n   import_stmt     ::= "import" module ["as" name] ( "," module ["as" name] )*\n                   | "from" relative_module "import" identifier ["as" name]\n                   ( "," identifier ["as" name] )*\n                   | "from" relative_module "import" "(" identifier ["as" name]\n                   ( "," identifier ["as" name] )* [","] ")"\n                   | "from" module "import" "*"\n   module          ::= (identifier ".")* identifier\n   relative_module ::= "."* module | "."+\n   name            ::= identifier\n\nImport statements are executed in two steps: (1) find a module, and\ninitialize it if necessary; (2) define a name or names in the local\nnamespace (of the scope where the ``import`` statement occurs). The\nstatement comes in two forms differing on whether it uses the ``from``\nkeyword. The first form (without ``from``) repeats these steps for\neach identifier in the list. The form with ``from`` performs step (1)\nonce, and then performs step (2) repeatedly.\n\nTo understand how step (1) occurs, one must first understand how\nPython handles hierarchical naming of modules. To help organize\nmodules and provide a hierarchy in naming, Python has a concept of\npackages. A package can contain other packages and modules while\nmodules cannot contain other modules or packages. From a file system\nperspective, packages are directories and modules are files. The\noriginal specification for packages is still available to read,\nalthough minor details have changed since the writing of that\ndocument.\n\nOnce the name of the module is known (unless otherwise specified, the\nterm "module" will refer to both packages and modules), searching for\nthe module or package can begin. The first place checked is\n``sys.modules``, the cache of all modules that have been imported\npreviously. If the module is found there then it is used in step (2)\nof import.\n\nIf the module is not found in the cache, then ``sys.meta_path`` is\nsearched (the specification for ``sys.meta_path`` can be found in\n**PEP 302**). The object is a list of *finder* objects which are\nqueried in order as to whether they know how to load the module by\ncalling their ``find_module()`` method with the name of the module. If\nthe module happens to be contained within a package (as denoted by the\nexistence of a dot in the name), then a second argument to\n``find_module()`` is given as the value of the ``__path__`` attribute\nfrom the parent package (everything up to the last dot in the name of\nthe module being imported). If a finder can find the module it returns\na *loader* (discussed later) or returns ``None``.\n\nIf none of the finders on ``sys.meta_path`` are able to find the\nmodule then some implicitly defined finders are queried.\nImplementations of Python vary in what implicit meta path finders are\ndefined. The one they all do define, though, is one that handles\n``sys.path_hooks``, ``sys.path_importer_cache``, and ``sys.path``.\n\nThe implicit finder searches for the requested module in the "paths"\nspecified in one of two places ("paths" do not have to be file system\npaths). If the module being imported is supposed to be contained\nwithin a package then the second argument passed to ``find_module()``,\n``__path__`` on the parent package, is used as the source of paths. If\nthe module is not contained in a package then ``sys.path`` is used as\nthe source of paths.\n\nOnce the source of paths is chosen it is iterated over to find a\nfinder that can handle that path. The dict at\n``sys.path_importer_cache`` caches finders for paths and is checked\nfor a finder. If the path does not have a finder cached then\n``sys.path_hooks`` is searched by calling each object in the list with\na single argument of the path, returning a finder or raises\n``ImportError``. If a finder is returned then it is cached in\n``sys.path_importer_cache`` and then used for that path entry. If no\nfinder can be found but the path exists then a value of ``None`` is\nstored in ``sys.path_importer_cache`` to signify that an implicit,\nfile-based finder that handles modules stored as individual files\nshould be used for that path. If the path does not exist then a finder\nwhich always returns ``None`` is placed in the cache for the path.\n\nIf no finder can find the module then ``ImportError`` is raised.\nOtherwise some finder returned a loader whose ``load_module()`` method\nis called with the name of the module to load (see **PEP 302** for the\noriginal definition of loaders). A loader has several responsibilities\nto perform on a module it loads. First, if the module already exists\nin ``sys.modules`` (a possibility if the loader is called outside of\nthe import machinery) then it is to use that module for initialization\nand not a new module. But if the module does not exist in\n``sys.modules`` then it is to be added to that dict before\ninitialization begins. If an error occurs during loading of the module\nand it was added to ``sys.modules`` it is to be removed from the dict.\nIf an error occurs but the module was already in ``sys.modules`` it is\nleft in the dict.\n\nThe loader must set several attributes on the module. ``__name__`` is\nto be set to the name of the module. ``__file__`` is to be the "path"\nto the file unless the module is built-in (and thus listed in\n``sys.builtin_module_names``) in which case the attribute is not set.\nIf what is being imported is a package then ``__path__`` is to be set\nto a list of paths to be searched when looking for modules and\npackages contained within the package being imported. ``__package__``\nis optional but should be set to the name of package that contains the\nmodule or package (the empty string is used for module not contained\nin a package). ``__loader__`` is also optional but should be set to\nthe loader object that is loading the module.\n\nIf an error occurs during loading then the loader raises\n``ImportError`` if some other exception is not already being\npropagated. Otherwise the loader returns the module that was loaded\nand initialized.\n\nWhen step (1) finishes without raising an exception, step (2) can\nbegin.\n\nThe first form of ``import`` statement binds the module name in the\nlocal namespace to the module object, and then goes on to import the\nnext identifier, if any.  If the module name is followed by ``as``,\nthe name following ``as`` is used as the local name for the module.\n\nThe ``from`` form does not bind the module name: it goes through the\nlist of identifiers, looks each one of them up in the module found in\nstep (1), and binds the name in the local namespace to the object thus\nfound.  As with the first form of ``import``, an alternate local name\ncan be supplied by specifying "``as`` localname".  If a name is not\nfound, ``ImportError`` is raised.  If the list of identifiers is\nreplaced by a star (``\'*\'``), all public names defined in the module\nare bound in the local namespace of the ``import`` statement..\n\nThe *public names* defined by a module are determined by checking the\nmodule\'s namespace for a variable named ``__all__``; if defined, it\nmust be a sequence of strings which are names defined or imported by\nthat module.  The names given in ``__all__`` are all considered public\nand are required to exist.  If ``__all__`` is not defined, the set of\npublic names includes all names found in the module\'s namespace which\ndo not begin with an underscore character (``\'_\'``). ``__all__``\nshould contain the entire public API. It is intended to avoid\naccidentally exporting items that are not part of the API (such as\nlibrary modules which were imported and used within the module).\n\nThe ``from`` form with ``*`` may only occur in a module scope.  If the\nwild card form of import --- ``import *`` --- is used in a function\nand the function contains or is a nested block with free variables,\nthe compiler will raise a ``SyntaxError``.\n\nWhen specifying what module to import you do not have to specify the\nabsolute name of the module. When a module or package is contained\nwithin another package it is possible to make a relative import within\nthe same top package without having to mention the package name. By\nusing leading dots in the specified module or package after ``from``\nyou can specify how high to traverse up the current package hierarchy\nwithout specifying exact names. One leading dot means the current\npackage where the module making the import exists. Two dots means up\none package level. Three dots is up two levels, etc. So if you execute\n``from . import mod`` from a module in the ``pkg`` package then you\nwill end up importing ``pkg.mod``. If you execute ``from ..subpkg2\nimport mod`` from within ``pkg.subpkg1`` you will import\n``pkg.subpkg2.mod``. The specification for relative imports is\ncontained within **PEP 328**.\n\n``importlib.import_module()`` is provided to support applications that\ndetermine which modules need to be loaded dynamically.\n\n\nFuture statements\n=================\n\nA *future statement* is a directive to the compiler that a particular\nmodule should be compiled using syntax or semantics that will be\navailable in a specified future release of Python.  The future\nstatement is intended to ease migration to future versions of Python\nthat introduce incompatible changes to the language.  It allows use of\nthe new features on a per-module basis before the release in which the\nfeature becomes standard.\n\n   future_statement ::= "from" "__future__" "import" feature ["as" name]\n                        ("," feature ["as" name])*\n                        | "from" "__future__" "import" "(" feature ["as" name]\n                        ("," feature ["as" name])* [","] ")"\n   feature          ::= identifier\n   name             ::= identifier\n\nA future statement must appear near the top of the module.  The only\nlines that can appear before a future statement are:\n\n* the module docstring (if any),\n\n* comments,\n\n* blank lines, and\n\n* other future statements.\n\nThe features recognized by Python 2.6 are ``unicode_literals``,\n``print_function``, ``absolute_import``, ``division``, ``generators``,\n``nested_scopes`` and ``with_statement``.  ``generators``,\n``with_statement``, ``nested_scopes`` are redundant in Python version\n2.6 and above because they are always enabled.\n\nA future statement is recognized and treated specially at compile\ntime: Changes to the semantics of core constructs are often\nimplemented by generating different code.  It may even be the case\nthat a new feature introduces new incompatible syntax (such as a new\nreserved word), in which case the compiler may need to parse the\nmodule differently.  Such decisions cannot be pushed off until\nruntime.\n\nFor any given release, the compiler knows which feature names have\nbeen defined, and raises a compile-time error if a future statement\ncontains a feature not known to it.\n\nThe direct runtime semantics are the same as for any import statement:\nthere is a standard module ``__future__``, described later, and it\nwill be imported in the usual way at the time the future statement is\nexecuted.\n\nThe interesting runtime semantics depend on the specific feature\nenabled by the future statement.\n\nNote that there is nothing special about the statement:\n\n   import __future__ [as name]\n\nThat is not a future statement; it\'s an ordinary import statement with\nno special semantics or syntax restrictions.\n\nCode compiled by an ``exec`` statement or calls to the built-in\nfunctions ``compile()`` and ``execfile()`` that occur in a module\n``M`` containing a future statement will, by default, use the new\nsyntax or semantics associated with the future statement.  This can,\nstarting with Python 2.2 be controlled by optional arguments to\n``compile()`` --- see the documentation of that function for details.\n\nA future statement typed at an interactive interpreter prompt will\ntake effect for the rest of the interpreter session.  If an\ninterpreter is started with the *-i* option, is passed a script name\nto execute, and the script includes a future statement, it will be in\neffect in the interactive session started after the script is\nexecuted.\n\nSee also:\n\n   **PEP 236** - Back to the __future__\n      The original proposal for the __future__ mechanism.\n',
- 'in': u'\nComparisons\n***********\n\nUnlike C, all comparison operations in Python have the same priority,\nwhich is lower than that of any arithmetic, shifting or bitwise\noperation.  Also unlike C, expressions like ``a < b < c`` have the\ninterpretation that is conventional in mathematics:\n\n   comparison    ::= or_expr ( comp_operator or_expr )*\n   comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "<>" | "!="\n                     | "is" ["not"] | ["not"] "in"\n\nComparisons yield boolean values: ``True`` or ``False``.\n\nComparisons can be chained arbitrarily, e.g., ``x < y <= z`` is\nequivalent to ``x < y and y <= z``, except that ``y`` is evaluated\nonly once (but in both cases ``z`` is not evaluated at all when ``x <\ny`` is found to be false).\n\nFormally, if *a*, *b*, *c*, ..., *y*, *z* are expressions and *op1*,\n*op2*, ..., *opN* are comparison operators, then ``a op1 b op2 c ... y\nopN z`` is equivalent to ``a op1 b and b op2 c and ... y opN z``,\nexcept that each expression is evaluated at most once.\n\nNote that ``a op1 b op2 c`` doesn\'t imply any kind of comparison\nbetween *a* and *c*, so that, e.g., ``x < y > z`` is perfectly legal\n(though perhaps not pretty).\n\nThe forms ``<>`` and ``!=`` are equivalent; for consistency with C,\n``!=`` is preferred; where ``!=`` is mentioned below ``<>`` is also\naccepted.  The ``<>`` spelling is considered obsolescent.\n\nThe operators ``<``, ``>``, ``==``, ``>=``, ``<=``, and ``!=`` compare\nthe values of two objects.  The objects need not have the same type.\nIf both are numbers, they are converted to a common type.  Otherwise,\nobjects of different types *always* compare unequal, and are ordered\nconsistently but arbitrarily. You can control comparison behavior of\nobjects of non-built-in types by defining a ``__cmp__`` method or rich\ncomparison methods like ``__gt__``, described in section *Special\nmethod names*.\n\n(This unusual definition of comparison was used to simplify the\ndefinition of operations like sorting and the ``in`` and ``not in``\noperators. In the future, the comparison rules for objects of\ndifferent types are likely to change.)\n\nComparison of objects of the same type depends on the type:\n\n* Numbers are compared arithmetically.\n\n* Strings are compared lexicographically using the numeric equivalents\n  (the result of the built-in function ``ord()``) of their characters.\n  Unicode and 8-bit strings are fully interoperable in this behavior.\n  [4]\n\n* Tuples and lists are compared lexicographically using comparison of\n  corresponding elements.  This means that to compare equal, each\n  element must compare equal and the two sequences must be of the same\n  type and have the same length.\n\n  If not equal, the sequences are ordered the same as their first\n  differing elements.  For example, ``cmp([1,2,x], [1,2,y])`` returns\n  the same as ``cmp(x,y)``.  If the corresponding element does not\n  exist, the shorter sequence is ordered first (for example, ``[1,2] <\n  [1,2,3]``).\n\n* Mappings (dictionaries) compare equal if and only if their sorted\n  (key, value) lists compare equal. [5] Outcomes other than equality\n  are resolved consistently, but are not otherwise defined. [6]\n\n* Most other objects of built-in types compare unequal unless they are\n  the same object; the choice whether one object is considered smaller\n  or larger than another one is made arbitrarily but consistently\n  within one execution of a program.\n\nThe operators ``in`` and ``not in`` test for collection membership.\n``x in s`` evaluates to true if *x* is a member of the collection *s*,\nand false otherwise.  ``x not in s`` returns the negation of ``x in\ns``. The collection membership test has traditionally been bound to\nsequences; an object is a member of a collection if the collection is\na sequence and contains an element equal to that object.  However, it\nmake sense for many other object types to support membership tests\nwithout being a sequence.  In particular, dictionaries (for keys) and\nsets support membership testing.\n\nFor the list and tuple types, ``x in y`` is true if and only if there\nexists an index *i* such that ``x == y[i]`` is true.\n\nFor the Unicode and string types, ``x in y`` is true if and only if\n*x* is a substring of *y*.  An equivalent test is ``y.find(x) != -1``.\nNote, *x* and *y* need not be the same type; consequently, ``u\'ab\' in\n\'abc\'`` will return ``True``. Empty strings are always considered to\nbe a substring of any other string, so ``"" in "abc"`` will return\n``True``.\n\nChanged in version 2.3: Previously, *x* was required to be a string of\nlength ``1``.\n\nFor user-defined classes which define the ``__contains__()`` method,\n``x in y`` is true if and only if ``y.__contains__(x)`` is true.\n\nFor user-defined classes which do not define ``__contains__()`` but do\ndefine ``__iter__()``, ``x in y`` is true if some value ``z`` with ``x\n== z`` is produced while iterating over ``y``.  If an exception is\nraised during the iteration, it is as if ``in`` raised that exception.\n\nLastly, the old-style iteration protocol is tried: if a class defines\n``__getitem__()``, ``x in y`` is true if and only if there is a non-\nnegative integer index *i* such that ``x == y[i]``, and all lower\ninteger indices do not raise ``IndexError`` exception. (If any other\nexception is raised, it is as if ``in`` raised that exception).\n\nThe operator ``not in`` is defined to have the inverse true value of\n``in``.\n\nThe operators ``is`` and ``is not`` test for object identity: ``x is\ny`` is true if and only if *x* and *y* are the same object.  ``x is\nnot y`` yields the inverse truth value. [7]\n',
- 'integers': u'\nInteger and long integer literals\n*********************************\n\nInteger and long integer literals are described by the following\nlexical definitions:\n\n   longinteger    ::= integer ("l" | "L")\n   integer        ::= decimalinteger | octinteger | hexinteger | bininteger\n   decimalinteger ::= nonzerodigit digit* | "0"\n   octinteger     ::= "0" ("o" | "O") octdigit+ | "0" octdigit+\n   hexinteger     ::= "0" ("x" | "X") hexdigit+\n   bininteger     ::= "0" ("b" | "B") bindigit+\n   nonzerodigit   ::= "1"..."9"\n   octdigit       ::= "0"..."7"\n   bindigit       ::= "0" | "1"\n   hexdigit       ::= digit | "a"..."f" | "A"..."F"\n\nAlthough both lower case ``\'l\'`` and upper case ``\'L\'`` are allowed as\nsuffix for long integers, it is strongly recommended to always use\n``\'L\'``, since the letter ``\'l\'`` looks too much like the digit\n``\'1\'``.\n\nPlain integer literals that are above the largest representable plain\ninteger (e.g., 2147483647 when using 32-bit arithmetic) are accepted\nas if they were long integers instead. [1]  There is no limit for long\ninteger literals apart from what can be stored in available memory.\n\nSome examples of plain integer literals (first row) and long integer\nliterals (second and third rows):\n\n   7     2147483647                        0177\n   3L    79228162514264337593543950336L    0377L   0x100000000L\n         79228162514264337593543950336             0xdeadbeef\n',
- 'lambda': u'\nLambdas\n*******\n\n   lambda_form     ::= "lambda" [parameter_list]: expression\n   old_lambda_form ::= "lambda" [parameter_list]: old_expression\n\nLambda forms (lambda expressions) have the same syntactic position as\nexpressions.  They are a shorthand to create anonymous functions; the\nexpression ``lambda arguments: expression`` yields a function object.\nThe unnamed object behaves like a function object defined with\n\n   def name(arguments):\n       return expression\n\nSee section *Function definitions* for the syntax of parameter lists.\nNote that functions created with lambda forms cannot contain\nstatements.\n',
- 'lists': u'\nList displays\n*************\n\nA list display is a possibly empty series of expressions enclosed in\nsquare brackets:\n\n   list_display        ::= "[" [expression_list | list_comprehension] "]"\n   list_comprehension  ::= expression list_for\n   list_for            ::= "for" target_list "in" old_expression_list [list_iter]\n   old_expression_list ::= old_expression [("," old_expression)+ [","]]\n   old_expression      ::= or_test | old_lambda_form\n   list_iter           ::= list_for | list_if\n   list_if             ::= "if" old_expression [list_iter]\n\nA list display yields a new list object.  Its contents are specified\nby providing either a list of expressions or a list comprehension.\nWhen a comma-separated list of expressions is supplied, its elements\nare evaluated from left to right and placed into the list object in\nthat order.  When a list comprehension is supplied, it consists of a\nsingle expression followed by at least one ``for`` clause and zero or\nmore ``for`` or ``if`` clauses.  In this case, the elements of the new\nlist are those that would be produced by considering each of the\n``for`` or ``if`` clauses a block, nesting from left to right, and\nevaluating the expression to produce a list element each time the\ninnermost block is reached [1].\n',
- 'naming': u"\nNaming and binding\n******************\n\n*Names* refer to objects.  Names are introduced by name binding\noperations. Each occurrence of a name in the program text refers to\nthe *binding* of that name established in the innermost function block\ncontaining the use.\n\nA *block* is a piece of Python program text that is executed as a\nunit. The following are blocks: a module, a function body, and a class\ndefinition. Each command typed interactively is a block.  A script\nfile (a file given as standard input to the interpreter or specified\non the interpreter command line the first argument) is a code block.\nA script command (a command specified on the interpreter command line\nwith the '**-c**' option) is a code block.  The file read by the\nbuilt-in function ``execfile()`` is a code block.  The string argument\npassed to the built-in function ``eval()`` and to the ``exec``\nstatement is a code block. The expression read and evaluated by the\nbuilt-in function ``input()`` is a code block.\n\nA code block is executed in an *execution frame*.  A frame contains\nsome administrative information (used for debugging) and determines\nwhere and how execution continues after the code block's execution has\ncompleted.\n\nA *scope* defines the visibility of a name within a block.  If a local\nvariable is defined in a block, its scope includes that block.  If the\ndefinition occurs in a function block, the scope extends to any blocks\ncontained within the defining one, unless a contained block introduces\na different binding for the name.  The scope of names defined in a\nclass block is limited to the class block; it does not extend to the\ncode blocks of methods -- this includes generator expressions since\nthey are implemented using a function scope.  This means that the\nfollowing will fail:\n\n   class A:\n       a = 42\n       b = list(a + i for i in range(10))\n\nWhen a name is used in a code block, it is resolved using the nearest\nenclosing scope.  The set of all such scopes visible to a code block\nis called the block's *environment*.\n\nIf a name is bound in a block, it is a local variable of that block.\nIf a name is bound at the module level, it is a global variable.  (The\nvariables of the module code block are local and global.)  If a\nvariable is used in a code block but not defined there, it is a *free\nvariable*.\n\nWhen a name is not found at all, a ``NameError`` exception is raised.\nIf the name refers to a local variable that has not been bound, a\n``UnboundLocalError`` exception is raised.  ``UnboundLocalError`` is a\nsubclass of ``NameError``.\n\nThe following constructs bind names: formal parameters to functions,\n``import`` statements, class and function definitions (these bind the\nclass or function name in the defining block), and targets that are\nidentifiers if occurring in an assignment, ``for`` loop header, in the\nsecond position of an ``except`` clause header or after ``as`` in a\n``with`` statement.  The ``import`` statement of the form ``from ...\nimport *`` binds all names defined in the imported module, except\nthose beginning with an underscore.  This form may only be used at the\nmodule level.\n\nA target occurring in a ``del`` statement is also considered bound for\nthis purpose (though the actual semantics are to unbind the name).  It\nis illegal to unbind a name that is referenced by an enclosing scope;\nthe compiler will report a ``SyntaxError``.\n\nEach assignment or import statement occurs within a block defined by a\nclass or function definition or at the module level (the top-level\ncode block).\n\nIf a name binding operation occurs anywhere within a code block, all\nuses of the name within the block are treated as references to the\ncurrent block.  This can lead to errors when a name is used within a\nblock before it is bound. This rule is subtle.  Python lacks\ndeclarations and allows name binding operations to occur anywhere\nwithin a code block.  The local variables of a code block can be\ndetermined by scanning the entire text of the block for name binding\noperations.\n\nIf the global statement occurs within a block, all uses of the name\nspecified in the statement refer to the binding of that name in the\ntop-level namespace. Names are resolved in the top-level namespace by\nsearching the global namespace, i.e. the namespace of the module\ncontaining the code block, and the builtins namespace, the namespace\nof the module ``__builtin__``.  The global namespace is searched\nfirst.  If the name is not found there, the builtins namespace is\nsearched.  The global statement must precede all uses of the name.\n\nThe builtins namespace associated with the execution of a code block\nis actually found by looking up the name ``__builtins__`` in its\nglobal namespace; this should be a dictionary or a module (in the\nlatter case the module's dictionary is used).  By default, when in the\n``__main__`` module, ``__builtins__`` is the built-in module\n``__builtin__`` (note: no 's'); when in any other module,\n``__builtins__`` is an alias for the dictionary of the ``__builtin__``\nmodule itself.  ``__builtins__`` can be set to a user-created\ndictionary to create a weak form of restricted execution.\n\n**CPython implementation detail:** Users should not touch\n``__builtins__``; it is strictly an implementation detail.  Users\nwanting to override values in the builtins namespace should ``import``\nthe ``__builtin__`` (no 's') module and modify its attributes\nappropriately.\n\nThe namespace for a module is automatically created the first time a\nmodule is imported.  The main module for a script is always called\n``__main__``.\n\nThe ``global`` statement has the same scope as a name binding\noperation in the same block.  If the nearest enclosing scope for a\nfree variable contains a global statement, the free variable is\ntreated as a global.\n\nA class definition is an executable statement that may use and define\nnames. These references follow the normal rules for name resolution.\nThe namespace of the class definition becomes the attribute dictionary\nof the class.  Names defined at the class scope are not visible in\nmethods.\n\n\nInteraction with dynamic features\n=================================\n\nThere are several cases where Python statements are illegal when used\nin conjunction with nested scopes that contain free variables.\n\nIf a variable is referenced in an enclosing scope, it is illegal to\ndelete the name.  An error will be reported at compile time.\n\nIf the wild card form of import --- ``import *`` --- is used in a\nfunction and the function contains or is a nested block with free\nvariables, the compiler will raise a ``SyntaxError``.\n\nIf ``exec`` is used in a function and the function contains or is a\nnested block with free variables, the compiler will raise a\n``SyntaxError`` unless the exec explicitly specifies the local\nnamespace for the ``exec``.  (In other words, ``exec obj`` would be\nillegal, but ``exec obj in ns`` would be legal.)\n\nThe ``eval()``, ``execfile()``, and ``input()`` functions and the\n``exec`` statement do not have access to the full environment for\nresolving names.  Names may be resolved in the local and global\nnamespaces of the caller.  Free variables are not resolved in the\nnearest enclosing namespace, but in the global namespace. [1] The\n``exec`` statement and the ``eval()`` and ``execfile()`` functions\nhave optional arguments to override the global and local namespace.\nIf only one namespace is specified, it is used for both.\n",
- 'numbers': u"\nNumeric literals\n****************\n\nThere are four types of numeric literals: plain integers, long\nintegers, floating point numbers, and imaginary numbers.  There are no\ncomplex literals (complex numbers can be formed by adding a real\nnumber and an imaginary number).\n\nNote that numeric literals do not include a sign; a phrase like ``-1``\nis actually an expression composed of the unary operator '``-``' and\nthe literal ``1``.\n",
- 'numeric-types': u'\nEmulating numeric types\n***********************\n\nThe following methods can be defined to emulate numeric objects.\nMethods corresponding to operations that are not supported by the\nparticular kind of number implemented (e.g., bitwise operations for\nnon-integral numbers) should be left undefined.\n\nobject.__add__(self, other)\nobject.__sub__(self, other)\nobject.__mul__(self, other)\nobject.__floordiv__(self, other)\nobject.__mod__(self, other)\nobject.__divmod__(self, other)\nobject.__pow__(self, other[, modulo])\nobject.__lshift__(self, other)\nobject.__rshift__(self, other)\nobject.__and__(self, other)\nobject.__xor__(self, other)\nobject.__or__(self, other)\n\n   These methods are called to implement the binary arithmetic\n   operations (``+``, ``-``, ``*``, ``//``, ``%``, ``divmod()``,\n   ``pow()``, ``**``, ``<<``, ``>>``, ``&``, ``^``, ``|``).  For\n   instance, to evaluate the expression ``x + y``, where *x* is an\n   instance of a class that has an ``__add__()`` method,\n   ``x.__add__(y)`` is called.  The ``__divmod__()`` method should be\n   the equivalent to using ``__floordiv__()`` and ``__mod__()``; it\n   should not be related to ``__truediv__()`` (described below).  Note\n   that ``__pow__()`` should be defined to accept an optional third\n   argument if the ternary version of the built-in ``pow()`` function\n   is to be supported.\n\n   If one of those methods does not support the operation with the\n   supplied arguments, it should return ``NotImplemented``.\n\nobject.__div__(self, other)\nobject.__truediv__(self, other)\n\n   The division operator (``/``) is implemented by these methods.  The\n   ``__truediv__()`` method is used when ``__future__.division`` is in\n   effect, otherwise ``__div__()`` is used.  If only one of these two\n   methods is defined, the object will not support division in the\n   alternate context; ``TypeError`` will be raised instead.\n\nobject.__radd__(self, other)\nobject.__rsub__(self, other)\nobject.__rmul__(self, other)\nobject.__rdiv__(self, other)\nobject.__rtruediv__(self, other)\nobject.__rfloordiv__(self, other)\nobject.__rmod__(self, other)\nobject.__rdivmod__(self, other)\nobject.__rpow__(self, other)\nobject.__rlshift__(self, other)\nobject.__rrshift__(self, other)\nobject.__rand__(self, other)\nobject.__rxor__(self, other)\nobject.__ror__(self, other)\n\n   These methods are called to implement the binary arithmetic\n   operations (``+``, ``-``, ``*``, ``/``, ``%``, ``divmod()``,\n   ``pow()``, ``**``, ``<<``, ``>>``, ``&``, ``^``, ``|``) with\n   reflected (swapped) operands.  These functions are only called if\n   the left operand does not support the corresponding operation and\n   the operands are of different types. [2] For instance, to evaluate\n   the expression ``x - y``, where *y* is an instance of a class that\n   has an ``__rsub__()`` method, ``y.__rsub__(x)`` is called if\n   ``x.__sub__(y)`` returns *NotImplemented*.\n\n   Note that ternary ``pow()`` will not try calling ``__rpow__()``\n   (the coercion rules would become too complicated).\n\n   Note: If the right operand\'s type is a subclass of the left operand\'s\n     type and that subclass provides the reflected method for the\n     operation, this method will be called before the left operand\'s\n     non-reflected method.  This behavior allows subclasses to\n     override their ancestors\' operations.\n\nobject.__iadd__(self, other)\nobject.__isub__(self, other)\nobject.__imul__(self, other)\nobject.__idiv__(self, other)\nobject.__itruediv__(self, other)\nobject.__ifloordiv__(self, other)\nobject.__imod__(self, other)\nobject.__ipow__(self, other[, modulo])\nobject.__ilshift__(self, other)\nobject.__irshift__(self, other)\nobject.__iand__(self, other)\nobject.__ixor__(self, other)\nobject.__ior__(self, other)\n\n   These methods are called to implement the augmented arithmetic\n   assignments (``+=``, ``-=``, ``*=``, ``/=``, ``//=``, ``%=``,\n   ``**=``, ``<<=``, ``>>=``, ``&=``, ``^=``, ``|=``).  These methods\n   should attempt to do the operation in-place (modifying *self*) and\n   return the result (which could be, but does not have to be,\n   *self*).  If a specific method is not defined, the augmented\n   assignment falls back to the normal methods.  For instance, to\n   execute the statement ``x += y``, where *x* is an instance of a\n   class that has an ``__iadd__()`` method, ``x.__iadd__(y)`` is\n   called.  If *x* is an instance of a class that does not define a\n   ``__iadd__()`` method, ``x.__add__(y)`` and ``y.__radd__(x)`` are\n   considered, as with the evaluation of ``x + y``.\n\nobject.__neg__(self)\nobject.__pos__(self)\nobject.__abs__(self)\nobject.__invert__(self)\n\n   Called to implement the unary arithmetic operations (``-``, ``+``,\n   ``abs()`` and ``~``).\n\nobject.__complex__(self)\nobject.__int__(self)\nobject.__long__(self)\nobject.__float__(self)\n\n   Called to implement the built-in functions ``complex()``,\n   ``int()``, ``long()``, and ``float()``.  Should return a value of\n   the appropriate type.\n\nobject.__oct__(self)\nobject.__hex__(self)\n\n   Called to implement the built-in functions ``oct()`` and ``hex()``.\n   Should return a string value.\n\nobject.__index__(self)\n\n   Called to implement ``operator.index()``.  Also called whenever\n   Python needs an integer object (such as in slicing).  Must return\n   an integer (int or long).\n\n   New in version 2.5.\n\nobject.__coerce__(self, other)\n\n   Called to implement "mixed-mode" numeric arithmetic.  Should either\n   return a 2-tuple containing *self* and *other* converted to a\n   common numeric type, or ``None`` if conversion is impossible.  When\n   the common type would be the type of ``other``, it is sufficient to\n   return ``None``, since the interpreter will also ask the other\n   object to attempt a coercion (but sometimes, if the implementation\n   of the other type cannot be changed, it is useful to do the\n   conversion to the other type here).  A return value of\n   ``NotImplemented`` is equivalent to returning ``None``.\n',
- 'objects': u'\nObjects, values and types\n*************************\n\n*Objects* are Python\'s abstraction for data.  All data in a Python\nprogram is represented by objects or by relations between objects. (In\na sense, and in conformance to Von Neumann\'s model of a "stored\nprogram computer," code is also represented by objects.)\n\nEvery object has an identity, a type and a value.  An object\'s\n*identity* never changes once it has been created; you may think of it\nas the object\'s address in memory.  The \'``is``\' operator compares the\nidentity of two objects; the ``id()`` function returns an integer\nrepresenting its identity (currently implemented as its address). An\nobject\'s *type* is also unchangeable. [1] An object\'s type determines\nthe operations that the object supports (e.g., "does it have a\nlength?") and also defines the possible values for objects of that\ntype.  The ``type()`` function returns an object\'s type (which is an\nobject itself).  The *value* of some objects can change.  Objects\nwhose value can change are said to be *mutable*; objects whose value\nis unchangeable once they are created are called *immutable*. (The\nvalue of an immutable container object that contains a reference to a\nmutable object can change when the latter\'s value is changed; however\nthe container is still considered immutable, because the collection of\nobjects it contains cannot be changed.  So, immutability is not\nstrictly the same as having an unchangeable value, it is more subtle.)\nAn object\'s mutability is determined by its type; for instance,\nnumbers, strings and tuples are immutable, while dictionaries and\nlists are mutable.\n\nObjects are never explicitly destroyed; however, when they become\nunreachable they may be garbage-collected.  An implementation is\nallowed to postpone garbage collection or omit it altogether --- it is\na matter of implementation quality how garbage collection is\nimplemented, as long as no objects are collected that are still\nreachable.\n\n**CPython implementation detail:** CPython currently uses a reference-\ncounting scheme with (optional) delayed detection of cyclically linked\ngarbage, which collects most objects as soon as they become\nunreachable, but is not guaranteed to collect garbage containing\ncircular references.  See the documentation of the ``gc`` module for\ninformation on controlling the collection of cyclic garbage. Other\nimplementations act differently and CPython may change. Do not depend\non immediate finalization of objects when they become unreachable (ex:\nalways close files).\n\nNote that the use of the implementation\'s tracing or debugging\nfacilities may keep objects alive that would normally be collectable.\nAlso note that catching an exception with a \'``try``...``except``\'\nstatement may keep objects alive.\n\nSome objects contain references to "external" resources such as open\nfiles or windows.  It is understood that these resources are freed\nwhen the object is garbage-collected, but since garbage collection is\nnot guaranteed to happen, such objects also provide an explicit way to\nrelease the external resource, usually a ``close()`` method. Programs\nare strongly recommended to explicitly close such objects.  The\n\'``try``...``finally``\' statement provides a convenient way to do\nthis.\n\nSome objects contain references to other objects; these are called\n*containers*. Examples of containers are tuples, lists and\ndictionaries.  The references are part of a container\'s value.  In\nmost cases, when we talk about the value of a container, we imply the\nvalues, not the identities of the contained objects; however, when we\ntalk about the mutability of a container, only the identities of the\nimmediately contained objects are implied.  So, if an immutable\ncontainer (like a tuple) contains a reference to a mutable object, its\nvalue changes if that mutable object is changed.\n\nTypes affect almost all aspects of object behavior.  Even the\nimportance of object identity is affected in some sense: for immutable\ntypes, operations that compute new values may actually return a\nreference to any existing object with the same type and value, while\nfor mutable objects this is not allowed.  E.g., after ``a = 1; b =\n1``, ``a`` and ``b`` may or may not refer to the same object with the\nvalue one, depending on the implementation, but after ``c = []; d =\n[]``, ``c`` and ``d`` are guaranteed to refer to two different,\nunique, newly created empty lists. (Note that ``c = d = []`` assigns\nthe same object to both ``c`` and ``d``.)\n',
- 'operator-summary': u'\nSummary\n*******\n\nThe following table summarizes the operator precedences in Python,\nfrom lowest precedence (least binding) to highest precedence (most\nbinding). Operators in the same box have the same precedence.  Unless\nthe syntax is explicitly given, operators are binary.  Operators in\nthe same box group left to right (except for comparisons, including\ntests, which all have the same precedence and chain from left to right\n--- see section *Comparisons* --- and exponentiation, which groups\nfrom right to left).\n\n+-------------------------------------------------+---------------------------------------+\n| Operator                                        | Description                           |\n+=================================================+=======================================+\n| ``lambda``                                      | Lambda expression                     |\n+-------------------------------------------------+---------------------------------------+\n| ``if`` -- ``else``                              | Conditional expression                |\n+-------------------------------------------------+---------------------------------------+\n| ``or``                                          | Boolean OR                            |\n+-------------------------------------------------+---------------------------------------+\n| ``and``                                         | Boolean AND                           |\n+-------------------------------------------------+---------------------------------------+\n| ``not`` *x*                                     | Boolean NOT                           |\n+-------------------------------------------------+---------------------------------------+\n| ``in``, ``not`` ``in``, ``is``, ``is not``,     | Comparisons, including membership     |\n| ``<``, ``<=``, ``>``, ``>=``, ``<>``, ``!=``,   | tests and identity tests,             |\n| ``==``                                          |                                       |\n+-------------------------------------------------+---------------------------------------+\n| ``|``                                           | Bitwise OR                            |\n+-------------------------------------------------+---------------------------------------+\n| ``^``                                           | Bitwise XOR                           |\n+-------------------------------------------------+---------------------------------------+\n| ``&``                                           | Bitwise AND                           |\n+-------------------------------------------------+---------------------------------------+\n| ``<<``, ``>>``                                  | Shifts                                |\n+-------------------------------------------------+---------------------------------------+\n| ``+``, ``-``                                    | Addition and subtraction              |\n+-------------------------------------------------+---------------------------------------+\n| ``*``, ``/``, ``//``, ``%``                     | Multiplication, division, remainder   |\n|                                                 | [8]                                   |\n+-------------------------------------------------+---------------------------------------+\n| ``+x``, ``-x``, ``~x``                          | Positive, negative, bitwise NOT       |\n+-------------------------------------------------+---------------------------------------+\n| ``**``                                          | Exponentiation [9]                    |\n+-------------------------------------------------+---------------------------------------+\n| ``x[index]``, ``x[index:index]``,               | Subscription, slicing, call,          |\n| ``x(arguments...)``, ``x.attribute``            | attribute reference                   |\n+-------------------------------------------------+---------------------------------------+\n| ``(expressions...)``, ``[expressions...]``,     | Binding or tuple display, list        |\n| ``{key:datum...}``, ```expressions...```        | display, dictionary display, string   |\n|                                                 | conversion                            |\n+-------------------------------------------------+---------------------------------------+\n\n-[ Footnotes ]-\n\n[1] In Python 2.3 and later releases, a list comprehension "leaks" the\n    control variables of each ``for`` it contains into the containing\n    scope.  However, this behavior is deprecated, and relying on it\n    will not work in Python 3.0\n\n[2] While ``abs(x%y) < abs(y)`` is true mathematically, for floats it\n    may not be true numerically due to roundoff.  For example, and\n    assuming a platform on which a Python float is an IEEE 754 double-\n    precision number, in order that ``-1e-100 % 1e100`` have the same\n    sign as ``1e100``, the computed result is ``-1e-100 + 1e100``,\n    which is numerically exactly equal to ``1e100``.  The function\n    ``math.fmod()`` returns a result whose sign matches the sign of\n    the first argument instead, and so returns ``-1e-100`` in this\n    case. Which approach is more appropriate depends on the\n    application.\n\n[3] If x is very close to an exact integer multiple of y, it\'s\n    possible for ``floor(x/y)`` to be one larger than ``(x-x%y)/y``\n    due to rounding.  In such cases, Python returns the latter result,\n    in order to preserve that ``divmod(x,y)[0] * y + x % y`` be very\n    close to ``x``.\n\n[4] While comparisons between unicode strings make sense at the byte\n    level, they may be counter-intuitive to users. For example, the\n    strings ``u"\\u00C7"`` and ``u"\\u0043\\u0327"`` compare differently,\n    even though they both represent the same unicode character (LATIN\n    CAPITAL LETTER C WITH CEDILLA). To compare strings in a human\n    recognizable way, compare using ``unicodedata.normalize()``.\n\n[5] The implementation computes this efficiently, without constructing\n    lists or sorting.\n\n[6] Earlier versions of Python used lexicographic comparison of the\n    sorted (key, value) lists, but this was very expensive for the\n    common case of comparing for equality.  An even earlier version of\n    Python compared dictionaries by identity only, but this caused\n    surprises because people expected to be able to test a dictionary\n    for emptiness by comparing it to ``{}``.\n\n[7] Due to automatic garbage-collection, free lists, and the dynamic\n    nature of descriptors, you may notice seemingly unusual behaviour\n    in certain uses of the ``is`` operator, like those involving\n    comparisons between instance methods, or constants.  Check their\n    documentation for more info.\n\n[8] The ``%`` operator is also used for string formatting; the same\n    precedence applies.\n\n[9] The power operator ``**`` binds less tightly than an arithmetic or\n    bitwise unary operator on its right, that is, ``2**-1`` is\n    ``0.5``.\n',
- 'pass': u'\nThe ``pass`` statement\n**********************\n\n   pass_stmt ::= "pass"\n\n``pass`` is a null operation --- when it is executed, nothing happens.\nIt is useful as a placeholder when a statement is required\nsyntactically, but no code needs to be executed, for example:\n\n   def f(arg): pass    # a function that does nothing (yet)\n\n   class C: pass       # a class with no methods (yet)\n',
- 'power': u'\nThe power operator\n******************\n\nThe power operator binds more tightly than unary operators on its\nleft; it binds less tightly than unary operators on its right.  The\nsyntax is:\n\n   power ::= primary ["**" u_expr]\n\nThus, in an unparenthesized sequence of power and unary operators, the\noperators are evaluated from right to left (this does not constrain\nthe evaluation order for the operands): ``-1**2`` results in ``-1``.\n\nThe power operator has the same semantics as the built-in ``pow()``\nfunction, when called with two arguments: it yields its left argument\nraised to the power of its right argument.  The numeric arguments are\nfirst converted to a common type.  The result type is that of the\narguments after coercion.\n\nWith mixed operand types, the coercion rules for binary arithmetic\noperators apply. For int and long int operands, the result has the\nsame type as the operands (after coercion) unless the second argument\nis negative; in that case, all arguments are converted to float and a\nfloat result is delivered. For example, ``10**2`` returns ``100``, but\n``10**-2`` returns ``0.01``. (This last feature was added in Python\n2.2. In Python 2.1 and before, if both arguments were of integer types\nand the second argument was negative, an exception was raised).\n\nRaising ``0.0`` to a negative power results in a\n``ZeroDivisionError``. Raising a negative number to a fractional power\nresults in a ``ValueError``.\n',
- 'print': u'\nThe ``print`` statement\n***********************\n\n   print_stmt ::= "print" ([expression ("," expression)* [","]]\n                  | ">>" expression [("," expression)+ [","]])\n\n``print`` evaluates each expression in turn and writes the resulting\nobject to standard output (see below).  If an object is not a string,\nit is first converted to a string using the rules for string\nconversions.  The (resulting or original) string is then written.  A\nspace is written before each object is (converted and) written, unless\nthe output system believes it is positioned at the beginning of a\nline.  This is the case (1) when no characters have yet been written\nto standard output, (2) when the last character written to standard\noutput is a whitespace character except ``\' \'``, or (3) when the last\nwrite operation on standard output was not a ``print`` statement. (In\nsome cases it may be functional to write an empty string to standard\noutput for this reason.)\n\nNote: Objects which act like file objects but which are not the built-in\n  file objects often do not properly emulate this aspect of the file\n  object\'s behavior, so it is best not to rely on this.\n\nA ``\'\\n\'`` character is written at the end, unless the ``print``\nstatement ends with a comma.  This is the only action if the statement\ncontains just the keyword ``print``.\n\nStandard output is defined as the file object named ``stdout`` in the\nbuilt-in module ``sys``.  If no such object exists, or if it does not\nhave a ``write()`` method, a ``RuntimeError`` exception is raised.\n\n``print`` also has an extended form, defined by the second portion of\nthe syntax described above. This form is sometimes referred to as\n"``print`` chevron." In this form, the first expression after the\n``>>`` must evaluate to a "file-like" object, specifically an object\nthat has a ``write()`` method as described above.  With this extended\nform, the subsequent expressions are printed to this file object.  If\nthe first expression evaluates to ``None``, then ``sys.stdout`` is\nused as the file for output.\n',
- 'raise': u'\nThe ``raise`` statement\n***********************\n\n   raise_stmt ::= "raise" [expression ["," expression ["," expression]]]\n\nIf no expressions are present, ``raise`` re-raises the last exception\nthat was active in the current scope.  If no exception is active in\nthe current scope, a ``TypeError`` exception is raised indicating that\nthis is an error (if running under IDLE, a ``Queue.Empty`` exception\nis raised instead).\n\nOtherwise, ``raise`` evaluates the expressions to get three objects,\nusing ``None`` as the value of omitted expressions.  The first two\nobjects are used to determine the *type* and *value* of the exception.\n\nIf the first object is an instance, the type of the exception is the\nclass of the instance, the instance itself is the value, and the\nsecond object must be ``None``.\n\nIf the first object is a class, it becomes the type of the exception.\nThe second object is used to determine the exception value: If it is\nan instance of the class, the instance becomes the exception value. If\nthe second object is a tuple, it is used as the argument list for the\nclass constructor; if it is ``None``, an empty argument list is used,\nand any other object is treated as a single argument to the\nconstructor.  The instance so created by calling the constructor is\nused as the exception value.\n\nIf a third object is present and not ``None``, it must be a traceback\nobject (see section *The standard type hierarchy*), and it is\nsubstituted instead of the current location as the place where the\nexception occurred.  If the third object is present and not a\ntraceback object or ``None``, a ``TypeError`` exception is raised.\nThe three-expression form of ``raise`` is useful to re-raise an\nexception transparently in an except clause, but ``raise`` with no\nexpressions should be preferred if the exception to be re-raised was\nthe most recently active exception in the current scope.\n\nAdditional information on exceptions can be found in section\n*Exceptions*, and information about handling exceptions is in section\n*The try statement*.\n',
- 'return': u'\nThe ``return`` statement\n************************\n\n   return_stmt ::= "return" [expression_list]\n\n``return`` may only occur syntactically nested in a function\ndefinition, not within a nested class definition.\n\nIf an expression list is present, it is evaluated, else ``None`` is\nsubstituted.\n\n``return`` leaves the current function call with the expression list\n(or ``None``) as return value.\n\nWhen ``return`` passes control out of a ``try`` statement with a\n``finally`` clause, that ``finally`` clause is executed before really\nleaving the function.\n\nIn a generator function, the ``return`` statement is not allowed to\ninclude an **expression_list**.  In that context, a bare ``return``\nindicates that the generator is done and will cause ``StopIteration``\nto be raised.\n',
- 'sequence-methods': u'\nAdditional methods for emulation of sequence types\n**************************************************\n\nThe following optional methods can be defined to further emulate\nsequence objects.  Immutable sequences methods should at most only\ndefine ``__getslice__()``; mutable sequences might define all three\nmethods.\n\nobject.__getslice__(self, i, j)\n\n   Deprecated since version 2.0: Support slice objects as parameters\n   to the ``__getitem__()`` method. (However, built-in types in\n   CPython currently still implement ``__getslice__()``.  Therefore,\n   you have to override it in derived classes when implementing\n   slicing.)\n\n   Called to implement evaluation of ``self[i:j]``. The returned\n   object should be of the same type as *self*.  Note that missing *i*\n   or *j* in the slice expression are replaced by zero or\n   ``sys.maxint``, respectively.  If negative indexes are used in the\n   slice, the length of the sequence is added to that index. If the\n   instance does not implement the ``__len__()`` method, an\n   ``AttributeError`` is raised. No guarantee is made that indexes\n   adjusted this way are not still negative.  Indexes which are\n   greater than the length of the sequence are not modified. If no\n   ``__getslice__()`` is found, a slice object is created instead, and\n   passed to ``__getitem__()`` instead.\n\nobject.__setslice__(self, i, j, sequence)\n\n   Called to implement assignment to ``self[i:j]``. Same notes for *i*\n   and *j* as for ``__getslice__()``.\n\n   This method is deprecated. If no ``__setslice__()`` is found, or\n   for extended slicing of the form ``self[i:j:k]``, a slice object is\n   created, and passed to ``__setitem__()``, instead of\n   ``__setslice__()`` being called.\n\nobject.__delslice__(self, i, j)\n\n   Called to implement deletion of ``self[i:j]``. Same notes for *i*\n   and *j* as for ``__getslice__()``. This method is deprecated. If no\n   ``__delslice__()`` is found, or for extended slicing of the form\n   ``self[i:j:k]``, a slice object is created, and passed to\n   ``__delitem__()``, instead of ``__delslice__()`` being called.\n\nNotice that these methods are only invoked when a single slice with a\nsingle colon is used, and the slice method is available.  For slice\noperations involving extended slice notation, or in absence of the\nslice methods, ``__getitem__()``, ``__setitem__()`` or\n``__delitem__()`` is called with a slice object as argument.\n\nThe following example demonstrate how to make your program or module\ncompatible with earlier versions of Python (assuming that methods\n``__getitem__()``, ``__setitem__()`` and ``__delitem__()`` support\nslice objects as arguments):\n\n   class MyClass:\n       ...\n       def __getitem__(self, index):\n           ...\n       def __setitem__(self, index, value):\n           ...\n       def __delitem__(self, index):\n           ...\n\n       if sys.version_info < (2, 0):\n           # They won\'t be defined if version is at least 2.0 final\n\n           def __getslice__(self, i, j):\n               return self[max(0, i):max(0, j):]\n           def __setslice__(self, i, j, seq):\n               self[max(0, i):max(0, j):] = seq\n           def __delslice__(self, i, j):\n               del self[max(0, i):max(0, j):]\n       ...\n\nNote the calls to ``max()``; these are necessary because of the\nhandling of negative indices before the ``__*slice__()`` methods are\ncalled.  When negative indexes are used, the ``__*item__()`` methods\nreceive them as provided, but the ``__*slice__()`` methods get a\n"cooked" form of the index values.  For each negative index value, the\nlength of the sequence is added to the index before calling the method\n(which may still result in a negative index); this is the customary\nhandling of negative indexes by the built-in sequence types, and the\n``__*item__()`` methods are expected to do this as well.  However,\nsince they should already be doing that, negative indexes cannot be\npassed in; they must be constrained to the bounds of the sequence\nbefore being passed to the ``__*item__()`` methods. Calling ``max(0,\ni)`` conveniently returns the proper value.\n',
- 'sequence-types': u"\nEmulating container types\n*************************\n\nThe following methods can be defined to implement container objects.\nContainers usually are sequences (such as lists or tuples) or mappings\n(like dictionaries), but can represent other containers as well.  The\nfirst set of methods is used either to emulate a sequence or to\nemulate a mapping; the difference is that for a sequence, the\nallowable keys should be the integers *k* for which ``0 <= k < N``\nwhere *N* is the length of the sequence, or slice objects, which\ndefine a range of items. (For backwards compatibility, the method\n``__getslice__()`` (see below) can also be defined to handle simple,\nbut not extended slices.) It is also recommended that mappings provide\nthe methods ``keys()``, ``values()``, ``items()``, ``has_key()``,\n``get()``, ``clear()``, ``setdefault()``, ``iterkeys()``,\n``itervalues()``, ``iteritems()``, ``pop()``, ``popitem()``,\n``copy()``, and ``update()`` behaving similar to those for Python's\nstandard dictionary objects.  The ``UserDict`` module provides a\n``DictMixin`` class to help create those methods from a base set of\n``__getitem__()``, ``__setitem__()``, ``__delitem__()``, and\n``keys()``. Mutable sequences should provide methods ``append()``,\n``count()``, ``index()``, ``extend()``, ``insert()``, ``pop()``,\n``remove()``, ``reverse()`` and ``sort()``, like Python standard list\nobjects.  Finally, sequence types should implement addition (meaning\nconcatenation) and multiplication (meaning repetition) by defining the\nmethods ``__add__()``, ``__radd__()``, ``__iadd__()``, ``__mul__()``,\n``__rmul__()`` and ``__imul__()`` described below; they should not\ndefine ``__coerce__()`` or other numerical operators.  It is\nrecommended that both mappings and sequences implement the\n``__contains__()`` method to allow efficient use of the ``in``\noperator; for mappings, ``in`` should be equivalent of ``has_key()``;\nfor sequences, it should search through the values.  It is further\nrecommended that both mappings and sequences implement the\n``__iter__()`` method to allow efficient iteration through the\ncontainer; for mappings, ``__iter__()`` should be the same as\n``iterkeys()``; for sequences, it should iterate through the values.\n\nobject.__len__(self)\n\n   Called to implement the built-in function ``len()``.  Should return\n   the length of the object, an integer ``>=`` 0.  Also, an object\n   that doesn't define a ``__nonzero__()`` method and whose\n   ``__len__()`` method returns zero is considered to be false in a\n   Boolean context.\n\nobject.__getitem__(self, key)\n\n   Called to implement evaluation of ``self[key]``. For sequence\n   types, the accepted keys should be integers and slice objects.\n   Note that the special interpretation of negative indexes (if the\n   class wishes to emulate a sequence type) is up to the\n   ``__getitem__()`` method. If *key* is of an inappropriate type,\n   ``TypeError`` may be raised; if of a value outside the set of\n   indexes for the sequence (after any special interpretation of\n   negative values), ``IndexError`` should be raised. For mapping\n   types, if *key* is missing (not in the container), ``KeyError``\n   should be raised.\n\n   Note: ``for`` loops expect that an ``IndexError`` will be raised for\n     illegal indexes to allow proper detection of the end of the\n     sequence.\n\nobject.__setitem__(self, key, value)\n\n   Called to implement assignment to ``self[key]``.  Same note as for\n   ``__getitem__()``.  This should only be implemented for mappings if\n   the objects support changes to the values for keys, or if new keys\n   can be added, or for sequences if elements can be replaced.  The\n   same exceptions should be raised for improper *key* values as for\n   the ``__getitem__()`` method.\n\nobject.__delitem__(self, key)\n\n   Called to implement deletion of ``self[key]``.  Same note as for\n   ``__getitem__()``.  This should only be implemented for mappings if\n   the objects support removal of keys, or for sequences if elements\n   can be removed from the sequence.  The same exceptions should be\n   raised for improper *key* values as for the ``__getitem__()``\n   method.\n\nobject.__iter__(self)\n\n   This method is called when an iterator is required for a container.\n   This method should return a new iterator object that can iterate\n   over all the objects in the container.  For mappings, it should\n   iterate over the keys of the container, and should also be made\n   available as the method ``iterkeys()``.\n\n   Iterator objects also need to implement this method; they are\n   required to return themselves.  For more information on iterator\n   objects, see *Iterator Types*.\n\nobject.__reversed__(self)\n\n   Called (if present) by the ``reversed()`` built-in to implement\n   reverse iteration.  It should return a new iterator object that\n   iterates over all the objects in the container in reverse order.\n\n   If the ``__reversed__()`` method is not provided, the\n   ``reversed()`` built-in will fall back to using the sequence\n   protocol (``__len__()`` and ``__getitem__()``).  Objects that\n   support the sequence protocol should only provide\n   ``__reversed__()`` if they can provide an implementation that is\n   more efficient than the one provided by ``reversed()``.\n\n   New in version 2.6.\n\nThe membership test operators (``in`` and ``not in``) are normally\nimplemented as an iteration through a sequence.  However, container\nobjects can supply the following special method with a more efficient\nimplementation, which also does not require the object be a sequence.\n\nobject.__contains__(self, item)\n\n   Called to implement membership test operators.  Should return true\n   if *item* is in *self*, false otherwise.  For mapping objects, this\n   should consider the keys of the mapping rather than the values or\n   the key-item pairs.\n\n   For objects that don't define ``__contains__()``, the membership\n   test first tries iteration via ``__iter__()``, then the old\n   sequence iteration protocol via ``__getitem__()``, see *this\n   section in the language reference*.\n",
- 'shifting': u'\nShifting operations\n*******************\n\nThe shifting operations have lower priority than the arithmetic\noperations:\n\n   shift_expr ::= a_expr | shift_expr ( "<<" | ">>" ) a_expr\n\nThese operators accept plain or long integers as arguments.  The\narguments are converted to a common type.  They shift the first\nargument to the left or right by the number of bits given by the\nsecond argument.\n\nA right shift by *n* bits is defined as division by ``pow(2, n)``.  A\nleft shift by *n* bits is defined as multiplication with ``pow(2,\nn)``.  Negative shift counts raise a ``ValueError`` exception.\n\nNote: In the current implementation, the right-hand operand is required to\n  be at most ``sys.maxsize``.  If the right-hand operand is larger\n  than ``sys.maxsize`` an ``OverflowError`` exception is raised.\n',
- 'slicings': u'\nSlicings\n********\n\nA slicing selects a range of items in a sequence object (e.g., a\nstring, tuple or list).  Slicings may be used as expressions or as\ntargets in assignment or ``del`` statements.  The syntax for a\nslicing:\n\n   slicing          ::= simple_slicing | extended_slicing\n   simple_slicing   ::= primary "[" short_slice "]"\n   extended_slicing ::= primary "[" slice_list "]"\n   slice_list       ::= slice_item ("," slice_item)* [","]\n   slice_item       ::= expression | proper_slice | ellipsis\n   proper_slice     ::= short_slice | long_slice\n   short_slice      ::= [lower_bound] ":" [upper_bound]\n   long_slice       ::= short_slice ":" [stride]\n   lower_bound      ::= expression\n   upper_bound      ::= expression\n   stride           ::= expression\n   ellipsis         ::= "..."\n\nThere is ambiguity in the formal syntax here: anything that looks like\nan expression list also looks like a slice list, so any subscription\ncan be interpreted as a slicing.  Rather than further complicating the\nsyntax, this is disambiguated by defining that in this case the\ninterpretation as a subscription takes priority over the\ninterpretation as a slicing (this is the case if the slice list\ncontains no proper slice nor ellipses).  Similarly, when the slice\nlist has exactly one short slice and no trailing comma, the\ninterpretation as a simple slicing takes priority over that as an\nextended slicing.\n\nThe semantics for a simple slicing are as follows.  The primary must\nevaluate to a sequence object.  The lower and upper bound expressions,\nif present, must evaluate to plain integers; defaults are zero and the\n``sys.maxint``, respectively.  If either bound is negative, the\nsequence\'s length is added to it.  The slicing now selects all items\nwith index *k* such that ``i <= k < j`` where *i* and *j* are the\nspecified lower and upper bounds.  This may be an empty sequence.  It\nis not an error if *i* or *j* lie outside the range of valid indexes\n(such items don\'t exist so they aren\'t selected).\n\nThe semantics for an extended slicing are as follows.  The primary\nmust evaluate to a mapping object, and it is indexed with a key that\nis constructed from the slice list, as follows.  If the slice list\ncontains at least one comma, the key is a tuple containing the\nconversion of the slice items; otherwise, the conversion of the lone\nslice item is the key.  The conversion of a slice item that is an\nexpression is that expression.  The conversion of an ellipsis slice\nitem is the built-in ``Ellipsis`` object.  The conversion of a proper\nslice is a slice object (see section *The standard type hierarchy*)\nwhose ``start``, ``stop`` and ``step`` attributes are the values of\nthe expressions given as lower bound, upper bound and stride,\nrespectively, substituting ``None`` for missing expressions.\n',
- 'specialattrs': u"\nSpecial Attributes\n******************\n\nThe implementation adds a few special read-only attributes to several\nobject types, where they are relevant.  Some of these are not reported\nby the ``dir()`` built-in function.\n\nobject.__dict__\n\n   A dictionary or other mapping object used to store an object's\n   (writable) attributes.\n\nobject.__methods__\n\n   Deprecated since version 2.2: Use the built-in function ``dir()``\n   to get a list of an object's attributes. This attribute is no\n   longer available.\n\nobject.__members__\n\n   Deprecated since version 2.2: Use the built-in function ``dir()``\n   to get a list of an object's attributes. This attribute is no\n   longer available.\n\ninstance.__class__\n\n   The class to which a class instance belongs.\n\nclass.__bases__\n\n   The tuple of base classes of a class object.\n\nclass.__name__\n\n   The name of the class or type.\n\nThe following attributes are only supported by *new-style class*es.\n\nclass.__mro__\n\n   This attribute is a tuple of classes that are considered when\n   looking for base classes during method resolution.\n\nclass.mro()\n\n   This method can be overridden by a metaclass to customize the\n   method resolution order for its instances.  It is called at class\n   instantiation, and its result is stored in ``__mro__``.\n\nclass.__subclasses__()\n\n   Each new-style class keeps a list of weak references to its\n   immediate subclasses.  This method returns a list of all those\n   references still alive. Example:\n\n      >>> int.__subclasses__()\n      [<type 'bool'>]\n\n-[ Footnotes ]-\n\n[1] Additional information on these special methods may be found in\n    the Python Reference Manual (*Basic customization*).\n\n[2] As a consequence, the list ``[1, 2]`` is considered equal to\n    ``[1.0, 2.0]``, and similarly for tuples.\n\n[3] They must have since the parser can't tell the type of the\n    operands.\n\n[4] To format only a tuple you should therefore provide a singleton\n    tuple whose only element is the tuple to be formatted.\n\n[5] The advantage of leaving the newline on is that returning an empty\n    string is then an unambiguous EOF indication.  It is also possible\n    (in cases where it might matter, for example, if you want to make\n    an exact copy of a file while scanning its lines) to tell whether\n    the last line of a file ended in a newline or not (yes this\n    happens!).\n",
- 'specialnames': u'\nSpecial method names\n********************\n\nA class can implement certain operations that are invoked by special\nsyntax (such as arithmetic operations or subscripting and slicing) by\ndefining methods with special names. This is Python\'s approach to\n*operator overloading*, allowing classes to define their own behavior\nwith respect to language operators.  For instance, if a class defines\na method named ``__getitem__()``, and ``x`` is an instance of this\nclass, then ``x[i]`` is roughly equivalent to ``x.__getitem__(i)`` for\nold-style classes and ``type(x).__getitem__(x, i)`` for new-style\nclasses.  Except where mentioned, attempts to execute an operation\nraise an exception when no appropriate method is defined (typically\n``AttributeError`` or ``TypeError``).\n\nWhen implementing a class that emulates any built-in type, it is\nimportant that the emulation only be implemented to the degree that it\nmakes sense for the object being modelled.  For example, some\nsequences may work well with retrieval of individual elements, but\nextracting a slice may not make sense.  (One example of this is the\n``NodeList`` interface in the W3C\'s Document Object Model.)\n\n\nBasic customization\n===================\n\nobject.__new__(cls[, ...])\n\n   Called to create a new instance of class *cls*.  ``__new__()`` is a\n   static method (special-cased so you need not declare it as such)\n   that takes the class of which an instance was requested as its\n   first argument.  The remaining arguments are those passed to the\n   object constructor expression (the call to the class).  The return\n   value of ``__new__()`` should be the new object instance (usually\n   an instance of *cls*).\n\n   Typical implementations create a new instance of the class by\n   invoking the superclass\'s ``__new__()`` method using\n   ``super(currentclass, cls).__new__(cls[, ...])`` with appropriate\n   arguments and then modifying the newly-created instance as\n   necessary before returning it.\n\n   If ``__new__()`` returns an instance of *cls*, then the new\n   instance\'s ``__init__()`` method will be invoked like\n   ``__init__(self[, ...])``, where *self* is the new instance and the\n   remaining arguments are the same as were passed to ``__new__()``.\n\n   If ``__new__()`` does not return an instance of *cls*, then the new\n   instance\'s ``__init__()`` method will not be invoked.\n\n   ``__new__()`` is intended mainly to allow subclasses of immutable\n   types (like int, str, or tuple) to customize instance creation.  It\n   is also commonly overridden in custom metaclasses in order to\n   customize class creation.\n\nobject.__init__(self[, ...])\n\n   Called when the instance is created.  The arguments are those\n   passed to the class constructor expression.  If a base class has an\n   ``__init__()`` method, the derived class\'s ``__init__()`` method,\n   if any, must explicitly call it to ensure proper initialization of\n   the base class part of the instance; for example:\n   ``BaseClass.__init__(self, [args...])``.  As a special constraint\n   on constructors, no value may be returned; doing so will cause a\n   ``TypeError`` to be raised at runtime.\n\nobject.__del__(self)\n\n   Called when the instance is about to be destroyed.  This is also\n   called a destructor.  If a base class has a ``__del__()`` method,\n   the derived class\'s ``__del__()`` method, if any, must explicitly\n   call it to ensure proper deletion of the base class part of the\n   instance.  Note that it is possible (though not recommended!) for\n   the ``__del__()`` method to postpone destruction of the instance by\n   creating a new reference to it.  It may then be called at a later\n   time when this new reference is deleted.  It is not guaranteed that\n   ``__del__()`` methods are called for objects that still exist when\n   the interpreter exits.\n\n   Note: ``del x`` doesn\'t directly call ``x.__del__()`` --- the former\n     decrements the reference count for ``x`` by one, and the latter\n     is only called when ``x``\'s reference count reaches zero.  Some\n     common situations that may prevent the reference count of an\n     object from going to zero include: circular references between\n     objects (e.g., a doubly-linked list or a tree data structure with\n     parent and child pointers); a reference to the object on the\n     stack frame of a function that caught an exception (the traceback\n     stored in ``sys.exc_traceback`` keeps the stack frame alive); or\n     a reference to the object on the stack frame that raised an\n     unhandled exception in interactive mode (the traceback stored in\n     ``sys.last_traceback`` keeps the stack frame alive).  The first\n     situation can only be remedied by explicitly breaking the cycles;\n     the latter two situations can be resolved by storing ``None`` in\n     ``sys.exc_traceback`` or ``sys.last_traceback``.  Circular\n     references which are garbage are detected when the option cycle\n     detector is enabled (it\'s on by default), but can only be cleaned\n     up if there are no Python-level ``__del__()`` methods involved.\n     Refer to the documentation for the ``gc`` module for more\n     information about how ``__del__()`` methods are handled by the\n     cycle detector, particularly the description of the ``garbage``\n     value.\n\n   Warning: Due to the precarious circumstances under which ``__del__()``\n     methods are invoked, exceptions that occur during their execution\n     are ignored, and a warning is printed to ``sys.stderr`` instead.\n     Also, when ``__del__()`` is invoked in response to a module being\n     deleted (e.g., when execution of the program is done), other\n     globals referenced by the ``__del__()`` method may already have\n     been deleted or in the process of being torn down (e.g. the\n     import machinery shutting down).  For this reason, ``__del__()``\n     methods should do the absolute minimum needed to maintain\n     external invariants.  Starting with version 1.5, Python\n     guarantees that globals whose name begins with a single\n     underscore are deleted from their module before other globals are\n     deleted; if no other references to such globals exist, this may\n     help in assuring that imported modules are still available at the\n     time when the ``__del__()`` method is called.\n\nobject.__repr__(self)\n\n   Called by the ``repr()`` built-in function and by string\n   conversions (reverse quotes) to compute the "official" string\n   representation of an object.  If at all possible, this should look\n   like a valid Python expression that could be used to recreate an\n   object with the same value (given an appropriate environment).  If\n   this is not possible, a string of the form ``<...some useful\n   description...>`` should be returned.  The return value must be a\n   string object. If a class defines ``__repr__()`` but not\n   ``__str__()``, then ``__repr__()`` is also used when an "informal"\n   string representation of instances of that class is required.\n\n   This is typically used for debugging, so it is important that the\n   representation is information-rich and unambiguous.\n\nobject.__str__(self)\n\n   Called by the ``str()`` built-in function and by the ``print``\n   statement to compute the "informal" string representation of an\n   object.  This differs from ``__repr__()`` in that it does not have\n   to be a valid Python expression: a more convenient or concise\n   representation may be used instead. The return value must be a\n   string object.\n\nobject.__lt__(self, other)\nobject.__le__(self, other)\nobject.__eq__(self, other)\nobject.__ne__(self, other)\nobject.__gt__(self, other)\nobject.__ge__(self, other)\n\n   New in version 2.1.\n\n   These are the so-called "rich comparison" methods, and are called\n   for comparison operators in preference to ``__cmp__()`` below. The\n   correspondence between operator symbols and method names is as\n   follows: ``x<y`` calls ``x.__lt__(y)``, ``x<=y`` calls\n   ``x.__le__(y)``, ``x==y`` calls ``x.__eq__(y)``, ``x!=y`` and\n   ``x<>y`` call ``x.__ne__(y)``, ``x>y`` calls ``x.__gt__(y)``, and\n   ``x>=y`` calls ``x.__ge__(y)``.\n\n   A rich comparison method may return the singleton\n   ``NotImplemented`` if it does not implement the operation for a\n   given pair of arguments. By convention, ``False`` and ``True`` are\n   returned for a successful comparison. However, these methods can\n   return any value, so if the comparison operator is used in a\n   Boolean context (e.g., in the condition of an ``if`` statement),\n   Python will call ``bool()`` on the value to determine if the result\n   is true or false.\n\n   There are no implied relationships among the comparison operators.\n   The truth of ``x==y`` does not imply that ``x!=y`` is false.\n   Accordingly, when defining ``__eq__()``, one should also define\n   ``__ne__()`` so that the operators will behave as expected.  See\n   the paragraph on ``__hash__()`` for some important notes on\n   creating *hashable* objects which support custom comparison\n   operations and are usable as dictionary keys.\n\n   There are no swapped-argument versions of these methods (to be used\n   when the left argument does not support the operation but the right\n   argument does); rather, ``__lt__()`` and ``__gt__()`` are each\n   other\'s reflection, ``__le__()`` and ``__ge__()`` are each other\'s\n   reflection, and ``__eq__()`` and ``__ne__()`` are their own\n   reflection.\n\n   Arguments to rich comparison methods are never coerced.\n\n   To automatically generate ordering operations from a single root\n   operation, see ``functools.total_ordering()``.\n\nobject.__cmp__(self, other)\n\n   Called by comparison operations if rich comparison (see above) is\n   not defined.  Should return a negative integer if ``self < other``,\n   zero if ``self == other``, a positive integer if ``self > other``.\n   If no ``__cmp__()``, ``__eq__()`` or ``__ne__()`` operation is\n   defined, class instances are compared by object identity\n   ("address").  See also the description of ``__hash__()`` for some\n   important notes on creating *hashable* objects which support custom\n   comparison operations and are usable as dictionary keys. (Note: the\n   restriction that exceptions are not propagated by ``__cmp__()`` has\n   been removed since Python 1.5.)\n\nobject.__rcmp__(self, other)\n\n   Changed in version 2.1: No longer supported.\n\nobject.__hash__(self)\n\n   Called by built-in function ``hash()`` and for operations on\n   members of hashed collections including ``set``, ``frozenset``, and\n   ``dict``.  ``__hash__()`` should return an integer.  The only\n   required property is that objects which compare equal have the same\n   hash value; it is advised to somehow mix together (e.g. using\n   exclusive or) the hash values for the components of the object that\n   also play a part in comparison of objects.\n\n   If a class does not define a ``__cmp__()`` or ``__eq__()`` method\n   it should not define a ``__hash__()`` operation either; if it\n   defines ``__cmp__()`` or ``__eq__()`` but not ``__hash__()``, its\n   instances will not be usable in hashed collections.  If a class\n   defines mutable objects and implements a ``__cmp__()`` or\n   ``__eq__()`` method, it should not implement ``__hash__()``, since\n   hashable collection implementations require that a object\'s hash\n   value is immutable (if the object\'s hash value changes, it will be\n   in the wrong hash bucket).\n\n   User-defined classes have ``__cmp__()`` and ``__hash__()`` methods\n   by default; with them, all objects compare unequal (except with\n   themselves) and ``x.__hash__()`` returns ``id(x)``.\n\n   Classes which inherit a ``__hash__()`` method from a parent class\n   but change the meaning of ``__cmp__()`` or ``__eq__()`` such that\n   the hash value returned is no longer appropriate (e.g. by switching\n   to a value-based concept of equality instead of the default\n   identity based equality) can explicitly flag themselves as being\n   unhashable by setting ``__hash__ = None`` in the class definition.\n   Doing so means that not only will instances of the class raise an\n   appropriate ``TypeError`` when a program attempts to retrieve their\n   hash value, but they will also be correctly identified as\n   unhashable when checking ``isinstance(obj, collections.Hashable)``\n   (unlike classes which define their own ``__hash__()`` to explicitly\n   raise ``TypeError``).\n\n   Changed in version 2.5: ``__hash__()`` may now also return a long\n   integer object; the 32-bit integer is then derived from the hash of\n   that object.\n\n   Changed in version 2.6: ``__hash__`` may now be set to ``None`` to\n   explicitly flag instances of a class as unhashable.\n\nobject.__nonzero__(self)\n\n   Called to implement truth value testing and the built-in operation\n   ``bool()``; should return ``False`` or ``True``, or their integer\n   equivalents ``0`` or ``1``.  When this method is not defined,\n   ``__len__()`` is called, if it is defined, and the object is\n   considered true if its result is nonzero. If a class defines\n   neither ``__len__()`` nor ``__nonzero__()``, all its instances are\n   considered true.\n\nobject.__unicode__(self)\n\n   Called to implement ``unicode()`` built-in; should return a Unicode\n   object. When this method is not defined, string conversion is\n   attempted, and the result of string conversion is converted to\n   Unicode using the system default encoding.\n\n\nCustomizing attribute access\n============================\n\nThe following methods can be defined to customize the meaning of\nattribute access (use of, assignment to, or deletion of ``x.name``)\nfor class instances.\n\nobject.__getattr__(self, name)\n\n   Called when an attribute lookup has not found the attribute in the\n   usual places (i.e. it is not an instance attribute nor is it found\n   in the class tree for ``self``).  ``name`` is the attribute name.\n   This method should return the (computed) attribute value or raise\n   an ``AttributeError`` exception.\n\n   Note that if the attribute is found through the normal mechanism,\n   ``__getattr__()`` is not called.  (This is an intentional asymmetry\n   between ``__getattr__()`` and ``__setattr__()``.) This is done both\n   for efficiency reasons and because otherwise ``__getattr__()``\n   would have no way to access other attributes of the instance.  Note\n   that at least for instance variables, you can fake total control by\n   not inserting any values in the instance attribute dictionary (but\n   instead inserting them in another object).  See the\n   ``__getattribute__()`` method below for a way to actually get total\n   control in new-style classes.\n\nobject.__setattr__(self, name, value)\n\n   Called when an attribute assignment is attempted.  This is called\n   instead of the normal mechanism (i.e. store the value in the\n   instance dictionary).  *name* is the attribute name, *value* is the\n   value to be assigned to it.\n\n   If ``__setattr__()`` wants to assign to an instance attribute, it\n   should not simply execute ``self.name = value`` --- this would\n   cause a recursive call to itself.  Instead, it should insert the\n   value in the dictionary of instance attributes, e.g.,\n   ``self.__dict__[name] = value``.  For new-style classes, rather\n   than accessing the instance dictionary, it should call the base\n   class method with the same name, for example,\n   ``object.__setattr__(self, name, value)``.\n\nobject.__delattr__(self, name)\n\n   Like ``__setattr__()`` but for attribute deletion instead of\n   assignment.  This should only be implemented if ``del obj.name`` is\n   meaningful for the object.\n\n\nMore attribute access for new-style classes\n-------------------------------------------\n\nThe following methods only apply to new-style classes.\n\nobject.__getattribute__(self, name)\n\n   Called unconditionally to implement attribute accesses for\n   instances of the class. If the class also defines\n   ``__getattr__()``, the latter will not be called unless\n   ``__getattribute__()`` either calls it explicitly or raises an\n   ``AttributeError``. This method should return the (computed)\n   attribute value or raise an ``AttributeError`` exception. In order\n   to avoid infinite recursion in this method, its implementation\n   should always call the base class method with the same name to\n   access any attributes it needs, for example,\n   ``object.__getattribute__(self, name)``.\n\n   Note: This method may still be bypassed when looking up special methods\n     as the result of implicit invocation via language syntax or\n     built-in functions. See *Special method lookup for new-style\n     classes*.\n\n\nImplementing Descriptors\n------------------------\n\nThe following methods only apply when an instance of the class\ncontaining the method (a so-called *descriptor* class) appears in an\n*owner* class (the descriptor must be in either the owner\'s class\ndictionary or in the class dictionary for one of its parents).  In the\nexamples below, "the attribute" refers to the attribute whose name is\nthe key of the property in the owner class\' ``__dict__``.\n\nobject.__get__(self, instance, owner)\n\n   Called to get the attribute of the owner class (class attribute\n   access) or of an instance of that class (instance attribute\n   access). *owner* is always the owner class, while *instance* is the\n   instance that the attribute was accessed through, or ``None`` when\n   the attribute is accessed through the *owner*.  This method should\n   return the (computed) attribute value or raise an\n   ``AttributeError`` exception.\n\nobject.__set__(self, instance, value)\n\n   Called to set the attribute on an instance *instance* of the owner\n   class to a new value, *value*.\n\nobject.__delete__(self, instance)\n\n   Called to delete the attribute on an instance *instance* of the\n   owner class.\n\n\nInvoking Descriptors\n--------------------\n\nIn general, a descriptor is an object attribute with "binding\nbehavior", one whose attribute access has been overridden by methods\nin the descriptor protocol:  ``__get__()``, ``__set__()``, and\n``__delete__()``. If any of those methods are defined for an object,\nit is said to be a descriptor.\n\nThe default behavior for attribute access is to get, set, or delete\nthe attribute from an object\'s dictionary. For instance, ``a.x`` has a\nlookup chain starting with ``a.__dict__[\'x\']``, then\n``type(a).__dict__[\'x\']``, and continuing through the base classes of\n``type(a)`` excluding metaclasses.\n\nHowever, if the looked-up value is an object defining one of the\ndescriptor methods, then Python may override the default behavior and\ninvoke the descriptor method instead.  Where this occurs in the\nprecedence chain depends on which descriptor methods were defined and\nhow they were called.  Note that descriptors are only invoked for new\nstyle objects or classes (ones that subclass ``object()`` or\n``type()``).\n\nThe starting point for descriptor invocation is a binding, ``a.x``.\nHow the arguments are assembled depends on ``a``:\n\nDirect Call\n   The simplest and least common call is when user code directly\n   invokes a descriptor method:    ``x.__get__(a)``.\n\nInstance Binding\n   If binding to a new-style object instance, ``a.x`` is transformed\n   into the call: ``type(a).__dict__[\'x\'].__get__(a, type(a))``.\n\nClass Binding\n   If binding to a new-style class, ``A.x`` is transformed into the\n   call: ``A.__dict__[\'x\'].__get__(None, A)``.\n\nSuper Binding\n   If ``a`` is an instance of ``super``, then the binding ``super(B,\n   obj).m()`` searches ``obj.__class__.__mro__`` for the base class\n   ``A`` immediately preceding ``B`` and then invokes the descriptor\n   with the call: ``A.__dict__[\'m\'].__get__(obj, obj.__class__)``.\n\nFor instance bindings, the precedence of descriptor invocation depends\non the which descriptor methods are defined.  A descriptor can define\nany combination of ``__get__()``, ``__set__()`` and ``__delete__()``.\nIf it does not define ``__get__()``, then accessing the attribute will\nreturn the descriptor object itself unless there is a value in the\nobject\'s instance dictionary.  If the descriptor defines ``__set__()``\nand/or ``__delete__()``, it is a data descriptor; if it defines\nneither, it is a non-data descriptor.  Normally, data descriptors\ndefine both ``__get__()`` and ``__set__()``, while non-data\ndescriptors have just the ``__get__()`` method.  Data descriptors with\n``__set__()`` and ``__get__()`` defined always override a redefinition\nin an instance dictionary.  In contrast, non-data descriptors can be\noverridden by instances.\n\nPython methods (including ``staticmethod()`` and ``classmethod()``)\nare implemented as non-data descriptors.  Accordingly, instances can\nredefine and override methods.  This allows individual instances to\nacquire behaviors that differ from other instances of the same class.\n\nThe ``property()`` function is implemented as a data descriptor.\nAccordingly, instances cannot override the behavior of a property.\n\n\n__slots__\n---------\n\nBy default, instances of both old and new-style classes have a\ndictionary for attribute storage.  This wastes space for objects\nhaving very few instance variables.  The space consumption can become\nacute when creating large numbers of instances.\n\nThe default can be overridden by defining *__slots__* in a new-style\nclass definition.  The *__slots__* declaration takes a sequence of\ninstance variables and reserves just enough space in each instance to\nhold a value for each variable.  Space is saved because *__dict__* is\nnot created for each instance.\n\n__slots__\n\n   This class variable can be assigned a string, iterable, or sequence\n   of strings with variable names used by instances.  If defined in a\n   new-style class, *__slots__* reserves space for the declared\n   variables and prevents the automatic creation of *__dict__* and\n   *__weakref__* for each instance.\n\n   New in version 2.2.\n\nNotes on using *__slots__*\n\n* When inheriting from a class without *__slots__*, the *__dict__*\n  attribute of that class will always be accessible, so a *__slots__*\n  definition in the subclass is meaningless.\n\n* Without a *__dict__* variable, instances cannot be assigned new\n  variables not listed in the *__slots__* definition.  Attempts to\n  assign to an unlisted variable name raises ``AttributeError``. If\n  dynamic assignment of new variables is desired, then add\n  ``\'__dict__\'`` to the sequence of strings in the *__slots__*\n  declaration.\n\n  Changed in version 2.3: Previously, adding ``\'__dict__\'`` to the\n  *__slots__* declaration would not enable the assignment of new\n  attributes not specifically listed in the sequence of instance\n  variable names.\n\n* Without a *__weakref__* variable for each instance, classes defining\n  *__slots__* do not support weak references to its instances. If weak\n  reference support is needed, then add ``\'__weakref__\'`` to the\n  sequence of strings in the *__slots__* declaration.\n\n  Changed in version 2.3: Previously, adding ``\'__weakref__\'`` to the\n  *__slots__* declaration would not enable support for weak\n  references.\n\n* *__slots__* are implemented at the class level by creating\n  descriptors (*Implementing Descriptors*) for each variable name.  As\n  a result, class attributes cannot be used to set default values for\n  instance variables defined by *__slots__*; otherwise, the class\n  attribute would overwrite the descriptor assignment.\n\n* The action of a *__slots__* declaration is limited to the class\n  where it is defined.  As a result, subclasses will have a *__dict__*\n  unless they also define *__slots__* (which must only contain names\n  of any *additional* slots).\n\n* If a class defines a slot also defined in a base class, the instance\n  variable defined by the base class slot is inaccessible (except by\n  retrieving its descriptor directly from the base class). This\n  renders the meaning of the program undefined.  In the future, a\n  check may be added to prevent this.\n\n* Nonempty *__slots__* does not work for classes derived from\n  "variable-length" built-in types such as ``long``, ``str`` and\n  ``tuple``.\n\n* Any non-string iterable may be assigned to *__slots__*. Mappings may\n  also be used; however, in the future, special meaning may be\n  assigned to the values corresponding to each key.\n\n* *__class__* assignment works only if both classes have the same\n  *__slots__*.\n\n  Changed in version 2.6: Previously, *__class__* assignment raised an\n  error if either new or old class had *__slots__*.\n\n\nCustomizing class creation\n==========================\n\nBy default, new-style classes are constructed using ``type()``. A\nclass definition is read into a separate namespace and the value of\nclass name is bound to the result of ``type(name, bases, dict)``.\n\nWhen the class definition is read, if *__metaclass__* is defined then\nthe callable assigned to it will be called instead of ``type()``. This\nallows classes or functions to be written which monitor or alter the\nclass creation process:\n\n* Modifying the class dictionary prior to the class being created.\n\n* Returning an instance of another class -- essentially performing the\n  role of a factory function.\n\nThese steps will have to be performed in the metaclass\'s ``__new__()``\nmethod -- ``type.__new__()`` can then be called from this method to\ncreate a class with different properties.  This example adds a new\nelement to the class dictionary before creating the class:\n\n   class metacls(type):\n       def __new__(mcs, name, bases, dict):\n           dict[\'foo\'] = \'metacls was here\'\n           return type.__new__(mcs, name, bases, dict)\n\nYou can of course also override other class methods (or add new\nmethods); for example defining a custom ``__call__()`` method in the\nmetaclass allows custom behavior when the class is called, e.g. not\nalways creating a new instance.\n\n__metaclass__\n\n   This variable can be any callable accepting arguments for ``name``,\n   ``bases``, and ``dict``.  Upon class creation, the callable is used\n   instead of the built-in ``type()``.\n\n   New in version 2.2.\n\nThe appropriate metaclass is determined by the following precedence\nrules:\n\n* If ``dict[\'__metaclass__\']`` exists, it is used.\n\n* Otherwise, if there is at least one base class, its metaclass is\n  used (this looks for a *__class__* attribute first and if not found,\n  uses its type).\n\n* Otherwise, if a global variable named __metaclass__ exists, it is\n  used.\n\n* Otherwise, the old-style, classic metaclass (types.ClassType) is\n  used.\n\nThe potential uses for metaclasses are boundless. Some ideas that have\nbeen explored including logging, interface checking, automatic\ndelegation, automatic property creation, proxies, frameworks, and\nautomatic resource locking/synchronization.\n\n\nCustomizing instance and subclass checks\n========================================\n\nNew in version 2.6.\n\nThe following methods are used to override the default behavior of the\n``isinstance()`` and ``issubclass()`` built-in functions.\n\nIn particular, the metaclass ``abc.ABCMeta`` implements these methods\nin order to allow the addition of Abstract Base Classes (ABCs) as\n"virtual base classes" to any class or type (including built-in\ntypes), including other ABCs.\n\nclass.__instancecheck__(self, instance)\n\n   Return true if *instance* should be considered a (direct or\n   indirect) instance of *class*. If defined, called to implement\n   ``isinstance(instance, class)``.\n\nclass.__subclasscheck__(self, subclass)\n\n   Return true if *subclass* should be considered a (direct or\n   indirect) subclass of *class*.  If defined, called to implement\n   ``issubclass(subclass, class)``.\n\nNote that these methods are looked up on the type (metaclass) of a\nclass.  They cannot be defined as class methods in the actual class.\nThis is consistent with the lookup of special methods that are called\non instances, only in this case the instance is itself a class.\n\nSee also:\n\n   **PEP 3119** - Introducing Abstract Base Classes\n      Includes the specification for customizing ``isinstance()`` and\n      ``issubclass()`` behavior through ``__instancecheck__()`` and\n      ``__subclasscheck__()``, with motivation for this functionality\n      in the context of adding Abstract Base Classes (see the ``abc``\n      module) to the language.\n\n\nEmulating callable objects\n==========================\n\nobject.__call__(self[, args...])\n\n   Called when the instance is "called" as a function; if this method\n   is defined, ``x(arg1, arg2, ...)`` is a shorthand for\n   ``x.__call__(arg1, arg2, ...)``.\n\n\nEmulating container types\n=========================\n\nThe following methods can be defined to implement container objects.\nContainers usually are sequences (such as lists or tuples) or mappings\n(like dictionaries), but can represent other containers as well.  The\nfirst set of methods is used either to emulate a sequence or to\nemulate a mapping; the difference is that for a sequence, the\nallowable keys should be the integers *k* for which ``0 <= k < N``\nwhere *N* is the length of the sequence, or slice objects, which\ndefine a range of items. (For backwards compatibility, the method\n``__getslice__()`` (see below) can also be defined to handle simple,\nbut not extended slices.) It is also recommended that mappings provide\nthe methods ``keys()``, ``values()``, ``items()``, ``has_key()``,\n``get()``, ``clear()``, ``setdefault()``, ``iterkeys()``,\n``itervalues()``, ``iteritems()``, ``pop()``, ``popitem()``,\n``copy()``, and ``update()`` behaving similar to those for Python\'s\nstandard dictionary objects.  The ``UserDict`` module provides a\n``DictMixin`` class to help create those methods from a base set of\n``__getitem__()``, ``__setitem__()``, ``__delitem__()``, and\n``keys()``. Mutable sequences should provide methods ``append()``,\n``count()``, ``index()``, ``extend()``, ``insert()``, ``pop()``,\n``remove()``, ``reverse()`` and ``sort()``, like Python standard list\nobjects.  Finally, sequence types should implement addition (meaning\nconcatenation) and multiplication (meaning repetition) by defining the\nmethods ``__add__()``, ``__radd__()``, ``__iadd__()``, ``__mul__()``,\n``__rmul__()`` and ``__imul__()`` described below; they should not\ndefine ``__coerce__()`` or other numerical operators.  It is\nrecommended that both mappings and sequences implement the\n``__contains__()`` method to allow efficient use of the ``in``\noperator; for mappings, ``in`` should be equivalent of ``has_key()``;\nfor sequences, it should search through the values.  It is further\nrecommended that both mappings and sequences implement the\n``__iter__()`` method to allow efficient iteration through the\ncontainer; for mappings, ``__iter__()`` should be the same as\n``iterkeys()``; for sequences, it should iterate through the values.\n\nobject.__len__(self)\n\n   Called to implement the built-in function ``len()``.  Should return\n   the length of the object, an integer ``>=`` 0.  Also, an object\n   that doesn\'t define a ``__nonzero__()`` method and whose\n   ``__len__()`` method returns zero is considered to be false in a\n   Boolean context.\n\nobject.__getitem__(self, key)\n\n   Called to implement evaluation of ``self[key]``. For sequence\n   types, the accepted keys should be integers and slice objects.\n   Note that the special interpretation of negative indexes (if the\n   class wishes to emulate a sequence type) is up to the\n   ``__getitem__()`` method. If *key* is of an inappropriate type,\n   ``TypeError`` may be raised; if of a value outside the set of\n   indexes for the sequence (after any special interpretation of\n   negative values), ``IndexError`` should be raised. For mapping\n   types, if *key* is missing (not in the container), ``KeyError``\n   should be raised.\n\n   Note: ``for`` loops expect that an ``IndexError`` will be raised for\n     illegal indexes to allow proper detection of the end of the\n     sequence.\n\nobject.__setitem__(self, key, value)\n\n   Called to implement assignment to ``self[key]``.  Same note as for\n   ``__getitem__()``.  This should only be implemented for mappings if\n   the objects support changes to the values for keys, or if new keys\n   can be added, or for sequences if elements can be replaced.  The\n   same exceptions should be raised for improper *key* values as for\n   the ``__getitem__()`` method.\n\nobject.__delitem__(self, key)\n\n   Called to implement deletion of ``self[key]``.  Same note as for\n   ``__getitem__()``.  This should only be implemented for mappings if\n   the objects support removal of keys, or for sequences if elements\n   can be removed from the sequence.  The same exceptions should be\n   raised for improper *key* values as for the ``__getitem__()``\n   method.\n\nobject.__iter__(self)\n\n   This method is called when an iterator is required for a container.\n   This method should return a new iterator object that can iterate\n   over all the objects in the container.  For mappings, it should\n   iterate over the keys of the container, and should also be made\n   available as the method ``iterkeys()``.\n\n   Iterator objects also need to implement this method; they are\n   required to return themselves.  For more information on iterator\n   objects, see *Iterator Types*.\n\nobject.__reversed__(self)\n\n   Called (if present) by the ``reversed()`` built-in to implement\n   reverse iteration.  It should return a new iterator object that\n   iterates over all the objects in the container in reverse order.\n\n   If the ``__reversed__()`` method is not provided, the\n   ``reversed()`` built-in will fall back to using the sequence\n   protocol (``__len__()`` and ``__getitem__()``).  Objects that\n   support the sequence protocol should only provide\n   ``__reversed__()`` if they can provide an implementation that is\n   more efficient than the one provided by ``reversed()``.\n\n   New in version 2.6.\n\nThe membership test operators (``in`` and ``not in``) are normally\nimplemented as an iteration through a sequence.  However, container\nobjects can supply the following special method with a more efficient\nimplementation, which also does not require the object be a sequence.\n\nobject.__contains__(self, item)\n\n   Called to implement membership test operators.  Should return true\n   if *item* is in *self*, false otherwise.  For mapping objects, this\n   should consider the keys of the mapping rather than the values or\n   the key-item pairs.\n\n   For objects that don\'t define ``__contains__()``, the membership\n   test first tries iteration via ``__iter__()``, then the old\n   sequence iteration protocol via ``__getitem__()``, see *this\n   section in the language reference*.\n\n\nAdditional methods for emulation of sequence types\n==================================================\n\nThe following optional methods can be defined to further emulate\nsequence objects.  Immutable sequences methods should at most only\ndefine ``__getslice__()``; mutable sequences might define all three\nmethods.\n\nobject.__getslice__(self, i, j)\n\n   Deprecated since version 2.0: Support slice objects as parameters\n   to the ``__getitem__()`` method. (However, built-in types in\n   CPython currently still implement ``__getslice__()``.  Therefore,\n   you have to override it in derived classes when implementing\n   slicing.)\n\n   Called to implement evaluation of ``self[i:j]``. The returned\n   object should be of the same type as *self*.  Note that missing *i*\n   or *j* in the slice expression are replaced by zero or\n   ``sys.maxint``, respectively.  If negative indexes are used in the\n   slice, the length of the sequence is added to that index. If the\n   instance does not implement the ``__len__()`` method, an\n   ``AttributeError`` is raised. No guarantee is made that indexes\n   adjusted this way are not still negative.  Indexes which are\n   greater than the length of the sequence are not modified. If no\n   ``__getslice__()`` is found, a slice object is created instead, and\n   passed to ``__getitem__()`` instead.\n\nobject.__setslice__(self, i, j, sequence)\n\n   Called to implement assignment to ``self[i:j]``. Same notes for *i*\n   and *j* as for ``__getslice__()``.\n\n   This method is deprecated. If no ``__setslice__()`` is found, or\n   for extended slicing of the form ``self[i:j:k]``, a slice object is\n   created, and passed to ``__setitem__()``, instead of\n   ``__setslice__()`` being called.\n\nobject.__delslice__(self, i, j)\n\n   Called to implement deletion of ``self[i:j]``. Same notes for *i*\n   and *j* as for ``__getslice__()``. This method is deprecated. If no\n   ``__delslice__()`` is found, or for extended slicing of the form\n   ``self[i:j:k]``, a slice object is created, and passed to\n   ``__delitem__()``, instead of ``__delslice__()`` being called.\n\nNotice that these methods are only invoked when a single slice with a\nsingle colon is used, and the slice method is available.  For slice\noperations involving extended slice notation, or in absence of the\nslice methods, ``__getitem__()``, ``__setitem__()`` or\n``__delitem__()`` is called with a slice object as argument.\n\nThe following example demonstrate how to make your program or module\ncompatible with earlier versions of Python (assuming that methods\n``__getitem__()``, ``__setitem__()`` and ``__delitem__()`` support\nslice objects as arguments):\n\n   class MyClass:\n       ...\n       def __getitem__(self, index):\n           ...\n       def __setitem__(self, index, value):\n           ...\n       def __delitem__(self, index):\n           ...\n\n       if sys.version_info < (2, 0):\n           # They won\'t be defined if version is at least 2.0 final\n\n           def __getslice__(self, i, j):\n               return self[max(0, i):max(0, j):]\n           def __setslice__(self, i, j, seq):\n               self[max(0, i):max(0, j):] = seq\n           def __delslice__(self, i, j):\n               del self[max(0, i):max(0, j):]\n       ...\n\nNote the calls to ``max()``; these are necessary because of the\nhandling of negative indices before the ``__*slice__()`` methods are\ncalled.  When negative indexes are used, the ``__*item__()`` methods\nreceive them as provided, but the ``__*slice__()`` methods get a\n"cooked" form of the index values.  For each negative index value, the\nlength of the sequence is added to the index before calling the method\n(which may still result in a negative index); this is the customary\nhandling of negative indexes by the built-in sequence types, and the\n``__*item__()`` methods are expected to do this as well.  However,\nsince they should already be doing that, negative indexes cannot be\npassed in; they must be constrained to the bounds of the sequence\nbefore being passed to the ``__*item__()`` methods. Calling ``max(0,\ni)`` conveniently returns the proper value.\n\n\nEmulating numeric types\n=======================\n\nThe following methods can be defined to emulate numeric objects.\nMethods corresponding to operations that are not supported by the\nparticular kind of number implemented (e.g., bitwise operations for\nnon-integral numbers) should be left undefined.\n\nobject.__add__(self, other)\nobject.__sub__(self, other)\nobject.__mul__(self, other)\nobject.__floordiv__(self, other)\nobject.__mod__(self, other)\nobject.__divmod__(self, other)\nobject.__pow__(self, other[, modulo])\nobject.__lshift__(self, other)\nobject.__rshift__(self, other)\nobject.__and__(self, other)\nobject.__xor__(self, other)\nobject.__or__(self, other)\n\n   These methods are called to implement the binary arithmetic\n   operations (``+``, ``-``, ``*``, ``//``, ``%``, ``divmod()``,\n   ``pow()``, ``**``, ``<<``, ``>>``, ``&``, ``^``, ``|``).  For\n   instance, to evaluate the expression ``x + y``, where *x* is an\n   instance of a class that has an ``__add__()`` method,\n   ``x.__add__(y)`` is called.  The ``__divmod__()`` method should be\n   the equivalent to using ``__floordiv__()`` and ``__mod__()``; it\n   should not be related to ``__truediv__()`` (described below).  Note\n   that ``__pow__()`` should be defined to accept an optional third\n   argument if the ternary version of the built-in ``pow()`` function\n   is to be supported.\n\n   If one of those methods does not support the operation with the\n   supplied arguments, it should return ``NotImplemented``.\n\nobject.__div__(self, other)\nobject.__truediv__(self, other)\n\n   The division operator (``/``) is implemented by these methods.  The\n   ``__truediv__()`` method is used when ``__future__.division`` is in\n   effect, otherwise ``__div__()`` is used.  If only one of these two\n   methods is defined, the object will not support division in the\n   alternate context; ``TypeError`` will be raised instead.\n\nobject.__radd__(self, other)\nobject.__rsub__(self, other)\nobject.__rmul__(self, other)\nobject.__rdiv__(self, other)\nobject.__rtruediv__(self, other)\nobject.__rfloordiv__(self, other)\nobject.__rmod__(self, other)\nobject.__rdivmod__(self, other)\nobject.__rpow__(self, other)\nobject.__rlshift__(self, other)\nobject.__rrshift__(self, other)\nobject.__rand__(self, other)\nobject.__rxor__(self, other)\nobject.__ror__(self, other)\n\n   These methods are called to implement the binary arithmetic\n   operations (``+``, ``-``, ``*``, ``/``, ``%``, ``divmod()``,\n   ``pow()``, ``**``, ``<<``, ``>>``, ``&``, ``^``, ``|``) with\n   reflected (swapped) operands.  These functions are only called if\n   the left operand does not support the corresponding operation and\n   the operands are of different types. [2] For instance, to evaluate\n   the expression ``x - y``, where *y* is an instance of a class that\n   has an ``__rsub__()`` method, ``y.__rsub__(x)`` is called if\n   ``x.__sub__(y)`` returns *NotImplemented*.\n\n   Note that ternary ``pow()`` will not try calling ``__rpow__()``\n   (the coercion rules would become too complicated).\n\n   Note: If the right operand\'s type is a subclass of the left operand\'s\n     type and that subclass provides the reflected method for the\n     operation, this method will be called before the left operand\'s\n     non-reflected method.  This behavior allows subclasses to\n     override their ancestors\' operations.\n\nobject.__iadd__(self, other)\nobject.__isub__(self, other)\nobject.__imul__(self, other)\nobject.__idiv__(self, other)\nobject.__itruediv__(self, other)\nobject.__ifloordiv__(self, other)\nobject.__imod__(self, other)\nobject.__ipow__(self, other[, modulo])\nobject.__ilshift__(self, other)\nobject.__irshift__(self, other)\nobject.__iand__(self, other)\nobject.__ixor__(self, other)\nobject.__ior__(self, other)\n\n   These methods are called to implement the augmented arithmetic\n   assignments (``+=``, ``-=``, ``*=``, ``/=``, ``//=``, ``%=``,\n   ``**=``, ``<<=``, ``>>=``, ``&=``, ``^=``, ``|=``).  These methods\n   should attempt to do the operation in-place (modifying *self*) and\n   return the result (which could be, but does not have to be,\n   *self*).  If a specific method is not defined, the augmented\n   assignment falls back to the normal methods.  For instance, to\n   execute the statement ``x += y``, where *x* is an instance of a\n   class that has an ``__iadd__()`` method, ``x.__iadd__(y)`` is\n   called.  If *x* is an instance of a class that does not define a\n   ``__iadd__()`` method, ``x.__add__(y)`` and ``y.__radd__(x)`` are\n   considered, as with the evaluation of ``x + y``.\n\nobject.__neg__(self)\nobject.__pos__(self)\nobject.__abs__(self)\nobject.__invert__(self)\n\n   Called to implement the unary arithmetic operations (``-``, ``+``,\n   ``abs()`` and ``~``).\n\nobject.__complex__(self)\nobject.__int__(self)\nobject.__long__(self)\nobject.__float__(self)\n\n   Called to implement the built-in functions ``complex()``,\n   ``int()``, ``long()``, and ``float()``.  Should return a value of\n   the appropriate type.\n\nobject.__oct__(self)\nobject.__hex__(self)\n\n   Called to implement the built-in functions ``oct()`` and ``hex()``.\n   Should return a string value.\n\nobject.__index__(self)\n\n   Called to implement ``operator.index()``.  Also called whenever\n   Python needs an integer object (such as in slicing).  Must return\n   an integer (int or long).\n\n   New in version 2.5.\n\nobject.__coerce__(self, other)\n\n   Called to implement "mixed-mode" numeric arithmetic.  Should either\n   return a 2-tuple containing *self* and *other* converted to a\n   common numeric type, or ``None`` if conversion is impossible.  When\n   the common type would be the type of ``other``, it is sufficient to\n   return ``None``, since the interpreter will also ask the other\n   object to attempt a coercion (but sometimes, if the implementation\n   of the other type cannot be changed, it is useful to do the\n   conversion to the other type here).  A return value of\n   ``NotImplemented`` is equivalent to returning ``None``.\n\n\nCoercion rules\n==============\n\nThis section used to document the rules for coercion.  As the language\nhas evolved, the coercion rules have become hard to document\nprecisely; documenting what one version of one particular\nimplementation does is undesirable.  Instead, here are some informal\nguidelines regarding coercion.  In Python 3.0, coercion will not be\nsupported.\n\n* If the left operand of a % operator is a string or Unicode object,\n  no coercion takes place and the string formatting operation is\n  invoked instead.\n\n* It is no longer recommended to define a coercion operation. Mixed-\n  mode operations on types that don\'t define coercion pass the\n  original arguments to the operation.\n\n* New-style classes (those derived from ``object``) never invoke the\n  ``__coerce__()`` method in response to a binary operator; the only\n  time ``__coerce__()`` is invoked is when the built-in function\n  ``coerce()`` is called.\n\n* For most intents and purposes, an operator that returns\n  ``NotImplemented`` is treated the same as one that is not\n  implemented at all.\n\n* Below, ``__op__()`` and ``__rop__()`` are used to signify the\n  generic method names corresponding to an operator; ``__iop__()`` is\n  used for the corresponding in-place operator.  For example, for the\n  operator \'``+``\', ``__add__()`` and ``__radd__()`` are used for the\n  left and right variant of the binary operator, and ``__iadd__()``\n  for the in-place variant.\n\n* For objects *x* and *y*, first ``x.__op__(y)`` is tried.  If this is\n  not implemented or returns ``NotImplemented``, ``y.__rop__(x)`` is\n  tried.  If this is also not implemented or returns\n  ``NotImplemented``, a ``TypeError`` exception is raised.  But see\n  the following exception:\n\n* Exception to the previous item: if the left operand is an instance\n  of a built-in type or a new-style class, and the right operand is an\n  instance of a proper subclass of that type or class and overrides\n  the base\'s ``__rop__()`` method, the right operand\'s ``__rop__()``\n  method is tried *before* the left operand\'s ``__op__()`` method.\n\n  This is done so that a subclass can completely override binary\n  operators. Otherwise, the left operand\'s ``__op__()`` method would\n  always accept the right operand: when an instance of a given class\n  is expected, an instance of a subclass of that class is always\n  acceptable.\n\n* When either operand type defines a coercion, this coercion is called\n  before that type\'s ``__op__()`` or ``__rop__()`` method is called,\n  but no sooner.  If the coercion returns an object of a different\n  type for the operand whose coercion is invoked, part of the process\n  is redone using the new object.\n\n* When an in-place operator (like \'``+=``\') is used, if the left\n  operand implements ``__iop__()``, it is invoked without any\n  coercion.  When the operation falls back to ``__op__()`` and/or\n  ``__rop__()``, the normal coercion rules apply.\n\n* In ``x + y``, if *x* is a sequence that implements sequence\n  concatenation, sequence concatenation is invoked.\n\n* In ``x * y``, if one operator is a sequence that implements sequence\n  repetition, and the other is an integer (``int`` or ``long``),\n  sequence repetition is invoked.\n\n* Rich comparisons (implemented by methods ``__eq__()`` and so on)\n  never use coercion.  Three-way comparison (implemented by\n  ``__cmp__()``) does use coercion under the same conditions as other\n  binary operations use it.\n\n* In the current implementation, the built-in numeric types ``int``,\n  ``long``, ``float``, and ``complex`` do not use coercion. All these\n  types implement a ``__coerce__()`` method, for use by the built-in\n  ``coerce()`` function.\n\n  Changed in version 2.7.\n\n\nWith Statement Context Managers\n===============================\n\nNew in version 2.5.\n\nA *context manager* is an object that defines the runtime context to\nbe established when executing a ``with`` statement. The context\nmanager handles the entry into, and the exit from, the desired runtime\ncontext for the execution of the block of code.  Context managers are\nnormally invoked using the ``with`` statement (described in section\n*The with statement*), but can also be used by directly invoking their\nmethods.\n\nTypical uses of context managers include saving and restoring various\nkinds of global state, locking and unlocking resources, closing opened\nfiles, etc.\n\nFor more information on context managers, see *Context Manager Types*.\n\nobject.__enter__(self)\n\n   Enter the runtime context related to this object. The ``with``\n   statement will bind this method\'s return value to the target(s)\n   specified in the ``as`` clause of the statement, if any.\n\nobject.__exit__(self, exc_type, exc_value, traceback)\n\n   Exit the runtime context related to this object. The parameters\n   describe the exception that caused the context to be exited. If the\n   context was exited without an exception, all three arguments will\n   be ``None``.\n\n   If an exception is supplied, and the method wishes to suppress the\n   exception (i.e., prevent it from being propagated), it should\n   return a true value. Otherwise, the exception will be processed\n   normally upon exit from this method.\n\n   Note that ``__exit__()`` methods should not reraise the passed-in\n   exception; this is the caller\'s responsibility.\n\nSee also:\n\n   **PEP 0343** - The "with" statement\n      The specification, background, and examples for the Python\n      ``with`` statement.\n\n\nSpecial method lookup for old-style classes\n===========================================\n\nFor old-style classes, special methods are always looked up in exactly\nthe same way as any other method or attribute. This is the case\nregardless of whether the method is being looked up explicitly as in\n``x.__getitem__(i)`` or implicitly as in ``x[i]``.\n\nThis behaviour means that special methods may exhibit different\nbehaviour for different instances of a single old-style class if the\nappropriate special attributes are set differently:\n\n   >>> class C:\n   ...     pass\n   ...\n   >>> c1 = C()\n   >>> c2 = C()\n   >>> c1.__len__ = lambda: 5\n   >>> c2.__len__ = lambda: 9\n   >>> len(c1)\n   5\n   >>> len(c2)\n   9\n\n\nSpecial method lookup for new-style classes\n===========================================\n\nFor new-style classes, implicit invocations of special methods are\nonly guaranteed to work correctly if defined on an object\'s type, not\nin the object\'s instance dictionary.  That behaviour is the reason why\nthe following code raises an exception (unlike the equivalent example\nwith old-style classes):\n\n   >>> class C(object):\n   ...     pass\n   ...\n   >>> c = C()\n   >>> c.__len__ = lambda: 5\n   >>> len(c)\n   Traceback (most recent call last):\n     File "<stdin>", line 1, in <module>\n   TypeError: object of type \'C\' has no len()\n\nThe rationale behind this behaviour lies with a number of special\nmethods such as ``__hash__()`` and ``__repr__()`` that are implemented\nby all objects, including type objects. If the implicit lookup of\nthese methods used the conventional lookup process, they would fail\nwhen invoked on the type object itself:\n\n   >>> 1 .__hash__() == hash(1)\n   True\n   >>> int.__hash__() == hash(int)\n   Traceback (most recent call last):\n     File "<stdin>", line 1, in <module>\n   TypeError: descriptor \'__hash__\' of \'int\' object needs an argument\n\nIncorrectly attempting to invoke an unbound method of a class in this\nway is sometimes referred to as \'metaclass confusion\', and is avoided\nby bypassing the instance when looking up special methods:\n\n   >>> type(1).__hash__(1) == hash(1)\n   True\n   >>> type(int).__hash__(int) == hash(int)\n   True\n\nIn addition to bypassing any instance attributes in the interest of\ncorrectness, implicit special method lookup generally also bypasses\nthe ``__getattribute__()`` method even of the object\'s metaclass:\n\n   >>> class Meta(type):\n   ...    def __getattribute__(*args):\n   ...       print "Metaclass getattribute invoked"\n   ...       return type.__getattribute__(*args)\n   ...\n   >>> class C(object):\n   ...     __metaclass__ = Meta\n   ...     def __len__(self):\n   ...         return 10\n   ...     def __getattribute__(*args):\n   ...         print "Class getattribute invoked"\n   ...         return object.__getattribute__(*args)\n   ...\n   >>> c = C()\n   >>> c.__len__()                 # Explicit lookup via instance\n   Class getattribute invoked\n   10\n   >>> type(c).__len__(c)          # Explicit lookup via type\n   Metaclass getattribute invoked\n   10\n   >>> len(c)                      # Implicit lookup\n   10\n\nBypassing the ``__getattribute__()`` machinery in this fashion\nprovides significant scope for speed optimisations within the\ninterpreter, at the cost of some flexibility in the handling of\nspecial methods (the special method *must* be set on the class object\nitself in order to be consistently invoked by the interpreter).\n\n-[ Footnotes ]-\n\n[1] It *is* possible in some cases to change an object\'s type, under\n    certain controlled conditions. It generally isn\'t a good idea\n    though, since it can lead to some very strange behaviour if it is\n    handled incorrectly.\n\n[2] For operands of the same type, it is assumed that if the non-\n    reflected method (such as ``__add__()``) fails the operation is\n    not supported, which is why the reflected method is not called.\n',
- 'string-conversions': u'\nString conversions\n******************\n\nA string conversion is an expression list enclosed in reverse (a.k.a.\nbackward) quotes:\n\n   string_conversion ::= "\'" expression_list "\'"\n\nA string conversion evaluates the contained expression list and\nconverts the resulting object into a string according to rules\nspecific to its type.\n\nIf the object is a string, a number, ``None``, or a tuple, list or\ndictionary containing only objects whose type is one of these, the\nresulting string is a valid Python expression which can be passed to\nthe built-in function ``eval()`` to yield an expression with the same\nvalue (or an approximation, if floating point numbers are involved).\n\n(In particular, converting a string adds quotes around it and converts\n"funny" characters to escape sequences that are safe to print.)\n\nRecursive objects (for example, lists or dictionaries that contain a\nreference to themselves, directly or indirectly) use ``...`` to\nindicate a recursive reference, and the result cannot be passed to\n``eval()`` to get an equal value (``SyntaxError`` will be raised\ninstead).\n\nThe built-in function ``repr()`` performs exactly the same conversion\nin its argument as enclosing it in parentheses and reverse quotes\ndoes.  The built-in function ``str()`` performs a similar but more\nuser-friendly conversion.\n',
- 'string-methods': u'\nString Methods\n**************\n\nBelow are listed the string methods which both 8-bit strings and\nUnicode objects support.  Some of them are also available on\n``bytearray`` objects.\n\nIn addition, Python\'s strings support the sequence type methods\ndescribed in the *Sequence Types --- str, unicode, list, tuple,\nbytearray, buffer, xrange* section. To output formatted strings use\ntemplate strings or the ``%`` operator described in the *String\nFormatting Operations* section. Also, see the ``re`` module for string\nfunctions based on regular expressions.\n\nstr.capitalize()\n\n   Return a copy of the string with its first character capitalized\n   and the rest lowercased.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.center(width[, fillchar])\n\n   Return centered in a string of length *width*. Padding is done\n   using the specified *fillchar* (default is a space).\n\n   Changed in version 2.4: Support for the *fillchar* argument.\n\nstr.count(sub[, start[, end]])\n\n   Return the number of non-overlapping occurrences of substring *sub*\n   in the range [*start*, *end*].  Optional arguments *start* and\n   *end* are interpreted as in slice notation.\n\nstr.decode([encoding[, errors]])\n\n   Decodes the string using the codec registered for *encoding*.\n   *encoding* defaults to the default string encoding.  *errors* may\n   be given to set a different error handling scheme.  The default is\n   ``\'strict\'``, meaning that encoding errors raise ``UnicodeError``.\n   Other possible values are ``\'ignore\'``, ``\'replace\'`` and any other\n   name registered via ``codecs.register_error()``, see section *Codec\n   Base Classes*.\n\n   New in version 2.2.\n\n   Changed in version 2.3: Support for other error handling schemes\n   added.\n\n   Changed in version 2.7: Support for keyword arguments added.\n\nstr.encode([encoding[, errors]])\n\n   Return an encoded version of the string.  Default encoding is the\n   current default string encoding.  *errors* may be given to set a\n   different error handling scheme.  The default for *errors* is\n   ``\'strict\'``, meaning that encoding errors raise a\n   ``UnicodeError``.  Other possible values are ``\'ignore\'``,\n   ``\'replace\'``, ``\'xmlcharrefreplace\'``, ``\'backslashreplace\'`` and\n   any other name registered via ``codecs.register_error()``, see\n   section *Codec Base Classes*. For a list of possible encodings, see\n   section *Standard Encodings*.\n\n   New in version 2.0.\n\n   Changed in version 2.3: Support for ``\'xmlcharrefreplace\'`` and\n   ``\'backslashreplace\'`` and other error handling schemes added.\n\n   Changed in version 2.7: Support for keyword arguments added.\n\nstr.endswith(suffix[, start[, end]])\n\n   Return ``True`` if the string ends with the specified *suffix*,\n   otherwise return ``False``.  *suffix* can also be a tuple of\n   suffixes to look for.  With optional *start*, test beginning at\n   that position.  With optional *end*, stop comparing at that\n   position.\n\n   Changed in version 2.5: Accept tuples as *suffix*.\n\nstr.expandtabs([tabsize])\n\n   Return a copy of the string where all tab characters are replaced\n   by one or more spaces, depending on the current column and the\n   given tab size.  The column number is reset to zero after each\n   newline occurring in the string. If *tabsize* is not given, a tab\n   size of ``8`` characters is assumed.  This doesn\'t understand other\n   non-printing characters or escape sequences.\n\nstr.find(sub[, start[, end]])\n\n   Return the lowest index in the string where substring *sub* is\n   found, such that *sub* is contained in the slice ``s[start:end]``.\n   Optional arguments *start* and *end* are interpreted as in slice\n   notation.  Return ``-1`` if *sub* is not found.\n\n   Note: The ``find()`` method should be used only if you need to know the\n     position of *sub*.  To check if *sub* is a substring or not, use\n     the ``in`` operator:\n\n        >>> \'Py\' in \'Python\'\n        True\n\nstr.format(*args, **kwargs)\n\n   Perform a string formatting operation.  The string on which this\n   method is called can contain literal text or replacement fields\n   delimited by braces ``{}``.  Each replacement field contains either\n   the numeric index of a positional argument, or the name of a\n   keyword argument.  Returns a copy of the string where each\n   replacement field is replaced with the string value of the\n   corresponding argument.\n\n   >>> "The sum of 1 + 2 is {0}".format(1+2)\n   \'The sum of 1 + 2 is 3\'\n\n   See *Format String Syntax* for a description of the various\n   formatting options that can be specified in format strings.\n\n   This method of string formatting is the new standard in Python 3.0,\n   and should be preferred to the ``%`` formatting described in\n   *String Formatting Operations* in new code.\n\n   New in version 2.6.\n\nstr.index(sub[, start[, end]])\n\n   Like ``find()``, but raise ``ValueError`` when the substring is not\n   found.\n\nstr.isalnum()\n\n   Return true if all characters in the string are alphanumeric and\n   there is at least one character, false otherwise.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.isalpha()\n\n   Return true if all characters in the string are alphabetic and\n   there is at least one character, false otherwise.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.isdigit()\n\n   Return true if all characters in the string are digits and there is\n   at least one character, false otherwise.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.islower()\n\n   Return true if all cased characters in the string are lowercase and\n   there is at least one cased character, false otherwise.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.isspace()\n\n   Return true if there are only whitespace characters in the string\n   and there is at least one character, false otherwise.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.istitle()\n\n   Return true if the string is a titlecased string and there is at\n   least one character, for example uppercase characters may only\n   follow uncased characters and lowercase characters only cased ones.\n   Return false otherwise.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.isupper()\n\n   Return true if all cased characters in the string are uppercase and\n   there is at least one cased character, false otherwise.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.join(iterable)\n\n   Return a string which is the concatenation of the strings in the\n   *iterable* *iterable*.  The separator between elements is the\n   string providing this method.\n\nstr.ljust(width[, fillchar])\n\n   Return the string left justified in a string of length *width*.\n   Padding is done using the specified *fillchar* (default is a\n   space).  The original string is returned if *width* is less than\n   ``len(s)``.\n\n   Changed in version 2.4: Support for the *fillchar* argument.\n\nstr.lower()\n\n   Return a copy of the string converted to lowercase.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.lstrip([chars])\n\n   Return a copy of the string with leading characters removed.  The\n   *chars* argument is a string specifying the set of characters to be\n   removed.  If omitted or ``None``, the *chars* argument defaults to\n   removing whitespace.  The *chars* argument is not a prefix; rather,\n   all combinations of its values are stripped:\n\n   >>> \'   spacious   \'.lstrip()\n   \'spacious   \'\n   >>> \'www.example.com\'.lstrip(\'cmowz.\')\n   \'example.com\'\n\n   Changed in version 2.2.2: Support for the *chars* argument.\n\nstr.partition(sep)\n\n   Split the string at the first occurrence of *sep*, and return a\n   3-tuple containing the part before the separator, the separator\n   itself, and the part after the separator.  If the separator is not\n   found, return a 3-tuple containing the string itself, followed by\n   two empty strings.\n\n   New in version 2.5.\n\nstr.replace(old, new[, count])\n\n   Return a copy of the string with all occurrences of substring *old*\n   replaced by *new*.  If the optional argument *count* is given, only\n   the first *count* occurrences are replaced.\n\nstr.rfind(sub[, start[, end]])\n\n   Return the highest index in the string where substring *sub* is\n   found, such that *sub* is contained within ``s[start:end]``.\n   Optional arguments *start* and *end* are interpreted as in slice\n   notation.  Return ``-1`` on failure.\n\nstr.rindex(sub[, start[, end]])\n\n   Like ``rfind()`` but raises ``ValueError`` when the substring *sub*\n   is not found.\n\nstr.rjust(width[, fillchar])\n\n   Return the string right justified in a string of length *width*.\n   Padding is done using the specified *fillchar* (default is a\n   space). The original string is returned if *width* is less than\n   ``len(s)``.\n\n   Changed in version 2.4: Support for the *fillchar* argument.\n\nstr.rpartition(sep)\n\n   Split the string at the last occurrence of *sep*, and return a\n   3-tuple containing the part before the separator, the separator\n   itself, and the part after the separator.  If the separator is not\n   found, return a 3-tuple containing two empty strings, followed by\n   the string itself.\n\n   New in version 2.5.\n\nstr.rsplit([sep[, maxsplit]])\n\n   Return a list of the words in the string, using *sep* as the\n   delimiter string. If *maxsplit* is given, at most *maxsplit* splits\n   are done, the *rightmost* ones.  If *sep* is not specified or\n   ``None``, any whitespace string is a separator.  Except for\n   splitting from the right, ``rsplit()`` behaves like ``split()``\n   which is described in detail below.\n\n   New in version 2.4.\n\nstr.rstrip([chars])\n\n   Return a copy of the string with trailing characters removed.  The\n   *chars* argument is a string specifying the set of characters to be\n   removed.  If omitted or ``None``, the *chars* argument defaults to\n   removing whitespace.  The *chars* argument is not a suffix; rather,\n   all combinations of its values are stripped:\n\n   >>> \'   spacious   \'.rstrip()\n   \'   spacious\'\n   >>> \'mississippi\'.rstrip(\'ipz\')\n   \'mississ\'\n\n   Changed in version 2.2.2: Support for the *chars* argument.\n\nstr.split([sep[, maxsplit]])\n\n   Return a list of the words in the string, using *sep* as the\n   delimiter string.  If *maxsplit* is given, at most *maxsplit*\n   splits are done (thus, the list will have at most ``maxsplit+1``\n   elements).  If *maxsplit* is not specified, then there is no limit\n   on the number of splits (all possible splits are made).\n\n   If *sep* is given, consecutive delimiters are not grouped together\n   and are deemed to delimit empty strings (for example,\n   ``\'1,,2\'.split(\',\')`` returns ``[\'1\', \'\', \'2\']``).  The *sep*\n   argument may consist of multiple characters (for example,\n   ``\'1<>2<>3\'.split(\'<>\')`` returns ``[\'1\', \'2\', \'3\']``). Splitting\n   an empty string with a specified separator returns ``[\'\']``.\n\n   If *sep* is not specified or is ``None``, a different splitting\n   algorithm is applied: runs of consecutive whitespace are regarded\n   as a single separator, and the result will contain no empty strings\n   at the start or end if the string has leading or trailing\n   whitespace.  Consequently, splitting an empty string or a string\n   consisting of just whitespace with a ``None`` separator returns\n   ``[]``.\n\n   For example, ``\' 1  2   3  \'.split()`` returns ``[\'1\', \'2\', \'3\']``,\n   and ``\'  1  2   3  \'.split(None, 1)`` returns ``[\'1\', \'2   3  \']``.\n\nstr.splitlines([keepends])\n\n   Return a list of the lines in the string, breaking at line\n   boundaries.  Line breaks are not included in the resulting list\n   unless *keepends* is given and true.\n\nstr.startswith(prefix[, start[, end]])\n\n   Return ``True`` if string starts with the *prefix*, otherwise\n   return ``False``. *prefix* can also be a tuple of prefixes to look\n   for.  With optional *start*, test string beginning at that\n   position.  With optional *end*, stop comparing string at that\n   position.\n\n   Changed in version 2.5: Accept tuples as *prefix*.\n\nstr.strip([chars])\n\n   Return a copy of the string with the leading and trailing\n   characters removed. The *chars* argument is a string specifying the\n   set of characters to be removed. If omitted or ``None``, the\n   *chars* argument defaults to removing whitespace. The *chars*\n   argument is not a prefix or suffix; rather, all combinations of its\n   values are stripped:\n\n   >>> \'   spacious   \'.strip()\n   \'spacious\'\n   >>> \'www.example.com\'.strip(\'cmowz.\')\n   \'example\'\n\n   Changed in version 2.2.2: Support for the *chars* argument.\n\nstr.swapcase()\n\n   Return a copy of the string with uppercase characters converted to\n   lowercase and vice versa.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.title()\n\n   Return a titlecased version of the string where words start with an\n   uppercase character and the remaining characters are lowercase.\n\n   The algorithm uses a simple language-independent definition of a\n   word as groups of consecutive letters.  The definition works in\n   many contexts but it means that apostrophes in contractions and\n   possessives form word boundaries, which may not be the desired\n   result:\n\n      >>> "they\'re bill\'s friends from the UK".title()\n      "They\'Re Bill\'S Friends From The Uk"\n\n   A workaround for apostrophes can be constructed using regular\n   expressions:\n\n      >>> import re\n      >>> def titlecase(s):\n              return re.sub(r"[A-Za-z]+(\'[A-Za-z]+)?",\n                            lambda mo: mo.group(0)[0].upper() +\n                                       mo.group(0)[1:].lower(),\n                            s)\n\n      >>> titlecase("they\'re bill\'s friends.")\n      "They\'re Bill\'s Friends."\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.translate(table[, deletechars])\n\n   Return a copy of the string where all characters occurring in the\n   optional argument *deletechars* are removed, and the remaining\n   characters have been mapped through the given translation table,\n   which must be a string of length 256.\n\n   You can use the ``maketrans()`` helper function in the ``string``\n   module to create a translation table. For string objects, set the\n   *table* argument to ``None`` for translations that only delete\n   characters:\n\n   >>> \'read this short text\'.translate(None, \'aeiou\')\n   \'rd ths shrt txt\'\n\n   New in version 2.6: Support for a ``None`` *table* argument.\n\n   For Unicode objects, the ``translate()`` method does not accept the\n   optional *deletechars* argument.  Instead, it returns a copy of the\n   *s* where all characters have been mapped through the given\n   translation table which must be a mapping of Unicode ordinals to\n   Unicode ordinals, Unicode strings or ``None``. Unmapped characters\n   are left untouched. Characters mapped to ``None`` are deleted.\n   Note, a more flexible approach is to create a custom character\n   mapping codec using the ``codecs`` module (see ``encodings.cp1251``\n   for an example).\n\nstr.upper()\n\n   Return a copy of the string converted to uppercase.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.zfill(width)\n\n   Return the numeric string left filled with zeros in a string of\n   length *width*.  A sign prefix is handled correctly.  The original\n   string is returned if *width* is less than ``len(s)``.\n\n   New in version 2.2.2.\n\nThe following methods are present only on unicode objects:\n\nunicode.isnumeric()\n\n   Return ``True`` if there are only numeric characters in S,\n   ``False`` otherwise. Numeric characters include digit characters,\n   and all characters that have the Unicode numeric value property,\n   e.g. U+2155, VULGAR FRACTION ONE FIFTH.\n\nunicode.isdecimal()\n\n   Return ``True`` if there are only decimal characters in S,\n   ``False`` otherwise. Decimal characters include digit characters,\n   and all characters that that can be used to form decimal-radix\n   numbers, e.g. U+0660, ARABIC-INDIC DIGIT ZERO.\n',
- 'strings': u'\nString literals\n***************\n\nString literals are described by the following lexical definitions:\n\n   stringliteral   ::= [stringprefix](shortstring | longstring)\n   stringprefix    ::= "r" | "u" | "ur" | "R" | "U" | "UR" | "Ur" | "uR"\n                    | "b" | "B" | "br" | "Br" | "bR" | "BR"\n   shortstring     ::= "\'" shortstringitem* "\'" | \'"\' shortstringitem* \'"\'\n   longstring      ::= "\'\'\'" longstringitem* "\'\'\'"\n                  | \'"""\' longstringitem* \'"""\'\n   shortstringitem ::= shortstringchar | escapeseq\n   longstringitem  ::= longstringchar | escapeseq\n   shortstringchar ::= <any source character except "\\" or newline or the quote>\n   longstringchar  ::= <any source character except "\\">\n   escapeseq       ::= "\\" <any ASCII character>\n\nOne syntactic restriction not indicated by these productions is that\nwhitespace is not allowed between the **stringprefix** and the rest of\nthe string literal. The source character set is defined by the\nencoding declaration; it is ASCII if no encoding declaration is given\nin the source file; see section *Encoding declarations*.\n\nIn plain English: String literals can be enclosed in matching single\nquotes (``\'``) or double quotes (``"``).  They can also be enclosed in\nmatching groups of three single or double quotes (these are generally\nreferred to as *triple-quoted strings*).  The backslash (``\\``)\ncharacter is used to escape characters that otherwise have a special\nmeaning, such as newline, backslash itself, or the quote character.\nString literals may optionally be prefixed with a letter ``\'r\'`` or\n``\'R\'``; such strings are called *raw strings* and use different rules\nfor interpreting backslash escape sequences.  A prefix of ``\'u\'`` or\n``\'U\'`` makes the string a Unicode string.  Unicode strings use the\nUnicode character set as defined by the Unicode Consortium and ISO\n10646.  Some additional escape sequences, described below, are\navailable in Unicode strings. A prefix of ``\'b\'`` or ``\'B\'`` is\nignored in Python 2; it indicates that the literal should become a\nbytes literal in Python 3 (e.g. when code is automatically converted\nwith 2to3).  A ``\'u\'`` or ``\'b\'`` prefix may be followed by an ``\'r\'``\nprefix.\n\nIn triple-quoted strings, unescaped newlines and quotes are allowed\n(and are retained), except that three unescaped quotes in a row\nterminate the string.  (A "quote" is the character used to open the\nstring, i.e. either ``\'`` or ``"``.)\n\nUnless an ``\'r\'`` or ``\'R\'`` prefix is present, escape sequences in\nstrings are interpreted according to rules similar to those used by\nStandard C.  The recognized escape sequences are:\n\n+-------------------+-----------------------------------+---------+\n| Escape Sequence   | Meaning                           | Notes   |\n+===================+===================================+=========+\n| ``\\newline``      | Ignored                           |         |\n+-------------------+-----------------------------------+---------+\n| ``\\\\``            | Backslash (``\\``)                 |         |\n+-------------------+-----------------------------------+---------+\n| ``\\\'``            | Single quote (``\'``)              |         |\n+-------------------+-----------------------------------+---------+\n| ``\\"``            | Double quote (``"``)              |         |\n+-------------------+-----------------------------------+---------+\n| ``\\a``            | ASCII Bell (BEL)                  |         |\n+-------------------+-----------------------------------+---------+\n| ``\\b``            | ASCII Backspace (BS)              |         |\n+-------------------+-----------------------------------+---------+\n| ``\\f``            | ASCII Formfeed (FF)               |         |\n+-------------------+-----------------------------------+---------+\n| ``\\n``            | ASCII Linefeed (LF)               |         |\n+-------------------+-----------------------------------+---------+\n| ``\\N{name}``      | Character named *name* in the     |         |\n|                   | Unicode database (Unicode only)   |         |\n+-------------------+-----------------------------------+---------+\n| ``\\r``            | ASCII Carriage Return (CR)        |         |\n+-------------------+-----------------------------------+---------+\n| ``\\t``            | ASCII Horizontal Tab (TAB)        |         |\n+-------------------+-----------------------------------+---------+\n| ``\\uxxxx``        | Character with 16-bit hex value   | (1)     |\n|                   | *xxxx* (Unicode only)             |         |\n+-------------------+-----------------------------------+---------+\n| ``\\Uxxxxxxxx``    | Character with 32-bit hex value   | (2)     |\n|                   | *xxxxxxxx* (Unicode only)         |         |\n+-------------------+-----------------------------------+---------+\n| ``\\v``            | ASCII Vertical Tab (VT)           |         |\n+-------------------+-----------------------------------+---------+\n| ``\\ooo``          | Character with octal value *ooo*  | (3,5)   |\n+-------------------+-----------------------------------+---------+\n| ``\\xhh``          | Character with hex value *hh*     | (4,5)   |\n+-------------------+-----------------------------------+---------+\n\nNotes:\n\n1. Individual code units which form parts of a surrogate pair can be\n   encoded using this escape sequence.\n\n2. Any Unicode character can be encoded this way, but characters\n   outside the Basic Multilingual Plane (BMP) will be encoded using a\n   surrogate pair if Python is compiled to use 16-bit code units (the\n   default).  Individual code units which form parts of a surrogate\n   pair can be encoded using this escape sequence.\n\n3. As in Standard C, up to three octal digits are accepted.\n\n4. Unlike in Standard C, exactly two hex digits are required.\n\n5. In a string literal, hexadecimal and octal escapes denote the byte\n   with the given value; it is not necessary that the byte encodes a\n   character in the source character set. In a Unicode literal, these\n   escapes denote a Unicode character with the given value.\n\nUnlike Standard C, all unrecognized escape sequences are left in the\nstring unchanged, i.e., *the backslash is left in the string*.  (This\nbehavior is useful when debugging: if an escape sequence is mistyped,\nthe resulting output is more easily recognized as broken.)  It is also\nimportant to note that the escape sequences marked as "(Unicode only)"\nin the table above fall into the category of unrecognized escapes for\nnon-Unicode string literals.\n\nWhen an ``\'r\'`` or ``\'R\'`` prefix is present, a character following a\nbackslash is included in the string without change, and *all\nbackslashes are left in the string*.  For example, the string literal\n``r"\\n"`` consists of two characters: a backslash and a lowercase\n``\'n\'``.  String quotes can be escaped with a backslash, but the\nbackslash remains in the string; for example, ``r"\\""`` is a valid\nstring literal consisting of two characters: a backslash and a double\nquote; ``r"\\"`` is not a valid string literal (even a raw string\ncannot end in an odd number of backslashes).  Specifically, *a raw\nstring cannot end in a single backslash* (since the backslash would\nescape the following quote character).  Note also that a single\nbackslash followed by a newline is interpreted as those two characters\nas part of the string, *not* as a line continuation.\n\nWhen an ``\'r\'`` or ``\'R\'`` prefix is used in conjunction with a\n``\'u\'`` or ``\'U\'`` prefix, then the ``\\uXXXX`` and ``\\UXXXXXXXX``\nescape sequences are processed while  *all other backslashes are left\nin the string*. For example, the string literal ``ur"\\u0062\\n"``\nconsists of three Unicode characters: \'LATIN SMALL LETTER B\', \'REVERSE\nSOLIDUS\', and \'LATIN SMALL LETTER N\'. Backslashes can be escaped with\na preceding backslash; however, both remain in the string.  As a\nresult, ``\\uXXXX`` escape sequences are only recognized when there are\nan odd number of backslashes.\n',
- 'subscriptions': u'\nSubscriptions\n*************\n\nA subscription selects an item of a sequence (string, tuple or list)\nor mapping (dictionary) object:\n\n   subscription ::= primary "[" expression_list "]"\n\nThe primary must evaluate to an object of a sequence or mapping type.\n\nIf the primary is a mapping, the expression list must evaluate to an\nobject whose value is one of the keys of the mapping, and the\nsubscription selects the value in the mapping that corresponds to that\nkey.  (The expression list is a tuple except if it has exactly one\nitem.)\n\nIf the primary is a sequence, the expression (list) must evaluate to a\nplain integer.  If this value is negative, the length of the sequence\nis added to it (so that, e.g., ``x[-1]`` selects the last item of\n``x``.)  The resulting value must be a nonnegative integer less than\nthe number of items in the sequence, and the subscription selects the\nitem whose index is that value (counting from zero).\n\nA string\'s items are characters.  A character is not a separate data\ntype but a string of exactly one character.\n',
- 'truth': u"\nTruth Value Testing\n*******************\n\nAny object can be tested for truth value, for use in an ``if`` or\n``while`` condition or as operand of the Boolean operations below. The\nfollowing values are considered false:\n\n* ``None``\n\n* ``False``\n\n* zero of any numeric type, for example, ``0``, ``0L``, ``0.0``,\n  ``0j``.\n\n* any empty sequence, for example, ``''``, ``()``, ``[]``.\n\n* any empty mapping, for example, ``{}``.\n\n* instances of user-defined classes, if the class defines a\n  ``__nonzero__()`` or ``__len__()`` method, when that method returns\n  the integer zero or ``bool`` value ``False``. [1]\n\nAll other values are considered true --- so objects of many types are\nalways true.\n\nOperations and built-in functions that have a Boolean result always\nreturn ``0`` or ``False`` for false and ``1`` or ``True`` for true,\nunless otherwise stated. (Important exception: the Boolean operations\n``or`` and ``and`` always return one of their operands.)\n",
- 'try': u'\nThe ``try`` statement\n*********************\n\nThe ``try`` statement specifies exception handlers and/or cleanup code\nfor a group of statements:\n\n   try_stmt  ::= try1_stmt | try2_stmt\n   try1_stmt ::= "try" ":" suite\n                 ("except" [expression [("as" | ",") target]] ":" suite)+\n                 ["else" ":" suite]\n                 ["finally" ":" suite]\n   try2_stmt ::= "try" ":" suite\n                 "finally" ":" suite\n\nChanged in version 2.5: In previous versions of Python,\n``try``...``except``...``finally`` did not work. ``try``...``except``\nhad to be nested in ``try``...``finally``.\n\nThe ``except`` clause(s) specify one or more exception handlers. When\nno exception occurs in the ``try`` clause, no exception handler is\nexecuted. When an exception occurs in the ``try`` suite, a search for\nan exception handler is started.  This search inspects the except\nclauses in turn until one is found that matches the exception.  An\nexpression-less except clause, if present, must be last; it matches\nany exception.  For an except clause with an expression, that\nexpression is evaluated, and the clause matches the exception if the\nresulting object is "compatible" with the exception.  An object is\ncompatible with an exception if it is the class or a base class of the\nexception object, a tuple containing an item compatible with the\nexception, or, in the (deprecated) case of string exceptions, is the\nraised string itself (note that the object identities must match, i.e.\nit must be the same string object, not just a string with the same\nvalue).\n\nIf no except clause matches the exception, the search for an exception\nhandler continues in the surrounding code and on the invocation stack.\n[1]\n\nIf the evaluation of an expression in the header of an except clause\nraises an exception, the original search for a handler is canceled and\na search starts for the new exception in the surrounding code and on\nthe call stack (it is treated as if the entire ``try`` statement\nraised the exception).\n\nWhen a matching except clause is found, the exception is assigned to\nthe target specified in that except clause, if present, and the except\nclause\'s suite is executed.  All except clauses must have an\nexecutable block.  When the end of this block is reached, execution\ncontinues normally after the entire try statement.  (This means that\nif two nested handlers exist for the same exception, and the exception\noccurs in the try clause of the inner handler, the outer handler will\nnot handle the exception.)\n\nBefore an except clause\'s suite is executed, details about the\nexception are assigned to three variables in the ``sys`` module:\n``sys.exc_type`` receives the object identifying the exception;\n``sys.exc_value`` receives the exception\'s parameter;\n``sys.exc_traceback`` receives a traceback object (see section *The\nstandard type hierarchy*) identifying the point in the program where\nthe exception occurred. These details are also available through the\n``sys.exc_info()`` function, which returns a tuple ``(exc_type,\nexc_value, exc_traceback)``.  Use of the corresponding variables is\ndeprecated in favor of this function, since their use is unsafe in a\nthreaded program.  As of Python 1.5, the variables are restored to\ntheir previous values (before the call) when returning from a function\nthat handled an exception.\n\nThe optional ``else`` clause is executed if and when control flows off\nthe end of the ``try`` clause. [2] Exceptions in the ``else`` clause\nare not handled by the preceding ``except`` clauses.\n\nIf ``finally`` is present, it specifies a \'cleanup\' handler.  The\n``try`` clause is executed, including any ``except`` and ``else``\nclauses.  If an exception occurs in any of the clauses and is not\nhandled, the exception is temporarily saved. The ``finally`` clause is\nexecuted.  If there is a saved exception, it is re-raised at the end\nof the ``finally`` clause. If the ``finally`` clause raises another\nexception or executes a ``return`` or ``break`` statement, the saved\nexception is lost.  The exception information is not available to the\nprogram during execution of the ``finally`` clause.\n\nWhen a ``return``, ``break`` or ``continue`` statement is executed in\nthe ``try`` suite of a ``try``...``finally`` statement, the\n``finally`` clause is also executed \'on the way out.\' A ``continue``\nstatement is illegal in the ``finally`` clause. (The reason is a\nproblem with the current implementation --- this restriction may be\nlifted in the future).\n\nAdditional information on exceptions can be found in section\n*Exceptions*, and information on using the ``raise`` statement to\ngenerate exceptions may be found in section *The raise statement*.\n',
- 'types': u'\nThe standard type hierarchy\n***************************\n\nBelow is a list of the types that are built into Python.  Extension\nmodules (written in C, Java, or other languages, depending on the\nimplementation) can define additional types.  Future versions of\nPython may add types to the type hierarchy (e.g., rational numbers,\nefficiently stored arrays of integers, etc.).\n\nSome of the type descriptions below contain a paragraph listing\n\'special attributes.\'  These are attributes that provide access to the\nimplementation and are not intended for general use.  Their definition\nmay change in the future.\n\nNone\n   This type has a single value.  There is a single object with this\n   value. This object is accessed through the built-in name ``None``.\n   It is used to signify the absence of a value in many situations,\n   e.g., it is returned from functions that don\'t explicitly return\n   anything. Its truth value is false.\n\nNotImplemented\n   This type has a single value.  There is a single object with this\n   value. This object is accessed through the built-in name\n   ``NotImplemented``. Numeric methods and rich comparison methods may\n   return this value if they do not implement the operation for the\n   operands provided.  (The interpreter will then try the reflected\n   operation, or some other fallback, depending on the operator.)  Its\n   truth value is true.\n\nEllipsis\n   This type has a single value.  There is a single object with this\n   value. This object is accessed through the built-in name\n   ``Ellipsis``. It is used to indicate the presence of the ``...``\n   syntax in a slice.  Its truth value is true.\n\n``numbers.Number``\n   These are created by numeric literals and returned as results by\n   arithmetic operators and arithmetic built-in functions.  Numeric\n   objects are immutable; once created their value never changes.\n   Python numbers are of course strongly related to mathematical\n   numbers, but subject to the limitations of numerical representation\n   in computers.\n\n   Python distinguishes between integers, floating point numbers, and\n   complex numbers:\n\n   ``numbers.Integral``\n      These represent elements from the mathematical set of integers\n      (positive and negative).\n\n      There are three types of integers:\n\n      Plain integers\n         These represent numbers in the range -2147483648 through\n         2147483647. (The range may be larger on machines with a\n         larger natural word size, but not smaller.)  When the result\n         of an operation would fall outside this range, the result is\n         normally returned as a long integer (in some cases, the\n         exception ``OverflowError`` is raised instead).  For the\n         purpose of shift and mask operations, integers are assumed to\n         have a binary, 2\'s complement notation using 32 or more bits,\n         and hiding no bits from the user (i.e., all 4294967296\n         different bit patterns correspond to different values).\n\n      Long integers\n         These represent numbers in an unlimited range, subject to\n         available (virtual) memory only.  For the purpose of shift\n         and mask operations, a binary representation is assumed, and\n         negative numbers are represented in a variant of 2\'s\n         complement which gives the illusion of an infinite string of\n         sign bits extending to the left.\n\n      Booleans\n         These represent the truth values False and True.  The two\n         objects representing the values False and True are the only\n         Boolean objects. The Boolean type is a subtype of plain\n         integers, and Boolean values behave like the values 0 and 1,\n         respectively, in almost all contexts, the exception being\n         that when converted to a string, the strings ``"False"`` or\n         ``"True"`` are returned, respectively.\n\n      The rules for integer representation are intended to give the\n      most meaningful interpretation of shift and mask operations\n      involving negative integers and the least surprises when\n      switching between the plain and long integer domains.  Any\n      operation, if it yields a result in the plain integer domain,\n      will yield the same result in the long integer domain or when\n      using mixed operands.  The switch between domains is transparent\n      to the programmer.\n\n   ``numbers.Real`` (``float``)\n      These represent machine-level double precision floating point\n      numbers. You are at the mercy of the underlying machine\n      architecture (and C or Java implementation) for the accepted\n      range and handling of overflow. Python does not support single-\n      precision floating point numbers; the savings in processor and\n      memory usage that are usually the reason for using these is\n      dwarfed by the overhead of using objects in Python, so there is\n      no reason to complicate the language with two kinds of floating\n      point numbers.\n\n   ``numbers.Complex``\n      These represent complex numbers as a pair of machine-level\n      double precision floating point numbers.  The same caveats apply\n      as for floating point numbers. The real and imaginary parts of a\n      complex number ``z`` can be retrieved through the read-only\n      attributes ``z.real`` and ``z.imag``.\n\nSequences\n   These represent finite ordered sets indexed by non-negative\n   numbers. The built-in function ``len()`` returns the number of\n   items of a sequence. When the length of a sequence is *n*, the\n   index set contains the numbers 0, 1, ..., *n*-1.  Item *i* of\n   sequence *a* is selected by ``a[i]``.\n\n   Sequences also support slicing: ``a[i:j]`` selects all items with\n   index *k* such that *i* ``<=`` *k* ``<`` *j*.  When used as an\n   expression, a slice is a sequence of the same type.  This implies\n   that the index set is renumbered so that it starts at 0.\n\n   Some sequences also support "extended slicing" with a third "step"\n   parameter: ``a[i:j:k]`` selects all items of *a* with index *x*\n   where ``x = i + n*k``, *n* ``>=`` ``0`` and *i* ``<=`` *x* ``<``\n   *j*.\n\n   Sequences are distinguished according to their mutability:\n\n   Immutable sequences\n      An object of an immutable sequence type cannot change once it is\n      created.  (If the object contains references to other objects,\n      these other objects may be mutable and may be changed; however,\n      the collection of objects directly referenced by an immutable\n      object cannot change.)\n\n      The following types are immutable sequences:\n\n      Strings\n         The items of a string are characters.  There is no separate\n         character type; a character is represented by a string of one\n         item. Characters represent (at least) 8-bit bytes.  The\n         built-in functions ``chr()`` and ``ord()`` convert between\n         characters and nonnegative integers representing the byte\n         values.  Bytes with the values 0-127 usually represent the\n         corresponding ASCII values, but the interpretation of values\n         is up to the program.  The string data type is also used to\n         represent arrays of bytes, e.g., to hold data read from a\n         file.\n\n         (On systems whose native character set is not ASCII, strings\n         may use EBCDIC in their internal representation, provided the\n         functions ``chr()`` and ``ord()`` implement a mapping between\n         ASCII and EBCDIC, and string comparison preserves the ASCII\n         order. Or perhaps someone can propose a better rule?)\n\n      Unicode\n         The items of a Unicode object are Unicode code units.  A\n         Unicode code unit is represented by a Unicode object of one\n         item and can hold either a 16-bit or 32-bit value\n         representing a Unicode ordinal (the maximum value for the\n         ordinal is given in ``sys.maxunicode``, and depends on how\n         Python is configured at compile time).  Surrogate pairs may\n         be present in the Unicode object, and will be reported as two\n         separate items.  The built-in functions ``unichr()`` and\n         ``ord()`` convert between code units and nonnegative integers\n         representing the Unicode ordinals as defined in the Unicode\n         Standard 3.0. Conversion from and to other encodings are\n         possible through the Unicode method ``encode()`` and the\n         built-in function ``unicode()``.\n\n      Tuples\n         The items of a tuple are arbitrary Python objects. Tuples of\n         two or more items are formed by comma-separated lists of\n         expressions.  A tuple of one item (a \'singleton\') can be\n         formed by affixing a comma to an expression (an expression by\n         itself does not create a tuple, since parentheses must be\n         usable for grouping of expressions).  An empty tuple can be\n         formed by an empty pair of parentheses.\n\n   Mutable sequences\n      Mutable sequences can be changed after they are created.  The\n      subscription and slicing notations can be used as the target of\n      assignment and ``del`` (delete) statements.\n\n      There are currently two intrinsic mutable sequence types:\n\n      Lists\n         The items of a list are arbitrary Python objects.  Lists are\n         formed by placing a comma-separated list of expressions in\n         square brackets. (Note that there are no special cases needed\n         to form lists of length 0 or 1.)\n\n      Byte Arrays\n         A bytearray object is a mutable array. They are created by\n         the built-in ``bytearray()`` constructor.  Aside from being\n         mutable (and hence unhashable), byte arrays otherwise provide\n         the same interface and functionality as immutable bytes\n         objects.\n\n      The extension module ``array`` provides an additional example of\n      a mutable sequence type.\n\nSet types\n   These represent unordered, finite sets of unique, immutable\n   objects. As such, they cannot be indexed by any subscript. However,\n   they can be iterated over, and the built-in function ``len()``\n   returns the number of items in a set. Common uses for sets are fast\n   membership testing, removing duplicates from a sequence, and\n   computing mathematical operations such as intersection, union,\n   difference, and symmetric difference.\n\n   For set elements, the same immutability rules apply as for\n   dictionary keys. Note that numeric types obey the normal rules for\n   numeric comparison: if two numbers compare equal (e.g., ``1`` and\n   ``1.0``), only one of them can be contained in a set.\n\n   There are currently two intrinsic set types:\n\n   Sets\n      These represent a mutable set. They are created by the built-in\n      ``set()`` constructor and can be modified afterwards by several\n      methods, such as ``add()``.\n\n   Frozen sets\n      These represent an immutable set.  They are created by the\n      built-in ``frozenset()`` constructor.  As a frozenset is\n      immutable and *hashable*, it can be used again as an element of\n      another set, or as a dictionary key.\n\nMappings\n   These represent finite sets of objects indexed by arbitrary index\n   sets. The subscript notation ``a[k]`` selects the item indexed by\n   ``k`` from the mapping ``a``; this can be used in expressions and\n   as the target of assignments or ``del`` statements. The built-in\n   function ``len()`` returns the number of items in a mapping.\n\n   There is currently a single intrinsic mapping type:\n\n   Dictionaries\n      These represent finite sets of objects indexed by nearly\n      arbitrary values.  The only types of values not acceptable as\n      keys are values containing lists or dictionaries or other\n      mutable types that are compared by value rather than by object\n      identity, the reason being that the efficient implementation of\n      dictionaries requires a key\'s hash value to remain constant.\n      Numeric types used for keys obey the normal rules for numeric\n      comparison: if two numbers compare equal (e.g., ``1`` and\n      ``1.0``) then they can be used interchangeably to index the same\n      dictionary entry.\n\n      Dictionaries are mutable; they can be created by the ``{...}``\n      notation (see section *Dictionary displays*).\n\n      The extension modules ``dbm``, ``gdbm``, and ``bsddb`` provide\n      additional examples of mapping types.\n\nCallable types\n   These are the types to which the function call operation (see\n   section *Calls*) can be applied:\n\n   User-defined functions\n      A user-defined function object is created by a function\n      definition (see section *Function definitions*).  It should be\n      called with an argument list containing the same number of items\n      as the function\'s formal parameter list.\n\n      Special attributes:\n\n      +-------------------------+---------------------------------+-------------+\n      | Attribute               | Meaning                         |             |\n      +=========================+=================================+=============+\n      | ``func_doc``            | The function\'s documentation    | Writable    |\n      |                         | string, or ``None`` if          |             |\n      |                         | unavailable                     |             |\n      +-------------------------+---------------------------------+-------------+\n      | ``__doc__``             | Another way of spelling         | Writable    |\n      |                         | ``func_doc``                    |             |\n      +-------------------------+---------------------------------+-------------+\n      | ``func_name``           | The function\'s name             | Writable    |\n      +-------------------------+---------------------------------+-------------+\n      | ``__name__``            | Another way of spelling         | Writable    |\n      |                         | ``func_name``                   |             |\n      +-------------------------+---------------------------------+-------------+\n      | ``__module__``          | The name of the module the      | Writable    |\n      |                         | function was defined in, or     |             |\n      |                         | ``None`` if unavailable.        |             |\n      +-------------------------+---------------------------------+-------------+\n      | ``func_defaults``       | A tuple containing default      | Writable    |\n      |                         | argument values for those       |             |\n      |                         | arguments that have defaults,   |             |\n      |                         | or ``None`` if no arguments     |             |\n      |                         | have a default value            |             |\n      +-------------------------+---------------------------------+-------------+\n      | ``func_code``           | The code object representing    | Writable    |\n      |                         | the compiled function body.     |             |\n      +-------------------------+---------------------------------+-------------+\n      | ``func_globals``        | A reference to the dictionary   | Read-only   |\n      |                         | that holds the function\'s       |             |\n      |                         | global variables --- the global |             |\n      |                         | namespace of the module in      |             |\n      |                         | which the function was defined. |             |\n      +-------------------------+---------------------------------+-------------+\n      | ``func_dict``           | The namespace supporting        | Writable    |\n      |                         | arbitrary function attributes.  |             |\n      +-------------------------+---------------------------------+-------------+\n      | ``func_closure``        | ``None`` or a tuple of cells    | Read-only   |\n      |                         | that contain bindings for the   |             |\n      |                         | function\'s free variables.      |             |\n      +-------------------------+---------------------------------+-------------+\n\n      Most of the attributes labelled "Writable" check the type of the\n      assigned value.\n\n      Changed in version 2.4: ``func_name`` is now writable.\n\n      Function objects also support getting and setting arbitrary\n      attributes, which can be used, for example, to attach metadata\n      to functions.  Regular attribute dot-notation is used to get and\n      set such attributes. *Note that the current implementation only\n      supports function attributes on user-defined functions. Function\n      attributes on built-in functions may be supported in the\n      future.*\n\n      Additional information about a function\'s definition can be\n      retrieved from its code object; see the description of internal\n      types below.\n\n   User-defined methods\n      A user-defined method object combines a class, a class instance\n      (or ``None``) and any callable object (normally a user-defined\n      function).\n\n      Special read-only attributes: ``im_self`` is the class instance\n      object, ``im_func`` is the function object; ``im_class`` is the\n      class of ``im_self`` for bound methods or the class that asked\n      for the method for unbound methods; ``__doc__`` is the method\'s\n      documentation (same as ``im_func.__doc__``); ``__name__`` is the\n      method name (same as ``im_func.__name__``); ``__module__`` is\n      the name of the module the method was defined in, or ``None`` if\n      unavailable.\n\n      Changed in version 2.2: ``im_self`` used to refer to the class\n      that defined the method.\n\n      Changed in version 2.6: For 3.0 forward-compatibility,\n      ``im_func`` is also available as ``__func__``, and ``im_self``\n      as ``__self__``.\n\n      Methods also support accessing (but not setting) the arbitrary\n      function attributes on the underlying function object.\n\n      User-defined method objects may be created when getting an\n      attribute of a class (perhaps via an instance of that class), if\n      that attribute is a user-defined function object, an unbound\n      user-defined method object, or a class method object. When the\n      attribute is a user-defined method object, a new method object\n      is only created if the class from which it is being retrieved is\n      the same as, or a derived class of, the class stored in the\n      original method object; otherwise, the original method object is\n      used as it is.\n\n      When a user-defined method object is created by retrieving a\n      user-defined function object from a class, its ``im_self``\n      attribute is ``None`` and the method object is said to be\n      unbound. When one is created by retrieving a user-defined\n      function object from a class via one of its instances, its\n      ``im_self`` attribute is the instance, and the method object is\n      said to be bound. In either case, the new method\'s ``im_class``\n      attribute is the class from which the retrieval takes place, and\n      its ``im_func`` attribute is the original function object.\n\n      When a user-defined method object is created by retrieving\n      another method object from a class or instance, the behaviour is\n      the same as for a function object, except that the ``im_func``\n      attribute of the new instance is not the original method object\n      but its ``im_func`` attribute.\n\n      When a user-defined method object is created by retrieving a\n      class method object from a class or instance, its ``im_self``\n      attribute is the class itself (the same as the ``im_class``\n      attribute), and its ``im_func`` attribute is the function object\n      underlying the class method.\n\n      When an unbound user-defined method object is called, the\n      underlying function (``im_func``) is called, with the\n      restriction that the first argument must be an instance of the\n      proper class (``im_class``) or of a derived class thereof.\n\n      When a bound user-defined method object is called, the\n      underlying function (``im_func``) is called, inserting the class\n      instance (``im_self``) in front of the argument list.  For\n      instance, when ``C`` is a class which contains a definition for\n      a function ``f()``, and ``x`` is an instance of ``C``, calling\n      ``x.f(1)`` is equivalent to calling ``C.f(x, 1)``.\n\n      When a user-defined method object is derived from a class method\n      object, the "class instance" stored in ``im_self`` will actually\n      be the class itself, so that calling either ``x.f(1)`` or\n      ``C.f(1)`` is equivalent to calling ``f(C,1)`` where ``f`` is\n      the underlying function.\n\n      Note that the transformation from function object to (unbound or\n      bound) method object happens each time the attribute is\n      retrieved from the class or instance. In some cases, a fruitful\n      optimization is to assign the attribute to a local variable and\n      call that local variable. Also notice that this transformation\n      only happens for user-defined functions; other callable objects\n      (and all non-callable objects) are retrieved without\n      transformation.  It is also important to note that user-defined\n      functions which are attributes of a class instance are not\n      converted to bound methods; this *only* happens when the\n      function is an attribute of the class.\n\n   Generator functions\n      A function or method which uses the ``yield`` statement (see\n      section *The yield statement*) is called a *generator function*.\n      Such a function, when called, always returns an iterator object\n      which can be used to execute the body of the function:  calling\n      the iterator\'s ``next()`` method will cause the function to\n      execute until it provides a value using the ``yield`` statement.\n      When the function executes a ``return`` statement or falls off\n      the end, a ``StopIteration`` exception is raised and the\n      iterator will have reached the end of the set of values to be\n      returned.\n\n   Built-in functions\n      A built-in function object is a wrapper around a C function.\n      Examples of built-in functions are ``len()`` and ``math.sin()``\n      (``math`` is a standard built-in module). The number and type of\n      the arguments are determined by the C function. Special read-\n      only attributes: ``__doc__`` is the function\'s documentation\n      string, or ``None`` if unavailable; ``__name__`` is the\n      function\'s name; ``__self__`` is set to ``None`` (but see the\n      next item); ``__module__`` is the name of the module the\n      function was defined in or ``None`` if unavailable.\n\n   Built-in methods\n      This is really a different disguise of a built-in function, this\n      time containing an object passed to the C function as an\n      implicit extra argument.  An example of a built-in method is\n      ``alist.append()``, assuming *alist* is a list object. In this\n      case, the special read-only attribute ``__self__`` is set to the\n      object denoted by *alist*.\n\n   Class Types\n      Class types, or "new-style classes," are callable.  These\n      objects normally act as factories for new instances of\n      themselves, but variations are possible for class types that\n      override ``__new__()``.  The arguments of the call are passed to\n      ``__new__()`` and, in the typical case, to ``__init__()`` to\n      initialize the new instance.\n\n   Classic Classes\n      Class objects are described below.  When a class object is\n      called, a new class instance (also described below) is created\n      and returned.  This implies a call to the class\'s ``__init__()``\n      method if it has one.  Any arguments are passed on to the\n      ``__init__()`` method.  If there is no ``__init__()`` method,\n      the class must be called without arguments.\n\n   Class instances\n      Class instances are described below.  Class instances are\n      callable only when the class has a ``__call__()`` method;\n      ``x(arguments)`` is a shorthand for ``x.__call__(arguments)``.\n\nModules\n   Modules are imported by the ``import`` statement (see section *The\n   import statement*). A module object has a namespace implemented by\n   a dictionary object (this is the dictionary referenced by the\n   func_globals attribute of functions defined in the module).\n   Attribute references are translated to lookups in this dictionary,\n   e.g., ``m.x`` is equivalent to ``m.__dict__["x"]``. A module object\n   does not contain the code object used to initialize the module\n   (since it isn\'t needed once the initialization is done).\n\n   Attribute assignment updates the module\'s namespace dictionary,\n   e.g., ``m.x = 1`` is equivalent to ``m.__dict__["x"] = 1``.\n\n   Special read-only attribute: ``__dict__`` is the module\'s namespace\n   as a dictionary object.\n\n   **CPython implementation detail:** Because of the way CPython\n   clears module dictionaries, the module dictionary will be cleared\n   when the module falls out of scope even if the dictionary still has\n   live references.  To avoid this, copy the dictionary or keep the\n   module around while using its dictionary directly.\n\n   Predefined (writable) attributes: ``__name__`` is the module\'s\n   name; ``__doc__`` is the module\'s documentation string, or ``None``\n   if unavailable; ``__file__`` is the pathname of the file from which\n   the module was loaded, if it was loaded from a file. The\n   ``__file__`` attribute is not present for C modules that are\n   statically linked into the interpreter; for extension modules\n   loaded dynamically from a shared library, it is the pathname of the\n   shared library file.\n\nClasses\n   Both class types (new-style classes) and class objects (old-\n   style/classic classes) are typically created by class definitions\n   (see section *Class definitions*).  A class has a namespace\n   implemented by a dictionary object. Class attribute references are\n   translated to lookups in this dictionary, e.g., ``C.x`` is\n   translated to ``C.__dict__["x"]`` (although for new-style classes\n   in particular there are a number of hooks which allow for other\n   means of locating attributes). When the attribute name is not found\n   there, the attribute search continues in the base classes.  For\n   old-style classes, the search is depth-first, left-to-right in the\n   order of occurrence in the base class list. New-style classes use\n   the more complex C3 method resolution order which behaves correctly\n   even in the presence of \'diamond\' inheritance structures where\n   there are multiple inheritance paths leading back to a common\n   ancestor. Additional details on the C3 MRO used by new-style\n   classes can be found in the documentation accompanying the 2.3\n   release at http://www.python.org/download/releases/2.3/mro/.\n\n   When a class attribute reference (for class ``C``, say) would yield\n   a user-defined function object or an unbound user-defined method\n   object whose associated class is either ``C`` or one of its base\n   classes, it is transformed into an unbound user-defined method\n   object whose ``im_class`` attribute is ``C``. When it would yield a\n   class method object, it is transformed into a bound user-defined\n   method object whose ``im_class`` and ``im_self`` attributes are\n   both ``C``.  When it would yield a static method object, it is\n   transformed into the object wrapped by the static method object.\n   See section *Implementing Descriptors* for another way in which\n   attributes retrieved from a class may differ from those actually\n   contained in its ``__dict__`` (note that only new-style classes\n   support descriptors).\n\n   Class attribute assignments update the class\'s dictionary, never\n   the dictionary of a base class.\n\n   A class object can be called (see above) to yield a class instance\n   (see below).\n\n   Special attributes: ``__name__`` is the class name; ``__module__``\n   is the module name in which the class was defined; ``__dict__`` is\n   the dictionary containing the class\'s namespace; ``__bases__`` is a\n   tuple (possibly empty or a singleton) containing the base classes,\n   in the order of their occurrence in the base class list;\n   ``__doc__`` is the class\'s documentation string, or None if\n   undefined.\n\nClass instances\n   A class instance is created by calling a class object (see above).\n   A class instance has a namespace implemented as a dictionary which\n   is the first place in which attribute references are searched.\n   When an attribute is not found there, and the instance\'s class has\n   an attribute by that name, the search continues with the class\n   attributes.  If a class attribute is found that is a user-defined\n   function object or an unbound user-defined method object whose\n   associated class is the class (call it ``C``) of the instance for\n   which the attribute reference was initiated or one of its bases, it\n   is transformed into a bound user-defined method object whose\n   ``im_class`` attribute is ``C`` and whose ``im_self`` attribute is\n   the instance. Static method and class method objects are also\n   transformed, as if they had been retrieved from class ``C``; see\n   above under "Classes". See section *Implementing Descriptors* for\n   another way in which attributes of a class retrieved via its\n   instances may differ from the objects actually stored in the\n   class\'s ``__dict__``. If no class attribute is found, and the\n   object\'s class has a ``__getattr__()`` method, that is called to\n   satisfy the lookup.\n\n   Attribute assignments and deletions update the instance\'s\n   dictionary, never a class\'s dictionary.  If the class has a\n   ``__setattr__()`` or ``__delattr__()`` method, this is called\n   instead of updating the instance dictionary directly.\n\n   Class instances can pretend to be numbers, sequences, or mappings\n   if they have methods with certain special names.  See section\n   *Special method names*.\n\n   Special attributes: ``__dict__`` is the attribute dictionary;\n   ``__class__`` is the instance\'s class.\n\nFiles\n   A file object represents an open file.  File objects are created by\n   the ``open()`` built-in function, and also by ``os.popen()``,\n   ``os.fdopen()``, and the ``makefile()`` method of socket objects\n   (and perhaps by other functions or methods provided by extension\n   modules).  The objects ``sys.stdin``, ``sys.stdout`` and\n   ``sys.stderr`` are initialized to file objects corresponding to the\n   interpreter\'s standard input, output and error streams.  See *File\n   Objects* for complete documentation of file objects.\n\nInternal types\n   A few types used internally by the interpreter are exposed to the\n   user. Their definitions may change with future versions of the\n   interpreter, but they are mentioned here for completeness.\n\n   Code objects\n      Code objects represent *byte-compiled* executable Python code,\n      or *bytecode*. The difference between a code object and a\n      function object is that the function object contains an explicit\n      reference to the function\'s globals (the module in which it was\n      defined), while a code object contains no context; also the\n      default argument values are stored in the function object, not\n      in the code object (because they represent values calculated at\n      run-time).  Unlike function objects, code objects are immutable\n      and contain no references (directly or indirectly) to mutable\n      objects.\n\n      Special read-only attributes: ``co_name`` gives the function\n      name; ``co_argcount`` is the number of positional arguments\n      (including arguments with default values); ``co_nlocals`` is the\n      number of local variables used by the function (including\n      arguments); ``co_varnames`` is a tuple containing the names of\n      the local variables (starting with the argument names);\n      ``co_cellvars`` is a tuple containing the names of local\n      variables that are referenced by nested functions;\n      ``co_freevars`` is a tuple containing the names of free\n      variables; ``co_code`` is a string representing the sequence of\n      bytecode instructions; ``co_consts`` is a tuple containing the\n      literals used by the bytecode; ``co_names`` is a tuple\n      containing the names used by the bytecode; ``co_filename`` is\n      the filename from which the code was compiled;\n      ``co_firstlineno`` is the first line number of the function;\n      ``co_lnotab`` is a string encoding the mapping from bytecode\n      offsets to line numbers (for details see the source code of the\n      interpreter); ``co_stacksize`` is the required stack size\n      (including local variables); ``co_flags`` is an integer encoding\n      a number of flags for the interpreter.\n\n      The following flag bits are defined for ``co_flags``: bit\n      ``0x04`` is set if the function uses the ``*arguments`` syntax\n      to accept an arbitrary number of positional arguments; bit\n      ``0x08`` is set if the function uses the ``**keywords`` syntax\n      to accept arbitrary keyword arguments; bit ``0x20`` is set if\n      the function is a generator.\n\n      Future feature declarations (``from __future__ import\n      division``) also use bits in ``co_flags`` to indicate whether a\n      code object was compiled with a particular feature enabled: bit\n      ``0x2000`` is set if the function was compiled with future\n      division enabled; bits ``0x10`` and ``0x1000`` were used in\n      earlier versions of Python.\n\n      Other bits in ``co_flags`` are reserved for internal use.\n\n      If a code object represents a function, the first item in\n      ``co_consts`` is the documentation string of the function, or\n      ``None`` if undefined.\n\n   Frame objects\n      Frame objects represent execution frames.  They may occur in\n      traceback objects (see below).\n\n      Special read-only attributes: ``f_back`` is to the previous\n      stack frame (towards the caller), or ``None`` if this is the\n      bottom stack frame; ``f_code`` is the code object being executed\n      in this frame; ``f_locals`` is the dictionary used to look up\n      local variables; ``f_globals`` is used for global variables;\n      ``f_builtins`` is used for built-in (intrinsic) names;\n      ``f_restricted`` is a flag indicating whether the function is\n      executing in restricted execution mode; ``f_lasti`` gives the\n      precise instruction (this is an index into the bytecode string\n      of the code object).\n\n      Special writable attributes: ``f_trace``, if not ``None``, is a\n      function called at the start of each source code line (this is\n      used by the debugger); ``f_exc_type``, ``f_exc_value``,\n      ``f_exc_traceback`` represent the last exception raised in the\n      parent frame provided another exception was ever raised in the\n      current frame (in all other cases they are None); ``f_lineno``\n      is the current line number of the frame --- writing to this from\n      within a trace function jumps to the given line (only for the\n      bottom-most frame).  A debugger can implement a Jump command\n      (aka Set Next Statement) by writing to f_lineno.\n\n   Traceback objects\n      Traceback objects represent a stack trace of an exception.  A\n      traceback object is created when an exception occurs.  When the\n      search for an exception handler unwinds the execution stack, at\n      each unwound level a traceback object is inserted in front of\n      the current traceback.  When an exception handler is entered,\n      the stack trace is made available to the program. (See section\n      *The try statement*.) It is accessible as ``sys.exc_traceback``,\n      and also as the third item of the tuple returned by\n      ``sys.exc_info()``.  The latter is the preferred interface,\n      since it works correctly when the program is using multiple\n      threads. When the program contains no suitable handler, the\n      stack trace is written (nicely formatted) to the standard error\n      stream; if the interpreter is interactive, it is also made\n      available to the user as ``sys.last_traceback``.\n\n      Special read-only attributes: ``tb_next`` is the next level in\n      the stack trace (towards the frame where the exception\n      occurred), or ``None`` if there is no next level; ``tb_frame``\n      points to the execution frame of the current level;\n      ``tb_lineno`` gives the line number where the exception\n      occurred; ``tb_lasti`` indicates the precise instruction.  The\n      line number and last instruction in the traceback may differ\n      from the line number of its frame object if the exception\n      occurred in a ``try`` statement with no matching except clause\n      or with a finally clause.\n\n   Slice objects\n      Slice objects are used to represent slices when *extended slice\n      syntax* is used. This is a slice using two colons, or multiple\n      slices or ellipses separated by commas, e.g., ``a[i:j:step]``,\n      ``a[i:j, k:l]``, or ``a[..., i:j]``.  They are also created by\n      the built-in ``slice()`` function.\n\n      Special read-only attributes: ``start`` is the lower bound;\n      ``stop`` is the upper bound; ``step`` is the step value; each is\n      ``None`` if omitted. These attributes can have any type.\n\n      Slice objects support one method:\n\n      slice.indices(self, length)\n\n         This method takes a single integer argument *length* and\n         computes information about the extended slice that the slice\n         object would describe if applied to a sequence of *length*\n         items.  It returns a tuple of three integers; respectively\n         these are the *start* and *stop* indices and the *step* or\n         stride length of the slice. Missing or out-of-bounds indices\n         are handled in a manner consistent with regular slices.\n\n         New in version 2.3.\n\n   Static method objects\n      Static method objects provide a way of defeating the\n      transformation of function objects to method objects described\n      above. A static method object is a wrapper around any other\n      object, usually a user-defined method object. When a static\n      method object is retrieved from a class or a class instance, the\n      object actually returned is the wrapped object, which is not\n      subject to any further transformation. Static method objects are\n      not themselves callable, although the objects they wrap usually\n      are. Static method objects are created by the built-in\n      ``staticmethod()`` constructor.\n\n   Class method objects\n      A class method object, like a static method object, is a wrapper\n      around another object that alters the way in which that object\n      is retrieved from classes and class instances. The behaviour of\n      class method objects upon such retrieval is described above,\n      under "User-defined methods". Class method objects are created\n      by the built-in ``classmethod()`` constructor.\n',
- 'typesfunctions': u'\nFunctions\n*********\n\nFunction objects are created by function definitions.  The only\noperation on a function object is to call it: ``func(argument-list)``.\n\nThere are really two flavors of function objects: built-in functions\nand user-defined functions.  Both support the same operation (to call\nthe function), but the implementation is different, hence the\ndifferent object types.\n\nSee *Function definitions* for more information.\n',
- 'typesmapping': u'\nMapping Types --- ``dict``\n**************************\n\nA *mapping* object maps *hashable* values to arbitrary objects.\nMappings are mutable objects.  There is currently only one standard\nmapping type, the *dictionary*.  (For other containers see the built\nin ``list``, ``set``, and ``tuple`` classes, and the ``collections``\nmodule.)\n\nA dictionary\'s keys are *almost* arbitrary values.  Values that are\nnot *hashable*, that is, values containing lists, dictionaries or\nother mutable types (that are compared by value rather than by object\nidentity) may not be used as keys.  Numeric types used for keys obey\nthe normal rules for numeric comparison: if two numbers compare equal\n(such as ``1`` and ``1.0``) then they can be used interchangeably to\nindex the same dictionary entry.  (Note however, that since computers\nstore floating-point numbers as approximations it is usually unwise to\nuse them as dictionary keys.)\n\nDictionaries can be created by placing a comma-separated list of\n``key: value`` pairs within braces, for example: ``{\'jack\': 4098,\n\'sjoerd\': 4127}`` or ``{4098: \'jack\', 4127: \'sjoerd\'}``, or by the\n``dict`` constructor.\n\nclass class dict([arg])\n\n   Return a new dictionary initialized from an optional positional\n   argument or from a set of keyword arguments. If no arguments are\n   given, return a new empty dictionary. If the positional argument\n   *arg* is a mapping object, return a dictionary mapping the same\n   keys to the same values as does the mapping object. Otherwise the\n   positional argument must be a sequence, a container that supports\n   iteration, or an iterator object.  The elements of the argument\n   must each also be of one of those kinds, and each must in turn\n   contain exactly two objects. The first is used as a key in the new\n   dictionary, and the second as the key\'s value.  If a given key is\n   seen more than once, the last value associated with it is retained\n   in the new dictionary.\n\n   If keyword arguments are given, the keywords themselves with their\n   associated values are added as items to the dictionary. If a key is\n   specified both in the positional argument and as a keyword\n   argument, the value associated with the keyword is retained in the\n   dictionary. For example, these all return a dictionary equal to\n   ``{"one": 1, "two": 2}``:\n\n   * ``dict(one=1, two=2)``\n\n   * ``dict({\'one\': 1, \'two\': 2})``\n\n   * ``dict(zip((\'one\', \'two\'), (1, 2)))``\n\n   * ``dict([[\'two\', 2], [\'one\', 1]])``\n\n   The first example only works for keys that are valid Python\n   identifiers; the others work with any valid keys.\n\n   New in version 2.2.\n\n   Changed in version 2.3: Support for building a dictionary from\n   keyword arguments added.\n\n   These are the operations that dictionaries support (and therefore,\n   custom mapping types should support too):\n\n   len(d)\n\n      Return the number of items in the dictionary *d*.\n\n   d[key]\n\n      Return the item of *d* with key *key*.  Raises a ``KeyError`` if\n      *key* is not in the map.\n\n      New in version 2.5: If a subclass of dict defines a method\n      ``__missing__()``, if the key *key* is not present, the\n      ``d[key]`` operation calls that method with the key *key* as\n      argument.  The ``d[key]`` operation then returns or raises\n      whatever is returned or raised by the ``__missing__(key)`` call\n      if the key is not present. No other operations or methods invoke\n      ``__missing__()``. If ``__missing__()`` is not defined,\n      ``KeyError`` is raised.  ``__missing__()`` must be a method; it\n      cannot be an instance variable. For an example, see\n      ``collections.defaultdict``.\n\n   d[key] = value\n\n      Set ``d[key]`` to *value*.\n\n   del d[key]\n\n      Remove ``d[key]`` from *d*.  Raises a ``KeyError`` if *key* is\n      not in the map.\n\n   key in d\n\n      Return ``True`` if *d* has a key *key*, else ``False``.\n\n      New in version 2.2.\n\n   key not in d\n\n      Equivalent to ``not key in d``.\n\n      New in version 2.2.\n\n   iter(d)\n\n      Return an iterator over the keys of the dictionary.  This is a\n      shortcut for ``iterkeys()``.\n\n   clear()\n\n      Remove all items from the dictionary.\n\n   copy()\n\n      Return a shallow copy of the dictionary.\n\n   fromkeys(seq[, value])\n\n      Create a new dictionary with keys from *seq* and values set to\n      *value*.\n\n      ``fromkeys()`` is a class method that returns a new dictionary.\n      *value* defaults to ``None``.\n\n      New in version 2.3.\n\n   get(key[, default])\n\n      Return the value for *key* if *key* is in the dictionary, else\n      *default*. If *default* is not given, it defaults to ``None``,\n      so that this method never raises a ``KeyError``.\n\n   has_key(key)\n\n      Test for the presence of *key* in the dictionary.  ``has_key()``\n      is deprecated in favor of ``key in d``.\n\n   items()\n\n      Return a copy of the dictionary\'s list of ``(key, value)``\n      pairs.\n\n      **CPython implementation detail:** Keys and values are listed in\n      an arbitrary order which is non-random, varies across Python\n      implementations, and depends on the dictionary\'s history of\n      insertions and deletions.\n\n      If ``items()``, ``keys()``, ``values()``, ``iteritems()``,\n      ``iterkeys()``, and ``itervalues()`` are called with no\n      intervening modifications to the dictionary, the lists will\n      directly correspond.  This allows the creation of ``(value,\n      key)`` pairs using ``zip()``: ``pairs = zip(d.values(),\n      d.keys())``.  The same relationship holds for the ``iterkeys()``\n      and ``itervalues()`` methods: ``pairs = zip(d.itervalues(),\n      d.iterkeys())`` provides the same value for ``pairs``. Another\n      way to create the same list is ``pairs = [(v, k) for (k, v) in\n      d.iteritems()]``.\n\n   iteritems()\n\n      Return an iterator over the dictionary\'s ``(key, value)`` pairs.\n      See the note for ``dict.items()``.\n\n      Using ``iteritems()`` while adding or deleting entries in the\n      dictionary may raise a ``RuntimeError`` or fail to iterate over\n      all entries.\n\n      New in version 2.2.\n\n   iterkeys()\n\n      Return an iterator over the dictionary\'s keys.  See the note for\n      ``dict.items()``.\n\n      Using ``iterkeys()`` while adding or deleting entries in the\n      dictionary may raise a ``RuntimeError`` or fail to iterate over\n      all entries.\n\n      New in version 2.2.\n\n   itervalues()\n\n      Return an iterator over the dictionary\'s values.  See the note\n      for ``dict.items()``.\n\n      Using ``itervalues()`` while adding or deleting entries in the\n      dictionary may raise a ``RuntimeError`` or fail to iterate over\n      all entries.\n\n      New in version 2.2.\n\n   keys()\n\n      Return a copy of the dictionary\'s list of keys.  See the note\n      for ``dict.items()``.\n\n   pop(key[, default])\n\n      If *key* is in the dictionary, remove it and return its value,\n      else return *default*.  If *default* is not given and *key* is\n      not in the dictionary, a ``KeyError`` is raised.\n\n      New in version 2.3.\n\n   popitem()\n\n      Remove and return an arbitrary ``(key, value)`` pair from the\n      dictionary.\n\n      ``popitem()`` is useful to destructively iterate over a\n      dictionary, as often used in set algorithms.  If the dictionary\n      is empty, calling ``popitem()`` raises a ``KeyError``.\n\n   setdefault(key[, default])\n\n      If *key* is in the dictionary, return its value.  If not, insert\n      *key* with a value of *default* and return *default*.  *default*\n      defaults to ``None``.\n\n   update([other])\n\n      Update the dictionary with the key/value pairs from *other*,\n      overwriting existing keys.  Return ``None``.\n\n      ``update()`` accepts either another dictionary object or an\n      iterable of key/value pairs (as tuples or other iterables of\n      length two).  If keyword arguments are specified, the dictionary\n      is then updated with those key/value pairs: ``d.update(red=1,\n      blue=2)``.\n\n      Changed in version 2.4: Allowed the argument to be an iterable\n      of key/value pairs and allowed keyword arguments.\n\n   values()\n\n      Return a copy of the dictionary\'s list of values.  See the note\n      for ``dict.items()``.\n\n   viewitems()\n\n      Return a new view of the dictionary\'s items (``(key, value)``\n      pairs).  See below for documentation of view objects.\n\n      New in version 2.7.\n\n   viewkeys()\n\n      Return a new view of the dictionary\'s keys.  See below for\n      documentation of view objects.\n\n      New in version 2.7.\n\n   viewvalues()\n\n      Return a new view of the dictionary\'s values.  See below for\n      documentation of view objects.\n\n      New in version 2.7.\n\n\nDictionary view objects\n=======================\n\nThe objects returned by ``dict.viewkeys()``, ``dict.viewvalues()`` and\n``dict.viewitems()`` are *view objects*.  They provide a dynamic view\non the dictionary\'s entries, which means that when the dictionary\nchanges, the view reflects these changes.\n\nDictionary views can be iterated over to yield their respective data,\nand support membership tests:\n\nlen(dictview)\n\n   Return the number of entries in the dictionary.\n\niter(dictview)\n\n   Return an iterator over the keys, values or items (represented as\n   tuples of ``(key, value)``) in the dictionary.\n\n   Keys and values are iterated over in an arbitrary order which is\n   non-random, varies across Python implementations, and depends on\n   the dictionary\'s history of insertions and deletions. If keys,\n   values and items views are iterated over with no intervening\n   modifications to the dictionary, the order of items will directly\n   correspond.  This allows the creation of ``(value, key)`` pairs\n   using ``zip()``: ``pairs = zip(d.values(), d.keys())``.  Another\n   way to create the same list is ``pairs = [(v, k) for (k, v) in\n   d.items()]``.\n\n   Iterating views while adding or deleting entries in the dictionary\n   may raise a ``RuntimeError`` or fail to iterate over all entries.\n\nx in dictview\n\n   Return ``True`` if *x* is in the underlying dictionary\'s keys,\n   values or items (in the latter case, *x* should be a ``(key,\n   value)`` tuple).\n\nKeys views are set-like since their entries are unique and hashable.\nIf all values are hashable, so that (key, value) pairs are unique and\nhashable, then the items view is also set-like.  (Values views are not\ntreated as set-like since the entries are generally not unique.)  Then\nthese set operations are available ("other" refers either to another\nview or a set):\n\ndictview & other\n\n   Return the intersection of the dictview and the other object as a\n   new set.\n\ndictview | other\n\n   Return the union of the dictview and the other object as a new set.\n\ndictview - other\n\n   Return the difference between the dictview and the other object\n   (all elements in *dictview* that aren\'t in *other*) as a new set.\n\ndictview ^ other\n\n   Return the symmetric difference (all elements either in *dictview*\n   or *other*, but not in both) of the dictview and the other object\n   as a new set.\n\nAn example of dictionary view usage:\n\n   >>> dishes = {\'eggs\': 2, \'sausage\': 1, \'bacon\': 1, \'spam\': 500}\n   >>> keys = dishes.viewkeys()\n   >>> values = dishes.viewvalues()\n\n   >>> # iteration\n   >>> n = 0\n   >>> for val in values:\n   ...     n += val\n   >>> print(n)\n   504\n\n   >>> # keys and values are iterated over in the same order\n   >>> list(keys)\n   [\'eggs\', \'bacon\', \'sausage\', \'spam\']\n   >>> list(values)\n   [2, 1, 1, 500]\n\n   >>> # view objects are dynamic and reflect dict changes\n   >>> del dishes[\'eggs\']\n   >>> del dishes[\'sausage\']\n   >>> list(keys)\n   [\'spam\', \'bacon\']\n\n   >>> # set operations\n   >>> keys & {\'eggs\', \'bacon\', \'salad\'}\n   {\'bacon\'}\n',
- 'typesmethods': u"\nMethods\n*******\n\nMethods are functions that are called using the attribute notation.\nThere are two flavors: built-in methods (such as ``append()`` on\nlists) and class instance methods.  Built-in methods are described\nwith the types that support them.\n\nThe implementation adds two special read-only attributes to class\ninstance methods: ``m.im_self`` is the object on which the method\noperates, and ``m.im_func`` is the function implementing the method.\nCalling ``m(arg-1, arg-2, ..., arg-n)`` is completely equivalent to\ncalling ``m.im_func(m.im_self, arg-1, arg-2, ..., arg-n)``.\n\nClass instance methods are either *bound* or *unbound*, referring to\nwhether the method was accessed through an instance or a class,\nrespectively.  When a method is unbound, its ``im_self`` attribute\nwill be ``None`` and if called, an explicit ``self`` object must be\npassed as the first argument.  In this case, ``self`` must be an\ninstance of the unbound method's class (or a subclass of that class),\notherwise a ``TypeError`` is raised.\n\nLike function objects, methods objects support getting arbitrary\nattributes. However, since method attributes are actually stored on\nthe underlying function object (``meth.im_func``), setting method\nattributes on either bound or unbound methods is disallowed.\nAttempting to set a method attribute results in a ``TypeError`` being\nraised.  In order to set a method attribute, you need to explicitly\nset it on the underlying function object:\n\n   class C:\n       def method(self):\n           pass\n\n   c = C()\n   c.method.im_func.whoami = 'my name is c'\n\nSee *The standard type hierarchy* for more information.\n",
- 'typesmodules': u"\nModules\n*******\n\nThe only special operation on a module is attribute access:\n``m.name``, where *m* is a module and *name* accesses a name defined\nin *m*'s symbol table. Module attributes can be assigned to.  (Note\nthat the ``import`` statement is not, strictly speaking, an operation\non a module object; ``import foo`` does not require a module object\nnamed *foo* to exist, rather it requires an (external) *definition*\nfor a module named *foo* somewhere.)\n\nA special member of every module is ``__dict__``. This is the\ndictionary containing the module's symbol table. Modifying this\ndictionary will actually change the module's symbol table, but direct\nassignment to the ``__dict__`` attribute is not possible (you can\nwrite ``m.__dict__['a'] = 1``, which defines ``m.a`` to be ``1``, but\nyou can't write ``m.__dict__ = {}``).  Modifying ``__dict__`` directly\nis not recommended.\n\nModules built into the interpreter are written like this: ``<module\n'sys' (built-in)>``.  If loaded from a file, they are written as\n``<module 'os' from '/usr/local/lib/pythonX.Y/os.pyc'>``.\n",
- 'typesseq': u'\nSequence Types --- ``str``, ``unicode``, ``list``, ``tuple``, ``bytearray``, ``buffer``, ``xrange``\n***************************************************************************************************\n\nThere are seven sequence types: strings, Unicode strings, lists,\ntuples, bytearrays, buffers, and xrange objects.\n\nFor other containers see the built in ``dict`` and ``set`` classes,\nand the ``collections`` module.\n\nString literals are written in single or double quotes: ``\'xyzzy\'``,\n``"frobozz"``.  See *String literals* for more about string literals.\nUnicode strings are much like strings, but are specified in the syntax\nusing a preceding ``\'u\'`` character: ``u\'abc\'``, ``u"def"``. In\naddition to the functionality described here, there are also string-\nspecific methods described in the *String Methods* section. Lists are\nconstructed with square brackets, separating items with commas: ``[a,\nb, c]``. Tuples are constructed by the comma operator (not within\nsquare brackets), with or without enclosing parentheses, but an empty\ntuple must have the enclosing parentheses, such as ``a, b, c`` or\n``()``.  A single item tuple must have a trailing comma, such as\n``(d,)``.\n\nBytearray objects are created with the built-in function\n``bytearray()``.\n\nBuffer objects are not directly supported by Python syntax, but can be\ncreated by calling the built-in function ``buffer()``.  They don\'t\nsupport concatenation or repetition.\n\nObjects of type xrange are similar to buffers in that there is no\nspecific syntax to create them, but they are created using the\n``xrange()`` function.  They don\'t support slicing, concatenation or\nrepetition, and using ``in``, ``not in``, ``min()`` or ``max()`` on\nthem is inefficient.\n\nMost sequence types support the following operations.  The ``in`` and\n``not in`` operations have the same priorities as the comparison\noperations.  The ``+`` and ``*`` operations have the same priority as\nthe corresponding numeric operations. [3] Additional methods are\nprovided for *Mutable Sequence Types*.\n\nThis table lists the sequence operations sorted in ascending priority\n(operations in the same box have the same priority).  In the table,\n*s* and *t* are sequences of the same type; *n*, *i* and *j* are\nintegers:\n\n+--------------------+----------------------------------+------------+\n| Operation          | Result                           | Notes      |\n+====================+==================================+============+\n| ``x in s``         | ``True`` if an item of *s* is    | (1)        |\n|                    | equal to *x*, else ``False``     |            |\n+--------------------+----------------------------------+------------+\n| ``x not in s``     | ``False`` if an item of *s* is   | (1)        |\n|                    | equal to *x*, else ``True``      |            |\n+--------------------+----------------------------------+------------+\n| ``s + t``          | the concatenation of *s* and *t* | (6)        |\n+--------------------+----------------------------------+------------+\n| ``s * n, n * s``   | *n* shallow copies of *s*        | (2)        |\n|                    | concatenated                     |            |\n+--------------------+----------------------------------+------------+\n| ``s[i]``           | *i*\'th item of *s*, origin 0     | (3)        |\n+--------------------+----------------------------------+------------+\n| ``s[i:j]``         | slice of *s* from *i* to *j*     | (3)(4)     |\n+--------------------+----------------------------------+------------+\n| ``s[i:j:k]``       | slice of *s* from *i* to *j*     | (3)(5)     |\n|                    | with step *k*                    |            |\n+--------------------+----------------------------------+------------+\n| ``len(s)``         | length of *s*                    |            |\n+--------------------+----------------------------------+------------+\n| ``min(s)``         | smallest item of *s*             |            |\n+--------------------+----------------------------------+------------+\n| ``max(s)``         | largest item of *s*              |            |\n+--------------------+----------------------------------+------------+\n| ``s.index(i)``     | index of the first occurence of  |            |\n|                    | *i* in *s*                       |            |\n+--------------------+----------------------------------+------------+\n| ``s.count(i)``     | total number of occurences of    |            |\n|                    | *i* in *s*                       |            |\n+--------------------+----------------------------------+------------+\n\nSequence types also support comparisons. In particular, tuples and\nlists are compared lexicographically by comparing corresponding\nelements. This means that to compare equal, every element must compare\nequal and the two sequences must be of the same type and have the same\nlength. (For full details see *Comparisons* in the language\nreference.)\n\nNotes:\n\n1. When *s* is a string or Unicode string object the ``in`` and ``not\n   in`` operations act like a substring test.  In Python versions\n   before 2.3, *x* had to be a string of length 1. In Python 2.3 and\n   beyond, *x* may be a string of any length.\n\n2. Values of *n* less than ``0`` are treated as ``0`` (which yields an\n   empty sequence of the same type as *s*).  Note also that the copies\n   are shallow; nested structures are not copied.  This often haunts\n   new Python programmers; consider:\n\n   >>> lists = [[]] * 3\n   >>> lists\n   [[], [], []]\n   >>> lists[0].append(3)\n   >>> lists\n   [[3], [3], [3]]\n\n   What has happened is that ``[[]]`` is a one-element list containing\n   an empty list, so all three elements of ``[[]] * 3`` are (pointers\n   to) this single empty list.  Modifying any of the elements of\n   ``lists`` modifies this single list. You can create a list of\n   different lists this way:\n\n   >>> lists = [[] for i in range(3)]\n   >>> lists[0].append(3)\n   >>> lists[1].append(5)\n   >>> lists[2].append(7)\n   >>> lists\n   [[3], [5], [7]]\n\n3. If *i* or *j* is negative, the index is relative to the end of the\n   string: ``len(s) + i`` or ``len(s) + j`` is substituted.  But note\n   that ``-0`` is still ``0``.\n\n4. The slice of *s* from *i* to *j* is defined as the sequence of\n   items with index *k* such that ``i <= k < j``.  If *i* or *j* is\n   greater than ``len(s)``, use ``len(s)``.  If *i* is omitted or\n   ``None``, use ``0``.  If *j* is omitted or ``None``, use\n   ``len(s)``.  If *i* is greater than or equal to *j*, the slice is\n   empty.\n\n5. The slice of *s* from *i* to *j* with step *k* is defined as the\n   sequence of items with index  ``x = i + n*k`` such that ``0 <= n <\n   (j-i)/k``.  In other words, the indices are ``i``, ``i+k``,\n   ``i+2*k``, ``i+3*k`` and so on, stopping when *j* is reached (but\n   never including *j*).  If *i* or *j* is greater than ``len(s)``,\n   use ``len(s)``.  If *i* or *j* are omitted or ``None``, they become\n   "end" values (which end depends on the sign of *k*).  Note, *k*\n   cannot be zero. If *k* is ``None``, it is treated like ``1``.\n\n6. **CPython implementation detail:** If *s* and *t* are both strings,\n   some Python implementations such as CPython can usually perform an\n   in-place optimization for assignments of the form ``s = s + t`` or\n   ``s += t``.  When applicable, this optimization makes quadratic\n   run-time much less likely.  This optimization is both version and\n   implementation dependent.  For performance sensitive code, it is\n   preferable to use the ``str.join()`` method which assures\n   consistent linear concatenation performance across versions and\n   implementations.\n\n   Changed in version 2.4: Formerly, string concatenation never\n   occurred in-place.\n\n\nString Methods\n==============\n\nBelow are listed the string methods which both 8-bit strings and\nUnicode objects support.  Some of them are also available on\n``bytearray`` objects.\n\nIn addition, Python\'s strings support the sequence type methods\ndescribed in the *Sequence Types --- str, unicode, list, tuple,\nbytearray, buffer, xrange* section. To output formatted strings use\ntemplate strings or the ``%`` operator described in the *String\nFormatting Operations* section. Also, see the ``re`` module for string\nfunctions based on regular expressions.\n\nstr.capitalize()\n\n   Return a copy of the string with its first character capitalized\n   and the rest lowercased.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.center(width[, fillchar])\n\n   Return centered in a string of length *width*. Padding is done\n   using the specified *fillchar* (default is a space).\n\n   Changed in version 2.4: Support for the *fillchar* argument.\n\nstr.count(sub[, start[, end]])\n\n   Return the number of non-overlapping occurrences of substring *sub*\n   in the range [*start*, *end*].  Optional arguments *start* and\n   *end* are interpreted as in slice notation.\n\nstr.decode([encoding[, errors]])\n\n   Decodes the string using the codec registered for *encoding*.\n   *encoding* defaults to the default string encoding.  *errors* may\n   be given to set a different error handling scheme.  The default is\n   ``\'strict\'``, meaning that encoding errors raise ``UnicodeError``.\n   Other possible values are ``\'ignore\'``, ``\'replace\'`` and any other\n   name registered via ``codecs.register_error()``, see section *Codec\n   Base Classes*.\n\n   New in version 2.2.\n\n   Changed in version 2.3: Support for other error handling schemes\n   added.\n\n   Changed in version 2.7: Support for keyword arguments added.\n\nstr.encode([encoding[, errors]])\n\n   Return an encoded version of the string.  Default encoding is the\n   current default string encoding.  *errors* may be given to set a\n   different error handling scheme.  The default for *errors* is\n   ``\'strict\'``, meaning that encoding errors raise a\n   ``UnicodeError``.  Other possible values are ``\'ignore\'``,\n   ``\'replace\'``, ``\'xmlcharrefreplace\'``, ``\'backslashreplace\'`` and\n   any other name registered via ``codecs.register_error()``, see\n   section *Codec Base Classes*. For a list of possible encodings, see\n   section *Standard Encodings*.\n\n   New in version 2.0.\n\n   Changed in version 2.3: Support for ``\'xmlcharrefreplace\'`` and\n   ``\'backslashreplace\'`` and other error handling schemes added.\n\n   Changed in version 2.7: Support for keyword arguments added.\n\nstr.endswith(suffix[, start[, end]])\n\n   Return ``True`` if the string ends with the specified *suffix*,\n   otherwise return ``False``.  *suffix* can also be a tuple of\n   suffixes to look for.  With optional *start*, test beginning at\n   that position.  With optional *end*, stop comparing at that\n   position.\n\n   Changed in version 2.5: Accept tuples as *suffix*.\n\nstr.expandtabs([tabsize])\n\n   Return a copy of the string where all tab characters are replaced\n   by one or more spaces, depending on the current column and the\n   given tab size.  The column number is reset to zero after each\n   newline occurring in the string. If *tabsize* is not given, a tab\n   size of ``8`` characters is assumed.  This doesn\'t understand other\n   non-printing characters or escape sequences.\n\nstr.find(sub[, start[, end]])\n\n   Return the lowest index in the string where substring *sub* is\n   found, such that *sub* is contained in the slice ``s[start:end]``.\n   Optional arguments *start* and *end* are interpreted as in slice\n   notation.  Return ``-1`` if *sub* is not found.\n\n   Note: The ``find()`` method should be used only if you need to know the\n     position of *sub*.  To check if *sub* is a substring or not, use\n     the ``in`` operator:\n\n        >>> \'Py\' in \'Python\'\n        True\n\nstr.format(*args, **kwargs)\n\n   Perform a string formatting operation.  The string on which this\n   method is called can contain literal text or replacement fields\n   delimited by braces ``{}``.  Each replacement field contains either\n   the numeric index of a positional argument, or the name of a\n   keyword argument.  Returns a copy of the string where each\n   replacement field is replaced with the string value of the\n   corresponding argument.\n\n   >>> "The sum of 1 + 2 is {0}".format(1+2)\n   \'The sum of 1 + 2 is 3\'\n\n   See *Format String Syntax* for a description of the various\n   formatting options that can be specified in format strings.\n\n   This method of string formatting is the new standard in Python 3.0,\n   and should be preferred to the ``%`` formatting described in\n   *String Formatting Operations* in new code.\n\n   New in version 2.6.\n\nstr.index(sub[, start[, end]])\n\n   Like ``find()``, but raise ``ValueError`` when the substring is not\n   found.\n\nstr.isalnum()\n\n   Return true if all characters in the string are alphanumeric and\n   there is at least one character, false otherwise.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.isalpha()\n\n   Return true if all characters in the string are alphabetic and\n   there is at least one character, false otherwise.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.isdigit()\n\n   Return true if all characters in the string are digits and there is\n   at least one character, false otherwise.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.islower()\n\n   Return true if all cased characters in the string are lowercase and\n   there is at least one cased character, false otherwise.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.isspace()\n\n   Return true if there are only whitespace characters in the string\n   and there is at least one character, false otherwise.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.istitle()\n\n   Return true if the string is a titlecased string and there is at\n   least one character, for example uppercase characters may only\n   follow uncased characters and lowercase characters only cased ones.\n   Return false otherwise.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.isupper()\n\n   Return true if all cased characters in the string are uppercase and\n   there is at least one cased character, false otherwise.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.join(iterable)\n\n   Return a string which is the concatenation of the strings in the\n   *iterable* *iterable*.  The separator between elements is the\n   string providing this method.\n\nstr.ljust(width[, fillchar])\n\n   Return the string left justified in a string of length *width*.\n   Padding is done using the specified *fillchar* (default is a\n   space).  The original string is returned if *width* is less than\n   ``len(s)``.\n\n   Changed in version 2.4: Support for the *fillchar* argument.\n\nstr.lower()\n\n   Return a copy of the string converted to lowercase.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.lstrip([chars])\n\n   Return a copy of the string with leading characters removed.  The\n   *chars* argument is a string specifying the set of characters to be\n   removed.  If omitted or ``None``, the *chars* argument defaults to\n   removing whitespace.  The *chars* argument is not a prefix; rather,\n   all combinations of its values are stripped:\n\n   >>> \'   spacious   \'.lstrip()\n   \'spacious   \'\n   >>> \'www.example.com\'.lstrip(\'cmowz.\')\n   \'example.com\'\n\n   Changed in version 2.2.2: Support for the *chars* argument.\n\nstr.partition(sep)\n\n   Split the string at the first occurrence of *sep*, and return a\n   3-tuple containing the part before the separator, the separator\n   itself, and the part after the separator.  If the separator is not\n   found, return a 3-tuple containing the string itself, followed by\n   two empty strings.\n\n   New in version 2.5.\n\nstr.replace(old, new[, count])\n\n   Return a copy of the string with all occurrences of substring *old*\n   replaced by *new*.  If the optional argument *count* is given, only\n   the first *count* occurrences are replaced.\n\nstr.rfind(sub[, start[, end]])\n\n   Return the highest index in the string where substring *sub* is\n   found, such that *sub* is contained within ``s[start:end]``.\n   Optional arguments *start* and *end* are interpreted as in slice\n   notation.  Return ``-1`` on failure.\n\nstr.rindex(sub[, start[, end]])\n\n   Like ``rfind()`` but raises ``ValueError`` when the substring *sub*\n   is not found.\n\nstr.rjust(width[, fillchar])\n\n   Return the string right justified in a string of length *width*.\n   Padding is done using the specified *fillchar* (default is a\n   space). The original string is returned if *width* is less than\n   ``len(s)``.\n\n   Changed in version 2.4: Support for the *fillchar* argument.\n\nstr.rpartition(sep)\n\n   Split the string at the last occurrence of *sep*, and return a\n   3-tuple containing the part before the separator, the separator\n   itself, and the part after the separator.  If the separator is not\n   found, return a 3-tuple containing two empty strings, followed by\n   the string itself.\n\n   New in version 2.5.\n\nstr.rsplit([sep[, maxsplit]])\n\n   Return a list of the words in the string, using *sep* as the\n   delimiter string. If *maxsplit* is given, at most *maxsplit* splits\n   are done, the *rightmost* ones.  If *sep* is not specified or\n   ``None``, any whitespace string is a separator.  Except for\n   splitting from the right, ``rsplit()`` behaves like ``split()``\n   which is described in detail below.\n\n   New in version 2.4.\n\nstr.rstrip([chars])\n\n   Return a copy of the string with trailing characters removed.  The\n   *chars* argument is a string specifying the set of characters to be\n   removed.  If omitted or ``None``, the *chars* argument defaults to\n   removing whitespace.  The *chars* argument is not a suffix; rather,\n   all combinations of its values are stripped:\n\n   >>> \'   spacious   \'.rstrip()\n   \'   spacious\'\n   >>> \'mississippi\'.rstrip(\'ipz\')\n   \'mississ\'\n\n   Changed in version 2.2.2: Support for the *chars* argument.\n\nstr.split([sep[, maxsplit]])\n\n   Return a list of the words in the string, using *sep* as the\n   delimiter string.  If *maxsplit* is given, at most *maxsplit*\n   splits are done (thus, the list will have at most ``maxsplit+1``\n   elements).  If *maxsplit* is not specified, then there is no limit\n   on the number of splits (all possible splits are made).\n\n   If *sep* is given, consecutive delimiters are not grouped together\n   and are deemed to delimit empty strings (for example,\n   ``\'1,,2\'.split(\',\')`` returns ``[\'1\', \'\', \'2\']``).  The *sep*\n   argument may consist of multiple characters (for example,\n   ``\'1<>2<>3\'.split(\'<>\')`` returns ``[\'1\', \'2\', \'3\']``). Splitting\n   an empty string with a specified separator returns ``[\'\']``.\n\n   If *sep* is not specified or is ``None``, a different splitting\n   algorithm is applied: runs of consecutive whitespace are regarded\n   as a single separator, and the result will contain no empty strings\n   at the start or end if the string has leading or trailing\n   whitespace.  Consequently, splitting an empty string or a string\n   consisting of just whitespace with a ``None`` separator returns\n   ``[]``.\n\n   For example, ``\' 1  2   3  \'.split()`` returns ``[\'1\', \'2\', \'3\']``,\n   and ``\'  1  2   3  \'.split(None, 1)`` returns ``[\'1\', \'2   3  \']``.\n\nstr.splitlines([keepends])\n\n   Return a list of the lines in the string, breaking at line\n   boundaries.  Line breaks are not included in the resulting list\n   unless *keepends* is given and true.\n\nstr.startswith(prefix[, start[, end]])\n\n   Return ``True`` if string starts with the *prefix*, otherwise\n   return ``False``. *prefix* can also be a tuple of prefixes to look\n   for.  With optional *start*, test string beginning at that\n   position.  With optional *end*, stop comparing string at that\n   position.\n\n   Changed in version 2.5: Accept tuples as *prefix*.\n\nstr.strip([chars])\n\n   Return a copy of the string with the leading and trailing\n   characters removed. The *chars* argument is a string specifying the\n   set of characters to be removed. If omitted or ``None``, the\n   *chars* argument defaults to removing whitespace. The *chars*\n   argument is not a prefix or suffix; rather, all combinations of its\n   values are stripped:\n\n   >>> \'   spacious   \'.strip()\n   \'spacious\'\n   >>> \'www.example.com\'.strip(\'cmowz.\')\n   \'example\'\n\n   Changed in version 2.2.2: Support for the *chars* argument.\n\nstr.swapcase()\n\n   Return a copy of the string with uppercase characters converted to\n   lowercase and vice versa.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.title()\n\n   Return a titlecased version of the string where words start with an\n   uppercase character and the remaining characters are lowercase.\n\n   The algorithm uses a simple language-independent definition of a\n   word as groups of consecutive letters.  The definition works in\n   many contexts but it means that apostrophes in contractions and\n   possessives form word boundaries, which may not be the desired\n   result:\n\n      >>> "they\'re bill\'s friends from the UK".title()\n      "They\'Re Bill\'S Friends From The Uk"\n\n   A workaround for apostrophes can be constructed using regular\n   expressions:\n\n      >>> import re\n      >>> def titlecase(s):\n              return re.sub(r"[A-Za-z]+(\'[A-Za-z]+)?",\n                            lambda mo: mo.group(0)[0].upper() +\n                                       mo.group(0)[1:].lower(),\n                            s)\n\n      >>> titlecase("they\'re bill\'s friends.")\n      "They\'re Bill\'s Friends."\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.translate(table[, deletechars])\n\n   Return a copy of the string where all characters occurring in the\n   optional argument *deletechars* are removed, and the remaining\n   characters have been mapped through the given translation table,\n   which must be a string of length 256.\n\n   You can use the ``maketrans()`` helper function in the ``string``\n   module to create a translation table. For string objects, set the\n   *table* argument to ``None`` for translations that only delete\n   characters:\n\n   >>> \'read this short text\'.translate(None, \'aeiou\')\n   \'rd ths shrt txt\'\n\n   New in version 2.6: Support for a ``None`` *table* argument.\n\n   For Unicode objects, the ``translate()`` method does not accept the\n   optional *deletechars* argument.  Instead, it returns a copy of the\n   *s* where all characters have been mapped through the given\n   translation table which must be a mapping of Unicode ordinals to\n   Unicode ordinals, Unicode strings or ``None``. Unmapped characters\n   are left untouched. Characters mapped to ``None`` are deleted.\n   Note, a more flexible approach is to create a custom character\n   mapping codec using the ``codecs`` module (see ``encodings.cp1251``\n   for an example).\n\nstr.upper()\n\n   Return a copy of the string converted to uppercase.\n\n   For 8-bit strings, this method is locale-dependent.\n\nstr.zfill(width)\n\n   Return the numeric string left filled with zeros in a string of\n   length *width*.  A sign prefix is handled correctly.  The original\n   string is returned if *width* is less than ``len(s)``.\n\n   New in version 2.2.2.\n\nThe following methods are present only on unicode objects:\n\nunicode.isnumeric()\n\n   Return ``True`` if there are only numeric characters in S,\n   ``False`` otherwise. Numeric characters include digit characters,\n   and all characters that have the Unicode numeric value property,\n   e.g. U+2155, VULGAR FRACTION ONE FIFTH.\n\nunicode.isdecimal()\n\n   Return ``True`` if there are only decimal characters in S,\n   ``False`` otherwise. Decimal characters include digit characters,\n   and all characters that that can be used to form decimal-radix\n   numbers, e.g. U+0660, ARABIC-INDIC DIGIT ZERO.\n\n\nString Formatting Operations\n============================\n\nString and Unicode objects have one unique built-in operation: the\n``%`` operator (modulo).  This is also known as the string\n*formatting* or *interpolation* operator.  Given ``format % values``\n(where *format* is a string or Unicode object), ``%`` conversion\nspecifications in *format* are replaced with zero or more elements of\n*values*.  The effect is similar to the using ``sprintf()`` in the C\nlanguage.  If *format* is a Unicode object, or if any of the objects\nbeing converted using the ``%s`` conversion are Unicode objects, the\nresult will also be a Unicode object.\n\nIf *format* requires a single argument, *values* may be a single non-\ntuple object. [4]  Otherwise, *values* must be a tuple with exactly\nthe number of items specified by the format string, or a single\nmapping object (for example, a dictionary).\n\nA conversion specifier contains two or more characters and has the\nfollowing components, which must occur in this order:\n\n1. The ``\'%\'`` character, which marks the start of the specifier.\n\n2. Mapping key (optional), consisting of a parenthesised sequence of\n   characters (for example, ``(somename)``).\n\n3. Conversion flags (optional), which affect the result of some\n   conversion types.\n\n4. Minimum field width (optional).  If specified as an ``\'*\'``\n   (asterisk), the actual width is read from the next element of the\n   tuple in *values*, and the object to convert comes after the\n   minimum field width and optional precision.\n\n5. Precision (optional), given as a ``\'.\'`` (dot) followed by the\n   precision.  If specified as ``\'*\'`` (an asterisk), the actual width\n   is read from the next element of the tuple in *values*, and the\n   value to convert comes after the precision.\n\n6. Length modifier (optional).\n\n7. Conversion type.\n\nWhen the right argument is a dictionary (or other mapping type), then\nthe formats in the string *must* include a parenthesised mapping key\ninto that dictionary inserted immediately after the ``\'%\'`` character.\nThe mapping key selects the value to be formatted from the mapping.\nFor example:\n\n>>> print \'%(language)s has %(number)03d quote types.\' % \\\n...       {"language": "Python", "number": 2}\nPython has 002 quote types.\n\nIn this case no ``*`` specifiers may occur in a format (since they\nrequire a sequential parameter list).\n\nThe conversion flag characters are:\n\n+-----------+-----------------------------------------------------------------------+\n| Flag      | Meaning                                                               |\n+===========+=======================================================================+\n| ``\'#\'``   | The value conversion will use the "alternate form" (where defined     |\n|           | below).                                                               |\n+-----------+-----------------------------------------------------------------------+\n| ``\'0\'``   | The conversion will be zero padded for numeric values.                |\n+-----------+-----------------------------------------------------------------------+\n| ``\'-\'``   | The converted value is left adjusted (overrides the ``\'0\'``           |\n|           | conversion if both are given).                                        |\n+-----------+-----------------------------------------------------------------------+\n| ``\' \'``   | (a space) A blank should be left before a positive number (or empty   |\n|           | string) produced by a signed conversion.                              |\n+-----------+-----------------------------------------------------------------------+\n| ``\'+\'``   | A sign character (``\'+\'`` or ``\'-\'``) will precede the conversion     |\n|           | (overrides a "space" flag).                                           |\n+-----------+-----------------------------------------------------------------------+\n\nA length modifier (``h``, ``l``, or ``L``) may be present, but is\nignored as it is not necessary for Python -- so e.g. ``%ld`` is\nidentical to ``%d``.\n\nThe conversion types are:\n\n+--------------+-------------------------------------------------------+---------+\n| Conversion   | Meaning                                               | Notes   |\n+==============+=======================================================+=========+\n| ``\'d\'``      | Signed integer decimal.                               |         |\n+--------------+-------------------------------------------------------+---------+\n| ``\'i\'``      | Signed integer decimal.                               |         |\n+--------------+-------------------------------------------------------+---------+\n| ``\'o\'``      | Signed octal value.                                   | (1)     |\n+--------------+-------------------------------------------------------+---------+\n| ``\'u\'``      | Obsolete type -- it is identical to ``\'d\'``.          | (7)     |\n+--------------+-------------------------------------------------------+---------+\n| ``\'x\'``      | Signed hexadecimal (lowercase).                       | (2)     |\n+--------------+-------------------------------------------------------+---------+\n| ``\'X\'``      | Signed hexadecimal (uppercase).                       | (2)     |\n+--------------+-------------------------------------------------------+---------+\n| ``\'e\'``      | Floating point exponential format (lowercase).        | (3)     |\n+--------------+-------------------------------------------------------+---------+\n| ``\'E\'``      | Floating point exponential format (uppercase).        | (3)     |\n+--------------+-------------------------------------------------------+---------+\n| ``\'f\'``      | Floating point decimal format.                        | (3)     |\n+--------------+-------------------------------------------------------+---------+\n| ``\'F\'``      | Floating point decimal format.                        | (3)     |\n+--------------+-------------------------------------------------------+---------+\n| ``\'g\'``      | Floating point format. Uses lowercase exponential     | (4)     |\n|              | format if exponent is less than -4 or not less than   |         |\n|              | precision, decimal format otherwise.                  |         |\n+--------------+-------------------------------------------------------+---------+\n| ``\'G\'``      | Floating point format. Uses uppercase exponential     | (4)     |\n|              | format if exponent is less than -4 or not less than   |         |\n|              | precision, decimal format otherwise.                  |         |\n+--------------+-------------------------------------------------------+---------+\n| ``\'c\'``      | Single character (accepts integer or single character |         |\n|              | string).                                              |         |\n+--------------+-------------------------------------------------------+---------+\n| ``\'r\'``      | String (converts any Python object using ``repr()``). | (5)     |\n+--------------+-------------------------------------------------------+---------+\n| ``\'s\'``      | String (converts any Python object using ``str()``).  | (6)     |\n+--------------+-------------------------------------------------------+---------+\n| ``\'%\'``      | No argument is converted, results in a ``\'%\'``        |         |\n|              | character in the result.                              |         |\n+--------------+-------------------------------------------------------+---------+\n\nNotes:\n\n1. The alternate form causes a leading zero (``\'0\'``) to be inserted\n   between left-hand padding and the formatting of the number if the\n   leading character of the result is not already a zero.\n\n2. The alternate form causes a leading ``\'0x\'`` or ``\'0X\'`` (depending\n   on whether the ``\'x\'`` or ``\'X\'`` format was used) to be inserted\n   between left-hand padding and the formatting of the number if the\n   leading character of the result is not already a zero.\n\n3. The alternate form causes the result to always contain a decimal\n   point, even if no digits follow it.\n\n   The precision determines the number of digits after the decimal\n   point and defaults to 6.\n\n4. The alternate form causes the result to always contain a decimal\n   point, and trailing zeroes are not removed as they would otherwise\n   be.\n\n   The precision determines the number of significant digits before\n   and after the decimal point and defaults to 6.\n\n5. The ``%r`` conversion was added in Python 2.0.\n\n   The precision determines the maximal number of characters used.\n\n6. If the object or format provided is a ``unicode`` string, the\n   resulting string will also be ``unicode``.\n\n   The precision determines the maximal number of characters used.\n\n7. See **PEP 237**.\n\nSince Python strings have an explicit length, ``%s`` conversions do\nnot assume that ``\'\\0\'`` is the end of the string.\n\nChanged in version 2.7: ``%f`` conversions for numbers whose absolute\nvalue is over 1e50 are no longer replaced by ``%g`` conversions.\n\nAdditional string operations are defined in standard modules\n``string`` and ``re``.\n\n\nXRange Type\n===========\n\nThe ``xrange`` type is an immutable sequence which is commonly used\nfor looping.  The advantage of the ``xrange`` type is that an\n``xrange`` object will always take the same amount of memory, no\nmatter the size of the range it represents.  There are no consistent\nperformance advantages.\n\nXRange objects have very little behavior: they only support indexing,\niteration, and the ``len()`` function.\n\n\nMutable Sequence Types\n======================\n\nList and ``bytearray`` objects support additional operations that\nallow in-place modification of the object. Other mutable sequence\ntypes (when added to the language) should also support these\noperations. Strings and tuples are immutable sequence types: such\nobjects cannot be modified once created. The following operations are\ndefined on mutable sequence types (where *x* is an arbitrary object):\n\n+--------------------------------+----------------------------------+-----------------------+\n| Operation                      | Result                           | Notes                 |\n+================================+==================================+=======================+\n| ``s[i] = x``                   | item *i* of *s* is replaced by   |                       |\n|                                | *x*                              |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s[i:j] = t``                 | slice of *s* from *i* to *j* is  |                       |\n|                                | replaced by the contents of the  |                       |\n|                                | iterable *t*                     |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``del s[i:j]``                 | same as ``s[i:j] = []``          |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s[i:j:k] = t``               | the elements of ``s[i:j:k]`` are | (1)                   |\n|                                | replaced by those of *t*         |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``del s[i:j:k]``               | removes the elements of          |                       |\n|                                | ``s[i:j:k]`` from the list       |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.append(x)``                | same as ``s[len(s):len(s)] =     | (2)                   |\n|                                | [x]``                            |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.extend(x)``                | same as ``s[len(s):len(s)] = x`` | (3)                   |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.count(x)``                 | return number of *i*\'s for which |                       |\n|                                | ``s[i] == x``                    |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.index(x[, i[, j]])``       | return smallest *k* such that    | (4)                   |\n|                                | ``s[k] == x`` and ``i <= k < j`` |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.insert(i, x)``             | same as ``s[i:i] = [x]``         | (5)                   |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.pop([i])``                 | same as ``x = s[i]; del s[i];    | (6)                   |\n|                                | return x``                       |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.remove(x)``                | same as ``del s[s.index(x)]``    | (4)                   |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.reverse()``                | reverses the items of *s* in     | (7)                   |\n|                                | place                            |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.sort([cmp[, key[,          | sort the items of *s* in place   | (7)(8)(9)(10)         |\n| reverse]]])``                  |                                  |                       |\n+--------------------------------+----------------------------------+-----------------------+\n\nNotes:\n\n1. *t* must have the same length as the slice it is  replacing.\n\n2. The C implementation of Python has historically accepted multiple\n   parameters and implicitly joined them into a tuple; this no longer\n   works in Python 2.0.  Use of this misfeature has been deprecated\n   since Python 1.4.\n\n3. *x* can be any iterable object.\n\n4. Raises ``ValueError`` when *x* is not found in *s*. When a negative\n   index is passed as the second or third parameter to the ``index()``\n   method, the list length is added, as for slice indices.  If it is\n   still negative, it is truncated to zero, as for slice indices.\n\n   Changed in version 2.3: Previously, ``index()`` didn\'t have\n   arguments for specifying start and stop positions.\n\n5. When a negative index is passed as the first parameter to the\n   ``insert()`` method, the list length is added, as for slice\n   indices.  If it is still negative, it is truncated to zero, as for\n   slice indices.\n\n   Changed in version 2.3: Previously, all negative indices were\n   truncated to zero.\n\n6. The ``pop()`` method is only supported by the list and array types.\n   The optional argument *i* defaults to ``-1``, so that by default\n   the last item is removed and returned.\n\n7. The ``sort()`` and ``reverse()`` methods modify the list in place\n   for economy of space when sorting or reversing a large list.  To\n   remind you that they operate by side effect, they don\'t return the\n   sorted or reversed list.\n\n8. The ``sort()`` method takes optional arguments for controlling the\n   comparisons.\n\n   *cmp* specifies a custom comparison function of two arguments (list\n   items) which should return a negative, zero or positive number\n   depending on whether the first argument is considered smaller than,\n   equal to, or larger than the second argument: ``cmp=lambda x,y:\n   cmp(x.lower(), y.lower())``.  The default value is ``None``.\n\n   *key* specifies a function of one argument that is used to extract\n   a comparison key from each list element: ``key=str.lower``.  The\n   default value is ``None``.\n\n   *reverse* is a boolean value.  If set to ``True``, then the list\n   elements are sorted as if each comparison were reversed.\n\n   In general, the *key* and *reverse* conversion processes are much\n   faster than specifying an equivalent *cmp* function.  This is\n   because *cmp* is called multiple times for each list element while\n   *key* and *reverse* touch each element only once.  Use\n   ``functools.cmp_to_key()`` to convert an old-style *cmp* function\n   to a *key* function.\n\n   Changed in version 2.3: Support for ``None`` as an equivalent to\n   omitting *cmp* was added.\n\n   Changed in version 2.4: Support for *key* and *reverse* was added.\n\n9. Starting with Python 2.3, the ``sort()`` method is guaranteed to be\n   stable.  A sort is stable if it guarantees not to change the\n   relative order of elements that compare equal --- this is helpful\n   for sorting in multiple passes (for example, sort by department,\n   then by salary grade).\n\n10. **CPython implementation detail:** While a list is being sorted,\n    the effect of attempting to mutate, or even inspect, the list is\n    undefined.  The C implementation of Python 2.3 and newer makes the\n    list appear empty for the duration, and raises ``ValueError`` if\n    it can detect that the list has been mutated during a sort.\n',
- 'typesseq-mutable': u"\nMutable Sequence Types\n**********************\n\nList and ``bytearray`` objects support additional operations that\nallow in-place modification of the object. Other mutable sequence\ntypes (when added to the language) should also support these\noperations. Strings and tuples are immutable sequence types: such\nobjects cannot be modified once created. The following operations are\ndefined on mutable sequence types (where *x* is an arbitrary object):\n\n+--------------------------------+----------------------------------+-----------------------+\n| Operation                      | Result                           | Notes                 |\n+================================+==================================+=======================+\n| ``s[i] = x``                   | item *i* of *s* is replaced by   |                       |\n|                                | *x*                              |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s[i:j] = t``                 | slice of *s* from *i* to *j* is  |                       |\n|                                | replaced by the contents of the  |                       |\n|                                | iterable *t*                     |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``del s[i:j]``                 | same as ``s[i:j] = []``          |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s[i:j:k] = t``               | the elements of ``s[i:j:k]`` are | (1)                   |\n|                                | replaced by those of *t*         |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``del s[i:j:k]``               | removes the elements of          |                       |\n|                                | ``s[i:j:k]`` from the list       |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.append(x)``                | same as ``s[len(s):len(s)] =     | (2)                   |\n|                                | [x]``                            |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.extend(x)``                | same as ``s[len(s):len(s)] = x`` | (3)                   |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.count(x)``                 | return number of *i*'s for which |                       |\n|                                | ``s[i] == x``                    |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.index(x[, i[, j]])``       | return smallest *k* such that    | (4)                   |\n|                                | ``s[k] == x`` and ``i <= k < j`` |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.insert(i, x)``             | same as ``s[i:i] = [x]``         | (5)                   |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.pop([i])``                 | same as ``x = s[i]; del s[i];    | (6)                   |\n|                                | return x``                       |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.remove(x)``                | same as ``del s[s.index(x)]``    | (4)                   |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.reverse()``                | reverses the items of *s* in     | (7)                   |\n|                                | place                            |                       |\n+--------------------------------+----------------------------------+-----------------------+\n| ``s.sort([cmp[, key[,          | sort the items of *s* in place   | (7)(8)(9)(10)         |\n| reverse]]])``                  |                                  |                       |\n+--------------------------------+----------------------------------+-----------------------+\n\nNotes:\n\n1. *t* must have the same length as the slice it is  replacing.\n\n2. The C implementation of Python has historically accepted multiple\n   parameters and implicitly joined them into a tuple; this no longer\n   works in Python 2.0.  Use of this misfeature has been deprecated\n   since Python 1.4.\n\n3. *x* can be any iterable object.\n\n4. Raises ``ValueError`` when *x* is not found in *s*. When a negative\n   index is passed as the second or third parameter to the ``index()``\n   method, the list length is added, as for slice indices.  If it is\n   still negative, it is truncated to zero, as for slice indices.\n\n   Changed in version 2.3: Previously, ``index()`` didn't have\n   arguments for specifying start and stop positions.\n\n5. When a negative index is passed as the first parameter to the\n   ``insert()`` method, the list length is added, as for slice\n   indices.  If it is still negative, it is truncated to zero, as for\n   slice indices.\n\n   Changed in version 2.3: Previously, all negative indices were\n   truncated to zero.\n\n6. The ``pop()`` method is only supported by the list and array types.\n   The optional argument *i* defaults to ``-1``, so that by default\n   the last item is removed and returned.\n\n7. The ``sort()`` and ``reverse()`` methods modify the list in place\n   for economy of space when sorting or reversing a large list.  To\n   remind you that they operate by side effect, they don't return the\n   sorted or reversed list.\n\n8. The ``sort()`` method takes optional arguments for controlling the\n   comparisons.\n\n   *cmp* specifies a custom comparison function of two arguments (list\n   items) which should return a negative, zero or positive number\n   depending on whether the first argument is considered smaller than,\n   equal to, or larger than the second argument: ``cmp=lambda x,y:\n   cmp(x.lower(), y.lower())``.  The default value is ``None``.\n\n   *key* specifies a function of one argument that is used to extract\n   a comparison key from each list element: ``key=str.lower``.  The\n   default value is ``None``.\n\n   *reverse* is a boolean value.  If set to ``True``, then the list\n   elements are sorted as if each comparison were reversed.\n\n   In general, the *key* and *reverse* conversion processes are much\n   faster than specifying an equivalent *cmp* function.  This is\n   because *cmp* is called multiple times for each list element while\n   *key* and *reverse* touch each element only once.  Use\n   ``functools.cmp_to_key()`` to convert an old-style *cmp* function\n   to a *key* function.\n\n   Changed in version 2.3: Support for ``None`` as an equivalent to\n   omitting *cmp* was added.\n\n   Changed in version 2.4: Support for *key* and *reverse* was added.\n\n9. Starting with Python 2.3, the ``sort()`` method is guaranteed to be\n   stable.  A sort is stable if it guarantees not to change the\n   relative order of elements that compare equal --- this is helpful\n   for sorting in multiple passes (for example, sort by department,\n   then by salary grade).\n\n10. **CPython implementation detail:** While a list is being sorted,\n    the effect of attempting to mutate, or even inspect, the list is\n    undefined.  The C implementation of Python 2.3 and newer makes the\n    list appear empty for the duration, and raises ``ValueError`` if\n    it can detect that the list has been mutated during a sort.\n",
- 'unary': u'\nUnary arithmetic and bitwise operations\n***************************************\n\nAll unary arithmetic and bitwise operations have the same priority:\n\n   u_expr ::= power | "-" u_expr | "+" u_expr | "~" u_expr\n\nThe unary ``-`` (minus) operator yields the negation of its numeric\nargument.\n\nThe unary ``+`` (plus) operator yields its numeric argument unchanged.\n\nThe unary ``~`` (invert) operator yields the bitwise inversion of its\nplain or long integer argument.  The bitwise inversion of ``x`` is\ndefined as ``-(x+1)``.  It only applies to integral numbers.\n\nIn all three cases, if the argument does not have the proper type, a\n``TypeError`` exception is raised.\n',
- 'while': u'\nThe ``while`` statement\n***********************\n\nThe ``while`` statement is used for repeated execution as long as an\nexpression is true:\n\n   while_stmt ::= "while" expression ":" suite\n                  ["else" ":" suite]\n\nThis repeatedly tests the expression and, if it is true, executes the\nfirst suite; if the expression is false (which may be the first time\nit is tested) the suite of the ``else`` clause, if present, is\nexecuted and the loop terminates.\n\nA ``break`` statement executed in the first suite terminates the loop\nwithout executing the ``else`` clause\'s suite.  A ``continue``\nstatement executed in the first suite skips the rest of the suite and\ngoes back to testing the expression.\n',
- 'with': u'\nThe ``with`` statement\n**********************\n\nNew in version 2.5.\n\nThe ``with`` statement is used to wrap the execution of a block with\nmethods defined by a context manager (see section *With Statement\nContext Managers*). This allows common\n``try``...``except``...``finally`` usage patterns to be encapsulated\nfor convenient reuse.\n\n   with_stmt ::= "with" with_item ("," with_item)* ":" suite\n   with_item ::= expression ["as" target]\n\nThe execution of the ``with`` statement with one "item" proceeds as\nfollows:\n\n1. The context expression (the expression given in the **with_item**)\n   is evaluated to obtain a context manager.\n\n2. The context manager\'s ``__exit__()`` is loaded for later use.\n\n3. The context manager\'s ``__enter__()`` method is invoked.\n\n4. If a target was included in the ``with`` statement, the return\n   value from ``__enter__()`` is assigned to it.\n\n   Note: The ``with`` statement guarantees that if the ``__enter__()``\n     method returns without an error, then ``__exit__()`` will always\n     be called. Thus, if an error occurs during the assignment to the\n     target list, it will be treated the same as an error occurring\n     within the suite would be. See step 6 below.\n\n5. The suite is executed.\n\n6. The context manager\'s ``__exit__()`` method is invoked. If an\n   exception caused the suite to be exited, its type, value, and\n   traceback are passed as arguments to ``__exit__()``. Otherwise,\n   three ``None`` arguments are supplied.\n\n   If the suite was exited due to an exception, and the return value\n   from the ``__exit__()`` method was false, the exception is\n   reraised. If the return value was true, the exception is\n   suppressed, and execution continues with the statement following\n   the ``with`` statement.\n\n   If the suite was exited for any reason other than an exception, the\n   return value from ``__exit__()`` is ignored, and execution proceeds\n   at the normal location for the kind of exit that was taken.\n\nWith more than one item, the context managers are processed as if\nmultiple ``with`` statements were nested:\n\n   with A() as a, B() as b:\n       suite\n\nis equivalent to\n\n   with A() as a:\n       with B() as b:\n           suite\n\nNote: In Python 2.5, the ``with`` statement is only allowed when the\n  ``with_statement`` feature has been enabled.  It is always enabled\n  in Python 2.6.\n\nChanged in version 2.7: Support for multiple context expressions.\n\nSee also:\n\n   **PEP 0343** - The "with" statement\n      The specification, background, and examples for the Python\n      ``with`` statement.\n',
- 'yield': u'\nThe ``yield`` statement\n***********************\n\n   yield_stmt ::= yield_expression\n\nThe ``yield`` statement is only used when defining a generator\nfunction, and is only used in the body of the generator function.\nUsing a ``yield`` statement in a function definition is sufficient to\ncause that definition to create a generator function instead of a\nnormal function.\n\nWhen a generator function is called, it returns an iterator known as a\ngenerator iterator, or more commonly, a generator.  The body of the\ngenerator function is executed by calling the generator\'s ``next()``\nmethod repeatedly until it raises an exception.\n\nWhen a ``yield`` statement is executed, the state of the generator is\nfrozen and the value of **expression_list** is returned to\n``next()``\'s caller.  By "frozen" we mean that all local state is\nretained, including the current bindings of local variables, the\ninstruction pointer, and the internal evaluation stack: enough\ninformation is saved so that the next time ``next()`` is invoked, the\nfunction can proceed exactly as if the ``yield`` statement were just\nanother external call.\n\nAs of Python version 2.5, the ``yield`` statement is now allowed in\nthe ``try`` clause of a ``try`` ...  ``finally`` construct.  If the\ngenerator is not resumed before it is finalized (by reaching a zero\nreference count or by being garbage collected), the generator-\niterator\'s ``close()`` method will be called, allowing any pending\n``finally`` clauses to execute.\n\nNote: In Python 2.2, the ``yield`` statement was only allowed when the\n  ``generators`` feature has been enabled.  This ``__future__`` import\n  statement was used to enable the feature:\n\n     from __future__ import generators\n\nSee also:\n\n   **PEP 0255** - Simple Generators\n      The proposal for adding generators and the ``yield`` statement\n      to Python.\n\n   **PEP 0342** - Coroutines via Enhanced Generators\n      The proposal that, among other generator enhancements, proposed\n      allowing ``yield`` to appear inside a ``try`` ... ``finally``\n      block.\n'}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/quopri.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/quopri.py
deleted file mode 100644
index ed81c71..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/quopri.py
+++ /dev/null
@@ -1,237 +0,0 @@
-#! /usr/bin/env python
-
-"""Conversions to/from quoted-printable transport encoding as per RFC 1521."""
-
-# (Dec 1991 version).
-
-__all__ = ["encode", "decode", "encodestring", "decodestring"]
-
-ESCAPE = '='
-MAXLINESIZE = 76
-HEX = '0123456789ABCDEF'
-EMPTYSTRING = ''
-
-try:
-    from binascii import a2b_qp, b2a_qp
-except ImportError:
-    a2b_qp = None
-    b2a_qp = None
-
-
-def needsquoting(c, quotetabs, header):
-    """Decide whether a particular character needs to be quoted.
-
-    The 'quotetabs' flag indicates whether embedded tabs and spaces should be
-    quoted.  Note that line-ending tabs and spaces are always encoded, as per
-    RFC 1521.
-    """
-    if c in ' \t':
-        return quotetabs
-    # if header, we have to escape _ because _ is used to escape space
-    if c == '_':
-        return header
-    return c == ESCAPE or not (' ' <= c <= '~')
-
-def quote(c):
-    """Quote a single character."""
-    i = ord(c)
-    return ESCAPE + HEX[i//16] + HEX[i%16]
-
-
-
-def encode(input, output, quotetabs, header = 0):
-    """Read 'input', apply quoted-printable encoding, and write to 'output'.
-
-    'input' and 'output' are files with readline() and write() methods.
-    The 'quotetabs' flag indicates whether embedded tabs and spaces should be
-    quoted.  Note that line-ending tabs and spaces are always encoded, as per
-    RFC 1521.
-    The 'header' flag indicates whether we are encoding spaces as _ as per
-    RFC 1522.
-    """
-
-    if b2a_qp is not None:
-        data = input.read()
-        odata = b2a_qp(data, quotetabs = quotetabs, header = header)
-        output.write(odata)
-        return
-
-    def write(s, output=output, lineEnd='\n'):
-        # RFC 1521 requires that the line ending in a space or tab must have
-        # that trailing character encoded.
-        if s and s[-1:] in ' \t':
-            output.write(s[:-1] + quote(s[-1]) + lineEnd)
-        elif s == '.':
-            output.write(quote(s) + lineEnd)
-        else:
-            output.write(s + lineEnd)
-
-    prevline = None
-    while 1:
-        line = input.readline()
-        if not line:
-            break
-        outline = []
-        # Strip off any readline induced trailing newline
-        stripped = ''
-        if line[-1:] == '\n':
-            line = line[:-1]
-            stripped = '\n'
-        # Calculate the un-length-limited encoded line
-        for c in line:
-            if needsquoting(c, quotetabs, header):
-                c = quote(c)
-            if header and c == ' ':
-                outline.append('_')
-            else:
-                outline.append(c)
-        # First, write out the previous line
-        if prevline is not None:
-            write(prevline)
-        # Now see if we need any soft line breaks because of RFC-imposed
-        # length limitations.  Then do the thisline->prevline dance.
-        thisline = EMPTYSTRING.join(outline)
-        while len(thisline) > MAXLINESIZE:
-            # Don't forget to include the soft line break `=' sign in the
-            # length calculation!
-            write(thisline[:MAXLINESIZE-1], lineEnd='=\n')
-            thisline = thisline[MAXLINESIZE-1:]
-        # Write out the current line
-        prevline = thisline
-    # Write out the last line, without a trailing newline
-    if prevline is not None:
-        write(prevline, lineEnd=stripped)
-
-def encodestring(s, quotetabs = 0, header = 0):
-    if b2a_qp is not None:
-        return b2a_qp(s, quotetabs = quotetabs, header = header)
-    from cStringIO import StringIO
-    infp = StringIO(s)
-    outfp = StringIO()
-    encode(infp, outfp, quotetabs, header)
-    return outfp.getvalue()
-
-
-
-def decode(input, output, header = 0):
-    """Read 'input', apply quoted-printable decoding, and write to 'output'.
-    'input' and 'output' are files with readline() and write() methods.
-    If 'header' is true, decode underscore as space (per RFC 1522)."""
-
-    if a2b_qp is not None:
-        data = input.read()
-        odata = a2b_qp(data, header = header)
-        output.write(odata)
-        return
-
-    new = ''
-    while 1:
-        line = input.readline()
-        if not line: break
-        i, n = 0, len(line)
-        if n > 0 and line[n-1] == '\n':
-            partial = 0; n = n-1
-            # Strip trailing whitespace
-            while n > 0 and line[n-1] in " \t\r":
-                n = n-1
-        else:
-            partial = 1
-        while i < n:
-            c = line[i]
-            if c == '_' and header:
-                new = new + ' '; i = i+1
-            elif c != ESCAPE:
-                new = new + c; i = i+1
-            elif i+1 == n and not partial:
-                partial = 1; break
-            elif i+1 < n and line[i+1] == ESCAPE:
-                new = new + ESCAPE; i = i+2
-            elif i+2 < n and ishex(line[i+1]) and ishex(line[i+2]):
-                new = new + chr(unhex(line[i+1:i+3])); i = i+3
-            else: # Bad escape sequence -- leave it in
-                new = new + c; i = i+1
-        if not partial:
-            output.write(new + '\n')
-            new = ''
-    if new:
-        output.write(new)
-
-def decodestring(s, header = 0):
-    if a2b_qp is not None:
-        return a2b_qp(s, header = header)
-    from cStringIO import StringIO
-    infp = StringIO(s)
-    outfp = StringIO()
-    decode(infp, outfp, header = header)
-    return outfp.getvalue()
-
-
-
-# Other helper functions
-def ishex(c):
-    """Return true if the character 'c' is a hexadecimal digit."""
-    return '0' <= c <= '9' or 'a' <= c <= 'f' or 'A' <= c <= 'F'
-
-def unhex(s):
-    """Get the integer value of a hexadecimal number."""
-    bits = 0
-    for c in s:
-        if '0' <= c <= '9':
-            i = ord('0')
-        elif 'a' <= c <= 'f':
-            i = ord('a')-10
-        elif 'A' <= c <= 'F':
-            i = ord('A')-10
-        else:
-            break
-        bits = bits*16 + (ord(c) - i)
-    return bits
-
-
-
-def main():
-    import sys
-    import getopt
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'td')
-    except getopt.error, msg:
-        sys.stdout = sys.stderr
-        print msg
-        print "usage: quopri [-t | -d] [file] ..."
-        print "-t: quote tabs"
-        print "-d: decode; default encode"
-        sys.exit(2)
-    deco = 0
-    tabs = 0
-    for o, a in opts:
-        if o == '-t': tabs = 1
-        if o == '-d': deco = 1
-    if tabs and deco:
-        sys.stdout = sys.stderr
-        print "-t and -d are mutually exclusive"
-        sys.exit(2)
-    if not args: args = ['-']
-    sts = 0
-    for file in args:
-        if file == '-':
-            fp = sys.stdin
-        else:
-            try:
-                fp = open(file)
-            except IOError, msg:
-                sys.stderr.write("%s: can't open (%s)\n" % (file, msg))
-                sts = 1
-                continue
-        if deco:
-            decode(fp, sys.stdout)
-        else:
-            encode(fp, sys.stdout, tabs)
-        if fp is not sys.stdin:
-            fp.close()
-    if sts:
-        sys.exit(sts)
-
-
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/random.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/random.py
deleted file mode 100644
index a974877..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/random.py
+++ /dev/null
@@ -1,908 +0,0 @@
-"""Random variable generators.
-
-    integers
-    --------
-           uniform within range
-
-    sequences
-    ---------
-           pick random element
-           pick random sample
-           generate random permutation
-
-    distributions on the real line:
-    ------------------------------
-           uniform
-           triangular
-           normal (Gaussian)
-           lognormal
-           negative exponential
-           gamma
-           beta
-           pareto
-           Weibull
-
-    distributions on the circle (angles 0 to 2pi)
-    ---------------------------------------------
-           circular uniform
-           von Mises
-
-General notes on the underlying Mersenne Twister core generator:
-
-* The period is 2**19937-1.
-* It is one of the most extensively tested generators in existence.
-* Without a direct way to compute N steps forward, the semantics of
-  jumpahead(n) are weakened to simply jump to another distant state and rely
-  on the large period to avoid overlapping sequences.
-* The random() method is implemented in C, executes in a single Python step,
-  and is, therefore, threadsafe.
-
-"""
-
-from __future__ import division
-from warnings import warn as _warn
-from types import MethodType as _MethodType, BuiltinMethodType as _BuiltinMethodType
-from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil
-from math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin
-from os import urandom as _urandom
-from binascii import hexlify as _hexlify
-import hashlib as _hashlib
-
-__all__ = ["Random","seed","random","uniform","randint","choice","sample",
-           "randrange","shuffle","normalvariate","lognormvariate",
-           "expovariate","vonmisesvariate","gammavariate","triangular",
-           "gauss","betavariate","paretovariate","weibullvariate",
-           "getstate","setstate","jumpahead", "WichmannHill", "getrandbits",
-           "SystemRandom"]
-
-NV_MAGICCONST = 4 * _exp(-0.5)/_sqrt(2.0)
-TWOPI = 2.0*_pi
-LOG4 = _log(4.0)
-SG_MAGICCONST = 1.0 + _log(4.5)
-BPF = 53        # Number of bits in a float
-RECIP_BPF = 2**-BPF
-
-
-# Translated by Guido van Rossum from C source provided by
-# Adrian Baddeley.  Adapted by Raymond Hettinger for use with
-# the Mersenne Twister  and os.urandom() core generators.
-
-import _random
-
-class Random(_random.Random):
-    """Random number generator base class used by bound module functions.
-
-    Used to instantiate instances of Random to get generators that don't
-    share state.  Especially useful for multi-threaded programs, creating
-    a different instance of Random for each thread, and using the jumpahead()
-    method to ensure that the generated sequences seen by each thread don't
-    overlap.
-
-    Class Random can also be subclassed if you want to use a different basic
-    generator of your own devising: in that case, override the following
-    methods: random(), seed(), getstate(), setstate() and jumpahead().
-    Optionally, implement a getrandbits() method so that randrange() can cover
-    arbitrarily large ranges.
-
-    """
-
-    VERSION = 3     # used by getstate/setstate
-
-    def __init__(self, x=None):
-        """Initialize an instance.
-
-        Optional argument x controls seeding, as for Random.seed().
-        """
-
-        self.seed(x)
-        self.gauss_next = None
-
-    def seed(self, a=None):
-        """Initialize internal state from hashable object.
-
-        None or no argument seeds from current time or from an operating
-        system specific randomness source if available.
-
-        If a is not None or an int or long, hash(a) is used instead.
-        """
-
-        if a is None:
-            try:
-                a = long(_hexlify(_urandom(16)), 16)
-            except NotImplementedError:
-                import time
-                a = long(time.time() * 256) # use fractional seconds
-
-        super(Random, self).seed(a)
-        self.gauss_next = None
-
-    def getstate(self):
-        """Return internal state; can be passed to setstate() later."""
-        return self.VERSION, super(Random, self).getstate(), self.gauss_next
-
-    def setstate(self, state):
-        """Restore internal state from object returned by getstate()."""
-        version = state[0]
-        if version == 3:
-            version, internalstate, self.gauss_next = state
-            super(Random, self).setstate(internalstate)
-        elif version == 2:
-            version, internalstate, self.gauss_next = state
-            # In version 2, the state was saved as signed ints, which causes
-            #   inconsistencies between 32/64-bit systems. The state is
-            #   really unsigned 32-bit ints, so we convert negative ints from
-            #   version 2 to positive longs for version 3.
-            try:
-                internalstate = tuple( long(x) % (2**32) for x in internalstate )
-            except ValueError, e:
-                raise TypeError, e
-            super(Random, self).setstate(internalstate)
-        else:
-            raise ValueError("state with version %s passed to "
-                             "Random.setstate() of version %s" %
-                             (version, self.VERSION))
-
-    def jumpahead(self, n):
-        """Change the internal state to one that is likely far away
-        from the current state.  This method will not be in Py3.x,
-        so it is better to simply reseed.
-        """
-        # The super.jumpahead() method uses shuffling to change state,
-        # so it needs a large and "interesting" n to work with.  Here,
-        # we use hashing to create a large n for the shuffle.
-        s = repr(n) + repr(self.getstate())
-        n = int(_hashlib.new('sha512', s).hexdigest(), 16)
-        super(Random, self).jumpahead(n)
-
-## ---- Methods below this point do not need to be overridden when
-## ---- subclassing for the purpose of using a different core generator.
-
-## -------------------- pickle support  -------------------
-
-    def __getstate__(self): # for pickle
-        return self.getstate()
-
-    def __setstate__(self, state):  # for pickle
-        self.setstate(state)
-
-    def __reduce__(self):
-        return self.__class__, (), self.getstate()
-
-## -------------------- integer methods  -------------------
-
-    def randrange(self, start, stop=None, step=1, int=int, default=None,
-                  maxwidth=1L<<BPF):
-        """Choose a random item from range(start, stop[, step]).
-
-        This fixes the problem with randint() which includes the
-        endpoint; in Python this is usually not what you want.
-        Do not supply the 'int', 'default', and 'maxwidth' arguments.
-        """
-
-        # This code is a bit messy to make it fast for the
-        # common case while still doing adequate error checking.
-        istart = int(start)
-        if istart != start:
-            raise ValueError, "non-integer arg 1 for randrange()"
-        if stop is default:
-            if istart > 0:
-                if istart >= maxwidth:
-                    return self._randbelow(istart)
-                return int(self.random() * istart)
-            raise ValueError, "empty range for randrange()"
-
-        # stop argument supplied.
-        istop = int(stop)
-        if istop != stop:
-            raise ValueError, "non-integer stop for randrange()"
-        width = istop - istart
-        if step == 1 and width > 0:
-            # Note that
-            #     int(istart + self.random()*width)
-            # instead would be incorrect.  For example, consider istart
-            # = -2 and istop = 0.  Then the guts would be in
-            # -2.0 to 0.0 exclusive on both ends (ignoring that random()
-            # might return 0.0), and because int() truncates toward 0, the
-            # final result would be -1 or 0 (instead of -2 or -1).
-            #     istart + int(self.random()*width)
-            # would also be incorrect, for a subtler reason:  the RHS
-            # can return a long, and then randrange() would also return
-            # a long, but we're supposed to return an int (for backward
-            # compatibility).
-
-            if width >= maxwidth:
-                return int(istart + self._randbelow(width))
-            return int(istart + int(self.random()*width))
-        if step == 1:
-            raise ValueError, "empty range for randrange() (%d,%d, %d)" % (istart, istop, width)
-
-        # Non-unit step argument supplied.
-        istep = int(step)
-        if istep != step:
-            raise ValueError, "non-integer step for randrange()"
-        if istep > 0:
-            n = (width + istep - 1) // istep
-        elif istep < 0:
-            n = (width + istep + 1) // istep
-        else:
-            raise ValueError, "zero step for randrange()"
-
-        if n <= 0:
-            raise ValueError, "empty range for randrange()"
-
-        if n >= maxwidth:
-            return istart + istep*self._randbelow(n)
-        return istart + istep*int(self.random() * n)
-
-    def randint(self, a, b):
-        """Return random integer in range [a, b], including both end points.
-        """
-
-        return self.randrange(a, b+1)
-
-    def _randbelow(self, n, _log=_log, int=int, _maxwidth=1L<<BPF,
-                   _Method=_MethodType, _BuiltinMethod=_BuiltinMethodType):
-        """Return a random int in the range [0,n)
-
-        Handles the case where n has more bits than returned
-        by a single call to the underlying generator.
-        """
-
-        try:
-            getrandbits = self.getrandbits
-        except AttributeError:
-            pass
-        else:
-            # Only call self.getrandbits if the original random() builtin method
-            # has not been overridden or if a new getrandbits() was supplied.
-            # This assures that the two methods correspond.
-            if type(self.random) is _BuiltinMethod or type(getrandbits) is _Method:
-                k = int(1.00001 + _log(n-1, 2.0))   # 2**k > n-1 > 2**(k-2)
-                r = getrandbits(k)
-                while r >= n:
-                    r = getrandbits(k)
-                return r
-        if n >= _maxwidth:
-            _warn("Underlying random() generator does not supply \n"
-                "enough bits to choose from a population range this large")
-        return int(self.random() * n)
-
-## -------------------- sequence methods  -------------------
-
-    def choice(self, seq):
-        """Choose a random element from a non-empty sequence."""
-        return seq[int(self.random() * len(seq))]  # raises IndexError if seq is empty
-
-    def shuffle(self, x, random=None, int=int):
-        """x, random=random.random -> shuffle list x in place; return None.
-
-        Optional arg random is a 0-argument function returning a random
-        float in [0.0, 1.0); by default, the standard random.random.
-        """
-
-        if random is None:
-            random = self.random
-        for i in reversed(xrange(1, len(x))):
-            # pick an element in x[:i+1] with which to exchange x[i]
-            j = int(random() * (i+1))
-            x[i], x[j] = x[j], x[i]
-
-    def sample(self, population, k):
-        """Chooses k unique random elements from a population sequence.
-
-        Returns a new list containing elements from the population while
-        leaving the original population unchanged.  The resulting list is
-        in selection order so that all sub-slices will also be valid random
-        samples.  This allows raffle winners (the sample) to be partitioned
-        into grand prize and second place winners (the subslices).
-
-        Members of the population need not be hashable or unique.  If the
-        population contains repeats, then each occurrence is a possible
-        selection in the sample.
-
-        To choose a sample in a range of integers, use xrange as an argument.
-        This is especially fast and space efficient for sampling from a
-        large population:   sample(xrange(10000000), 60)
-        """
-
-        # Sampling without replacement entails tracking either potential
-        # selections (the pool) in a list or previous selections in a set.
-
-        # When the number of selections is small compared to the
-        # population, then tracking selections is efficient, requiring
-        # only a small set and an occasional reselection.  For
-        # a larger number of selections, the pool tracking method is
-        # preferred since the list takes less space than the
-        # set and it doesn't suffer from frequent reselections.
-
-        n = len(population)
-        if not 0 <= k <= n:
-            raise ValueError("sample larger than population")
-        random = self.random
-        _int = int
-        result = [None] * k
-        setsize = 21        # size of a small set minus size of an empty list
-        if k > 5:
-            setsize += 4 ** _ceil(_log(k * 3, 4)) # table size for big sets
-        if n <= setsize or hasattr(population, "keys"):
-            # An n-length list is smaller than a k-length set, or this is a
-            # mapping type so the other algorithm wouldn't work.
-            pool = list(population)
-            for i in xrange(k):         # invariant:  non-selected at [0,n-i)
-                j = _int(random() * (n-i))
-                result[i] = pool[j]
-                pool[j] = pool[n-i-1]   # move non-selected item into vacancy
-        else:
-            try:
-                selected = set()
-                selected_add = selected.add
-                for i in xrange(k):
-                    j = _int(random() * n)
-                    while j in selected:
-                        j = _int(random() * n)
-                    selected_add(j)
-                    result[i] = population[j]
-            except (TypeError, KeyError):   # handle (at least) sets
-                if isinstance(population, list):
-                    raise
-                return self.sample(tuple(population), k)
-        return result
-
-## -------------------- real-valued distributions  -------------------
-
-## -------------------- uniform distribution -------------------
-
-    def uniform(self, a, b):
-        "Get a random number in the range [a, b) or [a, b] depending on rounding."
-        return a + (b-a) * self.random()
-
-## -------------------- triangular --------------------
-
-    def triangular(self, low=0.0, high=1.0, mode=None):
-        """Triangular distribution.
-
-        Continuous distribution bounded by given lower and upper limits,
-        and having a given mode value in-between.
-
-        http://en.wikipedia.org/wiki/Triangular_distribution
-
-        """
-        u = self.random()
-        c = 0.5 if mode is None else (mode - low) / (high - low)
-        if u > c:
-            u = 1.0 - u
-            c = 1.0 - c
-            low, high = high, low
-        return low + (high - low) * (u * c) ** 0.5
-
-## -------------------- normal distribution --------------------
-
-    def normalvariate(self, mu, sigma):
-        """Normal distribution.
-
-        mu is the mean, and sigma is the standard deviation.
-
-        """
-        # mu = mean, sigma = standard deviation
-
-        # Uses Kinderman and Monahan method. Reference: Kinderman,
-        # A.J. and Monahan, J.F., "Computer generation of random
-        # variables using the ratio of uniform deviates", ACM Trans
-        # Math Software, 3, (1977), pp257-260.
-
-        random = self.random
-        while 1:
-            u1 = random()
-            u2 = 1.0 - random()
-            z = NV_MAGICCONST*(u1-0.5)/u2
-            zz = z*z/4.0
-            if zz <= -_log(u2):
-                break
-        return mu + z*sigma
-
-## -------------------- lognormal distribution --------------------
-
-    def lognormvariate(self, mu, sigma):
-        """Log normal distribution.
-
-        If you take the natural logarithm of this distribution, you'll get a
-        normal distribution with mean mu and standard deviation sigma.
-        mu can have any value, and sigma must be greater than zero.
-
-        """
-        return _exp(self.normalvariate(mu, sigma))
-
-## -------------------- exponential distribution --------------------
-
-    def expovariate(self, lambd):
-        """Exponential distribution.
-
-        lambd is 1.0 divided by the desired mean.  It should be
-        nonzero.  (The parameter would be called "lambda", but that is
-        a reserved word in Python.)  Returned values range from 0 to
-        positive infinity if lambd is positive, and from negative
-        infinity to 0 if lambd is negative.
-
-        """
-        # lambd: rate lambd = 1/mean
-        # ('lambda' is a Python reserved word)
-
-        random = self.random
-        u = random()
-        while u <= 1e-7:
-            u = random()
-        return -_log(u)/lambd
-
-## -------------------- von Mises distribution --------------------
-
-    def vonmisesvariate(self, mu, kappa):
-        """Circular data distribution.
-
-        mu is the mean angle, expressed in radians between 0 and 2*pi, and
-        kappa is the concentration parameter, which must be greater than or
-        equal to zero.  If kappa is equal to zero, this distribution reduces
-        to a uniform random angle over the range 0 to 2*pi.
-
-        """
-        # mu:    mean angle (in radians between 0 and 2*pi)
-        # kappa: concentration parameter kappa (>= 0)
-        # if kappa = 0 generate uniform random angle
-
-        # Based upon an algorithm published in: Fisher, N.I.,
-        # "Statistical Analysis of Circular Data", Cambridge
-        # University Press, 1993.
-
-        # Thanks to Magnus Kessler for a correction to the
-        # implementation of step 4.
-
-        random = self.random
-        if kappa <= 1e-6:
-            return TWOPI * random()
-
-        a = 1.0 + _sqrt(1.0 + 4.0 * kappa * kappa)
-        b = (a - _sqrt(2.0 * a))/(2.0 * kappa)
-        r = (1.0 + b * b)/(2.0 * b)
-
-        while 1:
-            u1 = random()
-
-            z = _cos(_pi * u1)
-            f = (1.0 + r * z)/(r + z)
-            c = kappa * (r - f)
-
-            u2 = random()
-
-            if u2 < c * (2.0 - c) or u2 <= c * _exp(1.0 - c):
-                break
-
-        u3 = random()
-        if u3 > 0.5:
-            theta = (mu % TWOPI) + _acos(f)
-        else:
-            theta = (mu % TWOPI) - _acos(f)
-
-        return theta
-
-## -------------------- gamma distribution --------------------
-
-    def gammavariate(self, alpha, beta):
-        """Gamma distribution.  Not the gamma function!
-
-        Conditions on the parameters are alpha > 0 and beta > 0.
-
-        The probability distribution function is:
-
-                    x ** (alpha - 1) * math.exp(-x / beta)
-          pdf(x) =  --------------------------------------
-                      math.gamma(alpha) * beta ** alpha
-
-        """
-
-        # alpha > 0, beta > 0, mean is alpha*beta, variance is alpha*beta**2
-
-        # Warning: a few older sources define the gamma distribution in terms
-        # of alpha > -1.0
-        if alpha <= 0.0 or beta <= 0.0:
-            raise ValueError, 'gammavariate: alpha and beta must be > 0.0'
-
-        random = self.random
-        if alpha > 1.0:
-
-            # Uses R.C.H. Cheng, "The generation of Gamma
-            # variables with non-integral shape parameters",
-            # Applied Statistics, (1977), 26, No. 1, p71-74
-
-            ainv = _sqrt(2.0 * alpha - 1.0)
-            bbb = alpha - LOG4
-            ccc = alpha + ainv
-
-            while 1:
-                u1 = random()
-                if not 1e-7 < u1 < .9999999:
-                    continue
-                u2 = 1.0 - random()
-                v = _log(u1/(1.0-u1))/ainv
-                x = alpha*_exp(v)
-                z = u1*u1*u2
-                r = bbb+ccc*v-x
-                if r + SG_MAGICCONST - 4.5*z >= 0.0 or r >= _log(z):
-                    return x * beta
-
-        elif alpha == 1.0:
-            # expovariate(1)
-            u = random()
-            while u <= 1e-7:
-                u = random()
-            return -_log(u) * beta
-
-        else:   # alpha is between 0 and 1 (exclusive)
-
-            # Uses ALGORITHM GS of Statistical Computing - Kennedy & Gentle
-
-            while 1:
-                u = random()
-                b = (_e + alpha)/_e
-                p = b*u
-                if p <= 1.0:
-                    x = p ** (1.0/alpha)
-                else:
-                    x = -_log((b-p)/alpha)
-                u1 = random()
-                if p > 1.0:
-                    if u1 <= x ** (alpha - 1.0):
-                        break
-                elif u1 <= _exp(-x):
-                    break
-            return x * beta
-
-## -------------------- Gauss (faster alternative) --------------------
-
-    def gauss(self, mu, sigma):
-        """Gaussian distribution.
-
-        mu is the mean, and sigma is the standard deviation.  This is
-        slightly faster than the normalvariate() function.
-
-        Not thread-safe without a lock around calls.
-
-        """
-
-        # When x and y are two variables from [0, 1), uniformly
-        # distributed, then
-        #
-        #    cos(2*pi*x)*sqrt(-2*log(1-y))
-        #    sin(2*pi*x)*sqrt(-2*log(1-y))
-        #
-        # are two *independent* variables with normal distribution
-        # (mu = 0, sigma = 1).
-        # (Lambert Meertens)
-        # (corrected version; bug discovered by Mike Miller, fixed by LM)
-
-        # Multithreading note: When two threads call this function
-        # simultaneously, it is possible that they will receive the
-        # same return value.  The window is very small though.  To
-        # avoid this, you have to use a lock around all calls.  (I
-        # didn't want to slow this down in the serial case by using a
-        # lock here.)
-
-        random = self.random
-        z = self.gauss_next
-        self.gauss_next = None
-        if z is None:
-            x2pi = random() * TWOPI
-            g2rad = _sqrt(-2.0 * _log(1.0 - random()))
-            z = _cos(x2pi) * g2rad
-            self.gauss_next = _sin(x2pi) * g2rad
-
-        return mu + z*sigma
-
-## -------------------- beta --------------------
-## See
-## http://mail.python.org/pipermail/python-bugs-list/2001-January/003752.html
-## for Ivan Frohne's insightful analysis of why the original implementation:
-##
-##    def betavariate(self, alpha, beta):
-##        # Discrete Event Simulation in C, pp 87-88.
-##
-##        y = self.expovariate(alpha)
-##        z = self.expovariate(1.0/beta)
-##        return z/(y+z)
-##
-## was dead wrong, and how it probably got that way.
-
-    def betavariate(self, alpha, beta):
-        """Beta distribution.
-
-        Conditions on the parameters are alpha > 0 and beta > 0.
-        Returned values range between 0 and 1.
-
-        """
-
-        # This version due to Janne Sinkkonen, and matches all the std
-        # texts (e.g., Knuth Vol 2 Ed 3 pg 134 "the beta distribution").
-        y = self.gammavariate(alpha, 1.)
-        if y == 0:
-            return 0.0
-        else:
-            return y / (y + self.gammavariate(beta, 1.))
-
-## -------------------- Pareto --------------------
-
-    def paretovariate(self, alpha):
-        """Pareto distribution.  alpha is the shape parameter."""
-        # Jain, pg. 495
-
-        u = 1.0 - self.random()
-        return 1.0 / pow(u, 1.0/alpha)
-
-## -------------------- Weibull --------------------
-
-    def weibullvariate(self, alpha, beta):
-        """Weibull distribution.
-
-        alpha is the scale parameter and beta is the shape parameter.
-
-        """
-        # Jain, pg. 499; bug fix courtesy Bill Arms
-
-        u = 1.0 - self.random()
-        return alpha * pow(-_log(u), 1.0/beta)
-
-## -------------------- Wichmann-Hill -------------------
-
-class WichmannHill(Random):
-
-    VERSION = 1     # used by getstate/setstate
-
-    def seed(self, a=None):
-        """Initialize internal state from hashable object.
-
-        None or no argument seeds from current time or from an operating
-        system specific randomness source if available.
-
-        If a is not None or an int or long, hash(a) is used instead.
-
-        If a is an int or long, a is used directly.  Distinct values between
-        0 and 27814431486575L inclusive are guaranteed to yield distinct
-        internal states (this guarantee is specific to the default
-        Wichmann-Hill generator).
-        """
-
-        if a is None:
-            try:
-                a = long(_hexlify(_urandom(16)), 16)
-            except NotImplementedError:
-                import time
-                a = long(time.time() * 256) # use fractional seconds
-
-        if not isinstance(a, (int, long)):
-            a = hash(a)
-
-        a, x = divmod(a, 30268)
-        a, y = divmod(a, 30306)
-        a, z = divmod(a, 30322)
-        self._seed = int(x)+1, int(y)+1, int(z)+1
-
-        self.gauss_next = None
-
-    def random(self):
-        """Get the next random number in the range [0.0, 1.0)."""
-
-        # Wichman-Hill random number generator.
-        #
-        # Wichmann, B. A. & Hill, I. D. (1982)
-        # Algorithm AS 183:
-        # An efficient and portable pseudo-random number generator
-        # Applied Statistics 31 (1982) 188-190
-        #
-        # see also:
-        #        Correction to Algorithm AS 183
-        #        Applied Statistics 33 (1984) 123
-        #
-        #        McLeod, A. I. (1985)
-        #        A remark on Algorithm AS 183
-        #        Applied Statistics 34 (1985),198-200
-
-        # This part is thread-unsafe:
-        # BEGIN CRITICAL SECTION
-        x, y, z = self._seed
-        x = (171 * x) % 30269
-        y = (172 * y) % 30307
-        z = (170 * z) % 30323
-        self._seed = x, y, z
-        # END CRITICAL SECTION
-
-        # Note:  on a platform using IEEE-754 double arithmetic, this can
-        # never return 0.0 (asserted by Tim; proof too long for a comment).
-        return (x/30269.0 + y/30307.0 + z/30323.0) % 1.0
-
-    def getstate(self):
-        """Return internal state; can be passed to setstate() later."""
-        return self.VERSION, self._seed, self.gauss_next
-
-    def setstate(self, state):
-        """Restore internal state from object returned by getstate()."""
-        version = state[0]
-        if version == 1:
-            version, self._seed, self.gauss_next = state
-        else:
-            raise ValueError("state with version %s passed to "
-                             "Random.setstate() of version %s" %
-                             (version, self.VERSION))
-
-    def jumpahead(self, n):
-        """Act as if n calls to random() were made, but quickly.
-
-        n is an int, greater than or equal to 0.
-
-        Example use:  If you have 2 threads and know that each will
-        consume no more than a million random numbers, create two Random
-        objects r1 and r2, then do
-            r2.setstate(r1.getstate())
-            r2.jumpahead(1000000)
-        Then r1 and r2 will use guaranteed-disjoint segments of the full
-        period.
-        """
-
-        if not n >= 0:
-            raise ValueError("n must be >= 0")
-        x, y, z = self._seed
-        x = int(x * pow(171, n, 30269)) % 30269
-        y = int(y * pow(172, n, 30307)) % 30307
-        z = int(z * pow(170, n, 30323)) % 30323
-        self._seed = x, y, z
-
-    def __whseed(self, x=0, y=0, z=0):
-        """Set the Wichmann-Hill seed from (x, y, z).
-
-        These must be integers in the range [0, 256).
-        """
-
-        if not type(x) == type(y) == type(z) == int:
-            raise TypeError('seeds must be integers')
-        if not (0 <= x < 256 and 0 <= y < 256 and 0 <= z < 256):
-            raise ValueError('seeds must be in range(0, 256)')
-        if 0 == x == y == z:
-            # Initialize from current time
-            import time
-            t = long(time.time() * 256)
-            t = int((t&0xffffff) ^ (t>>24))
-            t, x = divmod(t, 256)
-            t, y = divmod(t, 256)
-            t, z = divmod(t, 256)
-        # Zero is a poor seed, so substitute 1
-        self._seed = (x or 1, y or 1, z or 1)
-
-        self.gauss_next = None
-
-    def whseed(self, a=None):
-        """Seed from hashable object's hash code.
-
-        None or no argument seeds from current time.  It is not guaranteed
-        that objects with distinct hash codes lead to distinct internal
-        states.
-
-        This is obsolete, provided for compatibility with the seed routine
-        used prior to Python 2.1.  Use the .seed() method instead.
-        """
-
-        if a is None:
-            self.__whseed()
-            return
-        a = hash(a)
-        a, x = divmod(a, 256)
-        a, y = divmod(a, 256)
-        a, z = divmod(a, 256)
-        x = (x + a) % 256 or 1
-        y = (y + a) % 256 or 1
-        z = (z + a) % 256 or 1
-        self.__whseed(x, y, z)
-
-## --------------- Operating System Random Source  ------------------
-
-class SystemRandom(Random):
-    """Alternate random number generator using sources provided
-    by the operating system (such as /dev/urandom on Unix or
-    CryptGenRandom on Windows).
-
-     Not available on all systems (see os.urandom() for details).
-    """
-
-    def random(self):
-        """Get the next random number in the range [0.0, 1.0)."""
-        return (long(_hexlify(_urandom(7)), 16) >> 3) * RECIP_BPF
-
-    def getrandbits(self, k):
-        """getrandbits(k) -> x.  Generates a long int with k random bits."""
-        if k <= 0:
-            raise ValueError('number of bits must be greater than zero')
-        if k != int(k):
-            raise TypeError('number of bits should be an integer')
-        bytes = (k + 7) // 8                    # bits / 8 and rounded up
-        x = long(_hexlify(_urandom(bytes)), 16)
-        return x >> (bytes * 8 - k)             # trim excess bits
-
-    def _stub(self, *args, **kwds):
-        "Stub method.  Not used for a system random number generator."
-        return None
-    seed = jumpahead = _stub
-
-    def _notimplemented(self, *args, **kwds):
-        "Method should not be called for a system random number generator."
-        raise NotImplementedError('System entropy source does not have state.')
-    getstate = setstate = _notimplemented
-
-## -------------------- test program --------------------
-
-def _test_generator(n, func, args):
-    import time
-    print n, 'times', func.__name__
-    total = 0.0
-    sqsum = 0.0
-    smallest = 1e10
-    largest = -1e10
-    t0 = time.time()
-    for i in range(n):
-        x = func(*args)
-        total += x
-        sqsum = sqsum + x*x
-        smallest = min(x, smallest)
-        largest = max(x, largest)
-    t1 = time.time()
-    print round(t1-t0, 3), 'sec,',
-    avg = total/n
-    stddev = _sqrt(sqsum/n - avg*avg)
-    print 'avg %g, stddev %g, min %g, max %g' % \
-              (avg, stddev, smallest, largest)
-
-
-def _test(N=2000):
-    _test_generator(N, random, ())
-    _test_generator(N, normalvariate, (0.0, 1.0))
-    _test_generator(N, lognormvariate, (0.0, 1.0))
-    _test_generator(N, vonmisesvariate, (0.0, 1.0))
-    _test_generator(N, gammavariate, (0.01, 1.0))
-    _test_generator(N, gammavariate, (0.1, 1.0))
-    _test_generator(N, gammavariate, (0.1, 2.0))
-    _test_generator(N, gammavariate, (0.5, 1.0))
-    _test_generator(N, gammavariate, (0.9, 1.0))
-    _test_generator(N, gammavariate, (1.0, 1.0))
-    _test_generator(N, gammavariate, (2.0, 1.0))
-    _test_generator(N, gammavariate, (20.0, 1.0))
-    _test_generator(N, gammavariate, (200.0, 1.0))
-    _test_generator(N, gauss, (0.0, 1.0))
-    _test_generator(N, betavariate, (3.0, 3.0))
-    _test_generator(N, triangular, (0.0, 1.0, 1.0/3.0))
-
-# Create one instance, seeded from current time, and export its methods
-# as module-level functions.  The functions share state across all uses
-#(both in the user's code and in the Python libraries), but that's fine
-# for most programs and is easier for the casual user than making them
-# instantiate their own Random() instance.
-
-_inst = Random()
-seed = _inst.seed
-random = _inst.random
-uniform = _inst.uniform
-triangular = _inst.triangular
-randint = _inst.randint
-choice = _inst.choice
-randrange = _inst.randrange
-sample = _inst.sample
-shuffle = _inst.shuffle
-normalvariate = _inst.normalvariate
-lognormvariate = _inst.lognormvariate
-expovariate = _inst.expovariate
-vonmisesvariate = _inst.vonmisesvariate
-gammavariate = _inst.gammavariate
-gauss = _inst.gauss
-betavariate = _inst.betavariate
-paretovariate = _inst.paretovariate
-weibullvariate = _inst.weibullvariate
-getstate = _inst.getstate
-setstate = _inst.setstate
-jumpahead = _inst.jumpahead
-getrandbits = _inst.getrandbits
-
-if __name__ == '__main__':
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/re.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/re.py
deleted file mode 100644
index 739f614..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/re.py
+++ /dev/null
@@ -1,326 +0,0 @@
-#
-# Secret Labs' Regular Expression Engine
-#
-# re-compatible interface for the sre matching engine
-#
-# Copyright (c) 1998-2001 by Secret Labs AB.  All rights reserved.
-#
-# This version of the SRE library can be redistributed under CNRI's
-# Python 1.6 license.  For any other use, please contact Secret Labs
-# AB (info@pythonware.com).
-#
-# Portions of this engine have been developed in cooperation with
-# CNRI.  Hewlett-Packard provided funding for 1.6 integration and
-# other compatibility work.
-#
-
-r"""Support for regular expressions (RE).
-
-This module provides regular expression matching operations similar to
-those found in Perl.  It supports both 8-bit and Unicode strings; both
-the pattern and the strings being processed can contain null bytes and
-characters outside the US ASCII range.
-
-Regular expressions can contain both special and ordinary characters.
-Most ordinary characters, like "A", "a", or "0", are the simplest
-regular expressions; they simply match themselves.  You can
-concatenate ordinary characters, so last matches the string 'last'.
-
-The special characters are:
-    "."      Matches any character except a newline.
-    "^"      Matches the start of the string.
-    "$"      Matches the end of the string or just before the newline at
-             the end of the string.
-    "*"      Matches 0 or more (greedy) repetitions of the preceding RE.
-             Greedy means that it will match as many repetitions as possible.
-    "+"      Matches 1 or more (greedy) repetitions of the preceding RE.
-    "?"      Matches 0 or 1 (greedy) of the preceding RE.
-    *?,+?,?? Non-greedy versions of the previous three special characters.
-    {m,n}    Matches from m to n repetitions of the preceding RE.
-    {m,n}?   Non-greedy version of the above.
-    "\\"     Either escapes special characters or signals a special sequence.
-    []       Indicates a set of characters.
-             A "^" as the first character indicates a complementing set.
-    "|"      A|B, creates an RE that will match either A or B.
-    (...)    Matches the RE inside the parentheses.
-             The contents can be retrieved or matched later in the string.
-    (?iLmsux) Set the I, L, M, S, U, or X flag for the RE (see below).
-    (?:...)  Non-grouping version of regular parentheses.
-    (?P<name>...) The substring matched by the group is accessible by name.
-    (?P=name)     Matches the text matched earlier by the group named name.
-    (?#...)  A comment; ignored.
-    (?=...)  Matches if ... matches next, but doesn't consume the string.
-    (?!...)  Matches if ... doesn't match next.
-    (?<=...) Matches if preceded by ... (must be fixed length).
-    (?<!...) Matches if not preceded by ... (must be fixed length).
-    (?(id/name)yes|no) Matches yes pattern if the group with id/name matched,
-                       the (optional) no pattern otherwise.
-
-The special sequences consist of "\\" and a character from the list
-below.  If the ordinary character is not on the list, then the
-resulting RE will match the second character.
-    \number  Matches the contents of the group of the same number.
-    \A       Matches only at the start of the string.
-    \Z       Matches only at the end of the string.
-    \b       Matches the empty string, but only at the start or end of a word.
-    \B       Matches the empty string, but not at the start or end of a word.
-    \d       Matches any decimal digit; equivalent to the set [0-9].
-    \D       Matches any non-digit character; equivalent to the set [^0-9].
-    \s       Matches any whitespace character; equivalent to [ \t\n\r\f\v].
-    \S       Matches any non-whitespace character; equiv. to [^ \t\n\r\f\v].
-    \w       Matches any alphanumeric character; equivalent to [a-zA-Z0-9_].
-             With LOCALE, it will match the set [0-9_] plus characters defined
-             as letters for the current locale.
-    \W       Matches the complement of \w.
-    \\       Matches a literal backslash.
-
-This module exports the following functions:
-    match    Match a regular expression pattern to the beginning of a string.
-    search   Search a string for the presence of a pattern.
-    sub      Substitute occurrences of a pattern found in a string.
-    subn     Same as sub, but also return the number of substitutions made.
-    split    Split a string by the occurrences of a pattern.
-    findall  Find all occurrences of a pattern in a string.
-    finditer Return an iterator yielding a match object for each match.
-    compile  Compile a pattern into a RegexObject.
-    purge    Clear the regular expression cache.
-    escape   Backslash all non-alphanumerics in a string.
-
-Some of the functions in this module takes flags as optional parameters:
-    I  IGNORECASE  Perform case-insensitive matching.
-    L  LOCALE      Make \w, \W, \b, \B, dependent on the current locale.
-    M  MULTILINE   "^" matches the beginning of lines (after a newline)
-                   as well as the string.
-                   "$" matches the end of lines (before a newline) as well
-                   as the end of the string.
-    S  DOTALL      "." matches any character at all, including the newline.
-    X  VERBOSE     Ignore whitespace and comments for nicer looking RE's.
-    U  UNICODE     Make \w, \W, \b, \B, dependent on the Unicode locale.
-
-This module also defines an exception 'error'.
-
-"""
-
-import sys
-import sre_compile
-import sre_parse
-
-# public symbols
-__all__ = [ "match", "search", "sub", "subn", "split", "findall",
-    "compile", "purge", "template", "escape", "I", "L", "M", "S", "X",
-    "U", "IGNORECASE", "LOCALE", "MULTILINE", "DOTALL", "VERBOSE",
-    "UNICODE", "error" ]
-
-__version__ = "2.2.1"
-
-# flags
-I = IGNORECASE = sre_compile.SRE_FLAG_IGNORECASE # ignore case
-L = LOCALE = sre_compile.SRE_FLAG_LOCALE # assume current 8-bit locale
-U = UNICODE = sre_compile.SRE_FLAG_UNICODE # assume unicode locale
-M = MULTILINE = sre_compile.SRE_FLAG_MULTILINE # make anchors look for newline
-S = DOTALL = sre_compile.SRE_FLAG_DOTALL # make dot match newline
-X = VERBOSE = sre_compile.SRE_FLAG_VERBOSE # ignore whitespace and comments
-
-# sre extensions (experimental, don't rely on these)
-T = TEMPLATE = sre_compile.SRE_FLAG_TEMPLATE # disable backtracking
-DEBUG = sre_compile.SRE_FLAG_DEBUG # dump pattern after compilation
-
-# sre exception
-error = sre_compile.error
-
-# --------------------------------------------------------------------
-# public interface
-
-def match(pattern, string, flags=0):
-    """Try to apply the pattern at the start of the string, returning
-    a match object, or None if no match was found."""
-    return _compile(pattern, flags).match(string)
-
-def search(pattern, string, flags=0):
-    """Scan through string looking for a match to the pattern, returning
-    a match object, or None if no match was found."""
-    return _compile(pattern, flags).search(string)
-
-def sub(pattern, repl, string, count=0, flags=0):
-    """Return the string obtained by replacing the leftmost
-    non-overlapping occurrences of the pattern in string by the
-    replacement repl.  repl can be either a string or a callable;
-    if a string, backslash escapes in it are processed.  If it is
-    a callable, it's passed the match object and must return
-    a replacement string to be used."""
-    return _compile(pattern, flags).sub(repl, string, count)
-
-def subn(pattern, repl, string, count=0, flags=0):
-    """Return a 2-tuple containing (new_string, number).
-    new_string is the string obtained by replacing the leftmost
-    non-overlapping occurrences of the pattern in the source
-    string by the replacement repl.  number is the number of
-    substitutions that were made. repl can be either a string or a
-    callable; if a string, backslash escapes in it are processed.
-    If it is a callable, it's passed the match object and must
-    return a replacement string to be used."""
-    return _compile(pattern, flags).subn(repl, string, count)
-
-def split(pattern, string, maxsplit=0, flags=0):
-    """Split the source string by the occurrences of the pattern,
-    returning a list containing the resulting substrings."""
-    return _compile(pattern, flags).split(string, maxsplit)
-
-def findall(pattern, string, flags=0):
-    """Return a list of all non-overlapping matches in the string.
-
-    If one or more groups are present in the pattern, return a
-    list of groups; this will be a list of tuples if the pattern
-    has more than one group.
-
-    Empty matches are included in the result."""
-    return _compile(pattern, flags).findall(string)
-
-if sys.hexversion >= 0x02020000:
-    __all__.append("finditer")
-    def finditer(pattern, string, flags=0):
-        """Return an iterator over all non-overlapping matches in the
-        string.  For each match, the iterator returns a match object.
-
-        Empty matches are included in the result."""
-        return _compile(pattern, flags).finditer(string)
-
-def compile(pattern, flags=0):
-    "Compile a regular expression pattern, returning a pattern object."
-    return _compile(pattern, flags)
-
-def purge():
-    "Clear the regular expression cache"
-    _cache.clear()
-    _cache_repl.clear()
-
-def template(pattern, flags=0):
-    "Compile a template pattern, returning a pattern object"
-    return _compile(pattern, flags|T)
-
-_alphanum = {}
-for c in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890':
-    _alphanum[c] = 1
-del c
-
-def escape(pattern):
-    "Escape all non-alphanumeric characters in pattern."
-    s = list(pattern)
-    alphanum = _alphanum
-    for i, c in enumerate(pattern):
-        if c not in alphanum:
-            if c == "\000":
-                s[i] = "\\000"
-            else:
-                s[i] = "\\" + c
-    return pattern[:0].join(s)
-
-# --------------------------------------------------------------------
-# internals
-
-_cache = {}
-_cache_repl = {}
-
-_pattern_type = type(sre_compile.compile("", 0))
-
-_MAXCACHE = 100
-
-def _compile(*key):
-    # internal: compile pattern
-    cachekey = (type(key[0]),) + key
-    p = _cache.get(cachekey)
-    if p is not None:
-        return p
-    pattern, flags = key
-    if isinstance(pattern, _pattern_type):
-        if flags:
-            raise ValueError('Cannot process flags argument with a compiled pattern')
-        return pattern
-    if not sre_compile.isstring(pattern):
-        raise TypeError, "first argument must be string or compiled pattern"
-    try:
-        p = sre_compile.compile(pattern, flags)
-    except error, v:
-        raise error, v # invalid expression
-    if len(_cache) >= _MAXCACHE:
-        _cache.clear()
-    _cache[cachekey] = p
-    return p
-
-def _compile_repl(*key):
-    # internal: compile replacement pattern
-    p = _cache_repl.get(key)
-    if p is not None:
-        return p
-    repl, pattern = key
-    try:
-        p = sre_parse.parse_template(repl, pattern)
-    except error, v:
-        raise error, v # invalid expression
-    if len(_cache_repl) >= _MAXCACHE:
-        _cache_repl.clear()
-    _cache_repl[key] = p
-    return p
-
-def _expand(pattern, match, template):
-    # internal: match.expand implementation hook
-    template = sre_parse.parse_template(template, pattern)
-    return sre_parse.expand_template(template, match)
-
-def _subx(pattern, template):
-    # internal: pattern.sub/subn implementation helper
-    template = _compile_repl(template, pattern)
-    if not template[0] and len(template[1]) == 1:
-        # literal replacement
-        return template[1][0]
-    def filter(match, template=template):
-        return sre_parse.expand_template(template, match)
-    return filter
-
-# register myself for pickling
-
-import copy_reg
-
-def _pickle(p):
-    return _compile, (p.pattern, p.flags)
-
-copy_reg.pickle(_pattern_type, _pickle, _compile)
-
-# --------------------------------------------------------------------
-# experimental stuff (see python-dev discussions for details)
-
-class Scanner:
-    def __init__(self, lexicon, flags=0):
-        from sre_constants import BRANCH, SUBPATTERN
-        self.lexicon = lexicon
-        # combine phrases into a compound pattern
-        p = []
-        s = sre_parse.Pattern()
-        s.flags = flags
-        for phrase, action in lexicon:
-            p.append(sre_parse.SubPattern(s, [
-                (SUBPATTERN, (len(p)+1, sre_parse.parse(phrase, flags))),
-                ]))
-        s.groups = len(p)+1
-        p = sre_parse.SubPattern(s, [(BRANCH, (None, p))])
-        self.scanner = sre_compile.compile(p)
-    def scan(self, string):
-        result = []
-        append = result.append
-        match = self.scanner.scanner(string).match
-        i = 0
-        while 1:
-            m = match()
-            if not m:
-                break
-            j = m.end()
-            if i == j:
-                break
-            action = self.lexicon[m.lastindex-1][1]
-            if hasattr(action, '__call__'):
-                self.match = m
-                action = action(self, m.group())
-            if action is not None:
-                append(action)
-            i = j
-        return result, string[i:]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/repr.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/repr.py
deleted file mode 100644
index 71a3a15..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/repr.py
+++ /dev/null
@@ -1,132 +0,0 @@
-"""Redo the builtin repr() (representation) but with limits on most sizes."""
-
-__all__ = ["Repr","repr"]
-
-import __builtin__
-from itertools import islice
-
-class Repr:
-
-    def __init__(self):
-        self.maxlevel = 6
-        self.maxtuple = 6
-        self.maxlist = 6
-        self.maxarray = 5
-        self.maxdict = 4
-        self.maxset = 6
-        self.maxfrozenset = 6
-        self.maxdeque = 6
-        self.maxstring = 30
-        self.maxlong = 40
-        self.maxother = 20
-
-    def repr(self, x):
-        return self.repr1(x, self.maxlevel)
-
-    def repr1(self, x, level):
-        typename = type(x).__name__
-        if ' ' in typename:
-            parts = typename.split()
-            typename = '_'.join(parts)
-        if hasattr(self, 'repr_' + typename):
-            return getattr(self, 'repr_' + typename)(x, level)
-        else:
-            s = __builtin__.repr(x)
-            if len(s) > self.maxother:
-                i = max(0, (self.maxother-3)//2)
-                j = max(0, self.maxother-3-i)
-                s = s[:i] + '...' + s[len(s)-j:]
-            return s
-
-    def _repr_iterable(self, x, level, left, right, maxiter, trail=''):
-        n = len(x)
-        if level <= 0 and n:
-            s = '...'
-        else:
-            newlevel = level - 1
-            repr1 = self.repr1
-            pieces = [repr1(elem, newlevel) for elem in islice(x, maxiter)]
-            if n > maxiter:  pieces.append('...')
-            s = ', '.join(pieces)
-            if n == 1 and trail:  right = trail + right
-        return '%s%s%s' % (left, s, right)
-
-    def repr_tuple(self, x, level):
-        return self._repr_iterable(x, level, '(', ')', self.maxtuple, ',')
-
-    def repr_list(self, x, level):
-        return self._repr_iterable(x, level, '[', ']', self.maxlist)
-
-    def repr_array(self, x, level):
-        header = "array('%s', [" % x.typecode
-        return self._repr_iterable(x, level, header, '])', self.maxarray)
-
-    def repr_set(self, x, level):
-        x = _possibly_sorted(x)
-        return self._repr_iterable(x, level, 'set([', '])', self.maxset)
-
-    def repr_frozenset(self, x, level):
-        x = _possibly_sorted(x)
-        return self._repr_iterable(x, level, 'frozenset([', '])',
-                                   self.maxfrozenset)
-
-    def repr_deque(self, x, level):
-        return self._repr_iterable(x, level, 'deque([', '])', self.maxdeque)
-
-    def repr_dict(self, x, level):
-        n = len(x)
-        if n == 0: return '{}'
-        if level <= 0: return '{...}'
-        newlevel = level - 1
-        repr1 = self.repr1
-        pieces = []
-        for key in islice(_possibly_sorted(x), self.maxdict):
-            keyrepr = repr1(key, newlevel)
-            valrepr = repr1(x[key], newlevel)
-            pieces.append('%s: %s' % (keyrepr, valrepr))
-        if n > self.maxdict: pieces.append('...')
-        s = ', '.join(pieces)
-        return '{%s}' % (s,)
-
-    def repr_str(self, x, level):
-        s = __builtin__.repr(x[:self.maxstring])
-        if len(s) > self.maxstring:
-            i = max(0, (self.maxstring-3)//2)
-            j = max(0, self.maxstring-3-i)
-            s = __builtin__.repr(x[:i] + x[len(x)-j:])
-            s = s[:i] + '...' + s[len(s)-j:]
-        return s
-
-    def repr_long(self, x, level):
-        s = __builtin__.repr(x) # XXX Hope this isn't too slow...
-        if len(s) > self.maxlong:
-            i = max(0, (self.maxlong-3)//2)
-            j = max(0, self.maxlong-3-i)
-            s = s[:i] + '...' + s[len(s)-j:]
-        return s
-
-    def repr_instance(self, x, level):
-        try:
-            s = __builtin__.repr(x)
-            # Bugs in x.__repr__() can cause arbitrary
-            # exceptions -- then make up something
-        except Exception:
-            return '<%s instance at %x>' % (x.__class__.__name__, id(x))
-        if len(s) > self.maxstring:
-            i = max(0, (self.maxstring-3)//2)
-            j = max(0, self.maxstring-3-i)
-            s = s[:i] + '...' + s[len(s)-j:]
-        return s
-
-
-def _possibly_sorted(x):
-    # Since not all sequences of items can be sorted and comparison
-    # functions may raise arbitrary exceptions, return an unsorted
-    # sequence in that case.
-    try:
-        return sorted(x)
-    except Exception:
-        return list(x)
-
-aRepr = Repr()
-repr = aRepr.repr
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/rexec.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/rexec.py
deleted file mode 100644
index fb797fa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/rexec.py
+++ /dev/null
@@ -1,588 +0,0 @@
-"""Restricted execution facilities.
-
-The class RExec exports methods r_exec(), r_eval(), r_execfile(), and
-r_import(), which correspond roughly to the built-in operations
-exec, eval(), execfile() and import, but executing the code in an
-environment that only exposes those built-in operations that are
-deemed safe.  To this end, a modest collection of 'fake' modules is
-created which mimics the standard modules by the same names.  It is a
-policy decision which built-in modules and operations are made
-available; this module provides a reasonable default, but derived
-classes can change the policies e.g. by overriding or extending class
-variables like ok_builtin_modules or methods like make_sys().
-
-XXX To do:
-- r_open should allow writing tmp dir
-- r_exec etc. with explicit globals/locals? (Use rexec("exec ... in ...")?)
-
-"""
-from warnings import warnpy3k
-warnpy3k("the rexec module has been removed in Python 3.0", stacklevel=2)
-del warnpy3k
-
-
-import sys
-import __builtin__
-import os
-import ihooks
-import imp
-
-__all__ = ["RExec"]
-
-class FileBase:
-
-    ok_file_methods = ('fileno', 'flush', 'isatty', 'read', 'readline',
-            'readlines', 'seek', 'tell', 'write', 'writelines', 'xreadlines',
-            '__iter__')
-
-
-class FileWrapper(FileBase):
-
-    # XXX This is just like a Bastion -- should use that!
-
-    def __init__(self, f):
-        for m in self.ok_file_methods:
-            if not hasattr(self, m) and hasattr(f, m):
-                setattr(self, m, getattr(f, m))
-
-    def close(self):
-        self.flush()
-
-
-TEMPLATE = """
-def %s(self, *args):
-        return getattr(self.mod, self.name).%s(*args)
-"""
-
-class FileDelegate(FileBase):
-
-    def __init__(self, mod, name):
-        self.mod = mod
-        self.name = name
-
-    for m in FileBase.ok_file_methods + ('close',):
-        exec TEMPLATE % (m, m)
-
-
-class RHooks(ihooks.Hooks):
-
-    def __init__(self, *args):
-        # Hacks to support both old and new interfaces:
-        # old interface was RHooks(rexec[, verbose])
-        # new interface is RHooks([verbose])
-        verbose = 0
-        rexec = None
-        if args and type(args[-1]) == type(0):
-            verbose = args[-1]
-            args = args[:-1]
-        if args and hasattr(args[0], '__class__'):
-            rexec = args[0]
-            args = args[1:]
-        if args:
-            raise TypeError, "too many arguments"
-        ihooks.Hooks.__init__(self, verbose)
-        self.rexec = rexec
-
-    def set_rexec(self, rexec):
-        # Called by RExec instance to complete initialization
-        self.rexec = rexec
-
-    def get_suffixes(self):
-        return self.rexec.get_suffixes()
-
-    def is_builtin(self, name):
-        return self.rexec.is_builtin(name)
-
-    def init_builtin(self, name):
-        m = __import__(name)
-        return self.rexec.copy_except(m, ())
-
-    def init_frozen(self, name): raise SystemError, "don't use this"
-    def load_source(self, *args): raise SystemError, "don't use this"
-    def load_compiled(self, *args): raise SystemError, "don't use this"
-    def load_package(self, *args): raise SystemError, "don't use this"
-
-    def load_dynamic(self, name, filename, file):
-        return self.rexec.load_dynamic(name, filename, file)
-
-    def add_module(self, name):
-        return self.rexec.add_module(name)
-
-    def modules_dict(self):
-        return self.rexec.modules
-
-    def default_path(self):
-        return self.rexec.modules['sys'].path
-
-
-# XXX Backwards compatibility
-RModuleLoader = ihooks.FancyModuleLoader
-RModuleImporter = ihooks.ModuleImporter
-
-
-class RExec(ihooks._Verbose):
-    """Basic restricted execution framework.
-
-    Code executed in this restricted environment will only have access to
-    modules and functions that are deemed safe; you can subclass RExec to
-    add or remove capabilities as desired.
-
-    The RExec class can prevent code from performing unsafe operations like
-    reading or writing disk files, or using TCP/IP sockets.  However, it does
-    not protect against code using extremely large amounts of memory or
-    processor time.
-
-    """
-
-    ok_path = tuple(sys.path)           # That's a policy decision
-
-    ok_builtin_modules = ('audioop', 'array', 'binascii',
-                          'cmath', 'errno', 'imageop',
-                          'marshal', 'math', 'md5', 'operator',
-                          'parser', 'select',
-                          'sha', '_sre', 'strop', 'struct', 'time',
-                          '_weakref')
-
-    ok_posix_names = ('error', 'fstat', 'listdir', 'lstat', 'readlink',
-                      'stat', 'times', 'uname', 'getpid', 'getppid',
-                      'getcwd', 'getuid', 'getgid', 'geteuid', 'getegid')
-
-    ok_sys_names = ('byteorder', 'copyright', 'exit', 'getdefaultencoding',
-                    'getrefcount', 'hexversion', 'maxint', 'maxunicode',
-                    'platform', 'ps1', 'ps2', 'version', 'version_info')
-
-    nok_builtin_names = ('open', 'file', 'reload', '__import__')
-
-    ok_file_types = (imp.C_EXTENSION, imp.PY_SOURCE)
-
-    def __init__(self, hooks = None, verbose = 0):
-        """Returns an instance of the RExec class.
-
-        The hooks parameter is an instance of the RHooks class or a subclass
-        of it.  If it is omitted or None, the default RHooks class is
-        instantiated.
-
-        Whenever the RExec module searches for a module (even a built-in one)
-        or reads a module's code, it doesn't actually go out to the file
-        system itself.  Rather, it calls methods of an RHooks instance that
-        was passed to or created by its constructor.  (Actually, the RExec
-        object doesn't make these calls --- they are made by a module loader
-        object that's part of the RExec object.  This allows another level of
-        flexibility, which can be useful when changing the mechanics of
-        import within the restricted environment.)
-
-        By providing an alternate RHooks object, we can control the file
-        system accesses made to import a module, without changing the
-        actual algorithm that controls the order in which those accesses are
-        made.  For instance, we could substitute an RHooks object that
-        passes all filesystem requests to a file server elsewhere, via some
-        RPC mechanism such as ILU.  Grail's applet loader uses this to support
-        importing applets from a URL for a directory.
-
-        If the verbose parameter is true, additional debugging output may be
-        sent to standard output.
-
-        """
-
-        raise RuntimeError, "This code is not secure in Python 2.2 and later"
-
-        ihooks._Verbose.__init__(self, verbose)
-        # XXX There's a circular reference here:
-        self.hooks = hooks or RHooks(verbose)
-        self.hooks.set_rexec(self)
-        self.modules = {}
-        self.ok_dynamic_modules = self.ok_builtin_modules
-        list = []
-        for mname in self.ok_builtin_modules:
-            if mname in sys.builtin_module_names:
-                list.append(mname)
-        self.ok_builtin_modules = tuple(list)
-        self.set_trusted_path()
-        self.make_builtin()
-        self.make_initial_modules()
-        # make_sys must be last because it adds the already created
-        # modules to its builtin_module_names
-        self.make_sys()
-        self.loader = RModuleLoader(self.hooks, verbose)
-        self.importer = RModuleImporter(self.loader, verbose)
-
-    def set_trusted_path(self):
-        # Set the path from which dynamic modules may be loaded.
-        # Those dynamic modules must also occur in ok_builtin_modules
-        self.trusted_path = filter(os.path.isabs, sys.path)
-
-    def load_dynamic(self, name, filename, file):
-        if name not in self.ok_dynamic_modules:
-            raise ImportError, "untrusted dynamic module: %s" % name
-        if name in sys.modules:
-            src = sys.modules[name]
-        else:
-            src = imp.load_dynamic(name, filename, file)
-        dst = self.copy_except(src, [])
-        return dst
-
-    def make_initial_modules(self):
-        self.make_main()
-        self.make_osname()
-
-    # Helpers for RHooks
-
-    def get_suffixes(self):
-        return [item   # (suff, mode, type)
-                for item in imp.get_suffixes()
-                if item[2] in self.ok_file_types]
-
-    def is_builtin(self, mname):
-        return mname in self.ok_builtin_modules
-
-    # The make_* methods create specific built-in modules
-
-    def make_builtin(self):
-        m = self.copy_except(__builtin__, self.nok_builtin_names)
-        m.__import__ = self.r_import
-        m.reload = self.r_reload
-        m.open = m.file = self.r_open
-
-    def make_main(self):
-        self.add_module('__main__')
-
-    def make_osname(self):
-        osname = os.name
-        src = __import__(osname)
-        dst = self.copy_only(src, self.ok_posix_names)
-        dst.environ = e = {}
-        for key, value in os.environ.items():
-            e[key] = value
-
-    def make_sys(self):
-        m = self.copy_only(sys, self.ok_sys_names)
-        m.modules = self.modules
-        m.argv = ['RESTRICTED']
-        m.path = map(None, self.ok_path)
-        m.exc_info = self.r_exc_info
-        m = self.modules['sys']
-        l = self.modules.keys() + list(self.ok_builtin_modules)
-        l.sort()
-        m.builtin_module_names = tuple(l)
-
-    # The copy_* methods copy existing modules with some changes
-
-    def copy_except(self, src, exceptions):
-        dst = self.copy_none(src)
-        for name in dir(src):
-            setattr(dst, name, getattr(src, name))
-        for name in exceptions:
-            try:
-                delattr(dst, name)
-            except AttributeError:
-                pass
-        return dst
-
-    def copy_only(self, src, names):
-        dst = self.copy_none(src)
-        for name in names:
-            try:
-                value = getattr(src, name)
-            except AttributeError:
-                continue
-            setattr(dst, name, value)
-        return dst
-
-    def copy_none(self, src):
-        m = self.add_module(src.__name__)
-        m.__doc__ = src.__doc__
-        return m
-
-    # Add a module -- return an existing module or create one
-
-    def add_module(self, mname):
-        m = self.modules.get(mname)
-        if m is None:
-            self.modules[mname] = m = self.hooks.new_module(mname)
-        m.__builtins__ = self.modules['__builtin__']
-        return m
-
-    # The r* methods are public interfaces
-
-    def r_exec(self, code):
-        """Execute code within a restricted environment.
-
-        The code parameter must either be a string containing one or more
-        lines of Python code, or a compiled code object, which will be
-        executed in the restricted environment's __main__ module.
-
-        """
-        m = self.add_module('__main__')
-        exec code in m.__dict__
-
-    def r_eval(self, code):
-        """Evaluate code within a restricted environment.
-
-        The code parameter must either be a string containing a Python
-        expression, or a compiled code object, which will be evaluated in
-        the restricted environment's __main__ module.  The value of the
-        expression or code object will be returned.
-
-        """
-        m = self.add_module('__main__')
-        return eval(code, m.__dict__)
-
-    def r_execfile(self, file):
-        """Execute the Python code in the file in the restricted
-        environment's __main__ module.
-
-        """
-        m = self.add_module('__main__')
-        execfile(file, m.__dict__)
-
-    def r_import(self, mname, globals={}, locals={}, fromlist=[]):
-        """Import a module, raising an ImportError exception if the module
-        is considered unsafe.
-
-        This method is implicitly called by code executing in the
-        restricted environment.  Overriding this method in a subclass is
-        used to change the policies enforced by a restricted environment.
-
-        """
-        return self.importer.import_module(mname, globals, locals, fromlist)
-
-    def r_reload(self, m):
-        """Reload the module object, re-parsing and re-initializing it.
-
-        This method is implicitly called by code executing in the
-        restricted environment.  Overriding this method in a subclass is
-        used to change the policies enforced by a restricted environment.
-
-        """
-        return self.importer.reload(m)
-
-    def r_unload(self, m):
-        """Unload the module.
-
-        Removes it from the restricted environment's sys.modules dictionary.
-
-        This method is implicitly called by code executing in the
-        restricted environment.  Overriding this method in a subclass is
-        used to change the policies enforced by a restricted environment.
-
-        """
-        return self.importer.unload(m)
-
-    # The s_* methods are similar but also swap std{in,out,err}
-
-    def make_delegate_files(self):
-        s = self.modules['sys']
-        self.delegate_stdin = FileDelegate(s, 'stdin')
-        self.delegate_stdout = FileDelegate(s, 'stdout')
-        self.delegate_stderr = FileDelegate(s, 'stderr')
-        self.restricted_stdin = FileWrapper(sys.stdin)
-        self.restricted_stdout = FileWrapper(sys.stdout)
-        self.restricted_stderr = FileWrapper(sys.stderr)
-
-    def set_files(self):
-        if not hasattr(self, 'save_stdin'):
-            self.save_files()
-        if not hasattr(self, 'delegate_stdin'):
-            self.make_delegate_files()
-        s = self.modules['sys']
-        s.stdin = self.restricted_stdin
-        s.stdout = self.restricted_stdout
-        s.stderr = self.restricted_stderr
-        sys.stdin = self.delegate_stdin
-        sys.stdout = self.delegate_stdout
-        sys.stderr = self.delegate_stderr
-
-    def reset_files(self):
-        self.restore_files()
-        s = self.modules['sys']
-        self.restricted_stdin = s.stdin
-        self.restricted_stdout = s.stdout
-        self.restricted_stderr = s.stderr
-
-
-    def save_files(self):
-        self.save_stdin = sys.stdin
-        self.save_stdout = sys.stdout
-        self.save_stderr = sys.stderr
-
-    def restore_files(self):
-        sys.stdin = self.save_stdin
-        sys.stdout = self.save_stdout
-        sys.stderr = self.save_stderr
-
-    def s_apply(self, func, args=(), kw={}):
-        self.save_files()
-        try:
-            self.set_files()
-            r = func(*args, **kw)
-        finally:
-            self.restore_files()
-        return r
-
-    def s_exec(self, *args):
-        """Execute code within a restricted environment.
-
-        Similar to the r_exec() method, but the code will be granted access
-        to restricted versions of the standard I/O streams sys.stdin,
-        sys.stderr, and sys.stdout.
-
-        The code parameter must either be a string containing one or more
-        lines of Python code, or a compiled code object, which will be
-        executed in the restricted environment's __main__ module.
-
-        """
-        return self.s_apply(self.r_exec, args)
-
-    def s_eval(self, *args):
-        """Evaluate code within a restricted environment.
-
-        Similar to the r_eval() method, but the code will be granted access
-        to restricted versions of the standard I/O streams sys.stdin,
-        sys.stderr, and sys.stdout.
-
-        The code parameter must either be a string containing a Python
-        expression, or a compiled code object, which will be evaluated in
-        the restricted environment's __main__ module.  The value of the
-        expression or code object will be returned.
-
-        """
-        return self.s_apply(self.r_eval, args)
-
-    def s_execfile(self, *args):
-        """Execute the Python code in the file in the restricted
-        environment's __main__ module.
-
-        Similar to the r_execfile() method, but the code will be granted
-        access to restricted versions of the standard I/O streams sys.stdin,
-        sys.stderr, and sys.stdout.
-
-        """
-        return self.s_apply(self.r_execfile, args)
-
-    def s_import(self, *args):
-        """Import a module, raising an ImportError exception if the module
-        is considered unsafe.
-
-        This method is implicitly called by code executing in the
-        restricted environment.  Overriding this method in a subclass is
-        used to change the policies enforced by a restricted environment.
-
-        Similar to the r_import() method, but has access to restricted
-        versions of the standard I/O streams sys.stdin, sys.stderr, and
-        sys.stdout.
-
-        """
-        return self.s_apply(self.r_import, args)
-
-    def s_reload(self, *args):
-        """Reload the module object, re-parsing and re-initializing it.
-
-        This method is implicitly called by code executing in the
-        restricted environment.  Overriding this method in a subclass is
-        used to change the policies enforced by a restricted environment.
-
-        Similar to the r_reload() method, but has access to restricted
-        versions of the standard I/O streams sys.stdin, sys.stderr, and
-        sys.stdout.
-
-        """
-        return self.s_apply(self.r_reload, args)
-
-    def s_unload(self, *args):
-        """Unload the module.
-
-        Removes it from the restricted environment's sys.modules dictionary.
-
-        This method is implicitly called by code executing in the
-        restricted environment.  Overriding this method in a subclass is
-        used to change the policies enforced by a restricted environment.
-
-        Similar to the r_unload() method, but has access to restricted
-        versions of the standard I/O streams sys.stdin, sys.stderr, and
-        sys.stdout.
-
-        """
-        return self.s_apply(self.r_unload, args)
-
-    # Restricted open(...)
-
-    def r_open(self, file, mode='r', buf=-1):
-        """Method called when open() is called in the restricted environment.
-
-        The arguments are identical to those of the open() function, and a
-        file object (or a class instance compatible with file objects)
-        should be returned.  RExec's default behaviour is allow opening
-        any file for reading, but forbidding any attempt to write a file.
-
-        This method is implicitly called by code executing in the
-        restricted environment.  Overriding this method in a subclass is
-        used to change the policies enforced by a restricted environment.
-
-        """
-        mode = str(mode)
-        if mode not in ('r', 'rb'):
-            raise IOError, "can't open files for writing in restricted mode"
-        return open(file, mode, buf)
-
-    # Restricted version of sys.exc_info()
-
-    def r_exc_info(self):
-        ty, va, tr = sys.exc_info()
-        tr = None
-        return ty, va, tr
-
-
-def test():
-    import getopt, traceback
-    opts, args = getopt.getopt(sys.argv[1:], 'vt:')
-    verbose = 0
-    trusted = []
-    for o, a in opts:
-        if o == '-v':
-            verbose = verbose+1
-        if o == '-t':
-            trusted.append(a)
-    r = RExec(verbose=verbose)
-    if trusted:
-        r.ok_builtin_modules = r.ok_builtin_modules + tuple(trusted)
-    if args:
-        r.modules['sys'].argv = args
-        r.modules['sys'].path.insert(0, os.path.dirname(args[0]))
-    else:
-        r.modules['sys'].path.insert(0, "")
-    fp = sys.stdin
-    if args and args[0] != '-':
-        try:
-            fp = open(args[0])
-        except IOError, msg:
-            print "%s: can't open file %r" % (sys.argv[0], args[0])
-            return 1
-    if fp.isatty():
-        try:
-            import readline
-        except ImportError:
-            pass
-        import code
-        class RestrictedConsole(code.InteractiveConsole):
-            def runcode(self, co):
-                self.locals['__builtins__'] = r.modules['__builtin__']
-                r.s_apply(code.InteractiveConsole.runcode, (self, co))
-        try:
-            RestrictedConsole(r.modules['__main__'].__dict__).interact()
-        except SystemExit, n:
-            return n
-    else:
-        text = fp.read()
-        fp.close()
-        c = compile(text, fp.name, 'exec')
-        try:
-            r.s_exec(c)
-        except SystemExit, n:
-            return n
-        except:
-            traceback.print_exc()
-            return 1
-
-
-if __name__ == '__main__':
-    sys.exit(test())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/rfc822.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/rfc822.py
deleted file mode 100644
index 2c140cb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/rfc822.py
+++ /dev/null
@@ -1,1011 +0,0 @@
-"""RFC 2822 message manipulation.
-
-Note: This is only a very rough sketch of a full RFC-822 parser; in particular
-the tokenizing of addresses does not adhere to all the quoting rules.
-
-Note: RFC 2822 is a long awaited update to RFC 822.  This module should
-conform to RFC 2822, and is thus mis-named (it's not worth renaming it).  Some
-effort at RFC 2822 updates have been made, but a thorough audit has not been
-performed.  Consider any RFC 2822 non-conformance to be a bug.
-
-    RFC 2822: http://www.faqs.org/rfcs/rfc2822.html
-    RFC 822 : http://www.faqs.org/rfcs/rfc822.html (obsolete)
-
-Directions for use:
-
-To create a Message object: first open a file, e.g.:
-
-  fp = open(file, 'r')
-
-You can use any other legal way of getting an open file object, e.g. use
-sys.stdin or call os.popen().  Then pass the open file object to the Message()
-constructor:
-
-  m = Message(fp)
-
-This class can work with any input object that supports a readline method.  If
-the input object has seek and tell capability, the rewindbody method will
-work; also illegal lines will be pushed back onto the input stream.  If the
-input object lacks seek but has an `unread' method that can push back a line
-of input, Message will use that to push back illegal lines.  Thus this class
-can be used to parse messages coming from a buffered stream.
-
-The optional `seekable' argument is provided as a workaround for certain stdio
-libraries in which tell() discards buffered data before discovering that the
-lseek() system call doesn't work.  For maximum portability, you should set the
-seekable argument to zero to prevent that initial \code{tell} when passing in
-an unseekable object such as a a file object created from a socket object.  If
-it is 1 on entry -- which it is by default -- the tell() method of the open
-file object is called once; if this raises an exception, seekable is reset to
-0.  For other nonzero values of seekable, this test is not made.
-
-To get the text of a particular header there are several methods:
-
-  str = m.getheader(name)
-  str = m.getrawheader(name)
-
-where name is the name of the header, e.g. 'Subject'.  The difference is that
-getheader() strips the leading and trailing whitespace, while getrawheader()
-doesn't.  Both functions retain embedded whitespace (including newlines)
-exactly as they are specified in the header, and leave the case of the text
-unchanged.
-
-For addresses and address lists there are functions
-
-  realname, mailaddress = m.getaddr(name)
-  list = m.getaddrlist(name)
-
-where the latter returns a list of (realname, mailaddr) tuples.
-
-There is also a method
-
-  time = m.getdate(name)
-
-which parses a Date-like field and returns a time-compatible tuple,
-i.e. a tuple such as returned by time.localtime() or accepted by
-time.mktime().
-
-See the class definition for lower level access methods.
-
-There are also some utility functions here.
-"""
-# Cleanup and extensions by Eric S. Raymond <esr@thyrsus.com>
-
-import time
-
-from warnings import warnpy3k
-warnpy3k("in 3.x, rfc822 has been removed in favor of the email package",
-         stacklevel=2)
-
-__all__ = ["Message","AddressList","parsedate","parsedate_tz","mktime_tz"]
-
-_blanklines = ('\r\n', '\n')            # Optimization for islast()
-
-
-class Message:
-    """Represents a single RFC 2822-compliant message."""
-
-    def __init__(self, fp, seekable = 1):
-        """Initialize the class instance and read the headers."""
-        if seekable == 1:
-            # Exercise tell() to make sure it works
-            # (and then assume seek() works, too)
-            try:
-                fp.tell()
-            except (AttributeError, IOError):
-                seekable = 0
-        self.fp = fp
-        self.seekable = seekable
-        self.startofheaders = None
-        self.startofbody = None
-        #
-        if self.seekable:
-            try:
-                self.startofheaders = self.fp.tell()
-            except IOError:
-                self.seekable = 0
-        #
-        self.readheaders()
-        #
-        if self.seekable:
-            try:
-                self.startofbody = self.fp.tell()
-            except IOError:
-                self.seekable = 0
-
-    def rewindbody(self):
-        """Rewind the file to the start of the body (if seekable)."""
-        if not self.seekable:
-            raise IOError, "unseekable file"
-        self.fp.seek(self.startofbody)
-
-    def readheaders(self):
-        """Read header lines.
-
-        Read header lines up to the entirely blank line that terminates them.
-        The (normally blank) line that ends the headers is skipped, but not
-        included in the returned list.  If a non-header line ends the headers,
-        (which is an error), an attempt is made to backspace over it; it is
-        never included in the returned list.
-
-        The variable self.status is set to the empty string if all went well,
-        otherwise it is an error message.  The variable self.headers is a
-        completely uninterpreted list of lines contained in the header (so
-        printing them will reproduce the header exactly as it appears in the
-        file).
-        """
-        self.dict = {}
-        self.unixfrom = ''
-        self.headers = lst = []
-        self.status = ''
-        headerseen = ""
-        firstline = 1
-        startofline = unread = tell = None
-        if hasattr(self.fp, 'unread'):
-            unread = self.fp.unread
-        elif self.seekable:
-            tell = self.fp.tell
-        while 1:
-            if tell:
-                try:
-                    startofline = tell()
-                except IOError:
-                    startofline = tell = None
-                    self.seekable = 0
-            line = self.fp.readline()
-            if not line:
-                self.status = 'EOF in headers'
-                break
-            # Skip unix From name time lines
-            if firstline and line.startswith('From '):
-                self.unixfrom = self.unixfrom + line
-                continue
-            firstline = 0
-            if headerseen and line[0] in ' \t':
-                # It's a continuation line.
-                lst.append(line)
-                x = (self.dict[headerseen] + "\n " + line.strip())
-                self.dict[headerseen] = x.strip()
-                continue
-            elif self.iscomment(line):
-                # It's a comment.  Ignore it.
-                continue
-            elif self.islast(line):
-                # Note! No pushback here!  The delimiter line gets eaten.
-                break
-            headerseen = self.isheader(line)
-            if headerseen:
-                # It's a legal header line, save it.
-                lst.append(line)
-                self.dict[headerseen] = line[len(headerseen)+1:].strip()
-                continue
-            else:
-                # It's not a header line; throw it back and stop here.
-                if not self.dict:
-                    self.status = 'No headers'
-                else:
-                    self.status = 'Non-header line where header expected'
-                # Try to undo the read.
-                if unread:
-                    unread(line)
-                elif tell:
-                    self.fp.seek(startofline)
-                else:
-                    self.status = self.status + '; bad seek'
-                break
-
-    def isheader(self, line):
-        """Determine whether a given line is a legal header.
-
-        This method should return the header name, suitably canonicalized.
-        You may override this method in order to use Message parsing on tagged
-        data in RFC 2822-like formats with special header formats.
-        """
-        i = line.find(':')
-        if i > 0:
-            return line[:i].lower()
-        return None
-
-    def islast(self, line):
-        """Determine whether a line is a legal end of RFC 2822 headers.
-
-        You may override this method if your application wants to bend the
-        rules, e.g. to strip trailing whitespace, or to recognize MH template
-        separators ('--------').  For convenience (e.g. for code reading from
-        sockets) a line consisting of \r\n also matches.
-        """
-        return line in _blanklines
-
-    def iscomment(self, line):
-        """Determine whether a line should be skipped entirely.
-
-        You may override this method in order to use Message parsing on tagged
-        data in RFC 2822-like formats that support embedded comments or
-        free-text data.
-        """
-        return False
-
-    def getallmatchingheaders(self, name):
-        """Find all header lines matching a given header name.
-
-        Look through the list of headers and find all lines matching a given
-        header name (and their continuation lines).  A list of the lines is
-        returned, without interpretation.  If the header does not occur, an
-        empty list is returned.  If the header occurs multiple times, all
-        occurrences are returned.  Case is not important in the header name.
-        """
-        name = name.lower() + ':'
-        n = len(name)
-        lst = []
-        hit = 0
-        for line in self.headers:
-            if line[:n].lower() == name:
-                hit = 1
-            elif not line[:1].isspace():
-                hit = 0
-            if hit:
-                lst.append(line)
-        return lst
-
-    def getfirstmatchingheader(self, name):
-        """Get the first header line matching name.
-
-        This is similar to getallmatchingheaders, but it returns only the
-        first matching header (and its continuation lines).
-        """
-        name = name.lower() + ':'
-        n = len(name)
-        lst = []
-        hit = 0
-        for line in self.headers:
-            if hit:
-                if not line[:1].isspace():
-                    break
-            elif line[:n].lower() == name:
-                hit = 1
-            if hit:
-                lst.append(line)
-        return lst
-
-    def getrawheader(self, name):
-        """A higher-level interface to getfirstmatchingheader().
-
-        Return a string containing the literal text of the header but with the
-        keyword stripped.  All leading, trailing and embedded whitespace is
-        kept in the string, however.  Return None if the header does not
-        occur.
-        """
-
-        lst = self.getfirstmatchingheader(name)
-        if not lst:
-            return None
-        lst[0] = lst[0][len(name) + 1:]
-        return ''.join(lst)
-
-    def getheader(self, name, default=None):
-        """Get the header value for a name.
-
-        This is the normal interface: it returns a stripped version of the
-        header value for a given header name, or None if it doesn't exist.
-        This uses the dictionary version which finds the *last* such header.
-        """
-        return self.dict.get(name.lower(), default)
-    get = getheader
-
-    def getheaders(self, name):
-        """Get all values for a header.
-
-        This returns a list of values for headers given more than once; each
-        value in the result list is stripped in the same way as the result of
-        getheader().  If the header is not given, return an empty list.
-        """
-        result = []
-        current = ''
-        have_header = 0
-        for s in self.getallmatchingheaders(name):
-            if s[0].isspace():
-                if current:
-                    current = "%s\n %s" % (current, s.strip())
-                else:
-                    current = s.strip()
-            else:
-                if have_header:
-                    result.append(current)
-                current = s[s.find(":") + 1:].strip()
-                have_header = 1
-        if have_header:
-            result.append(current)
-        return result
-
-    def getaddr(self, name):
-        """Get a single address from a header, as a tuple.
-
-        An example return value:
-        ('Guido van Rossum', 'guido@cwi.nl')
-        """
-        # New, by Ben Escoto
-        alist = self.getaddrlist(name)
-        if alist:
-            return alist[0]
-        else:
-            return (None, None)
-
-    def getaddrlist(self, name):
-        """Get a list of addresses from a header.
-
-        Retrieves a list of addresses from a header, where each address is a
-        tuple as returned by getaddr().  Scans all named headers, so it works
-        properly with multiple To: or Cc: headers for example.
-        """
-        raw = []
-        for h in self.getallmatchingheaders(name):
-            if h[0] in ' \t':
-                raw.append(h)
-            else:
-                if raw:
-                    raw.append(', ')
-                i = h.find(':')
-                if i > 0:
-                    addr = h[i+1:]
-                raw.append(addr)
-        alladdrs = ''.join(raw)
-        a = AddressList(alladdrs)
-        return a.addresslist
-
-    def getdate(self, name):
-        """Retrieve a date field from a header.
-
-        Retrieves a date field from the named header, returning a tuple
-        compatible with time.mktime().
-        """
-        try:
-            data = self[name]
-        except KeyError:
-            return None
-        return parsedate(data)
-
-    def getdate_tz(self, name):
-        """Retrieve a date field from a header as a 10-tuple.
-
-        The first 9 elements make up a tuple compatible with time.mktime(),
-        and the 10th is the offset of the poster's time zone from GMT/UTC.
-        """
-        try:
-            data = self[name]
-        except KeyError:
-            return None
-        return parsedate_tz(data)
-
-
-    # Access as a dictionary (only finds *last* header of each type):
-
-    def __len__(self):
-        """Get the number of headers in a message."""
-        return len(self.dict)
-
-    def __getitem__(self, name):
-        """Get a specific header, as from a dictionary."""
-        return self.dict[name.lower()]
-
-    def __setitem__(self, name, value):
-        """Set the value of a header.
-
-        Note: This is not a perfect inversion of __getitem__, because any
-        changed headers get stuck at the end of the raw-headers list rather
-        than where the altered header was.
-        """
-        del self[name] # Won't fail if it doesn't exist
-        self.dict[name.lower()] = value
-        text = name + ": " + value
-        for line in text.split("\n"):
-            self.headers.append(line + "\n")
-
-    def __delitem__(self, name):
-        """Delete all occurrences of a specific header, if it is present."""
-        name = name.lower()
-        if not name in self.dict:
-            return
-        del self.dict[name]
-        name = name + ':'
-        n = len(name)
-        lst = []
-        hit = 0
-        for i in range(len(self.headers)):
-            line = self.headers[i]
-            if line[:n].lower() == name:
-                hit = 1
-            elif not line[:1].isspace():
-                hit = 0
-            if hit:
-                lst.append(i)
-        for i in reversed(lst):
-            del self.headers[i]
-
-    def setdefault(self, name, default=""):
-        lowername = name.lower()
-        if lowername in self.dict:
-            return self.dict[lowername]
-        else:
-            text = name + ": " + default
-            for line in text.split("\n"):
-                self.headers.append(line + "\n")
-            self.dict[lowername] = default
-            return default
-
-    def has_key(self, name):
-        """Determine whether a message contains the named header."""
-        return name.lower() in self.dict
-
-    def __contains__(self, name):
-        """Determine whether a message contains the named header."""
-        return name.lower() in self.dict
-
-    def __iter__(self):
-        return iter(self.dict)
-
-    def keys(self):
-        """Get all of a message's header field names."""
-        return self.dict.keys()
-
-    def values(self):
-        """Get all of a message's header field values."""
-        return self.dict.values()
-
-    def items(self):
-        """Get all of a message's headers.
-
-        Returns a list of name, value tuples.
-        """
-        return self.dict.items()
-
-    def __str__(self):
-        return ''.join(self.headers)
-
-
-# Utility functions
-# -----------------
-
-# XXX Should fix unquote() and quote() to be really conformant.
-# XXX The inverses of the parse functions may also be useful.
-
-
-def unquote(s):
-    """Remove quotes from a string."""
-    if len(s) > 1:
-        if s.startswith('"') and s.endswith('"'):
-            return s[1:-1].replace('\\\\', '\\').replace('\\"', '"')
-        if s.startswith('<') and s.endswith('>'):
-            return s[1:-1]
-    return s
-
-
-def quote(s):
-    """Add quotes around a string."""
-    return s.replace('\\', '\\\\').replace('"', '\\"')
-
-
-def parseaddr(address):
-    """Parse an address into a (realname, mailaddr) tuple."""
-    a = AddressList(address)
-    lst = a.addresslist
-    if not lst:
-        return (None, None)
-    return lst[0]
-
-
-class AddrlistClass:
-    """Address parser class by Ben Escoto.
-
-    To understand what this class does, it helps to have a copy of
-    RFC 2822 in front of you.
-
-    http://www.faqs.org/rfcs/rfc2822.html
-
-    Note: this class interface is deprecated and may be removed in the future.
-    Use rfc822.AddressList instead.
-    """
-
-    def __init__(self, field):
-        """Initialize a new instance.
-
-        `field' is an unparsed address header field, containing one or more
-        addresses.
-        """
-        self.specials = '()<>@,:;.\"[]'
-        self.pos = 0
-        self.LWS = ' \t'
-        self.CR = '\r\n'
-        self.atomends = self.specials + self.LWS + self.CR
-        # Note that RFC 2822 now specifies `.' as obs-phrase, meaning that it
-        # is obsolete syntax.  RFC 2822 requires that we recognize obsolete
-        # syntax, so allow dots in phrases.
-        self.phraseends = self.atomends.replace('.', '')
-        self.field = field
-        self.commentlist = []
-
-    def gotonext(self):
-        """Parse up to the start of the next address."""
-        while self.pos < len(self.field):
-            if self.field[self.pos] in self.LWS + '\n\r':
-                self.pos = self.pos + 1
-            elif self.field[self.pos] == '(':
-                self.commentlist.append(self.getcomment())
-            else: break
-
-    def getaddrlist(self):
-        """Parse all addresses.
-
-        Returns a list containing all of the addresses.
-        """
-        result = []
-        ad = self.getaddress()
-        while ad:
-            result += ad
-            ad = self.getaddress()
-        return result
-
-    def getaddress(self):
-        """Parse the next address."""
-        self.commentlist = []
-        self.gotonext()
-
-        oldpos = self.pos
-        oldcl = self.commentlist
-        plist = self.getphraselist()
-
-        self.gotonext()
-        returnlist = []
-
-        if self.pos >= len(self.field):
-            # Bad email address technically, no domain.
-            if plist:
-                returnlist = [(' '.join(self.commentlist), plist[0])]
-
-        elif self.field[self.pos] in '.@':
-            # email address is just an addrspec
-            # this isn't very efficient since we start over
-            self.pos = oldpos
-            self.commentlist = oldcl
-            addrspec = self.getaddrspec()
-            returnlist = [(' '.join(self.commentlist), addrspec)]
-
-        elif self.field[self.pos] == ':':
-            # address is a group
-            returnlist = []
-
-            fieldlen = len(self.field)
-            self.pos += 1
-            while self.pos < len(self.field):
-                self.gotonext()
-                if self.pos < fieldlen and self.field[self.pos] == ';':
-                    self.pos += 1
-                    break
-                returnlist = returnlist + self.getaddress()
-
-        elif self.field[self.pos] == '<':
-            # Address is a phrase then a route addr
-            routeaddr = self.getrouteaddr()
-
-            if self.commentlist:
-                returnlist = [(' '.join(plist) + ' (' + \
-                         ' '.join(self.commentlist) + ')', routeaddr)]
-            else: returnlist = [(' '.join(plist), routeaddr)]
-
-        else:
-            if plist:
-                returnlist = [(' '.join(self.commentlist), plist[0])]
-            elif self.field[self.pos] in self.specials:
-                self.pos += 1
-
-        self.gotonext()
-        if self.pos < len(self.field) and self.field[self.pos] == ',':
-            self.pos += 1
-        return returnlist
-
-    def getrouteaddr(self):
-        """Parse a route address (Return-path value).
-
-        This method just skips all the route stuff and returns the addrspec.
-        """
-        if self.field[self.pos] != '<':
-            return
-
-        expectroute = 0
-        self.pos += 1
-        self.gotonext()
-        adlist = ""
-        while self.pos < len(self.field):
-            if expectroute:
-                self.getdomain()
-                expectroute = 0
-            elif self.field[self.pos] == '>':
-                self.pos += 1
-                break
-            elif self.field[self.pos] == '@':
-                self.pos += 1
-                expectroute = 1
-            elif self.field[self.pos] == ':':
-                self.pos += 1
-            else:
-                adlist = self.getaddrspec()
-                self.pos += 1
-                break
-            self.gotonext()
-
-        return adlist
-
-    def getaddrspec(self):
-        """Parse an RFC 2822 addr-spec."""
-        aslist = []
-
-        self.gotonext()
-        while self.pos < len(self.field):
-            if self.field[self.pos] == '.':
-                aslist.append('.')
-                self.pos += 1
-            elif self.field[self.pos] == '"':
-                aslist.append('"%s"' % self.getquote())
-            elif self.field[self.pos] in self.atomends:
-                break
-            else: aslist.append(self.getatom())
-            self.gotonext()
-
-        if self.pos >= len(self.field) or self.field[self.pos] != '@':
-            return ''.join(aslist)
-
-        aslist.append('@')
-        self.pos += 1
-        self.gotonext()
-        return ''.join(aslist) + self.getdomain()
-
-    def getdomain(self):
-        """Get the complete domain name from an address."""
-        sdlist = []
-        while self.pos < len(self.field):
-            if self.field[self.pos] in self.LWS:
-                self.pos += 1
-            elif self.field[self.pos] == '(':
-                self.commentlist.append(self.getcomment())
-            elif self.field[self.pos] == '[':
-                sdlist.append(self.getdomainliteral())
-            elif self.field[self.pos] == '.':
-                self.pos += 1
-                sdlist.append('.')
-            elif self.field[self.pos] in self.atomends:
-                break
-            else: sdlist.append(self.getatom())
-        return ''.join(sdlist)
-
-    def getdelimited(self, beginchar, endchars, allowcomments = 1):
-        """Parse a header fragment delimited by special characters.
-
-        `beginchar' is the start character for the fragment.  If self is not
-        looking at an instance of `beginchar' then getdelimited returns the
-        empty string.
-
-        `endchars' is a sequence of allowable end-delimiting characters.
-        Parsing stops when one of these is encountered.
-
-        If `allowcomments' is non-zero, embedded RFC 2822 comments are allowed
-        within the parsed fragment.
-        """
-        if self.field[self.pos] != beginchar:
-            return ''
-
-        slist = ['']
-        quote = 0
-        self.pos += 1
-        while self.pos < len(self.field):
-            if quote == 1:
-                slist.append(self.field[self.pos])
-                quote = 0
-            elif self.field[self.pos] in endchars:
-                self.pos += 1
-                break
-            elif allowcomments and self.field[self.pos] == '(':
-                slist.append(self.getcomment())
-                continue        # have already advanced pos from getcomment
-            elif self.field[self.pos] == '\\':
-                quote = 1
-            else:
-                slist.append(self.field[self.pos])
-            self.pos += 1
-
-        return ''.join(slist)
-
-    def getquote(self):
-        """Get a quote-delimited fragment from self's field."""
-        return self.getdelimited('"', '"\r', 0)
-
-    def getcomment(self):
-        """Get a parenthesis-delimited fragment from self's field."""
-        return self.getdelimited('(', ')\r', 1)
-
-    def getdomainliteral(self):
-        """Parse an RFC 2822 domain-literal."""
-        return '[%s]' % self.getdelimited('[', ']\r', 0)
-
-    def getatom(self, atomends=None):
-        """Parse an RFC 2822 atom.
-
-        Optional atomends specifies a different set of end token delimiters
-        (the default is to use self.atomends).  This is used e.g. in
-        getphraselist() since phrase endings must not include the `.' (which
-        is legal in phrases)."""
-        atomlist = ['']
-        if atomends is None:
-            atomends = self.atomends
-
-        while self.pos < len(self.field):
-            if self.field[self.pos] in atomends:
-                break
-            else: atomlist.append(self.field[self.pos])
-            self.pos += 1
-
-        return ''.join(atomlist)
-
-    def getphraselist(self):
-        """Parse a sequence of RFC 2822 phrases.
-
-        A phrase is a sequence of words, which are in turn either RFC 2822
-        atoms or quoted-strings.  Phrases are canonicalized by squeezing all
-        runs of continuous whitespace into one space.
-        """
-        plist = []
-
-        while self.pos < len(self.field):
-            if self.field[self.pos] in self.LWS:
-                self.pos += 1
-            elif self.field[self.pos] == '"':
-                plist.append(self.getquote())
-            elif self.field[self.pos] == '(':
-                self.commentlist.append(self.getcomment())
-            elif self.field[self.pos] in self.phraseends:
-                break
-            else:
-                plist.append(self.getatom(self.phraseends))
-
-        return plist
-
-class AddressList(AddrlistClass):
-    """An AddressList encapsulates a list of parsed RFC 2822 addresses."""
-    def __init__(self, field):
-        AddrlistClass.__init__(self, field)
-        if field:
-            self.addresslist = self.getaddrlist()
-        else:
-            self.addresslist = []
-
-    def __len__(self):
-        return len(self.addresslist)
-
-    def __str__(self):
-        return ", ".join(map(dump_address_pair, self.addresslist))
-
-    def __add__(self, other):
-        # Set union
-        newaddr = AddressList(None)
-        newaddr.addresslist = self.addresslist[:]
-        for x in other.addresslist:
-            if not x in self.addresslist:
-                newaddr.addresslist.append(x)
-        return newaddr
-
-    def __iadd__(self, other):
-        # Set union, in-place
-        for x in other.addresslist:
-            if not x in self.addresslist:
-                self.addresslist.append(x)
-        return self
-
-    def __sub__(self, other):
-        # Set difference
-        newaddr = AddressList(None)
-        for x in self.addresslist:
-            if not x in other.addresslist:
-                newaddr.addresslist.append(x)
-        return newaddr
-
-    def __isub__(self, other):
-        # Set difference, in-place
-        for x in other.addresslist:
-            if x in self.addresslist:
-                self.addresslist.remove(x)
-        return self
-
-    def __getitem__(self, index):
-        # Make indexing, slices, and 'in' work
-        return self.addresslist[index]
-
-def dump_address_pair(pair):
-    """Dump a (name, address) pair in a canonicalized form."""
-    if pair[0]:
-        return '"' + pair[0] + '" <' + pair[1] + '>'
-    else:
-        return pair[1]
-
-# Parse a date field
-
-_monthnames = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul',
-               'aug', 'sep', 'oct', 'nov', 'dec',
-               'january', 'february', 'march', 'april', 'may', 'june', 'july',
-               'august', 'september', 'october', 'november', 'december']
-_daynames = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']
-
-# The timezone table does not include the military time zones defined
-# in RFC822, other than Z.  According to RFC1123, the description in
-# RFC822 gets the signs wrong, so we can't rely on any such time
-# zones.  RFC1123 recommends that numeric timezone indicators be used
-# instead of timezone names.
-
-_timezones = {'UT':0, 'UTC':0, 'GMT':0, 'Z':0,
-              'AST': -400, 'ADT': -300,  # Atlantic (used in Canada)
-              'EST': -500, 'EDT': -400,  # Eastern
-              'CST': -600, 'CDT': -500,  # Central
-              'MST': -700, 'MDT': -600,  # Mountain
-              'PST': -800, 'PDT': -700   # Pacific
-              }
-
-
-def parsedate_tz(data):
-    """Convert a date string to a time tuple.
-
-    Accounts for military timezones.
-    """
-    if not data:
-        return None
-    data = data.split()
-    if data[0][-1] in (',', '.') or data[0].lower() in _daynames:
-        # There's a dayname here. Skip it
-        del data[0]
-    else:
-        # no space after the "weekday,"?
-        i = data[0].rfind(',')
-        if i >= 0:
-            data[0] = data[0][i+1:]
-    if len(data) == 3: # RFC 850 date, deprecated
-        stuff = data[0].split('-')
-        if len(stuff) == 3:
-            data = stuff + data[1:]
-    if len(data) == 4:
-        s = data[3]
-        i = s.find('+')
-        if i > 0:
-            data[3:] = [s[:i], s[i+1:]]
-        else:
-            data.append('') # Dummy tz
-    if len(data) < 5:
-        return None
-    data = data[:5]
-    [dd, mm, yy, tm, tz] = data
-    mm = mm.lower()
-    if not mm in _monthnames:
-        dd, mm = mm, dd.lower()
-        if not mm in _monthnames:
-            return None
-    mm = _monthnames.index(mm)+1
-    if mm > 12: mm = mm - 12
-    if dd[-1] == ',':
-        dd = dd[:-1]
-    i = yy.find(':')
-    if i > 0:
-        yy, tm = tm, yy
-    if yy[-1] == ',':
-        yy = yy[:-1]
-    if not yy[0].isdigit():
-        yy, tz = tz, yy
-    if tm[-1] == ',':
-        tm = tm[:-1]
-    tm = tm.split(':')
-    if len(tm) == 2:
-        [thh, tmm] = tm
-        tss = '0'
-    elif len(tm) == 3:
-        [thh, tmm, tss] = tm
-    else:
-        return None
-    try:
-        yy = int(yy)
-        dd = int(dd)
-        thh = int(thh)
-        tmm = int(tmm)
-        tss = int(tss)
-    except ValueError:
-        return None
-    tzoffset = None
-    tz = tz.upper()
-    if tz in _timezones:
-        tzoffset = _timezones[tz]
-    else:
-        try:
-            tzoffset = int(tz)
-        except ValueError:
-            pass
-    # Convert a timezone offset into seconds ; -0500 -> -18000
-    if tzoffset:
-        if tzoffset < 0:
-            tzsign = -1
-            tzoffset = -tzoffset
-        else:
-            tzsign = 1
-        tzoffset = tzsign * ( (tzoffset//100)*3600 + (tzoffset % 100)*60)
-    return (yy, mm, dd, thh, tmm, tss, 0, 1, 0, tzoffset)
-
-
-def parsedate(data):
-    """Convert a time string to a time tuple."""
-    t = parsedate_tz(data)
-    if t is None:
-        return t
-    return t[:9]
-
-
-def mktime_tz(data):
-    """Turn a 10-tuple as returned by parsedate_tz() into a UTC timestamp."""
-    if data[9] is None:
-        # No zone info, so localtime is better assumption than GMT
-        return time.mktime(data[:8] + (-1,))
-    else:
-        t = time.mktime(data[:8] + (0,))
-        return t - data[9] - time.timezone
-
-def formatdate(timeval=None):
-    """Returns time format preferred for Internet standards.
-
-    Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
-
-    According to RFC 1123, day and month names must always be in
-    English.  If not for that, this code could use strftime().  It
-    can't because strftime() honors the locale and could generated
-    non-English names.
-    """
-    if timeval is None:
-        timeval = time.time()
-    timeval = time.gmtime(timeval)
-    return "%s, %02d %s %04d %02d:%02d:%02d GMT" % (
-            ("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")[timeval[6]],
-            timeval[2],
-            ("Jan", "Feb", "Mar", "Apr", "May", "Jun",
-             "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")[timeval[1]-1],
-                                timeval[0], timeval[3], timeval[4], timeval[5])
-
-
-# When used as script, run a small test program.
-# The first command line argument must be a filename containing one
-# message in RFC-822 format.
-
-if __name__ == '__main__':
-    import sys, os
-    file = os.path.join(os.environ['HOME'], 'Mail/inbox/1')
-    if sys.argv[1:]: file = sys.argv[1]
-    f = open(file, 'r')
-    m = Message(f)
-    print 'From:', m.getaddr('from')
-    print 'To:', m.getaddrlist('to')
-    print 'Subject:', m.getheader('subject')
-    print 'Date:', m.getheader('date')
-    date = m.getdate_tz('date')
-    tz = date[-1]
-    date = time.localtime(mktime_tz(date))
-    if date:
-        print 'ParsedDate:', time.asctime(date),
-        hhmmss = tz
-        hhmm, ss = divmod(hhmmss, 60)
-        hh, mm = divmod(hhmm, 60)
-        print "%+03d%02d" % (hh, mm),
-        if ss: print ".%02d" % ss,
-        print
-    else:
-        print 'ParsedDate:', None
-    m.rewindbody()
-    n = 0
-    while f.readline():
-        n += 1
-    print 'Lines:', n
-    print '-'*70
-    print 'len =', len(m)
-    if 'Date' in m: print 'Date =', m['Date']
-    if 'X-Nonsense' in m: pass
-    print 'keys =', m.keys()
-    print 'values =', m.values()
-    print 'items =', m.items()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/rlcompleter.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/rlcompleter.py
deleted file mode 100644
index f9fe721..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/rlcompleter.py
+++ /dev/null
@@ -1,170 +0,0 @@
-"""Word completion for GNU readline 2.0.
-
-This requires the latest extension to the readline module. The completer
-completes keywords, built-ins and globals in a selectable namespace (which
-defaults to __main__); when completing NAME.NAME..., it evaluates (!) the
-expression up to the last dot and completes its attributes.
-
-It's very cool to do "import sys" type "sys.", hit the
-completion key (twice), and see the list of names defined by the
-sys module!
-
-Tip: to use the tab key as the completion key, call
-
-    readline.parse_and_bind("tab: complete")
-
-Notes:
-
-- Exceptions raised by the completer function are *ignored* (and
-generally cause the completion to fail).  This is a feature -- since
-readline sets the tty device in raw (or cbreak) mode, printing a
-traceback wouldn't work well without some complicated hoopla to save,
-reset and restore the tty state.
-
-- The evaluation of the NAME.NAME... form may cause arbitrary
-application defined code to be executed if an object with a
-__getattr__ hook is found.  Since it is the responsibility of the
-application (or the user) to enable this feature, I consider this an
-acceptable risk.  More complicated expressions (e.g. function calls or
-indexing operations) are *not* evaluated.
-
-- GNU readline is also used by the built-in functions input() and
-raw_input(), and thus these also benefit/suffer from the completer
-features.  Clearly an interactive application can benefit by
-specifying its own completer function and using raw_input() for all
-its input.
-
-- When the original stdin is not a tty device, GNU readline is never
-used, and this module (and the readline module) are silently inactive.
-
-"""
-
-import __builtin__
-import __main__
-
-__all__ = ["Completer"]
-
-class Completer:
-    def __init__(self, namespace = None):
-        """Create a new completer for the command line.
-
-        Completer([namespace]) -> completer instance.
-
-        If unspecified, the default namespace where completions are performed
-        is __main__ (technically, __main__.__dict__). Namespaces should be
-        given as dictionaries.
-
-        Completer instances should be used as the completion mechanism of
-        readline via the set_completer() call:
-
-        readline.set_completer(Completer(my_namespace).complete)
-        """
-
-        if namespace and not isinstance(namespace, dict):
-            raise TypeError,'namespace must be a dictionary'
-
-        # Don't bind to namespace quite yet, but flag whether the user wants a
-        # specific namespace or to use __main__.__dict__. This will allow us
-        # to bind to __main__.__dict__ at completion time, not now.
-        if namespace is None:
-            self.use_main_ns = 1
-        else:
-            self.use_main_ns = 0
-            self.namespace = namespace
-
-    def complete(self, text, state):
-        """Return the next possible completion for 'text'.
-
-        This is called successively with state == 0, 1, 2, ... until it
-        returns None.  The completion should begin with 'text'.
-
-        """
-        if self.use_main_ns:
-            self.namespace = __main__.__dict__
-
-        if state == 0:
-            if "." in text:
-                self.matches = self.attr_matches(text)
-            else:
-                self.matches = self.global_matches(text)
-        try:
-            return self.matches[state]
-        except IndexError:
-            return None
-
-    def _callable_postfix(self, val, word):
-        if hasattr(val, '__call__'):
-            word = word + "("
-        return word
-
-    def global_matches(self, text):
-        """Compute matches when text is a simple name.
-
-        Return a list of all keywords, built-in functions and names currently
-        defined in self.namespace that match.
-
-        """
-        import keyword
-        matches = []
-        n = len(text)
-        for word in keyword.kwlist:
-            if word[:n] == text:
-                matches.append(word)
-        for nspace in [__builtin__.__dict__, self.namespace]:
-            for word, val in nspace.items():
-                if word[:n] == text and word != "__builtins__":
-                    matches.append(self._callable_postfix(val, word))
-        return matches
-
-    def attr_matches(self, text):
-        """Compute matches when text contains a dot.
-
-        Assuming the text is of the form NAME.NAME....[NAME], and is
-        evaluatable in self.namespace, it will be evaluated and its attributes
-        (as revealed by dir()) are used as possible completions.  (For class
-        instances, class members are also considered.)
-
-        WARNING: this can still invoke arbitrary C code, if an object
-        with a __getattr__ hook is evaluated.
-
-        """
-        import re
-        m = re.match(r"(\w+(\.\w+)*)\.(\w*)", text)
-        if not m:
-            return []
-        expr, attr = m.group(1, 3)
-        try:
-            thisobject = eval(expr, self.namespace)
-        except Exception:
-            return []
-
-        # get the content of the object, except __builtins__
-        words = dir(thisobject)
-        if "__builtins__" in words:
-            words.remove("__builtins__")
-
-        if hasattr(thisobject, '__class__'):
-            words.append('__class__')
-            words.extend(get_class_members(thisobject.__class__))
-        matches = []
-        n = len(attr)
-        for word in words:
-            if word[:n] == attr and hasattr(thisobject, word):
-                val = getattr(thisobject, word)
-                word = self._callable_postfix(val, "%s.%s" % (expr, word))
-                matches.append(word)
-        return matches
-
-def get_class_members(klass):
-    ret = dir(klass)
-    if hasattr(klass,'__bases__'):
-        for base in klass.__bases__:
-            ret = ret + get_class_members(base)
-    return ret
-
-try:
-    import readline
-except ImportError:
-    pass
-else:
-    readline.set_completer(Completer().complete)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/robotparser.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/robotparser.py
deleted file mode 100644
index 4d0ad9e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/robotparser.py
+++ /dev/null
@@ -1,222 +0,0 @@
-""" robotparser.py
-
-    Copyright (C) 2000  Bastian Kleineidam
-
-    You can choose between two licenses when using this package:
-    1) GNU GPLv2
-    2) PSF license for Python 2.2
-
-    The robots.txt Exclusion Protocol is implemented as specified in
-    http://info.webcrawler.com/mak/projects/robots/norobots-rfc.html
-"""
-import urlparse
-import urllib
-
-__all__ = ["RobotFileParser"]
-
-
-class RobotFileParser:
-    """ This class provides a set of methods to read, parse and answer
-    questions about a single robots.txt file.
-
-    """
-
-    def __init__(self, url=''):
-        self.entries = []
-        self.default_entry = None
-        self.disallow_all = False
-        self.allow_all = False
-        self.set_url(url)
-        self.last_checked = 0
-
-    def mtime(self):
-        """Returns the time the robots.txt file was last fetched.
-
-        This is useful for long-running web spiders that need to
-        check for new robots.txt files periodically.
-
-        """
-        return self.last_checked
-
-    def modified(self):
-        """Sets the time the robots.txt file was last fetched to the
-        current time.
-
-        """
-        import time
-        self.last_checked = time.time()
-
-    def set_url(self, url):
-        """Sets the URL referring to a robots.txt file."""
-        self.url = url
-        self.host, self.path = urlparse.urlparse(url)[1:3]
-
-    def read(self):
-        """Reads the robots.txt URL and feeds it to the parser."""
-        opener = URLopener()
-        f = opener.open(self.url)
-        lines = [line.strip() for line in f]
-        f.close()
-        self.errcode = opener.errcode
-        if self.errcode in (401, 403):
-            self.disallow_all = True
-        elif self.errcode >= 400:
-            self.allow_all = True
-        elif self.errcode == 200 and lines:
-            self.parse(lines)
-
-    def _add_entry(self, entry):
-        if "*" in entry.useragents:
-            # the default entry is considered last
-            if self.default_entry is None:
-                # the first default entry wins
-                self.default_entry = entry
-        else:
-            self.entries.append(entry)
-
-    def parse(self, lines):
-        """parse the input lines from a robots.txt file.
-           We allow that a user-agent: line is not preceded by
-           one or more blank lines."""
-        # states:
-        #   0: start state
-        #   1: saw user-agent line
-        #   2: saw an allow or disallow line
-        state = 0
-        linenumber = 0
-        entry = Entry()
-
-        for line in lines:
-            linenumber += 1
-            if not line:
-                if state == 1:
-                    entry = Entry()
-                    state = 0
-                elif state == 2:
-                    self._add_entry(entry)
-                    entry = Entry()
-                    state = 0
-            # remove optional comment and strip line
-            i = line.find('#')
-            if i >= 0:
-                line = line[:i]
-            line = line.strip()
-            if not line:
-                continue
-            line = line.split(':', 1)
-            if len(line) == 2:
-                line[0] = line[0].strip().lower()
-                line[1] = urllib.unquote(line[1].strip())
-                if line[0] == "user-agent":
-                    if state == 2:
-                        self._add_entry(entry)
-                        entry = Entry()
-                    entry.useragents.append(line[1])
-                    state = 1
-                elif line[0] == "disallow":
-                    if state != 0:
-                        entry.rulelines.append(RuleLine(line[1], False))
-                        state = 2
-                elif line[0] == "allow":
-                    if state != 0:
-                        entry.rulelines.append(RuleLine(line[1], True))
-                        state = 2
-        if state == 2:
-            self._add_entry(entry)
-
-
-    def can_fetch(self, useragent, url):
-        """using the parsed robots.txt decide if useragent can fetch url"""
-        if self.disallow_all:
-            return False
-        if self.allow_all:
-            return True
-        # search for given user agent matches
-        # the first match counts
-        parsed_url = urlparse.urlparse(urllib.unquote(url))
-        url = urlparse.urlunparse(('', '', parsed_url.path,
-            parsed_url.params, parsed_url.query, parsed_url.fragment))
-        url = urllib.quote(url)
-        if not url:
-            url = "/"
-        for entry in self.entries:
-            if entry.applies_to(useragent):
-                return entry.allowance(url)
-        # try the default entry last
-        if self.default_entry:
-            return self.default_entry.allowance(url)
-        # agent not found ==> access granted
-        return True
-
-
-    def __str__(self):
-        return ''.join([str(entry) + "\n" for entry in self.entries])
-
-
-class RuleLine:
-    """A rule line is a single "Allow:" (allowance==True) or "Disallow:"
-       (allowance==False) followed by a path."""
-    def __init__(self, path, allowance):
-        if path == '' and not allowance:
-            # an empty value means allow all
-            allowance = True
-        self.path = urllib.quote(path)
-        self.allowance = allowance
-
-    def applies_to(self, filename):
-        return self.path == "*" or filename.startswith(self.path)
-
-    def __str__(self):
-        return (self.allowance and "Allow" or "Disallow") + ": " + self.path
-
-
-class Entry:
-    """An entry has one or more user-agents and zero or more rulelines"""
-    def __init__(self):
-        self.useragents = []
-        self.rulelines = []
-
-    def __str__(self):
-        ret = []
-        for agent in self.useragents:
-            ret.extend(["User-agent: ", agent, "\n"])
-        for line in self.rulelines:
-            ret.extend([str(line), "\n"])
-        return ''.join(ret)
-
-    def applies_to(self, useragent):
-        """check if this entry applies to the specified agent"""
-        # split the name token and make it lower case
-        useragent = useragent.split("/")[0].lower()
-        for agent in self.useragents:
-            if agent == '*':
-                # we have the catch-all agent
-                return True
-            agent = agent.lower()
-            if agent in useragent:
-                return True
-        return False
-
-    def allowance(self, filename):
-        """Preconditions:
-        - our agent applies to this entry
-        - filename is URL decoded"""
-        for line in self.rulelines:
-            if line.applies_to(filename):
-                return line.allowance
-        return True
-
-class URLopener(urllib.FancyURLopener):
-    def __init__(self, *args):
-        urllib.FancyURLopener.__init__(self, *args)
-        self.errcode = 200
-
-    def prompt_user_passwd(self, host, realm):
-        ## If robots.txt file is accessible only with a password,
-        ## we act as if the file wasn't there.
-        return None, None
-
-    def http_error_default(self, url, fp, errcode, errmsg, headers):
-        self.errcode = errcode
-        return urllib.FancyURLopener.http_error_default(self, url, fp, errcode,
-                                                        errmsg, headers)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/runpy.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/runpy.py
deleted file mode 100644
index 78544af..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/runpy.py
+++ /dev/null
@@ -1,278 +0,0 @@
-"""runpy.py - locating and running Python code using the module namespace
-
-Provides support for locating and running Python scripts using the Python
-module namespace instead of the native filesystem.
-
-This allows Python code to play nicely with non-filesystem based PEP 302
-importers when locating support scripts as well as when importing modules.
-"""
-# Written by Nick Coghlan <ncoghlan at gmail.com>
-#    to implement PEP 338 (Executing Modules as Scripts)
-
-import sys
-import imp
-from pkgutil import read_code
-try:
-    from imp import get_loader
-except ImportError:
-    from pkgutil import get_loader
-
-__all__ = [
-    "run_module", "run_path",
-]
-
-class _TempModule(object):
-    """Temporarily replace a module in sys.modules with an empty namespace"""
-    def __init__(self, mod_name):
-        self.mod_name = mod_name
-        self.module = imp.new_module(mod_name)
-        self._saved_module = []
-
-    def __enter__(self):
-        mod_name = self.mod_name
-        try:
-            self._saved_module.append(sys.modules[mod_name])
-        except KeyError:
-            pass
-        sys.modules[mod_name] = self.module
-        return self
-
-    def __exit__(self, *args):
-        if self._saved_module:
-            sys.modules[self.mod_name] = self._saved_module[0]
-        else:
-            del sys.modules[self.mod_name]
-        self._saved_module = []
-
-class _ModifiedArgv0(object):
-    def __init__(self, value):
-        self.value = value
-        self._saved_value = self._sentinel = object()
-
-    def __enter__(self):
-        if self._saved_value is not self._sentinel:
-            raise RuntimeError("Already preserving saved value")
-        self._saved_value = sys.argv[0]
-        sys.argv[0] = self.value
-
-    def __exit__(self, *args):
-        self.value = self._sentinel
-        sys.argv[0] = self._saved_value
-
-def _run_code(code, run_globals, init_globals=None,
-              mod_name=None, mod_fname=None,
-              mod_loader=None, pkg_name=None):
-    """Helper to run code in nominated namespace"""
-    if init_globals is not None:
-        run_globals.update(init_globals)
-    run_globals.update(__name__ = mod_name,
-                       __file__ = mod_fname,
-                       __loader__ = mod_loader,
-                       __package__ = pkg_name)
-    exec code in run_globals
-    return run_globals
-
-def _run_module_code(code, init_globals=None,
-                    mod_name=None, mod_fname=None,
-                    mod_loader=None, pkg_name=None):
-    """Helper to run code in new namespace with sys modified"""
-    with _TempModule(mod_name) as temp_module, _ModifiedArgv0(mod_fname):
-        mod_globals = temp_module.module.__dict__
-        _run_code(code, mod_globals, init_globals,
-                  mod_name, mod_fname, mod_loader, pkg_name)
-    # Copy the globals of the temporary module, as they
-    # may be cleared when the temporary module goes away
-    return mod_globals.copy()
-
-
-# This helper is needed due to a missing component in the PEP 302
-# loader protocol (specifically, "get_filename" is non-standard)
-# Since we can't introduce new features in maintenance releases,
-# support was added to zipimporter under the name '_get_filename'
-def _get_filename(loader, mod_name):
-    for attr in ("get_filename", "_get_filename"):
-        meth = getattr(loader, attr, None)
-        if meth is not None:
-            return meth(mod_name)
-    return None
-
-# Helper to get the loader, code and filename for a module
-def _get_module_details(mod_name):
-    loader = get_loader(mod_name)
-    if loader is None:
-        raise ImportError("No module named %s" % mod_name)
-    if loader.is_package(mod_name):
-        if mod_name == "__main__" or mod_name.endswith(".__main__"):
-            raise ImportError("Cannot use package as __main__ module")
-        try:
-            pkg_main_name = mod_name + ".__main__"
-            return _get_module_details(pkg_main_name)
-        except ImportError, e:
-            raise ImportError(("%s; %r is a package and cannot " +
-                               "be directly executed") %(e, mod_name))
-    code = loader.get_code(mod_name)
-    if code is None:
-        raise ImportError("No code object available for %s" % mod_name)
-    filename = _get_filename(loader, mod_name)
-    return mod_name, loader, code, filename
-
-
-def _get_main_module_details():
-    # Helper that gives a nicer error message when attempting to
-    # execute a zipfile or directory by invoking __main__.py
-    main_name = "__main__"
-    try:
-        return _get_module_details(main_name)
-    except ImportError as exc:
-        if main_name in str(exc):
-            raise ImportError("can't find %r module in %r" %
-                              (main_name, sys.path[0]))
-        raise
-
-# This function is the actual implementation of the -m switch and direct
-# execution of zipfiles and directories and is deliberately kept private.
-# This avoids a repeat of the situation where run_module() no longer met the
-# needs of mainmodule.c, but couldn't be changed because it was public
-def _run_module_as_main(mod_name, alter_argv=True):
-    """Runs the designated module in the __main__ namespace
-
-       Note that the executed module will have full access to the
-       __main__ namespace. If this is not desirable, the run_module()
-       function should be used to run the module code in a fresh namespace.
-
-       At the very least, these variables in __main__ will be overwritten:
-           __name__
-           __file__
-           __loader__
-           __package__
-    """
-    try:
-        if alter_argv or mod_name != "__main__": # i.e. -m switch
-            mod_name, loader, code, fname = _get_module_details(mod_name)
-        else:          # i.e. directory or zipfile execution
-            mod_name, loader, code, fname = _get_main_module_details()
-    except ImportError as exc:
-        msg = "%s: %s" % (sys.executable, str(exc))
-        sys.exit(msg)
-    pkg_name = mod_name.rpartition('.')[0]
-    main_globals = sys.modules["__main__"].__dict__
-    if alter_argv:
-        sys.argv[0] = fname
-    return _run_code(code, main_globals, None,
-                     "__main__", fname, loader, pkg_name)
-
-def run_module(mod_name, init_globals=None,
-               run_name=None, alter_sys=False):
-    """Execute a module's code without importing it
-
-       Returns the resulting top level namespace dictionary
-    """
-    mod_name, loader, code, fname = _get_module_details(mod_name)
-    if run_name is None:
-        run_name = mod_name
-    pkg_name = mod_name.rpartition('.')[0]
-    if alter_sys:
-        return _run_module_code(code, init_globals, run_name,
-                                fname, loader, pkg_name)
-    else:
-        # Leave the sys module alone
-        return _run_code(code, {}, init_globals, run_name,
-                         fname, loader, pkg_name)
-
-
-# XXX (ncoghlan): Perhaps expose the C API function
-# as imp.get_importer instead of reimplementing it in Python?
-def _get_importer(path_name):
-    """Python version of PyImport_GetImporter C API function"""
-    cache = sys.path_importer_cache
-    try:
-        importer = cache[path_name]
-    except KeyError:
-        # Not yet cached. Flag as using the
-        # standard machinery until we finish
-        # checking the hooks
-        cache[path_name] = None
-        for hook in sys.path_hooks:
-            try:
-                importer = hook(path_name)
-                break
-            except ImportError:
-                pass
-        else:
-            # The following check looks a bit odd. The trick is that
-            # NullImporter throws ImportError if the supplied path is a
-            # *valid* directory entry (and hence able to be handled
-            # by the standard import machinery)
-            try:
-                importer = imp.NullImporter(path_name)
-            except ImportError:
-                return None
-        cache[path_name] = importer
-    return importer
-
-def _get_code_from_file(fname):
-    # Check for a compiled file first
-    with open(fname, "rb") as f:
-        code = read_code(f)
-    if code is None:
-        # That didn't work, so try it as normal source code
-        with open(fname, "rU") as f:
-            code = compile(f.read(), fname, 'exec')
-    return code
-
-def run_path(path_name, init_globals=None, run_name=None):
-    """Execute code located at the specified filesystem location
-
-       Returns the resulting top level namespace dictionary
-
-       The file path may refer directly to a Python script (i.e.
-       one that could be directly executed with execfile) or else
-       it may refer to a zipfile or directory containing a top
-       level __main__.py script.
-    """
-    if run_name is None:
-        run_name = "<run_path>"
-    importer = _get_importer(path_name)
-    if isinstance(importer, imp.NullImporter):
-        # Not a valid sys.path entry, so run the code directly
-        # execfile() doesn't help as we want to allow compiled files
-        code = _get_code_from_file(path_name)
-        return _run_module_code(code, init_globals, run_name, path_name)
-    else:
-        # Importer is defined for path, so add it to
-        # the start of sys.path
-        sys.path.insert(0, path_name)
-        try:
-            # Here's where things are a little different from the run_module
-            # case. There, we only had to replace the module in sys while the
-            # code was running and doing so was somewhat optional. Here, we
-            # have no choice and we have to remove it even while we read the
-            # code. If we don't do this, a __loader__ attribute in the
-            # existing __main__ module may prevent location of the new module.
-            main_name = "__main__"
-            saved_main = sys.modules[main_name]
-            del sys.modules[main_name]
-            try:
-                mod_name, loader, code, fname = _get_main_module_details()
-            finally:
-                sys.modules[main_name] = saved_main
-            pkg_name = ""
-            with _TempModule(run_name) as temp_module, \
-                 _ModifiedArgv0(path_name):
-                mod_globals = temp_module.module.__dict__
-                return _run_code(code, mod_globals, init_globals,
-                                    run_name, fname, loader, pkg_name).copy()
-        finally:
-            try:
-                sys.path.remove(path_name)
-            except ValueError:
-                pass
-
-
-if __name__ == "__main__":
-    # Run the module specified as the next command line argument
-    if len(sys.argv) < 2:
-        print >> sys.stderr, "No module specified for execution"
-    else:
-        del sys.argv[0] # Make the requested module sys.argv[0]
-        _run_module_as_main(sys.argv[0])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/sched.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/sched.py
deleted file mode 100644
index 7e7a1ba..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/sched.py
+++ /dev/null
@@ -1,134 +0,0 @@
-"""A generally useful event scheduler class.
-
-Each instance of this class manages its own queue.
-No multi-threading is implied; you are supposed to hack that
-yourself, or use a single instance per application.
-
-Each instance is parametrized with two functions, one that is
-supposed to return the current time, one that is supposed to
-implement a delay.  You can implement real-time scheduling by
-substituting time and sleep from built-in module time, or you can
-implement simulated time by writing your own functions.  This can
-also be used to integrate scheduling with STDWIN events; the delay
-function is allowed to modify the queue.  Time can be expressed as
-integers or floating point numbers, as long as it is consistent.
-
-Events are specified by tuples (time, priority, action, argument).
-As in UNIX, lower priority numbers mean higher priority; in this
-way the queue can be maintained as a priority queue.  Execution of the
-event means calling the action function, passing it the argument
-sequence in "argument" (remember that in Python, multiple function
-arguments are be packed in a sequence).
-The action function may be an instance method so it
-has another way to reference private data (besides global variables).
-"""
-
-# XXX The timefunc and delayfunc should have been defined as methods
-# XXX so you can define new kinds of schedulers using subclassing
-# XXX instead of having to define a module or class just to hold
-# XXX the global state of your particular time and delay functions.
-
-import heapq
-from collections import namedtuple
-
-__all__ = ["scheduler"]
-
-Event = namedtuple('Event', 'time, priority, action, argument')
-
-class scheduler:
-    def __init__(self, timefunc, delayfunc):
-        """Initialize a new instance, passing the time and delay
-        functions"""
-        self._queue = []
-        self.timefunc = timefunc
-        self.delayfunc = delayfunc
-
-    def enterabs(self, time, priority, action, argument):
-        """Enter a new event in the queue at an absolute time.
-
-        Returns an ID for the event which can be used to remove it,
-        if necessary.
-
-        """
-        event = Event(time, priority, action, argument)
-        heapq.heappush(self._queue, event)
-        return event # The ID
-
-    def enter(self, delay, priority, action, argument):
-        """A variant that specifies the time as a relative time.
-
-        This is actually the more commonly used interface.
-
-        """
-        time = self.timefunc() + delay
-        return self.enterabs(time, priority, action, argument)
-
-    def cancel(self, event):
-        """Remove an event from the queue.
-
-        This must be presented the ID as returned by enter().
-        If the event is not in the queue, this raises ValueError.
-
-        """
-        self._queue.remove(event)
-        heapq.heapify(self._queue)
-
-    def empty(self):
-        """Check whether the queue is empty."""
-        return not self._queue
-
-    def run(self):
-        """Execute events until the queue is empty.
-
-        When there is a positive delay until the first event, the
-        delay function is called and the event is left in the queue;
-        otherwise, the event is removed from the queue and executed
-        (its action function is called, passing it the argument).  If
-        the delay function returns prematurely, it is simply
-        restarted.
-
-        It is legal for both the delay function and the action
-        function to to modify the queue or to raise an exception;
-        exceptions are not caught but the scheduler's state remains
-        well-defined so run() may be called again.
-
-        A questionable hack is added to allow other threads to run:
-        just after an event is executed, a delay of 0 is executed, to
-        avoid monopolizing the CPU when other threads are also
-        runnable.
-
-        """
-        # localize variable access to minimize overhead
-        # and to improve thread safety
-        q = self._queue
-        delayfunc = self.delayfunc
-        timefunc = self.timefunc
-        pop = heapq.heappop
-        while q:
-            time, priority, action, argument = checked_event = q[0]
-            now = timefunc()
-            if now < time:
-                delayfunc(time - now)
-            else:
-                event = pop(q)
-                # Verify that the event was not removed or altered
-                # by another thread after we last looked at q[0].
-                if event is checked_event:
-                    action(*argument)
-                    delayfunc(0)   # Let other threads run
-                else:
-                    heapq.heappush(q, event)
-
-    @property
-    def queue(self):
-        """An ordered list of upcoming events.
-
-        Events are named tuples with fields for:
-            time, priority, action, arguments
-
-        """
-        # Use heapq to sort the queue rather than using 'sorted(self._queue)'.
-        # With heapq, two events scheduled at the same time will show in
-        # the actual order they would be retrieved.
-        events = self._queue[:]
-        return map(heapq.heappop, [events]*len(events))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/sets.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/sets.py
deleted file mode 100644
index 6a0e4f5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/sets.py
+++ /dev/null
@@ -1,557 +0,0 @@
-"""Classes to represent arbitrary sets (including sets of sets).
-
-This module implements sets using dictionaries whose values are
-ignored.  The usual operations (union, intersection, deletion, etc.)
-are provided as both methods and operators.
-
-Important: sets are not sequences!  While they support 'x in s',
-'len(s)', and 'for x in s', none of those operations are unique for
-sequences; for example, mappings support all three as well.  The
-characteristic operation for sequences is subscripting with small
-integers: s[i], for i in range(len(s)).  Sets don't support
-subscripting at all.  Also, sequences allow multiple occurrences and
-their elements have a definite order; sets on the other hand don't
-record multiple occurrences and don't remember the order of element
-insertion (which is why they don't support s[i]).
-
-The following classes are provided:
-
-BaseSet -- All the operations common to both mutable and immutable
-    sets. This is an abstract class, not meant to be directly
-    instantiated.
-
-Set -- Mutable sets, subclass of BaseSet; not hashable.
-
-ImmutableSet -- Immutable sets, subclass of BaseSet; hashable.
-    An iterable argument is mandatory to create an ImmutableSet.
-
-_TemporarilyImmutableSet -- A wrapper around a Set, hashable,
-    giving the same hash value as the immutable set equivalent
-    would have.  Do not use this class directly.
-
-Only hashable objects can be added to a Set. In particular, you cannot
-really add a Set as an element to another Set; if you try, what is
-actually added is an ImmutableSet built from it (it compares equal to
-the one you tried adding).
-
-When you ask if `x in y' where x is a Set and y is a Set or
-ImmutableSet, x is wrapped into a _TemporarilyImmutableSet z, and
-what's tested is actually `z in y'.
-
-"""
-
-# Code history:
-#
-# - Greg V. Wilson wrote the first version, using a different approach
-#   to the mutable/immutable problem, and inheriting from dict.
-#
-# - Alex Martelli modified Greg's version to implement the current
-#   Set/ImmutableSet approach, and make the data an attribute.
-#
-# - Guido van Rossum rewrote much of the code, made some API changes,
-#   and cleaned up the docstrings.
-#
-# - Raymond Hettinger added a number of speedups and other
-#   improvements.
-
-from itertools import ifilter, ifilterfalse
-
-__all__ = ['BaseSet', 'Set', 'ImmutableSet']
-
-import warnings
-warnings.warn("the sets module is deprecated", DeprecationWarning,
-                stacklevel=2)
-
-class BaseSet(object):
-    """Common base class for mutable and immutable sets."""
-
-    __slots__ = ['_data']
-
-    # Constructor
-
-    def __init__(self):
-        """This is an abstract class."""
-        # Don't call this from a concrete subclass!
-        if self.__class__ is BaseSet:
-            raise TypeError, ("BaseSet is an abstract class.  "
-                              "Use Set or ImmutableSet.")
-
-    # Standard protocols: __len__, __repr__, __str__, __iter__
-
-    def __len__(self):
-        """Return the number of elements of a set."""
-        return len(self._data)
-
-    def __repr__(self):
-        """Return string representation of a set.
-
-        This looks like 'Set([<list of elements>])'.
-        """
-        return self._repr()
-
-    # __str__ is the same as __repr__
-    __str__ = __repr__
-
-    def _repr(self, sorted=False):
-        elements = self._data.keys()
-        if sorted:
-            elements.sort()
-        return '%s(%r)' % (self.__class__.__name__, elements)
-
-    def __iter__(self):
-        """Return an iterator over the elements or a set.
-
-        This is the keys iterator for the underlying dict.
-        """
-        return self._data.iterkeys()
-
-    # Three-way comparison is not supported.  However, because __eq__ is
-    # tried before __cmp__, if Set x == Set y, x.__eq__(y) returns True and
-    # then cmp(x, y) returns 0 (Python doesn't actually call __cmp__ in this
-    # case).
-
-    def __cmp__(self, other):
-        raise TypeError, "can't compare sets using cmp()"
-
-    # Equality comparisons using the underlying dicts.  Mixed-type comparisons
-    # are allowed here, where Set == z for non-Set z always returns False,
-    # and Set != z always True.  This allows expressions like "x in y" to
-    # give the expected result when y is a sequence of mixed types, not
-    # raising a pointless TypeError just because y contains a Set, or x is
-    # a Set and y contain's a non-set ("in" invokes only __eq__).
-    # Subtle:  it would be nicer if __eq__ and __ne__ could return
-    # NotImplemented instead of True or False.  Then the other comparand
-    # would get a chance to determine the result, and if the other comparand
-    # also returned NotImplemented then it would fall back to object address
-    # comparison (which would always return False for __eq__ and always
-    # True for __ne__).  However, that doesn't work, because this type
-    # *also* implements __cmp__:  if, e.g., __eq__ returns NotImplemented,
-    # Python tries __cmp__ next, and the __cmp__ here then raises TypeError.
-
-    def __eq__(self, other):
-        if isinstance(other, BaseSet):
-            return self._data == other._data
-        else:
-            return False
-
-    def __ne__(self, other):
-        if isinstance(other, BaseSet):
-            return self._data != other._data
-        else:
-            return True
-
-    # Copying operations
-
-    def copy(self):
-        """Return a shallow copy of a set."""
-        result = self.__class__()
-        result._data.update(self._data)
-        return result
-
-    __copy__ = copy # For the copy module
-
-    def __deepcopy__(self, memo):
-        """Return a deep copy of a set; used by copy module."""
-        # This pre-creates the result and inserts it in the memo
-        # early, in case the deep copy recurses into another reference
-        # to this same set.  A set can't be an element of itself, but
-        # it can certainly contain an object that has a reference to
-        # itself.
-        from copy import deepcopy
-        result = self.__class__()
-        memo[id(self)] = result
-        data = result._data
-        value = True
-        for elt in self:
-            data[deepcopy(elt, memo)] = value
-        return result
-
-    # Standard set operations: union, intersection, both differences.
-    # Each has an operator version (e.g. __or__, invoked with |) and a
-    # method version (e.g. union).
-    # Subtle:  Each pair requires distinct code so that the outcome is
-    # correct when the type of other isn't suitable.  For example, if
-    # we did "union = __or__" instead, then Set().union(3) would return
-    # NotImplemented instead of raising TypeError (albeit that *why* it
-    # raises TypeError as-is is also a bit subtle).
-
-    def __or__(self, other):
-        """Return the union of two sets as a new set.
-
-        (I.e. all elements that are in either set.)
-        """
-        if not isinstance(other, BaseSet):
-            return NotImplemented
-        return self.union(other)
-
-    def union(self, other):
-        """Return the union of two sets as a new set.
-
-        (I.e. all elements that are in either set.)
-        """
-        result = self.__class__(self)
-        result._update(other)
-        return result
-
-    def __and__(self, other):
-        """Return the intersection of two sets as a new set.
-
-        (I.e. all elements that are in both sets.)
-        """
-        if not isinstance(other, BaseSet):
-            return NotImplemented
-        return self.intersection(other)
-
-    def intersection(self, other):
-        """Return the intersection of two sets as a new set.
-
-        (I.e. all elements that are in both sets.)
-        """
-        if not isinstance(other, BaseSet):
-            other = Set(other)
-        if len(self) <= len(other):
-            little, big = self, other
-        else:
-            little, big = other, self
-        common = ifilter(big._data.__contains__, little)
-        return self.__class__(common)
-
-    def __xor__(self, other):
-        """Return the symmetric difference of two sets as a new set.
-
-        (I.e. all elements that are in exactly one of the sets.)
-        """
-        if not isinstance(other, BaseSet):
-            return NotImplemented
-        return self.symmetric_difference(other)
-
-    def symmetric_difference(self, other):
-        """Return the symmetric difference of two sets as a new set.
-
-        (I.e. all elements that are in exactly one of the sets.)
-        """
-        result = self.__class__()
-        data = result._data
-        value = True
-        selfdata = self._data
-        try:
-            otherdata = other._data
-        except AttributeError:
-            otherdata = Set(other)._data
-        for elt in ifilterfalse(otherdata.__contains__, selfdata):
-            data[elt] = value
-        for elt in ifilterfalse(selfdata.__contains__, otherdata):
-            data[elt] = value
-        return result
-
-    def  __sub__(self, other):
-        """Return the difference of two sets as a new Set.
-
-        (I.e. all elements that are in this set and not in the other.)
-        """
-        if not isinstance(other, BaseSet):
-            return NotImplemented
-        return self.difference(other)
-
-    def difference(self, other):
-        """Return the difference of two sets as a new Set.
-
-        (I.e. all elements that are in this set and not in the other.)
-        """
-        result = self.__class__()
-        data = result._data
-        try:
-            otherdata = other._data
-        except AttributeError:
-            otherdata = Set(other)._data
-        value = True
-        for elt in ifilterfalse(otherdata.__contains__, self):
-            data[elt] = value
-        return result
-
-    # Membership test
-
-    def __contains__(self, element):
-        """Report whether an element is a member of a set.
-
-        (Called in response to the expression `element in self'.)
-        """
-        try:
-            return element in self._data
-        except TypeError:
-            transform = getattr(element, "__as_temporarily_immutable__", None)
-            if transform is None:
-                raise # re-raise the TypeError exception we caught
-            return transform() in self._data
-
-    # Subset and superset test
-
-    def issubset(self, other):
-        """Report whether another set contains this set."""
-        self._binary_sanity_check(other)
-        if len(self) > len(other):  # Fast check for obvious cases
-            return False
-        for elt in ifilterfalse(other._data.__contains__, self):
-            return False
-        return True
-
-    def issuperset(self, other):
-        """Report whether this set contains another set."""
-        self._binary_sanity_check(other)
-        if len(self) < len(other):  # Fast check for obvious cases
-            return False
-        for elt in ifilterfalse(self._data.__contains__, other):
-            return False
-        return True
-
-    # Inequality comparisons using the is-subset relation.
-    __le__ = issubset
-    __ge__ = issuperset
-
-    def __lt__(self, other):
-        self._binary_sanity_check(other)
-        return len(self) < len(other) and self.issubset(other)
-
-    def __gt__(self, other):
-        self._binary_sanity_check(other)
-        return len(self) > len(other) and self.issuperset(other)
-
-    # We inherit object.__hash__, so we must deny this explicitly
-    __hash__ = None
-
-    # Assorted helpers
-
-    def _binary_sanity_check(self, other):
-        # Check that the other argument to a binary operation is also
-        # a set, raising a TypeError otherwise.
-        if not isinstance(other, BaseSet):
-            raise TypeError, "Binary operation only permitted between sets"
-
-    def _compute_hash(self):
-        # Calculate hash code for a set by xor'ing the hash codes of
-        # the elements.  This ensures that the hash code does not depend
-        # on the order in which elements are added to the set.  This is
-        # not called __hash__ because a BaseSet should not be hashable;
-        # only an ImmutableSet is hashable.
-        result = 0
-        for elt in self:
-            result ^= hash(elt)
-        return result
-
-    def _update(self, iterable):
-        # The main loop for update() and the subclass __init__() methods.
-        data = self._data
-
-        # Use the fast update() method when a dictionary is available.
-        if isinstance(iterable, BaseSet):
-            data.update(iterable._data)
-            return
-
-        value = True
-
-        if type(iterable) in (list, tuple, xrange):
-            # Optimized: we know that __iter__() and next() can't
-            # raise TypeError, so we can move 'try:' out of the loop.
-            it = iter(iterable)
-            while True:
-                try:
-                    for element in it:
-                        data[element] = value
-                    return
-                except TypeError:
-                    transform = getattr(element, "__as_immutable__", None)
-                    if transform is None:
-                        raise # re-raise the TypeError exception we caught
-                    data[transform()] = value
-        else:
-            # Safe: only catch TypeError where intended
-            for element in iterable:
-                try:
-                    data[element] = value
-                except TypeError:
-                    transform = getattr(element, "__as_immutable__", None)
-                    if transform is None:
-                        raise # re-raise the TypeError exception we caught
-                    data[transform()] = value
-
-
-class ImmutableSet(BaseSet):
-    """Immutable set class."""
-
-    __slots__ = ['_hashcode']
-
-    # BaseSet + hashing
-
-    def __init__(self, iterable=None):
-        """Construct an immutable set from an optional iterable."""
-        self._hashcode = None
-        self._data = {}
-        if iterable is not None:
-            self._update(iterable)
-
-    def __hash__(self):
-        if self._hashcode is None:
-            self._hashcode = self._compute_hash()
-        return self._hashcode
-
-    def __getstate__(self):
-        return self._data, self._hashcode
-
-    def __setstate__(self, state):
-        self._data, self._hashcode = state
-
-class Set(BaseSet):
-    """ Mutable set class."""
-
-    __slots__ = []
-
-    # BaseSet + operations requiring mutability; no hashing
-
-    def __init__(self, iterable=None):
-        """Construct a set from an optional iterable."""
-        self._data = {}
-        if iterable is not None:
-            self._update(iterable)
-
-    def __getstate__(self):
-        # getstate's results are ignored if it is not
-        return self._data,
-
-    def __setstate__(self, data):
-        self._data, = data
-
-    # In-place union, intersection, differences.
-    # Subtle:  The xyz_update() functions deliberately return None,
-    # as do all mutating operations on built-in container types.
-    # The __xyz__ spellings have to return self, though.
-
-    def __ior__(self, other):
-        """Update a set with the union of itself and another."""
-        self._binary_sanity_check(other)
-        self._data.update(other._data)
-        return self
-
-    def union_update(self, other):
-        """Update a set with the union of itself and another."""
-        self._update(other)
-
-    def __iand__(self, other):
-        """Update a set with the intersection of itself and another."""
-        self._binary_sanity_check(other)
-        self._data = (self & other)._data
-        return self
-
-    def intersection_update(self, other):
-        """Update a set with the intersection of itself and another."""
-        if isinstance(other, BaseSet):
-            self &= other
-        else:
-            self._data = (self.intersection(other))._data
-
-    def __ixor__(self, other):
-        """Update a set with the symmetric difference of itself and another."""
-        self._binary_sanity_check(other)
-        self.symmetric_difference_update(other)
-        return self
-
-    def symmetric_difference_update(self, other):
-        """Update a set with the symmetric difference of itself and another."""
-        data = self._data
-        value = True
-        if not isinstance(other, BaseSet):
-            other = Set(other)
-        if self is other:
-            self.clear()
-        for elt in other:
-            if elt in data:
-                del data[elt]
-            else:
-                data[elt] = value
-
-    def __isub__(self, other):
-        """Remove all elements of another set from this set."""
-        self._binary_sanity_check(other)
-        self.difference_update(other)
-        return self
-
-    def difference_update(self, other):
-        """Remove all elements of another set from this set."""
-        data = self._data
-        if not isinstance(other, BaseSet):
-            other = Set(other)
-        if self is other:
-            self.clear()
-        for elt in ifilter(data.__contains__, other):
-            del data[elt]
-
-    # Python dict-like mass mutations: update, clear
-
-    def update(self, iterable):
-        """Add all values from an iterable (such as a list or file)."""
-        self._update(iterable)
-
-    def clear(self):
-        """Remove all elements from this set."""
-        self._data.clear()
-
-    # Single-element mutations: add, remove, discard
-
-    def add(self, element):
-        """Add an element to a set.
-
-        This has no effect if the element is already present.
-        """
-        try:
-            self._data[element] = True
-        except TypeError:
-            transform = getattr(element, "__as_immutable__", None)
-            if transform is None:
-                raise # re-raise the TypeError exception we caught
-            self._data[transform()] = True
-
-    def remove(self, element):
-        """Remove an element from a set; it must be a member.
-
-        If the element is not a member, raise a KeyError.
-        """
-        try:
-            del self._data[element]
-        except TypeError:
-            transform = getattr(element, "__as_temporarily_immutable__", None)
-            if transform is None:
-                raise # re-raise the TypeError exception we caught
-            del self._data[transform()]
-
-    def discard(self, element):
-        """Remove an element from a set if it is a member.
-
-        If the element is not a member, do nothing.
-        """
-        try:
-            self.remove(element)
-        except KeyError:
-            pass
-
-    def pop(self):
-        """Remove and return an arbitrary set element."""
-        return self._data.popitem()[0]
-
-    def __as_immutable__(self):
-        # Return a copy of self as an immutable set
-        return ImmutableSet(self)
-
-    def __as_temporarily_immutable__(self):
-        # Return self wrapped in a temporarily immutable set
-        return _TemporarilyImmutableSet(self)
-
-
-class _TemporarilyImmutableSet(BaseSet):
-    # Wrap a mutable set as if it was temporarily immutable.
-    # This only supplies hashing and equality comparisons.
-
-    def __init__(self, set):
-        self._set = set
-        self._data = set._data  # Needed by ImmutableSet.__eq__()
-
-    def __hash__(self):
-        return self._set._compute_hash()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/sgmllib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/sgmllib.py
deleted file mode 100644
index d6e3102..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/sgmllib.py
+++ /dev/null
@@ -1,553 +0,0 @@
-"""A parser for SGML, using the derived class as a static DTD."""
-
-# XXX This only supports those SGML features used by HTML.
-
-# XXX There should be a way to distinguish between PCDATA (parsed
-# character data -- the normal case), RCDATA (replaceable character
-# data -- only char and entity references and end tags are special)
-# and CDATA (character data -- only end tags are special).  RCDATA is
-# not supported at all.
-
-
-from warnings import warnpy3k
-warnpy3k("the sgmllib module has been removed in Python 3.0",
-         stacklevel=2)
-del warnpy3k
-
-import markupbase
-import re
-
-__all__ = ["SGMLParser", "SGMLParseError"]
-
-# Regular expressions used for parsing
-
-interesting = re.compile('[&<]')
-incomplete = re.compile('&([a-zA-Z][a-zA-Z0-9]*|#[0-9]*)?|'
-                           '<([a-zA-Z][^<>]*|'
-                              '/([a-zA-Z][^<>]*)?|'
-                              '![^<>]*)?')
-
-entityref = re.compile('&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]')
-charref = re.compile('&#([0-9]+)[^0-9]')
-
-starttagopen = re.compile('<[>a-zA-Z]')
-shorttagopen = re.compile('<[a-zA-Z][-.a-zA-Z0-9]*/')
-shorttag = re.compile('<([a-zA-Z][-.a-zA-Z0-9]*)/([^/]*)/')
-piclose = re.compile('>')
-endbracket = re.compile('[<>]')
-tagfind = re.compile('[a-zA-Z][-_.a-zA-Z0-9]*')
-attrfind = re.compile(
-    r'\s*([a-zA-Z_][-:.a-zA-Z_0-9]*)(\s*=\s*'
-    r'(\'[^\']*\'|"[^"]*"|[][\-a-zA-Z0-9./,:;+*%?!&$\(\)_#=~\'"@]*))?')
-
-
-class SGMLParseError(RuntimeError):
-    """Exception raised for all parse errors."""
-    pass
-
-
-# SGML parser base class -- find tags and call handler functions.
-# Usage: p = SGMLParser(); p.feed(data); ...; p.close().
-# The dtd is defined by deriving a class which defines methods
-# with special names to handle tags: start_foo and end_foo to handle
-# <foo> and </foo>, respectively, or do_foo to handle <foo> by itself.
-# (Tags are converted to lower case for this purpose.)  The data
-# between tags is passed to the parser by calling self.handle_data()
-# with some data as argument (the data may be split up in arbitrary
-# chunks).  Entity references are passed by calling
-# self.handle_entityref() with the entity reference as argument.
-
-class SGMLParser(markupbase.ParserBase):
-    # Definition of entities -- derived classes may override
-    entity_or_charref = re.compile('&(?:'
-      '([a-zA-Z][-.a-zA-Z0-9]*)|#([0-9]+)'
-      ')(;?)')
-
-    def __init__(self, verbose=0):
-        """Initialize and reset this instance."""
-        self.verbose = verbose
-        self.reset()
-
-    def reset(self):
-        """Reset this instance. Loses all unprocessed data."""
-        self.__starttag_text = None
-        self.rawdata = ''
-        self.stack = []
-        self.lasttag = '???'
-        self.nomoretags = 0
-        self.literal = 0
-        markupbase.ParserBase.reset(self)
-
-    def setnomoretags(self):
-        """Enter literal mode (CDATA) till EOF.
-
-        Intended for derived classes only.
-        """
-        self.nomoretags = self.literal = 1
-
-    def setliteral(self, *args):
-        """Enter literal mode (CDATA).
-
-        Intended for derived classes only.
-        """
-        self.literal = 1
-
-    def feed(self, data):
-        """Feed some data to the parser.
-
-        Call this as often as you want, with as little or as much text
-        as you want (may include '\n').  (This just saves the text,
-        all the processing is done by goahead().)
-        """
-
-        self.rawdata = self.rawdata + data
-        self.goahead(0)
-
-    def close(self):
-        """Handle the remaining data."""
-        self.goahead(1)
-
-    def error(self, message):
-        raise SGMLParseError(message)
-
-    # Internal -- handle data as far as reasonable.  May leave state
-    # and data to be processed by a subsequent call.  If 'end' is
-    # true, force handling all data as if followed by EOF marker.
-    def goahead(self, end):
-        rawdata = self.rawdata
-        i = 0
-        n = len(rawdata)
-        while i < n:
-            if self.nomoretags:
-                self.handle_data(rawdata[i:n])
-                i = n
-                break
-            match = interesting.search(rawdata, i)
-            if match: j = match.start()
-            else: j = n
-            if i < j:
-                self.handle_data(rawdata[i:j])
-            i = j
-            if i == n: break
-            if rawdata[i] == '<':
-                if starttagopen.match(rawdata, i):
-                    if self.literal:
-                        self.handle_data(rawdata[i])
-                        i = i+1
-                        continue
-                    k = self.parse_starttag(i)
-                    if k < 0: break
-                    i = k
-                    continue
-                if rawdata.startswith("</", i):
-                    k = self.parse_endtag(i)
-                    if k < 0: break
-                    i = k
-                    self.literal = 0
-                    continue
-                if self.literal:
-                    if n > (i + 1):
-                        self.handle_data("<")
-                        i = i+1
-                    else:
-                        # incomplete
-                        break
-                    continue
-                if rawdata.startswith("<!--", i):
-                        # Strictly speaking, a comment is --.*--
-                        # within a declaration tag <!...>.
-                        # This should be removed,
-                        # and comments handled only in parse_declaration.
-                    k = self.parse_comment(i)
-                    if k < 0: break
-                    i = k
-                    continue
-                if rawdata.startswith("<?", i):
-                    k = self.parse_pi(i)
-                    if k < 0: break
-                    i = i+k
-                    continue
-                if rawdata.startswith("<!", i):
-                    # This is some sort of declaration; in "HTML as
-                    # deployed," this should only be the document type
-                    # declaration ("<!DOCTYPE html...>").
-                    k = self.parse_declaration(i)
-                    if k < 0: break
-                    i = k
-                    continue
-            elif rawdata[i] == '&':
-                if self.literal:
-                    self.handle_data(rawdata[i])
-                    i = i+1
-                    continue
-                match = charref.match(rawdata, i)
-                if match:
-                    name = match.group(1)
-                    self.handle_charref(name)
-                    i = match.end(0)
-                    if rawdata[i-1] != ';': i = i-1
-                    continue
-                match = entityref.match(rawdata, i)
-                if match:
-                    name = match.group(1)
-                    self.handle_entityref(name)
-                    i = match.end(0)
-                    if rawdata[i-1] != ';': i = i-1
-                    continue
-            else:
-                self.error('neither < nor & ??')
-            # We get here only if incomplete matches but
-            # nothing else
-            match = incomplete.match(rawdata, i)
-            if not match:
-                self.handle_data(rawdata[i])
-                i = i+1
-                continue
-            j = match.end(0)
-            if j == n:
-                break # Really incomplete
-            self.handle_data(rawdata[i:j])
-            i = j
-        # end while
-        if end and i < n:
-            self.handle_data(rawdata[i:n])
-            i = n
-        self.rawdata = rawdata[i:]
-        # XXX if end: check for empty stack
-
-    # Extensions for the DOCTYPE scanner:
-    _decl_otherchars = '='
-
-    # Internal -- parse processing instr, return length or -1 if not terminated
-    def parse_pi(self, i):
-        rawdata = self.rawdata
-        if rawdata[i:i+2] != '<?':
-            self.error('unexpected call to parse_pi()')
-        match = piclose.search(rawdata, i+2)
-        if not match:
-            return -1
-        j = match.start(0)
-        self.handle_pi(rawdata[i+2: j])
-        j = match.end(0)
-        return j-i
-
-    def get_starttag_text(self):
-        return self.__starttag_text
-
-    # Internal -- handle starttag, return length or -1 if not terminated
-    def parse_starttag(self, i):
-        self.__starttag_text = None
-        start_pos = i
-        rawdata = self.rawdata
-        if shorttagopen.match(rawdata, i):
-            # SGML shorthand: <tag/data/ == <tag>data</tag>
-            # XXX Can data contain &... (entity or char refs)?
-            # XXX Can data contain < or > (tag characters)?
-            # XXX Can there be whitespace before the first /?
-            match = shorttag.match(rawdata, i)
-            if not match:
-                return -1
-            tag, data = match.group(1, 2)
-            self.__starttag_text = '<%s/' % tag
-            tag = tag.lower()
-            k = match.end(0)
-            self.finish_shorttag(tag, data)
-            self.__starttag_text = rawdata[start_pos:match.end(1) + 1]
-            return k
-        # XXX The following should skip matching quotes (' or ")
-        # As a shortcut way to exit, this isn't so bad, but shouldn't
-        # be used to locate the actual end of the start tag since the
-        # < or > characters may be embedded in an attribute value.
-        match = endbracket.search(rawdata, i+1)
-        if not match:
-            return -1
-        j = match.start(0)
-        # Now parse the data between i+1 and j into a tag and attrs
-        attrs = []
-        if rawdata[i:i+2] == '<>':
-            # SGML shorthand: <> == <last open tag seen>
-            k = j
-            tag = self.lasttag
-        else:
-            match = tagfind.match(rawdata, i+1)
-            if not match:
-                self.error('unexpected call to parse_starttag')
-            k = match.end(0)
-            tag = rawdata[i+1:k].lower()
-            self.lasttag = tag
-        while k < j:
-            match = attrfind.match(rawdata, k)
-            if not match: break
-            attrname, rest, attrvalue = match.group(1, 2, 3)
-            if not rest:
-                attrvalue = attrname
-            else:
-                if (attrvalue[:1] == "'" == attrvalue[-1:] or
-                    attrvalue[:1] == '"' == attrvalue[-1:]):
-                    # strip quotes
-                    attrvalue = attrvalue[1:-1]
-                attrvalue = self.entity_or_charref.sub(
-                    self._convert_ref, attrvalue)
-            attrs.append((attrname.lower(), attrvalue))
-            k = match.end(0)
-        if rawdata[j] == '>':
-            j = j+1
-        self.__starttag_text = rawdata[start_pos:j]
-        self.finish_starttag(tag, attrs)
-        return j
-
-    # Internal -- convert entity or character reference
-    def _convert_ref(self, match):
-        if match.group(2):
-            return self.convert_charref(match.group(2)) or \
-                '&#%s%s' % match.groups()[1:]
-        elif match.group(3):
-            return self.convert_entityref(match.group(1)) or \
-                '&%s;' % match.group(1)
-        else:
-            return '&%s' % match.group(1)
-
-    # Internal -- parse endtag
-    def parse_endtag(self, i):
-        rawdata = self.rawdata
-        match = endbracket.search(rawdata, i+1)
-        if not match:
-            return -1
-        j = match.start(0)
-        tag = rawdata[i+2:j].strip().lower()
-        if rawdata[j] == '>':
-            j = j+1
-        self.finish_endtag(tag)
-        return j
-
-    # Internal -- finish parsing of <tag/data/ (same as <tag>data</tag>)
-    def finish_shorttag(self, tag, data):
-        self.finish_starttag(tag, [])
-        self.handle_data(data)
-        self.finish_endtag(tag)
-
-    # Internal -- finish processing of start tag
-    # Return -1 for unknown tag, 0 for open-only tag, 1 for balanced tag
-    def finish_starttag(self, tag, attrs):
-        try:
-            method = getattr(self, 'start_' + tag)
-        except AttributeError:
-            try:
-                method = getattr(self, 'do_' + tag)
-            except AttributeError:
-                self.unknown_starttag(tag, attrs)
-                return -1
-            else:
-                self.handle_starttag(tag, method, attrs)
-                return 0
-        else:
-            self.stack.append(tag)
-            self.handle_starttag(tag, method, attrs)
-            return 1
-
-    # Internal -- finish processing of end tag
-    def finish_endtag(self, tag):
-        if not tag:
-            found = len(self.stack) - 1
-            if found < 0:
-                self.unknown_endtag(tag)
-                return
-        else:
-            if tag not in self.stack:
-                try:
-                    method = getattr(self, 'end_' + tag)
-                except AttributeError:
-                    self.unknown_endtag(tag)
-                else:
-                    self.report_unbalanced(tag)
-                return
-            found = len(self.stack)
-            for i in range(found):
-                if self.stack[i] == tag: found = i
-        while len(self.stack) > found:
-            tag = self.stack[-1]
-            try:
-                method = getattr(self, 'end_' + tag)
-            except AttributeError:
-                method = None
-            if method:
-                self.handle_endtag(tag, method)
-            else:
-                self.unknown_endtag(tag)
-            del self.stack[-1]
-
-    # Overridable -- handle start tag
-    def handle_starttag(self, tag, method, attrs):
-        method(attrs)
-
-    # Overridable -- handle end tag
-    def handle_endtag(self, tag, method):
-        method()
-
-    # Example -- report an unbalanced </...> tag.
-    def report_unbalanced(self, tag):
-        if self.verbose:
-            print '*** Unbalanced </' + tag + '>'
-            print '*** Stack:', self.stack
-
-    def convert_charref(self, name):
-        """Convert character reference, may be overridden."""
-        try:
-            n = int(name)
-        except ValueError:
-            return
-        if not 0 <= n <= 127:
-            return
-        return self.convert_codepoint(n)
-
-    def convert_codepoint(self, codepoint):
-        return chr(codepoint)
-
-    def handle_charref(self, name):
-        """Handle character reference, no need to override."""
-        replacement = self.convert_charref(name)
-        if replacement is None:
-            self.unknown_charref(name)
-        else:
-            self.handle_data(replacement)
-
-    # Definition of entities -- derived classes may override
-    entitydefs = \
-            {'lt': '<', 'gt': '>', 'amp': '&', 'quot': '"', 'apos': '\''}
-
-    def convert_entityref(self, name):
-        """Convert entity references.
-
-        As an alternative to overriding this method; one can tailor the
-        results by setting up the self.entitydefs mapping appropriately.
-        """
-        table = self.entitydefs
-        if name in table:
-            return table[name]
-        else:
-            return
-
-    def handle_entityref(self, name):
-        """Handle entity references, no need to override."""
-        replacement = self.convert_entityref(name)
-        if replacement is None:
-            self.unknown_entityref(name)
-        else:
-            self.handle_data(replacement)
-
-    # Example -- handle data, should be overridden
-    def handle_data(self, data):
-        pass
-
-    # Example -- handle comment, could be overridden
-    def handle_comment(self, data):
-        pass
-
-    # Example -- handle declaration, could be overridden
-    def handle_decl(self, decl):
-        pass
-
-    # Example -- handle processing instruction, could be overridden
-    def handle_pi(self, data):
-        pass
-
-    # To be overridden -- handlers for unknown objects
-    def unknown_starttag(self, tag, attrs): pass
-    def unknown_endtag(self, tag): pass
-    def unknown_charref(self, ref): pass
-    def unknown_entityref(self, ref): pass
-
-
-class TestSGMLParser(SGMLParser):
-
-    def __init__(self, verbose=0):
-        self.testdata = ""
-        SGMLParser.__init__(self, verbose)
-
-    def handle_data(self, data):
-        self.testdata = self.testdata + data
-        if len(repr(self.testdata)) >= 70:
-            self.flush()
-
-    def flush(self):
-        data = self.testdata
-        if data:
-            self.testdata = ""
-            print 'data:', repr(data)
-
-    def handle_comment(self, data):
-        self.flush()
-        r = repr(data)
-        if len(r) > 68:
-            r = r[:32] + '...' + r[-32:]
-        print 'comment:', r
-
-    def unknown_starttag(self, tag, attrs):
-        self.flush()
-        if not attrs:
-            print 'start tag: <' + tag + '>'
-        else:
-            print 'start tag: <' + tag,
-            for name, value in attrs:
-                print name + '=' + '"' + value + '"',
-            print '>'
-
-    def unknown_endtag(self, tag):
-        self.flush()
-        print 'end tag: </' + tag + '>'
-
-    def unknown_entityref(self, ref):
-        self.flush()
-        print '*** unknown entity ref: &' + ref + ';'
-
-    def unknown_charref(self, ref):
-        self.flush()
-        print '*** unknown char ref: &#' + ref + ';'
-
-    def unknown_decl(self, data):
-        self.flush()
-        print '*** unknown decl: [' + data + ']'
-
-    def close(self):
-        SGMLParser.close(self)
-        self.flush()
-
-
-def test(args = None):
-    import sys
-
-    if args is None:
-        args = sys.argv[1:]
-
-    if args and args[0] == '-s':
-        args = args[1:]
-        klass = SGMLParser
-    else:
-        klass = TestSGMLParser
-
-    if args:
-        file = args[0]
-    else:
-        file = 'test.html'
-
-    if file == '-':
-        f = sys.stdin
-    else:
-        try:
-            f = open(file, 'r')
-        except IOError, msg:
-            print file, ":", msg
-            sys.exit(1)
-
-    data = f.read()
-    if f is not sys.stdin:
-        f.close()
-
-    x = klass()
-    for c in data:
-        x.feed(c)
-    x.close()
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/sha.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/sha.py
deleted file mode 100644
index 93a17bc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/sha.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# $Id$
-#
-#  Copyright (C) 2005   Gregory P. Smith (greg@krypto.org)
-#  Licensed to PSF under a Contributor Agreement.
-
-import warnings
-warnings.warn("the sha module is deprecated; use the hashlib module instead",
-                DeprecationWarning, 2)
-
-from hashlib import sha1 as sha
-new = sha
-
-blocksize = 1        # legacy value (wrong in any useful sense)
-digest_size = 20
-digestsize = 20
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/shelve.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/shelve.py
deleted file mode 100644
index 3bea146..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/shelve.py
+++ /dev/null
@@ -1,239 +0,0 @@
-"""Manage shelves of pickled objects.
-
-A "shelf" is a persistent, dictionary-like object.  The difference
-with dbm databases is that the values (not the keys!) in a shelf can
-be essentially arbitrary Python objects -- anything that the "pickle"
-module can handle.  This includes most class instances, recursive data
-types, and objects containing lots of shared sub-objects.  The keys
-are ordinary strings.
-
-To summarize the interface (key is a string, data is an arbitrary
-object):
-
-        import shelve
-        d = shelve.open(filename) # open, with (g)dbm filename -- no suffix
-
-        d[key] = data   # store data at key (overwrites old data if
-                        # using an existing key)
-        data = d[key]   # retrieve a COPY of the data at key (raise
-                        # KeyError if no such key) -- NOTE that this
-                        # access returns a *copy* of the entry!
-        del d[key]      # delete data stored at key (raises KeyError
-                        # if no such key)
-        flag = d.has_key(key)   # true if the key exists; same as "key in d"
-        list = d.keys() # a list of all existing keys (slow!)
-
-        d.close()       # close it
-
-Dependent on the implementation, closing a persistent dictionary may
-or may not be necessary to flush changes to disk.
-
-Normally, d[key] returns a COPY of the entry.  This needs care when
-mutable entries are mutated: for example, if d[key] is a list,
-        d[key].append(anitem)
-does NOT modify the entry d[key] itself, as stored in the persistent
-mapping -- it only modifies the copy, which is then immediately
-discarded, so that the append has NO effect whatsoever.  To append an
-item to d[key] in a way that will affect the persistent mapping, use:
-        data = d[key]
-        data.append(anitem)
-        d[key] = data
-
-To avoid the problem with mutable entries, you may pass the keyword
-argument writeback=True in the call to shelve.open.  When you use:
-        d = shelve.open(filename, writeback=True)
-then d keeps a cache of all entries you access, and writes them all back
-to the persistent mapping when you call d.close().  This ensures that
-such usage as d[key].append(anitem) works as intended.
-
-However, using keyword argument writeback=True may consume vast amount
-of memory for the cache, and it may make d.close() very slow, if you
-access many of d's entries after opening it in this way: d has no way to
-check which of the entries you access are mutable and/or which ones you
-actually mutate, so it must cache, and write back at close, all of the
-entries that you access.  You can call d.sync() to write back all the
-entries in the cache, and empty the cache (d.sync() also synchronizes
-the persistent dictionary on disk, if feasible).
-"""
-
-# Try using cPickle and cStringIO if available.
-
-try:
-    from cPickle import Pickler, Unpickler
-except ImportError:
-    from pickle import Pickler, Unpickler
-
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-import UserDict
-
-__all__ = ["Shelf","BsdDbShelf","DbfilenameShelf","open"]
-
-class _ClosedDict(UserDict.DictMixin):
-    'Marker for a closed dict.  Access attempts raise a ValueError.'
-
-    def closed(self, *args):
-        raise ValueError('invalid operation on closed shelf')
-    __getitem__ = __setitem__ = __delitem__ = keys = closed
-
-    def __repr__(self):
-        return '<Closed Dictionary>'
-
-class Shelf(UserDict.DictMixin):
-    """Base class for shelf implementations.
-
-    This is initialized with a dictionary-like object.
-    See the module's __doc__ string for an overview of the interface.
-    """
-
-    def __init__(self, dict, protocol=None, writeback=False):
-        self.dict = dict
-        if protocol is None:
-            protocol = 0
-        self._protocol = protocol
-        self.writeback = writeback
-        self.cache = {}
-
-    def keys(self):
-        return self.dict.keys()
-
-    def __len__(self):
-        return len(self.dict)
-
-    def has_key(self, key):
-        return key in self.dict
-
-    def __contains__(self, key):
-        return key in self.dict
-
-    def get(self, key, default=None):
-        if key in self.dict:
-            return self[key]
-        return default
-
-    def __getitem__(self, key):
-        try:
-            value = self.cache[key]
-        except KeyError:
-            f = StringIO(self.dict[key])
-            value = Unpickler(f).load()
-            if self.writeback:
-                self.cache[key] = value
-        return value
-
-    def __setitem__(self, key, value):
-        if self.writeback:
-            self.cache[key] = value
-        f = StringIO()
-        p = Pickler(f, self._protocol)
-        p.dump(value)
-        self.dict[key] = f.getvalue()
-
-    def __delitem__(self, key):
-        del self.dict[key]
-        try:
-            del self.cache[key]
-        except KeyError:
-            pass
-
-    def close(self):
-        self.sync()
-        try:
-            self.dict.close()
-        except AttributeError:
-            pass
-        # Catch errors that may happen when close is called from __del__
-        # because CPython is in interpreter shutdown.
-        try:
-            self.dict = _ClosedDict()
-        except (NameError, TypeError):
-            self.dict = None
-
-    def __del__(self):
-        if not hasattr(self, 'writeback'):
-            # __init__ didn't succeed, so don't bother closing
-            return
-        self.close()
-
-    def sync(self):
-        if self.writeback and self.cache:
-            self.writeback = False
-            for key, entry in self.cache.iteritems():
-                self[key] = entry
-            self.writeback = True
-            self.cache = {}
-        if hasattr(self.dict, 'sync'):
-            self.dict.sync()
-
-
-class BsdDbShelf(Shelf):
-    """Shelf implementation using the "BSD" db interface.
-
-    This adds methods first(), next(), previous(), last() and
-    set_location() that have no counterpart in [g]dbm databases.
-
-    The actual database must be opened using one of the "bsddb"
-    modules "open" routines (i.e. bsddb.hashopen, bsddb.btopen or
-    bsddb.rnopen) and passed to the constructor.
-
-    See the module's __doc__ string for an overview of the interface.
-    """
-
-    def __init__(self, dict, protocol=None, writeback=False):
-        Shelf.__init__(self, dict, protocol, writeback)
-
-    def set_location(self, key):
-        (key, value) = self.dict.set_location(key)
-        f = StringIO(value)
-        return (key, Unpickler(f).load())
-
-    def next(self):
-        (key, value) = self.dict.next()
-        f = StringIO(value)
-        return (key, Unpickler(f).load())
-
-    def previous(self):
-        (key, value) = self.dict.previous()
-        f = StringIO(value)
-        return (key, Unpickler(f).load())
-
-    def first(self):
-        (key, value) = self.dict.first()
-        f = StringIO(value)
-        return (key, Unpickler(f).load())
-
-    def last(self):
-        (key, value) = self.dict.last()
-        f = StringIO(value)
-        return (key, Unpickler(f).load())
-
-
-class DbfilenameShelf(Shelf):
-    """Shelf implementation using the "anydbm" generic dbm interface.
-
-    This is initialized with the filename for the dbm database.
-    See the module's __doc__ string for an overview of the interface.
-    """
-
-    def __init__(self, filename, flag='c', protocol=None, writeback=False):
-        import anydbm
-        Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback)
-
-
-def open(filename, flag='c', protocol=None, writeback=False):
-    """Open a persistent dictionary for reading and writing.
-
-    The filename parameter is the base filename for the underlying
-    database.  As a side-effect, an extension may be added to the
-    filename and more than one file may be created.  The optional flag
-    parameter has the same interpretation as the flag parameter of
-    anydbm.open(). The optional protocol parameter specifies the
-    version of the pickle protocol (0, 1, or 2).
-
-    See the module's __doc__ string for an overview of the interface.
-    """
-
-    return DbfilenameShelf(filename, flag, protocol, writeback)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/shlex.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/shlex.py
deleted file mode 100644
index 6deeff4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/shlex.py
+++ /dev/null
@@ -1,292 +0,0 @@
-# -*- coding: iso-8859-1 -*-
-"""A lexical analyzer class for simple shell-like syntaxes."""
-
-# Module and documentation by Eric S. Raymond, 21 Dec 1998
-# Input stacking and error message cleanup added by ESR, March 2000
-# push_source() and pop_source() made explicit by ESR, January 2001.
-# Posix compliance, split(), string arguments, and
-# iterator interface by Gustavo Niemeyer, April 2003.
-
-import os.path
-import sys
-from collections import deque
-
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-__all__ = ["shlex", "split"]
-
-class shlex:
-    "A lexical analyzer class for simple shell-like syntaxes."
-    def __init__(self, instream=None, infile=None, posix=False):
-        if isinstance(instream, basestring):
-            instream = StringIO(instream)
-        if instream is not None:
-            self.instream = instream
-            self.infile = infile
-        else:
-            self.instream = sys.stdin
-            self.infile = None
-        self.posix = posix
-        if posix:
-            self.eof = None
-        else:
-            self.eof = ''
-        self.commenters = '#'
-        self.wordchars = ('abcdfeghijklmnopqrstuvwxyz'
-                          'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_')
-        if self.posix:
-            self.wordchars += ('ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ'
-                               'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ')
-        self.whitespace = ' \t\r\n'
-        self.whitespace_split = False
-        self.quotes = '\'"'
-        self.escape = '\\'
-        self.escapedquotes = '"'
-        self.state = ' '
-        self.pushback = deque()
-        self.lineno = 1
-        self.debug = 0
-        self.token = ''
-        self.filestack = deque()
-        self.source = None
-        if self.debug:
-            print 'shlex: reading from %s, line %d' \
-                  % (self.instream, self.lineno)
-
-    def push_token(self, tok):
-        "Push a token onto the stack popped by the get_token method"
-        if self.debug >= 1:
-            print "shlex: pushing token " + repr(tok)
-        self.pushback.appendleft(tok)
-
-    def push_source(self, newstream, newfile=None):
-        "Push an input source onto the lexer's input source stack."
-        if isinstance(newstream, basestring):
-            newstream = StringIO(newstream)
-        self.filestack.appendleft((self.infile, self.instream, self.lineno))
-        self.infile = newfile
-        self.instream = newstream
-        self.lineno = 1
-        if self.debug:
-            if newfile is not None:
-                print 'shlex: pushing to file %s' % (self.infile,)
-            else:
-                print 'shlex: pushing to stream %s' % (self.instream,)
-
-    def pop_source(self):
-        "Pop the input source stack."
-        self.instream.close()
-        (self.infile, self.instream, self.lineno) = self.filestack.popleft()
-        if self.debug:
-            print 'shlex: popping to %s, line %d' \
-                  % (self.instream, self.lineno)
-        self.state = ' '
-
-    def get_token(self):
-        "Get a token from the input stream (or from stack if it's nonempty)"
-        if self.pushback:
-            tok = self.pushback.popleft()
-            if self.debug >= 1:
-                print "shlex: popping token " + repr(tok)
-            return tok
-        # No pushback.  Get a token.
-        raw = self.read_token()
-        # Handle inclusions
-        if self.source is not None:
-            while raw == self.source:
-                spec = self.sourcehook(self.read_token())
-                if spec:
-                    (newfile, newstream) = spec
-                    self.push_source(newstream, newfile)
-                raw = self.get_token()
-        # Maybe we got EOF instead?
-        while raw == self.eof:
-            if not self.filestack:
-                return self.eof
-            else:
-                self.pop_source()
-                raw = self.get_token()
-        # Neither inclusion nor EOF
-        if self.debug >= 1:
-            if raw != self.eof:
-                print "shlex: token=" + repr(raw)
-            else:
-                print "shlex: token=EOF"
-        return raw
-
-    def read_token(self):
-        quoted = False
-        escapedstate = ' '
-        while True:
-            nextchar = self.instream.read(1)
-            if nextchar == '\n':
-                self.lineno = self.lineno + 1
-            if self.debug >= 3:
-                print "shlex: in state", repr(self.state), \
-                      "I see character:", repr(nextchar)
-            if self.state is None:
-                self.token = ''        # past end of file
-                break
-            elif self.state == ' ':
-                if not nextchar:
-                    self.state = None  # end of file
-                    break
-                elif nextchar in self.whitespace:
-                    if self.debug >= 2:
-                        print "shlex: I see whitespace in whitespace state"
-                    if self.token or (self.posix and quoted):
-                        break   # emit current token
-                    else:
-                        continue
-                elif nextchar in self.commenters:
-                    self.instream.readline()
-                    self.lineno = self.lineno + 1
-                elif self.posix and nextchar in self.escape:
-                    escapedstate = 'a'
-                    self.state = nextchar
-                elif nextchar in self.wordchars:
-                    self.token = nextchar
-                    self.state = 'a'
-                elif nextchar in self.quotes:
-                    if not self.posix:
-                        self.token = nextchar
-                    self.state = nextchar
-                elif self.whitespace_split:
-                    self.token = nextchar
-                    self.state = 'a'
-                else:
-                    self.token = nextchar
-                    if self.token or (self.posix and quoted):
-                        break   # emit current token
-                    else:
-                        continue
-            elif self.state in self.quotes:
-                quoted = True
-                if not nextchar:      # end of file
-                    if self.debug >= 2:
-                        print "shlex: I see EOF in quotes state"
-                    # XXX what error should be raised here?
-                    raise ValueError, "No closing quotation"
-                if nextchar == self.state:
-                    if not self.posix:
-                        self.token = self.token + nextchar
-                        self.state = ' '
-                        break
-                    else:
-                        self.state = 'a'
-                elif self.posix and nextchar in self.escape and \
-                     self.state in self.escapedquotes:
-                    escapedstate = self.state
-                    self.state = nextchar
-                else:
-                    self.token = self.token + nextchar
-            elif self.state in self.escape:
-                if not nextchar:      # end of file
-                    if self.debug >= 2:
-                        print "shlex: I see EOF in escape state"
-                    # XXX what error should be raised here?
-                    raise ValueError, "No escaped character"
-                # In posix shells, only the quote itself or the escape
-                # character may be escaped within quotes.
-                if escapedstate in self.quotes and \
-                   nextchar != self.state and nextchar != escapedstate:
-                    self.token = self.token + self.state
-                self.token = self.token + nextchar
-                self.state = escapedstate
-            elif self.state == 'a':
-                if not nextchar:
-                    self.state = None   # end of file
-                    break
-                elif nextchar in self.whitespace:
-                    if self.debug >= 2:
-                        print "shlex: I see whitespace in word state"
-                    self.state = ' '
-                    if self.token or (self.posix and quoted):
-                        break   # emit current token
-                    else:
-                        continue
-                elif nextchar in self.commenters:
-                    self.instream.readline()
-                    self.lineno = self.lineno + 1
-                    if self.posix:
-                        self.state = ' '
-                        if self.token or (self.posix and quoted):
-                            break   # emit current token
-                        else:
-                            continue
-                elif self.posix and nextchar in self.quotes:
-                    self.state = nextchar
-                elif self.posix and nextchar in self.escape:
-                    escapedstate = 'a'
-                    self.state = nextchar
-                elif nextchar in self.wordchars or nextchar in self.quotes \
-                    or self.whitespace_split:
-                    self.token = self.token + nextchar
-                else:
-                    self.pushback.appendleft(nextchar)
-                    if self.debug >= 2:
-                        print "shlex: I see punctuation in word state"
-                    self.state = ' '
-                    if self.token:
-                        break   # emit current token
-                    else:
-                        continue
-        result = self.token
-        self.token = ''
-        if self.posix and not quoted and result == '':
-            result = None
-        if self.debug > 1:
-            if result:
-                print "shlex: raw token=" + repr(result)
-            else:
-                print "shlex: raw token=EOF"
-        return result
-
-    def sourcehook(self, newfile):
-        "Hook called on a filename to be sourced."
-        if newfile[0] == '"':
-            newfile = newfile[1:-1]
-        # This implements cpp-like semantics for relative-path inclusion.
-        if isinstance(self.infile, basestring) and not os.path.isabs(newfile):
-            newfile = os.path.join(os.path.dirname(self.infile), newfile)
-        return (newfile, open(newfile, "r"))
-
-    def error_leader(self, infile=None, lineno=None):
-        "Emit a C-compiler-like, Emacs-friendly error-message leader."
-        if infile is None:
-            infile = self.infile
-        if lineno is None:
-            lineno = self.lineno
-        return "\"%s\", line %d: " % (infile, lineno)
-
-    def __iter__(self):
-        return self
-
-    def next(self):
-        token = self.get_token()
-        if token == self.eof:
-            raise StopIteration
-        return token
-
-def split(s, comments=False, posix=True):
-    lex = shlex(s, posix=posix)
-    lex.whitespace_split = True
-    if not comments:
-        lex.commenters = ''
-    return list(lex)
-
-if __name__ == '__main__':
-    if len(sys.argv) == 1:
-        lexer = shlex()
-    else:
-        file = sys.argv[1]
-        lexer = shlex(open(file), file)
-    while 1:
-        tt = lexer.get_token()
-        if tt:
-            print "Token: " + repr(tt)
-        else:
-            break
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/shutil.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/shutil.py
deleted file mode 100644
index 65366b8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/shutil.py
+++ /dev/null
@@ -1,552 +0,0 @@
-"""Utility functions for copying and archiving files and directory trees.
-
-XXX The functions here don't copy the resource fork or other metadata on Mac.
-
-"""
-
-import os
-import sys
-import stat
-from os.path import abspath
-import fnmatch
-import collections
-import errno
-
-try:
-    from pwd import getpwnam
-except ImportError:
-    getpwnam = None
-
-try:
-    from grp import getgrnam
-except ImportError:
-    getgrnam = None
-
-__all__ = ["copyfileobj", "copyfile", "copymode", "copystat", "copy", "copy2",
-           "copytree", "move", "rmtree", "Error", "SpecialFileError",
-           "ExecError", "make_archive", "get_archive_formats",
-           "register_archive_format", "unregister_archive_format"]
-
-class Error(EnvironmentError):
-    pass
-
-class SpecialFileError(EnvironmentError):
-    """Raised when trying to do a kind of operation (e.g. copying) which is
-    not supported on a special file (e.g. a named pipe)"""
-
-class ExecError(EnvironmentError):
-    """Raised when a command could not be executed"""
-
-try:
-    WindowsError
-except NameError:
-    WindowsError = None
-
-def copyfileobj(fsrc, fdst, length=16*1024):
-    """copy data from file-like object fsrc to file-like object fdst"""
-    while 1:
-        buf = fsrc.read(length)
-        if not buf:
-            break
-        fdst.write(buf)
-
-def _samefile(src, dst):
-    # Macintosh, Unix.
-    if hasattr(os.path, 'samefile'):
-        try:
-            return os.path.samefile(src, dst)
-        except OSError:
-            return False
-
-    # All other platforms: check for same pathname.
-    return (os.path.normcase(os.path.abspath(src)) ==
-            os.path.normcase(os.path.abspath(dst)))
-
-def copyfile(src, dst):
-    """Copy data from src to dst"""
-    if _samefile(src, dst):
-        raise Error("`%s` and `%s` are the same file" % (src, dst))
-
-    for fn in [src, dst]:
-        try:
-            st = os.stat(fn)
-        except OSError:
-            # File most likely does not exist
-            pass
-        else:
-            # XXX What about other special files? (sockets, devices...)
-            if stat.S_ISFIFO(st.st_mode):
-                raise SpecialFileError("`%s` is a named pipe" % fn)
-
-    with open(src, 'rb') as fsrc:
-        with open(dst, 'wb') as fdst:
-            copyfileobj(fsrc, fdst)
-
-def copymode(src, dst):
-    """Copy mode bits from src to dst"""
-    if hasattr(os, 'chmod'):
-        st = os.stat(src)
-        mode = stat.S_IMODE(st.st_mode)
-        os.chmod(dst, mode)
-
-def copystat(src, dst):
-    """Copy all stat info (mode bits, atime, mtime, flags) from src to dst"""
-    st = os.stat(src)
-    mode = stat.S_IMODE(st.st_mode)
-    if hasattr(os, 'utime'):
-        os.utime(dst, (st.st_atime, st.st_mtime))
-    if hasattr(os, 'chmod'):
-        os.chmod(dst, mode)
-    if hasattr(os, 'chflags') and hasattr(st, 'st_flags'):
-        try:
-            os.chflags(dst, st.st_flags)
-        except OSError, why:
-            if (not hasattr(errno, 'EOPNOTSUPP') or
-                why.errno != errno.EOPNOTSUPP):
-                raise
-
-def copy(src, dst):
-    """Copy data and mode bits ("cp src dst").
-
-    The destination may be a directory.
-
-    """
-    if os.path.isdir(dst):
-        dst = os.path.join(dst, os.path.basename(src))
-    copyfile(src, dst)
-    copymode(src, dst)
-
-def copy2(src, dst):
-    """Copy data and all stat info ("cp -p src dst").
-
-    The destination may be a directory.
-
-    """
-    if os.path.isdir(dst):
-        dst = os.path.join(dst, os.path.basename(src))
-    copyfile(src, dst)
-    copystat(src, dst)
-
-def ignore_patterns(*patterns):
-    """Function that can be used as copytree() ignore parameter.
-
-    Patterns is a sequence of glob-style patterns
-    that are used to exclude files"""
-    def _ignore_patterns(path, names):
-        ignored_names = []
-        for pattern in patterns:
-            ignored_names.extend(fnmatch.filter(names, pattern))
-        return set(ignored_names)
-    return _ignore_patterns
-
-def copytree(src, dst, symlinks=False, ignore=None):
-    """Recursively copy a directory tree using copy2().
-
-    The destination directory must not already exist.
-    If exception(s) occur, an Error is raised with a list of reasons.
-
-    If the optional symlinks flag is true, symbolic links in the
-    source tree result in symbolic links in the destination tree; if
-    it is false, the contents of the files pointed to by symbolic
-    links are copied.
-
-    The optional ignore argument is a callable. If given, it
-    is called with the `src` parameter, which is the directory
-    being visited by copytree(), and `names` which is the list of
-    `src` contents, as returned by os.listdir():
-
-        callable(src, names) -> ignored_names
-
-    Since copytree() is called recursively, the callable will be
-    called once for each directory that is copied. It returns a
-    list of names relative to the `src` directory that should
-    not be copied.
-
-    XXX Consider this example code rather than the ultimate tool.
-
-    """
-    names = os.listdir(src)
-    if ignore is not None:
-        ignored_names = ignore(src, names)
-    else:
-        ignored_names = set()
-
-    os.makedirs(dst)
-    errors = []
-    for name in names:
-        if name in ignored_names:
-            continue
-        srcname = os.path.join(src, name)
-        dstname = os.path.join(dst, name)
-        try:
-            if symlinks and os.path.islink(srcname):
-                linkto = os.readlink(srcname)
-                os.symlink(linkto, dstname)
-            elif os.path.isdir(srcname):
-                copytree(srcname, dstname, symlinks, ignore)
-            else:
-                # Will raise a SpecialFileError for unsupported file types
-                copy2(srcname, dstname)
-        # catch the Error from the recursive copytree so that we can
-        # continue with other files
-        except Error, err:
-            errors.extend(err.args[0])
-        except EnvironmentError, why:
-            errors.append((srcname, dstname, str(why)))
-    try:
-        copystat(src, dst)
-    except OSError, why:
-        if WindowsError is not None and isinstance(why, WindowsError):
-            # Copying file access times may fail on Windows
-            pass
-        else:
-            errors.extend((src, dst, str(why)))
-    if errors:
-        raise Error, errors
-
-def rmtree(path, ignore_errors=False, onerror=None):
-    """Recursively delete a directory tree.
-
-    If ignore_errors is set, errors are ignored; otherwise, if onerror
-    is set, it is called to handle the error with arguments (func,
-    path, exc_info) where func is os.listdir, os.remove, or os.rmdir;
-    path is the argument to that function that caused it to fail; and
-    exc_info is a tuple returned by sys.exc_info().  If ignore_errors
-    is false and onerror is None, an exception is raised.
-
-    """
-    if ignore_errors:
-        def onerror(*args):
-            pass
-    elif onerror is None:
-        def onerror(*args):
-            raise
-    try:
-        if os.path.islink(path):
-            # symlinks to directories are forbidden, see bug #1669
-            raise OSError("Cannot call rmtree on a symbolic link")
-    except OSError:
-        onerror(os.path.islink, path, sys.exc_info())
-        # can't continue even if onerror hook returns
-        return
-    names = []
-    try:
-        names = os.listdir(path)
-    except os.error, err:
-        onerror(os.listdir, path, sys.exc_info())
-    for name in names:
-        fullname = os.path.join(path, name)
-        try:
-            mode = os.lstat(fullname).st_mode
-        except os.error:
-            mode = 0
-        if stat.S_ISDIR(mode):
-            rmtree(fullname, ignore_errors, onerror)
-        else:
-            try:
-                os.remove(fullname)
-            except os.error, err:
-                onerror(os.remove, fullname, sys.exc_info())
-    try:
-        os.rmdir(path)
-    except os.error:
-        onerror(os.rmdir, path, sys.exc_info())
-
-
-def _basename(path):
-    # A basename() variant which first strips the trailing slash, if present.
-    # Thus we always get the last component of the path, even for directories.
-    return os.path.basename(path.rstrip(os.path.sep))
-
-def move(src, dst):
-    """Recursively move a file or directory to another location. This is
-    similar to the Unix "mv" command.
-
-    If the destination is a directory or a symlink to a directory, the source
-    is moved inside the directory. The destination path must not already
-    exist.
-
-    If the destination already exists but is not a directory, it may be
-    overwritten depending on os.rename() semantics.
-
-    If the destination is on our current filesystem, then rename() is used.
-    Otherwise, src is copied to the destination and then removed.
-    A lot more could be done here...  A look at a mv.c shows a lot of
-    the issues this implementation glosses over.
-
-    """
-    real_dst = dst
-    if os.path.isdir(dst):
-        if _samefile(src, dst):
-            # We might be on a case insensitive filesystem,
-            # perform the rename anyway.
-            os.rename(src, dst)
-            return
-
-        real_dst = os.path.join(dst, _basename(src))
-        if os.path.exists(real_dst):
-            raise Error, "Destination path '%s' already exists" % real_dst
-    try:
-        os.rename(src, real_dst)
-    except OSError:
-        if os.path.isdir(src):
-            if _destinsrc(src, dst):
-                raise Error, "Cannot move a directory '%s' into itself '%s'." % (src, dst)
-            copytree(src, real_dst, symlinks=True)
-            rmtree(src)
-        else:
-            copy2(src, real_dst)
-            os.unlink(src)
-
-def _destinsrc(src, dst):
-    src = abspath(src)
-    dst = abspath(dst)
-    if not src.endswith(os.path.sep):
-        src += os.path.sep
-    if not dst.endswith(os.path.sep):
-        dst += os.path.sep
-    return dst.startswith(src)
-
-def _get_gid(name):
-    """Returns a gid, given a group name."""
-    if getgrnam is None or name is None:
-        return None
-    try:
-        result = getgrnam(name)
-    except KeyError:
-        result = None
-    if result is not None:
-        return result[2]
-    return None
-
-def _get_uid(name):
-    """Returns an uid, given a user name."""
-    if getpwnam is None or name is None:
-        return None
-    try:
-        result = getpwnam(name)
-    except KeyError:
-        result = None
-    if result is not None:
-        return result[2]
-    return None
-
-def _make_tarball(base_name, base_dir, compress="gzip", verbose=0, dry_run=0,
-                  owner=None, group=None, logger=None):
-    """Create a (possibly compressed) tar file from all the files under
-    'base_dir'.
-
-    'compress' must be "gzip" (the default), "bzip2", or None.
-
-    'owner' and 'group' can be used to define an owner and a group for the
-    archive that is being built. If not provided, the current owner and group
-    will be used.
-
-    The output tar file will be named 'base_name' +  ".tar", possibly plus
-    the appropriate compression extension (".gz", or ".bz2").
-
-    Returns the output filename.
-    """
-    tar_compression = {'gzip': 'gz', 'bzip2': 'bz2', None: ''}
-    compress_ext = {'gzip': '.gz', 'bzip2': '.bz2'}
-
-    # flags for compression program, each element of list will be an argument
-    if compress is not None and compress not in compress_ext.keys():
-        raise ValueError, \
-              ("bad value for 'compress': must be None, 'gzip' or 'bzip2'")
-
-    archive_name = base_name + '.tar' + compress_ext.get(compress, '')
-    archive_dir = os.path.dirname(archive_name)
-
-    if not os.path.exists(archive_dir):
-        logger.info("creating %s" % archive_dir)
-        if not dry_run:
-            os.makedirs(archive_dir)
-
-
-    # creating the tarball
-    import tarfile  # late import so Python build itself doesn't break
-
-    if logger is not None:
-        logger.info('Creating tar archive')
-
-    uid = _get_uid(owner)
-    gid = _get_gid(group)
-
-    def _set_uid_gid(tarinfo):
-        if gid is not None:
-            tarinfo.gid = gid
-            tarinfo.gname = group
-        if uid is not None:
-            tarinfo.uid = uid
-            tarinfo.uname = owner
-        return tarinfo
-
-    if not dry_run:
-        tar = tarfile.open(archive_name, 'w|%s' % tar_compression[compress])
-        try:
-            tar.add(base_dir, filter=_set_uid_gid)
-        finally:
-            tar.close()
-
-    return archive_name
-
-def _call_external_zip(base_dir, zip_filename, verbose=False, dry_run=False):
-    # XXX see if we want to keep an external call here
-    if verbose:
-        zipoptions = "-r"
-    else:
-        zipoptions = "-rq"
-    from distutils.errors import DistutilsExecError
-    from distutils.spawn import spawn
-    try:
-        spawn(["zip", zipoptions, zip_filename, base_dir], dry_run=dry_run)
-    except DistutilsExecError:
-        # XXX really should distinguish between "couldn't find
-        # external 'zip' command" and "zip failed".
-        raise ExecError, \
-            ("unable to create zip file '%s': "
-            "could neither import the 'zipfile' module nor "
-            "find a standalone zip utility") % zip_filename
-
-def _make_zipfile(base_name, base_dir, verbose=0, dry_run=0, logger=None):
-    """Create a zip file from all the files under 'base_dir'.
-
-    The output zip file will be named 'base_name' + ".zip".  Uses either the
-    "zipfile" Python module (if available) or the InfoZIP "zip" utility
-    (if installed and found on the default search path).  If neither tool is
-    available, raises ExecError.  Returns the name of the output zip
-    file.
-    """
-    zip_filename = base_name + ".zip"
-    archive_dir = os.path.dirname(base_name)
-
-    if not os.path.exists(archive_dir):
-        if logger is not None:
-            logger.info("creating %s", archive_dir)
-        if not dry_run:
-            os.makedirs(archive_dir)
-
-    # If zipfile module is not available, try spawning an external 'zip'
-    # command.
-    try:
-        import zipfile
-    except ImportError:
-        zipfile = None
-
-    if zipfile is None:
-        _call_external_zip(base_dir, zip_filename, verbose, dry_run)
-    else:
-        if logger is not None:
-            logger.info("creating '%s' and adding '%s' to it",
-                        zip_filename, base_dir)
-
-        if not dry_run:
-            zip = zipfile.ZipFile(zip_filename, "w",
-                                  compression=zipfile.ZIP_DEFLATED)
-
-            for dirpath, dirnames, filenames in os.walk(base_dir):
-                for name in filenames:
-                    path = os.path.normpath(os.path.join(dirpath, name))
-                    if os.path.isfile(path):
-                        zip.write(path, path)
-                        if logger is not None:
-                            logger.info("adding '%s'", path)
-            zip.close()
-
-    return zip_filename
-
-_ARCHIVE_FORMATS = {
-    'gztar': (_make_tarball, [('compress', 'gzip')], "gzip'ed tar-file"),
-    'bztar': (_make_tarball, [('compress', 'bzip2')], "bzip2'ed tar-file"),
-    'tar':   (_make_tarball, [('compress', None)], "uncompressed tar file"),
-    'zip':   (_make_zipfile, [],"ZIP file")
-    }
-
-def get_archive_formats():
-    """Returns a list of supported formats for archiving and unarchiving.
-
-    Each element of the returned sequence is a tuple (name, description)
-    """
-    formats = [(name, registry[2]) for name, registry in
-               _ARCHIVE_FORMATS.items()]
-    formats.sort()
-    return formats
-
-def register_archive_format(name, function, extra_args=None, description=''):
-    """Registers an archive format.
-
-    name is the name of the format. function is the callable that will be
-    used to create archives. If provided, extra_args is a sequence of
-    (name, value) tuples that will be passed as arguments to the callable.
-    description can be provided to describe the format, and will be returned
-    by the get_archive_formats() function.
-    """
-    if extra_args is None:
-        extra_args = []
-    if not isinstance(function, collections.Callable):
-        raise TypeError('The %s object is not callable' % function)
-    if not isinstance(extra_args, (tuple, list)):
-        raise TypeError('extra_args needs to be a sequence')
-    for element in extra_args:
-        if not isinstance(element, (tuple, list)) or len(element) !=2 :
-            raise TypeError('extra_args elements are : (arg_name, value)')
-
-    _ARCHIVE_FORMATS[name] = (function, extra_args, description)
-
-def unregister_archive_format(name):
-    del _ARCHIVE_FORMATS[name]
-
-def make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,
-                 dry_run=0, owner=None, group=None, logger=None):
-    """Create an archive file (eg. zip or tar).
-
-    'base_name' is the name of the file to create, minus any format-specific
-    extension; 'format' is the archive format: one of "zip", "tar", "bztar"
-    or "gztar".
-
-    'root_dir' is a directory that will be the root directory of the
-    archive; ie. we typically chdir into 'root_dir' before creating the
-    archive.  'base_dir' is the directory where we start archiving from;
-    ie. 'base_dir' will be the common prefix of all files and
-    directories in the archive.  'root_dir' and 'base_dir' both default
-    to the current directory.  Returns the name of the archive file.
-
-    'owner' and 'group' are used when creating a tar archive. By default,
-    uses the current owner and group.
-    """
-    save_cwd = os.getcwd()
-    if root_dir is not None:
-        if logger is not None:
-            logger.debug("changing into '%s'", root_dir)
-        base_name = os.path.abspath(base_name)
-        if not dry_run:
-            os.chdir(root_dir)
-
-    if base_dir is None:
-        base_dir = os.curdir
-
-    kwargs = {'dry_run': dry_run, 'logger': logger}
-
-    try:
-        format_info = _ARCHIVE_FORMATS[format]
-    except KeyError:
-        raise ValueError, "unknown archive format '%s'" % format
-
-    func = format_info[0]
-    for arg, val in format_info[1]:
-        kwargs[arg] = val
-
-    if format != 'zip':
-        kwargs['owner'] = owner
-        kwargs['group'] = group
-
-    try:
-        filename = func(base_name, base_dir, **kwargs)
-    finally:
-        if root_dir is not None:
-            if logger is not None:
-                logger.debug("changing back to '%s'", save_cwd)
-            os.chdir(save_cwd)
-
-    return filename
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/site-packages/README b/AppPkg/Applications/Python/Python-2.7.2/Lib/site-packages/README
deleted file mode 100644
index 74df190..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/site-packages/README
+++ /dev/null
@@ -1,2 +0,0 @@
-This directory exists so that 3rd party packages can be installed
-here.  Read the source for site.py for more details.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/site.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/site.py
deleted file mode 100644
index 87f0955..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/site.py
+++ /dev/null
@@ -1,615 +0,0 @@
-"""Append module search paths for third-party packages to sys.path.
-
-****************************************************************
-* This module is automatically imported during initialization. *
-****************************************************************
-
-In earlier versions of Python (up to 1.5a3), scripts or modules that
-needed to use site-specific modules would place ``import site''
-somewhere near the top of their code.  Because of the automatic
-import, this is no longer necessary (but code that does it still
-works).
-
-This will append site-specific paths to the module search path.  On
-Unix (including Mac OSX), it starts with sys.prefix and
-sys.exec_prefix (if different) and appends
-lib/python<version>/site-packages as well as lib/site-python.
-On other platforms (such as Windows), it tries each of the
-prefixes directly, as well as with lib/site-packages appended.  The
-resulting directories, if they exist, are appended to sys.path, and
-also inspected for path configuration files.
-
-A path configuration file is a file whose name has the form
-<package>.pth; its contents are additional directories (one per line)
-to be added to sys.path.  Non-existing directories (or
-non-directories) are never added to sys.path; no directory is added to
-sys.path more than once.  Blank lines and lines beginning with
-'#' are skipped. Lines starting with 'import' are executed.
-
-For example, suppose sys.prefix and sys.exec_prefix are set to
-/usr/local and there is a directory /usr/local/lib/python2.5/site-packages
-with three subdirectories, foo, bar and spam, and two path
-configuration files, foo.pth and bar.pth.  Assume foo.pth contains the
-following:
-
-  # foo package configuration
-  foo
-  bar
-  bletch
-
-and bar.pth contains:
-
-  # bar package configuration
-  bar
-
-Then the following directories are added to sys.path, in this order:
-
-  /usr/local/lib/python2.5/site-packages/bar
-  /usr/local/lib/python2.5/site-packages/foo
-
-Note that bletch is omitted because it doesn't exist; bar precedes foo
-because bar.pth comes alphabetically before foo.pth; and spam is
-omitted because it is not mentioned in either path configuration file.
-
-After these path manipulations, an attempt is made to import a module
-named sitecustomize, which can perform arbitrary additional
-site-specific customizations.  If this import fails with an
-ImportError exception, it is silently ignored.
-
-"""
-
-import sys
-import os
-import __builtin__
-import traceback
-
-# Prefixes for site-packages; add additional prefixes like /usr/local here
-PREFIXES = [sys.prefix, sys.exec_prefix]
-# Enable per user site-packages directory
-# set it to False to disable the feature or True to force the feature
-ENABLE_USER_SITE = None
-
-# for distutils.commands.install
-# These values are initialized by the getuserbase() and getusersitepackages()
-# functions, through the main() function when Python starts.
-USER_SITE = None
-USER_BASE = None
-
-
-def makepath(*paths):
-    dir = os.path.join(*paths)
-    try:
-        dir = os.path.abspath(dir)
-    except OSError:
-        pass
-    return dir, os.path.normcase(dir)
-
-
-def abs__file__():
-    """Set all module' __file__ attribute to an absolute path"""
-    for m in sys.modules.values():
-        if hasattr(m, '__loader__'):
-            continue   # don't mess with a PEP 302-supplied __file__
-        try:
-            m.__file__ = os.path.abspath(m.__file__)
-        except (AttributeError, OSError):
-            pass
-
-
-def removeduppaths():
-    """ Remove duplicate entries from sys.path along with making them
-    absolute"""
-    # This ensures that the initial path provided by the interpreter contains
-    # only absolute pathnames, even if we're running from the build directory.
-    L = []
-    known_paths = set()
-    for dir in sys.path:
-        # Filter out duplicate paths (on case-insensitive file systems also
-        # if they only differ in case); turn relative paths into absolute
-        # paths.
-        dir, dircase = makepath(dir)
-        if not dircase in known_paths:
-            L.append(dir)
-            known_paths.add(dircase)
-    sys.path[:] = L
-    return known_paths
-
-# XXX This should not be part of site.py, since it is needed even when
-# using the -S option for Python.  See http://www.python.org/sf/586680
-def addbuilddir():
-    """Append ./build/lib.<platform> in case we're running in the build dir
-    (especially for Guido :-)"""
-    from sysconfig import get_platform
-    s = "build/lib.%s-%.3s" % (get_platform(), sys.version)
-    if hasattr(sys, 'gettotalrefcount'):
-        s += '-pydebug'
-    s = os.path.join(os.path.dirname(sys.path.pop()), s)
-    sys.path.append(s)
-
-
-def _init_pathinfo():
-    """Return a set containing all existing directory entries from sys.path"""
-    d = set()
-    for dir in sys.path:
-        try:
-            if os.path.isdir(dir):
-                dir, dircase = makepath(dir)
-                d.add(dircase)
-        except TypeError:
-            continue
-    return d
-
-
-def addpackage(sitedir, name, known_paths):
-    """Process a .pth file within the site-packages directory:
-       For each line in the file, either combine it with sitedir to a path
-       and add that to known_paths, or execute it if it starts with 'import '.
-    """
-    if known_paths is None:
-        _init_pathinfo()
-        reset = 1
-    else:
-        reset = 0
-    fullname = os.path.join(sitedir, name)
-    try:
-        f = open(fullname, "rU")
-    except IOError:
-        return
-    with f:
-        for n, line in enumerate(f):
-            if line.startswith("#"):
-                continue
-            try:
-                if line.startswith(("import ", "import\t")):
-                    exec line
-                    continue
-                line = line.rstrip()
-                dir, dircase = makepath(sitedir, line)
-                if not dircase in known_paths and os.path.exists(dir):
-                    sys.path.append(dir)
-                    known_paths.add(dircase)
-            except Exception as err:
-                print >>sys.stderr, "Error processing line {:d} of {}:\n".format(
-                    n+1, fullname)
-                for record in traceback.format_exception(*sys.exc_info()):
-                    for line in record.splitlines():
-                        print >>sys.stderr, '  '+line
-                print >>sys.stderr, "\nRemainder of file ignored"
-                break
-    if reset:
-        known_paths = None
-    return known_paths
-
-
-def addsitedir(sitedir, known_paths=None):
-    """Add 'sitedir' argument to sys.path if missing and handle .pth files in
-    'sitedir'"""
-    if known_paths is None:
-        known_paths = _init_pathinfo()
-        reset = 1
-    else:
-        reset = 0
-    sitedir, sitedircase = makepath(sitedir)
-    if not sitedircase in known_paths:
-        sys.path.append(sitedir)        # Add path component
-    try:
-        names = os.listdir(sitedir)
-    except os.error:
-        return
-    dotpth = os.extsep + "pth"
-    names = [name for name in names if name.endswith(dotpth)]
-    for name in sorted(names):
-        addpackage(sitedir, name, known_paths)
-    if reset:
-        known_paths = None
-    return known_paths
-
-
-def check_enableusersite():
-    """Check if user site directory is safe for inclusion
-
-    The function tests for the command line flag (including environment var),
-    process uid/gid equal to effective uid/gid.
-
-    None: Disabled for security reasons
-    False: Disabled by user (command line option)
-    True: Safe and enabled
-    """
-    if sys.flags.no_user_site:
-        return False
-
-    if hasattr(os, "getuid") and hasattr(os, "geteuid"):
-        # check process uid == effective uid
-        if os.geteuid() != os.getuid():
-            return None
-    if hasattr(os, "getgid") and hasattr(os, "getegid"):
-        # check process gid == effective gid
-        if os.getegid() != os.getgid():
-            return None
-
-    return True
-
-def getuserbase():
-    """Returns the `user base` directory path.
-
-    The `user base` directory can be used to store data. If the global
-    variable ``USER_BASE`` is not initialized yet, this function will also set
-    it.
-    """
-    global USER_BASE
-    if USER_BASE is not None:
-        return USER_BASE
-    from sysconfig import get_config_var
-    USER_BASE = get_config_var('userbase')
-    return USER_BASE
-
-def getusersitepackages():
-    """Returns the user-specific site-packages directory path.
-
-    If the global variable ``USER_SITE`` is not initialized yet, this
-    function will also set it.
-    """
-    global USER_SITE
-    user_base = getuserbase() # this will also set USER_BASE
-
-    if USER_SITE is not None:
-        return USER_SITE
-
-    from sysconfig import get_path
-    import os
-
-    if sys.platform == 'darwin':
-        from sysconfig import get_config_var
-        if get_config_var('PYTHONFRAMEWORK'):
-            USER_SITE = get_path('purelib', 'osx_framework_user')
-            return USER_SITE
-
-    USER_SITE = get_path('purelib', '%s_user' % os.name)
-    return USER_SITE
-
-def addusersitepackages(known_paths):
-    """Add a per user site-package to sys.path
-
-    Each user has its own python directory with site-packages in the
-    home directory.
-    """
-    # get the per user site-package path
-    # this call will also make sure USER_BASE and USER_SITE are set
-    user_site = getusersitepackages()
-
-    if ENABLE_USER_SITE and os.path.isdir(user_site):
-        addsitedir(user_site, known_paths)
-    return known_paths
-
-def getsitepackages():
-    """Returns a list containing all global site-packages directories
-    (and possibly site-python).
-
-    For each directory present in the global ``PREFIXES``, this function
-    will find its `site-packages` subdirectory depending on the system
-    environment, and will return a list of full paths.
-    """
-    sitepackages = []
-    seen = set()
-
-    for prefix in PREFIXES:
-        if not prefix or prefix in seen:
-            continue
-        seen.add(prefix)
-
-        if sys.platform in ('os2emx', 'riscos'):
-            sitepackages.append(os.path.join(prefix, "Lib", "site-packages"))
-        elif os.sep == '/':
-            sitepackages.append(os.path.join(prefix, "lib",
-                                        "python" + sys.version[:3],
-                                        "site-packages"))
-            sitepackages.append(os.path.join(prefix, "lib", "site-python"))
-        else:
-            sitepackages.append(prefix)
-            sitepackages.append(os.path.join(prefix, "lib", "site-packages"))
-        if sys.platform == "darwin":
-            # for framework builds *only* we add the standard Apple
-            # locations.
-            from sysconfig import get_config_var
-            framework = get_config_var("PYTHONFRAMEWORK")
-            if framework and "/%s.framework/"%(framework,) in prefix:
-                sitepackages.append(
-                        os.path.join("/Library", framework,
-                            sys.version[:3], "site-packages"))
-    return sitepackages
-
-def addsitepackages(known_paths):
-    """Add site-packages (and possibly site-python) to sys.path"""
-    for sitedir in getsitepackages():
-        if os.path.isdir(sitedir):
-            addsitedir(sitedir, known_paths)
-
-    return known_paths
-
-def setBEGINLIBPATH():
-    """The OS/2 EMX port has optional extension modules that do double duty
-    as DLLs (and must use the .DLL file extension) for other extensions.
-    The library search path needs to be amended so these will be found
-    during module import.  Use BEGINLIBPATH so that these are at the start
-    of the library search path.
-
-    """
-    dllpath = os.path.join(sys.prefix, "Lib", "lib-dynload")
-    libpath = os.environ['BEGINLIBPATH'].split(';')
-    if libpath[-1]:
-        libpath.append(dllpath)
-    else:
-        libpath[-1] = dllpath
-    os.environ['BEGINLIBPATH'] = ';'.join(libpath)
-
-
-def setquit():
-    """Define new builtins 'quit' and 'exit'.
-
-    These are objects which make the interpreter exit when called.
-    The repr of each object contains a hint at how it works.
-
-    """
-    if os.sep == ':':
-        eof = 'Cmd-Q'
-    elif os.sep == '\\':
-        eof = 'Ctrl-Z plus Return'
-    else:
-        eof = 'Ctrl-D (i.e. EOF)'
-
-    class Quitter(object):
-        def __init__(self, name):
-            self.name = name
-        def __repr__(self):
-            return 'Use %s() or %s to exit' % (self.name, eof)
-        def __call__(self, code=None):
-            # Shells like IDLE catch the SystemExit, but listen when their
-            # stdin wrapper is closed.
-            try:
-                sys.stdin.close()
-            except:
-                pass
-            raise SystemExit(code)
-    __builtin__.quit = Quitter('quit')
-    __builtin__.exit = Quitter('exit')
-
-
-class _Printer(object):
-    """interactive prompt objects for printing the license text, a list of
-    contributors and the copyright notice."""
-
-    MAXLINES = 23
-
-    def __init__(self, name, data, files=(), dirs=()):
-        self.__name = name
-        self.__data = data
-        self.__files = files
-        self.__dirs = dirs
-        self.__lines = None
-
-    def __setup(self):
-        if self.__lines:
-            return
-        data = None
-        for dir in self.__dirs:
-            for filename in self.__files:
-                filename = os.path.join(dir, filename)
-                try:
-                    fp = file(filename, "rU")
-                    data = fp.read()
-                    fp.close()
-                    break
-                except IOError:
-                    pass
-            if data:
-                break
-        if not data:
-            data = self.__data
-        self.__lines = data.split('\n')
-        self.__linecnt = len(self.__lines)
-
-    def __repr__(self):
-        self.__setup()
-        if len(self.__lines) <= self.MAXLINES:
-            return "\n".join(self.__lines)
-        else:
-            return "Type %s() to see the full %s text" % ((self.__name,)*2)
-
-    def __call__(self):
-        self.__setup()
-        prompt = 'Hit Return for more, or q (and Return) to quit: '
-        lineno = 0
-        while 1:
-            try:
-                for i in range(lineno, lineno + self.MAXLINES):
-                    print self.__lines[i]
-            except IndexError:
-                break
-            else:
-                lineno += self.MAXLINES
-                key = None
-                while key is None:
-                    key = raw_input(prompt)
-                    if key not in ('', 'q'):
-                        key = None
-                if key == 'q':
-                    break
-
-def setcopyright():
-    """Set 'copyright' and 'credits' in __builtin__"""
-    __builtin__.copyright = _Printer("copyright", sys.copyright)
-    if sys.platform[:4] == 'java':
-        __builtin__.credits = _Printer(
-            "credits",
-            "Jython is maintained by the Jython developers (www.jython.org).")
-    else:
-        __builtin__.credits = _Printer("credits", """\
-    Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
-    for supporting Python development.  See www.python.org for more information.""")
-    here = os.path.dirname(os.__file__)
-    __builtin__.license = _Printer(
-        "license", "See http://www.python.org/%.3s/license.html" % sys.version,
-        ["LICENSE.txt", "LICENSE"],
-        [os.path.join(here, os.pardir), here, os.curdir])
-
-
-class _Helper(object):
-    """Define the builtin 'help'.
-    This is a wrapper around pydoc.help (with a twist).
-
-    """
-
-    def __repr__(self):
-        return "Type help() for interactive help, " \
-               "or help(object) for help about object."
-    def __call__(self, *args, **kwds):
-        import pydoc
-        return pydoc.help(*args, **kwds)
-
-def sethelper():
-    __builtin__.help = _Helper()
-
-def aliasmbcs():
-    """On Windows, some default encodings are not provided by Python,
-    while they are always available as "mbcs" in each locale. Make
-    them usable by aliasing to "mbcs" in such a case."""
-    if sys.platform == 'win32':
-        import locale, codecs
-        enc = locale.getdefaultlocale()[1]
-        if enc.startswith('cp'):            # "cp***" ?
-            try:
-                codecs.lookup(enc)
-            except LookupError:
-                import encodings
-                encodings._cache[enc] = encodings._unknown
-                encodings.aliases.aliases[enc] = 'mbcs'
-
-def setencoding():
-    """Set the string encoding used by the Unicode implementation.  The
-    default is 'ascii', but if you're willing to experiment, you can
-    change this."""
-    encoding = "ascii" # Default value set by _PyUnicode_Init()
-    if 0:
-        # Enable to support locale aware default string encodings.
-        import locale
-        loc = locale.getdefaultlocale()
-        if loc[1]:
-            encoding = loc[1]
-    if 0:
-        # Enable to switch off string to Unicode coercion and implicit
-        # Unicode to string conversion.
-        encoding = "undefined"
-    if encoding != "ascii":
-        # On Non-Unicode builds this will raise an AttributeError...
-        sys.setdefaultencoding(encoding) # Needs Python Unicode build !
-
-
-def execsitecustomize():
-    """Run custom site specific code, if available."""
-    try:
-        import sitecustomize
-    except ImportError:
-        pass
-    except Exception:
-        if sys.flags.verbose:
-            sys.excepthook(*sys.exc_info())
-        else:
-            print >>sys.stderr, \
-                "'import sitecustomize' failed; use -v for traceback"
-
-
-def execusercustomize():
-    """Run custom user specific code, if available."""
-    try:
-        import usercustomize
-    except ImportError:
-        pass
-    except Exception:
-        if sys.flags.verbose:
-            sys.excepthook(*sys.exc_info())
-        else:
-            print>>sys.stderr, \
-                "'import usercustomize' failed; use -v for traceback"
-
-
-def main():
-    global ENABLE_USER_SITE
-
-    abs__file__()
-    known_paths = removeduppaths()
-    if (os.name == "posix" and sys.path and
-        os.path.basename(sys.path[-1]) == "Modules"):
-        addbuilddir()
-    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':
-        setBEGINLIBPATH()
-    setquit()
-    setcopyright()
-    sethelper()
-    aliasmbcs()
-    setencoding()
-    execsitecustomize()
-    if ENABLE_USER_SITE:
-        execusercustomize()
-    # Remove sys.setdefaultencoding() so that users cannot change the
-    # encoding after initialization.  The test for presence is needed when
-    # this module is run as a script, because this code is executed twice.
-    if hasattr(sys, "setdefaultencoding"):
-        del sys.setdefaultencoding
-
-main()
-
-def _script():
-    help = """\
-    %s [--user-base] [--user-site]
-
-    Without arguments print some useful information
-    With arguments print the value of USER_BASE and/or USER_SITE separated
-    by '%s'.
-
-    Exit codes with --user-base or --user-site:
-      0 - user site directory is enabled
-      1 - user site directory is disabled by user
-      2 - uses site directory is disabled by super user
-          or for security reasons
-     >2 - unknown error
-    """
-    args = sys.argv[1:]
-    if not args:
-        print "sys.path = ["
-        for dir in sys.path:
-            print "    %r," % (dir,)
-        print "]"
-        print "USER_BASE: %r (%s)" % (USER_BASE,
-            "exists" if os.path.isdir(USER_BASE) else "doesn't exist")
-        print "USER_SITE: %r (%s)" % (USER_SITE,
-            "exists" if os.path.isdir(USER_SITE) else "doesn't exist")
-        print "ENABLE_USER_SITE: %r" %  ENABLE_USER_SITE
-        sys.exit(0)
-
-    buffer = []
-    if '--user-base' in args:
-        buffer.append(USER_BASE)
-    if '--user-site' in args:
-        buffer.append(USER_SITE)
-
-    if buffer:
-        print os.pathsep.join(buffer)
-        if ENABLE_USER_SITE:
-            sys.exit(0)
-        elif ENABLE_USER_SITE is False:
-            sys.exit(1)
-        elif ENABLE_USER_SITE is None:
-            sys.exit(2)
-        else:
-            sys.exit(3)
-    else:
-        import textwrap
-        print textwrap.dedent(help % (sys.argv[0], os.pathsep))
-        sys.exit(10)
-
-if __name__ == '__main__':
-    _script()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/smtpd.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/smtpd.py
deleted file mode 100644
index 3ac464f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/smtpd.py
+++ /dev/null
@@ -1,555 +0,0 @@
-#! /usr/bin/env python
-"""An RFC 2821 smtp proxy.
-
-Usage: %(program)s [options] [localhost:localport [remotehost:remoteport]]
-
-Options:
-
-    --nosetuid
-    -n
-        This program generally tries to setuid `nobody', unless this flag is
-        set.  The setuid call will fail if this program is not run as root (in
-        which case, use this flag).
-
-    --version
-    -V
-        Print the version number and exit.
-
-    --class classname
-    -c classname
-        Use `classname' as the concrete SMTP proxy class.  Uses `PureProxy' by
-        default.
-
-    --debug
-    -d
-        Turn on debugging prints.
-
-    --help
-    -h
-        Print this message and exit.
-
-Version: %(__version__)s
-
-If localhost is not given then `localhost' is used, and if localport is not
-given then 8025 is used.  If remotehost is not given then `localhost' is used,
-and if remoteport is not given, then 25 is used.
-"""
-
-# Overview:
-#
-# This file implements the minimal SMTP protocol as defined in RFC 821.  It
-# has a hierarchy of classes which implement the backend functionality for the
-# smtpd.  A number of classes are provided:
-#
-#   SMTPServer - the base class for the backend.  Raises NotImplementedError
-#   if you try to use it.
-#
-#   DebuggingServer - simply prints each message it receives on stdout.
-#
-#   PureProxy - Proxies all messages to a real smtpd which does final
-#   delivery.  One known problem with this class is that it doesn't handle
-#   SMTP errors from the backend server at all.  This should be fixed
-#   (contributions are welcome!).
-#
-#   MailmanProxy - An experimental hack to work with GNU Mailman
-#   <www.list.org>.  Using this server as your real incoming smtpd, your
-#   mailhost will automatically recognize and accept mail destined to Mailman
-#   lists when those lists are created.  Every message not destined for a list
-#   gets forwarded to a real backend smtpd, as with PureProxy.  Again, errors
-#   are not handled correctly yet.
-#
-# Please note that this script requires Python 2.0
-#
-# Author: Barry Warsaw <barry@python.org>
-#
-# TODO:
-#
-# - support mailbox delivery
-# - alias files
-# - ESMTP
-# - handle error codes from the backend smtpd
-
-import sys
-import os
-import errno
-import getopt
-import time
-import socket
-import asyncore
-import asynchat
-
-__all__ = ["SMTPServer","DebuggingServer","PureProxy","MailmanProxy"]
-
-program = sys.argv[0]
-__version__ = 'Python SMTP proxy version 0.2'
-
-
-class Devnull:
-    def write(self, msg): pass
-    def flush(self): pass
-
-
-DEBUGSTREAM = Devnull()
-NEWLINE = '\n'
-EMPTYSTRING = ''
-COMMASPACE = ', '
-
-
-def usage(code, msg=''):
-    print >> sys.stderr, __doc__ % globals()
-    if msg:
-        print >> sys.stderr, msg
-    sys.exit(code)
-
-
-class SMTPChannel(asynchat.async_chat):
-    COMMAND = 0
-    DATA = 1
-
-    def __init__(self, server, conn, addr):
-        asynchat.async_chat.__init__(self, conn)
-        self.__server = server
-        self.__conn = conn
-        self.__addr = addr
-        self.__line = []
-        self.__state = self.COMMAND
-        self.__greeting = 0
-        self.__mailfrom = None
-        self.__rcpttos = []
-        self.__data = ''
-        self.__fqdn = socket.getfqdn()
-        try:
-            self.__peer = conn.getpeername()
-        except socket.error, err:
-            # a race condition  may occur if the other end is closing
-            # before we can get the peername
-            self.close()
-            if err[0] != errno.ENOTCONN:
-                raise
-            return
-        print >> DEBUGSTREAM, 'Peer:', repr(self.__peer)
-        self.push('220 %s %s' % (self.__fqdn, __version__))
-        self.set_terminator('\r\n')
-
-    # Overrides base class for convenience
-    def push(self, msg):
-        asynchat.async_chat.push(self, msg + '\r\n')
-
-    # Implementation of base class abstract method
-    def collect_incoming_data(self, data):
-        self.__line.append(data)
-
-    # Implementation of base class abstract method
-    def found_terminator(self):
-        line = EMPTYSTRING.join(self.__line)
-        print >> DEBUGSTREAM, 'Data:', repr(line)
-        self.__line = []
-        if self.__state == self.COMMAND:
-            if not line:
-                self.push('500 Error: bad syntax')
-                return
-            method = None
-            i = line.find(' ')
-            if i < 0:
-                command = line.upper()
-                arg = None
-            else:
-                command = line[:i].upper()
-                arg = line[i+1:].strip()
-            method = getattr(self, 'smtp_' + command, None)
-            if not method:
-                self.push('502 Error: command "%s" not implemented' % command)
-                return
-            method(arg)
-            return
-        else:
-            if self.__state != self.DATA:
-                self.push('451 Internal confusion')
-                return
-            # Remove extraneous carriage returns and de-transparency according
-            # to RFC 821, Section 4.5.2.
-            data = []
-            for text in line.split('\r\n'):
-                if text and text[0] == '.':
-                    data.append(text[1:])
-                else:
-                    data.append(text)
-            self.__data = NEWLINE.join(data)
-            status = self.__server.process_message(self.__peer,
-                                                   self.__mailfrom,
-                                                   self.__rcpttos,
-                                                   self.__data)
-            self.__rcpttos = []
-            self.__mailfrom = None
-            self.__state = self.COMMAND
-            self.set_terminator('\r\n')
-            if not status:
-                self.push('250 Ok')
-            else:
-                self.push(status)
-
-    # SMTP and ESMTP commands
-    def smtp_HELO(self, arg):
-        if not arg:
-            self.push('501 Syntax: HELO hostname')
-            return
-        if self.__greeting:
-            self.push('503 Duplicate HELO/EHLO')
-        else:
-            self.__greeting = arg
-            self.push('250 %s' % self.__fqdn)
-
-    def smtp_NOOP(self, arg):
-        if arg:
-            self.push('501 Syntax: NOOP')
-        else:
-            self.push('250 Ok')
-
-    def smtp_QUIT(self, arg):
-        # args is ignored
-        self.push('221 Bye')
-        self.close_when_done()
-
-    # factored
-    def __getaddr(self, keyword, arg):
-        address = None
-        keylen = len(keyword)
-        if arg[:keylen].upper() == keyword:
-            address = arg[keylen:].strip()
-            if not address:
-                pass
-            elif address[0] == '<' and address[-1] == '>' and address != '<>':
-                # Addresses can be in the form <person@dom.com> but watch out
-                # for null address, e.g. <>
-                address = address[1:-1]
-        return address
-
-    def smtp_MAIL(self, arg):
-        print >> DEBUGSTREAM, '===> MAIL', arg
-        address = self.__getaddr('FROM:', arg) if arg else None
-        if not address:
-            self.push('501 Syntax: MAIL FROM:<address>')
-            return
-        if self.__mailfrom:
-            self.push('503 Error: nested MAIL command')
-            return
-        self.__mailfrom = address
-        print >> DEBUGSTREAM, 'sender:', self.__mailfrom
-        self.push('250 Ok')
-
-    def smtp_RCPT(self, arg):
-        print >> DEBUGSTREAM, '===> RCPT', arg
-        if not self.__mailfrom:
-            self.push('503 Error: need MAIL command')
-            return
-        address = self.__getaddr('TO:', arg) if arg else None
-        if not address:
-            self.push('501 Syntax: RCPT TO: <address>')
-            return
-        self.__rcpttos.append(address)
-        print >> DEBUGSTREAM, 'recips:', self.__rcpttos
-        self.push('250 Ok')
-
-    def smtp_RSET(self, arg):
-        if arg:
-            self.push('501 Syntax: RSET')
-            return
-        # Resets the sender, recipients, and data, but not the greeting
-        self.__mailfrom = None
-        self.__rcpttos = []
-        self.__data = ''
-        self.__state = self.COMMAND
-        self.push('250 Ok')
-
-    def smtp_DATA(self, arg):
-        if not self.__rcpttos:
-            self.push('503 Error: need RCPT command')
-            return
-        if arg:
-            self.push('501 Syntax: DATA')
-            return
-        self.__state = self.DATA
-        self.set_terminator('\r\n.\r\n')
-        self.push('354 End data with <CR><LF>.<CR><LF>')
-
-
-class SMTPServer(asyncore.dispatcher):
-    def __init__(self, localaddr, remoteaddr):
-        self._localaddr = localaddr
-        self._remoteaddr = remoteaddr
-        asyncore.dispatcher.__init__(self)
-        try:
-            self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
-            # try to re-use a server port if possible
-            self.set_reuse_addr()
-            self.bind(localaddr)
-            self.listen(5)
-        except:
-            # cleanup asyncore.socket_map before raising
-            self.close()
-            raise
-        else:
-            print >> DEBUGSTREAM, \
-                  '%s started at %s\n\tLocal addr: %s\n\tRemote addr:%s' % (
-                self.__class__.__name__, time.ctime(time.time()),
-                localaddr, remoteaddr)
-
-    def handle_accept(self):
-        pair = self.accept()
-        if pair is not None:
-            conn, addr = pair
-            print >> DEBUGSTREAM, 'Incoming connection from %s' % repr(addr)
-            channel = SMTPChannel(self, conn, addr)
-
-    # API for "doing something useful with the message"
-    def process_message(self, peer, mailfrom, rcpttos, data):
-        """Override this abstract method to handle messages from the client.
-
-        peer is a tuple containing (ipaddr, port) of the client that made the
-        socket connection to our smtp port.
-
-        mailfrom is the raw address the client claims the message is coming
-        from.
-
-        rcpttos is a list of raw addresses the client wishes to deliver the
-        message to.
-
-        data is a string containing the entire full text of the message,
-        headers (if supplied) and all.  It has been `de-transparencied'
-        according to RFC 821, Section 4.5.2.  In other words, a line
-        containing a `.' followed by other text has had the leading dot
-        removed.
-
-        This function should return None, for a normal `250 Ok' response;
-        otherwise it returns the desired response string in RFC 821 format.
-
-        """
-        raise NotImplementedError
-
-
-class DebuggingServer(SMTPServer):
-    # Do something with the gathered message
-    def process_message(self, peer, mailfrom, rcpttos, data):
-        inheaders = 1
-        lines = data.split('\n')
-        print '---------- MESSAGE FOLLOWS ----------'
-        for line in lines:
-            # headers first
-            if inheaders and not line:
-                print 'X-Peer:', peer[0]
-                inheaders = 0
-            print line
-        print '------------ END MESSAGE ------------'
-
-
-class PureProxy(SMTPServer):
-    def process_message(self, peer, mailfrom, rcpttos, data):
-        lines = data.split('\n')
-        # Look for the last header
-        i = 0
-        for line in lines:
-            if not line:
-                break
-            i += 1
-        lines.insert(i, 'X-Peer: %s' % peer[0])
-        data = NEWLINE.join(lines)
-        refused = self._deliver(mailfrom, rcpttos, data)
-        # TBD: what to do with refused addresses?
-        print >> DEBUGSTREAM, 'we got some refusals:', refused
-
-    def _deliver(self, mailfrom, rcpttos, data):
-        import smtplib
-        refused = {}
-        try:
-            s = smtplib.SMTP()
-            s.connect(self._remoteaddr[0], self._remoteaddr[1])
-            try:
-                refused = s.sendmail(mailfrom, rcpttos, data)
-            finally:
-                s.quit()
-        except smtplib.SMTPRecipientsRefused, e:
-            print >> DEBUGSTREAM, 'got SMTPRecipientsRefused'
-            refused = e.recipients
-        except (socket.error, smtplib.SMTPException), e:
-            print >> DEBUGSTREAM, 'got', e.__class__
-            # All recipients were refused.  If the exception had an associated
-            # error code, use it.  Otherwise,fake it with a non-triggering
-            # exception code.
-            errcode = getattr(e, 'smtp_code', -1)
-            errmsg = getattr(e, 'smtp_error', 'ignore')
-            for r in rcpttos:
-                refused[r] = (errcode, errmsg)
-        return refused
-
-
-class MailmanProxy(PureProxy):
-    def process_message(self, peer, mailfrom, rcpttos, data):
-        from cStringIO import StringIO
-        from Mailman import Utils
-        from Mailman import Message
-        from Mailman import MailList
-        # If the message is to a Mailman mailing list, then we'll invoke the
-        # Mailman script directly, without going through the real smtpd.
-        # Otherwise we'll forward it to the local proxy for disposition.
-        listnames = []
-        for rcpt in rcpttos:
-            local = rcpt.lower().split('@')[0]
-            # We allow the following variations on the theme
-            #   listname
-            #   listname-admin
-            #   listname-owner
-            #   listname-request
-            #   listname-join
-            #   listname-leave
-            parts = local.split('-')
-            if len(parts) > 2:
-                continue
-            listname = parts[0]
-            if len(parts) == 2:
-                command = parts[1]
-            else:
-                command = ''
-            if not Utils.list_exists(listname) or command not in (
-                    '', 'admin', 'owner', 'request', 'join', 'leave'):
-                continue
-            listnames.append((rcpt, listname, command))
-        # Remove all list recipients from rcpttos and forward what we're not
-        # going to take care of ourselves.  Linear removal should be fine
-        # since we don't expect a large number of recipients.
-        for rcpt, listname, command in listnames:
-            rcpttos.remove(rcpt)
-        # If there's any non-list destined recipients left,
-        print >> DEBUGSTREAM, 'forwarding recips:', ' '.join(rcpttos)
-        if rcpttos:
-            refused = self._deliver(mailfrom, rcpttos, data)
-            # TBD: what to do with refused addresses?
-            print >> DEBUGSTREAM, 'we got refusals:', refused
-        # Now deliver directly to the list commands
-        mlists = {}
-        s = StringIO(data)
-        msg = Message.Message(s)
-        # These headers are required for the proper execution of Mailman.  All
-        # MTAs in existence seem to add these if the original message doesn't
-        # have them.
-        if not msg.getheader('from'):
-            msg['From'] = mailfrom
-        if not msg.getheader('date'):
-            msg['Date'] = time.ctime(time.time())
-        for rcpt, listname, command in listnames:
-            print >> DEBUGSTREAM, 'sending message to', rcpt
-            mlist = mlists.get(listname)
-            if not mlist:
-                mlist = MailList.MailList(listname, lock=0)
-                mlists[listname] = mlist
-            # dispatch on the type of command
-            if command == '':
-                # post
-                msg.Enqueue(mlist, tolist=1)
-            elif command == 'admin':
-                msg.Enqueue(mlist, toadmin=1)
-            elif command == 'owner':
-                msg.Enqueue(mlist, toowner=1)
-            elif command == 'request':
-                msg.Enqueue(mlist, torequest=1)
-            elif command in ('join', 'leave'):
-                # TBD: this is a hack!
-                if command == 'join':
-                    msg['Subject'] = 'subscribe'
-                else:
-                    msg['Subject'] = 'unsubscribe'
-                msg.Enqueue(mlist, torequest=1)
-
-
-class Options:
-    setuid = 1
-    classname = 'PureProxy'
-
-
-def parseargs():
-    global DEBUGSTREAM
-    try:
-        opts, args = getopt.getopt(
-            sys.argv[1:], 'nVhc:d',
-            ['class=', 'nosetuid', 'version', 'help', 'debug'])
-    except getopt.error, e:
-        usage(1, e)
-
-    options = Options()
-    for opt, arg in opts:
-        if opt in ('-h', '--help'):
-            usage(0)
-        elif opt in ('-V', '--version'):
-            print >> sys.stderr, __version__
-            sys.exit(0)
-        elif opt in ('-n', '--nosetuid'):
-            options.setuid = 0
-        elif opt in ('-c', '--class'):
-            options.classname = arg
-        elif opt in ('-d', '--debug'):
-            DEBUGSTREAM = sys.stderr
-
-    # parse the rest of the arguments
-    if len(args) < 1:
-        localspec = 'localhost:8025'
-        remotespec = 'localhost:25'
-    elif len(args) < 2:
-        localspec = args[0]
-        remotespec = 'localhost:25'
-    elif len(args) < 3:
-        localspec = args[0]
-        remotespec = args[1]
-    else:
-        usage(1, 'Invalid arguments: %s' % COMMASPACE.join(args))
-
-    # split into host/port pairs
-    i = localspec.find(':')
-    if i < 0:
-        usage(1, 'Bad local spec: %s' % localspec)
-    options.localhost = localspec[:i]
-    try:
-        options.localport = int(localspec[i+1:])
-    except ValueError:
-        usage(1, 'Bad local port: %s' % localspec)
-    i = remotespec.find(':')
-    if i < 0:
-        usage(1, 'Bad remote spec: %s' % remotespec)
-    options.remotehost = remotespec[:i]
-    try:
-        options.remoteport = int(remotespec[i+1:])
-    except ValueError:
-        usage(1, 'Bad remote port: %s' % remotespec)
-    return options
-
-
-if __name__ == '__main__':
-    options = parseargs()
-    # Become nobody
-    if options.setuid:
-        try:
-            import pwd
-        except ImportError:
-            print >> sys.stderr, \
-                  'Cannot import module "pwd"; try running with -n option.'
-            sys.exit(1)
-        nobody = pwd.getpwnam('nobody')[2]
-        try:
-            os.setuid(nobody)
-        except OSError, e:
-            if e.errno != errno.EPERM: raise
-            print >> sys.stderr, \
-                  'Cannot setuid "nobody"; try running with -n option.'
-            sys.exit(1)
-    classname = options.classname
-    if "." in classname:
-        lastdot = classname.rfind(".")
-        mod = __import__(classname[:lastdot], globals(), locals(), [""])
-        classname = classname[lastdot+1:]
-    else:
-        import __main__ as mod
-    class_ = getattr(mod, classname)
-    proxy = class_((options.localhost, options.localport),
-                   (options.remotehost, options.remoteport))
-    try:
-        asyncore.loop()
-    except KeyboardInterrupt:
-        pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/smtplib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/smtplib.py
deleted file mode 100644
index 8d11964..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/smtplib.py
+++ /dev/null
@@ -1,848 +0,0 @@
-#! /usr/bin/env python
-
-'''SMTP/ESMTP client class.
-
-This should follow RFC 821 (SMTP), RFC 1869 (ESMTP), RFC 2554 (SMTP
-Authentication) and RFC 2487 (Secure SMTP over TLS).
-
-Notes:
-
-Please remember, when doing ESMTP, that the names of the SMTP service
-extensions are NOT the same thing as the option keywords for the RCPT
-and MAIL commands!
-
-Example:
-
-  >>> import smtplib
-  >>> s=smtplib.SMTP("localhost")
-  >>> print s.help()
-  This is Sendmail version 8.8.4
-  Topics:
-      HELO    EHLO    MAIL    RCPT    DATA
-      RSET    NOOP    QUIT    HELP    VRFY
-      EXPN    VERB    ETRN    DSN
-  For more info use "HELP <topic>".
-  To report bugs in the implementation send email to
-      sendmail-bugs@sendmail.org.
-  For local information send email to Postmaster at your site.
-  End of HELP info
-  >>> s.putcmd("vrfy","someone@here")
-  >>> s.getreply()
-  (250, "Somebody OverHere <somebody@here.my.org>")
-  >>> s.quit()
-'''
-
-# Author: The Dragon De Monsyne <dragondm@integral.org>
-# ESMTP support, test code and doc fixes added by
-#     Eric S. Raymond <esr@thyrsus.com>
-# Better RFC 821 compliance (MAIL and RCPT, and CRLF in data)
-#     by Carey Evans <c.evans@clear.net.nz>, for picky mail servers.
-# RFC 2554 (authentication) support by Gerhard Haering <gerhard@bigfoot.de>.
-#
-# This was modified from the Python 1.5 library HTTP lib.
-
-import socket
-import re
-import email.utils
-import base64
-import hmac
-from email.base64mime import encode as encode_base64
-from sys import stderr
-
-__all__ = ["SMTPException", "SMTPServerDisconnected", "SMTPResponseException",
-           "SMTPSenderRefused", "SMTPRecipientsRefused", "SMTPDataError",
-           "SMTPConnectError", "SMTPHeloError", "SMTPAuthenticationError",
-           "quoteaddr", "quotedata", "SMTP"]
-
-SMTP_PORT = 25
-SMTP_SSL_PORT = 465
-CRLF = "\r\n"
-
-OLDSTYLE_AUTH = re.compile(r"auth=(.*)", re.I)
-
-
-# Exception classes used by this module.
-class SMTPException(Exception):
-    """Base class for all exceptions raised by this module."""
-
-class SMTPServerDisconnected(SMTPException):
-    """Not connected to any SMTP server.
-
-    This exception is raised when the server unexpectedly disconnects,
-    or when an attempt is made to use the SMTP instance before
-    connecting it to a server.
-    """
-
-class SMTPResponseException(SMTPException):
-    """Base class for all exceptions that include an SMTP error code.
-
-    These exceptions are generated in some instances when the SMTP
-    server returns an error code.  The error code is stored in the
-    `smtp_code' attribute of the error, and the `smtp_error' attribute
-    is set to the error message.
-    """
-
-    def __init__(self, code, msg):
-        self.smtp_code = code
-        self.smtp_error = msg
-        self.args = (code, msg)
-
-class SMTPSenderRefused(SMTPResponseException):
-    """Sender address refused.
-
-    In addition to the attributes set by on all SMTPResponseException
-    exceptions, this sets `sender' to the string that the SMTP refused.
-    """
-
-    def __init__(self, code, msg, sender):
-        self.smtp_code = code
-        self.smtp_error = msg
-        self.sender = sender
-        self.args = (code, msg, sender)
-
-class SMTPRecipientsRefused(SMTPException):
-    """All recipient addresses refused.
-
-    The errors for each recipient are accessible through the attribute
-    'recipients', which is a dictionary of exactly the same sort as
-    SMTP.sendmail() returns.
-    """
-
-    def __init__(self, recipients):
-        self.recipients = recipients
-        self.args = (recipients,)
-
-
-class SMTPDataError(SMTPResponseException):
-    """The SMTP server didn't accept the data."""
-
-class SMTPConnectError(SMTPResponseException):
-    """Error during connection establishment."""
-
-class SMTPHeloError(SMTPResponseException):
-    """The server refused our HELO reply."""
-
-class SMTPAuthenticationError(SMTPResponseException):
-    """Authentication error.
-
-    Most probably the server didn't accept the username/password
-    combination provided.
-    """
-
-
-def quoteaddr(addr):
-    """Quote a subset of the email addresses defined by RFC 821.
-
-    Should be able to handle anything rfc822.parseaddr can handle.
-    """
-    m = (None, None)
-    try:
-        m = email.utils.parseaddr(addr)[1]
-    except AttributeError:
-        pass
-    if m == (None, None):  # Indicates parse failure or AttributeError
-        # something weird here.. punt -ddm
-        return "<%s>" % addr
-    elif m is None:
-        # the sender wants an empty return address
-        return "<>"
-    else:
-        return "<%s>" % m
-
-def quotedata(data):
-    """Quote data for email.
-
-    Double leading '.', and change Unix newline '\\n', or Mac '\\r' into
-    Internet CRLF end-of-line.
-    """
-    return re.sub(r'(?m)^\.', '..',
-        re.sub(r'(?:\r\n|\n|\r(?!\n))', CRLF, data))
-
-
-try:
-    import ssl
-except ImportError:
-    _have_ssl = False
-else:
-    class SSLFakeFile:
-        """A fake file like object that really wraps a SSLObject.
-
-        It only supports what is needed in smtplib.
-        """
-        def __init__(self, sslobj):
-            self.sslobj = sslobj
-
-        def readline(self):
-            str = ""
-            chr = None
-            while chr != "\n":
-                chr = self.sslobj.read(1)
-                if not chr:
-                    break
-                str += chr
-            return str
-
-        def close(self):
-            pass
-
-    _have_ssl = True
-
-class SMTP:
-    """This class manages a connection to an SMTP or ESMTP server.
-    SMTP Objects:
-        SMTP objects have the following attributes:
-            helo_resp
-                This is the message given by the server in response to the
-                most recent HELO command.
-
-            ehlo_resp
-                This is the message given by the server in response to the
-                most recent EHLO command. This is usually multiline.
-
-            does_esmtp
-                This is a True value _after you do an EHLO command_, if the
-                server supports ESMTP.
-
-            esmtp_features
-                This is a dictionary, which, if the server supports ESMTP,
-                will _after you do an EHLO command_, contain the names of the
-                SMTP service extensions this server supports, and their
-                parameters (if any).
-
-                Note, all extension names are mapped to lower case in the
-                dictionary.
-
-        See each method's docstrings for details.  In general, there is a
-        method of the same name to perform each SMTP command.  There is also a
-        method called 'sendmail' that will do an entire mail transaction.
-        """
-    debuglevel = 0
-    file = None
-    helo_resp = None
-    ehlo_msg = "ehlo"
-    ehlo_resp = None
-    does_esmtp = 0
-    default_port = SMTP_PORT
-
-    def __init__(self, host='', port=0, local_hostname=None,
-                 timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
-        """Initialize a new instance.
-
-        If specified, `host' is the name of the remote host to which to
-        connect.  If specified, `port' specifies the port to which to connect.
-        By default, smtplib.SMTP_PORT is used.  An SMTPConnectError is raised
-        if the specified `host' doesn't respond correctly.  If specified,
-        `local_hostname` is used as the FQDN of the local host.  By default,
-        the local hostname is found using socket.getfqdn().
-
-        """
-        self.timeout = timeout
-        self.esmtp_features = {}
-        if host:
-            (code, msg) = self.connect(host, port)
-            if code != 220:
-                raise SMTPConnectError(code, msg)
-        if local_hostname is not None:
-            self.local_hostname = local_hostname
-        else:
-            # RFC 2821 says we should use the fqdn in the EHLO/HELO verb, and
-            # if that can't be calculated, that we should use a domain literal
-            # instead (essentially an encoded IP address like [A.B.C.D]).
-            fqdn = socket.getfqdn()
-            if '.' in fqdn:
-                self.local_hostname = fqdn
-            else:
-                # We can't find an fqdn hostname, so use a domain literal
-                addr = '127.0.0.1'
-                try:
-                    addr = socket.gethostbyname(socket.gethostname())
-                except socket.gaierror:
-                    pass
-                self.local_hostname = '[%s]' % addr
-
-    def set_debuglevel(self, debuglevel):
-        """Set the debug output level.
-
-        A non-false value results in debug messages for connection and for all
-        messages sent to and received from the server.
-
-        """
-        self.debuglevel = debuglevel
-
-    def _get_socket(self, port, host, timeout):
-        # This makes it simpler for SMTP_SSL to use the SMTP connect code
-        # and just alter the socket connection bit.
-        if self.debuglevel > 0:
-            print>>stderr, 'connect:', (host, port)
-        return socket.create_connection((port, host), timeout)
-
-    def connect(self, host='localhost', port=0):
-        """Connect to a host on a given port.
-
-        If the hostname ends with a colon (`:') followed by a number, and
-        there is no port specified, that suffix will be stripped off and the
-        number interpreted as the port number to use.
-
-        Note: This method is automatically invoked by __init__, if a host is
-        specified during instantiation.
-
-        """
-        if not port and (host.find(':') == host.rfind(':')):
-            i = host.rfind(':')
-            if i >= 0:
-                host, port = host[:i], host[i + 1:]
-                try:
-                    port = int(port)
-                except ValueError:
-                    raise socket.error, "nonnumeric port"
-        if not port:
-            port = self.default_port
-        if self.debuglevel > 0:
-            print>>stderr, 'connect:', (host, port)
-        self.sock = self._get_socket(host, port, self.timeout)
-        (code, msg) = self.getreply()
-        if self.debuglevel > 0:
-            print>>stderr, "connect:", msg
-        return (code, msg)
-
-    def send(self, str):
-        """Send `str' to the server."""
-        if self.debuglevel > 0:
-            print>>stderr, 'send:', repr(str)
-        if hasattr(self, 'sock') and self.sock:
-            try:
-                self.sock.sendall(str)
-            except socket.error:
-                self.close()
-                raise SMTPServerDisconnected('Server not connected')
-        else:
-            raise SMTPServerDisconnected('please run connect() first')
-
-    def putcmd(self, cmd, args=""):
-        """Send a command to the server."""
-        if args == "":
-            str = '%s%s' % (cmd, CRLF)
-        else:
-            str = '%s %s%s' % (cmd, args, CRLF)
-        self.send(str)
-
-    def getreply(self):
-        """Get a reply from the server.
-
-        Returns a tuple consisting of:
-
-          - server response code (e.g. '250', or such, if all goes well)
-            Note: returns -1 if it can't read response code.
-
-          - server response string corresponding to response code (multiline
-            responses are converted to a single, multiline string).
-
-        Raises SMTPServerDisconnected if end-of-file is reached.
-        """
-        resp = []
-        if self.file is None:
-            self.file = self.sock.makefile('rb')
-        while 1:
-            try:
-                line = self.file.readline()
-            except socket.error:
-                line = ''
-            if line == '':
-                self.close()
-                raise SMTPServerDisconnected("Connection unexpectedly closed")
-            if self.debuglevel > 0:
-                print>>stderr, 'reply:', repr(line)
-            resp.append(line[4:].strip())
-            code = line[:3]
-            # Check that the error code is syntactically correct.
-            # Don't attempt to read a continuation line if it is broken.
-            try:
-                errcode = int(code)
-            except ValueError:
-                errcode = -1
-                break
-            # Check if multiline response.
-            if line[3:4] != "-":
-                break
-
-        errmsg = "\n".join(resp)
-        if self.debuglevel > 0:
-            print>>stderr, 'reply: retcode (%s); Msg: %s' % (errcode, errmsg)
-        return errcode, errmsg
-
-    def docmd(self, cmd, args=""):
-        """Send a command, and return its response code."""
-        self.putcmd(cmd, args)
-        return self.getreply()
-
-    # std smtp commands
-    def helo(self, name=''):
-        """SMTP 'helo' command.
-        Hostname to send for this command defaults to the FQDN of the local
-        host.
-        """
-        self.putcmd("helo", name or self.local_hostname)
-        (code, msg) = self.getreply()
-        self.helo_resp = msg
-        return (code, msg)
-
-    def ehlo(self, name=''):
-        """ SMTP 'ehlo' command.
-        Hostname to send for this command defaults to the FQDN of the local
-        host.
-        """
-        self.esmtp_features = {}
-        self.putcmd(self.ehlo_msg, name or self.local_hostname)
-        (code, msg) = self.getreply()
-        # According to RFC1869 some (badly written)
-        # MTA's will disconnect on an ehlo. Toss an exception if
-        # that happens -ddm
-        if code == -1 and len(msg) == 0:
-            self.close()
-            raise SMTPServerDisconnected("Server not connected")
-        self.ehlo_resp = msg
-        if code != 250:
-            return (code, msg)
-        self.does_esmtp = 1
-        #parse the ehlo response -ddm
-        resp = self.ehlo_resp.split('\n')
-        del resp[0]
-        for each in resp:
-            # To be able to communicate with as many SMTP servers as possible,
-            # we have to take the old-style auth advertisement into account,
-            # because:
-            # 1) Else our SMTP feature parser gets confused.
-            # 2) There are some servers that only advertise the auth methods we
-            #    support using the old style.
-            auth_match = OLDSTYLE_AUTH.match(each)
-            if auth_match:
-                # This doesn't remove duplicates, but that's no problem
-                self.esmtp_features["auth"] = self.esmtp_features.get("auth", "") \
-                        + " " + auth_match.groups(0)[0]
-                continue
-
-            # RFC 1869 requires a space between ehlo keyword and parameters.
-            # It's actually stricter, in that only spaces are allowed between
-            # parameters, but were not going to check for that here.  Note
-            # that the space isn't present if there are no parameters.
-            m = re.match(r'(?P<feature>[A-Za-z0-9][A-Za-z0-9\-]*) ?', each)
-            if m:
-                feature = m.group("feature").lower()
-                params = m.string[m.end("feature"):].strip()
-                if feature == "auth":
-                    self.esmtp_features[feature] = self.esmtp_features.get(feature, "") \
-                            + " " + params
-                else:
-                    self.esmtp_features[feature] = params
-        return (code, msg)
-
-    def has_extn(self, opt):
-        """Does the server support a given SMTP service extension?"""
-        return opt.lower() in self.esmtp_features
-
-    def help(self, args=''):
-        """SMTP 'help' command.
-        Returns help text from server."""
-        self.putcmd("help", args)
-        return self.getreply()[1]
-
-    def rset(self):
-        """SMTP 'rset' command -- resets session."""
-        return self.docmd("rset")
-
-    def noop(self):
-        """SMTP 'noop' command -- doesn't do anything :>"""
-        return self.docmd("noop")
-
-    def mail(self, sender, options=[]):
-        """SMTP 'mail' command -- begins mail xfer session."""
-        optionlist = ''
-        if options and self.does_esmtp:
-            optionlist = ' ' + ' '.join(options)
-        self.putcmd("mail", "FROM:%s%s" % (quoteaddr(sender), optionlist))
-        return self.getreply()
-
-    def rcpt(self, recip, options=[]):
-        """SMTP 'rcpt' command -- indicates 1 recipient for this mail."""
-        optionlist = ''
-        if options and self.does_esmtp:
-            optionlist = ' ' + ' '.join(options)
-        self.putcmd("rcpt", "TO:%s%s" % (quoteaddr(recip), optionlist))
-        return self.getreply()
-
-    def data(self, msg):
-        """SMTP 'DATA' command -- sends message data to server.
-
-        Automatically quotes lines beginning with a period per rfc821.
-        Raises SMTPDataError if there is an unexpected reply to the
-        DATA command; the return value from this method is the final
-        response code received when the all data is sent.
-        """
-        self.putcmd("data")
-        (code, repl) = self.getreply()
-        if self.debuglevel > 0:
-            print>>stderr, "data:", (code, repl)
-        if code != 354:
-            raise SMTPDataError(code, repl)
-        else:
-            q = quotedata(msg)
-            if q[-2:] != CRLF:
-                q = q + CRLF
-            q = q + "." + CRLF
-            self.send(q)
-            (code, msg) = self.getreply()
-            if self.debuglevel > 0:
-                print>>stderr, "data:", (code, msg)
-            return (code, msg)
-
-    def verify(self, address):
-        """SMTP 'verify' command -- checks for address validity."""
-        self.putcmd("vrfy", quoteaddr(address))
-        return self.getreply()
-    # a.k.a.
-    vrfy = verify
-
-    def expn(self, address):
-        """SMTP 'expn' command -- expands a mailing list."""
-        self.putcmd("expn", quoteaddr(address))
-        return self.getreply()
-
-    # some useful methods
-
-    def ehlo_or_helo_if_needed(self):
-        """Call self.ehlo() and/or self.helo() if needed.
-
-        If there has been no previous EHLO or HELO command this session, this
-        method tries ESMTP EHLO first.
-
-        This method may raise the following exceptions:
-
-         SMTPHeloError            The server didn't reply properly to
-                                  the helo greeting.
-        """
-        if self.helo_resp is None and self.ehlo_resp is None:
-            if not (200 <= self.ehlo()[0] <= 299):
-                (code, resp) = self.helo()
-                if not (200 <= code <= 299):
-                    raise SMTPHeloError(code, resp)
-
-    def login(self, user, password):
-        """Log in on an SMTP server that requires authentication.
-
-        The arguments are:
-            - user:     The user name to authenticate with.
-            - password: The password for the authentication.
-
-        If there has been no previous EHLO or HELO command this session, this
-        method tries ESMTP EHLO first.
-
-        This method will return normally if the authentication was successful.
-
-        This method may raise the following exceptions:
-
-         SMTPHeloError            The server didn't reply properly to
-                                  the helo greeting.
-         SMTPAuthenticationError  The server didn't accept the username/
-                                  password combination.
-         SMTPException            No suitable authentication method was
-                                  found.
-        """
-
-        def encode_cram_md5(challenge, user, password):
-            challenge = base64.decodestring(challenge)
-            response = user + " " + hmac.HMAC(password, challenge).hexdigest()
-            return encode_base64(response, eol="")
-
-        def encode_plain(user, password):
-            return encode_base64("\0%s\0%s" % (user, password), eol="")
-
-
-        AUTH_PLAIN = "PLAIN"
-        AUTH_CRAM_MD5 = "CRAM-MD5"
-        AUTH_LOGIN = "LOGIN"
-
-        self.ehlo_or_helo_if_needed()
-
-        if not self.has_extn("auth"):
-            raise SMTPException("SMTP AUTH extension not supported by server.")
-
-        # Authentication methods the server supports:
-        authlist = self.esmtp_features["auth"].split()
-
-        # List of authentication methods we support: from preferred to
-        # less preferred methods. Except for the purpose of testing the weaker
-        # ones, we prefer stronger methods like CRAM-MD5:
-        preferred_auths = [AUTH_CRAM_MD5, AUTH_PLAIN, AUTH_LOGIN]
-
-        # Determine the authentication method we'll use
-        authmethod = None
-        for method in preferred_auths:
-            if method in authlist:
-                authmethod = method
-                break
-
-        if authmethod == AUTH_CRAM_MD5:
-            (code, resp) = self.docmd("AUTH", AUTH_CRAM_MD5)
-            if code == 503:
-                # 503 == 'Error: already authenticated'
-                return (code, resp)
-            (code, resp) = self.docmd(encode_cram_md5(resp, user, password))
-        elif authmethod == AUTH_PLAIN:
-            (code, resp) = self.docmd("AUTH",
-                AUTH_PLAIN + " " + encode_plain(user, password))
-        elif authmethod == AUTH_LOGIN:
-            (code, resp) = self.docmd("AUTH",
-                "%s %s" % (AUTH_LOGIN, encode_base64(user, eol="")))
-            if code != 334:
-                raise SMTPAuthenticationError(code, resp)
-            (code, resp) = self.docmd(encode_base64(password, eol=""))
-        elif authmethod is None:
-            raise SMTPException("No suitable authentication method found.")
-        if code not in (235, 503):
-            # 235 == 'Authentication successful'
-            # 503 == 'Error: already authenticated'
-            raise SMTPAuthenticationError(code, resp)
-        return (code, resp)
-
-    def starttls(self, keyfile=None, certfile=None):
-        """Puts the connection to the SMTP server into TLS mode.
-
-        If there has been no previous EHLO or HELO command this session, this
-        method tries ESMTP EHLO first.
-
-        If the server supports TLS, this will encrypt the rest of the SMTP
-        session. If you provide the keyfile and certfile parameters,
-        the identity of the SMTP server and client can be checked. This,
-        however, depends on whether the socket module really checks the
-        certificates.
-
-        This method may raise the following exceptions:
-
-         SMTPHeloError            The server didn't reply properly to
-                                  the helo greeting.
-        """
-        self.ehlo_or_helo_if_needed()
-        if not self.has_extn("starttls"):
-            raise SMTPException("STARTTLS extension not supported by server.")
-        (resp, reply) = self.docmd("STARTTLS")
-        if resp == 220:
-            if not _have_ssl:
-                raise RuntimeError("No SSL support included in this Python")
-            self.sock = ssl.wrap_socket(self.sock, keyfile, certfile)
-            self.file = SSLFakeFile(self.sock)
-            # RFC 3207:
-            # The client MUST discard any knowledge obtained from
-            # the server, such as the list of SMTP service extensions,
-            # which was not obtained from the TLS negotiation itself.
-            self.helo_resp = None
-            self.ehlo_resp = None
-            self.esmtp_features = {}
-            self.does_esmtp = 0
-        return (resp, reply)
-
-    def sendmail(self, from_addr, to_addrs, msg, mail_options=[],
-                 rcpt_options=[]):
-        """This command performs an entire mail transaction.
-
-        The arguments are:
-            - from_addr    : The address sending this mail.
-            - to_addrs     : A list of addresses to send this mail to.  A bare
-                             string will be treated as a list with 1 address.
-            - msg          : The message to send.
-            - mail_options : List of ESMTP options (such as 8bitmime) for the
-                             mail command.
-            - rcpt_options : List of ESMTP options (such as DSN commands) for
-                             all the rcpt commands.
-
-        If there has been no previous EHLO or HELO command this session, this
-        method tries ESMTP EHLO first.  If the server does ESMTP, message size
-        and each of the specified options will be passed to it.  If EHLO
-        fails, HELO will be tried and ESMTP options suppressed.
-
-        This method will return normally if the mail is accepted for at least
-        one recipient.  It returns a dictionary, with one entry for each
-        recipient that was refused.  Each entry contains a tuple of the SMTP
-        error code and the accompanying error message sent by the server.
-
-        This method may raise the following exceptions:
-
-         SMTPHeloError          The server didn't reply properly to
-                                the helo greeting.
-         SMTPRecipientsRefused  The server rejected ALL recipients
-                                (no mail was sent).
-         SMTPSenderRefused      The server didn't accept the from_addr.
-         SMTPDataError          The server replied with an unexpected
-                                error code (other than a refusal of
-                                a recipient).
-
-        Note: the connection will be open even after an exception is raised.
-
-        Example:
-
-         >>> import smtplib
-         >>> s=smtplib.SMTP("localhost")
-         >>> tolist=["one@one.org","two@two.org","three@three.org","four@four.org"]
-         >>> msg = '''\\
-         ... From: Me@my.org
-         ... Subject: testin'...
-         ...
-         ... This is a test '''
-         >>> s.sendmail("me@my.org",tolist,msg)
-         { "three@three.org" : ( 550 ,"User unknown" ) }
-         >>> s.quit()
-
-        In the above example, the message was accepted for delivery to three
-        of the four addresses, and one was rejected, with the error code
-        550.  If all addresses are accepted, then the method will return an
-        empty dictionary.
-
-        """
-        self.ehlo_or_helo_if_needed()
-        esmtp_opts = []
-        if self.does_esmtp:
-            # Hmmm? what's this? -ddm
-            # self.esmtp_features['7bit']=""
-            if self.has_extn('size'):
-                esmtp_opts.append("size=%d" % len(msg))
-            for option in mail_options:
-                esmtp_opts.append(option)
-
-        (code, resp) = self.mail(from_addr, esmtp_opts)
-        if code != 250:
-            self.rset()
-            raise SMTPSenderRefused(code, resp, from_addr)
-        senderrs = {}
-        if isinstance(to_addrs, basestring):
-            to_addrs = [to_addrs]
-        for each in to_addrs:
-            (code, resp) = self.rcpt(each, rcpt_options)
-            if (code != 250) and (code != 251):
-                senderrs[each] = (code, resp)
-        if len(senderrs) == len(to_addrs):
-            # the server refused all our recipients
-            self.rset()
-            raise SMTPRecipientsRefused(senderrs)
-        (code, resp) = self.data(msg)
-        if code != 250:
-            self.rset()
-            raise SMTPDataError(code, resp)
-        #if we got here then somebody got our mail
-        return senderrs
-
-
-    def close(self):
-        """Close the connection to the SMTP server."""
-        if self.file:
-            self.file.close()
-        self.file = None
-        if self.sock:
-            self.sock.close()
-        self.sock = None
-
-
-    def quit(self):
-        """Terminate the SMTP session."""
-        res = self.docmd("quit")
-        self.close()
-        return res
-
-if _have_ssl:
-
-    class SMTP_SSL(SMTP):
-        """ This is a subclass derived from SMTP that connects over an SSL encrypted
-        socket (to use this class you need a socket module that was compiled with SSL
-        support). If host is not specified, '' (the local host) is used. If port is
-        omitted, the standard SMTP-over-SSL port (465) is used. keyfile and certfile
-        are also optional - they can contain a PEM formatted private key and
-        certificate chain file for the SSL connection.
-        """
-
-        default_port = SMTP_SSL_PORT
-
-        def __init__(self, host='', port=0, local_hostname=None,
-                     keyfile=None, certfile=None,
-                     timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
-            self.keyfile = keyfile
-            self.certfile = certfile
-            SMTP.__init__(self, host, port, local_hostname, timeout)
-
-        def _get_socket(self, host, port, timeout):
-            if self.debuglevel > 0:
-                print>>stderr, 'connect:', (host, port)
-            new_socket = socket.create_connection((host, port), timeout)
-            new_socket = ssl.wrap_socket(new_socket, self.keyfile, self.certfile)
-            self.file = SSLFakeFile(new_socket)
-            return new_socket
-
-    __all__.append("SMTP_SSL")
-
-#
-# LMTP extension
-#
-LMTP_PORT = 2003
-
-class LMTP(SMTP):
-    """LMTP - Local Mail Transfer Protocol
-
-    The LMTP protocol, which is very similar to ESMTP, is heavily based
-    on the standard SMTP client. It's common to use Unix sockets for LMTP,
-    so our connect() method must support that as well as a regular
-    host:port server. To specify a Unix socket, you must use an absolute
-    path as the host, starting with a '/'.
-
-    Authentication is supported, using the regular SMTP mechanism. When
-    using a Unix socket, LMTP generally don't support or require any
-    authentication, but your mileage might vary."""
-
-    ehlo_msg = "lhlo"
-
-    def __init__(self, host='', port=LMTP_PORT, local_hostname=None):
-        """Initialize a new instance."""
-        SMTP.__init__(self, host, port, local_hostname)
-
-    def connect(self, host='localhost', port=0):
-        """Connect to the LMTP daemon, on either a Unix or a TCP socket."""
-        if host[0] != '/':
-            return SMTP.connect(self, host, port)
-
-        # Handle Unix-domain sockets.
-        try:
-            self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
-            self.sock.connect(host)
-        except socket.error, msg:
-            if self.debuglevel > 0:
-                print>>stderr, 'connect fail:', host
-            if self.sock:
-                self.sock.close()
-            self.sock = None
-            raise socket.error, msg
-        (code, msg) = self.getreply()
-        if self.debuglevel > 0:
-            print>>stderr, "connect:", msg
-        return (code, msg)
-
-
-# Test the sendmail method, which tests most of the others.
-# Note: This always sends to localhost.
-if __name__ == '__main__':
-    import sys
-
-    def prompt(prompt):
-        sys.stdout.write(prompt + ": ")
-        return sys.stdin.readline().strip()
-
-    fromaddr = prompt("From")
-    toaddrs = prompt("To").split(',')
-    print "Enter message, end with ^D:"
-    msg = ''
-    while 1:
-        line = sys.stdin.readline()
-        if not line:
-            break
-        msg = msg + line
-    print "Message length is %d" % len(msg)
-
-    server = SMTP('localhost')
-    server.set_debuglevel(1)
-    server.sendmail(fromaddr, toaddrs, msg)
-    server.quit()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/sndhdr.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/sndhdr.py
deleted file mode 100644
index 5620f93..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/sndhdr.py
+++ /dev/null
@@ -1,228 +0,0 @@
-"""Routines to help recognizing sound files.
-
-Function whathdr() recognizes various types of sound file headers.
-It understands almost all headers that SOX can decode.
-
-The return tuple contains the following items, in this order:
-- file type (as SOX understands it)
-- sampling rate (0 if unknown or hard to decode)
-- number of channels (0 if unknown or hard to decode)
-- number of frames in the file (-1 if unknown or hard to decode)
-- number of bits/sample, or 'U' for U-LAW, or 'A' for A-LAW
-
-If the file doesn't have a recognizable type, it returns None.
-If the file can't be opened, IOError is raised.
-
-To compute the total time, divide the number of frames by the
-sampling rate (a frame contains a sample for each channel).
-
-Function what() calls whathdr().  (It used to also use some
-heuristics for raw data, but this doesn't work very well.)
-
-Finally, the function test() is a simple main program that calls
-what() for all files mentioned on the argument list.  For directory
-arguments it calls what() for all files in that directory.  Default
-argument is "." (testing all files in the current directory).  The
-option -r tells it to recurse down directories found inside
-explicitly given directories.
-"""
-
-# The file structure is top-down except that the test program and its
-# subroutine come last.
-
-__all__ = ["what","whathdr"]
-
-def what(filename):
-    """Guess the type of a sound file"""
-    res = whathdr(filename)
-    return res
-
-
-def whathdr(filename):
-    """Recognize sound headers"""
-    f = open(filename, 'rb')
-    h = f.read(512)
-    for tf in tests:
-        res = tf(h, f)
-        if res:
-            return res
-    return None
-
-
-#-----------------------------------#
-# Subroutines per sound header type #
-#-----------------------------------#
-
-tests = []
-
-def test_aifc(h, f):
-    import aifc
-    if h[:4] != 'FORM':
-        return None
-    if h[8:12] == 'AIFC':
-        fmt = 'aifc'
-    elif h[8:12] == 'AIFF':
-        fmt = 'aiff'
-    else:
-        return None
-    f.seek(0)
-    try:
-        a = aifc.openfp(f, 'r')
-    except (EOFError, aifc.Error):
-        return None
-    return (fmt, a.getframerate(), a.getnchannels(), \
-            a.getnframes(), 8*a.getsampwidth())
-
-tests.append(test_aifc)
-
-
-def test_au(h, f):
-    if h[:4] == '.snd':
-        f = get_long_be
-    elif h[:4] in ('\0ds.', 'dns.'):
-        f = get_long_le
-    else:
-        return None
-    type = 'au'
-    hdr_size = f(h[4:8])
-    data_size = f(h[8:12])
-    encoding = f(h[12:16])
-    rate = f(h[16:20])
-    nchannels = f(h[20:24])
-    sample_size = 1 # default
-    if encoding == 1:
-        sample_bits = 'U'
-    elif encoding == 2:
-        sample_bits = 8
-    elif encoding == 3:
-        sample_bits = 16
-        sample_size = 2
-    else:
-        sample_bits = '?'
-    frame_size = sample_size * nchannels
-    return type, rate, nchannels, data_size//frame_size, sample_bits
-
-tests.append(test_au)
-
-
-def test_hcom(h, f):
-    if h[65:69] != 'FSSD' or h[128:132] != 'HCOM':
-        return None
-    divisor = get_long_be(h[128+16:128+20])
-    return 'hcom', 22050//divisor, 1, -1, 8
-
-tests.append(test_hcom)
-
-
-def test_voc(h, f):
-    if h[:20] != 'Creative Voice File\032':
-        return None
-    sbseek = get_short_le(h[20:22])
-    rate = 0
-    if 0 <= sbseek < 500 and h[sbseek] == '\1':
-        ratecode = ord(h[sbseek+4])
-        rate = int(1000000.0 / (256 - ratecode))
-    return 'voc', rate, 1, -1, 8
-
-tests.append(test_voc)
-
-
-def test_wav(h, f):
-    # 'RIFF' <len> 'WAVE' 'fmt ' <len>
-    if h[:4] != 'RIFF' or h[8:12] != 'WAVE' or h[12:16] != 'fmt ':
-        return None
-    style = get_short_le(h[20:22])
-    nchannels = get_short_le(h[22:24])
-    rate = get_long_le(h[24:28])
-    sample_bits = get_short_le(h[34:36])
-    return 'wav', rate, nchannels, -1, sample_bits
-
-tests.append(test_wav)
-
-
-def test_8svx(h, f):
-    if h[:4] != 'FORM' or h[8:12] != '8SVX':
-        return None
-    # Should decode it to get #channels -- assume always 1
-    return '8svx', 0, 1, 0, 8
-
-tests.append(test_8svx)
-
-
-def test_sndt(h, f):
-    if h[:5] == 'SOUND':
-        nsamples = get_long_le(h[8:12])
-        rate = get_short_le(h[20:22])
-        return 'sndt', rate, 1, nsamples, 8
-
-tests.append(test_sndt)
-
-
-def test_sndr(h, f):
-    if h[:2] == '\0\0':
-        rate = get_short_le(h[2:4])
-        if 4000 <= rate <= 25000:
-            return 'sndr', rate, 1, -1, 8
-
-tests.append(test_sndr)
-
-
-#---------------------------------------------#
-# Subroutines to extract numbers from strings #
-#---------------------------------------------#
-
-def get_long_be(s):
-    return (ord(s[0])<<24) | (ord(s[1])<<16) | (ord(s[2])<<8) | ord(s[3])
-
-def get_long_le(s):
-    return (ord(s[3])<<24) | (ord(s[2])<<16) | (ord(s[1])<<8) | ord(s[0])
-
-def get_short_be(s):
-    return (ord(s[0])<<8) | ord(s[1])
-
-def get_short_le(s):
-    return (ord(s[1])<<8) | ord(s[0])
-
-
-#--------------------#
-# Small test program #
-#--------------------#
-
-def test():
-    import sys
-    recursive = 0
-    if sys.argv[1:] and sys.argv[1] == '-r':
-        del sys.argv[1:2]
-        recursive = 1
-    try:
-        if sys.argv[1:]:
-            testall(sys.argv[1:], recursive, 1)
-        else:
-            testall(['.'], recursive, 1)
-    except KeyboardInterrupt:
-        sys.stderr.write('\n[Interrupted]\n')
-        sys.exit(1)
-
-def testall(list, recursive, toplevel):
-    import sys
-    import os
-    for filename in list:
-        if os.path.isdir(filename):
-            print filename + '/:',
-            if recursive or toplevel:
-                print 'recursing down:'
-                import glob
-                names = glob.glob(os.path.join(filename, '*'))
-                testall(names, recursive, 0)
-            else:
-                print '*** directory (use -r) ***'
-        else:
-            print filename + ':',
-            sys.stdout.flush()
-            try:
-                print what(filename)
-            except IOError:
-                print '*** not found ***'
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/socket.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/socket.py
deleted file mode 100644
index a84a680..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/socket.py
+++ /dev/null
@@ -1,573 +0,0 @@
-# Wrapper module for _socket, providing some additional facilities
-# implemented in Python.
-
-"""\
-This module provides socket operations and some related functions.
-On Unix, it supports IP (Internet Protocol) and Unix domain sockets.
-On other systems, it only supports IP. Functions specific for a
-socket are available as methods of the socket object.
-
-Functions:
-
-socket() -- create a new socket object
-socketpair() -- create a pair of new socket objects [*]
-fromfd() -- create a socket object from an open file descriptor [*]
-gethostname() -- return the current hostname
-gethostbyname() -- map a hostname to its IP number
-gethostbyaddr() -- map an IP number or hostname to DNS info
-getservbyname() -- map a service name and a protocol name to a port number
-getprotobyname() -- map a protocol name (e.g. 'tcp') to a number
-ntohs(), ntohl() -- convert 16, 32 bit int from network to host byte order
-htons(), htonl() -- convert 16, 32 bit int from host to network byte order
-inet_aton() -- convert IP addr string (123.45.67.89) to 32-bit packed format
-inet_ntoa() -- convert 32-bit packed format IP to string (123.45.67.89)
-ssl() -- secure socket layer support (only available if configured)
-socket.getdefaulttimeout() -- get the default timeout value
-socket.setdefaulttimeout() -- set the default timeout value
-create_connection() -- connects to an address, with an optional timeout and
-                       optional source address.
-
- [*] not available on all platforms!
-
-Special objects:
-
-SocketType -- type object for socket objects
-error -- exception raised for I/O errors
-has_ipv6 -- boolean value indicating if IPv6 is supported
-
-Integer constants:
-
-AF_INET, AF_UNIX -- socket domains (first argument to socket() call)
-SOCK_STREAM, SOCK_DGRAM, SOCK_RAW -- socket types (second argument)
-
-Many other constants may be defined; these may be used in calls to
-the setsockopt() and getsockopt() methods.
-"""
-
-import _socket
-from _socket import *
-from functools import partial
-from types import MethodType
-
-try:
-    import _ssl
-except ImportError:
-    # no SSL support
-    pass
-else:
-    def ssl(sock, keyfile=None, certfile=None):
-        # we do an internal import here because the ssl
-        # module imports the socket module
-        import ssl as _realssl
-        warnings.warn("socket.ssl() is deprecated.  Use ssl.wrap_socket() instead.",
-                      DeprecationWarning, stacklevel=2)
-        return _realssl.sslwrap_simple(sock, keyfile, certfile)
-
-    # we need to import the same constants we used to...
-    from _ssl import SSLError as sslerror
-    from _ssl import \
-         RAND_add, \
-         RAND_egd, \
-         RAND_status, \
-         SSL_ERROR_ZERO_RETURN, \
-         SSL_ERROR_WANT_READ, \
-         SSL_ERROR_WANT_WRITE, \
-         SSL_ERROR_WANT_X509_LOOKUP, \
-         SSL_ERROR_SYSCALL, \
-         SSL_ERROR_SSL, \
-         SSL_ERROR_WANT_CONNECT, \
-         SSL_ERROR_EOF, \
-         SSL_ERROR_INVALID_ERROR_CODE
-
-import os, sys, warnings
-
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-try:
-    import errno
-except ImportError:
-    errno = None
-EBADF = getattr(errno, 'EBADF', 9)
-EINTR = getattr(errno, 'EINTR', 4)
-
-__all__ = ["getfqdn", "create_connection"]
-__all__.extend(os._get_exports_list(_socket))
-
-
-_realsocket = socket
-
-# WSA error codes
-if sys.platform.lower().startswith("win"):
-    errorTab = {}
-    errorTab[10004] = "The operation was interrupted."
-    errorTab[10009] = "A bad file handle was passed."
-    errorTab[10013] = "Permission denied."
-    errorTab[10014] = "A fault occurred on the network??" # WSAEFAULT
-    errorTab[10022] = "An invalid operation was attempted."
-    errorTab[10035] = "The socket operation would block"
-    errorTab[10036] = "A blocking operation is already in progress."
-    errorTab[10048] = "The network address is in use."
-    errorTab[10054] = "The connection has been reset."
-    errorTab[10058] = "The network has been shut down."
-    errorTab[10060] = "The operation timed out."
-    errorTab[10061] = "Connection refused."
-    errorTab[10063] = "The name is too long."
-    errorTab[10064] = "The host is down."
-    errorTab[10065] = "The host is unreachable."
-    __all__.append("errorTab")
-
-
-
-def getfqdn(name=''):
-    """Get fully qualified domain name from name.
-
-    An empty argument is interpreted as meaning the local host.
-
-    First the hostname returned by gethostbyaddr() is checked, then
-    possibly existing aliases. In case no FQDN is available, hostname
-    from gethostname() is returned.
-    """
-    name = name.strip()
-    if not name or name == '0.0.0.0':
-        name = gethostname()
-    try:
-        hostname, aliases, ipaddrs = gethostbyaddr(name)
-    except error:
-        pass
-    else:
-        aliases.insert(0, hostname)
-        for name in aliases:
-            if '.' in name:
-                break
-        else:
-            name = hostname
-    return name
-
-
-_socketmethods = (
-    'bind', 'connect', 'connect_ex', 'fileno', 'listen',
-    'getpeername', 'getsockname', 'getsockopt', 'setsockopt',
-    'sendall', 'setblocking',
-    'settimeout', 'gettimeout', 'shutdown')
-
-if os.name == "nt":
-    _socketmethods = _socketmethods + ('ioctl',)
-
-if sys.platform == "riscos":
-    _socketmethods = _socketmethods + ('sleeptaskw',)
-
-# All the method names that must be delegated to either the real socket
-# object or the _closedsocket object.
-_delegate_methods = ("recv", "recvfrom", "recv_into", "recvfrom_into",
-                     "send", "sendto")
-
-class _closedsocket(object):
-    __slots__ = []
-    def _dummy(*args):
-        raise error(EBADF, 'Bad file descriptor')
-    # All _delegate_methods must also be initialized here.
-    send = recv = recv_into = sendto = recvfrom = recvfrom_into = _dummy
-    __getattr__ = _dummy
-
-# Wrapper around platform socket objects. This implements
-# a platform-independent dup() functionality. The
-# implementation currently relies on reference counting
-# to close the underlying socket object.
-class _socketobject(object):
-
-    __doc__ = _realsocket.__doc__
-
-    __slots__ = ["_sock", "__weakref__"] + list(_delegate_methods)
-
-    def __init__(self, family=AF_INET, type=SOCK_STREAM, proto=0, _sock=None):
-        if _sock is None:
-            _sock = _realsocket(family, type, proto)
-        self._sock = _sock
-        for method in _delegate_methods:
-            setattr(self, method, getattr(_sock, method))
-
-    def close(self, _closedsocket=_closedsocket,
-              _delegate_methods=_delegate_methods, setattr=setattr):
-        # This function should not reference any globals. See issue #808164.
-        self._sock = _closedsocket()
-        dummy = self._sock._dummy
-        for method in _delegate_methods:
-            setattr(self, method, dummy)
-    close.__doc__ = _realsocket.close.__doc__
-
-    def accept(self):
-        sock, addr = self._sock.accept()
-        return _socketobject(_sock=sock), addr
-    accept.__doc__ = _realsocket.accept.__doc__
-
-    def dup(self):
-        """dup() -> socket object
-
-        Return a new socket object connected to the same system resource."""
-        return _socketobject(_sock=self._sock)
-
-    def makefile(self, mode='r', bufsize=-1):
-        """makefile([mode[, bufsize]]) -> file object
-
-        Return a regular file object corresponding to the socket.  The mode
-        and bufsize arguments are as for the built-in open() function."""
-        return _fileobject(self._sock, mode, bufsize)
-
-    family = property(lambda self: self._sock.family, doc="the socket family")
-    type = property(lambda self: self._sock.type, doc="the socket type")
-    proto = property(lambda self: self._sock.proto, doc="the socket protocol")
-
-def meth(name,self,*args):
-    return getattr(self._sock,name)(*args)
-
-for _m in _socketmethods:
-    p = partial(meth,_m)
-    p.__name__ = _m
-    p.__doc__ = getattr(_realsocket,_m).__doc__
-    m = MethodType(p,None,_socketobject)
-    setattr(_socketobject,_m,m)
-
-socket = SocketType = _socketobject
-
-class _fileobject(object):
-    """Faux file object attached to a socket object."""
-
-    default_bufsize = 8192
-    name = "<socket>"
-
-    __slots__ = ["mode", "bufsize", "softspace",
-                 # "closed" is a property, see below
-                 "_sock", "_rbufsize", "_wbufsize", "_rbuf", "_wbuf", "_wbuf_len",
-                 "_close"]
-
-    def __init__(self, sock, mode='rb', bufsize=-1, close=False):
-        self._sock = sock
-        self.mode = mode # Not actually used in this version
-        if bufsize < 0:
-            bufsize = self.default_bufsize
-        self.bufsize = bufsize
-        self.softspace = False
-        # _rbufsize is the suggested recv buffer size.  It is *strictly*
-        # obeyed within readline() for recv calls.  If it is larger than
-        # default_bufsize it will be used for recv calls within read().
-        if bufsize == 0:
-            self._rbufsize = 1
-        elif bufsize == 1:
-            self._rbufsize = self.default_bufsize
-        else:
-            self._rbufsize = bufsize
-        self._wbufsize = bufsize
-        # We use StringIO for the read buffer to avoid holding a list
-        # of variously sized string objects which have been known to
-        # fragment the heap due to how they are malloc()ed and often
-        # realloc()ed down much smaller than their original allocation.
-        self._rbuf = StringIO()
-        self._wbuf = [] # A list of strings
-        self._wbuf_len = 0
-        self._close = close
-
-    def _getclosed(self):
-        return self._sock is None
-    closed = property(_getclosed, doc="True if the file is closed")
-
-    def close(self):
-        try:
-            if self._sock:
-                self.flush()
-        finally:
-            if self._close:
-                self._sock.close()
-            self._sock = None
-
-    def __del__(self):
-        try:
-            self.close()
-        except:
-            # close() may fail if __init__ didn't complete
-            pass
-
-    def flush(self):
-        if self._wbuf:
-            data = "".join(self._wbuf)
-            self._wbuf = []
-            self._wbuf_len = 0
-            buffer_size = max(self._rbufsize, self.default_bufsize)
-            data_size = len(data)
-            write_offset = 0
-            view = memoryview(data)
-            try:
-                while write_offset < data_size:
-                    self._sock.sendall(view[write_offset:write_offset+buffer_size])
-                    write_offset += buffer_size
-            finally:
-                if write_offset < data_size:
-                    remainder = data[write_offset:]
-                    del view, data  # explicit free
-                    self._wbuf.append(remainder)
-                    self._wbuf_len = len(remainder)
-
-    def fileno(self):
-        return self._sock.fileno()
-
-    def write(self, data):
-        data = str(data) # XXX Should really reject non-string non-buffers
-        if not data:
-            return
-        self._wbuf.append(data)
-        self._wbuf_len += len(data)
-        if (self._wbufsize == 0 or
-            self._wbufsize == 1 and '\n' in data or
-            self._wbuf_len >= self._wbufsize):
-            self.flush()
-
-    def writelines(self, list):
-        # XXX We could do better here for very long lists
-        # XXX Should really reject non-string non-buffers
-        lines = filter(None, map(str, list))
-        self._wbuf_len += sum(map(len, lines))
-        self._wbuf.extend(lines)
-        if (self._wbufsize <= 1 or
-            self._wbuf_len >= self._wbufsize):
-            self.flush()
-
-    def read(self, size=-1):
-        # Use max, disallow tiny reads in a loop as they are very inefficient.
-        # We never leave read() with any leftover data from a new recv() call
-        # in our internal buffer.
-        rbufsize = max(self._rbufsize, self.default_bufsize)
-        # Our use of StringIO rather than lists of string objects returned by
-        # recv() minimizes memory usage and fragmentation that occurs when
-        # rbufsize is large compared to the typical return value of recv().
-        buf = self._rbuf
-        buf.seek(0, 2)  # seek end
-        if size < 0:
-            # Read until EOF
-            self._rbuf = StringIO()  # reset _rbuf.  we consume it via buf.
-            while True:
-                try:
-                    data = self._sock.recv(rbufsize)
-                except error, e:
-                    if e.args[0] == EINTR:
-                        continue
-                    raise
-                if not data:
-                    break
-                buf.write(data)
-            return buf.getvalue()
-        else:
-            # Read until size bytes or EOF seen, whichever comes first
-            buf_len = buf.tell()
-            if buf_len >= size:
-                # Already have size bytes in our buffer?  Extract and return.
-                buf.seek(0)
-                rv = buf.read(size)
-                self._rbuf = StringIO()
-                self._rbuf.write(buf.read())
-                return rv
-
-            self._rbuf = StringIO()  # reset _rbuf.  we consume it via buf.
-            while True:
-                left = size - buf_len
-                # recv() will malloc the amount of memory given as its
-                # parameter even though it often returns much less data
-                # than that.  The returned data string is short lived
-                # as we copy it into a StringIO and free it.  This avoids
-                # fragmentation issues on many platforms.
-                try:
-                    data = self._sock.recv(left)
-                except error, e:
-                    if e.args[0] == EINTR:
-                        continue
-                    raise
-                if not data:
-                    break
-                n = len(data)
-                if n == size and not buf_len:
-                    # Shortcut.  Avoid buffer data copies when:
-                    # - We have no data in our buffer.
-                    # AND
-                    # - Our call to recv returned exactly the
-                    #   number of bytes we were asked to read.
-                    return data
-                if n == left:
-                    buf.write(data)
-                    del data  # explicit free
-                    break
-                assert n <= left, "recv(%d) returned %d bytes" % (left, n)
-                buf.write(data)
-                buf_len += n
-                del data  # explicit free
-                #assert buf_len == buf.tell()
-            return buf.getvalue()
-
-    def readline(self, size=-1):
-        buf = self._rbuf
-        buf.seek(0, 2)  # seek end
-        if buf.tell() > 0:
-            # check if we already have it in our buffer
-            buf.seek(0)
-            bline = buf.readline(size)
-            if bline.endswith('\n') or len(bline) == size:
-                self._rbuf = StringIO()
-                self._rbuf.write(buf.read())
-                return bline
-            del bline
-        if size < 0:
-            # Read until \n or EOF, whichever comes first
-            if self._rbufsize <= 1:
-                # Speed up unbuffered case
-                buf.seek(0)
-                buffers = [buf.read()]
-                self._rbuf = StringIO()  # reset _rbuf.  we consume it via buf.
-                data = None
-                recv = self._sock.recv
-                while True:
-                    try:
-                        while data != "\n":
-                            data = recv(1)
-                            if not data:
-                                break
-                            buffers.append(data)
-                    except error, e:
-                        # The try..except to catch EINTR was moved outside the
-                        # recv loop to avoid the per byte overhead.
-                        if e.args[0] == EINTR:
-                            continue
-                        raise
-                    break
-                return "".join(buffers)
-
-            buf.seek(0, 2)  # seek end
-            self._rbuf = StringIO()  # reset _rbuf.  we consume it via buf.
-            while True:
-                try:
-                    data = self._sock.recv(self._rbufsize)
-                except error, e:
-                    if e.args[0] == EINTR:
-                        continue
-                    raise
-                if not data:
-                    break
-                nl = data.find('\n')
-                if nl >= 0:
-                    nl += 1
-                    buf.write(data[:nl])
-                    self._rbuf.write(data[nl:])
-                    del data
-                    break
-                buf.write(data)
-            return buf.getvalue()
-        else:
-            # Read until size bytes or \n or EOF seen, whichever comes first
-            buf.seek(0, 2)  # seek end
-            buf_len = buf.tell()
-            if buf_len >= size:
-                buf.seek(0)
-                rv = buf.read(size)
-                self._rbuf = StringIO()
-                self._rbuf.write(buf.read())
-                return rv
-            self._rbuf = StringIO()  # reset _rbuf.  we consume it via buf.
-            while True:
-                try:
-                    data = self._sock.recv(self._rbufsize)
-                except error, e:
-                    if e.args[0] == EINTR:
-                        continue
-                    raise
-                if not data:
-                    break
-                left = size - buf_len
-                # did we just receive a newline?
-                nl = data.find('\n', 0, left)
-                if nl >= 0:
-                    nl += 1
-                    # save the excess data to _rbuf
-                    self._rbuf.write(data[nl:])
-                    if buf_len:
-                        buf.write(data[:nl])
-                        break
-                    else:
-                        # Shortcut.  Avoid data copy through buf when returning
-                        # a substring of our first recv().
-                        return data[:nl]
-                n = len(data)
-                if n == size and not buf_len:
-                    # Shortcut.  Avoid data copy through buf when
-                    # returning exactly all of our first recv().
-                    return data
-                if n >= left:
-                    buf.write(data[:left])
-                    self._rbuf.write(data[left:])
-                    break
-                buf.write(data)
-                buf_len += n
-                #assert buf_len == buf.tell()
-            return buf.getvalue()
-
-    def readlines(self, sizehint=0):
-        total = 0
-        list = []
-        while True:
-            line = self.readline()
-            if not line:
-                break
-            list.append(line)
-            total += len(line)
-            if sizehint and total >= sizehint:
-                break
-        return list
-
-    # Iterator protocols
-
-    def __iter__(self):
-        return self
-
-    def next(self):
-        line = self.readline()
-        if not line:
-            raise StopIteration
-        return line
-
-_GLOBAL_DEFAULT_TIMEOUT = object()
-
-def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,
-                      source_address=None):
-    """Connect to *address* and return the socket object.
-
-    Convenience function.  Connect to *address* (a 2-tuple ``(host,
-    port)``) and return the socket object.  Passing the optional
-    *timeout* parameter will set the timeout on the socket instance
-    before attempting to connect.  If no *timeout* is supplied, the
-    global default timeout setting returned by :func:`getdefaulttimeout`
-    is used.  If *source_address* is set it must be a tuple of (host, port)
-    for the socket to bind as a source address before making the connection.
-    An host of '' or port 0 tells the OS to use the default.
-    """
-
-    host, port = address
-    err = None
-    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
-        af, socktype, proto, canonname, sa = res
-        sock = None
-        try:
-            sock = socket(af, socktype, proto)
-            if timeout is not _GLOBAL_DEFAULT_TIMEOUT:
-                sock.settimeout(timeout)
-            if source_address:
-                sock.bind(source_address)
-            sock.connect(sa)
-            return sock
-
-        except error as _:
-            err = _
-            if sock is not None:
-                sock.close()
-
-    if err is not None:
-        raise err
-    else:
-        raise error("getaddrinfo returns an empty list")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/sre.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/sre.py
deleted file mode 100644
index 6d376ad..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/sre.py
+++ /dev/null
@@ -1,13 +0,0 @@
-"""This file is only retained for backwards compatibility.
-It will be removed in the future.  sre was moved to re in version 2.5.
-"""
-
-import warnings
-warnings.warn("The sre module is deprecated, please import re.",
-              DeprecationWarning, 2)
-
-from re import *
-from re import __all__
-
-# old pickles expect the _compile() reconstructor in this module
-from re import _compile
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/sre_compile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/sre_compile.py
deleted file mode 100644
index 4ebc3a2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/sre_compile.py
+++ /dev/null
@@ -1,524 +0,0 @@
-#
-# Secret Labs' Regular Expression Engine
-#
-# convert template to internal format
-#
-# Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
-#
-# See the sre.py file for information on usage and redistribution.
-#
-
-"""Internal support module for sre"""
-
-import _sre, sys
-import sre_parse
-from sre_constants import *
-
-assert _sre.MAGIC == MAGIC, "SRE module mismatch"
-
-if _sre.CODESIZE == 2:
-    MAXCODE = 65535
-else:
-    MAXCODE = 0xFFFFFFFFL
-
-def _identityfunction(x):
-    return x
-
-_LITERAL_CODES = set([LITERAL, NOT_LITERAL])
-_REPEATING_CODES = set([REPEAT, MIN_REPEAT, MAX_REPEAT])
-_SUCCESS_CODES = set([SUCCESS, FAILURE])
-_ASSERT_CODES = set([ASSERT, ASSERT_NOT])
-
-def _compile(code, pattern, flags):
-    # internal: compile a (sub)pattern
-    emit = code.append
-    _len = len
-    LITERAL_CODES = _LITERAL_CODES
-    REPEATING_CODES = _REPEATING_CODES
-    SUCCESS_CODES = _SUCCESS_CODES
-    ASSERT_CODES = _ASSERT_CODES
-    for op, av in pattern:
-        if op in LITERAL_CODES:
-            if flags & SRE_FLAG_IGNORECASE:
-                emit(OPCODES[OP_IGNORE[op]])
-                emit(_sre.getlower(av, flags))
-            else:
-                emit(OPCODES[op])
-                emit(av)
-        elif op is IN:
-            if flags & SRE_FLAG_IGNORECASE:
-                emit(OPCODES[OP_IGNORE[op]])
-                def fixup(literal, flags=flags):
-                    return _sre.getlower(literal, flags)
-            else:
-                emit(OPCODES[op])
-                fixup = _identityfunction
-            skip = _len(code); emit(0)
-            _compile_charset(av, flags, code, fixup)
-            code[skip] = _len(code) - skip
-        elif op is ANY:
-            if flags & SRE_FLAG_DOTALL:
-                emit(OPCODES[ANY_ALL])
-            else:
-                emit(OPCODES[ANY])
-        elif op in REPEATING_CODES:
-            if flags & SRE_FLAG_TEMPLATE:
-                raise error, "internal: unsupported template operator"
-                emit(OPCODES[REPEAT])
-                skip = _len(code); emit(0)
-                emit(av[0])
-                emit(av[1])
-                _compile(code, av[2], flags)
-                emit(OPCODES[SUCCESS])
-                code[skip] = _len(code) - skip
-            elif _simple(av) and op is not REPEAT:
-                if op is MAX_REPEAT:
-                    emit(OPCODES[REPEAT_ONE])
-                else:
-                    emit(OPCODES[MIN_REPEAT_ONE])
-                skip = _len(code); emit(0)
-                emit(av[0])
-                emit(av[1])
-                _compile(code, av[2], flags)
-                emit(OPCODES[SUCCESS])
-                code[skip] = _len(code) - skip
-            else:
-                emit(OPCODES[REPEAT])
-                skip = _len(code); emit(0)
-                emit(av[0])
-                emit(av[1])
-                _compile(code, av[2], flags)
-                code[skip] = _len(code) - skip
-                if op is MAX_REPEAT:
-                    emit(OPCODES[MAX_UNTIL])
-                else:
-                    emit(OPCODES[MIN_UNTIL])
-        elif op is SUBPATTERN:
-            if av[0]:
-                emit(OPCODES[MARK])
-                emit((av[0]-1)*2)
-            # _compile_info(code, av[1], flags)
-            _compile(code, av[1], flags)
-            if av[0]:
-                emit(OPCODES[MARK])
-                emit((av[0]-1)*2+1)
-        elif op in SUCCESS_CODES:
-            emit(OPCODES[op])
-        elif op in ASSERT_CODES:
-            emit(OPCODES[op])
-            skip = _len(code); emit(0)
-            if av[0] >= 0:
-                emit(0) # look ahead
-            else:
-                lo, hi = av[1].getwidth()
-                if lo != hi:
-                    raise error, "look-behind requires fixed-width pattern"
-                emit(lo) # look behind
-            _compile(code, av[1], flags)
-            emit(OPCODES[SUCCESS])
-            code[skip] = _len(code) - skip
-        elif op is CALL:
-            emit(OPCODES[op])
-            skip = _len(code); emit(0)
-            _compile(code, av, flags)
-            emit(OPCODES[SUCCESS])
-            code[skip] = _len(code) - skip
-        elif op is AT:
-            emit(OPCODES[op])
-            if flags & SRE_FLAG_MULTILINE:
-                av = AT_MULTILINE.get(av, av)
-            if flags & SRE_FLAG_LOCALE:
-                av = AT_LOCALE.get(av, av)
-            elif flags & SRE_FLAG_UNICODE:
-                av = AT_UNICODE.get(av, av)
-            emit(ATCODES[av])
-        elif op is BRANCH:
-            emit(OPCODES[op])
-            tail = []
-            tailappend = tail.append
-            for av in av[1]:
-                skip = _len(code); emit(0)
-                # _compile_info(code, av, flags)
-                _compile(code, av, flags)
-                emit(OPCODES[JUMP])
-                tailappend(_len(code)); emit(0)
-                code[skip] = _len(code) - skip
-            emit(0) # end of branch
-            for tail in tail:
-                code[tail] = _len(code) - tail
-        elif op is CATEGORY:
-            emit(OPCODES[op])
-            if flags & SRE_FLAG_LOCALE:
-                av = CH_LOCALE[av]
-            elif flags & SRE_FLAG_UNICODE:
-                av = CH_UNICODE[av]
-            emit(CHCODES[av])
-        elif op is GROUPREF:
-            if flags & SRE_FLAG_IGNORECASE:
-                emit(OPCODES[OP_IGNORE[op]])
-            else:
-                emit(OPCODES[op])
-            emit(av-1)
-        elif op is GROUPREF_EXISTS:
-            emit(OPCODES[op])
-            emit(av[0]-1)
-            skipyes = _len(code); emit(0)
-            _compile(code, av[1], flags)
-            if av[2]:
-                emit(OPCODES[JUMP])
-                skipno = _len(code); emit(0)
-                code[skipyes] = _len(code) - skipyes + 1
-                _compile(code, av[2], flags)
-                code[skipno] = _len(code) - skipno
-            else:
-                code[skipyes] = _len(code) - skipyes + 1
-        else:
-            raise ValueError, ("unsupported operand type", op)
-
-def _compile_charset(charset, flags, code, fixup=None):
-    # compile charset subprogram
-    emit = code.append
-    if fixup is None:
-        fixup = _identityfunction
-    for op, av in _optimize_charset(charset, fixup):
-        emit(OPCODES[op])
-        if op is NEGATE:
-            pass
-        elif op is LITERAL:
-            emit(fixup(av))
-        elif op is RANGE:
-            emit(fixup(av[0]))
-            emit(fixup(av[1]))
-        elif op is CHARSET:
-            code.extend(av)
-        elif op is BIGCHARSET:
-            code.extend(av)
-        elif op is CATEGORY:
-            if flags & SRE_FLAG_LOCALE:
-                emit(CHCODES[CH_LOCALE[av]])
-            elif flags & SRE_FLAG_UNICODE:
-                emit(CHCODES[CH_UNICODE[av]])
-            else:
-                emit(CHCODES[av])
-        else:
-            raise error, "internal: unsupported set operator"
-    emit(OPCODES[FAILURE])
-
-def _optimize_charset(charset, fixup):
-    # internal: optimize character set
-    out = []
-    outappend = out.append
-    charmap = [0]*256
-    try:
-        for op, av in charset:
-            if op is NEGATE:
-                outappend((op, av))
-            elif op is LITERAL:
-                charmap[fixup(av)] = 1
-            elif op is RANGE:
-                for i in range(fixup(av[0]), fixup(av[1])+1):
-                    charmap[i] = 1
-            elif op is CATEGORY:
-                # XXX: could append to charmap tail
-                return charset # cannot compress
-    except IndexError:
-        # character set contains unicode characters
-        return _optimize_unicode(charset, fixup)
-    # compress character map
-    i = p = n = 0
-    runs = []
-    runsappend = runs.append
-    for c in charmap:
-        if c:
-            if n == 0:
-                p = i
-            n = n + 1
-        elif n:
-            runsappend((p, n))
-            n = 0
-        i = i + 1
-    if n:
-        runsappend((p, n))
-    if len(runs) <= 2:
-        # use literal/range
-        for p, n in runs:
-            if n == 1:
-                outappend((LITERAL, p))
-            else:
-                outappend((RANGE, (p, p+n-1)))
-        if len(out) < len(charset):
-            return out
-    else:
-        # use bitmap
-        data = _mk_bitmap(charmap)
-        outappend((CHARSET, data))
-        return out
-    return charset
-
-def _mk_bitmap(bits):
-    data = []
-    dataappend = data.append
-    if _sre.CODESIZE == 2:
-        start = (1, 0)
-    else:
-        start = (1L, 0L)
-    m, v = start
-    for c in bits:
-        if c:
-            v = v + m
-        m = m + m
-        if m > MAXCODE:
-            dataappend(v)
-            m, v = start
-    return data
-
-# To represent a big charset, first a bitmap of all characters in the
-# set is constructed. Then, this bitmap is sliced into chunks of 256
-# characters, duplicate chunks are eliminated, and each chunk is
-# given a number. In the compiled expression, the charset is
-# represented by a 16-bit word sequence, consisting of one word for
-# the number of different chunks, a sequence of 256 bytes (128 words)
-# of chunk numbers indexed by their original chunk position, and a
-# sequence of chunks (16 words each).
-
-# Compression is normally good: in a typical charset, large ranges of
-# Unicode will be either completely excluded (e.g. if only cyrillic
-# letters are to be matched), or completely included (e.g. if large
-# subranges of Kanji match). These ranges will be represented by
-# chunks of all one-bits or all zero-bits.
-
-# Matching can be also done efficiently: the more significant byte of
-# the Unicode character is an index into the chunk number, and the
-# less significant byte is a bit index in the chunk (just like the
-# CHARSET matching).
-
-# In UCS-4 mode, the BIGCHARSET opcode still supports only subsets
-# of the basic multilingual plane; an efficient representation
-# for all of UTF-16 has not yet been developed. This means,
-# in particular, that negated charsets cannot be represented as
-# bigcharsets.
-
-def _optimize_unicode(charset, fixup):
-    try:
-        import array
-    except ImportError:
-        return charset
-    charmap = [0]*65536
-    negate = 0
-    try:
-        for op, av in charset:
-            if op is NEGATE:
-                negate = 1
-            elif op is LITERAL:
-                charmap[fixup(av)] = 1
-            elif op is RANGE:
-                for i in xrange(fixup(av[0]), fixup(av[1])+1):
-                    charmap[i] = 1
-            elif op is CATEGORY:
-                # XXX: could expand category
-                return charset # cannot compress
-    except IndexError:
-        # non-BMP characters
-        return charset
-    if negate:
-        if sys.maxunicode != 65535:
-            # XXX: negation does not work with big charsets
-            return charset
-        for i in xrange(65536):
-            charmap[i] = not charmap[i]
-    comps = {}
-    mapping = [0]*256
-    block = 0
-    data = []
-    for i in xrange(256):
-        chunk = tuple(charmap[i*256:(i+1)*256])
-        new = comps.setdefault(chunk, block)
-        mapping[i] = new
-        if new == block:
-            block = block + 1
-            data = data + _mk_bitmap(chunk)
-    header = [block]
-    if _sre.CODESIZE == 2:
-        code = 'H'
-    else:
-        code = 'I'
-    # Convert block indices to byte array of 256 bytes
-    mapping = array.array('b', mapping).tostring()
-    # Convert byte array to word array
-    mapping = array.array(code, mapping)
-    assert mapping.itemsize == _sre.CODESIZE
-    header = header + mapping.tolist()
-    data[0:0] = header
-    return [(BIGCHARSET, data)]
-
-def _simple(av):
-    # check if av is a "simple" operator
-    lo, hi = av[2].getwidth()
-    if lo == 0 and hi == MAXREPEAT:
-        raise error, "nothing to repeat"
-    return lo == hi == 1 and av[2][0][0] != SUBPATTERN
-
-def _compile_info(code, pattern, flags):
-    # internal: compile an info block.  in the current version,
-    # this contains min/max pattern width, and an optional literal
-    # prefix or a character map
-    lo, hi = pattern.getwidth()
-    if lo == 0:
-        return # not worth it
-    # look for a literal prefix
-    prefix = []
-    prefixappend = prefix.append
-    prefix_skip = 0
-    charset = [] # not used
-    charsetappend = charset.append
-    if not (flags & SRE_FLAG_IGNORECASE):
-        # look for literal prefix
-        for op, av in pattern.data:
-            if op is LITERAL:
-                if len(prefix) == prefix_skip:
-                    prefix_skip = prefix_skip + 1
-                prefixappend(av)
-            elif op is SUBPATTERN and len(av[1]) == 1:
-                op, av = av[1][0]
-                if op is LITERAL:
-                    prefixappend(av)
-                else:
-                    break
-            else:
-                break
-        # if no prefix, look for charset prefix
-        if not prefix and pattern.data:
-            op, av = pattern.data[0]
-            if op is SUBPATTERN and av[1]:
-                op, av = av[1][0]
-                if op is LITERAL:
-                    charsetappend((op, av))
-                elif op is BRANCH:
-                    c = []
-                    cappend = c.append
-                    for p in av[1]:
-                        if not p:
-                            break
-                        op, av = p[0]
-                        if op is LITERAL:
-                            cappend((op, av))
-                        else:
-                            break
-                    else:
-                        charset = c
-            elif op is BRANCH:
-                c = []
-                cappend = c.append
-                for p in av[1]:
-                    if not p:
-                        break
-                    op, av = p[0]
-                    if op is LITERAL:
-                        cappend((op, av))
-                    else:
-                        break
-                else:
-                    charset = c
-            elif op is IN:
-                charset = av
-##     if prefix:
-##         print "*** PREFIX", prefix, prefix_skip
-##     if charset:
-##         print "*** CHARSET", charset
-    # add an info block
-    emit = code.append
-    emit(OPCODES[INFO])
-    skip = len(code); emit(0)
-    # literal flag
-    mask = 0
-    if prefix:
-        mask = SRE_INFO_PREFIX
-        if len(prefix) == prefix_skip == len(pattern.data):
-            mask = mask + SRE_INFO_LITERAL
-    elif charset:
-        mask = mask + SRE_INFO_CHARSET
-    emit(mask)
-    # pattern length
-    if lo < MAXCODE:
-        emit(lo)
-    else:
-        emit(MAXCODE)
-        prefix = prefix[:MAXCODE]
-    if hi < MAXCODE:
-        emit(hi)
-    else:
-        emit(0)
-    # add literal prefix
-    if prefix:
-        emit(len(prefix)) # length
-        emit(prefix_skip) # skip
-        code.extend(prefix)
-        # generate overlap table
-        table = [-1] + ([0]*len(prefix))
-        for i in xrange(len(prefix)):
-            table[i+1] = table[i]+1
-            while table[i+1] > 0 and prefix[i] != prefix[table[i+1]-1]:
-                table[i+1] = table[table[i+1]-1]+1
-        code.extend(table[1:]) # don't store first entry
-    elif charset:
-        _compile_charset(charset, flags, code)
-    code[skip] = len(code) - skip
-
-try:
-    unicode
-except NameError:
-    STRING_TYPES = (type(""),)
-else:
-    STRING_TYPES = (type(""), type(unicode("")))
-
-def isstring(obj):
-    for tp in STRING_TYPES:
-        if isinstance(obj, tp):
-            return 1
-    return 0
-
-def _code(p, flags):
-
-    flags = p.pattern.flags | flags
-    code = []
-
-    # compile info block
-    _compile_info(code, p, flags)
-
-    # compile the pattern
-    _compile(code, p.data, flags)
-
-    code.append(OPCODES[SUCCESS])
-
-    return code
-
-def compile(p, flags=0):
-    # internal: convert pattern list to internal format
-
-    if isstring(p):
-        pattern = p
-        p = sre_parse.parse(p, flags)
-    else:
-        pattern = None
-
-    code = _code(p, flags)
-
-    # print code
-
-    # XXX: <fl> get rid of this limitation!
-    if p.pattern.groups > 100:
-        raise AssertionError(
-            "sorry, but this version only supports 100 named groups"
-            )
-
-    # map in either direction
-    groupindex = p.pattern.groupdict
-    indexgroup = [None] * p.pattern.groups
-    for k, i in groupindex.items():
-        indexgroup[i] = k
-
-    return _sre.compile(
-        pattern, flags | p.pattern.flags, code,
-        p.pattern.groups-1,
-        groupindex, indexgroup
-        )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/sre_constants.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/sre_constants.py
deleted file mode 100644
index 5c31c73..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/sre_constants.py
+++ /dev/null
@@ -1,261 +0,0 @@
-#
-# Secret Labs' Regular Expression Engine
-#
-# various symbols used by the regular expression engine.
-# run this script to update the _sre include files!
-#
-# Copyright (c) 1998-2001 by Secret Labs AB.  All rights reserved.
-#
-# See the sre.py file for information on usage and redistribution.
-#
-
-"""Internal support module for sre"""
-
-# update when constants are added or removed
-
-MAGIC = 20031017
-
-# max code word in this release
-
-MAXREPEAT = 65535
-
-# SRE standard exception (access as sre.error)
-# should this really be here?
-
-class error(Exception):
-    pass
-
-# operators
-
-FAILURE = "failure"
-SUCCESS = "success"
-
-ANY = "any"
-ANY_ALL = "any_all"
-ASSERT = "assert"
-ASSERT_NOT = "assert_not"
-AT = "at"
-BIGCHARSET = "bigcharset"
-BRANCH = "branch"
-CALL = "call"
-CATEGORY = "category"
-CHARSET = "charset"
-GROUPREF = "groupref"
-GROUPREF_IGNORE = "groupref_ignore"
-GROUPREF_EXISTS = "groupref_exists"
-IN = "in"
-IN_IGNORE = "in_ignore"
-INFO = "info"
-JUMP = "jump"
-LITERAL = "literal"
-LITERAL_IGNORE = "literal_ignore"
-MARK = "mark"
-MAX_REPEAT = "max_repeat"
-MAX_UNTIL = "max_until"
-MIN_REPEAT = "min_repeat"
-MIN_UNTIL = "min_until"
-NEGATE = "negate"
-NOT_LITERAL = "not_literal"
-NOT_LITERAL_IGNORE = "not_literal_ignore"
-RANGE = "range"
-REPEAT = "repeat"
-REPEAT_ONE = "repeat_one"
-SUBPATTERN = "subpattern"
-MIN_REPEAT_ONE = "min_repeat_one"
-
-# positions
-AT_BEGINNING = "at_beginning"
-AT_BEGINNING_LINE = "at_beginning_line"
-AT_BEGINNING_STRING = "at_beginning_string"
-AT_BOUNDARY = "at_boundary"
-AT_NON_BOUNDARY = "at_non_boundary"
-AT_END = "at_end"
-AT_END_LINE = "at_end_line"
-AT_END_STRING = "at_end_string"
-AT_LOC_BOUNDARY = "at_loc_boundary"
-AT_LOC_NON_BOUNDARY = "at_loc_non_boundary"
-AT_UNI_BOUNDARY = "at_uni_boundary"
-AT_UNI_NON_BOUNDARY = "at_uni_non_boundary"
-
-# categories
-CATEGORY_DIGIT = "category_digit"
-CATEGORY_NOT_DIGIT = "category_not_digit"
-CATEGORY_SPACE = "category_space"
-CATEGORY_NOT_SPACE = "category_not_space"
-CATEGORY_WORD = "category_word"
-CATEGORY_NOT_WORD = "category_not_word"
-CATEGORY_LINEBREAK = "category_linebreak"
-CATEGORY_NOT_LINEBREAK = "category_not_linebreak"
-CATEGORY_LOC_WORD = "category_loc_word"
-CATEGORY_LOC_NOT_WORD = "category_loc_not_word"
-CATEGORY_UNI_DIGIT = "category_uni_digit"
-CATEGORY_UNI_NOT_DIGIT = "category_uni_not_digit"
-CATEGORY_UNI_SPACE = "category_uni_space"
-CATEGORY_UNI_NOT_SPACE = "category_uni_not_space"
-CATEGORY_UNI_WORD = "category_uni_word"
-CATEGORY_UNI_NOT_WORD = "category_uni_not_word"
-CATEGORY_UNI_LINEBREAK = "category_uni_linebreak"
-CATEGORY_UNI_NOT_LINEBREAK = "category_uni_not_linebreak"
-
-OPCODES = [
-
-    # failure=0 success=1 (just because it looks better that way :-)
-    FAILURE, SUCCESS,
-
-    ANY, ANY_ALL,
-    ASSERT, ASSERT_NOT,
-    AT,
-    BRANCH,
-    CALL,
-    CATEGORY,
-    CHARSET, BIGCHARSET,
-    GROUPREF, GROUPREF_EXISTS, GROUPREF_IGNORE,
-    IN, IN_IGNORE,
-    INFO,
-    JUMP,
-    LITERAL, LITERAL_IGNORE,
-    MARK,
-    MAX_UNTIL,
-    MIN_UNTIL,
-    NOT_LITERAL, NOT_LITERAL_IGNORE,
-    NEGATE,
-    RANGE,
-    REPEAT,
-    REPEAT_ONE,
-    SUBPATTERN,
-    MIN_REPEAT_ONE
-
-]
-
-ATCODES = [
-    AT_BEGINNING, AT_BEGINNING_LINE, AT_BEGINNING_STRING, AT_BOUNDARY,
-    AT_NON_BOUNDARY, AT_END, AT_END_LINE, AT_END_STRING,
-    AT_LOC_BOUNDARY, AT_LOC_NON_BOUNDARY, AT_UNI_BOUNDARY,
-    AT_UNI_NON_BOUNDARY
-]
-
-CHCODES = [
-    CATEGORY_DIGIT, CATEGORY_NOT_DIGIT, CATEGORY_SPACE,
-    CATEGORY_NOT_SPACE, CATEGORY_WORD, CATEGORY_NOT_WORD,
-    CATEGORY_LINEBREAK, CATEGORY_NOT_LINEBREAK, CATEGORY_LOC_WORD,
-    CATEGORY_LOC_NOT_WORD, CATEGORY_UNI_DIGIT, CATEGORY_UNI_NOT_DIGIT,
-    CATEGORY_UNI_SPACE, CATEGORY_UNI_NOT_SPACE, CATEGORY_UNI_WORD,
-    CATEGORY_UNI_NOT_WORD, CATEGORY_UNI_LINEBREAK,
-    CATEGORY_UNI_NOT_LINEBREAK
-]
-
-def makedict(list):
-    d = {}
-    i = 0
-    for item in list:
-        d[item] = i
-        i = i + 1
-    return d
-
-OPCODES = makedict(OPCODES)
-ATCODES = makedict(ATCODES)
-CHCODES = makedict(CHCODES)
-
-# replacement operations for "ignore case" mode
-OP_IGNORE = {
-    GROUPREF: GROUPREF_IGNORE,
-    IN: IN_IGNORE,
-    LITERAL: LITERAL_IGNORE,
-    NOT_LITERAL: NOT_LITERAL_IGNORE
-}
-
-AT_MULTILINE = {
-    AT_BEGINNING: AT_BEGINNING_LINE,
-    AT_END: AT_END_LINE
-}
-
-AT_LOCALE = {
-    AT_BOUNDARY: AT_LOC_BOUNDARY,
-    AT_NON_BOUNDARY: AT_LOC_NON_BOUNDARY
-}
-
-AT_UNICODE = {
-    AT_BOUNDARY: AT_UNI_BOUNDARY,
-    AT_NON_BOUNDARY: AT_UNI_NON_BOUNDARY
-}
-
-CH_LOCALE = {
-    CATEGORY_DIGIT: CATEGORY_DIGIT,
-    CATEGORY_NOT_DIGIT: CATEGORY_NOT_DIGIT,
-    CATEGORY_SPACE: CATEGORY_SPACE,
-    CATEGORY_NOT_SPACE: CATEGORY_NOT_SPACE,
-    CATEGORY_WORD: CATEGORY_LOC_WORD,
-    CATEGORY_NOT_WORD: CATEGORY_LOC_NOT_WORD,
-    CATEGORY_LINEBREAK: CATEGORY_LINEBREAK,
-    CATEGORY_NOT_LINEBREAK: CATEGORY_NOT_LINEBREAK
-}
-
-CH_UNICODE = {
-    CATEGORY_DIGIT: CATEGORY_UNI_DIGIT,
-    CATEGORY_NOT_DIGIT: CATEGORY_UNI_NOT_DIGIT,
-    CATEGORY_SPACE: CATEGORY_UNI_SPACE,
-    CATEGORY_NOT_SPACE: CATEGORY_UNI_NOT_SPACE,
-    CATEGORY_WORD: CATEGORY_UNI_WORD,
-    CATEGORY_NOT_WORD: CATEGORY_UNI_NOT_WORD,
-    CATEGORY_LINEBREAK: CATEGORY_UNI_LINEBREAK,
-    CATEGORY_NOT_LINEBREAK: CATEGORY_UNI_NOT_LINEBREAK
-}
-
-# flags
-SRE_FLAG_TEMPLATE = 1 # template mode (disable backtracking)
-SRE_FLAG_IGNORECASE = 2 # case insensitive
-SRE_FLAG_LOCALE = 4 # honour system locale
-SRE_FLAG_MULTILINE = 8 # treat target as multiline string
-SRE_FLAG_DOTALL = 16 # treat target as a single string
-SRE_FLAG_UNICODE = 32 # use unicode locale
-SRE_FLAG_VERBOSE = 64 # ignore whitespace and comments
-SRE_FLAG_DEBUG = 128 # debugging
-
-# flags for INFO primitive
-SRE_INFO_PREFIX = 1 # has prefix
-SRE_INFO_LITERAL = 2 # entire pattern is literal (given by prefix)
-SRE_INFO_CHARSET = 4 # pattern starts with character from given set
-
-if __name__ == "__main__":
-    def dump(f, d, prefix):
-        items = d.items()
-        items.sort(key=lambda a: a[1])
-        for k, v in items:
-            f.write("#define %s_%s %s\n" % (prefix, k.upper(), v))
-    f = open("sre_constants.h", "w")
-    f.write("""\
-/*
- * Secret Labs' Regular Expression Engine
- *
- * regular expression matching engine
- *
- * NOTE: This file is generated by sre_constants.py.  If you need
- * to change anything in here, edit sre_constants.py and run it.
- *
- * Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
- *
- * See the _sre.c file for information on usage and redistribution.
- */
-
-""")
-
-    f.write("#define SRE_MAGIC %d\n" % MAGIC)
-
-    dump(f, OPCODES, "SRE_OP")
-    dump(f, ATCODES, "SRE")
-    dump(f, CHCODES, "SRE")
-
-    f.write("#define SRE_FLAG_TEMPLATE %d\n" % SRE_FLAG_TEMPLATE)
-    f.write("#define SRE_FLAG_IGNORECASE %d\n" % SRE_FLAG_IGNORECASE)
-    f.write("#define SRE_FLAG_LOCALE %d\n" % SRE_FLAG_LOCALE)
-    f.write("#define SRE_FLAG_MULTILINE %d\n" % SRE_FLAG_MULTILINE)
-    f.write("#define SRE_FLAG_DOTALL %d\n" % SRE_FLAG_DOTALL)
-    f.write("#define SRE_FLAG_UNICODE %d\n" % SRE_FLAG_UNICODE)
-    f.write("#define SRE_FLAG_VERBOSE %d\n" % SRE_FLAG_VERBOSE)
-
-    f.write("#define SRE_INFO_PREFIX %d\n" % SRE_INFO_PREFIX)
-    f.write("#define SRE_INFO_LITERAL %d\n" % SRE_INFO_LITERAL)
-    f.write("#define SRE_INFO_CHARSET %d\n" % SRE_INFO_CHARSET)
-
-    f.close()
-    print "done"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/sre_parse.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/sre_parse.py
deleted file mode 100644
index a598e56..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/sre_parse.py
+++ /dev/null
@@ -1,790 +0,0 @@
-#
-# Secret Labs' Regular Expression Engine
-#
-# convert re-style regular expression to sre pattern
-#
-# Copyright (c) 1998-2001 by Secret Labs AB.  All rights reserved.
-#
-# See the sre.py file for information on usage and redistribution.
-#
-
-"""Internal support module for sre"""
-
-# XXX: show string offset and offending character for all errors
-
-import sys
-
-from sre_constants import *
-
-SPECIAL_CHARS = ".\\[{()*+?^$|"
-REPEAT_CHARS = "*+?{"
-
-DIGITS = set("0123456789")
-
-OCTDIGITS = set("01234567")
-HEXDIGITS = set("0123456789abcdefABCDEF")
-
-WHITESPACE = set(" \t\n\r\v\f")
-
-ESCAPES = {
-    r"\a": (LITERAL, ord("\a")),
-    r"\b": (LITERAL, ord("\b")),
-    r"\f": (LITERAL, ord("\f")),
-    r"\n": (LITERAL, ord("\n")),
-    r"\r": (LITERAL, ord("\r")),
-    r"\t": (LITERAL, ord("\t")),
-    r"\v": (LITERAL, ord("\v")),
-    r"\\": (LITERAL, ord("\\"))
-}
-
-CATEGORIES = {
-    r"\A": (AT, AT_BEGINNING_STRING), # start of string
-    r"\b": (AT, AT_BOUNDARY),
-    r"\B": (AT, AT_NON_BOUNDARY),
-    r"\d": (IN, [(CATEGORY, CATEGORY_DIGIT)]),
-    r"\D": (IN, [(CATEGORY, CATEGORY_NOT_DIGIT)]),
-    r"\s": (IN, [(CATEGORY, CATEGORY_SPACE)]),
-    r"\S": (IN, [(CATEGORY, CATEGORY_NOT_SPACE)]),
-    r"\w": (IN, [(CATEGORY, CATEGORY_WORD)]),
-    r"\W": (IN, [(CATEGORY, CATEGORY_NOT_WORD)]),
-    r"\Z": (AT, AT_END_STRING), # end of string
-}
-
-FLAGS = {
-    # standard flags
-    "i": SRE_FLAG_IGNORECASE,
-    "L": SRE_FLAG_LOCALE,
-    "m": SRE_FLAG_MULTILINE,
-    "s": SRE_FLAG_DOTALL,
-    "x": SRE_FLAG_VERBOSE,
-    # extensions
-    "t": SRE_FLAG_TEMPLATE,
-    "u": SRE_FLAG_UNICODE,
-}
-
-class Pattern:
-    # master pattern object.  keeps track of global attributes
-    def __init__(self):
-        self.flags = 0
-        self.open = []
-        self.groups = 1
-        self.groupdict = {}
-    def opengroup(self, name=None):
-        gid = self.groups
-        self.groups = gid + 1
-        if name is not None:
-            ogid = self.groupdict.get(name, None)
-            if ogid is not None:
-                raise error, ("redefinition of group name %s as group %d; "
-                              "was group %d" % (repr(name), gid,  ogid))
-            self.groupdict[name] = gid
-        self.open.append(gid)
-        return gid
-    def closegroup(self, gid):
-        self.open.remove(gid)
-    def checkgroup(self, gid):
-        return gid < self.groups and gid not in self.open
-
-class SubPattern:
-    # a subpattern, in intermediate form
-    def __init__(self, pattern, data=None):
-        self.pattern = pattern
-        if data is None:
-            data = []
-        self.data = data
-        self.width = None
-    def dump(self, level=0):
-        nl = 1
-        seqtypes = type(()), type([])
-        for op, av in self.data:
-            print level*"  " + op,; nl = 0
-            if op == "in":
-                # member sublanguage
-                print; nl = 1
-                for op, a in av:
-                    print (level+1)*"  " + op, a
-            elif op == "branch":
-                print; nl = 1
-                i = 0
-                for a in av[1]:
-                    if i > 0:
-                        print level*"  " + "or"
-                    a.dump(level+1); nl = 1
-                    i = i + 1
-            elif type(av) in seqtypes:
-                for a in av:
-                    if isinstance(a, SubPattern):
-                        if not nl: print
-                        a.dump(level+1); nl = 1
-                    else:
-                        print a, ; nl = 0
-            else:
-                print av, ; nl = 0
-            if not nl: print
-    def __repr__(self):
-        return repr(self.data)
-    def __len__(self):
-        return len(self.data)
-    def __delitem__(self, index):
-        del self.data[index]
-    def __getitem__(self, index):
-        if isinstance(index, slice):
-            return SubPattern(self.pattern, self.data[index])
-        return self.data[index]
-    def __setitem__(self, index, code):
-        self.data[index] = code
-    def insert(self, index, code):
-        self.data.insert(index, code)
-    def append(self, code):
-        self.data.append(code)
-    def getwidth(self):
-        # determine the width (min, max) for this subpattern
-        if self.width:
-            return self.width
-        lo = hi = 0L
-        UNITCODES = (ANY, RANGE, IN, LITERAL, NOT_LITERAL, CATEGORY)
-        REPEATCODES = (MIN_REPEAT, MAX_REPEAT)
-        for op, av in self.data:
-            if op is BRANCH:
-                i = sys.maxint
-                j = 0
-                for av in av[1]:
-                    l, h = av.getwidth()
-                    i = min(i, l)
-                    j = max(j, h)
-                lo = lo + i
-                hi = hi + j
-            elif op is CALL:
-                i, j = av.getwidth()
-                lo = lo + i
-                hi = hi + j
-            elif op is SUBPATTERN:
-                i, j = av[1].getwidth()
-                lo = lo + i
-                hi = hi + j
-            elif op in REPEATCODES:
-                i, j = av[2].getwidth()
-                lo = lo + long(i) * av[0]
-                hi = hi + long(j) * av[1]
-            elif op in UNITCODES:
-                lo = lo + 1
-                hi = hi + 1
-            elif op == SUCCESS:
-                break
-        self.width = int(min(lo, sys.maxint)), int(min(hi, sys.maxint))
-        return self.width
-
-class Tokenizer:
-    def __init__(self, string):
-        self.string = string
-        self.index = 0
-        self.__next()
-    def __next(self):
-        if self.index >= len(self.string):
-            self.next = None
-            return
-        char = self.string[self.index]
-        if char[0] == "\\":
-            try:
-                c = self.string[self.index + 1]
-            except IndexError:
-                raise error, "bogus escape (end of line)"
-            char = char + c
-        self.index = self.index + len(char)
-        self.next = char
-    def match(self, char, skip=1):
-        if char == self.next:
-            if skip:
-                self.__next()
-            return 1
-        return 0
-    def get(self):
-        this = self.next
-        self.__next()
-        return this
-    def tell(self):
-        return self.index, self.next
-    def seek(self, index):
-        self.index, self.next = index
-
-def isident(char):
-    return "a" <= char <= "z" or "A" <= char <= "Z" or char == "_"
-
-def isdigit(char):
-    return "0" <= char <= "9"
-
-def isname(name):
-    # check that group name is a valid string
-    if not isident(name[0]):
-        return False
-    for char in name[1:]:
-        if not isident(char) and not isdigit(char):
-            return False
-    return True
-
-def _class_escape(source, escape):
-    # handle escape code inside character class
-    code = ESCAPES.get(escape)
-    if code:
-        return code
-    code = CATEGORIES.get(escape)
-    if code:
-        return code
-    try:
-        c = escape[1:2]
-        if c == "x":
-            # hexadecimal escape (exactly two digits)
-            while source.next in HEXDIGITS and len(escape) < 4:
-                escape = escape + source.get()
-            escape = escape[2:]
-            if len(escape) != 2:
-                raise error, "bogus escape: %s" % repr("\\" + escape)
-            return LITERAL, int(escape, 16) & 0xff
-        elif c in OCTDIGITS:
-            # octal escape (up to three digits)
-            while source.next in OCTDIGITS and len(escape) < 4:
-                escape = escape + source.get()
-            escape = escape[1:]
-            return LITERAL, int(escape, 8) & 0xff
-        elif c in DIGITS:
-            raise error, "bogus escape: %s" % repr(escape)
-        if len(escape) == 2:
-            return LITERAL, ord(escape[1])
-    except ValueError:
-        pass
-    raise error, "bogus escape: %s" % repr(escape)
-
-def _escape(source, escape, state):
-    # handle escape code in expression
-    code = CATEGORIES.get(escape)
-    if code:
-        return code
-    code = ESCAPES.get(escape)
-    if code:
-        return code
-    try:
-        c = escape[1:2]
-        if c == "x":
-            # hexadecimal escape
-            while source.next in HEXDIGITS and len(escape) < 4:
-                escape = escape + source.get()
-            if len(escape) != 4:
-                raise ValueError
-            return LITERAL, int(escape[2:], 16) & 0xff
-        elif c == "0":
-            # octal escape
-            while source.next in OCTDIGITS and len(escape) < 4:
-                escape = escape + source.get()
-            return LITERAL, int(escape[1:], 8) & 0xff
-        elif c in DIGITS:
-            # octal escape *or* decimal group reference (sigh)
-            if source.next in DIGITS:
-                escape = escape + source.get()
-                if (escape[1] in OCTDIGITS and escape[2] in OCTDIGITS and
-                    source.next in OCTDIGITS):
-                    # got three octal digits; this is an octal escape
-                    escape = escape + source.get()
-                    return LITERAL, int(escape[1:], 8) & 0xff
-            # not an octal escape, so this is a group reference
-            group = int(escape[1:])
-            if group < state.groups:
-                if not state.checkgroup(group):
-                    raise error, "cannot refer to open group"
-                return GROUPREF, group
-            raise ValueError
-        if len(escape) == 2:
-            return LITERAL, ord(escape[1])
-    except ValueError:
-        pass
-    raise error, "bogus escape: %s" % repr(escape)
-
-def _parse_sub(source, state, nested=1):
-    # parse an alternation: a|b|c
-
-    items = []
-    itemsappend = items.append
-    sourcematch = source.match
-    while 1:
-        itemsappend(_parse(source, state))
-        if sourcematch("|"):
-            continue
-        if not nested:
-            break
-        if not source.next or sourcematch(")", 0):
-            break
-        else:
-            raise error, "pattern not properly closed"
-
-    if len(items) == 1:
-        return items[0]
-
-    subpattern = SubPattern(state)
-    subpatternappend = subpattern.append
-
-    # check if all items share a common prefix
-    while 1:
-        prefix = None
-        for item in items:
-            if not item:
-                break
-            if prefix is None:
-                prefix = item[0]
-            elif item[0] != prefix:
-                break
-        else:
-            # all subitems start with a common "prefix".
-            # move it out of the branch
-            for item in items:
-                del item[0]
-            subpatternappend(prefix)
-            continue # check next one
-        break
-
-    # check if the branch can be replaced by a character set
-    for item in items:
-        if len(item) != 1 or item[0][0] != LITERAL:
-            break
-    else:
-        # we can store this as a character set instead of a
-        # branch (the compiler may optimize this even more)
-        set = []
-        setappend = set.append
-        for item in items:
-            setappend(item[0])
-        subpatternappend((IN, set))
-        return subpattern
-
-    subpattern.append((BRANCH, (None, items)))
-    return subpattern
-
-def _parse_sub_cond(source, state, condgroup):
-    item_yes = _parse(source, state)
-    if source.match("|"):
-        item_no = _parse(source, state)
-        if source.match("|"):
-            raise error, "conditional backref with more than two branches"
-    else:
-        item_no = None
-    if source.next and not source.match(")", 0):
-        raise error, "pattern not properly closed"
-    subpattern = SubPattern(state)
-    subpattern.append((GROUPREF_EXISTS, (condgroup, item_yes, item_no)))
-    return subpattern
-
-_PATTERNENDERS = set("|)")
-_ASSERTCHARS = set("=!<")
-_LOOKBEHINDASSERTCHARS = set("=!")
-_REPEATCODES = set([MIN_REPEAT, MAX_REPEAT])
-
-def _parse(source, state):
-    # parse a simple pattern
-    subpattern = SubPattern(state)
-
-    # precompute constants into local variables
-    subpatternappend = subpattern.append
-    sourceget = source.get
-    sourcematch = source.match
-    _len = len
-    PATTERNENDERS = _PATTERNENDERS
-    ASSERTCHARS = _ASSERTCHARS
-    LOOKBEHINDASSERTCHARS = _LOOKBEHINDASSERTCHARS
-    REPEATCODES = _REPEATCODES
-
-    while 1:
-
-        if source.next in PATTERNENDERS:
-            break # end of subpattern
-        this = sourceget()
-        if this is None:
-            break # end of pattern
-
-        if state.flags & SRE_FLAG_VERBOSE:
-            # skip whitespace and comments
-            if this in WHITESPACE:
-                continue
-            if this == "#":
-                while 1:
-                    this = sourceget()
-                    if this in (None, "\n"):
-                        break
-                continue
-
-        if this and this[0] not in SPECIAL_CHARS:
-            subpatternappend((LITERAL, ord(this)))
-
-        elif this == "[":
-            # character set
-            set = []
-            setappend = set.append
-##          if sourcematch(":"):
-##              pass # handle character classes
-            if sourcematch("^"):
-                setappend((NEGATE, None))
-            # check remaining characters
-            start = set[:]
-            while 1:
-                this = sourceget()
-                if this == "]" and set != start:
-                    break
-                elif this and this[0] == "\\":
-                    code1 = _class_escape(source, this)
-                elif this:
-                    code1 = LITERAL, ord(this)
-                else:
-                    raise error, "unexpected end of regular expression"
-                if sourcematch("-"):
-                    # potential range
-                    this = sourceget()
-                    if this == "]":
-                        if code1[0] is IN:
-                            code1 = code1[1][0]
-                        setappend(code1)
-                        setappend((LITERAL, ord("-")))
-                        break
-                    elif this:
-                        if this[0] == "\\":
-                            code2 = _class_escape(source, this)
-                        else:
-                            code2 = LITERAL, ord(this)
-                        if code1[0] != LITERAL or code2[0] != LITERAL:
-                            raise error, "bad character range"
-                        lo = code1[1]
-                        hi = code2[1]
-                        if hi < lo:
-                            raise error, "bad character range"
-                        setappend((RANGE, (lo, hi)))
-                    else:
-                        raise error, "unexpected end of regular expression"
-                else:
-                    if code1[0] is IN:
-                        code1 = code1[1][0]
-                    setappend(code1)
-
-            # XXX: <fl> should move set optimization to compiler!
-            if _len(set)==1 and set[0][0] is LITERAL:
-                subpatternappend(set[0]) # optimization
-            elif _len(set)==2 and set[0][0] is NEGATE and set[1][0] is LITERAL:
-                subpatternappend((NOT_LITERAL, set[1][1])) # optimization
-            else:
-                # XXX: <fl> should add charmap optimization here
-                subpatternappend((IN, set))
-
-        elif this and this[0] in REPEAT_CHARS:
-            # repeat previous item
-            if this == "?":
-                min, max = 0, 1
-            elif this == "*":
-                min, max = 0, MAXREPEAT
-
-            elif this == "+":
-                min, max = 1, MAXREPEAT
-            elif this == "{":
-                if source.next == "}":
-                    subpatternappend((LITERAL, ord(this)))
-                    continue
-                here = source.tell()
-                min, max = 0, MAXREPEAT
-                lo = hi = ""
-                while source.next in DIGITS:
-                    lo = lo + source.get()
-                if sourcematch(","):
-                    while source.next in DIGITS:
-                        hi = hi + sourceget()
-                else:
-                    hi = lo
-                if not sourcematch("}"):
-                    subpatternappend((LITERAL, ord(this)))
-                    source.seek(here)
-                    continue
-                if lo:
-                    min = int(lo)
-                if hi:
-                    max = int(hi)
-                if max < min:
-                    raise error, "bad repeat interval"
-            else:
-                raise error, "not supported"
-            # figure out which item to repeat
-            if subpattern:
-                item = subpattern[-1:]
-            else:
-                item = None
-            if not item or (_len(item) == 1 and item[0][0] == AT):
-                raise error, "nothing to repeat"
-            if item[0][0] in REPEATCODES:
-                raise error, "multiple repeat"
-            if sourcematch("?"):
-                subpattern[-1] = (MIN_REPEAT, (min, max, item))
-            else:
-                subpattern[-1] = (MAX_REPEAT, (min, max, item))
-
-        elif this == ".":
-            subpatternappend((ANY, None))
-
-        elif this == "(":
-            group = 1
-            name = None
-            condgroup = None
-            if sourcematch("?"):
-                group = 0
-                # options
-                if sourcematch("P"):
-                    # python extensions
-                    if sourcematch("<"):
-                        # named group: skip forward to end of name
-                        name = ""
-                        while 1:
-                            char = sourceget()
-                            if char is None:
-                                raise error, "unterminated name"
-                            if char == ">":
-                                break
-                            name = name + char
-                        group = 1
-                        if not isname(name):
-                            raise error, "bad character in group name"
-                    elif sourcematch("="):
-                        # named backreference
-                        name = ""
-                        while 1:
-                            char = sourceget()
-                            if char is None:
-                                raise error, "unterminated name"
-                            if char == ")":
-                                break
-                            name = name + char
-                        if not isname(name):
-                            raise error, "bad character in group name"
-                        gid = state.groupdict.get(name)
-                        if gid is None:
-                            raise error, "unknown group name"
-                        subpatternappend((GROUPREF, gid))
-                        continue
-                    else:
-                        char = sourceget()
-                        if char is None:
-                            raise error, "unexpected end of pattern"
-                        raise error, "unknown specifier: ?P%s" % char
-                elif sourcematch(":"):
-                    # non-capturing group
-                    group = 2
-                elif sourcematch("#"):
-                    # comment
-                    while 1:
-                        if source.next is None or source.next == ")":
-                            break
-                        sourceget()
-                    if not sourcematch(")"):
-                        raise error, "unbalanced parenthesis"
-                    continue
-                elif source.next in ASSERTCHARS:
-                    # lookahead assertions
-                    char = sourceget()
-                    dir = 1
-                    if char == "<":
-                        if source.next not in LOOKBEHINDASSERTCHARS:
-                            raise error, "syntax error"
-                        dir = -1 # lookbehind
-                        char = sourceget()
-                    p = _parse_sub(source, state)
-                    if not sourcematch(")"):
-                        raise error, "unbalanced parenthesis"
-                    if char == "=":
-                        subpatternappend((ASSERT, (dir, p)))
-                    else:
-                        subpatternappend((ASSERT_NOT, (dir, p)))
-                    continue
-                elif sourcematch("("):
-                    # conditional backreference group
-                    condname = ""
-                    while 1:
-                        char = sourceget()
-                        if char is None:
-                            raise error, "unterminated name"
-                        if char == ")":
-                            break
-                        condname = condname + char
-                    group = 2
-                    if isname(condname):
-                        condgroup = state.groupdict.get(condname)
-                        if condgroup is None:
-                            raise error, "unknown group name"
-                    else:
-                        try:
-                            condgroup = int(condname)
-                        except ValueError:
-                            raise error, "bad character in group name"
-                else:
-                    # flags
-                    if not source.next in FLAGS:
-                        raise error, "unexpected end of pattern"
-                    while source.next in FLAGS:
-                        state.flags = state.flags | FLAGS[sourceget()]
-            if group:
-                # parse group contents
-                if group == 2:
-                    # anonymous group
-                    group = None
-                else:
-                    group = state.opengroup(name)
-                if condgroup:
-                    p = _parse_sub_cond(source, state, condgroup)
-                else:
-                    p = _parse_sub(source, state)
-                if not sourcematch(")"):
-                    raise error, "unbalanced parenthesis"
-                if group is not None:
-                    state.closegroup(group)
-                subpatternappend((SUBPATTERN, (group, p)))
-            else:
-                while 1:
-                    char = sourceget()
-                    if char is None:
-                        raise error, "unexpected end of pattern"
-                    if char == ")":
-                        break
-                    raise error, "unknown extension"
-
-        elif this == "^":
-            subpatternappend((AT, AT_BEGINNING))
-
-        elif this == "$":
-            subpattern.append((AT, AT_END))
-
-        elif this and this[0] == "\\":
-            code = _escape(source, this, state)
-            subpatternappend(code)
-
-        else:
-            raise error, "parser error"
-
-    return subpattern
-
-def parse(str, flags=0, pattern=None):
-    # parse 're' pattern into list of (opcode, argument) tuples
-
-    source = Tokenizer(str)
-
-    if pattern is None:
-        pattern = Pattern()
-    pattern.flags = flags
-    pattern.str = str
-
-    p = _parse_sub(source, pattern, 0)
-
-    tail = source.get()
-    if tail == ")":
-        raise error, "unbalanced parenthesis"
-    elif tail:
-        raise error, "bogus characters at end of regular expression"
-
-    if flags & SRE_FLAG_DEBUG:
-        p.dump()
-
-    if not (flags & SRE_FLAG_VERBOSE) and p.pattern.flags & SRE_FLAG_VERBOSE:
-        # the VERBOSE flag was switched on inside the pattern.  to be
-        # on the safe side, we'll parse the whole thing again...
-        return parse(str, p.pattern.flags)
-
-    return p
-
-def parse_template(source, pattern):
-    # parse 're' replacement string into list of literals and
-    # group references
-    s = Tokenizer(source)
-    sget = s.get
-    p = []
-    a = p.append
-    def literal(literal, p=p, pappend=a):
-        if p and p[-1][0] is LITERAL:
-            p[-1] = LITERAL, p[-1][1] + literal
-        else:
-            pappend((LITERAL, literal))
-    sep = source[:0]
-    if type(sep) is type(""):
-        makechar = chr
-    else:
-        makechar = unichr
-    while 1:
-        this = sget()
-        if this is None:
-            break # end of replacement string
-        if this and this[0] == "\\":
-            # group
-            c = this[1:2]
-            if c == "g":
-                name = ""
-                if s.match("<"):
-                    while 1:
-                        char = sget()
-                        if char is None:
-                            raise error, "unterminated group name"
-                        if char == ">":
-                            break
-                        name = name + char
-                if not name:
-                    raise error, "bad group name"
-                try:
-                    index = int(name)
-                    if index < 0:
-                        raise error, "negative group number"
-                except ValueError:
-                    if not isname(name):
-                        raise error, "bad character in group name"
-                    try:
-                        index = pattern.groupindex[name]
-                    except KeyError:
-                        raise IndexError, "unknown group name"
-                a((MARK, index))
-            elif c == "0":
-                if s.next in OCTDIGITS:
-                    this = this + sget()
-                    if s.next in OCTDIGITS:
-                        this = this + sget()
-                literal(makechar(int(this[1:], 8) & 0xff))
-            elif c in DIGITS:
-                isoctal = False
-                if s.next in DIGITS:
-                    this = this + sget()
-                    if (c in OCTDIGITS and this[2] in OCTDIGITS and
-                        s.next in OCTDIGITS):
-                        this = this + sget()
-                        isoctal = True
-                        literal(makechar(int(this[1:], 8) & 0xff))
-                if not isoctal:
-                    a((MARK, int(this[1:])))
-            else:
-                try:
-                    this = makechar(ESCAPES[this][1])
-                except KeyError:
-                    pass
-                literal(this)
-        else:
-            literal(this)
-    # convert template to groups and literals lists
-    i = 0
-    groups = []
-    groupsappend = groups.append
-    literals = [None] * len(p)
-    for c, s in p:
-        if c is MARK:
-            groupsappend((i, s))
-            # literal[i] is already None
-        else:
-            literals[i] = s
-        i = i + 1
-    return groups, literals
-
-def expand_template(template, match):
-    g = match.group
-    sep = match.string[:0]
-    groups, literals = template
-    literals = literals[:]
-    try:
-        for index, group in groups:
-            literals[index] = s = g(group)
-            if s is None:
-                raise error, "unmatched group"
-    except IndexError:
-        raise error, "invalid group reference"
-    return sep.join(literals)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/ssl.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/ssl.py
deleted file mode 100644
index c479e52..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/ssl.py
+++ /dev/null
@@ -1,464 +0,0 @@
-# Wrapper module for _ssl, providing some additional facilities
-# implemented in Python.  Written by Bill Janssen.
-
-"""\
-This module provides some more Pythonic support for SSL.
-
-Object types:
-
-  SSLSocket -- subtype of socket.socket which does SSL over the socket
-
-Exceptions:
-
-  SSLError -- exception raised for I/O errors
-
-Functions:
-
-  cert_time_to_seconds -- convert time string used for certificate
-                          notBefore and notAfter functions to integer
-                          seconds past the Epoch (the time values
-                          returned from time.time())
-
-  fetch_server_certificate (HOST, PORT) -- fetch the certificate provided
-                          by the server running on HOST at port PORT.  No
-                          validation of the certificate is performed.
-
-Integer constants:
-
-SSL_ERROR_ZERO_RETURN
-SSL_ERROR_WANT_READ
-SSL_ERROR_WANT_WRITE
-SSL_ERROR_WANT_X509_LOOKUP
-SSL_ERROR_SYSCALL
-SSL_ERROR_SSL
-SSL_ERROR_WANT_CONNECT
-
-SSL_ERROR_EOF
-SSL_ERROR_INVALID_ERROR_CODE
-
-The following group define certificate requirements that one side is
-allowing/requiring from the other side:
-
-CERT_NONE - no certificates from the other side are required (or will
-            be looked at if provided)
-CERT_OPTIONAL - certificates are not required, but if provided will be
-                validated, and if validation fails, the connection will
-                also fail
-CERT_REQUIRED - certificates are required, and will be validated, and
-                if validation fails, the connection will also fail
-
-The following constants identify various SSL protocol variants:
-
-PROTOCOL_SSLv2
-PROTOCOL_SSLv3
-PROTOCOL_SSLv23
-PROTOCOL_TLSv1
-"""
-
-import textwrap
-
-import _ssl             # if we can't import it, let the error propagate
-
-from _ssl import OPENSSL_VERSION_NUMBER, OPENSSL_VERSION_INFO, OPENSSL_VERSION
-from _ssl import SSLError
-from _ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED
-from _ssl import RAND_status, RAND_egd, RAND_add
-from _ssl import \
-     SSL_ERROR_ZERO_RETURN, \
-     SSL_ERROR_WANT_READ, \
-     SSL_ERROR_WANT_WRITE, \
-     SSL_ERROR_WANT_X509_LOOKUP, \
-     SSL_ERROR_SYSCALL, \
-     SSL_ERROR_SSL, \
-     SSL_ERROR_WANT_CONNECT, \
-     SSL_ERROR_EOF, \
-     SSL_ERROR_INVALID_ERROR_CODE
-from _ssl import PROTOCOL_SSLv3, PROTOCOL_SSLv23, PROTOCOL_TLSv1
-_PROTOCOL_NAMES = {
-    PROTOCOL_TLSv1: "TLSv1",
-    PROTOCOL_SSLv23: "SSLv23",
-    PROTOCOL_SSLv3: "SSLv3",
-}
-try:
-    from _ssl import PROTOCOL_SSLv2
-except ImportError:
-    pass
-else:
-    _PROTOCOL_NAMES[PROTOCOL_SSLv2] = "SSLv2"
-
-from socket import socket, _fileobject, _delegate_methods, error as socket_error
-from socket import getnameinfo as _getnameinfo
-import base64        # for DER-to-PEM translation
-import errno
-
-class SSLSocket(socket):
-
-    """This class implements a subtype of socket.socket that wraps
-    the underlying OS socket in an SSL context when necessary, and
-    provides read and write methods over that channel."""
-
-    def __init__(self, sock, keyfile=None, certfile=None,
-                 server_side=False, cert_reqs=CERT_NONE,
-                 ssl_version=PROTOCOL_SSLv23, ca_certs=None,
-                 do_handshake_on_connect=True,
-                 suppress_ragged_eofs=True, ciphers=None):
-        socket.__init__(self, _sock=sock._sock)
-        # The initializer for socket overrides the methods send(), recv(), etc.
-        # in the instancce, which we don't need -- but we want to provide the
-        # methods defined in SSLSocket.
-        for attr in _delegate_methods:
-            try:
-                delattr(self, attr)
-            except AttributeError:
-                pass
-
-        if certfile and not keyfile:
-            keyfile = certfile
-        # see if it's connected
-        try:
-            socket.getpeername(self)
-        except socket_error, e:
-            if e.errno != errno.ENOTCONN:
-                raise
-            # no, no connection yet
-            self._connected = False
-            self._sslobj = None
-        else:
-            # yes, create the SSL object
-            self._connected = True
-            self._sslobj = _ssl.sslwrap(self._sock, server_side,
-                                        keyfile, certfile,
-                                        cert_reqs, ssl_version, ca_certs,
-                                        ciphers)
-            if do_handshake_on_connect:
-                self.do_handshake()
-        self.keyfile = keyfile
-        self.certfile = certfile
-        self.cert_reqs = cert_reqs
-        self.ssl_version = ssl_version
-        self.ca_certs = ca_certs
-        self.ciphers = ciphers
-        self.do_handshake_on_connect = do_handshake_on_connect
-        self.suppress_ragged_eofs = suppress_ragged_eofs
-        self._makefile_refs = 0
-
-    def read(self, len=1024):
-
-        """Read up to LEN bytes and return them.
-        Return zero-length string on EOF."""
-
-        try:
-            return self._sslobj.read(len)
-        except SSLError, x:
-            if x.args[0] == SSL_ERROR_EOF and self.suppress_ragged_eofs:
-                return ''
-            else:
-                raise
-
-    def write(self, data):
-
-        """Write DATA to the underlying SSL channel.  Returns
-        number of bytes of DATA actually transmitted."""
-
-        return self._sslobj.write(data)
-
-    def getpeercert(self, binary_form=False):
-
-        """Returns a formatted version of the data in the
-        certificate provided by the other end of the SSL channel.
-        Return None if no certificate was provided, {} if a
-        certificate was provided, but not validated."""
-
-        return self._sslobj.peer_certificate(binary_form)
-
-    def cipher(self):
-
-        if not self._sslobj:
-            return None
-        else:
-            return self._sslobj.cipher()
-
-    def send(self, data, flags=0):
-        if self._sslobj:
-            if flags != 0:
-                raise ValueError(
-                    "non-zero flags not allowed in calls to send() on %s" %
-                    self.__class__)
-            while True:
-                try:
-                    v = self._sslobj.write(data)
-                except SSLError, x:
-                    if x.args[0] == SSL_ERROR_WANT_READ:
-                        return 0
-                    elif x.args[0] == SSL_ERROR_WANT_WRITE:
-                        return 0
-                    else:
-                        raise
-                else:
-                    return v
-        else:
-            return self._sock.send(data, flags)
-
-    def sendto(self, data, flags_or_addr, addr=None):
-        if self._sslobj:
-            raise ValueError("sendto not allowed on instances of %s" %
-                             self.__class__)
-        elif addr is None:
-            return self._sock.sendto(data, flags_or_addr)
-        else:
-            return self._sock.sendto(data, flags_or_addr, addr)
-
-    def sendall(self, data, flags=0):
-        if self._sslobj:
-            if flags != 0:
-                raise ValueError(
-                    "non-zero flags not allowed in calls to sendall() on %s" %
-                    self.__class__)
-            amount = len(data)
-            count = 0
-            while (count < amount):
-                v = self.send(data[count:])
-                count += v
-            return amount
-        else:
-            return socket.sendall(self, data, flags)
-
-    def recv(self, buflen=1024, flags=0):
-        if self._sslobj:
-            if flags != 0:
-                raise ValueError(
-                    "non-zero flags not allowed in calls to recv() on %s" %
-                    self.__class__)
-            return self.read(buflen)
-        else:
-            return self._sock.recv(buflen, flags)
-
-    def recv_into(self, buffer, nbytes=None, flags=0):
-        if buffer and (nbytes is None):
-            nbytes = len(buffer)
-        elif nbytes is None:
-            nbytes = 1024
-        if self._sslobj:
-            if flags != 0:
-                raise ValueError(
-                  "non-zero flags not allowed in calls to recv_into() on %s" %
-                  self.__class__)
-            tmp_buffer = self.read(nbytes)
-            v = len(tmp_buffer)
-            buffer[:v] = tmp_buffer
-            return v
-        else:
-            return self._sock.recv_into(buffer, nbytes, flags)
-
-    def recvfrom(self, buflen=1024, flags=0):
-        if self._sslobj:
-            raise ValueError("recvfrom not allowed on instances of %s" %
-                             self.__class__)
-        else:
-            return self._sock.recvfrom(buflen, flags)
-
-    def recvfrom_into(self, buffer, nbytes=None, flags=0):
-        if self._sslobj:
-            raise ValueError("recvfrom_into not allowed on instances of %s" %
-                             self.__class__)
-        else:
-            return self._sock.recvfrom_into(buffer, nbytes, flags)
-
-    def pending(self):
-        if self._sslobj:
-            return self._sslobj.pending()
-        else:
-            return 0
-
-    def unwrap(self):
-        if self._sslobj:
-            s = self._sslobj.shutdown()
-            self._sslobj = None
-            return s
-        else:
-            raise ValueError("No SSL wrapper around " + str(self))
-
-    def shutdown(self, how):
-        self._sslobj = None
-        socket.shutdown(self, how)
-
-    def close(self):
-        if self._makefile_refs < 1:
-            self._sslobj = None
-            socket.close(self)
-        else:
-            self._makefile_refs -= 1
-
-    def do_handshake(self):
-
-        """Perform a TLS/SSL handshake."""
-
-        self._sslobj.do_handshake()
-
-    def _real_connect(self, addr, return_errno):
-        # Here we assume that the socket is client-side, and not
-        # connected at the time of the call.  We connect it, then wrap it.
-        if self._connected:
-            raise ValueError("attempt to connect already-connected SSLSocket!")
-        self._sslobj = _ssl.sslwrap(self._sock, False, self.keyfile, self.certfile,
-                                    self.cert_reqs, self.ssl_version,
-                                    self.ca_certs, self.ciphers)
-        try:
-            socket.connect(self, addr)
-            if self.do_handshake_on_connect:
-                self.do_handshake()
-        except socket_error as e:
-            if return_errno:
-                return e.errno
-            else:
-                self._sslobj = None
-                raise e
-        self._connected = True
-        return 0
-
-    def connect(self, addr):
-        """Connects to remote ADDR, and then wraps the connection in
-        an SSL channel."""
-        self._real_connect(addr, False)
-
-    def connect_ex(self, addr):
-        """Connects to remote ADDR, and then wraps the connection in
-        an SSL channel."""
-        return self._real_connect(addr, True)
-
-    def accept(self):
-
-        """Accepts a new connection from a remote client, and returns
-        a tuple containing that new connection wrapped with a server-side
-        SSL channel, and the address of the remote client."""
-
-        newsock, addr = socket.accept(self)
-        return (SSLSocket(newsock,
-                          keyfile=self.keyfile,
-                          certfile=self.certfile,
-                          server_side=True,
-                          cert_reqs=self.cert_reqs,
-                          ssl_version=self.ssl_version,
-                          ca_certs=self.ca_certs,
-                          ciphers=self.ciphers,
-                          do_handshake_on_connect=self.do_handshake_on_connect,
-                          suppress_ragged_eofs=self.suppress_ragged_eofs),
-                addr)
-
-    def makefile(self, mode='r', bufsize=-1):
-
-        """Make and return a file-like object that
-        works with the SSL connection.  Just use the code
-        from the socket module."""
-
-        self._makefile_refs += 1
-        # close=True so as to decrement the reference count when done with
-        # the file-like object.
-        return _fileobject(self, mode, bufsize, close=True)
-
-
-
-def wrap_socket(sock, keyfile=None, certfile=None,
-                server_side=False, cert_reqs=CERT_NONE,
-                ssl_version=PROTOCOL_SSLv23, ca_certs=None,
-                do_handshake_on_connect=True,
-                suppress_ragged_eofs=True, ciphers=None):
-
-    return SSLSocket(sock, keyfile=keyfile, certfile=certfile,
-                     server_side=server_side, cert_reqs=cert_reqs,
-                     ssl_version=ssl_version, ca_certs=ca_certs,
-                     do_handshake_on_connect=do_handshake_on_connect,
-                     suppress_ragged_eofs=suppress_ragged_eofs,
-                     ciphers=ciphers)
-
-
-# some utility functions
-
-def cert_time_to_seconds(cert_time):
-
-    """Takes a date-time string in standard ASN1_print form
-    ("MON DAY 24HOUR:MINUTE:SEC YEAR TIMEZONE") and return
-    a Python time value in seconds past the epoch."""
-
-    import time
-    return time.mktime(time.strptime(cert_time, "%b %d %H:%M:%S %Y GMT"))
-
-PEM_HEADER = "-----BEGIN CERTIFICATE-----"
-PEM_FOOTER = "-----END CERTIFICATE-----"
-
-def DER_cert_to_PEM_cert(der_cert_bytes):
-
-    """Takes a certificate in binary DER format and returns the
-    PEM version of it as a string."""
-
-    if hasattr(base64, 'standard_b64encode'):
-        # preferred because older API gets line-length wrong
-        f = base64.standard_b64encode(der_cert_bytes)
-        return (PEM_HEADER + '\n' +
-                textwrap.fill(f, 64) + '\n' +
-                PEM_FOOTER + '\n')
-    else:
-        return (PEM_HEADER + '\n' +
-                base64.encodestring(der_cert_bytes) +
-                PEM_FOOTER + '\n')
-
-def PEM_cert_to_DER_cert(pem_cert_string):
-
-    """Takes a certificate in ASCII PEM format and returns the
-    DER-encoded version of it as a byte sequence"""
-
-    if not pem_cert_string.startswith(PEM_HEADER):
-        raise ValueError("Invalid PEM encoding; must start with %s"
-                         % PEM_HEADER)
-    if not pem_cert_string.strip().endswith(PEM_FOOTER):
-        raise ValueError("Invalid PEM encoding; must end with %s"
-                         % PEM_FOOTER)
-    d = pem_cert_string.strip()[len(PEM_HEADER):-len(PEM_FOOTER)]
-    return base64.decodestring(d)
-
-def get_server_certificate(addr, ssl_version=PROTOCOL_SSLv3, ca_certs=None):
-
-    """Retrieve the certificate from the server at the specified address,
-    and return it as a PEM-encoded string.
-    If 'ca_certs' is specified, validate the server cert against it.
-    If 'ssl_version' is specified, use it in the connection attempt."""
-
-    host, port = addr
-    if (ca_certs is not None):
-        cert_reqs = CERT_REQUIRED
-    else:
-        cert_reqs = CERT_NONE
-    s = wrap_socket(socket(), ssl_version=ssl_version,
-                    cert_reqs=cert_reqs, ca_certs=ca_certs)
-    s.connect(addr)
-    dercert = s.getpeercert(True)
-    s.close()
-    return DER_cert_to_PEM_cert(dercert)
-
-def get_protocol_name(protocol_code):
-    return _PROTOCOL_NAMES.get(protocol_code, '<unknown>')
-
-
-# a replacement for the old socket.ssl function
-
-def sslwrap_simple(sock, keyfile=None, certfile=None):
-
-    """A replacement for the old socket.ssl function.  Designed
-    for compability with Python 2.5 and earlier.  Will disappear in
-    Python 3.0."""
-
-    if hasattr(sock, "_sock"):
-        sock = sock._sock
-
-    ssl_sock = _ssl.sslwrap(sock, 0, keyfile, certfile, CERT_NONE,
-                            PROTOCOL_SSLv23, None)
-    try:
-        sock.getpeername()
-    except socket_error:
-        # no, no connection yet
-        pass
-    else:
-        # yes, do the handshake
-        ssl_sock.do_handshake()
-
-    return ssl_sock
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/stat.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/stat.py
deleted file mode 100644
index 1148fc8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/stat.py
+++ /dev/null
@@ -1,94 +0,0 @@
-"""Constants/functions for interpreting results of os.stat() and os.lstat().
-
-Suggested usage: from stat import *
-"""
-
-# Indices for stat struct members in the tuple returned by os.stat()
-
-ST_MODE  = 0
-ST_INO   = 1
-ST_DEV   = 2
-ST_NLINK = 3
-ST_UID   = 4
-ST_GID   = 5
-ST_SIZE  = 6
-ST_ATIME = 7
-ST_MTIME = 8
-ST_CTIME = 9
-
-# Extract bits from the mode
-
-def S_IMODE(mode):
-    return mode & 07777
-
-def S_IFMT(mode):
-    return mode & 0170000
-
-# Constants used as S_IFMT() for various file types
-# (not all are implemented on all systems)
-
-S_IFDIR  = 0040000
-S_IFCHR  = 0020000
-S_IFBLK  = 0060000
-S_IFREG  = 0100000
-S_IFIFO  = 0010000
-S_IFLNK  = 0120000
-S_IFSOCK = 0140000
-
-# Functions to test for each file type
-
-def S_ISDIR(mode):
-    return S_IFMT(mode) == S_IFDIR
-
-def S_ISCHR(mode):
-    return S_IFMT(mode) == S_IFCHR
-
-def S_ISBLK(mode):
-    return S_IFMT(mode) == S_IFBLK
-
-def S_ISREG(mode):
-    return S_IFMT(mode) == S_IFREG
-
-def S_ISFIFO(mode):
-    return S_IFMT(mode) == S_IFIFO
-
-def S_ISLNK(mode):
-    return S_IFMT(mode) == S_IFLNK
-
-def S_ISSOCK(mode):
-    return S_IFMT(mode) == S_IFSOCK
-
-# Names for permission bits
-
-S_ISUID = 04000
-S_ISGID = 02000
-S_ENFMT = S_ISGID
-S_ISVTX = 01000
-S_IREAD = 00400
-S_IWRITE = 00200
-S_IEXEC = 00100
-S_IRWXU = 00700
-S_IRUSR = 00400
-S_IWUSR = 00200
-S_IXUSR = 00100
-S_IRWXG = 00070
-S_IRGRP = 00040
-S_IWGRP = 00020
-S_IXGRP = 00010
-S_IRWXO = 00007
-S_IROTH = 00004
-S_IWOTH = 00002
-S_IXOTH = 00001
-
-# Names for file flags
-
-UF_NODUMP    = 0x00000001
-UF_IMMUTABLE = 0x00000002
-UF_APPEND    = 0x00000004
-UF_OPAQUE    = 0x00000008
-UF_NOUNLINK  = 0x00000010
-SF_ARCHIVED  = 0x00010000
-SF_IMMUTABLE = 0x00020000
-SF_APPEND    = 0x00040000
-SF_NOUNLINK  = 0x00100000
-SF_SNAPSHOT  = 0x00200000
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/statvfs.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/statvfs.py
deleted file mode 100644
index 6aeddd5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/statvfs.py
+++ /dev/null
@@ -1,18 +0,0 @@
-"""Constants for interpreting the results of os.statvfs() and os.fstatvfs()."""
-from warnings import warnpy3k
-warnpy3k("the statvfs module has been removed in Python 3.0", stacklevel=2)
-del warnpy3k
-
-# Indices for statvfs struct members in the tuple returned by
-# os.statvfs() and os.fstatvfs().
-
-F_BSIZE   = 0           # Preferred file system block size
-F_FRSIZE  = 1           # Fundamental file system block size
-F_BLOCKS  = 2           # Total number of file system blocks (FRSIZE)
-F_BFREE   = 3           # Total number of free blocks
-F_BAVAIL  = 4           # Free blocks available to non-superuser
-F_FILES   = 5           # Total number of file nodes
-F_FFREE   = 6           # Total number of free file nodes
-F_FAVAIL  = 7           # Free nodes available to non-superuser
-F_FLAG    = 8           # Flags (see your local statvfs man page)
-F_NAMEMAX = 9           # Maximum file name length
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/string.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/string.py
deleted file mode 100644
index 117028e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/string.py
+++ /dev/null
@@ -1,642 +0,0 @@
-"""A collection of string operations (most are no longer used).
-
-Warning: most of the code you see here isn't normally used nowadays.
-Beginning with Python 1.6, many of these functions are implemented as
-methods on the standard string object. They used to be implemented by
-a built-in module called strop, but strop is now obsolete itself.
-
-Public module variables:
-
-whitespace -- a string containing all characters considered whitespace
-lowercase -- a string containing all characters considered lowercase letters
-uppercase -- a string containing all characters considered uppercase letters
-letters -- a string containing all characters considered letters
-digits -- a string containing all characters considered decimal digits
-hexdigits -- a string containing all characters considered hexadecimal digits
-octdigits -- a string containing all characters considered octal digits
-punctuation -- a string containing all characters considered punctuation
-printable -- a string containing all characters considered printable
-
-"""
-
-# Some strings for ctype-style character classification
-whitespace = ' \t\n\r\v\f'
-lowercase = 'abcdefghijklmnopqrstuvwxyz'
-uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-letters = lowercase + uppercase
-ascii_lowercase = lowercase
-ascii_uppercase = uppercase
-ascii_letters = ascii_lowercase + ascii_uppercase
-digits = '0123456789'
-hexdigits = digits + 'abcdef' + 'ABCDEF'
-octdigits = '01234567'
-punctuation = """!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""
-printable = digits + letters + punctuation + whitespace
-
-# Case conversion helpers
-# Use str to convert Unicode literal in case of -U
-l = map(chr, xrange(256))
-_idmap = str('').join(l)
-del l
-
-# Functions which aren't available as string methods.
-
-# Capitalize the words in a string, e.g. " aBc  dEf " -> "Abc Def".
-def capwords(s, sep=None):
-    """capwords(s [,sep]) -> string
-
-    Split the argument into words using split, capitalize each
-    word using capitalize, and join the capitalized words using
-    join.  If the optional second argument sep is absent or None,
-    runs of whitespace characters are replaced by a single space
-    and leading and trailing whitespace are removed, otherwise
-    sep is used to split and join the words.
-
-    """
-    return (sep or ' ').join(x.capitalize() for x in s.split(sep))
-
-
-# Construct a translation string
-_idmapL = None
-def maketrans(fromstr, tostr):
-    """maketrans(frm, to) -> string
-
-    Return a translation table (a string of 256 bytes long)
-    suitable for use in string.translate.  The strings frm and to
-    must be of the same length.
-
-    """
-    if len(fromstr) != len(tostr):
-        raise ValueError, "maketrans arguments must have same length"
-    global _idmapL
-    if not _idmapL:
-        _idmapL = list(_idmap)
-    L = _idmapL[:]
-    fromstr = map(ord, fromstr)
-    for i in range(len(fromstr)):
-        L[fromstr[i]] = tostr[i]
-    return ''.join(L)
-
-
-
-####################################################################
-import re as _re
-
-class _multimap:
-    """Helper class for combining multiple mappings.
-
-    Used by .{safe_,}substitute() to combine the mapping and keyword
-    arguments.
-    """
-    def __init__(self, primary, secondary):
-        self._primary = primary
-        self._secondary = secondary
-
-    def __getitem__(self, key):
-        try:
-            return self._primary[key]
-        except KeyError:
-            return self._secondary[key]
-
-
-class _TemplateMetaclass(type):
-    pattern = r"""
-    %(delim)s(?:
-      (?P<escaped>%(delim)s) |   # Escape sequence of two delimiters
-      (?P<named>%(id)s)      |   # delimiter and a Python identifier
-      {(?P<braced>%(id)s)}   |   # delimiter and a braced identifier
-      (?P<invalid>)              # Other ill-formed delimiter exprs
-    )
-    """
-
-    def __init__(cls, name, bases, dct):
-        super(_TemplateMetaclass, cls).__init__(name, bases, dct)
-        if 'pattern' in dct:
-            pattern = cls.pattern
-        else:
-            pattern = _TemplateMetaclass.pattern % {
-                'delim' : _re.escape(cls.delimiter),
-                'id'    : cls.idpattern,
-                }
-        cls.pattern = _re.compile(pattern, _re.IGNORECASE | _re.VERBOSE)
-
-
-class Template:
-    """A string class for supporting $-substitutions."""
-    __metaclass__ = _TemplateMetaclass
-
-    delimiter = '$'
-    idpattern = r'[_a-z][_a-z0-9]*'
-
-    def __init__(self, template):
-        self.template = template
-
-    # Search for $$, $identifier, ${identifier}, and any bare $'s
-
-    def _invalid(self, mo):
-        i = mo.start('invalid')
-        lines = self.template[:i].splitlines(True)
-        if not lines:
-            colno = 1
-            lineno = 1
-        else:
-            colno = i - len(''.join(lines[:-1]))
-            lineno = len(lines)
-        raise ValueError('Invalid placeholder in string: line %d, col %d' %
-                         (lineno, colno))
-
-    def substitute(self, *args, **kws):
-        if len(args) > 1:
-            raise TypeError('Too many positional arguments')
-        if not args:
-            mapping = kws
-        elif kws:
-            mapping = _multimap(kws, args[0])
-        else:
-            mapping = args[0]
-        # Helper function for .sub()
-        def convert(mo):
-            # Check the most common path first.
-            named = mo.group('named') or mo.group('braced')
-            if named is not None:
-                val = mapping[named]
-                # We use this idiom instead of str() because the latter will
-                # fail if val is a Unicode containing non-ASCII characters.
-                return '%s' % (val,)
-            if mo.group('escaped') is not None:
-                return self.delimiter
-            if mo.group('invalid') is not None:
-                self._invalid(mo)
-            raise ValueError('Unrecognized named group in pattern',
-                             self.pattern)
-        return self.pattern.sub(convert, self.template)
-
-    def safe_substitute(self, *args, **kws):
-        if len(args) > 1:
-            raise TypeError('Too many positional arguments')
-        if not args:
-            mapping = kws
-        elif kws:
-            mapping = _multimap(kws, args[0])
-        else:
-            mapping = args[0]
-        # Helper function for .sub()
-        def convert(mo):
-            named = mo.group('named')
-            if named is not None:
-                try:
-                    # We use this idiom instead of str() because the latter
-                    # will fail if val is a Unicode containing non-ASCII
-                    return '%s' % (mapping[named],)
-                except KeyError:
-                    return self.delimiter + named
-            braced = mo.group('braced')
-            if braced is not None:
-                try:
-                    return '%s' % (mapping[braced],)
-                except KeyError:
-                    return self.delimiter + '{' + braced + '}'
-            if mo.group('escaped') is not None:
-                return self.delimiter
-            if mo.group('invalid') is not None:
-                return self.delimiter
-            raise ValueError('Unrecognized named group in pattern',
-                             self.pattern)
-        return self.pattern.sub(convert, self.template)
-
-
-
-####################################################################
-# NOTE: Everything below here is deprecated.  Use string methods instead.
-# This stuff will go away in Python 3.0.
-
-# Backward compatible names for exceptions
-index_error = ValueError
-atoi_error = ValueError
-atof_error = ValueError
-atol_error = ValueError
-
-# convert UPPER CASE letters to lower case
-def lower(s):
-    """lower(s) -> string
-
-    Return a copy of the string s converted to lowercase.
-
-    """
-    return s.lower()
-
-# Convert lower case letters to UPPER CASE
-def upper(s):
-    """upper(s) -> string
-
-    Return a copy of the string s converted to uppercase.
-
-    """
-    return s.upper()
-
-# Swap lower case letters and UPPER CASE
-def swapcase(s):
-    """swapcase(s) -> string
-
-    Return a copy of the string s with upper case characters
-    converted to lowercase and vice versa.
-
-    """
-    return s.swapcase()
-
-# Strip leading and trailing tabs and spaces
-def strip(s, chars=None):
-    """strip(s [,chars]) -> string
-
-    Return a copy of the string s with leading and trailing
-    whitespace removed.
-    If chars is given and not None, remove characters in chars instead.
-    If chars is unicode, S will be converted to unicode before stripping.
-
-    """
-    return s.strip(chars)
-
-# Strip leading tabs and spaces
-def lstrip(s, chars=None):
-    """lstrip(s [,chars]) -> string
-
-    Return a copy of the string s with leading whitespace removed.
-    If chars is given and not None, remove characters in chars instead.
-
-    """
-    return s.lstrip(chars)
-
-# Strip trailing tabs and spaces
-def rstrip(s, chars=None):
-    """rstrip(s [,chars]) -> string
-
-    Return a copy of the string s with trailing whitespace removed.
-    If chars is given and not None, remove characters in chars instead.
-
-    """
-    return s.rstrip(chars)
-
-
-# Split a string into a list of space/tab-separated words
-def split(s, sep=None, maxsplit=-1):
-    """split(s [,sep [,maxsplit]]) -> list of strings
-
-    Return a list of the words in the string s, using sep as the
-    delimiter string.  If maxsplit is given, splits at no more than
-    maxsplit places (resulting in at most maxsplit+1 words).  If sep
-    is not specified or is None, any whitespace string is a separator.
-
-    (split and splitfields are synonymous)
-
-    """
-    return s.split(sep, maxsplit)
-splitfields = split
-
-# Split a string into a list of space/tab-separated words
-def rsplit(s, sep=None, maxsplit=-1):
-    """rsplit(s [,sep [,maxsplit]]) -> list of strings
-
-    Return a list of the words in the string s, using sep as the
-    delimiter string, starting at the end of the string and working
-    to the front.  If maxsplit is given, at most maxsplit splits are
-    done. If sep is not specified or is None, any whitespace string
-    is a separator.
-    """
-    return s.rsplit(sep, maxsplit)
-
-# Join fields with optional separator
-def join(words, sep = ' '):
-    """join(list [,sep]) -> string
-
-    Return a string composed of the words in list, with
-    intervening occurrences of sep.  The default separator is a
-    single space.
-
-    (joinfields and join are synonymous)
-
-    """
-    return sep.join(words)
-joinfields = join
-
-# Find substring, raise exception if not found
-def index(s, *args):
-    """index(s, sub [,start [,end]]) -> int
-
-    Like find but raises ValueError when the substring is not found.
-
-    """
-    return s.index(*args)
-
-# Find last substring, raise exception if not found
-def rindex(s, *args):
-    """rindex(s, sub [,start [,end]]) -> int
-
-    Like rfind but raises ValueError when the substring is not found.
-
-    """
-    return s.rindex(*args)
-
-# Count non-overlapping occurrences of substring
-def count(s, *args):
-    """count(s, sub[, start[,end]]) -> int
-
-    Return the number of occurrences of substring sub in string
-    s[start:end].  Optional arguments start and end are
-    interpreted as in slice notation.
-
-    """
-    return s.count(*args)
-
-# Find substring, return -1 if not found
-def find(s, *args):
-    """find(s, sub [,start [,end]]) -> in
-
-    Return the lowest index in s where substring sub is found,
-    such that sub is contained within s[start,end].  Optional
-    arguments start and end are interpreted as in slice notation.
-
-    Return -1 on failure.
-
-    """
-    return s.find(*args)
-
-# Find last substring, return -1 if not found
-def rfind(s, *args):
-    """rfind(s, sub [,start [,end]]) -> int
-
-    Return the highest index in s where substring sub is found,
-    such that sub is contained within s[start,end].  Optional
-    arguments start and end are interpreted as in slice notation.
-
-    Return -1 on failure.
-
-    """
-    return s.rfind(*args)
-
-# for a bit of speed
-_float = float
-_int = int
-_long = long
-
-# Convert string to float
-def atof(s):
-    """atof(s) -> float
-
-    Return the floating point number represented by the string s.
-
-    """
-    return _float(s)
-
-
-# Convert string to integer
-def atoi(s , base=10):
-    """atoi(s [,base]) -> int
-
-    Return the integer represented by the string s in the given
-    base, which defaults to 10.  The string s must consist of one
-    or more digits, possibly preceded by a sign.  If base is 0, it
-    is chosen from the leading characters of s, 0 for octal, 0x or
-    0X for hexadecimal.  If base is 16, a preceding 0x or 0X is
-    accepted.
-
-    """
-    return _int(s, base)
-
-
-# Convert string to long integer
-def atol(s, base=10):
-    """atol(s [,base]) -> long
-
-    Return the long integer represented by the string s in the
-    given base, which defaults to 10.  The string s must consist
-    of one or more digits, possibly preceded by a sign.  If base
-    is 0, it is chosen from the leading characters of s, 0 for
-    octal, 0x or 0X for hexadecimal.  If base is 16, a preceding
-    0x or 0X is accepted.  A trailing L or l is not accepted,
-    unless base is 0.
-
-    """
-    return _long(s, base)
-
-
-# Left-justify a string
-def ljust(s, width, *args):
-    """ljust(s, width[, fillchar]) -> string
-
-    Return a left-justified version of s, in a field of the
-    specified width, padded with spaces as needed.  The string is
-    never truncated.  If specified the fillchar is used instead of spaces.
-
-    """
-    return s.ljust(width, *args)
-
-# Right-justify a string
-def rjust(s, width, *args):
-    """rjust(s, width[, fillchar]) -> string
-
-    Return a right-justified version of s, in a field of the
-    specified width, padded with spaces as needed.  The string is
-    never truncated.  If specified the fillchar is used instead of spaces.
-
-    """
-    return s.rjust(width, *args)
-
-# Center a string
-def center(s, width, *args):
-    """center(s, width[, fillchar]) -> string
-
-    Return a center version of s, in a field of the specified
-    width. padded with spaces as needed.  The string is never
-    truncated.  If specified the fillchar is used instead of spaces.
-
-    """
-    return s.center(width, *args)
-
-# Zero-fill a number, e.g., (12, 3) --> '012' and (-3, 3) --> '-03'
-# Decadent feature: the argument may be a string or a number
-# (Use of this is deprecated; it should be a string as with ljust c.s.)
-def zfill(x, width):
-    """zfill(x, width) -> string
-
-    Pad a numeric string x with zeros on the left, to fill a field
-    of the specified width.  The string x is never truncated.
-
-    """
-    if not isinstance(x, basestring):
-        x = repr(x)
-    return x.zfill(width)
-
-# Expand tabs in a string.
-# Doesn't take non-printing chars into account, but does understand \n.
-def expandtabs(s, tabsize=8):
-    """expandtabs(s [,tabsize]) -> string
-
-    Return a copy of the string s with all tab characters replaced
-    by the appropriate number of spaces, depending on the current
-    column, and the tabsize (default 8).
-
-    """
-    return s.expandtabs(tabsize)
-
-# Character translation through look-up table.
-def translate(s, table, deletions=""):
-    """translate(s,table [,deletions]) -> string
-
-    Return a copy of the string s, where all characters occurring
-    in the optional argument deletions are removed, and the
-    remaining characters have been mapped through the given
-    translation table, which must be a string of length 256.  The
-    deletions argument is not allowed for Unicode strings.
-
-    """
-    if deletions or table is None:
-        return s.translate(table, deletions)
-    else:
-        # Add s[:0] so that if s is Unicode and table is an 8-bit string,
-        # table is converted to Unicode.  This means that table *cannot*
-        # be a dictionary -- for that feature, use u.translate() directly.
-        return s.translate(table + s[:0])
-
-# Capitalize a string, e.g. "aBc  dEf" -> "Abc  def".
-def capitalize(s):
-    """capitalize(s) -> string
-
-    Return a copy of the string s with only its first character
-    capitalized.
-
-    """
-    return s.capitalize()
-
-# Substring replacement (global)
-def replace(s, old, new, maxreplace=-1):
-    """replace (str, old, new[, maxreplace]) -> string
-
-    Return a copy of string str with all occurrences of substring
-    old replaced by new. If the optional argument maxreplace is
-    given, only the first maxreplace occurrences are replaced.
-
-    """
-    return s.replace(old, new, maxreplace)
-
-
-# Try importing optional built-in module "strop" -- if it exists,
-# it redefines some string operations that are 100-1000 times faster.
-# It also defines values for whitespace, lowercase and uppercase
-# that match <ctype.h>'s definitions.
-
-try:
-    from strop import maketrans, lowercase, uppercase, whitespace
-    letters = lowercase + uppercase
-except ImportError:
-    pass                                          # Use the original versions
-
-########################################################################
-# the Formatter class
-# see PEP 3101 for details and purpose of this class
-
-# The hard parts are reused from the C implementation.  They're exposed as "_"
-# prefixed methods of str and unicode.
-
-# The overall parser is implemented in str._formatter_parser.
-# The field name parser is implemented in str._formatter_field_name_split
-
-class Formatter(object):
-    def format(self, format_string, *args, **kwargs):
-        return self.vformat(format_string, args, kwargs)
-
-    def vformat(self, format_string, args, kwargs):
-        used_args = set()
-        result = self._vformat(format_string, args, kwargs, used_args, 2)
-        self.check_unused_args(used_args, args, kwargs)
-        return result
-
-    def _vformat(self, format_string, args, kwargs, used_args, recursion_depth):
-        if recursion_depth < 0:
-            raise ValueError('Max string recursion exceeded')
-        result = []
-        for literal_text, field_name, format_spec, conversion in \
-                self.parse(format_string):
-
-            # output the literal text
-            if literal_text:
-                result.append(literal_text)
-
-            # if there's a field, output it
-            if field_name is not None:
-                # this is some markup, find the object and do
-                #  the formatting
-
-                # given the field_name, find the object it references
-                #  and the argument it came from
-                obj, arg_used = self.get_field(field_name, args, kwargs)
-                used_args.add(arg_used)
-
-                # do any conversion on the resulting object
-                obj = self.convert_field(obj, conversion)
-
-                # expand the format spec, if needed
-                format_spec = self._vformat(format_spec, args, kwargs,
-                                            used_args, recursion_depth-1)
-
-                # format the object and append to the result
-                result.append(self.format_field(obj, format_spec))
-
-        return ''.join(result)
-
-
-    def get_value(self, key, args, kwargs):
-        if isinstance(key, (int, long)):
-            return args[key]
-        else:
-            return kwargs[key]
-
-
-    def check_unused_args(self, used_args, args, kwargs):
-        pass
-
-
-    def format_field(self, value, format_spec):
-        return format(value, format_spec)
-
-
-    def convert_field(self, value, conversion):
-        # do any conversion on the resulting object
-        if conversion == 'r':
-            return repr(value)
-        elif conversion == 's':
-            return str(value)
-        elif conversion is None:
-            return value
-        raise ValueError("Unknown conversion specifier {0!s}".format(conversion))
-
-
-    # returns an iterable that contains tuples of the form:
-    # (literal_text, field_name, format_spec, conversion)
-    # literal_text can be zero length
-    # field_name can be None, in which case there's no
-    #  object to format and output
-    # if field_name is not None, it is looked up, formatted
-    #  with format_spec and conversion and then used
-    def parse(self, format_string):
-        return format_string._formatter_parser()
-
-
-    # given a field_name, find the object it references.
-    #  field_name:   the field being looked up, e.g. "0.name"
-    #                 or "lookup[3]"
-    #  used_args:    a set of which args have been used
-    #  args, kwargs: as passed in to vformat
-    def get_field(self, field_name, args, kwargs):
-        first, rest = field_name._formatter_field_name_split()
-
-        obj = self.get_value(first, args, kwargs)
-
-        # loop through the rest of the field_name, doing
-        #  getattr or getitem as needed
-        for is_attr, i in rest:
-            if is_attr:
-                obj = getattr(obj, i)
-            else:
-                obj = obj[i]
-
-        return obj, first
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/stringold.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/stringold.py
deleted file mode 100644
index 5282341..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/stringold.py
+++ /dev/null
@@ -1,432 +0,0 @@
-# module 'string' -- A collection of string operations
-
-# Warning: most of the code you see here isn't normally used nowadays.  With
-# Python 1.6, many of these functions are implemented as methods on the
-# standard string object. They used to be implemented by a built-in module
-# called strop, but strop is now obsolete itself.
-
-"""Common string manipulations.
-
-Public module variables:
-
-whitespace -- a string containing all characters considered whitespace
-lowercase -- a string containing all characters considered lowercase letters
-uppercase -- a string containing all characters considered uppercase letters
-letters -- a string containing all characters considered letters
-digits -- a string containing all characters considered decimal digits
-hexdigits -- a string containing all characters considered hexadecimal digits
-octdigits -- a string containing all characters considered octal digits
-
-"""
-from warnings import warnpy3k
-warnpy3k("the stringold module has been removed in Python 3.0", stacklevel=2)
-del warnpy3k
-
-# Some strings for ctype-style character classification
-whitespace = ' \t\n\r\v\f'
-lowercase = 'abcdefghijklmnopqrstuvwxyz'
-uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-letters = lowercase + uppercase
-digits = '0123456789'
-hexdigits = digits + 'abcdef' + 'ABCDEF'
-octdigits = '01234567'
-
-# Case conversion helpers
-_idmap = ''
-for i in range(256): _idmap = _idmap + chr(i)
-del i
-
-# Backward compatible names for exceptions
-index_error = ValueError
-atoi_error = ValueError
-atof_error = ValueError
-atol_error = ValueError
-
-# convert UPPER CASE letters to lower case
-def lower(s):
-    """lower(s) -> string
-
-    Return a copy of the string s converted to lowercase.
-
-    """
-    return s.lower()
-
-# Convert lower case letters to UPPER CASE
-def upper(s):
-    """upper(s) -> string
-
-    Return a copy of the string s converted to uppercase.
-
-    """
-    return s.upper()
-
-# Swap lower case letters and UPPER CASE
-def swapcase(s):
-    """swapcase(s) -> string
-
-    Return a copy of the string s with upper case characters
-    converted to lowercase and vice versa.
-
-    """
-    return s.swapcase()
-
-# Strip leading and trailing tabs and spaces
-def strip(s):
-    """strip(s) -> string
-
-    Return a copy of the string s with leading and trailing
-    whitespace removed.
-
-    """
-    return s.strip()
-
-# Strip leading tabs and spaces
-def lstrip(s):
-    """lstrip(s) -> string
-
-    Return a copy of the string s with leading whitespace removed.
-
-    """
-    return s.lstrip()
-
-# Strip trailing tabs and spaces
-def rstrip(s):
-    """rstrip(s) -> string
-
-    Return a copy of the string s with trailing whitespace
-    removed.
-
-    """
-    return s.rstrip()
-
-
-# Split a string into a list of space/tab-separated words
-def split(s, sep=None, maxsplit=0):
-    """split(str [,sep [,maxsplit]]) -> list of strings
-
-    Return a list of the words in the string s, using sep as the
-    delimiter string.  If maxsplit is nonzero, splits into at most
-    maxsplit words If sep is not specified, any whitespace string
-    is a separator.  Maxsplit defaults to 0.
-
-    (split and splitfields are synonymous)
-
-    """
-    return s.split(sep, maxsplit)
-splitfields = split
-
-# Join fields with optional separator
-def join(words, sep = ' '):
-    """join(list [,sep]) -> string
-
-    Return a string composed of the words in list, with
-    intervening occurrences of sep.  The default separator is a
-    single space.
-
-    (joinfields and join are synonymous)
-
-    """
-    return sep.join(words)
-joinfields = join
-
-# for a little bit of speed
-_apply = apply
-
-# Find substring, raise exception if not found
-def index(s, *args):
-    """index(s, sub [,start [,end]]) -> int
-
-    Like find but raises ValueError when the substring is not found.
-
-    """
-    return _apply(s.index, args)
-
-# Find last substring, raise exception if not found
-def rindex(s, *args):
-    """rindex(s, sub [,start [,end]]) -> int
-
-    Like rfind but raises ValueError when the substring is not found.
-
-    """
-    return _apply(s.rindex, args)
-
-# Count non-overlapping occurrences of substring
-def count(s, *args):
-    """count(s, sub[, start[,end]]) -> int
-
-    Return the number of occurrences of substring sub in string
-    s[start:end].  Optional arguments start and end are
-    interpreted as in slice notation.
-
-    """
-    return _apply(s.count, args)
-
-# Find substring, return -1 if not found
-def find(s, *args):
-    """find(s, sub [,start [,end]]) -> in
-
-    Return the lowest index in s where substring sub is found,
-    such that sub is contained within s[start,end].  Optional
-    arguments start and end are interpreted as in slice notation.
-
-    Return -1 on failure.
-
-    """
-    return _apply(s.find, args)
-
-# Find last substring, return -1 if not found
-def rfind(s, *args):
-    """rfind(s, sub [,start [,end]]) -> int
-
-    Return the highest index in s where substring sub is found,
-    such that sub is contained within s[start,end].  Optional
-    arguments start and end are interpreted as in slice notation.
-
-    Return -1 on failure.
-
-    """
-    return _apply(s.rfind, args)
-
-# for a bit of speed
-_float = float
-_int = int
-_long = long
-_StringType = type('')
-
-# Convert string to float
-def atof(s):
-    """atof(s) -> float
-
-    Return the floating point number represented by the string s.
-
-    """
-    if type(s) == _StringType:
-        return _float(s)
-    else:
-        raise TypeError('argument 1: expected string, %s found' %
-                        type(s).__name__)
-
-# Convert string to integer
-def atoi(*args):
-    """atoi(s [,base]) -> int
-
-    Return the integer represented by the string s in the given
-    base, which defaults to 10.  The string s must consist of one
-    or more digits, possibly preceded by a sign.  If base is 0, it
-    is chosen from the leading characters of s, 0 for octal, 0x or
-    0X for hexadecimal.  If base is 16, a preceding 0x or 0X is
-    accepted.
-
-    """
-    try:
-        s = args[0]
-    except IndexError:
-        raise TypeError('function requires at least 1 argument: %d given' %
-                        len(args))
-    # Don't catch type error resulting from too many arguments to int().  The
-    # error message isn't compatible but the error type is, and this function
-    # is complicated enough already.
-    if type(s) == _StringType:
-        return _apply(_int, args)
-    else:
-        raise TypeError('argument 1: expected string, %s found' %
-                        type(s).__name__)
-
-
-# Convert string to long integer
-def atol(*args):
-    """atol(s [,base]) -> long
-
-    Return the long integer represented by the string s in the
-    given base, which defaults to 10.  The string s must consist
-    of one or more digits, possibly preceded by a sign.  If base
-    is 0, it is chosen from the leading characters of s, 0 for
-    octal, 0x or 0X for hexadecimal.  If base is 16, a preceding
-    0x or 0X is accepted.  A trailing L or l is not accepted,
-    unless base is 0.
-
-    """
-    try:
-        s = args[0]
-    except IndexError:
-        raise TypeError('function requires at least 1 argument: %d given' %
-                        len(args))
-    # Don't catch type error resulting from too many arguments to long().  The
-    # error message isn't compatible but the error type is, and this function
-    # is complicated enough already.
-    if type(s) == _StringType:
-        return _apply(_long, args)
-    else:
-        raise TypeError('argument 1: expected string, %s found' %
-                        type(s).__name__)
-
-
-# Left-justify a string
-def ljust(s, width):
-    """ljust(s, width) -> string
-
-    Return a left-justified version of s, in a field of the
-    specified width, padded with spaces as needed.  The string is
-    never truncated.
-
-    """
-    n = width - len(s)
-    if n <= 0: return s
-    return s + ' '*n
-
-# Right-justify a string
-def rjust(s, width):
-    """rjust(s, width) -> string
-
-    Return a right-justified version of s, in a field of the
-    specified width, padded with spaces as needed.  The string is
-    never truncated.
-
-    """
-    n = width - len(s)
-    if n <= 0: return s
-    return ' '*n + s
-
-# Center a string
-def center(s, width):
-    """center(s, width) -> string
-
-    Return a center version of s, in a field of the specified
-    width. padded with spaces as needed.  The string is never
-    truncated.
-
-    """
-    n = width - len(s)
-    if n <= 0: return s
-    half = n/2
-    if n%2 and width%2:
-        # This ensures that center(center(s, i), j) = center(s, j)
-        half = half+1
-    return ' '*half +  s + ' '*(n-half)
-
-# Zero-fill a number, e.g., (12, 3) --> '012' and (-3, 3) --> '-03'
-# Decadent feature: the argument may be a string or a number
-# (Use of this is deprecated; it should be a string as with ljust c.s.)
-def zfill(x, width):
-    """zfill(x, width) -> string
-
-    Pad a numeric string x with zeros on the left, to fill a field
-    of the specified width.  The string x is never truncated.
-
-    """
-    if type(x) == type(''): s = x
-    else: s = repr(x)
-    n = len(s)
-    if n >= width: return s
-    sign = ''
-    if s[0] in ('-', '+'):
-        sign, s = s[0], s[1:]
-    return sign + '0'*(width-n) + s
-
-# Expand tabs in a string.
-# Doesn't take non-printing chars into account, but does understand \n.
-def expandtabs(s, tabsize=8):
-    """expandtabs(s [,tabsize]) -> string
-
-    Return a copy of the string s with all tab characters replaced
-    by the appropriate number of spaces, depending on the current
-    column, and the tabsize (default 8).
-
-    """
-    res = line = ''
-    for c in s:
-        if c == '\t':
-            c = ' '*(tabsize - len(line) % tabsize)
-        line = line + c
-        if c == '\n':
-            res = res + line
-            line = ''
-    return res + line
-
-# Character translation through look-up table.
-def translate(s, table, deletions=""):
-    """translate(s,table [,deletechars]) -> string
-
-    Return a copy of the string s, where all characters occurring
-    in the optional argument deletechars are removed, and the
-    remaining characters have been mapped through the given
-    translation table, which must be a string of length 256.
-
-    """
-    return s.translate(table, deletions)
-
-# Capitalize a string, e.g. "aBc  dEf" -> "Abc  def".
-def capitalize(s):
-    """capitalize(s) -> string
-
-    Return a copy of the string s with only its first character
-    capitalized.
-
-    """
-    return s.capitalize()
-
-# Capitalize the words in a string, e.g. " aBc  dEf " -> "Abc Def".
-def capwords(s, sep=None):
-    """capwords(s, [sep]) -> string
-
-    Split the argument into words using split, capitalize each
-    word using capitalize, and join the capitalized words using
-    join. Note that this replaces runs of whitespace characters by
-    a single space.
-
-    """
-    return join(map(capitalize, s.split(sep)), sep or ' ')
-
-# Construct a translation string
-_idmapL = None
-def maketrans(fromstr, tostr):
-    """maketrans(frm, to) -> string
-
-    Return a translation table (a string of 256 bytes long)
-    suitable for use in string.translate.  The strings frm and to
-    must be of the same length.
-
-    """
-    if len(fromstr) != len(tostr):
-        raise ValueError, "maketrans arguments must have same length"
-    global _idmapL
-    if not _idmapL:
-        _idmapL = list(_idmap)
-    L = _idmapL[:]
-    fromstr = map(ord, fromstr)
-    for i in range(len(fromstr)):
-        L[fromstr[i]] = tostr[i]
-    return join(L, "")
-
-# Substring replacement (global)
-def replace(s, old, new, maxsplit=0):
-    """replace (str, old, new[, maxsplit]) -> string
-
-    Return a copy of string str with all occurrences of substring
-    old replaced by new. If the optional argument maxsplit is
-    given, only the first maxsplit occurrences are replaced.
-
-    """
-    return s.replace(old, new, maxsplit)
-
-
-# XXX: transitional
-#
-# If string objects do not have methods, then we need to use the old string.py
-# library, which uses strop for many more things than just the few outlined
-# below.
-try:
-    ''.upper
-except AttributeError:
-    from stringold import *
-
-# Try importing optional built-in module "strop" -- if it exists,
-# it redefines some string operations that are 100-1000 times faster.
-# It also defines values for whitespace, lowercase and uppercase
-# that match <ctype.h>'s definitions.
-
-try:
-    from strop import maketrans, lowercase, uppercase, whitespace
-    letters = lowercase + uppercase
-except ImportError:
-    pass                                          # Use the original versions
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/stringprep.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/stringprep.py
deleted file mode 100644
index 4840187..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/stringprep.py
+++ /dev/null
@@ -1,272 +0,0 @@
-# This file is generated by mkstringprep.py. DO NOT EDIT.
-"""Library that exposes various tables found in the StringPrep RFC 3454.
-
-There are two kinds of tables: sets, for which a member test is provided,
-and mappings, for which a mapping function is provided.
-"""
-
-from unicodedata import ucd_3_2_0 as unicodedata
-
-assert unicodedata.unidata_version == '3.2.0'
-
-def in_table_a1(code):
-    if unicodedata.category(code) != 'Cn': return False
-    c = ord(code)
-    if 0xFDD0 <= c < 0xFDF0: return False
-    return (c & 0xFFFF) not in (0xFFFE, 0xFFFF)
-
-
-b1_set = set([173, 847, 6150, 6155, 6156, 6157, 8203, 8204, 8205, 8288, 65279] + range(65024,65040))
-def in_table_b1(code):
-    return ord(code) in b1_set
-
-
-b3_exceptions = {
-0xb5:u'\u03bc', 0xdf:u'ss', 0x130:u'i\u0307', 0x149:u'\u02bcn',
-0x17f:u's', 0x1f0:u'j\u030c', 0x345:u'\u03b9', 0x37a:u' \u03b9',
-0x390:u'\u03b9\u0308\u0301', 0x3b0:u'\u03c5\u0308\u0301', 0x3c2:u'\u03c3', 0x3d0:u'\u03b2',
-0x3d1:u'\u03b8', 0x3d2:u'\u03c5', 0x3d3:u'\u03cd', 0x3d4:u'\u03cb',
-0x3d5:u'\u03c6', 0x3d6:u'\u03c0', 0x3f0:u'\u03ba', 0x3f1:u'\u03c1',
-0x3f2:u'\u03c3', 0x3f5:u'\u03b5', 0x587:u'\u0565\u0582', 0x1e96:u'h\u0331',
-0x1e97:u't\u0308', 0x1e98:u'w\u030a', 0x1e99:u'y\u030a', 0x1e9a:u'a\u02be',
-0x1e9b:u'\u1e61', 0x1f50:u'\u03c5\u0313', 0x1f52:u'\u03c5\u0313\u0300', 0x1f54:u'\u03c5\u0313\u0301',
-0x1f56:u'\u03c5\u0313\u0342', 0x1f80:u'\u1f00\u03b9', 0x1f81:u'\u1f01\u03b9', 0x1f82:u'\u1f02\u03b9',
-0x1f83:u'\u1f03\u03b9', 0x1f84:u'\u1f04\u03b9', 0x1f85:u'\u1f05\u03b9', 0x1f86:u'\u1f06\u03b9',
-0x1f87:u'\u1f07\u03b9', 0x1f88:u'\u1f00\u03b9', 0x1f89:u'\u1f01\u03b9', 0x1f8a:u'\u1f02\u03b9',
-0x1f8b:u'\u1f03\u03b9', 0x1f8c:u'\u1f04\u03b9', 0x1f8d:u'\u1f05\u03b9', 0x1f8e:u'\u1f06\u03b9',
-0x1f8f:u'\u1f07\u03b9', 0x1f90:u'\u1f20\u03b9', 0x1f91:u'\u1f21\u03b9', 0x1f92:u'\u1f22\u03b9',
-0x1f93:u'\u1f23\u03b9', 0x1f94:u'\u1f24\u03b9', 0x1f95:u'\u1f25\u03b9', 0x1f96:u'\u1f26\u03b9',
-0x1f97:u'\u1f27\u03b9', 0x1f98:u'\u1f20\u03b9', 0x1f99:u'\u1f21\u03b9', 0x1f9a:u'\u1f22\u03b9',
-0x1f9b:u'\u1f23\u03b9', 0x1f9c:u'\u1f24\u03b9', 0x1f9d:u'\u1f25\u03b9', 0x1f9e:u'\u1f26\u03b9',
-0x1f9f:u'\u1f27\u03b9', 0x1fa0:u'\u1f60\u03b9', 0x1fa1:u'\u1f61\u03b9', 0x1fa2:u'\u1f62\u03b9',
-0x1fa3:u'\u1f63\u03b9', 0x1fa4:u'\u1f64\u03b9', 0x1fa5:u'\u1f65\u03b9', 0x1fa6:u'\u1f66\u03b9',
-0x1fa7:u'\u1f67\u03b9', 0x1fa8:u'\u1f60\u03b9', 0x1fa9:u'\u1f61\u03b9', 0x1faa:u'\u1f62\u03b9',
-0x1fab:u'\u1f63\u03b9', 0x1fac:u'\u1f64\u03b9', 0x1fad:u'\u1f65\u03b9', 0x1fae:u'\u1f66\u03b9',
-0x1faf:u'\u1f67\u03b9', 0x1fb2:u'\u1f70\u03b9', 0x1fb3:u'\u03b1\u03b9', 0x1fb4:u'\u03ac\u03b9',
-0x1fb6:u'\u03b1\u0342', 0x1fb7:u'\u03b1\u0342\u03b9', 0x1fbc:u'\u03b1\u03b9', 0x1fbe:u'\u03b9',
-0x1fc2:u'\u1f74\u03b9', 0x1fc3:u'\u03b7\u03b9', 0x1fc4:u'\u03ae\u03b9', 0x1fc6:u'\u03b7\u0342',
-0x1fc7:u'\u03b7\u0342\u03b9', 0x1fcc:u'\u03b7\u03b9', 0x1fd2:u'\u03b9\u0308\u0300', 0x1fd3:u'\u03b9\u0308\u0301',
-0x1fd6:u'\u03b9\u0342', 0x1fd7:u'\u03b9\u0308\u0342', 0x1fe2:u'\u03c5\u0308\u0300', 0x1fe3:u'\u03c5\u0308\u0301',
-0x1fe4:u'\u03c1\u0313', 0x1fe6:u'\u03c5\u0342', 0x1fe7:u'\u03c5\u0308\u0342', 0x1ff2:u'\u1f7c\u03b9',
-0x1ff3:u'\u03c9\u03b9', 0x1ff4:u'\u03ce\u03b9', 0x1ff6:u'\u03c9\u0342', 0x1ff7:u'\u03c9\u0342\u03b9',
-0x1ffc:u'\u03c9\u03b9', 0x20a8:u'rs', 0x2102:u'c', 0x2103:u'\xb0c',
-0x2107:u'\u025b', 0x2109:u'\xb0f', 0x210b:u'h', 0x210c:u'h',
-0x210d:u'h', 0x2110:u'i', 0x2111:u'i', 0x2112:u'l',
-0x2115:u'n', 0x2116:u'no', 0x2119:u'p', 0x211a:u'q',
-0x211b:u'r', 0x211c:u'r', 0x211d:u'r', 0x2120:u'sm',
-0x2121:u'tel', 0x2122:u'tm', 0x2124:u'z', 0x2128:u'z',
-0x212c:u'b', 0x212d:u'c', 0x2130:u'e', 0x2131:u'f',
-0x2133:u'm', 0x213e:u'\u03b3', 0x213f:u'\u03c0', 0x2145:u'd',
-0x3371:u'hpa', 0x3373:u'au', 0x3375:u'ov', 0x3380:u'pa',
-0x3381:u'na', 0x3382:u'\u03bca', 0x3383:u'ma', 0x3384:u'ka',
-0x3385:u'kb', 0x3386:u'mb', 0x3387:u'gb', 0x338a:u'pf',
-0x338b:u'nf', 0x338c:u'\u03bcf', 0x3390:u'hz', 0x3391:u'khz',
-0x3392:u'mhz', 0x3393:u'ghz', 0x3394:u'thz', 0x33a9:u'pa',
-0x33aa:u'kpa', 0x33ab:u'mpa', 0x33ac:u'gpa', 0x33b4:u'pv',
-0x33b5:u'nv', 0x33b6:u'\u03bcv', 0x33b7:u'mv', 0x33b8:u'kv',
-0x33b9:u'mv', 0x33ba:u'pw', 0x33bb:u'nw', 0x33bc:u'\u03bcw',
-0x33bd:u'mw', 0x33be:u'kw', 0x33bf:u'mw', 0x33c0:u'k\u03c9',
-0x33c1:u'm\u03c9', 0x33c3:u'bq', 0x33c6:u'c\u2215kg', 0x33c7:u'co.',
-0x33c8:u'db', 0x33c9:u'gy', 0x33cb:u'hp', 0x33cd:u'kk',
-0x33ce:u'km', 0x33d7:u'ph', 0x33d9:u'ppm', 0x33da:u'pr',
-0x33dc:u'sv', 0x33dd:u'wb', 0xfb00:u'ff', 0xfb01:u'fi',
-0xfb02:u'fl', 0xfb03:u'ffi', 0xfb04:u'ffl', 0xfb05:u'st',
-0xfb06:u'st', 0xfb13:u'\u0574\u0576', 0xfb14:u'\u0574\u0565', 0xfb15:u'\u0574\u056b',
-0xfb16:u'\u057e\u0576', 0xfb17:u'\u0574\u056d', 0x1d400:u'a', 0x1d401:u'b',
-0x1d402:u'c', 0x1d403:u'd', 0x1d404:u'e', 0x1d405:u'f',
-0x1d406:u'g', 0x1d407:u'h', 0x1d408:u'i', 0x1d409:u'j',
-0x1d40a:u'k', 0x1d40b:u'l', 0x1d40c:u'm', 0x1d40d:u'n',
-0x1d40e:u'o', 0x1d40f:u'p', 0x1d410:u'q', 0x1d411:u'r',
-0x1d412:u's', 0x1d413:u't', 0x1d414:u'u', 0x1d415:u'v',
-0x1d416:u'w', 0x1d417:u'x', 0x1d418:u'y', 0x1d419:u'z',
-0x1d434:u'a', 0x1d435:u'b', 0x1d436:u'c', 0x1d437:u'd',
-0x1d438:u'e', 0x1d439:u'f', 0x1d43a:u'g', 0x1d43b:u'h',
-0x1d43c:u'i', 0x1d43d:u'j', 0x1d43e:u'k', 0x1d43f:u'l',
-0x1d440:u'm', 0x1d441:u'n', 0x1d442:u'o', 0x1d443:u'p',
-0x1d444:u'q', 0x1d445:u'r', 0x1d446:u's', 0x1d447:u't',
-0x1d448:u'u', 0x1d449:u'v', 0x1d44a:u'w', 0x1d44b:u'x',
-0x1d44c:u'y', 0x1d44d:u'z', 0x1d468:u'a', 0x1d469:u'b',
-0x1d46a:u'c', 0x1d46b:u'd', 0x1d46c:u'e', 0x1d46d:u'f',
-0x1d46e:u'g', 0x1d46f:u'h', 0x1d470:u'i', 0x1d471:u'j',
-0x1d472:u'k', 0x1d473:u'l', 0x1d474:u'm', 0x1d475:u'n',
-0x1d476:u'o', 0x1d477:u'p', 0x1d478:u'q', 0x1d479:u'r',
-0x1d47a:u's', 0x1d47b:u't', 0x1d47c:u'u', 0x1d47d:u'v',
-0x1d47e:u'w', 0x1d47f:u'x', 0x1d480:u'y', 0x1d481:u'z',
-0x1d49c:u'a', 0x1d49e:u'c', 0x1d49f:u'd', 0x1d4a2:u'g',
-0x1d4a5:u'j', 0x1d4a6:u'k', 0x1d4a9:u'n', 0x1d4aa:u'o',
-0x1d4ab:u'p', 0x1d4ac:u'q', 0x1d4ae:u's', 0x1d4af:u't',
-0x1d4b0:u'u', 0x1d4b1:u'v', 0x1d4b2:u'w', 0x1d4b3:u'x',
-0x1d4b4:u'y', 0x1d4b5:u'z', 0x1d4d0:u'a', 0x1d4d1:u'b',
-0x1d4d2:u'c', 0x1d4d3:u'd', 0x1d4d4:u'e', 0x1d4d5:u'f',
-0x1d4d6:u'g', 0x1d4d7:u'h', 0x1d4d8:u'i', 0x1d4d9:u'j',
-0x1d4da:u'k', 0x1d4db:u'l', 0x1d4dc:u'm', 0x1d4dd:u'n',
-0x1d4de:u'o', 0x1d4df:u'p', 0x1d4e0:u'q', 0x1d4e1:u'r',
-0x1d4e2:u's', 0x1d4e3:u't', 0x1d4e4:u'u', 0x1d4e5:u'v',
-0x1d4e6:u'w', 0x1d4e7:u'x', 0x1d4e8:u'y', 0x1d4e9:u'z',
-0x1d504:u'a', 0x1d505:u'b', 0x1d507:u'd', 0x1d508:u'e',
-0x1d509:u'f', 0x1d50a:u'g', 0x1d50d:u'j', 0x1d50e:u'k',
-0x1d50f:u'l', 0x1d510:u'm', 0x1d511:u'n', 0x1d512:u'o',
-0x1d513:u'p', 0x1d514:u'q', 0x1d516:u's', 0x1d517:u't',
-0x1d518:u'u', 0x1d519:u'v', 0x1d51a:u'w', 0x1d51b:u'x',
-0x1d51c:u'y', 0x1d538:u'a', 0x1d539:u'b', 0x1d53b:u'd',
-0x1d53c:u'e', 0x1d53d:u'f', 0x1d53e:u'g', 0x1d540:u'i',
-0x1d541:u'j', 0x1d542:u'k', 0x1d543:u'l', 0x1d544:u'm',
-0x1d546:u'o', 0x1d54a:u's', 0x1d54b:u't', 0x1d54c:u'u',
-0x1d54d:u'v', 0x1d54e:u'w', 0x1d54f:u'x', 0x1d550:u'y',
-0x1d56c:u'a', 0x1d56d:u'b', 0x1d56e:u'c', 0x1d56f:u'd',
-0x1d570:u'e', 0x1d571:u'f', 0x1d572:u'g', 0x1d573:u'h',
-0x1d574:u'i', 0x1d575:u'j', 0x1d576:u'k', 0x1d577:u'l',
-0x1d578:u'm', 0x1d579:u'n', 0x1d57a:u'o', 0x1d57b:u'p',
-0x1d57c:u'q', 0x1d57d:u'r', 0x1d57e:u's', 0x1d57f:u't',
-0x1d580:u'u', 0x1d581:u'v', 0x1d582:u'w', 0x1d583:u'x',
-0x1d584:u'y', 0x1d585:u'z', 0x1d5a0:u'a', 0x1d5a1:u'b',
-0x1d5a2:u'c', 0x1d5a3:u'd', 0x1d5a4:u'e', 0x1d5a5:u'f',
-0x1d5a6:u'g', 0x1d5a7:u'h', 0x1d5a8:u'i', 0x1d5a9:u'j',
-0x1d5aa:u'k', 0x1d5ab:u'l', 0x1d5ac:u'm', 0x1d5ad:u'n',
-0x1d5ae:u'o', 0x1d5af:u'p', 0x1d5b0:u'q', 0x1d5b1:u'r',
-0x1d5b2:u's', 0x1d5b3:u't', 0x1d5b4:u'u', 0x1d5b5:u'v',
-0x1d5b6:u'w', 0x1d5b7:u'x', 0x1d5b8:u'y', 0x1d5b9:u'z',
-0x1d5d4:u'a', 0x1d5d5:u'b', 0x1d5d6:u'c', 0x1d5d7:u'd',
-0x1d5d8:u'e', 0x1d5d9:u'f', 0x1d5da:u'g', 0x1d5db:u'h',
-0x1d5dc:u'i', 0x1d5dd:u'j', 0x1d5de:u'k', 0x1d5df:u'l',
-0x1d5e0:u'm', 0x1d5e1:u'n', 0x1d5e2:u'o', 0x1d5e3:u'p',
-0x1d5e4:u'q', 0x1d5e5:u'r', 0x1d5e6:u's', 0x1d5e7:u't',
-0x1d5e8:u'u', 0x1d5e9:u'v', 0x1d5ea:u'w', 0x1d5eb:u'x',
-0x1d5ec:u'y', 0x1d5ed:u'z', 0x1d608:u'a', 0x1d609:u'b',
-0x1d60a:u'c', 0x1d60b:u'd', 0x1d60c:u'e', 0x1d60d:u'f',
-0x1d60e:u'g', 0x1d60f:u'h', 0x1d610:u'i', 0x1d611:u'j',
-0x1d612:u'k', 0x1d613:u'l', 0x1d614:u'm', 0x1d615:u'n',
-0x1d616:u'o', 0x1d617:u'p', 0x1d618:u'q', 0x1d619:u'r',
-0x1d61a:u's', 0x1d61b:u't', 0x1d61c:u'u', 0x1d61d:u'v',
-0x1d61e:u'w', 0x1d61f:u'x', 0x1d620:u'y', 0x1d621:u'z',
-0x1d63c:u'a', 0x1d63d:u'b', 0x1d63e:u'c', 0x1d63f:u'd',
-0x1d640:u'e', 0x1d641:u'f', 0x1d642:u'g', 0x1d643:u'h',
-0x1d644:u'i', 0x1d645:u'j', 0x1d646:u'k', 0x1d647:u'l',
-0x1d648:u'm', 0x1d649:u'n', 0x1d64a:u'o', 0x1d64b:u'p',
-0x1d64c:u'q', 0x1d64d:u'r', 0x1d64e:u's', 0x1d64f:u't',
-0x1d650:u'u', 0x1d651:u'v', 0x1d652:u'w', 0x1d653:u'x',
-0x1d654:u'y', 0x1d655:u'z', 0x1d670:u'a', 0x1d671:u'b',
-0x1d672:u'c', 0x1d673:u'd', 0x1d674:u'e', 0x1d675:u'f',
-0x1d676:u'g', 0x1d677:u'h', 0x1d678:u'i', 0x1d679:u'j',
-0x1d67a:u'k', 0x1d67b:u'l', 0x1d67c:u'm', 0x1d67d:u'n',
-0x1d67e:u'o', 0x1d67f:u'p', 0x1d680:u'q', 0x1d681:u'r',
-0x1d682:u's', 0x1d683:u't', 0x1d684:u'u', 0x1d685:u'v',
-0x1d686:u'w', 0x1d687:u'x', 0x1d688:u'y', 0x1d689:u'z',
-0x1d6a8:u'\u03b1', 0x1d6a9:u'\u03b2', 0x1d6aa:u'\u03b3', 0x1d6ab:u'\u03b4',
-0x1d6ac:u'\u03b5', 0x1d6ad:u'\u03b6', 0x1d6ae:u'\u03b7', 0x1d6af:u'\u03b8',
-0x1d6b0:u'\u03b9', 0x1d6b1:u'\u03ba', 0x1d6b2:u'\u03bb', 0x1d6b3:u'\u03bc',
-0x1d6b4:u'\u03bd', 0x1d6b5:u'\u03be', 0x1d6b6:u'\u03bf', 0x1d6b7:u'\u03c0',
-0x1d6b8:u'\u03c1', 0x1d6b9:u'\u03b8', 0x1d6ba:u'\u03c3', 0x1d6bb:u'\u03c4',
-0x1d6bc:u'\u03c5', 0x1d6bd:u'\u03c6', 0x1d6be:u'\u03c7', 0x1d6bf:u'\u03c8',
-0x1d6c0:u'\u03c9', 0x1d6d3:u'\u03c3', 0x1d6e2:u'\u03b1', 0x1d6e3:u'\u03b2',
-0x1d6e4:u'\u03b3', 0x1d6e5:u'\u03b4', 0x1d6e6:u'\u03b5', 0x1d6e7:u'\u03b6',
-0x1d6e8:u'\u03b7', 0x1d6e9:u'\u03b8', 0x1d6ea:u'\u03b9', 0x1d6eb:u'\u03ba',
-0x1d6ec:u'\u03bb', 0x1d6ed:u'\u03bc', 0x1d6ee:u'\u03bd', 0x1d6ef:u'\u03be',
-0x1d6f0:u'\u03bf', 0x1d6f1:u'\u03c0', 0x1d6f2:u'\u03c1', 0x1d6f3:u'\u03b8',
-0x1d6f4:u'\u03c3', 0x1d6f5:u'\u03c4', 0x1d6f6:u'\u03c5', 0x1d6f7:u'\u03c6',
-0x1d6f8:u'\u03c7', 0x1d6f9:u'\u03c8', 0x1d6fa:u'\u03c9', 0x1d70d:u'\u03c3',
-0x1d71c:u'\u03b1', 0x1d71d:u'\u03b2', 0x1d71e:u'\u03b3', 0x1d71f:u'\u03b4',
-0x1d720:u'\u03b5', 0x1d721:u'\u03b6', 0x1d722:u'\u03b7', 0x1d723:u'\u03b8',
-0x1d724:u'\u03b9', 0x1d725:u'\u03ba', 0x1d726:u'\u03bb', 0x1d727:u'\u03bc',
-0x1d728:u'\u03bd', 0x1d729:u'\u03be', 0x1d72a:u'\u03bf', 0x1d72b:u'\u03c0',
-0x1d72c:u'\u03c1', 0x1d72d:u'\u03b8', 0x1d72e:u'\u03c3', 0x1d72f:u'\u03c4',
-0x1d730:u'\u03c5', 0x1d731:u'\u03c6', 0x1d732:u'\u03c7', 0x1d733:u'\u03c8',
-0x1d734:u'\u03c9', 0x1d747:u'\u03c3', 0x1d756:u'\u03b1', 0x1d757:u'\u03b2',
-0x1d758:u'\u03b3', 0x1d759:u'\u03b4', 0x1d75a:u'\u03b5', 0x1d75b:u'\u03b6',
-0x1d75c:u'\u03b7', 0x1d75d:u'\u03b8', 0x1d75e:u'\u03b9', 0x1d75f:u'\u03ba',
-0x1d760:u'\u03bb', 0x1d761:u'\u03bc', 0x1d762:u'\u03bd', 0x1d763:u'\u03be',
-0x1d764:u'\u03bf', 0x1d765:u'\u03c0', 0x1d766:u'\u03c1', 0x1d767:u'\u03b8',
-0x1d768:u'\u03c3', 0x1d769:u'\u03c4', 0x1d76a:u'\u03c5', 0x1d76b:u'\u03c6',
-0x1d76c:u'\u03c7', 0x1d76d:u'\u03c8', 0x1d76e:u'\u03c9', 0x1d781:u'\u03c3',
-0x1d790:u'\u03b1', 0x1d791:u'\u03b2', 0x1d792:u'\u03b3', 0x1d793:u'\u03b4',
-0x1d794:u'\u03b5', 0x1d795:u'\u03b6', 0x1d796:u'\u03b7', 0x1d797:u'\u03b8',
-0x1d798:u'\u03b9', 0x1d799:u'\u03ba', 0x1d79a:u'\u03bb', 0x1d79b:u'\u03bc',
-0x1d79c:u'\u03bd', 0x1d79d:u'\u03be', 0x1d79e:u'\u03bf', 0x1d79f:u'\u03c0',
-0x1d7a0:u'\u03c1', 0x1d7a1:u'\u03b8', 0x1d7a2:u'\u03c3', 0x1d7a3:u'\u03c4',
-0x1d7a4:u'\u03c5', 0x1d7a5:u'\u03c6', 0x1d7a6:u'\u03c7', 0x1d7a7:u'\u03c8',
-0x1d7a8:u'\u03c9', 0x1d7bb:u'\u03c3', }
-
-def map_table_b3(code):
-    r = b3_exceptions.get(ord(code))
-    if r is not None: return r
-    return code.lower()
-
-
-def map_table_b2(a):
-    al = map_table_b3(a)
-    b = unicodedata.normalize("NFKC", al)
-    bl = u"".join([map_table_b3(ch) for ch in b])
-    c = unicodedata.normalize("NFKC", bl)
-    if b != c:
-        return c
-    else:
-        return al
-
-
-def in_table_c11(code):
-    return code == u" "
-
-
-def in_table_c12(code):
-    return unicodedata.category(code) == "Zs" and code != u" "
-
-def in_table_c11_c12(code):
-    return unicodedata.category(code) == "Zs"
-
-
-def in_table_c21(code):
-    return ord(code) < 128 and unicodedata.category(code) == "Cc"
-
-c22_specials = set([1757, 1807, 6158, 8204, 8205, 8232, 8233, 65279] + range(8288,8292) + range(8298,8304) + range(65529,65533) + range(119155,119163))
-def in_table_c22(code):
-    c = ord(code)
-    if c < 128: return False
-    if unicodedata.category(code) == "Cc": return True
-    return c in c22_specials
-
-def in_table_c21_c22(code):
-    return unicodedata.category(code) == "Cc" or \
-           ord(code) in c22_specials
-
-
-def in_table_c3(code):
-    return unicodedata.category(code) == "Co"
-
-
-def in_table_c4(code):
-    c = ord(code)
-    if c < 0xFDD0: return False
-    if c < 0xFDF0: return True
-    return (ord(code) & 0xFFFF) in (0xFFFE, 0xFFFF)
-
-
-def in_table_c5(code):
-    return unicodedata.category(code) == "Cs"
-
-
-c6_set = set(range(65529,65534))
-def in_table_c6(code):
-    return ord(code) in c6_set
-
-
-c7_set = set(range(12272,12284))
-def in_table_c7(code):
-    return ord(code) in c7_set
-
-
-c8_set = set([832, 833, 8206, 8207] + range(8234,8239) + range(8298,8304))
-def in_table_c8(code):
-    return ord(code) in c8_set
-
-
-c9_set = set([917505] + range(917536,917632))
-def in_table_c9(code):
-    return ord(code) in c9_set
-
-
-def in_table_d1(code):
-    return unicodedata.bidirectional(code) in ("R","AL")
-
-
-def in_table_d2(code):
-    return unicodedata.bidirectional(code) == "L"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/struct.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/struct.py
deleted file mode 100644
index f7c44e9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/struct.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from _struct import *
-from _struct import _clearcache
-from _struct import __doc__
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/symbol.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/symbol.py
deleted file mode 100644
index 3980853..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/symbol.py
+++ /dev/null
@@ -1,114 +0,0 @@
-#! /usr/bin/env python
-
-"""Non-terminal symbols of Python grammar (from "graminit.h")."""
-
-#  This file is automatically generated; please don't muck it up!
-#
-#  To update the symbols in this file, 'cd' to the top directory of
-#  the python source tree after building the interpreter and run:
-#
-#    python Lib/symbol.py
-
-#--start constants--
-single_input = 256
-file_input = 257
-eval_input = 258
-decorator = 259
-decorators = 260
-decorated = 261
-funcdef = 262
-parameters = 263
-varargslist = 264
-fpdef = 265
-fplist = 266
-stmt = 267
-simple_stmt = 268
-small_stmt = 269
-expr_stmt = 270
-augassign = 271
-print_stmt = 272
-del_stmt = 273
-pass_stmt = 274
-flow_stmt = 275
-break_stmt = 276
-continue_stmt = 277
-return_stmt = 278
-yield_stmt = 279
-raise_stmt = 280
-import_stmt = 281
-import_name = 282
-import_from = 283
-import_as_name = 284
-dotted_as_name = 285
-import_as_names = 286
-dotted_as_names = 287
-dotted_name = 288
-global_stmt = 289
-exec_stmt = 290
-assert_stmt = 291
-compound_stmt = 292
-if_stmt = 293
-while_stmt = 294
-for_stmt = 295
-try_stmt = 296
-with_stmt = 297
-with_item = 298
-except_clause = 299
-suite = 300
-testlist_safe = 301
-old_test = 302
-old_lambdef = 303
-test = 304
-or_test = 305
-and_test = 306
-not_test = 307
-comparison = 308
-comp_op = 309
-expr = 310
-xor_expr = 311
-and_expr = 312
-shift_expr = 313
-arith_expr = 314
-term = 315
-factor = 316
-power = 317
-atom = 318
-listmaker = 319
-testlist_comp = 320
-lambdef = 321
-trailer = 322
-subscriptlist = 323
-subscript = 324
-sliceop = 325
-exprlist = 326
-testlist = 327
-dictorsetmaker = 328
-classdef = 329
-arglist = 330
-argument = 331
-list_iter = 332
-list_for = 333
-list_if = 334
-comp_iter = 335
-comp_for = 336
-comp_if = 337
-testlist1 = 338
-encoding_decl = 339
-yield_expr = 340
-#--end constants--
-
-sym_name = {}
-for _name, _value in globals().items():
-    if type(_value) is type(0):
-        sym_name[_value] = _name
-
-
-def main():
-    import sys
-    import token
-    if len(sys.argv) == 1:
-        sys.argv = sys.argv + ["Include/graminit.h", "Lib/symbol.py"]
-    token.main()
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/symtable.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/symtable.py
deleted file mode 100644
index 50d1f42..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/symtable.py
+++ /dev/null
@@ -1,242 +0,0 @@
-"""Interface to the compiler's internal symbol tables"""
-
-import _symtable
-from _symtable import (USE, DEF_GLOBAL, DEF_LOCAL, DEF_PARAM,
-     DEF_IMPORT, DEF_BOUND, OPT_IMPORT_STAR, OPT_EXEC, OPT_BARE_EXEC,
-     SCOPE_OFF, SCOPE_MASK, FREE, GLOBAL_IMPLICIT, GLOBAL_EXPLICIT, CELL, LOCAL)
-
-import weakref
-
-__all__ = ["symtable", "SymbolTable", "Class", "Function", "Symbol"]
-
-def symtable(code, filename, compile_type):
-    raw = _symtable.symtable(code, filename, compile_type)
-    for top in raw.itervalues():
-        if top.name == 'top':
-            break
-    return _newSymbolTable(top, filename)
-
-class SymbolTableFactory:
-    def __init__(self):
-        self.__memo = weakref.WeakValueDictionary()
-
-    def new(self, table, filename):
-        if table.type == _symtable.TYPE_FUNCTION:
-            return Function(table, filename)
-        if table.type == _symtable.TYPE_CLASS:
-            return Class(table, filename)
-        return SymbolTable(table, filename)
-
-    def __call__(self, table, filename):
-        key = table, filename
-        obj = self.__memo.get(key, None)
-        if obj is None:
-            obj = self.__memo[key] = self.new(table, filename)
-        return obj
-
-_newSymbolTable = SymbolTableFactory()
-
-
-class SymbolTable(object):
-
-    def __init__(self, raw_table, filename):
-        self._table = raw_table
-        self._filename = filename
-        self._symbols = {}
-
-    def __repr__(self):
-        if self.__class__ == SymbolTable:
-            kind = ""
-        else:
-            kind = "%s " % self.__class__.__name__
-
-        if self._table.name == "global":
-            return "<{0}SymbolTable for module {1}>".format(kind, self._filename)
-        else:
-            return "<{0}SymbolTable for {1} in {2}>".format(kind,
-                                                            self._table.name,
-                                                            self._filename)
-
-    def get_type(self):
-        if self._table.type == _symtable.TYPE_MODULE:
-            return "module"
-        if self._table.type == _symtable.TYPE_FUNCTION:
-            return "function"
-        if self._table.type == _symtable.TYPE_CLASS:
-            return "class"
-        assert self._table.type in (1, 2, 3), \
-               "unexpected type: {0}".format(self._table.type)
-
-    def get_id(self):
-        return self._table.id
-
-    def get_name(self):
-        return self._table.name
-
-    def get_lineno(self):
-        return self._table.lineno
-
-    def is_optimized(self):
-        return bool(self._table.type == _symtable.TYPE_FUNCTION
-                    and not self._table.optimized)
-
-    def is_nested(self):
-        return bool(self._table.nested)
-
-    def has_children(self):
-        return bool(self._table.children)
-
-    def has_exec(self):
-        """Return true if the scope uses exec"""
-        return bool(self._table.optimized & (OPT_EXEC | OPT_BARE_EXEC))
-
-    def has_import_star(self):
-        """Return true if the scope uses import *"""
-        return bool(self._table.optimized & OPT_IMPORT_STAR)
-
-    def get_identifiers(self):
-        return self._table.symbols.keys()
-
-    def lookup(self, name):
-        sym = self._symbols.get(name)
-        if sym is None:
-            flags = self._table.symbols[name]
-            namespaces = self.__check_children(name)
-            sym = self._symbols[name] = Symbol(name, flags, namespaces)
-        return sym
-
-    def get_symbols(self):
-        return [self.lookup(ident) for ident in self.get_identifiers()]
-
-    def __check_children(self, name):
-        return [_newSymbolTable(st, self._filename)
-                for st in self._table.children
-                if st.name == name]
-
-    def get_children(self):
-        return [_newSymbolTable(st, self._filename)
-                for st in self._table.children]
-
-
-class Function(SymbolTable):
-
-    # Default values for instance variables
-    __params = None
-    __locals = None
-    __frees = None
-    __globals = None
-
-    def __idents_matching(self, test_func):
-        return tuple([ident for ident in self.get_identifiers()
-                      if test_func(self._table.symbols[ident])])
-
-    def get_parameters(self):
-        if self.__params is None:
-            self.__params = self.__idents_matching(lambda x:x & DEF_PARAM)
-        return self.__params
-
-    def get_locals(self):
-        if self.__locals is None:
-            locs = (LOCAL, CELL)
-            test = lambda x: ((x >> SCOPE_OFF) & SCOPE_MASK) in locs
-            self.__locals = self.__idents_matching(test)
-        return self.__locals
-
-    def get_globals(self):
-        if self.__globals is None:
-            glob = (GLOBAL_IMPLICIT, GLOBAL_EXPLICIT)
-            test = lambda x:((x >> SCOPE_OFF) & SCOPE_MASK) in glob
-            self.__globals = self.__idents_matching(test)
-        return self.__globals
-
-    def get_frees(self):
-        if self.__frees is None:
-            is_free = lambda x:((x >> SCOPE_OFF) & SCOPE_MASK) == FREE
-            self.__frees = self.__idents_matching(is_free)
-        return self.__frees
-
-
-class Class(SymbolTable):
-
-    __methods = None
-
-    def get_methods(self):
-        if self.__methods is None:
-            d = {}
-            for st in self._table.children:
-                d[st.name] = 1
-            self.__methods = tuple(d)
-        return self.__methods
-
-
-class Symbol(object):
-
-    def __init__(self, name, flags, namespaces=None):
-        self.__name = name
-        self.__flags = flags
-        self.__scope = (flags >> SCOPE_OFF) & SCOPE_MASK # like PyST_GetScope()
-        self.__namespaces = namespaces or ()
-
-    def __repr__(self):
-        return "<symbol {0!r}>".format(self.__name)
-
-    def get_name(self):
-        return self.__name
-
-    def is_referenced(self):
-        return bool(self.__flags & _symtable.USE)
-
-    def is_parameter(self):
-        return bool(self.__flags & DEF_PARAM)
-
-    def is_global(self):
-        return bool(self.__scope in (GLOBAL_IMPLICIT, GLOBAL_EXPLICIT))
-
-    def is_declared_global(self):
-        return bool(self.__scope == GLOBAL_EXPLICIT)
-
-    def is_local(self):
-        return bool(self.__flags & DEF_BOUND)
-
-    def is_free(self):
-        return bool(self.__scope == FREE)
-
-    def is_imported(self):
-        return bool(self.__flags & DEF_IMPORT)
-
-    def is_assigned(self):
-        return bool(self.__flags & DEF_LOCAL)
-
-    def is_namespace(self):
-        """Returns true if name binding introduces new namespace.
-
-        If the name is used as the target of a function or class
-        statement, this will be true.
-
-        Note that a single name can be bound to multiple objects.  If
-        is_namespace() is true, the name may also be bound to other
-        objects, like an int or list, that does not introduce a new
-        namespace.
-        """
-        return bool(self.__namespaces)
-
-    def get_namespaces(self):
-        """Return a list of namespaces bound to this name"""
-        return self.__namespaces
-
-    def get_namespace(self):
-        """Returns the single namespace bound to this name.
-
-        Raises ValueError if the name is bound to multiple namespaces.
-        """
-        if len(self.__namespaces) != 1:
-            raise ValueError, "name is bound to multiple namespaces"
-        return self.__namespaces[0]
-
-if __name__ == "__main__":
-    import os, sys
-    src = open(sys.argv[0]).read()
-    mod = symtable(src, os.path.split(sys.argv[0])[1], "exec")
-    for ident in mod.get_identifiers():
-        info = mod.lookup(ident)
-        print info, info.is_local(), info.is_namespace()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/sysconfig.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/sysconfig.py
deleted file mode 100644
index 3cfe697..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/sysconfig.py
+++ /dev/null
@@ -1,687 +0,0 @@
-"""Provide access to Python's configuration information.
-
-"""
-import sys
-import os
-from os.path import pardir, realpath
-
-_INSTALL_SCHEMES = {
-    'posix_prefix': {
-        '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}',
-        },
-    'posix_home': {
-        'stdlib': '{base}/lib/python',
-        'platstdlib': '{base}/lib/python',
-        'purelib': '{base}/lib/python',
-        'platlib': '{base}/lib/python',
-        'include': '{base}/include/python',
-        'platinclude': '{base}/include/python',
-        'scripts': '{base}/bin',
-        'data'   : '{base}',
-        },
-    'nt': {
-        '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}',
-        },
-    '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}',
-        },
-    'os2_home': {
-        'stdlib': '{userbase}/lib/python{py_version_short}',
-        'platstdlib': '{userbase}/lib/python{py_version_short}',
-        'purelib': '{userbase}/lib/python{py_version_short}/site-packages',
-        'platlib': '{userbase}/lib/python{py_version_short}/site-packages',
-        'include': '{userbase}/include/python{py_version_short}',
-        'scripts': '{userbase}/bin',
-        'data'   : '{userbase}',
-        },
-    'nt_user': {
-        'stdlib': '{userbase}/Python{py_version_nodot}',
-        'platstdlib': '{userbase}/Python{py_version_nodot}',
-        'purelib': '{userbase}/Python{py_version_nodot}/site-packages',
-        'platlib': '{userbase}/Python{py_version_nodot}/site-packages',
-        'include': '{userbase}/Python{py_version_nodot}/Include',
-        'scripts': '{userbase}/Scripts',
-        'data'   : '{userbase}',
-        },
-    'posix_user': {
-        'stdlib': '{userbase}/lib/python{py_version_short}',
-        'platstdlib': '{userbase}/lib/python{py_version_short}',
-        'purelib': '{userbase}/lib/python{py_version_short}/site-packages',
-        'platlib': '{userbase}/lib/python{py_version_short}/site-packages',
-        'include': '{userbase}/include/python{py_version_short}',
-        'scripts': '{userbase}/bin',
-        'data'   : '{userbase}',
-        },
-    'osx_framework_user': {
-        'stdlib': '{userbase}/lib/python',
-        'platstdlib': '{userbase}/lib/python',
-        'purelib': '{userbase}/lib/python/site-packages',
-        'platlib': '{userbase}/lib/python/site-packages',
-        'include': '{userbase}/include',
-        'scripts': '{userbase}/bin',
-        'data'   : '{userbase}',
-        },
-    }
-
-_SCHEME_KEYS = ('stdlib', 'platstdlib', 'purelib', 'platlib', 'include',
-                'scripts', 'data')
-_PY_VERSION = sys.version.split()[0]
-_PY_VERSION_SHORT = sys.version[:3]
-_PY_VERSION_SHORT_NO_DOT = _PY_VERSION[0] + _PY_VERSION[2]
-_PREFIX = os.path.normpath(sys.prefix)
-_EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
-_CONFIG_VARS = None
-_USER_BASE = None
-
-def _safe_realpath(path):
-    try:
-        return realpath(path)
-    except OSError:
-        return path
-
-if sys.executable:
-    _PROJECT_BASE = os.path.dirname(_safe_realpath(sys.executable))
-else:
-    # sys.executable can be empty if argv[0] has been changed and Python is
-    # unable to retrieve the real program name
-    _PROJECT_BASE = _safe_realpath(os.getcwd())
-
-if os.name == "nt" and "pcbuild" in _PROJECT_BASE[-8:].lower():
-    _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir))
-# PC/VS7.1
-if os.name == "nt" and "\\pc\\v" in _PROJECT_BASE[-10:].lower():
-    _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir))
-# PC/AMD64
-if os.name == "nt" and "\\pcbuild\\amd64" in _PROJECT_BASE[-14:].lower():
-    _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir))
-
-def is_python_build():
-    for fn in ("Setup.dist", "Setup.local"):
-        if os.path.isfile(os.path.join(_PROJECT_BASE, "Modules", fn)):
-            return True
-    return False
-
-_PYTHON_BUILD = is_python_build()
-
-if _PYTHON_BUILD:
-    for scheme in ('posix_prefix', 'posix_home'):
-        _INSTALL_SCHEMES[scheme]['include'] = '{projectbase}/Include'
-        _INSTALL_SCHEMES[scheme]['platinclude'] = '{srcdir}'
-
-def _subst_vars(s, local_vars):
-    try:
-        return s.format(**local_vars)
-    except KeyError:
-        try:
-            return s.format(**os.environ)
-        except KeyError, var:
-            raise AttributeError('{%s}' % var)
-
-def _extend_dict(target_dict, other_dict):
-    target_keys = target_dict.keys()
-    for key, value in other_dict.items():
-        if key in target_keys:
-            continue
-        target_dict[key] = value
-
-def _expand_vars(scheme, vars):
-    res = {}
-    if vars is None:
-        vars = {}
-    _extend_dict(vars, get_config_vars())
-
-    for key, value in _INSTALL_SCHEMES[scheme].items():
-        if os.name in ('posix', 'nt'):
-            value = os.path.expanduser(value)
-        res[key] = os.path.normpath(_subst_vars(value, vars))
-    return res
-
-def _get_default_scheme():
-    if os.name == 'posix':
-        # the default scheme for posix is posix_prefix
-        return 'posix_prefix'
-    return os.name
-
-def _getuserbase():
-    env_base = os.environ.get("PYTHONUSERBASE", None)
-    def joinuser(*args):
-        return os.path.expanduser(os.path.join(*args))
-
-    # what about 'os2emx', 'riscos' ?
-    if os.name == "nt":
-        base = os.environ.get("APPDATA") or "~"
-        return env_base if env_base else joinuser(base, "Python")
-
-    if sys.platform == "darwin":
-        framework = get_config_var("PYTHONFRAMEWORK")
-        if framework:
-            return joinuser("~", "Library", framework, "%d.%d"%(
-                sys.version_info[:2]))
-
-    return env_base if env_base else joinuser("~", ".local")
-
-
-def _parse_makefile(filename, vars=None):
-    """Parse a Makefile-style file.
-
-    A dictionary containing name/value pairs is returned.  If an
-    optional dictionary is passed in as the second argument, it is
-    used instead of a new dictionary.
-    """
-    import re
-    # Regexes needed for parsing Makefile (and similar syntaxes,
-    # like old-style Setup files).
-    _variable_rx = re.compile("([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)")
-    _findvar1_rx = re.compile(r"\$\(([A-Za-z][A-Za-z0-9_]*)\)")
-    _findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}")
-
-    if vars is None:
-        vars = {}
-    done = {}
-    notdone = {}
-
-    with open(filename) as f:
-        lines = f.readlines()
-
-    for line in lines:
-        if line.startswith('#') or line.strip() == '':
-            continue
-        m = _variable_rx.match(line)
-        if m:
-            n, v = m.group(1, 2)
-            v = v.strip()
-            # `$$' is a literal `$' in make
-            tmpv = v.replace('$$', '')
-
-            if "$" in tmpv:
-                notdone[n] = v
-            else:
-                try:
-                    v = int(v)
-                except ValueError:
-                    # insert literal `$'
-                    done[n] = v.replace('$$', '$')
-                else:
-                    done[n] = v
-
-    # do variable interpolation here
-    while notdone:
-        for name in notdone.keys():
-            value = notdone[name]
-            m = _findvar1_rx.search(value) or _findvar2_rx.search(value)
-            if m:
-                n = m.group(1)
-                found = True
-                if n in done:
-                    item = str(done[n])
-                elif n in notdone:
-                    # get it on a subsequent round
-                    found = False
-                elif n in os.environ:
-                    # do it like make: fall back to environment
-                    item = os.environ[n]
-                else:
-                    done[n] = item = ""
-                if found:
-                    after = value[m.end():]
-                    value = value[:m.start()] + item + after
-                    if "$" in after:
-                        notdone[name] = value
-                    else:
-                        try: value = int(value)
-                        except ValueError:
-                            done[name] = value.strip()
-                        else:
-                            done[name] = value
-                        del notdone[name]
-            else:
-                # bogus variable reference; just drop it since we can't deal
-                del notdone[name]
-    # strip spurious spaces
-    for k, v in done.items():
-        if isinstance(v, str):
-            done[k] = v.strip()
-
-    # save the results in the global dictionary
-    vars.update(done)
-    return vars
-
-
-def _get_makefile_filename():
-    if _PYTHON_BUILD:
-        return os.path.join(_PROJECT_BASE, "Makefile")
-    return os.path.join(get_path('platstdlib'), "config", "Makefile")
-
-
-def _init_posix(vars):
-    """Initialize the module as appropriate for POSIX systems."""
-    # load the installed Makefile:
-    makefile = _get_makefile_filename()
-    try:
-        _parse_makefile(makefile, vars)
-    except IOError, e:
-        msg = "invalid Python installation: unable to open %s" % makefile
-        if hasattr(e, "strerror"):
-            msg = msg + " (%s)" % e.strerror
-        raise IOError(msg)
-
-    # load the installed pyconfig.h:
-    config_h = get_config_h_filename()
-    try:
-        with open(config_h) as f:
-            parse_config_h(f, vars)
-    except IOError, e:
-        msg = "invalid Python installation: unable to open %s" % config_h
-        if hasattr(e, "strerror"):
-            msg = msg + " (%s)" % e.strerror
-        raise IOError(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:
-        vars['LDSHARED'] = vars['BLDSHARED']
-
-def _init_non_posix(vars):
-    """Initialize the module as appropriate for NT"""
-    # set basic install directories
-    vars['LIBDEST'] = get_path('stdlib')
-    vars['BINLIBDEST'] = get_path('platstdlib')
-    vars['INCLUDEPY'] = get_path('include')
-    vars['SO'] = '.pyd'
-    vars['EXE'] = '.exe'
-    vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT
-    vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable))
-
-#
-# public APIs
-#
-
-
-def parse_config_h(fp, vars=None):
-    """Parse a config.h-style file.
-
-    A dictionary containing name/value pairs is returned.  If an
-    optional dictionary is passed in as the second argument, it is
-    used instead of a new dictionary.
-    """
-    import re
-    if vars is None:
-        vars = {}
-    define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n")
-    undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n")
-
-    while True:
-        line = fp.readline()
-        if not line:
-            break
-        m = define_rx.match(line)
-        if m:
-            n, v = m.group(1, 2)
-            try: v = int(v)
-            except ValueError: pass
-            vars[n] = v
-        else:
-            m = undef_rx.match(line)
-            if m:
-                vars[m.group(1)] = 0
-    return vars
-
-def get_config_h_filename():
-    """Returns the path of pyconfig.h."""
-    if _PYTHON_BUILD:
-        if os.name == "nt":
-            inc_dir = os.path.join(_PROJECT_BASE, "PC")
-        else:
-            inc_dir = _PROJECT_BASE
-    else:
-        inc_dir = get_path('platinclude')
-    return os.path.join(inc_dir, 'pyconfig.h')
-
-def get_scheme_names():
-    """Returns a tuple containing the schemes names."""
-    schemes = _INSTALL_SCHEMES.keys()
-    schemes.sort()
-    return tuple(schemes)
-
-def get_path_names():
-    """Returns a tuple containing the paths names."""
-    return _SCHEME_KEYS
-
-def get_paths(scheme=_get_default_scheme(), vars=None, expand=True):
-    """Returns a mapping containing an install scheme.
-
-    ``scheme`` is the install scheme name. If not provided, it will
-    return the default scheme for the current platform.
-    """
-    if expand:
-        return _expand_vars(scheme, vars)
-    else:
-        return _INSTALL_SCHEMES[scheme]
-
-def get_path(name, scheme=_get_default_scheme(), vars=None, expand=True):
-    """Returns a path corresponding to the scheme.
-
-    ``scheme`` is the install scheme name.
-    """
-    return get_paths(scheme, vars, expand)[name]
-
-def get_config_vars(*args):
-    """With no arguments, return a dictionary of all configuration
-    variables relevant for the current platform.
-
-    On Unix, this means every variable defined in Python's installed Makefile;
-    On Windows and Mac OS it's a much smaller set.
-
-    With arguments, return a list of values that result from looking up
-    each argument in the configuration variable dictionary.
-    """
-    import re
-    global _CONFIG_VARS
-    if _CONFIG_VARS is None:
-        _CONFIG_VARS = {}
-        # Normalized versions of prefix and exec_prefix are handy to have;
-        # in fact, these are the standard versions used most places in the
-        # Distutils.
-        _CONFIG_VARS['prefix'] = _PREFIX
-        _CONFIG_VARS['exec_prefix'] = _EXEC_PREFIX
-        _CONFIG_VARS['py_version'] = _PY_VERSION
-        _CONFIG_VARS['py_version_short'] = _PY_VERSION_SHORT
-        _CONFIG_VARS['py_version_nodot'] = _PY_VERSION[0] + _PY_VERSION[2]
-        _CONFIG_VARS['base'] = _PREFIX
-        _CONFIG_VARS['platbase'] = _EXEC_PREFIX
-        _CONFIG_VARS['projectbase'] = _PROJECT_BASE
-
-        if os.name in ('nt', 'os2'):
-            _init_non_posix(_CONFIG_VARS)
-        if os.name == 'posix':
-            _init_posix(_CONFIG_VARS)
-
-        # Setting 'userbase' is done below the call to the
-        # init function to enable using 'get_config_var' in
-        # the init-function.
-        _CONFIG_VARS['userbase'] = _getuserbase()
-
-        if 'srcdir' not in _CONFIG_VARS:
-            _CONFIG_VARS['srcdir'] = _PROJECT_BASE
-
-        # Convert srcdir into an absolute path if it appears necessary.
-        # Normally it is relative to the build directory.  However, during
-        # testing, for example, we might be running a non-installed python
-        # from a different directory.
-        if _PYTHON_BUILD and os.name == "posix":
-            base = _PROJECT_BASE
-            try:
-                cwd = os.getcwd()
-            except OSError:
-                cwd = None
-            if (not os.path.isabs(_CONFIG_VARS['srcdir']) and
-                base != cwd):
-                # srcdir is relative and we are not in the same directory
-                # as the executable. Assume executable is in the build
-                # directory and make srcdir absolute.
-                srcdir = os.path.join(base, _CONFIG_VARS['srcdir'])
-                _CONFIG_VARS['srcdir'] = os.path.normpath(srcdir)
-
-        if sys.platform == 'darwin':
-            kernel_version = os.uname()[2] # Kernel version (8.4.3)
-            major_version = int(kernel_version.split('.')[0])
-
-            if major_version < 8:
-                # On Mac OS X before 10.4, check if -arch and -isysroot
-                # are in CFLAGS or LDFLAGS and remove them if they are.
-                # This is needed when building extensions on a 10.3 system
-                # using a universal build of python.
-                for key in ('LDFLAGS', 'BASECFLAGS',
-                        # a number of derived variables. These need to be
-                        # patched up as well.
-                        'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
-                    flags = _CONFIG_VARS[key]
-                    flags = re.sub('-arch\s+\w+\s', ' ', flags)
-                    flags = re.sub('-isysroot [^ \t]*', ' ', flags)
-                    _CONFIG_VARS[key] = flags
-            else:
-                # Allow the user to override the architecture flags using
-                # an environment variable.
-                # NOTE: This name was introduced by Apple in OSX 10.5 and
-                # is used by several scripting languages distributed with
-                # that OS release.
-                if 'ARCHFLAGS' in os.environ:
-                    arch = os.environ['ARCHFLAGS']
-                    for key in ('LDFLAGS', 'BASECFLAGS',
-                        # a number of derived variables. These need to be
-                        # patched up as well.
-                        'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
-
-                        flags = _CONFIG_VARS[key]
-                        flags = re.sub('-arch\s+\w+\s', ' ', flags)
-                        flags = flags + ' ' + arch
-                        _CONFIG_VARS[key] = flags
-
-                # If we're on OSX 10.5 or later and the user tries to
-                # compiles an extension using an SDK that is not present
-                # on the current machine it is better to not use an SDK
-                # than to fail.
-                #
-                # The major usecase for this is users using a Python.org
-                # binary installer  on OSX 10.6: that installer uses
-                # the 10.4u SDK, but that SDK is not installed by default
-                # when you install Xcode.
-                #
-                CFLAGS = _CONFIG_VARS.get('CFLAGS', '')
-                m = re.search('-isysroot\s+(\S+)', CFLAGS)
-                if m is not None:
-                    sdk = m.group(1)
-                    if not os.path.exists(sdk):
-                        for key in ('LDFLAGS', 'BASECFLAGS',
-                             # a number of derived variables. These need to be
-                             # patched up as well.
-                            'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'):
-
-                            flags = _CONFIG_VARS[key]
-                            flags = re.sub('-isysroot\s+\S+(\s|$)', ' ', flags)
-                            _CONFIG_VARS[key] = flags
-
-    if args:
-        vals = []
-        for name in args:
-            vals.append(_CONFIG_VARS.get(name))
-        return vals
-    else:
-        return _CONFIG_VARS
-
-def get_config_var(name):
-    """Return the value of a single variable using the dictionary returned by
-    'get_config_vars()'.
-
-    Equivalent to get_config_vars().get(name)
-    """
-    return get_config_vars().get(name)
-
-def get_platform():
-    """Return a string that identifies the current platform.
-
-    This is used mainly to distinguish platform-specific build directories and
-    platform-specific built distributions.  Typically includes the OS name
-    and version and the architecture (as supplied by 'os.uname()'),
-    although the exact information included depends on the OS; eg. for IRIX
-    the architecture isn't particularly important (IRIX only runs on SGI
-    hardware), but for Linux the kernel version isn't particularly
-    important.
-
-    Examples of returned values:
-       linux-i586
-       linux-alpha (?)
-       solaris-2.6-sun4u
-       irix-5.3
-       irix64-6.2
-
-    Windows will return one of:
-       win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc)
-       win-ia64 (64bit Windows on Itanium)
-       win32 (all others - specifically, sys.platform is returned)
-
-    For other non-POSIX platforms, currently just returns 'sys.platform'.
-    """
-    import re
-    if os.name == 'nt':
-        # sniff sys.version for architecture.
-        prefix = " bit ("
-        i = sys.version.find(prefix)
-        if i == -1:
-            return sys.platform
-        j = sys.version.find(")", i)
-        look = sys.version[i+len(prefix):j].lower()
-        if look == 'amd64':
-            return 'win-amd64'
-        if look == 'itanium':
-            return 'win-ia64'
-        return sys.platform
-
-    if os.name != "posix" or not hasattr(os, 'uname'):
-        # XXX what about the architecture? NT is Intel or Alpha,
-        # Mac OS is M68k or PPC, etc.
-        return sys.platform
-
-    # Try to distinguish various flavours of Unix
-    osname, host, release, version, machine = os.uname()
-
-    # Convert the OS name to lowercase, remove '/' characters
-    # (to accommodate BSD/OS), and translate spaces (for "Power Macintosh")
-    osname = osname.lower().replace('/', '')
-    machine = machine.replace(' ', '_')
-    machine = machine.replace('/', '-')
-
-    if osname[:5] == "linux":
-        # At least on Linux/Intel, 'machine' is the processor --
-        # i386, etc.
-        # XXX what about Alpha, SPARC, etc?
-        return  "%s-%s" % (osname, machine)
-    elif osname[:5] == "sunos":
-        if release[0] >= "5":           # SunOS 5 == Solaris 2
-            osname = "solaris"
-            release = "%d.%s" % (int(release[0]) - 3, release[2:])
-        # fall through to standard osname-release-machine representation
-    elif osname[:4] == "irix":              # could be "irix64"!
-        return "%s-%s" % (osname, release)
-    elif osname[:3] == "aix":
-        return "%s-%s.%s" % (osname, version, release)
-    elif osname[:6] == "cygwin":
-        osname = "cygwin"
-        rel_re = re.compile (r'[\d.]+')
-        m = rel_re.match(release)
-        if m:
-            release = m.group()
-    elif osname[:6] == "darwin":
-        #
-        # For our purposes, we'll assume that the system version from
-        # distutils' perspective is what MACOSX_DEPLOYMENT_TARGET is set
-        # to. This makes the compatibility story a bit more sane because the
-        # machine is going to compile and link as if it were
-        # MACOSX_DEPLOYMENT_TARGET.
-        cfgvars = get_config_vars()
-        macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET')
-
-        if 1:
-            # Always calculate the release of the running machine,
-            # needed to determine if we can build fat binaries or not.
-
-            macrelease = macver
-            # Get the system version. Reading this plist is a documented
-            # way to get the system version (see the documentation for
-            # the Gestalt Manager)
-            try:
-                f = open('/System/Library/CoreServices/SystemVersion.plist')
-            except IOError:
-                # We're on a plain darwin box, fall back to the default
-                # behaviour.
-                pass
-            else:
-                try:
-                    m = re.search(
-                            r'<key>ProductUserVisibleVersion</key>\s*' +
-                            r'<string>(.*?)</string>', f.read())
-                    if m is not None:
-                        macrelease = '.'.join(m.group(1).split('.')[:2])
-                    # else: fall back to the default behaviour
-                finally:
-                    f.close()
-
-        if not macver:
-            macver = macrelease
-
-        if macver:
-            release = macver
-            osname = "macosx"
-
-            if (macrelease + '.') >= '10.4.' and \
-                    '-arch' in get_config_vars().get('CFLAGS', '').strip():
-                # The universal build will build fat binaries, but not on
-                # systems before 10.4
-                #
-                # Try to detect 4-way universal builds, those have machine-type
-                # 'universal' instead of 'fat'.
-
-                machine = 'fat'
-                cflags = get_config_vars().get('CFLAGS')
-
-                archs = re.findall('-arch\s+(\S+)', cflags)
-                archs = tuple(sorted(set(archs)))
-
-                if len(archs) == 1:
-                    machine = archs[0]
-                elif archs == ('i386', 'ppc'):
-                    machine = 'fat'
-                elif archs == ('i386', 'x86_64'):
-                    machine = 'intel'
-                elif archs == ('i386', 'ppc', 'x86_64'):
-                    machine = 'fat3'
-                elif archs == ('ppc64', 'x86_64'):
-                    machine = 'fat64'
-                elif archs == ('i386', 'ppc', 'ppc64', 'x86_64'):
-                    machine = 'universal'
-                else:
-                    raise ValueError(
-                       "Don't know machine value for archs=%r"%(archs,))
-
-            elif machine == 'i386':
-                # On OSX the machine type returned by uname is always the
-                # 32-bit variant, even if the executable architecture is
-                # the 64-bit variant
-                if sys.maxint >= 2**32:
-                    machine = 'x86_64'
-
-            elif machine in ('PowerPC', 'Power_Macintosh'):
-                # Pick a sane name for the PPC architecture.
-                # See 'i386' case
-                if sys.maxint >= 2**32:
-                    machine = 'ppc64'
-                else:
-                    machine = 'ppc'
-
-    return "%s-%s-%s" % (osname, release, machine)
-
-
-def get_python_version():
-    return _PY_VERSION_SHORT
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/tabnanny.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/tabnanny.py
deleted file mode 100644
index 4263ed2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/tabnanny.py
+++ /dev/null
@@ -1,329 +0,0 @@
-#! /usr/bin/env python
-
-"""The Tab Nanny despises ambiguous indentation.  She knows no mercy.
-
-tabnanny -- Detection of ambiguous indentation
-
-For the time being this module is intended to be called as a script.
-However it is possible to import it into an IDE and use the function
-check() described below.
-
-Warning: The API provided by this module is likely to change in future
-releases; such changes may not be backward compatible.
-"""
-
-# Released to the public domain, by Tim Peters, 15 April 1998.
-
-# XXX Note: this is now a standard library module.
-# XXX The API needs to undergo changes however; the current code is too
-# XXX script-like.  This will be addressed later.
-
-__version__ = "6"
-
-import os
-import sys
-import getopt
-import tokenize
-if not hasattr(tokenize, 'NL'):
-    raise ValueError("tokenize.NL doesn't exist -- tokenize module too old")
-
-__all__ = ["check", "NannyNag", "process_tokens"]
-
-verbose = 0
-filename_only = 0
-
-def errprint(*args):
-    sep = ""
-    for arg in args:
-        sys.stderr.write(sep + str(arg))
-        sep = " "
-    sys.stderr.write("\n")
-
-def main():
-    global verbose, filename_only
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "qv")
-    except getopt.error, msg:
-        errprint(msg)
-        return
-    for o, a in opts:
-        if o == '-q':
-            filename_only = filename_only + 1
-        if o == '-v':
-            verbose = verbose + 1
-    if not args:
-        errprint("Usage:", sys.argv[0], "[-v] file_or_directory ...")
-        return
-    for arg in args:
-        check(arg)
-
-class NannyNag(Exception):
-    """
-    Raised by tokeneater() if detecting an ambiguous indent.
-    Captured and handled in check().
-    """
-    def __init__(self, lineno, msg, line):
-        self.lineno, self.msg, self.line = lineno, msg, line
-    def get_lineno(self):
-        return self.lineno
-    def get_msg(self):
-        return self.msg
-    def get_line(self):
-        return self.line
-
-def check(file):
-    """check(file_or_dir)
-
-    If file_or_dir is a directory and not a symbolic link, then recursively
-    descend the directory tree named by file_or_dir, checking all .py files
-    along the way. If file_or_dir is an ordinary Python source file, it is
-    checked for whitespace related problems. The diagnostic messages are
-    written to standard output using the print statement.
-    """
-
-    if os.path.isdir(file) and not os.path.islink(file):
-        if verbose:
-            print "%r: listing directory" % (file,)
-        names = os.listdir(file)
-        for name in names:
-            fullname = os.path.join(file, name)
-            if (os.path.isdir(fullname) and
-                not os.path.islink(fullname) or
-                os.path.normcase(name[-3:]) == ".py"):
-                check(fullname)
-        return
-
-    try:
-        f = open(file)
-    except IOError, msg:
-        errprint("%r: I/O Error: %s" % (file, msg))
-        return
-
-    if verbose > 1:
-        print "checking %r ..." % file
-
-    try:
-        process_tokens(tokenize.generate_tokens(f.readline))
-
-    except tokenize.TokenError, msg:
-        errprint("%r: Token Error: %s" % (file, msg))
-        return
-
-    except IndentationError, msg:
-        errprint("%r: Indentation Error: %s" % (file, msg))
-        return
-
-    except NannyNag, nag:
-        badline = nag.get_lineno()
-        line = nag.get_line()
-        if verbose:
-            print "%r: *** Line %d: trouble in tab city! ***" % (file, badline)
-            print "offending line: %r" % (line,)
-            print nag.get_msg()
-        else:
-            if ' ' in file: file = '"' + file + '"'
-            if filename_only: print file
-            else: print file, badline, repr(line)
-        return
-
-    if verbose:
-        print "%r: Clean bill of health." % (file,)
-
-class Whitespace:
-    # the characters used for space and tab
-    S, T = ' \t'
-
-    # members:
-    #   raw
-    #       the original string
-    #   n
-    #       the number of leading whitespace characters in raw
-    #   nt
-    #       the number of tabs in raw[:n]
-    #   norm
-    #       the normal form as a pair (count, trailing), where:
-    #       count
-    #           a tuple such that raw[:n] contains count[i]
-    #           instances of S * i + T
-    #       trailing
-    #           the number of trailing spaces in raw[:n]
-    #       It's A Theorem that m.indent_level(t) ==
-    #       n.indent_level(t) for all t >= 1 iff m.norm == n.norm.
-    #   is_simple
-    #       true iff raw[:n] is of the form (T*)(S*)
-
-    def __init__(self, ws):
-        self.raw  = ws
-        S, T = Whitespace.S, Whitespace.T
-        count = []
-        b = n = nt = 0
-        for ch in self.raw:
-            if ch == S:
-                n = n + 1
-                b = b + 1
-            elif ch == T:
-                n = n + 1
-                nt = nt + 1
-                if b >= len(count):
-                    count = count + [0] * (b - len(count) + 1)
-                count[b] = count[b] + 1
-                b = 0
-            else:
-                break
-        self.n    = n
-        self.nt   = nt
-        self.norm = tuple(count), b
-        self.is_simple = len(count) <= 1
-
-    # return length of longest contiguous run of spaces (whether or not
-    # preceding a tab)
-    def longest_run_of_spaces(self):
-        count, trailing = self.norm
-        return max(len(count)-1, trailing)
-
-    def indent_level(self, tabsize):
-        # count, il = self.norm
-        # for i in range(len(count)):
-        #    if count[i]:
-        #        il = il + (i/tabsize + 1)*tabsize * count[i]
-        # return il
-
-        # quicker:
-        # il = trailing + sum (i/ts + 1)*ts*count[i] =
-        # trailing + ts * sum (i/ts + 1)*count[i] =
-        # trailing + ts * sum i/ts*count[i] + count[i] =
-        # trailing + ts * [(sum i/ts*count[i]) + (sum count[i])] =
-        # trailing + ts * [(sum i/ts*count[i]) + num_tabs]
-        # and note that i/ts*count[i] is 0 when i < ts
-
-        count, trailing = self.norm
-        il = 0
-        for i in range(tabsize, len(count)):
-            il = il + i/tabsize * count[i]
-        return trailing + tabsize * (il + self.nt)
-
-    # return true iff self.indent_level(t) == other.indent_level(t)
-    # for all t >= 1
-    def equal(self, other):
-        return self.norm == other.norm
-
-    # return a list of tuples (ts, i1, i2) such that
-    # i1 == self.indent_level(ts) != other.indent_level(ts) == i2.
-    # Intended to be used after not self.equal(other) is known, in which
-    # case it will return at least one witnessing tab size.
-    def not_equal_witness(self, other):
-        n = max(self.longest_run_of_spaces(),
-                other.longest_run_of_spaces()) + 1
-        a = []
-        for ts in range(1, n+1):
-            if self.indent_level(ts) != other.indent_level(ts):
-                a.append( (ts,
-                           self.indent_level(ts),
-                           other.indent_level(ts)) )
-        return a
-
-    # Return True iff self.indent_level(t) < other.indent_level(t)
-    # for all t >= 1.
-    # The algorithm is due to Vincent Broman.
-    # Easy to prove it's correct.
-    # XXXpost that.
-    # Trivial to prove n is sharp (consider T vs ST).
-    # Unknown whether there's a faster general way.  I suspected so at
-    # first, but no longer.
-    # For the special (but common!) case where M and N are both of the
-    # form (T*)(S*), M.less(N) iff M.len() < N.len() and
-    # M.num_tabs() <= N.num_tabs(). Proof is easy but kinda long-winded.
-    # XXXwrite that up.
-    # Note that M is of the form (T*)(S*) iff len(M.norm[0]) <= 1.
-    def less(self, other):
-        if self.n >= other.n:
-            return False
-        if self.is_simple and other.is_simple:
-            return self.nt <= other.nt
-        n = max(self.longest_run_of_spaces(),
-                other.longest_run_of_spaces()) + 1
-        # the self.n >= other.n test already did it for ts=1
-        for ts in range(2, n+1):
-            if self.indent_level(ts) >= other.indent_level(ts):
-                return False
-        return True
-
-    # return a list of tuples (ts, i1, i2) such that
-    # i1 == self.indent_level(ts) >= other.indent_level(ts) == i2.
-    # Intended to be used after not self.less(other) is known, in which
-    # case it will return at least one witnessing tab size.
-    def not_less_witness(self, other):
-        n = max(self.longest_run_of_spaces(),
-                other.longest_run_of_spaces()) + 1
-        a = []
-        for ts in range(1, n+1):
-            if self.indent_level(ts) >= other.indent_level(ts):
-                a.append( (ts,
-                           self.indent_level(ts),
-                           other.indent_level(ts)) )
-        return a
-
-def format_witnesses(w):
-    firsts = map(lambda tup: str(tup[0]), w)
-    prefix = "at tab size"
-    if len(w) > 1:
-        prefix = prefix + "s"
-    return prefix + " " + ', '.join(firsts)
-
-def process_tokens(tokens):
-    INDENT = tokenize.INDENT
-    DEDENT = tokenize.DEDENT
-    NEWLINE = tokenize.NEWLINE
-    JUNK = tokenize.COMMENT, tokenize.NL
-    indents = [Whitespace("")]
-    check_equal = 0
-
-    for (type, token, start, end, line) in tokens:
-        if type == NEWLINE:
-            # a program statement, or ENDMARKER, will eventually follow,
-            # after some (possibly empty) run of tokens of the form
-            #     (NL | COMMENT)* (INDENT | DEDENT+)?
-            # If an INDENT appears, setting check_equal is wrong, and will
-            # be undone when we see the INDENT.
-            check_equal = 1
-
-        elif type == INDENT:
-            check_equal = 0
-            thisguy = Whitespace(token)
-            if not indents[-1].less(thisguy):
-                witness = indents[-1].not_less_witness(thisguy)
-                msg = "indent not greater e.g. " + format_witnesses(witness)
-                raise NannyNag(start[0], msg, line)
-            indents.append(thisguy)
-
-        elif type == DEDENT:
-            # there's nothing we need to check here!  what's important is
-            # that when the run of DEDENTs ends, the indentation of the
-            # program statement (or ENDMARKER) that triggered the run is
-            # equal to what's left at the top of the indents stack
-
-            # Ouch!  This assert triggers if the last line of the source
-            # is indented *and* lacks a newline -- then DEDENTs pop out
-            # of thin air.
-            # assert check_equal  # else no earlier NEWLINE, or an earlier INDENT
-            check_equal = 1
-
-            del indents[-1]
-
-        elif check_equal and type not in JUNK:
-            # this is the first "real token" following a NEWLINE, so it
-            # must be the first token of the next program statement, or an
-            # ENDMARKER; the "line" argument exposes the leading whitespace
-            # for this statement; in the case of ENDMARKER, line is an empty
-            # string, so will properly match the empty string with which the
-            # "indents" stack was seeded
-            check_equal = 0
-            thisguy = Whitespace(line)
-            if not indents[-1].equal(thisguy):
-                witness = indents[-1].not_equal_witness(thisguy)
-                msg = "indent not equal e.g. " + format_witnesses(witness)
-                raise NannyNag(start[0], msg, line)
-
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/tarfile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/tarfile.py
deleted file mode 100644
index 69702c1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/tarfile.py
+++ /dev/null
@@ -1,2594 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: iso-8859-1 -*-
-#-------------------------------------------------------------------
-# tarfile.py
-#-------------------------------------------------------------------
-# Copyright (C) 2002 Lars Gustäbel <lars@gustaebel.de>
-# All rights reserved.
-#
-# Permission  is  hereby granted,  free  of charge,  to  any person
-# obtaining a  copy of  this software  and associated documentation
-# files  (the  "Software"),  to   deal  in  the  Software   without
-# restriction,  including  without limitation  the  rights to  use,
-# copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies  of  the  Software,  and to  permit  persons  to  whom the
-# Software  is  furnished  to  do  so,  subject  to  the  following
-# conditions:
-#
-# The above copyright  notice and this  permission notice shall  be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY  KIND,
-# EXPRESS OR IMPLIED, INCLUDING  BUT NOT LIMITED TO  THE WARRANTIES
-# OF  MERCHANTABILITY,  FITNESS   FOR  A  PARTICULAR   PURPOSE  AND
-# NONINFRINGEMENT.  IN  NO  EVENT SHALL  THE  AUTHORS  OR COPYRIGHT
-# HOLDERS  BE LIABLE  FOR ANY  CLAIM, DAMAGES  OR OTHER  LIABILITY,
-# WHETHER  IN AN  ACTION OF  CONTRACT, TORT  OR OTHERWISE,  ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-# OTHER DEALINGS IN THE SOFTWARE.
-#
-"""Read from and write to tar format archives.
-"""
-
-__version__ = "$Revision$"
-# $Source$
-
-version     = "0.9.0"
-__author__  = "Lars Gustäbel (lars@gustaebel.de)"
-__date__    = "$Date$"
-__cvsid__   = "$Id$"
-__credits__ = "Gustavo Niemeyer, Niels Gustäbel, Richard Townsend."
-
-#---------
-# Imports
-#---------
-import sys
-import os
-import shutil
-import stat
-import errno
-import time
-import struct
-import copy
-import re
-import operator
-
-try:
-    import grp, pwd
-except ImportError:
-    grp = pwd = None
-
-# from tarfile import *
-__all__ = ["TarFile", "TarInfo", "is_tarfile", "TarError"]
-
-#---------------------------------------------------------
-# tar constants
-#---------------------------------------------------------
-NUL = "\0"                      # the null character
-BLOCKSIZE = 512                 # length of processing blocks
-RECORDSIZE = BLOCKSIZE * 20     # length of records
-GNU_MAGIC = "ustar  \0"         # magic gnu tar string
-POSIX_MAGIC = "ustar\x0000"     # magic posix tar string
-
-LENGTH_NAME = 100               # maximum length of a filename
-LENGTH_LINK = 100               # maximum length of a linkname
-LENGTH_PREFIX = 155             # maximum length of the prefix field
-
-REGTYPE = "0"                   # regular file
-AREGTYPE = "\0"                 # regular file
-LNKTYPE = "1"                   # link (inside tarfile)
-SYMTYPE = "2"                   # symbolic link
-CHRTYPE = "3"                   # character special device
-BLKTYPE = "4"                   # block special device
-DIRTYPE = "5"                   # directory
-FIFOTYPE = "6"                  # fifo special device
-CONTTYPE = "7"                  # contiguous file
-
-GNUTYPE_LONGNAME = "L"          # GNU tar longname
-GNUTYPE_LONGLINK = "K"          # GNU tar longlink
-GNUTYPE_SPARSE = "S"            # GNU tar sparse file
-
-XHDTYPE = "x"                   # POSIX.1-2001 extended header
-XGLTYPE = "g"                   # POSIX.1-2001 global header
-SOLARIS_XHDTYPE = "X"           # Solaris extended header
-
-USTAR_FORMAT = 0                # POSIX.1-1988 (ustar) format
-GNU_FORMAT = 1                  # GNU tar format
-PAX_FORMAT = 2                  # POSIX.1-2001 (pax) format
-DEFAULT_FORMAT = GNU_FORMAT
-
-#---------------------------------------------------------
-# tarfile constants
-#---------------------------------------------------------
-# File types that tarfile supports:
-SUPPORTED_TYPES = (REGTYPE, AREGTYPE, LNKTYPE,
-                   SYMTYPE, DIRTYPE, FIFOTYPE,
-                   CONTTYPE, CHRTYPE, BLKTYPE,
-                   GNUTYPE_LONGNAME, GNUTYPE_LONGLINK,
-                   GNUTYPE_SPARSE)
-
-# File types that will be treated as a regular file.
-REGULAR_TYPES = (REGTYPE, AREGTYPE,
-                 CONTTYPE, GNUTYPE_SPARSE)
-
-# File types that are part of the GNU tar format.
-GNU_TYPES = (GNUTYPE_LONGNAME, GNUTYPE_LONGLINK,
-             GNUTYPE_SPARSE)
-
-# Fields from a pax header that override a TarInfo attribute.
-PAX_FIELDS = ("path", "linkpath", "size", "mtime",
-              "uid", "gid", "uname", "gname")
-
-# Fields in a pax header that are numbers, all other fields
-# are treated as strings.
-PAX_NUMBER_FIELDS = {
-    "atime": float,
-    "ctime": float,
-    "mtime": float,
-    "uid": int,
-    "gid": int,
-    "size": int
-}
-
-#---------------------------------------------------------
-# Bits used in the mode field, values in octal.
-#---------------------------------------------------------
-S_IFLNK = 0120000        # symbolic link
-S_IFREG = 0100000        # regular file
-S_IFBLK = 0060000        # block device
-S_IFDIR = 0040000        # directory
-S_IFCHR = 0020000        # character device
-S_IFIFO = 0010000        # fifo
-
-TSUID   = 04000          # set UID on execution
-TSGID   = 02000          # set GID on execution
-TSVTX   = 01000          # reserved
-
-TUREAD  = 0400           # read by owner
-TUWRITE = 0200           # write by owner
-TUEXEC  = 0100           # execute/search by owner
-TGREAD  = 0040           # read by group
-TGWRITE = 0020           # write by group
-TGEXEC  = 0010           # execute/search by group
-TOREAD  = 0004           # read by other
-TOWRITE = 0002           # write by other
-TOEXEC  = 0001           # execute/search by other
-
-#---------------------------------------------------------
-# initialization
-#---------------------------------------------------------
-ENCODING = sys.getfilesystemencoding()
-if ENCODING is None:
-    ENCODING = sys.getdefaultencoding()
-
-#---------------------------------------------------------
-# Some useful functions
-#---------------------------------------------------------
-
-def stn(s, length):
-    """Convert a python string to a null-terminated string buffer.
-    """
-    return s[:length] + (length - len(s)) * NUL
-
-def nts(s):
-    """Convert a null-terminated string field to a python string.
-    """
-    # Use the string up to the first null char.
-    p = s.find("\0")
-    if p == -1:
-        return s
-    return s[:p]
-
-def nti(s):
-    """Convert a number field to a python number.
-    """
-    # There are two possible encodings for a number field, see
-    # itn() below.
-    if s[0] != chr(0200):
-        try:
-            n = int(nts(s) or "0", 8)
-        except ValueError:
-            raise InvalidHeaderError("invalid header")
-    else:
-        n = 0L
-        for i in xrange(len(s) - 1):
-            n <<= 8
-            n += ord(s[i + 1])
-    return n
-
-def itn(n, digits=8, format=DEFAULT_FORMAT):
-    """Convert a python number to a number field.
-    """
-    # POSIX 1003.1-1988 requires numbers to be encoded as a string of
-    # octal digits followed by a null-byte, this allows values up to
-    # (8**(digits-1))-1. GNU tar allows storing numbers greater than
-    # that if necessary. A leading 0200 byte indicates this particular
-    # encoding, the following digits-1 bytes are a big-endian
-    # representation. This allows values up to (256**(digits-1))-1.
-    if 0 <= n < 8 ** (digits - 1):
-        s = "%0*o" % (digits - 1, n) + NUL
-    else:
-        if format != GNU_FORMAT or n >= 256 ** (digits - 1):
-            raise ValueError("overflow in number field")
-
-        if n < 0:
-            # XXX We mimic GNU tar's behaviour with negative numbers,
-            # this could raise OverflowError.
-            n = struct.unpack("L", struct.pack("l", n))[0]
-
-        s = ""
-        for i in xrange(digits - 1):
-            s = chr(n & 0377) + s
-            n >>= 8
-        s = chr(0200) + s
-    return s
-
-def uts(s, encoding, errors):
-    """Convert a unicode object to a string.
-    """
-    if errors == "utf-8":
-        # An extra error handler similar to the -o invalid=UTF-8 option
-        # in POSIX.1-2001. Replace untranslatable characters with their
-        # UTF-8 representation.
-        try:
-            return s.encode(encoding, "strict")
-        except UnicodeEncodeError:
-            x = []
-            for c in s:
-                try:
-                    x.append(c.encode(encoding, "strict"))
-                except UnicodeEncodeError:
-                    x.append(c.encode("utf8"))
-            return "".join(x)
-    else:
-        return s.encode(encoding, errors)
-
-def calc_chksums(buf):
-    """Calculate the checksum for a member's header by summing up all
-       characters except for the chksum field which is treated as if
-       it was filled with spaces. According to the GNU tar sources,
-       some tars (Sun and NeXT) calculate chksum with signed char,
-       which will be different if there are chars in the buffer with
-       the high bit set. So we calculate two checksums, unsigned and
-       signed.
-    """
-    unsigned_chksum = 256 + sum(struct.unpack("148B", buf[:148]) + struct.unpack("356B", buf[156:512]))
-    signed_chksum = 256 + sum(struct.unpack("148b", buf[:148]) + struct.unpack("356b", buf[156:512]))
-    return unsigned_chksum, signed_chksum
-
-def copyfileobj(src, dst, length=None):
-    """Copy length bytes from fileobj src to fileobj dst.
-       If length is None, copy the entire content.
-    """
-    if length == 0:
-        return
-    if length is None:
-        shutil.copyfileobj(src, dst)
-        return
-
-    BUFSIZE = 16 * 1024
-    blocks, remainder = divmod(length, BUFSIZE)
-    for b in xrange(blocks):
-        buf = src.read(BUFSIZE)
-        if len(buf) < BUFSIZE:
-            raise IOError("end of file reached")
-        dst.write(buf)
-
-    if remainder != 0:
-        buf = src.read(remainder)
-        if len(buf) < remainder:
-            raise IOError("end of file reached")
-        dst.write(buf)
-    return
-
-filemode_table = (
-    ((S_IFLNK,      "l"),
-     (S_IFREG,      "-"),
-     (S_IFBLK,      "b"),
-     (S_IFDIR,      "d"),
-     (S_IFCHR,      "c"),
-     (S_IFIFO,      "p")),
-
-    ((TUREAD,       "r"),),
-    ((TUWRITE,      "w"),),
-    ((TUEXEC|TSUID, "s"),
-     (TSUID,        "S"),
-     (TUEXEC,       "x")),
-
-    ((TGREAD,       "r"),),
-    ((TGWRITE,      "w"),),
-    ((TGEXEC|TSGID, "s"),
-     (TSGID,        "S"),
-     (TGEXEC,       "x")),
-
-    ((TOREAD,       "r"),),
-    ((TOWRITE,      "w"),),
-    ((TOEXEC|TSVTX, "t"),
-     (TSVTX,        "T"),
-     (TOEXEC,       "x"))
-)
-
-def filemode(mode):
-    """Convert a file's mode to a string of the form
-       -rwxrwxrwx.
-       Used by TarFile.list()
-    """
-    perm = []
-    for table in filemode_table:
-        for bit, char in table:
-            if mode & bit == bit:
-                perm.append(char)
-                break
-        else:
-            perm.append("-")
-    return "".join(perm)
-
-class TarError(Exception):
-    """Base exception."""
-    pass
-class ExtractError(TarError):
-    """General exception for extract errors."""
-    pass
-class ReadError(TarError):
-    """Exception for unreadble tar archives."""
-    pass
-class CompressionError(TarError):
-    """Exception for unavailable compression methods."""
-    pass
-class StreamError(TarError):
-    """Exception for unsupported operations on stream-like TarFiles."""
-    pass
-class HeaderError(TarError):
-    """Base exception for header errors."""
-    pass
-class EmptyHeaderError(HeaderError):
-    """Exception for empty headers."""
-    pass
-class TruncatedHeaderError(HeaderError):
-    """Exception for truncated headers."""
-    pass
-class EOFHeaderError(HeaderError):
-    """Exception for end of file headers."""
-    pass
-class InvalidHeaderError(HeaderError):
-    """Exception for invalid headers."""
-    pass
-class SubsequentHeaderError(HeaderError):
-    """Exception for missing and invalid extended headers."""
-    pass
-
-#---------------------------
-# internal stream interface
-#---------------------------
-class _LowLevelFile:
-    """Low-level file object. Supports reading and writing.
-       It is used instead of a regular file object for streaming
-       access.
-    """
-
-    def __init__(self, name, mode):
-        mode = {
-            "r": os.O_RDONLY,
-            "w": os.O_WRONLY | os.O_CREAT | os.O_TRUNC,
-        }[mode]
-        if hasattr(os, "O_BINARY"):
-            mode |= os.O_BINARY
-        self.fd = os.open(name, mode, 0666)
-
-    def close(self):
-        os.close(self.fd)
-
-    def read(self, size):
-        return os.read(self.fd, size)
-
-    def write(self, s):
-        os.write(self.fd, s)
-
-class _Stream:
-    """Class that serves as an adapter between TarFile and
-       a stream-like object.  The stream-like object only
-       needs to have a read() or write() method and is accessed
-       blockwise.  Use of gzip or bzip2 compression is possible.
-       A stream-like object could be for example: sys.stdin,
-       sys.stdout, a socket, a tape device etc.
-
-       _Stream is intended to be used only internally.
-    """
-
-    def __init__(self, name, mode, comptype, fileobj, bufsize):
-        """Construct a _Stream object.
-        """
-        self._extfileobj = True
-        if fileobj is None:
-            fileobj = _LowLevelFile(name, mode)
-            self._extfileobj = False
-
-        if comptype == '*':
-            # Enable transparent compression detection for the
-            # stream interface
-            fileobj = _StreamProxy(fileobj)
-            comptype = fileobj.getcomptype()
-
-        self.name     = name or ""
-        self.mode     = mode
-        self.comptype = comptype
-        self.fileobj  = fileobj
-        self.bufsize  = bufsize
-        self.buf      = ""
-        self.pos      = 0L
-        self.closed   = False
-
-        if comptype == "gz":
-            try:
-                import zlib
-            except ImportError:
-                raise CompressionError("zlib module is not available")
-            self.zlib = zlib
-            self.crc = zlib.crc32("") & 0xffffffffL
-            if mode == "r":
-                self._init_read_gz()
-            else:
-                self._init_write_gz()
-
-        if comptype == "bz2":
-            try:
-                import bz2
-            except ImportError:
-                raise CompressionError("bz2 module is not available")
-            if mode == "r":
-                self.dbuf = ""
-                self.cmp = bz2.BZ2Decompressor()
-            else:
-                self.cmp = bz2.BZ2Compressor()
-
-    def __del__(self):
-        if hasattr(self, "closed") and not self.closed:
-            self.close()
-
-    def _init_write_gz(self):
-        """Initialize for writing with gzip compression.
-        """
-        self.cmp = self.zlib.compressobj(9, self.zlib.DEFLATED,
-                                            -self.zlib.MAX_WBITS,
-                                            self.zlib.DEF_MEM_LEVEL,
-                                            0)
-        timestamp = struct.pack("<L", long(time.time()))
-        self.__write("\037\213\010\010%s\002\377" % timestamp)
-        if self.name.endswith(".gz"):
-            self.name = self.name[:-3]
-        self.__write(self.name + NUL)
-
-    def write(self, s):
-        """Write string s to the stream.
-        """
-        if self.comptype == "gz":
-            self.crc = self.zlib.crc32(s, self.crc) & 0xffffffffL
-        self.pos += len(s)
-        if self.comptype != "tar":
-            s = self.cmp.compress(s)
-        self.__write(s)
-
-    def __write(self, s):
-        """Write string s to the stream if a whole new block
-           is ready to be written.
-        """
-        self.buf += s
-        while len(self.buf) > self.bufsize:
-            self.fileobj.write(self.buf[:self.bufsize])
-            self.buf = self.buf[self.bufsize:]
-
-    def close(self):
-        """Close the _Stream object. No operation should be
-           done on it afterwards.
-        """
-        if self.closed:
-            return
-
-        if self.mode == "w" and self.comptype != "tar":
-            self.buf += self.cmp.flush()
-
-        if self.mode == "w" and self.buf:
-            self.fileobj.write(self.buf)
-            self.buf = ""
-            if self.comptype == "gz":
-                # The native zlib crc is an unsigned 32-bit integer, but
-                # the Python wrapper implicitly casts that to a signed C
-                # long.  So, on a 32-bit box self.crc may "look negative",
-                # while the same crc on a 64-bit box may "look positive".
-                # To avoid irksome warnings from the `struct` module, force
-                # it to look positive on all boxes.
-                self.fileobj.write(struct.pack("<L", self.crc & 0xffffffffL))
-                self.fileobj.write(struct.pack("<L", self.pos & 0xffffFFFFL))
-
-        if not self._extfileobj:
-            self.fileobj.close()
-
-        self.closed = True
-
-    def _init_read_gz(self):
-        """Initialize for reading a gzip compressed fileobj.
-        """
-        self.cmp = self.zlib.decompressobj(-self.zlib.MAX_WBITS)
-        self.dbuf = ""
-
-        # taken from gzip.GzipFile with some alterations
-        if self.__read(2) != "\037\213":
-            raise ReadError("not a gzip file")
-        if self.__read(1) != "\010":
-            raise CompressionError("unsupported compression method")
-
-        flag = ord(self.__read(1))
-        self.__read(6)
-
-        if flag & 4:
-            xlen = ord(self.__read(1)) + 256 * ord(self.__read(1))
-            self.read(xlen)
-        if flag & 8:
-            while True:
-                s = self.__read(1)
-                if not s or s == NUL:
-                    break
-        if flag & 16:
-            while True:
-                s = self.__read(1)
-                if not s or s == NUL:
-                    break
-        if flag & 2:
-            self.__read(2)
-
-    def tell(self):
-        """Return the stream's file pointer position.
-        """
-        return self.pos
-
-    def seek(self, pos=0):
-        """Set the stream's file pointer to pos. Negative seeking
-           is forbidden.
-        """
-        if pos - self.pos >= 0:
-            blocks, remainder = divmod(pos - self.pos, self.bufsize)
-            for i in xrange(blocks):
-                self.read(self.bufsize)
-            self.read(remainder)
-        else:
-            raise StreamError("seeking backwards is not allowed")
-        return self.pos
-
-    def read(self, size=None):
-        """Return the next size number of bytes from the stream.
-           If size is not defined, return all bytes of the stream
-           up to EOF.
-        """
-        if size is None:
-            t = []
-            while True:
-                buf = self._read(self.bufsize)
-                if not buf:
-                    break
-                t.append(buf)
-            buf = "".join(t)
-        else:
-            buf = self._read(size)
-        self.pos += len(buf)
-        return buf
-
-    def _read(self, size):
-        """Return size bytes from the stream.
-        """
-        if self.comptype == "tar":
-            return self.__read(size)
-
-        c = len(self.dbuf)
-        t = [self.dbuf]
-        while c < size:
-            buf = self.__read(self.bufsize)
-            if not buf:
-                break
-            try:
-                buf = self.cmp.decompress(buf)
-            except IOError:
-                raise ReadError("invalid compressed data")
-            t.append(buf)
-            c += len(buf)
-        t = "".join(t)
-        self.dbuf = t[size:]
-        return t[:size]
-
-    def __read(self, size):
-        """Return size bytes from stream. If internal buffer is empty,
-           read another block from the stream.
-        """
-        c = len(self.buf)
-        t = [self.buf]
-        while c < size:
-            buf = self.fileobj.read(self.bufsize)
-            if not buf:
-                break
-            t.append(buf)
-            c += len(buf)
-        t = "".join(t)
-        self.buf = t[size:]
-        return t[:size]
-# class _Stream
-
-class _StreamProxy(object):
-    """Small proxy class that enables transparent compression
-       detection for the Stream interface (mode 'r|*').
-    """
-
-    def __init__(self, fileobj):
-        self.fileobj = fileobj
-        self.buf = self.fileobj.read(BLOCKSIZE)
-
-    def read(self, size):
-        self.read = self.fileobj.read
-        return self.buf
-
-    def getcomptype(self):
-        if self.buf.startswith("\037\213\010"):
-            return "gz"
-        if self.buf.startswith("BZh91"):
-            return "bz2"
-        return "tar"
-
-    def close(self):
-        self.fileobj.close()
-# class StreamProxy
-
-class _BZ2Proxy(object):
-    """Small proxy class that enables external file object
-       support for "r:bz2" and "w:bz2" modes. This is actually
-       a workaround for a limitation in bz2 module's BZ2File
-       class which (unlike gzip.GzipFile) has no support for
-       a file object argument.
-    """
-
-    blocksize = 16 * 1024
-
-    def __init__(self, fileobj, mode):
-        self.fileobj = fileobj
-        self.mode = mode
-        self.name = getattr(self.fileobj, "name", None)
-        self.init()
-
-    def init(self):
-        import bz2
-        self.pos = 0
-        if self.mode == "r":
-            self.bz2obj = bz2.BZ2Decompressor()
-            self.fileobj.seek(0)
-            self.buf = ""
-        else:
-            self.bz2obj = bz2.BZ2Compressor()
-
-    def read(self, size):
-        b = [self.buf]
-        x = len(self.buf)
-        while x < size:
-            raw = self.fileobj.read(self.blocksize)
-            if not raw:
-                break
-            data = self.bz2obj.decompress(raw)
-            b.append(data)
-            x += len(data)
-        self.buf = "".join(b)
-
-        buf = self.buf[:size]
-        self.buf = self.buf[size:]
-        self.pos += len(buf)
-        return buf
-
-    def seek(self, pos):
-        if pos < self.pos:
-            self.init()
-        self.read(pos - self.pos)
-
-    def tell(self):
-        return self.pos
-
-    def write(self, data):
-        self.pos += len(data)
-        raw = self.bz2obj.compress(data)
-        self.fileobj.write(raw)
-
-    def close(self):
-        if self.mode == "w":
-            raw = self.bz2obj.flush()
-            self.fileobj.write(raw)
-# class _BZ2Proxy
-
-#------------------------
-# Extraction file object
-#------------------------
-class _FileInFile(object):
-    """A thin wrapper around an existing file object that
-       provides a part of its data as an individual file
-       object.
-    """
-
-    def __init__(self, fileobj, offset, size, sparse=None):
-        self.fileobj = fileobj
-        self.offset = offset
-        self.size = size
-        self.sparse = sparse
-        self.position = 0
-
-    def tell(self):
-        """Return the current file position.
-        """
-        return self.position
-
-    def seek(self, position):
-        """Seek to a position in the file.
-        """
-        self.position = position
-
-    def read(self, size=None):
-        """Read data from the file.
-        """
-        if size is None:
-            size = self.size - self.position
-        else:
-            size = min(size, self.size - self.position)
-
-        if self.sparse is None:
-            return self.readnormal(size)
-        else:
-            return self.readsparse(size)
-
-    def readnormal(self, size):
-        """Read operation for regular files.
-        """
-        self.fileobj.seek(self.offset + self.position)
-        self.position += size
-        return self.fileobj.read(size)
-
-    def readsparse(self, size):
-        """Read operation for sparse files.
-        """
-        data = []
-        while size > 0:
-            buf = self.readsparsesection(size)
-            if not buf:
-                break
-            size -= len(buf)
-            data.append(buf)
-        return "".join(data)
-
-    def readsparsesection(self, size):
-        """Read a single section of a sparse file.
-        """
-        section = self.sparse.find(self.position)
-
-        if section is None:
-            return ""
-
-        size = min(size, section.offset + section.size - self.position)
-
-        if isinstance(section, _data):
-            realpos = section.realpos + self.position - section.offset
-            self.fileobj.seek(self.offset + realpos)
-            self.position += size
-            return self.fileobj.read(size)
-        else:
-            self.position += size
-            return NUL * size
-#class _FileInFile
-
-
-class ExFileObject(object):
-    """File-like object for reading an archive member.
-       Is returned by TarFile.extractfile().
-    """
-    blocksize = 1024
-
-    def __init__(self, tarfile, tarinfo):
-        self.fileobj = _FileInFile(tarfile.fileobj,
-                                   tarinfo.offset_data,
-                                   tarinfo.size,
-                                   getattr(tarinfo, "sparse", None))
-        self.name = tarinfo.name
-        self.mode = "r"
-        self.closed = False
-        self.size = tarinfo.size
-
-        self.position = 0
-        self.buffer = ""
-
-    def read(self, size=None):
-        """Read at most size bytes from the file. If size is not
-           present or None, read all data until EOF is reached.
-        """
-        if self.closed:
-            raise ValueError("I/O operation on closed file")
-
-        buf = ""
-        if self.buffer:
-            if size is None:
-                buf = self.buffer
-                self.buffer = ""
-            else:
-                buf = self.buffer[:size]
-                self.buffer = self.buffer[size:]
-
-        if size is None:
-            buf += self.fileobj.read()
-        else:
-            buf += self.fileobj.read(size - len(buf))
-
-        self.position += len(buf)
-        return buf
-
-    def readline(self, size=-1):
-        """Read one entire line from the file. If size is present
-           and non-negative, return a string with at most that
-           size, which may be an incomplete line.
-        """
-        if self.closed:
-            raise ValueError("I/O operation on closed file")
-
-        if "\n" in self.buffer:
-            pos = self.buffer.find("\n") + 1
-        else:
-            buffers = [self.buffer]
-            while True:
-                buf = self.fileobj.read(self.blocksize)
-                buffers.append(buf)
-                if not buf or "\n" in buf:
-                    self.buffer = "".join(buffers)
-                    pos = self.buffer.find("\n") + 1
-                    if pos == 0:
-                        # no newline found.
-                        pos = len(self.buffer)
-                    break
-
-        if size != -1:
-            pos = min(size, pos)
-
-        buf = self.buffer[:pos]
-        self.buffer = self.buffer[pos:]
-        self.position += len(buf)
-        return buf
-
-    def readlines(self):
-        """Return a list with all remaining lines.
-        """
-        result = []
-        while True:
-            line = self.readline()
-            if not line: break
-            result.append(line)
-        return result
-
-    def tell(self):
-        """Return the current file position.
-        """
-        if self.closed:
-            raise ValueError("I/O operation on closed file")
-
-        return self.position
-
-    def seek(self, pos, whence=os.SEEK_SET):
-        """Seek to a position in the file.
-        """
-        if self.closed:
-            raise ValueError("I/O operation on closed file")
-
-        if whence == os.SEEK_SET:
-            self.position = min(max(pos, 0), self.size)
-        elif whence == os.SEEK_CUR:
-            if pos < 0:
-                self.position = max(self.position + pos, 0)
-            else:
-                self.position = min(self.position + pos, self.size)
-        elif whence == os.SEEK_END:
-            self.position = max(min(self.size + pos, self.size), 0)
-        else:
-            raise ValueError("Invalid argument")
-
-        self.buffer = ""
-        self.fileobj.seek(self.position)
-
-    def close(self):
-        """Close the file object.
-        """
-        self.closed = True
-
-    def __iter__(self):
-        """Get an iterator over the file's lines.
-        """
-        while True:
-            line = self.readline()
-            if not line:
-                break
-            yield line
-#class ExFileObject
-
-#------------------
-# Exported Classes
-#------------------
-class TarInfo(object):
-    """Informational class which holds the details about an
-       archive member given by a tar header block.
-       TarInfo objects are returned by TarFile.getmember(),
-       TarFile.getmembers() and TarFile.gettarinfo() and are
-       usually created internally.
-    """
-
-    def __init__(self, name=""):
-        """Construct a TarInfo object. name is the optional name
-           of the member.
-        """
-        self.name = name        # member name
-        self.mode = 0644        # file permissions
-        self.uid = 0            # user id
-        self.gid = 0            # group id
-        self.size = 0           # file size
-        self.mtime = 0          # modification time
-        self.chksum = 0         # header checksum
-        self.type = REGTYPE     # member type
-        self.linkname = ""      # link name
-        self.uname = ""         # user name
-        self.gname = ""         # group name
-        self.devmajor = 0       # device major number
-        self.devminor = 0       # device minor number
-
-        self.offset = 0         # the tar header starts here
-        self.offset_data = 0    # the file's data starts here
-
-        self.pax_headers = {}   # pax header information
-
-    # In pax headers the "name" and "linkname" field are called
-    # "path" and "linkpath".
-    def _getpath(self):
-        return self.name
-    def _setpath(self, name):
-        self.name = name
-    path = property(_getpath, _setpath)
-
-    def _getlinkpath(self):
-        return self.linkname
-    def _setlinkpath(self, linkname):
-        self.linkname = linkname
-    linkpath = property(_getlinkpath, _setlinkpath)
-
-    def __repr__(self):
-        return "<%s %r at %#x>" % (self.__class__.__name__,self.name,id(self))
-
-    def get_info(self, encoding, errors):
-        """Return the TarInfo's attributes as a dictionary.
-        """
-        info = {
-            "name":     self.name,
-            "mode":     self.mode & 07777,
-            "uid":      self.uid,
-            "gid":      self.gid,
-            "size":     self.size,
-            "mtime":    self.mtime,
-            "chksum":   self.chksum,
-            "type":     self.type,
-            "linkname": self.linkname,
-            "uname":    self.uname,
-            "gname":    self.gname,
-            "devmajor": self.devmajor,
-            "devminor": self.devminor
-        }
-
-        if info["type"] == DIRTYPE and not info["name"].endswith("/"):
-            info["name"] += "/"
-
-        for key in ("name", "linkname", "uname", "gname"):
-            if type(info[key]) is unicode:
-                info[key] = info[key].encode(encoding, errors)
-
-        return info
-
-    def tobuf(self, format=DEFAULT_FORMAT, encoding=ENCODING, errors="strict"):
-        """Return a tar header as a string of 512 byte blocks.
-        """
-        info = self.get_info(encoding, errors)
-
-        if format == USTAR_FORMAT:
-            return self.create_ustar_header(info)
-        elif format == GNU_FORMAT:
-            return self.create_gnu_header(info)
-        elif format == PAX_FORMAT:
-            return self.create_pax_header(info, encoding, errors)
-        else:
-            raise ValueError("invalid format")
-
-    def create_ustar_header(self, info):
-        """Return the object as a ustar header block.
-        """
-        info["magic"] = POSIX_MAGIC
-
-        if len(info["linkname"]) > LENGTH_LINK:
-            raise ValueError("linkname is too long")
-
-        if len(info["name"]) > LENGTH_NAME:
-            info["prefix"], info["name"] = self._posix_split_name(info["name"])
-
-        return self._create_header(info, USTAR_FORMAT)
-
-    def create_gnu_header(self, info):
-        """Return the object as a GNU header block sequence.
-        """
-        info["magic"] = GNU_MAGIC
-
-        buf = ""
-        if len(info["linkname"]) > LENGTH_LINK:
-            buf += self._create_gnu_long_header(info["linkname"], GNUTYPE_LONGLINK)
-
-        if len(info["name"]) > LENGTH_NAME:
-            buf += self._create_gnu_long_header(info["name"], GNUTYPE_LONGNAME)
-
-        return buf + self._create_header(info, GNU_FORMAT)
-
-    def create_pax_header(self, info, encoding, errors):
-        """Return the object as a ustar header block. If it cannot be
-           represented this way, prepend a pax extended header sequence
-           with supplement information.
-        """
-        info["magic"] = POSIX_MAGIC
-        pax_headers = self.pax_headers.copy()
-
-        # Test string fields for values that exceed the field length or cannot
-        # be represented in ASCII encoding.
-        for name, hname, length in (
-                ("name", "path", LENGTH_NAME), ("linkname", "linkpath", LENGTH_LINK),
-                ("uname", "uname", 32), ("gname", "gname", 32)):
-
-            if hname in pax_headers:
-                # The pax header has priority.
-                continue
-
-            val = info[name].decode(encoding, errors)
-
-            # Try to encode the string as ASCII.
-            try:
-                val.encode("ascii")
-            except UnicodeEncodeError:
-                pax_headers[hname] = val
-                continue
-
-            if len(info[name]) > length:
-                pax_headers[hname] = val
-
-        # Test number fields for values that exceed the field limit or values
-        # that like to be stored as float.
-        for name, digits in (("uid", 8), ("gid", 8), ("size", 12), ("mtime", 12)):
-            if name in pax_headers:
-                # The pax header has priority. Avoid overflow.
-                info[name] = 0
-                continue
-
-            val = info[name]
-            if not 0 <= val < 8 ** (digits - 1) or isinstance(val, float):
-                pax_headers[name] = unicode(val)
-                info[name] = 0
-
-        # Create a pax extended header if necessary.
-        if pax_headers:
-            buf = self._create_pax_generic_header(pax_headers)
-        else:
-            buf = ""
-
-        return buf + self._create_header(info, USTAR_FORMAT)
-
-    @classmethod
-    def create_pax_global_header(cls, pax_headers):
-        """Return the object as a pax global header block sequence.
-        """
-        return cls._create_pax_generic_header(pax_headers, type=XGLTYPE)
-
-    def _posix_split_name(self, name):
-        """Split a name longer than 100 chars into a prefix
-           and a name part.
-        """
-        prefix = name[:LENGTH_PREFIX + 1]
-        while prefix and prefix[-1] != "/":
-            prefix = prefix[:-1]
-
-        name = name[len(prefix):]
-        prefix = prefix[:-1]
-
-        if not prefix or len(name) > LENGTH_NAME:
-            raise ValueError("name is too long")
-        return prefix, name
-
-    @staticmethod
-    def _create_header(info, format):
-        """Return a header block. info is a dictionary with file
-           information, format must be one of the *_FORMAT constants.
-        """
-        parts = [
-            stn(info.get("name", ""), 100),
-            itn(info.get("mode", 0) & 07777, 8, format),
-            itn(info.get("uid", 0), 8, format),
-            itn(info.get("gid", 0), 8, format),
-            itn(info.get("size", 0), 12, format),
-            itn(info.get("mtime", 0), 12, format),
-            "        ", # checksum field
-            info.get("type", REGTYPE),
-            stn(info.get("linkname", ""), 100),
-            stn(info.get("magic", POSIX_MAGIC), 8),
-            stn(info.get("uname", ""), 32),
-            stn(info.get("gname", ""), 32),
-            itn(info.get("devmajor", 0), 8, format),
-            itn(info.get("devminor", 0), 8, format),
-            stn(info.get("prefix", ""), 155)
-        ]
-
-        buf = struct.pack("%ds" % BLOCKSIZE, "".join(parts))
-        chksum = calc_chksums(buf[-BLOCKSIZE:])[0]
-        buf = buf[:-364] + "%06o\0" % chksum + buf[-357:]
-        return buf
-
-    @staticmethod
-    def _create_payload(payload):
-        """Return the string payload filled with zero bytes
-           up to the next 512 byte border.
-        """
-        blocks, remainder = divmod(len(payload), BLOCKSIZE)
-        if remainder > 0:
-            payload += (BLOCKSIZE - remainder) * NUL
-        return payload
-
-    @classmethod
-    def _create_gnu_long_header(cls, name, type):
-        """Return a GNUTYPE_LONGNAME or GNUTYPE_LONGLINK sequence
-           for name.
-        """
-        name += NUL
-
-        info = {}
-        info["name"] = "././@LongLink"
-        info["type"] = type
-        info["size"] = len(name)
-        info["magic"] = GNU_MAGIC
-
-        # create extended header + name blocks.
-        return cls._create_header(info, USTAR_FORMAT) + \
-                cls._create_payload(name)
-
-    @classmethod
-    def _create_pax_generic_header(cls, pax_headers, type=XHDTYPE):
-        """Return a POSIX.1-2001 extended or global header sequence
-           that contains a list of keyword, value pairs. The values
-           must be unicode objects.
-        """
-        records = []
-        for keyword, value in pax_headers.iteritems():
-            keyword = keyword.encode("utf8")
-            value = value.encode("utf8")
-            l = len(keyword) + len(value) + 3   # ' ' + '=' + '\n'
-            n = p = 0
-            while True:
-                n = l + len(str(p))
-                if n == p:
-                    break
-                p = n
-            records.append("%d %s=%s\n" % (p, keyword, value))
-        records = "".join(records)
-
-        # We use a hardcoded "././@PaxHeader" name like star does
-        # instead of the one that POSIX recommends.
-        info = {}
-        info["name"] = "././@PaxHeader"
-        info["type"] = type
-        info["size"] = len(records)
-        info["magic"] = POSIX_MAGIC
-
-        # Create pax header + record blocks.
-        return cls._create_header(info, USTAR_FORMAT) + \
-                cls._create_payload(records)
-
-    @classmethod
-    def frombuf(cls, buf):
-        """Construct a TarInfo object from a 512 byte string buffer.
-        """
-        if len(buf) == 0:
-            raise EmptyHeaderError("empty header")
-        if len(buf) != BLOCKSIZE:
-            raise TruncatedHeaderError("truncated header")
-        if buf.count(NUL) == BLOCKSIZE:
-            raise EOFHeaderError("end of file header")
-
-        chksum = nti(buf[148:156])
-        if chksum not in calc_chksums(buf):
-            raise InvalidHeaderError("bad checksum")
-
-        obj = cls()
-        obj.buf = buf
-        obj.name = nts(buf[0:100])
-        obj.mode = nti(buf[100:108])
-        obj.uid = nti(buf[108:116])
-        obj.gid = nti(buf[116:124])
-        obj.size = nti(buf[124:136])
-        obj.mtime = nti(buf[136:148])
-        obj.chksum = chksum
-        obj.type = buf[156:157]
-        obj.linkname = nts(buf[157:257])
-        obj.uname = nts(buf[265:297])
-        obj.gname = nts(buf[297:329])
-        obj.devmajor = nti(buf[329:337])
-        obj.devminor = nti(buf[337:345])
-        prefix = nts(buf[345:500])
-
-        # Old V7 tar format represents a directory as a regular
-        # file with a trailing slash.
-        if obj.type == AREGTYPE and obj.name.endswith("/"):
-            obj.type = DIRTYPE
-
-        # Remove redundant slashes from directories.
-        if obj.isdir():
-            obj.name = obj.name.rstrip("/")
-
-        # Reconstruct a ustar longname.
-        if prefix and obj.type not in GNU_TYPES:
-            obj.name = prefix + "/" + obj.name
-        return obj
-
-    @classmethod
-    def fromtarfile(cls, tarfile):
-        """Return the next TarInfo object from TarFile object
-           tarfile.
-        """
-        buf = tarfile.fileobj.read(BLOCKSIZE)
-        obj = cls.frombuf(buf)
-        obj.offset = tarfile.fileobj.tell() - BLOCKSIZE
-        return obj._proc_member(tarfile)
-
-    #--------------------------------------------------------------------------
-    # The following are methods that are called depending on the type of a
-    # member. The entry point is _proc_member() which can be overridden in a
-    # subclass to add custom _proc_*() methods. A _proc_*() method MUST
-    # implement the following
-    # operations:
-    # 1. Set self.offset_data to the position where the data blocks begin,
-    #    if there is data that follows.
-    # 2. Set tarfile.offset to the position where the next member's header will
-    #    begin.
-    # 3. Return self or another valid TarInfo object.
-    def _proc_member(self, tarfile):
-        """Choose the right processing method depending on
-           the type and call it.
-        """
-        if self.type in (GNUTYPE_LONGNAME, GNUTYPE_LONGLINK):
-            return self._proc_gnulong(tarfile)
-        elif self.type == GNUTYPE_SPARSE:
-            return self._proc_sparse(tarfile)
-        elif self.type in (XHDTYPE, XGLTYPE, SOLARIS_XHDTYPE):
-            return self._proc_pax(tarfile)
-        else:
-            return self._proc_builtin(tarfile)
-
-    def _proc_builtin(self, tarfile):
-        """Process a builtin type or an unknown type which
-           will be treated as a regular file.
-        """
-        self.offset_data = tarfile.fileobj.tell()
-        offset = self.offset_data
-        if self.isreg() or self.type not in SUPPORTED_TYPES:
-            # Skip the following data blocks.
-            offset += self._block(self.size)
-        tarfile.offset = offset
-
-        # Patch the TarInfo object with saved global
-        # header information.
-        self._apply_pax_info(tarfile.pax_headers, tarfile.encoding, tarfile.errors)
-
-        return self
-
-    def _proc_gnulong(self, tarfile):
-        """Process the blocks that hold a GNU longname
-           or longlink member.
-        """
-        buf = tarfile.fileobj.read(self._block(self.size))
-
-        # Fetch the next header and process it.
-        try:
-            next = self.fromtarfile(tarfile)
-        except HeaderError:
-            raise SubsequentHeaderError("missing or bad subsequent header")
-
-        # Patch the TarInfo object from the next header with
-        # the longname information.
-        next.offset = self.offset
-        if self.type == GNUTYPE_LONGNAME:
-            next.name = nts(buf)
-        elif self.type == GNUTYPE_LONGLINK:
-            next.linkname = nts(buf)
-
-        return next
-
-    def _proc_sparse(self, tarfile):
-        """Process a GNU sparse header plus extra headers.
-        """
-        buf = self.buf
-        sp = _ringbuffer()
-        pos = 386
-        lastpos = 0L
-        realpos = 0L
-        # There are 4 possible sparse structs in the
-        # first header.
-        for i in xrange(4):
-            try:
-                offset = nti(buf[pos:pos + 12])
-                numbytes = nti(buf[pos + 12:pos + 24])
-            except ValueError:
-                break
-            if offset > lastpos:
-                sp.append(_hole(lastpos, offset - lastpos))
-            sp.append(_data(offset, numbytes, realpos))
-            realpos += numbytes
-            lastpos = offset + numbytes
-            pos += 24
-
-        isextended = ord(buf[482])
-        origsize = nti(buf[483:495])
-
-        # If the isextended flag is given,
-        # there are extra headers to process.
-        while isextended == 1:
-            buf = tarfile.fileobj.read(BLOCKSIZE)
-            pos = 0
-            for i in xrange(21):
-                try:
-                    offset = nti(buf[pos:pos + 12])
-                    numbytes = nti(buf[pos + 12:pos + 24])
-                except ValueError:
-                    break
-                if offset > lastpos:
-                    sp.append(_hole(lastpos, offset - lastpos))
-                sp.append(_data(offset, numbytes, realpos))
-                realpos += numbytes
-                lastpos = offset + numbytes
-                pos += 24
-            isextended = ord(buf[504])
-
-        if lastpos < origsize:
-            sp.append(_hole(lastpos, origsize - lastpos))
-
-        self.sparse = sp
-
-        self.offset_data = tarfile.fileobj.tell()
-        tarfile.offset = self.offset_data + self._block(self.size)
-        self.size = origsize
-
-        return self
-
-    def _proc_pax(self, tarfile):
-        """Process an extended or global header as described in
-           POSIX.1-2001.
-        """
-        # Read the header information.
-        buf = tarfile.fileobj.read(self._block(self.size))
-
-        # A pax header stores supplemental information for either
-        # the following file (extended) or all following files
-        # (global).
-        if self.type == XGLTYPE:
-            pax_headers = tarfile.pax_headers
-        else:
-            pax_headers = tarfile.pax_headers.copy()
-
-        # Parse pax header information. A record looks like that:
-        # "%d %s=%s\n" % (length, keyword, value). length is the size
-        # of the complete record including the length field itself and
-        # the newline. keyword and value are both UTF-8 encoded strings.
-        regex = re.compile(r"(\d+) ([^=]+)=", re.U)
-        pos = 0
-        while True:
-            match = regex.match(buf, pos)
-            if not match:
-                break
-
-            length, keyword = match.groups()
-            length = int(length)
-            value = buf[match.end(2) + 1:match.start(1) + length - 1]
-
-            keyword = keyword.decode("utf8")
-            value = value.decode("utf8")
-
-            pax_headers[keyword] = value
-            pos += length
-
-        # Fetch the next header.
-        try:
-            next = self.fromtarfile(tarfile)
-        except HeaderError:
-            raise SubsequentHeaderError("missing or bad subsequent header")
-
-        if self.type in (XHDTYPE, SOLARIS_XHDTYPE):
-            # Patch the TarInfo object with the extended header info.
-            next._apply_pax_info(pax_headers, tarfile.encoding, tarfile.errors)
-            next.offset = self.offset
-
-            if "size" in pax_headers:
-                # If the extended header replaces the size field,
-                # we need to recalculate the offset where the next
-                # header starts.
-                offset = next.offset_data
-                if next.isreg() or next.type not in SUPPORTED_TYPES:
-                    offset += next._block(next.size)
-                tarfile.offset = offset
-
-        return next
-
-    def _apply_pax_info(self, pax_headers, encoding, errors):
-        """Replace fields with supplemental information from a previous
-           pax extended or global header.
-        """
-        for keyword, value in pax_headers.iteritems():
-            if keyword not in PAX_FIELDS:
-                continue
-
-            if keyword == "path":
-                value = value.rstrip("/")
-
-            if keyword in PAX_NUMBER_FIELDS:
-                try:
-                    value = PAX_NUMBER_FIELDS[keyword](value)
-                except ValueError:
-                    value = 0
-            else:
-                value = uts(value, encoding, errors)
-
-            setattr(self, keyword, value)
-
-        self.pax_headers = pax_headers.copy()
-
-    def _block(self, count):
-        """Round up a byte count by BLOCKSIZE and return it,
-           e.g. _block(834) => 1024.
-        """
-        blocks, remainder = divmod(count, BLOCKSIZE)
-        if remainder:
-            blocks += 1
-        return blocks * BLOCKSIZE
-
-    def isreg(self):
-        return self.type in REGULAR_TYPES
-    def isfile(self):
-        return self.isreg()
-    def isdir(self):
-        return self.type == DIRTYPE
-    def issym(self):
-        return self.type == SYMTYPE
-    def islnk(self):
-        return self.type == LNKTYPE
-    def ischr(self):
-        return self.type == CHRTYPE
-    def isblk(self):
-        return self.type == BLKTYPE
-    def isfifo(self):
-        return self.type == FIFOTYPE
-    def issparse(self):
-        return self.type == GNUTYPE_SPARSE
-    def isdev(self):
-        return self.type in (CHRTYPE, BLKTYPE, FIFOTYPE)
-# class TarInfo
-
-class TarFile(object):
-    """The TarFile Class provides an interface to tar archives.
-    """
-
-    debug = 0                   # May be set from 0 (no msgs) to 3 (all msgs)
-
-    dereference = False         # If true, add content of linked file to the
-                                # tar file, else the link.
-
-    ignore_zeros = False        # If true, skips empty or invalid blocks and
-                                # continues processing.
-
-    errorlevel = 1              # If 0, fatal errors only appear in debug
-                                # messages (if debug >= 0). If > 0, errors
-                                # are passed to the caller as exceptions.
-
-    format = DEFAULT_FORMAT     # The format to use when creating an archive.
-
-    encoding = ENCODING         # Encoding for 8-bit character strings.
-
-    errors = None               # Error handler for unicode conversion.
-
-    tarinfo = TarInfo           # The default TarInfo class to use.
-
-    fileobject = ExFileObject   # The default ExFileObject class to use.
-
-    def __init__(self, name=None, mode="r", fileobj=None, format=None,
-            tarinfo=None, dereference=None, ignore_zeros=None, encoding=None,
-            errors=None, pax_headers=None, debug=None, errorlevel=None):
-        """Open an (uncompressed) tar archive `name'. `mode' is either 'r' to
-           read from an existing archive, 'a' to append data to an existing
-           file or 'w' to create a new file overwriting an existing one. `mode'
-           defaults to 'r'.
-           If `fileobj' is given, it is used for reading or writing data. If it
-           can be determined, `mode' is overridden by `fileobj's mode.
-           `fileobj' is not closed, when TarFile is closed.
-        """
-        if len(mode) > 1 or mode not in "raw":
-            raise ValueError("mode must be 'r', 'a' or 'w'")
-        self.mode = mode
-        self._mode = {"r": "rb", "a": "r+b", "w": "wb"}[mode]
-
-        if not fileobj:
-            if self.mode == "a" and not os.path.exists(name):
-                # Create nonexistent files in append mode.
-                self.mode = "w"
-                self._mode = "wb"
-            fileobj = bltn_open(name, self._mode)
-            self._extfileobj = False
-        else:
-            if name is None and hasattr(fileobj, "name"):
-                name = fileobj.name
-            if hasattr(fileobj, "mode"):
-                self._mode = fileobj.mode
-            self._extfileobj = True
-        self.name = os.path.abspath(name) if name else None
-        self.fileobj = fileobj
-
-        # Init attributes.
-        if format is not None:
-            self.format = format
-        if tarinfo is not None:
-            self.tarinfo = tarinfo
-        if dereference is not None:
-            self.dereference = dereference
-        if ignore_zeros is not None:
-            self.ignore_zeros = ignore_zeros
-        if encoding is not None:
-            self.encoding = encoding
-
-        if errors is not None:
-            self.errors = errors
-        elif mode == "r":
-            self.errors = "utf-8"
-        else:
-            self.errors = "strict"
-
-        if pax_headers is not None and self.format == PAX_FORMAT:
-            self.pax_headers = pax_headers
-        else:
-            self.pax_headers = {}
-
-        if debug is not None:
-            self.debug = debug
-        if errorlevel is not None:
-            self.errorlevel = errorlevel
-
-        # Init datastructures.
-        self.closed = False
-        self.members = []       # list of members as TarInfo objects
-        self._loaded = False    # flag if all members have been read
-        self.offset = self.fileobj.tell()
-                                # current position in the archive file
-        self.inodes = {}        # dictionary caching the inodes of
-                                # archive members already added
-
-        try:
-            if self.mode == "r":
-                self.firstmember = None
-                self.firstmember = self.next()
-
-            if self.mode == "a":
-                # Move to the end of the archive,
-                # before the first empty block.
-                while True:
-                    self.fileobj.seek(self.offset)
-                    try:
-                        tarinfo = self.tarinfo.fromtarfile(self)
-                        self.members.append(tarinfo)
-                    except EOFHeaderError:
-                        self.fileobj.seek(self.offset)
-                        break
-                    except HeaderError, e:
-                        raise ReadError(str(e))
-
-            if self.mode in "aw":
-                self._loaded = True
-
-                if self.pax_headers:
-                    buf = self.tarinfo.create_pax_global_header(self.pax_headers.copy())
-                    self.fileobj.write(buf)
-                    self.offset += len(buf)
-        except:
-            if not self._extfileobj:
-                self.fileobj.close()
-            self.closed = True
-            raise
-
-    def _getposix(self):
-        return self.format == USTAR_FORMAT
-    def _setposix(self, value):
-        import warnings
-        warnings.warn("use the format attribute instead", DeprecationWarning,
-                      2)
-        if value:
-            self.format = USTAR_FORMAT
-        else:
-            self.format = GNU_FORMAT
-    posix = property(_getposix, _setposix)
-
-    #--------------------------------------------------------------------------
-    # Below are the classmethods which act as alternate constructors to the
-    # TarFile class. The open() method is the only one that is needed for
-    # public use; it is the "super"-constructor and is able to select an
-    # adequate "sub"-constructor for a particular compression using the mapping
-    # from OPEN_METH.
-    #
-    # This concept allows one to subclass TarFile without losing the comfort of
-    # the super-constructor. A sub-constructor is registered and made available
-    # by adding it to the mapping in OPEN_METH.
-
-    @classmethod
-    def open(cls, name=None, mode="r", fileobj=None, bufsize=RECORDSIZE, **kwargs):
-        """Open a tar archive for reading, writing or appending. Return
-           an appropriate TarFile class.
-
-           mode:
-           'r' or 'r:*' open for reading with transparent compression
-           'r:'         open for reading exclusively uncompressed
-           'r:gz'       open for reading with gzip compression
-           'r:bz2'      open for reading with bzip2 compression
-           'a' or 'a:'  open for appending, creating the file if necessary
-           'w' or 'w:'  open for writing without compression
-           'w:gz'       open for writing with gzip compression
-           'w:bz2'      open for writing with bzip2 compression
-
-           'r|*'        open a stream of tar blocks with transparent compression
-           'r|'         open an uncompressed stream of tar blocks for reading
-           'r|gz'       open a gzip compressed stream of tar blocks
-           'r|bz2'      open a bzip2 compressed stream of tar blocks
-           'w|'         open an uncompressed stream for writing
-           'w|gz'       open a gzip compressed stream for writing
-           'w|bz2'      open a bzip2 compressed stream for writing
-        """
-
-        if not name and not fileobj:
-            raise ValueError("nothing to open")
-
-        if mode in ("r", "r:*"):
-            # Find out which *open() is appropriate for opening the file.
-            for comptype in cls.OPEN_METH:
-                func = getattr(cls, cls.OPEN_METH[comptype])
-                if fileobj is not None:
-                    saved_pos = fileobj.tell()
-                try:
-                    return func(name, "r", fileobj, **kwargs)
-                except (ReadError, CompressionError), e:
-                    if fileobj is not None:
-                        fileobj.seek(saved_pos)
-                    continue
-            raise ReadError("file could not be opened successfully")
-
-        elif ":" in mode:
-            filemode, comptype = mode.split(":", 1)
-            filemode = filemode or "r"
-            comptype = comptype or "tar"
-
-            # Select the *open() function according to
-            # given compression.
-            if comptype in cls.OPEN_METH:
-                func = getattr(cls, cls.OPEN_METH[comptype])
-            else:
-                raise CompressionError("unknown compression type %r" % comptype)
-            return func(name, filemode, fileobj, **kwargs)
-
-        elif "|" in mode:
-            filemode, comptype = mode.split("|", 1)
-            filemode = filemode or "r"
-            comptype = comptype or "tar"
-
-            if filemode not in "rw":
-                raise ValueError("mode must be 'r' or 'w'")
-
-            t = cls(name, filemode,
-                    _Stream(name, filemode, comptype, fileobj, bufsize),
-                    **kwargs)
-            t._extfileobj = False
-            return t
-
-        elif mode in "aw":
-            return cls.taropen(name, mode, fileobj, **kwargs)
-
-        raise ValueError("undiscernible mode")
-
-    @classmethod
-    def taropen(cls, name, mode="r", fileobj=None, **kwargs):
-        """Open uncompressed tar archive name for reading or writing.
-        """
-        if len(mode) > 1 or mode not in "raw":
-            raise ValueError("mode must be 'r', 'a' or 'w'")
-        return cls(name, mode, fileobj, **kwargs)
-
-    @classmethod
-    def gzopen(cls, name, mode="r", fileobj=None, compresslevel=9, **kwargs):
-        """Open gzip compressed tar archive name for reading or writing.
-           Appending is not allowed.
-        """
-        if len(mode) > 1 or mode not in "rw":
-            raise ValueError("mode must be 'r' or 'w'")
-
-        try:
-            import gzip
-            gzip.GzipFile
-        except (ImportError, AttributeError):
-            raise CompressionError("gzip module is not available")
-
-        if fileobj is None:
-            fileobj = bltn_open(name, mode + "b")
-
-        try:
-            t = cls.taropen(name, mode,
-                gzip.GzipFile(name, mode, compresslevel, fileobj),
-                **kwargs)
-        except IOError:
-            raise ReadError("not a gzip file")
-        t._extfileobj = False
-        return t
-
-    @classmethod
-    def bz2open(cls, name, mode="r", fileobj=None, compresslevel=9, **kwargs):
-        """Open bzip2 compressed tar archive name for reading or writing.
-           Appending is not allowed.
-        """
-        if len(mode) > 1 or mode not in "rw":
-            raise ValueError("mode must be 'r' or 'w'.")
-
-        try:
-            import bz2
-        except ImportError:
-            raise CompressionError("bz2 module is not available")
-
-        if fileobj is not None:
-            fileobj = _BZ2Proxy(fileobj, mode)
-        else:
-            fileobj = bz2.BZ2File(name, mode, compresslevel=compresslevel)
-
-        try:
-            t = cls.taropen(name, mode, fileobj, **kwargs)
-        except (IOError, EOFError):
-            raise ReadError("not a bzip2 file")
-        t._extfileobj = False
-        return t
-
-    # All *open() methods are registered here.
-    OPEN_METH = {
-        "tar": "taropen",   # uncompressed tar
-        "gz":  "gzopen",    # gzip compressed tar
-        "bz2": "bz2open"    # bzip2 compressed tar
-    }
-
-    #--------------------------------------------------------------------------
-    # The public methods which TarFile provides:
-
-    def close(self):
-        """Close the TarFile. In write-mode, two finishing zero blocks are
-           appended to the archive.
-        """
-        if self.closed:
-            return
-
-        if self.mode in "aw":
-            self.fileobj.write(NUL * (BLOCKSIZE * 2))
-            self.offset += (BLOCKSIZE * 2)
-            # fill up the end with zero-blocks
-            # (like option -b20 for tar does)
-            blocks, remainder = divmod(self.offset, RECORDSIZE)
-            if remainder > 0:
-                self.fileobj.write(NUL * (RECORDSIZE - remainder))
-
-        if not self._extfileobj:
-            self.fileobj.close()
-        self.closed = True
-
-    def getmember(self, name):
-        """Return a TarInfo object for member `name'. If `name' can not be
-           found in the archive, KeyError is raised. If a member occurs more
-           than once in the archive, its last occurrence is assumed to be the
-           most up-to-date version.
-        """
-        tarinfo = self._getmember(name)
-        if tarinfo is None:
-            raise KeyError("filename %r not found" % name)
-        return tarinfo
-
-    def getmembers(self):
-        """Return the members of the archive as a list of TarInfo objects. The
-           list has the same order as the members in the archive.
-        """
-        self._check()
-        if not self._loaded:    # if we want to obtain a list of
-            self._load()        # all members, we first have to
-                                # scan the whole archive.
-        return self.members
-
-    def getnames(self):
-        """Return the members of the archive as a list of their names. It has
-           the same order as the list returned by getmembers().
-        """
-        return [tarinfo.name for tarinfo in self.getmembers()]
-
-    def gettarinfo(self, name=None, arcname=None, fileobj=None):
-        """Create a TarInfo object for either the file `name' or the file
-           object `fileobj' (using os.fstat on its file descriptor). You can
-           modify some of the TarInfo's attributes before you add it using
-           addfile(). If given, `arcname' specifies an alternative name for the
-           file in the archive.
-        """
-        self._check("aw")
-
-        # When fileobj is given, replace name by
-        # fileobj's real name.
-        if fileobj is not None:
-            name = fileobj.name
-
-        # Building the name of the member in the archive.
-        # Backward slashes are converted to forward slashes,
-        # Absolute paths are turned to relative paths.
-        if arcname is None:
-            arcname = name
-        drv, arcname = os.path.splitdrive(arcname)
-        arcname = arcname.replace(os.sep, "/")
-        arcname = arcname.lstrip("/")
-
-        # Now, fill the TarInfo object with
-        # information specific for the file.
-        tarinfo = self.tarinfo()
-        tarinfo.tarfile = self
-
-        # Use os.stat or os.lstat, depending on platform
-        # and if symlinks shall be resolved.
-        if fileobj is None:
-            if hasattr(os, "lstat") and not self.dereference:
-                statres = os.lstat(name)
-            else:
-                statres = os.stat(name)
-        else:
-            statres = os.fstat(fileobj.fileno())
-        linkname = ""
-
-        stmd = statres.st_mode
-        if stat.S_ISREG(stmd):
-            inode = (statres.st_ino, statres.st_dev)
-            if not self.dereference and statres.st_nlink > 1 and \
-                    inode in self.inodes and arcname != self.inodes[inode]:
-                # Is it a hardlink to an already
-                # archived file?
-                type = LNKTYPE
-                linkname = self.inodes[inode]
-            else:
-                # The inode is added only if its valid.
-                # For win32 it is always 0.
-                type = REGTYPE
-                if inode[0]:
-                    self.inodes[inode] = arcname
-        elif stat.S_ISDIR(stmd):
-            type = DIRTYPE
-        elif stat.S_ISFIFO(stmd):
-            type = FIFOTYPE
-        elif stat.S_ISLNK(stmd):
-            type = SYMTYPE
-            linkname = os.readlink(name)
-        elif stat.S_ISCHR(stmd):
-            type = CHRTYPE
-        elif stat.S_ISBLK(stmd):
-            type = BLKTYPE
-        else:
-            return None
-
-        # Fill the TarInfo object with all
-        # information we can get.
-        tarinfo.name = arcname
-        tarinfo.mode = stmd
-        tarinfo.uid = statres.st_uid
-        tarinfo.gid = statres.st_gid
-        if type == REGTYPE:
-            tarinfo.size = statres.st_size
-        else:
-            tarinfo.size = 0L
-        tarinfo.mtime = statres.st_mtime
-        tarinfo.type = type
-        tarinfo.linkname = linkname
-        if pwd:
-            try:
-                tarinfo.uname = pwd.getpwuid(tarinfo.uid)[0]
-            except KeyError:
-                pass
-        if grp:
-            try:
-                tarinfo.gname = grp.getgrgid(tarinfo.gid)[0]
-            except KeyError:
-                pass
-
-        if type in (CHRTYPE, BLKTYPE):
-            if hasattr(os, "major") and hasattr(os, "minor"):
-                tarinfo.devmajor = os.major(statres.st_rdev)
-                tarinfo.devminor = os.minor(statres.st_rdev)
-        return tarinfo
-
-    def list(self, verbose=True):
-        """Print a table of contents to sys.stdout. If `verbose' is False, only
-           the names of the members are printed. If it is True, an `ls -l'-like
-           output is produced.
-        """
-        self._check()
-
-        for tarinfo in self:
-            if verbose:
-                print filemode(tarinfo.mode),
-                print "%s/%s" % (tarinfo.uname or tarinfo.uid,
-                                 tarinfo.gname or tarinfo.gid),
-                if tarinfo.ischr() or tarinfo.isblk():
-                    print "%10s" % ("%d,%d" \
-                                    % (tarinfo.devmajor, tarinfo.devminor)),
-                else:
-                    print "%10d" % tarinfo.size,
-                print "%d-%02d-%02d %02d:%02d:%02d" \
-                      % time.localtime(tarinfo.mtime)[:6],
-
-            print tarinfo.name + ("/" if tarinfo.isdir() else ""),
-
-            if verbose:
-                if tarinfo.issym():
-                    print "->", tarinfo.linkname,
-                if tarinfo.islnk():
-                    print "link to", tarinfo.linkname,
-            print
-
-    def add(self, name, arcname=None, recursive=True, exclude=None, filter=None):
-        """Add the file `name' to the archive. `name' may be any type of file
-           (directory, fifo, symbolic link, etc.). If given, `arcname'
-           specifies an alternative name for the file in the archive.
-           Directories are added recursively by default. This can be avoided by
-           setting `recursive' to False. `exclude' is a function that should
-           return True for each filename to be excluded. `filter' is a function
-           that expects a TarInfo object argument and returns the changed
-           TarInfo object, if it returns None the TarInfo object will be
-           excluded from the archive.
-        """
-        self._check("aw")
-
-        if arcname is None:
-            arcname = name
-
-        # Exclude pathnames.
-        if exclude is not None:
-            import warnings
-            warnings.warn("use the filter argument instead",
-                    DeprecationWarning, 2)
-            if exclude(name):
-                self._dbg(2, "tarfile: Excluded %r" % name)
-                return
-
-        # Skip if somebody tries to archive the archive...
-        if self.name is not None and os.path.abspath(name) == self.name:
-            self._dbg(2, "tarfile: Skipped %r" % name)
-            return
-
-        self._dbg(1, name)
-
-        # Create a TarInfo object from the file.
-        tarinfo = self.gettarinfo(name, arcname)
-
-        if tarinfo is None:
-            self._dbg(1, "tarfile: Unsupported type %r" % name)
-            return
-
-        # Change or exclude the TarInfo object.
-        if filter is not None:
-            tarinfo = filter(tarinfo)
-            if tarinfo is None:
-                self._dbg(2, "tarfile: Excluded %r" % name)
-                return
-
-        # Append the tar header and data to the archive.
-        if tarinfo.isreg():
-            f = bltn_open(name, "rb")
-            self.addfile(tarinfo, f)
-            f.close()
-
-        elif tarinfo.isdir():
-            self.addfile(tarinfo)
-            if recursive:
-                for f in os.listdir(name):
-                    self.add(os.path.join(name, f), os.path.join(arcname, f),
-                            recursive, exclude, filter)
-
-        else:
-            self.addfile(tarinfo)
-
-    def addfile(self, tarinfo, fileobj=None):
-        """Add the TarInfo object `tarinfo' to the archive. If `fileobj' is
-           given, tarinfo.size bytes are read from it and added to the archive.
-           You can create TarInfo objects using gettarinfo().
-           On Windows platforms, `fileobj' should always be opened with mode
-           'rb' to avoid irritation about the file size.
-        """
-        self._check("aw")
-
-        tarinfo = copy.copy(tarinfo)
-
-        buf = tarinfo.tobuf(self.format, self.encoding, self.errors)
-        self.fileobj.write(buf)
-        self.offset += len(buf)
-
-        # If there's data to follow, append it.
-        if fileobj is not None:
-            copyfileobj(fileobj, self.fileobj, tarinfo.size)
-            blocks, remainder = divmod(tarinfo.size, BLOCKSIZE)
-            if remainder > 0:
-                self.fileobj.write(NUL * (BLOCKSIZE - remainder))
-                blocks += 1
-            self.offset += blocks * BLOCKSIZE
-
-        self.members.append(tarinfo)
-
-    def extractall(self, path=".", members=None):
-        """Extract all members from the archive to the current working
-           directory and set owner, modification time and permissions on
-           directories afterwards. `path' specifies a different directory
-           to extract to. `members' is optional and must be a subset of the
-           list returned by getmembers().
-        """
-        directories = []
-
-        if members is None:
-            members = self
-
-        for tarinfo in members:
-            if tarinfo.isdir():
-                # Extract directories with a safe mode.
-                directories.append(tarinfo)
-                tarinfo = copy.copy(tarinfo)
-                tarinfo.mode = 0700
-            self.extract(tarinfo, path)
-
-        # Reverse sort directories.
-        directories.sort(key=operator.attrgetter('name'))
-        directories.reverse()
-
-        # Set correct owner, mtime and filemode on directories.
-        for tarinfo in directories:
-            dirpath = os.path.join(path, tarinfo.name)
-            try:
-                self.chown(tarinfo, dirpath)
-                self.utime(tarinfo, dirpath)
-                self.chmod(tarinfo, dirpath)
-            except ExtractError, e:
-                if self.errorlevel > 1:
-                    raise
-                else:
-                    self._dbg(1, "tarfile: %s" % e)
-
-    def extract(self, member, path=""):
-        """Extract a member from the archive to the current working directory,
-           using its full name. Its file information is extracted as accurately
-           as possible. `member' may be a filename or a TarInfo object. You can
-           specify a different directory using `path'.
-        """
-        self._check("r")
-
-        if isinstance(member, basestring):
-            tarinfo = self.getmember(member)
-        else:
-            tarinfo = member
-
-        # Prepare the link target for makelink().
-        if tarinfo.islnk():
-            tarinfo._link_target = os.path.join(path, tarinfo.linkname)
-
-        try:
-            self._extract_member(tarinfo, os.path.join(path, tarinfo.name))
-        except EnvironmentError, e:
-            if self.errorlevel > 0:
-                raise
-            else:
-                if e.filename is None:
-                    self._dbg(1, "tarfile: %s" % e.strerror)
-                else:
-                    self._dbg(1, "tarfile: %s %r" % (e.strerror, e.filename))
-        except ExtractError, e:
-            if self.errorlevel > 1:
-                raise
-            else:
-                self._dbg(1, "tarfile: %s" % e)
-
-    def extractfile(self, member):
-        """Extract a member from the archive as a file object. `member' may be
-           a filename or a TarInfo object. If `member' is a regular file, a
-           file-like object is returned. If `member' is a link, a file-like
-           object is constructed from the link's target. If `member' is none of
-           the above, None is returned.
-           The file-like object is read-only and provides the following
-           methods: read(), readline(), readlines(), seek() and tell()
-        """
-        self._check("r")
-
-        if isinstance(member, basestring):
-            tarinfo = self.getmember(member)
-        else:
-            tarinfo = member
-
-        if tarinfo.isreg():
-            return self.fileobject(self, tarinfo)
-
-        elif tarinfo.type not in SUPPORTED_TYPES:
-            # If a member's type is unknown, it is treated as a
-            # regular file.
-            return self.fileobject(self, tarinfo)
-
-        elif tarinfo.islnk() or tarinfo.issym():
-            if isinstance(self.fileobj, _Stream):
-                # A small but ugly workaround for the case that someone tries
-                # to extract a (sym)link as a file-object from a non-seekable
-                # stream of tar blocks.
-                raise StreamError("cannot extract (sym)link as file object")
-            else:
-                # A (sym)link's file object is its target's file object.
-                return self.extractfile(self._find_link_target(tarinfo))
-        else:
-            # If there's no data associated with the member (directory, chrdev,
-            # blkdev, etc.), return None instead of a file object.
-            return None
-
-    def _extract_member(self, tarinfo, targetpath):
-        """Extract the TarInfo object tarinfo to a physical
-           file called targetpath.
-        """
-        # Fetch the TarInfo object for the given name
-        # and build the destination pathname, replacing
-        # forward slashes to platform specific separators.
-        targetpath = targetpath.rstrip("/")
-        targetpath = targetpath.replace("/", os.sep)
-
-        # Create all upper directories.
-        upperdirs = os.path.dirname(targetpath)
-        if upperdirs and not os.path.exists(upperdirs):
-            # Create directories that are not part of the archive with
-            # default permissions.
-            os.makedirs(upperdirs)
-
-        if tarinfo.islnk() or tarinfo.issym():
-            self._dbg(1, "%s -> %s" % (tarinfo.name, tarinfo.linkname))
-        else:
-            self._dbg(1, tarinfo.name)
-
-        if tarinfo.isreg():
-            self.makefile(tarinfo, targetpath)
-        elif tarinfo.isdir():
-            self.makedir(tarinfo, targetpath)
-        elif tarinfo.isfifo():
-            self.makefifo(tarinfo, targetpath)
-        elif tarinfo.ischr() or tarinfo.isblk():
-            self.makedev(tarinfo, targetpath)
-        elif tarinfo.islnk() or tarinfo.issym():
-            self.makelink(tarinfo, targetpath)
-        elif tarinfo.type not in SUPPORTED_TYPES:
-            self.makeunknown(tarinfo, targetpath)
-        else:
-            self.makefile(tarinfo, targetpath)
-
-        self.chown(tarinfo, targetpath)
-        if not tarinfo.issym():
-            self.chmod(tarinfo, targetpath)
-            self.utime(tarinfo, targetpath)
-
-    #--------------------------------------------------------------------------
-    # Below are the different file methods. They are called via
-    # _extract_member() when extract() is called. They can be replaced in a
-    # subclass to implement other functionality.
-
-    def makedir(self, tarinfo, targetpath):
-        """Make a directory called targetpath.
-        """
-        try:
-            # Use a safe mode for the directory, the real mode is set
-            # later in _extract_member().
-            os.mkdir(targetpath, 0700)
-        except EnvironmentError, e:
-            if e.errno != errno.EEXIST:
-                raise
-
-    def makefile(self, tarinfo, targetpath):
-        """Make a file called targetpath.
-        """
-        source = self.extractfile(tarinfo)
-        target = bltn_open(targetpath, "wb")
-        copyfileobj(source, target)
-        source.close()
-        target.close()
-
-    def makeunknown(self, tarinfo, targetpath):
-        """Make a file from a TarInfo object with an unknown type
-           at targetpath.
-        """
-        self.makefile(tarinfo, targetpath)
-        self._dbg(1, "tarfile: Unknown file type %r, " \
-                     "extracted as regular file." % tarinfo.type)
-
-    def makefifo(self, tarinfo, targetpath):
-        """Make a fifo called targetpath.
-        """
-        if hasattr(os, "mkfifo"):
-            os.mkfifo(targetpath)
-        else:
-            raise ExtractError("fifo not supported by system")
-
-    def makedev(self, tarinfo, targetpath):
-        """Make a character or block device called targetpath.
-        """
-        if not hasattr(os, "mknod") or not hasattr(os, "makedev"):
-            raise ExtractError("special devices not supported by system")
-
-        mode = tarinfo.mode
-        if tarinfo.isblk():
-            mode |= stat.S_IFBLK
-        else:
-            mode |= stat.S_IFCHR
-
-        os.mknod(targetpath, mode,
-                 os.makedev(tarinfo.devmajor, tarinfo.devminor))
-
-    def makelink(self, tarinfo, targetpath):
-        """Make a (symbolic) link called targetpath. If it cannot be created
-          (platform limitation), we try to make a copy of the referenced file
-          instead of a link.
-        """
-        if hasattr(os, "symlink") and hasattr(os, "link"):
-            # For systems that support symbolic and hard links.
-            if tarinfo.issym():
-                if os.path.lexists(targetpath):
-                    os.unlink(targetpath)
-                os.symlink(tarinfo.linkname, targetpath)
-            else:
-                # See extract().
-                if os.path.exists(tarinfo._link_target):
-                    if os.path.lexists(targetpath):
-                        os.unlink(targetpath)
-                    os.link(tarinfo._link_target, targetpath)
-                else:
-                    self._extract_member(self._find_link_target(tarinfo), targetpath)
-        else:
-            try:
-                self._extract_member(self._find_link_target(tarinfo), targetpath)
-            except KeyError:
-                raise ExtractError("unable to resolve link inside archive")
-
-    def chown(self, tarinfo, targetpath):
-        """Set owner of targetpath according to tarinfo.
-        """
-        if pwd and hasattr(os, "geteuid") and os.geteuid() == 0:
-            # We have to be root to do so.
-            try:
-                g = grp.getgrnam(tarinfo.gname)[2]
-            except KeyError:
-                try:
-                    g = grp.getgrgid(tarinfo.gid)[2]
-                except KeyError:
-                    g = os.getgid()
-            try:
-                u = pwd.getpwnam(tarinfo.uname)[2]
-            except KeyError:
-                try:
-                    u = pwd.getpwuid(tarinfo.uid)[2]
-                except KeyError:
-                    u = os.getuid()
-            try:
-                if tarinfo.issym() and hasattr(os, "lchown"):
-                    os.lchown(targetpath, u, g)
-                else:
-                    if sys.platform != "os2emx":
-                        os.chown(targetpath, u, g)
-            except EnvironmentError, e:
-                raise ExtractError("could not change owner")
-
-    def chmod(self, tarinfo, targetpath):
-        """Set file permissions of targetpath according to tarinfo.
-        """
-        if hasattr(os, 'chmod'):
-            try:
-                os.chmod(targetpath, tarinfo.mode)
-            except EnvironmentError, e:
-                raise ExtractError("could not change mode")
-
-    def utime(self, tarinfo, targetpath):
-        """Set modification time of targetpath according to tarinfo.
-        """
-        if not hasattr(os, 'utime'):
-            return
-        try:
-            os.utime(targetpath, (tarinfo.mtime, tarinfo.mtime))
-        except EnvironmentError, e:
-            raise ExtractError("could not change modification time")
-
-    #--------------------------------------------------------------------------
-    def next(self):
-        """Return the next member of the archive as a TarInfo object, when
-           TarFile is opened for reading. Return None if there is no more
-           available.
-        """
-        self._check("ra")
-        if self.firstmember is not None:
-            m = self.firstmember
-            self.firstmember = None
-            return m
-
-        # Read the next block.
-        self.fileobj.seek(self.offset)
-        tarinfo = None
-        while True:
-            try:
-                tarinfo = self.tarinfo.fromtarfile(self)
-            except EOFHeaderError, e:
-                if self.ignore_zeros:
-                    self._dbg(2, "0x%X: %s" % (self.offset, e))
-                    self.offset += BLOCKSIZE
-                    continue
-            except InvalidHeaderError, e:
-                if self.ignore_zeros:
-                    self._dbg(2, "0x%X: %s" % (self.offset, e))
-                    self.offset += BLOCKSIZE
-                    continue
-                elif self.offset == 0:
-                    raise ReadError(str(e))
-            except EmptyHeaderError:
-                if self.offset == 0:
-                    raise ReadError("empty file")
-            except TruncatedHeaderError, e:
-                if self.offset == 0:
-                    raise ReadError(str(e))
-            except SubsequentHeaderError, e:
-                raise ReadError(str(e))
-            break
-
-        if tarinfo is not None:
-            self.members.append(tarinfo)
-        else:
-            self._loaded = True
-
-        return tarinfo
-
-    #--------------------------------------------------------------------------
-    # Little helper methods:
-
-    def _getmember(self, name, tarinfo=None, normalize=False):
-        """Find an archive member by name from bottom to top.
-           If tarinfo is given, it is used as the starting point.
-        """
-        # Ensure that all members have been loaded.
-        members = self.getmembers()
-
-        # Limit the member search list up to tarinfo.
-        if tarinfo is not None:
-            members = members[:members.index(tarinfo)]
-
-        if normalize:
-            name = os.path.normpath(name)
-
-        for member in reversed(members):
-            if normalize:
-                member_name = os.path.normpath(member.name)
-            else:
-                member_name = member.name
-
-            if name == member_name:
-                return member
-
-    def _load(self):
-        """Read through the entire archive file and look for readable
-           members.
-        """
-        while True:
-            tarinfo = self.next()
-            if tarinfo is None:
-                break
-        self._loaded = True
-
-    def _check(self, mode=None):
-        """Check if TarFile is still open, and if the operation's mode
-           corresponds to TarFile's mode.
-        """
-        if self.closed:
-            raise IOError("%s is closed" % self.__class__.__name__)
-        if mode is not None and self.mode not in mode:
-            raise IOError("bad operation for mode %r" % self.mode)
-
-    def _find_link_target(self, tarinfo):
-        """Find the target member of a symlink or hardlink member in the
-           archive.
-        """
-        if tarinfo.issym():
-            # Always search the entire archive.
-            linkname = os.path.dirname(tarinfo.name) + "/" + tarinfo.linkname
-            limit = None
-        else:
-            # Search the archive before the link, because a hard link is
-            # just a reference to an already archived file.
-            linkname = tarinfo.linkname
-            limit = tarinfo
-
-        member = self._getmember(linkname, tarinfo=limit, normalize=True)
-        if member is None:
-            raise KeyError("linkname %r not found" % linkname)
-        return member
-
-    def __iter__(self):
-        """Provide an iterator object.
-        """
-        if self._loaded:
-            return iter(self.members)
-        else:
-            return TarIter(self)
-
-    def _dbg(self, level, msg):
-        """Write debugging output to sys.stderr.
-        """
-        if level <= self.debug:
-            print >> sys.stderr, msg
-
-    def __enter__(self):
-        self._check()
-        return self
-
-    def __exit__(self, type, value, traceback):
-        if type is None:
-            self.close()
-        else:
-            # An exception occurred. We must not call close() because
-            # it would try to write end-of-archive blocks and padding.
-            if not self._extfileobj:
-                self.fileobj.close()
-            self.closed = True
-# class TarFile
-
-class TarIter:
-    """Iterator Class.
-
-       for tarinfo in TarFile(...):
-           suite...
-    """
-
-    def __init__(self, tarfile):
-        """Construct a TarIter object.
-        """
-        self.tarfile = tarfile
-        self.index = 0
-    def __iter__(self):
-        """Return iterator object.
-        """
-        return self
-    def next(self):
-        """Return the next item using TarFile's next() method.
-           When all members have been read, set TarFile as _loaded.
-        """
-        # Fix for SF #1100429: Under rare circumstances it can
-        # happen that getmembers() is called during iteration,
-        # which will cause TarIter to stop prematurely.
-        if not self.tarfile._loaded:
-            tarinfo = self.tarfile.next()
-            if not tarinfo:
-                self.tarfile._loaded = True
-                raise StopIteration
-        else:
-            try:
-                tarinfo = self.tarfile.members[self.index]
-            except IndexError:
-                raise StopIteration
-        self.index += 1
-        return tarinfo
-
-# Helper classes for sparse file support
-class _section:
-    """Base class for _data and _hole.
-    """
-    def __init__(self, offset, size):
-        self.offset = offset
-        self.size = size
-    def __contains__(self, offset):
-        return self.offset <= offset < self.offset + self.size
-
-class _data(_section):
-    """Represent a data section in a sparse file.
-    """
-    def __init__(self, offset, size, realpos):
-        _section.__init__(self, offset, size)
-        self.realpos = realpos
-
-class _hole(_section):
-    """Represent a hole section in a sparse file.
-    """
-    pass
-
-class _ringbuffer(list):
-    """Ringbuffer class which increases performance
-       over a regular list.
-    """
-    def __init__(self):
-        self.idx = 0
-    def find(self, offset):
-        idx = self.idx
-        while True:
-            item = self[idx]
-            if offset in item:
-                break
-            idx += 1
-            if idx == len(self):
-                idx = 0
-            if idx == self.idx:
-                # End of File
-                return None
-        self.idx = idx
-        return item
-
-#---------------------------------------------
-# zipfile compatible TarFile class
-#---------------------------------------------
-TAR_PLAIN = 0           # zipfile.ZIP_STORED
-TAR_GZIPPED = 8         # zipfile.ZIP_DEFLATED
-class TarFileCompat:
-    """TarFile class compatible with standard module zipfile's
-       ZipFile class.
-    """
-    def __init__(self, file, mode="r", compression=TAR_PLAIN):
-        from warnings import warnpy3k
-        warnpy3k("the TarFileCompat class has been removed in Python 3.0",
-                stacklevel=2)
-        if compression == TAR_PLAIN:
-            self.tarfile = TarFile.taropen(file, mode)
-        elif compression == TAR_GZIPPED:
-            self.tarfile = TarFile.gzopen(file, mode)
-        else:
-            raise ValueError("unknown compression constant")
-        if mode[0:1] == "r":
-            members = self.tarfile.getmembers()
-            for m in members:
-                m.filename = m.name
-                m.file_size = m.size
-                m.date_time = time.gmtime(m.mtime)[:6]
-    def namelist(self):
-        return map(lambda m: m.name, self.infolist())
-    def infolist(self):
-        return filter(lambda m: m.type in REGULAR_TYPES,
-                      self.tarfile.getmembers())
-    def printdir(self):
-        self.tarfile.list()
-    def testzip(self):
-        return
-    def getinfo(self, name):
-        return self.tarfile.getmember(name)
-    def read(self, name):
-        return self.tarfile.extractfile(self.tarfile.getmember(name)).read()
-    def write(self, filename, arcname=None, compress_type=None):
-        self.tarfile.add(filename, arcname)
-    def writestr(self, zinfo, bytes):
-        try:
-            from cStringIO import StringIO
-        except ImportError:
-            from StringIO import StringIO
-        import calendar
-        tinfo = TarInfo(zinfo.filename)
-        tinfo.size = len(bytes)
-        tinfo.mtime = calendar.timegm(zinfo.date_time)
-        self.tarfile.addfile(tinfo, StringIO(bytes))
-    def close(self):
-        self.tarfile.close()
-#class TarFileCompat
-
-#--------------------
-# exported functions
-#--------------------
-def is_tarfile(name):
-    """Return True if name points to a tar archive that we
-       are able to handle, else return False.
-    """
-    try:
-        t = open(name)
-        t.close()
-        return True
-    except TarError:
-        return False
-
-bltn_open = open
-open = TarFile.open
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/telnetlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/telnetlib.py
deleted file mode 100644
index 593418c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/telnetlib.py
+++ /dev/null
@@ -1,657 +0,0 @@
-r"""TELNET client class.
-
-Based on RFC 854: TELNET Protocol Specification, by J. Postel and
-J. Reynolds
-
-Example:
-
->>> from telnetlib import Telnet
->>> tn = Telnet('www.python.org', 79)   # connect to finger port
->>> tn.write('guido\r\n')
->>> print tn.read_all()
-Login       Name               TTY         Idle    When    Where
-guido    Guido van Rossum      pts/2        <Dec  2 11:10> snag.cnri.reston..
-
->>>
-
-Note that read_all() won't read until eof -- it just reads some data
--- but it guarantees to read at least one byte unless EOF is hit.
-
-It is possible to pass a Telnet object to select.select() in order to
-wait until more data is available.  Note that in this case,
-read_eager() may return '' even if there was data on the socket,
-because the protocol negotiation may have eaten the data.  This is why
-EOFError is needed in some cases to distinguish between "no data" and
-"connection closed" (since the socket also appears ready for reading
-when it is closed).
-
-To do:
-- option negotiation
-- timeout should be intrinsic to the connection object instead of an
-  option on one of the read calls only
-
-"""
-
-
-# Imported modules
-import sys
-import socket
-import select
-
-__all__ = ["Telnet"]
-
-# Tunable parameters
-DEBUGLEVEL = 0
-
-# Telnet protocol defaults
-TELNET_PORT = 23
-
-# Telnet protocol characters (don't change)
-IAC  = chr(255) # "Interpret As Command"
-DONT = chr(254)
-DO   = chr(253)
-WONT = chr(252)
-WILL = chr(251)
-theNULL = chr(0)
-
-SE  = chr(240)  # Subnegotiation End
-NOP = chr(241)  # No Operation
-DM  = chr(242)  # Data Mark
-BRK = chr(243)  # Break
-IP  = chr(244)  # Interrupt process
-AO  = chr(245)  # Abort output
-AYT = chr(246)  # Are You There
-EC  = chr(247)  # Erase Character
-EL  = chr(248)  # Erase Line
-GA  = chr(249)  # Go Ahead
-SB =  chr(250)  # Subnegotiation Begin
-
-
-# Telnet protocol options code (don't change)
-# These ones all come from arpa/telnet.h
-BINARY = chr(0) # 8-bit data path
-ECHO = chr(1) # echo
-RCP = chr(2) # prepare to reconnect
-SGA = chr(3) # suppress go ahead
-NAMS = chr(4) # approximate message size
-STATUS = chr(5) # give status
-TM = chr(6) # timing mark
-RCTE = chr(7) # remote controlled transmission and echo
-NAOL = chr(8) # negotiate about output line width
-NAOP = chr(9) # negotiate about output page size
-NAOCRD = chr(10) # negotiate about CR disposition
-NAOHTS = chr(11) # negotiate about horizontal tabstops
-NAOHTD = chr(12) # negotiate about horizontal tab disposition
-NAOFFD = chr(13) # negotiate about formfeed disposition
-NAOVTS = chr(14) # negotiate about vertical tab stops
-NAOVTD = chr(15) # negotiate about vertical tab disposition
-NAOLFD = chr(16) # negotiate about output LF disposition
-XASCII = chr(17) # extended ascii character set
-LOGOUT = chr(18) # force logout
-BM = chr(19) # byte macro
-DET = chr(20) # data entry terminal
-SUPDUP = chr(21) # supdup protocol
-SUPDUPOUTPUT = chr(22) # supdup output
-SNDLOC = chr(23) # send location
-TTYPE = chr(24) # terminal type
-EOR = chr(25) # end or record
-TUID = chr(26) # TACACS user identification
-OUTMRK = chr(27) # output marking
-TTYLOC = chr(28) # terminal location number
-VT3270REGIME = chr(29) # 3270 regime
-X3PAD = chr(30) # X.3 PAD
-NAWS = chr(31) # window size
-TSPEED = chr(32) # terminal speed
-LFLOW = chr(33) # remote flow control
-LINEMODE = chr(34) # Linemode option
-XDISPLOC = chr(35) # X Display Location
-OLD_ENVIRON = chr(36) # Old - Environment variables
-AUTHENTICATION = chr(37) # Authenticate
-ENCRYPT = chr(38) # Encryption option
-NEW_ENVIRON = chr(39) # New - Environment variables
-# the following ones come from
-# http://www.iana.org/assignments/telnet-options
-# Unfortunately, that document does not assign identifiers
-# to all of them, so we are making them up
-TN3270E = chr(40) # TN3270E
-XAUTH = chr(41) # XAUTH
-CHARSET = chr(42) # CHARSET
-RSP = chr(43) # Telnet Remote Serial Port
-COM_PORT_OPTION = chr(44) # Com Port Control Option
-SUPPRESS_LOCAL_ECHO = chr(45) # Telnet Suppress Local Echo
-TLS = chr(46) # Telnet Start TLS
-KERMIT = chr(47) # KERMIT
-SEND_URL = chr(48) # SEND-URL
-FORWARD_X = chr(49) # FORWARD_X
-PRAGMA_LOGON = chr(138) # TELOPT PRAGMA LOGON
-SSPI_LOGON = chr(139) # TELOPT SSPI LOGON
-PRAGMA_HEARTBEAT = chr(140) # TELOPT PRAGMA HEARTBEAT
-EXOPL = chr(255) # Extended-Options-List
-NOOPT = chr(0)
-
-class Telnet:
-
-    """Telnet interface class.
-
-    An instance of this class represents a connection to a telnet
-    server.  The instance is initially not connected; the open()
-    method must be used to establish a connection.  Alternatively, the
-    host name and optional port number can be passed to the
-    constructor, too.
-
-    Don't try to reopen an already connected instance.
-
-    This class has many read_*() methods.  Note that some of them
-    raise EOFError when the end of the connection is read, because
-    they can return an empty string for other reasons.  See the
-    individual doc strings.
-
-    read_until(expected, [timeout])
-        Read until the expected string has been seen, or a timeout is
-        hit (default is no timeout); may block.
-
-    read_all()
-        Read all data until EOF; may block.
-
-    read_some()
-        Read at least one byte or EOF; may block.
-
-    read_very_eager()
-        Read all data available already queued or on the socket,
-        without blocking.
-
-    read_eager()
-        Read either data already queued or some data available on the
-        socket, without blocking.
-
-    read_lazy()
-        Read all data in the raw queue (processing it first), without
-        doing any socket I/O.
-
-    read_very_lazy()
-        Reads all data in the cooked queue, without doing any socket
-        I/O.
-
-    read_sb_data()
-        Reads available data between SB ... SE sequence. Don't block.
-
-    set_option_negotiation_callback(callback)
-        Each time a telnet option is read on the input flow, this callback
-        (if set) is called with the following parameters :
-        callback(telnet socket, command, option)
-            option will be chr(0) when there is no option.
-        No other action is done afterwards by telnetlib.
-
-    """
-
-    def __init__(self, host=None, port=0,
-                 timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
-        """Constructor.
-
-        When called without arguments, create an unconnected instance.
-        With a hostname argument, it connects the instance; port number
-        and timeout are optional.
-        """
-        self.debuglevel = DEBUGLEVEL
-        self.host = host
-        self.port = port
-        self.timeout = timeout
-        self.sock = None
-        self.rawq = ''
-        self.irawq = 0
-        self.cookedq = ''
-        self.eof = 0
-        self.iacseq = '' # Buffer for IAC sequence.
-        self.sb = 0 # flag for SB and SE sequence.
-        self.sbdataq = ''
-        self.option_callback = None
-        if host is not None:
-            self.open(host, port, timeout)
-
-    def open(self, host, port=0, timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
-        """Connect to a host.
-
-        The optional second argument is the port number, which
-        defaults to the standard telnet port (23).
-
-        Don't try to reopen an already connected instance.
-        """
-        self.eof = 0
-        if not port:
-            port = TELNET_PORT
-        self.host = host
-        self.port = port
-        self.timeout = timeout
-        self.sock = socket.create_connection((host, port), timeout)
-
-    def __del__(self):
-        """Destructor -- close the connection."""
-        self.close()
-
-    def msg(self, msg, *args):
-        """Print a debug message, when the debug level is > 0.
-
-        If extra arguments are present, they are substituted in the
-        message using the standard string formatting operator.
-
-        """
-        if self.debuglevel > 0:
-            print 'Telnet(%s,%s):' % (self.host, self.port),
-            if args:
-                print msg % args
-            else:
-                print msg
-
-    def set_debuglevel(self, debuglevel):
-        """Set the debug level.
-
-        The higher it is, the more debug output you get (on sys.stdout).
-
-        """
-        self.debuglevel = debuglevel
-
-    def close(self):
-        """Close the connection."""
-        if self.sock:
-            self.sock.close()
-        self.sock = 0
-        self.eof = 1
-        self.iacseq = ''
-        self.sb = 0
-
-    def get_socket(self):
-        """Return the socket object used internally."""
-        return self.sock
-
-    def fileno(self):
-        """Return the fileno() of the socket object used internally."""
-        return self.sock.fileno()
-
-    def write(self, buffer):
-        """Write a string to the socket, doubling any IAC characters.
-
-        Can block if the connection is blocked.  May raise
-        socket.error if the connection is closed.
-
-        """
-        if IAC in buffer:
-            buffer = buffer.replace(IAC, IAC+IAC)
-        self.msg("send %r", buffer)
-        self.sock.sendall(buffer)
-
-    def read_until(self, match, timeout=None):
-        """Read until a given string is encountered or until timeout.
-
-        When no match is found, return whatever is available instead,
-        possibly the empty string.  Raise EOFError if the connection
-        is closed and no cooked data is available.
-
-        """
-        n = len(match)
-        self.process_rawq()
-        i = self.cookedq.find(match)
-        if i >= 0:
-            i = i+n
-            buf = self.cookedq[:i]
-            self.cookedq = self.cookedq[i:]
-            return buf
-        s_reply = ([self], [], [])
-        s_args = s_reply
-        if timeout is not None:
-            s_args = s_args + (timeout,)
-            from time import time
-            time_start = time()
-        while not self.eof and select.select(*s_args) == s_reply:
-            i = max(0, len(self.cookedq)-n)
-            self.fill_rawq()
-            self.process_rawq()
-            i = self.cookedq.find(match, i)
-            if i >= 0:
-                i = i+n
-                buf = self.cookedq[:i]
-                self.cookedq = self.cookedq[i:]
-                return buf
-            if timeout is not None:
-                elapsed = time() - time_start
-                if elapsed >= timeout:
-                    break
-                s_args = s_reply + (timeout-elapsed,)
-        return self.read_very_lazy()
-
-    def read_all(self):
-        """Read all data until EOF; block until connection closed."""
-        self.process_rawq()
-        while not self.eof:
-            self.fill_rawq()
-            self.process_rawq()
-        buf = self.cookedq
-        self.cookedq = ''
-        return buf
-
-    def read_some(self):
-        """Read at least one byte of cooked data unless EOF is hit.
-
-        Return '' if EOF is hit.  Block if no data is immediately
-        available.
-
-        """
-        self.process_rawq()
-        while not self.cookedq and not self.eof:
-            self.fill_rawq()
-            self.process_rawq()
-        buf = self.cookedq
-        self.cookedq = ''
-        return buf
-
-    def read_very_eager(self):
-        """Read everything that's possible without blocking in I/O (eager).
-
-        Raise EOFError if connection closed and no cooked data
-        available.  Return '' if no cooked data available otherwise.
-        Don't block unless in the midst of an IAC sequence.
-
-        """
-        self.process_rawq()
-        while not self.eof and self.sock_avail():
-            self.fill_rawq()
-            self.process_rawq()
-        return self.read_very_lazy()
-
-    def read_eager(self):
-        """Read readily available data.
-
-        Raise EOFError if connection closed and no cooked data
-        available.  Return '' if no cooked data available otherwise.
-        Don't block unless in the midst of an IAC sequence.
-
-        """
-        self.process_rawq()
-        while not self.cookedq and not self.eof and self.sock_avail():
-            self.fill_rawq()
-            self.process_rawq()
-        return self.read_very_lazy()
-
-    def read_lazy(self):
-        """Process and return data that's already in the queues (lazy).
-
-        Raise EOFError if connection closed and no data available.
-        Return '' if no cooked data available otherwise.  Don't block
-        unless in the midst of an IAC sequence.
-
-        """
-        self.process_rawq()
-        return self.read_very_lazy()
-
-    def read_very_lazy(self):
-        """Return any data available in the cooked queue (very lazy).
-
-        Raise EOFError if connection closed and no data available.
-        Return '' if no cooked data available otherwise.  Don't block.
-
-        """
-        buf = self.cookedq
-        self.cookedq = ''
-        if not buf and self.eof and not self.rawq:
-            raise EOFError, 'telnet connection closed'
-        return buf
-
-    def read_sb_data(self):
-        """Return any data available in the SB ... SE queue.
-
-        Return '' if no SB ... SE available. Should only be called
-        after seeing a SB or SE command. When a new SB command is
-        found, old unread SB data will be discarded. Don't block.
-
-        """
-        buf = self.sbdataq
-        self.sbdataq = ''
-        return buf
-
-    def set_option_negotiation_callback(self, callback):
-        """Provide a callback function called after each receipt of a telnet option."""
-        self.option_callback = callback
-
-    def process_rawq(self):
-        """Transfer from raw queue to cooked queue.
-
-        Set self.eof when connection is closed.  Don't block unless in
-        the midst of an IAC sequence.
-
-        """
-        buf = ['', '']
-        try:
-            while self.rawq:
-                c = self.rawq_getchar()
-                if not self.iacseq:
-                    if c == theNULL:
-                        continue
-                    if c == "\021":
-                        continue
-                    if c != IAC:
-                        buf[self.sb] = buf[self.sb] + c
-                        continue
-                    else:
-                        self.iacseq += c
-                elif len(self.iacseq) == 1:
-                    # 'IAC: IAC CMD [OPTION only for WILL/WONT/DO/DONT]'
-                    if c in (DO, DONT, WILL, WONT):
-                        self.iacseq += c
-                        continue
-
-                    self.iacseq = ''
-                    if c == IAC:
-                        buf[self.sb] = buf[self.sb] + c
-                    else:
-                        if c == SB: # SB ... SE start.
-                            self.sb = 1
-                            self.sbdataq = ''
-                        elif c == SE:
-                            self.sb = 0
-                            self.sbdataq = self.sbdataq + buf[1]
-                            buf[1] = ''
-                        if self.option_callback:
-                            # Callback is supposed to look into
-                            # the sbdataq
-                            self.option_callback(self.sock, c, NOOPT)
-                        else:
-                            # We can't offer automatic processing of
-                            # suboptions. Alas, we should not get any
-                            # unless we did a WILL/DO before.
-                            self.msg('IAC %d not recognized' % ord(c))
-                elif len(self.iacseq) == 2:
-                    cmd = self.iacseq[1]
-                    self.iacseq = ''
-                    opt = c
-                    if cmd in (DO, DONT):
-                        self.msg('IAC %s %d',
-                            cmd == DO and 'DO' or 'DONT', ord(opt))
-                        if self.option_callback:
-                            self.option_callback(self.sock, cmd, opt)
-                        else:
-                            self.sock.sendall(IAC + WONT + opt)
-                    elif cmd in (WILL, WONT):
-                        self.msg('IAC %s %d',
-                            cmd == WILL and 'WILL' or 'WONT', ord(opt))
-                        if self.option_callback:
-                            self.option_callback(self.sock, cmd, opt)
-                        else:
-                            self.sock.sendall(IAC + DONT + opt)
-        except EOFError: # raised by self.rawq_getchar()
-            self.iacseq = '' # Reset on EOF
-            self.sb = 0
-            pass
-        self.cookedq = self.cookedq + buf[0]
-        self.sbdataq = self.sbdataq + buf[1]
-
-    def rawq_getchar(self):
-        """Get next char from raw queue.
-
-        Block if no data is immediately available.  Raise EOFError
-        when connection is closed.
-
-        """
-        if not self.rawq:
-            self.fill_rawq()
-            if self.eof:
-                raise EOFError
-        c = self.rawq[self.irawq]
-        self.irawq = self.irawq + 1
-        if self.irawq >= len(self.rawq):
-            self.rawq = ''
-            self.irawq = 0
-        return c
-
-    def fill_rawq(self):
-        """Fill raw queue from exactly one recv() system call.
-
-        Block if no data is immediately available.  Set self.eof when
-        connection is closed.
-
-        """
-        if self.irawq >= len(self.rawq):
-            self.rawq = ''
-            self.irawq = 0
-        # The buffer size should be fairly small so as to avoid quadratic
-        # behavior in process_rawq() above
-        buf = self.sock.recv(50)
-        self.msg("recv %r", buf)
-        self.eof = (not buf)
-        self.rawq = self.rawq + buf
-
-    def sock_avail(self):
-        """Test whether data is available on the socket."""
-        return select.select([self], [], [], 0) == ([self], [], [])
-
-    def interact(self):
-        """Interaction function, emulates a very dumb telnet client."""
-        if sys.platform == "win32":
-            self.mt_interact()
-            return
-        while 1:
-            rfd, wfd, xfd = select.select([self, sys.stdin], [], [])
-            if self in rfd:
-                try:
-                    text = self.read_eager()
-                except EOFError:
-                    print '*** Connection closed by remote host ***'
-                    break
-                if text:
-                    sys.stdout.write(text)
-                    sys.stdout.flush()
-            if sys.stdin in rfd:
-                line = sys.stdin.readline()
-                if not line:
-                    break
-                self.write(line)
-
-    def mt_interact(self):
-        """Multithreaded version of interact()."""
-        import thread
-        thread.start_new_thread(self.listener, ())
-        while 1:
-            line = sys.stdin.readline()
-            if not line:
-                break
-            self.write(line)
-
-    def listener(self):
-        """Helper for mt_interact() -- this executes in the other thread."""
-        while 1:
-            try:
-                data = self.read_eager()
-            except EOFError:
-                print '*** Connection closed by remote host ***'
-                return
-            if data:
-                sys.stdout.write(data)
-            else:
-                sys.stdout.flush()
-
-    def expect(self, list, timeout=None):
-        """Read until one from a list of a regular expressions matches.
-
-        The first argument is a list of regular expressions, either
-        compiled (re.RegexObject instances) or uncompiled (strings).
-        The optional second argument is a timeout, in seconds; default
-        is no timeout.
-
-        Return a tuple of three items: the index in the list of the
-        first regular expression that matches; the match object
-        returned; and the text read up till and including the match.
-
-        If EOF is read and no text was read, raise EOFError.
-        Otherwise, when nothing matches, return (-1, None, text) where
-        text is the text received so far (may be the empty string if a
-        timeout happened).
-
-        If a regular expression ends with a greedy match (e.g. '.*')
-        or if more than one expression can match the same input, the
-        results are undeterministic, and may depend on the I/O timing.
-
-        """
-        re = None
-        list = list[:]
-        indices = range(len(list))
-        for i in indices:
-            if not hasattr(list[i], "search"):
-                if not re: import re
-                list[i] = re.compile(list[i])
-        if timeout is not None:
-            from time import time
-            time_start = time()
-        while 1:
-            self.process_rawq()
-            for i in indices:
-                m = list[i].search(self.cookedq)
-                if m:
-                    e = m.end()
-                    text = self.cookedq[:e]
-                    self.cookedq = self.cookedq[e:]
-                    return (i, m, text)
-            if self.eof:
-                break
-            if timeout is not None:
-                elapsed = time() - time_start
-                if elapsed >= timeout:
-                    break
-                s_args = ([self.fileno()], [], [], timeout-elapsed)
-                r, w, x = select.select(*s_args)
-                if not r:
-                    break
-            self.fill_rawq()
-        text = self.read_very_lazy()
-        if not text and self.eof:
-            raise EOFError
-        return (-1, None, text)
-
-
-def test():
-    """Test program for telnetlib.
-
-    Usage: python telnetlib.py [-d] ... [host [port]]
-
-    Default host is localhost; default port is 23.
-
-    """
-    debuglevel = 0
-    while sys.argv[1:] and sys.argv[1] == '-d':
-        debuglevel = debuglevel+1
-        del sys.argv[1]
-    host = 'localhost'
-    if sys.argv[1:]:
-        host = sys.argv[1]
-    port = 0
-    if sys.argv[2:]:
-        portstr = sys.argv[2]
-        try:
-            port = int(portstr)
-        except ValueError:
-            port = socket.getservbyname(portstr, 'tcp')
-    tn = Telnet()
-    tn.set_debuglevel(debuglevel)
-    tn.open(host, port, timeout=0.5)
-    tn.interact()
-    tn.close()
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/tempfile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/tempfile.py
deleted file mode 100644
index b5262a8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/tempfile.py
+++ /dev/null
@@ -1,606 +0,0 @@
-"""Temporary files.
-
-This module provides generic, low- and high-level interfaces for
-creating temporary files and directories.  The interfaces listed
-as "safe" just below can be used without fear of race conditions.
-Those listed as "unsafe" cannot, and are provided for backward
-compatibility only.
-
-This module also provides some data items to the user:
-
-  TMP_MAX  - maximum number of names that will be tried before
-             giving up.
-  template - the default prefix for all temporary names.
-             You may change this to control the default prefix.
-  tempdir  - If this is set to a string before the first use of
-             any routine from this module, it will be considered as
-             another candidate location to store temporary files.
-"""
-
-__all__ = [
-    "NamedTemporaryFile", "TemporaryFile", # high level safe interfaces
-    "SpooledTemporaryFile",
-    "mkstemp", "mkdtemp",                  # low level safe interfaces
-    "mktemp",                              # deprecated unsafe interface
-    "TMP_MAX", "gettempprefix",            # constants
-    "tempdir", "gettempdir"
-   ]
-
-
-# Imports.
-
-import os as _os
-import errno as _errno
-from random import Random as _Random
-
-try:
-    from cStringIO import StringIO as _StringIO
-except ImportError:
-    from StringIO import StringIO as _StringIO
-
-try:
-    import fcntl as _fcntl
-except ImportError:
-    def _set_cloexec(fd):
-        pass
-else:
-    def _set_cloexec(fd):
-        try:
-            flags = _fcntl.fcntl(fd, _fcntl.F_GETFD, 0)
-        except IOError:
-            pass
-        else:
-            # flags read successfully, modify
-            flags |= _fcntl.FD_CLOEXEC
-            _fcntl.fcntl(fd, _fcntl.F_SETFD, flags)
-
-
-try:
-    import thread as _thread
-except ImportError:
-    import dummy_thread as _thread
-_allocate_lock = _thread.allocate_lock
-
-_text_openflags = _os.O_RDWR | _os.O_CREAT | _os.O_EXCL
-if hasattr(_os, 'O_NOINHERIT'):
-    _text_openflags |= _os.O_NOINHERIT
-if hasattr(_os, 'O_NOFOLLOW'):
-    _text_openflags |= _os.O_NOFOLLOW
-
-_bin_openflags = _text_openflags
-if hasattr(_os, 'O_BINARY'):
-    _bin_openflags |= _os.O_BINARY
-
-if hasattr(_os, 'TMP_MAX'):
-    TMP_MAX = _os.TMP_MAX
-else:
-    TMP_MAX = 10000
-
-template = "tmp"
-
-# Internal routines.
-
-_once_lock = _allocate_lock()
-
-if hasattr(_os, "lstat"):
-    _stat = _os.lstat
-elif hasattr(_os, "stat"):
-    _stat = _os.stat
-else:
-    # Fallback.  All we need is something that raises os.error if the
-    # file doesn't exist.
-    def _stat(fn):
-        try:
-            f = open(fn)
-        except IOError:
-            raise _os.error
-        f.close()
-
-def _exists(fn):
-    try:
-        _stat(fn)
-    except _os.error:
-        return False
-    else:
-        return True
-
-class _RandomNameSequence:
-    """An instance of _RandomNameSequence generates an endless
-    sequence of unpredictable strings which can safely be incorporated
-    into file names.  Each string is six characters long.  Multiple
-    threads can safely use the same instance at the same time.
-
-    _RandomNameSequence is an iterator."""
-
-    characters = ("abcdefghijklmnopqrstuvwxyz" +
-                  "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
-                  "0123456789_")
-
-    def __init__(self):
-        self.mutex = _allocate_lock()
-        self.rng = _Random()
-        self.normcase = _os.path.normcase
-
-    def __iter__(self):
-        return self
-
-    def next(self):
-        m = self.mutex
-        c = self.characters
-        choose = self.rng.choice
-
-        m.acquire()
-        try:
-            letters = [choose(c) for dummy in "123456"]
-        finally:
-            m.release()
-
-        return self.normcase(''.join(letters))
-
-def _candidate_tempdir_list():
-    """Generate a list of candidate temporary directories which
-    _get_default_tempdir will try."""
-
-    dirlist = []
-
-    # First, try the environment.
-    for envname in 'TMPDIR', 'TEMP', 'TMP':
-        dirname = _os.getenv(envname)
-        if dirname: dirlist.append(dirname)
-
-    # Failing that, try OS-specific locations.
-    if _os.name == 'riscos':
-        dirname = _os.getenv('Wimp$ScrapDir')
-        if dirname: dirlist.append(dirname)
-    elif _os.name == 'nt':
-        dirlist.extend([ r'c:\temp', r'c:\tmp', r'\temp', r'\tmp' ])
-    else:
-        dirlist.extend([ '/tmp', '/var/tmp', '/usr/tmp' ])
-
-    # As a last resort, the current directory.
-    try:
-        dirlist.append(_os.getcwd())
-    except (AttributeError, _os.error):
-        dirlist.append(_os.curdir)
-
-    return dirlist
-
-def _get_default_tempdir():
-    """Calculate the default directory to use for temporary files.
-    This routine should be called exactly once.
-
-    We determine whether or not a candidate temp dir is usable by
-    trying to create and write to a file in that directory.  If this
-    is successful, the test file is deleted.  To prevent denial of
-    service, the name of the test file must be randomized."""
-
-    namer = _RandomNameSequence()
-    dirlist = _candidate_tempdir_list()
-    flags = _text_openflags
-
-    for dir in dirlist:
-        if dir != _os.curdir:
-            dir = _os.path.normcase(_os.path.abspath(dir))
-        # Try only a few names per directory.
-        for seq in xrange(100):
-            name = namer.next()
-            filename = _os.path.join(dir, name)
-            try:
-                fd = _os.open(filename, flags, 0600)
-                fp = _os.fdopen(fd, 'w')
-                fp.write('blat')
-                fp.close()
-                _os.unlink(filename)
-                del fp, fd
-                return dir
-            except (OSError, IOError), e:
-                if e[0] != _errno.EEXIST:
-                    break # no point trying more names in this directory
-                pass
-    raise IOError, (_errno.ENOENT,
-                    ("No usable temporary directory found in %s" % dirlist))
-
-_name_sequence = None
-
-def _get_candidate_names():
-    """Common setup sequence for all user-callable interfaces."""
-
-    global _name_sequence
-    if _name_sequence is None:
-        _once_lock.acquire()
-        try:
-            if _name_sequence is None:
-                _name_sequence = _RandomNameSequence()
-        finally:
-            _once_lock.release()
-    return _name_sequence
-
-
-def _mkstemp_inner(dir, pre, suf, flags):
-    """Code common to mkstemp, TemporaryFile, and NamedTemporaryFile."""
-
-    names = _get_candidate_names()
-
-    for seq in xrange(TMP_MAX):
-        name = names.next()
-        file = _os.path.join(dir, pre + name + suf)
-        try:
-            fd = _os.open(file, flags, 0600)
-            _set_cloexec(fd)
-            return (fd, _os.path.abspath(file))
-        except OSError, e:
-            if e.errno == _errno.EEXIST:
-                continue # try again
-            raise
-
-    raise IOError, (_errno.EEXIST, "No usable temporary file name found")
-
-
-# User visible interfaces.
-
-def gettempprefix():
-    """Accessor for tempdir.template."""
-    return template
-
-tempdir = None
-
-def gettempdir():
-    """Accessor for tempfile.tempdir."""
-    global tempdir
-    if tempdir is None:
-        _once_lock.acquire()
-        try:
-            if tempdir is None:
-                tempdir = _get_default_tempdir()
-        finally:
-            _once_lock.release()
-    return tempdir
-
-def mkstemp(suffix="", prefix=template, dir=None, text=False):
-    """User-callable function to create and return a unique temporary
-    file.  The return value is a pair (fd, name) where fd is the
-    file descriptor returned by os.open, and name is the filename.
-
-    If 'suffix' is specified, the file name will end with that suffix,
-    otherwise there will be no suffix.
-
-    If 'prefix' is specified, the file name will begin with that prefix,
-    otherwise a default prefix is used.
-
-    If 'dir' is specified, the file will be created in that directory,
-    otherwise a default directory is used.
-
-    If 'text' is specified and true, the file is opened in text
-    mode.  Else (the default) the file is opened in binary mode.  On
-    some operating systems, this makes no difference.
-
-    The file is readable and writable only by the creating user ID.
-    If the operating system uses permission bits to indicate whether a
-    file is executable, the file is executable by no one. The file
-    descriptor is not inherited by children of this process.
-
-    Caller is responsible for deleting the file when done with it.
-    """
-
-    if dir is None:
-        dir = gettempdir()
-
-    if text:
-        flags = _text_openflags
-    else:
-        flags = _bin_openflags
-
-    return _mkstemp_inner(dir, prefix, suffix, flags)
-
-
-def mkdtemp(suffix="", prefix=template, dir=None):
-    """User-callable function to create and return a unique temporary
-    directory.  The return value is the pathname of the directory.
-
-    Arguments are as for mkstemp, except that the 'text' argument is
-    not accepted.
-
-    The directory is readable, writable, and searchable only by the
-    creating user.
-
-    Caller is responsible for deleting the directory when done with it.
-    """
-
-    if dir is None:
-        dir = gettempdir()
-
-    names = _get_candidate_names()
-
-    for seq in xrange(TMP_MAX):
-        name = names.next()
-        file = _os.path.join(dir, prefix + name + suffix)
-        try:
-            _os.mkdir(file, 0700)
-            return file
-        except OSError, e:
-            if e.errno == _errno.EEXIST:
-                continue # try again
-            raise
-
-    raise IOError, (_errno.EEXIST, "No usable temporary directory name found")
-
-def mktemp(suffix="", prefix=template, dir=None):
-    """User-callable function to return a unique temporary file name.  The
-    file is not created.
-
-    Arguments are as for mkstemp, except that the 'text' argument is
-    not accepted.
-
-    This function is unsafe and should not be used.  The file name
-    refers to a file that did not exist at some point, but by the time
-    you get around to creating it, someone else may have beaten you to
-    the punch.
-    """
-
-##    from warnings import warn as _warn
-##    _warn("mktemp is a potential security risk to your program",
-##          RuntimeWarning, stacklevel=2)
-
-    if dir is None:
-        dir = gettempdir()
-
-    names = _get_candidate_names()
-    for seq in xrange(TMP_MAX):
-        name = names.next()
-        file = _os.path.join(dir, prefix + name + suffix)
-        if not _exists(file):
-            return file
-
-    raise IOError, (_errno.EEXIST, "No usable temporary filename found")
-
-
-class _TemporaryFileWrapper:
-    """Temporary file wrapper
-
-    This class provides a wrapper around files opened for
-    temporary use.  In particular, it seeks to automatically
-    remove the file when it is no longer needed.
-    """
-
-    def __init__(self, file, name, delete=True):
-        self.file = file
-        self.name = name
-        self.close_called = False
-        self.delete = delete
-
-    def __getattr__(self, name):
-        # Attribute lookups are delegated to the underlying file
-        # and cached for non-numeric results
-        # (i.e. methods are cached, closed and friends are not)
-        file = self.__dict__['file']
-        a = getattr(file, name)
-        if not issubclass(type(a), type(0)):
-            setattr(self, name, a)
-        return a
-
-    # The underlying __enter__ method returns the wrong object
-    # (self.file) so override it to return the wrapper
-    def __enter__(self):
-        self.file.__enter__()
-        return 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':
-        # 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
-        # name TemporaryFileWrapper may also get None'd out before
-        # __del__ is called.
-        unlink = _os.unlink
-
-        def close(self):
-            if not self.close_called:
-                self.close_called = True
-                self.file.close()
-                if self.delete:
-                    self.unlink(self.name)
-
-        def __del__(self):
-            self.close()
-
-        # Need to trap __exit__ as well to ensure the file gets
-        # deleted when used in a with statement
-        def __exit__(self, exc, value, tb):
-            result = self.file.__exit__(exc, value, tb)
-            self.close()
-            return result
-    else:
-        def __exit__(self, exc, value, tb):
-            self.file.__exit__(exc, value, tb)
-
-
-def NamedTemporaryFile(mode='w+b', bufsize=-1, suffix="",
-                       prefix=template, dir=None, delete=True):
-    """Create and return a temporary file.
-    Arguments:
-    'prefix', 'suffix', 'dir' -- as for mkstemp.
-    'mode' -- the mode argument to os.fdopen (default "w+b").
-    'bufsize' -- the buffer size argument to os.fdopen (default -1).
-    'delete' -- whether the file is deleted on close (default True).
-    The file is created as mkstemp() would do it.
-
-    Returns an object with a file-like interface; the name of the file
-    is accessible as file.name.  The file will be automatically deleted
-    when it is closed unless the 'delete' argument is set to False.
-    """
-
-    if dir is None:
-        dir = gettempdir()
-
-    if 'b' in mode:
-        flags = _bin_openflags
-    else:
-        flags = _text_openflags
-
-    # Setting O_TEMPORARY in the flags causes the OS to delete
-    # the file when it is closed.  This is only supported by Windows.
-    if _os.name == 'nt' and delete:
-        flags |= _os.O_TEMPORARY
-
-    (fd, name) = _mkstemp_inner(dir, prefix, suffix, flags)
-    file = _os.fdopen(fd, mode, bufsize)
-    return _TemporaryFileWrapper(file, name, delete)
-
-if _os.name != 'posix' or _os.sys.platform == 'cygwin':
-    # On non-POSIX and Cygwin systems, assume that we cannot unlink a file
-    # while it is open.
-    TemporaryFile = NamedTemporaryFile
-
-else:
-    def TemporaryFile(mode='w+b', bufsize=-1, suffix="",
-                      prefix=template, dir=None):
-        """Create and return a temporary file.
-        Arguments:
-        'prefix', 'suffix', 'dir' -- as for mkstemp.
-        'mode' -- the mode argument to os.fdopen (default "w+b").
-        'bufsize' -- the buffer size argument to os.fdopen (default -1).
-        The file is created as mkstemp() would do it.
-
-        Returns an object with a file-like interface.  The file has no
-        name, and will cease to exist when it is closed.
-        """
-
-        if dir is None:
-            dir = gettempdir()
-
-        if 'b' in mode:
-            flags = _bin_openflags
-        else:
-            flags = _text_openflags
-
-        (fd, name) = _mkstemp_inner(dir, prefix, suffix, flags)
-        try:
-            _os.unlink(name)
-            return _os.fdopen(fd, mode, bufsize)
-        except:
-            _os.close(fd)
-            raise
-
-class SpooledTemporaryFile:
-    """Temporary file wrapper, specialized to switch from
-    StringIO to a real file when it exceeds a certain size or
-    when a fileno is needed.
-    """
-    _rolled = False
-
-    def __init__(self, max_size=0, mode='w+b', bufsize=-1,
-                 suffix="", prefix=template, dir=None):
-        self._file = _StringIO()
-        self._max_size = max_size
-        self._rolled = False
-        self._TemporaryFileArgs = (mode, bufsize, suffix, prefix, dir)
-
-    def _check(self, file):
-        if self._rolled: return
-        max_size = self._max_size
-        if max_size and file.tell() > max_size:
-            self.rollover()
-
-    def rollover(self):
-        if self._rolled: return
-        file = self._file
-        newfile = self._file = TemporaryFile(*self._TemporaryFileArgs)
-        del self._TemporaryFileArgs
-
-        newfile.write(file.getvalue())
-        newfile.seek(file.tell(), 0)
-
-        self._rolled = True
-
-    # The method caching trick from NamedTemporaryFile
-    # won't work here, because _file may change from a
-    # _StringIO instance to a real file. So we list
-    # all the methods directly.
-
-    # Context management protocol
-    def __enter__(self):
-        if self._file.closed:
-            raise ValueError("Cannot enter context with closed file")
-        return self
-
-    def __exit__(self, exc, value, tb):
-        self._file.close()
-
-    # file protocol
-    def __iter__(self):
-        return self._file.__iter__()
-
-    def close(self):
-        self._file.close()
-
-    @property
-    def closed(self):
-        return self._file.closed
-
-    @property
-    def encoding(self):
-        return self._file.encoding
-
-    def fileno(self):
-        self.rollover()
-        return self._file.fileno()
-
-    def flush(self):
-        self._file.flush()
-
-    def isatty(self):
-        return self._file.isatty()
-
-    @property
-    def mode(self):
-        return self._file.mode
-
-    @property
-    def name(self):
-        return self._file.name
-
-    @property
-    def newlines(self):
-        return self._file.newlines
-
-    def next(self):
-        return self._file.next
-
-    def read(self, *args):
-        return self._file.read(*args)
-
-    def readline(self, *args):
-        return self._file.readline(*args)
-
-    def readlines(self, *args):
-        return self._file.readlines(*args)
-
-    def seek(self, *args):
-        self._file.seek(*args)
-
-    @property
-    def softspace(self):
-        return self._file.softspace
-
-    def tell(self):
-        return self._file.tell()
-
-    def truncate(self):
-        self._file.truncate()
-
-    def write(self, s):
-        file = self._file
-        rv = file.write(s)
-        self._check(file)
-        return rv
-
-    def writelines(self, iterable):
-        file = self._file
-        rv = file.writelines(iterable)
-        self._check(file)
-        return rv
-
-    def xreadlines(self, *args):
-        return self._file.xreadlines(*args)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/185test.db b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/185test.db
deleted file mode 100644
index 14cb5e258bc0961fa22527dcb5d947a6a0fd5480..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 16384
zcmeI!F$%&k6vpwdEl39?E*_+VxVZETo<OLp7Z3*z;Q__P!BKFs^}SRtAhZPeKX^?@
zLf+#ylxVWpO3J1A#nPslN|_CwDnAq3j|)W{<5qv@ygy!T&BM=ljvi&-&**h2hyVfz
zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0Kr#Y(=t3JFp_Mud@2in^@w;v^
zZIbDfMi4+?NP$|lU7u<8yi3LH`#%`6BzGf#K&k?#m9#vh+8uo%fB*srAb`Lx0##*i
d{FlG;2?P*8009ILKmY**5I_I{1Q7UNfj5t~2yFlW

diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/Sine-1000Hz-300ms.aif b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/Sine-1000Hz-300ms.aif
deleted file mode 100644
index bf08f5ce859429eeeab213fd29a201b0d851b9c3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 61696
zcmeI&F-t;G6ae5$QxH_-;Ns*IlCzCQp$4VU8$`!`gF`emiG#nv&1lHMO=u9Bnj^xc
zA!uj`8XOw)(9%Ds;dAhL-@EtvIOu!tp7YgOXQwHBejOawYKN`U)#tR6)>7K9rtRwH
z-PNkSdeu%&&QjXC|7m#_0TB=Z5fA|p5CIVo0TB=Z5fA|p_}>x8vgT1ruj{|ha^q>^
zDc{TYij(4`+$y&!rAn!qtLEx&^|$6_^D>)dv-Y4p=qx&m?x;J8ZM0*59FKm{KgPxQ
zm?!3odE<MQd&|A|;rs9<d&wTBkJE?ehv)gn{9{&_6{h`Z|F&`4xVgBwxZb_q9iNZS
zV;k+*AIGC#^p9~dKIVz}V&0hF`HR2bkN>ahkL#!Vm;0~h2hVSwKRrKNzgT}+KU%-b
zKggfRU&+78AIjg#Kg*x1U#P#RAF1D|KdPUqU#q|K1N;C#zz^^P`~W||5AXy006)MF
z@B{n+Kfn+01N;C#zz^^P`~W||5AXy006)MF@B{n+Kfn+01N;C#zz^^P`~W||5AXy0
z06)MF@B{n+Kfn+01N;C#zz^^P`~W||5AXy006)MF@B{n+Kfn+01N;C#zz^^P`~W||
z5AXy006)MF@B{n+Kfn+01N;C#zz^^P`~W||5AXy006)MF@B{n+Kfn+01N;C#zz^^P
z`~W||5AXy006)MF@B{n+Kfn+01N;C#zz^^P`~W||5AXy006)MF@B{n+Kfn+01N;C#
zzz^^P`~W||5AXy006)MF@B{n+Kfn+01N;C#zz^^P`~W||5AXy006)MF@B{n+Kfn+0
z1N;C#zz^^P`~W||5AXy006)MF@B{n+Kfn+01N;C#zz^^P`~W||5AXy006)MF@B{q7
HU;BY?t&pq(

diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/__init__.py
deleted file mode 100644
index ee074ac..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Dummy file to make this directory a package.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/audiotest.au b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/audiotest.au
deleted file mode 100644
index f76b0501b8c61b4fabbb3715b69a9434a42469cb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 28144
zcmYJb2Y4J;b|yOS+xP8zyK9fV&)x~1potm<W>O@GNDxE@x<TX&k{}UC1WF{uOnJZe
z*5kE39;bDf8HLeEBZ&cE0EpB9onuvXuIlRQuFe6GU?v#!{##A0FMvjORo!&%xhMSR
z+}?Cz<nY(N_O%~<?Q6p{{{J6e``Rlt<bVIE!Na4Q4i5J9dAwc^DR_0e@!#$B`B)$8
z_xm}&pC>;&-jl*{_$7s9S@K@GDBb0=C4eFXg#fN`cmj|4q$2g;^|)Ow(udpSb~#CL
zpfIFlU!}MI{*k6>hM{T7J~drDcfGw^={`(%^NRBar&UXOrN!*>njKx7RlLiXtu{)1
z)A`<YjegE$R5q4P#kWmg-OT^4yX=Z}@3kX&W7fBBUpYT@b$)U(pr5VTZ||-+6$|+s
zmRTjOnF%h3?lsG0=kE8fShYs=%(P0aR5NbM5si7da6BD}2S**+CcCAx$J=_u7U7IK
zgHmgwtkz3vecRdDOu1>o8d8r_UruQl(Pp+Zylq`9J$gx2R8+icYmr=j->schD`!-8
zn`5P=Qog@se~8j4Z;wx0yE#2EXSeCn3$BFdO=S{;vXb1b8#nFUyK_{-7{{h&Ce(V{
zXl-|Sp{!M&G3(V6<2P?!zonSf+TC1?_xa5hhO!3R+sbmbZG0`SXj8SyPLGdI+@78_
zoNGH-lDn^JU*ob(HFfLiwOdzjs<i6(v85AF<2-Hm*y**py1eZh-zd&~y?I_HT%A&0
zzp2nT&cE23Us0M{BL>wsZ{GM~{MPtwgOPe?sJG|zg;Bv1e~@h6vwQo7{M{Q1JWbUz
zw~cdSQ)-oAxv8dNPf<zR60KH_k6$0ZdRsB8UtJB>)%6~1=zi4Gw7;fc=hniUjfJ72
zGKGFbd3|1cTjh@|)Rh;P*VKm`ftg9=)U_GaZ3XXfbT_rP)a-BWsFk&r=jQGy+`g~2
zsL*@zu2o^0S1BwGTe!LHa7DxMKz~|kw$9w56w|f^LsZt+Q&HX}uWjtEt*I%Omlc+l
z7gTo2TB51A-AdW5{$y;mz2{O-$DP1)0bFC$({{=g;}VN2=?jT;Vj&!Txcbh)_C{Gv
zb)~FU-Za?%Wm1d=1CdB9nU17IzsF76Z8nR=YO~oH#)-|t`P?4P%ZHN7r-u%;H`d8y
zGI@P-*U__2GVxeM42MK9$a5a>xSgWx;At1@_4zp;>bcxbm&eNn#q{G7gS|bS9i3f0
zhX+SaoO|)?+2cE_OR-RZ^Ew%dLM?~a#|gn;C>UV9ZkNO1ba*&_AR>y1WHOaXW|r??
zdUvGn(1C8WFuJ}N5AxoZ+sff`y1&}w*yh;VJkR-g*2A*+#QB5K)atq6fg=YG^&S~H
zeQ`Ar4q*@b0|It4*~nfm<buoL#y_oVA#Ha$0s$Z8<?#d`Us+rd*t1>TFXG8#y~E4t
z_@j$=!{Jag5n_E1CN6AYhPEk{MlO-0Ep#XyciU;75DIu4-auI3d|o^4Sv=Kuw7;jL
ztz+=nQYIn#(ItyNkIU(xDGHRf*(f3n7$>0^<OUH8G^pbAaG~USe|I<Pc6A*XJo{uJ
z91;Q;v)h4<VKJM`SSl=(2lN&~pkKi6_qiCbg4t{`8BHc4I~W%y-Wl!bXlamR?Hb#=
z`p+-L!#tj|lO~MhF$;Oj<MZ=D5hWA~2|VYP9xxgWC?>Ow!ioel7X~_-_mk4p)Yf<A
zagz75ZpLo2nDCfhZ#1DH+RX+8F}1X`ytcfuwvtIEB0<jUqA@6=UavP8jAq^J9R7tK
zWg7PGDJ-gPtf@cNb=qZTtU9B`V7A#Q+Tn3K>|iHOa5FBi)9IpU8)#*<m|iwwVVr*P
zWJ_&H!Oq;qrTa%8(iZicaj`q>$gH0_wnVGcR;xj!(%Vx5&!P)GEyF3+!8j}m#oX-d
z%=Gl^yiTpu+G&@t*il)OyKD0sKi#P_of=V&-JG?^s}H+nyUK+5IfZh5?&h4ktu1p<
zUQv0(ZK6_MgVvVHxD?Z~s@a?4GX{%Z$1L>p-yf<g*|R5q>zl8>HDl@OP+q%bNVEj0
z<(j;JT5Dj?l=}G*f9S5f`pB}&_gJ7UOk4n$daTM@*Cu8rZz-JM9jp6}$hls~%1R1%
zZrZeISDdpk3XCXpX05Zlbl)>SZ86TxX^f29ceb<h=%tej0UzxY#E?I@yuzucre>xl
zCsh`k*<kZ{>{Q^)V5__=XUAJRH*YRzWo=ROtj0S!yxP}MdxkdYbQqPM;hET>=B5J!
z?H%ukfz;}<$U1Clg=%hUMxoZ~H3kaBy*T<}y|JQv-=5vO-rBJ}@A<$1g95^v7GiyE
zCzd!1Wl*c2G@OCe13iP?9S6_Gc(310)2!cXR!!ZWxqW?lUZYZJ^j3|==yZEMnTGm?
z+S<K^g?saM?(VqzE=%c5wlL2+Vs08-Vl)|SA<@lv`GCveOY?-my<VDQY4!Z9VrF`B
zN~u&R)q0&;t+m={Uutz^@UUD~C95ne-&0;zP(IpJ*-tqm9@=81StmogLw>tEBY3>Q
zppT{bfavtFBI|Sc-8PHP2$iT)Y1C@9L8mogOW7$wOb0`OfKzEWi_P14psxDu;|-l>
zx)1kt99UfMxbQed`=42~P67LmjwfwspQf!A)^4yl?FNh1XjUn8hIy4vr8BDyR*S*t
zp*#+2FzV;++=*}~Ev~Jf4F%g8MlLSJd&B;?_)f<o-%9Nw8$Mfm(Q&4wl@U)z-ZQya
zIzds6P{5?dGMEf;tI2AiR!m-sb9oKEFIO4bPp?uIhv%I+i#f?M+EA@mD|Cm=)9cTo
zw7t4Z_aeHF*EX&nF{!!YkV#uCGn^L7>*nb~xmN6KO;wpI52{;>)~ULcwu9!Lc0Oo7
zB|h~~?T48Z6Bu+*mbl&Kqx#HN{yazdnMD_sIiGepUa+EPA>(%Y`%c`qos{)6H8o#$
zH}=TgZTZ$7M}xUbJl?+68uocy-ZkDHNE&U2%}=e?#gl@5K@9p2I0xRf9S(K`AJAMs
zZSf4-s0SAV?jwtS>dCvbH{mfyd56stTJZ#fsYORPn(_02@Cp?^e$NqFdfVlHn||uO
z=WbxumhK(oI|e(Ln(9ogT%D;+(bh%Z2;+H&cYBtC0gKPUJB&$#NPFBtzpvl1km+Za
zcxHeJc)d?N%;Ks({N$P0d&J;L@beFRX+Oh-PSGn#(UVyAJ6PW8xc|&aMV+?J7yOWG
zWv$1ySmF274YfMy*7dto>!?{(dC-_z=y9$aUA{Jpc`<FGM(vuRHsgGKhN0JoD5mEf
zj$S*os&*F7s7vpv`C;L)-L=U0ml)q8+A#3cwBm{$GErSYDx9H0W}DCH^I1X}zpl^A
zI79YJ_PL;FHAn2BkTaNO(@fxjm5TB6>mIWh;GBXh?Qn+{>`~Dc=k3Wgrz5n?_}Du%
ze>dO_``A#>=YGydLdy$*w9oIjM+KeF7@zl|*R{g4?26OJJf~St5IR%zIE8@AB|;VX
zVA6UR=qTFBQ7&I1BphCN+|)5Buj!Q4bdGc-+>Aw|o>R=t%qf*>gV_${G0<~bR#Ub&
zcW18b^&<Tn&BlTKH)kJQpHoj870My4CCX^rE~V9|HX7{g;=ul*-P_*WocrSqott;q
zDcS6pdUE{stlD51t!=9=DBE9E@viZh?Yho3cH2HPBLpI4<pmoz{48htpHb%TTE8f7
z`*5uBch{WPjfZS|cQ+Jl%x&9TVD6}$oLRjxslGMg)hny-H{|8#z4^wbr?0&F(T_HM
zHc_bjwS4Y(X6;-}x_4WCapBK8+BPx93;xUV%1;&QvFSFYy|AWc`_{L9x<m7wtslL<
z@v~1iP5i2D{`Wecx~8omf8zo9&v+{T{Fo|wWlVkJhR&cn+I=`br(o-An-s79@WY~w
zV;>DH{Yq*0Oy!#{FI;MQJ#T8`?g>Tt+-K^!E7xadR90hmacAY$w>E7^?D*lNcAN9J
za}6I}(_Fo2S5bQ!+`D$zYbt{ZyYj}|^;^@5DZR+7S5(z)+`Mzk$yaxc?~Z9c*C{?S
zU%g5xmA<`Snl}#Gib8IE@TST#KB>3Nx_xYWiL7Yn_8MVhp04XKrPAximF7w1yxne3
z*-jj@v9Q(bCLIh2igL1kRu~>UC~NJjDQzC;TK5P1wt0(HYcd(MW~+&^7$~F3s59yf
zI)l+j(N6JvYjtg1Nl{f*-Rb+!d|IPHsaDO+s<leB$z-w_475#evzwu-8P@5FU+8V9
zmi1H?$-BFc1zAd^QV|V2r!lEbUYm{em}s}jMw`tHZT1N4;?lwD%AQN5CC?K>0_8Ex
zs0<2)T4myCbNal?WOwS(034Wkla*RcMq0`%$_uMydrHo@IGag7GpSIk=Z&^__nC!2
zU^J+PUotm)drEDyJEKi|3v#z_ej{%&r^sZ|T)8oGZG2+F*1>fZ7ZsOz*?{Wi__ZrH
z#;;GRZT<4X?VI2H@elW&-6^-IuYUCT`1sYUQ%gmKd3m`xTWY3eC%?FI^^=cp%+1r!
zdJ8tAy!N9v)Gh536W1<(aCvf8L;IVzy#8i|yrIQ4@%hIee?B&TbH>(@x4Q`ZzInr&
zZ+56dQ|hUkpM5@~eWyoWxo5|Q?NzI`x#_9TKK}ic>ng7`QC(P6SSc&tvupdC1uCCf
zr=Fkq{MKypV3mAOmb-ILgX#8-sT-HCT)r}C<&y``t)6MFt*)pneCuZ$j`hq>O<Pr0
zZjQ|{r3ICH_ZC-|9G|~+{puBrVp460w>7n&3Go*jD&dU1zNM~8ub9<MjZfcD*lNp*
z@(U{)>pdpr)Y!H0vFUl*9$H>Jd+u~JzTRHBd(-P1imMqdl;q^x<gET;^}fP=^(W8s
zKAZaXt(!Ndlm@#KcB=~xHX|IY%-_E8wT*>E)~Sixx27#~DkGDw%*!pVd|=Y+RI@WT
z$8Jo{*)prisNLjEo^Gjal@;Y|+K`hUS4>Py&)P9(t#!3>Pf<}_$fi-L=asY5lhZ1z
zGZglF9jt$~r?W*~QM`LgPGPNGJxjbs158@_N$37b`Kf>fTrxkeRm~}3A$Z`3FgDuh
zj$K+k(J3#>&nv4sPZ@P;>_)TQY;}m~zRvS2VY}IE&{-^cgI=xHnXFFE>mUx1-OYy<
zAD=!TtEq1o47u$#J7l91*0aS*xm}#o4vX7HV?*h68qK^0wykMiqtok6HYS+5ck*a&
zldPflOTULECN1N0yE$Ru`N-(w49~hKy9H*m5n3Ilv(GR1;mknhVskqAVCLlTaEH9M
zR(|BcQu6WffrH&6Yj;AyNF*Lfh2m*JNb>NOU>U=K@W7j5Bay_t=Wm}nd-iBwPe*&b
zyrH43v$y9!cY9~=p@A27AEb%HFJ{)(9zA}PT3TFtuo`3?PCgI}1RO3nF8+n(zGFR|
z?S~F^9`1&}*4p0F+}YjHb9C^~(1E_=1IHgNEiOE~8w&<Ghui05+>9sa;TIn)Us#ER
zIJZ0C<Je&2*|XszJ?#fNJKGO-9~d|^bZ2d4WqEmFVIdI>2Yewh8V<on<NR(1MZ6yy
z?d3Q)9ez(R#QB05F|;81!%w2AffLV11_uuIj+{8Yx_JNb`FB@R0UumE2Ixyv@Hrf`
z%S-$UD-CVO`Na_9@HkxX<oHnd%-uk8cxa%dlXyO@2UqXMBg+e^%yQHp2zmhrd07v1
zyNC184v0gzLUuSEUJo2Gm&56HGj5&@h|!D3;Pf`tRmj>8f$Lm8J{$@8DGb}g!Xkxf
z>WAaVkZI7A#cGC(v@jm5sg?LJ{vaO?$5&S`jdZrk%lB2+b&FVV|Dq@aoW#a-@o<-E
zJL9B19=wAS3{c5qvlz5mozYA&aO6N6mp7DNUVd?IsIy64y{~9r-P?@GU~$05a?%#N
zjdFW1c$0<lI$2Z)G6g>H`W&>y0RC6&%@~Q*g!>*Lvby&4%VTdJY?PJc=hk%58l}#}
zg+!LNo85MwhcTJKu^?msGxD%pkaatqG-I<G^;$JNGpo&PHd@SXPY~YSgX7&THTw#8
z@62ymRVx)n=FXFTAxHx_TV%;DvN=RwGRXP^Vn~d5K`l7?R;^jDHJB`Bn;F`{7Zfv3
zo*q4LuvJ!8n7d<JUdvsb0?xte$kF%Sqg%O-bE^*CX!6j@tEttC@drJ_ogJ6nK9#(G
zDJ4b&foRan3I1@zNyo$P5YOHni7p=-=&Y-gm6uoSt!!vHc=||hW@(johlJ3h2hnH*
zJQfH<Vu^+Oci%mA>g1V=5AHvB@GzZBFD_u)#6;rq`@L=t!R=_L%fYx{af(anXBQUN
z`|qrEx3%rxU*FjMEdAi_og^P%Y1nAN)nI5<WO=_QB)CIye<&S{q<#EDKbtUWdJ;y#
zs(B}<@^NY=pyvdQidlFz6n3ufZ*M6tDJW_@${SSHaO8QC5;Dst54QF#26>9{F+RZq
z7tdpXA~gXcpsWV?`jm^~oT0@;Uvq6~QSOdS8wzOE*wq_z)cxAQXDv-NrA7OW8)t6a
zoHYo;-NWaP9qevzXQrXjrVZY(NE^UWfMpo(soLV4Z5w{}(_G`N-+y}fw!2}EtgfWI
zBrmVTIdSFl%eTzUdkXi-TDtoWUbN3%{o?YtT5M^3msZaz;SidcRNcP3?Hhjj!+hPf
z4}SZ*N#CB`MRof+TS_V`lw-gD_|q{<MP5!(+cO94v1uo+eQ{-68)@u$VpYvd&(5iJ
zOuDXQ_tw{c{KkUf;}1XhVpf*By<ktnYS*!9es1iu-+ysCT$a0QUz=460j#(+J~pBB
z_jX-!Xh`2C*QKVi+%0eXWb*;#XCHrjO}%gTj$Or_7e=2n1<kj|u8hsP>I(DrHVAg3
zL8l}>qJ6lzvGKwwk%HH(&@Pni-t@*BWk=`6u3Vim)Ys-0msFM2HMRH+b5j#D^Ul*P
zvbwg1DL-X4Y361XTIZd<6EUC52}mO{C@aq2vSDjgVsh;AO~p`g!LH)!=GLLE)|5>(
zJFT*;w96X0-vxB!G81damL58GR^-?~>QKF`V&CqqyQ-IFZ(O}K8?UY?tdt+=>>cP>
zXS7P?yj6U5@DdTiF3UVRowoz9^SFJ{Q}XK4;-cL<_H|iq-?%ZWIMLE9Z#tCh=^J_I
zH_c-qe9N(wc+hFK8ccel4#i+~aIxOHnteq@J98ROsHUzf=Ut7>T|+&ImA?L^D5IY@
zSZ!XP%VGuO$-pzV&_2$=c>E`N<W+m~a|-L9VJq8B$<+OY)i1@>JIg}A1J@ZFSEn)>
zq4pR$$S!($hGo}|4|F#*RTh;rcCmJghr%T|`_D6d(TKqNXvS#J7}S7D>=BBy`W*r`
zUm_4nI=aQWW7Vw->pu8}9#@d1<IIvhV5i*%|GdM*_-sBK1CU2!1ezF+B~GVA+86XD
zV`=Jup~+CEYjkHA)?$T6Zw*-7j)3#Nc2T!vOfhyJYmAvzO@9CU8Ov(Y*Q}Il*6psi
zGekRr>_s7gO$y;_54plFsLH^7Zp4?O15|_#n(tTww8O>R)sNa&X@RpW*q<<uY%z`#
z<7Wjpg8T~aUkWcWDfhDgyOMGr7nl9ZaOG`ulDTWHGj^E|IN#>!1BPB>hq2jx>d1@5
zK*ke$bk_5N>2}_;#g5qDHgtL#yq$b#g=x1nYJ;w>bCLb_m@RQ$xMQ;oKB>2*=zFc=
zJE3PB)8VS|xHO42ORc%j_f)Qu8D+5*2RlT^hv+u@QY7<Ulx_<xo4gmf!)H%g-?N;u
zmKw?v`bKTRY^jlL*UHR?#B>MS&2uLWGN#nh@1t6&c28i`)ZrC6jTQ5)PO4?TdVV=$
zF4tDutre!h1=}h$><$k)yMxg%{7}EoPY3-=t`xuUSV;OpA(2lyPFhBsX}`VGx++*Y
zDIuw^H>Y2yYmA;YZNI}V*L2-6w^FCQp0tA*b~EQ3t|Rs(fxhE+pL2UsLTEY2C(gL;
z1;wDa>S0$n;f^nyxhEXwh2f0%qUeA8G!tKr#8zH}yvewDYKaT3XTrdfc|PvvV73Gz
zJdLP}5C}yQ0T>M7<bnuQ=lAhGh-)5V)5$noKug>(vN%CZh9IR`P5|@y2|mgKhIG;n
z{1AARf_jA#b~wB)h9JcO9)CVQC_sWI!ZBDVZiHv-z#JtA)QAEY)DA5j2(P|-q^qf}
zzNx*fZ)hdN5yTa{$!xX~wT@P8_#==!MX+?M*#dh2n%cz+;&Na8zKVL8{BY;G-wxx`
zjHm1j>>oDZq@iko=)#<Fx`9sn&?<l<?Yv5<f;5D!8MxG4m0wU>UfJ2zu|!N3n+qB%
zlnVO;94tn|ydEQ9I6id$@nR+&3%Mwp2@swd#;8_nu$U>Yc&@dwC?}WfTY2jm?z<>P
zaM94DFy~<ES`0SE>t>U&yM2d_9UC5eSM)k;MkA!LMyrJhV6l0EiQ&eYlHBdPYYU6&
z>*NoB(>l%e0A=?2T{aJ5FJ8*xN~D4-$3{ll+KwEDUUfNWK)*1Ebs(YD>E-Wt$jb|I
zwr|e6ThkOgIYOIl!F%lTBbpLiW}VffbGj|AC&v%BHXc3O{lsFl>GT%8(T2%Ef@$@P
z)s}ubA}`;Qm-E)v&4pC*uF<1Wu>A8LuVe78!C;v)@OqQzOAM`MhI*epkJyY_gITAV
zx4=MCD>ZN;jTSoj^xd|avf|<bG_w6m(|&u<I1PyCsN3qVv#LER^|D^?26ZE@7yV14
zOU|_wo)1!5tzNBH&S~c74f=Vj(@X{2v5SvS_8)B9FRR>JoWHw3*4f?t+!~<f{hY?+
zvs<6AR2;T}3$!zP0}f#|ls=ydKD!s-7_$Yisag%>kvP~u*(sM>Sbox7S5sP;pSyEM
zVOeoiW^qxcbs1GgJ9ICx2Ebdy?_mAGhwmIec3|}0$O9i`HV`CcdRj3%tyC-2W~0d`
z1nv*@H`i1a7v|^e%q`ec-Z&Jn1CdnBDd0@O=b&6Lb7<@qHy=r@K3iM9vlR8yMy(2t
z7Rt=*oMK*Qu-F-Y=HByTZS^(fdkgb+?=C1Tl^<GR;6$St=pnNawl9L5B#h(Z#g$7Z
zhL4}P^d#cKpwQdw9Ex&AVb_?g3GvR#i@Lh1s^YwyT|4uNiYl7Lj7ZyIRobn3#tY-y
z=XE%(Zl8k<TpT?yJkrs9L1Y-SMg@>TrBH$owFZPsnBdY<Z|nY&lA>KZwr}3KXID`|
z7_k_2D!W5%9%ZS;0KaUbmnof#x5U;~ntMhY>(6t%%SgyQs|3)i)*B7L9vJVP7o!Ji
z%PR_Vc5dIgBQGbv=h=YGWPrNUS{GcNkw@Z#R8(*{os`wf$1_7m4s`bpx;%`Ec$RZB
z3YB8sq_HrxSByLu>1$|^?JddA*|j?_r?j>+?KJ_PR;hF*3+)bu66sWk6=*vEHE&3K
zboThbdYt#bBvz5Agi@)5ZEW|j!qVOM27B5;?vlcS{Jesq;@Z|@QO0V5H4op?Y{&iy
z#lm6;;VVImFRVO%@6z+TVcyMH4LTw#fW~RGMhKPA%Eh6cwkBC+X>nmeLE)Z#m5oR4
zyDcUS`T}^a(OckL_=6!aoX9M%K0kZ@)QR=Qgy5#F1}%^ig+c+rqXpFB7Sd0Lx?ANn
z6^L;Z?b%yi+j108vspK<RuVi$OFUgS7r<!lTzc>P+ry*ho;^wjITzp~ES)mjlEw&L
zf<?4G)YsL#zow$RthBVex~^?B$}$$cb{^QxyhaZJ0VmlFPgsnn7grxYxwo<)@*W0@
zq6IB6bg-SyV6xIKR!H7G*WcZ`zoxPrrCQ$9@lGZLkI-g@uqIwOHVUFi2=4jC<l@?s
zOP8K3C17h&RuiNmDQF22*x?I^nf1{lU9I)C)s+=+AgXKYJC3bKIk;y~09H%3Aesg-
z84wfc<@=8xtfV7?4}4)Z=;5&G5VOF@9bP`1d3a{9r=u0YQp8y+Dk`cFYV906znTal
zTIPc3LP9FoElxzr#N^WIlk*qfySJE%_&snWNleaUCIbi9=H&vR`10KsXGV|qA`IBx
z+S1%uU*FK!+}_i7;=w{R$RP$vvIqzOK*MkKaY#{+N`U8}?jU)I4kHDAAR>w^bWkk4
zeD~Rlb0^*zIo5Z$r>BdQPB{CA`i>nx|7c|~6%`Rm<T=DrJzlueJ|6<Aybus|qTqEQ
zY?@$PD!au-(iEWjppbn$n=~)!R;UnlY5C&0V_nUSt^1p5<g%u^wvNLikK%qGMMM4}
zv_j&8Tp$>Z#baUw(M*_*HWS1j1ggQPw?!cAMX}pS`wkAJLw7qmh7ZfD<aL!LW&8Hk
z$f_C!mX=^|n#?+l5z3Q6csZU(EIvvHptyaYEHMnN2x%JBS`GFK^p?(Kw%c8-7>4Xw
zA31rrqqD81TGm!sR8-TkoH%=gQ_rci2AvwFcPJ{be0rew%ODquuY~{xxH-2IAzFCG
zU_P)Pcu#Mz*?lfie0+N3!cc#2XUqQm2t1YVE30Zaa4s2QteSZhL4UC6*$6mzb?xq*
zg#<i*56lv9Q`R;x04dTywWCFi!2~zo6G}aK@7a6D2m20owzW3O!8z3}Lu+B)Ntq$`
zun%E-c)0NLqc7Kh#bb2|Z=yNqcpWy5POsIdHP}Dk8;8>qNG?Bl{^f;{?j{*_2bi!@
z-hNzk0wpDlX#fj&0*S@7r;i@2EyKWdgLD?OgL|s^d7W0TGh4ua$d>W4elfLn0T^*d
zV{JuQX?aaU*NF`8vYW_ug#5R={Gr6k(|1pgoOrf~2%g6Y_nF2T5tT-)CbA7}G&T+p
zpI|Kc;KV>T=2x|^cu#R@)&9;?2(i=H-Pl1UJA>U7OC&Q(cOI<YUs*^($gys67duQ(
zj3a1KI19+T0c0yKJRa$8t(R3*l$Pu*ud3^Odl7y!Y#0(|Hro+6Mlt|!l0<rGnLtnA
zX+KLg3<d{k&0_(yI<!kf0L^%Od}QhQJ4d>j>uRdXOUo*2TaKJhg~$#!>akcrKp>cq
zY`_J=>DASxL`0C_L9>x8CECI-+A_jM#56cA`s74!dxNZ|3be1Pt#3c{ZYluLYShD3
zLzhruD3D<yL^;gskQh(KqET!;BtamG58#pPTWAYL3aH;*zc6~JtG!VUpcjG@l2hJt
z@ZDvEiwOb-gTO`7mXI_dgd(w2W+9zQBofIO5+$Tm0W&fJ$Xbwm0T+4=g;y{2wKvGC
z%J*U&O3JG1yN*6cf_$VgJA;%8Y<i?euzn#F6hlOmNXbi5#sXN3rje`wI3bisrk)NS
z>gi~d%W7*78EES4|1t%+L>hv1YeP~9fjucS=}!TEd~yE%%AGq4u^_S|oP>jkk&9pO
zF-YQM1Ca-3hWc7%)fJ_COUtX|t$i<2qTu(DGy|&@M01c-2^5FdAK(LitTALNmemDF
z7Q)KmaC5vb5MRkWIN#e`TUk|6UQyf7d15IXgd+ex2SJ^H2%XrC_<;UaFTK;>dt~tJ
z`szwL413x`h9%kXL`c&P_yq5bbT(F(AyQCU*)*7doIxShIc$0k?hMou(GwUStap-<
zft(E3R@gm$D8*Fz?xi!m9St?5VED?`jMt*oXu$z6(h!{HVvk0L?gX8{j<Eqyn@E0#
zhewhLRJ<Qp+r5)VI-oB1l~%}(Bq*(Nc4mgyW~zCk-IF@rzF#JTBXan}YQSNG!3E6@
zkpi^_YP!5EA4)vzZ>TED*|ud{PQm_=9mWQUz)VliX{o18wKcWv>xlT<tvbcb<jq^R
z=QI?{$0Ct?LkBzC4~&isbXFB?+qh->Tb&*|?16d3+}z~NS-rb$ALi1*(~KTC&D6xL
z8xu;kZE^X|doLc2cJ}nN9vJR!EYIDtd3$bEK&zgaRnARMPEJf47x(We*emZ1Ld&TY
zhyje>m{cKno(Tn4&kl989v(gOE_&R#ZO5)X-5Hx+qnx>QeQfO3ob8+(3t26zYdXdm
zk$8cMx2I?3R607*-`3FD(@|Ghn6quurfs{*J5vU;YWn8b*tHuoTJeA!_D=~|sf$-n
z-WW%@adTp7&fpLimX{YEpXqM__K~;s%?&wkmHB&8jAriE<*{2+M)6GeVMlXCK~c?7
zZXWc)=*P!z&#7%5#+SZ7+AObctSv9xzTx%F#RX@33J1)}sjFkRRCX<GakUf{mlpLr
zODww$YD^Jf3k8W>c!s;roqwmcVqalF-i{5M3W{<o56F)I^tpLUp;su3LeH^gS?9yP
zx<0{%Xa|B>vomU|1DiFnvUKpM+qpE-Qzxq~t*R|6+Edwd^4_@>ugyyPqZ|$0z`)*y
zj=-+N_5>nqvRI6I?05L24q@R%Uq^j)Wo5-aWU*E5Z*A=yd=%mRKH4lfw~&GmTqNrY
zhD6pnA@&Iuz4!K^&X&5`YG|WM2%N6NC)SX`guQ4b0^4AK<p+fZR`+Dh8hDUqGX)VN
zWS(3&)+(#3uc<7ng89=n@HFZ7GQ^BC7{R7`J%q58@eq8Ov7;fg4mPXV&PD^52AUho
zi_2;Xi>oW@8W!5zUaJL?RSDxzY0+EF@KXVH8{j4)y8_IvRKbvS3rjs6^3uYBoV{=D
zlob@#($$aW^mf&hW_DJkRaj}0FUA^=-P1cnqrzjD)mzkR#^_DmKVM%5M>e;pcx!=t
zcj4M<IW^DgXY~3Rm0oSI>FF3v2V;~sXfs)@Y7IhHCYlc1IoJZYH9sf6Xj5U$j-t`l
zy=F^FtuU$Q^y+!5RWAf>!IWrA1Q8apAuc*Uk7e<R5Blq>OAB*zOSbN=*;&xjQNo(;
zn3Tr(Ias4+o1XF8gr_34c){RBx(98ZH5xET8-4#|i>w5hH)T7v*X+(|S>D^P;JgZ@
zQ85P})W+DMBo~Hau2TuK)2C6|byI4cQf)We&h;LZmlWsiEH2$rP+L^?IMJ<FQ<^D-
zPN6WE3=rtTVj{Ml;G8^Me3&9?#LAGN<K`Y6?yRpw4pQ#kJw;U|<*lK`6sQdwM58r9
zmIs3|QH*EOycbdus(Bs)hcE(#WV^@5j&wBauP!MpE!|sDQZDO%mVzUQ2m-7e$v*bL
z+J=+{`Un;x@iNpTu!<)j3b7~0dOPZ?ic8D)RaDl>J4O~=HY4;F2|inCug{GL8FCpI
zqAI}Q@Zcb8Z8Sh1mJcQtpZB++^4^l-vWgm6<H6H@J6H`GnK-dXD5D%KGy{^7pfD{&
zRuk<+EOD55$P&DB_DEy(zI~;8%c`3@dcRCC7I;&{-!wuu5wq3r1JnW8j*elXqkxlP
zsKe<+plJDMcQYjXzKZgi#shs1#UQG~BEYa64vJzV>knWMhGT#s1MdVV4-^qEgfpuv
z&yEcZ_qJfGRMkQc51xFOh;j~i0v6hX3^Ak%dYuHC(ZfE2=>SH|8bJXhV8#|wq4et0
z;{(0K(yOi6-*M>J@uf_N#TF$YEktlg-W=R(Eux|Do3fK}u)$y`CZ=I+#9oY^Jc<}u
zO+{s8Rek5tbBnPsagnk%8?rg!l$iCzGE~E+MWap+G<g_^Sws|gF}dE|)h4g4EGey)
zw+}DJAqec)C0ZkNH3@4WxTM#pfB`7x4Tx&Nw%`{Q7uPZ(LPLwgT|N7&%l8!(7VoR=
zI-cRtlM#~y%ENH*LISMIZiJecL5j&dARH_3+{gXBy`y(lmLDIHm&2{i+ntwRRNMK0
zhe=25bEI1_p;O0>92{8+ICP5XiHX|~q(~^Ed<%z~ko4MixW8LoUIgf9SAJp5(HLtp
z8i3f(%qWe{^pTF9Bc~Tb0<E2!ygrWn3pEjo6#JkDQKf2`TvmYy{`Q=_nly#ph?6`$
zHKVpKHC9&Ec03HaY<l%9f)-=fr<8g?8G+T2rb<ZMqCJKAJ9qBRDH-$`l+)-7{mrTj
z&QV!qc~$GXVFxC8`v$3ZTcM*ofy~JsSxHfTZf@T09lP@jo0h5h>D$wjw}HycsjcDm
z>hhBE<`YqmUNt*$<N7$%)vU(K@asn!%ZosfoSj?V%FnGh$eTbq5a9OhX|*NLT~%HJ
zP~!9=V^U8;fsS3DoSV1M-q=yp%FEgL*7nWYcjxTuirduC@e`AiP+4aGaBWp-Nkwf_
zXPPl8K$Gzs6Vpnag-H&{_T}fiwSC*>&D-AEUDFmqEyeB0iQ5x1YBS$cD<c+ab;CQN
zS$X>wGNuvHS7~fqpKLEEzhld$&D(br)OK<<m1-86_15I9%EBGM-mk5!scC)AnN>4W
zw<abq<vFE^Jt7B-<n5Ab71cE_IBX_jbKII#>8)HO@+Gjh>gu*7uN6W}f&9+f(@Kps
z-P2W9v9D<N_HDZgiYmJfw!GuDX#q#63_uQInU#^QuD-`SfMAEi<v<V~`-(*8VebX+
zj`knw?t*nJm)A9SBX9Wp^F=sGUMV#f4nK4zvDAPvSnO^j5qkW=r894zIWaoa(^4;&
zH+LWC>F(?~o(`~q_(B*KI&65a*Nb4P3t+a-3Cj>xrWdHR&+7|BqKWjv+QS#8hlh_3
z9X&QUG;;d+i-*gZ7~B;f>~0s%6d(f@|B!MF&j)TfQh<E~`IZhbz%v&F0hzmzC_D+`
z<lr(q0i16Ta0@xXxIjE6{NNW}0<Ht~K^`=IP*58u9Pl{74n#2=i^aoY5ZS3LNdY6l
zau0C^0>nu{K?RaJ%}Na-><$<z6pqGY!0bgh^nM?XLO77j49SJT;(mbCkd9fPj>m<`
z<GM6DI6ja=#NojmoSi_x8Mooc@Z_ik#)2_oY~)}D=IiyK8fgqwh{psk7#<2C1i3{h
z!||wy0~+|3tpx{$T*j2ioL^3sKqIIp)sRkc5D80;iJ%K<V1yFr9~}q+86u{Q*X$ff
z<AmJgBCdiOc#Gd?GM$0P6~`)IK@*vU1jrbTz_|laq^|KW{5!Hns83uMGHJ=pLSI<D
zSRxfim>Nm%Vs;V9AjwG+G8!^1EF+mNSw{F}fMhU+XfzxRlYx+hm&ifrfJzbpaTV(*
z(T~spTqCWAAgv=hlI~+5pa+SO5V9i^L|R^{D~U)T5vfI%1oI#SL92us*#Qx519Ol;
zl8#=UipdTe6{Lp=g-9L3YGf*yjMNypi$}<<Y$0#R>WblPAvDGhW=N(;{-js%1;$BM
z8sh>bJ)VGi=DtQ{Ffk#|Eiq%Ax6CL!n&}y}o}o<!q#w9pr6Tz4@IOeMzS!T|+|u6F
zeSVem0WE?)#d!lC7eoxk9||T{o}RdPxTm!iR(9_0oUNNS=6Tsc`^1FGkbH5cB|o>S
zwX!CvSE}aKv(svu%M&`&_0UUsD80tS^5OJAQ$zE>+2)SEwyL6CZ*IOdQ+)37Rg2MD
zpE;VB+iPg-HB8Ovt+ZZysC<xGkc$=|N>&|?w9L<G{60Gze}pMaPA;%|xU=tYd;dVg
z-n|7|cFfK72;(>C_!Ieo=886_$_))<W}gp-quob67CYiNNV#|zWBnmy>{=%$O#z*8
zq-mX_Ju679zIWlixO7f-n90;sov+HtF-_P{D5eaj-frwZE$?!w%ucI;d31FBiO6wo
zi_y)w7;q_aLcA<vbx>-x(X258O>|oIFx(7w{-Imwj@X0)g1xV+uLp@^)>-E>#jNw*
z>d6t$#rIf+S@2q@!L}8@Ye{rzE#8oYO5WiaFT*h=4FWPa%0t=RK?h7LhV#<wA%LkD
zSz1_%1(zE-hg-_`@G9z|c8)n3k3SggUiR5|#%W}@xC`7H=G;(|h&Trm01!PK1;YfE
zIg+Mah``f0#X`9p-efWsSq_IX%VK|T&!yJteLX7ba7Jkv=?#eMof+1_g}p8+wk$G%
zg%k^B;(`IE4?<V;Gu{YCS)C@GmSlDbA+J{qAiUuZJq!l#K8^ZEzDz7ZLo}B4SbWa{
zYHLWOTo;Bt9#M2LEbLLt%N=IDT#RfJq`P~N6o<1ke&8YqryGeG39W%6CIOe%%fp@)
z;`ifD{=s8TIM<V2?Cy2=NBS8@Y{bX-ANZWyVw3~N<D3U$gTi6_!GIfoz`#fm06+li
z@&Jnv{J89cFmw|!>W6@YS&h9$b_sSKb`M^qPox@=LPWq2c}F%TUWoi84?<`KLju`d
ze#lN~_v1F|yp+DuewH>PQ3%=nD>Wdsg9=3R;BjfsVi-gRp%q9ih&`gc5OO7Q1>Hl-
zNIH!OWfUC9fh2~?fu4i>$?7cpBN7VZ1wAEE7$B{^{1|{5AnlX>qyjO9alDj0n5ICa
zg(STsNlYdpjZO?l!clUFiOeJ%i^k*eD1bs7@qq%w{E7O(|FD2_H^FEOCTWBSBXUg$
zBUuf^;DdNN6bnE?2?=~o#^aGhl3->~p`jEW4+Q{Y`p_fl1!BPn^hXM3r$UI+hJyGI
z^!lSbqq{zr>}8(sudVBhdsy12qf%*KqN{C%%Up_iz&l>27hoZ%8b+|&54VNIGKWLJ
zR9OjH4InLWA@g{&r>n729;6>9EowWDsO<AJpI8iX0*ezfNL}Q3H!!CFfP0e~4!j<D
z6Nt2gI1(gBtYK)luc2yh;m#ejwz*m{X6a!xzKVu-TiUwQ=e$OWx2w(1?s3AQw(~%t
zIV4pwevV;M3G1xdVN&P>!NEr3p+sDGF#7oMK{+6jU7NOQ<_a6HU#9oZt5=H3dgQH#
zI)d{mnpG;<{)g;<Y=6%(l$g_K^K%YI<U-s}!%<Nwv@}EEL>3l02sO7da-g%Rd{4oS
zO;wYJcFlZYJgHK$J+*bMhYrY(YBZutsiea`XS%Py^H?Z)CIpPYg~&7@4rBva^*HQf
zv4R4bj9*AErN#7x6DLOxHOu8SrTh8&wd)3V%xqtxjgb>B_d*akV@@u~xkDjDG|9pt
z8WrFW5y9atmUZFGnG{xm3rP?Yqz?dSM!0I}(US|K$NIY4nxS7hdd@yf;?N3kQ*tQO
z>kS~OB8UdV0vov-&pcX<#UoIx2)C1ViSffACjmKs6mkM!m*NB+@&XW9^?3ML>hXzz
zL%kg>jRXB1eL^@!Q5<dN5{x(Qb0;HCA>wjz4m*;2$R3GH+YW~;{0OPyFc1PO1muQC
zhL92&NGQIvdjHH|{{bYIwjAz0$hq8rI%qu-dF-6i>JxDCim}6!bNSJ?NC<%R3Iu~3
zPQac<=^PirT>vUw$Yl+L!r{zfYT@a#Cnt{fHp_e7J#^UT^4d*qr;!R!6z{UJL72Pf
zodImjLhy(o7%#9xIV24rcnl#6+>-zVKrIpb_48sPvAnwS=)Ltv=ZD`O>}+oA>_60*
z-~)`6^O|r9#U1D9NDSGFw1Y?Phu53T2<cTJ{?Ly!a=^iq!%IRMW<=+Zl@4Ip17V05
zQ8X^57L(@(NBa*nRhA8!kxRlG4e>LfC`%t5HCs8mz}wiqGi=D?&G>AAJBhm?Hnrw<
zBG)kFa07gRhky(R3$QW<MuQVDG>#N;kJf^Th1kV`(+D6m?yE8=7lEr-618Wnpx=3y
zHZ<a3_+;NPC$*Sj9L}YV7oO;1B<f`{=OZC(T>*)-Fk0QAB;af-^0b@+Tmu~4V1)!P
zB0T#z^0;GYw5g)7c3Sb|*h$eGsaZET__YqFj=SJt_`snKhYeCK<P*D(@jf>GZU~;X
z7;rm63oO73_|gu)-w9yai!)=03E;>jFL)f-{)ic-R|A~*Zbw(IY){keY5%j1Qx;#{
zc`Hr%n?h=P*daujdu=`($Hf_{;F(1?_+JPCq-Om%X^W$T2>Jv#7wdMgE;r>Apn+i~
zI4K8*L|F>51qZo;kJj!DzTFGodthQFc%t<P<!ZlcV<^XwAj|{GgCwJ2KUj)gy%UH4
zTk?2>C7fL$Z%A@1918G-8|l5!(C|eBrwK+9Qo20IruD!k@H4@a4;NM*9Byf^*)u#j
zlj@coGTS@OAX}Ghd89MI9yrVKBT1l>zB?l+0p=dd@)4Xfh7s=fyPYgd01p=p0dnyn
z`-bIxRx>%w=|Pm-%>{X!n-K10;%mo;4j*VN*{i-`>Tcifnvd4wB#i04+^4ltzMdi4
zw;sf?Pv=O_s^D>lmIW`#W_H?fxCq4eg#8SQL#|+YB%As@NEbv}hmXgxQRF7Mka6mD
z3(4i9C+{9>sN8$;=Iu<ItV6Hu8|HYc<xn>)2m3<P1GktW=|O?+!%^&nyXQiI2y*LO
zR8Zu255;GA9%>=%bAjIz36Lg0l#JB|1BZ1wgFNElzQmG`iHPZQk5`8QTa~zP&RuFP
zYu1|v&pz$9+d7AB3}YRwdCrN9V}YZ>N6(xVZFFXNWzp+O-huf|wl5N)VvBKf79eg}
zA{h*ZNfx<37Iji?zYt+bzNwf9L{iX%!Igo5XT7rG0`JW!hrF;|qvnp+cI))Z4;Dgt
z%~M&|3Z-}6#{>fBI~I@!l05dr?F>XRF}H(*8|-0Yt08!n$l>K9nRJ?^+=x1c9E=zH
z&j-$9ynZei;XGc4D*(p}fL=5dU0Pkgw3-oMNI>XtZVwxX1-!`T^zu67SO!F7f<t(P
zc!d5I9>w4Yh129{uMZ{<%OS1<UzSDc7?2!nMueEjaWHNn=z{!OOagNZ#sc6B_`ld&
zfp`F!8Q@I9ltKhK$~aFeET{Z@Bq%00;G3zi4^~@nIqGn-ZZ_oeBHj#*$Hya(D*lH{
zM8w9zejI3yEkp$;Cd47I9tyGnHy?15*uIEgAI}NMa^OWinj#J&?`Gq;&LS@jo1A33
z1w)APW1zn1N_vTR2N#nO2ng6W0X~d?sGpBPzKRK~VSp8v7E+?eC!{khmqN;z&xMo&
zA`t@cs{FAC>?Rn8VG+X02h$QEDOf@Ygvt0&JOu|_h$X_oU^Eho$8jzJE^jKCSx6-S
z2!uuA0H-pGh_j?4;^Oi`9EbRjTo8?>mx-GUOA8hnnhwMA3PmIFL<G$voCbpp{SzAv
ze?Sl5fD<<nS1}gpCNU_9?MJR~#O(*E{DL5vfw+a`gNrZu{jfH%9>gbx35hi)E<Oq;
z;i?4Sz&UYp3x+0v00<HQZJk8|a0N%T2{!QZmJ3@{`fdmE4?ZLLmIuHx<iI*WBy4XS
zF(w5OaNGe}geS6>$f<5zm%bE&yhBS)@=XzB&$|e&L(mU0hAav}dL%=F(?Bjr@1$8`
zhQtoe+T(;kAc{l?tOOw%DFi%#kt|v5#8^g=o_qO*5K<y$_UV^YB!)f;c_F?6DboM!
zL%8B67tj|$KctRHf23Vv{lgt6S5b*L2vYmx9x=9wZA~7LK9iSh+hlo3doN42EvX5~
zTlwlC@(gKJngKDp;lPm2g1AK9A(b=~0S`s+6N|*aM6p;j7E8oa32-F%5g(((u8+o&
z2#2Rr$z(E>PNy^J1qhK;CY?&9@C5_7m5e9w79sc;031@nU{t(j!IkVBr0HZq2*Q)n
zV6p%O?n^8x&6KdKG*m(uxFpi#$)L#}nPYZ3(z6mh2<0XBC`%2p2H9mGlP5$6oyf9e
z*NDI^;CB>q+5_yHeNXrpe<<X}S4H}aoj@*150m@Y5>g-10({k$)DD4_$UUi$4y8p$
zzo<r9mzvGiAg^D&!wBI^O0ANbxRK?iuLdj)KRW}`qSShJ8n`H3mu4(YTB=NXmWsqf
z**!1u0eK;XT*6yILun!KLdY($i1YxVF&R7xc_AOAC6Ja0PmtTv9rDD>SxOJS^dYm$
zoUI})E~z4MF=>nRiz0QMeM@dhO=Sm$N65NMy^^O0D@cXBBW=HA64HkB5jvGT2ORL<
znT}K-7g5M<QbqcZeTBy<F<<s7u1Oc*cM_}&oe=0TOd5leOAs{Db9NAfK+??M#!6Em
zFXS4zA(ias?1VrZELwJ5zgjeWl9mzt@RHXg2Ft!c)@C^|%O4Vx5I)Qn$Yrn+c}6P4
zasP@jrR%s$Zj)<73`)=}1R*jR0Q3-+^9cm1!~rF#s`M-|;mEU6w_maT%aLWfho(fk
zq&a*^50Uc_s$@LUge0cVzRM079iW=T;AGyIJlP8<gn99a4CAX8(jA&1SEMJv9uh;n
ztV5{xl77;_@DOf;$XSLU93pWd<TrUvs++BYPl6EF2O~+`^ApR6*Z~2gw8LFQ@7X>P
z(u6wm!R^B^$dt&mv0cgZaEDAAWRXanC66>^vR9>HNvx0lB;c2PAoE4R6$upjccuV`
zVDG%#HTXxKkcLPmfI>J(;v(tO%W2^~nJk$VxlCU0PU1C**|HU+yV7;(LFrNQIAK@9
zvDqyNz9xK}<zaFgcL+!03DR;_B49|8K*_EWh?HGs!lZ;Y<RwcON#_$7D$6+%_Yf)(
zWlIQ#hY8v6PXgR|kdfe4{zq<`C+>r>1=oj&MUYz{j3{wLmV6}QLWV(1l$Xoxhri3i
zmVtc;y$9`u5lh1+A7P$LGKG+d%nK7E#Q2Ipm?WW^v^HdJWU}N*Tp{ElMS3GG2w4;I
z2J0g=Mo5!=Lv)YSq*Q@CL<UEwm2HX;PznT*>SO|B7TM;=L$IiDK{72!Eh(lzb}q56
zaQo%M*ak332{9!8B)24*gH9yeA*}%*Nl8Qz4Gxw?-W?E@NHm#>K}2Cp_>hPvlYrZx
z&xs6+h9l89a@pdr6iL-6tW12Z41Q904tkyBy2WGhL@Xjb8H*<qQ1Qt`9Mup~NdVS^
z0gxcp0hBsSRMa6iV4%jr;V6mJAT=$H2auDBJ7^1bLm2i1o`xYIJswM>laf7w;25GV
z<R+SnL%>30L&%ajk<n#kG+|mS91+Fj0%2Y0jdUHiB#|!Nl`5eDawW^(QWe77gr#B4
zWfxE~e5B>f?!)X`v_yLP-@m9!`pfQ^?4XG5AomF-n&mFkA)AK0NYCS{)C=JW!ij{T
z$Qa2-i4_PRNIXk;21}h?T}j-KorOZgHTf^`O!j`3g$Q$G83wOXGhg*VdPOg!V9Y4w
zgT$?pj>aZH|D^kD1u`!31bJ4f_EO<t2B0o<9KOXWhR7S%ONyf5Gg&<>E7ths;$YQq
zm)LmZ4R|aru|ypF1)CA8i=`*)4-^>Hz#m_!PqMH?HB0>y0+W$ux0dveh{NnWF<5D3
z2o=fhAur^=L^kqPqO|n#@+#R^FKGqBNs2^*%E@g~6Bi{y5IW#WcB%0GfA4Py42f){
zQE7!GGT|C&L0UI5)|VJKX+jzc`jkeTU2gKAG~Vn$N$Z#*5k*pCgpDNwf{=l{mF_@7
zzXZ<-MF=^h?y+)&q0kGI65$Hsgk_l{J3Cx?DHR}&Ay~6QSW;4ilgQH&H{od_TF7v-
z9F}cHYKu@!nu#QAUfz(JCmrJtKUsQZhxKwy(g?}yB+^<4zmn$hi8wNFM<ErGU?DIK
z<{2S5zW8=9IBdjZpq$8sVZ0ukEd#ue&H%~}KkM1QHz!~7$tSvPoBO7eodqRNHB&ck
zTJkpSRgCLPi-hSZL!`g1&NX#gC@3-9RCbj=(P<F9db{~;i{V*WbvRJGsqoW(9sl9?
zsSj_w{?nncv59GG?uMFcSLCndUj9h4aVs-TA90$WEZ@Fn-@Z$8b*`#LGi^@b+g6_G
z6yEyt2Fv~;d28;D+yC;xYk&6khu2^G+5EV7>UXoRy=wSGv2p9%7dHY`MSD)o&O9zn
z+#0tQ7hTXO_2NKaUgd0%hxIz|fnL@obay`+mKE(Py!x-7|KR(YPqkZf94`9P-{pL7
z_m#1R{O5-GDRthP6}N8s+5$SIN-W58U7x<VU$ii>^m=btuYX$G<#jy8>4d^9<-h$G
z&39kFHPKOfr(y5y_pklrmH0KK-_cU6xnkY0$#HX9sdP0ScCS=+sBX`*ss8qu4PS<Z
z5bV1xr#a#Aq1K9>+v(r@y5jr0@SR7R!QJ~Wf2jT0>z#_p8;0D%scTC+^4HZ@Kb_mY
z?XX5=j>c(~f-9>K)Cy~VXWGT47w>d8H}89^=#&37{)0E-op&ZwMMX2eyIlL`=IZ%t
zV}SyhPC++Sv}mth(HHHOnP-%qRkuM;Ey?zq=S-=AlPejIBi&eoOqKTE|7Lb`dGC(O
ziCKA_`uZ(HPhn1#Zq8t{vN0zUS_)FgsrDW24UvpAy8}V@hi8EJ`-Eh`|D?OUxu(2D
zeO<X|)i+ew)%@F0#ERW!*L}a;f$w>6GOQ0at<Hp#Q~n@QBatRePNLwDDj-KL9S+@j
z=be#@0Xr2u`|e$lL8JjGVdV6Xm<#}HLM{ou`)MKRB}r3O#28_?kQ{A?M*skcG!uYX
z_n)5~Jo1cZ7w%`41ayESUx2MC8_flx%ObKy0XyRReh_m&CNfY~#3v;{LfW`Mr5}8G
z?m*K4#=0OF==MIX%H?w=-%U7?^=!9!T{fDfaiD{7aOtSmj$}@+Kg=-!Ktv9oAUrwU
zSzlXFY#yIA-nJCxwos=-W_-n^YM$Y&;nOx_vQOZWfRq<;UYL#gQo{t|ir*XTY$?y*
zx`X=ogBe-X=8gRA`!db!%(dBF8%k6Yw@qF01$ybO83!G`soHwMd3Gs%xTCSM#xZsE
zimo`nWJo)!3vm{^f33UWnGW9xRhnNNn8!E1Df;)wkFVI(IvQWs;qq9mL2m?SzpcN&
z`Bwg;*3sphAO7I_-~MaPmeL<@`|XuC-_-r~*PrbD;ZGJm{D|JQyMFenF2C4%YmzC+
zDTr%2-`ZSo>sP<Bzp-`C@a&}WM6K$Iy0oIhJ$b`emRpWvlLJkI^JACCALQhe`f(Us
zXQ51#$m1J1jnqTgLH@A3t7yYp*Wdrt5Nq7NrObzP?VID4!;5zpu?Du-F~mx|-dLEi
z+I=q?Yiiq0tcd>5+LIv8RS*Wi5dt%VpyWc(D?B=XcWL#(GR{~E3&RIabBr%0B4Ur+
zT*~KgWiA5m6Eknu?|(b_<mr>4b5Lwv+M?B4fyd)M>p=2@Lwr8^-jXPUl8-Mer<Q=#
z3Wyrv)B^(FI2Q`UosFM6b#Gzi(K3{*AU?k+;ur&thuCe-*qta2$auvEC!eQNYe?*W
z@Bo?p2qGbinB*V2NwyPZwc*Pi()ZqblH`dC!Uqw5K&%TqhvQWE>P2KHU%Zz}tbLh5
zp1;R~3JBHtgC25#BanD>VsK<x05~58c23eY@r!KHBn0rK;V)Bw3&W{oz>5P1h@Dw&
zzMu!kN7hb_^xfx#^GhzuVb>cd^2HuNjK#J79>jf0pG;p@I+CLur;JKpO}CxF7YU~I
zD}`@uKK${=K3U^iMe|DEu;t2Sy0{>(V{(kzQ&d^BYxl(~pW2Ejs_>}3v3q)4A<JuB
zZ5iJ4(;r{^>wo)i-@TH*>0{L^_3yvWzOq4Kp80+AD?611o3DNl%DZxH^JcRlNlhsC
z_9%J^eeSnj-E{fyKK=Hamv<HaCitD3|2(y`U}wqgFO+X>&foIp*e}PvJ@e6bbAPqr
z+n0ZHZQ8zhqk7C+w0q|+`3L{J<CU@g*FOB+PX<2gcxPPpCa3JJfAdGb|Hq3tSKs*Y
zC)2OGrjK3zB5yOk$#J@McYQ(5^)L2z-fXFuwX~<69_A=E^*m<rHkIsa#GxresDEA+
zv}xa2&<7fq;%lza>N2_8aOjc!$isPyXt4BV3~TL-C*&F}E*>$21oh%Mm8sor2!)MI
z>xKAxC;IF6-Bm>wG>=;i8pgz(qK)sgC)zsV7pp2frV|!L_%7m&{E3Ly5p=9oJY6l!
z*UvTUrsZAJwzj}}w{`Y@b8>%8M`f;W`h|6_`MqiCiRnTmqdvA4Dl4hZ>lkMa+zb^@
zE6RDl+;x+wV7h9aRc+0?H7SfMb3L;)o#qp(H)a|mvaP!dH{X1}o4vAO^A*{~*$LaV
zYg-Ef+Y1ake)h>f1oEf9^P~4wn}2&{+s(08wqD(`b^50Rf2I1fYd`qbKY#Z9Pd<E2
z|LJ$OeYo-UD?gn1`NnU4_U#}4V&#>8(SGOC>)#sx{2O^=vR{1m$Lj?@`(NYV`|!h8
zs;<ALy8LIaD?j<`jek1-1NARo-Skf--@m@J;r9i9+Va6K#{QqGH+KKB;FVvFe<PtT
zxGej|=CQx}&3}=Ve*YKKfAqJ%`NR4z-uS}!^*8_NFMGaj{>kpY`pLI`uKa`RliNOg
z;}1K2@t5EHqtCy4?XSOH@)zIvuODa{uKc$@{@~BQ_`j@sUj3g1fAE(d{wMCkvMX=?
zLEX>)>JR_qi&x+O$FE=c>p%YHZ?4frfAXDQ{P~~$r;lEn_?tf|`uVs1=>04C@mK%k
zH-G-^Km7Hd+Wz7j+kWw_Z+xI`)x7ejzxW^j`On_}=C6MFUqAhqum9j*_1m|8oBs3Q
zf4H{4;BU6P_75ArKK84kpZxTdpa0GO`NPj&`}?ck`^S+#togTVZ+z$bfBXOamp^=e
z%Ll*t&WG>+@%Mi7;im6?|D!*D^*>&Fdi7skx&G_#eD{lw>%RA$&;I+i|9iaU_CIZ^
z`0%ywU3-7$x8D4>zx>G`F$aG8yDeWBzPICxk8{8A)4%)qH~whc`N3yzUb*qgYnMOD
z{l*)A{fn=E*WU6E>MbAb`hnx}#H-)D_5V8lKv8)8pMEm;+wX1o{P(6;{@dsO{k#A9
zH@hzX<4-y!e!TIsk2ila_7~c(Pi(#Q%WYeXZ*<<6PJC~}FMjp)O3l{4yYlMc-0ibh
zRd0U#*Z<=WzWcA=`nO;HV6*XO&d+Cl`tASu_y6JQCx7y{?|)CR;rkzcQu3pp{?$MI
z$Cgii`1c?D{}r8gRFn7q$B(vE5dl$V$Y2BrBMA_~2nhj1k!@YLscp5xs%`J}*4uG^
zR9giCgdNC)FteFq1PG&yKoVvG*??>my7cz8wf%khKj+DFo}8TXd_V8k`}J{6PWNhJ
zZ@~PirM6@dqO8)3L_~Hs&iiBY8>|~e@CtS?mV_DPB}4B$BD_Hp!3uZ|?IVyD2Krd#
z_coAXR~f|zTJ7gSZ*uX?W*roAVKgQ@O5#DF&p4!ihqI!6?o-h2+}!6nzzA_>WZSqD
zA(Yez7%vgQ<w4<;!UOMAy0I!<iA;n)eZ&RxL~y7|>P{6LmDD(?DhLks-`hJB!YA{P
zj%8<#bJ!5%<DNH5+g<ax)&iP+Xla;Te)gL&1-9&5Tem#4LnZ%M)T2uWi_%@Pg@@}{
zj>-z3<J6}IQ3c0&xlXQy7}rXHU3k{%w+e?HbL*@G<&N>?K6WLK4@2^fk7dK{%SYX~
zjgB6VSo<oNw$!qtNep*9^P0UP3-J~u1WJ+E^;CNf@jdJx<?iQEY*^G|{xna2<^vmU
z)?uqB9;h6$4NL6C6COin1@5PeI_0r#zGOlbEU4Y%{CxtdEhpc_g@*HHT|8Wn^`=L*
z(+~x2S2FI(kyzJf9Xk3H>YXRE6AGb%dOJ)O<UnpJj9PDNWFrRI5Qpy?_7`!ESC$_0
ztU$%GeeIr>>}MA{ampOMXecxz$|kp9KbLA(RpbJ#2neKy*yd68jpo@4^WE%<uS4ky
ztCH{Df;@5jIM>a#aOya{;SlTb0f$EpKG|4nn#hsWU|sjf%Jw@LCI@F#!F8;uJyP}P
zpzZfwggmrOrO2hK*1G=DLHozf*j$Wth0vM9KV0+ZE!)SC@Z11vn%IfcU@iI9>hL23
zlA^HYvmrGsJEtuAzLK(|C8dWk1(1LWPuDE(eNWn43t3iM#ZI@%?4eoC`@h4v<w_3J
zlpT}N>|C=D`yb(sKdpaLP<(W(?5InY$Nulg$8(tnZx*@SC_irhZRGx^y~inx1LMWc
zXUm+NzxCUfJ>i&F@s^3|{Ac+wr*DJy<qSCGF%R?=yS$_wMPxZ1$o>M6-+HjI!bx9g
z*YNE@SPmjBpLmGHhgXZOiobu8knh5$I36j!jbNO$&Mw_gFL$O<tszuTWEldU<#LFk
z_Rp_7pr*NX(2wxHwK|sLc_#;dfLZIx6dovix<4@2S(F2@Dw%+koI99J-CtGVNYAxD
zQWWV?gglZZdZV}rPNiBwiao=qPOvQ3L;2x;dF5~UmBD4DHocFnU5b34=gJPW)j+D*
zwgq`_3^P5dC{QcL5S;e;ktZc@@av$=Z0EyFl6z^q`;!pc+Am4vg|<$t;FJnC#H0H*
z^<?kjJUfTFz)%JT{LH8>%&TI?F~4r#&Kme2<&=jU9Y8Df@+P52d(fP6{Q33(WIZSK
zdPuM|C9t+8_@eMGelRJf?dBqXnj~#j_sHU6^>OO%cw=|sh5i*qyDIk5Ez(fe=L3B=
zb_cb??dr3pi>Kt14`rk23-T0m>%t}VnfQ^#kNPM6X&Sq#k*#P|XZ}6-&u0UhYa`0{
zhx*cW%8co;Z)RrhtABX$I}iygweJrq-%-z8Q_1gq)G?Mav-w`1@`Jg}_Y|Xd%re!5
zg>{pB_WAsuzl<ubF89v9`}`fl$h7|VtCkT{hDvU}|MeBkkV(IF?)j+U{8YdBi>sF>
zCyeI5ubU^HKNugK-M;iM)%2YCg9j$Hc^v?*h6_JU%ulc0T%6WFFpN$DIK(iyHM@Or
zd2;psf=a8&%m7rA_V>({`M>@#HEuBM-kJd(u~#oARbReVPHyP`{281}*B;!RR6aC~
zDS<3aH=)vOfAwNQdv9uVX8G4UGYaj-Pp|(^WqDUUqThM>HE4COe*N25n(fyrwSM>h
znqf}4``Wx|`Rln-Y1sY?1nZMqAUM`vHz_Pzo3C}cErV%yb4K^^?3j6N<7e<{ux>D|
zOf7soH*EfKbyYiO{?RZ866<eNBf!6_*UT7qbsF8YZc9DBytX%NwXA^-r)FhCr3M2t
z!@M43`wP<xt2(t|O*;!l4!<k{+lYC`s9D=J>Q;=#KSAWYU;?j?|NYD~ZQfdbzOrft
zp16gjUw4)?hP@%;mf0|4o;Lu)kVRwMer5)K@I~FMY0a=|0qlYaAd{9w&D_e0c4-5M
z)b+*<%gXZwjl~2sc3Qx?8_fE}wfT7<i#0w2m=v(gfWEQOxNZcEa{v$kg}HHM%Ls@p
zkX`6Z0A(}odCq~cWsklAVK*2u81<_^SpZ7_#xiCw^8~ZI4Nz7ET`G{yzt{p*EAz(I
z;*x23LqER=hEpcP;yMUE4U6Vk&En<~aI9HCyuN5!wrJ+Tz-rlOTv|5oecmzy4iTUg
zZvZ`-JyzT>rv(oUe7|{b;sGLb(BN6I==DpWh7V{BkRO1TYBOL~0UKa6uUZV|^%vXA
zpjZV)lRC@ZMV^5h(Hr-mb|cW>X%`mPpP9h4Yfm8oE(GXUz=iBJ4U8b|Uj+QpJm@h4
zgiWUhsN<3ajDxfw>;^)gy^8Mg&MF{a08FKtUYOPbfi-xLz|^Gy_|Sq{4Wt8LJh^N!
zZoCHc%A`sIWH`XI_{WPSaKjrPy=zvF0g;Px<-N=gE?>y}@PSg=+%=OF`@CB^c9M`Z
zKmFfR^Yx8)A_-?(M1B8`!mFAF5<&vI%Bp<bqk6dwU*ORsK|^w2C|*)n4RN#7b0o2N
zTw0?rEa+?yv9uU^RK(tp@}qsoLP1=pGR-fBSsZ0Q!H6=_FF<dI0brdNO~C2ODqY=J
z9cY#i8Y_t2;-v<hPepf78|?h(CqkLS{!L@3&KeS~?{4%9EVi`R$(b?Y!xAD}THse1
z3mADKzI_~v6INbwZyNPz;gIDGzNq@PxE7`VCv7p&mxx@Ze}IU9spb<0e+iO`l1Al`
z>Agf>EI*%T7s?1FHxh@L{x0n_%e7E{K@Adq>g)1+h)qR}OEdeTQ01Inwuo%*iIRtT
z^ww~y-68cnqF5Atk`N-~VmyD0M3z2*yurwWAsc$@IvvjED;)Z(5@MpUeMX4rd(ENV
zN^d1IF0C6GM{D(5km0pGAyGr>T8=NWL2{;B9kr=?ySF(8d-?>P%+CM9=5%FL2J?$R
zWz;K1r~3^lmZbKI%A+2)uc-@Hi<)|oh^lger@W6qii;x6mr~tqgdA)uYdac?Y%EPc
z3=g6cwt_;qd7>j8OdXC}_X*K6w4%x#CrOMv>5u8A=0mNdl~@x)jt@pQ7aLq(@uMQ5
zk%Z!0)ZwA3fC09wp9J}$SOPoU8J(Ko6UL@WkNR*%g80=soG+Ql^$Bd7h=?I!-=k53
z?9#a>`q^WIXn%P{A0keckbKJLa$zytLB>BR=l8CoeR=d$uk@*FlM(Kp6&0iGZ*vU>
zep@mc)5QG2J97N$wNw6~jQnX^KejAGEWJVSdq(H^VAQD>=Fq-1c|1FKP3woE_8W12
zBqke;0*fIg!jaASOb6#i-sNV=z2rb#H7nZx%FVRdFdrF}265=9Q?<0DCq&`|%+Gz3
zKZ&-SMk%N?R|jcbe{0YAcfx`jS#P7#EGJS3{=)p4<4}>LMRXw+OeJcn@&1=z>aTc*
zmKS0jQyPK1IBDWy_)z^2Cg|kFSW%J0-m|WzQHwsK2)|G*_Cdx*kjwJ|tXCK($kk#3
z7Tr~;fZrCRMeSZ!N&X<Wh)m>IOKVSj-1hz06N#_b6=AR+#19ABej`Oi_wv)d1H$Mz
zXAWV@`;%&a2#G^am5ba0CBL4SHi($tz=+(24Dz@<342Yl<KuaTN`W2L(FYV#O&<Z)
zUepI8_uP7xmco~!<=m?=s+-F8OZbGunA?OjYRNJCsz!`}ehQ9CXE6ieS~X^bUW@Z4
zb@6IbQP&hY`9N|=fTtq6(8iX{4Q~}1JJD{nr38d(`1F-T5hE7X(x{c4#}D@sZpcoD
z;4y4U@{vSlObWXlALc(y@AQaN24m}s`OYv=W0Q!4`<i^8D?xfihB9*SR;IGBK%P)E
z?}{tqxhD!zu{cx$mEv}AxGX7D++06uk142i3l?iqNI^nQM64hZS1SqqWSIPwBK};u
zFQ%9RKipSw_B>C1jo>v%lOaxZlGA2WWn#7BKUgUz8q+;UOkaETuOQDh3dh!sB?%MN
z_2J;*40cH1OiCnB=(Nd)cF-p{RYCs!eJSyVp(La)Jtx+RQ1R;Rs&-;1^5^n8WbjDL
z*&cEdx0>J{S6`bMJ~k2=HXwNJ<r~k*Yqmzv+ev(BOnP7llNsP+`R`}Fak%!zmcLNp
zHI0PizEk0=eZBVsJwr=!QC7(n%2Yv5T9|iFX$vewYDqgA@f(+O4i?I-Id`IeH7Kf0
znCXkcc2P=fY?ut}Or4H^!Ek7J*l25HvL$4KS%XE)aNAE#b){iRQc<#xUpOO2dC;>|
z7%prI3&AL9HE^%)k++wK#9I0UEU3OQ<9dfKIDA+j_xHw(6cjie7ME}D@V^O<!1Bsw
zArUR6E4K+(s_7c%0A|&h(~5gh(Q=*)<&OPVAq9S@uVg2lry`L8+Dkhj!IIgl+d-$f
z>^_uVTdgsrTOUd?w6+ouK4S$1u17?b$%guyA;e%|`3m$**NLIt;1rQas0mE$7*R|0
zVdM`N#?m}}igVnpx@n1)s^p+^fj#ANw`f_!r5B-WYOrl;MZ=AgAN8ep&#}g#UPMbC
z#pWQr5EaE}_w@;9mt)+zg#i)6cxh4XaVUo~d)YXi>K9)n^mIQFUGr4>rbj^&vXL9+
zk5<!oP_!^T=m&M0pen^Hqoy_b^MOyp$o-vUB&sK`@aU1+%E*UIu{+`xgNbz?mt)Ce
z@&-;Cl+58rn>&-R#2#S=+*6uQbvi65OOC3l4}gWSY0=P3aa72xR?O&j^W#*Xj+H4Q
zur~!gKJe2el#oN{GI3~A?G;a?q*MY8l&FHpYAJ^k-~|4s=s#P|VIq5Y@h~KxQf7OE
zTaminFc5+Y;gpjhiA@<vJE=pQ20vIIy#bAvjt7OyTEh|Oikx?>d@9Aey!MD7^khXX
z5~a>ep12@qi@ki>IKl`*hXNbb(;4aR%X}g};8w;D6V{qgh+CyBFOPxoxTOy>`P^&B
zXl@-oLez`J>pF}+i0<4%+aon}qPnWn&pn(~9uH0LA>Z64H_<wdAuE_snBlgRfP@AK
z0!rfKu&wONIe}7cIyMl`q@iJRy(f1+NouQa!yudJOMU~=n6TuYj!<|&MfR{2qLQD~
zDo8;Ej8||_?%KikKTZ6ko}CUMRyLrM+qS|ZXT>HjuPY@K^r7&w?ifK=Fb>yG<01Uy
zQ<+~SjtFI2WP+$Jn%KRCKV?>3M|-zYD(&p+sxvzqUU;EaSm01{MnN?7CG@iU;FxN5
zJa(i%E+nb7*9Z1TK|aj-C1Y5_8wBf(nrSU?Z1>gp@js^Og`qxbmcTz+G965q=}z?Y
zW8`#OA?V`MLjLIh|99z3w7W%~5T7aIa06V2Y2tu$P0P6OQQ;++dq-Zrqg8v^Pw7HQ
zx`$U?(V!c))0C1jE9p?)z$CMI-U<9P>|N7N0t&^+79Mh|6vZ`&!*G}=CIjs`r%zPg
zxh;`w5V1oH8B*IE88)l_2iDU<q1xMUIYCXFbUfa#t-RZVsEFC@(e}$eSihgrAo4#c
z{wF4L<Sse<Y$eUhrCEaIGjQ;PQC{txpeRzBOejqtEK7k{`xL3S{Q`-A3D6W2I@ngR
z0+Jh>`iSuD%1+OO_NzE=YyrjoU`?f}c^raba$0YqU|lQ$$=@%nzJ3CYmo-X%CkCGt
zcg0{sOx&6bZ+VBmoPHacAsD&078oF+N#Gb^oR~#$yV@|fdlTa&E@C=B=uF=eO~h!)
zZ0g9ngmmJKN;=eu%fN&R6r}#13t$nI?s9DM0K3t{Q`qoux8slSq~0b)T!t<=`Qxj7
zb)8s3S8rx~;;)~b`DOCu9m7<2hpf9xb$L-ae=j3*<&P_CO3j^X+TO7Xe<=)$qeH-f
zV*%DRP=MRiPFj?*@yz+bxrZ9%?w6Vg_3ZkZa%k?}?=xd_cg=&tGwS)R$&snK$(7H+
ziD_yZEPc51<FMk^l_juz2W%hFKm1e&5*@8-4lEzCY%ZJhz(xJnj!I#^`SJXO?zM4t
z{qC<zz!9KXy}dcJ@(-i-)$8fW=YMZnjO+h1&VPAtPPwqOyR$H}yf(M+;guKDa~6=D
z-2Y}ltpzac%FN8_GB6QabT2-A0J_n-pP%U$cfk6RpZ{Z-o&R}BJ-KWFui`WF&;Qn|
z=70IksN4A4G-dvHQ>k9xn3-PLG3vH<&7fSQQ)@QYmtU>SX;wDDp=%kW3Z`cZ^P7Kf
zPLIvJGS6;)u&$n5|Iao+?bS1SaA+`_K$mD;KRIjA85fOU1`q0ZQ)=T&^W?(zGu626
ze@5jbNR)J--f9MXy%8*!0CDOZh{t9ZcT8#};HV8|5PeM<|M!zl4U!`**mwlEb<^ga
Xh!X_U;M@RG_pPOQ?cxro7n}YcFvyK}

diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/autotest.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/autotest.py
deleted file mode 100644
index 92d8760..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/autotest.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# This should be equivalent to running regrtest.py from the cmdline.
-# It can be especially handy if you're in an interactive shell, e.g.,
-# from test import autotest.
-
-from test import regrtest
-regrtest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/bad_coding.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/bad_coding.py
deleted file mode 100644
index 2f833a6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/bad_coding.py
+++ /dev/null
@@ -1 +0,0 @@
-# -*- coding: uft-8 -*-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/bad_coding2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/bad_coding2.py
deleted file mode 100644
index ea901b5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/bad_coding2.py
+++ /dev/null
@@ -1,2 +0,0 @@
-#coding: utf8
-print '我'
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badcert.pem b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badcert.pem
deleted file mode 100644
index 207c53e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badcert.pem
+++ /dev/null
@@ -1,36 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXwIBAAKBgQC8ddrhm+LutBvjYcQlnH21PPIseJ1JVG2HMmN2CmZk2YukO+9L
-opdJhTvbGfEj0DQs1IE8M+kTUyOmuKfVrFMKwtVeCJphrAnhoz7TYOuLBSqt7lVH
-fhi/VwovESJlaBOp+WMnfhcduPEYHYx/6cnVapIkZnLt30zu2um+DzA9jQIDAQAB
-AoGBAK0FZpaKj6WnJZN0RqhhK+ggtBWwBnc0U/ozgKz2j1s3fsShYeiGtW6CK5nU
-D1dZ5wzhbGThI7LiOXDvRucc9n7vUgi0alqPQ/PFodPxAN/eEYkmXQ7W2k7zwsDA
-IUK0KUhktQbLu8qF/m8qM86ba9y9/9YkXuQbZ3COl5ahTZrhAkEA301P08RKv3KM
-oXnGU2UHTuJ1MAD2hOrPxjD4/wxA/39EWG9bZczbJyggB4RHu0I3NOSFjAm3HQm0
-ANOu5QK9owJBANgOeLfNNcF4pp+UikRFqxk5hULqRAWzVxVrWe85FlPm0VVmHbb/
-loif7mqjU8o1jTd/LM7RD9f2usZyE2psaw8CQQCNLhkpX3KO5kKJmS9N7JMZSc4j
-oog58yeYO8BBqKKzpug0LXuQultYv2K4veaIO04iL9VLe5z9S/Q1jaCHBBuXAkEA
-z8gjGoi1AOp6PBBLZNsncCvcV/0aC+1se4HxTNo2+duKSDnbq+ljqOM+E7odU+Nq
-ewvIWOG//e8fssd0mq3HywJBAJ8l/c8GVmrpFTx8r/nZ2Pyyjt3dH1widooDXYSV
-q6Gbf41Llo5sYAtmxdndTLASuHKecacTgZVhy0FryZpLKrU=
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-Just bad cert data
------END CERTIFICATE-----
------BEGIN RSA PRIVATE KEY-----
-MIICXwIBAAKBgQC8ddrhm+LutBvjYcQlnH21PPIseJ1JVG2HMmN2CmZk2YukO+9L
-opdJhTvbGfEj0DQs1IE8M+kTUyOmuKfVrFMKwtVeCJphrAnhoz7TYOuLBSqt7lVH
-fhi/VwovESJlaBOp+WMnfhcduPEYHYx/6cnVapIkZnLt30zu2um+DzA9jQIDAQAB
-AoGBAK0FZpaKj6WnJZN0RqhhK+ggtBWwBnc0U/ozgKz2j1s3fsShYeiGtW6CK5nU
-D1dZ5wzhbGThI7LiOXDvRucc9n7vUgi0alqPQ/PFodPxAN/eEYkmXQ7W2k7zwsDA
-IUK0KUhktQbLu8qF/m8qM86ba9y9/9YkXuQbZ3COl5ahTZrhAkEA301P08RKv3KM
-oXnGU2UHTuJ1MAD2hOrPxjD4/wxA/39EWG9bZczbJyggB4RHu0I3NOSFjAm3HQm0
-ANOu5QK9owJBANgOeLfNNcF4pp+UikRFqxk5hULqRAWzVxVrWe85FlPm0VVmHbb/
-loif7mqjU8o1jTd/LM7RD9f2usZyE2psaw8CQQCNLhkpX3KO5kKJmS9N7JMZSc4j
-oog58yeYO8BBqKKzpug0LXuQultYv2K4veaIO04iL9VLe5z9S/Q1jaCHBBuXAkEA
-z8gjGoi1AOp6PBBLZNsncCvcV/0aC+1se4HxTNo2+duKSDnbq+ljqOM+E7odU+Nq
-ewvIWOG//e8fssd0mq3HywJBAJ8l/c8GVmrpFTx8r/nZ2Pyyjt3dH1widooDXYSV
-q6Gbf41Llo5sYAtmxdndTLASuHKecacTgZVhy0FryZpLKrU=
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-Just bad cert data
------END CERTIFICATE-----
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badkey.pem b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badkey.pem
deleted file mode 100644
index 51baff9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badkey.pem
+++ /dev/null
@@ -1,40 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-Bad Key, though the cert should be OK
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIICpzCCAhCgAwIBAgIJAP+qStv1cIGNMA0GCSqGSIb3DQEBBQUAMIGJMQswCQYD
-VQQGEwJVUzERMA8GA1UECBMIRGVsYXdhcmUxEzARBgNVBAcTCldpbG1pbmd0b24x
-IzAhBgNVBAoTGlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uMQwwCgYDVQQLEwNT
-U0wxHzAdBgNVBAMTFnNvbWVtYWNoaW5lLnB5dGhvbi5vcmcwHhcNMDcwODI3MTY1
-NDUwWhcNMTMwMjE2MTY1NDUwWjCBiTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCERl
-bGF3YXJlMRMwEQYDVQQHEwpXaWxtaW5ndG9uMSMwIQYDVQQKExpQeXRob24gU29m
-dHdhcmUgRm91bmRhdGlvbjEMMAoGA1UECxMDU1NMMR8wHQYDVQQDExZzb21lbWFj
-aGluZS5weXRob24ub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8ddrh
-m+LutBvjYcQlnH21PPIseJ1JVG2HMmN2CmZk2YukO+9LopdJhTvbGfEj0DQs1IE8
-M+kTUyOmuKfVrFMKwtVeCJphrAnhoz7TYOuLBSqt7lVHfhi/VwovESJlaBOp+WMn
-fhcduPEYHYx/6cnVapIkZnLt30zu2um+DzA9jQIDAQABoxUwEzARBglghkgBhvhC
-AQEEBAMCBkAwDQYJKoZIhvcNAQEFBQADgYEAF4Q5BVqmCOLv1n8je/Jw9K669VXb
-08hyGzQhkemEBYQd6fzQ9A/1ZzHkJKb1P6yreOLSEh4KcxYPyrLRC1ll8nr5OlCx
-CMhKkTnR6qBsdNV0XtdU2+N25hqW+Ma4ZeqsN/iiJVCGNOZGnvQuvCAGWF8+J/f/
-iHkC6gGdBJhogs4=
------END CERTIFICATE-----
------BEGIN RSA PRIVATE KEY-----
-Bad Key, though the cert should be OK
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIICpzCCAhCgAwIBAgIJAP+qStv1cIGNMA0GCSqGSIb3DQEBBQUAMIGJMQswCQYD
-VQQGEwJVUzERMA8GA1UECBMIRGVsYXdhcmUxEzARBgNVBAcTCldpbG1pbmd0b24x
-IzAhBgNVBAoTGlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uMQwwCgYDVQQLEwNT
-U0wxHzAdBgNVBAMTFnNvbWVtYWNoaW5lLnB5dGhvbi5vcmcwHhcNMDcwODI3MTY1
-NDUwWhcNMTMwMjE2MTY1NDUwWjCBiTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCERl
-bGF3YXJlMRMwEQYDVQQHEwpXaWxtaW5ndG9uMSMwIQYDVQQKExpQeXRob24gU29m
-dHdhcmUgRm91bmRhdGlvbjEMMAoGA1UECxMDU1NMMR8wHQYDVQQDExZzb21lbWFj
-aGluZS5weXRob24ub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8ddrh
-m+LutBvjYcQlnH21PPIseJ1JVG2HMmN2CmZk2YukO+9LopdJhTvbGfEj0DQs1IE8
-M+kTUyOmuKfVrFMKwtVeCJphrAnhoz7TYOuLBSqt7lVHfhi/VwovESJlaBOp+WMn
-fhcduPEYHYx/6cnVapIkZnLt30zu2um+DzA9jQIDAQABoxUwEzARBglghkgBhvhC
-AQEEBAMCBkAwDQYJKoZIhvcNAQEFBQADgYEAF4Q5BVqmCOLv1n8je/Jw9K669VXb
-08hyGzQhkemEBYQd6fzQ9A/1ZzHkJKb1P6yreOLSEh4KcxYPyrLRC1ll8nr5OlCx
-CMhKkTnR6qBsdNV0XtdU2+N25hqW+Ma4ZeqsN/iiJVCGNOZGnvQuvCAGWF8+J/f/
-iHkC6gGdBJhogs4=
------END CERTIFICATE-----
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future3.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future3.py
deleted file mode 100644
index 7a8f6c1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future3.py
+++ /dev/null
@@ -1,10 +0,0 @@
-"""This is a test"""
-from __future__ import nested_scopes
-from __future__ import rested_snopes
-
-def f(x):
-    def g(y):
-        return x + y
-    return g
-
-result = f(2)(4)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future4.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future4.py
deleted file mode 100644
index dbf447f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future4.py
+++ /dev/null
@@ -1,10 +0,0 @@
-"""This is a test"""
-import __future__
-from __future__ import nested_scopes
-
-def f(x):
-    def g(y):
-        return x + y
-    return g
-
-result = f(2)(4)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future5.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future5.py
deleted file mode 100644
index a4cd91c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future5.py
+++ /dev/null
@@ -1,12 +0,0 @@
-"""This is a test"""
-from __future__ import nested_scopes
-import foo
-from __future__ import nested_scopes
-
-
-def f(x):
-    def g(y):
-        return x + y
-    return g
-
-result = f(2)(4)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future6.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future6.py
deleted file mode 100644
index f01d788..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future6.py
+++ /dev/null
@@ -1,10 +0,0 @@
-"""This is a test"""
-"this isn't a doc string"
-from __future__ import nested_scopes
-
-def f(x):
-    def g(y):
-        return x + y
-    return g
-
-result = f(2)(4)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future7.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future7.py
deleted file mode 100644
index 744d110..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future7.py
+++ /dev/null
@@ -1,11 +0,0 @@
-"""This is a test"""
-
-from __future__ import nested_scopes; import string; from __future__ import \
-     nested_scopes
-
-def f(x):
-    def g(y):
-        return x + y
-    return g
-
-result = f(2)(4)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future8.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future8.py
deleted file mode 100644
index 0cbdc00..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future8.py
+++ /dev/null
@@ -1,10 +0,0 @@
-"""This is a test"""
-
-from __future__ import *
-
-def f(x):
-    def g(y):
-        return x + y
-    return g
-
-print f(2)(4)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future9.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future9.py
deleted file mode 100644
index 6f51310..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_future9.py
+++ /dev/null
@@ -1,10 +0,0 @@
-"""This is a test"""
-
-from __future__ import nested_scopes, braces
-
-def f(x):
-    def g(y):
-        return x + y
-    return g
-
-print f(2)(4)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_nocaret.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_nocaret.py
deleted file mode 100644
index b67e9e4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/badsyntax_nocaret.py
+++ /dev/null
@@ -1,2 +0,0 @@
-def f(x):
-    [x for x in x] = x
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/buffer_tests.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/buffer_tests.py
deleted file mode 100644
index aa30f77..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/buffer_tests.py
+++ /dev/null
@@ -1,206 +0,0 @@
-# Tests that work for both bytes and buffer objects.
-# See PEP 3137.
-
-import struct
-import sys
-
-class MixinBytesBufferCommonTests(object):
-    """Tests that work for both bytes and buffer objects.
-    See PEP 3137.
-    """
-
-    def marshal(self, x):
-        """Convert x into the appropriate type for these tests."""
-        raise RuntimeError('test class must provide a marshal method')
-
-    def test_islower(self):
-        self.assertFalse(self.marshal(b'').islower())
-        self.assertTrue(self.marshal(b'a').islower())
-        self.assertFalse(self.marshal(b'A').islower())
-        self.assertFalse(self.marshal(b'\n').islower())
-        self.assertTrue(self.marshal(b'abc').islower())
-        self.assertFalse(self.marshal(b'aBc').islower())
-        self.assertTrue(self.marshal(b'abc\n').islower())
-        self.assertRaises(TypeError, self.marshal(b'abc').islower, 42)
-
-    def test_isupper(self):
-        self.assertFalse(self.marshal(b'').isupper())
-        self.assertFalse(self.marshal(b'a').isupper())
-        self.assertTrue(self.marshal(b'A').isupper())
-        self.assertFalse(self.marshal(b'\n').isupper())
-        self.assertTrue(self.marshal(b'ABC').isupper())
-        self.assertFalse(self.marshal(b'AbC').isupper())
-        self.assertTrue(self.marshal(b'ABC\n').isupper())
-        self.assertRaises(TypeError, self.marshal(b'abc').isupper, 42)
-
-    def test_istitle(self):
-        self.assertFalse(self.marshal(b'').istitle())
-        self.assertFalse(self.marshal(b'a').istitle())
-        self.assertTrue(self.marshal(b'A').istitle())
-        self.assertFalse(self.marshal(b'\n').istitle())
-        self.assertTrue(self.marshal(b'A Titlecased Line').istitle())
-        self.assertTrue(self.marshal(b'A\nTitlecased Line').istitle())
-        self.assertTrue(self.marshal(b'A Titlecased, Line').istitle())
-        self.assertFalse(self.marshal(b'Not a capitalized String').istitle())
-        self.assertFalse(self.marshal(b'Not\ta Titlecase String').istitle())
-        self.assertFalse(self.marshal(b'Not--a Titlecase String').istitle())
-        self.assertFalse(self.marshal(b'NOT').istitle())
-        self.assertRaises(TypeError, self.marshal(b'abc').istitle, 42)
-
-    def test_isspace(self):
-        self.assertFalse(self.marshal(b'').isspace())
-        self.assertFalse(self.marshal(b'a').isspace())
-        self.assertTrue(self.marshal(b' ').isspace())
-        self.assertTrue(self.marshal(b'\t').isspace())
-        self.assertTrue(self.marshal(b'\r').isspace())
-        self.assertTrue(self.marshal(b'\n').isspace())
-        self.assertTrue(self.marshal(b' \t\r\n').isspace())
-        self.assertFalse(self.marshal(b' \t\r\na').isspace())
-        self.assertRaises(TypeError, self.marshal(b'abc').isspace, 42)
-
-    def test_isalpha(self):
-        self.assertFalse(self.marshal(b'').isalpha())
-        self.assertTrue(self.marshal(b'a').isalpha())
-        self.assertTrue(self.marshal(b'A').isalpha())
-        self.assertFalse(self.marshal(b'\n').isalpha())
-        self.assertTrue(self.marshal(b'abc').isalpha())
-        self.assertFalse(self.marshal(b'aBc123').isalpha())
-        self.assertFalse(self.marshal(b'abc\n').isalpha())
-        self.assertRaises(TypeError, self.marshal(b'abc').isalpha, 42)
-
-    def test_isalnum(self):
-        self.assertFalse(self.marshal(b'').isalnum())
-        self.assertTrue(self.marshal(b'a').isalnum())
-        self.assertTrue(self.marshal(b'A').isalnum())
-        self.assertFalse(self.marshal(b'\n').isalnum())
-        self.assertTrue(self.marshal(b'123abc456').isalnum())
-        self.assertTrue(self.marshal(b'a1b3c').isalnum())
-        self.assertFalse(self.marshal(b'aBc000 ').isalnum())
-        self.assertFalse(self.marshal(b'abc\n').isalnum())
-        self.assertRaises(TypeError, self.marshal(b'abc').isalnum, 42)
-
-    def test_isdigit(self):
-        self.assertFalse(self.marshal(b'').isdigit())
-        self.assertFalse(self.marshal(b'a').isdigit())
-        self.assertTrue(self.marshal(b'0').isdigit())
-        self.assertTrue(self.marshal(b'0123456789').isdigit())
-        self.assertFalse(self.marshal(b'0123456789a').isdigit())
-
-        self.assertRaises(TypeError, self.marshal(b'abc').isdigit, 42)
-
-    def test_lower(self):
-        self.assertEqual(b'hello', self.marshal(b'HeLLo').lower())
-        self.assertEqual(b'hello', self.marshal(b'hello').lower())
-        self.assertRaises(TypeError, self.marshal(b'hello').lower, 42)
-
-    def test_upper(self):
-        self.assertEqual(b'HELLO', self.marshal(b'HeLLo').upper())
-        self.assertEqual(b'HELLO', self.marshal(b'HELLO').upper())
-        self.assertRaises(TypeError, self.marshal(b'hello').upper, 42)
-
-    def test_capitalize(self):
-        self.assertEqual(b' hello ', self.marshal(b' hello ').capitalize())
-        self.assertEqual(b'Hello ', self.marshal(b'Hello ').capitalize())
-        self.assertEqual(b'Hello ', self.marshal(b'hello ').capitalize())
-        self.assertEqual(b'Aaaa', self.marshal(b'aaaa').capitalize())
-        self.assertEqual(b'Aaaa', self.marshal(b'AaAa').capitalize())
-
-        self.assertRaises(TypeError, self.marshal(b'hello').capitalize, 42)
-
-    def test_ljust(self):
-        self.assertEqual(b'abc       ', self.marshal(b'abc').ljust(10))
-        self.assertEqual(b'abc   ', self.marshal(b'abc').ljust(6))
-        self.assertEqual(b'abc', self.marshal(b'abc').ljust(3))
-        self.assertEqual(b'abc', self.marshal(b'abc').ljust(2))
-        self.assertEqual(b'abc*******', self.marshal(b'abc').ljust(10, '*'))
-        self.assertRaises(TypeError, self.marshal(b'abc').ljust)
-
-    def test_rjust(self):
-        self.assertEqual(b'       abc', self.marshal(b'abc').rjust(10))
-        self.assertEqual(b'   abc', self.marshal(b'abc').rjust(6))
-        self.assertEqual(b'abc', self.marshal(b'abc').rjust(3))
-        self.assertEqual(b'abc', self.marshal(b'abc').rjust(2))
-        self.assertEqual(b'*******abc', self.marshal(b'abc').rjust(10, '*'))
-        self.assertRaises(TypeError, self.marshal(b'abc').rjust)
-
-    def test_center(self):
-        self.assertEqual(b'   abc    ', self.marshal(b'abc').center(10))
-        self.assertEqual(b' abc  ', self.marshal(b'abc').center(6))
-        self.assertEqual(b'abc', self.marshal(b'abc').center(3))
-        self.assertEqual(b'abc', self.marshal(b'abc').center(2))
-        self.assertEqual(b'***abc****', self.marshal(b'abc').center(10, '*'))
-        self.assertRaises(TypeError, self.marshal(b'abc').center)
-
-    def test_swapcase(self):
-        self.assertEqual(b'hEllO CoMPuTErS',
-            self.marshal(b'HeLLo cOmpUteRs').swapcase())
-
-        self.assertRaises(TypeError, self.marshal(b'hello').swapcase, 42)
-
-    def test_zfill(self):
-        self.assertEqual(b'123', self.marshal(b'123').zfill(2))
-        self.assertEqual(b'123', self.marshal(b'123').zfill(3))
-        self.assertEqual(b'0123', self.marshal(b'123').zfill(4))
-        self.assertEqual(b'+123', self.marshal(b'+123').zfill(3))
-        self.assertEqual(b'+123', self.marshal(b'+123').zfill(4))
-        self.assertEqual(b'+0123', self.marshal(b'+123').zfill(5))
-        self.assertEqual(b'-123', self.marshal(b'-123').zfill(3))
-        self.assertEqual(b'-123', self.marshal(b'-123').zfill(4))
-        self.assertEqual(b'-0123', self.marshal(b'-123').zfill(5))
-        self.assertEqual(b'000', self.marshal(b'').zfill(3))
-        self.assertEqual(b'34', self.marshal(b'34').zfill(1))
-        self.assertEqual(b'0034', self.marshal(b'34').zfill(4))
-
-        self.assertRaises(TypeError, self.marshal(b'123').zfill)
-
-    def test_expandtabs(self):
-        self.assertEqual(b'abc\rab      def\ng       hi',
-                         self.marshal(b'abc\rab\tdef\ng\thi').expandtabs())
-        self.assertEqual(b'abc\rab      def\ng       hi',
-                         self.marshal(b'abc\rab\tdef\ng\thi').expandtabs(8))
-        self.assertEqual(b'abc\rab  def\ng   hi',
-                         self.marshal(b'abc\rab\tdef\ng\thi').expandtabs(4))
-        self.assertEqual(b'abc\r\nab  def\ng   hi',
-                         self.marshal(b'abc\r\nab\tdef\ng\thi').expandtabs(4))
-        self.assertEqual(b'abc\rab      def\ng       hi',
-                         self.marshal(b'abc\rab\tdef\ng\thi').expandtabs())
-        self.assertEqual(b'abc\rab      def\ng       hi',
-                         self.marshal(b'abc\rab\tdef\ng\thi').expandtabs(8))
-        self.assertEqual(b'abc\r\nab\r\ndef\ng\r\nhi',
-            self.marshal(b'abc\r\nab\r\ndef\ng\r\nhi').expandtabs(4))
-        self.assertEqual(b'  a\n b', self.marshal(b' \ta\n\tb').expandtabs(1))
-
-        self.assertRaises(TypeError, self.marshal(b'hello').expandtabs, 42, 42)
-        # This test is only valid when sizeof(int) == sizeof(void*) == 4.
-        if sys.maxint < (1 << 32) and struct.calcsize('P') == 4:
-            self.assertRaises(OverflowError,
-                              self.marshal(b'\ta\n\tb').expandtabs, sys.maxint)
-
-    def test_title(self):
-        self.assertEqual(b' Hello ', self.marshal(b' hello ').title())
-        self.assertEqual(b'Hello ', self.marshal(b'hello ').title())
-        self.assertEqual(b'Hello ', self.marshal(b'Hello ').title())
-        self.assertEqual(b'Format This As Title String',
-                         self.marshal(b'fOrMaT thIs aS titLe String').title())
-        self.assertEqual(b'Format,This-As*Title;String',
-                         self.marshal(b'fOrMaT,thIs-aS*titLe;String').title())
-        self.assertEqual(b'Getint', self.marshal(b'getInt').title())
-        self.assertRaises(TypeError, self.marshal(b'hello').title, 42)
-
-    def test_splitlines(self):
-        self.assertEqual([b'abc', b'def', b'', b'ghi'],
-                         self.marshal(b'abc\ndef\n\rghi').splitlines())
-        self.assertEqual([b'abc', b'def', b'', b'ghi'],
-                         self.marshal(b'abc\ndef\n\r\nghi').splitlines())
-        self.assertEqual([b'abc', b'def', b'ghi'],
-                         self.marshal(b'abc\ndef\r\nghi').splitlines())
-        self.assertEqual([b'abc', b'def', b'ghi'],
-                         self.marshal(b'abc\ndef\r\nghi\n').splitlines())
-        self.assertEqual([b'abc', b'def', b'ghi', b''],
-                         self.marshal(b'abc\ndef\r\nghi\n\r').splitlines())
-        self.assertEqual([b'', b'abc', b'def', b'ghi', b''],
-                         self.marshal(b'\nabc\ndef\r\nghi\n\r').splitlines())
-        self.assertEqual([b'\n', b'abc\n', b'def\r\n', b'ghi\n', b'\r'],
-                         self.marshal(b'\nabc\ndef\r\nghi\n\r').splitlines(1))
-
-        self.assertRaises(TypeError, self.marshal(b'abc').splitlines, 42, 42)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cfgparser.1 b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cfgparser.1
deleted file mode 100644
index 02b0dbc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cfgparser.1
+++ /dev/null
@@ -1,2 +0,0 @@
-[Foo Bar]
-foo=newbar
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/check_soundcard.vbs b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/check_soundcard.vbs
deleted file mode 100644
index 170d380..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/check_soundcard.vbs
+++ /dev/null
@@ -1,13 +0,0 @@
-rem Check for a working sound-card - exit with 0 if OK, 1 otherwise.
-set wmi = GetObject("winmgmts:")
-set scs = wmi.InstancesOf("win32_sounddevice")
-for each sc in scs
-   set status = sc.Properties_("Status")
-   wscript.Echo(sc.Properties_("Name") + "/" + status)
-   if status = "OK" then
-       wscript.Quit 0 rem normal exit
-   end if
-next
-rem No sound card found - exit with status code of 1
-wscript.Quit 1
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5-utf8.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5-utf8.txt
deleted file mode 100644
index a0a534a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5-utf8.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-如何在 Python 中使用既有的 C library?
- 在資訊科技快速發展的今天, 開發及測試軟體的速度是不容忽視的
-課題. 為加快開發及測試的速度, 我們便常希望能利用一些已開發好的
-library, 並有一個 fast prototyping 的 programming language 可
-供使用. 目前有許許多多的 library 是以 C 寫成, 而 Python 是一個
-fast prototyping 的 programming language. 故我們希望能將既有的
-C library 拿到 Python 的環境中測試及整合. 其中最主要也是我們所
-要討論的問題就是:
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5.txt
deleted file mode 100644
index f442495..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-¦p¦ó¦b Python ¤¤¨Ï¥Î¬J¦³ªº C library?
-¡@¦b¸ê°T¬ì§Þ§Ö³tµo®iªº¤µ¤Ñ, ¶}µo¤Î´ú¸Õ³nÅ骺³t«×¬O¤£®e©¿µøªº
-½ÒÃD. ¬°¥[§Ö¶}µo¤Î´ú¸Õªº³t«×, §Ú­Ì«K±`§Æ±æ¯à§Q¥Î¤@¨Ç¤w¶}µo¦nªº
-library, ¨Ã¦³¤@­Ó fast prototyping ªº programming language ¥i
-¨Ñ¨Ï¥Î. ¥Ø«e¦³³\³\¦h¦hªº library ¬O¥H C ¼g¦¨, ¦Ó Python ¬O¤@­Ó
-fast prototyping ªº programming language. ¬G§Ú­Ì§Æ±æ¯à±N¬J¦³ªº
-C library ®³¨ì Python ªºÀô¹Ò¤¤´ú¸Õ¤Î¾ã¦X. ¨ä¤¤³Ì¥D­n¤]¬O§Ú­Ì©Ò
-­n°Q½×ªº°ÝÃD´N¬O:
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5hkscs-utf8.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5hkscs-utf8.txt
deleted file mode 100644
index f744ce9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5hkscs-utf8.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-𠄌Ě鵮罓洆
-ÊÊ̄ê êê̄
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5hkscs.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5hkscs.txt
deleted file mode 100644
index 81c42b3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/big5hkscs.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-ˆEˆ\Šs‹ÚØ
-ˆfˆbˆ§ ˆ§ˆ£
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/cp949-utf8.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/cp949-utf8.txt
deleted file mode 100644
index 5655e38..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/cp949-utf8.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-똠방각하 펲시콜라
-
-㉯㉯납!! 因九月패믤릔궈 ⓡⓖ훀¿¿¿ 긍뒙 ⓔ뎨 ㉯. .
-亞영ⓔ능횹 . . . . 서울뤄 뎐학乙 家훀 ! ! !ㅠ.ㅠ
-흐흐흐 ㄱㄱㄱ☆ㅠ_ㅠ 어릨 탸콰긐 뎌응 칑九들乙 ㉯드긐
-설릌 家훀 . . . . 굴애쉌 ⓔ궈 ⓡ릘㉱긐 因仁川女中까즼
-와쒀훀 ! ! 亞영ⓔ 家능궈 ☆上관 없능궈능 亞능뒈훀 글애듴
-ⓡ려듀九 싀풔숴훀 어릨 因仁川女中싁⑨들앜!! ㉯㉯납♡ ⌒⌒*
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/cp949.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/cp949.txt
deleted file mode 100644
index 16549aa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/cp949.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Œc¹æ°¢ÇÏ ¼„½ÃÄݶó
-
-¨À¨À³³!! ì×ÎúêÅÆÐ’æp±Å ¨Þ¨ÓÄR¢¯¢¯¢¯ ±àŠ– ¨Ñµ³ ¨À. .
-䬿µ¨Ñ´ÉÈ . . . . ¼­¿ï·ï µ¯ÇÐëà Ê«ÄR ! ! !¤Ð.¤Ð
-ÈåÈåÈå ¤¡¤¡¤¡¡Ù¤Ð_¤Ð ¾îŠ ÅËÄâƒO µ®ÀÀ ¯hÎúµéëà ¨ÀµåƒO
-¼³j Ê«ÄR . . . . ±¼¾Öšf ¨Ñ±Å ¨Þt¨ÂƒO ì×ìÒô¹åüñé±î£Ž
-¿Í¾¬ÄR ! ! 䬿µ¨Ñ Ê«´É±Å ¡Ùß¾°ü ¾ø´É±Å´É 䬴ɵØÄR ±Û¾ÖŠÛ
-¨Þ·ÁµàÎú šÃÇ´½¤ÄR ¾îŠ ì×ìÒô¹åüñéšÄ¨ïµéÚ!! ¨À¨À³³¢½ ¡Ò¡Ò*
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jisx0213-utf8.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jisx0213-utf8.txt
deleted file mode 100644
index 9a56a2e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jisx0213-utf8.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-Python の開発は、1990 年ごろから開始されています。
-開発者の Guido van Rossum は教育用のプログラミング言語「ABC」の開発に参加していましたが、ABC は実用上の目的にはあまり適していませんでした。
-このため、Guido はより実用的なプログラミング言語の開発を開始し、英国 BBS 放送のコメディ番組「モンティ パイソン」のファンである Guido はこの言語を「Python」と名づけました。
-このような背景から生まれた Python の言語設計は、「シンプル」で「習得が容易」という目標に重点が置かれています。
-多くのスクリプト系言語ではユーザの目先の利便性を優先して色々な機能を言語要素として取り入れる場合が多いのですが、Python ではそういった小細工が追加されることはあまりありません。
-言語自体の機能は最小限に押さえ、必要な機能は拡張モジュールとして追加する、というのが Python のポリシーです。
-
-ノか゚ ト゚ トキ喝塀 𡚴𪎌 麀齁𩛰
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jisx0213.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jisx0213.txt
deleted file mode 100644
index 51e9268..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jisx0213.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-Python ¤Î³«È¯¤Ï¡¢1990 ǯ¤´¤í¤«¤é³«»Ï¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
-³«È¯¼Ô¤Î Guido van Rossum ¤Ï¶µ°éÍÑ¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¡ÖABC¡×¤Î³«È¯¤Ë»²²Ã¤·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢ABC ¤Ï¼ÂÍѾå¤ÎÌÜŪ¤Ë¤Ï¤¢¤Þ¤êŬ¤·¤Æ¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£
-¤³¤Î¤¿¤á¡¢Guido ¤Ï¤è¤ê¼ÂÍÑŪ¤Ê¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Î³«È¯¤ò³«»Ï¤·¡¢±Ñ¹ñ BBS ÊüÁ÷¤Î¥³¥á¥Ç¥£ÈÖÁÈ¡Ö¥â¥ó¥Æ¥£ ¥Ñ¥¤¥½¥ó¡×¤Î¥Õ¥¡¥ó¤Ç¤¢¤ë Guido ¤Ï¤³¤Î¸À¸ì¤ò¡ÖPython¡×¤È̾¤Å¤±¤Þ¤·¤¿¡£
-¤³¤Î¤è¤¦¤ÊÇطʤ«¤éÀ¸¤Þ¤ì¤¿ Python ¤Î¸À¸ìÀ߷פϡ¢¡Ö¥·¥ó¥×¥ë¡×¤Ç¡Ö½¬ÆÀ¤¬ÍưספȤ¤¤¦ÌÜɸ¤Ë½ÅÅÀ¤¬ÃÖ¤«¤ì¤Æ¤¤¤Þ¤¹¡£
-¿¤¯¤Î¥¹¥¯¥ê¥×¥È·Ï¸À¸ì¤Ç¤Ï¥æ¡¼¥¶¤ÎÌÜÀè¤ÎÍøÊØÀ­¤òÍ¥À褷¤Æ¿§¡¹¤Êµ¡Ç½¤ò¸À¸ìÍ×ÁǤȤ·¤Æ¼è¤êÆþ¤ì¤ë¾ì¹ç¤¬Â¿¤¤¤Î¤Ç¤¹¤¬¡¢Python ¤Ç¤Ï¤½¤¦¤¤¤Ã¤¿¾®ºÙ¹©¤¬Äɲ䵤ì¤ë¤³¤È¤Ï¤¢¤Þ¤ê¤¢¤ê¤Þ¤»¤ó¡£
-¸À¸ì¼«ÂΤε¡Ç½¤ÏºÇ¾®¸Â¤Ë²¡¤µ¤¨¡¢É¬Íפʵ¡Ç½¤Ï³ÈÄ¥¥â¥¸¥å¡¼¥ë¤È¤·¤ÆÄɲ乤롢¤È¤¤¤¦¤Î¤¬ Python ¤Î¥Ý¥ê¥·¡¼¤Ç¤¹¡£
-
-¥Î¤÷ ¥þ ¥È¥­¯¬¯Ú ÏãþØ þԏþèüÖ
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jp-utf8.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jp-utf8.txt
deleted file mode 100644
index 7763250..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jp-utf8.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Python の開発は、1990 年ごろから開始されています。
-開発者の Guido van Rossum は教育用のプログラミング言語「ABC」の開発に参加していましたが、ABC は実用上の目的にはあまり適していませんでした。
-このため、Guido はより実用的なプログラミング言語の開発を開始し、英国 BBS 放送のコメディ番組「モンティ パイソン」のファンである Guido はこの言語を「Python」と名づけました。
-このような背景から生まれた Python の言語設計は、「シンプル」で「習得が容易」という目標に重点が置かれています。
-多くのスクリプト系言語ではユーザの目先の利便性を優先して色々な機能を言語要素として取り入れる場合が多いのですが、Python ではそういった小細工が追加されることはあまりありません。
-言語自体の機能は最小限に押さえ、必要な機能は拡張モジュールとして追加する、というのが Python のポリシーです。
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jp.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jp.txt
deleted file mode 100644
index 9da6b5d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_jp.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Python ¤Î³«È¯¤Ï¡¢1990 ǯ¤´¤í¤«¤é³«»Ï¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
-³«È¯¼Ô¤Î Guido van Rossum ¤Ï¶µ°éÍÑ¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¡ÖABC¡×¤Î³«È¯¤Ë»²²Ã¤·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢ABC ¤Ï¼ÂÍѾå¤ÎÌÜŪ¤Ë¤Ï¤¢¤Þ¤êŬ¤·¤Æ¤¤¤Þ¤»¤ó¤Ç¤·¤¿¡£
-¤³¤Î¤¿¤á¡¢Guido ¤Ï¤è¤ê¼ÂÍÑŪ¤Ê¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Î³«È¯¤ò³«»Ï¤·¡¢±Ñ¹ñ BBS ÊüÁ÷¤Î¥³¥á¥Ç¥£ÈÖÁÈ¡Ö¥â¥ó¥Æ¥£ ¥Ñ¥¤¥½¥ó¡×¤Î¥Õ¥¡¥ó¤Ç¤¢¤ë Guido ¤Ï¤³¤Î¸À¸ì¤ò¡ÖPython¡×¤È̾¤Å¤±¤Þ¤·¤¿¡£
-¤³¤Î¤è¤¦¤ÊÇطʤ«¤éÀ¸¤Þ¤ì¤¿ Python ¤Î¸À¸ìÀ߷פϡ¢¡Ö¥·¥ó¥×¥ë¡×¤Ç¡Ö½¬ÆÀ¤¬ÍưספȤ¤¤¦ÌÜɸ¤Ë½ÅÅÀ¤¬ÃÖ¤«¤ì¤Æ¤¤¤Þ¤¹¡£
-¿¤¯¤Î¥¹¥¯¥ê¥×¥È·Ï¸À¸ì¤Ç¤Ï¥æ¡¼¥¶¤ÎÌÜÀè¤ÎÍøÊØÀ­¤òÍ¥À褷¤Æ¿§¡¹¤Êµ¡Ç½¤ò¸À¸ìÍ×ÁǤȤ·¤Æ¼è¤êÆþ¤ì¤ë¾ì¹ç¤¬Â¿¤¤¤Î¤Ç¤¹¤¬¡¢Python ¤Ç¤Ï¤½¤¦¤¤¤Ã¤¿¾®ºÙ¹©¤¬Äɲ䵤ì¤ë¤³¤È¤Ï¤¢¤Þ¤ê¤¢¤ê¤Þ¤»¤ó¡£
-¸À¸ì¼«ÂΤε¡Ç½¤ÏºÇ¾®¸Â¤Ë²¡¤µ¤¨¡¢É¬Íפʵ¡Ç½¤Ï³ÈÄ¥¥â¥¸¥å¡¼¥ë¤È¤·¤ÆÄɲ乤롢¤È¤¤¤¦¤Î¤¬ Python ¤Î¥Ý¥ê¥·¡¼¤Ç¤¹¡£
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_kr-utf8.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_kr-utf8.txt
deleted file mode 100644
index 16c3741..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_kr-utf8.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-◎ 파이썬(Python)은 배우기 쉽고, 강력한 프로그래밍 언어입니다. 파이썬은
-효율적인 고수준 데이터 구조와 간단하지만 효율적인 객체지향프로그래밍을
-지원합니다. 파이썬의 우아(優雅)한 문법과 동적 타이핑, 그리고 인터프리팅
-환경은 파이썬을 스크립팅과 여러 분야에서와 대부분의 플랫폼에서의 빠른
-애플리케이션 개발을 할 수 있는 이상적인 언어로 만들어줍니다.
-
-☆첫가끝: 날아라 쓔쓔쓩~ 닁큼! 뜽금없이 전홥니다. 뷁. 그런거 읎다.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_kr.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_kr.txt
deleted file mode 100644
index f68dd35..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/euc_kr.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-¡Ý ÆÄÀ̽ã(Python)Àº ¹è¿ì±â ½±°í, °­·ÂÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÔ´Ï´Ù. ÆÄÀ̽ãÀº
-È¿À²ÀûÀÎ °í¼öÁØ µ¥ÀÌÅÍ ±¸Á¶¿Í °£´ÜÇÏÁö¸¸ È¿À²ÀûÀÎ °´Ã¼ÁöÇâÇÁ·Î±×·¡¹ÖÀ»
-Áö¿øÇÕ´Ï´Ù. ÆÄÀ̽ãÀÇ ¿ì¾Æ(éÐäº)ÇÑ ¹®¹ý°ú µ¿Àû ŸÀÌÇÎ, ±×¸®°í ÀÎÅÍÇÁ¸®ÆÃ
-ȯ°æÀº ÆÄÀ̽ãÀ» ½ºÅ©¸³Æðú ¿©·¯ ºÐ¾ß¿¡¼­¿Í ´ëºÎºÐÀÇ Ç÷§Æû¿¡¼­ÀÇ ºü¸¥
-¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀ» ÇÒ ¼ö ÀÖ´Â ÀÌ»óÀûÀÎ ¾ð¾î·Î ¸¸µé¾îÁÝ´Ï´Ù.
-
-¡Ùù°¡³¡: ³¯¾Æ¶ó ¤Ô¤¶¤Ð¤Ô¤Ô¤¶¤Ð¤Ô¾±~ ¤Ô¤¤¤Ò¤·Å­! ¤Ô¤¨¤Ñ¤·±Ý¾øÀÌ Àü¤Ô¤¾¤È¤²´Ï´Ù. ¤Ô¤²¤Î¤ª. ±×·±°Å ¤Ô¤·¤Ñ¤´´Ù.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb18030-utf8.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb18030-utf8.txt
deleted file mode 100644
index 2060d25..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb18030-utf8.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-Python(派森)语言是一种功能强大而完善的通用型计算机程序设计语言,
-已经具有十多年的发展历史,成熟且稳定。这种语言具有非常简捷而清晰
-的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中
-运行。这种语言简单而强大,适合各种人士学习使用。目前,基于这
-种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多。
-如何在 Python 中使用既有的 C library?
- 在資訊科技快速發展的今天, 開發及測試軟體的速度是不容忽視的
-課題. 為加快開發及測試的速度, 我們便常希望能利用一些已開發好的
-library, 並有一個 fast prototyping 的 programming language 可
-供使用. 目前有許許多多的 library 是以 C 寫成, 而 Python 是一個
-fast prototyping 的 programming language. 故我們希望能將既有的
-C library 拿到 Python 的環境中測試及整合. 其中最主要也是我們所
-要討論的問題就是:
-파이썬은 강력한 기능을 지닌 범용 컴퓨터 프로그래밍 언어다.
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb18030.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb18030.txt
deleted file mode 100644
index 5d1f6dc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb18030.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-Python£¨ÅÉÉ­£©ÓïÑÔÊÇÒ»ÖÖ¹¦ÄÜÇ¿´ó¶øÍêÉƵÄͨÓÃÐͼÆËã»ú³ÌÐòÉè¼ÆÓïÑÔ£¬
-ÒѾ­¾ßÓÐÊ®¶àÄêµÄ·¢Õ¹ÀúÊ·£¬³ÉÊìÇÒÎȶ¨¡£ÕâÖÖÓïÑÔ¾ßÓзdz£¼ò½Ý¶øÇåÎú
-µÄÓï·¨Ìص㣬ÊʺÏÍê³É¸÷Öָ߲ãÈÎÎñ£¬¼¸ºõ¿ÉÒÔÔÚËùÓеIJÙ×÷ϵͳÖÐ
-ÔËÐС£ÕâÖÖÓïÑÔ¼òµ¥¶øÇ¿´ó£¬Êʺϸ÷ÖÖÈËʿѧϰʹÓá£Ä¿Ç°£¬»ùÓÚÕâ
-ÖÖÓïÑÔµÄÏà¹Ø¼¼ÊõÕýÔÚ·ÉËٵķ¢Õ¹£¬Óû§ÊýÁ¿¼±¾çÀ©´ó£¬Ïà¹ØµÄ×ÊÔ´·Ç³£¶à¡£
-ÈçºÎÔÚ Python ÖÐʹÓüÈÓÐµÄ C library?
-¡¡ÔÚÙYӍ¿Æ¼¼¿ìËÙ°lÕ¹µÄ½ñÌì, é_°l¼°œyԇܛówµÄËÙ¶ÈÊDz»ÈݺöÒ•µÄ
-Õnî}. žé¼Ó¿ìé_°l¼°œyÔ‡µÄËÙ¶È, ÎÒ‚ƒ±ã³£Ï£ÍûÄÜÀûÓÃһЩÒÑé_°lºÃµÄ
-library, KÓÐÒ»‚€ fast prototyping µÄ programming language ¿É
-¹©Ê¹ÓÃ. Ä¿Ç°ÓÐÔSÔS¶à¶àµÄ library ÊÇÒÔ C Œ‘³É, ¶ø Python ÊÇÒ»‚€
-fast prototyping µÄ programming language. ¹ÊÎÒ‚ƒÏ£ÍûÄÜŒ¢¼ÈÓеÄ
-C library Äõ½ Python µÄ­h¾³ÖÐœyÔ‡¼°ÕûºÏ. ÆäÖÐ×îÖ÷ÒªÒ²ÊÇÎÒ‚ƒËù
-ÒªÓ‘Õ“µÄ†–î}¾ÍÊÇ:
-ƒ5Ç1ƒ3š3ƒ2±1ƒ3•1 ‚7Ñ6ƒ0Œ4ƒ6„3 ‚8‰5‚8û6ƒ3•5 ƒ3Õ1‚95 ƒ0ý9ƒ3†0 ƒ4Ü3ƒ5ö7ƒ5—5 ƒ5ù5ƒ0‘9‚8ƒ9‚9ü3ƒ0ð4 ƒ2ë9ƒ2ë5‚9ƒ9.
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb2312-utf8.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb2312-utf8.txt
deleted file mode 100644
index efb7d8f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb2312-utf8.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Python(派森)语言是一种功能强大而完善的通用型计算机程序设计语言,
-已经具有十多年的发展历史,成熟且稳定。这种语言具有非常简捷而清晰
-的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中
-运行。这种语言简单而强大,适合各种人士学习使用。目前,基于这
-种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多。
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb2312.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb2312.txt
deleted file mode 100644
index 1536ac1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gb2312.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Python£¨ÅÉÉ­£©ÓïÑÔÊÇÒ»ÖÖ¹¦ÄÜÇ¿´ó¶øÍêÉƵÄͨÓÃÐͼÆËã»ú³ÌÐòÉè¼ÆÓïÑÔ£¬
-ÒѾ­¾ßÓÐÊ®¶àÄêµÄ·¢Õ¹ÀúÊ·£¬³ÉÊìÇÒÎȶ¨¡£ÕâÖÖÓïÑÔ¾ßÓзdz£¼ò½Ý¶øÇåÎú
-µÄÓï·¨Ìص㣬ÊʺÏÍê³É¸÷Öָ߲ãÈÎÎñ£¬¼¸ºõ¿ÉÒÔÔÚËùÓеIJÙ×÷ϵͳÖÐ
-ÔËÐС£ÕâÖÖÓïÑÔ¼òµ¥¶øÇ¿´ó£¬Êʺϸ÷ÖÖÈËʿѧϰʹÓá£Ä¿Ç°£¬»ùÓÚÕâ
-ÖÖÓïÑÔµÄÏà¹Ø¼¼ÊõÕýÔÚ·ÉËٵķ¢Õ¹£¬Óû§ÊýÁ¿¼±¾çÀ©´ó£¬Ïà¹ØµÄ×ÊÔ´·Ç³£¶à¡£
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gbk-utf8.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gbk-utf8.txt
deleted file mode 100644
index 75bbd31..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gbk-utf8.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Python(派森)语言是一种功能强大而完善的通用型计算机程序设计语言,
-已经具有十多年的发展历史,成熟且稳定。这种语言具有非常简捷而清晰
-的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中
-运行。这种语言简单而强大,适合各种人士学习使用。目前,基于这
-种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多。
-如何在 Python 中使用既有的 C library?
- 在資訊科技快速發展的今天, 開發及測試軟體的速度是不容忽視的
-課題. 為加快開發及測試的速度, 我們便常希望能利用一些已開發好的
-library, 並有一個 fast prototyping 的 programming language 可
-供使用. 目前有許許多多的 library 是以 C 寫成, 而 Python 是一個
-fast prototyping 的 programming language. 故我們希望能將既有的
-C library 拿到 Python 的環境中測試及整合. 其中最主要也是我們所
-要討論的問題就是:
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gbk.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gbk.txt
deleted file mode 100644
index 8788f8a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/gbk.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Python£¨ÅÉÉ­£©ÓïÑÔÊÇÒ»ÖÖ¹¦ÄÜÇ¿´ó¶øÍêÉƵÄͨÓÃÐͼÆËã»ú³ÌÐòÉè¼ÆÓïÑÔ£¬
-ÒѾ­¾ßÓÐÊ®¶àÄêµÄ·¢Õ¹ÀúÊ·£¬³ÉÊìÇÒÎȶ¨¡£ÕâÖÖÓïÑÔ¾ßÓзdz£¼ò½Ý¶øÇåÎú
-µÄÓï·¨Ìص㣬ÊʺÏÍê³É¸÷Öָ߲ãÈÎÎñ£¬¼¸ºõ¿ÉÒÔÔÚËùÓеIJÙ×÷ϵͳÖÐ
-ÔËÐС£ÕâÖÖÓïÑÔ¼òµ¥¶øÇ¿´ó£¬Êʺϸ÷ÖÖÈËʿѧϰʹÓá£Ä¿Ç°£¬»ùÓÚÕâ
-ÖÖÓïÑÔµÄÏà¹Ø¼¼ÊõÕýÔÚ·ÉËٵķ¢Õ¹£¬Óû§ÊýÁ¿¼±¾çÀ©´ó£¬Ïà¹ØµÄ×ÊÔ´·Ç³£¶à¡£
-ÈçºÎÔÚ Python ÖÐʹÓüÈÓÐµÄ C library?
-¡¡ÔÚÙYӍ¿Æ¼¼¿ìËÙ°lÕ¹µÄ½ñÌì, é_°l¼°œyԇܛówµÄËÙ¶ÈÊDz»ÈݺöÒ•µÄ
-Õnî}. žé¼Ó¿ìé_°l¼°œyÔ‡µÄËÙ¶È, ÎÒ‚ƒ±ã³£Ï£ÍûÄÜÀûÓÃһЩÒÑé_°lºÃµÄ
-library, KÓÐÒ»‚€ fast prototyping µÄ programming language ¿É
-¹©Ê¹ÓÃ. Ä¿Ç°ÓÐÔSÔS¶à¶àµÄ library ÊÇÒÔ C Œ‘³É, ¶ø Python ÊÇÒ»‚€
-fast prototyping µÄ programming language. ¹ÊÎÒ‚ƒÏ£ÍûÄÜŒ¢¼ÈÓеÄ
-C library Äõ½ Python µÄ­h¾³ÖÐœyÔ‡¼°ÕûºÏ. ÆäÖÐ×îÖ÷ÒªÒ²ÊÇÎÒ‚ƒËù
-ÒªÓ‘Õ“µÄ†–î}¾ÍÊÇ:
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/hz-utf8.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/hz-utf8.txt
deleted file mode 100644
index 7c11735..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/hz-utf8.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This sentence is in ASCII.
-The next sentence is in GB.己所不欲,勿施於人。Bye.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/hz.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/hz.txt
deleted file mode 100644
index a72110e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/hz.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This sentence is in ASCII.
-The next sentence is in GB.~{<:Ky2;S{#,NpJ)l6HK!#~}Bye.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/johab-utf8.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/johab-utf8.txt
deleted file mode 100644
index 5655e38..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/johab-utf8.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-똠방각하 펲시콜라
-
-㉯㉯납!! 因九月패믤릔궈 ⓡⓖ훀¿¿¿ 긍뒙 ⓔ뎨 ㉯. .
-亞영ⓔ능횹 . . . . 서울뤄 뎐학乙 家훀 ! ! !ㅠ.ㅠ
-흐흐흐 ㄱㄱㄱ☆ㅠ_ㅠ 어릨 탸콰긐 뎌응 칑九들乙 ㉯드긐
-설릌 家훀 . . . . 굴애쉌 ⓔ궈 ⓡ릘㉱긐 因仁川女中까즼
-와쒀훀 ! ! 亞영ⓔ 家능궈 ☆上관 없능궈능 亞능뒈훀 글애듴
-ⓡ려듀九 싀풔숴훀 어릨 因仁川女中싁⑨들앜!! ㉯㉯납♡ ⌒⌒*
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/johab.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/johab.txt
deleted file mode 100644
index 067781b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/johab.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-™±¤wˆbÐa Í\¯¡Å©œa
-
-ÜÀÜÀs!! ñgâœðÚ£‰Ÿ…Š¡ ÜÞÜÓÒzٯٯٯ ‹w–Ó ÜÑ• ÜÀ. .
-í<µwÜÑ“wÒs . . . . ¬á¶‰ž¡ •eÐbðà à;Òz ! ! !‡A.‡A
-ÓaÓaÓa ˆAˆAˆAÙi‡A_‡A ´áŸš È¡ÅÁ‹z •a·w ×✗iðà ÜÀ—a‹z
-¬éŸz à;Òz . . . . Š‰´®º ÜÑŠ¡ ÜÞŸ‰Ü‹z ñgñbõIíüóéŒa»š
-µÁ²¡Òz ! ! í<µwÜÑ à;“wŠ¡ Ùi꾉Š´ô“wŠ¡“w í<“w–ÁÒz ‹i´—z
-Üޝa—A✠¯Î¡®¡Òz ´áŸš ñgñbõIíüó鯂Üï—i´z!! ÜÀÜÀsÙ½ ÙbÙb*
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jis-utf8.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jis-utf8.txt
deleted file mode 100644
index 7763250..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jis-utf8.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Python の開発は、1990 年ごろから開始されています。
-開発者の Guido van Rossum は教育用のプログラミング言語「ABC」の開発に参加していましたが、ABC は実用上の目的にはあまり適していませんでした。
-このため、Guido はより実用的なプログラミング言語の開発を開始し、英国 BBS 放送のコメディ番組「モンティ パイソン」のファンである Guido はこの言語を「Python」と名づけました。
-このような背景から生まれた Python の言語設計は、「シンプル」で「習得が容易」という目標に重点が置かれています。
-多くのスクリプト系言語ではユーザの目先の利便性を優先して色々な機能を言語要素として取り入れる場合が多いのですが、Python ではそういった小細工が追加されることはあまりありません。
-言語自体の機能は最小限に押さえ、必要な機能は拡張モジュールとして追加する、というのが Python のポリシーです。
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jis.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jis.txt
deleted file mode 100644
index 10b760d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jis.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Python ‚ÌŠJ”­‚́A1990 ”N‚²‚ë‚©‚çŠJŽn‚³‚ê‚Ä‚¢‚Ü‚·B
-ŠJ”­ŽÒ‚Ì Guido van Rossum ‚Í‹³ˆç—p‚̃vƒƒOƒ‰ƒ~ƒ“ƒOŒ¾ŒêuABCv‚ÌŠJ”­‚ÉŽQ‰Á‚µ‚Ä‚¢‚Ü‚µ‚½‚ªAABC ‚ÍŽÀ—pã‚Ì–Ú“I‚É‚Í‚ ‚Ü‚è“K‚µ‚Ä‚¢‚Ü‚¹‚ñ‚Å‚µ‚½B
-‚±‚Ì‚½‚߁AGuido ‚Í‚æ‚èŽÀ—p“I‚ȃvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚ÌŠJ”­‚ðŠJŽn‚µA‰p‘ BBS •ú‘—‚̃RƒƒfƒB”Ô‘guƒ‚ƒ“ƒeƒB ƒpƒCƒ\ƒ“v‚̃tƒ@ƒ“‚Å‚ ‚é Guido ‚Í‚±‚ÌŒ¾Œê‚ðuPythonv‚Æ–¼‚¯‚Ü‚µ‚½B
-‚±‚̂悤‚È”wŒi‚©‚琶‚܂ꂽ Python ‚ÌŒ¾ŒêÝŒv‚́AuƒVƒ“ƒvƒ‹v‚ŁuK“¾‚ª—eˆÕv‚Æ‚¢‚¤–Ú•W‚ɏd“_‚ª’u‚©‚ê‚Ä‚¢‚Ü‚·B
-‘½‚­‚̃XƒNƒŠƒvƒgŒnŒ¾Œê‚ł̓†[ƒU‚̖ڐæ‚Ì—˜•Ö«‚ð—Dæ‚µ‚ĐFX‚È‹@”\‚ðŒ¾Œê—v‘f‚Æ‚µ‚ÄŽæ‚è“ü‚ê‚éê‡‚ª‘½‚¢‚Ì‚Å‚·‚ªAPython ‚Å‚Í‚»‚¤‚¢‚Á‚½¬×H‚ª’ljÁ‚³‚ê‚邱‚Æ‚Í‚ ‚Ü‚è‚ ‚è‚Ü‚¹‚ñB
-Œ¾ŒêŽ©‘Ì‚Ì‹@”\‚͍ŏ¬ŒÀ‚ɉŸ‚³‚¦A•K—v‚È‹@”\‚ÍŠg’£ƒ‚ƒWƒ…[ƒ‹‚Æ‚µ‚ĒljÁ‚·‚éA‚Æ‚¢‚¤‚Ì‚ª Python ‚̃|ƒŠƒV[‚Å‚·B
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jisx0213-utf8.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jisx0213-utf8.txt
deleted file mode 100644
index 9a56a2e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jisx0213-utf8.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-Python の開発は、1990 年ごろから開始されています。
-開発者の Guido van Rossum は教育用のプログラミング言語「ABC」の開発に参加していましたが、ABC は実用上の目的にはあまり適していませんでした。
-このため、Guido はより実用的なプログラミング言語の開発を開始し、英国 BBS 放送のコメディ番組「モンティ パイソン」のファンである Guido はこの言語を「Python」と名づけました。
-このような背景から生まれた Python の言語設計は、「シンプル」で「習得が容易」という目標に重点が置かれています。
-多くのスクリプト系言語ではユーザの目先の利便性を優先して色々な機能を言語要素として取り入れる場合が多いのですが、Python ではそういった小細工が追加されることはあまりありません。
-言語自体の機能は最小限に押さえ、必要な機能は拡張モジュールとして追加する、というのが Python のポリシーです。
-
-ノか゚ ト゚ トキ喝塀 𡚴𪎌 麀齁𩛰
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jisx0213.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jisx0213.txt
deleted file mode 100644
index 08c9ef4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cjkencodings/shift_jisx0213.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-Python ‚ÌŠJ”­‚́A1990 ”N‚²‚ë‚©‚çŠJŽn‚³‚ê‚Ä‚¢‚Ü‚·B
-ŠJ”­ŽÒ‚Ì Guido van Rossum ‚Í‹³ˆç—p‚̃vƒƒOƒ‰ƒ~ƒ“ƒOŒ¾ŒêuABCv‚ÌŠJ”­‚ÉŽQ‰Á‚µ‚Ä‚¢‚Ü‚µ‚½‚ªAABC ‚ÍŽÀ—pã‚Ì–Ú“I‚É‚Í‚ ‚Ü‚è“K‚µ‚Ä‚¢‚Ü‚¹‚ñ‚Å‚µ‚½B
-‚±‚Ì‚½‚߁AGuido ‚Í‚æ‚èŽÀ—p“I‚ȃvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚ÌŠJ”­‚ðŠJŽn‚µA‰p‘ BBS •ú‘—‚̃RƒƒfƒB”Ô‘guƒ‚ƒ“ƒeƒB ƒpƒCƒ\ƒ“v‚̃tƒ@ƒ“‚Å‚ ‚é Guido ‚Í‚±‚ÌŒ¾Œê‚ðuPythonv‚Æ–¼‚¯‚Ü‚µ‚½B
-‚±‚̂悤‚È”wŒi‚©‚琶‚܂ꂽ Python ‚ÌŒ¾ŒêÝŒv‚́AuƒVƒ“ƒvƒ‹v‚ŁuK“¾‚ª—eˆÕv‚Æ‚¢‚¤–Ú•W‚ɏd“_‚ª’u‚©‚ê‚Ä‚¢‚Ü‚·B
-‘½‚­‚̃XƒNƒŠƒvƒgŒnŒ¾Œê‚ł̓†[ƒU‚̖ڐæ‚Ì—˜•Ö«‚ð—Dæ‚µ‚ĐFX‚È‹@”\‚ðŒ¾Œê—v‘f‚Æ‚µ‚ÄŽæ‚è“ü‚ê‚éê‡‚ª‘½‚¢‚Ì‚Å‚·‚ªAPython ‚Å‚Í‚»‚¤‚¢‚Á‚½¬×H‚ª’ljÁ‚³‚ê‚邱‚Æ‚Í‚ ‚Ü‚è‚ ‚è‚Ü‚¹‚ñB
-Œ¾ŒêŽ©‘Ì‚Ì‹@”\‚͍ŏ¬ŒÀ‚ɉŸ‚³‚¦A•K—v‚È‹@”\‚ÍŠg’£ƒ‚ƒWƒ…[ƒ‹‚Æ‚µ‚ĒljÁ‚·‚éA‚Æ‚¢‚¤‚Ì‚ª Python ‚̃|ƒŠƒV[‚Å‚·B
-
-ƒm‚õ ƒž ƒgƒLˆKˆy ˜ƒüÖ üÒüæûÔ
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cmath_testcases.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cmath_testcases.txt
deleted file mode 100644
index 1ba4d33..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/cmath_testcases.txt
+++ /dev/null
@@ -1,2365 +0,0 @@
--- Testcases for functions in cmath.
---
--- Each line takes the form:
---
--- <testid> <function> <input_value> -> <output_value> <flags>
---
--- where:
---
---   <testid> is a short name identifying the test,
---
---   <function> is the function to be tested (exp, cos, asinh, ...),
---
---   <input_value> is a pair of floats separated by whitespace
---     representing real and imaginary parts of a complex number, and
---
---   <output_value> is the expected (ideal) output value, again
---     represented as a pair of floats.
---
---   <flags> is a list of the floating-point flags required by C99
---
--- The possible flags are:
---
---   divide-by-zero : raised when a finite input gives a
---     mathematically infinite result.
---
---   overflow : raised when a finite input gives a finite result whose
---     real or imaginary part is too large to fit in the usual range
---     of an IEEE 754 double.
---
---   invalid : raised for invalid inputs.
---
---   ignore-real-sign : indicates that the sign of the real part of
---     the result is unspecified; if the real part of the result is
---     given as inf, then both -inf and inf should be accepted as
---     correct.
---
---   ignore-imag-sign : indicates that the sign of the imaginary part
---     of the result is unspecified.
---
--- Flags may appear in any order.
---
--- Lines beginning with '--' (like this one) start a comment, and are
--- ignored.  Blank lines, or lines containing only whitespace, are also
--- ignored.
-
--- The majority of the values below were computed with the help of
--- version 2.3 of the MPFR library for multiple-precision
--- floating-point computations with correct rounding.  All output
--- values in this file are (modulo yet-to-be-discovered bugs)
--- correctly rounded, provided that each input and output decimal
--- floating-point value below is interpreted as a representation of
--- the corresponding nearest IEEE 754 double-precision value.  See the
--- MPFR homepage at http://www.mpfr.org for more information about the
--- MPFR project.
-
-
---------------------------
--- acos: Inverse cosine --
---------------------------
-
--- zeros
-acos0000 acos 0.0 0.0 -> 1.5707963267948966 -0.0
-acos0001 acos 0.0 -0.0 -> 1.5707963267948966 0.0
-acos0002 acos -0.0 0.0 -> 1.5707963267948966 -0.0
-acos0003 acos -0.0 -0.0 -> 1.5707963267948966 0.0
-
--- branch points: +/-1
-acos0010 acos 1.0 0.0 -> 0.0 -0.0
-acos0011 acos 1.0 -0.0 -> 0.0 0.0
-acos0012 acos -1.0 0.0 -> 3.1415926535897931 -0.0
-acos0013 acos -1.0 -0.0 -> 3.1415926535897931 0.0
-
--- values along both sides of real axis
-acos0020 acos -9.8813129168249309e-324 0.0 -> 1.5707963267948966 -0.0
-acos0021 acos -9.8813129168249309e-324 -0.0 -> 1.5707963267948966 0.0
-acos0022 acos -1e-305 0.0 -> 1.5707963267948966 -0.0
-acos0023 acos -1e-305 -0.0 -> 1.5707963267948966 0.0
-acos0024 acos -1e-150 0.0 -> 1.5707963267948966 -0.0
-acos0025 acos -1e-150 -0.0 -> 1.5707963267948966 0.0
-acos0026 acos -9.9999999999999998e-17 0.0 -> 1.5707963267948968 -0.0
-acos0027 acos -9.9999999999999998e-17 -0.0 -> 1.5707963267948968 0.0
-acos0028 acos -0.001 0.0 -> 1.5717963269615634 -0.0
-acos0029 acos -0.001 -0.0 -> 1.5717963269615634 0.0
-acos0030 acos -0.57899999999999996 0.0 -> 2.1882979816120667 -0.0
-acos0031 acos -0.57899999999999996 -0.0 -> 2.1882979816120667 0.0
-acos0032 acos -0.99999999999999989 0.0 -> 3.1415926386886319 -0.0
-acos0033 acos -0.99999999999999989 -0.0 -> 3.1415926386886319 0.0
-acos0034 acos -1.0000000000000002 0.0 -> 3.1415926535897931 -2.1073424255447014e-08
-acos0035 acos -1.0000000000000002 -0.0 -> 3.1415926535897931 2.1073424255447014e-08
-acos0036 acos -1.0009999999999999 0.0 -> 3.1415926535897931 -0.044717633608306849
-acos0037 acos -1.0009999999999999 -0.0 -> 3.1415926535897931 0.044717633608306849
-acos0038 acos -2.0 0.0 -> 3.1415926535897931 -1.3169578969248168
-acos0039 acos -2.0 -0.0 -> 3.1415926535897931 1.3169578969248168
-acos0040 acos -23.0 0.0 -> 3.1415926535897931 -3.8281684713331012
-acos0041 acos -23.0 -0.0 -> 3.1415926535897931 3.8281684713331012
-acos0042 acos -10000000000000000.0 0.0 -> 3.1415926535897931 -37.534508668464674
-acos0043 acos -10000000000000000.0 -0.0 -> 3.1415926535897931 37.534508668464674
-acos0044 acos -9.9999999999999998e+149 0.0 -> 3.1415926535897931 -346.08091112966679
-acos0045 acos -9.9999999999999998e+149 -0.0 -> 3.1415926535897931 346.08091112966679
-acos0046 acos -1.0000000000000001e+299 0.0 -> 3.1415926535897931 -689.16608998577965
-acos0047 acos -1.0000000000000001e+299 -0.0 -> 3.1415926535897931 689.16608998577965
-acos0048 acos 9.8813129168249309e-324 0.0 -> 1.5707963267948966 -0.0
-acos0049 acos 9.8813129168249309e-324 -0.0 -> 1.5707963267948966 0.0
-acos0050 acos 1e-305 0.0 -> 1.5707963267948966 -0.0
-acos0051 acos 1e-305 -0.0 -> 1.5707963267948966 0.0
-acos0052 acos 1e-150 0.0 -> 1.5707963267948966 -0.0
-acos0053 acos 1e-150 -0.0 -> 1.5707963267948966 0.0
-acos0054 acos 9.9999999999999998e-17 0.0 -> 1.5707963267948966 -0.0
-acos0055 acos 9.9999999999999998e-17 -0.0 -> 1.5707963267948966 0.0
-acos0056 acos 0.001 0.0 -> 1.56979632662823 -0.0
-acos0057 acos 0.001 -0.0 -> 1.56979632662823 0.0
-acos0058 acos 0.57899999999999996 0.0 -> 0.95329467197772655 -0.0
-acos0059 acos 0.57899999999999996 -0.0 -> 0.95329467197772655 0.0
-acos0060 acos 0.99999999999999989 0.0 -> 1.4901161193847656e-08 -0.0
-acos0061 acos 0.99999999999999989 -0.0 -> 1.4901161193847656e-08 0.0
-acos0062 acos 1.0000000000000002 0.0 -> 0.0 -2.1073424255447014e-08
-acos0063 acos 1.0000000000000002 -0.0 -> 0.0 2.1073424255447014e-08
-acos0064 acos 1.0009999999999999 0.0 -> 0.0 -0.044717633608306849
-acos0065 acos 1.0009999999999999 -0.0 -> 0.0 0.044717633608306849
-acos0066 acos 2.0 0.0 -> 0.0 -1.3169578969248168
-acos0067 acos 2.0 -0.0 -> 0.0 1.3169578969248168
-acos0068 acos 23.0 0.0 -> 0.0 -3.8281684713331012
-acos0069 acos 23.0 -0.0 -> 0.0 3.8281684713331012
-acos0070 acos 10000000000000000.0 0.0 -> 0.0 -37.534508668464674
-acos0071 acos 10000000000000000.0 -0.0 -> 0.0 37.534508668464674
-acos0072 acos 9.9999999999999998e+149 0.0 -> 0.0 -346.08091112966679
-acos0073 acos 9.9999999999999998e+149 -0.0 -> 0.0 346.08091112966679
-acos0074 acos 1.0000000000000001e+299 0.0 -> 0.0 -689.16608998577965
-acos0075 acos 1.0000000000000001e+299 -0.0 -> 0.0 689.16608998577965
-
--- random inputs
-acos0100 acos -3.3307113324596682 -10.732007530863266 -> 1.8706085694482339 3.113986806554613
-acos0101 acos -2863.952991743291 -2681013315.2571239 -> 1.5707973950301699 22.402607843274758
-acos0102 acos -0.33072639793220088 -0.85055464658253055 -> 1.8219426895922601 0.79250166729311966
-acos0103 acos -2.5722325842097802 -12.703940809821574 -> 1.7699942413107408 3.2565170156527325
-acos0104 acos -42.495233785459583 -0.54039320751337161 -> 3.1288732573153304 4.4424815519735601
-acos0105 acos -1.1363818625856401 9641.1325498630376 -> 1.5709141948820049 -9.8669410553254284
-acos0106 acos -2.4398426824157866e-11 0.33002051890266165 -> 1.570796326818066 -0.32430578041578667
-acos0107 acos -1.3521340428186552 2.9369737912076772 -> 1.9849059192339338 -1.8822893674117942
-acos0108 acos -1.827364706477915 1.0355459232147557 -> 2.5732246307960032 -1.4090688267854969
-acos0109 acos -0.25978373706403546 10.09712669185833 -> 1.5963940386378306 -3.0081673050196063
-acos0110 acos 0.33561778471072551 -4587350.6823999118 -> 1.5707962536333251 16.031960402579539
-acos0111 acos 0.49133444610998445 -0.8071422362990015 -> 1.1908761712801788 0.78573345813187867
-acos0112 acos 0.42196734507823974 -2.4812965431745115 -> 1.414091186100692 1.651707260988172
-acos0113 acos 2.961426210100655 -219.03295695248664 -> 1.5572768319822778 6.0824659885827304
-acos0114 acos 2.886209063652641 -20.38011207220606 -> 1.4302765252297889 3.718201853147642
-acos0115 acos 0.4180568075276509 1.4833433990823484 -> 1.3393834558303042 -1.2079847758301576
-acos0116 acos 52.376111405924718 0.013930429001941001 -> 0.00026601761804024188 -4.6515066691204714
-acos0117 acos 41637948387.625969 1.563418292894041 -> 3.7547918507883548e-11 -25.145424989809381
-acos0118 acos 0.061226659122249526 0.8447234394615154 -> 1.5240280306367315 -0.76791798971140812
-acos0119 acos 2.4480466420442959e+26 0.18002339201384662 -> 7.353756620564798e-28 -61.455650015996376
-
--- values near infinity
-acos0200 acos 1.6206860518683021e+308 1.0308426226285283e+308 -> 0.56650826093826223 -710.54206874241561
-acos0201 acos 1.2067735875070062e+308 -1.3429173724390276e+308 -> 0.83874369390864889 710.48017794027498
-acos0202 acos -7.4130145132549047e+307 1.1759130543927645e+308 -> 2.1332729346478536 -710.21871115698752
-acos0203 acos -8.6329426442257249e+307 -1.2316282952184133e+308 -> 2.1821511032444838 710.29752145697148
-acos0204 acos 0.0 1.4289713855849746e+308 -> 1.5707963267948966 -710.24631069738996
-acos0205 acos -0.0 1.3153524545987432e+308 -> 1.5707963267948966 -710.1634604787539
-acos0206 acos 0.0 -9.6229037669269321e+307 -> 1.5707963267948966 709.85091679573691
-acos0207 acos -0.0 -4.9783616421107088e+307 -> 1.5707963267948966 709.19187157911233
-acos0208 acos 1.3937541925739389e+308 0.0 -> 0.0 -710.22135678707264
-acos0209 acos 9.1362388967371536e+307 -0.0 -> 0.0 709.79901953124613
-acos0210 acos -1.3457361220697436e+308 0.0 -> 3.1415926535897931 -710.18629698871848
-acos0211 acos -5.4699090056144284e+307 -0.0 -> 3.1415926535897931 709.28603271085649
-acos0212 acos 1.5880716932358901e+308 5.5638401252339929 -> 3.503519487773873e-308 -710.35187633140583
-acos0213 acos 1.2497211663463164e+308 -3.0456477717911024 -> 2.4370618453197486e-308 710.11227628223412
-acos0214 acos -9.9016224006029528e+307 4.9570427340789056 -> 3.1415926535897931 -709.87946935229468
-acos0215 acos -1.5854071066874139e+308 -4.4233577741497783 -> 3.1415926535897931 710.35019704672004
-acos0216 acos 9.3674623083647628 1.5209559051877979e+308 -> 1.5707963267948966 -710.30869484491086
-acos0217 acos 8.1773832021784383 -6.6093445795000056e+307 -> 1.5707963267948966 709.4752552227792
-acos0218 acos -3.1845935000665104 1.5768856396650893e+308 -> 1.5707963267948966 -710.34480761042687
-acos0219 acos -1.0577303880953903 -6.4574626815735613e+307 -> 1.5707963267948966 709.45200719662046
-
--- values near 0
-acos0220 acos 1.8566986970714045e-320 3.1867234156760402e-321 -> 1.5707963267948966 -3.1867234156760402e-321
-acos0221 acos 7.9050503334599447e-323 -8.8931816251424378e-323 -> 1.5707963267948966 8.8931816251424378e-323
-acos0222 acos -4.4465908125712189e-323 2.4654065097222727e-311 -> 1.5707963267948966 -2.4654065097222727e-311
-acos0223 acos -6.1016916408192619e-311 -2.4703282292062327e-323 -> 1.5707963267948966 2.4703282292062327e-323
-acos0224 acos 0.0 3.4305783621842729e-311 -> 1.5707963267948966 -3.4305783621842729e-311
-acos0225 acos -0.0 1.6117409498633145e-319 -> 1.5707963267948966 -1.6117409498633145e-319
-acos0226 acos 0.0 -4.9900630229965901e-322 -> 1.5707963267948966 4.9900630229965901e-322
-acos0227 acos -0.0 -4.4889279210592818e-311 -> 1.5707963267948966 4.4889279210592818e-311
-acos0228 acos 5.3297678681477214e-312 0.0 -> 1.5707963267948966 -0.0
-acos0229 acos 6.2073425897211614e-313 -0.0 -> 1.5707963267948966 0.0
-acos0230 acos -4.9406564584124654e-324 0.0 -> 1.5707963267948966 -0.0
-acos0231 acos -1.7107517052899003e-318 -0.0 -> 1.5707963267948966 0.0
-
--- special values
-acos1000 acos 0.0 0.0 -> 1.5707963267948966 -0.0
-acos1001 acos 0.0 -0.0 -> 1.5707963267948966 0.0
-acos1002 acos -0.0 0.0 -> 1.5707963267948966 -0.0
-acos1003 acos -0.0 -0.0 -> 1.5707963267948966 0.0
-acos1004 acos 0.0 nan -> 1.5707963267948966 nan
-acos1005 acos -0.0 nan -> 1.5707963267948966 nan
-acos1006 acos -2.3 inf -> 1.5707963267948966 -inf
-acos1007 acos -0.0 inf -> 1.5707963267948966 -inf
-acos1008 acos 0.0 inf -> 1.5707963267948966 -inf
-acos1009 acos 2.3 inf -> 1.5707963267948966 -inf
-acos1010 acos -2.3 nan -> nan nan
-acos1011 acos 2.3 nan -> nan nan
-acos1012 acos -inf 2.3 -> 3.1415926535897931 -inf
-acos1013 acos -inf 0.0 -> 3.1415926535897931 -inf
-acos1014 acos inf 2.3 -> 0.0 -inf
-acos1015 acos inf 0.0 -> 0.0 -inf
-acos1016 acos -inf inf -> 2.3561944901923448 -inf
-acos1017 acos inf inf -> 0.78539816339744828 -inf
-acos1018 acos inf nan -> nan inf                        ignore-imag-sign
-acos1019 acos -inf nan -> nan inf                       ignore-imag-sign
-acos1020 acos nan 0.0 -> nan nan
-acos1021 acos nan 2.3 -> nan nan
-acos1022 acos nan inf -> nan -inf
-acos1023 acos nan nan -> nan nan
-acos1024 acos -2.3 -inf -> 1.5707963267948966 inf
-acos1025 acos -0.0 -inf -> 1.5707963267948966 inf
-acos1026 acos 0.0 -inf -> 1.5707963267948966 inf
-acos1027 acos 2.3 -inf -> 1.5707963267948966 inf
-acos1028 acos -inf -2.3 -> 3.1415926535897931 inf
-acos1029 acos -inf -0.0 -> 3.1415926535897931 inf
-acos1030 acos inf -2.3 -> 0.0 inf
-acos1031 acos inf -0.0 -> 0.0 inf
-acos1032 acos -inf -inf -> 2.3561944901923448 inf
-acos1033 acos inf -inf -> 0.78539816339744828 inf
-acos1034 acos nan -0.0 -> nan nan
-acos1035 acos nan -2.3 -> nan nan
-acos1036 acos nan -inf -> nan inf
-
-
---------------------------------------
--- acosh: Inverse hyperbolic cosine --
---------------------------------------
-
--- zeros
-acosh0000 acosh 0.0 0.0 -> 0.0 1.5707963267948966
-acosh0001 acosh 0.0 -0.0 -> 0.0 -1.5707963267948966
-acosh0002 acosh -0.0 0.0 -> 0.0 1.5707963267948966
-acosh0003 acosh -0.0 -0.0 -> 0.0 -1.5707963267948966
-
--- branch points: +/-1
-acosh0010 acosh 1.0 0.0 -> 0.0 0.0
-acosh0011 acosh 1.0 -0.0 -> 0.0 -0.0
-acosh0012 acosh -1.0 0.0 -> 0.0 3.1415926535897931
-acosh0013 acosh -1.0 -0.0 -> 0.0 -3.1415926535897931
-
--- values along both sides of real axis
-acosh0020 acosh -9.8813129168249309e-324 0.0 -> 0.0 1.5707963267948966
-acosh0021 acosh -9.8813129168249309e-324 -0.0 -> 0.0 -1.5707963267948966
-acosh0022 acosh -1e-305 0.0 -> 0.0 1.5707963267948966
-acosh0023 acosh -1e-305 -0.0 -> 0.0 -1.5707963267948966
-acosh0024 acosh -1e-150 0.0 -> 0.0 1.5707963267948966
-acosh0025 acosh -1e-150 -0.0 -> 0.0 -1.5707963267948966
-acosh0026 acosh -9.9999999999999998e-17 0.0 -> 0.0 1.5707963267948968
-acosh0027 acosh -9.9999999999999998e-17 -0.0 -> 0.0 -1.5707963267948968
-acosh0028 acosh -0.001 0.0 -> 0.0 1.5717963269615634
-acosh0029 acosh -0.001 -0.0 -> 0.0 -1.5717963269615634
-acosh0030 acosh -0.57899999999999996 0.0 -> 0.0 2.1882979816120667
-acosh0031 acosh -0.57899999999999996 -0.0 -> 0.0 -2.1882979816120667
-acosh0032 acosh -0.99999999999999989 0.0 -> 0.0 3.1415926386886319
-acosh0033 acosh -0.99999999999999989 -0.0 -> 0.0 -3.1415926386886319
-acosh0034 acosh -1.0000000000000002 0.0 -> 2.1073424255447014e-08 3.1415926535897931
-acosh0035 acosh -1.0000000000000002 -0.0 -> 2.1073424255447014e-08 -3.1415926535897931
-acosh0036 acosh -1.0009999999999999 0.0 -> 0.044717633608306849 3.1415926535897931
-acosh0037 acosh -1.0009999999999999 -0.0 -> 0.044717633608306849 -3.1415926535897931
-acosh0038 acosh -2.0 0.0 -> 1.3169578969248168 3.1415926535897931
-acosh0039 acosh -2.0 -0.0 -> 1.3169578969248168 -3.1415926535897931
-acosh0040 acosh -23.0 0.0 -> 3.8281684713331012 3.1415926535897931
-acosh0041 acosh -23.0 -0.0 -> 3.8281684713331012 -3.1415926535897931
-acosh0042 acosh -10000000000000000.0 0.0 -> 37.534508668464674 3.1415926535897931
-acosh0043 acosh -10000000000000000.0 -0.0 -> 37.534508668464674 -3.1415926535897931
-acosh0044 acosh -9.9999999999999998e+149 0.0 -> 346.08091112966679 3.1415926535897931
-acosh0045 acosh -9.9999999999999998e+149 -0.0 -> 346.08091112966679 -3.1415926535897931
-acosh0046 acosh -1.0000000000000001e+299 0.0 -> 689.16608998577965 3.1415926535897931
-acosh0047 acosh -1.0000000000000001e+299 -0.0 -> 689.16608998577965 -3.1415926535897931
-acosh0048 acosh 9.8813129168249309e-324 0.0 -> 0.0 1.5707963267948966
-acosh0049 acosh 9.8813129168249309e-324 -0.0 -> 0.0 -1.5707963267948966
-acosh0050 acosh 1e-305 0.0 -> 0.0 1.5707963267948966
-acosh0051 acosh 1e-305 -0.0 -> 0.0 -1.5707963267948966
-acosh0052 acosh 1e-150 0.0 -> 0.0 1.5707963267948966
-acosh0053 acosh 1e-150 -0.0 -> 0.0 -1.5707963267948966
-acosh0054 acosh 9.9999999999999998e-17 0.0 -> 0.0 1.5707963267948966
-acosh0055 acosh 9.9999999999999998e-17 -0.0 -> 0.0 -1.5707963267948966
-acosh0056 acosh 0.001 0.0 -> 0.0 1.56979632662823
-acosh0057 acosh 0.001 -0.0 -> 0.0 -1.56979632662823
-acosh0058 acosh 0.57899999999999996 0.0 -> 0.0 0.95329467197772655
-acosh0059 acosh 0.57899999999999996 -0.0 -> 0.0 -0.95329467197772655
-acosh0060 acosh 0.99999999999999989 0.0 -> 0.0 1.4901161193847656e-08
-acosh0061 acosh 0.99999999999999989 -0.0 -> 0.0 -1.4901161193847656e-08
-acosh0062 acosh 1.0000000000000002 0.0 -> 2.1073424255447014e-08 0.0
-acosh0063 acosh 1.0000000000000002 -0.0 -> 2.1073424255447014e-08 -0.0
-acosh0064 acosh 1.0009999999999999 0.0 -> 0.044717633608306849 0.0
-acosh0065 acosh 1.0009999999999999 -0.0 -> 0.044717633608306849 -0.0
-acosh0066 acosh 2.0 0.0 -> 1.3169578969248168 0.0
-acosh0067 acosh 2.0 -0.0 -> 1.3169578969248168 -0.0
-acosh0068 acosh 23.0 0.0 -> 3.8281684713331012 0.0
-acosh0069 acosh 23.0 -0.0 -> 3.8281684713331012 -0.0
-acosh0070 acosh 10000000000000000.0 0.0 -> 37.534508668464674 0.0
-acosh0071 acosh 10000000000000000.0 -0.0 -> 37.534508668464674 -0.0
-acosh0072 acosh 9.9999999999999998e+149 0.0 -> 346.08091112966679 0.0
-acosh0073 acosh 9.9999999999999998e+149 -0.0 -> 346.08091112966679 -0.0
-acosh0074 acosh 1.0000000000000001e+299 0.0 -> 689.16608998577965 0.0
-acosh0075 acosh 1.0000000000000001e+299 -0.0 -> 689.16608998577965 -0.0
-
--- random inputs
-acosh0100 acosh -1.4328589581250843 -1.8370347775558309 -> 1.5526962646549587 -2.190250168435786
-acosh0101 acosh -0.31075819156220957 -1.0772555786839297 -> 0.95139168286193709 -1.7812228089636479
-acosh0102 acosh -1.9044776578070453 -20.485370158932124 -> 3.7177411088932359 -1.6633888745861227
-acosh0103 acosh -0.075642506000858742 -21965976320.873051 -> 24.505907742881991 -1.5707963267983402
-acosh0104 acosh -1.6162271181056307 -3.0369343458696099 -> 1.9407057262861227 -2.0429549461750209
-acosh0105 acosh -0.3103780280298063 0.00018054880018078987 -> 0.00018992877058761416 1.886386995096728
-acosh0106 acosh -9159468751.5897655 5.8014747664273649 -> 23.631201197959193 3.1415926529564078
-acosh0107 acosh -0.037739157550933884 0.21841357493510705 -> 0.21685844960602488 1.6076735133449402
-acosh0108 acosh -8225991.0508394297 0.28318543008913644 -> 16.615956520420287 3.1415926191641019
-acosh0109 acosh -35.620070502302639 0.31303237005015 -> 4.2658980006943965 3.1328013255541873
-acosh0110 acosh 96.729939906820917 -0.029345228372365334 -> 5.2650434775863548 -0.00030338895866972843
-acosh0111 acosh 0.59656024007966491 -2.0412294654163978 -> 1.4923002024287835 -1.312568421900338
-acosh0112 acosh 109.29384112677828 -0.00015454863061533812 -> 5.3871662961545477 -1.4141245154061214e-06
-acosh0113 acosh 8.6705651969361597 -3.6723631649787465 -> 2.9336180958363545 -0.40267362031872861
-acosh0114 acosh 1.8101646445052686 -0.012345132721855478 -> 1.1997148566285769 -0.0081813912760150265
-acosh0115 acosh 52.56897195025288 0.001113916065985443 -> 4.6551827622264135 2.1193445872040307e-05
-acosh0116 acosh 0.28336786164214739 355643992457.40485 -> 27.290343226816528 1.5707963267940999
-acosh0117 acosh 0.73876621291911437 2.8828594541104322e-20 -> 4.2774820978159067e-20 0.73955845836827927
-acosh0118 acosh 0.025865471781718878 37125746064318.492 -> 31.938478989418012 1.5707963267948959
-acosh0119 acosh 2.2047353511780132 0.074712248143489271 -> 1.4286403248698021 0.037997904971626598
-
--- values near infinity
-acosh0200 acosh 8.1548592876467785e+307 9.0943779335951128e+307 -> 710.08944620800605 0.83981165425478954
-acosh0201 acosh 1.4237229680972531e+308 -1.0336966617874858e+308 -> 710.4543331094759 -0.6279972876348755
-acosh0202 acosh -1.5014526899738939e+308 1.5670700378448792e+308 -> 710.66420706795464 2.3348137299106697
-acosh0203 acosh -1.0939040375213928e+308 -1.0416960351127978e+308 -> 710.30182863115886 -2.380636147787027
-acosh0204 acosh 0.0 1.476062433559588e+308 -> 710.27873384716929 1.5707963267948966
-acosh0205 acosh -0.0 6.2077210326221094e+307 -> 709.41256457484769 1.5707963267948966
-acosh0206 acosh 0.0 -1.5621899909968308e+308 -> 710.33544449990734 -1.5707963267948966
-acosh0207 acosh -0.0 -8.3556624833839122e+307 -> 709.70971018048317 -1.5707963267948966
-acosh0208 acosh 1.3067079752499342e+308 0.0 -> 710.15686680107228 0.0
-acosh0209 acosh 1.5653640340214026e+308 -0.0 -> 710.33747422926706 -0.0
-acosh0210 acosh -6.9011375992290636e+307 0.0 -> 709.51845699719922 3.1415926535897931
-acosh0211 acosh -9.9539576809926973e+307 -0.0 -> 709.88474095870185 -3.1415926535897931
-acosh0212 acosh 7.6449598518914925e+307 9.5706540768268358 -> 709.62081731754802 1.2518906916769345e-307
-acosh0213 acosh 5.4325410972602197e+307 -7.8064807816522706 -> 709.279177727925 -1.4369851312471974e-307
-acosh0214 acosh -1.1523626112360465e+308 7.0617510038869336 -> 710.03117010216909 3.1415926535897931
-acosh0215 acosh -1.1685027786862599e+308 -5.1568558357925625 -> 710.04507907571417 -3.1415926535897931
-acosh0216 acosh 3.0236370339788721 1.7503248720096417e+308 -> 710.44915723458064 1.5707963267948966
-acosh0217 acosh 6.6108007926031149 -9.1469968225806149e+307 -> 709.80019633903328 -1.5707963267948966
-acosh0218 acosh -5.1096262905623959 6.4484926785412395e+307 -> 709.45061713997973 1.5707963267948966
-acosh0219 acosh -2.8080920608735846 -1.7716118836519368e+308 -> 710.46124562363445 -1.5707963267948966
-
--- values near 0
-acosh0220 acosh 4.5560530326699304e-317 7.3048989121436657e-318 -> 7.3048989121436657e-318 1.5707963267948966
-acosh0221 acosh 4.8754274133585331e-314 -9.8469794897684199e-315 -> 9.8469794897684199e-315 -1.5707963267948966
-acosh0222 acosh -4.6748876009960097e-312 9.7900342887557606e-318 -> 9.7900342887557606e-318 1.5707963267948966
-acosh0223 acosh -4.3136871538399236e-320 -4.9406564584124654e-323 -> 4.9406564584124654e-323 -1.5707963267948966
-acosh0224 acosh 0.0 4.3431013866496774e-314 -> 4.3431013866496774e-314 1.5707963267948966
-acosh0225 acosh -0.0 6.0147334335829184e-317 -> 6.0147334335829184e-317 1.5707963267948966
-acosh0226 acosh 0.0 -1.2880291387081297e-320 -> 1.2880291387081297e-320 -1.5707963267948966
-acosh0227 acosh -0.0 -1.4401563976534621e-317 -> 1.4401563976534621e-317 -1.5707963267948966
-acosh0228 acosh 1.3689680570863091e-313 0.0 -> 0.0 1.5707963267948966
-acosh0229 acosh 1.5304346893494371e-312 -0.0 -> 0.0 -1.5707963267948966
-acosh0230 acosh -3.7450175954766488e-320 0.0 -> 0.0 1.5707963267948966
-acosh0231 acosh -8.4250563080885801e-311 -0.0 -> 0.0 -1.5707963267948966
-
--- special values
-acosh1000 acosh 0.0 0.0 -> 0.0 1.5707963267948966
-acosh1001 acosh -0.0 0.0 -> 0.0 1.5707963267948966
-acosh1002 acosh 0.0 inf -> inf 1.5707963267948966
-acosh1003 acosh 2.3 inf -> inf 1.5707963267948966
-acosh1004 acosh -0.0 inf -> inf 1.5707963267948966
-acosh1005 acosh -2.3 inf -> inf 1.5707963267948966
-acosh1006 acosh 0.0 nan -> nan nan
-acosh1007 acosh 2.3 nan -> nan nan
-acosh1008 acosh -0.0 nan -> nan nan
-acosh1009 acosh -2.3 nan -> nan nan
-acosh1010 acosh -inf 0.0 -> inf 3.1415926535897931
-acosh1011 acosh -inf 2.3 -> inf 3.1415926535897931
-acosh1012 acosh inf 0.0 -> inf 0.0
-acosh1013 acosh inf 2.3 -> inf 0.0
-acosh1014 acosh -inf inf -> inf 2.3561944901923448
-acosh1015 acosh inf inf -> inf 0.78539816339744828
-acosh1016 acosh inf nan -> inf nan
-acosh1017 acosh -inf nan -> inf nan
-acosh1018 acosh nan 0.0 -> nan nan
-acosh1019 acosh nan 2.3 -> nan nan
-acosh1020 acosh nan inf -> inf nan
-acosh1021 acosh nan nan -> nan nan
-acosh1022 acosh 0.0 -0.0 -> 0.0 -1.5707963267948966
-acosh1023 acosh -0.0 -0.0 -> 0.0 -1.5707963267948966
-acosh1024 acosh 0.0 -inf -> inf -1.5707963267948966
-acosh1025 acosh 2.3 -inf -> inf -1.5707963267948966
-acosh1026 acosh -0.0 -inf -> inf -1.5707963267948966
-acosh1027 acosh -2.3 -inf -> inf -1.5707963267948966
-acosh1028 acosh -inf -0.0 -> inf -3.1415926535897931
-acosh1029 acosh -inf -2.3 -> inf -3.1415926535897931
-acosh1030 acosh inf -0.0 -> inf -0.0
-acosh1031 acosh inf -2.3 -> inf -0.0
-acosh1032 acosh -inf -inf -> inf -2.3561944901923448
-acosh1033 acosh inf -inf -> inf -0.78539816339744828
-acosh1034 acosh nan -0.0 -> nan nan
-acosh1035 acosh nan -2.3 -> nan nan
-acosh1036 acosh nan -inf -> inf nan
-
-
-------------------------
--- asin: Inverse sine --
-------------------------
-
--- zeros
-asin0000 asin 0.0 0.0 -> 0.0 0.0
-asin0001 asin 0.0 -0.0 -> 0.0 -0.0
-asin0002 asin -0.0 0.0 -> -0.0 0.0
-asin0003 asin -0.0 -0.0 -> -0.0 -0.0
-
--- branch points: +/-1
-asin0010 asin 1.0 0.0 -> 1.5707963267948966 0.0
-asin0011 asin 1.0 -0.0 -> 1.5707963267948966 -0.0
-asin0012 asin -1.0 0.0 -> -1.5707963267948966 0.0
-asin0013 asin -1.0 -0.0 -> -1.5707963267948966 -0.0
-
--- values along both sides of real axis
-asin0020 asin -9.8813129168249309e-324 0.0 -> -9.8813129168249309e-324 0.0
-asin0021 asin -9.8813129168249309e-324 -0.0 -> -9.8813129168249309e-324 -0.0
-asin0022 asin -1e-305 0.0 -> -1e-305 0.0
-asin0023 asin -1e-305 -0.0 -> -1e-305 -0.0
-asin0024 asin -1e-150 0.0 -> -1e-150 0.0
-asin0025 asin -1e-150 -0.0 -> -1e-150 -0.0
-asin0026 asin -9.9999999999999998e-17 0.0 -> -9.9999999999999998e-17 0.0
-asin0027 asin -9.9999999999999998e-17 -0.0 -> -9.9999999999999998e-17 -0.0
-asin0028 asin -0.001 0.0 -> -0.0010000001666667416 0.0
-asin0029 asin -0.001 -0.0 -> -0.0010000001666667416 -0.0
-asin0030 asin -0.57899999999999996 0.0 -> -0.61750165481717001 0.0
-asin0031 asin -0.57899999999999996 -0.0 -> -0.61750165481717001 -0.0
-asin0032 asin -0.99999999999999989 0.0 -> -1.5707963118937354 0.0
-asin0033 asin -0.99999999999999989 -0.0 -> -1.5707963118937354 -0.0
-asin0034 asin -1.0000000000000002 0.0 -> -1.5707963267948966 2.1073424255447014e-08
-asin0035 asin -1.0000000000000002 -0.0 -> -1.5707963267948966 -2.1073424255447014e-08
-asin0036 asin -1.0009999999999999 0.0 -> -1.5707963267948966 0.044717633608306849
-asin0037 asin -1.0009999999999999 -0.0 -> -1.5707963267948966 -0.044717633608306849
-asin0038 asin -2.0 0.0 -> -1.5707963267948966 1.3169578969248168
-asin0039 asin -2.0 -0.0 -> -1.5707963267948966 -1.3169578969248168
-asin0040 asin -23.0 0.0 -> -1.5707963267948966 3.8281684713331012
-asin0041 asin -23.0 -0.0 -> -1.5707963267948966 -3.8281684713331012
-asin0042 asin -10000000000000000.0 0.0 -> -1.5707963267948966 37.534508668464674
-asin0043 asin -10000000000000000.0 -0.0 -> -1.5707963267948966 -37.534508668464674
-asin0044 asin -9.9999999999999998e+149 0.0 -> -1.5707963267948966 346.08091112966679
-asin0045 asin -9.9999999999999998e+149 -0.0 -> -1.5707963267948966 -346.08091112966679
-asin0046 asin -1.0000000000000001e+299 0.0 -> -1.5707963267948966 689.16608998577965
-asin0047 asin -1.0000000000000001e+299 -0.0 -> -1.5707963267948966 -689.16608998577965
-asin0048 asin 9.8813129168249309e-324 0.0 -> 9.8813129168249309e-324 0.0
-asin0049 asin 9.8813129168249309e-324 -0.0 -> 9.8813129168249309e-324 -0.0
-asin0050 asin 1e-305 0.0 -> 1e-305 0.0
-asin0051 asin 1e-305 -0.0 -> 1e-305 -0.0
-asin0052 asin 1e-150 0.0 -> 1e-150 0.0
-asin0053 asin 1e-150 -0.0 -> 1e-150 -0.0
-asin0054 asin 9.9999999999999998e-17 0.0 -> 9.9999999999999998e-17 0.0
-asin0055 asin 9.9999999999999998e-17 -0.0 -> 9.9999999999999998e-17 -0.0
-asin0056 asin 0.001 0.0 -> 0.0010000001666667416 0.0
-asin0057 asin 0.001 -0.0 -> 0.0010000001666667416 -0.0
-asin0058 asin 0.57899999999999996 0.0 -> 0.61750165481717001 0.0
-asin0059 asin 0.57899999999999996 -0.0 -> 0.61750165481717001 -0.0
-asin0060 asin 0.99999999999999989 0.0 -> 1.5707963118937354 0.0
-asin0061 asin 0.99999999999999989 -0.0 -> 1.5707963118937354 -0.0
-asin0062 asin 1.0000000000000002 0.0 -> 1.5707963267948966 2.1073424255447014e-08
-asin0063 asin 1.0000000000000002 -0.0 -> 1.5707963267948966 -2.1073424255447014e-08
-asin0064 asin 1.0009999999999999 0.0 -> 1.5707963267948966 0.044717633608306849
-asin0065 asin 1.0009999999999999 -0.0 -> 1.5707963267948966 -0.044717633608306849
-asin0066 asin 2.0 0.0 -> 1.5707963267948966 1.3169578969248168
-asin0067 asin 2.0 -0.0 -> 1.5707963267948966 -1.3169578969248168
-asin0068 asin 23.0 0.0 -> 1.5707963267948966 3.8281684713331012
-asin0069 asin 23.0 -0.0 -> 1.5707963267948966 -3.8281684713331012
-asin0070 asin 10000000000000000.0 0.0 -> 1.5707963267948966 37.534508668464674
-asin0071 asin 10000000000000000.0 -0.0 -> 1.5707963267948966 -37.534508668464674
-asin0072 asin 9.9999999999999998e+149 0.0 -> 1.5707963267948966 346.08091112966679
-asin0073 asin 9.9999999999999998e+149 -0.0 -> 1.5707963267948966 -346.08091112966679
-asin0074 asin 1.0000000000000001e+299 0.0 -> 1.5707963267948966 689.16608998577965
-asin0075 asin 1.0000000000000001e+299 -0.0 -> 1.5707963267948966 -689.16608998577965
-
--- random inputs
-asin0100 asin -1.5979555835086083 -0.15003009814595247 -> -1.4515369557405788 -1.0544476399790823
-asin0101 asin -0.57488225895317679 -9.6080397838952743e-13 -> -0.61246024460412851 -1.174238005400403e-12
-asin0102 asin -3.6508087930516249 -0.36027527093220152 -> -1.4685890605305874 -1.9742273007152038
-asin0103 asin -1.5238659792326819 -1.1360813516996364 -> -0.86080051691147275 -1.3223742205689195
-asin0104 asin -1592.0639045555306 -0.72362427935018236 -> -1.5703418071175179 -8.0659336918729228
-asin0105 asin -0.19835471371312019 4.2131508416697709 -> -0.045777831019935149 2.1461732751933171
-asin0106 asin -1.918471054430213 0.40603305079779234 -> -1.3301396585791556 1.30263642314981
-asin0107 asin -254495.01623373642 0.71084414434470822 -> -1.5707935336394359 13.140183712762321
-asin0108 asin -0.31315882715691157 3.9647994288429866 -> -0.076450403840916004 2.0889762138713457
-asin0109 asin -0.90017064284720816 1.2530659485907105 -> -0.53466509741943447 1.1702811557577
-asin0110 asin 2.1615181696571075 -0.14058647488229523 -> 1.4976166323896871 -1.4085811039334604
-asin0111 asin 1.2104749210707795 -0.85732484485298999 -> 0.83913071588343924 -1.0681719250525901
-asin0112 asin 1.7059733185128891 -0.84032966373156581 -> 1.0510900815816229 -1.2967979791361652
-asin0113 asin 9.9137085017290687 -1.4608383970250893 -> 1.4237704820128891 -2.995414677560686
-asin0114 asin 117.12344751041495 -5453908091.5334015 -> 2.1475141411392012e-08 -23.112745450217066
-asin0115 asin 0.081041187798029227 0.067054349860173196 -> 0.080946786856771813 0.067223991060639698
-asin0116 asin 46.635472322049949 2.3835190718056678 -> 1.5197194940010779 4.5366989600972083
-asin0117 asin 3907.0687961127105 19.144021886390181 -> 1.5658965233083235 8.9637018715924217
-asin0118 asin 1.0889312322308273 509.01577883554768 -> 0.0021392803817829316 6.9256294494524706
-asin0119 asin 0.10851518277509224 1.5612510908217476 -> 0.058491014243902621 1.2297075725621327
-
--- values near infinity
-asin0200 asin 1.5230241998821499e+308 5.5707228994084525e+307 -> 1.2201446370892068 710.37283486535966
-asin0201 asin 8.1334317698672204e+307 -9.2249425197872451e+307 -> 0.72259991284020042 -710.0962453049026
-asin0202 asin -9.9138506659241768e+307 6.701544526434995e+307 -> -0.97637511742194594 710.06887486671371
-asin0203 asin -1.4141298868173842e+308 -5.401505134514191e+307 -> -1.2059319055160587 -710.30396478954628
-asin0204 asin 0.0 9.1618092977897431e+307 -> 0.0 709.80181441050593
-asin0205 asin -0.0 6.8064342551939755e+307 -> -0.0 709.50463910853489
-asin0206 asin 0.0 -6.4997516454798215e+307 -> 0.0 -709.45853469751592
-asin0207 asin -0.0 -1.6767449053345242e+308 -> -0.0 -710.4062101803022
-asin0208 asin 5.4242749957378916e+307 0.0 -> 1.5707963267948966 709.27765497888902
-asin0209 asin 9.5342145121164749e+307 -0.0 -> 1.5707963267948966 -709.84165758595907
-asin0210 asin -7.0445698006201847e+307 0.0 -> -1.5707963267948966 709.53902780872136
-asin0211 asin -1.0016025569769706e+308 -0.0 -> -1.5707963267948966 -709.89095709697881
-asin0212 asin 1.6552203778877204e+308 0.48761543336249491 -> 1.5707963267948966 710.39328998153474
-asin0213 asin 1.2485712830384869e+308 -4.3489311161278899 -> 1.5707963267948966 -710.1113557467786
-asin0214 asin -1.5117842813353125e+308 5.123452666102434 -> -1.5707963267948966 710.30264641923031
-asin0215 asin -1.3167634313008016e+308 -0.52939679793528982 -> -1.5707963267948966 -710.16453260239768
-asin0216 asin 0.80843929176985907 1.0150851827767876e+308 -> 7.9642507396113875e-309 709.90432835561637
-asin0217 asin 8.2544809829680901 -1.7423548140539474e+308 -> 4.7375430746865733e-308 -710.44459336242164
-asin0218 asin -5.2499000118824295 4.6655578977512214e+307 -> -1.1252459249113292e-307 709.1269781491103
-asin0219 asin -5.9904782760833433 -4.7315689314781163e+307 -> -1.2660659419394637e-307 -709.14102757522312
-
--- special values
-asin1000 asin -0.0 0.0 -> -0.0 0.0
-asin1001 asin 0.0 0.0 -> 0.0 0.0
-asin1002 asin -0.0 -0.0 -> -0.0 -0.0
-asin1003 asin 0.0 -0.0 -> 0.0 -0.0
-asin1004 asin -inf 0.0 -> -1.5707963267948966 inf
-asin1005 asin -inf 2.2999999999999998 -> -1.5707963267948966 inf
-asin1006 asin nan 0.0 -> nan nan
-asin1007 asin nan 2.2999999999999998 -> nan nan
-asin1008 asin -0.0 inf -> -0.0 inf
-asin1009 asin -2.2999999999999998 inf -> -0.0 inf
-asin1010 asin -inf inf -> -0.78539816339744828 inf
-asin1011 asin nan inf -> nan inf
-asin1012 asin -0.0 nan -> -0.0 nan
-asin1013 asin -2.2999999999999998 nan -> nan nan
-asin1014 asin -inf nan -> nan inf ignore-imag-sign
-asin1015 asin nan nan -> nan nan
-asin1016 asin inf 0.0 -> 1.5707963267948966 inf
-asin1017 asin inf 2.2999999999999998 -> 1.5707963267948966 inf
-asin1018 asin 0.0 inf -> 0.0 inf
-asin1019 asin 2.2999999999999998 inf -> 0.0 inf
-asin1020 asin inf inf -> 0.78539816339744828 inf
-asin1021 asin 0.0 nan -> 0.0 nan
-asin1022 asin 2.2999999999999998 nan -> nan nan
-asin1023 asin inf nan -> nan inf ignore-imag-sign
-asin1024 asin inf -0.0 -> 1.5707963267948966 -inf
-asin1025 asin inf -2.2999999999999998 -> 1.5707963267948966 -inf
-asin1026 asin nan -0.0 -> nan nan
-asin1027 asin nan -2.2999999999999998 -> nan nan
-asin1028 asin 0.0 -inf -> 0.0 -inf
-asin1029 asin 2.2999999999999998 -inf -> 0.0 -inf
-asin1030 asin inf -inf -> 0.78539816339744828 -inf
-asin1031 asin nan -inf -> nan -inf
-asin1032 asin -inf -0.0 -> -1.5707963267948966 -inf
-asin1033 asin -inf -2.2999999999999998 -> -1.5707963267948966 -inf
-asin1034 asin -0.0 -inf -> -0.0 -inf
-asin1035 asin -2.2999999999999998 -inf -> -0.0 -inf
-asin1036 asin -inf -inf -> -0.78539816339744828 -inf
-
-
-------------------------------------
--- asinh: Inverse hyperbolic sine --
-------------------------------------
-
--- zeros
-asinh0000 asinh 0.0 0.0 -> 0.0 0.0
-asinh0001 asinh 0.0 -0.0 -> 0.0 -0.0
-asinh0002 asinh -0.0 0.0 -> -0.0 0.0
-asinh0003 asinh -0.0 -0.0 -> -0.0 -0.0
-
--- branch points: +/-i
-asinh0010 asinh 0.0 1.0 -> 0.0 1.5707963267948966
-asinh0011 asinh 0.0 -1.0 -> 0.0 -1.5707963267948966
-asinh0012 asinh -0.0 1.0 -> -0.0 1.5707963267948966
-asinh0013 asinh -0.0 -1.0 -> -0.0 -1.5707963267948966
-
--- values along both sides of imaginary axis
-asinh0020 asinh 0.0 -9.8813129168249309e-324 -> 0.0 -9.8813129168249309e-324
-asinh0021 asinh -0.0 -9.8813129168249309e-324 -> -0.0 -9.8813129168249309e-324
-asinh0022 asinh 0.0 -1e-305 -> 0.0 -1e-305
-asinh0023 asinh -0.0 -1e-305 -> -0.0 -1e-305
-asinh0024 asinh 0.0 -1e-150 -> 0.0 -1e-150
-asinh0025 asinh -0.0 -1e-150 -> -0.0 -1e-150
-asinh0026 asinh 0.0 -9.9999999999999998e-17 -> 0.0 -9.9999999999999998e-17
-asinh0027 asinh -0.0 -9.9999999999999998e-17 -> -0.0 -9.9999999999999998e-17
-asinh0028 asinh 0.0 -0.001 -> 0.0 -0.0010000001666667416
-asinh0029 asinh -0.0 -0.001 -> -0.0 -0.0010000001666667416
-asinh0030 asinh 0.0 -0.57899999999999996 -> 0.0 -0.61750165481717001
-asinh0031 asinh -0.0 -0.57899999999999996 -> -0.0 -0.61750165481717001
-asinh0032 asinh 0.0 -0.99999999999999989 -> 0.0 -1.5707963118937354
-asinh0033 asinh -0.0 -0.99999999999999989 -> -0.0 -1.5707963118937354
-asinh0034 asinh 0.0 -1.0000000000000002 -> 2.1073424255447014e-08 -1.5707963267948966
-asinh0035 asinh -0.0 -1.0000000000000002 -> -2.1073424255447014e-08 -1.5707963267948966
-asinh0036 asinh 0.0 -1.0009999999999999 -> 0.044717633608306849 -1.5707963267948966
-asinh0037 asinh -0.0 -1.0009999999999999 -> -0.044717633608306849 -1.5707963267948966
-asinh0038 asinh 0.0 -2.0 -> 1.3169578969248168 -1.5707963267948966
-asinh0039 asinh -0.0 -2.0 -> -1.3169578969248168 -1.5707963267948966
-asinh0040 asinh 0.0 -20.0 -> 3.6882538673612966 -1.5707963267948966
-asinh0041 asinh -0.0 -20.0 -> -3.6882538673612966 -1.5707963267948966
-asinh0042 asinh 0.0 -10000000000000000.0 -> 37.534508668464674 -1.5707963267948966
-asinh0043 asinh -0.0 -10000000000000000.0 -> -37.534508668464674 -1.5707963267948966
-asinh0044 asinh 0.0 -9.9999999999999998e+149 -> 346.08091112966679 -1.5707963267948966
-asinh0045 asinh -0.0 -9.9999999999999998e+149 -> -346.08091112966679 -1.5707963267948966
-asinh0046 asinh 0.0 -1.0000000000000001e+299 -> 689.16608998577965 -1.5707963267948966
-asinh0047 asinh -0.0 -1.0000000000000001e+299 -> -689.16608998577965 -1.5707963267948966
-asinh0048 asinh 0.0 9.8813129168249309e-324 -> 0.0 9.8813129168249309e-324
-asinh0049 asinh -0.0 9.8813129168249309e-324 -> -0.0 9.8813129168249309e-324
-asinh0050 asinh 0.0 1e-305 -> 0.0 1e-305
-asinh0051 asinh -0.0 1e-305 -> -0.0 1e-305
-asinh0052 asinh 0.0 1e-150 -> 0.0 1e-150
-asinh0053 asinh -0.0 1e-150 -> -0.0 1e-150
-asinh0054 asinh 0.0 9.9999999999999998e-17 -> 0.0 9.9999999999999998e-17
-asinh0055 asinh -0.0 9.9999999999999998e-17 -> -0.0 9.9999999999999998e-17
-asinh0056 asinh 0.0 0.001 -> 0.0 0.0010000001666667416
-asinh0057 asinh -0.0 0.001 -> -0.0 0.0010000001666667416
-asinh0058 asinh 0.0 0.57899999999999996 -> 0.0 0.61750165481717001
-asinh0059 asinh -0.0 0.57899999999999996 -> -0.0 0.61750165481717001
-asinh0060 asinh 0.0 0.99999999999999989 -> 0.0 1.5707963118937354
-asinh0061 asinh -0.0 0.99999999999999989 -> -0.0 1.5707963118937354
-asinh0062 asinh 0.0 1.0000000000000002 -> 2.1073424255447014e-08 1.5707963267948966
-asinh0063 asinh -0.0 1.0000000000000002 -> -2.1073424255447014e-08 1.5707963267948966
-asinh0064 asinh 0.0 1.0009999999999999 -> 0.044717633608306849 1.5707963267948966
-asinh0065 asinh -0.0 1.0009999999999999 -> -0.044717633608306849 1.5707963267948966
-asinh0066 asinh 0.0 2.0 -> 1.3169578969248168 1.5707963267948966
-asinh0067 asinh -0.0 2.0 -> -1.3169578969248168 1.5707963267948966
-asinh0068 asinh 0.0 20.0 -> 3.6882538673612966 1.5707963267948966
-asinh0069 asinh -0.0 20.0 -> -3.6882538673612966 1.5707963267948966
-asinh0070 asinh 0.0 10000000000000000.0 -> 37.534508668464674 1.5707963267948966
-asinh0071 asinh -0.0 10000000000000000.0 -> -37.534508668464674 1.5707963267948966
-asinh0072 asinh 0.0 9.9999999999999998e+149 -> 346.08091112966679 1.5707963267948966
-asinh0073 asinh -0.0 9.9999999999999998e+149 -> -346.08091112966679 1.5707963267948966
-asinh0074 asinh 0.0 1.0000000000000001e+299 -> 689.16608998577965 1.5707963267948966
-asinh0075 asinh -0.0 1.0000000000000001e+299 -> -689.16608998577965 1.5707963267948966
-
--- random inputs
-asinh0100 asinh -0.5946402853710423 -0.044506548910000145 -> -0.56459775392653022 -0.038256221441536356
-asinh0101 asinh -0.19353958046180916 -0.017489624793193454 -> -0.19237926804196651 -0.017171741895336792
-asinh0102 asinh -0.033117585138955893 -8.5256414015933757 -> -2.8327758348650969 -1.5668848791092411
-asinh0103 asinh -1.5184043184035716 -0.73491245339073275 -> -1.2715891419764005 -0.39204624408542355
-asinh0104 asinh -0.60716120271208818 -0.28900743958436542 -> -0.59119299421187232 -0.24745931678118135
-asinh0105 asinh -0.0237177865112429 2.8832601052166313 -> -1.7205820772413236 1.5620261702963094
-asinh0106 asinh -2.3906812342743979 2.6349216848574013 -> -1.9609636249445124 0.8142142660574706
-asinh0107 asinh -0.0027605019787620517 183.85588476550555 -> -5.9072920005445066 1.5707813120847871
-asinh0108 asinh -0.99083661164404713 0.028006797051617648 -> -0.8750185251283995 0.019894099615994653
-asinh0109 asinh -3.0362951937986393 0.86377266758504867 -> -1.8636030714685221 0.26475058859950168
-asinh0110 asinh 0.34438464536152769 -0.71603790174885029 -> 0.43985415690734164 -0.71015037409294324
-asinh0111 asinh 4.4925124413876256 -60604595352.871613 -> 25.520783738612078 -1.5707963267207683
-asinh0112 asinh 2.3213991428170337 -7.5459667007307258 -> 2.7560464993451643 -1.270073210856117
-asinh0113 asinh 0.21291939741682028 -1.2720428814784408 -> 0.77275088137338266 -1.3182099250896895
-asinh0114 asinh 6.6447359379455957 -0.97196191666946996 -> 2.602830695139672 -0.14368247412319965
-asinh0115 asinh 7.1326256655083746 2.1516360452706857 -> 2.7051146374367212 0.29051701669727581
-asinh0116 asinh 0.18846550905063442 3.4705348585339832 -> 1.917697875799296 1.514155593347924
-asinh0117 asinh 0.19065075303281598 0.26216814548222012 -> 0.19603050785932474 0.26013422809614117
-asinh0118 asinh 2.0242004665739719 0.70510281647495787 -> 1.4970366212896002 0.30526007200481453
-asinh0119 asinh 37.336596461576057 717.29157391678234 -> 7.269981997945294 1.5187910219576033
-
--- values near infinity
-asinh0200 asinh 1.0760517500874541e+308 1.1497786241240167e+308 -> 710.34346055651815 0.81850936961793475
-asinh0201 asinh 1.1784839328845529e+308 -1.6478429586716638e+308 -> 710.59536255783678 -0.94996311735607697
-asinh0202 asinh -4.8777682248909193e+307 1.4103736217538474e+308 -> -710.28970147376992 1.2378239519096443
-asinh0203 asinh -1.2832478903233108e+308 -1.5732392613155698e+308 -> -710.59750164290745 -0.88657181439322452
-asinh0204 asinh 0.0 6.8431383856345372e+307 -> 709.51001718444604 1.5707963267948966
-asinh0205 asinh -0.0 8.601822432238051e+307 -> -709.73874482126689 1.5707963267948966
-asinh0206 asinh 0.0 -5.5698396067303782e+307 -> 709.30413698733742 -1.5707963267948966
-asinh0207 asinh -0.0 -7.1507777734621804e+307 -> -709.55399186002705 -1.5707963267948966
-asinh0208 asinh 1.6025136110019349e+308 0.0 -> 710.3609292261076 0.0
-asinh0209 asinh 1.3927819858239114e+308 -0.0 -> 710.22065899832899 -0.0
-asinh0210 asinh -6.0442994056210995e+307 0.0 -> -709.38588631057621 0.0
-asinh0211 asinh -1.2775271979042634e+308 -0.0 -> -710.13428215553972 -0.0
-asinh0212 asinh 1.0687496260268489e+308 1.0255615699476961 -> 709.95584521407841 9.5959010882679093e-309
-asinh0213 asinh 1.0050967333370962e+308 -0.87668970117333433 -> 709.89443961168183 -8.7224410556242882e-309
-asinh0214 asinh -5.7161452814862392e+307 8.2377808413450122 -> -709.33006540611166 1.4411426644501116e-307
-asinh0215 asinh -8.2009040727653315e+307 -6.407409526654976 -> -709.69101513070109 -7.8130526461510088e-308
-asinh0216 asinh 6.4239368496483982 1.6365990821551427e+308 -> 710.38197618101287 1.5707963267948966
-asinh0217 asinh 5.4729111423315882 -1.1227237438144211e+308 -> 710.00511346983546 -1.5707963267948966
-asinh0218 asinh -8.3455818297412723 1.443172020182019e+308 -> -710.25619930551818 1.5707963267948966
-asinh0219 asinh -2.6049726230372441 -1.7952291144022702e+308 -> -710.47448847685644 -1.5707963267948966
-
--- values near 0
-asinh0220 asinh 1.2940113339664088e-314 6.9169190417774516e-323 -> 1.2940113339664088e-314 6.9169190417774516e-323
-asinh0221 asinh 2.3848478863874649e-315 -3.1907655025717717e-310 -> 2.3848478863874649e-315 -3.1907655025717717e-310
-asinh0222 asinh -3.0097643679641622e-316 4.6936236354918422e-322 -> -3.0097643679641622e-316 4.6936236354918422e-322
-asinh0223 asinh -1.787997087755751e-308 -8.5619622834902341e-310 -> -1.787997087755751e-308 -8.5619622834902341e-310
-asinh0224 asinh 0.0 1.2491433448427325e-314 -> 0.0 1.2491433448427325e-314
-asinh0225 asinh -0.0 2.5024072154538062e-308 -> -0.0 2.5024072154538062e-308
-asinh0226 asinh 0.0 -2.9643938750474793e-323 -> 0.0 -2.9643938750474793e-323
-asinh0227 asinh -0.0 -2.9396905927554169e-320 -> -0.0 -2.9396905927554169e-320
-asinh0228 asinh 5.64042930029359e-317 0.0 -> 5.64042930029359e-317 0.0
-asinh0229 asinh 3.3833911866596068e-318 -0.0 -> 3.3833911866596068e-318 -0.0
-asinh0230 asinh -4.9406564584124654e-324 0.0 -> -4.9406564584124654e-324 0.0
-asinh0231 asinh -2.2211379227994845e-308 -0.0 -> -2.2211379227994845e-308 -0.0
-
--- special values
-asinh1000 asinh 0.0 0.0 -> 0.0 0.0
-asinh1001 asinh 0.0 -0.0 -> 0.0 -0.0
-asinh1002 asinh -0.0 0.0 -> -0.0 0.0
-asinh1003 asinh -0.0 -0.0 -> -0.0 -0.0
-asinh1004 asinh 0.0 inf -> inf 1.5707963267948966
-asinh1005 asinh 2.3 inf -> inf 1.5707963267948966
-asinh1006 asinh 0.0 nan -> nan nan
-asinh1007 asinh 2.3 nan -> nan nan
-asinh1008 asinh inf 0.0 -> inf 0.0
-asinh1009 asinh inf 2.3 -> inf 0.0
-asinh1010 asinh inf inf -> inf 0.78539816339744828
-asinh1011 asinh inf nan -> inf nan
-asinh1012 asinh nan 0.0 -> nan 0.0
-asinh1013 asinh nan 2.3 -> nan nan
-asinh1014 asinh nan inf -> inf nan                      ignore-real-sign
-asinh1015 asinh nan nan -> nan nan
-asinh1016 asinh 0.0 -inf -> inf -1.5707963267948966
-asinh1017 asinh 2.3 -inf -> inf -1.5707963267948966
-asinh1018 asinh inf -0.0 -> inf -0.0
-asinh1019 asinh inf -2.3 -> inf -0.0
-asinh1020 asinh inf -inf -> inf -0.78539816339744828
-asinh1021 asinh nan -0.0 -> nan -0.0
-asinh1022 asinh nan -2.3 -> nan nan
-asinh1023 asinh nan -inf -> inf nan                     ignore-real-sign
-asinh1024 asinh -0.0 -inf -> -inf -1.5707963267948966
-asinh1025 asinh -2.3 -inf -> -inf -1.5707963267948966
-asinh1026 asinh -0.0 nan -> nan nan
-asinh1027 asinh -2.3 nan -> nan nan
-asinh1028 asinh -inf -0.0 -> -inf -0.0
-asinh1029 asinh -inf -2.3 -> -inf -0.0
-asinh1030 asinh -inf -inf -> -inf -0.78539816339744828
-asinh1031 asinh -inf nan -> -inf nan
-asinh1032 asinh -0.0 inf -> -inf 1.5707963267948966
-asinh1033 asinh -2.3 inf -> -inf 1.5707963267948966
-asinh1034 asinh -inf 0.0 -> -inf 0.0
-asinh1035 asinh -inf 2.3 -> -inf 0.0
-asinh1036 asinh -inf inf -> -inf 0.78539816339744828
-
-
----------------------------
--- atan: Inverse tangent --
----------------------------
-
--- zeros
-atan0000 atan 0.0 0.0 -> 0.0 0.0
-atan0001 atan 0.0 -0.0 -> 0.0 -0.0
-atan0002 atan -0.0 0.0 -> -0.0 0.0
-atan0003 atan -0.0 -0.0 -> -0.0 -0.0
-
--- values along both sides of imaginary axis
-atan0010 atan 0.0 -9.8813129168249309e-324 -> 0.0 -9.8813129168249309e-324
-atan0011 atan -0.0 -9.8813129168249309e-324 -> -0.0 -9.8813129168249309e-324
-atan0012 atan 0.0 -1e-305 -> 0.0 -1e-305
-atan0013 atan -0.0 -1e-305 -> -0.0 -1e-305
-atan0014 atan 0.0 -1e-150 -> 0.0 -1e-150
-atan0015 atan -0.0 -1e-150 -> -0.0 -1e-150
-atan0016 atan 0.0 -9.9999999999999998e-17 -> 0.0 -9.9999999999999998e-17
-atan0017 atan -0.0 -9.9999999999999998e-17 -> -0.0 -9.9999999999999998e-17
-atan0018 atan 0.0 -0.001 -> 0.0 -0.0010000003333335333
-atan0019 atan -0.0 -0.001 -> -0.0 -0.0010000003333335333
-atan0020 atan 0.0 -0.57899999999999996 -> 0.0 -0.6609570902866303
-atan0021 atan -0.0 -0.57899999999999996 -> -0.0 -0.6609570902866303
-atan0022 atan 0.0 -0.99999999999999989 -> 0.0 -18.714973875118524
-atan0023 atan -0.0 -0.99999999999999989 -> -0.0 -18.714973875118524
-atan0024 atan 0.0 -1.0000000000000002 -> 1.5707963267948966 -18.36840028483855
-atan0025 atan -0.0 -1.0000000000000002 -> -1.5707963267948966 -18.36840028483855
-atan0026 atan 0.0 -1.0009999999999999 -> 1.5707963267948966 -3.8007011672919218
-atan0027 atan -0.0 -1.0009999999999999 -> -1.5707963267948966 -3.8007011672919218
-atan0028 atan 0.0 -2.0 -> 1.5707963267948966 -0.54930614433405489
-atan0029 atan -0.0 -2.0 -> -1.5707963267948966 -0.54930614433405489
-atan0030 atan 0.0 -20.0 -> 1.5707963267948966 -0.050041729278491265
-atan0031 atan -0.0 -20.0 -> -1.5707963267948966 -0.050041729278491265
-atan0032 atan 0.0 -10000000000000000.0 -> 1.5707963267948966 -9.9999999999999998e-17
-atan0033 atan -0.0 -10000000000000000.0 -> -1.5707963267948966 -9.9999999999999998e-17
-atan0034 atan 0.0 -9.9999999999999998e+149 -> 1.5707963267948966 -1e-150
-atan0035 atan -0.0 -9.9999999999999998e+149 -> -1.5707963267948966 -1e-150
-atan0036 atan 0.0 -1.0000000000000001e+299 -> 1.5707963267948966 -9.9999999999999999e-300
-atan0037 atan -0.0 -1.0000000000000001e+299 -> -1.5707963267948966 -9.9999999999999999e-300
-atan0038 atan 0.0 9.8813129168249309e-324 -> 0.0 9.8813129168249309e-324
-atan0039 atan -0.0 9.8813129168249309e-324 -> -0.0 9.8813129168249309e-324
-atan0040 atan 0.0 1e-305 -> 0.0 1e-305
-atan0041 atan -0.0 1e-305 -> -0.0 1e-305
-atan0042 atan 0.0 1e-150 -> 0.0 1e-150
-atan0043 atan -0.0 1e-150 -> -0.0 1e-150
-atan0044 atan 0.0 9.9999999999999998e-17 -> 0.0 9.9999999999999998e-17
-atan0045 atan -0.0 9.9999999999999998e-17 -> -0.0 9.9999999999999998e-17
-atan0046 atan 0.0 0.001 -> 0.0 0.0010000003333335333
-atan0047 atan -0.0 0.001 -> -0.0 0.0010000003333335333
-atan0048 atan 0.0 0.57899999999999996 -> 0.0 0.6609570902866303
-atan0049 atan -0.0 0.57899999999999996 -> -0.0 0.6609570902866303
-atan0050 atan 0.0 0.99999999999999989 -> 0.0 18.714973875118524
-atan0051 atan -0.0 0.99999999999999989 -> -0.0 18.714973875118524
-atan0052 atan 0.0 1.0000000000000002 -> 1.5707963267948966 18.36840028483855
-atan0053 atan -0.0 1.0000000000000002 -> -1.5707963267948966 18.36840028483855
-atan0054 atan 0.0 1.0009999999999999 -> 1.5707963267948966 3.8007011672919218
-atan0055 atan -0.0 1.0009999999999999 -> -1.5707963267948966 3.8007011672919218
-atan0056 atan 0.0 2.0 -> 1.5707963267948966 0.54930614433405489
-atan0057 atan -0.0 2.0 -> -1.5707963267948966 0.54930614433405489
-atan0058 atan 0.0 20.0 -> 1.5707963267948966 0.050041729278491265
-atan0059 atan -0.0 20.0 -> -1.5707963267948966 0.050041729278491265
-atan0060 atan 0.0 10000000000000000.0 -> 1.5707963267948966 9.9999999999999998e-17
-atan0061 atan -0.0 10000000000000000.0 -> -1.5707963267948966 9.9999999999999998e-17
-atan0062 atan 0.0 9.9999999999999998e+149 -> 1.5707963267948966 1e-150
-atan0063 atan -0.0 9.9999999999999998e+149 -> -1.5707963267948966 1e-150
-atan0064 atan 0.0 1.0000000000000001e+299 -> 1.5707963267948966 9.9999999999999999e-300
-atan0065 atan -0.0 1.0000000000000001e+299 -> -1.5707963267948966 9.9999999999999999e-300
-
--- random inputs
-atan0100 atan -0.32538873661060214 -1.5530461550412578 -> -1.3682728427554227 -0.69451401598762041
-atan0101 atan -0.45863393495197929 -4799.1747094903594 -> -1.5707963068820623 -0.00020836916050636145
-atan0102 atan -8.3006999685976162 -2.6788890251790938 -> -1.4619862771810199 -0.034811669653327826
-atan0103 atan -1.8836307682985314 -1.1441976638861771 -> -1.1839984370871612 -0.20630956157312796
-atan0104 atan -0.00063230482407491669 -4.9312520961829485 -> -1.5707692093223147 -0.20563867743008304
-atan0105 atan -0.84278137150065946 179012.37493146997 -> -1.5707963267685969 5.5862059836425272e-06
-atan0106 atan -0.95487853984049287 14.311334539886177 -> -1.5661322859434561 0.069676024526232005
-atan0107 atan -1.3513252539663239 6.0500727021632198e-08 -> -0.93371676315220975 2.140800269742656e-08
-atan0108 atan -0.20566254458595795 0.11933771944159823 -> -0.20556463711174916 0.11493405387141732
-atan0109 atan -0.58563718795408559 0.64438965423212868 -> -0.68361089300233124 0.46759762751800249
-atan0110 atan 48.479267751948292 -78.386382460112543 -> 1.5650888770910523 -0.0092276811373297584
-atan0111 atan 1.0575373914056061 -0.75988012377296987 -> 0.94430886722043594 -0.31915698126703118
-atan0112 atan 4444810.4314677203 -0.56553404593942558 -> 1.5707961018134231 -2.8625446437701909e-14
-atan0113 atan 0.010101405082520009 -0.032932668550282478 -> 0.01011202676646334 -0.032941214776834996
-atan0114 atan 1.5353585300154911 -2.1947099346796519 -> 1.3400310739206394 -0.29996003607449045
-atan0115 atan 0.21869457055670882 9.9915684254007093 -> 1.5685846078876444 0.1003716881759439
-atan0116 atan 0.17783290150246836 0.064334689863650957 -> 0.17668728064286277 0.062435808728873846
-atan0117 atan 15.757474087615918 383.57262142534 -> 1.5706894060369621 0.0026026817278826603
-atan0118 atan 10.587017408533317 0.21720238081843438 -> 1.4766594681336236 0.0019199097383010061
-atan0119 atan 0.86026078678781204 0.1230148609359502 -> 0.7147259322534929 0.070551221954286605
-
--- values near infinity
-atan0200 atan 7.8764397011195798e+307 8.1647921137746308e+307 -> 1.5707963267948966 6.3439446939604493e-309
-atan0201 atan 1.5873698696131487e+308 -1.0780367422960641e+308 -> 1.5707963267948966 -2.9279309368530781e-309
-atan0202 atan -1.5844551864825834e+308 1.0290657809098675e+308 -> -1.5707963267948966 2.8829614736961417e-309
-atan0203 atan -1.3168792562524032e+308 -9.088432341614825e+307 -> -1.5707963267948966 -3.5499373057390056e-309
-atan0204 atan 0.0 1.0360465742258337e+308 -> 1.5707963267948966 9.6520757355646018e-309
-atan0205 atan -0.0 1.0045063210373196e+308 -> -1.5707963267948966 9.955138947929503e-309
-atan0206 atan 0.0 -9.5155296715763696e+307 -> 1.5707963267948966 -1.050913648020118e-308
-atan0207 atan -0.0 -1.5565700490496501e+308 -> -1.5707963267948966 -6.4243816114189071e-309
-atan0208 atan 1.2956339389525244e+308 0.0 -> 1.5707963267948966 0.0
-atan0209 atan 1.4408126243772151e+308 -0.0 -> 1.5707963267948966 -0.0
-atan0210 atan -1.0631786461936417e+308 0.0 -> -1.5707963267948966 0.0
-atan0211 atan -1.0516056964171069e+308 -0.0 -> -1.5707963267948966 -0.0
-atan0212 atan 1.236162319603838e+308 4.6827953496242936 -> 1.5707963267948966 0.0
-atan0213 atan 7.000516472897218e+307 -5.8631608017844163 -> 1.5707963267948966 -0.0
-atan0214 atan -1.5053444003338508e+308 5.1199197268420313 -> -1.5707963267948966 0.0
-atan0215 atan -1.399172518147259e+308 -3.5687766472913673 -> -1.5707963267948966 -0.0
-atan0216 atan 8.1252833070803021 6.2782953917343822e+307 -> 1.5707963267948966 1.5927890256908564e-308
-atan0217 atan 2.8034285947515167 -1.3378049775753878e+308 -> 1.5707963267948966 -7.4749310756219562e-309
-atan0218 atan -1.4073509988974953 1.6776381785968355e+308 -> -1.5707963267948966 5.9607608646364569e-309
-atan0219 atan -2.7135551527592119 -1.281567445525738e+308 -> -1.5707963267948966 -7.8029447727565326e-309
-
--- imaginary part = +/-1, real part tiny
-atan0300 atan -1e-150 -1.0 -> -0.78539816339744828 -173.04045556483339
-atan0301 atan 1e-155 1.0 -> 0.78539816339744828 178.79691829731851
-atan0302 atan 9.9999999999999999e-161 -1.0 -> 0.78539816339744828 -184.55338102980363
-atan0303 atan -1e-165 1.0 -> -0.78539816339744828 190.30984376228875
-atan0304 atan -9.9998886718268301e-321 -1.0 -> -0.78539816339744828 -368.76019403576692
-
--- special values
-atan1000 atan -0.0 0.0 -> -0.0 0.0
-atan1001 atan nan 0.0 -> nan 0.0
-atan1002 atan -0.0 1.0 -> -0.0 inf divide-by-zero
-atan1003 atan -inf 0.0 -> -1.5707963267948966 0.0
-atan1004 atan -inf 2.2999999999999998 -> -1.5707963267948966 0.0
-atan1005 atan nan 2.2999999999999998 -> nan nan
-atan1006 atan -0.0 inf -> -1.5707963267948966 0.0
-atan1007 atan -2.2999999999999998 inf -> -1.5707963267948966 0.0
-atan1008 atan -inf inf -> -1.5707963267948966 0.0
-atan1009 atan nan inf -> nan 0.0
-atan1010 atan -0.0 nan -> nan nan
-atan1011 atan -2.2999999999999998 nan -> nan nan
-atan1012 atan -inf nan -> -1.5707963267948966 0.0 ignore-imag-sign
-atan1013 atan nan nan -> nan nan
-atan1014 atan 0.0 0.0 -> 0.0 0.0
-atan1015 atan 0.0 1.0 -> 0.0 inf divide-by-zero
-atan1016 atan inf 0.0 -> 1.5707963267948966 0.0
-atan1017 atan inf 2.2999999999999998 -> 1.5707963267948966 0.0
-atan1018 atan 0.0 inf -> 1.5707963267948966 0.0
-atan1019 atan 2.2999999999999998 inf -> 1.5707963267948966 0.0
-atan1020 atan inf inf -> 1.5707963267948966 0.0
-atan1021 atan 0.0 nan -> nan nan
-atan1022 atan 2.2999999999999998 nan -> nan nan
-atan1023 atan inf nan -> 1.5707963267948966 0.0 ignore-imag-sign
-atan1024 atan 0.0 -0.0 -> 0.0 -0.0
-atan1025 atan nan -0.0 -> nan -0.0
-atan1026 atan 0.0 -1.0 -> 0.0 -inf divide-by-zero
-atan1027 atan inf -0.0 -> 1.5707963267948966 -0.0
-atan1028 atan inf -2.2999999999999998 -> 1.5707963267948966 -0.0
-atan1029 atan nan -2.2999999999999998 -> nan nan
-atan1030 atan 0.0 -inf -> 1.5707963267948966 -0.0
-atan1031 atan 2.2999999999999998 -inf -> 1.5707963267948966 -0.0
-atan1032 atan inf -inf -> 1.5707963267948966 -0.0
-atan1033 atan nan -inf -> nan -0.0
-atan1034 atan -0.0 -0.0 -> -0.0 -0.0
-atan1035 atan -0.0 -1.0 -> -0.0 -inf divide-by-zero
-atan1036 atan -inf -0.0 -> -1.5707963267948966 -0.0
-atan1037 atan -inf -2.2999999999999998 -> -1.5707963267948966 -0.0
-atan1038 atan -0.0 -inf -> -1.5707963267948966 -0.0
-atan1039 atan -2.2999999999999998 -inf -> -1.5707963267948966 -0.0
-atan1040 atan -inf -inf -> -1.5707963267948966 -0.0
-
-
----------------------------------------
--- atanh: Inverse hyperbolic tangent --
----------------------------------------
-
--- zeros
-atanh0000 atanh 0.0 0.0 -> 0.0 0.0
-atanh0001 atanh 0.0 -0.0 -> 0.0 -0.0
-atanh0002 atanh -0.0 0.0 -> -0.0 0.0
-atanh0003 atanh -0.0 -0.0 -> -0.0 -0.0
-
--- values along both sides of real axis
-atanh0010 atanh -9.8813129168249309e-324 0.0 -> -9.8813129168249309e-324 0.0
-atanh0011 atanh -9.8813129168249309e-324 -0.0 -> -9.8813129168249309e-324 -0.0
-atanh0012 atanh -1e-305 0.0 -> -1e-305 0.0
-atanh0013 atanh -1e-305 -0.0 -> -1e-305 -0.0
-atanh0014 atanh -1e-150 0.0 -> -1e-150 0.0
-atanh0015 atanh -1e-150 -0.0 -> -1e-150 -0.0
-atanh0016 atanh -9.9999999999999998e-17 0.0 -> -9.9999999999999998e-17 0.0
-atanh0017 atanh -9.9999999999999998e-17 -0.0 -> -9.9999999999999998e-17 -0.0
-atanh0018 atanh -0.001 0.0 -> -0.0010000003333335333 0.0
-atanh0019 atanh -0.001 -0.0 -> -0.0010000003333335333 -0.0
-atanh0020 atanh -0.57899999999999996 0.0 -> -0.6609570902866303 0.0
-atanh0021 atanh -0.57899999999999996 -0.0 -> -0.6609570902866303 -0.0
-atanh0022 atanh -0.99999999999999989 0.0 -> -18.714973875118524 0.0
-atanh0023 atanh -0.99999999999999989 -0.0 -> -18.714973875118524 -0.0
-atanh0024 atanh -1.0000000000000002 0.0 -> -18.36840028483855 1.5707963267948966
-atanh0025 atanh -1.0000000000000002 -0.0 -> -18.36840028483855 -1.5707963267948966
-atanh0026 atanh -1.0009999999999999 0.0 -> -3.8007011672919218 1.5707963267948966
-atanh0027 atanh -1.0009999999999999 -0.0 -> -3.8007011672919218 -1.5707963267948966
-atanh0028 atanh -2.0 0.0 -> -0.54930614433405489 1.5707963267948966
-atanh0029 atanh -2.0 -0.0 -> -0.54930614433405489 -1.5707963267948966
-atanh0030 atanh -23.0 0.0 -> -0.043505688494814884 1.5707963267948966
-atanh0031 atanh -23.0 -0.0 -> -0.043505688494814884 -1.5707963267948966
-atanh0032 atanh -10000000000000000.0 0.0 -> -9.9999999999999998e-17 1.5707963267948966
-atanh0033 atanh -10000000000000000.0 -0.0 -> -9.9999999999999998e-17 -1.5707963267948966
-atanh0034 atanh -9.9999999999999998e+149 0.0 -> -1e-150 1.5707963267948966
-atanh0035 atanh -9.9999999999999998e+149 -0.0 -> -1e-150 -1.5707963267948966
-atanh0036 atanh -1.0000000000000001e+299 0.0 -> -9.9999999999999999e-300 1.5707963267948966
-atanh0037 atanh -1.0000000000000001e+299 -0.0 -> -9.9999999999999999e-300 -1.5707963267948966
-atanh0038 atanh 9.8813129168249309e-324 0.0 -> 9.8813129168249309e-324 0.0
-atanh0039 atanh 9.8813129168249309e-324 -0.0 -> 9.8813129168249309e-324 -0.0
-atanh0040 atanh 1e-305 0.0 -> 1e-305 0.0
-atanh0041 atanh 1e-305 -0.0 -> 1e-305 -0.0
-atanh0042 atanh 1e-150 0.0 -> 1e-150 0.0
-atanh0043 atanh 1e-150 -0.0 -> 1e-150 -0.0
-atanh0044 atanh 9.9999999999999998e-17 0.0 -> 9.9999999999999998e-17 0.0
-atanh0045 atanh 9.9999999999999998e-17 -0.0 -> 9.9999999999999998e-17 -0.0
-atanh0046 atanh 0.001 0.0 -> 0.0010000003333335333 0.0
-atanh0047 atanh 0.001 -0.0 -> 0.0010000003333335333 -0.0
-atanh0048 atanh 0.57899999999999996 0.0 -> 0.6609570902866303 0.0
-atanh0049 atanh 0.57899999999999996 -0.0 -> 0.6609570902866303 -0.0
-atanh0050 atanh 0.99999999999999989 0.0 -> 18.714973875118524 0.0
-atanh0051 atanh 0.99999999999999989 -0.0 -> 18.714973875118524 -0.0
-atanh0052 atanh 1.0000000000000002 0.0 -> 18.36840028483855 1.5707963267948966
-atanh0053 atanh 1.0000000000000002 -0.0 -> 18.36840028483855 -1.5707963267948966
-atanh0054 atanh 1.0009999999999999 0.0 -> 3.8007011672919218 1.5707963267948966
-atanh0055 atanh 1.0009999999999999 -0.0 -> 3.8007011672919218 -1.5707963267948966
-atanh0056 atanh 2.0 0.0 -> 0.54930614433405489 1.5707963267948966
-atanh0057 atanh 2.0 -0.0 -> 0.54930614433405489 -1.5707963267948966
-atanh0058 atanh 23.0 0.0 -> 0.043505688494814884 1.5707963267948966
-atanh0059 atanh 23.0 -0.0 -> 0.043505688494814884 -1.5707963267948966
-atanh0060 atanh 10000000000000000.0 0.0 -> 9.9999999999999998e-17 1.5707963267948966
-atanh0061 atanh 10000000000000000.0 -0.0 -> 9.9999999999999998e-17 -1.5707963267948966
-atanh0062 atanh 9.9999999999999998e+149 0.0 -> 1e-150 1.5707963267948966
-atanh0063 atanh 9.9999999999999998e+149 -0.0 -> 1e-150 -1.5707963267948966
-atanh0064 atanh 1.0000000000000001e+299 0.0 -> 9.9999999999999999e-300 1.5707963267948966
-atanh0065 atanh 1.0000000000000001e+299 -0.0 -> 9.9999999999999999e-300 -1.5707963267948966
-
--- random inputs
-atanh0100 atanh -0.54460925980633501 -0.54038050126721027 -> -0.41984265808446974 -0.60354153938352828
-atanh0101 atanh -1.6934614269829051 -0.48807386108113621 -> -0.58592769102243281 -1.3537837470975898
-atanh0102 atanh -1.3467293985501207 -0.47868354895395876 -> -0.69961624370709985 -1.1994450156570076
-atanh0103 atanh -5.6142232418984888 -544551613.39307702 -> -1.8932657550925744e-17 -1.5707963249585235
-atanh0104 atanh -0.011841460381263651 -3.259978899823385 -> -0.0010183936547405188 -1.2731614020743838
-atanh0105 atanh -0.0073345736950029532 0.35821949670922248 -> -0.0065004869024682466 0.34399359971920895
-atanh0106 atanh -13.866782244320014 0.9541129545860273 -> -0.071896852055058899 1.5658322704631409
-atanh0107 atanh -708.59964982780775 21.984802159266675 -> -0.0014098779074189741 1.5707525842838959
-atanh0108 atanh -30.916832076030602 1.3691897138829843 -> -0.032292682045743676 1.5693652094847115
-atanh0109 atanh -0.57461806339861754 0.29534797443913063 -> -0.56467464472482765 0.39615612824172625
-atanh0110 atanh 0.40089246737415685 -1.632285984300659 -> 0.1063832707890608 -1.0402821335326482
-atanh0111 atanh 2119.6167688262176 -1.5383653437377242e+17 -> 8.9565008518382049e-32 -1.5707963267948966
-atanh0112 atanh 756.86017850941641 -6.6064087133223817 -> 0.0013211481136820046 -1.5707847948702234
-atanh0113 atanh 4.0490617718041602 -2.5784456791040652e-12 -> 0.25218425538553618 -1.5707963267947291
-atanh0114 atanh 10.589254957173523 -0.13956391149624509 -> 0.094700890282197664 -1.5695407140217623
-atanh0115 atanh 1.0171187553160499 0.70766113465354019 -> 0.55260251975367791 0.96619711116641682
-atanh0116 atanh 0.031645502527750849 0.067319983726544394 -> 0.031513018344086742 0.067285437670549036
-atanh0117 atanh 0.13670177624994517 0.43240089361857947 -> 0.11538933151017253 0.41392008145336212
-atanh0118 atanh 0.64173899243596688 2.9008577686695256 -> 0.065680142424134405 1.2518535724053921
-atanh0119 atanh 0.19313813528025942 38.799619150741869 -> 0.00012820765917366644 1.5450292202823612
-
--- values near infinity
-atanh0200 atanh 5.3242646831347954e+307 1.3740396080084153e+308 -> 2.4519253616695576e-309 1.5707963267948966
-atanh0201 atanh 1.158701641241358e+308 -6.5579268873375853e+307 -> 6.5365375267795098e-309 -1.5707963267948966
-atanh0202 atanh -1.3435325735762247e+308 9.8947369259601547e+307 -> -4.8256680906589956e-309 1.5707963267948966
-atanh0203 atanh -1.4359857522598942e+308 -9.4701204702391004e+307 -> -4.8531282262872645e-309 -1.5707963267948966
-atanh0204 atanh 0.0 5.6614181068098497e+307 -> 0.0 1.5707963267948966
-atanh0205 atanh -0.0 6.9813212721450139e+307 -> -0.0 1.5707963267948966
-atanh0206 atanh 0.0 -7.4970613060311453e+307 -> 0.0 -1.5707963267948966
-atanh0207 atanh -0.0 -1.5280601880314068e+308 -> -0.0 -1.5707963267948966
-atanh0208 atanh 8.2219472336000745e+307 0.0 -> 1.2162568933954813e-308 1.5707963267948966
-atanh0209 atanh 1.4811519617280899e+308 -0.0 -> 6.7515017083951325e-309 -1.5707963267948966
-atanh0210 atanh -1.2282016263598785e+308 0.0 -> -8.1419856360537615e-309 1.5707963267948966
-atanh0211 atanh -1.0616427760154426e+308 -0.0 -> -9.4193642399489563e-309 -1.5707963267948966
-atanh0212 atanh 1.2971536510180682e+308 5.2847948452333293 -> 7.7091869510998328e-309 1.5707963267948966
-atanh0213 atanh 1.1849860977411851e+308 -7.9781906447459949 -> 8.4389175696339014e-309 -1.5707963267948966
-atanh0214 atanh -1.4029969422586635e+308 0.93891986543663375 -> -7.127599283218073e-309 1.5707963267948966
-atanh0215 atanh -4.7508098912248211e+307 -8.2702421247039908 -> -2.1049042645278043e-308 -1.5707963267948966
-atanh0216 atanh 8.2680742115769998 8.1153898410918065e+307 -> 0.0 1.5707963267948966
-atanh0217 atanh 1.2575325146218885 -1.4746679147661649e+308 -> 0.0 -1.5707963267948966
-atanh0218 atanh -2.4618803682310899 1.3781522717005568e+308 -> -0.0 1.5707963267948966
-atanh0219 atanh -4.0952386694788112 -1.231083376353703e+308 -> -0.0 -1.5707963267948966
-
--- values near 0
-atanh0220 atanh 3.8017563659811628e-314 2.6635484239074319e-312 -> 3.8017563659811628e-314 2.6635484239074319e-312
-atanh0221 atanh 1.7391110733611878e-321 -4.3547800672541419e-313 -> 1.7391110733611878e-321 -4.3547800672541419e-313
-atanh0222 atanh -5.9656816081325078e-317 9.9692253555416263e-313 -> -5.9656816081325078e-317 9.9692253555416263e-313
-atanh0223 atanh -6.5606671178400239e-313 -2.1680936406357335e-309 -> -6.5606671178400239e-313 -2.1680936406357335e-309
-atanh0224 atanh 0.0 2.5230944401820779e-319 -> 0.0 2.5230944401820779e-319
-atanh0225 atanh -0.0 5.6066569490064658e-320 -> -0.0 5.6066569490064658e-320
-atanh0226 atanh 0.0 -2.4222487249468377e-317 -> 0.0 -2.4222487249468377e-317
-atanh0227 atanh -0.0 -3.0861101089206037e-316 -> -0.0 -3.0861101089206037e-316
-atanh0228 atanh 3.1219222884393986e-310 0.0 -> 3.1219222884393986e-310 0.0
-atanh0229 atanh 9.8926337564976196e-309 -0.0 -> 9.8926337564976196e-309 -0.0
-atanh0230 atanh -1.5462535092918154e-312 0.0 -> -1.5462535092918154e-312 0.0
-atanh0231 atanh -9.8813129168249309e-324 -0.0 -> -9.8813129168249309e-324 -0.0
-
--- real part = +/-1, imaginary part tiny
-atanh0300 atanh 1.0 1e-153 -> 176.49433320432448 0.78539816339744828
-atanh0301 atanh 1.0 9.9999999999999997e-155 -> 177.64562575082149 0.78539816339744828
-atanh0302 atanh -1.0 1e-161 -> -185.70467357630065 0.78539816339744828
-atanh0303 atanh 1.0 -1e-165 -> 190.30984376228875 -0.78539816339744828
-atanh0304 atanh -1.0 -9.8813129168249309e-324 -> -372.22003596069061 -0.78539816339744828
-
--- special values
-atanh1000 atanh 0.0 0.0 -> 0.0 0.0
-atanh1001 atanh 0.0 nan -> 0.0 nan
-atanh1002 atanh 1.0 0.0 -> inf 0.0                      divide-by-zero
-atanh1003 atanh 0.0 inf -> 0.0 1.5707963267948966
-atanh1004 atanh 2.3 inf -> 0.0 1.5707963267948966
-atanh1005 atanh 2.3 nan -> nan nan
-atanh1006 atanh inf 0.0 -> 0.0 1.5707963267948966
-atanh1007 atanh inf 2.3 -> 0.0 1.5707963267948966
-atanh1008 atanh inf inf -> 0.0 1.5707963267948966
-atanh1009 atanh inf nan -> 0.0 nan
-atanh1010 atanh nan 0.0 -> nan nan
-atanh1011 atanh nan 2.3 -> nan nan
-atanh1012 atanh nan inf -> 0.0 1.5707963267948966       ignore-real-sign
-atanh1013 atanh nan nan -> nan nan
-atanh1014 atanh 0.0 -0.0 -> 0.0 -0.0
-atanh1015 atanh 1.0 -0.0 -> inf -0.0                    divide-by-zero
-atanh1016 atanh 0.0 -inf -> 0.0 -1.5707963267948966
-atanh1017 atanh 2.3 -inf -> 0.0 -1.5707963267948966
-atanh1018 atanh inf -0.0 -> 0.0 -1.5707963267948966
-atanh1019 atanh inf -2.3 -> 0.0 -1.5707963267948966
-atanh1020 atanh inf -inf -> 0.0 -1.5707963267948966
-atanh1021 atanh nan -0.0 -> nan nan
-atanh1022 atanh nan -2.3 -> nan nan
-atanh1023 atanh nan -inf -> 0.0 -1.5707963267948966     ignore-real-sign
-atanh1024 atanh -0.0 -0.0 -> -0.0 -0.0
-atanh1025 atanh -0.0 nan -> -0.0 nan
-atanh1026 atanh -1.0 -0.0 -> -inf -0.0                  divide-by-zero
-atanh1027 atanh -0.0 -inf -> -0.0 -1.5707963267948966
-atanh1028 atanh -2.3 -inf -> -0.0 -1.5707963267948966
-atanh1029 atanh -2.3 nan -> nan nan
-atanh1030 atanh -inf -0.0 -> -0.0 -1.5707963267948966
-atanh1031 atanh -inf -2.3 -> -0.0 -1.5707963267948966
-atanh1032 atanh -inf -inf -> -0.0 -1.5707963267948966
-atanh1033 atanh -inf nan -> -0.0 nan
-atanh1034 atanh -0.0 0.0 -> -0.0 0.0
-atanh1035 atanh -1.0 0.0 -> -inf 0.0                    divide-by-zero
-atanh1036 atanh -0.0 inf -> -0.0 1.5707963267948966
-atanh1037 atanh -2.3 inf -> -0.0 1.5707963267948966
-atanh1038 atanh -inf 0.0 -> -0.0 1.5707963267948966
-atanh1039 atanh -inf 2.3 -> -0.0 1.5707963267948966
-atanh1040 atanh -inf inf -> -0.0 1.5707963267948966
-
-
-----------------------------
--- log: Natural logarithm --
-----------------------------
-
-log0000 log 1.0 0.0 -> 0.0 0.0
-log0001 log 1.0 -0.0 -> 0.0 -0.0
-log0002 log -1.0 0.0 -> 0.0 3.1415926535897931
-log0003 log -1.0 -0.0 -> 0.0 -3.1415926535897931
--- values along both sides of real axis
-log0010 log -9.8813129168249309e-324 0.0 -> -743.74692474082133 3.1415926535897931
-log0011 log -9.8813129168249309e-324 -0.0 -> -743.74692474082133 -3.1415926535897931
-log0012 log -1e-305 0.0 -> -702.28845336318398 3.1415926535897931
-log0013 log -1e-305 -0.0 -> -702.28845336318398 -3.1415926535897931
-log0014 log -1e-150 0.0 -> -345.38776394910684 3.1415926535897931
-log0015 log -1e-150 -0.0 -> -345.38776394910684 -3.1415926535897931
-log0016 log -9.9999999999999998e-17 0.0 -> -36.841361487904734 3.1415926535897931
-log0017 log -9.9999999999999998e-17 -0.0 -> -36.841361487904734 -3.1415926535897931
-log0018 log -0.001 0.0 -> -6.9077552789821368 3.1415926535897931
-log0019 log -0.001 -0.0 -> -6.9077552789821368 -3.1415926535897931
-log0020 log -0.57899999999999996 0.0 -> -0.54645280140914188 3.1415926535897931
-log0021 log -0.57899999999999996 -0.0 -> -0.54645280140914188 -3.1415926535897931
-log0022 log -0.99999999999999989 0.0 -> -1.1102230246251565e-16 3.1415926535897931
-log0023 log -0.99999999999999989 -0.0 -> -1.1102230246251565e-16 -3.1415926535897931
-log0024 log -1.0000000000000002 0.0 -> 2.2204460492503128e-16 3.1415926535897931
-log0025 log -1.0000000000000002 -0.0 -> 2.2204460492503128e-16 -3.1415926535897931
-log0026 log -1.0009999999999999 0.0 -> 0.00099950033308342321 3.1415926535897931
-log0027 log -1.0009999999999999 -0.0 -> 0.00099950033308342321 -3.1415926535897931
-log0028 log -2.0 0.0 -> 0.69314718055994529 3.1415926535897931
-log0029 log -2.0 -0.0 -> 0.69314718055994529 -3.1415926535897931
-log0030 log -23.0 0.0 -> 3.1354942159291497 3.1415926535897931
-log0031 log -23.0 -0.0 -> 3.1354942159291497 -3.1415926535897931
-log0032 log -10000000000000000.0 0.0 -> 36.841361487904734 3.1415926535897931
-log0033 log -10000000000000000.0 -0.0 -> 36.841361487904734 -3.1415926535897931
-log0034 log -9.9999999999999998e+149 0.0 -> 345.38776394910684 3.1415926535897931
-log0035 log -9.9999999999999998e+149 -0.0 -> 345.38776394910684 -3.1415926535897931
-log0036 log -1.0000000000000001e+299 0.0 -> 688.47294280521965 3.1415926535897931
-log0037 log -1.0000000000000001e+299 -0.0 -> 688.47294280521965 -3.1415926535897931
-log0038 log 9.8813129168249309e-324 0.0 -> -743.74692474082133 0.0
-log0039 log 9.8813129168249309e-324 -0.0 -> -743.74692474082133 -0.0
-log0040 log 1e-305 0.0 -> -702.28845336318398 0.0
-log0041 log 1e-305 -0.0 -> -702.28845336318398 -0.0
-log0042 log 1e-150 0.0 -> -345.38776394910684 0.0
-log0043 log 1e-150 -0.0 -> -345.38776394910684 -0.0
-log0044 log 9.9999999999999998e-17 0.0 -> -36.841361487904734 0.0
-log0045 log 9.9999999999999998e-17 -0.0 -> -36.841361487904734 -0.0
-log0046 log 0.001 0.0 -> -6.9077552789821368 0.0
-log0047 log 0.001 -0.0 -> -6.9077552789821368 -0.0
-log0048 log 0.57899999999999996 0.0 -> -0.54645280140914188 0.0
-log0049 log 0.57899999999999996 -0.0 -> -0.54645280140914188 -0.0
-log0050 log 0.99999999999999989 0.0 -> -1.1102230246251565e-16 0.0
-log0051 log 0.99999999999999989 -0.0 -> -1.1102230246251565e-16 -0.0
-log0052 log 1.0000000000000002 0.0 -> 2.2204460492503128e-16 0.0
-log0053 log 1.0000000000000002 -0.0 -> 2.2204460492503128e-16 -0.0
-log0054 log 1.0009999999999999 0.0 -> 0.00099950033308342321 0.0
-log0055 log 1.0009999999999999 -0.0 -> 0.00099950033308342321 -0.0
-log0056 log 2.0 0.0 -> 0.69314718055994529 0.0
-log0057 log 2.0 -0.0 -> 0.69314718055994529 -0.0
-log0058 log 23.0 0.0 -> 3.1354942159291497 0.0
-log0059 log 23.0 -0.0 -> 3.1354942159291497 -0.0
-log0060 log 10000000000000000.0 0.0 -> 36.841361487904734 0.0
-log0061 log 10000000000000000.0 -0.0 -> 36.841361487904734 -0.0
-log0062 log 9.9999999999999998e+149 0.0 -> 345.38776394910684 0.0
-log0063 log 9.9999999999999998e+149 -0.0 -> 345.38776394910684 -0.0
-log0064 log 1.0000000000000001e+299 0.0 -> 688.47294280521965 0.0
-log0065 log 1.0000000000000001e+299 -0.0 -> 688.47294280521965 -0.0
-
--- random inputs
-log0066 log -1.9830454945186191e-16 -2.0334448025673346 -> 0.70973130194329803 -1.5707963267948968
-log0067 log -0.96745853024741857 -0.84995816228299692 -> 0.25292811398722387 -2.4207570438536905
-log0068 log -0.1603644313948418 -0.2929942111041835 -> -1.0965857872427374 -2.0715870859971419
-log0069 log -0.15917913168438699 -0.25238799251132177 -> -1.2093477313249901 -2.1334784232033863
-log0070 log -0.68907818535078802 -3.0693105853476346 -> 1.1460398629184565 -1.7916403813913211
-log0071 log -17.268133447565589 6.8165120014604756 -> 2.9212694465974836 2.7656245081603164
-log0072 log -1.7153894479690328 26.434055372802636 -> 3.2767542953718003 1.6355986276341734
-log0073 log -8.0456794648936578e-06 0.19722758057570208 -> -1.6233969848296075 1.5708371206810101
-log0074 log -2.4306442691323173 0.6846919750700996 -> 0.92633592001969589 2.8670160576718331
-log0075 log -3.5488049250888194 0.45324040643185254 -> 1.2747008374256426 3.0145640007885111
-log0076 log 0.18418516851510189 -0.26062518836212617 -> -1.1421287121940344 -0.95558440841183434
-log0077 log 2.7124837795638399 -13.148769067133387 -> 2.5971659975706802 -1.3673583045209439
-log0078 log 3.6521275476169149e-13 -3.7820543023170673e-05 -> -10.182658136741569 -1.5707963171384316
-log0079 log 5.0877545813862239 -1.2834978326786852 -> 1.6576856213076328 -0.24711583497738485
-log0080 log 0.26477986808461512 -0.67659001194187429 -> -0.31944085207999973 -1.197773671987121
-log0081 log 0.0014754261398071962 5.3514691608205442 -> 1.6773711707153829 1.5705206219261802
-log0082 log 0.29667334462157885 0.00020056045042584795 -> -1.2151233667079588 0.00067603114168689204
-log0083 log 0.82104233671099425 3.9005387130133102 -> 1.3827918965299593 1.3633304701848363
-log0084 log 0.27268135358180667 124.42088110945804 -> 4.8236724223559229 1.5686047258789015
-log0085 log 0.0026286959168267485 0.47795808180573013 -> -0.73821712137809126 1.5652965360960087
-
--- values near infinity
-log0100 log 1.0512025744003172e+308 7.2621669750664611e+307 -> 709.44123967814494 0.60455434048332968
-log0101 log 5.5344249034372126e+307 -1.2155859158431275e+308 -> 709.48562300345679 -1.143553056717973
-log0102 log -1.3155575403469408e+308 1.1610793541663864e+308 -> 709.75847809546428 2.41848796504974
-log0103 log -1.632366720973235e+308 -1.54299446211448e+308 -> 710.00545236515586 -2.3843326028455087
-log0104 log 0.0 5.9449276692327712e+307 -> 708.67616191258526 1.5707963267948966
-log0105 log -0.0 1.1201850459025692e+308 -> 709.30970253338171 1.5707963267948966
-log0106 log 0.0 -1.6214225933466528e+308 -> 709.6795125501086 -1.5707963267948966
-log0107 log -0.0 -1.7453269791591058e+308 -> 709.75315056087379 -1.5707963267948966
-log0108 log 1.440860577601428e+308 0.0 -> 709.56144920058262 0.0
-log0109 log 1.391515176148282e+308 -0.0 -> 709.52660185041327 -0.0
-log0110 log -1.201354401295296e+308 0.0 -> 709.37965823023956 3.1415926535897931
-log0111 log -1.6704337825976804e+308 -0.0 -> 709.70929198492399 -3.1415926535897931
-log0112 log 7.2276974655190223e+307 7.94879711369164 -> 708.87154406512104 1.0997689307850458e-307
-log0113 log 1.1207859593716076e+308 -6.1956200868221147 -> 709.31023883080104 -5.5279244310803286e-308
-log0114 log -4.6678933874471045e+307 9.947107893220382 -> 708.43433142431388 3.1415926535897931
-log0115 log -1.5108012453950142e+308 -5.3117197179375619 -> 709.60884877835008 -3.1415926535897931
-log0116 log 7.4903750871504435 1.5320703776626352e+308 -> 709.62282865085137 1.5707963267948966
-log0117 log 5.9760325525654778 -8.0149473997349123e+307 -> 708.97493177248396 -1.5707963267948966
-log0118 log -7.880194206386629 1.7861845814767441e+308 -> 709.77629046837137 1.5707963267948966
-log0119 log -9.886438993852865 -6.19235781080747e+307 -> 708.71693946977302 -1.5707963267948966
-
--- values near 0
-log0120 log 2.2996867579227779e-308 6.7861840770939125e-312 -> -708.36343567717392 0.00029509166223339815
-log0121 log 6.9169190417774516e-323 -9.0414013188948118e-322 -> -739.22766796468386 -1.4944423210001669
-log0122 log -1.5378064962914011e-316 1.8243628389354635e-310 -> -713.20014803142965 1.5707971697228842
-log0123 log -2.3319898483706837e-321 -2.2358763941866371e-313 -> -719.9045008332522 -1.570796337224766
-log0124 log 0.0 3.872770101081121e-315 -> -723.96033425374401 1.5707963267948966
-log0125 log -0.0 9.6342800939043076e-322 -> -739.16707236281752 1.5707963267948966
-log0126 log 0.0 -2.266099393427834e-308 -> -708.37814861757965 -1.5707963267948966
-log0127 log -0.0 -2.1184695673766626e-315 -> -724.56361036731812 -1.5707963267948966
-log0128 log 1.1363509854348671e-322 0.0 -> -741.30457770545206 0.0
-log0129 log 3.5572726500569751e-322 -0.0 -> -740.16340580236522 -0.0
-log0130 log -2.3696071074040593e-310 0.0 -> -712.93865466421641 3.1415926535897931
-log0131 log -2.813283897266934e-317 -0.0 -> -728.88512203138862 -3.1415926535897931
-
--- values near the unit circle
-log0200 log -0.59999999999999998 0.80000000000000004 -> 2.2204460492503132e-17 2.2142974355881808
-log0201 log 0.79999999999999993 0.60000000000000009 -> 6.1629758220391547e-33 0.64350110879328448
-
--- special values
-log1000 log -0.0 0.0 -> -inf 3.1415926535897931         divide-by-zero
-log1001 log 0.0 0.0 -> -inf 0.0                         divide-by-zero
-log1002 log 0.0 inf -> inf 1.5707963267948966
-log1003 log 2.3 inf -> inf 1.5707963267948966
-log1004 log -0.0 inf -> inf 1.5707963267948966
-log1005 log -2.3 inf -> inf 1.5707963267948966
-log1006 log 0.0 nan -> nan nan
-log1007 log 2.3 nan -> nan nan
-log1008 log -0.0 nan -> nan nan
-log1009 log -2.3 nan -> nan nan
-log1010 log -inf 0.0 -> inf 3.1415926535897931
-log1011 log -inf 2.3 -> inf 3.1415926535897931
-log1012 log inf 0.0 -> inf 0.0
-log1013 log inf 2.3 -> inf 0.0
-log1014 log -inf inf -> inf 2.3561944901923448
-log1015 log inf inf -> inf 0.78539816339744828
-log1016 log inf nan -> inf nan
-log1017 log -inf nan -> inf nan
-log1018 log nan 0.0 -> nan nan
-log1019 log nan 2.3 -> nan nan
-log1020 log nan inf -> inf nan
-log1021 log nan nan -> nan nan
-log1022 log -0.0 -0.0 -> -inf -3.1415926535897931       divide-by-zero
-log1023 log 0.0 -0.0 -> -inf -0.0                       divide-by-zero
-log1024 log 0.0 -inf -> inf -1.5707963267948966
-log1025 log 2.3 -inf -> inf -1.5707963267948966
-log1026 log -0.0 -inf -> inf -1.5707963267948966
-log1027 log -2.3 -inf -> inf -1.5707963267948966
-log1028 log -inf -0.0 -> inf -3.1415926535897931
-log1029 log -inf -2.3 -> inf -3.1415926535897931
-log1030 log inf -0.0 -> inf -0.0
-log1031 log inf -2.3 -> inf -0.0
-log1032 log -inf -inf -> inf -2.3561944901923448
-log1033 log inf -inf -> inf -0.78539816339744828
-log1034 log nan -0.0 -> nan nan
-log1035 log nan -2.3 -> nan nan
-log1036 log nan -inf -> inf nan
-
-
-------------------------------
--- log10: Logarithm base 10 --
-------------------------------
-
-logt0000 log10 1.0 0.0 -> 0.0 0.0
-logt0001 log10 1.0 -0.0 -> 0.0 -0.0
-logt0002 log10 -1.0 0.0 -> 0.0 1.3643763538418414
-logt0003 log10 -1.0 -0.0 -> 0.0 -1.3643763538418414
--- values along both sides of real axis
-logt0010 log10 -9.8813129168249309e-324 0.0 -> -323.0051853474518 1.3643763538418414
-logt0011 log10 -9.8813129168249309e-324 -0.0 -> -323.0051853474518 -1.3643763538418414
-logt0012 log10 -1e-305 0.0 -> -305.0 1.3643763538418414
-logt0013 log10 -1e-305 -0.0 -> -305.0 -1.3643763538418414
-logt0014 log10 -1e-150 0.0 -> -150.0 1.3643763538418414
-logt0015 log10 -1e-150 -0.0 -> -150.0 -1.3643763538418414
-logt0016 log10 -9.9999999999999998e-17 0.0 -> -16.0 1.3643763538418414
-logt0017 log10 -9.9999999999999998e-17 -0.0 -> -16.0 -1.3643763538418414
-logt0018 log10 -0.001 0.0 -> -3.0 1.3643763538418414
-logt0019 log10 -0.001 -0.0 -> -3.0 -1.3643763538418414
-logt0020 log10 -0.57899999999999996 0.0 -> -0.23732143627256383 1.3643763538418414
-logt0021 log10 -0.57899999999999996 -0.0 -> -0.23732143627256383 -1.3643763538418414
-logt0022 log10 -0.99999999999999989 0.0 -> -4.821637332766436e-17 1.3643763538418414
-logt0023 log10 -0.99999999999999989 -0.0 -> -4.821637332766436e-17 -1.3643763538418414
-logt0024 log10 -1.0000000000000002 0.0 -> 9.6432746655328696e-17 1.3643763538418414
-logt0025 log10 -1.0000000000000002 -0.0 -> 9.6432746655328696e-17 -1.3643763538418414
-logt0026 log10 -1.0009999999999999 0.0 -> 0.0004340774793185929 1.3643763538418414
-logt0027 log10 -1.0009999999999999 -0.0 -> 0.0004340774793185929 -1.3643763538418414
-logt0028 log10 -2.0 0.0 -> 0.3010299956639812 1.3643763538418414
-logt0029 log10 -2.0 -0.0 -> 0.3010299956639812 -1.3643763538418414
-logt0030 log10 -23.0 0.0 -> 1.3617278360175928 1.3643763538418414
-logt0031 log10 -23.0 -0.0 -> 1.3617278360175928 -1.3643763538418414
-logt0032 log10 -10000000000000000.0 0.0 -> 16.0 1.3643763538418414
-logt0033 log10 -10000000000000000.0 -0.0 -> 16.0 -1.3643763538418414
-logt0034 log10 -9.9999999999999998e+149 0.0 -> 150.0 1.3643763538418414
-logt0035 log10 -9.9999999999999998e+149 -0.0 -> 150.0 -1.3643763538418414
-logt0036 log10 -1.0000000000000001e+299 0.0 -> 299.0 1.3643763538418414
-logt0037 log10 -1.0000000000000001e+299 -0.0 -> 299.0 -1.3643763538418414
-logt0038 log10 9.8813129168249309e-324 0.0 -> -323.0051853474518 0.0
-logt0039 log10 9.8813129168249309e-324 -0.0 -> -323.0051853474518 -0.0
-logt0040 log10 1e-305 0.0 -> -305.0 0.0
-logt0041 log10 1e-305 -0.0 -> -305.0 -0.0
-logt0042 log10 1e-150 0.0 -> -150.0 0.0
-logt0043 log10 1e-150 -0.0 -> -150.0 -0.0
-logt0044 log10 9.9999999999999998e-17 0.0 -> -16.0 0.0
-logt0045 log10 9.9999999999999998e-17 -0.0 -> -16.0 -0.0
-logt0046 log10 0.001 0.0 -> -3.0 0.0
-logt0047 log10 0.001 -0.0 -> -3.0 -0.0
-logt0048 log10 0.57899999999999996 0.0 -> -0.23732143627256383 0.0
-logt0049 log10 0.57899999999999996 -0.0 -> -0.23732143627256383 -0.0
-logt0050 log10 0.99999999999999989 0.0 -> -4.821637332766436e-17 0.0
-logt0051 log10 0.99999999999999989 -0.0 -> -4.821637332766436e-17 -0.0
-logt0052 log10 1.0000000000000002 0.0 -> 9.6432746655328696e-17 0.0
-logt0053 log10 1.0000000000000002 -0.0 -> 9.6432746655328696e-17 -0.0
-logt0054 log10 1.0009999999999999 0.0 -> 0.0004340774793185929 0.0
-logt0055 log10 1.0009999999999999 -0.0 -> 0.0004340774793185929 -0.0
-logt0056 log10 2.0 0.0 -> 0.3010299956639812 0.0
-logt0057 log10 2.0 -0.0 -> 0.3010299956639812 -0.0
-logt0058 log10 23.0 0.0 -> 1.3617278360175928 0.0
-logt0059 log10 23.0 -0.0 -> 1.3617278360175928 -0.0
-logt0060 log10 10000000000000000.0 0.0 -> 16.0 0.0
-logt0061 log10 10000000000000000.0 -0.0 -> 16.0 -0.0
-logt0062 log10 9.9999999999999998e+149 0.0 -> 150.0 0.0
-logt0063 log10 9.9999999999999998e+149 -0.0 -> 150.0 -0.0
-logt0064 log10 1.0000000000000001e+299 0.0 -> 299.0 0.0
-logt0065 log10 1.0000000000000001e+299 -0.0 -> 299.0 -0.0
-
--- random inputs
-logt0066 log10 -1.9830454945186191e-16 -2.0334448025673346 -> 0.30823238806798503 -0.68218817692092071
-logt0067 log10 -0.96745853024741857 -0.84995816228299692 -> 0.10984528422284802 -1.051321426174086
-logt0068 log10 -0.1603644313948418 -0.2929942111041835 -> -0.47624115633305419 -0.89967884023059597
-logt0069 log10 -0.15917913168438699 -0.25238799251132177 -> -0.52521304641665956 -0.92655790645688119
-logt0070 log10 -0.68907818535078802 -3.0693105853476346 -> 0.4977187885066448 -0.77809953119328823
-logt0071 log10 -17.268133447565589 6.8165120014604756 -> 1.2686912008098534 1.2010954629104202
-logt0072 log10 -1.7153894479690328 26.434055372802636 -> 1.423076309032751 0.71033145859005309
-logt0073 log10 -8.0456794648936578e-06 0.19722758057570208 -> -0.70503235244987561 0.68220589348055516
-logt0074 log10 -2.4306442691323173 0.6846919750700996 -> 0.40230257845332595 1.2451292533748923
-logt0075 log10 -3.5488049250888194 0.45324040643185254 -> 0.55359553977141063 1.3092085108866405
-logt0076 log10 0.18418516851510189 -0.26062518836212617 -> -0.49602019732913638 -0.41500503556604301
-logt0077 log10 2.7124837795638399 -13.148769067133387 -> 1.1279348613317008 -0.59383616643803216
-logt0078 log10 3.6521275476169149e-13 -3.7820543023170673e-05 -> -4.4222722398941112 -0.68218817272717114
-logt0079 log10 5.0877545813862239 -1.2834978326786852 -> 0.71992371806426847 -0.10732104352159283
-logt0080 log10 0.26477986808461512 -0.67659001194187429 -> -0.13873139935281681 -0.52018649631300229
-logt0081 log10 0.0014754261398071962 5.3514691608205442 -> 0.72847304354528819 0.6820684398178033
-logt0082 log10 0.29667334462157885 0.00020056045042584795 -> -0.52772137299296806 0.00029359659442937261
-logt0083 log10 0.82104233671099425 3.9005387130133102 -> 0.60053889028349361 0.59208690021184018
-logt0084 log10 0.27268135358180667 124.42088110945804 -> 2.094894315538069 0.68123637673656989
-logt0085 log10 0.0026286959168267485 0.47795808180573013 -> -0.32060362226100814 0.67979964816877081
-
--- values near infinity
-logt0100 log10 1.0512025744003172e+308 7.2621669750664611e+307 -> 308.10641562682065 0.26255461408256975
-logt0101 log10 5.5344249034372126e+307 -1.2155859158431275e+308 -> 308.12569106009209 -0.496638782296212
-logt0102 log10 -1.3155575403469408e+308 1.1610793541663864e+308 -> 308.24419052091019 1.0503359777705266
-logt0103 log10 -1.632366720973235e+308 -1.54299446211448e+308 -> 308.3514500834093 -1.0355024924378222
-logt0104 log10 0.0 5.9449276692327712e+307 -> 307.77414657501117 0.68218817692092071
-logt0105 log10 -0.0 1.1201850459025692e+308 -> 308.04928977068465 0.68218817692092071
-logt0106 log10 0.0 -1.6214225933466528e+308 -> 308.20989622030174 -0.68218817692092071
-logt0107 log10 -0.0 -1.7453269791591058e+308 -> 308.24187680203539 -0.68218817692092071
-logt0108 log10 1.440860577601428e+308 0.0 -> 308.15862195908755 0.0
-logt0109 log10 1.391515176148282e+308 -0.0 -> 308.14348794720007 -0.0
-logt0110 log10 -1.201354401295296e+308 0.0 -> 308.07967114380773 1.3643763538418414
-logt0111 log10 -1.6704337825976804e+308 -0.0 -> 308.22282926451624 -1.3643763538418414
-logt0112 log10 7.2276974655190223e+307 7.94879711369164 -> 307.85899996571993 4.7762357800858463e-308
-logt0113 log10 1.1207859593716076e+308 -6.1956200868221147 -> 308.04952268169455 -2.4007470767963597e-308
-logt0114 log10 -4.6678933874471045e+307 9.947107893220382 -> 307.66912092839902 1.3643763538418414
-logt0115 log10 -1.5108012453950142e+308 -5.3117197179375619 -> 308.1792073341565 -1.3643763538418414
-logt0116 log10 7.4903750871504435 1.5320703776626352e+308 -> 308.18527871564157 0.68218817692092071
-logt0117 log10 5.9760325525654778 -8.0149473997349123e+307 -> 307.90390067652424 -0.68218817692092071
-logt0118 log10 -7.880194206386629 1.7861845814767441e+308 -> 308.25192633617331 0.68218817692092071
-logt0119 log10 -9.886438993852865 -6.19235781080747e+307 -> 307.79185604308338 -0.68218817692092071
-
--- values near 0
-logt0120 log10 2.2996867579227779e-308 6.7861840770939125e-312 -> -307.63833129662572 0.00012815668056362305
-logt0121 log10 6.9169190417774516e-323 -9.0414013188948118e-322 -> -321.04249706727148 -0.64902805353306059
-logt0122 log10 -1.5378064962914011e-316 1.8243628389354635e-310 -> -309.73888878263222 0.68218854299989429
-logt0123 log10 -2.3319898483706837e-321 -2.2358763941866371e-313 -> -312.65055220919641 -0.68218818145055538
-logt0124 log10 0.0 3.872770101081121e-315 -> -314.41197828323476 0.68218817692092071
-logt0125 log10 -0.0 9.6342800939043076e-322 -> -321.01618073175331 0.68218817692092071
-logt0126 log10 0.0 -2.266099393427834e-308 -> -307.64472104545649 -0.68218817692092071
-logt0127 log10 -0.0 -2.1184695673766626e-315 -> -314.67397777042407 -0.68218817692092071
-logt0128 log10 1.1363509854348671e-322 0.0 -> -321.94448750709819 0.0
-logt0129 log10 3.5572726500569751e-322 -0.0 -> -321.44888284668451 -0.0
-logt0130 log10 -2.3696071074040593e-310 0.0 -> -309.62532365619722 1.3643763538418414
-logt0131 log10 -2.813283897266934e-317 -0.0 -> -316.55078643961042 -1.3643763538418414
-
--- values near the unit circle
-logt0200 log10 -0.59999999999999998 0.80000000000000004 -> 9.6432746655328709e-18 0.96165715756846815
-logt0201 log10 0.79999999999999993 0.60000000000000009 -> 2.6765463916147622e-33 0.2794689806475476
-
--- special values
-logt1000 log10 -0.0 0.0 -> -inf 1.3643763538418414         divide-by-zero
-logt1001 log10 0.0 0.0 -> -inf 0.0                         divide-by-zero
-logt1002 log10 0.0 inf -> inf 0.68218817692092071
-logt1003 log10 2.3 inf -> inf 0.68218817692092071
-logt1004 log10 -0.0 inf -> inf 0.68218817692092071
-logt1005 log10 -2.3 inf -> inf 0.68218817692092071
-logt1006 log10 0.0 nan -> nan nan
-logt1007 log10 2.3 nan -> nan nan
-logt1008 log10 -0.0 nan -> nan nan
-logt1009 log10 -2.3 nan -> nan nan
-logt1010 log10 -inf 0.0 -> inf 1.3643763538418414
-logt1011 log10 -inf 2.3 -> inf 1.3643763538418414
-logt1012 log10 inf 0.0 -> inf 0.0
-logt1013 log10 inf 2.3 -> inf 0.0
-logt1014 log10 -inf inf -> inf 1.0232822653813811
-logt1015 log10 inf inf -> inf 0.34109408846046035
-logt1016 log10 inf nan -> inf nan
-logt1017 log10 -inf nan -> inf nan
-logt1018 log10 nan 0.0 -> nan nan
-logt1019 log10 nan 2.3 -> nan nan
-logt1020 log10 nan inf -> inf nan
-logt1021 log10 nan nan -> nan nan
-logt1022 log10 -0.0 -0.0 -> -inf -1.3643763538418414       divide-by-zero
-logt1023 log10 0.0 -0.0 -> -inf -0.0                       divide-by-zero
-logt1024 log10 0.0 -inf -> inf -0.68218817692092071
-logt1025 log10 2.3 -inf -> inf -0.68218817692092071
-logt1026 log10 -0.0 -inf -> inf -0.68218817692092071
-logt1027 log10 -2.3 -inf -> inf -0.68218817692092071
-logt1028 log10 -inf -0.0 -> inf -1.3643763538418414
-logt1029 log10 -inf -2.3 -> inf -1.3643763538418414
-logt1030 log10 inf -0.0 -> inf -0.0
-logt1031 log10 inf -2.3 -> inf -0.0
-logt1032 log10 -inf -inf -> inf -1.0232822653813811
-logt1033 log10 inf -inf -> inf -0.34109408846046035
-logt1034 log10 nan -0.0 -> nan nan
-logt1035 log10 nan -2.3 -> nan nan
-logt1036 log10 nan -inf -> inf nan
-
-
------------------------
--- sqrt: Square root --
------------------------
-
--- zeros
-sqrt0000 sqrt 0.0 0.0 -> 0.0 0.0
-sqrt0001 sqrt 0.0 -0.0 -> 0.0 -0.0
-sqrt0002 sqrt -0.0 0.0 -> 0.0 0.0
-sqrt0003 sqrt -0.0 -0.0 -> 0.0 -0.0
-
--- values along both sides of real axis
-sqrt0010 sqrt -9.8813129168249309e-324 0.0 -> 0.0 3.1434555694052576e-162
-sqrt0011 sqrt -9.8813129168249309e-324 -0.0 -> 0.0 -3.1434555694052576e-162
-sqrt0012 sqrt -1e-305 0.0 -> 0.0 3.1622776601683791e-153
-sqrt0013 sqrt -1e-305 -0.0 -> 0.0 -3.1622776601683791e-153
-sqrt0014 sqrt -1e-150 0.0 -> 0.0 9.9999999999999996e-76
-sqrt0015 sqrt -1e-150 -0.0 -> 0.0 -9.9999999999999996e-76
-sqrt0016 sqrt -9.9999999999999998e-17 0.0 -> 0.0 1e-08
-sqrt0017 sqrt -9.9999999999999998e-17 -0.0 -> 0.0 -1e-08
-sqrt0018 sqrt -0.001 0.0 -> 0.0 0.031622776601683791
-sqrt0019 sqrt -0.001 -0.0 -> 0.0 -0.031622776601683791
-sqrt0020 sqrt -0.57899999999999996 0.0 -> 0.0 0.76092049518987193
-sqrt0021 sqrt -0.57899999999999996 -0.0 -> 0.0 -0.76092049518987193
-sqrt0022 sqrt -0.99999999999999989 0.0 -> 0.0 0.99999999999999989
-sqrt0023 sqrt -0.99999999999999989 -0.0 -> 0.0 -0.99999999999999989
-sqrt0024 sqrt -1.0000000000000002 0.0 -> 0.0 1.0
-sqrt0025 sqrt -1.0000000000000002 -0.0 -> 0.0 -1.0
-sqrt0026 sqrt -1.0009999999999999 0.0 -> 0.0 1.000499875062461
-sqrt0027 sqrt -1.0009999999999999 -0.0 -> 0.0 -1.000499875062461
-sqrt0028 sqrt -2.0 0.0 -> 0.0 1.4142135623730951
-sqrt0029 sqrt -2.0 -0.0 -> 0.0 -1.4142135623730951
-sqrt0030 sqrt -23.0 0.0 -> 0.0 4.7958315233127191
-sqrt0031 sqrt -23.0 -0.0 -> 0.0 -4.7958315233127191
-sqrt0032 sqrt -10000000000000000.0 0.0 -> 0.0 100000000.0
-sqrt0033 sqrt -10000000000000000.0 -0.0 -> 0.0 -100000000.0
-sqrt0034 sqrt -9.9999999999999998e+149 0.0 -> 0.0 9.9999999999999993e+74
-sqrt0035 sqrt -9.9999999999999998e+149 -0.0 -> 0.0 -9.9999999999999993e+74
-sqrt0036 sqrt -1.0000000000000001e+299 0.0 -> 0.0 3.1622776601683796e+149
-sqrt0037 sqrt -1.0000000000000001e+299 -0.0 -> 0.0 -3.1622776601683796e+149
-sqrt0038 sqrt 9.8813129168249309e-324 0.0 -> 3.1434555694052576e-162 0.0
-sqrt0039 sqrt 9.8813129168249309e-324 -0.0 -> 3.1434555694052576e-162 -0.0
-sqrt0040 sqrt 1e-305 0.0 -> 3.1622776601683791e-153 0.0
-sqrt0041 sqrt 1e-305 -0.0 -> 3.1622776601683791e-153 -0.0
-sqrt0042 sqrt 1e-150 0.0 -> 9.9999999999999996e-76 0.0
-sqrt0043 sqrt 1e-150 -0.0 -> 9.9999999999999996e-76 -0.0
-sqrt0044 sqrt 9.9999999999999998e-17 0.0 -> 1e-08 0.0
-sqrt0045 sqrt 9.9999999999999998e-17 -0.0 -> 1e-08 -0.0
-sqrt0046 sqrt 0.001 0.0 -> 0.031622776601683791 0.0
-sqrt0047 sqrt 0.001 -0.0 -> 0.031622776601683791 -0.0
-sqrt0048 sqrt 0.57899999999999996 0.0 -> 0.76092049518987193 0.0
-sqrt0049 sqrt 0.57899999999999996 -0.0 -> 0.76092049518987193 -0.0
-sqrt0050 sqrt 0.99999999999999989 0.0 -> 0.99999999999999989 0.0
-sqrt0051 sqrt 0.99999999999999989 -0.0 -> 0.99999999999999989 -0.0
-sqrt0052 sqrt 1.0000000000000002 0.0 -> 1.0 0.0
-sqrt0053 sqrt 1.0000000000000002 -0.0 -> 1.0 -0.0
-sqrt0054 sqrt 1.0009999999999999 0.0 -> 1.000499875062461 0.0
-sqrt0055 sqrt 1.0009999999999999 -0.0 -> 1.000499875062461 -0.0
-sqrt0056 sqrt 2.0 0.0 -> 1.4142135623730951 0.0
-sqrt0057 sqrt 2.0 -0.0 -> 1.4142135623730951 -0.0
-sqrt0058 sqrt 23.0 0.0 -> 4.7958315233127191 0.0
-sqrt0059 sqrt 23.0 -0.0 -> 4.7958315233127191 -0.0
-sqrt0060 sqrt 10000000000000000.0 0.0 -> 100000000.0 0.0
-sqrt0061 sqrt 10000000000000000.0 -0.0 -> 100000000.0 -0.0
-sqrt0062 sqrt 9.9999999999999998e+149 0.0 -> 9.9999999999999993e+74 0.0
-sqrt0063 sqrt 9.9999999999999998e+149 -0.0 -> 9.9999999999999993e+74 -0.0
-sqrt0064 sqrt 1.0000000000000001e+299 0.0 -> 3.1622776601683796e+149 0.0
-sqrt0065 sqrt 1.0000000000000001e+299 -0.0 -> 3.1622776601683796e+149 -0.0
-
--- random inputs
-sqrt0100 sqrt -0.34252542541549913 -223039880.15076211 -> 10560.300180587592 -10560.300196805192
-sqrt0101 sqrt -0.88790791393018909 -5.3307751730827402 -> 1.5027154613689004 -1.7737140896343291
-sqrt0102 sqrt -113916.89291310767 -0.018143374626153858 -> 2.6877817875351178e-05 -337.51576691038952
-sqrt0103 sqrt -0.63187172386197121 -0.26293913366617694 -> 0.16205707495266153 -0.81125471918761971
-sqrt0104 sqrt -0.058185169308906215 -2.3548312990430991 -> 1.0717660342420072 -1.0985752598086966
-sqrt0105 sqrt -1.0580584765935896 0.14400319259151736 -> 0.069837489270111242 1.030987755262468
-sqrt0106 sqrt -1.1667595947504932 0.11159711473953678 -> 0.051598531319315251 1.0813981705111229
-sqrt0107 sqrt -0.5123728411449906 0.026175433648339085 -> 0.018278026262418718 0.71603556293597614
-sqrt0108 sqrt -3.7453400060067228 1.0946500314809635 -> 0.27990088541692498 1.9554243814742367
-sqrt0109 sqrt -0.0027736121575097673 1.0367943000839817 -> 0.71903560338719175 0.72096172651250545
-sqrt0110 sqrt 1501.2559699453188 -1.1997325207283589 -> 38.746047664730959 -0.015481998720355024
-sqrt0111 sqrt 1.4830075326850578 -0.64100878436755349 -> 1.244712815741096 -0.25749264258434584
-sqrt0112 sqrt 0.095395618499734602 -0.48226565701639595 -> 0.54175904053472879 -0.44509239434231551
-sqrt0113 sqrt 0.50109185681863277 -0.54054037379892561 -> 0.7868179858332387 -0.34349772344520979
-sqrt0114 sqrt 0.98779807595367897 -0.00019848758437225191 -> 0.99388031770665153 -9.9854872279921968e-05
-sqrt0115 sqrt 11.845472380792259 0.0010051104581506761 -> 3.4417252072345397 0.00014601840612346451
-sqrt0116 sqrt 2.3558249686735975 0.25605157371744403 -> 1.5371278477386647 0.083288964575761404
-sqrt0117 sqrt 0.77584894123159098 1.0496420627016076 -> 1.0200744386390885 0.51449287568756552
-sqrt0118 sqrt 1.8961715669604893 0.34940793467158854 -> 1.3827991781411615 0.12634080935066902
-sqrt0119 sqrt 0.96025378316565801 0.69573224860140515 -> 1.0358710342209998 0.33581991658093457
-
--- values near 0
-sqrt0120 sqrt 7.3577938365086866e-313 8.1181408465112743e-319 -> 8.5777583531543516e-157 4.732087634251168e-163
-sqrt0121 sqrt 1.2406883874892108e-310 -5.1210133324269776e-312 -> 1.1140990057468052e-155 -2.2982756945349973e-157
-sqrt0122 sqrt -7.1145453001139502e-322 2.9561379244703735e-314 -> 1.2157585807480286e-157 1.2157586100077242e-157
-sqrt0123 sqrt -4.9963244206801218e-314 -8.4718424423690227e-319 -> 1.8950582312540437e-162 -2.2352459419578971e-157
-sqrt0124 sqrt 0.0 7.699553609385195e-318 -> 1.9620848107797476e-159 1.9620848107797476e-159
-sqrt0125 sqrt -0.0 3.3900826606499415e-309 -> 4.1170879639922327e-155 4.1170879639922327e-155
-sqrt0126 sqrt 0.0 -9.8907989772250828e-319 -> 7.032353438652342e-160 -7.032353438652342e-160
-sqrt0127 sqrt -0.0 -1.3722939367590908e-315 -> 2.6194407196566702e-158 -2.6194407196566702e-158
-sqrt0128 sqrt 7.9050503334599447e-323 0.0 -> 8.8910349979403099e-162 0.0
-sqrt0129 sqrt 1.8623241768349486e-309 -0.0 -> 4.3154654173506579e-155 -0.0
-sqrt0130 sqrt -2.665971134499887e-308 0.0 -> 0.0 1.6327801856036491e-154
-sqrt0131 sqrt -1.5477066694467245e-310 -0.0 -> 0.0 -1.2440685951533077e-155
-
--- inputs whose absolute value overflows
-sqrt0140 sqrt 1.6999999999999999e+308 -1.6999999999999999e+308 -> 1.4325088230154573e+154 -5.9336458271212207e+153
-sqrt0141 sqrt -1.797e+308 -9.9999999999999999e+306 -> 3.7284476432057307e+152 -1.3410406899802901e+154
-
--- special values
-sqrt1000 sqrt 0.0 0.0 -> 0.0 0.0
-sqrt1001 sqrt -0.0 0.0 -> 0.0 0.0
-sqrt1002 sqrt 0.0 inf -> inf inf
-sqrt1003 sqrt 2.3 inf -> inf inf
-sqrt1004 sqrt inf inf -> inf inf
-sqrt1005 sqrt -0.0 inf -> inf inf
-sqrt1006 sqrt -2.3 inf -> inf inf
-sqrt1007 sqrt -inf inf -> inf inf
-sqrt1008 sqrt nan inf -> inf inf
-sqrt1009 sqrt 0.0 nan -> nan nan
-sqrt1010 sqrt 2.3 nan -> nan nan
-sqrt1011 sqrt -0.0 nan -> nan nan
-sqrt1012 sqrt -2.3 nan -> nan nan
-sqrt1013 sqrt -inf 0.0 -> 0.0 inf
-sqrt1014 sqrt -inf 2.3 -> 0.0 inf
-sqrt1015 sqrt inf 0.0 -> inf 0.0
-sqrt1016 sqrt inf 2.3 -> inf 0.0
-sqrt1017 sqrt -inf nan -> nan inf       ignore-imag-sign
-sqrt1018 sqrt inf nan -> inf nan
-sqrt1019 sqrt nan 0.0 -> nan nan
-sqrt1020 sqrt nan 2.3 -> nan nan
-sqrt1021 sqrt nan nan -> nan nan
-sqrt1022 sqrt 0.0 -0.0 -> 0.0 -0.0
-sqrt1023 sqrt -0.0 -0.0 -> 0.0 -0.0
-sqrt1024 sqrt 0.0 -inf -> inf -inf
-sqrt1025 sqrt 2.3 -inf -> inf -inf
-sqrt1026 sqrt inf -inf -> inf -inf
-sqrt1027 sqrt -0.0 -inf -> inf -inf
-sqrt1028 sqrt -2.3 -inf -> inf -inf
-sqrt1029 sqrt -inf -inf -> inf -inf
-sqrt1030 sqrt nan -inf -> inf -inf
-sqrt1031 sqrt -inf -0.0 -> 0.0 -inf
-sqrt1032 sqrt -inf -2.3 -> 0.0 -inf
-sqrt1033 sqrt inf -0.0 -> inf -0.0
-sqrt1034 sqrt inf -2.3 -> inf -0.0
-sqrt1035 sqrt nan -0.0 -> nan nan
-sqrt1036 sqrt nan -2.3 -> nan nan
-
-
--- For exp, cosh, sinh, tanh we limit tests to arguments whose
--- imaginary part is less than 10 in absolute value:  most math
--- libraries have poor accuracy for (real) sine and cosine for
--- large arguments, and the accuracy of these complex functions
--- suffer correspondingly.
---
--- Similarly, for cos, sin and tan we limit tests to arguments
--- with relatively small real part.
-
-
--------------------------------
--- exp: Exponential function --
--------------------------------
-
--- zeros
-exp0000 exp 0.0 0.0 -> 1.0 0.0
-exp0001 exp 0.0 -0.0 -> 1.0 -0.0
-exp0002 exp -0.0 0.0 -> 1.0 0.0
-exp0003 exp -0.0 -0.0 -> 1.0 -0.0
-
--- random inputs
-exp0004 exp -17.957359009564684 -1.108613895795274 -> 7.0869292576226611e-09 -1.4225929202377833e-08
-exp0005 exp -1.4456149663368642e-15 -0.75359817331772239 -> 0.72923148323917997 -0.68426708517419033
-exp0006 exp -0.76008654883512661 -0.46657235480105019 -> 0.41764393109928666 -0.21035108396792854
-exp0007 exp -5.7071614697735731 -2.3744161818115816e-11 -> 0.0033220890242068356 -7.8880219364953578e-14
-exp0008 exp -0.4653981327927097 -5.2236706667445587e-21 -> 0.62788507378216663 -3.2798648420026468e-21
-exp0009 exp -3.2444565242295518 1.1535625304243959 -> 0.015799936931457641 0.035644950380024749
-exp0010 exp -3.0651456337977727 0.87765086532391878 -> 0.029805595629855953 0.035882775180855669
-exp0011 exp -0.11080823753233926 0.96486386300873106 -> 0.50979112534376314 0.73575512419561562
-exp0012 exp -2.5629722598928648 0.019636235754708079 -> 0.077060452853917397 0.0015133717341137684
-exp0013 exp -3.3201709957983357e-10 1.2684017344487268 -> 0.29780699855434889 0.95462610007689186
-exp0014 exp 0.88767276057993272 -0.18953422986895557 -> 2.3859624049858095 -0.45771559132044426
-exp0015 exp 1.5738333486794742 -2.2576803075544328e-11 -> 4.8251091132458654 -1.0893553826776623e-10
-exp0016 exp 1.6408702341813795 -1.438879484380837 -> 0.6786733590689048 -5.1148284173168825
-exp0017 exp 1.820279424202033 -0.020812040370785722 -> 6.1722462896420902 -0.1284755888435051
-exp0018 exp 1.7273965735945873 -0.61140621328954947 -> 4.6067931898799976 -3.2294267694441308
-exp0019 exp 2.5606034306862995 0.098153136008435504 -> 12.881325889966629 1.2684184812864494
-exp0020 exp 10.280368619483029 3.4564622559748535 -> -27721.283321551502 -9028.9663215568835
-exp0021 exp 1.104007405129741e-155 0.21258803067317278 -> 0.97748813933531764 0.21099037290544478
-exp0022 exp 0.027364777809295172 0.00059226603500623363 -> 1.0277424518451876 0.0006086970181346579
-exp0023 exp 0.94356313429255245 3.418530463518592 -> -2.4712285695346194 -0.70242654900218349
-
--- cases where exp(z) representable, exp(z.real) not
-exp0030 exp 710.0 0.78500000000000003 -> 1.5803016909637158e+308 1.5790437551806911e+308
-exp0031 exp 710.0 -0.78500000000000003 -> 1.5803016909637158e+308 -1.5790437551806911e+308
-
--- values for which exp(x) is subnormal, or underflows to 0
-exp0040 exp -735.0 0.78500000000000003 -> 4.3976783136329355e-320 4.3942198541120468e-320
-exp0041 exp -735.0 -2.3559999999999999 -> -4.3952079854037293e-320 -4.396690182341253e-320
-exp0042 exp -745.0 0.0 -> 4.9406564584124654e-324 0.0
-exp0043 exp -745.0 0.7 -> 0.0 0.0
-exp0044 exp -745.0 2.1 -> -0.0 0.0
-exp0045 exp -745.0 3.7 -> -0.0 -0.0
-exp0046 exp -745.0 5.3 -> 0.0 -0.0
-
--- values for which exp(z) overflows
-exp0050 exp 710.0 0.0 -> inf 0.0                        overflow
-exp0051 exp 711.0 0.7 -> inf inf                        overflow
-exp0052 exp 710.0 1.5 -> 1.5802653829857376e+307 inf    overflow
-exp0053 exp 710.0 1.6 -> -6.5231579995501372e+306 inf   overflow
-exp0054 exp 710.0 2.8 -> -inf 7.4836177417448528e+307   overflow
-
--- special values
-exp1000 exp 0.0 0.0 -> 1.0 0.0
-exp1001 exp -0.0 0.0 -> 1.0 0.0
-exp1002 exp 0.0 inf -> nan nan          invalid
-exp1003 exp 2.3 inf -> nan nan          invalid
-exp1004 exp -0.0 inf -> nan nan         invalid
-exp1005 exp -2.3 inf -> nan nan         invalid
-exp1006 exp 0.0 nan -> nan nan
-exp1007 exp 2.3 nan -> nan nan
-exp1008 exp -0.0 nan -> nan nan
-exp1009 exp -2.3 nan -> nan nan
-exp1010 exp -inf 0.0 -> 0.0 0.0
-exp1011 exp -inf 1.4 -> 0.0 0.0
-exp1012 exp -inf 2.8 -> -0.0 0.0
-exp1013 exp -inf 4.2 -> -0.0 -0.0
-exp1014 exp -inf 5.6 -> 0.0 -0.0
-exp1015 exp -inf 7.0 -> 0.0 0.0
-exp1016 exp inf 0.0 -> inf 0.0
-exp1017 exp inf 1.4 -> inf inf
-exp1018 exp inf 2.8 -> -inf inf
-exp1019 exp inf 4.2 -> -inf -inf
-exp1020 exp inf 5.6 -> inf -inf
-exp1021 exp inf 7.0 -> inf inf
-exp1022 exp -inf inf -> 0.0 0.0         ignore-real-sign ignore-imag-sign
-exp1023 exp inf inf -> inf nan          invalid ignore-real-sign
-exp1024 exp -inf nan -> 0.0 0.0         ignore-real-sign ignore-imag-sign
-exp1025 exp inf nan -> inf nan          ignore-real-sign
-exp1026 exp nan 0.0 -> nan 0.0
-exp1027 exp nan 2.3 -> nan nan
-exp1028 exp nan inf -> nan nan
-exp1029 exp nan nan -> nan nan
-exp1030 exp 0.0 -0.0 -> 1.0 -0.0
-exp1031 exp -0.0 -0.0 -> 1.0 -0.0
-exp1032 exp 0.0 -inf -> nan nan         invalid
-exp1033 exp 2.3 -inf -> nan nan         invalid
-exp1034 exp -0.0 -inf -> nan nan        invalid
-exp1035 exp -2.3 -inf -> nan nan        invalid
-exp1036 exp -inf -0.0 -> 0.0 -0.0
-exp1037 exp -inf -1.4 -> 0.0 -0.0
-exp1038 exp -inf -2.8 -> -0.0 -0.0
-exp1039 exp -inf -4.2 -> -0.0 0.0
-exp1040 exp -inf -5.6 -> 0.0 0.0
-exp1041 exp -inf -7.0 -> 0.0 -0.0
-exp1042 exp inf -0.0 -> inf -0.0
-exp1043 exp inf -1.4 -> inf -inf
-exp1044 exp inf -2.8 -> -inf -inf
-exp1045 exp inf -4.2 -> -inf inf
-exp1046 exp inf -5.6 -> inf inf
-exp1047 exp inf -7.0 -> inf -inf
-exp1048 exp -inf -inf -> 0.0 0.0        ignore-real-sign ignore-imag-sign
-exp1049 exp inf -inf -> inf nan         invalid ignore-real-sign
-exp1050 exp nan -0.0 -> nan -0.0
-exp1051 exp nan -2.3 -> nan nan
-exp1052 exp nan -inf -> nan nan
-
-
------------------------------
--- cosh: Hyperbolic Cosine --
------------------------------
-
--- zeros
-cosh0000 cosh 0.0 0.0 -> 1.0 0.0
-cosh0001 cosh 0.0 -0.0 -> 1.0 -0.0
-cosh0002 cosh -0.0 0.0 -> 1.0 -0.0
-cosh0003 cosh -0.0 -0.0 -> 1.0 0.0
-
--- random inputs
-cosh0004 cosh -0.85395264297414253 -8.8553756148671958 -> -1.1684340348021185 0.51842195359787435
-cosh0005 cosh -19.584904237211223 -0.066582627994906177 -> 159816812.23336992 10656776.050406246
-cosh0006 cosh -0.11072618401130772 -1.484820215073247 -> 0.086397164744949503 0.11054275637717284
-cosh0007 cosh -3.4764840250681752 -0.48440348288275276 -> 14.325931955190844 7.5242053548737955
-cosh0008 cosh -0.52047063604524602 -0.3603805382775585 -> 1.0653940354683802 0.19193293606252473
-cosh0009 cosh -1.39518962975995 0.0074738604700702906 -> 2.1417031027235969 -0.01415518712296308
-cosh0010 cosh -0.37107064757653541 0.14728085307856609 -> 1.0580601496776991 -0.055712531964568587
-cosh0011 cosh -5.8470200958739653 4.0021722388336292 -> -112.86220667618285 131.24734033545013
-cosh0012 cosh -0.1700261444851883 0.97167540135354513 -> 0.57208748253577946 -0.1410904820240203
-cosh0013 cosh -0.44042397902648783 1.0904791964139742 -> 0.50760322393058133 -0.40333966652010816
-cosh0014 cosh 0.052267552491867299 -3.8889011430644174 -> -0.73452303414639297 0.035540704833537134
-cosh0015 cosh 0.98000764177127453 -1.2548829247784097 -> 0.47220747341416142 -1.0879421432180316
-cosh0016 cosh 0.083594701222644008 -0.88847899930181284 -> 0.63279782419312613 -0.064954566816002285
-cosh0017 cosh 1.38173531783776 -0.43185040816732229 -> 1.9221663374671647 -0.78073830858849347
-cosh0018 cosh 0.57315681120148465 -0.22255760951027942 -> 1.1399733125173004 -0.1335512343605956
-cosh0019 cosh 1.8882512333062347 4.5024932182383797 -> -0.7041602065362691 -3.1573822131964615
-cosh0020 cosh 0.5618219206858317 0.92620452129575348 -> 0.69822380405378381 0.47309067471054522
-cosh0021 cosh 0.54361442847062591 0.64176483583018462 -> 0.92234462074193491 0.34167906495845501
-cosh0022 cosh 0.0014777403107920331 1.3682028122677661 -> 0.2012106963899549 0.001447518137863219
-cosh0023 cosh 2.218885944363501 2.0015727395883687 -> -1.94294321081968 4.1290269176083196
-
--- large real part
-cosh0030 cosh 710.5 2.3519999999999999 -> -1.2967465239355998e+308 1.3076707908857333e+308
-cosh0031 cosh -710.5 0.69999999999999996 -> 1.4085466381392499e+308 -1.1864024666450239e+308
-
--- special values
-cosh1000 cosh 0.0 0.0 -> 1.0 0.0
-cosh1001 cosh 0.0 inf -> nan 0.0        invalid ignore-imag-sign
-cosh1002 cosh 0.0 nan -> nan 0.0        ignore-imag-sign
-cosh1003 cosh 2.3 inf -> nan nan        invalid
-cosh1004 cosh 2.3 nan -> nan nan
-cosh1005 cosh inf 0.0 -> inf 0.0
-cosh1006 cosh inf 1.4 -> inf inf
-cosh1007 cosh inf 2.8 -> -inf inf
-cosh1008 cosh inf 4.2 -> -inf -inf
-cosh1009 cosh inf 5.6 -> inf -inf
-cosh1010 cosh inf 7.0 -> inf inf
-cosh1011 cosh inf inf -> inf nan        invalid ignore-real-sign
-cosh1012 cosh inf nan -> inf nan
-cosh1013 cosh nan 0.0 -> nan 0.0        ignore-imag-sign
-cosh1014 cosh nan 2.3 -> nan nan
-cosh1015 cosh nan inf -> nan nan
-cosh1016 cosh nan nan -> nan nan
-cosh1017 cosh 0.0 -0.0 -> 1.0 -0.0
-cosh1018 cosh 0.0 -inf -> nan 0.0       invalid ignore-imag-sign
-cosh1019 cosh 2.3 -inf -> nan nan       invalid
-cosh1020 cosh inf -0.0 -> inf -0.0
-cosh1021 cosh inf -1.4 -> inf -inf
-cosh1022 cosh inf -2.8 -> -inf -inf
-cosh1023 cosh inf -4.2 -> -inf inf
-cosh1024 cosh inf -5.6 -> inf inf
-cosh1025 cosh inf -7.0 -> inf -inf
-cosh1026 cosh inf -inf -> inf nan       invalid ignore-real-sign
-cosh1027 cosh nan -0.0 -> nan 0.0       ignore-imag-sign
-cosh1028 cosh nan -2.3 -> nan nan
-cosh1029 cosh nan -inf -> nan nan
-cosh1030 cosh -0.0 -0.0 -> 1.0 0.0
-cosh1031 cosh -0.0 -inf -> nan 0.0      invalid ignore-imag-sign
-cosh1032 cosh -0.0 nan -> nan 0.0       ignore-imag-sign
-cosh1033 cosh -2.3 -inf -> nan nan      invalid
-cosh1034 cosh -2.3 nan -> nan nan
-cosh1035 cosh -inf -0.0 -> inf 0.0
-cosh1036 cosh -inf -1.4 -> inf inf
-cosh1037 cosh -inf -2.8 -> -inf inf
-cosh1038 cosh -inf -4.2 -> -inf -inf
-cosh1039 cosh -inf -5.6 -> inf -inf
-cosh1040 cosh -inf -7.0 -> inf inf
-cosh1041 cosh -inf -inf -> inf nan      invalid ignore-real-sign
-cosh1042 cosh -inf nan -> inf nan
-cosh1043 cosh -0.0 0.0 -> 1.0 -0.0
-cosh1044 cosh -0.0 inf -> nan 0.0       invalid ignore-imag-sign
-cosh1045 cosh -2.3 inf -> nan nan       invalid
-cosh1046 cosh -inf 0.0 -> inf -0.0
-cosh1047 cosh -inf 1.4 -> inf -inf
-cosh1048 cosh -inf 2.8 -> -inf -inf
-cosh1049 cosh -inf 4.2 -> -inf inf
-cosh1050 cosh -inf 5.6 -> inf inf
-cosh1051 cosh -inf 7.0 -> inf -inf
-cosh1052 cosh -inf inf -> inf nan       invalid ignore-real-sign
-
-
----------------------------
--- sinh: Hyperbolic Sine --
----------------------------
-
--- zeros
-sinh0000 sinh 0.0 0.0 -> 0.0 0.0
-sinh0001 sinh 0.0 -0.0 -> 0.0 -0.0
-sinh0002 sinh -0.0 0.0 -> -0.0 0.0
-sinh0003 sinh -0.0 -0.0 -> -0.0 -0.0
-
--- random inputs
-sinh0004 sinh -17.282588091462742 -0.38187948694103546 -> -14867386.857248396 -5970648.6553516639
-sinh0005 sinh -343.91971203143208 -5.0172868877771525e-22 -> -1.1518691776521735e+149 -5.7792581214689021e+127
-sinh0006 sinh -14.178122253300922 -1.9387157579351293 -> 258440.37909034826 -670452.58500946441
-sinh0007 sinh -1.0343810581686239 -1.0970235266369905 -> -0.56070858278092739 -1.4098883258046697
-sinh0008 sinh -0.066126561416368204 -0.070461584169961872 -> -0.066010558700938124 -0.070557276738637542
-sinh0009 sinh -0.37630149150308484 3.3621734692162173 -> 0.37591118119332617 -0.23447115926369383
-sinh0010 sinh -0.049941960978670055 0.40323767020414625 -> -0.045955482136329009 0.3928878494430646
-sinh0011 sinh -16.647852603903715 0.0026852219129082098 -> -8492566.5739382561 22804.480671133562
-sinh0012 sinh -1.476625314303694 0.89473773116683386 -> -1.2982943334382224 1.7966593367791204
-sinh0013 sinh -422.36429577556913 0.10366634502307912 -> -1.3400321008920044e+183 1.3941600948045599e+182
-sinh0014 sinh 0.09108340745641981 -0.40408227416070353 -> 0.083863724802237902 -0.39480716553935602
-sinh0015 sinh 2.036064132067386 -2.6831729961386239 -> -3.37621124363175 -1.723868330002817
-sinh0016 sinh 2.5616717223063317 -0.0078978498622717767 -> 6.4399415853815869 -0.051472264400722133
-sinh0017 sinh 0.336804011985188 -6.5654622971649337 -> 0.32962499307574578 -0.29449170159995197
-sinh0018 sinh 0.23774603755649693 -0.92467195799232049 -> 0.14449839490603389 -0.82109449053556793
-sinh0019 sinh 0.0011388273541465494 1.9676196882949855 -> -0.00044014605389634999 0.92229398407098806
-sinh0020 sinh 3.2443870105663759 0.8054287559616895 -> 8.8702890778527426 9.2610748597042196
-sinh0021 sinh 0.040628908857054738 0.098206391190944958 -> 0.04044426841671233 0.098129544739707392
-sinh0022 sinh 4.7252283918217696e-30 9.1198155642656697 -> -4.5071980561644404e-30 0.30025730701661713
-sinh0023 sinh 0.043713693678420068 0.22512549887532657 -> 0.042624198673416713 0.22344201231217961
-
--- large real part
-sinh0030 sinh 710.5 -2.3999999999999999 -> -1.3579970564885919e+308 -1.24394470907798e+308
-sinh0031 sinh -710.5 0.80000000000000004 -> -1.2830671601735164e+308 1.3210954193997678e+308
-
--- special values
-sinh1000 sinh 0.0 0.0 -> 0.0 0.0
-sinh1001 sinh 0.0 inf -> 0.0 nan        invalid ignore-real-sign
-sinh1002 sinh 0.0 nan -> 0.0 nan        ignore-real-sign
-sinh1003 sinh 2.3 inf -> nan nan        invalid
-sinh1004 sinh 2.3 nan -> nan nan
-sinh1005 sinh inf 0.0 -> inf 0.0
-sinh1006 sinh inf 1.4 -> inf inf
-sinh1007 sinh inf 2.8 -> -inf inf
-sinh1008 sinh inf 4.2 -> -inf -inf
-sinh1009 sinh inf 5.6 -> inf -inf
-sinh1010 sinh inf 7.0 -> inf inf
-sinh1011 sinh inf inf -> inf nan        invalid ignore-real-sign
-sinh1012 sinh inf nan -> inf nan        ignore-real-sign
-sinh1013 sinh nan 0.0 -> nan 0.0
-sinh1014 sinh nan 2.3 -> nan nan
-sinh1015 sinh nan inf -> nan nan
-sinh1016 sinh nan nan -> nan nan
-sinh1017 sinh 0.0 -0.0 -> 0.0 -0.0
-sinh1018 sinh 0.0 -inf -> 0.0 nan       invalid ignore-real-sign
-sinh1019 sinh 2.3 -inf -> nan nan       invalid
-sinh1020 sinh inf -0.0 -> inf -0.0
-sinh1021 sinh inf -1.4 -> inf -inf
-sinh1022 sinh inf -2.8 -> -inf -inf
-sinh1023 sinh inf -4.2 -> -inf inf
-sinh1024 sinh inf -5.6 -> inf inf
-sinh1025 sinh inf -7.0 -> inf -inf
-sinh1026 sinh inf -inf -> inf nan       invalid ignore-real-sign
-sinh1027 sinh nan -0.0 -> nan -0.0
-sinh1028 sinh nan -2.3 -> nan nan
-sinh1029 sinh nan -inf -> nan nan
-sinh1030 sinh -0.0 -0.0 -> -0.0 -0.0
-sinh1031 sinh -0.0 -inf -> 0.0 nan      invalid ignore-real-sign
-sinh1032 sinh -0.0 nan -> 0.0 nan       ignore-real-sign
-sinh1033 sinh -2.3 -inf -> nan nan      invalid
-sinh1034 sinh -2.3 nan -> nan nan
-sinh1035 sinh -inf -0.0 -> -inf -0.0
-sinh1036 sinh -inf -1.4 -> -inf -inf
-sinh1037 sinh -inf -2.8 -> inf -inf
-sinh1038 sinh -inf -4.2 -> inf inf
-sinh1039 sinh -inf -5.6 -> -inf inf
-sinh1040 sinh -inf -7.0 -> -inf -inf
-sinh1041 sinh -inf -inf -> inf nan      invalid ignore-real-sign
-sinh1042 sinh -inf nan -> inf nan       ignore-real-sign
-sinh1043 sinh -0.0 0.0 -> -0.0 0.0
-sinh1044 sinh -0.0 inf -> 0.0 nan       invalid ignore-real-sign
-sinh1045 sinh -2.3 inf -> nan nan       invalid
-sinh1046 sinh -inf 0.0 -> -inf 0.0
-sinh1047 sinh -inf 1.4 -> -inf inf
-sinh1048 sinh -inf 2.8 -> inf inf
-sinh1049 sinh -inf 4.2 -> inf -inf
-sinh1050 sinh -inf 5.6 -> -inf -inf
-sinh1051 sinh -inf 7.0 -> -inf inf
-sinh1052 sinh -inf inf -> inf nan       invalid ignore-real-sign
-
-
-------------------------------
--- tanh: Hyperbolic Tangent --
-------------------------------
-
--- zeros
-tanh0000 tanh 0.0 0.0 -> 0.0 0.0
-tanh0001 tanh 0.0 -0.0 -> 0.0 -0.0
-tanh0002 tanh -0.0 0.0 -> -0.0 0.0
-tanh0003 tanh -0.0 -0.0 -> -0.0 -0.0
-
--- random inputs
-tanh0004 tanh -21.200500450664993 -1.6970729480342996 -> -1.0 1.9241352344849399e-19
-tanh0005 tanh -0.34158771504251928 -8.0848504951747131 -> -2.123711225855613 1.2827526782026006
-tanh0006 tanh -15.454144725193689 -0.23619582288265617 -> -0.99999999999993283 -3.4336684248260036e-14
-tanh0007 tanh -7.6103163119661952 -0.7802748320307008 -> -0.99999999497219438 -4.9064845343755437e-07
-tanh0008 tanh -0.15374717235792129 -0.6351086327306138 -> -0.23246081703561869 -0.71083467433910219
-tanh0009 tanh -0.49101115474392465 0.09723001264886301 -> -0.45844445715492133 0.077191158541805888
-tanh0010 tanh -0.10690612157664491 2.861612800856395 -> -0.11519761626257358 -0.28400488355647507
-tanh0011 tanh -0.91505774192066702 1.5431174597727007 -> -1.381109893068114 0.025160819663709356
-tanh0012 tanh -0.057433367093792223 0.35491159541246459 -> -0.065220499046696953 0.36921788332369498
-tanh0013 tanh -1.3540418621233514 0.18969415642242535 -> -0.88235642861151387 0.043764069984411721
-tanh0014 tanh 0.94864783961003529 -0.11333689578867717 -> 0.74348401861861368 -0.051271042543855221
-tanh0015 tanh 1.9591698133845488 -0.0029654444904578339 -> 0.9610270776968135 -0.00022664240049212933
-tanh0016 tanh 1.0949715796669197 -0.24706642853984456 -> 0.81636574501369386 -0.087767436914149954
-tanh0017 tanh 5770428.2113731047 -3.7160580339833165 -> 1.0 -0.0
-tanh0018 tanh 1.5576782321399629 -1.0357943787966468 -> 1.0403002384895388 -0.081126347894671463
-tanh0019 tanh 0.62378536230552961 2.3471393579560216 -> 0.85582499238960363 -0.53569473646842869
-tanh0020 tanh 17.400628602508025 9.3987059533841979 -> 0.99999999999999845 -8.0175867720530832e-17
-tanh0021 tanh 0.15026177509871896 0.50630349159505472 -> 0.19367536571827768 0.53849847858853661
-tanh0022 tanh 0.57433977530711167 1.0071604546265627 -> 1.0857848159262844 0.69139213955872214
-tanh0023 tanh 0.16291181500449456 0.006972810241567544 -> 0.16149335907551157 0.0067910772903467817
-
--- large real part
-tanh0030 tanh 710 0.13 -> 1.0 0.0
-tanh0031 tanh -711 7.4000000000000004 -> -1.0 0.0
-tanh0032 tanh 1000 -2.3199999999999998 -> 1.0 0.0
-tanh0033 tanh -1.0000000000000001e+300 -9.6699999999999999 -> -1.0 -0.0
-
---special values
-tanh1000 tanh 0.0 0.0 -> 0.0 0.0
-tanh1001 tanh 0.0 inf -> nan nan        invalid
-tanh1002 tanh 2.3 inf -> nan nan        invalid
-tanh1003 tanh 0.0 nan -> nan nan
-tanh1004 tanh 2.3 nan -> nan nan
-tanh1005 tanh inf 0.0 -> 1.0 0.0
-tanh1006 tanh inf 0.7 -> 1.0 0.0
-tanh1007 tanh inf 1.4 -> 1.0 0.0
-tanh1008 tanh inf 2.1 -> 1.0 -0.0
-tanh1009 tanh inf 2.8 -> 1.0 -0.0
-tanh1010 tanh inf 3.5 -> 1.0 0.0
-tanh1011 tanh inf inf -> 1.0 0.0        ignore-imag-sign
-tanh1012 tanh inf nan -> 1.0 0.0        ignore-imag-sign
-tanh1013 tanh nan 0.0 -> nan 0.0
-tanh1014 tanh nan 2.3 -> nan nan
-tanh1015 tanh nan inf -> nan nan
-tanh1016 tanh nan nan -> nan nan
-tanh1017 tanh 0.0 -0.0 -> 0.0 -0.0
-tanh1018 tanh 0.0 -inf -> nan nan       invalid
-tanh1019 tanh 2.3 -inf -> nan nan       invalid
-tanh1020 tanh inf -0.0 -> 1.0 -0.0
-tanh1021 tanh inf -0.7 -> 1.0 -0.0
-tanh1022 tanh inf -1.4 -> 1.0 -0.0
-tanh1023 tanh inf -2.1 -> 1.0 0.0
-tanh1024 tanh inf -2.8 -> 1.0 0.0
-tanh1025 tanh inf -3.5 -> 1.0 -0.0
-tanh1026 tanh inf -inf -> 1.0 0.0       ignore-imag-sign
-tanh1027 tanh nan -0.0 -> nan -0.0
-tanh1028 tanh nan -2.3 -> nan nan
-tanh1029 tanh nan -inf -> nan nan
-tanh1030 tanh -0.0 -0.0 -> -0.0 -0.0
-tanh1031 tanh -0.0 -inf -> nan nan      invalid
-tanh1032 tanh -2.3 -inf -> nan nan      invalid
-tanh1033 tanh -0.0 nan -> nan nan
-tanh1034 tanh -2.3 nan -> nan nan
-tanh1035 tanh -inf -0.0 -> -1.0 -0.0
-tanh1036 tanh -inf -0.7 -> -1.0 -0.0
-tanh1037 tanh -inf -1.4 -> -1.0 -0.0
-tanh1038 tanh -inf -2.1 -> -1.0 0.0
-tanh1039 tanh -inf -2.8 -> -1.0 0.0
-tanh1040 tanh -inf -3.5 -> -1.0 -0.0
-tanh1041 tanh -inf -inf -> -1.0 0.0     ignore-imag-sign
-tanh1042 tanh -inf nan -> -1.0 0.0      ignore-imag-sign
-tanh1043 tanh -0.0 0.0 -> -0.0 0.0
-tanh1044 tanh -0.0 inf -> nan nan       invalid
-tanh1045 tanh -2.3 inf -> nan nan       invalid
-tanh1046 tanh -inf 0.0 -> -1.0 0.0
-tanh1047 tanh -inf 0.7 -> -1.0 0.0
-tanh1048 tanh -inf 1.4 -> -1.0 0.0
-tanh1049 tanh -inf 2.1 -> -1.0 -0.0
-tanh1050 tanh -inf 2.8 -> -1.0 -0.0
-tanh1051 tanh -inf 3.5 -> -1.0 0.0
-tanh1052 tanh -inf inf -> -1.0 0.0      ignore-imag-sign
-
-
------------------
--- cos: Cosine --
------------------
-
--- zeros
-cos0000 cos 0.0 0.0 -> 1.0 -0.0
-cos0001 cos 0.0 -0.0 -> 1.0 0.0
-cos0002 cos -0.0 0.0 -> 1.0 0.0
-cos0003 cos -0.0 -0.0 -> 1.0 -0.0
-
--- random inputs
-cos0004 cos -2.0689194692073034 -0.0016802181751734313 -> -0.47777827208561469 -0.0014760401501695971
-cos0005 cos -0.4209627318177977 -1.8238516774258027 -> 2.9010402201444108 -1.2329207042329617
-cos0006 cos -1.9402181630694557 -2.9751857392891217 -> -3.5465459297970985 -9.1119163586282248
-cos0007 cos -3.3118320290191616 -0.87871302909286142 -> -1.3911528636565498 0.16878141517391701
-cos0008 cos -4.9540404623376872 -0.57949232239026827 -> 0.28062445586552065 0.59467861308508008
-cos0009 cos -0.45374584316245026 1.3950283448373935 -> 1.9247665574290578 0.83004572204761107
-cos0010 cos -0.42578172040176843 1.2715881615413049 -> 1.7517161459489148 0.67863902697363332
-cos0011 cos -0.13862985354300136 0.43587635877670328 -> 1.0859880290361912 0.062157548146672272
-cos0012 cos -0.11073221308966584 9.9384082307326475e-15 -> 0.99387545040722947 1.0982543264065479e-15
-cos0013 cos -1.5027633662054623e-07 0.0069668060249955498 -> 1.0000242682912412 1.0469545565660995e-09
-cos0014 cos 4.9728645490503052 -0.00027479808860952822 -> 0.25754011731975501 -0.00026552849549083186
-cos0015 cos 7.81969303486719 -0.79621523445878783 -> 0.045734882501585063 0.88253139933082991
-cos0016 cos 0.13272421880766716 -0.74668445308718201 -> 1.2806012244432847 0.10825373267437005
-cos0017 cos 4.2396521985973274 -2.2178848380884881 -> -2.1165117057056855 -4.0416492444641401
-cos0018 cos 1.1622206624927296 -0.50400115461197081 -> 0.44884072613370379 0.4823469915034318
-cos0019 cos 1.628772864620884e-08 0.58205705428979282 -> 1.1742319995791435 -1.0024839481956604e-08
-cos0020 cos 2.6385212606111241 2.9886107100937296 -> -8.7209475927161417 -4.7748352107199796
-cos0021 cos 4.8048375263775256 0.0062248852898515658 -> 0.092318702015846243 0.0061983430422306142
-cos0022 cos 7.9914515433858515 0.71659966615501436 -> -0.17375439906936566 -0.77217043527294582
-cos0023 cos 0.45124351152540226 1.6992693993812158 -> 2.543477948972237 -1.1528193694875477
-
--- special values
-cos1000 cos -0.0 0.0 -> 1.0 0.0
-cos1001 cos -inf 0.0 -> nan 0.0 invalid ignore-imag-sign
-cos1002 cos nan 0.0 -> nan 0.0 ignore-imag-sign
-cos1003 cos -inf 2.2999999999999998 -> nan nan invalid
-cos1004 cos nan 2.2999999999999998 -> nan nan
-cos1005 cos -0.0 inf -> inf 0.0
-cos1006 cos -1.3999999999999999 inf -> inf inf
-cos1007 cos -2.7999999999999998 inf -> -inf inf
-cos1008 cos -4.2000000000000002 inf -> -inf -inf
-cos1009 cos -5.5999999999999996 inf -> inf -inf
-cos1010 cos -7.0 inf -> inf inf
-cos1011 cos -inf inf -> inf nan invalid ignore-real-sign
-cos1012 cos nan inf -> inf nan
-cos1013 cos -0.0 nan -> nan 0.0 ignore-imag-sign
-cos1014 cos -2.2999999999999998 nan -> nan nan
-cos1015 cos -inf nan -> nan nan
-cos1016 cos nan nan -> nan nan
-cos1017 cos 0.0 0.0 -> 1.0 -0.0
-cos1018 cos inf 0.0 -> nan 0.0 invalid ignore-imag-sign
-cos1019 cos inf 2.2999999999999998 -> nan nan invalid
-cos1020 cos 0.0 inf -> inf -0.0
-cos1021 cos 1.3999999999999999 inf -> inf -inf
-cos1022 cos 2.7999999999999998 inf -> -inf -inf
-cos1023 cos 4.2000000000000002 inf -> -inf inf
-cos1024 cos 5.5999999999999996 inf -> inf inf
-cos1025 cos 7.0 inf -> inf -inf
-cos1026 cos inf inf -> inf nan invalid ignore-real-sign
-cos1027 cos 0.0 nan -> nan 0.0 ignore-imag-sign
-cos1028 cos 2.2999999999999998 nan -> nan nan
-cos1029 cos inf nan -> nan nan
-cos1030 cos 0.0 -0.0 -> 1.0 0.0
-cos1031 cos inf -0.0 -> nan 0.0 invalid ignore-imag-sign
-cos1032 cos nan -0.0 -> nan 0.0 ignore-imag-sign
-cos1033 cos inf -2.2999999999999998 -> nan nan invalid
-cos1034 cos nan -2.2999999999999998 -> nan nan
-cos1035 cos 0.0 -inf -> inf 0.0
-cos1036 cos 1.3999999999999999 -inf -> inf inf
-cos1037 cos 2.7999999999999998 -inf -> -inf inf
-cos1038 cos 4.2000000000000002 -inf -> -inf -inf
-cos1039 cos 5.5999999999999996 -inf -> inf -inf
-cos1040 cos 7.0 -inf -> inf inf
-cos1041 cos inf -inf -> inf nan invalid ignore-real-sign
-cos1042 cos nan -inf -> inf nan
-cos1043 cos -0.0 -0.0 -> 1.0 -0.0
-cos1044 cos -inf -0.0 -> nan 0.0 invalid ignore-imag-sign
-cos1045 cos -inf -2.2999999999999998 -> nan nan invalid
-cos1046 cos -0.0 -inf -> inf -0.0
-cos1047 cos -1.3999999999999999 -inf -> inf -inf
-cos1048 cos -2.7999999999999998 -inf -> -inf -inf
-cos1049 cos -4.2000000000000002 -inf -> -inf inf
-cos1050 cos -5.5999999999999996 -inf -> inf inf
-cos1051 cos -7.0 -inf -> inf -inf
-cos1052 cos -inf -inf -> inf nan invalid ignore-real-sign
-
-
----------------
--- sin: Sine --
----------------
-
--- zeros
-sin0000 sin 0.0 0.0 -> 0.0 0.0
-sin0001 sin 0.0 -0.0 -> 0.0 -0.0
-sin0002 sin -0.0 0.0 -> -0.0 0.0
-sin0003 sin -0.0 -0.0 -> -0.0 -0.0
-
--- random inputs
-sin0004 sin -0.18691829163163759 -0.74388741985507034 -> -0.2396636733773444 -0.80023231101856751
-sin0005 sin -0.45127453702459158 -461.81339920716164 -> -7.9722299331077877e+199 -1.6450205811004628e+200
-sin0006 sin -0.47669228345768921 -2.7369936564987514 -> -3.557238022267124 -6.8308030771226615
-sin0007 sin -0.31024285525950857 -1.4869219939188296 -> -0.70972676047175209 -1.9985029635426839
-sin0008 sin -4.4194573407025608 -1.405999210989288 -> 2.0702480800802685 0.55362250792180601
-sin0009 sin -1.7810832046434898e-05 0.0016439555384379083 -> -1.7810856113185261e-05 0.0016439562786668375
-sin0010 sin -0.8200017874897666 0.61724876887771929 -> -0.8749078195948865 0.44835295550987758
-sin0011 sin -1.4536502806107114 0.63998575534150415 -> -1.2035709929437679 0.080012187489163708
-sin0012 sin -2.2653412155506079 0.13172760685583729 -> -0.77502093809190431 -0.084554426868229532
-sin0013 sin -0.02613983069491858 0.18404766597776073 -> -0.026580778863127943 0.18502525396735642
-sin0014 sin 1.5743065001054617 -0.53125574272642029 -> 1.1444596332092725 0.0019537598099352077
-sin0015 sin 7.3833101791283289e-20 -0.16453221324236217 -> 7.4834720674379429e-20 -0.16527555646466915
-sin0016 sin 0.34763834641254038 -2.8377416421089565 -> 2.918883541504663 -8.0002718053250224
-sin0017 sin 0.077105785180421563 -0.090056027316200674 -> 0.077341973814471304 -0.089909869380524587
-sin0018 sin 3.9063227798142329e-17 -0.05954098654295524 -> 3.9132490348956512e-17 -0.059576172859837351
-sin0019 sin 0.57333917932544598 8.7785221430594696e-06 -> 0.54244029338302935 7.3747869125301368e-06
-sin0020 sin 0.024861722816513169 0.33044620756118515 -> 0.026228801369651 0.3363889671570689
-sin0021 sin 1.4342727387492671 0.81361889790284347 -> 1.3370960060947923 0.12336137961387163
-sin0022 sin 1.1518087354403725 4.8597235966150558 -> 58.919141989603041 26.237003403758852
-sin0023 sin 0.00087773078406649192 34.792379211312095 -> 565548145569.38245 644329685822700.62
-
--- special values
-sin1000 sin -0.0 0.0 -> -0.0 0.0
-sin1001 sin -inf 0.0 -> nan 0.0 invalid ignore-imag-sign
-sin1002 sin nan 0.0 -> nan 0.0 ignore-imag-sign
-sin1003 sin -inf 2.2999999999999998 -> nan nan invalid
-sin1004 sin nan 2.2999999999999998 -> nan nan
-sin1005 sin -0.0 inf -> -0.0 inf
-sin1006 sin -1.3999999999999999 inf -> -inf inf
-sin1007 sin -2.7999999999999998 inf -> -inf -inf
-sin1008 sin -4.2000000000000002 inf -> inf -inf
-sin1009 sin -5.5999999999999996 inf -> inf inf
-sin1010 sin -7.0 inf -> -inf inf
-sin1011 sin -inf inf -> nan inf invalid ignore-imag-sign
-sin1012 sin nan inf -> nan inf ignore-imag-sign
-sin1013 sin -0.0 nan -> -0.0 nan
-sin1014 sin -2.2999999999999998 nan -> nan nan
-sin1015 sin -inf nan -> nan nan
-sin1016 sin nan nan -> nan nan
-sin1017 sin 0.0 0.0 -> 0.0 0.0
-sin1018 sin inf 0.0 -> nan 0.0 invalid ignore-imag-sign
-sin1019 sin inf 2.2999999999999998 -> nan nan invalid
-sin1020 sin 0.0 inf -> 0.0 inf
-sin1021 sin 1.3999999999999999 inf -> inf inf
-sin1022 sin 2.7999999999999998 inf -> inf -inf
-sin1023 sin 4.2000000000000002 inf -> -inf -inf
-sin1024 sin 5.5999999999999996 inf -> -inf inf
-sin1025 sin 7.0 inf -> inf inf
-sin1026 sin inf inf -> nan inf invalid ignore-imag-sign
-sin1027 sin 0.0 nan -> 0.0 nan
-sin1028 sin 2.2999999999999998 nan -> nan nan
-sin1029 sin inf nan -> nan nan
-sin1030 sin 0.0 -0.0 -> 0.0 -0.0
-sin1031 sin inf -0.0 -> nan 0.0 invalid ignore-imag-sign
-sin1032 sin nan -0.0 -> nan 0.0 ignore-imag-sign
-sin1033 sin inf -2.2999999999999998 -> nan nan invalid
-sin1034 sin nan -2.2999999999999998 -> nan nan
-sin1035 sin 0.0 -inf -> 0.0 -inf
-sin1036 sin 1.3999999999999999 -inf -> inf -inf
-sin1037 sin 2.7999999999999998 -inf -> inf inf
-sin1038 sin 4.2000000000000002 -inf -> -inf inf
-sin1039 sin 5.5999999999999996 -inf -> -inf -inf
-sin1040 sin 7.0 -inf -> inf -inf
-sin1041 sin inf -inf -> nan inf invalid ignore-imag-sign
-sin1042 sin nan -inf -> nan inf ignore-imag-sign
-sin1043 sin -0.0 -0.0 -> -0.0 -0.0
-sin1044 sin -inf -0.0 -> nan 0.0 invalid ignore-imag-sign
-sin1045 sin -inf -2.2999999999999998 -> nan nan invalid
-sin1046 sin -0.0 -inf -> -0.0 -inf
-sin1047 sin -1.3999999999999999 -inf -> -inf -inf
-sin1048 sin -2.7999999999999998 -inf -> -inf inf
-sin1049 sin -4.2000000000000002 -inf -> inf inf
-sin1050 sin -5.5999999999999996 -inf -> inf -inf
-sin1051 sin -7.0 -inf -> -inf -inf
-sin1052 sin -inf -inf -> nan inf invalid ignore-imag-sign
-
-
-------------------
--- tan: Tangent --
-------------------
-
--- zeros
-tan0000 tan 0.0 0.0 -> 0.0 0.0
-tan0001 tan 0.0 -0.0 -> 0.0 -0.0
-tan0002 tan -0.0 0.0 -> -0.0 0.0
-tan0003 tan -0.0 -0.0 -> -0.0 -0.0
-
--- random inputs
-tan0004 tan -0.56378561833861074 -1.7110276237187664e+73 -> -0.0 -1.0
-tan0005 tan -3.5451633993471915e-12 -2.855471863564059 -> -4.6622441304889575e-14 -0.99340273843093951
-tan0006 tan -2.502442719638696 -0.26742234390504221 -> 0.66735215252994995 -0.39078997935420956
-tan0007 tan -0.87639597720371365 -55.586225523280206 -> -1.0285264565948176e-48 -1.0
-tan0008 tan -0.015783869596427243 -520.05944436039272 -> -0.0 -1.0
-tan0009 tan -0.84643549990725164 2.0749097935396343 -> -0.031412661676959573 1.0033548479526764
-tan0010 tan -0.43613792248559646 8.1082741629458059 -> -1.3879848444644593e-07 0.99999988344224011
-tan0011 tan -1.0820906367833114 0.28571868992480248 -> -1.3622485737936536 0.99089269377971245
-tan0012 tan -1.1477859580220084 1.9021637002708041 -> -0.034348450042071196 1.0293954097901687
-tan0013 tan -0.12465543176953409 3.0606851016344815e-05 -> -0.12530514290387343 3.1087420769945479e-05
-tan0014 tan 3.7582848717525343 -692787020.44038939 -> 0.0 -1.0
-tan0015 tan 2.2321967655142176e-06 -10.090069423008169 -> 1.5369846120622643e-14 -0.99999999655723759
-tan0016 tan 0.88371172390245012 -1.1635053630132823 -> 0.19705017118625889 -1.0196452280843129
-tan0017 tan 2.1347414231849267 -1.9311339960416831 -> -0.038663576915982524 -1.0174399993980778
-tan0018 tan 5.9027945255899974 -2.1574195684607135e-183 -> -0.39986591539281496 -2.5023753167976915e-183
-tan0019 tan 0.44811489490805362 683216075670.07556 -> 0.0 1.0
-tan0020 tan 4.1459766396068325 12.523017205605756 -> 2.4022514758988068e-11 1.0000000000112499
-tan0021 tan 1.7809617968443272 1.5052381702853379 -> -0.044066222118946903 1.0932684517702778
-tan0022 tan 1.1615313900880577 1.7956298728647107 -> 0.041793186826390362 1.0375339546034792
-tan0023 tan 0.067014779477908945 5.8517361577457097 -> 2.2088639754800034e-06 0.9999836182420061
-
--- special values
-tan1000 tan -0.0 0.0 -> -0.0 0.0
-tan1001 tan -inf 0.0 -> nan nan invalid
-tan1002 tan -inf 2.2999999999999998 -> nan nan invalid
-tan1003 tan nan 0.0 -> nan nan
-tan1004 tan nan 2.2999999999999998 -> nan nan
-tan1005 tan -0.0 inf -> -0.0 1.0
-tan1006 tan -0.69999999999999996 inf -> -0.0 1.0
-tan1007 tan -1.3999999999999999 inf -> -0.0 1.0
-tan1008 tan -2.1000000000000001 inf -> 0.0 1.0
-tan1009 tan -2.7999999999999998 inf -> 0.0 1.0
-tan1010 tan -3.5 inf -> -0.0 1.0
-tan1011 tan -inf inf -> -0.0 1.0 ignore-real-sign
-tan1012 tan nan inf -> -0.0 1.0 ignore-real-sign
-tan1013 tan -0.0 nan -> -0.0 nan
-tan1014 tan -2.2999999999999998 nan -> nan nan
-tan1015 tan -inf nan -> nan nan
-tan1016 tan nan nan -> nan nan
-tan1017 tan 0.0 0.0 -> 0.0 0.0
-tan1018 tan inf 0.0 -> nan nan invalid
-tan1019 tan inf 2.2999999999999998 -> nan nan invalid
-tan1020 tan 0.0 inf -> 0.0 1.0
-tan1021 tan 0.69999999999999996 inf -> 0.0 1.0
-tan1022 tan 1.3999999999999999 inf -> 0.0 1.0
-tan1023 tan 2.1000000000000001 inf -> -0.0 1.0
-tan1024 tan 2.7999999999999998 inf -> -0.0 1.0
-tan1025 tan 3.5 inf -> 0.0 1.0
-tan1026 tan inf inf -> -0.0 1.0 ignore-real-sign
-tan1027 tan 0.0 nan -> 0.0 nan
-tan1028 tan 2.2999999999999998 nan -> nan nan
-tan1029 tan inf nan -> nan nan
-tan1030 tan 0.0 -0.0 -> 0.0 -0.0
-tan1031 tan inf -0.0 -> nan nan invalid
-tan1032 tan inf -2.2999999999999998 -> nan nan invalid
-tan1033 tan nan -0.0 -> nan nan
-tan1034 tan nan -2.2999999999999998 -> nan nan
-tan1035 tan 0.0 -inf -> 0.0 -1.0
-tan1036 tan 0.69999999999999996 -inf -> 0.0 -1.0
-tan1037 tan 1.3999999999999999 -inf -> 0.0 -1.0
-tan1038 tan 2.1000000000000001 -inf -> -0.0 -1.0
-tan1039 tan 2.7999999999999998 -inf -> -0.0 -1.0
-tan1040 tan 3.5 -inf -> 0.0 -1.0
-tan1041 tan inf -inf -> -0.0 -1.0 ignore-real-sign
-tan1042 tan nan -inf -> -0.0 -1.0 ignore-real-sign
-tan1043 tan -0.0 -0.0 -> -0.0 -0.0
-tan1044 tan -inf -0.0 -> nan nan invalid
-tan1045 tan -inf -2.2999999999999998 -> nan nan invalid
-tan1046 tan -0.0 -inf -> -0.0 -1.0
-tan1047 tan -0.69999999999999996 -inf -> -0.0 -1.0
-tan1048 tan -1.3999999999999999 -inf -> -0.0 -1.0
-tan1049 tan -2.1000000000000001 -inf -> 0.0 -1.0
-tan1050 tan -2.7999999999999998 -inf -> 0.0 -1.0
-tan1051 tan -3.5 -inf -> -0.0 -1.0
-tan1052 tan -inf -inf -> -0.0 -1.0 ignore-real-sign
-
-
-------------------------------------------------------------------------
--- rect: Conversion from polar coordinates to rectangular coordinates --
-------------------------------------------------------------------------
---
--- For cmath.rect, we can use the same testcase syntax as for the
--- complex -> complex functions above, but here the input arguments
--- should be interpreted as a pair of floating-point numbers rather
--- than the real and imaginary parts of a complex number.
---
--- Here are the 'spirit of C99' rules for rect.  First, the short
--- version:
---
---    rect(x, t) = exp(log(x)+it) for positive-signed x
---    rect(x, t) = -exp(log(-x)+it) for negative-signed x
---    rect(nan, t) = exp(nan + it), except that in rect(nan, +-0) the
---      sign of the imaginary part is unspecified.
---
--- and now the long version:
---
---   rect(x, -t) = conj(rect(x, t)) for all x and t
---   rect(-x, t) = -rect(x, t) for all x and t
---   rect(+0, +0) returns +0 + i0
---   rect(+0, inf) returns +- 0 +- i0, where the signs of the real and
---     imaginary parts are unspecified.
---   rect(x, inf) returns NaN + i NaN and raises the "invalid"
---     floating-point exception, for finite nonzero x.
---   rect(inf, inf) returns +-inf + i NaN and raises the "invalid"
---     floating-point exception (where the sign of the real part of the
---     result is unspecified).
---   rect(inf, +0) returns inf+i0
---   rect(inf, x) returns inf*cis(x), for finite nonzero x
---   rect(inf, NaN) returns +-inf+i NaN, where the sign of the real part
---     of the result is unspecified.
---   rect(NaN, x) returns NaN + i NaN for all nonzero numbers (including
---     infinities) x
---   rect(NaN, 0) returns NaN +- i0, where the sign of the imaginary
---     part is unspecified
---   rect(NaN, NaN) returns NaN + i NaN
---   rect(x, NaN) returns NaN + i NaN for finite nonzero x
---   rect(+0, NaN) return +-0 +- i0, where the signs of the real and
---     imaginary parts are unspecified.
-
--- special values
-rect1000 rect 0.0 0.0 -> 0.0 0.0
-rect1001 rect 0.0 inf -> 0.0 0.0        ignore-real-sign ignore-imag-sign
-rect1002 rect 2.3 inf -> nan nan        invalid
-rect1003 rect inf inf -> inf nan        invalid ignore-real-sign
-rect1004 rect inf 0.0 -> inf 0.0
-rect1005 rect inf 1.4 -> inf inf
-rect1006 rect inf 2.8 -> -inf inf
-rect1007 rect inf 4.2 -> -inf -inf
-rect1008 rect inf 5.6 -> inf -inf
-rect1009 rect inf 7.0 -> inf inf
-rect1010 rect nan 0.0 -> nan 0.0        ignore-imag-sign
-rect1011 rect nan 2.3 -> nan nan
-rect1012 rect nan inf -> nan nan
-rect1013 rect nan nan -> nan nan
-rect1014 rect inf nan -> inf nan        ignore-real-sign
-rect1015 rect 2.3 nan -> nan nan
-rect1016 rect 0.0 nan -> 0.0 0.0        ignore-real-sign ignore-imag-sign
-rect1017 rect 0.0 -0.0 -> 0.0 -0.0
-rect1018 rect 0.0 -inf -> 0.0 0.0       ignore-real-sign ignore-imag-sign
-rect1019 rect 2.3 -inf -> nan nan       invalid
-rect1020 rect inf -inf -> inf nan       invalid ignore-real-sign
-rect1021 rect inf -0.0 -> inf -0.0
-rect1022 rect inf -1.4 -> inf -inf
-rect1023 rect inf -2.8 -> -inf -inf
-rect1024 rect inf -4.2 -> -inf inf
-rect1025 rect inf -5.6 -> inf inf
-rect1026 rect inf -7.0 -> inf -inf
-rect1027 rect nan -0.0 -> nan 0.0       ignore-imag-sign
-rect1028 rect nan -2.3 -> nan nan
-rect1029 rect nan -inf -> nan nan
-rect1030 rect -0.0 0.0 -> -0.0 -0.0
-rect1031 rect -0.0 inf -> 0.0 0.0       ignore-real-sign ignore-imag-sign
-rect1032 rect -2.3 inf -> nan nan       invalid
-rect1033 rect -inf inf -> -inf nan      invalid ignore-real-sign
-rect1034 rect -inf 0.0 -> -inf -0.0
-rect1035 rect -inf 1.4 -> -inf -inf
-rect1036 rect -inf 2.8 -> inf -inf
-rect1037 rect -inf 4.2 -> inf inf
-rect1038 rect -inf 5.6 -> -inf inf
-rect1039 rect -inf 7.0 -> -inf -inf
-rect1040 rect -inf nan -> inf nan       ignore-real-sign
-rect1041 rect -2.3 nan -> nan nan
-rect1042 rect -0.0 nan -> 0.0 0.0       ignore-real-sign ignore-imag-sign
-rect1043 rect -0.0 -0.0 -> -0.0 0.0
-rect1044 rect -0.0 -inf -> 0.0 0.0      ignore-real-sign ignore-imag-sign
-rect1045 rect -2.3 -inf -> nan nan      invalid
-rect1046 rect -inf -inf -> -inf nan     invalid ignore-real-sign
-rect1047 rect -inf -0.0 -> -inf 0.0
-rect1048 rect -inf -1.4 -> -inf inf
-rect1049 rect -inf -2.8 -> inf inf
-rect1050 rect -inf -4.2 -> inf -inf
-rect1051 rect -inf -5.6 -> -inf -inf
-rect1052 rect -inf -7.0 -> -inf inf
-
--------------------------------------------------------------------------
--- polar: Conversion from rectangular coordinates to polar coordinates --
--------------------------------------------------------------------------
---
--- For cmath.polar, we can use the same testcase syntax as for the
--- complex -> complex functions above, but here the output arguments
--- should be interpreted as a pair of floating-point numbers rather
--- than the real and imaginary parts of a complex number.
---
--- Annex G of the C99 standard describes fully both the real and
--- imaginary parts of polar (as cabs and carg, respectively, which in turn
--- are defined in terms of the functions hypot and atan2).
-
--- overflow
-polar0100 polar 1.4e308 1.4e308 -> inf 0.78539816339744828      overflow
-
--- special values
-polar1000 polar 0.0 0.0 -> 0.0 0.0
-polar1001 polar 0.0 -0.0 -> 0.0 -0.0
-polar1002 polar -0.0 0.0 -> 0.0 3.1415926535897931
-polar1003 polar -0.0 -0.0 -> 0.0 -3.1415926535897931
-polar1004 polar inf 0.0 -> inf 0.0
-polar1005 polar inf 2.3 -> inf 0.0
-polar1006 polar inf inf -> inf 0.78539816339744828
-polar1007 polar 2.3 inf -> inf 1.5707963267948966
-polar1008 polar 0.0 inf -> inf 1.5707963267948966
-polar1009 polar -0.0 inf -> inf 1.5707963267948966
-polar1010 polar -2.3 inf -> inf 1.5707963267948966
-polar1011 polar -inf inf -> inf 2.3561944901923448
-polar1012 polar -inf 2.3 -> inf 3.1415926535897931
-polar1013 polar -inf 0.0 -> inf 3.1415926535897931
-polar1014 polar -inf -0.0 -> inf -3.1415926535897931
-polar1015 polar -inf -2.3 -> inf -3.1415926535897931
-polar1016 polar -inf -inf -> inf -2.3561944901923448
-polar1017 polar -2.3 -inf -> inf -1.5707963267948966
-polar1018 polar -0.0 -inf -> inf -1.5707963267948966
-polar1019 polar 0.0 -inf -> inf -1.5707963267948966
-polar1020 polar 2.3 -inf -> inf -1.5707963267948966
-polar1021 polar inf -inf -> inf -0.78539816339744828
-polar1022 polar inf -2.3 -> inf -0.0
-polar1023 polar inf -0.0 -> inf -0.0
-polar1024 polar nan -inf -> inf nan
-polar1025 polar nan -2.3 -> nan nan
-polar1026 polar nan -0.0 -> nan nan
-polar1027 polar nan 0.0 -> nan nan
-polar1028 polar nan 2.3 -> nan nan
-polar1029 polar nan inf -> inf nan
-polar1030 polar nan nan -> nan nan
-polar1031 polar inf nan -> inf nan
-polar1032 polar 2.3 nan -> nan nan
-polar1033 polar 0.0 nan -> nan nan
-polar1034 polar -0.0 nan -> nan nan
-polar1035 polar -2.3 nan -> nan nan
-polar1036 polar -inf nan -> inf nan
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/README b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/README
deleted file mode 100644
index afd4855..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/README
+++ /dev/null
@@ -1,16 +0,0 @@
-This directory only contains tests for outstanding bugs that cause the
-interpreter to segfault.  Ideally this directory should always be empty, but
-sometimes it may not be easy to fix the underlying cause and the bug is deemed
-too obscure to invest the effort.
-
-Each test should fail when run from the command line:
-
-	./python Lib/test/crashers/weakref_in_del.py
-
-Put as much info into a docstring or comments to help determine the cause of the
-failure, as well as a bugs.python.org issue number if it exists.  Particularly
-note if the cause is system or environment dependent and what the variables are.
-
-Once the crash is fixed, the test case should be moved into an appropriate test
-(even if it was originally from the test suite).  This ensures the regression
-doesn't happen again.  And if it does, it should be easier to track down.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/bogus_code_obj.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/bogus_code_obj.py
deleted file mode 100644
index 65968f1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/bogus_code_obj.py
+++ /dev/null
@@ -1,19 +0,0 @@
-"""
-Broken bytecode objects can easily crash the interpreter.
-
-This is not going to be fixed.  It is generally agreed that there is no
-point in writing a bytecode verifier and putting it in CPython just for
-this.  Moreover, a verifier is bound to accept only a subset of all safe
-bytecodes, so it could lead to unnecessary breakage.
-
-For security purposes, "restricted" interpreters are not going to let
-the user build or load random bytecodes anyway.  Otherwise, this is a
-"won't fix" case.
-
-"""
-
-import types
-
-co = types.CodeType(0, 0, 0, 0, '\x04\x71\x00\x00', (),
-                    (), (), '', '', 1, '')
-exec co
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/borrowed_ref_1.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/borrowed_ref_1.py
deleted file mode 100644
index 26d55b7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/borrowed_ref_1.py
+++ /dev/null
@@ -1,29 +0,0 @@
-"""
-_PyType_Lookup() returns a borrowed reference.
-This attacks the call in dictobject.c.
-"""
-
-class A(object):
-    pass
-
-class B(object):
-    def __del__(self):
-        print 'hi'
-        del D.__missing__
-
-class D(dict):
-    class __missing__:
-        def __init__(self, *args):
-            pass
-
-
-d = D()
-a = A()
-a.cycle = a
-a.other = B()
-del a
-
-prev = None
-while 1:
-    d[5]
-    prev = (prev,)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/borrowed_ref_2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/borrowed_ref_2.py
deleted file mode 100644
index fea33f8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/borrowed_ref_2.py
+++ /dev/null
@@ -1,38 +0,0 @@
-"""
-_PyType_Lookup() returns a borrowed reference.
-This attacks PyObject_GenericSetAttr().
-
-NB. on my machine this crashes in 2.5 debug but not release.
-"""
-
-class A(object):
-    pass
-
-class B(object):
-    def __del__(self):
-        print "hi"
-        del C.d
-
-class D(object):
-    def __set__(self, obj, value):
-        self.hello = 42
-
-class C(object):
-    d = D()
-
-    def g():
-        pass
-
-
-c = C()
-a = A()
-a.cycle = a
-a.other = B()
-
-lst = [None] * 1000000
-i = 0
-del a
-while 1:
-    c.d = 42         # segfaults in PyMethod_New(im_func=D.__set__, im_self=d)
-    lst[i] = c.g     # consume the free list of instancemethod objects
-    i += 1
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/compiler_recursion.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/compiler_recursion.py
deleted file mode 100644
index 7f00150..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/compiler_recursion.py
+++ /dev/null
@@ -1,5 +0,0 @@
-"""
-The compiler (>= 2.5) recurses happily.
-"""
-
-compile('()'*9**5, '?', 'exec')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/gc_has_finalizer.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/gc_has_finalizer.py
deleted file mode 100644
index 10b6124..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/gc_has_finalizer.py
+++ /dev/null
@@ -1,36 +0,0 @@
-"""
-The gc module can still invoke arbitrary Python code and crash.
-This is an attack against _PyInstance_Lookup(), which is documented
-as follows:
-
-    The point of this routine is that it never calls arbitrary Python
-    code, so is always "safe":  all it does is dict lookups.
-
-But of course dict lookups can call arbitrary Python code.
-The following code causes mutation of the object graph during
-the call to has_finalizer() in gcmodule.c, and that might
-segfault.
-"""
-
-import gc
-
-
-class A:
-    def __hash__(self):
-        return hash("__del__")
-    def __eq__(self, other):
-        del self.other
-        return False
-
-a = A()
-b = A()
-
-a.__dict__[b] = 'A'
-
-a.other = b
-b.other = a
-
-gc.collect()
-del a, b
-
-gc.collect()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/gc_inspection.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/gc_inspection.py
deleted file mode 100644
index 96be977..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/gc_inspection.py
+++ /dev/null
@@ -1,32 +0,0 @@
-"""
-gc.get_referrers() can be used to see objects before they are fully built.
-
-Note that this is only an example.  There are many ways to crash Python
-by using gc.get_referrers(), as well as many extension modules (even
-when they are using perfectly documented patterns to build objects).
-
-Identifying and removing all places that expose to the GC a
-partially-built object is a long-term project.  A patch was proposed on
-SF specifically for this example but I consider fixing just this single
-example a bit pointless (#1517042).
-
-A fix would include a whole-scale code review, possibly with an API
-change to decouple object creation and GC registration, and according
-fixes to the documentation for extension module writers.  It's unlikely
-to happen, though.  So this is currently classified as
-"gc.get_referrers() is dangerous, use only for debugging".
-"""
-
-import gc
-
-
-def g():
-    marker = object()
-    yield marker
-    # now the marker is in the tuple being constructed
-    [tup] = [x for x in gc.get_referrers(marker) if type(x) is tuple]
-    print tup
-    print tup[1]
-
-
-tuple(g())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/infinite_loop_re.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/infinite_loop_re.py
deleted file mode 100644
index ffa4d7b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/infinite_loop_re.py
+++ /dev/null
@@ -1,16 +0,0 @@
-
-# This was taken from http://python.org/sf/1541697
-# It's not technically a crasher.  It may not even truly be infinite,
-# however, I haven't waited a long time to see the result.  It takes
-# 100% of CPU while running this and should be fixed.
-
-import re
-starttag = re.compile(r'<[a-zA-Z][-_.:a-zA-Z0-9]*\s*('
-        r'\s*([a-zA-Z_][-:.a-zA-Z_0-9]*)(\s*=\s*'
-        r'(\'[^\']*\'|"[^"]*"|[-a-zA-Z0-9./,:;+*%?!&$\(\)_#=~@]'
-        r'[][\-a-zA-Z0-9./,:;+*%?!&$\(\)_#=~\'"@]*(?=[\s>/<])))?'
-    r')*\s*/?\s*(?=[<>])')
-
-if __name__ == '__main__':
-    foo = '<table cellspacing="0" cellpadding="0" style="border-collapse'
-    starttag.match(foo)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/loosing_mro_ref.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/loosing_mro_ref.py
deleted file mode 100644
index 7407ced..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/loosing_mro_ref.py
+++ /dev/null
@@ -1,35 +0,0 @@
-"""
-There is a way to put keys of any type in a type's dictionary.
-I think this allows various kinds of crashes, but so far I have only
-found a convoluted attack of _PyType_Lookup(), which uses the mro of the
-type without holding a strong reference to it.  Probably works with
-super.__getattribute__() too, which uses the same kind of code.
-"""
-
-class MyKey(object):
-    def __hash__(self):
-        return hash('mykey')
-
-    def __cmp__(self, other):
-        # the following line decrefs the previous X.__mro__
-        X.__bases__ = (Base2,)
-        # trash all tuples of length 3, to make sure that the items of
-        # the previous X.__mro__ are really garbage
-        z = []
-        for i in range(1000):
-            z.append((i, None, None))
-        return -1
-
-
-class Base(object):
-    mykey = 'from Base'
-
-class Base2(object):
-    mykey = 'from Base2'
-
-# you can't add a non-string key to X.__dict__, but it can be
-# there from the beginning :-)
-X = type('X', (Base,), {MyKey(): 5})
-
-print X.mykey
-# I get a segfault, or a slightly wrong assertion error in a debug build.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/mutation_inside_cyclegc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/mutation_inside_cyclegc.py
deleted file mode 100644
index 82ee72d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/mutation_inside_cyclegc.py
+++ /dev/null
@@ -1,31 +0,0 @@
-
-# The cycle GC collector can be executed when any GC-tracked object is
-# allocated, e.g. during a call to PyList_New(), PyDict_New(), ...
-# Moreover, it can invoke arbitrary Python code via a weakref callback.
-# This means that there are many places in the source where an arbitrary
-# mutation could unexpectedly occur.
-
-# The example below shows list_slice() not expecting the call to
-# PyList_New to mutate the input list.  (Of course there are many
-# more examples like this one.)
-
-
-import weakref
-
-class A(object):
-    pass
-
-def callback(x):
-    del lst[:]
-
-
-keepalive = []
-
-for i in range(100):
-    lst = [str(i)]
-    a = A()
-    a.cycle = a
-    keepalive.append(weakref.ref(a, callback))
-    del a
-    while lst:
-        keepalive.append(lst[:])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/nasty_eq_vs_dict.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/nasty_eq_vs_dict.py
deleted file mode 100644
index 20afeec..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/nasty_eq_vs_dict.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# from http://mail.python.org/pipermail/python-dev/2001-June/015239.html
-
-# if you keep changing a dictionary while looking up a key, you can
-# provoke an infinite recursion in C
-
-# At the time neither Tim nor Michael could be bothered to think of a
-# way to fix it.
-
-class Yuck:
-    def __init__(self):
-        self.i = 0
-
-    def make_dangerous(self):
-        self.i = 1
-
-    def __hash__(self):
-        # direct to slot 4 in table of size 8; slot 12 when size 16
-        return 4 + 8
-
-    def __eq__(self, other):
-        if self.i == 0:
-            # leave dict alone
-            pass
-        elif self.i == 1:
-            # fiddle to 16 slots
-            self.__fill_dict(6)
-            self.i = 2
-        else:
-            # fiddle to 8 slots
-            self.__fill_dict(4)
-            self.i = 1
-
-        return 1
-
-    def __fill_dict(self, n):
-        self.i = 0
-        dict.clear()
-        for i in range(n):
-            dict[i] = i
-        dict[self] = "OK!"
-
-y = Yuck()
-dict = {y: "OK!"}
-
-z = Yuck()
-y.make_dangerous()
-print dict[z]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/recursion_limit_too_high.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/recursion_limit_too_high.py
deleted file mode 100644
index fb24e44..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/recursion_limit_too_high.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# The following example may crash or not depending on the platform.
-# E.g. on 32-bit Intel Linux in a "standard" configuration it seems to
-# crash on Python 2.5 (but not 2.4 nor 2.3).  On Windows the import
-# eventually fails to find the module, possibly because we run out of
-# file handles.
-
-# The point of this example is to show that sys.setrecursionlimit() is a
-# hack, and not a robust solution.  This example simply exercises a path
-# where it takes many C-level recursions, consuming a lot of stack
-# space, for each Python-level recursion.  So 1000 times this amount of
-# stack space may be too much for standard platforms already.
-
-import sys
-if 'recursion_limit_too_high' in sys.modules:
-    del sys.modules['recursion_limit_too_high']
-import recursion_limit_too_high
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/recursive_call.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/recursive_call.py
deleted file mode 100644
index 38bec3d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/crashers/recursive_call.py
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env python
-
-# No bug report AFAIK, mail on python-dev on 2006-01-10
-
-# This is a "won't fix" case.  It is known that setting a high enough
-# recursion limit crashes by overflowing the stack.  Unless this is
-# redesigned somehow, it won't go away.
-
-import sys
-
-sys.setrecursionlimit(1 << 30)
-f = lambda f:f(f)
-
-if __name__ == '__main__':
-    f(f)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/curses_tests.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/curses_tests.py
deleted file mode 100644
index 40b3962..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/curses_tests.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env python
-#
-# $Id: ncurses.py 36559 2004-07-18 05:56:09Z tim_one $
-#
-# Interactive test suite for the curses module.
-# This script displays various things and the user should verify whether
-# they display correctly.
-#
-
-import curses
-from curses import textpad
-
-def test_textpad(stdscr, insert_mode=False):
-    ncols, nlines = 8, 3
-    uly, ulx = 3, 2
-    if insert_mode:
-        mode = 'insert mode'
-    else:
-        mode = 'overwrite mode'
-
-    stdscr.addstr(uly-3, ulx, "Use Ctrl-G to end editing (%s)." % mode)
-    stdscr.addstr(uly-2, ulx, "Be sure to try typing in the lower-right corner.")
-    win = curses.newwin(nlines, ncols, uly, ulx)
-    textpad.rectangle(stdscr, uly-1, ulx-1, uly + nlines, ulx + ncols)
-    stdscr.refresh()
-
-    box = textpad.Textbox(win, insert_mode)
-    contents = box.edit()
-    stdscr.addstr(uly+ncols+2, 0, "Text entered in the box\n")
-    stdscr.addstr(repr(contents))
-    stdscr.addstr('\n')
-    stdscr.addstr('Press any key')
-    stdscr.getch()
-
-    for i in range(3):
-        stdscr.move(uly+ncols+2 + i, 0)
-        stdscr.clrtoeol()
-
-def main(stdscr):
-    stdscr.clear()
-    test_textpad(stdscr, False)
-    test_textpad(stdscr, True)
-
-
-if __name__ == '__main__':
-    curses.wrapper(main)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/data/README b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/data/README
deleted file mode 100644
index 4459627..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/data/README
+++ /dev/null
@@ -1,2 +0,0 @@
-This empty directory serves as destination for temporary files
-created by some tests.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/abs.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/abs.decTest
deleted file mode 100644
index 0caa9f0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/abs.decTest
+++ /dev/null
@@ -1,161 +0,0 @@
-------------------------------------------------------------------------
--- abs.decTest -- decimal absolute value                              --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This set of tests primarily tests the existence of the operator.
--- Additon, subtraction, rounding, and more overflows are tested
--- elsewhere.
-
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-extended: 1
-
-absx001 abs '1'      -> '1'
-absx002 abs '-1'     -> '1'
-absx003 abs '1.00'   -> '1.00'
-absx004 abs '-1.00'  -> '1.00'
-absx005 abs '0'      -> '0'
-absx006 abs '0.00'   -> '0.00'
-absx007 abs '00.0'   -> '0.0'
-absx008 abs '00.00'  -> '0.00'
-absx009 abs '00'     -> '0'
-
-absx010 abs '-2'     -> '2'
-absx011 abs '2'      -> '2'
-absx012 abs '-2.00'  -> '2.00'
-absx013 abs '2.00'   -> '2.00'
-absx014 abs '-0'     -> '0'
-absx015 abs '-0.00'  -> '0.00'
-absx016 abs '-00.0'  -> '0.0'
-absx017 abs '-00.00' -> '0.00'
-absx018 abs '-00'    -> '0'
-
-absx020 abs '-2000000' -> '2000000'
-absx021 abs '2000000'  -> '2000000'
-precision: 7
-absx022 abs '-2000000' -> '2000000'
-absx023 abs '2000000'  -> '2000000'
-precision: 6
-absx024 abs '-2000000' -> '2.00000E+6' Rounded
-absx025 abs '2000000'  -> '2.00000E+6' Rounded
-precision: 3
-absx026 abs '-2000000' -> '2.00E+6' Rounded
-absx027 abs '2000000'  -> '2.00E+6' Rounded
-
-absx030 abs '+0.1'            -> '0.1'
-absx031 abs '-0.1'            -> '0.1'
-absx032 abs '+0.01'           -> '0.01'
-absx033 abs '-0.01'           -> '0.01'
-absx034 abs '+0.001'          -> '0.001'
-absx035 abs '-0.001'          -> '0.001'
-absx036 abs '+0.000001'       -> '0.000001'
-absx037 abs '-0.000001'       -> '0.000001'
-absx038 abs '+0.000000000001' -> '1E-12'
-absx039 abs '-0.000000000001' -> '1E-12'
-
--- examples from decArith
-precision: 9
-absx040 abs '2.1'     ->  '2.1'
-absx041 abs '-100'    ->  '100'
-absx042 abs '101.5'   ->  '101.5'
-absx043 abs '-101.5'  ->  '101.5'
-
--- more fixed, potential LHS swaps/overlays if done by subtract 0
-precision: 9
-absx060 abs '-56267E-10'  -> '0.0000056267'
-absx061 abs '-56267E-5'   -> '0.56267'
-absx062 abs '-56267E-2'   -> '562.67'
-absx063 abs '-56267E-1'   -> '5626.7'
-absx065 abs '-56267E-0'   -> '56267'
-
--- overflow tests
-maxexponent: 999999999
-minexponent: -999999999
-precision: 3
-absx120 abs 9.999E+999999999 -> Infinity Inexact Overflow Rounded
-
--- subnormals and underflow
-precision: 3
-maxexponent: 999
-minexponent: -999
-absx210 abs  1.00E-999        ->   1.00E-999
-absx211 abs  0.1E-999         ->   1E-1000   Subnormal
-absx212 abs  0.10E-999        ->   1.0E-1000 Subnormal
-absx213 abs  0.100E-999       ->   1.0E-1000 Subnormal Rounded
-absx214 abs  0.01E-999        ->   1E-1001   Subnormal
--- next is rounded to Emin
-absx215 abs  0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
-absx216 abs  0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
-absx217 abs  0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
-absx218 abs  0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-absx219 abs  0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-absx220 abs  0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
-absx230 abs -1.00E-999        ->   1.00E-999
-absx231 abs -0.1E-999         ->   1E-1000   Subnormal
-absx232 abs -0.10E-999        ->   1.0E-1000 Subnormal
-absx233 abs -0.100E-999       ->   1.0E-1000 Subnormal Rounded
-absx234 abs -0.01E-999        ->   1E-1001   Subnormal
--- next is rounded to Emin
-absx235 abs -0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
-absx236 abs -0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
-absx237 abs -0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
-absx238 abs -0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-absx239 abs -0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-absx240 abs -0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
--- long operand tests
-maxexponent: 999
-minexponent: -999
-precision: 9
-absx301 abs 12345678000  -> 1.23456780E+10 Rounded
-absx302 abs 1234567800   -> 1.23456780E+9 Rounded
-absx303 abs 1234567890   -> 1.23456789E+9 Rounded
-absx304 abs 1234567891   -> 1.23456789E+9 Inexact Rounded
-absx305 abs 12345678901  -> 1.23456789E+10 Inexact Rounded
-absx306 abs 1234567896   -> 1.23456790E+9 Inexact Rounded
-
-precision: 15
-absx321 abs 12345678000  -> 12345678000
-absx322 abs 1234567800   -> 1234567800
-absx323 abs 1234567890   -> 1234567890
-absx324 abs 1234567891   -> 1234567891
-absx325 abs 12345678901  -> 12345678901
-absx326 abs 1234567896   -> 1234567896
-
-
--- Specials
-precision:   9
-
--- specials
-absx520 abs 'Inf'    -> 'Infinity'
-absx521 abs '-Inf'   -> 'Infinity'
-absx522 abs   NaN    ->  NaN
-absx523 abs  sNaN    ->  NaN   Invalid_operation
-absx524 abs   NaN22  ->  NaN22
-absx525 abs  sNaN33  ->  NaN33 Invalid_operation
-absx526 abs  -NaN22  -> -NaN22
-absx527 abs -sNaN33  -> -NaN33 Invalid_operation
-
--- Null tests
-absx900 abs  # -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/add.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/add.decTest
deleted file mode 100644
index 2d86b7b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/add.decTest
+++ /dev/null
@@ -1,2716 +0,0 @@
-------/cancell----------------------------------------------------------
--- add.decTest -- decimal addition                                    --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-extended:    1
-
--- [first group are 'quick confidence check']
-addx001 add 1       1       ->  2
-addx002 add 2       3       ->  5
-addx003 add '5.75'  '3.3'   ->  9.05
-addx004 add '5'     '-3'    ->  2
-addx005 add '-5'    '-3'    ->  -8
-addx006 add '-7'    '2.5'   ->  -4.5
-addx007 add '0.7'   '0.3'   ->  1.0
-addx008 add '1.25'  '1.25'  ->  2.50
-addx009 add '1.23456789'  '1.00000000' -> '2.23456789'
-addx010 add '1.23456789'  '1.00000011' -> '2.23456800'
-
-addx011 add '0.4444444444'  '0.5555555555' -> '1.00000000' Inexact Rounded
-addx012 add '0.4444444440'  '0.5555555555' -> '1.00000000' Inexact Rounded
-addx013 add '0.4444444444'  '0.5555555550' -> '0.999999999' Inexact Rounded
-addx014 add '0.44444444449'    '0' -> '0.444444444' Inexact Rounded
-addx015 add '0.444444444499'   '0' -> '0.444444444' Inexact Rounded
-addx016 add '0.4444444444999'  '0' -> '0.444444444' Inexact Rounded
-addx017 add '0.4444444445000'  '0' -> '0.444444445' Inexact Rounded
-addx018 add '0.4444444445001'  '0' -> '0.444444445' Inexact Rounded
-addx019 add '0.444444444501'   '0' -> '0.444444445' Inexact Rounded
-addx020 add '0.44444444451'    '0' -> '0.444444445' Inexact Rounded
-
-addx021 add 0 1 -> 1
-addx022 add 1 1 -> 2
-addx023 add 2 1 -> 3
-addx024 add 3 1 -> 4
-addx025 add 4 1 -> 5
-addx026 add 5 1 -> 6
-addx027 add 6 1 -> 7
-addx028 add 7 1 -> 8
-addx029 add 8 1 -> 9
-addx030 add 9 1 -> 10
-
--- some carrying effects
-addx031 add '0.9998'  '0.0000' -> '0.9998'
-addx032 add '0.9998'  '0.0001' -> '0.9999'
-addx033 add '0.9998'  '0.0002' -> '1.0000'
-addx034 add '0.9998'  '0.0003' -> '1.0001'
-
-addx035 add '70'  '10000e+9' -> '1.00000000E+13' Inexact Rounded
-addx036 add '700'  '10000e+9' -> '1.00000000E+13' Inexact Rounded
-addx037 add '7000'  '10000e+9' -> '1.00000000E+13' Inexact Rounded
-addx038 add '70000'  '10000e+9' -> '1.00000001E+13' Inexact Rounded
-addx039 add '700000'  '10000e+9' -> '1.00000007E+13' Rounded
-
--- symmetry:
-addx040 add '10000e+9'  '70' -> '1.00000000E+13' Inexact Rounded
-addx041 add '10000e+9'  '700' -> '1.00000000E+13' Inexact Rounded
-addx042 add '10000e+9'  '7000' -> '1.00000000E+13' Inexact Rounded
-addx044 add '10000e+9'  '70000' -> '1.00000001E+13' Inexact Rounded
-addx045 add '10000e+9'  '700000' -> '1.00000007E+13' Rounded
-
--- same, higher precision
-precision: 15
-addx046 add '10000e+9'  '7' -> '10000000000007'
-addx047 add '10000e+9'  '70' -> '10000000000070'
-addx048 add '10000e+9'  '700' -> '10000000000700'
-addx049 add '10000e+9'  '7000' -> '10000000007000'
-addx050 add '10000e+9'  '70000' -> '10000000070000'
-addx051 add '10000e+9'  '700000' -> '10000000700000'
-addx052 add '10000e+9'  '7000000' -> '10000007000000'
-
--- examples from decarith
-addx053 add '12' '7.00' -> '19.00'
-addx054 add '1.3' '-1.07' -> '0.23'
-addx055 add '1.3' '-1.30' -> '0.00'
-addx056 add '1.3' '-2.07' -> '-0.77'
-addx057 add '1E+2' '1E+4' -> '1.01E+4'
-
--- zero preservation
-precision: 6
-addx060 add '10000e+9'  '70000' -> '1.00000E+13' Inexact Rounded
-addx061 add 1 '0.0001' -> '1.0001'
-addx062 add 1 '0.00001' -> '1.00001'
-addx063 add 1 '0.000001' -> '1.00000' Inexact Rounded
-addx064 add 1 '0.0000001' -> '1.00000' Inexact Rounded
-addx065 add 1 '0.00000001' -> '1.00000' Inexact Rounded
-
--- some funny zeros [in case of bad signum]
-addx070 add 1  0    -> 1
-addx071 add 1 0.    -> 1
-addx072 add 1  .0   -> 1.0
-addx073 add 1 0.0   -> 1.0
-addx074 add 1 0.00  -> 1.00
-addx075 add  0  1   -> 1
-addx076 add 0.  1   -> 1
-addx077 add  .0 1   -> 1.0
-addx078 add 0.0 1   -> 1.0
-addx079 add 0.00 1  -> 1.00
-
-precision: 9
-
--- some carries
-addx080 add 999999998 1  -> 999999999
-addx081 add 999999999 1  -> 1.00000000E+9 Rounded
-addx082 add  99999999 1  -> 100000000
-addx083 add   9999999 1  -> 10000000
-addx084 add    999999 1  -> 1000000
-addx085 add     99999 1  -> 100000
-addx086 add      9999 1  -> 10000
-addx087 add       999 1  -> 1000
-addx088 add        99 1  -> 100
-addx089 add         9 1  -> 10
-
-
--- more LHS swaps
-addx090 add '-56267E-10'   0 ->  '-0.0000056267'
-addx091 add '-56267E-6'    0 ->  '-0.056267'
-addx092 add '-56267E-5'    0 ->  '-0.56267'
-addx093 add '-56267E-4'    0 ->  '-5.6267'
-addx094 add '-56267E-3'    0 ->  '-56.267'
-addx095 add '-56267E-2'    0 ->  '-562.67'
-addx096 add '-56267E-1'    0 ->  '-5626.7'
-addx097 add '-56267E-0'    0 ->  '-56267'
-addx098 add '-5E-10'       0 ->  '-5E-10'
-addx099 add '-5E-7'        0 ->  '-5E-7'
-addx100 add '-5E-6'        0 ->  '-0.000005'
-addx101 add '-5E-5'        0 ->  '-0.00005'
-addx102 add '-5E-4'        0 ->  '-0.0005'
-addx103 add '-5E-1'        0 ->  '-0.5'
-addx104 add '-5E0'         0 ->  '-5'
-addx105 add '-5E1'         0 ->  '-50'
-addx106 add '-5E5'         0 ->  '-500000'
-addx107 add '-5E8'         0 ->  '-500000000'
-addx108 add '-5E9'         0 ->  '-5.00000000E+9'   Rounded
-addx109 add '-5E10'        0 ->  '-5.00000000E+10'  Rounded
-addx110 add '-5E11'        0 ->  '-5.00000000E+11'  Rounded
-addx111 add '-5E100'       0 ->  '-5.00000000E+100' Rounded
-
--- more RHS swaps
-addx113 add 0  '-56267E-10' ->  '-0.0000056267'
-addx114 add 0  '-56267E-6'  ->  '-0.056267'
-addx116 add 0  '-56267E-5'  ->  '-0.56267'
-addx117 add 0  '-56267E-4'  ->  '-5.6267'
-addx119 add 0  '-56267E-3'  ->  '-56.267'
-addx120 add 0  '-56267E-2'  ->  '-562.67'
-addx121 add 0  '-56267E-1'  ->  '-5626.7'
-addx122 add 0  '-56267E-0'  ->  '-56267'
-addx123 add 0  '-5E-10'     ->  '-5E-10'
-addx124 add 0  '-5E-7'      ->  '-5E-7'
-addx125 add 0  '-5E-6'      ->  '-0.000005'
-addx126 add 0  '-5E-5'      ->  '-0.00005'
-addx127 add 0  '-5E-4'      ->  '-0.0005'
-addx128 add 0  '-5E-1'      ->  '-0.5'
-addx129 add 0  '-5E0'       ->  '-5'
-addx130 add 0  '-5E1'       ->  '-50'
-addx131 add 0  '-5E5'       ->  '-500000'
-addx132 add 0  '-5E8'       ->  '-500000000'
-addx133 add 0  '-5E9'       ->  '-5.00000000E+9'    Rounded
-addx134 add 0  '-5E10'      ->  '-5.00000000E+10'   Rounded
-addx135 add 0  '-5E11'      ->  '-5.00000000E+11'   Rounded
-addx136 add 0  '-5E100'     ->  '-5.00000000E+100'  Rounded
-
--- related
-addx137 add  1  '0E-12'      ->  '1.00000000'  Rounded
-addx138 add -1  '0E-12'      ->  '-1.00000000' Rounded
-addx139 add '0E-12' 1        ->  '1.00000000'  Rounded
-addx140 add '0E-12' -1       ->  '-1.00000000' Rounded
-addx141 add 1E+4    0.0000   ->  '10000.0000'
-addx142 add 1E+4    0.00000  ->  '10000.0000'  Rounded
-addx143 add 0.000   1E+5     ->  '100000.000'
-addx144 add 0.0000  1E+5     ->  '100000.000'  Rounded
-
--- [some of the next group are really constructor tests]
-addx146 add '00.0'  0       ->  '0.0'
-addx147 add '0.00'  0       ->  '0.00'
-addx148 add  0      '0.00'  ->  '0.00'
-addx149 add  0      '00.0'  ->  '0.0'
-addx150 add '00.0'  '0.00'  ->  '0.00'
-addx151 add '0.00'  '00.0'  ->  '0.00'
-addx152 add '3'     '.3'    ->  '3.3'
-addx153 add '3.'    '.3'    ->  '3.3'
-addx154 add '3.0'   '.3'    ->  '3.3'
-addx155 add '3.00'  '.3'    ->  '3.30'
-addx156 add '3'     '3'     ->  '6'
-addx157 add '3'     '+3'    ->  '6'
-addx158 add '3'     '-3'    ->  '0'
-addx159 add '0.3'   '-0.3'  ->  '0.0'
-addx160 add '0.03'  '-0.03' ->  '0.00'
-
--- try borderline precision, with carries, etc.
-precision: 15
-addx161 add '1E+12' '-1'    -> '999999999999'
-addx162 add '1E+12'  '1.11' -> '1000000000001.11'
-addx163 add '1.11'  '1E+12' -> '1000000000001.11'
-addx164 add '-1'    '1E+12' -> '999999999999'
-addx165 add '7E+12' '-1'    -> '6999999999999'
-addx166 add '7E+12'  '1.11' -> '7000000000001.11'
-addx167 add '1.11'  '7E+12' -> '7000000000001.11'
-addx168 add '-1'    '7E+12' -> '6999999999999'
-
---             123456789012345      123456789012345      1 23456789012345
-addx170 add '0.444444444444444'  '0.555555555555563' -> '1.00000000000001' Inexact Rounded
-addx171 add '0.444444444444444'  '0.555555555555562' -> '1.00000000000001' Inexact Rounded
-addx172 add '0.444444444444444'  '0.555555555555561' -> '1.00000000000001' Inexact Rounded
-addx173 add '0.444444444444444'  '0.555555555555560' -> '1.00000000000000' Inexact Rounded
-addx174 add '0.444444444444444'  '0.555555555555559' -> '1.00000000000000' Inexact Rounded
-addx175 add '0.444444444444444'  '0.555555555555558' -> '1.00000000000000' Inexact Rounded
-addx176 add '0.444444444444444'  '0.555555555555557' -> '1.00000000000000' Inexact Rounded
-addx177 add '0.444444444444444'  '0.555555555555556' -> '1.00000000000000' Rounded
-addx178 add '0.444444444444444'  '0.555555555555555' -> '0.999999999999999'
-addx179 add '0.444444444444444'  '0.555555555555554' -> '0.999999999999998'
-addx180 add '0.444444444444444'  '0.555555555555553' -> '0.999999999999997'
-addx181 add '0.444444444444444'  '0.555555555555552' -> '0.999999999999996'
-addx182 add '0.444444444444444'  '0.555555555555551' -> '0.999999999999995'
-addx183 add '0.444444444444444'  '0.555555555555550' -> '0.999999999999994'
-
--- and some more, including residue effects and different roundings
-precision: 9
-rounding: half_up
-addx200 add '123456789' 0             -> '123456789'
-addx201 add '123456789' 0.000000001   -> '123456789' Inexact Rounded
-addx202 add '123456789' 0.000001      -> '123456789' Inexact Rounded
-addx203 add '123456789' 0.1           -> '123456789' Inexact Rounded
-addx204 add '123456789' 0.4           -> '123456789' Inexact Rounded
-addx205 add '123456789' 0.49          -> '123456789' Inexact Rounded
-addx206 add '123456789' 0.499999      -> '123456789' Inexact Rounded
-addx207 add '123456789' 0.499999999   -> '123456789' Inexact Rounded
-addx208 add '123456789' 0.5           -> '123456790' Inexact Rounded
-addx209 add '123456789' 0.500000001   -> '123456790' Inexact Rounded
-addx210 add '123456789' 0.500001      -> '123456790' Inexact Rounded
-addx211 add '123456789' 0.51          -> '123456790' Inexact Rounded
-addx212 add '123456789' 0.6           -> '123456790' Inexact Rounded
-addx213 add '123456789' 0.9           -> '123456790' Inexact Rounded
-addx214 add '123456789' 0.99999       -> '123456790' Inexact Rounded
-addx215 add '123456789' 0.999999999   -> '123456790' Inexact Rounded
-addx216 add '123456789' 1             -> '123456790'
-addx217 add '123456789' 1.000000001   -> '123456790' Inexact Rounded
-addx218 add '123456789' 1.00001       -> '123456790' Inexact Rounded
-addx219 add '123456789' 1.1           -> '123456790' Inexact Rounded
-
-rounding: half_even
-addx220 add '123456789' 0             -> '123456789'
-addx221 add '123456789' 0.000000001   -> '123456789' Inexact Rounded
-addx222 add '123456789' 0.000001      -> '123456789' Inexact Rounded
-addx223 add '123456789' 0.1           -> '123456789' Inexact Rounded
-addx224 add '123456789' 0.4           -> '123456789' Inexact Rounded
-addx225 add '123456789' 0.49          -> '123456789' Inexact Rounded
-addx226 add '123456789' 0.499999      -> '123456789' Inexact Rounded
-addx227 add '123456789' 0.499999999   -> '123456789' Inexact Rounded
-addx228 add '123456789' 0.5           -> '123456790' Inexact Rounded
-addx229 add '123456789' 0.500000001   -> '123456790' Inexact Rounded
-addx230 add '123456789' 0.500001      -> '123456790' Inexact Rounded
-addx231 add '123456789' 0.51          -> '123456790' Inexact Rounded
-addx232 add '123456789' 0.6           -> '123456790' Inexact Rounded
-addx233 add '123456789' 0.9           -> '123456790' Inexact Rounded
-addx234 add '123456789' 0.99999       -> '123456790' Inexact Rounded
-addx235 add '123456789' 0.999999999   -> '123456790' Inexact Rounded
-addx236 add '123456789' 1             -> '123456790'
-addx237 add '123456789' 1.00000001    -> '123456790' Inexact Rounded
-addx238 add '123456789' 1.00001       -> '123456790' Inexact Rounded
-addx239 add '123456789' 1.1           -> '123456790' Inexact Rounded
--- critical few with even bottom digit...
-addx240 add '123456788' 0.499999999   -> '123456788' Inexact Rounded
-addx241 add '123456788' 0.5           -> '123456788' Inexact Rounded
-addx242 add '123456788' 0.500000001   -> '123456789' Inexact Rounded
-
-rounding: down
-addx250 add '123456789' 0             -> '123456789'
-addx251 add '123456789' 0.000000001   -> '123456789' Inexact Rounded
-addx252 add '123456789' 0.000001      -> '123456789' Inexact Rounded
-addx253 add '123456789' 0.1           -> '123456789' Inexact Rounded
-addx254 add '123456789' 0.4           -> '123456789' Inexact Rounded
-addx255 add '123456789' 0.49          -> '123456789' Inexact Rounded
-addx256 add '123456789' 0.499999      -> '123456789' Inexact Rounded
-addx257 add '123456789' 0.499999999   -> '123456789' Inexact Rounded
-addx258 add '123456789' 0.5           -> '123456789' Inexact Rounded
-addx259 add '123456789' 0.500000001   -> '123456789' Inexact Rounded
-addx260 add '123456789' 0.500001      -> '123456789' Inexact Rounded
-addx261 add '123456789' 0.51          -> '123456789' Inexact Rounded
-addx262 add '123456789' 0.6           -> '123456789' Inexact Rounded
-addx263 add '123456789' 0.9           -> '123456789' Inexact Rounded
-addx264 add '123456789' 0.99999       -> '123456789' Inexact Rounded
-addx265 add '123456789' 0.999999999   -> '123456789' Inexact Rounded
-addx266 add '123456789' 1             -> '123456790'
-addx267 add '123456789' 1.00000001    -> '123456790' Inexact Rounded
-addx268 add '123456789' 1.00001       -> '123456790' Inexact Rounded
-addx269 add '123456789' 1.1           -> '123456790' Inexact Rounded
-
--- input preparation tests (operands should not be rounded)
-precision: 3
-rounding: half_up
-
-addx270 add '12345678900000'  9999999999999 ->  '2.23E+13' Inexact Rounded
-addx271 add  '9999999999999' 12345678900000 ->  '2.23E+13' Inexact Rounded
-
-addx272 add '12E+3'  '3444'   ->  '1.54E+4' Inexact Rounded
-addx273 add '12E+3'  '3446'   ->  '1.54E+4' Inexact Rounded
-addx274 add '12E+3'  '3449.9' ->  '1.54E+4' Inexact Rounded
-addx275 add '12E+3'  '3450.0' ->  '1.55E+4' Inexact Rounded
-addx276 add '12E+3'  '3450.1' ->  '1.55E+4' Inexact Rounded
-addx277 add '12E+3'  '3454'   ->  '1.55E+4' Inexact Rounded
-addx278 add '12E+3'  '3456'   ->  '1.55E+4' Inexact Rounded
-
-addx281 add '3444'   '12E+3'  ->  '1.54E+4' Inexact Rounded
-addx282 add '3446'   '12E+3'  ->  '1.54E+4' Inexact Rounded
-addx283 add '3449.9' '12E+3'  ->  '1.54E+4' Inexact Rounded
-addx284 add '3450.0' '12E+3'  ->  '1.55E+4' Inexact Rounded
-addx285 add '3450.1' '12E+3'  ->  '1.55E+4' Inexact Rounded
-addx286 add '3454'   '12E+3'  ->  '1.55E+4' Inexact Rounded
-addx287 add '3456'   '12E+3'  ->  '1.55E+4' Inexact Rounded
-
-rounding: half_down
-addx291 add '3444'   '12E+3'  ->  '1.54E+4' Inexact Rounded
-addx292 add '3446'   '12E+3'  ->  '1.54E+4' Inexact Rounded
-addx293 add '3449.9' '12E+3'  ->  '1.54E+4' Inexact Rounded
-addx294 add '3450.0' '12E+3'  ->  '1.54E+4' Inexact Rounded
-addx295 add '3450.1' '12E+3'  ->  '1.55E+4' Inexact Rounded
-addx296 add '3454'   '12E+3'  ->  '1.55E+4' Inexact Rounded
-addx297 add '3456'   '12E+3'  ->  '1.55E+4' Inexact Rounded
-
--- 1 in last place tests
-rounding: half_up
-addx301 add  -1   1      ->   0
-addx302 add   0   1      ->   1
-addx303 add   1   1      ->   2
-addx304 add  12   1      ->  13
-addx305 add  98   1      ->  99
-addx306 add  99   1      -> 100
-addx307 add 100   1      -> 101
-addx308 add 101   1      -> 102
-addx309 add  -1  -1      ->  -2
-addx310 add   0  -1      ->  -1
-addx311 add   1  -1      ->   0
-addx312 add  12  -1      ->  11
-addx313 add  98  -1      ->  97
-addx314 add  99  -1      ->  98
-addx315 add 100  -1      ->  99
-addx316 add 101  -1      -> 100
-
-addx321 add -0.01  0.01    ->  0.00
-addx322 add  0.00  0.01    ->  0.01
-addx323 add  0.01  0.01    ->  0.02
-addx324 add  0.12  0.01    ->  0.13
-addx325 add  0.98  0.01    ->  0.99
-addx326 add  0.99  0.01    ->  1.00
-addx327 add  1.00  0.01    ->  1.01
-addx328 add  1.01  0.01    ->  1.02
-addx329 add -0.01 -0.01    -> -0.02
-addx330 add  0.00 -0.01    -> -0.01
-addx331 add  0.01 -0.01    ->  0.00
-addx332 add  0.12 -0.01    ->  0.11
-addx333 add  0.98 -0.01    ->  0.97
-addx334 add  0.99 -0.01    ->  0.98
-addx335 add  1.00 -0.01    ->  0.99
-addx336 add  1.01 -0.01    ->  1.00
-
--- some more cases where adding 0 affects the coefficient
-precision: 9
-addx340 add 1E+3    0    ->         1000
-addx341 add 1E+8    0    ->    100000000
-addx342 add 1E+9    0    ->   1.00000000E+9   Rounded
-addx343 add 1E+10   0    ->   1.00000000E+10  Rounded
--- which simply follow from these cases ...
-addx344 add 1E+3    1    ->         1001
-addx345 add 1E+8    1    ->    100000001
-addx346 add 1E+9    1    ->   1.00000000E+9   Inexact Rounded
-addx347 add 1E+10   1    ->   1.00000000E+10  Inexact Rounded
-addx348 add 1E+3    7    ->         1007
-addx349 add 1E+8    7    ->    100000007
-addx350 add 1E+9    7    ->   1.00000001E+9   Inexact Rounded
-addx351 add 1E+10   7    ->   1.00000000E+10  Inexact Rounded
-
--- tryzeros cases
-precision:   7
-rounding:    half_up
-maxExponent: 92
-minexponent: -92
-addx361  add 0E+50 10000E+1  -> 1.0000E+5
-addx362  add 10000E+1 0E-50  -> 100000.0  Rounded
-addx363  add 10000E+1 10000E-50  -> 100000.0  Rounded Inexact
-addx364  add 9.999999E+92 -9.999999E+92 -> 0E+86
-
--- a curiosity from JSR 13 testing
-rounding:    half_down
-precision:   10
-addx370 add 99999999 81512 -> 100081511
-precision:      6
-addx371 add 99999999 81512 -> 1.00082E+8 Rounded Inexact
-rounding:    half_up
-precision:   10
-addx372 add 99999999 81512 -> 100081511
-precision:      6
-addx373 add 99999999 81512 -> 1.00082E+8 Rounded Inexact
-rounding:    half_even
-precision:   10
-addx374 add 99999999 81512 -> 100081511
-precision:      6
-addx375 add 99999999 81512 -> 1.00082E+8 Rounded Inexact
-
--- ulp replacement tests
-precision: 9
-maxexponent: 999999999
-minexponent: -999999999
-addx400 add   1   77e-7       ->  1.0000077
-addx401 add   1   77e-8       ->  1.00000077
-addx402 add   1   77e-9       ->  1.00000008 Inexact Rounded
-addx403 add   1   77e-10      ->  1.00000001 Inexact Rounded
-addx404 add   1   77e-11      ->  1.00000000 Inexact Rounded
-addx405 add   1   77e-12      ->  1.00000000 Inexact Rounded
-addx406 add   1   77e-999     ->  1.00000000 Inexact Rounded
-addx407 add   1   77e-9999999 ->  1.00000000 Inexact Rounded
-
-addx410 add  10   77e-7       ->  10.0000077
-addx411 add  10   77e-8       ->  10.0000008 Inexact Rounded
-addx412 add  10   77e-9       ->  10.0000001 Inexact Rounded
-addx413 add  10   77e-10      ->  10.0000000 Inexact Rounded
-addx414 add  10   77e-11      ->  10.0000000 Inexact Rounded
-addx415 add  10   77e-12      ->  10.0000000 Inexact Rounded
-addx416 add  10   77e-999     ->  10.0000000 Inexact Rounded
-addx417 add  10   77e-9999999 ->  10.0000000 Inexact Rounded
-
-addx420 add  77e-7        1   ->  1.0000077
-addx421 add  77e-8        1   ->  1.00000077
-addx422 add  77e-9        1   ->  1.00000008 Inexact Rounded
-addx423 add  77e-10       1   ->  1.00000001 Inexact Rounded
-addx424 add  77e-11       1   ->  1.00000000 Inexact Rounded
-addx425 add  77e-12       1   ->  1.00000000 Inexact Rounded
-addx426 add  77e-999      1   ->  1.00000000 Inexact Rounded
-addx427 add  77e-9999999  1   ->  1.00000000 Inexact Rounded
-
-addx430 add  77e-7       10   ->  10.0000077
-addx431 add  77e-8       10   ->  10.0000008 Inexact Rounded
-addx432 add  77e-9       10   ->  10.0000001 Inexact Rounded
-addx433 add  77e-10      10   ->  10.0000000 Inexact Rounded
-addx434 add  77e-11      10   ->  10.0000000 Inexact Rounded
-addx435 add  77e-12      10   ->  10.0000000 Inexact Rounded
-addx436 add  77e-999     10   ->  10.0000000 Inexact Rounded
-addx437 add  77e-9999999 10   ->  10.0000000 Inexact Rounded
-
--- negative ulps
-addx440 add   1   -77e-7       ->  0.9999923
-addx441 add   1   -77e-8       ->  0.99999923
-addx442 add   1   -77e-9       ->  0.999999923
-addx443 add   1   -77e-10      ->  0.999999992 Inexact Rounded
-addx444 add   1   -77e-11      ->  0.999999999 Inexact Rounded
-addx445 add   1   -77e-12      ->  1.00000000 Inexact Rounded
-addx446 add   1   -77e-999     ->  1.00000000 Inexact Rounded
-addx447 add   1   -77e-9999999 ->  1.00000000 Inexact Rounded
-
-addx450 add  10   -77e-7       ->   9.9999923
-addx451 add  10   -77e-8       ->   9.99999923
-addx452 add  10   -77e-9       ->   9.99999992 Inexact Rounded
-addx453 add  10   -77e-10      ->   9.99999999 Inexact Rounded
-addx454 add  10   -77e-11      ->  10.0000000 Inexact Rounded
-addx455 add  10   -77e-12      ->  10.0000000 Inexact Rounded
-addx456 add  10   -77e-999     ->  10.0000000 Inexact Rounded
-addx457 add  10   -77e-9999999 ->  10.0000000 Inexact Rounded
-
-addx460 add  -77e-7        1   ->  0.9999923
-addx461 add  -77e-8        1   ->  0.99999923
-addx462 add  -77e-9        1   ->  0.999999923
-addx463 add  -77e-10       1   ->  0.999999992 Inexact Rounded
-addx464 add  -77e-11       1   ->  0.999999999 Inexact Rounded
-addx465 add  -77e-12       1   ->  1.00000000 Inexact Rounded
-addx466 add  -77e-999      1   ->  1.00000000 Inexact Rounded
-addx467 add  -77e-9999999  1   ->  1.00000000 Inexact Rounded
-
-addx470 add  -77e-7       10   ->   9.9999923
-addx471 add  -77e-8       10   ->   9.99999923
-addx472 add  -77e-9       10   ->   9.99999992 Inexact Rounded
-addx473 add  -77e-10      10   ->   9.99999999 Inexact Rounded
-addx474 add  -77e-11      10   ->  10.0000000 Inexact Rounded
-addx475 add  -77e-12      10   ->  10.0000000 Inexact Rounded
-addx476 add  -77e-999     10   ->  10.0000000 Inexact Rounded
-addx477 add  -77e-9999999 10   ->  10.0000000 Inexact Rounded
-
--- negative ulps
-addx480 add  -1    77e-7       ->  -0.9999923
-addx481 add  -1    77e-8       ->  -0.99999923
-addx482 add  -1    77e-9       ->  -0.999999923
-addx483 add  -1    77e-10      ->  -0.999999992 Inexact Rounded
-addx484 add  -1    77e-11      ->  -0.999999999 Inexact Rounded
-addx485 add  -1    77e-12      ->  -1.00000000 Inexact Rounded
-addx486 add  -1    77e-999     ->  -1.00000000 Inexact Rounded
-addx487 add  -1    77e-9999999 ->  -1.00000000 Inexact Rounded
-
-addx490 add -10    77e-7       ->   -9.9999923
-addx491 add -10    77e-8       ->   -9.99999923
-addx492 add -10    77e-9       ->   -9.99999992 Inexact Rounded
-addx493 add -10    77e-10      ->   -9.99999999 Inexact Rounded
-addx494 add -10    77e-11      ->  -10.0000000 Inexact Rounded
-addx495 add -10    77e-12      ->  -10.0000000 Inexact Rounded
-addx496 add -10    77e-999     ->  -10.0000000 Inexact Rounded
-addx497 add -10    77e-9999999 ->  -10.0000000 Inexact Rounded
-
-addx500 add   77e-7       -1   ->  -0.9999923
-addx501 add   77e-8       -1   ->  -0.99999923
-addx502 add   77e-9       -1   ->  -0.999999923
-addx503 add   77e-10      -1   ->  -0.999999992 Inexact Rounded
-addx504 add   77e-11      -1   ->  -0.999999999 Inexact Rounded
-addx505 add   77e-12      -1   ->  -1.00000000 Inexact Rounded
-addx506 add   77e-999     -1   ->  -1.00000000 Inexact Rounded
-addx507 add   77e-9999999 -1   ->  -1.00000000 Inexact Rounded
-
-addx510 add   77e-7       -10  ->   -9.9999923
-addx511 add   77e-8       -10  ->   -9.99999923
-addx512 add   77e-9       -10  ->   -9.99999992 Inexact Rounded
-addx513 add   77e-10      -10  ->   -9.99999999 Inexact Rounded
-addx514 add   77e-11      -10  ->  -10.0000000 Inexact Rounded
-addx515 add   77e-12      -10  ->  -10.0000000 Inexact Rounded
-addx516 add   77e-999     -10  ->  -10.0000000 Inexact Rounded
-addx517 add   77e-9999999 -10  ->  -10.0000000 Inexact Rounded
-
-
--- long operands
-maxexponent: 999
-minexponent: -999
-precision: 9
-addx521 add 12345678000 0 -> 1.23456780E+10 Rounded
-addx522 add 0 12345678000 -> 1.23456780E+10 Rounded
-addx523 add 1234567800  0 -> 1.23456780E+9 Rounded
-addx524 add 0 1234567800  -> 1.23456780E+9 Rounded
-addx525 add 1234567890  0 -> 1.23456789E+9 Rounded
-addx526 add 0 1234567890  -> 1.23456789E+9 Rounded
-addx527 add 1234567891  0 -> 1.23456789E+9 Inexact Rounded
-addx528 add 0 1234567891  -> 1.23456789E+9 Inexact Rounded
-addx529 add 12345678901 0 -> 1.23456789E+10 Inexact Rounded
-addx530 add 0 12345678901 -> 1.23456789E+10 Inexact Rounded
-addx531 add 1234567896  0 -> 1.23456790E+9 Inexact Rounded
-addx532 add 0 1234567896  -> 1.23456790E+9 Inexact Rounded
-
-precision: 15
--- still checking
-addx541 add 12345678000 0 -> 12345678000
-addx542 add 0 12345678000 -> 12345678000
-addx543 add 1234567800  0 -> 1234567800
-addx544 add 0 1234567800  -> 1234567800
-addx545 add 1234567890  0 -> 1234567890
-addx546 add 0 1234567890  -> 1234567890
-addx547 add 1234567891  0 -> 1234567891
-addx548 add 0 1234567891  -> 1234567891
-addx549 add 12345678901 0 -> 12345678901
-addx550 add 0 12345678901 -> 12345678901
-addx551 add 1234567896  0 -> 1234567896
-addx552 add 0 1234567896  -> 1234567896
-
--- verify a query
-precision:    16
-maxExponent: +394
-minExponent: -393
-rounding:     down
-addx561 add 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded
-addx562 add      0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded
--- and using decimal64 bounds (see also ddadd.decTest)
-precision:    16
-maxExponent: +384
-minExponent: -383
-rounding:     down
-addx563 add 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded
-addx564 add      0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded
-
-
--- some more residue effects with extreme rounding
-precision:   9
-rounding: half_up
-addx601 add 123456789  0.000001 -> 123456789 Inexact Rounded
-rounding: half_even
-addx602 add 123456789  0.000001 -> 123456789 Inexact Rounded
-rounding: half_down
-addx603 add 123456789  0.000001 -> 123456789 Inexact Rounded
-rounding: floor
-addx604 add 123456789  0.000001 -> 123456789 Inexact Rounded
-rounding: ceiling
-addx605 add 123456789  0.000001 -> 123456790 Inexact Rounded
-rounding: up
-addx606 add 123456789  0.000001 -> 123456790 Inexact Rounded
-rounding: down
-addx607 add 123456789  0.000001 -> 123456789 Inexact Rounded
-
-rounding: half_up
-addx611 add 123456789 -0.000001 -> 123456789 Inexact Rounded
-rounding: half_even
-addx612 add 123456789 -0.000001 -> 123456789 Inexact Rounded
-rounding: half_down
-addx613 add 123456789 -0.000001 -> 123456789 Inexact Rounded
-rounding: floor
-addx614 add 123456789 -0.000001 -> 123456788 Inexact Rounded
-rounding: ceiling
-addx615 add 123456789 -0.000001 -> 123456789 Inexact Rounded
-rounding: up
-addx616 add 123456789 -0.000001 -> 123456789 Inexact Rounded
-rounding: down
-addx617 add 123456789 -0.000001 -> 123456788 Inexact Rounded
-
-rounding: half_up
-addx621 add 123456789  0.499999 -> 123456789 Inexact Rounded
-rounding: half_even
-addx622 add 123456789  0.499999 -> 123456789 Inexact Rounded
-rounding: half_down
-addx623 add 123456789  0.499999 -> 123456789 Inexact Rounded
-rounding: floor
-addx624 add 123456789  0.499999 -> 123456789 Inexact Rounded
-rounding: ceiling
-addx625 add 123456789  0.499999 -> 123456790 Inexact Rounded
-rounding: up
-addx626 add 123456789  0.499999 -> 123456790 Inexact Rounded
-rounding: down
-addx627 add 123456789  0.499999 -> 123456789 Inexact Rounded
-
-rounding: half_up
-addx631 add 123456789 -0.499999 -> 123456789 Inexact Rounded
-rounding: half_even
-addx632 add 123456789 -0.499999 -> 123456789 Inexact Rounded
-rounding: half_down
-addx633 add 123456789 -0.499999 -> 123456789 Inexact Rounded
-rounding: floor
-addx634 add 123456789 -0.499999 -> 123456788 Inexact Rounded
-rounding: ceiling
-addx635 add 123456789 -0.499999 -> 123456789 Inexact Rounded
-rounding: up
-addx636 add 123456789 -0.499999 -> 123456789 Inexact Rounded
-rounding: down
-addx637 add 123456789 -0.499999 -> 123456788 Inexact Rounded
-
-rounding: half_up
-addx641 add 123456789  0.500001 -> 123456790 Inexact Rounded
-rounding: half_even
-addx642 add 123456789  0.500001 -> 123456790 Inexact Rounded
-rounding: half_down
-addx643 add 123456789  0.500001 -> 123456790 Inexact Rounded
-rounding: floor
-addx644 add 123456789  0.500001 -> 123456789 Inexact Rounded
-rounding: ceiling
-addx645 add 123456789  0.500001 -> 123456790 Inexact Rounded
-rounding: up
-addx646 add 123456789  0.500001 -> 123456790 Inexact Rounded
-rounding: down
-addx647 add 123456789  0.500001 -> 123456789 Inexact Rounded
-
-rounding: half_up
-addx651 add 123456789 -0.500001 -> 123456788 Inexact Rounded
-rounding: half_even
-addx652 add 123456789 -0.500001 -> 123456788 Inexact Rounded
-rounding: half_down
-addx653 add 123456789 -0.500001 -> 123456788 Inexact Rounded
-rounding: floor
-addx654 add 123456789 -0.500001 -> 123456788 Inexact Rounded
-rounding: ceiling
-addx655 add 123456789 -0.500001 -> 123456789 Inexact Rounded
-rounding: up
-addx656 add 123456789 -0.500001 -> 123456789 Inexact Rounded
-rounding: down
-addx657 add 123456789 -0.500001 -> 123456788 Inexact Rounded
-
--- long operand triangle
-rounding: half_up
-precision:  37
-addx660 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114834538
-precision:  36
-addx661 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483454  Inexact Rounded
-precision:  35
-addx662 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148345   Inexact Rounded
-precision:  34
-addx663 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114835    Inexact Rounded
-precision:  33
-addx664 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483     Inexact Rounded
-precision:  32
-addx665 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148      Inexact Rounded
-precision:  31
-addx666 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337115       Inexact Rounded
-precision:  30
-addx667 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711        Inexact Rounded
-precision:  29
-addx668 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371         Inexact Rounded
-precision:  28
-addx669 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337          Inexact Rounded
-precision:  27
-addx670 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892234           Inexact Rounded
-precision:  26
-addx671 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223            Inexact Rounded
-precision:  25
-addx672 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922             Inexact Rounded
-precision:  24
-addx673 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892              Inexact Rounded
-precision:  23
-addx674 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389               Inexact Rounded
-precision:  22
-addx675 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023639                Inexact Rounded
-precision:  21
-addx676 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102364                 Inexact Rounded
-precision:  20
-addx677 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236                  Inexact Rounded
-precision:  19
-addx678 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211024                   Inexact Rounded
-precision:  18
-addx679 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102                    Inexact Rounded
-precision:  17
-addx680 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110                     Inexact Rounded
-precision:  16
-addx681 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211                      Inexact Rounded
-precision:  15
-addx682 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221                       Inexact Rounded
-precision:  14
-addx683 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422                        Inexact Rounded
-precision:  13
-addx684 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42                         Inexact Rounded
-precision:  12
-addx685 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4                          Inexact Rounded
-precision:  11
-addx686 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166                            Inexact Rounded
-precision:  10
-addx687 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117417E+10                        Inexact Rounded
-precision:   9
-addx688 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84711742E+10                         Inexact Rounded
-precision:   8
-addx689 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471174E+10                          Inexact Rounded
-precision:   7
-addx690 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117E+10                          Inexact Rounded
-precision:   6
-addx691 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84712E+10                          Inexact Rounded
-precision:   5
-addx692 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471E+10                          Inexact Rounded
-precision:   4
-addx693 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847E+10                          Inexact Rounded
-precision:   3
-addx694 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.85E+10                          Inexact Rounded
-precision:   2
-addx695 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8E+10                          Inexact Rounded
-precision:   1
-addx696 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 1E+11                          Inexact Rounded
-
--- more zeros, etc.
-rounding: half_up
-precision:   9
-
-addx701 add 5.00 1.00E-3 -> 5.00100
-addx702 add 00.00 0.000  -> 0.000
-addx703 add 00.00 0E-3   -> 0.000
-addx704 add 0E-3  00.00  -> 0.000
-
-addx710 add 0E+3  00.00  -> 0.00
-addx711 add 0E+3  00.0   -> 0.0
-addx712 add 0E+3  00.    -> 0
-addx713 add 0E+3  00.E+1 -> 0E+1
-addx714 add 0E+3  00.E+2 -> 0E+2
-addx715 add 0E+3  00.E+3 -> 0E+3
-addx716 add 0E+3  00.E+4 -> 0E+3
-addx717 add 0E+3  00.E+5 -> 0E+3
-addx718 add 0E+3  -00.0   -> 0.0
-addx719 add 0E+3  -00.    -> 0
-addx731 add 0E+3  -00.E+1 -> 0E+1
-
-addx720 add 00.00  0E+3  -> 0.00
-addx721 add 00.0   0E+3  -> 0.0
-addx722 add 00.    0E+3  -> 0
-addx723 add 00.E+1 0E+3  -> 0E+1
-addx724 add 00.E+2 0E+3  -> 0E+2
-addx725 add 00.E+3 0E+3  -> 0E+3
-addx726 add 00.E+4 0E+3  -> 0E+3
-addx727 add 00.E+5 0E+3  -> 0E+3
-addx728 add -00.00 0E+3  -> 0.00
-addx729 add -00.0  0E+3  -> 0.0
-addx730 add -00.   0E+3  -> 0
-
-addx732 add  0     0     ->  0
-addx733 add  0    -0     ->  0
-addx734 add -0     0     ->  0
-addx735 add -0    -0     -> -0     -- IEEE 854 special case
-
-addx736 add  1    -1     ->  0
-addx737 add -1    -1     -> -2
-addx738 add  1     1     ->  2
-addx739 add -1     1     ->  0
-
-addx741 add  0    -1     -> -1
-addx742 add -0    -1     -> -1
-addx743 add  0     1     ->  1
-addx744 add -0     1     ->  1
-addx745 add -1     0     -> -1
-addx746 add -1    -0     -> -1
-addx747 add  1     0     ->  1
-addx748 add  1    -0     ->  1
-
-addx751 add  0.0  -1     -> -1.0
-addx752 add -0.0  -1     -> -1.0
-addx753 add  0.0   1     ->  1.0
-addx754 add -0.0   1     ->  1.0
-addx755 add -1.0   0     -> -1.0
-addx756 add -1.0  -0     -> -1.0
-addx757 add  1.0   0     ->  1.0
-addx758 add  1.0  -0     ->  1.0
-
-addx761 add  0    -1.0   -> -1.0
-addx762 add -0    -1.0   -> -1.0
-addx763 add  0     1.0   ->  1.0
-addx764 add -0     1.0   ->  1.0
-addx765 add -1     0.0   -> -1.0
-addx766 add -1    -0.0   -> -1.0
-addx767 add  1     0.0   ->  1.0
-addx768 add  1    -0.0   ->  1.0
-
-addx771 add  0.0  -1.0   -> -1.0
-addx772 add -0.0  -1.0   -> -1.0
-addx773 add  0.0   1.0   ->  1.0
-addx774 add -0.0   1.0   ->  1.0
-addx775 add -1.0   0.0   -> -1.0
-addx776 add -1.0  -0.0   -> -1.0
-addx777 add  1.0   0.0   ->  1.0
-addx778 add  1.0  -0.0   ->  1.0
-
--- Specials
-addx780 add -Inf  -Inf   -> -Infinity
-addx781 add -Inf  -1000  -> -Infinity
-addx782 add -Inf  -1     -> -Infinity
-addx783 add -Inf  -0     -> -Infinity
-addx784 add -Inf   0     -> -Infinity
-addx785 add -Inf   1     -> -Infinity
-addx786 add -Inf   1000  -> -Infinity
-addx787 add -1000 -Inf   -> -Infinity
-addx788 add -Inf  -Inf   -> -Infinity
-addx789 add -1    -Inf   -> -Infinity
-addx790 add -0    -Inf   -> -Infinity
-addx791 add  0    -Inf   -> -Infinity
-addx792 add  1    -Inf   -> -Infinity
-addx793 add  1000 -Inf   -> -Infinity
-addx794 add  Inf  -Inf   ->  NaN  Invalid_operation
-
-addx800 add  Inf  -Inf   ->  NaN  Invalid_operation
-addx801 add  Inf  -1000  ->  Infinity
-addx802 add  Inf  -1     ->  Infinity
-addx803 add  Inf  -0     ->  Infinity
-addx804 add  Inf   0     ->  Infinity
-addx805 add  Inf   1     ->  Infinity
-addx806 add  Inf   1000  ->  Infinity
-addx807 add  Inf   Inf   ->  Infinity
-addx808 add -1000  Inf   ->  Infinity
-addx809 add -Inf   Inf   ->  NaN  Invalid_operation
-addx810 add -1     Inf   ->  Infinity
-addx811 add -0     Inf   ->  Infinity
-addx812 add  0     Inf   ->  Infinity
-addx813 add  1     Inf   ->  Infinity
-addx814 add  1000  Inf   ->  Infinity
-addx815 add  Inf   Inf   ->  Infinity
-
-addx821 add  NaN -Inf    ->  NaN
-addx822 add  NaN -1000   ->  NaN
-addx823 add  NaN -1      ->  NaN
-addx824 add  NaN -0      ->  NaN
-addx825 add  NaN  0      ->  NaN
-addx826 add  NaN  1      ->  NaN
-addx827 add  NaN  1000   ->  NaN
-addx828 add  NaN  Inf    ->  NaN
-addx829 add  NaN  NaN    ->  NaN
-addx830 add -Inf  NaN    ->  NaN
-addx831 add -1000 NaN    ->  NaN
-addx832 add -1    NaN    ->  NaN
-addx833 add -0    NaN    ->  NaN
-addx834 add  0    NaN    ->  NaN
-addx835 add  1    NaN    ->  NaN
-addx836 add  1000 NaN    ->  NaN
-addx837 add  Inf  NaN    ->  NaN
-
-addx841 add  sNaN -Inf   ->  NaN  Invalid_operation
-addx842 add  sNaN -1000  ->  NaN  Invalid_operation
-addx843 add  sNaN -1     ->  NaN  Invalid_operation
-addx844 add  sNaN -0     ->  NaN  Invalid_operation
-addx845 add  sNaN  0     ->  NaN  Invalid_operation
-addx846 add  sNaN  1     ->  NaN  Invalid_operation
-addx847 add  sNaN  1000  ->  NaN  Invalid_operation
-addx848 add  sNaN  NaN   ->  NaN  Invalid_operation
-addx849 add  sNaN sNaN   ->  NaN  Invalid_operation
-addx850 add  NaN  sNaN   ->  NaN  Invalid_operation
-addx851 add -Inf  sNaN   ->  NaN  Invalid_operation
-addx852 add -1000 sNaN   ->  NaN  Invalid_operation
-addx853 add -1    sNaN   ->  NaN  Invalid_operation
-addx854 add -0    sNaN   ->  NaN  Invalid_operation
-addx855 add  0    sNaN   ->  NaN  Invalid_operation
-addx856 add  1    sNaN   ->  NaN  Invalid_operation
-addx857 add  1000 sNaN   ->  NaN  Invalid_operation
-addx858 add  Inf  sNaN   ->  NaN  Invalid_operation
-addx859 add  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-addx861 add  NaN1   -Inf    ->  NaN1
-addx862 add +NaN2   -1000   ->  NaN2
-addx863 add  NaN3    1000   ->  NaN3
-addx864 add  NaN4    Inf    ->  NaN4
-addx865 add  NaN5   +NaN6   ->  NaN5
-addx866 add -Inf     NaN7   ->  NaN7
-addx867 add -1000    NaN8   ->  NaN8
-addx868 add  1000    NaN9   ->  NaN9
-addx869 add  Inf    +NaN10  ->  NaN10
-addx871 add  sNaN11  -Inf   ->  NaN11  Invalid_operation
-addx872 add  sNaN12  -1000  ->  NaN12  Invalid_operation
-addx873 add  sNaN13   1000  ->  NaN13  Invalid_operation
-addx874 add  sNaN14   NaN17 ->  NaN14  Invalid_operation
-addx875 add  sNaN15  sNaN18 ->  NaN15  Invalid_operation
-addx876 add  NaN16   sNaN19 ->  NaN19  Invalid_operation
-addx877 add -Inf    +sNaN20 ->  NaN20  Invalid_operation
-addx878 add -1000    sNaN21 ->  NaN21  Invalid_operation
-addx879 add  1000    sNaN22 ->  NaN22  Invalid_operation
-addx880 add  Inf     sNaN23 ->  NaN23  Invalid_operation
-addx881 add +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-addx882 add -NaN26    NaN28 -> -NaN26
-addx883 add -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-addx884 add  1000    -NaN30 -> -NaN30
-addx885 add  1000   -sNaN31 -> -NaN31  Invalid_operation
-
--- overflow, underflow and subnormal tests
-maxexponent: 999999999
-minexponent: -999999999
-precision: 9
-addx890 add 1E+999999999     9E+999999999   -> Infinity Overflow Inexact Rounded
-addx891 add 9E+999999999     1E+999999999   -> Infinity Overflow Inexact Rounded
-addx892 add -1.1E-999999999  1E-999999999   -> -1E-1000000000    Subnormal
-addx893 add 1E-999999999    -1.1e-999999999 -> -1E-1000000000    Subnormal
-addx894 add -1.0001E-999999999  1E-999999999   -> -1E-1000000003 Subnormal
-addx895 add 1E-999999999    -1.0001e-999999999 -> -1E-1000000003 Subnormal
-addx896 add -1E+999999999   -9E+999999999   -> -Infinity Overflow Inexact Rounded
-addx897 add -9E+999999999   -1E+999999999   -> -Infinity Overflow Inexact Rounded
-addx898 add +1.1E-999999999 -1E-999999999   -> 1E-1000000000    Subnormal
-addx899 add -1E-999999999   +1.1e-999999999 -> 1E-1000000000    Subnormal
-addx900 add +1.0001E-999999999 -1E-999999999   -> 1E-1000000003 Subnormal
-addx901 add -1E-999999999   +1.0001e-999999999 -> 1E-1000000003 Subnormal
-addx902 add -1E+999999999   +9E+999999999   ->  8E+999999999
-addx903 add -9E+999999999   +1E+999999999   -> -8E+999999999
-
-precision: 3
-addx904 add      0 -9.999E+999999999   -> -Infinity Inexact Overflow Rounded
-addx905 add        -9.999E+999999999 0 -> -Infinity Inexact Overflow Rounded
-addx906 add      0  9.999E+999999999   ->  Infinity Inexact Overflow Rounded
-addx907 add         9.999E+999999999 0 ->  Infinity Inexact Overflow Rounded
-
-precision: 3
-maxexponent: 999
-minexponent: -999
-addx910 add  1.00E-999   0    ->   1.00E-999
-addx911 add  0.1E-999    0    ->   1E-1000   Subnormal
-addx912 add  0.10E-999   0    ->   1.0E-1000 Subnormal
-addx913 add  0.100E-999  0    ->   1.0E-1000 Subnormal Rounded
-addx914 add  0.01E-999   0    ->   1E-1001   Subnormal
--- next is rounded to Nmin
-addx915 add  0.999E-999  0    ->   1.00E-999 Inexact Rounded Subnormal Underflow
-addx916 add  0.099E-999  0    ->   1.0E-1000 Inexact Rounded Subnormal Underflow
-addx917 add  0.009E-999  0    ->   1E-1001   Inexact Rounded Subnormal Underflow
-addx918 add  0.001E-999  0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-addx919 add  0.0009E-999 0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-addx920 add  0.0001E-999 0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
-addx930 add -1.00E-999   0    ->  -1.00E-999
-addx931 add -0.1E-999    0    ->  -1E-1000   Subnormal
-addx932 add -0.10E-999   0    ->  -1.0E-1000 Subnormal
-addx933 add -0.100E-999  0    ->  -1.0E-1000 Subnormal Rounded
-addx934 add -0.01E-999   0    ->  -1E-1001   Subnormal
--- next is rounded to Nmin
-addx935 add -0.999E-999  0    ->  -1.00E-999 Inexact Rounded Subnormal Underflow
-addx936 add -0.099E-999  0    ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
-addx937 add -0.009E-999  0    ->  -1E-1001   Inexact Rounded Subnormal Underflow
-addx938 add -0.001E-999  0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-addx939 add -0.0009E-999 0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-addx940 add -0.0001E-999 0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
--- some non-zero subnormal adds
-addx950 add  1.00E-999    0.1E-999  ->   1.10E-999
-addx951 add  0.1E-999     0.1E-999  ->   2E-1000    Subnormal
-addx952 add  0.10E-999    0.1E-999  ->   2.0E-1000  Subnormal
-addx953 add  0.100E-999   0.1E-999  ->   2.0E-1000  Subnormal Rounded
-addx954 add  0.01E-999    0.1E-999  ->   1.1E-1000  Subnormal
-addx955 add  0.999E-999   0.1E-999  ->   1.10E-999  Inexact Rounded
-addx956 add  0.099E-999   0.1E-999  ->   2.0E-1000  Inexact Rounded Subnormal Underflow
-addx957 add  0.009E-999   0.1E-999  ->   1.1E-1000  Inexact Rounded Subnormal Underflow
-addx958 add  0.001E-999   0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow
-addx959 add  0.0009E-999  0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow
-addx960 add  0.0001E-999  0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow
--- negatives...
-addx961 add  1.00E-999   -0.1E-999  ->   9.0E-1000  Subnormal
-addx962 add  0.1E-999    -0.1E-999  ->   0E-1000
-addx963 add  0.10E-999   -0.1E-999  ->   0E-1001
-addx964 add  0.100E-999  -0.1E-999  ->   0E-1001    Clamped
-addx965 add  0.01E-999   -0.1E-999  ->   -9E-1001   Subnormal
-addx966 add  0.999E-999  -0.1E-999  ->   9.0E-1000  Inexact Rounded Subnormal Underflow
-addx967 add  0.099E-999  -0.1E-999  ->   -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-addx968 add  0.009E-999  -0.1E-999  ->   -9E-1001   Inexact Rounded Subnormal Underflow
-addx969 add  0.001E-999  -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
-addx970 add  0.0009E-999 -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
-addx971 add  0.0001E-999 -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
-
--- some 'real' numbers
-maxExponent: 384
-minExponent: -383
-precision: 8
-addx566 add 99999061735E-394  0E-394 -> 9.999906E-384 Inexact Rounded Underflow Subnormal
-precision: 7
-addx567 add 99999061735E-394  0E-394 -> 9.99991E-384 Inexact Rounded Underflow Subnormal
-precision: 6
-addx568 add 99999061735E-394  0E-394 -> 9.9999E-384 Inexact Rounded Underflow Subnormal
-
--- now the case where we can get underflow but the result is normal
--- [note this can't happen if the operands are also bounded, as we
--- cannot represent 1E-399, for example]
-precision:   16
-rounding:    half_up
-maxExponent: 384
-minExponent: -383
-
-addx571 add       1E-383       0  -> 1E-383
-addx572 add       1E-384       0  -> 1E-384   Subnormal
-addx573 add       1E-383  1E-384  -> 1.1E-383
-addx574 subtract  1E-383  1E-384  ->   9E-384 Subnormal
-
--- Here we explore the boundary of rounding a subnormal to Nmin
-addx575 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
-addx576 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
-addx577 subtract  1E-383  1E-399  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-addx578 subtract  1E-383  1E-400  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-addx579 subtract  1E-383  1E-401  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-addx580 subtract  1E-383  1E-402  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-
--- check overflow edge case
-precision:   7
-rounding:    half_up
-maxExponent: 96
-minExponent: -95
-addx972 apply   9.999999E+96         -> 9.999999E+96
-addx973 add     9.999999E+96  1      -> 9.999999E+96 Inexact Rounded
-addx974 add      9999999E+90  1      -> 9.999999E+96 Inexact Rounded
-addx975 add      9999999E+90  1E+90  -> Infinity Overflow Inexact Rounded
-addx976 add      9999999E+90  9E+89  -> Infinity Overflow Inexact Rounded
-addx977 add      9999999E+90  8E+89  -> Infinity Overflow Inexact Rounded
-addx978 add      9999999E+90  7E+89  -> Infinity Overflow Inexact Rounded
-addx979 add      9999999E+90  6E+89  -> Infinity Overflow Inexact Rounded
-addx980 add      9999999E+90  5E+89  -> Infinity Overflow Inexact Rounded
-addx981 add      9999999E+90  4E+89  -> 9.999999E+96 Inexact Rounded
-addx982 add      9999999E+90  3E+89  -> 9.999999E+96 Inexact Rounded
-addx983 add      9999999E+90  2E+89  -> 9.999999E+96 Inexact Rounded
-addx984 add      9999999E+90  1E+89  -> 9.999999E+96 Inexact Rounded
-
-addx985 apply  -9.999999E+96         -> -9.999999E+96
-addx986 add    -9.999999E+96 -1      -> -9.999999E+96 Inexact Rounded
-addx987 add     -9999999E+90 -1      -> -9.999999E+96 Inexact Rounded
-addx988 add     -9999999E+90 -1E+90  -> -Infinity Overflow Inexact Rounded
-addx989 add     -9999999E+90 -9E+89  -> -Infinity Overflow Inexact Rounded
-addx990 add     -9999999E+90 -8E+89  -> -Infinity Overflow Inexact Rounded
-addx991 add     -9999999E+90 -7E+89  -> -Infinity Overflow Inexact Rounded
-addx992 add     -9999999E+90 -6E+89  -> -Infinity Overflow Inexact Rounded
-addx993 add     -9999999E+90 -5E+89  -> -Infinity Overflow Inexact Rounded
-addx994 add     -9999999E+90 -4E+89  -> -9.999999E+96 Inexact Rounded
-addx995 add     -9999999E+90 -3E+89  -> -9.999999E+96 Inexact Rounded
-addx996 add     -9999999E+90 -2E+89  -> -9.999999E+96 Inexact Rounded
-addx997 add     -9999999E+90 -1E+89  -> -9.999999E+96 Inexact Rounded
-
--- check for double-rounded subnormals
-precision:   5
-maxexponent: 79
-minexponent: -79
--- Add: lhs and rhs 0
-addx1001 add       1.52444E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-addx1002 add       1.52445E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-addx1003 add       1.52446E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-addx1004 add       0 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-addx1005 add       0 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-addx1006 add       0 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-
--- Add: lhs >> rhs and vice versa
-addx1011 add       1.52444E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-addx1012 add       1.52445E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-addx1013 add       1.52446E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-addx1014 add       1E-100 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-addx1015 add       1E-100 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-addx1016 add       1E-100 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-
--- Add: lhs + rhs addition carried out
-addx1021 add       1.52443E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow
-addx1022 add       1.52444E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow
-addx1023 add       1.52445E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow
-addx1024 add       1.00001E-80  1.52443E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow
-addx1025 add       1.00001E-80  1.52444E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow
-addx1026 add       1.00001E-80  1.52445E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow
-
--- And for round down full and subnormal results
-precision:    16
-maxExponent: +384
-minExponent: -383
-rounding:     down
-
-addx1100 add 1e+2 -1e-383    -> 99.99999999999999 Rounded Inexact
-addx1101 add 1e+1 -1e-383    -> 9.999999999999999  Rounded Inexact
-addx1103 add   +1 -1e-383    -> 0.9999999999999999  Rounded Inexact
-addx1104 add 1e-1 -1e-383    -> 0.09999999999999999  Rounded Inexact
-addx1105 add 1e-2 -1e-383    -> 0.009999999999999999  Rounded Inexact
-addx1106 add 1e-3 -1e-383    -> 0.0009999999999999999  Rounded Inexact
-addx1107 add 1e-4 -1e-383    -> 0.00009999999999999999  Rounded Inexact
-addx1108 add 1e-5 -1e-383    -> 0.000009999999999999999  Rounded Inexact
-addx1109 add 1e-6 -1e-383    -> 9.999999999999999E-7  Rounded Inexact
-
-rounding:     ceiling
-addx1110 add -1e+2 +1e-383   -> -99.99999999999999 Rounded Inexact
-addx1111 add -1e+1 +1e-383   -> -9.999999999999999  Rounded Inexact
-addx1113 add    -1 +1e-383   -> -0.9999999999999999  Rounded Inexact
-addx1114 add -1e-1 +1e-383   -> -0.09999999999999999  Rounded Inexact
-addx1115 add -1e-2 +1e-383   -> -0.009999999999999999  Rounded Inexact
-addx1116 add -1e-3 +1e-383   -> -0.0009999999999999999  Rounded Inexact
-addx1117 add -1e-4 +1e-383   -> -0.00009999999999999999  Rounded Inexact
-addx1118 add -1e-5 +1e-383   -> -0.000009999999999999999  Rounded Inexact
-addx1119 add -1e-6 +1e-383   -> -9.999999999999999E-7  Rounded Inexact
-addx1120 add +1e-383 -1e+2   -> -99.99999999999999 Rounded Inexact
-addx1121 add +1e-383 -1e+1   -> -9.999999999999999  Rounded Inexact
-addx1123 add +1e-383    -1   -> -0.9999999999999999  Rounded Inexact
-addx1124 add +1e-383 -1e-1   -> -0.09999999999999999  Rounded Inexact
-addx1125 add +1e-383 -1e-2   -> -0.009999999999999999  Rounded Inexact
-addx1126 add +1e-383 -1e-3   -> -0.0009999999999999999  Rounded Inexact
-addx1127 add +1e-383 -1e-4   -> -0.00009999999999999999  Rounded Inexact
-addx1128 add +1e-383 -1e-5   -> -0.000009999999999999999  Rounded Inexact
-addx1129 add +1e-383 -1e-6   -> -9.999999999999999E-7  Rounded Inexact
-
-rounding:     down
-precision:    7
-maxExponent: +96
-minExponent: -95
-addx1130 add   1            -1e-200  -> 0.9999999  Rounded Inexact
--- subnormal boundary
-addx1131 add   1.000000E-94  -1e-200  ->  9.999999E-95  Rounded Inexact
-addx1132 add   1.000001E-95  -1e-200  ->  1.000000E-95  Rounded Inexact
-addx1133 add   1.000000E-95  -1e-200  ->  9.99999E-96  Rounded Inexact Subnormal Underflow
-addx1134 add   0.999999E-95  -1e-200  ->  9.99998E-96  Rounded Inexact Subnormal Underflow
-addx1135 add   0.001000E-95  -1e-200  ->  9.99E-99  Rounded Inexact Subnormal Underflow
-addx1136 add   0.000999E-95  -1e-200  ->  9.98E-99  Rounded Inexact Subnormal Underflow
-addx1137 add   1.000000E-95  -1e-101  ->  9.99999E-96  Subnormal
-addx1138 add      10000E-101 -1e-200  ->  9.999E-98  Subnormal Inexact Rounded Underflow
-addx1139 add       1000E-101 -1e-200  ->  9.99E-99   Subnormal Inexact Rounded Underflow
-addx1140 add        100E-101 -1e-200  ->  9.9E-100   Subnormal Inexact Rounded Underflow
-addx1141 add         10E-101 -1e-200  ->  9E-101     Subnormal Inexact Rounded Underflow
-addx1142 add          1E-101 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
-addx1143 add          0E-101 -1e-200  -> -0E-101     Subnormal Inexact Rounded Underflow Clamped
-addx1144 add          1E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
-
-addx1151 add      10000E-102 -1e-200  ->  9.99E-99  Subnormal Inexact Rounded Underflow
-addx1152 add       1000E-102 -1e-200  ->  9.9E-100  Subnormal Inexact Rounded Underflow
-addx1153 add        100E-102 -1e-200  ->  9E-101   Subnormal Inexact Rounded Underflow
-addx1154 add         10E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
-addx1155 add          1E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
-addx1156 add          0E-102 -1e-200  -> -0E-101     Subnormal Inexact Rounded Underflow Clamped
-addx1157 add          1E-103 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
-
-addx1160 add        100E-105 -1e-101  -> -0E-101 Subnormal Inexact Rounded Underflow Clamped
-addx1161 add        100E-105 -1e-201  ->  0E-101 Subnormal Inexact Rounded Underflow Clamped
-
--- tests based on Gunnar Degnbol's edge case
-precision:   15
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
-addx1200 add 1E15  -0.5                 ->  1.00000000000000E+15 Inexact Rounded
-addx1201 add 1E15  -0.50                ->  1.00000000000000E+15 Inexact Rounded
-addx1210 add 1E15  -0.51                ->  999999999999999      Inexact Rounded
-addx1211 add 1E15  -0.501               ->  999999999999999      Inexact Rounded
-addx1212 add 1E15  -0.5001              ->  999999999999999      Inexact Rounded
-addx1213 add 1E15  -0.50001             ->  999999999999999      Inexact Rounded
-addx1214 add 1E15  -0.500001            ->  999999999999999      Inexact Rounded
-addx1215 add 1E15  -0.5000001           ->  999999999999999      Inexact Rounded
-addx1216 add 1E15  -0.50000001          ->  999999999999999      Inexact Rounded
-addx1217 add 1E15  -0.500000001         ->  999999999999999      Inexact Rounded
-addx1218 add 1E15  -0.5000000001        ->  999999999999999      Inexact Rounded
-addx1219 add 1E15  -0.50000000001       ->  999999999999999      Inexact Rounded
-addx1220 add 1E15  -0.500000000001      ->  999999999999999      Inexact Rounded
-addx1221 add 1E15  -0.5000000000001     ->  999999999999999      Inexact Rounded
-addx1222 add 1E15  -0.50000000000001    ->  999999999999999      Inexact Rounded
-addx1223 add 1E15  -0.500000000000001   ->  999999999999999      Inexact Rounded
-addx1224 add 1E15  -0.5000000000000001  ->  999999999999999      Inexact Rounded
-addx1225 add 1E15  -0.5000000000000000  ->  1.00000000000000E+15 Inexact Rounded
-addx1230 add 1E15  -5000000.000000001   ->  999999995000000      Inexact Rounded
-
-precision:   16
-
-addx1300 add 1E16  -0.5                 ->  1.000000000000000E+16 Inexact Rounded
-addx1310 add 1E16  -0.51                ->  9999999999999999      Inexact Rounded
-addx1311 add 1E16  -0.501               ->  9999999999999999      Inexact Rounded
-addx1312 add 1E16  -0.5001              ->  9999999999999999      Inexact Rounded
-addx1313 add 1E16  -0.50001             ->  9999999999999999      Inexact Rounded
-addx1314 add 1E16  -0.500001            ->  9999999999999999      Inexact Rounded
-addx1315 add 1E16  -0.5000001           ->  9999999999999999      Inexact Rounded
-addx1316 add 1E16  -0.50000001          ->  9999999999999999      Inexact Rounded
-addx1317 add 1E16  -0.500000001         ->  9999999999999999      Inexact Rounded
-addx1318 add 1E16  -0.5000000001        ->  9999999999999999      Inexact Rounded
-addx1319 add 1E16  -0.50000000001       ->  9999999999999999      Inexact Rounded
-addx1320 add 1E16  -0.500000000001      ->  9999999999999999      Inexact Rounded
-addx1321 add 1E16  -0.5000000000001     ->  9999999999999999      Inexact Rounded
-addx1322 add 1E16  -0.50000000000001    ->  9999999999999999      Inexact Rounded
-addx1323 add 1E16  -0.500000000000001   ->  9999999999999999      Inexact Rounded
-addx1324 add 1E16  -0.5000000000000001  ->  9999999999999999      Inexact Rounded
-addx1325 add 1E16  -0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
-addx1326 add 1E16  -0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
-addx1327 add 1E16  -0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
-addx1328 add 1E16  -0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
-addx1329 add 1E16  -0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
-addx1330 add 1E16  -0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
-addx1331 add 1E16  -0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
-addx1332 add 1E16  -0.500000000         ->  1.000000000000000E+16 Inexact Rounded
-addx1333 add 1E16  -0.50000000          ->  1.000000000000000E+16 Inexact Rounded
-addx1334 add 1E16  -0.5000000           ->  1.000000000000000E+16 Inexact Rounded
-addx1335 add 1E16  -0.500000            ->  1.000000000000000E+16 Inexact Rounded
-addx1336 add 1E16  -0.50000             ->  1.000000000000000E+16 Inexact Rounded
-addx1337 add 1E16  -0.5000              ->  1.000000000000000E+16 Inexact Rounded
-addx1338 add 1E16  -0.500               ->  1.000000000000000E+16 Inexact Rounded
-addx1339 add 1E16  -0.50                ->  1.000000000000000E+16 Inexact Rounded
-
-addx1340 add 1E16  -5000000.000010001   ->  9999999995000000      Inexact Rounded
-addx1341 add 1E16  -5000000.000000001   ->  9999999995000000      Inexact Rounded
-
-addx1349 add 9999999999999999 0.4                 ->  9999999999999999      Inexact Rounded
-addx1350 add 9999999999999999 0.49                ->  9999999999999999      Inexact Rounded
-addx1351 add 9999999999999999 0.499               ->  9999999999999999      Inexact Rounded
-addx1352 add 9999999999999999 0.4999              ->  9999999999999999      Inexact Rounded
-addx1353 add 9999999999999999 0.49999             ->  9999999999999999      Inexact Rounded
-addx1354 add 9999999999999999 0.499999            ->  9999999999999999      Inexact Rounded
-addx1355 add 9999999999999999 0.4999999           ->  9999999999999999      Inexact Rounded
-addx1356 add 9999999999999999 0.49999999          ->  9999999999999999      Inexact Rounded
-addx1357 add 9999999999999999 0.499999999         ->  9999999999999999      Inexact Rounded
-addx1358 add 9999999999999999 0.4999999999        ->  9999999999999999      Inexact Rounded
-addx1359 add 9999999999999999 0.49999999999       ->  9999999999999999      Inexact Rounded
-addx1360 add 9999999999999999 0.499999999999      ->  9999999999999999      Inexact Rounded
-addx1361 add 9999999999999999 0.4999999999999     ->  9999999999999999      Inexact Rounded
-addx1362 add 9999999999999999 0.49999999999999    ->  9999999999999999      Inexact Rounded
-addx1363 add 9999999999999999 0.499999999999999   ->  9999999999999999      Inexact Rounded
-addx1364 add 9999999999999999 0.4999999999999999  ->  9999999999999999      Inexact Rounded
-addx1365 add 9999999999999999 0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
-addx1367 add 9999999999999999 0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
-addx1368 add 9999999999999999 0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
-addx1369 add 9999999999999999 0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
-addx1370 add 9999999999999999 0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
-addx1371 add 9999999999999999 0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
-addx1372 add 9999999999999999 0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
-addx1373 add 9999999999999999 0.500000000         ->  1.000000000000000E+16 Inexact Rounded
-addx1374 add 9999999999999999 0.50000000          ->  1.000000000000000E+16 Inexact Rounded
-addx1375 add 9999999999999999 0.5000000           ->  1.000000000000000E+16 Inexact Rounded
-addx1376 add 9999999999999999 0.500000            ->  1.000000000000000E+16 Inexact Rounded
-addx1377 add 9999999999999999 0.50000             ->  1.000000000000000E+16 Inexact Rounded
-addx1378 add 9999999999999999 0.5000              ->  1.000000000000000E+16 Inexact Rounded
-addx1379 add 9999999999999999 0.500               ->  1.000000000000000E+16 Inexact Rounded
-addx1380 add 9999999999999999 0.50                ->  1.000000000000000E+16 Inexact Rounded
-addx1381 add 9999999999999999 0.5                 ->  1.000000000000000E+16 Inexact Rounded
-addx1382 add 9999999999999999 0.5000000000000001  ->  1.000000000000000E+16 Inexact Rounded
-addx1383 add 9999999999999999 0.500000000000001   ->  1.000000000000000E+16 Inexact Rounded
-addx1384 add 9999999999999999 0.50000000000001    ->  1.000000000000000E+16 Inexact Rounded
-addx1385 add 9999999999999999 0.5000000000001     ->  1.000000000000000E+16 Inexact Rounded
-addx1386 add 9999999999999999 0.500000000001      ->  1.000000000000000E+16 Inexact Rounded
-addx1387 add 9999999999999999 0.50000000001       ->  1.000000000000000E+16 Inexact Rounded
-addx1388 add 9999999999999999 0.5000000001        ->  1.000000000000000E+16 Inexact Rounded
-addx1389 add 9999999999999999 0.500000001         ->  1.000000000000000E+16 Inexact Rounded
-addx1390 add 9999999999999999 0.50000001          ->  1.000000000000000E+16 Inexact Rounded
-addx1391 add 9999999999999999 0.5000001           ->  1.000000000000000E+16 Inexact Rounded
-addx1392 add 9999999999999999 0.500001            ->  1.000000000000000E+16 Inexact Rounded
-addx1393 add 9999999999999999 0.50001             ->  1.000000000000000E+16 Inexact Rounded
-addx1394 add 9999999999999999 0.5001              ->  1.000000000000000E+16 Inexact Rounded
-addx1395 add 9999999999999999 0.501               ->  1.000000000000000E+16 Inexact Rounded
-addx1396 add 9999999999999999 0.51                ->  1.000000000000000E+16 Inexact Rounded
-
--- More GD edge cases, where difference between the unadjusted
--- exponents is larger than the maximum precision and one side is 0
-precision:   15
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
-addx1400 add  0 1.23456789012345     -> 1.23456789012345
-addx1401 add  0 1.23456789012345E-1  -> 0.123456789012345
-addx1402 add  0 1.23456789012345E-2  -> 0.0123456789012345
-addx1403 add  0 1.23456789012345E-3  -> 0.00123456789012345
-addx1404 add  0 1.23456789012345E-4  -> 0.000123456789012345
-addx1405 add  0 1.23456789012345E-5  -> 0.0000123456789012345
-addx1406 add  0 1.23456789012345E-6  -> 0.00000123456789012345
-addx1407 add  0 1.23456789012345E-7  -> 1.23456789012345E-7
-addx1408 add  0 1.23456789012345E-8  -> 1.23456789012345E-8
-addx1409 add  0 1.23456789012345E-9  -> 1.23456789012345E-9
-addx1410 add  0 1.23456789012345E-10 -> 1.23456789012345E-10
-addx1411 add  0 1.23456789012345E-11 -> 1.23456789012345E-11
-addx1412 add  0 1.23456789012345E-12 -> 1.23456789012345E-12
-addx1413 add  0 1.23456789012345E-13 -> 1.23456789012345E-13
-addx1414 add  0 1.23456789012345E-14 -> 1.23456789012345E-14
-addx1415 add  0 1.23456789012345E-15 -> 1.23456789012345E-15
-addx1416 add  0 1.23456789012345E-16 -> 1.23456789012345E-16
-addx1417 add  0 1.23456789012345E-17 -> 1.23456789012345E-17
-addx1418 add  0 1.23456789012345E-18 -> 1.23456789012345E-18
-addx1419 add  0 1.23456789012345E-19 -> 1.23456789012345E-19
-
--- same, precision 16..
-precision:   16
-addx1420 add  0 1.123456789012345     -> 1.123456789012345
-addx1421 add  0 1.123456789012345E-1  -> 0.1123456789012345
-addx1422 add  0 1.123456789012345E-2  -> 0.01123456789012345
-addx1423 add  0 1.123456789012345E-3  -> 0.001123456789012345
-addx1424 add  0 1.123456789012345E-4  -> 0.0001123456789012345
-addx1425 add  0 1.123456789012345E-5  -> 0.00001123456789012345
-addx1426 add  0 1.123456789012345E-6  -> 0.000001123456789012345
-addx1427 add  0 1.123456789012345E-7  -> 1.123456789012345E-7
-addx1428 add  0 1.123456789012345E-8  -> 1.123456789012345E-8
-addx1429 add  0 1.123456789012345E-9  -> 1.123456789012345E-9
-addx1430 add  0 1.123456789012345E-10 -> 1.123456789012345E-10
-addx1431 add  0 1.123456789012345E-11 -> 1.123456789012345E-11
-addx1432 add  0 1.123456789012345E-12 -> 1.123456789012345E-12
-addx1433 add  0 1.123456789012345E-13 -> 1.123456789012345E-13
-addx1434 add  0 1.123456789012345E-14 -> 1.123456789012345E-14
-addx1435 add  0 1.123456789012345E-15 -> 1.123456789012345E-15
-addx1436 add  0 1.123456789012345E-16 -> 1.123456789012345E-16
-addx1437 add  0 1.123456789012345E-17 -> 1.123456789012345E-17
-addx1438 add  0 1.123456789012345E-18 -> 1.123456789012345E-18
-addx1439 add  0 1.123456789012345E-19 -> 1.123456789012345E-19
-
--- same, reversed 0
-addx1440 add 1.123456789012345     0 -> 1.123456789012345
-addx1441 add 1.123456789012345E-1  0 -> 0.1123456789012345
-addx1442 add 1.123456789012345E-2  0 -> 0.01123456789012345
-addx1443 add 1.123456789012345E-3  0 -> 0.001123456789012345
-addx1444 add 1.123456789012345E-4  0 -> 0.0001123456789012345
-addx1445 add 1.123456789012345E-5  0 -> 0.00001123456789012345
-addx1446 add 1.123456789012345E-6  0 -> 0.000001123456789012345
-addx1447 add 1.123456789012345E-7  0 -> 1.123456789012345E-7
-addx1448 add 1.123456789012345E-8  0 -> 1.123456789012345E-8
-addx1449 add 1.123456789012345E-9  0 -> 1.123456789012345E-9
-addx1450 add 1.123456789012345E-10 0 -> 1.123456789012345E-10
-addx1451 add 1.123456789012345E-11 0 -> 1.123456789012345E-11
-addx1452 add 1.123456789012345E-12 0 -> 1.123456789012345E-12
-addx1453 add 1.123456789012345E-13 0 -> 1.123456789012345E-13
-addx1454 add 1.123456789012345E-14 0 -> 1.123456789012345E-14
-addx1455 add 1.123456789012345E-15 0 -> 1.123456789012345E-15
-addx1456 add 1.123456789012345E-16 0 -> 1.123456789012345E-16
-addx1457 add 1.123456789012345E-17 0 -> 1.123456789012345E-17
-addx1458 add 1.123456789012345E-18 0 -> 1.123456789012345E-18
-addx1459 add 1.123456789012345E-19 0 -> 1.123456789012345E-19
-
--- same, Es on the 0
-addx1460 add 1.123456789012345  0E-0   -> 1.123456789012345
-addx1461 add 1.123456789012345  0E-1   -> 1.123456789012345
-addx1462 add 1.123456789012345  0E-2   -> 1.123456789012345
-addx1463 add 1.123456789012345  0E-3   -> 1.123456789012345
-addx1464 add 1.123456789012345  0E-4   -> 1.123456789012345
-addx1465 add 1.123456789012345  0E-5   -> 1.123456789012345
-addx1466 add 1.123456789012345  0E-6   -> 1.123456789012345
-addx1467 add 1.123456789012345  0E-7   -> 1.123456789012345
-addx1468 add 1.123456789012345  0E-8   -> 1.123456789012345
-addx1469 add 1.123456789012345  0E-9   -> 1.123456789012345
-addx1470 add 1.123456789012345  0E-10  -> 1.123456789012345
-addx1471 add 1.123456789012345  0E-11  -> 1.123456789012345
-addx1472 add 1.123456789012345  0E-12  -> 1.123456789012345
-addx1473 add 1.123456789012345  0E-13  -> 1.123456789012345
-addx1474 add 1.123456789012345  0E-14  -> 1.123456789012345
-addx1475 add 1.123456789012345  0E-15  -> 1.123456789012345
--- next four flag Rounded because the 0 extends the result
-addx1476 add 1.123456789012345  0E-16  -> 1.123456789012345 Rounded
-addx1477 add 1.123456789012345  0E-17  -> 1.123456789012345 Rounded
-addx1478 add 1.123456789012345  0E-18  -> 1.123456789012345 Rounded
-addx1479 add 1.123456789012345  0E-19  -> 1.123456789012345 Rounded
-
--- sum of two opposite-sign operands is exactly 0 and floor => -0
-precision:   16
-maxExponent: 384
-minexponent: -383
-
-rounding:    half_up
--- exact zeros from zeros
-addx1500 add  0        0E-19  ->  0E-19
-addx1501 add -0        0E-19  ->  0E-19
-addx1502 add  0       -0E-19  ->  0E-19
-addx1503 add -0       -0E-19  -> -0E-19
-addx1504 add  0E-400   0E-19  ->  0E-398 Clamped
-addx1505 add -0E-400   0E-19  ->  0E-398 Clamped
-addx1506 add  0E-400  -0E-19  ->  0E-398 Clamped
-addx1507 add -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-addx1511 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1512 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1513 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1514 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-addx1515 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1516 add -1E-401   1E-401 ->  0E-398 Clamped
-addx1517 add  1E-401  -1E-401 ->  0E-398 Clamped
-addx1518 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    half_down
--- exact zeros from zeros
-addx1520 add  0        0E-19  ->  0E-19
-addx1521 add -0        0E-19  ->  0E-19
-addx1522 add  0       -0E-19  ->  0E-19
-addx1523 add -0       -0E-19  -> -0E-19
-addx1524 add  0E-400   0E-19  ->  0E-398 Clamped
-addx1525 add -0E-400   0E-19  ->  0E-398 Clamped
-addx1526 add  0E-400  -0E-19  ->  0E-398 Clamped
-addx1527 add -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-addx1531 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1532 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1533 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1534 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-addx1535 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1536 add -1E-401   1E-401 ->  0E-398 Clamped
-addx1537 add  1E-401  -1E-401 ->  0E-398 Clamped
-addx1538 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    half_even
--- exact zeros from zeros
-addx1540 add  0        0E-19  ->  0E-19
-addx1541 add -0        0E-19  ->  0E-19
-addx1542 add  0       -0E-19  ->  0E-19
-addx1543 add -0       -0E-19  -> -0E-19
-addx1544 add  0E-400   0E-19  ->  0E-398 Clamped
-addx1545 add -0E-400   0E-19  ->  0E-398 Clamped
-addx1546 add  0E-400  -0E-19  ->  0E-398 Clamped
-addx1547 add -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-addx1551 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1552 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1553 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1554 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-addx1555 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1556 add -1E-401   1E-401 ->  0E-398 Clamped
-addx1557 add  1E-401  -1E-401 ->  0E-398 Clamped
-addx1558 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    up
--- exact zeros from zeros
-addx1560 add  0        0E-19  ->  0E-19
-addx1561 add -0        0E-19  ->  0E-19
-addx1562 add  0       -0E-19  ->  0E-19
-addx1563 add -0       -0E-19  -> -0E-19
-addx1564 add  0E-400   0E-19  ->  0E-398 Clamped
-addx1565 add -0E-400   0E-19  ->  0E-398 Clamped
-addx1566 add  0E-400  -0E-19  ->  0E-398 Clamped
-addx1567 add -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-addx1571 add  1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-addx1572 add -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-addx1573 add  1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
-addx1574 add -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
--- some exact zeros from non-zeros
-addx1575 add  1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
-addx1576 add -1E-401   1E-401 ->  0E-398 Clamped
-addx1577 add  1E-401  -1E-401 ->  0E-398 Clamped
-addx1578 add -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
-
-rounding:    down
--- exact zeros from zeros
-addx1580 add  0        0E-19  ->  0E-19
-addx1581 add -0        0E-19  ->  0E-19
-addx1582 add  0       -0E-19  ->  0E-19
-addx1583 add -0       -0E-19  -> -0E-19
-addx1584 add  0E-400   0E-19  ->  0E-398 Clamped
-addx1585 add -0E-400   0E-19  ->  0E-398 Clamped
-addx1586 add  0E-400  -0E-19  ->  0E-398 Clamped
-addx1587 add -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-addx1591 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1592 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1593 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1594 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-addx1595 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1596 add -1E-401   1E-401 ->  0E-398 Clamped
-addx1597 add  1E-401  -1E-401 ->  0E-398 Clamped
-addx1598 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    ceiling
--- exact zeros from zeros
-addx1600 add  0        0E-19  ->  0E-19
-addx1601 add -0        0E-19  ->  0E-19
-addx1602 add  0       -0E-19  ->  0E-19
-addx1603 add -0       -0E-19  -> -0E-19
-addx1604 add  0E-400   0E-19  ->  0E-398 Clamped
-addx1605 add -0E-400   0E-19  ->  0E-398 Clamped
-addx1606 add  0E-400  -0E-19  ->  0E-398 Clamped
-addx1607 add -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-addx1611 add  1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-addx1612 add -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-addx1613 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1614 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-addx1615 add  1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
-addx1616 add -1E-401   1E-401 ->  0E-398 Clamped
-addx1617 add  1E-401  -1E-401 ->  0E-398 Clamped
-addx1618 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
--- and the extra-special ugly case; unusual minuses marked by -- *
-rounding:    floor
--- exact zeros from zeros
-addx1620 add  0        0E-19  ->  0E-19
-addx1621 add -0        0E-19  -> -0E-19           -- *
-addx1622 add  0       -0E-19  -> -0E-19           -- *
-addx1623 add -0       -0E-19  -> -0E-19
-addx1624 add  0E-400   0E-19  ->  0E-398 Clamped
-addx1625 add -0E-400   0E-19  -> -0E-398 Clamped  -- *
-addx1626 add  0E-400  -0E-19  -> -0E-398 Clamped  -- *
-addx1627 add -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-addx1631 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1632 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1633 add  1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
-addx1634 add -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
--- some exact zeros from non-zeros
-addx1635 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx1636 add -1E-401   1E-401 -> -0E-398 Clamped  -- *
-addx1637 add  1E-401  -1E-401 -> -0E-398 Clamped  -- *
-addx1638 add -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
-
--- BigDecimal problem testcases 2006.01.23
-precision:   16
-maxExponent: 384
-minexponent: -383
-
-rounding:  down
-precision: 7
-addx1651 add  10001E+2  -2E+1 -> 1.00008E+6
-precision: 6
-addx1652 add  10001E+2  -2E+1 -> 1.00008E+6
-precision: 5
-addx1653 add  10001E+2  -2E+1 -> 1.0000E+6   Inexact Rounded
-precision: 4
-addx1654 add  10001E+2  -2E+1 -> 1.000E+6    Inexact Rounded
-precision: 3
-addx1655 add  10001E+2  -2E+1 -> 1.00E+6     Inexact Rounded
-precision: 2
-addx1656 add  10001E+2  -2E+1 -> 1.0E+6      Inexact Rounded
-precision: 1
-addx1657 add  10001E+2  -2E+1 -> 1E+6        Inexact Rounded
-
-rounding:  half_even
-precision: 7
-addx1661 add  10001E+2  -2E+1 -> 1.00008E+6
-precision: 6
-addx1662 add  10001E+2  -2E+1 -> 1.00008E+6
-precision: 5
-addx1663 add  10001E+2  -2E+1 -> 1.0001E+6   Inexact Rounded
-precision: 4
-addx1664 add  10001E+2  -2E+1 -> 1.000E+6    Inexact Rounded
-precision: 3
-addx1665 add  10001E+2  -2E+1 -> 1.00E+6     Inexact Rounded
-precision: 2
-addx1666 add  10001E+2  -2E+1 -> 1.0E+6      Inexact Rounded
-precision: 1
-addx1667 add  10001E+2  -2E+1 -> 1E+6        Inexact Rounded
-
-rounding:  up
-precision: 7
-addx1671 add  10001E+2  -2E+1 -> 1.00008E+6
-precision: 6
-addx1672 add  10001E+2  -2E+1 -> 1.00008E+6
-precision: 5
-addx1673 add  10001E+2  -2E+1 -> 1.0001E+6   Inexact Rounded
-precision: 4
-addx1674 add  10001E+2  -2E+1 -> 1.001E+6    Inexact Rounded
-precision: 3
-addx1675 add  10001E+2  -2E+1 -> 1.01E+6     Inexact Rounded
-precision: 2
-addx1676 add  10001E+2  -2E+1 -> 1.1E+6      Inexact Rounded
-precision: 1
-addx1677 add  10001E+2  -2E+1 -> 2E+6        Inexact Rounded
-
-precision:   34
-rounding:    half_up
-maxExponent: 6144
-minExponent: -6143
--- Examples from SQL proposal (Krishna Kulkarni)
-addx1701  add 130E-2    120E-2    -> 2.50
-addx1702  add 130E-2    12E-1     -> 2.50
-addx1703  add 130E-2    1E0       -> 2.30
-addx1704  add 1E2       1E4       -> 1.01E+4
-addx1705  subtract 130E-2  120E-2 -> 0.10
-addx1706  subtract 130E-2  12E-1  -> 0.10
-addx1707  subtract 130E-2  1E0    -> 0.30
-addx1708  subtract 1E2     1E4    -> -9.9E+3
-
-------------------------------------------------------------------------
--- Same as above, using decimal64 default parameters                  --
-------------------------------------------------------------------------
-precision:   16
-rounding:    half_even
-maxExponent: 384
-minexponent: -383
-
--- [first group are 'quick confidence check']
-addx6001 add 1       1       ->  2
-addx6002 add 2       3       ->  5
-addx6003 add '5.75'  '3.3'   ->  9.05
-addx6004 add '5'     '-3'    ->  2
-addx6005 add '-5'    '-3'    ->  -8
-addx6006 add '-7'    '2.5'   ->  -4.5
-addx6007 add '0.7'   '0.3'   ->  1.0
-addx6008 add '1.25'  '1.25'  ->  2.50
-addx6009 add '1.23456789'  '1.00000000' -> '2.23456789'
-addx6010 add '1.23456789'  '1.00000011' -> '2.23456800'
-
-addx6011 add '0.44444444444444444'  '0.55555555555555555' -> '1.000000000000000' Inexact Rounded
-addx6012 add '0.44444444444444440'  '0.55555555555555555' -> '1.000000000000000' Inexact Rounded
-addx6013 add '0.44444444444444444'  '0.55555555555555550' -> '0.9999999999999999' Inexact Rounded
-addx6014 add '0.444444444444444449'    '0' -> '0.4444444444444444' Inexact Rounded
-addx6015 add '0.4444444444444444499'   '0' -> '0.4444444444444444' Inexact Rounded
-addx6016 add '0.44444444444444444999'  '0' -> '0.4444444444444444' Inexact Rounded
-addx6017 add '0.44444444444444445000'  '0' -> '0.4444444444444444' Inexact Rounded
-addx6018 add '0.44444444444444445001'  '0' -> '0.4444444444444445' Inexact Rounded
-addx6019 add '0.4444444444444444501'   '0' -> '0.4444444444444445' Inexact Rounded
-addx6020 add '0.444444444444444451'    '0' -> '0.4444444444444445' Inexact Rounded
-
-addx6021 add 0 1 -> 1
-addx6022 add 1 1 -> 2
-addx6023 add 2 1 -> 3
-addx6024 add 3 1 -> 4
-addx6025 add 4 1 -> 5
-addx6026 add 5 1 -> 6
-addx6027 add 6 1 -> 7
-addx6028 add 7 1 -> 8
-addx6029 add 8 1 -> 9
-addx6030 add 9 1 -> 10
-
--- some carrying effects
-addx6031 add '0.9998'  '0.0000' -> '0.9998'
-addx6032 add '0.9998'  '0.0001' -> '0.9999'
-addx6033 add '0.9998'  '0.0002' -> '1.0000'
-addx6034 add '0.9998'  '0.0003' -> '1.0001'
-
-addx6035 add '70'      '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
-addx6036 add '700'     '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
-addx6037 add '7000'    '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
-addx6038 add '70000'   '10000e+16' -> '1.000000000000001E+20' Inexact Rounded
-addx6039 add '700000'  '10000e+16' -> '1.000000000000007E+20' Rounded
-
--- symmetry:
-addx6040 add '10000e+16'  '70' -> '1.000000000000000E+20' Inexact Rounded
-addx6041 add '10000e+16'  '700' -> '1.000000000000000E+20' Inexact Rounded
-addx6042 add '10000e+16'  '7000' -> '1.000000000000000E+20' Inexact Rounded
-addx6044 add '10000e+16'  '70000' -> '1.000000000000001E+20' Inexact Rounded
-addx6045 add '10000e+16'  '700000' -> '1.000000000000007E+20' Rounded
-
-addx6046 add '10000e+9'  '7' -> '10000000000007'
-addx6047 add '10000e+9'  '70' -> '10000000000070'
-addx6048 add '10000e+9'  '700' -> '10000000000700'
-addx6049 add '10000e+9'  '7000' -> '10000000007000'
-addx6050 add '10000e+9'  '70000' -> '10000000070000'
-addx6051 add '10000e+9'  '700000' -> '10000000700000'
-
--- examples from decarith
-addx6053 add '12' '7.00' -> '19.00'
-addx6054 add '1.3' '-1.07' -> '0.23'
-addx6055 add '1.3' '-1.30' -> '0.00'
-addx6056 add '1.3' '-2.07' -> '-0.77'
-addx6057 add '1E+2' '1E+4' -> '1.01E+4'
-
--- from above
-addx6060 add 1 '0.1' -> '1.1'
-addx6061 add 1 '0.01' -> '1.01'
-addx6062 add 1 '0.001' -> '1.001'
-addx6063 add 1 '0.0001' -> '1.0001'
-addx6064 add 1 '0.00001' -> '1.00001'
-addx6065 add 1 '0.000001' -> '1.000001'
-addx6066 add 1 '0.0000001' -> '1.0000001'
-addx6067 add 1 '0.00000001' -> '1.00000001'
-
--- cancellation to integer
-addx6068 add 99999999999999123456789 -99999999999999E+9 -> 123456789
--- similar from FMA fun
-addx6069 add "-1234567890123455.234567890123454" "1234567890123456" -> 0.765432109876546
-
--- some funny zeros [in case of bad signum]
-addx6070 add 1  0    -> 1
-addx6071 add 1 0.    -> 1
-addx6072 add 1  .0   -> 1.0
-addx6073 add 1 0.0   -> 1.0
-addx6074 add 1 0.00  -> 1.00
-addx6075 add  0  1   -> 1
-addx6076 add 0.  1   -> 1
-addx6077 add  .0 1   -> 1.0
-addx6078 add 0.0 1   -> 1.0
-addx6079 add 0.00 1  -> 1.00
-
--- some carries
-addx6080 add 9999999999999998 1  -> 9999999999999999
-addx6081 add 9999999999999999 1  -> 1.000000000000000E+16 Rounded
-addx6082 add  999999999999999 1  -> 1000000000000000
-addx6083 add    9999999999999 1  -> 10000000000000
-addx6084 add      99999999999 1  -> 100000000000
-addx6085 add        999999999 1  -> 1000000000
-addx6086 add          9999999 1  -> 10000000
-addx6087 add            99999 1  -> 100000
-addx6088 add              999 1  -> 1000
-addx6089 add                9 1  -> 10
-
-
--- more LHS swaps
-addx6090 add '-56267E-10'   0 ->  '-0.0000056267'
-addx6091 add '-56267E-6'    0 ->  '-0.056267'
-addx6092 add '-56267E-5'    0 ->  '-0.56267'
-addx6093 add '-56267E-4'    0 ->  '-5.6267'
-addx6094 add '-56267E-3'    0 ->  '-56.267'
-addx6095 add '-56267E-2'    0 ->  '-562.67'
-addx6096 add '-56267E-1'    0 ->  '-5626.7'
-addx6097 add '-56267E-0'    0 ->  '-56267'
-addx6098 add '-5E-10'       0 ->  '-5E-10'
-addx6099 add '-5E-7'        0 ->  '-5E-7'
-addx6100 add '-5E-6'        0 ->  '-0.000005'
-addx6101 add '-5E-5'        0 ->  '-0.00005'
-addx6102 add '-5E-4'        0 ->  '-0.0005'
-addx6103 add '-5E-1'        0 ->  '-0.5'
-addx6104 add '-5E0'         0 ->  '-5'
-addx6105 add '-5E1'         0 ->  '-50'
-addx6106 add '-5E5'         0 ->  '-500000'
-addx6107 add '-5E15'        0 ->  '-5000000000000000'
-addx6108 add '-5E16'        0 ->  '-5.000000000000000E+16'   Rounded
-addx6109 add '-5E17'        0 ->  '-5.000000000000000E+17'  Rounded
-addx6110 add '-5E18'        0 ->  '-5.000000000000000E+18'  Rounded
-addx6111 add '-5E100'       0 ->  '-5.000000000000000E+100' Rounded
-
--- more RHS swaps
-addx6113 add 0  '-56267E-10' ->  '-0.0000056267'
-addx6114 add 0  '-56267E-6'  ->  '-0.056267'
-addx6116 add 0  '-56267E-5'  ->  '-0.56267'
-addx6117 add 0  '-56267E-4'  ->  '-5.6267'
-addx6119 add 0  '-56267E-3'  ->  '-56.267'
-addx6120 add 0  '-56267E-2'  ->  '-562.67'
-addx6121 add 0  '-56267E-1'  ->  '-5626.7'
-addx6122 add 0  '-56267E-0'  ->  '-56267'
-addx6123 add 0  '-5E-10'     ->  '-5E-10'
-addx6124 add 0  '-5E-7'      ->  '-5E-7'
-addx6125 add 0  '-5E-6'      ->  '-0.000005'
-addx6126 add 0  '-5E-5'      ->  '-0.00005'
-addx6127 add 0  '-5E-4'      ->  '-0.0005'
-addx6128 add 0  '-5E-1'      ->  '-0.5'
-addx6129 add 0  '-5E0'       ->  '-5'
-addx6130 add 0  '-5E1'       ->  '-50'
-addx6131 add 0  '-5E5'       ->  '-500000'
-addx6132 add 0  '-5E15'      ->  '-5000000000000000'
-addx6133 add 0  '-5E16'      ->  '-5.000000000000000E+16'   Rounded
-addx6134 add 0  '-5E17'      ->  '-5.000000000000000E+17'   Rounded
-addx6135 add 0  '-5E18'      ->  '-5.000000000000000E+18'   Rounded
-addx6136 add 0  '-5E100'     ->  '-5.000000000000000E+100'  Rounded
-
--- related
-addx6137 add  1  '0E-19'      ->  '1.000000000000000'  Rounded
-addx6138 add -1  '0E-19'      ->  '-1.000000000000000' Rounded
-addx6139 add '0E-19' 1        ->  '1.000000000000000'  Rounded
-addx6140 add '0E-19' -1       ->  '-1.000000000000000' Rounded
-addx6141 add 1E+11   0.0000   ->  '100000000000.0000'
-addx6142 add 1E+11   0.00000  ->  '100000000000.0000'  Rounded
-addx6143 add 0.000   1E+12    ->  '1000000000000.000'
-addx6144 add 0.0000  1E+12    ->  '1000000000000.000'  Rounded
-
--- [some of the next group are really constructor tests]
-addx6146 add '00.0'  0       ->  '0.0'
-addx6147 add '0.00'  0       ->  '0.00'
-addx6148 add  0      '0.00'  ->  '0.00'
-addx6149 add  0      '00.0'  ->  '0.0'
-addx6150 add '00.0'  '0.00'  ->  '0.00'
-addx6151 add '0.00'  '00.0'  ->  '0.00'
-addx6152 add '3'     '.3'    ->  '3.3'
-addx6153 add '3.'    '.3'    ->  '3.3'
-addx6154 add '3.0'   '.3'    ->  '3.3'
-addx6155 add '3.00'  '.3'    ->  '3.30'
-addx6156 add '3'     '3'     ->  '6'
-addx6157 add '3'     '+3'    ->  '6'
-addx6158 add '3'     '-3'    ->  '0'
-addx6159 add '0.3'   '-0.3'  ->  '0.0'
-addx6160 add '0.03'  '-0.03' ->  '0.00'
-
--- try borderline precision, with carries, etc.
-addx6161 add '1E+13' '-1'    -> '9999999999999'
-addx6162 add '1E+13'  '1.11' -> '10000000000001.11'
-addx6163 add '1.11'  '1E+13' -> '10000000000001.11'
-addx6164 add '-1'    '1E+13' -> '9999999999999'
-addx6165 add '7E+13' '-1'    -> '69999999999999'
-addx6166 add '7E+13'  '1.11' -> '70000000000001.11'
-addx6167 add '1.11'  '7E+13' -> '70000000000001.11'
-addx6168 add '-1'    '7E+13' -> '69999999999999'
-
---             1234567890123456      1234567890123456      1 234567890123456
-addx6170 add '0.4444444444444444'  '0.5555555555555563' -> '1.000000000000001' Inexact Rounded
-addx6171 add '0.4444444444444444'  '0.5555555555555562' -> '1.000000000000001' Inexact Rounded
-addx6172 add '0.4444444444444444'  '0.5555555555555561' -> '1.000000000000000' Inexact Rounded
-addx6173 add '0.4444444444444444'  '0.5555555555555560' -> '1.000000000000000' Inexact Rounded
-addx6174 add '0.4444444444444444'  '0.5555555555555559' -> '1.000000000000000' Inexact Rounded
-addx6175 add '0.4444444444444444'  '0.5555555555555558' -> '1.000000000000000' Inexact Rounded
-addx6176 add '0.4444444444444444'  '0.5555555555555557' -> '1.000000000000000' Inexact Rounded
-addx6177 add '0.4444444444444444'  '0.5555555555555556' -> '1.000000000000000' Rounded
-addx6178 add '0.4444444444444444'  '0.5555555555555555' -> '0.9999999999999999'
-addx6179 add '0.4444444444444444'  '0.5555555555555554' -> '0.9999999999999998'
-addx6180 add '0.4444444444444444'  '0.5555555555555553' -> '0.9999999999999997'
-addx6181 add '0.4444444444444444'  '0.5555555555555552' -> '0.9999999999999996'
-addx6182 add '0.4444444444444444'  '0.5555555555555551' -> '0.9999999999999995'
-addx6183 add '0.4444444444444444'  '0.5555555555555550' -> '0.9999999999999994'
-
--- and some more, including residue effects and different roundings
-rounding: half_up
-addx6200 add '6543210123456789' 0             -> '6543210123456789'
-addx6201 add '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
-addx6202 add '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
-addx6203 add '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
-addx6204 add '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
-addx6205 add '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
-addx6206 add '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
-addx6207 add '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded
-addx6208 add '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded
-addx6209 add '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded
-addx6210 add '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded
-addx6211 add '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded
-addx6212 add '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded
-addx6213 add '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded
-addx6214 add '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded
-addx6215 add '6543210123456789' 0.999999999   -> '6543210123456790' Inexact Rounded
-addx6216 add '6543210123456789' 1             -> '6543210123456790'
-addx6217 add '6543210123456789' 1.000000001   -> '6543210123456790' Inexact Rounded
-addx6218 add '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
-addx6219 add '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
-
-rounding: half_even
-addx6220 add '6543210123456789' 0             -> '6543210123456789'
-addx6221 add '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
-addx6222 add '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
-addx6223 add '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
-addx6224 add '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
-addx6225 add '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
-addx6226 add '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
-addx6227 add '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded
-addx6228 add '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded
-addx6229 add '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded
-addx6230 add '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded
-addx6231 add '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded
-addx6232 add '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded
-addx6233 add '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded
-addx6234 add '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded
-addx6235 add '6543210123456789' 0.999999999   -> '6543210123456790' Inexact Rounded
-addx6236 add '6543210123456789' 1             -> '6543210123456790'
-addx6237 add '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded
-addx6238 add '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
-addx6239 add '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
--- critical few with even bottom digit...
-addx6240 add '6543210123456788' 0.499999999   -> '6543210123456788' Inexact Rounded
-addx6241 add '6543210123456788' 0.5           -> '6543210123456788' Inexact Rounded
-addx6242 add '6543210123456788' 0.500000001   -> '6543210123456789' Inexact Rounded
-
-rounding: down
-addx6250 add '6543210123456789' 0             -> '6543210123456789'
-addx6251 add '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
-addx6252 add '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
-addx6253 add '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
-addx6254 add '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
-addx6255 add '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
-addx6256 add '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
-addx6257 add '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded
-addx6258 add '6543210123456789' 0.5           -> '6543210123456789' Inexact Rounded
-addx6259 add '6543210123456789' 0.500000001   -> '6543210123456789' Inexact Rounded
-addx6260 add '6543210123456789' 0.500001      -> '6543210123456789' Inexact Rounded
-addx6261 add '6543210123456789' 0.51          -> '6543210123456789' Inexact Rounded
-addx6262 add '6543210123456789' 0.6           -> '6543210123456789' Inexact Rounded
-addx6263 add '6543210123456789' 0.9           -> '6543210123456789' Inexact Rounded
-addx6264 add '6543210123456789' 0.99999       -> '6543210123456789' Inexact Rounded
-addx6265 add '6543210123456789' 0.999999999   -> '6543210123456789' Inexact Rounded
-addx6266 add '6543210123456789' 1             -> '6543210123456790'
-addx6267 add '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded
-addx6268 add '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
-addx6269 add '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
-
--- 1 in last place tests
-rounding: half_even
-addx6301 add  -1   1      ->   0
-addx6302 add   0   1      ->   1
-addx6303 add   1   1      ->   2
-addx6304 add  12   1      ->  13
-addx6305 add  98   1      ->  99
-addx6306 add  99   1      -> 100
-addx6307 add 100   1      -> 101
-addx6308 add 101   1      -> 102
-addx6309 add  -1  -1      ->  -2
-addx6310 add   0  -1      ->  -1
-addx6311 add   1  -1      ->   0
-addx6312 add  12  -1      ->  11
-addx6313 add  98  -1      ->  97
-addx6314 add  99  -1      ->  98
-addx6315 add 100  -1      ->  99
-addx6316 add 101  -1      -> 100
-
-addx6321 add -0.01  0.01    ->  0.00
-addx6322 add  0.00  0.01    ->  0.01
-addx6323 add  0.01  0.01    ->  0.02
-addx6324 add  0.12  0.01    ->  0.13
-addx6325 add  0.98  0.01    ->  0.99
-addx6326 add  0.99  0.01    ->  1.00
-addx6327 add  1.00  0.01    ->  1.01
-addx6328 add  1.01  0.01    ->  1.02
-addx6329 add -0.01 -0.01    -> -0.02
-addx6330 add  0.00 -0.01    -> -0.01
-addx6331 add  0.01 -0.01    ->  0.00
-addx6332 add  0.12 -0.01    ->  0.11
-addx6333 add  0.98 -0.01    ->  0.97
-addx6334 add  0.99 -0.01    ->  0.98
-addx6335 add  1.00 -0.01    ->  0.99
-addx6336 add  1.01 -0.01    ->  1.00
-
--- some more cases where adding 0 affects the coefficient
-addx6340 add 1E+3    0    ->         1000
-addx6341 add 1E+15   0    ->    1000000000000000
-addx6342 add 1E+16   0    ->   1.000000000000000E+16  Rounded
-addx6343 add 1E+17   0    ->   1.000000000000000E+17  Rounded
--- which simply follow from these cases ...
-addx6344 add 1E+3    1    ->         1001
-addx6345 add 1E+15   1    ->    1000000000000001
-addx6346 add 1E+16   1    ->   1.000000000000000E+16  Inexact Rounded
-addx6347 add 1E+17   1    ->   1.000000000000000E+17  Inexact Rounded
-addx6348 add 1E+3    7    ->         1007
-addx6349 add 1E+15   7    ->    1000000000000007
-addx6350 add 1E+16   7    ->   1.000000000000001E+16  Inexact Rounded
-addx6351 add 1E+17   7    ->   1.000000000000000E+17  Inexact Rounded
-
--- tryzeros cases
-addx6361  add 0E+50 10000E+1  -> 1.0000E+5
-addx6362  add 10000E+1 0E-50  -> 100000.0000000000  Rounded
-addx6363  add 10000E+1 10000E-50  -> 100000.0000000000  Rounded Inexact
-addx6364  add 12.34    0e-398  -> 12.34000000000000  Rounded
-
--- ulp replacement tests
-addx6400 add   1   77e-14      ->  1.00000000000077
-addx6401 add   1   77e-15      ->  1.000000000000077
-addx6402 add   1   77e-16      ->  1.000000000000008 Inexact Rounded
-addx6403 add   1   77e-17      ->  1.000000000000001 Inexact Rounded
-addx6404 add   1   77e-18      ->  1.000000000000000 Inexact Rounded
-addx6405 add   1   77e-19      ->  1.000000000000000 Inexact Rounded
-addx6406 add   1   77e-99      ->  1.000000000000000 Inexact Rounded
-
-addx6410 add  10   77e-14      ->  10.00000000000077
-addx6411 add  10   77e-15      ->  10.00000000000008 Inexact Rounded
-addx6412 add  10   77e-16      ->  10.00000000000001 Inexact Rounded
-addx6413 add  10   77e-17      ->  10.00000000000000 Inexact Rounded
-addx6414 add  10   77e-18      ->  10.00000000000000 Inexact Rounded
-addx6415 add  10   77e-19      ->  10.00000000000000 Inexact Rounded
-addx6416 add  10   77e-99      ->  10.00000000000000 Inexact Rounded
-
-addx6420 add  77e-14       1   ->  1.00000000000077
-addx6421 add  77e-15       1   ->  1.000000000000077
-addx6422 add  77e-16       1   ->  1.000000000000008 Inexact Rounded
-addx6423 add  77e-17       1   ->  1.000000000000001 Inexact Rounded
-addx6424 add  77e-18       1   ->  1.000000000000000 Inexact Rounded
-addx6425 add  77e-19       1   ->  1.000000000000000 Inexact Rounded
-addx6426 add  77e-99       1   ->  1.000000000000000 Inexact Rounded
-
-addx6430 add  77e-14      10   ->  10.00000000000077
-addx6431 add  77e-15      10   ->  10.00000000000008 Inexact Rounded
-addx6432 add  77e-16      10   ->  10.00000000000001 Inexact Rounded
-addx6433 add  77e-17      10   ->  10.00000000000000 Inexact Rounded
-addx6434 add  77e-18      10   ->  10.00000000000000 Inexact Rounded
-addx6435 add  77e-19      10   ->  10.00000000000000 Inexact Rounded
-addx6436 add  77e-99      10   ->  10.00000000000000 Inexact Rounded
-
--- negative ulps
-addx6440 add   1   -77e-14      ->  0.99999999999923
-addx6441 add   1   -77e-15      ->  0.999999999999923
-addx6442 add   1   -77e-16      ->  0.9999999999999923
-addx6443 add   1   -77e-17      ->  0.9999999999999992 Inexact Rounded
-addx6444 add   1   -77e-18      ->  0.9999999999999999 Inexact Rounded
-addx6445 add   1   -77e-19      ->  1.000000000000000 Inexact Rounded
-addx6446 add   1   -77e-99      ->  1.000000000000000 Inexact Rounded
-
-addx6450 add  10   -77e-14      ->   9.99999999999923
-addx6451 add  10   -77e-15      ->   9.999999999999923
-addx6452 add  10   -77e-16      ->   9.999999999999992 Inexact Rounded
-addx6453 add  10   -77e-17      ->   9.999999999999999 Inexact Rounded
-addx6454 add  10   -77e-18      ->  10.00000000000000 Inexact Rounded
-addx6455 add  10   -77e-19      ->  10.00000000000000 Inexact Rounded
-addx6456 add  10   -77e-99      ->  10.00000000000000 Inexact Rounded
-
-addx6460 add  -77e-14       1   ->  0.99999999999923
-addx6461 add  -77e-15       1   ->  0.999999999999923
-addx6462 add  -77e-16       1   ->  0.9999999999999923
-addx6463 add  -77e-17       1   ->  0.9999999999999992 Inexact Rounded
-addx6464 add  -77e-18       1   ->  0.9999999999999999 Inexact Rounded
-addx6465 add  -77e-19       1   ->  1.000000000000000 Inexact Rounded
-addx6466 add  -77e-99       1   ->  1.000000000000000 Inexact Rounded
-
-addx6470 add  -77e-14      10   ->   9.99999999999923
-addx6471 add  -77e-15      10   ->   9.999999999999923
-addx6472 add  -77e-16      10   ->   9.999999999999992 Inexact Rounded
-addx6473 add  -77e-17      10   ->   9.999999999999999 Inexact Rounded
-addx6474 add  -77e-18      10   ->  10.00000000000000 Inexact Rounded
-addx6475 add  -77e-19      10   ->  10.00000000000000 Inexact Rounded
-addx6476 add  -77e-99      10   ->  10.00000000000000 Inexact Rounded
-
--- negative ulps
-addx6480 add  -1    77e-14      ->  -0.99999999999923
-addx6481 add  -1    77e-15      ->  -0.999999999999923
-addx6482 add  -1    77e-16      ->  -0.9999999999999923
-addx6483 add  -1    77e-17      ->  -0.9999999999999992 Inexact Rounded
-addx6484 add  -1    77e-18      ->  -0.9999999999999999 Inexact Rounded
-addx6485 add  -1    77e-19      ->  -1.000000000000000 Inexact Rounded
-addx6486 add  -1    77e-99      ->  -1.000000000000000 Inexact Rounded
-
-addx6490 add -10    77e-14      ->   -9.99999999999923
-addx6491 add -10    77e-15      ->   -9.999999999999923
-addx6492 add -10    77e-16      ->   -9.999999999999992 Inexact Rounded
-addx6493 add -10    77e-17      ->   -9.999999999999999 Inexact Rounded
-addx6494 add -10    77e-18      ->  -10.00000000000000 Inexact Rounded
-addx6495 add -10    77e-19      ->  -10.00000000000000 Inexact Rounded
-addx6496 add -10    77e-99      ->  -10.00000000000000 Inexact Rounded
-
-addx6500 add   77e-14      -1   ->  -0.99999999999923
-addx6501 add   77e-15      -1   ->  -0.999999999999923
-addx6502 add   77e-16      -1   ->  -0.9999999999999923
-addx6503 add   77e-17      -1   ->  -0.9999999999999992 Inexact Rounded
-addx6504 add   77e-18      -1   ->  -0.9999999999999999 Inexact Rounded
-addx6505 add   77e-19      -1   ->  -1.000000000000000 Inexact Rounded
-addx6506 add   77e-99      -1   ->  -1.000000000000000 Inexact Rounded
-
-addx6510 add   77e-14      -10  ->   -9.99999999999923
-addx6511 add   77e-15      -10  ->   -9.999999999999923
-addx6512 add   77e-16      -10  ->   -9.999999999999992 Inexact Rounded
-addx6513 add   77e-17      -10  ->   -9.999999999999999 Inexact Rounded
-addx6514 add   77e-18      -10  ->  -10.00000000000000 Inexact Rounded
-addx6515 add   77e-19      -10  ->  -10.00000000000000 Inexact Rounded
-addx6516 add   77e-99      -10  ->  -10.00000000000000 Inexact Rounded
-
-
--- long operands
-addx6521 add 101234562345678000 0 -> 1.012345623456780E+17 Rounded
-addx6522 add 0 101234562345678000 -> 1.012345623456780E+17 Rounded
-addx6523 add 10123456234567800  0 -> 1.012345623456780E+16 Rounded
-addx6524 add 0 10123456234567800  -> 1.012345623456780E+16 Rounded
-addx6525 add 10123456234567890  0 -> 1.012345623456789E+16 Rounded
-addx6526 add 0 10123456234567890  -> 1.012345623456789E+16 Rounded
-addx6527 add 10123456234567891  0 -> 1.012345623456789E+16 Inexact Rounded
-addx6528 add 0 10123456234567891  -> 1.012345623456789E+16 Inexact Rounded
-addx6529 add 101234562345678901 0 -> 1.012345623456789E+17 Inexact Rounded
-addx6530 add 0 101234562345678901 -> 1.012345623456789E+17 Inexact Rounded
-addx6531 add 10123456234567896  0 -> 1.012345623456790E+16 Inexact Rounded
-addx6532 add 0 10123456234567896  -> 1.012345623456790E+16 Inexact Rounded
-
--- verify a query
-rounding:     down
-addx6561 add 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded
-addx6562 add      0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded
--- and using decimal64 bounds...
-rounding:     down
-addx6563 add 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded
-addx6564 add      0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded
-
--- more zeros, etc.
-rounding: half_even
-
-addx6701 add 5.00 1.00E-3 -> 5.00100
-addx6702 add 00.00 0.000  -> 0.000
-addx6703 add 00.00 0E-3   -> 0.000
-addx6704 add 0E-3  00.00  -> 0.000
-
-addx6710 add 0E+3  00.00  -> 0.00
-addx6711 add 0E+3  00.0   -> 0.0
-addx6712 add 0E+3  00.    -> 0
-addx6713 add 0E+3  00.E+1 -> 0E+1
-addx6714 add 0E+3  00.E+2 -> 0E+2
-addx6715 add 0E+3  00.E+3 -> 0E+3
-addx6716 add 0E+3  00.E+4 -> 0E+3
-addx6717 add 0E+3  00.E+5 -> 0E+3
-addx6718 add 0E+3  -00.0   -> 0.0
-addx6719 add 0E+3  -00.    -> 0
-addx6731 add 0E+3  -00.E+1 -> 0E+1
-
-addx6720 add 00.00  0E+3  -> 0.00
-addx6721 add 00.0   0E+3  -> 0.0
-addx6722 add 00.    0E+3  -> 0
-addx6723 add 00.E+1 0E+3  -> 0E+1
-addx6724 add 00.E+2 0E+3  -> 0E+2
-addx6725 add 00.E+3 0E+3  -> 0E+3
-addx6726 add 00.E+4 0E+3  -> 0E+3
-addx6727 add 00.E+5 0E+3  -> 0E+3
-addx6728 add -00.00 0E+3  -> 0.00
-addx6729 add -00.0  0E+3  -> 0.0
-addx6730 add -00.   0E+3  -> 0
-
-addx6732 add  0     0     ->  0
-addx6733 add  0    -0     ->  0
-addx6734 add -0     0     ->  0
-addx6735 add -0    -0     -> -0     -- IEEE 854 special case
-
-addx6736 add  1    -1     ->  0
-addx6737 add -1    -1     -> -2
-addx6738 add  1     1     ->  2
-addx6739 add -1     1     ->  0
-
-addx6741 add  0    -1     -> -1
-addx6742 add -0    -1     -> -1
-addx6743 add  0     1     ->  1
-addx6744 add -0     1     ->  1
-addx6745 add -1     0     -> -1
-addx6746 add -1    -0     -> -1
-addx6747 add  1     0     ->  1
-addx6748 add  1    -0     ->  1
-
-addx6751 add  0.0  -1     -> -1.0
-addx6752 add -0.0  -1     -> -1.0
-addx6753 add  0.0   1     ->  1.0
-addx6754 add -0.0   1     ->  1.0
-addx6755 add -1.0   0     -> -1.0
-addx6756 add -1.0  -0     -> -1.0
-addx6757 add  1.0   0     ->  1.0
-addx6758 add  1.0  -0     ->  1.0
-
-addx6761 add  0    -1.0   -> -1.0
-addx6762 add -0    -1.0   -> -1.0
-addx6763 add  0     1.0   ->  1.0
-addx6764 add -0     1.0   ->  1.0
-addx6765 add -1     0.0   -> -1.0
-addx6766 add -1    -0.0   -> -1.0
-addx6767 add  1     0.0   ->  1.0
-addx6768 add  1    -0.0   ->  1.0
-
-addx6771 add  0.0  -1.0   -> -1.0
-addx6772 add -0.0  -1.0   -> -1.0
-addx6773 add  0.0   1.0   ->  1.0
-addx6774 add -0.0   1.0   ->  1.0
-addx6775 add -1.0   0.0   -> -1.0
-addx6776 add -1.0  -0.0   -> -1.0
-addx6777 add  1.0   0.0   ->  1.0
-addx6778 add  1.0  -0.0   ->  1.0
-
--- Specials
-addx6780 add -Inf  -Inf   -> -Infinity
-addx6781 add -Inf  -1000  -> -Infinity
-addx6782 add -Inf  -1     -> -Infinity
-addx6783 add -Inf  -0     -> -Infinity
-addx6784 add -Inf   0     -> -Infinity
-addx6785 add -Inf   1     -> -Infinity
-addx6786 add -Inf   1000  -> -Infinity
-addx6787 add -1000 -Inf   -> -Infinity
-addx6788 add -Inf  -Inf   -> -Infinity
-addx6789 add -1    -Inf   -> -Infinity
-addx6790 add -0    -Inf   -> -Infinity
-addx6791 add  0    -Inf   -> -Infinity
-addx6792 add  1    -Inf   -> -Infinity
-addx6793 add  1000 -Inf   -> -Infinity
-addx6794 add  Inf  -Inf   ->  NaN  Invalid_operation
-
-addx6800 add  Inf  -Inf   ->  NaN  Invalid_operation
-addx6801 add  Inf  -1000  ->  Infinity
-addx6802 add  Inf  -1     ->  Infinity
-addx6803 add  Inf  -0     ->  Infinity
-addx6804 add  Inf   0     ->  Infinity
-addx6805 add  Inf   1     ->  Infinity
-addx6806 add  Inf   1000  ->  Infinity
-addx6807 add  Inf   Inf   ->  Infinity
-addx6808 add -1000  Inf   ->  Infinity
-addx6809 add -Inf   Inf   ->  NaN  Invalid_operation
-addx6810 add -1     Inf   ->  Infinity
-addx6811 add -0     Inf   ->  Infinity
-addx6812 add  0     Inf   ->  Infinity
-addx6813 add  1     Inf   ->  Infinity
-addx6814 add  1000  Inf   ->  Infinity
-addx6815 add  Inf   Inf   ->  Infinity
-
-addx6821 add  NaN -Inf    ->  NaN
-addx6822 add  NaN -1000   ->  NaN
-addx6823 add  NaN -1      ->  NaN
-addx6824 add  NaN -0      ->  NaN
-addx6825 add  NaN  0      ->  NaN
-addx6826 add  NaN  1      ->  NaN
-addx6827 add  NaN  1000   ->  NaN
-addx6828 add  NaN  Inf    ->  NaN
-addx6829 add  NaN  NaN    ->  NaN
-addx6830 add -Inf  NaN    ->  NaN
-addx6831 add -1000 NaN    ->  NaN
-addx6832 add -1    NaN    ->  NaN
-addx6833 add -0    NaN    ->  NaN
-addx6834 add  0    NaN    ->  NaN
-addx6835 add  1    NaN    ->  NaN
-addx6836 add  1000 NaN    ->  NaN
-addx6837 add  Inf  NaN    ->  NaN
-
-addx6841 add  sNaN -Inf   ->  NaN  Invalid_operation
-addx6842 add  sNaN -1000  ->  NaN  Invalid_operation
-addx6843 add  sNaN -1     ->  NaN  Invalid_operation
-addx6844 add  sNaN -0     ->  NaN  Invalid_operation
-addx6845 add  sNaN  0     ->  NaN  Invalid_operation
-addx6846 add  sNaN  1     ->  NaN  Invalid_operation
-addx6847 add  sNaN  1000  ->  NaN  Invalid_operation
-addx6848 add  sNaN  NaN   ->  NaN  Invalid_operation
-addx6849 add  sNaN sNaN   ->  NaN  Invalid_operation
-addx6850 add  NaN  sNaN   ->  NaN  Invalid_operation
-addx6851 add -Inf  sNaN   ->  NaN  Invalid_operation
-addx6852 add -1000 sNaN   ->  NaN  Invalid_operation
-addx6853 add -1    sNaN   ->  NaN  Invalid_operation
-addx6854 add -0    sNaN   ->  NaN  Invalid_operation
-addx6855 add  0    sNaN   ->  NaN  Invalid_operation
-addx6856 add  1    sNaN   ->  NaN  Invalid_operation
-addx6857 add  1000 sNaN   ->  NaN  Invalid_operation
-addx6858 add  Inf  sNaN   ->  NaN  Invalid_operation
-addx6859 add  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-addx6861 add  NaN1   -Inf    ->  NaN1
-addx6862 add +NaN2   -1000   ->  NaN2
-addx6863 add  NaN3    1000   ->  NaN3
-addx6864 add  NaN4    Inf    ->  NaN4
-addx6865 add  NaN5   +NaN6   ->  NaN5
-addx6866 add -Inf     NaN7   ->  NaN7
-addx6867 add -1000    NaN8   ->  NaN8
-addx6868 add  1000    NaN9   ->  NaN9
-addx6869 add  Inf    +NaN10  ->  NaN10
-addx6871 add  sNaN11  -Inf   ->  NaN11  Invalid_operation
-addx6872 add  sNaN12  -1000  ->  NaN12  Invalid_operation
-addx6873 add  sNaN13   1000  ->  NaN13  Invalid_operation
-addx6874 add  sNaN14   NaN17 ->  NaN14  Invalid_operation
-addx6875 add  sNaN15  sNaN18 ->  NaN15  Invalid_operation
-addx6876 add  NaN16   sNaN19 ->  NaN19  Invalid_operation
-addx6877 add -Inf    +sNaN20 ->  NaN20  Invalid_operation
-addx6878 add -1000    sNaN21 ->  NaN21  Invalid_operation
-addx6879 add  1000    sNaN22 ->  NaN22  Invalid_operation
-addx6880 add  Inf     sNaN23 ->  NaN23  Invalid_operation
-addx6881 add +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-addx6882 add -NaN26    NaN28 -> -NaN26
-addx6883 add -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-addx6884 add  1000    -NaN30 -> -NaN30
-addx6885 add  1000   -sNaN31 -> -NaN31  Invalid_operation
-
--- now the case where we can get underflow but the result is normal
--- [note this can't happen if the operands are also bounded, as we
--- cannot represent 1E-399, for example]
-
-addx6571 add       1E-383       0  -> 1E-383
-addx6572 add       1E-384       0  -> 1E-384   Subnormal
-addx6573 add       1E-383  1E-384  -> 1.1E-383
-addx6574 subtract  1E-383  1E-384  ->   9E-384 Subnormal
-
--- Here we explore the boundary of rounding a subnormal to Nmin
-addx6575 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
-addx6576 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
-addx6577 subtract  1E-383  1E-399  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-addx6578 subtract  1E-383  1E-400  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-addx6579 subtract  1E-383  1E-401  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-addx6580 subtract  1E-383  1E-402  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-
--- check overflow edge case
---               1234567890123456
-addx6972 apply   9.999999999999999E+384         -> 9.999999999999999E+384
-addx6973 add     9.999999999999999E+384  1      -> 9.999999999999999E+384 Inexact Rounded
-addx6974 add      9999999999999999E+369  1      -> 9.999999999999999E+384 Inexact Rounded
-addx6975 add      9999999999999999E+369  1E+369  -> Infinity Overflow Inexact Rounded
-addx6976 add      9999999999999999E+369  9E+368  -> Infinity Overflow Inexact Rounded
-addx6977 add      9999999999999999E+369  8E+368  -> Infinity Overflow Inexact Rounded
-addx6978 add      9999999999999999E+369  7E+368  -> Infinity Overflow Inexact Rounded
-addx6979 add      9999999999999999E+369  6E+368  -> Infinity Overflow Inexact Rounded
-addx6980 add      9999999999999999E+369  5E+368  -> Infinity Overflow Inexact Rounded
-addx6981 add      9999999999999999E+369  4E+368  -> 9.999999999999999E+384 Inexact Rounded
-addx6982 add      9999999999999999E+369  3E+368  -> 9.999999999999999E+384 Inexact Rounded
-addx6983 add      9999999999999999E+369  2E+368  -> 9.999999999999999E+384 Inexact Rounded
-addx6984 add      9999999999999999E+369  1E+368  -> 9.999999999999999E+384 Inexact Rounded
-
-addx6985 apply  -9.999999999999999E+384         -> -9.999999999999999E+384
-addx6986 add    -9.999999999999999E+384 -1      -> -9.999999999999999E+384 Inexact Rounded
-addx6987 add     -9999999999999999E+369 -1      -> -9.999999999999999E+384 Inexact Rounded
-addx6988 add     -9999999999999999E+369 -1E+369  -> -Infinity Overflow Inexact Rounded
-addx6989 add     -9999999999999999E+369 -9E+368  -> -Infinity Overflow Inexact Rounded
-addx6990 add     -9999999999999999E+369 -8E+368  -> -Infinity Overflow Inexact Rounded
-addx6991 add     -9999999999999999E+369 -7E+368  -> -Infinity Overflow Inexact Rounded
-addx6992 add     -9999999999999999E+369 -6E+368  -> -Infinity Overflow Inexact Rounded
-addx6993 add     -9999999999999999E+369 -5E+368  -> -Infinity Overflow Inexact Rounded
-addx6994 add     -9999999999999999E+369 -4E+368  -> -9.999999999999999E+384 Inexact Rounded
-addx6995 add     -9999999999999999E+369 -3E+368  -> -9.999999999999999E+384 Inexact Rounded
-addx6996 add     -9999999999999999E+369 -2E+368  -> -9.999999999999999E+384 Inexact Rounded
-addx6997 add     -9999999999999999E+369 -1E+368  -> -9.999999999999999E+384 Inexact Rounded
-
--- And for round down full and subnormal results
-rounding:     down
-addx61100 add 1e+2 -1e-383    -> 99.99999999999999 Rounded Inexact
-addx61101 add 1e+1 -1e-383    -> 9.999999999999999  Rounded Inexact
-addx61103 add   +1 -1e-383    -> 0.9999999999999999  Rounded Inexact
-addx61104 add 1e-1 -1e-383    -> 0.09999999999999999  Rounded Inexact
-addx61105 add 1e-2 -1e-383    -> 0.009999999999999999  Rounded Inexact
-addx61106 add 1e-3 -1e-383    -> 0.0009999999999999999  Rounded Inexact
-addx61107 add 1e-4 -1e-383    -> 0.00009999999999999999  Rounded Inexact
-addx61108 add 1e-5 -1e-383    -> 0.000009999999999999999  Rounded Inexact
-addx61109 add 1e-6 -1e-383    -> 9.999999999999999E-7  Rounded Inexact
-
-rounding:     ceiling
-addx61110 add -1e+2 +1e-383   -> -99.99999999999999 Rounded Inexact
-addx61111 add -1e+1 +1e-383   -> -9.999999999999999  Rounded Inexact
-addx61113 add    -1 +1e-383   -> -0.9999999999999999  Rounded Inexact
-addx61114 add -1e-1 +1e-383   -> -0.09999999999999999  Rounded Inexact
-addx61115 add -1e-2 +1e-383   -> -0.009999999999999999  Rounded Inexact
-addx61116 add -1e-3 +1e-383   -> -0.0009999999999999999  Rounded Inexact
-addx61117 add -1e-4 +1e-383   -> -0.00009999999999999999  Rounded Inexact
-addx61118 add -1e-5 +1e-383   -> -0.000009999999999999999  Rounded Inexact
-addx61119 add -1e-6 +1e-383   -> -9.999999999999999E-7  Rounded Inexact
-
--- tests based on Gunnar Degnbol's edge case
-rounding:     half_even
-
-addx61300 add 1E16  -0.5                 ->  1.000000000000000E+16 Inexact Rounded
-addx61310 add 1E16  -0.51                ->  9999999999999999      Inexact Rounded
-addx61311 add 1E16  -0.501               ->  9999999999999999      Inexact Rounded
-addx61312 add 1E16  -0.5001              ->  9999999999999999      Inexact Rounded
-addx61313 add 1E16  -0.50001             ->  9999999999999999      Inexact Rounded
-addx61314 add 1E16  -0.500001            ->  9999999999999999      Inexact Rounded
-addx61315 add 1E16  -0.5000001           ->  9999999999999999      Inexact Rounded
-addx61316 add 1E16  -0.50000001          ->  9999999999999999      Inexact Rounded
-addx61317 add 1E16  -0.500000001         ->  9999999999999999      Inexact Rounded
-addx61318 add 1E16  -0.5000000001        ->  9999999999999999      Inexact Rounded
-addx61319 add 1E16  -0.50000000001       ->  9999999999999999      Inexact Rounded
-addx61320 add 1E16  -0.500000000001      ->  9999999999999999      Inexact Rounded
-addx61321 add 1E16  -0.5000000000001     ->  9999999999999999      Inexact Rounded
-addx61322 add 1E16  -0.50000000000001    ->  9999999999999999      Inexact Rounded
-addx61323 add 1E16  -0.500000000000001   ->  9999999999999999      Inexact Rounded
-addx61324 add 1E16  -0.5000000000000001  ->  9999999999999999      Inexact Rounded
-addx61325 add 1E16  -0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
-addx61326 add 1E16  -0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
-addx61327 add 1E16  -0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
-addx61328 add 1E16  -0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
-addx61329 add 1E16  -0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
-addx61330 add 1E16  -0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
-addx61331 add 1E16  -0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
-addx61332 add 1E16  -0.500000000         ->  1.000000000000000E+16 Inexact Rounded
-addx61333 add 1E16  -0.50000000          ->  1.000000000000000E+16 Inexact Rounded
-addx61334 add 1E16  -0.5000000           ->  1.000000000000000E+16 Inexact Rounded
-addx61335 add 1E16  -0.500000            ->  1.000000000000000E+16 Inexact Rounded
-addx61336 add 1E16  -0.50000             ->  1.000000000000000E+16 Inexact Rounded
-addx61337 add 1E16  -0.5000              ->  1.000000000000000E+16 Inexact Rounded
-addx61338 add 1E16  -0.500               ->  1.000000000000000E+16 Inexact Rounded
-addx61339 add 1E16  -0.50                ->  1.000000000000000E+16 Inexact Rounded
-
-addx61340 add 1E16  -5000000.000010001   ->  9999999995000000      Inexact Rounded
-addx61341 add 1E16  -5000000.000000001   ->  9999999995000000      Inexact Rounded
-
-addx61349 add 9999999999999999 0.4                 ->  9999999999999999      Inexact Rounded
-addx61350 add 9999999999999999 0.49                ->  9999999999999999      Inexact Rounded
-addx61351 add 9999999999999999 0.499               ->  9999999999999999      Inexact Rounded
-addx61352 add 9999999999999999 0.4999              ->  9999999999999999      Inexact Rounded
-addx61353 add 9999999999999999 0.49999             ->  9999999999999999      Inexact Rounded
-addx61354 add 9999999999999999 0.499999            ->  9999999999999999      Inexact Rounded
-addx61355 add 9999999999999999 0.4999999           ->  9999999999999999      Inexact Rounded
-addx61356 add 9999999999999999 0.49999999          ->  9999999999999999      Inexact Rounded
-addx61357 add 9999999999999999 0.499999999         ->  9999999999999999      Inexact Rounded
-addx61358 add 9999999999999999 0.4999999999        ->  9999999999999999      Inexact Rounded
-addx61359 add 9999999999999999 0.49999999999       ->  9999999999999999      Inexact Rounded
-addx61360 add 9999999999999999 0.499999999999      ->  9999999999999999      Inexact Rounded
-addx61361 add 9999999999999999 0.4999999999999     ->  9999999999999999      Inexact Rounded
-addx61362 add 9999999999999999 0.49999999999999    ->  9999999999999999      Inexact Rounded
-addx61363 add 9999999999999999 0.499999999999999   ->  9999999999999999      Inexact Rounded
-addx61364 add 9999999999999999 0.4999999999999999  ->  9999999999999999      Inexact Rounded
-addx61365 add 9999999999999999 0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
-addx61367 add 9999999999999999 0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
-addx61368 add 9999999999999999 0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
-addx61369 add 9999999999999999 0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
-addx61370 add 9999999999999999 0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
-addx61371 add 9999999999999999 0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
-addx61372 add 9999999999999999 0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
-addx61373 add 9999999999999999 0.500000000         ->  1.000000000000000E+16 Inexact Rounded
-addx61374 add 9999999999999999 0.50000000          ->  1.000000000000000E+16 Inexact Rounded
-addx61375 add 9999999999999999 0.5000000           ->  1.000000000000000E+16 Inexact Rounded
-addx61376 add 9999999999999999 0.500000            ->  1.000000000000000E+16 Inexact Rounded
-addx61377 add 9999999999999999 0.50000             ->  1.000000000000000E+16 Inexact Rounded
-addx61378 add 9999999999999999 0.5000              ->  1.000000000000000E+16 Inexact Rounded
-addx61379 add 9999999999999999 0.500               ->  1.000000000000000E+16 Inexact Rounded
-addx61380 add 9999999999999999 0.50                ->  1.000000000000000E+16 Inexact Rounded
-addx61381 add 9999999999999999 0.5                 ->  1.000000000000000E+16 Inexact Rounded
-addx61382 add 9999999999999999 0.5000000000000001  ->  1.000000000000000E+16 Inexact Rounded
-addx61383 add 9999999999999999 0.500000000000001   ->  1.000000000000000E+16 Inexact Rounded
-addx61384 add 9999999999999999 0.50000000000001    ->  1.000000000000000E+16 Inexact Rounded
-addx61385 add 9999999999999999 0.5000000000001     ->  1.000000000000000E+16 Inexact Rounded
-addx61386 add 9999999999999999 0.500000000001      ->  1.000000000000000E+16 Inexact Rounded
-addx61387 add 9999999999999999 0.50000000001       ->  1.000000000000000E+16 Inexact Rounded
-addx61388 add 9999999999999999 0.5000000001        ->  1.000000000000000E+16 Inexact Rounded
-addx61389 add 9999999999999999 0.500000001         ->  1.000000000000000E+16 Inexact Rounded
-addx61390 add 9999999999999999 0.50000001          ->  1.000000000000000E+16 Inexact Rounded
-addx61391 add 9999999999999999 0.5000001           ->  1.000000000000000E+16 Inexact Rounded
-addx61392 add 9999999999999999 0.500001            ->  1.000000000000000E+16 Inexact Rounded
-addx61393 add 9999999999999999 0.50001             ->  1.000000000000000E+16 Inexact Rounded
-addx61394 add 9999999999999999 0.5001              ->  1.000000000000000E+16 Inexact Rounded
-addx61395 add 9999999999999999 0.501               ->  1.000000000000000E+16 Inexact Rounded
-addx61396 add 9999999999999999 0.51                ->  1.000000000000000E+16 Inexact Rounded
-
--- More GD edge cases, where difference between the unadjusted
--- exponents is larger than the maximum precision and one side is 0
-addx61420 add  0 1.123456789012345     -> 1.123456789012345
-addx61421 add  0 1.123456789012345E-1  -> 0.1123456789012345
-addx61422 add  0 1.123456789012345E-2  -> 0.01123456789012345
-addx61423 add  0 1.123456789012345E-3  -> 0.001123456789012345
-addx61424 add  0 1.123456789012345E-4  -> 0.0001123456789012345
-addx61425 add  0 1.123456789012345E-5  -> 0.00001123456789012345
-addx61426 add  0 1.123456789012345E-6  -> 0.000001123456789012345
-addx61427 add  0 1.123456789012345E-7  -> 1.123456789012345E-7
-addx61428 add  0 1.123456789012345E-8  -> 1.123456789012345E-8
-addx61429 add  0 1.123456789012345E-9  -> 1.123456789012345E-9
-addx61430 add  0 1.123456789012345E-10 -> 1.123456789012345E-10
-addx61431 add  0 1.123456789012345E-11 -> 1.123456789012345E-11
-addx61432 add  0 1.123456789012345E-12 -> 1.123456789012345E-12
-addx61433 add  0 1.123456789012345E-13 -> 1.123456789012345E-13
-addx61434 add  0 1.123456789012345E-14 -> 1.123456789012345E-14
-addx61435 add  0 1.123456789012345E-15 -> 1.123456789012345E-15
-addx61436 add  0 1.123456789012345E-16 -> 1.123456789012345E-16
-addx61437 add  0 1.123456789012345E-17 -> 1.123456789012345E-17
-addx61438 add  0 1.123456789012345E-18 -> 1.123456789012345E-18
-addx61439 add  0 1.123456789012345E-19 -> 1.123456789012345E-19
-
--- same, reversed 0
-addx61440 add 1.123456789012345     0 -> 1.123456789012345
-addx61441 add 1.123456789012345E-1  0 -> 0.1123456789012345
-addx61442 add 1.123456789012345E-2  0 -> 0.01123456789012345
-addx61443 add 1.123456789012345E-3  0 -> 0.001123456789012345
-addx61444 add 1.123456789012345E-4  0 -> 0.0001123456789012345
-addx61445 add 1.123456789012345E-5  0 -> 0.00001123456789012345
-addx61446 add 1.123456789012345E-6  0 -> 0.000001123456789012345
-addx61447 add 1.123456789012345E-7  0 -> 1.123456789012345E-7
-addx61448 add 1.123456789012345E-8  0 -> 1.123456789012345E-8
-addx61449 add 1.123456789012345E-9  0 -> 1.123456789012345E-9
-addx61450 add 1.123456789012345E-10 0 -> 1.123456789012345E-10
-addx61451 add 1.123456789012345E-11 0 -> 1.123456789012345E-11
-addx61452 add 1.123456789012345E-12 0 -> 1.123456789012345E-12
-addx61453 add 1.123456789012345E-13 0 -> 1.123456789012345E-13
-addx61454 add 1.123456789012345E-14 0 -> 1.123456789012345E-14
-addx61455 add 1.123456789012345E-15 0 -> 1.123456789012345E-15
-addx61456 add 1.123456789012345E-16 0 -> 1.123456789012345E-16
-addx61457 add 1.123456789012345E-17 0 -> 1.123456789012345E-17
-addx61458 add 1.123456789012345E-18 0 -> 1.123456789012345E-18
-addx61459 add 1.123456789012345E-19 0 -> 1.123456789012345E-19
-
--- same, Es on the 0
-addx61460 add 1.123456789012345  0E-0   -> 1.123456789012345
-addx61461 add 1.123456789012345  0E-1   -> 1.123456789012345
-addx61462 add 1.123456789012345  0E-2   -> 1.123456789012345
-addx61463 add 1.123456789012345  0E-3   -> 1.123456789012345
-addx61464 add 1.123456789012345  0E-4   -> 1.123456789012345
-addx61465 add 1.123456789012345  0E-5   -> 1.123456789012345
-addx61466 add 1.123456789012345  0E-6   -> 1.123456789012345
-addx61467 add 1.123456789012345  0E-7   -> 1.123456789012345
-addx61468 add 1.123456789012345  0E-8   -> 1.123456789012345
-addx61469 add 1.123456789012345  0E-9   -> 1.123456789012345
-addx61470 add 1.123456789012345  0E-10  -> 1.123456789012345
-addx61471 add 1.123456789012345  0E-11  -> 1.123456789012345
-addx61472 add 1.123456789012345  0E-12  -> 1.123456789012345
-addx61473 add 1.123456789012345  0E-13  -> 1.123456789012345
-addx61474 add 1.123456789012345  0E-14  -> 1.123456789012345
-addx61475 add 1.123456789012345  0E-15  -> 1.123456789012345
--- next four flag Rounded because the 0 extends the result
-addx61476 add 1.123456789012345  0E-16  -> 1.123456789012345 Rounded
-addx61477 add 1.123456789012345  0E-17  -> 1.123456789012345 Rounded
-addx61478 add 1.123456789012345  0E-18  -> 1.123456789012345 Rounded
-addx61479 add 1.123456789012345  0E-19  -> 1.123456789012345 Rounded
-
--- sum of two opposite-sign operands is exactly 0 and floor => -0
-rounding:    half_up
--- exact zeros from zeros
-addx61500 add  0        0E-19  ->  0E-19
-addx61501 add -0        0E-19  ->  0E-19
-addx61502 add  0       -0E-19  ->  0E-19
-addx61503 add -0       -0E-19  -> -0E-19
-addx61504 add  0E-400   0E-19  ->  0E-398 Clamped
-addx61505 add -0E-400   0E-19  ->  0E-398 Clamped
-addx61506 add  0E-400  -0E-19  ->  0E-398 Clamped
-addx61507 add -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-addx61511 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61512 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61513 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61514 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-addx61515 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61516 add -1E-401   1E-401 ->  0E-398 Clamped
-addx61517 add  1E-401  -1E-401 ->  0E-398 Clamped
-addx61518 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    half_down
--- exact zeros from zeros
-addx61520 add  0        0E-19  ->  0E-19
-addx61521 add -0        0E-19  ->  0E-19
-addx61522 add  0       -0E-19  ->  0E-19
-addx61523 add -0       -0E-19  -> -0E-19
-addx61524 add  0E-400   0E-19  ->  0E-398 Clamped
-addx61525 add -0E-400   0E-19  ->  0E-398 Clamped
-addx61526 add  0E-400  -0E-19  ->  0E-398 Clamped
-addx61527 add -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-addx61531 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61532 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61533 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61534 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-addx61535 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61536 add -1E-401   1E-401 ->  0E-398 Clamped
-addx61537 add  1E-401  -1E-401 ->  0E-398 Clamped
-addx61538 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    half_even
--- exact zeros from zeros
-addx61540 add  0        0E-19  ->  0E-19
-addx61541 add -0        0E-19  ->  0E-19
-addx61542 add  0       -0E-19  ->  0E-19
-addx61543 add -0       -0E-19  -> -0E-19
-addx61544 add  0E-400   0E-19  ->  0E-398 Clamped
-addx61545 add -0E-400   0E-19  ->  0E-398 Clamped
-addx61546 add  0E-400  -0E-19  ->  0E-398 Clamped
-addx61547 add -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-addx61551 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61552 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61553 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61554 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-addx61555 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61556 add -1E-401   1E-401 ->  0E-398 Clamped
-addx61557 add  1E-401  -1E-401 ->  0E-398 Clamped
-addx61558 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    up
--- exact zeros from zeros
-addx61560 add  0        0E-19  ->  0E-19
-addx61561 add -0        0E-19  ->  0E-19
-addx61562 add  0       -0E-19  ->  0E-19
-addx61563 add -0       -0E-19  -> -0E-19
-addx61564 add  0E-400   0E-19  ->  0E-398 Clamped
-addx61565 add -0E-400   0E-19  ->  0E-398 Clamped
-addx61566 add  0E-400  -0E-19  ->  0E-398 Clamped
-addx61567 add -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-addx61571 add  1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-addx61572 add -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-addx61573 add  1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
-addx61574 add -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
--- some exact zeros from non-zeros
-addx61575 add  1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
-addx61576 add -1E-401   1E-401 ->  0E-398 Clamped
-addx61577 add  1E-401  -1E-401 ->  0E-398 Clamped
-addx61578 add -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
-
-rounding:    down
--- exact zeros from zeros
-addx61580 add  0        0E-19  ->  0E-19
-addx61581 add -0        0E-19  ->  0E-19
-addx61582 add  0       -0E-19  ->  0E-19
-addx61583 add -0       -0E-19  -> -0E-19
-addx61584 add  0E-400   0E-19  ->  0E-398 Clamped
-addx61585 add -0E-400   0E-19  ->  0E-398 Clamped
-addx61586 add  0E-400  -0E-19  ->  0E-398 Clamped
-addx61587 add -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-addx61591 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61592 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61593 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61594 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-addx61595 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61596 add -1E-401   1E-401 ->  0E-398 Clamped
-addx61597 add  1E-401  -1E-401 ->  0E-398 Clamped
-addx61598 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    ceiling
--- exact zeros from zeros
-addx61600 add  0        0E-19  ->  0E-19
-addx61601 add -0        0E-19  ->  0E-19
-addx61602 add  0       -0E-19  ->  0E-19
-addx61603 add -0       -0E-19  -> -0E-19
-addx61604 add  0E-400   0E-19  ->  0E-398 Clamped
-addx61605 add -0E-400   0E-19  ->  0E-398 Clamped
-addx61606 add  0E-400  -0E-19  ->  0E-398 Clamped
-addx61607 add -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-addx61611 add  1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-addx61612 add -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-addx61613 add  1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61614 add -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-addx61615 add  1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
-addx61616 add -1E-401   1E-401 ->  0E-398 Clamped
-addx61617 add  1E-401  -1E-401 ->  0E-398 Clamped
-addx61618 add -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
--- and the extra-special ugly case; unusual minuses marked by -- *
-rounding:    floor
--- exact zeros from zeros
-addx61620 add  0        0E-19  ->  0E-19
-addx61621 add -0        0E-19  -> -0E-19           -- *
-addx61622 add  0       -0E-19  -> -0E-19           -- *
-addx61623 add -0       -0E-19  -> -0E-19
-addx61624 add  0E-400   0E-19  ->  0E-398 Clamped
-addx61625 add -0E-400   0E-19  -> -0E-398 Clamped  -- *
-addx61626 add  0E-400  -0E-19  -> -0E-398 Clamped  -- *
-addx61627 add -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-addx61631 add  1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61632 add -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61633 add  1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
-addx61634 add -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
--- some exact zeros from non-zeros
-addx61635 add  1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-addx61636 add -1E-401   1E-401 -> -0E-398 Clamped  -- *
-addx61637 add  1E-401  -1E-401 -> -0E-398 Clamped  -- *
-addx61638 add -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
-
--- Examples from SQL proposal (Krishna Kulkarni)
-addx61701 add 130E-2    120E-2    -> 2.50
-addx61702 add 130E-2    12E-1     -> 2.50
-addx61703 add 130E-2    1E0       -> 2.30
-addx61704 add 1E2       1E4       -> 1.01E+4
-addx61705 subtract 130E-2  120E-2 -> 0.10
-addx61706 subtract 130E-2  12E-1  -> 0.10
-addx61707 subtract 130E-2  1E0    -> 0.30
-addx61708 subtract 1E2     1E4    -> -9.9E+3
-
--- Gappy coefficients; check residue handling even with full coefficient gap
-rounding: half_even
-
-addx62001 add 1234567890123456 1      -> 1234567890123457
-addx62002 add 1234567890123456 0.6    -> 1234567890123457  Inexact Rounded
-addx62003 add 1234567890123456 0.06   -> 1234567890123456  Inexact Rounded
-addx62004 add 1234567890123456 6E-3   -> 1234567890123456  Inexact Rounded
-addx62005 add 1234567890123456 6E-4   -> 1234567890123456  Inexact Rounded
-addx62006 add 1234567890123456 6E-5   -> 1234567890123456  Inexact Rounded
-addx62007 add 1234567890123456 6E-6   -> 1234567890123456  Inexact Rounded
-addx62008 add 1234567890123456 6E-7   -> 1234567890123456  Inexact Rounded
-addx62009 add 1234567890123456 6E-8   -> 1234567890123456  Inexact Rounded
-addx62010 add 1234567890123456 6E-9   -> 1234567890123456  Inexact Rounded
-addx62011 add 1234567890123456 6E-10  -> 1234567890123456  Inexact Rounded
-addx62012 add 1234567890123456 6E-11  -> 1234567890123456  Inexact Rounded
-addx62013 add 1234567890123456 6E-12  -> 1234567890123456  Inexact Rounded
-addx62014 add 1234567890123456 6E-13  -> 1234567890123456  Inexact Rounded
-addx62015 add 1234567890123456 6E-14  -> 1234567890123456  Inexact Rounded
-addx62016 add 1234567890123456 6E-15  -> 1234567890123456  Inexact Rounded
-addx62017 add 1234567890123456 6E-16  -> 1234567890123456  Inexact Rounded
-addx62018 add 1234567890123456 6E-17  -> 1234567890123456  Inexact Rounded
-addx62019 add 1234567890123456 6E-18  -> 1234567890123456  Inexact Rounded
-addx62020 add 1234567890123456 6E-19  -> 1234567890123456  Inexact Rounded
-addx62021 add 1234567890123456 6E-20  -> 1234567890123456  Inexact Rounded
-
--- widening second argument at gap
-addx62030 add 12345678 1                       -> 12345679
-addx62031 add 12345678 0.1                     -> 12345678.1
-addx62032 add 12345678 0.12                    -> 12345678.12
-addx62033 add 12345678 0.123                   -> 12345678.123
-addx62034 add 12345678 0.1234                  -> 12345678.1234
-addx62035 add 12345678 0.12345                 -> 12345678.12345
-addx62036 add 12345678 0.123456                -> 12345678.123456
-addx62037 add 12345678 0.1234567               -> 12345678.1234567
-addx62038 add 12345678 0.12345678              -> 12345678.12345678
-addx62039 add 12345678 0.123456789             -> 12345678.12345679 Inexact Rounded
-addx62040 add 12345678 0.123456785             -> 12345678.12345678 Inexact Rounded
-addx62041 add 12345678 0.1234567850            -> 12345678.12345678 Inexact Rounded
-addx62042 add 12345678 0.1234567851            -> 12345678.12345679 Inexact Rounded
-addx62043 add 12345678 0.12345678501           -> 12345678.12345679 Inexact Rounded
-addx62044 add 12345678 0.123456785001          -> 12345678.12345679 Inexact Rounded
-addx62045 add 12345678 0.1234567850001         -> 12345678.12345679 Inexact Rounded
-addx62046 add 12345678 0.12345678500001        -> 12345678.12345679 Inexact Rounded
-addx62047 add 12345678 0.123456785000001       -> 12345678.12345679 Inexact Rounded
-addx62048 add 12345678 0.1234567850000001      -> 12345678.12345679 Inexact Rounded
-addx62049 add 12345678 0.1234567850000000      -> 12345678.12345678 Inexact Rounded
---                               90123456
-rounding: half_even
-addx62050 add 12345678 0.0234567750000000      -> 12345678.02345678 Inexact Rounded
-addx62051 add 12345678 0.0034567750000000      -> 12345678.00345678 Inexact Rounded
-addx62052 add 12345678 0.0004567750000000      -> 12345678.00045678 Inexact Rounded
-addx62053 add 12345678 0.0000567750000000      -> 12345678.00005678 Inexact Rounded
-addx62054 add 12345678 0.0000067750000000      -> 12345678.00000678 Inexact Rounded
-addx62055 add 12345678 0.0000007750000000      -> 12345678.00000078 Inexact Rounded
-addx62056 add 12345678 0.0000000750000000      -> 12345678.00000008 Inexact Rounded
-addx62057 add 12345678 0.0000000050000000      -> 12345678.00000000 Inexact Rounded
-addx62060 add 12345678 0.0234567750000001      -> 12345678.02345678 Inexact Rounded
-addx62061 add 12345678 0.0034567750000001      -> 12345678.00345678 Inexact Rounded
-addx62062 add 12345678 0.0004567750000001      -> 12345678.00045678 Inexact Rounded
-addx62063 add 12345678 0.0000567750000001      -> 12345678.00005678 Inexact Rounded
-addx62064 add 12345678 0.0000067750000001      -> 12345678.00000678 Inexact Rounded
-addx62065 add 12345678 0.0000007750000001      -> 12345678.00000078 Inexact Rounded
-addx62066 add 12345678 0.0000000750000001      -> 12345678.00000008 Inexact Rounded
-addx62067 add 12345678 0.0000000050000001      -> 12345678.00000001 Inexact Rounded
--- far-out residues (full coefficient gap is 16+15 digits)
-rounding: up
-addx62070 add 12345678 1E-8                    -> 12345678.00000001
-addx62071 add 12345678 1E-9                    -> 12345678.00000001 Inexact Rounded
-addx62072 add 12345678 1E-10                   -> 12345678.00000001 Inexact Rounded
-addx62073 add 12345678 1E-11                   -> 12345678.00000001 Inexact Rounded
-addx62074 add 12345678 1E-12                   -> 12345678.00000001 Inexact Rounded
-addx62075 add 12345678 1E-13                   -> 12345678.00000001 Inexact Rounded
-addx62076 add 12345678 1E-14                   -> 12345678.00000001 Inexact Rounded
-addx62077 add 12345678 1E-15                   -> 12345678.00000001 Inexact Rounded
-addx62078 add 12345678 1E-16                   -> 12345678.00000001 Inexact Rounded
-addx62079 add 12345678 1E-17                   -> 12345678.00000001 Inexact Rounded
-addx62080 add 12345678 1E-18                   -> 12345678.00000001 Inexact Rounded
-addx62081 add 12345678 1E-19                   -> 12345678.00000001 Inexact Rounded
-addx62082 add 12345678 1E-20                   -> 12345678.00000001 Inexact Rounded
-addx62083 add 12345678 1E-25                   -> 12345678.00000001 Inexact Rounded
-addx62084 add 12345678 1E-30                   -> 12345678.00000001 Inexact Rounded
-addx62085 add 12345678 1E-31                   -> 12345678.00000001 Inexact Rounded
-addx62086 add 12345678 1E-32                   -> 12345678.00000001 Inexact Rounded
-addx62087 add 12345678 1E-33                   -> 12345678.00000001 Inexact Rounded
-addx62088 add 12345678 1E-34                   -> 12345678.00000001 Inexact Rounded
-addx62089 add 12345678 1E-35                   -> 12345678.00000001 Inexact Rounded
-
--- payload decapitate
-precision: 5
-addx62100 add      11  sNaN123456789 ->  NaN56789  Invalid_operation
-addx62101 add     -11 -sNaN123456789 -> -NaN56789  Invalid_operation
-addx62102 add      11   NaN123456789 ->  NaN56789
-addx62103 add     -11  -NaN123456789 -> -NaN56789
-
--- Null tests
-addx9990 add 10  # -> NaN Invalid_operation
-addx9991 add  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/and.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/and.decTest
deleted file mode 100644
index e912394..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/and.decTest
+++ /dev/null
@@ -1,338 +0,0 @@
-------------------------------------------------------------------------
--- and.decTest -- digitwise logical AND                               --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minExponent: -999
-
--- Sanity check (truth table)
-andx001 and             0    0 ->    0
-andx002 and             0    1 ->    0
-andx003 and             1    0 ->    0
-andx004 and             1    1 ->    1
-andx005 and          1100 1010 -> 1000
-andx006 and          1111   10 ->   10
-andx007 and          1111 1010 -> 1010
-
--- and at msd and msd-1
-andx010 and 000000000 000000000 ->           0
-andx011 and 000000000 100000000 ->           0
-andx012 and 100000000 000000000 ->           0
-andx013 and 100000000 100000000 ->   100000000
-andx014 and 000000000 000000000 ->           0
-andx015 and 000000000 010000000 ->           0
-andx016 and 010000000 000000000 ->           0
-andx017 and 010000000 010000000 ->    10000000
-
--- Various lengths
---          123456789     123456789      123456789
-andx021 and 111111111     111111111  ->  111111111
-andx022 and 111111111111  111111111  ->  111111111
-andx023 and 111111111111   11111111  ->   11111111
-andx024 and 111111111      11111111  ->   11111111
-andx025 and 111111111       1111111  ->    1111111
-andx026 and 111111111111     111111  ->     111111
-andx027 and 111111111111      11111  ->      11111
-andx028 and 111111111111       1111  ->       1111
-andx029 and 111111111111        111  ->        111
-andx031 and 111111111111         11  ->         11
-andx032 and 111111111111          1  ->          1
-andx033 and 111111111111 1111111111  ->  111111111
-andx034 and 11111111111 11111111111  ->  111111111
-andx035 and 1111111111 111111111111  ->  111111111
-andx036 and 111111111 1111111111111  ->  111111111
-
-andx040 and 111111111  111111111111  ->  111111111
-andx041 and  11111111  111111111111  ->   11111111
-andx042 and  11111111     111111111  ->   11111111
-andx043 and   1111111     111111111  ->    1111111
-andx044 and    111111     111111111  ->     111111
-andx045 and     11111     111111111  ->      11111
-andx046 and      1111     111111111  ->       1111
-andx047 and       111     111111111  ->        111
-andx048 and        11     111111111  ->         11
-andx049 and         1     111111111  ->          1
-
-andx050 and 1111111111  1  ->  1
-andx051 and  111111111  1  ->  1
-andx052 and   11111111  1  ->  1
-andx053 and    1111111  1  ->  1
-andx054 and     111111  1  ->  1
-andx055 and      11111  1  ->  1
-andx056 and       1111  1  ->  1
-andx057 and        111  1  ->  1
-andx058 and         11  1  ->  1
-andx059 and          1  1  ->  1
-
-andx060 and 1111111111  0  ->  0
-andx061 and  111111111  0  ->  0
-andx062 and   11111111  0  ->  0
-andx063 and    1111111  0  ->  0
-andx064 and     111111  0  ->  0
-andx065 and      11111  0  ->  0
-andx066 and       1111  0  ->  0
-andx067 and        111  0  ->  0
-andx068 and         11  0  ->  0
-andx069 and          1  0  ->  0
-
-andx070 and 1  1111111111  ->  1
-andx071 and 1   111111111  ->  1
-andx072 and 1    11111111  ->  1
-andx073 and 1     1111111  ->  1
-andx074 and 1      111111  ->  1
-andx075 and 1       11111  ->  1
-andx076 and 1        1111  ->  1
-andx077 and 1         111  ->  1
-andx078 and 1          11  ->  1
-andx079 and 1           1  ->  1
-
-andx080 and 0  1111111111  ->  0
-andx081 and 0   111111111  ->  0
-andx082 and 0    11111111  ->  0
-andx083 and 0     1111111  ->  0
-andx084 and 0      111111  ->  0
-andx085 and 0       11111  ->  0
-andx086 and 0        1111  ->  0
-andx087 and 0         111  ->  0
-andx088 and 0          11  ->  0
-andx089 and 0           1  ->  0
-
-andx090 and 011111111  111111111  ->   11111111
-andx091 and 101111111  111111111  ->  101111111
-andx092 and 110111111  111111111  ->  110111111
-andx093 and 111011111  111111111  ->  111011111
-andx094 and 111101111  111111111  ->  111101111
-andx095 and 111110111  111111111  ->  111110111
-andx096 and 111111011  111111111  ->  111111011
-andx097 and 111111101  111111111  ->  111111101
-andx098 and 111111110  111111111  ->  111111110
-
-andx100 and 111111111  011111111  ->   11111111
-andx101 and 111111111  101111111  ->  101111111
-andx102 and 111111111  110111111  ->  110111111
-andx103 and 111111111  111011111  ->  111011111
-andx104 and 111111111  111101111  ->  111101111
-andx105 and 111111111  111110111  ->  111110111
-andx106 and 111111111  111111011  ->  111111011
-andx107 and 111111111  111111101  ->  111111101
-andx108 and 111111111  111111110  ->  111111110
-
--- non-0/1 should not be accepted, nor should signs
-andx220 and 111111112  111111111  ->  NaN Invalid_operation
-andx221 and 333333333  333333333  ->  NaN Invalid_operation
-andx222 and 555555555  555555555  ->  NaN Invalid_operation
-andx223 and 777777777  777777777  ->  NaN Invalid_operation
-andx224 and 999999999  999999999  ->  NaN Invalid_operation
-andx225 and 222222222  999999999  ->  NaN Invalid_operation
-andx226 and 444444444  999999999  ->  NaN Invalid_operation
-andx227 and 666666666  999999999  ->  NaN Invalid_operation
-andx228 and 888888888  999999999  ->  NaN Invalid_operation
-andx229 and 999999999  222222222  ->  NaN Invalid_operation
-andx230 and 999999999  444444444  ->  NaN Invalid_operation
-andx231 and 999999999  666666666  ->  NaN Invalid_operation
-andx232 and 999999999  888888888  ->  NaN Invalid_operation
--- a few randoms
-andx240 and  567468689 -934981942 ->  NaN Invalid_operation
-andx241 and  567367689  934981942 ->  NaN Invalid_operation
-andx242 and -631917772 -706014634 ->  NaN Invalid_operation
-andx243 and -756253257  138579234 ->  NaN Invalid_operation
-andx244 and  835590149  567435400 ->  NaN Invalid_operation
--- test MSD
-andx250 and  200000000 100000000 ->  NaN Invalid_operation
-andx251 and  700000000 100000000 ->  NaN Invalid_operation
-andx252 and  800000000 100000000 ->  NaN Invalid_operation
-andx253 and  900000000 100000000 ->  NaN Invalid_operation
-andx254 and  200000000 000000000 ->  NaN Invalid_operation
-andx255 and  700000000 000000000 ->  NaN Invalid_operation
-andx256 and  800000000 000000000 ->  NaN Invalid_operation
-andx257 and  900000000 000000000 ->  NaN Invalid_operation
-andx258 and  100000000 200000000 ->  NaN Invalid_operation
-andx259 and  100000000 700000000 ->  NaN Invalid_operation
-andx260 and  100000000 800000000 ->  NaN Invalid_operation
-andx261 and  100000000 900000000 ->  NaN Invalid_operation
-andx262 and  000000000 200000000 ->  NaN Invalid_operation
-andx263 and  000000000 700000000 ->  NaN Invalid_operation
-andx264 and  000000000 800000000 ->  NaN Invalid_operation
-andx265 and  000000000 900000000 ->  NaN Invalid_operation
--- test MSD-1
-andx270 and  020000000 100000000 ->  NaN Invalid_operation
-andx271 and  070100000 100000000 ->  NaN Invalid_operation
-andx272 and  080010000 100000001 ->  NaN Invalid_operation
-andx273 and  090001000 100000010 ->  NaN Invalid_operation
-andx274 and  100000100 020010100 ->  NaN Invalid_operation
-andx275 and  100000000 070001000 ->  NaN Invalid_operation
-andx276 and  100000010 080010100 ->  NaN Invalid_operation
-andx277 and  100000000 090000010 ->  NaN Invalid_operation
--- test LSD
-andx280 and  001000002 100000000 ->  NaN Invalid_operation
-andx281 and  000000007 100000000 ->  NaN Invalid_operation
-andx282 and  000000008 100000000 ->  NaN Invalid_operation
-andx283 and  000000009 100000000 ->  NaN Invalid_operation
-andx284 and  100000000 000100002 ->  NaN Invalid_operation
-andx285 and  100100000 001000007 ->  NaN Invalid_operation
-andx286 and  100010000 010000008 ->  NaN Invalid_operation
-andx287 and  100001000 100000009 ->  NaN Invalid_operation
--- test Middie
-andx288 and  001020000 100000000 ->  NaN Invalid_operation
-andx289 and  000070001 100000000 ->  NaN Invalid_operation
-andx290 and  000080000 100010000 ->  NaN Invalid_operation
-andx291 and  000090000 100001000 ->  NaN Invalid_operation
-andx292 and  100000010 000020100 ->  NaN Invalid_operation
-andx293 and  100100000 000070010 ->  NaN Invalid_operation
-andx294 and  100010100 000080001 ->  NaN Invalid_operation
-andx295 and  100001000 000090000 ->  NaN Invalid_operation
--- signs
-andx296 and -100001000 -000000000 ->  NaN Invalid_operation
-andx297 and -100001000  000010000 ->  NaN Invalid_operation
-andx298 and  100001000 -000000000 ->  NaN Invalid_operation
-andx299 and  100001000  000011000 ->  1000
-
--- Nmax, Nmin, Ntiny
-andx331 and  2   9.99999999E+999     -> NaN Invalid_operation
-andx332 and  3   1E-999              -> NaN Invalid_operation
-andx333 and  4   1.00000000E-999     -> NaN Invalid_operation
-andx334 and  5   1E-1007             -> NaN Invalid_operation
-andx335 and  6   -1E-1007            -> NaN Invalid_operation
-andx336 and  7   -1.00000000E-999    -> NaN Invalid_operation
-andx337 and  8   -1E-999             -> NaN Invalid_operation
-andx338 and  9   -9.99999999E+999    -> NaN Invalid_operation
-andx341 and  9.99999999E+999     -18 -> NaN Invalid_operation
-andx342 and  1E-999               01 -> NaN Invalid_operation
-andx343 and  1.00000000E-999     -18 -> NaN Invalid_operation
-andx344 and  1E-1007              18 -> NaN Invalid_operation
-andx345 and  -1E-1007            -10 -> NaN Invalid_operation
-andx346 and  -1.00000000E-999     18 -> NaN Invalid_operation
-andx347 and  -1E-999              10 -> NaN Invalid_operation
-andx348 and  -9.99999999E+999    -18 -> NaN Invalid_operation
-
--- A few other non-integers
-andx361 and  1.0                  1  -> NaN Invalid_operation
-andx362 and  1E+1                 1  -> NaN Invalid_operation
-andx363 and  0.0                  1  -> NaN Invalid_operation
-andx364 and  0E+1                 1  -> NaN Invalid_operation
-andx365 and  9.9                  1  -> NaN Invalid_operation
-andx366 and  9E+1                 1  -> NaN Invalid_operation
-andx371 and  0 1.0                   -> NaN Invalid_operation
-andx372 and  0 1E+1                  -> NaN Invalid_operation
-andx373 and  0 0.0                   -> NaN Invalid_operation
-andx374 and  0 0E+1                  -> NaN Invalid_operation
-andx375 and  0 9.9                   -> NaN Invalid_operation
-andx376 and  0 9E+1                  -> NaN Invalid_operation
-
--- All Specials are in error
-andx780 and -Inf  -Inf   -> NaN Invalid_operation
-andx781 and -Inf  -1000  -> NaN Invalid_operation
-andx782 and -Inf  -1     -> NaN Invalid_operation
-andx783 and -Inf  -0     -> NaN Invalid_operation
-andx784 and -Inf   0     -> NaN Invalid_operation
-andx785 and -Inf   1     -> NaN Invalid_operation
-andx786 and -Inf   1000  -> NaN Invalid_operation
-andx787 and -1000 -Inf   -> NaN Invalid_operation
-andx788 and -Inf  -Inf   -> NaN Invalid_operation
-andx789 and -1    -Inf   -> NaN Invalid_operation
-andx790 and -0    -Inf   -> NaN Invalid_operation
-andx791 and  0    -Inf   -> NaN Invalid_operation
-andx792 and  1    -Inf   -> NaN Invalid_operation
-andx793 and  1000 -Inf   -> NaN Invalid_operation
-andx794 and  Inf  -Inf   -> NaN Invalid_operation
-
-andx800 and  Inf  -Inf   -> NaN Invalid_operation
-andx801 and  Inf  -1000  -> NaN Invalid_operation
-andx802 and  Inf  -1     -> NaN Invalid_operation
-andx803 and  Inf  -0     -> NaN Invalid_operation
-andx804 and  Inf   0     -> NaN Invalid_operation
-andx805 and  Inf   1     -> NaN Invalid_operation
-andx806 and  Inf   1000  -> NaN Invalid_operation
-andx807 and  Inf   Inf   -> NaN Invalid_operation
-andx808 and -1000  Inf   -> NaN Invalid_operation
-andx809 and -Inf   Inf   -> NaN Invalid_operation
-andx810 and -1     Inf   -> NaN Invalid_operation
-andx811 and -0     Inf   -> NaN Invalid_operation
-andx812 and  0     Inf   -> NaN Invalid_operation
-andx813 and  1     Inf   -> NaN Invalid_operation
-andx814 and  1000  Inf   -> NaN Invalid_operation
-andx815 and  Inf   Inf   -> NaN Invalid_operation
-
-andx821 and  NaN -Inf    -> NaN Invalid_operation
-andx822 and  NaN -1000   -> NaN Invalid_operation
-andx823 and  NaN -1      -> NaN Invalid_operation
-andx824 and  NaN -0      -> NaN Invalid_operation
-andx825 and  NaN  0      -> NaN Invalid_operation
-andx826 and  NaN  1      -> NaN Invalid_operation
-andx827 and  NaN  1000   -> NaN Invalid_operation
-andx828 and  NaN  Inf    -> NaN Invalid_operation
-andx829 and  NaN  NaN    -> NaN Invalid_operation
-andx830 and -Inf  NaN    -> NaN Invalid_operation
-andx831 and -1000 NaN    -> NaN Invalid_operation
-andx832 and -1    NaN    -> NaN Invalid_operation
-andx833 and -0    NaN    -> NaN Invalid_operation
-andx834 and  0    NaN    -> NaN Invalid_operation
-andx835 and  1    NaN    -> NaN Invalid_operation
-andx836 and  1000 NaN    -> NaN Invalid_operation
-andx837 and  Inf  NaN    -> NaN Invalid_operation
-
-andx841 and  sNaN -Inf   ->  NaN  Invalid_operation
-andx842 and  sNaN -1000  ->  NaN  Invalid_operation
-andx843 and  sNaN -1     ->  NaN  Invalid_operation
-andx844 and  sNaN -0     ->  NaN  Invalid_operation
-andx845 and  sNaN  0     ->  NaN  Invalid_operation
-andx846 and  sNaN  1     ->  NaN  Invalid_operation
-andx847 and  sNaN  1000  ->  NaN  Invalid_operation
-andx848 and  sNaN  NaN   ->  NaN  Invalid_operation
-andx849 and  sNaN sNaN   ->  NaN  Invalid_operation
-andx850 and  NaN  sNaN   ->  NaN  Invalid_operation
-andx851 and -Inf  sNaN   ->  NaN  Invalid_operation
-andx852 and -1000 sNaN   ->  NaN  Invalid_operation
-andx853 and -1    sNaN   ->  NaN  Invalid_operation
-andx854 and -0    sNaN   ->  NaN  Invalid_operation
-andx855 and  0    sNaN   ->  NaN  Invalid_operation
-andx856 and  1    sNaN   ->  NaN  Invalid_operation
-andx857 and  1000 sNaN   ->  NaN  Invalid_operation
-andx858 and  Inf  sNaN   ->  NaN  Invalid_operation
-andx859 and  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-andx861 and  NaN1   -Inf    -> NaN Invalid_operation
-andx862 and +NaN2   -1000   -> NaN Invalid_operation
-andx863 and  NaN3    1000   -> NaN Invalid_operation
-andx864 and  NaN4    Inf    -> NaN Invalid_operation
-andx865 and  NaN5   +NaN6   -> NaN Invalid_operation
-andx866 and -Inf     NaN7   -> NaN Invalid_operation
-andx867 and -1000    NaN8   -> NaN Invalid_operation
-andx868 and  1000    NaN9   -> NaN Invalid_operation
-andx869 and  Inf    +NaN10  -> NaN Invalid_operation
-andx871 and  sNaN11  -Inf   -> NaN Invalid_operation
-andx872 and  sNaN12  -1000  -> NaN Invalid_operation
-andx873 and  sNaN13   1000  -> NaN Invalid_operation
-andx874 and  sNaN14   NaN17 -> NaN Invalid_operation
-andx875 and  sNaN15  sNaN18 -> NaN Invalid_operation
-andx876 and  NaN16   sNaN19 -> NaN Invalid_operation
-andx877 and -Inf    +sNaN20 -> NaN Invalid_operation
-andx878 and -1000    sNaN21 -> NaN Invalid_operation
-andx879 and  1000    sNaN22 -> NaN Invalid_operation
-andx880 and  Inf     sNaN23 -> NaN Invalid_operation
-andx881 and +NaN25  +sNaN24 -> NaN Invalid_operation
-andx882 and -NaN26    NaN28 -> NaN Invalid_operation
-andx883 and -sNaN27  sNaN29 -> NaN Invalid_operation
-andx884 and  1000    -NaN30 -> NaN Invalid_operation
-andx885 and  1000   -sNaN31 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/base.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/base.decTest
deleted file mode 100644
index 6196a9a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/base.decTest
+++ /dev/null
@@ -1,1411 +0,0 @@
-------------------------------------------------------------------------
--- base.decTest -- base decimal <--> string conversions               --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-extended:    1
-
--- This file tests base conversions from string to a decimal number
--- and back to a string (in either Scientific or Engineering form)
-
--- Note that unlike other operations the operand is subject to rounding
--- to conform to emax and precision settings (that is, numbers will
--- conform to rules and exponent will be in permitted range).
-
-precision:   16
-rounding:    half_up
-maxExponent: 384
-minExponent: -383
-
-basx001 toSci       0 -> 0
-basx002 toSci       1 -> 1
-basx003 toSci     1.0 -> 1.0
-basx004 toSci    1.00 -> 1.00
-basx005 toSci      10 -> 10
-basx006 toSci    1000 -> 1000
-basx007 toSci    10.0 -> 10.0
-basx008 toSci    10.1 -> 10.1
-basx009 toSci    10.4 -> 10.4
-basx010 toSci    10.5 -> 10.5
-basx011 toSci    10.6 -> 10.6
-basx012 toSci    10.9 -> 10.9
-basx013 toSci    11.0 -> 11.0
-basx014 toSci  1.234 -> 1.234
-basx015 toSci  0.123 -> 0.123
-basx016 toSci  0.012 -> 0.012
-basx017 toSci  -0    -> -0
-basx018 toSci  -0.0  -> -0.0
-basx019 toSci -00.00 -> -0.00
-
-basx021 toSci     -1 -> -1
-basx022 toSci   -1.0 -> -1.0
-basx023 toSci   -0.1 -> -0.1
-basx024 toSci   -9.1 -> -9.1
-basx025 toSci   -9.11 -> -9.11
-basx026 toSci   -9.119 -> -9.119
-basx027 toSci   -9.999 -> -9.999
-
-basx030 toSci  '123456789.123456'   -> '123456789.123456'
-basx031 toSci  '123456789.000000'   -> '123456789.000000'
-basx032 toSci   '123456789123456'   -> '123456789123456'
-basx033 toSci   '0.0000123456789'   -> '0.0000123456789'
-basx034 toSci  '0.00000123456789'   -> '0.00000123456789'
-basx035 toSci '0.000000123456789'   -> '1.23456789E-7'
-basx036 toSci '0.0000000123456789'  -> '1.23456789E-8'
-
-basx037 toSci '0.123456789012344'   -> '0.123456789012344'
-basx038 toSci '0.123456789012345'   -> '0.123456789012345'
-
--- String [many more examples are implicitly tested elsewhere]
--- strings without E cannot generate E in result
-basx040 toSci "12"        -> '12'
-basx041 toSci "-76"       -> '-76'
-basx042 toSci "12.76"     -> '12.76'
-basx043 toSci "+12.76"    -> '12.76'
-basx044 toSci "012.76"    -> '12.76'
-basx045 toSci "+0.003"    -> '0.003'
-basx046 toSci "17."       -> '17'
-basx047 toSci ".5"        -> '0.5'
-basx048 toSci "044"       -> '44'
-basx049 toSci "0044"      -> '44'
-basx050 toSci "0.0005"      -> '0.0005'
-basx051 toSci "00.00005"    -> '0.00005'
-basx052 toSci "0.000005"    -> '0.000005'
-basx053 toSci "0.0000050"   -> '0.0000050'
-basx054 toSci "0.0000005"   -> '5E-7'
-basx055 toSci "0.00000005"  -> '5E-8'
-basx056 toSci "12345678.543210" -> '12345678.543210'
-basx057 toSci "2345678.543210" -> '2345678.543210'
-basx058 toSci "345678.543210" -> '345678.543210'
-basx059 toSci "0345678.54321" -> '345678.54321'
-basx060 toSci "345678.5432" -> '345678.5432'
-basx061 toSci "+345678.5432" -> '345678.5432'
-basx062 toSci "+0345678.5432" -> '345678.5432'
-basx063 toSci "+00345678.5432" -> '345678.5432'
-basx064 toSci "-345678.5432"  -> '-345678.5432'
-basx065 toSci "-0345678.5432"  -> '-345678.5432'
-basx066 toSci "-00345678.5432"  -> '-345678.5432'
--- examples
-basx067 toSci "5E-6"        -> '0.000005'
-basx068 toSci "50E-7"       -> '0.0000050'
-basx069 toSci "5E-7"        -> '5E-7'
-
--- [No exotics as no Unicode]
-
--- rounded with dots in all (including edge) places
-basx071 toSci  .1234567890123456123  -> 0.1234567890123456 Inexact Rounded
-basx072 toSci  1.234567890123456123  -> 1.234567890123456 Inexact Rounded
-basx073 toSci  12.34567890123456123  -> 12.34567890123456 Inexact Rounded
-basx074 toSci  123.4567890123456123  -> 123.4567890123456 Inexact Rounded
-basx075 toSci  1234.567890123456123  -> 1234.567890123456 Inexact Rounded
-basx076 toSci  12345.67890123456123  -> 12345.67890123456 Inexact Rounded
-basx077 toSci  123456.7890123456123  -> 123456.7890123456 Inexact Rounded
-basx078 toSci  1234567.890123456123  -> 1234567.890123456 Inexact Rounded
-basx079 toSci  12345678.90123456123  -> 12345678.90123456 Inexact Rounded
-basx080 toSci  123456789.0123456123  -> 123456789.0123456 Inexact Rounded
-basx081 toSci  1234567890.123456123  -> 1234567890.123456 Inexact Rounded
-basx082 toSci  12345678901.23456123  -> 12345678901.23456 Inexact Rounded
-basx083 toSci  123456789012.3456123  -> 123456789012.3456 Inexact Rounded
-basx084 toSci  1234567890123.456123  -> 1234567890123.456 Inexact Rounded
-basx085 toSci  12345678901234.56123  -> 12345678901234.56 Inexact Rounded
-basx086 toSci  123456789012345.6123  -> 123456789012345.6 Inexact Rounded
-basx087 toSci  1234567890123456.123  -> 1234567890123456  Inexact Rounded
-basx088 toSci  12345678901234561.23  -> 1.234567890123456E+16 Inexact Rounded
-basx089 toSci  123456789012345612.3  -> 1.234567890123456E+17 Inexact Rounded
-basx090 toSci  1234567890123456123.  -> 1.234567890123456E+18 Inexact Rounded
-
--- Numbers with E
-basx130 toSci "0.000E-1"  -> '0.0000'
-basx131 toSci "0.000E-2"  -> '0.00000'
-basx132 toSci "0.000E-3"  -> '0.000000'
-basx133 toSci "0.000E-4"  -> '0E-7'
-basx134 toSci "0.00E-2"   -> '0.0000'
-basx135 toSci "0.00E-3"   -> '0.00000'
-basx136 toSci "0.00E-4"   -> '0.000000'
-basx137 toSci "0.00E-5"   -> '0E-7'
-basx138 toSci "+0E+9"     -> '0E+9'
-basx139 toSci "-0E+9"     -> '-0E+9'
-basx140 toSci "1E+9"      -> '1E+9'
-basx141 toSci "1e+09"     -> '1E+9'
-basx142 toSci "1E+90"     -> '1E+90'
-basx143 toSci "+1E+009"   -> '1E+9'
-basx144 toSci "0E+9"      -> '0E+9'
-basx145 toSci "1E+9"      -> '1E+9'
-basx146 toSci "1E+09"     -> '1E+9'
-basx147 toSci "1e+90"     -> '1E+90'
-basx148 toSci "1E+009"    -> '1E+9'
-basx149 toSci "000E+9"    -> '0E+9'
-basx150 toSci "1E9"       -> '1E+9'
-basx151 toSci "1e09"      -> '1E+9'
-basx152 toSci "1E90"      -> '1E+90'
-basx153 toSci "1E009"     -> '1E+9'
-basx154 toSci "0E9"       -> '0E+9'
-basx155 toSci "0.000e+0"  -> '0.000'
-basx156 toSci "0.000E-1"  -> '0.0000'
-basx157 toSci "4E+9"      -> '4E+9'
-basx158 toSci "44E+9"     -> '4.4E+10'
-basx159 toSci "0.73e-7"   -> '7.3E-8'
-basx160 toSci "00E+9"     -> '0E+9'
-basx161 toSci "00E-9"     -> '0E-9'
-basx162 toSci "10E+9"     -> '1.0E+10'
-basx163 toSci "10E+09"    -> '1.0E+10'
-basx164 toSci "10e+90"    -> '1.0E+91'
-basx165 toSci "10E+009"   -> '1.0E+10'
-basx166 toSci "100e+9"    -> '1.00E+11'
-basx167 toSci "100e+09"   -> '1.00E+11'
-basx168 toSci "100E+90"   -> '1.00E+92'
-basx169 toSci "100e+009"  -> '1.00E+11'
-
-basx170 toSci "1.265"     -> '1.265'
-basx171 toSci "1.265E-20" -> '1.265E-20'
-basx172 toSci "1.265E-8"  -> '1.265E-8'
-basx173 toSci "1.265E-4"  -> '0.0001265'
-basx174 toSci "1.265E-3"  -> '0.001265'
-basx175 toSci "1.265E-2"  -> '0.01265'
-basx176 toSci "1.265E-1"  -> '0.1265'
-basx177 toSci "1.265E-0"  -> '1.265'
-basx178 toSci "1.265E+1"  -> '12.65'
-basx179 toSci "1.265E+2"  -> '126.5'
-basx180 toSci "1.265E+3"  -> '1265'
-basx181 toSci "1.265E+4"  -> '1.265E+4'
-basx182 toSci "1.265E+8"  -> '1.265E+8'
-basx183 toSci "1.265E+20" -> '1.265E+20'
-
-basx190 toSci "12.65"     -> '12.65'
-basx191 toSci "12.65E-20" -> '1.265E-19'
-basx192 toSci "12.65E-8"  -> '1.265E-7'
-basx193 toSci "12.65E-4"  -> '0.001265'
-basx194 toSci "12.65E-3"  -> '0.01265'
-basx195 toSci "12.65E-2"  -> '0.1265'
-basx196 toSci "12.65E-1"  -> '1.265'
-basx197 toSci "12.65E-0"  -> '12.65'
-basx198 toSci "12.65E+1"  -> '126.5'
-basx199 toSci "12.65E+2"  -> '1265'
-basx200 toSci "12.65E+3"  -> '1.265E+4'
-basx201 toSci "12.65E+4"  -> '1.265E+5'
-basx202 toSci "12.65E+8"  -> '1.265E+9'
-basx203 toSci "12.65E+20" -> '1.265E+21'
-
-basx210 toSci "126.5"     -> '126.5'
-basx211 toSci "126.5E-20" -> '1.265E-18'
-basx212 toSci "126.5E-8"  -> '0.000001265'
-basx213 toSci "126.5E-4"  -> '0.01265'
-basx214 toSci "126.5E-3"  -> '0.1265'
-basx215 toSci "126.5E-2"  -> '1.265'
-basx216 toSci "126.5E-1"  -> '12.65'
-basx217 toSci "126.5E-0"  -> '126.5'
-basx218 toSci "126.5E+1"  -> '1265'
-basx219 toSci "126.5E+2"  -> '1.265E+4'
-basx220 toSci "126.5E+3"  -> '1.265E+5'
-basx221 toSci "126.5E+4"  -> '1.265E+6'
-basx222 toSci "126.5E+8"  -> '1.265E+10'
-basx223 toSci "126.5E+20" -> '1.265E+22'
-
-basx230 toSci "1265"     -> '1265'
-basx231 toSci "1265E-20" -> '1.265E-17'
-basx232 toSci "1265E-8"  -> '0.00001265'
-basx233 toSci "1265E-4"  -> '0.1265'
-basx234 toSci "1265E-3"  -> '1.265'
-basx235 toSci "1265E-2"  -> '12.65'
-basx236 toSci "1265E-1"  -> '126.5'
-basx237 toSci "1265E-0"  -> '1265'
-basx238 toSci "1265E+1"  -> '1.265E+4'
-basx239 toSci "1265E+2"  -> '1.265E+5'
-basx240 toSci "1265E+3"  -> '1.265E+6'
-basx241 toSci "1265E+4"  -> '1.265E+7'
-basx242 toSci "1265E+8"  -> '1.265E+11'
-basx243 toSci "1265E+20" -> '1.265E+23'
-
-basx250 toSci "0.1265"     -> '0.1265'
-basx251 toSci "0.1265E-20" -> '1.265E-21'
-basx252 toSci "0.1265E-8"  -> '1.265E-9'
-basx253 toSci "0.1265E-4"  -> '0.00001265'
-basx254 toSci "0.1265E-3"  -> '0.0001265'
-basx255 toSci "0.1265E-2"  -> '0.001265'
-basx256 toSci "0.1265E-1"  -> '0.01265'
-basx257 toSci "0.1265E-0"  -> '0.1265'
-basx258 toSci "0.1265E+1"  -> '1.265'
-basx259 toSci "0.1265E+2"  -> '12.65'
-basx260 toSci "0.1265E+3"  -> '126.5'
-basx261 toSci "0.1265E+4"  -> '1265'
-basx262 toSci "0.1265E+8"  -> '1.265E+7'
-basx263 toSci "0.1265E+20" -> '1.265E+19'
-
--- some more negative zeros [systematic tests below]
-basx290 toSci "-0.000E-1"  -> '-0.0000'
-basx291 toSci "-0.000E-2"  -> '-0.00000'
-basx292 toSci "-0.000E-3"  -> '-0.000000'
-basx293 toSci "-0.000E-4"  -> '-0E-7'
-basx294 toSci "-0.00E-2"   -> '-0.0000'
-basx295 toSci "-0.00E-3"   -> '-0.00000'
-basx296 toSci "-0.0E-2"    -> '-0.000'
-basx297 toSci "-0.0E-3"    -> '-0.0000'
-basx298 toSci "-0E-2"      -> '-0.00'
-basx299 toSci "-0E-3"      -> '-0.000'
-
--- Engineering notation tests
-basx301  toSci 10e12  -> 1.0E+13
-basx302  toEng 10e12  -> 10E+12
-basx303  toSci 10e11  -> 1.0E+12
-basx304  toEng 10e11  -> 1.0E+12
-basx305  toSci 10e10  -> 1.0E+11
-basx306  toEng 10e10  -> 100E+9
-basx307  toSci 10e9   -> 1.0E+10
-basx308  toEng 10e9   -> 10E+9
-basx309  toSci 10e8   -> 1.0E+9
-basx310  toEng 10e8   -> 1.0E+9
-basx311  toSci 10e7   -> 1.0E+8
-basx312  toEng 10e7   -> 100E+6
-basx313  toSci 10e6   -> 1.0E+7
-basx314  toEng 10e6   -> 10E+6
-basx315  toSci 10e5   -> 1.0E+6
-basx316  toEng 10e5   -> 1.0E+6
-basx317  toSci 10e4   -> 1.0E+5
-basx318  toEng 10e4   -> 100E+3
-basx319  toSci 10e3   -> 1.0E+4
-basx320  toEng 10e3   -> 10E+3
-basx321  toSci 10e2   -> 1.0E+3
-basx322  toEng 10e2   -> 1.0E+3
-basx323  toSci 10e1   -> 1.0E+2
-basx324  toEng 10e1   -> 100
-basx325  toSci 10e0   -> 10
-basx326  toEng 10e0   -> 10
-basx327  toSci 10e-1  -> 1.0
-basx328  toEng 10e-1  -> 1.0
-basx329  toSci 10e-2  -> 0.10
-basx330  toEng 10e-2  -> 0.10
-basx331  toSci 10e-3  -> 0.010
-basx332  toEng 10e-3  -> 0.010
-basx333  toSci 10e-4  -> 0.0010
-basx334  toEng 10e-4  -> 0.0010
-basx335  toSci 10e-5  -> 0.00010
-basx336  toEng 10e-5  -> 0.00010
-basx337  toSci 10e-6  -> 0.000010
-basx338  toEng 10e-6  -> 0.000010
-basx339  toSci 10e-7  -> 0.0000010
-basx340  toEng 10e-7  -> 0.0000010
-basx341  toSci 10e-8  -> 1.0E-7
-basx342  toEng 10e-8  -> 100E-9
-basx343  toSci 10e-9  -> 1.0E-8
-basx344  toEng 10e-9  -> 10E-9
-basx345  toSci 10e-10 -> 1.0E-9
-basx346  toEng 10e-10 -> 1.0E-9
-basx347  toSci 10e-11 -> 1.0E-10
-basx348  toEng 10e-11 -> 100E-12
-basx349  toSci 10e-12 -> 1.0E-11
-basx350  toEng 10e-12 -> 10E-12
-basx351  toSci 10e-13 -> 1.0E-12
-basx352  toEng 10e-13 -> 1.0E-12
-
-basx361  toSci 7E12  -> 7E+12
-basx362  toEng 7E12  -> 7E+12
-basx363  toSci 7E11  -> 7E+11
-basx364  toEng 7E11  -> 700E+9
-basx365  toSci 7E10  -> 7E+10
-basx366  toEng 7E10  -> 70E+9
-basx367  toSci 7E9   -> 7E+9
-basx368  toEng 7E9   -> 7E+9
-basx369  toSci 7E8   -> 7E+8
-basx370  toEng 7E8   -> 700E+6
-basx371  toSci 7E7   -> 7E+7
-basx372  toEng 7E7   -> 70E+6
-basx373  toSci 7E6   -> 7E+6
-basx374  toEng 7E6   -> 7E+6
-basx375  toSci 7E5   -> 7E+5
-basx376  toEng 7E5   -> 700E+3
-basx377  toSci 7E4   -> 7E+4
-basx378  toEng 7E4   -> 70E+3
-basx379  toSci 7E3   -> 7E+3
-basx380  toEng 7E3   -> 7E+3
-basx381  toSci 7E2   -> 7E+2
-basx382  toEng 7E2   -> 700
-basx383  toSci 7E1   -> 7E+1
-basx384  toEng 7E1   -> 70
-basx385  toSci 7E0   -> 7
-basx386  toEng 7E0   -> 7
-basx387  toSci 7E-1  -> 0.7
-basx388  toEng 7E-1  -> 0.7
-basx389  toSci 7E-2  -> 0.07
-basx390  toEng 7E-2  -> 0.07
-basx391  toSci 7E-3  -> 0.007
-basx392  toEng 7E-3  -> 0.007
-basx393  toSci 7E-4  -> 0.0007
-basx394  toEng 7E-4  -> 0.0007
-basx395  toSci 7E-5  -> 0.00007
-basx396  toEng 7E-5  -> 0.00007
-basx397  toSci 7E-6  -> 0.000007
-basx398  toEng 7E-6  -> 0.000007
-basx399  toSci 7E-7  -> 7E-7
-basx400  toEng 7E-7  -> 700E-9
-basx401  toSci 7E-8  -> 7E-8
-basx402  toEng 7E-8  -> 70E-9
-basx403  toSci 7E-9  -> 7E-9
-basx404  toEng 7E-9  -> 7E-9
-basx405  toSci 7E-10 -> 7E-10
-basx406  toEng 7E-10 -> 700E-12
-basx407  toSci 7E-11 -> 7E-11
-basx408  toEng 7E-11 -> 70E-12
-basx409  toSci 7E-12 -> 7E-12
-basx410  toEng 7E-12 -> 7E-12
-basx411  toSci 7E-13 -> 7E-13
-basx412  toEng 7E-13 -> 700E-15
-
--- Exacts remain exact up to precision ..
-precision: 9
-basx420  toSci    100 -> 100
-basx421  toEng    100 -> 100
-basx422  toSci   1000 -> 1000
-basx423  toEng   1000 -> 1000
-basx424  toSci  999.9 ->  999.9
-basx425  toEng  999.9 ->  999.9
-basx426  toSci 1000.0 -> 1000.0
-basx427  toEng 1000.0 -> 1000.0
-basx428  toSci 1000.1 -> 1000.1
-basx429  toEng 1000.1 -> 1000.1
-basx430  toSci 10000 -> 10000
-basx431  toEng 10000 -> 10000
-basx432  toSci 100000 -> 100000
-basx433  toEng 100000 -> 100000
-basx434  toSci 1000000 -> 1000000
-basx435  toEng 1000000 -> 1000000
-basx436  toSci 10000000 -> 10000000
-basx437  toEng 10000000 -> 10000000
-basx438  toSci 100000000 -> 100000000
-basx439  toEng 100000000 -> 100000000
-basx440  toSci 1000000000    -> 1.00000000E+9    Rounded
-basx441  toEng 1000000000    -> 1.00000000E+9    Rounded
-basx442  toSci 1000000000    -> 1.00000000E+9    Rounded
-basx443  toEng 1000000000    -> 1.00000000E+9    Rounded
-basx444  toSci 1000000003    -> 1.00000000E+9    Rounded Inexact
-basx445  toEng 1000000003    -> 1.00000000E+9    Rounded Inexact
-basx446  toSci 1000000005    -> 1.00000001E+9    Rounded Inexact
-basx447  toEng 1000000005    -> 1.00000001E+9    Rounded Inexact
-basx448  toSci 10000000050   -> 1.00000001E+10   Rounded Inexact
-basx449  toEng 10000000050   -> 10.0000001E+9    Rounded Inexact
-basx450  toSci 1000000009    -> 1.00000001E+9    Rounded Inexact
-basx451  toEng 1000000009    -> 1.00000001E+9    Rounded Inexact
-basx452  toSci 10000000000   -> 1.00000000E+10   Rounded
-basx453  toEng 10000000000   -> 10.0000000E+9    Rounded
-basx454  toSci 10000000003   -> 1.00000000E+10   Rounded Inexact
-basx455  toEng 10000000003   -> 10.0000000E+9    Rounded Inexact
-basx456  toSci 10000000005   -> 1.00000000E+10   Rounded Inexact
-basx457  toEng 10000000005   -> 10.0000000E+9    Rounded Inexact
-basx458  toSci 10000000009   -> 1.00000000E+10   Rounded Inexact
-basx459  toEng 10000000009   -> 10.0000000E+9    Rounded Inexact
-basx460  toSci 100000000000  -> 1.00000000E+11   Rounded
-basx461  toEng 100000000000  -> 100.000000E+9    Rounded
-basx462  toSci 100000000300  -> 1.00000000E+11   Rounded Inexact
-basx463  toEng 100000000300  -> 100.000000E+9    Rounded Inexact
-basx464  toSci 100000000500  -> 1.00000001E+11   Rounded Inexact
-basx465  toEng 100000000500  -> 100.000001E+9    Rounded Inexact
-basx466  toSci 100000000900  -> 1.00000001E+11   Rounded Inexact
-basx467  toEng 100000000900  -> 100.000001E+9    Rounded Inexact
-basx468  toSci 1000000000000 -> 1.00000000E+12   Rounded
-basx469  toEng 1000000000000 -> 1.00000000E+12   Rounded
-basx470  toSci 1000000003000 -> 1.00000000E+12   Rounded Inexact
-basx471  toEng 1000000003000 -> 1.00000000E+12   Rounded Inexact
-basx472  toSci 1000000005000 -> 1.00000001E+12   Rounded Inexact
-basx473  toEng 1000000005000 -> 1.00000001E+12   Rounded Inexact
-basx474  toSci 1000000009000 -> 1.00000001E+12   Rounded Inexact
-basx475  toEng 1000000009000 -> 1.00000001E+12   Rounded Inexact
-
--- all-nines rounding
-precision: 9
-rounding:  half_up
-basx270  toSci 999999999          ->   999999999
-basx271  toSci 9999999990         ->   9.99999999E+9      Rounded
-basx272  toSci 9999999991         ->   9.99999999E+9      Rounded Inexact
-basx273  toSci 9999999992         ->   9.99999999E+9      Rounded Inexact
-basx274  toSci 9999999993         ->   9.99999999E+9      Rounded Inexact
-basx275  toSci 9999999994         ->   9.99999999E+9      Rounded Inexact
-basx276  toSci 9999999995         ->   1.00000000E+10     Rounded Inexact
-basx277  toSci 9999999996         ->   1.00000000E+10     Rounded Inexact
-basx278  toSci 9999999997         ->   1.00000000E+10     Rounded Inexact
-basx279  toSci 9999999998         ->   1.00000000E+10     Rounded Inexact
-basx280  toSci 9999999999         ->   1.00000000E+10     Rounded Inexact
-basx281  toSci 9999999999999999   ->   1.00000000E+16     Rounded Inexact
-
--- check rounding modes heeded
-precision: 5
-rounding:  ceiling
-bsrx401  toSci  1.23450    ->  1.2345  Rounded
-bsrx402  toSci  1.234549   ->  1.2346  Rounded Inexact
-bsrx403  toSci  1.234550   ->  1.2346  Rounded Inexact
-bsrx404  toSci  1.234551   ->  1.2346  Rounded Inexact
-rounding:  up
-bsrx405  toSci  1.23450    ->  1.2345  Rounded
-bsrx406  toSci  1.234549   ->  1.2346  Rounded Inexact
-bsrx407  toSci  1.234550   ->  1.2346  Rounded Inexact
-bsrx408  toSci  1.234551   ->  1.2346  Rounded Inexact
-rounding:  floor
-bsrx410  toSci  1.23450    ->  1.2345  Rounded
-bsrx411  toSci  1.234549   ->  1.2345  Rounded Inexact
-bsrx412  toSci  1.234550   ->  1.2345  Rounded Inexact
-bsrx413  toSci  1.234551   ->  1.2345  Rounded Inexact
-rounding:  half_down
-bsrx415  toSci  1.23450    ->  1.2345  Rounded
-bsrx416  toSci  1.234549   ->  1.2345  Rounded Inexact
-bsrx417  toSci  1.234550   ->  1.2345  Rounded Inexact
-bsrx418  toSci  1.234650   ->  1.2346  Rounded Inexact
-bsrx419  toSci  1.234551   ->  1.2346  Rounded Inexact
-rounding:  half_even
-bsrx421  toSci  1.23450    ->  1.2345  Rounded
-bsrx422  toSci  1.234549   ->  1.2345  Rounded Inexact
-bsrx423  toSci  1.234550   ->  1.2346  Rounded Inexact
-bsrx424  toSci  1.234650   ->  1.2346  Rounded Inexact
-bsrx425  toSci  1.234551   ->  1.2346  Rounded Inexact
-rounding:  down
-bsrx426  toSci  1.23450    ->  1.2345  Rounded
-bsrx427  toSci  1.234549   ->  1.2345  Rounded Inexact
-bsrx428  toSci  1.234550   ->  1.2345  Rounded Inexact
-bsrx429  toSci  1.234551   ->  1.2345  Rounded Inexact
-rounding:  half_up
-bsrx431  toSci  1.23450    ->  1.2345  Rounded
-bsrx432  toSci  1.234549   ->  1.2345  Rounded Inexact
-bsrx433  toSci  1.234550   ->  1.2346  Rounded Inexact
-bsrx434  toSci  1.234650   ->  1.2347  Rounded Inexact
-bsrx435  toSci  1.234551   ->  1.2346  Rounded Inexact
--- negatives
-rounding:  ceiling
-bsrx501  toSci -1.23450    -> -1.2345  Rounded
-bsrx502  toSci -1.234549   -> -1.2345  Rounded Inexact
-bsrx503  toSci -1.234550   -> -1.2345  Rounded Inexact
-bsrx504  toSci -1.234551   -> -1.2345  Rounded Inexact
-rounding:  up
-bsrx505  toSci -1.23450    -> -1.2345  Rounded
-bsrx506  toSci -1.234549   -> -1.2346  Rounded Inexact
-bsrx507  toSci -1.234550   -> -1.2346  Rounded Inexact
-bsrx508  toSci -1.234551   -> -1.2346  Rounded Inexact
-rounding:  floor
-bsrx510  toSci -1.23450    -> -1.2345  Rounded
-bsrx511  toSci -1.234549   -> -1.2346  Rounded Inexact
-bsrx512  toSci -1.234550   -> -1.2346  Rounded Inexact
-bsrx513  toSci -1.234551   -> -1.2346  Rounded Inexact
-rounding:  half_down
-bsrx515  toSci -1.23450    -> -1.2345  Rounded
-bsrx516  toSci -1.234549   -> -1.2345  Rounded Inexact
-bsrx517  toSci -1.234550   -> -1.2345  Rounded Inexact
-bsrx518  toSci -1.234650   -> -1.2346  Rounded Inexact
-bsrx519  toSci -1.234551   -> -1.2346  Rounded Inexact
-rounding:  half_even
-bsrx521  toSci -1.23450    -> -1.2345  Rounded
-bsrx522  toSci -1.234549   -> -1.2345  Rounded Inexact
-bsrx523  toSci -1.234550   -> -1.2346  Rounded Inexact
-bsrx524  toSci -1.234650   -> -1.2346  Rounded Inexact
-bsrx525  toSci -1.234551   -> -1.2346  Rounded Inexact
-rounding:  down
-bsrx526  toSci -1.23450    -> -1.2345  Rounded
-bsrx527  toSci -1.234549   -> -1.2345  Rounded Inexact
-bsrx528  toSci -1.234550   -> -1.2345  Rounded Inexact
-bsrx529  toSci -1.234551   -> -1.2345  Rounded Inexact
-rounding:  half_up
-bsrx531  toSci -1.23450    -> -1.2345  Rounded
-bsrx532  toSci -1.234549   -> -1.2345  Rounded Inexact
-bsrx533  toSci -1.234550   -> -1.2346  Rounded Inexact
-bsrx534  toSci -1.234650   -> -1.2347  Rounded Inexact
-bsrx535  toSci -1.234551   -> -1.2346  Rounded Inexact
-
--- a few larger exponents
-maxExponent: 999999999
-minExponent: -999999999
-basx480 toSci "0.09e999"  -> '9E+997'
-basx481 toSci "0.9e999"   -> '9E+998'
-basx482 toSci "9e999"     -> '9E+999'
-basx483 toSci "9.9e999"   -> '9.9E+999'
-basx484 toSci "9.99e999"  -> '9.99E+999'
-basx485 toSci "9.99e-999" -> '9.99E-999'
-basx486 toSci "9.9e-999"  -> '9.9E-999'
-basx487 toSci "9e-999"    -> '9E-999'
-basx489 toSci "99e-999"   -> '9.9E-998'
-basx490 toSci "999e-999"  -> '9.99E-997'
-basx491 toSci '0.9e-998'  -> '9E-999'
-basx492 toSci '0.09e-997' -> '9E-999'
-basx493 toSci '0.1e1000'  -> '1E+999'
-basx494 toSci '10e-1000'  -> '1.0E-999'
-
-rounding:  half_up
-precision: 9
-
--- The 'baddies' tests from DiagBigDecimal, plus some new ones
-basx500 toSci '1..2'            -> NaN Conversion_syntax
-basx501 toSci '.'               -> NaN Conversion_syntax
-basx502 toSci '..'              -> NaN Conversion_syntax
-basx503 toSci '++1'             -> NaN Conversion_syntax
-basx504 toSci '--1'             -> NaN Conversion_syntax
-basx505 toSci '-+1'             -> NaN Conversion_syntax
-basx506 toSci '+-1'             -> NaN Conversion_syntax
-basx507 toSci '12e'             -> NaN Conversion_syntax
-basx508 toSci '12e++'           -> NaN Conversion_syntax
-basx509 toSci '12f4'            -> NaN Conversion_syntax
-basx510 toSci ' +1'             -> NaN Conversion_syntax
-basx511 toSci '+ 1'             -> NaN Conversion_syntax
-basx512 toSci '12 '             -> NaN Conversion_syntax
-basx513 toSci ' + 1'            -> NaN Conversion_syntax
-basx514 toSci ' - 1 '           -> NaN Conversion_syntax
-basx515 toSci 'x'               -> NaN Conversion_syntax
-basx516 toSci '-1-'             -> NaN Conversion_syntax
-basx517 toSci '12-'             -> NaN Conversion_syntax
-basx518 toSci '3+'              -> NaN Conversion_syntax
-basx519 toSci ''                -> NaN Conversion_syntax
-basx520 toSci '1e-'             -> NaN Conversion_syntax
-basx521 toSci '7e99999a'        -> NaN Conversion_syntax
-basx522 toSci '7e123567890x'    -> NaN Conversion_syntax
-basx523 toSci '7e12356789012x'  -> NaN Conversion_syntax
-basx524 toSci ''                -> NaN Conversion_syntax
-basx525 toSci 'e100'            -> NaN Conversion_syntax
-basx526 toSci '\u0e5a'          -> NaN Conversion_syntax
-basx527 toSci '\u0b65'          -> NaN Conversion_syntax
-basx528 toSci '123,65'          -> NaN Conversion_syntax
-basx529 toSci '1.34.5'          -> NaN Conversion_syntax
-basx530 toSci '.123.5'          -> NaN Conversion_syntax
-basx531 toSci '01.35.'          -> NaN Conversion_syntax
-basx532 toSci '01.35-'          -> NaN Conversion_syntax
-basx533 toSci '0000..'          -> NaN Conversion_syntax
-basx534 toSci '.0000.'          -> NaN Conversion_syntax
-basx535 toSci '00..00'          -> NaN Conversion_syntax
-basx536 toSci '111e*123'        -> NaN Conversion_syntax
-basx537 toSci '111e123-'        -> NaN Conversion_syntax
-basx538 toSci '111e+12+'        -> NaN Conversion_syntax
-basx539 toSci '111e1-3-'        -> NaN Conversion_syntax
-basx540 toSci '111e1*23'        -> NaN Conversion_syntax
-basx541 toSci '111e1e+3'        -> NaN Conversion_syntax
-basx542 toSci '1e1.0'           -> NaN Conversion_syntax
-basx543 toSci '1e123e'          -> NaN Conversion_syntax
-basx544 toSci 'ten'             -> NaN Conversion_syntax
-basx545 toSci 'ONE'             -> NaN Conversion_syntax
-basx546 toSci '1e.1'            -> NaN Conversion_syntax
-basx547 toSci '1e1.'            -> NaN Conversion_syntax
-basx548 toSci '1ee'             -> NaN Conversion_syntax
-basx549 toSci 'e+1'             -> NaN Conversion_syntax
-basx550 toSci '1.23.4'          -> NaN Conversion_syntax
-basx551 toSci '1.2.1'           -> NaN Conversion_syntax
-basx552 toSci '1E+1.2'          -> NaN Conversion_syntax
-basx553 toSci '1E+1.2.3'        -> NaN Conversion_syntax
-basx554 toSci '1E++1'           -> NaN Conversion_syntax
-basx555 toSci '1E--1'           -> NaN Conversion_syntax
-basx556 toSci '1E+-1'           -> NaN Conversion_syntax
-basx557 toSci '1E-+1'           -> NaN Conversion_syntax
-basx558 toSci '1E''1'           -> NaN Conversion_syntax
-basx559 toSci "1E""1"           -> NaN Conversion_syntax
-basx560 toSci "1E"""""          -> NaN Conversion_syntax
--- Near-specials
-basx561 toSci "qNaN"            -> NaN Conversion_syntax
-basx562 toSci "NaNq"            -> NaN Conversion_syntax
-basx563 toSci "NaNs"            -> NaN Conversion_syntax
-basx564 toSci "Infi"            -> NaN Conversion_syntax
-basx565 toSci "Infin"           -> NaN Conversion_syntax
-basx566 toSci "Infini"          -> NaN Conversion_syntax
-basx567 toSci "Infinit"         -> NaN Conversion_syntax
-basx568 toSci "-Infinit"        -> NaN Conversion_syntax
-basx569 toSci "0Inf"            -> NaN Conversion_syntax
-basx570 toSci "9Inf"            -> NaN Conversion_syntax
-basx571 toSci "-0Inf"           -> NaN Conversion_syntax
-basx572 toSci "-9Inf"           -> NaN Conversion_syntax
-basx573 toSci "-sNa"            -> NaN Conversion_syntax
-basx574 toSci "xNaN"            -> NaN Conversion_syntax
-basx575 toSci "0sNaN"           -> NaN Conversion_syntax
-
--- some baddies with dots and Es and dots and specials
-basx576 toSci  'e+1'            ->  NaN Conversion_syntax
-basx577 toSci  '.e+1'           ->  NaN Conversion_syntax
-basx578 toSci  '+.e+1'          ->  NaN Conversion_syntax
-basx579 toSci  '-.e+'           ->  NaN Conversion_syntax
-basx580 toSci  '-.e'            ->  NaN Conversion_syntax
-basx581 toSci  'E+1'            ->  NaN Conversion_syntax
-basx582 toSci  '.E+1'           ->  NaN Conversion_syntax
-basx583 toSci  '+.E+1'          ->  NaN Conversion_syntax
-basx584 toSci  '-.E+'           ->  NaN Conversion_syntax
-basx585 toSci  '-.E'            ->  NaN Conversion_syntax
-
-basx586 toSci  '.NaN'           ->  NaN Conversion_syntax
-basx587 toSci  '-.NaN'          ->  NaN Conversion_syntax
-basx588 toSci  '+.sNaN'         ->  NaN Conversion_syntax
-basx589 toSci  '+.Inf'          ->  NaN Conversion_syntax
-basx590 toSci  '.Infinity'      ->  NaN Conversion_syntax
-
--- Zeros
-basx601 toSci 0.000000000       -> 0E-9
-basx602 toSci 0.00000000        -> 0E-8
-basx603 toSci 0.0000000         -> 0E-7
-basx604 toSci 0.000000          -> 0.000000
-basx605 toSci 0.00000           -> 0.00000
-basx606 toSci 0.0000            -> 0.0000
-basx607 toSci 0.000             -> 0.000
-basx608 toSci 0.00              -> 0.00
-basx609 toSci 0.0               -> 0.0
-basx610 toSci  .0               -> 0.0
-basx611 toSci 0.                -> 0
-basx612 toSci -.0               -> -0.0
-basx613 toSci -0.               -> -0
-basx614 toSci -0.0              -> -0.0
-basx615 toSci -0.00             -> -0.00
-basx616 toSci -0.000            -> -0.000
-basx617 toSci -0.0000           -> -0.0000
-basx618 toSci -0.00000          -> -0.00000
-basx619 toSci -0.000000         -> -0.000000
-basx620 toSci -0.0000000        -> -0E-7
-basx621 toSci -0.00000000       -> -0E-8
-basx622 toSci -0.000000000      -> -0E-9
-
-basx630 toSci  0.00E+0          -> 0.00
-basx631 toSci  0.00E+1          -> 0.0
-basx632 toSci  0.00E+2          -> 0
-basx633 toSci  0.00E+3          -> 0E+1
-basx634 toSci  0.00E+4          -> 0E+2
-basx635 toSci  0.00E+5          -> 0E+3
-basx636 toSci  0.00E+6          -> 0E+4
-basx637 toSci  0.00E+7          -> 0E+5
-basx638 toSci  0.00E+8          -> 0E+6
-basx639 toSci  0.00E+9          -> 0E+7
-
-basx640 toSci  0.0E+0           -> 0.0
-basx641 toSci  0.0E+1           -> 0
-basx642 toSci  0.0E+2           -> 0E+1
-basx643 toSci  0.0E+3           -> 0E+2
-basx644 toSci  0.0E+4           -> 0E+3
-basx645 toSci  0.0E+5           -> 0E+4
-basx646 toSci  0.0E+6           -> 0E+5
-basx647 toSci  0.0E+7           -> 0E+6
-basx648 toSci  0.0E+8           -> 0E+7
-basx649 toSci  0.0E+9           -> 0E+8
-
-basx650 toSci  0E+0             -> 0
-basx651 toSci  0E+1             -> 0E+1
-basx652 toSci  0E+2             -> 0E+2
-basx653 toSci  0E+3             -> 0E+3
-basx654 toSci  0E+4             -> 0E+4
-basx655 toSci  0E+5             -> 0E+5
-basx656 toSci  0E+6             -> 0E+6
-basx657 toSci  0E+7             -> 0E+7
-basx658 toSci  0E+8             -> 0E+8
-basx659 toSci  0E+9             -> 0E+9
-
-basx660 toSci  0.0E-0           -> 0.0
-basx661 toSci  0.0E-1           -> 0.00
-basx662 toSci  0.0E-2           -> 0.000
-basx663 toSci  0.0E-3           -> 0.0000
-basx664 toSci  0.0E-4           -> 0.00000
-basx665 toSci  0.0E-5           -> 0.000000
-basx666 toSci  0.0E-6           -> 0E-7
-basx667 toSci  0.0E-7           -> 0E-8
-basx668 toSci  0.0E-8           -> 0E-9
-basx669 toSci  0.0E-9           -> 0E-10
-
-basx670 toSci  0.00E-0          -> 0.00
-basx671 toSci  0.00E-1          -> 0.000
-basx672 toSci  0.00E-2          -> 0.0000
-basx673 toSci  0.00E-3          -> 0.00000
-basx674 toSci  0.00E-4          -> 0.000000
-basx675 toSci  0.00E-5          -> 0E-7
-basx676 toSci  0.00E-6          -> 0E-8
-basx677 toSci  0.00E-7          -> 0E-9
-basx678 toSci  0.00E-8          -> 0E-10
-basx679 toSci  0.00E-9          -> 0E-11
-
-basx680 toSci  000000.          ->  0
-basx681 toSci   00000.          ->  0
-basx682 toSci    0000.          ->  0
-basx683 toSci     000.          ->  0
-basx684 toSci      00.          ->  0
-basx685 toSci       0.          ->  0
-basx686 toSci  +00000.          ->  0
-basx687 toSci  -00000.          -> -0
-basx688 toSci  +0.              ->  0
-basx689 toSci  -0.              -> -0
-
--- Specials
-precision: 4
-basx700 toSci "NaN"             -> NaN
-basx701 toSci "nan"             -> NaN
-basx702 toSci "nAn"             -> NaN
-basx703 toSci "NAN"             -> NaN
-basx704 toSci "+NaN"            -> NaN
-basx705 toSci "+nan"            -> NaN
-basx706 toSci "+nAn"            -> NaN
-basx707 toSci "+NAN"            -> NaN
-basx708 toSci "-NaN"            -> -NaN
-basx709 toSci "-nan"            -> -NaN
-basx710 toSci "-nAn"            -> -NaN
-basx711 toSci "-NAN"            -> -NaN
-basx712 toSci 'NaN0'            -> NaN
-basx713 toSci 'NaN1'            -> NaN1
-basx714 toSci 'NaN12'           -> NaN12
-basx715 toSci 'NaN123'          -> NaN123
-basx716 toSci 'NaN1234'         -> NaN1234
-basx717 toSci 'NaN01'           -> NaN1
-basx718 toSci 'NaN012'          -> NaN12
-basx719 toSci 'NaN0123'         -> NaN123
-basx720 toSci 'NaN01234'        -> NaN1234
-basx721 toSci 'NaN001'          -> NaN1
-basx722 toSci 'NaN0012'         -> NaN12
-basx723 toSci 'NaN00123'        -> NaN123
-basx724 toSci 'NaN001234'       -> NaN1234
-basx725 toSci 'NaN12345'        -> NaN Conversion_syntax
-basx726 toSci 'NaN123e+1'       -> NaN Conversion_syntax
-basx727 toSci 'NaN12.45'        -> NaN Conversion_syntax
-basx728 toSci 'NaN-12'          -> NaN Conversion_syntax
-basx729 toSci 'NaN+12'          -> NaN Conversion_syntax
-
-basx730 toSci "sNaN"            -> sNaN
-basx731 toSci "snan"            -> sNaN
-basx732 toSci "SnAn"            -> sNaN
-basx733 toSci "SNAN"            -> sNaN
-basx734 toSci "+sNaN"           -> sNaN
-basx735 toSci "+snan"           -> sNaN
-basx736 toSci "+SnAn"           -> sNaN
-basx737 toSci "+SNAN"           -> sNaN
-basx738 toSci "-sNaN"           -> -sNaN
-basx739 toSci "-snan"           -> -sNaN
-basx740 toSci "-SnAn"           -> -sNaN
-basx741 toSci "-SNAN"           -> -sNaN
-basx742 toSci 'sNaN0000'        -> sNaN
-basx743 toSci 'sNaN7'           -> sNaN7
-basx744 toSci 'sNaN007234'      -> sNaN7234
-basx745 toSci 'sNaN72345'       -> NaN Conversion_syntax
-basx746 toSci 'sNaN72.45'       -> NaN Conversion_syntax
-basx747 toSci 'sNaN-72'         -> NaN Conversion_syntax
-
-basx748 toSci "Inf"             -> Infinity
-basx749 toSci "inf"             -> Infinity
-basx750 toSci "iNf"             -> Infinity
-basx751 toSci "INF"             -> Infinity
-basx752 toSci "+Inf"            -> Infinity
-basx753 toSci "+inf"            -> Infinity
-basx754 toSci "+iNf"            -> Infinity
-basx755 toSci "+INF"            -> Infinity
-basx756 toSci "-Inf"            -> -Infinity
-basx757 toSci "-inf"            -> -Infinity
-basx758 toSci "-iNf"            -> -Infinity
-basx759 toSci "-INF"            -> -Infinity
-
-basx760 toSci "Infinity"        -> Infinity
-basx761 toSci "infinity"        -> Infinity
-basx762 toSci "iNfInItY"        -> Infinity
-basx763 toSci "INFINITY"        -> Infinity
-basx764 toSci "+Infinity"       -> Infinity
-basx765 toSci "+infinity"       -> Infinity
-basx766 toSci "+iNfInItY"       -> Infinity
-basx767 toSci "+INFINITY"       -> Infinity
-basx768 toSci "-Infinity"       -> -Infinity
-basx769 toSci "-infinity"       -> -Infinity
-basx770 toSci "-iNfInItY"       -> -Infinity
-basx771 toSci "-INFINITY"       -> -Infinity
-
--- Specials and zeros for toEng
-basx772 toEng "NaN"              -> NaN
-basx773 toEng "-Infinity"        -> -Infinity
-basx774 toEng "-sNaN"            -> -sNaN
-basx775 toEng "-NaN"             -> -NaN
-basx776 toEng "+Infinity"        -> Infinity
-basx778 toEng "+sNaN"            -> sNaN
-basx779 toEng "+NaN"             -> NaN
-basx780 toEng "INFINITY"         -> Infinity
-basx781 toEng "SNAN"             -> sNaN
-basx782 toEng "NAN"              -> NaN
-basx783 toEng "infinity"         -> Infinity
-basx784 toEng "snan"             -> sNaN
-basx785 toEng "nan"              -> NaN
-basx786 toEng "InFINITY"         -> Infinity
-basx787 toEng "SnAN"             -> sNaN
-basx788 toEng "nAN"              -> NaN
-basx789 toEng "iNfinity"         -> Infinity
-basx790 toEng "sNan"             -> sNaN
-basx791 toEng "Nan"              -> NaN
-basx792 toEng "Infinity"         -> Infinity
-basx793 toEng "sNaN"             -> sNaN
-
--- Zero toEng, etc.
-basx800 toEng 0e+1              -> "0.00E+3"  -- doc example
-
-basx801 toEng 0.000000000       -> 0E-9
-basx802 toEng 0.00000000        -> 0.00E-6
-basx803 toEng 0.0000000         -> 0.0E-6
-basx804 toEng 0.000000          -> 0.000000
-basx805 toEng 0.00000           -> 0.00000
-basx806 toEng 0.0000            -> 0.0000
-basx807 toEng 0.000             -> 0.000
-basx808 toEng 0.00              -> 0.00
-basx809 toEng 0.0               -> 0.0
-basx810 toEng  .0               -> 0.0
-basx811 toEng 0.                -> 0
-basx812 toEng -.0               -> -0.0
-basx813 toEng -0.               -> -0
-basx814 toEng -0.0              -> -0.0
-basx815 toEng -0.00             -> -0.00
-basx816 toEng -0.000            -> -0.000
-basx817 toEng -0.0000           -> -0.0000
-basx818 toEng -0.00000          -> -0.00000
-basx819 toEng -0.000000         -> -0.000000
-basx820 toEng -0.0000000        -> -0.0E-6
-basx821 toEng -0.00000000       -> -0.00E-6
-basx822 toEng -0.000000000      -> -0E-9
-
-basx830 toEng  0.00E+0          -> 0.00
-basx831 toEng  0.00E+1          -> 0.0
-basx832 toEng  0.00E+2          -> 0
-basx833 toEng  0.00E+3          -> 0.00E+3
-basx834 toEng  0.00E+4          -> 0.0E+3
-basx835 toEng  0.00E+5          -> 0E+3
-basx836 toEng  0.00E+6          -> 0.00E+6
-basx837 toEng  0.00E+7          -> 0.0E+6
-basx838 toEng  0.00E+8          -> 0E+6
-basx839 toEng  0.00E+9          -> 0.00E+9
-
-basx840 toEng  0.0E+0           -> 0.0
-basx841 toEng  0.0E+1           -> 0
-basx842 toEng  0.0E+2           -> 0.00E+3
-basx843 toEng  0.0E+3           -> 0.0E+3
-basx844 toEng  0.0E+4           -> 0E+3
-basx845 toEng  0.0E+5           -> 0.00E+6
-basx846 toEng  0.0E+6           -> 0.0E+6
-basx847 toEng  0.0E+7           -> 0E+6
-basx848 toEng  0.0E+8           -> 0.00E+9
-basx849 toEng  0.0E+9           -> 0.0E+9
-
-basx850 toEng  0E+0             -> 0
-basx851 toEng  0E+1             -> 0.00E+3
-basx852 toEng  0E+2             -> 0.0E+3
-basx853 toEng  0E+3             -> 0E+3
-basx854 toEng  0E+4             -> 0.00E+6
-basx855 toEng  0E+5             -> 0.0E+6
-basx856 toEng  0E+6             -> 0E+6
-basx857 toEng  0E+7             -> 0.00E+9
-basx858 toEng  0E+8             -> 0.0E+9
-basx859 toEng  0E+9             -> 0E+9
-
-basx860 toEng  0.0E-0           -> 0.0
-basx861 toEng  0.0E-1           -> 0.00
-basx862 toEng  0.0E-2           -> 0.000
-basx863 toEng  0.0E-3           -> 0.0000
-basx864 toEng  0.0E-4           -> 0.00000
-basx865 toEng  0.0E-5           -> 0.000000
-basx866 toEng  0.0E-6           -> 0.0E-6
-basx867 toEng  0.0E-7           -> 0.00E-6
-basx868 toEng  0.0E-8           -> 0E-9
-basx869 toEng  0.0E-9           -> 0.0E-9
-
-basx870 toEng  0.00E-0          -> 0.00
-basx871 toEng  0.00E-1          -> 0.000
-basx872 toEng  0.00E-2          -> 0.0000
-basx873 toEng  0.00E-3          -> 0.00000
-basx874 toEng  0.00E-4          -> 0.000000
-basx875 toEng  0.00E-5          -> 0.0E-6
-basx876 toEng  0.00E-6          -> 0.00E-6
-basx877 toEng  0.00E-7          -> 0E-9
-basx878 toEng  0.00E-8          -> 0.0E-9
-basx879 toEng  0.00E-9          -> 0.00E-9
-
-
-rounding:  half_up
-precision: 9
--- subnormals and overflows
-basx906 toSci '99e999999999'       -> Infinity Overflow  Inexact Rounded
-basx907 toSci '999e999999999'      -> Infinity Overflow  Inexact Rounded
-basx908 toSci '0.9e-999999999'     -> 9E-1000000000 Subnormal
-basx909 toSci '0.09e-999999999'    -> 9E-1000000001 Subnormal
-basx910 toSci '0.1e1000000000'     -> 1E+999999999
-basx911 toSci '10e-1000000000'     -> 1.0E-999999999
-basx912 toSci '0.9e9999999999'     -> Infinity Overflow  Inexact Rounded
-basx913 toSci '99e-9999999999'     -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-basx914 toSci '111e9999999999'     -> Infinity Overflow  Inexact Rounded
-basx915 toSci '1111e-9999999999'   -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-basx916 toSci '1111e-99999999999'  -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-basx917 toSci '7e1000000000'       -> Infinity Overflow  Inexact Rounded
--- negatives the same
-basx918 toSci '-99e999999999'      -> -Infinity Overflow  Inexact Rounded
-basx919 toSci '-999e999999999'     -> -Infinity Overflow  Inexact Rounded
-basx920 toSci '-0.9e-999999999'    -> -9E-1000000000 Subnormal
-basx921 toSci '-0.09e-999999999'   -> -9E-1000000001 Subnormal
-basx922 toSci '-0.1e1000000000'    -> -1E+999999999
-basx923 toSci '-10e-1000000000'    -> -1.0E-999999999
-basx924 toSci '-0.9e9999999999'    -> -Infinity Overflow  Inexact Rounded
-basx925 toSci '-99e-9999999999'    -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-basx926 toSci '-111e9999999999'    -> -Infinity Overflow  Inexact Rounded
-basx927 toSci '-1111e-9999999999'  -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-basx928 toSci '-1111e-99999999999' -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-basx929 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
-
-rounding:  ceiling
-basx930 toSci  '7e1000000000'      ->  Infinity Overflow  Inexact Rounded
-basx931 toSci '-7e1000000000'      -> -9.99999999E+999999999 Overflow  Inexact Rounded
-rounding:  up
-basx932 toSci  '7e1000000000'      ->  Infinity Overflow  Inexact Rounded
-basx933 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
-rounding:  down
-basx934 toSci  '7e1000000000'      ->  9.99999999E+999999999 Overflow  Inexact Rounded
-basx935 toSci '-7e1000000000'      -> -9.99999999E+999999999 Overflow  Inexact Rounded
-rounding:  floor
-basx936 toSci  '7e1000000000'      ->  9.99999999E+999999999 Overflow  Inexact Rounded
-basx937 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
-
-rounding:  half_up
-basx938 toSci  '7e1000000000'      ->  Infinity Overflow  Inexact Rounded
-basx939 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
-rounding:  half_even
-basx940 toSci  '7e1000000000'      ->  Infinity Overflow  Inexact Rounded
-basx941 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
-rounding:  half_down
-basx942 toSci  '7e1000000000'      ->  Infinity Overflow  Inexact Rounded
-basx943 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
-
-rounding:  half_even
-
-
--- Giga exponent initial tests
-maxExponent: 999999999
-minExponent: -999999999
-
-basx951 toSci '99e999'          -> '9.9E+1000'
-basx952 toSci '999e999'         -> '9.99E+1001'
-basx953 toSci '0.9e-999'        -> '9E-1000'
-basx954 toSci '0.09e-999'       -> '9E-1001'
-basx955 toSci '0.1e1001'        -> '1E+1000'
-basx956 toSci '10e-1001'        -> '1.0E-1000'
-basx957 toSci '0.9e9999'        -> '9E+9998'
-basx958 toSci '99e-9999'        -> '9.9E-9998'
-basx959 toSci '111e9997'        -> '1.11E+9999'
-basx960 toSci '1111e-9999'      -> '1.111E-9996'
-basx961 toSci '99e9999'         -> '9.9E+10000'
-basx962 toSci '999e9999'        -> '9.99E+10001'
-basx963 toSci '0.9e-9999'       -> '9E-10000'
-basx964 toSci '0.09e-9999'      -> '9E-10001'
-basx965 toSci '0.1e10001'       -> '1E+10000'
-basx966 toSci '10e-10001'       -> '1.0E-10000'
-basx967 toSci '0.9e99999'       -> '9E+99998'
-basx968 toSci '99e-99999'       -> '9.9E-99998'
-basx969 toSci '111e99999'       -> '1.11E+100001'
-basx970 toSci '1111e-99999'     -> '1.111E-99996'
-basx971 toSci "0.09e999999999"  -> '9E+999999997'
-basx972 toSci "0.9e999999999"   -> '9E+999999998'
-basx973 toSci "9e999999999"     -> '9E+999999999'
-basx974 toSci "9.9e999999999"   -> '9.9E+999999999'
-basx975 toSci "9.99e999999999"  -> '9.99E+999999999'
-basx976 toSci "9.99e-999999999" -> '9.99E-999999999'
-basx977 toSci "9.9e-999999999"  -> '9.9E-999999999'
-basx978 toSci "9e-999999999"    -> '9E-999999999'
-basx979 toSci "99e-999999999"   -> '9.9E-999999998'
-basx980 toSci "999e-999999999"  -> '9.99E-999999997'
-
--- Varying exponent maximums
-precision: 5
-maxexponent: 0
-minexponent: 0
-emax001 toSci -1E+2  -> -Infinity Overflow Inexact Rounded
-emax002 toSci -100   -> -Infinity Overflow Inexact Rounded
-emax003 toSci  -10   -> -Infinity Overflow Inexact Rounded
-emax004 toSci   -9.9 -> -9.9
-emax005 toSci   -9   -> -9
-emax006 toSci   -1   -> -1
-emax007 toSci    0   ->  0
-emax008 toSci    1   ->  1
-emax009 toSci    9   ->  9
-emax010 toSci    9.9 ->  9.9
-emax011 toSci   10   ->  Infinity Overflow Inexact Rounded
-emax012 toSci  100   ->  Infinity Overflow Inexact Rounded
-emax013 toSci  1E+2  ->  Infinity Overflow Inexact Rounded
-emax014 toSci   0.99 ->  0.99 Subnormal
-emax015 toSci   0.1  ->  0.1 Subnormal
-emax016 toSci   0.01 ->  0.01 Subnormal
-emax017 toSci  1E-1  ->  0.1 Subnormal
-emax018 toSci  1E-2  ->  0.01 Subnormal
-
-maxexponent: 1
-minexponent: -1
-emax100 toSci -1E+3  -> -Infinity Overflow Inexact Rounded
-emax101 toSci -1E+2  -> -Infinity Overflow Inexact Rounded
-emax102 toSci -100   -> -Infinity Overflow Inexact Rounded
-emax103 toSci  -10   -> -10
-emax104 toSci   -9.9 -> -9.9
-emax105 toSci   -9   -> -9
-emax106 toSci   -1   -> -1
-emax107 toSci    0   ->  0
-emax108 toSci    1   ->  1
-emax109 toSci    9   ->  9
-emax110 toSci    9.9 ->  9.9
-emax111 toSci   10   -> 10
-emax112 toSci  100   ->  Infinity Overflow Inexact Rounded
-emax113 toSci  1E+2  ->  Infinity Overflow Inexact Rounded
-emax114 toSci  1E+3  ->  Infinity Overflow Inexact Rounded
-emax115 toSci   0.99 ->  0.99
-emax116 toSci   0.1  ->  0.1
-emax117 toSci   0.01 ->  0.01 Subnormal
-emax118 toSci  1E-1  ->  0.1
-emax119 toSci  1E-2  ->  0.01 Subnormal
-emax120 toSci  1E-3  ->  0.001 Subnormal
-emax121 toSci  1.1E-3  ->  0.0011 Subnormal
-emax122 toSci  1.11E-3  ->  0.00111 Subnormal
-emax123 toSci  1.111E-3  ->  0.00111 Subnormal Underflow Inexact Rounded
-emax124 toSci  1.1111E-3  ->  0.00111 Subnormal Underflow Inexact Rounded
-emax125 toSci  1.11111E-3  ->  0.00111 Subnormal Underflow Inexact Rounded
-
-maxexponent: 2
-minexponent: -2
-precision: 9
-emax200 toSci -1E+3  -> -Infinity Overflow Inexact Rounded
-emax201 toSci -1E+2  -> -1E+2
-emax202 toSci -100   -> -100
-emax203 toSci  -10   -> -10
-emax204 toSci   -9.9 -> -9.9
-emax205 toSci   -9   -> -9
-emax206 toSci   -1   -> -1
-emax207 toSci    0   ->  0
-emax208 toSci    1   ->  1
-emax209 toSci    9   ->  9
-emax210 toSci    9.9 ->  9.9
-emax211 toSci   10   -> 10
-emax212 toSci  100   -> 100
-emax213 toSci  1E+2  -> 1E+2
-emax214 toSci  1E+3  ->  Infinity Overflow Inexact Rounded
-emax215 toSci   0.99 ->  0.99
-emax216 toSci   0.1  ->  0.1
-emax217 toSci   0.01 ->  0.01
-emax218 toSci  0.001 ->  0.001 Subnormal
-emax219 toSci  1E-1  ->  0.1
-emax220 toSci  1E-2  ->  0.01
-emax221 toSci  1E-3  ->  0.001 Subnormal
-emax222 toSci  1E-4  ->  0.0001 Subnormal
-emax223 toSci  1E-5  ->  0.00001 Subnormal
-emax224 toSci  1E-6  ->  0.000001 Subnormal
-emax225 toSci  1E-7  ->  1E-7  Subnormal
-emax226 toSci  1E-8  ->  1E-8  Subnormal
-emax227 toSci  1E-9  ->  1E-9  Subnormal
-emax228 toSci  1E-10 ->  1E-10 Subnormal
-emax229 toSci  1E-11 ->  0E-10 Underflow Subnormal Inexact Rounded Clamped
-emax230 toSci  1E-12 ->  0E-10 Underflow Subnormal Inexact Rounded Clamped
-
-maxexponent: 7
-minexponent: -7
-emax231 toSci  1E-8  ->  1E-8 Subnormal
-emax232 toSci  1E-7  ->  1E-7
-emax233 toSci  1E-6  ->  0.000001
-emax234 toSci  1E-5  ->  0.00001
-emax235 toSci  1E+5  ->  1E+5
-emax236 toSci  1E+6  ->  1E+6
-emax237 toSci  1E+7  ->  1E+7
-emax238 toSci  1E+8  ->  Infinity Overflow Inexact Rounded
-
-maxexponent: 9
-minexponent: -9
-emax240 toSci  1E-21 ->  0E-17 Subnormal Underflow Inexact Rounded Clamped
-emax241 toSci  1E-10 ->  1E-10 Subnormal
-emax242 toSci  1E-9  ->  1E-9
-emax243 toSci  1E-8  ->  1E-8
-emax244 toSci  1E-7  ->  1E-7
-emax245 toSci  1E+7  ->  1E+7
-emax246 toSci  1E+8  ->  1E+8
-emax247 toSci  1E+9  ->  1E+9
-emax248 toSci  1E+10 ->  Infinity Overflow Inexact Rounded
-
-maxexponent: 10  -- boundary
-minexponent: -10
-emax250 toSci  1E-21 ->  0E-18 Underflow Subnormal Inexact Rounded Clamped
-emax251 toSci  1E-11 ->  1E-11 Subnormal
-emax252 toSci  1E-10 ->  1E-10
-emax253 toSci  1E-9  ->  1E-9
-emax254 toSci  1E-8  ->  1E-8
-emax255 toSci  1E+8  ->  1E+8
-emax256 toSci  1E+9  ->  1E+9
-emax257 toSci  1E+10 ->  1E+10
-emax258 toSci  1E+11 ->  Infinity Overflow Inexact Rounded
-
-emax260 toSci  1.00E-21 ->  0E-18 Underflow Subnormal Inexact Rounded Clamped
-emax261 toSci  1.00E-11 ->  1.00E-11 Subnormal
-emax262 toSci  1.00E-10 ->  1.00E-10
-emax263 toSci  1.00E-9  ->  1.00E-9
-emax264 toSci  1.00E-8  ->  1.00E-8
-emax265 toSci  1.00E+8  ->  1.00E+8
-emax266 toSci  1.00E+9  ->  1.00E+9
-emax267 toSci  1.00E+10 ->  1.00E+10
-emax268 toSci  1.00E+11 ->  Infinity Overflow Inexact Rounded
-emax270 toSci  9.99E-21 ->  0E-18 Underflow Subnormal Inexact Rounded Clamped
-emax271 toSci  9.99E-11 ->  9.99E-11 Subnormal
-emax272 toSci  9.99E-10 ->  9.99E-10
-emax273 toSci  9.99E-9  ->  9.99E-9
-emax274 toSci  9.99E-8  ->  9.99E-8
-emax275 toSci  9.99E+8  ->  9.99E+8
-emax276 toSci  9.99E+9  ->  9.99E+9
-emax277 toSci  9.99E+10 ->  9.99E+10
-emax278 toSci  9.99E+11 ->  Infinity Overflow Inexact Rounded
-
-maxexponent: 99
-minexponent: -99
-emax280 toSci  1E-120 ->  0E-107 Underflow Subnormal Inexact Rounded Clamped
-emax281 toSci  1E-100 ->  1E-100 Subnormal
-emax282 toSci  1E-99  ->  1E-99
-emax283 toSci  1E-98  ->  1E-98
-emax284 toSci  1E+98  ->  1E+98
-emax285 toSci  1E+99  ->  1E+99
-emax286 toSci  1E+100 ->  Infinity Overflow Inexact Rounded
-
-maxexponent: 999
-minexponent: -999
-emax291 toSci  1E-1000 ->  1E-1000 Subnormal
-emax292 toSci  1E-999  ->  1E-999
-emax293 toSci  1E+999  ->  1E+999
-emax294 toSci  1E+1000 ->  Infinity Overflow Inexact Rounded
-maxexponent: 9999
-minexponent: -9999
-emax301 toSci  1E-10000 ->  1E-10000 Subnormal
-emax302 toSci  1E-9999  ->  1E-9999
-emax303 toSci  1E+9999  ->  1E+9999
-emax304 toSci  1E+10000 ->  Infinity Overflow Inexact Rounded
-maxexponent: 99999
-minexponent: -99999
-emax311 toSci  1E-100000 ->  1E-100000 Subnormal
-emax312 toSci  1E-99999  ->  1E-99999
-emax313 toSci  1E+99999  ->  1E+99999
-emax314 toSci  1E+100000 ->  Infinity Overflow Inexact Rounded
-maxexponent: 999999
-minexponent: -999999
-emax321 toSci  1E-1000000 ->  1E-1000000 Subnormal
-emax322 toSci  1E-999999  ->  1E-999999
-emax323 toSci  1E+999999  ->  1E+999999
-emax324 toSci  1E+1000000 ->  Infinity Overflow Inexact Rounded
-maxexponent: 9999999
-minexponent: -9999999
-emax331 toSci  1E-10000000 ->  1E-10000000 Subnormal
-emax332 toSci  1E-9999999  ->  1E-9999999
-emax333 toSci  1E+9999999  ->  1E+9999999
-emax334 toSci  1E+10000000 ->  Infinity Overflow Inexact Rounded
-maxexponent: 99999999
-minexponent: -99999999
-emax341 toSci  1E-100000000 ->  1E-100000000 Subnormal
-emax342 toSci  1E-99999999  ->  1E-99999999
-emax343 toSci  1E+99999999  ->  1E+99999999
-emax344 toSci  1E+100000000 ->  Infinity Overflow Inexact Rounded
-
-maxexponent: 999999999
-minexponent: -999999999
-emax347 toSci  1E-1000000008     ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-emax348 toSci  1E-1000000007     ->  1E-1000000007 Subnormal
-emax349 toSci  1E-1000000000     ->  1E-1000000000 Subnormal
-emax350 toSci  1E-999999999      ->  1E-999999999
-emax351 toSci  1E+999999999      ->  1E+999999999
-emax352 toSci  1E+1000000000     ->  Infinity Overflow Inexact Rounded
-emax353 toSci  1.000E-1000000000 ->  1.000E-1000000000 Subnormal
-emax354 toSci  1.000E-999999999  ->  1.000E-999999999
-emax355 toSci  1.000E+999999999  ->  1.000E+999999999
-emax356 toSci  1.000E+1000000000 ->  Infinity Overflow Inexact Rounded
-emax357 toSci  1.001E-1000000008 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-emax358 toSci  1.001E-1000000007 ->  1E-1000000007 Subnormal Inexact Rounded Underflow
-emax359 toSci  1.001E-1000000000 ->  1.001E-1000000000 Subnormal
-emax360 toSci  1.001E-999999999  ->  1.001E-999999999
-emax361 toSci  1.001E+999999999  ->  1.001E+999999999
-emax362 toSci  1.001E+1000000000 ->  Infinity Overflow Inexact Rounded
-emax363 toSci  9.000E-1000000000 ->  9.000E-1000000000 Subnormal
-emax364 toSci  9.000E-999999999  ->  9.000E-999999999
-emax365 toSci  9.000E+999999999  ->  9.000E+999999999
-emax366 toSci  9.000E+1000000000 ->  Infinity Overflow Inexact Rounded
-emax367 toSci  9.999E-1000000009 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-emax368 toSci  9.999E-1000000008 ->  1E-1000000007 Underflow Subnormal Inexact Rounded
-emax369 toSci  9.999E-1000000007 ->  1.0E-1000000006 Underflow Subnormal Inexact Rounded
-emax370 toSci  9.999E-1000000000 ->  9.999E-1000000000 Subnormal
-emax371 toSci  9.999E-999999999  ->  9.999E-999999999
-emax372 toSci  9.999E+999999999  ->  9.999E+999999999
-
-emax373 toSci  9.999E+1000000000 ->  Infinity Overflow Inexact Rounded
-emax374 toSci -1E-1000000000     -> -1E-1000000000 Subnormal
-emax375 toSci -1E-999999999      -> -1E-999999999
-emax376 toSci -1E+999999999      -> -1E+999999999
-emax377 toSci -1E+1000000000     -> -Infinity Overflow Inexact Rounded
-emax378 toSci -1.000E-1000000000 -> -1.000E-1000000000 Subnormal
-emax379 toSci -1.000E-999999999  -> -1.000E-999999999
-emax380 toSci -1.000E+999999999  -> -1.000E+999999999
-emax381 toSci -1.000E+1000000000 -> -Infinity Overflow Inexact Rounded
-emax382 toSci -1.001E-1000000008 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-emax383 toSci -1.001E-999999999  -> -1.001E-999999999
-emax384 toSci -1.001E+999999999  -> -1.001E+999999999
-emax385 toSci -1.001E+1000000000 -> -Infinity Overflow Inexact Rounded
-emax386 toSci -9.000E-1000000123 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-emax387 toSci -9.000E-999999999  -> -9.000E-999999999
-emax388 toSci -9.000E+999999999  -> -9.000E+999999999
-emax389 toSci -9.000E+1000000000 -> -Infinity Overflow Inexact Rounded
-emax390 toSci -9.999E-1000000008 -> -1E-1000000007 Underflow Subnormal Inexact Rounded
-emax391 toSci -9.999E-999999999  -> -9.999E-999999999
-emax392 toSci -9.999E+999999999  -> -9.999E+999999999
-emax393 toSci -9.999E+1000000000 -> -Infinity Overflow Inexact Rounded
-
--- Now check 854 rounding of subnormals and proper underflow to 0
-precision:   5
-maxExponent: 999
-minexponent: -999
-rounding:    half_even
-
-emax400 toSci  1.0000E-999     -> 1.0000E-999
-emax401 toSci  0.1E-999        -> 1E-1000     Subnormal
-emax402 toSci  0.1000E-999     -> 1.000E-1000 Subnormal
-emax403 toSci  0.0100E-999     -> 1.00E-1001  Subnormal
-emax404 toSci  0.0010E-999     -> 1.0E-1002   Subnormal
-emax405 toSci  0.0001E-999     -> 1E-1003     Subnormal
-emax406 toSci  0.00010E-999    -> 1E-1003     Subnormal Rounded
-emax407 toSci  0.00013E-999    -> 1E-1003     Underflow Subnormal Inexact Rounded
-emax408 toSci  0.00015E-999    -> 2E-1003     Underflow Subnormal Inexact Rounded
-emax409 toSci  0.00017E-999    -> 2E-1003     Underflow Subnormal Inexact Rounded
-emax410 toSci  0.00023E-999    -> 2E-1003     Underflow Subnormal Inexact Rounded
-emax411 toSci  0.00025E-999    -> 2E-1003     Underflow Subnormal Inexact Rounded
-emax412 toSci  0.00027E-999    -> 3E-1003     Underflow Subnormal Inexact Rounded
-emax413 toSci  0.000149E-999   -> 1E-1003     Underflow Subnormal Inexact Rounded
-emax414 toSci  0.000150E-999   -> 2E-1003     Underflow Subnormal Inexact Rounded
-emax415 toSci  0.000151E-999   -> 2E-1003     Underflow Subnormal Inexact Rounded
-emax416 toSci  0.000249E-999   -> 2E-1003     Underflow Subnormal Inexact Rounded
-emax417 toSci  0.000250E-999   -> 2E-1003     Underflow Subnormal Inexact Rounded
-emax418 toSci  0.000251E-999   -> 3E-1003     Underflow Subnormal Inexact Rounded
-emax419 toSci  0.00009E-999    -> 1E-1003     Underflow Subnormal Inexact Rounded
-emax420 toSci  0.00005E-999    -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
-emax421 toSci  0.00003E-999    -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
-emax422 toSci  0.000009E-999   -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
-emax423 toSci  0.000005E-999   -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
-emax424 toSci  0.000003E-999   -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
-
-emax425 toSci  0.001049E-999   -> 1.0E-1002   Underflow Subnormal Inexact Rounded
-emax426 toSci  0.001050E-999   -> 1.0E-1002   Underflow Subnormal Inexact Rounded
-emax427 toSci  0.001051E-999   -> 1.1E-1002   Underflow Subnormal Inexact Rounded
-emax428 toSci  0.001149E-999   -> 1.1E-1002   Underflow Subnormal Inexact Rounded
-emax429 toSci  0.001150E-999   -> 1.2E-1002   Underflow Subnormal Inexact Rounded
-emax430 toSci  0.001151E-999   -> 1.2E-1002   Underflow Subnormal Inexact Rounded
-
-emax432 toSci  0.010049E-999   -> 1.00E-1001  Underflow Subnormal Inexact Rounded
-emax433 toSci  0.010050E-999   -> 1.00E-1001  Underflow Subnormal Inexact Rounded
-emax434 toSci  0.010051E-999   -> 1.01E-1001  Underflow Subnormal Inexact Rounded
-emax435 toSci  0.010149E-999   -> 1.01E-1001  Underflow Subnormal Inexact Rounded
-emax436 toSci  0.010150E-999   -> 1.02E-1001  Underflow Subnormal Inexact Rounded
-emax437 toSci  0.010151E-999   -> 1.02E-1001  Underflow Subnormal Inexact Rounded
-
-emax440 toSci  0.10103E-999    -> 1.010E-1000 Underflow Subnormal Inexact Rounded
-emax441 toSci  0.10105E-999    -> 1.010E-1000 Underflow Subnormal Inexact Rounded
-emax442 toSci  0.10107E-999    -> 1.011E-1000 Underflow Subnormal Inexact Rounded
-emax443 toSci  0.10113E-999    -> 1.011E-1000 Underflow Subnormal Inexact Rounded
-emax444 toSci  0.10115E-999    -> 1.012E-1000 Underflow Subnormal Inexact Rounded
-emax445 toSci  0.10117E-999    -> 1.012E-1000 Underflow Subnormal Inexact Rounded
-
-emax450 toSci  1.10730E-1000   -> 1.107E-1000 Underflow Subnormal Inexact Rounded
-emax451 toSci  1.10750E-1000   -> 1.108E-1000 Underflow Subnormal Inexact Rounded
-emax452 toSci  1.10770E-1000   -> 1.108E-1000 Underflow Subnormal Inexact Rounded
-emax453 toSci  1.10830E-1000   -> 1.108E-1000 Underflow Subnormal Inexact Rounded
-emax454 toSci  1.10850E-1000   -> 1.108E-1000 Underflow Subnormal Inexact Rounded
-emax455 toSci  1.10870E-1000   -> 1.109E-1000 Underflow Subnormal Inexact Rounded
-
--- make sure sign OK
-emax456 toSci  -0.10103E-999   -> -1.010E-1000 Underflow Subnormal Inexact Rounded
-emax457 toSci  -0.10105E-999   -> -1.010E-1000 Underflow Subnormal Inexact Rounded
-emax458 toSci  -0.10107E-999   -> -1.011E-1000 Underflow Subnormal Inexact Rounded
-emax459 toSci  -0.10113E-999   -> -1.011E-1000 Underflow Subnormal Inexact Rounded
-emax460 toSci  -0.10115E-999   -> -1.012E-1000 Underflow Subnormal Inexact Rounded
-emax461 toSci  -0.10117E-999   -> -1.012E-1000 Underflow Subnormal Inexact Rounded
-
--- '999s' cases
-emax464 toSci  999999E-999         -> 1.0000E-993 Inexact Rounded
-emax465 toSci  99999.0E-999        -> 9.9999E-995 Rounded
-emax466 toSci  99999.E-999         -> 9.9999E-995
-emax467 toSci  9999.9E-999         -> 9.9999E-996
-emax468 toSci  999.99E-999         -> 9.9999E-997
-emax469 toSci  99.999E-999         -> 9.9999E-998
-emax470 toSci  9.9999E-999         -> 9.9999E-999
-emax471 toSci  0.99999E-999        -> 1.0000E-999 Underflow Subnormal Inexact Rounded
-emax472 toSci  0.099999E-999       -> 1.000E-1000 Underflow Subnormal Inexact Rounded
-emax473 toSci  0.0099999E-999      -> 1.00E-1001  Underflow Subnormal Inexact Rounded
-emax474 toSci  0.00099999E-999     -> 1.0E-1002   Underflow Subnormal Inexact Rounded
-emax475 toSci  0.000099999E-999    -> 1E-1003     Underflow Subnormal Inexact Rounded
-emax476 toSci  0.0000099999E-999   -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
-emax477 toSci  0.00000099999E-999  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
-emax478 toSci  0.000000099999E-999 -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
-
--- Exponents with insignificant leading zeros
-precision:   16
-maxExponent: 999999999
-minexponent: -999999999
-basx1001 toSci  1e999999999 -> 1E+999999999
-basx1002 toSci  1e0999999999 -> 1E+999999999
-basx1003 toSci  1e00999999999 -> 1E+999999999
-basx1004 toSci  1e000999999999 -> 1E+999999999
-basx1005 toSci  1e000000000000999999999 -> 1E+999999999
-basx1006 toSci  1e000000000001000000007 -> Infinity Overflow Inexact Rounded
-basx1007 toSci  1e-999999999 -> 1E-999999999
-basx1008 toSci  1e-0999999999 -> 1E-999999999
-basx1009 toSci  1e-00999999999 -> 1E-999999999
-basx1010 toSci  1e-000999999999 -> 1E-999999999
-basx1011 toSci  1e-000000000000999999999 -> 1E-999999999
-basx1012 toSci  1e-000000000001000000007 -> 1E-1000000007 Subnormal
-
--- Edge cases for int32 exponents...
-basx1021 tosci 1e+2147483649 -> Infinity Overflow Inexact Rounded
-basx1022 tosci 1e+2147483648 -> Infinity Overflow Inexact Rounded
-basx1023 tosci 1e+2147483647 -> Infinity Overflow Inexact Rounded
-basx1024 tosci 1e-2147483647 -> 0E-1000000014 Underflow Subnormal Inexact Rounded Clamped
-basx1025 tosci 1e-2147483648 -> 0E-1000000014 Underflow Subnormal Inexact Rounded Clamped
-basx1026 tosci 1e-2147483649 -> 0E-1000000014 Underflow Subnormal Inexact Rounded Clamped
--- same unbalanced
-precision:   7
-maxExponent: 96
-minexponent: -95
-basx1031 tosci 1e+2147483649 -> Infinity Overflow Inexact Rounded
-basx1032 tosci 1e+2147483648 -> Infinity Overflow Inexact Rounded
-basx1033 tosci 1e+2147483647 -> Infinity Overflow Inexact Rounded
-basx1034 tosci 1e-2147483647 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
-basx1035 tosci 1e-2147483648 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
-basx1036 tosci 1e-2147483649 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
-
--- check for double-rounded subnormals
-precision:   5
-maxexponent: 79
-minexponent: -79
-basx1041 toSci     1.52444E-80  ->  1.524E-80 Inexact Rounded Subnormal Underflow
-basx1042 toSci     1.52445E-80  ->  1.524E-80 Inexact Rounded Subnormal Underflow
-basx1043 toSci     1.52446E-80  ->  1.524E-80 Inexact Rounded Subnormal Underflow
-
--- clamped zeros [see also clamp.decTest]
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-
-basx1061 apply   0e+10000  ->  0E+6144 Clamped
-basx1062 apply   0e-10000  ->  0E-6176 Clamped
-basx1063 apply  -0e+10000  -> -0E+6144 Clamped
-basx1064 apply  -0e-10000  -> -0E-6176 Clamped
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-
-basx1065 apply   0e+10000  ->  0E+384  Clamped
-basx1066 apply   0e-10000  ->  0E-398  Clamped
-basx1067 apply  -0e+10000  -> -0E+384  Clamped
-basx1068 apply  -0e-10000  -> -0E-398  Clamped
-
--- same with IEEE clamping
-clamp:       1
-
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-
-basx1071 apply   0e+10000  ->  0E+6111 Clamped
-basx1072 apply   0e-10000  ->  0E-6176 Clamped
-basx1073 apply  -0e+10000  -> -0E+6111 Clamped
-basx1074 apply  -0e-10000  -> -0E-6176 Clamped
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-
-basx1075 apply   0e+10000  ->  0E+369  Clamped
-basx1076 apply   0e-10000  ->  0E-398  Clamped
-basx1077 apply  -0e+10000  -> -0E+369  Clamped
-basx1078 apply  -0e-10000  -> -0E-398  Clamped
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/clamp.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/clamp.decTest
deleted file mode 100644
index 740de0c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/clamp.decTest
+++ /dev/null
@@ -1,211 +0,0 @@
-------------------------------------------------------------------------
--- clamp.decTest -- clamped exponent tests (format-independent)       --
--- Copyright (c) IBM Corporation, 2000, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This set of tests uses the same limits as the 8-byte concrete
--- representation, but applies clamping without using format-specific
--- conversions.
-
-extended:    1
-precision:   16
-rounding:    half_even
-maxExponent: 384
-minExponent: -383
-clamp:       1
-
--- General testcases
-
--- Normality
-clam010 apply   1234567890123456   ->  1234567890123456
-clam011 apply   1234567890123456.0 ->  1234567890123456 Rounded
-clam012 apply   1234567890123456.1 ->  1234567890123456 Rounded Inexact
-clam013 apply  -1234567890123456   -> -1234567890123456
-clam014 apply  -1234567890123456.0 -> -1234567890123456 Rounded
-clam015 apply  -1234567890123456.1 -> -1234567890123456 Rounded Inexact
-
-
--- Nmax and similar
-clam022 apply   9.999999999999999E+384  -> 9.999999999999999E+384
-clam024 apply   1.234567890123456E+384  -> 1.234567890123456E+384
--- fold-downs (more below)
-clam030 apply   1.23E+384               -> 1.230000000000000E+384 Clamped
-clam032 apply   1E+384                  -> 1.000000000000000E+384 Clamped
-
-clam051 apply   12345                   -> 12345
-clam053 apply   1234                    -> 1234
-clam055 apply   123                     -> 123
-clam057 apply   12                      -> 12
-clam059 apply   1                       -> 1
-clam061 apply   1.23                    -> 1.23
-clam063 apply   123.45                  -> 123.45
-
--- Nmin and below
-clam071 apply   1E-383                  -> 1E-383
-clam073 apply   1.000000000000000E-383  -> 1.000000000000000E-383
-clam075 apply   1.000000000000001E-383  -> 1.000000000000001E-383
-
-clam077 apply   0.100000000000000E-383  -> 1.00000000000000E-384  Subnormal
-clam079 apply   0.000000000000010E-383  -> 1.0E-397               Subnormal
-clam081 apply   0.00000000000001E-383   -> 1E-397                 Subnormal
-clam083 apply   0.000000000000001E-383  -> 1E-398                 Subnormal
-
--- underflows
-clam090 apply   1e-398                  -> #0000000000000001  Subnormal
-clam091 apply   1.9e-398                -> #0000000000000002  Subnormal Underflow Inexact Rounded
-clam092 apply   1.1e-398                -> #0000000000000001  Subnormal Underflow Inexact Rounded
-clam093 apply   1.00000000001e-398      -> #0000000000000001  Subnormal Underflow Inexact Rounded
-clam094 apply   1.00000000000001e-398   -> #0000000000000001  Subnormal Underflow Inexact Rounded
-clam095 apply   1.000000000000001e-398  -> #0000000000000001  Subnormal Underflow Inexact Rounded
-clam096 apply   0.1e-398                -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped
-clam097 apply   0.00000000001e-398      -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped
-clam098 apply   0.00000000000001e-398   -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped
-clam099 apply   0.000000000000001e-398  -> #0000000000000000  Subnormal Underflow Inexact Rounded Clamped
-
--- Same again, negatives
--- Nmax and similar
-clam122 apply  -9.999999999999999E+384  -> -9.999999999999999E+384
-clam124 apply  -1.234567890123456E+384  -> -1.234567890123456E+384
--- fold-downs (more below)
-clam130 apply  -1.23E+384               -> -1.230000000000000E+384 Clamped
-clam132 apply  -1E+384                  -> -1.000000000000000E+384 Clamped
-
-clam151 apply  -12345                   -> -12345
-clam153 apply  -1234                    -> -1234
-clam155 apply  -123                     -> -123
-clam157 apply  -12                      -> -12
-clam159 apply  -1                       -> -1
-clam161 apply  -1.23                    -> -1.23
-clam163 apply  -123.45                  -> -123.45
-
--- Nmin and below
-clam171 apply  -1E-383                  -> -1E-383
-clam173 apply  -1.000000000000000E-383  -> -1.000000000000000E-383
-clam175 apply  -1.000000000000001E-383  -> -1.000000000000001E-383
-
-clam177 apply  -0.100000000000000E-383  -> -1.00000000000000E-384  Subnormal
-clam179 apply  -0.000000000000010E-383  -> -1.0E-397               Subnormal
-clam181 apply  -0.00000000000001E-383   -> -1E-397                 Subnormal
-clam183 apply  -0.000000000000001E-383  -> -1E-398                 Subnormal
-
--- underflows
-clam189 apply   -1e-398                 -> #8000000000000001  Subnormal
-clam190 apply   -1.0e-398               -> #8000000000000001  Subnormal Rounded
-clam191 apply   -1.9e-398               -> #8000000000000002  Subnormal Underflow Inexact Rounded
-clam192 apply   -1.1e-398               -> #8000000000000001  Subnormal Underflow Inexact Rounded
-clam193 apply   -1.00000000001e-398     -> #8000000000000001  Subnormal Underflow Inexact Rounded
-clam194 apply   -1.00000000000001e-398  -> #8000000000000001  Subnormal Underflow Inexact Rounded
-clam195 apply   -1.000000000000001e-398 -> #8000000000000001  Subnormal Underflow Inexact Rounded
-clam196 apply   -0.1e-398               -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped
-clam197 apply   -0.00000000001e-398     -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped
-clam198 apply   -0.00000000000001e-398  -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped
-clam199 apply   -0.000000000000001e-398 -> #8000000000000000  Subnormal Underflow Inexact Rounded Clamped
-
--- zeros
-clam401 apply   0E-500                  -> 0E-398  Clamped
-clam402 apply   0E-400                  -> 0E-398  Clamped
-clam403 apply   0E-398                  -> 0E-398
-clam404 apply   0.000000000000000E-383  -> 0E-398
-clam405 apply   0E-2                    ->  0.00
-clam406 apply   0                       -> 0
-clam407 apply   0E+3                    -> 0E+3
-clam408 apply   0E+369                  -> 0E+369
--- clamped zeros...
-clam410 apply   0E+370                  -> 0E+369 Clamped
-clam411 apply   0E+384                  -> 0E+369 Clamped
-clam412 apply   0E+400                  -> 0E+369 Clamped
-clam413 apply   0E+500                  -> 0E+369 Clamped
-
--- negative zeros
-clam420 apply   -0E-500                 -> -0E-398 Clamped
-clam421 apply   -0E-400                 -> -0E-398 Clamped
-clam422 apply   -0E-398                 -> -0E-398
-clam423 apply   -0.000000000000000E-383 -> -0E-398
-clam424 apply   -0E-2                   -> -0.00
-clam425 apply   -0                      -> -0
-clam426 apply   -0E+3                   -> -0E+3
-clam427 apply   -0E+369                 -> -0E+369
--- clamped zeros...
-clam431 apply   -0E+370                 -> -0E+369 Clamped
-clam432 apply   -0E+384                 -> -0E+369 Clamped
-clam433 apply   -0E+400                 -> -0E+369 Clamped
-clam434 apply   -0E+500                 -> -0E+369 Clamped
-
--- fold-down full sequence
-clam601 apply   1E+384                  -> 1.000000000000000E+384 Clamped
-clam603 apply   1E+383                  -> 1.00000000000000E+383 Clamped
-clam605 apply   1E+382                  -> 1.0000000000000E+382 Clamped
-clam607 apply   1E+381                  -> 1.000000000000E+381 Clamped
-clam609 apply   1E+380                  -> 1.00000000000E+380 Clamped
-clam611 apply   1E+379                  -> 1.0000000000E+379 Clamped
-clam613 apply   1E+378                  -> 1.000000000E+378 Clamped
-clam615 apply   1E+377                  -> 1.00000000E+377 Clamped
-clam617 apply   1E+376                  -> 1.0000000E+376 Clamped
-clam619 apply   1E+375                  -> 1.000000E+375 Clamped
-clam621 apply   1E+374                  -> 1.00000E+374 Clamped
-clam623 apply   1E+373                  -> 1.0000E+373 Clamped
-clam625 apply   1E+372                  -> 1.000E+372 Clamped
-clam627 apply   1E+371                  -> 1.00E+371 Clamped
-clam629 apply   1E+370                  -> 1.0E+370 Clamped
-clam631 apply   1E+369                  -> 1E+369
-clam633 apply   1E+368                  -> 1E+368
--- same with 9s
-clam641 apply   9E+384                  -> 9.000000000000000E+384 Clamped
-clam643 apply   9E+383                  -> 9.00000000000000E+383 Clamped
-clam645 apply   9E+382                  -> 9.0000000000000E+382 Clamped
-clam647 apply   9E+381                  -> 9.000000000000E+381 Clamped
-clam649 apply   9E+380                  -> 9.00000000000E+380 Clamped
-clam651 apply   9E+379                  -> 9.0000000000E+379 Clamped
-clam653 apply   9E+378                  -> 9.000000000E+378 Clamped
-clam655 apply   9E+377                  -> 9.00000000E+377 Clamped
-clam657 apply   9E+376                  -> 9.0000000E+376 Clamped
-clam659 apply   9E+375                  -> 9.000000E+375 Clamped
-clam661 apply   9E+374                  -> 9.00000E+374 Clamped
-clam663 apply   9E+373                  -> 9.0000E+373 Clamped
-clam665 apply   9E+372                  -> 9.000E+372 Clamped
-clam667 apply   9E+371                  -> 9.00E+371 Clamped
-clam669 apply   9E+370                  -> 9.0E+370 Clamped
-clam671 apply   9E+369                  -> 9E+369
-clam673 apply   9E+368                  -> 9E+368
-
--- subnormals clamped to 0-Etiny
-precision:   16
-maxExponent: 384
-minExponent: -383
-clam681 apply 7E-398     -> 7E-398 Subnormal
-clam682 apply 0E-398     -> 0E-398
-clam683 apply 7E-399     -> 1E-398 Subnormal Underflow Inexact Rounded
-clam684 apply 4E-399     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
-clam685 apply 7E-400     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
-clam686 apply 7E-401     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
-clam687 apply 0E-399     -> 0E-398 Clamped
-clam688 apply 0E-400     -> 0E-398 Clamped
-clam689 apply 0E-401     -> 0E-398 Clamped
-
--- example from documentation
-precision:   7
-rounding:    half_even
-maxExponent: +96
-minExponent: -95
-
-clamp:       0
-clam700 apply   1.23E+96                -> 1.23E+96
-
-clamp:       1
-clam701 apply   1.23E+96                -> 1.230000E+96 Clamped
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/class.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/class.decTest
deleted file mode 100644
index 62d2fa4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/class.decTest
+++ /dev/null
@@ -1,131 +0,0 @@
-------------------------------------------------------------------------
--- class.decTest -- Class operations                                  --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- [New 2006.11.27]
-
-precision:   9
-maxExponent: 999
-minExponent: -999
-extended:    1
-clamp:       1
-rounding:    half_even
-
-clasx001  class    0                        -> +Zero
-clasx002  class    0.00                     -> +Zero
-clasx003  class    0E+5                     -> +Zero
-clasx004  class    1E-1007                  -> +Subnormal
-clasx005  class  0.1E-999                   -> +Subnormal
-clasx006  class  0.99999999E-999            -> +Subnormal
-clasx007  class  1.00000000E-999            -> +Normal
-clasx008  class   1E-999                    -> +Normal
-clasx009  class   1E-100                    -> +Normal
-clasx010  class   1E-10                     -> +Normal
-clasx012  class   1E-1                      -> +Normal
-clasx013  class   1                         -> +Normal
-clasx014  class   2.50                      -> +Normal
-clasx015  class   100.100                   -> +Normal
-clasx016  class   1E+30                     -> +Normal
-clasx017  class   1E+999                    -> +Normal
-clasx018  class   9.99999999E+999           -> +Normal
-clasx019  class   Inf                       -> +Infinity
-
-clasx021  class   -0                        -> -Zero
-clasx022  class   -0.00                     -> -Zero
-clasx023  class   -0E+5                     -> -Zero
-clasx024  class   -1E-1007                  -> -Subnormal
-clasx025  class  -0.1E-999                  -> -Subnormal
-clasx026  class  -0.99999999E-999           -> -Subnormal
-clasx027  class  -1.00000000E-999           -> -Normal
-clasx028  class  -1E-999                    -> -Normal
-clasx029  class  -1E-100                    -> -Normal
-clasx030  class  -1E-10                     -> -Normal
-clasx032  class  -1E-1                      -> -Normal
-clasx033  class  -1                         -> -Normal
-clasx034  class  -2.50                      -> -Normal
-clasx035  class  -100.100                   -> -Normal
-clasx036  class  -1E+30                     -> -Normal
-clasx037  class  -1E+999                    -> -Normal
-clasx038  class  -9.99999999E+999           -> -Normal
-clasx039  class  -Inf                       -> -Infinity
-
-clasx041  class   NaN                       -> NaN
-clasx042  class  -NaN                       -> NaN
-clasx043  class  +NaN12345                  -> NaN
-clasx044  class   sNaN                      -> sNaN
-clasx045  class  -sNaN                      -> sNaN
-clasx046  class  +sNaN12345                 -> sNaN
-
-
--- decimal64 bounds
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-clamp:       1
-rounding:    half_even
-
-clasx201  class    0                        -> +Zero
-clasx202  class    0.00                     -> +Zero
-clasx203  class    0E+5                     -> +Zero
-clasx204  class    1E-396                   -> +Subnormal
-clasx205  class  0.1E-383                   -> +Subnormal
-clasx206  class  0.999999999999999E-383     -> +Subnormal
-clasx207  class  1.000000000000000E-383     -> +Normal
-clasx208  class   1E-383                    -> +Normal
-clasx209  class   1E-100                    -> +Normal
-clasx210  class   1E-10                     -> +Normal
-clasx212  class   1E-1                      -> +Normal
-clasx213  class   1                         -> +Normal
-clasx214  class   2.50                      -> +Normal
-clasx215  class   100.100                   -> +Normal
-clasx216  class   1E+30                     -> +Normal
-clasx217  class   1E+384                    -> +Normal
-clasx218  class   9.999999999999999E+384    -> +Normal
-clasx219  class   Inf                       -> +Infinity
-
-clasx221  class   -0                        -> -Zero
-clasx222  class   -0.00                     -> -Zero
-clasx223  class   -0E+5                     -> -Zero
-clasx224  class   -1E-396                   -> -Subnormal
-clasx225  class  -0.1E-383                  -> -Subnormal
-clasx226  class  -0.999999999999999E-383    -> -Subnormal
-clasx227  class  -1.000000000000000E-383    -> -Normal
-clasx228  class  -1E-383                    -> -Normal
-clasx229  class  -1E-100                    -> -Normal
-clasx230  class  -1E-10                     -> -Normal
-clasx232  class  -1E-1                      -> -Normal
-clasx233  class  -1                         -> -Normal
-clasx234  class  -2.50                      -> -Normal
-clasx235  class  -100.100                   -> -Normal
-clasx236  class  -1E+30                     -> -Normal
-clasx237  class  -1E+384                    -> -Normal
-clasx238  class  -9.999999999999999E+384    -> -Normal
-clasx239  class  -Inf                       -> -Infinity
-
-clasx241  class   NaN                       -> NaN
-clasx242  class  -NaN                       -> NaN
-clasx243  class  +NaN12345                  -> NaN
-clasx244  class   sNaN                      -> sNaN
-clasx245  class  -sNaN                      -> sNaN
-clasx246  class  +sNaN12345                 -> sNaN
-
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/compare.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/compare.decTest
deleted file mode 100644
index fca5ba3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/compare.decTest
+++ /dev/null
@@ -1,758 +0,0 @@
-------------------------------------------------------------------------
--- compare.decTest -- decimal comparison that allows quiet NaNs       --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Note that we cannot assume add/subtract tests cover paths adequately,
--- here, because the code might be quite different (comparison cannot
--- overflow or underflow, so actual subtractions are not necessary).
-
-extended: 1
-
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minexponent: -999
-
--- sanity checks
-comx001 compare  -2  -2  -> 0
-comx002 compare  -2  -1  -> -1
-comx003 compare  -2   0  -> -1
-comx004 compare  -2   1  -> -1
-comx005 compare  -2   2  -> -1
-comx006 compare  -1  -2  -> 1
-comx007 compare  -1  -1  -> 0
-comx008 compare  -1   0  -> -1
-comx009 compare  -1   1  -> -1
-comx010 compare  -1   2  -> -1
-comx011 compare   0  -2  -> 1
-comx012 compare   0  -1  -> 1
-comx013 compare   0   0  -> 0
-comx014 compare   0   1  -> -1
-comx015 compare   0   2  -> -1
-comx016 compare   1  -2  -> 1
-comx017 compare   1  -1  -> 1
-comx018 compare   1   0  -> 1
-comx019 compare   1   1  -> 0
-comx020 compare   1   2  -> -1
-comx021 compare   2  -2  -> 1
-comx022 compare   2  -1  -> 1
-comx023 compare   2   0  -> 1
-comx025 compare   2   1  -> 1
-comx026 compare   2   2  -> 0
-
-comx031 compare  -20  -20  -> 0
-comx032 compare  -20  -10  -> -1
-comx033 compare  -20   00  -> -1
-comx034 compare  -20   10  -> -1
-comx035 compare  -20   20  -> -1
-comx036 compare  -10  -20  -> 1
-comx037 compare  -10  -10  -> 0
-comx038 compare  -10   00  -> -1
-comx039 compare  -10   10  -> -1
-comx040 compare  -10   20  -> -1
-comx041 compare   00  -20  -> 1
-comx042 compare   00  -10  -> 1
-comx043 compare   00   00  -> 0
-comx044 compare   00   10  -> -1
-comx045 compare   00   20  -> -1
-comx046 compare   10  -20  -> 1
-comx047 compare   10  -10  -> 1
-comx048 compare   10   00  -> 1
-comx049 compare   10   10  -> 0
-comx050 compare   10   20  -> -1
-comx051 compare   20  -20  -> 1
-comx052 compare   20  -10  -> 1
-comx053 compare   20   00  -> 1
-comx055 compare   20   10  -> 1
-comx056 compare   20   20  -> 0
-
-comx061 compare  -2.0  -2.0  -> 0
-comx062 compare  -2.0  -1.0  -> -1
-comx063 compare  -2.0   0.0  -> -1
-comx064 compare  -2.0   1.0  -> -1
-comx065 compare  -2.0   2.0  -> -1
-comx066 compare  -1.0  -2.0  -> 1
-comx067 compare  -1.0  -1.0  -> 0
-comx068 compare  -1.0   0.0  -> -1
-comx069 compare  -1.0   1.0  -> -1
-comx070 compare  -1.0   2.0  -> -1
-comx071 compare   0.0  -2.0  -> 1
-comx072 compare   0.0  -1.0  -> 1
-comx073 compare   0.0   0.0  -> 0
-comx074 compare   0.0   1.0  -> -1
-comx075 compare   0.0   2.0  -> -1
-comx076 compare   1.0  -2.0  -> 1
-comx077 compare   1.0  -1.0  -> 1
-comx078 compare   1.0   0.0  -> 1
-comx079 compare   1.0   1.0  -> 0
-comx080 compare   1.0   2.0  -> -1
-comx081 compare   2.0  -2.0  -> 1
-comx082 compare   2.0  -1.0  -> 1
-comx083 compare   2.0   0.0  -> 1
-comx085 compare   2.0   1.0  -> 1
-comx086 compare   2.0   2.0  -> 0
-
--- now some cases which might overflow if subtract were used
-maxexponent: 999999999
-minexponent: -999999999
-comx095 compare  9.99999999E+999999999 9.99999999E+999999999  -> 0
-comx096 compare -9.99999999E+999999999 9.99999999E+999999999  -> -1
-comx097 compare  9.99999999E+999999999 -9.99999999E+999999999 -> 1
-comx098 compare -9.99999999E+999999999 -9.99999999E+999999999 -> 0
-
--- some differing length/exponent cases
-comx100 compare   7.0    7.0    -> 0
-comx101 compare   7.0    7      -> 0
-comx102 compare   7      7.0    -> 0
-comx103 compare   7E+0   7.0    -> 0
-comx104 compare   70E-1  7.0    -> 0
-comx105 compare   0.7E+1 7      -> 0
-comx106 compare   70E-1  7      -> 0
-comx107 compare   7.0    7E+0   -> 0
-comx108 compare   7.0    70E-1  -> 0
-comx109 compare   7      0.7E+1 -> 0
-comx110 compare   7      70E-1  -> 0
-
-comx120 compare   8.0    7.0    -> 1
-comx121 compare   8.0    7      -> 1
-comx122 compare   8      7.0    -> 1
-comx123 compare   8E+0   7.0    -> 1
-comx124 compare   80E-1  7.0    -> 1
-comx125 compare   0.8E+1 7      -> 1
-comx126 compare   80E-1  7      -> 1
-comx127 compare   8.0    7E+0   -> 1
-comx128 compare   8.0    70E-1  -> 1
-comx129 compare   8      0.7E+1  -> 1
-comx130 compare   8      70E-1  -> 1
-
-comx140 compare   8.0    9.0    -> -1
-comx141 compare   8.0    9      -> -1
-comx142 compare   8      9.0    -> -1
-comx143 compare   8E+0   9.0    -> -1
-comx144 compare   80E-1  9.0    -> -1
-comx145 compare   0.8E+1 9      -> -1
-comx146 compare   80E-1  9      -> -1
-comx147 compare   8.0    9E+0   -> -1
-comx148 compare   8.0    90E-1  -> -1
-comx149 compare   8      0.9E+1 -> -1
-comx150 compare   8      90E-1  -> -1
-
--- and again, with sign changes -+ ..
-comx200 compare  -7.0    7.0    -> -1
-comx201 compare  -7.0    7      -> -1
-comx202 compare  -7      7.0    -> -1
-comx203 compare  -7E+0   7.0    -> -1
-comx204 compare  -70E-1  7.0    -> -1
-comx205 compare  -0.7E+1 7      -> -1
-comx206 compare  -70E-1  7      -> -1
-comx207 compare  -7.0    7E+0   -> -1
-comx208 compare  -7.0    70E-1  -> -1
-comx209 compare  -7      0.7E+1 -> -1
-comx210 compare  -7      70E-1  -> -1
-
-comx220 compare  -8.0    7.0    -> -1
-comx221 compare  -8.0    7      -> -1
-comx222 compare  -8      7.0    -> -1
-comx223 compare  -8E+0   7.0    -> -1
-comx224 compare  -80E-1  7.0    -> -1
-comx225 compare  -0.8E+1 7      -> -1
-comx226 compare  -80E-1  7      -> -1
-comx227 compare  -8.0    7E+0   -> -1
-comx228 compare  -8.0    70E-1  -> -1
-comx229 compare  -8      0.7E+1 -> -1
-comx230 compare  -8      70E-1  -> -1
-
-comx240 compare  -8.0    9.0    -> -1
-comx241 compare  -8.0    9      -> -1
-comx242 compare  -8      9.0    -> -1
-comx243 compare  -8E+0   9.0    -> -1
-comx244 compare  -80E-1  9.0    -> -1
-comx245 compare  -0.8E+1 9      -> -1
-comx246 compare  -80E-1  9      -> -1
-comx247 compare  -8.0    9E+0   -> -1
-comx248 compare  -8.0    90E-1  -> -1
-comx249 compare  -8      0.9E+1 -> -1
-comx250 compare  -8      90E-1  -> -1
-
--- and again, with sign changes +- ..
-comx300 compare   7.0    -7.0    -> 1
-comx301 compare   7.0    -7      -> 1
-comx302 compare   7      -7.0    -> 1
-comx303 compare   7E+0   -7.0    -> 1
-comx304 compare   70E-1  -7.0    -> 1
-comx305 compare   .7E+1  -7      -> 1
-comx306 compare   70E-1  -7      -> 1
-comx307 compare   7.0    -7E+0   -> 1
-comx308 compare   7.0    -70E-1  -> 1
-comx309 compare   7      -.7E+1  -> 1
-comx310 compare   7      -70E-1  -> 1
-
-comx320 compare   8.0    -7.0    -> 1
-comx321 compare   8.0    -7      -> 1
-comx322 compare   8      -7.0    -> 1
-comx323 compare   8E+0   -7.0    -> 1
-comx324 compare   80E-1  -7.0    -> 1
-comx325 compare   .8E+1  -7      -> 1
-comx326 compare   80E-1  -7      -> 1
-comx327 compare   8.0    -7E+0   -> 1
-comx328 compare   8.0    -70E-1  -> 1
-comx329 compare   8      -.7E+1  -> 1
-comx330 compare   8      -70E-1  -> 1
-
-comx340 compare   8.0    -9.0    -> 1
-comx341 compare   8.0    -9      -> 1
-comx342 compare   8      -9.0    -> 1
-comx343 compare   8E+0   -9.0    -> 1
-comx344 compare   80E-1  -9.0    -> 1
-comx345 compare   .8E+1  -9      -> 1
-comx346 compare   80E-1  -9      -> 1
-comx347 compare   8.0    -9E+0   -> 1
-comx348 compare   8.0    -90E-1  -> 1
-comx349 compare   8      -.9E+1  -> 1
-comx350 compare   8      -90E-1  -> 1
-
--- and again, with sign changes -- ..
-comx400 compare   -7.0    -7.0    -> 0
-comx401 compare   -7.0    -7      -> 0
-comx402 compare   -7      -7.0    -> 0
-comx403 compare   -7E+0   -7.0    -> 0
-comx404 compare   -70E-1  -7.0    -> 0
-comx405 compare   -.7E+1  -7      -> 0
-comx406 compare   -70E-1  -7      -> 0
-comx407 compare   -7.0    -7E+0   -> 0
-comx408 compare   -7.0    -70E-1  -> 0
-comx409 compare   -7      -.7E+1  -> 0
-comx410 compare   -7      -70E-1  -> 0
-
-comx420 compare   -8.0    -7.0    -> -1
-comx421 compare   -8.0    -7      -> -1
-comx422 compare   -8      -7.0    -> -1
-comx423 compare   -8E+0   -7.0    -> -1
-comx424 compare   -80E-1  -7.0    -> -1
-comx425 compare   -.8E+1  -7      -> -1
-comx426 compare   -80E-1  -7      -> -1
-comx427 compare   -8.0    -7E+0   -> -1
-comx428 compare   -8.0    -70E-1  -> -1
-comx429 compare   -8      -.7E+1  -> -1
-comx430 compare   -8      -70E-1  -> -1
-
-comx440 compare   -8.0    -9.0    -> 1
-comx441 compare   -8.0    -9      -> 1
-comx442 compare   -8      -9.0    -> 1
-comx443 compare   -8E+0   -9.0    -> 1
-comx444 compare   -80E-1  -9.0    -> 1
-comx445 compare   -.8E+1  -9      -> 1
-comx446 compare   -80E-1  -9      -> 1
-comx447 compare   -8.0    -9E+0   -> 1
-comx448 compare   -8.0    -90E-1  -> 1
-comx449 compare   -8      -.9E+1  -> 1
-comx450 compare   -8      -90E-1  -> 1
-
--- misalignment traps for little-endian
-comx451 compare      1.0       0.1  -> 1
-comx452 compare      0.1       1.0  -> -1
-comx453 compare     10.0       0.1  -> 1
-comx454 compare      0.1      10.0  -> -1
-comx455 compare      100       1.0  -> 1
-comx456 compare      1.0       100  -> -1
-comx457 compare     1000      10.0  -> 1
-comx458 compare     10.0      1000  -> -1
-comx459 compare    10000     100.0  -> 1
-comx460 compare    100.0     10000  -> -1
-comx461 compare   100000    1000.0  -> 1
-comx462 compare   1000.0    100000  -> -1
-comx463 compare  1000000   10000.0  -> 1
-comx464 compare  10000.0   1000000  -> -1
-
--- testcases that subtract to lots of zeros at boundaries [pgr]
-precision: 40
-comx470 compare 123.4560000000000000E789 123.456E789 -> 0
-comx471 compare 123.456000000000000E-89 123.456E-89 -> 0
-comx472 compare 123.45600000000000E789 123.456E789 -> 0
-comx473 compare 123.4560000000000E-89 123.456E-89 -> 0
-comx474 compare 123.456000000000E789 123.456E789 -> 0
-comx475 compare 123.45600000000E-89 123.456E-89 -> 0
-comx476 compare 123.4560000000E789 123.456E789 -> 0
-comx477 compare 123.456000000E-89 123.456E-89 -> 0
-comx478 compare 123.45600000E789 123.456E789 -> 0
-comx479 compare 123.4560000E-89 123.456E-89 -> 0
-comx480 compare 123.456000E789 123.456E789 -> 0
-comx481 compare 123.45600E-89 123.456E-89 -> 0
-comx482 compare 123.4560E789 123.456E789 -> 0
-comx483 compare 123.456E-89 123.456E-89 -> 0
-comx484 compare 123.456E-89 123.4560000000000000E-89 -> 0
-comx485 compare 123.456E789 123.456000000000000E789 -> 0
-comx486 compare 123.456E-89 123.45600000000000E-89 -> 0
-comx487 compare 123.456E789 123.4560000000000E789 -> 0
-comx488 compare 123.456E-89 123.456000000000E-89 -> 0
-comx489 compare 123.456E789 123.45600000000E789 -> 0
-comx490 compare 123.456E-89 123.4560000000E-89 -> 0
-comx491 compare 123.456E789 123.456000000E789 -> 0
-comx492 compare 123.456E-89 123.45600000E-89 -> 0
-comx493 compare 123.456E789 123.4560000E789 -> 0
-comx494 compare 123.456E-89 123.456000E-89 -> 0
-comx495 compare 123.456E789 123.45600E789 -> 0
-comx496 compare 123.456E-89 123.4560E-89 -> 0
-comx497 compare 123.456E789 123.456E789 -> 0
-
--- wide-ranging, around precision; signs equal
-precision: 9
-comx500 compare    1     1E-15    -> 1
-comx501 compare    1     1E-14    -> 1
-comx502 compare    1     1E-13    -> 1
-comx503 compare    1     1E-12    -> 1
-comx504 compare    1     1E-11    -> 1
-comx505 compare    1     1E-10    -> 1
-comx506 compare    1     1E-9     -> 1
-comx507 compare    1     1E-8     -> 1
-comx508 compare    1     1E-7     -> 1
-comx509 compare    1     1E-6     -> 1
-comx510 compare    1     1E-5     -> 1
-comx511 compare    1     1E-4     -> 1
-comx512 compare    1     1E-3     -> 1
-comx513 compare    1     1E-2     -> 1
-comx514 compare    1     1E-1     -> 1
-comx515 compare    1     1E-0     -> 0
-comx516 compare    1     1E+1     -> -1
-comx517 compare    1     1E+2     -> -1
-comx518 compare    1     1E+3     -> -1
-comx519 compare    1     1E+4     -> -1
-comx521 compare    1     1E+5     -> -1
-comx522 compare    1     1E+6     -> -1
-comx523 compare    1     1E+7     -> -1
-comx524 compare    1     1E+8     -> -1
-comx525 compare    1     1E+9     -> -1
-comx526 compare    1     1E+10    -> -1
-comx527 compare    1     1E+11    -> -1
-comx528 compare    1     1E+12    -> -1
-comx529 compare    1     1E+13    -> -1
-comx530 compare    1     1E+14    -> -1
-comx531 compare    1     1E+15    -> -1
--- LR swap
-comx540 compare    1E-15  1       -> -1
-comx541 compare    1E-14  1       -> -1
-comx542 compare    1E-13  1       -> -1
-comx543 compare    1E-12  1       -> -1
-comx544 compare    1E-11  1       -> -1
-comx545 compare    1E-10  1       -> -1
-comx546 compare    1E-9   1       -> -1
-comx547 compare    1E-8   1       -> -1
-comx548 compare    1E-7   1       -> -1
-comx549 compare    1E-6   1       -> -1
-comx550 compare    1E-5   1       -> -1
-comx551 compare    1E-4   1       -> -1
-comx552 compare    1E-3   1       -> -1
-comx553 compare    1E-2   1       -> -1
-comx554 compare    1E-1   1       -> -1
-comx555 compare    1E-0   1       ->  0
-comx556 compare    1E+1   1       ->  1
-comx557 compare    1E+2   1       ->  1
-comx558 compare    1E+3   1       ->  1
-comx559 compare    1E+4   1       ->  1
-comx561 compare    1E+5   1       ->  1
-comx562 compare    1E+6   1       ->  1
-comx563 compare    1E+7   1       ->  1
-comx564 compare    1E+8   1       ->  1
-comx565 compare    1E+9   1       ->  1
-comx566 compare    1E+10  1       ->  1
-comx567 compare    1E+11  1       ->  1
-comx568 compare    1E+12  1       ->  1
-comx569 compare    1E+13  1       ->  1
-comx570 compare    1E+14  1       ->  1
-comx571 compare    1E+15  1       ->  1
--- similar with a useful coefficient, one side only
-comx580 compare  0.000000987654321     1E-15    -> 1
-comx581 compare  0.000000987654321     1E-14    -> 1
-comx582 compare  0.000000987654321     1E-13    -> 1
-comx583 compare  0.000000987654321     1E-12    -> 1
-comx584 compare  0.000000987654321     1E-11    -> 1
-comx585 compare  0.000000987654321     1E-10    -> 1
-comx586 compare  0.000000987654321     1E-9     -> 1
-comx587 compare  0.000000987654321     1E-8     -> 1
-comx588 compare  0.000000987654321     1E-7     -> 1
-comx589 compare  0.000000987654321     1E-6     -> -1
-comx590 compare  0.000000987654321     1E-5     -> -1
-comx591 compare  0.000000987654321     1E-4     -> -1
-comx592 compare  0.000000987654321     1E-3     -> -1
-comx593 compare  0.000000987654321     1E-2     -> -1
-comx594 compare  0.000000987654321     1E-1     -> -1
-comx595 compare  0.000000987654321     1E-0     -> -1
-comx596 compare  0.000000987654321     1E+1     -> -1
-comx597 compare  0.000000987654321     1E+2     -> -1
-comx598 compare  0.000000987654321     1E+3     -> -1
-comx599 compare  0.000000987654321     1E+4     -> -1
-
--- check some unit-y traps
-precision: 20
-comx600 compare   12            12.2345 -> -1
-comx601 compare   12.0          12.2345 -> -1
-comx602 compare   12.00         12.2345 -> -1
-comx603 compare   12.000        12.2345 -> -1
-comx604 compare   12.0000       12.2345 -> -1
-comx605 compare   12.00000      12.2345 -> -1
-comx606 compare   12.000000     12.2345 -> -1
-comx607 compare   12.0000000    12.2345 -> -1
-comx608 compare   12.00000000   12.2345 -> -1
-comx609 compare   12.000000000  12.2345 -> -1
-comx610 compare   12.1234 12            ->  1
-comx611 compare   12.1234 12.0          ->  1
-comx612 compare   12.1234 12.00         ->  1
-comx613 compare   12.1234 12.000        ->  1
-comx614 compare   12.1234 12.0000       ->  1
-comx615 compare   12.1234 12.00000      ->  1
-comx616 compare   12.1234 12.000000     ->  1
-comx617 compare   12.1234 12.0000000    ->  1
-comx618 compare   12.1234 12.00000000   ->  1
-comx619 compare   12.1234 12.000000000  ->  1
-comx620 compare  -12           -12.2345 ->  1
-comx621 compare  -12.0         -12.2345 ->  1
-comx622 compare  -12.00        -12.2345 ->  1
-comx623 compare  -12.000       -12.2345 ->  1
-comx624 compare  -12.0000      -12.2345 ->  1
-comx625 compare  -12.00000     -12.2345 ->  1
-comx626 compare  -12.000000    -12.2345 ->  1
-comx627 compare  -12.0000000   -12.2345 ->  1
-comx628 compare  -12.00000000  -12.2345 ->  1
-comx629 compare  -12.000000000 -12.2345 ->  1
-comx630 compare  -12.1234 -12           -> -1
-comx631 compare  -12.1234 -12.0         -> -1
-comx632 compare  -12.1234 -12.00        -> -1
-comx633 compare  -12.1234 -12.000       -> -1
-comx634 compare  -12.1234 -12.0000      -> -1
-comx635 compare  -12.1234 -12.00000     -> -1
-comx636 compare  -12.1234 -12.000000    -> -1
-comx637 compare  -12.1234 -12.0000000   -> -1
-comx638 compare  -12.1234 -12.00000000  -> -1
-comx639 compare  -12.1234 -12.000000000 -> -1
-precision: 9
-
--- extended zeros
-comx640 compare   0     0   -> 0
-comx641 compare   0    -0   -> 0
-comx642 compare   0    -0.0 -> 0
-comx643 compare   0     0.0 -> 0
-comx644 compare  -0     0   -> 0
-comx645 compare  -0    -0   -> 0
-comx646 compare  -0    -0.0 -> 0
-comx647 compare  -0     0.0 -> 0
-comx648 compare   0.0   0   -> 0
-comx649 compare   0.0  -0   -> 0
-comx650 compare   0.0  -0.0 -> 0
-comx651 compare   0.0   0.0 -> 0
-comx652 compare  -0.0   0   -> 0
-comx653 compare  -0.0  -0   -> 0
-comx654 compare  -0.0  -0.0 -> 0
-comx655 compare  -0.0   0.0 -> 0
-
-comx656 compare  -0E1   0.0 -> 0
-comx657 compare  -0E2   0.0 -> 0
-comx658 compare   0E1   0.0 -> 0
-comx659 compare   0E2   0.0 -> 0
-comx660 compare  -0E1   0   -> 0
-comx661 compare  -0E2   0   -> 0
-comx662 compare   0E1   0   -> 0
-comx663 compare   0E2   0   -> 0
-comx664 compare  -0E1  -0E1 -> 0
-comx665 compare  -0E2  -0E1 -> 0
-comx666 compare   0E1  -0E1 -> 0
-comx667 compare   0E2  -0E1 -> 0
-comx668 compare  -0E1  -0E2 -> 0
-comx669 compare  -0E2  -0E2 -> 0
-comx670 compare   0E1  -0E2 -> 0
-comx671 compare   0E2  -0E2 -> 0
-comx672 compare  -0E1   0E1 -> 0
-comx673 compare  -0E2   0E1 -> 0
-comx674 compare   0E1   0E1 -> 0
-comx675 compare   0E2   0E1 -> 0
-comx676 compare  -0E1   0E2 -> 0
-comx677 compare  -0E2   0E2 -> 0
-comx678 compare   0E1   0E2 -> 0
-comx679 compare   0E2   0E2 -> 0
-
--- trailing zeros; unit-y
-precision: 20
-comx680 compare   12    12           -> 0
-comx681 compare   12    12.0         -> 0
-comx682 compare   12    12.00        -> 0
-comx683 compare   12    12.000       -> 0
-comx684 compare   12    12.0000      -> 0
-comx685 compare   12    12.00000     -> 0
-comx686 compare   12    12.000000    -> 0
-comx687 compare   12    12.0000000   -> 0
-comx688 compare   12    12.00000000  -> 0
-comx689 compare   12    12.000000000 -> 0
-comx690 compare   12              12 -> 0
-comx691 compare   12.0            12 -> 0
-comx692 compare   12.00           12 -> 0
-comx693 compare   12.000          12 -> 0
-comx694 compare   12.0000         12 -> 0
-comx695 compare   12.00000        12 -> 0
-comx696 compare   12.000000       12 -> 0
-comx697 compare   12.0000000      12 -> 0
-comx698 compare   12.00000000     12 -> 0
-comx699 compare   12.000000000    12 -> 0
-
--- long operand checks
-maxexponent: 999
-minexponent: -999
-precision: 9
-comx701 compare 12345678000  1 ->  1
-comx702 compare 1 12345678000  -> -1
-comx703 compare 1234567800   1 ->  1
-comx704 compare 1 1234567800   -> -1
-comx705 compare 1234567890   1 ->  1
-comx706 compare 1 1234567890   -> -1
-comx707 compare 1234567891   1 ->  1
-comx708 compare 1 1234567891   -> -1
-comx709 compare 12345678901  1 ->  1
-comx710 compare 1 12345678901  -> -1
-comx711 compare 1234567896   1 ->  1
-comx712 compare 1 1234567896   -> -1
-comx713 compare -1234567891  1 -> -1
-comx714 compare 1 -1234567891  ->  1
-comx715 compare -12345678901 1 -> -1
-comx716 compare 1 -12345678901 ->  1
-comx717 compare -1234567896  1 -> -1
-comx718 compare 1 -1234567896  ->  1
-
-precision: 15
--- same with plenty of precision
-comx721 compare 12345678000 1 -> 1
-comx722 compare 1 12345678000 -> -1
-comx723 compare 1234567800  1 -> 1
-comx724 compare 1 1234567800  -> -1
-comx725 compare 1234567890  1 -> 1
-comx726 compare 1 1234567890  -> -1
-comx727 compare 1234567891  1 -> 1
-comx728 compare 1 1234567891  -> -1
-comx729 compare 12345678901 1 -> 1
-comx730 compare 1 12345678901 -> -1
-comx731 compare 1234567896  1 -> 1
-comx732 compare 1 1234567896  -> -1
-
--- residue cases
-precision: 5
-comx740 compare  1  0.9999999  -> 1
-comx741 compare  1  0.999999   -> 1
-comx742 compare  1  0.99999    -> 1
-comx743 compare  1  1.0000     -> 0
-comx744 compare  1  1.00001    -> -1
-comx745 compare  1  1.000001   -> -1
-comx746 compare  1  1.0000001  -> -1
-comx750 compare  0.9999999  1  -> -1
-comx751 compare  0.999999   1  -> -1
-comx752 compare  0.99999    1  -> -1
-comx753 compare  1.0000     1  -> 0
-comx754 compare  1.00001    1  -> 1
-comx755 compare  1.000001   1  -> 1
-comx756 compare  1.0000001  1  -> 1
-
--- a selection of longies
-comx760 compare -36852134.84194296250843579428931 -5830629.8347085025808756560357940 -> -1
-comx761 compare -36852134.84194296250843579428931 -36852134.84194296250843579428931  -> 0
-comx762 compare -36852134.94194296250843579428931 -36852134.84194296250843579428931  -> -1
-comx763 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
--- precisions above or below the difference should have no effect
-precision:   11
-comx764 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:   10
-comx765 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    9
-comx766 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    8
-comx767 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    7
-comx768 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    6
-comx769 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    5
-comx770 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    4
-comx771 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    3
-comx772 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    2
-comx773 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    1
-comx774 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-
--- Specials
-precision:   9
-comx780 compare  Inf  -Inf   ->  1
-comx781 compare  Inf  -1000  ->  1
-comx782 compare  Inf  -1     ->  1
-comx783 compare  Inf  -0     ->  1
-comx784 compare  Inf   0     ->  1
-comx785 compare  Inf   1     ->  1
-comx786 compare  Inf   1000  ->  1
-comx787 compare  Inf   Inf   ->  0
-comx788 compare -1000  Inf   -> -1
-comx789 compare -Inf   Inf   -> -1
-comx790 compare -1     Inf   -> -1
-comx791 compare -0     Inf   -> -1
-comx792 compare  0     Inf   -> -1
-comx793 compare  1     Inf   -> -1
-comx794 compare  1000  Inf   -> -1
-comx795 compare  Inf   Inf   ->  0
-
-comx800 compare -Inf  -Inf   ->  0
-comx801 compare -Inf  -1000  -> -1
-comx802 compare -Inf  -1     -> -1
-comx803 compare -Inf  -0     -> -1
-comx804 compare -Inf   0     -> -1
-comx805 compare -Inf   1     -> -1
-comx806 compare -Inf   1000  -> -1
-comx807 compare -Inf   Inf   -> -1
-comx808 compare -Inf  -Inf   ->  0
-comx809 compare -1000 -Inf   ->  1
-comx810 compare -1    -Inf   ->  1
-comx811 compare -0    -Inf   ->  1
-comx812 compare  0    -Inf   ->  1
-comx813 compare  1    -Inf   ->  1
-comx814 compare  1000 -Inf   ->  1
-comx815 compare  Inf  -Inf   ->  1
-
-comx821 compare  NaN -Inf    ->  NaN
-comx822 compare  NaN -1000   ->  NaN
-comx823 compare  NaN -1      ->  NaN
-comx824 compare  NaN -0      ->  NaN
-comx825 compare  NaN  0      ->  NaN
-comx826 compare  NaN  1      ->  NaN
-comx827 compare  NaN  1000   ->  NaN
-comx828 compare  NaN  Inf    ->  NaN
-comx829 compare  NaN  NaN    ->  NaN
-comx830 compare -Inf  NaN    ->  NaN
-comx831 compare -1000 NaN    ->  NaN
-comx832 compare -1    NaN    ->  NaN
-comx833 compare -0    NaN    ->  NaN
-comx834 compare  0    NaN    ->  NaN
-comx835 compare  1    NaN    ->  NaN
-comx836 compare  1000 NaN    ->  NaN
-comx837 compare  Inf  NaN    ->  NaN
-comx838 compare -NaN -NaN    -> -NaN
-comx839 compare +NaN -NaN    ->  NaN
-comx840 compare -NaN +NaN    -> -NaN
-
-comx841 compare  sNaN -Inf   ->  NaN  Invalid_operation
-comx842 compare  sNaN -1000  ->  NaN  Invalid_operation
-comx843 compare  sNaN -1     ->  NaN  Invalid_operation
-comx844 compare  sNaN -0     ->  NaN  Invalid_operation
-comx845 compare  sNaN  0     ->  NaN  Invalid_operation
-comx846 compare  sNaN  1     ->  NaN  Invalid_operation
-comx847 compare  sNaN  1000  ->  NaN  Invalid_operation
-comx848 compare  sNaN  NaN   ->  NaN  Invalid_operation
-comx849 compare  sNaN sNaN   ->  NaN  Invalid_operation
-comx850 compare  NaN  sNaN   ->  NaN  Invalid_operation
-comx851 compare -Inf  sNaN   ->  NaN  Invalid_operation
-comx852 compare -1000 sNaN   ->  NaN  Invalid_operation
-comx853 compare -1    sNaN   ->  NaN  Invalid_operation
-comx854 compare -0    sNaN   ->  NaN  Invalid_operation
-comx855 compare  0    sNaN   ->  NaN  Invalid_operation
-comx856 compare  1    sNaN   ->  NaN  Invalid_operation
-comx857 compare  1000 sNaN   ->  NaN  Invalid_operation
-comx858 compare  Inf  sNaN   ->  NaN  Invalid_operation
-comx859 compare  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-comx860 compare  NaN9 -Inf   ->  NaN9
-comx861 compare  NaN8  999   ->  NaN8
-comx862 compare  NaN77 Inf   ->  NaN77
-comx863 compare -NaN67 NaN5  -> -NaN67
-comx864 compare -Inf  -NaN4  -> -NaN4
-comx865 compare -999  -NaN33 -> -NaN33
-comx866 compare  Inf   NaN2  ->  NaN2
-comx867 compare -NaN41 -NaN42 -> -NaN41
-comx868 compare +NaN41 -NaN42 ->  NaN41
-comx869 compare -NaN41 +NaN42 -> -NaN41
-comx870 compare +NaN41 +NaN42 ->  NaN41
-
-comx871 compare -sNaN99 -Inf    -> -NaN99 Invalid_operation
-comx872 compare  sNaN98 -11     ->  NaN98 Invalid_operation
-comx873 compare  sNaN97  NaN    ->  NaN97 Invalid_operation
-comx874 compare  sNaN16 sNaN94  ->  NaN16 Invalid_operation
-comx875 compare  NaN85  sNaN83  ->  NaN83 Invalid_operation
-comx876 compare -Inf    sNaN92  ->  NaN92 Invalid_operation
-comx877 compare  088    sNaN81  ->  NaN81 Invalid_operation
-comx878 compare  Inf    sNaN90  ->  NaN90 Invalid_operation
-comx879 compare  NaN   -sNaN89  -> -NaN89 Invalid_operation
-
--- overflow and underflow tests .. subnormal results now allowed
-maxExponent: 999999999
-minexponent: -999999999
-comx880 compare +1.23456789012345E-0 9E+999999999 -> -1
-comx881 compare 9E+999999999 +1.23456789012345E-0 ->  1
-comx882 compare +0.100 9E-999999999               ->  1
-comx883 compare 9E-999999999 +0.100               -> -1
-comx885 compare -1.23456789012345E-0 9E+999999999 -> -1
-comx886 compare 9E+999999999 -1.23456789012345E-0 ->  1
-comx887 compare -0.100 9E-999999999               -> -1
-comx888 compare 9E-999999999 -0.100               ->  1
-
-comx889 compare 1e-599999999 1e-400000001   -> -1
-comx890 compare 1e-599999999 1e-400000000   -> -1
-comx891 compare 1e-600000000 1e-400000000   -> -1
-comx892 compare 9e-999999998 0.01           -> -1
-comx893 compare 9e-999999998 0.1            -> -1
-comx894 compare 0.01 9e-999999998           ->  1
-comx895 compare 1e599999999 1e400000001     ->  1
-comx896 compare 1e599999999 1e400000000     ->  1
-comx897 compare 1e600000000 1e400000000     ->  1
-comx898 compare 9e999999998 100             ->  1
-comx899 compare 9e999999998 10              ->  1
-comx900 compare 100  9e999999998            -> -1
--- signs
-comx901 compare  1e+777777777  1e+411111111 ->  1
-comx902 compare  1e+777777777 -1e+411111111 ->  1
-comx903 compare -1e+777777777  1e+411111111 -> -1
-comx904 compare -1e+777777777 -1e+411111111 -> -1
-comx905 compare  1e-777777777  1e-411111111 -> -1
-comx906 compare  1e-777777777 -1e-411111111 ->  1
-comx907 compare -1e-777777777  1e-411111111 -> -1
-comx908 compare -1e-777777777 -1e-411111111 ->  1
-
--- spread zeros
-comx910 compare   0E-383  0       ->  0
-comx911 compare   0E-383 -0       ->  0
-comx912 compare  -0E-383  0       ->  0
-comx913 compare  -0E-383 -0       ->  0
-comx914 compare   0E-383  0E+384  ->  0
-comx915 compare   0E-383 -0E+384  ->  0
-comx916 compare  -0E-383  0E+384  ->  0
-comx917 compare  -0E-383 -0E+384  ->  0
-comx918 compare   0       0E+384  ->  0
-comx919 compare   0      -0E+384  ->  0
-comx920 compare  -0       0E+384  ->  0
-comx921 compare  -0      -0E+384  ->  0
-comx930 compare   0E+384  0       ->  0
-comx931 compare   0E+384 -0       ->  0
-comx932 compare  -0E+384  0       ->  0
-comx933 compare  -0E+384 -0       ->  0
-comx934 compare   0E+384  0E-383  ->  0
-comx935 compare   0E+384 -0E-383  ->  0
-comx936 compare  -0E+384  0E-383  ->  0
-comx937 compare  -0E+384 -0E-383  ->  0
-comx938 compare   0       0E-383  ->  0
-comx939 compare   0      -0E-383  ->  0
-comx940 compare  -0       0E-383  ->  0
-comx941 compare  -0      -0E-383  ->  0
-
--- Null tests
-comx990 compare 10  # -> NaN Invalid_operation
-comx991 compare  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/comparetotal.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/comparetotal.decTest
deleted file mode 100644
index ad87b4c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/comparetotal.decTest
+++ /dev/null
@@ -1,798 +0,0 @@
-------------------------------------------------------------------------
--- comparetotal.decTest -- decimal comparison using total ordering    --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Note that we cannot assume add/subtract tests cover paths adequately,
--- here, because the code might be quite different (comparison cannot
--- overflow or underflow, so actual subtractions are not necessary).
--- Similarly, comparetotal will have some radically different paths
--- than compare.
-
-extended:    1
-precision:   16
-rounding:    half_up
-maxExponent: 384
-minExponent: -383
-
--- sanity checks
-cotx001 comparetotal  -2  -2  -> 0
-cotx002 comparetotal  -2  -1  -> -1
-cotx003 comparetotal  -2   0  -> -1
-cotx004 comparetotal  -2   1  -> -1
-cotx005 comparetotal  -2   2  -> -1
-cotx006 comparetotal  -1  -2  -> 1
-cotx007 comparetotal  -1  -1  -> 0
-cotx008 comparetotal  -1   0  -> -1
-cotx009 comparetotal  -1   1  -> -1
-cotx010 comparetotal  -1   2  -> -1
-cotx011 comparetotal   0  -2  -> 1
-cotx012 comparetotal   0  -1  -> 1
-cotx013 comparetotal   0   0  -> 0
-cotx014 comparetotal   0   1  -> -1
-cotx015 comparetotal   0   2  -> -1
-cotx016 comparetotal   1  -2  -> 1
-cotx017 comparetotal   1  -1  -> 1
-cotx018 comparetotal   1   0  -> 1
-cotx019 comparetotal   1   1  -> 0
-cotx020 comparetotal   1   2  -> -1
-cotx021 comparetotal   2  -2  -> 1
-cotx022 comparetotal   2  -1  -> 1
-cotx023 comparetotal   2   0  -> 1
-cotx025 comparetotal   2   1  -> 1
-cotx026 comparetotal   2   2  -> 0
-
-cotx031 comparetotal  -20  -20  -> 0
-cotx032 comparetotal  -20  -10  -> -1
-cotx033 comparetotal  -20   00  -> -1
-cotx034 comparetotal  -20   10  -> -1
-cotx035 comparetotal  -20   20  -> -1
-cotx036 comparetotal  -10  -20  -> 1
-cotx037 comparetotal  -10  -10  -> 0
-cotx038 comparetotal  -10   00  -> -1
-cotx039 comparetotal  -10   10  -> -1
-cotx040 comparetotal  -10   20  -> -1
-cotx041 comparetotal   00  -20  -> 1
-cotx042 comparetotal   00  -10  -> 1
-cotx043 comparetotal   00   00  -> 0
-cotx044 comparetotal   00   10  -> -1
-cotx045 comparetotal   00   20  -> -1
-cotx046 comparetotal   10  -20  -> 1
-cotx047 comparetotal   10  -10  -> 1
-cotx048 comparetotal   10   00  -> 1
-cotx049 comparetotal   10   10  -> 0
-cotx050 comparetotal   10   20  -> -1
-cotx051 comparetotal   20  -20  -> 1
-cotx052 comparetotal   20  -10  -> 1
-cotx053 comparetotal   20   00  -> 1
-cotx055 comparetotal   20   10  -> 1
-cotx056 comparetotal   20   20  -> 0
-
-cotx061 comparetotal  -2.0  -2.0  -> 0
-cotx062 comparetotal  -2.0  -1.0  -> -1
-cotx063 comparetotal  -2.0   0.0  -> -1
-cotx064 comparetotal  -2.0   1.0  -> -1
-cotx065 comparetotal  -2.0   2.0  -> -1
-cotx066 comparetotal  -1.0  -2.0  -> 1
-cotx067 comparetotal  -1.0  -1.0  -> 0
-cotx068 comparetotal  -1.0   0.0  -> -1
-cotx069 comparetotal  -1.0   1.0  -> -1
-cotx070 comparetotal  -1.0   2.0  -> -1
-cotx071 comparetotal   0.0  -2.0  -> 1
-cotx072 comparetotal   0.0  -1.0  -> 1
-cotx073 comparetotal   0.0   0.0  -> 0
-cotx074 comparetotal   0.0   1.0  -> -1
-cotx075 comparetotal   0.0   2.0  -> -1
-cotx076 comparetotal   1.0  -2.0  -> 1
-cotx077 comparetotal   1.0  -1.0  -> 1
-cotx078 comparetotal   1.0   0.0  -> 1
-cotx079 comparetotal   1.0   1.0  -> 0
-cotx080 comparetotal   1.0   2.0  -> -1
-cotx081 comparetotal   2.0  -2.0  -> 1
-cotx082 comparetotal   2.0  -1.0  -> 1
-cotx083 comparetotal   2.0   0.0  -> 1
-cotx085 comparetotal   2.0   1.0  -> 1
-cotx086 comparetotal   2.0   2.0  -> 0
-
--- now some cases which might overflow if subtract were used
-maxexponent: 999999999
-minexponent: -999999999
-cotx090 comparetotal  9.99999999E+999999999 9.99999999E+999999999  -> 0
-cotx091 comparetotal -9.99999999E+999999999 9.99999999E+999999999  -> -1
-cotx092 comparetotal  9.99999999E+999999999 -9.99999999E+999999999 -> 1
-cotx093 comparetotal -9.99999999E+999999999 -9.99999999E+999999999 -> 0
-
--- Examples
-cotx094 comparetotal  12.73  127.9  -> -1
-cotx095 comparetotal  -127   12     -> -1
-cotx096 comparetotal  12.30  12.3   -> -1
-cotx097 comparetotal  12.30  12.30  ->  0
-cotx098 comparetotal  12.3   12.300 ->  1
-cotx099 comparetotal  12.3   NaN    -> -1
-
--- some differing length/exponent cases
--- in this first group, compare would compare all equal
-cotx100 comparetotal   7.0    7.0    -> 0
-cotx101 comparetotal   7.0    7      -> -1
-cotx102 comparetotal   7      7.0    -> 1
-cotx103 comparetotal   7E+0   7.0    -> 1
-cotx104 comparetotal   70E-1  7.0    -> 0
-cotx105 comparetotal   0.7E+1 7      -> 0
-cotx106 comparetotal   70E-1  7      -> -1
-cotx107 comparetotal   7.0    7E+0   -> -1
-cotx108 comparetotal   7.0    70E-1  -> 0
-cotx109 comparetotal   7      0.7E+1 -> 0
-cotx110 comparetotal   7      70E-1  -> 1
-
-cotx120 comparetotal   8.0    7.0    -> 1
-cotx121 comparetotal   8.0    7      -> 1
-cotx122 comparetotal   8      7.0    -> 1
-cotx123 comparetotal   8E+0   7.0    -> 1
-cotx124 comparetotal   80E-1  7.0    -> 1
-cotx125 comparetotal   0.8E+1 7      -> 1
-cotx126 comparetotal   80E-1  7      -> 1
-cotx127 comparetotal   8.0    7E+0   -> 1
-cotx128 comparetotal   8.0    70E-1  -> 1
-cotx129 comparetotal   8      0.7E+1  -> 1
-cotx130 comparetotal   8      70E-1  -> 1
-
-cotx140 comparetotal   8.0    9.0    -> -1
-cotx141 comparetotal   8.0    9      -> -1
-cotx142 comparetotal   8      9.0    -> -1
-cotx143 comparetotal   8E+0   9.0    -> -1
-cotx144 comparetotal   80E-1  9.0    -> -1
-cotx145 comparetotal   0.8E+1 9      -> -1
-cotx146 comparetotal   80E-1  9      -> -1
-cotx147 comparetotal   8.0    9E+0   -> -1
-cotx148 comparetotal   8.0    90E-1  -> -1
-cotx149 comparetotal   8      0.9E+1 -> -1
-cotx150 comparetotal   8      90E-1  -> -1
-
--- and again, with sign changes -+ ..
-cotx200 comparetotal  -7.0    7.0    -> -1
-cotx201 comparetotal  -7.0    7      -> -1
-cotx202 comparetotal  -7      7.0    -> -1
-cotx203 comparetotal  -7E+0   7.0    -> -1
-cotx204 comparetotal  -70E-1  7.0    -> -1
-cotx205 comparetotal  -0.7E+1 7      -> -1
-cotx206 comparetotal  -70E-1  7      -> -1
-cotx207 comparetotal  -7.0    7E+0   -> -1
-cotx208 comparetotal  -7.0    70E-1  -> -1
-cotx209 comparetotal  -7      0.7E+1 -> -1
-cotx210 comparetotal  -7      70E-1  -> -1
-
-cotx220 comparetotal  -8.0    7.0    -> -1
-cotx221 comparetotal  -8.0    7      -> -1
-cotx222 comparetotal  -8      7.0    -> -1
-cotx223 comparetotal  -8E+0   7.0    -> -1
-cotx224 comparetotal  -80E-1  7.0    -> -1
-cotx225 comparetotal  -0.8E+1 7      -> -1
-cotx226 comparetotal  -80E-1  7      -> -1
-cotx227 comparetotal  -8.0    7E+0   -> -1
-cotx228 comparetotal  -8.0    70E-1  -> -1
-cotx229 comparetotal  -8      0.7E+1 -> -1
-cotx230 comparetotal  -8      70E-1  -> -1
-
-cotx240 comparetotal  -8.0    9.0    -> -1
-cotx241 comparetotal  -8.0    9      -> -1
-cotx242 comparetotal  -8      9.0    -> -1
-cotx243 comparetotal  -8E+0   9.0    -> -1
-cotx244 comparetotal  -80E-1  9.0    -> -1
-cotx245 comparetotal  -0.8E+1 9      -> -1
-cotx246 comparetotal  -80E-1  9      -> -1
-cotx247 comparetotal  -8.0    9E+0   -> -1
-cotx248 comparetotal  -8.0    90E-1  -> -1
-cotx249 comparetotal  -8      0.9E+1 -> -1
-cotx250 comparetotal  -8      90E-1  -> -1
-
--- and again, with sign changes +- ..
-cotx300 comparetotal   7.0    -7.0    -> 1
-cotx301 comparetotal   7.0    -7      -> 1
-cotx302 comparetotal   7      -7.0    -> 1
-cotx303 comparetotal   7E+0   -7.0    -> 1
-cotx304 comparetotal   70E-1  -7.0    -> 1
-cotx305 comparetotal   .7E+1  -7      -> 1
-cotx306 comparetotal   70E-1  -7      -> 1
-cotx307 comparetotal   7.0    -7E+0   -> 1
-cotx308 comparetotal   7.0    -70E-1  -> 1
-cotx309 comparetotal   7      -.7E+1  -> 1
-cotx310 comparetotal   7      -70E-1  -> 1
-
-cotx320 comparetotal   8.0    -7.0    -> 1
-cotx321 comparetotal   8.0    -7      -> 1
-cotx322 comparetotal   8      -7.0    -> 1
-cotx323 comparetotal   8E+0   -7.0    -> 1
-cotx324 comparetotal   80E-1  -7.0    -> 1
-cotx325 comparetotal   .8E+1  -7      -> 1
-cotx326 comparetotal   80E-1  -7      -> 1
-cotx327 comparetotal   8.0    -7E+0   -> 1
-cotx328 comparetotal   8.0    -70E-1  -> 1
-cotx329 comparetotal   8      -.7E+1  -> 1
-cotx330 comparetotal   8      -70E-1  -> 1
-
-cotx340 comparetotal   8.0    -9.0    -> 1
-cotx341 comparetotal   8.0    -9      -> 1
-cotx342 comparetotal   8      -9.0    -> 1
-cotx343 comparetotal   8E+0   -9.0    -> 1
-cotx344 comparetotal   80E-1  -9.0    -> 1
-cotx345 comparetotal   .8E+1  -9      -> 1
-cotx346 comparetotal   80E-1  -9      -> 1
-cotx347 comparetotal   8.0    -9E+0   -> 1
-cotx348 comparetotal   8.0    -90E-1  -> 1
-cotx349 comparetotal   8      -.9E+1  -> 1
-cotx350 comparetotal   8      -90E-1  -> 1
-
--- and again, with sign changes -- ..
-cotx400 comparetotal   -7.0    -7.0    -> 0
-cotx401 comparetotal   -7.0    -7      -> 1
-cotx402 comparetotal   -7      -7.0    -> -1
-cotx403 comparetotal   -7E+0   -7.0    -> -1
-cotx404 comparetotal   -70E-1  -7.0    -> 0
-cotx405 comparetotal   -.7E+1  -7      -> 0
-cotx406 comparetotal   -70E-1  -7      -> 1
-cotx407 comparetotal   -7.0    -7E+0   -> 1
-cotx408 comparetotal   -7.0    -70E-1  -> 0
-cotx409 comparetotal   -7      -.7E+1  -> 0
-cotx410 comparetotal   -7      -70E-1  -> -1
-
-cotx420 comparetotal   -8.0    -7.0    -> -1
-cotx421 comparetotal   -8.0    -7      -> -1
-cotx422 comparetotal   -8      -7.0    -> -1
-cotx423 comparetotal   -8E+0   -7.0    -> -1
-cotx424 comparetotal   -80E-1  -7.0    -> -1
-cotx425 comparetotal   -.8E+1  -7      -> -1
-cotx426 comparetotal   -80E-1  -7      -> -1
-cotx427 comparetotal   -8.0    -7E+0   -> -1
-cotx428 comparetotal   -8.0    -70E-1  -> -1
-cotx429 comparetotal   -8      -.7E+1  -> -1
-cotx430 comparetotal   -8      -70E-1  -> -1
-
-cotx440 comparetotal   -8.0    -9.0    -> 1
-cotx441 comparetotal   -8.0    -9      -> 1
-cotx442 comparetotal   -8      -9.0    -> 1
-cotx443 comparetotal   -8E+0   -9.0    -> 1
-cotx444 comparetotal   -80E-1  -9.0    -> 1
-cotx445 comparetotal   -.8E+1  -9      -> 1
-cotx446 comparetotal   -80E-1  -9      -> 1
-cotx447 comparetotal   -8.0    -9E+0   -> 1
-cotx448 comparetotal   -8.0    -90E-1  -> 1
-cotx449 comparetotal   -8      -.9E+1  -> 1
-cotx450 comparetotal   -8      -90E-1  -> 1
-
-
--- testcases that subtract to lots of zeros at boundaries [pgr]
-precision: 40
-cotx470 comparetotal 123.4560000000000000E789 123.456E789 -> -1
-cotx471 comparetotal 123.456000000000000E-89 123.456E-89 -> -1
-cotx472 comparetotal 123.45600000000000E789 123.456E789 -> -1
-cotx473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1
-cotx474 comparetotal 123.456000000000E789 123.456E789 -> -1
-cotx475 comparetotal 123.45600000000E-89 123.456E-89 -> -1
-cotx476 comparetotal 123.4560000000E789 123.456E789 -> -1
-cotx477 comparetotal 123.456000000E-89 123.456E-89 -> -1
-cotx478 comparetotal 123.45600000E789 123.456E789 -> -1
-cotx479 comparetotal 123.4560000E-89 123.456E-89 -> -1
-cotx480 comparetotal 123.456000E789 123.456E789 -> -1
-cotx481 comparetotal 123.45600E-89 123.456E-89 -> -1
-cotx482 comparetotal 123.4560E789 123.456E789 -> -1
-cotx483 comparetotal 123.456E-89 123.456E-89 -> 0
-cotx484 comparetotal 123.456E-89 123.4560000000000000E-89 -> 1
-cotx485 comparetotal 123.456E789 123.456000000000000E789 -> 1
-cotx486 comparetotal 123.456E-89 123.45600000000000E-89 -> 1
-cotx487 comparetotal 123.456E789 123.4560000000000E789 -> 1
-cotx488 comparetotal 123.456E-89 123.456000000000E-89 -> 1
-cotx489 comparetotal 123.456E789 123.45600000000E789 -> 1
-cotx490 comparetotal 123.456E-89 123.4560000000E-89 -> 1
-cotx491 comparetotal 123.456E789 123.456000000E789 -> 1
-cotx492 comparetotal 123.456E-89 123.45600000E-89 -> 1
-cotx493 comparetotal 123.456E789 123.4560000E789 -> 1
-cotx494 comparetotal 123.456E-89 123.456000E-89 -> 1
-cotx495 comparetotal 123.456E789 123.45600E789 -> 1
-cotx496 comparetotal 123.456E-89 123.4560E-89 -> 1
-cotx497 comparetotal 123.456E789 123.456E789 -> 0
-
--- wide-ranging, around precision; signs equal
-precision: 9
-cotx500 comparetotal    1     1E-15    -> 1
-cotx501 comparetotal    1     1E-14    -> 1
-cotx502 comparetotal    1     1E-13    -> 1
-cotx503 comparetotal    1     1E-12    -> 1
-cotx504 comparetotal    1     1E-11    -> 1
-cotx505 comparetotal    1     1E-10    -> 1
-cotx506 comparetotal    1     1E-9     -> 1
-cotx507 comparetotal    1     1E-8     -> 1
-cotx508 comparetotal    1     1E-7     -> 1
-cotx509 comparetotal    1     1E-6     -> 1
-cotx510 comparetotal    1     1E-5     -> 1
-cotx511 comparetotal    1     1E-4     -> 1
-cotx512 comparetotal    1     1E-3     -> 1
-cotx513 comparetotal    1     1E-2     -> 1
-cotx514 comparetotal    1     1E-1     -> 1
-cotx515 comparetotal    1     1E-0     -> 0
-cotx516 comparetotal    1     1E+1     -> -1
-cotx517 comparetotal    1     1E+2     -> -1
-cotx518 comparetotal    1     1E+3     -> -1
-cotx519 comparetotal    1     1E+4     -> -1
-cotx521 comparetotal    1     1E+5     -> -1
-cotx522 comparetotal    1     1E+6     -> -1
-cotx523 comparetotal    1     1E+7     -> -1
-cotx524 comparetotal    1     1E+8     -> -1
-cotx525 comparetotal    1     1E+9     -> -1
-cotx526 comparetotal    1     1E+10    -> -1
-cotx527 comparetotal    1     1E+11    -> -1
-cotx528 comparetotal    1     1E+12    -> -1
-cotx529 comparetotal    1     1E+13    -> -1
-cotx530 comparetotal    1     1E+14    -> -1
-cotx531 comparetotal    1     1E+15    -> -1
--- LR swap
-cotx540 comparetotal    1E-15  1       -> -1
-cotx541 comparetotal    1E-14  1       -> -1
-cotx542 comparetotal    1E-13  1       -> -1
-cotx543 comparetotal    1E-12  1       -> -1
-cotx544 comparetotal    1E-11  1       -> -1
-cotx545 comparetotal    1E-10  1       -> -1
-cotx546 comparetotal    1E-9   1       -> -1
-cotx547 comparetotal    1E-8   1       -> -1
-cotx548 comparetotal    1E-7   1       -> -1
-cotx549 comparetotal    1E-6   1       -> -1
-cotx550 comparetotal    1E-5   1       -> -1
-cotx551 comparetotal    1E-4   1       -> -1
-cotx552 comparetotal    1E-3   1       -> -1
-cotx553 comparetotal    1E-2   1       -> -1
-cotx554 comparetotal    1E-1   1       -> -1
-cotx555 comparetotal    1E-0   1       ->  0
-cotx556 comparetotal    1E+1   1       ->  1
-cotx557 comparetotal    1E+2   1       ->  1
-cotx558 comparetotal    1E+3   1       ->  1
-cotx559 comparetotal    1E+4   1       ->  1
-cotx561 comparetotal    1E+5   1       ->  1
-cotx562 comparetotal    1E+6   1       ->  1
-cotx563 comparetotal    1E+7   1       ->  1
-cotx564 comparetotal    1E+8   1       ->  1
-cotx565 comparetotal    1E+9   1       ->  1
-cotx566 comparetotal    1E+10  1       ->  1
-cotx567 comparetotal    1E+11  1       ->  1
-cotx568 comparetotal    1E+12  1       ->  1
-cotx569 comparetotal    1E+13  1       ->  1
-cotx570 comparetotal    1E+14  1       ->  1
-cotx571 comparetotal    1E+15  1       ->  1
--- similar with an useful coefficient, one side only
-cotx580 comparetotal  0.000000987654321     1E-15    -> 1
-cotx581 comparetotal  0.000000987654321     1E-14    -> 1
-cotx582 comparetotal  0.000000987654321     1E-13    -> 1
-cotx583 comparetotal  0.000000987654321     1E-12    -> 1
-cotx584 comparetotal  0.000000987654321     1E-11    -> 1
-cotx585 comparetotal  0.000000987654321     1E-10    -> 1
-cotx586 comparetotal  0.000000987654321     1E-9     -> 1
-cotx587 comparetotal  0.000000987654321     1E-8     -> 1
-cotx588 comparetotal  0.000000987654321     1E-7     -> 1
-cotx589 comparetotal  0.000000987654321     1E-6     -> -1
-cotx590 comparetotal  0.000000987654321     1E-5     -> -1
-cotx591 comparetotal  0.000000987654321     1E-4     -> -1
-cotx592 comparetotal  0.000000987654321     1E-3     -> -1
-cotx593 comparetotal  0.000000987654321     1E-2     -> -1
-cotx594 comparetotal  0.000000987654321     1E-1     -> -1
-cotx595 comparetotal  0.000000987654321     1E-0     -> -1
-cotx596 comparetotal  0.000000987654321     1E+1     -> -1
-cotx597 comparetotal  0.000000987654321     1E+2     -> -1
-cotx598 comparetotal  0.000000987654321     1E+3     -> -1
-cotx599 comparetotal  0.000000987654321     1E+4     -> -1
-
--- check some unit-y traps
-precision: 20
-cotx600 comparetotal   12            12.2345 -> -1
-cotx601 comparetotal   12.0          12.2345 -> -1
-cotx602 comparetotal   12.00         12.2345 -> -1
-cotx603 comparetotal   12.000        12.2345 -> -1
-cotx604 comparetotal   12.0000       12.2345 -> -1
-cotx605 comparetotal   12.00000      12.2345 -> -1
-cotx606 comparetotal   12.000000     12.2345 -> -1
-cotx607 comparetotal   12.0000000    12.2345 -> -1
-cotx608 comparetotal   12.00000000   12.2345 -> -1
-cotx609 comparetotal   12.000000000  12.2345 -> -1
-cotx610 comparetotal   12.1234 12            ->  1
-cotx611 comparetotal   12.1234 12.0          ->  1
-cotx612 comparetotal   12.1234 12.00         ->  1
-cotx613 comparetotal   12.1234 12.000        ->  1
-cotx614 comparetotal   12.1234 12.0000       ->  1
-cotx615 comparetotal   12.1234 12.00000      ->  1
-cotx616 comparetotal   12.1234 12.000000     ->  1
-cotx617 comparetotal   12.1234 12.0000000    ->  1
-cotx618 comparetotal   12.1234 12.00000000   ->  1
-cotx619 comparetotal   12.1234 12.000000000  ->  1
-cotx620 comparetotal  -12           -12.2345 ->  1
-cotx621 comparetotal  -12.0         -12.2345 ->  1
-cotx622 comparetotal  -12.00        -12.2345 ->  1
-cotx623 comparetotal  -12.000       -12.2345 ->  1
-cotx624 comparetotal  -12.0000      -12.2345 ->  1
-cotx625 comparetotal  -12.00000     -12.2345 ->  1
-cotx626 comparetotal  -12.000000    -12.2345 ->  1
-cotx627 comparetotal  -12.0000000   -12.2345 ->  1
-cotx628 comparetotal  -12.00000000  -12.2345 ->  1
-cotx629 comparetotal  -12.000000000 -12.2345 ->  1
-cotx630 comparetotal  -12.1234 -12           -> -1
-cotx631 comparetotal  -12.1234 -12.0         -> -1
-cotx632 comparetotal  -12.1234 -12.00        -> -1
-cotx633 comparetotal  -12.1234 -12.000       -> -1
-cotx634 comparetotal  -12.1234 -12.0000      -> -1
-cotx635 comparetotal  -12.1234 -12.00000     -> -1
-cotx636 comparetotal  -12.1234 -12.000000    -> -1
-cotx637 comparetotal  -12.1234 -12.0000000   -> -1
-cotx638 comparetotal  -12.1234 -12.00000000  -> -1
-cotx639 comparetotal  -12.1234 -12.000000000 -> -1
-precision: 9
-
--- extended zeros
-cotx640 comparetotal   0     0   -> 0
-cotx641 comparetotal   0    -0   -> 1
-cotx642 comparetotal   0    -0.0 -> 1
-cotx643 comparetotal   0     0.0 -> 1
-cotx644 comparetotal  -0     0   -> -1
-cotx645 comparetotal  -0    -0   -> 0
-cotx646 comparetotal  -0    -0.0 -> -1
-cotx647 comparetotal  -0     0.0 -> -1
-cotx648 comparetotal   0.0   0   -> -1
-cotx649 comparetotal   0.0  -0   -> 1
-cotx650 comparetotal   0.0  -0.0 -> 1
-cotx651 comparetotal   0.0   0.0 -> 0
-cotx652 comparetotal  -0.0   0   -> -1
-cotx653 comparetotal  -0.0  -0   -> 1
-cotx654 comparetotal  -0.0  -0.0 -> 0
-cotx655 comparetotal  -0.0   0.0 -> -1
-
-cotx656 comparetotal  -0E1   0.0 -> -1
-cotx657 comparetotal  -0E2   0.0 -> -1
-cotx658 comparetotal   0E1   0.0 -> 1
-cotx659 comparetotal   0E2   0.0 -> 1
-cotx660 comparetotal  -0E1   0   -> -1
-cotx661 comparetotal  -0E2   0   -> -1
-cotx662 comparetotal   0E1   0   -> 1
-cotx663 comparetotal   0E2   0   -> 1
-cotx664 comparetotal  -0E1  -0E1 -> 0
-cotx665 comparetotal  -0E2  -0E1 -> -1
-cotx666 comparetotal   0E1  -0E1 -> 1
-cotx667 comparetotal   0E2  -0E1 -> 1
-cotx668 comparetotal  -0E1  -0E2 -> 1
-cotx669 comparetotal  -0E2  -0E2 -> 0
-cotx670 comparetotal   0E1  -0E2 -> 1
-cotx671 comparetotal   0E2  -0E2 -> 1
-cotx672 comparetotal  -0E1   0E1 -> -1
-cotx673 comparetotal  -0E2   0E1 -> -1
-cotx674 comparetotal   0E1   0E1 -> 0
-cotx675 comparetotal   0E2   0E1 -> 1
-cotx676 comparetotal  -0E1   0E2 -> -1
-cotx677 comparetotal  -0E2   0E2 -> -1
-cotx678 comparetotal   0E1   0E2 -> -1
-cotx679 comparetotal   0E2   0E2 -> 0
-
--- trailing zeros; unit-y
-precision: 20
-cotx680 comparetotal   12    12           -> 0
-cotx681 comparetotal   12    12.0         -> 1
-cotx682 comparetotal   12    12.00        -> 1
-cotx683 comparetotal   12    12.000       -> 1
-cotx684 comparetotal   12    12.0000      -> 1
-cotx685 comparetotal   12    12.00000     -> 1
-cotx686 comparetotal   12    12.000000    -> 1
-cotx687 comparetotal   12    12.0000000   -> 1
-cotx688 comparetotal   12    12.00000000  -> 1
-cotx689 comparetotal   12    12.000000000 -> 1
-cotx690 comparetotal   12              12 -> 0
-cotx691 comparetotal   12.0            12 -> -1
-cotx692 comparetotal   12.00           12 -> -1
-cotx693 comparetotal   12.000          12 -> -1
-cotx694 comparetotal   12.0000         12 -> -1
-cotx695 comparetotal   12.00000        12 -> -1
-cotx696 comparetotal   12.000000       12 -> -1
-cotx697 comparetotal   12.0000000      12 -> -1
-cotx698 comparetotal   12.00000000     12 -> -1
-cotx699 comparetotal   12.000000000    12 -> -1
-
--- long operand checks
-maxexponent: 999
-minexponent: -999
-precision: 9
-cotx701 comparetotal 12345678000  1 ->  1
-cotx702 comparetotal 1 12345678000  -> -1
-cotx703 comparetotal 1234567800   1 ->  1
-cotx704 comparetotal 1 1234567800   -> -1
-cotx705 comparetotal 1234567890   1 ->  1
-cotx706 comparetotal 1 1234567890   -> -1
-cotx707 comparetotal 1234567891   1 ->  1
-cotx708 comparetotal 1 1234567891   -> -1
-cotx709 comparetotal 12345678901  1 ->  1
-cotx710 comparetotal 1 12345678901  -> -1
-cotx711 comparetotal 1234567896   1 ->  1
-cotx712 comparetotal 1 1234567896   -> -1
-cotx713 comparetotal -1234567891  1 -> -1
-cotx714 comparetotal 1 -1234567891  ->  1
-cotx715 comparetotal -12345678901 1 -> -1
-cotx716 comparetotal 1 -12345678901 ->  1
-cotx717 comparetotal -1234567896  1 -> -1
-cotx718 comparetotal 1 -1234567896  ->  1
-
-precision: 15
--- same with plenty of precision
-cotx721 comparetotal 12345678000 1 -> 1
-cotx722 comparetotal 1 12345678000 -> -1
-cotx723 comparetotal 1234567800  1 -> 1
-cotx724 comparetotal 1 1234567800  -> -1
-cotx725 comparetotal 1234567890  1 -> 1
-cotx726 comparetotal 1 1234567890  -> -1
-cotx727 comparetotal 1234567891  1 -> 1
-cotx728 comparetotal 1 1234567891  -> -1
-cotx729 comparetotal 12345678901 1 -> 1
-cotx730 comparetotal 1 12345678901 -> -1
-cotx731 comparetotal 1234567896  1 -> 1
-cotx732 comparetotal 1 1234567896  -> -1
-
--- residue cases
-precision: 5
-cotx740 comparetotal  1  0.9999999  -> 1
-cotx741 comparetotal  1  0.999999   -> 1
-cotx742 comparetotal  1  0.99999    -> 1
-cotx743 comparetotal  1  1.0000     -> 1
-cotx744 comparetotal  1  1.00001    -> -1
-cotx745 comparetotal  1  1.000001   -> -1
-cotx746 comparetotal  1  1.0000001  -> -1
-cotx750 comparetotal  0.9999999  1  -> -1
-cotx751 comparetotal  0.999999   1  -> -1
-cotx752 comparetotal  0.99999    1  -> -1
-cotx753 comparetotal  1.0000     1  -> -1
-cotx754 comparetotal  1.00001    1  -> 1
-cotx755 comparetotal  1.000001   1  -> 1
-cotx756 comparetotal  1.0000001  1  -> 1
-
--- a selection of longies
-cotx760 comparetotal -36852134.84194296250843579428931 -5830629.8347085025808756560357940 -> -1
-cotx761 comparetotal -36852134.84194296250843579428931 -36852134.84194296250843579428931  -> 0
-cotx762 comparetotal -36852134.94194296250843579428931 -36852134.84194296250843579428931  -> -1
-cotx763 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
--- precisions above or below the difference should have no effect
-precision:   11
-cotx764 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:   10
-cotx765 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    9
-cotx766 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    8
-cotx767 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    7
-cotx768 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    6
-cotx769 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    5
-cotx770 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    4
-cotx771 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    3
-cotx772 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    2
-cotx773 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-precision:    1
-cotx774 comparetotal -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-
--- Specials
-precision:   9
-cotx780 comparetotal  Inf  -Inf   ->  1
-cotx781 comparetotal  Inf  -1000  ->  1
-cotx782 comparetotal  Inf  -1     ->  1
-cotx783 comparetotal  Inf  -0     ->  1
-cotx784 comparetotal  Inf   0     ->  1
-cotx785 comparetotal  Inf   1     ->  1
-cotx786 comparetotal  Inf   1000  ->  1
-cotx787 comparetotal  Inf   Inf   ->  0
-cotx788 comparetotal -1000  Inf   -> -1
-cotx789 comparetotal -Inf   Inf   -> -1
-cotx790 comparetotal -1     Inf   -> -1
-cotx791 comparetotal -0     Inf   -> -1
-cotx792 comparetotal  0     Inf   -> -1
-cotx793 comparetotal  1     Inf   -> -1
-cotx794 comparetotal  1000  Inf   -> -1
-cotx795 comparetotal  Inf   Inf   ->  0
-
-cotx800 comparetotal -Inf  -Inf   ->  0
-cotx801 comparetotal -Inf  -1000  -> -1
-cotx802 comparetotal -Inf  -1     -> -1
-cotx803 comparetotal -Inf  -0     -> -1
-cotx804 comparetotal -Inf   0     -> -1
-cotx805 comparetotal -Inf   1     -> -1
-cotx806 comparetotal -Inf   1000  -> -1
-cotx807 comparetotal -Inf   Inf   -> -1
-cotx808 comparetotal -Inf  -Inf   ->  0
-cotx809 comparetotal -1000 -Inf   ->  1
-cotx810 comparetotal -1    -Inf   ->  1
-cotx811 comparetotal -0    -Inf   ->  1
-cotx812 comparetotal  0    -Inf   ->  1
-cotx813 comparetotal  1    -Inf   ->  1
-cotx814 comparetotal  1000 -Inf   ->  1
-cotx815 comparetotal  Inf  -Inf   ->  1
-
-cotx821 comparetotal  NaN -Inf    ->  1
-cotx822 comparetotal  NaN -1000   ->  1
-cotx823 comparetotal  NaN -1      ->  1
-cotx824 comparetotal  NaN -0      ->  1
-cotx825 comparetotal  NaN  0      ->  1
-cotx826 comparetotal  NaN  1      ->  1
-cotx827 comparetotal  NaN  1000   ->  1
-cotx828 comparetotal  NaN  Inf    ->  1
-cotx829 comparetotal  NaN  NaN    ->  0
-cotx830 comparetotal -Inf  NaN    ->  -1
-cotx831 comparetotal -1000 NaN    ->  -1
-cotx832 comparetotal -1    NaN    ->  -1
-cotx833 comparetotal -0    NaN    ->  -1
-cotx834 comparetotal  0    NaN    ->  -1
-cotx835 comparetotal  1    NaN    ->  -1
-cotx836 comparetotal  1000 NaN    ->  -1
-cotx837 comparetotal  Inf  NaN    ->  -1
-cotx838 comparetotal -NaN -NaN    ->  0
-cotx839 comparetotal +NaN -NaN    ->  1
-cotx840 comparetotal -NaN +NaN    ->  -1
-
-cotx841 comparetotal  sNaN -sNaN  ->  1
-cotx842 comparetotal  sNaN -NaN   ->  1
-cotx843 comparetotal  sNaN -Inf   ->  1
-cotx844 comparetotal  sNaN -1000  ->  1
-cotx845 comparetotal  sNaN -1     ->  1
-cotx846 comparetotal  sNaN -0     ->  1
-cotx847 comparetotal  sNaN  0     ->  1
-cotx848 comparetotal  sNaN  1     ->  1
-cotx849 comparetotal  sNaN  1000  ->  1
-cotx850 comparetotal  sNaN  NaN   ->  -1
-cotx851 comparetotal  sNaN sNaN   ->  0
-
-cotx852 comparetotal -sNaN sNaN   ->  -1
-cotx853 comparetotal -NaN  sNaN   ->  -1
-cotx854 comparetotal -Inf  sNaN   ->  -1
-cotx855 comparetotal -1000 sNaN   ->  -1
-cotx856 comparetotal -1    sNaN   ->  -1
-cotx857 comparetotal -0    sNaN   ->  -1
-cotx858 comparetotal  0    sNaN   ->  -1
-cotx859 comparetotal  1    sNaN   ->  -1
-cotx860 comparetotal  1000 sNaN   ->  -1
-cotx861 comparetotal  Inf  sNaN   ->  -1
-cotx862 comparetotal  NaN  sNaN   ->  1
-cotx863 comparetotal  sNaN sNaN   ->  0
-
-cotx871 comparetotal  -sNaN -sNaN  ->  0
-cotx872 comparetotal  -sNaN -NaN   ->  1
-cotx873 comparetotal  -sNaN -Inf   ->  -1
-cotx874 comparetotal  -sNaN -1000  ->  -1
-cotx875 comparetotal  -sNaN -1     ->  -1
-cotx876 comparetotal  -sNaN -0     ->  -1
-cotx877 comparetotal  -sNaN  0     ->  -1
-cotx878 comparetotal  -sNaN  1     ->  -1
-cotx879 comparetotal  -sNaN  1000  ->  -1
-cotx880 comparetotal  -sNaN  NaN   ->  -1
-cotx881 comparetotal  -sNaN sNaN   ->  -1
-
-cotx882 comparetotal -sNaN -sNaN   ->  0
-cotx883 comparetotal -NaN  -sNaN   ->  -1
-cotx884 comparetotal -Inf  -sNaN   ->  1
-cotx885 comparetotal -1000 -sNaN   ->  1
-cotx886 comparetotal -1    -sNaN   ->  1
-cotx887 comparetotal -0    -sNaN   ->  1
-cotx888 comparetotal  0    -sNaN   ->  1
-cotx889 comparetotal  1    -sNaN   ->  1
-cotx890 comparetotal  1000 -sNaN   ->  1
-cotx891 comparetotal  Inf  -sNaN   ->  1
-cotx892 comparetotal  NaN  -sNaN   ->  1
-cotx893 comparetotal  sNaN -sNaN   ->  1
-
--- NaNs with payload
-cotx960 comparetotal  NaN9 -Inf   ->  1
-cotx961 comparetotal  NaN8  999   ->  1
-cotx962 comparetotal  NaN77 Inf   ->  1
-cotx963 comparetotal -NaN67 NaN5  ->  -1
-cotx964 comparetotal -Inf  -NaN4  ->  1
-cotx965 comparetotal -999  -NaN33 ->  1
-cotx966 comparetotal  Inf   NaN2  ->  -1
-
-cotx970 comparetotal -NaN41 -NaN42 -> 1
-cotx971 comparetotal +NaN41 -NaN42 -> 1
-cotx972 comparetotal -NaN41 +NaN42 -> -1
-cotx973 comparetotal +NaN41 +NaN42 -> -1
-cotx974 comparetotal -NaN42 -NaN01 -> -1
-cotx975 comparetotal +NaN42 -NaN01 ->  1
-cotx976 comparetotal -NaN42 +NaN01 -> -1
-cotx977 comparetotal +NaN42 +NaN01 ->  1
-
-cotx980 comparetotal -sNaN771 -sNaN772 -> 1
-cotx981 comparetotal +sNaN771 -sNaN772 -> 1
-cotx982 comparetotal -sNaN771 +sNaN772 -> -1
-cotx983 comparetotal +sNaN771 +sNaN772 -> -1
-cotx984 comparetotal -sNaN772 -sNaN771 -> -1
-cotx985 comparetotal +sNaN772 -sNaN771 ->  1
-cotx986 comparetotal -sNaN772 +sNaN771 -> -1
-cotx987 comparetotal +sNaN772 +sNaN771 ->  1
-
-cotx991 comparetotal -sNaN99 -Inf    -> -1
-cotx992 comparetotal  sNaN98 -11     ->  1
-cotx993 comparetotal  sNaN97  NaN    -> -1
-cotx994 comparetotal  sNaN16 sNaN94  -> -1
-cotx995 comparetotal  NaN85  sNaN83  ->  1
-cotx996 comparetotal -Inf    sNaN92  -> -1
-cotx997 comparetotal  088    sNaN81  -> -1
-cotx998 comparetotal  Inf    sNaN90  -> -1
-cotx999 comparetotal  NaN   -sNaN89  ->  1
-
--- overflow and underflow tests .. subnormal results now allowed
-maxExponent: 999999999
-minexponent: -999999999
-cotx1080 comparetotal +1.23456789012345E-0 9E+999999999 -> -1
-cotx1081 comparetotal 9E+999999999 +1.23456789012345E-0 ->  1
-cotx1082 comparetotal +0.100 9E-999999999               ->  1
-cotx1083 comparetotal 9E-999999999 +0.100               -> -1
-cotx1085 comparetotal -1.23456789012345E-0 9E+999999999 -> -1
-cotx1086 comparetotal 9E+999999999 -1.23456789012345E-0 ->  1
-cotx1087 comparetotal -0.100 9E-999999999               -> -1
-cotx1088 comparetotal 9E-999999999 -0.100               ->  1
-
-cotx1089 comparetotal 1e-599999999 1e-400000001   -> -1
-cotx1090 comparetotal 1e-599999999 1e-400000000   -> -1
-cotx1091 comparetotal 1e-600000000 1e-400000000   -> -1
-cotx1092 comparetotal 9e-999999998 0.01           -> -1
-cotx1093 comparetotal 9e-999999998 0.1            -> -1
-cotx1094 comparetotal 0.01 9e-999999998           ->  1
-cotx1095 comparetotal 1e599999999 1e400000001     ->  1
-cotx1096 comparetotal 1e599999999 1e400000000     ->  1
-cotx1097 comparetotal 1e600000000 1e400000000     ->  1
-cotx1098 comparetotal 9e999999998 100             ->  1
-cotx1099 comparetotal 9e999999998 10              ->  1
-cotx1100 comparetotal 100  9e999999998            -> -1
--- signs
-cotx1101 comparetotal  1e+777777777  1e+411111111 ->  1
-cotx1102 comparetotal  1e+777777777 -1e+411111111 ->  1
-cotx1103 comparetotal -1e+777777777  1e+411111111 -> -1
-cotx1104 comparetotal -1e+777777777 -1e+411111111 -> -1
-cotx1105 comparetotal  1e-777777777  1e-411111111 -> -1
-cotx1106 comparetotal  1e-777777777 -1e-411111111 ->  1
-cotx1107 comparetotal -1e-777777777  1e-411111111 -> -1
-cotx1108 comparetotal -1e-777777777 -1e-411111111 ->  1
-
--- spread zeros
-cotx1110 comparetotal   0E-383  0       -> -1
-cotx1111 comparetotal   0E-383 -0       ->  1
-cotx1112 comparetotal  -0E-383  0       -> -1
-cotx1113 comparetotal  -0E-383 -0       ->  1
-cotx1114 comparetotal   0E-383  0E+384  -> -1
-cotx1115 comparetotal   0E-383 -0E+384  ->  1
-cotx1116 comparetotal  -0E-383  0E+384  -> -1
-cotx1117 comparetotal  -0E-383 -0E+384  ->  1
-cotx1118 comparetotal   0       0E+384  -> -1
-cotx1119 comparetotal   0      -0E+384  ->  1
-cotx1120 comparetotal  -0       0E+384  -> -1
-cotx1121 comparetotal  -0      -0E+384  ->  1
-
-cotx1130 comparetotal   0E+384  0       ->  1
-cotx1131 comparetotal   0E+384 -0       ->  1
-cotx1132 comparetotal  -0E+384  0       -> -1
-cotx1133 comparetotal  -0E+384 -0       -> -1
-cotx1134 comparetotal   0E+384  0E-383  ->  1
-cotx1135 comparetotal   0E+384 -0E-383  ->  1
-cotx1136 comparetotal  -0E+384  0E-383  -> -1
-cotx1137 comparetotal  -0E+384 -0E-383  -> -1
-cotx1138 comparetotal   0       0E-383  ->  1
-cotx1139 comparetotal   0      -0E-383  ->  1
-cotx1140 comparetotal  -0       0E-383  -> -1
-cotx1141 comparetotal  -0      -0E-383  -> -1
-
--- Null tests
-cotx9990 comparetotal 10  # -> NaN Invalid_operation
-cotx9991 comparetotal  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/comparetotmag.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/comparetotmag.decTest
deleted file mode 100644
index e87c9f2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/comparetotmag.decTest
+++ /dev/null
@@ -1,790 +0,0 @@
-------------------------------------------------------------------------
--- comparetotmag.decTest -- decimal comparison, abs. total ordering   --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Note that it cannot be assumed that add/subtract tests cover paths
--- for this operation adequately, here, because the code might be
--- quite different (comparison cannot overflow or underflow, so
--- actual subtractions are not necessary). Similarly, comparetotal
--- will have some radically different paths than compare.
-
-extended:    1
-precision:   16
-rounding:    half_up
-maxExponent: 384
-minExponent: -383
-
--- sanity checks
-ctmx001 comparetotmag  -2  -2   ->   0
-ctmx002 comparetotmag  -2  -1   ->   1
-ctmx003 comparetotmag  -2   0   ->   1
-ctmx004 comparetotmag  -2   1   ->   1
-ctmx005 comparetotmag  -2   2   ->   0
-ctmx006 comparetotmag  -1  -2   ->  -1
-ctmx007 comparetotmag  -1  -1   ->   0
-ctmx008 comparetotmag  -1   0   ->   1
-ctmx009 comparetotmag  -1   1   ->   0
-ctmx010 comparetotmag  -1   2   ->  -1
-ctmx011 comparetotmag   0  -2   ->  -1
-ctmx012 comparetotmag   0  -1   ->  -1
-ctmx013 comparetotmag   0   0   ->   0
-ctmx014 comparetotmag   0   1   ->  -1
-ctmx015 comparetotmag   0   2   ->  -1
-ctmx016 comparetotmag   1  -2   ->  -1
-ctmx017 comparetotmag   1  -1   ->   0
-ctmx018 comparetotmag   1   0   ->   1
-ctmx019 comparetotmag   1   1   ->   0
-ctmx020 comparetotmag   1   2   ->  -1
-ctmx021 comparetotmag   2  -2   ->   0
-ctmx022 comparetotmag   2  -1   ->   1
-ctmx023 comparetotmag   2   0   ->   1
-ctmx025 comparetotmag   2   1   ->   1
-ctmx026 comparetotmag   2   2   ->   0
-
-ctmx031 comparetotmag  -20  -20   ->   0
-ctmx032 comparetotmag  -20  -10   ->   1
-ctmx033 comparetotmag  -20   00   ->   1
-ctmx034 comparetotmag  -20   10   ->   1
-ctmx035 comparetotmag  -20   20   ->   0
-ctmx036 comparetotmag  -10  -20   ->  -1
-ctmx037 comparetotmag  -10  -10   ->   0
-ctmx038 comparetotmag  -10   00   ->   1
-ctmx039 comparetotmag  -10   10   ->   0
-ctmx040 comparetotmag  -10   20   ->  -1
-ctmx041 comparetotmag   00  -20   ->  -1
-ctmx042 comparetotmag   00  -10   ->  -1
-ctmx043 comparetotmag   00   00   ->   0
-ctmx044 comparetotmag   00   10   ->  -1
-ctmx045 comparetotmag   00   20   ->  -1
-ctmx046 comparetotmag   10  -20   ->  -1
-ctmx047 comparetotmag   10  -10   ->   0
-ctmx048 comparetotmag   10   00   ->   1
-ctmx049 comparetotmag   10   10   ->   0
-ctmx050 comparetotmag   10   20   ->  -1
-ctmx051 comparetotmag   20  -20   ->   0
-ctmx052 comparetotmag   20  -10   ->   1
-ctmx053 comparetotmag   20   00   ->   1
-ctmx055 comparetotmag   20   10   ->   1
-ctmx056 comparetotmag   20   20   ->   0
-
-ctmx061 comparetotmag  -2.0  -2.0   ->   0
-ctmx062 comparetotmag  -2.0  -1.0   ->   1
-ctmx063 comparetotmag  -2.0   0.0   ->   1
-ctmx064 comparetotmag  -2.0   1.0   ->   1
-ctmx065 comparetotmag  -2.0   2.0   ->   0
-ctmx066 comparetotmag  -1.0  -2.0   ->  -1
-ctmx067 comparetotmag  -1.0  -1.0   ->   0
-ctmx068 comparetotmag  -1.0   0.0   ->   1
-ctmx069 comparetotmag  -1.0   1.0   ->   0
-ctmx070 comparetotmag  -1.0   2.0   ->  -1
-ctmx071 comparetotmag   0.0  -2.0   ->  -1
-ctmx072 comparetotmag   0.0  -1.0   ->  -1
-ctmx073 comparetotmag   0.0   0.0   ->   0
-ctmx074 comparetotmag   0.0   1.0   ->  -1
-ctmx075 comparetotmag   0.0   2.0   ->  -1
-ctmx076 comparetotmag   1.0  -2.0   ->  -1
-ctmx077 comparetotmag   1.0  -1.0   ->   0
-ctmx078 comparetotmag   1.0   0.0   ->   1
-ctmx079 comparetotmag   1.0   1.0   ->   0
-ctmx080 comparetotmag   1.0   2.0   ->  -1
-ctmx081 comparetotmag   2.0  -2.0   ->   0
-ctmx082 comparetotmag   2.0  -1.0   ->   1
-ctmx083 comparetotmag   2.0   0.0   ->   1
-ctmx085 comparetotmag   2.0   1.0   ->   1
-ctmx086 comparetotmag   2.0   2.0   ->   0
-
--- now some cases which might overflow if subtract were used
-maxexponent: 999999999
-minexponent: -999999999
-ctmx090 comparetotmag  9.99999999E+999999999 9.99999999E+999999999   ->   0
-ctmx091 comparetotmag -9.99999999E+999999999 9.99999999E+999999999   ->   0
-ctmx092 comparetotmag  9.99999999E+999999999 -9.99999999E+999999999  ->   0
-ctmx093 comparetotmag -9.99999999E+999999999 -9.99999999E+999999999  ->   0
-
--- some differing length/exponent cases
--- in this first group, compare would compare all equal
-ctmx100 comparetotmag   7.0    7.0     ->   0
-ctmx101 comparetotmag   7.0    7       ->  -1
-ctmx102 comparetotmag   7      7.0     ->   1
-ctmx103 comparetotmag   7E+0   7.0     ->   1
-ctmx104 comparetotmag   70E-1  7.0     ->   0
-ctmx105 comparetotmag   0.7E+1 7       ->   0
-ctmx106 comparetotmag   70E-1  7       ->  -1
-ctmx107 comparetotmag   7.0    7E+0    ->  -1
-ctmx108 comparetotmag   7.0    70E-1   ->   0
-ctmx109 comparetotmag   7      0.7E+1  ->   0
-ctmx110 comparetotmag   7      70E-1   ->   1
-
-ctmx120 comparetotmag   8.0    7.0     ->   1
-ctmx121 comparetotmag   8.0    7       ->   1
-ctmx122 comparetotmag   8      7.0     ->   1
-ctmx123 comparetotmag   8E+0   7.0     ->   1
-ctmx124 comparetotmag   80E-1  7.0     ->   1
-ctmx125 comparetotmag   0.8E+1 7       ->   1
-ctmx126 comparetotmag   80E-1  7       ->   1
-ctmx127 comparetotmag   8.0    7E+0    ->   1
-ctmx128 comparetotmag   8.0    70E-1   ->   1
-ctmx129 comparetotmag   8      0.7E+1   ->   1
-ctmx130 comparetotmag   8      70E-1   ->   1
-
-ctmx140 comparetotmag   8.0    9.0     ->  -1
-ctmx141 comparetotmag   8.0    9       ->  -1
-ctmx142 comparetotmag   8      9.0     ->  -1
-ctmx143 comparetotmag   8E+0   9.0     ->  -1
-ctmx144 comparetotmag   80E-1  9.0     ->  -1
-ctmx145 comparetotmag   0.8E+1 9       ->  -1
-ctmx146 comparetotmag   80E-1  9       ->  -1
-ctmx147 comparetotmag   8.0    9E+0    ->  -1
-ctmx148 comparetotmag   8.0    90E-1   ->  -1
-ctmx149 comparetotmag   8      0.9E+1  ->  -1
-ctmx150 comparetotmag   8      90E-1   ->  -1
-
--- and again, with sign changes -+ ..
-ctmx200 comparetotmag  -7.0    7.0     ->   0
-ctmx201 comparetotmag  -7.0    7       ->  -1
-ctmx202 comparetotmag  -7      7.0     ->   1
-ctmx203 comparetotmag  -7E+0   7.0     ->   1
-ctmx204 comparetotmag  -70E-1  7.0     ->   0
-ctmx205 comparetotmag  -0.7E+1 7       ->   0
-ctmx206 comparetotmag  -70E-1  7       ->  -1
-ctmx207 comparetotmag  -7.0    7E+0    ->  -1
-ctmx208 comparetotmag  -7.0    70E-1   ->   0
-ctmx209 comparetotmag  -7      0.7E+1  ->   0
-ctmx210 comparetotmag  -7      70E-1   ->   1
-
-ctmx220 comparetotmag  -8.0    7.0     ->   1
-ctmx221 comparetotmag  -8.0    7       ->   1
-ctmx222 comparetotmag  -8      7.0     ->   1
-ctmx223 comparetotmag  -8E+0   7.0     ->   1
-ctmx224 comparetotmag  -80E-1  7.0     ->   1
-ctmx225 comparetotmag  -0.8E+1 7       ->   1
-ctmx226 comparetotmag  -80E-1  7       ->   1
-ctmx227 comparetotmag  -8.0    7E+0    ->   1
-ctmx228 comparetotmag  -8.0    70E-1   ->   1
-ctmx229 comparetotmag  -8      0.7E+1  ->   1
-ctmx230 comparetotmag  -8      70E-1   ->   1
-
-ctmx240 comparetotmag  -8.0    9.0     ->  -1
-ctmx241 comparetotmag  -8.0    9       ->  -1
-ctmx242 comparetotmag  -8      9.0     ->  -1
-ctmx243 comparetotmag  -8E+0   9.0     ->  -1
-ctmx244 comparetotmag  -80E-1  9.0     ->  -1
-ctmx245 comparetotmag  -0.8E+1 9       ->  -1
-ctmx246 comparetotmag  -80E-1  9       ->  -1
-ctmx247 comparetotmag  -8.0    9E+0    ->  -1
-ctmx248 comparetotmag  -8.0    90E-1   ->  -1
-ctmx249 comparetotmag  -8      0.9E+1  ->  -1
-ctmx250 comparetotmag  -8      90E-1   ->  -1
-
--- and again, with sign changes +- ..
-ctmx300 comparetotmag   7.0    -7.0     ->   0
-ctmx301 comparetotmag   7.0    -7       ->  -1
-ctmx302 comparetotmag   7      -7.0     ->   1
-ctmx303 comparetotmag   7E+0   -7.0     ->   1
-ctmx304 comparetotmag   70E-1  -7.0     ->   0
-ctmx305 comparetotmag   .7E+1  -7       ->   0
-ctmx306 comparetotmag   70E-1  -7       ->  -1
-ctmx307 comparetotmag   7.0    -7E+0    ->  -1
-ctmx308 comparetotmag   7.0    -70E-1   ->   0
-ctmx309 comparetotmag   7      -.7E+1   ->   0
-ctmx310 comparetotmag   7      -70E-1   ->   1
-
-ctmx320 comparetotmag   8.0    -7.0     ->   1
-ctmx321 comparetotmag   8.0    -7       ->   1
-ctmx322 comparetotmag   8      -7.0     ->   1
-ctmx323 comparetotmag   8E+0   -7.0     ->   1
-ctmx324 comparetotmag   80E-1  -7.0     ->   1
-ctmx325 comparetotmag   .8E+1  -7       ->   1
-ctmx326 comparetotmag   80E-1  -7       ->   1
-ctmx327 comparetotmag   8.0    -7E+0    ->   1
-ctmx328 comparetotmag   8.0    -70E-1   ->   1
-ctmx329 comparetotmag   8      -.7E+1   ->   1
-ctmx330 comparetotmag   8      -70E-1   ->   1
-
-ctmx340 comparetotmag   8.0    -9.0     ->  -1
-ctmx341 comparetotmag   8.0    -9       ->  -1
-ctmx342 comparetotmag   8      -9.0     ->  -1
-ctmx343 comparetotmag   8E+0   -9.0     ->  -1
-ctmx344 comparetotmag   80E-1  -9.0     ->  -1
-ctmx345 comparetotmag   .8E+1  -9       ->  -1
-ctmx346 comparetotmag   80E-1  -9       ->  -1
-ctmx347 comparetotmag   8.0    -9E+0    ->  -1
-ctmx348 comparetotmag   8.0    -90E-1   ->  -1
-ctmx349 comparetotmag   8      -.9E+1   ->  -1
-ctmx350 comparetotmag   8      -90E-1   ->  -1
-
--- and again, with sign changes -- ..
-ctmx400 comparetotmag   -7.0    -7.0     ->   0
-ctmx401 comparetotmag   -7.0    -7       ->  -1
-ctmx402 comparetotmag   -7      -7.0     ->   1
-ctmx403 comparetotmag   -7E+0   -7.0     ->   1
-ctmx404 comparetotmag   -70E-1  -7.0     ->   0
-ctmx405 comparetotmag   -.7E+1  -7       ->   0
-ctmx406 comparetotmag   -70E-1  -7       ->  -1
-ctmx407 comparetotmag   -7.0    -7E+0    ->  -1
-ctmx408 comparetotmag   -7.0    -70E-1   ->   0
-ctmx409 comparetotmag   -7      -.7E+1   ->   0
-ctmx410 comparetotmag   -7      -70E-1   ->   1
-
-ctmx420 comparetotmag   -8.0    -7.0     ->   1
-ctmx421 comparetotmag   -8.0    -7       ->   1
-ctmx422 comparetotmag   -8      -7.0     ->   1
-ctmx423 comparetotmag   -8E+0   -7.0     ->   1
-ctmx424 comparetotmag   -80E-1  -7.0     ->   1
-ctmx425 comparetotmag   -.8E+1  -7       ->   1
-ctmx426 comparetotmag   -80E-1  -7       ->   1
-ctmx427 comparetotmag   -8.0    -7E+0    ->   1
-ctmx428 comparetotmag   -8.0    -70E-1   ->   1
-ctmx429 comparetotmag   -8      -.7E+1   ->   1
-ctmx430 comparetotmag   -8      -70E-1   ->   1
-
-ctmx440 comparetotmag   -8.0    -9.0     ->  -1
-ctmx441 comparetotmag   -8.0    -9       ->  -1
-ctmx442 comparetotmag   -8      -9.0     ->  -1
-ctmx443 comparetotmag   -8E+0   -9.0     ->  -1
-ctmx444 comparetotmag   -80E-1  -9.0     ->  -1
-ctmx445 comparetotmag   -.8E+1  -9       ->  -1
-ctmx446 comparetotmag   -80E-1  -9       ->  -1
-ctmx447 comparetotmag   -8.0    -9E+0    ->  -1
-ctmx448 comparetotmag   -8.0    -90E-1   ->  -1
-ctmx449 comparetotmag   -8      -.9E+1   ->  -1
-ctmx450 comparetotmag   -8      -90E-1   ->  -1
-
-
--- testcases that subtract to lots of zeros at boundaries [pgr]
-precision: 40
-ctmx470 comparetotmag 123.4560000000000000E789 123.456E789  ->  -1
-ctmx471 comparetotmag 123.456000000000000E-89 123.456E-89  ->  -1
-ctmx472 comparetotmag 123.45600000000000E789 123.456E789  ->  -1
-ctmx473 comparetotmag 123.4560000000000E-89 123.456E-89  ->  -1
-ctmx474 comparetotmag 123.456000000000E789 123.456E789  ->  -1
-ctmx475 comparetotmag 123.45600000000E-89 123.456E-89  ->  -1
-ctmx476 comparetotmag 123.4560000000E789 123.456E789  ->  -1
-ctmx477 comparetotmag 123.456000000E-89 123.456E-89  ->  -1
-ctmx478 comparetotmag 123.45600000E789 123.456E789  ->  -1
-ctmx479 comparetotmag 123.4560000E-89 123.456E-89  ->  -1
-ctmx480 comparetotmag 123.456000E789 123.456E789  ->  -1
-ctmx481 comparetotmag 123.45600E-89 123.456E-89  ->  -1
-ctmx482 comparetotmag 123.4560E789 123.456E789  ->  -1
-ctmx483 comparetotmag 123.456E-89 123.456E-89  ->   0
-ctmx484 comparetotmag 123.456E-89 123.4560000000000000E-89  ->   1
-ctmx485 comparetotmag 123.456E789 123.456000000000000E789  ->   1
-ctmx486 comparetotmag 123.456E-89 123.45600000000000E-89  ->   1
-ctmx487 comparetotmag 123.456E789 123.4560000000000E789  ->   1
-ctmx488 comparetotmag 123.456E-89 123.456000000000E-89  ->   1
-ctmx489 comparetotmag 123.456E789 123.45600000000E789  ->   1
-ctmx490 comparetotmag 123.456E-89 123.4560000000E-89  ->   1
-ctmx491 comparetotmag 123.456E789 123.456000000E789  ->   1
-ctmx492 comparetotmag 123.456E-89 123.45600000E-89  ->   1
-ctmx493 comparetotmag 123.456E789 123.4560000E789  ->   1
-ctmx494 comparetotmag 123.456E-89 123.456000E-89  ->   1
-ctmx495 comparetotmag 123.456E789 123.45600E789  ->   1
-ctmx496 comparetotmag 123.456E-89 123.4560E-89  ->   1
-ctmx497 comparetotmag 123.456E789 123.456E789  ->   0
-
--- wide-ranging, around precision; signs equal
-precision: 9
-ctmx500 comparetotmag    1     1E-15     ->   1
-ctmx501 comparetotmag    1     1E-14     ->   1
-ctmx502 comparetotmag    1     1E-13     ->   1
-ctmx503 comparetotmag    1     1E-12     ->   1
-ctmx504 comparetotmag    1     1E-11     ->   1
-ctmx505 comparetotmag    1     1E-10     ->   1
-ctmx506 comparetotmag    1     1E-9      ->   1
-ctmx507 comparetotmag    1     1E-8      ->   1
-ctmx508 comparetotmag    1     1E-7      ->   1
-ctmx509 comparetotmag    1     1E-6      ->   1
-ctmx510 comparetotmag    1     1E-5      ->   1
-ctmx511 comparetotmag    1     1E-4      ->   1
-ctmx512 comparetotmag    1     1E-3      ->   1
-ctmx513 comparetotmag    1     1E-2      ->   1
-ctmx514 comparetotmag    1     1E-1      ->   1
-ctmx515 comparetotmag    1     1E-0      ->   0
-ctmx516 comparetotmag    1     1E+1      ->  -1
-ctmx517 comparetotmag    1     1E+2      ->  -1
-ctmx518 comparetotmag    1     1E+3      ->  -1
-ctmx519 comparetotmag    1     1E+4      ->  -1
-ctmx521 comparetotmag    1     1E+5      ->  -1
-ctmx522 comparetotmag    1     1E+6      ->  -1
-ctmx523 comparetotmag    1     1E+7      ->  -1
-ctmx524 comparetotmag    1     1E+8      ->  -1
-ctmx525 comparetotmag    1     1E+9      ->  -1
-ctmx526 comparetotmag    1     1E+10     ->  -1
-ctmx527 comparetotmag    1     1E+11     ->  -1
-ctmx528 comparetotmag    1     1E+12     ->  -1
-ctmx529 comparetotmag    1     1E+13     ->  -1
-ctmx530 comparetotmag    1     1E+14     ->  -1
-ctmx531 comparetotmag    1     1E+15     ->  -1
--- LR swap
-ctmx540 comparetotmag    1E-15  1        ->  -1
-ctmx541 comparetotmag    1E-14  1        ->  -1
-ctmx542 comparetotmag    1E-13  1        ->  -1
-ctmx543 comparetotmag    1E-12  1        ->  -1
-ctmx544 comparetotmag    1E-11  1        ->  -1
-ctmx545 comparetotmag    1E-10  1        ->  -1
-ctmx546 comparetotmag    1E-9   1        ->  -1
-ctmx547 comparetotmag    1E-8   1        ->  -1
-ctmx548 comparetotmag    1E-7   1        ->  -1
-ctmx549 comparetotmag    1E-6   1        ->  -1
-ctmx550 comparetotmag    1E-5   1        ->  -1
-ctmx551 comparetotmag    1E-4   1        ->  -1
-ctmx552 comparetotmag    1E-3   1        ->  -1
-ctmx553 comparetotmag    1E-2   1        ->  -1
-ctmx554 comparetotmag    1E-1   1        ->  -1
-ctmx555 comparetotmag    1E-0   1        ->   0
-ctmx556 comparetotmag    1E+1   1        ->   1
-ctmx557 comparetotmag    1E+2   1        ->   1
-ctmx558 comparetotmag    1E+3   1        ->   1
-ctmx559 comparetotmag    1E+4   1        ->   1
-ctmx561 comparetotmag    1E+5   1        ->   1
-ctmx562 comparetotmag    1E+6   1        ->   1
-ctmx563 comparetotmag    1E+7   1        ->   1
-ctmx564 comparetotmag    1E+8   1        ->   1
-ctmx565 comparetotmag    1E+9   1        ->   1
-ctmx566 comparetotmag    1E+10  1        ->   1
-ctmx567 comparetotmag    1E+11  1        ->   1
-ctmx568 comparetotmag    1E+12  1        ->   1
-ctmx569 comparetotmag    1E+13  1        ->   1
-ctmx570 comparetotmag    1E+14  1        ->   1
-ctmx571 comparetotmag    1E+15  1        ->   1
--- similar with an useful coefficient, one side only
-ctmx580 comparetotmag  0.000000987654321     1E-15     ->   1
-ctmx581 comparetotmag  0.000000987654321     1E-14     ->   1
-ctmx582 comparetotmag  0.000000987654321     1E-13     ->   1
-ctmx583 comparetotmag  0.000000987654321     1E-12     ->   1
-ctmx584 comparetotmag  0.000000987654321     1E-11     ->   1
-ctmx585 comparetotmag  0.000000987654321     1E-10     ->   1
-ctmx586 comparetotmag  0.000000987654321     1E-9      ->   1
-ctmx587 comparetotmag  0.000000987654321     1E-8      ->   1
-ctmx588 comparetotmag  0.000000987654321     1E-7      ->   1
-ctmx589 comparetotmag  0.000000987654321     1E-6      ->  -1
-ctmx590 comparetotmag  0.000000987654321     1E-5      ->  -1
-ctmx591 comparetotmag  0.000000987654321     1E-4      ->  -1
-ctmx592 comparetotmag  0.000000987654321     1E-3      ->  -1
-ctmx593 comparetotmag  0.000000987654321     1E-2      ->  -1
-ctmx594 comparetotmag  0.000000987654321     1E-1      ->  -1
-ctmx595 comparetotmag  0.000000987654321     1E-0      ->  -1
-ctmx596 comparetotmag  0.000000987654321     1E+1      ->  -1
-ctmx597 comparetotmag  0.000000987654321     1E+2      ->  -1
-ctmx598 comparetotmag  0.000000987654321     1E+3      ->  -1
-ctmx599 comparetotmag  0.000000987654321     1E+4      ->  -1
-
--- check some unit-y traps
-precision: 20
-ctmx600 comparetotmag   12            12.2345  ->  -1
-ctmx601 comparetotmag   12.0          12.2345  ->  -1
-ctmx602 comparetotmag   12.00         12.2345  ->  -1
-ctmx603 comparetotmag   12.000        12.2345  ->  -1
-ctmx604 comparetotmag   12.0000       12.2345  ->  -1
-ctmx605 comparetotmag   12.00000      12.2345  ->  -1
-ctmx606 comparetotmag   12.000000     12.2345  ->  -1
-ctmx607 comparetotmag   12.0000000    12.2345  ->  -1
-ctmx608 comparetotmag   12.00000000   12.2345  ->  -1
-ctmx609 comparetotmag   12.000000000  12.2345  ->  -1
-ctmx610 comparetotmag   12.1234 12             ->   1
-ctmx611 comparetotmag   12.1234 12.0           ->   1
-ctmx612 comparetotmag   12.1234 12.00          ->   1
-ctmx613 comparetotmag   12.1234 12.000         ->   1
-ctmx614 comparetotmag   12.1234 12.0000        ->   1
-ctmx615 comparetotmag   12.1234 12.00000       ->   1
-ctmx616 comparetotmag   12.1234 12.000000      ->   1
-ctmx617 comparetotmag   12.1234 12.0000000     ->   1
-ctmx618 comparetotmag   12.1234 12.00000000    ->   1
-ctmx619 comparetotmag   12.1234 12.000000000   ->   1
-ctmx620 comparetotmag  -12           -12.2345  ->  -1
-ctmx621 comparetotmag  -12.0         -12.2345  ->  -1
-ctmx622 comparetotmag  -12.00        -12.2345  ->  -1
-ctmx623 comparetotmag  -12.000       -12.2345  ->  -1
-ctmx624 comparetotmag  -12.0000      -12.2345  ->  -1
-ctmx625 comparetotmag  -12.00000     -12.2345  ->  -1
-ctmx626 comparetotmag  -12.000000    -12.2345  ->  -1
-ctmx627 comparetotmag  -12.0000000   -12.2345  ->  -1
-ctmx628 comparetotmag  -12.00000000  -12.2345  ->  -1
-ctmx629 comparetotmag  -12.000000000 -12.2345  ->  -1
-ctmx630 comparetotmag  -12.1234 -12            ->   1
-ctmx631 comparetotmag  -12.1234 -12.0          ->   1
-ctmx632 comparetotmag  -12.1234 -12.00         ->   1
-ctmx633 comparetotmag  -12.1234 -12.000        ->   1
-ctmx634 comparetotmag  -12.1234 -12.0000       ->   1
-ctmx635 comparetotmag  -12.1234 -12.00000      ->   1
-ctmx636 comparetotmag  -12.1234 -12.000000     ->   1
-ctmx637 comparetotmag  -12.1234 -12.0000000    ->   1
-ctmx638 comparetotmag  -12.1234 -12.00000000   ->   1
-ctmx639 comparetotmag  -12.1234 -12.000000000  ->   1
-precision: 9
-
--- extended zeros
-ctmx640 comparetotmag   0     0    ->   0
-ctmx641 comparetotmag   0    -0    ->   0
-ctmx642 comparetotmag   0    -0.0  ->   1
-ctmx643 comparetotmag   0     0.0  ->   1
-ctmx644 comparetotmag  -0     0    ->   0
-ctmx645 comparetotmag  -0    -0    ->   0
-ctmx646 comparetotmag  -0    -0.0  ->   1
-ctmx647 comparetotmag  -0     0.0  ->   1
-ctmx648 comparetotmag   0.0   0    ->  -1
-ctmx649 comparetotmag   0.0  -0    ->  -1
-ctmx650 comparetotmag   0.0  -0.0  ->   0
-ctmx651 comparetotmag   0.0   0.0  ->   0
-ctmx652 comparetotmag  -0.0   0    ->  -1
-ctmx653 comparetotmag  -0.0  -0    ->  -1
-ctmx654 comparetotmag  -0.0  -0.0  ->   0
-ctmx655 comparetotmag  -0.0   0.0  ->   0
-
-ctmx656 comparetotmag  -0E1   0.0  ->   1
-ctmx657 comparetotmag  -0E2   0.0  ->   1
-ctmx658 comparetotmag   0E1   0.0  ->   1
-ctmx659 comparetotmag   0E2   0.0  ->   1
-ctmx660 comparetotmag  -0E1   0    ->   1
-ctmx661 comparetotmag  -0E2   0    ->   1
-ctmx662 comparetotmag   0E1   0    ->   1
-ctmx663 comparetotmag   0E2   0    ->   1
-ctmx664 comparetotmag  -0E1  -0E1  ->   0
-ctmx665 comparetotmag  -0E2  -0E1  ->   1
-ctmx666 comparetotmag   0E1  -0E1  ->   0
-ctmx667 comparetotmag   0E2  -0E1  ->   1
-ctmx668 comparetotmag  -0E1  -0E2  ->  -1
-ctmx669 comparetotmag  -0E2  -0E2  ->   0
-ctmx670 comparetotmag   0E1  -0E2  ->  -1
-ctmx671 comparetotmag   0E2  -0E2  ->   0
-ctmx672 comparetotmag  -0E1   0E1  ->   0
-ctmx673 comparetotmag  -0E2   0E1  ->   1
-ctmx674 comparetotmag   0E1   0E1  ->   0
-ctmx675 comparetotmag   0E2   0E1  ->   1
-ctmx676 comparetotmag  -0E1   0E2  ->  -1
-ctmx677 comparetotmag  -0E2   0E2  ->   0
-ctmx678 comparetotmag   0E1   0E2  ->  -1
-ctmx679 comparetotmag   0E2   0E2  ->   0
-
--- trailing zeros; unit-y
-precision: 20
-ctmx680 comparetotmag   12    12            ->   0
-ctmx681 comparetotmag   12    12.0          ->   1
-ctmx682 comparetotmag   12    12.00         ->   1
-ctmx683 comparetotmag   12    12.000        ->   1
-ctmx684 comparetotmag   12    12.0000       ->   1
-ctmx685 comparetotmag   12    12.00000      ->   1
-ctmx686 comparetotmag   12    12.000000     ->   1
-ctmx687 comparetotmag   12    12.0000000    ->   1
-ctmx688 comparetotmag   12    12.00000000   ->   1
-ctmx689 comparetotmag   12    12.000000000  ->   1
-ctmx690 comparetotmag   12              12  ->   0
-ctmx691 comparetotmag   12.0            12  ->  -1
-ctmx692 comparetotmag   12.00           12  ->  -1
-ctmx693 comparetotmag   12.000          12  ->  -1
-ctmx694 comparetotmag   12.0000         12  ->  -1
-ctmx695 comparetotmag   12.00000        12  ->  -1
-ctmx696 comparetotmag   12.000000       12  ->  -1
-ctmx697 comparetotmag   12.0000000      12  ->  -1
-ctmx698 comparetotmag   12.00000000     12  ->  -1
-ctmx699 comparetotmag   12.000000000    12  ->  -1
-
--- long operand checks
-maxexponent: 999
-minexponent: -999
-precision: 9
-ctmx701 comparetotmag 12345678000  1  ->   1
-ctmx702 comparetotmag 1 12345678000   ->  -1
-ctmx703 comparetotmag 1234567800   1  ->   1
-ctmx704 comparetotmag 1 1234567800    ->  -1
-ctmx705 comparetotmag 1234567890   1  ->   1
-ctmx706 comparetotmag 1 1234567890    ->  -1
-ctmx707 comparetotmag 1234567891   1  ->   1
-ctmx708 comparetotmag 1 1234567891    ->  -1
-ctmx709 comparetotmag 12345678901  1  ->   1
-ctmx710 comparetotmag 1 12345678901   ->  -1
-ctmx711 comparetotmag 1234567896   1  ->   1
-ctmx712 comparetotmag 1 1234567896    ->  -1
-ctmx713 comparetotmag -1234567891  1  ->   1
-ctmx714 comparetotmag 1 -1234567891   ->  -1
-ctmx715 comparetotmag -12345678901 1  ->   1
-ctmx716 comparetotmag 1 -12345678901  ->  -1
-ctmx717 comparetotmag -1234567896  1  ->   1
-ctmx718 comparetotmag 1 -1234567896   ->  -1
-
-precision: 15
--- same with plenty of precision
-ctmx721 comparetotmag 12345678000 1  ->   1
-ctmx722 comparetotmag 1 12345678000  ->  -1
-ctmx723 comparetotmag 1234567800  1  ->   1
-ctmx724 comparetotmag 1 1234567800   ->  -1
-ctmx725 comparetotmag 1234567890  1  ->   1
-ctmx726 comparetotmag 1 1234567890   ->  -1
-ctmx727 comparetotmag 1234567891  1  ->   1
-ctmx728 comparetotmag 1 1234567891   ->  -1
-ctmx729 comparetotmag 12345678901 1  ->   1
-ctmx730 comparetotmag 1 12345678901  ->  -1
-ctmx731 comparetotmag 1234567896  1  ->   1
-ctmx732 comparetotmag 1 1234567896   ->  -1
-
--- residue cases
-precision: 5
-ctmx740 comparetotmag  1  0.9999999   ->   1
-ctmx741 comparetotmag  1  0.999999    ->   1
-ctmx742 comparetotmag  1  0.99999     ->   1
-ctmx743 comparetotmag  1  1.0000      ->   1
-ctmx744 comparetotmag  1  1.00001     ->  -1
-ctmx745 comparetotmag  1  1.000001    ->  -1
-ctmx746 comparetotmag  1  1.0000001   ->  -1
-ctmx750 comparetotmag  0.9999999  1   ->  -1
-ctmx751 comparetotmag  0.999999   1   ->  -1
-ctmx752 comparetotmag  0.99999    1   ->  -1
-ctmx753 comparetotmag  1.0000     1   ->  -1
-ctmx754 comparetotmag  1.00001    1   ->   1
-ctmx755 comparetotmag  1.000001   1   ->   1
-ctmx756 comparetotmag  1.0000001  1   ->   1
-
--- a selection of longies
-ctmx760 comparetotmag -36852134.84194296250843579428931 -5830629.8347085025808756560357940  ->   1
-ctmx761 comparetotmag -36852134.84194296250843579428931 -36852134.84194296250843579428931   ->   0
-ctmx762 comparetotmag -36852134.94194296250843579428931 -36852134.84194296250843579428931   ->   1
-ctmx763 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1
--- precisions above or below the difference should have no effect
-precision:   11
-ctmx764 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1
-precision:   10
-ctmx765 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1
-precision:    9
-ctmx766 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1
-precision:    8
-ctmx767 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1
-precision:    7
-ctmx768 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1
-precision:    6
-ctmx769 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1
-precision:    5
-ctmx770 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1
-precision:    4
-ctmx771 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1
-precision:    3
-ctmx772 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1
-precision:    2
-ctmx773 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1
-precision:    1
-ctmx774 comparetotmag -36852134.84194296250843579428931 -36852134.94194296250843579428931   ->  -1
-
--- Specials
-precision:   9
-ctmx780 comparetotmag  Inf  -Inf   ->  0
-ctmx781 comparetotmag  Inf  -1000  ->  1
-ctmx782 comparetotmag  Inf  -1     ->  1
-ctmx783 comparetotmag  Inf  -0     ->  1
-ctmx784 comparetotmag  Inf   0     ->  1
-ctmx785 comparetotmag  Inf   1     ->  1
-ctmx786 comparetotmag  Inf   1000  ->  1
-ctmx787 comparetotmag  Inf   Inf   ->  0
-ctmx788 comparetotmag -1000  Inf   -> -1
-ctmx789 comparetotmag -Inf   Inf   ->  0
-ctmx790 comparetotmag -1     Inf   -> -1
-ctmx791 comparetotmag -0     Inf   -> -1
-ctmx792 comparetotmag  0     Inf   -> -1
-ctmx793 comparetotmag  1     Inf   -> -1
-ctmx794 comparetotmag  1000  Inf   -> -1
-ctmx795 comparetotmag  Inf   Inf   ->  0
-
-ctmx800 comparetotmag -Inf  -Inf   ->  0
-ctmx801 comparetotmag -Inf  -1000  ->  1
-ctmx802 comparetotmag -Inf  -1     ->  1
-ctmx803 comparetotmag -Inf  -0     ->  1
-ctmx804 comparetotmag -Inf   0     ->  1
-ctmx805 comparetotmag -Inf   1     ->  1
-ctmx806 comparetotmag -Inf   1000  ->  1
-ctmx807 comparetotmag -Inf   Inf   ->  0
-ctmx808 comparetotmag -Inf  -Inf   ->  0
-ctmx809 comparetotmag -1000 -Inf   -> -1
-ctmx810 comparetotmag -1    -Inf   -> -1
-ctmx811 comparetotmag -0    -Inf   -> -1
-ctmx812 comparetotmag  0    -Inf   -> -1
-ctmx813 comparetotmag  1    -Inf   -> -1
-ctmx814 comparetotmag  1000 -Inf   -> -1
-ctmx815 comparetotmag  Inf  -Inf   ->  0
-
-ctmx821 comparetotmag  NaN -Inf    ->  1
-ctmx822 comparetotmag  NaN -1000   ->  1
-ctmx823 comparetotmag  NaN -1      ->  1
-ctmx824 comparetotmag  NaN -0      ->  1
-ctmx825 comparetotmag  NaN  0      ->  1
-ctmx826 comparetotmag  NaN  1      ->  1
-ctmx827 comparetotmag  NaN  1000   ->  1
-ctmx828 comparetotmag  NaN  Inf    ->  1
-ctmx829 comparetotmag  NaN  NaN    ->  0
-ctmx830 comparetotmag -Inf  NaN    ->  -1
-ctmx831 comparetotmag -1000 NaN    ->  -1
-ctmx832 comparetotmag -1    NaN    ->  -1
-ctmx833 comparetotmag -0    NaN    ->  -1
-ctmx834 comparetotmag  0    NaN    ->  -1
-ctmx835 comparetotmag  1    NaN    ->  -1
-ctmx836 comparetotmag  1000 NaN    ->  -1
-ctmx837 comparetotmag  Inf  NaN    ->  -1
-ctmx838 comparetotmag -NaN -NaN    ->  0
-ctmx839 comparetotmag +NaN -NaN    ->  0
-ctmx840 comparetotmag -NaN +NaN    ->  0
-
-ctmx841 comparetotmag  sNaN -sNaN  ->  0
-ctmx842 comparetotmag  sNaN -NaN   ->  -1
-ctmx843 comparetotmag  sNaN -Inf   ->  1
-ctmx844 comparetotmag  sNaN -1000  ->  1
-ctmx845 comparetotmag  sNaN -1     ->  1
-ctmx846 comparetotmag  sNaN -0     ->  1
-ctmx847 comparetotmag  sNaN  0     ->  1
-ctmx848 comparetotmag  sNaN  1     ->  1
-ctmx849 comparetotmag  sNaN  1000  ->  1
-ctmx850 comparetotmag  sNaN  NaN   ->  -1
-ctmx851 comparetotmag  sNaN sNaN   ->  0
-
-ctmx852 comparetotmag -sNaN sNaN   ->  0
-ctmx853 comparetotmag -NaN  sNaN   ->  1
-ctmx854 comparetotmag -Inf  sNaN   ->  -1
-ctmx855 comparetotmag -1000 sNaN   ->  -1
-ctmx856 comparetotmag -1    sNaN   ->  -1
-ctmx857 comparetotmag -0    sNaN   ->  -1
-ctmx858 comparetotmag  0    sNaN   ->  -1
-ctmx859 comparetotmag  1    sNaN   ->  -1
-ctmx860 comparetotmag  1000 sNaN   ->  -1
-ctmx861 comparetotmag  Inf  sNaN   ->  -1
-ctmx862 comparetotmag  NaN  sNaN   ->  1
-ctmx863 comparetotmag  sNaN sNaN   ->  0
-
-ctmx871 comparetotmag  -sNaN -sNaN  ->  0
-ctmx872 comparetotmag  -sNaN -NaN   ->  -1
-ctmx873 comparetotmag  -sNaN -Inf   ->  1
-ctmx874 comparetotmag  -sNaN -1000  ->  1
-ctmx875 comparetotmag  -sNaN -1     ->  1
-ctmx876 comparetotmag  -sNaN -0     ->  1
-ctmx877 comparetotmag  -sNaN  0     ->  1
-ctmx878 comparetotmag  -sNaN  1     ->  1
-ctmx879 comparetotmag  -sNaN  1000  ->  1
-ctmx880 comparetotmag  -sNaN  NaN   ->  -1
-ctmx881 comparetotmag  -sNaN sNaN   ->  0
-
-ctmx882 comparetotmag -sNaN -sNaN   ->  0
-ctmx883 comparetotmag -NaN  -sNaN   ->  1
-ctmx884 comparetotmag -Inf  -sNaN   ->  -1
-ctmx885 comparetotmag -1000 -sNaN   ->  -1
-ctmx886 comparetotmag -1    -sNaN   ->  -1
-ctmx887 comparetotmag -0    -sNaN   ->  -1
-ctmx888 comparetotmag  0    -sNaN   ->  -1
-ctmx889 comparetotmag  1    -sNaN   ->  -1
-ctmx890 comparetotmag  1000 -sNaN   ->  -1
-ctmx891 comparetotmag  Inf  -sNaN   ->  -1
-ctmx892 comparetotmag  NaN  -sNaN   ->  1
-ctmx893 comparetotmag  sNaN -sNaN   ->  0
-
--- NaNs with payload
-ctmx960 comparetotmag  NaN9 -Inf   ->  1
-ctmx961 comparetotmag  NaN8  999   ->  1
-ctmx962 comparetotmag  NaN77 Inf   ->  1
-ctmx963 comparetotmag -NaN67 NaN5  ->  1
-ctmx964 comparetotmag -Inf  -NaN4  ->  -1
-ctmx965 comparetotmag -999  -NaN33 ->  -1
-ctmx966 comparetotmag  Inf   NaN2  ->  -1
-
-ctmx970 comparetotmag -NaN41 -NaN42 -> -1
-ctmx971 comparetotmag +NaN41 -NaN42 -> -1
-ctmx972 comparetotmag -NaN41 +NaN42 -> -1
-ctmx973 comparetotmag +NaN41 +NaN42 -> -1
-ctmx974 comparetotmag -NaN42 -NaN01 ->  1
-ctmx975 comparetotmag +NaN42 -NaN01 ->  1
-ctmx976 comparetotmag -NaN42 +NaN01 ->  1
-ctmx977 comparetotmag +NaN42 +NaN01 ->  1
-
-ctmx980 comparetotmag -sNaN771 -sNaN772 -> -1
-ctmx981 comparetotmag +sNaN771 -sNaN772 -> -1
-ctmx982 comparetotmag -sNaN771 +sNaN772 -> -1
-ctmx983 comparetotmag +sNaN771 +sNaN772 -> -1
-ctmx984 comparetotmag -sNaN772 -sNaN771 ->  1
-ctmx985 comparetotmag +sNaN772 -sNaN771 ->  1
-ctmx986 comparetotmag -sNaN772 +sNaN771 ->  1
-ctmx987 comparetotmag +sNaN772 +sNaN771 ->  1
-
-ctmx991 comparetotmag -sNaN99 -Inf    ->  1
-ctmx992 comparetotmag  sNaN98 -11     ->  1
-ctmx993 comparetotmag  sNaN97  NaN    -> -1
-ctmx994 comparetotmag  sNaN16 sNaN94  -> -1
-ctmx995 comparetotmag  NaN85  sNaN83  ->  1
-ctmx996 comparetotmag -Inf    sNaN92  -> -1
-ctmx997 comparetotmag  088    sNaN81  -> -1
-ctmx998 comparetotmag  Inf    sNaN90  -> -1
-ctmx999 comparetotmag  NaN   -sNaN89  ->  1
-
--- overflow and underflow tests .. subnormal results now allowed
-maxExponent: 999999999
-minexponent: -999999999
-ctmx1080 comparetotmag +1.23456789012345E-0 9E+999999999  ->  -1
-ctmx1081 comparetotmag 9E+999999999 +1.23456789012345E-0  ->   1
-ctmx1082 comparetotmag +0.100 9E-999999999                ->   1
-ctmx1083 comparetotmag 9E-999999999 +0.100                ->  -1
-ctmx1085 comparetotmag -1.23456789012345E-0 9E+999999999  ->  -1
-ctmx1086 comparetotmag 9E+999999999 -1.23456789012345E-0  ->   1
-ctmx1087 comparetotmag -0.100 9E-999999999                ->   1
-ctmx1088 comparetotmag 9E-999999999 -0.100                ->  -1
-
-ctmx1089 comparetotmag 1e-599999999 1e-400000001    ->  -1
-ctmx1090 comparetotmag 1e-599999999 1e-400000000    ->  -1
-ctmx1091 comparetotmag 1e-600000000 1e-400000000    ->  -1
-ctmx1092 comparetotmag 9e-999999998 0.01            ->  -1
-ctmx1093 comparetotmag 9e-999999998 0.1             ->  -1
-ctmx1094 comparetotmag 0.01 9e-999999998            ->   1
-ctmx1095 comparetotmag 1e599999999 1e400000001      ->   1
-ctmx1096 comparetotmag 1e599999999 1e400000000      ->   1
-ctmx1097 comparetotmag 1e600000000 1e400000000      ->   1
-ctmx1098 comparetotmag 9e999999998 100              ->   1
-ctmx1099 comparetotmag 9e999999998 10               ->   1
-ctmx1100 comparetotmag 100  9e999999998             ->  -1
--- signs
-ctmx1101 comparetotmag  1e+777777777  1e+411111111  ->   1
-ctmx1102 comparetotmag  1e+777777777 -1e+411111111  ->   1
-ctmx1103 comparetotmag -1e+777777777  1e+411111111  ->   1
-ctmx1104 comparetotmag -1e+777777777 -1e+411111111  ->   1
-ctmx1105 comparetotmag  1e-777777777  1e-411111111  ->  -1
-ctmx1106 comparetotmag  1e-777777777 -1e-411111111  ->  -1
-ctmx1107 comparetotmag -1e-777777777  1e-411111111  ->  -1
-ctmx1108 comparetotmag -1e-777777777 -1e-411111111  ->  -1
-
--- spread zeros
-ctmx1110 comparetotmag   0E-383  0        ->  -1
-ctmx1111 comparetotmag   0E-383 -0        ->  -1
-ctmx1112 comparetotmag  -0E-383  0        ->  -1
-ctmx1113 comparetotmag  -0E-383 -0        ->  -1
-ctmx1114 comparetotmag   0E-383  0E+384   ->  -1
-ctmx1115 comparetotmag   0E-383 -0E+384   ->  -1
-ctmx1116 comparetotmag  -0E-383  0E+384   ->  -1
-ctmx1117 comparetotmag  -0E-383 -0E+384   ->  -1
-ctmx1118 comparetotmag   0       0E+384   ->  -1
-ctmx1119 comparetotmag   0      -0E+384   ->  -1
-ctmx1120 comparetotmag  -0       0E+384   ->  -1
-ctmx1121 comparetotmag  -0      -0E+384   ->  -1
-
-ctmx1130 comparetotmag   0E+384  0        ->   1
-ctmx1131 comparetotmag   0E+384 -0        ->   1
-ctmx1132 comparetotmag  -0E+384  0        ->   1
-ctmx1133 comparetotmag  -0E+384 -0        ->   1
-ctmx1134 comparetotmag   0E+384  0E-383   ->   1
-ctmx1135 comparetotmag   0E+384 -0E-383   ->   1
-ctmx1136 comparetotmag  -0E+384  0E-383   ->   1
-ctmx1137 comparetotmag  -0E+384 -0E-383   ->   1
-ctmx1138 comparetotmag   0       0E-383   ->   1
-ctmx1139 comparetotmag   0      -0E-383   ->   1
-ctmx1140 comparetotmag  -0       0E-383   ->   1
-ctmx1141 comparetotmag  -0      -0E-383   ->   1
-
--- Null tests
-ctmx9990 comparetotmag 10  # -> NaN Invalid_operation
-ctmx9991 comparetotmag  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copy.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copy.decTest
deleted file mode 100644
index b47e499..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copy.decTest
+++ /dev/null
@@ -1,86 +0,0 @@
-------------------------------------------------------------------------
--- copy.decTest -- quiet copy                                         --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minExponent: -999
-
--- Sanity check
-cpyx001 copy       +7.50  -> 7.50
-
--- Infinities
-cpyx011 copy  Infinity    -> Infinity
-cpyx012 copy  -Infinity   -> -Infinity
-
--- NaNs, 0 payload
-cpyx021 copy         NaN  -> NaN
-cpyx022 copy        -NaN  -> -NaN
-cpyx023 copy        sNaN  -> sNaN
-cpyx024 copy       -sNaN  -> -sNaN
-
--- NaNs, non-0 payload
-cpyx031 copy       NaN10  -> NaN10
-cpyx032 copy      -NaN10  -> -NaN10
-cpyx033 copy      sNaN10  -> sNaN10
-cpyx034 copy     -sNaN10  -> -sNaN10
-cpyx035 copy       NaN7   -> NaN7
-cpyx036 copy      -NaN7   -> -NaN7
-cpyx037 copy      sNaN101 -> sNaN101
-cpyx038 copy     -sNaN101 -> -sNaN101
-
--- finites
-cpyx101 copy          7   -> 7
-cpyx102 copy         -7   -> -7
-cpyx103 copy         75   -> 75
-cpyx104 copy        -75   -> -75
-cpyx105 copy       7.50   -> 7.50
-cpyx106 copy      -7.50   -> -7.50
-cpyx107 copy       7.500  -> 7.500
-cpyx108 copy      -7.500  -> -7.500
-
--- zeros
-cpyx111 copy          0   -> 0
-cpyx112 copy         -0   -> -0
-cpyx113 copy       0E+4   -> 0E+4
-cpyx114 copy      -0E+4   -> -0E+4
-cpyx115 copy     0.0000   -> 0.0000
-cpyx116 copy    -0.0000   -> -0.0000
-cpyx117 copy      0E-141  -> 0E-141
-cpyx118 copy     -0E-141  -> -0E-141
-
--- full coefficients, alternating bits
-cpyx121 copy   268268268        -> 268268268
-cpyx122 copy  -268268268        -> -268268268
-cpyx123 copy   134134134        -> 134134134
-cpyx124 copy  -134134134        -> -134134134
-
--- Nmax, Nmin, Ntiny
-cpyx131 copy  9.99999999E+999   -> 9.99999999E+999
-cpyx132 copy  1E-999            -> 1E-999
-cpyx133 copy  1.00000000E-999   -> 1.00000000E-999
-cpyx134 copy  1E-1007           -> 1E-1007
-
-cpyx135 copy  -1E-1007          -> -1E-1007
-cpyx136 copy  -1.00000000E-999  -> -1.00000000E-999
-cpyx137 copy  -1E-999           -> -1E-999
-cpyx138 copy  -9.99999999E+999  -> -9.99999999E+999
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copyabs.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copyabs.decTest
deleted file mode 100644
index f7d0f86..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copyabs.decTest
+++ /dev/null
@@ -1,86 +0,0 @@
-------------------------------------------------------------------------
--- copyAbs.decTest -- quiet copy and set sign to zero                 --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minExponent: -999
-
--- Sanity check
-cpax001 copyabs       +7.50  -> 7.50
-
--- Infinities
-cpax011 copyabs  Infinity    -> Infinity
-cpax012 copyabs  -Infinity   -> Infinity
-
--- NaNs, 0 payload
-cpax021 copyabs         NaN  -> NaN
-cpax022 copyabs        -NaN  -> NaN
-cpax023 copyabs        sNaN  -> sNaN
-cpax024 copyabs       -sNaN  -> sNaN
-
--- NaNs, non-0 payload
-cpax031 copyabs       NaN10  -> NaN10
-cpax032 copyabs      -NaN15  -> NaN15
-cpax033 copyabs      sNaN15  -> sNaN15
-cpax034 copyabs     -sNaN10  -> sNaN10
-cpax035 copyabs       NaN7   -> NaN7
-cpax036 copyabs      -NaN7   -> NaN7
-cpax037 copyabs      sNaN101 -> sNaN101
-cpax038 copyabs     -sNaN101 -> sNaN101
-
--- finites
-cpax101 copyabs          7   -> 7
-cpax102 copyabs         -7   -> 7
-cpax103 copyabs         75   -> 75
-cpax104 copyabs        -75   -> 75
-cpax105 copyabs       7.10   -> 7.10
-cpax106 copyabs      -7.10   -> 7.10
-cpax107 copyabs       7.500  -> 7.500
-cpax108 copyabs      -7.500  -> 7.500
-
--- zeros
-cpax111 copyabs          0   -> 0
-cpax112 copyabs         -0   -> 0
-cpax113 copyabs       0E+6   -> 0E+6
-cpax114 copyabs      -0E+6   -> 0E+6
-cpax115 copyabs     0.0000   -> 0.0000
-cpax116 copyabs    -0.0000   -> 0.0000
-cpax117 copyabs      0E-141  -> 0E-141
-cpax118 copyabs     -0E-141  -> 0E-141
-
--- full coefficients, alternating bits
-cpax121 copyabs   268268268        -> 268268268
-cpax122 copyabs  -268268268        -> 268268268
-cpax123 copyabs   134134134        -> 134134134
-cpax124 copyabs  -134134134        -> 134134134
-
--- Nmax, Nmin, Ntiny
-cpax131 copyabs  9.99999999E+999   -> 9.99999999E+999
-cpax132 copyabs  1E-999            -> 1E-999
-cpax133 copyabs  1.00000000E-999   -> 1.00000000E-999
-cpax134 copyabs  1E-1007           -> 1E-1007
-
-cpax135 copyabs  -1E-1007          -> 1E-1007
-cpax136 copyabs  -1.00000000E-999  -> 1.00000000E-999
-cpax137 copyabs  -1E-999           -> 1E-999
-cpax199 copyabs  -9.99999999E+999  -> 9.99999999E+999
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copynegate.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copynegate.decTest
deleted file mode 100644
index 38235b6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copynegate.decTest
+++ /dev/null
@@ -1,86 +0,0 @@
-------------------------------------------------------------------------
--- copyNegate.decTest -- quiet copy and negate                        --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minExponent: -999
-
--- Sanity check
-cpnx001 copynegate       +7.50  -> -7.50
-
--- Infinities
-cpnx011 copynegate  Infinity    -> -Infinity
-cpnx012 copynegate  -Infinity   -> Infinity
-
--- NaNs, 0 payload
-cpnx021 copynegate         NaN  -> -NaN
-cpnx022 copynegate        -NaN  -> NaN
-cpnx023 copynegate        sNaN  -> -sNaN
-cpnx024 copynegate       -sNaN  -> sNaN
-
--- NaNs, non-0 payload
-cpnx031 copynegate       NaN13  -> -NaN13
-cpnx032 copynegate      -NaN13  -> NaN13
-cpnx033 copynegate      sNaN13  -> -sNaN13
-cpnx034 copynegate     -sNaN13  -> sNaN13
-cpnx035 copynegate       NaN70  -> -NaN70
-cpnx036 copynegate      -NaN70  -> NaN70
-cpnx037 copynegate      sNaN101 -> -sNaN101
-cpnx038 copynegate     -sNaN101 -> sNaN101
-
--- finites
-cpnx101 copynegate          7   -> -7
-cpnx102 copynegate         -7   -> 7
-cpnx103 copynegate         75   -> -75
-cpnx104 copynegate        -75   -> 75
-cpnx105 copynegate       7.50   -> -7.50
-cpnx106 copynegate      -7.50   -> 7.50
-cpnx107 copynegate       7.500  -> -7.500
-cpnx108 copynegate      -7.500  -> 7.500
-
--- zeros
-cpnx111 copynegate          0   -> -0
-cpnx112 copynegate         -0   -> 0
-cpnx113 copynegate       0E+4   -> -0E+4
-cpnx114 copynegate      -0E+4   -> 0E+4
-cpnx115 copynegate     0.0000   -> -0.0000
-cpnx116 copynegate    -0.0000   -> 0.0000
-cpnx117 copynegate      0E-141  -> -0E-141
-cpnx118 copynegate     -0E-141  -> 0E-141
-
--- full coefficients, alternating bits
-cpnx121 copynegate  268268268         -> -268268268
-cpnx122 copynegate  -268268268        -> 268268268
-cpnx123 copynegate  134134134         -> -134134134
-cpnx124 copynegate  -134134134        -> 134134134
-
--- Nmax, Nmin, Ntiny
-cpnx131 copynegate  9.99999999E+999   -> -9.99999999E+999
-cpnx132 copynegate  1E-999                     -> -1E-999
-cpnx133 copynegate  1.00000000E-999   -> -1.00000000E-999
-cpnx134 copynegate  1E-1007                    -> -1E-1007
-
-cpnx135 copynegate  -1E-1007                   -> 1E-1007
-cpnx136 copynegate  -1.00000000E-999  -> 1.00000000E-999
-cpnx137 copynegate  -1E-999                    -> 1E-999
-cpnx138 copynegate  -9.99999999E+999  -> 9.99999999E+999
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copysign.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copysign.decTest
deleted file mode 100644
index 8061a42..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/copysign.decTest
+++ /dev/null
@@ -1,177 +0,0 @@
-------------------------------------------------------------------------
--- copysign.decTest -- quiet copy with sign from rhs                  --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minExponent: -999
-
--- Sanity check, and examples from decArith
-cpsx001 copysign   +7.50       11  -> 7.50
-cpsx002 copysign   '1.50'   '7.33' -> 1.50
-cpsx003 copysign  '-1.50'   '7.33' -> 1.50
-cpsx004 copysign   '1.50'  '-7.33' -> -1.50
-cpsx005 copysign  '-1.50'  '-7.33' -> -1.50
-
--- Infinities
-cpsx011 copysign  Infinity       11 -> Infinity
-cpsx012 copysign  -Infinity      11 -> Infinity
-
--- NaNs, 0 payload
-cpsx021 copysign         NaN     11 -> NaN
-cpsx022 copysign        -NaN     11 -> NaN
-cpsx023 copysign        sNaN     11 -> sNaN
-cpsx024 copysign       -sNaN     11 -> sNaN
-
--- NaNs, non-0 payload
-cpsx031 copysign       NaN10     11 -> NaN10
-cpsx032 copysign      -NaN10     11 -> NaN10
-cpsx033 copysign      sNaN10     11 -> sNaN10
-cpsx034 copysign     -sNaN10     11 -> sNaN10
-cpsx035 copysign       NaN7      11 -> NaN7
-cpsx036 copysign      -NaN7      11 -> NaN7
-cpsx037 copysign      sNaN101    11 -> sNaN101
-cpsx038 copysign     -sNaN101    11 -> sNaN101
-
--- finites
-cpsx101 copysign          7      11 -> 7
-cpsx102 copysign         -7      11 -> 7
-cpsx103 copysign         75      11 -> 75
-cpsx104 copysign        -75      11 -> 75
-cpsx105 copysign       7.50      11 -> 7.50
-cpsx106 copysign      -7.50      11 -> 7.50
-cpsx107 copysign       7.500     11 -> 7.500
-cpsx108 copysign      -7.500     11 -> 7.500
-
--- zeros
-cpsx111 copysign          0      11 -> 0
-cpsx112 copysign         -0      11 -> 0
-cpsx113 copysign       0E+4      11 -> 0E+4
-cpsx114 copysign      -0E+4      11 -> 0E+4
-cpsx115 copysign     0.0000      11 -> 0.0000
-cpsx116 copysign    -0.0000      11 -> 0.0000
-cpsx117 copysign      0E-141     11 -> 0E-141
-cpsx118 copysign     -0E-141     11 -> 0E-141
-
--- full coefficients, alternating bits
-cpsx121 copysign   268268268           11 -> 268268268
-cpsx122 copysign  -268268268           11 -> 268268268
-cpsx123 copysign   134134134           11 -> 134134134
-cpsx124 copysign  -134134134           11 -> 134134134
-
--- Nmax, Nmin, Ntiny
-cpsx131 copysign  9.99999999E+999      11 -> 9.99999999E+999
-cpsx132 copysign  1E-999               11 -> 1E-999
-cpsx133 copysign  1.00000000E-999      11 -> 1.00000000E-999
-cpsx134 copysign  1E-1007              11 -> 1E-1007
-
-cpsx135 copysign  -1E-1007             11 -> 1E-1007
-cpsx136 copysign  -1.00000000E-999     11 -> 1.00000000E-999
-cpsx137 copysign  -1E-999              11 -> 1E-999
-cpsx138 copysign  -9.99999999E+999     11 -> 9.99999999E+999
-
--- repeat with negative RHS
-
--- Infinities
-cpsx211 copysign  Infinity       -34 -> -Infinity
-cpsx212 copysign  -Infinity      -34 -> -Infinity
-
--- NaNs, 0 payload
-cpsx221 copysign         NaN     -34 -> -NaN
-cpsx222 copysign        -NaN     -34 -> -NaN
-cpsx223 copysign        sNaN     -34 -> -sNaN
-cpsx224 copysign       -sNaN     -34 -> -sNaN
-
--- NaNs, non-0 payload
-cpsx231 copysign       NaN10     -34 -> -NaN10
-cpsx232 copysign      -NaN10     -34 -> -NaN10
-cpsx233 copysign      sNaN10     -34 -> -sNaN10
-cpsx234 copysign     -sNaN10     -34 -> -sNaN10
-cpsx235 copysign       NaN7      -34 -> -NaN7
-cpsx236 copysign      -NaN7      -34 -> -NaN7
-cpsx237 copysign      sNaN101    -34 -> -sNaN101
-cpsx238 copysign     -sNaN101    -34 -> -sNaN101
-
--- finites
-cpsx301 copysign          7      -34 -> -7
-cpsx302 copysign         -7      -34 -> -7
-cpsx303 copysign         75      -34 -> -75
-cpsx304 copysign        -75      -34 -> -75
-cpsx305 copysign       7.50      -34 -> -7.50
-cpsx306 copysign      -7.50      -34 -> -7.50
-cpsx307 copysign       7.500     -34 -> -7.500
-cpsx308 copysign      -7.500     -34 -> -7.500
-
--- zeros
-cpsx311 copysign          0      -34 -> -0
-cpsx312 copysign         -0      -34 -> -0
-cpsx313 copysign       0E+4      -34 -> -0E+4
-cpsx314 copysign      -0E+4      -34 -> -0E+4
-cpsx315 copysign     0.0000      -34 -> -0.0000
-cpsx316 copysign    -0.0000      -34 -> -0.0000
-cpsx317 copysign      0E-141     -34 -> -0E-141
-cpsx318 copysign     -0E-141     -34 -> -0E-141
-
--- full coefficients, alternating bits
-cpsx321 copysign   268268268          -18 -> -268268268
-cpsx322 copysign  -268268268          -18 -> -268268268
-cpsx323 copysign   134134134          -18 -> -134134134
-cpsx324 copysign  -134134134          -18 -> -134134134
-
--- Nmax, Nmin, Ntiny
-cpsx331 copysign  9.99999999E+999     -18 -> -9.99999999E+999
-cpsx332 copysign  1E-999              -18 -> -1E-999
-cpsx333 copysign  1.00000000E-999     -18 -> -1.00000000E-999
-cpsx334 copysign  1E-1007             -18 -> -1E-1007
-
-cpsx335 copysign  -1E-1007            -18 -> -1E-1007
-cpsx336 copysign  -1.00000000E-999    -18 -> -1.00000000E-999
-cpsx337 copysign  -1E-999             -18 -> -1E-999
-cpsx338 copysign  -9.99999999E+999    -18 -> -9.99999999E+999
-
--- Other kinds of RHS
-cpsx401 copysign          701    -34 -> -701
-cpsx402 copysign         -720    -34 -> -720
-cpsx403 copysign          701    -0  -> -701
-cpsx404 copysign         -720    -0  -> -720
-cpsx405 copysign          701    +0  ->  701
-cpsx406 copysign         -720    +0  ->  720
-cpsx407 copysign          701    +34 ->  701
-cpsx408 copysign         -720    +34 ->  720
-
-cpsx413 copysign          701    -Inf  -> -701
-cpsx414 copysign         -720    -Inf  -> -720
-cpsx415 copysign          701    +Inf  ->  701
-cpsx416 copysign         -720    +Inf  ->  720
-
-cpsx420 copysign          701    -NaN  -> -701
-cpsx421 copysign         -720    -NaN  -> -720
-cpsx422 copysign          701    +NaN  ->  701
-cpsx423 copysign         -720    +NaN  ->  720
-cpsx425 copysign         -720    +NaN8 ->  720
-
-cpsx426 copysign          701    -sNaN  -> -701
-cpsx427 copysign         -720    -sNaN  -> -720
-cpsx428 copysign          701    +sNaN  ->  701
-cpsx429 copysign         -720    +sNaN  ->  720
-cpsx430 copysign         -720    +sNaN3 ->  720
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAbs.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAbs.decTest
deleted file mode 100644
index c6f5a7c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAbs.decTest
+++ /dev/null
@@ -1,126 +0,0 @@
-------------------------------------------------------------------------
--- ddAbs.decTest -- decDouble absolute value, heeding sNaN            --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
-ddabs001 abs '1'      -> '1'
-ddabs002 abs '-1'     -> '1'
-ddabs003 abs '1.00'   -> '1.00'
-ddabs004 abs '-1.00'  -> '1.00'
-ddabs005 abs '0'      -> '0'
-ddabs006 abs '0.00'   -> '0.00'
-ddabs007 abs '00.0'   -> '0.0'
-ddabs008 abs '00.00'  -> '0.00'
-ddabs009 abs '00'     -> '0'
-
-ddabs010 abs '-2'     -> '2'
-ddabs011 abs '2'      -> '2'
-ddabs012 abs '-2.00'  -> '2.00'
-ddabs013 abs '2.00'   -> '2.00'
-ddabs014 abs '-0'     -> '0'
-ddabs015 abs '-0.00'  -> '0.00'
-ddabs016 abs '-00.0'  -> '0.0'
-ddabs017 abs '-00.00' -> '0.00'
-ddabs018 abs '-00'    -> '0'
-
-ddabs020 abs '-2000000' -> '2000000'
-ddabs021 abs '2000000'  -> '2000000'
-
-ddabs030 abs '+0.1'            -> '0.1'
-ddabs031 abs '-0.1'            -> '0.1'
-ddabs032 abs '+0.01'           -> '0.01'
-ddabs033 abs '-0.01'           -> '0.01'
-ddabs034 abs '+0.001'          -> '0.001'
-ddabs035 abs '-0.001'          -> '0.001'
-ddabs036 abs '+0.000001'       -> '0.000001'
-ddabs037 abs '-0.000001'       -> '0.000001'
-ddabs038 abs '+0.000000000001' -> '1E-12'
-ddabs039 abs '-0.000000000001' -> '1E-12'
-
--- examples from decArith
-ddabs040 abs '2.1'     ->  '2.1'
-ddabs041 abs '-100'    ->  '100'
-ddabs042 abs '101.5'   ->  '101.5'
-ddabs043 abs '-101.5'  ->  '101.5'
-
--- more fixed, potential LHS swaps/overlays if done by subtract 0
-ddabs060 abs '-56267E-10'  -> '0.0000056267'
-ddabs061 abs '-56267E-5'   -> '0.56267'
-ddabs062 abs '-56267E-2'   -> '562.67'
-ddabs063 abs '-56267E-1'   -> '5626.7'
-ddabs065 abs '-56267E-0'   -> '56267'
-
--- subnormals and underflow
-
--- long operand tests
-ddabs321 abs 1234567890123456  -> 1234567890123456
-ddabs322 abs 12345678000  -> 12345678000
-ddabs323 abs 1234567800   -> 1234567800
-ddabs324 abs 1234567890   -> 1234567890
-ddabs325 abs 1234567891   -> 1234567891
-ddabs326 abs 12345678901  -> 12345678901
-ddabs327 abs 1234567896   -> 1234567896
-
--- zeros
-ddabs111 abs          0   -> 0
-ddabs112 abs         -0   -> 0
-ddabs113 abs       0E+6   -> 0E+6
-ddabs114 abs      -0E+6   -> 0E+6
-ddabs115 abs     0.0000   -> 0.0000
-ddabs116 abs    -0.0000   -> 0.0000
-ddabs117 abs      0E-141  -> 0E-141
-ddabs118 abs     -0E-141  -> 0E-141
-
--- full coefficients, alternating bits
-ddabs121 abs  2682682682682682         -> 2682682682682682
-ddabs122 abs  -2682682682682682        -> 2682682682682682
-ddabs123 abs  1341341341341341         -> 1341341341341341
-ddabs124 abs  -1341341341341341        -> 1341341341341341
-
--- Nmax, Nmin, Ntiny
-ddabs131 abs  9.999999999999999E+384   -> 9.999999999999999E+384
-ddabs132 abs  1E-383                   -> 1E-383
-ddabs133 abs  1.000000000000000E-383   -> 1.000000000000000E-383
-ddabs134 abs  1E-398                   -> 1E-398 Subnormal
-
-ddabs135 abs  -1E-398                  -> 1E-398 Subnormal
-ddabs136 abs  -1.000000000000000E-383  -> 1.000000000000000E-383
-ddabs137 abs  -1E-383                  -> 1E-383
-ddabs138 abs  -9.999999999999999E+384  -> 9.999999999999999E+384
-
--- specials
-ddabs520 abs 'Inf'    -> 'Infinity'
-ddabs521 abs '-Inf'   -> 'Infinity'
-ddabs522 abs   NaN    ->  NaN
-ddabs523 abs  sNaN    ->  NaN   Invalid_operation
-ddabs524 abs   NaN22  ->  NaN22
-ddabs525 abs  sNaN33  ->  NaN33 Invalid_operation
-ddabs526 abs  -NaN22  -> -NaN22
-ddabs527 abs -sNaN33  -> -NaN33 Invalid_operation
-
--- Null tests
-ddabs900 abs  # -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAdd.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAdd.decTest
deleted file mode 100644
index c0a25b3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAdd.decTest
+++ /dev/null
@@ -1,1328 +0,0 @@
-------------------------------------------------------------------------
--- ddAdd.decTest -- decDouble addition                                --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This set of tests are for decDoubles only; all arguments are
--- representable in a decDouble
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- [first group are 'quick confidence check']
-ddadd001 add 1       1       ->  2
-ddadd002 add 2       3       ->  5
-ddadd003 add '5.75'  '3.3'   ->  9.05
-ddadd004 add '5'     '-3'    ->  2
-ddadd005 add '-5'    '-3'    ->  -8
-ddadd006 add '-7'    '2.5'   ->  -4.5
-ddadd007 add '0.7'   '0.3'   ->  1.0
-ddadd008 add '1.25'  '1.25'  ->  2.50
-ddadd009 add '1.23456789'  '1.00000000' -> '2.23456789'
-ddadd010 add '1.23456789'  '1.00000011' -> '2.23456800'
-
---             1234567890123456      1234567890123456
-ddadd011 add '0.4444444444444446'  '0.5555555555555555' -> '1.000000000000000' Inexact Rounded
-ddadd012 add '0.4444444444444445'  '0.5555555555555555' -> '1.000000000000000' Rounded
-ddadd013 add '0.4444444444444444'  '0.5555555555555555' -> '0.9999999999999999'
-ddadd014 add   '4444444444444444' '0.49'   -> '4444444444444444' Inexact Rounded
-ddadd015 add   '4444444444444444' '0.499'  -> '4444444444444444' Inexact Rounded
-ddadd016 add   '4444444444444444' '0.4999' -> '4444444444444444' Inexact Rounded
-ddadd017 add   '4444444444444444' '0.5000' -> '4444444444444444' Inexact Rounded
-ddadd018 add   '4444444444444444' '0.5001' -> '4444444444444445' Inexact Rounded
-ddadd019 add   '4444444444444444' '0.501'  -> '4444444444444445' Inexact Rounded
-ddadd020 add   '4444444444444444' '0.51'   -> '4444444444444445' Inexact Rounded
-
-ddadd021 add 0 1 -> 1
-ddadd022 add 1 1 -> 2
-ddadd023 add 2 1 -> 3
-ddadd024 add 3 1 -> 4
-ddadd025 add 4 1 -> 5
-ddadd026 add 5 1 -> 6
-ddadd027 add 6 1 -> 7
-ddadd028 add 7 1 -> 8
-ddadd029 add 8 1 -> 9
-ddadd030 add 9 1 -> 10
-
--- some carrying effects
-ddadd031 add '0.9998'  '0.0000' -> '0.9998'
-ddadd032 add '0.9998'  '0.0001' -> '0.9999'
-ddadd033 add '0.9998'  '0.0002' -> '1.0000'
-ddadd034 add '0.9998'  '0.0003' -> '1.0001'
-
-ddadd035 add '70'  '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
-ddadd036 add '700'  '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
-ddadd037 add '7000'  '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
-ddadd038 add '70000'  '10000e+16' -> '1.000000000000001E+20' Inexact Rounded
-ddadd039 add '700000'  '10000e+16' -> '1.000000000000007E+20' Rounded
-
--- symmetry:
-ddadd040 add '10000e+16'  '70' -> '1.000000000000000E+20' Inexact Rounded
-ddadd041 add '10000e+16'  '700' -> '1.000000000000000E+20' Inexact Rounded
-ddadd042 add '10000e+16'  '7000' -> '1.000000000000000E+20' Inexact Rounded
-ddadd044 add '10000e+16'  '70000' -> '1.000000000000001E+20' Inexact Rounded
-ddadd045 add '10000e+16'  '700000' -> '1.000000000000007E+20' Rounded
-
--- same, without rounding
-ddadd046 add '10000e+9'  '7' -> '10000000000007'
-ddadd047 add '10000e+9'  '70' -> '10000000000070'
-ddadd048 add '10000e+9'  '700' -> '10000000000700'
-ddadd049 add '10000e+9'  '7000' -> '10000000007000'
-ddadd050 add '10000e+9'  '70000' -> '10000000070000'
-ddadd051 add '10000e+9'  '700000' -> '10000000700000'
-ddadd052 add '10000e+9'  '7000000' -> '10000007000000'
-
--- examples from decarith
-ddadd053 add '12' '7.00' -> '19.00'
-ddadd054 add '1.3' '-1.07' -> '0.23'
-ddadd055 add '1.3' '-1.30' -> '0.00'
-ddadd056 add '1.3' '-2.07' -> '-0.77'
-ddadd057 add '1E+2' '1E+4' -> '1.01E+4'
-
--- leading zero preservation
-ddadd061 add 1 '0.0001' -> '1.0001'
-ddadd062 add 1 '0.00001' -> '1.00001'
-ddadd063 add 1 '0.000001' -> '1.000001'
-ddadd064 add 1 '0.0000001' -> '1.0000001'
-ddadd065 add 1 '0.00000001' -> '1.00000001'
-
--- some funny zeros [in case of bad signum]
-ddadd070 add 1  0    -> 1
-ddadd071 add 1 0.    -> 1
-ddadd072 add 1  .0   -> 1.0
-ddadd073 add 1 0.0   -> 1.0
-ddadd074 add 1 0.00  -> 1.00
-ddadd075 add  0  1   -> 1
-ddadd076 add 0.  1   -> 1
-ddadd077 add  .0 1   -> 1.0
-ddadd078 add 0.0 1   -> 1.0
-ddadd079 add 0.00 1  -> 1.00
-
--- some carries
-ddadd080 add 999999998 1  -> 999999999
-ddadd081 add 999999999 1  -> 1000000000
-ddadd082 add  99999999 1  -> 100000000
-ddadd083 add   9999999 1  -> 10000000
-ddadd084 add    999999 1  -> 1000000
-ddadd085 add     99999 1  -> 100000
-ddadd086 add      9999 1  -> 10000
-ddadd087 add       999 1  -> 1000
-ddadd088 add        99 1  -> 100
-ddadd089 add         9 1  -> 10
-
-
--- more LHS swaps
-ddadd090 add '-56267E-10'   0 ->  '-0.0000056267'
-ddadd091 add '-56267E-6'    0 ->  '-0.056267'
-ddadd092 add '-56267E-5'    0 ->  '-0.56267'
-ddadd093 add '-56267E-4'    0 ->  '-5.6267'
-ddadd094 add '-56267E-3'    0 ->  '-56.267'
-ddadd095 add '-56267E-2'    0 ->  '-562.67'
-ddadd096 add '-56267E-1'    0 ->  '-5626.7'
-ddadd097 add '-56267E-0'    0 ->  '-56267'
-ddadd098 add '-5E-10'       0 ->  '-5E-10'
-ddadd099 add '-5E-7'        0 ->  '-5E-7'
-ddadd100 add '-5E-6'        0 ->  '-0.000005'
-ddadd101 add '-5E-5'        0 ->  '-0.00005'
-ddadd102 add '-5E-4'        0 ->  '-0.0005'
-ddadd103 add '-5E-1'        0 ->  '-0.5'
-ddadd104 add '-5E0'         0 ->  '-5'
-ddadd105 add '-5E1'         0 ->  '-50'
-ddadd106 add '-5E5'         0 ->  '-500000'
-ddadd107 add '-5E15'        0 ->  '-5000000000000000'
-ddadd108 add '-5E16'        0 ->  '-5.000000000000000E+16'  Rounded
-ddadd109 add '-5E17'        0 ->  '-5.000000000000000E+17'  Rounded
-ddadd110 add '-5E18'        0 ->  '-5.000000000000000E+18'  Rounded
-ddadd111 add '-5E100'       0 ->  '-5.000000000000000E+100' Rounded
-
--- more RHS swaps
-ddadd113 add 0  '-56267E-10' ->  '-0.0000056267'
-ddadd114 add 0  '-56267E-6'  ->  '-0.056267'
-ddadd116 add 0  '-56267E-5'  ->  '-0.56267'
-ddadd117 add 0  '-56267E-4'  ->  '-5.6267'
-ddadd119 add 0  '-56267E-3'  ->  '-56.267'
-ddadd120 add 0  '-56267E-2'  ->  '-562.67'
-ddadd121 add 0  '-56267E-1'  ->  '-5626.7'
-ddadd122 add 0  '-56267E-0'  ->  '-56267'
-ddadd123 add 0  '-5E-10'     ->  '-5E-10'
-ddadd124 add 0  '-5E-7'      ->  '-5E-7'
-ddadd125 add 0  '-5E-6'      ->  '-0.000005'
-ddadd126 add 0  '-5E-5'      ->  '-0.00005'
-ddadd127 add 0  '-5E-4'      ->  '-0.0005'
-ddadd128 add 0  '-5E-1'      ->  '-0.5'
-ddadd129 add 0  '-5E0'       ->  '-5'
-ddadd130 add 0  '-5E1'       ->  '-50'
-ddadd131 add 0  '-5E5'       ->  '-500000'
-ddadd132 add 0  '-5E15'      ->  '-5000000000000000'
-ddadd133 add 0  '-5E16'      ->  '-5.000000000000000E+16'   Rounded
-ddadd134 add 0  '-5E17'      ->  '-5.000000000000000E+17'   Rounded
-ddadd135 add 0  '-5E18'      ->  '-5.000000000000000E+18'   Rounded
-ddadd136 add 0  '-5E100'     ->  '-5.000000000000000E+100'  Rounded
-
--- related
-ddadd137 add  1  '0E-19'      ->  '1.000000000000000'  Rounded
-ddadd138 add -1  '0E-19'      ->  '-1.000000000000000' Rounded
-ddadd139 add '0E-19' 1        ->  '1.000000000000000'  Rounded
-ddadd140 add '0E-19' -1       ->  '-1.000000000000000' Rounded
-ddadd141 add 1E+11   0.0000   ->  '100000000000.0000'
-ddadd142 add 1E+11   0.00000  ->  '100000000000.0000'  Rounded
-ddadd143 add 0.000   1E+12    ->  '1000000000000.000'
-ddadd144 add 0.0000  1E+12    ->  '1000000000000.000'  Rounded
-
--- [some of the next group are really constructor tests]
-ddadd146 add '00.0'  0       ->  '0.0'
-ddadd147 add '0.00'  0       ->  '0.00'
-ddadd148 add  0      '0.00'  ->  '0.00'
-ddadd149 add  0      '00.0'  ->  '0.0'
-ddadd150 add '00.0'  '0.00'  ->  '0.00'
-ddadd151 add '0.00'  '00.0'  ->  '0.00'
-ddadd152 add '3'     '.3'    ->  '3.3'
-ddadd153 add '3.'    '.3'    ->  '3.3'
-ddadd154 add '3.0'   '.3'    ->  '3.3'
-ddadd155 add '3.00'  '.3'    ->  '3.30'
-ddadd156 add '3'     '3'     ->  '6'
-ddadd157 add '3'     '+3'    ->  '6'
-ddadd158 add '3'     '-3'    ->  '0'
-ddadd159 add '0.3'   '-0.3'  ->  '0.0'
-ddadd160 add '0.03'  '-0.03' ->  '0.00'
-
--- try borderline precision, with carries, etc.
-ddadd161 add '1E+12' '-1'    -> '999999999999'
-ddadd162 add '1E+12'  '1.11' -> '1000000000001.11'
-ddadd163 add '1.11'  '1E+12' -> '1000000000001.11'
-ddadd164 add '-1'    '1E+12' -> '999999999999'
-ddadd165 add '7E+12' '-1'    -> '6999999999999'
-ddadd166 add '7E+12'  '1.11' -> '7000000000001.11'
-ddadd167 add '1.11'  '7E+12' -> '7000000000001.11'
-ddadd168 add '-1'    '7E+12' -> '6999999999999'
-
-rounding: half_up
---           1.234567890123456      1234567890123456      1 234567890123456
-ddadd170 add '4.444444444444444'  '0.5555555555555567' -> '5.000000000000001' Inexact Rounded
-ddadd171 add '4.444444444444444'  '0.5555555555555566' -> '5.000000000000001' Inexact Rounded
-ddadd172 add '4.444444444444444'  '0.5555555555555565' -> '5.000000000000001' Inexact Rounded
-ddadd173 add '4.444444444444444'  '0.5555555555555564' -> '5.000000000000000' Inexact Rounded
-ddadd174 add '4.444444444444444'  '0.5555555555555553' -> '4.999999999999999' Inexact Rounded
-ddadd175 add '4.444444444444444'  '0.5555555555555552' -> '4.999999999999999' Inexact Rounded
-ddadd176 add '4.444444444444444'  '0.5555555555555551' -> '4.999999999999999' Inexact Rounded
-ddadd177 add '4.444444444444444'  '0.5555555555555550' -> '4.999999999999999' Rounded
-ddadd178 add '4.444444444444444'  '0.5555555555555545' -> '4.999999999999999' Inexact Rounded
-ddadd179 add '4.444444444444444'  '0.5555555555555544' -> '4.999999999999998' Inexact Rounded
-ddadd180 add '4.444444444444444'  '0.5555555555555543' -> '4.999999999999998' Inexact Rounded
-ddadd181 add '4.444444444444444'  '0.5555555555555542' -> '4.999999999999998' Inexact Rounded
-ddadd182 add '4.444444444444444'  '0.5555555555555541' -> '4.999999999999998' Inexact Rounded
-ddadd183 add '4.444444444444444'  '0.5555555555555540' -> '4.999999999999998' Rounded
-
--- and some more, including residue effects and different roundings
-rounding: half_up
-ddadd200 add '1234560123456789' 0             -> '1234560123456789'
-ddadd201 add '1234560123456789' 0.000000001   -> '1234560123456789' Inexact Rounded
-ddadd202 add '1234560123456789' 0.000001      -> '1234560123456789' Inexact Rounded
-ddadd203 add '1234560123456789' 0.1           -> '1234560123456789' Inexact Rounded
-ddadd204 add '1234560123456789' 0.4           -> '1234560123456789' Inexact Rounded
-ddadd205 add '1234560123456789' 0.49          -> '1234560123456789' Inexact Rounded
-ddadd206 add '1234560123456789' 0.499999      -> '1234560123456789' Inexact Rounded
-ddadd207 add '1234560123456789' 0.499999999   -> '1234560123456789' Inexact Rounded
-ddadd208 add '1234560123456789' 0.5           -> '1234560123456790' Inexact Rounded
-ddadd209 add '1234560123456789' 0.500000001   -> '1234560123456790' Inexact Rounded
-ddadd210 add '1234560123456789' 0.500001      -> '1234560123456790' Inexact Rounded
-ddadd211 add '1234560123456789' 0.51          -> '1234560123456790' Inexact Rounded
-ddadd212 add '1234560123456789' 0.6           -> '1234560123456790' Inexact Rounded
-ddadd213 add '1234560123456789' 0.9           -> '1234560123456790' Inexact Rounded
-ddadd214 add '1234560123456789' 0.99999       -> '1234560123456790' Inexact Rounded
-ddadd215 add '1234560123456789' 0.999999999   -> '1234560123456790' Inexact Rounded
-ddadd216 add '1234560123456789' 1             -> '1234560123456790'
-ddadd217 add '1234560123456789' 1.000000001   -> '1234560123456790' Inexact Rounded
-ddadd218 add '1234560123456789' 1.00001       -> '1234560123456790' Inexact Rounded
-ddadd219 add '1234560123456789' 1.1           -> '1234560123456790' Inexact Rounded
-
-rounding: half_even
-ddadd220 add '1234560123456789' 0             -> '1234560123456789'
-ddadd221 add '1234560123456789' 0.000000001   -> '1234560123456789' Inexact Rounded
-ddadd222 add '1234560123456789' 0.000001      -> '1234560123456789' Inexact Rounded
-ddadd223 add '1234560123456789' 0.1           -> '1234560123456789' Inexact Rounded
-ddadd224 add '1234560123456789' 0.4           -> '1234560123456789' Inexact Rounded
-ddadd225 add '1234560123456789' 0.49          -> '1234560123456789' Inexact Rounded
-ddadd226 add '1234560123456789' 0.499999      -> '1234560123456789' Inexact Rounded
-ddadd227 add '1234560123456789' 0.499999999   -> '1234560123456789' Inexact Rounded
-ddadd228 add '1234560123456789' 0.5           -> '1234560123456790' Inexact Rounded
-ddadd229 add '1234560123456789' 0.500000001   -> '1234560123456790' Inexact Rounded
-ddadd230 add '1234560123456789' 0.500001      -> '1234560123456790' Inexact Rounded
-ddadd231 add '1234560123456789' 0.51          -> '1234560123456790' Inexact Rounded
-ddadd232 add '1234560123456789' 0.6           -> '1234560123456790' Inexact Rounded
-ddadd233 add '1234560123456789' 0.9           -> '1234560123456790' Inexact Rounded
-ddadd234 add '1234560123456789' 0.99999       -> '1234560123456790' Inexact Rounded
-ddadd235 add '1234560123456789' 0.999999999   -> '1234560123456790' Inexact Rounded
-ddadd236 add '1234560123456789' 1             -> '1234560123456790'
-ddadd237 add '1234560123456789' 1.00000001    -> '1234560123456790' Inexact Rounded
-ddadd238 add '1234560123456789' 1.00001       -> '1234560123456790' Inexact Rounded
-ddadd239 add '1234560123456789' 1.1           -> '1234560123456790' Inexact Rounded
--- critical few with even bottom digit...
-ddadd240 add '1234560123456788' 0.499999999   -> '1234560123456788' Inexact Rounded
-ddadd241 add '1234560123456788' 0.5           -> '1234560123456788' Inexact Rounded
-ddadd242 add '1234560123456788' 0.500000001   -> '1234560123456789' Inexact Rounded
-
-rounding: down
-ddadd250 add '1234560123456789' 0             -> '1234560123456789'
-ddadd251 add '1234560123456789' 0.000000001   -> '1234560123456789' Inexact Rounded
-ddadd252 add '1234560123456789' 0.000001      -> '1234560123456789' Inexact Rounded
-ddadd253 add '1234560123456789' 0.1           -> '1234560123456789' Inexact Rounded
-ddadd254 add '1234560123456789' 0.4           -> '1234560123456789' Inexact Rounded
-ddadd255 add '1234560123456789' 0.49          -> '1234560123456789' Inexact Rounded
-ddadd256 add '1234560123456789' 0.499999      -> '1234560123456789' Inexact Rounded
-ddadd257 add '1234560123456789' 0.499999999   -> '1234560123456789' Inexact Rounded
-ddadd258 add '1234560123456789' 0.5           -> '1234560123456789' Inexact Rounded
-ddadd259 add '1234560123456789' 0.500000001   -> '1234560123456789' Inexact Rounded
-ddadd260 add '1234560123456789' 0.500001      -> '1234560123456789' Inexact Rounded
-ddadd261 add '1234560123456789' 0.51          -> '1234560123456789' Inexact Rounded
-ddadd262 add '1234560123456789' 0.6           -> '1234560123456789' Inexact Rounded
-ddadd263 add '1234560123456789' 0.9           -> '1234560123456789' Inexact Rounded
-ddadd264 add '1234560123456789' 0.99999       -> '1234560123456789' Inexact Rounded
-ddadd265 add '1234560123456789' 0.999999999   -> '1234560123456789' Inexact Rounded
-ddadd266 add '1234560123456789' 1             -> '1234560123456790'
-ddadd267 add '1234560123456789' 1.00000001    -> '1234560123456790' Inexact Rounded
-ddadd268 add '1234560123456789' 1.00001       -> '1234560123456790' Inexact Rounded
-ddadd269 add '1234560123456789' 1.1           -> '1234560123456790' Inexact Rounded
-
--- 1 in last place tests
-rounding: half_up
-ddadd301 add  -1   1      ->   0
-ddadd302 add   0   1      ->   1
-ddadd303 add   1   1      ->   2
-ddadd304 add  12   1      ->  13
-ddadd305 add  98   1      ->  99
-ddadd306 add  99   1      -> 100
-ddadd307 add 100   1      -> 101
-ddadd308 add 101   1      -> 102
-ddadd309 add  -1  -1      ->  -2
-ddadd310 add   0  -1      ->  -1
-ddadd311 add   1  -1      ->   0
-ddadd312 add  12  -1      ->  11
-ddadd313 add  98  -1      ->  97
-ddadd314 add  99  -1      ->  98
-ddadd315 add 100  -1      ->  99
-ddadd316 add 101  -1      -> 100
-
-ddadd321 add -0.01  0.01    ->  0.00
-ddadd322 add  0.00  0.01    ->  0.01
-ddadd323 add  0.01  0.01    ->  0.02
-ddadd324 add  0.12  0.01    ->  0.13
-ddadd325 add  0.98  0.01    ->  0.99
-ddadd326 add  0.99  0.01    ->  1.00
-ddadd327 add  1.00  0.01    ->  1.01
-ddadd328 add  1.01  0.01    ->  1.02
-ddadd329 add -0.01 -0.01    -> -0.02
-ddadd330 add  0.00 -0.01    -> -0.01
-ddadd331 add  0.01 -0.01    ->  0.00
-ddadd332 add  0.12 -0.01    ->  0.11
-ddadd333 add  0.98 -0.01    ->  0.97
-ddadd334 add  0.99 -0.01    ->  0.98
-ddadd335 add  1.00 -0.01    ->  0.99
-ddadd336 add  1.01 -0.01    ->  1.00
-
--- some more cases where adding 0 affects the coefficient
-ddadd340 add 1E+3    0    ->         1000
-ddadd341 add 1E+15   0    ->    1000000000000000
-ddadd342 add 1E+16   0    ->   1.000000000000000E+16  Rounded
-ddadd343 add 1E+20   0    ->   1.000000000000000E+20  Rounded
--- which simply follow from these cases ...
-ddadd344 add 1E+3    1    ->         1001
-ddadd345 add 1E+15   1    ->    1000000000000001
-ddadd346 add 1E+16   1    ->   1.000000000000000E+16  Inexact Rounded
-ddadd347 add 1E+20   1    ->   1.000000000000000E+20  Inexact Rounded
-ddadd348 add 1E+3    7    ->         1007
-ddadd349 add 1E+15   7    ->    1000000000000007
-ddadd350 add 1E+16   7    ->   1.000000000000001E+16  Inexact Rounded
-ddadd351 add 1E+20   7    ->   1.000000000000000E+20  Inexact Rounded
-
--- tryzeros cases
-rounding:    half_up
-ddadd360  add 0E+50 10000E+1  -> 1.0000E+5
-ddadd361  add 0E-50 10000E+1  -> 100000.0000000000 Rounded
-ddadd362  add 10000E+1 0E-50  -> 100000.0000000000 Rounded
-ddadd363  add 10000E+1 10000E-50  -> 100000.0000000000 Rounded Inexact
-ddadd364  add 9.999999999999999E+384 -9.999999999999999E+384 -> 0E+369
-
--- a curiosity from JSR 13 testing
-rounding:    half_down
-ddadd370 add  999999999999999 815 -> 1000000000000814
-ddadd371 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact
-rounding:    half_up
-ddadd372 add  999999999999999 815 -> 1000000000000814
-ddadd373 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact
-rounding:    half_even
-ddadd374 add  999999999999999 815 -> 1000000000000814
-ddadd375 add 9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact
-
--- operands folded
-ddadd380 add   1E+384  1E+384  ->  2.000000000000000E+384  Clamped
-ddadd381 add   1E+380  1E+380  ->  2.00000000000E+380      Clamped
-ddadd382 add   1E+376  1E+376  ->  2.0000000E+376          Clamped
-ddadd383 add   1E+372  1E+372  ->  2.000E+372              Clamped
-ddadd384 add   1E+370  1E+370  ->  2.0E+370                Clamped
-ddadd385 add   1E+369  1E+369  ->  2E+369
-ddadd386 add   1E+368  1E+368  ->  2E+368
-
--- ulp replacement tests
-ddadd400 add   1   77e-14      ->  1.00000000000077
-ddadd401 add   1   77e-15      ->  1.000000000000077
-ddadd402 add   1   77e-16      ->  1.000000000000008 Inexact Rounded
-ddadd403 add   1   77e-17      ->  1.000000000000001 Inexact Rounded
-ddadd404 add   1   77e-18      ->  1.000000000000000 Inexact Rounded
-ddadd405 add   1   77e-19      ->  1.000000000000000 Inexact Rounded
-ddadd406 add   1   77e-299     ->  1.000000000000000 Inexact Rounded
-
-ddadd410 add  10   77e-14      ->  10.00000000000077
-ddadd411 add  10   77e-15      ->  10.00000000000008 Inexact Rounded
-ddadd412 add  10   77e-16      ->  10.00000000000001 Inexact Rounded
-ddadd413 add  10   77e-17      ->  10.00000000000000 Inexact Rounded
-ddadd414 add  10   77e-18      ->  10.00000000000000 Inexact Rounded
-ddadd415 add  10   77e-19      ->  10.00000000000000 Inexact Rounded
-ddadd416 add  10   77e-299     ->  10.00000000000000 Inexact Rounded
-
-ddadd420 add  77e-14       1   ->  1.00000000000077
-ddadd421 add  77e-15       1   ->  1.000000000000077
-ddadd422 add  77e-16       1   ->  1.000000000000008 Inexact Rounded
-ddadd423 add  77e-17       1   ->  1.000000000000001 Inexact Rounded
-ddadd424 add  77e-18       1   ->  1.000000000000000 Inexact Rounded
-ddadd425 add  77e-19       1   ->  1.000000000000000 Inexact Rounded
-ddadd426 add  77e-299      1   ->  1.000000000000000 Inexact Rounded
-
-ddadd430 add  77e-14      10   ->  10.00000000000077
-ddadd431 add  77e-15      10   ->  10.00000000000008 Inexact Rounded
-ddadd432 add  77e-16      10   ->  10.00000000000001 Inexact Rounded
-ddadd433 add  77e-17      10   ->  10.00000000000000 Inexact Rounded
-ddadd434 add  77e-18      10   ->  10.00000000000000 Inexact Rounded
-ddadd435 add  77e-19      10   ->  10.00000000000000 Inexact Rounded
-ddadd436 add  77e-299     10   ->  10.00000000000000 Inexact Rounded
-
--- fastpath boundary (more in dqadd)
---            1234567890123456
-ddadd539 add '4444444444444444'  '3333333333333333' -> '7777777777777777'
-ddadd540 add '4444444444444444'  '4444444444444444' -> '8888888888888888'
-ddadd541 add '4444444444444444'  '5555555555555555' -> '9999999999999999'
-ddadd542 add '3333333333333333'  '4444444444444444' -> '7777777777777777'
-ddadd543 add '4444444444444444'  '4444444444444444' -> '8888888888888888'
-ddadd544 add '5555555555555555'  '4444444444444444' -> '9999999999999999'
-ddadd545 add '3000004000000000'  '3000000000000040' -> '6000004000000040'
-ddadd546 add '3000000400000000'  '4000000000000400' -> '7000000400000400'
-ddadd547 add '3000000040000000'  '5000000000004000' -> '8000000040004000'
-ddadd548 add '4000000004000000'  '3000000000040000' -> '7000000004040000'
-ddadd549 add '4000000000400000'  '4000000000400000' -> '8000000000800000'
-ddadd550 add '4000000000040000'  '5000000004000000' -> '9000000004040000'
-ddadd551 add '5000000000004000'  '3000000040000000' -> '8000000040004000'
-ddadd552 add '5000000000000400'  '4000000400000000' -> '9000000400000400'
-ddadd553 add '5000000000000040'  '5000004000000000' -> 1.000000400000004E+16 Rounded
--- check propagation
-ddadd554 add '8999999999999999'  '0000000000000001' -> 9000000000000000
-ddadd555 add '0000000000000001'  '8999999999999999' -> 9000000000000000
-ddadd556 add '0999999999999999'  '0000000000000001' -> 1000000000000000
-ddadd557 add '0000000000000001'  '0999999999999999' -> 1000000000000000
-ddadd558 add '4444444444444444'  '4555555555555556' -> 9000000000000000
-ddadd559 add '4555555555555556'  '4444444444444444' -> 9000000000000000
-
--- negative ulps
-ddadd6440 add   1   -77e-14      ->  0.99999999999923
-ddadd6441 add   1   -77e-15      ->  0.999999999999923
-ddadd6442 add   1   -77e-16      ->  0.9999999999999923
-ddadd6443 add   1   -77e-17      ->  0.9999999999999992 Inexact Rounded
-ddadd6444 add   1   -77e-18      ->  0.9999999999999999 Inexact Rounded
-ddadd6445 add   1   -77e-19      ->  1.000000000000000 Inexact Rounded
-ddadd6446 add   1   -77e-99      ->  1.000000000000000 Inexact Rounded
-
-ddadd6450 add  10   -77e-14      ->   9.99999999999923
-ddadd6451 add  10   -77e-15      ->   9.999999999999923
-ddadd6452 add  10   -77e-16      ->   9.999999999999992 Inexact Rounded
-ddadd6453 add  10   -77e-17      ->   9.999999999999999 Inexact Rounded
-ddadd6454 add  10   -77e-18      ->  10.00000000000000 Inexact Rounded
-ddadd6455 add  10   -77e-19      ->  10.00000000000000 Inexact Rounded
-ddadd6456 add  10   -77e-99      ->  10.00000000000000 Inexact Rounded
-
-ddadd6460 add  -77e-14       1   ->  0.99999999999923
-ddadd6461 add  -77e-15       1   ->  0.999999999999923
-ddadd6462 add  -77e-16       1   ->  0.9999999999999923
-ddadd6463 add  -77e-17       1   ->  0.9999999999999992 Inexact Rounded
-ddadd6464 add  -77e-18       1   ->  0.9999999999999999 Inexact Rounded
-ddadd6465 add  -77e-19       1   ->  1.000000000000000 Inexact Rounded
-ddadd6466 add  -77e-99       1   ->  1.000000000000000 Inexact Rounded
-
-ddadd6470 add  -77e-14      10   ->   9.99999999999923
-ddadd6471 add  -77e-15      10   ->   9.999999999999923
-ddadd6472 add  -77e-16      10   ->   9.999999999999992 Inexact Rounded
-ddadd6473 add  -77e-17      10   ->   9.999999999999999 Inexact Rounded
-ddadd6474 add  -77e-18      10   ->  10.00000000000000 Inexact Rounded
-ddadd6475 add  -77e-19      10   ->  10.00000000000000 Inexact Rounded
-ddadd6476 add  -77e-99      10   ->  10.00000000000000 Inexact Rounded
-
--- negative ulps
-ddadd6480 add  -1    77e-14      ->  -0.99999999999923
-ddadd6481 add  -1    77e-15      ->  -0.999999999999923
-ddadd6482 add  -1    77e-16      ->  -0.9999999999999923
-ddadd6483 add  -1    77e-17      ->  -0.9999999999999992 Inexact Rounded
-ddadd6484 add  -1    77e-18      ->  -0.9999999999999999 Inexact Rounded
-ddadd6485 add  -1    77e-19      ->  -1.000000000000000 Inexact Rounded
-ddadd6486 add  -1    77e-99      ->  -1.000000000000000 Inexact Rounded
-
-ddadd6490 add -10    77e-14      ->   -9.99999999999923
-ddadd6491 add -10    77e-15      ->   -9.999999999999923
-ddadd6492 add -10    77e-16      ->   -9.999999999999992 Inexact Rounded
-ddadd6493 add -10    77e-17      ->   -9.999999999999999 Inexact Rounded
-ddadd6494 add -10    77e-18      ->  -10.00000000000000 Inexact Rounded
-ddadd6495 add -10    77e-19      ->  -10.00000000000000 Inexact Rounded
-ddadd6496 add -10    77e-99      ->  -10.00000000000000 Inexact Rounded
-
-ddadd6500 add   77e-14      -1   ->  -0.99999999999923
-ddadd6501 add   77e-15      -1   ->  -0.999999999999923
-ddadd6502 add   77e-16      -1   ->  -0.9999999999999923
-ddadd6503 add   77e-17      -1   ->  -0.9999999999999992 Inexact Rounded
-ddadd6504 add   77e-18      -1   ->  -0.9999999999999999 Inexact Rounded
-ddadd6505 add   77e-19      -1   ->  -1.000000000000000 Inexact Rounded
-ddadd6506 add   77e-99      -1   ->  -1.000000000000000 Inexact Rounded
-
-ddadd6510 add   77e-14      -10  ->   -9.99999999999923
-ddadd6511 add   77e-15      -10  ->   -9.999999999999923
-ddadd6512 add   77e-16      -10  ->   -9.999999999999992 Inexact Rounded
-ddadd6513 add   77e-17      -10  ->   -9.999999999999999 Inexact Rounded
-ddadd6514 add   77e-18      -10  ->  -10.00000000000000 Inexact Rounded
-ddadd6515 add   77e-19      -10  ->  -10.00000000000000 Inexact Rounded
-ddadd6516 add   77e-99      -10  ->  -10.00000000000000 Inexact Rounded
-
--- and some more residue effects and different roundings
-rounding: half_up
-ddadd6540 add '6543210123456789' 0             -> '6543210123456789'
-ddadd6541 add '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
-ddadd6542 add '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
-ddadd6543 add '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
-ddadd6544 add '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
-ddadd6545 add '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
-ddadd6546 add '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
-ddadd6547 add '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded
-ddadd6548 add '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded
-ddadd6549 add '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded
-ddadd6550 add '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded
-ddadd6551 add '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded
-ddadd6552 add '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded
-ddadd6553 add '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded
-ddadd6554 add '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded
-ddadd6555 add '6543210123456789' 0.999999999   -> '6543210123456790' Inexact Rounded
-ddadd6556 add '6543210123456789' 1             -> '6543210123456790'
-ddadd6557 add '6543210123456789' 1.000000001   -> '6543210123456790' Inexact Rounded
-ddadd6558 add '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
-ddadd6559 add '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
-
-rounding: half_even
-ddadd6560 add '6543210123456789' 0             -> '6543210123456789'
-ddadd6561 add '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
-ddadd6562 add '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
-ddadd6563 add '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
-ddadd6564 add '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
-ddadd6565 add '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
-ddadd6566 add '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
-ddadd6567 add '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded
-ddadd6568 add '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded
-ddadd6569 add '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded
-ddadd6570 add '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded
-ddadd6571 add '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded
-ddadd6572 add '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded
-ddadd6573 add '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded
-ddadd6574 add '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded
-ddadd6575 add '6543210123456789' 0.999999999   -> '6543210123456790' Inexact Rounded
-ddadd6576 add '6543210123456789' 1             -> '6543210123456790'
-ddadd6577 add '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded
-ddadd6578 add '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
-ddadd6579 add '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
-
--- critical few with even bottom digit...
-ddadd7540 add '6543210123456788' 0.499999999   -> '6543210123456788' Inexact Rounded
-ddadd7541 add '6543210123456788' 0.5           -> '6543210123456788' Inexact Rounded
-ddadd7542 add '6543210123456788' 0.500000001   -> '6543210123456789' Inexact Rounded
-
-rounding: down
-ddadd7550 add '6543210123456789' 0             -> '6543210123456789'
-ddadd7551 add '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
-ddadd7552 add '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
-ddadd7553 add '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
-ddadd7554 add '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
-ddadd7555 add '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
-ddadd7556 add '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
-ddadd7557 add '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded
-ddadd7558 add '6543210123456789' 0.5           -> '6543210123456789' Inexact Rounded
-ddadd7559 add '6543210123456789' 0.500000001   -> '6543210123456789' Inexact Rounded
-ddadd7560 add '6543210123456789' 0.500001      -> '6543210123456789' Inexact Rounded
-ddadd7561 add '6543210123456789' 0.51          -> '6543210123456789' Inexact Rounded
-ddadd7562 add '6543210123456789' 0.6           -> '6543210123456789' Inexact Rounded
-ddadd7563 add '6543210123456789' 0.9           -> '6543210123456789' Inexact Rounded
-ddadd7564 add '6543210123456789' 0.99999       -> '6543210123456789' Inexact Rounded
-ddadd7565 add '6543210123456789' 0.999999999   -> '6543210123456789' Inexact Rounded
-ddadd7566 add '6543210123456789' 1             -> '6543210123456790'
-ddadd7567 add '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded
-ddadd7568 add '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
-ddadd7569 add '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
-
--- verify a query
-rounding:     down
-ddadd7661 add 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded
-ddadd7662 add      0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded
-ddadd7663 add 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded
-ddadd7664 add      0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded
-
--- more zeros, etc.
-rounding: half_even
-
-ddadd7701 add 5.00 1.00E-3 -> 5.00100
-ddadd7702 add 00.00 0.000  -> 0.000
-ddadd7703 add 00.00 0E-3   -> 0.000
-ddadd7704 add 0E-3  00.00  -> 0.000
-
-ddadd7710 add 0E+3  00.00  -> 0.00
-ddadd7711 add 0E+3  00.0   -> 0.0
-ddadd7712 add 0E+3  00.    -> 0
-ddadd7713 add 0E+3  00.E+1 -> 0E+1
-ddadd7714 add 0E+3  00.E+2 -> 0E+2
-ddadd7715 add 0E+3  00.E+3 -> 0E+3
-ddadd7716 add 0E+3  00.E+4 -> 0E+3
-ddadd7717 add 0E+3  00.E+5 -> 0E+3
-ddadd7718 add 0E+3  -00.0   -> 0.0
-ddadd7719 add 0E+3  -00.    -> 0
-ddadd7731 add 0E+3  -00.E+1 -> 0E+1
-
-ddadd7720 add 00.00  0E+3  -> 0.00
-ddadd7721 add 00.0   0E+3  -> 0.0
-ddadd7722 add 00.    0E+3  -> 0
-ddadd7723 add 00.E+1 0E+3  -> 0E+1
-ddadd7724 add 00.E+2 0E+3  -> 0E+2
-ddadd7725 add 00.E+3 0E+3  -> 0E+3
-ddadd7726 add 00.E+4 0E+3  -> 0E+3
-ddadd7727 add 00.E+5 0E+3  -> 0E+3
-ddadd7728 add -00.00 0E+3  -> 0.00
-ddadd7729 add -00.0  0E+3  -> 0.0
-ddadd7730 add -00.   0E+3  -> 0
-
-ddadd7732 add  0     0     ->  0
-ddadd7733 add  0    -0     ->  0
-ddadd7734 add -0     0     ->  0
-ddadd7735 add -0    -0     -> -0     -- IEEE 854 special case
-
-ddadd7736 add  1    -1     ->  0
-ddadd7737 add -1    -1     -> -2
-ddadd7738 add  1     1     ->  2
-ddadd7739 add -1     1     ->  0
-
-ddadd7741 add  0    -1     -> -1
-ddadd7742 add -0    -1     -> -1
-ddadd7743 add  0     1     ->  1
-ddadd7744 add -0     1     ->  1
-ddadd7745 add -1     0     -> -1
-ddadd7746 add -1    -0     -> -1
-ddadd7747 add  1     0     ->  1
-ddadd7748 add  1    -0     ->  1
-
-ddadd7751 add  0.0  -1     -> -1.0
-ddadd7752 add -0.0  -1     -> -1.0
-ddadd7753 add  0.0   1     ->  1.0
-ddadd7754 add -0.0   1     ->  1.0
-ddadd7755 add -1.0   0     -> -1.0
-ddadd7756 add -1.0  -0     -> -1.0
-ddadd7757 add  1.0   0     ->  1.0
-ddadd7758 add  1.0  -0     ->  1.0
-
-ddadd7761 add  0    -1.0   -> -1.0
-ddadd7762 add -0    -1.0   -> -1.0
-ddadd7763 add  0     1.0   ->  1.0
-ddadd7764 add -0     1.0   ->  1.0
-ddadd7765 add -1     0.0   -> -1.0
-ddadd7766 add -1    -0.0   -> -1.0
-ddadd7767 add  1     0.0   ->  1.0
-ddadd7768 add  1    -0.0   ->  1.0
-
-ddadd7771 add  0.0  -1.0   -> -1.0
-ddadd7772 add -0.0  -1.0   -> -1.0
-ddadd7773 add  0.0   1.0   ->  1.0
-ddadd7774 add -0.0   1.0   ->  1.0
-ddadd7775 add -1.0   0.0   -> -1.0
-ddadd7776 add -1.0  -0.0   -> -1.0
-ddadd7777 add  1.0   0.0   ->  1.0
-ddadd7778 add  1.0  -0.0   ->  1.0
-
--- Specials
-ddadd7780 add -Inf  -Inf   -> -Infinity
-ddadd7781 add -Inf  -1000  -> -Infinity
-ddadd7782 add -Inf  -1     -> -Infinity
-ddadd7783 add -Inf  -0     -> -Infinity
-ddadd7784 add -Inf   0     -> -Infinity
-ddadd7785 add -Inf   1     -> -Infinity
-ddadd7786 add -Inf   1000  -> -Infinity
-ddadd7787 add -1000 -Inf   -> -Infinity
-ddadd7788 add -Inf  -Inf   -> -Infinity
-ddadd7789 add -1    -Inf   -> -Infinity
-ddadd7790 add -0    -Inf   -> -Infinity
-ddadd7791 add  0    -Inf   -> -Infinity
-ddadd7792 add  1    -Inf   -> -Infinity
-ddadd7793 add  1000 -Inf   -> -Infinity
-ddadd7794 add  Inf  -Inf   ->  NaN  Invalid_operation
-
-ddadd7800 add  Inf  -Inf   ->  NaN  Invalid_operation
-ddadd7801 add  Inf  -1000  ->  Infinity
-ddadd7802 add  Inf  -1     ->  Infinity
-ddadd7803 add  Inf  -0     ->  Infinity
-ddadd7804 add  Inf   0     ->  Infinity
-ddadd7805 add  Inf   1     ->  Infinity
-ddadd7806 add  Inf   1000  ->  Infinity
-ddadd7807 add  Inf   Inf   ->  Infinity
-ddadd7808 add -1000  Inf   ->  Infinity
-ddadd7809 add -Inf   Inf   ->  NaN  Invalid_operation
-ddadd7810 add -1     Inf   ->  Infinity
-ddadd7811 add -0     Inf   ->  Infinity
-ddadd7812 add  0     Inf   ->  Infinity
-ddadd7813 add  1     Inf   ->  Infinity
-ddadd7814 add  1000  Inf   ->  Infinity
-ddadd7815 add  Inf   Inf   ->  Infinity
-
-ddadd7821 add  NaN -Inf    ->  NaN
-ddadd7822 add  NaN -1000   ->  NaN
-ddadd7823 add  NaN -1      ->  NaN
-ddadd7824 add  NaN -0      ->  NaN
-ddadd7825 add  NaN  0      ->  NaN
-ddadd7826 add  NaN  1      ->  NaN
-ddadd7827 add  NaN  1000   ->  NaN
-ddadd7828 add  NaN  Inf    ->  NaN
-ddadd7829 add  NaN  NaN    ->  NaN
-ddadd7830 add -Inf  NaN    ->  NaN
-ddadd7831 add -1000 NaN    ->  NaN
-ddadd7832 add -1    NaN    ->  NaN
-ddadd7833 add -0    NaN    ->  NaN
-ddadd7834 add  0    NaN    ->  NaN
-ddadd7835 add  1    NaN    ->  NaN
-ddadd7836 add  1000 NaN    ->  NaN
-ddadd7837 add  Inf  NaN    ->  NaN
-
-ddadd7841 add  sNaN -Inf   ->  NaN  Invalid_operation
-ddadd7842 add  sNaN -1000  ->  NaN  Invalid_operation
-ddadd7843 add  sNaN -1     ->  NaN  Invalid_operation
-ddadd7844 add  sNaN -0     ->  NaN  Invalid_operation
-ddadd7845 add  sNaN  0     ->  NaN  Invalid_operation
-ddadd7846 add  sNaN  1     ->  NaN  Invalid_operation
-ddadd7847 add  sNaN  1000  ->  NaN  Invalid_operation
-ddadd7848 add  sNaN  NaN   ->  NaN  Invalid_operation
-ddadd7849 add  sNaN sNaN   ->  NaN  Invalid_operation
-ddadd7850 add  NaN  sNaN   ->  NaN  Invalid_operation
-ddadd7851 add -Inf  sNaN   ->  NaN  Invalid_operation
-ddadd7852 add -1000 sNaN   ->  NaN  Invalid_operation
-ddadd7853 add -1    sNaN   ->  NaN  Invalid_operation
-ddadd7854 add -0    sNaN   ->  NaN  Invalid_operation
-ddadd7855 add  0    sNaN   ->  NaN  Invalid_operation
-ddadd7856 add  1    sNaN   ->  NaN  Invalid_operation
-ddadd7857 add  1000 sNaN   ->  NaN  Invalid_operation
-ddadd7858 add  Inf  sNaN   ->  NaN  Invalid_operation
-ddadd7859 add  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddadd7861 add  NaN1   -Inf    ->  NaN1
-ddadd7862 add +NaN2   -1000   ->  NaN2
-ddadd7863 add  NaN3    1000   ->  NaN3
-ddadd7864 add  NaN4    Inf    ->  NaN4
-ddadd7865 add  NaN5   +NaN6   ->  NaN5
-ddadd7866 add -Inf     NaN7   ->  NaN7
-ddadd7867 add -1000    NaN8   ->  NaN8
-ddadd7868 add  1000    NaN9   ->  NaN9
-ddadd7869 add  Inf    +NaN10  ->  NaN10
-ddadd7871 add  sNaN11  -Inf   ->  NaN11  Invalid_operation
-ddadd7872 add  sNaN12  -1000  ->  NaN12  Invalid_operation
-ddadd7873 add  sNaN13   1000  ->  NaN13  Invalid_operation
-ddadd7874 add  sNaN14   NaN17 ->  NaN14  Invalid_operation
-ddadd7875 add  sNaN15  sNaN18 ->  NaN15  Invalid_operation
-ddadd7876 add  NaN16   sNaN19 ->  NaN19  Invalid_operation
-ddadd7877 add -Inf    +sNaN20 ->  NaN20  Invalid_operation
-ddadd7878 add -1000    sNaN21 ->  NaN21  Invalid_operation
-ddadd7879 add  1000    sNaN22 ->  NaN22  Invalid_operation
-ddadd7880 add  Inf     sNaN23 ->  NaN23  Invalid_operation
-ddadd7881 add +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-ddadd7882 add -NaN26    NaN28 -> -NaN26
-ddadd7883 add -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-ddadd7884 add  1000    -NaN30 -> -NaN30
-ddadd7885 add  1000   -sNaN31 -> -NaN31  Invalid_operation
-
--- Here we explore near the boundary of rounding a subnormal to Nmin
-ddadd7575 add  1E-383 -1E-398 ->  9.99999999999999E-384  Subnormal
-ddadd7576 add -1E-383 +1E-398 -> -9.99999999999999E-384  Subnormal
-
--- and another curious case
-ddadd7577 add 7.000000000000E-385 -1.00000E-391 -> 6.999999000000E-385 Subnormal
-
--- check overflow edge case
---               1234567890123456
-ddadd7972 apply   9.999999999999999E+384         -> 9.999999999999999E+384
-ddadd7973 add     9.999999999999999E+384  1      -> 9.999999999999999E+384 Inexact Rounded
-ddadd7974 add      9999999999999999E+369  1      -> 9.999999999999999E+384 Inexact Rounded
-ddadd7975 add      9999999999999999E+369  1E+369  -> Infinity Overflow Inexact Rounded
-ddadd7976 add      9999999999999999E+369  9E+368  -> Infinity Overflow Inexact Rounded
-ddadd7977 add      9999999999999999E+369  8E+368  -> Infinity Overflow Inexact Rounded
-ddadd7978 add      9999999999999999E+369  7E+368  -> Infinity Overflow Inexact Rounded
-ddadd7979 add      9999999999999999E+369  6E+368  -> Infinity Overflow Inexact Rounded
-ddadd7980 add      9999999999999999E+369  5E+368  -> Infinity Overflow Inexact Rounded
-ddadd7981 add      9999999999999999E+369  4E+368  -> 9.999999999999999E+384 Inexact Rounded
-ddadd7982 add      9999999999999999E+369  3E+368  -> 9.999999999999999E+384 Inexact Rounded
-ddadd7983 add      9999999999999999E+369  2E+368  -> 9.999999999999999E+384 Inexact Rounded
-ddadd7984 add      9999999999999999E+369  1E+368  -> 9.999999999999999E+384 Inexact Rounded
-
-ddadd7985 apply  -9.999999999999999E+384         -> -9.999999999999999E+384
-ddadd7986 add    -9.999999999999999E+384 -1      -> -9.999999999999999E+384 Inexact Rounded
-ddadd7987 add     -9999999999999999E+369 -1      -> -9.999999999999999E+384 Inexact Rounded
-ddadd7988 add     -9999999999999999E+369 -1E+369  -> -Infinity Overflow Inexact Rounded
-ddadd7989 add     -9999999999999999E+369 -9E+368  -> -Infinity Overflow Inexact Rounded
-ddadd7990 add     -9999999999999999E+369 -8E+368  -> -Infinity Overflow Inexact Rounded
-ddadd7991 add     -9999999999999999E+369 -7E+368  -> -Infinity Overflow Inexact Rounded
-ddadd7992 add     -9999999999999999E+369 -6E+368  -> -Infinity Overflow Inexact Rounded
-ddadd7993 add     -9999999999999999E+369 -5E+368  -> -Infinity Overflow Inexact Rounded
-ddadd7994 add     -9999999999999999E+369 -4E+368  -> -9.999999999999999E+384 Inexact Rounded
-ddadd7995 add     -9999999999999999E+369 -3E+368  -> -9.999999999999999E+384 Inexact Rounded
-ddadd7996 add     -9999999999999999E+369 -2E+368  -> -9.999999999999999E+384 Inexact Rounded
-ddadd7997 add     -9999999999999999E+369 -1E+368  -> -9.999999999999999E+384 Inexact Rounded
-
--- And for round down full and subnormal results
-rounding:     down
-ddadd71100 add 1e+2 -1e-383    -> 99.99999999999999 Rounded Inexact
-ddadd71101 add 1e+1 -1e-383    -> 9.999999999999999  Rounded Inexact
-ddadd71103 add   +1 -1e-383    -> 0.9999999999999999  Rounded Inexact
-ddadd71104 add 1e-1 -1e-383    -> 0.09999999999999999  Rounded Inexact
-ddadd71105 add 1e-2 -1e-383    -> 0.009999999999999999  Rounded Inexact
-ddadd71106 add 1e-3 -1e-383    -> 0.0009999999999999999  Rounded Inexact
-ddadd71107 add 1e-4 -1e-383    -> 0.00009999999999999999  Rounded Inexact
-ddadd71108 add 1e-5 -1e-383    -> 0.000009999999999999999  Rounded Inexact
-ddadd71109 add 1e-6 -1e-383    -> 9.999999999999999E-7  Rounded Inexact
-
-rounding:     ceiling
-ddadd71110 add -1e+2 +1e-383   -> -99.99999999999999 Rounded Inexact
-ddadd71111 add -1e+1 +1e-383   -> -9.999999999999999  Rounded Inexact
-ddadd71113 add    -1 +1e-383   -> -0.9999999999999999  Rounded Inexact
-ddadd71114 add -1e-1 +1e-383   -> -0.09999999999999999  Rounded Inexact
-ddadd71115 add -1e-2 +1e-383   -> -0.009999999999999999  Rounded Inexact
-ddadd71116 add -1e-3 +1e-383   -> -0.0009999999999999999  Rounded Inexact
-ddadd71117 add -1e-4 +1e-383   -> -0.00009999999999999999  Rounded Inexact
-ddadd71118 add -1e-5 +1e-383   -> -0.000009999999999999999  Rounded Inexact
-ddadd71119 add -1e-6 +1e-383   -> -9.999999999999999E-7  Rounded Inexact
-
--- tests based on Gunnar Degnbol's edge case
-rounding:     half_even
-
-ddadd71300 add 1E16  -0.5                 ->  1.000000000000000E+16 Inexact Rounded
-ddadd71310 add 1E16  -0.51                ->  9999999999999999      Inexact Rounded
-ddadd71311 add 1E16  -0.501               ->  9999999999999999      Inexact Rounded
-ddadd71312 add 1E16  -0.5001              ->  9999999999999999      Inexact Rounded
-ddadd71313 add 1E16  -0.50001             ->  9999999999999999      Inexact Rounded
-ddadd71314 add 1E16  -0.500001            ->  9999999999999999      Inexact Rounded
-ddadd71315 add 1E16  -0.5000001           ->  9999999999999999      Inexact Rounded
-ddadd71316 add 1E16  -0.50000001          ->  9999999999999999      Inexact Rounded
-ddadd71317 add 1E16  -0.500000001         ->  9999999999999999      Inexact Rounded
-ddadd71318 add 1E16  -0.5000000001        ->  9999999999999999      Inexact Rounded
-ddadd71319 add 1E16  -0.50000000001       ->  9999999999999999      Inexact Rounded
-ddadd71320 add 1E16  -0.500000000001      ->  9999999999999999      Inexact Rounded
-ddadd71321 add 1E16  -0.5000000000001     ->  9999999999999999      Inexact Rounded
-ddadd71322 add 1E16  -0.50000000000001    ->  9999999999999999      Inexact Rounded
-ddadd71323 add 1E16  -0.500000000000001   ->  9999999999999999      Inexact Rounded
-ddadd71324 add 1E16  -0.5000000000000001  ->  9999999999999999      Inexact Rounded
-ddadd71325 add 1E16  -0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
-ddadd71326 add 1E16  -0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
-ddadd71327 add 1E16  -0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
-ddadd71328 add 1E16  -0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
-ddadd71329 add 1E16  -0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
-ddadd71330 add 1E16  -0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
-ddadd71331 add 1E16  -0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
-ddadd71332 add 1E16  -0.500000000         ->  1.000000000000000E+16 Inexact Rounded
-ddadd71333 add 1E16  -0.50000000          ->  1.000000000000000E+16 Inexact Rounded
-ddadd71334 add 1E16  -0.5000000           ->  1.000000000000000E+16 Inexact Rounded
-ddadd71335 add 1E16  -0.500000            ->  1.000000000000000E+16 Inexact Rounded
-ddadd71336 add 1E16  -0.50000             ->  1.000000000000000E+16 Inexact Rounded
-ddadd71337 add 1E16  -0.5000              ->  1.000000000000000E+16 Inexact Rounded
-ddadd71338 add 1E16  -0.500               ->  1.000000000000000E+16 Inexact Rounded
-ddadd71339 add 1E16  -0.50                ->  1.000000000000000E+16 Inexact Rounded
-
-ddadd71340 add 1E16  -5000000.000010001   ->  9999999995000000      Inexact Rounded
-ddadd71341 add 1E16  -5000000.000000001   ->  9999999995000000      Inexact Rounded
-
-ddadd71349 add 9999999999999999 0.4                 ->  9999999999999999      Inexact Rounded
-ddadd71350 add 9999999999999999 0.49                ->  9999999999999999      Inexact Rounded
-ddadd71351 add 9999999999999999 0.499               ->  9999999999999999      Inexact Rounded
-ddadd71352 add 9999999999999999 0.4999              ->  9999999999999999      Inexact Rounded
-ddadd71353 add 9999999999999999 0.49999             ->  9999999999999999      Inexact Rounded
-ddadd71354 add 9999999999999999 0.499999            ->  9999999999999999      Inexact Rounded
-ddadd71355 add 9999999999999999 0.4999999           ->  9999999999999999      Inexact Rounded
-ddadd71356 add 9999999999999999 0.49999999          ->  9999999999999999      Inexact Rounded
-ddadd71357 add 9999999999999999 0.499999999         ->  9999999999999999      Inexact Rounded
-ddadd71358 add 9999999999999999 0.4999999999        ->  9999999999999999      Inexact Rounded
-ddadd71359 add 9999999999999999 0.49999999999       ->  9999999999999999      Inexact Rounded
-ddadd71360 add 9999999999999999 0.499999999999      ->  9999999999999999      Inexact Rounded
-ddadd71361 add 9999999999999999 0.4999999999999     ->  9999999999999999      Inexact Rounded
-ddadd71362 add 9999999999999999 0.49999999999999    ->  9999999999999999      Inexact Rounded
-ddadd71363 add 9999999999999999 0.499999999999999   ->  9999999999999999      Inexact Rounded
-ddadd71364 add 9999999999999999 0.4999999999999999  ->  9999999999999999      Inexact Rounded
-ddadd71365 add 9999999999999999 0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
-ddadd71367 add 9999999999999999 0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
-ddadd71368 add 9999999999999999 0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
-ddadd71369 add 9999999999999999 0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
-ddadd71370 add 9999999999999999 0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
-ddadd71371 add 9999999999999999 0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
-ddadd71372 add 9999999999999999 0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
-ddadd71373 add 9999999999999999 0.500000000         ->  1.000000000000000E+16 Inexact Rounded
-ddadd71374 add 9999999999999999 0.50000000          ->  1.000000000000000E+16 Inexact Rounded
-ddadd71375 add 9999999999999999 0.5000000           ->  1.000000000000000E+16 Inexact Rounded
-ddadd71376 add 9999999999999999 0.500000            ->  1.000000000000000E+16 Inexact Rounded
-ddadd71377 add 9999999999999999 0.50000             ->  1.000000000000000E+16 Inexact Rounded
-ddadd71378 add 9999999999999999 0.5000              ->  1.000000000000000E+16 Inexact Rounded
-ddadd71379 add 9999999999999999 0.500               ->  1.000000000000000E+16 Inexact Rounded
-ddadd71380 add 9999999999999999 0.50                ->  1.000000000000000E+16 Inexact Rounded
-ddadd71381 add 9999999999999999 0.5                 ->  1.000000000000000E+16 Inexact Rounded
-ddadd71382 add 9999999999999999 0.5000000000000001  ->  1.000000000000000E+16 Inexact Rounded
-ddadd71383 add 9999999999999999 0.500000000000001   ->  1.000000000000000E+16 Inexact Rounded
-ddadd71384 add 9999999999999999 0.50000000000001    ->  1.000000000000000E+16 Inexact Rounded
-ddadd71385 add 9999999999999999 0.5000000000001     ->  1.000000000000000E+16 Inexact Rounded
-ddadd71386 add 9999999999999999 0.500000000001      ->  1.000000000000000E+16 Inexact Rounded
-ddadd71387 add 9999999999999999 0.50000000001       ->  1.000000000000000E+16 Inexact Rounded
-ddadd71388 add 9999999999999999 0.5000000001        ->  1.000000000000000E+16 Inexact Rounded
-ddadd71389 add 9999999999999999 0.500000001         ->  1.000000000000000E+16 Inexact Rounded
-ddadd71390 add 9999999999999999 0.50000001          ->  1.000000000000000E+16 Inexact Rounded
-ddadd71391 add 9999999999999999 0.5000001           ->  1.000000000000000E+16 Inexact Rounded
-ddadd71392 add 9999999999999999 0.500001            ->  1.000000000000000E+16 Inexact Rounded
-ddadd71393 add 9999999999999999 0.50001             ->  1.000000000000000E+16 Inexact Rounded
-ddadd71394 add 9999999999999999 0.5001              ->  1.000000000000000E+16 Inexact Rounded
-ddadd71395 add 9999999999999999 0.501               ->  1.000000000000000E+16 Inexact Rounded
-ddadd71396 add 9999999999999999 0.51                ->  1.000000000000000E+16 Inexact Rounded
-
--- More GD edge cases, where difference between the unadjusted
--- exponents is larger than the maximum precision and one side is 0
-ddadd71420 add  0 1.123456789012345     -> 1.123456789012345
-ddadd71421 add  0 1.123456789012345E-1  -> 0.1123456789012345
-ddadd71422 add  0 1.123456789012345E-2  -> 0.01123456789012345
-ddadd71423 add  0 1.123456789012345E-3  -> 0.001123456789012345
-ddadd71424 add  0 1.123456789012345E-4  -> 0.0001123456789012345
-ddadd71425 add  0 1.123456789012345E-5  -> 0.00001123456789012345
-ddadd71426 add  0 1.123456789012345E-6  -> 0.000001123456789012345
-ddadd71427 add  0 1.123456789012345E-7  -> 1.123456789012345E-7
-ddadd71428 add  0 1.123456789012345E-8  -> 1.123456789012345E-8
-ddadd71429 add  0 1.123456789012345E-9  -> 1.123456789012345E-9
-ddadd71430 add  0 1.123456789012345E-10 -> 1.123456789012345E-10
-ddadd71431 add  0 1.123456789012345E-11 -> 1.123456789012345E-11
-ddadd71432 add  0 1.123456789012345E-12 -> 1.123456789012345E-12
-ddadd71433 add  0 1.123456789012345E-13 -> 1.123456789012345E-13
-ddadd71434 add  0 1.123456789012345E-14 -> 1.123456789012345E-14
-ddadd71435 add  0 1.123456789012345E-15 -> 1.123456789012345E-15
-ddadd71436 add  0 1.123456789012345E-16 -> 1.123456789012345E-16
-ddadd71437 add  0 1.123456789012345E-17 -> 1.123456789012345E-17
-ddadd71438 add  0 1.123456789012345E-18 -> 1.123456789012345E-18
-ddadd71439 add  0 1.123456789012345E-19 -> 1.123456789012345E-19
-
--- same, reversed 0
-ddadd71440 add 1.123456789012345     0 -> 1.123456789012345
-ddadd71441 add 1.123456789012345E-1  0 -> 0.1123456789012345
-ddadd71442 add 1.123456789012345E-2  0 -> 0.01123456789012345
-ddadd71443 add 1.123456789012345E-3  0 -> 0.001123456789012345
-ddadd71444 add 1.123456789012345E-4  0 -> 0.0001123456789012345
-ddadd71445 add 1.123456789012345E-5  0 -> 0.00001123456789012345
-ddadd71446 add 1.123456789012345E-6  0 -> 0.000001123456789012345
-ddadd71447 add 1.123456789012345E-7  0 -> 1.123456789012345E-7
-ddadd71448 add 1.123456789012345E-8  0 -> 1.123456789012345E-8
-ddadd71449 add 1.123456789012345E-9  0 -> 1.123456789012345E-9
-ddadd71450 add 1.123456789012345E-10 0 -> 1.123456789012345E-10
-ddadd71451 add 1.123456789012345E-11 0 -> 1.123456789012345E-11
-ddadd71452 add 1.123456789012345E-12 0 -> 1.123456789012345E-12
-ddadd71453 add 1.123456789012345E-13 0 -> 1.123456789012345E-13
-ddadd71454 add 1.123456789012345E-14 0 -> 1.123456789012345E-14
-ddadd71455 add 1.123456789012345E-15 0 -> 1.123456789012345E-15
-ddadd71456 add 1.123456789012345E-16 0 -> 1.123456789012345E-16
-ddadd71457 add 1.123456789012345E-17 0 -> 1.123456789012345E-17
-ddadd71458 add 1.123456789012345E-18 0 -> 1.123456789012345E-18
-ddadd71459 add 1.123456789012345E-19 0 -> 1.123456789012345E-19
-
--- same, Es on the 0
-ddadd71460 add 1.123456789012345  0E-0   -> 1.123456789012345
-ddadd71461 add 1.123456789012345  0E-1   -> 1.123456789012345
-ddadd71462 add 1.123456789012345  0E-2   -> 1.123456789012345
-ddadd71463 add 1.123456789012345  0E-3   -> 1.123456789012345
-ddadd71464 add 1.123456789012345  0E-4   -> 1.123456789012345
-ddadd71465 add 1.123456789012345  0E-5   -> 1.123456789012345
-ddadd71466 add 1.123456789012345  0E-6   -> 1.123456789012345
-ddadd71467 add 1.123456789012345  0E-7   -> 1.123456789012345
-ddadd71468 add 1.123456789012345  0E-8   -> 1.123456789012345
-ddadd71469 add 1.123456789012345  0E-9   -> 1.123456789012345
-ddadd71470 add 1.123456789012345  0E-10  -> 1.123456789012345
-ddadd71471 add 1.123456789012345  0E-11  -> 1.123456789012345
-ddadd71472 add 1.123456789012345  0E-12  -> 1.123456789012345
-ddadd71473 add 1.123456789012345  0E-13  -> 1.123456789012345
-ddadd71474 add 1.123456789012345  0E-14  -> 1.123456789012345
-ddadd71475 add 1.123456789012345  0E-15  -> 1.123456789012345
--- next four flag Rounded because the 0 extends the result
-ddadd71476 add 1.123456789012345  0E-16  -> 1.123456789012345 Rounded
-ddadd71477 add 1.123456789012345  0E-17  -> 1.123456789012345 Rounded
-ddadd71478 add 1.123456789012345  0E-18  -> 1.123456789012345 Rounded
-ddadd71479 add 1.123456789012345  0E-19  -> 1.123456789012345 Rounded
-
--- sum of two opposite-sign operands is exactly 0 and floor => -0
-rounding:    half_up
--- exact zeros from zeros
-ddadd71500 add  0        0E-19  ->  0E-19
-ddadd71501 add -0        0E-19  ->  0E-19
-ddadd71502 add  0       -0E-19  ->  0E-19
-ddadd71503 add -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-ddadd71511 add -11      11    ->  0
-ddadd71512 add  11     -11    ->  0
-
-rounding:    half_down
--- exact zeros from zeros
-ddadd71520 add  0        0E-19  ->  0E-19
-ddadd71521 add -0        0E-19  ->  0E-19
-ddadd71522 add  0       -0E-19  ->  0E-19
-ddadd71523 add -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-ddadd71531 add -11      11    ->  0
-ddadd71532 add  11     -11    ->  0
-
-rounding:    half_even
--- exact zeros from zeros
-ddadd71540 add  0        0E-19  ->  0E-19
-ddadd71541 add -0        0E-19  ->  0E-19
-ddadd71542 add  0       -0E-19  ->  0E-19
-ddadd71543 add -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-ddadd71551 add -11      11    ->  0
-ddadd71552 add  11     -11    ->  0
-
-rounding:    up
--- exact zeros from zeros
-ddadd71560 add  0        0E-19  ->  0E-19
-ddadd71561 add -0        0E-19  ->  0E-19
-ddadd71562 add  0       -0E-19  ->  0E-19
-ddadd71563 add -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-ddadd71571 add -11      11    ->  0
-ddadd71572 add  11     -11    ->  0
-
-rounding:    down
--- exact zeros from zeros
-ddadd71580 add  0        0E-19  ->  0E-19
-ddadd71581 add -0        0E-19  ->  0E-19
-ddadd71582 add  0       -0E-19  ->  0E-19
-ddadd71583 add -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-ddadd71591 add -11      11    ->  0
-ddadd71592 add  11     -11    ->  0
-
-rounding:    ceiling
--- exact zeros from zeros
-ddadd71600 add  0        0E-19  ->  0E-19
-ddadd71601 add -0        0E-19  ->  0E-19
-ddadd71602 add  0       -0E-19  ->  0E-19
-ddadd71603 add -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-ddadd71611 add -11      11    ->  0
-ddadd71612 add  11     -11    ->  0
-
--- and the extra-special ugly case; unusual minuses marked by -- *
-rounding:    floor
--- exact zeros from zeros
-ddadd71620 add  0        0E-19  ->  0E-19
-ddadd71621 add -0        0E-19  -> -0E-19           -- *
-ddadd71622 add  0       -0E-19  -> -0E-19           -- *
-ddadd71623 add -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-ddadd71631 add -11      11    ->  -0                -- *
-ddadd71632 add  11     -11    ->  -0                -- *
-
--- Examples from SQL proposal (Krishna Kulkarni)
-ddadd71701 add 130E-2    120E-2    -> 2.50
-ddadd71702 add 130E-2    12E-1     -> 2.50
-ddadd71703 add 130E-2    1E0       -> 2.30
-ddadd71704 add 1E2       1E4       -> 1.01E+4
-ddadd71705 add 130E-2   -120E-2 -> 0.10
-ddadd71706 add 130E-2   -12E-1  -> 0.10
-ddadd71707 add 130E-2   -1E0    -> 0.30
-ddadd71708 add 1E2      -1E4    -> -9.9E+3
-
--- query from Vincent Kulandaisamy
-rounding: ceiling
-ddadd71801  add  7.8822773805862E+277    -5.1757503820663E-21 -> 7.882277380586200E+277 Inexact Rounded
-ddadd71802  add  7.882277380586200E+277  12.341               -> 7.882277380586201E+277 Inexact Rounded
-ddadd71803  add  7.882277380586201E+277  2.7270545046613E-31  -> 7.882277380586202E+277 Inexact Rounded
-
-ddadd71811  add                   12.341 -5.1757503820663E-21 -> 12.34100000000000      Inexact Rounded
-ddadd71812  add        12.34100000000000 2.7270545046613E-31  -> 12.34100000000001      Inexact Rounded
-ddadd71813  add        12.34100000000001 7.8822773805862E+277 -> 7.882277380586201E+277 Inexact Rounded
-
--- Gappy coefficients; check residue handling even with full coefficient gap
-rounding: half_even
-
-ddadd75001 add 1234567890123456 1      -> 1234567890123457
-ddadd75002 add 1234567890123456 0.6    -> 1234567890123457  Inexact Rounded
-ddadd75003 add 1234567890123456 0.06   -> 1234567890123456  Inexact Rounded
-ddadd75004 add 1234567890123456 6E-3   -> 1234567890123456  Inexact Rounded
-ddadd75005 add 1234567890123456 6E-4   -> 1234567890123456  Inexact Rounded
-ddadd75006 add 1234567890123456 6E-5   -> 1234567890123456  Inexact Rounded
-ddadd75007 add 1234567890123456 6E-6   -> 1234567890123456  Inexact Rounded
-ddadd75008 add 1234567890123456 6E-7   -> 1234567890123456  Inexact Rounded
-ddadd75009 add 1234567890123456 6E-8   -> 1234567890123456  Inexact Rounded
-ddadd75010 add 1234567890123456 6E-9   -> 1234567890123456  Inexact Rounded
-ddadd75011 add 1234567890123456 6E-10  -> 1234567890123456  Inexact Rounded
-ddadd75012 add 1234567890123456 6E-11  -> 1234567890123456  Inexact Rounded
-ddadd75013 add 1234567890123456 6E-12  -> 1234567890123456  Inexact Rounded
-ddadd75014 add 1234567890123456 6E-13  -> 1234567890123456  Inexact Rounded
-ddadd75015 add 1234567890123456 6E-14  -> 1234567890123456  Inexact Rounded
-ddadd75016 add 1234567890123456 6E-15  -> 1234567890123456  Inexact Rounded
-ddadd75017 add 1234567890123456 6E-16  -> 1234567890123456  Inexact Rounded
-ddadd75018 add 1234567890123456 6E-17  -> 1234567890123456  Inexact Rounded
-ddadd75019 add 1234567890123456 6E-18  -> 1234567890123456  Inexact Rounded
-ddadd75020 add 1234567890123456 6E-19  -> 1234567890123456  Inexact Rounded
-ddadd75021 add 1234567890123456 6E-20  -> 1234567890123456  Inexact Rounded
-
--- widening second argument at gap
-ddadd75030 add 12345678 1                       -> 12345679
-ddadd75031 add 12345678 0.1                     -> 12345678.1
-ddadd75032 add 12345678 0.12                    -> 12345678.12
-ddadd75033 add 12345678 0.123                   -> 12345678.123
-ddadd75034 add 12345678 0.1234                  -> 12345678.1234
-ddadd75035 add 12345678 0.12345                 -> 12345678.12345
-ddadd75036 add 12345678 0.123456                -> 12345678.123456
-ddadd75037 add 12345678 0.1234567               -> 12345678.1234567
-ddadd75038 add 12345678 0.12345678              -> 12345678.12345678
-ddadd75039 add 12345678 0.123456789             -> 12345678.12345679 Inexact Rounded
-ddadd75040 add 12345678 0.123456785             -> 12345678.12345678 Inexact Rounded
-ddadd75041 add 12345678 0.1234567850            -> 12345678.12345678 Inexact Rounded
-ddadd75042 add 12345678 0.1234567851            -> 12345678.12345679 Inexact Rounded
-ddadd75043 add 12345678 0.12345678501           -> 12345678.12345679 Inexact Rounded
-ddadd75044 add 12345678 0.123456785001          -> 12345678.12345679 Inexact Rounded
-ddadd75045 add 12345678 0.1234567850001         -> 12345678.12345679 Inexact Rounded
-ddadd75046 add 12345678 0.12345678500001        -> 12345678.12345679 Inexact Rounded
-ddadd75047 add 12345678 0.123456785000001       -> 12345678.12345679 Inexact Rounded
-ddadd75048 add 12345678 0.1234567850000001      -> 12345678.12345679 Inexact Rounded
-ddadd75049 add 12345678 0.1234567850000000      -> 12345678.12345678 Inexact Rounded
---                               90123456
-rounding: half_even
-ddadd75050 add 12345678 0.0234567750000000      -> 12345678.02345678 Inexact Rounded
-ddadd75051 add 12345678 0.0034567750000000      -> 12345678.00345678 Inexact Rounded
-ddadd75052 add 12345678 0.0004567750000000      -> 12345678.00045678 Inexact Rounded
-ddadd75053 add 12345678 0.0000567750000000      -> 12345678.00005678 Inexact Rounded
-ddadd75054 add 12345678 0.0000067750000000      -> 12345678.00000678 Inexact Rounded
-ddadd75055 add 12345678 0.0000007750000000      -> 12345678.00000078 Inexact Rounded
-ddadd75056 add 12345678 0.0000000750000000      -> 12345678.00000008 Inexact Rounded
-ddadd75057 add 12345678 0.0000000050000000      -> 12345678.00000000 Inexact Rounded
-ddadd75060 add 12345678 0.0234567750000001      -> 12345678.02345678 Inexact Rounded
-ddadd75061 add 12345678 0.0034567750000001      -> 12345678.00345678 Inexact Rounded
-ddadd75062 add 12345678 0.0004567750000001      -> 12345678.00045678 Inexact Rounded
-ddadd75063 add 12345678 0.0000567750000001      -> 12345678.00005678 Inexact Rounded
-ddadd75064 add 12345678 0.0000067750000001      -> 12345678.00000678 Inexact Rounded
-ddadd75065 add 12345678 0.0000007750000001      -> 12345678.00000078 Inexact Rounded
-ddadd75066 add 12345678 0.0000000750000001      -> 12345678.00000008 Inexact Rounded
-ddadd75067 add 12345678 0.0000000050000001      -> 12345678.00000001 Inexact Rounded
--- far-out residues (full coefficient gap is 16+15 digits)
-rounding: up
-ddadd75070 add 12345678 1E-8                    -> 12345678.00000001
-ddadd75071 add 12345678 1E-9                    -> 12345678.00000001 Inexact Rounded
-ddadd75072 add 12345678 1E-10                   -> 12345678.00000001 Inexact Rounded
-ddadd75073 add 12345678 1E-11                   -> 12345678.00000001 Inexact Rounded
-ddadd75074 add 12345678 1E-12                   -> 12345678.00000001 Inexact Rounded
-ddadd75075 add 12345678 1E-13                   -> 12345678.00000001 Inexact Rounded
-ddadd75076 add 12345678 1E-14                   -> 12345678.00000001 Inexact Rounded
-ddadd75077 add 12345678 1E-15                   -> 12345678.00000001 Inexact Rounded
-ddadd75078 add 12345678 1E-16                   -> 12345678.00000001 Inexact Rounded
-ddadd75079 add 12345678 1E-17                   -> 12345678.00000001 Inexact Rounded
-ddadd75080 add 12345678 1E-18                   -> 12345678.00000001 Inexact Rounded
-ddadd75081 add 12345678 1E-19                   -> 12345678.00000001 Inexact Rounded
-ddadd75082 add 12345678 1E-20                   -> 12345678.00000001 Inexact Rounded
-ddadd75083 add 12345678 1E-25                   -> 12345678.00000001 Inexact Rounded
-ddadd75084 add 12345678 1E-30                   -> 12345678.00000001 Inexact Rounded
-ddadd75085 add 12345678 1E-31                   -> 12345678.00000001 Inexact Rounded
-ddadd75086 add 12345678 1E-32                   -> 12345678.00000001 Inexact Rounded
-ddadd75087 add 12345678 1E-33                   -> 12345678.00000001 Inexact Rounded
-ddadd75088 add 12345678 1E-34                   -> 12345678.00000001 Inexact Rounded
-ddadd75089 add 12345678 1E-35                   -> 12345678.00000001 Inexact Rounded
-
--- Punit's
-ddadd75100 add 1.000 -200.000                   -> -199.000
-
--- Rounding swathe
-rounding: half_even
-ddadd81100 add  .2300    12345678901234.00    ->  12345678901234.23  Rounded
-ddadd81101 add  .2301    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81102 add  .2310    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81103 add  .2350    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81104 add  .2351    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81105 add  .2450    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81106 add  .2451    12345678901234.00    ->  12345678901234.25  Inexact Rounded
-ddadd81107 add  .2360    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81108 add  .2370    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81109 add  .2399    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81120 add  9999999999999999E+369  9E+369  ->  Infinity Overflow  Inexact Rounded
-ddadd81121 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow  Inexact Rounded
-
-rounding: half_up
-ddadd81200 add  .2300    12345678901234.00    ->  12345678901234.23  Rounded
-ddadd81201 add  .2301    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81202 add  .2310    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81203 add  .2350    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81204 add  .2351    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81205 add  .2450    12345678901234.00    ->  12345678901234.25  Inexact Rounded
-ddadd81206 add  .2451    12345678901234.00    ->  12345678901234.25  Inexact Rounded
-ddadd81207 add  .2360    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81208 add  .2370    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81209 add  .2399    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81220 add  9999999999999999E+369  9E+369 ->  Infinity Overflow  Inexact Rounded
-ddadd81221 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow  Inexact Rounded
-
-rounding: half_down
-ddadd81300 add  .2300    12345678901234.00    ->  12345678901234.23  Rounded
-ddadd81301 add  .2301    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81302 add  .2310    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81303 add  .2350    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81304 add  .2351    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81305 add  .2450    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81306 add  .2451    12345678901234.00    ->  12345678901234.25  Inexact Rounded
-ddadd81307 add  .2360    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81308 add  .2370    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81309 add  .2399    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81320 add  9999999999999999E+369  9E+369 ->  Infinity Overflow  Inexact Rounded
-ddadd81321 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow  Inexact Rounded
-
-rounding: up
-ddadd81400 add  .2300    12345678901234.00    ->  12345678901234.23  Rounded
-ddadd81401 add  .2301    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81402 add  .2310    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81403 add  .2350    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81404 add  .2351    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81405 add  .2450    12345678901234.00    ->  12345678901234.25  Inexact Rounded
-ddadd81406 add  .2451    12345678901234.00    ->  12345678901234.25  Inexact Rounded
-ddadd81407 add  .2360    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81408 add  .2370    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81409 add  .2399    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81411 add -.2399   -12345678901234.00    -> -12345678901234.24  Inexact Rounded
-ddadd81420 add  9999999999999999E+369  9E+369 ->  Infinity Overflow  Inexact Rounded
-ddadd81421 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow  Inexact Rounded
-
-rounding: down
-ddadd81500 add  .2300    12345678901234.00    ->  12345678901234.23  Rounded
-ddadd81501 add  .2301    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81502 add  .2310    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81503 add  .2350    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81504 add  .2351    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81505 add  .2450    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81506 add  .2451    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81507 add  .2360    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81508 add  .2370    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81509 add  .2399    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81511 add -.2399   -12345678901234.00    -> -12345678901234.23  Inexact Rounded
-ddadd81520 add  9999999999999999E+369  9E+369 ->  9.999999999999999E+384 Overflow  Inexact Rounded
-ddadd81521 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow  Inexact Rounded
-
-rounding: ceiling
-ddadd81600 add  .2300    12345678901234.00    ->  12345678901234.23  Rounded
-ddadd81601 add  .2301    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81602 add  .2310    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81603 add  .2350    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81604 add  .2351    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81605 add  .2450    12345678901234.00    ->  12345678901234.25  Inexact Rounded
-ddadd81606 add  .2451    12345678901234.00    ->  12345678901234.25  Inexact Rounded
-ddadd81607 add  .2360    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81608 add  .2370    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81609 add  .2399    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81611 add -.2399   -12345678901234.00    -> -12345678901234.23  Inexact Rounded
-ddadd81620 add  9999999999999999E+369  9E+369 ->  Infinity Overflow  Inexact Rounded
-ddadd81621 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow  Inexact Rounded
-
-rounding: floor
-ddadd81700 add  .2300    12345678901234.00    ->  12345678901234.23  Rounded
-ddadd81701 add  .2301    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81702 add  .2310    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81703 add  .2350    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81704 add  .2351    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81705 add  .2450    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81706 add  .2451    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd81707 add  .2360    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81708 add  .2370    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81709 add  .2399    12345678901234.00    ->  12345678901234.23  Inexact Rounded
-ddadd81711 add -.2399   -12345678901234.00    -> -12345678901234.24  Inexact Rounded
-ddadd81720 add  9999999999999999E+369  9E+369 ->  9.999999999999999E+384 Overflow  Inexact Rounded
-ddadd81721 add -9999999999999999E+369 -9E+369 -> -Infinity Overflow  Inexact Rounded
-
-rounding: 05up
-ddadd81800 add  .2000    12345678901234.00    ->  12345678901234.20  Rounded
-ddadd81801 add  .2001    12345678901234.00    ->  12345678901234.21  Inexact Rounded
-ddadd81802 add  .2010    12345678901234.00    ->  12345678901234.21  Inexact Rounded
-ddadd81803 add  .2050    12345678901234.00    ->  12345678901234.21  Inexact Rounded
-ddadd81804 add  .2051    12345678901234.00    ->  12345678901234.21  Inexact Rounded
-ddadd81807 add  .2060    12345678901234.00    ->  12345678901234.21  Inexact Rounded
-ddadd81808 add  .2070    12345678901234.00    ->  12345678901234.21  Inexact Rounded
-ddadd81809 add  .2099    12345678901234.00    ->  12345678901234.21  Inexact Rounded
-ddadd81811 add -.2099   -12345678901234.00    -> -12345678901234.21  Inexact Rounded
-ddadd81820 add  9999999999999999E+369  9E+369 ->  9.999999999999999E+384 Overflow  Inexact Rounded
-ddadd81821 add -9999999999999999E+369 -9E+369 -> -9.999999999999999E+384 Overflow  Inexact Rounded
-
-ddadd81900 add  .2100    12345678901234.00    ->  12345678901234.21  Rounded
-ddadd81901 add  .2101    12345678901234.00    ->  12345678901234.21  Inexact Rounded
-ddadd81902 add  .2110    12345678901234.00    ->  12345678901234.21  Inexact Rounded
-ddadd81903 add  .2150    12345678901234.00    ->  12345678901234.21  Inexact Rounded
-ddadd81904 add  .2151    12345678901234.00    ->  12345678901234.21  Inexact Rounded
-ddadd81907 add  .2160    12345678901234.00    ->  12345678901234.21  Inexact Rounded
-ddadd81908 add  .2170    12345678901234.00    ->  12345678901234.21  Inexact Rounded
-ddadd81909 add  .2199    12345678901234.00    ->  12345678901234.21  Inexact Rounded
-ddadd81911 add -.2199   -12345678901234.00    -> -12345678901234.21  Inexact Rounded
-
-ddadd82000 add  .2400    12345678901234.00    ->  12345678901234.24  Rounded
-ddadd82001 add  .2401    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd82002 add  .2410    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd82003 add  .2450    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd82004 add  .2451    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd82007 add  .2460    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd82008 add  .2470    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd82009 add  .2499    12345678901234.00    ->  12345678901234.24  Inexact Rounded
-ddadd82011 add -.2499   -12345678901234.00    -> -12345678901234.24  Inexact Rounded
-
-ddadd82100 add  .2500    12345678901234.00    ->  12345678901234.25  Rounded
-ddadd82101 add  .2501    12345678901234.00    ->  12345678901234.26  Inexact Rounded
-ddadd82102 add  .2510    12345678901234.00    ->  12345678901234.26  Inexact Rounded
-ddadd82103 add  .2550    12345678901234.00    ->  12345678901234.26  Inexact Rounded
-ddadd82104 add  .2551    12345678901234.00    ->  12345678901234.26  Inexact Rounded
-ddadd82107 add  .2560    12345678901234.00    ->  12345678901234.26  Inexact Rounded
-ddadd82108 add  .2570    12345678901234.00    ->  12345678901234.26  Inexact Rounded
-ddadd82109 add  .2599    12345678901234.00    ->  12345678901234.26  Inexact Rounded
-ddadd82111 add -.2599   -12345678901234.00    -> -12345678901234.26  Inexact Rounded
-
-ddadd82200 add  .2600    12345678901234.00    ->  12345678901234.26  Rounded
-ddadd82201 add  .2601    12345678901234.00    ->  12345678901234.26  Inexact Rounded
-ddadd82202 add  .2610    12345678901234.00    ->  12345678901234.26  Inexact Rounded
-ddadd82203 add  .2650    12345678901234.00    ->  12345678901234.26  Inexact Rounded
-ddadd82204 add  .2651    12345678901234.00    ->  12345678901234.26  Inexact Rounded
-ddadd82207 add  .2660    12345678901234.00    ->  12345678901234.26  Inexact Rounded
-ddadd82208 add  .2670    12345678901234.00    ->  12345678901234.26  Inexact Rounded
-ddadd82209 add  .2699    12345678901234.00    ->  12345678901234.26  Inexact Rounded
-ddadd82211 add -.2699   -12345678901234.00    -> -12345678901234.26  Inexact Rounded
-
-ddadd82300 add  .2900    12345678901234.00    ->  12345678901234.29  Rounded
-ddadd82301 add  .2901    12345678901234.00    ->  12345678901234.29  Inexact Rounded
-ddadd82302 add  .2910    12345678901234.00    ->  12345678901234.29  Inexact Rounded
-ddadd82303 add  .2950    12345678901234.00    ->  12345678901234.29  Inexact Rounded
-ddadd82304 add  .2951    12345678901234.00    ->  12345678901234.29  Inexact Rounded
-ddadd82307 add  .2960    12345678901234.00    ->  12345678901234.29  Inexact Rounded
-ddadd82308 add  .2970    12345678901234.00    ->  12345678901234.29  Inexact Rounded
-ddadd82309 add  .2999    12345678901234.00    ->  12345678901234.29  Inexact Rounded
-ddadd82311 add -.2999   -12345678901234.00    -> -12345678901234.29  Inexact Rounded
-
--- Null tests
-ddadd9990 add 10  # -> NaN Invalid_operation
-ddadd9991 add  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAnd.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAnd.decTest
deleted file mode 100644
index 6765175..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddAnd.decTest
+++ /dev/null
@@ -1,347 +0,0 @@
-------------------------------------------------------------------------
--- ddAnd.decTest -- digitwise logical AND for decDoubles              --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Sanity check (truth table)
-ddand001 and             0    0 ->    0
-ddand002 and             0    1 ->    0
-ddand003 and             1    0 ->    0
-ddand004 and             1    1 ->    1
-ddand005 and          1100 1010 -> 1000
--- and at msd and msd-1
---           1234567890123456 1234567890123456      1234567890123456
-ddand006 and 0000000000000000 0000000000000000 ->                  0
-ddand007 and 0000000000000000 1000000000000000 ->                  0
-ddand008 and 1000000000000000 0000000000000000 ->                  0
-ddand009 and 1000000000000000 1000000000000000 ->   1000000000000000
-ddand010 and 0000000000000000 0000000000000000 ->                  0
-ddand011 and 0000000000000000 0100000000000000 ->                  0
-ddand012 and 0100000000000000 0000000000000000 ->                  0
-ddand013 and 0100000000000000 0100000000000000 ->    100000000000000
-
--- Various lengths
---           1234567890123456 1234567890123456      1234567890123456
-ddand021 and 1111111111111111 1111111111111111  ->  1111111111111111
-ddand024 and 1111111111111111  111111111111111  ->   111111111111111
-ddand025 and 1111111111111111   11111111111111  ->    11111111111111
-ddand026 and 1111111111111111    1111111111111  ->     1111111111111
-ddand027 and 1111111111111111     111111111111  ->      111111111111
-ddand028 and 1111111111111111      11111111111  ->       11111111111
-ddand029 and 1111111111111111       1111111111  ->        1111111111
-ddand030 and 1111111111111111        111111111  ->         111111111
-ddand031 and 1111111111111111         11111111  ->          11111111
-ddand032 and 1111111111111111          1111111  ->           1111111
-ddand033 and 1111111111111111           111111  ->            111111
-ddand034 and 1111111111111111            11111  ->             11111
-ddand035 and 1111111111111111             1111  ->              1111
-ddand036 and 1111111111111111              111  ->               111
-ddand037 and 1111111111111111               11  ->                11
-ddand038 and 1111111111111111                1  ->                 1
-ddand039 and 1111111111111111                0  ->                 0
-
-ddand040 and 1111111111111111    1111111111111111 ->  1111111111111111
-ddand041 and  111111111111111    1111111111111111 ->   111111111111111
-ddand042 and  111111111111111    1111111111111111 ->   111111111111111
-ddand043 and   11111111111111    1111111111111111 ->    11111111111111
-ddand044 and    1111111111111    1111111111111111 ->     1111111111111
-ddand045 and     111111111111    1111111111111111 ->      111111111111
-ddand046 and      11111111111    1111111111111111 ->       11111111111
-ddand047 and       1111111111    1111111111111111 ->        1111111111
-ddand048 and        111111111    1111111111111111 ->         111111111
-ddand049 and         11111111    1111111111111111 ->          11111111
-ddand050 and          1111111    1111111111111111 ->           1111111
-ddand051 and           111111    1111111111111111 ->            111111
-ddand052 and            11111    1111111111111111 ->             11111
-ddand053 and             1111    1111111111111111 ->              1111
-ddand054 and              111    1111111111111111 ->               111
-ddand055 and               11    1111111111111111 ->                11
-ddand056 and                1    1111111111111111 ->                 1
-ddand057 and                0    1111111111111111 ->                 0
-
-ddand150 and 1111111111  1  ->  1
-ddand151 and  111111111  1  ->  1
-ddand152 and   11111111  1  ->  1
-ddand153 and    1111111  1  ->  1
-ddand154 and     111111  1  ->  1
-ddand155 and      11111  1  ->  1
-ddand156 and       1111  1  ->  1
-ddand157 and        111  1  ->  1
-ddand158 and         11  1  ->  1
-ddand159 and          1  1  ->  1
-
-ddand160 and 1111111111  0  ->  0
-ddand161 and  111111111  0  ->  0
-ddand162 and   11111111  0  ->  0
-ddand163 and    1111111  0  ->  0
-ddand164 and     111111  0  ->  0
-ddand165 and      11111  0  ->  0
-ddand166 and       1111  0  ->  0
-ddand167 and        111  0  ->  0
-ddand168 and         11  0  ->  0
-ddand169 and          1  0  ->  0
-
-ddand170 and 1  1111111111  ->  1
-ddand171 and 1   111111111  ->  1
-ddand172 and 1    11111111  ->  1
-ddand173 and 1     1111111  ->  1
-ddand174 and 1      111111  ->  1
-ddand175 and 1       11111  ->  1
-ddand176 and 1        1111  ->  1
-ddand177 and 1         111  ->  1
-ddand178 and 1          11  ->  1
-ddand179 and 1           1  ->  1
-
-ddand180 and 0  1111111111  ->  0
-ddand181 and 0   111111111  ->  0
-ddand182 and 0    11111111  ->  0
-ddand183 and 0     1111111  ->  0
-ddand184 and 0      111111  ->  0
-ddand185 and 0       11111  ->  0
-ddand186 and 0        1111  ->  0
-ddand187 and 0         111  ->  0
-ddand188 and 0          11  ->  0
-ddand189 and 0           1  ->  0
-
-ddand090 and 011111111  111111111  ->   11111111
-ddand091 and 101111111  111111111  ->  101111111
-ddand092 and 110111111  111111111  ->  110111111
-ddand093 and 111011111  111111111  ->  111011111
-ddand094 and 111101111  111111111  ->  111101111
-ddand095 and 111110111  111111111  ->  111110111
-ddand096 and 111111011  111111111  ->  111111011
-ddand097 and 111111101  111111111  ->  111111101
-ddand098 and 111111110  111111111  ->  111111110
-
-ddand100 and 111111111  011111111  ->   11111111
-ddand101 and 111111111  101111111  ->  101111111
-ddand102 and 111111111  110111111  ->  110111111
-ddand103 and 111111111  111011111  ->  111011111
-ddand104 and 111111111  111101111  ->  111101111
-ddand105 and 111111111  111110111  ->  111110111
-ddand106 and 111111111  111111011  ->  111111011
-ddand107 and 111111111  111111101  ->  111111101
-ddand108 and 111111111  111111110  ->  111111110
-
--- non-0/1 should not be accepted, nor should signs
-ddand220 and 111111112  111111111  ->  NaN Invalid_operation
-ddand221 and 333333333  333333333  ->  NaN Invalid_operation
-ddand222 and 555555555  555555555  ->  NaN Invalid_operation
-ddand223 and 777777777  777777777  ->  NaN Invalid_operation
-ddand224 and 999999999  999999999  ->  NaN Invalid_operation
-ddand225 and 222222222  999999999  ->  NaN Invalid_operation
-ddand226 and 444444444  999999999  ->  NaN Invalid_operation
-ddand227 and 666666666  999999999  ->  NaN Invalid_operation
-ddand228 and 888888888  999999999  ->  NaN Invalid_operation
-ddand229 and 999999999  222222222  ->  NaN Invalid_operation
-ddand230 and 999999999  444444444  ->  NaN Invalid_operation
-ddand231 and 999999999  666666666  ->  NaN Invalid_operation
-ddand232 and 999999999  888888888  ->  NaN Invalid_operation
--- a few randoms
-ddand240 and  567468689 -934981942 ->  NaN Invalid_operation
-ddand241 and  567367689  934981942 ->  NaN Invalid_operation
-ddand242 and -631917772 -706014634 ->  NaN Invalid_operation
-ddand243 and -756253257  138579234 ->  NaN Invalid_operation
-ddand244 and  835590149  567435400 ->  NaN Invalid_operation
--- test MSD
-ddand250 and  2000000000000000 1000000000000000 ->  NaN Invalid_operation
-ddand251 and  7000000000000000 1000000000000000 ->  NaN Invalid_operation
-ddand252 and  8000000000000000 1000000000000000 ->  NaN Invalid_operation
-ddand253 and  9000000000000000 1000000000000000 ->  NaN Invalid_operation
-ddand254 and  2000000000000000 0000000000000000 ->  NaN Invalid_operation
-ddand255 and  7000000000000000 0000000000000000 ->  NaN Invalid_operation
-ddand256 and  8000000000000000 0000000000000000 ->  NaN Invalid_operation
-ddand257 and  9000000000000000 0000000000000000 ->  NaN Invalid_operation
-ddand258 and  1000000000000000 2000000000000000 ->  NaN Invalid_operation
-ddand259 and  1000000000000000 7000000000000000 ->  NaN Invalid_operation
-ddand260 and  1000000000000000 8000000000000000 ->  NaN Invalid_operation
-ddand261 and  1000000000000000 9000000000000000 ->  NaN Invalid_operation
-ddand262 and  0000000000000000 2000000000000000 ->  NaN Invalid_operation
-ddand263 and  0000000000000000 7000000000000000 ->  NaN Invalid_operation
-ddand264 and  0000000000000000 8000000000000000 ->  NaN Invalid_operation
-ddand265 and  0000000000000000 9000000000000000 ->  NaN Invalid_operation
--- test MSD-1
-ddand270 and  0200001000000000 1000100000000010 ->  NaN Invalid_operation
-ddand271 and  0700000100000000 1000010000000100 ->  NaN Invalid_operation
-ddand272 and  0800000010000000 1000001000001000 ->  NaN Invalid_operation
-ddand273 and  0900000001000000 1000000100010000 ->  NaN Invalid_operation
-ddand274 and  1000000000100000 0200000010100000 ->  NaN Invalid_operation
-ddand275 and  1000000000010000 0700000001000000 ->  NaN Invalid_operation
-ddand276 and  1000000000001000 0800000010100000 ->  NaN Invalid_operation
-ddand277 and  1000000000000100 0900000000010000 ->  NaN Invalid_operation
--- test LSD
-ddand280 and  0010000000000002 1000000100000001 ->  NaN Invalid_operation
-ddand281 and  0001000000000007 1000001000000011 ->  NaN Invalid_operation
-ddand282 and  0000100000000008 1000010000000001 ->  NaN Invalid_operation
-ddand283 and  0000010000000009 1000100000000001 ->  NaN Invalid_operation
-ddand284 and  1000001000000000 0001000000000002 ->  NaN Invalid_operation
-ddand285 and  1000000100000000 0010000000000007 ->  NaN Invalid_operation
-ddand286 and  1000000010000000 0100000000000008 ->  NaN Invalid_operation
-ddand287 and  1000000001000000 1000000000000009 ->  NaN Invalid_operation
--- test Middie
-ddand288 and  0010000020000000 1000001000000000 ->  NaN Invalid_operation
-ddand289 and  0001000070000001 1000000100000000 ->  NaN Invalid_operation
-ddand290 and  0000100080000010 1000000010000000 ->  NaN Invalid_operation
-ddand291 and  0000010090000100 1000000001000000 ->  NaN Invalid_operation
-ddand292 and  1000001000001000 0000000020100000 ->  NaN Invalid_operation
-ddand293 and  1000000100010000 0000000070010000 ->  NaN Invalid_operation
-ddand294 and  1000000010100000 0000000080001000 ->  NaN Invalid_operation
-ddand295 and  1000000001000000 0000000090000100 ->  NaN Invalid_operation
--- signs
-ddand296 and -1000000001000000 -0000010000000100 ->  NaN Invalid_operation
-ddand297 and -1000000001000000  0000000010000100 ->  NaN Invalid_operation
-ddand298 and  1000000001000000 -0000001000000100 ->  NaN Invalid_operation
-ddand299 and  1000000001000000  0000000011000100 ->  1000000
-
--- Nmax, Nmin, Ntiny-like
-ddand331 and  2   9.99999999E+199     -> NaN Invalid_operation
-ddand332 and  3   1E-199              -> NaN Invalid_operation
-ddand333 and  4   1.00000000E-199     -> NaN Invalid_operation
-ddand334 and  5   1E-100              -> NaN Invalid_operation
-ddand335 and  6   -1E-100             -> NaN Invalid_operation
-ddand336 and  7   -1.00000000E-199    -> NaN Invalid_operation
-ddand337 and  8   -1E-199             -> NaN Invalid_operation
-ddand338 and  9   -9.99999999E+199    -> NaN Invalid_operation
-ddand341 and  9.99999999E+199     -18 -> NaN Invalid_operation
-ddand342 and  1E-199               01 -> NaN Invalid_operation
-ddand343 and  1.00000000E-199     -18 -> NaN Invalid_operation
-ddand344 and  1E-100               18 -> NaN Invalid_operation
-ddand345 and  -1E-100             -10 -> NaN Invalid_operation
-ddand346 and  -1.00000000E-199     18 -> NaN Invalid_operation
-ddand347 and  -1E-199              10 -> NaN Invalid_operation
-ddand348 and  -9.99999999E+199    -18 -> NaN Invalid_operation
-
--- A few other non-integers
-ddand361 and  1.0                  1  -> NaN Invalid_operation
-ddand362 and  1E+1                 1  -> NaN Invalid_operation
-ddand363 and  0.0                  1  -> NaN Invalid_operation
-ddand364 and  0E+1                 1  -> NaN Invalid_operation
-ddand365 and  9.9                  1  -> NaN Invalid_operation
-ddand366 and  9E+1                 1  -> NaN Invalid_operation
-ddand371 and  0 1.0                   -> NaN Invalid_operation
-ddand372 and  0 1E+1                  -> NaN Invalid_operation
-ddand373 and  0 0.0                   -> NaN Invalid_operation
-ddand374 and  0 0E+1                  -> NaN Invalid_operation
-ddand375 and  0 9.9                   -> NaN Invalid_operation
-ddand376 and  0 9E+1                  -> NaN Invalid_operation
-
--- All Specials are in error
-ddand780 and -Inf  -Inf   -> NaN Invalid_operation
-ddand781 and -Inf  -1000  -> NaN Invalid_operation
-ddand782 and -Inf  -1     -> NaN Invalid_operation
-ddand783 and -Inf  -0     -> NaN Invalid_operation
-ddand784 and -Inf   0     -> NaN Invalid_operation
-ddand785 and -Inf   1     -> NaN Invalid_operation
-ddand786 and -Inf   1000  -> NaN Invalid_operation
-ddand787 and -1000 -Inf   -> NaN Invalid_operation
-ddand788 and -Inf  -Inf   -> NaN Invalid_operation
-ddand789 and -1    -Inf   -> NaN Invalid_operation
-ddand790 and -0    -Inf   -> NaN Invalid_operation
-ddand791 and  0    -Inf   -> NaN Invalid_operation
-ddand792 and  1    -Inf   -> NaN Invalid_operation
-ddand793 and  1000 -Inf   -> NaN Invalid_operation
-ddand794 and  Inf  -Inf   -> NaN Invalid_operation
-
-ddand800 and  Inf  -Inf   -> NaN Invalid_operation
-ddand801 and  Inf  -1000  -> NaN Invalid_operation
-ddand802 and  Inf  -1     -> NaN Invalid_operation
-ddand803 and  Inf  -0     -> NaN Invalid_operation
-ddand804 and  Inf   0     -> NaN Invalid_operation
-ddand805 and  Inf   1     -> NaN Invalid_operation
-ddand806 and  Inf   1000  -> NaN Invalid_operation
-ddand807 and  Inf   Inf   -> NaN Invalid_operation
-ddand808 and -1000  Inf   -> NaN Invalid_operation
-ddand809 and -Inf   Inf   -> NaN Invalid_operation
-ddand810 and -1     Inf   -> NaN Invalid_operation
-ddand811 and -0     Inf   -> NaN Invalid_operation
-ddand812 and  0     Inf   -> NaN Invalid_operation
-ddand813 and  1     Inf   -> NaN Invalid_operation
-ddand814 and  1000  Inf   -> NaN Invalid_operation
-ddand815 and  Inf   Inf   -> NaN Invalid_operation
-
-ddand821 and  NaN -Inf    -> NaN Invalid_operation
-ddand822 and  NaN -1000   -> NaN Invalid_operation
-ddand823 and  NaN -1      -> NaN Invalid_operation
-ddand824 and  NaN -0      -> NaN Invalid_operation
-ddand825 and  NaN  0      -> NaN Invalid_operation
-ddand826 and  NaN  1      -> NaN Invalid_operation
-ddand827 and  NaN  1000   -> NaN Invalid_operation
-ddand828 and  NaN  Inf    -> NaN Invalid_operation
-ddand829 and  NaN  NaN    -> NaN Invalid_operation
-ddand830 and -Inf  NaN    -> NaN Invalid_operation
-ddand831 and -1000 NaN    -> NaN Invalid_operation
-ddand832 and -1    NaN    -> NaN Invalid_operation
-ddand833 and -0    NaN    -> NaN Invalid_operation
-ddand834 and  0    NaN    -> NaN Invalid_operation
-ddand835 and  1    NaN    -> NaN Invalid_operation
-ddand836 and  1000 NaN    -> NaN Invalid_operation
-ddand837 and  Inf  NaN    -> NaN Invalid_operation
-
-ddand841 and  sNaN -Inf   ->  NaN  Invalid_operation
-ddand842 and  sNaN -1000  ->  NaN  Invalid_operation
-ddand843 and  sNaN -1     ->  NaN  Invalid_operation
-ddand844 and  sNaN -0     ->  NaN  Invalid_operation
-ddand845 and  sNaN  0     ->  NaN  Invalid_operation
-ddand846 and  sNaN  1     ->  NaN  Invalid_operation
-ddand847 and  sNaN  1000  ->  NaN  Invalid_operation
-ddand848 and  sNaN  NaN   ->  NaN  Invalid_operation
-ddand849 and  sNaN sNaN   ->  NaN  Invalid_operation
-ddand850 and  NaN  sNaN   ->  NaN  Invalid_operation
-ddand851 and -Inf  sNaN   ->  NaN  Invalid_operation
-ddand852 and -1000 sNaN   ->  NaN  Invalid_operation
-ddand853 and -1    sNaN   ->  NaN  Invalid_operation
-ddand854 and -0    sNaN   ->  NaN  Invalid_operation
-ddand855 and  0    sNaN   ->  NaN  Invalid_operation
-ddand856 and  1    sNaN   ->  NaN  Invalid_operation
-ddand857 and  1000 sNaN   ->  NaN  Invalid_operation
-ddand858 and  Inf  sNaN   ->  NaN  Invalid_operation
-ddand859 and  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddand861 and  NaN1   -Inf    -> NaN Invalid_operation
-ddand862 and +NaN2   -1000   -> NaN Invalid_operation
-ddand863 and  NaN3    1000   -> NaN Invalid_operation
-ddand864 and  NaN4    Inf    -> NaN Invalid_operation
-ddand865 and  NaN5   +NaN6   -> NaN Invalid_operation
-ddand866 and -Inf     NaN7   -> NaN Invalid_operation
-ddand867 and -1000    NaN8   -> NaN Invalid_operation
-ddand868 and  1000    NaN9   -> NaN Invalid_operation
-ddand869 and  Inf    +NaN10  -> NaN Invalid_operation
-ddand871 and  sNaN11  -Inf   -> NaN Invalid_operation
-ddand872 and  sNaN12  -1000  -> NaN Invalid_operation
-ddand873 and  sNaN13   1000  -> NaN Invalid_operation
-ddand874 and  sNaN14   NaN17 -> NaN Invalid_operation
-ddand875 and  sNaN15  sNaN18 -> NaN Invalid_operation
-ddand876 and  NaN16   sNaN19 -> NaN Invalid_operation
-ddand877 and -Inf    +sNaN20 -> NaN Invalid_operation
-ddand878 and -1000    sNaN21 -> NaN Invalid_operation
-ddand879 and  1000    sNaN22 -> NaN Invalid_operation
-ddand880 and  Inf     sNaN23 -> NaN Invalid_operation
-ddand881 and +NaN25  +sNaN24 -> NaN Invalid_operation
-ddand882 and -NaN26    NaN28 -> NaN Invalid_operation
-ddand883 and -sNaN27  sNaN29 -> NaN Invalid_operation
-ddand884 and  1000    -NaN30 -> NaN Invalid_operation
-ddand885 and  1000   -sNaN31 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddBase.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddBase.decTest
deleted file mode 100644
index fbd6ccd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddBase.decTest
+++ /dev/null
@@ -1,1104 +0,0 @@
-------------------------------------------------------------------------
--- ddBase.decTest -- base decDouble <--> string conversions           --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This file tests base conversions from string to a decimal number
--- and back to a string (in Scientific form)
-
--- Note that unlike other operations the operand is subject to rounding
--- to conform to emax and precision settings (that is, numbers will
--- conform to rules and exponent will be in permitted range).  The
--- 'left hand side', therefore, may have numbers that cannot be
--- represented in a decDouble.  Some testcases go to the limit of the
--- next-wider format, and hence these testcases may also be used to
--- test narrowing and widening operations.
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
-ddbas001 toSci       0 -> 0
-ddbas002 toSci       1 -> 1
-ddbas003 toSci     1.0 -> 1.0
-ddbas004 toSci    1.00 -> 1.00
-ddbas005 toSci      10 -> 10
-ddbas006 toSci    1000 -> 1000
-ddbas007 toSci    10.0 -> 10.0
-ddbas008 toSci    10.1 -> 10.1
-ddbas009 toSci    10.4 -> 10.4
-ddbas010 toSci    10.5 -> 10.5
-ddbas011 toSci    10.6 -> 10.6
-ddbas012 toSci    10.9 -> 10.9
-ddbas013 toSci    11.0 -> 11.0
-ddbas014 toSci  1.234 -> 1.234
-ddbas015 toSci  0.123 -> 0.123
-ddbas016 toSci  0.012 -> 0.012
-ddbas017 toSci  -0    -> -0
-ddbas018 toSci  -0.0  -> -0.0
-ddbas019 toSci -00.00 -> -0.00
-
-ddbas021 toSci     -1 -> -1
-ddbas022 toSci   -1.0 -> -1.0
-ddbas023 toSci   -0.1 -> -0.1
-ddbas024 toSci   -9.1 -> -9.1
-ddbas025 toSci   -9.11 -> -9.11
-ddbas026 toSci   -9.119 -> -9.119
-ddbas027 toSci   -9.999 -> -9.999
-
-ddbas030 toSci  '123456789.123456'   -> '123456789.123456'
-ddbas031 toSci  '123456789.000000'   -> '123456789.000000'
-ddbas032 toSci   '123456789123456'   -> '123456789123456'
-ddbas033 toSci   '0.0000123456789'   -> '0.0000123456789'
-ddbas034 toSci  '0.00000123456789'   -> '0.00000123456789'
-ddbas035 toSci '0.000000123456789'   -> '1.23456789E-7'
-ddbas036 toSci '0.0000000123456789'  -> '1.23456789E-8'
-
-ddbas037 toSci '0.123456789012344'   -> '0.123456789012344'
-ddbas038 toSci '0.123456789012345'   -> '0.123456789012345'
-
--- test finite bounds (Negs of, then 0, Ntiny, Nmin, other, Nmax)
-ddbsn001 toSci -9.999999999999999E+384 -> -9.999999999999999E+384
-ddbsn002 toSci -1E-383 -> -1E-383
-ddbsn003 toSci -1E-398 -> -1E-398 Subnormal
-ddbsn004 toSci -0 -> -0
-ddbsn005 toSci +0 ->  0
-ddbsn006 toSci +1E-398 ->  1E-398 Subnormal
-ddbsn007 toSci +1E-383 ->  1E-383
-ddbsn008 toSci +9.999999999999999E+384 ->  9.999999999999999E+384
-
--- String [many more examples are implicitly tested elsewhere]
--- strings without E cannot generate E in result
-ddbas040 toSci "12"        -> '12'
-ddbas041 toSci "-76"       -> '-76'
-ddbas042 toSci "12.76"     -> '12.76'
-ddbas043 toSci "+12.76"    -> '12.76'
-ddbas044 toSci "012.76"    -> '12.76'
-ddbas045 toSci "+0.003"    -> '0.003'
-ddbas046 toSci "17."       -> '17'
-ddbas047 toSci ".5"        -> '0.5'
-ddbas048 toSci "044"       -> '44'
-ddbas049 toSci "0044"      -> '44'
-ddbas050 toSci "0.0005"      -> '0.0005'
-ddbas051 toSci "00.00005"    -> '0.00005'
-ddbas052 toSci "0.000005"    -> '0.000005'
-ddbas053 toSci "0.0000050"   -> '0.0000050'
-ddbas054 toSci "0.0000005"   -> '5E-7'
-ddbas055 toSci "0.00000005"  -> '5E-8'
-ddbas056 toSci "12345678.543210" -> '12345678.543210'
-ddbas057 toSci "2345678.543210" -> '2345678.543210'
-ddbas058 toSci "345678.543210" -> '345678.543210'
-ddbas059 toSci "0345678.54321" -> '345678.54321'
-ddbas060 toSci "345678.5432" -> '345678.5432'
-ddbas061 toSci "+345678.5432" -> '345678.5432'
-ddbas062 toSci "+0345678.5432" -> '345678.5432'
-ddbas063 toSci "+00345678.5432" -> '345678.5432'
-ddbas064 toSci "-345678.5432"  -> '-345678.5432'
-ddbas065 toSci "-0345678.5432"  -> '-345678.5432'
-ddbas066 toSci "-00345678.5432"  -> '-345678.5432'
--- examples
-ddbas067 toSci "5E-6"        -> '0.000005'
-ddbas068 toSci "50E-7"       -> '0.0000050'
-ddbas069 toSci "5E-7"        -> '5E-7'
-
--- [No exotics as no Unicode]
-
--- rounded with dots in all (including edge) places
-ddbas071 toSci  .1234567890123456123  -> 0.1234567890123456 Inexact Rounded
-ddbas072 toSci  1.234567890123456123  -> 1.234567890123456 Inexact Rounded
-ddbas073 toSci  12.34567890123456123  -> 12.34567890123456 Inexact Rounded
-ddbas074 toSci  123.4567890123456123  -> 123.4567890123456 Inexact Rounded
-ddbas075 toSci  1234.567890123456123  -> 1234.567890123456 Inexact Rounded
-ddbas076 toSci  12345.67890123456123  -> 12345.67890123456 Inexact Rounded
-ddbas077 toSci  123456.7890123456123  -> 123456.7890123456 Inexact Rounded
-ddbas078 toSci  1234567.890123456123  -> 1234567.890123456 Inexact Rounded
-ddbas079 toSci  12345678.90123456123  -> 12345678.90123456 Inexact Rounded
-ddbas080 toSci  123456789.0123456123  -> 123456789.0123456 Inexact Rounded
-ddbas081 toSci  1234567890.123456123  -> 1234567890.123456 Inexact Rounded
-ddbas082 toSci  12345678901.23456123  -> 12345678901.23456 Inexact Rounded
-ddbas083 toSci  123456789012.3456123  -> 123456789012.3456 Inexact Rounded
-ddbas084 toSci  1234567890123.456123  -> 1234567890123.456 Inexact Rounded
-ddbas085 toSci  12345678901234.56123  -> 12345678901234.56 Inexact Rounded
-ddbas086 toSci  123456789012345.6123  -> 123456789012345.6 Inexact Rounded
-ddbas087 toSci  1234567890123456.123  -> 1234567890123456  Inexact Rounded
-ddbas088 toSci  12345678901234561.23  -> 1.234567890123456E+16 Inexact Rounded
-ddbas089 toSci  123456789012345612.3  -> 1.234567890123456E+17 Inexact Rounded
-ddbas090 toSci  1234567890123456123.  -> 1.234567890123456E+18 Inexact Rounded
-
-
--- Numbers with E
-ddbas130 toSci "0.000E-1"  -> '0.0000'
-ddbas131 toSci "0.000E-2"  -> '0.00000'
-ddbas132 toSci "0.000E-3"  -> '0.000000'
-ddbas133 toSci "0.000E-4"  -> '0E-7'
-ddbas134 toSci "0.00E-2"   -> '0.0000'
-ddbas135 toSci "0.00E-3"   -> '0.00000'
-ddbas136 toSci "0.00E-4"   -> '0.000000'
-ddbas137 toSci "0.00E-5"   -> '0E-7'
-ddbas138 toSci "+0E+9"     -> '0E+9'
-ddbas139 toSci "-0E+9"     -> '-0E+9'
-ddbas140 toSci "1E+9"      -> '1E+9'
-ddbas141 toSci "1e+09"     -> '1E+9'
-ddbas142 toSci "1E+90"     -> '1E+90'
-ddbas143 toSci "+1E+009"   -> '1E+9'
-ddbas144 toSci "0E+9"      -> '0E+9'
-ddbas145 toSci "1E+9"      -> '1E+9'
-ddbas146 toSci "1E+09"     -> '1E+9'
-ddbas147 toSci "1e+90"     -> '1E+90'
-ddbas148 toSci "1E+009"    -> '1E+9'
-ddbas149 toSci "000E+9"    -> '0E+9'
-ddbas150 toSci "1E9"       -> '1E+9'
-ddbas151 toSci "1e09"      -> '1E+9'
-ddbas152 toSci "1E90"      -> '1E+90'
-ddbas153 toSci "1E009"     -> '1E+9'
-ddbas154 toSci "0E9"       -> '0E+9'
-ddbas155 toSci "0.000e+0"  -> '0.000'
-ddbas156 toSci "0.000E-1"  -> '0.0000'
-ddbas157 toSci "4E+9"      -> '4E+9'
-ddbas158 toSci "44E+9"     -> '4.4E+10'
-ddbas159 toSci "0.73e-7"   -> '7.3E-8'
-ddbas160 toSci "00E+9"     -> '0E+9'
-ddbas161 toSci "00E-9"     -> '0E-9'
-ddbas162 toSci "10E+9"     -> '1.0E+10'
-ddbas163 toSci "10E+09"    -> '1.0E+10'
-ddbas164 toSci "10e+90"    -> '1.0E+91'
-ddbas165 toSci "10E+009"   -> '1.0E+10'
-ddbas166 toSci "100e+9"    -> '1.00E+11'
-ddbas167 toSci "100e+09"   -> '1.00E+11'
-ddbas168 toSci "100E+90"   -> '1.00E+92'
-ddbas169 toSci "100e+009"  -> '1.00E+11'
-
-ddbas170 toSci "1.265"     -> '1.265'
-ddbas171 toSci "1.265E-20" -> '1.265E-20'
-ddbas172 toSci "1.265E-8"  -> '1.265E-8'
-ddbas173 toSci "1.265E-4"  -> '0.0001265'
-ddbas174 toSci "1.265E-3"  -> '0.001265'
-ddbas175 toSci "1.265E-2"  -> '0.01265'
-ddbas176 toSci "1.265E-1"  -> '0.1265'
-ddbas177 toSci "1.265E-0"  -> '1.265'
-ddbas178 toSci "1.265E+1"  -> '12.65'
-ddbas179 toSci "1.265E+2"  -> '126.5'
-ddbas180 toSci "1.265E+3"  -> '1265'
-ddbas181 toSci "1.265E+4"  -> '1.265E+4'
-ddbas182 toSci "1.265E+8"  -> '1.265E+8'
-ddbas183 toSci "1.265E+20" -> '1.265E+20'
-
-ddbas190 toSci "12.65"     -> '12.65'
-ddbas191 toSci "12.65E-20" -> '1.265E-19'
-ddbas192 toSci "12.65E-8"  -> '1.265E-7'
-ddbas193 toSci "12.65E-4"  -> '0.001265'
-ddbas194 toSci "12.65E-3"  -> '0.01265'
-ddbas195 toSci "12.65E-2"  -> '0.1265'
-ddbas196 toSci "12.65E-1"  -> '1.265'
-ddbas197 toSci "12.65E-0"  -> '12.65'
-ddbas198 toSci "12.65E+1"  -> '126.5'
-ddbas199 toSci "12.65E+2"  -> '1265'
-ddbas200 toSci "12.65E+3"  -> '1.265E+4'
-ddbas201 toSci "12.65E+4"  -> '1.265E+5'
-ddbas202 toSci "12.65E+8"  -> '1.265E+9'
-ddbas203 toSci "12.65E+20" -> '1.265E+21'
-
-ddbas210 toSci "126.5"     -> '126.5'
-ddbas211 toSci "126.5E-20" -> '1.265E-18'
-ddbas212 toSci "126.5E-8"  -> '0.000001265'
-ddbas213 toSci "126.5E-4"  -> '0.01265'
-ddbas214 toSci "126.5E-3"  -> '0.1265'
-ddbas215 toSci "126.5E-2"  -> '1.265'
-ddbas216 toSci "126.5E-1"  -> '12.65'
-ddbas217 toSci "126.5E-0"  -> '126.5'
-ddbas218 toSci "126.5E+1"  -> '1265'
-ddbas219 toSci "126.5E+2"  -> '1.265E+4'
-ddbas220 toSci "126.5E+3"  -> '1.265E+5'
-ddbas221 toSci "126.5E+4"  -> '1.265E+6'
-ddbas222 toSci "126.5E+8"  -> '1.265E+10'
-ddbas223 toSci "126.5E+20" -> '1.265E+22'
-
-ddbas230 toSci "1265"     -> '1265'
-ddbas231 toSci "1265E-20" -> '1.265E-17'
-ddbas232 toSci "1265E-8"  -> '0.00001265'
-ddbas233 toSci "1265E-4"  -> '0.1265'
-ddbas234 toSci "1265E-3"  -> '1.265'
-ddbas235 toSci "1265E-2"  -> '12.65'
-ddbas236 toSci "1265E-1"  -> '126.5'
-ddbas237 toSci "1265E-0"  -> '1265'
-ddbas238 toSci "1265E+1"  -> '1.265E+4'
-ddbas239 toSci "1265E+2"  -> '1.265E+5'
-ddbas240 toSci "1265E+3"  -> '1.265E+6'
-ddbas241 toSci "1265E+4"  -> '1.265E+7'
-ddbas242 toSci "1265E+8"  -> '1.265E+11'
-ddbas243 toSci "1265E+20" -> '1.265E+23'
-ddbas244 toSci "1265E-9"  -> '0.000001265'
-ddbas245 toSci "1265E-10" -> '1.265E-7'
-ddbas246 toSci "1265E-11" -> '1.265E-8'
-ddbas247 toSci "1265E-12" -> '1.265E-9'
-
-ddbas250 toSci "0.1265"     -> '0.1265'
-ddbas251 toSci "0.1265E-20" -> '1.265E-21'
-ddbas252 toSci "0.1265E-8"  -> '1.265E-9'
-ddbas253 toSci "0.1265E-4"  -> '0.00001265'
-ddbas254 toSci "0.1265E-3"  -> '0.0001265'
-ddbas255 toSci "0.1265E-2"  -> '0.001265'
-ddbas256 toSci "0.1265E-1"  -> '0.01265'
-ddbas257 toSci "0.1265E-0"  -> '0.1265'
-ddbas258 toSci "0.1265E+1"  -> '1.265'
-ddbas259 toSci "0.1265E+2"  -> '12.65'
-ddbas260 toSci "0.1265E+3"  -> '126.5'
-ddbas261 toSci "0.1265E+4"  -> '1265'
-ddbas262 toSci "0.1265E+8"  -> '1.265E+7'
-ddbas263 toSci "0.1265E+20" -> '1.265E+19'
-
--- some more negative zeros [systematic tests below]
-ddbas290 toSci "-0.000E-1"  -> '-0.0000'
-ddbas291 toSci "-0.000E-2"  -> '-0.00000'
-ddbas292 toSci "-0.000E-3"  -> '-0.000000'
-ddbas293 toSci "-0.000E-4"  -> '-0E-7'
-ddbas294 toSci "-0.00E-2"   -> '-0.0000'
-ddbas295 toSci "-0.00E-3"   -> '-0.00000'
-ddbas296 toSci "-0.0E-2"    -> '-0.000'
-ddbas297 toSci "-0.0E-3"    -> '-0.0000'
-ddbas298 toSci "-0E-2"      -> '-0.00'
-ddbas299 toSci "-0E-3"      -> '-0.000'
-
--- Engineering notation tests
-ddbas301  toSci 10e12  -> 1.0E+13
-ddbas302  toEng 10e12  -> 10E+12
-ddbas303  toSci 10e11  -> 1.0E+12
-ddbas304  toEng 10e11  -> 1.0E+12
-ddbas305  toSci 10e10  -> 1.0E+11
-ddbas306  toEng 10e10  -> 100E+9
-ddbas307  toSci 10e9   -> 1.0E+10
-ddbas308  toEng 10e9   -> 10E+9
-ddbas309  toSci 10e8   -> 1.0E+9
-ddbas310  toEng 10e8   -> 1.0E+9
-ddbas311  toSci 10e7   -> 1.0E+8
-ddbas312  toEng 10e7   -> 100E+6
-ddbas313  toSci 10e6   -> 1.0E+7
-ddbas314  toEng 10e6   -> 10E+6
-ddbas315  toSci 10e5   -> 1.0E+6
-ddbas316  toEng 10e5   -> 1.0E+6
-ddbas317  toSci 10e4   -> 1.0E+5
-ddbas318  toEng 10e4   -> 100E+3
-ddbas319  toSci 10e3   -> 1.0E+4
-ddbas320  toEng 10e3   -> 10E+3
-ddbas321  toSci 10e2   -> 1.0E+3
-ddbas322  toEng 10e2   -> 1.0E+3
-ddbas323  toSci 10e1   -> 1.0E+2
-ddbas324  toEng 10e1   -> 100
-ddbas325  toSci 10e0   -> 10
-ddbas326  toEng 10e0   -> 10
-ddbas327  toSci 10e-1  -> 1.0
-ddbas328  toEng 10e-1  -> 1.0
-ddbas329  toSci 10e-2  -> 0.10
-ddbas330  toEng 10e-2  -> 0.10
-ddbas331  toSci 10e-3  -> 0.010
-ddbas332  toEng 10e-3  -> 0.010
-ddbas333  toSci 10e-4  -> 0.0010
-ddbas334  toEng 10e-4  -> 0.0010
-ddbas335  toSci 10e-5  -> 0.00010
-ddbas336  toEng 10e-5  -> 0.00010
-ddbas337  toSci 10e-6  -> 0.000010
-ddbas338  toEng 10e-6  -> 0.000010
-ddbas339  toSci 10e-7  -> 0.0000010
-ddbas340  toEng 10e-7  -> 0.0000010
-ddbas341  toSci 10e-8  -> 1.0E-7
-ddbas342  toEng 10e-8  -> 100E-9
-ddbas343  toSci 10e-9  -> 1.0E-8
-ddbas344  toEng 10e-9  -> 10E-9
-ddbas345  toSci 10e-10 -> 1.0E-9
-ddbas346  toEng 10e-10 -> 1.0E-9
-ddbas347  toSci 10e-11 -> 1.0E-10
-ddbas348  toEng 10e-11 -> 100E-12
-ddbas349  toSci 10e-12 -> 1.0E-11
-ddbas350  toEng 10e-12 -> 10E-12
-ddbas351  toSci 10e-13 -> 1.0E-12
-ddbas352  toEng 10e-13 -> 1.0E-12
-
-ddbas361  toSci 7E12  -> 7E+12
-ddbas362  toEng 7E12  -> 7E+12
-ddbas363  toSci 7E11  -> 7E+11
-ddbas364  toEng 7E11  -> 700E+9
-ddbas365  toSci 7E10  -> 7E+10
-ddbas366  toEng 7E10  -> 70E+9
-ddbas367  toSci 7E9   -> 7E+9
-ddbas368  toEng 7E9   -> 7E+9
-ddbas369  toSci 7E8   -> 7E+8
-ddbas370  toEng 7E8   -> 700E+6
-ddbas371  toSci 7E7   -> 7E+7
-ddbas372  toEng 7E7   -> 70E+6
-ddbas373  toSci 7E6   -> 7E+6
-ddbas374  toEng 7E6   -> 7E+6
-ddbas375  toSci 7E5   -> 7E+5
-ddbas376  toEng 7E5   -> 700E+3
-ddbas377  toSci 7E4   -> 7E+4
-ddbas378  toEng 7E4   -> 70E+3
-ddbas379  toSci 7E3   -> 7E+3
-ddbas380  toEng 7E3   -> 7E+3
-ddbas381  toSci 7E2   -> 7E+2
-ddbas382  toEng 7E2   -> 700
-ddbas383  toSci 7E1   -> 7E+1
-ddbas384  toEng 7E1   -> 70
-ddbas385  toSci 7E0   -> 7
-ddbas386  toEng 7E0   -> 7
-ddbas387  toSci 7E-1  -> 0.7
-ddbas388  toEng 7E-1  -> 0.7
-ddbas389  toSci 7E-2  -> 0.07
-ddbas390  toEng 7E-2  -> 0.07
-ddbas391  toSci 7E-3  -> 0.007
-ddbas392  toEng 7E-3  -> 0.007
-ddbas393  toSci 7E-4  -> 0.0007
-ddbas394  toEng 7E-4  -> 0.0007
-ddbas395  toSci 7E-5  -> 0.00007
-ddbas396  toEng 7E-5  -> 0.00007
-ddbas397  toSci 7E-6  -> 0.000007
-ddbas398  toEng 7E-6  -> 0.000007
-ddbas399  toSci 7E-7  -> 7E-7
-ddbas400  toEng 7E-7  -> 700E-9
-ddbas401  toSci 7E-8  -> 7E-8
-ddbas402  toEng 7E-8  -> 70E-9
-ddbas403  toSci 7E-9  -> 7E-9
-ddbas404  toEng 7E-9  -> 7E-9
-ddbas405  toSci 7E-10 -> 7E-10
-ddbas406  toEng 7E-10 -> 700E-12
-ddbas407  toSci 7E-11 -> 7E-11
-ddbas408  toEng 7E-11 -> 70E-12
-ddbas409  toSci 7E-12 -> 7E-12
-ddbas410  toEng 7E-12 -> 7E-12
-ddbas411  toSci 7E-13 -> 7E-13
-ddbas412  toEng 7E-13 -> 700E-15
-
--- Exacts remain exact up to precision ..
-rounding:  half_up
-ddbas420  toSci    100 -> 100
-ddbas421  toEng    100 -> 100
-ddbas422  toSci   1000 -> 1000
-ddbas423  toEng   1000 -> 1000
-ddbas424  toSci  999.9 ->  999.9
-ddbas425  toEng  999.9 ->  999.9
-ddbas426  toSci 1000.0 -> 1000.0
-ddbas427  toEng 1000.0 -> 1000.0
-ddbas428  toSci 1000.1 -> 1000.1
-ddbas429  toEng 1000.1 -> 1000.1
-ddbas430  toSci 10000 -> 10000
-ddbas431  toEng 10000 -> 10000
-ddbas432  toSci 100000 -> 100000
-ddbas433  toEng 100000 -> 100000
-ddbas434  toSci 1000000 -> 1000000
-ddbas435  toEng 1000000 -> 1000000
-ddbas436  toSci 10000000 -> 10000000
-ddbas437  toEng 10000000 -> 10000000
-ddbas438  toSci 100000000 -> 100000000
-ddbas439  toEng 1000000000000000 -> 1000000000000000
-ddbas440  toSci 10000000000000000    -> 1.000000000000000E+16   Rounded
-ddbas441  toEng 10000000000000000    -> 10.00000000000000E+15   Rounded
-ddbas442  toSci 10000000000000001    -> 1.000000000000000E+16   Rounded Inexact
-ddbas443  toEng 10000000000000001    -> 10.00000000000000E+15   Rounded Inexact
-ddbas444  toSci 10000000000000003    -> 1.000000000000000E+16   Rounded Inexact
-ddbas445  toEng 10000000000000003    -> 10.00000000000000E+15   Rounded Inexact
-ddbas446  toSci 10000000000000005    -> 1.000000000000001E+16   Rounded Inexact
-ddbas447  toEng 10000000000000005    -> 10.00000000000001E+15   Rounded Inexact
-ddbas448  toSci 100000000000000050   -> 1.000000000000001E+17   Rounded Inexact
-ddbas449  toEng 100000000000000050   -> 100.0000000000001E+15   Rounded Inexact
-ddbas450  toSci 10000000000000009    -> 1.000000000000001E+16   Rounded Inexact
-ddbas451  toEng 10000000000000009    -> 10.00000000000001E+15   Rounded Inexact
-ddbas452  toSci 100000000000000000   -> 1.000000000000000E+17   Rounded
-ddbas453  toEng 100000000000000000   -> 100.0000000000000E+15   Rounded
-ddbas454  toSci 100000000000000003   -> 1.000000000000000E+17   Rounded Inexact
-ddbas455  toEng 100000000000000003   -> 100.0000000000000E+15   Rounded Inexact
-ddbas456  toSci 100000000000000005   -> 1.000000000000000E+17   Rounded Inexact
-ddbas457  toEng 100000000000000005   -> 100.0000000000000E+15   Rounded Inexact
-ddbas458  toSci 100000000000000009   -> 1.000000000000000E+17   Rounded Inexact
-ddbas459  toEng 100000000000000009   -> 100.0000000000000E+15   Rounded Inexact
-ddbas460  toSci 1000000000000000000  -> 1.000000000000000E+18   Rounded
-ddbas461  toEng 1000000000000000000  -> 1.000000000000000E+18   Rounded
-ddbas462  toSci 1000000000000000300  -> 1.000000000000000E+18   Rounded Inexact
-ddbas463  toEng 1000000000000000300  -> 1.000000000000000E+18   Rounded Inexact
-ddbas464  toSci 1000000000000000500  -> 1.000000000000001E+18   Rounded Inexact
-ddbas465  toEng 1000000000000000500  -> 1.000000000000001E+18   Rounded Inexact
-ddbas466  toSci 1000000000000000900  -> 1.000000000000001E+18   Rounded Inexact
-ddbas467  toEng 1000000000000000900  -> 1.000000000000001E+18   Rounded Inexact
-ddbas468  toSci 10000000000000000000 -> 1.000000000000000E+19   Rounded
-ddbas469  toEng 10000000000000000000 -> 10.00000000000000E+18   Rounded
-ddbas470  toSci 10000000000000003000 -> 1.000000000000000E+19   Rounded Inexact
-ddbas471  toEng 10000000000000003000 -> 10.00000000000000E+18   Rounded Inexact
-ddbas472  toSci 10000000000000005000 -> 1.000000000000001E+19   Rounded Inexact
-ddbas473  toEng 10000000000000005000 -> 10.00000000000001E+18   Rounded Inexact
-ddbas474  toSci 10000000000000009000 -> 1.000000000000001E+19   Rounded Inexact
-ddbas475  toEng 10000000000000009000 -> 10.00000000000001E+18   Rounded Inexact
-
--- check rounding modes heeded
-rounding:  ceiling
-ddbsr401  toSci  1.1111111111123450    ->  1.111111111112345  Rounded
-ddbsr402  toSci  1.11111111111234549   ->  1.111111111112346  Rounded Inexact
-ddbsr403  toSci  1.11111111111234550   ->  1.111111111112346  Rounded Inexact
-ddbsr404  toSci  1.11111111111234551   ->  1.111111111112346  Rounded Inexact
-rounding:  up
-ddbsr405  toSci  1.1111111111123450    ->  1.111111111112345  Rounded
-ddbsr406  toSci  1.11111111111234549   ->  1.111111111112346  Rounded Inexact
-ddbsr407  toSci  1.11111111111234550   ->  1.111111111112346  Rounded Inexact
-ddbsr408  toSci  1.11111111111234551   ->  1.111111111112346  Rounded Inexact
-rounding:  floor
-ddbsr410  toSci  1.1111111111123450    ->  1.111111111112345  Rounded
-ddbsr411  toSci  1.11111111111234549   ->  1.111111111112345  Rounded Inexact
-ddbsr412  toSci  1.11111111111234550   ->  1.111111111112345  Rounded Inexact
-ddbsr413  toSci  1.11111111111234551   ->  1.111111111112345  Rounded Inexact
-rounding:  half_down
-ddbsr415  toSci  1.1111111111123450    ->  1.111111111112345  Rounded
-ddbsr416  toSci  1.11111111111234549   ->  1.111111111112345  Rounded Inexact
-ddbsr417  toSci  1.11111111111234550   ->  1.111111111112345  Rounded Inexact
-ddbsr418  toSci  1.11111111111234650   ->  1.111111111112346  Rounded Inexact
-ddbsr419  toSci  1.11111111111234551   ->  1.111111111112346  Rounded Inexact
-rounding:  half_even
-ddbsr421  toSci  1.1111111111123450    ->  1.111111111112345  Rounded
-ddbsr422  toSci  1.11111111111234549   ->  1.111111111112345  Rounded Inexact
-ddbsr423  toSci  1.11111111111234550   ->  1.111111111112346  Rounded Inexact
-ddbsr424  toSci  1.11111111111234650   ->  1.111111111112346  Rounded Inexact
-ddbsr425  toSci  1.11111111111234551   ->  1.111111111112346  Rounded Inexact
-rounding:  down
-ddbsr426  toSci  1.1111111111123450    ->  1.111111111112345  Rounded
-ddbsr427  toSci  1.11111111111234549   ->  1.111111111112345  Rounded Inexact
-ddbsr428  toSci  1.11111111111234550   ->  1.111111111112345  Rounded Inexact
-ddbsr429  toSci  1.11111111111234551   ->  1.111111111112345  Rounded Inexact
-rounding:  half_up
-ddbsr431  toSci  1.1111111111123450    ->  1.111111111112345  Rounded
-ddbsr432  toSci  1.11111111111234549   ->  1.111111111112345  Rounded Inexact
-ddbsr433  toSci  1.11111111111234550   ->  1.111111111112346  Rounded Inexact
-ddbsr434  toSci  1.11111111111234650   ->  1.111111111112347  Rounded Inexact
-ddbsr435  toSci  1.11111111111234551   ->  1.111111111112346  Rounded Inexact
--- negatives
-rounding:  ceiling
-ddbsr501  toSci -1.1111111111123450    -> -1.111111111112345  Rounded
-ddbsr502  toSci -1.11111111111234549   -> -1.111111111112345  Rounded Inexact
-ddbsr503  toSci -1.11111111111234550   -> -1.111111111112345  Rounded Inexact
-ddbsr504  toSci -1.11111111111234551   -> -1.111111111112345  Rounded Inexact
-rounding:  up
-ddbsr505  toSci -1.1111111111123450    -> -1.111111111112345  Rounded
-ddbsr506  toSci -1.11111111111234549   -> -1.111111111112346  Rounded Inexact
-ddbsr507  toSci -1.11111111111234550   -> -1.111111111112346  Rounded Inexact
-ddbsr508  toSci -1.11111111111234551   -> -1.111111111112346  Rounded Inexact
-rounding:  floor
-ddbsr510  toSci -1.1111111111123450    -> -1.111111111112345  Rounded
-ddbsr511  toSci -1.11111111111234549   -> -1.111111111112346  Rounded Inexact
-ddbsr512  toSci -1.11111111111234550   -> -1.111111111112346  Rounded Inexact
-ddbsr513  toSci -1.11111111111234551   -> -1.111111111112346  Rounded Inexact
-rounding:  half_down
-ddbsr515  toSci -1.1111111111123450    -> -1.111111111112345  Rounded
-ddbsr516  toSci -1.11111111111234549   -> -1.111111111112345  Rounded Inexact
-ddbsr517  toSci -1.11111111111234550   -> -1.111111111112345  Rounded Inexact
-ddbsr518  toSci -1.11111111111234650   -> -1.111111111112346  Rounded Inexact
-ddbsr519  toSci -1.11111111111234551   -> -1.111111111112346  Rounded Inexact
-rounding:  half_even
-ddbsr521  toSci -1.1111111111123450    -> -1.111111111112345  Rounded
-ddbsr522  toSci -1.11111111111234549   -> -1.111111111112345  Rounded Inexact
-ddbsr523  toSci -1.11111111111234550   -> -1.111111111112346  Rounded Inexact
-ddbsr524  toSci -1.11111111111234650   -> -1.111111111112346  Rounded Inexact
-ddbsr525  toSci -1.11111111111234551   -> -1.111111111112346  Rounded Inexact
-rounding:  down
-ddbsr526  toSci -1.1111111111123450    -> -1.111111111112345  Rounded
-ddbsr527  toSci -1.11111111111234549   -> -1.111111111112345  Rounded Inexact
-ddbsr528  toSci -1.11111111111234550   -> -1.111111111112345  Rounded Inexact
-ddbsr529  toSci -1.11111111111234551   -> -1.111111111112345  Rounded Inexact
-rounding:  half_up
-ddbsr531  toSci -1.1111111111123450    -> -1.111111111112345  Rounded
-ddbsr532  toSci -1.11111111111234549   -> -1.111111111112345  Rounded Inexact
-ddbsr533  toSci -1.11111111111234550   -> -1.111111111112346  Rounded Inexact
-ddbsr534  toSci -1.11111111111234650   -> -1.111111111112347  Rounded Inexact
-ddbsr535  toSci -1.11111111111234551   -> -1.111111111112346  Rounded Inexact
-
-rounding:    half_even
-
--- The 'baddies' tests from DiagBigDecimal, plus some new ones
-ddbas500 toSci '1..2'            -> NaN Conversion_syntax
-ddbas501 toSci '.'               -> NaN Conversion_syntax
-ddbas502 toSci '..'              -> NaN Conversion_syntax
-ddbas503 toSci '++1'             -> NaN Conversion_syntax
-ddbas504 toSci '--1'             -> NaN Conversion_syntax
-ddbas505 toSci '-+1'             -> NaN Conversion_syntax
-ddbas506 toSci '+-1'             -> NaN Conversion_syntax
-ddbas507 toSci '12e'             -> NaN Conversion_syntax
-ddbas508 toSci '12e++'           -> NaN Conversion_syntax
-ddbas509 toSci '12f4'            -> NaN Conversion_syntax
-ddbas510 toSci ' +1'             -> NaN Conversion_syntax
-ddbas511 toSci '+ 1'             -> NaN Conversion_syntax
-ddbas512 toSci '12 '             -> NaN Conversion_syntax
-ddbas513 toSci ' + 1'            -> NaN Conversion_syntax
-ddbas514 toSci ' - 1 '           -> NaN Conversion_syntax
-ddbas515 toSci 'x'               -> NaN Conversion_syntax
-ddbas516 toSci '-1-'             -> NaN Conversion_syntax
-ddbas517 toSci '12-'             -> NaN Conversion_syntax
-ddbas518 toSci '3+'              -> NaN Conversion_syntax
-ddbas519 toSci ''                -> NaN Conversion_syntax
-ddbas520 toSci '1e-'             -> NaN Conversion_syntax
-ddbas521 toSci '7e99999a'        -> NaN Conversion_syntax
-ddbas522 toSci '7e123567890x'    -> NaN Conversion_syntax
-ddbas523 toSci '7e12356789012x'  -> NaN Conversion_syntax
-ddbas524 toSci ''                -> NaN Conversion_syntax
-ddbas525 toSci 'e100'            -> NaN Conversion_syntax
-ddbas526 toSci '\u0e5a'          -> NaN Conversion_syntax
-ddbas527 toSci '\u0b65'          -> NaN Conversion_syntax
-ddbas528 toSci '123,65'          -> NaN Conversion_syntax
-ddbas529 toSci '1.34.5'          -> NaN Conversion_syntax
-ddbas530 toSci '.123.5'          -> NaN Conversion_syntax
-ddbas531 toSci '01.35.'          -> NaN Conversion_syntax
-ddbas532 toSci '01.35-'          -> NaN Conversion_syntax
-ddbas533 toSci '0000..'          -> NaN Conversion_syntax
-ddbas534 toSci '.0000.'          -> NaN Conversion_syntax
-ddbas535 toSci '00..00'          -> NaN Conversion_syntax
-ddbas536 toSci '111e*123'        -> NaN Conversion_syntax
-ddbas537 toSci '111e123-'        -> NaN Conversion_syntax
-ddbas538 toSci '111e+12+'        -> NaN Conversion_syntax
-ddbas539 toSci '111e1-3-'        -> NaN Conversion_syntax
-ddbas540 toSci '111e1*23'        -> NaN Conversion_syntax
-ddbas541 toSci '111e1e+3'        -> NaN Conversion_syntax
-ddbas542 toSci '1e1.0'           -> NaN Conversion_syntax
-ddbas543 toSci '1e123e'          -> NaN Conversion_syntax
-ddbas544 toSci 'ten'             -> NaN Conversion_syntax
-ddbas545 toSci 'ONE'             -> NaN Conversion_syntax
-ddbas546 toSci '1e.1'            -> NaN Conversion_syntax
-ddbas547 toSci '1e1.'            -> NaN Conversion_syntax
-ddbas548 toSci '1ee'             -> NaN Conversion_syntax
-ddbas549 toSci 'e+1'             -> NaN Conversion_syntax
-ddbas550 toSci '1.23.4'          -> NaN Conversion_syntax
-ddbas551 toSci '1.2.1'           -> NaN Conversion_syntax
-ddbas552 toSci '1E+1.2'          -> NaN Conversion_syntax
-ddbas553 toSci '1E+1.2.3'        -> NaN Conversion_syntax
-ddbas554 toSci '1E++1'           -> NaN Conversion_syntax
-ddbas555 toSci '1E--1'           -> NaN Conversion_syntax
-ddbas556 toSci '1E+-1'           -> NaN Conversion_syntax
-ddbas557 toSci '1E-+1'           -> NaN Conversion_syntax
-ddbas558 toSci '1E''1'           -> NaN Conversion_syntax
-ddbas559 toSci "1E""1"           -> NaN Conversion_syntax
-ddbas560 toSci "1E"""""          -> NaN Conversion_syntax
--- Near-specials
-ddbas561 toSci "qNaN"            -> NaN Conversion_syntax
-ddbas562 toSci "NaNq"            -> NaN Conversion_syntax
-ddbas563 toSci "NaNs"            -> NaN Conversion_syntax
-ddbas564 toSci "Infi"            -> NaN Conversion_syntax
-ddbas565 toSci "Infin"           -> NaN Conversion_syntax
-ddbas566 toSci "Infini"          -> NaN Conversion_syntax
-ddbas567 toSci "Infinit"         -> NaN Conversion_syntax
-ddbas568 toSci "-Infinit"        -> NaN Conversion_syntax
-ddbas569 toSci "0Inf"            -> NaN Conversion_syntax
-ddbas570 toSci "9Inf"            -> NaN Conversion_syntax
-ddbas571 toSci "-0Inf"           -> NaN Conversion_syntax
-ddbas572 toSci "-9Inf"           -> NaN Conversion_syntax
-ddbas573 toSci "-sNa"            -> NaN Conversion_syntax
-ddbas574 toSci "xNaN"            -> NaN Conversion_syntax
-ddbas575 toSci "0sNaN"           -> NaN Conversion_syntax
-
--- some baddies with dots and Es and dots and specials
-ddbas576 toSci  'e+1'            ->  NaN Conversion_syntax
-ddbas577 toSci  '.e+1'           ->  NaN Conversion_syntax
-ddbas578 toSci  '+.e+1'          ->  NaN Conversion_syntax
-ddbas579 toSci  '-.e+'           ->  NaN Conversion_syntax
-ddbas580 toSci  '-.e'            ->  NaN Conversion_syntax
-ddbas581 toSci  'E+1'            ->  NaN Conversion_syntax
-ddbas582 toSci  '.E+1'           ->  NaN Conversion_syntax
-ddbas583 toSci  '+.E+1'          ->  NaN Conversion_syntax
-ddbas584 toSci  '-.E+'           ->  NaN Conversion_syntax
-ddbas585 toSci  '-.E'            ->  NaN Conversion_syntax
-
-ddbas586 toSci  '.NaN'           ->  NaN Conversion_syntax
-ddbas587 toSci  '-.NaN'          ->  NaN Conversion_syntax
-ddbas588 toSci  '+.sNaN'         ->  NaN Conversion_syntax
-ddbas589 toSci  '+.Inf'          ->  NaN Conversion_syntax
-ddbas590 toSci  '.Infinity'      ->  NaN Conversion_syntax
-
--- Zeros
-ddbas601 toSci 0.000000000       -> 0E-9
-ddbas602 toSci 0.00000000        -> 0E-8
-ddbas603 toSci 0.0000000         -> 0E-7
-ddbas604 toSci 0.000000          -> 0.000000
-ddbas605 toSci 0.00000           -> 0.00000
-ddbas606 toSci 0.0000            -> 0.0000
-ddbas607 toSci 0.000             -> 0.000
-ddbas608 toSci 0.00              -> 0.00
-ddbas609 toSci 0.0               -> 0.0
-ddbas610 toSci  .0               -> 0.0
-ddbas611 toSci 0.                -> 0
-ddbas612 toSci -.0               -> -0.0
-ddbas613 toSci -0.               -> -0
-ddbas614 toSci -0.0              -> -0.0
-ddbas615 toSci -0.00             -> -0.00
-ddbas616 toSci -0.000            -> -0.000
-ddbas617 toSci -0.0000           -> -0.0000
-ddbas618 toSci -0.00000          -> -0.00000
-ddbas619 toSci -0.000000         -> -0.000000
-ddbas620 toSci -0.0000000        -> -0E-7
-ddbas621 toSci -0.00000000       -> -0E-8
-ddbas622 toSci -0.000000000      -> -0E-9
-
-ddbas630 toSci  0.00E+0          -> 0.00
-ddbas631 toSci  0.00E+1          -> 0.0
-ddbas632 toSci  0.00E+2          -> 0
-ddbas633 toSci  0.00E+3          -> 0E+1
-ddbas634 toSci  0.00E+4          -> 0E+2
-ddbas635 toSci  0.00E+5          -> 0E+3
-ddbas636 toSci  0.00E+6          -> 0E+4
-ddbas637 toSci  0.00E+7          -> 0E+5
-ddbas638 toSci  0.00E+8          -> 0E+6
-ddbas639 toSci  0.00E+9          -> 0E+7
-
-ddbas640 toSci  0.0E+0           -> 0.0
-ddbas641 toSci  0.0E+1           -> 0
-ddbas642 toSci  0.0E+2           -> 0E+1
-ddbas643 toSci  0.0E+3           -> 0E+2
-ddbas644 toSci  0.0E+4           -> 0E+3
-ddbas645 toSci  0.0E+5           -> 0E+4
-ddbas646 toSci  0.0E+6           -> 0E+5
-ddbas647 toSci  0.0E+7           -> 0E+6
-ddbas648 toSci  0.0E+8           -> 0E+7
-ddbas649 toSci  0.0E+9           -> 0E+8
-
-ddbas650 toSci  0E+0             -> 0
-ddbas651 toSci  0E+1             -> 0E+1
-ddbas652 toSci  0E+2             -> 0E+2
-ddbas653 toSci  0E+3             -> 0E+3
-ddbas654 toSci  0E+4             -> 0E+4
-ddbas655 toSci  0E+5             -> 0E+5
-ddbas656 toSci  0E+6             -> 0E+6
-ddbas657 toSci  0E+7             -> 0E+7
-ddbas658 toSci  0E+8             -> 0E+8
-ddbas659 toSci  0E+9             -> 0E+9
-
-ddbas660 toSci  0.0E-0           -> 0.0
-ddbas661 toSci  0.0E-1           -> 0.00
-ddbas662 toSci  0.0E-2           -> 0.000
-ddbas663 toSci  0.0E-3           -> 0.0000
-ddbas664 toSci  0.0E-4           -> 0.00000
-ddbas665 toSci  0.0E-5           -> 0.000000
-ddbas666 toSci  0.0E-6           -> 0E-7
-ddbas667 toSci  0.0E-7           -> 0E-8
-ddbas668 toSci  0.0E-8           -> 0E-9
-ddbas669 toSci  0.0E-9           -> 0E-10
-
-ddbas670 toSci  0.00E-0          -> 0.00
-ddbas671 toSci  0.00E-1          -> 0.000
-ddbas672 toSci  0.00E-2          -> 0.0000
-ddbas673 toSci  0.00E-3          -> 0.00000
-ddbas674 toSci  0.00E-4          -> 0.000000
-ddbas675 toSci  0.00E-5          -> 0E-7
-ddbas676 toSci  0.00E-6          -> 0E-8
-ddbas677 toSci  0.00E-7          -> 0E-9
-ddbas678 toSci  0.00E-8          -> 0E-10
-ddbas679 toSci  0.00E-9          -> 0E-11
-
-ddbas680 toSci  000000.          ->  0
-ddbas681 toSci   00000.          ->  0
-ddbas682 toSci    0000.          ->  0
-ddbas683 toSci     000.          ->  0
-ddbas684 toSci      00.          ->  0
-ddbas685 toSci       0.          ->  0
-ddbas686 toSci  +00000.          ->  0
-ddbas687 toSci  -00000.          -> -0
-ddbas688 toSci  +0.              ->  0
-ddbas689 toSci  -0.              -> -0
-
--- Specials
-ddbas700 toSci "NaN"             -> NaN
-ddbas701 toSci "nan"             -> NaN
-ddbas702 toSci "nAn"             -> NaN
-ddbas703 toSci "NAN"             -> NaN
-ddbas704 toSci "+NaN"            -> NaN
-ddbas705 toSci "+nan"            -> NaN
-ddbas706 toSci "+nAn"            -> NaN
-ddbas707 toSci "+NAN"            -> NaN
-ddbas708 toSci "-NaN"            -> -NaN
-ddbas709 toSci "-nan"            -> -NaN
-ddbas710 toSci "-nAn"            -> -NaN
-ddbas711 toSci "-NAN"            -> -NaN
-ddbas712 toSci 'NaN0'            -> NaN
-ddbas713 toSci 'NaN1'            -> NaN1
-ddbas714 toSci 'NaN12'           -> NaN12
-ddbas715 toSci 'NaN123'          -> NaN123
-ddbas716 toSci 'NaN1234'         -> NaN1234
-ddbas717 toSci 'NaN01'           -> NaN1
-ddbas718 toSci 'NaN012'          -> NaN12
-ddbas719 toSci 'NaN0123'         -> NaN123
-ddbas720 toSci 'NaN01234'        -> NaN1234
-ddbas721 toSci 'NaN001'          -> NaN1
-ddbas722 toSci 'NaN0012'         -> NaN12
-ddbas723 toSci 'NaN00123'        -> NaN123
-ddbas724 toSci 'NaN001234'       -> NaN1234
-ddbas725 toSci 'NaN1234567890123456' -> NaN Conversion_syntax
-ddbas726 toSci 'NaN123e+1'       -> NaN Conversion_syntax
-ddbas727 toSci 'NaN12.45'        -> NaN Conversion_syntax
-ddbas728 toSci 'NaN-12'          -> NaN Conversion_syntax
-ddbas729 toSci 'NaN+12'          -> NaN Conversion_syntax
-
-ddbas730 toSci "sNaN"            -> sNaN
-ddbas731 toSci "snan"            -> sNaN
-ddbas732 toSci "SnAn"            -> sNaN
-ddbas733 toSci "SNAN"            -> sNaN
-ddbas734 toSci "+sNaN"           -> sNaN
-ddbas735 toSci "+snan"           -> sNaN
-ddbas736 toSci "+SnAn"           -> sNaN
-ddbas737 toSci "+SNAN"           -> sNaN
-ddbas738 toSci "-sNaN"           -> -sNaN
-ddbas739 toSci "-snan"           -> -sNaN
-ddbas740 toSci "-SnAn"           -> -sNaN
-ddbas741 toSci "-SNAN"           -> -sNaN
-ddbas742 toSci 'sNaN0000'        -> sNaN
-ddbas743 toSci 'sNaN7'           -> sNaN7
-ddbas744 toSci 'sNaN007234'      -> sNaN7234
-ddbas745 toSci 'sNaN7234561234567890' -> NaN Conversion_syntax
-ddbas746 toSci 'sNaN72.45'       -> NaN Conversion_syntax
-ddbas747 toSci 'sNaN-72'         -> NaN Conversion_syntax
-
-ddbas748 toSci "Inf"             -> Infinity
-ddbas749 toSci "inf"             -> Infinity
-ddbas750 toSci "iNf"             -> Infinity
-ddbas751 toSci "INF"             -> Infinity
-ddbas752 toSci "+Inf"            -> Infinity
-ddbas753 toSci "+inf"            -> Infinity
-ddbas754 toSci "+iNf"            -> Infinity
-ddbas755 toSci "+INF"            -> Infinity
-ddbas756 toSci "-Inf"            -> -Infinity
-ddbas757 toSci "-inf"            -> -Infinity
-ddbas758 toSci "-iNf"            -> -Infinity
-ddbas759 toSci "-INF"            -> -Infinity
-
-ddbas760 toSci "Infinity"        -> Infinity
-ddbas761 toSci "infinity"        -> Infinity
-ddbas762 toSci "iNfInItY"        -> Infinity
-ddbas763 toSci "INFINITY"        -> Infinity
-ddbas764 toSci "+Infinity"       -> Infinity
-ddbas765 toSci "+infinity"       -> Infinity
-ddbas766 toSci "+iNfInItY"       -> Infinity
-ddbas767 toSci "+INFINITY"       -> Infinity
-ddbas768 toSci "-Infinity"       -> -Infinity
-ddbas769 toSci "-infinity"       -> -Infinity
-ddbas770 toSci "-iNfInItY"       -> -Infinity
-ddbas771 toSci "-INFINITY"       -> -Infinity
-
--- Specials and zeros for toEng
-ddbast772 toEng "NaN"              -> NaN
-ddbast773 toEng "-Infinity"        -> -Infinity
-ddbast774 toEng "-sNaN"            -> -sNaN
-ddbast775 toEng "-NaN"             -> -NaN
-ddbast776 toEng "+Infinity"        -> Infinity
-ddbast778 toEng "+sNaN"            -> sNaN
-ddbast779 toEng "+NaN"             -> NaN
-ddbast780 toEng "INFINITY"         -> Infinity
-ddbast781 toEng "SNAN"             -> sNaN
-ddbast782 toEng "NAN"              -> NaN
-ddbast783 toEng "infinity"         -> Infinity
-ddbast784 toEng "snan"             -> sNaN
-ddbast785 toEng "nan"              -> NaN
-ddbast786 toEng "InFINITY"         -> Infinity
-ddbast787 toEng "SnAN"             -> sNaN
-ddbast788 toEng "nAN"              -> NaN
-ddbast789 toEng "iNfinity"         -> Infinity
-ddbast790 toEng "sNan"             -> sNaN
-ddbast791 toEng "Nan"              -> NaN
-ddbast792 toEng "Infinity"         -> Infinity
-ddbast793 toEng "sNaN"             -> sNaN
-
--- Zero toEng, etc.
-ddbast800 toEng 0e+1              -> "0.00E+3"  -- doc example
-
-ddbast801 toEng 0.000000000       -> 0E-9
-ddbast802 toEng 0.00000000        -> 0.00E-6
-ddbast803 toEng 0.0000000         -> 0.0E-6
-ddbast804 toEng 0.000000          -> 0.000000
-ddbast805 toEng 0.00000           -> 0.00000
-ddbast806 toEng 0.0000            -> 0.0000
-ddbast807 toEng 0.000             -> 0.000
-ddbast808 toEng 0.00              -> 0.00
-ddbast809 toEng 0.0               -> 0.0
-ddbast810 toEng  .0               -> 0.0
-ddbast811 toEng 0.                -> 0
-ddbast812 toEng -.0               -> -0.0
-ddbast813 toEng -0.               -> -0
-ddbast814 toEng -0.0              -> -0.0
-ddbast815 toEng -0.00             -> -0.00
-ddbast816 toEng -0.000            -> -0.000
-ddbast817 toEng -0.0000           -> -0.0000
-ddbast818 toEng -0.00000          -> -0.00000
-ddbast819 toEng -0.000000         -> -0.000000
-ddbast820 toEng -0.0000000        -> -0.0E-6
-ddbast821 toEng -0.00000000       -> -0.00E-6
-ddbast822 toEng -0.000000000      -> -0E-9
-
-ddbast830 toEng  0.00E+0          -> 0.00
-ddbast831 toEng  0.00E+1          -> 0.0
-ddbast832 toEng  0.00E+2          -> 0
-ddbast833 toEng  0.00E+3          -> 0.00E+3
-ddbast834 toEng  0.00E+4          -> 0.0E+3
-ddbast835 toEng  0.00E+5          -> 0E+3
-ddbast836 toEng  0.00E+6          -> 0.00E+6
-ddbast837 toEng  0.00E+7          -> 0.0E+6
-ddbast838 toEng  0.00E+8          -> 0E+6
-ddbast839 toEng  0.00E+9          -> 0.00E+9
-
-ddbast840 toEng  0.0E+0           -> 0.0
-ddbast841 toEng  0.0E+1           -> 0
-ddbast842 toEng  0.0E+2           -> 0.00E+3
-ddbast843 toEng  0.0E+3           -> 0.0E+3
-ddbast844 toEng  0.0E+4           -> 0E+3
-ddbast845 toEng  0.0E+5           -> 0.00E+6
-ddbast846 toEng  0.0E+6           -> 0.0E+6
-ddbast847 toEng  0.0E+7           -> 0E+6
-ddbast848 toEng  0.0E+8           -> 0.00E+9
-ddbast849 toEng  0.0E+9           -> 0.0E+9
-
-ddbast850 toEng  0E+0             -> 0
-ddbast851 toEng  0E+1             -> 0.00E+3
-ddbast852 toEng  0E+2             -> 0.0E+3
-ddbast853 toEng  0E+3             -> 0E+3
-ddbast854 toEng  0E+4             -> 0.00E+6
-ddbast855 toEng  0E+5             -> 0.0E+6
-ddbast856 toEng  0E+6             -> 0E+6
-ddbast857 toEng  0E+7             -> 0.00E+9
-ddbast858 toEng  0E+8             -> 0.0E+9
-ddbast859 toEng  0E+9             -> 0E+9
-
-ddbast860 toEng  0.0E-0           -> 0.0
-ddbast861 toEng  0.0E-1           -> 0.00
-ddbast862 toEng  0.0E-2           -> 0.000
-ddbast863 toEng  0.0E-3           -> 0.0000
-ddbast864 toEng  0.0E-4           -> 0.00000
-ddbast865 toEng  0.0E-5           -> 0.000000
-ddbast866 toEng  0.0E-6           -> 0.0E-6
-ddbast867 toEng  0.0E-7           -> 0.00E-6
-ddbast868 toEng  0.0E-8           -> 0E-9
-ddbast869 toEng  0.0E-9           -> 0.0E-9
-
-ddbast870 toEng  0.00E-0          -> 0.00
-ddbast871 toEng  0.00E-1          -> 0.000
-ddbast872 toEng  0.00E-2          -> 0.0000
-ddbast873 toEng  0.00E-3          -> 0.00000
-ddbast874 toEng  0.00E-4          -> 0.000000
-ddbast875 toEng  0.00E-5          -> 0.0E-6
-ddbast876 toEng  0.00E-6          -> 0.00E-6
-ddbast877 toEng  0.00E-7          -> 0E-9
-ddbast878 toEng  0.00E-8          -> 0.0E-9
-ddbast879 toEng  0.00E-9          -> 0.00E-9
-
--- long input strings
-ddbas801 tosci '01234567890123456' -> 1234567890123456
-ddbas802 tosci '001234567890123456' -> 1234567890123456
-ddbas803 tosci '0001234567890123456' -> 1234567890123456
-ddbas804 tosci '00001234567890123456' -> 1234567890123456
-ddbas805 tosci '000001234567890123456' -> 1234567890123456
-ddbas806 tosci '0000001234567890123456' -> 1234567890123456
-ddbas807 tosci '00000001234567890123456' -> 1234567890123456
-ddbas808 tosci '000000001234567890123456' -> 1234567890123456
-ddbas809 tosci '0000000001234567890123456' -> 1234567890123456
-ddbas810 tosci '00000000001234567890123456' -> 1234567890123456
-
-ddbas811 tosci '0.1234567890123456' -> 0.1234567890123456
-ddbas812 tosci '0.01234567890123456' -> 0.01234567890123456
-ddbas813 tosci '0.001234567890123456' -> 0.001234567890123456
-ddbas814 tosci '0.0001234567890123456' -> 0.0001234567890123456
-ddbas815 tosci '0.00001234567890123456' -> 0.00001234567890123456
-ddbas816 tosci '0.000001234567890123456' -> 0.000001234567890123456
-ddbas817 tosci '0.0000001234567890123456' -> 1.234567890123456E-7
-ddbas818 tosci '0.00000001234567890123456' -> 1.234567890123456E-8
-ddbas819 tosci '0.000000001234567890123456' -> 1.234567890123456E-9
-ddbas820 tosci '0.0000000001234567890123456' -> 1.234567890123456E-10
-
-ddbas821 tosci '12345678901234567890' -> 1.234567890123457E+19 Inexact Rounded
-ddbas822 tosci '123456789012345678901' -> 1.234567890123457E+20 Inexact Rounded
-ddbas823 tosci '1234567890123456789012' -> 1.234567890123457E+21 Inexact Rounded
-ddbas824 tosci '12345678901234567890123' -> 1.234567890123457E+22 Inexact Rounded
-ddbas825 tosci '123456789012345678901234' -> 1.234567890123457E+23 Inexact Rounded
-ddbas826 tosci '1234567890123456789012345' -> 1.234567890123457E+24 Inexact Rounded
-ddbas827 tosci '12345678901234567890123456' -> 1.234567890123457E+25 Inexact Rounded
-ddbas828 tosci '123456789012345678901234567' -> 1.234567890123457E+26 Inexact Rounded
-ddbas829 tosci '1234567890123456789012345678' -> 1.234567890123457E+27 Inexact Rounded
-
--- subnormals and overflows
-ddbas906 toSci '99e999999999'       -> Infinity Overflow  Inexact Rounded
-ddbas907 toSci '999e999999999'      -> Infinity Overflow  Inexact Rounded
-ddbas908 toSci '0.9e-999999999'     -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddbas909 toSci '0.09e-999999999'    -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddbas910 toSci '0.1e1000000000'     -> Infinity Overflow  Inexact Rounded
-ddbas911 toSci '10e-1000000000'     -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddbas912 toSci '0.9e9999999999'     -> Infinity Overflow  Inexact Rounded
-ddbas913 toSci '99e-9999999999'     -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddbas914 toSci '111e9999999999'     -> Infinity Overflow  Inexact Rounded
-ddbas915 toSci '1111e-9999999999'   -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddbas916 toSci '1111e-99999999999'  -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddbas917 toSci '7e1000000000'       -> Infinity Overflow  Inexact Rounded
--- negatives the same
-ddbas918 toSci '-99e999999999'      -> -Infinity Overflow  Inexact Rounded
-ddbas919 toSci '-999e999999999'     -> -Infinity Overflow  Inexact Rounded
-ddbas920 toSci '-0.9e-999999999'    -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddbas921 toSci '-0.09e-999999999'   -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddbas922 toSci '-0.1e1000000000'    -> -Infinity Overflow  Inexact Rounded
-ddbas923 toSci '-10e-1000000000'    -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddbas924 toSci '-0.9e9999999999'    -> -Infinity Overflow  Inexact Rounded
-ddbas925 toSci '-99e-9999999999'    -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddbas926 toSci '-111e9999999999'    -> -Infinity Overflow  Inexact Rounded
-ddbas927 toSci '-1111e-9999999999'  -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddbas928 toSci '-1111e-99999999999' -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddbas929 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
-
--- overflow results at different rounding modes
-rounding:  ceiling
-ddbas930 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-ddbas931 toSci '-7e10000'  -> -9.999999999999999E+384 Overflow  Inexact Rounded
-rounding:  up
-ddbas932 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-ddbas933 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-rounding:  down
-ddbas934 toSci  '7e10000'  ->  9.999999999999999E+384 Overflow  Inexact Rounded
-ddbas935 toSci '-7e10000'  -> -9.999999999999999E+384 Overflow  Inexact Rounded
-rounding:  floor
-ddbas936 toSci  '7e10000'  ->  9.999999999999999E+384 Overflow  Inexact Rounded
-ddbas937 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-
-rounding:  half_up
-ddbas938 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-ddbas939 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-rounding:  half_even
-ddbas940 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-ddbas941 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-rounding:  half_down
-ddbas942 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-ddbas943 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-
-rounding:  half_even
-
--- Now check 854/754r some subnormals and underflow to 0
-ddbem400 toSci  1.0000E-383     -> 1.0000E-383
-ddbem401 toSci  0.1E-394        -> 1E-395       Subnormal
-ddbem402 toSci  0.1000E-394     -> 1.000E-395   Subnormal
-ddbem403 toSci  0.0100E-394     -> 1.00E-396    Subnormal
-ddbem404 toSci  0.0010E-394     -> 1.0E-397     Subnormal
-ddbem405 toSci  0.0001E-394     -> 1E-398       Subnormal
-ddbem406 toSci  0.00010E-394    -> 1E-398     Subnormal Rounded
-ddbem407 toSci  0.00013E-394    -> 1E-398     Underflow Subnormal Inexact Rounded
-ddbem408 toSci  0.00015E-394    -> 2E-398     Underflow Subnormal Inexact Rounded
-ddbem409 toSci  0.00017E-394    -> 2E-398     Underflow Subnormal Inexact Rounded
-ddbem410 toSci  0.00023E-394    -> 2E-398     Underflow Subnormal Inexact Rounded
-ddbem411 toSci  0.00025E-394    -> 2E-398     Underflow Subnormal Inexact Rounded
-ddbem412 toSci  0.00027E-394    -> 3E-398     Underflow Subnormal Inexact Rounded
-ddbem413 toSci  0.000149E-394   -> 1E-398     Underflow Subnormal Inexact Rounded
-ddbem414 toSci  0.000150E-394   -> 2E-398     Underflow Subnormal Inexact Rounded
-ddbem415 toSci  0.000151E-394   -> 2E-398     Underflow Subnormal Inexact Rounded
-ddbem416 toSci  0.000249E-394   -> 2E-398     Underflow Subnormal Inexact Rounded
-ddbem417 toSci  0.000250E-394   -> 2E-398     Underflow Subnormal Inexact Rounded
-ddbem418 toSci  0.000251E-394   -> 3E-398     Underflow Subnormal Inexact Rounded
-ddbem419 toSci  0.00009E-394    -> 1E-398     Underflow Subnormal Inexact Rounded
-ddbem420 toSci  0.00005E-394    -> 0E-398     Underflow Subnormal Inexact Rounded Clamped
-ddbem421 toSci  0.00003E-394    -> 0E-398     Underflow Subnormal Inexact Rounded Clamped
-ddbem422 toSci  0.000009E-394   -> 0E-398     Underflow Subnormal Inexact Rounded Clamped
-ddbem423 toSci  0.000005E-394   -> 0E-398     Underflow Subnormal Inexact Rounded Clamped
-ddbem424 toSci  0.000003E-394   -> 0E-398     Underflow Subnormal Inexact Rounded Clamped
-
-ddbem425 toSci  0.001049E-394   -> 1.0E-397   Underflow Subnormal Inexact Rounded
-ddbem426 toSci  0.001050E-394   -> 1.0E-397   Underflow Subnormal Inexact Rounded
-ddbem427 toSci  0.001051E-394   -> 1.1E-397   Underflow Subnormal Inexact Rounded
-ddbem428 toSci  0.001149E-394   -> 1.1E-397   Underflow Subnormal Inexact Rounded
-ddbem429 toSci  0.001150E-394   -> 1.2E-397   Underflow Subnormal Inexact Rounded
-ddbem430 toSci  0.001151E-394   -> 1.2E-397   Underflow Subnormal Inexact Rounded
-
-ddbem432 toSci  0.010049E-394   -> 1.00E-396  Underflow Subnormal Inexact Rounded
-ddbem433 toSci  0.010050E-394   -> 1.00E-396  Underflow Subnormal Inexact Rounded
-ddbem434 toSci  0.010051E-394   -> 1.01E-396  Underflow Subnormal Inexact Rounded
-ddbem435 toSci  0.010149E-394   -> 1.01E-396  Underflow Subnormal Inexact Rounded
-ddbem436 toSci  0.010150E-394   -> 1.02E-396  Underflow Subnormal Inexact Rounded
-ddbem437 toSci  0.010151E-394   -> 1.02E-396  Underflow Subnormal Inexact Rounded
-
-ddbem440 toSci  0.10103E-394    -> 1.010E-395 Underflow Subnormal Inexact Rounded
-ddbem441 toSci  0.10105E-394    -> 1.010E-395 Underflow Subnormal Inexact Rounded
-ddbem442 toSci  0.10107E-394    -> 1.011E-395 Underflow Subnormal Inexact Rounded
-ddbem443 toSci  0.10113E-394    -> 1.011E-395 Underflow Subnormal Inexact Rounded
-ddbem444 toSci  0.10115E-394    -> 1.012E-395 Underflow Subnormal Inexact Rounded
-ddbem445 toSci  0.10117E-394    -> 1.012E-395 Underflow Subnormal Inexact Rounded
-
-ddbem450 toSci  1.10730E-395   -> 1.107E-395 Underflow Subnormal Inexact Rounded
-ddbem451 toSci  1.10750E-395   -> 1.108E-395 Underflow Subnormal Inexact Rounded
-ddbem452 toSci  1.10770E-395   -> 1.108E-395 Underflow Subnormal Inexact Rounded
-ddbem453 toSci  1.10830E-395   -> 1.108E-395 Underflow Subnormal Inexact Rounded
-ddbem454 toSci  1.10850E-395   -> 1.108E-395 Underflow Subnormal Inexact Rounded
-ddbem455 toSci  1.10870E-395   -> 1.109E-395 Underflow Subnormal Inexact Rounded
-
--- make sure sign OK
-ddbem456 toSci  -0.10103E-394   -> -1.010E-395 Underflow Subnormal Inexact Rounded
-ddbem457 toSci  -0.10105E-394   -> -1.010E-395 Underflow Subnormal Inexact Rounded
-ddbem458 toSci  -0.10107E-394   -> -1.011E-395 Underflow Subnormal Inexact Rounded
-ddbem459 toSci  -0.10113E-394   -> -1.011E-395 Underflow Subnormal Inexact Rounded
-ddbem460 toSci  -0.10115E-394   -> -1.012E-395 Underflow Subnormal Inexact Rounded
-ddbem461 toSci  -0.10117E-394   -> -1.012E-395 Underflow Subnormal Inexact Rounded
-
--- '999s' cases
-ddbem464 toSci  999999E-395         -> 9.99999E-390 Subnormal
-ddbem465 toSci  99999.0E-394        -> 9.99990E-390 Subnormal
-ddbem466 toSci  99999.E-394         -> 9.9999E-390  Subnormal
-ddbem467 toSci  9999.9E-394         -> 9.9999E-391  Subnormal
-ddbem468 toSci  999.99E-394         -> 9.9999E-392  Subnormal
-ddbem469 toSci  99.999E-394         -> 9.9999E-393  Subnormal
-ddbem470 toSci  9.9999E-394         -> 9.9999E-394  Subnormal
-ddbem471 toSci  0.99999E-394        -> 1.0000E-394 Underflow Subnormal Inexact Rounded
-ddbem472 toSci  0.099999E-394       -> 1.000E-395 Underflow Subnormal Inexact Rounded
-ddbem473 toSci  0.0099999E-394      -> 1.00E-396  Underflow Subnormal Inexact Rounded
-ddbem474 toSci  0.00099999E-394     -> 1.0E-397   Underflow Subnormal Inexact Rounded
-ddbem475 toSci  0.000099999E-394    -> 1E-398     Underflow Subnormal Inexact Rounded
-ddbem476 toSci  0.0000099999E-394   -> 0E-398     Underflow Subnormal Inexact Rounded Clamped
-ddbem477 toSci  0.00000099999E-394  -> 0E-398     Underflow Subnormal Inexact Rounded Clamped
-ddbem478 toSci  0.000000099999E-394 -> 0E-398     Underflow Subnormal Inexact Rounded Clamped
-
--- Exponents with insignificant leading zeros
-ddbas1001 toSci  1e999999999 -> Infinity Overflow Inexact Rounded
-ddbas1002 toSci  1e0999999999 -> Infinity Overflow Inexact Rounded
-ddbas1003 toSci  1e00999999999 -> Infinity Overflow Inexact Rounded
-ddbas1004 toSci  1e000999999999 -> Infinity Overflow Inexact Rounded
-ddbas1005 toSci  1e000000000000999999999 -> Infinity Overflow Inexact Rounded
-ddbas1006 toSci  1e000000000001000000007 -> Infinity Overflow Inexact Rounded
-ddbas1007 toSci  1e-999999999 -> 0E-398             Underflow Subnormal Inexact Rounded Clamped
-ddbas1008 toSci  1e-0999999999 -> 0E-398            Underflow Subnormal Inexact Rounded Clamped
-ddbas1009 toSci  1e-00999999999 -> 0E-398           Underflow Subnormal Inexact Rounded Clamped
-ddbas1010 toSci  1e-000999999999 -> 0E-398          Underflow Subnormal Inexact Rounded Clamped
-ddbas1011 toSci  1e-000000000000999999999 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddbas1012 toSci  1e-000000000001000000007 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-
--- check for double-rounded subnormals
-ddbas1041 toSci     1.1111111111152444E-384 ->  1.11111111111524E-384 Inexact Rounded Subnormal Underflow
-ddbas1042 toSci     1.1111111111152445E-384 ->  1.11111111111524E-384 Inexact Rounded Subnormal Underflow
-ddbas1043 toSci     1.1111111111152446E-384 ->  1.11111111111524E-384 Inexact Rounded Subnormal Underflow
-
--- clamped large normals
-ddbas1070 toSci   1E+369  ->  1E+369
-ddbas1071 toSci   1E+370  ->  1.0E+370  Clamped
-ddbas1072 toSci   1E+378  ->  1.000000000E+378  Clamped
-ddbas1073 toSci   1E+384  ->  1.000000000000000E+384  Clamped
-ddbas1074 toSci   1E+385  ->  Infinity Overflow Inexact Rounded
-
-
--- clamped zeros [see also clamp.decTest]
-ddbas1075 toSci   0e+10000  ->  0E+369  Clamped
-ddbas1076 toSci   0e-10000  ->  0E-398  Clamped
-ddbas1077 toSci  -0e+10000  -> -0E+369  Clamped
-ddbas1078 toSci  -0e-10000  -> -0E-398  Clamped
-
--- extreme values from next-wider
-ddbas1101 toSci -9.99999999999999999999999999999999E+6144 -> -Infinity Overflow Inexact Rounded
-ddbas1102 toSci -1E-6143 -> -0E-398 Inexact Rounded Subnormal Underflow Clamped
-ddbas1103 toSci -1E-6176 -> -0E-398 Inexact Rounded Subnormal Underflow Clamped
-ddbas1104 toSci -0 -> -0
-ddbas1105 toSci +0 ->  0
-ddbas1106 toSci +1E-6176 ->  0E-398 Inexact Rounded Subnormal Underflow Clamped
-ddbas1107 toSci +1E-6173 ->  0E-398 Inexact Rounded Subnormal Underflow Clamped
-ddbas1108 toSci +9.99999999999999999999999999999999E+6144 ->  Infinity Overflow Inexact Rounded
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCanonical.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCanonical.decTest
deleted file mode 100644
index 824de83..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCanonical.decTest
+++ /dev/null
@@ -1,357 +0,0 @@
-------------------------------------------------------------------------
--- ddCanonical.decTest -- test decDouble canonical results            --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This file tests that copy operations leave uncanonical operands
--- unchanged, and vice versa
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Uncanonical declets are: abc, where:
---   a=1,2,3
---   b=6,7,e,f
---   c=e,f
-
--- assert some standard (canonical) values; this tests that FromString
--- produces canonical results (many more in decimalNN)
-ddcan001 apply 9.999999999999999E+384 -> #77fcff3fcff3fcff
-ddcan002 apply 0                      -> #2238000000000000
-ddcan003 apply 1                      -> #2238000000000001
-ddcan004 apply -1                     -> #a238000000000001
-ddcan005 apply Infinity               -> #7800000000000000
-ddcan006 apply -Infinity              -> #f800000000000000
-ddcan007 apply -NaN                   -> #fc00000000000000
-ddcan008 apply -sNaN                  -> #fe00000000000000
-ddcan009 apply NaN999999999999999     -> #7c00ff3fcff3fcff
-ddcan010 apply sNaN999999999999999    -> #7e00ff3fcff3fcff
-decan011 apply  9999999999999999      -> #6e38ff3fcff3fcff
-ddcan012 apply 7.50                   -> #22300000000003d0
-ddcan013 apply 9.99                   -> #22300000000000ff
-
--- Base tests for canonical encodings (individual operator
--- propagation is tested later)
-
--- Finites: declets in coefficient
-ddcan021 canonical  #77fcff3fcff3fcff  -> #77fcff3fcff3fcff
-ddcan022 canonical  #77fcff3fcff3fcff  -> #77fcff3fcff3fcff
-ddcan023 canonical  #77ffff3fcff3fcff  -> #77fcff3fcff3fcff
-ddcan024 canonical  #77ffff3fcff3fcff  -> #77fcff3fcff3fcff
-ddcan025 canonical  #77fcffffcff3fcff  -> #77fcff3fcff3fcff
-ddcan026 canonical  #77fcffffcff3fcff  -> #77fcff3fcff3fcff
-ddcan027 canonical  #77fcff3ffff3fcff  -> #77fcff3fcff3fcff
-ddcan028 canonical  #77fcff3ffff3fcff  -> #77fcff3fcff3fcff
-ddcan030 canonical  #77fcff3fcffffcff  -> #77fcff3fcff3fcff
-ddcan031 canonical  #77fcff3fcffffcff  -> #77fcff3fcff3fcff
-ddcan032 canonical  #77fcff3fcff3ffff  -> #77fcff3fcff3fcff
-ddcan033 canonical  #77fcff3fcff3ffff  -> #77fcff3fcff3fcff
-ddcan035 canonical  #77fcff3fdff3fcff  -> #77fcff3fcff3fcff
-ddcan036 canonical  #77fcff3feff3fcff  -> #77fcff3fcff3fcff
-
--- NaN: declets in payload
-ddcan100 canonical  NaN999999999999999 -> #7c00ff3fcff3fcff
-ddcan101 canonical  #7c00ff3fcff3fcff  -> #7c00ff3fcff3fcff
-ddcan102 canonical  #7c03ff3fcff3fcff  -> #7c00ff3fcff3fcff
-ddcan103 canonical  #7c00ffffcff3fcff  -> #7c00ff3fcff3fcff
-ddcan104 canonical  #7c00ff3ffff3fcff  -> #7c00ff3fcff3fcff
-ddcan105 canonical  #7c00ff3fcffffcff  -> #7c00ff3fcff3fcff
-ddcan106 canonical  #7c00ff3fcff3ffff  -> #7c00ff3fcff3fcff
-ddcan107 canonical  #7c00ff3fcff3ffff  -> #7c00ff3fcff3fcff
--- NaN: exponent continuation bits [excluding sNaN selector]
-ddcan110 canonical  #7c00ff3fcff3fcff  -> #7c00ff3fcff3fcff
-ddcan112 canonical  #7d00ff3fcff3fcff  -> #7c00ff3fcff3fcff
-ddcan113 canonical  #7c80ff3fcff3fcff  -> #7c00ff3fcff3fcff
-ddcan114 canonical  #7c40ff3fcff3fcff  -> #7c00ff3fcff3fcff
-ddcan115 canonical  #7c20ff3fcff3fcff  -> #7c00ff3fcff3fcff
-ddcan116 canonical  #7c10ff3fcff3fcff  -> #7c00ff3fcff3fcff
-ddcan117 canonical  #7c08ff3fcff3fcff  -> #7c00ff3fcff3fcff
-ddcan118 canonical  #7c04ff3fcff3fcff  -> #7c00ff3fcff3fcff
-
--- sNaN: declets in payload
-ddcan120 canonical sNaN999999999999999 -> #7e00ff3fcff3fcff
-ddcan121 canonical  #7e00ff3fcff3fcff  -> #7e00ff3fcff3fcff
-ddcan122 canonical  #7e03ff3fcff3fcff  -> #7e00ff3fcff3fcff
-ddcan123 canonical  #7e00ffffcff3fcff  -> #7e00ff3fcff3fcff
-ddcan124 canonical  #7e00ff3ffff3fcff  -> #7e00ff3fcff3fcff
-ddcan125 canonical  #7e00ff3fcffffcff  -> #7e00ff3fcff3fcff
-ddcan126 canonical  #7e00ff3fcff3ffff  -> #7e00ff3fcff3fcff
-ddcan127 canonical  #7e00ff3fcff3ffff  -> #7e00ff3fcff3fcff
--- sNaN: exponent continuation bits [excluding sNaN selector]
-ddcan130 canonical  #7e00ff3fcff3fcff  -> #7e00ff3fcff3fcff
-ddcan132 canonical  #7f00ff3fcff3fcff  -> #7e00ff3fcff3fcff
-ddcan133 canonical  #7e80ff3fcff3fcff  -> #7e00ff3fcff3fcff
-ddcan134 canonical  #7e40ff3fcff3fcff  -> #7e00ff3fcff3fcff
-ddcan135 canonical  #7e20ff3fcff3fcff  -> #7e00ff3fcff3fcff
-ddcan136 canonical  #7e10ff3fcff3fcff  -> #7e00ff3fcff3fcff
-ddcan137 canonical  #7e08ff3fcff3fcff  -> #7e00ff3fcff3fcff
-ddcan138 canonical  #7e04ff3fcff3fcff  -> #7e00ff3fcff3fcff
-
--- Inf: exponent continuation bits
-ddcan140 canonical  #7800000000000000  -> #7800000000000000
-ddcan141 canonical  #7900000000000000  -> #7800000000000000
-ddcan142 canonical  #7a00000000000000  -> #7800000000000000
-ddcan143 canonical  #7880000000000000  -> #7800000000000000
-ddcan144 canonical  #7840000000000000  -> #7800000000000000
-ddcan145 canonical  #7820000000000000  -> #7800000000000000
-ddcan146 canonical  #7810000000000000  -> #7800000000000000
-ddcan147 canonical  #7808000000000000  -> #7800000000000000
-ddcan148 canonical  #7804000000000000  -> #7800000000000000
-
--- Inf: coefficient continuation bits (first, last, and a few others)
-ddcan150 canonical  #7800000000000000  -> #7800000000000000
-ddcan151 canonical  #7802000000000000  -> #7800000000000000
-ddcan152 canonical  #7800000000000001  -> #7800000000000000
-ddcan153 canonical  #7801000000000000  -> #7800000000000000
-ddcan154 canonical  #7800200000000000  -> #7800000000000000
-ddcan155 canonical  #7800080000000000  -> #7800000000000000
-ddcan156 canonical  #7800002000000000  -> #7800000000000000
-ddcan157 canonical  #7800000400000000  -> #7800000000000000
-ddcan158 canonical  #7800000040000000  -> #7800000000000000
-ddcan159 canonical  #7800000008000000  -> #7800000000000000
-ddcan160 canonical  #7800000000400000  -> #7800000000000000
-ddcan161 canonical  #7800000000020000  -> #7800000000000000
-ddcan162 canonical  #7800000000008000  -> #7800000000000000
-ddcan163 canonical  #7800000000000200  -> #7800000000000000
-ddcan164 canonical  #7800000000000040  -> #7800000000000000
-ddcan165 canonical  #7800000000000008  -> #7800000000000000
-
-
--- Now the operators -- trying to check paths that might fail to
--- canonicalize propagated operands
-
------ Add:
--- Finites: neutral 0
-ddcan202 add  0E+384 #77ffff3fcff3fcff        -> #77fcff3fcff3fcff
-ddcan203 add         #77fcffffcff3fcff 0E+384 -> #77fcff3fcff3fcff
--- tiny zero
-ddcan204 add  0E-398 #77ffff3fcff3fcff        -> #77fcff3fcff3fcff Rounded
-ddcan205 add         #77fcffffcff3fcff 0E-398 -> #77fcff3fcff3fcff Rounded
--- tiny non zero
-ddcan206 add -1E-398 #77ffff3fcff3fcff         -> #77fcff3fcff3fcff Inexact Rounded
-ddcan207 add         #77ffff3fcff3fcff -1E-398 -> #77fcff3fcff3fcff Inexact Rounded
--- NaN: declets in payload
-ddcan211 add  0  #7c03ff3fcff3fcff      -> #7c00ff3fcff3fcff
-ddcan212 add     #7c03ff3fcff3fcff  0   -> #7c00ff3fcff3fcff
--- NaN: exponent continuation bits [excluding sNaN selector]
-ddcan213 add  0  #7c40ff3fcff3fcff      -> #7c00ff3fcff3fcff
-ddcan214 add     #7c40ff3fcff3fcff  0   -> #7c00ff3fcff3fcff
--- sNaN: declets in payload
-ddcan215 add  0  #7e00ffffcff3fcff      -> #7c00ff3fcff3fcff Invalid_operation
-ddcan216 add     #7e00ffffcff3fcff  0   -> #7c00ff3fcff3fcff Invalid_operation
--- sNaN: exponent continuation bits [excluding sNaN selector]
-ddcan217 add  0  #7e80ff3fcff3fcff      -> #7c00ff3fcff3fcff Invalid_operation
-ddcan218 add     #7e80ff3fcff3fcff  0   -> #7c00ff3fcff3fcff Invalid_operation
--- Inf: exponent continuation bits
-ddcan220 add  0  #7880000000000000      -> #7800000000000000
-ddcan221 add     #7880000000000000  0   -> #7800000000000000
--- Inf: coefficient continuation bits
-ddcan222 add  0  #7802000000000000     -> #7800000000000000
-ddcan223 add     #7802000000000000  0  -> #7800000000000000
-ddcan224 add  0  #7800000000000001     -> #7800000000000000
-ddcan225 add     #7800000000000001  0  -> #7800000000000000
-ddcan226 add  0  #7800002000000000     -> #7800000000000000
-ddcan227 add     #7800002000000000  0  -> #7800000000000000
-
------ Class: [does not return encoded]
-
------ Compare:
-ddcan231 compare -Inf   1     ->  #a238000000000001
-ddcan232 compare -Inf  -Inf   ->  #2238000000000000
-ddcan233 compare  1    -Inf   ->  #2238000000000001
-ddcan234 compare  #7c00ff3ffff3fcff -1000  ->  #7c00ff3fcff3fcff
-ddcan235 compare  #7e00ff3ffff3fcff -1000  ->  #7c00ff3fcff3fcff  Invalid_operation
-
------ CompareSig:
-ddcan241 comparesig -Inf   1     ->  #a238000000000001
-ddcan242 comparesig -Inf  -Inf   ->  #2238000000000000
-ddcan243 comparesig  1    -Inf   ->  #2238000000000001
-ddcan244 comparesig  #7c00ff3ffff3fcff -1000  ->  #7c00ff3fcff3fcff  Invalid_operation
-ddcan245 comparesig  #7e00ff3ffff3fcff -1000  ->  #7c00ff3fcff3fcff  Invalid_operation
-
------ Copy: [does not usually canonicalize]
--- finites
-ddcan250 copy  #77ffff3fcff3fcff  -> #77ffff3fcff3fcff
-ddcan251 copy  #77fcff3fdff3fcff  -> #77fcff3fdff3fcff
--- NaNs
-ddcan252 copy  #7c03ff3fcff3fcff  -> #7c03ff3fcff3fcff
-ddcan253 copy  #7c00ff3fcff3ffff  -> #7c00ff3fcff3ffff
-ddcan254 copy  #7d00ff3fcff3fcff  -> #7d00ff3fcff3fcff
-ddcan255 copy  #7c04ff3fcff3fcff  -> #7c04ff3fcff3fcff
--- sNaN
-ddcan256 copy  #7e00ff3fcffffcff  -> #7e00ff3fcffffcff
-ddcan257 copy  #7e40ff3fcff3fcff  -> #7e40ff3fcff3fcff
--- Inf
-ddcan258 copy  #7a00000000000000  -> #7a00000000000000
-ddcan259 copy  #7800200000000000  -> #7800200000000000
-
------ CopyAbs: [does not usually canonicalize]
--- finites
-ddcan260 copyabs  #f7ffff3fcff3fcff  -> #77ffff3fcff3fcff
-ddcan261 copyabs  #f7fcff3fdff3fcff  -> #77fcff3fdff3fcff
--- NaNs
-ddcan262 copyabs  #fc03ff3fcff3fcff  -> #7c03ff3fcff3fcff
-ddcan263 copyabs  #fc00ff3fcff3ffff  -> #7c00ff3fcff3ffff
-ddcan264 copyabs  #fd00ff3fcff3fcff  -> #7d00ff3fcff3fcff
-ddcan265 copyabs  #fc04ff3fcff3fcff  -> #7c04ff3fcff3fcff
--- sNaN
-ddcan266 copyabs  #fe00ff3fcffffcff  -> #7e00ff3fcffffcff
-ddcan267 copyabs  #fe40ff3fcff3fcff  -> #7e40ff3fcff3fcff
--- Inf
-ddcan268 copyabs  #fa00000000000000  -> #7a00000000000000
-ddcan269 copyabs  #f800200000000000  -> #7800200000000000
-
------ CopyNegate: [does not usually canonicalize]
--- finites
-ddcan270 copynegate  #77ffff3fcff3fcff  -> #f7ffff3fcff3fcff
-ddcan271 copynegate  #77fcff3fdff3fcff  -> #f7fcff3fdff3fcff
--- NaNs
-ddcan272 copynegate  #7c03ff3fcff3fcff  -> #fc03ff3fcff3fcff
-ddcan273 copynegate  #7c00ff3fcff3ffff  -> #fc00ff3fcff3ffff
-ddcan274 copynegate  #7d00ff3fcff3fcff  -> #fd00ff3fcff3fcff
-ddcan275 copynegate  #7c04ff3fcff3fcff  -> #fc04ff3fcff3fcff
--- sNaN
-ddcan276 copynegate  #7e00ff3fcffffcff  -> #fe00ff3fcffffcff
-ddcan277 copynegate  #7e40ff3fcff3fcff  -> #fe40ff3fcff3fcff
--- Inf
-ddcan278 copynegate  #7a00000000000000  -> #fa00000000000000
-ddcan279 copynegate  #7800200000000000  -> #f800200000000000
-
------ CopySign: [does not usually canonicalize]
--- finites
-ddcan280 copysign  #77ffff3fcff3fcff -1 -> #f7ffff3fcff3fcff
-ddcan281 copysign  #77fcff3fdff3fcff  1 -> #77fcff3fdff3fcff
--- NaNs
-ddcan282 copysign  #7c03ff3fcff3fcff -1 -> #fc03ff3fcff3fcff
-ddcan283 copysign  #7c00ff3fcff3ffff  1 -> #7c00ff3fcff3ffff
-ddcan284 copysign  #7d00ff3fcff3fcff -1 -> #fd00ff3fcff3fcff
-ddcan285 copysign  #7c04ff3fcff3fcff  1 -> #7c04ff3fcff3fcff
--- sNaN
-ddcan286 copysign  #7e00ff3fcffffcff -1 -> #fe00ff3fcffffcff
-ddcan287 copysign  #7e40ff3fcff3fcff  1 -> #7e40ff3fcff3fcff
--- Inf
-ddcan288 copysign  #7a00000000000000 -1 -> #fa00000000000000
-ddcan289 copysign  #7800200000000000  1 -> #7800200000000000
-
------ Multiply:
--- Finites: neutral 0
-ddcan302 multiply  1      #77ffff3fcff3fcff        -> #77fcff3fcff3fcff
-ddcan303 multiply         #77fcffffcff3fcff  1     -> #77fcff3fcff3fcff
--- negative
-ddcan306 multiply -1      #77ffff3fcff3fcff        -> #f7fcff3fcff3fcff
-ddcan307 multiply         #77fcffffcff3fcff -1     -> #f7fcff3fcff3fcff
--- NaN: declets in payload
-ddcan311 multiply  1  #7c03ff3fcff3fcff      -> #7c00ff3fcff3fcff
-ddcan312 multiply     #7c03ff3fcff3fcff  1   -> #7c00ff3fcff3fcff
--- NaN: exponent continuation bits [excluding sNaN selector]
-ddcan313 multiply  1  #7c40ff3fcff3fcff      -> #7c00ff3fcff3fcff
-ddcan314 multiply     #7c40ff3fcff3fcff  1   -> #7c00ff3fcff3fcff
--- sNaN: declets in payload
-ddcan315 multiply  1  #7e00ffffcff3fcff      -> #7c00ff3fcff3fcff Invalid_operation
-ddcan316 multiply     #7e00ffffcff3fcff  1   -> #7c00ff3fcff3fcff Invalid_operation
--- sNaN: exponent continuation bits [excluding sNaN selector]
-ddcan317 multiply  1  #7e80ff3fcff3fcff      -> #7c00ff3fcff3fcff Invalid_operation
-ddcan318 multiply     #7e80ff3fcff3fcff  1   -> #7c00ff3fcff3fcff Invalid_operation
--- Inf: exponent continuation bits
-ddcan320 multiply  1  #7880000000000000      -> #7800000000000000
-ddcan321 multiply     #7880000000000000  1   -> #7800000000000000
--- Inf: coefficient continuation bits
-ddcan322 multiply  1  #7802000000000000     -> #7800000000000000
-ddcan323 multiply     #7802000000000000  1  -> #7800000000000000
-ddcan324 multiply  1  #7800000000000001     -> #7800000000000000
-ddcan325 multiply     #7800000000000001  1  -> #7800000000000000
-ddcan326 multiply  1  #7800002000000000     -> #7800000000000000
-ddcan327 multiply     #7800002000000000  1  -> #7800000000000000
-
------ Quantize:
-ddcan401 quantize  #6e38ff3ffff3fcff 1    -> #6e38ff3fcff3fcff
-ddcan402 quantize  #6e38ff3fcff3fdff 0    -> #6e38ff3fcff3fcff
-ddcan403 quantize  #7880000000000000 Inf  -> #7800000000000000
-ddcan404 quantize  #7802000000000000 -Inf -> #7800000000000000
-ddcan410 quantize  #7c03ff3fcff3fcff  1   -> #7c00ff3fcff3fcff
-ddcan411 quantize  #7c03ff3fcff3fcff  1   -> #7c00ff3fcff3fcff
-ddcan412 quantize  #7c40ff3fcff3fcff  1   -> #7c00ff3fcff3fcff
-ddcan413 quantize  #7c40ff3fcff3fcff  1   -> #7c00ff3fcff3fcff
-ddcan414 quantize  #7e00ffffcff3fcff  1   -> #7c00ff3fcff3fcff Invalid_operation
-ddcan415 quantize  #7e00ffffcff3fcff  1   -> #7c00ff3fcff3fcff Invalid_operation
-ddcan416 quantize  #7e80ff3fcff3fcff  1   -> #7c00ff3fcff3fcff Invalid_operation
-ddcan417 quantize  #7e80ff3fcff3fcff  1   -> #7c00ff3fcff3fcff Invalid_operation
-
------ Subtract:
--- Finites: neutral 0
-ddcan502 subtract  0E+384 #77ffff3fcff3fcff        -> #f7fcff3fcff3fcff
-ddcan503 subtract         #77fcffffcff3fcff 0E+384 -> #77fcff3fcff3fcff
--- tiny zero
-ddcan504 subtract  0E-398 #77ffff3fcff3fcff        -> #f7fcff3fcff3fcff Rounded
-ddcan505 subtract         #77fcffffcff3fcff 0E-398 -> #77fcff3fcff3fcff Rounded
--- tiny non zero
-ddcan506 subtract -1E-398 #77ffff3fcff3fcff         -> #f7fcff3fcff3fcff Inexact Rounded
-ddcan507 subtract         #77ffff3fcff3fcff -1E-398 -> #77fcff3fcff3fcff Inexact Rounded
--- NaN: declets in payload
-ddcan511 subtract  0  #7c03ff3fcff3fcff      -> #7c00ff3fcff3fcff
-ddcan512 subtract     #7c03ff3fcff3fcff  0   -> #7c00ff3fcff3fcff
--- NaN: exponent continuation bits [excluding sNaN selector]
-ddcan513 subtract  0  #7c40ff3fcff3fcff      -> #7c00ff3fcff3fcff
-ddcan514 subtract     #7c40ff3fcff3fcff  0   -> #7c00ff3fcff3fcff
--- sNaN: declets in payload
-ddcan515 subtract  0  #7e00ffffcff3fcff      -> #7c00ff3fcff3fcff Invalid_operation
-ddcan516 subtract     #7e00ffffcff3fcff  0   -> #7c00ff3fcff3fcff Invalid_operation
--- sNaN: exponent continuation bits [excluding sNaN selector]
-ddcan517 subtract  0  #7e80ff3fcff3fcff      -> #7c00ff3fcff3fcff Invalid_operation
-ddcan518 subtract     #7e80ff3fcff3fcff  0   -> #7c00ff3fcff3fcff Invalid_operation
--- Inf: exponent continuation bits
-ddcan520 subtract  0  #7880000000000000      -> #f800000000000000
-ddcan521 subtract     #7880000000000000  0   -> #7800000000000000
--- Inf: coefficient continuation bits
-ddcan522 subtract  0  #7802000000000000     -> #f800000000000000
-ddcan523 subtract     #7802000000000000  0  -> #7800000000000000
-ddcan524 subtract  0  #7800000000000001     -> #f800000000000000
-ddcan525 subtract     #7800000000000001  0  -> #7800000000000000
-ddcan526 subtract  0  #7800002000000000     -> #f800000000000000
-ddcan527 subtract     #7800002000000000  0  -> #7800000000000000
-
------ ToIntegral:
-ddcan601 tointegralx  #6e38ff3ffff3fcff -> #6e38ff3fcff3fcff
-ddcan602 tointegralx  #6e38ff3fcff3fdff -> #6e38ff3fcff3fcff
-ddcan603 tointegralx  #7880000000000000 -> #7800000000000000
-ddcan604 tointegralx  #7802000000000000 -> #7800000000000000
-ddcan610 tointegralx  #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff
-ddcan611 tointegralx  #7c03ff3fcff3fcff -> #7c00ff3fcff3fcff
-ddcan612 tointegralx  #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff
-ddcan613 tointegralx  #7c40ff3fcff3fcff -> #7c00ff3fcff3fcff
-ddcan614 tointegralx  #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation
-ddcan615 tointegralx  #7e00ffffcff3fcff -> #7c00ff3fcff3fcff Invalid_operation
-ddcan616 tointegralx  #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation
-ddcan617 tointegralx  #7e80ff3fcff3fcff -> #7c00ff3fcff3fcff Invalid_operation
--- uncanonical 3999, 39.99, 3.99, 0.399, and negatives
-ddcan618 tointegralx  #2238000000000fff -> #2238000000000cff
-ddcan619 tointegralx  #2230000000000fff -> #2238000000000040 Inexact Rounded
-ddcan620 tointegralx  #222c000000000fff -> #2238000000000004 Inexact Rounded
-ddcan621 tointegralx  #2228000000000fff -> #2238000000000000 Inexact Rounded
-ddcan622 tointegralx  #a238000000000fff -> #a238000000000cff
-ddcan623 tointegralx  #a230000000000fff -> #a238000000000040 Inexact Rounded
-ddcan624 tointegralx  #a22c000000000fff -> #a238000000000004 Inexact Rounded
-ddcan625 tointegralx  #a228000000000fff -> #a238000000000000 Inexact Rounded
-
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddClass.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddClass.decTest
deleted file mode 100644
index a1d233b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddClass.decTest
+++ /dev/null
@@ -1,76 +0,0 @@
-------------------------------------------------------------------------
--- ddClass.decTest -- decDouble Class operations                      --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- [New 2006.11.27]
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
-ddcla001  class    0                        -> +Zero
-ddcla002  class    0.00                     -> +Zero
-ddcla003  class    0E+5                     -> +Zero
-ddcla004  class    1E-396                   -> +Subnormal
-ddcla005  class  0.1E-383                   -> +Subnormal
-ddcla006  class  0.999999999999999E-383     -> +Subnormal
-ddcla007  class  1.000000000000000E-383     -> +Normal
-ddcla008  class   1E-383                    -> +Normal
-ddcla009  class   1E-100                    -> +Normal
-ddcla010  class   1E-10                     -> +Normal
-ddcla012  class   1E-1                      -> +Normal
-ddcla013  class   1                         -> +Normal
-ddcla014  class   2.50                      -> +Normal
-ddcla015  class   100.100                   -> +Normal
-ddcla016  class   1E+30                     -> +Normal
-ddcla017  class   1E+384                    -> +Normal
-ddcla018  class   9.999999999999999E+384    -> +Normal
-ddcla019  class   Inf                       -> +Infinity
-
-ddcla021  class   -0                        -> -Zero
-ddcla022  class   -0.00                     -> -Zero
-ddcla023  class   -0E+5                     -> -Zero
-ddcla024  class   -1E-396                   -> -Subnormal
-ddcla025  class  -0.1E-383                  -> -Subnormal
-ddcla026  class  -0.999999999999999E-383    -> -Subnormal
-ddcla027  class  -1.000000000000000E-383    -> -Normal
-ddcla028  class  -1E-383                    -> -Normal
-ddcla029  class  -1E-100                    -> -Normal
-ddcla030  class  -1E-10                     -> -Normal
-ddcla032  class  -1E-1                      -> -Normal
-ddcla033  class  -1                         -> -Normal
-ddcla034  class  -2.50                      -> -Normal
-ddcla035  class  -100.100                   -> -Normal
-ddcla036  class  -1E+30                     -> -Normal
-ddcla037  class  -1E+384                    -> -Normal
-ddcla038  class  -9.999999999999999E+384    -> -Normal
-ddcla039  class  -Inf                       -> -Infinity
-
-ddcla041  class   NaN                       -> NaN
-ddcla042  class  -NaN                       -> NaN
-ddcla043  class  +NaN12345                  -> NaN
-ddcla044  class   sNaN                      -> sNaN
-ddcla045  class  -sNaN                      -> sNaN
-ddcla046  class  +sNaN12345                 -> sNaN
-
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompare.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompare.decTest
deleted file mode 100644
index a20ae21..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompare.decTest
+++ /dev/null
@@ -1,744 +0,0 @@
-------------------------------------------------------------------------
--- ddCompare.decTest -- decDouble comparison that allows quiet NaNs   --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Note that we cannot assume add/subtract tests cover paths adequately,
--- here, because the code might be quite different (comparison cannot
--- overflow or underflow, so actual subtractions are not necessary).
-
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- sanity checks
-ddcom001 compare  -2  -2  -> 0
-ddcom002 compare  -2  -1  -> -1
-ddcom003 compare  -2   0  -> -1
-ddcom004 compare  -2   1  -> -1
-ddcom005 compare  -2   2  -> -1
-ddcom006 compare  -1  -2  -> 1
-ddcom007 compare  -1  -1  -> 0
-ddcom008 compare  -1   0  -> -1
-ddcom009 compare  -1   1  -> -1
-ddcom010 compare  -1   2  -> -1
-ddcom011 compare   0  -2  -> 1
-ddcom012 compare   0  -1  -> 1
-ddcom013 compare   0   0  -> 0
-ddcom014 compare   0   1  -> -1
-ddcom015 compare   0   2  -> -1
-ddcom016 compare   1  -2  -> 1
-ddcom017 compare   1  -1  -> 1
-ddcom018 compare   1   0  -> 1
-ddcom019 compare   1   1  -> 0
-ddcom020 compare   1   2  -> -1
-ddcom021 compare   2  -2  -> 1
-ddcom022 compare   2  -1  -> 1
-ddcom023 compare   2   0  -> 1
-ddcom025 compare   2   1  -> 1
-ddcom026 compare   2   2  -> 0
-
-ddcom031 compare  -20  -20  -> 0
-ddcom032 compare  -20  -10  -> -1
-ddcom033 compare  -20   00  -> -1
-ddcom034 compare  -20   10  -> -1
-ddcom035 compare  -20   20  -> -1
-ddcom036 compare  -10  -20  -> 1
-ddcom037 compare  -10  -10  -> 0
-ddcom038 compare  -10   00  -> -1
-ddcom039 compare  -10   10  -> -1
-ddcom040 compare  -10   20  -> -1
-ddcom041 compare   00  -20  -> 1
-ddcom042 compare   00  -10  -> 1
-ddcom043 compare   00   00  -> 0
-ddcom044 compare   00   10  -> -1
-ddcom045 compare   00   20  -> -1
-ddcom046 compare   10  -20  -> 1
-ddcom047 compare   10  -10  -> 1
-ddcom048 compare   10   00  -> 1
-ddcom049 compare   10   10  -> 0
-ddcom050 compare   10   20  -> -1
-ddcom051 compare   20  -20  -> 1
-ddcom052 compare   20  -10  -> 1
-ddcom053 compare   20   00  -> 1
-ddcom055 compare   20   10  -> 1
-ddcom056 compare   20   20  -> 0
-
-ddcom061 compare  -2.0  -2.0  -> 0
-ddcom062 compare  -2.0  -1.0  -> -1
-ddcom063 compare  -2.0   0.0  -> -1
-ddcom064 compare  -2.0   1.0  -> -1
-ddcom065 compare  -2.0   2.0  -> -1
-ddcom066 compare  -1.0  -2.0  -> 1
-ddcom067 compare  -1.0  -1.0  -> 0
-ddcom068 compare  -1.0   0.0  -> -1
-ddcom069 compare  -1.0   1.0  -> -1
-ddcom070 compare  -1.0   2.0  -> -1
-ddcom071 compare   0.0  -2.0  -> 1
-ddcom072 compare   0.0  -1.0  -> 1
-ddcom073 compare   0.0   0.0  -> 0
-ddcom074 compare   0.0   1.0  -> -1
-ddcom075 compare   0.0   2.0  -> -1
-ddcom076 compare   1.0  -2.0  -> 1
-ddcom077 compare   1.0  -1.0  -> 1
-ddcom078 compare   1.0   0.0  -> 1
-ddcom079 compare   1.0   1.0  -> 0
-ddcom080 compare   1.0   2.0  -> -1
-ddcom081 compare   2.0  -2.0  -> 1
-ddcom082 compare   2.0  -1.0  -> 1
-ddcom083 compare   2.0   0.0  -> 1
-ddcom085 compare   2.0   1.0  -> 1
-ddcom086 compare   2.0   2.0  -> 0
-ddcom087 compare   1.0   0.1  -> 1
-ddcom088 compare   0.1   1.0  -> -1
-
--- now some cases which might overflow if subtract were used
-ddcom095 compare  9.999999999999999E+384 9.999999999999999E+384  -> 0
-ddcom096 compare -9.999999999999999E+384 9.999999999999999E+384  -> -1
-ddcom097 compare  9.999999999999999E+384 -9.999999999999999E+384 -> 1
-ddcom098 compare -9.999999999999999E+384 -9.999999999999999E+384 -> 0
-
--- some differing length/exponent cases
-ddcom100 compare   7.0    7.0    -> 0
-ddcom101 compare   7.0    7      -> 0
-ddcom102 compare   7      7.0    -> 0
-ddcom103 compare   7E+0   7.0    -> 0
-ddcom104 compare   70E-1  7.0    -> 0
-ddcom105 compare   0.7E+1 7      -> 0
-ddcom106 compare   70E-1  7      -> 0
-ddcom107 compare   7.0    7E+0   -> 0
-ddcom108 compare   7.0    70E-1  -> 0
-ddcom109 compare   7      0.7E+1 -> 0
-ddcom110 compare   7      70E-1  -> 0
-
-ddcom120 compare   8.0    7.0    -> 1
-ddcom121 compare   8.0    7      -> 1
-ddcom122 compare   8      7.0    -> 1
-ddcom123 compare   8E+0   7.0    -> 1
-ddcom124 compare   80E-1  7.0    -> 1
-ddcom125 compare   0.8E+1 7      -> 1
-ddcom126 compare   80E-1  7      -> 1
-ddcom127 compare   8.0    7E+0   -> 1
-ddcom128 compare   8.0    70E-1  -> 1
-ddcom129 compare   8      0.7E+1  -> 1
-ddcom130 compare   8      70E-1  -> 1
-
-ddcom140 compare   8.0    9.0    -> -1
-ddcom141 compare   8.0    9      -> -1
-ddcom142 compare   8      9.0    -> -1
-ddcom143 compare   8E+0   9.0    -> -1
-ddcom144 compare   80E-1  9.0    -> -1
-ddcom145 compare   0.8E+1 9      -> -1
-ddcom146 compare   80E-1  9      -> -1
-ddcom147 compare   8.0    9E+0   -> -1
-ddcom148 compare   8.0    90E-1  -> -1
-ddcom149 compare   8      0.9E+1 -> -1
-ddcom150 compare   8      90E-1  -> -1
-
--- and again, with sign changes -+ ..
-ddcom200 compare  -7.0    7.0    -> -1
-ddcom201 compare  -7.0    7      -> -1
-ddcom202 compare  -7      7.0    -> -1
-ddcom203 compare  -7E+0   7.0    -> -1
-ddcom204 compare  -70E-1  7.0    -> -1
-ddcom205 compare  -0.7E+1 7      -> -1
-ddcom206 compare  -70E-1  7      -> -1
-ddcom207 compare  -7.0    7E+0   -> -1
-ddcom208 compare  -7.0    70E-1  -> -1
-ddcom209 compare  -7      0.7E+1 -> -1
-ddcom210 compare  -7      70E-1  -> -1
-
-ddcom220 compare  -8.0    7.0    -> -1
-ddcom221 compare  -8.0    7      -> -1
-ddcom222 compare  -8      7.0    -> -1
-ddcom223 compare  -8E+0   7.0    -> -1
-ddcom224 compare  -80E-1  7.0    -> -1
-ddcom225 compare  -0.8E+1 7      -> -1
-ddcom226 compare  -80E-1  7      -> -1
-ddcom227 compare  -8.0    7E+0   -> -1
-ddcom228 compare  -8.0    70E-1  -> -1
-ddcom229 compare  -8      0.7E+1 -> -1
-ddcom230 compare  -8      70E-1  -> -1
-
-ddcom240 compare  -8.0    9.0    -> -1
-ddcom241 compare  -8.0    9      -> -1
-ddcom242 compare  -8      9.0    -> -1
-ddcom243 compare  -8E+0   9.0    -> -1
-ddcom244 compare  -80E-1  9.0    -> -1
-ddcom245 compare  -0.8E+1 9      -> -1
-ddcom246 compare  -80E-1  9      -> -1
-ddcom247 compare  -8.0    9E+0   -> -1
-ddcom248 compare  -8.0    90E-1  -> -1
-ddcom249 compare  -8      0.9E+1 -> -1
-ddcom250 compare  -8      90E-1  -> -1
-
--- and again, with sign changes +- ..
-ddcom300 compare   7.0    -7.0    -> 1
-ddcom301 compare   7.0    -7      -> 1
-ddcom302 compare   7      -7.0    -> 1
-ddcom303 compare   7E+0   -7.0    -> 1
-ddcom304 compare   70E-1  -7.0    -> 1
-ddcom305 compare   .7E+1  -7      -> 1
-ddcom306 compare   70E-1  -7      -> 1
-ddcom307 compare   7.0    -7E+0   -> 1
-ddcom308 compare   7.0    -70E-1  -> 1
-ddcom309 compare   7      -.7E+1  -> 1
-ddcom310 compare   7      -70E-1  -> 1
-
-ddcom320 compare   8.0    -7.0    -> 1
-ddcom321 compare   8.0    -7      -> 1
-ddcom322 compare   8      -7.0    -> 1
-ddcom323 compare   8E+0   -7.0    -> 1
-ddcom324 compare   80E-1  -7.0    -> 1
-ddcom325 compare   .8E+1  -7      -> 1
-ddcom326 compare   80E-1  -7      -> 1
-ddcom327 compare   8.0    -7E+0   -> 1
-ddcom328 compare   8.0    -70E-1  -> 1
-ddcom329 compare   8      -.7E+1  -> 1
-ddcom330 compare   8      -70E-1  -> 1
-
-ddcom340 compare   8.0    -9.0    -> 1
-ddcom341 compare   8.0    -9      -> 1
-ddcom342 compare   8      -9.0    -> 1
-ddcom343 compare   8E+0   -9.0    -> 1
-ddcom344 compare   80E-1  -9.0    -> 1
-ddcom345 compare   .8E+1  -9      -> 1
-ddcom346 compare   80E-1  -9      -> 1
-ddcom347 compare   8.0    -9E+0   -> 1
-ddcom348 compare   8.0    -90E-1  -> 1
-ddcom349 compare   8      -.9E+1  -> 1
-ddcom350 compare   8      -90E-1  -> 1
-
--- and again, with sign changes -- ..
-ddcom400 compare   -7.0    -7.0    -> 0
-ddcom401 compare   -7.0    -7      -> 0
-ddcom402 compare   -7      -7.0    -> 0
-ddcom403 compare   -7E+0   -7.0    -> 0
-ddcom404 compare   -70E-1  -7.0    -> 0
-ddcom405 compare   -.7E+1  -7      -> 0
-ddcom406 compare   -70E-1  -7      -> 0
-ddcom407 compare   -7.0    -7E+0   -> 0
-ddcom408 compare   -7.0    -70E-1  -> 0
-ddcom409 compare   -7      -.7E+1  -> 0
-ddcom410 compare   -7      -70E-1  -> 0
-
-ddcom420 compare   -8.0    -7.0    -> -1
-ddcom421 compare   -8.0    -7      -> -1
-ddcom422 compare   -8      -7.0    -> -1
-ddcom423 compare   -8E+0   -7.0    -> -1
-ddcom424 compare   -80E-1  -7.0    -> -1
-ddcom425 compare   -.8E+1  -7      -> -1
-ddcom426 compare   -80E-1  -7      -> -1
-ddcom427 compare   -8.0    -7E+0   -> -1
-ddcom428 compare   -8.0    -70E-1  -> -1
-ddcom429 compare   -8      -.7E+1  -> -1
-ddcom430 compare   -8      -70E-1  -> -1
-
-ddcom440 compare   -8.0    -9.0    -> 1
-ddcom441 compare   -8.0    -9      -> 1
-ddcom442 compare   -8      -9.0    -> 1
-ddcom443 compare   -8E+0   -9.0    -> 1
-ddcom444 compare   -80E-1  -9.0    -> 1
-ddcom445 compare   -.8E+1  -9      -> 1
-ddcom446 compare   -80E-1  -9      -> 1
-ddcom447 compare   -8.0    -9E+0   -> 1
-ddcom448 compare   -8.0    -90E-1  -> 1
-ddcom449 compare   -8      -.9E+1  -> 1
-ddcom450 compare   -8      -90E-1  -> 1
-
--- misalignment traps for little-endian
-ddcom451 compare      1.0       0.1  -> 1
-ddcom452 compare      0.1       1.0  -> -1
-ddcom453 compare     10.0       0.1  -> 1
-ddcom454 compare      0.1      10.0  -> -1
-ddcom455 compare      100       1.0  -> 1
-ddcom456 compare      1.0       100  -> -1
-ddcom457 compare     1000      10.0  -> 1
-ddcom458 compare     10.0      1000  -> -1
-ddcom459 compare    10000     100.0  -> 1
-ddcom460 compare    100.0     10000  -> -1
-ddcom461 compare   100000    1000.0  -> 1
-ddcom462 compare   1000.0    100000  -> -1
-ddcom463 compare  1000000   10000.0  -> 1
-ddcom464 compare  10000.0   1000000  -> -1
-
--- testcases that subtract to lots of zeros at boundaries [pgr]
-ddcom473 compare 123.4560000000000E-89 123.456E-89 -> 0
-ddcom474 compare 123.456000000000E+89 123.456E+89 -> 0
-ddcom475 compare 123.45600000000E-89 123.456E-89 -> 0
-ddcom476 compare 123.4560000000E+89 123.456E+89 -> 0
-ddcom477 compare 123.456000000E-89 123.456E-89 -> 0
-ddcom478 compare 123.45600000E+89 123.456E+89 -> 0
-ddcom479 compare 123.4560000E-89 123.456E-89 -> 0
-ddcom480 compare 123.456000E+89 123.456E+89 -> 0
-ddcom481 compare 123.45600E-89 123.456E-89 -> 0
-ddcom482 compare 123.4560E+89 123.456E+89 -> 0
-ddcom483 compare 123.456E-89 123.456E-89 -> 0
-ddcom487 compare 123.456E+89 123.4560000000000E+89 -> 0
-ddcom488 compare 123.456E-89 123.456000000000E-89 -> 0
-ddcom489 compare 123.456E+89 123.45600000000E+89 -> 0
-ddcom490 compare 123.456E-89 123.4560000000E-89 -> 0
-ddcom491 compare 123.456E+89 123.456000000E+89 -> 0
-ddcom492 compare 123.456E-89 123.45600000E-89 -> 0
-ddcom493 compare 123.456E+89 123.4560000E+89 -> 0
-ddcom494 compare 123.456E-89 123.456000E-89 -> 0
-ddcom495 compare 123.456E+89 123.45600E+89 -> 0
-ddcom496 compare 123.456E-89 123.4560E-89 -> 0
-ddcom497 compare 123.456E+89 123.456E+89 -> 0
-
--- wide-ranging, around precision; signs equal
-ddcom500 compare    1     1E-15    -> 1
-ddcom501 compare    1     1E-14    -> 1
-ddcom502 compare    1     1E-13    -> 1
-ddcom503 compare    1     1E-12    -> 1
-ddcom504 compare    1     1E-11    -> 1
-ddcom505 compare    1     1E-10    -> 1
-ddcom506 compare    1     1E-9     -> 1
-ddcom507 compare    1     1E-8     -> 1
-ddcom508 compare    1     1E-7     -> 1
-ddcom509 compare    1     1E-6     -> 1
-ddcom510 compare    1     1E-5     -> 1
-ddcom511 compare    1     1E-4     -> 1
-ddcom512 compare    1     1E-3     -> 1
-ddcom513 compare    1     1E-2     -> 1
-ddcom514 compare    1     1E-1     -> 1
-ddcom515 compare    1     1E-0     -> 0
-ddcom516 compare    1     1E+1     -> -1
-ddcom517 compare    1     1E+2     -> -1
-ddcom518 compare    1     1E+3     -> -1
-ddcom519 compare    1     1E+4     -> -1
-ddcom521 compare    1     1E+5     -> -1
-ddcom522 compare    1     1E+6     -> -1
-ddcom523 compare    1     1E+7     -> -1
-ddcom524 compare    1     1E+8     -> -1
-ddcom525 compare    1     1E+9     -> -1
-ddcom526 compare    1     1E+10    -> -1
-ddcom527 compare    1     1E+11    -> -1
-ddcom528 compare    1     1E+12    -> -1
-ddcom529 compare    1     1E+13    -> -1
-ddcom530 compare    1     1E+14    -> -1
-ddcom531 compare    1     1E+15    -> -1
--- LR swap
-ddcom540 compare    1E-15  1       -> -1
-ddcom541 compare    1E-14  1       -> -1
-ddcom542 compare    1E-13  1       -> -1
-ddcom543 compare    1E-12  1       -> -1
-ddcom544 compare    1E-11  1       -> -1
-ddcom545 compare    1E-10  1       -> -1
-ddcom546 compare    1E-9   1       -> -1
-ddcom547 compare    1E-8   1       -> -1
-ddcom548 compare    1E-7   1       -> -1
-ddcom549 compare    1E-6   1       -> -1
-ddcom550 compare    1E-5   1       -> -1
-ddcom551 compare    1E-4   1       -> -1
-ddcom552 compare    1E-3   1       -> -1
-ddcom553 compare    1E-2   1       -> -1
-ddcom554 compare    1E-1   1       -> -1
-ddcom555 compare    1E-0   1       ->  0
-ddcom556 compare    1E+1   1       ->  1
-ddcom557 compare    1E+2   1       ->  1
-ddcom558 compare    1E+3   1       ->  1
-ddcom559 compare    1E+4   1       ->  1
-ddcom561 compare    1E+5   1       ->  1
-ddcom562 compare    1E+6   1       ->  1
-ddcom563 compare    1E+7   1       ->  1
-ddcom564 compare    1E+8   1       ->  1
-ddcom565 compare    1E+9   1       ->  1
-ddcom566 compare    1E+10  1       ->  1
-ddcom567 compare    1E+11  1       ->  1
-ddcom568 compare    1E+12  1       ->  1
-ddcom569 compare    1E+13  1       ->  1
-ddcom570 compare    1E+14  1       ->  1
-ddcom571 compare    1E+15  1       ->  1
--- similar with a useful coefficient, one side only
-ddcom580 compare  0.000000987654321     1E-15    -> 1
-ddcom581 compare  0.000000987654321     1E-14    -> 1
-ddcom582 compare  0.000000987654321     1E-13    -> 1
-ddcom583 compare  0.000000987654321     1E-12    -> 1
-ddcom584 compare  0.000000987654321     1E-11    -> 1
-ddcom585 compare  0.000000987654321     1E-10    -> 1
-ddcom586 compare  0.000000987654321     1E-9     -> 1
-ddcom587 compare  0.000000987654321     1E-8     -> 1
-ddcom588 compare  0.000000987654321     1E-7     -> 1
-ddcom589 compare  0.000000987654321     1E-6     -> -1
-ddcom590 compare  0.000000987654321     1E-5     -> -1
-ddcom591 compare  0.000000987654321     1E-4     -> -1
-ddcom592 compare  0.000000987654321     1E-3     -> -1
-ddcom593 compare  0.000000987654321     1E-2     -> -1
-ddcom594 compare  0.000000987654321     1E-1     -> -1
-ddcom595 compare  0.000000987654321     1E-0     -> -1
-ddcom596 compare  0.000000987654321     1E+1     -> -1
-ddcom597 compare  0.000000987654321     1E+2     -> -1
-ddcom598 compare  0.000000987654321     1E+3     -> -1
-ddcom599 compare  0.000000987654321     1E+4     -> -1
-
--- check some unit-y traps
-ddcom600 compare   12            12.2345 -> -1
-ddcom601 compare   12.0          12.2345 -> -1
-ddcom602 compare   12.00         12.2345 -> -1
-ddcom603 compare   12.000        12.2345 -> -1
-ddcom604 compare   12.0000       12.2345 -> -1
-ddcom605 compare   12.00000      12.2345 -> -1
-ddcom606 compare   12.000000     12.2345 -> -1
-ddcom607 compare   12.0000000    12.2345 -> -1
-ddcom608 compare   12.00000000   12.2345 -> -1
-ddcom609 compare   12.000000000  12.2345 -> -1
-ddcom610 compare   12.1234 12            ->  1
-ddcom611 compare   12.1234 12.0          ->  1
-ddcom612 compare   12.1234 12.00         ->  1
-ddcom613 compare   12.1234 12.000        ->  1
-ddcom614 compare   12.1234 12.0000       ->  1
-ddcom615 compare   12.1234 12.00000      ->  1
-ddcom616 compare   12.1234 12.000000     ->  1
-ddcom617 compare   12.1234 12.0000000    ->  1
-ddcom618 compare   12.1234 12.00000000   ->  1
-ddcom619 compare   12.1234 12.000000000  ->  1
-ddcom620 compare  -12           -12.2345 ->  1
-ddcom621 compare  -12.0         -12.2345 ->  1
-ddcom622 compare  -12.00        -12.2345 ->  1
-ddcom623 compare  -12.000       -12.2345 ->  1
-ddcom624 compare  -12.0000      -12.2345 ->  1
-ddcom625 compare  -12.00000     -12.2345 ->  1
-ddcom626 compare  -12.000000    -12.2345 ->  1
-ddcom627 compare  -12.0000000   -12.2345 ->  1
-ddcom628 compare  -12.00000000  -12.2345 ->  1
-ddcom629 compare  -12.000000000 -12.2345 ->  1
-ddcom630 compare  -12.1234 -12           -> -1
-ddcom631 compare  -12.1234 -12.0         -> -1
-ddcom632 compare  -12.1234 -12.00        -> -1
-ddcom633 compare  -12.1234 -12.000       -> -1
-ddcom634 compare  -12.1234 -12.0000      -> -1
-ddcom635 compare  -12.1234 -12.00000     -> -1
-ddcom636 compare  -12.1234 -12.000000    -> -1
-ddcom637 compare  -12.1234 -12.0000000   -> -1
-ddcom638 compare  -12.1234 -12.00000000  -> -1
-ddcom639 compare  -12.1234 -12.000000000 -> -1
-
--- extended zeros
-ddcom640 compare   0     0   -> 0
-ddcom641 compare   0    -0   -> 0
-ddcom642 compare   0    -0.0 -> 0
-ddcom643 compare   0     0.0 -> 0
-ddcom644 compare  -0     0   -> 0
-ddcom645 compare  -0    -0   -> 0
-ddcom646 compare  -0    -0.0 -> 0
-ddcom647 compare  -0     0.0 -> 0
-ddcom648 compare   0.0   0   -> 0
-ddcom649 compare   0.0  -0   -> 0
-ddcom650 compare   0.0  -0.0 -> 0
-ddcom651 compare   0.0   0.0 -> 0
-ddcom652 compare  -0.0   0   -> 0
-ddcom653 compare  -0.0  -0   -> 0
-ddcom654 compare  -0.0  -0.0 -> 0
-ddcom655 compare  -0.0   0.0 -> 0
-
-ddcom656 compare  -0E1   0.0 -> 0
-ddcom657 compare  -0E2   0.0 -> 0
-ddcom658 compare   0E1   0.0 -> 0
-ddcom659 compare   0E2   0.0 -> 0
-ddcom660 compare  -0E1   0   -> 0
-ddcom661 compare  -0E2   0   -> 0
-ddcom662 compare   0E1   0   -> 0
-ddcom663 compare   0E2   0   -> 0
-ddcom664 compare  -0E1  -0E1 -> 0
-ddcom665 compare  -0E2  -0E1 -> 0
-ddcom666 compare   0E1  -0E1 -> 0
-ddcom667 compare   0E2  -0E1 -> 0
-ddcom668 compare  -0E1  -0E2 -> 0
-ddcom669 compare  -0E2  -0E2 -> 0
-ddcom670 compare   0E1  -0E2 -> 0
-ddcom671 compare   0E2  -0E2 -> 0
-ddcom672 compare  -0E1   0E1 -> 0
-ddcom673 compare  -0E2   0E1 -> 0
-ddcom674 compare   0E1   0E1 -> 0
-ddcom675 compare   0E2   0E1 -> 0
-ddcom676 compare  -0E1   0E2 -> 0
-ddcom677 compare  -0E2   0E2 -> 0
-ddcom678 compare   0E1   0E2 -> 0
-ddcom679 compare   0E2   0E2 -> 0
-
--- trailing zeros; unit-y
-ddcom680 compare   12    12           -> 0
-ddcom681 compare   12    12.0         -> 0
-ddcom682 compare   12    12.00        -> 0
-ddcom683 compare   12    12.000       -> 0
-ddcom684 compare   12    12.0000      -> 0
-ddcom685 compare   12    12.00000     -> 0
-ddcom686 compare   12    12.000000    -> 0
-ddcom687 compare   12    12.0000000   -> 0
-ddcom688 compare   12    12.00000000  -> 0
-ddcom689 compare   12    12.000000000 -> 0
-ddcom690 compare   12              12 -> 0
-ddcom691 compare   12.0            12 -> 0
-ddcom692 compare   12.00           12 -> 0
-ddcom693 compare   12.000          12 -> 0
-ddcom694 compare   12.0000         12 -> 0
-ddcom695 compare   12.00000        12 -> 0
-ddcom696 compare   12.000000       12 -> 0
-ddcom697 compare   12.0000000      12 -> 0
-ddcom698 compare   12.00000000     12 -> 0
-ddcom699 compare   12.000000000    12 -> 0
-
--- first, second, & last digit
-ddcom700 compare   1234567890123456 1234567890123455 -> 1
-ddcom701 compare   1234567890123456 1234567890123456 -> 0
-ddcom702 compare   1234567890123456 1234567890123457 -> -1
-ddcom703 compare   1234567890123456 0234567890123456 -> 1
-ddcom704 compare   1234567890123456 1234567890123456 -> 0
-ddcom705 compare   1234567890123456 2234567890123456 -> -1
-ddcom706 compare   1134567890123456 1034567890123456 -> 1
-ddcom707 compare   1134567890123456 1134567890123456 -> 0
-ddcom708 compare   1134567890123456 1234567890123456 -> -1
-
--- miscellaneous
-ddcom721 compare 12345678000 1 -> 1
-ddcom722 compare 1 12345678000 -> -1
-ddcom723 compare 1234567800  1 -> 1
-ddcom724 compare 1 1234567800  -> -1
-ddcom725 compare 1234567890  1 -> 1
-ddcom726 compare 1 1234567890  -> -1
-ddcom727 compare 1234567891  1 -> 1
-ddcom728 compare 1 1234567891  -> -1
-ddcom729 compare 12345678901 1 -> 1
-ddcom730 compare 1 12345678901 -> -1
-ddcom731 compare 1234567896  1 -> 1
-ddcom732 compare 1 1234567896  -> -1
-
--- residue cases at lower precision
-ddcom740 compare  1  0.9999999  -> 1
-ddcom741 compare  1  0.999999   -> 1
-ddcom742 compare  1  0.99999    -> 1
-ddcom743 compare  1  1.0000     -> 0
-ddcom744 compare  1  1.00001    -> -1
-ddcom745 compare  1  1.000001   -> -1
-ddcom746 compare  1  1.0000001  -> -1
-ddcom750 compare  0.9999999  1  -> -1
-ddcom751 compare  0.999999   1  -> -1
-ddcom752 compare  0.99999    1  -> -1
-ddcom753 compare  1.0000     1  -> 0
-ddcom754 compare  1.00001    1  -> 1
-ddcom755 compare  1.000001   1  -> 1
-ddcom756 compare  1.0000001  1  -> 1
-
--- Specials
-ddcom780 compare  Inf  -Inf   ->  1
-ddcom781 compare  Inf  -1000  ->  1
-ddcom782 compare  Inf  -1     ->  1
-ddcom783 compare  Inf  -0     ->  1
-ddcom784 compare  Inf   0     ->  1
-ddcom785 compare  Inf   1     ->  1
-ddcom786 compare  Inf   1000  ->  1
-ddcom787 compare  Inf   Inf   ->  0
-ddcom788 compare -1000  Inf   -> -1
-ddcom789 compare -Inf   Inf   -> -1
-ddcom790 compare -1     Inf   -> -1
-ddcom791 compare -0     Inf   -> -1
-ddcom792 compare  0     Inf   -> -1
-ddcom793 compare  1     Inf   -> -1
-ddcom794 compare  1000  Inf   -> -1
-ddcom795 compare  Inf   Inf   ->  0
-
-ddcom800 compare -Inf  -Inf   ->  0
-ddcom801 compare -Inf  -1000  -> -1
-ddcom802 compare -Inf  -1     -> -1
-ddcom803 compare -Inf  -0     -> -1
-ddcom804 compare -Inf   0     -> -1
-ddcom805 compare -Inf   1     -> -1
-ddcom806 compare -Inf   1000  -> -1
-ddcom807 compare -Inf   Inf   -> -1
-ddcom808 compare -Inf  -Inf   ->  0
-ddcom809 compare -1000 -Inf   ->  1
-ddcom810 compare -1    -Inf   ->  1
-ddcom811 compare -0    -Inf   ->  1
-ddcom812 compare  0    -Inf   ->  1
-ddcom813 compare  1    -Inf   ->  1
-ddcom814 compare  1000 -Inf   ->  1
-ddcom815 compare  Inf  -Inf   ->  1
-
-ddcom821 compare  NaN -Inf    ->  NaN
-ddcom822 compare  NaN -1000   ->  NaN
-ddcom823 compare  NaN -1      ->  NaN
-ddcom824 compare  NaN -0      ->  NaN
-ddcom825 compare  NaN  0      ->  NaN
-ddcom826 compare  NaN  1      ->  NaN
-ddcom827 compare  NaN  1000   ->  NaN
-ddcom828 compare  NaN  Inf    ->  NaN
-ddcom829 compare  NaN  NaN    ->  NaN
-ddcom830 compare -Inf  NaN    ->  NaN
-ddcom831 compare -1000 NaN    ->  NaN
-ddcom832 compare -1    NaN    ->  NaN
-ddcom833 compare -0    NaN    ->  NaN
-ddcom834 compare  0    NaN    ->  NaN
-ddcom835 compare  1    NaN    ->  NaN
-ddcom836 compare  1000 NaN    ->  NaN
-ddcom837 compare  Inf  NaN    ->  NaN
-ddcom838 compare -NaN -NaN    -> -NaN
-ddcom839 compare +NaN -NaN    ->  NaN
-ddcom840 compare -NaN +NaN    -> -NaN
-
-ddcom841 compare  sNaN -Inf   ->  NaN  Invalid_operation
-ddcom842 compare  sNaN -1000  ->  NaN  Invalid_operation
-ddcom843 compare  sNaN -1     ->  NaN  Invalid_operation
-ddcom844 compare  sNaN -0     ->  NaN  Invalid_operation
-ddcom845 compare  sNaN  0     ->  NaN  Invalid_operation
-ddcom846 compare  sNaN  1     ->  NaN  Invalid_operation
-ddcom847 compare  sNaN  1000  ->  NaN  Invalid_operation
-ddcom848 compare  sNaN  NaN   ->  NaN  Invalid_operation
-ddcom849 compare  sNaN sNaN   ->  NaN  Invalid_operation
-ddcom850 compare  NaN  sNaN   ->  NaN  Invalid_operation
-ddcom851 compare -Inf  sNaN   ->  NaN  Invalid_operation
-ddcom852 compare -1000 sNaN   ->  NaN  Invalid_operation
-ddcom853 compare -1    sNaN   ->  NaN  Invalid_operation
-ddcom854 compare -0    sNaN   ->  NaN  Invalid_operation
-ddcom855 compare  0    sNaN   ->  NaN  Invalid_operation
-ddcom856 compare  1    sNaN   ->  NaN  Invalid_operation
-ddcom857 compare  1000 sNaN   ->  NaN  Invalid_operation
-ddcom858 compare  Inf  sNaN   ->  NaN  Invalid_operation
-ddcom859 compare  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddcom860 compare  NaN9 -Inf   ->  NaN9
-ddcom861 compare  NaN8  999   ->  NaN8
-ddcom862 compare  NaN77 Inf   ->  NaN77
-ddcom863 compare -NaN67 NaN5  -> -NaN67
-ddcom864 compare -Inf  -NaN4  -> -NaN4
-ddcom865 compare -999  -NaN33 -> -NaN33
-ddcom866 compare  Inf   NaN2  ->  NaN2
-ddcom867 compare -NaN41 -NaN42 -> -NaN41
-ddcom868 compare +NaN41 -NaN42 ->  NaN41
-ddcom869 compare -NaN41 +NaN42 -> -NaN41
-ddcom870 compare +NaN41 +NaN42 ->  NaN41
-
-ddcom871 compare -sNaN99 -Inf    -> -NaN99 Invalid_operation
-ddcom872 compare  sNaN98 -11     ->  NaN98 Invalid_operation
-ddcom873 compare  sNaN97  NaN    ->  NaN97 Invalid_operation
-ddcom874 compare  sNaN16 sNaN94  ->  NaN16 Invalid_operation
-ddcom875 compare  NaN85  sNaN83  ->  NaN83 Invalid_operation
-ddcom876 compare -Inf    sNaN92  ->  NaN92 Invalid_operation
-ddcom877 compare  088    sNaN81  ->  NaN81 Invalid_operation
-ddcom878 compare  Inf    sNaN90  ->  NaN90 Invalid_operation
-ddcom879 compare  NaN   -sNaN89  -> -NaN89 Invalid_operation
-
--- wide range
-ddcom880 compare +1.23456789012345E-0 9E+384 -> -1
-ddcom881 compare 9E+384 +1.23456789012345E-0 ->  1
-ddcom882 compare +0.100 9E-383               ->  1
-ddcom883 compare 9E-383 +0.100               -> -1
-ddcom885 compare -1.23456789012345E-0 9E+384 -> -1
-ddcom886 compare 9E+384 -1.23456789012345E-0 ->  1
-ddcom887 compare -0.100 9E-383               -> -1
-ddcom888 compare 9E-383 -0.100               ->  1
-
--- spread zeros
-ddcom900 compare   0E-383  0       ->  0
-ddcom901 compare   0E-383 -0       ->  0
-ddcom902 compare  -0E-383  0       ->  0
-ddcom903 compare  -0E-383 -0       ->  0
-ddcom904 compare   0E-383  0E+384  ->  0
-ddcom905 compare   0E-383 -0E+384  ->  0
-ddcom906 compare  -0E-383  0E+384  ->  0
-ddcom907 compare  -0E-383 -0E+384  ->  0
-ddcom908 compare   0       0E+384  ->  0
-ddcom909 compare   0      -0E+384  ->  0
-ddcom910 compare  -0       0E+384  ->  0
-ddcom911 compare  -0      -0E+384  ->  0
-ddcom930 compare   0E+384  0       ->  0
-ddcom931 compare   0E+384 -0       ->  0
-ddcom932 compare  -0E+384  0       ->  0
-ddcom933 compare  -0E+384 -0       ->  0
-ddcom934 compare   0E+384  0E-383  ->  0
-ddcom935 compare   0E+384 -0E-383  ->  0
-ddcom936 compare  -0E+384  0E-383  ->  0
-ddcom937 compare  -0E+384 -0E-383  ->  0
-ddcom938 compare   0       0E-383  ->  0
-ddcom939 compare   0      -0E-383  ->  0
-ddcom940 compare  -0       0E-383  ->  0
-ddcom941 compare  -0      -0E-383  ->  0
-
--- signs
-ddcom961 compare  1e+77  1e+11 ->  1
-ddcom962 compare  1e+77 -1e+11 ->  1
-ddcom963 compare -1e+77  1e+11 -> -1
-ddcom964 compare -1e+77 -1e+11 -> -1
-ddcom965 compare  1e-77  1e-11 -> -1
-ddcom966 compare  1e-77 -1e-11 ->  1
-ddcom967 compare -1e-77  1e-11 -> -1
-ddcom968 compare -1e-77 -1e-11 ->  1
-
--- full alignment range, both ways
-ddcomp1001 compare 1 1.000000000000000  -> 0
-ddcomp1002 compare 1 1.00000000000000   -> 0
-ddcomp1003 compare 1 1.0000000000000    -> 0
-ddcomp1004 compare 1 1.000000000000     -> 0
-ddcomp1005 compare 1 1.00000000000      -> 0
-ddcomp1006 compare 1 1.0000000000       -> 0
-ddcomp1007 compare 1 1.000000000        -> 0
-ddcomp1008 compare 1 1.00000000         -> 0
-ddcomp1009 compare 1 1.0000000          -> 0
-ddcomp1010 compare 1 1.000000           -> 0
-ddcomp1011 compare 1 1.00000            -> 0
-ddcomp1012 compare 1 1.0000             -> 0
-ddcomp1013 compare 1 1.000              -> 0
-ddcomp1014 compare 1 1.00               -> 0
-ddcomp1015 compare 1 1.0                -> 0
-ddcomp1021 compare 1.000000000000000  1 -> 0
-ddcomp1022 compare 1.00000000000000   1 -> 0
-ddcomp1023 compare 1.0000000000000    1 -> 0
-ddcomp1024 compare 1.000000000000     1 -> 0
-ddcomp1025 compare 1.00000000000      1 -> 0
-ddcomp1026 compare 1.0000000000       1 -> 0
-ddcomp1027 compare 1.000000000        1 -> 0
-ddcomp1028 compare 1.00000000         1 -> 0
-ddcomp1029 compare 1.0000000          1 -> 0
-ddcomp1030 compare 1.000000           1 -> 0
-ddcomp1031 compare 1.00000            1 -> 0
-ddcomp1032 compare 1.0000             1 -> 0
-ddcomp1033 compare 1.000              1 -> 0
-ddcomp1034 compare 1.00               1 -> 0
-ddcomp1035 compare 1.0                1 -> 0
-
--- check MSD always detected non-zero
-ddcomp1040 compare 0 0.000000000000000  -> 0
-ddcomp1041 compare 0 1.000000000000000  -> -1
-ddcomp1042 compare 0 2.000000000000000  -> -1
-ddcomp1043 compare 0 3.000000000000000  -> -1
-ddcomp1044 compare 0 4.000000000000000  -> -1
-ddcomp1045 compare 0 5.000000000000000  -> -1
-ddcomp1046 compare 0 6.000000000000000  -> -1
-ddcomp1047 compare 0 7.000000000000000  -> -1
-ddcomp1048 compare 0 8.000000000000000  -> -1
-ddcomp1049 compare 0 9.000000000000000  -> -1
-ddcomp1050 compare 0.000000000000000  0 -> 0
-ddcomp1051 compare 1.000000000000000  0 -> 1
-ddcomp1052 compare 2.000000000000000  0 -> 1
-ddcomp1053 compare 3.000000000000000  0 -> 1
-ddcomp1054 compare 4.000000000000000  0 -> 1
-ddcomp1055 compare 5.000000000000000  0 -> 1
-ddcomp1056 compare 6.000000000000000  0 -> 1
-ddcomp1057 compare 7.000000000000000  0 -> 1
-ddcomp1058 compare 8.000000000000000  0 -> 1
-ddcomp1059 compare 9.000000000000000  0 -> 1
-
--- Null tests
-ddcom9990 compare 10  # -> NaN Invalid_operation
-ddcom9991 compare  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareSig.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareSig.decTest
deleted file mode 100644
index 8d3fce0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareSig.decTest
+++ /dev/null
@@ -1,647 +0,0 @@
-------------------------------------------------------------------------
--- ddCompareSig.decTest -- decDouble comparison; all NaNs signal      --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Note that we cannot assume add/subtract tests cover paths adequately,
--- here, because the code might be quite different (comparison cannot
--- overflow or underflow, so actual subtractions are not necessary).
-
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- sanity checks
-ddcms001 comparesig  -2  -2  -> 0
-ddcms002 comparesig  -2  -1  -> -1
-ddcms003 comparesig  -2   0  -> -1
-ddcms004 comparesig  -2   1  -> -1
-ddcms005 comparesig  -2   2  -> -1
-ddcms006 comparesig  -1  -2  -> 1
-ddcms007 comparesig  -1  -1  -> 0
-ddcms008 comparesig  -1   0  -> -1
-ddcms009 comparesig  -1   1  -> -1
-ddcms010 comparesig  -1   2  -> -1
-ddcms011 comparesig   0  -2  -> 1
-ddcms012 comparesig   0  -1  -> 1
-ddcms013 comparesig   0   0  -> 0
-ddcms014 comparesig   0   1  -> -1
-ddcms015 comparesig   0   2  -> -1
-ddcms016 comparesig   1  -2  -> 1
-ddcms017 comparesig   1  -1  -> 1
-ddcms018 comparesig   1   0  -> 1
-ddcms019 comparesig   1   1  -> 0
-ddcms020 comparesig   1   2  -> -1
-ddcms021 comparesig   2  -2  -> 1
-ddcms022 comparesig   2  -1  -> 1
-ddcms023 comparesig   2   0  -> 1
-ddcms025 comparesig   2   1  -> 1
-ddcms026 comparesig   2   2  -> 0
-
-ddcms031 comparesig  -20  -20  -> 0
-ddcms032 comparesig  -20  -10  -> -1
-ddcms033 comparesig  -20   00  -> -1
-ddcms034 comparesig  -20   10  -> -1
-ddcms035 comparesig  -20   20  -> -1
-ddcms036 comparesig  -10  -20  -> 1
-ddcms037 comparesig  -10  -10  -> 0
-ddcms038 comparesig  -10   00  -> -1
-ddcms039 comparesig  -10   10  -> -1
-ddcms040 comparesig  -10   20  -> -1
-ddcms041 comparesig   00  -20  -> 1
-ddcms042 comparesig   00  -10  -> 1
-ddcms043 comparesig   00   00  -> 0
-ddcms044 comparesig   00   10  -> -1
-ddcms045 comparesig   00   20  -> -1
-ddcms046 comparesig   10  -20  -> 1
-ddcms047 comparesig   10  -10  -> 1
-ddcms048 comparesig   10   00  -> 1
-ddcms049 comparesig   10   10  -> 0
-ddcms050 comparesig   10   20  -> -1
-ddcms051 comparesig   20  -20  -> 1
-ddcms052 comparesig   20  -10  -> 1
-ddcms053 comparesig   20   00  -> 1
-ddcms055 comparesig   20   10  -> 1
-ddcms056 comparesig   20   20  -> 0
-
-ddcms061 comparesig  -2.0  -2.0  -> 0
-ddcms062 comparesig  -2.0  -1.0  -> -1
-ddcms063 comparesig  -2.0   0.0  -> -1
-ddcms064 comparesig  -2.0   1.0  -> -1
-ddcms065 comparesig  -2.0   2.0  -> -1
-ddcms066 comparesig  -1.0  -2.0  -> 1
-ddcms067 comparesig  -1.0  -1.0  -> 0
-ddcms068 comparesig  -1.0   0.0  -> -1
-ddcms069 comparesig  -1.0   1.0  -> -1
-ddcms070 comparesig  -1.0   2.0  -> -1
-ddcms071 comparesig   0.0  -2.0  -> 1
-ddcms072 comparesig   0.0  -1.0  -> 1
-ddcms073 comparesig   0.0   0.0  -> 0
-ddcms074 comparesig   0.0   1.0  -> -1
-ddcms075 comparesig   0.0   2.0  -> -1
-ddcms076 comparesig   1.0  -2.0  -> 1
-ddcms077 comparesig   1.0  -1.0  -> 1
-ddcms078 comparesig   1.0   0.0  -> 1
-ddcms079 comparesig   1.0   1.0  -> 0
-ddcms080 comparesig   1.0   2.0  -> -1
-ddcms081 comparesig   2.0  -2.0  -> 1
-ddcms082 comparesig   2.0  -1.0  -> 1
-ddcms083 comparesig   2.0   0.0  -> 1
-ddcms085 comparesig   2.0   1.0  -> 1
-ddcms086 comparesig   2.0   2.0  -> 0
-
--- now some cases which might overflow if subtract were used
-ddcms090 comparesig  9.999999999999999E+384 9.999999999999999E+384  -> 0
-ddcms091 comparesig -9.999999999999999E+384 9.999999999999999E+384  -> -1
-ddcms092 comparesig  9.999999999999999E+384 -9.999999999999999E+384 -> 1
-ddcms093 comparesig -9.999999999999999E+384 -9.999999999999999E+384 -> 0
-
--- some differing length/exponent cases
-ddcms100 comparesig   7.0    7.0    -> 0
-ddcms101 comparesig   7.0    7      -> 0
-ddcms102 comparesig   7      7.0    -> 0
-ddcms103 comparesig   7E+0   7.0    -> 0
-ddcms104 comparesig   70E-1  7.0    -> 0
-ddcms105 comparesig   0.7E+1 7      -> 0
-ddcms106 comparesig   70E-1  7      -> 0
-ddcms107 comparesig   7.0    7E+0   -> 0
-ddcms108 comparesig   7.0    70E-1  -> 0
-ddcms109 comparesig   7      0.7E+1 -> 0
-ddcms110 comparesig   7      70E-1  -> 0
-
-ddcms120 comparesig   8.0    7.0    -> 1
-ddcms121 comparesig   8.0    7      -> 1
-ddcms122 comparesig   8      7.0    -> 1
-ddcms123 comparesig   8E+0   7.0    -> 1
-ddcms124 comparesig   80E-1  7.0    -> 1
-ddcms125 comparesig   0.8E+1 7      -> 1
-ddcms126 comparesig   80E-1  7      -> 1
-ddcms127 comparesig   8.0    7E+0   -> 1
-ddcms128 comparesig   8.0    70E-1  -> 1
-ddcms129 comparesig   8      0.7E+1  -> 1
-ddcms130 comparesig   8      70E-1  -> 1
-
-ddcms140 comparesig   8.0    9.0    -> -1
-ddcms141 comparesig   8.0    9      -> -1
-ddcms142 comparesig   8      9.0    -> -1
-ddcms143 comparesig   8E+0   9.0    -> -1
-ddcms144 comparesig   80E-1  9.0    -> -1
-ddcms145 comparesig   0.8E+1 9      -> -1
-ddcms146 comparesig   80E-1  9      -> -1
-ddcms147 comparesig   8.0    9E+0   -> -1
-ddcms148 comparesig   8.0    90E-1  -> -1
-ddcms149 comparesig   8      0.9E+1 -> -1
-ddcms150 comparesig   8      90E-1  -> -1
-
--- and again, with sign changes -+ ..
-ddcms200 comparesig  -7.0    7.0    -> -1
-ddcms201 comparesig  -7.0    7      -> -1
-ddcms202 comparesig  -7      7.0    -> -1
-ddcms203 comparesig  -7E+0   7.0    -> -1
-ddcms204 comparesig  -70E-1  7.0    -> -1
-ddcms205 comparesig  -0.7E+1 7      -> -1
-ddcms206 comparesig  -70E-1  7      -> -1
-ddcms207 comparesig  -7.0    7E+0   -> -1
-ddcms208 comparesig  -7.0    70E-1  -> -1
-ddcms209 comparesig  -7      0.7E+1 -> -1
-ddcms210 comparesig  -7      70E-1  -> -1
-
-ddcms220 comparesig  -8.0    7.0    -> -1
-ddcms221 comparesig  -8.0    7      -> -1
-ddcms222 comparesig  -8      7.0    -> -1
-ddcms223 comparesig  -8E+0   7.0    -> -1
-ddcms224 comparesig  -80E-1  7.0    -> -1
-ddcms225 comparesig  -0.8E+1 7      -> -1
-ddcms226 comparesig  -80E-1  7      -> -1
-ddcms227 comparesig  -8.0    7E+0   -> -1
-ddcms228 comparesig  -8.0    70E-1  -> -1
-ddcms229 comparesig  -8      0.7E+1 -> -1
-ddcms230 comparesig  -8      70E-1  -> -1
-
-ddcms240 comparesig  -8.0    9.0    -> -1
-ddcms241 comparesig  -8.0    9      -> -1
-ddcms242 comparesig  -8      9.0    -> -1
-ddcms243 comparesig  -8E+0   9.0    -> -1
-ddcms244 comparesig  -80E-1  9.0    -> -1
-ddcms245 comparesig  -0.8E+1 9      -> -1
-ddcms246 comparesig  -80E-1  9      -> -1
-ddcms247 comparesig  -8.0    9E+0   -> -1
-ddcms248 comparesig  -8.0    90E-1  -> -1
-ddcms249 comparesig  -8      0.9E+1 -> -1
-ddcms250 comparesig  -8      90E-1  -> -1
-
--- and again, with sign changes +- ..
-ddcms300 comparesig   7.0    -7.0    -> 1
-ddcms301 comparesig   7.0    -7      -> 1
-ddcms302 comparesig   7      -7.0    -> 1
-ddcms303 comparesig   7E+0   -7.0    -> 1
-ddcms304 comparesig   70E-1  -7.0    -> 1
-ddcms305 comparesig   .7E+1  -7      -> 1
-ddcms306 comparesig   70E-1  -7      -> 1
-ddcms307 comparesig   7.0    -7E+0   -> 1
-ddcms308 comparesig   7.0    -70E-1  -> 1
-ddcms309 comparesig   7      -.7E+1  -> 1
-ddcms310 comparesig   7      -70E-1  -> 1
-
-ddcms320 comparesig   8.0    -7.0    -> 1
-ddcms321 comparesig   8.0    -7      -> 1
-ddcms322 comparesig   8      -7.0    -> 1
-ddcms323 comparesig   8E+0   -7.0    -> 1
-ddcms324 comparesig   80E-1  -7.0    -> 1
-ddcms325 comparesig   .8E+1  -7      -> 1
-ddcms326 comparesig   80E-1  -7      -> 1
-ddcms327 comparesig   8.0    -7E+0   -> 1
-ddcms328 comparesig   8.0    -70E-1  -> 1
-ddcms329 comparesig   8      -.7E+1  -> 1
-ddcms330 comparesig   8      -70E-1  -> 1
-
-ddcms340 comparesig   8.0    -9.0    -> 1
-ddcms341 comparesig   8.0    -9      -> 1
-ddcms342 comparesig   8      -9.0    -> 1
-ddcms343 comparesig   8E+0   -9.0    -> 1
-ddcms344 comparesig   80E-1  -9.0    -> 1
-ddcms345 comparesig   .8E+1  -9      -> 1
-ddcms346 comparesig   80E-1  -9      -> 1
-ddcms347 comparesig   8.0    -9E+0   -> 1
-ddcms348 comparesig   8.0    -90E-1  -> 1
-ddcms349 comparesig   8      -.9E+1  -> 1
-ddcms350 comparesig   8      -90E-1  -> 1
-
--- and again, with sign changes -- ..
-ddcms400 comparesig   -7.0    -7.0    -> 0
-ddcms401 comparesig   -7.0    -7      -> 0
-ddcms402 comparesig   -7      -7.0    -> 0
-ddcms403 comparesig   -7E+0   -7.0    -> 0
-ddcms404 comparesig   -70E-1  -7.0    -> 0
-ddcms405 comparesig   -.7E+1  -7      -> 0
-ddcms406 comparesig   -70E-1  -7      -> 0
-ddcms407 comparesig   -7.0    -7E+0   -> 0
-ddcms408 comparesig   -7.0    -70E-1  -> 0
-ddcms409 comparesig   -7      -.7E+1  -> 0
-ddcms410 comparesig   -7      -70E-1  -> 0
-
-ddcms420 comparesig   -8.0    -7.0    -> -1
-ddcms421 comparesig   -8.0    -7      -> -1
-ddcms422 comparesig   -8      -7.0    -> -1
-ddcms423 comparesig   -8E+0   -7.0    -> -1
-ddcms424 comparesig   -80E-1  -7.0    -> -1
-ddcms425 comparesig   -.8E+1  -7      -> -1
-ddcms426 comparesig   -80E-1  -7      -> -1
-ddcms427 comparesig   -8.0    -7E+0   -> -1
-ddcms428 comparesig   -8.0    -70E-1  -> -1
-ddcms429 comparesig   -8      -.7E+1  -> -1
-ddcms430 comparesig   -8      -70E-1  -> -1
-
-ddcms440 comparesig   -8.0    -9.0    -> 1
-ddcms441 comparesig   -8.0    -9      -> 1
-ddcms442 comparesig   -8      -9.0    -> 1
-ddcms443 comparesig   -8E+0   -9.0    -> 1
-ddcms444 comparesig   -80E-1  -9.0    -> 1
-ddcms445 comparesig   -.8E+1  -9      -> 1
-ddcms446 comparesig   -80E-1  -9      -> 1
-ddcms447 comparesig   -8.0    -9E+0   -> 1
-ddcms448 comparesig   -8.0    -90E-1  -> 1
-ddcms449 comparesig   -8      -.9E+1  -> 1
-ddcms450 comparesig   -8      -90E-1  -> 1
-
-
--- testcases that subtract to lots of zeros at boundaries [pgr]
-ddcms473 comparesig 123.4560000000000E-89 123.456E-89 -> 0
-ddcms474 comparesig 123.456000000000E+89 123.456E+89 -> 0
-ddcms475 comparesig 123.45600000000E-89 123.456E-89 -> 0
-ddcms476 comparesig 123.4560000000E+89 123.456E+89 -> 0
-ddcms477 comparesig 123.456000000E-89 123.456E-89 -> 0
-ddcms478 comparesig 123.45600000E+89 123.456E+89 -> 0
-ddcms479 comparesig 123.4560000E-89 123.456E-89 -> 0
-ddcms480 comparesig 123.456000E+89 123.456E+89 -> 0
-ddcms481 comparesig 123.45600E-89 123.456E-89 -> 0
-ddcms482 comparesig 123.4560E+89 123.456E+89 -> 0
-ddcms483 comparesig 123.456E-89 123.456E-89 -> 0
-ddcms487 comparesig 123.456E+89 123.4560000000000E+89 -> 0
-ddcms488 comparesig 123.456E-89 123.456000000000E-89 -> 0
-ddcms489 comparesig 123.456E+89 123.45600000000E+89 -> 0
-ddcms490 comparesig 123.456E-89 123.4560000000E-89 -> 0
-ddcms491 comparesig 123.456E+89 123.456000000E+89 -> 0
-ddcms492 comparesig 123.456E-89 123.45600000E-89 -> 0
-ddcms493 comparesig 123.456E+89 123.4560000E+89 -> 0
-ddcms494 comparesig 123.456E-89 123.456000E-89 -> 0
-ddcms495 comparesig 123.456E+89 123.45600E+89 -> 0
-ddcms496 comparesig 123.456E-89 123.4560E-89 -> 0
-ddcms497 comparesig 123.456E+89 123.456E+89 -> 0
-
--- wide-ranging, around precision; signs equal
-ddcms500 comparesig    1     1E-15    -> 1
-ddcms501 comparesig    1     1E-14    -> 1
-ddcms502 comparesig    1     1E-13    -> 1
-ddcms503 comparesig    1     1E-12    -> 1
-ddcms504 comparesig    1     1E-11    -> 1
-ddcms505 comparesig    1     1E-10    -> 1
-ddcms506 comparesig    1     1E-9     -> 1
-ddcms507 comparesig    1     1E-8     -> 1
-ddcms508 comparesig    1     1E-7     -> 1
-ddcms509 comparesig    1     1E-6     -> 1
-ddcms510 comparesig    1     1E-5     -> 1
-ddcms511 comparesig    1     1E-4     -> 1
-ddcms512 comparesig    1     1E-3     -> 1
-ddcms513 comparesig    1     1E-2     -> 1
-ddcms514 comparesig    1     1E-1     -> 1
-ddcms515 comparesig    1     1E-0     -> 0
-ddcms516 comparesig    1     1E+1     -> -1
-ddcms517 comparesig    1     1E+2     -> -1
-ddcms518 comparesig    1     1E+3     -> -1
-ddcms519 comparesig    1     1E+4     -> -1
-ddcms521 comparesig    1     1E+5     -> -1
-ddcms522 comparesig    1     1E+6     -> -1
-ddcms523 comparesig    1     1E+7     -> -1
-ddcms524 comparesig    1     1E+8     -> -1
-ddcms525 comparesig    1     1E+9     -> -1
-ddcms526 comparesig    1     1E+10    -> -1
-ddcms527 comparesig    1     1E+11    -> -1
-ddcms528 comparesig    1     1E+12    -> -1
-ddcms529 comparesig    1     1E+13    -> -1
-ddcms530 comparesig    1     1E+14    -> -1
-ddcms531 comparesig    1     1E+15    -> -1
--- LR swap
-ddcms540 comparesig    1E-15  1       -> -1
-ddcms541 comparesig    1E-14  1       -> -1
-ddcms542 comparesig    1E-13  1       -> -1
-ddcms543 comparesig    1E-12  1       -> -1
-ddcms544 comparesig    1E-11  1       -> -1
-ddcms545 comparesig    1E-10  1       -> -1
-ddcms546 comparesig    1E-9   1       -> -1
-ddcms547 comparesig    1E-8   1       -> -1
-ddcms548 comparesig    1E-7   1       -> -1
-ddcms549 comparesig    1E-6   1       -> -1
-ddcms550 comparesig    1E-5   1       -> -1
-ddcms551 comparesig    1E-4   1       -> -1
-ddcms552 comparesig    1E-3   1       -> -1
-ddcms553 comparesig    1E-2   1       -> -1
-ddcms554 comparesig    1E-1   1       -> -1
-ddcms555 comparesig    1E-0   1       ->  0
-ddcms556 comparesig    1E+1   1       ->  1
-ddcms557 comparesig    1E+2   1       ->  1
-ddcms558 comparesig    1E+3   1       ->  1
-ddcms559 comparesig    1E+4   1       ->  1
-ddcms561 comparesig    1E+5   1       ->  1
-ddcms562 comparesig    1E+6   1       ->  1
-ddcms563 comparesig    1E+7   1       ->  1
-ddcms564 comparesig    1E+8   1       ->  1
-ddcms565 comparesig    1E+9   1       ->  1
-ddcms566 comparesig    1E+10  1       ->  1
-ddcms567 comparesig    1E+11  1       ->  1
-ddcms568 comparesig    1E+12  1       ->  1
-ddcms569 comparesig    1E+13  1       ->  1
-ddcms570 comparesig    1E+14  1       ->  1
-ddcms571 comparesig    1E+15  1       ->  1
--- similar with a useful coefficient, one side only
-ddcms580 comparesig  0.000000987654321     1E-15    -> 1
-ddcms581 comparesig  0.000000987654321     1E-14    -> 1
-ddcms582 comparesig  0.000000987654321     1E-13    -> 1
-ddcms583 comparesig  0.000000987654321     1E-12    -> 1
-ddcms584 comparesig  0.000000987654321     1E-11    -> 1
-ddcms585 comparesig  0.000000987654321     1E-10    -> 1
-ddcms586 comparesig  0.000000987654321     1E-9     -> 1
-ddcms587 comparesig  0.000000987654321     1E-8     -> 1
-ddcms588 comparesig  0.000000987654321     1E-7     -> 1
-ddcms589 comparesig  0.000000987654321     1E-6     -> -1
-ddcms590 comparesig  0.000000987654321     1E-5     -> -1
-ddcms591 comparesig  0.000000987654321     1E-4     -> -1
-ddcms592 comparesig  0.000000987654321     1E-3     -> -1
-ddcms593 comparesig  0.000000987654321     1E-2     -> -1
-ddcms594 comparesig  0.000000987654321     1E-1     -> -1
-ddcms595 comparesig  0.000000987654321     1E-0     -> -1
-ddcms596 comparesig  0.000000987654321     1E+1     -> -1
-ddcms597 comparesig  0.000000987654321     1E+2     -> -1
-ddcms598 comparesig  0.000000987654321     1E+3     -> -1
-ddcms599 comparesig  0.000000987654321     1E+4     -> -1
-
--- check some unit-y traps
-ddcms600 comparesig   12            12.2345 -> -1
-ddcms601 comparesig   12.0          12.2345 -> -1
-ddcms602 comparesig   12.00         12.2345 -> -1
-ddcms603 comparesig   12.000        12.2345 -> -1
-ddcms604 comparesig   12.0000       12.2345 -> -1
-ddcms605 comparesig   12.00000      12.2345 -> -1
-ddcms606 comparesig   12.000000     12.2345 -> -1
-ddcms607 comparesig   12.0000000    12.2345 -> -1
-ddcms608 comparesig   12.00000000   12.2345 -> -1
-ddcms609 comparesig   12.000000000  12.2345 -> -1
-ddcms610 comparesig   12.1234 12            ->  1
-ddcms611 comparesig   12.1234 12.0          ->  1
-ddcms612 comparesig   12.1234 12.00         ->  1
-ddcms613 comparesig   12.1234 12.000        ->  1
-ddcms614 comparesig   12.1234 12.0000       ->  1
-ddcms615 comparesig   12.1234 12.00000      ->  1
-ddcms616 comparesig   12.1234 12.000000     ->  1
-ddcms617 comparesig   12.1234 12.0000000    ->  1
-ddcms618 comparesig   12.1234 12.00000000   ->  1
-ddcms619 comparesig   12.1234 12.000000000  ->  1
-ddcms620 comparesig  -12           -12.2345 ->  1
-ddcms621 comparesig  -12.0         -12.2345 ->  1
-ddcms622 comparesig  -12.00        -12.2345 ->  1
-ddcms623 comparesig  -12.000       -12.2345 ->  1
-ddcms624 comparesig  -12.0000      -12.2345 ->  1
-ddcms625 comparesig  -12.00000     -12.2345 ->  1
-ddcms626 comparesig  -12.000000    -12.2345 ->  1
-ddcms627 comparesig  -12.0000000   -12.2345 ->  1
-ddcms628 comparesig  -12.00000000  -12.2345 ->  1
-ddcms629 comparesig  -12.000000000 -12.2345 ->  1
-ddcms630 comparesig  -12.1234 -12           -> -1
-ddcms631 comparesig  -12.1234 -12.0         -> -1
-ddcms632 comparesig  -12.1234 -12.00        -> -1
-ddcms633 comparesig  -12.1234 -12.000       -> -1
-ddcms634 comparesig  -12.1234 -12.0000      -> -1
-ddcms635 comparesig  -12.1234 -12.00000     -> -1
-ddcms636 comparesig  -12.1234 -12.000000    -> -1
-ddcms637 comparesig  -12.1234 -12.0000000   -> -1
-ddcms638 comparesig  -12.1234 -12.00000000  -> -1
-ddcms639 comparesig  -12.1234 -12.000000000 -> -1
-
--- extended zeros
-ddcms640 comparesig   0     0   -> 0
-ddcms641 comparesig   0    -0   -> 0
-ddcms642 comparesig   0    -0.0 -> 0
-ddcms643 comparesig   0     0.0 -> 0
-ddcms644 comparesig  -0     0   -> 0
-ddcms645 comparesig  -0    -0   -> 0
-ddcms646 comparesig  -0    -0.0 -> 0
-ddcms647 comparesig  -0     0.0 -> 0
-ddcms648 comparesig   0.0   0   -> 0
-ddcms649 comparesig   0.0  -0   -> 0
-ddcms650 comparesig   0.0  -0.0 -> 0
-ddcms651 comparesig   0.0   0.0 -> 0
-ddcms652 comparesig  -0.0   0   -> 0
-ddcms653 comparesig  -0.0  -0   -> 0
-ddcms654 comparesig  -0.0  -0.0 -> 0
-ddcms655 comparesig  -0.0   0.0 -> 0
-
-ddcms656 comparesig  -0E1   0.0 -> 0
-ddcms657 comparesig  -0E2   0.0 -> 0
-ddcms658 comparesig   0E1   0.0 -> 0
-ddcms659 comparesig   0E2   0.0 -> 0
-ddcms660 comparesig  -0E1   0   -> 0
-ddcms661 comparesig  -0E2   0   -> 0
-ddcms662 comparesig   0E1   0   -> 0
-ddcms663 comparesig   0E2   0   -> 0
-ddcms664 comparesig  -0E1  -0E1 -> 0
-ddcms665 comparesig  -0E2  -0E1 -> 0
-ddcms666 comparesig   0E1  -0E1 -> 0
-ddcms667 comparesig   0E2  -0E1 -> 0
-ddcms668 comparesig  -0E1  -0E2 -> 0
-ddcms669 comparesig  -0E2  -0E2 -> 0
-ddcms670 comparesig   0E1  -0E2 -> 0
-ddcms671 comparesig   0E2  -0E2 -> 0
-ddcms672 comparesig  -0E1   0E1 -> 0
-ddcms673 comparesig  -0E2   0E1 -> 0
-ddcms674 comparesig   0E1   0E1 -> 0
-ddcms675 comparesig   0E2   0E1 -> 0
-ddcms676 comparesig  -0E1   0E2 -> 0
-ddcms677 comparesig  -0E2   0E2 -> 0
-ddcms678 comparesig   0E1   0E2 -> 0
-ddcms679 comparesig   0E2   0E2 -> 0
-
--- trailing zeros; unit-y
-ddcms680 comparesig   12    12           -> 0
-ddcms681 comparesig   12    12.0         -> 0
-ddcms682 comparesig   12    12.00        -> 0
-ddcms683 comparesig   12    12.000       -> 0
-ddcms684 comparesig   12    12.0000      -> 0
-ddcms685 comparesig   12    12.00000     -> 0
-ddcms686 comparesig   12    12.000000    -> 0
-ddcms687 comparesig   12    12.0000000   -> 0
-ddcms688 comparesig   12    12.00000000  -> 0
-ddcms689 comparesig   12    12.000000000 -> 0
-ddcms690 comparesig   12              12 -> 0
-ddcms691 comparesig   12.0            12 -> 0
-ddcms692 comparesig   12.00           12 -> 0
-ddcms693 comparesig   12.000          12 -> 0
-ddcms694 comparesig   12.0000         12 -> 0
-ddcms695 comparesig   12.00000        12 -> 0
-ddcms696 comparesig   12.000000       12 -> 0
-ddcms697 comparesig   12.0000000      12 -> 0
-ddcms698 comparesig   12.00000000     12 -> 0
-ddcms699 comparesig   12.000000000    12 -> 0
-
--- first, second, & last digit
-ddcms700 comparesig   1234567890123456 1234567890123455 -> 1
-ddcms701 comparesig   1234567890123456 1234567890123456 -> 0
-ddcms702 comparesig   1234567890123456 1234567890123457 -> -1
-ddcms703 comparesig   1234567890123456 0234567890123456 -> 1
-ddcms704 comparesig   1234567890123456 1234567890123456 -> 0
-ddcms705 comparesig   1234567890123456 2234567890123456 -> -1
-ddcms706 comparesig   1134567890123456 1034567890123456 -> 1
-ddcms707 comparesig   1134567890123456 1134567890123456 -> 0
-ddcms708 comparesig   1134567890123456 1234567890123456 -> -1
-
--- miscellaneous
-ddcms721 comparesig 12345678000 1 -> 1
-ddcms722 comparesig 1 12345678000 -> -1
-ddcms723 comparesig 1234567800  1 -> 1
-ddcms724 comparesig 1 1234567800  -> -1
-ddcms725 comparesig 1234567890  1 -> 1
-ddcms726 comparesig 1 1234567890  -> -1
-ddcms727 comparesig 1234567891  1 -> 1
-ddcms728 comparesig 1 1234567891  -> -1
-ddcms729 comparesig 12345678901 1 -> 1
-ddcms730 comparesig 1 12345678901 -> -1
-ddcms731 comparesig 1234567896  1 -> 1
-ddcms732 comparesig 1 1234567896  -> -1
-
--- residue cases at lower precision
-ddcms740 comparesig  1  0.9999999  -> 1
-ddcms741 comparesig  1  0.999999   -> 1
-ddcms742 comparesig  1  0.99999    -> 1
-ddcms743 comparesig  1  1.0000     -> 0
-ddcms744 comparesig  1  1.00001    -> -1
-ddcms745 comparesig  1  1.000001   -> -1
-ddcms746 comparesig  1  1.0000001  -> -1
-ddcms750 comparesig  0.9999999  1  -> -1
-ddcms751 comparesig  0.999999   1  -> -1
-ddcms752 comparesig  0.99999    1  -> -1
-ddcms753 comparesig  1.0000     1  -> 0
-ddcms754 comparesig  1.00001    1  -> 1
-ddcms755 comparesig  1.000001   1  -> 1
-ddcms756 comparesig  1.0000001  1  -> 1
-
--- Specials
-ddcms780 comparesig  Inf  -Inf   ->  1
-ddcms781 comparesig  Inf  -1000  ->  1
-ddcms782 comparesig  Inf  -1     ->  1
-ddcms783 comparesig  Inf  -0     ->  1
-ddcms784 comparesig  Inf   0     ->  1
-ddcms785 comparesig  Inf   1     ->  1
-ddcms786 comparesig  Inf   1000  ->  1
-ddcms787 comparesig  Inf   Inf   ->  0
-ddcms788 comparesig -1000  Inf   -> -1
-ddcms789 comparesig -Inf   Inf   -> -1
-ddcms790 comparesig -1     Inf   -> -1
-ddcms791 comparesig -0     Inf   -> -1
-ddcms792 comparesig  0     Inf   -> -1
-ddcms793 comparesig  1     Inf   -> -1
-ddcms794 comparesig  1000  Inf   -> -1
-ddcms795 comparesig  Inf   Inf   ->  0
-
-ddcms800 comparesig -Inf  -Inf   ->  0
-ddcms801 comparesig -Inf  -1000  -> -1
-ddcms802 comparesig -Inf  -1     -> -1
-ddcms803 comparesig -Inf  -0     -> -1
-ddcms804 comparesig -Inf   0     -> -1
-ddcms805 comparesig -Inf   1     -> -1
-ddcms806 comparesig -Inf   1000  -> -1
-ddcms807 comparesig -Inf   Inf   -> -1
-ddcms808 comparesig -Inf  -Inf   ->  0
-ddcms809 comparesig -1000 -Inf   ->  1
-ddcms810 comparesig -1    -Inf   ->  1
-ddcms811 comparesig -0    -Inf   ->  1
-ddcms812 comparesig  0    -Inf   ->  1
-ddcms813 comparesig  1    -Inf   ->  1
-ddcms814 comparesig  1000 -Inf   ->  1
-ddcms815 comparesig  Inf  -Inf   ->  1
-
-ddcms821 comparesig  NaN -Inf    ->  NaN  Invalid_operation
-ddcms822 comparesig  NaN -1000   ->  NaN  Invalid_operation
-ddcms823 comparesig  NaN -1      ->  NaN  Invalid_operation
-ddcms824 comparesig  NaN -0      ->  NaN  Invalid_operation
-ddcms825 comparesig  NaN  0      ->  NaN  Invalid_operation
-ddcms826 comparesig  NaN  1      ->  NaN  Invalid_operation
-ddcms827 comparesig  NaN  1000   ->  NaN  Invalid_operation
-ddcms828 comparesig  NaN  Inf    ->  NaN  Invalid_operation
-ddcms829 comparesig  NaN  NaN    ->  NaN  Invalid_operation
-ddcms830 comparesig -Inf  NaN    ->  NaN  Invalid_operation
-ddcms831 comparesig -1000 NaN    ->  NaN  Invalid_operation
-ddcms832 comparesig -1    NaN    ->  NaN  Invalid_operation
-ddcms833 comparesig -0    NaN    ->  NaN  Invalid_operation
-ddcms834 comparesig  0    NaN    ->  NaN  Invalid_operation
-ddcms835 comparesig  1    NaN    ->  NaN  Invalid_operation
-ddcms836 comparesig  1000 NaN    ->  NaN  Invalid_operation
-ddcms837 comparesig  Inf  NaN    ->  NaN  Invalid_operation
-ddcms838 comparesig -NaN -NaN    -> -NaN  Invalid_operation
-ddcms839 comparesig +NaN -NaN    ->  NaN  Invalid_operation
-ddcms840 comparesig -NaN +NaN    -> -NaN  Invalid_operation
-
-ddcms841 comparesig  sNaN -Inf   ->  NaN  Invalid_operation
-ddcms842 comparesig  sNaN -1000  ->  NaN  Invalid_operation
-ddcms843 comparesig  sNaN -1     ->  NaN  Invalid_operation
-ddcms844 comparesig  sNaN -0     ->  NaN  Invalid_operation
-ddcms845 comparesig  sNaN  0     ->  NaN  Invalid_operation
-ddcms846 comparesig  sNaN  1     ->  NaN  Invalid_operation
-ddcms847 comparesig  sNaN  1000  ->  NaN  Invalid_operation
-ddcms848 comparesig  sNaN  NaN   ->  NaN  Invalid_operation
-ddcms849 comparesig  sNaN sNaN   ->  NaN  Invalid_operation
-ddcms850 comparesig  NaN  sNaN   ->  NaN  Invalid_operation
-ddcms851 comparesig -Inf  sNaN   ->  NaN  Invalid_operation
-ddcms852 comparesig -1000 sNaN   ->  NaN  Invalid_operation
-ddcms853 comparesig -1    sNaN   ->  NaN  Invalid_operation
-ddcms854 comparesig -0    sNaN   ->  NaN  Invalid_operation
-ddcms855 comparesig  0    sNaN   ->  NaN  Invalid_operation
-ddcms856 comparesig  1    sNaN   ->  NaN  Invalid_operation
-ddcms857 comparesig  1000 sNaN   ->  NaN  Invalid_operation
-ddcms858 comparesig  Inf  sNaN   ->  NaN  Invalid_operation
-ddcms859 comparesig  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddcms860 comparesig  NaN9 -Inf   ->  NaN9   Invalid_operation
-ddcms861 comparesig  NaN8  999   ->  NaN8   Invalid_operation
-ddcms862 comparesig  NaN77 Inf   ->  NaN77  Invalid_operation
-ddcms863 comparesig -NaN67 NaN5  -> -NaN67  Invalid_operation
-ddcms864 comparesig -Inf  -NaN4  -> -NaN4   Invalid_operation
-ddcms865 comparesig -999  -NaN33 -> -NaN33  Invalid_operation
-ddcms866 comparesig  Inf   NaN2  ->  NaN2   Invalid_operation
-ddcms867 comparesig -NaN41 -NaN42 -> -NaN41 Invalid_operation
-ddcms868 comparesig +NaN41 -NaN42 ->  NaN41 Invalid_operation
-ddcms869 comparesig -NaN41 +NaN42 -> -NaN41 Invalid_operation
-ddcms870 comparesig +NaN41 +NaN42 ->  NaN41 Invalid_operation
-
-ddcms871 comparesig -sNaN99 -Inf    -> -NaN99 Invalid_operation
-ddcms872 comparesig  sNaN98 -11     ->  NaN98 Invalid_operation
-ddcms873 comparesig  sNaN97  NaN    ->  NaN97 Invalid_operation
-ddcms874 comparesig  sNaN16 sNaN94  ->  NaN16 Invalid_operation
-ddcms875 comparesig  NaN85  sNaN83  ->  NaN83 Invalid_operation
-ddcms876 comparesig -Inf    sNaN92  ->  NaN92 Invalid_operation
-ddcms877 comparesig  088    sNaN81  ->  NaN81 Invalid_operation
-ddcms878 comparesig  Inf    sNaN90  ->  NaN90 Invalid_operation
-ddcms879 comparesig  NaN   -sNaN89  -> -NaN89 Invalid_operation
-
--- wide range
-ddcms880 comparesig +1.23456789012345E-0 9E+384 -> -1
-ddcms881 comparesig 9E+384 +1.23456789012345E-0 ->  1
-ddcms882 comparesig +0.100 9E-383               ->  1
-ddcms883 comparesig 9E-383 +0.100               -> -1
-ddcms885 comparesig -1.23456789012345E-0 9E+384 -> -1
-ddcms886 comparesig 9E+384 -1.23456789012345E-0 ->  1
-ddcms887 comparesig -0.100 9E-383               -> -1
-ddcms888 comparesig 9E-383 -0.100               ->  1
-
--- signs
-ddcms901 comparesig  1e+77  1e+11 ->  1
-ddcms902 comparesig  1e+77 -1e+11 ->  1
-ddcms903 comparesig -1e+77  1e+11 -> -1
-ddcms904 comparesig -1e+77 -1e+11 -> -1
-ddcms905 comparesig  1e-77  1e-11 -> -1
-ddcms906 comparesig  1e-77 -1e-11 ->  1
-ddcms907 comparesig -1e-77  1e-11 -> -1
-ddcms908 comparesig -1e-77 -1e-11 ->  1
-
--- Null tests
-ddcms990 comparesig 10  # -> NaN Invalid_operation
-ddcms991 comparesig  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareTotal.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareTotal.decTest
deleted file mode 100644
index 76beed5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareTotal.decTest
+++ /dev/null
@@ -1,706 +0,0 @@
-------------------------------------------------------------------------
--- ddCompareTotal.decTest -- decDouble comparison using total ordering--
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Note that we cannot assume add/subtract tests cover paths adequately,
--- here, because the code might be quite different (comparison cannot
--- overflow or underflow, so actual subtractions are not necessary).
--- Similarly, comparetotal will have some radically different paths
--- than compare.
-
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- sanity checks
-ddcot001 comparetotal  -2  -2  -> 0
-ddcot002 comparetotal  -2  -1  -> -1
-ddcot003 comparetotal  -2   0  -> -1
-ddcot004 comparetotal  -2   1  -> -1
-ddcot005 comparetotal  -2   2  -> -1
-ddcot006 comparetotal  -1  -2  -> 1
-ddcot007 comparetotal  -1  -1  -> 0
-ddcot008 comparetotal  -1   0  -> -1
-ddcot009 comparetotal  -1   1  -> -1
-ddcot010 comparetotal  -1   2  -> -1
-ddcot011 comparetotal   0  -2  -> 1
-ddcot012 comparetotal   0  -1  -> 1
-ddcot013 comparetotal   0   0  -> 0
-ddcot014 comparetotal   0   1  -> -1
-ddcot015 comparetotal   0   2  -> -1
-ddcot016 comparetotal   1  -2  -> 1
-ddcot017 comparetotal   1  -1  -> 1
-ddcot018 comparetotal   1   0  -> 1
-ddcot019 comparetotal   1   1  -> 0
-ddcot020 comparetotal   1   2  -> -1
-ddcot021 comparetotal   2  -2  -> 1
-ddcot022 comparetotal   2  -1  -> 1
-ddcot023 comparetotal   2   0  -> 1
-ddcot025 comparetotal   2   1  -> 1
-ddcot026 comparetotal   2   2  -> 0
-
-ddcot031 comparetotal  -20  -20  -> 0
-ddcot032 comparetotal  -20  -10  -> -1
-ddcot033 comparetotal  -20   00  -> -1
-ddcot034 comparetotal  -20   10  -> -1
-ddcot035 comparetotal  -20   20  -> -1
-ddcot036 comparetotal  -10  -20  -> 1
-ddcot037 comparetotal  -10  -10  -> 0
-ddcot038 comparetotal  -10   00  -> -1
-ddcot039 comparetotal  -10   10  -> -1
-ddcot040 comparetotal  -10   20  -> -1
-ddcot041 comparetotal   00  -20  -> 1
-ddcot042 comparetotal   00  -10  -> 1
-ddcot043 comparetotal   00   00  -> 0
-ddcot044 comparetotal   00   10  -> -1
-ddcot045 comparetotal   00   20  -> -1
-ddcot046 comparetotal   10  -20  -> 1
-ddcot047 comparetotal   10  -10  -> 1
-ddcot048 comparetotal   10   00  -> 1
-ddcot049 comparetotal   10   10  -> 0
-ddcot050 comparetotal   10   20  -> -1
-ddcot051 comparetotal   20  -20  -> 1
-ddcot052 comparetotal   20  -10  -> 1
-ddcot053 comparetotal   20   00  -> 1
-ddcot055 comparetotal   20   10  -> 1
-ddcot056 comparetotal   20   20  -> 0
-
-ddcot061 comparetotal  -2.0  -2.0  -> 0
-ddcot062 comparetotal  -2.0  -1.0  -> -1
-ddcot063 comparetotal  -2.0   0.0  -> -1
-ddcot064 comparetotal  -2.0   1.0  -> -1
-ddcot065 comparetotal  -2.0   2.0  -> -1
-ddcot066 comparetotal  -1.0  -2.0  -> 1
-ddcot067 comparetotal  -1.0  -1.0  -> 0
-ddcot068 comparetotal  -1.0   0.0  -> -1
-ddcot069 comparetotal  -1.0   1.0  -> -1
-ddcot070 comparetotal  -1.0   2.0  -> -1
-ddcot071 comparetotal   0.0  -2.0  -> 1
-ddcot072 comparetotal   0.0  -1.0  -> 1
-ddcot073 comparetotal   0.0   0.0  -> 0
-ddcot074 comparetotal   0.0   1.0  -> -1
-ddcot075 comparetotal   0.0   2.0  -> -1
-ddcot076 comparetotal   1.0  -2.0  -> 1
-ddcot077 comparetotal   1.0  -1.0  -> 1
-ddcot078 comparetotal   1.0   0.0  -> 1
-ddcot079 comparetotal   1.0   1.0  -> 0
-ddcot080 comparetotal   1.0   2.0  -> -1
-ddcot081 comparetotal   2.0  -2.0  -> 1
-ddcot082 comparetotal   2.0  -1.0  -> 1
-ddcot083 comparetotal   2.0   0.0  -> 1
-ddcot085 comparetotal   2.0   1.0  -> 1
-ddcot086 comparetotal   2.0   2.0  -> 0
-
--- now some cases which might overflow if subtract were used
-ddcot090 comparetotal  9.99999999E+384 9.99999999E+384  -> 0
-ddcot091 comparetotal -9.99999999E+384 9.99999999E+384  -> -1
-ddcot092 comparetotal  9.99999999E+384 -9.99999999E+384 -> 1
-ddcot093 comparetotal -9.99999999E+384 -9.99999999E+384 -> 0
-
--- some differing length/exponent cases
--- in this first group, compare would compare all equal
-ddcot100 comparetotal   7.0    7.0    -> 0
-ddcot101 comparetotal   7.0    7      -> -1
-ddcot102 comparetotal   7      7.0    -> 1
-ddcot103 comparetotal   7E+0   7.0    -> 1
-ddcot104 comparetotal   70E-1  7.0    -> 0
-ddcot105 comparetotal   0.7E+1 7      -> 0
-ddcot106 comparetotal   70E-1  7      -> -1
-ddcot107 comparetotal   7.0    7E+0   -> -1
-ddcot108 comparetotal   7.0    70E-1  -> 0
-ddcot109 comparetotal   7      0.7E+1 -> 0
-ddcot110 comparetotal   7      70E-1  -> 1
-
-ddcot120 comparetotal   8.0    7.0    -> 1
-ddcot121 comparetotal   8.0    7      -> 1
-ddcot122 comparetotal   8      7.0    -> 1
-ddcot123 comparetotal   8E+0   7.0    -> 1
-ddcot124 comparetotal   80E-1  7.0    -> 1
-ddcot125 comparetotal   0.8E+1 7      -> 1
-ddcot126 comparetotal   80E-1  7      -> 1
-ddcot127 comparetotal   8.0    7E+0   -> 1
-ddcot128 comparetotal   8.0    70E-1  -> 1
-ddcot129 comparetotal   8      0.7E+1  -> 1
-ddcot130 comparetotal   8      70E-1  -> 1
-
-ddcot140 comparetotal   8.0    9.0    -> -1
-ddcot141 comparetotal   8.0    9      -> -1
-ddcot142 comparetotal   8      9.0    -> -1
-ddcot143 comparetotal   8E+0   9.0    -> -1
-ddcot144 comparetotal   80E-1  9.0    -> -1
-ddcot145 comparetotal   0.8E+1 9      -> -1
-ddcot146 comparetotal   80E-1  9      -> -1
-ddcot147 comparetotal   8.0    9E+0   -> -1
-ddcot148 comparetotal   8.0    90E-1  -> -1
-ddcot149 comparetotal   8      0.9E+1 -> -1
-ddcot150 comparetotal   8      90E-1  -> -1
-
--- and again, with sign changes -+ ..
-ddcot200 comparetotal  -7.0    7.0    -> -1
-ddcot201 comparetotal  -7.0    7      -> -1
-ddcot202 comparetotal  -7      7.0    -> -1
-ddcot203 comparetotal  -7E+0   7.0    -> -1
-ddcot204 comparetotal  -70E-1  7.0    -> -1
-ddcot205 comparetotal  -0.7E+1 7      -> -1
-ddcot206 comparetotal  -70E-1  7      -> -1
-ddcot207 comparetotal  -7.0    7E+0   -> -1
-ddcot208 comparetotal  -7.0    70E-1  -> -1
-ddcot209 comparetotal  -7      0.7E+1 -> -1
-ddcot210 comparetotal  -7      70E-1  -> -1
-
-ddcot220 comparetotal  -8.0    7.0    -> -1
-ddcot221 comparetotal  -8.0    7      -> -1
-ddcot222 comparetotal  -8      7.0    -> -1
-ddcot223 comparetotal  -8E+0   7.0    -> -1
-ddcot224 comparetotal  -80E-1  7.0    -> -1
-ddcot225 comparetotal  -0.8E+1 7      -> -1
-ddcot226 comparetotal  -80E-1  7      -> -1
-ddcot227 comparetotal  -8.0    7E+0   -> -1
-ddcot228 comparetotal  -8.0    70E-1  -> -1
-ddcot229 comparetotal  -8      0.7E+1 -> -1
-ddcot230 comparetotal  -8      70E-1  -> -1
-
-ddcot240 comparetotal  -8.0    9.0    -> -1
-ddcot241 comparetotal  -8.0    9      -> -1
-ddcot242 comparetotal  -8      9.0    -> -1
-ddcot243 comparetotal  -8E+0   9.0    -> -1
-ddcot244 comparetotal  -80E-1  9.0    -> -1
-ddcot245 comparetotal  -0.8E+1 9      -> -1
-ddcot246 comparetotal  -80E-1  9      -> -1
-ddcot247 comparetotal  -8.0    9E+0   -> -1
-ddcot248 comparetotal  -8.0    90E-1  -> -1
-ddcot249 comparetotal  -8      0.9E+1 -> -1
-ddcot250 comparetotal  -8      90E-1  -> -1
-
--- and again, with sign changes +- ..
-ddcot300 comparetotal   7.0    -7.0    -> 1
-ddcot301 comparetotal   7.0    -7      -> 1
-ddcot302 comparetotal   7      -7.0    -> 1
-ddcot303 comparetotal   7E+0   -7.0    -> 1
-ddcot304 comparetotal   70E-1  -7.0    -> 1
-ddcot305 comparetotal   .7E+1  -7      -> 1
-ddcot306 comparetotal   70E-1  -7      -> 1
-ddcot307 comparetotal   7.0    -7E+0   -> 1
-ddcot308 comparetotal   7.0    -70E-1  -> 1
-ddcot309 comparetotal   7      -.7E+1  -> 1
-ddcot310 comparetotal   7      -70E-1  -> 1
-
-ddcot320 comparetotal   8.0    -7.0    -> 1
-ddcot321 comparetotal   8.0    -7      -> 1
-ddcot322 comparetotal   8      -7.0    -> 1
-ddcot323 comparetotal   8E+0   -7.0    -> 1
-ddcot324 comparetotal   80E-1  -7.0    -> 1
-ddcot325 comparetotal   .8E+1  -7      -> 1
-ddcot326 comparetotal   80E-1  -7      -> 1
-ddcot327 comparetotal   8.0    -7E+0   -> 1
-ddcot328 comparetotal   8.0    -70E-1  -> 1
-ddcot329 comparetotal   8      -.7E+1  -> 1
-ddcot330 comparetotal   8      -70E-1  -> 1
-
-ddcot340 comparetotal   8.0    -9.0    -> 1
-ddcot341 comparetotal   8.0    -9      -> 1
-ddcot342 comparetotal   8      -9.0    -> 1
-ddcot343 comparetotal   8E+0   -9.0    -> 1
-ddcot344 comparetotal   80E-1  -9.0    -> 1
-ddcot345 comparetotal   .8E+1  -9      -> 1
-ddcot346 comparetotal   80E-1  -9      -> 1
-ddcot347 comparetotal   8.0    -9E+0   -> 1
-ddcot348 comparetotal   8.0    -90E-1  -> 1
-ddcot349 comparetotal   8      -.9E+1  -> 1
-ddcot350 comparetotal   8      -90E-1  -> 1
-
--- and again, with sign changes -- ..
-ddcot400 comparetotal   -7.0    -7.0    -> 0
-ddcot401 comparetotal   -7.0    -7      -> 1
-ddcot402 comparetotal   -7      -7.0    -> -1
-ddcot403 comparetotal   -7E+0   -7.0    -> -1
-ddcot404 comparetotal   -70E-1  -7.0    -> 0
-ddcot405 comparetotal   -.7E+1  -7      -> 0
-ddcot406 comparetotal   -70E-1  -7      -> 1
-ddcot407 comparetotal   -7.0    -7E+0   -> 1
-ddcot408 comparetotal   -7.0    -70E-1  -> 0
-ddcot409 comparetotal   -7      -.7E+1  -> 0
-ddcot410 comparetotal   -7      -70E-1  -> -1
-
-ddcot420 comparetotal   -8.0    -7.0    -> -1
-ddcot421 comparetotal   -8.0    -7      -> -1
-ddcot422 comparetotal   -8      -7.0    -> -1
-ddcot423 comparetotal   -8E+0   -7.0    -> -1
-ddcot424 comparetotal   -80E-1  -7.0    -> -1
-ddcot425 comparetotal   -.8E+1  -7      -> -1
-ddcot426 comparetotal   -80E-1  -7      -> -1
-ddcot427 comparetotal   -8.0    -7E+0   -> -1
-ddcot428 comparetotal   -8.0    -70E-1  -> -1
-ddcot429 comparetotal   -8      -.7E+1  -> -1
-ddcot430 comparetotal   -8      -70E-1  -> -1
-
-ddcot440 comparetotal   -8.0    -9.0    -> 1
-ddcot441 comparetotal   -8.0    -9      -> 1
-ddcot442 comparetotal   -8      -9.0    -> 1
-ddcot443 comparetotal   -8E+0   -9.0    -> 1
-ddcot444 comparetotal   -80E-1  -9.0    -> 1
-ddcot445 comparetotal   -.8E+1  -9      -> 1
-ddcot446 comparetotal   -80E-1  -9      -> 1
-ddcot447 comparetotal   -8.0    -9E+0   -> 1
-ddcot448 comparetotal   -8.0    -90E-1  -> 1
-ddcot449 comparetotal   -8      -.9E+1  -> 1
-ddcot450 comparetotal   -8      -90E-1  -> 1
-
-
--- testcases that subtract to lots of zeros at boundaries [pgr]
-ddcot473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1
-ddcot474 comparetotal 123.456000000000E+89 123.456E+89 -> -1
-ddcot475 comparetotal 123.45600000000E-89 123.456E-89 -> -1
-ddcot476 comparetotal 123.4560000000E+89 123.456E+89 -> -1
-ddcot477 comparetotal 123.456000000E-89 123.456E-89 -> -1
-ddcot478 comparetotal 123.45600000E+89 123.456E+89 -> -1
-ddcot479 comparetotal 123.4560000E-89 123.456E-89 -> -1
-ddcot480 comparetotal 123.456000E+89 123.456E+89 -> -1
-ddcot481 comparetotal 123.45600E-89 123.456E-89 -> -1
-ddcot482 comparetotal 123.4560E+89 123.456E+89 -> -1
-ddcot483 comparetotal 123.456E-89 123.456E-89 -> 0
-ddcot487 comparetotal 123.456E+89 123.4560000000000E+89 -> 1
-ddcot488 comparetotal 123.456E-89 123.456000000000E-89 -> 1
-ddcot489 comparetotal 123.456E+89 123.45600000000E+89 -> 1
-ddcot490 comparetotal 123.456E-89 123.4560000000E-89 -> 1
-ddcot491 comparetotal 123.456E+89 123.456000000E+89 -> 1
-ddcot492 comparetotal 123.456E-89 123.45600000E-89 -> 1
-ddcot493 comparetotal 123.456E+89 123.4560000E+89 -> 1
-ddcot494 comparetotal 123.456E-89 123.456000E-89 -> 1
-ddcot495 comparetotal 123.456E+89 123.45600E+89 -> 1
-ddcot496 comparetotal 123.456E-89 123.4560E-89 -> 1
-ddcot497 comparetotal 123.456E+89 123.456E+89 -> 0
-
--- wide-ranging, around precision; signs equal
-ddcot498 comparetotal    1     1E-17    -> 1
-ddcot499 comparetotal    1     1E-16    -> 1
-ddcot500 comparetotal    1     1E-15    -> 1
-ddcot501 comparetotal    1     1E-14    -> 1
-ddcot502 comparetotal    1     1E-13    -> 1
-ddcot503 comparetotal    1     1E-12    -> 1
-ddcot504 comparetotal    1     1E-11    -> 1
-ddcot505 comparetotal    1     1E-10    -> 1
-ddcot506 comparetotal    1     1E-9     -> 1
-ddcot507 comparetotal    1     1E-8     -> 1
-ddcot508 comparetotal    1     1E-7     -> 1
-ddcot509 comparetotal    1     1E-6     -> 1
-ddcot510 comparetotal    1     1E-5     -> 1
-ddcot511 comparetotal    1     1E-4     -> 1
-ddcot512 comparetotal    1     1E-3     -> 1
-ddcot513 comparetotal    1     1E-2     -> 1
-ddcot514 comparetotal    1     1E-1     -> 1
-ddcot515 comparetotal    1     1E-0     -> 0
-ddcot516 comparetotal    1     1E+1     -> -1
-ddcot517 comparetotal    1     1E+2     -> -1
-ddcot518 comparetotal    1     1E+3     -> -1
-ddcot519 comparetotal    1     1E+4     -> -1
-ddcot521 comparetotal    1     1E+5     -> -1
-ddcot522 comparetotal    1     1E+6     -> -1
-ddcot523 comparetotal    1     1E+7     -> -1
-ddcot524 comparetotal    1     1E+8     -> -1
-ddcot525 comparetotal    1     1E+9     -> -1
-ddcot526 comparetotal    1     1E+10    -> -1
-ddcot527 comparetotal    1     1E+11    -> -1
-ddcot528 comparetotal    1     1E+12    -> -1
-ddcot529 comparetotal    1     1E+13    -> -1
-ddcot530 comparetotal    1     1E+14    -> -1
-ddcot531 comparetotal    1     1E+15    -> -1
-ddcot532 comparetotal    1     1E+16    -> -1
-ddcot533 comparetotal    1     1E+17    -> -1
--- LR swap
-ddcot538 comparetotal    1E-17  1       -> -1
-ddcot539 comparetotal    1E-16  1       -> -1
-ddcot540 comparetotal    1E-15  1       -> -1
-ddcot541 comparetotal    1E-14  1       -> -1
-ddcot542 comparetotal    1E-13  1       -> -1
-ddcot543 comparetotal    1E-12  1       -> -1
-ddcot544 comparetotal    1E-11  1       -> -1
-ddcot545 comparetotal    1E-10  1       -> -1
-ddcot546 comparetotal    1E-9   1       -> -1
-ddcot547 comparetotal    1E-8   1       -> -1
-ddcot548 comparetotal    1E-7   1       -> -1
-ddcot549 comparetotal    1E-6   1       -> -1
-ddcot550 comparetotal    1E-5   1       -> -1
-ddcot551 comparetotal    1E-4   1       -> -1
-ddcot552 comparetotal    1E-3   1       -> -1
-ddcot553 comparetotal    1E-2   1       -> -1
-ddcot554 comparetotal    1E-1   1       -> -1
-ddcot555 comparetotal    1E-0   1       ->  0
-ddcot556 comparetotal    1E+1   1       ->  1
-ddcot557 comparetotal    1E+2   1       ->  1
-ddcot558 comparetotal    1E+3   1       ->  1
-ddcot559 comparetotal    1E+4   1       ->  1
-ddcot561 comparetotal    1E+5   1       ->  1
-ddcot562 comparetotal    1E+6   1       ->  1
-ddcot563 comparetotal    1E+7   1       ->  1
-ddcot564 comparetotal    1E+8   1       ->  1
-ddcot565 comparetotal    1E+9   1       ->  1
-ddcot566 comparetotal    1E+10  1       ->  1
-ddcot567 comparetotal    1E+11  1       ->  1
-ddcot568 comparetotal    1E+12  1       ->  1
-ddcot569 comparetotal    1E+13  1       ->  1
-ddcot570 comparetotal    1E+14  1       ->  1
-ddcot571 comparetotal    1E+15  1       ->  1
-ddcot572 comparetotal    1E+16  1       ->  1
-ddcot573 comparetotal    1E+17  1       ->  1
--- similar with a useful coefficient, one side only
-ddcot578 comparetotal  0.000000987654321     1E-17    -> 1
-ddcot579 comparetotal  0.000000987654321     1E-16    -> 1
-ddcot580 comparetotal  0.000000987654321     1E-15    -> 1
-ddcot581 comparetotal  0.000000987654321     1E-14    -> 1
-ddcot582 comparetotal  0.000000987654321     1E-13    -> 1
-ddcot583 comparetotal  0.000000987654321     1E-12    -> 1
-ddcot584 comparetotal  0.000000987654321     1E-11    -> 1
-ddcot585 comparetotal  0.000000987654321     1E-10    -> 1
-ddcot586 comparetotal  0.000000987654321     1E-9     -> 1
-ddcot587 comparetotal  0.000000987654321     1E-8     -> 1
-ddcot588 comparetotal  0.000000987654321     1E-7     -> 1
-ddcot589 comparetotal  0.000000987654321     1E-6     -> -1
-ddcot590 comparetotal  0.000000987654321     1E-5     -> -1
-ddcot591 comparetotal  0.000000987654321     1E-4     -> -1
-ddcot592 comparetotal  0.000000987654321     1E-3     -> -1
-ddcot593 comparetotal  0.000000987654321     1E-2     -> -1
-ddcot594 comparetotal  0.000000987654321     1E-1     -> -1
-ddcot595 comparetotal  0.000000987654321     1E-0     -> -1
-ddcot596 comparetotal  0.000000987654321     1E+1     -> -1
-ddcot597 comparetotal  0.000000987654321     1E+2     -> -1
-ddcot598 comparetotal  0.000000987654321     1E+3     -> -1
-ddcot599 comparetotal  0.000000987654321     1E+4     -> -1
-
--- check some unit-y traps
-ddcot600 comparetotal   12            12.2345 -> -1
-ddcot601 comparetotal   12.0          12.2345 -> -1
-ddcot602 comparetotal   12.00         12.2345 -> -1
-ddcot603 comparetotal   12.000        12.2345 -> -1
-ddcot604 comparetotal   12.0000       12.2345 -> -1
-ddcot605 comparetotal   12.00000      12.2345 -> -1
-ddcot606 comparetotal   12.000000     12.2345 -> -1
-ddcot607 comparetotal   12.0000000    12.2345 -> -1
-ddcot608 comparetotal   12.00000000   12.2345 -> -1
-ddcot609 comparetotal   12.000000000  12.2345 -> -1
-ddcot610 comparetotal   12.1234 12            ->  1
-ddcot611 comparetotal   12.1234 12.0          ->  1
-ddcot612 comparetotal   12.1234 12.00         ->  1
-ddcot613 comparetotal   12.1234 12.000        ->  1
-ddcot614 comparetotal   12.1234 12.0000       ->  1
-ddcot615 comparetotal   12.1234 12.00000      ->  1
-ddcot616 comparetotal   12.1234 12.000000     ->  1
-ddcot617 comparetotal   12.1234 12.0000000    ->  1
-ddcot618 comparetotal   12.1234 12.00000000   ->  1
-ddcot619 comparetotal   12.1234 12.000000000  ->  1
-ddcot620 comparetotal  -12           -12.2345 ->  1
-ddcot621 comparetotal  -12.0         -12.2345 ->  1
-ddcot622 comparetotal  -12.00        -12.2345 ->  1
-ddcot623 comparetotal  -12.000       -12.2345 ->  1
-ddcot624 comparetotal  -12.0000      -12.2345 ->  1
-ddcot625 comparetotal  -12.00000     -12.2345 ->  1
-ddcot626 comparetotal  -12.000000    -12.2345 ->  1
-ddcot627 comparetotal  -12.0000000   -12.2345 ->  1
-ddcot628 comparetotal  -12.00000000  -12.2345 ->  1
-ddcot629 comparetotal  -12.000000000 -12.2345 ->  1
-ddcot630 comparetotal  -12.1234 -12           -> -1
-ddcot631 comparetotal  -12.1234 -12.0         -> -1
-ddcot632 comparetotal  -12.1234 -12.00        -> -1
-ddcot633 comparetotal  -12.1234 -12.000       -> -1
-ddcot634 comparetotal  -12.1234 -12.0000      -> -1
-ddcot635 comparetotal  -12.1234 -12.00000     -> -1
-ddcot636 comparetotal  -12.1234 -12.000000    -> -1
-ddcot637 comparetotal  -12.1234 -12.0000000   -> -1
-ddcot638 comparetotal  -12.1234 -12.00000000  -> -1
-ddcot639 comparetotal  -12.1234 -12.000000000 -> -1
-
--- extended zeros
-ddcot640 comparetotal   0     0   -> 0
-ddcot641 comparetotal   0    -0   -> 1
-ddcot642 comparetotal   0    -0.0 -> 1
-ddcot643 comparetotal   0     0.0 -> 1
-ddcot644 comparetotal  -0     0   -> -1
-ddcot645 comparetotal  -0    -0   -> 0
-ddcot646 comparetotal  -0    -0.0 -> -1
-ddcot647 comparetotal  -0     0.0 -> -1
-ddcot648 comparetotal   0.0   0   -> -1
-ddcot649 comparetotal   0.0  -0   -> 1
-ddcot650 comparetotal   0.0  -0.0 -> 1
-ddcot651 comparetotal   0.0   0.0 -> 0
-ddcot652 comparetotal  -0.0   0   -> -1
-ddcot653 comparetotal  -0.0  -0   -> 1
-ddcot654 comparetotal  -0.0  -0.0 -> 0
-ddcot655 comparetotal  -0.0   0.0 -> -1
-
-ddcot656 comparetotal  -0E1   0.0 -> -1
-ddcot657 comparetotal  -0E2   0.0 -> -1
-ddcot658 comparetotal   0E1   0.0 -> 1
-ddcot659 comparetotal   0E2   0.0 -> 1
-ddcot660 comparetotal  -0E1   0   -> -1
-ddcot661 comparetotal  -0E2   0   -> -1
-ddcot662 comparetotal   0E1   0   -> 1
-ddcot663 comparetotal   0E2   0   -> 1
-ddcot664 comparetotal  -0E1  -0E1 -> 0
-ddcot665 comparetotal  -0E2  -0E1 -> -1
-ddcot666 comparetotal   0E1  -0E1 -> 1
-ddcot667 comparetotal   0E2  -0E1 -> 1
-ddcot668 comparetotal  -0E1  -0E2 -> 1
-ddcot669 comparetotal  -0E2  -0E2 -> 0
-ddcot670 comparetotal   0E1  -0E2 -> 1
-ddcot671 comparetotal   0E2  -0E2 -> 1
-ddcot672 comparetotal  -0E1   0E1 -> -1
-ddcot673 comparetotal  -0E2   0E1 -> -1
-ddcot674 comparetotal   0E1   0E1 -> 0
-ddcot675 comparetotal   0E2   0E1 -> 1
-ddcot676 comparetotal  -0E1   0E2 -> -1
-ddcot677 comparetotal  -0E2   0E2 -> -1
-ddcot678 comparetotal   0E1   0E2 -> -1
-ddcot679 comparetotal   0E2   0E2 -> 0
-
--- trailing zeros; unit-y
-ddcot680 comparetotal   12    12           -> 0
-ddcot681 comparetotal   12    12.0         -> 1
-ddcot682 comparetotal   12    12.00        -> 1
-ddcot683 comparetotal   12    12.000       -> 1
-ddcot684 comparetotal   12    12.0000      -> 1
-ddcot685 comparetotal   12    12.00000     -> 1
-ddcot686 comparetotal   12    12.000000    -> 1
-ddcot687 comparetotal   12    12.0000000   -> 1
-ddcot688 comparetotal   12    12.00000000  -> 1
-ddcot689 comparetotal   12    12.000000000 -> 1
-ddcot690 comparetotal   12              12 -> 0
-ddcot691 comparetotal   12.0            12 -> -1
-ddcot692 comparetotal   12.00           12 -> -1
-ddcot693 comparetotal   12.000          12 -> -1
-ddcot694 comparetotal   12.0000         12 -> -1
-ddcot695 comparetotal   12.00000        12 -> -1
-ddcot696 comparetotal   12.000000       12 -> -1
-ddcot697 comparetotal   12.0000000      12 -> -1
-ddcot698 comparetotal   12.00000000     12 -> -1
-ddcot699 comparetotal   12.000000000    12 -> -1
-
--- old long operand checks
-ddcot701 comparetotal 12345678000  1 ->  1
-ddcot702 comparetotal 1 12345678000  -> -1
-ddcot703 comparetotal 1234567800   1 ->  1
-ddcot704 comparetotal 1 1234567800   -> -1
-ddcot705 comparetotal 1234567890   1 ->  1
-ddcot706 comparetotal 1 1234567890   -> -1
-ddcot707 comparetotal 1234567891   1 ->  1
-ddcot708 comparetotal 1 1234567891   -> -1
-ddcot709 comparetotal 12345678901  1 ->  1
-ddcot710 comparetotal 1 12345678901  -> -1
-ddcot711 comparetotal 1234567896   1 ->  1
-ddcot712 comparetotal 1 1234567896   -> -1
-ddcot713 comparetotal -1234567891  1 -> -1
-ddcot714 comparetotal 1 -1234567891  ->  1
-ddcot715 comparetotal -12345678901 1 -> -1
-ddcot716 comparetotal 1 -12345678901 ->  1
-ddcot717 comparetotal -1234567896  1 -> -1
-ddcot718 comparetotal 1 -1234567896  ->  1
-
--- old residue cases
-ddcot740 comparetotal  1  0.9999999  -> 1
-ddcot741 comparetotal  1  0.999999   -> 1
-ddcot742 comparetotal  1  0.99999    -> 1
-ddcot743 comparetotal  1  1.0000     -> 1
-ddcot744 comparetotal  1  1.00001    -> -1
-ddcot745 comparetotal  1  1.000001   -> -1
-ddcot746 comparetotal  1  1.0000001  -> -1
-ddcot750 comparetotal  0.9999999  1  -> -1
-ddcot751 comparetotal  0.999999   1  -> -1
-ddcot752 comparetotal  0.99999    1  -> -1
-ddcot753 comparetotal  1.0000     1  -> -1
-ddcot754 comparetotal  1.00001    1  -> 1
-ddcot755 comparetotal  1.000001   1  -> 1
-ddcot756 comparetotal  1.0000001  1  -> 1
-
--- Specials
-ddcot780 comparetotal  Inf  -Inf   ->  1
-ddcot781 comparetotal  Inf  -1000  ->  1
-ddcot782 comparetotal  Inf  -1     ->  1
-ddcot783 comparetotal  Inf  -0     ->  1
-ddcot784 comparetotal  Inf   0     ->  1
-ddcot785 comparetotal  Inf   1     ->  1
-ddcot786 comparetotal  Inf   1000  ->  1
-ddcot787 comparetotal  Inf   Inf   ->  0
-ddcot788 comparetotal -1000  Inf   -> -1
-ddcot789 comparetotal -Inf   Inf   -> -1
-ddcot790 comparetotal -1     Inf   -> -1
-ddcot791 comparetotal -0     Inf   -> -1
-ddcot792 comparetotal  0     Inf   -> -1
-ddcot793 comparetotal  1     Inf   -> -1
-ddcot794 comparetotal  1000  Inf   -> -1
-ddcot795 comparetotal  Inf   Inf   ->  0
-
-ddcot800 comparetotal -Inf  -Inf   ->  0
-ddcot801 comparetotal -Inf  -1000  -> -1
-ddcot802 comparetotal -Inf  -1     -> -1
-ddcot803 comparetotal -Inf  -0     -> -1
-ddcot804 comparetotal -Inf   0     -> -1
-ddcot805 comparetotal -Inf   1     -> -1
-ddcot806 comparetotal -Inf   1000  -> -1
-ddcot807 comparetotal -Inf   Inf   -> -1
-ddcot808 comparetotal -Inf  -Inf   ->  0
-ddcot809 comparetotal -1000 -Inf   ->  1
-ddcot810 comparetotal -1    -Inf   ->  1
-ddcot811 comparetotal -0    -Inf   ->  1
-ddcot812 comparetotal  0    -Inf   ->  1
-ddcot813 comparetotal  1    -Inf   ->  1
-ddcot814 comparetotal  1000 -Inf   ->  1
-ddcot815 comparetotal  Inf  -Inf   ->  1
-
-ddcot821 comparetotal  NaN -Inf    ->  1
-ddcot822 comparetotal  NaN -1000   ->  1
-ddcot823 comparetotal  NaN -1      ->  1
-ddcot824 comparetotal  NaN -0      ->  1
-ddcot825 comparetotal  NaN  0      ->  1
-ddcot826 comparetotal  NaN  1      ->  1
-ddcot827 comparetotal  NaN  1000   ->  1
-ddcot828 comparetotal  NaN  Inf    ->  1
-ddcot829 comparetotal  NaN  NaN    ->  0
-ddcot830 comparetotal -Inf  NaN    ->  -1
-ddcot831 comparetotal -1000 NaN    ->  -1
-ddcot832 comparetotal -1    NaN    ->  -1
-ddcot833 comparetotal -0    NaN    ->  -1
-ddcot834 comparetotal  0    NaN    ->  -1
-ddcot835 comparetotal  1    NaN    ->  -1
-ddcot836 comparetotal  1000 NaN    ->  -1
-ddcot837 comparetotal  Inf  NaN    ->  -1
-ddcot838 comparetotal -NaN -NaN    ->  0
-ddcot839 comparetotal +NaN -NaN    ->  1
-ddcot840 comparetotal -NaN +NaN    ->  -1
-
-ddcot841 comparetotal  sNaN -sNaN  ->  1
-ddcot842 comparetotal  sNaN -NaN   ->  1
-ddcot843 comparetotal  sNaN -Inf   ->  1
-ddcot844 comparetotal  sNaN -1000  ->  1
-ddcot845 comparetotal  sNaN -1     ->  1
-ddcot846 comparetotal  sNaN -0     ->  1
-ddcot847 comparetotal  sNaN  0     ->  1
-ddcot848 comparetotal  sNaN  1     ->  1
-ddcot849 comparetotal  sNaN  1000  ->  1
-ddcot850 comparetotal  sNaN  NaN   ->  -1
-ddcot851 comparetotal  sNaN sNaN   ->  0
-
-ddcot852 comparetotal -sNaN sNaN   ->  -1
-ddcot853 comparetotal -NaN  sNaN   ->  -1
-ddcot854 comparetotal -Inf  sNaN   ->  -1
-ddcot855 comparetotal -1000 sNaN   ->  -1
-ddcot856 comparetotal -1    sNaN   ->  -1
-ddcot857 comparetotal -0    sNaN   ->  -1
-ddcot858 comparetotal  0    sNaN   ->  -1
-ddcot859 comparetotal  1    sNaN   ->  -1
-ddcot860 comparetotal  1000 sNaN   ->  -1
-ddcot861 comparetotal  Inf  sNaN   ->  -1
-ddcot862 comparetotal  NaN  sNaN   ->  1
-ddcot863 comparetotal  sNaN sNaN   ->  0
-
-ddcot871 comparetotal  -sNaN -sNaN  ->  0
-ddcot872 comparetotal  -sNaN -NaN   ->  1
-ddcot873 comparetotal  -sNaN -Inf   ->  -1
-ddcot874 comparetotal  -sNaN -1000  ->  -1
-ddcot875 comparetotal  -sNaN -1     ->  -1
-ddcot876 comparetotal  -sNaN -0     ->  -1
-ddcot877 comparetotal  -sNaN  0     ->  -1
-ddcot878 comparetotal  -sNaN  1     ->  -1
-ddcot879 comparetotal  -sNaN  1000  ->  -1
-ddcot880 comparetotal  -sNaN  NaN   ->  -1
-ddcot881 comparetotal  -sNaN sNaN   ->  -1
-
-ddcot882 comparetotal -sNaN -sNaN   ->  0
-ddcot883 comparetotal -NaN  -sNaN   ->  -1
-ddcot884 comparetotal -Inf  -sNaN   ->  1
-ddcot885 comparetotal -1000 -sNaN   ->  1
-ddcot886 comparetotal -1    -sNaN   ->  1
-ddcot887 comparetotal -0    -sNaN   ->  1
-ddcot888 comparetotal  0    -sNaN   ->  1
-ddcot889 comparetotal  1    -sNaN   ->  1
-ddcot890 comparetotal  1000 -sNaN   ->  1
-ddcot891 comparetotal  Inf  -sNaN   ->  1
-ddcot892 comparetotal  NaN  -sNaN   ->  1
-ddcot893 comparetotal  sNaN -sNaN   ->  1
-
--- NaNs with payload
-ddcot960 comparetotal  NaN9 -Inf   ->  1
-ddcot961 comparetotal  NaN8  999   ->  1
-ddcot962 comparetotal  NaN77 Inf   ->  1
-ddcot963 comparetotal -NaN67 NaN5  ->  -1
-ddcot964 comparetotal -Inf  -NaN4  ->  1
-ddcot965 comparetotal -999  -NaN33 ->  1
-ddcot966 comparetotal  Inf   NaN2  ->  -1
-
-ddcot970 comparetotal -NaN41 -NaN42 -> 1
-ddcot971 comparetotal +NaN41 -NaN42 -> 1
-ddcot972 comparetotal -NaN41 +NaN42 -> -1
-ddcot973 comparetotal +NaN41 +NaN42 -> -1
-ddcot974 comparetotal -NaN42 -NaN01 -> -1
-ddcot975 comparetotal +NaN42 -NaN01 ->  1
-ddcot976 comparetotal -NaN42 +NaN01 -> -1
-ddcot977 comparetotal +NaN42 +NaN01 ->  1
-
-ddcot980 comparetotal -sNaN771 -sNaN772 -> 1
-ddcot981 comparetotal +sNaN771 -sNaN772 -> 1
-ddcot982 comparetotal -sNaN771 +sNaN772 -> -1
-ddcot983 comparetotal +sNaN771 +sNaN772 -> -1
-ddcot984 comparetotal -sNaN772 -sNaN771 -> -1
-ddcot985 comparetotal +sNaN772 -sNaN771 ->  1
-ddcot986 comparetotal -sNaN772 +sNaN771 -> -1
-ddcot987 comparetotal +sNaN772 +sNaN771 ->  1
-
-ddcot991 comparetotal -sNaN99 -Inf    -> -1
-ddcot992 comparetotal  sNaN98 -11     ->  1
-ddcot993 comparetotal  sNaN97  NaN    -> -1
-ddcot994 comparetotal  sNaN16 sNaN94  -> -1
-ddcot995 comparetotal  NaN85  sNaN83  ->  1
-ddcot996 comparetotal -Inf    sNaN92  -> -1
-ddcot997 comparetotal  088    sNaN81  -> -1
-ddcot998 comparetotal  Inf    sNaN90  -> -1
-ddcot999 comparetotal  NaN   -sNaN89  ->  1
-
--- spread zeros
-ddcot1110 comparetotal   0E-383  0       -> -1
-ddcot1111 comparetotal   0E-383 -0       ->  1
-ddcot1112 comparetotal  -0E-383  0       -> -1
-ddcot1113 comparetotal  -0E-383 -0       ->  1
-ddcot1114 comparetotal   0E-383  0E+384  -> -1
-ddcot1115 comparetotal   0E-383 -0E+384  ->  1
-ddcot1116 comparetotal  -0E-383  0E+384  -> -1
-ddcot1117 comparetotal  -0E-383 -0E+384  ->  1
-ddcot1118 comparetotal   0       0E+384  -> -1
-ddcot1119 comparetotal   0      -0E+384  ->  1
-ddcot1120 comparetotal  -0       0E+384  -> -1
-ddcot1121 comparetotal  -0      -0E+384  ->  1
-
-ddcot1130 comparetotal   0E+384  0       ->  1
-ddcot1131 comparetotal   0E+384 -0       ->  1
-ddcot1132 comparetotal  -0E+384  0       -> -1
-ddcot1133 comparetotal  -0E+384 -0       -> -1
-ddcot1134 comparetotal   0E+384  0E-383  ->  1
-ddcot1135 comparetotal   0E+384 -0E-383  ->  1
-ddcot1136 comparetotal  -0E+384  0E-383  -> -1
-ddcot1137 comparetotal  -0E+384 -0E-383  -> -1
-ddcot1138 comparetotal   0       0E-383  ->  1
-ddcot1139 comparetotal   0      -0E-383  ->  1
-ddcot1140 comparetotal  -0       0E-383  -> -1
-ddcot1141 comparetotal  -0      -0E-383  -> -1
-
--- Null tests
-ddcot9990 comparetotal 10  # -> NaN Invalid_operation
-ddcot9991 comparetotal  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareTotalMag.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareTotalMag.decTest
deleted file mode 100644
index f16537a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCompareTotalMag.decTest
+++ /dev/null
@@ -1,706 +0,0 @@
-------------------------------------------------------------------------
--- ddCompareTotalMag.decTest -- decDouble comparison; abs. total order--
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Note that we cannot assume add/subtract tests cover paths adequately,
--- here, because the code might be quite different (comparison cannot
--- overflow or underflow, so actual subtractions are not necessary).
--- Similarly, comparetotal will have some radically different paths
--- than compare.
-
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- sanity checks
-ddctm001 comparetotmag  -2  -2   ->   0
-ddctm002 comparetotmag  -2  -1   ->   1
-ddctm003 comparetotmag  -2   0   ->   1
-ddctm004 comparetotmag  -2   1   ->   1
-ddctm005 comparetotmag  -2   2   ->   0
-ddctm006 comparetotmag  -1  -2   ->  -1
-ddctm007 comparetotmag  -1  -1   ->   0
-ddctm008 comparetotmag  -1   0   ->   1
-ddctm009 comparetotmag  -1   1   ->   0
-ddctm010 comparetotmag  -1   2   ->  -1
-ddctm011 comparetotmag   0  -2   ->  -1
-ddctm012 comparetotmag   0  -1   ->  -1
-ddctm013 comparetotmag   0   0   ->   0
-ddctm014 comparetotmag   0   1   ->  -1
-ddctm015 comparetotmag   0   2   ->  -1
-ddctm016 comparetotmag   1  -2   ->  -1
-ddctm017 comparetotmag   1  -1   ->   0
-ddctm018 comparetotmag   1   0   ->   1
-ddctm019 comparetotmag   1   1   ->   0
-ddctm020 comparetotmag   1   2   ->  -1
-ddctm021 comparetotmag   2  -2   ->   0
-ddctm022 comparetotmag   2  -1   ->   1
-ddctm023 comparetotmag   2   0   ->   1
-ddctm025 comparetotmag   2   1   ->   1
-ddctm026 comparetotmag   2   2   ->   0
-
-ddctm031 comparetotmag  -20  -20   ->   0
-ddctm032 comparetotmag  -20  -10   ->   1
-ddctm033 comparetotmag  -20   00   ->   1
-ddctm034 comparetotmag  -20   10   ->   1
-ddctm035 comparetotmag  -20   20   ->   0
-ddctm036 comparetotmag  -10  -20   ->  -1
-ddctm037 comparetotmag  -10  -10   ->   0
-ddctm038 comparetotmag  -10   00   ->   1
-ddctm039 comparetotmag  -10   10   ->   0
-ddctm040 comparetotmag  -10   20   ->  -1
-ddctm041 comparetotmag   00  -20   ->  -1
-ddctm042 comparetotmag   00  -10   ->  -1
-ddctm043 comparetotmag   00   00   ->   0
-ddctm044 comparetotmag   00   10   ->  -1
-ddctm045 comparetotmag   00   20   ->  -1
-ddctm046 comparetotmag   10  -20   ->  -1
-ddctm047 comparetotmag   10  -10   ->   0
-ddctm048 comparetotmag   10   00   ->   1
-ddctm049 comparetotmag   10   10   ->   0
-ddctm050 comparetotmag   10   20   ->  -1
-ddctm051 comparetotmag   20  -20   ->   0
-ddctm052 comparetotmag   20  -10   ->   1
-ddctm053 comparetotmag   20   00   ->   1
-ddctm055 comparetotmag   20   10   ->   1
-ddctm056 comparetotmag   20   20   ->   0
-
-ddctm061 comparetotmag  -2.0  -2.0   ->   0
-ddctm062 comparetotmag  -2.0  -1.0   ->   1
-ddctm063 comparetotmag  -2.0   0.0   ->   1
-ddctm064 comparetotmag  -2.0   1.0   ->   1
-ddctm065 comparetotmag  -2.0   2.0   ->   0
-ddctm066 comparetotmag  -1.0  -2.0   ->  -1
-ddctm067 comparetotmag  -1.0  -1.0   ->   0
-ddctm068 comparetotmag  -1.0   0.0   ->   1
-ddctm069 comparetotmag  -1.0   1.0   ->   0
-ddctm070 comparetotmag  -1.0   2.0   ->  -1
-ddctm071 comparetotmag   0.0  -2.0   ->  -1
-ddctm072 comparetotmag   0.0  -1.0   ->  -1
-ddctm073 comparetotmag   0.0   0.0   ->   0
-ddctm074 comparetotmag   0.0   1.0   ->  -1
-ddctm075 comparetotmag   0.0   2.0   ->  -1
-ddctm076 comparetotmag   1.0  -2.0   ->  -1
-ddctm077 comparetotmag   1.0  -1.0   ->   0
-ddctm078 comparetotmag   1.0   0.0   ->   1
-ddctm079 comparetotmag   1.0   1.0   ->   0
-ddctm080 comparetotmag   1.0   2.0   ->  -1
-ddctm081 comparetotmag   2.0  -2.0   ->   0
-ddctm082 comparetotmag   2.0  -1.0   ->   1
-ddctm083 comparetotmag   2.0   0.0   ->   1
-ddctm085 comparetotmag   2.0   1.0   ->   1
-ddctm086 comparetotmag   2.0   2.0   ->   0
-
--- now some cases which might overflow if subtract were used
-ddctm090 comparetotmag  9.99999999E+384 9.99999999E+384   ->   0
-ddctm091 comparetotmag -9.99999999E+384 9.99999999E+384   ->   0
-ddctm092 comparetotmag  9.99999999E+384 -9.99999999E+384  ->   0
-ddctm093 comparetotmag -9.99999999E+384 -9.99999999E+384  ->   0
-
--- some differing length/exponent cases
--- in this first group, compare would compare all equal
-ddctm100 comparetotmag   7.0    7.0     ->   0
-ddctm101 comparetotmag   7.0    7       ->  -1
-ddctm102 comparetotmag   7      7.0     ->   1
-ddctm103 comparetotmag   7E+0   7.0     ->   1
-ddctm104 comparetotmag   70E-1  7.0     ->   0
-ddctm105 comparetotmag   0.7E+1 7       ->   0
-ddctm106 comparetotmag   70E-1  7       ->  -1
-ddctm107 comparetotmag   7.0    7E+0    ->  -1
-ddctm108 comparetotmag   7.0    70E-1   ->   0
-ddctm109 comparetotmag   7      0.7E+1  ->   0
-ddctm110 comparetotmag   7      70E-1   ->   1
-
-ddctm120 comparetotmag   8.0    7.0     ->   1
-ddctm121 comparetotmag   8.0    7       ->   1
-ddctm122 comparetotmag   8      7.0     ->   1
-ddctm123 comparetotmag   8E+0   7.0     ->   1
-ddctm124 comparetotmag   80E-1  7.0     ->   1
-ddctm125 comparetotmag   0.8E+1 7       ->   1
-ddctm126 comparetotmag   80E-1  7       ->   1
-ddctm127 comparetotmag   8.0    7E+0    ->   1
-ddctm128 comparetotmag   8.0    70E-1   ->   1
-ddctm129 comparetotmag   8      0.7E+1   ->   1
-ddctm130 comparetotmag   8      70E-1   ->   1
-
-ddctm140 comparetotmag   8.0    9.0     ->  -1
-ddctm141 comparetotmag   8.0    9       ->  -1
-ddctm142 comparetotmag   8      9.0     ->  -1
-ddctm143 comparetotmag   8E+0   9.0     ->  -1
-ddctm144 comparetotmag   80E-1  9.0     ->  -1
-ddctm145 comparetotmag   0.8E+1 9       ->  -1
-ddctm146 comparetotmag   80E-1  9       ->  -1
-ddctm147 comparetotmag   8.0    9E+0    ->  -1
-ddctm148 comparetotmag   8.0    90E-1   ->  -1
-ddctm149 comparetotmag   8      0.9E+1  ->  -1
-ddctm150 comparetotmag   8      90E-1   ->  -1
-
--- and again, with sign changes -+ ..
-ddctm200 comparetotmag  -7.0    7.0     ->   0
-ddctm201 comparetotmag  -7.0    7       ->  -1
-ddctm202 comparetotmag  -7      7.0     ->   1
-ddctm203 comparetotmag  -7E+0   7.0     ->   1
-ddctm204 comparetotmag  -70E-1  7.0     ->   0
-ddctm205 comparetotmag  -0.7E+1 7       ->   0
-ddctm206 comparetotmag  -70E-1  7       ->  -1
-ddctm207 comparetotmag  -7.0    7E+0    ->  -1
-ddctm208 comparetotmag  -7.0    70E-1   ->   0
-ddctm209 comparetotmag  -7      0.7E+1  ->   0
-ddctm210 comparetotmag  -7      70E-1   ->   1
-
-ddctm220 comparetotmag  -8.0    7.0     ->   1
-ddctm221 comparetotmag  -8.0    7       ->   1
-ddctm222 comparetotmag  -8      7.0     ->   1
-ddctm223 comparetotmag  -8E+0   7.0     ->   1
-ddctm224 comparetotmag  -80E-1  7.0     ->   1
-ddctm225 comparetotmag  -0.8E+1 7       ->   1
-ddctm226 comparetotmag  -80E-1  7       ->   1
-ddctm227 comparetotmag  -8.0    7E+0    ->   1
-ddctm228 comparetotmag  -8.0    70E-1   ->   1
-ddctm229 comparetotmag  -8      0.7E+1  ->   1
-ddctm230 comparetotmag  -8      70E-1   ->   1
-
-ddctm240 comparetotmag  -8.0    9.0     ->  -1
-ddctm241 comparetotmag  -8.0    9       ->  -1
-ddctm242 comparetotmag  -8      9.0     ->  -1
-ddctm243 comparetotmag  -8E+0   9.0     ->  -1
-ddctm244 comparetotmag  -80E-1  9.0     ->  -1
-ddctm245 comparetotmag  -0.8E+1 9       ->  -1
-ddctm246 comparetotmag  -80E-1  9       ->  -1
-ddctm247 comparetotmag  -8.0    9E+0    ->  -1
-ddctm248 comparetotmag  -8.0    90E-1   ->  -1
-ddctm249 comparetotmag  -8      0.9E+1  ->  -1
-ddctm250 comparetotmag  -8      90E-1   ->  -1
-
--- and again, with sign changes +- ..
-ddctm300 comparetotmag   7.0    -7.0     ->   0
-ddctm301 comparetotmag   7.0    -7       ->  -1
-ddctm302 comparetotmag   7      -7.0     ->   1
-ddctm303 comparetotmag   7E+0   -7.0     ->   1
-ddctm304 comparetotmag   70E-1  -7.0     ->   0
-ddctm305 comparetotmag   .7E+1  -7       ->   0
-ddctm306 comparetotmag   70E-1  -7       ->  -1
-ddctm307 comparetotmag   7.0    -7E+0    ->  -1
-ddctm308 comparetotmag   7.0    -70E-1   ->   0
-ddctm309 comparetotmag   7      -.7E+1   ->   0
-ddctm310 comparetotmag   7      -70E-1   ->   1
-
-ddctm320 comparetotmag   8.0    -7.0     ->   1
-ddctm321 comparetotmag   8.0    -7       ->   1
-ddctm322 comparetotmag   8      -7.0     ->   1
-ddctm323 comparetotmag   8E+0   -7.0     ->   1
-ddctm324 comparetotmag   80E-1  -7.0     ->   1
-ddctm325 comparetotmag   .8E+1  -7       ->   1
-ddctm326 comparetotmag   80E-1  -7       ->   1
-ddctm327 comparetotmag   8.0    -7E+0    ->   1
-ddctm328 comparetotmag   8.0    -70E-1   ->   1
-ddctm329 comparetotmag   8      -.7E+1   ->   1
-ddctm330 comparetotmag   8      -70E-1   ->   1
-
-ddctm340 comparetotmag   8.0    -9.0     ->  -1
-ddctm341 comparetotmag   8.0    -9       ->  -1
-ddctm342 comparetotmag   8      -9.0     ->  -1
-ddctm343 comparetotmag   8E+0   -9.0     ->  -1
-ddctm344 comparetotmag   80E-1  -9.0     ->  -1
-ddctm345 comparetotmag   .8E+1  -9       ->  -1
-ddctm346 comparetotmag   80E-1  -9       ->  -1
-ddctm347 comparetotmag   8.0    -9E+0    ->  -1
-ddctm348 comparetotmag   8.0    -90E-1   ->  -1
-ddctm349 comparetotmag   8      -.9E+1   ->  -1
-ddctm350 comparetotmag   8      -90E-1   ->  -1
-
--- and again, with sign changes -- ..
-ddctm400 comparetotmag   -7.0    -7.0     ->   0
-ddctm401 comparetotmag   -7.0    -7       ->  -1
-ddctm402 comparetotmag   -7      -7.0     ->   1
-ddctm403 comparetotmag   -7E+0   -7.0     ->   1
-ddctm404 comparetotmag   -70E-1  -7.0     ->   0
-ddctm405 comparetotmag   -.7E+1  -7       ->   0
-ddctm406 comparetotmag   -70E-1  -7       ->  -1
-ddctm407 comparetotmag   -7.0    -7E+0    ->  -1
-ddctm408 comparetotmag   -7.0    -70E-1   ->   0
-ddctm409 comparetotmag   -7      -.7E+1   ->   0
-ddctm410 comparetotmag   -7      -70E-1   ->   1
-
-ddctm420 comparetotmag   -8.0    -7.0     ->   1
-ddctm421 comparetotmag   -8.0    -7       ->   1
-ddctm422 comparetotmag   -8      -7.0     ->   1
-ddctm423 comparetotmag   -8E+0   -7.0     ->   1
-ddctm424 comparetotmag   -80E-1  -7.0     ->   1
-ddctm425 comparetotmag   -.8E+1  -7       ->   1
-ddctm426 comparetotmag   -80E-1  -7       ->   1
-ddctm427 comparetotmag   -8.0    -7E+0    ->   1
-ddctm428 comparetotmag   -8.0    -70E-1   ->   1
-ddctm429 comparetotmag   -8      -.7E+1   ->   1
-ddctm430 comparetotmag   -8      -70E-1   ->   1
-
-ddctm440 comparetotmag   -8.0    -9.0     ->  -1
-ddctm441 comparetotmag   -8.0    -9       ->  -1
-ddctm442 comparetotmag   -8      -9.0     ->  -1
-ddctm443 comparetotmag   -8E+0   -9.0     ->  -1
-ddctm444 comparetotmag   -80E-1  -9.0     ->  -1
-ddctm445 comparetotmag   -.8E+1  -9       ->  -1
-ddctm446 comparetotmag   -80E-1  -9       ->  -1
-ddctm447 comparetotmag   -8.0    -9E+0    ->  -1
-ddctm448 comparetotmag   -8.0    -90E-1   ->  -1
-ddctm449 comparetotmag   -8      -.9E+1   ->  -1
-ddctm450 comparetotmag   -8      -90E-1   ->  -1
-
-
--- testcases that subtract to lots of zeros at boundaries [pgr]
-ddctm473 comparetotmag 123.4560000000000E-89 123.456E-89  ->  -1
-ddctm474 comparetotmag 123.456000000000E+89 123.456E+89  ->  -1
-ddctm475 comparetotmag 123.45600000000E-89 123.456E-89  ->  -1
-ddctm476 comparetotmag 123.4560000000E+89 123.456E+89  ->  -1
-ddctm477 comparetotmag 123.456000000E-89 123.456E-89  ->  -1
-ddctm478 comparetotmag 123.45600000E+89 123.456E+89  ->  -1
-ddctm479 comparetotmag 123.4560000E-89 123.456E-89  ->  -1
-ddctm480 comparetotmag 123.456000E+89 123.456E+89  ->  -1
-ddctm481 comparetotmag 123.45600E-89 123.456E-89  ->  -1
-ddctm482 comparetotmag 123.4560E+89 123.456E+89  ->  -1
-ddctm483 comparetotmag 123.456E-89 123.456E-89  ->   0
-ddctm487 comparetotmag 123.456E+89 123.4560000000000E+89  ->   1
-ddctm488 comparetotmag 123.456E-89 123.456000000000E-89  ->   1
-ddctm489 comparetotmag 123.456E+89 123.45600000000E+89  ->   1
-ddctm490 comparetotmag 123.456E-89 123.4560000000E-89  ->   1
-ddctm491 comparetotmag 123.456E+89 123.456000000E+89  ->   1
-ddctm492 comparetotmag 123.456E-89 123.45600000E-89  ->   1
-ddctm493 comparetotmag 123.456E+89 123.4560000E+89  ->   1
-ddctm494 comparetotmag 123.456E-89 123.456000E-89  ->   1
-ddctm495 comparetotmag 123.456E+89 123.45600E+89  ->   1
-ddctm496 comparetotmag 123.456E-89 123.4560E-89  ->   1
-ddctm497 comparetotmag 123.456E+89 123.456E+89  ->   0
-
--- wide-ranging, around precision; signs equal
-ddctm498 comparetotmag    1     1E-17     ->   1
-ddctm499 comparetotmag    1     1E-16     ->   1
-ddctm500 comparetotmag    1     1E-15     ->   1
-ddctm501 comparetotmag    1     1E-14     ->   1
-ddctm502 comparetotmag    1     1E-13     ->   1
-ddctm503 comparetotmag    1     1E-12     ->   1
-ddctm504 comparetotmag    1     1E-11     ->   1
-ddctm505 comparetotmag    1     1E-10     ->   1
-ddctm506 comparetotmag    1     1E-9      ->   1
-ddctm507 comparetotmag    1     1E-8      ->   1
-ddctm508 comparetotmag    1     1E-7      ->   1
-ddctm509 comparetotmag    1     1E-6      ->   1
-ddctm510 comparetotmag    1     1E-5      ->   1
-ddctm511 comparetotmag    1     1E-4      ->   1
-ddctm512 comparetotmag    1     1E-3      ->   1
-ddctm513 comparetotmag    1     1E-2      ->   1
-ddctm514 comparetotmag    1     1E-1      ->   1
-ddctm515 comparetotmag    1     1E-0      ->   0
-ddctm516 comparetotmag    1     1E+1      ->  -1
-ddctm517 comparetotmag    1     1E+2      ->  -1
-ddctm518 comparetotmag    1     1E+3      ->  -1
-ddctm519 comparetotmag    1     1E+4      ->  -1
-ddctm521 comparetotmag    1     1E+5      ->  -1
-ddctm522 comparetotmag    1     1E+6      ->  -1
-ddctm523 comparetotmag    1     1E+7      ->  -1
-ddctm524 comparetotmag    1     1E+8      ->  -1
-ddctm525 comparetotmag    1     1E+9      ->  -1
-ddctm526 comparetotmag    1     1E+10     ->  -1
-ddctm527 comparetotmag    1     1E+11     ->  -1
-ddctm528 comparetotmag    1     1E+12     ->  -1
-ddctm529 comparetotmag    1     1E+13     ->  -1
-ddctm530 comparetotmag    1     1E+14     ->  -1
-ddctm531 comparetotmag    1     1E+15     ->  -1
-ddctm532 comparetotmag    1     1E+16     ->  -1
-ddctm533 comparetotmag    1     1E+17     ->  -1
--- LR swap
-ddctm538 comparetotmag    1E-17  1        ->  -1
-ddctm539 comparetotmag    1E-16  1        ->  -1
-ddctm540 comparetotmag    1E-15  1        ->  -1
-ddctm541 comparetotmag    1E-14  1        ->  -1
-ddctm542 comparetotmag    1E-13  1        ->  -1
-ddctm543 comparetotmag    1E-12  1        ->  -1
-ddctm544 comparetotmag    1E-11  1        ->  -1
-ddctm545 comparetotmag    1E-10  1        ->  -1
-ddctm546 comparetotmag    1E-9   1        ->  -1
-ddctm547 comparetotmag    1E-8   1        ->  -1
-ddctm548 comparetotmag    1E-7   1        ->  -1
-ddctm549 comparetotmag    1E-6   1        ->  -1
-ddctm550 comparetotmag    1E-5   1        ->  -1
-ddctm551 comparetotmag    1E-4   1        ->  -1
-ddctm552 comparetotmag    1E-3   1        ->  -1
-ddctm553 comparetotmag    1E-2   1        ->  -1
-ddctm554 comparetotmag    1E-1   1        ->  -1
-ddctm555 comparetotmag    1E-0   1        ->   0
-ddctm556 comparetotmag    1E+1   1        ->   1
-ddctm557 comparetotmag    1E+2   1        ->   1
-ddctm558 comparetotmag    1E+3   1        ->   1
-ddctm559 comparetotmag    1E+4   1        ->   1
-ddctm561 comparetotmag    1E+5   1        ->   1
-ddctm562 comparetotmag    1E+6   1        ->   1
-ddctm563 comparetotmag    1E+7   1        ->   1
-ddctm564 comparetotmag    1E+8   1        ->   1
-ddctm565 comparetotmag    1E+9   1        ->   1
-ddctm566 comparetotmag    1E+10  1        ->   1
-ddctm567 comparetotmag    1E+11  1        ->   1
-ddctm568 comparetotmag    1E+12  1        ->   1
-ddctm569 comparetotmag    1E+13  1        ->   1
-ddctm570 comparetotmag    1E+14  1        ->   1
-ddctm571 comparetotmag    1E+15  1        ->   1
-ddctm572 comparetotmag    1E+16  1        ->   1
-ddctm573 comparetotmag    1E+17  1        ->   1
--- similar with a useful coefficient, one side only
-ddctm578 comparetotmag  0.000000987654321     1E-17     ->   1
-ddctm579 comparetotmag  0.000000987654321     1E-16     ->   1
-ddctm580 comparetotmag  0.000000987654321     1E-15     ->   1
-ddctm581 comparetotmag  0.000000987654321     1E-14     ->   1
-ddctm582 comparetotmag  0.000000987654321     1E-13     ->   1
-ddctm583 comparetotmag  0.000000987654321     1E-12     ->   1
-ddctm584 comparetotmag  0.000000987654321     1E-11     ->   1
-ddctm585 comparetotmag  0.000000987654321     1E-10     ->   1
-ddctm586 comparetotmag  0.000000987654321     1E-9      ->   1
-ddctm587 comparetotmag  0.000000987654321     1E-8      ->   1
-ddctm588 comparetotmag  0.000000987654321     1E-7      ->   1
-ddctm589 comparetotmag  0.000000987654321     1E-6      ->  -1
-ddctm590 comparetotmag  0.000000987654321     1E-5      ->  -1
-ddctm591 comparetotmag  0.000000987654321     1E-4      ->  -1
-ddctm592 comparetotmag  0.000000987654321     1E-3      ->  -1
-ddctm593 comparetotmag  0.000000987654321     1E-2      ->  -1
-ddctm594 comparetotmag  0.000000987654321     1E-1      ->  -1
-ddctm595 comparetotmag  0.000000987654321     1E-0      ->  -1
-ddctm596 comparetotmag  0.000000987654321     1E+1      ->  -1
-ddctm597 comparetotmag  0.000000987654321     1E+2      ->  -1
-ddctm598 comparetotmag  0.000000987654321     1E+3      ->  -1
-ddctm599 comparetotmag  0.000000987654321     1E+4      ->  -1
-
--- check some unit-y traps
-ddctm600 comparetotmag   12            12.2345  ->  -1
-ddctm601 comparetotmag   12.0          12.2345  ->  -1
-ddctm602 comparetotmag   12.00         12.2345  ->  -1
-ddctm603 comparetotmag   12.000        12.2345  ->  -1
-ddctm604 comparetotmag   12.0000       12.2345  ->  -1
-ddctm605 comparetotmag   12.00000      12.2345  ->  -1
-ddctm606 comparetotmag   12.000000     12.2345  ->  -1
-ddctm607 comparetotmag   12.0000000    12.2345  ->  -1
-ddctm608 comparetotmag   12.00000000   12.2345  ->  -1
-ddctm609 comparetotmag   12.000000000  12.2345  ->  -1
-ddctm610 comparetotmag   12.1234 12             ->   1
-ddctm611 comparetotmag   12.1234 12.0           ->   1
-ddctm612 comparetotmag   12.1234 12.00          ->   1
-ddctm613 comparetotmag   12.1234 12.000         ->   1
-ddctm614 comparetotmag   12.1234 12.0000        ->   1
-ddctm615 comparetotmag   12.1234 12.00000       ->   1
-ddctm616 comparetotmag   12.1234 12.000000      ->   1
-ddctm617 comparetotmag   12.1234 12.0000000     ->   1
-ddctm618 comparetotmag   12.1234 12.00000000    ->   1
-ddctm619 comparetotmag   12.1234 12.000000000   ->   1
-ddctm620 comparetotmag  -12           -12.2345  ->  -1
-ddctm621 comparetotmag  -12.0         -12.2345  ->  -1
-ddctm622 comparetotmag  -12.00        -12.2345  ->  -1
-ddctm623 comparetotmag  -12.000       -12.2345  ->  -1
-ddctm624 comparetotmag  -12.0000      -12.2345  ->  -1
-ddctm625 comparetotmag  -12.00000     -12.2345  ->  -1
-ddctm626 comparetotmag  -12.000000    -12.2345  ->  -1
-ddctm627 comparetotmag  -12.0000000   -12.2345  ->  -1
-ddctm628 comparetotmag  -12.00000000  -12.2345  ->  -1
-ddctm629 comparetotmag  -12.000000000 -12.2345  ->  -1
-ddctm630 comparetotmag  -12.1234 -12            ->   1
-ddctm631 comparetotmag  -12.1234 -12.0          ->   1
-ddctm632 comparetotmag  -12.1234 -12.00         ->   1
-ddctm633 comparetotmag  -12.1234 -12.000        ->   1
-ddctm634 comparetotmag  -12.1234 -12.0000       ->   1
-ddctm635 comparetotmag  -12.1234 -12.00000      ->   1
-ddctm636 comparetotmag  -12.1234 -12.000000     ->   1
-ddctm637 comparetotmag  -12.1234 -12.0000000    ->   1
-ddctm638 comparetotmag  -12.1234 -12.00000000   ->   1
-ddctm639 comparetotmag  -12.1234 -12.000000000  ->   1
-
--- extended zeros
-ddctm640 comparetotmag   0     0    ->   0
-ddctm641 comparetotmag   0    -0    ->   0
-ddctm642 comparetotmag   0    -0.0  ->   1
-ddctm643 comparetotmag   0     0.0  ->   1
-ddctm644 comparetotmag  -0     0    ->   0
-ddctm645 comparetotmag  -0    -0    ->   0
-ddctm646 comparetotmag  -0    -0.0  ->   1
-ddctm647 comparetotmag  -0     0.0  ->   1
-ddctm648 comparetotmag   0.0   0    ->  -1
-ddctm649 comparetotmag   0.0  -0    ->  -1
-ddctm650 comparetotmag   0.0  -0.0  ->   0
-ddctm651 comparetotmag   0.0   0.0  ->   0
-ddctm652 comparetotmag  -0.0   0    ->  -1
-ddctm653 comparetotmag  -0.0  -0    ->  -1
-ddctm654 comparetotmag  -0.0  -0.0  ->   0
-ddctm655 comparetotmag  -0.0   0.0  ->   0
-
-ddctm656 comparetotmag  -0E1   0.0  ->   1
-ddctm657 comparetotmag  -0E2   0.0  ->   1
-ddctm658 comparetotmag   0E1   0.0  ->   1
-ddctm659 comparetotmag   0E2   0.0  ->   1
-ddctm660 comparetotmag  -0E1   0    ->   1
-ddctm661 comparetotmag  -0E2   0    ->   1
-ddctm662 comparetotmag   0E1   0    ->   1
-ddctm663 comparetotmag   0E2   0    ->   1
-ddctm664 comparetotmag  -0E1  -0E1  ->   0
-ddctm665 comparetotmag  -0E2  -0E1  ->   1
-ddctm666 comparetotmag   0E1  -0E1  ->   0
-ddctm667 comparetotmag   0E2  -0E1  ->   1
-ddctm668 comparetotmag  -0E1  -0E2  ->  -1
-ddctm669 comparetotmag  -0E2  -0E2  ->   0
-ddctm670 comparetotmag   0E1  -0E2  ->  -1
-ddctm671 comparetotmag   0E2  -0E2  ->   0
-ddctm672 comparetotmag  -0E1   0E1  ->   0
-ddctm673 comparetotmag  -0E2   0E1  ->   1
-ddctm674 comparetotmag   0E1   0E1  ->   0
-ddctm675 comparetotmag   0E2   0E1  ->   1
-ddctm676 comparetotmag  -0E1   0E2  ->  -1
-ddctm677 comparetotmag  -0E2   0E2  ->   0
-ddctm678 comparetotmag   0E1   0E2  ->  -1
-ddctm679 comparetotmag   0E2   0E2  ->   0
-
--- trailing zeros; unit-y
-ddctm680 comparetotmag   12    12            ->   0
-ddctm681 comparetotmag   12    12.0          ->   1
-ddctm682 comparetotmag   12    12.00         ->   1
-ddctm683 comparetotmag   12    12.000        ->   1
-ddctm684 comparetotmag   12    12.0000       ->   1
-ddctm685 comparetotmag   12    12.00000      ->   1
-ddctm686 comparetotmag   12    12.000000     ->   1
-ddctm687 comparetotmag   12    12.0000000    ->   1
-ddctm688 comparetotmag   12    12.00000000   ->   1
-ddctm689 comparetotmag   12    12.000000000  ->   1
-ddctm690 comparetotmag   12              12  ->   0
-ddctm691 comparetotmag   12.0            12  ->  -1
-ddctm692 comparetotmag   12.00           12  ->  -1
-ddctm693 comparetotmag   12.000          12  ->  -1
-ddctm694 comparetotmag   12.0000         12  ->  -1
-ddctm695 comparetotmag   12.00000        12  ->  -1
-ddctm696 comparetotmag   12.000000       12  ->  -1
-ddctm697 comparetotmag   12.0000000      12  ->  -1
-ddctm698 comparetotmag   12.00000000     12  ->  -1
-ddctm699 comparetotmag   12.000000000    12  ->  -1
-
--- old long operand checks
-ddctm701 comparetotmag 12345678000  1  ->   1
-ddctm702 comparetotmag 1 12345678000   ->  -1
-ddctm703 comparetotmag 1234567800   1  ->   1
-ddctm704 comparetotmag 1 1234567800    ->  -1
-ddctm705 comparetotmag 1234567890   1  ->   1
-ddctm706 comparetotmag 1 1234567890    ->  -1
-ddctm707 comparetotmag 1234567891   1  ->   1
-ddctm708 comparetotmag 1 1234567891    ->  -1
-ddctm709 comparetotmag 12345678901  1  ->   1
-ddctm710 comparetotmag 1 12345678901   ->  -1
-ddctm711 comparetotmag 1234567896   1  ->   1
-ddctm712 comparetotmag 1 1234567896    ->  -1
-ddctm713 comparetotmag -1234567891  1  ->   1
-ddctm714 comparetotmag 1 -1234567891   ->  -1
-ddctm715 comparetotmag -12345678901 1  ->   1
-ddctm716 comparetotmag 1 -12345678901  ->  -1
-ddctm717 comparetotmag -1234567896  1  ->   1
-ddctm718 comparetotmag 1 -1234567896   ->  -1
-
--- old residue cases
-ddctm740 comparetotmag  1  0.9999999   ->   1
-ddctm741 comparetotmag  1  0.999999    ->   1
-ddctm742 comparetotmag  1  0.99999     ->   1
-ddctm743 comparetotmag  1  1.0000      ->   1
-ddctm744 comparetotmag  1  1.00001     ->  -1
-ddctm745 comparetotmag  1  1.000001    ->  -1
-ddctm746 comparetotmag  1  1.0000001   ->  -1
-ddctm750 comparetotmag  0.9999999  1   ->  -1
-ddctm751 comparetotmag  0.999999   1   ->  -1
-ddctm752 comparetotmag  0.99999    1   ->  -1
-ddctm753 comparetotmag  1.0000     1   ->  -1
-ddctm754 comparetotmag  1.00001    1   ->   1
-ddctm755 comparetotmag  1.000001   1   ->   1
-ddctm756 comparetotmag  1.0000001  1   ->   1
-
--- Specials
-ddctm780 comparetotmag  Inf  -Inf   ->  0
-ddctm781 comparetotmag  Inf  -1000  ->  1
-ddctm782 comparetotmag  Inf  -1     ->  1
-ddctm783 comparetotmag  Inf  -0     ->  1
-ddctm784 comparetotmag  Inf   0     ->  1
-ddctm785 comparetotmag  Inf   1     ->  1
-ddctm786 comparetotmag  Inf   1000  ->  1
-ddctm787 comparetotmag  Inf   Inf   ->  0
-ddctm788 comparetotmag -1000  Inf   -> -1
-ddctm789 comparetotmag -Inf   Inf   ->  0
-ddctm790 comparetotmag -1     Inf   -> -1
-ddctm791 comparetotmag -0     Inf   -> -1
-ddctm792 comparetotmag  0     Inf   -> -1
-ddctm793 comparetotmag  1     Inf   -> -1
-ddctm794 comparetotmag  1000  Inf   -> -1
-ddctm795 comparetotmag  Inf   Inf   ->  0
-
-ddctm800 comparetotmag -Inf  -Inf   ->  0
-ddctm801 comparetotmag -Inf  -1000  ->  1
-ddctm802 comparetotmag -Inf  -1     ->  1
-ddctm803 comparetotmag -Inf  -0     ->  1
-ddctm804 comparetotmag -Inf   0     ->  1
-ddctm805 comparetotmag -Inf   1     ->  1
-ddctm806 comparetotmag -Inf   1000  ->  1
-ddctm807 comparetotmag -Inf   Inf   ->  0
-ddctm808 comparetotmag -Inf  -Inf   ->  0
-ddctm809 comparetotmag -1000 -Inf   -> -1
-ddctm810 comparetotmag -1    -Inf   -> -1
-ddctm811 comparetotmag -0    -Inf   -> -1
-ddctm812 comparetotmag  0    -Inf   -> -1
-ddctm813 comparetotmag  1    -Inf   -> -1
-ddctm814 comparetotmag  1000 -Inf   -> -1
-ddctm815 comparetotmag  Inf  -Inf   ->  0
-
-ddctm821 comparetotmag  NaN -Inf    ->  1
-ddctm822 comparetotmag  NaN -1000   ->  1
-ddctm823 comparetotmag  NaN -1      ->  1
-ddctm824 comparetotmag  NaN -0      ->  1
-ddctm825 comparetotmag  NaN  0      ->  1
-ddctm826 comparetotmag  NaN  1      ->  1
-ddctm827 comparetotmag  NaN  1000   ->  1
-ddctm828 comparetotmag  NaN  Inf    ->  1
-ddctm829 comparetotmag  NaN  NaN    ->  0
-ddctm830 comparetotmag -Inf  NaN    ->  -1
-ddctm831 comparetotmag -1000 NaN    ->  -1
-ddctm832 comparetotmag -1    NaN    ->  -1
-ddctm833 comparetotmag -0    NaN    ->  -1
-ddctm834 comparetotmag  0    NaN    ->  -1
-ddctm835 comparetotmag  1    NaN    ->  -1
-ddctm836 comparetotmag  1000 NaN    ->  -1
-ddctm837 comparetotmag  Inf  NaN    ->  -1
-ddctm838 comparetotmag -NaN -NaN    ->  0
-ddctm839 comparetotmag +NaN -NaN    ->  0
-ddctm840 comparetotmag -NaN +NaN    ->  0
-
-ddctm841 comparetotmag  sNaN -sNaN  ->  0
-ddctm842 comparetotmag  sNaN -NaN   ->  -1
-ddctm843 comparetotmag  sNaN -Inf   ->  1
-ddctm844 comparetotmag  sNaN -1000  ->  1
-ddctm845 comparetotmag  sNaN -1     ->  1
-ddctm846 comparetotmag  sNaN -0     ->  1
-ddctm847 comparetotmag  sNaN  0     ->  1
-ddctm848 comparetotmag  sNaN  1     ->  1
-ddctm849 comparetotmag  sNaN  1000  ->  1
-ddctm850 comparetotmag  sNaN  NaN   ->  -1
-ddctm851 comparetotmag  sNaN sNaN   ->  0
-
-ddctm852 comparetotmag -sNaN sNaN   ->  0
-ddctm853 comparetotmag -NaN  sNaN   ->  1
-ddctm854 comparetotmag -Inf  sNaN   ->  -1
-ddctm855 comparetotmag -1000 sNaN   ->  -1
-ddctm856 comparetotmag -1    sNaN   ->  -1
-ddctm857 comparetotmag -0    sNaN   ->  -1
-ddctm858 comparetotmag  0    sNaN   ->  -1
-ddctm859 comparetotmag  1    sNaN   ->  -1
-ddctm860 comparetotmag  1000 sNaN   ->  -1
-ddctm861 comparetotmag  Inf  sNaN   ->  -1
-ddctm862 comparetotmag  NaN  sNaN   ->  1
-ddctm863 comparetotmag  sNaN sNaN   ->  0
-
-ddctm871 comparetotmag  -sNaN -sNaN  ->  0
-ddctm872 comparetotmag  -sNaN -NaN   ->  -1
-ddctm873 comparetotmag  -sNaN -Inf   ->  1
-ddctm874 comparetotmag  -sNaN -1000  ->  1
-ddctm875 comparetotmag  -sNaN -1     ->  1
-ddctm876 comparetotmag  -sNaN -0     ->  1
-ddctm877 comparetotmag  -sNaN  0     ->  1
-ddctm878 comparetotmag  -sNaN  1     ->  1
-ddctm879 comparetotmag  -sNaN  1000  ->  1
-ddctm880 comparetotmag  -sNaN  NaN   ->  -1
-ddctm881 comparetotmag  -sNaN sNaN   ->  0
-
-ddctm882 comparetotmag -sNaN -sNaN   ->  0
-ddctm883 comparetotmag -NaN  -sNaN   ->  1
-ddctm884 comparetotmag -Inf  -sNaN   ->  -1
-ddctm885 comparetotmag -1000 -sNaN   ->  -1
-ddctm886 comparetotmag -1    -sNaN   ->  -1
-ddctm887 comparetotmag -0    -sNaN   ->  -1
-ddctm888 comparetotmag  0    -sNaN   ->  -1
-ddctm889 comparetotmag  1    -sNaN   ->  -1
-ddctm890 comparetotmag  1000 -sNaN   ->  -1
-ddctm891 comparetotmag  Inf  -sNaN   ->  -1
-ddctm892 comparetotmag  NaN  -sNaN   ->  1
-ddctm893 comparetotmag  sNaN -sNaN   ->  0
-
--- NaNs with payload
-ddctm960 comparetotmag  NaN9 -Inf   ->  1
-ddctm961 comparetotmag  NaN8  999   ->  1
-ddctm962 comparetotmag  NaN77 Inf   ->  1
-ddctm963 comparetotmag -NaN67 NaN5  ->  1
-ddctm964 comparetotmag -Inf  -NaN4  ->  -1
-ddctm965 comparetotmag -999  -NaN33 ->  -1
-ddctm966 comparetotmag  Inf   NaN2  ->  -1
-
-ddctm970 comparetotmag -NaN41 -NaN42 -> -1
-ddctm971 comparetotmag +NaN41 -NaN42 -> -1
-ddctm972 comparetotmag -NaN41 +NaN42 -> -1
-ddctm973 comparetotmag +NaN41 +NaN42 -> -1
-ddctm974 comparetotmag -NaN42 -NaN01 ->  1
-ddctm975 comparetotmag +NaN42 -NaN01 ->  1
-ddctm976 comparetotmag -NaN42 +NaN01 ->  1
-ddctm977 comparetotmag +NaN42 +NaN01 ->  1
-
-ddctm980 comparetotmag -sNaN771 -sNaN772 -> -1
-ddctm981 comparetotmag +sNaN771 -sNaN772 -> -1
-ddctm982 comparetotmag -sNaN771 +sNaN772 -> -1
-ddctm983 comparetotmag +sNaN771 +sNaN772 -> -1
-ddctm984 comparetotmag -sNaN772 -sNaN771 ->  1
-ddctm985 comparetotmag +sNaN772 -sNaN771 ->  1
-ddctm986 comparetotmag -sNaN772 +sNaN771 ->  1
-ddctm987 comparetotmag +sNaN772 +sNaN771 ->  1
-
-ddctm991 comparetotmag -sNaN99 -Inf    ->  1
-ddctm992 comparetotmag  sNaN98 -11     ->  1
-ddctm993 comparetotmag  sNaN97  NaN    -> -1
-ddctm994 comparetotmag  sNaN16 sNaN94  -> -1
-ddctm995 comparetotmag  NaN85  sNaN83  ->  1
-ddctm996 comparetotmag -Inf    sNaN92  -> -1
-ddctm997 comparetotmag  088    sNaN81  -> -1
-ddctm998 comparetotmag  Inf    sNaN90  -> -1
-ddctm999 comparetotmag  NaN   -sNaN89  ->  1
-
--- spread zeros
-ddctm1110 comparetotmag   0E-383  0        ->  -1
-ddctm1111 comparetotmag   0E-383 -0        ->  -1
-ddctm1112 comparetotmag  -0E-383  0        ->  -1
-ddctm1113 comparetotmag  -0E-383 -0        ->  -1
-ddctm1114 comparetotmag   0E-383  0E+384   ->  -1
-ddctm1115 comparetotmag   0E-383 -0E+384   ->  -1
-ddctm1116 comparetotmag  -0E-383  0E+384   ->  -1
-ddctm1117 comparetotmag  -0E-383 -0E+384   ->  -1
-ddctm1118 comparetotmag   0       0E+384   ->  -1
-ddctm1119 comparetotmag   0      -0E+384   ->  -1
-ddctm1120 comparetotmag  -0       0E+384   ->  -1
-ddctm1121 comparetotmag  -0      -0E+384   ->  -1
-
-ddctm1130 comparetotmag   0E+384  0        ->   1
-ddctm1131 comparetotmag   0E+384 -0        ->   1
-ddctm1132 comparetotmag  -0E+384  0        ->   1
-ddctm1133 comparetotmag  -0E+384 -0        ->   1
-ddctm1134 comparetotmag   0E+384  0E-383   ->   1
-ddctm1135 comparetotmag   0E+384 -0E-383   ->   1
-ddctm1136 comparetotmag  -0E+384  0E-383   ->   1
-ddctm1137 comparetotmag  -0E+384 -0E-383   ->   1
-ddctm1138 comparetotmag   0       0E-383   ->   1
-ddctm1139 comparetotmag   0      -0E-383   ->   1
-ddctm1140 comparetotmag  -0       0E-383   ->   1
-ddctm1141 comparetotmag  -0      -0E-383   ->   1
-
--- Null tests
-ddctm9990 comparetotmag 10  # -> NaN Invalid_operation
-ddctm9991 comparetotmag  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopy.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopy.decTest
deleted file mode 100644
index f99d86a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopy.decTest
+++ /dev/null
@@ -1,88 +0,0 @@
-------------------------------------------------------------------------
--- ddCopy.decTest -- quiet decDouble copy                             --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Sanity check
-ddcpy001 copy       +7.50  -> 7.50
-
--- Infinities
-ddcpy011 copy  Infinity    -> Infinity
-ddcpy012 copy  -Infinity   -> -Infinity
-
--- NaNs, 0 payload
-ddcpy021 copy         NaN  -> NaN
-ddcpy022 copy        -NaN  -> -NaN
-ddcpy023 copy        sNaN  -> sNaN
-ddcpy024 copy       -sNaN  -> -sNaN
-
--- NaNs, non-0 payload
-ddcpy031 copy       NaN10  -> NaN10
-ddcpy032 copy      -NaN10  -> -NaN10
-ddcpy033 copy      sNaN10  -> sNaN10
-ddcpy034 copy     -sNaN10  -> -sNaN10
-ddcpy035 copy       NaN7   -> NaN7
-ddcpy036 copy      -NaN7   -> -NaN7
-ddcpy037 copy      sNaN101 -> sNaN101
-ddcpy038 copy     -sNaN101 -> -sNaN101
-
--- finites
-ddcpy101 copy          7   -> 7
-ddcpy102 copy         -7   -> -7
-ddcpy103 copy         75   -> 75
-ddcpy104 copy        -75   -> -75
-ddcpy105 copy       7.50   -> 7.50
-ddcpy106 copy      -7.50   -> -7.50
-ddcpy107 copy       7.500  -> 7.500
-ddcpy108 copy      -7.500  -> -7.500
-
--- zeros
-ddcpy111 copy          0   -> 0
-ddcpy112 copy         -0   -> -0
-ddcpy113 copy       0E+4   -> 0E+4
-ddcpy114 copy      -0E+4   -> -0E+4
-ddcpy115 copy     0.0000   -> 0.0000
-ddcpy116 copy    -0.0000   -> -0.0000
-ddcpy117 copy      0E-141  -> 0E-141
-ddcpy118 copy     -0E-141  -> -0E-141
-
--- full coefficients, alternating bits
-ddcpy121 copy  2682682682682682         -> 2682682682682682
-ddcpy122 copy  -2682682682682682        -> -2682682682682682
-ddcpy123 copy  1341341341341341         -> 1341341341341341
-ddcpy124 copy  -1341341341341341        -> -1341341341341341
-
--- Nmax, Nmin, Ntiny
-ddcpy131 copy  9.999999999999999E+384   -> 9.999999999999999E+384
-ddcpy132 copy  1E-383                   -> 1E-383
-ddcpy133 copy  1.000000000000000E-383   -> 1.000000000000000E-383
-ddcpy134 copy  1E-398                   -> 1E-398
-
-ddcpy135 copy  -1E-398                  -> -1E-398
-ddcpy136 copy  -1.000000000000000E-383  -> -1.000000000000000E-383
-ddcpy137 copy  -1E-383                  -> -1E-383
-ddcpy138 copy  -9.999999999999999E+384  -> -9.999999999999999E+384
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopyAbs.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopyAbs.decTest
deleted file mode 100644
index d436a19..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopyAbs.decTest
+++ /dev/null
@@ -1,88 +0,0 @@
-------------------------------------------------------------------------
--- ddCopyAbs.decTest -- quiet decDouble copy and set sign to zero     --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Sanity check
-ddcpa001 copyabs       +7.50  -> 7.50
-
--- Infinities
-ddcpa011 copyabs  Infinity    -> Infinity
-ddcpa012 copyabs  -Infinity   -> Infinity
-
--- NaNs, 0 payload
-ddcpa021 copyabs         NaN  -> NaN
-ddcpa022 copyabs        -NaN  -> NaN
-ddcpa023 copyabs        sNaN  -> sNaN
-ddcpa024 copyabs       -sNaN  -> sNaN
-
--- NaNs, non-0 payload
-ddcpa031 copyabs       NaN10  -> NaN10
-ddcpa032 copyabs      -NaN15  -> NaN15
-ddcpa033 copyabs      sNaN15  -> sNaN15
-ddcpa034 copyabs     -sNaN10  -> sNaN10
-ddcpa035 copyabs       NaN7   -> NaN7
-ddcpa036 copyabs      -NaN7   -> NaN7
-ddcpa037 copyabs      sNaN101 -> sNaN101
-ddcpa038 copyabs     -sNaN101 -> sNaN101
-
--- finites
-ddcpa101 copyabs          7   -> 7
-ddcpa102 copyabs         -7   -> 7
-ddcpa103 copyabs         75   -> 75
-ddcpa104 copyabs        -75   -> 75
-ddcpa105 copyabs       7.10   -> 7.10
-ddcpa106 copyabs      -7.10   -> 7.10
-ddcpa107 copyabs       7.500  -> 7.500
-ddcpa108 copyabs      -7.500  -> 7.500
-
--- zeros
-ddcpa111 copyabs          0   -> 0
-ddcpa112 copyabs         -0   -> 0
-ddcpa113 copyabs       0E+6   -> 0E+6
-ddcpa114 copyabs      -0E+6   -> 0E+6
-ddcpa115 copyabs     0.0000   -> 0.0000
-ddcpa116 copyabs    -0.0000   -> 0.0000
-ddcpa117 copyabs      0E-141  -> 0E-141
-ddcpa118 copyabs     -0E-141  -> 0E-141
-
--- full coefficients, alternating bits
-ddcpa121 copyabs  2682682682682682         -> 2682682682682682
-ddcpa122 copyabs  -2682682682682682        -> 2682682682682682
-ddcpa123 copyabs  1341341341341341         -> 1341341341341341
-ddcpa124 copyabs  -1341341341341341        -> 1341341341341341
-
--- Nmax, Nmin, Ntiny
-ddcpa131 copyabs  9.999999999999999E+384   -> 9.999999999999999E+384
-ddcpa132 copyabs  1E-383                   -> 1E-383
-ddcpa133 copyabs  1.000000000000000E-383   -> 1.000000000000000E-383
-ddcpa134 copyabs  1E-398                   -> 1E-398
-
-ddcpa135 copyabs  -1E-398                  -> 1E-398
-ddcpa136 copyabs  -1.000000000000000E-383  -> 1.000000000000000E-383
-ddcpa137 copyabs  -1E-383                  -> 1E-383
-ddcpa138 copyabs  -9.999999999999999E+384  -> 9.999999999999999E+384
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopyNegate.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopyNegate.decTest
deleted file mode 100644
index a4c4274..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopyNegate.decTest
+++ /dev/null
@@ -1,88 +0,0 @@
-------------------------------------------------------------------------
--- ddCopyNegate.decTest -- quiet decDouble copy and negate            --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Sanity check
-ddcpn001 copynegate       +7.50  -> -7.50
-
--- Infinities
-ddcpn011 copynegate  Infinity    -> -Infinity
-ddcpn012 copynegate  -Infinity   -> Infinity
-
--- NaNs, 0 payload
-ddcpn021 copynegate         NaN  -> -NaN
-ddcpn022 copynegate        -NaN  -> NaN
-ddcpn023 copynegate        sNaN  -> -sNaN
-ddcpn024 copynegate       -sNaN  -> sNaN
-
--- NaNs, non-0 payload
-ddcpn031 copynegate       NaN13  -> -NaN13
-ddcpn032 copynegate      -NaN13  -> NaN13
-ddcpn033 copynegate      sNaN13  -> -sNaN13
-ddcpn034 copynegate     -sNaN13  -> sNaN13
-ddcpn035 copynegate       NaN70  -> -NaN70
-ddcpn036 copynegate      -NaN70  -> NaN70
-ddcpn037 copynegate      sNaN101 -> -sNaN101
-ddcpn038 copynegate     -sNaN101 -> sNaN101
-
--- finites
-ddcpn101 copynegate          7   -> -7
-ddcpn102 copynegate         -7   -> 7
-ddcpn103 copynegate         75   -> -75
-ddcpn104 copynegate        -75   -> 75
-ddcpn105 copynegate       7.50   -> -7.50
-ddcpn106 copynegate      -7.50   -> 7.50
-ddcpn107 copynegate       7.500  -> -7.500
-ddcpn108 copynegate      -7.500  -> 7.500
-
--- zeros
-ddcpn111 copynegate          0   -> -0
-ddcpn112 copynegate         -0   -> 0
-ddcpn113 copynegate       0E+4   -> -0E+4
-ddcpn114 copynegate      -0E+4   -> 0E+4
-ddcpn115 copynegate     0.0000   -> -0.0000
-ddcpn116 copynegate    -0.0000   -> 0.0000
-ddcpn117 copynegate      0E-141  -> -0E-141
-ddcpn118 copynegate     -0E-141  -> 0E-141
-
--- full coefficients, alternating bits
-ddcpn121 copynegate  2682682682682682         -> -2682682682682682
-ddcpn122 copynegate  -2682682682682682        -> 2682682682682682
-ddcpn123 copynegate  1341341341341341         -> -1341341341341341
-ddcpn124 copynegate  -1341341341341341        -> 1341341341341341
-
--- Nmax, Nmin, Ntiny
-ddcpn131 copynegate  9.999999999999999E+384   -> -9.999999999999999E+384
-ddcpn132 copynegate  1E-383                   -> -1E-383
-ddcpn133 copynegate  1.000000000000000E-383   -> -1.000000000000000E-383
-ddcpn134 copynegate  1E-398                   -> -1E-398
-
-ddcpn135 copynegate  -1E-398                  -> 1E-398
-ddcpn136 copynegate  -1.000000000000000E-383  -> 1.000000000000000E-383
-ddcpn137 copynegate  -1E-383                  -> 1E-383
-ddcpn138 copynegate  -9.999999999999999E+384  -> 9.999999999999999E+384
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopySign.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopySign.decTest
deleted file mode 100644
index 6a78083..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddCopySign.decTest
+++ /dev/null
@@ -1,175 +0,0 @@
-------------------------------------------------------------------------
--- ddCopySign.decTest -- quiet decDouble copy with sign from rhs      --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Sanity check
-ddcps001 copysign       +7.50     11 -> 7.50
-
--- Infinities
-ddcps011 copysign  Infinity       11 -> Infinity
-ddcps012 copysign  -Infinity      11 -> Infinity
-
--- NaNs, 0 payload
-ddcps021 copysign         NaN     11 -> NaN
-ddcps022 copysign        -NaN     11 -> NaN
-ddcps023 copysign        sNaN     11 -> sNaN
-ddcps024 copysign       -sNaN     11 -> sNaN
-
--- NaNs, non-0 payload
-ddcps031 copysign       NaN10     11 -> NaN10
-ddcps032 copysign      -NaN10     11 -> NaN10
-ddcps033 copysign      sNaN10     11 -> sNaN10
-ddcps034 copysign     -sNaN10     11 -> sNaN10
-ddcps035 copysign       NaN7      11 -> NaN7
-ddcps036 copysign      -NaN7      11 -> NaN7
-ddcps037 copysign      sNaN101    11 -> sNaN101
-ddcps038 copysign     -sNaN101    11 -> sNaN101
-
--- finites
-ddcps101 copysign          7      11 -> 7
-ddcps102 copysign         -7      11 -> 7
-ddcps103 copysign         75      11 -> 75
-ddcps104 copysign        -75      11 -> 75
-ddcps105 copysign       7.50      11 -> 7.50
-ddcps106 copysign      -7.50      11 -> 7.50
-ddcps107 copysign       7.500     11 -> 7.500
-ddcps108 copysign      -7.500     11 -> 7.500
-
--- zeros
-ddcps111 copysign          0      11 -> 0
-ddcps112 copysign         -0      11 -> 0
-ddcps113 copysign       0E+4      11 -> 0E+4
-ddcps114 copysign      -0E+4      11 -> 0E+4
-ddcps115 copysign     0.0000      11 -> 0.0000
-ddcps116 copysign    -0.0000      11 -> 0.0000
-ddcps117 copysign      0E-141     11 -> 0E-141
-ddcps118 copysign     -0E-141     11 -> 0E-141
-
--- full coefficients, alternating bits
-ddcps121 copysign  2682682682682682            11 -> 2682682682682682
-ddcps122 copysign  -2682682682682682           11 -> 2682682682682682
-ddcps123 copysign  1341341341341341            11 -> 1341341341341341
-ddcps124 copysign  -1341341341341341           11 -> 1341341341341341
-
--- Nmax, Nmin, Ntiny
-ddcps131 copysign  9.999999999999999E+384      11 -> 9.999999999999999E+384
-ddcps132 copysign  1E-383                      11 -> 1E-383
-ddcps133 copysign  1.000000000000000E-383      11 -> 1.000000000000000E-383
-ddcps134 copysign  1E-398                      11 -> 1E-398
-
-ddcps135 copysign  -1E-398                     11 -> 1E-398
-ddcps136 copysign  -1.000000000000000E-383     11 -> 1.000000000000000E-383
-ddcps137 copysign  -1E-383                     11 -> 1E-383
-ddcps138 copysign  -9.999999999999999E+384     11 -> 9.999999999999999E+384
-
--- repeat with negative RHS
-
--- Infinities
-ddcps211 copysign  Infinity       -34 -> -Infinity
-ddcps212 copysign  -Infinity      -34 -> -Infinity
-
--- NaNs, 0 payload
-ddcps221 copysign         NaN     -34 -> -NaN
-ddcps222 copysign        -NaN     -34 -> -NaN
-ddcps223 copysign        sNaN     -34 -> -sNaN
-ddcps224 copysign       -sNaN     -34 -> -sNaN
-
--- NaNs, non-0 payload
-ddcps231 copysign       NaN10     -34 -> -NaN10
-ddcps232 copysign      -NaN10     -34 -> -NaN10
-ddcps233 copysign      sNaN10     -34 -> -sNaN10
-ddcps234 copysign     -sNaN10     -34 -> -sNaN10
-ddcps235 copysign       NaN7      -34 -> -NaN7
-ddcps236 copysign      -NaN7      -34 -> -NaN7
-ddcps237 copysign      sNaN101    -34 -> -sNaN101
-ddcps238 copysign     -sNaN101    -34 -> -sNaN101
-
--- finites
-ddcps301 copysign          7      -34 -> -7
-ddcps302 copysign         -7      -34 -> -7
-ddcps303 copysign         75      -34 -> -75
-ddcps304 copysign        -75      -34 -> -75
-ddcps305 copysign       7.50      -34 -> -7.50
-ddcps306 copysign      -7.50      -34 -> -7.50
-ddcps307 copysign       7.500     -34 -> -7.500
-ddcps308 copysign      -7.500     -34 -> -7.500
-
--- zeros
-ddcps311 copysign          0      -34 -> -0
-ddcps312 copysign         -0      -34 -> -0
-ddcps313 copysign       0E+4      -34 -> -0E+4
-ddcps314 copysign      -0E+4      -34 -> -0E+4
-ddcps315 copysign     0.0000      -34 -> -0.0000
-ddcps316 copysign    -0.0000      -34 -> -0.0000
-ddcps317 copysign      0E-141     -34 -> -0E-141
-ddcps318 copysign     -0E-141     -34 -> -0E-141
-
--- full coefficients, alternating bits
-ddcps321 copysign  2682682682682682            -34 -> -2682682682682682
-ddcps322 copysign  -2682682682682682           -34 -> -2682682682682682
-ddcps323 copysign  1341341341341341            -34 -> -1341341341341341
-ddcps324 copysign  -1341341341341341           -34 -> -1341341341341341
-
--- Nmax, Nmin, Ntiny
-ddcps331 copysign  9.999999999999999E+384      -34 -> -9.999999999999999E+384
-ddcps332 copysign  1E-383                      -34 -> -1E-383
-ddcps333 copysign  1.000000000000000E-383      -34 -> -1.000000000000000E-383
-ddcps334 copysign  1E-398                      -34 -> -1E-398
-
-ddcps335 copysign  -1E-398                     -34 -> -1E-398
-ddcps336 copysign  -1.000000000000000E-383     -34 -> -1.000000000000000E-383
-ddcps337 copysign  -1E-383                     -34 -> -1E-383
-ddcps338 copysign  -9.999999999999999E+384     -34 -> -9.999999999999999E+384
-
--- Other kinds of RHS
-ddcps401 copysign          701    -34 -> -701
-ddcps402 copysign         -720    -34 -> -720
-ddcps403 copysign          701    -0  -> -701
-ddcps404 copysign         -720    -0  -> -720
-ddcps405 copysign          701    +0  ->  701
-ddcps406 copysign         -720    +0  ->  720
-ddcps407 copysign          701    +34 ->  701
-ddcps408 copysign         -720    +34 ->  720
-
-ddcps413 copysign          701    -Inf  -> -701
-ddcps414 copysign         -720    -Inf  -> -720
-ddcps415 copysign          701    +Inf  ->  701
-ddcps416 copysign         -720    +Inf  ->  720
-
-ddcps420 copysign          701    -NaN  -> -701
-ddcps421 copysign         -720    -NaN  -> -720
-ddcps422 copysign          701    +NaN  ->  701
-ddcps423 copysign         -720    +NaN  ->  720
-ddcps425 copysign         -720    +NaN8 ->  720
-
-ddcps426 copysign          701    -sNaN  -> -701
-ddcps427 copysign         -720    -sNaN  -> -720
-ddcps428 copysign          701    +sNaN  ->  701
-ddcps429 copysign         -720    +sNaN  ->  720
-ddcps430 copysign         -720    +sNaN3 ->  720
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddDivide.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddDivide.decTest
deleted file mode 100644
index 5531d0e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddDivide.decTest
+++ /dev/null
@@ -1,863 +0,0 @@
-------------------------------------------------------------------------
--- ddDivide.decTest -- decDouble division                             --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- sanity checks
-dddiv001 divide  1     1    ->  1
-dddiv002 divide  2     1    ->  2
-dddiv003 divide  1     2    ->  0.5
-dddiv004 divide  2     2    ->  1
-dddiv005 divide  0     1    ->  0
-dddiv006 divide  0     2    ->  0
-dddiv007 divide  1     3    ->  0.3333333333333333 Inexact Rounded
-dddiv008 divide  2     3    ->  0.6666666666666667 Inexact Rounded
-dddiv009 divide  3     3    ->  1
-
-dddiv010 divide  2.4   1    ->  2.4
-dddiv011 divide  2.4   -1   ->  -2.4
-dddiv012 divide  -2.4  1    ->  -2.4
-dddiv013 divide  -2.4  -1   ->  2.4
-dddiv014 divide  2.40  1    ->  2.40
-dddiv015 divide  2.400 1    ->  2.400
-dddiv016 divide  2.4   2    ->  1.2
-dddiv017 divide  2.400 2    ->  1.200
-dddiv018 divide  2.    2    ->  1
-dddiv019 divide  20    20   ->  1
-
-dddiv020 divide  187   187    ->  1
-dddiv021 divide  5     2      ->  2.5
-dddiv022 divide  50    20     ->  2.5
-dddiv023 divide  500   200    ->  2.5
-dddiv024 divide  50.0  20.0   ->  2.5
-dddiv025 divide  5.00  2.00   ->  2.5
-dddiv026 divide  5     2.0    ->  2.5
-dddiv027 divide  5     2.000  ->  2.5
-dddiv028 divide  5     0.20   ->  25
-dddiv029 divide  5     0.200  ->  25
-dddiv030 divide  10    1      ->  10
-dddiv031 divide  100   1      ->  100
-dddiv032 divide  1000  1      ->  1000
-dddiv033 divide  1000  100    ->  10
-
-dddiv035 divide  1     2      ->  0.5
-dddiv036 divide  1     4      ->  0.25
-dddiv037 divide  1     8      ->  0.125
-dddiv038 divide  1     16     ->  0.0625
-dddiv039 divide  1     32     ->  0.03125
-dddiv040 divide  1     64     ->  0.015625
-dddiv041 divide  1    -2      ->  -0.5
-dddiv042 divide  1    -4      ->  -0.25
-dddiv043 divide  1    -8      ->  -0.125
-dddiv044 divide  1    -16     ->  -0.0625
-dddiv045 divide  1    -32     ->  -0.03125
-dddiv046 divide  1    -64     ->  -0.015625
-dddiv047 divide -1     2      ->  -0.5
-dddiv048 divide -1     4      ->  -0.25
-dddiv049 divide -1     8      ->  -0.125
-dddiv050 divide -1     16     ->  -0.0625
-dddiv051 divide -1     32     ->  -0.03125
-dddiv052 divide -1     64     ->  -0.015625
-dddiv053 divide -1    -2      ->  0.5
-dddiv054 divide -1    -4      ->  0.25
-dddiv055 divide -1    -8      ->  0.125
-dddiv056 divide -1    -16     ->  0.0625
-dddiv057 divide -1    -32     ->  0.03125
-dddiv058 divide -1    -64     ->  0.015625
-
--- bcdTime
-dddiv060 divide  1 7                   -> 0.1428571428571429 Inexact Rounded
-dddiv061 divide 1.2345678  1.9876543   -> 0.6211179680490717 Inexact Rounded
-
---               1234567890123456
-dddiv071 divide  9999999999999999 1  ->  9999999999999999
-dddiv072 divide  999999999999999  1  ->  999999999999999
-dddiv073 divide  99999999999999   1  ->  99999999999999
-dddiv074 divide  9999999999999    1  ->  9999999999999
-dddiv075 divide  999999999999     1  ->  999999999999
-dddiv076 divide  99999999999      1  ->  99999999999
-dddiv077 divide  9999999999       1  ->  9999999999
-dddiv078 divide  999999999        1  ->  999999999
-dddiv079 divide  99999999         1  ->  99999999
-dddiv080 divide  9999999          1  ->  9999999
-dddiv081 divide  999999           1  ->  999999
-dddiv082 divide  99999            1  ->  99999
-dddiv083 divide  9999             1  ->  9999
-dddiv084 divide  999              1  ->  999
-dddiv085 divide  99               1  ->  99
-dddiv086 divide  9                1  ->  9
-
-dddiv090 divide  0.            1    ->  0
-dddiv091 divide  .0            1    ->  0.0
-dddiv092 divide  0.00          1    ->  0.00
-dddiv093 divide  0.00E+9       1    ->  0E+7
-dddiv094 divide  0.0000E-50    1    ->  0E-54
-
-dddiv095 divide  1            1E-8  ->  1E+8
-dddiv096 divide  1            1E-9  ->  1E+9
-dddiv097 divide  1            1E-10 ->  1E+10
-dddiv098 divide  1            1E-11 ->  1E+11
-dddiv099 divide  1            1E-12 ->  1E+12
-
-dddiv100 divide  1  1   -> 1
-dddiv101 divide  1  2   -> 0.5
-dddiv102 divide  1  3   -> 0.3333333333333333 Inexact Rounded
-dddiv103 divide  1  4   -> 0.25
-dddiv104 divide  1  5   -> 0.2
-dddiv105 divide  1  6   -> 0.1666666666666667 Inexact Rounded
-dddiv106 divide  1  7   -> 0.1428571428571429 Inexact Rounded
-dddiv107 divide  1  8   -> 0.125
-dddiv108 divide  1  9   -> 0.1111111111111111 Inexact Rounded
-dddiv109 divide  1  10  -> 0.1
-dddiv110 divide  1  1   -> 1
-dddiv111 divide  2  1   -> 2
-dddiv112 divide  3  1   -> 3
-dddiv113 divide  4  1   -> 4
-dddiv114 divide  5  1   -> 5
-dddiv115 divide  6  1   -> 6
-dddiv116 divide  7  1   -> 7
-dddiv117 divide  8  1   -> 8
-dddiv118 divide  9  1   -> 9
-dddiv119 divide  10 1   -> 10
-
-dddiv120 divide  3E+1 0.001  -> 3E+4
-dddiv121 divide  2.200 2     -> 1.100
-
-dddiv130 divide  12345  4.999  ->  2469.493898779756    Inexact Rounded
-dddiv131 divide  12345  4.99   ->  2473.947895791583    Inexact Rounded
-dddiv132 divide  12345  4.9    ->  2519.387755102041    Inexact Rounded
-dddiv133 divide  12345  5      ->  2469
-dddiv134 divide  12345  5.1    ->  2420.588235294118    Inexact Rounded
-dddiv135 divide  12345  5.01   ->  2464.071856287425    Inexact Rounded
-dddiv136 divide  12345  5.001  ->  2468.506298740252    Inexact Rounded
-
--- test possibly imprecise results
-dddiv220 divide 391   597 ->  0.6549413735343384  Inexact Rounded
-dddiv221 divide 391  -597 -> -0.6549413735343384  Inexact Rounded
-dddiv222 divide -391  597 -> -0.6549413735343384  Inexact Rounded
-dddiv223 divide -391 -597 ->  0.6549413735343384  Inexact Rounded
-
--- test some cases that are close to exponent overflow, some with coefficient padding
-dddiv270 divide 1 1e384                  -> 1E-384                 Subnormal
-dddiv271 divide 1 0.9e384                -> 1.11111111111111E-384  Rounded Inexact Subnormal Underflow
-dddiv272 divide 1 0.99e384               -> 1.01010101010101E-384  Rounded Inexact Subnormal Underflow
-dddiv273 divide 1 0.9999999999999999e384 -> 1.00000000000000E-384  Rounded Inexact Subnormal Underflow
-dddiv274 divide 9e384    1               -> 9.000000000000000E+384 Clamped
-dddiv275 divide 9.9e384  1               -> 9.900000000000000E+384 Clamped
-dddiv276 divide 9.99e384 1               -> 9.990000000000000E+384 Clamped
-dddiv277 divide 9.9999999999999e384 1    -> 9.999999999999900E+384 Clamped
-dddiv278 divide 9.99999999999999e384 1   -> 9.999999999999990E+384 Clamped
-dddiv279 divide 9.999999999999999e384 1  -> 9.999999999999999E+384
-
-dddiv285 divide 9.9e384  1.1              -> 9.000000000000000E+384 Clamped
-dddiv286 divide 9.99e384 1.1              -> 9.081818181818182E+384 Inexact Rounded
-dddiv287 divide 9.9999999999999e384 1.1   -> 9.090909090909000E+384 Clamped
-dddiv288 divide 9.99999999999999e384 1.1  -> 9.090909090909082E+384 Inexact Rounded
-dddiv289 divide 9.999999999999999e384 1.1 -> 9.090909090909090E+384 Clamped
-
-
--- Divide into 0 tests
-dddiv301 divide    0    7     -> 0
-dddiv302 divide    0    7E-5  -> 0E+5
-dddiv303 divide    0    7E-1  -> 0E+1
-dddiv304 divide    0    7E+1  -> 0.0
-dddiv305 divide    0    7E+5  -> 0.00000
-dddiv306 divide    0    7E+6  -> 0.000000
-dddiv307 divide    0    7E+7  -> 0E-7
-dddiv308 divide    0   70E-5  -> 0E+5
-dddiv309 divide    0   70E-1  -> 0E+1
-dddiv310 divide    0   70E+0  -> 0
-dddiv311 divide    0   70E+1  -> 0.0
-dddiv312 divide    0   70E+5  -> 0.00000
-dddiv313 divide    0   70E+6  -> 0.000000
-dddiv314 divide    0   70E+7  -> 0E-7
-dddiv315 divide    0  700E-5  -> 0E+5
-dddiv316 divide    0  700E-1  -> 0E+1
-dddiv317 divide    0  700E+0  -> 0
-dddiv318 divide    0  700E+1  -> 0.0
-dddiv319 divide    0  700E+5  -> 0.00000
-dddiv320 divide    0  700E+6  -> 0.000000
-dddiv321 divide    0  700E+7  -> 0E-7
-dddiv322 divide    0  700E+77 -> 0E-77
-
-dddiv331 divide 0E-3    7E-5  -> 0E+2
-dddiv332 divide 0E-3    7E-1  -> 0.00
-dddiv333 divide 0E-3    7E+1  -> 0.0000
-dddiv334 divide 0E-3    7E+5  -> 0E-8
-dddiv335 divide 0E-1    7E-5  -> 0E+4
-dddiv336 divide 0E-1    7E-1  -> 0
-dddiv337 divide 0E-1    7E+1  -> 0.00
-dddiv338 divide 0E-1    7E+5  -> 0.000000
-dddiv339 divide 0E+1    7E-5  -> 0E+6
-dddiv340 divide 0E+1    7E-1  -> 0E+2
-dddiv341 divide 0E+1    7E+1  -> 0
-dddiv342 divide 0E+1    7E+5  -> 0.0000
-dddiv343 divide 0E+3    7E-5  -> 0E+8
-dddiv344 divide 0E+3    7E-1  -> 0E+4
-dddiv345 divide 0E+3    7E+1  -> 0E+2
-dddiv346 divide 0E+3    7E+5  -> 0.00
-
--- These were 'input rounding'
-dddiv441 divide 12345678000 1 -> 12345678000
-dddiv442 divide 1 12345678000 -> 8.100000664200054E-11 Inexact Rounded
-dddiv443 divide 1234567800  1 -> 1234567800
-dddiv444 divide 1 1234567800  -> 8.100000664200054E-10 Inexact Rounded
-dddiv445 divide 1234567890  1 -> 1234567890
-dddiv446 divide 1 1234567890  -> 8.100000073710001E-10 Inexact Rounded
-dddiv447 divide 1234567891  1 -> 1234567891
-dddiv448 divide 1 1234567891  -> 8.100000067149001E-10 Inexact Rounded
-dddiv449 divide 12345678901 1 -> 12345678901
-dddiv450 divide 1 12345678901 -> 8.100000073053901E-11 Inexact Rounded
-dddiv451 divide 1234567896  1 -> 1234567896
-dddiv452 divide 1 1234567896  -> 8.100000034344000E-10 Inexact Rounded
-
--- high-lows
-dddiv453 divide 1e+1   1    ->   1E+1
-dddiv454 divide 1e+1   1.0  ->   1E+1
-dddiv455 divide 1e+1   1.00 ->   1E+1
-dddiv456 divide 1e+2   2    ->   5E+1
-dddiv457 divide 1e+2   2.0  ->   5E+1
-dddiv458 divide 1e+2   2.00 ->   5E+1
-
--- some from IEEE discussions
-dddiv460 divide 3e0      2e0     -> 1.5
-dddiv461 divide 30e-1    2e0     -> 1.5
-dddiv462 divide 300e-2   2e0     -> 1.50
-dddiv464 divide 3000e-3  2e0     -> 1.500
-dddiv465 divide 3e0      20e-1   -> 1.5
-dddiv466 divide 30e-1    20e-1   -> 1.5
-dddiv467 divide 300e-2   20e-1   -> 1.5
-dddiv468 divide 3000e-3  20e-1   -> 1.50
-dddiv469 divide 3e0      200e-2  -> 1.5
-dddiv470 divide 30e-1    200e-2  -> 1.5
-dddiv471 divide 300e-2   200e-2  -> 1.5
-dddiv472 divide 3000e-3  200e-2  -> 1.5
-dddiv473 divide 3e0      2000e-3 -> 1.5
-dddiv474 divide 30e-1    2000e-3 -> 1.5
-dddiv475 divide 300e-2   2000e-3 -> 1.5
-dddiv476 divide 3000e-3  2000e-3 -> 1.5
-
--- some reciprocals
-dddiv480 divide 1        1.0E+33 -> 1E-33
-dddiv481 divide 1        10E+33  -> 1E-34
-dddiv482 divide 1        1.0E-33 -> 1E+33
-dddiv483 divide 1        10E-33  -> 1E+32
-
--- RMS discussion table
-dddiv484 divide 0e5     1e3 ->   0E+2
-dddiv485 divide 0e5     2e3 ->   0E+2
-dddiv486 divide 0e5    10e2 ->   0E+3
-dddiv487 divide 0e5    20e2 ->   0E+3
-dddiv488 divide 0e5   100e1 ->   0E+4
-dddiv489 divide 0e5   200e1 ->   0E+4
-
-dddiv491 divide 1e5     1e3 ->   1E+2
-dddiv492 divide 1e5     2e3 ->   5E+1
-dddiv493 divide 1e5    10e2 ->   1E+2
-dddiv494 divide 1e5    20e2 ->   5E+1
-dddiv495 divide 1e5   100e1 ->   1E+2
-dddiv496 divide 1e5   200e1 ->   5E+1
-
--- tryzeros cases
-rounding:    half_up
-dddiv497  divide  0E+380 1000E-13  -> 0E+369 Clamped
-dddiv498  divide  0E-390 1000E+13  -> 0E-398 Clamped
-
-rounding:    half_up
-
--- focus on trailing zeros issues
-dddiv500 divide  1      9.9    ->  0.1010101010101010  Inexact Rounded
-dddiv501 divide  1      9.09   ->  0.1100110011001100  Inexact Rounded
-dddiv502 divide  1      9.009  ->  0.1110001110001110  Inexact Rounded
-
-dddiv511 divide 1         2    -> 0.5
-dddiv512 divide 1.0       2    -> 0.5
-dddiv513 divide 1.00      2    -> 0.50
-dddiv514 divide 1.000     2    -> 0.500
-dddiv515 divide 1.0000    2    -> 0.5000
-dddiv516 divide 1.00000   2    -> 0.50000
-dddiv517 divide 1.000000  2    -> 0.500000
-dddiv518 divide 1.0000000 2    -> 0.5000000
-dddiv519 divide 1.00      2.00 -> 0.5
-
-dddiv521 divide 2    1         -> 2
-dddiv522 divide 2    1.0       -> 2
-dddiv523 divide 2    1.00      -> 2
-dddiv524 divide 2    1.000     -> 2
-dddiv525 divide 2    1.0000    -> 2
-dddiv526 divide 2    1.00000   -> 2
-dddiv527 divide 2    1.000000  -> 2
-dddiv528 divide 2    1.0000000 -> 2
-dddiv529 divide 2.00 1.00      -> 2
-
-dddiv530 divide  2.40   2      ->  1.20
-dddiv531 divide  2.40   4      ->  0.60
-dddiv532 divide  2.40  10      ->  0.24
-dddiv533 divide  2.40   2.0    ->  1.2
-dddiv534 divide  2.40   4.0    ->  0.6
-dddiv535 divide  2.40  10.0    ->  0.24
-dddiv536 divide  2.40   2.00   ->  1.2
-dddiv537 divide  2.40   4.00   ->  0.6
-dddiv538 divide  2.40  10.00   ->  0.24
-dddiv539 divide  0.9    0.1    ->  9
-dddiv540 divide  0.9    0.01   ->  9E+1
-dddiv541 divide  0.9    0.001  ->  9E+2
-dddiv542 divide  5      2      ->  2.5
-dddiv543 divide  5      2.0    ->  2.5
-dddiv544 divide  5      2.00   ->  2.5
-dddiv545 divide  5      20     ->  0.25
-dddiv546 divide  5      20.0   ->  0.25
-dddiv547 divide  2.400  2      ->  1.200
-dddiv548 divide  2.400  2.0    ->  1.20
-dddiv549 divide  2.400  2.400  ->  1
-
-dddiv550 divide  240    1      ->  240
-dddiv551 divide  240    10     ->  24
-dddiv552 divide  240    100    ->  2.4
-dddiv553 divide  240    1000   ->  0.24
-dddiv554 divide  2400   1      ->  2400
-dddiv555 divide  2400   10     ->  240
-dddiv556 divide  2400   100    ->  24
-dddiv557 divide  2400   1000   ->  2.4
-
--- +ve exponent
-dddiv600 divide  2.4E+9     2  ->  1.2E+9
-dddiv601 divide  2.40E+9    2  ->  1.20E+9
-dddiv602 divide  2.400E+9   2  ->  1.200E+9
-dddiv603 divide  2.4000E+9  2  ->  1.2000E+9
-dddiv604 divide  24E+8      2  ->  1.2E+9
-dddiv605 divide  240E+7     2  ->  1.20E+9
-dddiv606 divide  2400E+6    2  ->  1.200E+9
-dddiv607 divide  24000E+5   2  ->  1.2000E+9
-
--- more zeros, etc.
-dddiv731 divide 5.00 1E-3    -> 5.00E+3
-dddiv732 divide 00.00 0.000  -> NaN Division_undefined
-dddiv733 divide 00.00 0E-3   -> NaN Division_undefined
-dddiv734 divide  0    -0     -> NaN Division_undefined
-dddiv735 divide -0     0     -> NaN Division_undefined
-dddiv736 divide -0    -0     -> NaN Division_undefined
-
-dddiv741 divide  0    -1     -> -0
-dddiv742 divide -0    -1     ->  0
-dddiv743 divide  0     1     ->  0
-dddiv744 divide -0     1     -> -0
-dddiv745 divide -1     0     -> -Infinity Division_by_zero
-dddiv746 divide -1    -0     ->  Infinity Division_by_zero
-dddiv747 divide  1     0     ->  Infinity Division_by_zero
-dddiv748 divide  1    -0     -> -Infinity Division_by_zero
-
-dddiv751 divide  0.0  -1     -> -0.0
-dddiv752 divide -0.0  -1     ->  0.0
-dddiv753 divide  0.0   1     ->  0.0
-dddiv754 divide -0.0   1     -> -0.0
-dddiv755 divide -1.0   0     -> -Infinity Division_by_zero
-dddiv756 divide -1.0  -0     ->  Infinity Division_by_zero
-dddiv757 divide  1.0   0     ->  Infinity Division_by_zero
-dddiv758 divide  1.0  -0     -> -Infinity Division_by_zero
-
-dddiv761 divide  0    -1.0   -> -0E+1
-dddiv762 divide -0    -1.0   ->  0E+1
-dddiv763 divide  0     1.0   ->  0E+1
-dddiv764 divide -0     1.0   -> -0E+1
-dddiv765 divide -1     0.0   -> -Infinity Division_by_zero
-dddiv766 divide -1    -0.0   ->  Infinity Division_by_zero
-dddiv767 divide  1     0.0   ->  Infinity Division_by_zero
-dddiv768 divide  1    -0.0   -> -Infinity Division_by_zero
-
-dddiv771 divide  0.0  -1.0   -> -0
-dddiv772 divide -0.0  -1.0   ->  0
-dddiv773 divide  0.0   1.0   ->  0
-dddiv774 divide -0.0   1.0   -> -0
-dddiv775 divide -1.0   0.0   -> -Infinity Division_by_zero
-dddiv776 divide -1.0  -0.0   ->  Infinity Division_by_zero
-dddiv777 divide  1.0   0.0   ->  Infinity Division_by_zero
-dddiv778 divide  1.0  -0.0   -> -Infinity Division_by_zero
-
--- Specials
-dddiv780 divide  Inf  -Inf   ->  NaN Invalid_operation
-dddiv781 divide  Inf  -1000  -> -Infinity
-dddiv782 divide  Inf  -1     -> -Infinity
-dddiv783 divide  Inf  -0     -> -Infinity
-dddiv784 divide  Inf   0     ->  Infinity
-dddiv785 divide  Inf   1     ->  Infinity
-dddiv786 divide  Inf   1000  ->  Infinity
-dddiv787 divide  Inf   Inf   ->  NaN Invalid_operation
-dddiv788 divide -1000  Inf   -> -0E-398 Clamped
-dddiv789 divide -Inf   Inf   ->  NaN Invalid_operation
-dddiv790 divide -1     Inf   -> -0E-398 Clamped
-dddiv791 divide -0     Inf   -> -0E-398 Clamped
-dddiv792 divide  0     Inf   ->  0E-398 Clamped
-dddiv793 divide  1     Inf   ->  0E-398 Clamped
-dddiv794 divide  1000  Inf   ->  0E-398 Clamped
-dddiv795 divide  Inf   Inf   ->  NaN Invalid_operation
-
-dddiv800 divide -Inf  -Inf   ->  NaN Invalid_operation
-dddiv801 divide -Inf  -1000  ->  Infinity
-dddiv802 divide -Inf  -1     ->  Infinity
-dddiv803 divide -Inf  -0     ->  Infinity
-dddiv804 divide -Inf   0     -> -Infinity
-dddiv805 divide -Inf   1     -> -Infinity
-dddiv806 divide -Inf   1000  -> -Infinity
-dddiv807 divide -Inf   Inf   ->  NaN Invalid_operation
-dddiv808 divide -1000  Inf   -> -0E-398 Clamped
-dddiv809 divide -Inf  -Inf   ->  NaN Invalid_operation
-dddiv810 divide -1    -Inf   ->  0E-398 Clamped
-dddiv811 divide -0    -Inf   ->  0E-398 Clamped
-dddiv812 divide  0    -Inf   -> -0E-398 Clamped
-dddiv813 divide  1    -Inf   -> -0E-398 Clamped
-dddiv814 divide  1000 -Inf   -> -0E-398 Clamped
-dddiv815 divide  Inf  -Inf   ->  NaN Invalid_operation
-
-dddiv821 divide  NaN -Inf    ->  NaN
-dddiv822 divide  NaN -1000   ->  NaN
-dddiv823 divide  NaN -1      ->  NaN
-dddiv824 divide  NaN -0      ->  NaN
-dddiv825 divide  NaN  0      ->  NaN
-dddiv826 divide  NaN  1      ->  NaN
-dddiv827 divide  NaN  1000   ->  NaN
-dddiv828 divide  NaN  Inf    ->  NaN
-dddiv829 divide  NaN  NaN    ->  NaN
-dddiv830 divide -Inf  NaN    ->  NaN
-dddiv831 divide -1000 NaN    ->  NaN
-dddiv832 divide -1    NaN    ->  NaN
-dddiv833 divide -0    NaN    ->  NaN
-dddiv834 divide  0    NaN    ->  NaN
-dddiv835 divide  1    NaN    ->  NaN
-dddiv836 divide  1000 NaN    ->  NaN
-dddiv837 divide  Inf  NaN    ->  NaN
-
-dddiv841 divide  sNaN -Inf   ->  NaN  Invalid_operation
-dddiv842 divide  sNaN -1000  ->  NaN  Invalid_operation
-dddiv843 divide  sNaN -1     ->  NaN  Invalid_operation
-dddiv844 divide  sNaN -0     ->  NaN  Invalid_operation
-dddiv845 divide  sNaN  0     ->  NaN  Invalid_operation
-dddiv846 divide  sNaN  1     ->  NaN  Invalid_operation
-dddiv847 divide  sNaN  1000  ->  NaN  Invalid_operation
-dddiv848 divide  sNaN  NaN   ->  NaN  Invalid_operation
-dddiv849 divide  sNaN sNaN   ->  NaN  Invalid_operation
-dddiv850 divide  NaN  sNaN   ->  NaN  Invalid_operation
-dddiv851 divide -Inf  sNaN   ->  NaN  Invalid_operation
-dddiv852 divide -1000 sNaN   ->  NaN  Invalid_operation
-dddiv853 divide -1    sNaN   ->  NaN  Invalid_operation
-dddiv854 divide -0    sNaN   ->  NaN  Invalid_operation
-dddiv855 divide  0    sNaN   ->  NaN  Invalid_operation
-dddiv856 divide  1    sNaN   ->  NaN  Invalid_operation
-dddiv857 divide  1000 sNaN   ->  NaN  Invalid_operation
-dddiv858 divide  Inf  sNaN   ->  NaN  Invalid_operation
-dddiv859 divide  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dddiv861 divide  NaN9 -Inf   ->  NaN9
-dddiv862 divide  NaN8  1000  ->  NaN8
-dddiv863 divide  NaN7  Inf   ->  NaN7
-dddiv864 divide  NaN6  NaN5  ->  NaN6
-dddiv865 divide -Inf   NaN4  ->  NaN4
-dddiv866 divide -1000  NaN3  ->  NaN3
-dddiv867 divide  Inf   NaN2  ->  NaN2
-
-dddiv871 divide  sNaN99 -Inf    ->  NaN99 Invalid_operation
-dddiv872 divide  sNaN98 -1      ->  NaN98 Invalid_operation
-dddiv873 divide  sNaN97  NaN    ->  NaN97 Invalid_operation
-dddiv874 divide  sNaN96 sNaN94  ->  NaN96 Invalid_operation
-dddiv875 divide  NaN95  sNaN93  ->  NaN93 Invalid_operation
-dddiv876 divide -Inf    sNaN92  ->  NaN92 Invalid_operation
-dddiv877 divide  0      sNaN91  ->  NaN91 Invalid_operation
-dddiv878 divide  Inf    sNaN90  ->  NaN90 Invalid_operation
-dddiv879 divide  NaN    sNaN89  ->  NaN89 Invalid_operation
-
-dddiv881 divide  -NaN9  -Inf   ->  -NaN9
-dddiv882 divide  -NaN8   1000  ->  -NaN8
-dddiv883 divide  -NaN7   Inf   ->  -NaN7
-dddiv884 divide  -NaN6  -NaN5  ->  -NaN6
-dddiv885 divide  -Inf   -NaN4  ->  -NaN4
-dddiv886 divide  -1000  -NaN3  ->  -NaN3
-dddiv887 divide   Inf   -NaN2  ->  -NaN2
-
-dddiv891 divide -sNaN99 -Inf    -> -NaN99 Invalid_operation
-dddiv892 divide -sNaN98 -1      -> -NaN98 Invalid_operation
-dddiv893 divide -sNaN97  NaN    -> -NaN97 Invalid_operation
-dddiv894 divide -sNaN96 -sNaN94 -> -NaN96 Invalid_operation
-dddiv895 divide -NaN95  -sNaN93 -> -NaN93 Invalid_operation
-dddiv896 divide -Inf    -sNaN92 -> -NaN92 Invalid_operation
-dddiv897 divide  0      -sNaN91 -> -NaN91 Invalid_operation
-dddiv898 divide  Inf    -sNaN90 -> -NaN90 Invalid_operation
-dddiv899 divide -NaN    -sNaN89 -> -NaN89 Invalid_operation
-
--- Various flavours of divide by 0
-dddiv901 divide    0       0   ->  NaN Division_undefined
-dddiv902 divide    0.0E5   0   ->  NaN Division_undefined
-dddiv903 divide    0.000   0   ->  NaN Division_undefined
-dddiv904 divide    0.0001  0   ->  Infinity Division_by_zero
-dddiv905 divide    0.01    0   ->  Infinity Division_by_zero
-dddiv906 divide    0.1     0   ->  Infinity Division_by_zero
-dddiv907 divide    1       0   ->  Infinity Division_by_zero
-dddiv908 divide    1       0.0 ->  Infinity Division_by_zero
-dddiv909 divide   10       0.0 ->  Infinity Division_by_zero
-dddiv910 divide   1E+100   0.0 ->  Infinity Division_by_zero
-dddiv911 divide   1E+100   0   ->  Infinity Division_by_zero
-
-dddiv921 divide   -0.0001  0   -> -Infinity Division_by_zero
-dddiv922 divide   -0.01    0   -> -Infinity Division_by_zero
-dddiv923 divide   -0.1     0   -> -Infinity Division_by_zero
-dddiv924 divide   -1       0   -> -Infinity Division_by_zero
-dddiv925 divide   -1       0.0 -> -Infinity Division_by_zero
-dddiv926 divide  -10       0.0 -> -Infinity Division_by_zero
-dddiv927 divide  -1E+100   0.0 -> -Infinity Division_by_zero
-dddiv928 divide  -1E+100   0   -> -Infinity Division_by_zero
-
-dddiv931 divide    0.0001 -0   -> -Infinity Division_by_zero
-dddiv932 divide    0.01   -0   -> -Infinity Division_by_zero
-dddiv933 divide    0.1    -0   -> -Infinity Division_by_zero
-dddiv934 divide    1      -0   -> -Infinity Division_by_zero
-dddiv935 divide    1      -0.0 -> -Infinity Division_by_zero
-dddiv936 divide   10      -0.0 -> -Infinity Division_by_zero
-dddiv937 divide   1E+100  -0.0 -> -Infinity Division_by_zero
-dddiv938 divide   1E+100  -0   -> -Infinity Division_by_zero
-
-dddiv941 divide   -0.0001 -0   ->  Infinity Division_by_zero
-dddiv942 divide   -0.01   -0   ->  Infinity Division_by_zero
-dddiv943 divide   -0.1    -0   ->  Infinity Division_by_zero
-dddiv944 divide   -1      -0   ->  Infinity Division_by_zero
-dddiv945 divide   -1      -0.0 ->  Infinity Division_by_zero
-dddiv946 divide  -10      -0.0 ->  Infinity Division_by_zero
-dddiv947 divide  -1E+100  -0.0 ->  Infinity Division_by_zero
-dddiv948 divide  -1E+100  -0   ->  Infinity Division_by_zero
-
--- Examples from SQL proposal (Krishna Kulkarni)
-dddiv1021  divide 1E0          1E0 -> 1
-dddiv1022  divide 1E0          2E0 -> 0.5
-dddiv1023  divide 1E0          3E0 -> 0.3333333333333333 Inexact Rounded
-dddiv1024  divide 100E-2   1000E-3 -> 1
-dddiv1025  divide 24E-1        2E0 -> 1.2
-dddiv1026  divide 2400E-3      2E0 -> 1.200
-dddiv1027  divide 5E0          2E0 -> 2.5
-dddiv1028  divide 5E0        20E-1 -> 2.5
-dddiv1029  divide 5E0      2000E-3 -> 2.5
-dddiv1030  divide 5E0         2E-1 -> 25
-dddiv1031  divide 5E0        20E-2 -> 25
-dddiv1032  divide 480E-2       3E0 -> 1.60
-dddiv1033  divide 47E-1        2E0 -> 2.35
-
--- ECMAScript bad examples
-rounding:    half_down
-dddiv1040  divide 5 9  -> 0.5555555555555556 Inexact Rounded
-rounding:    half_even
-dddiv1041  divide 6 11 -> 0.5454545454545455 Inexact Rounded
-
--- overflow and underflow tests .. note subnormal results
--- signs
-dddiv1051 divide  1e+277  1e-311 ->  Infinity Overflow Inexact Rounded
-dddiv1052 divide  1e+277 -1e-311 -> -Infinity Overflow Inexact Rounded
-dddiv1053 divide -1e+277  1e-311 -> -Infinity Overflow Inexact Rounded
-dddiv1054 divide -1e+277 -1e-311 ->  Infinity Overflow Inexact Rounded
-dddiv1055 divide  1e-277  1e+311 ->  0E-398 Underflow Subnormal Inexact Rounded Clamped
-dddiv1056 divide  1e-277 -1e+311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
-dddiv1057 divide -1e-277  1e+311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
-dddiv1058 divide -1e-277 -1e+311 ->  0E-398 Underflow Subnormal Inexact Rounded Clamped
-
--- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
-dddiv1060 divide 1e-291 1e+101 -> 1E-392 Subnormal
-dddiv1061 divide 1e-291 1e+102 -> 1E-393 Subnormal
-dddiv1062 divide 1e-291 1e+103 -> 1E-394 Subnormal
-dddiv1063 divide 1e-291 1e+104 -> 1E-395 Subnormal
-dddiv1064 divide 1e-291 1e+105 -> 1E-396 Subnormal
-dddiv1065 divide 1e-291 1e+106 -> 1E-397 Subnormal
-dddiv1066 divide 1e-291 1e+107 -> 1E-398 Subnormal
-dddiv1067 divide 1e-291 1e+108 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-dddiv1068 divide 1e-291 1e+109 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-dddiv1069 divide 1e-291 1e+110 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
--- [no equivalent of 'subnormal' for overflow]
-dddiv1070 divide 1e+60 1e-321 -> 1.000000000000E+381  Clamped
-dddiv1071 divide 1e+60 1e-322 -> 1.0000000000000E+382  Clamped
-dddiv1072 divide 1e+60 1e-323 -> 1.00000000000000E+383  Clamped
-dddiv1073 divide 1e+60 1e-324 -> 1.000000000000000E+384  Clamped
-dddiv1074 divide 1e+60 1e-325 -> Infinity Overflow Inexact Rounded
-dddiv1075 divide 1e+60 1e-326 -> Infinity Overflow Inexact Rounded
-dddiv1076 divide 1e+60 1e-327 -> Infinity Overflow Inexact Rounded
-dddiv1077 divide 1e+60 1e-328 -> Infinity Overflow Inexact Rounded
-dddiv1078 divide 1e+60 1e-329 -> Infinity Overflow Inexact Rounded
-dddiv1079 divide 1e+60 1e-330 -> Infinity Overflow Inexact Rounded
-
-dddiv1101 divide  1.0000E-394  1     -> 1.0000E-394 Subnormal
-dddiv1102 divide  1.000E-394   1e+1  -> 1.000E-395  Subnormal
-dddiv1103 divide  1.00E-394    1e+2  -> 1.00E-396   Subnormal
-dddiv1104 divide  1.0E-394     1e+3  -> 1.0E-397    Subnormal
-dddiv1105 divide  1.0E-394     1e+4  -> 1E-398     Subnormal Rounded
-dddiv1106 divide  1.3E-394     1e+4  -> 1E-398     Underflow Subnormal Inexact Rounded
-dddiv1107 divide  1.5E-394     1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded
-dddiv1108 divide  1.7E-394     1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded
-dddiv1109 divide  2.3E-394     1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded
-dddiv1110 divide  2.5E-394     1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded
-dddiv1111 divide  2.7E-394     1e+4  -> 3E-398     Underflow Subnormal Inexact Rounded
-dddiv1112 divide  1.49E-394    1e+4  -> 1E-398     Underflow Subnormal Inexact Rounded
-dddiv1113 divide  1.50E-394    1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded
-dddiv1114 divide  1.51E-394    1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded
-dddiv1115 divide  2.49E-394    1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded
-dddiv1116 divide  2.50E-394    1e+4  -> 2E-398     Underflow Subnormal Inexact Rounded
-dddiv1117 divide  2.51E-394    1e+4  -> 3E-398     Underflow Subnormal Inexact Rounded
-
-dddiv1118 divide  1E-394       1e+4  -> 1E-398     Subnormal
-dddiv1119 divide  3E-394       1e+5  -> 0E-398     Underflow Subnormal Inexact Rounded Clamped
-dddiv1120 divide  5E-394       1e+5  -> 0E-398     Underflow Subnormal Inexact Rounded Clamped
-dddiv1121 divide  7E-394       1e+5  -> 1E-398     Underflow Subnormal Inexact Rounded
-dddiv1122 divide  9E-394       1e+5  -> 1E-398     Underflow Subnormal Inexact Rounded
-dddiv1123 divide  9.9E-394     1e+5  -> 1E-398     Underflow Subnormal Inexact Rounded
-
-dddiv1124 divide  1E-394      -1e+4  -> -1E-398    Subnormal
-dddiv1125 divide  3E-394      -1e+5  -> -0E-398    Underflow Subnormal Inexact Rounded Clamped
-dddiv1126 divide -5E-394       1e+5  -> -0E-398    Underflow Subnormal Inexact Rounded Clamped
-dddiv1127 divide  7E-394      -1e+5  -> -1E-398    Underflow Subnormal Inexact Rounded
-dddiv1128 divide -9E-394       1e+5  -> -1E-398    Underflow Subnormal Inexact Rounded
-dddiv1129 divide  9.9E-394    -1e+5  -> -1E-398    Underflow Subnormal Inexact Rounded
-dddiv1130 divide  3.0E-394    -1e+5  -> -0E-398    Underflow Subnormal Inexact Rounded Clamped
-
-dddiv1131 divide  1.0E-199     1e+200 -> 0E-398    Underflow Subnormal Inexact Rounded Clamped
-dddiv1132 divide  1.0E-199     1e+199 -> 1E-398    Subnormal Rounded
-dddiv1133 divide  1.0E-199     1e+198 -> 1.0E-397  Subnormal
-dddiv1134 divide  2.0E-199     2e+198 -> 1.0E-397  Subnormal
-dddiv1135 divide  4.0E-199     4e+198 -> 1.0E-397  Subnormal
-dddiv1136 divide 10.0E-199    10e+198 -> 1.0E-397  Subnormal
-dddiv1137 divide 30.0E-199    30e+198 -> 1.0E-397  Subnormal
-
--- randoms
-dddiv2010  divide  -3.303226714900711E-35   8.796578842713183E+73   ->  -3.755126594058783E-109 Inexact Rounded
-dddiv2011  divide   933153327821073.6       68782181090246.25       ->   13.56678885475763 Inexact Rounded
-dddiv2012  divide   5.04752436057906E-72   -8.179481771238642E+64   ->  -6.170958627632835E-137 Inexact Rounded
-dddiv2013  divide  -3707613309582318        3394911196503.048       ->  -1092.109070010836 Inexact Rounded
-dddiv2014  divide   99689.0555190461       -4.735208553891464       ->  -21052.72753765411 Inexact Rounded
-dddiv2015  divide  -1447915775613329        269750797.8184875       ->  -5367605.164925653 Inexact Rounded
-dddiv2016  divide  -9.394881304225258E-19  -830585.0252671636       ->   1.131116143251358E-24 Inexact Rounded
-dddiv2017  divide  -1.056283432738934       88.58754555124013       ->  -0.01192361100159352 Inexact Rounded
-dddiv2018  divide   5763220933343.081       689089567025052.1       ->   0.008363529516524456 Inexact Rounded
-dddiv2019  divide   873819.122103216        9.740612494523300E-49   ->   8.970884763093948E+53 Inexact Rounded
-dddiv2020  divide   8022914.838533576       6178.566801742713       ->   1298.507420243583 Inexact Rounded
-dddiv2021  divide   203982.7605650363      -2158.283639053435       ->  -94.51156320422168 Inexact Rounded
-dddiv2022  divide   803.6310547013030       7101143795399.238       ->   1.131692411611166E-10 Inexact Rounded
-dddiv2023  divide   9.251697842123399E-82  -1.342350220606119E-7    ->  -6.892163982321936E-75 Inexact Rounded
-dddiv2024  divide  -1.980600645637992E-53  -5.474262753214457E+77   ->   3.618022617703168E-131 Inexact Rounded
-dddiv2025  divide  -210.0322996351690      -8.580951835872843E+80   ->   2.447657365434971E-79 Inexact Rounded
-dddiv2026  divide  -1.821980314020370E+85  -3.018915267138165       ->   6.035215144503042E+84 Inexact Rounded
-dddiv2027  divide  -772264503601.1047       5.158258271408988E-86   ->  -1.497141986630614E+97 Inexact Rounded
-dddiv2028  divide  -767.0532415847106       2.700027228028939E-59   ->  -2.840909282772941E+61 Inexact Rounded
-dddiv2029  divide   496724.8548250093       7.32700588163100E+66    ->   6.779370220929013E-62 Inexact Rounded
-dddiv2030  divide  -304232651447703.9      -108.9730808657440       ->   2791814721862.565 Inexact Rounded
-dddiv2031  divide  -7.233817192699405E+42  -5711302004.149411       ->   1.266579352211430E+33 Inexact Rounded
-dddiv2032  divide  -9.999221444912745E+96   4010569406446197        ->  -2.493217404202250E+81 Inexact Rounded
-dddiv2033  divide  -1837272.061937622       8.356322838066762       ->  -219866.0939196882 Inexact Rounded
-dddiv2034  divide   2168.517555606529       209.1910258615061       ->   10.36620737756784 Inexact Rounded
-dddiv2035  divide  -1.884389790576371E+88   2.95181953870583E+20    ->  -6.383824505079828E+67 Inexact Rounded
-dddiv2036  divide   732263.6037438196       961222.3634446889       ->   0.7618045850698269 Inexact Rounded
-dddiv2037  divide  -813461419.0348336       5.376293753809143E+84   ->  -1.513052404285927E-76 Inexact Rounded
-dddiv2038  divide  -45562133508108.50      -9.776843494690107E+51   ->   4.660208945029519E-39 Inexact Rounded
-dddiv2039  divide  -6.489393172441016E+80  -9101965.097852113       ->   7.129661674897421E+73 Inexact Rounded
-dddiv2040  divide   3.694576237117349E+93   6683512.012622003       ->   5.527896456443912E+86 Inexact Rounded
-dddiv2041  divide  -2.252877726403272E+19  -7451913256.181367       ->   3023220546.125531 Inexact Rounded
-dddiv2042  divide   518303.1989111842       50.01587020474133       ->   10362.77479107123 Inexact Rounded
-dddiv2043  divide   2.902087881880103E+24   33.32400992305702       ->   8.708699488989578E+22 Inexact Rounded
-dddiv2044  divide   549619.4559510557       1660824845196338        ->   3.309316196351104E-10 Inexact Rounded
-dddiv2045  divide  -6775670774684043        8292152023.077262       ->  -817118.4941891062 Inexact Rounded
-dddiv2046  divide  -77.50923921524079      -5.636882655425815E+74   ->   1.375037302588405E-73 Inexact Rounded
-dddiv2047  divide  -2.984889459605149E-10  -88106156784122.99       ->   3.387833005721384E-24 Inexact Rounded
-dddiv2048  divide   0.949517293997085       44767115.96450998       ->   2.121015110175589E-8 Inexact Rounded
-dddiv2049  divide  -2760937211.084521      -1087015876975408        ->   0.000002539923537057024 Inexact Rounded
-dddiv2050  divide   28438351.85030536      -4.209397904088624E-47   ->  -6.755919135770688E+53 Inexact Rounded
-dddiv2051  divide  -85562731.6820956       -7.166045442530185E+45   ->   1.194002080621542E-38 Inexact Rounded
-dddiv2052  divide   2533802852165.25        7154.119606235955       ->   354173957.3317501 Inexact Rounded
-dddiv2053  divide  -8858831346851.474       97.59734208801716       ->  -90769186509.83577 Inexact Rounded
-dddiv2054  divide   176783629801387.5       840073263.3109817       ->   210438.3480848206 Inexact Rounded
-dddiv2055  divide  -493506471796175.6       79733894790822.03       ->  -6.189418854940746 Inexact Rounded
-dddiv2056  divide   790.1682542103445       829.9449370367435       ->   0.9520731062371214 Inexact Rounded
-dddiv2057  divide  -8920459838.583164      -4767.889187899214       ->   1870945.294035581 Inexact Rounded
-dddiv2058  divide   53536687164422.1        53137.5007032689        ->   1007512330.385698 Inexact Rounded
-dddiv2059  divide   4.051532311146561E-74  -2.343089768972261E+94   ->  -1.729140882606332E-168 Inexact Rounded
-dddiv2060  divide  -14847758778636.88       3.062543516383807E-43   ->  -4.848178874587497E+55 Inexact Rounded
-
--- Division probably has pre-rounding, so need to test rounding
--- explicitly rather than assume included through other tests;
--- tests include simple rounding and also the tricky cases of sticky
--- bits following two zeros
---
---   1/99999 gives 0.0000100001000010000100001000010000100001
---                       1234567890123456
---
---   1/999999 gives 0.000001000001000001000001000001000001000001
---                         1234567890123456
-
-rounding: ceiling
-dddiv3001  divide  1     3    ->  0.3333333333333334 Inexact Rounded
-dddiv3002  divide  2     3    ->  0.6666666666666667 Inexact Rounded
-dddiv3003  divide  1 99999    ->  0.00001000010000100002  Inexact Rounded
-dddiv3004  divide  1 999999   ->  0.000001000001000001001 Inexact Rounded
-
-rounding: floor
-dddiv3011  divide  1     3    ->  0.3333333333333333 Inexact Rounded
-dddiv3012  divide  2     3    ->  0.6666666666666666 Inexact Rounded
-dddiv3013  divide  1 99999    ->  0.00001000010000100001  Inexact Rounded
-dddiv3014  divide  1 999999   ->  0.000001000001000001000 Inexact Rounded
-
-rounding: up
-dddiv3021  divide  1     3    ->  0.3333333333333334 Inexact Rounded
-dddiv3022  divide  2     3    ->  0.6666666666666667 Inexact Rounded
-dddiv3023  divide  1 99999    ->  0.00001000010000100002  Inexact Rounded
-dddiv3024  divide  1 999999   ->  0.000001000001000001001 Inexact Rounded
-
-rounding: down
-dddiv3031  divide  1     3    ->  0.3333333333333333 Inexact Rounded
-dddiv3032  divide  2     3    ->  0.6666666666666666 Inexact Rounded
-dddiv3033  divide  1 99999    ->  0.00001000010000100001  Inexact Rounded
-dddiv3034  divide  1 999999   ->  0.000001000001000001000 Inexact Rounded
-
-rounding: half_up
-dddiv3041  divide  1     3    ->  0.3333333333333333 Inexact Rounded
-dddiv3042  divide  2     3    ->  0.6666666666666667 Inexact Rounded
-dddiv3043  divide  1 99999    ->  0.00001000010000100001  Inexact Rounded
-dddiv3044  divide  1 999999   ->  0.000001000001000001000 Inexact Rounded
-
-rounding: half_down
-dddiv3051  divide  1     3    ->  0.3333333333333333 Inexact Rounded
-dddiv3052  divide  2     3    ->  0.6666666666666667 Inexact Rounded
-dddiv3053  divide  1 99999    ->  0.00001000010000100001  Inexact Rounded
-dddiv3054  divide  1 999999   ->  0.000001000001000001000 Inexact Rounded
-
-rounding: half_even
-dddiv3061  divide  1     3    ->  0.3333333333333333 Inexact Rounded
-dddiv3062  divide  2     3    ->  0.6666666666666667 Inexact Rounded
-dddiv3063  divide  1 99999    ->  0.00001000010000100001  Inexact Rounded
-dddiv3064  divide  1 999999   ->  0.000001000001000001000 Inexact Rounded
-
-rounding: 05up
-dddiv3071  divide  1     3    ->  0.3333333333333333 Inexact Rounded
-dddiv3072  divide  2     3    ->  0.6666666666666666 Inexact Rounded
-dddiv3073  divide  1 99999    ->  0.00001000010000100001  Inexact Rounded
-dddiv3074  divide  1 999999   ->  0.000001000001000001001 Inexact Rounded
-
--- random divide tests with result near 1
-rounding: half_even
-dddiv4001 divide  3195385192916917   3195385192946695  ->  0.9999999999906809  Inexact Rounded
-dddiv4002 divide  1393723067526993   1393723067519475  ->  1.000000000005394  Inexact Rounded
-dddiv4003 divide   759985543702302    759985543674015  ->  1.000000000037220  Inexact Rounded
-dddiv4004 divide  9579158456027302   9579158456036864  ->  0.9999999999990018  Inexact Rounded
-dddiv4005 divide  7079398299143569   7079398299156904  ->  0.9999999999981164  Inexact Rounded
-dddiv4006 divide  6636169255366598   6636169255336386  ->  1.000000000004553  Inexact Rounded
-dddiv4007 divide  6964813971340090   6964813971321554  ->  1.000000000002661  Inexact Rounded
-dddiv4008 divide  4182275225480784   4182275225454009  ->  1.000000000006402  Inexact Rounded
-dddiv4009 divide  9228325124938029   9228325124918730  ->  1.000000000002091  Inexact Rounded
-dddiv4010 divide  3428346338630192   3428346338609843  ->  1.000000000005936  Inexact Rounded
-dddiv4011 divide  2143511550722893   2143511550751754  ->  0.9999999999865356  Inexact Rounded
-dddiv4012 divide  1672732924396785   1672732924401811  ->  0.9999999999969953  Inexact Rounded
-dddiv4013 divide  4190714611948216   4190714611948664  ->  0.9999999999998931  Inexact Rounded
-dddiv4014 divide  3942254800848877   3942254800814556  ->  1.000000000008706  Inexact Rounded
-dddiv4015 divide  2854459826952334   2854459826960762  ->  0.9999999999970474  Inexact Rounded
-dddiv4016 divide  2853258953664731   2853258953684471  ->  0.9999999999930816  Inexact Rounded
-dddiv4017 divide  9453512638125978   9453512638146425  ->  0.9999999999978371  Inexact Rounded
-dddiv4018 divide   339476633940369    339476633912887  ->  1.000000000080954  Inexact Rounded
-dddiv4019 divide  4542181492688467   4542181492697735  ->  0.9999999999979596  Inexact Rounded
-dddiv4020 divide  7312600192399197   7312600192395424  ->  1.000000000000516  Inexact Rounded
-dddiv4021 divide  1811674985570111   1811674985603935  ->  0.9999999999813300  Inexact Rounded
-dddiv4022 divide  1706462639003481   1706462639017740  ->  0.9999999999916441  Inexact Rounded
-dddiv4023 divide  6697052654940368   6697052654934110  ->  1.000000000000934  Inexact Rounded
-dddiv4024 divide  5015283664277539   5015283664310719  ->  0.9999999999933842  Inexact Rounded
-dddiv4025 divide  2359501561537464   2359501561502464  ->  1.000000000014834  Inexact Rounded
-dddiv4026 divide  2669850227909157   2669850227901548  ->  1.000000000002850  Inexact Rounded
-dddiv4027 divide  9329725546974648   9329725547002445  ->  0.9999999999970206  Inexact Rounded
-dddiv4028 divide  3228562867071248   3228562867106206  ->  0.9999999999891723  Inexact Rounded
-dddiv4029 divide  4862226644921175   4862226644909380  ->  1.000000000002426  Inexact Rounded
-dddiv4030 divide  1022267997054529   1022267997071329  ->  0.9999999999835660  Inexact Rounded
-dddiv4031 divide  1048777482023719   1048777482000948  ->  1.000000000021712  Inexact Rounded
-dddiv4032 divide  9980113777337098   9980113777330539  ->  1.000000000000657  Inexact Rounded
-dddiv4033 divide  7506839167963908   7506839167942901  ->  1.000000000002798  Inexact Rounded
-dddiv4034 divide   231119751977860    231119751962453  ->  1.000000000066662  Inexact Rounded
-dddiv4035 divide  4034903664762962   4034903664795526  ->  0.9999999999919294  Inexact Rounded
-dddiv4036 divide  5700122152274696   5700122152251386  ->  1.000000000004089  Inexact Rounded
-dddiv4037 divide  6869599590293110   6869599590293495  ->  0.9999999999999440  Inexact Rounded
-dddiv4038 divide  5576281960092797   5576281960105579  ->  0.9999999999977078  Inexact Rounded
-dddiv4039 divide  2304844888381318   2304844888353073  ->  1.000000000012255  Inexact Rounded
-dddiv4040 divide  3265933651656452   3265933651682779  ->  0.9999999999919389  Inexact Rounded
-dddiv4041 divide  5235714985079914   5235714985066131  ->  1.000000000002632  Inexact Rounded
-dddiv4042 divide  5578481572827551   5578481572822945  ->  1.000000000000826  Inexact Rounded
-dddiv4043 divide  4909616081396134   4909616081373076  ->  1.000000000004696  Inexact Rounded
-dddiv4044 divide   636447224349537    636447224338757  ->  1.000000000016938  Inexact Rounded
-dddiv4045 divide  1539373428396640   1539373428364727  ->  1.000000000020731  Inexact Rounded
-dddiv4046 divide  2028786707377893   2028786707378866  ->  0.9999999999995204  Inexact Rounded
-dddiv4047 divide   137643260486222    137643260487419  ->  0.9999999999913036  Inexact Rounded
-dddiv4048 divide   247451519746765    247451519752267  ->  0.9999999999777653  Inexact Rounded
-dddiv4049 divide  7877858475022054   7877858474999794  ->  1.000000000002826  Inexact Rounded
-dddiv4050 divide  7333242694766258   7333242694744628  ->  1.000000000002950  Inexact Rounded
-dddiv4051 divide   124051503698592    124051503699397  ->  0.9999999999935108  Inexact Rounded
-dddiv4052 divide  8944737432385188   8944737432406860  ->  0.9999999999975771  Inexact Rounded
-dddiv4053 divide  9883948923406874   9883948923424843  ->  0.9999999999981820  Inexact Rounded
-dddiv4054 divide  6829178741654284   6829178741671973  ->  0.9999999999974098  Inexact Rounded
-dddiv4055 divide  7342752479768122   7342752479793385  ->  0.9999999999965595  Inexact Rounded
-dddiv4056 divide  8066426579008783   8066426578977563  ->  1.000000000003870  Inexact Rounded
-dddiv4057 divide  8992775071383295   8992775071352712  ->  1.000000000003401  Inexact Rounded
-dddiv4058 divide  5485011755545641   5485011755543611  ->  1.000000000000370  Inexact Rounded
-dddiv4059 divide  5779983054353918   5779983054365300  ->  0.9999999999980308  Inexact Rounded
-dddiv4060 divide  9502265102713774   9502265102735208  ->  0.9999999999977443  Inexact Rounded
-dddiv4061 divide  2109558399130981   2109558399116281  ->  1.000000000006968  Inexact Rounded
-dddiv4062 divide  5296182636350471   5296182636351521  ->  0.9999999999998017  Inexact Rounded
-dddiv4063 divide  1440019225591883   1440019225601844  ->  0.9999999999930827  Inexact Rounded
-dddiv4064 divide  8182110791881341   8182110791847174  ->  1.000000000004176  Inexact Rounded
-dddiv4065 divide   489098235512060    489098235534516  ->  0.9999999999540869  Inexact Rounded
-dddiv4066 divide  6475687084782038   6475687084756089  ->  1.000000000004007  Inexact Rounded
-dddiv4067 divide  8094348555736948   8094348555759236  ->  0.9999999999972465  Inexact Rounded
-dddiv4068 divide  1982766816291543   1982766816309463  ->  0.9999999999909621  Inexact Rounded
-dddiv4069 divide  9277314300113251   9277314300084467  ->  1.000000000003103  Inexact Rounded
-dddiv4070 divide  4335532959318934   4335532959293167  ->  1.000000000005943  Inexact Rounded
-dddiv4071 divide  7767113032981348   7767113032968132  ->  1.000000000001702  Inexact Rounded
-dddiv4072 divide  1578548053342868   1578548053370448  ->  0.9999999999825282  Inexact Rounded
-dddiv4073 divide  3790420686666898   3790420686636315  ->  1.000000000008068  Inexact Rounded
-dddiv4074 divide   871682421955147    871682421976441  ->  0.9999999999755714  Inexact Rounded
-dddiv4075 divide   744141054479940    744141054512329  ->  0.9999999999564746  Inexact Rounded
-dddiv4076 divide  8956824183670735   8956824183641741  ->  1.000000000003237  Inexact Rounded
-dddiv4077 divide  8337291694485682   8337291694451193  ->  1.000000000004137  Inexact Rounded
-dddiv4078 divide  4107775944683669   4107775944657097  ->  1.000000000006469  Inexact Rounded
-dddiv4079 divide  8691900057964648   8691900057997555  ->  0.9999999999962141  Inexact Rounded
-dddiv4080 divide  2229528520536462   2229528520502337  ->  1.000000000015306  Inexact Rounded
-dddiv4081 divide   398442083774322    398442083746273  ->  1.000000000070397  Inexact Rounded
-dddiv4082 divide  5319819776808759   5319819776838313  ->  0.9999999999944445  Inexact Rounded
-dddiv4083 divide  7710491299066855   7710491299041858  ->  1.000000000003242  Inexact Rounded
-dddiv4084 divide  9083231296087266   9083231296058160  ->  1.000000000003204  Inexact Rounded
-dddiv4085 divide  3566873574904559   3566873574890328  ->  1.000000000003990  Inexact Rounded
-dddiv4086 divide   596343290550525    596343290555614  ->  0.9999999999914663  Inexact Rounded
-dddiv4087 divide   278227925093192    278227925068104  ->  1.000000000090171  Inexact Rounded
-dddiv4088 divide  3292902958490649   3292902958519881  ->  0.9999999999911227  Inexact Rounded
-dddiv4089 divide  5521871364245881   5521871364229536  ->  1.000000000002960  Inexact Rounded
-dddiv4090 divide  2406505602883617   2406505602857997  ->  1.000000000010646  Inexact Rounded
-dddiv4091 divide  7741146984869208   7741146984867255  ->  1.000000000000252  Inexact Rounded
-dddiv4092 divide  4576041832414909   4576041832405102  ->  1.000000000002143  Inexact Rounded
-dddiv4093 divide  9183756982878057   9183756982901934  ->  0.9999999999974001  Inexact Rounded
-dddiv4094 divide  6215736513855159   6215736513870342  ->  0.9999999999975573  Inexact Rounded
-dddiv4095 divide   248554968534533    248554968551417  ->  0.9999999999320714  Inexact Rounded
-dddiv4096 divide   376314165668645    376314165659755  ->  1.000000000023624  Inexact Rounded
-dddiv4097 divide  5513569249809718   5513569249808906  ->  1.000000000000147  Inexact Rounded
-dddiv4098 divide  3367992242167904   3367992242156228  ->  1.000000000003467  Inexact Rounded
-dddiv4099 divide  6134869538966967   6134869538985986  ->  0.9999999999968999  Inexact Rounded
-
--- Null tests
-dddiv9998 divide 10  # -> NaN Invalid_operation
-dddiv9999 divide  # 10 -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddDivideInt.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddDivideInt.decTest
deleted file mode 100644
index 1555b42..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddDivideInt.decTest
+++ /dev/null
@@ -1,449 +0,0 @@
-------------------------------------------------------------------------
--- ddDivideInt.decTest -- decDouble integer division                  --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
-dddvi001 divideint  1     1    ->  1
-dddvi002 divideint  2     1    ->  2
-dddvi003 divideint  1     2    ->  0
-dddvi004 divideint  2     2    ->  1
-dddvi005 divideint  0     1    ->  0
-dddvi006 divideint  0     2    ->  0
-dddvi007 divideint  1     3    ->  0
-dddvi008 divideint  2     3    ->  0
-dddvi009 divideint  3     3    ->  1
-
-dddvi010 divideint  2.4   1    ->  2
-dddvi011 divideint  2.4   -1   ->  -2
-dddvi012 divideint  -2.4  1    ->  -2
-dddvi013 divideint  -2.4  -1   ->  2
-dddvi014 divideint  2.40  1    ->  2
-dddvi015 divideint  2.400 1    ->  2
-dddvi016 divideint  2.4   2    ->  1
-dddvi017 divideint  2.400 2    ->  1
-dddvi018 divideint  2.    2    ->  1
-dddvi019 divideint  20    20   ->  1
-
-dddvi020 divideint  187   187  ->  1
-dddvi021 divideint  5     2    ->  2
-dddvi022 divideint  5     2.0    ->  2
-dddvi023 divideint  5     2.000  ->  2
-dddvi024 divideint  5     0.200  ->  25
-dddvi025 divideint  5     0.200  ->  25
-
-dddvi030 divideint  1     2      ->  0
-dddvi031 divideint  1     4      ->  0
-dddvi032 divideint  1     8      ->  0
-dddvi033 divideint  1     16     ->  0
-dddvi034 divideint  1     32     ->  0
-dddvi035 divideint  1     64     ->  0
-dddvi040 divideint  1    -2      -> -0
-dddvi041 divideint  1    -4      -> -0
-dddvi042 divideint  1    -8      -> -0
-dddvi043 divideint  1    -16     -> -0
-dddvi044 divideint  1    -32     -> -0
-dddvi045 divideint  1    -64     -> -0
-dddvi050 divideint -1     2      -> -0
-dddvi051 divideint -1     4      -> -0
-dddvi052 divideint -1     8      -> -0
-dddvi053 divideint -1     16     -> -0
-dddvi054 divideint -1     32     -> -0
-dddvi055 divideint -1     64     -> -0
-dddvi060 divideint -1    -2      ->  0
-dddvi061 divideint -1    -4      ->  0
-dddvi062 divideint -1    -8      ->  0
-dddvi063 divideint -1    -16     ->  0
-dddvi064 divideint -1    -32     ->  0
-dddvi065 divideint -1    -64     ->  0
-
--- similar with powers of ten
-dddvi160 divideint  1     1         ->  1
-dddvi161 divideint  1     10        ->  0
-dddvi162 divideint  1     100       ->  0
-dddvi163 divideint  1     1000      ->  0
-dddvi164 divideint  1     10000     ->  0
-dddvi165 divideint  1     100000    ->  0
-dddvi166 divideint  1     1000000   ->  0
-dddvi167 divideint  1     10000000  ->  0
-dddvi168 divideint  1     100000000 ->  0
-dddvi170 divideint  1    -1         -> -1
-dddvi171 divideint  1    -10        -> -0
-dddvi172 divideint  1    -100       -> -0
-dddvi173 divideint  1    -1000      -> -0
-dddvi174 divideint  1    -10000     -> -0
-dddvi175 divideint  1    -100000    -> -0
-dddvi176 divideint  1    -1000000   -> -0
-dddvi177 divideint  1    -10000000  -> -0
-dddvi178 divideint  1    -100000000 -> -0
-dddvi180 divideint -1     1         -> -1
-dddvi181 divideint -1     10        -> -0
-dddvi182 divideint -1     100       -> -0
-dddvi183 divideint -1     1000      -> -0
-dddvi184 divideint -1     10000     -> -0
-dddvi185 divideint -1     100000    -> -0
-dddvi186 divideint -1     1000000   -> -0
-dddvi187 divideint -1     10000000  -> -0
-dddvi188 divideint -1     100000000 -> -0
-dddvi190 divideint -1    -1         ->  1
-dddvi191 divideint -1    -10        ->  0
-dddvi192 divideint -1    -100       ->  0
-dddvi193 divideint -1    -1000      ->  0
-dddvi194 divideint -1    -10000     ->  0
-dddvi195 divideint -1    -100000    ->  0
-dddvi196 divideint -1    -1000000   ->  0
-dddvi197 divideint -1    -10000000  ->  0
-dddvi198 divideint -1    -100000000 ->  0
-
--- some long operand (at p=9) cases
-dddvi070 divideint  999999999     1  ->  999999999
-dddvi071 divideint  999999999.4   1  ->  999999999
-dddvi072 divideint  999999999.5   1  ->  999999999
-dddvi073 divideint  999999999.9   1  ->  999999999
-dddvi074 divideint  999999999.999 1  ->  999999999
-
-dddvi090 divideint  0.            1    ->  0
-dddvi091 divideint  .0            1    ->  0
-dddvi092 divideint  0.00          1    ->  0
-dddvi093 divideint  0.00E+9       1    ->  0
-dddvi094 divideint  0.0000E-50    1    ->  0
-
-dddvi100 divideint  1  1   -> 1
-dddvi101 divideint  1  2   -> 0
-dddvi102 divideint  1  3   -> 0
-dddvi103 divideint  1  4   -> 0
-dddvi104 divideint  1  5   -> 0
-dddvi105 divideint  1  6   -> 0
-dddvi106 divideint  1  7   -> 0
-dddvi107 divideint  1  8   -> 0
-dddvi108 divideint  1  9   -> 0
-dddvi109 divideint  1  10  -> 0
-dddvi110 divideint  1  1   -> 1
-dddvi111 divideint  2  1   -> 2
-dddvi112 divideint  3  1   -> 3
-dddvi113 divideint  4  1   -> 4
-dddvi114 divideint  5  1   -> 5
-dddvi115 divideint  6  1   -> 6
-dddvi116 divideint  7  1   -> 7
-dddvi117 divideint  8  1   -> 8
-dddvi118 divideint  9  1   -> 9
-dddvi119 divideint  10 1   -> 10
-
--- from DiagBigDecimal
-dddvi131 divideint  101.3   1     ->  101
-dddvi132 divideint  101.0   1     ->  101
-dddvi133 divideint  101.3   3     ->  33
-dddvi134 divideint  101.0   3     ->  33
-dddvi135 divideint  2.4     1     ->  2
-dddvi136 divideint  2.400   1     ->  2
-dddvi137 divideint  18      18    ->  1
-dddvi138 divideint  1120    1000  ->  1
-dddvi139 divideint  2.4     2     ->  1
-dddvi140 divideint  2.400   2     ->  1
-dddvi141 divideint  0.5     2.000 ->  0
-dddvi142 divideint  8.005   7     ->  1
-dddvi143 divideint  5       2     ->  2
-dddvi144 divideint  0       2     ->  0
-dddvi145 divideint  0.00    2     ->  0
-
--- Others
-dddvi150 divideint  12345  4.999  ->  2469
-dddvi151 divideint  12345  4.99   ->  2473
-dddvi152 divideint  12345  4.9    ->  2519
-dddvi153 divideint  12345  5      ->  2469
-dddvi154 divideint  12345  5.1    ->  2420
-dddvi155 divideint  12345  5.01   ->  2464
-dddvi156 divideint  12345  5.001  ->  2468
-dddvi157 divideint    101  7.6    ->  13
-
--- Various flavours of divideint by 0
-dddvi201 divideint  0      0   -> NaN Division_undefined
-dddvi202 divideint  0.0E5  0   -> NaN Division_undefined
-dddvi203 divideint  0.000  0   -> NaN Division_undefined
-dddvi204 divideint  0.0001 0   -> Infinity Division_by_zero
-dddvi205 divideint  0.01   0   -> Infinity Division_by_zero
-dddvi206 divideint  0.1    0   -> Infinity Division_by_zero
-dddvi207 divideint  1      0   -> Infinity Division_by_zero
-dddvi208 divideint  1      0.0 -> Infinity Division_by_zero
-dddvi209 divideint 10      0.0 -> Infinity Division_by_zero
-dddvi210 divideint 1E+100  0.0 -> Infinity Division_by_zero
-dddvi211 divideint 1E+380  0   -> Infinity Division_by_zero
-dddvi214 divideint  -0.0001 0   -> -Infinity Division_by_zero
-dddvi215 divideint  -0.01   0   -> -Infinity Division_by_zero
-dddvi216 divideint  -0.1    0   -> -Infinity Division_by_zero
-dddvi217 divideint  -1      0   -> -Infinity Division_by_zero
-dddvi218 divideint  -1      0.0 -> -Infinity Division_by_zero
-dddvi219 divideint -10      0.0 -> -Infinity Division_by_zero
-dddvi220 divideint -1E+100  0.0 -> -Infinity Division_by_zero
-dddvi221 divideint -1E+380  0   -> -Infinity Division_by_zero
-
--- test some cases that are close to exponent overflow
-dddvi270 divideint 1 1e384          -> 0
-dddvi271 divideint 1 0.9e384        -> 0
-dddvi272 divideint 1 0.99e384       -> 0
-dddvi273 divideint 1 0.9999999999999999e384       -> 0
-dddvi274 divideint 9e384    1       -> NaN Division_impossible
-dddvi275 divideint 9.9e384  1       -> NaN Division_impossible
-dddvi276 divideint 9.99e384 1       -> NaN Division_impossible
-dddvi277 divideint 9.999999999999999e384 1 -> NaN Division_impossible
-
-dddvi280 divideint 0.1 9e-383       -> NaN Division_impossible
-dddvi281 divideint 0.1 99e-383      -> NaN Division_impossible
-dddvi282 divideint 0.1 999e-383     -> NaN Division_impossible
-dddvi283 divideint 0.1 9e-382       -> NaN Division_impossible
-dddvi284 divideint 0.1 99e-382      -> NaN Division_impossible
-
--- GD edge cases: lhs smaller than rhs but more digits
-dddvi301  divideint  0.9      2      ->  0
-dddvi302  divideint  0.9      2.0    ->  0
-dddvi303  divideint  0.9      2.1    ->  0
-dddvi304  divideint  0.9      2.00   ->  0
-dddvi305  divideint  0.9      2.01   ->  0
-dddvi306  divideint  0.12     1      ->  0
-dddvi307  divideint  0.12     1.0    ->  0
-dddvi308  divideint  0.12     1.00   ->  0
-dddvi309  divideint  0.12     1.0    ->  0
-dddvi310  divideint  0.12     1.00   ->  0
-dddvi311  divideint  0.12     2      ->  0
-dddvi312  divideint  0.12     2.0    ->  0
-dddvi313  divideint  0.12     2.1    ->  0
-dddvi314  divideint  0.12     2.00   ->  0
-dddvi315  divideint  0.12     2.01   ->  0
-
--- edge cases of impossible
-dddvi330  divideint  1234567890123456  10    ->  123456789012345
-dddvi331  divideint  1234567890123456   1    ->  1234567890123456
-dddvi332  divideint  1234567890123456   0.1  ->  NaN Division_impossible
-dddvi333  divideint  1234567890123456   0.01 ->  NaN Division_impossible
-
--- overflow and underflow tests [from divide]
-dddvi1051 divideint  1e+277  1e-311 ->  NaN Division_impossible
-dddvi1052 divideint  1e+277 -1e-311 ->  NaN Division_impossible
-dddvi1053 divideint -1e+277  1e-311 ->  NaN Division_impossible
-dddvi1054 divideint -1e+277 -1e-311 ->  NaN Division_impossible
-dddvi1055 divideint  1e-277  1e+311 ->  0
-dddvi1056 divideint  1e-277 -1e+311 -> -0
-dddvi1057 divideint -1e-277  1e+311 -> -0
-dddvi1058 divideint -1e-277 -1e+311 ->  0
-
--- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
-dddvi1060 divideint 1e-291 1e+101 -> 0
-dddvi1061 divideint 1e-291 1e+102 -> 0
-dddvi1062 divideint 1e-291 1e+103 -> 0
-dddvi1063 divideint 1e-291 1e+104 -> 0
-dddvi1064 divideint 1e-291 1e+105 -> 0
-dddvi1065 divideint 1e-291 1e+106 -> 0
-dddvi1066 divideint 1e-291 1e+107 -> 0
-dddvi1067 divideint 1e-291 1e+108 -> 0
-dddvi1068 divideint 1e-291 1e+109 -> 0
-dddvi1069 divideint 1e-291 1e+110 -> 0
-
-dddvi1101 divideint  1.0000E-394  1     -> 0
-dddvi1102 divideint  1.000E-394   1e+1  -> 0
-dddvi1103 divideint  1.00E-394    1e+2  -> 0
-
-dddvi1118 divideint  1E-394       1e+4  -> 0
-dddvi1119 divideint  3E-394      -1e+5  -> -0
-dddvi1120 divideint  5E-394       1e+5  -> 0
-
-dddvi1124 divideint  1E-394      -1e+4  -> -0
-dddvi1130 divideint  3.0E-394    -1e+5  -> -0
-
-dddvi1131 divideint  1.0E-199     1e+200 -> 0
-dddvi1132 divideint  1.0E-199     1e+199 -> 0
-dddvi1133 divideint  1.0E-199     1e+198 -> 0
-dddvi1134 divideint  2.0E-199     2e+198 -> 0
-dddvi1135 divideint  4.0E-199     4e+198 -> 0
-
--- long operand checks
-dddvi401 divideint 12345678000 100 -> 123456780
-dddvi402 divideint 1 12345678000   -> 0
-dddvi403 divideint 1234567800  10  -> 123456780
-dddvi404 divideint 1 1234567800    -> 0
-dddvi405 divideint 1234567890  10  -> 123456789
-dddvi406 divideint 1 1234567890    -> 0
-dddvi407 divideint 1234567891  10  -> 123456789
-dddvi408 divideint 1 1234567891    -> 0
-dddvi409 divideint 12345678901 100 -> 123456789
-dddvi410 divideint 1 12345678901   -> 0
-dddvi411 divideint 1234567896  10  -> 123456789
-dddvi412 divideint 1 1234567896    -> 0
-dddvi413 divideint 12345678948 100 -> 123456789
-dddvi414 divideint 12345678949 100 -> 123456789
-dddvi415 divideint 12345678950 100 -> 123456789
-dddvi416 divideint 12345678951 100 -> 123456789
-dddvi417 divideint 12345678999 100 -> 123456789
-dddvi441 divideint 12345678000 1 -> 12345678000
-dddvi442 divideint 1 12345678000 -> 0
-dddvi443 divideint 1234567800  1 -> 1234567800
-dddvi444 divideint 1 1234567800  -> 0
-dddvi445 divideint 1234567890  1 -> 1234567890
-dddvi446 divideint 1 1234567890  -> 0
-dddvi447 divideint 1234567891  1 -> 1234567891
-dddvi448 divideint 1 1234567891  -> 0
-dddvi449 divideint 12345678901 1 -> 12345678901
-dddvi450 divideint 1 12345678901 -> 0
-dddvi451 divideint 1234567896  1 -> 1234567896
-dddvi452 divideint 1 1234567896  -> 0
-
--- more zeros, etc.
-dddvi531 divideint 5.00 1E-3    -> 5000
-dddvi532 divideint 00.00 0.000  -> NaN Division_undefined
-dddvi533 divideint 00.00 0E-3   -> NaN Division_undefined
-dddvi534 divideint  0    -0     -> NaN Division_undefined
-dddvi535 divideint -0     0     -> NaN Division_undefined
-dddvi536 divideint -0    -0     -> NaN Division_undefined
-
-dddvi541 divideint  0    -1     -> -0
-dddvi542 divideint -0    -1     ->  0
-dddvi543 divideint  0     1     ->  0
-dddvi544 divideint -0     1     -> -0
-dddvi545 divideint -1     0     -> -Infinity Division_by_zero
-dddvi546 divideint -1    -0     ->  Infinity Division_by_zero
-dddvi547 divideint  1     0     ->  Infinity Division_by_zero
-dddvi548 divideint  1    -0     -> -Infinity Division_by_zero
-
-dddvi551 divideint  0.0  -1     -> -0
-dddvi552 divideint -0.0  -1     ->  0
-dddvi553 divideint  0.0   1     ->  0
-dddvi554 divideint -0.0   1     -> -0
-dddvi555 divideint -1.0   0     -> -Infinity Division_by_zero
-dddvi556 divideint -1.0  -0     ->  Infinity Division_by_zero
-dddvi557 divideint  1.0   0     ->  Infinity Division_by_zero
-dddvi558 divideint  1.0  -0     -> -Infinity Division_by_zero
-
-dddvi561 divideint  0    -1.0   -> -0
-dddvi562 divideint -0    -1.0   ->  0
-dddvi563 divideint  0     1.0   ->  0
-dddvi564 divideint -0     1.0   -> -0
-dddvi565 divideint -1     0.0   -> -Infinity Division_by_zero
-dddvi566 divideint -1    -0.0   ->  Infinity Division_by_zero
-dddvi567 divideint  1     0.0   ->  Infinity Division_by_zero
-dddvi568 divideint  1    -0.0   -> -Infinity Division_by_zero
-
-dddvi571 divideint  0.0  -1.0   -> -0
-dddvi572 divideint -0.0  -1.0   ->  0
-dddvi573 divideint  0.0   1.0   ->  0
-dddvi574 divideint -0.0   1.0   -> -0
-dddvi575 divideint -1.0   0.0   -> -Infinity Division_by_zero
-dddvi576 divideint -1.0  -0.0   ->  Infinity Division_by_zero
-dddvi577 divideint  1.0   0.0   ->  Infinity Division_by_zero
-dddvi578 divideint  1.0  -0.0   -> -Infinity Division_by_zero
-
--- Specials
-dddvi580 divideint  Inf  -Inf   ->  NaN Invalid_operation
-dddvi581 divideint  Inf  -1000  -> -Infinity
-dddvi582 divideint  Inf  -1     -> -Infinity
-dddvi583 divideint  Inf  -0     -> -Infinity
-dddvi584 divideint  Inf   0     ->  Infinity
-dddvi585 divideint  Inf   1     ->  Infinity
-dddvi586 divideint  Inf   1000  ->  Infinity
-dddvi587 divideint  Inf   Inf   ->  NaN Invalid_operation
-dddvi588 divideint -1000  Inf   -> -0
-dddvi589 divideint -Inf   Inf   ->  NaN Invalid_operation
-dddvi590 divideint -1     Inf   -> -0
-dddvi591 divideint -0     Inf   -> -0
-dddvi592 divideint  0     Inf   ->  0
-dddvi593 divideint  1     Inf   ->  0
-dddvi594 divideint  1000  Inf   ->  0
-dddvi595 divideint  Inf   Inf   ->  NaN Invalid_operation
-
-dddvi600 divideint -Inf  -Inf   ->  NaN Invalid_operation
-dddvi601 divideint -Inf  -1000  ->  Infinity
-dddvi602 divideint -Inf  -1     ->  Infinity
-dddvi603 divideint -Inf  -0     ->  Infinity
-dddvi604 divideint -Inf   0     -> -Infinity
-dddvi605 divideint -Inf   1     -> -Infinity
-dddvi606 divideint -Inf   1000  -> -Infinity
-dddvi607 divideint -Inf   Inf   ->  NaN Invalid_operation
-dddvi608 divideint -1000  Inf   -> -0
-dddvi609 divideint -Inf  -Inf   ->  NaN Invalid_operation
-dddvi610 divideint -1    -Inf   ->  0
-dddvi611 divideint -0    -Inf   ->  0
-dddvi612 divideint  0    -Inf   -> -0
-dddvi613 divideint  1    -Inf   -> -0
-dddvi614 divideint  1000 -Inf   -> -0
-dddvi615 divideint  Inf  -Inf   ->  NaN Invalid_operation
-
-dddvi621 divideint  NaN -Inf    ->  NaN
-dddvi622 divideint  NaN -1000   ->  NaN
-dddvi623 divideint  NaN -1      ->  NaN
-dddvi624 divideint  NaN -0      ->  NaN
-dddvi625 divideint  NaN  0      ->  NaN
-dddvi626 divideint  NaN  1      ->  NaN
-dddvi627 divideint  NaN  1000   ->  NaN
-dddvi628 divideint  NaN  Inf    ->  NaN
-dddvi629 divideint  NaN  NaN    ->  NaN
-dddvi630 divideint -Inf  NaN    ->  NaN
-dddvi631 divideint -1000 NaN    ->  NaN
-dddvi632 divideint -1    NaN    ->  NaN
-dddvi633 divideint -0    NaN    ->  NaN
-dddvi634 divideint  0    NaN    ->  NaN
-dddvi635 divideint  1    NaN    ->  NaN
-dddvi636 divideint  1000 NaN    ->  NaN
-dddvi637 divideint  Inf  NaN    ->  NaN
-
-dddvi641 divideint  sNaN -Inf   ->  NaN  Invalid_operation
-dddvi642 divideint  sNaN -1000  ->  NaN  Invalid_operation
-dddvi643 divideint  sNaN -1     ->  NaN  Invalid_operation
-dddvi644 divideint  sNaN -0     ->  NaN  Invalid_operation
-dddvi645 divideint  sNaN  0     ->  NaN  Invalid_operation
-dddvi646 divideint  sNaN  1     ->  NaN  Invalid_operation
-dddvi647 divideint  sNaN  1000  ->  NaN  Invalid_operation
-dddvi648 divideint  sNaN  NaN   ->  NaN  Invalid_operation
-dddvi649 divideint  sNaN sNaN   ->  NaN  Invalid_operation
-dddvi650 divideint  NaN  sNaN   ->  NaN  Invalid_operation
-dddvi651 divideint -Inf  sNaN   ->  NaN  Invalid_operation
-dddvi652 divideint -1000 sNaN   ->  NaN  Invalid_operation
-dddvi653 divideint -1    sNaN   ->  NaN  Invalid_operation
-dddvi654 divideint -0    sNaN   ->  NaN  Invalid_operation
-dddvi655 divideint  0    sNaN   ->  NaN  Invalid_operation
-dddvi656 divideint  1    sNaN   ->  NaN  Invalid_operation
-dddvi657 divideint  1000 sNaN   ->  NaN  Invalid_operation
-dddvi658 divideint  Inf  sNaN   ->  NaN  Invalid_operation
-dddvi659 divideint  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dddvi661 divideint  NaN9 -Inf   ->  NaN9
-dddvi662 divideint  NaN8  1000  ->  NaN8
-dddvi663 divideint  NaN7  Inf   ->  NaN7
-dddvi664 divideint -NaN6  NaN5  -> -NaN6
-dddvi665 divideint -Inf   NaN4  ->  NaN4
-dddvi666 divideint -1000  NaN3  ->  NaN3
-dddvi667 divideint  Inf  -NaN2  -> -NaN2
-
-dddvi671 divideint -sNaN99 -Inf    -> -NaN99 Invalid_operation
-dddvi672 divideint  sNaN98 -1      ->  NaN98 Invalid_operation
-dddvi673 divideint  sNaN97  NaN    ->  NaN97 Invalid_operation
-dddvi674 divideint  sNaN96 sNaN94  ->  NaN96 Invalid_operation
-dddvi675 divideint  NaN95  sNaN93  ->  NaN93 Invalid_operation
-dddvi676 divideint -Inf    sNaN92  ->  NaN92 Invalid_operation
-dddvi677 divideint  0      sNaN91  ->  NaN91 Invalid_operation
-dddvi678 divideint  Inf   -sNaN90  -> -NaN90 Invalid_operation
-dddvi679 divideint  NaN    sNaN89  ->  NaN89 Invalid_operation
-
--- Null tests
-dddvi900 divideint  10  # -> NaN Invalid_operation
-dddvi901 divideint   # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddEncode.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddEncode.decTest
deleted file mode 100644
index e91ec61..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddEncode.decTest
+++ /dev/null
@@ -1,495 +0,0 @@
-------------------------------------------------------------------------
--- ddEncode.decTest -- decimal eight-byte format testcases            --
--- Copyright (c) IBM Corporation, 2000, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
--- [Previously called decimal64.decTest]
-version: 2.59
-
--- This set of tests is for the eight-byte concrete representation.
--- Its characteristics are:
---
---  1 bit  sign
---  5 bits combination field
---  8 bits exponent continuation
--- 50 bits coefficient continuation
---
--- Total exponent length 10 bits
--- Total coefficient length 54 bits (16 digits)
---
--- Elimit =  767 (maximum encoded exponent)
--- Emax   =  384 (largest exponent value)
--- Emin   = -383 (smallest exponent value)
--- bias   =  398 (subtracted from encoded exponent) = -Etiny
-
--- The testcases here have only exactly representable data on the
--- 'left-hand-side'; rounding from strings is tested in 'base'
--- testcase groups.
-
-extended:    1
-clamp:       1
-precision:   16
-rounding:    half_up
-maxExponent: 384
-minExponent: -383
-
--- General testcases
--- (mostly derived from the Strawman 4 document and examples)
-dece001 apply   #A2300000000003D0 -> -7.50
-dece002 apply   -7.50             -> #A2300000000003D0
--- derivative canonical plain strings
-dece003 apply   #A23c0000000003D0 -> -7.50E+3
-dece004 apply   -7.50E+3          -> #A23c0000000003D0
-dece005 apply   #A2380000000003D0 -> -750
-dece006 apply   -750              -> #A2380000000003D0
-dece007 apply   #A2340000000003D0 -> -75.0
-dece008 apply   -75.0             -> #A2340000000003D0
-dece009 apply   #A22c0000000003D0 -> -0.750
-dece010 apply   -0.750            -> #A22c0000000003D0
-dece011 apply   #A2280000000003D0 -> -0.0750
-dece012 apply   -0.0750           -> #A2280000000003D0
-dece013 apply   #A2200000000003D0 -> -0.000750
-dece014 apply   -0.000750         -> #A2200000000003D0
-dece015 apply   #A2180000000003D0 -> -0.00000750
-dece016 apply   -0.00000750       -> #A2180000000003D0
-dece017 apply   #A2140000000003D0 -> -7.50E-7
-dece018 apply   -7.50E-7          -> #A2140000000003D0
-
--- Normality
-dece020 apply   1234567890123456   -> #263934b9c1e28e56
-dece021 apply  -1234567890123456   -> #a63934b9c1e28e56
-dece022 apply   1234.567890123456  -> #260934b9c1e28e56
-dece023 apply  #260934b9c1e28e56   -> 1234.567890123456
-dece024 apply   1111111111111111   -> #2638912449124491
-dece025 apply   9999999999999999   -> #6e38ff3fcff3fcff
-
--- Nmax and similar
-dece031 apply   9999999999999999E+369   -> #77fcff3fcff3fcff
-dece032 apply   9.999999999999999E+384  -> #77fcff3fcff3fcff
-dece033 apply   #77fcff3fcff3fcff       -> 9.999999999999999E+384
-dece034 apply   1.234567890123456E+384  -> #47fd34b9c1e28e56
-dece035 apply   #47fd34b9c1e28e56       -> 1.234567890123456E+384
--- fold-downs (more below)
-dece036 apply   1.23E+384               -> #47fd300000000000 Clamped
-dece037 apply   #47fd300000000000       -> 1.230000000000000E+384
-decd038 apply   1E+384                  -> #47fc000000000000 Clamped
-decd039 apply   #47fc000000000000       -> 1.000000000000000E+384
-
-decd051 apply   12345                   -> #22380000000049c5
-decd052 apply   #22380000000049c5       -> 12345
-decd053 apply   1234                    -> #2238000000000534
-decd054 apply   #2238000000000534       -> 1234
-decd055 apply   123                     -> #22380000000000a3
-decd056 apply   #22380000000000a3       -> 123
-decd057 apply   12                      -> #2238000000000012
-decd058 apply   #2238000000000012       -> 12
-decd059 apply   1                       -> #2238000000000001
-decd060 apply   #2238000000000001       -> 1
-decd061 apply   1.23                    -> #22300000000000a3
-decd062 apply   #22300000000000a3       -> 1.23
-decd063 apply   123.45                  -> #22300000000049c5
-decd064 apply   #22300000000049c5       -> 123.45
-
--- Nmin and below
-decd071 apply   1E-383                  -> #003c000000000001
-decd072 apply   #003c000000000001       -> 1E-383
-decd073 apply   1.000000000000000E-383  -> #0400000000000000
-decd074 apply   #0400000000000000       -> 1.000000000000000E-383
-decd075 apply   1.000000000000001E-383  -> #0400000000000001
-decd076 apply   #0400000000000001       -> 1.000000000000001E-383
-
-decd077 apply   0.100000000000000E-383  -> #0000800000000000      Subnormal
-decd078 apply   #0000800000000000       -> 1.00000000000000E-384  Subnormal
-decd079 apply   0.000000000000010E-383  -> #0000000000000010      Subnormal
-decd080 apply   #0000000000000010       -> 1.0E-397               Subnormal
-decd081 apply   0.00000000000001E-383   -> #0004000000000001      Subnormal
-decd082 apply   #0004000000000001       -> 1E-397                 Subnormal
-decd083 apply   0.000000000000001E-383  -> #0000000000000001      Subnormal
-decd084 apply   #0000000000000001       -> 1E-398                 Subnormal
--- next is smallest all-nines
-decd085 apply   9999999999999999E-398   -> #6400ff3fcff3fcff
-decd086 apply   #6400ff3fcff3fcff       -> 9.999999999999999E-383
--- and a problematic divide result
-decd088 apply   1.111111111111111E-383  -> #0400912449124491
-decd089 apply   #0400912449124491       -> 1.111111111111111E-383
-
--- forties
-decd090 apply        40                -> #2238000000000040
-decd091 apply        39.99             -> #2230000000000cff
-
--- underflows cannot be tested as all LHS exact
-
--- Same again, negatives
--- Nmax and similar
-decd122 apply  -9.999999999999999E+384  -> #f7fcff3fcff3fcff
-decd123 apply   #f7fcff3fcff3fcff       -> -9.999999999999999E+384
-decd124 apply  -1.234567890123456E+384  -> #c7fd34b9c1e28e56
-decd125 apply   #c7fd34b9c1e28e56       -> -1.234567890123456E+384
--- fold-downs (more below)
-decd130 apply  -1.23E+384               -> #c7fd300000000000 Clamped
-decd131 apply   #c7fd300000000000       -> -1.230000000000000E+384
-decd132 apply  -1E+384                  -> #c7fc000000000000 Clamped
-decd133 apply   #c7fc000000000000       -> -1.000000000000000E+384
-
--- overflows
-decd151 apply  -12345                   -> #a2380000000049c5
-decd152 apply   #a2380000000049c5       -> -12345
-decd153 apply  -1234                    -> #a238000000000534
-decd154 apply   #a238000000000534       -> -1234
-decd155 apply  -123                     -> #a2380000000000a3
-decd156 apply   #a2380000000000a3       -> -123
-decd157 apply  -12                      -> #a238000000000012
-decd158 apply   #a238000000000012       -> -12
-decd159 apply  -1                       -> #a238000000000001
-decd160 apply   #a238000000000001       -> -1
-decd161 apply  -1.23                    -> #a2300000000000a3
-decd162 apply   #a2300000000000a3       -> -1.23
-decd163 apply  -123.45                  -> #a2300000000049c5
-decd164 apply   #a2300000000049c5       -> -123.45
-
--- Nmin and below
-decd171 apply  -1E-383                  -> #803c000000000001
-decd172 apply   #803c000000000001       -> -1E-383
-decd173 apply  -1.000000000000000E-383  -> #8400000000000000
-decd174 apply   #8400000000000000       -> -1.000000000000000E-383
-decd175 apply  -1.000000000000001E-383  -> #8400000000000001
-decd176 apply   #8400000000000001       -> -1.000000000000001E-383
-
-decd177 apply  -0.100000000000000E-383  -> #8000800000000000       Subnormal
-decd178 apply   #8000800000000000       -> -1.00000000000000E-384  Subnormal
-decd179 apply  -0.000000000000010E-383  -> #8000000000000010       Subnormal
-decd180 apply   #8000000000000010       -> -1.0E-397               Subnormal
-decd181 apply  -0.00000000000001E-383   -> #8004000000000001       Subnormal
-decd182 apply   #8004000000000001       -> -1E-397                 Subnormal
-decd183 apply  -0.000000000000001E-383  -> #8000000000000001       Subnormal
-decd184 apply   #8000000000000001       -> -1E-398                 Subnormal
--- next is smallest all-nines
-decd185 apply   -9999999999999999E-398   -> #e400ff3fcff3fcff
-decd186 apply   #e400ff3fcff3fcff       -> -9.999999999999999E-383
--- and a tricky subnormal
-decd187 apply   1.11111111111524E-384    -> #00009124491246a4      Subnormal
-decd188 apply   #00009124491246a4        -> 1.11111111111524E-384  Subnormal
-
--- near-underflows
-decd189 apply   -1e-398                 -> #8000000000000001  Subnormal
-decd190 apply   -1.0e-398               -> #8000000000000001  Subnormal Rounded
-
--- zeros
-decd401 apply   0E-500                  -> #0000000000000000  Clamped
-decd402 apply   0E-400                  -> #0000000000000000  Clamped
-decd403 apply   0E-398                  -> #0000000000000000
-decd404 apply   #0000000000000000       -> 0E-398
-decd405 apply   0.000000000000000E-383  -> #0000000000000000
-decd406 apply   #0000000000000000       -> 0E-398
-decd407 apply   0E-2                    -> #2230000000000000
-decd408 apply   #2230000000000000       -> 0.00
-decd409 apply   0                       -> #2238000000000000
-decd410 apply   #2238000000000000       -> 0
-decd411 apply   0E+3                    -> #2244000000000000
-decd412 apply   #2244000000000000       -> 0E+3
-decd413 apply   0E+369                  -> #43fc000000000000
-decd414 apply   #43fc000000000000       -> 0E+369
--- clamped zeros...
-decd415 apply   0E+370                  -> #43fc000000000000  Clamped
-decd416 apply   #43fc000000000000       -> 0E+369
-decd417 apply   0E+384                  -> #43fc000000000000  Clamped
-decd418 apply   #43fc000000000000       -> 0E+369
-decd419 apply   0E+400                  -> #43fc000000000000  Clamped
-decd420 apply   #43fc000000000000       -> 0E+369
-decd421 apply   0E+500                  -> #43fc000000000000  Clamped
-decd422 apply   #43fc000000000000       -> 0E+369
-
--- negative zeros
-decd431 apply   -0E-400                 -> #8000000000000000  Clamped
-decd432 apply   -0E-400                 -> #8000000000000000  Clamped
-decd433 apply   -0E-398                 -> #8000000000000000
-decd434 apply   #8000000000000000       -> -0E-398
-decd435 apply   -0.000000000000000E-383 -> #8000000000000000
-decd436 apply   #8000000000000000       -> -0E-398
-decd437 apply   -0E-2                   -> #a230000000000000
-decd438 apply   #a230000000000000       -> -0.00
-decd439 apply   -0                      -> #a238000000000000
-decd440 apply   #a238000000000000       -> -0
-decd441 apply   -0E+3                   -> #a244000000000000
-decd442 apply   #a244000000000000       -> -0E+3
-decd443 apply   -0E+369                 -> #c3fc000000000000
-decd444 apply   #c3fc000000000000       -> -0E+369
--- clamped zeros...
-decd445 apply   -0E+370                 -> #c3fc000000000000  Clamped
-decd446 apply   #c3fc000000000000       -> -0E+369
-decd447 apply   -0E+384                 -> #c3fc000000000000  Clamped
-decd448 apply   #c3fc000000000000       -> -0E+369
-decd449 apply   -0E+400                 -> #c3fc000000000000  Clamped
-decd450 apply   #c3fc000000000000       -> -0E+369
-decd451 apply   -0E+500                 -> #c3fc000000000000  Clamped
-decd452 apply   #c3fc000000000000       -> -0E+369
-
--- exponents
-decd460 apply   #225c000000000007 -> 7E+9
-decd461 apply   7E+9  -> #225c000000000007
-decd462 apply   #23c4000000000007 -> 7E+99
-decd463 apply   7E+99 -> #23c4000000000007
-
--- Specials
-decd500 apply   Infinity          -> #7800000000000000
-decd501 apply   #7878787878787878 -> #7800000000000000
-decd502 apply   #7800000000000000 -> Infinity
-decd503 apply   #7979797979797979 -> #7800000000000000
-decd504 apply   #7900000000000000 -> Infinity
-decd505 apply   #7a7a7a7a7a7a7a7a -> #7800000000000000
-decd506 apply   #7a00000000000000 -> Infinity
-decd507 apply   #7b7b7b7b7b7b7b7b -> #7800000000000000
-decd508 apply   #7b00000000000000 -> Infinity
-
-decd509 apply   NaN               -> #7c00000000000000
-decd510 apply   #7c7c7c7c7c7c7c7c -> #7c007c7c7c7c7c7c
-decd511 apply   #7c00000000000000 -> NaN
-decd512 apply   #7d7d7d7d7d7d7d7d -> #7c017d7d7d7d7d7d
-decd513 apply   #7d00000000000000 -> NaN
-decd514 apply   #7e7e7e7e7e7e7e7e -> #7e007e7e7e7e7c7e
-decd515 apply   #7e00000000000000 -> sNaN
-decd516 apply   #7f7f7f7f7f7f7f7f -> #7e007f7f7f7f7c7f
-decd517 apply   #7f00000000000000 -> sNaN
-decd518 apply   #7fffffffffffffff -> sNaN999999999999999
-decd519 apply   #7fffffffffffffff -> #7e00ff3fcff3fcff
-
-decd520 apply   -Infinity         -> #f800000000000000
-decd521 apply   #f878787878787878 -> #f800000000000000
-decd522 apply   #f800000000000000 -> -Infinity
-decd523 apply   #f979797979797979 -> #f800000000000000
-decd524 apply   #f900000000000000 -> -Infinity
-decd525 apply   #fa7a7a7a7a7a7a7a -> #f800000000000000
-decd526 apply   #fa00000000000000 -> -Infinity
-decd527 apply   #fb7b7b7b7b7b7b7b -> #f800000000000000
-decd528 apply   #fb00000000000000 -> -Infinity
-
-decd529 apply   -NaN              -> #fc00000000000000
-decd530 apply   #fc7c7c7c7c7c7c7c -> #fc007c7c7c7c7c7c
-decd531 apply   #fc00000000000000 -> -NaN
-decd532 apply   #fd7d7d7d7d7d7d7d -> #fc017d7d7d7d7d7d
-decd533 apply   #fd00000000000000 -> -NaN
-decd534 apply   #fe7e7e7e7e7e7e7e -> #fe007e7e7e7e7c7e
-decd535 apply   #fe00000000000000 -> -sNaN
-decd536 apply   #ff7f7f7f7f7f7f7f -> #fe007f7f7f7f7c7f
-decd537 apply   #ff00000000000000 -> -sNaN
-decd538 apply   #ffffffffffffffff -> -sNaN999999999999999
-decd539 apply   #ffffffffffffffff -> #fe00ff3fcff3fcff
-
--- diagnostic NaNs
-decd540 apply   NaN                 -> #7c00000000000000
-decd541 apply   NaN0                -> #7c00000000000000
-decd542 apply   NaN1                -> #7c00000000000001
-decd543 apply   NaN12               -> #7c00000000000012
-decd544 apply   NaN79               -> #7c00000000000079
-decd545 apply   NaN12345            -> #7c000000000049c5
-decd546 apply   NaN123456           -> #7c00000000028e56
-decd547 apply   NaN799799           -> #7c000000000f7fdf
-decd548 apply   NaN799799799799799  -> #7c03dff7fdff7fdf
-decd549 apply   NaN999999999999999  -> #7c00ff3fcff3fcff
--- too many digits
-
--- fold-down full sequence
-decd601 apply   1E+384                  -> #47fc000000000000 Clamped
-decd602 apply   #47fc000000000000       -> 1.000000000000000E+384
-decd603 apply   1E+383                  -> #43fc800000000000 Clamped
-decd604 apply   #43fc800000000000       -> 1.00000000000000E+383
-decd605 apply   1E+382                  -> #43fc100000000000 Clamped
-decd606 apply   #43fc100000000000       -> 1.0000000000000E+382
-decd607 apply   1E+381                  -> #43fc010000000000 Clamped
-decd608 apply   #43fc010000000000       -> 1.000000000000E+381
-decd609 apply   1E+380                  -> #43fc002000000000 Clamped
-decd610 apply   #43fc002000000000       -> 1.00000000000E+380
-decd611 apply   1E+379                  -> #43fc000400000000 Clamped
-decd612 apply   #43fc000400000000       -> 1.0000000000E+379
-decd613 apply   1E+378                  -> #43fc000040000000 Clamped
-decd614 apply   #43fc000040000000       -> 1.000000000E+378
-decd615 apply   1E+377                  -> #43fc000008000000 Clamped
-decd616 apply   #43fc000008000000       -> 1.00000000E+377
-decd617 apply   1E+376                  -> #43fc000001000000 Clamped
-decd618 apply   #43fc000001000000       -> 1.0000000E+376
-decd619 apply   1E+375                  -> #43fc000000100000 Clamped
-decd620 apply   #43fc000000100000       -> 1.000000E+375
-decd621 apply   1E+374                  -> #43fc000000020000 Clamped
-decd622 apply   #43fc000000020000       -> 1.00000E+374
-decd623 apply   1E+373                  -> #43fc000000004000 Clamped
-decd624 apply   #43fc000000004000       -> 1.0000E+373
-decd625 apply   1E+372                  -> #43fc000000000400 Clamped
-decd626 apply   #43fc000000000400       -> 1.000E+372
-decd627 apply   1E+371                  -> #43fc000000000080 Clamped
-decd628 apply   #43fc000000000080       -> 1.00E+371
-decd629 apply   1E+370                  -> #43fc000000000010 Clamped
-decd630 apply   #43fc000000000010       -> 1.0E+370
-decd631 apply   1E+369                  -> #43fc000000000001
-decd632 apply   #43fc000000000001       -> 1E+369
-decd633 apply   1E+368                  -> #43f8000000000001
-decd634 apply   #43f8000000000001       -> 1E+368
--- same with 9s
-decd641 apply   9E+384                  -> #77fc000000000000 Clamped
-decd642 apply   #77fc000000000000       -> 9.000000000000000E+384
-decd643 apply   9E+383                  -> #43fc8c0000000000 Clamped
-decd644 apply   #43fc8c0000000000       -> 9.00000000000000E+383
-decd645 apply   9E+382                  -> #43fc1a0000000000 Clamped
-decd646 apply   #43fc1a0000000000       -> 9.0000000000000E+382
-decd647 apply   9E+381                  -> #43fc090000000000 Clamped
-decd648 apply   #43fc090000000000       -> 9.000000000000E+381
-decd649 apply   9E+380                  -> #43fc002300000000 Clamped
-decd650 apply   #43fc002300000000       -> 9.00000000000E+380
-decd651 apply   9E+379                  -> #43fc000680000000 Clamped
-decd652 apply   #43fc000680000000       -> 9.0000000000E+379
-decd653 apply   9E+378                  -> #43fc000240000000 Clamped
-decd654 apply   #43fc000240000000       -> 9.000000000E+378
-decd655 apply   9E+377                  -> #43fc000008c00000 Clamped
-decd656 apply   #43fc000008c00000       -> 9.00000000E+377
-decd657 apply   9E+376                  -> #43fc000001a00000 Clamped
-decd658 apply   #43fc000001a00000       -> 9.0000000E+376
-decd659 apply   9E+375                  -> #43fc000000900000 Clamped
-decd660 apply   #43fc000000900000       -> 9.000000E+375
-decd661 apply   9E+374                  -> #43fc000000023000 Clamped
-decd662 apply   #43fc000000023000       -> 9.00000E+374
-decd663 apply   9E+373                  -> #43fc000000006800 Clamped
-decd664 apply   #43fc000000006800       -> 9.0000E+373
-decd665 apply   9E+372                  -> #43fc000000002400 Clamped
-decd666 apply   #43fc000000002400       -> 9.000E+372
-decd667 apply   9E+371                  -> #43fc00000000008c Clamped
-decd668 apply   #43fc00000000008c       -> 9.00E+371
-decd669 apply   9E+370                  -> #43fc00000000001a Clamped
-decd670 apply   #43fc00000000001a       -> 9.0E+370
-decd671 apply   9E+369                  -> #43fc000000000009
-decd672 apply   #43fc000000000009       -> 9E+369
-decd673 apply   9E+368                  -> #43f8000000000009
-decd674 apply   #43f8000000000009       -> 9E+368
-
-
--- Selected DPD codes
-decd700 apply   #2238000000000000       -> 0
-decd701 apply   #2238000000000009       -> 9
-decd702 apply   #2238000000000010       -> 10
-decd703 apply   #2238000000000019       -> 19
-decd704 apply   #2238000000000020       -> 20
-decd705 apply   #2238000000000029       -> 29
-decd706 apply   #2238000000000030       -> 30
-decd707 apply   #2238000000000039       -> 39
-decd708 apply   #2238000000000040       -> 40
-decd709 apply   #2238000000000049       -> 49
-decd710 apply   #2238000000000050       -> 50
-decd711 apply   #2238000000000059       -> 59
-decd712 apply   #2238000000000060       -> 60
-decd713 apply   #2238000000000069       -> 69
-decd714 apply   #2238000000000070       -> 70
-decd715 apply   #2238000000000071       -> 71
-decd716 apply   #2238000000000072       -> 72
-decd717 apply   #2238000000000073       -> 73
-decd718 apply   #2238000000000074       -> 74
-decd719 apply   #2238000000000075       -> 75
-decd720 apply   #2238000000000076       -> 76
-decd721 apply   #2238000000000077       -> 77
-decd722 apply   #2238000000000078       -> 78
-decd723 apply   #2238000000000079       -> 79
-
-decd725 apply   #223800000000029e       -> 994
-decd726 apply   #223800000000029f       -> 995
-decd727 apply   #22380000000002a0       -> 520
-decd728 apply   #22380000000002a1       -> 521
--- from telco test data
-decd730 apply   #2238000000000188       -> 308
-decd731 apply   #22380000000001a3       -> 323
-decd732 apply   #223800000000002a       ->  82
-decd733 apply   #22380000000001a9       -> 329
-decd734 apply   #2238000000000081       -> 101
-decd735 apply   #22380000000002a2       -> 522
-
--- DPD: one of each of the huffman groups
-decd740 apply   #22380000000003f7       -> 777
-decd741 apply   #22380000000003f8       -> 778
-decd742 apply   #22380000000003eb       -> 787
-decd743 apply   #223800000000037d       -> 877
-decd744 apply   #223800000000039f       -> 997
-decd745 apply   #22380000000003bf       -> 979
-decd746 apply   #22380000000003df       -> 799
-decd747 apply   #223800000000006e       -> 888
-
--- DPD all-highs cases (includes the 24 redundant codes)
-decd750 apply   #223800000000006e       -> 888
-decd751 apply   #223800000000016e       -> 888
-decd752 apply   #223800000000026e       -> 888
-decd753 apply   #223800000000036e       -> 888
-decd754 apply   #223800000000006f       -> 889
-decd755 apply   #223800000000016f       -> 889
-decd756 apply   #223800000000026f       -> 889
-decd757 apply   #223800000000036f       -> 889
-
-decd760 apply   #223800000000007e       -> 898
-decd761 apply   #223800000000017e       -> 898
-decd762 apply   #223800000000027e       -> 898
-decd763 apply   #223800000000037e       -> 898
-decd764 apply   #223800000000007f       -> 899
-decd765 apply   #223800000000017f       -> 899
-decd766 apply   #223800000000027f       -> 899
-decd767 apply   #223800000000037f       -> 899
-
-decd770 apply   #22380000000000ee       -> 988
-decd771 apply   #22380000000001ee       -> 988
-decd772 apply   #22380000000002ee       -> 988
-decd773 apply   #22380000000003ee       -> 988
-decd774 apply   #22380000000000ef       -> 989
-decd775 apply   #22380000000001ef       -> 989
-decd776 apply   #22380000000002ef       -> 989
-decd777 apply   #22380000000003ef       -> 989
-
-decd780 apply   #22380000000000fe       -> 998
-decd781 apply   #22380000000001fe       -> 998
-decd782 apply   #22380000000002fe       -> 998
-decd783 apply   #22380000000003fe       -> 998
-decd784 apply   #22380000000000ff       -> 999
-decd785 apply   #22380000000001ff       -> 999
-decd786 apply   #22380000000002ff       -> 999
-decd787 apply   #22380000000003ff       -> 999
-
--- values around [u]int32 edges (zeros done earlier)
-decd800 apply -2147483646  -> #a23800008c78af46
-decd801 apply -2147483647  -> #a23800008c78af47
-decd802 apply -2147483648  -> #a23800008c78af48
-decd803 apply -2147483649  -> #a23800008c78af49
-decd804 apply  2147483646  -> #223800008c78af46
-decd805 apply  2147483647  -> #223800008c78af47
-decd806 apply  2147483648  -> #223800008c78af48
-decd807 apply  2147483649  -> #223800008c78af49
-decd808 apply  4294967294  -> #2238000115afb55a
-decd809 apply  4294967295  -> #2238000115afb55b
-decd810 apply  4294967296  -> #2238000115afb57a
-decd811 apply  4294967297  -> #2238000115afb57b
-
-decd820 apply  #a23800008c78af46 -> -2147483646
-decd821 apply  #a23800008c78af47 -> -2147483647
-decd822 apply  #a23800008c78af48 -> -2147483648
-decd823 apply  #a23800008c78af49 -> -2147483649
-decd824 apply  #223800008c78af46 ->  2147483646
-decd825 apply  #223800008c78af47 ->  2147483647
-decd826 apply  #223800008c78af48 ->  2147483648
-decd827 apply  #223800008c78af49 ->  2147483649
-decd828 apply  #2238000115afb55a ->  4294967294
-decd829 apply  #2238000115afb55b ->  4294967295
-decd830 apply  #2238000115afb57a ->  4294967296
-decd831 apply  #2238000115afb57b ->  4294967297
-
--- for narrowing
-decd840 apply  #2870000000000000 ->  2.000000000000000E-99
-
--- some miscellaneous
-decd850 apply  #0004070000000000 -> 7.000000000000E-385  Subnormal
-decd851 apply  #0008000000020000 -> 1.00000E-391         Subnormal
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddFMA.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddFMA.decTest
deleted file mode 100644
index f0acfc7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddFMA.decTest
+++ /dev/null
@@ -1,1698 +0,0 @@
-------------------------------------------------------------------------
--- ddFMA.decTest -- decDouble Fused Multiply Add                      --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- These tests comprese three parts:
---   1. Sanity checks and other three-operand tests (especially those
---      where the fused operation makes a difference)
---   2. Multiply tests (third operand is neutral zero [0E+emax])
---   3. Addition tests (first operand is 1)
--- The multiply and addition tests are extensive because FMA may have
--- its own dedicated multiplication or addition routine(s), and they
--- also inherently check the left-to-right properties.
-
--- Sanity checks
-ddfma0001 fma  1   1   1 ->   2
-ddfma0002 fma  1   1   2 ->   3
-ddfma0003 fma  2   2   3 ->   7
-ddfma0004 fma  9   9   9 ->  90
-ddfma0005 fma -1   1   1 ->   0
-ddfma0006 fma -1   1   2 ->   1
-ddfma0007 fma -2   2   3 ->  -1
-ddfma0008 fma -9   9   9 -> -72
-ddfma0011 fma  1  -1   1 ->   0
-ddfma0012 fma  1  -1   2 ->   1
-ddfma0013 fma  2  -2   3 ->  -1
-ddfma0014 fma  9  -9   9 -> -72
-ddfma0015 fma  1   1  -1 ->   0
-ddfma0016 fma  1   1  -2 ->  -1
-ddfma0017 fma  2   2  -3 ->   1
-ddfma0018 fma  9   9  -9 ->  72
-
--- non-integer exacts
-ddfma0100  fma    25.2   63.6   -438  ->  1164.72
-ddfma0101  fma   0.301  0.380    334  ->  334.114380
-ddfma0102  fma    49.2   -4.8   23.3  ->  -212.86
-ddfma0103  fma    4.22  0.079  -94.6  ->  -94.26662
-ddfma0104  fma     903  0.797  0.887  ->  720.578
-ddfma0105  fma    6.13   -161   65.9  ->  -921.03
-ddfma0106  fma    28.2    727   5.45  ->  20506.85
-ddfma0107  fma       4    605    688  ->  3108
-ddfma0108  fma    93.3   0.19  0.226  ->  17.953
-ddfma0109  fma   0.169   -341   5.61  ->  -52.019
-ddfma0110  fma   -72.2     30  -51.2  ->  -2217.2
-ddfma0111  fma  -0.409     13   20.4  ->  15.083
-ddfma0112  fma     317   77.0   19.0  ->  24428.0
-ddfma0113  fma      47   6.58   1.62  ->  310.88
-ddfma0114  fma    1.36  0.984  0.493  ->  1.83124
-ddfma0115  fma    72.7    274   1.56  ->  19921.36
-ddfma0116  fma     335    847     83  ->  283828
-ddfma0117  fma     666  0.247   25.4  ->  189.902
-ddfma0118  fma   -3.87   3.06   78.0  ->  66.1578
-ddfma0119  fma   0.742    192   35.6  ->  178.064
-ddfma0120  fma   -91.6   5.29  0.153  ->  -484.411
-
--- cases where result is different from separate multiply + add; each
--- is preceded by the result of unfused multiply and add
--- [this is about 20% of all similar  cases in general]
---                                                                      ->  7.123356429257969E+16
-ddfma0201  fma       27583489.6645      2582471078.04      2593183.42371  ->  7.123356429257970E+16  Inexact Rounded
---                                                                      ->  22813275328.80506
-ddfma0208  fma        24280.355566      939577.397653        2032.013252  ->  22813275328.80507      Inexact Rounded
---                                                                      ->  -2.030397734278062E+16
-ddfma0209  fma          7848976432      -2586831.2281      137903.517909  ->  -2.030397734278061E+16 Inexact Rounded
---                                                                      ->  2040774094814.077
-ddfma0217  fma        56890.388731      35872030.4255      339337.123410  ->  2040774094814.078      Inexact Rounded
---                                                                      ->  2.714469575205049E+18
-ddfma0220  fma       7533543.57445       360317763928      5073392.31638  ->  2.714469575205050E+18  Inexact Rounded
---                                                                      ->  1.011676297716716E+19
-ddfma0223  fma       739945255.563      13672312784.1      -994381.53572  ->  1.011676297716715E+19  Inexact Rounded
---                                                                      ->  -2.914135721455315E+23
-ddfma0224  fma       -413510957218       704729988550       9234162614.0  ->  -2.914135721455314E+23 Inexact Rounded
---                                                                      ->  2.620119863365786E+17
-ddfma0226  fma        437484.00601       598906432790      894450638.442  ->  2.620119863365787E+17  Inexact Rounded
---                                                                      ->  1.272647995808178E+19
-ddfma0253  fma         73287556929      173651305.784     -358312568.389  ->  1.272647995808177E+19  Inexact Rounded
---                                                                      ->  -1.753769320861851E+18
-ddfma0257  fma        203258304486      -8628278.8066      153127.446727  ->  -1.753769320861850E+18 Inexact Rounded
---                                                                      ->  -1.550737835263346E+17
-ddfma0260  fma       42560533.1774     -3643605282.86       178277.96377  ->  -1.550737835263347E+17 Inexact Rounded
---                                                                      ->  2.897624620576005E+22
-ddfma0269  fma        142656587375       203118879670       604576103991  ->  2.897624620576004E+22  Inexact Rounded
-
--- Cases where multiply would overflow or underflow if separate
-fma0300  fma   9e+384    10   0         -> Infinity  Overflow Inexact Rounded
-fma0301  fma   1e+384    10   0         -> Infinity  Overflow Inexact Rounded
-fma0302  fma   1e+384    10   -1e+384   -> 9.000000000000000E+384  Clamped
-fma0303  fma   1e+384    10   -9e+384   -> 1.000000000000000E+384  Clamped
--- subnormal etc.
-fma0305  fma   1e-398    0.1  0         -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-fma0306  fma   1e-398    0.1  1         -> 1.000000000000000 Inexact Rounded
-fma0307  fma   1e-398    0.1  1e-398    -> 1E-398 Underflow Subnormal Inexact Rounded
-
--- Infinite combinations
-ddfma0800 fma  Inf   Inf   Inf    ->  Infinity
-ddfma0801 fma  Inf   Inf  -Inf    ->  NaN Invalid_operation
-ddfma0802 fma  Inf  -Inf   Inf    ->  NaN Invalid_operation
-ddfma0803 fma  Inf  -Inf  -Inf    -> -Infinity
-ddfma0804 fma -Inf   Inf   Inf    ->  NaN Invalid_operation
-ddfma0805 fma -Inf   Inf  -Inf    -> -Infinity
-ddfma0806 fma -Inf  -Inf   Inf    ->  Infinity
-ddfma0807 fma -Inf  -Inf  -Inf    ->  NaN Invalid_operation
-
--- Triple NaN propagation
-ddfma0900 fma  NaN2  NaN3  NaN5   ->  NaN2
-ddfma0901 fma  0     NaN3  NaN5   ->  NaN3
-ddfma0902 fma  0     0     NaN5   ->  NaN5
--- first sNaN wins (consider qNaN from earlier sNaN being
--- overridden by an sNaN in third operand)
-ddfma0903 fma  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation
-ddfma0904 fma  0     sNaN2 sNaN3  ->  NaN2 Invalid_operation
-ddfma0905 fma  0     0     sNaN3  ->  NaN3 Invalid_operation
-ddfma0906 fma  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation
-ddfma0907 fma  NaN7  sNaN2 sNaN3  ->  NaN2 Invalid_operation
-ddfma0908 fma  NaN7  NaN5  sNaN3  ->  NaN3 Invalid_operation
-
--- MULTIPLICATION TESTS ------------------------------------------------
-
--- sanity checks
-ddfma2000 fma  2      2   0e+384  ->  4
-ddfma2001 fma  2      3   0e+384  ->  6
-ddfma2002 fma  5      1   0e+384  ->  5
-ddfma2003 fma  5      2   0e+384  ->  10
-ddfma2004 fma  1.20   2   0e+384  ->  2.40
-ddfma2005 fma  1.20   0   0e+384  ->  0.00
-ddfma2006 fma  1.20  -2   0e+384  ->  -2.40
-ddfma2007 fma  -1.20  2   0e+384  ->  -2.40
-ddfma2008 fma  -1.20  0   0e+384  ->  0.00
-ddfma2009 fma  -1.20 -2   0e+384  ->  2.40
-ddfma2010 fma  5.09 7.1   0e+384  ->  36.139
-ddfma2011 fma  2.5    4   0e+384  ->  10.0
-ddfma2012 fma  2.50   4   0e+384  ->  10.00
-ddfma2013 fma  1.23456789 1.00000000   0e+384  ->  1.234567890000000 Rounded
-ddfma2015 fma  2.50   4   0e+384  ->  10.00
-ddfma2016 fma   9.999999999  9.999999999   0e+384  ->   99.99999998000000 Inexact Rounded
-ddfma2017 fma   9.999999999 -9.999999999   0e+384  ->  -99.99999998000000 Inexact Rounded
-ddfma2018 fma  -9.999999999  9.999999999   0e+384  ->  -99.99999998000000 Inexact Rounded
-ddfma2019 fma  -9.999999999 -9.999999999   0e+384  ->   99.99999998000000 Inexact Rounded
-
--- zeros, etc.
-ddfma2021 fma   0      0       0e+384  ->   0
-ddfma2022 fma   0     -0       0e+384  ->   0
-ddfma2023 fma  -0      0       0e+384  ->   0
-ddfma2024 fma  -0     -0       0e+384  ->   0
-ddfma2025 fma  -0.0   -0.0     0e+384  ->   0.00
-ddfma2026 fma  -0.0   -0.0     0e+384  ->   0.00
-ddfma2027 fma  -0.0   -0.0     0e+384  ->   0.00
-ddfma2028 fma  -0.0   -0.0     0e+384  ->   0.00
-ddfma2030 fma   5.00   1E-3    0e+384  ->   0.00500
-ddfma2031 fma   00.00  0.000   0e+384  ->   0.00000
-ddfma2032 fma   00.00  0E-3    0e+384  ->   0.00000     -- rhs is 0
-ddfma2033 fma   0E-3   00.00   0e+384  ->   0.00000     -- lhs is 0
-ddfma2034 fma  -5.00   1E-3    0e+384  ->  -0.00500
-ddfma2035 fma  -00.00  0.000   0e+384  ->   0.00000
-ddfma2036 fma  -00.00  0E-3    0e+384  ->   0.00000     -- rhs is 0
-ddfma2037 fma  -0E-3   00.00   0e+384  ->   0.00000     -- lhs is 0
-ddfma2038 fma   5.00  -1E-3    0e+384  ->  -0.00500
-ddfma2039 fma   00.00 -0.000   0e+384  ->   0.00000
-ddfma2040 fma   00.00 -0E-3    0e+384  ->   0.00000     -- rhs is 0
-ddfma2041 fma   0E-3  -00.00   0e+384  ->   0.00000     -- lhs is 0
-ddfma2042 fma  -5.00  -1E-3    0e+384  ->   0.00500
-ddfma2043 fma  -00.00 -0.000   0e+384  ->   0.00000
-ddfma2044 fma  -00.00 -0E-3    0e+384  ->   0.00000     -- rhs is 0
-ddfma2045 fma  -0E-3  -00.00  -0e+384  ->   0.00000     -- lhs is 0
-ddfma2046 fma  -0E-3   00.00  -0e+384  ->  -0.00000
-ddfma2047 fma   0E-3  -00.00  -0e+384  ->  -0.00000
-ddfma2048 fma   0E-3   00.00  -0e+384  ->   0.00000
-
--- examples from decarith
-ddfma2050 fma  1.20 3          0e+384  ->  3.60
-ddfma2051 fma  7    3          0e+384  ->  21
-ddfma2052 fma  0.9  0.8        0e+384  ->  0.72
-ddfma2053 fma  0.9  -0         0e+384  ->  0.0
-ddfma2054 fma  654321 654321   0e+384  ->  428135971041
-
-ddfma2060 fma  123.45 1e7    0e+384  ->   1.2345E+9
-ddfma2061 fma  123.45 1e8    0e+384  ->   1.2345E+10
-ddfma2062 fma  123.45 1e+9   0e+384  ->   1.2345E+11
-ddfma2063 fma  123.45 1e10   0e+384  ->   1.2345E+12
-ddfma2064 fma  123.45 1e11   0e+384  ->   1.2345E+13
-ddfma2065 fma  123.45 1e12   0e+384  ->   1.2345E+14
-ddfma2066 fma  123.45 1e13   0e+384  ->   1.2345E+15
-
-
--- test some intermediate lengths
---                    1234567890123456
-ddfma2080 fma  0.1 1230123456456789       0e+384  ->  123012345645678.9
-ddfma2084 fma  0.1 1230123456456789       0e+384  ->  123012345645678.9
-ddfma2090 fma  1230123456456789     0.1   0e+384  ->  123012345645678.9
-ddfma2094 fma  1230123456456789     0.1   0e+384  ->  123012345645678.9
-
--- test some more edge cases and carries
-ddfma2101 fma  9 9     0e+384  ->  81
-ddfma2102 fma  9 90     0e+384  ->  810
-ddfma2103 fma  9 900     0e+384  ->  8100
-ddfma2104 fma  9 9000     0e+384  ->  81000
-ddfma2105 fma  9 90000     0e+384  ->  810000
-ddfma2106 fma  9 900000     0e+384  ->  8100000
-ddfma2107 fma  9 9000000     0e+384  ->  81000000
-ddfma2108 fma  9 90000000     0e+384  ->  810000000
-ddfma2109 fma  9 900000000     0e+384  ->  8100000000
-ddfma2110 fma  9 9000000000     0e+384  ->  81000000000
-ddfma2111 fma  9 90000000000     0e+384  ->  810000000000
-ddfma2112 fma  9 900000000000     0e+384  ->  8100000000000
-ddfma2113 fma  9 9000000000000     0e+384  ->  81000000000000
-ddfma2114 fma  9 90000000000000     0e+384  ->  810000000000000
-ddfma2115 fma  9 900000000000000     0e+384  ->  8100000000000000
---ddfma2116 fma  9 9000000000000000     0e+384  ->  81000000000000000
---ddfma2117 fma  9 90000000000000000     0e+384  ->  810000000000000000
---ddfma2118 fma  9 900000000000000000     0e+384  ->  8100000000000000000
---ddfma2119 fma  9 9000000000000000000     0e+384  ->  81000000000000000000
---ddfma2120 fma  9 90000000000000000000     0e+384  ->  810000000000000000000
---ddfma2121 fma  9 900000000000000000000     0e+384  ->  8100000000000000000000
---ddfma2122 fma  9 9000000000000000000000     0e+384  ->  81000000000000000000000
---ddfma2123 fma  9 90000000000000000000000     0e+384  ->  810000000000000000000000
--- test some more edge cases without carries
-ddfma2131 fma  3 3     0e+384  ->  9
-ddfma2132 fma  3 30     0e+384  ->  90
-ddfma2133 fma  3 300     0e+384  ->  900
-ddfma2134 fma  3 3000     0e+384  ->  9000
-ddfma2135 fma  3 30000     0e+384  ->  90000
-ddfma2136 fma  3 300000     0e+384  ->  900000
-ddfma2137 fma  3 3000000     0e+384  ->  9000000
-ddfma2138 fma  3 30000000     0e+384  ->  90000000
-ddfma2139 fma  3 300000000     0e+384  ->  900000000
-ddfma2140 fma  3 3000000000     0e+384  ->  9000000000
-ddfma2141 fma  3 30000000000     0e+384  ->  90000000000
-ddfma2142 fma  3 300000000000     0e+384  ->  900000000000
-ddfma2143 fma  3 3000000000000     0e+384  ->  9000000000000
-ddfma2144 fma  3 30000000000000     0e+384  ->  90000000000000
-ddfma2145 fma  3 300000000000000     0e+384  ->  900000000000000
-
--- test some edge cases with exact rounding
-ddfma2301 fma  9 9     0e+384  ->  81
-ddfma2302 fma  9 90     0e+384  ->  810
-ddfma2303 fma  9 900     0e+384  ->  8100
-ddfma2304 fma  9 9000     0e+384  ->  81000
-ddfma2305 fma  9 90000     0e+384  ->  810000
-ddfma2306 fma  9 900000     0e+384  ->  8100000
-ddfma2307 fma  9 9000000     0e+384  ->  81000000
-ddfma2308 fma  9 90000000     0e+384  ->  810000000
-ddfma2309 fma  9 900000000     0e+384  ->  8100000000
-ddfma2310 fma  9 9000000000     0e+384  ->  81000000000
-ddfma2311 fma  9 90000000000     0e+384  ->  810000000000
-ddfma2312 fma  9 900000000000     0e+384  ->  8100000000000
-ddfma2313 fma  9 9000000000000     0e+384  ->  81000000000000
-ddfma2314 fma  9 90000000000000     0e+384  ->  810000000000000
-ddfma2315 fma  9 900000000000000     0e+384  ->  8100000000000000
-ddfma2316 fma  9 9000000000000000     0e+384  ->  8.100000000000000E+16  Rounded
-ddfma2317 fma  90 9000000000000000     0e+384  ->  8.100000000000000E+17  Rounded
-ddfma2318 fma  900 9000000000000000     0e+384  ->  8.100000000000000E+18  Rounded
-ddfma2319 fma  9000 9000000000000000     0e+384  ->  8.100000000000000E+19  Rounded
-ddfma2320 fma  90000 9000000000000000     0e+384  ->  8.100000000000000E+20  Rounded
-ddfma2321 fma  900000 9000000000000000     0e+384  ->  8.100000000000000E+21  Rounded
-ddfma2322 fma  9000000 9000000000000000     0e+384  ->  8.100000000000000E+22  Rounded
-ddfma2323 fma  90000000 9000000000000000     0e+384  ->  8.100000000000000E+23  Rounded
-
--- tryzeros cases
-ddfma2504  fma   0E-260 1000E-260    0e+384  ->  0E-398 Clamped
-ddfma2505  fma   100E+260 0E+260     0e+384  ->  0E+369 Clamped
-
--- mixed with zeros
-ddfma2541 fma   0    -1       0e+384  ->   0
-ddfma2542 fma  -0    -1       0e+384  ->   0
-ddfma2543 fma   0     1       0e+384  ->   0
-ddfma2544 fma  -0     1       0e+384  ->   0
-ddfma2545 fma  -1     0       0e+384  ->   0
-ddfma2546 fma  -1    -0       0e+384  ->   0
-ddfma2547 fma   1     0       0e+384  ->   0
-ddfma2548 fma   1    -0       0e+384  ->   0
-
-ddfma2551 fma   0.0  -1       0e+384  ->   0.0
-ddfma2552 fma  -0.0  -1       0e+384  ->   0.0
-ddfma2553 fma   0.0   1       0e+384  ->   0.0
-ddfma2554 fma  -0.0   1       0e+384  ->   0.0
-ddfma2555 fma  -1.0   0       0e+384  ->   0.0
-ddfma2556 fma  -1.0  -0       0e+384  ->   0.0
-ddfma2557 fma   1.0   0       0e+384  ->   0.0
-ddfma2558 fma   1.0  -0       0e+384  ->   0.0
-
-ddfma2561 fma   0    -1.0     0e+384  ->   0.0
-ddfma2562 fma  -0    -1.0     0e+384  ->   0.0
-ddfma2563 fma   0     1.0     0e+384  ->   0.0
-ddfma2564 fma  -0     1.0     0e+384  ->   0.0
-ddfma2565 fma  -1     0.0     0e+384  ->   0.0
-ddfma2566 fma  -1    -0.0     0e+384  ->   0.0
-ddfma2567 fma   1     0.0     0e+384  ->   0.0
-ddfma2568 fma   1    -0.0     0e+384  ->   0.0
-
-ddfma2571 fma   0.0  -1.0     0e+384  ->   0.00
-ddfma2572 fma  -0.0  -1.0     0e+384  ->   0.00
-ddfma2573 fma   0.0   1.0     0e+384  ->   0.00
-ddfma2574 fma  -0.0   1.0     0e+384  ->   0.00
-ddfma2575 fma  -1.0   0.0     0e+384  ->   0.00
-ddfma2576 fma  -1.0  -0.0     0e+384  ->   0.00
-ddfma2577 fma   1.0   0.0     0e+384  ->   0.00
-ddfma2578 fma   1.0  -0.0     0e+384  ->   0.00
-
--- Specials
-ddfma2580 fma   Inf  -Inf     0e+384  ->  -Infinity
-ddfma2581 fma   Inf  -1000    0e+384  ->  -Infinity
-ddfma2582 fma   Inf  -1       0e+384  ->  -Infinity
-ddfma2583 fma   Inf  -0       0e+384  ->   NaN  Invalid_operation
-ddfma2584 fma   Inf   0       0e+384  ->   NaN  Invalid_operation
-ddfma2585 fma   Inf   1       0e+384  ->   Infinity
-ddfma2586 fma   Inf   1000    0e+384  ->   Infinity
-ddfma2587 fma   Inf   Inf     0e+384  ->   Infinity
-ddfma2588 fma  -1000  Inf     0e+384  ->  -Infinity
-ddfma2589 fma  -Inf   Inf     0e+384  ->  -Infinity
-ddfma2590 fma  -1     Inf     0e+384  ->  -Infinity
-ddfma2591 fma  -0     Inf     0e+384  ->   NaN  Invalid_operation
-ddfma2592 fma   0     Inf     0e+384  ->   NaN  Invalid_operation
-ddfma2593 fma   1     Inf     0e+384  ->   Infinity
-ddfma2594 fma   1000  Inf     0e+384  ->   Infinity
-ddfma2595 fma   Inf   Inf     0e+384  ->   Infinity
-
-ddfma2600 fma  -Inf  -Inf     0e+384  ->   Infinity
-ddfma2601 fma  -Inf  -1000    0e+384  ->   Infinity
-ddfma2602 fma  -Inf  -1       0e+384  ->   Infinity
-ddfma2603 fma  -Inf  -0       0e+384  ->   NaN  Invalid_operation
-ddfma2604 fma  -Inf   0       0e+384  ->   NaN  Invalid_operation
-ddfma2605 fma  -Inf   1       0e+384  ->  -Infinity
-ddfma2606 fma  -Inf   1000    0e+384  ->  -Infinity
-ddfma2607 fma  -Inf   Inf     0e+384  ->  -Infinity
-ddfma2608 fma  -1000  Inf     0e+384  ->  -Infinity
-ddfma2609 fma  -Inf  -Inf     0e+384  ->   Infinity
-ddfma2610 fma  -1    -Inf     0e+384  ->   Infinity
-ddfma2611 fma  -0    -Inf     0e+384  ->   NaN  Invalid_operation
-ddfma2612 fma   0    -Inf     0e+384  ->   NaN  Invalid_operation
-ddfma2613 fma   1    -Inf     0e+384  ->  -Infinity
-ddfma2614 fma   1000 -Inf     0e+384  ->  -Infinity
-ddfma2615 fma   Inf  -Inf     0e+384  ->  -Infinity
-
-ddfma2621 fma   NaN -Inf      0e+384  ->   NaN
-ddfma2622 fma   NaN -1000     0e+384  ->   NaN
-ddfma2623 fma   NaN -1        0e+384  ->   NaN
-ddfma2624 fma   NaN -0        0e+384  ->   NaN
-ddfma2625 fma   NaN  0        0e+384  ->   NaN
-ddfma2626 fma   NaN  1        0e+384  ->   NaN
-ddfma2627 fma   NaN  1000     0e+384  ->   NaN
-ddfma2628 fma   NaN  Inf      0e+384  ->   NaN
-ddfma2629 fma   NaN  NaN      0e+384  ->   NaN
-ddfma2630 fma  -Inf  NaN      0e+384  ->   NaN
-ddfma2631 fma  -1000 NaN      0e+384  ->   NaN
-ddfma2632 fma  -1    NaN      0e+384  ->   NaN
-ddfma2633 fma  -0    NaN      0e+384  ->   NaN
-ddfma2634 fma   0    NaN      0e+384  ->   NaN
-ddfma2635 fma   1    NaN      0e+384  ->   NaN
-ddfma2636 fma   1000 NaN      0e+384  ->   NaN
-ddfma2637 fma   Inf  NaN      0e+384  ->   NaN
-
-ddfma2641 fma   sNaN -Inf     0e+384  ->   NaN  Invalid_operation
-ddfma2642 fma   sNaN -1000    0e+384  ->   NaN  Invalid_operation
-ddfma2643 fma   sNaN -1       0e+384  ->   NaN  Invalid_operation
-ddfma2644 fma   sNaN -0       0e+384  ->   NaN  Invalid_operation
-ddfma2645 fma   sNaN  0       0e+384  ->   NaN  Invalid_operation
-ddfma2646 fma   sNaN  1       0e+384  ->   NaN  Invalid_operation
-ddfma2647 fma   sNaN  1000    0e+384  ->   NaN  Invalid_operation
-ddfma2648 fma   sNaN  NaN     0e+384  ->   NaN  Invalid_operation
-ddfma2649 fma   sNaN sNaN     0e+384  ->   NaN  Invalid_operation
-ddfma2650 fma   NaN  sNaN     0e+384  ->   NaN  Invalid_operation
-ddfma2651 fma  -Inf  sNaN     0e+384  ->   NaN  Invalid_operation
-ddfma2652 fma  -1000 sNaN     0e+384  ->   NaN  Invalid_operation
-ddfma2653 fma  -1    sNaN     0e+384  ->   NaN  Invalid_operation
-ddfma2654 fma  -0    sNaN     0e+384  ->   NaN  Invalid_operation
-ddfma2655 fma   0    sNaN     0e+384  ->   NaN  Invalid_operation
-ddfma2656 fma   1    sNaN     0e+384  ->   NaN  Invalid_operation
-ddfma2657 fma   1000 sNaN     0e+384  ->   NaN  Invalid_operation
-ddfma2658 fma   Inf  sNaN     0e+384  ->   NaN  Invalid_operation
-ddfma2659 fma   NaN  sNaN     0e+384  ->   NaN  Invalid_operation
-
--- propagating NaNs
-ddfma2661 fma   NaN9 -Inf     0e+384  ->   NaN9
-ddfma2662 fma   NaN8  999     0e+384  ->   NaN8
-ddfma2663 fma   NaN71 Inf     0e+384  ->   NaN71
-ddfma2664 fma   NaN6  NaN5    0e+384  ->   NaN6
-ddfma2665 fma  -Inf   NaN4    0e+384  ->   NaN4
-ddfma2666 fma  -999   NaN33   0e+384  ->   NaN33
-ddfma2667 fma   Inf   NaN2    0e+384  ->   NaN2
-
-ddfma2671 fma   sNaN99 -Inf      0e+384  ->   NaN99 Invalid_operation
-ddfma2672 fma   sNaN98 -11       0e+384  ->   NaN98 Invalid_operation
-ddfma2673 fma   sNaN97  NaN      0e+384  ->   NaN97 Invalid_operation
-ddfma2674 fma   sNaN16 sNaN94    0e+384  ->   NaN16 Invalid_operation
-ddfma2675 fma   NaN95  sNaN93    0e+384  ->   NaN93 Invalid_operation
-ddfma2676 fma  -Inf    sNaN92    0e+384  ->   NaN92 Invalid_operation
-ddfma2677 fma   088    sNaN91    0e+384  ->   NaN91 Invalid_operation
-ddfma2678 fma   Inf    sNaN90    0e+384  ->   NaN90 Invalid_operation
-ddfma2679 fma   NaN    sNaN89    0e+384  ->   NaN89 Invalid_operation
-
-ddfma2681 fma  -NaN9 -Inf     0e+384  ->  -NaN9
-ddfma2682 fma  -NaN8  999     0e+384  ->  -NaN8
-ddfma2683 fma  -NaN71 Inf     0e+384  ->  -NaN71
-ddfma2684 fma  -NaN6 -NaN5    0e+384  ->  -NaN6
-ddfma2685 fma  -Inf  -NaN4    0e+384  ->  -NaN4
-ddfma2686 fma  -999  -NaN33   0e+384  ->  -NaN33
-ddfma2687 fma   Inf  -NaN2    0e+384  ->  -NaN2
-
-ddfma2691 fma  -sNaN99 -Inf      0e+384  ->  -NaN99 Invalid_operation
-ddfma2692 fma  -sNaN98 -11       0e+384  ->  -NaN98 Invalid_operation
-ddfma2693 fma  -sNaN97  NaN      0e+384  ->  -NaN97 Invalid_operation
-ddfma2694 fma  -sNaN16 -sNaN94   0e+384  ->  -NaN16 Invalid_operation
-ddfma2695 fma  -NaN95  -sNaN93   0e+384  ->  -NaN93 Invalid_operation
-ddfma2696 fma  -Inf    -sNaN92   0e+384  ->  -NaN92 Invalid_operation
-ddfma2697 fma   088    -sNaN91   0e+384  ->  -NaN91 Invalid_operation
-ddfma2698 fma   Inf    -sNaN90   0e+384  ->  -NaN90 Invalid_operation
-ddfma2699 fma  -NaN    -sNaN89   0e+384  ->  -NaN89 Invalid_operation
-
-ddfma2701 fma  -NaN  -Inf     0e+384  ->  -NaN
-ddfma2702 fma  -NaN   999     0e+384  ->  -NaN
-ddfma2703 fma  -NaN   Inf     0e+384  ->  -NaN
-ddfma2704 fma  -NaN  -NaN     0e+384  ->  -NaN
-ddfma2705 fma  -Inf  -NaN0    0e+384  ->  -NaN
-ddfma2706 fma  -999  -NaN     0e+384  ->  -NaN
-ddfma2707 fma   Inf  -NaN     0e+384  ->  -NaN
-
-ddfma2711 fma  -sNaN   -Inf      0e+384  ->  -NaN Invalid_operation
-ddfma2712 fma  -sNaN   -11       0e+384  ->  -NaN Invalid_operation
-ddfma2713 fma  -sNaN00  NaN      0e+384  ->  -NaN Invalid_operation
-ddfma2714 fma  -sNaN   -sNaN     0e+384  ->  -NaN Invalid_operation
-ddfma2715 fma  -NaN    -sNaN     0e+384  ->  -NaN Invalid_operation
-ddfma2716 fma  -Inf    -sNaN     0e+384  ->  -NaN Invalid_operation
-ddfma2717 fma   088    -sNaN     0e+384  ->  -NaN Invalid_operation
-ddfma2718 fma   Inf    -sNaN     0e+384  ->  -NaN Invalid_operation
-ddfma2719 fma  -NaN    -sNaN     0e+384  ->  -NaN Invalid_operation
-
--- overflow and underflow tests .. note subnormal results
--- signs
-ddfma2751 fma   1e+277  1e+311   0e+384  ->   Infinity Overflow Inexact Rounded
-ddfma2752 fma   1e+277 -1e+311   0e+384  ->  -Infinity Overflow Inexact Rounded
-ddfma2753 fma  -1e+277  1e+311   0e+384  ->  -Infinity Overflow Inexact Rounded
-ddfma2754 fma  -1e+277 -1e+311   0e+384  ->   Infinity Overflow Inexact Rounded
-ddfma2755 fma   1e-277  1e-311   0e+384  ->   0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddfma2756 fma   1e-277 -1e-311   0e+384  ->  -0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddfma2757 fma  -1e-277  1e-311   0e+384  ->  -0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddfma2758 fma  -1e-277 -1e-311   0e+384  ->   0E-398 Underflow Subnormal Inexact Rounded Clamped
-
--- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
-ddfma2760 fma  1e-291 1e-101   0e+384  ->  1E-392 Subnormal
-ddfma2761 fma  1e-291 1e-102   0e+384  ->  1E-393 Subnormal
-ddfma2762 fma  1e-291 1e-103   0e+384  ->  1E-394 Subnormal
-ddfma2763 fma  1e-291 1e-104   0e+384  ->  1E-395 Subnormal
-ddfma2764 fma  1e-291 1e-105   0e+384  ->  1E-396 Subnormal
-ddfma2765 fma  1e-291 1e-106   0e+384  ->  1E-397 Subnormal
-ddfma2766 fma  1e-291 1e-107   0e+384  ->  1E-398 Subnormal
-ddfma2767 fma  1e-291 1e-108   0e+384  ->  0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddfma2768 fma  1e-291 1e-109   0e+384  ->  0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddfma2769 fma  1e-291 1e-110   0e+384  ->  0E-398 Underflow Subnormal Inexact Rounded Clamped
--- [no equivalent of 'subnormal' for overflow]
-ddfma2770 fma  1e+60 1e+321   0e+384  ->  1.000000000000E+381  Clamped
-ddfma2771 fma  1e+60 1e+322   0e+384  ->  1.0000000000000E+382  Clamped
-ddfma2772 fma  1e+60 1e+323   0e+384  ->  1.00000000000000E+383  Clamped
-ddfma2773 fma  1e+60 1e+324   0e+384  ->  1.000000000000000E+384  Clamped
-ddfma2774 fma  1e+60 1e+325   0e+384  ->  Infinity Overflow Inexact Rounded
-ddfma2775 fma  1e+60 1e+326   0e+384  ->  Infinity Overflow Inexact Rounded
-ddfma2776 fma  1e+60 1e+327   0e+384  ->  Infinity Overflow Inexact Rounded
-ddfma2777 fma  1e+60 1e+328   0e+384  ->  Infinity Overflow Inexact Rounded
-ddfma2778 fma  1e+60 1e+329   0e+384  ->  Infinity Overflow Inexact Rounded
-ddfma2779 fma  1e+60 1e+330   0e+384  ->  Infinity Overflow Inexact Rounded
-
-ddfma2801 fma   1.0000E-394  1       0e+384  ->  1.0000E-394 Subnormal
-ddfma2802 fma   1.000E-394   1e-1    0e+384  ->  1.000E-395  Subnormal
-ddfma2803 fma   1.00E-394    1e-2    0e+384  ->  1.00E-396   Subnormal
-ddfma2804 fma   1.0E-394     1e-3    0e+384  ->  1.0E-397    Subnormal
-ddfma2805 fma   1.0E-394     1e-4    0e+384  ->  1E-398     Subnormal Rounded
-ddfma2806 fma   1.3E-394     1e-4    0e+384  ->  1E-398     Underflow Subnormal Inexact Rounded
-ddfma2807 fma   1.5E-394     1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded
-ddfma2808 fma   1.7E-394     1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded
-ddfma2809 fma   2.3E-394     1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded
-ddfma2810 fma   2.5E-394     1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded
-ddfma2811 fma   2.7E-394     1e-4    0e+384  ->  3E-398     Underflow Subnormal Inexact Rounded
-ddfma2812 fma   1.49E-394    1e-4    0e+384  ->  1E-398     Underflow Subnormal Inexact Rounded
-ddfma2813 fma   1.50E-394    1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded
-ddfma2814 fma   1.51E-394    1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded
-ddfma2815 fma   2.49E-394    1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded
-ddfma2816 fma   2.50E-394    1e-4    0e+384  ->  2E-398     Underflow Subnormal Inexact Rounded
-ddfma2817 fma   2.51E-394    1e-4    0e+384  ->  3E-398     Underflow Subnormal Inexact Rounded
-
-ddfma2818 fma   1E-394       1e-4    0e+384  ->  1E-398     Subnormal
-ddfma2819 fma   3E-394       1e-5    0e+384  ->  0E-398     Underflow Subnormal Inexact Rounded Clamped
-ddfma2820 fma   5E-394       1e-5    0e+384  ->  0E-398     Underflow Subnormal Inexact Rounded Clamped
-ddfma2821 fma   7E-394       1e-5    0e+384  ->  1E-398     Underflow Subnormal Inexact Rounded
-ddfma2822 fma   9E-394       1e-5    0e+384  ->  1E-398     Underflow Subnormal Inexact Rounded
-ddfma2823 fma   9.9E-394     1e-5    0e+384  ->  1E-398     Underflow Subnormal Inexact Rounded
-
-ddfma2824 fma   1E-394      -1e-4    0e+384  ->  -1E-398    Subnormal
-ddfma2825 fma   3E-394      -1e-5    0e+384  ->  -0E-398    Underflow Subnormal Inexact Rounded Clamped
-ddfma2826 fma  -5E-394       1e-5    0e+384  ->  -0E-398    Underflow Subnormal Inexact Rounded Clamped
-ddfma2827 fma   7E-394      -1e-5    0e+384  ->  -1E-398    Underflow Subnormal Inexact Rounded
-ddfma2828 fma  -9E-394       1e-5    0e+384  ->  -1E-398    Underflow Subnormal Inexact Rounded
-ddfma2829 fma   9.9E-394    -1e-5    0e+384  ->  -1E-398    Underflow Subnormal Inexact Rounded
-ddfma2830 fma   3.0E-394    -1e-5    0e+384  ->  -0E-398    Underflow Subnormal Inexact Rounded Clamped
-
-ddfma2831 fma   1.0E-199     1e-200   0e+384  ->  0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddfma2832 fma   1.0E-199     1e-199   0e+384  ->  1E-398    Subnormal Rounded
-ddfma2833 fma   1.0E-199     1e-198   0e+384  ->  1.0E-397    Subnormal
-ddfma2834 fma   2.0E-199     2e-198   0e+384  ->  4.0E-397    Subnormal
-ddfma2835 fma   4.0E-199     4e-198   0e+384  ->  1.60E-396   Subnormal
-ddfma2836 fma  10.0E-199    10e-198   0e+384  ->  1.000E-395  Subnormal
-ddfma2837 fma  30.0E-199    30e-198   0e+384  ->  9.000E-395  Subnormal
-ddfma2838 fma  40.0E-199    40e-188   0e+384  ->  1.6000E-384 Subnormal
-ddfma2839 fma  40.0E-199    40e-187   0e+384  ->  1.6000E-383
-ddfma2840 fma  40.0E-199    40e-186   0e+384  ->  1.6000E-382
-
--- Long operand overflow may be a different path
-ddfma2870 fma  100  9.999E+383           0e+384  ->   Infinity Inexact Overflow Rounded
-ddfma2871 fma  100 -9.999E+383       0e+384  ->  -Infinity Inexact Overflow Rounded
-ddfma2872 fma       9.999E+383 100   0e+384  ->   Infinity Inexact Overflow Rounded
-ddfma2873 fma      -9.999E+383 100   0e+384  ->  -Infinity Inexact Overflow Rounded
-
--- check for double-rounded subnormals
-ddfma2881 fma   1.2347E-355 1.2347E-40    0e+384  ->   1.524E-395 Inexact Rounded Subnormal Underflow
-ddfma2882 fma   1.234E-355 1.234E-40      0e+384  ->   1.523E-395 Inexact Rounded Subnormal Underflow
-ddfma2883 fma   1.23E-355  1.23E-40       0e+384  ->   1.513E-395 Inexact Rounded Subnormal Underflow
-ddfma2884 fma   1.2E-355   1.2E-40        0e+384  ->   1.44E-395  Subnormal
-ddfma2885 fma   1.2E-355   1.2E-41        0e+384  ->   1.44E-396  Subnormal
-ddfma2886 fma   1.2E-355   1.2E-42        0e+384  ->   1.4E-397   Subnormal Inexact Rounded Underflow
-ddfma2887 fma   1.2E-355   1.3E-42        0e+384  ->   1.6E-397   Subnormal Inexact Rounded Underflow
-ddfma2888 fma   1.3E-355   1.3E-42        0e+384  ->   1.7E-397   Subnormal Inexact Rounded Underflow
-ddfma2889 fma   1.3E-355   1.3E-43        0e+384  ->     2E-398   Subnormal Inexact Rounded Underflow
-ddfma2890 fma   1.3E-356   1.3E-43        0e+384  ->     0E-398   Clamped Subnormal Inexact Rounded Underflow
-
-ddfma2891 fma   1.2345E-39   1.234E-355   0e+384  ->   1.5234E-394 Inexact Rounded Subnormal Underflow
-ddfma2892 fma   1.23456E-39  1.234E-355   0e+384  ->   1.5234E-394 Inexact Rounded Subnormal Underflow
-ddfma2893 fma   1.2345E-40   1.234E-355   0e+384  ->   1.523E-395  Inexact Rounded Subnormal Underflow
-ddfma2894 fma   1.23456E-40  1.234E-355   0e+384  ->   1.523E-395  Inexact Rounded Subnormal Underflow
-ddfma2895 fma   1.2345E-41   1.234E-355   0e+384  ->   1.52E-396   Inexact Rounded Subnormal Underflow
-ddfma2896 fma   1.23456E-41  1.234E-355   0e+384  ->   1.52E-396   Inexact Rounded Subnormal Underflow
-
--- Now explore the case where we get a normal result with Underflow
-ddfma2900 fma   0.3000000000E-191 0.3000000000E-191   0e+384  ->  9.00000000000000E-384 Subnormal Rounded
-ddfma2901 fma   0.3000000001E-191 0.3000000001E-191   0e+384  ->  9.00000000600000E-384 Underflow Inexact Subnormal Rounded
-ddfma2902 fma   9.999999999999999E-383  0.0999999999999           0e+384  ->  9.99999999999000E-384 Underflow Inexact Subnormal Rounded
-ddfma2903 fma   9.999999999999999E-383  0.09999999999999          0e+384  ->  9.99999999999900E-384 Underflow Inexact Subnormal Rounded
-ddfma2904 fma   9.999999999999999E-383  0.099999999999999         0e+384  ->  9.99999999999990E-384 Underflow Inexact Subnormal Rounded
-ddfma2905 fma   9.999999999999999E-383  0.0999999999999999        0e+384  ->  9.99999999999999E-384 Underflow Inexact Subnormal Rounded
--- prove operands are exact
-ddfma2906 fma   9.999999999999999E-383  1                         0e+384  ->  9.999999999999999E-383
-ddfma2907 fma                        1  0.09999999999999999       0e+384  ->  0.09999999999999999
--- the next rounds to Nmin
-ddfma2908 fma   9.999999999999999E-383  0.09999999999999999       0e+384  ->  1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-
--- hugest
-ddfma2909 fma   9999999999999999 9999999999999999   0e+384  ->  9.999999999999998E+31 Inexact Rounded
-
--- Null tests
-ddfma2990 fma  10  #   0e+384  ->  NaN Invalid_operation
-ddfma2991 fma   # 10   0e+384  ->  NaN Invalid_operation
-
-
--- ADDITION TESTS ------------------------------------------------------
-
--- [first group are 'quick confidence check']
-ddfma3001 fma  1  1       1       ->  2
-ddfma3002 fma  1  2       3       ->  5
-ddfma3003 fma  1  '5.75'  '3.3'   ->  9.05
-ddfma3004 fma  1  '5'     '-3'    ->  2
-ddfma3005 fma  1  '-5'    '-3'    ->  -8
-ddfma3006 fma  1  '-7'    '2.5'   ->  -4.5
-ddfma3007 fma  1  '0.7'   '0.3'   ->  1.0
-ddfma3008 fma  1  '1.25'  '1.25'  ->  2.50
-ddfma3009 fma  1  '1.23456789'  '1.00000000' -> '2.23456789'
-ddfma3010 fma  1  '1.23456789'  '1.00000011' -> '2.23456800'
-
---             1234567890123456      1234567890123456
-ddfma3011 fma  1  '0.4444444444444446'  '0.5555555555555555' -> '1.000000000000000' Inexact Rounded
-ddfma3012 fma  1  '0.4444444444444445'  '0.5555555555555555' -> '1.000000000000000' Rounded
-ddfma3013 fma  1  '0.4444444444444444'  '0.5555555555555555' -> '0.9999999999999999'
-ddfma3014 fma  1    '4444444444444444' '0.49'   -> '4444444444444444' Inexact Rounded
-ddfma3015 fma  1    '4444444444444444' '0.499'  -> '4444444444444444' Inexact Rounded
-ddfma3016 fma  1    '4444444444444444' '0.4999' -> '4444444444444444' Inexact Rounded
-ddfma3017 fma  1    '4444444444444444' '0.5000' -> '4444444444444444' Inexact Rounded
-ddfma3018 fma  1    '4444444444444444' '0.5001' -> '4444444444444445' Inexact Rounded
-ddfma3019 fma  1    '4444444444444444' '0.501'  -> '4444444444444445' Inexact Rounded
-ddfma3020 fma  1    '4444444444444444' '0.51'   -> '4444444444444445' Inexact Rounded
-
-ddfma3021 fma  1  0 1 -> 1
-ddfma3022 fma  1  1 1 -> 2
-ddfma3023 fma  1  2 1 -> 3
-ddfma3024 fma  1  3 1 -> 4
-ddfma3025 fma  1  4 1 -> 5
-ddfma3026 fma  1  5 1 -> 6
-ddfma3027 fma  1  6 1 -> 7
-ddfma3028 fma  1  7 1 -> 8
-ddfma3029 fma  1  8 1 -> 9
-ddfma3030 fma  1  9 1 -> 10
-
--- some carrying effects
-ddfma3031 fma  1  '0.9998'  '0.0000' -> '0.9998'
-ddfma3032 fma  1  '0.9998'  '0.0001' -> '0.9999'
-ddfma3033 fma  1  '0.9998'  '0.0002' -> '1.0000'
-ddfma3034 fma  1  '0.9998'  '0.0003' -> '1.0001'
-
-ddfma3035 fma  1  '70'  '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
-ddfma3036 fma  1  '700'  '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
-ddfma3037 fma  1  '7000'  '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
-ddfma3038 fma  1  '70000'  '10000e+16' -> '1.000000000000001E+20' Inexact Rounded
-ddfma3039 fma  1  '700000'  '10000e+16' -> '1.000000000000007E+20' Rounded
-
--- symmetry:
-ddfma3040 fma  1  '10000e+16'  '70' -> '1.000000000000000E+20' Inexact Rounded
-ddfma3041 fma  1  '10000e+16'  '700' -> '1.000000000000000E+20' Inexact Rounded
-ddfma3042 fma  1  '10000e+16'  '7000' -> '1.000000000000000E+20' Inexact Rounded
-ddfma3044 fma  1  '10000e+16'  '70000' -> '1.000000000000001E+20' Inexact Rounded
-ddfma3045 fma  1  '10000e+16'  '700000' -> '1.000000000000007E+20' Rounded
-
--- same, without rounding
-ddfma3046 fma  1  '10000e+9'  '7' -> '10000000000007'
-ddfma3047 fma  1  '10000e+9'  '70' -> '10000000000070'
-ddfma3048 fma  1  '10000e+9'  '700' -> '10000000000700'
-ddfma3049 fma  1  '10000e+9'  '7000' -> '10000000007000'
-ddfma3050 fma  1  '10000e+9'  '70000' -> '10000000070000'
-ddfma3051 fma  1  '10000e+9'  '700000' -> '10000000700000'
-ddfma3052 fma  1  '10000e+9'  '7000000' -> '10000007000000'
-
--- examples from decarith
-ddfma3053 fma  1  '12' '7.00' -> '19.00'
-ddfma3054 fma  1  '1.3' '-1.07' -> '0.23'
-ddfma3055 fma  1  '1.3' '-1.30' -> '0.00'
-ddfma3056 fma  1  '1.3' '-2.07' -> '-0.77'
-ddfma3057 fma  1  '1E+2' '1E+4' -> '1.01E+4'
-
--- leading zero preservation
-ddfma3061 fma  1  1 '0.0001' -> '1.0001'
-ddfma3062 fma  1  1 '0.00001' -> '1.00001'
-ddfma3063 fma  1  1 '0.000001' -> '1.000001'
-ddfma3064 fma  1  1 '0.0000001' -> '1.0000001'
-ddfma3065 fma  1  1 '0.00000001' -> '1.00000001'
-
--- some funny zeros [in case of bad signum]
-ddfma3070 fma  1  1  0    -> 1
-ddfma3071 fma  1  1 0.    -> 1
-ddfma3072 fma  1  1  .0   -> 1.0
-ddfma3073 fma  1  1 0.0   -> 1.0
-ddfma3074 fma  1  1 0.00  -> 1.00
-ddfma3075 fma  1   0  1   -> 1
-ddfma3076 fma  1  0.  1   -> 1
-ddfma3077 fma  1   .0 1   -> 1.0
-ddfma3078 fma  1  0.0 1   -> 1.0
-ddfma3079 fma  1  0.00 1  -> 1.00
-
--- some carries
-ddfma3080 fma  1  999999998 1  -> 999999999
-ddfma3081 fma  1  999999999 1  -> 1000000000
-ddfma3082 fma  1   99999999 1  -> 100000000
-ddfma3083 fma  1    9999999 1  -> 10000000
-ddfma3084 fma  1     999999 1  -> 1000000
-ddfma3085 fma  1      99999 1  -> 100000
-ddfma3086 fma  1       9999 1  -> 10000
-ddfma3087 fma  1        999 1  -> 1000
-ddfma3088 fma  1         99 1  -> 100
-ddfma3089 fma  1          9 1  -> 10
-
-
--- more LHS swaps
-ddfma3090 fma  1  '-56267E-10'   0 ->  '-0.0000056267'
-ddfma3091 fma  1  '-56267E-6'    0 ->  '-0.056267'
-ddfma3092 fma  1  '-56267E-5'    0 ->  '-0.56267'
-ddfma3093 fma  1  '-56267E-4'    0 ->  '-5.6267'
-ddfma3094 fma  1  '-56267E-3'    0 ->  '-56.267'
-ddfma3095 fma  1  '-56267E-2'    0 ->  '-562.67'
-ddfma3096 fma  1  '-56267E-1'    0 ->  '-5626.7'
-ddfma3097 fma  1  '-56267E-0'    0 ->  '-56267'
-ddfma3098 fma  1  '-5E-10'       0 ->  '-5E-10'
-ddfma3099 fma  1  '-5E-7'        0 ->  '-5E-7'
-ddfma3100 fma  1  '-5E-6'        0 ->  '-0.000005'
-ddfma3101 fma  1  '-5E-5'        0 ->  '-0.00005'
-ddfma3102 fma  1  '-5E-4'        0 ->  '-0.0005'
-ddfma3103 fma  1  '-5E-1'        0 ->  '-0.5'
-ddfma3104 fma  1  '-5E0'         0 ->  '-5'
-ddfma3105 fma  1  '-5E1'         0 ->  '-50'
-ddfma3106 fma  1  '-5E5'         0 ->  '-500000'
-ddfma3107 fma  1  '-5E15'        0 ->  '-5000000000000000'
-ddfma3108 fma  1  '-5E16'        0 ->  '-5.000000000000000E+16'  Rounded
-ddfma3109 fma  1  '-5E17'        0 ->  '-5.000000000000000E+17'  Rounded
-ddfma3110 fma  1  '-5E18'        0 ->  '-5.000000000000000E+18'  Rounded
-ddfma3111 fma  1  '-5E100'       0 ->  '-5.000000000000000E+100' Rounded
-
--- more RHS swaps
-ddfma3113 fma  1  0  '-56267E-10' ->  '-0.0000056267'
-ddfma3114 fma  1  0  '-56267E-6'  ->  '-0.056267'
-ddfma3116 fma  1  0  '-56267E-5'  ->  '-0.56267'
-ddfma3117 fma  1  0  '-56267E-4'  ->  '-5.6267'
-ddfma3119 fma  1  0  '-56267E-3'  ->  '-56.267'
-ddfma3120 fma  1  0  '-56267E-2'  ->  '-562.67'
-ddfma3121 fma  1  0  '-56267E-1'  ->  '-5626.7'
-ddfma3122 fma  1  0  '-56267E-0'  ->  '-56267'
-ddfma3123 fma  1  0  '-5E-10'     ->  '-5E-10'
-ddfma3124 fma  1  0  '-5E-7'      ->  '-5E-7'
-ddfma3125 fma  1  0  '-5E-6'      ->  '-0.000005'
-ddfma3126 fma  1  0  '-5E-5'      ->  '-0.00005'
-ddfma3127 fma  1  0  '-5E-4'      ->  '-0.0005'
-ddfma3128 fma  1  0  '-5E-1'      ->  '-0.5'
-ddfma3129 fma  1  0  '-5E0'       ->  '-5'
-ddfma3130 fma  1  0  '-5E1'       ->  '-50'
-ddfma3131 fma  1  0  '-5E5'       ->  '-500000'
-ddfma3132 fma  1  0  '-5E15'      ->  '-5000000000000000'
-ddfma3133 fma  1  0  '-5E16'      ->  '-5.000000000000000E+16'   Rounded
-ddfma3134 fma  1  0  '-5E17'      ->  '-5.000000000000000E+17'   Rounded
-ddfma3135 fma  1  0  '-5E18'      ->  '-5.000000000000000E+18'   Rounded
-ddfma3136 fma  1  0  '-5E100'     ->  '-5.000000000000000E+100'  Rounded
-
--- related
-ddfma3137 fma  1   1  '0E-19'      ->  '1.000000000000000'  Rounded
-ddfma3138 fma  1  -1  '0E-19'      ->  '-1.000000000000000' Rounded
-ddfma3139 fma  1  '0E-19' 1        ->  '1.000000000000000'  Rounded
-ddfma3140 fma  1  '0E-19' -1       ->  '-1.000000000000000' Rounded
-ddfma3141 fma  1  1E+11   0.0000   ->  '100000000000.0000'
-ddfma3142 fma  1  1E+11   0.00000  ->  '100000000000.0000'  Rounded
-ddfma3143 fma  1  0.000   1E+12    ->  '1000000000000.000'
-ddfma3144 fma  1  0.0000  1E+12    ->  '1000000000000.000'  Rounded
-
--- [some of the next group are really constructor tests]
-ddfma3146 fma  1  '00.0'  0       ->  '0.0'
-ddfma3147 fma  1  '0.00'  0       ->  '0.00'
-ddfma3148 fma  1   0      '0.00'  ->  '0.00'
-ddfma3149 fma  1   0      '00.0'  ->  '0.0'
-ddfma3150 fma  1  '00.0'  '0.00'  ->  '0.00'
-ddfma3151 fma  1  '0.00'  '00.0'  ->  '0.00'
-ddfma3152 fma  1  '3'     '.3'    ->  '3.3'
-ddfma3153 fma  1  '3.'    '.3'    ->  '3.3'
-ddfma3154 fma  1  '3.0'   '.3'    ->  '3.3'
-ddfma3155 fma  1  '3.00'  '.3'    ->  '3.30'
-ddfma3156 fma  1  '3'     '3'     ->  '6'
-ddfma3157 fma  1  '3'     '+3'    ->  '6'
-ddfma3158 fma  1  '3'     '-3'    ->  '0'
-ddfma3159 fma  1  '0.3'   '-0.3'  ->  '0.0'
-ddfma3160 fma  1  '0.03'  '-0.03' ->  '0.00'
-
--- try borderline precision, with carries, etc.
-ddfma3161 fma  1  '1E+12' '-1'    -> '999999999999'
-ddfma3162 fma  1  '1E+12'  '1.11' -> '1000000000001.11'
-ddfma3163 fma  1  '1.11'  '1E+12' -> '1000000000001.11'
-ddfma3164 fma  1  '-1'    '1E+12' -> '999999999999'
-ddfma3165 fma  1  '7E+12' '-1'    -> '6999999999999'
-ddfma3166 fma  1  '7E+12'  '1.11' -> '7000000000001.11'
-ddfma3167 fma  1  '1.11'  '7E+12' -> '7000000000001.11'
-ddfma3168 fma  1  '-1'    '7E+12' -> '6999999999999'
-
-rounding: half_up
---           1.234567890123456      1234567890123456      1 234567890123456
-ddfma3170 fma  1  '4.444444444444444'  '0.5555555555555567' -> '5.000000000000001' Inexact Rounded
-ddfma3171 fma  1  '4.444444444444444'  '0.5555555555555566' -> '5.000000000000001' Inexact Rounded
-ddfma3172 fma  1  '4.444444444444444'  '0.5555555555555565' -> '5.000000000000001' Inexact Rounded
-ddfma3173 fma  1  '4.444444444444444'  '0.5555555555555564' -> '5.000000000000000' Inexact Rounded
-ddfma3174 fma  1  '4.444444444444444'  '0.5555555555555553' -> '4.999999999999999' Inexact Rounded
-ddfma3175 fma  1  '4.444444444444444'  '0.5555555555555552' -> '4.999999999999999' Inexact Rounded
-ddfma3176 fma  1  '4.444444444444444'  '0.5555555555555551' -> '4.999999999999999' Inexact Rounded
-ddfma3177 fma  1  '4.444444444444444'  '0.5555555555555550' -> '4.999999999999999' Rounded
-ddfma3178 fma  1  '4.444444444444444'  '0.5555555555555545' -> '4.999999999999999' Inexact Rounded
-ddfma3179 fma  1  '4.444444444444444'  '0.5555555555555544' -> '4.999999999999998' Inexact Rounded
-ddfma3180 fma  1  '4.444444444444444'  '0.5555555555555543' -> '4.999999999999998' Inexact Rounded
-ddfma3181 fma  1  '4.444444444444444'  '0.5555555555555542' -> '4.999999999999998' Inexact Rounded
-ddfma3182 fma  1  '4.444444444444444'  '0.5555555555555541' -> '4.999999999999998' Inexact Rounded
-ddfma3183 fma  1  '4.444444444444444'  '0.5555555555555540' -> '4.999999999999998' Rounded
-
--- and some more, including residue effects and different roundings
-rounding: half_up
-ddfma3200 fma  1  '1234560123456789' 0             -> '1234560123456789'
-ddfma3201 fma  1  '1234560123456789' 0.000000001   -> '1234560123456789' Inexact Rounded
-ddfma3202 fma  1  '1234560123456789' 0.000001      -> '1234560123456789' Inexact Rounded
-ddfma3203 fma  1  '1234560123456789' 0.1           -> '1234560123456789' Inexact Rounded
-ddfma3204 fma  1  '1234560123456789' 0.4           -> '1234560123456789' Inexact Rounded
-ddfma3205 fma  1  '1234560123456789' 0.49          -> '1234560123456789' Inexact Rounded
-ddfma3206 fma  1  '1234560123456789' 0.499999      -> '1234560123456789' Inexact Rounded
-ddfma3207 fma  1  '1234560123456789' 0.499999999   -> '1234560123456789' Inexact Rounded
-ddfma3208 fma  1  '1234560123456789' 0.5           -> '1234560123456790' Inexact Rounded
-ddfma3209 fma  1  '1234560123456789' 0.500000001   -> '1234560123456790' Inexact Rounded
-ddfma3210 fma  1  '1234560123456789' 0.500001      -> '1234560123456790' Inexact Rounded
-ddfma3211 fma  1  '1234560123456789' 0.51          -> '1234560123456790' Inexact Rounded
-ddfma3212 fma  1  '1234560123456789' 0.6           -> '1234560123456790' Inexact Rounded
-ddfma3213 fma  1  '1234560123456789' 0.9           -> '1234560123456790' Inexact Rounded
-ddfma3214 fma  1  '1234560123456789' 0.99999       -> '1234560123456790' Inexact Rounded
-ddfma3215 fma  1  '1234560123456789' 0.999999999   -> '1234560123456790' Inexact Rounded
-ddfma3216 fma  1  '1234560123456789' 1             -> '1234560123456790'
-ddfma3217 fma  1  '1234560123456789' 1.000000001   -> '1234560123456790' Inexact Rounded
-ddfma3218 fma  1  '1234560123456789' 1.00001       -> '1234560123456790' Inexact Rounded
-ddfma3219 fma  1  '1234560123456789' 1.1           -> '1234560123456790' Inexact Rounded
-
-rounding: half_even
-ddfma3220 fma  1  '1234560123456789' 0             -> '1234560123456789'
-ddfma3221 fma  1  '1234560123456789' 0.000000001   -> '1234560123456789' Inexact Rounded
-ddfma3222 fma  1  '1234560123456789' 0.000001      -> '1234560123456789' Inexact Rounded
-ddfma3223 fma  1  '1234560123456789' 0.1           -> '1234560123456789' Inexact Rounded
-ddfma3224 fma  1  '1234560123456789' 0.4           -> '1234560123456789' Inexact Rounded
-ddfma3225 fma  1  '1234560123456789' 0.49          -> '1234560123456789' Inexact Rounded
-ddfma3226 fma  1  '1234560123456789' 0.499999      -> '1234560123456789' Inexact Rounded
-ddfma3227 fma  1  '1234560123456789' 0.499999999   -> '1234560123456789' Inexact Rounded
-ddfma3228 fma  1  '1234560123456789' 0.5           -> '1234560123456790' Inexact Rounded
-ddfma3229 fma  1  '1234560123456789' 0.500000001   -> '1234560123456790' Inexact Rounded
-ddfma3230 fma  1  '1234560123456789' 0.500001      -> '1234560123456790' Inexact Rounded
-ddfma3231 fma  1  '1234560123456789' 0.51          -> '1234560123456790' Inexact Rounded
-ddfma3232 fma  1  '1234560123456789' 0.6           -> '1234560123456790' Inexact Rounded
-ddfma3233 fma  1  '1234560123456789' 0.9           -> '1234560123456790' Inexact Rounded
-ddfma3234 fma  1  '1234560123456789' 0.99999       -> '1234560123456790' Inexact Rounded
-ddfma3235 fma  1  '1234560123456789' 0.999999999   -> '1234560123456790' Inexact Rounded
-ddfma3236 fma  1  '1234560123456789' 1             -> '1234560123456790'
-ddfma3237 fma  1  '1234560123456789' 1.00000001    -> '1234560123456790' Inexact Rounded
-ddfma3238 fma  1  '1234560123456789' 1.00001       -> '1234560123456790' Inexact Rounded
-ddfma3239 fma  1  '1234560123456789' 1.1           -> '1234560123456790' Inexact Rounded
--- critical few with even bottom digit...
-ddfma3240 fma  1  '1234560123456788' 0.499999999   -> '1234560123456788' Inexact Rounded
-ddfma3241 fma  1  '1234560123456788' 0.5           -> '1234560123456788' Inexact Rounded
-ddfma3242 fma  1  '1234560123456788' 0.500000001   -> '1234560123456789' Inexact Rounded
-
-rounding: down
-ddfma3250 fma  1  '1234560123456789' 0             -> '1234560123456789'
-ddfma3251 fma  1  '1234560123456789' 0.000000001   -> '1234560123456789' Inexact Rounded
-ddfma3252 fma  1  '1234560123456789' 0.000001      -> '1234560123456789' Inexact Rounded
-ddfma3253 fma  1  '1234560123456789' 0.1           -> '1234560123456789' Inexact Rounded
-ddfma3254 fma  1  '1234560123456789' 0.4           -> '1234560123456789' Inexact Rounded
-ddfma3255 fma  1  '1234560123456789' 0.49          -> '1234560123456789' Inexact Rounded
-ddfma3256 fma  1  '1234560123456789' 0.499999      -> '1234560123456789' Inexact Rounded
-ddfma3257 fma  1  '1234560123456789' 0.499999999   -> '1234560123456789' Inexact Rounded
-ddfma3258 fma  1  '1234560123456789' 0.5           -> '1234560123456789' Inexact Rounded
-ddfma3259 fma  1  '1234560123456789' 0.500000001   -> '1234560123456789' Inexact Rounded
-ddfma3260 fma  1  '1234560123456789' 0.500001      -> '1234560123456789' Inexact Rounded
-ddfma3261 fma  1  '1234560123456789' 0.51          -> '1234560123456789' Inexact Rounded
-ddfma3262 fma  1  '1234560123456789' 0.6           -> '1234560123456789' Inexact Rounded
-ddfma3263 fma  1  '1234560123456789' 0.9           -> '1234560123456789' Inexact Rounded
-ddfma3264 fma  1  '1234560123456789' 0.99999       -> '1234560123456789' Inexact Rounded
-ddfma3265 fma  1  '1234560123456789' 0.999999999   -> '1234560123456789' Inexact Rounded
-ddfma3266 fma  1  '1234560123456789' 1             -> '1234560123456790'
-ddfma3267 fma  1  '1234560123456789' 1.00000001    -> '1234560123456790' Inexact Rounded
-ddfma3268 fma  1  '1234560123456789' 1.00001       -> '1234560123456790' Inexact Rounded
-ddfma3269 fma  1  '1234560123456789' 1.1           -> '1234560123456790' Inexact Rounded
-
--- 1 in last place tests
-rounding: half_up
-ddfma3301 fma  1   -1   1      ->   0
-ddfma3302 fma  1    0   1      ->   1
-ddfma3303 fma  1    1   1      ->   2
-ddfma3304 fma  1   12   1      ->  13
-ddfma3305 fma  1   98   1      ->  99
-ddfma3306 fma  1   99   1      -> 100
-ddfma3307 fma  1  100   1      -> 101
-ddfma3308 fma  1  101   1      -> 102
-ddfma3309 fma  1   -1  -1      ->  -2
-ddfma3310 fma  1    0  -1      ->  -1
-ddfma3311 fma  1    1  -1      ->   0
-ddfma3312 fma  1   12  -1      ->  11
-ddfma3313 fma  1   98  -1      ->  97
-ddfma3314 fma  1   99  -1      ->  98
-ddfma3315 fma  1  100  -1      ->  99
-ddfma3316 fma  1  101  -1      -> 100
-
-ddfma3321 fma  1  -0.01  0.01    ->  0.00
-ddfma3322 fma  1   0.00  0.01    ->  0.01
-ddfma3323 fma  1   0.01  0.01    ->  0.02
-ddfma3324 fma  1   0.12  0.01    ->  0.13
-ddfma3325 fma  1   0.98  0.01    ->  0.99
-ddfma3326 fma  1   0.99  0.01    ->  1.00
-ddfma3327 fma  1   1.00  0.01    ->  1.01
-ddfma3328 fma  1   1.01  0.01    ->  1.02
-ddfma3329 fma  1  -0.01 -0.01    -> -0.02
-ddfma3330 fma  1   0.00 -0.01    -> -0.01
-ddfma3331 fma  1   0.01 -0.01    ->  0.00
-ddfma3332 fma  1   0.12 -0.01    ->  0.11
-ddfma3333 fma  1   0.98 -0.01    ->  0.97
-ddfma3334 fma  1   0.99 -0.01    ->  0.98
-ddfma3335 fma  1   1.00 -0.01    ->  0.99
-ddfma3336 fma  1   1.01 -0.01    ->  1.00
-
--- some more cases where adding 0 affects the coefficient
-ddfma3340 fma  1  1E+3    0    ->         1000
-ddfma3341 fma  1  1E+15   0    ->    1000000000000000
-ddfma3342 fma  1  1E+16   0    ->   1.000000000000000E+16  Rounded
-ddfma3343 fma  1  1E+20   0    ->   1.000000000000000E+20  Rounded
--- which simply follow from these cases ...
-ddfma3344 fma  1  1E+3    1    ->         1001
-ddfma3345 fma  1  1E+15   1    ->    1000000000000001
-ddfma3346 fma  1  1E+16   1    ->   1.000000000000000E+16  Inexact Rounded
-ddfma3347 fma  1  1E+20   1    ->   1.000000000000000E+20  Inexact Rounded
-ddfma3348 fma  1  1E+3    7    ->         1007
-ddfma3349 fma  1  1E+15   7    ->    1000000000000007
-ddfma3350 fma  1  1E+16   7    ->   1.000000000000001E+16  Inexact Rounded
-ddfma3351 fma  1  1E+20   7    ->   1.000000000000000E+20  Inexact Rounded
-
--- tryzeros cases
-rounding:    half_up
-ddfma3360  fma  1  0E+50 10000E+1  -> 1.0000E+5
-ddfma3361  fma  1  0E-50 10000E+1  -> 100000.0000000000 Rounded
-ddfma3362  fma  1  10000E+1 0E-50  -> 100000.0000000000 Rounded
-ddfma3363  fma  1  10000E+1 10000E-50  -> 100000.0000000000 Rounded Inexact
-ddfma3364  fma  1  9.999999999999999E+384 -9.999999999999999E+384 -> 0E+369
-
--- a curiosity from JSR 13 testing
-rounding:    half_down
-ddfma3370 fma  1   999999999999999 815 -> 1000000000000814
-ddfma3371 fma  1  9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact
-rounding:    half_up
-ddfma3372 fma  1   999999999999999 815 -> 1000000000000814
-ddfma3373 fma  1  9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact
-rounding:    half_even
-ddfma3374 fma  1   999999999999999 815 -> 1000000000000814
-ddfma3375 fma  1  9999999999999999 815 -> 1.000000000000081E+16 Rounded Inexact
-
--- ulp replacement tests
-ddfma3400 fma  1    1   77e-14      ->  1.00000000000077
-ddfma3401 fma  1    1   77e-15      ->  1.000000000000077
-ddfma3402 fma  1    1   77e-16      ->  1.000000000000008 Inexact Rounded
-ddfma3403 fma  1    1   77e-17      ->  1.000000000000001 Inexact Rounded
-ddfma3404 fma  1    1   77e-18      ->  1.000000000000000 Inexact Rounded
-ddfma3405 fma  1    1   77e-19      ->  1.000000000000000 Inexact Rounded
-ddfma3406 fma  1    1   77e-299     ->  1.000000000000000 Inexact Rounded
-
-ddfma3410 fma  1   10   77e-14      ->  10.00000000000077
-ddfma3411 fma  1   10   77e-15      ->  10.00000000000008 Inexact Rounded
-ddfma3412 fma  1   10   77e-16      ->  10.00000000000001 Inexact Rounded
-ddfma3413 fma  1   10   77e-17      ->  10.00000000000000 Inexact Rounded
-ddfma3414 fma  1   10   77e-18      ->  10.00000000000000 Inexact Rounded
-ddfma3415 fma  1   10   77e-19      ->  10.00000000000000 Inexact Rounded
-ddfma3416 fma  1   10   77e-299     ->  10.00000000000000 Inexact Rounded
-
-ddfma3420 fma  1   77e-14       1   ->  1.00000000000077
-ddfma3421 fma  1   77e-15       1   ->  1.000000000000077
-ddfma3422 fma  1   77e-16       1   ->  1.000000000000008 Inexact Rounded
-ddfma3423 fma  1   77e-17       1   ->  1.000000000000001 Inexact Rounded
-ddfma3424 fma  1   77e-18       1   ->  1.000000000000000 Inexact Rounded
-ddfma3425 fma  1   77e-19       1   ->  1.000000000000000 Inexact Rounded
-ddfma3426 fma  1   77e-299      1   ->  1.000000000000000 Inexact Rounded
-
-ddfma3430 fma  1   77e-14      10   ->  10.00000000000077
-ddfma3431 fma  1   77e-15      10   ->  10.00000000000008 Inexact Rounded
-ddfma3432 fma  1   77e-16      10   ->  10.00000000000001 Inexact Rounded
-ddfma3433 fma  1   77e-17      10   ->  10.00000000000000 Inexact Rounded
-ddfma3434 fma  1   77e-18      10   ->  10.00000000000000 Inexact Rounded
-ddfma3435 fma  1   77e-19      10   ->  10.00000000000000 Inexact Rounded
-ddfma3436 fma  1   77e-299     10   ->  10.00000000000000 Inexact Rounded
-
--- negative ulps
-ddfma36440 fma  1    1   -77e-14      ->  0.99999999999923
-ddfma36441 fma  1    1   -77e-15      ->  0.999999999999923
-ddfma36442 fma  1    1   -77e-16      ->  0.9999999999999923
-ddfma36443 fma  1    1   -77e-17      ->  0.9999999999999992 Inexact Rounded
-ddfma36444 fma  1    1   -77e-18      ->  0.9999999999999999 Inexact Rounded
-ddfma36445 fma  1    1   -77e-19      ->  1.000000000000000 Inexact Rounded
-ddfma36446 fma  1    1   -77e-99      ->  1.000000000000000 Inexact Rounded
-
-ddfma36450 fma  1   10   -77e-14      ->   9.99999999999923
-ddfma36451 fma  1   10   -77e-15      ->   9.999999999999923
-ddfma36452 fma  1   10   -77e-16      ->   9.999999999999992 Inexact Rounded
-ddfma36453 fma  1   10   -77e-17      ->   9.999999999999999 Inexact Rounded
-ddfma36454 fma  1   10   -77e-18      ->  10.00000000000000 Inexact Rounded
-ddfma36455 fma  1   10   -77e-19      ->  10.00000000000000 Inexact Rounded
-ddfma36456 fma  1   10   -77e-99      ->  10.00000000000000 Inexact Rounded
-
-ddfma36460 fma  1   -77e-14       1   ->  0.99999999999923
-ddfma36461 fma  1   -77e-15       1   ->  0.999999999999923
-ddfma36462 fma  1   -77e-16       1   ->  0.9999999999999923
-ddfma36463 fma  1   -77e-17       1   ->  0.9999999999999992 Inexact Rounded
-ddfma36464 fma  1   -77e-18       1   ->  0.9999999999999999 Inexact Rounded
-ddfma36465 fma  1   -77e-19       1   ->  1.000000000000000 Inexact Rounded
-ddfma36466 fma  1   -77e-99       1   ->  1.000000000000000 Inexact Rounded
-
-ddfma36470 fma  1   -77e-14      10   ->   9.99999999999923
-ddfma36471 fma  1   -77e-15      10   ->   9.999999999999923
-ddfma36472 fma  1   -77e-16      10   ->   9.999999999999992 Inexact Rounded
-ddfma36473 fma  1   -77e-17      10   ->   9.999999999999999 Inexact Rounded
-ddfma36474 fma  1   -77e-18      10   ->  10.00000000000000 Inexact Rounded
-ddfma36475 fma  1   -77e-19      10   ->  10.00000000000000 Inexact Rounded
-ddfma36476 fma  1   -77e-99      10   ->  10.00000000000000 Inexact Rounded
-
--- negative ulps
-ddfma36480 fma  1   -1    77e-14      ->  -0.99999999999923
-ddfma36481 fma  1   -1    77e-15      ->  -0.999999999999923
-ddfma36482 fma  1   -1    77e-16      ->  -0.9999999999999923
-ddfma36483 fma  1   -1    77e-17      ->  -0.9999999999999992 Inexact Rounded
-ddfma36484 fma  1   -1    77e-18      ->  -0.9999999999999999 Inexact Rounded
-ddfma36485 fma  1   -1    77e-19      ->  -1.000000000000000 Inexact Rounded
-ddfma36486 fma  1   -1    77e-99      ->  -1.000000000000000 Inexact Rounded
-
-ddfma36490 fma  1  -10    77e-14      ->   -9.99999999999923
-ddfma36491 fma  1  -10    77e-15      ->   -9.999999999999923
-ddfma36492 fma  1  -10    77e-16      ->   -9.999999999999992 Inexact Rounded
-ddfma36493 fma  1  -10    77e-17      ->   -9.999999999999999 Inexact Rounded
-ddfma36494 fma  1  -10    77e-18      ->  -10.00000000000000 Inexact Rounded
-ddfma36495 fma  1  -10    77e-19      ->  -10.00000000000000 Inexact Rounded
-ddfma36496 fma  1  -10    77e-99      ->  -10.00000000000000 Inexact Rounded
-
-ddfma36500 fma  1    77e-14      -1   ->  -0.99999999999923
-ddfma36501 fma  1    77e-15      -1   ->  -0.999999999999923
-ddfma36502 fma  1    77e-16      -1   ->  -0.9999999999999923
-ddfma36503 fma  1    77e-17      -1   ->  -0.9999999999999992 Inexact Rounded
-ddfma36504 fma  1    77e-18      -1   ->  -0.9999999999999999 Inexact Rounded
-ddfma36505 fma  1    77e-19      -1   ->  -1.000000000000000 Inexact Rounded
-ddfma36506 fma  1    77e-99      -1   ->  -1.000000000000000 Inexact Rounded
-
-ddfma36510 fma  1    77e-14      -10  ->   -9.99999999999923
-ddfma36511 fma  1    77e-15      -10  ->   -9.999999999999923
-ddfma36512 fma  1    77e-16      -10  ->   -9.999999999999992 Inexact Rounded
-ddfma36513 fma  1    77e-17      -10  ->   -9.999999999999999 Inexact Rounded
-ddfma36514 fma  1    77e-18      -10  ->  -10.00000000000000 Inexact Rounded
-ddfma36515 fma  1    77e-19      -10  ->  -10.00000000000000 Inexact Rounded
-ddfma36516 fma  1    77e-99      -10  ->  -10.00000000000000 Inexact Rounded
-
--- and a couple more with longer RHS
-ddfma36520 fma  1    1   -7777e-16      ->  0.9999999999992223
-ddfma36521 fma  1    1   -7777e-17      ->  0.9999999999999222 Inexact Rounded
-ddfma36522 fma  1    1   -7777e-18      ->  0.9999999999999922 Inexact Rounded
-ddfma36523 fma  1    1   -7777e-19      ->  0.9999999999999992 Inexact Rounded
-ddfma36524 fma  1    1   -7777e-20      ->  0.9999999999999999 Inexact Rounded
-ddfma36525 fma  1    1   -7777e-21      ->  1.000000000000000 Inexact Rounded
-ddfma36526 fma  1    1   -7777e-22      ->  1.000000000000000 Inexact Rounded
-
-
--- and some more residue effects and different roundings
-rounding: half_up
-ddfma36540 fma  1  '6543210123456789' 0             -> '6543210123456789'
-ddfma36541 fma  1  '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
-ddfma36542 fma  1  '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
-ddfma36543 fma  1  '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
-ddfma36544 fma  1  '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
-ddfma36545 fma  1  '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
-ddfma36546 fma  1  '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
-ddfma36547 fma  1  '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded
-ddfma36548 fma  1  '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded
-ddfma36549 fma  1  '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded
-ddfma36550 fma  1  '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded
-ddfma36551 fma  1  '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded
-ddfma36552 fma  1  '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded
-ddfma36553 fma  1  '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded
-ddfma36554 fma  1  '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded
-ddfma36555 fma  1  '6543210123456789' 0.999999999   -> '6543210123456790' Inexact Rounded
-ddfma36556 fma  1  '6543210123456789' 1             -> '6543210123456790'
-ddfma36557 fma  1  '6543210123456789' 1.000000001   -> '6543210123456790' Inexact Rounded
-ddfma36558 fma  1  '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
-ddfma36559 fma  1  '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
-
-rounding: half_even
-ddfma36560 fma  1  '6543210123456789' 0             -> '6543210123456789'
-ddfma36561 fma  1  '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
-ddfma36562 fma  1  '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
-ddfma36563 fma  1  '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
-ddfma36564 fma  1  '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
-ddfma36565 fma  1  '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
-ddfma36566 fma  1  '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
-ddfma36567 fma  1  '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded
-ddfma36568 fma  1  '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded
-ddfma36569 fma  1  '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded
-ddfma36570 fma  1  '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded
-ddfma36571 fma  1  '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded
-ddfma36572 fma  1  '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded
-ddfma36573 fma  1  '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded
-ddfma36574 fma  1  '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded
-ddfma36575 fma  1  '6543210123456789' 0.999999999   -> '6543210123456790' Inexact Rounded
-ddfma36576 fma  1  '6543210123456789' 1             -> '6543210123456790'
-ddfma36577 fma  1  '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded
-ddfma36578 fma  1  '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
-ddfma36579 fma  1  '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
-
--- critical few with even bottom digit...
-ddfma37540 fma  1  '6543210123456788' 0.499999999   -> '6543210123456788' Inexact Rounded
-ddfma37541 fma  1  '6543210123456788' 0.5           -> '6543210123456788' Inexact Rounded
-ddfma37542 fma  1  '6543210123456788' 0.500000001   -> '6543210123456789' Inexact Rounded
-
-rounding: down
-ddfma37550 fma  1  '6543210123456789' 0             -> '6543210123456789'
-ddfma37551 fma  1  '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
-ddfma37552 fma  1  '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
-ddfma37553 fma  1  '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
-ddfma37554 fma  1  '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
-ddfma37555 fma  1  '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
-ddfma37556 fma  1  '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
-ddfma37557 fma  1  '6543210123456789' 0.499999999   -> '6543210123456789' Inexact Rounded
-ddfma37558 fma  1  '6543210123456789' 0.5           -> '6543210123456789' Inexact Rounded
-ddfma37559 fma  1  '6543210123456789' 0.500000001   -> '6543210123456789' Inexact Rounded
-ddfma37560 fma  1  '6543210123456789' 0.500001      -> '6543210123456789' Inexact Rounded
-ddfma37561 fma  1  '6543210123456789' 0.51          -> '6543210123456789' Inexact Rounded
-ddfma37562 fma  1  '6543210123456789' 0.6           -> '6543210123456789' Inexact Rounded
-ddfma37563 fma  1  '6543210123456789' 0.9           -> '6543210123456789' Inexact Rounded
-ddfma37564 fma  1  '6543210123456789' 0.99999       -> '6543210123456789' Inexact Rounded
-ddfma37565 fma  1  '6543210123456789' 0.999999999   -> '6543210123456789' Inexact Rounded
-ddfma37566 fma  1  '6543210123456789' 1             -> '6543210123456790'
-ddfma37567 fma  1  '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded
-ddfma37568 fma  1  '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
-ddfma37569 fma  1  '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
-
-
--- verify a query
-rounding:     down
-ddfma37661 fma  1  1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded
-ddfma37662 fma  1       0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded
-ddfma37663 fma  1  1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded
-ddfma37664 fma  1       0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded
-
--- more zeros, etc.
-rounding: half_even
-
-ddfma37701 fma  1  5.00 1.00E-3 -> 5.00100
-ddfma37702 fma  1  00.00 0.000  -> 0.000
-ddfma37703 fma  1  00.00 0E-3   -> 0.000
-ddfma37704 fma  1  0E-3  00.00  -> 0.000
-
-ddfma37710 fma  1  0E+3  00.00  -> 0.00
-ddfma37711 fma  1  0E+3  00.0   -> 0.0
-ddfma37712 fma  1  0E+3  00.    -> 0
-ddfma37713 fma  1  0E+3  00.E+1 -> 0E+1
-ddfma37714 fma  1  0E+3  00.E+2 -> 0E+2
-ddfma37715 fma  1  0E+3  00.E+3 -> 0E+3
-ddfma37716 fma  1  0E+3  00.E+4 -> 0E+3
-ddfma37717 fma  1  0E+3  00.E+5 -> 0E+3
-ddfma37718 fma  1  0E+3  -00.0   -> 0.0
-ddfma37719 fma  1  0E+3  -00.    -> 0
-ddfma37731 fma  1  0E+3  -00.E+1 -> 0E+1
-
-ddfma37720 fma  1  00.00  0E+3  -> 0.00
-ddfma37721 fma  1  00.0   0E+3  -> 0.0
-ddfma37722 fma  1  00.    0E+3  -> 0
-ddfma37723 fma  1  00.E+1 0E+3  -> 0E+1
-ddfma37724 fma  1  00.E+2 0E+3  -> 0E+2
-ddfma37725 fma  1  00.E+3 0E+3  -> 0E+3
-ddfma37726 fma  1  00.E+4 0E+3  -> 0E+3
-ddfma37727 fma  1  00.E+5 0E+3  -> 0E+3
-ddfma37728 fma  1  -00.00 0E+3  -> 0.00
-ddfma37729 fma  1  -00.0  0E+3  -> 0.0
-ddfma37730 fma  1  -00.   0E+3  -> 0
-
-ddfma37732 fma  1   0     0     ->  0
-ddfma37733 fma  1   0    -0     ->  0
-ddfma37734 fma  1  -0     0     ->  0
-ddfma37735 fma  1  -0    -0     -> -0     -- IEEE 854 special case
-
-ddfma37736 fma  1   1    -1     ->  0
-ddfma37737 fma  1  -1    -1     -> -2
-ddfma37738 fma  1   1     1     ->  2
-ddfma37739 fma  1  -1     1     ->  0
-
-ddfma37741 fma  1   0    -1     -> -1
-ddfma37742 fma  1  -0    -1     -> -1
-ddfma37743 fma  1   0     1     ->  1
-ddfma37744 fma  1  -0     1     ->  1
-ddfma37745 fma  1  -1     0     -> -1
-ddfma37746 fma  1  -1    -0     -> -1
-ddfma37747 fma  1   1     0     ->  1
-ddfma37748 fma  1   1    -0     ->  1
-
-ddfma37751 fma  1   0.0  -1     -> -1.0
-ddfma37752 fma  1  -0.0  -1     -> -1.0
-ddfma37753 fma  1   0.0   1     ->  1.0
-ddfma37754 fma  1  -0.0   1     ->  1.0
-ddfma37755 fma  1  -1.0   0     -> -1.0
-ddfma37756 fma  1  -1.0  -0     -> -1.0
-ddfma37757 fma  1   1.0   0     ->  1.0
-ddfma37758 fma  1   1.0  -0     ->  1.0
-
-ddfma37761 fma  1   0    -1.0   -> -1.0
-ddfma37762 fma  1  -0    -1.0   -> -1.0
-ddfma37763 fma  1   0     1.0   ->  1.0
-ddfma37764 fma  1  -0     1.0   ->  1.0
-ddfma37765 fma  1  -1     0.0   -> -1.0
-ddfma37766 fma  1  -1    -0.0   -> -1.0
-ddfma37767 fma  1   1     0.0   ->  1.0
-ddfma37768 fma  1   1    -0.0   ->  1.0
-
-ddfma37771 fma  1   0.0  -1.0   -> -1.0
-ddfma37772 fma  1  -0.0  -1.0   -> -1.0
-ddfma37773 fma  1   0.0   1.0   ->  1.0
-ddfma37774 fma  1  -0.0   1.0   ->  1.0
-ddfma37775 fma  1  -1.0   0.0   -> -1.0
-ddfma37776 fma  1  -1.0  -0.0   -> -1.0
-ddfma37777 fma  1   1.0   0.0   ->  1.0
-ddfma37778 fma  1   1.0  -0.0   ->  1.0
-
--- Specials
-ddfma37780 fma  1  -Inf  -Inf   -> -Infinity
-ddfma37781 fma  1  -Inf  -1000  -> -Infinity
-ddfma37782 fma  1  -Inf  -1     -> -Infinity
-ddfma37783 fma  1  -Inf  -0     -> -Infinity
-ddfma37784 fma  1  -Inf   0     -> -Infinity
-ddfma37785 fma  1  -Inf   1     -> -Infinity
-ddfma37786 fma  1  -Inf   1000  -> -Infinity
-ddfma37787 fma  1  -1000 -Inf   -> -Infinity
-ddfma37788 fma  1  -Inf  -Inf   -> -Infinity
-ddfma37789 fma  1  -1    -Inf   -> -Infinity
-ddfma37790 fma  1  -0    -Inf   -> -Infinity
-ddfma37791 fma  1   0    -Inf   -> -Infinity
-ddfma37792 fma  1   1    -Inf   -> -Infinity
-ddfma37793 fma  1   1000 -Inf   -> -Infinity
-ddfma37794 fma  1   Inf  -Inf   ->  NaN  Invalid_operation
-
-ddfma37800 fma  1   Inf  -Inf   ->  NaN  Invalid_operation
-ddfma37801 fma  1   Inf  -1000  ->  Infinity
-ddfma37802 fma  1   Inf  -1     ->  Infinity
-ddfma37803 fma  1   Inf  -0     ->  Infinity
-ddfma37804 fma  1   Inf   0     ->  Infinity
-ddfma37805 fma  1   Inf   1     ->  Infinity
-ddfma37806 fma  1   Inf   1000  ->  Infinity
-ddfma37807 fma  1   Inf   Inf   ->  Infinity
-ddfma37808 fma  1  -1000  Inf   ->  Infinity
-ddfma37809 fma  1  -Inf   Inf   ->  NaN  Invalid_operation
-ddfma37810 fma  1  -1     Inf   ->  Infinity
-ddfma37811 fma  1  -0     Inf   ->  Infinity
-ddfma37812 fma  1   0     Inf   ->  Infinity
-ddfma37813 fma  1   1     Inf   ->  Infinity
-ddfma37814 fma  1   1000  Inf   ->  Infinity
-ddfma37815 fma  1   Inf   Inf   ->  Infinity
-
-ddfma37821 fma  1   NaN -Inf    ->  NaN
-ddfma37822 fma  1   NaN -1000   ->  NaN
-ddfma37823 fma  1   NaN -1      ->  NaN
-ddfma37824 fma  1   NaN -0      ->  NaN
-ddfma37825 fma  1   NaN  0      ->  NaN
-ddfma37826 fma  1   NaN  1      ->  NaN
-ddfma37827 fma  1   NaN  1000   ->  NaN
-ddfma37828 fma  1   NaN  Inf    ->  NaN
-ddfma37829 fma  1   NaN  NaN    ->  NaN
-ddfma37830 fma  1  -Inf  NaN    ->  NaN
-ddfma37831 fma  1  -1000 NaN    ->  NaN
-ddfma37832 fma  1  -1    NaN    ->  NaN
-ddfma37833 fma  1  -0    NaN    ->  NaN
-ddfma37834 fma  1   0    NaN    ->  NaN
-ddfma37835 fma  1   1    NaN    ->  NaN
-ddfma37836 fma  1   1000 NaN    ->  NaN
-ddfma37837 fma  1   Inf  NaN    ->  NaN
-
-ddfma37841 fma  1   sNaN -Inf   ->  NaN  Invalid_operation
-ddfma37842 fma  1   sNaN -1000  ->  NaN  Invalid_operation
-ddfma37843 fma  1   sNaN -1     ->  NaN  Invalid_operation
-ddfma37844 fma  1   sNaN -0     ->  NaN  Invalid_operation
-ddfma37845 fma  1   sNaN  0     ->  NaN  Invalid_operation
-ddfma37846 fma  1   sNaN  1     ->  NaN  Invalid_operation
-ddfma37847 fma  1   sNaN  1000  ->  NaN  Invalid_operation
-ddfma37848 fma  1   sNaN  NaN   ->  NaN  Invalid_operation
-ddfma37849 fma  1   sNaN sNaN   ->  NaN  Invalid_operation
-ddfma37850 fma  1   NaN  sNaN   ->  NaN  Invalid_operation
-ddfma37851 fma  1  -Inf  sNaN   ->  NaN  Invalid_operation
-ddfma37852 fma  1  -1000 sNaN   ->  NaN  Invalid_operation
-ddfma37853 fma  1  -1    sNaN   ->  NaN  Invalid_operation
-ddfma37854 fma  1  -0    sNaN   ->  NaN  Invalid_operation
-ddfma37855 fma  1   0    sNaN   ->  NaN  Invalid_operation
-ddfma37856 fma  1   1    sNaN   ->  NaN  Invalid_operation
-ddfma37857 fma  1   1000 sNaN   ->  NaN  Invalid_operation
-ddfma37858 fma  1   Inf  sNaN   ->  NaN  Invalid_operation
-ddfma37859 fma  1   NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddfma37861 fma  1   NaN1   -Inf    ->  NaN1
-ddfma37862 fma  1  +NaN2   -1000   ->  NaN2
-ddfma37863 fma  1   NaN3    1000   ->  NaN3
-ddfma37864 fma  1   NaN4    Inf    ->  NaN4
-ddfma37865 fma  1   NaN5   +NaN6   ->  NaN5
-ddfma37866 fma  1  -Inf     NaN7   ->  NaN7
-ddfma37867 fma  1  -1000    NaN8   ->  NaN8
-ddfma37868 fma  1   1000    NaN9   ->  NaN9
-ddfma37869 fma  1   Inf    +NaN10  ->  NaN10
-ddfma37871 fma  1   sNaN11  -Inf   ->  NaN11  Invalid_operation
-ddfma37872 fma  1   sNaN12  -1000  ->  NaN12  Invalid_operation
-ddfma37873 fma  1   sNaN13   1000  ->  NaN13  Invalid_operation
-ddfma37874 fma  1   sNaN14   NaN17 ->  NaN14  Invalid_operation
-ddfma37875 fma  1   sNaN15  sNaN18 ->  NaN15  Invalid_operation
-ddfma37876 fma  1   NaN16   sNaN19 ->  NaN19  Invalid_operation
-ddfma37877 fma  1  -Inf    +sNaN20 ->  NaN20  Invalid_operation
-ddfma37878 fma  1  -1000    sNaN21 ->  NaN21  Invalid_operation
-ddfma37879 fma  1   1000    sNaN22 ->  NaN22  Invalid_operation
-ddfma37880 fma  1   Inf     sNaN23 ->  NaN23  Invalid_operation
-ddfma37881 fma  1  +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-ddfma37882 fma  1  -NaN26    NaN28 -> -NaN26
-ddfma37883 fma  1  -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-ddfma37884 fma  1   1000    -NaN30 -> -NaN30
-ddfma37885 fma  1   1000   -sNaN31 -> -NaN31  Invalid_operation
-
--- Here we explore near the boundary of rounding a subnormal to Nmin
-ddfma37575 fma  1   1E-383 -1E-398 ->  9.99999999999999E-384  Subnormal
-ddfma37576 fma  1  -1E-383 +1E-398 -> -9.99999999999999E-384  Subnormal
-
--- check overflow edge case
---               1234567890123456
-ddfma37972 apply   9.999999999999999E+384         -> 9.999999999999999E+384
-ddfma37973 fma  1      9.999999999999999E+384  1      -> 9.999999999999999E+384 Inexact Rounded
-ddfma37974 fma  1       9999999999999999E+369  1      -> 9.999999999999999E+384 Inexact Rounded
-ddfma37975 fma  1       9999999999999999E+369  1E+369  -> Infinity Overflow Inexact Rounded
-ddfma37976 fma  1       9999999999999999E+369  9E+368  -> Infinity Overflow Inexact Rounded
-ddfma37977 fma  1       9999999999999999E+369  8E+368  -> Infinity Overflow Inexact Rounded
-ddfma37978 fma  1       9999999999999999E+369  7E+368  -> Infinity Overflow Inexact Rounded
-ddfma37979 fma  1       9999999999999999E+369  6E+368  -> Infinity Overflow Inexact Rounded
-ddfma37980 fma  1       9999999999999999E+369  5E+368  -> Infinity Overflow Inexact Rounded
-ddfma37981 fma  1       9999999999999999E+369  4E+368  -> 9.999999999999999E+384 Inexact Rounded
-ddfma37982 fma  1       9999999999999999E+369  3E+368  -> 9.999999999999999E+384 Inexact Rounded
-ddfma37983 fma  1       9999999999999999E+369  2E+368  -> 9.999999999999999E+384 Inexact Rounded
-ddfma37984 fma  1       9999999999999999E+369  1E+368  -> 9.999999999999999E+384 Inexact Rounded
-
-ddfma37985 apply  -9.999999999999999E+384         -> -9.999999999999999E+384
-ddfma37986 fma  1     -9.999999999999999E+384 -1      -> -9.999999999999999E+384 Inexact Rounded
-ddfma37987 fma  1      -9999999999999999E+369 -1      -> -9.999999999999999E+384 Inexact Rounded
-ddfma37988 fma  1      -9999999999999999E+369 -1E+369  -> -Infinity Overflow Inexact Rounded
-ddfma37989 fma  1      -9999999999999999E+369 -9E+368  -> -Infinity Overflow Inexact Rounded
-ddfma37990 fma  1      -9999999999999999E+369 -8E+368  -> -Infinity Overflow Inexact Rounded
-ddfma37991 fma  1      -9999999999999999E+369 -7E+368  -> -Infinity Overflow Inexact Rounded
-ddfma37992 fma  1      -9999999999999999E+369 -6E+368  -> -Infinity Overflow Inexact Rounded
-ddfma37993 fma  1      -9999999999999999E+369 -5E+368  -> -Infinity Overflow Inexact Rounded
-ddfma37994 fma  1      -9999999999999999E+369 -4E+368  -> -9.999999999999999E+384 Inexact Rounded
-ddfma37995 fma  1      -9999999999999999E+369 -3E+368  -> -9.999999999999999E+384 Inexact Rounded
-ddfma37996 fma  1      -9999999999999999E+369 -2E+368  -> -9.999999999999999E+384 Inexact Rounded
-ddfma37997 fma  1      -9999999999999999E+369 -1E+368  -> -9.999999999999999E+384 Inexact Rounded
-
--- And for round down full and subnormal results
-rounding:     down
-ddfma371100 fma  1  1e+2 -1e-383    -> 99.99999999999999 Rounded Inexact
-ddfma371101 fma  1  1e+1 -1e-383    -> 9.999999999999999  Rounded Inexact
-ddfma371103 fma  1    +1 -1e-383    -> 0.9999999999999999  Rounded Inexact
-ddfma371104 fma  1  1e-1 -1e-383    -> 0.09999999999999999  Rounded Inexact
-ddfma371105 fma  1  1e-2 -1e-383    -> 0.009999999999999999  Rounded Inexact
-ddfma371106 fma  1  1e-3 -1e-383    -> 0.0009999999999999999  Rounded Inexact
-ddfma371107 fma  1  1e-4 -1e-383    -> 0.00009999999999999999  Rounded Inexact
-ddfma371108 fma  1  1e-5 -1e-383    -> 0.000009999999999999999  Rounded Inexact
-ddfma371109 fma  1  1e-6 -1e-383    -> 9.999999999999999E-7  Rounded Inexact
-
-rounding:     ceiling
-ddfma371110 fma  1  -1e+2 +1e-383   -> -99.99999999999999 Rounded Inexact
-ddfma371111 fma  1  -1e+1 +1e-383   -> -9.999999999999999  Rounded Inexact
-ddfma371113 fma  1     -1 +1e-383   -> -0.9999999999999999  Rounded Inexact
-ddfma371114 fma  1  -1e-1 +1e-383   -> -0.09999999999999999  Rounded Inexact
-ddfma371115 fma  1  -1e-2 +1e-383   -> -0.009999999999999999  Rounded Inexact
-ddfma371116 fma  1  -1e-3 +1e-383   -> -0.0009999999999999999  Rounded Inexact
-ddfma371117 fma  1  -1e-4 +1e-383   -> -0.00009999999999999999  Rounded Inexact
-ddfma371118 fma  1  -1e-5 +1e-383   -> -0.000009999999999999999  Rounded Inexact
-ddfma371119 fma  1  -1e-6 +1e-383   -> -9.999999999999999E-7  Rounded Inexact
-
--- tests based on Gunnar Degnbol's edge case
-rounding:     half_even
-
-ddfma371300 fma  1  1E16  -0.5                 ->  1.000000000000000E+16 Inexact Rounded
-ddfma371310 fma  1  1E16  -0.51                ->  9999999999999999      Inexact Rounded
-ddfma371311 fma  1  1E16  -0.501               ->  9999999999999999      Inexact Rounded
-ddfma371312 fma  1  1E16  -0.5001              ->  9999999999999999      Inexact Rounded
-ddfma371313 fma  1  1E16  -0.50001             ->  9999999999999999      Inexact Rounded
-ddfma371314 fma  1  1E16  -0.500001            ->  9999999999999999      Inexact Rounded
-ddfma371315 fma  1  1E16  -0.5000001           ->  9999999999999999      Inexact Rounded
-ddfma371316 fma  1  1E16  -0.50000001          ->  9999999999999999      Inexact Rounded
-ddfma371317 fma  1  1E16  -0.500000001         ->  9999999999999999      Inexact Rounded
-ddfma371318 fma  1  1E16  -0.5000000001        ->  9999999999999999      Inexact Rounded
-ddfma371319 fma  1  1E16  -0.50000000001       ->  9999999999999999      Inexact Rounded
-ddfma371320 fma  1  1E16  -0.500000000001      ->  9999999999999999      Inexact Rounded
-ddfma371321 fma  1  1E16  -0.5000000000001     ->  9999999999999999      Inexact Rounded
-ddfma371322 fma  1  1E16  -0.50000000000001    ->  9999999999999999      Inexact Rounded
-ddfma371323 fma  1  1E16  -0.500000000000001   ->  9999999999999999      Inexact Rounded
-ddfma371324 fma  1  1E16  -0.5000000000000001  ->  9999999999999999      Inexact Rounded
-ddfma371325 fma  1  1E16  -0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
-ddfma371326 fma  1  1E16  -0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
-ddfma371327 fma  1  1E16  -0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
-ddfma371328 fma  1  1E16  -0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
-ddfma371329 fma  1  1E16  -0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
-ddfma371330 fma  1  1E16  -0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
-ddfma371331 fma  1  1E16  -0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
-ddfma371332 fma  1  1E16  -0.500000000         ->  1.000000000000000E+16 Inexact Rounded
-ddfma371333 fma  1  1E16  -0.50000000          ->  1.000000000000000E+16 Inexact Rounded
-ddfma371334 fma  1  1E16  -0.5000000           ->  1.000000000000000E+16 Inexact Rounded
-ddfma371335 fma  1  1E16  -0.500000            ->  1.000000000000000E+16 Inexact Rounded
-ddfma371336 fma  1  1E16  -0.50000             ->  1.000000000000000E+16 Inexact Rounded
-ddfma371337 fma  1  1E16  -0.5000              ->  1.000000000000000E+16 Inexact Rounded
-ddfma371338 fma  1  1E16  -0.500               ->  1.000000000000000E+16 Inexact Rounded
-ddfma371339 fma  1  1E16  -0.50                ->  1.000000000000000E+16 Inexact Rounded
-
-ddfma371340 fma  1  1E16  -5000000.000010001   ->  9999999995000000      Inexact Rounded
-ddfma371341 fma  1  1E16  -5000000.000000001   ->  9999999995000000      Inexact Rounded
-
-ddfma371349 fma  1  9999999999999999 0.4                 ->  9999999999999999      Inexact Rounded
-ddfma371350 fma  1  9999999999999999 0.49                ->  9999999999999999      Inexact Rounded
-ddfma371351 fma  1  9999999999999999 0.499               ->  9999999999999999      Inexact Rounded
-ddfma371352 fma  1  9999999999999999 0.4999              ->  9999999999999999      Inexact Rounded
-ddfma371353 fma  1  9999999999999999 0.49999             ->  9999999999999999      Inexact Rounded
-ddfma371354 fma  1  9999999999999999 0.499999            ->  9999999999999999      Inexact Rounded
-ddfma371355 fma  1  9999999999999999 0.4999999           ->  9999999999999999      Inexact Rounded
-ddfma371356 fma  1  9999999999999999 0.49999999          ->  9999999999999999      Inexact Rounded
-ddfma371357 fma  1  9999999999999999 0.499999999         ->  9999999999999999      Inexact Rounded
-ddfma371358 fma  1  9999999999999999 0.4999999999        ->  9999999999999999      Inexact Rounded
-ddfma371359 fma  1  9999999999999999 0.49999999999       ->  9999999999999999      Inexact Rounded
-ddfma371360 fma  1  9999999999999999 0.499999999999      ->  9999999999999999      Inexact Rounded
-ddfma371361 fma  1  9999999999999999 0.4999999999999     ->  9999999999999999      Inexact Rounded
-ddfma371362 fma  1  9999999999999999 0.49999999999999    ->  9999999999999999      Inexact Rounded
-ddfma371363 fma  1  9999999999999999 0.499999999999999   ->  9999999999999999      Inexact Rounded
-ddfma371364 fma  1  9999999999999999 0.4999999999999999  ->  9999999999999999      Inexact Rounded
-ddfma371365 fma  1  9999999999999999 0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
-ddfma371367 fma  1  9999999999999999 0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
-ddfma371368 fma  1  9999999999999999 0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
-ddfma371369 fma  1  9999999999999999 0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
-ddfma371370 fma  1  9999999999999999 0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
-ddfma371371 fma  1  9999999999999999 0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
-ddfma371372 fma  1  9999999999999999 0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
-ddfma371373 fma  1  9999999999999999 0.500000000         ->  1.000000000000000E+16 Inexact Rounded
-ddfma371374 fma  1  9999999999999999 0.50000000          ->  1.000000000000000E+16 Inexact Rounded
-ddfma371375 fma  1  9999999999999999 0.5000000           ->  1.000000000000000E+16 Inexact Rounded
-ddfma371376 fma  1  9999999999999999 0.500000            ->  1.000000000000000E+16 Inexact Rounded
-ddfma371377 fma  1  9999999999999999 0.50000             ->  1.000000000000000E+16 Inexact Rounded
-ddfma371378 fma  1  9999999999999999 0.5000              ->  1.000000000000000E+16 Inexact Rounded
-ddfma371379 fma  1  9999999999999999 0.500               ->  1.000000000000000E+16 Inexact Rounded
-ddfma371380 fma  1  9999999999999999 0.50                ->  1.000000000000000E+16 Inexact Rounded
-ddfma371381 fma  1  9999999999999999 0.5                 ->  1.000000000000000E+16 Inexact Rounded
-ddfma371382 fma  1  9999999999999999 0.5000000000000001  ->  1.000000000000000E+16 Inexact Rounded
-ddfma371383 fma  1  9999999999999999 0.500000000000001   ->  1.000000000000000E+16 Inexact Rounded
-ddfma371384 fma  1  9999999999999999 0.50000000000001    ->  1.000000000000000E+16 Inexact Rounded
-ddfma371385 fma  1  9999999999999999 0.5000000000001     ->  1.000000000000000E+16 Inexact Rounded
-ddfma371386 fma  1  9999999999999999 0.500000000001      ->  1.000000000000000E+16 Inexact Rounded
-ddfma371387 fma  1  9999999999999999 0.50000000001       ->  1.000000000000000E+16 Inexact Rounded
-ddfma371388 fma  1  9999999999999999 0.5000000001        ->  1.000000000000000E+16 Inexact Rounded
-ddfma371389 fma  1  9999999999999999 0.500000001         ->  1.000000000000000E+16 Inexact Rounded
-ddfma371390 fma  1  9999999999999999 0.50000001          ->  1.000000000000000E+16 Inexact Rounded
-ddfma371391 fma  1  9999999999999999 0.5000001           ->  1.000000000000000E+16 Inexact Rounded
-ddfma371392 fma  1  9999999999999999 0.500001            ->  1.000000000000000E+16 Inexact Rounded
-ddfma371393 fma  1  9999999999999999 0.50001             ->  1.000000000000000E+16 Inexact Rounded
-ddfma371394 fma  1  9999999999999999 0.5001              ->  1.000000000000000E+16 Inexact Rounded
-ddfma371395 fma  1  9999999999999999 0.501               ->  1.000000000000000E+16 Inexact Rounded
-ddfma371396 fma  1  9999999999999999 0.51                ->  1.000000000000000E+16 Inexact Rounded
-
--- More GD edge cases, where difference between the unadjusted
--- exponents is larger than the maximum precision and one side is 0
-ddfma371420 fma  1   0 1.123456789012345     -> 1.123456789012345
-ddfma371421 fma  1   0 1.123456789012345E-1  -> 0.1123456789012345
-ddfma371422 fma  1   0 1.123456789012345E-2  -> 0.01123456789012345
-ddfma371423 fma  1   0 1.123456789012345E-3  -> 0.001123456789012345
-ddfma371424 fma  1   0 1.123456789012345E-4  -> 0.0001123456789012345
-ddfma371425 fma  1   0 1.123456789012345E-5  -> 0.00001123456789012345
-ddfma371426 fma  1   0 1.123456789012345E-6  -> 0.000001123456789012345
-ddfma371427 fma  1   0 1.123456789012345E-7  -> 1.123456789012345E-7
-ddfma371428 fma  1   0 1.123456789012345E-8  -> 1.123456789012345E-8
-ddfma371429 fma  1   0 1.123456789012345E-9  -> 1.123456789012345E-9
-ddfma371430 fma  1   0 1.123456789012345E-10 -> 1.123456789012345E-10
-ddfma371431 fma  1   0 1.123456789012345E-11 -> 1.123456789012345E-11
-ddfma371432 fma  1   0 1.123456789012345E-12 -> 1.123456789012345E-12
-ddfma371433 fma  1   0 1.123456789012345E-13 -> 1.123456789012345E-13
-ddfma371434 fma  1   0 1.123456789012345E-14 -> 1.123456789012345E-14
-ddfma371435 fma  1   0 1.123456789012345E-15 -> 1.123456789012345E-15
-ddfma371436 fma  1   0 1.123456789012345E-16 -> 1.123456789012345E-16
-ddfma371437 fma  1   0 1.123456789012345E-17 -> 1.123456789012345E-17
-ddfma371438 fma  1   0 1.123456789012345E-18 -> 1.123456789012345E-18
-ddfma371439 fma  1   0 1.123456789012345E-19 -> 1.123456789012345E-19
-
--- same, reversed 0
-ddfma371440 fma  1  1.123456789012345     0 -> 1.123456789012345
-ddfma371441 fma  1  1.123456789012345E-1  0 -> 0.1123456789012345
-ddfma371442 fma  1  1.123456789012345E-2  0 -> 0.01123456789012345
-ddfma371443 fma  1  1.123456789012345E-3  0 -> 0.001123456789012345
-ddfma371444 fma  1  1.123456789012345E-4  0 -> 0.0001123456789012345
-ddfma371445 fma  1  1.123456789012345E-5  0 -> 0.00001123456789012345
-ddfma371446 fma  1  1.123456789012345E-6  0 -> 0.000001123456789012345
-ddfma371447 fma  1  1.123456789012345E-7  0 -> 1.123456789012345E-7
-ddfma371448 fma  1  1.123456789012345E-8  0 -> 1.123456789012345E-8
-ddfma371449 fma  1  1.123456789012345E-9  0 -> 1.123456789012345E-9
-ddfma371450 fma  1  1.123456789012345E-10 0 -> 1.123456789012345E-10
-ddfma371451 fma  1  1.123456789012345E-11 0 -> 1.123456789012345E-11
-ddfma371452 fma  1  1.123456789012345E-12 0 -> 1.123456789012345E-12
-ddfma371453 fma  1  1.123456789012345E-13 0 -> 1.123456789012345E-13
-ddfma371454 fma  1  1.123456789012345E-14 0 -> 1.123456789012345E-14
-ddfma371455 fma  1  1.123456789012345E-15 0 -> 1.123456789012345E-15
-ddfma371456 fma  1  1.123456789012345E-16 0 -> 1.123456789012345E-16
-ddfma371457 fma  1  1.123456789012345E-17 0 -> 1.123456789012345E-17
-ddfma371458 fma  1  1.123456789012345E-18 0 -> 1.123456789012345E-18
-ddfma371459 fma  1  1.123456789012345E-19 0 -> 1.123456789012345E-19
-
--- same, Es on the 0
-ddfma371460 fma  1  1.123456789012345  0E-0   -> 1.123456789012345
-ddfma371461 fma  1  1.123456789012345  0E-1   -> 1.123456789012345
-ddfma371462 fma  1  1.123456789012345  0E-2   -> 1.123456789012345
-ddfma371463 fma  1  1.123456789012345  0E-3   -> 1.123456789012345
-ddfma371464 fma  1  1.123456789012345  0E-4   -> 1.123456789012345
-ddfma371465 fma  1  1.123456789012345  0E-5   -> 1.123456789012345
-ddfma371466 fma  1  1.123456789012345  0E-6   -> 1.123456789012345
-ddfma371467 fma  1  1.123456789012345  0E-7   -> 1.123456789012345
-ddfma371468 fma  1  1.123456789012345  0E-8   -> 1.123456789012345
-ddfma371469 fma  1  1.123456789012345  0E-9   -> 1.123456789012345
-ddfma371470 fma  1  1.123456789012345  0E-10  -> 1.123456789012345
-ddfma371471 fma  1  1.123456789012345  0E-11  -> 1.123456789012345
-ddfma371472 fma  1  1.123456789012345  0E-12  -> 1.123456789012345
-ddfma371473 fma  1  1.123456789012345  0E-13  -> 1.123456789012345
-ddfma371474 fma  1  1.123456789012345  0E-14  -> 1.123456789012345
-ddfma371475 fma  1  1.123456789012345  0E-15  -> 1.123456789012345
--- next four flag Rounded because the 0 extends the result
-ddfma371476 fma  1  1.123456789012345  0E-16  -> 1.123456789012345 Rounded
-ddfma371477 fma  1  1.123456789012345  0E-17  -> 1.123456789012345 Rounded
-ddfma371478 fma  1  1.123456789012345  0E-18  -> 1.123456789012345 Rounded
-ddfma371479 fma  1  1.123456789012345  0E-19  -> 1.123456789012345 Rounded
-
--- sum of two opposite-sign operands is exactly 0 and floor => -0
-rounding:    half_up
--- exact zeros from zeros
-ddfma371500 fma  1   0        0E-19  ->  0E-19
-ddfma371501 fma  1  -0        0E-19  ->  0E-19
-ddfma371502 fma  1   0       -0E-19  ->  0E-19
-ddfma371503 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-ddfma371511 fma  1  -11      11    ->  0
-ddfma371512 fma  1   11     -11    ->  0
-
-rounding:    half_down
--- exact zeros from zeros
-ddfma371520 fma  1   0        0E-19  ->  0E-19
-ddfma371521 fma  1  -0        0E-19  ->  0E-19
-ddfma371522 fma  1   0       -0E-19  ->  0E-19
-ddfma371523 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-ddfma371531 fma  1  -11      11    ->  0
-ddfma371532 fma  1   11     -11    ->  0
-
-rounding:    half_even
--- exact zeros from zeros
-ddfma371540 fma  1   0        0E-19  ->  0E-19
-ddfma371541 fma  1  -0        0E-19  ->  0E-19
-ddfma371542 fma  1   0       -0E-19  ->  0E-19
-ddfma371543 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-ddfma371551 fma  1  -11      11    ->  0
-ddfma371552 fma  1   11     -11    ->  0
-
-rounding:    up
--- exact zeros from zeros
-ddfma371560 fma  1   0        0E-19  ->  0E-19
-ddfma371561 fma  1  -0        0E-19  ->  0E-19
-ddfma371562 fma  1   0       -0E-19  ->  0E-19
-ddfma371563 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-ddfma371571 fma  1  -11      11    ->  0
-ddfma371572 fma  1   11     -11    ->  0
-
-rounding:    down
--- exact zeros from zeros
-ddfma371580 fma  1   0        0E-19  ->  0E-19
-ddfma371581 fma  1  -0        0E-19  ->  0E-19
-ddfma371582 fma  1   0       -0E-19  ->  0E-19
-ddfma371583 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-ddfma371591 fma  1  -11      11    ->  0
-ddfma371592 fma  1   11     -11    ->  0
-
-rounding:    ceiling
--- exact zeros from zeros
-ddfma371600 fma  1   0        0E-19  ->  0E-19
-ddfma371601 fma  1  -0        0E-19  ->  0E-19
-ddfma371602 fma  1   0       -0E-19  ->  0E-19
-ddfma371603 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-ddfma371611 fma  1  -11      11    ->  0
-ddfma371612 fma  1   11     -11    ->  0
-
--- and the extra-special ugly case; unusual minuses marked by -- *
-rounding:    floor
--- exact zeros from zeros
-ddfma371620 fma  1   0        0E-19  ->  0E-19
-ddfma371621 fma  1  -0        0E-19  -> -0E-19           -- *
-ddfma371622 fma  1   0       -0E-19  -> -0E-19           -- *
-ddfma371623 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-ddfma371631 fma  1  -11      11    ->  -0                -- *
-ddfma371632 fma  1   11     -11    ->  -0                -- *
-
--- Examples from SQL proposal (Krishna Kulkarni)
-ddfma371701 fma  1  130E-2    120E-2    -> 2.50
-ddfma371702 fma  1  130E-2    12E-1     -> 2.50
-ddfma371703 fma  1  130E-2    1E0       -> 2.30
-ddfma371704 fma  1  1E2       1E4       -> 1.01E+4
-ddfma371705 fma  1  130E-2   -120E-2 -> 0.10
-ddfma371706 fma  1  130E-2   -12E-1  -> 0.10
-ddfma371707 fma  1  130E-2   -1E0    -> 0.30
-ddfma371708 fma  1  1E2      -1E4    -> -9.9E+3
-
--- Gappy coefficients; check residue handling even with full coefficient gap
-rounding: half_even
-
-ddfma375001 fma  1  1234567890123456 1      -> 1234567890123457
-ddfma375002 fma  1  1234567890123456 0.6    -> 1234567890123457  Inexact Rounded
-ddfma375003 fma  1  1234567890123456 0.06   -> 1234567890123456  Inexact Rounded
-ddfma375004 fma  1  1234567890123456 6E-3   -> 1234567890123456  Inexact Rounded
-ddfma375005 fma  1  1234567890123456 6E-4   -> 1234567890123456  Inexact Rounded
-ddfma375006 fma  1  1234567890123456 6E-5   -> 1234567890123456  Inexact Rounded
-ddfma375007 fma  1  1234567890123456 6E-6   -> 1234567890123456  Inexact Rounded
-ddfma375008 fma  1  1234567890123456 6E-7   -> 1234567890123456  Inexact Rounded
-ddfma375009 fma  1  1234567890123456 6E-8   -> 1234567890123456  Inexact Rounded
-ddfma375010 fma  1  1234567890123456 6E-9   -> 1234567890123456  Inexact Rounded
-ddfma375011 fma  1  1234567890123456 6E-10  -> 1234567890123456  Inexact Rounded
-ddfma375012 fma  1  1234567890123456 6E-11  -> 1234567890123456  Inexact Rounded
-ddfma375013 fma  1  1234567890123456 6E-12  -> 1234567890123456  Inexact Rounded
-ddfma375014 fma  1  1234567890123456 6E-13  -> 1234567890123456  Inexact Rounded
-ddfma375015 fma  1  1234567890123456 6E-14  -> 1234567890123456  Inexact Rounded
-ddfma375016 fma  1  1234567890123456 6E-15  -> 1234567890123456  Inexact Rounded
-ddfma375017 fma  1  1234567890123456 6E-16  -> 1234567890123456  Inexact Rounded
-ddfma375018 fma  1  1234567890123456 6E-17  -> 1234567890123456  Inexact Rounded
-ddfma375019 fma  1  1234567890123456 6E-18  -> 1234567890123456  Inexact Rounded
-ddfma375020 fma  1  1234567890123456 6E-19  -> 1234567890123456  Inexact Rounded
-ddfma375021 fma  1  1234567890123456 6E-20  -> 1234567890123456  Inexact Rounded
-
--- widening second argument at gap
-ddfma375030 fma  1  12345678 1                       -> 12345679
-ddfma375031 fma  1  12345678 0.1                     -> 12345678.1
-ddfma375032 fma  1  12345678 0.12                    -> 12345678.12
-ddfma375033 fma  1  12345678 0.123                   -> 12345678.123
-ddfma375034 fma  1  12345678 0.1234                  -> 12345678.1234
-ddfma375035 fma  1  12345678 0.12345                 -> 12345678.12345
-ddfma375036 fma  1  12345678 0.123456                -> 12345678.123456
-ddfma375037 fma  1  12345678 0.1234567               -> 12345678.1234567
-ddfma375038 fma  1  12345678 0.12345678              -> 12345678.12345678
-ddfma375039 fma  1  12345678 0.123456789             -> 12345678.12345679 Inexact Rounded
-ddfma375040 fma  1  12345678 0.123456785             -> 12345678.12345678 Inexact Rounded
-ddfma375041 fma  1  12345678 0.1234567850            -> 12345678.12345678 Inexact Rounded
-ddfma375042 fma  1  12345678 0.1234567851            -> 12345678.12345679 Inexact Rounded
-ddfma375043 fma  1  12345678 0.12345678501           -> 12345678.12345679 Inexact Rounded
-ddfma375044 fma  1  12345678 0.123456785001          -> 12345678.12345679 Inexact Rounded
-ddfma375045 fma  1  12345678 0.1234567850001         -> 12345678.12345679 Inexact Rounded
-ddfma375046 fma  1  12345678 0.12345678500001        -> 12345678.12345679 Inexact Rounded
-ddfma375047 fma  1  12345678 0.123456785000001       -> 12345678.12345679 Inexact Rounded
-ddfma375048 fma  1  12345678 0.1234567850000001      -> 12345678.12345679 Inexact Rounded
-ddfma375049 fma  1  12345678 0.1234567850000000      -> 12345678.12345678 Inexact Rounded
---                               90123456
-rounding: half_even
-ddfma375050 fma  1  12345678 0.0234567750000000      -> 12345678.02345678 Inexact Rounded
-ddfma375051 fma  1  12345678 0.0034567750000000      -> 12345678.00345678 Inexact Rounded
-ddfma375052 fma  1  12345678 0.0004567750000000      -> 12345678.00045678 Inexact Rounded
-ddfma375053 fma  1  12345678 0.0000567750000000      -> 12345678.00005678 Inexact Rounded
-ddfma375054 fma  1  12345678 0.0000067750000000      -> 12345678.00000678 Inexact Rounded
-ddfma375055 fma  1  12345678 0.0000007750000000      -> 12345678.00000078 Inexact Rounded
-ddfma375056 fma  1  12345678 0.0000000750000000      -> 12345678.00000008 Inexact Rounded
-ddfma375057 fma  1  12345678 0.0000000050000000      -> 12345678.00000000 Inexact Rounded
-ddfma375060 fma  1  12345678 0.0234567750000001      -> 12345678.02345678 Inexact Rounded
-ddfma375061 fma  1  12345678 0.0034567750000001      -> 12345678.00345678 Inexact Rounded
-ddfma375062 fma  1  12345678 0.0004567750000001      -> 12345678.00045678 Inexact Rounded
-ddfma375063 fma  1  12345678 0.0000567750000001      -> 12345678.00005678 Inexact Rounded
-ddfma375064 fma  1  12345678 0.0000067750000001      -> 12345678.00000678 Inexact Rounded
-ddfma375065 fma  1  12345678 0.0000007750000001      -> 12345678.00000078 Inexact Rounded
-ddfma375066 fma  1  12345678 0.0000000750000001      -> 12345678.00000008 Inexact Rounded
-ddfma375067 fma  1  12345678 0.0000000050000001      -> 12345678.00000001 Inexact Rounded
--- far-out residues (full coefficient gap is 16+15 digits)
-rounding: up
-ddfma375070 fma  1  12345678 1E-8                    -> 12345678.00000001
-ddfma375071 fma  1  12345678 1E-9                    -> 12345678.00000001 Inexact Rounded
-ddfma375072 fma  1  12345678 1E-10                   -> 12345678.00000001 Inexact Rounded
-ddfma375073 fma  1  12345678 1E-11                   -> 12345678.00000001 Inexact Rounded
-ddfma375074 fma  1  12345678 1E-12                   -> 12345678.00000001 Inexact Rounded
-ddfma375075 fma  1  12345678 1E-13                   -> 12345678.00000001 Inexact Rounded
-ddfma375076 fma  1  12345678 1E-14                   -> 12345678.00000001 Inexact Rounded
-ddfma375077 fma  1  12345678 1E-15                   -> 12345678.00000001 Inexact Rounded
-ddfma375078 fma  1  12345678 1E-16                   -> 12345678.00000001 Inexact Rounded
-ddfma375079 fma  1  12345678 1E-17                   -> 12345678.00000001 Inexact Rounded
-ddfma375080 fma  1  12345678 1E-18                   -> 12345678.00000001 Inexact Rounded
-ddfma375081 fma  1  12345678 1E-19                   -> 12345678.00000001 Inexact Rounded
-ddfma375082 fma  1  12345678 1E-20                   -> 12345678.00000001 Inexact Rounded
-ddfma375083 fma  1  12345678 1E-25                   -> 12345678.00000001 Inexact Rounded
-ddfma375084 fma  1  12345678 1E-30                   -> 12345678.00000001 Inexact Rounded
-ddfma375085 fma  1  12345678 1E-31                   -> 12345678.00000001 Inexact Rounded
-ddfma375086 fma  1  12345678 1E-32                   -> 12345678.00000001 Inexact Rounded
-ddfma375087 fma  1  12345678 1E-33                   -> 12345678.00000001 Inexact Rounded
-ddfma375088 fma  1  12345678 1E-34                   -> 12345678.00000001 Inexact Rounded
-ddfma375089 fma  1  12345678 1E-35                   -> 12345678.00000001 Inexact Rounded
-
--- desctructive subtraction (from remainder tests)
-
--- +++ some of these will be off-by-one remainder vs remainderNear
-
-ddfma4000  fma  -1234567890123454   1.000000000000001    1234567890123456  ->  0.765432109876546
-ddfma4001  fma  -1234567890123443    1.00000000000001    1234567890123456  ->  0.65432109876557
-ddfma4002  fma  -1234567890123332     1.0000000000001    1234567890123456  ->  0.5432109876668
-ddfma4003  fma   -308641972530863   4.000000000000001    1234567890123455  ->  2.691358027469137
-ddfma4004  fma   -308641972530863   4.000000000000001    1234567890123456  ->  3.691358027469137
-ddfma4005  fma   -246913578024696     4.9999999999999    1234567890123456  ->  0.6913578024696
-ddfma4006  fma   -246913578024691    4.99999999999999    1234567890123456  ->  3.46913578024691
-ddfma4007  fma   -246913578024691   4.999999999999999    1234567890123456  ->  1.246913578024691
-ddfma4008  fma   -246913578024691   5.000000000000001    1234567890123456  ->  0.753086421975309
-ddfma4009  fma   -246913578024690    5.00000000000001    1234567890123456  ->  3.53086421975310
-ddfma4010  fma   -246913578024686     5.0000000000001    1234567890123456  ->  1.3086421975314
-ddfma4011  fma  -1234567890123455   1.000000000000001    1234567890123456  ->  -0.234567890123455
-ddfma4012  fma  -1234567890123444    1.00000000000001    1234567890123456  ->  -0.34567890123444
-ddfma4013  fma  -1234567890123333     1.0000000000001    1234567890123456  ->  -0.4567890123333
-ddfma4014  fma   -308641972530864   4.000000000000001    1234567890123455  ->  -1.308641972530864
-ddfma4015  fma   -308641972530864   4.000000000000001    1234567890123456  ->  -0.308641972530864
-ddfma4016  fma   -246913578024696     4.9999999999999    1234567890123456  ->  0.6913578024696
-ddfma4017  fma   -246913578024692    4.99999999999999    1234567890123456  ->  -1.53086421975308
-ddfma4018  fma   -246913578024691   4.999999999999999    1234567890123456  ->  1.246913578024691
-ddfma4019  fma   -246913578024691   5.000000000000001    1234567890123456  ->  0.753086421975309
-ddfma4020  fma   -246913578024691    5.00000000000001    1234567890123456  ->  -1.46913578024691
-ddfma4021  fma   -246913578024686     5.0000000000001    1234567890123456  ->  1.3086421975314
-
-
--- Null tests
-ddfma39990 fma  1  10  # -> NaN Invalid_operation
-ddfma39991 fma  1   # 10 -> NaN Invalid_operation
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddInvert.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddInvert.decTest
deleted file mode 100644
index 321e4e9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddInvert.decTest
+++ /dev/null
@@ -1,202 +0,0 @@
-------------------------------------------------------------------------
--- ddInvert.decTest -- digitwise logical INVERT for decDoubles        --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Sanity check (truth table)
-ddinv001 invert             0 -> 1111111111111111
-ddinv002 invert             1 -> 1111111111111110
-ddinv003 invert            10 -> 1111111111111101
-ddinv004 invert     111111111 -> 1111111000000000
-ddinv005 invert     000000000 -> 1111111111111111
--- and at msd and msd-1
-ddinv007 invert 0000000000000000 ->   1111111111111111
-ddinv008 invert 1000000000000000 ->    111111111111111
-ddinv009 invert 0000000000000000 ->   1111111111111111
-ddinv010 invert 0100000000000000 ->   1011111111111111
-ddinv011 invert 0111111111111111 ->   1000000000000000
-ddinv012 invert 1111111111111111 ->                  0
-ddinv013 invert 0011111111111111 ->   1100000000000000
-ddinv014 invert 0111111111111111 ->   1000000000000000
-
--- Various lengths
---             123456789         1234567890123456
-ddinv021 invert 111111111     ->  1111111000000000
-ddinv022 invert 111111111111  ->  1111000000000000
-ddinv023 invert  11111111     ->  1111111100000000
-ddinv025 invert   1111111     ->  1111111110000000
-ddinv026 invert    111111     ->  1111111111000000
-ddinv027 invert     11111     ->  1111111111100000
-ddinv028 invert      1111     ->  1111111111110000
-ddinv029 invert       111     ->  1111111111111000
-ddinv031 invert        11     ->  1111111111111100
-ddinv032 invert         1     ->  1111111111111110
-ddinv033 invert 111111111111  ->  1111000000000000
-ddinv034 invert 11111111111   ->  1111100000000000
-ddinv035 invert 1111111111    ->  1111110000000000
-ddinv036 invert 111111111     ->  1111111000000000
-
-ddinv040 invert 011111111   ->  1111111100000000
-ddinv041 invert 101111111   ->  1111111010000000
-ddinv042 invert 110111111   ->  1111111001000000
-ddinv043 invert 111011111   ->  1111111000100000
-ddinv044 invert 111101111   ->  1111111000010000
-ddinv045 invert 111110111   ->  1111111000001000
-ddinv046 invert 111111011   ->  1111111000000100
-ddinv047 invert 111111101   ->  1111111000000010
-ddinv048 invert 111111110   ->  1111111000000001
-ddinv049 invert 011111011   ->  1111111100000100
-ddinv050 invert 101111101   ->  1111111010000010
-ddinv051 invert 110111110   ->  1111111001000001
-ddinv052 invert 111011101   ->  1111111000100010
-ddinv053 invert 111101011   ->  1111111000010100
-ddinv054 invert 111110111   ->  1111111000001000
-ddinv055 invert 111101011   ->  1111111000010100
-ddinv056 invert 111011101   ->  1111111000100010
-ddinv057 invert 110111110   ->  1111111001000001
-ddinv058 invert 101111101   ->  1111111010000010
-ddinv059 invert 011111011   ->  1111111100000100
-
-ddinv080 invert 1000000011111111   ->   111111100000000
-ddinv081 invert 0100000101111111   ->  1011111010000000
-ddinv082 invert 0010000110111111   ->  1101111001000000
-ddinv083 invert 0001000111011111   ->  1110111000100000
-ddinv084 invert 0000100111101111   ->  1111011000010000
-ddinv085 invert 0000010111110111   ->  1111101000001000
-ddinv086 invert 0000001111111011   ->  1111110000000100
-ddinv087 invert 0000010111111101   ->  1111101000000010
-ddinv088 invert 0000100111111110   ->  1111011000000001
-ddinv089 invert 0001000011111011   ->  1110111100000100
-ddinv090 invert 0010000101111101   ->  1101111010000010
-ddinv091 invert 0100000110111110   ->  1011111001000001
-ddinv092 invert 1000000111011101   ->   111111000100010
-ddinv093 invert 0100000111101011   ->  1011111000010100
-ddinv094 invert 0010000111110111   ->  1101111000001000
-ddinv095 invert 0001000111101011   ->  1110111000010100
-ddinv096 invert 0000100111011101   ->  1111011000100010
-ddinv097 invert 0000010110111110   ->  1111101001000001
-ddinv098 invert 0000001101111101   ->  1111110010000010
-ddinv099 invert 0000010011111011   ->  1111101100000100
-
--- non-0/1 should not be accepted, nor should signs
-ddinv220 invert 111111112   ->  NaN Invalid_operation
-ddinv221 invert 333333333   ->  NaN Invalid_operation
-ddinv222 invert 555555555   ->  NaN Invalid_operation
-ddinv223 invert 777777777   ->  NaN Invalid_operation
-ddinv224 invert 999999999   ->  NaN Invalid_operation
-ddinv225 invert 222222222   ->  NaN Invalid_operation
-ddinv226 invert 444444444   ->  NaN Invalid_operation
-ddinv227 invert 666666666   ->  NaN Invalid_operation
-ddinv228 invert 888888888   ->  NaN Invalid_operation
-ddinv229 invert 999999999   ->  NaN Invalid_operation
-ddinv230 invert 999999999   ->  NaN Invalid_operation
-ddinv231 invert 999999999   ->  NaN Invalid_operation
-ddinv232 invert 999999999   ->  NaN Invalid_operation
--- a few randoms
-ddinv240 invert  567468689  ->  NaN Invalid_operation
-ddinv241 invert  567367689  ->  NaN Invalid_operation
-ddinv242 invert -631917772  ->  NaN Invalid_operation
-ddinv243 invert -756253257  ->  NaN Invalid_operation
-ddinv244 invert  835590149  ->  NaN Invalid_operation
--- test MSD
-ddinv250 invert  2000000000000000  ->  NaN Invalid_operation
-ddinv251 invert  3000000000000000  ->  NaN Invalid_operation
-ddinv252 invert  4000000000000000  ->  NaN Invalid_operation
-ddinv253 invert  5000000000000000  ->  NaN Invalid_operation
-ddinv254 invert  6000000000000000  ->  NaN Invalid_operation
-ddinv255 invert  7000000000000000  ->  NaN Invalid_operation
-ddinv256 invert  8000000000000000  ->  NaN Invalid_operation
-ddinv257 invert  9000000000000000  ->  NaN Invalid_operation
--- test MSD-1
-ddinv270 invert  0200001000000000  ->  NaN Invalid_operation
-ddinv271 invert  0300000100000000  ->  NaN Invalid_operation
-ddinv272 invert  0400000010000000  ->  NaN Invalid_operation
-ddinv273 invert  0500000001000000  ->  NaN Invalid_operation
-ddinv274 invert  1600000000100000  ->  NaN Invalid_operation
-ddinv275 invert  1700000000010000  ->  NaN Invalid_operation
-ddinv276 invert  1800000000001000  ->  NaN Invalid_operation
-ddinv277 invert  1900000000000100  ->  NaN Invalid_operation
--- test LSD
-ddinv280 invert  0010000000000002  ->  NaN Invalid_operation
-ddinv281 invert  0001000000000003  ->  NaN Invalid_operation
-ddinv282 invert  0000100000000004  ->  NaN Invalid_operation
-ddinv283 invert  0000010000000005  ->  NaN Invalid_operation
-ddinv284 invert  1000001000000006  ->  NaN Invalid_operation
-ddinv285 invert  1000000100000007  ->  NaN Invalid_operation
-ddinv286 invert  1000000010000008  ->  NaN Invalid_operation
-ddinv287 invert  1000000001000009  ->  NaN Invalid_operation
--- test Middie
-ddinv288 invert  0010000020000000  ->  NaN Invalid_operation
-ddinv289 invert  0001000030000001  ->  NaN Invalid_operation
-ddinv290 invert  0000100040000010  ->  NaN Invalid_operation
-ddinv291 invert  0000010050000100  ->  NaN Invalid_operation
-ddinv292 invert  1000001060001000  ->  NaN Invalid_operation
-ddinv293 invert  1000000170010000  ->  NaN Invalid_operation
-ddinv294 invert  1000000080100000  ->  NaN Invalid_operation
-ddinv295 invert  1000000091000000  ->  NaN Invalid_operation
--- sign
-ddinv296 invert -1000000001000000  ->  NaN Invalid_operation
-ddinv299 invert  1000000001000000  ->  111111110111111
-
-
--- Nmax, Nmin, Ntiny-like
-ddinv341 invert  9.99999999E+299   -> NaN Invalid_operation
-ddinv342 invert  1E-299            -> NaN Invalid_operation
-ddinv343 invert  1.00000000E-299   -> NaN Invalid_operation
-ddinv344 invert  1E-207            -> NaN Invalid_operation
-ddinv345 invert  -1E-207           -> NaN Invalid_operation
-ddinv346 invert  -1.00000000E-299  -> NaN Invalid_operation
-ddinv347 invert  -1E-299           -> NaN Invalid_operation
-ddinv348 invert  -9.99999999E+299  -> NaN Invalid_operation
-
--- A few other non-integers
-ddinv361 invert  1.0               -> NaN Invalid_operation
-ddinv362 invert  1E+1              -> NaN Invalid_operation
-ddinv363 invert  0.0               -> NaN Invalid_operation
-ddinv364 invert  0E+1              -> NaN Invalid_operation
-ddinv365 invert  9.9               -> NaN Invalid_operation
-ddinv366 invert  9E+1              -> NaN Invalid_operation
-
--- All Specials are in error
-ddinv788 invert -Inf     -> NaN  Invalid_operation
-ddinv794 invert  Inf     -> NaN  Invalid_operation
-ddinv821 invert  NaN     -> NaN  Invalid_operation
-ddinv841 invert  sNaN    -> NaN  Invalid_operation
--- propagating NaNs
-ddinv861 invert  NaN1    -> NaN Invalid_operation
-ddinv862 invert +NaN2    -> NaN Invalid_operation
-ddinv863 invert  NaN3    -> NaN Invalid_operation
-ddinv864 invert  NaN4    -> NaN Invalid_operation
-ddinv865 invert  NaN5    -> NaN Invalid_operation
-ddinv871 invert  sNaN11  -> NaN Invalid_operation
-ddinv872 invert  sNaN12  -> NaN Invalid_operation
-ddinv873 invert  sNaN13  -> NaN Invalid_operation
-ddinv874 invert  sNaN14  -> NaN Invalid_operation
-ddinv875 invert  sNaN15  -> NaN Invalid_operation
-ddinv876 invert  NaN16   -> NaN Invalid_operation
-ddinv881 invert +NaN25   -> NaN Invalid_operation
-ddinv882 invert -NaN26   -> NaN Invalid_operation
-ddinv883 invert -sNaN27  -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddLogB.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddLogB.decTest
deleted file mode 100644
index 00589b6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddLogB.decTest
+++ /dev/null
@@ -1,159 +0,0 @@
-------------------------------------------------------------------------
--- ddLogB.decTest -- integral 754r adjusted exponent, for decDoubles  --
--- Copyright (c) IBM Corporation, 2005, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- basics
-ddlogb000 logb  0                 -> -Infinity  Division_by_zero
-ddlogb001 logb  1E-398            -> -398
-ddlogb002 logb  1E-383            -> -383
-ddlogb003 logb  0.001             -> -3
-ddlogb004 logb  0.03              -> -2
-ddlogb005 logb  1                 ->  0
-ddlogb006 logb  2                 ->  0
-ddlogb007 logb  2.5               ->  0
-ddlogb008 logb  2.500             ->  0
-ddlogb009 logb  10                ->  1
-ddlogb010 logb  70                ->  1
-ddlogb011 logb  100               ->  2
-ddlogb012 logb  333               ->  2
-ddlogb013 logb  9E+384            ->  384
-ddlogb014 logb +Infinity          ->  Infinity
-
--- negatives appear to be treated as positives
-ddlogb021 logb -0                 -> -Infinity  Division_by_zero
-ddlogb022 logb -1E-398            -> -398
-ddlogb023 logb -9E-383            -> -383
-ddlogb024 logb -0.001             -> -3
-ddlogb025 logb -1                 ->  0
-ddlogb026 logb -2                 ->  0
-ddlogb027 logb -10                ->  1
-ddlogb028 logb -70                ->  1
-ddlogb029 logb -100               ->  2
-ddlogb030 logb -9E+384            ->  384
-ddlogb031 logb -Infinity          ->  Infinity
-
--- zeros
-ddlogb111 logb          0   -> -Infinity  Division_by_zero
-ddlogb112 logb         -0   -> -Infinity  Division_by_zero
-ddlogb113 logb       0E+4   -> -Infinity  Division_by_zero
-ddlogb114 logb      -0E+4   -> -Infinity  Division_by_zero
-ddlogb115 logb     0.0000   -> -Infinity  Division_by_zero
-ddlogb116 logb    -0.0000   -> -Infinity  Division_by_zero
-ddlogb117 logb      0E-141  -> -Infinity  Division_by_zero
-ddlogb118 logb     -0E-141  -> -Infinity  Division_by_zero
-
--- full coefficients, alternating bits
-ddlogb121 logb   268268268        -> 8
-ddlogb122 logb  -268268268        -> 8
-ddlogb123 logb   134134134        -> 8
-ddlogb124 logb  -134134134        -> 8
-
--- Nmax, Nmin, Ntiny
-ddlogb131 logb  9.999999999999999E+384   ->  384
-ddlogb132 logb  1E-383                   -> -383
-ddlogb133 logb  1.000000000000000E-383   -> -383
-ddlogb134 logb  1E-398                   -> -398
-
-ddlogb135 logb  -1E-398                  -> -398
-ddlogb136 logb  -1.000000000000000E-383  -> -383
-ddlogb137 logb  -1E-383                  -> -383
-ddlogb138 logb  -9.999999999999999E+384  ->  384
-
--- ones
-ddlogb0061 logb  1                 ->   0
-ddlogb0062 logb  1.0               ->   0
-ddlogb0063 logb  1.000000000000000 ->   0
-
--- notable cases -- exact powers of 10
-ddlogb1100 logb 1             -> 0
-ddlogb1101 logb 10            -> 1
-ddlogb1102 logb 100           -> 2
-ddlogb1103 logb 1000          -> 3
-ddlogb1104 logb 10000         -> 4
-ddlogb1105 logb 100000        -> 5
-ddlogb1106 logb 1000000       -> 6
-ddlogb1107 logb 10000000      -> 7
-ddlogb1108 logb 100000000     -> 8
-ddlogb1109 logb 1000000000    -> 9
-ddlogb1110 logb 10000000000   -> 10
-ddlogb1111 logb 100000000000  -> 11
-ddlogb1112 logb 1000000000000 -> 12
-ddlogb1113 logb 0.00000000001 -> -11
-ddlogb1114 logb 0.0000000001 -> -10
-ddlogb1115 logb 0.000000001 -> -9
-ddlogb1116 logb 0.00000001 -> -8
-ddlogb1117 logb 0.0000001 -> -7
-ddlogb1118 logb 0.000001 -> -6
-ddlogb1119 logb 0.00001 -> -5
-ddlogb1120 logb 0.0001 -> -4
-ddlogb1121 logb 0.001 -> -3
-ddlogb1122 logb 0.01 -> -2
-ddlogb1123 logb 0.1 -> -1
-ddlogb1124 logb 1E-99  -> -99
-ddlogb1125 logb 1E-100 -> -100
-ddlogb1127 logb 1E-299 -> -299
-ddlogb1126 logb 1E-383 -> -383
-
--- suggestions from Ilan Nehama
-ddlogb1400 logb 10E-3    -> -2
-ddlogb1401 logb 10E-2    -> -1
-ddlogb1402 logb 100E-2   ->  0
-ddlogb1403 logb 1000E-2  ->  1
-ddlogb1404 logb 10000E-2 ->  2
-ddlogb1405 logb 10E-1    ->  0
-ddlogb1406 logb 100E-1   ->  1
-ddlogb1407 logb 1000E-1  ->  2
-ddlogb1408 logb 10000E-1 ->  3
-ddlogb1409 logb 10E0     ->  1
-ddlogb1410 logb 100E0    ->  2
-ddlogb1411 logb 1000E0   ->  3
-ddlogb1412 logb 10000E0  ->  4
-ddlogb1413 logb 10E1     ->  2
-ddlogb1414 logb 100E1    ->  3
-ddlogb1415 logb 1000E1   ->  4
-ddlogb1416 logb 10000E1  ->  5
-ddlogb1417 logb 10E2     ->  3
-ddlogb1418 logb 100E2    ->  4
-ddlogb1419 logb 1000E2   ->  5
-ddlogb1420 logb 10000E2  ->  6
-
--- special values
-ddlogb820  logb   Infinity ->   Infinity
-ddlogb821  logb   0        ->  -Infinity Division_by_zero
-ddlogb822  logb   NaN      ->   NaN
-ddlogb823  logb   sNaN     ->   NaN     Invalid_operation
--- propagating NaNs
-ddlogb824  logb   sNaN123  ->   NaN123  Invalid_operation
-ddlogb825  logb   -sNaN321 ->  -NaN321  Invalid_operation
-ddlogb826  logb   NaN456   ->   NaN456
-ddlogb827  logb   -NaN654  ->  -NaN654
-ddlogb828  logb   NaN1     ->   NaN1
-
--- Null test
-ddlogb900  logb #   -> NaN Invalid_operation
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMax.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMax.decTest
deleted file mode 100644
index 45ea9b4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMax.decTest
+++ /dev/null
@@ -1,322 +0,0 @@
-------------------------------------------------------------------------
--- ddMax.decTest -- decDouble maxnum                                  --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- we assume that base comparison is tested in compare.decTest, so
--- these mainly cover special cases and rounding
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- sanity checks
-ddmax001 max  -2  -2  -> -2
-ddmax002 max  -2  -1  -> -1
-ddmax003 max  -2   0  ->  0
-ddmax004 max  -2   1  ->  1
-ddmax005 max  -2   2  ->  2
-ddmax006 max  -1  -2  -> -1
-ddmax007 max  -1  -1  -> -1
-ddmax008 max  -1   0  ->  0
-ddmax009 max  -1   1  ->  1
-ddmax010 max  -1   2  ->  2
-ddmax011 max   0  -2  ->  0
-ddmax012 max   0  -1  ->  0
-ddmax013 max   0   0  ->  0
-ddmax014 max   0   1  ->  1
-ddmax015 max   0   2  ->  2
-ddmax016 max   1  -2  ->  1
-ddmax017 max   1  -1  ->  1
-ddmax018 max   1   0  ->  1
-ddmax019 max   1   1  ->  1
-ddmax020 max   1   2  ->  2
-ddmax021 max   2  -2  ->  2
-ddmax022 max   2  -1  ->  2
-ddmax023 max   2   0  ->  2
-ddmax025 max   2   1  ->  2
-ddmax026 max   2   2  ->  2
-
--- extended zeros
-ddmax030 max   0     0   ->  0
-ddmax031 max   0    -0   ->  0
-ddmax032 max   0    -0.0 ->  0
-ddmax033 max   0     0.0 ->  0
-ddmax034 max  -0     0   ->  0    -- note: -0 = 0, but 0 chosen
-ddmax035 max  -0    -0   -> -0
-ddmax036 max  -0    -0.0 -> -0.0
-ddmax037 max  -0     0.0 ->  0.0
-ddmax038 max   0.0   0   ->  0
-ddmax039 max   0.0  -0   ->  0.0
-ddmax040 max   0.0  -0.0 ->  0.0
-ddmax041 max   0.0   0.0 ->  0.0
-ddmax042 max  -0.0   0   ->  0
-ddmax043 max  -0.0  -0   -> -0.0
-ddmax044 max  -0.0  -0.0 -> -0.0
-ddmax045 max  -0.0   0.0 ->  0.0
-
-ddmax050 max  -0E1   0E1 ->  0E+1
-ddmax051 max  -0E2   0E2 ->  0E+2
-ddmax052 max  -0E2   0E1 ->  0E+1
-ddmax053 max  -0E1   0E2 ->  0E+2
-ddmax054 max   0E1  -0E1 ->  0E+1
-ddmax055 max   0E2  -0E2 ->  0E+2
-ddmax056 max   0E2  -0E1 ->  0E+2
-ddmax057 max   0E1  -0E2 ->  0E+1
-
-ddmax058 max   0E1   0E1 ->  0E+1
-ddmax059 max   0E2   0E2 ->  0E+2
-ddmax060 max   0E2   0E1 ->  0E+2
-ddmax061 max   0E1   0E2 ->  0E+2
-ddmax062 max  -0E1  -0E1 -> -0E+1
-ddmax063 max  -0E2  -0E2 -> -0E+2
-ddmax064 max  -0E2  -0E1 -> -0E+1
-ddmax065 max  -0E1  -0E2 -> -0E+1
-
--- Specials
-ddmax090 max  Inf  -Inf   ->  Infinity
-ddmax091 max  Inf  -1000  ->  Infinity
-ddmax092 max  Inf  -1     ->  Infinity
-ddmax093 max  Inf  -0     ->  Infinity
-ddmax094 max  Inf   0     ->  Infinity
-ddmax095 max  Inf   1     ->  Infinity
-ddmax096 max  Inf   1000  ->  Infinity
-ddmax097 max  Inf   Inf   ->  Infinity
-ddmax098 max -1000  Inf   ->  Infinity
-ddmax099 max -Inf   Inf   ->  Infinity
-ddmax100 max -1     Inf   ->  Infinity
-ddmax101 max -0     Inf   ->  Infinity
-ddmax102 max  0     Inf   ->  Infinity
-ddmax103 max  1     Inf   ->  Infinity
-ddmax104 max  1000  Inf   ->  Infinity
-ddmax105 max  Inf   Inf   ->  Infinity
-
-ddmax120 max -Inf  -Inf   -> -Infinity
-ddmax121 max -Inf  -1000  -> -1000
-ddmax122 max -Inf  -1     -> -1
-ddmax123 max -Inf  -0     -> -0
-ddmax124 max -Inf   0     ->  0
-ddmax125 max -Inf   1     ->  1
-ddmax126 max -Inf   1000  ->  1000
-ddmax127 max -Inf   Inf   ->  Infinity
-ddmax128 max -Inf  -Inf   ->  -Infinity
-ddmax129 max -1000 -Inf   ->  -1000
-ddmax130 max -1    -Inf   ->  -1
-ddmax131 max -0    -Inf   ->  -0
-ddmax132 max  0    -Inf   ->  0
-ddmax133 max  1    -Inf   ->  1
-ddmax134 max  1000 -Inf   ->  1000
-ddmax135 max  Inf  -Inf   ->  Infinity
-
--- 2004.08.02 754r chooses number over NaN in mixed cases
-ddmax141 max  NaN -Inf    -> -Infinity
-ddmax142 max  NaN -1000   -> -1000
-ddmax143 max  NaN -1      -> -1
-ddmax144 max  NaN -0      -> -0
-ddmax145 max  NaN  0      ->  0
-ddmax146 max  NaN  1      ->  1
-ddmax147 max  NaN  1000   ->  1000
-ddmax148 max  NaN  Inf    ->  Infinity
-ddmax149 max  NaN  NaN    ->  NaN
-ddmax150 max -Inf  NaN    -> -Infinity
-ddmax151 max -1000 NaN    -> -1000
-ddmax152 max -1    NaN    -> -1
-ddmax153 max -0    NaN    -> -0
-ddmax154 max  0    NaN    ->  0
-ddmax155 max  1    NaN    ->  1
-ddmax156 max  1000 NaN    ->  1000
-ddmax157 max  Inf  NaN    ->  Infinity
-
-ddmax161 max  sNaN -Inf   ->  NaN  Invalid_operation
-ddmax162 max  sNaN -1000  ->  NaN  Invalid_operation
-ddmax163 max  sNaN -1     ->  NaN  Invalid_operation
-ddmax164 max  sNaN -0     ->  NaN  Invalid_operation
-ddmax165 max  sNaN  0     ->  NaN  Invalid_operation
-ddmax166 max  sNaN  1     ->  NaN  Invalid_operation
-ddmax167 max  sNaN  1000  ->  NaN  Invalid_operation
-ddmax168 max  sNaN  NaN   ->  NaN  Invalid_operation
-ddmax169 max  sNaN sNaN   ->  NaN  Invalid_operation
-ddmax170 max  NaN  sNaN   ->  NaN  Invalid_operation
-ddmax171 max -Inf  sNaN   ->  NaN  Invalid_operation
-ddmax172 max -1000 sNaN   ->  NaN  Invalid_operation
-ddmax173 max -1    sNaN   ->  NaN  Invalid_operation
-ddmax174 max -0    sNaN   ->  NaN  Invalid_operation
-ddmax175 max  0    sNaN   ->  NaN  Invalid_operation
-ddmax176 max  1    sNaN   ->  NaN  Invalid_operation
-ddmax177 max  1000 sNaN   ->  NaN  Invalid_operation
-ddmax178 max  Inf  sNaN   ->  NaN  Invalid_operation
-ddmax179 max  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddmax181 max  NaN9  -Inf   -> -Infinity
-ddmax182 max  NaN8     9   ->  9
-ddmax183 max -NaN7   Inf   ->  Infinity
-
-ddmax184 max -NaN1   NaN11 -> -NaN1
-ddmax185 max  NaN2   NaN12 ->  NaN2
-ddmax186 max -NaN13 -NaN7  -> -NaN13
-ddmax187 max  NaN14 -NaN5  ->  NaN14
-
-ddmax188 max -Inf    NaN4  -> -Infinity
-ddmax189 max -9     -NaN3  -> -9
-ddmax190 max  Inf    NaN2  ->  Infinity
-
-ddmax191 max  sNaN99 -Inf    ->  NaN99 Invalid_operation
-ddmax192 max  sNaN98 -1      ->  NaN98 Invalid_operation
-ddmax193 max -sNaN97  NaN    -> -NaN97 Invalid_operation
-ddmax194 max  sNaN96 sNaN94  ->  NaN96 Invalid_operation
-ddmax195 max  NaN95  sNaN93  ->  NaN93 Invalid_operation
-ddmax196 max -Inf    sNaN92  ->  NaN92 Invalid_operation
-ddmax197 max  0      sNaN91  ->  NaN91 Invalid_operation
-ddmax198 max  Inf   -sNaN90  -> -NaN90 Invalid_operation
-ddmax199 max  NaN    sNaN89  ->  NaN89 Invalid_operation
-
--- old rounding checks
-ddmax221 max 12345678000 1  -> 12345678000
-ddmax222 max 1 12345678000  -> 12345678000
-ddmax223 max 1234567800  1  -> 1234567800
-ddmax224 max 1 1234567800   -> 1234567800
-ddmax225 max 1234567890  1  -> 1234567890
-ddmax226 max 1 1234567890   -> 1234567890
-ddmax227 max 1234567891  1  -> 1234567891
-ddmax228 max 1 1234567891   -> 1234567891
-ddmax229 max 12345678901 1  -> 12345678901
-ddmax230 max 1 12345678901  -> 12345678901
-ddmax231 max 1234567896  1  -> 1234567896
-ddmax232 max 1 1234567896   -> 1234567896
-ddmax233 max -1234567891  1 -> 1
-ddmax234 max 1 -1234567891  -> 1
-ddmax235 max -12345678901 1 -> 1
-ddmax236 max 1 -12345678901 -> 1
-ddmax237 max -1234567896  1 -> 1
-ddmax238 max 1 -1234567896  -> 1
-
--- from examples
-ddmax280 max '3'   '2'  ->  '3'
-ddmax281 max '-10' '3'  ->  '3'
-ddmax282 max '1.0' '1'  ->  '1'
-ddmax283 max '1' '1.0'  ->  '1'
-ddmax284 max '7' 'NaN'  ->  '7'
-
--- expanded list from min/max 754r purple prose
--- [explicit tests for exponent ordering]
-ddmax401 max  Inf    1.1     ->  Infinity
-ddmax402 max  1.1    1       ->  1.1
-ddmax403 max  1      1.0     ->  1
-ddmax404 max  1.0    0.1     ->  1.0
-ddmax405 max  0.1    0.10    ->  0.1
-ddmax406 max  0.10   0.100   ->  0.10
-ddmax407 max  0.10   0       ->  0.10
-ddmax408 max  0      0.0     ->  0
-ddmax409 max  0.0   -0       ->  0.0
-ddmax410 max  0.0   -0.0     ->  0.0
-ddmax411 max  0.00  -0.0     ->  0.00
-ddmax412 max  0.0   -0.00    ->  0.0
-ddmax413 max  0     -0.0     ->  0
-ddmax414 max  0     -0       ->  0
-ddmax415 max -0.0   -0       -> -0.0
-ddmax416 max -0     -0.100   -> -0
-ddmax417 max -0.100 -0.10    -> -0.100
-ddmax418 max -0.10  -0.1     -> -0.10
-ddmax419 max -0.1   -1.0     -> -0.1
-ddmax420 max -1.0   -1       -> -1.0
-ddmax421 max -1     -1.1     -> -1
-ddmax423 max -1.1   -Inf     -> -1.1
--- same with operands reversed
-ddmax431 max  1.1    Inf     ->  Infinity
-ddmax432 max  1      1.1     ->  1.1
-ddmax433 max  1.0    1       ->  1
-ddmax434 max  0.1    1.0     ->  1.0
-ddmax435 max  0.10   0.1     ->  0.1
-ddmax436 max  0.100  0.10    ->  0.10
-ddmax437 max  0      0.10    ->  0.10
-ddmax438 max  0.0    0       ->  0
-ddmax439 max -0      0.0     ->  0.0
-ddmax440 max -0.0    0.0     ->  0.0
-ddmax441 max -0.0    0.00    ->  0.00
-ddmax442 max -0.00   0.0     ->  0.0
-ddmax443 max -0.0    0       ->  0
-ddmax444 max -0      0       ->  0
-ddmax445 max -0     -0.0     -> -0.0
-ddmax446 max -0.100 -0       -> -0
-ddmax447 max -0.10  -0.100   -> -0.100
-ddmax448 max -0.1   -0.10    -> -0.10
-ddmax449 max -1.0   -0.1     -> -0.1
-ddmax450 max -1     -1.0     -> -1.0
-ddmax451 max -1.1   -1       -> -1
-ddmax453 max -Inf   -1.1     -> -1.1
--- largies
-ddmax460 max  1000   1E+3    ->  1E+3
-ddmax461 max  1E+3   1000    ->  1E+3
-ddmax462 max  1000  -1E+3    ->  1000
-ddmax463 max  1E+3  -1000    ->  1E+3
-ddmax464 max -1000   1E+3    ->  1E+3
-ddmax465 max -1E+3   1000    ->  1000
-ddmax466 max -1000  -1E+3    -> -1000
-ddmax467 max -1E+3  -1000    -> -1000
-
--- misalignment traps for little-endian
-ddmax471 max      1.0       0.1  -> 1.0
-ddmax472 max      0.1       1.0  -> 1.0
-ddmax473 max     10.0       0.1  -> 10.0
-ddmax474 max      0.1      10.0  -> 10.0
-ddmax475 max      100       1.0  -> 100
-ddmax476 max      1.0       100  -> 100
-ddmax477 max     1000      10.0  -> 1000
-ddmax478 max     10.0      1000  -> 1000
-ddmax479 max    10000     100.0  -> 10000
-ddmax480 max    100.0     10000  -> 10000
-ddmax481 max   100000    1000.0  -> 100000
-ddmax482 max   1000.0    100000  -> 100000
-ddmax483 max  1000000   10000.0  -> 1000000
-ddmax484 max  10000.0   1000000  -> 1000000
-
--- subnormals
-ddmax510 max  1.00E-383       0  ->   1.00E-383
-ddmax511 max  0.1E-383        0  ->   1E-384    Subnormal
-ddmax512 max  0.10E-383       0  ->   1.0E-384  Subnormal
-ddmax513 max  0.100E-383      0  ->   1.00E-384 Subnormal
-ddmax514 max  0.01E-383       0  ->   1E-385    Subnormal
-ddmax515 max  0.999E-383      0  ->   9.99E-384 Subnormal
-ddmax516 max  0.099E-383      0  ->   9.9E-385  Subnormal
-ddmax517 max  0.009E-383      0  ->   9E-386    Subnormal
-ddmax518 max  0.001E-383      0  ->   1E-386    Subnormal
-ddmax519 max  0.0009E-383     0  ->   9E-387    Subnormal
-ddmax520 max  0.0001E-383     0  ->   1E-387    Subnormal
-
-ddmax530 max -1.00E-383       0  ->   0
-ddmax531 max -0.1E-383        0  ->   0
-ddmax532 max -0.10E-383       0  ->   0
-ddmax533 max -0.100E-383      0  ->   0
-ddmax534 max -0.01E-383       0  ->   0
-ddmax535 max -0.999E-383      0  ->   0
-ddmax536 max -0.099E-383      0  ->   0
-ddmax537 max -0.009E-383      0  ->   0
-ddmax538 max -0.001E-383      0  ->   0
-ddmax539 max -0.0009E-383     0  ->   0
-ddmax540 max -0.0001E-383     0  ->   0
-
--- Null tests
-ddmax900 max 10  #  -> NaN Invalid_operation
-ddmax901 max  # 10  -> NaN Invalid_operation
-
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMaxMag.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMaxMag.decTest
deleted file mode 100644
index ec2b830..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMaxMag.decTest
+++ /dev/null
@@ -1,304 +0,0 @@
-------------------------------------------------------------------------
--- ddMaxMag.decTest -- decDouble maxnummag                            --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- we assume that base comparison is tested in compare.decTest, so
--- these mainly cover special cases and rounding
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- sanity checks
-ddmxg001 maxmag  -2  -2  -> -2
-ddmxg002 maxmag  -2  -1  -> -2
-ddmxg003 maxmag  -2   0  -> -2
-ddmxg004 maxmag  -2   1  -> -2
-ddmxg005 maxmag  -2   2  ->  2
-ddmxg006 maxmag  -1  -2  -> -2
-ddmxg007 maxmag  -1  -1  -> -1
-ddmxg008 maxmag  -1   0  -> -1
-ddmxg009 maxmag  -1   1  ->  1
-ddmxg010 maxmag  -1   2  ->  2
-ddmxg011 maxmag   0  -2  -> -2
-ddmxg012 maxmag   0  -1  -> -1
-ddmxg013 maxmag   0   0  ->  0
-ddmxg014 maxmag   0   1  ->  1
-ddmxg015 maxmag   0   2  ->  2
-ddmxg016 maxmag   1  -2  -> -2
-ddmxg017 maxmag   1  -1  ->  1
-ddmxg018 maxmag   1   0  ->  1
-ddmxg019 maxmag   1   1  ->  1
-ddmxg020 maxmag   1   2  ->  2
-ddmxg021 maxmag   2  -2  ->  2
-ddmxg022 maxmag   2  -1  ->  2
-ddmxg023 maxmag   2   0  ->  2
-ddmxg025 maxmag   2   1  ->  2
-ddmxg026 maxmag   2   2  ->  2
-
--- extended zeros
-ddmxg030 maxmag   0     0   ->  0
-ddmxg031 maxmag   0    -0   ->  0
-ddmxg032 maxmag   0    -0.0 ->  0
-ddmxg033 maxmag   0     0.0 ->  0
-ddmxg034 maxmag  -0     0   ->  0    -- note: -0 = 0, but 0 chosen
-ddmxg035 maxmag  -0    -0   -> -0
-ddmxg036 maxmag  -0    -0.0 -> -0.0
-ddmxg037 maxmag  -0     0.0 ->  0.0
-ddmxg038 maxmag   0.0   0   ->  0
-ddmxg039 maxmag   0.0  -0   ->  0.0
-ddmxg040 maxmag   0.0  -0.0 ->  0.0
-ddmxg041 maxmag   0.0   0.0 ->  0.0
-ddmxg042 maxmag  -0.0   0   ->  0
-ddmxg043 maxmag  -0.0  -0   -> -0.0
-ddmxg044 maxmag  -0.0  -0.0 -> -0.0
-ddmxg045 maxmag  -0.0   0.0 ->  0.0
-
-ddmxg050 maxmag  -0E1   0E1 ->  0E+1
-ddmxg051 maxmag  -0E2   0E2 ->  0E+2
-ddmxg052 maxmag  -0E2   0E1 ->  0E+1
-ddmxg053 maxmag  -0E1   0E2 ->  0E+2
-ddmxg054 maxmag   0E1  -0E1 ->  0E+1
-ddmxg055 maxmag   0E2  -0E2 ->  0E+2
-ddmxg056 maxmag   0E2  -0E1 ->  0E+2
-ddmxg057 maxmag   0E1  -0E2 ->  0E+1
-
-ddmxg058 maxmag   0E1   0E1 ->  0E+1
-ddmxg059 maxmag   0E2   0E2 ->  0E+2
-ddmxg060 maxmag   0E2   0E1 ->  0E+2
-ddmxg061 maxmag   0E1   0E2 ->  0E+2
-ddmxg062 maxmag  -0E1  -0E1 -> -0E+1
-ddmxg063 maxmag  -0E2  -0E2 -> -0E+2
-ddmxg064 maxmag  -0E2  -0E1 -> -0E+1
-ddmxg065 maxmag  -0E1  -0E2 -> -0E+1
-
--- Specials
-ddmxg090 maxmag  Inf  -Inf   ->  Infinity
-ddmxg091 maxmag  Inf  -1000  ->  Infinity
-ddmxg092 maxmag  Inf  -1     ->  Infinity
-ddmxg093 maxmag  Inf  -0     ->  Infinity
-ddmxg094 maxmag  Inf   0     ->  Infinity
-ddmxg095 maxmag  Inf   1     ->  Infinity
-ddmxg096 maxmag  Inf   1000  ->  Infinity
-ddmxg097 maxmag  Inf   Inf   ->  Infinity
-ddmxg098 maxmag -1000  Inf   ->  Infinity
-ddmxg099 maxmag -Inf   Inf   ->  Infinity
-ddmxg100 maxmag -1     Inf   ->  Infinity
-ddmxg101 maxmag -0     Inf   ->  Infinity
-ddmxg102 maxmag  0     Inf   ->  Infinity
-ddmxg103 maxmag  1     Inf   ->  Infinity
-ddmxg104 maxmag  1000  Inf   ->  Infinity
-ddmxg105 maxmag  Inf   Inf   ->  Infinity
-
-ddmxg120 maxmag -Inf  -Inf   -> -Infinity
-ddmxg121 maxmag -Inf  -1000  -> -Infinity
-ddmxg122 maxmag -Inf  -1     -> -Infinity
-ddmxg123 maxmag -Inf  -0     -> -Infinity
-ddmxg124 maxmag -Inf   0     -> -Infinity
-ddmxg125 maxmag -Inf   1     -> -Infinity
-ddmxg126 maxmag -Inf   1000  -> -Infinity
-ddmxg127 maxmag -Inf   Inf   ->  Infinity
-ddmxg128 maxmag -Inf  -Inf   ->  -Infinity
-ddmxg129 maxmag -1000 -Inf   -> -Infinity
-ddmxg130 maxmag -1    -Inf   -> -Infinity
-ddmxg131 maxmag -0    -Inf   -> -Infinity
-ddmxg132 maxmag  0    -Inf   -> -Infinity
-ddmxg133 maxmag  1    -Inf   -> -Infinity
-ddmxg134 maxmag  1000 -Inf   -> -Infinity
-ddmxg135 maxmag  Inf  -Inf   ->  Infinity
-
--- 2004.08.02 754r chooses number over NaN in mixed cases
-ddmxg141 maxmag  NaN -Inf    -> -Infinity
-ddmxg142 maxmag  NaN -1000   -> -1000
-ddmxg143 maxmag  NaN -1      -> -1
-ddmxg144 maxmag  NaN -0      -> -0
-ddmxg145 maxmag  NaN  0      ->  0
-ddmxg146 maxmag  NaN  1      ->  1
-ddmxg147 maxmag  NaN  1000   ->  1000
-ddmxg148 maxmag  NaN  Inf    ->  Infinity
-ddmxg149 maxmag  NaN  NaN    ->  NaN
-ddmxg150 maxmag -Inf  NaN    -> -Infinity
-ddmxg151 maxmag -1000 NaN    -> -1000
-ddmxg152 maxmag -1    NaN    -> -1
-ddmxg153 maxmag -0    NaN    -> -0
-ddmxg154 maxmag  0    NaN    ->  0
-ddmxg155 maxmag  1    NaN    ->  1
-ddmxg156 maxmag  1000 NaN    ->  1000
-ddmxg157 maxmag  Inf  NaN    ->  Infinity
-
-ddmxg161 maxmag  sNaN -Inf   ->  NaN  Invalid_operation
-ddmxg162 maxmag  sNaN -1000  ->  NaN  Invalid_operation
-ddmxg163 maxmag  sNaN -1     ->  NaN  Invalid_operation
-ddmxg164 maxmag  sNaN -0     ->  NaN  Invalid_operation
-ddmxg165 maxmag  sNaN  0     ->  NaN  Invalid_operation
-ddmxg166 maxmag  sNaN  1     ->  NaN  Invalid_operation
-ddmxg167 maxmag  sNaN  1000  ->  NaN  Invalid_operation
-ddmxg168 maxmag  sNaN  NaN   ->  NaN  Invalid_operation
-ddmxg169 maxmag  sNaN sNaN   ->  NaN  Invalid_operation
-ddmxg170 maxmag  NaN  sNaN   ->  NaN  Invalid_operation
-ddmxg171 maxmag -Inf  sNaN   ->  NaN  Invalid_operation
-ddmxg172 maxmag -1000 sNaN   ->  NaN  Invalid_operation
-ddmxg173 maxmag -1    sNaN   ->  NaN  Invalid_operation
-ddmxg174 maxmag -0    sNaN   ->  NaN  Invalid_operation
-ddmxg175 maxmag  0    sNaN   ->  NaN  Invalid_operation
-ddmxg176 maxmag  1    sNaN   ->  NaN  Invalid_operation
-ddmxg177 maxmag  1000 sNaN   ->  NaN  Invalid_operation
-ddmxg178 maxmag  Inf  sNaN   ->  NaN  Invalid_operation
-ddmxg179 maxmag  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddmxg181 maxmag  NaN9  -Inf   -> -Infinity
-ddmxg182 maxmag  NaN8     9   ->  9
-ddmxg183 maxmag -NaN7   Inf   ->  Infinity
-
-ddmxg184 maxmag -NaN1   NaN11 -> -NaN1
-ddmxg185 maxmag  NaN2   NaN12 ->  NaN2
-ddmxg186 maxmag -NaN13 -NaN7  -> -NaN13
-ddmxg187 maxmag  NaN14 -NaN5  ->  NaN14
-
-ddmxg188 maxmag -Inf    NaN4  -> -Infinity
-ddmxg189 maxmag -9     -NaN3  -> -9
-ddmxg190 maxmag  Inf    NaN2  ->  Infinity
-
-ddmxg191 maxmag  sNaN99 -Inf    ->  NaN99 Invalid_operation
-ddmxg192 maxmag  sNaN98 -1      ->  NaN98 Invalid_operation
-ddmxg193 maxmag -sNaN97  NaN    -> -NaN97 Invalid_operation
-ddmxg194 maxmag  sNaN96 sNaN94  ->  NaN96 Invalid_operation
-ddmxg195 maxmag  NaN95  sNaN93  ->  NaN93 Invalid_operation
-ddmxg196 maxmag -Inf    sNaN92  ->  NaN92 Invalid_operation
-ddmxg197 maxmag  0      sNaN91  ->  NaN91 Invalid_operation
-ddmxg198 maxmag  Inf   -sNaN90  -> -NaN90 Invalid_operation
-ddmxg199 maxmag  NaN    sNaN89  ->  NaN89 Invalid_operation
-
--- old rounding checks
-ddmxg221 maxmag 12345678000 1  -> 12345678000
-ddmxg222 maxmag 1 12345678000  -> 12345678000
-ddmxg223 maxmag 1234567800  1  -> 1234567800
-ddmxg224 maxmag 1 1234567800   -> 1234567800
-ddmxg225 maxmag 1234567890  1  -> 1234567890
-ddmxg226 maxmag 1 1234567890   -> 1234567890
-ddmxg227 maxmag 1234567891  1  -> 1234567891
-ddmxg228 maxmag 1 1234567891   -> 1234567891
-ddmxg229 maxmag 12345678901 1  -> 12345678901
-ddmxg230 maxmag 1 12345678901  -> 12345678901
-ddmxg231 maxmag 1234567896  1  -> 1234567896
-ddmxg232 maxmag 1 1234567896   -> 1234567896
-ddmxg233 maxmag -1234567891  1 -> -1234567891
-ddmxg234 maxmag 1 -1234567891  -> -1234567891
-ddmxg235 maxmag -12345678901 1 -> -12345678901
-ddmxg236 maxmag 1 -12345678901 -> -12345678901
-ddmxg237 maxmag -1234567896  1 -> -1234567896
-ddmxg238 maxmag 1 -1234567896  -> -1234567896
-
--- from examples
-ddmxg280 maxmag '3'   '2'  ->  '3'
-ddmxg281 maxmag '-10' '3'  ->  '-10'
-ddmxg282 maxmag '1.0' '1'  ->  '1'
-ddmxg283 maxmag '1' '1.0'  ->  '1'
-ddmxg284 maxmag '7' 'NaN'  ->  '7'
-
--- expanded list from min/max 754r purple prose
--- [explicit tests for exponent ordering]
-ddmxg401 maxmag  Inf    1.1     ->  Infinity
-ddmxg402 maxmag  1.1    1       ->  1.1
-ddmxg403 maxmag  1      1.0     ->  1
-ddmxg404 maxmag  1.0    0.1     ->  1.0
-ddmxg405 maxmag  0.1    0.10    ->  0.1
-ddmxg406 maxmag  0.10   0.100   ->  0.10
-ddmxg407 maxmag  0.10   0       ->  0.10
-ddmxg408 maxmag  0      0.0     ->  0
-ddmxg409 maxmag  0.0   -0       ->  0.0
-ddmxg410 maxmag  0.0   -0.0     ->  0.0
-ddmxg411 maxmag  0.00  -0.0     ->  0.00
-ddmxg412 maxmag  0.0   -0.00    ->  0.0
-ddmxg413 maxmag  0     -0.0     ->  0
-ddmxg414 maxmag  0     -0       ->  0
-ddmxg415 maxmag -0.0   -0       -> -0.0
-ddmxg416 maxmag -0     -0.100   -> -0.100
-ddmxg417 maxmag -0.100 -0.10    -> -0.100
-ddmxg418 maxmag -0.10  -0.1     -> -0.10
-ddmxg419 maxmag -0.1   -1.0     -> -1.0
-ddmxg420 maxmag -1.0   -1       -> -1.0
-ddmxg421 maxmag -1     -1.1     -> -1.1
-ddmxg423 maxmag -1.1   -Inf     -> -Infinity
--- same with operands reversed
-ddmxg431 maxmag  1.1    Inf     ->  Infinity
-ddmxg432 maxmag  1      1.1     ->  1.1
-ddmxg433 maxmag  1.0    1       ->  1
-ddmxg434 maxmag  0.1    1.0     ->  1.0
-ddmxg435 maxmag  0.10   0.1     ->  0.1
-ddmxg436 maxmag  0.100  0.10    ->  0.10
-ddmxg437 maxmag  0      0.10    ->  0.10
-ddmxg438 maxmag  0.0    0       ->  0
-ddmxg439 maxmag -0      0.0     ->  0.0
-ddmxg440 maxmag -0.0    0.0     ->  0.0
-ddmxg441 maxmag -0.0    0.00    ->  0.00
-ddmxg442 maxmag -0.00   0.0     ->  0.0
-ddmxg443 maxmag -0.0    0       ->  0
-ddmxg444 maxmag -0      0       ->  0
-ddmxg445 maxmag -0     -0.0     -> -0.0
-ddmxg446 maxmag -0.100 -0       -> -0.100
-ddmxg447 maxmag -0.10  -0.100   -> -0.100
-ddmxg448 maxmag -0.1   -0.10    -> -0.10
-ddmxg449 maxmag -1.0   -0.1     -> -1.0
-ddmxg450 maxmag -1     -1.0     -> -1.0
-ddmxg451 maxmag -1.1   -1       -> -1.1
-ddmxg453 maxmag -Inf   -1.1     -> -Infinity
--- largies
-ddmxg460 maxmag  1000   1E+3    ->  1E+3
-ddmxg461 maxmag  1E+3   1000    ->  1E+3
-ddmxg462 maxmag  1000  -1E+3    ->  1000
-ddmxg463 maxmag  1E+3  -1000    ->  1E+3
-ddmxg464 maxmag -1000   1E+3    ->  1E+3
-ddmxg465 maxmag -1E+3   1000    ->  1000
-ddmxg466 maxmag -1000  -1E+3    -> -1000
-ddmxg467 maxmag -1E+3  -1000    -> -1000
-
--- subnormals
-ddmxg510 maxmag  1.00E-383       0  ->   1.00E-383
-ddmxg511 maxmag  0.1E-383        0  ->   1E-384    Subnormal
-ddmxg512 maxmag  0.10E-383       0  ->   1.0E-384  Subnormal
-ddmxg513 maxmag  0.100E-383      0  ->   1.00E-384 Subnormal
-ddmxg514 maxmag  0.01E-383       0  ->   1E-385    Subnormal
-ddmxg515 maxmag  0.999E-383      0  ->   9.99E-384 Subnormal
-ddmxg516 maxmag  0.099E-383      0  ->   9.9E-385  Subnormal
-ddmxg517 maxmag  0.009E-383      0  ->   9E-386    Subnormal
-ddmxg518 maxmag  0.001E-383      0  ->   1E-386    Subnormal
-ddmxg519 maxmag  0.0009E-383     0  ->   9E-387    Subnormal
-ddmxg520 maxmag  0.0001E-383     0  ->   1E-387    Subnormal
-
-ddmxg530 maxmag -1.00E-383       0  ->  -1.00E-383
-ddmxg531 maxmag -0.1E-383        0  ->  -1E-384    Subnormal
-ddmxg532 maxmag -0.10E-383       0  ->  -1.0E-384  Subnormal
-ddmxg533 maxmag -0.100E-383      0  ->  -1.00E-384 Subnormal
-ddmxg534 maxmag -0.01E-383       0  ->  -1E-385    Subnormal
-ddmxg535 maxmag -0.999E-383      0  ->  -9.99E-384 Subnormal
-ddmxg536 maxmag -0.099E-383      0  ->  -9.9E-385  Subnormal
-ddmxg537 maxmag -0.009E-383      0  ->  -9E-386    Subnormal
-ddmxg538 maxmag -0.001E-383      0  ->  -1E-386    Subnormal
-ddmxg539 maxmag -0.0009E-383     0  ->  -9E-387    Subnormal
-ddmxg540 maxmag -0.0001E-383     0  ->  -1E-387    Subnormal
-
--- Null tests
-ddmxg900 maxmag 10  #  -> NaN Invalid_operation
-ddmxg901 maxmag  # 10  -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMin.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMin.decTest
deleted file mode 100644
index 9ce4282..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMin.decTest
+++ /dev/null
@@ -1,309 +0,0 @@
-------------------------------------------------------------------------
--- ddMin.decTest -- decDouble minnum                                  --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- we assume that base comparison is tested in compare.decTest, so
--- these mainly cover special cases and rounding
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- sanity checks
-ddmin001 min  -2  -2  -> -2
-ddmin002 min  -2  -1  -> -2
-ddmin003 min  -2   0  -> -2
-ddmin004 min  -2   1  -> -2
-ddmin005 min  -2   2  -> -2
-ddmin006 min  -1  -2  -> -2
-ddmin007 min  -1  -1  -> -1
-ddmin008 min  -1   0  -> -1
-ddmin009 min  -1   1  -> -1
-ddmin010 min  -1   2  -> -1
-ddmin011 min   0  -2  -> -2
-ddmin012 min   0  -1  -> -1
-ddmin013 min   0   0  ->  0
-ddmin014 min   0   1  ->  0
-ddmin015 min   0   2  ->  0
-ddmin016 min   1  -2  -> -2
-ddmin017 min   1  -1  -> -1
-ddmin018 min   1   0  ->  0
-ddmin019 min   1   1  ->  1
-ddmin020 min   1   2  ->  1
-ddmin021 min   2  -2  -> -2
-ddmin022 min   2  -1  -> -1
-ddmin023 min   2   0  ->  0
-ddmin025 min   2   1  ->  1
-ddmin026 min   2   2  ->  2
-
--- extended zeros
-ddmin030 min   0     0   ->  0
-ddmin031 min   0    -0   -> -0
-ddmin032 min   0    -0.0 -> -0.0
-ddmin033 min   0     0.0 ->  0.0
-ddmin034 min  -0     0   -> -0
-ddmin035 min  -0    -0   -> -0
-ddmin036 min  -0    -0.0 -> -0
-ddmin037 min  -0     0.0 -> -0
-ddmin038 min   0.0   0   ->  0.0
-ddmin039 min   0.0  -0   -> -0
-ddmin040 min   0.0  -0.0 -> -0.0
-ddmin041 min   0.0   0.0 ->  0.0
-ddmin042 min  -0.0   0   -> -0.0
-ddmin043 min  -0.0  -0   -> -0
-ddmin044 min  -0.0  -0.0 -> -0.0
-ddmin045 min  -0.0   0.0 -> -0.0
-
-ddmin046 min   0E1  -0E1 -> -0E+1
-ddmin047 min  -0E1   0E2 -> -0E+1
-ddmin048 min   0E2   0E1 ->  0E+1
-ddmin049 min   0E1   0E2 ->  0E+1
-ddmin050 min  -0E3  -0E2 -> -0E+3
-ddmin051 min  -0E2  -0E3 -> -0E+3
-
--- Specials
-ddmin090 min  Inf  -Inf   -> -Infinity
-ddmin091 min  Inf  -1000  -> -1000
-ddmin092 min  Inf  -1     -> -1
-ddmin093 min  Inf  -0     -> -0
-ddmin094 min  Inf   0     ->  0
-ddmin095 min  Inf   1     ->  1
-ddmin096 min  Inf   1000  ->  1000
-ddmin097 min  Inf   Inf   ->  Infinity
-ddmin098 min -1000  Inf   -> -1000
-ddmin099 min -Inf   Inf   -> -Infinity
-ddmin100 min -1     Inf   -> -1
-ddmin101 min -0     Inf   -> -0
-ddmin102 min  0     Inf   ->  0
-ddmin103 min  1     Inf   ->  1
-ddmin104 min  1000  Inf   ->  1000
-ddmin105 min  Inf   Inf   ->  Infinity
-
-ddmin120 min -Inf  -Inf   -> -Infinity
-ddmin121 min -Inf  -1000  -> -Infinity
-ddmin122 min -Inf  -1     -> -Infinity
-ddmin123 min -Inf  -0     -> -Infinity
-ddmin124 min -Inf   0     -> -Infinity
-ddmin125 min -Inf   1     -> -Infinity
-ddmin126 min -Inf   1000  -> -Infinity
-ddmin127 min -Inf   Inf   -> -Infinity
-ddmin128 min -Inf  -Inf   -> -Infinity
-ddmin129 min -1000 -Inf   -> -Infinity
-ddmin130 min -1    -Inf   -> -Infinity
-ddmin131 min -0    -Inf   -> -Infinity
-ddmin132 min  0    -Inf   -> -Infinity
-ddmin133 min  1    -Inf   -> -Infinity
-ddmin134 min  1000 -Inf   -> -Infinity
-ddmin135 min  Inf  -Inf   -> -Infinity
-
--- 2004.08.02 754r chooses number over NaN in mixed cases
-ddmin141 min  NaN -Inf    ->  -Infinity
-ddmin142 min  NaN -1000   ->  -1000
-ddmin143 min  NaN -1      ->  -1
-ddmin144 min  NaN -0      ->  -0
-ddmin145 min  NaN  0      ->  0
-ddmin146 min  NaN  1      ->  1
-ddmin147 min  NaN  1000   ->  1000
-ddmin148 min  NaN  Inf    ->  Infinity
-ddmin149 min  NaN  NaN    ->  NaN
-ddmin150 min -Inf  NaN    -> -Infinity
-ddmin151 min -1000 NaN    -> -1000
-ddmin152 min -1   -NaN    -> -1
-ddmin153 min -0    NaN    -> -0
-ddmin154 min  0   -NaN    ->  0
-ddmin155 min  1    NaN    ->  1
-ddmin156 min  1000 NaN    ->  1000
-ddmin157 min  Inf  NaN    ->  Infinity
-
-ddmin161 min  sNaN -Inf   ->  NaN  Invalid_operation
-ddmin162 min  sNaN -1000  ->  NaN  Invalid_operation
-ddmin163 min  sNaN -1     ->  NaN  Invalid_operation
-ddmin164 min  sNaN -0     ->  NaN  Invalid_operation
-ddmin165 min -sNaN  0     -> -NaN  Invalid_operation
-ddmin166 min -sNaN  1     -> -NaN  Invalid_operation
-ddmin167 min  sNaN  1000  ->  NaN  Invalid_operation
-ddmin168 min  sNaN  NaN   ->  NaN  Invalid_operation
-ddmin169 min  sNaN sNaN   ->  NaN  Invalid_operation
-ddmin170 min  NaN  sNaN   ->  NaN  Invalid_operation
-ddmin171 min -Inf  sNaN   ->  NaN  Invalid_operation
-ddmin172 min -1000 sNaN   ->  NaN  Invalid_operation
-ddmin173 min -1    sNaN   ->  NaN  Invalid_operation
-ddmin174 min -0    sNaN   ->  NaN  Invalid_operation
-ddmin175 min  0    sNaN   ->  NaN  Invalid_operation
-ddmin176 min  1    sNaN   ->  NaN  Invalid_operation
-ddmin177 min  1000 sNaN   ->  NaN  Invalid_operation
-ddmin178 min  Inf  sNaN   ->  NaN  Invalid_operation
-ddmin179 min  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddmin181 min  NaN9   -Inf   -> -Infinity
-ddmin182 min -NaN8    9990  ->  9990
-ddmin183 min  NaN71   Inf   ->  Infinity
-
-ddmin184 min  NaN1    NaN54 ->  NaN1
-ddmin185 min  NaN22  -NaN53 ->  NaN22
-ddmin186 min -NaN3    NaN6  -> -NaN3
-ddmin187 min -NaN44   NaN7  -> -NaN44
-
-ddmin188 min -Inf     NaN41 -> -Infinity
-ddmin189 min -9999   -NaN33 -> -9999
-ddmin190 min  Inf     NaN2  ->  Infinity
-
-ddmin191 min  sNaN99 -Inf    ->  NaN99 Invalid_operation
-ddmin192 min  sNaN98 -11     ->  NaN98 Invalid_operation
-ddmin193 min -sNaN97  NaN8   -> -NaN97 Invalid_operation
-ddmin194 min  sNaN69 sNaN94  ->  NaN69 Invalid_operation
-ddmin195 min  NaN95  sNaN93  ->  NaN93 Invalid_operation
-ddmin196 min -Inf    sNaN92  ->  NaN92 Invalid_operation
-ddmin197 min  088    sNaN91  ->  NaN91 Invalid_operation
-ddmin198 min  Inf   -sNaN90  -> -NaN90 Invalid_operation
-ddmin199 min  NaN    sNaN86  ->  NaN86 Invalid_operation
-
--- old rounding checks
-ddmin221 min -12345678000 1  -> -12345678000
-ddmin222 min 1 -12345678000  -> -12345678000
-ddmin223 min -1234567800  1  -> -1234567800
-ddmin224 min 1 -1234567800   -> -1234567800
-ddmin225 min -1234567890  1  -> -1234567890
-ddmin226 min 1 -1234567890   -> -1234567890
-ddmin227 min -1234567891  1  -> -1234567891
-ddmin228 min 1 -1234567891   -> -1234567891
-ddmin229 min -12345678901 1  -> -12345678901
-ddmin230 min 1 -12345678901  -> -12345678901
-ddmin231 min -1234567896  1  -> -1234567896
-ddmin232 min 1 -1234567896   -> -1234567896
-ddmin233 min 1234567891  1   -> 1
-ddmin234 min 1 1234567891    -> 1
-ddmin235 min 12345678901 1   -> 1
-ddmin236 min 1 12345678901   -> 1
-ddmin237 min 1234567896  1   -> 1
-ddmin238 min 1 1234567896    -> 1
-
--- from examples
-ddmin280 min '3'   '2'  ->  '2'
-ddmin281 min '-10' '3'  ->  '-10'
-ddmin282 min '1.0' '1'  ->  '1.0'
-ddmin283 min '1' '1.0'  ->  '1.0'
-ddmin284 min '7' 'NaN'  ->  '7'
-
--- expanded list from min/max 754r purple prose
--- [explicit tests for exponent ordering]
-ddmin401 min  Inf    1.1     ->  1.1
-ddmin402 min  1.1    1       ->  1
-ddmin403 min  1      1.0     ->  1.0
-ddmin404 min  1.0    0.1     ->  0.1
-ddmin405 min  0.1    0.10    ->  0.10
-ddmin406 min  0.10   0.100   ->  0.100
-ddmin407 min  0.10   0       ->  0
-ddmin408 min  0      0.0     ->  0.0
-ddmin409 min  0.0   -0       -> -0
-ddmin410 min  0.0   -0.0     -> -0.0
-ddmin411 min  0.00  -0.0     -> -0.0
-ddmin412 min  0.0   -0.00    -> -0.00
-ddmin413 min  0     -0.0     -> -0.0
-ddmin414 min  0     -0       -> -0
-ddmin415 min -0.0   -0       -> -0
-ddmin416 min -0     -0.100   -> -0.100
-ddmin417 min -0.100 -0.10    -> -0.10
-ddmin418 min -0.10  -0.1     -> -0.1
-ddmin419 min -0.1   -1.0     -> -1.0
-ddmin420 min -1.0   -1       -> -1
-ddmin421 min -1     -1.1     -> -1.1
-ddmin423 min -1.1   -Inf     -> -Infinity
--- same with operands reversed
-ddmin431 min  1.1    Inf     ->  1.1
-ddmin432 min  1      1.1     ->  1
-ddmin433 min  1.0    1       ->  1.0
-ddmin434 min  0.1    1.0     ->  0.1
-ddmin435 min  0.10   0.1     ->  0.10
-ddmin436 min  0.100  0.10    ->  0.100
-ddmin437 min  0      0.10    ->  0
-ddmin438 min  0.0    0       ->  0.0
-ddmin439 min -0      0.0     -> -0
-ddmin440 min -0.0    0.0     -> -0.0
-ddmin441 min -0.0    0.00    -> -0.0
-ddmin442 min -0.00   0.0     -> -0.00
-ddmin443 min -0.0    0       -> -0.0
-ddmin444 min -0      0       -> -0
-ddmin445 min -0     -0.0     -> -0
-ddmin446 min -0.100 -0       -> -0.100
-ddmin447 min -0.10  -0.100   -> -0.10
-ddmin448 min -0.1   -0.10    -> -0.1
-ddmin449 min -1.0   -0.1     -> -1.0
-ddmin450 min -1     -1.0     -> -1
-ddmin451 min -1.1   -1       -> -1.1
-ddmin453 min -Inf   -1.1     -> -Infinity
--- largies
-ddmin460 min  1000   1E+3    ->  1000
-ddmin461 min  1E+3   1000    ->  1000
-ddmin462 min  1000  -1E+3    -> -1E+3
-ddmin463 min  1E+3  -384    -> -384
-ddmin464 min -384   1E+3    -> -384
-ddmin465 min -1E+3   1000    -> -1E+3
-ddmin466 min -384  -1E+3    -> -1E+3
-ddmin467 min -1E+3  -384    -> -1E+3
-
--- misalignment traps for little-endian
-ddmin471 min      1.0       0.1  -> 0.1
-ddmin472 min      0.1       1.0  -> 0.1
-ddmin473 min     10.0       0.1  -> 0.1
-ddmin474 min      0.1      10.0  -> 0.1
-ddmin475 min      100       1.0  -> 1.0
-ddmin476 min      1.0       100  -> 1.0
-ddmin477 min     1000      10.0  -> 10.0
-ddmin478 min     10.0      1000  -> 10.0
-ddmin479 min    10000     100.0  -> 100.0
-ddmin480 min    100.0     10000  -> 100.0
-ddmin481 min   100000    1000.0  -> 1000.0
-ddmin482 min   1000.0    100000  -> 1000.0
-ddmin483 min  1000000   10000.0  -> 10000.0
-ddmin484 min  10000.0   1000000  -> 10000.0
-
--- subnormals
-ddmin510 min  1.00E-383       0  ->   0
-ddmin511 min  0.1E-383        0  ->   0
-ddmin512 min  0.10E-383       0  ->   0
-ddmin513 min  0.100E-383      0  ->   0
-ddmin514 min  0.01E-383       0  ->   0
-ddmin515 min  0.999E-383      0  ->   0
-ddmin516 min  0.099E-383      0  ->   0
-ddmin517 min  0.009E-383      0  ->   0
-ddmin518 min  0.001E-383      0  ->   0
-ddmin519 min  0.0009E-383     0  ->   0
-ddmin520 min  0.0001E-383     0  ->   0
-
-ddmin530 min -1.00E-383       0  ->  -1.00E-383
-ddmin531 min -0.1E-383        0  ->  -1E-384    Subnormal
-ddmin532 min -0.10E-383       0  ->  -1.0E-384  Subnormal
-ddmin533 min -0.100E-383      0  ->  -1.00E-384 Subnormal
-ddmin534 min -0.01E-383       0  ->  -1E-385    Subnormal
-ddmin535 min -0.999E-383      0  ->  -9.99E-384 Subnormal
-ddmin536 min -0.099E-383      0  ->  -9.9E-385  Subnormal
-ddmin537 min -0.009E-383      0  ->  -9E-386    Subnormal
-ddmin538 min -0.001E-383      0  ->  -1E-386    Subnormal
-ddmin539 min -0.0009E-383     0  ->  -9E-387    Subnormal
-ddmin540 min -0.0001E-383     0  ->  -1E-387    Subnormal
-
-
--- Null tests
-ddmin900 min 10  # -> NaN Invalid_operation
-ddmin901 min  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMinMag.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMinMag.decTest
deleted file mode 100644
index 5537cc8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMinMag.decTest
+++ /dev/null
@@ -1,293 +0,0 @@
-------------------------------------------------------------------------
--- ddMinMag.decTest -- decDouble minnummag                            --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- we assume that base comparison is tested in compare.decTest, so
--- these mainly cover special cases and rounding
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- sanity checks
-ddmng001 minmag  -2  -2  -> -2
-ddmng002 minmag  -2  -1  -> -1
-ddmng003 minmag  -2   0  ->  0
-ddmng004 minmag  -2   1  ->  1
-ddmng005 minmag  -2   2  -> -2
-ddmng006 minmag  -1  -2  -> -1
-ddmng007 minmag  -1  -1  -> -1
-ddmng008 minmag  -1   0  ->  0
-ddmng009 minmag  -1   1  -> -1
-ddmng010 minmag  -1   2  -> -1
-ddmng011 minmag   0  -2  ->  0
-ddmng012 minmag   0  -1  ->  0
-ddmng013 minmag   0   0  ->  0
-ddmng014 minmag   0   1  ->  0
-ddmng015 minmag   0   2  ->  0
-ddmng016 minmag   1  -2  ->  1
-ddmng017 minmag   1  -1  -> -1
-ddmng018 minmag   1   0  ->  0
-ddmng019 minmag   1   1  ->  1
-ddmng020 minmag   1   2  ->  1
-ddmng021 minmag   2  -2  -> -2
-ddmng022 minmag   2  -1  -> -1
-ddmng023 minmag   2   0  ->  0
-ddmng025 minmag   2   1  ->  1
-ddmng026 minmag   2   2  ->  2
-
--- extended zeros
-ddmng030 minmag   0     0   ->  0
-ddmng031 minmag   0    -0   -> -0
-ddmng032 minmag   0    -0.0 -> -0.0
-ddmng033 minmag   0     0.0 ->  0.0
-ddmng034 minmag  -0     0   -> -0
-ddmng035 minmag  -0    -0   -> -0
-ddmng036 minmag  -0    -0.0 -> -0
-ddmng037 minmag  -0     0.0 -> -0
-ddmng038 minmag   0.0   0   ->  0.0
-ddmng039 minmag   0.0  -0   -> -0
-ddmng040 minmag   0.0  -0.0 -> -0.0
-ddmng041 minmag   0.0   0.0 ->  0.0
-ddmng042 minmag  -0.0   0   -> -0.0
-ddmng043 minmag  -0.0  -0   -> -0
-ddmng044 minmag  -0.0  -0.0 -> -0.0
-ddmng045 minmag  -0.0   0.0 -> -0.0
-
-ddmng046 minmag   0E1  -0E1 -> -0E+1
-ddmng047 minmag  -0E1   0E2 -> -0E+1
-ddmng048 minmag   0E2   0E1 ->  0E+1
-ddmng049 minmag   0E1   0E2 ->  0E+1
-ddmng050 minmag  -0E3  -0E2 -> -0E+3
-ddmng051 minmag  -0E2  -0E3 -> -0E+3
-
--- Specials
-ddmng090 minmag  Inf  -Inf   -> -Infinity
-ddmng091 minmag  Inf  -1000  -> -1000
-ddmng092 minmag  Inf  -1     -> -1
-ddmng093 minmag  Inf  -0     -> -0
-ddmng094 minmag  Inf   0     ->  0
-ddmng095 minmag  Inf   1     ->  1
-ddmng096 minmag  Inf   1000  ->  1000
-ddmng097 minmag  Inf   Inf   ->  Infinity
-ddmng098 minmag -1000  Inf   -> -1000
-ddmng099 minmag -Inf   Inf   -> -Infinity
-ddmng100 minmag -1     Inf   -> -1
-ddmng101 minmag -0     Inf   -> -0
-ddmng102 minmag  0     Inf   ->  0
-ddmng103 minmag  1     Inf   ->  1
-ddmng104 minmag  1000  Inf   ->  1000
-ddmng105 minmag  Inf   Inf   ->  Infinity
-
-ddmng120 minmag -Inf  -Inf   -> -Infinity
-ddmng121 minmag -Inf  -1000  -> -1000
-ddmng122 minmag -Inf  -1     -> -1
-ddmng123 minmag -Inf  -0     -> -0
-ddmng124 minmag -Inf   0     ->  0
-ddmng125 minmag -Inf   1     ->  1
-ddmng126 minmag -Inf   1000  ->  1000
-ddmng127 minmag -Inf   Inf   -> -Infinity
-ddmng128 minmag -Inf  -Inf   -> -Infinity
-ddmng129 minmag -1000 -Inf   -> -1000
-ddmng130 minmag -1    -Inf   -> -1
-ddmng131 minmag -0    -Inf   -> -0
-ddmng132 minmag  0    -Inf   ->  0
-ddmng133 minmag  1    -Inf   ->  1
-ddmng134 minmag  1000 -Inf   ->  1000
-ddmng135 minmag  Inf  -Inf   -> -Infinity
-
--- 2004.08.02 754r chooses number over NaN in mixed cases
-ddmng141 minmag  NaN -Inf    ->  -Infinity
-ddmng142 minmag  NaN -1000   ->  -1000
-ddmng143 minmag  NaN -1      ->  -1
-ddmng144 minmag  NaN -0      ->  -0
-ddmng145 minmag  NaN  0      ->  0
-ddmng146 minmag  NaN  1      ->  1
-ddmng147 minmag  NaN  1000   ->  1000
-ddmng148 minmag  NaN  Inf    ->  Infinity
-ddmng149 minmag  NaN  NaN    ->  NaN
-ddmng150 minmag -Inf  NaN    -> -Infinity
-ddmng151 minmag -1000 NaN    -> -1000
-ddmng152 minmag -1   -NaN    -> -1
-ddmng153 minmag -0    NaN    -> -0
-ddmng154 minmag  0   -NaN    ->  0
-ddmng155 minmag  1    NaN    ->  1
-ddmng156 minmag  1000 NaN    ->  1000
-ddmng157 minmag  Inf  NaN    ->  Infinity
-
-ddmng161 minmag  sNaN -Inf   ->  NaN  Invalid_operation
-ddmng162 minmag  sNaN -1000  ->  NaN  Invalid_operation
-ddmng163 minmag  sNaN -1     ->  NaN  Invalid_operation
-ddmng164 minmag  sNaN -0     ->  NaN  Invalid_operation
-ddmng165 minmag -sNaN  0     -> -NaN  Invalid_operation
-ddmng166 minmag -sNaN  1     -> -NaN  Invalid_operation
-ddmng167 minmag  sNaN  1000  ->  NaN  Invalid_operation
-ddmng168 minmag  sNaN  NaN   ->  NaN  Invalid_operation
-ddmng169 minmag  sNaN sNaN   ->  NaN  Invalid_operation
-ddmng170 minmag  NaN  sNaN   ->  NaN  Invalid_operation
-ddmng171 minmag -Inf  sNaN   ->  NaN  Invalid_operation
-ddmng172 minmag -1000 sNaN   ->  NaN  Invalid_operation
-ddmng173 minmag -1    sNaN   ->  NaN  Invalid_operation
-ddmng174 minmag -0    sNaN   ->  NaN  Invalid_operation
-ddmng175 minmag  0    sNaN   ->  NaN  Invalid_operation
-ddmng176 minmag  1    sNaN   ->  NaN  Invalid_operation
-ddmng177 minmag  1000 sNaN   ->  NaN  Invalid_operation
-ddmng178 minmag  Inf  sNaN   ->  NaN  Invalid_operation
-ddmng179 minmag  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddmng181 minmag  NaN9   -Inf   -> -Infinity
-ddmng182 minmag -NaN8    9990  ->  9990
-ddmng183 minmag  NaN71   Inf   ->  Infinity
-
-ddmng184 minmag  NaN1    NaN54 ->  NaN1
-ddmng185 minmag  NaN22  -NaN53 ->  NaN22
-ddmng186 minmag -NaN3    NaN6  -> -NaN3
-ddmng187 minmag -NaN44   NaN7  -> -NaN44
-
-ddmng188 minmag -Inf     NaN41 -> -Infinity
-ddmng189 minmag -9999   -NaN33 -> -9999
-ddmng190 minmag  Inf     NaN2  ->  Infinity
-
-ddmng191 minmag  sNaN99 -Inf    ->  NaN99 Invalid_operation
-ddmng192 minmag  sNaN98 -11     ->  NaN98 Invalid_operation
-ddmng193 minmag -sNaN97  NaN8   -> -NaN97 Invalid_operation
-ddmng194 minmag  sNaN69 sNaN94  ->  NaN69 Invalid_operation
-ddmng195 minmag  NaN95  sNaN93  ->  NaN93 Invalid_operation
-ddmng196 minmag -Inf    sNaN92  ->  NaN92 Invalid_operation
-ddmng197 minmag  088    sNaN91  ->  NaN91 Invalid_operation
-ddmng198 minmag  Inf   -sNaN90  -> -NaN90 Invalid_operation
-ddmng199 minmag  NaN    sNaN86  ->  NaN86 Invalid_operation
-
--- old rounding checks
-ddmng221 minmag -12345678000 1  -> 1
-ddmng222 minmag 1 -12345678000  -> 1
-ddmng223 minmag -1234567800  1  -> 1
-ddmng224 minmag 1 -1234567800   -> 1
-ddmng225 minmag -1234567890  1  -> 1
-ddmng226 minmag 1 -1234567890   -> 1
-ddmng227 minmag -1234567891  1  -> 1
-ddmng228 minmag 1 -1234567891   -> 1
-ddmng229 minmag -12345678901 1  -> 1
-ddmng230 minmag 1 -12345678901  -> 1
-ddmng231 minmag -1234567896  1  -> 1
-ddmng232 minmag 1 -1234567896   -> 1
-ddmng233 minmag 1234567891  1   -> 1
-ddmng234 minmag 1 1234567891    -> 1
-ddmng235 minmag 12345678901 1   -> 1
-ddmng236 minmag 1 12345678901   -> 1
-ddmng237 minmag 1234567896  1   -> 1
-ddmng238 minmag 1 1234567896    -> 1
-
--- from examples
-ddmng280 minmag '3'   '2'  ->  '2'
-ddmng281 minmag '-10' '3'  ->  '3'
-ddmng282 minmag '1.0' '1'  ->  '1.0'
-ddmng283 minmag '1' '1.0'  ->  '1.0'
-ddmng284 minmag '7' 'NaN'  ->  '7'
-
--- expanded list from min/max 754r purple prose
--- [explicit tests for exponent ordering]
-ddmng401 minmag  Inf    1.1     ->  1.1
-ddmng402 minmag  1.1    1       ->  1
-ddmng403 minmag  1      1.0     ->  1.0
-ddmng404 minmag  1.0    0.1     ->  0.1
-ddmng405 minmag  0.1    0.10    ->  0.10
-ddmng406 minmag  0.10   0.100   ->  0.100
-ddmng407 minmag  0.10   0       ->  0
-ddmng408 minmag  0      0.0     ->  0.0
-ddmng409 minmag  0.0   -0       -> -0
-ddmng410 minmag  0.0   -0.0     -> -0.0
-ddmng411 minmag  0.00  -0.0     -> -0.0
-ddmng412 minmag  0.0   -0.00    -> -0.00
-ddmng413 minmag  0     -0.0     -> -0.0
-ddmng414 minmag  0     -0       -> -0
-ddmng415 minmag -0.0   -0       -> -0
-ddmng416 minmag -0     -0.100   -> -0
-ddmng417 minmag -0.100 -0.10    -> -0.10
-ddmng418 minmag -0.10  -0.1     -> -0.1
-ddmng419 minmag -0.1   -1.0     -> -0.1
-ddmng420 minmag -1.0   -1       -> -1
-ddmng421 minmag -1     -1.1     -> -1
-ddmng423 minmag -1.1   -Inf     -> -1.1
--- same with operands reversed
-ddmng431 minmag  1.1    Inf     ->  1.1
-ddmng432 minmag  1      1.1     ->  1
-ddmng433 minmag  1.0    1       ->  1.0
-ddmng434 minmag  0.1    1.0     ->  0.1
-ddmng435 minmag  0.10   0.1     ->  0.10
-ddmng436 minmag  0.100  0.10    ->  0.100
-ddmng437 minmag  0      0.10    ->  0
-ddmng438 minmag  0.0    0       ->  0.0
-ddmng439 minmag -0      0.0     -> -0
-ddmng440 minmag -0.0    0.0     -> -0.0
-ddmng441 minmag -0.0    0.00    -> -0.0
-ddmng442 minmag -0.00   0.0     -> -0.00
-ddmng443 minmag -0.0    0       -> -0.0
-ddmng444 minmag -0      0       -> -0
-ddmng445 minmag -0     -0.0     -> -0
-ddmng446 minmag -0.100 -0       -> -0
-ddmng447 minmag -0.10  -0.100   -> -0.10
-ddmng448 minmag -0.1   -0.10    -> -0.1
-ddmng449 minmag -1.0   -0.1     -> -0.1
-ddmng450 minmag -1     -1.0     -> -1
-ddmng451 minmag -1.1   -1       -> -1
-ddmng453 minmag -Inf   -1.1     -> -1.1
--- largies
-ddmng460 minmag  1000   1E+3    ->  1000
-ddmng461 minmag  1E+3   1000    ->  1000
-ddmng462 minmag  1000  -1E+3    -> -1E+3
-ddmng463 minmag  1E+3   -384    -> -384
-ddmng464 minmag -384    1E+3    -> -384
-ddmng465 minmag -1E+3   1000    -> -1E+3
-ddmng466 minmag -384   -1E+3    -> -384
-ddmng467 minmag -1E+3   -384    -> -384
-
--- subnormals
-ddmng510 minmag  1.00E-383       0  ->   0
-ddmng511 minmag  0.1E-383        0  ->   0
-ddmng512 minmag  0.10E-383       0  ->   0
-ddmng513 minmag  0.100E-383      0  ->   0
-ddmng514 minmag  0.01E-383       0  ->   0
-ddmng515 minmag  0.999E-383      0  ->   0
-ddmng516 minmag  0.099E-383      0  ->   0
-ddmng517 minmag  0.009E-383      0  ->   0
-ddmng518 minmag  0.001E-383      0  ->   0
-ddmng519 minmag  0.0009E-383     0  ->   0
-ddmng520 minmag  0.0001E-383     0  ->   0
-
-ddmng530 minmag -1.00E-383       0  ->   0
-ddmng531 minmag -0.1E-383        0  ->   0
-ddmng532 minmag -0.10E-383       0  ->   0
-ddmng533 minmag -0.100E-383      0  ->   0
-ddmng534 minmag -0.01E-383       0  ->   0
-ddmng535 minmag -0.999E-383      0  ->   0
-ddmng536 minmag -0.099E-383      0  ->   0
-ddmng537 minmag -0.009E-383      0  ->   0
-ddmng538 minmag -0.001E-383      0  ->   0
-ddmng539 minmag -0.0009E-383     0  ->   0
-ddmng540 minmag -0.0001E-383     0  ->   0
-
-
--- Null tests
-ddmng900 minmag 10  # -> NaN Invalid_operation
-ddmng901 minmag  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMinus.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMinus.decTest
deleted file mode 100644
index 2705e79..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMinus.decTest
+++ /dev/null
@@ -1,88 +0,0 @@
-------------------------------------------------------------------------
--- ddMinus.decTest -- decDouble 0-x                                   --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Sanity check
-ddmns001 minus       +7.50  -> -7.50
-
--- Infinities
-ddmns011 minus  Infinity    -> -Infinity
-ddmns012 minus  -Infinity   -> Infinity
-
--- NaNs, 0 payload
-ddmns021 minus         NaN  -> NaN
-ddmns022 minus        -NaN  -> -NaN
-ddmns023 minus        sNaN  -> NaN  Invalid_operation
-ddmns024 minus       -sNaN  -> -NaN Invalid_operation
-
--- NaNs, non-0 payload
-ddmns031 minus       NaN13  -> NaN13
-ddmns032 minus      -NaN13  -> -NaN13
-ddmns033 minus      sNaN13  -> NaN13   Invalid_operation
-ddmns034 minus     -sNaN13  -> -NaN13  Invalid_operation
-ddmns035 minus       NaN70  -> NaN70
-ddmns036 minus      -NaN70  -> -NaN70
-ddmns037 minus      sNaN101 -> NaN101  Invalid_operation
-ddmns038 minus     -sNaN101 -> -NaN101 Invalid_operation
-
--- finites
-ddmns101 minus          7   -> -7
-ddmns102 minus         -7   -> 7
-ddmns103 minus         75   -> -75
-ddmns104 minus        -75   -> 75
-ddmns105 minus       7.50   -> -7.50
-ddmns106 minus      -7.50   -> 7.50
-ddmns107 minus       7.500  -> -7.500
-ddmns108 minus      -7.500  -> 7.500
-
--- zeros
-ddmns111 minus          0   -> 0
-ddmns112 minus         -0   -> 0
-ddmns113 minus       0E+4   -> 0E+4
-ddmns114 minus      -0E+4   -> 0E+4
-ddmns115 minus     0.0000   -> 0.0000
-ddmns116 minus    -0.0000   -> 0.0000
-ddmns117 minus      0E-141  -> 0E-141
-ddmns118 minus     -0E-141  -> 0E-141
-
--- full coefficients, alternating bits
-ddmns121 minus  2682682682682682         -> -2682682682682682
-ddmns122 minus  -2682682682682682        -> 2682682682682682
-ddmns123 minus  1341341341341341         -> -1341341341341341
-ddmns124 minus  -1341341341341341        -> 1341341341341341
-
--- Nmax, Nmin, Ntiny
-ddmns131 minus  9.999999999999999E+384   -> -9.999999999999999E+384
-ddmns132 minus  1E-383                   -> -1E-383
-ddmns133 minus  1.000000000000000E-383   -> -1.000000000000000E-383
-ddmns134 minus  1E-398                   -> -1E-398 Subnormal
-
-ddmns135 minus  -1E-398                  -> 1E-398 Subnormal
-ddmns136 minus  -1.000000000000000E-383  -> 1.000000000000000E-383
-ddmns137 minus  -1E-383                  -> 1E-383
-ddmns138 minus  -9.999999999999999E+384  -> 9.999999999999999E+384
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMultiply.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMultiply.decTest
deleted file mode 100644
index 45a381d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddMultiply.decTest
+++ /dev/null
@@ -1,553 +0,0 @@
-------------------------------------------------------------------------
--- ddMultiply.decTest -- decDouble multiplication                     --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This set of tests are for decDoubles only; all arguments are
--- representable in a decDouble
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- sanity checks
-ddmul000 multiply 2      2 -> 4
-ddmul001 multiply 2      3 -> 6
-ddmul002 multiply 5      1 -> 5
-ddmul003 multiply 5      2 -> 10
-ddmul004 multiply 1.20   2 -> 2.40
-ddmul005 multiply 1.20   0 -> 0.00
-ddmul006 multiply 1.20  -2 -> -2.40
-ddmul007 multiply -1.20  2 -> -2.40
-ddmul008 multiply -1.20  0 -> -0.00
-ddmul009 multiply -1.20 -2 -> 2.40
-ddmul010 multiply 5.09 7.1 -> 36.139
-ddmul011 multiply 2.5    4 -> 10.0
-ddmul012 multiply 2.50   4 -> 10.00
-ddmul013 multiply 1.23456789 1.00000000 -> 1.234567890000000 Rounded
-ddmul015 multiply 2.50   4 -> 10.00
-ddmul016 multiply  9.999999999  9.999999999 ->  99.99999998000000 Inexact Rounded
-ddmul017 multiply  9.999999999 -9.999999999 -> -99.99999998000000 Inexact Rounded
-ddmul018 multiply -9.999999999  9.999999999 -> -99.99999998000000 Inexact Rounded
-ddmul019 multiply -9.999999999 -9.999999999 ->  99.99999998000000 Inexact Rounded
-
--- zeros, etc.
-ddmul021 multiply  0      0     ->  0
-ddmul022 multiply  0     -0     -> -0
-ddmul023 multiply -0      0     -> -0
-ddmul024 multiply -0     -0     ->  0
-ddmul025 multiply -0.0   -0.0   ->  0.00
-ddmul026 multiply -0.0   -0.0   ->  0.00
-ddmul027 multiply -0.0   -0.0   ->  0.00
-ddmul028 multiply -0.0   -0.0   ->  0.00
-ddmul030 multiply  5.00   1E-3  ->  0.00500
-ddmul031 multiply  00.00  0.000 ->  0.00000
-ddmul032 multiply  00.00  0E-3  ->  0.00000     -- rhs is 0
-ddmul033 multiply  0E-3   00.00 ->  0.00000     -- lhs is 0
-ddmul034 multiply -5.00   1E-3  -> -0.00500
-ddmul035 multiply -00.00  0.000 -> -0.00000
-ddmul036 multiply -00.00  0E-3  -> -0.00000     -- rhs is 0
-ddmul037 multiply -0E-3   00.00 -> -0.00000     -- lhs is 0
-ddmul038 multiply  5.00  -1E-3  -> -0.00500
-ddmul039 multiply  00.00 -0.000 -> -0.00000
-ddmul040 multiply  00.00 -0E-3  -> -0.00000     -- rhs is 0
-ddmul041 multiply  0E-3  -00.00 -> -0.00000     -- lhs is 0
-ddmul042 multiply -5.00  -1E-3  ->  0.00500
-ddmul043 multiply -00.00 -0.000 ->  0.00000
-ddmul044 multiply -00.00 -0E-3  ->  0.00000     -- rhs is 0
-ddmul045 multiply -0E-3  -00.00 ->  0.00000     -- lhs is 0
-
--- examples from decarith
-ddmul050 multiply 1.20 3        -> 3.60
-ddmul051 multiply 7    3        -> 21
-ddmul052 multiply 0.9  0.8      -> 0.72
-ddmul053 multiply 0.9  -0       -> -0.0
-ddmul054 multiply 654321 654321 -> 428135971041
-
-ddmul060 multiply 123.45 1e7  ->  1.2345E+9
-ddmul061 multiply 123.45 1e8  ->  1.2345E+10
-ddmul062 multiply 123.45 1e+9 ->  1.2345E+11
-ddmul063 multiply 123.45 1e10 ->  1.2345E+12
-ddmul064 multiply 123.45 1e11 ->  1.2345E+13
-ddmul065 multiply 123.45 1e12 ->  1.2345E+14
-ddmul066 multiply 123.45 1e13 ->  1.2345E+15
-
-
--- test some intermediate lengths
---                    1234567890123456
-ddmul080 multiply 0.1 1230123456456789     -> 123012345645678.9
-ddmul084 multiply 0.1 1230123456456789     -> 123012345645678.9
-ddmul090 multiply 1230123456456789     0.1 -> 123012345645678.9
-ddmul094 multiply 1230123456456789     0.1 -> 123012345645678.9
-
--- test some more edge cases and carries
-ddmul101 multiply 9 9   -> 81
-ddmul102 multiply 9 90   -> 810
-ddmul103 multiply 9 900   -> 8100
-ddmul104 multiply 9 9000   -> 81000
-ddmul105 multiply 9 90000   -> 810000
-ddmul106 multiply 9 900000   -> 8100000
-ddmul107 multiply 9 9000000   -> 81000000
-ddmul108 multiply 9 90000000   -> 810000000
-ddmul109 multiply 9 900000000   -> 8100000000
-ddmul110 multiply 9 9000000000   -> 81000000000
-ddmul111 multiply 9 90000000000   -> 810000000000
-ddmul112 multiply 9 900000000000   -> 8100000000000
-ddmul113 multiply 9 9000000000000   -> 81000000000000
-ddmul114 multiply 9 90000000000000   -> 810000000000000
-ddmul115 multiply 9 900000000000000   -> 8100000000000000
---ddmul116 multiply 9 9000000000000000   -> 81000000000000000
---ddmul117 multiply 9 90000000000000000   -> 810000000000000000
---ddmul118 multiply 9 900000000000000000   -> 8100000000000000000
---ddmul119 multiply 9 9000000000000000000   -> 81000000000000000000
---ddmul120 multiply 9 90000000000000000000   -> 810000000000000000000
---ddmul121 multiply 9 900000000000000000000   -> 8100000000000000000000
---ddmul122 multiply 9 9000000000000000000000   -> 81000000000000000000000
---ddmul123 multiply 9 90000000000000000000000   -> 810000000000000000000000
--- test some more edge cases without carries
-ddmul131 multiply 3 3   -> 9
-ddmul132 multiply 3 30   -> 90
-ddmul133 multiply 3 300   -> 900
-ddmul134 multiply 3 3000   -> 9000
-ddmul135 multiply 3 30000   -> 90000
-ddmul136 multiply 3 300000   -> 900000
-ddmul137 multiply 3 3000000   -> 9000000
-ddmul138 multiply 3 30000000   -> 90000000
-ddmul139 multiply 3 300000000   -> 900000000
-ddmul140 multiply 3 3000000000   -> 9000000000
-ddmul141 multiply 3 30000000000   -> 90000000000
-ddmul142 multiply 3 300000000000   -> 900000000000
-ddmul143 multiply 3 3000000000000   -> 9000000000000
-ddmul144 multiply 3 30000000000000   -> 90000000000000
-ddmul145 multiply 3 300000000000000   -> 900000000000000
-
--- test some edge cases with exact rounding
-ddmul301 multiply 9 9   -> 81
-ddmul302 multiply 9 90   -> 810
-ddmul303 multiply 9 900   -> 8100
-ddmul304 multiply 9 9000   -> 81000
-ddmul305 multiply 9 90000   -> 810000
-ddmul306 multiply 9 900000   -> 8100000
-ddmul307 multiply 9 9000000   -> 81000000
-ddmul308 multiply 9 90000000   -> 810000000
-ddmul309 multiply 9 900000000   -> 8100000000
-ddmul310 multiply 9 9000000000   -> 81000000000
-ddmul311 multiply 9 90000000000   -> 810000000000
-ddmul312 multiply 9 900000000000   -> 8100000000000
-ddmul313 multiply 9 9000000000000   -> 81000000000000
-ddmul314 multiply 9 90000000000000   -> 810000000000000
-ddmul315 multiply 9 900000000000000   -> 8100000000000000
-ddmul316 multiply 9 9000000000000000   -> 8.100000000000000E+16  Rounded
-ddmul317 multiply 90 9000000000000000   -> 8.100000000000000E+17  Rounded
-ddmul318 multiply 900 9000000000000000   -> 8.100000000000000E+18  Rounded
-ddmul319 multiply 9000 9000000000000000   -> 8.100000000000000E+19  Rounded
-ddmul320 multiply 90000 9000000000000000   -> 8.100000000000000E+20  Rounded
-ddmul321 multiply 900000 9000000000000000   -> 8.100000000000000E+21  Rounded
-ddmul322 multiply 9000000 9000000000000000   -> 8.100000000000000E+22  Rounded
-ddmul323 multiply 90000000 9000000000000000   -> 8.100000000000000E+23  Rounded
-
--- tryzeros cases
-ddmul504  multiply  0E-260 1000E-260  -> 0E-398 Clamped
-ddmul505  multiply  100E+260 0E+260   -> 0E+369 Clamped
--- 65K-1 case
-ddmul506 multiply 77.1 850 -> 65535.0
-
--- mixed with zeros
-ddmul541 multiply  0    -1     -> -0
-ddmul542 multiply -0    -1     ->  0
-ddmul543 multiply  0     1     ->  0
-ddmul544 multiply -0     1     -> -0
-ddmul545 multiply -1     0     -> -0
-ddmul546 multiply -1    -0     ->  0
-ddmul547 multiply  1     0     ->  0
-ddmul548 multiply  1    -0     -> -0
-
-ddmul551 multiply  0.0  -1     -> -0.0
-ddmul552 multiply -0.0  -1     ->  0.0
-ddmul553 multiply  0.0   1     ->  0.0
-ddmul554 multiply -0.0   1     -> -0.0
-ddmul555 multiply -1.0   0     -> -0.0
-ddmul556 multiply -1.0  -0     ->  0.0
-ddmul557 multiply  1.0   0     ->  0.0
-ddmul558 multiply  1.0  -0     -> -0.0
-
-ddmul561 multiply  0    -1.0   -> -0.0
-ddmul562 multiply -0    -1.0   ->  0.0
-ddmul563 multiply  0     1.0   ->  0.0
-ddmul564 multiply -0     1.0   -> -0.0
-ddmul565 multiply -1     0.0   -> -0.0
-ddmul566 multiply -1    -0.0   ->  0.0
-ddmul567 multiply  1     0.0   ->  0.0
-ddmul568 multiply  1    -0.0   -> -0.0
-
-ddmul571 multiply  0.0  -1.0   -> -0.00
-ddmul572 multiply -0.0  -1.0   ->  0.00
-ddmul573 multiply  0.0   1.0   ->  0.00
-ddmul574 multiply -0.0   1.0   -> -0.00
-ddmul575 multiply -1.0   0.0   -> -0.00
-ddmul576 multiply -1.0  -0.0   ->  0.00
-ddmul577 multiply  1.0   0.0   ->  0.00
-ddmul578 multiply  1.0  -0.0   -> -0.00
-
-
--- Specials
-ddmul580 multiply  Inf  -Inf   -> -Infinity
-ddmul581 multiply  Inf  -1000  -> -Infinity
-ddmul582 multiply  Inf  -1     -> -Infinity
-ddmul583 multiply  Inf  -0     ->  NaN  Invalid_operation
-ddmul584 multiply  Inf   0     ->  NaN  Invalid_operation
-ddmul585 multiply  Inf   1     ->  Infinity
-ddmul586 multiply  Inf   1000  ->  Infinity
-ddmul587 multiply  Inf   Inf   ->  Infinity
-ddmul588 multiply -1000  Inf   -> -Infinity
-ddmul589 multiply -Inf   Inf   -> -Infinity
-ddmul590 multiply -1     Inf   -> -Infinity
-ddmul591 multiply -0     Inf   ->  NaN  Invalid_operation
-ddmul592 multiply  0     Inf   ->  NaN  Invalid_operation
-ddmul593 multiply  1     Inf   ->  Infinity
-ddmul594 multiply  1000  Inf   ->  Infinity
-ddmul595 multiply  Inf   Inf   ->  Infinity
-
-ddmul600 multiply -Inf  -Inf   ->  Infinity
-ddmul601 multiply -Inf  -1000  ->  Infinity
-ddmul602 multiply -Inf  -1     ->  Infinity
-ddmul603 multiply -Inf  -0     ->  NaN  Invalid_operation
-ddmul604 multiply -Inf   0     ->  NaN  Invalid_operation
-ddmul605 multiply -Inf   1     -> -Infinity
-ddmul606 multiply -Inf   1000  -> -Infinity
-ddmul607 multiply -Inf   Inf   -> -Infinity
-ddmul608 multiply -1000  Inf   -> -Infinity
-ddmul609 multiply -Inf  -Inf   ->  Infinity
-ddmul610 multiply -1    -Inf   ->  Infinity
-ddmul611 multiply -0    -Inf   ->  NaN  Invalid_operation
-ddmul612 multiply  0    -Inf   ->  NaN  Invalid_operation
-ddmul613 multiply  1    -Inf   -> -Infinity
-ddmul614 multiply  1000 -Inf   -> -Infinity
-ddmul615 multiply  Inf  -Inf   -> -Infinity
-
-ddmul621 multiply  NaN -Inf    ->  NaN
-ddmul622 multiply  NaN -1000   ->  NaN
-ddmul623 multiply  NaN -1      ->  NaN
-ddmul624 multiply  NaN -0      ->  NaN
-ddmul625 multiply  NaN  0      ->  NaN
-ddmul626 multiply  NaN  1      ->  NaN
-ddmul627 multiply  NaN  1000   ->  NaN
-ddmul628 multiply  NaN  Inf    ->  NaN
-ddmul629 multiply  NaN  NaN    ->  NaN
-ddmul630 multiply -Inf  NaN    ->  NaN
-ddmul631 multiply -1000 NaN    ->  NaN
-ddmul632 multiply -1    NaN    ->  NaN
-ddmul633 multiply -0    NaN    ->  NaN
-ddmul634 multiply  0    NaN    ->  NaN
-ddmul635 multiply  1    NaN    ->  NaN
-ddmul636 multiply  1000 NaN    ->  NaN
-ddmul637 multiply  Inf  NaN    ->  NaN
-
-ddmul641 multiply  sNaN -Inf   ->  NaN  Invalid_operation
-ddmul642 multiply  sNaN -1000  ->  NaN  Invalid_operation
-ddmul643 multiply  sNaN -1     ->  NaN  Invalid_operation
-ddmul644 multiply  sNaN -0     ->  NaN  Invalid_operation
-ddmul645 multiply  sNaN  0     ->  NaN  Invalid_operation
-ddmul646 multiply  sNaN  1     ->  NaN  Invalid_operation
-ddmul647 multiply  sNaN  1000  ->  NaN  Invalid_operation
-ddmul648 multiply  sNaN  NaN   ->  NaN  Invalid_operation
-ddmul649 multiply  sNaN sNaN   ->  NaN  Invalid_operation
-ddmul650 multiply  NaN  sNaN   ->  NaN  Invalid_operation
-ddmul651 multiply -Inf  sNaN   ->  NaN  Invalid_operation
-ddmul652 multiply -1000 sNaN   ->  NaN  Invalid_operation
-ddmul653 multiply -1    sNaN   ->  NaN  Invalid_operation
-ddmul654 multiply -0    sNaN   ->  NaN  Invalid_operation
-ddmul655 multiply  0    sNaN   ->  NaN  Invalid_operation
-ddmul656 multiply  1    sNaN   ->  NaN  Invalid_operation
-ddmul657 multiply  1000 sNaN   ->  NaN  Invalid_operation
-ddmul658 multiply  Inf  sNaN   ->  NaN  Invalid_operation
-ddmul659 multiply  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddmul661 multiply  NaN9 -Inf   ->  NaN9
-ddmul662 multiply  NaN8  999   ->  NaN8
-ddmul663 multiply  NaN71 Inf   ->  NaN71
-ddmul664 multiply  NaN6  NaN5  ->  NaN6
-ddmul665 multiply -Inf   NaN4  ->  NaN4
-ddmul666 multiply -999   NaN33 ->  NaN33
-ddmul667 multiply  Inf   NaN2  ->  NaN2
-
-ddmul671 multiply  sNaN99 -Inf    ->  NaN99 Invalid_operation
-ddmul672 multiply  sNaN98 -11     ->  NaN98 Invalid_operation
-ddmul673 multiply  sNaN97  NaN    ->  NaN97 Invalid_operation
-ddmul674 multiply  sNaN16 sNaN94  ->  NaN16 Invalid_operation
-ddmul675 multiply  NaN95  sNaN93  ->  NaN93 Invalid_operation
-ddmul676 multiply -Inf    sNaN92  ->  NaN92 Invalid_operation
-ddmul677 multiply  088    sNaN91  ->  NaN91 Invalid_operation
-ddmul678 multiply  Inf    sNaN90  ->  NaN90 Invalid_operation
-ddmul679 multiply  NaN    sNaN89  ->  NaN89 Invalid_operation
-
-ddmul681 multiply -NaN9 -Inf   -> -NaN9
-ddmul682 multiply -NaN8  999   -> -NaN8
-ddmul683 multiply -NaN71 Inf   -> -NaN71
-ddmul684 multiply -NaN6 -NaN5  -> -NaN6
-ddmul685 multiply -Inf  -NaN4  -> -NaN4
-ddmul686 multiply -999  -NaN33 -> -NaN33
-ddmul687 multiply  Inf  -NaN2  -> -NaN2
-
-ddmul691 multiply -sNaN99 -Inf    -> -NaN99 Invalid_operation
-ddmul692 multiply -sNaN98 -11     -> -NaN98 Invalid_operation
-ddmul693 multiply -sNaN97  NaN    -> -NaN97 Invalid_operation
-ddmul694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation
-ddmul695 multiply -NaN95  -sNaN93 -> -NaN93 Invalid_operation
-ddmul696 multiply -Inf    -sNaN92 -> -NaN92 Invalid_operation
-ddmul697 multiply  088    -sNaN91 -> -NaN91 Invalid_operation
-ddmul698 multiply  Inf    -sNaN90 -> -NaN90 Invalid_operation
-ddmul699 multiply -NaN    -sNaN89 -> -NaN89 Invalid_operation
-
-ddmul701 multiply -NaN  -Inf   -> -NaN
-ddmul702 multiply -NaN   999   -> -NaN
-ddmul703 multiply -NaN   Inf   -> -NaN
-ddmul704 multiply -NaN  -NaN   -> -NaN
-ddmul705 multiply -Inf  -NaN0  -> -NaN
-ddmul706 multiply -999  -NaN   -> -NaN
-ddmul707 multiply  Inf  -NaN   -> -NaN
-
-ddmul711 multiply -sNaN   -Inf    -> -NaN Invalid_operation
-ddmul712 multiply -sNaN   -11     -> -NaN Invalid_operation
-ddmul713 multiply -sNaN00  NaN    -> -NaN Invalid_operation
-ddmul714 multiply -sNaN   -sNaN   -> -NaN Invalid_operation
-ddmul715 multiply -NaN    -sNaN   -> -NaN Invalid_operation
-ddmul716 multiply -Inf    -sNaN   -> -NaN Invalid_operation
-ddmul717 multiply  088    -sNaN   -> -NaN Invalid_operation
-ddmul718 multiply  Inf    -sNaN   -> -NaN Invalid_operation
-ddmul719 multiply -NaN    -sNaN   -> -NaN Invalid_operation
-
--- overflow and underflow tests .. note subnormal results
--- signs
-ddmul751 multiply  1e+277  1e+311 ->  Infinity Overflow Inexact Rounded
-ddmul752 multiply  1e+277 -1e+311 -> -Infinity Overflow Inexact Rounded
-ddmul753 multiply -1e+277  1e+311 -> -Infinity Overflow Inexact Rounded
-ddmul754 multiply -1e+277 -1e+311 ->  Infinity Overflow Inexact Rounded
-ddmul755 multiply  1e-277  1e-311 ->  0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddmul756 multiply  1e-277 -1e-311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddmul757 multiply -1e-277  1e-311 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddmul758 multiply -1e-277 -1e-311 ->  0E-398 Underflow Subnormal Inexact Rounded Clamped
-
--- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
-ddmul760 multiply 1e-291 1e-101 -> 1E-392 Subnormal
-ddmul761 multiply 1e-291 1e-102 -> 1E-393 Subnormal
-ddmul762 multiply 1e-291 1e-103 -> 1E-394 Subnormal
-ddmul763 multiply 1e-291 1e-104 -> 1E-395 Subnormal
-ddmul764 multiply 1e-291 1e-105 -> 1E-396 Subnormal
-ddmul765 multiply 1e-291 1e-106 -> 1E-397 Subnormal
-ddmul766 multiply 1e-291 1e-107 -> 1E-398 Subnormal
-ddmul767 multiply 1e-291 1e-108 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddmul768 multiply 1e-291 1e-109 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddmul769 multiply 1e-291 1e-110 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
--- [no equivalent of 'subnormal' for overflow]
-ddmul770 multiply 1e+60 1e+321 -> 1.000000000000E+381  Clamped
-ddmul771 multiply 1e+60 1e+322 -> 1.0000000000000E+382  Clamped
-ddmul772 multiply 1e+60 1e+323 -> 1.00000000000000E+383  Clamped
-ddmul773 multiply 1e+60 1e+324 -> 1.000000000000000E+384  Clamped
-ddmul774 multiply 1e+60 1e+325 -> Infinity Overflow Inexact Rounded
-ddmul775 multiply 1e+60 1e+326 -> Infinity Overflow Inexact Rounded
-ddmul776 multiply 1e+60 1e+327 -> Infinity Overflow Inexact Rounded
-ddmul777 multiply 1e+60 1e+328 -> Infinity Overflow Inexact Rounded
-ddmul778 multiply 1e+60 1e+329 -> Infinity Overflow Inexact Rounded
-ddmul779 multiply 1e+60 1e+330 -> Infinity Overflow Inexact Rounded
-
-ddmul801 multiply  1.0000E-394  1     -> 1.0000E-394 Subnormal
-ddmul802 multiply  1.000E-394   1e-1  -> 1.000E-395  Subnormal
-ddmul803 multiply  1.00E-394    1e-2  -> 1.00E-396   Subnormal
-ddmul804 multiply  1.0E-394     1e-3  -> 1.0E-397    Subnormal
-ddmul805 multiply  1.0E-394     1e-4  -> 1E-398     Subnormal Rounded
-ddmul806 multiply  1.3E-394     1e-4  -> 1E-398     Underflow Subnormal Inexact Rounded
-ddmul807 multiply  1.5E-394     1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded
-ddmul808 multiply  1.7E-394     1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded
-ddmul809 multiply  2.3E-394     1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded
-ddmul810 multiply  2.5E-394     1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded
-ddmul811 multiply  2.7E-394     1e-4  -> 3E-398     Underflow Subnormal Inexact Rounded
-ddmul812 multiply  1.49E-394    1e-4  -> 1E-398     Underflow Subnormal Inexact Rounded
-ddmul813 multiply  1.50E-394    1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded
-ddmul814 multiply  1.51E-394    1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded
-ddmul815 multiply  2.49E-394    1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded
-ddmul816 multiply  2.50E-394    1e-4  -> 2E-398     Underflow Subnormal Inexact Rounded
-ddmul817 multiply  2.51E-394    1e-4  -> 3E-398     Underflow Subnormal Inexact Rounded
-
-ddmul818 multiply  1E-394       1e-4  -> 1E-398     Subnormal
-ddmul819 multiply  3E-394       1e-5  -> 0E-398     Underflow Subnormal Inexact Rounded Clamped
-ddmul820 multiply  5E-394       1e-5  -> 0E-398     Underflow Subnormal Inexact Rounded Clamped
-ddmul821 multiply  7E-394       1e-5  -> 1E-398     Underflow Subnormal Inexact Rounded
-ddmul822 multiply  9E-394       1e-5  -> 1E-398     Underflow Subnormal Inexact Rounded
-ddmul823 multiply  9.9E-394     1e-5  -> 1E-398     Underflow Subnormal Inexact Rounded
-
-ddmul824 multiply  1E-394      -1e-4  -> -1E-398    Subnormal
-ddmul825 multiply  3E-394      -1e-5  -> -0E-398    Underflow Subnormal Inexact Rounded Clamped
-ddmul826 multiply -5E-394       1e-5  -> -0E-398    Underflow Subnormal Inexact Rounded Clamped
-ddmul827 multiply  7E-394      -1e-5  -> -1E-398    Underflow Subnormal Inexact Rounded
-ddmul828 multiply -9E-394       1e-5  -> -1E-398    Underflow Subnormal Inexact Rounded
-ddmul829 multiply  9.9E-394    -1e-5  -> -1E-398    Underflow Subnormal Inexact Rounded
-ddmul830 multiply  3.0E-394    -1e-5  -> -0E-398    Underflow Subnormal Inexact Rounded Clamped
-
-ddmul831 multiply  1.0E-199     1e-200 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddmul832 multiply  1.0E-199     1e-199 -> 1E-398    Subnormal Rounded
-ddmul833 multiply  1.0E-199     1e-198 -> 1.0E-397    Subnormal
-ddmul834 multiply  2.0E-199     2e-198 -> 4.0E-397    Subnormal
-ddmul835 multiply  4.0E-199     4e-198 -> 1.60E-396   Subnormal
-ddmul836 multiply 10.0E-199    10e-198 -> 1.000E-395  Subnormal
-ddmul837 multiply 30.0E-199    30e-198 -> 9.000E-395  Subnormal
-ddmul838 multiply 40.0E-199    40e-188 -> 1.6000E-384 Subnormal
-ddmul839 multiply 40.0E-199    40e-187 -> 1.6000E-383
-ddmul840 multiply 40.0E-199    40e-186 -> 1.6000E-382
-
--- Long operand overflow may be a different path
-ddmul870 multiply 100  9.999E+383         ->  Infinity Inexact Overflow Rounded
-ddmul871 multiply 100 -9.999E+383     -> -Infinity Inexact Overflow Rounded
-ddmul872 multiply      9.999E+383 100 ->  Infinity Inexact Overflow Rounded
-ddmul873 multiply     -9.999E+383 100 -> -Infinity Inexact Overflow Rounded
-
--- check for double-rounded subnormals
-ddmul881 multiply  1.2347E-355 1.2347E-40  ->  1.524E-395 Inexact Rounded Subnormal Underflow
-ddmul882 multiply  1.234E-355 1.234E-40    ->  1.523E-395 Inexact Rounded Subnormal Underflow
-ddmul883 multiply  1.23E-355  1.23E-40     ->  1.513E-395 Inexact Rounded Subnormal Underflow
-ddmul884 multiply  1.2E-355   1.2E-40      ->  1.44E-395  Subnormal
-ddmul885 multiply  1.2E-355   1.2E-41      ->  1.44E-396  Subnormal
-ddmul886 multiply  1.2E-355   1.2E-42      ->  1.4E-397   Subnormal Inexact Rounded Underflow
-ddmul887 multiply  1.2E-355   1.3E-42      ->  1.6E-397   Subnormal Inexact Rounded Underflow
-ddmul888 multiply  1.3E-355   1.3E-42      ->  1.7E-397   Subnormal Inexact Rounded Underflow
-ddmul889 multiply  1.3E-355   1.3E-43      ->    2E-398   Subnormal Inexact Rounded Underflow
-ddmul890 multiply  1.3E-356   1.3E-43      ->    0E-398   Clamped Subnormal Inexact Rounded Underflow
-
-ddmul891 multiply  1.2345E-39   1.234E-355 ->  1.5234E-394 Inexact Rounded Subnormal Underflow
-ddmul892 multiply  1.23456E-39  1.234E-355 ->  1.5234E-394 Inexact Rounded Subnormal Underflow
-ddmul893 multiply  1.2345E-40   1.234E-355 ->  1.523E-395  Inexact Rounded Subnormal Underflow
-ddmul894 multiply  1.23456E-40  1.234E-355 ->  1.523E-395  Inexact Rounded Subnormal Underflow
-ddmul895 multiply  1.2345E-41   1.234E-355 ->  1.52E-396   Inexact Rounded Subnormal Underflow
-ddmul896 multiply  1.23456E-41  1.234E-355 ->  1.52E-396   Inexact Rounded Subnormal Underflow
-
--- Now explore the case where we get a normal result with Underflow
---                                                        1 234567890123456
-ddmul900 multiply  0.3000000000E-191 0.3000000000E-191 -> 9.00000000000000E-384 Subnormal Rounded
-ddmul901 multiply  0.3000000001E-191 0.3000000001E-191 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded
-ddmul902 multiply  9.999999999999999E-383  0.0999999999999    -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded
-ddmul903 multiply  9.999999999999999E-383  0.09999999999999   -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded
-ddmul904 multiply  9.999999999999999E-383  0.099999999999999  -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded
-ddmul905 multiply  9.999999999999999E-383  0.0999999999999999 -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded
--- The next rounds to Nmin (b**emin); this is the distinguishing case
--- for detecting tininess (before or after rounding) -- if after
--- rounding then the result would be the same, but the Underflow flag
--- would not be set
-ddmul906 multiply  9.999999999999999E-383  0.09999999999999999     -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
--- prove those operands were exact
-ddmul907 multiply  9.999999999999999E-383  1                       -> 9.999999999999999E-383
-ddmul908 multiply                       1  0.09999999999999999     -> 0.09999999999999999
-
--- reducing tiniest
-ddmul910 multiply 1e-398 0.99 -> 1E-398 Subnormal Inexact Rounded Underflow
-ddmul911 multiply 1e-398 0.75 -> 1E-398 Subnormal Inexact Rounded Underflow
-ddmul912 multiply 1e-398 0.5  -> 0E-398 Subnormal Inexact Rounded Underflow Clamped
-ddmul913 multiply 1e-398 0.25 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped
-ddmul914 multiply 1e-398 0.01 -> 0E-398 Subnormal Inexact Rounded Underflow Clamped
-
--- hugest
-ddmul920 multiply  9999999999999999 9999999999999999 -> 9.999999999999998E+31 Inexact Rounded
-
--- power-of-ten edge cases
-ddmul1001 multiply  1      10               -> 10
-ddmul1002 multiply  1      100              -> 100
-ddmul1003 multiply  1      1000             -> 1000
-ddmul1004 multiply  1      10000            -> 10000
-ddmul1005 multiply  1      100000           -> 100000
-ddmul1006 multiply  1      1000000          -> 1000000
-ddmul1007 multiply  1      10000000         -> 10000000
-ddmul1008 multiply  1      100000000        -> 100000000
-ddmul1009 multiply  1      1000000000       -> 1000000000
-ddmul1010 multiply  1      10000000000      -> 10000000000
-ddmul1011 multiply  1      100000000000     -> 100000000000
-ddmul1012 multiply  1      1000000000000    -> 1000000000000
-ddmul1013 multiply  1      10000000000000   -> 10000000000000
-ddmul1014 multiply  1      100000000000000  -> 100000000000000
-ddmul1015 multiply  1      1000000000000000 -> 1000000000000000
-ddmul1021 multiply  10     1                -> 10
-ddmul1022 multiply  10     10               -> 100
-ddmul1023 multiply  10     100              -> 1000
-ddmul1024 multiply  10     1000             -> 10000
-ddmul1025 multiply  10     10000            -> 100000
-ddmul1026 multiply  10     100000           -> 1000000
-ddmul1027 multiply  10     1000000          -> 10000000
-ddmul1028 multiply  10     10000000         -> 100000000
-ddmul1029 multiply  10     100000000        -> 1000000000
-ddmul1030 multiply  10     1000000000       -> 10000000000
-ddmul1031 multiply  10     10000000000      -> 100000000000
-ddmul1032 multiply  10     100000000000     -> 1000000000000
-ddmul1033 multiply  10     1000000000000    -> 10000000000000
-ddmul1034 multiply  10     10000000000000   -> 100000000000000
-ddmul1035 multiply  10     100000000000000  -> 1000000000000000
-ddmul1041 multiply  100    0.1              -> 10.0
-ddmul1042 multiply  100    1                -> 100
-ddmul1043 multiply  100    10               -> 1000
-ddmul1044 multiply  100    100              -> 10000
-ddmul1045 multiply  100    1000             -> 100000
-ddmul1046 multiply  100    10000            -> 1000000
-ddmul1047 multiply  100    100000           -> 10000000
-ddmul1048 multiply  100    1000000          -> 100000000
-ddmul1049 multiply  100    10000000         -> 1000000000
-ddmul1050 multiply  100    100000000        -> 10000000000
-ddmul1051 multiply  100    1000000000       -> 100000000000
-ddmul1052 multiply  100    10000000000      -> 1000000000000
-ddmul1053 multiply  100    100000000000     -> 10000000000000
-ddmul1054 multiply  100    1000000000000    -> 100000000000000
-ddmul1055 multiply  100    10000000000000   -> 1000000000000000
-ddmul1061 multiply  1000   0.01             -> 10.00
-ddmul1062 multiply  1000   0.1              -> 100.0
-ddmul1063 multiply  1000   1                -> 1000
-ddmul1064 multiply  1000   10               -> 10000
-ddmul1065 multiply  1000   100              -> 100000
-ddmul1066 multiply  1000   1000             -> 1000000
-ddmul1067 multiply  1000   10000            -> 10000000
-ddmul1068 multiply  1000   100000           -> 100000000
-ddmul1069 multiply  1000   1000000          -> 1000000000
-ddmul1070 multiply  1000   10000000         -> 10000000000
-ddmul1071 multiply  1000   100000000        -> 100000000000
-ddmul1072 multiply  1000   1000000000       -> 1000000000000
-ddmul1073 multiply  1000   10000000000      -> 10000000000000
-ddmul1074 multiply  1000   100000000000     -> 100000000000000
-ddmul1075 multiply  1000   1000000000000    -> 1000000000000000
-ddmul1081 multiply  10000  0.001            -> 10.000
-ddmul1082 multiply  10000  0.01             -> 100.00
-ddmul1083 multiply  10000  0.1              -> 1000.0
-ddmul1084 multiply  10000  1                -> 10000
-ddmul1085 multiply  10000  10               -> 100000
-ddmul1086 multiply  10000  100              -> 1000000
-ddmul1087 multiply  10000  1000             -> 10000000
-ddmul1088 multiply  10000  10000            -> 100000000
-ddmul1089 multiply  10000  100000           -> 1000000000
-ddmul1090 multiply  10000  1000000          -> 10000000000
-ddmul1091 multiply  10000  10000000         -> 100000000000
-ddmul1092 multiply  10000  100000000        -> 1000000000000
-ddmul1093 multiply  10000  1000000000       -> 10000000000000
-ddmul1094 multiply  10000  10000000000      -> 100000000000000
-ddmul1095 multiply  10000  100000000000     -> 1000000000000000
-
-ddmul1097 multiply  10000   99999999999     ->  999999999990000
-ddmul1098 multiply  10000   99999999999     ->  999999999990000
-
-
--- Null tests
-ddmul9990 multiply 10  # -> NaN Invalid_operation
-ddmul9991 multiply  # 10 -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextMinus.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextMinus.decTest
deleted file mode 100644
index f8a3c0e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextMinus.decTest
+++ /dev/null
@@ -1,126 +0,0 @@
-------------------------------------------------------------------------
--- ddNextMinus.decTest -- decDouble next that is less [754r nextdown] --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
-ddnextm001 nextminus  0.9999999999999995 ->   0.9999999999999994
-ddnextm002 nextminus  0.9999999999999996 ->   0.9999999999999995
-ddnextm003 nextminus  0.9999999999999997 ->   0.9999999999999996
-ddnextm004 nextminus  0.9999999999999998 ->   0.9999999999999997
-ddnextm005 nextminus  0.9999999999999999 ->   0.9999999999999998
-ddnextm006 nextminus  1.000000000000000  ->   0.9999999999999999
-ddnextm007 nextminus  1.0         ->   0.9999999999999999
-ddnextm008 nextminus  1           ->   0.9999999999999999
-ddnextm009 nextminus  1.000000000000001  ->   1.000000000000000
-ddnextm010 nextminus  1.000000000000002  ->   1.000000000000001
-ddnextm011 nextminus  1.000000000000003  ->   1.000000000000002
-ddnextm012 nextminus  1.000000000000004  ->   1.000000000000003
-ddnextm013 nextminus  1.000000000000005  ->   1.000000000000004
-ddnextm014 nextminus  1.000000000000006  ->   1.000000000000005
-ddnextm015 nextminus  1.000000000000007  ->   1.000000000000006
-ddnextm016 nextminus  1.000000000000008  ->   1.000000000000007
-ddnextm017 nextminus  1.000000000000009  ->   1.000000000000008
-ddnextm018 nextminus  1.000000000000010  ->   1.000000000000009
-ddnextm019 nextminus  1.000000000000011  ->   1.000000000000010
-ddnextm020 nextminus  1.000000000000012  ->   1.000000000000011
-
-ddnextm021 nextminus -0.9999999999999995 ->  -0.9999999999999996
-ddnextm022 nextminus -0.9999999999999996 ->  -0.9999999999999997
-ddnextm023 nextminus -0.9999999999999997 ->  -0.9999999999999998
-ddnextm024 nextminus -0.9999999999999998 ->  -0.9999999999999999
-ddnextm025 nextminus -0.9999999999999999 ->  -1.000000000000000
-ddnextm026 nextminus -1.000000000000000  ->  -1.000000000000001
-ddnextm027 nextminus -1.0         ->  -1.000000000000001
-ddnextm028 nextminus -1           ->  -1.000000000000001
-ddnextm029 nextminus -1.000000000000001  ->  -1.000000000000002
-ddnextm030 nextminus -1.000000000000002  ->  -1.000000000000003
-ddnextm031 nextminus -1.000000000000003  ->  -1.000000000000004
-ddnextm032 nextminus -1.000000000000004  ->  -1.000000000000005
-ddnextm033 nextminus -1.000000000000005  ->  -1.000000000000006
-ddnextm034 nextminus -1.000000000000006  ->  -1.000000000000007
-ddnextm035 nextminus -1.000000000000007  ->  -1.000000000000008
-ddnextm036 nextminus -1.000000000000008  ->  -1.000000000000009
-ddnextm037 nextminus -1.000000000000009  ->  -1.000000000000010
-ddnextm038 nextminus -1.000000000000010  ->  -1.000000000000011
-ddnextm039 nextminus -1.000000000000011  ->  -1.000000000000012
-
--- ultra-tiny inputs
-ddnextm062 nextminus  1E-398         ->   0E-398
-ddnextm065 nextminus -1E-398         ->  -2E-398
-
--- Zeros
-ddnextm100 nextminus -0           -> -1E-398
-ddnextm101 nextminus  0           -> -1E-398
-ddnextm102 nextminus  0.00        -> -1E-398
-ddnextm103 nextminus -0.00        -> -1E-398
-ddnextm104 nextminus  0E-300      -> -1E-398
-ddnextm105 nextminus  0E+300      -> -1E-398
-ddnextm106 nextminus  0E+30000    -> -1E-398
-ddnextm107 nextminus -0E+30000    -> -1E-398
-
--- specials
-ddnextm150 nextminus   Inf    ->  9.999999999999999E+384
-ddnextm151 nextminus  -Inf    -> -Infinity
-ddnextm152 nextminus   NaN    ->  NaN
-ddnextm153 nextminus  sNaN    ->  NaN   Invalid_operation
-ddnextm154 nextminus   NaN77  ->  NaN77
-ddnextm155 nextminus  sNaN88  ->  NaN88 Invalid_operation
-ddnextm156 nextminus  -NaN    -> -NaN
-ddnextm157 nextminus -sNaN    -> -NaN   Invalid_operation
-ddnextm158 nextminus  -NaN77  -> -NaN77
-ddnextm159 nextminus -sNaN88  -> -NaN88 Invalid_operation
-
--- Nmax, Nmin, Ntiny, subnormals
-ddnextm170 nextminus  9.999999999999999E+384   -> 9.999999999999998E+384
-ddnextm171 nextminus  9.999999999999998E+384   -> 9.999999999999997E+384
-ddnextm172 nextminus  1E-383                   -> 9.99999999999999E-384
-ddnextm173 nextminus  1.000000000000000E-383   -> 9.99999999999999E-384
-ddnextm174 nextminus  9E-398                   -> 8E-398
-ddnextm175 nextminus  9.9E-397                 -> 9.8E-397
-ddnextm176 nextminus  9.99999999999E-387       -> 9.99999999998E-387
-ddnextm177 nextminus  9.99999999999999E-384    -> 9.99999999999998E-384
-ddnextm178 nextminus  9.99999999999998E-384    -> 9.99999999999997E-384
-ddnextm179 nextminus  9.99999999999997E-384    -> 9.99999999999996E-384
-ddnextm180 nextminus  0E-398                   -> -1E-398
-ddnextm181 nextminus  1E-398                   -> 0E-398
-ddnextm182 nextminus  2E-398                   -> 1E-398
-
-ddnextm183 nextminus  -0E-398                  -> -1E-398
-ddnextm184 nextminus  -1E-398                  -> -2E-398
-ddnextm185 nextminus  -2E-398                  -> -3E-398
-ddnextm186 nextminus  -10E-398                 -> -1.1E-397
-ddnextm187 nextminus  -100E-398                -> -1.01E-396
-ddnextm188 nextminus  -100000E-398             -> -1.00001E-393
-ddnextm189 nextminus  -1.00000000000E-383      -> -1.000000000000001E-383
-ddnextm190 nextminus  -1.000000000000000E-383  -> -1.000000000000001E-383
-ddnextm191 nextminus  -1E-383                  -> -1.000000000000001E-383
-ddnextm192 nextminus  -9.999999999999998E+384  -> -9.999999999999999E+384
-ddnextm193 nextminus  -9.999999999999999E+384  -> -Infinity
-
--- Null tests
-ddnextm900 nextminus  # -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextPlus.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextPlus.decTest
deleted file mode 100644
index 4a749a1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextPlus.decTest
+++ /dev/null
@@ -1,124 +0,0 @@
-------------------------------------------------------------------------
--- ddNextPlus.decTest -- decDouble next that is greater [754r nextup] --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
-ddnextp001 nextplus  0.9999999999999995 ->   0.9999999999999996
-ddnextp002 nextplus  0.9999999999999996 ->   0.9999999999999997
-ddnextp003 nextplus  0.9999999999999997 ->   0.9999999999999998
-ddnextp004 nextplus  0.9999999999999998 ->   0.9999999999999999
-ddnextp005 nextplus  0.9999999999999999 ->   1.000000000000000
-ddnextp006 nextplus  1.000000000000000  ->   1.000000000000001
-ddnextp007 nextplus  1.0         ->   1.000000000000001
-ddnextp008 nextplus  1           ->   1.000000000000001
-ddnextp009 nextplus  1.000000000000001  ->   1.000000000000002
-ddnextp010 nextplus  1.000000000000002  ->   1.000000000000003
-ddnextp011 nextplus  1.000000000000003  ->   1.000000000000004
-ddnextp012 nextplus  1.000000000000004  ->   1.000000000000005
-ddnextp013 nextplus  1.000000000000005  ->   1.000000000000006
-ddnextp014 nextplus  1.000000000000006  ->   1.000000000000007
-ddnextp015 nextplus  1.000000000000007  ->   1.000000000000008
-ddnextp016 nextplus  1.000000000000008  ->   1.000000000000009
-ddnextp017 nextplus  1.000000000000009  ->   1.000000000000010
-ddnextp018 nextplus  1.000000000000010  ->   1.000000000000011
-ddnextp019 nextplus  1.000000000000011  ->   1.000000000000012
-
-ddnextp021 nextplus -0.9999999999999995 ->  -0.9999999999999994
-ddnextp022 nextplus -0.9999999999999996 ->  -0.9999999999999995
-ddnextp023 nextplus -0.9999999999999997 ->  -0.9999999999999996
-ddnextp024 nextplus -0.9999999999999998 ->  -0.9999999999999997
-ddnextp025 nextplus -0.9999999999999999 ->  -0.9999999999999998
-ddnextp026 nextplus -1.000000000000000  ->  -0.9999999999999999
-ddnextp027 nextplus -1.0         ->  -0.9999999999999999
-ddnextp028 nextplus -1           ->  -0.9999999999999999
-ddnextp029 nextplus -1.000000000000001  ->  -1.000000000000000
-ddnextp030 nextplus -1.000000000000002  ->  -1.000000000000001
-ddnextp031 nextplus -1.000000000000003  ->  -1.000000000000002
-ddnextp032 nextplus -1.000000000000004  ->  -1.000000000000003
-ddnextp033 nextplus -1.000000000000005  ->  -1.000000000000004
-ddnextp034 nextplus -1.000000000000006  ->  -1.000000000000005
-ddnextp035 nextplus -1.000000000000007  ->  -1.000000000000006
-ddnextp036 nextplus -1.000000000000008  ->  -1.000000000000007
-ddnextp037 nextplus -1.000000000000009  ->  -1.000000000000008
-ddnextp038 nextplus -1.000000000000010  ->  -1.000000000000009
-ddnextp039 nextplus -1.000000000000011  ->  -1.000000000000010
-ddnextp040 nextplus -1.000000000000012  ->  -1.000000000000011
-
--- Zeros
-ddnextp100 nextplus  0           ->  1E-398
-ddnextp101 nextplus  0.00        ->  1E-398
-ddnextp102 nextplus  0E-300      ->  1E-398
-ddnextp103 nextplus  0E+300      ->  1E-398
-ddnextp104 nextplus  0E+30000    ->  1E-398
-ddnextp105 nextplus -0           ->  1E-398
-ddnextp106 nextplus -0.00        ->  1E-398
-ddnextp107 nextplus -0E-300      ->  1E-398
-ddnextp108 nextplus -0E+300      ->  1E-398
-ddnextp109 nextplus -0E+30000    ->  1E-398
-
--- specials
-ddnextp150 nextplus   Inf    ->  Infinity
-ddnextp151 nextplus  -Inf    -> -9.999999999999999E+384
-ddnextp152 nextplus   NaN    ->  NaN
-ddnextp153 nextplus  sNaN    ->  NaN   Invalid_operation
-ddnextp154 nextplus   NaN77  ->  NaN77
-ddnextp155 nextplus  sNaN88  ->  NaN88 Invalid_operation
-ddnextp156 nextplus  -NaN    -> -NaN
-ddnextp157 nextplus -sNaN    -> -NaN   Invalid_operation
-ddnextp158 nextplus  -NaN77  -> -NaN77
-ddnextp159 nextplus -sNaN88  -> -NaN88 Invalid_operation
-
--- Nmax, Nmin, Ntiny, subnormals
-ddnextp170 nextplus  -9.999999999999999E+384  -> -9.999999999999998E+384
-ddnextp171 nextplus  -9.999999999999998E+384  -> -9.999999999999997E+384
-ddnextp172 nextplus  -1E-383                  -> -9.99999999999999E-384
-ddnextp173 nextplus  -1.000000000000000E-383  -> -9.99999999999999E-384
-ddnextp174 nextplus  -9E-398                  -> -8E-398
-ddnextp175 nextplus  -9.9E-397                -> -9.8E-397
-ddnextp176 nextplus  -9.99999999999E-387      -> -9.99999999998E-387
-ddnextp177 nextplus  -9.99999999999999E-384   -> -9.99999999999998E-384
-ddnextp178 nextplus  -9.99999999999998E-384   -> -9.99999999999997E-384
-ddnextp179 nextplus  -9.99999999999997E-384   -> -9.99999999999996E-384
-ddnextp180 nextplus  -0E-398                  ->  1E-398
-ddnextp181 nextplus  -1E-398                  -> -0E-398
-ddnextp182 nextplus  -2E-398                  -> -1E-398
-
-ddnextp183 nextplus   0E-398                  ->  1E-398
-ddnextp184 nextplus   1E-398                  ->  2E-398
-ddnextp185 nextplus   2E-398                  ->  3E-398
-ddnextp186 nextplus   10E-398                 ->  1.1E-397
-ddnextp187 nextplus   100E-398                ->  1.01E-396
-ddnextp188 nextplus   100000E-398             ->  1.00001E-393
-ddnextp189 nextplus   1.00000000000E-383      ->  1.000000000000001E-383
-ddnextp190 nextplus   1.000000000000000E-383  ->  1.000000000000001E-383
-ddnextp191 nextplus   1E-383                  ->  1.000000000000001E-383
-ddnextp192 nextplus   9.999999999999998E+384  ->  9.999999999999999E+384
-ddnextp193 nextplus   9.999999999999999E+384  ->  Infinity
-
--- Null tests
-ddnextp900 nextplus  # -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextToward.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextToward.decTest
deleted file mode 100644
index 75386ad..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddNextToward.decTest
+++ /dev/null
@@ -1,374 +0,0 @@
-------------------------------------------------------------------------
--- ddNextToward.decTest -- decDouble next toward rhs [754r nextafter] --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Sanity check with a scattering of numerics
-ddnextt001 nexttoward   10    10   ->  10
-ddnextt002 nexttoward  -10   -10   -> -10
-ddnextt003 nexttoward   1     10   ->  1.000000000000001
-ddnextt004 nexttoward   1    -10   ->  0.9999999999999999
-ddnextt005 nexttoward  -1     10   -> -0.9999999999999999
-ddnextt006 nexttoward  -1    -10   -> -1.000000000000001
-ddnextt007 nexttoward   0     10   ->  1E-398       Underflow Subnormal Inexact Rounded
-ddnextt008 nexttoward   0    -10   -> -1E-398       Underflow Subnormal Inexact Rounded
-ddnextt009 nexttoward   9.999999999999999E+384 +Infinity ->  Infinity Overflow Inexact Rounded
-ddnextt010 nexttoward  -9.999999999999999E+384 -Infinity -> -Infinity Overflow Inexact Rounded
-ddnextt011 nexttoward       9.999999999999999  10  ->  10.00000000000000
-ddnextt012 nexttoward   10  9.999999999999999      ->  9.999999999999999
-ddnextt013 nexttoward      -9.999999999999999 -10  -> -10.00000000000000
-ddnextt014 nexttoward  -10 -9.999999999999999      -> -9.999999999999999
-ddnextt015 nexttoward       9.999999999999998  10  ->  9.999999999999999
-ddnextt016 nexttoward   10  9.999999999999998      ->  9.999999999999999
-ddnextt017 nexttoward      -9.999999999999998 -10  -> -9.999999999999999
-ddnextt018 nexttoward  -10 -9.999999999999998      -> -9.999999999999999
-
-------- lhs=rhs
--- finites
-ddnextt101 nexttoward          7       7 ->  7
-ddnextt102 nexttoward         -7      -7 -> -7
-ddnextt103 nexttoward         75      75 ->  75
-ddnextt104 nexttoward        -75     -75 -> -75
-ddnextt105 nexttoward       7.50     7.5 ->  7.50
-ddnextt106 nexttoward      -7.50   -7.50 -> -7.50
-ddnextt107 nexttoward       7.500 7.5000 ->  7.500
-ddnextt108 nexttoward      -7.500   -7.5 -> -7.500
-
--- zeros
-ddnextt111 nexttoward          0       0 ->  0
-ddnextt112 nexttoward         -0      -0 -> -0
-ddnextt113 nexttoward       0E+4       0 ->  0E+4
-ddnextt114 nexttoward      -0E+4      -0 -> -0E+4
-ddnextt115 nexttoward     0.00000000000   0.000000000000 ->  0E-11
-ddnextt116 nexttoward    -0.00000000000  -0.00           -> -0E-11
-ddnextt117 nexttoward      0E-141      0 ->  0E-141
-ddnextt118 nexttoward     -0E-141   -000 -> -0E-141
-
--- full coefficients, alternating bits
-ddnextt121 nexttoward   268268268    268268268 ->   268268268
-ddnextt122 nexttoward  -268268268   -268268268 ->  -268268268
-ddnextt123 nexttoward   134134134    134134134 ->   134134134
-ddnextt124 nexttoward  -134134134   -134134134 ->  -134134134
-
--- Nmax, Nmin, Ntiny
-ddnextt131 nexttoward  9.999999999999999E+384  9.999999999999999E+384   ->   9.999999999999999E+384
-ddnextt132 nexttoward  1E-383           1E-383            ->   1E-383
-ddnextt133 nexttoward  1.000000000000000E-383  1.000000000000000E-383   ->   1.000000000000000E-383
-ddnextt134 nexttoward  1E-398           1E-398            ->   1E-398
-
-ddnextt135 nexttoward  -1E-398          -1E-398           ->  -1E-398
-ddnextt136 nexttoward  -1.000000000000000E-383 -1.000000000000000E-383  ->  -1.000000000000000E-383
-ddnextt137 nexttoward  -1E-383          -1E-383           ->  -1E-383
-ddnextt138 nexttoward  -9.999999999999999E+384 -9.999999999999999E+384  ->  -9.999999999999999E+384
-
-------- lhs<rhs
-ddnextt201 nexttoward  0.9999999999999995 Infinity ->   0.9999999999999996
-ddnextt202 nexttoward  0.9999999999999996 Infinity ->   0.9999999999999997
-ddnextt203 nexttoward  0.9999999999999997 Infinity ->   0.9999999999999998
-ddnextt204 nexttoward  0.9999999999999998 Infinity ->   0.9999999999999999
-ddnextt205 nexttoward  0.9999999999999999 Infinity ->   1.000000000000000
-ddnextt206 nexttoward  1.000000000000000  Infinity ->   1.000000000000001
-ddnextt207 nexttoward  1.0         Infinity ->   1.000000000000001
-ddnextt208 nexttoward  1           Infinity ->   1.000000000000001
-ddnextt209 nexttoward  1.000000000000001  Infinity ->   1.000000000000002
-ddnextt210 nexttoward  1.000000000000002  Infinity ->   1.000000000000003
-ddnextt211 nexttoward  1.000000000000003  Infinity ->   1.000000000000004
-ddnextt212 nexttoward  1.000000000000004  Infinity ->   1.000000000000005
-ddnextt213 nexttoward  1.000000000000005  Infinity ->   1.000000000000006
-ddnextt214 nexttoward  1.000000000000006  Infinity ->   1.000000000000007
-ddnextt215 nexttoward  1.000000000000007  Infinity ->   1.000000000000008
-ddnextt216 nexttoward  1.000000000000008  Infinity ->   1.000000000000009
-ddnextt217 nexttoward  1.000000000000009  Infinity ->   1.000000000000010
-ddnextt218 nexttoward  1.000000000000010  Infinity ->   1.000000000000011
-ddnextt219 nexttoward  1.000000000000011  Infinity ->   1.000000000000012
-
-ddnextt221 nexttoward -0.9999999999999995 Infinity ->  -0.9999999999999994
-ddnextt222 nexttoward -0.9999999999999996 Infinity ->  -0.9999999999999995
-ddnextt223 nexttoward -0.9999999999999997 Infinity ->  -0.9999999999999996
-ddnextt224 nexttoward -0.9999999999999998 Infinity ->  -0.9999999999999997
-ddnextt225 nexttoward -0.9999999999999999 Infinity ->  -0.9999999999999998
-ddnextt226 nexttoward -1.000000000000000  Infinity ->  -0.9999999999999999
-ddnextt227 nexttoward -1.0         Infinity ->  -0.9999999999999999
-ddnextt228 nexttoward -1           Infinity ->  -0.9999999999999999
-ddnextt229 nexttoward -1.000000000000001  Infinity ->  -1.000000000000000
-ddnextt230 nexttoward -1.000000000000002  Infinity ->  -1.000000000000001
-ddnextt231 nexttoward -1.000000000000003  Infinity ->  -1.000000000000002
-ddnextt232 nexttoward -1.000000000000004  Infinity ->  -1.000000000000003
-ddnextt233 nexttoward -1.000000000000005  Infinity ->  -1.000000000000004
-ddnextt234 nexttoward -1.000000000000006  Infinity ->  -1.000000000000005
-ddnextt235 nexttoward -1.000000000000007  Infinity ->  -1.000000000000006
-ddnextt236 nexttoward -1.000000000000008  Infinity ->  -1.000000000000007
-ddnextt237 nexttoward -1.000000000000009  Infinity ->  -1.000000000000008
-ddnextt238 nexttoward -1.000000000000010  Infinity ->  -1.000000000000009
-ddnextt239 nexttoward -1.000000000000011  Infinity ->  -1.000000000000010
-ddnextt240 nexttoward -1.000000000000012  Infinity ->  -1.000000000000011
-
--- Zeros
-ddnextt300 nexttoward  0           Infinity ->  1E-398              Underflow Subnormal Inexact Rounded
-ddnextt301 nexttoward  0.00        Infinity ->  1E-398              Underflow Subnormal Inexact Rounded
-ddnextt302 nexttoward  0E-300      Infinity ->  1E-398              Underflow Subnormal Inexact Rounded
-ddnextt303 nexttoward  0E+300      Infinity ->  1E-398              Underflow Subnormal Inexact Rounded
-ddnextt304 nexttoward  0E+30000    Infinity ->  1E-398              Underflow Subnormal Inexact Rounded
-ddnextt305 nexttoward -0           Infinity ->  1E-398              Underflow Subnormal Inexact Rounded
-ddnextt306 nexttoward -0.00        Infinity ->  1E-398              Underflow Subnormal Inexact Rounded
-ddnextt307 nexttoward -0E-300      Infinity ->  1E-398              Underflow Subnormal Inexact Rounded
-ddnextt308 nexttoward -0E+300      Infinity ->  1E-398              Underflow Subnormal Inexact Rounded
-ddnextt309 nexttoward -0E+30000    Infinity ->  1E-398              Underflow Subnormal Inexact Rounded
-
--- specials
-ddnextt350 nexttoward   Inf    Infinity ->  Infinity
-ddnextt351 nexttoward  -Inf    Infinity -> -9.999999999999999E+384
-ddnextt352 nexttoward   NaN    Infinity ->  NaN
-ddnextt353 nexttoward  sNaN    Infinity ->  NaN   Invalid_operation
-ddnextt354 nexttoward   NaN77  Infinity ->  NaN77
-ddnextt355 nexttoward  sNaN88  Infinity ->  NaN88 Invalid_operation
-ddnextt356 nexttoward  -NaN    Infinity -> -NaN
-ddnextt357 nexttoward -sNaN    Infinity -> -NaN   Invalid_operation
-ddnextt358 nexttoward  -NaN77  Infinity -> -NaN77
-ddnextt359 nexttoward -sNaN88  Infinity -> -NaN88 Invalid_operation
-
--- Nmax, Nmin, Ntiny, subnormals
-ddnextt370 nexttoward  -9.999999999999999E+384  Infinity  -> -9.999999999999998E+384
-ddnextt371 nexttoward  -9.999999999999998E+384  Infinity  -> -9.999999999999997E+384
-ddnextt372 nexttoward  -1E-383                  Infinity  -> -9.99999999999999E-384  Underflow Subnormal Inexact Rounded
-ddnextt373 nexttoward  -1.000000000000000E-383  Infinity  -> -9.99999999999999E-384  Underflow Subnormal Inexact Rounded
-ddnextt374 nexttoward  -9E-398                  Infinity  -> -8E-398                 Underflow Subnormal Inexact Rounded
-ddnextt375 nexttoward  -9.9E-397                Infinity  -> -9.8E-397               Underflow Subnormal Inexact Rounded
-ddnextt376 nexttoward  -9.99999999999E-387      Infinity  -> -9.99999999998E-387     Underflow Subnormal Inexact Rounded
-ddnextt377 nexttoward  -9.99999999999999E-384   Infinity  -> -9.99999999999998E-384  Underflow Subnormal Inexact Rounded
-ddnextt378 nexttoward  -9.99999999999998E-384   Infinity  -> -9.99999999999997E-384  Underflow Subnormal Inexact Rounded
-ddnextt379 nexttoward  -9.99999999999997E-384   Infinity  -> -9.99999999999996E-384  Underflow Subnormal Inexact Rounded
-ddnextt380 nexttoward  -0E-398                  Infinity  ->  1E-398                 Underflow Subnormal Inexact Rounded
-ddnextt381 nexttoward  -1E-398                  Infinity  -> -0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddnextt382 nexttoward  -2E-398                  Infinity  -> -1E-398                 Underflow Subnormal Inexact Rounded
-
-ddnextt383 nexttoward   0E-398                  Infinity  ->  1E-398                 Underflow Subnormal Inexact Rounded
-ddnextt384 nexttoward   1E-398                  Infinity  ->  2E-398                 Underflow Subnormal Inexact Rounded
-ddnextt385 nexttoward   2E-398                  Infinity  ->  3E-398                 Underflow Subnormal Inexact Rounded
-ddnextt386 nexttoward   10E-398                 Infinity  ->  1.1E-397               Underflow Subnormal Inexact Rounded
-ddnextt387 nexttoward   100E-398                Infinity  ->  1.01E-396              Underflow Subnormal Inexact Rounded
-ddnextt388 nexttoward   100000E-398             Infinity  ->  1.00001E-393           Underflow Subnormal Inexact Rounded
-ddnextt389 nexttoward   1.00000000000E-383      Infinity  ->  1.000000000000001E-383
-ddnextt390 nexttoward   1.000000000000000E-383  Infinity  ->  1.000000000000001E-383
-ddnextt391 nexttoward   1E-383                  Infinity  ->  1.000000000000001E-383
-ddnextt392 nexttoward   9.999999999999997E+384  Infinity  ->  9.999999999999998E+384
-ddnextt393 nexttoward   9.999999999999998E+384  Infinity  ->  9.999999999999999E+384
-ddnextt394 nexttoward   9.999999999999999E+384  Infinity  ->  Infinity               Overflow Inexact Rounded
-
-------- lhs>rhs
-ddnextt401 nexttoward  0.9999999999999995  -Infinity ->   0.9999999999999994
-ddnextt402 nexttoward  0.9999999999999996  -Infinity ->   0.9999999999999995
-ddnextt403 nexttoward  0.9999999999999997  -Infinity ->   0.9999999999999996
-ddnextt404 nexttoward  0.9999999999999998  -Infinity ->   0.9999999999999997
-ddnextt405 nexttoward  0.9999999999999999  -Infinity ->   0.9999999999999998
-ddnextt406 nexttoward  1.000000000000000   -Infinity ->   0.9999999999999999
-ddnextt407 nexttoward  1.0          -Infinity ->   0.9999999999999999
-ddnextt408 nexttoward  1            -Infinity ->   0.9999999999999999
-ddnextt409 nexttoward  1.000000000000001   -Infinity ->   1.000000000000000
-ddnextt410 nexttoward  1.000000000000002   -Infinity ->   1.000000000000001
-ddnextt411 nexttoward  1.000000000000003   -Infinity ->   1.000000000000002
-ddnextt412 nexttoward  1.000000000000004   -Infinity ->   1.000000000000003
-ddnextt413 nexttoward  1.000000000000005   -Infinity ->   1.000000000000004
-ddnextt414 nexttoward  1.000000000000006   -Infinity ->   1.000000000000005
-ddnextt415 nexttoward  1.000000000000007   -Infinity ->   1.000000000000006
-ddnextt416 nexttoward  1.000000000000008   -Infinity ->   1.000000000000007
-ddnextt417 nexttoward  1.000000000000009   -Infinity ->   1.000000000000008
-ddnextt418 nexttoward  1.000000000000010   -Infinity ->   1.000000000000009
-ddnextt419 nexttoward  1.000000000000011   -Infinity ->   1.000000000000010
-ddnextt420 nexttoward  1.000000000000012   -Infinity ->   1.000000000000011
-
-ddnextt421 nexttoward -0.9999999999999995  -Infinity ->  -0.9999999999999996
-ddnextt422 nexttoward -0.9999999999999996  -Infinity ->  -0.9999999999999997
-ddnextt423 nexttoward -0.9999999999999997  -Infinity ->  -0.9999999999999998
-ddnextt424 nexttoward -0.9999999999999998  -Infinity ->  -0.9999999999999999
-ddnextt425 nexttoward -0.9999999999999999  -Infinity ->  -1.000000000000000
-ddnextt426 nexttoward -1.000000000000000   -Infinity ->  -1.000000000000001
-ddnextt427 nexttoward -1.0          -Infinity ->  -1.000000000000001
-ddnextt428 nexttoward -1            -Infinity ->  -1.000000000000001
-ddnextt429 nexttoward -1.000000000000001   -Infinity ->  -1.000000000000002
-ddnextt430 nexttoward -1.000000000000002   -Infinity ->  -1.000000000000003
-ddnextt431 nexttoward -1.000000000000003   -Infinity ->  -1.000000000000004
-ddnextt432 nexttoward -1.000000000000004   -Infinity ->  -1.000000000000005
-ddnextt433 nexttoward -1.000000000000005   -Infinity ->  -1.000000000000006
-ddnextt434 nexttoward -1.000000000000006   -Infinity ->  -1.000000000000007
-ddnextt435 nexttoward -1.000000000000007   -Infinity ->  -1.000000000000008
-ddnextt436 nexttoward -1.000000000000008   -Infinity ->  -1.000000000000009
-ddnextt437 nexttoward -1.000000000000009   -Infinity ->  -1.000000000000010
-ddnextt438 nexttoward -1.000000000000010   -Infinity ->  -1.000000000000011
-ddnextt439 nexttoward -1.000000000000011   -Infinity ->  -1.000000000000012
-
--- Zeros
-ddnextt500 nexttoward -0            -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded
-ddnextt501 nexttoward  0            -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded
-ddnextt502 nexttoward  0.00         -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded
-ddnextt503 nexttoward -0.00         -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded
-ddnextt504 nexttoward  0E-300       -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded
-ddnextt505 nexttoward  0E+300       -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded
-ddnextt506 nexttoward  0E+30000     -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded
-ddnextt507 nexttoward -0E+30000     -Infinity -> -1E-398         Underflow Subnormal Inexact Rounded
-
--- specials
-ddnextt550 nexttoward   Inf     -Infinity ->  9.999999999999999E+384
-ddnextt551 nexttoward  -Inf     -Infinity -> -Infinity
-ddnextt552 nexttoward   NaN     -Infinity ->  NaN
-ddnextt553 nexttoward  sNaN     -Infinity ->  NaN   Invalid_operation
-ddnextt554 nexttoward   NaN77   -Infinity ->  NaN77
-ddnextt555 nexttoward  sNaN88   -Infinity ->  NaN88 Invalid_operation
-ddnextt556 nexttoward  -NaN     -Infinity -> -NaN
-ddnextt557 nexttoward -sNaN     -Infinity -> -NaN   Invalid_operation
-ddnextt558 nexttoward  -NaN77   -Infinity -> -NaN77
-ddnextt559 nexttoward -sNaN88   -Infinity -> -NaN88 Invalid_operation
-
--- Nmax, Nmin, Ntiny, subnormals
-ddnextt670 nexttoward  9.999999999999999E+384   -Infinity  -> 9.999999999999998E+384
-ddnextt671 nexttoward  9.999999999999998E+384   -Infinity  -> 9.999999999999997E+384
-ddnextt672 nexttoward  1E-383                   -Infinity  -> 9.99999999999999E-384   Underflow Subnormal  Inexact Rounded
-ddnextt673 nexttoward  1.000000000000000E-383   -Infinity  -> 9.99999999999999E-384   Underflow Subnormal  Inexact Rounded
-ddnextt674 nexttoward  9E-398                   -Infinity  -> 8E-398                  Underflow Subnormal  Inexact Rounded
-ddnextt675 nexttoward  9.9E-397                 -Infinity  -> 9.8E-397                Underflow Subnormal  Inexact Rounded
-ddnextt676 nexttoward  9.99999999999E-387       -Infinity  -> 9.99999999998E-387      Underflow Subnormal  Inexact Rounded
-ddnextt677 nexttoward  9.99999999999999E-384    -Infinity  -> 9.99999999999998E-384   Underflow Subnormal  Inexact Rounded
-ddnextt678 nexttoward  9.99999999999998E-384    -Infinity  -> 9.99999999999997E-384   Underflow Subnormal  Inexact Rounded
-ddnextt679 nexttoward  9.99999999999997E-384    -Infinity  -> 9.99999999999996E-384   Underflow Subnormal  Inexact Rounded
-ddnextt680 nexttoward  0E-398                   -Infinity  -> -1E-398                 Underflow Subnormal  Inexact Rounded
-ddnextt681 nexttoward  1E-398                   -Infinity  -> 0E-398                  Underflow Subnormal  Inexact Rounded Clamped
-ddnextt682 nexttoward  2E-398                   -Infinity  -> 1E-398                  Underflow Subnormal  Inexact Rounded
-
-ddnextt683 nexttoward  -0E-398                  -Infinity  -> -1E-398                 Underflow Subnormal  Inexact Rounded
-ddnextt684 nexttoward  -1E-398                  -Infinity  -> -2E-398                 Underflow Subnormal  Inexact Rounded
-ddnextt685 nexttoward  -2E-398                  -Infinity  -> -3E-398                 Underflow Subnormal  Inexact Rounded
-ddnextt686 nexttoward  -10E-398                 -Infinity  -> -1.1E-397               Underflow Subnormal  Inexact Rounded
-ddnextt687 nexttoward  -100E-398                -Infinity  -> -1.01E-396              Underflow Subnormal  Inexact Rounded
-ddnextt688 nexttoward  -100000E-398             -Infinity  -> -1.00001E-393           Underflow Subnormal  Inexact Rounded
-ddnextt689 nexttoward  -1.00000000000E-383      -Infinity  -> -1.000000000000001E-383
-ddnextt690 nexttoward  -1.000000000000000E-383  -Infinity  -> -1.000000000000001E-383
-ddnextt691 nexttoward  -1E-383                  -Infinity  -> -1.000000000000001E-383
-ddnextt692 nexttoward  -9.999999999999998E+384  -Infinity  -> -9.999999999999999E+384
-ddnextt693 nexttoward  -9.999999999999999E+384  -Infinity  -> -Infinity               Overflow Inexact Rounded
-
-------- Specials
-ddnextt780 nexttoward -Inf  -Inf   -> -Infinity
-ddnextt781 nexttoward -Inf  -1000  -> -9.999999999999999E+384
-ddnextt782 nexttoward -Inf  -1     -> -9.999999999999999E+384
-ddnextt783 nexttoward -Inf  -0     -> -9.999999999999999E+384
-ddnextt784 nexttoward -Inf   0     -> -9.999999999999999E+384
-ddnextt785 nexttoward -Inf   1     -> -9.999999999999999E+384
-ddnextt786 nexttoward -Inf   1000  -> -9.999999999999999E+384
-ddnextt787 nexttoward -1000 -Inf   -> -1000.000000000001
-ddnextt788 nexttoward -Inf  -Inf   -> -Infinity
-ddnextt789 nexttoward -1    -Inf   -> -1.000000000000001
-ddnextt790 nexttoward -0    -Inf   -> -1E-398           Underflow Subnormal Inexact Rounded
-ddnextt791 nexttoward  0    -Inf   -> -1E-398           Underflow Subnormal Inexact Rounded
-ddnextt792 nexttoward  1    -Inf   ->  0.9999999999999999
-ddnextt793 nexttoward  1000 -Inf   ->  999.9999999999999
-ddnextt794 nexttoward  Inf  -Inf   ->  9.999999999999999E+384
-
-ddnextt800 nexttoward  Inf  -Inf   ->  9.999999999999999E+384
-ddnextt801 nexttoward  Inf  -1000  ->  9.999999999999999E+384
-ddnextt802 nexttoward  Inf  -1     ->  9.999999999999999E+384
-ddnextt803 nexttoward  Inf  -0     ->  9.999999999999999E+384
-ddnextt804 nexttoward  Inf   0     ->  9.999999999999999E+384
-ddnextt805 nexttoward  Inf   1     ->  9.999999999999999E+384
-ddnextt806 nexttoward  Inf   1000  ->  9.999999999999999E+384
-ddnextt807 nexttoward  Inf   Inf   ->  Infinity
-ddnextt808 nexttoward -1000  Inf   -> -999.9999999999999
-ddnextt809 nexttoward -Inf   Inf   -> -9.999999999999999E+384
-ddnextt810 nexttoward -1     Inf   -> -0.9999999999999999
-ddnextt811 nexttoward -0     Inf   ->  1E-398           Underflow Subnormal Inexact Rounded
-ddnextt812 nexttoward  0     Inf   ->  1E-398           Underflow Subnormal Inexact Rounded
-ddnextt813 nexttoward  1     Inf   ->  1.000000000000001
-ddnextt814 nexttoward  1000  Inf   ->  1000.000000000001
-ddnextt815 nexttoward  Inf   Inf   ->  Infinity
-
-ddnextt821 nexttoward  NaN -Inf    ->  NaN
-ddnextt822 nexttoward  NaN -1000   ->  NaN
-ddnextt823 nexttoward  NaN -1      ->  NaN
-ddnextt824 nexttoward  NaN -0      ->  NaN
-ddnextt825 nexttoward  NaN  0      ->  NaN
-ddnextt826 nexttoward  NaN  1      ->  NaN
-ddnextt827 nexttoward  NaN  1000   ->  NaN
-ddnextt828 nexttoward  NaN  Inf    ->  NaN
-ddnextt829 nexttoward  NaN  NaN    ->  NaN
-ddnextt830 nexttoward -Inf  NaN    ->  NaN
-ddnextt831 nexttoward -1000 NaN    ->  NaN
-ddnextt832 nexttoward -1    NaN    ->  NaN
-ddnextt833 nexttoward -0    NaN    ->  NaN
-ddnextt834 nexttoward  0    NaN    ->  NaN
-ddnextt835 nexttoward  1    NaN    ->  NaN
-ddnextt836 nexttoward  1000 NaN    ->  NaN
-ddnextt837 nexttoward  Inf  NaN    ->  NaN
-
-ddnextt841 nexttoward  sNaN -Inf   ->  NaN  Invalid_operation
-ddnextt842 nexttoward  sNaN -1000  ->  NaN  Invalid_operation
-ddnextt843 nexttoward  sNaN -1     ->  NaN  Invalid_operation
-ddnextt844 nexttoward  sNaN -0     ->  NaN  Invalid_operation
-ddnextt845 nexttoward  sNaN  0     ->  NaN  Invalid_operation
-ddnextt846 nexttoward  sNaN  1     ->  NaN  Invalid_operation
-ddnextt847 nexttoward  sNaN  1000  ->  NaN  Invalid_operation
-ddnextt848 nexttoward  sNaN  NaN   ->  NaN  Invalid_operation
-ddnextt849 nexttoward  sNaN sNaN   ->  NaN  Invalid_operation
-ddnextt850 nexttoward  NaN  sNaN   ->  NaN  Invalid_operation
-ddnextt851 nexttoward -Inf  sNaN   ->  NaN  Invalid_operation
-ddnextt852 nexttoward -1000 sNaN   ->  NaN  Invalid_operation
-ddnextt853 nexttoward -1    sNaN   ->  NaN  Invalid_operation
-ddnextt854 nexttoward -0    sNaN   ->  NaN  Invalid_operation
-ddnextt855 nexttoward  0    sNaN   ->  NaN  Invalid_operation
-ddnextt856 nexttoward  1    sNaN   ->  NaN  Invalid_operation
-ddnextt857 nexttoward  1000 sNaN   ->  NaN  Invalid_operation
-ddnextt858 nexttoward  Inf  sNaN   ->  NaN  Invalid_operation
-ddnextt859 nexttoward  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddnextt861 nexttoward  NaN1   -Inf    ->  NaN1
-ddnextt862 nexttoward +NaN2   -1000   ->  NaN2
-ddnextt863 nexttoward  NaN3    1000   ->  NaN3
-ddnextt864 nexttoward  NaN4    Inf    ->  NaN4
-ddnextt865 nexttoward  NaN5   +NaN6   ->  NaN5
-ddnextt866 nexttoward -Inf     NaN7   ->  NaN7
-ddnextt867 nexttoward -1000    NaN8   ->  NaN8
-ddnextt868 nexttoward  1000    NaN9   ->  NaN9
-ddnextt869 nexttoward  Inf    +NaN10  ->  NaN10
-ddnextt871 nexttoward  sNaN11  -Inf   ->  NaN11  Invalid_operation
-ddnextt872 nexttoward  sNaN12  -1000  ->  NaN12  Invalid_operation
-ddnextt873 nexttoward  sNaN13   1000  ->  NaN13  Invalid_operation
-ddnextt874 nexttoward  sNaN14   NaN17 ->  NaN14  Invalid_operation
-ddnextt875 nexttoward  sNaN15  sNaN18 ->  NaN15  Invalid_operation
-ddnextt876 nexttoward  NaN16   sNaN19 ->  NaN19  Invalid_operation
-ddnextt877 nexttoward -Inf    +sNaN20 ->  NaN20  Invalid_operation
-ddnextt878 nexttoward -1000    sNaN21 ->  NaN21  Invalid_operation
-ddnextt879 nexttoward  1000    sNaN22 ->  NaN22  Invalid_operation
-ddnextt880 nexttoward  Inf     sNaN23 ->  NaN23  Invalid_operation
-ddnextt881 nexttoward +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-ddnextt882 nexttoward -NaN26    NaN28 -> -NaN26
-ddnextt883 nexttoward -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-ddnextt884 nexttoward  1000    -NaN30 -> -NaN30
-ddnextt885 nexttoward  1000   -sNaN31 -> -NaN31  Invalid_operation
-
--- Null tests
-ddnextt900 nexttoward 1  # -> NaN Invalid_operation
-ddnextt901 nexttoward #  1 -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddOr.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddOr.decTest
deleted file mode 100644
index d36580b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddOr.decTest
+++ /dev/null
@@ -1,292 +0,0 @@
-------------------------------------------------------------------------
--- ddOr.decTest -- digitwise logical OR for decDoubles                --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Sanity check (truth table)
-ddor001 or             0    0 ->    0
-ddor002 or             0    1 ->    1
-ddor003 or             1    0 ->    1
-ddor004 or             1    1 ->    1
-ddor005 or          1100 1010 -> 1110
--- and at msd and msd-1
-ddor006 or 0000000000000000 0000000000000000 ->           0
-ddor007 or 0000000000000000 1000000000000000 ->   1000000000000000
-ddor008 or 1000000000000000 0000000000000000 ->   1000000000000000
-ddor009 or 1000000000000000 1000000000000000 ->   1000000000000000
-ddor010 or 0000000000000000 0000000000000000 ->           0
-ddor011 or 0000000000000000 0100000000000000 ->    100000000000000
-ddor012 or 0100000000000000 0000000000000000 ->    100000000000000
-ddor013 or 0100000000000000 0100000000000000 ->    100000000000000
-
--- Various lengths
---         1234567890123456     1234567890123456 1234567890123456
-ddor020 or 1111111111111111     1111111111111111  ->  1111111111111111
-ddor021 or  111111111111111      111111111111111  ->   111111111111111
-ddor022 or   11111111111111       11111111111111  ->    11111111111111
-ddor023 or    1111111111111        1111111111111  ->     1111111111111
-ddor024 or     111111111111         111111111111  ->      111111111111
-ddor025 or      11111111111          11111111111  ->       11111111111
-ddor026 or       1111111111           1111111111  ->        1111111111
-ddor027 or        111111111            111111111  ->         111111111
-ddor028 or         11111111             11111111  ->          11111111
-ddor029 or          1111111              1111111  ->           1111111
-ddor030 or           111111               111111  ->            111111
-ddor031 or            11111                11111  ->             11111
-ddor032 or             1111                 1111  ->              1111
-ddor033 or              111                  111  ->               111
-ddor034 or               11                   11  ->                11
-ddor035 or                1                    1  ->                 1
-ddor036 or                0                    0  ->                 0
-
-ddor042 or  111111110000000     1111111110000000  ->  1111111110000000
-ddor043 or   11111110000000     1000000100000000  ->  1011111110000000
-ddor044 or    1111110000000     1000001000000000  ->  1001111110000000
-ddor045 or     111110000000     1000010000000000  ->  1000111110000000
-ddor046 or      11110000000     1000100000000000  ->  1000111110000000
-ddor047 or       1110000000     1001000000000000  ->  1001001110000000
-ddor048 or        110000000     1010000000000000  ->  1010000110000000
-ddor049 or         10000000     1100000000000000  ->  1100000010000000
-
-ddor090 or 011111111  111101111  ->  111111111
-ddor091 or 101111111  111101111  ->  111111111
-ddor092 or 110111111  111101111  ->  111111111
-ddor093 or 111011111  111101111  ->  111111111
-ddor094 or 111101111  111101111  ->  111101111
-ddor095 or 111110111  111101111  ->  111111111
-ddor096 or 111111011  111101111  ->  111111111
-ddor097 or 111111101  111101111  ->  111111111
-ddor098 or 111111110  111101111  ->  111111111
-
-ddor100 or 111101111  011111111  ->  111111111
-ddor101 or 111101111  101111111  ->  111111111
-ddor102 or 111101111  110111111  ->  111111111
-ddor103 or 111101111  111011111  ->  111111111
-ddor104 or 111101111  111101111  ->  111101111
-ddor105 or 111101111  111110111  ->  111111111
-ddor106 or 111101111  111111011  ->  111111111
-ddor107 or 111101111  111111101  ->  111111111
-ddor108 or 111101111  111111110  ->  111111111
-
--- non-0/1 should not be accepted, nor should signs
-ddor220 or 111111112  111111111  ->  NaN Invalid_operation
-ddor221 or 333333333  333333333  ->  NaN Invalid_operation
-ddor222 or 555555555  555555555  ->  NaN Invalid_operation
-ddor223 or 777777777  777777777  ->  NaN Invalid_operation
-ddor224 or 999999999  999999999  ->  NaN Invalid_operation
-ddor225 or 222222222  999999999  ->  NaN Invalid_operation
-ddor226 or 444444444  999999999  ->  NaN Invalid_operation
-ddor227 or 666666666  999999999  ->  NaN Invalid_operation
-ddor228 or 888888888  999999999  ->  NaN Invalid_operation
-ddor229 or 999999999  222222222  ->  NaN Invalid_operation
-ddor230 or 999999999  444444444  ->  NaN Invalid_operation
-ddor231 or 999999999  666666666  ->  NaN Invalid_operation
-ddor232 or 999999999  888888888  ->  NaN Invalid_operation
--- a few randoms
-ddor240 or  567468689 -934981942 ->  NaN Invalid_operation
-ddor241 or  567367689  934981942 ->  NaN Invalid_operation
-ddor242 or -631917772 -706014634 ->  NaN Invalid_operation
-ddor243 or -756253257  138579234 ->  NaN Invalid_operation
-ddor244 or  835590149  567435400 ->  NaN Invalid_operation
--- test MSD
-ddor250 or  2000000000000000 1000000000000000 ->  NaN Invalid_operation
-ddor251 or  7000000000000000 1000000000000000 ->  NaN Invalid_operation
-ddor252 or  8000000000000000 1000000000000000 ->  NaN Invalid_operation
-ddor253 or  9000000000000000 1000000000000000 ->  NaN Invalid_operation
-ddor254 or  2000000000000000 0000000000000000 ->  NaN Invalid_operation
-ddor255 or  7000000000000000 0000000000000000 ->  NaN Invalid_operation
-ddor256 or  8000000000000000 0000000000000000 ->  NaN Invalid_operation
-ddor257 or  9000000000000000 0000000000000000 ->  NaN Invalid_operation
-ddor258 or  1000000000000000 2000000000000000 ->  NaN Invalid_operation
-ddor259 or  1000000000000000 7000000000000000 ->  NaN Invalid_operation
-ddor260 or  1000000000000000 8000000000000000 ->  NaN Invalid_operation
-ddor261 or  1000000000000000 9000000000000000 ->  NaN Invalid_operation
-ddor262 or  0000000000000000 2000000000000000 ->  NaN Invalid_operation
-ddor263 or  0000000000000000 7000000000000000 ->  NaN Invalid_operation
-ddor264 or  0000000000000000 8000000000000000 ->  NaN Invalid_operation
-ddor265 or  0000000000000000 9000000000000000 ->  NaN Invalid_operation
--- test MSD-1
-ddor270 or  0200001000000000 1000100000000010 ->  NaN Invalid_operation
-ddor271 or  0700000100000000 1000010000000100 ->  NaN Invalid_operation
-ddor272 or  0800000010000000 1000001000001000 ->  NaN Invalid_operation
-ddor273 or  0900000001000000 1000000100010000 ->  NaN Invalid_operation
-ddor274 or  1000000000100000 0200000010100000 ->  NaN Invalid_operation
-ddor275 or  1000000000010000 0700000001000000 ->  NaN Invalid_operation
-ddor276 or  1000000000001000 0800000010100000 ->  NaN Invalid_operation
-ddor277 or  1000000000000100 0900000000010000 ->  NaN Invalid_operation
--- test LSD
-ddor280 or  0010000000000002 1000000100000001 ->  NaN Invalid_operation
-ddor281 or  0001000000000007 1000001000000011 ->  NaN Invalid_operation
-ddor282 or  0000100000000008 1000010000000001 ->  NaN Invalid_operation
-ddor283 or  0000010000000009 1000100000000001 ->  NaN Invalid_operation
-ddor284 or  1000001000000000 0001000000000002 ->  NaN Invalid_operation
-ddor285 or  1000000100000000 0010000000000007 ->  NaN Invalid_operation
-ddor286 or  1000000010000000 0100000000000008 ->  NaN Invalid_operation
-ddor287 or  1000000001000000 1000000000000009 ->  NaN Invalid_operation
--- test Middie
-ddor288 or  0010000020000000 1000001000000000 ->  NaN Invalid_operation
-ddor289 or  0001000070000001 1000000100000000 ->  NaN Invalid_operation
-ddor290 or  0000100080000010 1000000010000000 ->  NaN Invalid_operation
-ddor291 or  0000010090000100 1000000001000000 ->  NaN Invalid_operation
-ddor292 or  1000001000001000 0000000020100000 ->  NaN Invalid_operation
-ddor293 or  1000000100010000 0000000070010000 ->  NaN Invalid_operation
-ddor294 or  1000000010100000 0000000080001000 ->  NaN Invalid_operation
-ddor295 or  1000000001000000 0000000090000100 ->  NaN Invalid_operation
--- signs
-ddor296 or -1000000001000000 -0000010000000100 ->  NaN Invalid_operation
-ddor297 or -1000000001000000  0000000010000100 ->  NaN Invalid_operation
-ddor298 or  1000000001000000 -0000001000000100 ->  NaN Invalid_operation
-ddor299 or  1000000001000000  0000000011000100 ->  1000000011000100
-
--- Nmax, Nmin, Ntiny-like
-ddor331 or  2   9.99999999E+199     -> NaN Invalid_operation
-ddor332 or  3   1E-199              -> NaN Invalid_operation
-ddor333 or  4   1.00000000E-199     -> NaN Invalid_operation
-ddor334 or  5   1E-100              -> NaN Invalid_operation
-ddor335 or  6   -1E-100             -> NaN Invalid_operation
-ddor336 or  7   -1.00000000E-199    -> NaN Invalid_operation
-ddor337 or  8   -1E-199             -> NaN Invalid_operation
-ddor338 or  9   -9.99999999E+199    -> NaN Invalid_operation
-ddor341 or  9.99999999E+299     -18 -> NaN Invalid_operation
-ddor342 or  1E-299               01 -> NaN Invalid_operation
-ddor343 or  1.00000000E-299     -18 -> NaN Invalid_operation
-ddor344 or  1E-100               18 -> NaN Invalid_operation
-ddor345 or  -1E-100             -10 -> NaN Invalid_operation
-ddor346 or  -1.00000000E-299     18 -> NaN Invalid_operation
-ddor347 or  -1E-299              10 -> NaN Invalid_operation
-ddor348 or  -9.99999999E+299    -18 -> NaN Invalid_operation
-
--- A few other non-integers
-ddor361 or  1.0                  1  -> NaN Invalid_operation
-ddor362 or  1E+1                 1  -> NaN Invalid_operation
-ddor363 or  0.0                  1  -> NaN Invalid_operation
-ddor364 or  0E+1                 1  -> NaN Invalid_operation
-ddor365 or  9.9                  1  -> NaN Invalid_operation
-ddor366 or  9E+1                 1  -> NaN Invalid_operation
-ddor371 or  0 1.0                   -> NaN Invalid_operation
-ddor372 or  0 1E+1                  -> NaN Invalid_operation
-ddor373 or  0 0.0                   -> NaN Invalid_operation
-ddor374 or  0 0E+1                  -> NaN Invalid_operation
-ddor375 or  0 9.9                   -> NaN Invalid_operation
-ddor376 or  0 9E+1                  -> NaN Invalid_operation
-
--- All Specials are in error
-ddor780 or -Inf  -Inf   -> NaN Invalid_operation
-ddor781 or -Inf  -1000  -> NaN Invalid_operation
-ddor782 or -Inf  -1     -> NaN Invalid_operation
-ddor783 or -Inf  -0     -> NaN Invalid_operation
-ddor784 or -Inf   0     -> NaN Invalid_operation
-ddor785 or -Inf   1     -> NaN Invalid_operation
-ddor786 or -Inf   1000  -> NaN Invalid_operation
-ddor787 or -1000 -Inf   -> NaN Invalid_operation
-ddor788 or -Inf  -Inf   -> NaN Invalid_operation
-ddor789 or -1    -Inf   -> NaN Invalid_operation
-ddor790 or -0    -Inf   -> NaN Invalid_operation
-ddor791 or  0    -Inf   -> NaN Invalid_operation
-ddor792 or  1    -Inf   -> NaN Invalid_operation
-ddor793 or  1000 -Inf   -> NaN Invalid_operation
-ddor794 or  Inf  -Inf   -> NaN Invalid_operation
-
-ddor800 or  Inf  -Inf   -> NaN Invalid_operation
-ddor801 or  Inf  -1000  -> NaN Invalid_operation
-ddor802 or  Inf  -1     -> NaN Invalid_operation
-ddor803 or  Inf  -0     -> NaN Invalid_operation
-ddor804 or  Inf   0     -> NaN Invalid_operation
-ddor805 or  Inf   1     -> NaN Invalid_operation
-ddor806 or  Inf   1000  -> NaN Invalid_operation
-ddor807 or  Inf   Inf   -> NaN Invalid_operation
-ddor808 or -1000  Inf   -> NaN Invalid_operation
-ddor809 or -Inf   Inf   -> NaN Invalid_operation
-ddor810 or -1     Inf   -> NaN Invalid_operation
-ddor811 or -0     Inf   -> NaN Invalid_operation
-ddor812 or  0     Inf   -> NaN Invalid_operation
-ddor813 or  1     Inf   -> NaN Invalid_operation
-ddor814 or  1000  Inf   -> NaN Invalid_operation
-ddor815 or  Inf   Inf   -> NaN Invalid_operation
-
-ddor821 or  NaN -Inf    -> NaN Invalid_operation
-ddor822 or  NaN -1000   -> NaN Invalid_operation
-ddor823 or  NaN -1      -> NaN Invalid_operation
-ddor824 or  NaN -0      -> NaN Invalid_operation
-ddor825 or  NaN  0      -> NaN Invalid_operation
-ddor826 or  NaN  1      -> NaN Invalid_operation
-ddor827 or  NaN  1000   -> NaN Invalid_operation
-ddor828 or  NaN  Inf    -> NaN Invalid_operation
-ddor829 or  NaN  NaN    -> NaN Invalid_operation
-ddor830 or -Inf  NaN    -> NaN Invalid_operation
-ddor831 or -1000 NaN    -> NaN Invalid_operation
-ddor832 or -1    NaN    -> NaN Invalid_operation
-ddor833 or -0    NaN    -> NaN Invalid_operation
-ddor834 or  0    NaN    -> NaN Invalid_operation
-ddor835 or  1    NaN    -> NaN Invalid_operation
-ddor836 or  1000 NaN    -> NaN Invalid_operation
-ddor837 or  Inf  NaN    -> NaN Invalid_operation
-
-ddor841 or  sNaN -Inf   ->  NaN  Invalid_operation
-ddor842 or  sNaN -1000  ->  NaN  Invalid_operation
-ddor843 or  sNaN -1     ->  NaN  Invalid_operation
-ddor844 or  sNaN -0     ->  NaN  Invalid_operation
-ddor845 or  sNaN  0     ->  NaN  Invalid_operation
-ddor846 or  sNaN  1     ->  NaN  Invalid_operation
-ddor847 or  sNaN  1000  ->  NaN  Invalid_operation
-ddor848 or  sNaN  NaN   ->  NaN  Invalid_operation
-ddor849 or  sNaN sNaN   ->  NaN  Invalid_operation
-ddor850 or  NaN  sNaN   ->  NaN  Invalid_operation
-ddor851 or -Inf  sNaN   ->  NaN  Invalid_operation
-ddor852 or -1000 sNaN   ->  NaN  Invalid_operation
-ddor853 or -1    sNaN   ->  NaN  Invalid_operation
-ddor854 or -0    sNaN   ->  NaN  Invalid_operation
-ddor855 or  0    sNaN   ->  NaN  Invalid_operation
-ddor856 or  1    sNaN   ->  NaN  Invalid_operation
-ddor857 or  1000 sNaN   ->  NaN  Invalid_operation
-ddor858 or  Inf  sNaN   ->  NaN  Invalid_operation
-ddor859 or  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddor861 or  NaN1   -Inf    -> NaN Invalid_operation
-ddor862 or +NaN2   -1000   -> NaN Invalid_operation
-ddor863 or  NaN3    1000   -> NaN Invalid_operation
-ddor864 or  NaN4    Inf    -> NaN Invalid_operation
-ddor865 or  NaN5   +NaN6   -> NaN Invalid_operation
-ddor866 or -Inf     NaN7   -> NaN Invalid_operation
-ddor867 or -1000    NaN8   -> NaN Invalid_operation
-ddor868 or  1000    NaN9   -> NaN Invalid_operation
-ddor869 or  Inf    +NaN10  -> NaN Invalid_operation
-ddor871 or  sNaN11  -Inf   -> NaN Invalid_operation
-ddor872 or  sNaN12  -1000  -> NaN Invalid_operation
-ddor873 or  sNaN13   1000  -> NaN Invalid_operation
-ddor874 or  sNaN14   NaN17 -> NaN Invalid_operation
-ddor875 or  sNaN15  sNaN18 -> NaN Invalid_operation
-ddor876 or  NaN16   sNaN19 -> NaN Invalid_operation
-ddor877 or -Inf    +sNaN20 -> NaN Invalid_operation
-ddor878 or -1000    sNaN21 -> NaN Invalid_operation
-ddor879 or  1000    sNaN22 -> NaN Invalid_operation
-ddor880 or  Inf     sNaN23 -> NaN Invalid_operation
-ddor881 or +NaN25  +sNaN24 -> NaN Invalid_operation
-ddor882 or -NaN26    NaN28 -> NaN Invalid_operation
-ddor883 or -sNaN27  sNaN29 -> NaN Invalid_operation
-ddor884 or  1000    -NaN30 -> NaN Invalid_operation
-ddor885 or  1000   -sNaN31 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddPlus.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddPlus.decTest
deleted file mode 100644
index 5191239..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddPlus.decTest
+++ /dev/null
@@ -1,88 +0,0 @@
-------------------------------------------------------------------------
--- ddPlus.decTest -- decDouble 0+x                                    --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Sanity check
-ddpls001 plus       +7.50  -> 7.50
-
--- Infinities
-ddpls011 plus  Infinity    -> Infinity
-ddpls012 plus  -Infinity   -> -Infinity
-
--- NaNs, 0 payload
-ddpls021 plus         NaN  -> NaN
-ddpls022 plus        -NaN  -> -NaN
-ddpls023 plus        sNaN  -> NaN  Invalid_operation
-ddpls024 plus       -sNaN  -> -NaN Invalid_operation
-
--- NaNs, non-0 payload
-ddpls031 plus       NaN13  -> NaN13
-ddpls032 plus      -NaN13  -> -NaN13
-ddpls033 plus      sNaN13  -> NaN13   Invalid_operation
-ddpls034 plus     -sNaN13  -> -NaN13  Invalid_operation
-ddpls035 plus       NaN70  -> NaN70
-ddpls036 plus      -NaN70  -> -NaN70
-ddpls037 plus      sNaN101 -> NaN101  Invalid_operation
-ddpls038 plus     -sNaN101 -> -NaN101 Invalid_operation
-
--- finites
-ddpls101 plus          7   -> 7
-ddpls102 plus         -7   -> -7
-ddpls103 plus         75   -> 75
-ddpls104 plus        -75   -> -75
-ddpls105 plus       7.50   -> 7.50
-ddpls106 plus      -7.50   -> -7.50
-ddpls107 plus       7.500  -> 7.500
-ddpls108 plus      -7.500  -> -7.500
-
--- zeros
-ddpls111 plus          0   -> 0
-ddpls112 plus         -0   -> 0
-ddpls113 plus       0E+4   -> 0E+4
-ddpls114 plus      -0E+4   -> 0E+4
-ddpls115 plus     0.0000   -> 0.0000
-ddpls116 plus    -0.0000   -> 0.0000
-ddpls117 plus      0E-141  -> 0E-141
-ddpls118 plus     -0E-141  -> 0E-141
-
--- full coefficients, alternating bits
-ddpls121 plus  2682682682682682         -> 2682682682682682
-ddpls122 plus  -2682682682682682        -> -2682682682682682
-ddpls123 plus  1341341341341341         -> 1341341341341341
-ddpls124 plus  -1341341341341341        -> -1341341341341341
-
--- Nmax, Nmin, Ntiny
-ddpls131 plus  9.999999999999999E+384   -> 9.999999999999999E+384
-ddpls132 plus  1E-383                   -> 1E-383
-ddpls133 plus  1.000000000000000E-383   -> 1.000000000000000E-383
-ddpls134 plus  1E-398                   -> 1E-398 Subnormal
-
-ddpls135 plus  -1E-398                  -> -1E-398 Subnormal
-ddpls136 plus  -1.000000000000000E-383  -> -1.000000000000000E-383
-ddpls137 plus  -1E-383                  -> -1E-383
-ddpls138 plus  -9.999999999999999E+384  -> -9.999999999999999E+384
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddQuantize.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddQuantize.decTest
deleted file mode 100644
index 9177620..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddQuantize.decTest
+++ /dev/null
@@ -1,833 +0,0 @@
-------------------------------------------------------------------------
--- ddQuantize.decTest -- decDouble quantize operation                 --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Most of the tests here assume a "regular pattern", where the
--- sign and coefficient are +1.
--- 2004.03.15 Underflow for quantize is suppressed
--- 2005.06.08 More extensive tests for 'does not fit'
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- sanity checks
-ddqua001 quantize 0       1e0   -> 0
-ddqua002 quantize 1       1e0   -> 1
-ddqua003 quantize 0.1    1e+2   -> 0E+2 Inexact Rounded
-ddqua005 quantize 0.1    1e+1   -> 0E+1 Inexact Rounded
-ddqua006 quantize 0.1     1e0   -> 0 Inexact Rounded
-ddqua007 quantize 0.1    1e-1   -> 0.1
-ddqua008 quantize 0.1    1e-2   -> 0.10
-ddqua009 quantize 0.1    1e-3   -> 0.100
-ddqua010 quantize 0.9    1e+2   -> 0E+2 Inexact Rounded
-ddqua011 quantize 0.9    1e+1   -> 0E+1 Inexact Rounded
-ddqua012 quantize 0.9    1e+0   -> 1 Inexact Rounded
-ddqua013 quantize 0.9    1e-1   -> 0.9
-ddqua014 quantize 0.9    1e-2   -> 0.90
-ddqua015 quantize 0.9    1e-3   -> 0.900
--- negatives
-ddqua021 quantize -0      1e0   -> -0
-ddqua022 quantize -1      1e0   -> -1
-ddqua023 quantize -0.1   1e+2   -> -0E+2 Inexact Rounded
-ddqua025 quantize -0.1   1e+1   -> -0E+1 Inexact Rounded
-ddqua026 quantize -0.1    1e0   -> -0 Inexact Rounded
-ddqua027 quantize -0.1   1e-1   -> -0.1
-ddqua028 quantize -0.1   1e-2   -> -0.10
-ddqua029 quantize -0.1   1e-3   -> -0.100
-ddqua030 quantize -0.9   1e+2   -> -0E+2 Inexact Rounded
-ddqua031 quantize -0.9   1e+1   -> -0E+1 Inexact Rounded
-ddqua032 quantize -0.9   1e+0   -> -1 Inexact Rounded
-ddqua033 quantize -0.9   1e-1   -> -0.9
-ddqua034 quantize -0.9   1e-2   -> -0.90
-ddqua035 quantize -0.9   1e-3   -> -0.900
-ddqua036 quantize -0.5   1e+2   -> -0E+2 Inexact Rounded
-ddqua037 quantize -0.5   1e+1   -> -0E+1 Inexact Rounded
-ddqua038 quantize -0.5   1e+0   -> -0 Inexact Rounded
-ddqua039 quantize -0.5   1e-1   -> -0.5
-ddqua040 quantize -0.5   1e-2   -> -0.50
-ddqua041 quantize -0.5   1e-3   -> -0.500
-ddqua042 quantize -0.9   1e+2   -> -0E+2 Inexact Rounded
-ddqua043 quantize -0.9   1e+1   -> -0E+1 Inexact Rounded
-ddqua044 quantize -0.9   1e+0   -> -1 Inexact Rounded
-ddqua045 quantize -0.9   1e-1   -> -0.9
-ddqua046 quantize -0.9   1e-2   -> -0.90
-ddqua047 quantize -0.9   1e-3   -> -0.900
-
--- examples from Specification
-ddqua060 quantize 2.17   0.001  -> 2.170
-ddqua061 quantize 2.17   0.01   -> 2.17
-ddqua062 quantize 2.17   0.1    -> 2.2 Inexact Rounded
-ddqua063 quantize 2.17   1e+0   -> 2 Inexact Rounded
-ddqua064 quantize 2.17   1e+1   -> 0E+1 Inexact Rounded
-ddqua065 quantize -Inf    Inf   -> -Infinity
-ddqua066 quantize 2       Inf   -> NaN Invalid_operation
-ddqua067 quantize -0.1    1     -> -0 Inexact Rounded
-ddqua068 quantize -0      1e+5     -> -0E+5
-ddqua069 quantize +123456789012345.6 1e-2 -> NaN Invalid_operation
-ddqua070 quantize -987654335236450.6 1e-2 -> NaN Invalid_operation
-ddqua071 quantize 217    1e-1   -> 217.0
-ddqua072 quantize 217    1e+0   -> 217
-ddqua073 quantize 217    1e+1   -> 2.2E+2 Inexact Rounded
-ddqua074 quantize 217    1e+2   -> 2E+2 Inexact Rounded
-
--- general tests ..
-ddqua089 quantize 12     1e+4   -> 0E+4 Inexact Rounded
-ddqua090 quantize 12     1e+3   -> 0E+3 Inexact Rounded
-ddqua091 quantize 12     1e+2   -> 0E+2 Inexact Rounded
-ddqua092 quantize 12     1e+1   -> 1E+1 Inexact Rounded
-ddqua093 quantize 1.2345 1e-2   -> 1.23 Inexact Rounded
-ddqua094 quantize 1.2355 1e-2   -> 1.24 Inexact Rounded
-ddqua095 quantize 1.2345 1e-6   -> 1.234500
-ddqua096 quantize 9.9999 1e-2   -> 10.00 Inexact Rounded
-ddqua097 quantize 0.0001 1e-2   -> 0.00 Inexact Rounded
-ddqua098 quantize 0.001  1e-2   -> 0.00 Inexact Rounded
-ddqua099 quantize 0.009  1e-2   -> 0.01 Inexact Rounded
-ddqua100 quantize 92     1e+2   -> 1E+2 Inexact Rounded
-
-ddqua101 quantize -1      1e0   ->  -1
-ddqua102 quantize -1     1e-1   ->  -1.0
-ddqua103 quantize -1     1e-2   ->  -1.00
-ddqua104 quantize  0      1e0   ->  0
-ddqua105 quantize  0     1e-1   ->  0.0
-ddqua106 quantize  0     1e-2   ->  0.00
-ddqua107 quantize  0.00   1e0   ->  0
-ddqua108 quantize  0     1e+1   ->  0E+1
-ddqua109 quantize  0     1e+2   ->  0E+2
-ddqua110 quantize +1      1e0   ->  1
-ddqua111 quantize +1     1e-1   ->  1.0
-ddqua112 quantize +1     1e-2   ->  1.00
-
-ddqua120 quantize   1.04  1e-3 ->  1.040
-ddqua121 quantize   1.04  1e-2 ->  1.04
-ddqua122 quantize   1.04  1e-1 ->  1.0 Inexact Rounded
-ddqua123 quantize   1.04   1e0 ->  1 Inexact Rounded
-ddqua124 quantize   1.05  1e-3 ->  1.050
-ddqua125 quantize   1.05  1e-2 ->  1.05
-ddqua126 quantize   1.05  1e-1 ->  1.0 Inexact Rounded
-ddqua131 quantize   1.05   1e0 ->  1 Inexact Rounded
-ddqua132 quantize   1.06  1e-3 ->  1.060
-ddqua133 quantize   1.06  1e-2 ->  1.06
-ddqua134 quantize   1.06  1e-1 ->  1.1 Inexact Rounded
-ddqua135 quantize   1.06   1e0 ->  1 Inexact Rounded
-
-ddqua140 quantize   -10    1e-2  ->  -10.00
-ddqua141 quantize   +1     1e-2  ->  1.00
-ddqua142 quantize   +10    1e-2  ->  10.00
-ddqua143 quantize   1E+17  1e-2  ->  NaN Invalid_operation
-ddqua144 quantize   1E-17  1e-2  ->  0.00 Inexact Rounded
-ddqua145 quantize   1E-3   1e-2  ->  0.00 Inexact Rounded
-ddqua146 quantize   1E-2   1e-2  ->  0.01
-ddqua147 quantize   1E-1   1e-2  ->  0.10
-ddqua148 quantize   0E-17  1e-2  ->  0.00
-
-ddqua150 quantize   1.0600 1e-5 ->  1.06000
-ddqua151 quantize   1.0600 1e-4 ->  1.0600
-ddqua152 quantize   1.0600 1e-3 ->  1.060 Rounded
-ddqua153 quantize   1.0600 1e-2 ->  1.06 Rounded
-ddqua154 quantize   1.0600 1e-1 ->  1.1 Inexact Rounded
-ddqua155 quantize   1.0600  1e0 ->  1 Inexact Rounded
-
--- a couple where rounding was different in base tests
-rounding:    half_up
-ddqua157 quantize -0.5   1e+0   -> -1 Inexact Rounded
-ddqua158 quantize   1.05  1e-1 ->  1.1 Inexact Rounded
-ddqua159 quantize   1.06   1e0 ->  1 Inexact Rounded
-rounding:    half_even
-
--- base tests with non-1 coefficients
-ddqua161 quantize 0      -9e0   -> 0
-ddqua162 quantize 1      -7e0   -> 1
-ddqua163 quantize 0.1   -1e+2   -> 0E+2 Inexact Rounded
-ddqua165 quantize 0.1    0e+1   -> 0E+1 Inexact Rounded
-ddqua166 quantize 0.1     2e0   -> 0 Inexact Rounded
-ddqua167 quantize 0.1    3e-1   -> 0.1
-ddqua168 quantize 0.1   44e-2   -> 0.10
-ddqua169 quantize 0.1  555e-3   -> 0.100
-ddqua170 quantize 0.9 6666e+2   -> 0E+2 Inexact Rounded
-ddqua171 quantize 0.9 -777e+1   -> 0E+1 Inexact Rounded
-ddqua172 quantize 0.9  -88e+0   -> 1 Inexact Rounded
-ddqua173 quantize 0.9   -9e-1   -> 0.9
-ddqua174 quantize 0.9    0e-2   -> 0.90
-ddqua175 quantize 0.9  1.1e-3   -> 0.9000
--- negatives
-ddqua181 quantize -0    1.1e0   -> -0.0
-ddqua182 quantize -1     -1e0   -> -1
-ddqua183 quantize -0.1  11e+2   -> -0E+2 Inexact Rounded
-ddqua185 quantize -0.1 111e+1   -> -0E+1 Inexact Rounded
-ddqua186 quantize -0.1   71e0   -> -0 Inexact Rounded
-ddqua187 quantize -0.1 -91e-1   -> -0.1
-ddqua188 quantize -0.1 -.1e-2   -> -0.100
-ddqua189 quantize -0.1  -1e-3   -> -0.100
-ddqua190 quantize -0.9   0e+2   -> -0E+2 Inexact Rounded
-ddqua191 quantize -0.9  -0e+1   -> -0E+1 Inexact Rounded
-ddqua192 quantize -0.9 -10e+0   -> -1 Inexact Rounded
-ddqua193 quantize -0.9 100e-1   -> -0.9
-ddqua194 quantize -0.9 999e-2   -> -0.90
-
--- +ve exponents ..
-ddqua201 quantize   -1   1e+0 ->  -1
-ddqua202 quantize   -1   1e+1 ->  -0E+1 Inexact Rounded
-ddqua203 quantize   -1   1e+2 ->  -0E+2 Inexact Rounded
-ddqua204 quantize    0   1e+0 ->  0
-ddqua205 quantize    0   1e+1 ->  0E+1
-ddqua206 quantize    0   1e+2 ->  0E+2
-ddqua207 quantize   +1   1e+0 ->  1
-ddqua208 quantize   +1   1e+1 ->  0E+1 Inexact Rounded
-ddqua209 quantize   +1   1e+2 ->  0E+2 Inexact Rounded
-
-ddqua220 quantize   1.04 1e+3 ->  0E+3 Inexact Rounded
-ddqua221 quantize   1.04 1e+2 ->  0E+2 Inexact Rounded
-ddqua222 quantize   1.04 1e+1 ->  0E+1 Inexact Rounded
-ddqua223 quantize   1.04 1e+0 ->  1 Inexact Rounded
-ddqua224 quantize   1.05 1e+3 ->  0E+3 Inexact Rounded
-ddqua225 quantize   1.05 1e+2 ->  0E+2 Inexact Rounded
-ddqua226 quantize   1.05 1e+1 ->  0E+1 Inexact Rounded
-ddqua227 quantize   1.05 1e+0 ->  1 Inexact Rounded
-ddqua228 quantize   1.05 1e+3 ->  0E+3 Inexact Rounded
-ddqua229 quantize   1.05 1e+2 ->  0E+2 Inexact Rounded
-ddqua230 quantize   1.05 1e+1 ->  0E+1 Inexact Rounded
-ddqua231 quantize   1.05 1e+0 ->  1 Inexact Rounded
-ddqua232 quantize   1.06 1e+3 ->  0E+3 Inexact Rounded
-ddqua233 quantize   1.06 1e+2 ->  0E+2 Inexact Rounded
-ddqua234 quantize   1.06 1e+1 ->  0E+1 Inexact Rounded
-ddqua235 quantize   1.06 1e+0 ->  1 Inexact Rounded
-
-ddqua240 quantize   -10   1e+1  ->  -1E+1 Rounded
-ddqua241 quantize   +1    1e+1  ->  0E+1 Inexact Rounded
-ddqua242 quantize   +10   1e+1  ->  1E+1 Rounded
-ddqua243 quantize   1E+1  1e+1  ->  1E+1          -- underneath this is E+1
-ddqua244 quantize   1E+2  1e+1  ->  1.0E+2        -- underneath this is E+1
-ddqua245 quantize   1E+3  1e+1  ->  1.00E+3       -- underneath this is E+1
-ddqua246 quantize   1E+4  1e+1  ->  1.000E+4      -- underneath this is E+1
-ddqua247 quantize   1E+5  1e+1  ->  1.0000E+5     -- underneath this is E+1
-ddqua248 quantize   1E+6  1e+1  ->  1.00000E+6    -- underneath this is E+1
-ddqua249 quantize   1E+7  1e+1  ->  1.000000E+7   -- underneath this is E+1
-ddqua250 quantize   1E+8  1e+1  ->  1.0000000E+8  -- underneath this is E+1
-ddqua251 quantize   1E+9  1e+1  ->  1.00000000E+9 -- underneath this is E+1
--- next one tries to add 9 zeros
-ddqua252 quantize   1E+17 1e+1  ->  NaN Invalid_operation
-ddqua253 quantize   1E-17 1e+1  ->  0E+1 Inexact Rounded
-ddqua254 quantize   1E-2  1e+1  ->  0E+1 Inexact Rounded
-ddqua255 quantize   0E-17 1e+1  ->  0E+1
-ddqua256 quantize  -0E-17 1e+1  -> -0E+1
-ddqua257 quantize  -0E-1  1e+1  -> -0E+1
-ddqua258 quantize  -0     1e+1  -> -0E+1
-ddqua259 quantize  -0E+1  1e+1  -> -0E+1
-
-ddqua260 quantize   -10   1e+2  ->  -0E+2 Inexact Rounded
-ddqua261 quantize   +1    1e+2  ->  0E+2 Inexact Rounded
-ddqua262 quantize   +10   1e+2  ->  0E+2 Inexact Rounded
-ddqua263 quantize   1E+1  1e+2  ->  0E+2 Inexact Rounded
-ddqua264 quantize   1E+2  1e+2  ->  1E+2
-ddqua265 quantize   1E+3  1e+2  ->  1.0E+3
-ddqua266 quantize   1E+4  1e+2  ->  1.00E+4
-ddqua267 quantize   1E+5  1e+2  ->  1.000E+5
-ddqua268 quantize   1E+6  1e+2  ->  1.0000E+6
-ddqua269 quantize   1E+7  1e+2  ->  1.00000E+7
-ddqua270 quantize   1E+8  1e+2  ->  1.000000E+8
-ddqua271 quantize   1E+9  1e+2  ->  1.0000000E+9
-ddqua272 quantize   1E+10 1e+2  ->  1.00000000E+10
-ddqua273 quantize   1E-10 1e+2  ->  0E+2 Inexact Rounded
-ddqua274 quantize   1E-2  1e+2  ->  0E+2 Inexact Rounded
-ddqua275 quantize   0E-10 1e+2  ->  0E+2
-
-ddqua280 quantize   -10   1e+3  ->  -0E+3 Inexact Rounded
-ddqua281 quantize   +1    1e+3  ->  0E+3 Inexact Rounded
-ddqua282 quantize   +10   1e+3  ->  0E+3 Inexact Rounded
-ddqua283 quantize   1E+1  1e+3  ->  0E+3 Inexact Rounded
-ddqua284 quantize   1E+2  1e+3  ->  0E+3 Inexact Rounded
-ddqua285 quantize   1E+3  1e+3  ->  1E+3
-ddqua286 quantize   1E+4  1e+3  ->  1.0E+4
-ddqua287 quantize   1E+5  1e+3  ->  1.00E+5
-ddqua288 quantize   1E+6  1e+3  ->  1.000E+6
-ddqua289 quantize   1E+7  1e+3  ->  1.0000E+7
-ddqua290 quantize   1E+8  1e+3  ->  1.00000E+8
-ddqua291 quantize   1E+9  1e+3  ->  1.000000E+9
-ddqua292 quantize   1E+10 1e+3  ->  1.0000000E+10
-ddqua293 quantize   1E-10 1e+3  ->  0E+3 Inexact Rounded
-ddqua294 quantize   1E-2  1e+3  ->  0E+3 Inexact Rounded
-ddqua295 quantize   0E-10 1e+3  ->  0E+3
-
--- round up from below [sign wrong in JIT compiler once]
-ddqua300 quantize   0.0078 1e-5 ->  0.00780
-ddqua301 quantize   0.0078 1e-4 ->  0.0078
-ddqua302 quantize   0.0078 1e-3 ->  0.008 Inexact Rounded
-ddqua303 quantize   0.0078 1e-2 ->  0.01 Inexact Rounded
-ddqua304 quantize   0.0078 1e-1 ->  0.0 Inexact Rounded
-ddqua305 quantize   0.0078  1e0 ->  0 Inexact Rounded
-ddqua306 quantize   0.0078 1e+1 ->  0E+1 Inexact Rounded
-ddqua307 quantize   0.0078 1e+2 ->  0E+2 Inexact Rounded
-
-ddqua310 quantize  -0.0078 1e-5 -> -0.00780
-ddqua311 quantize  -0.0078 1e-4 -> -0.0078
-ddqua312 quantize  -0.0078 1e-3 -> -0.008 Inexact Rounded
-ddqua313 quantize  -0.0078 1e-2 -> -0.01 Inexact Rounded
-ddqua314 quantize  -0.0078 1e-1 -> -0.0 Inexact Rounded
-ddqua315 quantize  -0.0078  1e0 -> -0 Inexact Rounded
-ddqua316 quantize  -0.0078 1e+1 -> -0E+1 Inexact Rounded
-ddqua317 quantize  -0.0078 1e+2 -> -0E+2 Inexact Rounded
-
-ddqua320 quantize   0.078 1e-5 ->  0.07800
-ddqua321 quantize   0.078 1e-4 ->  0.0780
-ddqua322 quantize   0.078 1e-3 ->  0.078
-ddqua323 quantize   0.078 1e-2 ->  0.08 Inexact Rounded
-ddqua324 quantize   0.078 1e-1 ->  0.1 Inexact Rounded
-ddqua325 quantize   0.078  1e0 ->  0 Inexact Rounded
-ddqua326 quantize   0.078 1e+1 ->  0E+1 Inexact Rounded
-ddqua327 quantize   0.078 1e+2 ->  0E+2 Inexact Rounded
-
-ddqua330 quantize  -0.078 1e-5 -> -0.07800
-ddqua331 quantize  -0.078 1e-4 -> -0.0780
-ddqua332 quantize  -0.078 1e-3 -> -0.078
-ddqua333 quantize  -0.078 1e-2 -> -0.08 Inexact Rounded
-ddqua334 quantize  -0.078 1e-1 -> -0.1 Inexact Rounded
-ddqua335 quantize  -0.078  1e0 -> -0 Inexact Rounded
-ddqua336 quantize  -0.078 1e+1 -> -0E+1 Inexact Rounded
-ddqua337 quantize  -0.078 1e+2 -> -0E+2 Inexact Rounded
-
-ddqua340 quantize   0.78 1e-5 ->  0.78000
-ddqua341 quantize   0.78 1e-4 ->  0.7800
-ddqua342 quantize   0.78 1e-3 ->  0.780
-ddqua343 quantize   0.78 1e-2 ->  0.78
-ddqua344 quantize   0.78 1e-1 ->  0.8 Inexact Rounded
-ddqua345 quantize   0.78  1e0 ->  1 Inexact Rounded
-ddqua346 quantize   0.78 1e+1 ->  0E+1 Inexact Rounded
-ddqua347 quantize   0.78 1e+2 ->  0E+2 Inexact Rounded
-
-ddqua350 quantize  -0.78 1e-5 -> -0.78000
-ddqua351 quantize  -0.78 1e-4 -> -0.7800
-ddqua352 quantize  -0.78 1e-3 -> -0.780
-ddqua353 quantize  -0.78 1e-2 -> -0.78
-ddqua354 quantize  -0.78 1e-1 -> -0.8 Inexact Rounded
-ddqua355 quantize  -0.78  1e0 -> -1 Inexact Rounded
-ddqua356 quantize  -0.78 1e+1 -> -0E+1 Inexact Rounded
-ddqua357 quantize  -0.78 1e+2 -> -0E+2 Inexact Rounded
-
-ddqua360 quantize   7.8 1e-5 ->  7.80000
-ddqua361 quantize   7.8 1e-4 ->  7.8000
-ddqua362 quantize   7.8 1e-3 ->  7.800
-ddqua363 quantize   7.8 1e-2 ->  7.80
-ddqua364 quantize   7.8 1e-1 ->  7.8
-ddqua365 quantize   7.8  1e0 ->  8 Inexact Rounded
-ddqua366 quantize   7.8 1e+1 ->  1E+1 Inexact Rounded
-ddqua367 quantize   7.8 1e+2 ->  0E+2 Inexact Rounded
-ddqua368 quantize   7.8 1e+3 ->  0E+3 Inexact Rounded
-
-ddqua370 quantize  -7.8 1e-5 -> -7.80000
-ddqua371 quantize  -7.8 1e-4 -> -7.8000
-ddqua372 quantize  -7.8 1e-3 -> -7.800
-ddqua373 quantize  -7.8 1e-2 -> -7.80
-ddqua374 quantize  -7.8 1e-1 -> -7.8
-ddqua375 quantize  -7.8  1e0 -> -8 Inexact Rounded
-ddqua376 quantize  -7.8 1e+1 -> -1E+1 Inexact Rounded
-ddqua377 quantize  -7.8 1e+2 -> -0E+2 Inexact Rounded
-ddqua378 quantize  -7.8 1e+3 -> -0E+3 Inexact Rounded
-
--- some individuals
-ddqua380 quantize   1234567352364.506 1e-2 -> 1234567352364.51 Inexact Rounded
-ddqua381 quantize   12345673523645.06 1e-2 -> 12345673523645.06
-ddqua382 quantize   123456735236450.6 1e-2 -> NaN Invalid_operation
-ddqua383 quantize   1234567352364506  1e-2 -> NaN Invalid_operation
-ddqua384 quantize  -1234567352364.506 1e-2 -> -1234567352364.51 Inexact Rounded
-ddqua385 quantize  -12345673523645.06 1e-2 -> -12345673523645.06
-ddqua386 quantize  -123456735236450.6 1e-2 -> NaN Invalid_operation
-ddqua387 quantize  -1234567352364506  1e-2 -> NaN Invalid_operation
-
-rounding: down
-ddqua389 quantize   123456735236450.6 1e-2 -> NaN Invalid_operation
--- ? should that one instead have been:
--- ddqua389 quantize   123456735236450.6 1e-2 -> NaN Invalid_operation
-rounding: half_up
-
--- and a few more from e-mail discussions
-ddqua391 quantize  12345678912.34567  1e-3 -> 12345678912.346   Inexact Rounded
-ddqua392 quantize  123456789123.4567  1e-3 -> 123456789123.457  Inexact Rounded
-ddqua393 quantize  1234567891234.567  1e-3 -> 1234567891234.567
-ddqua394 quantize  12345678912345.67  1e-3 -> NaN Invalid_operation
-ddqua395 quantize  123456789123456.7  1e-3 -> NaN Invalid_operation
-ddqua396 quantize  1234567891234567.  1e-3 -> NaN Invalid_operation
-
--- some 9999 round-up cases
-ddqua400 quantize   9.999        1e-5  ->  9.99900
-ddqua401 quantize   9.999        1e-4  ->  9.9990
-ddqua402 quantize   9.999        1e-3  ->  9.999
-ddqua403 quantize   9.999        1e-2  -> 10.00     Inexact Rounded
-ddqua404 quantize   9.999        1e-1  -> 10.0      Inexact Rounded
-ddqua405 quantize   9.999         1e0  -> 10        Inexact Rounded
-ddqua406 quantize   9.999         1e1  -> 1E+1      Inexact Rounded
-ddqua407 quantize   9.999         1e2  -> 0E+2      Inexact Rounded
-
-ddqua410 quantize   0.999        1e-5  ->  0.99900
-ddqua411 quantize   0.999        1e-4  ->  0.9990
-ddqua412 quantize   0.999        1e-3  ->  0.999
-ddqua413 quantize   0.999        1e-2  ->  1.00     Inexact Rounded
-ddqua414 quantize   0.999        1e-1  ->  1.0      Inexact Rounded
-ddqua415 quantize   0.999         1e0  ->  1        Inexact Rounded
-ddqua416 quantize   0.999         1e1  -> 0E+1      Inexact Rounded
-
-ddqua420 quantize   0.0999       1e-5  ->  0.09990
-ddqua421 quantize   0.0999       1e-4  ->  0.0999
-ddqua422 quantize   0.0999       1e-3  ->  0.100    Inexact Rounded
-ddqua423 quantize   0.0999       1e-2  ->  0.10     Inexact Rounded
-ddqua424 quantize   0.0999       1e-1  ->  0.1      Inexact Rounded
-ddqua425 quantize   0.0999        1e0  ->  0        Inexact Rounded
-ddqua426 quantize   0.0999        1e1  -> 0E+1      Inexact Rounded
-
-ddqua430 quantize   0.00999      1e-5  ->  0.00999
-ddqua431 quantize   0.00999      1e-4  ->  0.0100   Inexact Rounded
-ddqua432 quantize   0.00999      1e-3  ->  0.010    Inexact Rounded
-ddqua433 quantize   0.00999      1e-2  ->  0.01     Inexact Rounded
-ddqua434 quantize   0.00999      1e-1  ->  0.0      Inexact Rounded
-ddqua435 quantize   0.00999       1e0  ->  0        Inexact Rounded
-ddqua436 quantize   0.00999       1e1  -> 0E+1      Inexact Rounded
-
-ddqua440 quantize   0.000999     1e-5  ->  0.00100  Inexact Rounded
-ddqua441 quantize   0.000999     1e-4  ->  0.0010   Inexact Rounded
-ddqua442 quantize   0.000999     1e-3  ->  0.001    Inexact Rounded
-ddqua443 quantize   0.000999     1e-2  ->  0.00     Inexact Rounded
-ddqua444 quantize   0.000999     1e-1  ->  0.0      Inexact Rounded
-ddqua445 quantize   0.000999      1e0  ->  0        Inexact Rounded
-ddqua446 quantize   0.000999      1e1  -> 0E+1      Inexact Rounded
-
-ddqua1001 quantize  0.000        0.001 ->  0.000
-ddqua1002 quantize  0.001        0.001 ->  0.001
-ddqua1003 quantize  0.0012       0.001 ->  0.001     Inexact Rounded
-ddqua1004 quantize  0.0018       0.001 ->  0.002     Inexact Rounded
-ddqua1005 quantize  0.501        0.001 ->  0.501
-ddqua1006 quantize  0.5012       0.001 ->  0.501     Inexact Rounded
-ddqua1007 quantize  0.5018       0.001 ->  0.502     Inexact Rounded
-ddqua1008 quantize  0.999        0.001 ->  0.999
-
-ddqua481 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded
-ddqua482 quantize 1234567800  1e+1 -> 1.23456780E+9 Rounded
-ddqua483 quantize 1234567890  1e+1 -> 1.23456789E+9 Rounded
-ddqua484 quantize 1234567891  1e+1 -> 1.23456789E+9 Inexact Rounded
-ddqua485 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded
-ddqua486 quantize 1234567896  1e+1 -> 1.23456790E+9 Inexact Rounded
--- a potential double-round
-ddqua487 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded
-ddqua488 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded
-
-ddqua491 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded
-ddqua492 quantize 1234567800  1e+1 -> 1.23456780E+9 Rounded
-ddqua493 quantize 1234567890  1e+1 -> 1.23456789E+9 Rounded
-ddqua494 quantize 1234567891  1e+1 -> 1.23456789E+9 Inexact Rounded
-ddqua495 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded
-ddqua496 quantize 1234567896  1e+1 -> 1.23456790E+9 Inexact Rounded
-ddqua497 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded
-ddqua498 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded
-
--- Zeros
-ddqua500 quantize   0     1e1 ->  0E+1
-ddqua501 quantize   0     1e0 ->  0
-ddqua502 quantize   0    1e-1 ->  0.0
-ddqua503 quantize   0.0  1e-1 ->  0.0
-ddqua504 quantize   0.0   1e0 ->  0
-ddqua505 quantize   0.0  1e+1 ->  0E+1
-ddqua506 quantize   0E+1 1e-1 ->  0.0
-ddqua507 quantize   0E+1  1e0 ->  0
-ddqua508 quantize   0E+1 1e+1 ->  0E+1
-ddqua509 quantize  -0     1e1 -> -0E+1
-ddqua510 quantize  -0     1e0 -> -0
-ddqua511 quantize  -0    1e-1 -> -0.0
-ddqua512 quantize  -0.0  1e-1 -> -0.0
-ddqua513 quantize  -0.0   1e0 -> -0
-ddqua514 quantize  -0.0  1e+1 -> -0E+1
-ddqua515 quantize  -0E+1 1e-1 -> -0.0
-ddqua516 quantize  -0E+1  1e0 -> -0
-ddqua517 quantize  -0E+1 1e+1 -> -0E+1
-
--- Suspicious RHS values
-ddqua520 quantize   1.234    1e359 -> 0E+359 Inexact Rounded
-ddqua521 quantize 123.456    1e359 -> 0E+359 Inexact Rounded
-ddqua522 quantize   1.234    1e359 -> 0E+359 Inexact Rounded
-ddqua523 quantize 123.456    1e359 -> 0E+359 Inexact Rounded
--- next four are "won't fit" overfl
-ddqua526 quantize   1.234   1e-299 -> NaN Invalid_operation
-ddqua527 quantize 123.456   1e-299 -> NaN Invalid_operation
-ddqua528 quantize   1.234   1e-299 -> NaN Invalid_operation
-ddqua529 quantize 123.456   1e-299 -> NaN Invalid_operation
-
-ddqua532 quantize   1.234E+299    1e299 -> 1E+299    Inexact Rounded
-ddqua533 quantize   1.234E+298    1e299 -> 0E+299    Inexact Rounded
-ddqua534 quantize   1.234         1e299 -> 0E+299    Inexact Rounded
-ddqua537 quantize   0            1e-299 -> 0E-299
--- next two are "won't fit" overflows
-ddqua538 quantize   1.234        1e-299 -> NaN Invalid_operation
-ddqua539 quantize   1.234        1e-300 -> NaN Invalid_operation
--- [more below]
-
--- Specials
-ddqua580 quantize  Inf    -Inf   ->  Infinity
-ddqua581 quantize  Inf  1e-299   ->  NaN  Invalid_operation
-ddqua582 quantize  Inf  1e-1     ->  NaN  Invalid_operation
-ddqua583 quantize  Inf   1e0     ->  NaN  Invalid_operation
-ddqua584 quantize  Inf   1e1     ->  NaN  Invalid_operation
-ddqua585 quantize  Inf   1e299   ->  NaN  Invalid_operation
-ddqua586 quantize  Inf     Inf   ->  Infinity
-ddqua587 quantize -1000    Inf   ->  NaN  Invalid_operation
-ddqua588 quantize -Inf     Inf   ->  -Infinity
-ddqua589 quantize -1       Inf   ->  NaN  Invalid_operation
-ddqua590 quantize  0       Inf   ->  NaN  Invalid_operation
-ddqua591 quantize  1       Inf   ->  NaN  Invalid_operation
-ddqua592 quantize  1000    Inf   ->  NaN  Invalid_operation
-ddqua593 quantize  Inf     Inf   ->  Infinity
-ddqua594 quantize  Inf  1e-0     ->  NaN  Invalid_operation
-ddqua595 quantize -0       Inf   ->  NaN  Invalid_operation
-
-ddqua600 quantize -Inf    -Inf   ->  -Infinity
-ddqua601 quantize -Inf  1e-299   ->  NaN  Invalid_operation
-ddqua602 quantize -Inf  1e-1     ->  NaN  Invalid_operation
-ddqua603 quantize -Inf   1e0     ->  NaN  Invalid_operation
-ddqua604 quantize -Inf   1e1     ->  NaN  Invalid_operation
-ddqua605 quantize -Inf   1e299   ->  NaN  Invalid_operation
-ddqua606 quantize -Inf     Inf   ->  -Infinity
-ddqua607 quantize -1000    Inf   ->  NaN  Invalid_operation
-ddqua608 quantize -Inf    -Inf   ->  -Infinity
-ddqua609 quantize -1      -Inf   ->  NaN  Invalid_operation
-ddqua610 quantize  0      -Inf   ->  NaN  Invalid_operation
-ddqua611 quantize  1      -Inf   ->  NaN  Invalid_operation
-ddqua612 quantize  1000   -Inf   ->  NaN  Invalid_operation
-ddqua613 quantize  Inf    -Inf   ->  Infinity
-ddqua614 quantize -Inf  1e-0     ->  NaN  Invalid_operation
-ddqua615 quantize -0      -Inf   ->  NaN  Invalid_operation
-
-ddqua621 quantize  NaN   -Inf    ->  NaN
-ddqua622 quantize  NaN 1e-299    ->  NaN
-ddqua623 quantize  NaN 1e-1      ->  NaN
-ddqua624 quantize  NaN  1e0      ->  NaN
-ddqua625 quantize  NaN  1e1      ->  NaN
-ddqua626 quantize  NaN  1e299    ->  NaN
-ddqua627 quantize  NaN    Inf    ->  NaN
-ddqua628 quantize  NaN    NaN    ->  NaN
-ddqua629 quantize -Inf    NaN    ->  NaN
-ddqua630 quantize -1000   NaN    ->  NaN
-ddqua631 quantize -1      NaN    ->  NaN
-ddqua632 quantize  0      NaN    ->  NaN
-ddqua633 quantize  1      NaN    ->  NaN
-ddqua634 quantize  1000   NaN    ->  NaN
-ddqua635 quantize  Inf    NaN    ->  NaN
-ddqua636 quantize  NaN 1e-0      ->  NaN
-ddqua637 quantize -0      NaN    ->  NaN
-
-ddqua641 quantize  sNaN   -Inf   ->  NaN  Invalid_operation
-ddqua642 quantize  sNaN 1e-299   ->  NaN  Invalid_operation
-ddqua643 quantize  sNaN 1e-1     ->  NaN  Invalid_operation
-ddqua644 quantize  sNaN  1e0     ->  NaN  Invalid_operation
-ddqua645 quantize  sNaN  1e1     ->  NaN  Invalid_operation
-ddqua646 quantize  sNaN  1e299   ->  NaN  Invalid_operation
-ddqua647 quantize  sNaN    NaN   ->  NaN  Invalid_operation
-ddqua648 quantize  sNaN   sNaN   ->  NaN  Invalid_operation
-ddqua649 quantize  NaN    sNaN   ->  NaN  Invalid_operation
-ddqua650 quantize -Inf    sNaN   ->  NaN  Invalid_operation
-ddqua651 quantize -1000   sNaN   ->  NaN  Invalid_operation
-ddqua652 quantize -1      sNaN   ->  NaN  Invalid_operation
-ddqua653 quantize  0      sNaN   ->  NaN  Invalid_operation
-ddqua654 quantize  1      sNaN   ->  NaN  Invalid_operation
-ddqua655 quantize  1000   sNaN   ->  NaN  Invalid_operation
-ddqua656 quantize  Inf    sNaN   ->  NaN  Invalid_operation
-ddqua657 quantize  NaN    sNaN   ->  NaN  Invalid_operation
-ddqua658 quantize  sNaN 1e-0     ->  NaN  Invalid_operation
-ddqua659 quantize -0      sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddqua661 quantize  NaN9 -Inf   ->  NaN9
-ddqua662 quantize  NaN8  919   ->  NaN8
-ddqua663 quantize  NaN71 Inf   ->  NaN71
-ddqua664 quantize  NaN6  NaN5  ->  NaN6
-ddqua665 quantize -Inf   NaN4  ->  NaN4
-ddqua666 quantize -919   NaN31 ->  NaN31
-ddqua667 quantize  Inf   NaN2  ->  NaN2
-
-ddqua671 quantize  sNaN99 -Inf    ->  NaN99 Invalid_operation
-ddqua672 quantize  sNaN98 -11     ->  NaN98 Invalid_operation
-ddqua673 quantize  sNaN97  NaN    ->  NaN97 Invalid_operation
-ddqua674 quantize  sNaN16 sNaN94  ->  NaN16 Invalid_operation
-ddqua675 quantize  NaN95  sNaN93  ->  NaN93 Invalid_operation
-ddqua676 quantize -Inf    sNaN92  ->  NaN92 Invalid_operation
-ddqua677 quantize  088    sNaN91  ->  NaN91 Invalid_operation
-ddqua678 quantize  Inf    sNaN90  ->  NaN90 Invalid_operation
-ddqua679 quantize  NaN    sNaN88  ->  NaN88 Invalid_operation
-
-ddqua681 quantize -NaN9 -Inf   -> -NaN9
-ddqua682 quantize -NaN8  919   -> -NaN8
-ddqua683 quantize -NaN71 Inf   -> -NaN71
-ddqua684 quantize -NaN6 -NaN5  -> -NaN6
-ddqua685 quantize -Inf  -NaN4  -> -NaN4
-ddqua686 quantize -919  -NaN31 -> -NaN31
-ddqua687 quantize  Inf  -NaN2  -> -NaN2
-
-ddqua691 quantize -sNaN99 -Inf    -> -NaN99 Invalid_operation
-ddqua692 quantize -sNaN98 -11     -> -NaN98 Invalid_operation
-ddqua693 quantize -sNaN97  NaN    -> -NaN97 Invalid_operation
-ddqua694 quantize -sNaN16 sNaN94  -> -NaN16 Invalid_operation
-ddqua695 quantize -NaN95 -sNaN93  -> -NaN93 Invalid_operation
-ddqua696 quantize -Inf   -sNaN92  -> -NaN92 Invalid_operation
-ddqua697 quantize  088   -sNaN91  -> -NaN91 Invalid_operation
-ddqua698 quantize  Inf   -sNaN90  -> -NaN90 Invalid_operation
-ddqua699 quantize  NaN   -sNaN88  -> -NaN88 Invalid_operation
-
--- subnormals and underflow
-ddqua710 quantize  1.00E-383    1e-383  ->   1E-383    Rounded
-ddqua711 quantize  0.1E-383    2e-384  ->   1E-384   Subnormal
-ddqua712 quantize  0.10E-383   3e-384  ->   1E-384   Subnormal Rounded
-ddqua713 quantize  0.100E-383  4e-384  ->   1E-384   Subnormal Rounded
-ddqua714 quantize  0.01E-383   5e-385  ->   1E-385   Subnormal
--- next is rounded to Emin
-ddqua715 quantize  0.999E-383   1e-383  ->   1E-383    Inexact Rounded
-ddqua716 quantize  0.099E-383 10e-384  ->   1E-384   Inexact Rounded Subnormal
-
-ddqua717 quantize  0.009E-383  1e-385  ->   1E-385   Inexact Rounded Subnormal
-ddqua718 quantize  0.001E-383  1e-385  ->   0E-385   Inexact Rounded
-ddqua719 quantize  0.0009E-383 1e-385  ->   0E-385   Inexact Rounded
-ddqua720 quantize  0.0001E-383 1e-385  ->   0E-385   Inexact Rounded
-
-ddqua730 quantize -1.00E-383   1e-383  ->  -1E-383     Rounded
-ddqua731 quantize -0.1E-383    1e-383  ->  -0E-383     Rounded Inexact
-ddqua732 quantize -0.10E-383   1e-383  ->  -0E-383     Rounded Inexact
-ddqua733 quantize -0.100E-383  1e-383  ->  -0E-383     Rounded Inexact
-ddqua734 quantize -0.01E-383   1e-383  ->  -0E-383     Inexact Rounded
--- next is rounded to Emin
-ddqua735 quantize -0.999E-383 90e-383  ->  -1E-383     Inexact Rounded
-ddqua736 quantize -0.099E-383 -1e-383  ->  -0E-383     Inexact Rounded
-ddqua737 quantize -0.009E-383 -1e-383  ->  -0E-383     Inexact Rounded
-ddqua738 quantize -0.001E-383 -0e-383  ->  -0E-383     Inexact Rounded
-ddqua739 quantize -0.0001E-383 0e-383  ->  -0E-383     Inexact Rounded
-
-ddqua740 quantize -1.00E-383   1e-384 ->  -1.0E-383   Rounded
-ddqua741 quantize -0.1E-383    1e-384 ->  -1E-384    Subnormal
-ddqua742 quantize -0.10E-383   1e-384 ->  -1E-384    Subnormal Rounded
-ddqua743 quantize -0.100E-383  1e-384 ->  -1E-384    Subnormal Rounded
-ddqua744 quantize -0.01E-383   1e-384 ->  -0E-384    Inexact Rounded
--- next is rounded to Emin
-ddqua745 quantize -0.999E-383  1e-384 ->  -1.0E-383   Inexact Rounded
-ddqua746 quantize -0.099E-383  1e-384 ->  -1E-384    Inexact Rounded Subnormal
-ddqua747 quantize -0.009E-383  1e-384 ->  -0E-384    Inexact Rounded
-ddqua748 quantize -0.001E-383  1e-384 ->  -0E-384    Inexact Rounded
-ddqua749 quantize -0.0001E-383 1e-384 ->  -0E-384    Inexact Rounded
-
-ddqua750 quantize -1.00E-383   1e-385 ->  -1.00E-383
-ddqua751 quantize -0.1E-383    1e-385 ->  -1.0E-384  Subnormal
-ddqua752 quantize -0.10E-383   1e-385 ->  -1.0E-384  Subnormal
-ddqua753 quantize -0.100E-383  1e-385 ->  -1.0E-384  Subnormal Rounded
-ddqua754 quantize -0.01E-383   1e-385 ->  -1E-385    Subnormal
--- next is rounded to Emin
-ddqua755 quantize -0.999E-383  1e-385 ->  -1.00E-383  Inexact Rounded
-ddqua756 quantize -0.099E-383  1e-385 ->  -1.0E-384  Inexact Rounded Subnormal
-ddqua757 quantize -0.009E-383  1e-385 ->  -1E-385    Inexact Rounded Subnormal
-ddqua758 quantize -0.001E-383  1e-385 ->  -0E-385    Inexact Rounded
-ddqua759 quantize -0.0001E-383 1e-385 ->  -0E-385    Inexact Rounded
-
-ddqua760 quantize -1.00E-383   1e-386 ->  -1.000E-383
-ddqua761 quantize -0.1E-383    1e-386 ->  -1.00E-384  Subnormal
-ddqua762 quantize -0.10E-383   1e-386 ->  -1.00E-384  Subnormal
-ddqua763 quantize -0.100E-383  1e-386 ->  -1.00E-384  Subnormal
-ddqua764 quantize -0.01E-383   1e-386 ->  -1.0E-385   Subnormal
-ddqua765 quantize -0.999E-383  1e-386 ->  -9.99E-384  Subnormal
-ddqua766 quantize -0.099E-383  1e-386 ->  -9.9E-385   Subnormal
-ddqua767 quantize -0.009E-383  1e-386 ->  -9E-386     Subnormal
-ddqua768 quantize -0.001E-383  1e-386 ->  -1E-386     Subnormal
-ddqua769 quantize -0.0001E-383 1e-386 ->  -0E-386     Inexact Rounded
-
--- More from Fung Lee
-ddqua1021 quantize  8.666666666666000E+384  1.000000000000000E+384 ->  8.666666666666000E+384
-ddqua1022 quantize -8.666666666666000E+384  1.000000000000000E+384 -> -8.666666666666000E+384
-ddqua1027 quantize 8.666666666666000E+323  1E+31    -> NaN Invalid_operation
-ddqua1029 quantize 8.66666666E+3           1E+3     -> 9E+3 Inexact Rounded
-
-
---ddqua1030 quantize 8.666666666666000E+384 1E+384   -> 9.000000000000000E+384 Rounded Inexact
---ddqua1031 quantize 8.666666666666000E+384 1E+384   -> 8.666666666666000E+384 Rounded
---ddqua1032 quantize 8.666666666666000E+384 1E+383   -> 8.666666666666000E+384 Rounded
---ddqua1033 quantize 8.666666666666000E+384 1E+382   -> 8.666666666666000E+384 Rounded
---ddqua1034 quantize 8.666666666666000E+384 1E+381   -> 8.666666666666000E+384 Rounded
---ddqua1035 quantize 8.666666666666000E+384 1E+380   -> 8.666666666666000E+384 Rounded
-
--- Int and uInt32 edge values for testing conversions
-ddqua1040 quantize -2147483646     0 -> -2147483646
-ddqua1041 quantize -2147483647     0 -> -2147483647
-ddqua1042 quantize -2147483648     0 -> -2147483648
-ddqua1043 quantize -2147483649     0 -> -2147483649
-ddqua1044 quantize  2147483646     0 ->  2147483646
-ddqua1045 quantize  2147483647     0 ->  2147483647
-ddqua1046 quantize  2147483648     0 ->  2147483648
-ddqua1047 quantize  2147483649     0 ->  2147483649
-ddqua1048 quantize  4294967294     0 ->  4294967294
-ddqua1049 quantize  4294967295     0 ->  4294967295
-ddqua1050 quantize  4294967296     0 ->  4294967296
-ddqua1051 quantize  4294967297     0 ->  4294967297
-
--- Rounding swathe
-rounding: half_even
-ddqua1100 quantize  1.2300    1.00    ->  1.23  Rounded
-ddqua1101 quantize  1.2301    1.00    ->  1.23  Inexact Rounded
-ddqua1102 quantize  1.2310    1.00    ->  1.23  Inexact Rounded
-ddqua1103 quantize  1.2350    1.00    ->  1.24  Inexact Rounded
-ddqua1104 quantize  1.2351    1.00    ->  1.24  Inexact Rounded
-ddqua1105 quantize  1.2450    1.00    ->  1.24  Inexact Rounded
-ddqua1106 quantize  1.2451    1.00    ->  1.25  Inexact Rounded
-ddqua1107 quantize  1.2360    1.00    ->  1.24  Inexact Rounded
-ddqua1108 quantize  1.2370    1.00    ->  1.24  Inexact Rounded
-ddqua1109 quantize  1.2399    1.00    ->  1.24  Inexact Rounded
-
-rounding: half_up
-ddqua1200 quantize  1.2300    1.00    ->  1.23  Rounded
-ddqua1201 quantize  1.2301    1.00    ->  1.23  Inexact Rounded
-ddqua1202 quantize  1.2310    1.00    ->  1.23  Inexact Rounded
-ddqua1203 quantize  1.2350    1.00    ->  1.24  Inexact Rounded
-ddqua1204 quantize  1.2351    1.00    ->  1.24  Inexact Rounded
-ddqua1205 quantize  1.2450    1.00    ->  1.25  Inexact Rounded
-ddqua1206 quantize  1.2451    1.00    ->  1.25  Inexact Rounded
-ddqua1207 quantize  1.2360    1.00    ->  1.24  Inexact Rounded
-ddqua1208 quantize  1.2370    1.00    ->  1.24  Inexact Rounded
-ddqua1209 quantize  1.2399    1.00    ->  1.24  Inexact Rounded
-
-rounding: half_down
-ddqua1300 quantize  1.2300    1.00    ->  1.23  Rounded
-ddqua1301 quantize  1.2301    1.00    ->  1.23  Inexact Rounded
-ddqua1302 quantize  1.2310    1.00    ->  1.23  Inexact Rounded
-ddqua1303 quantize  1.2350    1.00    ->  1.23  Inexact Rounded
-ddqua1304 quantize  1.2351    1.00    ->  1.24  Inexact Rounded
-ddqua1305 quantize  1.2450    1.00    ->  1.24  Inexact Rounded
-ddqua1306 quantize  1.2451    1.00    ->  1.25  Inexact Rounded
-ddqua1307 quantize  1.2360    1.00    ->  1.24  Inexact Rounded
-ddqua1308 quantize  1.2370    1.00    ->  1.24  Inexact Rounded
-ddqua1309 quantize  1.2399    1.00    ->  1.24  Inexact Rounded
-
-rounding: up
-ddqua1400 quantize  1.2300    1.00    ->  1.23  Rounded
-ddqua1401 quantize  1.2301    1.00    ->  1.24  Inexact Rounded
-ddqua1402 quantize  1.2310    1.00    ->  1.24  Inexact Rounded
-ddqua1403 quantize  1.2350    1.00    ->  1.24  Inexact Rounded
-ddqua1404 quantize  1.2351    1.00    ->  1.24  Inexact Rounded
-ddqua1405 quantize  1.2450    1.00    ->  1.25  Inexact Rounded
-ddqua1406 quantize  1.2451    1.00    ->  1.25  Inexact Rounded
-ddqua1407 quantize  1.2360    1.00    ->  1.24  Inexact Rounded
-ddqua1408 quantize  1.2370    1.00    ->  1.24  Inexact Rounded
-ddqua1409 quantize  1.2399    1.00    ->  1.24  Inexact Rounded
-ddqua1411 quantize -1.2399    1.00    -> -1.24  Inexact Rounded
-
-rounding: down
-ddqua1500 quantize  1.2300    1.00    ->  1.23  Rounded
-ddqua1501 quantize  1.2301    1.00    ->  1.23  Inexact Rounded
-ddqua1502 quantize  1.2310    1.00    ->  1.23  Inexact Rounded
-ddqua1503 quantize  1.2350    1.00    ->  1.23  Inexact Rounded
-ddqua1504 quantize  1.2351    1.00    ->  1.23  Inexact Rounded
-ddqua1505 quantize  1.2450    1.00    ->  1.24  Inexact Rounded
-ddqua1506 quantize  1.2451    1.00    ->  1.24  Inexact Rounded
-ddqua1507 quantize  1.2360    1.00    ->  1.23  Inexact Rounded
-ddqua1508 quantize  1.2370    1.00    ->  1.23  Inexact Rounded
-ddqua1509 quantize  1.2399    1.00    ->  1.23  Inexact Rounded
-ddqua1511 quantize -1.2399    1.00    -> -1.23  Inexact Rounded
-
-rounding: ceiling
-ddqua1600 quantize  1.2300    1.00    ->  1.23  Rounded
-ddqua1601 quantize  1.2301    1.00    ->  1.24  Inexact Rounded
-ddqua1602 quantize  1.2310    1.00    ->  1.24  Inexact Rounded
-ddqua1603 quantize  1.2350    1.00    ->  1.24  Inexact Rounded
-ddqua1604 quantize  1.2351    1.00    ->  1.24  Inexact Rounded
-ddqua1605 quantize  1.2450    1.00    ->  1.25  Inexact Rounded
-ddqua1606 quantize  1.2451    1.00    ->  1.25  Inexact Rounded
-ddqua1607 quantize  1.2360    1.00    ->  1.24  Inexact Rounded
-ddqua1608 quantize  1.2370    1.00    ->  1.24  Inexact Rounded
-ddqua1609 quantize  1.2399    1.00    ->  1.24  Inexact Rounded
-ddqua1611 quantize -1.2399    1.00    -> -1.23  Inexact Rounded
-
-rounding: floor
-ddqua1700 quantize  1.2300    1.00    ->  1.23  Rounded
-ddqua1701 quantize  1.2301    1.00    ->  1.23  Inexact Rounded
-ddqua1702 quantize  1.2310    1.00    ->  1.23  Inexact Rounded
-ddqua1703 quantize  1.2350    1.00    ->  1.23  Inexact Rounded
-ddqua1704 quantize  1.2351    1.00    ->  1.23  Inexact Rounded
-ddqua1705 quantize  1.2450    1.00    ->  1.24  Inexact Rounded
-ddqua1706 quantize  1.2451    1.00    ->  1.24  Inexact Rounded
-ddqua1707 quantize  1.2360    1.00    ->  1.23  Inexact Rounded
-ddqua1708 quantize  1.2370    1.00    ->  1.23  Inexact Rounded
-ddqua1709 quantize  1.2399    1.00    ->  1.23  Inexact Rounded
-ddqua1711 quantize -1.2399    1.00    -> -1.24  Inexact Rounded
-
-rounding: 05up
-ddqua1800 quantize  1.2000    1.00    ->  1.20  Rounded
-ddqua1801 quantize  1.2001    1.00    ->  1.21  Inexact Rounded
-ddqua1802 quantize  1.2010    1.00    ->  1.21  Inexact Rounded
-ddqua1803 quantize  1.2050    1.00    ->  1.21  Inexact Rounded
-ddqua1804 quantize  1.2051    1.00    ->  1.21  Inexact Rounded
-ddqua1807 quantize  1.2060    1.00    ->  1.21  Inexact Rounded
-ddqua1808 quantize  1.2070    1.00    ->  1.21  Inexact Rounded
-ddqua1809 quantize  1.2099    1.00    ->  1.21  Inexact Rounded
-ddqua1811 quantize -1.2099    1.00    -> -1.21  Inexact Rounded
-
-ddqua1900 quantize  1.2100    1.00    ->  1.21  Rounded
-ddqua1901 quantize  1.2101    1.00    ->  1.21  Inexact Rounded
-ddqua1902 quantize  1.2110    1.00    ->  1.21  Inexact Rounded
-ddqua1903 quantize  1.2150    1.00    ->  1.21  Inexact Rounded
-ddqua1904 quantize  1.2151    1.00    ->  1.21  Inexact Rounded
-ddqua1907 quantize  1.2160    1.00    ->  1.21  Inexact Rounded
-ddqua1908 quantize  1.2170    1.00    ->  1.21  Inexact Rounded
-ddqua1909 quantize  1.2199    1.00    ->  1.21  Inexact Rounded
-ddqua1911 quantize -1.2199    1.00    -> -1.21  Inexact Rounded
-
-ddqua2000 quantize  1.2400    1.00    ->  1.24  Rounded
-ddqua2001 quantize  1.2401    1.00    ->  1.24  Inexact Rounded
-ddqua2002 quantize  1.2410    1.00    ->  1.24  Inexact Rounded
-ddqua2003 quantize  1.2450    1.00    ->  1.24  Inexact Rounded
-ddqua2004 quantize  1.2451    1.00    ->  1.24  Inexact Rounded
-ddqua2007 quantize  1.2460    1.00    ->  1.24  Inexact Rounded
-ddqua2008 quantize  1.2470    1.00    ->  1.24  Inexact Rounded
-ddqua2009 quantize  1.2499    1.00    ->  1.24  Inexact Rounded
-ddqua2011 quantize -1.2499    1.00    -> -1.24  Inexact Rounded
-
-ddqua2100 quantize  1.2500    1.00    ->  1.25  Rounded
-ddqua2101 quantize  1.2501    1.00    ->  1.26  Inexact Rounded
-ddqua2102 quantize  1.2510    1.00    ->  1.26  Inexact Rounded
-ddqua2103 quantize  1.2550    1.00    ->  1.26  Inexact Rounded
-ddqua2104 quantize  1.2551    1.00    ->  1.26  Inexact Rounded
-ddqua2107 quantize  1.2560    1.00    ->  1.26  Inexact Rounded
-ddqua2108 quantize  1.2570    1.00    ->  1.26  Inexact Rounded
-ddqua2109 quantize  1.2599    1.00    ->  1.26  Inexact Rounded
-ddqua2111 quantize -1.2599    1.00    -> -1.26  Inexact Rounded
-
-ddqua2200 quantize  1.2600    1.00    ->  1.26  Rounded
-ddqua2201 quantize  1.2601    1.00    ->  1.26  Inexact Rounded
-ddqua2202 quantize  1.2610    1.00    ->  1.26  Inexact Rounded
-ddqua2203 quantize  1.2650    1.00    ->  1.26  Inexact Rounded
-ddqua2204 quantize  1.2651    1.00    ->  1.26  Inexact Rounded
-ddqua2207 quantize  1.2660    1.00    ->  1.26  Inexact Rounded
-ddqua2208 quantize  1.2670    1.00    ->  1.26  Inexact Rounded
-ddqua2209 quantize  1.2699    1.00    ->  1.26  Inexact Rounded
-ddqua2211 quantize -1.2699    1.00    -> -1.26  Inexact Rounded
-
-ddqua2300 quantize  1.2900    1.00    ->  1.29  Rounded
-ddqua2301 quantize  1.2901    1.00    ->  1.29  Inexact Rounded
-ddqua2302 quantize  1.2910    1.00    ->  1.29  Inexact Rounded
-ddqua2303 quantize  1.2950    1.00    ->  1.29  Inexact Rounded
-ddqua2304 quantize  1.2951    1.00    ->  1.29  Inexact Rounded
-ddqua2307 quantize  1.2960    1.00    ->  1.29  Inexact Rounded
-ddqua2308 quantize  1.2970    1.00    ->  1.29  Inexact Rounded
-ddqua2309 quantize  1.2999    1.00    ->  1.29  Inexact Rounded
-ddqua2311 quantize -1.2999    1.00    -> -1.29  Inexact Rounded
-
--- Null tests
-rounding:    half_even
-ddqua998 quantize 10    # -> NaN Invalid_operation
-ddqua999 quantize  # 1e10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddReduce.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddReduce.decTest
deleted file mode 100644
index bdfd060..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddReduce.decTest
+++ /dev/null
@@ -1,182 +0,0 @@
-------------------------------------------------------------------------
--- ddReduce.decTest -- remove trailing zeros from a decDouble         --
--- Copyright (c) IBM Corporation, 2003, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
-ddred001 reduce '1'      -> '1'
-ddred002 reduce '-1'     -> '-1'
-ddred003 reduce '1.00'   -> '1'
-ddred004 reduce '-1.00'  -> '-1'
-ddred005 reduce '0'      -> '0'
-ddred006 reduce '0.00'   -> '0'
-ddred007 reduce '00.0'   -> '0'
-ddred008 reduce '00.00'  -> '0'
-ddred009 reduce '00'     -> '0'
-ddred010 reduce '0E+1'   -> '0'
-ddred011 reduce '0E+5'   -> '0'
-
-ddred012 reduce '-2'     -> '-2'
-ddred013 reduce '2'      -> '2'
-ddred014 reduce '-2.00'  -> '-2'
-ddred015 reduce '2.00'   -> '2'
-ddred016 reduce '-0'     -> '-0'
-ddred017 reduce '-0.00'  -> '-0'
-ddred018 reduce '-00.0'  -> '-0'
-ddred019 reduce '-00.00' -> '-0'
-ddred020 reduce '-00'    -> '-0'
-ddred021 reduce '-0E+5'   -> '-0'
-ddred022 reduce '-0E+1'  -> '-0'
-
-ddred030 reduce '+0.1'            -> '0.1'
-ddred031 reduce '-0.1'            -> '-0.1'
-ddred032 reduce '+0.01'           -> '0.01'
-ddred033 reduce '-0.01'           -> '-0.01'
-ddred034 reduce '+0.001'          -> '0.001'
-ddred035 reduce '-0.001'          -> '-0.001'
-ddred036 reduce '+0.000001'       -> '0.000001'
-ddred037 reduce '-0.000001'       -> '-0.000001'
-ddred038 reduce '+0.000000000001' -> '1E-12'
-ddred039 reduce '-0.000000000001' -> '-1E-12'
-
-ddred041 reduce 1.1        -> 1.1
-ddred042 reduce 1.10       -> 1.1
-ddred043 reduce 1.100      -> 1.1
-ddred044 reduce 1.110      -> 1.11
-ddred045 reduce -1.1       -> -1.1
-ddred046 reduce -1.10      -> -1.1
-ddred047 reduce -1.100     -> -1.1
-ddred048 reduce -1.110     -> -1.11
-ddred049 reduce 9.9        -> 9.9
-ddred050 reduce 9.90       -> 9.9
-ddred051 reduce 9.900      -> 9.9
-ddred052 reduce 9.990      -> 9.99
-ddred053 reduce -9.9       -> -9.9
-ddred054 reduce -9.90      -> -9.9
-ddred055 reduce -9.900     -> -9.9
-ddred056 reduce -9.990     -> -9.99
-
--- some trailing fractional zeros with zeros in units
-ddred060 reduce  10.0        -> 1E+1
-ddred061 reduce  10.00       -> 1E+1
-ddred062 reduce  100.0       -> 1E+2
-ddred063 reduce  100.00      -> 1E+2
-ddred064 reduce  1.1000E+3   -> 1.1E+3
-ddred065 reduce  1.10000E+3  -> 1.1E+3
-ddred066 reduce -10.0        -> -1E+1
-ddred067 reduce -10.00       -> -1E+1
-ddred068 reduce -100.0       -> -1E+2
-ddred069 reduce -100.00      -> -1E+2
-ddred070 reduce -1.1000E+3   -> -1.1E+3
-ddred071 reduce -1.10000E+3  -> -1.1E+3
-
--- some insignificant trailing zeros with positive exponent
-ddred080 reduce  10E+1       -> 1E+2
-ddred081 reduce  100E+1      -> 1E+3
-ddred082 reduce  1.0E+2      -> 1E+2
-ddred083 reduce  1.0E+3      -> 1E+3
-ddred084 reduce  1.1E+3      -> 1.1E+3
-ddred085 reduce  1.00E+3     -> 1E+3
-ddred086 reduce  1.10E+3     -> 1.1E+3
-ddred087 reduce -10E+1       -> -1E+2
-ddred088 reduce -100E+1      -> -1E+3
-ddred089 reduce -1.0E+2      -> -1E+2
-ddred090 reduce -1.0E+3      -> -1E+3
-ddred091 reduce -1.1E+3      -> -1.1E+3
-ddred092 reduce -1.00E+3     -> -1E+3
-ddred093 reduce -1.10E+3     -> -1.1E+3
-
--- some significant trailing zeros, were we to be trimming
-ddred100 reduce  11          -> 11
-ddred101 reduce  10          -> 1E+1
-ddred102 reduce  10.         -> 1E+1
-ddred103 reduce  1.1E+1      -> 11
-ddred104 reduce  1.0E+1      -> 1E+1
-ddred105 reduce  1.10E+2     -> 1.1E+2
-ddred106 reduce  1.00E+2     -> 1E+2
-ddred107 reduce  1.100E+3    -> 1.1E+3
-ddred108 reduce  1.000E+3    -> 1E+3
-ddred109 reduce  1.000000E+6 -> 1E+6
-ddred110 reduce -11          -> -11
-ddred111 reduce -10          -> -1E+1
-ddred112 reduce -10.         -> -1E+1
-ddred113 reduce -1.1E+1      -> -11
-ddred114 reduce -1.0E+1      -> -1E+1
-ddred115 reduce -1.10E+2     -> -1.1E+2
-ddred116 reduce -1.00E+2     -> -1E+2
-ddred117 reduce -1.100E+3    -> -1.1E+3
-ddred118 reduce -1.000E+3    -> -1E+3
-ddred119 reduce -1.00000E+5  -> -1E+5
-ddred120 reduce -1.000000E+6 -> -1E+6
-ddred121 reduce -10.00000E+6 -> -1E+7
-ddred122 reduce -100.0000E+6 -> -1E+8
-ddred123 reduce -1000.000E+6 -> -1E+9
-ddred124 reduce -10000.00E+6 -> -1E+10
-ddred125 reduce -100000.0E+6 -> -1E+11
-ddred126 reduce -1000000.E+6 -> -1E+12
-
--- examples from decArith
-ddred140 reduce '2.1'     ->  '2.1'
-ddred141 reduce '-2.0'    ->  '-2'
-ddred142 reduce '1.200'   ->  '1.2'
-ddred143 reduce '-120'    ->  '-1.2E+2'
-ddred144 reduce '120.00'  ->  '1.2E+2'
-ddred145 reduce '0.00'    ->  '0'
-
--- Nmax, Nmin, Ntiny
--- note origami effect on some of these
-ddred151 reduce  9.999999999999999E+384   -> 9.999999999999999E+384
-ddred152 reduce  9.999999000000000E+380   -> 9.99999900000E+380
-ddred153 reduce  9.999999999990000E+384   -> 9.999999999990000E+384
-ddred154 reduce  1E-383                   -> 1E-383
-ddred155 reduce  1.000000000000000E-383   -> 1E-383
-ddred156 reduce  2.000E-395               -> 2E-395   Subnormal
-ddred157 reduce  1E-398                   -> 1E-398   Subnormal
-
-ddred161 reduce  -1E-398                  -> -1E-398  Subnormal
-ddred162 reduce  -2.000E-395              -> -2E-395  Subnormal
-ddred163 reduce  -1.000000000000000E-383  -> -1E-383
-ddred164 reduce  -1E-383                  -> -1E-383
-ddred165 reduce  -9.999999000000000E+380  -> -9.99999900000E+380
-ddred166 reduce  -9.999999999990000E+384  -> -9.999999999990000E+384
-ddred167 reduce  -9.999999999999990E+384  -> -9.999999999999990E+384
-ddred168 reduce  -9.999999999999999E+384  -> -9.999999999999999E+384
-ddred169 reduce  -9.999999999999990E+384  -> -9.999999999999990E+384
-
-
--- specials (reduce does not affect payload)
-ddred820 reduce 'Inf'    -> 'Infinity'
-ddred821 reduce '-Inf'   -> '-Infinity'
-ddred822 reduce   NaN    ->  NaN
-ddred823 reduce  sNaN    ->  NaN    Invalid_operation
-ddred824 reduce   NaN101 ->  NaN101
-ddred825 reduce  sNaN010 ->  NaN10  Invalid_operation
-ddred827 reduce  -NaN    -> -NaN
-ddred828 reduce -sNaN    -> -NaN    Invalid_operation
-ddred829 reduce  -NaN101 -> -NaN101
-ddred830 reduce -sNaN010 -> -NaN10  Invalid_operation
-
--- Null test
-ddred900 reduce  # -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRemainder.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRemainder.decTest
deleted file mode 100644
index 5bd1e32..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRemainder.decTest
+++ /dev/null
@@ -1,600 +0,0 @@
-------------------------------------------------------------------------
--- ddRemainder.decTest -- decDouble remainder                         --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- sanity checks (as base, above)
-ddrem001 remainder  1     1    ->  0
-ddrem002 remainder  2     1    ->  0
-ddrem003 remainder  1     2    ->  1
-ddrem004 remainder  2     2    ->  0
-ddrem005 remainder  0     1    ->  0
-ddrem006 remainder  0     2    ->  0
-ddrem007 remainder  1     3    ->  1
-ddrem008 remainder  2     3    ->  2
-ddrem009 remainder  3     3    ->  0
-
-ddrem010 remainder  2.4   1    ->  0.4
-ddrem011 remainder  2.4   -1   ->  0.4
-ddrem012 remainder  -2.4  1    ->  -0.4
-ddrem013 remainder  -2.4  -1   ->  -0.4
-ddrem014 remainder  2.40  1    ->  0.40
-ddrem015 remainder  2.400 1    ->  0.400
-ddrem016 remainder  2.4   2    ->  0.4
-ddrem017 remainder  2.400 2    ->  0.400
-ddrem018 remainder  2.    2    ->  0
-ddrem019 remainder  20    20   ->  0
-
-ddrem020 remainder  187   187    ->  0
-ddrem021 remainder  5     2      ->  1
-ddrem022 remainder  5     2.0    ->  1.0
-ddrem023 remainder  5     2.000  ->  1.000
-ddrem024 remainder  5     0.200  ->  0.000
-ddrem025 remainder  5     0.200  ->  0.000
-
-ddrem030 remainder  1     2      ->  1
-ddrem031 remainder  1     4      ->  1
-ddrem032 remainder  1     8      ->  1
-
-ddrem033 remainder  1     16     ->  1
-ddrem034 remainder  1     32     ->  1
-ddrem035 remainder  1     64     ->  1
-ddrem040 remainder  1    -2      ->  1
-ddrem041 remainder  1    -4      ->  1
-ddrem042 remainder  1    -8      ->  1
-ddrem043 remainder  1    -16     ->  1
-ddrem044 remainder  1    -32     ->  1
-ddrem045 remainder  1    -64     ->  1
-ddrem050 remainder -1     2      ->  -1
-ddrem051 remainder -1     4      ->  -1
-ddrem052 remainder -1     8      ->  -1
-ddrem053 remainder -1     16     ->  -1
-ddrem054 remainder -1     32     ->  -1
-ddrem055 remainder -1     64     ->  -1
-ddrem060 remainder -1    -2      ->  -1
-ddrem061 remainder -1    -4      ->  -1
-ddrem062 remainder -1    -8      ->  -1
-ddrem063 remainder -1    -16     ->  -1
-ddrem064 remainder -1    -32     ->  -1
-ddrem065 remainder -1    -64     ->  -1
-
-ddrem066 remainder  999999999     1  -> 0
-ddrem067 remainder  999999999.4   1  -> 0.4
-ddrem068 remainder  999999999.5   1  -> 0.5
-ddrem069 remainder  999999999.9   1  -> 0.9
-ddrem070 remainder  999999999.999 1  -> 0.999
-ddrem071 remainder  999999.999999 1  -> 0.999999
-ddrem072 remainder  9             1  -> 0
-ddrem073 remainder  9999999999999999 1  -> 0
-ddrem074 remainder  9999999999999999 2  -> 1
-ddrem075 remainder  9999999999999999 3  -> 0
-ddrem076 remainder  9999999999999999 4  -> 3
-
-ddrem080 remainder  0.            1  -> 0
-ddrem081 remainder  .0            1  -> 0.0
-ddrem082 remainder  0.00          1  -> 0.00
-ddrem083 remainder  0.00E+9       1  -> 0
-ddrem084 remainder  0.00E+3       1  -> 0
-ddrem085 remainder  0.00E+2       1  -> 0
-ddrem086 remainder  0.00E+1       1  -> 0.0
-ddrem087 remainder  0.00E+0       1  -> 0.00
-ddrem088 remainder  0.00E-0       1  -> 0.00
-ddrem089 remainder  0.00E-1       1  -> 0.000
-ddrem090 remainder  0.00E-2       1  -> 0.0000
-ddrem091 remainder  0.00E-3       1  -> 0.00000
-ddrem092 remainder  0.00E-4       1  -> 0.000000
-ddrem093 remainder  0.00E-5       1  -> 0E-7
-ddrem094 remainder  0.00E-6       1  -> 0E-8
-ddrem095 remainder  0.0000E-50    1  -> 0E-54
-
--- Various flavours of remainder by 0
-ddrem101 remainder  0       0   -> NaN Division_undefined
-ddrem102 remainder  0      -0   -> NaN Division_undefined
-ddrem103 remainder -0       0   -> NaN Division_undefined
-ddrem104 remainder -0      -0   -> NaN Division_undefined
-ddrem105 remainder  0.0E5   0   -> NaN Division_undefined
-ddrem106 remainder  0.000   0   -> NaN Division_undefined
--- [Some think this next group should be Division_by_zero exception, but
--- IEEE 854 is explicit that it is Invalid operation .. for
--- remainder-near, anyway]
-ddrem107 remainder  0.0001  0   -> NaN Invalid_operation
-ddrem108 remainder  0.01    0   -> NaN Invalid_operation
-ddrem109 remainder  0.1     0   -> NaN Invalid_operation
-ddrem110 remainder  1       0   -> NaN Invalid_operation
-ddrem111 remainder  1       0.0 -> NaN Invalid_operation
-ddrem112 remainder 10       0.0 -> NaN Invalid_operation
-ddrem113 remainder 1E+100   0.0 -> NaN Invalid_operation
-ddrem114 remainder 1E+380   0   -> NaN Invalid_operation
-ddrem115 remainder  0.0001 -0   -> NaN Invalid_operation
-ddrem116 remainder  0.01   -0   -> NaN Invalid_operation
-ddrem119 remainder  0.1    -0   -> NaN Invalid_operation
-ddrem120 remainder  1      -0   -> NaN Invalid_operation
-ddrem121 remainder  1      -0.0 -> NaN Invalid_operation
-ddrem122 remainder 10      -0.0 -> NaN Invalid_operation
-ddrem123 remainder 1E+100  -0.0 -> NaN Invalid_operation
-ddrem124 remainder 1E+384  -0   -> NaN Invalid_operation
--- and zeros on left
-ddrem130 remainder  0      1   ->  0
-ddrem131 remainder  0     -1   ->  0
-ddrem132 remainder  0.0    1   ->  0.0
-ddrem133 remainder  0.0   -1   ->  0.0
-ddrem134 remainder -0      1   -> -0
-ddrem135 remainder -0     -1   -> -0
-ddrem136 remainder -0.0    1   -> -0.0
-ddrem137 remainder -0.0   -1   -> -0.0
-
--- 0.5ers
-ddrem143 remainder   0.5  2     ->  0.5
-ddrem144 remainder   0.5  2.1   ->  0.5
-ddrem145 remainder   0.5  2.01  ->  0.50
-ddrem146 remainder   0.5  2.001 ->  0.500
-ddrem147 remainder   0.50 2     ->  0.50
-ddrem148 remainder   0.50 2.01  ->  0.50
-ddrem149 remainder   0.50 2.001 ->  0.500
-
--- steadies
-ddrem150 remainder  1  1   -> 0
-ddrem151 remainder  1  2   -> 1
-ddrem152 remainder  1  3   -> 1
-ddrem153 remainder  1  4   -> 1
-ddrem154 remainder  1  5   -> 1
-ddrem155 remainder  1  6   -> 1
-ddrem156 remainder  1  7   -> 1
-ddrem157 remainder  1  8   -> 1
-ddrem158 remainder  1  9   -> 1
-ddrem159 remainder  1  10  -> 1
-ddrem160 remainder  1  1   -> 0
-ddrem161 remainder  2  1   -> 0
-ddrem162 remainder  3  1   -> 0
-ddrem163 remainder  4  1   -> 0
-ddrem164 remainder  5  1   -> 0
-ddrem165 remainder  6  1   -> 0
-ddrem166 remainder  7  1   -> 0
-ddrem167 remainder  8  1   -> 0
-ddrem168 remainder  9  1   -> 0
-ddrem169 remainder  10 1   -> 0
-
--- some differences from remainderNear
-ddrem171 remainder   0.4  1.020 ->  0.400
-ddrem172 remainder   0.50 1.020 ->  0.500
-ddrem173 remainder   0.51 1.020 ->  0.510
-ddrem174 remainder   0.52 1.020 ->  0.520
-ddrem175 remainder   0.6  1.020 ->  0.600
-
--- More flavours of remainder by 0
-ddrem201 remainder  0      0   -> NaN Division_undefined
-ddrem202 remainder  0.0E5  0   -> NaN Division_undefined
-ddrem203 remainder  0.000  0   -> NaN Division_undefined
-ddrem204 remainder  0.0001 0   -> NaN Invalid_operation
-ddrem205 remainder  0.01   0   -> NaN Invalid_operation
-ddrem206 remainder  0.1    0   -> NaN Invalid_operation
-ddrem207 remainder  1      0   -> NaN Invalid_operation
-ddrem208 remainder  1      0.0 -> NaN Invalid_operation
-ddrem209 remainder 10      0.0 -> NaN Invalid_operation
-ddrem210 remainder 1E+100  0.0 -> NaN Invalid_operation
-ddrem211 remainder 1E+380  0   -> NaN Invalid_operation
-
--- some differences from remainderNear
-ddrem231 remainder  -0.4  1.020 -> -0.400
-ddrem232 remainder  -0.50 1.020 -> -0.500
-ddrem233 remainder  -0.51 1.020 -> -0.510
-ddrem234 remainder  -0.52 1.020 -> -0.520
-ddrem235 remainder  -0.6  1.020 -> -0.600
-
--- high Xs
-ddrem240 remainder  1E+2  1.00  ->  0.00
-
--- ddrem3xx are from DiagBigDecimal
-ddrem301 remainder   1    3     ->  1
-ddrem302 remainder   5    5     ->  0
-ddrem303 remainder   13   10    ->  3
-ddrem304 remainder   13   50    ->  13
-ddrem305 remainder   13   100   ->  13
-ddrem306 remainder   13   1000  ->  13
-ddrem307 remainder   .13    1   ->  0.13
-ddrem308 remainder   0.133  1   ->  0.133
-ddrem309 remainder   0.1033 1   ->  0.1033
-ddrem310 remainder   1.033  1   ->  0.033
-ddrem311 remainder   10.33  1   ->  0.33
-ddrem312 remainder   10.33 10   ->  0.33
-ddrem313 remainder   103.3  1   ->  0.3
-ddrem314 remainder   133   10   ->  3
-ddrem315 remainder   1033  10   ->  3
-ddrem316 remainder   1033  50   ->  33
-ddrem317 remainder   101.0  3   ->  2.0
-ddrem318 remainder   102.0  3   ->  0.0
-ddrem319 remainder   103.0  3   ->  1.0
-ddrem320 remainder   2.40   1   ->  0.40
-ddrem321 remainder   2.400  1   ->  0.400
-ddrem322 remainder   2.4    1   ->  0.4
-ddrem323 remainder   2.4    2   ->  0.4
-ddrem324 remainder   2.400  2   ->  0.400
-ddrem325 remainder   1   0.3    ->  0.1
-ddrem326 remainder   1   0.30   ->  0.10
-ddrem327 remainder   1   0.300  ->  0.100
-ddrem328 remainder   1   0.3000 ->  0.1000
-ddrem329 remainder   1.0    0.3 ->  0.1
-ddrem330 remainder   1.00   0.3 ->  0.10
-ddrem331 remainder   1.000  0.3 ->  0.100
-ddrem332 remainder   1.0000 0.3 ->  0.1000
-ddrem333 remainder   0.5  2     ->  0.5
-ddrem334 remainder   0.5  2.1   ->  0.5
-ddrem335 remainder   0.5  2.01  ->  0.50
-ddrem336 remainder   0.5  2.001 ->  0.500
-ddrem337 remainder   0.50 2     ->  0.50
-ddrem338 remainder   0.50 2.01  ->  0.50
-ddrem339 remainder   0.50 2.001 ->  0.500
-
-ddrem340 remainder   0.5   0.5000001    ->  0.5000000
-ddrem341 remainder   0.5   0.50000001    ->  0.50000000
-ddrem342 remainder   0.5   0.500000001    ->  0.500000000
-ddrem343 remainder   0.5   0.5000000001    ->  0.5000000000
-ddrem344 remainder   0.5   0.50000000001    ->  0.50000000000
-ddrem345 remainder   0.5   0.4999999    ->  1E-7
-ddrem346 remainder   0.5   0.49999999    ->  1E-8
-ddrem347 remainder   0.5   0.499999999    ->  1E-9
-ddrem348 remainder   0.5   0.4999999999    ->  1E-10
-ddrem349 remainder   0.5   0.49999999999    ->  1E-11
-ddrem350 remainder   0.5   0.499999999999    ->  1E-12
-
-ddrem351 remainder   0.03  7  ->  0.03
-ddrem352 remainder   5   2    ->  1
-ddrem353 remainder   4.1   2    ->  0.1
-ddrem354 remainder   4.01   2    ->  0.01
-ddrem355 remainder   4.001   2    ->  0.001
-ddrem356 remainder   4.0001   2    ->  0.0001
-ddrem357 remainder   4.00001   2    ->  0.00001
-ddrem358 remainder   4.000001   2    ->  0.000001
-ddrem359 remainder   4.0000001   2    ->  1E-7
-
-ddrem360 remainder   1.2   0.7345 ->  0.4655
-ddrem361 remainder   0.8   12     ->  0.8
-ddrem362 remainder   0.8   0.2    ->  0.0
-ddrem363 remainder   0.8   0.3    ->  0.2
-ddrem364 remainder   0.800   12   ->  0.800
-ddrem365 remainder   0.800   1.7  ->  0.800
-ddrem366 remainder   2.400   2    ->  0.400
-
-ddrem371 remainder   2.400  2        ->  0.400
-
-ddrem381 remainder 12345  1         ->  0
-ddrem382 remainder 12345  1.0001    ->  0.7657
-ddrem383 remainder 12345  1.001     ->  0.668
-ddrem384 remainder 12345  1.01      ->  0.78
-ddrem385 remainder 12345  1.1       ->  0.8
-ddrem386 remainder 12355  4         ->  3
-ddrem387 remainder 12345  4         ->  1
-ddrem388 remainder 12355  4.0001    ->  2.6912
-ddrem389 remainder 12345  4.0001    ->  0.6914
-ddrem390 remainder 12345  4.9       ->  1.9
-ddrem391 remainder 12345  4.99      ->  4.73
-ddrem392 remainder 12345  4.999     ->  2.469
-ddrem393 remainder 12345  4.9999    ->  0.2469
-ddrem394 remainder 12345  5         ->  0
-ddrem395 remainder 12345  5.0001    ->  4.7532
-ddrem396 remainder 12345  5.001     ->  2.532
-ddrem397 remainder 12345  5.01      ->  0.36
-ddrem398 remainder 12345  5.1       ->  3.0
-
--- the nasty division-by-1 cases
-ddrem401 remainder   0.5         1   ->  0.5
-ddrem402 remainder   0.55        1   ->  0.55
-ddrem403 remainder   0.555       1   ->  0.555
-ddrem404 remainder   0.5555      1   ->  0.5555
-ddrem405 remainder   0.55555     1   ->  0.55555
-ddrem406 remainder   0.555555    1   ->  0.555555
-ddrem407 remainder   0.5555555   1   ->  0.5555555
-ddrem408 remainder   0.55555555  1   ->  0.55555555
-ddrem409 remainder   0.555555555 1   ->  0.555555555
-
--- folddowns
-ddrem421 remainder   1E+384       1  ->   NaN Division_impossible
-ddrem422 remainder   1E+384  1E+383  ->   0E+369 Clamped
-ddrem423 remainder   1E+384  2E+383  ->   0E+369 Clamped
-ddrem424 remainder   1E+384  3E+383  ->   1.00000000000000E+383 Clamped
-ddrem425 remainder   1E+384  4E+383  ->   2.00000000000000E+383 Clamped
-ddrem426 remainder   1E+384  5E+383  ->   0E+369 Clamped
-ddrem427 remainder   1E+384  6E+383  ->   4.00000000000000E+383 Clamped
-ddrem428 remainder   1E+384  7E+383  ->   3.00000000000000E+383 Clamped
-ddrem429 remainder   1E+384  8E+383  ->   2.00000000000000E+383 Clamped
-ddrem430 remainder   1E+384  9E+383  ->   1.00000000000000E+383 Clamped
--- tinies
-ddrem431 remainder   1E-397  1E-398  ->   0E-398
-ddrem432 remainder   1E-397  2E-398  ->   0E-398
-ddrem433 remainder   1E-397  3E-398  ->   1E-398 Subnormal
-ddrem434 remainder   1E-397  4E-398  ->   2E-398 Subnormal
-ddrem435 remainder   1E-397  5E-398  ->   0E-398
-ddrem436 remainder   1E-397  6E-398  ->   4E-398 Subnormal
-ddrem437 remainder   1E-397  7E-398  ->   3E-398 Subnormal
-ddrem438 remainder   1E-397  8E-398  ->   2E-398 Subnormal
-ddrem439 remainder   1E-397  9E-398  ->   1E-398 Subnormal
-ddrem440 remainder   1E-397 10E-398  ->   0E-398
-ddrem441 remainder   1E-397 11E-398  -> 1.0E-397 Subnormal
-ddrem442 remainder 100E-397 11E-398  -> 1.0E-397 Subnormal
-ddrem443 remainder 100E-397 20E-398  ->   0E-398
-ddrem444 remainder 100E-397 21E-398  -> 1.3E-397 Subnormal
-ddrem445 remainder 100E-397 30E-398  -> 1.0E-397 Subnormal
-
--- zero signs
-ddrem650 remainder  1  1 ->  0
-ddrem651 remainder -1  1 -> -0
-ddrem652 remainder  1 -1 ->  0
-ddrem653 remainder -1 -1 -> -0
-ddrem654 remainder  0  1 ->  0
-ddrem655 remainder -0  1 -> -0
-ddrem656 remainder  0 -1 ->  0
-ddrem657 remainder -0 -1 -> -0
-ddrem658 remainder  0.00  1  ->  0.00
-ddrem659 remainder -0.00  1  -> -0.00
-
--- Specials
-ddrem680 remainder  Inf  -Inf   ->  NaN Invalid_operation
-ddrem681 remainder  Inf  -1000  ->  NaN Invalid_operation
-ddrem682 remainder  Inf  -1     ->  NaN Invalid_operation
-ddrem683 remainder  Inf   0     ->  NaN Invalid_operation
-ddrem684 remainder  Inf  -0     ->  NaN Invalid_operation
-ddrem685 remainder  Inf   1     ->  NaN Invalid_operation
-ddrem686 remainder  Inf   1000  ->  NaN Invalid_operation
-ddrem687 remainder  Inf   Inf   ->  NaN Invalid_operation
-ddrem688 remainder -1000  Inf   -> -1000
-ddrem689 remainder -Inf   Inf   ->  NaN Invalid_operation
-ddrem691 remainder -1     Inf   -> -1
-ddrem692 remainder  0     Inf   ->  0
-ddrem693 remainder -0     Inf   -> -0
-ddrem694 remainder  1     Inf   ->  1
-ddrem695 remainder  1000  Inf   ->  1000
-ddrem696 remainder  Inf   Inf   ->  NaN Invalid_operation
-
-ddrem700 remainder -Inf  -Inf   ->  NaN Invalid_operation
-ddrem701 remainder -Inf  -1000  ->  NaN Invalid_operation
-ddrem702 remainder -Inf  -1     ->  NaN Invalid_operation
-ddrem703 remainder -Inf  -0     ->  NaN Invalid_operation
-ddrem704 remainder -Inf   0     ->  NaN Invalid_operation
-ddrem705 remainder -Inf   1     ->  NaN Invalid_operation
-ddrem706 remainder -Inf   1000  ->  NaN Invalid_operation
-ddrem707 remainder -Inf   Inf   ->  NaN Invalid_operation
-ddrem708 remainder -Inf  -Inf   ->  NaN Invalid_operation
-ddrem709 remainder -1000  Inf   -> -1000
-ddrem710 remainder -1    -Inf   -> -1
-ddrem711 remainder -0    -Inf   -> -0
-ddrem712 remainder  0    -Inf   ->  0
-ddrem713 remainder  1    -Inf   ->  1
-ddrem714 remainder  1000 -Inf   ->  1000
-ddrem715 remainder  Inf  -Inf   ->  NaN Invalid_operation
-
-ddrem721 remainder  NaN -Inf    ->  NaN
-ddrem722 remainder  NaN -1000   ->  NaN
-ddrem723 remainder  NaN -1      ->  NaN
-ddrem724 remainder  NaN -0      ->  NaN
-ddrem725 remainder -NaN  0      -> -NaN
-ddrem726 remainder  NaN  1      ->  NaN
-ddrem727 remainder  NaN  1000   ->  NaN
-ddrem728 remainder  NaN  Inf    ->  NaN
-ddrem729 remainder  NaN -NaN    ->  NaN
-ddrem730 remainder -Inf  NaN    ->  NaN
-ddrem731 remainder -1000 NaN    ->  NaN
-ddrem732 remainder -1    NaN    ->  NaN
-ddrem733 remainder -0   -NaN    -> -NaN
-ddrem734 remainder  0    NaN    ->  NaN
-ddrem735 remainder  1   -NaN    -> -NaN
-ddrem736 remainder  1000 NaN    ->  NaN
-ddrem737 remainder  Inf  NaN    ->  NaN
-
-ddrem741 remainder  sNaN -Inf   ->  NaN  Invalid_operation
-ddrem742 remainder  sNaN -1000  ->  NaN  Invalid_operation
-ddrem743 remainder -sNaN -1     -> -NaN  Invalid_operation
-ddrem744 remainder  sNaN -0     ->  NaN  Invalid_operation
-ddrem745 remainder  sNaN  0     ->  NaN  Invalid_operation
-ddrem746 remainder  sNaN  1     ->  NaN  Invalid_operation
-ddrem747 remainder  sNaN  1000  ->  NaN  Invalid_operation
-ddrem749 remainder  sNaN  NaN   ->  NaN  Invalid_operation
-ddrem750 remainder  sNaN sNaN   ->  NaN  Invalid_operation
-ddrem751 remainder  NaN  sNaN   ->  NaN  Invalid_operation
-ddrem752 remainder -Inf  sNaN   ->  NaN  Invalid_operation
-ddrem753 remainder -1000 sNaN   ->  NaN  Invalid_operation
-ddrem754 remainder -1    sNaN   ->  NaN  Invalid_operation
-ddrem755 remainder -0    sNaN   ->  NaN  Invalid_operation
-ddrem756 remainder  0    sNaN   ->  NaN  Invalid_operation
-ddrem757 remainder  1    sNaN   ->  NaN  Invalid_operation
-ddrem758 remainder  1000 sNaN   ->  NaN  Invalid_operation
-ddrem759 remainder  Inf -sNaN   -> -NaN  Invalid_operation
-
--- propaging NaNs
-ddrem760 remainder  NaN1   NaN7   ->  NaN1
-ddrem761 remainder sNaN2   NaN8   ->  NaN2 Invalid_operation
-ddrem762 remainder  NaN3  sNaN9   ->  NaN9 Invalid_operation
-ddrem763 remainder sNaN4  sNaN10  ->  NaN4 Invalid_operation
-ddrem764 remainder    15   NaN11  ->  NaN11
-ddrem765 remainder  NaN6   NaN12  ->  NaN6
-ddrem766 remainder  Inf    NaN13  ->  NaN13
-ddrem767 remainder  NaN14  -Inf   ->  NaN14
-ddrem768 remainder    0    NaN15  ->  NaN15
-ddrem769 remainder  NaN16   -0    ->  NaN16
-
--- edge cases of impossible
-ddrem770  remainder  1234567890123456  10    ->  6
-ddrem771  remainder  1234567890123456   1    ->  0
-ddrem772  remainder  1234567890123456   0.1  ->  NaN Division_impossible
-ddrem773  remainder  1234567890123456   0.01 ->  NaN Division_impossible
-
--- long operand checks
-ddrem801 remainder 12345678000 100 -> 0
-ddrem802 remainder 1 12345678000   -> 1
-ddrem803 remainder 1234567800  10  -> 0
-ddrem804 remainder 1 1234567800    -> 1
-ddrem805 remainder 1234567890  10  -> 0
-ddrem806 remainder 1 1234567890    -> 1
-ddrem807 remainder 1234567891  10  -> 1
-ddrem808 remainder 1 1234567891    -> 1
-ddrem809 remainder 12345678901 100 -> 1
-ddrem810 remainder 1 12345678901   -> 1
-ddrem811 remainder 1234567896  10  -> 6
-ddrem812 remainder 1 1234567896    -> 1
-
-ddrem821 remainder 12345678000 100 -> 0
-ddrem822 remainder 1 12345678000   -> 1
-ddrem823 remainder 1234567800  10  -> 0
-ddrem824 remainder 1 1234567800    -> 1
-ddrem825 remainder 1234567890  10  -> 0
-ddrem826 remainder 1 1234567890    -> 1
-ddrem827 remainder 1234567891  10  -> 1
-ddrem828 remainder 1 1234567891    -> 1
-ddrem829 remainder 12345678901 100 -> 1
-ddrem830 remainder 1 12345678901   -> 1
-ddrem831 remainder 1234567896  10  -> 6
-ddrem832 remainder 1 1234567896    -> 1
-
--- from divideint
-ddrem840 remainder  100000000.0   1  ->  0.0
-ddrem841 remainder  100000000.4   1  ->  0.4
-ddrem842 remainder  100000000.5   1  ->  0.5
-ddrem843 remainder  100000000.9   1  ->  0.9
-ddrem844 remainder  100000000.999 1  ->  0.999
-ddrem850 remainder  100000003     5  ->  3
-ddrem851 remainder  10000003      5  ->  3
-ddrem852 remainder  1000003       5  ->  3
-ddrem853 remainder  100003        5  ->  3
-ddrem854 remainder  10003         5  ->  3
-ddrem855 remainder  1003          5  ->  3
-ddrem856 remainder  103           5  ->  3
-ddrem857 remainder  13            5  ->  3
-ddrem858 remainder  1             5  ->  1
-
--- Vladimir's cases         1234567890123456
-ddrem860 remainder 123.0e1 1000000000000000  -> 1230
-ddrem861 remainder 1230    1000000000000000  -> 1230
-ddrem862 remainder 12.3e2  1000000000000000  -> 1230
-ddrem863 remainder 1.23e3  1000000000000000  -> 1230
-ddrem864 remainder 123e1   1000000000000000  -> 1230
-ddrem870 remainder 123e1    1000000000000000 -> 1230
-ddrem871 remainder 123e1     100000000000000 -> 1230
-ddrem872 remainder 123e1      10000000000000 -> 1230
-ddrem873 remainder 123e1       1000000000000 -> 1230
-ddrem874 remainder 123e1        100000000000 -> 1230
-ddrem875 remainder 123e1         10000000000 -> 1230
-ddrem876 remainder 123e1          1000000000 -> 1230
-ddrem877 remainder 123e1           100000000 -> 1230
-ddrem878 remainder 1230            100000000 -> 1230
-ddrem879 remainder 123e1            10000000 -> 1230
-ddrem880 remainder 123e1             1000000 -> 1230
-ddrem881 remainder 123e1              100000 -> 1230
-ddrem882 remainder 123e1               10000 -> 1230
-ddrem883 remainder 123e1                1000 ->  230
-ddrem884 remainder 123e1                 100 ->   30
-ddrem885 remainder 123e1                  10 ->    0
-ddrem886 remainder 123e1                   1 ->    0
-
-ddrem890 remainder 123e1    2000000000000000 -> 1230
-ddrem891 remainder 123e1     200000000000000 -> 1230
-ddrem892 remainder 123e1      20000000000000 -> 1230
-ddrem893 remainder 123e1       2000000000000 -> 1230
-ddrem894 remainder 123e1        200000000000 -> 1230
-ddrem895 remainder 123e1         20000000000 -> 1230
-ddrem896 remainder 123e1          2000000000 -> 1230
-ddrem897 remainder 123e1           200000000 -> 1230
-ddrem899 remainder 123e1            20000000 -> 1230
-ddrem900 remainder 123e1             2000000 -> 1230
-ddrem901 remainder 123e1              200000 -> 1230
-ddrem902 remainder 123e1               20000 -> 1230
-ddrem903 remainder 123e1                2000 -> 1230
-ddrem904 remainder 123e1                 200 ->   30
-ddrem905 remainder 123e1                  20 ->   10
-ddrem906 remainder 123e1                   2 ->    0
-
-ddrem910 remainder 123e1    5000000000000000 -> 1230
-ddrem911 remainder 123e1     500000000000000 -> 1230
-ddrem912 remainder 123e1      50000000000000 -> 1230
-ddrem913 remainder 123e1       5000000000000 -> 1230
-ddrem914 remainder 123e1        500000000000 -> 1230
-ddrem915 remainder 123e1         50000000000 -> 1230
-ddrem916 remainder 123e1          5000000000 -> 1230
-ddrem917 remainder 123e1           500000000 -> 1230
-ddrem919 remainder 123e1            50000000 -> 1230
-ddrem920 remainder 123e1             5000000 -> 1230
-ddrem921 remainder 123e1              500000 -> 1230
-ddrem922 remainder 123e1               50000 -> 1230
-ddrem923 remainder 123e1                5000 -> 1230
-ddrem924 remainder 123e1                 500 ->  230
-ddrem925 remainder 123e1                  50 ->   30
-ddrem926 remainder 123e1                   5 ->    0
-
-ddrem930 remainder 123e1    9000000000000000 -> 1230
-ddrem931 remainder 123e1     900000000000000 -> 1230
-ddrem932 remainder 123e1      90000000000000 -> 1230
-ddrem933 remainder 123e1       9000000000000 -> 1230
-ddrem934 remainder 123e1        900000000000 -> 1230
-ddrem935 remainder 123e1         90000000000 -> 1230
-ddrem936 remainder 123e1          9000000000 -> 1230
-ddrem937 remainder 123e1           900000000 -> 1230
-ddrem939 remainder 123e1            90000000 -> 1230
-ddrem940 remainder 123e1             9000000 -> 1230
-ddrem941 remainder 123e1              900000 -> 1230
-ddrem942 remainder 123e1               90000 -> 1230
-ddrem943 remainder 123e1                9000 -> 1230
-ddrem944 remainder 123e1                 900 ->  330
-ddrem945 remainder 123e1                  90 ->   60
-ddrem946 remainder 123e1                   9 ->    6
-
-ddrem950 remainder 123e1   1000000000000000 -> 1230
-ddrem961 remainder 123e1   2999999999999999 -> 1230
-ddrem962 remainder 123e1   3999999999999999 -> 1230
-ddrem963 remainder 123e1   4999999999999999 -> 1230
-ddrem964 remainder 123e1   5999999999999999 -> 1230
-ddrem965 remainder 123e1   6999999999999999 -> 1230
-ddrem966 remainder 123e1   7999999999999999 -> 1230
-ddrem967 remainder 123e1   8999999999999999 -> 1230
-ddrem968 remainder 123e1   9999999999999999 -> 1230
-ddrem969 remainder 123e1   9876543210987654 -> 1230
-
-ddrem980 remainder 123e1 1000E299 -> 1.23E+3  -- 123E+1 internally
-
--- overflow and underflow tests [from divide]
-ddrem1051 remainder  1e+277  1e-311 ->  NaN Division_impossible
-ddrem1052 remainder  1e+277 -1e-311 ->  NaN Division_impossible
-ddrem1053 remainder -1e+277  1e-311 ->  NaN Division_impossible
-ddrem1054 remainder -1e+277 -1e-311 ->  NaN Division_impossible
-ddrem1055 remainder  1e-277  1e+311 ->  1E-277
-ddrem1056 remainder  1e-277 -1e+311 ->  1E-277
-ddrem1057 remainder -1e-277  1e+311 -> -1E-277
-ddrem1058 remainder -1e-277 -1e+311 -> -1E-277
-
--- destructive subtract
-ddrem1101 remainder  1234567890123456  1.000000000000001  ->  0.765432109876546
-ddrem1102 remainder  1234567890123456   1.00000000000001  ->   0.65432109876557
-ddrem1103 remainder  1234567890123456    1.0000000000001  ->    0.5432109876668
-ddrem1104 remainder  1234567890123455  4.000000000000001  ->  2.691358027469137
-ddrem1105 remainder  1234567890123456  4.000000000000001  ->  3.691358027469137
-ddrem1106 remainder  1234567890123456    4.9999999999999  ->    0.6913578024696
-ddrem1107 remainder  1234567890123456   4.99999999999999  ->   3.46913578024691
-ddrem1108 remainder  1234567890123456  4.999999999999999  ->  1.246913578024691
-ddrem1109 remainder  1234567890123456  5.000000000000001  ->  0.753086421975309
-ddrem1110 remainder  1234567890123456   5.00000000000001  ->   3.53086421975310
-ddrem1111 remainder  1234567890123456    5.0000000000001  ->    1.3086421975314
-
--- Null tests
-ddrem1000 remainder 10  # -> NaN Invalid_operation
-ddrem1001 remainder  # 10 -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRemainderNear.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRemainderNear.decTest
deleted file mode 100644
index 6ba64eb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRemainderNear.decTest
+++ /dev/null
@@ -1,629 +0,0 @@
-------------------------------------------------------------------------
--- ddRemainderNear.decTest -- decDouble remainder-near                --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- sanity checks (as base, above)
-ddrmn001 remaindernear  1     1    ->  0
-ddrmn002 remaindernear  2     1    ->  0
-ddrmn003 remaindernear  1     2    ->  1
-ddrmn004 remaindernear  2     2    ->  0
-ddrmn005 remaindernear  0     1    ->  0
-ddrmn006 remaindernear  0     2    ->  0
-ddrmn007 remaindernear  1     3    ->  1
-ddrmn008 remaindernear  2     3    -> -1
-ddrmn009 remaindernear  3     3    ->  0
-
-ddrmn010 remaindernear  2.4   1    ->  0.4
-ddrmn011 remaindernear  2.4   -1   ->  0.4
-ddrmn012 remaindernear  -2.4  1    ->  -0.4
-ddrmn013 remaindernear  -2.4  -1   ->  -0.4
-ddrmn014 remaindernear  2.40  1    ->  0.40
-ddrmn015 remaindernear  2.400 1    ->  0.400
-ddrmn016 remaindernear  2.4   2    ->  0.4
-ddrmn017 remaindernear  2.400 2    ->  0.400
-ddrmn018 remaindernear  2.    2    ->  0
-ddrmn019 remaindernear  20    20   ->  0
-
-ddrmn020 remaindernear  187   187    ->  0
-ddrmn021 remaindernear  5     2      ->  1
-ddrmn022 remaindernear  5     2.0    ->  1.0
-ddrmn023 remaindernear  5     2.000  ->  1.000
-ddrmn024 remaindernear  5     0.200  ->  0.000
-ddrmn025 remaindernear  5     0.200  ->  0.000
-
-ddrmn030 remaindernear  1     2      ->  1
-ddrmn031 remaindernear  1     4      ->  1
-ddrmn032 remaindernear  1     8      ->  1
-
-ddrmn033 remaindernear  1     16     ->  1
-ddrmn034 remaindernear  1     32     ->  1
-ddrmn035 remaindernear  1     64     ->  1
-ddrmn040 remaindernear  1    -2      ->  1
-ddrmn041 remaindernear  1    -4      ->  1
-ddrmn042 remaindernear  1    -8      ->  1
-ddrmn043 remaindernear  1    -16     ->  1
-ddrmn044 remaindernear  1    -32     ->  1
-ddrmn045 remaindernear  1    -64     ->  1
-ddrmn050 remaindernear -1     2      ->  -1
-ddrmn051 remaindernear -1     4      ->  -1
-ddrmn052 remaindernear -1     8      ->  -1
-ddrmn053 remaindernear -1     16     ->  -1
-ddrmn054 remaindernear -1     32     ->  -1
-ddrmn055 remaindernear -1     64     ->  -1
-ddrmn060 remaindernear -1    -2      ->  -1
-ddrmn061 remaindernear -1    -4      ->  -1
-ddrmn062 remaindernear -1    -8      ->  -1
-ddrmn063 remaindernear -1    -16     ->  -1
-ddrmn064 remaindernear -1    -32     ->  -1
-ddrmn065 remaindernear -1    -64     ->  -1
-
-ddrmn066 remaindernear          9.9   1  -> -0.1
-ddrmn067 remaindernear         99.7   1  -> -0.3
-ddrmn068 remaindernear  999999999     1  -> 0
-ddrmn069 remaindernear  999999999.4   1  -> 0.4
-ddrmn070 remaindernear  999999999.5   1  -> -0.5
-ddrmn071 remaindernear  999999999.9   1  -> -0.1
-ddrmn072 remaindernear  999999999.999 1  -> -0.001
-ddrmn073 remaindernear  999999.999999 1  -> -0.000001
-ddrmn074 remaindernear  9             1  -> 0
-ddrmn075 remaindernear  9999999999999999 1  -> 0
-ddrmn076 remaindernear  9999999999999999 2  -> -1
-ddrmn077 remaindernear  9999999999999999 3  -> 0
-ddrmn078 remaindernear  9999999999999999 4  -> -1
-
-ddrmn080 remaindernear  0.            1  -> 0
-ddrmn081 remaindernear  .0            1  -> 0.0
-ddrmn082 remaindernear  0.00          1  -> 0.00
-ddrmn083 remaindernear  0.00E+9       1  -> 0
-ddrmn084 remaindernear  0.00E+3       1  -> 0
-ddrmn085 remaindernear  0.00E+2       1  -> 0
-ddrmn086 remaindernear  0.00E+1       1  -> 0.0
-ddrmn087 remaindernear  0.00E+0       1  -> 0.00
-ddrmn088 remaindernear  0.00E-0       1  -> 0.00
-ddrmn089 remaindernear  0.00E-1       1  -> 0.000
-ddrmn090 remaindernear  0.00E-2       1  -> 0.0000
-ddrmn091 remaindernear  0.00E-3       1  -> 0.00000
-ddrmn092 remaindernear  0.00E-4       1  -> 0.000000
-ddrmn093 remaindernear  0.00E-5       1  -> 0E-7
-ddrmn094 remaindernear  0.00E-6       1  -> 0E-8
-ddrmn095 remaindernear  0.0000E-50    1  -> 0E-54
-
--- Various flavours of remaindernear by 0
-ddrmn101 remaindernear  0       0   -> NaN Division_undefined
-ddrmn102 remaindernear  0      -0   -> NaN Division_undefined
-ddrmn103 remaindernear -0       0   -> NaN Division_undefined
-ddrmn104 remaindernear -0      -0   -> NaN Division_undefined
-ddrmn105 remaindernear  0.0E5   0   -> NaN Division_undefined
-ddrmn106 remaindernear  0.000   0   -> NaN Division_undefined
--- [Some think this next group should be Division_by_zero exception, but
--- IEEE 854 is explicit that it is Invalid operation .. for
--- remainder-near, anyway]
-ddrmn107 remaindernear  0.0001  0   -> NaN Invalid_operation
-ddrmn108 remaindernear  0.01    0   -> NaN Invalid_operation
-ddrmn109 remaindernear  0.1     0   -> NaN Invalid_operation
-ddrmn110 remaindernear  1       0   -> NaN Invalid_operation
-ddrmn111 remaindernear  1       0.0 -> NaN Invalid_operation
-ddrmn112 remaindernear 10       0.0 -> NaN Invalid_operation
-ddrmn113 remaindernear 1E+100   0.0 -> NaN Invalid_operation
-ddrmn114 remaindernear 1E+380   0   -> NaN Invalid_operation
-ddrmn115 remaindernear  0.0001 -0   -> NaN Invalid_operation
-ddrmn116 remaindernear  0.01   -0   -> NaN Invalid_operation
-ddrmn119 remaindernear  0.1    -0   -> NaN Invalid_operation
-ddrmn120 remaindernear  1      -0   -> NaN Invalid_operation
-ddrmn121 remaindernear  1      -0.0 -> NaN Invalid_operation
-ddrmn122 remaindernear 10      -0.0 -> NaN Invalid_operation
-ddrmn123 remaindernear 1E+100  -0.0 -> NaN Invalid_operation
-ddrmn124 remaindernear 1E+384  -0   -> NaN Invalid_operation
--- and zeros on left
-ddrmn130 remaindernear  0      1   ->  0
-ddrmn131 remaindernear  0     -1   ->  0
-ddrmn132 remaindernear  0.0    1   ->  0.0
-ddrmn133 remaindernear  0.0   -1   ->  0.0
-ddrmn134 remaindernear -0      1   -> -0
-ddrmn135 remaindernear -0     -1   -> -0
-ddrmn136 remaindernear -0.0    1   -> -0.0
-ddrmn137 remaindernear -0.0   -1   -> -0.0
-
--- 0.5ers
-ddrmn143 remaindernear   0.5  2     ->  0.5
-ddrmn144 remaindernear   0.5  2.1   ->  0.5
-ddrmn145 remaindernear   0.5  2.01  ->  0.50
-ddrmn146 remaindernear   0.5  2.001 ->  0.500
-ddrmn147 remaindernear   0.50 2     ->  0.50
-ddrmn148 remaindernear   0.50 2.01  ->  0.50
-ddrmn149 remaindernear   0.50 2.001 ->  0.500
-
--- steadies
-ddrmn150 remaindernear  1  1   -> 0
-ddrmn151 remaindernear  1  2   -> 1
-ddrmn152 remaindernear  1  3   -> 1
-ddrmn153 remaindernear  1  4   -> 1
-ddrmn154 remaindernear  1  5   -> 1
-ddrmn155 remaindernear  1  6   -> 1
-ddrmn156 remaindernear  1  7   -> 1
-ddrmn157 remaindernear  1  8   -> 1
-ddrmn158 remaindernear  1  9   -> 1
-ddrmn159 remaindernear  1  10  -> 1
-ddrmn160 remaindernear  1  1   -> 0
-ddrmn161 remaindernear  2  1   -> 0
-ddrmn162 remaindernear  3  1   -> 0
-ddrmn163 remaindernear  4  1   -> 0
-ddrmn164 remaindernear  5  1   -> 0
-ddrmn165 remaindernear  6  1   -> 0
-ddrmn166 remaindernear  7  1   -> 0
-ddrmn167 remaindernear  8  1   -> 0
-ddrmn168 remaindernear  9  1   -> 0
-ddrmn169 remaindernear  10 1   -> 0
-
--- some differences from remainder
-ddrmn171 remaindernear   0.4  1.020 ->  0.400
-ddrmn172 remaindernear   0.50 1.020 ->  0.500
-ddrmn173 remaindernear   0.51 1.020 ->  0.510
-ddrmn174 remaindernear   0.52 1.020 -> -0.500
-ddrmn175 remaindernear   0.6  1.020 -> -0.420
-
--- More flavours of remaindernear by 0
-ddrmn201 remaindernear  0      0   -> NaN Division_undefined
-ddrmn202 remaindernear  0.0E5  0   -> NaN Division_undefined
-ddrmn203 remaindernear  0.000  0   -> NaN Division_undefined
-ddrmn204 remaindernear  0.0001 0   -> NaN Invalid_operation
-ddrmn205 remaindernear  0.01   0   -> NaN Invalid_operation
-ddrmn206 remaindernear  0.1    0   -> NaN Invalid_operation
-ddrmn207 remaindernear  1      0   -> NaN Invalid_operation
-ddrmn208 remaindernear  1      0.0 -> NaN Invalid_operation
-ddrmn209 remaindernear 10      0.0 -> NaN Invalid_operation
-ddrmn210 remaindernear 1E+100  0.0 -> NaN Invalid_operation
-ddrmn211 remaindernear 1E+380  0   -> NaN Invalid_operation
-
--- tests from the extended specification
-ddrmn221 remaindernear 2.1     3   -> -0.9
-ddrmn222 remaindernear  10     6   -> -2
-ddrmn223 remaindernear  10     3   ->  1
-ddrmn224 remaindernear -10     3   -> -1
-ddrmn225 remaindernear  10.2   1   -> 0.2
-ddrmn226 remaindernear  10     0.3 -> 0.1
-ddrmn227 remaindernear   3.6   1.3 -> -0.3
-
--- some differences from remainder
-ddrmn231 remaindernear  -0.4  1.020 -> -0.400
-ddrmn232 remaindernear  -0.50 1.020 -> -0.500
-ddrmn233 remaindernear  -0.51 1.020 -> -0.510
-ddrmn234 remaindernear  -0.52 1.020 ->  0.500
-ddrmn235 remaindernear  -0.6  1.020 ->  0.420
-
--- high Xs
-ddrmn240 remaindernear  1E+2  1.00  ->  0.00
-
--- ddrmn3xx are from DiagBigDecimal
-ddrmn301 remaindernear   1    3     ->  1
-ddrmn302 remaindernear   5    5     ->  0
-ddrmn303 remaindernear   13   10    ->  3
-ddrmn304 remaindernear   13   50    ->  13
-ddrmn305 remaindernear   13   100   ->  13
-ddrmn306 remaindernear   13   1000  ->  13
-ddrmn307 remaindernear   .13    1   ->  0.13
-ddrmn308 remaindernear   0.133  1   ->  0.133
-ddrmn309 remaindernear   0.1033 1   ->  0.1033
-ddrmn310 remaindernear   1.033  1   ->  0.033
-ddrmn311 remaindernear   10.33  1   ->  0.33
-ddrmn312 remaindernear   10.33 10   ->  0.33
-ddrmn313 remaindernear   103.3  1   ->  0.3
-ddrmn314 remaindernear   133   10   ->  3
-ddrmn315 remaindernear   1033  10   ->  3
-ddrmn316 remaindernear   1033  50   -> -17
-ddrmn317 remaindernear   101.0  3   -> -1.0
-ddrmn318 remaindernear   102.0  3   ->  0.0
-ddrmn319 remaindernear   103.0  3   ->  1.0
-ddrmn320 remaindernear   2.40   1   ->  0.40
-ddrmn321 remaindernear   2.400  1   ->  0.400
-ddrmn322 remaindernear   2.4    1   ->  0.4
-ddrmn323 remaindernear   2.4    2   ->  0.4
-ddrmn324 remaindernear   2.400  2   ->  0.400
-ddrmn325 remaindernear   1   0.3    ->  0.1
-ddrmn326 remaindernear   1   0.30   ->  0.10
-ddrmn327 remaindernear   1   0.300  ->  0.100
-ddrmn328 remaindernear   1   0.3000 ->  0.1000
-ddrmn329 remaindernear   1.0    0.3 ->  0.1
-ddrmn330 remaindernear   1.00   0.3 ->  0.10
-ddrmn331 remaindernear   1.000  0.3 ->  0.100
-ddrmn332 remaindernear   1.0000 0.3 ->  0.1000
-ddrmn333 remaindernear   0.5  2     ->  0.5
-ddrmn334 remaindernear   0.5  2.1   ->  0.5
-ddrmn335 remaindernear   0.5  2.01  ->  0.50
-ddrmn336 remaindernear   0.5  2.001 ->  0.500
-ddrmn337 remaindernear   0.50 2     ->  0.50
-ddrmn338 remaindernear   0.50 2.01  ->  0.50
-ddrmn339 remaindernear   0.50 2.001 ->  0.500
-
-ddrmn340 remaindernear   0.5   0.5000001    ->  -1E-7
-ddrmn341 remaindernear   0.5   0.50000001    ->  -1E-8
-ddrmn342 remaindernear   0.5   0.500000001    ->  -1E-9
-ddrmn343 remaindernear   0.5   0.5000000001    ->  -1E-10
-ddrmn344 remaindernear   0.5   0.50000000001    ->  -1E-11
-ddrmn345 remaindernear   0.5   0.4999999    ->  1E-7
-ddrmn346 remaindernear   0.5   0.49999999    ->  1E-8
-ddrmn347 remaindernear   0.5   0.499999999    ->  1E-9
-ddrmn348 remaindernear   0.5   0.4999999999    ->  1E-10
-ddrmn349 remaindernear   0.5   0.49999999999    ->  1E-11
-ddrmn350 remaindernear   0.5   0.499999999999    ->  1E-12
-
-ddrmn351 remaindernear   0.03  7  ->  0.03
-ddrmn352 remaindernear   5   2    ->  1
-ddrmn353 remaindernear   4.1   2    ->  0.1
-ddrmn354 remaindernear   4.01   2    ->  0.01
-ddrmn355 remaindernear   4.001   2    ->  0.001
-ddrmn356 remaindernear   4.0001   2    ->  0.0001
-ddrmn357 remaindernear   4.00001   2    ->  0.00001
-ddrmn358 remaindernear   4.000001   2    ->  0.000001
-ddrmn359 remaindernear   4.0000001   2    ->  1E-7
-
-ddrmn360 remaindernear   1.2   0.7345 -> -0.2690
-ddrmn361 remaindernear   0.8   12     ->  0.8
-ddrmn362 remaindernear   0.8   0.2    ->  0.0
-ddrmn363 remaindernear   0.8   0.3    -> -0.1
-ddrmn364 remaindernear   0.800   12   ->  0.800
-ddrmn365 remaindernear   0.800   1.7  ->  0.800
-ddrmn366 remaindernear   2.400   2    ->  0.400
-
--- round to even
-ddrmn371 remaindernear   121     2    ->  1
-ddrmn372 remaindernear   122     2    ->  0
-ddrmn373 remaindernear   123     2    -> -1
-ddrmn374 remaindernear   124     2    ->  0
-ddrmn375 remaindernear   125     2    ->  1
-ddrmn376 remaindernear   126     2    ->  0
-ddrmn377 remaindernear   127     2    -> -1
-
-ddrmn381 remaindernear 12345  1         ->  0
-ddrmn382 remaindernear 12345  1.0001    -> -0.2344
-ddrmn383 remaindernear 12345  1.001     -> -0.333
-ddrmn384 remaindernear 12345  1.01      -> -0.23
-ddrmn385 remaindernear 12345  1.1       -> -0.3
-ddrmn386 remaindernear 12355  4         -> -1
-ddrmn387 remaindernear 12345  4         ->  1
-ddrmn388 remaindernear 12355  4.0001    -> -1.3089
-ddrmn389 remaindernear 12345  4.0001    ->  0.6914
-ddrmn390 remaindernear 12345  4.9       ->  1.9
-ddrmn391 remaindernear 12345  4.99      -> -0.26
-ddrmn392 remaindernear 12345  4.999     ->  2.469
-ddrmn393 remaindernear 12345  4.9999    ->  0.2469
-ddrmn394 remaindernear 12345  5         ->  0
-ddrmn395 remaindernear 12345  5.0001    -> -0.2469
-ddrmn396 remaindernear 12345  5.001     -> -2.469
-ddrmn397 remaindernear 12345  5.01      ->  0.36
-ddrmn398 remaindernear 12345  5.1       -> -2.1
-
--- the nasty division-by-1 cases
-ddrmn401 remaindernear   0.4         1   ->  0.4
-ddrmn402 remaindernear   0.45        1   ->  0.45
-ddrmn403 remaindernear   0.455       1   ->  0.455
-ddrmn404 remaindernear   0.4555      1   ->  0.4555
-ddrmn405 remaindernear   0.45555     1   ->  0.45555
-ddrmn406 remaindernear   0.455555    1   ->  0.455555
-ddrmn407 remaindernear   0.4555555   1   ->  0.4555555
-ddrmn408 remaindernear   0.45555555  1   ->  0.45555555
-ddrmn409 remaindernear   0.455555555 1   ->  0.455555555
--- with spill... [412 exercises sticktab loop]
-ddrmn411 remaindernear   0.5         1   ->  0.5
-ddrmn412 remaindernear   0.55        1   -> -0.45
-ddrmn413 remaindernear   0.555       1   -> -0.445
-ddrmn414 remaindernear   0.5555      1   -> -0.4445
-ddrmn415 remaindernear   0.55555     1   -> -0.44445
-ddrmn416 remaindernear   0.555555    1   -> -0.444445
-ddrmn417 remaindernear   0.5555555   1   -> -0.4444445
-ddrmn418 remaindernear   0.55555555  1   -> -0.44444445
-ddrmn419 remaindernear   0.555555555 1   -> -0.444444445
-
--- folddowns
-ddrmn421 remaindernear   1E+384       1  ->   NaN Division_impossible
-ddrmn422 remaindernear   1E+384  1E+383  ->   0E+369 Clamped
-ddrmn423 remaindernear   1E+384  2E+383  ->   0E+369 Clamped
-ddrmn424 remaindernear   1E+384  3E+383  ->   1.00000000000000E+383 Clamped
-ddrmn425 remaindernear   1E+384  4E+383  ->   2.00000000000000E+383 Clamped
-ddrmn426 remaindernear   1E+384  5E+383  ->   0E+369 Clamped
-ddrmn427 remaindernear   1E+384  6E+383  ->  -2.00000000000000E+383 Clamped
-ddrmn428 remaindernear   1E+384  7E+383  ->   3.00000000000000E+383 Clamped
-ddrmn429 remaindernear   1E+384  8E+383  ->   2.00000000000000E+383 Clamped
-ddrmn430 remaindernear   1E+384  9E+383  ->   1.00000000000000E+383 Clamped
--- tinies
-ddrmn431 remaindernear   1E-397  1E-398  ->   0E-398
-ddrmn432 remaindernear   1E-397  2E-398  ->   0E-398
-ddrmn433 remaindernear   1E-397  3E-398  ->   1E-398 Subnormal
-ddrmn434 remaindernear   1E-397  4E-398  ->   2E-398 Subnormal
-ddrmn435 remaindernear   1E-397  5E-398  ->   0E-398
-ddrmn436 remaindernear   1E-397  6E-398  ->  -2E-398 Subnormal
-ddrmn437 remaindernear   1E-397  7E-398  ->   3E-398 Subnormal
-ddrmn438 remaindernear   1E-397  8E-398  ->   2E-398 Subnormal
-ddrmn439 remaindernear   1E-397  9E-398  ->   1E-398 Subnormal
-ddrmn440 remaindernear   1E-397 10E-398  ->   0E-398
-ddrmn441 remaindernear   1E-397 11E-398  ->  -1E-398 Subnormal
-ddrmn442 remaindernear 100E-397 11E-398  ->  -1E-398 Subnormal
-ddrmn443 remaindernear 100E-397 20E-398  ->   0E-398
-ddrmn444 remaindernear 100E-397 21E-398  ->  -8E-398 Subnormal
-ddrmn445 remaindernear 100E-397 30E-398  -> 1.0E-397 Subnormal
-
--- zero signs
-ddrmn650 remaindernear  1  1 ->  0
-ddrmn651 remaindernear -1  1 -> -0
-ddrmn652 remaindernear  1 -1 ->  0
-ddrmn653 remaindernear -1 -1 -> -0
-ddrmn654 remaindernear  0  1 ->  0
-ddrmn655 remaindernear -0  1 -> -0
-ddrmn656 remaindernear  0 -1 ->  0
-ddrmn657 remaindernear -0 -1 -> -0
-ddrmn658 remaindernear  0.00  1  ->  0.00
-ddrmn659 remaindernear -0.00  1  -> -0.00
-
--- Specials
-ddrmn680 remaindernear  Inf  -Inf   ->  NaN Invalid_operation
-ddrmn681 remaindernear  Inf  -1000  ->  NaN Invalid_operation
-ddrmn682 remaindernear  Inf  -1     ->  NaN Invalid_operation
-ddrmn683 remaindernear  Inf   0     ->  NaN Invalid_operation
-ddrmn684 remaindernear  Inf  -0     ->  NaN Invalid_operation
-ddrmn685 remaindernear  Inf   1     ->  NaN Invalid_operation
-ddrmn686 remaindernear  Inf   1000  ->  NaN Invalid_operation
-ddrmn687 remaindernear  Inf   Inf   ->  NaN Invalid_operation
-ddrmn688 remaindernear -1000  Inf   -> -1000
-ddrmn689 remaindernear -Inf   Inf   ->  NaN Invalid_operation
-ddrmn691 remaindernear -1     Inf   -> -1
-ddrmn692 remaindernear  0     Inf   ->  0
-ddrmn693 remaindernear -0     Inf   -> -0
-ddrmn694 remaindernear  1     Inf   ->  1
-ddrmn695 remaindernear  1000  Inf   ->  1000
-ddrmn696 remaindernear  Inf   Inf   ->  NaN Invalid_operation
-
-ddrmn700 remaindernear -Inf  -Inf   ->  NaN Invalid_operation
-ddrmn701 remaindernear -Inf  -1000  ->  NaN Invalid_operation
-ddrmn702 remaindernear -Inf  -1     ->  NaN Invalid_operation
-ddrmn703 remaindernear -Inf  -0     ->  NaN Invalid_operation
-ddrmn704 remaindernear -Inf   0     ->  NaN Invalid_operation
-ddrmn705 remaindernear -Inf   1     ->  NaN Invalid_operation
-ddrmn706 remaindernear -Inf   1000  ->  NaN Invalid_operation
-ddrmn707 remaindernear -Inf   Inf   ->  NaN Invalid_operation
-ddrmn708 remaindernear -Inf  -Inf   ->  NaN Invalid_operation
-ddrmn709 remaindernear -1000  Inf   -> -1000
-ddrmn710 remaindernear -1    -Inf   -> -1
-ddrmn711 remaindernear -0    -Inf   -> -0
-ddrmn712 remaindernear  0    -Inf   ->  0
-ddrmn713 remaindernear  1    -Inf   ->  1
-ddrmn714 remaindernear  1000 -Inf   ->  1000
-ddrmn715 remaindernear  Inf  -Inf   ->  NaN Invalid_operation
-
-ddrmn721 remaindernear  NaN -Inf    ->  NaN
-ddrmn722 remaindernear  NaN -1000   ->  NaN
-ddrmn723 remaindernear  NaN -1      ->  NaN
-ddrmn724 remaindernear  NaN -0      ->  NaN
-ddrmn725 remaindernear -NaN  0      -> -NaN
-ddrmn726 remaindernear  NaN  1      ->  NaN
-ddrmn727 remaindernear  NaN  1000   ->  NaN
-ddrmn728 remaindernear  NaN  Inf    ->  NaN
-ddrmn729 remaindernear  NaN -NaN    ->  NaN
-ddrmn730 remaindernear -Inf  NaN    ->  NaN
-ddrmn731 remaindernear -1000 NaN    ->  NaN
-ddrmn732 remaindernear -1    NaN    ->  NaN
-ddrmn733 remaindernear -0   -NaN    -> -NaN
-ddrmn734 remaindernear  0    NaN    ->  NaN
-ddrmn735 remaindernear  1   -NaN    -> -NaN
-ddrmn736 remaindernear  1000 NaN    ->  NaN
-ddrmn737 remaindernear  Inf  NaN    ->  NaN
-
-ddrmn741 remaindernear  sNaN -Inf   ->  NaN  Invalid_operation
-ddrmn742 remaindernear  sNaN -1000  ->  NaN  Invalid_operation
-ddrmn743 remaindernear -sNaN -1     -> -NaN  Invalid_operation
-ddrmn744 remaindernear  sNaN -0     ->  NaN  Invalid_operation
-ddrmn745 remaindernear  sNaN  0     ->  NaN  Invalid_operation
-ddrmn746 remaindernear  sNaN  1     ->  NaN  Invalid_operation
-ddrmn747 remaindernear  sNaN  1000  ->  NaN  Invalid_operation
-ddrmn749 remaindernear  sNaN  NaN   ->  NaN  Invalid_operation
-ddrmn750 remaindernear  sNaN sNaN   ->  NaN  Invalid_operation
-ddrmn751 remaindernear  NaN  sNaN   ->  NaN  Invalid_operation
-ddrmn752 remaindernear -Inf  sNaN   ->  NaN  Invalid_operation
-ddrmn753 remaindernear -1000 sNaN   ->  NaN  Invalid_operation
-ddrmn754 remaindernear -1    sNaN   ->  NaN  Invalid_operation
-ddrmn755 remaindernear -0    sNaN   ->  NaN  Invalid_operation
-ddrmn756 remaindernear  0    sNaN   ->  NaN  Invalid_operation
-ddrmn757 remaindernear  1    sNaN   ->  NaN  Invalid_operation
-ddrmn758 remaindernear  1000 sNaN   ->  NaN  Invalid_operation
-ddrmn759 remaindernear  Inf -sNaN   -> -NaN  Invalid_operation
-
--- propaging NaNs
-ddrmn760 remaindernear  NaN1   NaN7   ->  NaN1
-ddrmn761 remaindernear sNaN2   NaN8   ->  NaN2 Invalid_operation
-ddrmn762 remaindernear  NaN3  sNaN9   ->  NaN9 Invalid_operation
-ddrmn763 remaindernear sNaN4  sNaN10  ->  NaN4 Invalid_operation
-ddrmn764 remaindernear    15   NaN11  ->  NaN11
-ddrmn765 remaindernear  NaN6   NaN12  ->  NaN6
-ddrmn766 remaindernear  Inf    NaN13  ->  NaN13
-ddrmn767 remaindernear  NaN14  -Inf   ->  NaN14
-ddrmn768 remaindernear    0    NaN15  ->  NaN15
-ddrmn769 remaindernear  NaN16   -0    ->  NaN16
-
--- edge cases of impossible
-ddrmn770  remaindernear  1234567890123456  10    -> -4
-ddrmn771  remaindernear  1234567890123456   1    ->  0
-ddrmn772  remaindernear  1234567890123456   0.1  ->  NaN Division_impossible
-ddrmn773  remaindernear  1234567890123456   0.01 ->  NaN Division_impossible
-
--- long operand checks
-ddrmn801 remaindernear 12345678000 100 -> 0
-ddrmn802 remaindernear 1 12345678000   -> 1
-ddrmn803 remaindernear 1234567800  10  -> 0
-ddrmn804 remaindernear 1 1234567800    -> 1
-ddrmn805 remaindernear 1234567890  10  -> 0
-ddrmn806 remaindernear 1 1234567890    -> 1
-ddrmn807 remaindernear 1234567891  10  -> 1
-ddrmn808 remaindernear 1 1234567891    -> 1
-ddrmn809 remaindernear 12345678901 100 -> 1
-ddrmn810 remaindernear 1 12345678901   -> 1
-ddrmn811 remaindernear 1234567896  10  -> -4
-ddrmn812 remaindernear 1 1234567896    -> 1
-
-ddrmn821 remaindernear 12345678000 100 -> 0
-ddrmn822 remaindernear 1 12345678000   -> 1
-ddrmn823 remaindernear 1234567800  10  -> 0
-ddrmn824 remaindernear 1 1234567800    -> 1
-ddrmn825 remaindernear 1234567890  10  -> 0
-ddrmn826 remaindernear 1 1234567890    -> 1
-ddrmn827 remaindernear 1234567891  10  -> 1
-ddrmn828 remaindernear 1 1234567891    -> 1
-ddrmn829 remaindernear 12345678901 100 -> 1
-ddrmn830 remaindernear 1 12345678901   -> 1
-ddrmn831 remaindernear 1234567896  10  -> -4
-ddrmn832 remaindernear 1 1234567896    -> 1
-
--- from divideint
-ddrmn840 remaindernear  100000000.0   1  ->  0.0
-ddrmn841 remaindernear  100000000.4   1  ->  0.4
-ddrmn842 remaindernear  100000000.5   1  ->  0.5
-ddrmn843 remaindernear  100000000.9   1  -> -0.1
-ddrmn844 remaindernear  100000000.999 1  -> -0.001
-ddrmn850 remaindernear  100000003     5  -> -2
-ddrmn851 remaindernear  10000003      5  -> -2
-ddrmn852 remaindernear  1000003       5  -> -2
-ddrmn853 remaindernear  100003        5  -> -2
-ddrmn854 remaindernear  10003         5  -> -2
-ddrmn855 remaindernear  1003          5  -> -2
-ddrmn856 remaindernear  103           5  -> -2
-ddrmn857 remaindernear  13            5  -> -2
-ddrmn858 remaindernear  1             5  ->  1
-
--- Vladimir's cases         1234567890123456
-ddrmn860 remaindernear 123.0e1 1000000000000000  -> 1230
-ddrmn861 remaindernear 1230    1000000000000000  -> 1230
-ddrmn862 remaindernear 12.3e2  1000000000000000  -> 1230
-ddrmn863 remaindernear 1.23e3  1000000000000000  -> 1230
-ddrmn864 remaindernear 123e1   1000000000000000  -> 1230
-ddrmn870 remaindernear 123e1    1000000000000000 -> 1230
-ddrmn871 remaindernear 123e1     100000000000000 -> 1230
-ddrmn872 remaindernear 123e1      10000000000000 -> 1230
-ddrmn873 remaindernear 123e1       1000000000000 -> 1230
-ddrmn874 remaindernear 123e1        100000000000 -> 1230
-ddrmn875 remaindernear 123e1         10000000000 -> 1230
-ddrmn876 remaindernear 123e1          1000000000 -> 1230
-ddrmn877 remaindernear 123e1           100000000 -> 1230
-ddrmn878 remaindernear 1230            100000000 -> 1230
-ddrmn879 remaindernear 123e1            10000000 -> 1230
-ddrmn880 remaindernear 123e1             1000000 -> 1230
-ddrmn881 remaindernear 123e1              100000 -> 1230
-ddrmn882 remaindernear 123e1               10000 -> 1230
-ddrmn883 remaindernear 123e1                1000 ->  230
-ddrmn884 remaindernear 123e1                 100 ->   30
-ddrmn885 remaindernear 123e1                  10 ->    0
-ddrmn886 remaindernear 123e1                   1 ->    0
-
-ddrmn890 remaindernear 123e1    2000000000000000 -> 1230
-ddrmn891 remaindernear 123e1     200000000000000 -> 1230
-ddrmn892 remaindernear 123e1      20000000000000 -> 1230
-ddrmn893 remaindernear 123e1       2000000000000 -> 1230
-ddrmn894 remaindernear 123e1        200000000000 -> 1230
-ddrmn895 remaindernear 123e1         20000000000 -> 1230
-ddrmn896 remaindernear 123e1          2000000000 -> 1230
-ddrmn897 remaindernear 123e1           200000000 -> 1230
-ddrmn899 remaindernear 123e1            20000000 -> 1230
-ddrmn900 remaindernear 123e1             2000000 -> 1230
-ddrmn901 remaindernear 123e1              200000 -> 1230
-ddrmn902 remaindernear 123e1               20000 -> 1230
-ddrmn903 remaindernear 123e1                2000 -> -770
-ddrmn904 remaindernear 123e1                 200 ->   30
-ddrmn905 remaindernear 123e1                  20 ->  -10
-ddrmn906 remaindernear 123e1                   2 ->    0
-
-ddrmn910 remaindernear 123e1    5000000000000000 -> 1230
-ddrmn911 remaindernear 123e1     500000000000000 -> 1230
-ddrmn912 remaindernear 123e1      50000000000000 -> 1230
-ddrmn913 remaindernear 123e1       5000000000000 -> 1230
-ddrmn914 remaindernear 123e1        500000000000 -> 1230
-ddrmn915 remaindernear 123e1         50000000000 -> 1230
-ddrmn916 remaindernear 123e1          5000000000 -> 1230
-ddrmn917 remaindernear 123e1           500000000 -> 1230
-ddrmn919 remaindernear 123e1            50000000 -> 1230
-ddrmn920 remaindernear 123e1             5000000 -> 1230
-ddrmn921 remaindernear 123e1              500000 -> 1230
-ddrmn922 remaindernear 123e1               50000 -> 1230
-ddrmn923 remaindernear 123e1                5000 -> 1230
-ddrmn924 remaindernear 123e1                 500 ->  230
-ddrmn925 remaindernear 123e1                  50 ->  -20
-ddrmn926 remaindernear 123e1                   5 ->    0
-
-ddrmn930 remaindernear 123e1    9000000000000000 -> 1230
-ddrmn931 remaindernear 123e1     900000000000000 -> 1230
-ddrmn932 remaindernear 123e1      90000000000000 -> 1230
-ddrmn933 remaindernear 123e1       9000000000000 -> 1230
-ddrmn934 remaindernear 123e1        900000000000 -> 1230
-ddrmn935 remaindernear 123e1         90000000000 -> 1230
-ddrmn936 remaindernear 123e1          9000000000 -> 1230
-ddrmn937 remaindernear 123e1           900000000 -> 1230
-ddrmn939 remaindernear 123e1            90000000 -> 1230
-ddrmn940 remaindernear 123e1             9000000 -> 1230
-ddrmn941 remaindernear 123e1              900000 -> 1230
-ddrmn942 remaindernear 123e1               90000 -> 1230
-ddrmn943 remaindernear 123e1                9000 -> 1230
-ddrmn944 remaindernear 123e1                 900 ->  330
-ddrmn945 remaindernear 123e1                  90 ->  -30
-ddrmn946 remaindernear 123e1                   9 ->   -3
-
-ddrmn950 remaindernear 123e1   1000000000000000 -> 1230
-ddrmn961 remaindernear 123e1   2999999999999999 -> 1230
-ddrmn962 remaindernear 123e1   3999999999999999 -> 1230
-ddrmn963 remaindernear 123e1   4999999999999999 -> 1230
-ddrmn964 remaindernear 123e1   5999999999999999 -> 1230
-ddrmn965 remaindernear 123e1   6999999999999999 -> 1230
-ddrmn966 remaindernear 123e1   7999999999999999 -> 1230
-ddrmn967 remaindernear 123e1   8999999999999999 -> 1230
-ddrmn968 remaindernear 123e1   9999999999999999 -> 1230
-ddrmn969 remaindernear 123e1   9876543210987654 -> 1230
-
-ddrmn980 remaindernear 123e1 1000E299 -> 1.23E+3  -- 123E+1 internally
-
-
--- overflow and underflow tests [from divide]
-ddrmn1051 remaindernear  1e+277  1e-311 ->  NaN Division_impossible
-ddrmn1052 remaindernear  1e+277 -1e-311 ->  NaN Division_impossible
-ddrmn1053 remaindernear -1e+277  1e-311 ->  NaN Division_impossible
-ddrmn1054 remaindernear -1e+277 -1e-311 ->  NaN Division_impossible
-ddrmn1055 remaindernear  1e-277  1e+311 ->  1E-277
-ddrmn1056 remaindernear  1e-277 -1e+311 ->  1E-277
-ddrmn1057 remaindernear -1e-277  1e+311 -> -1E-277
-ddrmn1058 remaindernear -1e-277 -1e+311 -> -1E-277
-
--- destructive subtract
-ddrmn1100 remainderNear  1234567890123456  1.000000000000001  ->  -0.234567890123455
-ddrmn1101 remainderNear  1234567890123456   1.00000000000001  ->   -0.34567890123444
-ddrmn1102 remainderNear  1234567890123456    1.0000000000001  ->    -0.4567890123333
-ddrmn1103 remainderNear  1234567890123455  4.000000000000001  ->  -1.308641972530864
-ddrmn1104 remainderNear  1234567890123456  4.000000000000001  ->  -0.308641972530864
-ddrmn1115 remainderNear  1234567890123456    4.9999999999999  ->     0.6913578024696
-ddrmn1116 remainderNear  1234567890123456   4.99999999999999  ->   -1.53086421975308
-ddrmn1117 remainderNear  1234567890123456  4.999999999999999  ->   1.246913578024691
-ddrmn1118 remainderNear  1234567890123456  5.000000000000001  ->   0.753086421975309
-ddrmn1119 remainderNear  1234567890123456   5.00000000000001  ->   -1.46913578024691
-ddrmn1110 remainderNear  1234567890123456    5.0000000000001  ->     1.3086421975314
-
--- Null tests
-ddrmn1000 remaindernear 10  # -> NaN Invalid_operation
-ddrmn1001 remaindernear  # 10 -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRotate.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRotate.decTest
deleted file mode 100644
index 87eeb1c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddRotate.decTest
+++ /dev/null
@@ -1,262 +0,0 @@
-------------------------------------------------------------------------
--- ddRotate.decTest -- rotate a decDouble coefficient left or right   --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Sanity check
-ddrot001 rotate                 0    0  ->  0
-ddrot002 rotate                 0    2  ->  0
-ddrot003 rotate                 1    2  ->  100
-ddrot004 rotate                 1   15  ->  1000000000000000
-ddrot005 rotate                 1   16  ->  1
-ddrot006 rotate                 1   -1  ->  1000000000000000
-ddrot007 rotate                 0   -2  ->  0
-ddrot008 rotate  1234567890123456   -1  ->  6123456789012345
-ddrot009 rotate  1234567890123456   -15 ->  2345678901234561
-ddrot010 rotate  1234567890123456   -16 ->  1234567890123456
-ddrot011 rotate  9934567890123456   -15 ->  9345678901234569
-ddrot012 rotate  9934567890123456   -16 ->  9934567890123456
-
--- rhs must be an integer
-ddrot015 rotate        1    1.5    -> NaN Invalid_operation
-ddrot016 rotate        1    1.0    -> NaN Invalid_operation
-ddrot017 rotate        1    0.1    -> NaN Invalid_operation
-ddrot018 rotate        1    0.0    -> NaN Invalid_operation
-ddrot019 rotate        1    1E+1   -> NaN Invalid_operation
-ddrot020 rotate        1    1E+99  -> NaN Invalid_operation
-ddrot021 rotate        1    Inf    -> NaN Invalid_operation
-ddrot022 rotate        1    -Inf   -> NaN Invalid_operation
--- and |rhs| <= precision
-ddrot025 rotate        1    -1000  -> NaN Invalid_operation
-ddrot026 rotate        1    -17    -> NaN Invalid_operation
-ddrot027 rotate        1     17    -> NaN Invalid_operation
-ddrot028 rotate        1     1000  -> NaN Invalid_operation
-
--- full pattern
-ddrot030 rotate  1234567890123456         -16  -> 1234567890123456
-ddrot031 rotate  1234567890123456         -15  -> 2345678901234561
-ddrot032 rotate  1234567890123456         -14  -> 3456789012345612
-ddrot033 rotate  1234567890123456         -13  -> 4567890123456123
-ddrot034 rotate  1234567890123456         -12  -> 5678901234561234
-ddrot035 rotate  1234567890123456         -11  -> 6789012345612345
-ddrot036 rotate  1234567890123456         -10  -> 7890123456123456
-ddrot037 rotate  1234567890123456         -9   -> 8901234561234567
-ddrot038 rotate  1234567890123456         -8   -> 9012345612345678
-ddrot039 rotate  1234567890123456         -7   ->  123456123456789
-ddrot040 rotate  1234567890123456         -6   -> 1234561234567890
-ddrot041 rotate  1234567890123456         -5   -> 2345612345678901
-ddrot042 rotate  1234567890123456         -4   -> 3456123456789012
-ddrot043 rotate  1234567890123456         -3   -> 4561234567890123
-ddrot044 rotate  1234567890123456         -2   -> 5612345678901234
-ddrot045 rotate  1234567890123456         -1   -> 6123456789012345
-ddrot046 rotate  1234567890123456         -0   -> 1234567890123456
-
-ddrot047 rotate  1234567890123456         +0   -> 1234567890123456
-ddrot048 rotate  1234567890123456         +1   -> 2345678901234561
-ddrot049 rotate  1234567890123456         +2   -> 3456789012345612
-ddrot050 rotate  1234567890123456         +3   -> 4567890123456123
-ddrot051 rotate  1234567890123456         +4   -> 5678901234561234
-ddrot052 rotate  1234567890123456         +5   -> 6789012345612345
-ddrot053 rotate  1234567890123456         +6   -> 7890123456123456
-ddrot054 rotate  1234567890123456         +7   -> 8901234561234567
-ddrot055 rotate  1234567890123456         +8   -> 9012345612345678
-ddrot056 rotate  1234567890123456         +9   ->  123456123456789
-ddrot057 rotate  1234567890123456         +10  -> 1234561234567890
-ddrot058 rotate  1234567890123456         +11  -> 2345612345678901
-ddrot059 rotate  1234567890123456         +12  -> 3456123456789012
-ddrot060 rotate  1234567890123456         +13  -> 4561234567890123
-ddrot061 rotate  1234567890123456         +14  -> 5612345678901234
-ddrot062 rotate  1234567890123456         +15  -> 6123456789012345
-ddrot063 rotate  1234567890123456         +16  -> 1234567890123456
-
--- zeros
-ddrot070 rotate  0E-10              +9   ->   0E-10
-ddrot071 rotate  0E-10              -9   ->   0E-10
-ddrot072 rotate  0.000              +9   ->   0.000
-ddrot073 rotate  0.000              -9   ->   0.000
-ddrot074 rotate  0E+10              +9   ->   0E+10
-ddrot075 rotate  0E+10              -9   ->   0E+10
-ddrot076 rotate -0E-10              +9   ->  -0E-10
-ddrot077 rotate -0E-10              -9   ->  -0E-10
-ddrot078 rotate -0.000              +9   ->  -0.000
-ddrot079 rotate -0.000              -9   ->  -0.000
-ddrot080 rotate -0E+10              +9   ->  -0E+10
-ddrot081 rotate -0E+10              -9   ->  -0E+10
-
--- Nmax, Nmin, Ntiny
-ddrot141 rotate  9.999999999999999E+384     -1  -> 9.999999999999999E+384
-ddrot142 rotate  9.999999999999999E+384     -15 -> 9.999999999999999E+384
-ddrot143 rotate  9.999999999999999E+384      1  -> 9.999999999999999E+384
-ddrot144 rotate  9.999999999999999E+384      15 -> 9.999999999999999E+384
-ddrot145 rotate  1E-383                     -1  -> 1.000000000000000E-368
-ddrot146 rotate  1E-383                     -15 -> 1.0E-382
-ddrot147 rotate  1E-383                      1  -> 1.0E-382
-ddrot148 rotate  1E-383                      15 -> 1.000000000000000E-368
-ddrot151 rotate  1.000000000000000E-383     -1  -> 1.00000000000000E-384
-ddrot152 rotate  1.000000000000000E-383     -15 -> 1E-398
-ddrot153 rotate  1.000000000000000E-383      1  -> 1E-398
-ddrot154 rotate  1.000000000000000E-383      15 -> 1.00000000000000E-384
-ddrot155 rotate  9.000000000000000E-383     -1  -> 9.00000000000000E-384
-ddrot156 rotate  9.000000000000000E-383     -15 -> 9E-398
-ddrot157 rotate  9.000000000000000E-383      1  -> 9E-398
-ddrot158 rotate  9.000000000000000E-383      15 -> 9.00000000000000E-384
-ddrot160 rotate  1E-398                     -1  -> 1.000000000000000E-383
-ddrot161 rotate  1E-398                     -15 -> 1.0E-397
-ddrot162 rotate  1E-398                      1  -> 1.0E-397
-ddrot163 rotate  1E-398                      15 -> 1.000000000000000E-383
---  negatives
-ddrot171 rotate -9.999999999999999E+384     -1  -> -9.999999999999999E+384
-ddrot172 rotate -9.999999999999999E+384     -15 -> -9.999999999999999E+384
-ddrot173 rotate -9.999999999999999E+384      1  -> -9.999999999999999E+384
-ddrot174 rotate -9.999999999999999E+384      15 -> -9.999999999999999E+384
-ddrot175 rotate -1E-383                     -1  -> -1.000000000000000E-368
-ddrot176 rotate -1E-383                     -15 -> -1.0E-382
-ddrot177 rotate -1E-383                      1  -> -1.0E-382
-ddrot178 rotate -1E-383                      15 -> -1.000000000000000E-368
-ddrot181 rotate -1.000000000000000E-383     -1  -> -1.00000000000000E-384
-ddrot182 rotate -1.000000000000000E-383     -15 -> -1E-398
-ddrot183 rotate -1.000000000000000E-383      1  -> -1E-398
-ddrot184 rotate -1.000000000000000E-383      15 -> -1.00000000000000E-384
-ddrot185 rotate -9.000000000000000E-383     -1  -> -9.00000000000000E-384
-ddrot186 rotate -9.000000000000000E-383     -15 -> -9E-398
-ddrot187 rotate -9.000000000000000E-383      1  -> -9E-398
-ddrot188 rotate -9.000000000000000E-383      15 -> -9.00000000000000E-384
-ddrot190 rotate -1E-398                     -1  -> -1.000000000000000E-383
-ddrot191 rotate -1E-398                     -15 -> -1.0E-397
-ddrot192 rotate -1E-398                      1  -> -1.0E-397
-ddrot193 rotate -1E-398                      15 -> -1.000000000000000E-383
-
--- more negatives (of sanities)
-ddrot201 rotate                -0    0  -> -0
-ddrot202 rotate                -0    2  -> -0
-ddrot203 rotate                -1    2  -> -100
-ddrot204 rotate                -1   15  -> -1000000000000000
-ddrot205 rotate                -1   16  -> -1
-ddrot206 rotate                -1   -1  -> -1000000000000000
-ddrot207 rotate                -0   -2  -> -0
-ddrot208 rotate -1234567890123456   -1  -> -6123456789012345
-ddrot209 rotate -1234567890123456   -15 -> -2345678901234561
-ddrot210 rotate -1234567890123456   -16 -> -1234567890123456
-ddrot211 rotate -9934567890123456   -15 -> -9345678901234569
-ddrot212 rotate -9934567890123456   -16 -> -9934567890123456
-
-
--- Specials; NaNs are handled as usual
-ddrot781 rotate -Inf  -8     -> -Infinity
-ddrot782 rotate -Inf  -1     -> -Infinity
-ddrot783 rotate -Inf  -0     -> -Infinity
-ddrot784 rotate -Inf   0     -> -Infinity
-ddrot785 rotate -Inf   1     -> -Infinity
-ddrot786 rotate -Inf   8     -> -Infinity
-ddrot787 rotate -1000 -Inf   -> NaN Invalid_operation
-ddrot788 rotate -Inf  -Inf   -> NaN Invalid_operation
-ddrot789 rotate -1    -Inf   -> NaN Invalid_operation
-ddrot790 rotate -0    -Inf   -> NaN Invalid_operation
-ddrot791 rotate  0    -Inf   -> NaN Invalid_operation
-ddrot792 rotate  1    -Inf   -> NaN Invalid_operation
-ddrot793 rotate  1000 -Inf   -> NaN Invalid_operation
-ddrot794 rotate  Inf  -Inf   -> NaN Invalid_operation
-
-ddrot800 rotate  Inf  -Inf   -> NaN Invalid_operation
-ddrot801 rotate  Inf  -8     -> Infinity
-ddrot802 rotate  Inf  -1     -> Infinity
-ddrot803 rotate  Inf  -0     -> Infinity
-ddrot804 rotate  Inf   0     -> Infinity
-ddrot805 rotate  Inf   1     -> Infinity
-ddrot806 rotate  Inf   8     -> Infinity
-ddrot807 rotate  Inf   Inf   -> NaN Invalid_operation
-ddrot808 rotate -1000  Inf   -> NaN Invalid_operation
-ddrot809 rotate -Inf   Inf   -> NaN Invalid_operation
-ddrot810 rotate -1     Inf   -> NaN Invalid_operation
-ddrot811 rotate -0     Inf   -> NaN Invalid_operation
-ddrot812 rotate  0     Inf   -> NaN Invalid_operation
-ddrot813 rotate  1     Inf   -> NaN Invalid_operation
-ddrot814 rotate  1000  Inf   -> NaN Invalid_operation
-ddrot815 rotate  Inf   Inf   -> NaN Invalid_operation
-
-ddrot821 rotate  NaN -Inf    ->  NaN
-ddrot822 rotate  NaN -1000   ->  NaN
-ddrot823 rotate  NaN -1      ->  NaN
-ddrot824 rotate  NaN -0      ->  NaN
-ddrot825 rotate  NaN  0      ->  NaN
-ddrot826 rotate  NaN  1      ->  NaN
-ddrot827 rotate  NaN  1000   ->  NaN
-ddrot828 rotate  NaN  Inf    ->  NaN
-ddrot829 rotate  NaN  NaN    ->  NaN
-ddrot830 rotate -Inf  NaN    ->  NaN
-ddrot831 rotate -1000 NaN    ->  NaN
-ddrot832 rotate -1    NaN    ->  NaN
-ddrot833 rotate -0    NaN    ->  NaN
-ddrot834 rotate  0    NaN    ->  NaN
-ddrot835 rotate  1    NaN    ->  NaN
-ddrot836 rotate  1000 NaN    ->  NaN
-ddrot837 rotate  Inf  NaN    ->  NaN
-
-ddrot841 rotate  sNaN -Inf   ->  NaN  Invalid_operation
-ddrot842 rotate  sNaN -1000  ->  NaN  Invalid_operation
-ddrot843 rotate  sNaN -1     ->  NaN  Invalid_operation
-ddrot844 rotate  sNaN -0     ->  NaN  Invalid_operation
-ddrot845 rotate  sNaN  0     ->  NaN  Invalid_operation
-ddrot846 rotate  sNaN  1     ->  NaN  Invalid_operation
-ddrot847 rotate  sNaN  1000  ->  NaN  Invalid_operation
-ddrot848 rotate  sNaN  NaN   ->  NaN  Invalid_operation
-ddrot849 rotate  sNaN sNaN   ->  NaN  Invalid_operation
-ddrot850 rotate  NaN  sNaN   ->  NaN  Invalid_operation
-ddrot851 rotate -Inf  sNaN   ->  NaN  Invalid_operation
-ddrot852 rotate -1000 sNaN   ->  NaN  Invalid_operation
-ddrot853 rotate -1    sNaN   ->  NaN  Invalid_operation
-ddrot854 rotate -0    sNaN   ->  NaN  Invalid_operation
-ddrot855 rotate  0    sNaN   ->  NaN  Invalid_operation
-ddrot856 rotate  1    sNaN   ->  NaN  Invalid_operation
-ddrot857 rotate  1000 sNaN   ->  NaN  Invalid_operation
-ddrot858 rotate  Inf  sNaN   ->  NaN  Invalid_operation
-ddrot859 rotate  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddrot861 rotate  NaN1   -Inf    ->  NaN1
-ddrot862 rotate +NaN2   -1000   ->  NaN2
-ddrot863 rotate  NaN3    1000   ->  NaN3
-ddrot864 rotate  NaN4    Inf    ->  NaN4
-ddrot865 rotate  NaN5   +NaN6   ->  NaN5
-ddrot866 rotate -Inf     NaN7   ->  NaN7
-ddrot867 rotate -1000    NaN8   ->  NaN8
-ddrot868 rotate  1000    NaN9   ->  NaN9
-ddrot869 rotate  Inf    +NaN10  ->  NaN10
-ddrot871 rotate  sNaN11  -Inf   ->  NaN11  Invalid_operation
-ddrot872 rotate  sNaN12  -1000  ->  NaN12  Invalid_operation
-ddrot873 rotate  sNaN13   1000  ->  NaN13  Invalid_operation
-ddrot874 rotate  sNaN14   NaN17 ->  NaN14  Invalid_operation
-ddrot875 rotate  sNaN15  sNaN18 ->  NaN15  Invalid_operation
-ddrot876 rotate  NaN16   sNaN19 ->  NaN19  Invalid_operation
-ddrot877 rotate -Inf    +sNaN20 ->  NaN20  Invalid_operation
-ddrot878 rotate -1000    sNaN21 ->  NaN21  Invalid_operation
-ddrot879 rotate  1000    sNaN22 ->  NaN22  Invalid_operation
-ddrot880 rotate  Inf     sNaN23 ->  NaN23  Invalid_operation
-ddrot881 rotate +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-ddrot882 rotate -NaN26    NaN28 -> -NaN26
-ddrot883 rotate -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-ddrot884 rotate  1000    -NaN30 -> -NaN30
-ddrot885 rotate  1000   -sNaN31 -> -NaN31  Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddSameQuantum.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddSameQuantum.decTest
deleted file mode 100644
index 54a763c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddSameQuantum.decTest
+++ /dev/null
@@ -1,389 +0,0 @@
-------------------------------------------------------------------------
--- ddSameQuantum.decTest -- check decDouble quantums match            --
--- Copyright (c) IBM Corporation, 2001, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decDoubles.
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
-ddsamq001 samequantum  0      0      ->  1
-ddsamq002 samequantum  0      1      ->  1
-ddsamq003 samequantum  1      0      ->  1
-ddsamq004 samequantum  1      1      ->  1
-
-ddsamq011 samequantum  10     1E+1   -> 0
-ddsamq012 samequantum  10E+1  10E+1  -> 1
-ddsamq013 samequantum  100    10E+1  -> 0
-ddsamq014 samequantum  100    1E+2   -> 0
-ddsamq015 samequantum  0.1    1E-2   -> 0
-ddsamq016 samequantum  0.1    1E-1   -> 1
-ddsamq017 samequantum  0.1    1E-0   -> 0
-ddsamq018 samequantum  999    999    -> 1
-ddsamq019 samequantum  999E-1 99.9   -> 1
-ddsamq020 samequantum  111E-1 22.2   -> 1
-ddsamq021 samequantum  111E-1 1234.2 -> 1
-
--- zeros
-ddsamq030 samequantum  0.0    1.1    -> 1
-ddsamq031 samequantum  0.0    1.11   -> 0
-ddsamq032 samequantum  0.0    0      -> 0
-ddsamq033 samequantum  0.0    0.0    -> 1
-ddsamq034 samequantum  0.0    0.00   -> 0
-ddsamq035 samequantum  0E+1   0E+0   -> 0
-ddsamq036 samequantum  0E+1   0E+1   -> 1
-ddsamq037 samequantum  0E+1   0E+2   -> 0
-ddsamq038 samequantum  0E-17  0E-16  -> 0
-ddsamq039 samequantum  0E-17  0E-17  -> 1
-ddsamq040 samequantum  0E-17  0E-18  -> 0
-ddsamq041 samequantum  0E-17  0.0E-15 -> 0
-ddsamq042 samequantum  0E-17  0.0E-16 -> 1
-ddsamq043 samequantum  0E-17  0.0E-17 -> 0
-ddsamq044 samequantum -0E-17  0.0E-16 -> 1
-ddsamq045 samequantum  0E-17 -0.0E-17 -> 0
-ddsamq046 samequantum  0E-17 -0.0E-16 -> 1
-ddsamq047 samequantum -0E-17  0.0E-17 -> 0
-ddsamq048 samequantum -0E-17 -0.0E-16 -> 1
-ddsamq049 samequantum -0E-17 -0.0E-17 -> 0
-
--- Nmax, Nmin, Ntiny
-ddsamq051 samequantum  9.999999999999999E+384    9.999999999999999E+384  -> 1
-ddsamq052 samequantum  1E-383             1E-383           -> 1
-ddsamq053 samequantum  1.000000000000000E-383    1.000000000000000E-383  -> 1
-ddsamq054 samequantum  1E-398             1E-398           -> 1
-ddsamq055 samequantum  9.999999999999999E+384    9.999999999999999E+384  -> 1
-ddsamq056 samequantum  1E-383             1E-383           -> 1
-ddsamq057 samequantum  1.000000000000000E-383    1.000000000000000E-383  -> 1
-ddsamq058 samequantum  1E-398             1E-398           -> 1
-
-ddsamq061 samequantum  -1E-398            -1E-398          -> 1
-ddsamq062 samequantum  -1.000000000000000E-383   -1.000000000000000E-383 -> 1
-ddsamq063 samequantum  -1E-383            -1E-383          -> 1
-ddsamq064 samequantum  -9.999999999999999E+384   -9.999999999999999E+384 -> 1
-ddsamq065 samequantum  -1E-398            -1E-398          -> 1
-ddsamq066 samequantum  -1.000000000000000E-383   -1.000000000000000E-383 -> 1
-ddsamq067 samequantum  -1E-383            -1E-383          -> 1
-ddsamq068 samequantum  -9.999999999999999E+384   -9.999999999999999E+384 -> 1
-
-ddsamq071 samequantum  -4E-398            -1E-398          -> 1
-ddsamq072 samequantum  -4.000000000000000E-383   -1.000040000000000E-383 -> 1
-ddsamq073 samequantum  -4E-383            -1E-383          -> 1
-ddsamq074 samequantum  -4.999999999999999E+384   -9.999999999949999E+384 -> 1
-ddsamq075 samequantum  -4E-398            -1E-398          -> 1
-ddsamq076 samequantum  -4.000000000000000E-383   -1.004000000000000E-383 -> 1
-ddsamq077 samequantum  -4E-383            -1E-383          -> 1
-ddsamq078 samequantum  -4.999999999999999E+384   -9.949999999999999E+384 -> 1
-
-ddsamq081 samequantum  -4E-397            -1E-398          -> 0
-ddsamq082 samequantum  -4.000000000000000E-383   -1.000040000000000E-336 -> 0
-ddsamq083 samequantum  -4E-346            -1E-383          -> 0
-ddsamq084 samequantum  -4.999999999999999E+384   -9.999499999999999E+336 -> 0
-ddsamq085 samequantum  -4E-397            -1E-398          -> 0
-ddsamq086 samequantum  -4.000000000000000E-383   -1.004000000000000E-336 -> 0
-ddsamq087 samequantum  -4E-346            -1E-383          -> 0
-ddsamq088 samequantum  -4.999999999999999E+384   -9.949999999999999E+336 -> 0
-
--- specials & combinations
-ddsamq0110 samequantum  -Inf    -Inf   -> 1
-ddsamq0111 samequantum  -Inf     Inf   -> 1
-ddsamq0112 samequantum  -Inf     NaN   -> 0
-ddsamq0113 samequantum  -Inf    -7E+3  -> 0
-ddsamq0114 samequantum  -Inf    -7     -> 0
-ddsamq0115 samequantum  -Inf    -7E-3  -> 0
-ddsamq0116 samequantum  -Inf    -0E-3  -> 0
-ddsamq0117 samequantum  -Inf    -0     -> 0
-ddsamq0118 samequantum  -Inf    -0E+3  -> 0
-ddsamq0119 samequantum  -Inf     0E-3  -> 0
-ddsamq0120 samequantum  -Inf     0     -> 0
-ddsamq0121 samequantum  -Inf     0E+3  -> 0
-ddsamq0122 samequantum  -Inf     7E-3  -> 0
-ddsamq0123 samequantum  -Inf     7     -> 0
-ddsamq0124 samequantum  -Inf     7E+3  -> 0
-ddsamq0125 samequantum  -Inf     sNaN  -> 0
-
-ddsamq0210 samequantum   Inf    -Inf   -> 1
-ddsamq0211 samequantum   Inf     Inf   -> 1
-ddsamq0212 samequantum   Inf     NaN   -> 0
-ddsamq0213 samequantum   Inf    -7E+3  -> 0
-ddsamq0214 samequantum   Inf    -7     -> 0
-ddsamq0215 samequantum   Inf    -7E-3  -> 0
-ddsamq0216 samequantum   Inf    -0E-3  -> 0
-ddsamq0217 samequantum   Inf    -0     -> 0
-ddsamq0218 samequantum   Inf    -0E+3  -> 0
-ddsamq0219 samequantum   Inf     0E-3  -> 0
-ddsamq0220 samequantum   Inf     0     -> 0
-ddsamq0221 samequantum   Inf     0E+3  -> 0
-ddsamq0222 samequantum   Inf     7E-3  -> 0
-ddsamq0223 samequantum   Inf     7     -> 0
-ddsamq0224 samequantum   Inf     7E+3  -> 0
-ddsamq0225 samequantum   Inf     sNaN  -> 0
-
-ddsamq0310 samequantum   NaN    -Inf   -> 0
-ddsamq0311 samequantum   NaN     Inf   -> 0
-ddsamq0312 samequantum   NaN     NaN   -> 1
-ddsamq0313 samequantum   NaN    -7E+3  -> 0
-ddsamq0314 samequantum   NaN    -7     -> 0
-ddsamq0315 samequantum   NaN    -7E-3  -> 0
-ddsamq0316 samequantum   NaN    -0E-3  -> 0
-ddsamq0317 samequantum   NaN    -0     -> 0
-ddsamq0318 samequantum   NaN    -0E+3  -> 0
-ddsamq0319 samequantum   NaN     0E-3  -> 0
-ddsamq0320 samequantum   NaN     0     -> 0
-ddsamq0321 samequantum   NaN     0E+3  -> 0
-ddsamq0322 samequantum   NaN     7E-3  -> 0
-ddsamq0323 samequantum   NaN     7     -> 0
-ddsamq0324 samequantum   NaN     7E+3  -> 0
-ddsamq0325 samequantum   NaN     sNaN  -> 1
-
-ddsamq0410 samequantum  -7E+3    -Inf   -> 0
-ddsamq0411 samequantum  -7E+3     Inf   -> 0
-ddsamq0412 samequantum  -7E+3     NaN   -> 0
-ddsamq0413 samequantum  -7E+3    -7E+3  -> 1
-ddsamq0414 samequantum  -7E+3    -7     -> 0
-ddsamq0415 samequantum  -7E+3    -7E-3  -> 0
-ddsamq0416 samequantum  -7E+3    -0E-3  -> 0
-ddsamq0417 samequantum  -7E+3    -0     -> 0
-ddsamq0418 samequantum  -7E+3    -0E+3  -> 1
-ddsamq0419 samequantum  -7E+3     0E-3  -> 0
-ddsamq0420 samequantum  -7E+3     0     -> 0
-ddsamq0421 samequantum  -7E+3     0E+3  -> 1
-ddsamq0422 samequantum  -7E+3     7E-3  -> 0
-ddsamq0423 samequantum  -7E+3     7     -> 0
-ddsamq0424 samequantum  -7E+3     7E+3  -> 1
-ddsamq0425 samequantum  -7E+3     sNaN  -> 0
-
-ddsamq0510 samequantum  -7      -Inf   -> 0
-ddsamq0511 samequantum  -7       Inf   -> 0
-ddsamq0512 samequantum  -7       NaN   -> 0
-ddsamq0513 samequantum  -7      -7E+3  -> 0
-ddsamq0514 samequantum  -7      -7     -> 1
-ddsamq0515 samequantum  -7      -7E-3  -> 0
-ddsamq0516 samequantum  -7      -0E-3  -> 0
-ddsamq0517 samequantum  -7      -0     -> 1
-ddsamq0518 samequantum  -7      -0E+3  -> 0
-ddsamq0519 samequantum  -7       0E-3  -> 0
-ddsamq0520 samequantum  -7       0     -> 1
-ddsamq0521 samequantum  -7       0E+3  -> 0
-ddsamq0522 samequantum  -7       7E-3  -> 0
-ddsamq0523 samequantum  -7       7     -> 1
-ddsamq0524 samequantum  -7       7E+3  -> 0
-ddsamq0525 samequantum  -7       sNaN  -> 0
-
-ddsamq0610 samequantum  -7E-3    -Inf   -> 0
-ddsamq0611 samequantum  -7E-3     Inf   -> 0
-ddsamq0612 samequantum  -7E-3     NaN   -> 0
-ddsamq0613 samequantum  -7E-3    -7E+3  -> 0
-ddsamq0614 samequantum  -7E-3    -7     -> 0
-ddsamq0615 samequantum  -7E-3    -7E-3  -> 1
-ddsamq0616 samequantum  -7E-3    -0E-3  -> 1
-ddsamq0617 samequantum  -7E-3    -0     -> 0
-ddsamq0618 samequantum  -7E-3    -0E+3  -> 0
-ddsamq0619 samequantum  -7E-3     0E-3  -> 1
-ddsamq0620 samequantum  -7E-3     0     -> 0
-ddsamq0621 samequantum  -7E-3     0E+3  -> 0
-ddsamq0622 samequantum  -7E-3     7E-3  -> 1
-ddsamq0623 samequantum  -7E-3     7     -> 0
-ddsamq0624 samequantum  -7E-3     7E+3  -> 0
-ddsamq0625 samequantum  -7E-3     sNaN  -> 0
-
-ddsamq0710 samequantum  -0E-3    -Inf   -> 0
-ddsamq0711 samequantum  -0E-3     Inf   -> 0
-ddsamq0712 samequantum  -0E-3     NaN   -> 0
-ddsamq0713 samequantum  -0E-3    -7E+3  -> 0
-ddsamq0714 samequantum  -0E-3    -7     -> 0
-ddsamq0715 samequantum  -0E-3    -7E-3  -> 1
-ddsamq0716 samequantum  -0E-3    -0E-3  -> 1
-ddsamq0717 samequantum  -0E-3    -0     -> 0
-ddsamq0718 samequantum  -0E-3    -0E+3  -> 0
-ddsamq0719 samequantum  -0E-3     0E-3  -> 1
-ddsamq0720 samequantum  -0E-3     0     -> 0
-ddsamq0721 samequantum  -0E-3     0E+3  -> 0
-ddsamq0722 samequantum  -0E-3     7E-3  -> 1
-ddsamq0723 samequantum  -0E-3     7     -> 0
-ddsamq0724 samequantum  -0E-3     7E+3  -> 0
-ddsamq0725 samequantum  -0E-3     sNaN  -> 0
-
-ddsamq0810 samequantum  -0      -Inf   -> 0
-ddsamq0811 samequantum  -0       Inf   -> 0
-ddsamq0812 samequantum  -0       NaN   -> 0
-ddsamq0813 samequantum  -0      -7E+3  -> 0
-ddsamq0814 samequantum  -0      -7     -> 1
-ddsamq0815 samequantum  -0      -7E-3  -> 0
-ddsamq0816 samequantum  -0      -0E-3  -> 0
-ddsamq0817 samequantum  -0      -0     -> 1
-ddsamq0818 samequantum  -0      -0E+3  -> 0
-ddsamq0819 samequantum  -0       0E-3  -> 0
-ddsamq0820 samequantum  -0       0     -> 1
-ddsamq0821 samequantum  -0       0E+3  -> 0
-ddsamq0822 samequantum  -0       7E-3  -> 0
-ddsamq0823 samequantum  -0       7     -> 1
-ddsamq0824 samequantum  -0       7E+3  -> 0
-ddsamq0825 samequantum  -0       sNaN  -> 0
-
-ddsamq0910 samequantum  -0E+3    -Inf   -> 0
-ddsamq0911 samequantum  -0E+3     Inf   -> 0
-ddsamq0912 samequantum  -0E+3     NaN   -> 0
-ddsamq0913 samequantum  -0E+3    -7E+3  -> 1
-ddsamq0914 samequantum  -0E+3    -7     -> 0
-ddsamq0915 samequantum  -0E+3    -7E-3  -> 0
-ddsamq0916 samequantum  -0E+3    -0E-3  -> 0
-ddsamq0917 samequantum  -0E+3    -0     -> 0
-ddsamq0918 samequantum  -0E+3    -0E+3  -> 1
-ddsamq0919 samequantum  -0E+3     0E-3  -> 0
-ddsamq0920 samequantum  -0E+3     0     -> 0
-ddsamq0921 samequantum  -0E+3     0E+3  -> 1
-ddsamq0922 samequantum  -0E+3     7E-3  -> 0
-ddsamq0923 samequantum  -0E+3     7     -> 0
-ddsamq0924 samequantum  -0E+3     7E+3  -> 1
-ddsamq0925 samequantum  -0E+3     sNaN  -> 0
-
-ddsamq1110 samequantum  0E-3    -Inf   -> 0
-ddsamq1111 samequantum  0E-3     Inf   -> 0
-ddsamq1112 samequantum  0E-3     NaN   -> 0
-ddsamq1113 samequantum  0E-3    -7E+3  -> 0
-ddsamq1114 samequantum  0E-3    -7     -> 0
-ddsamq1115 samequantum  0E-3    -7E-3  -> 1
-ddsamq1116 samequantum  0E-3    -0E-3  -> 1
-ddsamq1117 samequantum  0E-3    -0     -> 0
-ddsamq1118 samequantum  0E-3    -0E+3  -> 0
-ddsamq1119 samequantum  0E-3     0E-3  -> 1
-ddsamq1120 samequantum  0E-3     0     -> 0
-ddsamq1121 samequantum  0E-3     0E+3  -> 0
-ddsamq1122 samequantum  0E-3     7E-3  -> 1
-ddsamq1123 samequantum  0E-3     7     -> 0
-ddsamq1124 samequantum  0E-3     7E+3  -> 0
-ddsamq1125 samequantum  0E-3     sNaN  -> 0
-
-ddsamq1210 samequantum  0       -Inf   -> 0
-ddsamq1211 samequantum  0        Inf   -> 0
-ddsamq1212 samequantum  0        NaN   -> 0
-ddsamq1213 samequantum  0       -7E+3  -> 0
-ddsamq1214 samequantum  0       -7     -> 1
-ddsamq1215 samequantum  0       -7E-3  -> 0
-ddsamq1216 samequantum  0       -0E-3  -> 0
-ddsamq1217 samequantum  0       -0     -> 1
-ddsamq1218 samequantum  0       -0E+3  -> 0
-ddsamq1219 samequantum  0        0E-3  -> 0
-ddsamq1220 samequantum  0        0     -> 1
-ddsamq1221 samequantum  0        0E+3  -> 0
-ddsamq1222 samequantum  0        7E-3  -> 0
-ddsamq1223 samequantum  0        7     -> 1
-ddsamq1224 samequantum  0        7E+3  -> 0
-ddsamq1225 samequantum  0        sNaN  -> 0
-
-ddsamq1310 samequantum  0E+3    -Inf   -> 0
-ddsamq1311 samequantum  0E+3     Inf   -> 0
-ddsamq1312 samequantum  0E+3     NaN   -> 0
-ddsamq1313 samequantum  0E+3    -7E+3  -> 1
-ddsamq1314 samequantum  0E+3    -7     -> 0
-ddsamq1315 samequantum  0E+3    -7E-3  -> 0
-ddsamq1316 samequantum  0E+3    -0E-3  -> 0
-ddsamq1317 samequantum  0E+3    -0     -> 0
-ddsamq1318 samequantum  0E+3    -0E+3  -> 1
-ddsamq1319 samequantum  0E+3     0E-3  -> 0
-ddsamq1320 samequantum  0E+3     0     -> 0
-ddsamq1321 samequantum  0E+3     0E+3  -> 1
-ddsamq1322 samequantum  0E+3     7E-3  -> 0
-ddsamq1323 samequantum  0E+3     7     -> 0
-ddsamq1324 samequantum  0E+3     7E+3  -> 1
-ddsamq1325 samequantum  0E+3     sNaN  -> 0
-
-ddsamq1410 samequantum  7E-3    -Inf   -> 0
-ddsamq1411 samequantum  7E-3     Inf   -> 0
-ddsamq1412 samequantum  7E-3     NaN   -> 0
-ddsamq1413 samequantum  7E-3    -7E+3  -> 0
-ddsamq1414 samequantum  7E-3    -7     -> 0
-ddsamq1415 samequantum  7E-3    -7E-3  -> 1
-ddsamq1416 samequantum  7E-3    -0E-3  -> 1
-ddsamq1417 samequantum  7E-3    -0     -> 0
-ddsamq1418 samequantum  7E-3    -0E+3  -> 0
-ddsamq1419 samequantum  7E-3     0E-3  -> 1
-ddsamq1420 samequantum  7E-3     0     -> 0
-ddsamq1421 samequantum  7E-3     0E+3  -> 0
-ddsamq1422 samequantum  7E-3     7E-3  -> 1
-ddsamq1423 samequantum  7E-3     7     -> 0
-ddsamq1424 samequantum  7E-3     7E+3  -> 0
-ddsamq1425 samequantum  7E-3     sNaN  -> 0
-
-ddsamq1510 samequantum  7      -Inf   -> 0
-ddsamq1511 samequantum  7       Inf   -> 0
-ddsamq1512 samequantum  7       NaN   -> 0
-ddsamq1513 samequantum  7      -7E+3  -> 0
-ddsamq1514 samequantum  7      -7     -> 1
-ddsamq1515 samequantum  7      -7E-3  -> 0
-ddsamq1516 samequantum  7      -0E-3  -> 0
-ddsamq1517 samequantum  7      -0     -> 1
-ddsamq1518 samequantum  7      -0E+3  -> 0
-ddsamq1519 samequantum  7       0E-3  -> 0
-ddsamq1520 samequantum  7       0     -> 1
-ddsamq1521 samequantum  7       0E+3  -> 0
-ddsamq1522 samequantum  7       7E-3  -> 0
-ddsamq1523 samequantum  7       7     -> 1
-ddsamq1524 samequantum  7       7E+3  -> 0
-ddsamq1525 samequantum  7       sNaN  -> 0
-
-ddsamq1610 samequantum  7E+3    -Inf   -> 0
-ddsamq1611 samequantum  7E+3     Inf   -> 0
-ddsamq1612 samequantum  7E+3     NaN   -> 0
-ddsamq1613 samequantum  7E+3    -7E+3  -> 1
-ddsamq1614 samequantum  7E+3    -7     -> 0
-ddsamq1615 samequantum  7E+3    -7E-3  -> 0
-ddsamq1616 samequantum  7E+3    -0E-3  -> 0
-ddsamq1617 samequantum  7E+3    -0     -> 0
-ddsamq1618 samequantum  7E+3    -0E+3  -> 1
-ddsamq1619 samequantum  7E+3     0E-3  -> 0
-ddsamq1620 samequantum  7E+3     0     -> 0
-ddsamq1621 samequantum  7E+3     0E+3  -> 1
-ddsamq1622 samequantum  7E+3     7E-3  -> 0
-ddsamq1623 samequantum  7E+3     7     -> 0
-ddsamq1624 samequantum  7E+3     7E+3  -> 1
-ddsamq1625 samequantum  7E+3     sNaN  -> 0
-
-ddsamq1710 samequantum  sNaN    -Inf   -> 0
-ddsamq1711 samequantum  sNaN     Inf   -> 0
-ddsamq1712 samequantum  sNaN     NaN   -> 1
-ddsamq1713 samequantum  sNaN    -7E+3  -> 0
-ddsamq1714 samequantum  sNaN    -7     -> 0
-ddsamq1715 samequantum  sNaN    -7E-3  -> 0
-ddsamq1716 samequantum  sNaN    -0E-3  -> 0
-ddsamq1717 samequantum  sNaN    -0     -> 0
-ddsamq1718 samequantum  sNaN    -0E+3  -> 0
-ddsamq1719 samequantum  sNaN     0E-3  -> 0
-ddsamq1720 samequantum  sNaN     0     -> 0
-ddsamq1721 samequantum  sNaN     0E+3  -> 0
-ddsamq1722 samequantum  sNaN     7E-3  -> 0
-ddsamq1723 samequantum  sNaN     7     -> 0
-ddsamq1724 samequantum  sNaN     7E+3  -> 0
-ddsamq1725 samequantum  sNaN     sNaN  -> 1
--- noisy NaNs
-ddsamq1730 samequantum  sNaN3    sNaN3 -> 1
-ddsamq1731 samequantum  sNaN3    sNaN4 -> 1
-ddsamq1732 samequantum   NaN3     NaN3 -> 1
-ddsamq1733 samequantum   NaN3     NaN4 -> 1
-ddsamq1734 samequantum  sNaN3     3    -> 0
-ddsamq1735 samequantum   NaN3     3    -> 0
-ddsamq1736 samequantum      4    sNaN4 -> 0
-ddsamq1737 samequantum      3     NaN3 -> 0
-ddsamq1738 samequantum    Inf    sNaN4 -> 0
-ddsamq1739 samequantum   -Inf     NaN3 -> 0
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddScaleB.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddScaleB.decTest
deleted file mode 100644
index 6ba3e39..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddScaleB.decTest
+++ /dev/null
@@ -1,243 +0,0 @@
-------------------------------------------------------------------------
--- ddScalebB.decTest -- scale a decDouble by powers of 10             --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Max |rhs| is 2*(384+16) = 800
-
--- Sanity checks
-ddscb001 scaleb       7.50   10 -> 7.50E+10
-ddscb002 scaleb       7.50    3 -> 7.50E+3
-ddscb003 scaleb       7.50    2 -> 750
-ddscb004 scaleb       7.50    1 -> 75.0
-ddscb005 scaleb       7.50    0 -> 7.50
-ddscb006 scaleb       7.50   -1 -> 0.750
-ddscb007 scaleb       7.50   -2 -> 0.0750
-ddscb008 scaleb       7.50  -10 -> 7.50E-10
-ddscb009 scaleb      -7.50    3 -> -7.50E+3
-ddscb010 scaleb      -7.50    2 -> -750
-ddscb011 scaleb      -7.50    1 -> -75.0
-ddscb012 scaleb      -7.50    0 -> -7.50
-ddscb013 scaleb      -7.50   -1 -> -0.750
-
--- Infinities
-ddscb014 scaleb  Infinity   1 -> Infinity
-ddscb015 scaleb  -Infinity  2 -> -Infinity
-ddscb016 scaleb  Infinity  -1 -> Infinity
-ddscb017 scaleb  -Infinity -2 -> -Infinity
-
--- Next two are somewhat undefined in 754r; treat as non-integer
-ddscb018 scaleb  10  Infinity -> NaN Invalid_operation
-ddscb019 scaleb  10 -Infinity -> NaN Invalid_operation
-
--- NaNs are undefined in 754r; assume usual processing
--- NaNs, 0 payload
-ddscb021 scaleb         NaN  1 -> NaN
-ddscb022 scaleb        -NaN -1 -> -NaN
-ddscb023 scaleb        sNaN  1 -> NaN Invalid_operation
-ddscb024 scaleb       -sNaN  1 -> -NaN Invalid_operation
-ddscb025 scaleb    4    NaN    -> NaN
-ddscb026 scaleb -Inf   -NaN    -> -NaN
-ddscb027 scaleb    4   sNaN    -> NaN Invalid_operation
-ddscb028 scaleb  Inf  -sNaN    -> -NaN Invalid_operation
-
--- non-integer RHS
-ddscb030 scaleb  1.23    1    ->  12.3
-ddscb031 scaleb  1.23    1.00 ->  NaN Invalid_operation
-ddscb032 scaleb  1.23    1.1  ->  NaN Invalid_operation
-ddscb033 scaleb  1.23    1.01 ->  NaN Invalid_operation
-ddscb034 scaleb  1.23    0.01 ->  NaN Invalid_operation
-ddscb035 scaleb  1.23    0.11 ->  NaN Invalid_operation
-ddscb036 scaleb  1.23    0.999999999 ->  NaN Invalid_operation
-ddscb037 scaleb  1.23   -1    ->  0.123
-ddscb038 scaleb  1.23   -1.00 ->  NaN Invalid_operation
-ddscb039 scaleb  1.23   -1.1  ->  NaN Invalid_operation
-ddscb040 scaleb  1.23   -1.01 ->  NaN Invalid_operation
-ddscb041 scaleb  1.23   -0.01 ->  NaN Invalid_operation
-ddscb042 scaleb  1.23   -0.11 ->  NaN Invalid_operation
-ddscb043 scaleb  1.23   -0.999999999 ->  NaN Invalid_operation
-ddscb044 scaleb  1.23    0.1         ->  NaN Invalid_operation
-ddscb045 scaleb  1.23    1E+1        ->  NaN Invalid_operation
-ddscb046 scaleb  1.23    1.1234E+6   ->  NaN Invalid_operation
-ddscb047 scaleb  1.23    1.123E+4    ->  NaN Invalid_operation
-
--- out-of range RHS
-ddscb120 scaleb  1.23    799         ->  Infinity Overflow Inexact Rounded
-ddscb121 scaleb  1.23    800         ->  Infinity Overflow Inexact Rounded
-ddscb122 scaleb  1.23    801         ->  NaN Invalid_operation
-ddscb123 scaleb  1.23    802         ->  NaN Invalid_operation
-ddscb124 scaleb  1.23   -799         ->  0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddscb125 scaleb  1.23   -800         ->  0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddscb126 scaleb  1.23   -801         ->  NaN Invalid_operation
-ddscb127 scaleb  1.23   -802         ->  NaN Invalid_operation
-
--- NaNs, non-0 payload
--- propagating NaNs
-ddscb861 scaleb  NaN01   -Inf     ->  NaN1
-ddscb862 scaleb -NaN02   -1000    -> -NaN2
-ddscb863 scaleb  NaN03    1000    ->  NaN3
-ddscb864 scaleb  NaN04    Inf     ->  NaN4
-ddscb865 scaleb  NaN05    NaN61   ->  NaN5
-ddscb866 scaleb -Inf     -NaN71   -> -NaN71
-ddscb867 scaleb -1000     NaN81   ->  NaN81
-ddscb868 scaleb  1000     NaN91   ->  NaN91
-ddscb869 scaleb  Inf      NaN101  ->  NaN101
-ddscb871 scaleb  sNaN011  -Inf    ->  NaN11  Invalid_operation
-ddscb872 scaleb  sNaN012  -1000   ->  NaN12  Invalid_operation
-ddscb873 scaleb -sNaN013   1000   -> -NaN13  Invalid_operation
-ddscb874 scaleb  sNaN014   NaN171 ->  NaN14  Invalid_operation
-ddscb875 scaleb  sNaN015  sNaN181 ->  NaN15  Invalid_operation
-ddscb876 scaleb  NaN016   sNaN191 ->  NaN191 Invalid_operation
-ddscb877 scaleb -Inf      sNaN201 ->  NaN201 Invalid_operation
-ddscb878 scaleb -1000     sNaN211 ->  NaN211 Invalid_operation
-ddscb879 scaleb  1000    -sNaN221 -> -NaN221 Invalid_operation
-ddscb880 scaleb  Inf      sNaN231 ->  NaN231 Invalid_operation
-ddscb881 scaleb  NaN025   sNaN241 ->  NaN241 Invalid_operation
-
--- finites
-ddscb051 scaleb          7   -2  -> 0.07
-ddscb052 scaleb         -7   -2  -> -0.07
-ddscb053 scaleb         75   -2  -> 0.75
-ddscb054 scaleb        -75   -2  -> -0.75
-ddscb055 scaleb       7.50   -2  -> 0.0750
-ddscb056 scaleb      -7.50   -2  -> -0.0750
-ddscb057 scaleb       7.500  -2  -> 0.07500
-ddscb058 scaleb      -7.500  -2  -> -0.07500
-ddscb061 scaleb          7   -1  -> 0.7
-ddscb062 scaleb         -7   -1  -> -0.7
-ddscb063 scaleb         75   -1  -> 7.5
-ddscb064 scaleb        -75   -1  -> -7.5
-ddscb065 scaleb       7.50   -1  -> 0.750
-ddscb066 scaleb      -7.50   -1  -> -0.750
-ddscb067 scaleb       7.500  -1  -> 0.7500
-ddscb068 scaleb      -7.500  -1  -> -0.7500
-ddscb071 scaleb          7    0  -> 7
-ddscb072 scaleb         -7    0  -> -7
-ddscb073 scaleb         75    0  -> 75
-ddscb074 scaleb        -75    0  -> -75
-ddscb075 scaleb       7.50    0  -> 7.50
-ddscb076 scaleb      -7.50    0  -> -7.50
-ddscb077 scaleb       7.500   0  -> 7.500
-ddscb078 scaleb      -7.500   0  -> -7.500
-ddscb081 scaleb          7    1  -> 7E+1
-ddscb082 scaleb         -7    1  -> -7E+1
-ddscb083 scaleb         75    1  -> 7.5E+2
-ddscb084 scaleb        -75    1  -> -7.5E+2
-ddscb085 scaleb       7.50    1  -> 75.0
-ddscb086 scaleb      -7.50    1  -> -75.0
-ddscb087 scaleb       7.500   1  -> 75.00
-ddscb088 scaleb      -7.500   1  -> -75.00
-ddscb091 scaleb          7    2  -> 7E+2
-ddscb092 scaleb         -7    2  -> -7E+2
-ddscb093 scaleb         75    2  -> 7.5E+3
-ddscb094 scaleb        -75    2  -> -7.5E+3
-ddscb095 scaleb       7.50    2  -> 750
-ddscb096 scaleb      -7.50    2  -> -750
-ddscb097 scaleb       7.500   2  -> 750.0
-ddscb098 scaleb      -7.500   2  -> -750.0
-
--- zeros
-ddscb111 scaleb          0  1 -> 0E+1
-ddscb112 scaleb         -0  2 -> -0E+2
-ddscb113 scaleb       0E+4  3 -> 0E+7
-ddscb114 scaleb      -0E+4  4 -> -0E+8
-ddscb115 scaleb     0.0000  5 -> 0E+1
-ddscb116 scaleb    -0.0000  6 -> -0E+2
-ddscb117 scaleb      0E-141 7 -> 0E-134
-ddscb118 scaleb     -0E-141 8 -> -0E-133
-
--- Nmax, Nmin, Ntiny
-ddscb132 scaleb  9.999999999999999E+384  +384 -> Infinity    Overflow Inexact Rounded
-ddscb133 scaleb  9.999999999999999E+384  +10 -> Infinity     Overflow Inexact Rounded
-ddscb134 scaleb  9.999999999999999E+384  +1  -> Infinity     Overflow Inexact Rounded
-ddscb135 scaleb  9.999999999999999E+384   0  -> 9.999999999999999E+384
-ddscb136 scaleb  9.999999999999999E+384  -1  -> 9.999999999999999E+383
-ddscb137 scaleb  1E-383           +1  -> 1E-382
-ddscb138 scaleb  1E-383           -0  -> 1E-383
-ddscb139 scaleb  1E-383           -1  -> 1E-384          Subnormal
-ddscb140 scaleb  1.000000000000000E-383  +1  -> 1.000000000000000E-382
-ddscb141 scaleb  1.000000000000000E-383   0  -> 1.000000000000000E-383
-ddscb142 scaleb  1.000000000000000E-383  -1  -> 1.00000000000000E-384 Subnormal Rounded
-ddscb143 scaleb  1E-398          +1  -> 1E-397          Subnormal
-ddscb144 scaleb  1E-398          -0  -> 1E-398         Subnormal
-ddscb145 scaleb  1E-398          -1  -> 0E-398         Underflow Subnormal Inexact Rounded Clamped
-
-ddscb150 scaleb  -1E-398         +1  -> -1E-397         Subnormal
-ddscb151 scaleb  -1E-398         -0  -> -1E-398        Subnormal
-ddscb152 scaleb  -1E-398         -1  -> -0E-398        Underflow Subnormal Inexact Rounded Clamped
-ddscb153 scaleb  -1.000000000000000E-383 +1  -> -1.000000000000000E-382
-ddscb154 scaleb  -1.000000000000000E-383 +0  -> -1.000000000000000E-383
-ddscb155 scaleb  -1.000000000000000E-383 -1  -> -1.00000000000000E-384 Subnormal Rounded
-ddscb156 scaleb  -1E-383          +1  -> -1E-382
-ddscb157 scaleb  -1E-383          -0  -> -1E-383
-ddscb158 scaleb  -1E-383          -1  -> -1E-384          Subnormal
-ddscb159 scaleb  -9.999999999999999E+384 +1  -> -Infinity        Overflow Inexact Rounded
-ddscb160 scaleb  -9.999999999999999E+384 +0  -> -9.999999999999999E+384
-ddscb161 scaleb  -9.999999999999999E+384 -1  -> -9.999999999999999E+383
-ddscb162 scaleb  -9E+384          +1  -> -Infinity        Overflow Inexact Rounded
-ddscb163 scaleb  -1E+384          +1  -> -Infinity        Overflow Inexact Rounded
-
--- some Origami
--- (these check that overflow is being done correctly)
-ddscb171 scaleb   1000E+365  +1 -> 1.000E+369
-ddscb172 scaleb   1000E+366  +1 -> 1.000E+370
-ddscb173 scaleb   1000E+367  +1 -> 1.000E+371
-ddscb174 scaleb   1000E+368  +1 -> 1.000E+372
-ddscb175 scaleb   1000E+369  +1 -> 1.0000E+373                  Clamped
-ddscb176 scaleb   1000E+370  +1 -> 1.00000E+374                 Clamped
-ddscb177 scaleb   1000E+371  +1 -> 1.000000E+375                Clamped
-ddscb178 scaleb   1000E+372  +1 -> 1.0000000E+376               Clamped
-ddscb179 scaleb   1000E+373  +1 -> 1.00000000E+377              Clamped
-ddscb180 scaleb   1000E+374  +1 -> 1.000000000E+378             Clamped
-ddscb181 scaleb   1000E+375  +1 -> 1.0000000000E+379            Clamped
-ddscb182 scaleb   1000E+376  +1 -> 1.00000000000E+380           Clamped
-ddscb183 scaleb   1000E+377  +1 -> 1.000000000000E+381          Clamped
-ddscb184 scaleb   1000E+378  +1 -> 1.0000000000000E+382         Clamped
-ddscb185 scaleb   1000E+379  +1 -> 1.00000000000000E+383        Clamped
-ddscb186 scaleb   1000E+380  +1 -> 1.000000000000000E+384       Clamped
-ddscb187 scaleb   1000E+381  +1 -> Infinity    Overflow Inexact Rounded
-
--- and a few more subnormal truncations
--- (these check that underflow is being done correctly)
-ddscb201 scaleb  1.000000000000000E-383   0  -> 1.000000000000000E-383
-ddscb202 scaleb  1.000000000000000E-383  -1  -> 1.00000000000000E-384 Subnormal Rounded
-ddscb203 scaleb  1.000000000000000E-383  -2  -> 1.0000000000000E-385 Subnormal Rounded
-ddscb204 scaleb  1.000000000000000E-383  -3  -> 1.000000000000E-386 Subnormal Rounded
-ddscb205 scaleb  1.000000000000000E-383  -4  -> 1.00000000000E-387 Subnormal Rounded
-ddscb206 scaleb  1.000000000000000E-383  -5  -> 1.0000000000E-388 Subnormal Rounded
-ddscb207 scaleb  1.000000000000000E-383  -6  -> 1.000000000E-389 Subnormal Rounded
-ddscb208 scaleb  1.000000000000000E-383  -7  -> 1.00000000E-390 Subnormal Rounded
-ddscb209 scaleb  1.000000000000000E-383  -8  -> 1.0000000E-391 Subnormal Rounded
-ddscb210 scaleb  1.000000000000000E-383  -9  -> 1.000000E-392 Subnormal Rounded
-ddscb211 scaleb  1.000000000000000E-383  -10 -> 1.00000E-393 Subnormal Rounded
-ddscb212 scaleb  1.000000000000000E-383  -11 -> 1.0000E-394 Subnormal Rounded
-ddscb213 scaleb  1.000000000000000E-383  -12 -> 1.000E-395 Subnormal Rounded
-ddscb214 scaleb  1.000000000000000E-383  -13 -> 1.00E-396 Subnormal Rounded
-ddscb215 scaleb  1.000000000000000E-383  -14 -> 1.0E-397 Subnormal Rounded
-ddscb216 scaleb  1.000000000000000E-383  -15 -> 1E-398 Subnormal Rounded
-ddscb217 scaleb  1.000000000000000E-383  -16 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-ddscb218 scaleb  1.000000000000000E-383  -17 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddShift.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddShift.decTest
deleted file mode 100644
index ec47240..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddShift.decTest
+++ /dev/null
@@ -1,262 +0,0 @@
-------------------------------------------------------------------------
--- ddShift.decTest -- shift decDouble coefficient left or right       --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Sanity check
-ddshi001 shift                 0    0  ->  0
-ddshi002 shift                 0    2  ->  0
-ddshi003 shift                 1    2  ->  100
-ddshi004 shift                 1   15  ->  1000000000000000
-ddshi005 shift                 1   16  ->  0
-ddshi006 shift                 1   -1  ->  0
-ddshi007 shift                 0   -2  ->  0
-ddshi008 shift  1234567890123456   -1  ->  123456789012345
-ddshi009 shift  1234567890123456   -15 ->  1
-ddshi010 shift  1234567890123456   -16 ->  0
-ddshi011 shift  9934567890123456   -15 ->  9
-ddshi012 shift  9934567890123456   -16 ->  0
-
--- rhs must be an integer
-ddshi015 shift        1    1.5    -> NaN Invalid_operation
-ddshi016 shift        1    1.0    -> NaN Invalid_operation
-ddshi017 shift        1    0.1    -> NaN Invalid_operation
-ddshi018 shift        1    0.0    -> NaN Invalid_operation
-ddshi019 shift        1    1E+1   -> NaN Invalid_operation
-ddshi020 shift        1    1E+99  -> NaN Invalid_operation
-ddshi021 shift        1    Inf    -> NaN Invalid_operation
-ddshi022 shift        1    -Inf   -> NaN Invalid_operation
--- and |rhs| <= precision
-ddshi025 shift        1    -1000  -> NaN Invalid_operation
-ddshi026 shift        1    -17    -> NaN Invalid_operation
-ddshi027 shift        1     17    -> NaN Invalid_operation
-ddshi028 shift        1     1000  -> NaN Invalid_operation
-
--- full shifting pattern
-ddshi030 shift  1234567890123456         -16  -> 0
-ddshi031 shift  1234567890123456         -15  -> 1
-ddshi032 shift  1234567890123456         -14  -> 12
-ddshi033 shift  1234567890123456         -13  -> 123
-ddshi034 shift  1234567890123456         -12  -> 1234
-ddshi035 shift  1234567890123456         -11  -> 12345
-ddshi036 shift  1234567890123456         -10  -> 123456
-ddshi037 shift  1234567890123456         -9   -> 1234567
-ddshi038 shift  1234567890123456         -8   -> 12345678
-ddshi039 shift  1234567890123456         -7   -> 123456789
-ddshi040 shift  1234567890123456         -6   -> 1234567890
-ddshi041 shift  1234567890123456         -5   -> 12345678901
-ddshi042 shift  1234567890123456         -4   -> 123456789012
-ddshi043 shift  1234567890123456         -3   -> 1234567890123
-ddshi044 shift  1234567890123456         -2   -> 12345678901234
-ddshi045 shift  1234567890123456         -1   -> 123456789012345
-ddshi046 shift  1234567890123456         -0   -> 1234567890123456
-
-ddshi047 shift  1234567890123456         +0   -> 1234567890123456
-ddshi048 shift  1234567890123456         +1   -> 2345678901234560
-ddshi049 shift  1234567890123456         +2   -> 3456789012345600
-ddshi050 shift  1234567890123456         +3   -> 4567890123456000
-ddshi051 shift  1234567890123456         +4   -> 5678901234560000
-ddshi052 shift  1234567890123456         +5   -> 6789012345600000
-ddshi053 shift  1234567890123456         +6   -> 7890123456000000
-ddshi054 shift  1234567890123456         +7   -> 8901234560000000
-ddshi055 shift  1234567890123456         +8   -> 9012345600000000
-ddshi056 shift  1234567890123456         +9   ->  123456000000000
-ddshi057 shift  1234567890123456         +10  -> 1234560000000000
-ddshi058 shift  1234567890123456         +11  -> 2345600000000000
-ddshi059 shift  1234567890123456         +12  -> 3456000000000000
-ddshi060 shift  1234567890123456         +13  -> 4560000000000000
-ddshi061 shift  1234567890123456         +14  -> 5600000000000000
-ddshi062 shift  1234567890123456         +15  -> 6000000000000000
-ddshi063 shift  1234567890123456         +16  -> 0
-
--- zeros
-ddshi070 shift  0E-10              +9   ->   0E-10
-ddshi071 shift  0E-10              -9   ->   0E-10
-ddshi072 shift  0.000              +9   ->   0.000
-ddshi073 shift  0.000              -9   ->   0.000
-ddshi074 shift  0E+10              +9   ->   0E+10
-ddshi075 shift  0E+10              -9   ->   0E+10
-ddshi076 shift -0E-10              +9   ->  -0E-10
-ddshi077 shift -0E-10              -9   ->  -0E-10
-ddshi078 shift -0.000              +9   ->  -0.000
-ddshi079 shift -0.000              -9   ->  -0.000
-ddshi080 shift -0E+10              +9   ->  -0E+10
-ddshi081 shift -0E+10              -9   ->  -0E+10
-
--- Nmax, Nmin, Ntiny
-ddshi141 shift  9.999999999999999E+384     -1  -> 9.99999999999999E+383
-ddshi142 shift  9.999999999999999E+384     -15 -> 9E+369
-ddshi143 shift  9.999999999999999E+384      1  -> 9.999999999999990E+384
-ddshi144 shift  9.999999999999999E+384      15 -> 9.000000000000000E+384
-ddshi145 shift  1E-383                     -1  -> 0E-383
-ddshi146 shift  1E-383                     -15 -> 0E-383
-ddshi147 shift  1E-383                      1  -> 1.0E-382
-ddshi148 shift  1E-383                      15 -> 1.000000000000000E-368
-ddshi151 shift  1.000000000000000E-383     -1  -> 1.00000000000000E-384
-ddshi152 shift  1.000000000000000E-383     -15 -> 1E-398
-ddshi153 shift  1.000000000000000E-383      1  -> 0E-398
-ddshi154 shift  1.000000000000000E-383      15 -> 0E-398
-ddshi155 shift  9.000000000000000E-383     -1  -> 9.00000000000000E-384
-ddshi156 shift  9.000000000000000E-383     -15 -> 9E-398
-ddshi157 shift  9.000000000000000E-383      1  -> 0E-398
-ddshi158 shift  9.000000000000000E-383      15 -> 0E-398
-ddshi160 shift  1E-398                     -1  -> 0E-398
-ddshi161 shift  1E-398                     -15 -> 0E-398
-ddshi162 shift  1E-398                      1  -> 1.0E-397
-ddshi163 shift  1E-398                      15 -> 1.000000000000000E-383
---  negatives
-ddshi171 shift -9.999999999999999E+384     -1  -> -9.99999999999999E+383
-ddshi172 shift -9.999999999999999E+384     -15 -> -9E+369
-ddshi173 shift -9.999999999999999E+384      1  -> -9.999999999999990E+384
-ddshi174 shift -9.999999999999999E+384      15 -> -9.000000000000000E+384
-ddshi175 shift -1E-383                     -1  -> -0E-383
-ddshi176 shift -1E-383                     -15 -> -0E-383
-ddshi177 shift -1E-383                      1  -> -1.0E-382
-ddshi178 shift -1E-383                      15 -> -1.000000000000000E-368
-ddshi181 shift -1.000000000000000E-383     -1  -> -1.00000000000000E-384
-ddshi182 shift -1.000000000000000E-383     -15 -> -1E-398
-ddshi183 shift -1.000000000000000E-383      1  -> -0E-398
-ddshi184 shift -1.000000000000000E-383      15 -> -0E-398
-ddshi185 shift -9.000000000000000E-383     -1  -> -9.00000000000000E-384
-ddshi186 shift -9.000000000000000E-383     -15 -> -9E-398
-ddshi187 shift -9.000000000000000E-383      1  -> -0E-398
-ddshi188 shift -9.000000000000000E-383      15 -> -0E-398
-ddshi190 shift -1E-398                     -1  -> -0E-398
-ddshi191 shift -1E-398                     -15 -> -0E-398
-ddshi192 shift -1E-398                      1  -> -1.0E-397
-ddshi193 shift -1E-398                      15 -> -1.000000000000000E-383
-
--- more negatives (of sanities)
-ddshi201 shift                -0    0  -> -0
-ddshi202 shift                -0    2  -> -0
-ddshi203 shift                -1    2  -> -100
-ddshi204 shift                -1   15  -> -1000000000000000
-ddshi205 shift                -1   16  -> -0
-ddshi206 shift                -1   -1  -> -0
-ddshi207 shift                -0   -2  -> -0
-ddshi208 shift -1234567890123456   -1  -> -123456789012345
-ddshi209 shift -1234567890123456   -15 -> -1
-ddshi210 shift -1234567890123456   -16 -> -0
-ddshi211 shift -9934567890123456   -15 -> -9
-ddshi212 shift -9934567890123456   -16 -> -0
-
-
--- Specials; NaNs are handled as usual
-ddshi781 shift -Inf  -8     -> -Infinity
-ddshi782 shift -Inf  -1     -> -Infinity
-ddshi783 shift -Inf  -0     -> -Infinity
-ddshi784 shift -Inf   0     -> -Infinity
-ddshi785 shift -Inf   1     -> -Infinity
-ddshi786 shift -Inf   8     -> -Infinity
-ddshi787 shift -1000 -Inf   -> NaN Invalid_operation
-ddshi788 shift -Inf  -Inf   -> NaN Invalid_operation
-ddshi789 shift -1    -Inf   -> NaN Invalid_operation
-ddshi790 shift -0    -Inf   -> NaN Invalid_operation
-ddshi791 shift  0    -Inf   -> NaN Invalid_operation
-ddshi792 shift  1    -Inf   -> NaN Invalid_operation
-ddshi793 shift  1000 -Inf   -> NaN Invalid_operation
-ddshi794 shift  Inf  -Inf   -> NaN Invalid_operation
-
-ddshi800 shift  Inf  -Inf   -> NaN Invalid_operation
-ddshi801 shift  Inf  -8     -> Infinity
-ddshi802 shift  Inf  -1     -> Infinity
-ddshi803 shift  Inf  -0     -> Infinity
-ddshi804 shift  Inf   0     -> Infinity
-ddshi805 shift  Inf   1     -> Infinity
-ddshi806 shift  Inf   8     -> Infinity
-ddshi807 shift  Inf   Inf   -> NaN Invalid_operation
-ddshi808 shift -1000  Inf   -> NaN Invalid_operation
-ddshi809 shift -Inf   Inf   -> NaN Invalid_operation
-ddshi810 shift -1     Inf   -> NaN Invalid_operation
-ddshi811 shift -0     Inf   -> NaN Invalid_operation
-ddshi812 shift  0     Inf   -> NaN Invalid_operation
-ddshi813 shift  1     Inf   -> NaN Invalid_operation
-ddshi814 shift  1000  Inf   -> NaN Invalid_operation
-ddshi815 shift  Inf   Inf   -> NaN Invalid_operation
-
-ddshi821 shift  NaN -Inf    ->  NaN
-ddshi822 shift  NaN -1000   ->  NaN
-ddshi823 shift  NaN -1      ->  NaN
-ddshi824 shift  NaN -0      ->  NaN
-ddshi825 shift  NaN  0      ->  NaN
-ddshi826 shift  NaN  1      ->  NaN
-ddshi827 shift  NaN  1000   ->  NaN
-ddshi828 shift  NaN  Inf    ->  NaN
-ddshi829 shift  NaN  NaN    ->  NaN
-ddshi830 shift -Inf  NaN    ->  NaN
-ddshi831 shift -1000 NaN    ->  NaN
-ddshi832 shift -1    NaN    ->  NaN
-ddshi833 shift -0    NaN    ->  NaN
-ddshi834 shift  0    NaN    ->  NaN
-ddshi835 shift  1    NaN    ->  NaN
-ddshi836 shift  1000 NaN    ->  NaN
-ddshi837 shift  Inf  NaN    ->  NaN
-
-ddshi841 shift  sNaN -Inf   ->  NaN  Invalid_operation
-ddshi842 shift  sNaN -1000  ->  NaN  Invalid_operation
-ddshi843 shift  sNaN -1     ->  NaN  Invalid_operation
-ddshi844 shift  sNaN -0     ->  NaN  Invalid_operation
-ddshi845 shift  sNaN  0     ->  NaN  Invalid_operation
-ddshi846 shift  sNaN  1     ->  NaN  Invalid_operation
-ddshi847 shift  sNaN  1000  ->  NaN  Invalid_operation
-ddshi848 shift  sNaN  NaN   ->  NaN  Invalid_operation
-ddshi849 shift  sNaN sNaN   ->  NaN  Invalid_operation
-ddshi850 shift  NaN  sNaN   ->  NaN  Invalid_operation
-ddshi851 shift -Inf  sNaN   ->  NaN  Invalid_operation
-ddshi852 shift -1000 sNaN   ->  NaN  Invalid_operation
-ddshi853 shift -1    sNaN   ->  NaN  Invalid_operation
-ddshi854 shift -0    sNaN   ->  NaN  Invalid_operation
-ddshi855 shift  0    sNaN   ->  NaN  Invalid_operation
-ddshi856 shift  1    sNaN   ->  NaN  Invalid_operation
-ddshi857 shift  1000 sNaN   ->  NaN  Invalid_operation
-ddshi858 shift  Inf  sNaN   ->  NaN  Invalid_operation
-ddshi859 shift  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddshi861 shift  NaN1   -Inf    ->  NaN1
-ddshi862 shift +NaN2   -1000   ->  NaN2
-ddshi863 shift  NaN3    1000   ->  NaN3
-ddshi864 shift  NaN4    Inf    ->  NaN4
-ddshi865 shift  NaN5   +NaN6   ->  NaN5
-ddshi866 shift -Inf     NaN7   ->  NaN7
-ddshi867 shift -1000    NaN8   ->  NaN8
-ddshi868 shift  1000    NaN9   ->  NaN9
-ddshi869 shift  Inf    +NaN10  ->  NaN10
-ddshi871 shift  sNaN11  -Inf   ->  NaN11  Invalid_operation
-ddshi872 shift  sNaN12  -1000  ->  NaN12  Invalid_operation
-ddshi873 shift  sNaN13   1000  ->  NaN13  Invalid_operation
-ddshi874 shift  sNaN14   NaN17 ->  NaN14  Invalid_operation
-ddshi875 shift  sNaN15  sNaN18 ->  NaN15  Invalid_operation
-ddshi876 shift  NaN16   sNaN19 ->  NaN19  Invalid_operation
-ddshi877 shift -Inf    +sNaN20 ->  NaN20  Invalid_operation
-ddshi878 shift -1000    sNaN21 ->  NaN21  Invalid_operation
-ddshi879 shift  1000    sNaN22 ->  NaN22  Invalid_operation
-ddshi880 shift  Inf     sNaN23 ->  NaN23  Invalid_operation
-ddshi881 shift +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-ddshi882 shift -NaN26    NaN28 -> -NaN26
-ddshi883 shift -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-ddshi884 shift  1000    -NaN30 -> -NaN30
-ddshi885 shift  1000   -sNaN31 -> -NaN31  Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddSubtract.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddSubtract.decTest
deleted file mode 100644
index 15d4777..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddSubtract.decTest
+++ /dev/null
@@ -1,629 +0,0 @@
-------------------------------------------------------------------------
--- ddSubtract.decTest -- decDouble subtraction                        --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This set of tests are for decDoubles only; all arguments are
--- representable in a decDouble
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- [first group are 'quick confidence check']
-ddsub001 subtract  0   0  -> '0'
-ddsub002 subtract  1   1  -> '0'
-ddsub003 subtract  1   2  -> '-1'
-ddsub004 subtract  2   1  -> '1'
-ddsub005 subtract  2   2  -> '0'
-ddsub006 subtract  3   2  -> '1'
-ddsub007 subtract  2   3  -> '-1'
-
-ddsub011 subtract -0   0  -> '-0'
-ddsub012 subtract -1   1  -> '-2'
-ddsub013 subtract -1   2  -> '-3'
-ddsub014 subtract -2   1  -> '-3'
-ddsub015 subtract -2   2  -> '-4'
-ddsub016 subtract -3   2  -> '-5'
-ddsub017 subtract -2   3  -> '-5'
-
-ddsub021 subtract  0  -0  -> '0'
-ddsub022 subtract  1  -1  -> '2'
-ddsub023 subtract  1  -2  -> '3'
-ddsub024 subtract  2  -1  -> '3'
-ddsub025 subtract  2  -2  -> '4'
-ddsub026 subtract  3  -2  -> '5'
-ddsub027 subtract  2  -3  -> '5'
-
-ddsub030 subtract  11  1  -> 10
-ddsub031 subtract  10  1  ->  9
-ddsub032 subtract  9   1  ->  8
-ddsub033 subtract  1   1  ->  0
-ddsub034 subtract  0   1  -> -1
-ddsub035 subtract -1   1  -> -2
-ddsub036 subtract -9   1  -> -10
-ddsub037 subtract -10  1  -> -11
-ddsub038 subtract -11  1  -> -12
-
-ddsub040 subtract '5.75' '3.3'  -> '2.45'
-ddsub041 subtract '5'    '-3'   -> '8'
-ddsub042 subtract '-5'   '-3'   -> '-2'
-ddsub043 subtract '-7'   '2.5'  -> '-9.5'
-ddsub044 subtract '0.7'  '0.3'  -> '0.4'
-ddsub045 subtract '1.3'  '0.3'  -> '1.0'
-ddsub046 subtract '1.25' '1.25' -> '0.00'
-
-ddsub050 subtract '1.23456789'    '1.00000000' -> '0.23456789'
-ddsub051 subtract '1.23456789'    '1.00000089' -> '0.23456700'
-
-ddsub060 subtract '70'    '10000e+16' -> '-1.000000000000000E+20' Inexact Rounded
-ddsub061 subtract '700'    '10000e+16' -> '-1.000000000000000E+20' Inexact Rounded
-ddsub062 subtract '7000'    '10000e+16' -> '-9.999999999999999E+19' Inexact Rounded
-ddsub063 subtract '70000'    '10000e+16' -> '-9.999999999999993E+19' Rounded
-ddsub064 subtract '700000'    '10000e+16' -> '-9.999999999999930E+19' Rounded
-  -- symmetry:
-ddsub065 subtract '10000e+16'    '70' -> '1.000000000000000E+20' Inexact Rounded
-ddsub066 subtract '10000e+16'    '700' -> '1.000000000000000E+20' Inexact Rounded
-ddsub067 subtract '10000e+16'    '7000' -> '9.999999999999999E+19' Inexact Rounded
-ddsub068 subtract '10000e+16'    '70000' -> '9.999999999999993E+19' Rounded
-ddsub069 subtract '10000e+16'    '700000' -> '9.999999999999930E+19' Rounded
-
-  -- some of the next group are really constructor tests
-ddsub090 subtract '00.0'    '0.0'  -> '0.0'
-ddsub091 subtract '00.0'    '0.00' -> '0.00'
-ddsub092 subtract '0.00'    '00.0' -> '0.00'
-ddsub093 subtract '00.0'    '0.00' -> '0.00'
-ddsub094 subtract '0.00'    '00.0' -> '0.00'
-ddsub095 subtract '3'    '.3'   -> '2.7'
-ddsub096 subtract '3.'   '.3'   -> '2.7'
-ddsub097 subtract '3.0'  '.3'   -> '2.7'
-ddsub098 subtract '3.00' '.3'   -> '2.70'
-ddsub099 subtract '3'    '3'    -> '0'
-ddsub100 subtract '3'    '+3'   -> '0'
-ddsub101 subtract '3'    '-3'   -> '6'
-ddsub102 subtract '3'    '0.3'  -> '2.7'
-ddsub103 subtract '3.'   '0.3'  -> '2.7'
-ddsub104 subtract '3.0'  '0.3'  -> '2.7'
-ddsub105 subtract '3.00' '0.3'  -> '2.70'
-ddsub106 subtract '3'    '3.0'  -> '0.0'
-ddsub107 subtract '3'    '+3.0' -> '0.0'
-ddsub108 subtract '3'    '-3.0' -> '6.0'
-
--- the above all from add; massaged and extended.  Now some new ones...
--- [particularly important for comparisons]
--- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7
--- with input rounding.
-ddsub120 subtract  '10.23456784'    '10.23456789'  -> '-5E-8'
-ddsub121 subtract  '10.23456785'    '10.23456789'  -> '-4E-8'
-ddsub122 subtract  '10.23456786'    '10.23456789'  -> '-3E-8'
-ddsub123 subtract  '10.23456787'    '10.23456789'  -> '-2E-8'
-ddsub124 subtract  '10.23456788'    '10.23456789'  -> '-1E-8'
-ddsub125 subtract  '10.23456789'    '10.23456789'  -> '0E-8'
-ddsub126 subtract  '10.23456790'    '10.23456789'  -> '1E-8'
-ddsub127 subtract  '10.23456791'    '10.23456789'  -> '2E-8'
-ddsub128 subtract  '10.23456792'    '10.23456789'  -> '3E-8'
-ddsub129 subtract  '10.23456793'    '10.23456789'  -> '4E-8'
-ddsub130 subtract  '10.23456794'    '10.23456789'  -> '5E-8'
-ddsub131 subtract  '10.23456781'    '10.23456786'  -> '-5E-8'
-ddsub132 subtract  '10.23456782'    '10.23456786'  -> '-4E-8'
-ddsub133 subtract  '10.23456783'    '10.23456786'  -> '-3E-8'
-ddsub134 subtract  '10.23456784'    '10.23456786'  -> '-2E-8'
-ddsub135 subtract  '10.23456785'    '10.23456786'  -> '-1E-8'
-ddsub136 subtract  '10.23456786'    '10.23456786'  -> '0E-8'
-ddsub137 subtract  '10.23456787'    '10.23456786'  -> '1E-8'
-ddsub138 subtract  '10.23456788'    '10.23456786'  -> '2E-8'
-ddsub139 subtract  '10.23456789'    '10.23456786'  -> '3E-8'
-ddsub140 subtract  '10.23456790'    '10.23456786'  -> '4E-8'
-ddsub141 subtract  '10.23456791'    '10.23456786'  -> '5E-8'
-ddsub142 subtract  '1'              '0.999999999'  -> '1E-9'
-ddsub143 subtract  '0.999999999'    '1'            -> '-1E-9'
-ddsub144 subtract  '-10.23456780'   '-10.23456786' -> '6E-8'
-ddsub145 subtract  '-10.23456790'   '-10.23456786' -> '-4E-8'
-ddsub146 subtract  '-10.23456791'   '-10.23456786' -> '-5E-8'
-
--- additional scaled arithmetic tests [0.97 problem]
-ddsub160 subtract '0'     '.1'      -> '-0.1'
-ddsub161 subtract '00'    '.97983'  -> '-0.97983'
-ddsub162 subtract '0'     '.9'      -> '-0.9'
-ddsub163 subtract '0'     '0.102'   -> '-0.102'
-ddsub164 subtract '0'     '.4'      -> '-0.4'
-ddsub165 subtract '0'     '.307'    -> '-0.307'
-ddsub166 subtract '0'     '.43822'  -> '-0.43822'
-ddsub167 subtract '0'     '.911'    -> '-0.911'
-ddsub168 subtract '.0'    '.02'     -> '-0.02'
-ddsub169 subtract '00'    '.392'    -> '-0.392'
-ddsub170 subtract '0'     '.26'     -> '-0.26'
-ddsub171 subtract '0'     '0.51'    -> '-0.51'
-ddsub172 subtract '0'     '.2234'   -> '-0.2234'
-ddsub173 subtract '0'     '.2'      -> '-0.2'
-ddsub174 subtract '.0'    '.0008'   -> '-0.0008'
--- 0. on left
-ddsub180 subtract '0.0'     '-.1'      -> '0.1'
-ddsub181 subtract '0.00'    '-.97983'  -> '0.97983'
-ddsub182 subtract '0.0'     '-.9'      -> '0.9'
-ddsub183 subtract '0.0'     '-0.102'   -> '0.102'
-ddsub184 subtract '0.0'     '-.4'      -> '0.4'
-ddsub185 subtract '0.0'     '-.307'    -> '0.307'
-ddsub186 subtract '0.0'     '-.43822'  -> '0.43822'
-ddsub187 subtract '0.0'     '-.911'    -> '0.911'
-ddsub188 subtract '0.0'     '-.02'     -> '0.02'
-ddsub189 subtract '0.00'    '-.392'    -> '0.392'
-ddsub190 subtract '0.0'     '-.26'     -> '0.26'
-ddsub191 subtract '0.0'     '-0.51'    -> '0.51'
-ddsub192 subtract '0.0'     '-.2234'   -> '0.2234'
-ddsub193 subtract '0.0'     '-.2'      -> '0.2'
-ddsub194 subtract '0.0'     '-.0008'   -> '0.0008'
--- negatives of same
-ddsub200 subtract '0'     '-.1'      -> '0.1'
-ddsub201 subtract '00'    '-.97983'  -> '0.97983'
-ddsub202 subtract '0'     '-.9'      -> '0.9'
-ddsub203 subtract '0'     '-0.102'   -> '0.102'
-ddsub204 subtract '0'     '-.4'      -> '0.4'
-ddsub205 subtract '0'     '-.307'    -> '0.307'
-ddsub206 subtract '0'     '-.43822'  -> '0.43822'
-ddsub207 subtract '0'     '-.911'    -> '0.911'
-ddsub208 subtract '.0'    '-.02'     -> '0.02'
-ddsub209 subtract '00'    '-.392'    -> '0.392'
-ddsub210 subtract '0'     '-.26'     -> '0.26'
-ddsub211 subtract '0'     '-0.51'    -> '0.51'
-ddsub212 subtract '0'     '-.2234'   -> '0.2234'
-ddsub213 subtract '0'     '-.2'      -> '0.2'
-ddsub214 subtract '.0'    '-.0008'   -> '0.0008'
-
--- more fixed, LHS swaps [really the same as testcases under add]
-ddsub220 subtract '-56267E-12' 0  -> '-5.6267E-8'
-ddsub221 subtract '-56267E-11' 0  -> '-5.6267E-7'
-ddsub222 subtract '-56267E-10' 0  -> '-0.0000056267'
-ddsub223 subtract '-56267E-9'  0  -> '-0.000056267'
-ddsub224 subtract '-56267E-8'  0  -> '-0.00056267'
-ddsub225 subtract '-56267E-7'  0  -> '-0.0056267'
-ddsub226 subtract '-56267E-6'  0  -> '-0.056267'
-ddsub227 subtract '-56267E-5'  0  -> '-0.56267'
-ddsub228 subtract '-56267E-2'  0  -> '-562.67'
-ddsub229 subtract '-56267E-1'  0  -> '-5626.7'
-ddsub230 subtract '-56267E-0'  0  -> '-56267'
--- symmetry ...
-ddsub240 subtract 0 '-56267E-12'  -> '5.6267E-8'
-ddsub241 subtract 0 '-56267E-11'  -> '5.6267E-7'
-ddsub242 subtract 0 '-56267E-10'  -> '0.0000056267'
-ddsub243 subtract 0 '-56267E-9'   -> '0.000056267'
-ddsub244 subtract 0 '-56267E-8'   -> '0.00056267'
-ddsub245 subtract 0 '-56267E-7'   -> '0.0056267'
-ddsub246 subtract 0 '-56267E-6'   -> '0.056267'
-ddsub247 subtract 0 '-56267E-5'   -> '0.56267'
-ddsub248 subtract 0 '-56267E-2'   -> '562.67'
-ddsub249 subtract 0 '-56267E-1'   -> '5626.7'
-ddsub250 subtract 0 '-56267E-0'   -> '56267'
-
--- now some more from the 'new' add
-ddsub301 subtract '1.23456789'  '1.00000000' -> '0.23456789'
-ddsub302 subtract '1.23456789'  '1.00000011' -> '0.23456778'
-
--- some carrying effects
-ddsub321 subtract '0.9998'  '0.0000' -> '0.9998'
-ddsub322 subtract '0.9998'  '0.0001' -> '0.9997'
-ddsub323 subtract '0.9998'  '0.0002' -> '0.9996'
-ddsub324 subtract '0.9998'  '0.0003' -> '0.9995'
-ddsub325 subtract '0.9998'  '-0.0000' -> '0.9998'
-ddsub326 subtract '0.9998'  '-0.0001' -> '0.9999'
-ddsub327 subtract '0.9998'  '-0.0002' -> '1.0000'
-ddsub328 subtract '0.9998'  '-0.0003' -> '1.0001'
-
--- internal boundaries
-ddsub346 subtract '10000e+9'  '7'   -> '9999999999993'
-ddsub347 subtract '10000e+9'  '70'   -> '9999999999930'
-ddsub348 subtract '10000e+9'  '700'   -> '9999999999300'
-ddsub349 subtract '10000e+9'  '7000'   -> '9999999993000'
-ddsub350 subtract '10000e+9'  '70000'   -> '9999999930000'
-ddsub351 subtract '10000e+9'  '700000'   -> '9999999300000'
-ddsub352 subtract '7' '10000e+9'   -> '-9999999999993'
-ddsub353 subtract '70' '10000e+9'   -> '-9999999999930'
-ddsub354 subtract '700' '10000e+9'   -> '-9999999999300'
-ddsub355 subtract '7000' '10000e+9'   -> '-9999999993000'
-ddsub356 subtract '70000' '10000e+9'   -> '-9999999930000'
-ddsub357 subtract '700000' '10000e+9'   -> '-9999999300000'
-
--- zero preservation
-ddsub361 subtract 1 '0.0001' -> '0.9999'
-ddsub362 subtract 1 '0.00001' -> '0.99999'
-ddsub363 subtract 1 '0.000001' -> '0.999999'
-ddsub364 subtract 1 '0.0000000000000001' -> '0.9999999999999999'
-ddsub365 subtract 1 '0.00000000000000001' -> '1.000000000000000' Inexact Rounded
-ddsub366 subtract 1 '0.000000000000000001' -> '1.000000000000000' Inexact Rounded
-
--- some funny zeros [in case of bad signum]
-ddsub370 subtract 1  0  -> 1
-ddsub371 subtract 1 0.  -> 1
-ddsub372 subtract 1  .0 -> 1.0
-ddsub373 subtract 1 0.0 -> 1.0
-ddsub374 subtract  0  1 -> -1
-ddsub375 subtract 0.  1 -> -1
-ddsub376 subtract  .0 1 -> -1.0
-ddsub377 subtract 0.0 1 -> -1.0
-
--- leading 0 digit before round
-ddsub910 subtract -103519362 -51897955.3 -> -51621406.7
-ddsub911 subtract 159579.444 89827.5229 -> 69751.9211
-
-ddsub920 subtract 333.0000000123456 33.00000001234566 -> 299.9999999999999 Inexact Rounded
-ddsub921 subtract 333.0000000123456 33.00000001234565 -> 300.0000000000000 Inexact Rounded
-ddsub922 subtract 133.0000000123456 33.00000001234565 ->  99.99999999999995
-ddsub923 subtract 133.0000000123456 33.00000001234564 ->  99.99999999999996
-ddsub924 subtract 133.0000000123456 33.00000001234540 -> 100.0000000000002 Rounded
-ddsub925 subtract 133.0000000123456 43.00000001234560 ->  90.00000000000000
-ddsub926 subtract 133.0000000123456 43.00000001234561 ->  89.99999999999999
-ddsub927 subtract 133.0000000123456 43.00000001234566 ->  89.99999999999994
-ddsub928 subtract 101.0000000123456 91.00000001234566 ->   9.99999999999994
-ddsub929 subtract 101.0000000123456 99.00000001234566 ->   1.99999999999994
-
--- more LHS swaps [were fixed]
-ddsub390 subtract '-56267E-10'   0 ->  '-0.0000056267'
-ddsub391 subtract '-56267E-6'    0 ->  '-0.056267'
-ddsub392 subtract '-56267E-5'    0 ->  '-0.56267'
-ddsub393 subtract '-56267E-4'    0 ->  '-5.6267'
-ddsub394 subtract '-56267E-3'    0 ->  '-56.267'
-ddsub395 subtract '-56267E-2'    0 ->  '-562.67'
-ddsub396 subtract '-56267E-1'    0 ->  '-5626.7'
-ddsub397 subtract '-56267E-0'    0 ->  '-56267'
-ddsub398 subtract '-5E-10'       0 ->  '-5E-10'
-ddsub399 subtract '-5E-7'        0 ->  '-5E-7'
-ddsub400 subtract '-5E-6'        0 ->  '-0.000005'
-ddsub401 subtract '-5E-5'        0 ->  '-0.00005'
-ddsub402 subtract '-5E-4'        0 ->  '-0.0005'
-ddsub403 subtract '-5E-1'        0 ->  '-0.5'
-ddsub404 subtract '-5E0'         0 ->  '-5'
-ddsub405 subtract '-5E1'         0 ->  '-50'
-ddsub406 subtract '-5E5'         0 ->  '-500000'
-ddsub407 subtract '-5E15'        0 ->  '-5000000000000000'
-ddsub408 subtract '-5E16'        0 ->  '-5.000000000000000E+16'  Rounded
-ddsub409 subtract '-5E17'        0 ->  '-5.000000000000000E+17'  Rounded
-ddsub410 subtract '-5E18'        0 ->  '-5.000000000000000E+18'  Rounded
-ddsub411 subtract '-5E100'       0 ->  '-5.000000000000000E+100' Rounded
-
--- more RHS swaps [were fixed]
-ddsub420 subtract 0  '-56267E-10' ->  '0.0000056267'
-ddsub421 subtract 0  '-56267E-6'  ->  '0.056267'
-ddsub422 subtract 0  '-56267E-5'  ->  '0.56267'
-ddsub423 subtract 0  '-56267E-4'  ->  '5.6267'
-ddsub424 subtract 0  '-56267E-3'  ->  '56.267'
-ddsub425 subtract 0  '-56267E-2'  ->  '562.67'
-ddsub426 subtract 0  '-56267E-1'  ->  '5626.7'
-ddsub427 subtract 0  '-56267E-0'  ->  '56267'
-ddsub428 subtract 0  '-5E-10'     ->  '5E-10'
-ddsub429 subtract 0  '-5E-7'      ->  '5E-7'
-ddsub430 subtract 0  '-5E-6'      ->  '0.000005'
-ddsub431 subtract 0  '-5E-5'      ->  '0.00005'
-ddsub432 subtract 0  '-5E-4'      ->  '0.0005'
-ddsub433 subtract 0  '-5E-1'      ->  '0.5'
-ddsub434 subtract 0  '-5E0'       ->  '5'
-ddsub435 subtract 0  '-5E1'       ->  '50'
-ddsub436 subtract 0  '-5E5'       ->  '500000'
-ddsub437 subtract 0  '-5E15'      ->  '5000000000000000'
-ddsub438 subtract 0  '-5E16'      ->  '5.000000000000000E+16'   Rounded
-ddsub439 subtract 0  '-5E17'      ->  '5.000000000000000E+17'   Rounded
-ddsub440 subtract 0  '-5E18'      ->  '5.000000000000000E+18'   Rounded
-ddsub441 subtract 0  '-5E100'     ->  '5.000000000000000E+100'  Rounded
-
-
--- try borderline precision, with carries, etc.
-ddsub461 subtract '1E+16' '1'        -> '9999999999999999'
-ddsub462 subtract '1E+12' '-1.111'   -> '1000000000001.111'
-ddsub463 subtract '1.111'  '-1E+12'  -> '1000000000001.111'
-ddsub464 subtract '-1'    '-1E+16'   -> '9999999999999999'
-ddsub465 subtract '7E+15' '1'        -> '6999999999999999'
-ddsub466 subtract '7E+12' '-1.111'   -> '7000000000001.111'
-ddsub467 subtract '1.111'  '-7E+12'  -> '7000000000001.111'
-ddsub468 subtract '-1'    '-7E+15'   -> '6999999999999999'
-
---                  1234567890123456       1234567890123456      1 23456789012345
-ddsub470 subtract '0.4444444444444444'  '-0.5555555555555563' -> '1.000000000000001' Inexact Rounded
-ddsub471 subtract '0.4444444444444444'  '-0.5555555555555562' -> '1.000000000000001' Inexact Rounded
-ddsub472 subtract '0.4444444444444444'  '-0.5555555555555561' -> '1.000000000000000' Inexact Rounded
-ddsub473 subtract '0.4444444444444444'  '-0.5555555555555560' -> '1.000000000000000' Inexact Rounded
-ddsub474 subtract '0.4444444444444444'  '-0.5555555555555559' -> '1.000000000000000' Inexact Rounded
-ddsub475 subtract '0.4444444444444444'  '-0.5555555555555558' -> '1.000000000000000' Inexact Rounded
-ddsub476 subtract '0.4444444444444444'  '-0.5555555555555557' -> '1.000000000000000' Inexact Rounded
-ddsub477 subtract '0.4444444444444444'  '-0.5555555555555556' -> '1.000000000000000' Rounded
-ddsub478 subtract '0.4444444444444444'  '-0.5555555555555555' -> '0.9999999999999999'
-ddsub479 subtract '0.4444444444444444'  '-0.5555555555555554' -> '0.9999999999999998'
-ddsub480 subtract '0.4444444444444444'  '-0.5555555555555553' -> '0.9999999999999997'
-ddsub481 subtract '0.4444444444444444'  '-0.5555555555555552' -> '0.9999999999999996'
-ddsub482 subtract '0.4444444444444444'  '-0.5555555555555551' -> '0.9999999999999995'
-ddsub483 subtract '0.4444444444444444'  '-0.5555555555555550' -> '0.9999999999999994'
-
--- and some more, including residue effects and different roundings
-rounding: half_up
-ddsub500 subtract '1231234567456789' 0             -> '1231234567456789'
-ddsub501 subtract '1231234567456789' 0.000000001   -> '1231234567456789' Inexact Rounded
-ddsub502 subtract '1231234567456789' 0.000001      -> '1231234567456789' Inexact Rounded
-ddsub503 subtract '1231234567456789' 0.1           -> '1231234567456789' Inexact Rounded
-ddsub504 subtract '1231234567456789' 0.4           -> '1231234567456789' Inexact Rounded
-ddsub505 subtract '1231234567456789' 0.49          -> '1231234567456789' Inexact Rounded
-ddsub506 subtract '1231234567456789' 0.499999      -> '1231234567456789' Inexact Rounded
-ddsub507 subtract '1231234567456789' 0.499999999   -> '1231234567456789' Inexact Rounded
-ddsub508 subtract '1231234567456789' 0.5           -> '1231234567456789' Inexact Rounded
-ddsub509 subtract '1231234567456789' 0.500000001   -> '1231234567456788' Inexact Rounded
-ddsub510 subtract '1231234567456789' 0.500001      -> '1231234567456788' Inexact Rounded
-ddsub511 subtract '1231234567456789' 0.51          -> '1231234567456788' Inexact Rounded
-ddsub512 subtract '1231234567456789' 0.6           -> '1231234567456788' Inexact Rounded
-ddsub513 subtract '1231234567456789' 0.9           -> '1231234567456788' Inexact Rounded
-ddsub514 subtract '1231234567456789' 0.99999       -> '1231234567456788' Inexact Rounded
-ddsub515 subtract '1231234567456789' 0.999999999   -> '1231234567456788' Inexact Rounded
-ddsub516 subtract '1231234567456789' 1             -> '1231234567456788'
-ddsub517 subtract '1231234567456789' 1.000000001   -> '1231234567456788' Inexact Rounded
-ddsub518 subtract '1231234567456789' 1.00001       -> '1231234567456788' Inexact Rounded
-ddsub519 subtract '1231234567456789' 1.1           -> '1231234567456788' Inexact Rounded
-
-rounding: half_even
-ddsub520 subtract '1231234567456789' 0             -> '1231234567456789'
-ddsub521 subtract '1231234567456789' 0.000000001   -> '1231234567456789' Inexact Rounded
-ddsub522 subtract '1231234567456789' 0.000001      -> '1231234567456789' Inexact Rounded
-ddsub523 subtract '1231234567456789' 0.1           -> '1231234567456789' Inexact Rounded
-ddsub524 subtract '1231234567456789' 0.4           -> '1231234567456789' Inexact Rounded
-ddsub525 subtract '1231234567456789' 0.49          -> '1231234567456789' Inexact Rounded
-ddsub526 subtract '1231234567456789' 0.499999      -> '1231234567456789' Inexact Rounded
-ddsub527 subtract '1231234567456789' 0.499999999   -> '1231234567456789' Inexact Rounded
-ddsub528 subtract '1231234567456789' 0.5           -> '1231234567456788' Inexact Rounded
-ddsub529 subtract '1231234567456789' 0.500000001   -> '1231234567456788' Inexact Rounded
-ddsub530 subtract '1231234567456789' 0.500001      -> '1231234567456788' Inexact Rounded
-ddsub531 subtract '1231234567456789' 0.51          -> '1231234567456788' Inexact Rounded
-ddsub532 subtract '1231234567456789' 0.6           -> '1231234567456788' Inexact Rounded
-ddsub533 subtract '1231234567456789' 0.9           -> '1231234567456788' Inexact Rounded
-ddsub534 subtract '1231234567456789' 0.99999       -> '1231234567456788' Inexact Rounded
-ddsub535 subtract '1231234567456789' 0.999999999   -> '1231234567456788' Inexact Rounded
-ddsub536 subtract '1231234567456789' 1             -> '1231234567456788'
-ddsub537 subtract '1231234567456789' 1.00000001    -> '1231234567456788' Inexact Rounded
-ddsub538 subtract '1231234567456789' 1.00001       -> '1231234567456788' Inexact Rounded
-ddsub539 subtract '1231234567456789' 1.1           -> '1231234567456788' Inexact Rounded
--- critical few with even bottom digit...
-ddsub540 subtract '1231234567456788' 0.499999999   -> '1231234567456788' Inexact Rounded
-ddsub541 subtract '1231234567456788' 0.5           -> '1231234567456788' Inexact Rounded
-ddsub542 subtract '1231234567456788' 0.500000001   -> '1231234567456787' Inexact Rounded
-
-rounding: down
-ddsub550 subtract '1231234567456789' 0             -> '1231234567456789'
-ddsub551 subtract '1231234567456789' 0.000000001   -> '1231234567456788' Inexact Rounded
-ddsub552 subtract '1231234567456789' 0.000001      -> '1231234567456788' Inexact Rounded
-ddsub553 subtract '1231234567456789' 0.1           -> '1231234567456788' Inexact Rounded
-ddsub554 subtract '1231234567456789' 0.4           -> '1231234567456788' Inexact Rounded
-ddsub555 subtract '1231234567456789' 0.49          -> '1231234567456788' Inexact Rounded
-ddsub556 subtract '1231234567456789' 0.499999      -> '1231234567456788' Inexact Rounded
-ddsub557 subtract '1231234567456789' 0.499999999   -> '1231234567456788' Inexact Rounded
-ddsub558 subtract '1231234567456789' 0.5           -> '1231234567456788' Inexact Rounded
-ddsub559 subtract '1231234567456789' 0.500000001   -> '1231234567456788' Inexact Rounded
-ddsub560 subtract '1231234567456789' 0.500001      -> '1231234567456788' Inexact Rounded
-ddsub561 subtract '1231234567456789' 0.51          -> '1231234567456788' Inexact Rounded
-ddsub562 subtract '1231234567456789' 0.6           -> '1231234567456788' Inexact Rounded
-ddsub563 subtract '1231234567456789' 0.9           -> '1231234567456788' Inexact Rounded
-ddsub564 subtract '1231234567456789' 0.99999       -> '1231234567456788' Inexact Rounded
-ddsub565 subtract '1231234567456789' 0.999999999   -> '1231234567456788' Inexact Rounded
-ddsub566 subtract '1231234567456789' 1             -> '1231234567456788'
-ddsub567 subtract '1231234567456789' 1.00000001    -> '1231234567456787' Inexact Rounded
-ddsub568 subtract '1231234567456789' 1.00001       -> '1231234567456787' Inexact Rounded
-ddsub569 subtract '1231234567456789' 1.1           -> '1231234567456787' Inexact Rounded
-
--- symmetry...
-rounding: half_up
-ddsub600 subtract 0             '1231234567456789' -> '-1231234567456789'
-ddsub601 subtract 0.000000001   '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub602 subtract 0.000001      '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub603 subtract 0.1           '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub604 subtract 0.4           '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub605 subtract 0.49          '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub606 subtract 0.499999      '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub607 subtract 0.499999999   '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub608 subtract 0.5           '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub609 subtract 0.500000001   '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub610 subtract 0.500001      '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub611 subtract 0.51          '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub612 subtract 0.6           '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub613 subtract 0.9           '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub614 subtract 0.99999       '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub615 subtract 0.999999999   '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub616 subtract 1             '1231234567456789' -> '-1231234567456788'
-ddsub617 subtract 1.000000001   '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub618 subtract 1.00001       '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub619 subtract 1.1           '1231234567456789' -> '-1231234567456788' Inexact Rounded
-
-rounding: half_even
-ddsub620 subtract 0             '1231234567456789' -> '-1231234567456789'
-ddsub621 subtract 0.000000001   '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub622 subtract 0.000001      '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub623 subtract 0.1           '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub624 subtract 0.4           '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub625 subtract 0.49          '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub626 subtract 0.499999      '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub627 subtract 0.499999999   '1231234567456789' -> '-1231234567456789' Inexact Rounded
-ddsub628 subtract 0.5           '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub629 subtract 0.500000001   '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub630 subtract 0.500001      '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub631 subtract 0.51          '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub632 subtract 0.6           '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub633 subtract 0.9           '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub634 subtract 0.99999       '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub635 subtract 0.999999999   '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub636 subtract 1             '1231234567456789' -> '-1231234567456788'
-ddsub637 subtract 1.00000001    '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub638 subtract 1.00001       '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub639 subtract 1.1           '1231234567456789' -> '-1231234567456788' Inexact Rounded
--- critical few with even bottom digit...
-ddsub640 subtract 0.499999999   '1231234567456788' -> '-1231234567456788' Inexact Rounded
-ddsub641 subtract 0.5           '1231234567456788' -> '-1231234567456788' Inexact Rounded
-ddsub642 subtract 0.500000001   '1231234567456788' -> '-1231234567456787' Inexact Rounded
-
-rounding: down
-ddsub650 subtract 0             '1231234567456789' -> '-1231234567456789'
-ddsub651 subtract 0.000000001   '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub652 subtract 0.000001      '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub653 subtract 0.1           '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub654 subtract 0.4           '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub655 subtract 0.49          '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub656 subtract 0.499999      '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub657 subtract 0.499999999   '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub658 subtract 0.5           '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub659 subtract 0.500000001   '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub660 subtract 0.500001      '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub661 subtract 0.51          '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub662 subtract 0.6           '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub663 subtract 0.9           '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub664 subtract 0.99999       '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub665 subtract 0.999999999   '1231234567456789' -> '-1231234567456788' Inexact Rounded
-ddsub666 subtract 1             '1231234567456789' -> '-1231234567456788'
-ddsub667 subtract 1.00000001    '1231234567456789' -> '-1231234567456787' Inexact Rounded
-ddsub668 subtract 1.00001       '1231234567456789' -> '-1231234567456787' Inexact Rounded
-ddsub669 subtract 1.1           '1231234567456789' -> '-1231234567456787' Inexact Rounded
-
-
--- lots of leading zeros in intermediate result, and showing effects of
--- input rounding would have affected the following
-rounding: half_up
-ddsub670 subtract '1234567456789' '1234567456788.1' -> 0.9
-ddsub671 subtract '1234567456789' '1234567456788.9' -> 0.1
-ddsub672 subtract '1234567456789' '1234567456789.1' -> -0.1
-ddsub673 subtract '1234567456789' '1234567456789.5' -> -0.5
-ddsub674 subtract '1234567456789' '1234567456789.9' -> -0.9
-
-rounding: half_even
-ddsub680 subtract '1234567456789' '1234567456788.1' -> 0.9
-ddsub681 subtract '1234567456789' '1234567456788.9' -> 0.1
-ddsub682 subtract '1234567456789' '1234567456789.1' -> -0.1
-ddsub683 subtract '1234567456789' '1234567456789.5' -> -0.5
-ddsub684 subtract '1234567456789' '1234567456789.9' -> -0.9
-
-ddsub685 subtract '1234567456788' '1234567456787.1' -> 0.9
-ddsub686 subtract '1234567456788' '1234567456787.9' -> 0.1
-ddsub687 subtract '1234567456788' '1234567456788.1' -> -0.1
-ddsub688 subtract '1234567456788' '1234567456788.5' -> -0.5
-ddsub689 subtract '1234567456788' '1234567456788.9' -> -0.9
-
-rounding: down
-ddsub690 subtract '1234567456789' '1234567456788.1' -> 0.9
-ddsub691 subtract '1234567456789' '1234567456788.9' -> 0.1
-ddsub692 subtract '1234567456789' '1234567456789.1' -> -0.1
-ddsub693 subtract '1234567456789' '1234567456789.5' -> -0.5
-ddsub694 subtract '1234567456789' '1234567456789.9' -> -0.9
-
--- Specials
-ddsub780 subtract -Inf   Inf   -> -Infinity
-ddsub781 subtract -Inf   1000  -> -Infinity
-ddsub782 subtract -Inf   1     -> -Infinity
-ddsub783 subtract -Inf  -0     -> -Infinity
-ddsub784 subtract -Inf  -1     -> -Infinity
-ddsub785 subtract -Inf  -1000  -> -Infinity
-ddsub787 subtract -1000  Inf   -> -Infinity
-ddsub788 subtract -Inf   Inf   -> -Infinity
-ddsub789 subtract -1     Inf   -> -Infinity
-ddsub790 subtract  0     Inf   -> -Infinity
-ddsub791 subtract  1     Inf   -> -Infinity
-ddsub792 subtract  1000  Inf   -> -Infinity
-
-ddsub800 subtract  Inf   Inf   ->  NaN  Invalid_operation
-ddsub801 subtract  Inf   1000  ->  Infinity
-ddsub802 subtract  Inf   1     ->  Infinity
-ddsub803 subtract  Inf   0     ->  Infinity
-ddsub804 subtract  Inf  -0     ->  Infinity
-ddsub805 subtract  Inf  -1     ->  Infinity
-ddsub806 subtract  Inf  -1000  ->  Infinity
-ddsub807 subtract  Inf  -Inf   ->  Infinity
-ddsub808 subtract -1000 -Inf   ->  Infinity
-ddsub809 subtract -Inf  -Inf   ->  NaN  Invalid_operation
-ddsub810 subtract -1    -Inf   ->  Infinity
-ddsub811 subtract -0    -Inf   ->  Infinity
-ddsub812 subtract  0    -Inf   ->  Infinity
-ddsub813 subtract  1    -Inf   ->  Infinity
-ddsub814 subtract  1000 -Inf   ->  Infinity
-ddsub815 subtract  Inf  -Inf   ->  Infinity
-
-ddsub821 subtract  NaN   Inf   ->  NaN
-ddsub822 subtract -NaN   1000  -> -NaN
-ddsub823 subtract  NaN   1     ->  NaN
-ddsub824 subtract  NaN   0     ->  NaN
-ddsub825 subtract  NaN  -0     ->  NaN
-ddsub826 subtract  NaN  -1     ->  NaN
-ddsub827 subtract  NaN  -1000  ->  NaN
-ddsub828 subtract  NaN  -Inf   ->  NaN
-ddsub829 subtract -NaN   NaN   -> -NaN
-ddsub830 subtract -Inf   NaN   ->  NaN
-ddsub831 subtract -1000  NaN   ->  NaN
-ddsub832 subtract -1     NaN   ->  NaN
-ddsub833 subtract -0     NaN   ->  NaN
-ddsub834 subtract  0     NaN   ->  NaN
-ddsub835 subtract  1     NaN   ->  NaN
-ddsub836 subtract  1000 -NaN   -> -NaN
-ddsub837 subtract  Inf   NaN   ->  NaN
-
-ddsub841 subtract  sNaN  Inf   ->  NaN  Invalid_operation
-ddsub842 subtract -sNaN  1000  -> -NaN  Invalid_operation
-ddsub843 subtract  sNaN  1     ->  NaN  Invalid_operation
-ddsub844 subtract  sNaN  0     ->  NaN  Invalid_operation
-ddsub845 subtract  sNaN -0     ->  NaN  Invalid_operation
-ddsub846 subtract  sNaN -1     ->  NaN  Invalid_operation
-ddsub847 subtract  sNaN -1000  ->  NaN  Invalid_operation
-ddsub848 subtract  sNaN  NaN   ->  NaN  Invalid_operation
-ddsub849 subtract  sNaN sNaN   ->  NaN  Invalid_operation
-ddsub850 subtract  NaN  sNaN   ->  NaN  Invalid_operation
-ddsub851 subtract -Inf -sNaN   -> -NaN  Invalid_operation
-ddsub852 subtract -1000 sNaN   ->  NaN  Invalid_operation
-ddsub853 subtract -1    sNaN   ->  NaN  Invalid_operation
-ddsub854 subtract -0    sNaN   ->  NaN  Invalid_operation
-ddsub855 subtract  0    sNaN   ->  NaN  Invalid_operation
-ddsub856 subtract  1    sNaN   ->  NaN  Invalid_operation
-ddsub857 subtract  1000 sNaN   ->  NaN  Invalid_operation
-ddsub858 subtract  Inf  sNaN   ->  NaN  Invalid_operation
-ddsub859 subtract  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddsub861 subtract  NaN01   -Inf     ->  NaN1
-ddsub862 subtract -NaN02   -1000    -> -NaN2
-ddsub863 subtract  NaN03    1000    ->  NaN3
-ddsub864 subtract  NaN04    Inf     ->  NaN4
-ddsub865 subtract  NaN05    NaN61   ->  NaN5
-ddsub866 subtract -Inf     -NaN71   -> -NaN71
-ddsub867 subtract -1000     NaN81   ->  NaN81
-ddsub868 subtract  1000     NaN91   ->  NaN91
-ddsub869 subtract  Inf      NaN101  ->  NaN101
-ddsub871 subtract  sNaN011  -Inf    ->  NaN11  Invalid_operation
-ddsub872 subtract  sNaN012  -1000   ->  NaN12  Invalid_operation
-ddsub873 subtract -sNaN013   1000   -> -NaN13  Invalid_operation
-ddsub874 subtract  sNaN014   NaN171 ->  NaN14  Invalid_operation
-ddsub875 subtract  sNaN015  sNaN181 ->  NaN15  Invalid_operation
-ddsub876 subtract  NaN016   sNaN191 ->  NaN191 Invalid_operation
-ddsub877 subtract -Inf      sNaN201 ->  NaN201 Invalid_operation
-ddsub878 subtract -1000     sNaN211 ->  NaN211 Invalid_operation
-ddsub879 subtract  1000    -sNaN221 -> -NaN221 Invalid_operation
-ddsub880 subtract  Inf      sNaN231 ->  NaN231 Invalid_operation
-ddsub881 subtract  NaN025   sNaN241 ->  NaN241 Invalid_operation
-
--- edge case spills
-ddsub901 subtract  2.E-3  1.002  -> -1.000
-ddsub902 subtract  2.0E-3  1.002  -> -1.0000
-ddsub903 subtract  2.00E-3  1.0020  -> -1.00000
-ddsub904 subtract  2.000E-3  1.00200  -> -1.000000
-ddsub905 subtract  2.0000E-3  1.002000  -> -1.0000000
-ddsub906 subtract  2.00000E-3  1.0020000  -> -1.00000000
-ddsub907 subtract  2.000000E-3  1.00200000  -> -1.000000000
-ddsub908 subtract  2.0000000E-3  1.002000000  -> -1.0000000000
-
--- subnormals and overflows covered under Add
-
--- Null tests
-ddsub9990 subtract 10  # -> NaN Invalid_operation
-ddsub9991 subtract  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddToIntegral.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddToIntegral.decTest
deleted file mode 100644
index 900bd4a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddToIntegral.decTest
+++ /dev/null
@@ -1,257 +0,0 @@
-------------------------------------------------------------------------
--- ddToIntegral.decTest -- round Double to integral value             --
--- Copyright (c) IBM Corporation, 2001, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This set of tests tests the extended specification 'round-to-integral
--- value-exact' operations (from IEEE 854, later modified in 754r).
--- All non-zero results are defined as being those from either copy or
--- quantize, so those are assumed to have been tested extensively
--- elsewhere; the tests here are for integrity, rounding mode, etc.
--- Also, it is assumed the test harness will use these tests for both
--- ToIntegralExact (which does set Inexact) and the fixed-name
--- functions (which do not set Inexact).
-
--- Note that decNumber implements an earlier definition of toIntegral
--- which never sets Inexact; the decTest operator for that is called
--- 'tointegral' instead of 'tointegralx'.
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
-ddintx001 tointegralx      0     ->  0
-ddintx002 tointegralx      0.0   ->  0
-ddintx003 tointegralx      0.1   ->  0  Inexact Rounded
-ddintx004 tointegralx      0.2   ->  0  Inexact Rounded
-ddintx005 tointegralx      0.3   ->  0  Inexact Rounded
-ddintx006 tointegralx      0.4   ->  0  Inexact Rounded
-ddintx007 tointegralx      0.5   ->  0  Inexact Rounded
-ddintx008 tointegralx      0.6   ->  1  Inexact Rounded
-ddintx009 tointegralx      0.7   ->  1  Inexact Rounded
-ddintx010 tointegralx      0.8   ->  1  Inexact Rounded
-ddintx011 tointegralx      0.9   ->  1  Inexact Rounded
-ddintx012 tointegralx      1     ->  1
-ddintx013 tointegralx      1.0   ->  1  Rounded
-ddintx014 tointegralx      1.1   ->  1  Inexact Rounded
-ddintx015 tointegralx      1.2   ->  1  Inexact Rounded
-ddintx016 tointegralx      1.3   ->  1  Inexact Rounded
-ddintx017 tointegralx      1.4   ->  1  Inexact Rounded
-ddintx018 tointegralx      1.5   ->  2  Inexact Rounded
-ddintx019 tointegralx      1.6   ->  2  Inexact Rounded
-ddintx020 tointegralx      1.7   ->  2  Inexact Rounded
-ddintx021 tointegralx      1.8   ->  2  Inexact Rounded
-ddintx022 tointegralx      1.9   ->  2  Inexact Rounded
--- negatives
-ddintx031 tointegralx     -0     -> -0
-ddintx032 tointegralx     -0.0   -> -0
-ddintx033 tointegralx     -0.1   -> -0  Inexact Rounded
-ddintx034 tointegralx     -0.2   -> -0  Inexact Rounded
-ddintx035 tointegralx     -0.3   -> -0  Inexact Rounded
-ddintx036 tointegralx     -0.4   -> -0  Inexact Rounded
-ddintx037 tointegralx     -0.5   -> -0  Inexact Rounded
-ddintx038 tointegralx     -0.6   -> -1  Inexact Rounded
-ddintx039 tointegralx     -0.7   -> -1  Inexact Rounded
-ddintx040 tointegralx     -0.8   -> -1  Inexact Rounded
-ddintx041 tointegralx     -0.9   -> -1  Inexact Rounded
-ddintx042 tointegralx     -1     -> -1
-ddintx043 tointegralx     -1.0   -> -1  Rounded
-ddintx044 tointegralx     -1.1   -> -1  Inexact Rounded
-ddintx045 tointegralx     -1.2   -> -1  Inexact Rounded
-ddintx046 tointegralx     -1.3   -> -1  Inexact Rounded
-ddintx047 tointegralx     -1.4   -> -1  Inexact Rounded
-ddintx048 tointegralx     -1.5   -> -2  Inexact Rounded
-ddintx049 tointegralx     -1.6   -> -2  Inexact Rounded
-ddintx050 tointegralx     -1.7   -> -2  Inexact Rounded
-ddintx051 tointegralx     -1.8   -> -2  Inexact Rounded
-ddintx052 tointegralx     -1.9   -> -2  Inexact Rounded
--- next two would be NaN using quantize(x, 0)
-ddintx053 tointegralx    10E+60  -> 1.0E+61
-ddintx054 tointegralx   -10E+60  -> -1.0E+61
-
--- numbers around precision
-ddintx060 tointegralx '56267E-17'   -> '0'      Inexact Rounded
-ddintx061 tointegralx '56267E-5'    -> '1'      Inexact Rounded
-ddintx062 tointegralx '56267E-2'    -> '563'    Inexact Rounded
-ddintx063 tointegralx '56267E-1'    -> '5627'   Inexact Rounded
-ddintx065 tointegralx '56267E-0'    -> '56267'
-ddintx066 tointegralx '56267E+0'    -> '56267'
-ddintx067 tointegralx '56267E+1'    -> '5.6267E+5'
-ddintx068 tointegralx '56267E+9'    -> '5.6267E+13'
-ddintx069 tointegralx '56267E+10'   -> '5.6267E+14'
-ddintx070 tointegralx '56267E+11'   -> '5.6267E+15'
-ddintx071 tointegralx '56267E+12'   -> '5.6267E+16'
-ddintx072 tointegralx '56267E+13'   -> '5.6267E+17'
-ddintx073 tointegralx '1.23E+96'    -> '1.23E+96'
-ddintx074 tointegralx '1.23E+384'   -> #47fd300000000000  Clamped
-
-ddintx080 tointegralx '-56267E-10'  -> '-0'      Inexact Rounded
-ddintx081 tointegralx '-56267E-5'   -> '-1'      Inexact Rounded
-ddintx082 tointegralx '-56267E-2'   -> '-563'    Inexact Rounded
-ddintx083 tointegralx '-56267E-1'   -> '-5627'   Inexact Rounded
-ddintx085 tointegralx '-56267E-0'   -> '-56267'
-ddintx086 tointegralx '-56267E+0'   -> '-56267'
-ddintx087 tointegralx '-56267E+1'   -> '-5.6267E+5'
-ddintx088 tointegralx '-56267E+9'   -> '-5.6267E+13'
-ddintx089 tointegralx '-56267E+10'  -> '-5.6267E+14'
-ddintx090 tointegralx '-56267E+11'  -> '-5.6267E+15'
-ddintx091 tointegralx '-56267E+12'  -> '-5.6267E+16'
-ddintx092 tointegralx '-56267E+13'  -> '-5.6267E+17'
-ddintx093 tointegralx '-1.23E+96'   -> '-1.23E+96'
-ddintx094 tointegralx '-1.23E+384'  -> #c7fd300000000000  Clamped
-
--- subnormal inputs
-ddintx100 tointegralx        1E-299 -> 0  Inexact Rounded
-ddintx101 tointegralx      0.1E-299 -> 0  Inexact Rounded
-ddintx102 tointegralx     0.01E-299 -> 0  Inexact Rounded
-ddintx103 tointegralx        0E-299 -> 0
-
--- specials and zeros
-ddintx120 tointegralx 'Inf'       ->  Infinity
-ddintx121 tointegralx '-Inf'      -> -Infinity
-ddintx122 tointegralx   NaN       ->  NaN
-ddintx123 tointegralx  sNaN       ->  NaN  Invalid_operation
-ddintx124 tointegralx     0       ->  0
-ddintx125 tointegralx    -0       -> -0
-ddintx126 tointegralx     0.000   ->  0
-ddintx127 tointegralx     0.00    ->  0
-ddintx128 tointegralx     0.0     ->  0
-ddintx129 tointegralx     0       ->  0
-ddintx130 tointegralx     0E-3    ->  0
-ddintx131 tointegralx     0E-2    ->  0
-ddintx132 tointegralx     0E-1    ->  0
-ddintx133 tointegralx     0E-0    ->  0
-ddintx134 tointegralx     0E+1    ->  0E+1
-ddintx135 tointegralx     0E+2    ->  0E+2
-ddintx136 tointegralx     0E+3    ->  0E+3
-ddintx137 tointegralx     0E+4    ->  0E+4
-ddintx138 tointegralx     0E+5    ->  0E+5
-ddintx139 tointegralx    -0.000   -> -0
-ddintx140 tointegralx    -0.00    -> -0
-ddintx141 tointegralx    -0.0     -> -0
-ddintx142 tointegralx    -0       -> -0
-ddintx143 tointegralx    -0E-3    -> -0
-ddintx144 tointegralx    -0E-2    -> -0
-ddintx145 tointegralx    -0E-1    -> -0
-ddintx146 tointegralx    -0E-0    -> -0
-ddintx147 tointegralx    -0E+1    -> -0E+1
-ddintx148 tointegralx    -0E+2    -> -0E+2
-ddintx149 tointegralx    -0E+3    -> -0E+3
-ddintx150 tointegralx    -0E+4    -> -0E+4
-ddintx151 tointegralx    -0E+5    -> -0E+5
--- propagating NaNs
-ddintx152 tointegralx   NaN808    ->  NaN808
-ddintx153 tointegralx  sNaN080    ->  NaN80  Invalid_operation
-ddintx154 tointegralx  -NaN808    -> -NaN808
-ddintx155 tointegralx -sNaN080    -> -NaN80  Invalid_operation
-ddintx156 tointegralx  -NaN       -> -NaN
-ddintx157 tointegralx -sNaN       -> -NaN    Invalid_operation
-
--- examples
-rounding:    half_up
-ddintx200 tointegralx     2.1    -> 2            Inexact Rounded
-ddintx201 tointegralx   100      -> 100
-ddintx202 tointegralx   100.0    -> 100          Rounded
-ddintx203 tointegralx   101.5    -> 102          Inexact Rounded
-ddintx204 tointegralx  -101.5    -> -102         Inexact Rounded
-ddintx205 tointegralx   10E+5    -> 1.0E+6
-ddintx206 tointegralx  7.89E+77  -> 7.89E+77
-ddintx207 tointegralx   -Inf     -> -Infinity
-
-
--- all rounding modes
-rounding:    half_even
-ddintx210 tointegralx     55.5   ->  56  Inexact Rounded
-ddintx211 tointegralx     56.5   ->  56  Inexact Rounded
-ddintx212 tointegralx     57.5   ->  58  Inexact Rounded
-ddintx213 tointegralx    -55.5   -> -56  Inexact Rounded
-ddintx214 tointegralx    -56.5   -> -56  Inexact Rounded
-ddintx215 tointegralx    -57.5   -> -58  Inexact Rounded
-
-rounding:    half_up
-
-ddintx220 tointegralx     55.5   ->  56  Inexact Rounded
-ddintx221 tointegralx     56.5   ->  57  Inexact Rounded
-ddintx222 tointegralx     57.5   ->  58  Inexact Rounded
-ddintx223 tointegralx    -55.5   -> -56  Inexact Rounded
-ddintx224 tointegralx    -56.5   -> -57  Inexact Rounded
-ddintx225 tointegralx    -57.5   -> -58  Inexact Rounded
-
-rounding:    half_down
-
-ddintx230 tointegralx     55.5   ->  55  Inexact Rounded
-ddintx231 tointegralx     56.5   ->  56  Inexact Rounded
-ddintx232 tointegralx     57.5   ->  57  Inexact Rounded
-ddintx233 tointegralx    -55.5   -> -55  Inexact Rounded
-ddintx234 tointegralx    -56.5   -> -56  Inexact Rounded
-ddintx235 tointegralx    -57.5   -> -57  Inexact Rounded
-
-rounding:    up
-
-ddintx240 tointegralx     55.3   ->  56  Inexact Rounded
-ddintx241 tointegralx     56.3   ->  57  Inexact Rounded
-ddintx242 tointegralx     57.3   ->  58  Inexact Rounded
-ddintx243 tointegralx    -55.3   -> -56  Inexact Rounded
-ddintx244 tointegralx    -56.3   -> -57  Inexact Rounded
-ddintx245 tointegralx    -57.3   -> -58  Inexact Rounded
-
-rounding:    down
-
-ddintx250 tointegralx     55.7   ->  55  Inexact Rounded
-ddintx251 tointegralx     56.7   ->  56  Inexact Rounded
-ddintx252 tointegralx     57.7   ->  57  Inexact Rounded
-ddintx253 tointegralx    -55.7   -> -55  Inexact Rounded
-ddintx254 tointegralx    -56.7   -> -56  Inexact Rounded
-ddintx255 tointegralx    -57.7   -> -57  Inexact Rounded
-
-rounding:    ceiling
-
-ddintx260 tointegralx     55.3   ->  56  Inexact Rounded
-ddintx261 tointegralx     56.3   ->  57  Inexact Rounded
-ddintx262 tointegralx     57.3   ->  58  Inexact Rounded
-ddintx263 tointegralx    -55.3   -> -55  Inexact Rounded
-ddintx264 tointegralx    -56.3   -> -56  Inexact Rounded
-ddintx265 tointegralx    -57.3   -> -57  Inexact Rounded
-
-rounding:    floor
-
-ddintx270 tointegralx     55.7   ->  55  Inexact Rounded
-ddintx271 tointegralx     56.7   ->  56  Inexact Rounded
-ddintx272 tointegralx     57.7   ->  57  Inexact Rounded
-ddintx273 tointegralx    -55.7   -> -56  Inexact Rounded
-ddintx274 tointegralx    -56.7   -> -57  Inexact Rounded
-ddintx275 tointegralx    -57.7   -> -58  Inexact Rounded
-
--- Int and uInt32 edge values for testing conversions
-ddintx300 tointegralx -2147483646  -> -2147483646
-ddintx301 tointegralx -2147483647  -> -2147483647
-ddintx302 tointegralx -2147483648  -> -2147483648
-ddintx303 tointegralx -2147483649  -> -2147483649
-ddintx304 tointegralx  2147483646  ->  2147483646
-ddintx305 tointegralx  2147483647  ->  2147483647
-ddintx306 tointegralx  2147483648  ->  2147483648
-ddintx307 tointegralx  2147483649  ->  2147483649
-ddintx308 tointegralx  4294967294  ->  4294967294
-ddintx309 tointegralx  4294967295  ->  4294967295
-ddintx310 tointegralx  4294967296  ->  4294967296
-ddintx311 tointegralx  4294967297  ->  4294967297
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddXor.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddXor.decTest
deleted file mode 100644
index 3c55548..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ddXor.decTest
+++ /dev/null
@@ -1,337 +0,0 @@
-------------------------------------------------------------------------
--- ddXor.decTest -- digitwise logical XOR for decDoubles              --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-precision:   16
-maxExponent: 384
-minExponent: -383
-extended:    1
-clamp:       1
-rounding:    half_even
-
--- Sanity check (truth table)
-ddxor001 xor             0    0 ->    0
-ddxor002 xor             0    1 ->    1
-ddxor003 xor             1    0 ->    1
-ddxor004 xor             1    1 ->    0
-ddxor005 xor          1100 1010 ->  110
--- and at msd and msd-1
-ddxor006 xor 0000000000000000 0000000000000000 ->           0
-ddxor007 xor 0000000000000000 1000000000000000 ->   1000000000000000
-ddxor008 xor 1000000000000000 0000000000000000 ->   1000000000000000
-ddxor009 xor 1000000000000000 1000000000000000 ->           0
-ddxor010 xor 0000000000000000 0000000000000000 ->           0
-ddxor011 xor 0000000000000000 0100000000000000 ->    100000000000000
-ddxor012 xor 0100000000000000 0000000000000000 ->    100000000000000
-ddxor013 xor 0100000000000000 0100000000000000 ->           0
-
--- Various lengths
---          1234567890123456     1234567890123456 1234567890123456
-ddxor021 xor 1111111110000000     1111111110000000  ->  0
-ddxor022 xor  111111110000000      111111110000000  ->  0
-ddxor023 xor   11111110000000       11111110000000  ->  0
-ddxor024 xor    1111110000000        1111110000000  ->  0
-ddxor025 xor     111110000000         111110000000  ->  0
-ddxor026 xor      11110000000          11110000000  ->  0
-ddxor027 xor       1110000000           1110000000  ->  0
-ddxor028 xor        110000000            110000000  ->  0
-ddxor029 xor         10000000             10000000  ->  0
-ddxor030 xor          1000000              1000000  ->  0
-ddxor031 xor           100000               100000  ->  0
-ddxor032 xor            10000                10000  ->  0
-ddxor033 xor             1000                 1000  ->  0
-ddxor034 xor              100                  100  ->  0
-ddxor035 xor               10                   10  ->  0
-ddxor036 xor                1                    1  ->  0
-
-ddxor040 xor 111111111  111111111111  ->  111000000000
-ddxor041 xor  11111111  111111111111  ->  111100000000
-ddxor042 xor  11111111     111111111  ->  100000000
-ddxor043 xor   1111111     100000010  ->  101111101
-ddxor044 xor    111111     100000100  ->  100111011
-ddxor045 xor     11111     100001000  ->  100010111
-ddxor046 xor      1111     100010000  ->  100011111
-ddxor047 xor       111     100100000  ->  100100111
-ddxor048 xor        11     101000000  ->  101000011
-ddxor049 xor         1     110000000  ->  110000001
-
-ddxor050 xor 1111111111  1  ->  1111111110
-ddxor051 xor  111111111  1  ->  111111110
-ddxor052 xor   11111111  1  ->  11111110
-ddxor053 xor    1111111  1  ->  1111110
-ddxor054 xor     111111  1  ->  111110
-ddxor055 xor      11111  1  ->  11110
-ddxor056 xor       1111  1  ->  1110
-ddxor057 xor        111  1  ->  110
-ddxor058 xor         11  1  ->  10
-ddxor059 xor          1  1  ->  0
-
-ddxor060 xor 1111111111  0  ->  1111111111
-ddxor061 xor  111111111  0  ->  111111111
-ddxor062 xor   11111111  0  ->  11111111
-ddxor063 xor    1111111  0  ->  1111111
-ddxor064 xor     111111  0  ->  111111
-ddxor065 xor      11111  0  ->  11111
-ddxor066 xor       1111  0  ->  1111
-ddxor067 xor        111  0  ->  111
-ddxor068 xor         11  0  ->  11
-ddxor069 xor          1  0  ->  1
-
-ddxor070 xor 1  1111111111  ->  1111111110
-ddxor071 xor 1   111111111  ->  111111110
-ddxor072 xor 1    11111111  ->  11111110
-ddxor073 xor 1     1111111  ->  1111110
-ddxor074 xor 1      111111  ->  111110
-ddxor075 xor 1       11111  ->  11110
-ddxor076 xor 1        1111  ->  1110
-ddxor077 xor 1         111  ->  110
-ddxor078 xor 1          11  ->  10
-ddxor079 xor 1           1  ->  0
-
-ddxor080 xor 0  1111111111  ->  1111111111
-ddxor081 xor 0   111111111  ->  111111111
-ddxor082 xor 0    11111111  ->  11111111
-ddxor083 xor 0     1111111  ->  1111111
-ddxor084 xor 0      111111  ->  111111
-ddxor085 xor 0       11111  ->  11111
-ddxor086 xor 0        1111  ->  1111
-ddxor087 xor 0         111  ->  111
-ddxor088 xor 0          11  ->  11
-ddxor089 xor 0           1  ->  1
-
-ddxor090 xor 011111111  111101111  ->  100010000
-ddxor091 xor 101111111  111101111  ->   10010000
-ddxor092 xor 110111111  111101111  ->    1010000
-ddxor093 xor 111011111  111101111  ->     110000
-ddxor094 xor 111101111  111101111  ->          0
-ddxor095 xor 111110111  111101111  ->      11000
-ddxor096 xor 111111011  111101111  ->      10100
-ddxor097 xor 111111101  111101111  ->      10010
-ddxor098 xor 111111110  111101111  ->      10001
-
-ddxor100 xor 111101111  011111111  ->  100010000
-ddxor101 xor 111101111  101111111  ->   10010000
-ddxor102 xor 111101111  110111111  ->    1010000
-ddxor103 xor 111101111  111011111  ->     110000
-ddxor104 xor 111101111  111101111  ->          0
-ddxor105 xor 111101111  111110111  ->      11000
-ddxor106 xor 111101111  111111011  ->      10100
-ddxor107 xor 111101111  111111101  ->      10010
-ddxor108 xor 111101111  111111110  ->      10001
-
--- non-0/1 should not be accepted, nor should signs
-ddxor220 xor 111111112  111111111  ->  NaN Invalid_operation
-ddxor221 xor 333333333  333333333  ->  NaN Invalid_operation
-ddxor222 xor 555555555  555555555  ->  NaN Invalid_operation
-ddxor223 xor 777777777  777777777  ->  NaN Invalid_operation
-ddxor224 xor 999999999  999999999  ->  NaN Invalid_operation
-ddxor225 xor 222222222  999999999  ->  NaN Invalid_operation
-ddxor226 xor 444444444  999999999  ->  NaN Invalid_operation
-ddxor227 xor 666666666  999999999  ->  NaN Invalid_operation
-ddxor228 xor 888888888  999999999  ->  NaN Invalid_operation
-ddxor229 xor 999999999  222222222  ->  NaN Invalid_operation
-ddxor230 xor 999999999  444444444  ->  NaN Invalid_operation
-ddxor231 xor 999999999  666666666  ->  NaN Invalid_operation
-ddxor232 xor 999999999  888888888  ->  NaN Invalid_operation
--- a few randoms
-ddxor240 xor  567468689 -934981942 ->  NaN Invalid_operation
-ddxor241 xor  567367689  934981942 ->  NaN Invalid_operation
-ddxor242 xor -631917772 -706014634 ->  NaN Invalid_operation
-ddxor243 xor -756253257  138579234 ->  NaN Invalid_operation
-ddxor244 xor  835590149  567435400 ->  NaN Invalid_operation
--- test MSD
-ddxor250 xor  2000000000000000 1000000000000000 ->  NaN Invalid_operation
-ddxor251 xor  7000000000000000 1000000000000000 ->  NaN Invalid_operation
-ddxor252 xor  8000000000000000 1000000000000000 ->  NaN Invalid_operation
-ddxor253 xor  9000000000000000 1000000000000000 ->  NaN Invalid_operation
-ddxor254 xor  2000000000000000 0000000000000000 ->  NaN Invalid_operation
-ddxor255 xor  7000000000000000 0000000000000000 ->  NaN Invalid_operation
-ddxor256 xor  8000000000000000 0000000000000000 ->  NaN Invalid_operation
-ddxor257 xor  9000000000000000 0000000000000000 ->  NaN Invalid_operation
-ddxor258 xor  1000000000000000 2000000000000000 ->  NaN Invalid_operation
-ddxor259 xor  1000000000000000 7000000000000000 ->  NaN Invalid_operation
-ddxor260 xor  1000000000000000 8000000000000000 ->  NaN Invalid_operation
-ddxor261 xor  1000000000000000 9000000000000000 ->  NaN Invalid_operation
-ddxor262 xor  0000000000000000 2000000000000000 ->  NaN Invalid_operation
-ddxor263 xor  0000000000000000 7000000000000000 ->  NaN Invalid_operation
-ddxor264 xor  0000000000000000 8000000000000000 ->  NaN Invalid_operation
-ddxor265 xor  0000000000000000 9000000000000000 ->  NaN Invalid_operation
--- test MSD-1
-ddxor270 xor  0200001000000000 1000100000000010 ->  NaN Invalid_operation
-ddxor271 xor  0700000100000000 1000010000000100 ->  NaN Invalid_operation
-ddxor272 xor  0800000010000000 1000001000001000 ->  NaN Invalid_operation
-ddxor273 xor  0900000001000000 1000000100010000 ->  NaN Invalid_operation
-ddxor274 xor  1000000000100000 0200000010100000 ->  NaN Invalid_operation
-ddxor275 xor  1000000000010000 0700000001000000 ->  NaN Invalid_operation
-ddxor276 xor  1000000000001000 0800000010100000 ->  NaN Invalid_operation
-ddxor277 xor  1000000000000100 0900000000010000 ->  NaN Invalid_operation
--- test LSD
-ddxor280 xor  0010000000000002 1000000100000001 ->  NaN Invalid_operation
-ddxor281 xor  0001000000000007 1000001000000011 ->  NaN Invalid_operation
-ddxor282 xor  0000100000000008 1000010000000001 ->  NaN Invalid_operation
-ddxor283 xor  0000010000000009 1000100000000001 ->  NaN Invalid_operation
-ddxor284 xor  1000001000000000 0001000000000002 ->  NaN Invalid_operation
-ddxor285 xor  1000000100000000 0010000000000007 ->  NaN Invalid_operation
-ddxor286 xor  1000000010000000 0100000000000008 ->  NaN Invalid_operation
-ddxor287 xor  1000000001000000 1000000000000009 ->  NaN Invalid_operation
--- test Middie
-ddxor288 xor  0010000020000000 1000001000000000 ->  NaN Invalid_operation
-ddxor289 xor  0001000070000001 1000000100000000 ->  NaN Invalid_operation
-ddxor290 xor  0000100080000010 1000000010000000 ->  NaN Invalid_operation
-ddxor291 xor  0000010090000100 1000000001000000 ->  NaN Invalid_operation
-ddxor292 xor  1000001000001000 0000000020100000 ->  NaN Invalid_operation
-ddxor293 xor  1000000100010000 0000000070010000 ->  NaN Invalid_operation
-ddxor294 xor  1000000010100000 0000000080001000 ->  NaN Invalid_operation
-ddxor295 xor  1000000001000000 0000000090000100 ->  NaN Invalid_operation
--- signs
-ddxor296 xor -1000000001000000 -0000010000000100 ->  NaN Invalid_operation
-ddxor297 xor -1000000001000000  0000000010000100 ->  NaN Invalid_operation
-ddxor298 xor  1000000001000000 -0000001000000100 ->  NaN Invalid_operation
-ddxor299 xor  1000000001000000  0000000011000100 ->  1000000010000100
-
--- Nmax, Nmin, Ntiny-like
-ddxor331 xor  2   9.99999999E+299     -> NaN Invalid_operation
-ddxor332 xor  3   1E-299              -> NaN Invalid_operation
-ddxor333 xor  4   1.00000000E-299     -> NaN Invalid_operation
-ddxor334 xor  5   1E-200              -> NaN Invalid_operation
-ddxor335 xor  6   -1E-200             -> NaN Invalid_operation
-ddxor336 xor  7   -1.00000000E-299    -> NaN Invalid_operation
-ddxor337 xor  8   -1E-299             -> NaN Invalid_operation
-ddxor338 xor  9   -9.99999999E+299    -> NaN Invalid_operation
-ddxor341 xor  9.99999999E+299     -18 -> NaN Invalid_operation
-ddxor342 xor  1E-299               01 -> NaN Invalid_operation
-ddxor343 xor  1.00000000E-299     -18 -> NaN Invalid_operation
-ddxor344 xor  1E-208               18 -> NaN Invalid_operation
-ddxor345 xor  -1E-207             -10 -> NaN Invalid_operation
-ddxor346 xor  -1.00000000E-299     18 -> NaN Invalid_operation
-ddxor347 xor  -1E-299              10 -> NaN Invalid_operation
-ddxor348 xor  -9.99999999E+299    -18 -> NaN Invalid_operation
-
--- A few other non-integers
-ddxor361 xor  1.0                  1  -> NaN Invalid_operation
-ddxor362 xor  1E+1                 1  -> NaN Invalid_operation
-ddxor363 xor  0.0                  1  -> NaN Invalid_operation
-ddxor364 xor  0E+1                 1  -> NaN Invalid_operation
-ddxor365 xor  9.9                  1  -> NaN Invalid_operation
-ddxor366 xor  9E+1                 1  -> NaN Invalid_operation
-ddxor371 xor  0 1.0                   -> NaN Invalid_operation
-ddxor372 xor  0 1E+1                  -> NaN Invalid_operation
-ddxor373 xor  0 0.0                   -> NaN Invalid_operation
-ddxor374 xor  0 0E+1                  -> NaN Invalid_operation
-ddxor375 xor  0 9.9                   -> NaN Invalid_operation
-ddxor376 xor  0 9E+1                  -> NaN Invalid_operation
-
--- All Specials are in error
-ddxor780 xor -Inf  -Inf   -> NaN Invalid_operation
-ddxor781 xor -Inf  -1000  -> NaN Invalid_operation
-ddxor782 xor -Inf  -1     -> NaN Invalid_operation
-ddxor783 xor -Inf  -0     -> NaN Invalid_operation
-ddxor784 xor -Inf   0     -> NaN Invalid_operation
-ddxor785 xor -Inf   1     -> NaN Invalid_operation
-ddxor786 xor -Inf   1000  -> NaN Invalid_operation
-ddxor787 xor -1000 -Inf   -> NaN Invalid_operation
-ddxor788 xor -Inf  -Inf   -> NaN Invalid_operation
-ddxor789 xor -1    -Inf   -> NaN Invalid_operation
-ddxor790 xor -0    -Inf   -> NaN Invalid_operation
-ddxor791 xor  0    -Inf   -> NaN Invalid_operation
-ddxor792 xor  1    -Inf   -> NaN Invalid_operation
-ddxor793 xor  1000 -Inf   -> NaN Invalid_operation
-ddxor794 xor  Inf  -Inf   -> NaN Invalid_operation
-
-ddxor800 xor  Inf  -Inf   -> NaN Invalid_operation
-ddxor801 xor  Inf  -1000  -> NaN Invalid_operation
-ddxor802 xor  Inf  -1     -> NaN Invalid_operation
-ddxor803 xor  Inf  -0     -> NaN Invalid_operation
-ddxor804 xor  Inf   0     -> NaN Invalid_operation
-ddxor805 xor  Inf   1     -> NaN Invalid_operation
-ddxor806 xor  Inf   1000  -> NaN Invalid_operation
-ddxor807 xor  Inf   Inf   -> NaN Invalid_operation
-ddxor808 xor -1000  Inf   -> NaN Invalid_operation
-ddxor809 xor -Inf   Inf   -> NaN Invalid_operation
-ddxor810 xor -1     Inf   -> NaN Invalid_operation
-ddxor811 xor -0     Inf   -> NaN Invalid_operation
-ddxor812 xor  0     Inf   -> NaN Invalid_operation
-ddxor813 xor  1     Inf   -> NaN Invalid_operation
-ddxor814 xor  1000  Inf   -> NaN Invalid_operation
-ddxor815 xor  Inf   Inf   -> NaN Invalid_operation
-
-ddxor821 xor  NaN -Inf    -> NaN Invalid_operation
-ddxor822 xor  NaN -1000   -> NaN Invalid_operation
-ddxor823 xor  NaN -1      -> NaN Invalid_operation
-ddxor824 xor  NaN -0      -> NaN Invalid_operation
-ddxor825 xor  NaN  0      -> NaN Invalid_operation
-ddxor826 xor  NaN  1      -> NaN Invalid_operation
-ddxor827 xor  NaN  1000   -> NaN Invalid_operation
-ddxor828 xor  NaN  Inf    -> NaN Invalid_operation
-ddxor829 xor  NaN  NaN    -> NaN Invalid_operation
-ddxor830 xor -Inf  NaN    -> NaN Invalid_operation
-ddxor831 xor -1000 NaN    -> NaN Invalid_operation
-ddxor832 xor -1    NaN    -> NaN Invalid_operation
-ddxor833 xor -0    NaN    -> NaN Invalid_operation
-ddxor834 xor  0    NaN    -> NaN Invalid_operation
-ddxor835 xor  1    NaN    -> NaN Invalid_operation
-ddxor836 xor  1000 NaN    -> NaN Invalid_operation
-ddxor837 xor  Inf  NaN    -> NaN Invalid_operation
-
-ddxor841 xor  sNaN -Inf   ->  NaN  Invalid_operation
-ddxor842 xor  sNaN -1000  ->  NaN  Invalid_operation
-ddxor843 xor  sNaN -1     ->  NaN  Invalid_operation
-ddxor844 xor  sNaN -0     ->  NaN  Invalid_operation
-ddxor845 xor  sNaN  0     ->  NaN  Invalid_operation
-ddxor846 xor  sNaN  1     ->  NaN  Invalid_operation
-ddxor847 xor  sNaN  1000  ->  NaN  Invalid_operation
-ddxor848 xor  sNaN  NaN   ->  NaN  Invalid_operation
-ddxor849 xor  sNaN sNaN   ->  NaN  Invalid_operation
-ddxor850 xor  NaN  sNaN   ->  NaN  Invalid_operation
-ddxor851 xor -Inf  sNaN   ->  NaN  Invalid_operation
-ddxor852 xor -1000 sNaN   ->  NaN  Invalid_operation
-ddxor853 xor -1    sNaN   ->  NaN  Invalid_operation
-ddxor854 xor -0    sNaN   ->  NaN  Invalid_operation
-ddxor855 xor  0    sNaN   ->  NaN  Invalid_operation
-ddxor856 xor  1    sNaN   ->  NaN  Invalid_operation
-ddxor857 xor  1000 sNaN   ->  NaN  Invalid_operation
-ddxor858 xor  Inf  sNaN   ->  NaN  Invalid_operation
-ddxor859 xor  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-ddxor861 xor  NaN1   -Inf    -> NaN Invalid_operation
-ddxor862 xor +NaN2   -1000   -> NaN Invalid_operation
-ddxor863 xor  NaN3    1000   -> NaN Invalid_operation
-ddxor864 xor  NaN4    Inf    -> NaN Invalid_operation
-ddxor865 xor  NaN5   +NaN6   -> NaN Invalid_operation
-ddxor866 xor -Inf     NaN7   -> NaN Invalid_operation
-ddxor867 xor -1000    NaN8   -> NaN Invalid_operation
-ddxor868 xor  1000    NaN9   -> NaN Invalid_operation
-ddxor869 xor  Inf    +NaN10  -> NaN Invalid_operation
-ddxor871 xor  sNaN11  -Inf   -> NaN Invalid_operation
-ddxor872 xor  sNaN12  -1000  -> NaN Invalid_operation
-ddxor873 xor  sNaN13   1000  -> NaN Invalid_operation
-ddxor874 xor  sNaN14   NaN17 -> NaN Invalid_operation
-ddxor875 xor  sNaN15  sNaN18 -> NaN Invalid_operation
-ddxor876 xor  NaN16   sNaN19 -> NaN Invalid_operation
-ddxor877 xor -Inf    +sNaN20 -> NaN Invalid_operation
-ddxor878 xor -1000    sNaN21 -> NaN Invalid_operation
-ddxor879 xor  1000    sNaN22 -> NaN Invalid_operation
-ddxor880 xor  Inf     sNaN23 -> NaN Invalid_operation
-ddxor881 xor +NaN25  +sNaN24 -> NaN Invalid_operation
-ddxor882 xor -NaN26    NaN28 -> NaN Invalid_operation
-ddxor883 xor -sNaN27  sNaN29 -> NaN Invalid_operation
-ddxor884 xor  1000    -NaN30 -> NaN Invalid_operation
-ddxor885 xor  1000   -sNaN31 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decDouble.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decDouble.decTest
deleted file mode 100644
index 2a47f24..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decDouble.decTest
+++ /dev/null
@@ -1,65 +0,0 @@
-------------------------------------------------------------------------
--- decDouble.decTest -- run all decDouble decimal arithmetic tests    --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- decDouble tests
-dectest: ddAbs
-dectest: ddAdd
-dectest: ddAnd
-dectest: ddBase
-dectest: ddCanonical
-dectest: ddClass
-dectest: ddCompare
-dectest: ddCompareSig
-dectest: ddCompareTotal
-dectest: ddCompareTotalMag
-dectest: ddCopy
-dectest: ddCopyAbs
-dectest: ddCopyNegate
-dectest: ddCopySign
-dectest: ddDivide
-dectest: ddDivideInt
-dectest: ddEncode
-dectest: ddFMA
-dectest: ddInvert
-dectest: ddLogB
-dectest: ddMax
-dectest: ddMaxMag
-dectest: ddMin
-dectest: ddMinMag
-dectest: ddMinus
-dectest: ddMultiply
-dectest: ddNextMinus
-dectest: ddNextPlus
-dectest: ddNextToward
-dectest: ddOr
-dectest: ddPlus
-dectest: ddQuantize
-dectest: ddReduce
-dectest: ddRemainder
-dectest: ddRemainderNear
-dectest: ddRotate
-dectest: ddSameQuantum
-dectest: ddScaleB
-dectest: ddShift
-dectest: ddSubtract
-dectest: ddToIntegral
-dectest: ddXor
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decQuad.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decQuad.decTest
deleted file mode 100644
index 648eb2c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decQuad.decTest
+++ /dev/null
@@ -1,65 +0,0 @@
-------------------------------------------------------------------------
--- decQuad.decTest -- run all decQuad decimal arithmetic tests        --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- decQuad tests
-dectest: dqAbs
-dectest: dqAdd
-dectest: dqAnd
-dectest: dqBase
-dectest: dqCanonical
-dectest: dqClass
-dectest: dqCompare
-dectest: dqCompareSig
-dectest: dqCompareTotal
-dectest: dqCompareTotalMag
-dectest: dqCopy
-dectest: dqCopyAbs
-dectest: dqCopyNegate
-dectest: dqCopySign
-dectest: dqDivide
-dectest: dqDivideInt
-dectest: dqEncode
-dectest: dqFMA
-dectest: dqInvert
-dectest: dqLogB
-dectest: dqMax
-dectest: dqMaxMag
-dectest: dqMin
-dectest: dqMinMag
-dectest: dqMinus
-dectest: dqMultiply
-dectest: dqNextMinus
-dectest: dqNextPlus
-dectest: dqNextToward
-dectest: dqOr
-dectest: dqPlus
-dectest: dqQuantize
-dectest: dqReduce
-dectest: dqRemainder
-dectest: dqRemainderNear
-dectest: dqRotate
-dectest: dqSameQuantum
-dectest: dqScaleB
-dectest: dqShift
-dectest: dqSubtract
-dectest: dqToIntegral
-dectest: dqXor
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decSingle.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decSingle.decTest
deleted file mode 100644
index 0da21f4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/decSingle.decTest
+++ /dev/null
@@ -1,25 +0,0 @@
-------------------------------------------------------------------------
--- decSingle.decTest -- run all decSingle decimal arithmetic tests    --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- decSingle tests
-dectest: dsBase
-dectest: dsEncode
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/divide.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/divide.decTest
deleted file mode 100644
index 41d2f58..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/divide.decTest
+++ /dev/null
@@ -1,854 +0,0 @@
-------------------------------------------------------------------------
--- divide.decTest -- decimal division                                 --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
--- sanity checks
-divx001 divide  1     1    ->  1
-divx002 divide  2     1    ->  2
-divx003 divide  1     2    ->  0.5
-divx004 divide  2     2    ->  1
-divx005 divide  0     1    ->  0
-divx006 divide  0     2    ->  0
-divx007 divide  1     3    ->  0.333333333 Inexact Rounded
-divx008 divide  2     3    ->  0.666666667 Inexact Rounded
-divx009 divide  3     3    ->  1
-
-divx010 divide  2.4   1    ->  2.4
-divx011 divide  2.4   -1   ->  -2.4
-divx012 divide  -2.4  1    ->  -2.4
-divx013 divide  -2.4  -1   ->  2.4
-divx014 divide  2.40  1    ->  2.40
-divx015 divide  2.400 1    ->  2.400
-divx016 divide  2.4   2    ->  1.2
-divx017 divide  2.400 2    ->  1.200
-divx018 divide  2.    2    ->  1
-divx019 divide  20    20   ->  1
-
-divx020 divide  187   187    ->  1
-divx021 divide  5     2      ->  2.5
-divx022 divide  50    20     ->  2.5
-divx023 divide  500   200    ->  2.5
-divx024 divide  50.0  20.0   ->  2.5
-divx025 divide  5.00  2.00   ->  2.5
-divx026 divide  5     2.0    ->  2.5
-divx027 divide  5     2.000  ->  2.5
-divx028 divide  5     0.20   ->  25
-divx029 divide  5     0.200  ->  25
-divx030 divide  10    1      ->  10
-divx031 divide  100   1      ->  100
-divx032 divide  1000  1      ->  1000
-divx033 divide  1000  100    ->  10
-
-divx035 divide  1     2      ->  0.5
-divx036 divide  1     4      ->  0.25
-divx037 divide  1     8      ->  0.125
-divx038 divide  1     16     ->  0.0625
-divx039 divide  1     32     ->  0.03125
-divx040 divide  1     64     ->  0.015625
-divx041 divide  1    -2      ->  -0.5
-divx042 divide  1    -4      ->  -0.25
-divx043 divide  1    -8      ->  -0.125
-divx044 divide  1    -16     ->  -0.0625
-divx045 divide  1    -32     ->  -0.03125
-divx046 divide  1    -64     ->  -0.015625
-divx047 divide -1     2      ->  -0.5
-divx048 divide -1     4      ->  -0.25
-divx049 divide -1     8      ->  -0.125
-divx050 divide -1     16     ->  -0.0625
-divx051 divide -1     32     ->  -0.03125
-divx052 divide -1     64     ->  -0.015625
-divx053 divide -1    -2      ->  0.5
-divx054 divide -1    -4      ->  0.25
-divx055 divide -1    -8      ->  0.125
-divx056 divide -1    -16     ->  0.0625
-divx057 divide -1    -32     ->  0.03125
-divx058 divide -1    -64     ->  0.015625
-
-divx070 divide  999999999        1    ->  999999999
-divx071 divide  999999999.4      1    ->  999999999 Inexact Rounded
-divx072 divide  999999999.5      1    ->  1.00000000E+9 Inexact Rounded
-divx073 divide  999999999.9      1    ->  1.00000000E+9 Inexact Rounded
-divx074 divide  999999999.999    1    ->  1.00000000E+9 Inexact Rounded
-precision: 6
-divx080 divide  999999999     1  ->  1.00000E+9 Inexact Rounded
-divx081 divide  99999999      1  ->  1.00000E+8 Inexact Rounded
-divx082 divide  9999999       1  ->  1.00000E+7 Inexact Rounded
-divx083 divide  999999        1  ->  999999
-divx084 divide  99999         1  ->  99999
-divx085 divide  9999          1  ->  9999
-divx086 divide  999           1  ->  999
-divx087 divide  99            1  ->  99
-divx088 divide  9             1  ->  9
-
-precision: 9
-divx090 divide  0.            1    ->  0
-divx091 divide  .0            1    ->  0.0
-divx092 divide  0.00          1    ->  0.00
-divx093 divide  0.00E+9       1    ->  0E+7
-divx094 divide  0.0000E-50    1    ->  0E-54
-
-divx095 divide  1            1E-8  ->  1E+8
-divx096 divide  1            1E-9  ->  1E+9
-divx097 divide  1            1E-10 ->  1E+10
-divx098 divide  1            1E-11 ->  1E+11
-divx099 divide  1            1E-12 ->  1E+12
-
-divx100 divide  1  1   -> 1
-divx101 divide  1  2   -> 0.5
-divx102 divide  1  3   -> 0.333333333 Inexact Rounded
-divx103 divide  1  4   -> 0.25
-divx104 divide  1  5   -> 0.2
-divx105 divide  1  6   -> 0.166666667 Inexact Rounded
-divx106 divide  1  7   -> 0.142857143 Inexact Rounded
-divx107 divide  1  8   -> 0.125
-divx108 divide  1  9   -> 0.111111111 Inexact Rounded
-divx109 divide  1  10  -> 0.1
-divx110 divide  1  1   -> 1
-divx111 divide  2  1   -> 2
-divx112 divide  3  1   -> 3
-divx113 divide  4  1   -> 4
-divx114 divide  5  1   -> 5
-divx115 divide  6  1   -> 6
-divx116 divide  7  1   -> 7
-divx117 divide  8  1   -> 8
-divx118 divide  9  1   -> 9
-divx119 divide  10 1   -> 10
-
-divx120 divide  3E+1 0.001  -> 3E+4
-divx121 divide  2.200 2     -> 1.100
-
-divx130 divide  12345  4.999  ->  2469.49390 Inexact Rounded
-divx131 divide  12345  4.99   ->  2473.94790 Inexact Rounded
-divx132 divide  12345  4.9    ->  2519.38776 Inexact Rounded
-divx133 divide  12345  5      ->  2469
-divx134 divide  12345  5.1    ->  2420.58824 Inexact Rounded
-divx135 divide  12345  5.01   ->  2464.07186 Inexact Rounded
-divx136 divide  12345  5.001  ->  2468.50630 Inexact Rounded
-
-precision:   9
-maxexponent: 999999999
-minexponent: -999999999
-
--- test possibly imprecise results
-divx220 divide 391   597 ->  0.654941374 Inexact Rounded
-divx221 divide 391  -597 -> -0.654941374 Inexact Rounded
-divx222 divide -391  597 -> -0.654941374 Inexact Rounded
-divx223 divide -391 -597 ->  0.654941374 Inexact Rounded
-
--- test some cases that are close to exponent overflow
-maxexponent: 999999999
-minexponent: -999999999
-divx270 divide 1 1e999999999    -> 1E-999999999
-divx271 divide 1 0.9e999999999  -> 1.11111111E-999999999 Inexact Rounded
-divx272 divide 1 0.99e999999999 -> 1.01010101E-999999999 Inexact Rounded
-divx273 divide 1 0.999999999e999999999 -> 1.00000000E-999999999 Inexact Rounded
-divx274 divide 9e999999999    1 -> 9E+999999999
-divx275 divide 9.9e999999999  1 -> 9.9E+999999999
-divx276 divide 9.99e999999999 1 -> 9.99E+999999999
-divx277 divide 9.99999999e999999999 1 -> 9.99999999E+999999999
-
-divx280 divide 0.1 9e-999999999   -> 1.11111111E+999999997 Inexact Rounded
-divx281 divide 0.1 99e-999999999  -> 1.01010101E+999999996 Inexact Rounded
-divx282 divide 0.1 999e-999999999 -> 1.00100100E+999999995 Inexact Rounded
-
-divx283 divide 0.1 9e-999999998     -> 1.11111111E+999999996 Inexact Rounded
-divx284 divide 0.1 99e-999999998    -> 1.01010101E+999999995 Inexact Rounded
-divx285 divide 0.1 999e-999999998   -> 1.00100100E+999999994 Inexact Rounded
-divx286 divide 0.1 999e-999999997   -> 1.00100100E+999999993 Inexact Rounded
-divx287 divide 0.1 9999e-999999997  -> 1.00010001E+999999992 Inexact Rounded
-divx288 divide 0.1 99999e-999999997 -> 1.00001000E+999999991 Inexact Rounded
-
--- Divide into 0 tests
-
-divx301 divide    0    7     -> 0
-divx302 divide    0    7E-5  -> 0E+5
-divx303 divide    0    7E-1  -> 0E+1
-divx304 divide    0    7E+1  -> 0.0
-divx305 divide    0    7E+5  -> 0.00000
-divx306 divide    0    7E+6  -> 0.000000
-divx307 divide    0    7E+7  -> 0E-7
-divx308 divide    0   70E-5  -> 0E+5
-divx309 divide    0   70E-1  -> 0E+1
-divx310 divide    0   70E+0  -> 0
-divx311 divide    0   70E+1  -> 0.0
-divx312 divide    0   70E+5  -> 0.00000
-divx313 divide    0   70E+6  -> 0.000000
-divx314 divide    0   70E+7  -> 0E-7
-divx315 divide    0  700E-5  -> 0E+5
-divx316 divide    0  700E-1  -> 0E+1
-divx317 divide    0  700E+0  -> 0
-divx318 divide    0  700E+1  -> 0.0
-divx319 divide    0  700E+5  -> 0.00000
-divx320 divide    0  700E+6  -> 0.000000
-divx321 divide    0  700E+7  -> 0E-7
-divx322 divide    0  700E+77 -> 0E-77
-
-divx331 divide 0E-3    7E-5  -> 0E+2
-divx332 divide 0E-3    7E-1  -> 0.00
-divx333 divide 0E-3    7E+1  -> 0.0000
-divx334 divide 0E-3    7E+5  -> 0E-8
-divx335 divide 0E-1    7E-5  -> 0E+4
-divx336 divide 0E-1    7E-1  -> 0
-divx337 divide 0E-1    7E+1  -> 0.00
-divx338 divide 0E-1    7E+5  -> 0.000000
-divx339 divide 0E+1    7E-5  -> 0E+6
-divx340 divide 0E+1    7E-1  -> 0E+2
-divx341 divide 0E+1    7E+1  -> 0
-divx342 divide 0E+1    7E+5  -> 0.0000
-divx343 divide 0E+3    7E-5  -> 0E+8
-divx344 divide 0E+3    7E-1  -> 0E+4
-divx345 divide 0E+3    7E+1  -> 0E+2
-divx346 divide 0E+3    7E+5  -> 0.00
-
-maxexponent: 92
-minexponent: -92
-precision:    7
-divx351 divide 0E-92   7E-1  -> 0E-91
-divx352 divide 0E-92   7E+1  -> 0E-93
-divx353 divide 0E-92   7E+5  -> 0E-97
-divx354 divide 0E-92   7E+6  -> 0E-98
-divx355 divide 0E-92   7E+7  -> 0E-98 Clamped
-divx356 divide 0E-92 777E-1  -> 0E-91
-divx357 divide 0E-92 777E+1  -> 0E-93
-divx358 divide 0E-92 777E+3  -> 0E-95
-divx359 divide 0E-92 777E+4  -> 0E-96
-divx360 divide 0E-92 777E+5  -> 0E-97
-divx361 divide 0E-92 777E+6  -> 0E-98
-divx362 divide 0E-92 777E+7  -> 0E-98 Clamped
-divx363 divide 0E-92   7E+92 -> 0E-98 Clamped
-
-divx371 divide 0E-92 700E-1  -> 0E-91
-divx372 divide 0E-92 700E+1  -> 0E-93
-divx373 divide 0E-92 700E+3  -> 0E-95
-divx374 divide 0E-92 700E+4  -> 0E-96
-divx375 divide 0E-92 700E+5  -> 0E-97
-divx376 divide 0E-92 700E+6  -> 0E-98
-divx377 divide 0E-92 700E+7  -> 0E-98 Clamped
-
-divx381 divide 0E+92   7E+1  -> 0E+91
-divx382 divide 0E+92   7E+0  -> 0E+92
-divx383 divide 0E+92   7E-1  -> 0E+92 Clamped
-divx384 divide 0E+90 777E+1  -> 0E+89
-divx385 divide 0E+90 777E-1  -> 0E+91
-divx386 divide 0E+90 777E-2  -> 0E+92
-divx387 divide 0E+90 777E-3  -> 0E+92 Clamped
-divx388 divide 0E+90 777E-4  -> 0E+92 Clamped
-
-divx391 divide 0E+90 700E+1  -> 0E+89
-divx392 divide 0E+90 700E-1  -> 0E+91
-divx393 divide 0E+90 700E-2  -> 0E+92
-divx394 divide 0E+90 700E-3  -> 0E+92 Clamped
-divx395 divide 0E+90 700E-4  -> 0E+92 Clamped
-
--- input rounding checks
-maxexponent: 999
-minexponent: -999
-precision: 9
-divx401 divide 12345678000 1 -> 1.23456780E+10 Rounded
-divx402 divide 1 12345678000 -> 8.10000066E-11 Inexact Rounded
-divx403 divide 1234567800  1 -> 1.23456780E+9  Rounded
-divx404 divide 1 1234567800  -> 8.10000066E-10 Inexact Rounded
-divx405 divide 1234567890  1 -> 1.23456789E+9  Rounded
-divx406 divide 1 1234567890  -> 8.10000007E-10 Inexact Rounded
-divx407 divide 1234567891  1 -> 1.23456789E+9  Inexact Rounded
-divx408 divide 1 1234567891  -> 8.10000007E-10 Inexact Rounded
-divx409 divide 12345678901 1 -> 1.23456789E+10 Inexact Rounded
-divx410 divide 1 12345678901 -> 8.10000007E-11 Inexact Rounded
-divx411 divide 1234567896  1 -> 1.23456790E+9  Inexact Rounded
-divx412 divide 1 1234567896  -> 8.10000003E-10 Inexact Rounded
-divx413 divide 1 1234567897  -> 8.10000003E-10 Inexact Rounded
-divx414 divide 1 1234567898  -> 8.10000002E-10 Inexact Rounded
-divx415 divide 1 1234567899  -> 8.10000001E-10 Inexact Rounded
-divx416 divide 1 1234567900  -> 8.10000001E-10 Inexact Rounded
-divx417 divide 1 1234567901  -> 8.10000000E-10 Inexact Rounded
-divx418 divide 1 1234567902  -> 8.09999999E-10 Inexact Rounded
--- some longies
-divx421 divide 1234567896.000000000000  1 -> 1.23456790E+9  Inexact Rounded
-divx422 divide 1 1234567896.000000000000  -> 8.10000003E-10 Inexact Rounded
-divx423 divide 1234567896.000000000001  1 -> 1.23456790E+9  Inexact Rounded
-divx424 divide 1 1234567896.000000000001  -> 8.10000003E-10 Inexact Rounded
-divx425 divide 1234567896.000000000000000000000000000000000000000009  1 -> 1.23456790E+9  Inexact Rounded
-divx426 divide 1 1234567896.000000000000000000000000000000000000000009  -> 8.10000003E-10 Inexact Rounded
-divx427 divide 1234567897.900010000000000000000000000000000000000009  1 -> 1.23456790E+9  Inexact Rounded
-divx428 divide 1 1234567897.900010000000000000000000000000000000000009  -> 8.10000002E-10 Inexact Rounded
-
-precision: 15
--- still checking...
-divx441 divide 12345678000 1 -> 12345678000
-divx442 divide 1 12345678000 -> 8.10000066420005E-11 Inexact Rounded
-divx443 divide 1234567800  1 -> 1234567800
-divx444 divide 1 1234567800  -> 8.10000066420005E-10 Inexact Rounded
-divx445 divide 1234567890  1 -> 1234567890
-divx446 divide 1 1234567890  -> 8.10000007371000E-10 Inexact Rounded
-divx447 divide 1234567891  1 -> 1234567891
-divx448 divide 1 1234567891  -> 8.10000006714900E-10 Inexact Rounded
-divx449 divide 12345678901 1 -> 12345678901
-divx450 divide 1 12345678901 -> 8.10000007305390E-11 Inexact Rounded
-divx451 divide 1234567896  1 -> 1234567896
-divx452 divide 1 1234567896  -> 8.10000003434400E-10 Inexact Rounded
-
--- high-lows
-divx453 divide 1e+1   1    ->   1E+1
-divx454 divide 1e+1   1.0  ->   1E+1
-divx455 divide 1e+1   1.00 ->   1E+1
-divx456 divide 1e+2   2    ->   5E+1
-divx457 divide 1e+2   2.0  ->   5E+1
-divx458 divide 1e+2   2.00 ->   5E+1
-
--- some from IEEE discussions
-divx460 divide 3e0      2e0     -> 1.5
-divx461 divide 30e-1    2e0     -> 1.5
-divx462 divide 300e-2   2e0     -> 1.50
-divx464 divide 3000e-3  2e0     -> 1.500
-divx465 divide 3e0      20e-1   -> 1.5
-divx466 divide 30e-1    20e-1   -> 1.5
-divx467 divide 300e-2   20e-1   -> 1.5
-divx468 divide 3000e-3  20e-1   -> 1.50
-divx469 divide 3e0      200e-2  -> 1.5
-divx470 divide 30e-1    200e-2  -> 1.5
-divx471 divide 300e-2   200e-2  -> 1.5
-divx472 divide 3000e-3  200e-2  -> 1.5
-divx473 divide 3e0      2000e-3 -> 1.5
-divx474 divide 30e-1    2000e-3 -> 1.5
-divx475 divide 300e-2   2000e-3 -> 1.5
-divx476 divide 3000e-3  2000e-3 -> 1.5
-
--- some reciprocals
-divx480 divide 1        1.0E+33 -> 1E-33
-divx481 divide 1        10E+33  -> 1E-34
-divx482 divide 1        1.0E-33 -> 1E+33
-divx483 divide 1        10E-33  -> 1E+32
-
--- RMS discussion table
-maxexponent:  96
-minexponent: -95
-precision:     7
-
-divx484 divide 0e5     1e3 ->   0E+2
-divx485 divide 0e5     2e3 ->   0E+2
-divx486 divide 0e5    10e2 ->   0E+3
-divx487 divide 0e5    20e2 ->   0E+3
-divx488 divide 0e5   100e1 ->   0E+4
-divx489 divide 0e5   200e1 ->   0E+4
-
-divx491 divide 1e5     1e3 ->   1E+2
-divx492 divide 1e5     2e3 ->   5E+1
-divx493 divide 1e5    10e2 ->   1E+2
-divx494 divide 1e5    20e2 ->   5E+1
-divx495 divide 1e5   100e1 ->   1E+2
-divx496 divide 1e5   200e1 ->   5E+1
-
--- tryzeros cases
-precision:   7
-rounding:    half_up
-maxExponent: 92
-minexponent: -92
-divx497  divide  0E+86 1000E-13  -> 0E+92 Clamped
-divx498  divide  0E-98 1000E+13  -> 0E-98 Clamped
-
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minexponent: -999
-
--- focus on trailing zeros issues
-precision:   9
-divx500 divide  1      9.9    ->  0.101010101  Inexact Rounded
-precision:   8
-divx501 divide  1      9.9    ->  0.10101010   Inexact Rounded
-precision:   7
-divx502 divide  1      9.9    ->  0.1010101    Inexact Rounded
-precision:   6
-divx503 divide  1      9.9    ->  0.101010     Inexact Rounded
-precision:   9
-
-divx511 divide 1         2    -> 0.5
-divx512 divide 1.0       2    -> 0.5
-divx513 divide 1.00      2    -> 0.50
-divx514 divide 1.000     2    -> 0.500
-divx515 divide 1.0000    2    -> 0.5000
-divx516 divide 1.00000   2    -> 0.50000
-divx517 divide 1.000000  2    -> 0.500000
-divx518 divide 1.0000000 2    -> 0.5000000
-divx519 divide 1.00      2.00 -> 0.5
-
-divx521 divide 2    1         -> 2
-divx522 divide 2    1.0       -> 2
-divx523 divide 2    1.00      -> 2
-divx524 divide 2    1.000     -> 2
-divx525 divide 2    1.0000    -> 2
-divx526 divide 2    1.00000   -> 2
-divx527 divide 2    1.000000  -> 2
-divx528 divide 2    1.0000000 -> 2
-divx529 divide 2.00 1.00      -> 2
-
-divx530 divide  2.40   2      ->  1.20
-divx531 divide  2.40   4      ->  0.60
-divx532 divide  2.40  10      ->  0.24
-divx533 divide  2.40   2.0    ->  1.2
-divx534 divide  2.40   4.0    ->  0.6
-divx535 divide  2.40  10.0    ->  0.24
-divx536 divide  2.40   2.00   ->  1.2
-divx537 divide  2.40   4.00   ->  0.6
-divx538 divide  2.40  10.00   ->  0.24
-divx539 divide  0.9    0.1    ->  9
-divx540 divide  0.9    0.01   ->  9E+1
-divx541 divide  0.9    0.001  ->  9E+2
-divx542 divide  5      2      ->  2.5
-divx543 divide  5      2.0    ->  2.5
-divx544 divide  5      2.00   ->  2.5
-divx545 divide  5      20     ->  0.25
-divx546 divide  5      20.0   ->  0.25
-divx547 divide  2.400  2      ->  1.200
-divx548 divide  2.400  2.0    ->  1.20
-divx549 divide  2.400  2.400  ->  1
-
-divx550 divide  240    1      ->  240
-divx551 divide  240    10     ->  24
-divx552 divide  240    100    ->  2.4
-divx553 divide  240    1000   ->  0.24
-divx554 divide  2400   1      ->  2400
-divx555 divide  2400   10     ->  240
-divx556 divide  2400   100    ->  24
-divx557 divide  2400   1000   ->  2.4
-
--- +ve exponent
-precision: 5
-divx570 divide  2.4E+6     2  ->  1.2E+6
-divx571 divide  2.40E+6    2  ->  1.20E+6
-divx572 divide  2.400E+6   2  ->  1.200E+6
-divx573 divide  2.4000E+6  2  ->  1.2000E+6
-divx574 divide  24E+5      2  ->  1.2E+6
-divx575 divide  240E+4     2  ->  1.20E+6
-divx576 divide  2400E+3    2  ->  1.200E+6
-divx577 divide  24000E+2   2  ->  1.2000E+6
-precision: 6
-divx580 divide  2.4E+6     2  ->  1.2E+6
-divx581 divide  2.40E+6    2  ->  1.20E+6
-divx582 divide  2.400E+6   2  ->  1.200E+6
-divx583 divide  2.4000E+6  2  ->  1.2000E+6
-divx584 divide  24E+5      2  ->  1.2E+6
-divx585 divide  240E+4     2  ->  1.20E+6
-divx586 divide  2400E+3    2  ->  1.200E+6
-divx587 divide  24000E+2   2  ->  1.2000E+6
-precision: 7
-divx590 divide  2.4E+6     2  ->  1.2E+6
-divx591 divide  2.40E+6    2  ->  1.20E+6
-divx592 divide  2.400E+6   2  ->  1.200E+6
-divx593 divide  2.4000E+6  2  ->  1.2000E+6
-divx594 divide  24E+5      2  ->  1.2E+6
-divx595 divide  240E+4     2  ->  1.20E+6
-divx596 divide  2400E+3    2  ->  1.200E+6
-divx597 divide  24000E+2   2  ->  1.2000E+6
-precision:   9
-divx600 divide  2.4E+9     2  ->  1.2E+9
-divx601 divide  2.40E+9    2  ->  1.20E+9
-divx602 divide  2.400E+9   2  ->  1.200E+9
-divx603 divide  2.4000E+9  2  ->  1.2000E+9
-divx604 divide  24E+8      2  ->  1.2E+9
-divx605 divide  240E+7     2  ->  1.20E+9
-divx606 divide  2400E+6    2  ->  1.200E+9
-divx607 divide  24000E+5   2  ->  1.2000E+9
-
--- long operand triangle
-precision: 33
-divx610 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131097703792 Inexact Rounded
-precision: 32
-divx611 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813109770379  Inexact Rounded
-precision: 31
-divx612 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81310977038   Inexact Rounded
-precision: 30
-divx613 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131097704    Inexact Rounded
-precision: 29
-divx614 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813109770     Inexact Rounded
-precision: 28
-divx615 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81310977      Inexact Rounded
-precision: 27
-divx616 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131098       Inexact Rounded
-precision: 26
-divx617 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813110        Inexact Rounded
-precision: 25
-divx618 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81311         Inexact Rounded
-precision: 24
-divx619 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131          Inexact Rounded
-precision: 23
-divx620 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813           Inexact Rounded
-precision: 22
-divx621 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81            Inexact Rounded
-precision: 21
-divx622 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8             Inexact Rounded
-precision: 20
-divx623 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817798               Inexact Rounded
-precision: 19
-divx624 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888379681780E+19         Inexact Rounded
-precision: 18
-divx625 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114088837968178E+19         Inexact Rounded
-precision: 17
-divx626 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011408883796818E+19         Inexact Rounded
-precision: 16
-divx627 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888379682E+19         Inexact Rounded
-precision: 15
-divx628 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114088837968E+19         Inexact Rounded
-precision: 14
-divx629 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011408883797E+19         Inexact Rounded
-precision: 13
-divx630 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888380E+19         Inexact Rounded
-precision: 12
-divx631 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114088838E+19         Inexact Rounded
-precision: 11
-divx632 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011408884E+19         Inexact Rounded
-precision: 10
-divx633 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888E+19         Inexact Rounded
-precision:  9
-divx634 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114089E+19         Inexact Rounded
-precision:  8
-divx635 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011409E+19         Inexact Rounded
-precision:  7
-divx636 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101141E+19         Inexact Rounded
-precision:  6
-divx637 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114E+19         Inexact Rounded
-precision:  5
-divx638 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011E+19         Inexact Rounded
-precision:  4
-divx639 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101E+19         Inexact Rounded
-precision:  3
-divx640 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10E+19         Inexact Rounded
-precision:  2
-divx641 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1E+19         Inexact Rounded
-precision:  1
-divx642 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4E+19         Inexact Rounded
-
--- more zeros, etc.
-precision:   16
-rounding:    half_up
-maxExponent: 384
-minExponent: -383
-
-divx731 divide 5.00 1E-3    -> 5.00E+3
-divx732 divide 00.00 0.000  -> NaN Division_undefined
-divx733 divide 00.00 0E-3   -> NaN Division_undefined
-divx734 divide  0    -0     -> NaN Division_undefined
-divx735 divide -0     0     -> NaN Division_undefined
-divx736 divide -0    -0     -> NaN Division_undefined
-
-divx741 divide  0    -1     -> -0
-divx742 divide -0    -1     ->  0
-divx743 divide  0     1     ->  0
-divx744 divide -0     1     -> -0
-divx745 divide -1     0     -> -Infinity Division_by_zero
-divx746 divide -1    -0     ->  Infinity Division_by_zero
-divx747 divide  1     0     ->  Infinity Division_by_zero
-divx748 divide  1    -0     -> -Infinity Division_by_zero
-
-divx751 divide  0.0  -1     -> -0.0
-divx752 divide -0.0  -1     ->  0.0
-divx753 divide  0.0   1     ->  0.0
-divx754 divide -0.0   1     -> -0.0
-divx755 divide -1.0   0     -> -Infinity Division_by_zero
-divx756 divide -1.0  -0     ->  Infinity Division_by_zero
-divx757 divide  1.0   0     ->  Infinity Division_by_zero
-divx758 divide  1.0  -0     -> -Infinity Division_by_zero
-
-divx761 divide  0    -1.0   -> -0E+1
-divx762 divide -0    -1.0   ->  0E+1
-divx763 divide  0     1.0   ->  0E+1
-divx764 divide -0     1.0   -> -0E+1
-divx765 divide -1     0.0   -> -Infinity Division_by_zero
-divx766 divide -1    -0.0   ->  Infinity Division_by_zero
-divx767 divide  1     0.0   ->  Infinity Division_by_zero
-divx768 divide  1    -0.0   -> -Infinity Division_by_zero
-
-divx771 divide  0.0  -1.0   -> -0
-divx772 divide -0.0  -1.0   ->  0
-divx773 divide  0.0   1.0   ->  0
-divx774 divide -0.0   1.0   -> -0
-divx775 divide -1.0   0.0   -> -Infinity Division_by_zero
-divx776 divide -1.0  -0.0   ->  Infinity Division_by_zero
-divx777 divide  1.0   0.0   ->  Infinity Division_by_zero
-divx778 divide  1.0  -0.0   -> -Infinity Division_by_zero
-
--- Specials
-divx780 divide  Inf  -Inf   ->  NaN Invalid_operation
-divx781 divide  Inf  -1000  -> -Infinity
-divx782 divide  Inf  -1     -> -Infinity
-divx783 divide  Inf  -0     -> -Infinity
-divx784 divide  Inf   0     ->  Infinity
-divx785 divide  Inf   1     ->  Infinity
-divx786 divide  Inf   1000  ->  Infinity
-divx787 divide  Inf   Inf   ->  NaN Invalid_operation
-divx788 divide -1000  Inf   -> -0E-398 Clamped
-divx789 divide -Inf   Inf   ->  NaN Invalid_operation
-divx790 divide -1     Inf   -> -0E-398 Clamped
-divx791 divide -0     Inf   -> -0E-398 Clamped
-divx792 divide  0     Inf   ->  0E-398 Clamped
-divx793 divide  1     Inf   ->  0E-398 Clamped
-divx794 divide  1000  Inf   ->  0E-398 Clamped
-divx795 divide  Inf   Inf   ->  NaN Invalid_operation
-
-divx800 divide -Inf  -Inf   ->  NaN Invalid_operation
-divx801 divide -Inf  -1000  ->  Infinity
-divx802 divide -Inf  -1     ->  Infinity
-divx803 divide -Inf  -0     ->  Infinity
-divx804 divide -Inf   0     -> -Infinity
-divx805 divide -Inf   1     -> -Infinity
-divx806 divide -Inf   1000  -> -Infinity
-divx807 divide -Inf   Inf   ->  NaN Invalid_operation
-divx808 divide -1000  Inf   -> -0E-398 Clamped
-divx809 divide -Inf  -Inf   ->  NaN Invalid_operation
-divx810 divide -1    -Inf   ->  0E-398 Clamped
-divx811 divide -0    -Inf   ->  0E-398 Clamped
-divx812 divide  0    -Inf   -> -0E-398 Clamped
-divx813 divide  1    -Inf   -> -0E-398 Clamped
-divx814 divide  1000 -Inf   -> -0E-398 Clamped
-divx815 divide  Inf  -Inf   ->  NaN Invalid_operation
-
-divx821 divide  NaN -Inf    ->  NaN
-divx822 divide  NaN -1000   ->  NaN
-divx823 divide  NaN -1      ->  NaN
-divx824 divide  NaN -0      ->  NaN
-divx825 divide  NaN  0      ->  NaN
-divx826 divide  NaN  1      ->  NaN
-divx827 divide  NaN  1000   ->  NaN
-divx828 divide  NaN  Inf    ->  NaN
-divx829 divide  NaN  NaN    ->  NaN
-divx830 divide -Inf  NaN    ->  NaN
-divx831 divide -1000 NaN    ->  NaN
-divx832 divide -1    NaN    ->  NaN
-divx833 divide -0    NaN    ->  NaN
-divx834 divide  0    NaN    ->  NaN
-divx835 divide  1    NaN    ->  NaN
-divx836 divide  1000 NaN    ->  NaN
-divx837 divide  Inf  NaN    ->  NaN
-
-divx841 divide  sNaN -Inf   ->  NaN  Invalid_operation
-divx842 divide  sNaN -1000  ->  NaN  Invalid_operation
-divx843 divide  sNaN -1     ->  NaN  Invalid_operation
-divx844 divide  sNaN -0     ->  NaN  Invalid_operation
-divx845 divide  sNaN  0     ->  NaN  Invalid_operation
-divx846 divide  sNaN  1     ->  NaN  Invalid_operation
-divx847 divide  sNaN  1000  ->  NaN  Invalid_operation
-divx848 divide  sNaN  NaN   ->  NaN  Invalid_operation
-divx849 divide  sNaN sNaN   ->  NaN  Invalid_operation
-divx850 divide  NaN  sNaN   ->  NaN  Invalid_operation
-divx851 divide -Inf  sNaN   ->  NaN  Invalid_operation
-divx852 divide -1000 sNaN   ->  NaN  Invalid_operation
-divx853 divide -1    sNaN   ->  NaN  Invalid_operation
-divx854 divide -0    sNaN   ->  NaN  Invalid_operation
-divx855 divide  0    sNaN   ->  NaN  Invalid_operation
-divx856 divide  1    sNaN   ->  NaN  Invalid_operation
-divx857 divide  1000 sNaN   ->  NaN  Invalid_operation
-divx858 divide  Inf  sNaN   ->  NaN  Invalid_operation
-divx859 divide  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-divx861 divide  NaN9 -Inf   ->  NaN9
-divx862 divide  NaN8  1000  ->  NaN8
-divx863 divide  NaN7  Inf   ->  NaN7
-divx864 divide  NaN6  NaN5  ->  NaN6
-divx865 divide -Inf   NaN4  ->  NaN4
-divx866 divide -1000  NaN3  ->  NaN3
-divx867 divide  Inf   NaN2  ->  NaN2
-
-divx871 divide  sNaN99 -Inf    ->  NaN99 Invalid_operation
-divx872 divide  sNaN98 -1      ->  NaN98 Invalid_operation
-divx873 divide  sNaN97  NaN    ->  NaN97 Invalid_operation
-divx874 divide  sNaN96 sNaN94  ->  NaN96 Invalid_operation
-divx875 divide  NaN95  sNaN93  ->  NaN93 Invalid_operation
-divx876 divide -Inf    sNaN92  ->  NaN92 Invalid_operation
-divx877 divide  0      sNaN91  ->  NaN91 Invalid_operation
-divx878 divide  Inf    sNaN90  ->  NaN90 Invalid_operation
-divx879 divide  NaN    sNaN89  ->  NaN89 Invalid_operation
-
-divx881 divide  -NaN9  -Inf   ->  -NaN9
-divx882 divide  -NaN8   1000  ->  -NaN8
-divx883 divide  -NaN7   Inf   ->  -NaN7
-divx884 divide  -NaN6  -NaN5  ->  -NaN6
-divx885 divide  -Inf   -NaN4  ->  -NaN4
-divx886 divide  -1000  -NaN3  ->  -NaN3
-divx887 divide   Inf   -NaN2  ->  -NaN2
-
-divx891 divide -sNaN99 -Inf    -> -NaN99 Invalid_operation
-divx892 divide -sNaN98 -1      -> -NaN98 Invalid_operation
-divx893 divide -sNaN97  NaN    -> -NaN97 Invalid_operation
-divx894 divide -sNaN96 -sNaN94 -> -NaN96 Invalid_operation
-divx895 divide -NaN95  -sNaN93 -> -NaN93 Invalid_operation
-divx896 divide -Inf    -sNaN92 -> -NaN92 Invalid_operation
-divx897 divide  0      -sNaN91 -> -NaN91 Invalid_operation
-divx898 divide  Inf    -sNaN90 -> -NaN90 Invalid_operation
-divx899 divide -NaN    -sNaN89 -> -NaN89 Invalid_operation
-
-maxexponent: 999999999
-minexponent: -999999999
-
--- Various flavours of divide by 0
-divx901 divide    0       0   ->  NaN Division_undefined
-divx902 divide    0.0E5   0   ->  NaN Division_undefined
-divx903 divide    0.000   0   ->  NaN Division_undefined
-divx904 divide    0.0001  0   ->  Infinity Division_by_zero
-divx905 divide    0.01    0   ->  Infinity Division_by_zero
-divx906 divide    0.1     0   ->  Infinity Division_by_zero
-divx907 divide    1       0   ->  Infinity Division_by_zero
-divx908 divide    1       0.0 ->  Infinity Division_by_zero
-divx909 divide   10       0.0 ->  Infinity Division_by_zero
-divx910 divide   1E+100   0.0 ->  Infinity Division_by_zero
-divx911 divide   1E+1000  0   ->  Infinity Division_by_zero
-
-divx921 divide   -0.0001  0   -> -Infinity Division_by_zero
-divx922 divide   -0.01    0   -> -Infinity Division_by_zero
-divx923 divide   -0.1     0   -> -Infinity Division_by_zero
-divx924 divide   -1       0   -> -Infinity Division_by_zero
-divx925 divide   -1       0.0 -> -Infinity Division_by_zero
-divx926 divide  -10       0.0 -> -Infinity Division_by_zero
-divx927 divide  -1E+100   0.0 -> -Infinity Division_by_zero
-divx928 divide  -1E+1000  0   -> -Infinity Division_by_zero
-
-divx931 divide    0.0001 -0   -> -Infinity Division_by_zero
-divx932 divide    0.01   -0   -> -Infinity Division_by_zero
-divx933 divide    0.1    -0   -> -Infinity Division_by_zero
-divx934 divide    1      -0   -> -Infinity Division_by_zero
-divx935 divide    1      -0.0 -> -Infinity Division_by_zero
-divx936 divide   10      -0.0 -> -Infinity Division_by_zero
-divx937 divide   1E+100  -0.0 -> -Infinity Division_by_zero
-divx938 divide   1E+1000 -0   -> -Infinity Division_by_zero
-
-divx941 divide   -0.0001 -0   ->  Infinity Division_by_zero
-divx942 divide   -0.01   -0   ->  Infinity Division_by_zero
-divx943 divide   -0.1    -0   ->  Infinity Division_by_zero
-divx944 divide   -1      -0   ->  Infinity Division_by_zero
-divx945 divide   -1      -0.0 ->  Infinity Division_by_zero
-divx946 divide  -10      -0.0 ->  Infinity Division_by_zero
-divx947 divide  -1E+100  -0.0 ->  Infinity Division_by_zero
-divx948 divide  -1E+1000 -0   ->  Infinity Division_by_zero
-
--- overflow and underflow tests
-precision: 9
-maxexponent: 999999999
-minexponent: -999999999
-divx951 divide 9E+999999999 +0.23456789012345E-0 -> Infinity Inexact Overflow Rounded
-divx952 divide +0.100 9E+999999999 -> 1.111111E-1000000001 Inexact Rounded Underflow Subnormal
-divx953 divide 9E-999999999 +9.100 -> 9.8901099E-1000000000 Inexact Rounded Underflow Subnormal
-divx954 divide -1.23456789          9E+999999999 -> -1.3717421E-1000000000 Subnormal
-divx955 divide -1.23456789012345E-0 9E+999999999 -> -1.3717421E-1000000000 Underflow Subnormal Rounded Inexact
-divx956 divide -1.23456789012345E-0 7E+999999999 -> -1.7636684E-1000000000 Inexact Rounded Underflow Subnormal
-divx957 divide 9E+999999999 -0.83456789012345E-0 -> -Infinity Inexact Overflow Rounded
-divx958 divide -0.100 9E+999999999 -> -1.111111E-1000000001 Subnormal Inexact Rounded Underflow
-divx959 divide 9E-999999999 -9.100 -> -9.8901099E-1000000000 Inexact Rounded Underflow Subnormal
-
--- overflow and underflow (additional edge tests in multiply.decTest)
--- 'subnormal' results now possible (all hard underflow or overflow in
--- base arithemtic)
-divx960 divide 1e-600000000 1e+400000001 -> 1E-1000000001 Subnormal
-divx961 divide 1e-600000000 1e+400000002 -> 1E-1000000002 Subnormal
-divx962 divide 1e-600000000 1e+400000003 -> 1E-1000000003 Subnormal
-divx963 divide 1e-600000000 1e+400000004 -> 1E-1000000004 Subnormal
-divx964 divide 1e-600000000 1e+400000005 -> 1E-1000000005 Subnormal
-divx965 divide 1e-600000000 1e+400000006 -> 1E-1000000006 Subnormal
-divx966 divide 1e-600000000 1e+400000007 -> 1E-1000000007 Subnormal
-divx967 divide 1e-600000000 1e+400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-divx968 divide 1e-600000000 1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-divx969 divide 1e-600000000 1e+400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
--- [no equivalent of 'subnormal' for overflow]
-divx970 divide 1e+600000000 1e-400000001 -> Infinity Overflow Inexact Rounded
-divx971 divide 1e+600000000 1e-400000002 -> Infinity Overflow Inexact Rounded
-divx972 divide 1e+600000000 1e-400000003 -> Infinity Overflow Inexact Rounded
-divx973 divide 1e+600000000 1e-400000004 -> Infinity Overflow Inexact Rounded
-divx974 divide 1e+600000000 1e-400000005 -> Infinity Overflow Inexact Rounded
-divx975 divide 1e+600000000 1e-400000006 -> Infinity Overflow Inexact Rounded
-divx976 divide 1e+600000000 1e-400000007 -> Infinity Overflow Inexact Rounded
-divx977 divide 1e+600000000 1e-400000008 -> Infinity Overflow Inexact Rounded
-divx978 divide 1e+600000000 1e-400000009 -> Infinity Overflow Inexact Rounded
-divx979 divide 1e+600000000 1e-400000010 -> Infinity Overflow Inexact Rounded
-
--- Sign after overflow and underflow
-divx980 divide  1e-600000000  1e+400000009 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-divx981 divide  1e-600000000 -1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-divx982 divide -1e-600000000  1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-divx983 divide -1e-600000000 -1e+400000009 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-divx984 divide  1e+600000000  1e-400000009 ->  Infinity Overflow Inexact Rounded
-divx985 divide  1e+600000000 -1e-400000009 -> -Infinity Overflow Inexact Rounded
-divx986 divide -1e+600000000  1e-400000009 -> -Infinity Overflow Inexact Rounded
-divx987 divide -1e+600000000 -1e-400000009 ->  Infinity Overflow Inexact Rounded
-
--- Long operand overflow may be a different path
-precision: 3
-divx990 divide 1000  9.999E-999999999      ->  Infinity Inexact Overflow Rounded
-divx991 divide 1000 -9.999E-999999999      -> -Infinity Inexact Overflow Rounded
-divx992 divide       9.999E+999999999 0.01 ->  Infinity Inexact Overflow Rounded
-divx993 divide      -9.999E+999999999 0.01 -> -Infinity Inexact Overflow Rounded
-
--- check for double-rounded subnormals
-precision:   5
-maxexponent: 79
-minexponent: -79
-divx1001 divide    1.52444E-80 1      -> 1.524E-80 Inexact Rounded Subnormal Underflow
-divx1002 divide    1.52445E-80 1      -> 1.524E-80 Inexact Rounded Subnormal Underflow
-divx1003 divide    1.52446E-80 1      -> 1.524E-80 Inexact Rounded Subnormal Underflow
-
--- a rounding problem in one implementation
-precision:   34
-rounding:    half_up
-maxExponent: 6144
-minExponent: -6143
--- Unbounded answer to 40 digits:
---   1.465811965811965811965811965811965811966E+7000
-divx1010 divide 343E6000  234E-1000 -> Infinity Overflow Inexact Rounded
-
-precision:   34
-rounding:    half_up
-maxExponent: 6144
-minExponent: -6143
-
--- Examples from SQL proposal (Krishna Kulkarni)
-precision: 7
-divx1021  divide 1E0          1E0 -> 1
-divx1022  divide 1E0          2E0 -> 0.5
-divx1023  divide 1E0          3E0 -> 0.3333333 Inexact Rounded
-divx1024  divide 100E-2   1000E-3 -> 1
-divx1025  divide 24E-1        2E0 -> 1.2
-divx1026  divide 2400E-3      2E0 -> 1.200
-divx1027  divide 5E0          2E0 -> 2.5
-divx1028  divide 5E0        20E-1 -> 2.5
-divx1029  divide 5E0      2000E-3 -> 2.5
-divx1030  divide 5E0         2E-1 -> 25
-divx1031  divide 5E0        20E-2 -> 25
-divx1032  divide 480E-2       3E0 -> 1.60
-divx1033  divide 47E-1        2E0 -> 2.35
-
--- ECMAScript bad examples
-rounding:    half_down
-precision: 7
-divx1050  divide 5 9  -> 0.5555556 Inexact Rounded
-rounding:    half_even
-divx1051  divide 5 11 -> 0.4545455 Inexact Rounded
-
--- payload decapitate
-precision: 5
-divx1055  divide   sNaN987654321 1 ->  NaN54321  Invalid_operation
-
--- Null tests
-divx9998 divide 10  # -> NaN Invalid_operation
-divx9999 divide  # 10 -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/divideint.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/divideint.decTest
deleted file mode 100644
index 18ded27..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/divideint.decTest
+++ /dev/null
@@ -1,486 +0,0 @@
-------------------------------------------------------------------------
--- divideint.decTest -- decimal integer division                      --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
-dvix001 divideint  1     1    ->  1
-dvix002 divideint  2     1    ->  2
-dvix003 divideint  1     2    ->  0
-dvix004 divideint  2     2    ->  1
-dvix005 divideint  0     1    ->  0
-dvix006 divideint  0     2    ->  0
-dvix007 divideint  1     3    ->  0
-dvix008 divideint  2     3    ->  0
-dvix009 divideint  3     3    ->  1
-
-dvix010 divideint  2.4   1    ->  2
-dvix011 divideint  2.4   -1   ->  -2
-dvix012 divideint  -2.4  1    ->  -2
-dvix013 divideint  -2.4  -1   ->  2
-dvix014 divideint  2.40  1    ->  2
-dvix015 divideint  2.400 1    ->  2
-dvix016 divideint  2.4   2    ->  1
-dvix017 divideint  2.400 2    ->  1
-dvix018 divideint  2.    2    ->  1
-dvix019 divideint  20    20   ->  1
-
-dvix020 divideint  187   187  ->  1
-dvix021 divideint  5     2    ->  2
-dvix022 divideint  5     2.0    ->  2
-dvix023 divideint  5     2.000  ->  2
-dvix024 divideint  5     0.200  ->  25
-dvix025 divideint  5     0.200  ->  25
-
-dvix030 divideint  1     2      ->  0
-dvix031 divideint  1     4      ->  0
-dvix032 divideint  1     8      ->  0
-dvix033 divideint  1     16     ->  0
-dvix034 divideint  1     32     ->  0
-dvix035 divideint  1     64     ->  0
-dvix040 divideint  1    -2      -> -0
-dvix041 divideint  1    -4      -> -0
-dvix042 divideint  1    -8      -> -0
-dvix043 divideint  1    -16     -> -0
-dvix044 divideint  1    -32     -> -0
-dvix045 divideint  1    -64     -> -0
-dvix050 divideint -1     2      -> -0
-dvix051 divideint -1     4      -> -0
-dvix052 divideint -1     8      -> -0
-dvix053 divideint -1     16     -> -0
-dvix054 divideint -1     32     -> -0
-dvix055 divideint -1     64     -> -0
-dvix060 divideint -1    -2      ->  0
-dvix061 divideint -1    -4      ->  0
-dvix062 divideint -1    -8      ->  0
-dvix063 divideint -1    -16     ->  0
-dvix064 divideint -1    -32     ->  0
-dvix065 divideint -1    -64     ->  0
-
--- similar with powers of ten
-dvix160 divideint  1     1         ->  1
-dvix161 divideint  1     10        ->  0
-dvix162 divideint  1     100       ->  0
-dvix163 divideint  1     1000      ->  0
-dvix164 divideint  1     10000     ->  0
-dvix165 divideint  1     100000    ->  0
-dvix166 divideint  1     1000000   ->  0
-dvix167 divideint  1     10000000  ->  0
-dvix168 divideint  1     100000000 ->  0
-dvix170 divideint  1    -1         -> -1
-dvix171 divideint  1    -10        -> -0
-dvix172 divideint  1    -100       -> -0
-dvix173 divideint  1    -1000      -> -0
-dvix174 divideint  1    -10000     -> -0
-dvix175 divideint  1    -100000    -> -0
-dvix176 divideint  1    -1000000   -> -0
-dvix177 divideint  1    -10000000  -> -0
-dvix178 divideint  1    -100000000 -> -0
-dvix180 divideint -1     1         -> -1
-dvix181 divideint -1     10        -> -0
-dvix182 divideint -1     100       -> -0
-dvix183 divideint -1     1000      -> -0
-dvix184 divideint -1     10000     -> -0
-dvix185 divideint -1     100000    -> -0
-dvix186 divideint -1     1000000   -> -0
-dvix187 divideint -1     10000000  -> -0
-dvix188 divideint -1     100000000 -> -0
-dvix190 divideint -1    -1         ->  1
-dvix191 divideint -1    -10        ->  0
-dvix192 divideint -1    -100       ->  0
-dvix193 divideint -1    -1000      ->  0
-dvix194 divideint -1    -10000     ->  0
-dvix195 divideint -1    -100000    ->  0
-dvix196 divideint -1    -1000000   ->  0
-dvix197 divideint -1    -10000000  ->  0
-dvix198 divideint -1    -100000000 ->  0
-
--- some long operand cases here
-dvix070 divideint  999999999     1  ->  999999999
-dvix071 divideint  999999999.4   1  ->  999999999
-dvix072 divideint  999999999.5   1  ->  999999999
-dvix073 divideint  999999999.9   1  ->  999999999
-dvix074 divideint  999999999.999 1  ->  999999999
-precision: 6
-dvix080 divideint  999999999     1  ->  NaN Division_impossible
-dvix081 divideint  99999999      1  ->  NaN Division_impossible
-dvix082 divideint  9999999       1  ->  NaN Division_impossible
-dvix083 divideint  999999        1  ->  999999
-dvix084 divideint  99999         1  ->  99999
-dvix085 divideint  9999          1  ->  9999
-dvix086 divideint  999           1  ->  999
-dvix087 divideint  99            1  ->  99
-dvix088 divideint  9             1  ->  9
-
-precision: 9
-dvix090 divideint  0.            1    ->  0
-dvix091 divideint  .0            1    ->  0
-dvix092 divideint  0.00          1    ->  0
-dvix093 divideint  0.00E+9       1    ->  0
-dvix094 divideint  0.0000E-50    1    ->  0
-
-dvix100 divideint  1  1   -> 1
-dvix101 divideint  1  2   -> 0
-dvix102 divideint  1  3   -> 0
-dvix103 divideint  1  4   -> 0
-dvix104 divideint  1  5   -> 0
-dvix105 divideint  1  6   -> 0
-dvix106 divideint  1  7   -> 0
-dvix107 divideint  1  8   -> 0
-dvix108 divideint  1  9   -> 0
-dvix109 divideint  1  10  -> 0
-dvix110 divideint  1  1   -> 1
-dvix111 divideint  2  1   -> 2
-dvix112 divideint  3  1   -> 3
-dvix113 divideint  4  1   -> 4
-dvix114 divideint  5  1   -> 5
-dvix115 divideint  6  1   -> 6
-dvix116 divideint  7  1   -> 7
-dvix117 divideint  8  1   -> 8
-dvix118 divideint  9  1   -> 9
-dvix119 divideint  10 1   -> 10
-
--- from DiagBigDecimal
-dvix131 divideint  101.3   1     ->  101
-dvix132 divideint  101.0   1     ->  101
-dvix133 divideint  101.3   3     ->  33
-dvix134 divideint  101.0   3     ->  33
-dvix135 divideint  2.4     1     ->  2
-dvix136 divideint  2.400   1     ->  2
-dvix137 divideint  18      18    ->  1
-dvix138 divideint  1120    1000  ->  1
-dvix139 divideint  2.4     2     ->  1
-dvix140 divideint  2.400   2     ->  1
-dvix141 divideint  0.5     2.000 ->  0
-dvix142 divideint  8.005   7     ->  1
-dvix143 divideint  5       2     ->  2
-dvix144 divideint  0       2     ->  0
-dvix145 divideint  0.00    2     ->  0
-
--- Others
-dvix150 divideint  12345  4.999  ->  2469
-dvix151 divideint  12345  4.99   ->  2473
-dvix152 divideint  12345  4.9    ->  2519
-dvix153 divideint  12345  5      ->  2469
-dvix154 divideint  12345  5.1    ->  2420
-dvix155 divideint  12345  5.01   ->  2464
-dvix156 divideint  12345  5.001  ->  2468
-dvix157 divideint    101  7.6    ->  13
-
--- Various flavours of divideint by 0
-maxexponent: 999999999
-minexponent: -999999999
-dvix201 divideint  0      0   -> NaN Division_undefined
-dvix202 divideint  0.0E5  0   -> NaN Division_undefined
-dvix203 divideint  0.000  0   -> NaN Division_undefined
-dvix204 divideint  0.0001 0   -> Infinity Division_by_zero
-dvix205 divideint  0.01   0   -> Infinity Division_by_zero
-dvix206 divideint  0.1    0   -> Infinity Division_by_zero
-dvix207 divideint  1      0   -> Infinity Division_by_zero
-dvix208 divideint  1      0.0 -> Infinity Division_by_zero
-dvix209 divideint 10      0.0 -> Infinity Division_by_zero
-dvix210 divideint 1E+100  0.0 -> Infinity Division_by_zero
-dvix211 divideint 1E+1000 0   -> Infinity Division_by_zero
-dvix214 divideint  -0.0001 0   -> -Infinity Division_by_zero
-dvix215 divideint  -0.01   0   -> -Infinity Division_by_zero
-dvix216 divideint  -0.1    0   -> -Infinity Division_by_zero
-dvix217 divideint  -1      0   -> -Infinity Division_by_zero
-dvix218 divideint  -1      0.0 -> -Infinity Division_by_zero
-dvix219 divideint -10      0.0 -> -Infinity Division_by_zero
-dvix220 divideint -1E+100  0.0 -> -Infinity Division_by_zero
-dvix221 divideint -1E+1000 0   -> -Infinity Division_by_zero
-
--- test some cases that are close to exponent overflow
-maxexponent: 999999999
-minexponent: -999999999
-dvix270 divideint 1 1e999999999    -> 0
-dvix271 divideint 1 0.9e999999999  -> 0
-dvix272 divideint 1 0.99e999999999 -> 0
-dvix273 divideint 1 0.999999999e999999999 -> 0
-dvix274 divideint 9e999999999    1       -> NaN Division_impossible
-dvix275 divideint 9.9e999999999  1       -> NaN Division_impossible
-dvix276 divideint 9.99e999999999 1       -> NaN Division_impossible
-dvix277 divideint 9.99999999e999999999 1 -> NaN Division_impossible
-
-dvix280 divideint 0.1 9e-999999999       -> NaN Division_impossible
-dvix281 divideint 0.1 99e-999999999      -> NaN Division_impossible
-dvix282 divideint 0.1 999e-999999999     -> NaN Division_impossible
-
-dvix283 divideint 0.1 9e-999999998       -> NaN Division_impossible
-dvix284 divideint 0.1 99e-999999998      -> NaN Division_impossible
-dvix285 divideint 0.1 999e-999999998     -> NaN Division_impossible
-dvix286 divideint 0.1 999e-999999997     -> NaN Division_impossible
-dvix287 divideint 0.1 9999e-999999997    -> NaN Division_impossible
-dvix288 divideint 0.1 99999e-999999997   -> NaN Division_impossible
-
--- GD edge cases: lhs smaller than rhs but more digits
-dvix301  divideint  0.9      2      ->  0
-dvix302  divideint  0.9      2.0    ->  0
-dvix303  divideint  0.9      2.1    ->  0
-dvix304  divideint  0.9      2.00   ->  0
-dvix305  divideint  0.9      2.01   ->  0
-dvix306  divideint  0.12     1      ->  0
-dvix307  divideint  0.12     1.0    ->  0
-dvix308  divideint  0.12     1.00   ->  0
-dvix309  divideint  0.12     1.0    ->  0
-dvix310  divideint  0.12     1.00   ->  0
-dvix311  divideint  0.12     2      ->  0
-dvix312  divideint  0.12     2.0    ->  0
-dvix313  divideint  0.12     2.1    ->  0
-dvix314  divideint  0.12     2.00   ->  0
-dvix315  divideint  0.12     2.01   ->  0
-
--- overflow and underflow tests [from divide]
-maxexponent: 999999999
-minexponent: -999999999
-dvix330 divideint +1.23456789012345E-0 9E+999999999    -> 0
-dvix331 divideint 9E+999999999 +0.23456789012345E-0 -> NaN Division_impossible
-dvix332 divideint +0.100 9E+999999999    -> 0
-dvix333 divideint 9E-999999999 +9.100    -> 0
-dvix335 divideint -1.23456789012345E-0 9E+999999999    -> -0
-dvix336 divideint 9E+999999999 -0.83456789012345E-0 -> NaN Division_impossible
-dvix337 divideint -0.100 9E+999999999    -> -0
-dvix338 divideint 9E-999999999 -9.100    -> -0
-
--- long operand checks
-maxexponent: 999
-minexponent: -999
-precision: 9
-dvix401 divideint 12345678000 100 -> 123456780
-dvix402 divideint 1 12345678000   -> 0
-dvix403 divideint 1234567800  10  -> 123456780
-dvix404 divideint 1 1234567800    -> 0
-dvix405 divideint 1234567890  10  -> 123456789
-dvix406 divideint 1 1234567890    -> 0
-dvix407 divideint 1234567891  10  -> 123456789
-dvix408 divideint 1 1234567891    -> 0
-dvix409 divideint 12345678901 100 -> 123456789
-dvix410 divideint 1 12345678901   -> 0
-dvix411 divideint 1234567896  10  -> 123456789
-dvix412 divideint 1 1234567896    -> 0
-dvix413 divideint 12345678948 100 -> 123456789
-dvix414 divideint 12345678949 100 -> 123456789
-dvix415 divideint 12345678950 100 -> 123456789
-dvix416 divideint 12345678951 100 -> 123456789
-dvix417 divideint 12345678999 100 -> 123456789
-
-precision: 15
-dvix441 divideint 12345678000 1 -> 12345678000
-dvix442 divideint 1 12345678000 -> 0
-dvix443 divideint 1234567800  1 -> 1234567800
-dvix444 divideint 1 1234567800  -> 0
-dvix445 divideint 1234567890  1 -> 1234567890
-dvix446 divideint 1 1234567890  -> 0
-dvix447 divideint 1234567891  1 -> 1234567891
-dvix448 divideint 1 1234567891  -> 0
-dvix449 divideint 12345678901 1 -> 12345678901
-dvix450 divideint 1 12345678901 -> 0
-dvix451 divideint 1234567896  1 -> 1234567896
-dvix452 divideint 1 1234567896  -> 0
-
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minexponent: -999
-
--- more zeros, etc.
-dvix531 divideint 5.00 1E-3    -> 5000
-dvix532 divideint 00.00 0.000  -> NaN Division_undefined
-dvix533 divideint 00.00 0E-3   -> NaN Division_undefined
-dvix534 divideint  0    -0     -> NaN Division_undefined
-dvix535 divideint -0     0     -> NaN Division_undefined
-dvix536 divideint -0    -0     -> NaN Division_undefined
-
-dvix541 divideint  0    -1     -> -0
-dvix542 divideint -0    -1     ->  0
-dvix543 divideint  0     1     ->  0
-dvix544 divideint -0     1     -> -0
-dvix545 divideint -1     0     -> -Infinity Division_by_zero
-dvix546 divideint -1    -0     ->  Infinity Division_by_zero
-dvix547 divideint  1     0     ->  Infinity Division_by_zero
-dvix548 divideint  1    -0     -> -Infinity Division_by_zero
-
-dvix551 divideint  0.0  -1     -> -0
-dvix552 divideint -0.0  -1     ->  0
-dvix553 divideint  0.0   1     ->  0
-dvix554 divideint -0.0   1     -> -0
-dvix555 divideint -1.0   0     -> -Infinity Division_by_zero
-dvix556 divideint -1.0  -0     ->  Infinity Division_by_zero
-dvix557 divideint  1.0   0     ->  Infinity Division_by_zero
-dvix558 divideint  1.0  -0     -> -Infinity Division_by_zero
-
-dvix561 divideint  0    -1.0   -> -0
-dvix562 divideint -0    -1.0   ->  0
-dvix563 divideint  0     1.0   ->  0
-dvix564 divideint -0     1.0   -> -0
-dvix565 divideint -1     0.0   -> -Infinity Division_by_zero
-dvix566 divideint -1    -0.0   ->  Infinity Division_by_zero
-dvix567 divideint  1     0.0   ->  Infinity Division_by_zero
-dvix568 divideint  1    -0.0   -> -Infinity Division_by_zero
-
-dvix571 divideint  0.0  -1.0   -> -0
-dvix572 divideint -0.0  -1.0   ->  0
-dvix573 divideint  0.0   1.0   ->  0
-dvix574 divideint -0.0   1.0   -> -0
-dvix575 divideint -1.0   0.0   -> -Infinity Division_by_zero
-dvix576 divideint -1.0  -0.0   ->  Infinity Division_by_zero
-dvix577 divideint  1.0   0.0   ->  Infinity Division_by_zero
-dvix578 divideint  1.0  -0.0   -> -Infinity Division_by_zero
-
--- Specials
-dvix580 divideint  Inf  -Inf   ->  NaN Invalid_operation
-dvix581 divideint  Inf  -1000  -> -Infinity
-dvix582 divideint  Inf  -1     -> -Infinity
-dvix583 divideint  Inf  -0     -> -Infinity
-dvix584 divideint  Inf   0     ->  Infinity
-dvix585 divideint  Inf   1     ->  Infinity
-dvix586 divideint  Inf   1000  ->  Infinity
-dvix587 divideint  Inf   Inf   ->  NaN Invalid_operation
-dvix588 divideint -1000  Inf   -> -0
-dvix589 divideint -Inf   Inf   ->  NaN Invalid_operation
-dvix590 divideint -1     Inf   -> -0
-dvix591 divideint -0     Inf   -> -0
-dvix592 divideint  0     Inf   ->  0
-dvix593 divideint  1     Inf   ->  0
-dvix594 divideint  1000  Inf   ->  0
-dvix595 divideint  Inf   Inf   ->  NaN Invalid_operation
-
-dvix600 divideint -Inf  -Inf   ->  NaN Invalid_operation
-dvix601 divideint -Inf  -1000  ->  Infinity
-dvix602 divideint -Inf  -1     ->  Infinity
-dvix603 divideint -Inf  -0     ->  Infinity
-dvix604 divideint -Inf   0     -> -Infinity
-dvix605 divideint -Inf   1     -> -Infinity
-dvix606 divideint -Inf   1000  -> -Infinity
-dvix607 divideint -Inf   Inf   ->  NaN Invalid_operation
-dvix608 divideint -1000  Inf   -> -0
-dvix609 divideint -Inf  -Inf   ->  NaN Invalid_operation
-dvix610 divideint -1    -Inf   ->  0
-dvix611 divideint -0    -Inf   ->  0
-dvix612 divideint  0    -Inf   -> -0
-dvix613 divideint  1    -Inf   -> -0
-dvix614 divideint  1000 -Inf   -> -0
-dvix615 divideint  Inf  -Inf   ->  NaN Invalid_operation
-
-dvix621 divideint  NaN -Inf    ->  NaN
-dvix622 divideint  NaN -1000   ->  NaN
-dvix623 divideint  NaN -1      ->  NaN
-dvix624 divideint  NaN -0      ->  NaN
-dvix625 divideint  NaN  0      ->  NaN
-dvix626 divideint  NaN  1      ->  NaN
-dvix627 divideint  NaN  1000   ->  NaN
-dvix628 divideint  NaN  Inf    ->  NaN
-dvix629 divideint  NaN  NaN    ->  NaN
-dvix630 divideint -Inf  NaN    ->  NaN
-dvix631 divideint -1000 NaN    ->  NaN
-dvix632 divideint -1    NaN    ->  NaN
-dvix633 divideint -0    NaN    ->  NaN
-dvix634 divideint  0    NaN    ->  NaN
-dvix635 divideint  1    NaN    ->  NaN
-dvix636 divideint  1000 NaN    ->  NaN
-dvix637 divideint  Inf  NaN    ->  NaN
-
-dvix641 divideint  sNaN -Inf   ->  NaN  Invalid_operation
-dvix642 divideint  sNaN -1000  ->  NaN  Invalid_operation
-dvix643 divideint  sNaN -1     ->  NaN  Invalid_operation
-dvix644 divideint  sNaN -0     ->  NaN  Invalid_operation
-dvix645 divideint  sNaN  0     ->  NaN  Invalid_operation
-dvix646 divideint  sNaN  1     ->  NaN  Invalid_operation
-dvix647 divideint  sNaN  1000  ->  NaN  Invalid_operation
-dvix648 divideint  sNaN  NaN   ->  NaN  Invalid_operation
-dvix649 divideint  sNaN sNaN   ->  NaN  Invalid_operation
-dvix650 divideint  NaN  sNaN   ->  NaN  Invalid_operation
-dvix651 divideint -Inf  sNaN   ->  NaN  Invalid_operation
-dvix652 divideint -1000 sNaN   ->  NaN  Invalid_operation
-dvix653 divideint -1    sNaN   ->  NaN  Invalid_operation
-dvix654 divideint -0    sNaN   ->  NaN  Invalid_operation
-dvix655 divideint  0    sNaN   ->  NaN  Invalid_operation
-dvix656 divideint  1    sNaN   ->  NaN  Invalid_operation
-dvix657 divideint  1000 sNaN   ->  NaN  Invalid_operation
-dvix658 divideint  Inf  sNaN   ->  NaN  Invalid_operation
-dvix659 divideint  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dvix661 divideint  NaN9 -Inf   ->  NaN9
-dvix662 divideint  NaN8  1000  ->  NaN8
-dvix663 divideint  NaN7  Inf   ->  NaN7
-dvix664 divideint -NaN6  NaN5  -> -NaN6
-dvix665 divideint -Inf   NaN4  ->  NaN4
-dvix666 divideint -1000  NaN3  ->  NaN3
-dvix667 divideint  Inf  -NaN2  -> -NaN2
-
-dvix671 divideint -sNaN99 -Inf    -> -NaN99 Invalid_operation
-dvix672 divideint  sNaN98 -1      ->  NaN98 Invalid_operation
-dvix673 divideint  sNaN97  NaN    ->  NaN97 Invalid_operation
-dvix674 divideint  sNaN96 sNaN94  ->  NaN96 Invalid_operation
-dvix675 divideint  NaN95  sNaN93  ->  NaN93 Invalid_operation
-dvix676 divideint -Inf    sNaN92  ->  NaN92 Invalid_operation
-dvix677 divideint  0      sNaN91  ->  NaN91 Invalid_operation
-dvix678 divideint  Inf   -sNaN90  -> -NaN90 Invalid_operation
-dvix679 divideint  NaN    sNaN89  ->  NaN89 Invalid_operation
-
--- some long operand cases again
-precision: 8
-dvix710 divideint  100000001     1  ->  NaN Division_impossible
-dvix711 divideint  100000000.4   1  ->  NaN Division_impossible
-dvix712 divideint  100000000.5   1  ->  NaN Division_impossible
-dvix713 divideint  100000000.9   1  ->  NaN Division_impossible
-dvix714 divideint  100000000.999 1  ->  NaN Division_impossible
-precision: 6
-dvix720 divideint  100000000     1  ->  NaN Division_impossible
-dvix721 divideint  10000000      1  ->  NaN Division_impossible
-dvix722 divideint  1000000       1  ->  NaN Division_impossible
-dvix723 divideint  100000        1  ->  100000
-dvix724 divideint  10000         1  ->  10000
-dvix725 divideint  1000          1  ->  1000
-dvix726 divideint  100           1  ->  100
-dvix727 divideint  10            1  ->  10
-dvix728 divideint  1             1  ->  1
-dvix729 divideint  1            10  ->  0
-
-precision: 9
-maxexponent: 999999999
-minexponent: -999999999
-dvix732 divideint 1 0.99e999999999 -> 0
-dvix733 divideint 1 0.999999999e999999999 -> 0
-dvix734 divideint 9e999999999    1       -> NaN Division_impossible
-dvix735 divideint 9.9e999999999  1       -> NaN Division_impossible
-dvix736 divideint 9.99e999999999 1       -> NaN Division_impossible
-dvix737 divideint 9.99999999e999999999 1 -> NaN Division_impossible
-
-dvix740 divideint 0.1 9e-999999999       -> NaN Division_impossible
-dvix741 divideint 0.1 99e-999999999      -> NaN Division_impossible
-dvix742 divideint 0.1 999e-999999999     -> NaN Division_impossible
-
-dvix743 divideint 0.1 9e-999999998       -> NaN Division_impossible
-dvix744 divideint 0.1 99e-999999998      -> NaN Division_impossible
-dvix745 divideint 0.1 999e-999999998     -> NaN Division_impossible
-dvix746 divideint 0.1 999e-999999997     -> NaN Division_impossible
-dvix747 divideint 0.1 9999e-999999997    -> NaN Division_impossible
-dvix748 divideint 0.1 99999e-999999997   -> NaN Division_impossible
-
-
--- Null tests
-dvix900 divideint  10  # -> NaN Invalid_operation
-dvix901 divideint   # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAbs.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAbs.decTest
deleted file mode 100644
index f9119a9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAbs.decTest
+++ /dev/null
@@ -1,126 +0,0 @@
-------------------------------------------------------------------------
--- dqAbs.decTest -- decQuad absolute value, heeding sNaN              --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
-dqabs001 abs '1'      -> '1'
-dqabs002 abs '-1'     -> '1'
-dqabs003 abs '1.00'   -> '1.00'
-dqabs004 abs '-1.00'  -> '1.00'
-dqabs005 abs '0'      -> '0'
-dqabs006 abs '0.00'   -> '0.00'
-dqabs007 abs '00.0'   -> '0.0'
-dqabs008 abs '00.00'  -> '0.00'
-dqabs009 abs '00'     -> '0'
-
-dqabs010 abs '-2'     -> '2'
-dqabs011 abs '2'      -> '2'
-dqabs012 abs '-2.00'  -> '2.00'
-dqabs013 abs '2.00'   -> '2.00'
-dqabs014 abs '-0'     -> '0'
-dqabs015 abs '-0.00'  -> '0.00'
-dqabs016 abs '-00.0'  -> '0.0'
-dqabs017 abs '-00.00' -> '0.00'
-dqabs018 abs '-00'    -> '0'
-
-dqabs020 abs '-2000000' -> '2000000'
-dqabs021 abs '2000000'  -> '2000000'
-
-dqabs030 abs '+0.1'            -> '0.1'
-dqabs031 abs '-0.1'            -> '0.1'
-dqabs032 abs '+0.01'           -> '0.01'
-dqabs033 abs '-0.01'           -> '0.01'
-dqabs034 abs '+0.001'          -> '0.001'
-dqabs035 abs '-0.001'          -> '0.001'
-dqabs036 abs '+0.000001'       -> '0.000001'
-dqabs037 abs '-0.000001'       -> '0.000001'
-dqabs038 abs '+0.000000000001' -> '1E-12'
-dqabs039 abs '-0.000000000001' -> '1E-12'
-
--- examples from decArith
-dqabs040 abs '2.1'     ->  '2.1'
-dqabs041 abs '-100'    ->  '100'
-dqabs042 abs '101.5'   ->  '101.5'
-dqabs043 abs '-101.5'  ->  '101.5'
-
--- more fixed, potential LHS swaps/overlays if done by subtract 0
-dqabs060 abs '-56267E-10'  -> '0.0000056267'
-dqabs061 abs '-56267E-5'   -> '0.56267'
-dqabs062 abs '-56267E-2'   -> '562.67'
-dqabs063 abs '-56267E-1'   -> '5626.7'
-dqabs065 abs '-56267E-0'   -> '56267'
-
--- subnormals and underflow
-
--- long operand tests
-dqabs321 abs 1234567890123456  -> 1234567890123456
-dqabs322 abs 12345678000  -> 12345678000
-dqabs323 abs 1234567800   -> 1234567800
-dqabs324 abs 1234567890   -> 1234567890
-dqabs325 abs 1234567891   -> 1234567891
-dqabs326 abs 12345678901  -> 12345678901
-dqabs327 abs 1234567896   -> 1234567896
-
--- zeros
-dqabs111 abs          0   -> 0
-dqabs112 abs         -0   -> 0
-dqabs113 abs       0E+6   -> 0E+6
-dqabs114 abs      -0E+6   -> 0E+6
-dqabs115 abs     0.0000   -> 0.0000
-dqabs116 abs    -0.0000   -> 0.0000
-dqabs117 abs      0E-141  -> 0E-141
-dqabs118 abs     -0E-141  -> 0E-141
-
--- full coefficients, alternating bits
-dqabs121 abs   2682682682682682682682682682682682    ->  2682682682682682682682682682682682
-dqabs122 abs  -2682682682682682682682682682682682    ->  2682682682682682682682682682682682
-dqabs123 abs   1341341341341341341341341341341341    ->  1341341341341341341341341341341341
-dqabs124 abs  -1341341341341341341341341341341341    ->  1341341341341341341341341341341341
-
--- Nmax, Nmin, Ntiny
-dqabs131 abs  9.999999999999999999999999999999999E+6144   ->  9.999999999999999999999999999999999E+6144
-dqabs132 abs  1E-6143                                     ->  1E-6143
-dqabs133 abs  1.000000000000000000000000000000000E-6143   ->  1.000000000000000000000000000000000E-6143
-dqabs134 abs  1E-6176                                     ->  1E-6176 Subnormal
-
-dqabs135 abs  -1E-6176                                    ->  1E-6176 Subnormal
-dqabs136 abs  -1.000000000000000000000000000000000E-6143  ->  1.000000000000000000000000000000000E-6143
-dqabs137 abs  -1E-6143                                    ->  1E-6143
-dqabs138 abs  -9.999999999999999999999999999999999E+6144  ->  9.999999999999999999999999999999999E+6144
-
--- specials
-dqabs520 abs 'Inf'    -> 'Infinity'
-dqabs521 abs '-Inf'   -> 'Infinity'
-dqabs522 abs   NaN    ->  NaN
-dqabs523 abs  sNaN    ->  NaN   Invalid_operation
-dqabs524 abs   NaN22  ->  NaN22
-dqabs525 abs  sNaN33  ->  NaN33 Invalid_operation
-dqabs526 abs  -NaN22  -> -NaN22
-dqabs527 abs -sNaN33  -> -NaN33 Invalid_operation
-
--- Null tests
-dqabs900 abs  # -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAdd.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAdd.decTest
deleted file mode 100644
index b3ad892..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAdd.decTest
+++ /dev/null
@@ -1,1215 +0,0 @@
-------------------------------------------------------------------------
--- dqAdd.decTest -- decQuad addition                                  --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This set of tests are for decQuads only; all arguments are
--- representable in a decQuad
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- [first group are 'quick confidence check']
-dqadd001 add 1       1       ->  2
-dqadd002 add 2       3       ->  5
-dqadd003 add '5.75'  '3.3'   ->  9.05
-dqadd004 add '5'     '-3'    ->  2
-dqadd005 add '-5'    '-3'    ->  -8
-dqadd006 add '-7'    '2.5'   ->  -4.5
-dqadd007 add '0.7'   '0.3'   ->  1.0
-dqadd008 add '1.25'  '1.25'  ->  2.50
-dqadd009 add '1.23456789'  '1.00000000' -> '2.23456789'
-dqadd010 add '1.23456789'  '1.00000011' -> '2.23456800'
-
---             1234567890123456      1234567890123456
-dqadd011 add '0.4444444444444444444444444444444446'  '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Inexact Rounded
-dqadd012 add '0.4444444444444444444444444444444445'  '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Rounded
-dqadd013 add '0.4444444444444444444444444444444444'  '0.5555555555555555555555555555555555' -> '0.9999999999999999999999999999999999'
-dqadd014 add   '4444444444444444444444444444444444' '0.49'   -> '4444444444444444444444444444444444' Inexact Rounded
-dqadd015 add   '4444444444444444444444444444444444' '0.499'  -> '4444444444444444444444444444444444' Inexact Rounded
-dqadd016 add   '4444444444444444444444444444444444' '0.4999' -> '4444444444444444444444444444444444' Inexact Rounded
-dqadd017 add   '4444444444444444444444444444444444' '0.5000' -> '4444444444444444444444444444444444' Inexact Rounded
-dqadd018 add   '4444444444444444444444444444444444' '0.5001' -> '4444444444444444444444444444444445' Inexact Rounded
-dqadd019 add   '4444444444444444444444444444444444' '0.501'  -> '4444444444444444444444444444444445' Inexact Rounded
-dqadd020 add   '4444444444444444444444444444444444' '0.51'   -> '4444444444444444444444444444444445' Inexact Rounded
-
-dqadd021 add 0 1 -> 1
-dqadd022 add 1 1 -> 2
-dqadd023 add 2 1 -> 3
-dqadd024 add 3 1 -> 4
-dqadd025 add 4 1 -> 5
-dqadd026 add 5 1 -> 6
-dqadd027 add 6 1 -> 7
-dqadd028 add 7 1 -> 8
-dqadd029 add 8 1 -> 9
-dqadd030 add 9 1 -> 10
-
--- some carrying effects
-dqadd031 add '0.9998'  '0.0000' -> '0.9998'
-dqadd032 add '0.9998'  '0.0001' -> '0.9999'
-dqadd033 add '0.9998'  '0.0002' -> '1.0000'
-dqadd034 add '0.9998'  '0.0003' -> '1.0001'
-
-dqadd035 add '70'  '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
-dqadd036 add '700'  '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
-dqadd037 add '7000'  '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
-dqadd038 add '70000'  '10000e+34' -> '1.000000000000000000000000000000001E+38' Inexact Rounded
-dqadd039 add '700000'  '10000e+34' -> '1.000000000000000000000000000000007E+38' Rounded
-
--- symmetry:
-dqadd040 add '10000e+34'  '70' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
-dqadd041 add '10000e+34'  '700' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
-dqadd042 add '10000e+34'  '7000' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
-dqadd044 add '10000e+34'  '70000' -> '1.000000000000000000000000000000001E+38' Inexact Rounded
-dqadd045 add '10000e+34'  '700000' -> '1.000000000000000000000000000000007E+38' Rounded
-
--- same, without rounding
-dqadd046 add '10000e+9'  '7' -> '10000000000007'
-dqadd047 add '10000e+9'  '70' -> '10000000000070'
-dqadd048 add '10000e+9'  '700' -> '10000000000700'
-dqadd049 add '10000e+9'  '7000' -> '10000000007000'
-dqadd050 add '10000e+9'  '70000' -> '10000000070000'
-dqadd051 add '10000e+9'  '700000' -> '10000000700000'
-dqadd052 add '10000e+9'  '7000000' -> '10000007000000'
-
--- examples from decarith
-dqadd053 add '12' '7.00' -> '19.00'
-dqadd054 add '1.3' '-1.07' -> '0.23'
-dqadd055 add '1.3' '-1.30' -> '0.00'
-dqadd056 add '1.3' '-2.07' -> '-0.77'
-dqadd057 add '1E+2' '1E+4' -> '1.01E+4'
-
--- leading zero preservation
-dqadd061 add 1 '0.0001' -> '1.0001'
-dqadd062 add 1 '0.00001' -> '1.00001'
-dqadd063 add 1 '0.000001' -> '1.000001'
-dqadd064 add 1 '0.0000001' -> '1.0000001'
-dqadd065 add 1 '0.00000001' -> '1.00000001'
-
--- some funny zeros [in case of bad signum]
-dqadd070 add 1  0    -> 1
-dqadd071 add 1 0.    -> 1
-dqadd072 add 1  .0   -> 1.0
-dqadd073 add 1 0.0   -> 1.0
-dqadd074 add 1 0.00  -> 1.00
-dqadd075 add  0  1   -> 1
-dqadd076 add 0.  1   -> 1
-dqadd077 add  .0 1   -> 1.0
-dqadd078 add 0.0 1   -> 1.0
-dqadd079 add 0.00 1  -> 1.00
-
--- some carries
-dqadd080 add 999999998 1  -> 999999999
-dqadd081 add 999999999 1  -> 1000000000
-dqadd082 add  99999999 1  -> 100000000
-dqadd083 add   9999999 1  -> 10000000
-dqadd084 add    999999 1  -> 1000000
-dqadd085 add     99999 1  -> 100000
-dqadd086 add      9999 1  -> 10000
-dqadd087 add       999 1  -> 1000
-dqadd088 add        99 1  -> 100
-dqadd089 add         9 1  -> 10
-
-
--- more LHS swaps
-dqadd090 add '-56267E-10'   0 ->  '-0.0000056267'
-dqadd091 add '-56267E-6'    0 ->  '-0.056267'
-dqadd092 add '-56267E-5'    0 ->  '-0.56267'
-dqadd093 add '-56267E-4'    0 ->  '-5.6267'
-dqadd094 add '-56267E-3'    0 ->  '-56.267'
-dqadd095 add '-56267E-2'    0 ->  '-562.67'
-dqadd096 add '-56267E-1'    0 ->  '-5626.7'
-dqadd097 add '-56267E-0'    0 ->  '-56267'
-dqadd098 add '-5E-10'       0 ->  '-5E-10'
-dqadd099 add '-5E-7'        0 ->  '-5E-7'
-dqadd100 add '-5E-6'        0 ->  '-0.000005'
-dqadd101 add '-5E-5'        0 ->  '-0.00005'
-dqadd102 add '-5E-4'        0 ->  '-0.0005'
-dqadd103 add '-5E-1'        0 ->  '-0.5'
-dqadd104 add '-5E0'         0 ->  '-5'
-dqadd105 add '-5E1'         0 ->  '-50'
-dqadd106 add '-5E5'         0 ->  '-500000'
-dqadd107 add '-5E33'        0 ->  '-5000000000000000000000000000000000'
-dqadd108 add '-5E34'        0 ->  '-5.000000000000000000000000000000000E+34'  Rounded
-dqadd109 add '-5E35'        0 ->  '-5.000000000000000000000000000000000E+35'  Rounded
-dqadd110 add '-5E36'        0 ->  '-5.000000000000000000000000000000000E+36'  Rounded
-dqadd111 add '-5E100'       0 ->  '-5.000000000000000000000000000000000E+100' Rounded
-
--- more RHS swaps
-dqadd113 add 0  '-56267E-10' ->  '-0.0000056267'
-dqadd114 add 0  '-56267E-6'  ->  '-0.056267'
-dqadd116 add 0  '-56267E-5'  ->  '-0.56267'
-dqadd117 add 0  '-56267E-4'  ->  '-5.6267'
-dqadd119 add 0  '-56267E-3'  ->  '-56.267'
-dqadd120 add 0  '-56267E-2'  ->  '-562.67'
-dqadd121 add 0  '-56267E-1'  ->  '-5626.7'
-dqadd122 add 0  '-56267E-0'  ->  '-56267'
-dqadd123 add 0  '-5E-10'     ->  '-5E-10'
-dqadd124 add 0  '-5E-7'      ->  '-5E-7'
-dqadd125 add 0  '-5E-6'      ->  '-0.000005'
-dqadd126 add 0  '-5E-5'      ->  '-0.00005'
-dqadd127 add 0  '-5E-4'      ->  '-0.0005'
-dqadd128 add 0  '-5E-1'      ->  '-0.5'
-dqadd129 add 0  '-5E0'       ->  '-5'
-dqadd130 add 0  '-5E1'       ->  '-50'
-dqadd131 add 0  '-5E5'       ->  '-500000'
-dqadd132 add 0  '-5E33'      ->  '-5000000000000000000000000000000000'
-dqadd133 add 0  '-5E34'      ->  '-5.000000000000000000000000000000000E+34'   Rounded
-dqadd134 add 0  '-5E35'      ->  '-5.000000000000000000000000000000000E+35'   Rounded
-dqadd135 add 0  '-5E36'      ->  '-5.000000000000000000000000000000000E+36'   Rounded
-dqadd136 add 0  '-5E100'     ->  '-5.000000000000000000000000000000000E+100'  Rounded
-
--- related
-dqadd137 add  1  '0E-39'      ->  '1.000000000000000000000000000000000'  Rounded
-dqadd138 add -1  '0E-39'      ->  '-1.000000000000000000000000000000000' Rounded
-dqadd139 add '0E-39' 1        ->  '1.000000000000000000000000000000000'  Rounded
-dqadd140 add '0E-39' -1       ->  '-1.000000000000000000000000000000000' Rounded
-dqadd141 add 1E+29   0.0000   ->  '100000000000000000000000000000.0000'
-dqadd142 add 1E+29   0.00000  ->  '100000000000000000000000000000.0000'  Rounded
-dqadd143 add 0.000   1E+30    ->  '1000000000000000000000000000000.000'
-dqadd144 add 0.0000  1E+30    ->  '1000000000000000000000000000000.000'  Rounded
-
--- [some of the next group are really constructor tests]
-dqadd146 add '00.0'  0       ->  '0.0'
-dqadd147 add '0.00'  0       ->  '0.00'
-dqadd148 add  0      '0.00'  ->  '0.00'
-dqadd149 add  0      '00.0'  ->  '0.0'
-dqadd150 add '00.0'  '0.00'  ->  '0.00'
-dqadd151 add '0.00'  '00.0'  ->  '0.00'
-dqadd152 add '3'     '.3'    ->  '3.3'
-dqadd153 add '3.'    '.3'    ->  '3.3'
-dqadd154 add '3.0'   '.3'    ->  '3.3'
-dqadd155 add '3.00'  '.3'    ->  '3.30'
-dqadd156 add '3'     '3'     ->  '6'
-dqadd157 add '3'     '+3'    ->  '6'
-dqadd158 add '3'     '-3'    ->  '0'
-dqadd159 add '0.3'   '-0.3'  ->  '0.0'
-dqadd160 add '0.03'  '-0.03' ->  '0.00'
-
--- try borderline precision, with carries, etc.
-dqadd161 add '1E+12' '-1'    -> '999999999999'
-dqadd162 add '1E+12'  '1.11' -> '1000000000001.11'
-dqadd163 add '1.11'  '1E+12' -> '1000000000001.11'
-dqadd164 add '-1'    '1E+12' -> '999999999999'
-dqadd165 add '7E+12' '-1'    -> '6999999999999'
-dqadd166 add '7E+12'  '1.11' -> '7000000000001.11'
-dqadd167 add '1.11'  '7E+12' -> '7000000000001.11'
-dqadd168 add '-1'    '7E+12' -> '6999999999999'
-
-rounding: half_up
-dqadd170 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555567' -> '5.000000000000000000000000000000001' Inexact Rounded
-dqadd171 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555566' -> '5.000000000000000000000000000000001' Inexact Rounded
-dqadd172 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555565' -> '5.000000000000000000000000000000001' Inexact Rounded
-dqadd173 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555564' -> '5.000000000000000000000000000000000' Inexact Rounded
-dqadd174 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555553' -> '4.999999999999999999999999999999999' Inexact Rounded
-dqadd175 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555552' -> '4.999999999999999999999999999999999' Inexact Rounded
-dqadd176 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555551' -> '4.999999999999999999999999999999999' Inexact Rounded
-dqadd177 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555550' -> '4.999999999999999999999999999999999' Rounded
-dqadd178 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555545' -> '4.999999999999999999999999999999999' Inexact Rounded
-dqadd179 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555544' -> '4.999999999999999999999999999999998' Inexact Rounded
-dqadd180 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555543' -> '4.999999999999999999999999999999998' Inexact Rounded
-dqadd181 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555542' -> '4.999999999999999999999999999999998' Inexact Rounded
-dqadd182 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555541' -> '4.999999999999999999999999999999998' Inexact Rounded
-dqadd183 add '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555540' -> '4.999999999999999999999999999999998' Rounded
-
--- and some more, including residue effects and different roundings
-rounding: half_up
-dqadd200 add '1231234567890123456784560123456789' 0             -> '1231234567890123456784560123456789'
-dqadd201 add '1231234567890123456784560123456789' 0.000000001   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd202 add '1231234567890123456784560123456789' 0.000001      -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd203 add '1231234567890123456784560123456789' 0.1           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd204 add '1231234567890123456784560123456789' 0.4           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd205 add '1231234567890123456784560123456789' 0.49          -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd206 add '1231234567890123456784560123456789' 0.499999      -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd207 add '1231234567890123456784560123456789' 0.499999999   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd208 add '1231234567890123456784560123456789' 0.5           -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd209 add '1231234567890123456784560123456789' 0.500000001   -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd210 add '1231234567890123456784560123456789' 0.500001      -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd211 add '1231234567890123456784560123456789' 0.51          -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd212 add '1231234567890123456784560123456789' 0.6           -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd213 add '1231234567890123456784560123456789' 0.9           -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd214 add '1231234567890123456784560123456789' 0.99999       -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd215 add '1231234567890123456784560123456789' 0.999999999   -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd216 add '1231234567890123456784560123456789' 1             -> '1231234567890123456784560123456790'
-dqadd217 add '1231234567890123456784560123456789' 1.000000001   -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd218 add '1231234567890123456784560123456789' 1.00001       -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd219 add '1231234567890123456784560123456789' 1.1           -> '1231234567890123456784560123456790' Inexact Rounded
-
-rounding: half_even
-dqadd220 add '1231234567890123456784560123456789' 0             -> '1231234567890123456784560123456789'
-dqadd221 add '1231234567890123456784560123456789' 0.000000001   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd222 add '1231234567890123456784560123456789' 0.000001      -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd223 add '1231234567890123456784560123456789' 0.1           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd224 add '1231234567890123456784560123456789' 0.4           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd225 add '1231234567890123456784560123456789' 0.49          -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd226 add '1231234567890123456784560123456789' 0.499999      -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd227 add '1231234567890123456784560123456789' 0.499999999   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd228 add '1231234567890123456784560123456789' 0.5           -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd229 add '1231234567890123456784560123456789' 0.500000001   -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd230 add '1231234567890123456784560123456789' 0.500001      -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd231 add '1231234567890123456784560123456789' 0.51          -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd232 add '1231234567890123456784560123456789' 0.6           -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd233 add '1231234567890123456784560123456789' 0.9           -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd234 add '1231234567890123456784560123456789' 0.99999       -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd235 add '1231234567890123456784560123456789' 0.999999999   -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd236 add '1231234567890123456784560123456789' 1             -> '1231234567890123456784560123456790'
-dqadd237 add '1231234567890123456784560123456789' 1.00000001    -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd238 add '1231234567890123456784560123456789' 1.00001       -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd239 add '1231234567890123456784560123456789' 1.1           -> '1231234567890123456784560123456790' Inexact Rounded
--- critical few with even bottom digit...
-dqadd240 add '1231234567890123456784560123456788' 0.499999999   -> '1231234567890123456784560123456788' Inexact Rounded
-dqadd241 add '1231234567890123456784560123456788' 0.5           -> '1231234567890123456784560123456788' Inexact Rounded
-dqadd242 add '1231234567890123456784560123456788' 0.500000001   -> '1231234567890123456784560123456789' Inexact Rounded
-
-rounding: down
-dqadd250 add '1231234567890123456784560123456789' 0             -> '1231234567890123456784560123456789'
-dqadd251 add '1231234567890123456784560123456789' 0.000000001   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd252 add '1231234567890123456784560123456789' 0.000001      -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd253 add '1231234567890123456784560123456789' 0.1           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd254 add '1231234567890123456784560123456789' 0.4           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd255 add '1231234567890123456784560123456789' 0.49          -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd256 add '1231234567890123456784560123456789' 0.499999      -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd257 add '1231234567890123456784560123456789' 0.499999999   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd258 add '1231234567890123456784560123456789' 0.5           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd259 add '1231234567890123456784560123456789' 0.500000001   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd260 add '1231234567890123456784560123456789' 0.500001      -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd261 add '1231234567890123456784560123456789' 0.51          -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd262 add '1231234567890123456784560123456789' 0.6           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd263 add '1231234567890123456784560123456789' 0.9           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd264 add '1231234567890123456784560123456789' 0.99999       -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd265 add '1231234567890123456784560123456789' 0.999999999   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd266 add '1231234567890123456784560123456789' 1             -> '1231234567890123456784560123456790'
-dqadd267 add '1231234567890123456784560123456789' 1.00000001    -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd268 add '1231234567890123456784560123456789' 1.00001       -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd269 add '1231234567890123456784560123456789' 1.1           -> '1231234567890123456784560123456790' Inexact Rounded
-
--- 1 in last place tests
-rounding: half_up
-dqadd301 add  -1   1      ->   0
-dqadd302 add   0   1      ->   1
-dqadd303 add   1   1      ->   2
-dqadd304 add  12   1      ->  13
-dqadd305 add  98   1      ->  99
-dqadd306 add  99   1      -> 100
-dqadd307 add 100   1      -> 101
-dqadd308 add 101   1      -> 102
-dqadd309 add  -1  -1      ->  -2
-dqadd310 add   0  -1      ->  -1
-dqadd311 add   1  -1      ->   0
-dqadd312 add  12  -1      ->  11
-dqadd313 add  98  -1      ->  97
-dqadd314 add  99  -1      ->  98
-dqadd315 add 100  -1      ->  99
-dqadd316 add 101  -1      -> 100
-
-dqadd321 add -0.01  0.01    ->  0.00
-dqadd322 add  0.00  0.01    ->  0.01
-dqadd323 add  0.01  0.01    ->  0.02
-dqadd324 add  0.12  0.01    ->  0.13
-dqadd325 add  0.98  0.01    ->  0.99
-dqadd326 add  0.99  0.01    ->  1.00
-dqadd327 add  1.00  0.01    ->  1.01
-dqadd328 add  1.01  0.01    ->  1.02
-dqadd329 add -0.01 -0.01    -> -0.02
-dqadd330 add  0.00 -0.01    -> -0.01
-dqadd331 add  0.01 -0.01    ->  0.00
-dqadd332 add  0.12 -0.01    ->  0.11
-dqadd333 add  0.98 -0.01    ->  0.97
-dqadd334 add  0.99 -0.01    ->  0.98
-dqadd335 add  1.00 -0.01    ->  0.99
-dqadd336 add  1.01 -0.01    ->  1.00
-
--- some more cases where adding 0 affects the coefficient
-dqadd340 add 1E+3    0    ->         1000
-dqadd341 add 1E+33   0    ->    1000000000000000000000000000000000
-dqadd342 add 1E+34   0    ->   1.000000000000000000000000000000000E+34  Rounded
-dqadd343 add 1E+35   0    ->   1.000000000000000000000000000000000E+35  Rounded
--- which simply follow from these cases ...
-dqadd344 add 1E+3    1    ->         1001
-dqadd345 add 1E+33   1    ->    1000000000000000000000000000000001
-dqadd346 add 1E+34   1    ->   1.000000000000000000000000000000000E+34  Inexact Rounded
-dqadd347 add 1E+35   1    ->   1.000000000000000000000000000000000E+35  Inexact Rounded
-dqadd348 add 1E+3    7    ->         1007
-dqadd349 add 1E+33   7    ->    1000000000000000000000000000000007
-dqadd350 add 1E+34   7    ->   1.000000000000000000000000000000001E+34  Inexact Rounded
-dqadd351 add 1E+35   7    ->   1.000000000000000000000000000000000E+35  Inexact Rounded
-
--- tryzeros cases
-rounding:    half_up
-dqadd360  add 0E+50 10000E+1  -> 1.0000E+5
-dqadd361  add 0E-50 10000E+1  -> 100000.0000000000000000000000000000 Rounded
-dqadd362  add 10000E+1 0E-50  -> 100000.0000000000000000000000000000 Rounded
-dqadd363  add 10000E+1 10000E-50  -> 100000.0000000000000000000000000000 Rounded Inexact
-dqadd364  add 9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0E+6111
---            1 234567890123456789012345678901234
-
--- a curiosity from JSR 13 testing
-rounding:    half_down
-dqadd370 add  999999999999999999999999999999999 815 -> 1000000000000000000000000000000814
-dqadd371 add 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact
-rounding:    half_up
-dqadd372 add  999999999999999999999999999999999 815 -> 1000000000000000000000000000000814
-dqadd373 add 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact
-rounding:    half_even
-dqadd374 add  999999999999999999999999999999999 815 -> 1000000000000000000000000000000814
-dqadd375 add 9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact
-
--- ulp replacement tests
-dqadd400 add   1   77e-32      ->  1.00000000000000000000000000000077
-dqadd401 add   1   77e-33      ->  1.000000000000000000000000000000077
-dqadd402 add   1   77e-34      ->  1.000000000000000000000000000000008 Inexact Rounded
-dqadd403 add   1   77e-35      ->  1.000000000000000000000000000000001 Inexact Rounded
-dqadd404 add   1   77e-36      ->  1.000000000000000000000000000000000 Inexact Rounded
-dqadd405 add   1   77e-37      ->  1.000000000000000000000000000000000 Inexact Rounded
-dqadd406 add   1   77e-299     ->  1.000000000000000000000000000000000 Inexact Rounded
-
-dqadd410 add  10   77e-32      ->  10.00000000000000000000000000000077
-dqadd411 add  10   77e-33      ->  10.00000000000000000000000000000008 Inexact Rounded
-dqadd412 add  10   77e-34      ->  10.00000000000000000000000000000001 Inexact Rounded
-dqadd413 add  10   77e-35      ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd414 add  10   77e-36      ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd415 add  10   77e-37      ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd416 add  10   77e-299     ->  10.00000000000000000000000000000000 Inexact Rounded
-
-dqadd420 add  77e-32       1   ->  1.00000000000000000000000000000077
-dqadd421 add  77e-33       1   ->  1.000000000000000000000000000000077
-dqadd422 add  77e-34       1   ->  1.000000000000000000000000000000008 Inexact Rounded
-dqadd423 add  77e-35       1   ->  1.000000000000000000000000000000001 Inexact Rounded
-dqadd424 add  77e-36       1   ->  1.000000000000000000000000000000000 Inexact Rounded
-dqadd425 add  77e-37       1   ->  1.000000000000000000000000000000000 Inexact Rounded
-dqadd426 add  77e-299      1   ->  1.000000000000000000000000000000000 Inexact Rounded
-
-dqadd430 add  77e-32      10   ->  10.00000000000000000000000000000077
-dqadd431 add  77e-33      10   ->  10.00000000000000000000000000000008 Inexact Rounded
-dqadd432 add  77e-34      10   ->  10.00000000000000000000000000000001 Inexact Rounded
-dqadd433 add  77e-35      10   ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd434 add  77e-36      10   ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd435 add  77e-37      10   ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd436 add  77e-299     10   ->  10.00000000000000000000000000000000 Inexact Rounded
-
--- fastpath boundaries
---            1234567890123456789012345678901234
-dqadd501 add '4444444444444444444444444444444444'  '5555555555555555555555555555555555' -> '9999999999999999999999999999999999'
-dqadd502 add '4444444444444444444444444444444444'  '4555555555555555555555555555555555' -> '8999999999999999999999999999999999'
-dqadd503 add '4444444444444444444444444444444444'  '3555555555555555555055555555555555' -> '7999999999999999999499999999999999'
-dqadd504 add '4444444444444444444444444444444444'  '3955555555555555555555555555555555' -> '8399999999999999999999999999999999'
-dqadd505 add '4444444444444444444444444444444444'  '4955555555555555555555555555555555' -> '9399999999999999999999999999999999'
-dqadd506 add '4444444444444444444444444444444444'  '5955555555555555555555555555555555' -> 1.040000000000000000000000000000000E+34 Inexact Rounded
-dqadd511 add '344444444444444444444444444444444'  '555555555555555555555555555555555' -> '899999999999999999999999999999999'
-dqadd512 add '34444444444444444444444444444444'  '55555555555555555555555555555555' -> '89999999999999999999999999999999'
-dqadd513 add '3444444444444444444444444444444'  '5555555555555555555555555555555' -> '8999999999999999999999999999999'
-dqadd514 add '344444444444444444444444444444'  '555555555555555555555555555555' -> '899999999999999999999999999999'
-dqadd515 add '34444444444444444444444444444'  '55555555555555555555555555555' -> '89999999999999999999999999999'
-dqadd516 add '3444444444444444444444444444'  '5555555555555555555555555555' -> '8999999999999999999999999999'
-dqadd517 add '344444444444444444444444444'  '555555555555555555555555555' -> '899999999999999999999999999'
-dqadd518 add '34444444444444444444444444'  '55555555555555555555555555' -> '89999999999999999999999999'
-dqadd519 add '3444444444444444444444444'  '5555555555555555555555555' -> '8999999999999999999999999'
-dqadd520 add '344444444444444444444444'  '555555555555555555555555' -> '899999999999999999999999'
-dqadd521 add '34444444444444444444444'  '55555555555555555555555' -> '89999999999999999999999'
-dqadd522 add '3444444444444444444444'  '5555555555555555555555' -> '8999999999999999999999'
-dqadd523 add '4444444444444444444444'  '3333333333333333333333' -> '7777777777777777777777'
-dqadd524 add '344444444444444444444'  '555555555555555555555' -> '899999999999999999999'
-dqadd525 add '34444444444444444444'  '55555555555555555555' -> '89999999999999999999'
-dqadd526 add '3444444444444444444'  '5555555555555555555' -> '8999999999999999999'
-dqadd527 add '344444444444444444'  '555555555555555555' -> '899999999999999999'
-dqadd528 add '34444444444444444'  '55555555555555555' -> '89999999999999999'
-dqadd529 add '3444444444444444'  '5555555555555555' -> '8999999999999999'
-dqadd530 add '344444444444444'  '555555555555555' -> '899999999999999'
-dqadd531 add '34444444444444'  '55555555555555' -> '89999999999999'
-dqadd532 add '3444444444444'  '5555555555555' -> '8999999999999'
-dqadd533 add '344444444444'  '555555555555' -> '899999999999'
-dqadd534 add '34444444444'  '55555555555' -> '89999999999'
-dqadd535 add '3444444444'  '5555555555' -> '8999999999'
-dqadd536 add '344444444'  '555555555' -> '899999999'
-dqadd537 add '34444444'  '55555555' -> '89999999'
-dqadd538 add '3444444'  '5555555' -> '8999999'
-dqadd539 add '344444'  '555555' -> '899999'
-dqadd540 add '34444'  '55555' -> '89999'
-dqadd541 add '3444'  '5555' -> '8999'
-dqadd542 add '344'  '555' -> '899'
-dqadd543 add '34'  '55' -> '89'
-dqadd544 add '3'  '5' -> '8'
-
-dqadd545 add '3000004000000000000000000000000000'  '3000000000000040000000000000000000' -> '6000004000000040000000000000000000'
-dqadd546 add '3000000400000000000000000000000000'  '4000000000000400000000000000000000' -> '7000000400000400000000000000000000'
-dqadd547 add '3000000040000000000000000000000000'  '5000000000004000000000000000000000' -> '8000000040004000000000000000000000'
-dqadd548 add '4000000004000000000000000000000000'  '3000000000040000000000000000000000' -> '7000000004040000000000000000000000'
-dqadd549 add '4000000000400000000000000000000000'  '4000000000400000000000000000000000' -> '8000000000800000000000000000000000'
-dqadd550 add '4000000000040000000000000000000000'  '5000000004000000000000000000000000' -> '9000000004040000000000000000000000'
-dqadd551 add '5000000000004000000000000000000000'  '3000000040000000000000000000000000' -> '8000000040004000000000000000000000'
-dqadd552 add '5000000000000400000000000000000000'  '4000000400000000000000000000000000' -> '9000000400000400000000000000000000'
-dqadd553 add '5000000000000040000000000000000000'  '5000004000000000000000000000000000' -> 1.000000400000004000000000000000000E+34 Rounded
--- check propagation
-dqadd554 add '8999999999999999999999999999999999'  '0000000000000000000000000000000001' ->  9000000000000000000000000000000000
-dqadd555 add '0000000000000000000000000000000001'  '8999999999999999999999999999999999' ->  9000000000000000000000000000000000
-dqadd556 add '4444444444444444444444444444444444'  '4555555555555555555555555555555556' ->  9000000000000000000000000000000000
-dqadd557 add '4555555555555555555555555555555556'  '4444444444444444444444444444444444' ->  9000000000000000000000000000000000
-
--- negative ulps
-dqadd6440 add   1   -77e-32      ->  0.99999999999999999999999999999923
-dqadd6441 add   1   -77e-33      ->  0.999999999999999999999999999999923
-dqadd6442 add   1   -77e-34      ->  0.9999999999999999999999999999999923
-dqadd6443 add   1   -77e-35      ->  0.9999999999999999999999999999999992 Inexact Rounded
-dqadd6444 add   1   -77e-36      ->  0.9999999999999999999999999999999999 Inexact Rounded
-dqadd6445 add   1   -77e-37      ->  1.000000000000000000000000000000000 Inexact Rounded
-dqadd6446 add   1   -77e-99      ->  1.000000000000000000000000000000000 Inexact Rounded
-
-dqadd6450 add  10   -77e-32      ->   9.99999999999999999999999999999923
-dqadd6451 add  10   -77e-33      ->   9.999999999999999999999999999999923
-dqadd6452 add  10   -77e-34      ->   9.999999999999999999999999999999992 Inexact Rounded
-dqadd6453 add  10   -77e-35      ->   9.999999999999999999999999999999999 Inexact Rounded
-dqadd6454 add  10   -77e-36      ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd6455 add  10   -77e-37      ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd6456 add  10   -77e-99      ->  10.00000000000000000000000000000000 Inexact Rounded
-
-dqadd6460 add  -77e-32       1   ->  0.99999999999999999999999999999923
-dqadd6461 add  -77e-33       1   ->  0.999999999999999999999999999999923
-dqadd6462 add  -77e-34       1   ->  0.9999999999999999999999999999999923
-dqadd6463 add  -77e-35       1   ->  0.9999999999999999999999999999999992 Inexact Rounded
-dqadd6464 add  -77e-36       1   ->  0.9999999999999999999999999999999999 Inexact Rounded
-dqadd6465 add  -77e-37       1   ->  1.000000000000000000000000000000000 Inexact Rounded
-dqadd6466 add  -77e-99       1   ->  1.000000000000000000000000000000000 Inexact Rounded
-
-dqadd6470 add  -77e-32      10   ->   9.99999999999999999999999999999923
-dqadd6471 add  -77e-33      10   ->   9.999999999999999999999999999999923
-dqadd6472 add  -77e-34      10   ->   9.999999999999999999999999999999992 Inexact Rounded
-dqadd6473 add  -77e-35      10   ->   9.999999999999999999999999999999999 Inexact Rounded
-dqadd6474 add  -77e-36      10   ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd6475 add  -77e-37      10   ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd6476 add  -77e-99      10   ->  10.00000000000000000000000000000000 Inexact Rounded
-
--- negative ulps
-dqadd6480 add  -1    77e-32      ->  -0.99999999999999999999999999999923
-dqadd6481 add  -1    77e-33      ->  -0.999999999999999999999999999999923
-dqadd6482 add  -1    77e-34      ->  -0.9999999999999999999999999999999923
-dqadd6483 add  -1    77e-35      ->  -0.9999999999999999999999999999999992 Inexact Rounded
-dqadd6484 add  -1    77e-36      ->  -0.9999999999999999999999999999999999 Inexact Rounded
-dqadd6485 add  -1    77e-37      ->  -1.000000000000000000000000000000000 Inexact Rounded
-dqadd6486 add  -1    77e-99      ->  -1.000000000000000000000000000000000 Inexact Rounded
-
-dqadd6490 add -10    77e-32      ->   -9.99999999999999999999999999999923
-dqadd6491 add -10    77e-33      ->   -9.999999999999999999999999999999923
-dqadd6492 add -10    77e-34      ->   -9.999999999999999999999999999999992 Inexact Rounded
-dqadd6493 add -10    77e-35      ->   -9.999999999999999999999999999999999 Inexact Rounded
-dqadd6494 add -10    77e-36      ->  -10.00000000000000000000000000000000 Inexact Rounded
-dqadd6495 add -10    77e-37      ->  -10.00000000000000000000000000000000 Inexact Rounded
-dqadd6496 add -10    77e-99      ->  -10.00000000000000000000000000000000 Inexact Rounded
-
-dqadd6500 add   77e-32      -1   ->  -0.99999999999999999999999999999923
-dqadd6501 add   77e-33      -1   ->  -0.999999999999999999999999999999923
-dqadd6502 add   77e-34      -1   ->  -0.9999999999999999999999999999999923
-dqadd6503 add   77e-35      -1   ->  -0.9999999999999999999999999999999992 Inexact Rounded
-dqadd6504 add   77e-36      -1   ->  -0.9999999999999999999999999999999999 Inexact Rounded
-dqadd6505 add   77e-37      -1   ->  -1.000000000000000000000000000000000 Inexact Rounded
-dqadd6506 add   77e-99      -1   ->  -1.000000000000000000000000000000000 Inexact Rounded
-
-dqadd6510 add   77e-32      -10  ->   -9.99999999999999999999999999999923
-dqadd6511 add   77e-33      -10  ->   -9.999999999999999999999999999999923
-dqadd6512 add   77e-34      -10  ->   -9.999999999999999999999999999999992 Inexact Rounded
-dqadd6513 add   77e-35      -10  ->   -9.999999999999999999999999999999999 Inexact Rounded
-dqadd6514 add   77e-36      -10  ->  -10.00000000000000000000000000000000 Inexact Rounded
-dqadd6515 add   77e-37      -10  ->  -10.00000000000000000000000000000000 Inexact Rounded
-dqadd6516 add   77e-99      -10  ->  -10.00000000000000000000000000000000 Inexact Rounded
-
--- and some more residue effects and different roundings
-rounding: half_up
-dqadd6540 add '9876543219876543216543210123456789' 0             -> '9876543219876543216543210123456789'
-dqadd6541 add '9876543219876543216543210123456789' 0.000000001   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd6542 add '9876543219876543216543210123456789' 0.000001      -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd6543 add '9876543219876543216543210123456789' 0.1           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd6544 add '9876543219876543216543210123456789' 0.4           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd6545 add '9876543219876543216543210123456789' 0.49          -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd6546 add '9876543219876543216543210123456789' 0.499999      -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd6547 add '9876543219876543216543210123456789' 0.499999999   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd6548 add '9876543219876543216543210123456789' 0.5           -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6549 add '9876543219876543216543210123456789' 0.500000001   -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6550 add '9876543219876543216543210123456789' 0.500001      -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6551 add '9876543219876543216543210123456789' 0.51          -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6552 add '9876543219876543216543210123456789' 0.6           -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6553 add '9876543219876543216543210123456789' 0.9           -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6554 add '9876543219876543216543210123456789' 0.99999       -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6555 add '9876543219876543216543210123456789' 0.999999999   -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6556 add '9876543219876543216543210123456789' 1             -> '9876543219876543216543210123456790'
-dqadd6557 add '9876543219876543216543210123456789' 1.000000001   -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6558 add '9876543219876543216543210123456789' 1.00001       -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6559 add '9876543219876543216543210123456789' 1.1           -> '9876543219876543216543210123456790' Inexact Rounded
-
-rounding: half_even
-dqadd6560 add '9876543219876543216543210123456789' 0             -> '9876543219876543216543210123456789'
-dqadd6561 add '9876543219876543216543210123456789' 0.000000001   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd6562 add '9876543219876543216543210123456789' 0.000001      -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd6563 add '9876543219876543216543210123456789' 0.1           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd6564 add '9876543219876543216543210123456789' 0.4           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd6565 add '9876543219876543216543210123456789' 0.49          -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd6566 add '9876543219876543216543210123456789' 0.499999      -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd6567 add '9876543219876543216543210123456789' 0.499999999   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd6568 add '9876543219876543216543210123456789' 0.5           -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6569 add '9876543219876543216543210123456789' 0.500000001   -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6570 add '9876543219876543216543210123456789' 0.500001      -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6571 add '9876543219876543216543210123456789' 0.51          -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6572 add '9876543219876543216543210123456789' 0.6           -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6573 add '9876543219876543216543210123456789' 0.9           -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6574 add '9876543219876543216543210123456789' 0.99999       -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6575 add '9876543219876543216543210123456789' 0.999999999   -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6576 add '9876543219876543216543210123456789' 1             -> '9876543219876543216543210123456790'
-dqadd6577 add '9876543219876543216543210123456789' 1.00000001    -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6578 add '9876543219876543216543210123456789' 1.00001       -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd6579 add '9876543219876543216543210123456789' 1.1           -> '9876543219876543216543210123456790' Inexact Rounded
-
--- critical few with even bottom digit...
-dqadd7540 add '9876543219876543216543210123456788' 0.499999999   -> '9876543219876543216543210123456788' Inexact Rounded
-dqadd7541 add '9876543219876543216543210123456788' 0.5           -> '9876543219876543216543210123456788' Inexact Rounded
-dqadd7542 add '9876543219876543216543210123456788' 0.500000001   -> '9876543219876543216543210123456789' Inexact Rounded
-
-rounding: down
-dqadd7550 add '9876543219876543216543210123456789' 0             -> '9876543219876543216543210123456789'
-dqadd7551 add '9876543219876543216543210123456789' 0.000000001   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7552 add '9876543219876543216543210123456789' 0.000001      -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7553 add '9876543219876543216543210123456789' 0.1           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7554 add '9876543219876543216543210123456789' 0.4           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7555 add '9876543219876543216543210123456789' 0.49          -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7556 add '9876543219876543216543210123456789' 0.499999      -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7557 add '9876543219876543216543210123456789' 0.499999999   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7558 add '9876543219876543216543210123456789' 0.5           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7559 add '9876543219876543216543210123456789' 0.500000001   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7560 add '9876543219876543216543210123456789' 0.500001      -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7561 add '9876543219876543216543210123456789' 0.51          -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7562 add '9876543219876543216543210123456789' 0.6           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7563 add '9876543219876543216543210123456789' 0.9           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7564 add '9876543219876543216543210123456789' 0.99999       -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7565 add '9876543219876543216543210123456789' 0.999999999   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd7566 add '9876543219876543216543210123456789' 1             -> '9876543219876543216543210123456790'
-dqadd7567 add '9876543219876543216543210123456789' 1.00000001    -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd7568 add '9876543219876543216543210123456789' 1.00001       -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd7569 add '9876543219876543216543210123456789' 1.1           -> '9876543219876543216543210123456790' Inexact Rounded
-
--- more zeros, etc.
-rounding: half_even
-
-dqadd7701 add 5.00 1.00E-3 -> 5.00100
-dqadd7702 add 00.00 0.000  -> 0.000
-dqadd7703 add 00.00 0E-3   -> 0.000
-dqadd7704 add 0E-3  00.00  -> 0.000
-
-dqadd7710 add 0E+3  00.00  -> 0.00
-dqadd7711 add 0E+3  00.0   -> 0.0
-dqadd7712 add 0E+3  00.    -> 0
-dqadd7713 add 0E+3  00.E+1 -> 0E+1
-dqadd7714 add 0E+3  00.E+2 -> 0E+2
-dqadd7715 add 0E+3  00.E+3 -> 0E+3
-dqadd7716 add 0E+3  00.E+4 -> 0E+3
-dqadd7717 add 0E+3  00.E+5 -> 0E+3
-dqadd7718 add 0E+3  -00.0   -> 0.0
-dqadd7719 add 0E+3  -00.    -> 0
-dqadd7731 add 0E+3  -00.E+1 -> 0E+1
-
-dqadd7720 add 00.00  0E+3  -> 0.00
-dqadd7721 add 00.0   0E+3  -> 0.0
-dqadd7722 add 00.    0E+3  -> 0
-dqadd7723 add 00.E+1 0E+3  -> 0E+1
-dqadd7724 add 00.E+2 0E+3  -> 0E+2
-dqadd7725 add 00.E+3 0E+3  -> 0E+3
-dqadd7726 add 00.E+4 0E+3  -> 0E+3
-dqadd7727 add 00.E+5 0E+3  -> 0E+3
-dqadd7728 add -00.00 0E+3  -> 0.00
-dqadd7729 add -00.0  0E+3  -> 0.0
-dqadd7730 add -00.   0E+3  -> 0
-
-dqadd7732 add  0     0     ->  0
-dqadd7733 add  0    -0     ->  0
-dqadd7734 add -0     0     ->  0
-dqadd7735 add -0    -0     -> -0     -- IEEE 754 special case
-
-dqadd7736 add  1    -1     ->  0
-dqadd7737 add -1    -1     -> -2
-dqadd7738 add  1     1     ->  2
-dqadd7739 add -1     1     ->  0
-
-dqadd7741 add  0    -1     -> -1
-dqadd7742 add -0    -1     -> -1
-dqadd7743 add  0     1     ->  1
-dqadd7744 add -0     1     ->  1
-dqadd7745 add -1     0     -> -1
-dqadd7746 add -1    -0     -> -1
-dqadd7747 add  1     0     ->  1
-dqadd7748 add  1    -0     ->  1
-
-dqadd7751 add  0.0  -1     -> -1.0
-dqadd7752 add -0.0  -1     -> -1.0
-dqadd7753 add  0.0   1     ->  1.0
-dqadd7754 add -0.0   1     ->  1.0
-dqadd7755 add -1.0   0     -> -1.0
-dqadd7756 add -1.0  -0     -> -1.0
-dqadd7757 add  1.0   0     ->  1.0
-dqadd7758 add  1.0  -0     ->  1.0
-
-dqadd7761 add  0    -1.0   -> -1.0
-dqadd7762 add -0    -1.0   -> -1.0
-dqadd7763 add  0     1.0   ->  1.0
-dqadd7764 add -0     1.0   ->  1.0
-dqadd7765 add -1     0.0   -> -1.0
-dqadd7766 add -1    -0.0   -> -1.0
-dqadd7767 add  1     0.0   ->  1.0
-dqadd7768 add  1    -0.0   ->  1.0
-
-dqadd7771 add  0.0  -1.0   -> -1.0
-dqadd7772 add -0.0  -1.0   -> -1.0
-dqadd7773 add  0.0   1.0   ->  1.0
-dqadd7774 add -0.0   1.0   ->  1.0
-dqadd7775 add -1.0   0.0   -> -1.0
-dqadd7776 add -1.0  -0.0   -> -1.0
-dqadd7777 add  1.0   0.0   ->  1.0
-dqadd7778 add  1.0  -0.0   ->  1.0
-
--- Specials
-dqadd7780 add -Inf  -Inf   -> -Infinity
-dqadd7781 add -Inf  -1000  -> -Infinity
-dqadd7782 add -Inf  -1     -> -Infinity
-dqadd7783 add -Inf  -0     -> -Infinity
-dqadd7784 add -Inf   0     -> -Infinity
-dqadd7785 add -Inf   1     -> -Infinity
-dqadd7786 add -Inf   1000  -> -Infinity
-dqadd7787 add -1000 -Inf   -> -Infinity
-dqadd7788 add -Inf  -Inf   -> -Infinity
-dqadd7789 add -1    -Inf   -> -Infinity
-dqadd7790 add -0    -Inf   -> -Infinity
-dqadd7791 add  0    -Inf   -> -Infinity
-dqadd7792 add  1    -Inf   -> -Infinity
-dqadd7793 add  1000 -Inf   -> -Infinity
-dqadd7794 add  Inf  -Inf   ->  NaN  Invalid_operation
-
-dqadd7800 add  Inf  -Inf   ->  NaN  Invalid_operation
-dqadd7801 add  Inf  -1000  ->  Infinity
-dqadd7802 add  Inf  -1     ->  Infinity
-dqadd7803 add  Inf  -0     ->  Infinity
-dqadd7804 add  Inf   0     ->  Infinity
-dqadd7805 add  Inf   1     ->  Infinity
-dqadd7806 add  Inf   1000  ->  Infinity
-dqadd7807 add  Inf   Inf   ->  Infinity
-dqadd7808 add -1000  Inf   ->  Infinity
-dqadd7809 add -Inf   Inf   ->  NaN  Invalid_operation
-dqadd7810 add -1     Inf   ->  Infinity
-dqadd7811 add -0     Inf   ->  Infinity
-dqadd7812 add  0     Inf   ->  Infinity
-dqadd7813 add  1     Inf   ->  Infinity
-dqadd7814 add  1000  Inf   ->  Infinity
-dqadd7815 add  Inf   Inf   ->  Infinity
-
-dqadd7821 add  NaN -Inf    ->  NaN
-dqadd7822 add  NaN -1000   ->  NaN
-dqadd7823 add  NaN -1      ->  NaN
-dqadd7824 add  NaN -0      ->  NaN
-dqadd7825 add  NaN  0      ->  NaN
-dqadd7826 add  NaN  1      ->  NaN
-dqadd7827 add  NaN  1000   ->  NaN
-dqadd7828 add  NaN  Inf    ->  NaN
-dqadd7829 add  NaN  NaN    ->  NaN
-dqadd7830 add -Inf  NaN    ->  NaN
-dqadd7831 add -1000 NaN    ->  NaN
-dqadd7832 add -1    NaN    ->  NaN
-dqadd7833 add -0    NaN    ->  NaN
-dqadd7834 add  0    NaN    ->  NaN
-dqadd7835 add  1    NaN    ->  NaN
-dqadd7836 add  1000 NaN    ->  NaN
-dqadd7837 add  Inf  NaN    ->  NaN
-
-dqadd7841 add  sNaN -Inf   ->  NaN  Invalid_operation
-dqadd7842 add  sNaN -1000  ->  NaN  Invalid_operation
-dqadd7843 add  sNaN -1     ->  NaN  Invalid_operation
-dqadd7844 add  sNaN -0     ->  NaN  Invalid_operation
-dqadd7845 add  sNaN  0     ->  NaN  Invalid_operation
-dqadd7846 add  sNaN  1     ->  NaN  Invalid_operation
-dqadd7847 add  sNaN  1000  ->  NaN  Invalid_operation
-dqadd7848 add  sNaN  NaN   ->  NaN  Invalid_operation
-dqadd7849 add  sNaN sNaN   ->  NaN  Invalid_operation
-dqadd7850 add  NaN  sNaN   ->  NaN  Invalid_operation
-dqadd7851 add -Inf  sNaN   ->  NaN  Invalid_operation
-dqadd7852 add -1000 sNaN   ->  NaN  Invalid_operation
-dqadd7853 add -1    sNaN   ->  NaN  Invalid_operation
-dqadd7854 add -0    sNaN   ->  NaN  Invalid_operation
-dqadd7855 add  0    sNaN   ->  NaN  Invalid_operation
-dqadd7856 add  1    sNaN   ->  NaN  Invalid_operation
-dqadd7857 add  1000 sNaN   ->  NaN  Invalid_operation
-dqadd7858 add  Inf  sNaN   ->  NaN  Invalid_operation
-dqadd7859 add  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqadd7861 add  NaN1   -Inf    ->  NaN1
-dqadd7862 add +NaN2   -1000   ->  NaN2
-dqadd7863 add  NaN3    1000   ->  NaN3
-dqadd7864 add  NaN4    Inf    ->  NaN4
-dqadd7865 add  NaN5   +NaN6   ->  NaN5
-dqadd7866 add -Inf     NaN7   ->  NaN7
-dqadd7867 add -1000    NaN8   ->  NaN8
-dqadd7868 add  1000    NaN9   ->  NaN9
-dqadd7869 add  Inf    +NaN10  ->  NaN10
-dqadd7871 add  sNaN11  -Inf   ->  NaN11  Invalid_operation
-dqadd7872 add  sNaN12  -1000  ->  NaN12  Invalid_operation
-dqadd7873 add  sNaN13   1000  ->  NaN13  Invalid_operation
-dqadd7874 add  sNaN14   NaN17 ->  NaN14  Invalid_operation
-dqadd7875 add  sNaN15  sNaN18 ->  NaN15  Invalid_operation
-dqadd7876 add  NaN16   sNaN19 ->  NaN19  Invalid_operation
-dqadd7877 add -Inf    +sNaN20 ->  NaN20  Invalid_operation
-dqadd7878 add -1000    sNaN21 ->  NaN21  Invalid_operation
-dqadd7879 add  1000    sNaN22 ->  NaN22  Invalid_operation
-dqadd7880 add  Inf     sNaN23 ->  NaN23  Invalid_operation
-dqadd7881 add +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-dqadd7882 add -NaN26    NaN28 -> -NaN26
-dqadd7883 add -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-dqadd7884 add  1000    -NaN30 -> -NaN30
-dqadd7885 add  1000   -sNaN31 -> -NaN31  Invalid_operation
-
--- Here we explore near the boundary of rounding a subnormal to Nmin
-dqadd7575 add  1E-6143 -1E-6176 ->  9.99999999999999999999999999999999E-6144 Subnormal
-dqadd7576 add -1E-6143 +1E-6176 -> -9.99999999999999999999999999999999E-6144 Subnormal
-
--- check overflow edge case
---               1234567890123456
-dqadd7972 apply   9.999999999999999999999999999999999E+6144         -> 9.999999999999999999999999999999999E+6144
-dqadd7973 add     9.999999999999999999999999999999999E+6144  1      -> 9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd7974 add      9999999999999999999999999999999999E+6111  1      -> 9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd7975 add      9999999999999999999999999999999999E+6111  1E+6111  -> Infinity Overflow Inexact Rounded
-dqadd7976 add      9999999999999999999999999999999999E+6111  9E+6110  -> Infinity Overflow Inexact Rounded
-dqadd7977 add      9999999999999999999999999999999999E+6111  8E+6110  -> Infinity Overflow Inexact Rounded
-dqadd7978 add      9999999999999999999999999999999999E+6111  7E+6110  -> Infinity Overflow Inexact Rounded
-dqadd7979 add      9999999999999999999999999999999999E+6111  6E+6110  -> Infinity Overflow Inexact Rounded
-dqadd7980 add      9999999999999999999999999999999999E+6111  5E+6110  -> Infinity Overflow Inexact Rounded
-dqadd7981 add      9999999999999999999999999999999999E+6111  4E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd7982 add      9999999999999999999999999999999999E+6111  3E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd7983 add      9999999999999999999999999999999999E+6111  2E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd7984 add      9999999999999999999999999999999999E+6111  1E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded
-
-dqadd7985 apply  -9.999999999999999999999999999999999E+6144         -> -9.999999999999999999999999999999999E+6144
-dqadd7986 add    -9.999999999999999999999999999999999E+6144 -1      -> -9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd7987 add     -9999999999999999999999999999999999E+6111 -1      -> -9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd7988 add     -9999999999999999999999999999999999E+6111 -1E+6111  -> -Infinity Overflow Inexact Rounded
-dqadd7989 add     -9999999999999999999999999999999999E+6111 -9E+6110  -> -Infinity Overflow Inexact Rounded
-dqadd7990 add     -9999999999999999999999999999999999E+6111 -8E+6110  -> -Infinity Overflow Inexact Rounded
-dqadd7991 add     -9999999999999999999999999999999999E+6111 -7E+6110  -> -Infinity Overflow Inexact Rounded
-dqadd7992 add     -9999999999999999999999999999999999E+6111 -6E+6110  -> -Infinity Overflow Inexact Rounded
-dqadd7993 add     -9999999999999999999999999999999999E+6111 -5E+6110  -> -Infinity Overflow Inexact Rounded
-dqadd7994 add     -9999999999999999999999999999999999E+6111 -4E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd7995 add     -9999999999999999999999999999999999E+6111 -3E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd7996 add     -9999999999999999999999999999999999E+6111 -2E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd7997 add     -9999999999999999999999999999999999E+6111 -1E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded
-
--- And for round down full and subnormal results
-rounding:     down
-dqadd71100 add 1e+2 -1e-6143    -> 99.99999999999999999999999999999999 Rounded Inexact
-dqadd71101 add 1e+1 -1e-6143    -> 9.999999999999999999999999999999999  Rounded Inexact
-dqadd71103 add   +1 -1e-6143    -> 0.9999999999999999999999999999999999  Rounded Inexact
-dqadd71104 add 1e-1 -1e-6143    -> 0.09999999999999999999999999999999999  Rounded Inexact
-dqadd71105 add 1e-2 -1e-6143    -> 0.009999999999999999999999999999999999  Rounded Inexact
-dqadd71106 add 1e-3 -1e-6143    -> 0.0009999999999999999999999999999999999  Rounded Inexact
-dqadd71107 add 1e-4 -1e-6143    -> 0.00009999999999999999999999999999999999  Rounded Inexact
-dqadd71108 add 1e-5 -1e-6143    -> 0.000009999999999999999999999999999999999  Rounded Inexact
-dqadd71109 add 1e-6 -1e-6143    -> 9.999999999999999999999999999999999E-7  Rounded Inexact
-
-rounding:     ceiling
-dqadd71110 add -1e+2 +1e-6143   -> -99.99999999999999999999999999999999 Rounded Inexact
-dqadd71111 add -1e+1 +1e-6143   -> -9.999999999999999999999999999999999  Rounded Inexact
-dqadd71113 add    -1 +1e-6143   -> -0.9999999999999999999999999999999999  Rounded Inexact
-dqadd71114 add -1e-1 +1e-6143   -> -0.09999999999999999999999999999999999  Rounded Inexact
-dqadd71115 add -1e-2 +1e-6143   -> -0.009999999999999999999999999999999999  Rounded Inexact
-dqadd71116 add -1e-3 +1e-6143   -> -0.0009999999999999999999999999999999999  Rounded Inexact
-dqadd71117 add -1e-4 +1e-6143   -> -0.00009999999999999999999999999999999999  Rounded Inexact
-dqadd71118 add -1e-5 +1e-6143   -> -0.000009999999999999999999999999999999999  Rounded Inexact
-dqadd71119 add -1e-6 +1e-6143   -> -9.999999999999999999999999999999999E-7  Rounded Inexact
-
--- tests based on Gunnar Degnbol's edge case
-rounding:     half_even
-
-dqadd71300 add 1E34  -0.5                 ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71310 add 1E34  -0.51                ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71311 add 1E34  -0.501               ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71312 add 1E34  -0.5001              ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71313 add 1E34  -0.50001             ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71314 add 1E34  -0.500001            ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71315 add 1E34  -0.5000001           ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71316 add 1E34  -0.50000001          ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71317 add 1E34  -0.500000001         ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71318 add 1E34  -0.5000000001        ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71319 add 1E34  -0.50000000001       ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71320 add 1E34  -0.500000000001      ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71321 add 1E34  -0.5000000000001     ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71322 add 1E34  -0.50000000000001    ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71323 add 1E34  -0.500000000000001   ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71324 add 1E34  -0.5000000000000001  ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71325 add 1E34  -0.5000000000000000  ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71326 add 1E34  -0.500000000000000   ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71327 add 1E34  -0.50000000000000    ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71328 add 1E34  -0.5000000000000     ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71329 add 1E34  -0.500000000000      ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71330 add 1E34  -0.50000000000       ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71331 add 1E34  -0.5000000000        ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71332 add 1E34  -0.500000000         ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71333 add 1E34  -0.50000000          ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71334 add 1E34  -0.5000000           ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71335 add 1E34  -0.500000            ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71336 add 1E34  -0.50000             ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71337 add 1E34  -0.5000              ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71338 add 1E34  -0.500               ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71339 add 1E34  -0.50                ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-
-dqadd71340 add 1E34  -5000000.000010001   ->  9999999999999999999999999995000000      Inexact Rounded
-dqadd71341 add 1E34  -5000000.000000001   ->  9999999999999999999999999995000000      Inexact Rounded
-
-dqadd71349 add 9999999999999999999999999999999999 0.4                 ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71350 add 9999999999999999999999999999999999 0.49                ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71351 add 9999999999999999999999999999999999 0.499               ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71352 add 9999999999999999999999999999999999 0.4999              ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71353 add 9999999999999999999999999999999999 0.49999             ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71354 add 9999999999999999999999999999999999 0.499999            ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71355 add 9999999999999999999999999999999999 0.4999999           ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71356 add 9999999999999999999999999999999999 0.49999999          ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71357 add 9999999999999999999999999999999999 0.499999999         ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71358 add 9999999999999999999999999999999999 0.4999999999        ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71359 add 9999999999999999999999999999999999 0.49999999999       ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71360 add 9999999999999999999999999999999999 0.499999999999      ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71361 add 9999999999999999999999999999999999 0.4999999999999     ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71362 add 9999999999999999999999999999999999 0.49999999999999    ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71363 add 9999999999999999999999999999999999 0.499999999999999   ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71364 add 9999999999999999999999999999999999 0.4999999999999999  ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd71365 add 9999999999999999999999999999999999 0.5000000000000000  ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71367 add 9999999999999999999999999999999999 0.500000000000000   ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71368 add 9999999999999999999999999999999999 0.50000000000000    ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71369 add 9999999999999999999999999999999999 0.5000000000000     ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71370 add 9999999999999999999999999999999999 0.500000000000      ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71371 add 9999999999999999999999999999999999 0.50000000000       ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71372 add 9999999999999999999999999999999999 0.5000000000        ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71373 add 9999999999999999999999999999999999 0.500000000         ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71374 add 9999999999999999999999999999999999 0.50000000          ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71375 add 9999999999999999999999999999999999 0.5000000           ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71376 add 9999999999999999999999999999999999 0.500000            ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71377 add 9999999999999999999999999999999999 0.50000             ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71378 add 9999999999999999999999999999999999 0.5000              ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71379 add 9999999999999999999999999999999999 0.500               ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71380 add 9999999999999999999999999999999999 0.50                ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71381 add 9999999999999999999999999999999999 0.5                 ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71382 add 9999999999999999999999999999999999 0.5000000000000001  ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71383 add 9999999999999999999999999999999999 0.500000000000001   ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71384 add 9999999999999999999999999999999999 0.50000000000001    ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71385 add 9999999999999999999999999999999999 0.5000000000001     ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71386 add 9999999999999999999999999999999999 0.500000000001      ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71387 add 9999999999999999999999999999999999 0.50000000001       ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71388 add 9999999999999999999999999999999999 0.5000000001        ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71389 add 9999999999999999999999999999999999 0.500000001         ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71390 add 9999999999999999999999999999999999 0.50000001          ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71391 add 9999999999999999999999999999999999 0.5000001           ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71392 add 9999999999999999999999999999999999 0.500001            ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71393 add 9999999999999999999999999999999999 0.50001             ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71394 add 9999999999999999999999999999999999 0.5001              ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71395 add 9999999999999999999999999999999999 0.501               ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd71396 add 9999999999999999999999999999999999 0.51                ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-
--- More GD edge cases, where difference between the unadjusted
--- exponents is larger than the maximum precision and one side is 0
-dqadd71420 add  0 1.123456789987654321123456789012345     -> 1.123456789987654321123456789012345
-dqadd71421 add  0 1.123456789987654321123456789012345E-1  -> 0.1123456789987654321123456789012345
-dqadd71422 add  0 1.123456789987654321123456789012345E-2  -> 0.01123456789987654321123456789012345
-dqadd71423 add  0 1.123456789987654321123456789012345E-3  -> 0.001123456789987654321123456789012345
-dqadd71424 add  0 1.123456789987654321123456789012345E-4  -> 0.0001123456789987654321123456789012345
-dqadd71425 add  0 1.123456789987654321123456789012345E-5  -> 0.00001123456789987654321123456789012345
-dqadd71426 add  0 1.123456789987654321123456789012345E-6  -> 0.000001123456789987654321123456789012345
-dqadd71427 add  0 1.123456789987654321123456789012345E-7  -> 1.123456789987654321123456789012345E-7
-dqadd71428 add  0 1.123456789987654321123456789012345E-8  -> 1.123456789987654321123456789012345E-8
-dqadd71429 add  0 1.123456789987654321123456789012345E-9  -> 1.123456789987654321123456789012345E-9
-dqadd71430 add  0 1.123456789987654321123456789012345E-10 -> 1.123456789987654321123456789012345E-10
-dqadd71431 add  0 1.123456789987654321123456789012345E-11 -> 1.123456789987654321123456789012345E-11
-dqadd71432 add  0 1.123456789987654321123456789012345E-12 -> 1.123456789987654321123456789012345E-12
-dqadd71433 add  0 1.123456789987654321123456789012345E-13 -> 1.123456789987654321123456789012345E-13
-dqadd71434 add  0 1.123456789987654321123456789012345E-14 -> 1.123456789987654321123456789012345E-14
-dqadd71435 add  0 1.123456789987654321123456789012345E-15 -> 1.123456789987654321123456789012345E-15
-dqadd71436 add  0 1.123456789987654321123456789012345E-16 -> 1.123456789987654321123456789012345E-16
-dqadd71437 add  0 1.123456789987654321123456789012345E-17 -> 1.123456789987654321123456789012345E-17
-dqadd71438 add  0 1.123456789987654321123456789012345E-18 -> 1.123456789987654321123456789012345E-18
-dqadd71439 add  0 1.123456789987654321123456789012345E-19 -> 1.123456789987654321123456789012345E-19
-dqadd71440 add  0 1.123456789987654321123456789012345E-20 -> 1.123456789987654321123456789012345E-20
-dqadd71441 add  0 1.123456789987654321123456789012345E-21 -> 1.123456789987654321123456789012345E-21
-dqadd71442 add  0 1.123456789987654321123456789012345E-22 -> 1.123456789987654321123456789012345E-22
-dqadd71443 add  0 1.123456789987654321123456789012345E-23 -> 1.123456789987654321123456789012345E-23
-dqadd71444 add  0 1.123456789987654321123456789012345E-24 -> 1.123456789987654321123456789012345E-24
-dqadd71445 add  0 1.123456789987654321123456789012345E-25 -> 1.123456789987654321123456789012345E-25
-dqadd71446 add  0 1.123456789987654321123456789012345E-26 -> 1.123456789987654321123456789012345E-26
-dqadd71447 add  0 1.123456789987654321123456789012345E-27 -> 1.123456789987654321123456789012345E-27
-dqadd71448 add  0 1.123456789987654321123456789012345E-28 -> 1.123456789987654321123456789012345E-28
-dqadd71449 add  0 1.123456789987654321123456789012345E-29 -> 1.123456789987654321123456789012345E-29
-dqadd71450 add  0 1.123456789987654321123456789012345E-30 -> 1.123456789987654321123456789012345E-30
-dqadd71451 add  0 1.123456789987654321123456789012345E-31 -> 1.123456789987654321123456789012345E-31
-dqadd71452 add  0 1.123456789987654321123456789012345E-32 -> 1.123456789987654321123456789012345E-32
-dqadd71453 add  0 1.123456789987654321123456789012345E-33 -> 1.123456789987654321123456789012345E-33
-dqadd71454 add  0 1.123456789987654321123456789012345E-34 -> 1.123456789987654321123456789012345E-34
-dqadd71455 add  0 1.123456789987654321123456789012345E-35 -> 1.123456789987654321123456789012345E-35
-dqadd71456 add  0 1.123456789987654321123456789012345E-36 -> 1.123456789987654321123456789012345E-36
-
--- same, reversed 0
-dqadd71460 add 1.123456789987654321123456789012345     0 -> 1.123456789987654321123456789012345
-dqadd71461 add 1.123456789987654321123456789012345E-1  0 -> 0.1123456789987654321123456789012345
-dqadd71462 add 1.123456789987654321123456789012345E-2  0 -> 0.01123456789987654321123456789012345
-dqadd71463 add 1.123456789987654321123456789012345E-3  0 -> 0.001123456789987654321123456789012345
-dqadd71464 add 1.123456789987654321123456789012345E-4  0 -> 0.0001123456789987654321123456789012345
-dqadd71465 add 1.123456789987654321123456789012345E-5  0 -> 0.00001123456789987654321123456789012345
-dqadd71466 add 1.123456789987654321123456789012345E-6  0 -> 0.000001123456789987654321123456789012345
-dqadd71467 add 1.123456789987654321123456789012345E-7  0 -> 1.123456789987654321123456789012345E-7
-dqadd71468 add 1.123456789987654321123456789012345E-8  0 -> 1.123456789987654321123456789012345E-8
-dqadd71469 add 1.123456789987654321123456789012345E-9  0 -> 1.123456789987654321123456789012345E-9
-dqadd71470 add 1.123456789987654321123456789012345E-10 0 -> 1.123456789987654321123456789012345E-10
-dqadd71471 add 1.123456789987654321123456789012345E-11 0 -> 1.123456789987654321123456789012345E-11
-dqadd71472 add 1.123456789987654321123456789012345E-12 0 -> 1.123456789987654321123456789012345E-12
-dqadd71473 add 1.123456789987654321123456789012345E-13 0 -> 1.123456789987654321123456789012345E-13
-dqadd71474 add 1.123456789987654321123456789012345E-14 0 -> 1.123456789987654321123456789012345E-14
-dqadd71475 add 1.123456789987654321123456789012345E-15 0 -> 1.123456789987654321123456789012345E-15
-dqadd71476 add 1.123456789987654321123456789012345E-16 0 -> 1.123456789987654321123456789012345E-16
-dqadd71477 add 1.123456789987654321123456789012345E-17 0 -> 1.123456789987654321123456789012345E-17
-dqadd71478 add 1.123456789987654321123456789012345E-18 0 -> 1.123456789987654321123456789012345E-18
-dqadd71479 add 1.123456789987654321123456789012345E-19 0 -> 1.123456789987654321123456789012345E-19
-dqadd71480 add 1.123456789987654321123456789012345E-20 0 -> 1.123456789987654321123456789012345E-20
-dqadd71481 add 1.123456789987654321123456789012345E-21 0 -> 1.123456789987654321123456789012345E-21
-dqadd71482 add 1.123456789987654321123456789012345E-22 0 -> 1.123456789987654321123456789012345E-22
-dqadd71483 add 1.123456789987654321123456789012345E-23 0 -> 1.123456789987654321123456789012345E-23
-dqadd71484 add 1.123456789987654321123456789012345E-24 0 -> 1.123456789987654321123456789012345E-24
-dqadd71485 add 1.123456789987654321123456789012345E-25 0 -> 1.123456789987654321123456789012345E-25
-dqadd71486 add 1.123456789987654321123456789012345E-26 0 -> 1.123456789987654321123456789012345E-26
-dqadd71487 add 1.123456789987654321123456789012345E-27 0 -> 1.123456789987654321123456789012345E-27
-dqadd71488 add 1.123456789987654321123456789012345E-28 0 -> 1.123456789987654321123456789012345E-28
-dqadd71489 add 1.123456789987654321123456789012345E-29 0 -> 1.123456789987654321123456789012345E-29
-dqadd71490 add 1.123456789987654321123456789012345E-30 0 -> 1.123456789987654321123456789012345E-30
-dqadd71491 add 1.123456789987654321123456789012345E-31 0 -> 1.123456789987654321123456789012345E-31
-dqadd71492 add 1.123456789987654321123456789012345E-32 0 -> 1.123456789987654321123456789012345E-32
-dqadd71493 add 1.123456789987654321123456789012345E-33 0 -> 1.123456789987654321123456789012345E-33
-dqadd71494 add 1.123456789987654321123456789012345E-34 0 -> 1.123456789987654321123456789012345E-34
-dqadd71495 add 1.123456789987654321123456789012345E-35 0 -> 1.123456789987654321123456789012345E-35
-dqadd71496 add 1.123456789987654321123456789012345E-36 0 -> 1.123456789987654321123456789012345E-36
-
--- same, Es on the 0
-dqadd71500 add 1.123456789987654321123456789012345  0E-0   -> 1.123456789987654321123456789012345
-dqadd71501 add 1.123456789987654321123456789012345  0E-1   -> 1.123456789987654321123456789012345
-dqadd71502 add 1.123456789987654321123456789012345  0E-2   -> 1.123456789987654321123456789012345
-dqadd71503 add 1.123456789987654321123456789012345  0E-3   -> 1.123456789987654321123456789012345
-dqadd71504 add 1.123456789987654321123456789012345  0E-4   -> 1.123456789987654321123456789012345
-dqadd71505 add 1.123456789987654321123456789012345  0E-5   -> 1.123456789987654321123456789012345
-dqadd71506 add 1.123456789987654321123456789012345  0E-6   -> 1.123456789987654321123456789012345
-dqadd71507 add 1.123456789987654321123456789012345  0E-7   -> 1.123456789987654321123456789012345
-dqadd71508 add 1.123456789987654321123456789012345  0E-8   -> 1.123456789987654321123456789012345
-dqadd71509 add 1.123456789987654321123456789012345  0E-9   -> 1.123456789987654321123456789012345
-dqadd71510 add 1.123456789987654321123456789012345  0E-10  -> 1.123456789987654321123456789012345
-dqadd71511 add 1.123456789987654321123456789012345  0E-11  -> 1.123456789987654321123456789012345
-dqadd71512 add 1.123456789987654321123456789012345  0E-12  -> 1.123456789987654321123456789012345
-dqadd71513 add 1.123456789987654321123456789012345  0E-13  -> 1.123456789987654321123456789012345
-dqadd71514 add 1.123456789987654321123456789012345  0E-14  -> 1.123456789987654321123456789012345
-dqadd71515 add 1.123456789987654321123456789012345  0E-15  -> 1.123456789987654321123456789012345
-dqadd71516 add 1.123456789987654321123456789012345  0E-16  -> 1.123456789987654321123456789012345
-dqadd71517 add 1.123456789987654321123456789012345  0E-17  -> 1.123456789987654321123456789012345
-dqadd71518 add 1.123456789987654321123456789012345  0E-18  -> 1.123456789987654321123456789012345
-dqadd71519 add 1.123456789987654321123456789012345  0E-19  -> 1.123456789987654321123456789012345
-dqadd71520 add 1.123456789987654321123456789012345  0E-20  -> 1.123456789987654321123456789012345
-dqadd71521 add 1.123456789987654321123456789012345  0E-21  -> 1.123456789987654321123456789012345
-dqadd71522 add 1.123456789987654321123456789012345  0E-22  -> 1.123456789987654321123456789012345
-dqadd71523 add 1.123456789987654321123456789012345  0E-23  -> 1.123456789987654321123456789012345
-dqadd71524 add 1.123456789987654321123456789012345  0E-24  -> 1.123456789987654321123456789012345
-dqadd71525 add 1.123456789987654321123456789012345  0E-25  -> 1.123456789987654321123456789012345
-dqadd71526 add 1.123456789987654321123456789012345  0E-26  -> 1.123456789987654321123456789012345
-dqadd71527 add 1.123456789987654321123456789012345  0E-27  -> 1.123456789987654321123456789012345
-dqadd71528 add 1.123456789987654321123456789012345  0E-28  -> 1.123456789987654321123456789012345
-dqadd71529 add 1.123456789987654321123456789012345  0E-29  -> 1.123456789987654321123456789012345
-dqadd71530 add 1.123456789987654321123456789012345  0E-30  -> 1.123456789987654321123456789012345
-dqadd71531 add 1.123456789987654321123456789012345  0E-31  -> 1.123456789987654321123456789012345
-dqadd71532 add 1.123456789987654321123456789012345  0E-32  -> 1.123456789987654321123456789012345
-dqadd71533 add 1.123456789987654321123456789012345  0E-33  -> 1.123456789987654321123456789012345
--- next four flag Rounded because the 0 extends the result
-dqadd71534 add 1.123456789987654321123456789012345  0E-34  -> 1.123456789987654321123456789012345 Rounded
-dqadd71535 add 1.123456789987654321123456789012345  0E-35  -> 1.123456789987654321123456789012345 Rounded
-dqadd71536 add 1.123456789987654321123456789012345  0E-36  -> 1.123456789987654321123456789012345 Rounded
-dqadd71537 add 1.123456789987654321123456789012345  0E-37  -> 1.123456789987654321123456789012345 Rounded
-
--- sum of two opposite-sign operands is exactly 0 and floor => -0
-rounding:    half_up
--- exact zeros from zeros
-dqadd71600 add  0        0E-19  ->  0E-19
-dqadd71601 add -0        0E-19  ->  0E-19
-dqadd71602 add  0       -0E-19  ->  0E-19
-dqadd71603 add -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd71611 add -11      11    ->  0
-dqadd71612 add  11     -11    ->  0
-
-rounding:    half_down
--- exact zeros from zeros
-dqadd71620 add  0        0E-19  ->  0E-19
-dqadd71621 add -0        0E-19  ->  0E-19
-dqadd71622 add  0       -0E-19  ->  0E-19
-dqadd71623 add -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd71631 add -11      11    ->  0
-dqadd71632 add  11     -11    ->  0
-
-rounding:    half_even
--- exact zeros from zeros
-dqadd71640 add  0        0E-19  ->  0E-19
-dqadd71641 add -0        0E-19  ->  0E-19
-dqadd71642 add  0       -0E-19  ->  0E-19
-dqadd71643 add -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd71651 add -11      11    ->  0
-dqadd71652 add  11     -11    ->  0
-
-rounding:    up
--- exact zeros from zeros
-dqadd71660 add  0        0E-19  ->  0E-19
-dqadd71661 add -0        0E-19  ->  0E-19
-dqadd71662 add  0       -0E-19  ->  0E-19
-dqadd71663 add -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd71671 add -11      11    ->  0
-dqadd71672 add  11     -11    ->  0
-
-rounding:    down
--- exact zeros from zeros
-dqadd71680 add  0        0E-19  ->  0E-19
-dqadd71681 add -0        0E-19  ->  0E-19
-dqadd71682 add  0       -0E-19  ->  0E-19
-dqadd71683 add -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd71691 add -11      11    ->  0
-dqadd71692 add  11     -11    ->  0
-
-rounding:    ceiling
--- exact zeros from zeros
-dqadd71700 add  0        0E-19  ->  0E-19
-dqadd71701 add -0        0E-19  ->  0E-19
-dqadd71702 add  0       -0E-19  ->  0E-19
-dqadd71703 add -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd71711 add -11      11    ->  0
-dqadd71712 add  11     -11    ->  0
-
--- and the extra-special ugly case; unusual minuses marked by -- *
-rounding:    floor
--- exact zeros from zeros
-dqadd71720 add  0        0E-19  ->  0E-19
-dqadd71721 add -0        0E-19  -> -0E-19           -- *
-dqadd71722 add  0       -0E-19  -> -0E-19           -- *
-dqadd71723 add -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd71731 add -11      11    ->  -0                -- *
-dqadd71732 add  11     -11    ->  -0                -- *
-
--- Examples from SQL proposal (Krishna Kulkarni)
-dqadd71741 add 130E-2    120E-2    -> 2.50
-dqadd71742 add 130E-2    12E-1     -> 2.50
-dqadd71743 add 130E-2    1E0       -> 2.30
-dqadd71744 add 1E2       1E4       -> 1.01E+4
-dqadd71745 add 130E-2   -120E-2 -> 0.10
-dqadd71746 add 130E-2   -12E-1  -> 0.10
-dqadd71747 add 130E-2   -1E0    -> 0.30
-dqadd71748 add 1E2      -1E4    -> -9.9E+3
-
--- Gappy coefficients; check residue handling even with full coefficient gap
-rounding: half_even
-
-dqadd75001 add 1239876543211234567894567890123456 1      -> 1239876543211234567894567890123457
-dqadd75002 add 1239876543211234567894567890123456 0.6    -> 1239876543211234567894567890123457  Inexact Rounded
-dqadd75003 add 1239876543211234567894567890123456 0.06   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75004 add 1239876543211234567894567890123456 6E-3   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75005 add 1239876543211234567894567890123456 6E-4   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75006 add 1239876543211234567894567890123456 6E-5   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75007 add 1239876543211234567894567890123456 6E-6   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75008 add 1239876543211234567894567890123456 6E-7   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75009 add 1239876543211234567894567890123456 6E-8   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75010 add 1239876543211234567894567890123456 6E-9   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75011 add 1239876543211234567894567890123456 6E-10  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75012 add 1239876543211234567894567890123456 6E-11  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75013 add 1239876543211234567894567890123456 6E-12  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75014 add 1239876543211234567894567890123456 6E-13  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75015 add 1239876543211234567894567890123456 6E-14  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75016 add 1239876543211234567894567890123456 6E-15  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75017 add 1239876543211234567894567890123456 6E-16  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75018 add 1239876543211234567894567890123456 6E-17  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75019 add 1239876543211234567894567890123456 6E-18  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75020 add 1239876543211234567894567890123456 6E-19  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd75021 add 1239876543211234567894567890123456 6E-20  -> 1239876543211234567894567890123456  Inexact Rounded
-
--- widening second argument at gap
-dqadd75030 add 12398765432112345678945678 1                       -> 12398765432112345678945679
-dqadd75031 add 12398765432112345678945678 0.1                     -> 12398765432112345678945678.1
-dqadd75032 add 12398765432112345678945678 0.12                    -> 12398765432112345678945678.12
-dqadd75033 add 12398765432112345678945678 0.123                   -> 12398765432112345678945678.123
-dqadd75034 add 12398765432112345678945678 0.1234                  -> 12398765432112345678945678.1234
-dqadd75035 add 12398765432112345678945678 0.12345                 -> 12398765432112345678945678.12345
-dqadd75036 add 12398765432112345678945678 0.123456                -> 12398765432112345678945678.123456
-dqadd75037 add 12398765432112345678945678 0.1234567               -> 12398765432112345678945678.1234567
-dqadd75038 add 12398765432112345678945678 0.12345678              -> 12398765432112345678945678.12345678
-dqadd75039 add 12398765432112345678945678 0.123456789             -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd75040 add 12398765432112345678945678 0.123456785             -> 12398765432112345678945678.12345678 Inexact Rounded
-dqadd75041 add 12398765432112345678945678 0.1234567850            -> 12398765432112345678945678.12345678 Inexact Rounded
-dqadd75042 add 12398765432112345678945678 0.1234567851            -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd75043 add 12398765432112345678945678 0.12345678501           -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd75044 add 12398765432112345678945678 0.123456785001          -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd75045 add 12398765432112345678945678 0.1234567850001         -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd75046 add 12398765432112345678945678 0.12345678500001        -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd75047 add 12398765432112345678945678 0.123456785000001       -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd75048 add 12398765432112345678945678 0.1234567850000001      -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd75049 add 12398765432112345678945678 0.1234567850000000      -> 12398765432112345678945678.12345678 Inexact Rounded
---                               90123456
-rounding: half_even
-dqadd75050 add 12398765432112345678945678 0.0234567750000000      -> 12398765432112345678945678.02345678 Inexact Rounded
-dqadd75051 add 12398765432112345678945678 0.0034567750000000      -> 12398765432112345678945678.00345678 Inexact Rounded
-dqadd75052 add 12398765432112345678945678 0.0004567750000000      -> 12398765432112345678945678.00045678 Inexact Rounded
-dqadd75053 add 12398765432112345678945678 0.0000567750000000      -> 12398765432112345678945678.00005678 Inexact Rounded
-dqadd75054 add 12398765432112345678945678 0.0000067750000000      -> 12398765432112345678945678.00000678 Inexact Rounded
-dqadd75055 add 12398765432112345678945678 0.0000007750000000      -> 12398765432112345678945678.00000078 Inexact Rounded
-dqadd75056 add 12398765432112345678945678 0.0000000750000000      -> 12398765432112345678945678.00000008 Inexact Rounded
-dqadd75057 add 12398765432112345678945678 0.0000000050000000      -> 12398765432112345678945678.00000000 Inexact Rounded
-dqadd75060 add 12398765432112345678945678 0.0234567750000001      -> 12398765432112345678945678.02345678 Inexact Rounded
-dqadd75061 add 12398765432112345678945678 0.0034567750000001      -> 12398765432112345678945678.00345678 Inexact Rounded
-dqadd75062 add 12398765432112345678945678 0.0004567750000001      -> 12398765432112345678945678.00045678 Inexact Rounded
-dqadd75063 add 12398765432112345678945678 0.0000567750000001      -> 12398765432112345678945678.00005678 Inexact Rounded
-dqadd75064 add 12398765432112345678945678 0.0000067750000001      -> 12398765432112345678945678.00000678 Inexact Rounded
-dqadd75065 add 12398765432112345678945678 0.0000007750000001      -> 12398765432112345678945678.00000078 Inexact Rounded
-dqadd75066 add 12398765432112345678945678 0.0000000750000001      -> 12398765432112345678945678.00000008 Inexact Rounded
-dqadd75067 add 12398765432112345678945678 0.0000000050000001      -> 12398765432112345678945678.00000001 Inexact Rounded
--- far-out residues (full coefficient gap is 16+15 digits)
-rounding: up
-dqadd75070 add 12398765432112345678945678 1E-8                    -> 12398765432112345678945678.00000001
-dqadd75071 add 12398765432112345678945678 1E-9                    -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75072 add 12398765432112345678945678 1E-10                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75073 add 12398765432112345678945678 1E-11                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75074 add 12398765432112345678945678 1E-12                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75075 add 12398765432112345678945678 1E-13                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75076 add 12398765432112345678945678 1E-14                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75077 add 12398765432112345678945678 1E-15                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75078 add 12398765432112345678945678 1E-16                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75079 add 12398765432112345678945678 1E-17                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75080 add 12398765432112345678945678 1E-18                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75081 add 12398765432112345678945678 1E-19                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75082 add 12398765432112345678945678 1E-20                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75083 add 12398765432112345678945678 1E-25                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75084 add 12398765432112345678945678 1E-30                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75085 add 12398765432112345678945678 1E-31                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75086 add 12398765432112345678945678 1E-32                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75087 add 12398765432112345678945678 1E-33                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75088 add 12398765432112345678945678 1E-34                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd75089 add 12398765432112345678945678 1E-35                   -> 12398765432112345678945678.00000001 Inexact Rounded
-
--- Null tests
-dqadd9990 add 10  # -> NaN Invalid_operation
-dqadd9991 add  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAnd.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAnd.decTest
deleted file mode 100644
index 57c416b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqAnd.decTest
+++ /dev/null
@@ -1,420 +0,0 @@
-------------------------------------------------------------------------
--- dqAnd.decTest -- digitwise logical AND for decQuads                --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- Sanity check (truth table)
-dqand001 and             0    0 ->    0
-dqand002 and             0    1 ->    0
-dqand003 and             1    0 ->    0
-dqand004 and             1    1 ->    1
-dqand005 and          1100 1010 -> 1000
--- and at msd and msd-1
---           1234567890123456789012345678901234
-dqand006 and 0000000000000000000000000000000000 0000000000000000000000000000000000 ->                  0
-dqand007 and 0000000000000000000000000000000000 1000000000000000000000000000000000 ->                  0
-dqand008 and 1000000000000000000000000000000000 0000000000000000000000000000000000 ->                  0
-dqand009 and 1000000000000000000000000000000000 1000000000000000000000000000000000 ->   1000000000000000000000000000000000
-dqand010 and 0000000000000000000000000000000000 0000000000000000000000000000000000 ->                  0
-dqand011 and 0000000000000000000000000000000000 0100000000000000000000000000000000 ->                  0
-dqand012 and 0100000000000000000000000000000000 0000000000000000000000000000000000 ->                  0
-dqand013 and 0100000000000000000000000000000000 0100000000000000000000000000000000 ->    100000000000000000000000000000000
-
--- Various lengths
---           1234567890123456789012345678901234
-
-dqand601 and 0111111111111111111111111111111111 1111111111111111111111111111111111  ->  111111111111111111111111111111111
-dqand602 and 1011111111111111111111111111111111 1111111111111111111111111111111111  -> 1011111111111111111111111111111111
-dqand603 and 1101111111111111111111111111111111 1111111111111111111111111111111111  -> 1101111111111111111111111111111111
-dqand604 and 1110111111111111111111111111111111 1111111111111111111111111111111111  -> 1110111111111111111111111111111111
-dqand605 and 1111011111111111111111111111111111 1111111111111111111111111111111111  -> 1111011111111111111111111111111111
-dqand606 and 1111101111111111111111111111111111 1111111111111111111111111111111111  -> 1111101111111111111111111111111111
-dqand607 and 1111110111111111111111111111111111 1111111111111111111111111111111111  -> 1111110111111111111111111111111111
-dqand608 and 1111111011111111111111111111111111 1111111111111111111111111111111111  -> 1111111011111111111111111111111111
-dqand609 and 1111111101111111111111111111111111 1111111111111111111111111111111111  -> 1111111101111111111111111111111111
-dqand610 and 1111111110111111111111111111111111 1111111111111111111111111111111111  -> 1111111110111111111111111111111111
-dqand611 and 1111111111011111111111111111111111 1111111111111111111111111111111111  -> 1111111111011111111111111111111111
-dqand612 and 1111111111101111111111111111111111 1111111111111111111111111111111111  -> 1111111111101111111111111111111111
-dqand613 and 1111111111110111111111111111111111 1111111111111111111111111111111111  -> 1111111111110111111111111111111111
-dqand614 and 1111111111111011111111111111111111 1111111111111111111111111111111111  -> 1111111111111011111111111111111111
-dqand615 and 1111111111111101111111111111111111 1111111111111111111111111111111111  -> 1111111111111101111111111111111111
-dqand616 and 1111111111111110111111111111111111 1111111111111111111111111111111111  -> 1111111111111110111111111111111111
-dqand617 and 1111111111111111011111111111111111 1111111111111111111111111111111111  -> 1111111111111111011111111111111111
-dqand618 and 1111111111111111101111111111111111 1111111111111111111111111111111111  -> 1111111111111111101111111111111111
-dqand619 and 1111111111111111110111111111111111 1111111111111111111111111111111111  -> 1111111111111111110111111111111111
-dqand620 and 1111111111111111111011111111111111 1111111111111111111111111111111111  -> 1111111111111111111011111111111111
-dqand621 and 1111111111111111111101111111111111 1111111111111111111111111111111111  -> 1111111111111111111101111111111111
-dqand622 and 1111111111111111111110111111111111 1111111111111111111111111111111111  -> 1111111111111111111110111111111111
-dqand623 and 1111111111111111111111011111111111 1111111111111111111111111111111111  -> 1111111111111111111111011111111111
-dqand624 and 1111111111111111111111101111111111 1111111111111111111111111111111111  -> 1111111111111111111111101111111111
-dqand625 and 1111111111111111111111110111111111 1111111111111111111111111111111111  -> 1111111111111111111111110111111111
-dqand626 and 1111111111111111111111111011111111 1111111111111111111111111111111111  -> 1111111111111111111111111011111111
-dqand627 and 1111111111111111111111111101111111 1111111111111111111111111111111111  -> 1111111111111111111111111101111111
-dqand628 and 1111111111111111111111111110111111 1111111111111111111111111111111111  -> 1111111111111111111111111110111111
-dqand629 and 1111111111111111111111111111011111 1111111111111111111111111111111111  -> 1111111111111111111111111111011111
-dqand630 and 1111111111111111111111111111101111 1111111111111111111111111111111111  -> 1111111111111111111111111111101111
-dqand631 and 1111111111111111111111111111110111 1111111111111111111111111111111111  -> 1111111111111111111111111111110111
-dqand632 and 1111111111111111111111111111111011 1111111111111111111111111111111111  -> 1111111111111111111111111111111011
-dqand633 and 1111111111111111111111111111111101 1111111111111111111111111111111111  -> 1111111111111111111111111111111101
-dqand634 and 1111111111111111111111111111111110 1111111111111111111111111111111111  -> 1111111111111111111111111111111110
-
-dqand641 and 1111111111111111111111111111111111 0111111111111111111111111111111111  ->  111111111111111111111111111111111
-dqand642 and 1111111111111111111111111111111111 1011111111111111111111111111111111  -> 1011111111111111111111111111111111
-dqand643 and 1111111111111111111111111111111111 1101111111111111111111111111111111  -> 1101111111111111111111111111111111
-dqand644 and 1111111111111111111111111111111111 1110111111111111111111111111111111  -> 1110111111111111111111111111111111
-dqand645 and 1111111111111111111111111111111111 1111011111111111111111111111111111  -> 1111011111111111111111111111111111
-dqand646 and 1111111111111111111111111111111111 1111101111111111111111111111111111  -> 1111101111111111111111111111111111
-dqand647 and 1111111111111111111111111111111111 1111110111111111111111111111111111  -> 1111110111111111111111111111111111
-dqand648 and 1111111111111111111111111111111111 1111111011111111111111111111111111  -> 1111111011111111111111111111111111
-dqand649 and 1111111111111111111111111111111111 1111111101111111111111111111111111  -> 1111111101111111111111111111111111
-dqand650 and 1111111111111111111111111111111111 1111111110111111111111111111111111  -> 1111111110111111111111111111111111
-dqand651 and 1111111111111111111111111111111111 1111111111011111111111111111111111  -> 1111111111011111111111111111111111
-dqand652 and 1111111111111111111111111111111111 1111111111101111111111111111111111  -> 1111111111101111111111111111111111
-dqand653 and 1111111111111111111111111111111111 1111111111110111111111111111111111  -> 1111111111110111111111111111111111
-dqand654 and 1111111111111111111111111111111111 1111111111111011111111111111111111  -> 1111111111111011111111111111111111
-dqand655 and 1111111111111111111111111111111111 1111111111111101111111111111111111  -> 1111111111111101111111111111111111
-dqand656 and 1111111111111111111111111111111111 1111111111111110111111111111111111  -> 1111111111111110111111111111111111
-dqand657 and 1111111111111111111111111111111111 1111111111111111011111111111111111  -> 1111111111111111011111111111111111
-dqand658 and 1111111111111111111111111111111111 1111111111111111101111111111111111  -> 1111111111111111101111111111111111
-dqand659 and 1111111111111111111111111111111111 1111111111111111110111111111111111  -> 1111111111111111110111111111111111
-dqand660 and 1111111111111111111111111111111111 1111111111111111111011111111111111  -> 1111111111111111111011111111111111
-dqand661 and 1111111111111111111111111111111111 1111111111111111111101111111111111  -> 1111111111111111111101111111111111
-dqand662 and 1111111111111111111111111111111111 1111111111111111111110111111111111  -> 1111111111111111111110111111111111
-dqand663 and 1111111111111111111111111111111111 1111111111111111111111011111111111  -> 1111111111111111111111011111111111
-dqand664 and 1111111111111111111111111111111111 1111111111111111111111101111111111  -> 1111111111111111111111101111111111
-dqand665 and 1111111111111111111111111111111111 1111111111111111111111110111111111  -> 1111111111111111111111110111111111
-dqand666 and 1111111111111111111111111111111111 1111111111111111111111111011111111  -> 1111111111111111111111111011111111
-dqand667 and 1111111111111111111111111111111111 1111111111111111111111111101111111  -> 1111111111111111111111111101111111
-dqand668 and 1111111111111111111111111111111111 1111111111111111111111111110111111  -> 1111111111111111111111111110111111
-dqand669 and 1111111111111111111111111111111111 1111111111111111111111111111011111  -> 1111111111111111111111111111011111
-dqand670 and 1111111111111111111111111111111111 1111111111111111111111111111101111  -> 1111111111111111111111111111101111
-dqand671 and 1111111111111111111111111111111111 1111111111111111111111111111110111  -> 1111111111111111111111111111110111
-dqand672 and 1111111111111111111111111111111111 1111111111111111111111111111111011  -> 1111111111111111111111111111111011
-dqand673 and 1111111111111111111111111111111111 1111111111111111111111111111111101  -> 1111111111111111111111111111111101
-dqand674 and 1111111111111111111111111111111111 1111111111111111111111111111111110  -> 1111111111111111111111111111111110
-dqand675 and 0111111111111111111111111111111111 1111111111111111111111111111111110  ->  111111111111111111111111111111110
-dqand676 and 1111111111111111111111111111111111 1111111111111111111111111111111110  -> 1111111111111111111111111111111110
-
-dqand021 and 1111111111111111 1111111111111111  ->  1111111111111111
-dqand024 and 1111111111111111  111111111111111  ->   111111111111111
-dqand025 and 1111111111111111   11111111111111  ->    11111111111111
-dqand026 and 1111111111111111    1111111111111  ->     1111111111111
-dqand027 and 1111111111111111     111111111111  ->      111111111111
-dqand028 and 1111111111111111      11111111111  ->       11111111111
-dqand029 and 1111111111111111       1111111111  ->        1111111111
-dqand030 and 1111111111111111        111111111  ->         111111111
-dqand031 and 1111111111111111         11111111  ->          11111111
-dqand032 and 1111111111111111          1111111  ->           1111111
-dqand033 and 1111111111111111           111111  ->            111111
-dqand034 and 1111111111111111            11111  ->             11111
-dqand035 and 1111111111111111             1111  ->              1111
-dqand036 and 1111111111111111              111  ->               111
-dqand037 and 1111111111111111               11  ->                11
-dqand038 and 1111111111111111                1  ->                 1
-dqand039 and 1111111111111111                0  ->                 0
-
-dqand040 and 1111111111111111    1111111111111111 ->  1111111111111111
-dqand041 and  111111111111111    1111111111111111 ->   111111111111111
-dqand042 and  111111111111111    1111111111111111 ->   111111111111111
-dqand043 and   11111111111111    1111111111111111 ->    11111111111111
-dqand044 and    1111111111111    1111111111111111 ->     1111111111111
-dqand045 and     111111111111    1111111111111111 ->      111111111111
-dqand046 and      11111111111    1111111111111111 ->       11111111111
-dqand047 and       1111111111    1111111111111111 ->        1111111111
-dqand048 and        111111111    1111111111111111 ->         111111111
-dqand049 and         11111111    1111111111111111 ->          11111111
-dqand050 and          1111111    1111111111111111 ->           1111111
-dqand051 and           111111    1111111111111111 ->            111111
-dqand052 and            11111    1111111111111111 ->             11111
-dqand053 and             1111    1111111111111111 ->              1111
-dqand054 and              111    1111111111111111 ->               111
-dqand055 and               11    1111111111111111 ->                11
-dqand056 and                1    1111111111111111 ->                 1
-dqand057 and                0    1111111111111111 ->                 0
-
-dqand150 and 1111111111  1  ->  1
-dqand151 and  111111111  1  ->  1
-dqand152 and   11111111  1  ->  1
-dqand153 and    1111111  1  ->  1
-dqand154 and     111111  1  ->  1
-dqand155 and      11111  1  ->  1
-dqand156 and       1111  1  ->  1
-dqand157 and        111  1  ->  1
-dqand158 and         11  1  ->  1
-dqand159 and          1  1  ->  1
-
-dqand160 and 1111111111  0  ->  0
-dqand161 and  111111111  0  ->  0
-dqand162 and   11111111  0  ->  0
-dqand163 and    1111111  0  ->  0
-dqand164 and     111111  0  ->  0
-dqand165 and      11111  0  ->  0
-dqand166 and       1111  0  ->  0
-dqand167 and        111  0  ->  0
-dqand168 and         11  0  ->  0
-dqand169 and          1  0  ->  0
-
-dqand170 and 1  1111111111  ->  1
-dqand171 and 1   111111111  ->  1
-dqand172 and 1    11111111  ->  1
-dqand173 and 1     1111111  ->  1
-dqand174 and 1      111111  ->  1
-dqand175 and 1       11111  ->  1
-dqand176 and 1        1111  ->  1
-dqand177 and 1         111  ->  1
-dqand178 and 1          11  ->  1
-dqand179 and 1           1  ->  1
-
-dqand180 and 0  1111111111  ->  0
-dqand181 and 0   111111111  ->  0
-dqand182 and 0    11111111  ->  0
-dqand183 and 0     1111111  ->  0
-dqand184 and 0      111111  ->  0
-dqand185 and 0       11111  ->  0
-dqand186 and 0        1111  ->  0
-dqand187 and 0         111  ->  0
-dqand188 and 0          11  ->  0
-dqand189 and 0           1  ->  0
-
-dqand090 and 011111111  111111111  ->   11111111
-dqand091 and 101111111  111111111  ->  101111111
-dqand092 and 110111111  111111111  ->  110111111
-dqand093 and 111011111  111111111  ->  111011111
-dqand094 and 111101111  111111111  ->  111101111
-dqand095 and 111110111  111111111  ->  111110111
-dqand096 and 111111011  111111111  ->  111111011
-dqand097 and 111111101  111111111  ->  111111101
-dqand098 and 111111110  111111111  ->  111111110
-
-dqand100 and 111111111  011111111  ->   11111111
-dqand101 and 111111111  101111111  ->  101111111
-dqand102 and 111111111  110111111  ->  110111111
-dqand103 and 111111111  111011111  ->  111011111
-dqand104 and 111111111  111101111  ->  111101111
-dqand105 and 111111111  111110111  ->  111110111
-dqand106 and 111111111  111111011  ->  111111011
-dqand107 and 111111111  111111101  ->  111111101
-dqand108 and 111111111  111111110  ->  111111110
-
--- non-0/1 should not be accepted, nor should signs
-dqand220 and 111111112  111111111  ->  NaN Invalid_operation
-dqand221 and 333333333  333333333  ->  NaN Invalid_operation
-dqand222 and 555555555  555555555  ->  NaN Invalid_operation
-dqand223 and 777777777  777777777  ->  NaN Invalid_operation
-dqand224 and 999999999  999999999  ->  NaN Invalid_operation
-dqand225 and 222222222  999999999  ->  NaN Invalid_operation
-dqand226 and 444444444  999999999  ->  NaN Invalid_operation
-dqand227 and 666666666  999999999  ->  NaN Invalid_operation
-dqand228 and 888888888  999999999  ->  NaN Invalid_operation
-dqand229 and 999999999  222222222  ->  NaN Invalid_operation
-dqand230 and 999999999  444444444  ->  NaN Invalid_operation
-dqand231 and 999999999  666666666  ->  NaN Invalid_operation
-dqand232 and 999999999  888888888  ->  NaN Invalid_operation
--- a few randoms
-dqand240 and  567468689 -934981942 ->  NaN Invalid_operation
-dqand241 and  567367689  934981942 ->  NaN Invalid_operation
-dqand242 and -631917772 -706014634 ->  NaN Invalid_operation
-dqand243 and -756253257  138579234 ->  NaN Invalid_operation
-dqand244 and  835590149  567435400 ->  NaN Invalid_operation
--- test MSD
-dqand250 and  2000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand251 and  7000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand252 and  8000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand253 and  9000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand254 and  2000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand255 and  7000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand256 and  8000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand257 and  9000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand258 and  1000000111000111000111000000000000 2000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand259 and  1000000111000111000111000000000000 7000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand260 and  1000000111000111000111000000000000 8000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand261 and  1000000111000111000111000000000000 9000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand262 and  0000000111000111000111000000000000 2000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand263 and  0000000111000111000111000000000000 7000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand264 and  0000000111000111000111000000000000 8000000111000111000111000000000000 ->  NaN Invalid_operation
-dqand265 and  0000000111000111000111000000000000 9000000111000111000111000000000000 ->  NaN Invalid_operation
--- test MSD-1
-dqand270 and  0200000111000111000111001000000000 1000000111000111000111100000000010 ->  NaN Invalid_operation
-dqand271 and  0700000111000111000111000100000000 1000000111000111000111010000000100 ->  NaN Invalid_operation
-dqand272 and  0800000111000111000111000010000000 1000000111000111000111001000001000 ->  NaN Invalid_operation
-dqand273 and  0900000111000111000111000001000000 1000000111000111000111000100010000 ->  NaN Invalid_operation
-dqand274 and  1000000111000111000111000000100000 0200000111000111000111000010100000 ->  NaN Invalid_operation
-dqand275 and  1000000111000111000111000000010000 0700000111000111000111000001000000 ->  NaN Invalid_operation
-dqand276 and  1000000111000111000111000000001000 0800000111000111000111000010100000 ->  NaN Invalid_operation
-dqand277 and  1000000111000111000111000000000100 0900000111000111000111000000010000 ->  NaN Invalid_operation
--- test LSD
-dqand280 and  0010000111000111000111000000000002 1000000111000111000111000100000001 ->  NaN Invalid_operation
-dqand281 and  0001000111000111000111000000000007 1000000111000111000111001000000011 ->  NaN Invalid_operation
-dqand282 and  0000000111000111000111100000000008 1000000111000111000111010000000001 ->  NaN Invalid_operation
-dqand283 and  0000000111000111000111010000000009 1000000111000111000111100000000001 ->  NaN Invalid_operation
-dqand284 and  1000000111000111000111001000000000 0001000111000111000111000000000002 ->  NaN Invalid_operation
-dqand285 and  1000000111000111000111000100000000 0010000111000111000111000000000007 ->  NaN Invalid_operation
-dqand286 and  1000000111000111000111000010000000 0100000111000111000111000000000008 ->  NaN Invalid_operation
-dqand287 and  1000000111000111000111000001000000 1000000111000111000111000000000009 ->  NaN Invalid_operation
--- test Middie
-dqand288 and  0010000111000111000111000020000000 1000000111000111000111001000000000 ->  NaN Invalid_operation
-dqand289 and  0001000111000111000111000070000001 1000000111000111000111000100000000 ->  NaN Invalid_operation
-dqand290 and  0000000111000111000111100080000010 1000000111000111000111000010000000 ->  NaN Invalid_operation
-dqand291 and  0000000111000111000111010090000100 1000000111000111000111000001000000 ->  NaN Invalid_operation
-dqand292 and  1000000111000111000111001000001000 0000000111000111000111000020100000 ->  NaN Invalid_operation
-dqand293 and  1000000111000111000111000100010000 0000000111000111000111000070010000 ->  NaN Invalid_operation
-dqand294 and  1000000111000111000111000010100000 0000000111000111000111000080001000 ->  NaN Invalid_operation
-dqand295 and  1000000111000111000111000001000000 0000000111000111000111000090000100 ->  NaN Invalid_operation
--- signs
-dqand296 and -1000000111000111000111000001000000 -0000001110001110001110010000000100 ->  NaN Invalid_operation
-dqand297 and -1000000111000111000111000001000000  0000001110001110001110000010000100 ->  NaN Invalid_operation
-dqand298 and  1000000111000111000111000001000000 -0000001110001110001110001000000100 ->  NaN Invalid_operation
-dqand299 and  1000000111000111000111000001000000  0000001110001110001110000011000100 ->  110000110000110000001000000
-
--- Nmax, Nmin, Ntiny-like
-dqand331 and  2   9.99999999E+999     -> NaN Invalid_operation
-dqand332 and  3   1E-999              -> NaN Invalid_operation
-dqand333 and  4   1.00000000E-999     -> NaN Invalid_operation
-dqand334 and  5   1E-900              -> NaN Invalid_operation
-dqand335 and  6   -1E-900             -> NaN Invalid_operation
-dqand336 and  7   -1.00000000E-999    -> NaN Invalid_operation
-dqand337 and  8   -1E-999             -> NaN Invalid_operation
-dqand338 and  9   -9.99999999E+999    -> NaN Invalid_operation
-dqand341 and  9.99999999E+999     -18 -> NaN Invalid_operation
-dqand342 and  1E-999               01 -> NaN Invalid_operation
-dqand343 and  1.00000000E-999     -18 -> NaN Invalid_operation
-dqand344 and  1E-900               18 -> NaN Invalid_operation
-dqand345 and  -1E-900             -10 -> NaN Invalid_operation
-dqand346 and  -1.00000000E-999     18 -> NaN Invalid_operation
-dqand347 and  -1E-999              10 -> NaN Invalid_operation
-dqand348 and  -9.99999999E+999    -18 -> NaN Invalid_operation
-
--- A few other non-integers
-dqand361 and  1.0                  1  -> NaN Invalid_operation
-dqand362 and  1E+1                 1  -> NaN Invalid_operation
-dqand363 and  0.0                  1  -> NaN Invalid_operation
-dqand364 and  0E+1                 1  -> NaN Invalid_operation
-dqand365 and  9.9                  1  -> NaN Invalid_operation
-dqand366 and  9E+1                 1  -> NaN Invalid_operation
-dqand371 and  0 1.0                   -> NaN Invalid_operation
-dqand372 and  0 1E+1                  -> NaN Invalid_operation
-dqand373 and  0 0.0                   -> NaN Invalid_operation
-dqand374 and  0 0E+1                  -> NaN Invalid_operation
-dqand375 and  0 9.9                   -> NaN Invalid_operation
-dqand376 and  0 9E+1                  -> NaN Invalid_operation
-
--- All Specials are in error
-dqand780 and -Inf  -Inf   -> NaN Invalid_operation
-dqand781 and -Inf  -1000  -> NaN Invalid_operation
-dqand782 and -Inf  -1     -> NaN Invalid_operation
-dqand783 and -Inf  -0     -> NaN Invalid_operation
-dqand784 and -Inf   0     -> NaN Invalid_operation
-dqand785 and -Inf   1     -> NaN Invalid_operation
-dqand786 and -Inf   1000  -> NaN Invalid_operation
-dqand787 and -1000 -Inf   -> NaN Invalid_operation
-dqand788 and -Inf  -Inf   -> NaN Invalid_operation
-dqand789 and -1    -Inf   -> NaN Invalid_operation
-dqand790 and -0    -Inf   -> NaN Invalid_operation
-dqand791 and  0    -Inf   -> NaN Invalid_operation
-dqand792 and  1    -Inf   -> NaN Invalid_operation
-dqand793 and  1000 -Inf   -> NaN Invalid_operation
-dqand794 and  Inf  -Inf   -> NaN Invalid_operation
-
-dqand800 and  Inf  -Inf   -> NaN Invalid_operation
-dqand801 and  Inf  -1000  -> NaN Invalid_operation
-dqand802 and  Inf  -1     -> NaN Invalid_operation
-dqand803 and  Inf  -0     -> NaN Invalid_operation
-dqand804 and  Inf   0     -> NaN Invalid_operation
-dqand805 and  Inf   1     -> NaN Invalid_operation
-dqand806 and  Inf   1000  -> NaN Invalid_operation
-dqand807 and  Inf   Inf   -> NaN Invalid_operation
-dqand808 and -1000  Inf   -> NaN Invalid_operation
-dqand809 and -Inf   Inf   -> NaN Invalid_operation
-dqand810 and -1     Inf   -> NaN Invalid_operation
-dqand811 and -0     Inf   -> NaN Invalid_operation
-dqand812 and  0     Inf   -> NaN Invalid_operation
-dqand813 and  1     Inf   -> NaN Invalid_operation
-dqand814 and  1000  Inf   -> NaN Invalid_operation
-dqand815 and  Inf   Inf   -> NaN Invalid_operation
-
-dqand821 and  NaN -Inf    -> NaN Invalid_operation
-dqand822 and  NaN -1000   -> NaN Invalid_operation
-dqand823 and  NaN -1      -> NaN Invalid_operation
-dqand824 and  NaN -0      -> NaN Invalid_operation
-dqand825 and  NaN  0      -> NaN Invalid_operation
-dqand826 and  NaN  1      -> NaN Invalid_operation
-dqand827 and  NaN  1000   -> NaN Invalid_operation
-dqand828 and  NaN  Inf    -> NaN Invalid_operation
-dqand829 and  NaN  NaN    -> NaN Invalid_operation
-dqand830 and -Inf  NaN    -> NaN Invalid_operation
-dqand831 and -1000 NaN    -> NaN Invalid_operation
-dqand832 and -1    NaN    -> NaN Invalid_operation
-dqand833 and -0    NaN    -> NaN Invalid_operation
-dqand834 and  0    NaN    -> NaN Invalid_operation
-dqand835 and  1    NaN    -> NaN Invalid_operation
-dqand836 and  1000 NaN    -> NaN Invalid_operation
-dqand837 and  Inf  NaN    -> NaN Invalid_operation
-
-dqand841 and  sNaN -Inf   ->  NaN  Invalid_operation
-dqand842 and  sNaN -1000  ->  NaN  Invalid_operation
-dqand843 and  sNaN -1     ->  NaN  Invalid_operation
-dqand844 and  sNaN -0     ->  NaN  Invalid_operation
-dqand845 and  sNaN  0     ->  NaN  Invalid_operation
-dqand846 and  sNaN  1     ->  NaN  Invalid_operation
-dqand847 and  sNaN  1000  ->  NaN  Invalid_operation
-dqand848 and  sNaN  NaN   ->  NaN  Invalid_operation
-dqand849 and  sNaN sNaN   ->  NaN  Invalid_operation
-dqand850 and  NaN  sNaN   ->  NaN  Invalid_operation
-dqand851 and -Inf  sNaN   ->  NaN  Invalid_operation
-dqand852 and -1000 sNaN   ->  NaN  Invalid_operation
-dqand853 and -1    sNaN   ->  NaN  Invalid_operation
-dqand854 and -0    sNaN   ->  NaN  Invalid_operation
-dqand855 and  0    sNaN   ->  NaN  Invalid_operation
-dqand856 and  1    sNaN   ->  NaN  Invalid_operation
-dqand857 and  1000 sNaN   ->  NaN  Invalid_operation
-dqand858 and  Inf  sNaN   ->  NaN  Invalid_operation
-dqand859 and  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqand861 and  NaN1   -Inf    -> NaN Invalid_operation
-dqand862 and +NaN2   -1000   -> NaN Invalid_operation
-dqand863 and  NaN3    1000   -> NaN Invalid_operation
-dqand864 and  NaN4    Inf    -> NaN Invalid_operation
-dqand865 and  NaN5   +NaN6   -> NaN Invalid_operation
-dqand866 and -Inf     NaN7   -> NaN Invalid_operation
-dqand867 and -1000    NaN8   -> NaN Invalid_operation
-dqand868 and  1000    NaN9   -> NaN Invalid_operation
-dqand869 and  Inf    +NaN10  -> NaN Invalid_operation
-dqand871 and  sNaN11  -Inf   -> NaN Invalid_operation
-dqand872 and  sNaN12  -1000  -> NaN Invalid_operation
-dqand873 and  sNaN13   1000  -> NaN Invalid_operation
-dqand874 and  sNaN14   NaN17 -> NaN Invalid_operation
-dqand875 and  sNaN15  sNaN18 -> NaN Invalid_operation
-dqand876 and  NaN16   sNaN19 -> NaN Invalid_operation
-dqand877 and -Inf    +sNaN20 -> NaN Invalid_operation
-dqand878 and -1000    sNaN21 -> NaN Invalid_operation
-dqand879 and  1000    sNaN22 -> NaN Invalid_operation
-dqand880 and  Inf     sNaN23 -> NaN Invalid_operation
-dqand881 and +NaN25  +sNaN24 -> NaN Invalid_operation
-dqand882 and -NaN26    NaN28 -> NaN Invalid_operation
-dqand883 and -sNaN27  sNaN29 -> NaN Invalid_operation
-dqand884 and  1000    -NaN30 -> NaN Invalid_operation
-dqand885 and  1000   -sNaN31 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqBase.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqBase.decTest
deleted file mode 100644
index 6bb4633..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqBase.decTest
+++ /dev/null
@@ -1,1081 +0,0 @@
-------------------------------------------------------------------------
--- dqBase.decTest -- base decQuad <--> string conversions             --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This file tests base conversions from string to a decimal number
--- and back to a string (in Scientific form)
-
--- Note that unlike other operations the operand is subject to rounding
--- to conform to emax and precision settings (that is, numbers will
--- conform to rules and exponent will be in permitted range).  The
--- 'left hand side', therefore, may have numbers that cannot be
--- represented in a decQuad.  Some testcases go to the limit of the
--- next-wider format, and hence these testcases may also be used to
--- test narrowing and widening operations.
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
-dqbas001 toSci       0 -> 0
-dqbas002 toSci       1 -> 1
-dqbas003 toSci     1.0 -> 1.0
-dqbas004 toSci    1.00 -> 1.00
-dqbas005 toSci      10 -> 10
-dqbas006 toSci    1000 -> 1000
-dqbas007 toSci    10.0 -> 10.0
-dqbas008 toSci    10.1 -> 10.1
-dqbas009 toSci    10.4 -> 10.4
-dqbas010 toSci    10.5 -> 10.5
-dqbas011 toSci    10.6 -> 10.6
-dqbas012 toSci    10.9 -> 10.9
-dqbas013 toSci    11.0 -> 11.0
-dqbas014 toSci  1.234 -> 1.234
-dqbas015 toSci  0.123 -> 0.123
-dqbas016 toSci  0.012 -> 0.012
-dqbas017 toSci  -0    -> -0
-dqbas018 toSci  -0.0  -> -0.0
-dqbas019 toSci -00.00 -> -0.00
-
-dqbas021 toSci     -1 -> -1
-dqbas022 toSci   -1.0 -> -1.0
-dqbas023 toSci   -0.1 -> -0.1
-dqbas024 toSci   -9.1 -> -9.1
-dqbas025 toSci   -9.11 -> -9.11
-dqbas026 toSci   -9.119 -> -9.119
-dqbas027 toSci   -9.999 -> -9.999
-
-dqbas030 toSci  '123456789.123456'   -> '123456789.123456'
-dqbas031 toSci  '123456789.000000'   -> '123456789.000000'
-dqbas032 toSci   '123456789123456'   -> '123456789123456'
-dqbas033 toSci   '0.0000123456789'   -> '0.0000123456789'
-dqbas034 toSci  '0.00000123456789'   -> '0.00000123456789'
-dqbas035 toSci '0.000000123456789'   -> '1.23456789E-7'
-dqbas036 toSci '0.0000000123456789'  -> '1.23456789E-8'
-
-dqbas037 toSci '0.123456789012344'   -> '0.123456789012344'
-dqbas038 toSci '0.123456789012345'   -> '0.123456789012345'
-
--- test finite bounds (Negs of, then 0, Ntiny, Nmin, other, Nmax)
-dqbsn001 toSci -9.999999999999999999999999999999999E+6144 -> -9.999999999999999999999999999999999E+6144
-dqbsn002 toSci -1E-6143 -> -1E-6143
-dqbsn003 toSci -1E-6176 -> -1E-6176 Subnormal
-dqbsn004 toSci -0 -> -0
-dqbsn005 toSci +0 ->  0
-dqbsn006 toSci +1E-6176 ->  1E-6176 Subnormal
-dqbsn007 toSci +1E-6143 ->  1E-6143
-dqbsn008 toSci +9.999999999999999999999999999999999E+6144 ->  9.999999999999999999999999999999999E+6144
-
--- String [many more examples are implicitly tested elsewhere]
--- strings without E cannot generate E in result
-dqbas040 toSci "12"        -> '12'
-dqbas041 toSci "-76"       -> '-76'
-dqbas042 toSci "12.76"     -> '12.76'
-dqbas043 toSci "+12.76"    -> '12.76'
-dqbas044 toSci "012.76"    -> '12.76'
-dqbas045 toSci "+0.003"    -> '0.003'
-dqbas046 toSci "17."       -> '17'
-dqbas047 toSci ".5"        -> '0.5'
-dqbas048 toSci "044"       -> '44'
-dqbas049 toSci "0044"      -> '44'
-dqbas050 toSci "0.0005"      -> '0.0005'
-dqbas051 toSci "00.00005"    -> '0.00005'
-dqbas052 toSci "0.000005"    -> '0.000005'
-dqbas053 toSci "0.0000050"   -> '0.0000050'
-dqbas054 toSci "0.0000005"   -> '5E-7'
-dqbas055 toSci "0.00000005"  -> '5E-8'
-dqbas056 toSci "12345678.543210" -> '12345678.543210'
-dqbas057 toSci "2345678.543210" -> '2345678.543210'
-dqbas058 toSci "345678.543210" -> '345678.543210'
-dqbas059 toSci "0345678.54321" -> '345678.54321'
-dqbas060 toSci "345678.5432" -> '345678.5432'
-dqbas061 toSci "+345678.5432" -> '345678.5432'
-dqbas062 toSci "+0345678.5432" -> '345678.5432'
-dqbas063 toSci "+00345678.5432" -> '345678.5432'
-dqbas064 toSci "-345678.5432"  -> '-345678.5432'
-dqbas065 toSci "-0345678.5432"  -> '-345678.5432'
-dqbas066 toSci "-00345678.5432"  -> '-345678.5432'
--- examples
-dqbas067 toSci "5E-6"        -> '0.000005'
-dqbas068 toSci "50E-7"       -> '0.0000050'
-dqbas069 toSci "5E-7"        -> '5E-7'
-
--- [No exotics as no Unicode]
-
--- rounded with dots in all (including edge) places
-dqbas071 toSci  .1234567891234567890123456780123456123  -> 0.1234567891234567890123456780123456 Inexact Rounded
-dqbas072 toSci  1.234567891234567890123456780123456123  ->  1.234567891234567890123456780123456 Inexact Rounded
-dqbas073 toSci  12.34567891234567890123456780123456123  ->  12.34567891234567890123456780123456 Inexact Rounded
-dqbas074 toSci  123.4567891234567890123456780123456123  ->  123.4567891234567890123456780123456 Inexact Rounded
-dqbas075 toSci  1234.567891234567890123456780123456123  ->  1234.567891234567890123456780123456 Inexact Rounded
-dqbas076 toSci  12345.67891234567890123456780123456123  ->  12345.67891234567890123456780123456 Inexact Rounded
-dqbas077 toSci  123456.7891234567890123456780123456123  ->  123456.7891234567890123456780123456 Inexact Rounded
-dqbas078 toSci  1234567.891234567890123456780123456123  ->  1234567.891234567890123456780123456 Inexact Rounded
-dqbas079 toSci  12345678.91234567890123456780123456123  ->  12345678.91234567890123456780123456 Inexact Rounded
-dqbas080 toSci  123456789.1234567890123456780123456123  ->  123456789.1234567890123456780123456 Inexact Rounded
-dqbas081 toSci  1234567891.234567890123456780123456123  ->  1234567891.234567890123456780123456 Inexact Rounded
-dqbas082 toSci  12345678912.34567890123456780123456123  ->  12345678912.34567890123456780123456 Inexact Rounded
-dqbas083 toSci  123456789123.4567890123456780123456123  ->  123456789123.4567890123456780123456 Inexact Rounded
-dqbas084 toSci  1234567891234.567890123456780123456123  ->  1234567891234.567890123456780123456 Inexact Rounded
-dqbas085 toSci  12345678912345.67890123456780123456123  ->  12345678912345.67890123456780123456 Inexact Rounded
-dqbas086 toSci  123456789123456.7890123456780123456123  ->  123456789123456.7890123456780123456 Inexact Rounded
-dqbas087 toSci  1234567891234567.890123456780123456123  ->  1234567891234567.890123456780123456 Inexact Rounded
-dqbas088 toSci  12345678912345678.90123456780123456123  ->  12345678912345678.90123456780123456 Inexact Rounded
-dqbas089 toSci  123456789123456789.0123456780123456123  ->  123456789123456789.0123456780123456 Inexact Rounded
-dqbas090 toSci  1234567891234567890.123456780123456123  ->  1234567891234567890.123456780123456 Inexact Rounded
-dqbas091 toSci  12345678912345678901.23456780123456123  ->  12345678912345678901.23456780123456 Inexact Rounded
-dqbas092 toSci  123456789123456789012.3456780123456123  ->  123456789123456789012.3456780123456 Inexact Rounded
-dqbas093 toSci  1234567891234567890123.456780123456123  ->  1234567891234567890123.456780123456 Inexact Rounded
-dqbas094 toSci  12345678912345678901234.56780123456123  ->  12345678912345678901234.56780123456 Inexact Rounded
-dqbas095 toSci  123456789123456789012345.6780123456123  ->  123456789123456789012345.6780123456 Inexact Rounded
-dqbas096 toSci  1234567891234567890123456.780123456123  ->  1234567891234567890123456.780123456 Inexact Rounded
-dqbas097 toSci  12345678912345678901234567.80123456123  ->  12345678912345678901234567.80123456 Inexact Rounded
-dqbas098 toSci  123456789123456789012345678.0123456123  ->  123456789123456789012345678.0123456 Inexact Rounded
-dqbas099 toSci  1234567891234567890123456780.123456123  ->  1234567891234567890123456780.123456 Inexact Rounded
-dqbas100 toSci  12345678912345678901234567801.23456123  ->  12345678912345678901234567801.23456 Inexact Rounded
-dqbas101 toSci  123456789123456789012345678012.3456123  ->  123456789123456789012345678012.3456 Inexact Rounded
-dqbas102 toSci  1234567891234567890123456780123.456123  ->  1234567891234567890123456780123.456 Inexact Rounded
-dqbas103 toSci  12345678912345678901234567801234.56123  ->  12345678912345678901234567801234.56 Inexact Rounded
-dqbas104 toSci  123456789123456789012345678012345.6123  ->  123456789123456789012345678012345.6 Inexact Rounded
-dqbas105 toSci  1234567891234567890123456780123456.123  ->  1234567891234567890123456780123456  Inexact Rounded
-dqbas106 toSci  12345678912345678901234567801234561.23  ->  1.234567891234567890123456780123456E+34 Inexact Rounded
-dqbas107 toSci  123456789123456789012345678012345612.3  ->  1.234567891234567890123456780123456E+35 Inexact Rounded
-dqbas108 toSci  1234567891234567890123456780123456123.  ->  1.234567891234567890123456780123456E+36 Inexact Rounded
--- 123456789012345678
-
--- Numbers with E
-dqbas130 toSci "0.000E-1"  -> '0.0000'
-dqbas131 toSci "0.000E-2"  -> '0.00000'
-dqbas132 toSci "0.000E-3"  -> '0.000000'
-dqbas133 toSci "0.000E-4"  -> '0E-7'
-dqbas134 toSci "0.00E-2"   -> '0.0000'
-dqbas135 toSci "0.00E-3"   -> '0.00000'
-dqbas136 toSci "0.00E-4"   -> '0.000000'
-dqbas137 toSci "0.00E-5"   -> '0E-7'
-dqbas138 toSci "+0E+9"     -> '0E+9'
-dqbas139 toSci "-0E+9"     -> '-0E+9'
-dqbas140 toSci "1E+9"      -> '1E+9'
-dqbas141 toSci "1e+09"     -> '1E+9'
-dqbas142 toSci "1E+90"     -> '1E+90'
-dqbas143 toSci "+1E+009"   -> '1E+9'
-dqbas144 toSci "0E+9"      -> '0E+9'
-dqbas145 toSci "1E+9"      -> '1E+9'
-dqbas146 toSci "1E+09"     -> '1E+9'
-dqbas147 toSci "1e+90"     -> '1E+90'
-dqbas148 toSci "1E+009"    -> '1E+9'
-dqbas149 toSci "000E+9"    -> '0E+9'
-dqbas150 toSci "1E9"       -> '1E+9'
-dqbas151 toSci "1e09"      -> '1E+9'
-dqbas152 toSci "1E90"      -> '1E+90'
-dqbas153 toSci "1E009"     -> '1E+9'
-dqbas154 toSci "0E9"       -> '0E+9'
-dqbas155 toSci "0.000e+0"  -> '0.000'
-dqbas156 toSci "0.000E-1"  -> '0.0000'
-dqbas157 toSci "4E+9"      -> '4E+9'
-dqbas158 toSci "44E+9"     -> '4.4E+10'
-dqbas159 toSci "0.73e-7"   -> '7.3E-8'
-dqbas160 toSci "00E+9"     -> '0E+9'
-dqbas161 toSci "00E-9"     -> '0E-9'
-dqbas162 toSci "10E+9"     -> '1.0E+10'
-dqbas163 toSci "10E+09"    -> '1.0E+10'
-dqbas164 toSci "10e+90"    -> '1.0E+91'
-dqbas165 toSci "10E+009"   -> '1.0E+10'
-dqbas166 toSci "100e+9"    -> '1.00E+11'
-dqbas167 toSci "100e+09"   -> '1.00E+11'
-dqbas168 toSci "100E+90"   -> '1.00E+92'
-dqbas169 toSci "100e+009"  -> '1.00E+11'
-
-dqbas170 toSci "1.265"     -> '1.265'
-dqbas171 toSci "1.265E-20" -> '1.265E-20'
-dqbas172 toSci "1.265E-8"  -> '1.265E-8'
-dqbas173 toSci "1.265E-4"  -> '0.0001265'
-dqbas174 toSci "1.265E-3"  -> '0.001265'
-dqbas175 toSci "1.265E-2"  -> '0.01265'
-dqbas176 toSci "1.265E-1"  -> '0.1265'
-dqbas177 toSci "1.265E-0"  -> '1.265'
-dqbas178 toSci "1.265E+1"  -> '12.65'
-dqbas179 toSci "1.265E+2"  -> '126.5'
-dqbas180 toSci "1.265E+3"  -> '1265'
-dqbas181 toSci "1.265E+4"  -> '1.265E+4'
-dqbas182 toSci "1.265E+8"  -> '1.265E+8'
-dqbas183 toSci "1.265E+20" -> '1.265E+20'
-
-dqbas190 toSci "12.65"     -> '12.65'
-dqbas191 toSci "12.65E-20" -> '1.265E-19'
-dqbas192 toSci "12.65E-8"  -> '1.265E-7'
-dqbas193 toSci "12.65E-4"  -> '0.001265'
-dqbas194 toSci "12.65E-3"  -> '0.01265'
-dqbas195 toSci "12.65E-2"  -> '0.1265'
-dqbas196 toSci "12.65E-1"  -> '1.265'
-dqbas197 toSci "12.65E-0"  -> '12.65'
-dqbas198 toSci "12.65E+1"  -> '126.5'
-dqbas199 toSci "12.65E+2"  -> '1265'
-dqbas200 toSci "12.65E+3"  -> '1.265E+4'
-dqbas201 toSci "12.65E+4"  -> '1.265E+5'
-dqbas202 toSci "12.65E+8"  -> '1.265E+9'
-dqbas203 toSci "12.65E+20" -> '1.265E+21'
-
-dqbas210 toSci "126.5"     -> '126.5'
-dqbas211 toSci "126.5E-20" -> '1.265E-18'
-dqbas212 toSci "126.5E-8"  -> '0.000001265'
-dqbas213 toSci "126.5E-4"  -> '0.01265'
-dqbas214 toSci "126.5E-3"  -> '0.1265'
-dqbas215 toSci "126.5E-2"  -> '1.265'
-dqbas216 toSci "126.5E-1"  -> '12.65'
-dqbas217 toSci "126.5E-0"  -> '126.5'
-dqbas218 toSci "126.5E+1"  -> '1265'
-dqbas219 toSci "126.5E+2"  -> '1.265E+4'
-dqbas220 toSci "126.5E+3"  -> '1.265E+5'
-dqbas221 toSci "126.5E+4"  -> '1.265E+6'
-dqbas222 toSci "126.5E+8"  -> '1.265E+10'
-dqbas223 toSci "126.5E+20" -> '1.265E+22'
-
-dqbas230 toSci "1265"     -> '1265'
-dqbas231 toSci "1265E-20" -> '1.265E-17'
-dqbas232 toSci "1265E-8"  -> '0.00001265'
-dqbas233 toSci "1265E-4"  -> '0.1265'
-dqbas234 toSci "1265E-3"  -> '1.265'
-dqbas235 toSci "1265E-2"  -> '12.65'
-dqbas236 toSci "1265E-1"  -> '126.5'
-dqbas237 toSci "1265E-0"  -> '1265'
-dqbas238 toSci "1265E+1"  -> '1.265E+4'
-dqbas239 toSci "1265E+2"  -> '1.265E+5'
-dqbas240 toSci "1265E+3"  -> '1.265E+6'
-dqbas241 toSci "1265E+4"  -> '1.265E+7'
-dqbas242 toSci "1265E+8"  -> '1.265E+11'
-dqbas243 toSci "1265E+20" -> '1.265E+23'
-
-dqbas250 toSci "0.1265"     -> '0.1265'
-dqbas251 toSci "0.1265E-20" -> '1.265E-21'
-dqbas252 toSci "0.1265E-8"  -> '1.265E-9'
-dqbas253 toSci "0.1265E-4"  -> '0.00001265'
-dqbas254 toSci "0.1265E-3"  -> '0.0001265'
-dqbas255 toSci "0.1265E-2"  -> '0.001265'
-dqbas256 toSci "0.1265E-1"  -> '0.01265'
-dqbas257 toSci "0.1265E-0"  -> '0.1265'
-dqbas258 toSci "0.1265E+1"  -> '1.265'
-dqbas259 toSci "0.1265E+2"  -> '12.65'
-dqbas260 toSci "0.1265E+3"  -> '126.5'
-dqbas261 toSci "0.1265E+4"  -> '1265'
-dqbas262 toSci "0.1265E+8"  -> '1.265E+7'
-dqbas263 toSci "0.1265E+20" -> '1.265E+19'
-
--- some more negative zeros [systematic tests below]
-dqbas290 toSci "-0.000E-1"  -> '-0.0000'
-dqbas291 toSci "-0.000E-2"  -> '-0.00000'
-dqbas292 toSci "-0.000E-3"  -> '-0.000000'
-dqbas293 toSci "-0.000E-4"  -> '-0E-7'
-dqbas294 toSci "-0.00E-2"   -> '-0.0000'
-dqbas295 toSci "-0.00E-3"   -> '-0.00000'
-dqbas296 toSci "-0.0E-2"    -> '-0.000'
-dqbas297 toSci "-0.0E-3"    -> '-0.0000'
-dqbas298 toSci "-0E-2"      -> '-0.00'
-dqbas299 toSci "-0E-3"      -> '-0.000'
-
--- Engineering notation tests
-dqbas301  toSci 10e12  -> 1.0E+13
-dqbas302  toEng 10e12  -> 10E+12
-dqbas303  toSci 10e11  -> 1.0E+12
-dqbas304  toEng 10e11  -> 1.0E+12
-dqbas305  toSci 10e10  -> 1.0E+11
-dqbas306  toEng 10e10  -> 100E+9
-dqbas307  toSci 10e9   -> 1.0E+10
-dqbas308  toEng 10e9   -> 10E+9
-dqbas309  toSci 10e8   -> 1.0E+9
-dqbas310  toEng 10e8   -> 1.0E+9
-dqbas311  toSci 10e7   -> 1.0E+8
-dqbas312  toEng 10e7   -> 100E+6
-dqbas313  toSci 10e6   -> 1.0E+7
-dqbas314  toEng 10e6   -> 10E+6
-dqbas315  toSci 10e5   -> 1.0E+6
-dqbas316  toEng 10e5   -> 1.0E+6
-dqbas317  toSci 10e4   -> 1.0E+5
-dqbas318  toEng 10e4   -> 100E+3
-dqbas319  toSci 10e3   -> 1.0E+4
-dqbas320  toEng 10e3   -> 10E+3
-dqbas321  toSci 10e2   -> 1.0E+3
-dqbas322  toEng 10e2   -> 1.0E+3
-dqbas323  toSci 10e1   -> 1.0E+2
-dqbas324  toEng 10e1   -> 100
-dqbas325  toSci 10e0   -> 10
-dqbas326  toEng 10e0   -> 10
-dqbas327  toSci 10e-1  -> 1.0
-dqbas328  toEng 10e-1  -> 1.0
-dqbas329  toSci 10e-2  -> 0.10
-dqbas330  toEng 10e-2  -> 0.10
-dqbas331  toSci 10e-3  -> 0.010
-dqbas332  toEng 10e-3  -> 0.010
-dqbas333  toSci 10e-4  -> 0.0010
-dqbas334  toEng 10e-4  -> 0.0010
-dqbas335  toSci 10e-5  -> 0.00010
-dqbas336  toEng 10e-5  -> 0.00010
-dqbas337  toSci 10e-6  -> 0.000010
-dqbas338  toEng 10e-6  -> 0.000010
-dqbas339  toSci 10e-7  -> 0.0000010
-dqbas340  toEng 10e-7  -> 0.0000010
-dqbas341  toSci 10e-8  -> 1.0E-7
-dqbas342  toEng 10e-8  -> 100E-9
-dqbas343  toSci 10e-9  -> 1.0E-8
-dqbas344  toEng 10e-9  -> 10E-9
-dqbas345  toSci 10e-10 -> 1.0E-9
-dqbas346  toEng 10e-10 -> 1.0E-9
-dqbas347  toSci 10e-11 -> 1.0E-10
-dqbas348  toEng 10e-11 -> 100E-12
-dqbas349  toSci 10e-12 -> 1.0E-11
-dqbas350  toEng 10e-12 -> 10E-12
-dqbas351  toSci 10e-13 -> 1.0E-12
-dqbas352  toEng 10e-13 -> 1.0E-12
-
-dqbas361  toSci 7E12  -> 7E+12
-dqbas362  toEng 7E12  -> 7E+12
-dqbas363  toSci 7E11  -> 7E+11
-dqbas364  toEng 7E11  -> 700E+9
-dqbas365  toSci 7E10  -> 7E+10
-dqbas366  toEng 7E10  -> 70E+9
-dqbas367  toSci 7E9   -> 7E+9
-dqbas368  toEng 7E9   -> 7E+9
-dqbas369  toSci 7E8   -> 7E+8
-dqbas370  toEng 7E8   -> 700E+6
-dqbas371  toSci 7E7   -> 7E+7
-dqbas372  toEng 7E7   -> 70E+6
-dqbas373  toSci 7E6   -> 7E+6
-dqbas374  toEng 7E6   -> 7E+6
-dqbas375  toSci 7E5   -> 7E+5
-dqbas376  toEng 7E5   -> 700E+3
-dqbas377  toSci 7E4   -> 7E+4
-dqbas378  toEng 7E4   -> 70E+3
-dqbas379  toSci 7E3   -> 7E+3
-dqbas380  toEng 7E3   -> 7E+3
-dqbas381  toSci 7E2   -> 7E+2
-dqbas382  toEng 7E2   -> 700
-dqbas383  toSci 7E1   -> 7E+1
-dqbas384  toEng 7E1   -> 70
-dqbas385  toSci 7E0   -> 7
-dqbas386  toEng 7E0   -> 7
-dqbas387  toSci 7E-1  -> 0.7
-dqbas388  toEng 7E-1  -> 0.7
-dqbas389  toSci 7E-2  -> 0.07
-dqbas390  toEng 7E-2  -> 0.07
-dqbas391  toSci 7E-3  -> 0.007
-dqbas392  toEng 7E-3  -> 0.007
-dqbas393  toSci 7E-4  -> 0.0007
-dqbas394  toEng 7E-4  -> 0.0007
-dqbas395  toSci 7E-5  -> 0.00007
-dqbas396  toEng 7E-5  -> 0.00007
-dqbas397  toSci 7E-6  -> 0.000007
-dqbas398  toEng 7E-6  -> 0.000007
-dqbas399  toSci 7E-7  -> 7E-7
-dqbas400  toEng 7E-7  -> 700E-9
-dqbas401  toSci 7E-8  -> 7E-8
-dqbas402  toEng 7E-8  -> 70E-9
-dqbas403  toSci 7E-9  -> 7E-9
-dqbas404  toEng 7E-9  -> 7E-9
-dqbas405  toSci 7E-10 -> 7E-10
-dqbas406  toEng 7E-10 -> 700E-12
-dqbas407  toSci 7E-11 -> 7E-11
-dqbas408  toEng 7E-11 -> 70E-12
-dqbas409  toSci 7E-12 -> 7E-12
-dqbas410  toEng 7E-12 -> 7E-12
-dqbas411  toSci 7E-13 -> 7E-13
-dqbas412  toEng 7E-13 -> 700E-15
-
--- Exacts remain exact up to precision ..
-dqbas420  toSci    100 -> 100
-dqbas422  toSci   1000 -> 1000
-dqbas424  toSci  999.9 ->  999.9
-dqbas426  toSci 1000.0 -> 1000.0
-dqbas428  toSci 1000.1 -> 1000.1
-dqbas430  toSci 10000 -> 10000
-dqbas432  toSci 1000000000000000000000000000000        -> 1000000000000000000000000000000
-dqbas434  toSci 10000000000000000000000000000000       -> 10000000000000000000000000000000
-dqbas436  toSci 100000000000000000000000000000000      -> 100000000000000000000000000000000
-dqbas438  toSci 1000000000000000000000000000000000     -> 1000000000000000000000000000000000
-dqbas440  toSci 10000000000000000000000000000000000    -> 1.000000000000000000000000000000000E+34   Rounded
-dqbas442  toSci 10000000000000000000000000000000000    -> 1.000000000000000000000000000000000E+34   Rounded
-dqbas444  toSci 10000000000000000000000000000000003    -> 1.000000000000000000000000000000000E+34   Rounded Inexact
-dqbas446  toSci 10000000000000000000000000000000005    -> 1.000000000000000000000000000000000E+34   Rounded Inexact
-dqbas448  toSci 100000000000000000000000000000000050   -> 1.000000000000000000000000000000000E+35   Rounded Inexact
-dqbas450  toSci 10000000000000000000000000000000009    -> 1.000000000000000000000000000000001E+34   Rounded Inexact
-dqbas452  toSci 100000000000000000000000000000000000   -> 1.000000000000000000000000000000000E+35   Rounded
-dqbas454  toSci 100000000000000000000000000000000003   -> 1.000000000000000000000000000000000E+35   Rounded Inexact
-dqbas456  toSci 100000000000000000000000000000000005   -> 1.000000000000000000000000000000000E+35   Rounded Inexact
-dqbas458  toSci 100000000000000000000000000000000009   -> 1.000000000000000000000000000000000E+35   Rounded Inexact
-dqbas460  toSci 1000000000000000000000000000000000000  -> 1.000000000000000000000000000000000E+36   Rounded
-dqbas462  toSci 1000000000000000000000000000000000300  -> 1.000000000000000000000000000000000E+36   Rounded Inexact
-dqbas464  toSci 1000000000000000000000000000000000500  -> 1.000000000000000000000000000000000E+36   Rounded Inexact
-dqbas466  toSci 1000000000000000000000000000000000900  -> 1.000000000000000000000000000000001E+36   Rounded Inexact
-dqbas468  toSci 10000000000000000000000000000000000000 -> 1.000000000000000000000000000000000E+37   Rounded
-dqbas470  toSci 10000000000000000000000000000000003000 -> 1.000000000000000000000000000000000E+37   Rounded Inexact
-dqbas472  toSci 10000000000000000000000000000000005000 -> 1.000000000000000000000000000000000E+37   Rounded Inexact
-dqbas474  toSci 10000000000000000000000000000000009000 -> 1.000000000000000000000000000000001E+37   Rounded Inexact
-
--- check rounding modes heeded
-rounding:  ceiling
-dqbsr401  toSci  1.1111111111111111111111111111123450    ->  1.111111111111111111111111111112345  Rounded
-dqbsr402  toSci  1.11111111111111111111111111111234549   ->  1.111111111111111111111111111112346  Rounded Inexact
-dqbsr403  toSci  1.11111111111111111111111111111234550   ->  1.111111111111111111111111111112346  Rounded Inexact
-dqbsr404  toSci  1.11111111111111111111111111111234551   ->  1.111111111111111111111111111112346  Rounded Inexact
-rounding:  up
-dqbsr405  toSci  1.1111111111111111111111111111123450    ->  1.111111111111111111111111111112345  Rounded
-dqbsr406  toSci  1.11111111111111111111111111111234549   ->  1.111111111111111111111111111112346  Rounded Inexact
-dqbsr407  toSci  1.11111111111111111111111111111234550   ->  1.111111111111111111111111111112346  Rounded Inexact
-dqbsr408  toSci  1.11111111111111111111111111111234551   ->  1.111111111111111111111111111112346  Rounded Inexact
-rounding:  floor
-dqbsr410  toSci  1.1111111111111111111111111111123450    ->  1.111111111111111111111111111112345  Rounded
-dqbsr411  toSci  1.11111111111111111111111111111234549   ->  1.111111111111111111111111111112345  Rounded Inexact
-dqbsr412  toSci  1.11111111111111111111111111111234550   ->  1.111111111111111111111111111112345  Rounded Inexact
-dqbsr413  toSci  1.11111111111111111111111111111234551   ->  1.111111111111111111111111111112345  Rounded Inexact
-rounding:  half_down
-dqbsr415  toSci  1.1111111111111111111111111111123450    ->  1.111111111111111111111111111112345  Rounded
-dqbsr416  toSci  1.11111111111111111111111111111234549   ->  1.111111111111111111111111111112345  Rounded Inexact
-dqbsr417  toSci  1.11111111111111111111111111111234550   ->  1.111111111111111111111111111112345  Rounded Inexact
-dqbsr418  toSci  1.11111111111111111111111111111234650   ->  1.111111111111111111111111111112346  Rounded Inexact
-dqbsr419  toSci  1.11111111111111111111111111111234551   ->  1.111111111111111111111111111112346  Rounded Inexact
-rounding:  half_even
-dqbsr421  toSci  1.1111111111111111111111111111123450    ->  1.111111111111111111111111111112345  Rounded
-dqbsr422  toSci  1.11111111111111111111111111111234549   ->  1.111111111111111111111111111112345  Rounded Inexact
-dqbsr423  toSci  1.11111111111111111111111111111234550   ->  1.111111111111111111111111111112346  Rounded Inexact
-dqbsr424  toSci  1.11111111111111111111111111111234650   ->  1.111111111111111111111111111112346  Rounded Inexact
-dqbsr425  toSci  1.11111111111111111111111111111234551   ->  1.111111111111111111111111111112346  Rounded Inexact
-rounding:  down
-dqbsr426  toSci  1.1111111111111111111111111111123450    ->  1.111111111111111111111111111112345  Rounded
-dqbsr427  toSci  1.11111111111111111111111111111234549   ->  1.111111111111111111111111111112345  Rounded Inexact
-dqbsr428  toSci  1.11111111111111111111111111111234550   ->  1.111111111111111111111111111112345  Rounded Inexact
-dqbsr429  toSci  1.11111111111111111111111111111234551   ->  1.111111111111111111111111111112345  Rounded Inexact
-rounding:  half_up
-dqbsr431  toSci  1.1111111111111111111111111111123450    ->  1.111111111111111111111111111112345  Rounded
-dqbsr432  toSci  1.11111111111111111111111111111234549   ->  1.111111111111111111111111111112345  Rounded Inexact
-dqbsr433  toSci  1.11111111111111111111111111111234550   ->  1.111111111111111111111111111112346  Rounded Inexact
-dqbsr434  toSci  1.11111111111111111111111111111234650   ->  1.111111111111111111111111111112347  Rounded Inexact
-dqbsr435  toSci  1.11111111111111111111111111111234551   ->  1.111111111111111111111111111112346  Rounded Inexact
--- negatives
-rounding:  ceiling
-dqbsr501  toSci -1.1111111111111111111111111111123450    -> -1.111111111111111111111111111112345  Rounded
-dqbsr502  toSci -1.11111111111111111111111111111234549   -> -1.111111111111111111111111111112345  Rounded Inexact
-dqbsr503  toSci -1.11111111111111111111111111111234550   -> -1.111111111111111111111111111112345  Rounded Inexact
-dqbsr504  toSci -1.11111111111111111111111111111234551   -> -1.111111111111111111111111111112345  Rounded Inexact
-rounding:  up
-dqbsr505  toSci -1.1111111111111111111111111111123450    -> -1.111111111111111111111111111112345  Rounded
-dqbsr506  toSci -1.11111111111111111111111111111234549   -> -1.111111111111111111111111111112346  Rounded Inexact
-dqbsr507  toSci -1.11111111111111111111111111111234550   -> -1.111111111111111111111111111112346  Rounded Inexact
-dqbsr508  toSci -1.11111111111111111111111111111234551   -> -1.111111111111111111111111111112346  Rounded Inexact
-rounding:  floor
-dqbsr510  toSci -1.1111111111111111111111111111123450    -> -1.111111111111111111111111111112345  Rounded
-dqbsr511  toSci -1.11111111111111111111111111111234549   -> -1.111111111111111111111111111112346  Rounded Inexact
-dqbsr512  toSci -1.11111111111111111111111111111234550   -> -1.111111111111111111111111111112346  Rounded Inexact
-dqbsr513  toSci -1.11111111111111111111111111111234551   -> -1.111111111111111111111111111112346  Rounded Inexact
-rounding:  half_down
-dqbsr515  toSci -1.1111111111111111111111111111123450    -> -1.111111111111111111111111111112345  Rounded
-dqbsr516  toSci -1.11111111111111111111111111111234549   -> -1.111111111111111111111111111112345  Rounded Inexact
-dqbsr517  toSci -1.11111111111111111111111111111234550   -> -1.111111111111111111111111111112345  Rounded Inexact
-dqbsr518  toSci -1.11111111111111111111111111111234650   -> -1.111111111111111111111111111112346  Rounded Inexact
-dqbsr519  toSci -1.11111111111111111111111111111234551   -> -1.111111111111111111111111111112346  Rounded Inexact
-rounding:  half_even
-dqbsr521  toSci -1.1111111111111111111111111111123450    -> -1.111111111111111111111111111112345  Rounded
-dqbsr522  toSci -1.11111111111111111111111111111234549   -> -1.111111111111111111111111111112345  Rounded Inexact
-dqbsr523  toSci -1.11111111111111111111111111111234550   -> -1.111111111111111111111111111112346  Rounded Inexact
-dqbsr524  toSci -1.11111111111111111111111111111234650   -> -1.111111111111111111111111111112346  Rounded Inexact
-dqbsr525  toSci -1.11111111111111111111111111111234551   -> -1.111111111111111111111111111112346  Rounded Inexact
-rounding:  down
-dqbsr526  toSci -1.1111111111111111111111111111123450    -> -1.111111111111111111111111111112345  Rounded
-dqbsr527  toSci -1.11111111111111111111111111111234549   -> -1.111111111111111111111111111112345  Rounded Inexact
-dqbsr528  toSci -1.11111111111111111111111111111234550   -> -1.111111111111111111111111111112345  Rounded Inexact
-dqbsr529  toSci -1.11111111111111111111111111111234551   -> -1.111111111111111111111111111112345  Rounded Inexact
-rounding:  half_up
-dqbsr531  toSci -1.1111111111111111111111111111123450    -> -1.111111111111111111111111111112345  Rounded
-dqbsr532  toSci -1.11111111111111111111111111111234549   -> -1.111111111111111111111111111112345  Rounded Inexact
-dqbsr533  toSci -1.11111111111111111111111111111234550   -> -1.111111111111111111111111111112346  Rounded Inexact
-dqbsr534  toSci -1.11111111111111111111111111111234650   -> -1.111111111111111111111111111112347  Rounded Inexact
-dqbsr535  toSci -1.11111111111111111111111111111234551   -> -1.111111111111111111111111111112346  Rounded Inexact
-
-rounding:    half_even
-
--- The 'baddies' tests from DiagBigDecimal, plus some new ones
-dqbas500 toSci '1..2'            -> NaN Conversion_syntax
-dqbas501 toSci '.'               -> NaN Conversion_syntax
-dqbas502 toSci '..'              -> NaN Conversion_syntax
-dqbas503 toSci '++1'             -> NaN Conversion_syntax
-dqbas504 toSci '--1'             -> NaN Conversion_syntax
-dqbas505 toSci '-+1'             -> NaN Conversion_syntax
-dqbas506 toSci '+-1'             -> NaN Conversion_syntax
-dqbas507 toSci '12e'             -> NaN Conversion_syntax
-dqbas508 toSci '12e++'           -> NaN Conversion_syntax
-dqbas509 toSci '12f4'            -> NaN Conversion_syntax
-dqbas510 toSci ' +1'             -> NaN Conversion_syntax
-dqbas511 toSci '+ 1'             -> NaN Conversion_syntax
-dqbas512 toSci '12 '             -> NaN Conversion_syntax
-dqbas513 toSci ' + 1'            -> NaN Conversion_syntax
-dqbas514 toSci ' - 1 '           -> NaN Conversion_syntax
-dqbas515 toSci 'x'               -> NaN Conversion_syntax
-dqbas516 toSci '-1-'             -> NaN Conversion_syntax
-dqbas517 toSci '12-'             -> NaN Conversion_syntax
-dqbas518 toSci '3+'              -> NaN Conversion_syntax
-dqbas519 toSci ''                -> NaN Conversion_syntax
-dqbas520 toSci '1e-'             -> NaN Conversion_syntax
-dqbas521 toSci '7e99999a'        -> NaN Conversion_syntax
-dqbas522 toSci '7e123567890x'    -> NaN Conversion_syntax
-dqbas523 toSci '7e12356789012x'  -> NaN Conversion_syntax
-dqbas524 toSci ''                -> NaN Conversion_syntax
-dqbas525 toSci 'e100'            -> NaN Conversion_syntax
-dqbas526 toSci '\u0e5a'          -> NaN Conversion_syntax
-dqbas527 toSci '\u0b65'          -> NaN Conversion_syntax
-dqbas528 toSci '123,65'          -> NaN Conversion_syntax
-dqbas529 toSci '1.34.5'          -> NaN Conversion_syntax
-dqbas530 toSci '.123.5'          -> NaN Conversion_syntax
-dqbas531 toSci '01.35.'          -> NaN Conversion_syntax
-dqbas532 toSci '01.35-'          -> NaN Conversion_syntax
-dqbas533 toSci '0000..'          -> NaN Conversion_syntax
-dqbas534 toSci '.0000.'          -> NaN Conversion_syntax
-dqbas535 toSci '00..00'          -> NaN Conversion_syntax
-dqbas536 toSci '111e*123'        -> NaN Conversion_syntax
-dqbas537 toSci '111e123-'        -> NaN Conversion_syntax
-dqbas538 toSci '111e+12+'        -> NaN Conversion_syntax
-dqbas539 toSci '111e1-3-'        -> NaN Conversion_syntax
-dqbas540 toSci '111e1*23'        -> NaN Conversion_syntax
-dqbas541 toSci '111e1e+3'        -> NaN Conversion_syntax
-dqbas542 toSci '1e1.0'           -> NaN Conversion_syntax
-dqbas543 toSci '1e123e'          -> NaN Conversion_syntax
-dqbas544 toSci 'ten'             -> NaN Conversion_syntax
-dqbas545 toSci 'ONE'             -> NaN Conversion_syntax
-dqbas546 toSci '1e.1'            -> NaN Conversion_syntax
-dqbas547 toSci '1e1.'            -> NaN Conversion_syntax
-dqbas548 toSci '1ee'             -> NaN Conversion_syntax
-dqbas549 toSci 'e+1'             -> NaN Conversion_syntax
-dqbas550 toSci '1.23.4'          -> NaN Conversion_syntax
-dqbas551 toSci '1.2.1'           -> NaN Conversion_syntax
-dqbas552 toSci '1E+1.2'          -> NaN Conversion_syntax
-dqbas553 toSci '1E+1.2.3'        -> NaN Conversion_syntax
-dqbas554 toSci '1E++1'           -> NaN Conversion_syntax
-dqbas555 toSci '1E--1'           -> NaN Conversion_syntax
-dqbas556 toSci '1E+-1'           -> NaN Conversion_syntax
-dqbas557 toSci '1E-+1'           -> NaN Conversion_syntax
-dqbas558 toSci '1E''1'           -> NaN Conversion_syntax
-dqbas559 toSci "1E""1"           -> NaN Conversion_syntax
-dqbas560 toSci "1E"""""          -> NaN Conversion_syntax
--- Near-specials
-dqbas561 toSci "qNaN"            -> NaN Conversion_syntax
-dqbas562 toSci "NaNq"            -> NaN Conversion_syntax
-dqbas563 toSci "NaNs"            -> NaN Conversion_syntax
-dqbas564 toSci "Infi"            -> NaN Conversion_syntax
-dqbas565 toSci "Infin"           -> NaN Conversion_syntax
-dqbas566 toSci "Infini"          -> NaN Conversion_syntax
-dqbas567 toSci "Infinit"         -> NaN Conversion_syntax
-dqbas568 toSci "-Infinit"        -> NaN Conversion_syntax
-dqbas569 toSci "0Inf"            -> NaN Conversion_syntax
-dqbas570 toSci "9Inf"            -> NaN Conversion_syntax
-dqbas571 toSci "-0Inf"           -> NaN Conversion_syntax
-dqbas572 toSci "-9Inf"           -> NaN Conversion_syntax
-dqbas573 toSci "-sNa"            -> NaN Conversion_syntax
-dqbas574 toSci "xNaN"            -> NaN Conversion_syntax
-dqbas575 toSci "0sNaN"           -> NaN Conversion_syntax
-
--- some baddies with dots and Es and dots and specials
-dqbas576 toSci  'e+1'            ->  NaN Conversion_syntax
-dqbas577 toSci  '.e+1'           ->  NaN Conversion_syntax
-dqbas578 toSci  '+.e+1'          ->  NaN Conversion_syntax
-dqbas579 toSci  '-.e+'           ->  NaN Conversion_syntax
-dqbas580 toSci  '-.e'            ->  NaN Conversion_syntax
-dqbas581 toSci  'E+1'            ->  NaN Conversion_syntax
-dqbas582 toSci  '.E+1'           ->  NaN Conversion_syntax
-dqbas583 toSci  '+.E+1'          ->  NaN Conversion_syntax
-dqbas584 toSci  '-.E+'           ->  NaN Conversion_syntax
-dqbas585 toSci  '-.E'            ->  NaN Conversion_syntax
-
-dqbas586 toSci  '.NaN'           ->  NaN Conversion_syntax
-dqbas587 toSci  '-.NaN'          ->  NaN Conversion_syntax
-dqbas588 toSci  '+.sNaN'         ->  NaN Conversion_syntax
-dqbas589 toSci  '+.Inf'          ->  NaN Conversion_syntax
-dqbas590 toSci  '.Infinity'      ->  NaN Conversion_syntax
-
--- Zeros
-dqbas601 toSci 0.000000000       -> 0E-9
-dqbas602 toSci 0.00000000        -> 0E-8
-dqbas603 toSci 0.0000000         -> 0E-7
-dqbas604 toSci 0.000000          -> 0.000000
-dqbas605 toSci 0.00000           -> 0.00000
-dqbas606 toSci 0.0000            -> 0.0000
-dqbas607 toSci 0.000             -> 0.000
-dqbas608 toSci 0.00              -> 0.00
-dqbas609 toSci 0.0               -> 0.0
-dqbas610 toSci  .0               -> 0.0
-dqbas611 toSci 0.                -> 0
-dqbas612 toSci -.0               -> -0.0
-dqbas613 toSci -0.               -> -0
-dqbas614 toSci -0.0              -> -0.0
-dqbas615 toSci -0.00             -> -0.00
-dqbas616 toSci -0.000            -> -0.000
-dqbas617 toSci -0.0000           -> -0.0000
-dqbas618 toSci -0.00000          -> -0.00000
-dqbas619 toSci -0.000000         -> -0.000000
-dqbas620 toSci -0.0000000        -> -0E-7
-dqbas621 toSci -0.00000000       -> -0E-8
-dqbas622 toSci -0.000000000      -> -0E-9
-
-dqbas630 toSci  0.00E+0          -> 0.00
-dqbas631 toSci  0.00E+1          -> 0.0
-dqbas632 toSci  0.00E+2          -> 0
-dqbas633 toSci  0.00E+3          -> 0E+1
-dqbas634 toSci  0.00E+4          -> 0E+2
-dqbas635 toSci  0.00E+5          -> 0E+3
-dqbas636 toSci  0.00E+6          -> 0E+4
-dqbas637 toSci  0.00E+7          -> 0E+5
-dqbas638 toSci  0.00E+8          -> 0E+6
-dqbas639 toSci  0.00E+9          -> 0E+7
-
-dqbas640 toSci  0.0E+0           -> 0.0
-dqbas641 toSci  0.0E+1           -> 0
-dqbas642 toSci  0.0E+2           -> 0E+1
-dqbas643 toSci  0.0E+3           -> 0E+2
-dqbas644 toSci  0.0E+4           -> 0E+3
-dqbas645 toSci  0.0E+5           -> 0E+4
-dqbas646 toSci  0.0E+6           -> 0E+5
-dqbas647 toSci  0.0E+7           -> 0E+6
-dqbas648 toSci  0.0E+8           -> 0E+7
-dqbas649 toSci  0.0E+9           -> 0E+8
-
-dqbas650 toSci  0E+0             -> 0
-dqbas651 toSci  0E+1             -> 0E+1
-dqbas652 toSci  0E+2             -> 0E+2
-dqbas653 toSci  0E+3             -> 0E+3
-dqbas654 toSci  0E+4             -> 0E+4
-dqbas655 toSci  0E+5             -> 0E+5
-dqbas656 toSci  0E+6             -> 0E+6
-dqbas657 toSci  0E+7             -> 0E+7
-dqbas658 toSci  0E+8             -> 0E+8
-dqbas659 toSci  0E+9             -> 0E+9
-
-dqbas660 toSci  0.0E-0           -> 0.0
-dqbas661 toSci  0.0E-1           -> 0.00
-dqbas662 toSci  0.0E-2           -> 0.000
-dqbas663 toSci  0.0E-3           -> 0.0000
-dqbas664 toSci  0.0E-4           -> 0.00000
-dqbas665 toSci  0.0E-5           -> 0.000000
-dqbas666 toSci  0.0E-6           -> 0E-7
-dqbas667 toSci  0.0E-7           -> 0E-8
-dqbas668 toSci  0.0E-8           -> 0E-9
-dqbas669 toSci  0.0E-9           -> 0E-10
-
-dqbas670 toSci  0.00E-0          -> 0.00
-dqbas671 toSci  0.00E-1          -> 0.000
-dqbas672 toSci  0.00E-2          -> 0.0000
-dqbas673 toSci  0.00E-3          -> 0.00000
-dqbas674 toSci  0.00E-4          -> 0.000000
-dqbas675 toSci  0.00E-5          -> 0E-7
-dqbas676 toSci  0.00E-6          -> 0E-8
-dqbas677 toSci  0.00E-7          -> 0E-9
-dqbas678 toSci  0.00E-8          -> 0E-10
-dqbas679 toSci  0.00E-9          -> 0E-11
-
-dqbas680 toSci  000000.          ->  0
-dqbas681 toSci   00000.          ->  0
-dqbas682 toSci    0000.          ->  0
-dqbas683 toSci     000.          ->  0
-dqbas684 toSci      00.          ->  0
-dqbas685 toSci       0.          ->  0
-dqbas686 toSci  +00000.          ->  0
-dqbas687 toSci  -00000.          -> -0
-dqbas688 toSci  +0.              ->  0
-dqbas689 toSci  -0.              -> -0
-
--- Specials
-dqbas700 toSci "NaN"             -> NaN
-dqbas701 toSci "nan"             -> NaN
-dqbas702 toSci "nAn"             -> NaN
-dqbas703 toSci "NAN"             -> NaN
-dqbas704 toSci "+NaN"            -> NaN
-dqbas705 toSci "+nan"            -> NaN
-dqbas706 toSci "+nAn"            -> NaN
-dqbas707 toSci "+NAN"            -> NaN
-dqbas708 toSci "-NaN"            -> -NaN
-dqbas709 toSci "-nan"            -> -NaN
-dqbas710 toSci "-nAn"            -> -NaN
-dqbas711 toSci "-NAN"            -> -NaN
-dqbas712 toSci 'NaN0'            -> NaN
-dqbas713 toSci 'NaN1'            -> NaN1
-dqbas714 toSci 'NaN12'           -> NaN12
-dqbas715 toSci 'NaN123'          -> NaN123
-dqbas716 toSci 'NaN1234'         -> NaN1234
-dqbas717 toSci 'NaN01'           -> NaN1
-dqbas718 toSci 'NaN012'          -> NaN12
-dqbas719 toSci 'NaN0123'         -> NaN123
-dqbas720 toSci 'NaN01234'        -> NaN1234
-dqbas721 toSci 'NaN001'          -> NaN1
-dqbas722 toSci 'NaN0012'         -> NaN12
-dqbas723 toSci 'NaN00123'        -> NaN123
-dqbas724 toSci 'NaN001234'       -> NaN1234
-dqbas725 toSci 'NaN1234567890123456781234567890123456' -> NaN Conversion_syntax
-dqbas726 toSci 'NaN123e+1'       -> NaN Conversion_syntax
-dqbas727 toSci 'NaN12.45'        -> NaN Conversion_syntax
-dqbas728 toSci 'NaN-12'          -> NaN Conversion_syntax
-dqbas729 toSci 'NaN+12'          -> NaN Conversion_syntax
-
-dqbas730 toSci "sNaN"            -> sNaN
-dqbas731 toSci "snan"            -> sNaN
-dqbas732 toSci "SnAn"            -> sNaN
-dqbas733 toSci "SNAN"            -> sNaN
-dqbas734 toSci "+sNaN"           -> sNaN
-dqbas735 toSci "+snan"           -> sNaN
-dqbas736 toSci "+SnAn"           -> sNaN
-dqbas737 toSci "+SNAN"           -> sNaN
-dqbas738 toSci "-sNaN"           -> -sNaN
-dqbas739 toSci "-snan"           -> -sNaN
-dqbas740 toSci "-SnAn"           -> -sNaN
-dqbas741 toSci "-SNAN"           -> -sNaN
-dqbas742 toSci 'sNaN0000'        -> sNaN
-dqbas743 toSci 'sNaN7'           -> sNaN7
-dqbas744 toSci 'sNaN007234'      -> sNaN7234
-dqbas745 toSci 'sNaN1234567890123456787234561234567890' -> NaN Conversion_syntax
-dqbas746 toSci 'sNaN72.45'       -> NaN Conversion_syntax
-dqbas747 toSci 'sNaN-72'         -> NaN Conversion_syntax
-
-dqbas748 toSci "Inf"             -> Infinity
-dqbas749 toSci "inf"             -> Infinity
-dqbas750 toSci "iNf"             -> Infinity
-dqbas751 toSci "INF"             -> Infinity
-dqbas752 toSci "+Inf"            -> Infinity
-dqbas753 toSci "+inf"            -> Infinity
-dqbas754 toSci "+iNf"            -> Infinity
-dqbas755 toSci "+INF"            -> Infinity
-dqbas756 toSci "-Inf"            -> -Infinity
-dqbas757 toSci "-inf"            -> -Infinity
-dqbas758 toSci "-iNf"            -> -Infinity
-dqbas759 toSci "-INF"            -> -Infinity
-
-dqbas760 toSci "Infinity"        -> Infinity
-dqbas761 toSci "infinity"        -> Infinity
-dqbas762 toSci "iNfInItY"        -> Infinity
-dqbas763 toSci "INFINITY"        -> Infinity
-dqbas764 toSci "+Infinity"       -> Infinity
-dqbas765 toSci "+infinity"       -> Infinity
-dqbas766 toSci "+iNfInItY"       -> Infinity
-dqbas767 toSci "+INFINITY"       -> Infinity
-dqbas768 toSci "-Infinity"       -> -Infinity
-dqbas769 toSci "-infinity"       -> -Infinity
-dqbas770 toSci "-iNfInItY"       -> -Infinity
-dqbas771 toSci "-INFINITY"       -> -Infinity
-
--- Specials and zeros for toEng
-dqbast772 toEng "NaN"              -> NaN
-dqbast773 toEng "-Infinity"        -> -Infinity
-dqbast774 toEng "-sNaN"            -> -sNaN
-dqbast775 toEng "-NaN"             -> -NaN
-dqbast776 toEng "+Infinity"        -> Infinity
-dqbast778 toEng "+sNaN"            -> sNaN
-dqbast779 toEng "+NaN"             -> NaN
-dqbast780 toEng "INFINITY"         -> Infinity
-dqbast781 toEng "SNAN"             -> sNaN
-dqbast782 toEng "NAN"              -> NaN
-dqbast783 toEng "infinity"         -> Infinity
-dqbast784 toEng "snan"             -> sNaN
-dqbast785 toEng "nan"              -> NaN
-dqbast786 toEng "InFINITY"         -> Infinity
-dqbast787 toEng "SnAN"             -> sNaN
-dqbast788 toEng "nAN"              -> NaN
-dqbast789 toEng "iNfinity"         -> Infinity
-dqbast790 toEng "sNan"             -> sNaN
-dqbast791 toEng "Nan"              -> NaN
-dqbast792 toEng "Infinity"         -> Infinity
-dqbast793 toEng "sNaN"             -> sNaN
-
--- Zero toEng, etc.
-dqbast800 toEng 0e+1              -> "0.00E+3"  -- doc example
-
-dqbast801 toEng 0.000000000       -> 0E-9
-dqbast802 toEng 0.00000000        -> 0.00E-6
-dqbast803 toEng 0.0000000         -> 0.0E-6
-dqbast804 toEng 0.000000          -> 0.000000
-dqbast805 toEng 0.00000           -> 0.00000
-dqbast806 toEng 0.0000            -> 0.0000
-dqbast807 toEng 0.000             -> 0.000
-dqbast808 toEng 0.00              -> 0.00
-dqbast809 toEng 0.0               -> 0.0
-dqbast810 toEng  .0               -> 0.0
-dqbast811 toEng 0.                -> 0
-dqbast812 toEng -.0               -> -0.0
-dqbast813 toEng -0.               -> -0
-dqbast814 toEng -0.0              -> -0.0
-dqbast815 toEng -0.00             -> -0.00
-dqbast816 toEng -0.000            -> -0.000
-dqbast817 toEng -0.0000           -> -0.0000
-dqbast818 toEng -0.00000          -> -0.00000
-dqbast819 toEng -0.000000         -> -0.000000
-dqbast820 toEng -0.0000000        -> -0.0E-6
-dqbast821 toEng -0.00000000       -> -0.00E-6
-dqbast822 toEng -0.000000000      -> -0E-9
-
-dqbast830 toEng  0.00E+0          -> 0.00
-dqbast831 toEng  0.00E+1          -> 0.0
-dqbast832 toEng  0.00E+2          -> 0
-dqbast833 toEng  0.00E+3          -> 0.00E+3
-dqbast834 toEng  0.00E+4          -> 0.0E+3
-dqbast835 toEng  0.00E+5          -> 0E+3
-dqbast836 toEng  0.00E+6          -> 0.00E+6
-dqbast837 toEng  0.00E+7          -> 0.0E+6
-dqbast838 toEng  0.00E+8          -> 0E+6
-dqbast839 toEng  0.00E+9          -> 0.00E+9
-
-dqbast840 toEng  0.0E+0           -> 0.0
-dqbast841 toEng  0.0E+1           -> 0
-dqbast842 toEng  0.0E+2           -> 0.00E+3
-dqbast843 toEng  0.0E+3           -> 0.0E+3
-dqbast844 toEng  0.0E+4           -> 0E+3
-dqbast845 toEng  0.0E+5           -> 0.00E+6
-dqbast846 toEng  0.0E+6           -> 0.0E+6
-dqbast847 toEng  0.0E+7           -> 0E+6
-dqbast848 toEng  0.0E+8           -> 0.00E+9
-dqbast849 toEng  0.0E+9           -> 0.0E+9
-
-dqbast850 toEng  0E+0             -> 0
-dqbast851 toEng  0E+1             -> 0.00E+3
-dqbast852 toEng  0E+2             -> 0.0E+3
-dqbast853 toEng  0E+3             -> 0E+3
-dqbast854 toEng  0E+4             -> 0.00E+6
-dqbast855 toEng  0E+5             -> 0.0E+6
-dqbast856 toEng  0E+6             -> 0E+6
-dqbast857 toEng  0E+7             -> 0.00E+9
-dqbast858 toEng  0E+8             -> 0.0E+9
-dqbast859 toEng  0E+9             -> 0E+9
-
-dqbast860 toEng  0.0E-0           -> 0.0
-dqbast861 toEng  0.0E-1           -> 0.00
-dqbast862 toEng  0.0E-2           -> 0.000
-dqbast863 toEng  0.0E-3           -> 0.0000
-dqbast864 toEng  0.0E-4           -> 0.00000
-dqbast865 toEng  0.0E-5           -> 0.000000
-dqbast866 toEng  0.0E-6           -> 0.0E-6
-dqbast867 toEng  0.0E-7           -> 0.00E-6
-dqbast868 toEng  0.0E-8           -> 0E-9
-dqbast869 toEng  0.0E-9           -> 0.0E-9
-
-dqbast870 toEng  0.00E-0          -> 0.00
-dqbast871 toEng  0.00E-1          -> 0.000
-dqbast872 toEng  0.00E-2          -> 0.0000
-dqbast873 toEng  0.00E-3          -> 0.00000
-dqbast874 toEng  0.00E-4          -> 0.000000
-dqbast875 toEng  0.00E-5          -> 0.0E-6
-dqbast876 toEng  0.00E-6          -> 0.00E-6
-dqbast877 toEng  0.00E-7          -> 0E-9
-dqbast878 toEng  0.00E-8          -> 0.0E-9
-dqbast879 toEng  0.00E-9          -> 0.00E-9
-
--- long input strings
-dqbas801 tosci '01234567890123456' -> 1234567890123456
-dqbas802 tosci '001234567890123456' -> 1234567890123456
-dqbas803 tosci '0001234567890123456' -> 1234567890123456
-dqbas804 tosci '00001234567890123456' -> 1234567890123456
-dqbas805 tosci '000001234567890123456' -> 1234567890123456
-dqbas806 tosci '0000001234567890123456' -> 1234567890123456
-dqbas807 tosci '00000001234567890123456' -> 1234567890123456
-dqbas808 tosci '000000001234567890123456' -> 1234567890123456
-dqbas809 tosci '0000000001234567890123456' -> 1234567890123456
-dqbas810 tosci '00000000001234567890123456' -> 1234567890123456
-
-dqbas811 tosci '0.1234567890123456' -> 0.1234567890123456
-dqbas812 tosci '0.01234567890123456' -> 0.01234567890123456
-dqbas813 tosci '0.001234567890123456' -> 0.001234567890123456
-dqbas814 tosci '0.0001234567890123456' -> 0.0001234567890123456
-dqbas815 tosci '0.00001234567890123456' -> 0.00001234567890123456
-dqbas816 tosci '0.000001234567890123456' -> 0.000001234567890123456
-dqbas817 tosci '0.0000001234567890123456' -> 1.234567890123456E-7
-dqbas818 tosci '0.00000001234567890123456' -> 1.234567890123456E-8
-dqbas819 tosci '0.000000001234567890123456' -> 1.234567890123456E-9
-dqbas820 tosci '0.0000000001234567890123456' -> 1.234567890123456E-10
-
-dqbas821 tosci '12345678912345678901234567801234567890' -> 1.234567891234567890123456780123457E+37 Inexact Rounded
-dqbas822 tosci '123456789123456789012345678012345678901' -> 1.234567891234567890123456780123457E+38 Inexact Rounded
-dqbas823 tosci '1234567891234567890123456780123456789012' -> 1.234567891234567890123456780123457E+39 Inexact Rounded
-dqbas824 tosci '12345678912345678901234567801234567890123' -> 1.234567891234567890123456780123457E+40 Inexact Rounded
-dqbas825 tosci '123456789123456789012345678012345678901234' -> 1.234567891234567890123456780123457E+41 Inexact Rounded
-dqbas826 tosci '1234567891234567890123456780123456789012345' -> 1.234567891234567890123456780123457E+42 Inexact Rounded
-dqbas827 tosci '12345678912345678901234567801234567890123456' -> 1.234567891234567890123456780123457E+43 Inexact Rounded
-dqbas828 tosci '123456789123456789012345678012345678901234567' -> 1.234567891234567890123456780123457E+44 Inexact Rounded
-dqbas829 tosci '1234567891234567890123456780123456789012345678' -> 1.234567891234567890123456780123457E+45 Inexact Rounded
-
--- subnormals and overflows
-dqbas906 toSci '99e999999999'       -> Infinity Overflow  Inexact Rounded
-dqbas907 toSci '999e999999999'      -> Infinity Overflow  Inexact Rounded
-dqbas908 toSci '0.9e-999999999'     -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqbas909 toSci '0.09e-999999999'    -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqbas910 toSci '0.1e1000000000'     -> Infinity Overflow  Inexact Rounded
-dqbas911 toSci '10e-1000000000'     -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqbas912 toSci '0.9e9999999999'     -> Infinity Overflow  Inexact Rounded
-dqbas913 toSci '99e-9999999999'     -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqbas914 toSci '111e9999999999'     -> Infinity Overflow  Inexact Rounded
-dqbas915 toSci '1111e-9999999999'   -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqbas916 toSci '1111e-99999999999'  -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqbas917 toSci '7e1000000000'       -> Infinity Overflow  Inexact Rounded
--- negatives the same
-dqbas918 toSci '-99e999999999'      -> -Infinity Overflow  Inexact Rounded
-dqbas919 toSci '-999e999999999'     -> -Infinity Overflow  Inexact Rounded
-dqbas920 toSci '-0.9e-999999999'    -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqbas921 toSci '-0.09e-999999999'   -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqbas922 toSci '-0.1e1000000000'    -> -Infinity Overflow  Inexact Rounded
-dqbas923 toSci '-10e-1000000000'    -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqbas924 toSci '-0.9e9999999999'    -> -Infinity Overflow  Inexact Rounded
-dqbas925 toSci '-99e-9999999999'    -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqbas926 toSci '-111e9999999999'    -> -Infinity Overflow  Inexact Rounded
-dqbas927 toSci '-1111e-9999999999'  -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqbas928 toSci '-1111e-99999999999' -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqbas929 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
-
--- overflow results at different rounding modes
-rounding:  ceiling
-dqbas930 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-dqbas931 toSci '-7e10000'  -> -9.999999999999999999999999999999999E+6144 Overflow  Inexact Rounded
-rounding:  up
-dqbas932 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-dqbas933 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-rounding:  down
-dqbas934 toSci  '7e10000'  ->  9.999999999999999999999999999999999E+6144 Overflow  Inexact Rounded
-dqbas935 toSci '-7e10000'  -> -9.999999999999999999999999999999999E+6144 Overflow  Inexact Rounded
-rounding:  floor
-dqbas936 toSci  '7e10000'  ->  9.999999999999999999999999999999999E+6144 Overflow  Inexact Rounded
-dqbas937 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-
-rounding:  half_up
-dqbas938 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-dqbas939 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-rounding:  half_even
-dqbas940 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-dqbas941 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-rounding:  half_down
-dqbas942 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-dqbas943 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-
-rounding:  half_even
-
--- Now check 854/754r some subnormals and underflow to 0
-dqbem400 toSci  1.0000E-383     -> 1.0000E-383
-dqbem401 toSci  0.1E-6172        -> 1E-6173       Subnormal
-dqbem402 toSci  0.1000E-6172     -> 1.000E-6173   Subnormal
-dqbem403 toSci  0.0100E-6172     -> 1.00E-6174    Subnormal
-dqbem404 toSci  0.0010E-6172     -> 1.0E-6175     Subnormal
-dqbem405 toSci  0.0001E-6172     -> 1E-6176       Subnormal
-dqbem406 toSci  0.00010E-6172    -> 1E-6176     Subnormal Rounded
-dqbem407 toSci  0.00013E-6172    -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqbem408 toSci  0.00015E-6172    -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqbem409 toSci  0.00017E-6172    -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqbem410 toSci  0.00023E-6172    -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqbem411 toSci  0.00025E-6172    -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqbem412 toSci  0.00027E-6172    -> 3E-6176     Underflow Subnormal Inexact Rounded
-dqbem413 toSci  0.000149E-6172   -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqbem414 toSci  0.000150E-6172   -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqbem415 toSci  0.000151E-6172   -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqbem416 toSci  0.000249E-6172   -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqbem417 toSci  0.000250E-6172   -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqbem418 toSci  0.000251E-6172   -> 3E-6176     Underflow Subnormal Inexact Rounded
-dqbem419 toSci  0.00009E-6172    -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqbem420 toSci  0.00005E-6172    -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
-dqbem421 toSci  0.00003E-6172    -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
-dqbem422 toSci  0.000009E-6172   -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
-dqbem423 toSci  0.000005E-6172   -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
-dqbem424 toSci  0.000003E-6172   -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
-
-dqbem425 toSci  0.001049E-6172   -> 1.0E-6175   Underflow Subnormal Inexact Rounded
-dqbem426 toSci  0.001050E-6172   -> 1.0E-6175   Underflow Subnormal Inexact Rounded
-dqbem427 toSci  0.001051E-6172   -> 1.1E-6175   Underflow Subnormal Inexact Rounded
-dqbem428 toSci  0.001149E-6172   -> 1.1E-6175   Underflow Subnormal Inexact Rounded
-dqbem429 toSci  0.001150E-6172   -> 1.2E-6175   Underflow Subnormal Inexact Rounded
-dqbem430 toSci  0.001151E-6172   -> 1.2E-6175   Underflow Subnormal Inexact Rounded
-
-dqbem432 toSci  0.010049E-6172   -> 1.00E-6174  Underflow Subnormal Inexact Rounded
-dqbem433 toSci  0.010050E-6172   -> 1.00E-6174  Underflow Subnormal Inexact Rounded
-dqbem434 toSci  0.010051E-6172   -> 1.01E-6174  Underflow Subnormal Inexact Rounded
-dqbem435 toSci  0.010149E-6172   -> 1.01E-6174  Underflow Subnormal Inexact Rounded
-dqbem436 toSci  0.010150E-6172   -> 1.02E-6174  Underflow Subnormal Inexact Rounded
-dqbem437 toSci  0.010151E-6172   -> 1.02E-6174  Underflow Subnormal Inexact Rounded
-
-dqbem440 toSci  0.10103E-6172    -> 1.010E-6173 Underflow Subnormal Inexact Rounded
-dqbem441 toSci  0.10105E-6172    -> 1.010E-6173 Underflow Subnormal Inexact Rounded
-dqbem442 toSci  0.10107E-6172    -> 1.011E-6173 Underflow Subnormal Inexact Rounded
-dqbem443 toSci  0.10113E-6172    -> 1.011E-6173 Underflow Subnormal Inexact Rounded
-dqbem444 toSci  0.10115E-6172    -> 1.012E-6173 Underflow Subnormal Inexact Rounded
-dqbem445 toSci  0.10117E-6172    -> 1.012E-6173 Underflow Subnormal Inexact Rounded
-
-dqbem450 toSci  1.10730E-6173   -> 1.107E-6173 Underflow Subnormal Inexact Rounded
-dqbem451 toSci  1.10750E-6173   -> 1.108E-6173 Underflow Subnormal Inexact Rounded
-dqbem452 toSci  1.10770E-6173   -> 1.108E-6173 Underflow Subnormal Inexact Rounded
-dqbem453 toSci  1.10830E-6173   -> 1.108E-6173 Underflow Subnormal Inexact Rounded
-dqbem454 toSci  1.10850E-6173   -> 1.108E-6173 Underflow Subnormal Inexact Rounded
-dqbem455 toSci  1.10870E-6173   -> 1.109E-6173 Underflow Subnormal Inexact Rounded
-
--- make sure sign OK
-dqbem456 toSci  -0.10103E-6172   -> -1.010E-6173 Underflow Subnormal Inexact Rounded
-dqbem457 toSci  -0.10105E-6172   -> -1.010E-6173 Underflow Subnormal Inexact Rounded
-dqbem458 toSci  -0.10107E-6172   -> -1.011E-6173 Underflow Subnormal Inexact Rounded
-dqbem459 toSci  -0.10113E-6172   -> -1.011E-6173 Underflow Subnormal Inexact Rounded
-dqbem460 toSci  -0.10115E-6172   -> -1.012E-6173 Underflow Subnormal Inexact Rounded
-dqbem461 toSci  -0.10117E-6172   -> -1.012E-6173 Underflow Subnormal Inexact Rounded
-
--- '999s' cases
-dqbem464 toSci  999999E-6173         -> 9.99999E-6168 Subnormal
-dqbem465 toSci  99999.0E-6172        -> 9.99990E-6168 Subnormal
-dqbem466 toSci  99999.E-6172         -> 9.9999E-6168  Subnormal
-dqbem467 toSci  9999.9E-6172         -> 9.9999E-6169  Subnormal
-dqbem468 toSci  999.99E-6172         -> 9.9999E-6170  Subnormal
-dqbem469 toSci  99.999E-6172         -> 9.9999E-6171  Subnormal
-dqbem470 toSci  9.9999E-6172         -> 9.9999E-6172  Subnormal
-dqbem471 toSci  0.99999E-6172        -> 1.0000E-6172 Underflow Subnormal Inexact Rounded
-dqbem472 toSci  0.099999E-6172       -> 1.000E-6173 Underflow Subnormal Inexact Rounded
-dqbem473 toSci  0.0099999E-6172      -> 1.00E-6174  Underflow Subnormal Inexact Rounded
-dqbem474 toSci  0.00099999E-6172     -> 1.0E-6175   Underflow Subnormal Inexact Rounded
-dqbem475 toSci  0.000099999E-6172    -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqbem476 toSci  0.0000099999E-6172   -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
-dqbem477 toSci  0.00000099999E-6172  -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
-dqbem478 toSci  0.000000099999E-6172 -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
-
--- Exponents with insignificant leading zeros
-dqbas1001 toSci  1e999999999 -> Infinity Overflow Inexact Rounded
-dqbas1002 toSci  1e0999999999 -> Infinity Overflow Inexact Rounded
-dqbas1003 toSci  1e00999999999 -> Infinity Overflow Inexact Rounded
-dqbas1004 toSci  1e000999999999 -> Infinity Overflow Inexact Rounded
-dqbas1005 toSci  1e000000000000999999999 -> Infinity Overflow Inexact Rounded
-dqbas1006 toSci  1e000000000001000000007 -> Infinity Overflow Inexact Rounded
-dqbas1007 toSci  1e-999999999 -> 0E-6176             Underflow Subnormal Inexact Rounded Clamped
-dqbas1008 toSci  1e-0999999999 -> 0E-6176            Underflow Subnormal Inexact Rounded Clamped
-dqbas1009 toSci  1e-00999999999 -> 0E-6176           Underflow Subnormal Inexact Rounded Clamped
-dqbas1010 toSci  1e-000999999999 -> 0E-6176          Underflow Subnormal Inexact Rounded Clamped
-dqbas1011 toSci  1e-000000000000999999999 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqbas1012 toSci  1e-000000000001000000007 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-
--- check for double-rounded subnormals
-dqbas1041 toSci     1.1111111111111111111111111111152444E-6144 ->  1.11111111111111111111111111111524E-6144 Inexact Rounded Subnormal Underflow
-dqbas1042 toSci     1.1111111111111111111111111111152445E-6144 ->  1.11111111111111111111111111111524E-6144 Inexact Rounded Subnormal Underflow
-dqbas1043 toSci     1.1111111111111111111111111111152446E-6144 ->  1.11111111111111111111111111111524E-6144 Inexact Rounded Subnormal Underflow
-
--- clamped zeros [see also clamp.decTest]
-dqbas1075 toSci   0e+10000  ->  0E+6111 Clamped
-dqbas1076 toSci   0e-10000  ->  0E-6176  Clamped
-dqbas1077 toSci  -0e+10000  -> -0E+6111 Clamped
-dqbas1078 toSci  -0e-10000  -> -0E-6176  Clamped
-
--- extreme values from next-wider
-dqbas1101 toSci -9.9999999999999999999999999999999999999999999999999999999999999999999E+1572864 -> -Infinity Overflow Inexact Rounded
-dqbas1102 toSci -1E-1572863 -> -0E-6176 Inexact Rounded Subnormal Underflow Clamped
-dqbas1103 toSci -1E-1572932 -> -0E-6176 Inexact Rounded Subnormal Underflow Clamped
-dqbas1104 toSci -0 -> -0
-dqbas1105 toSci +0 ->  0
-dqbas1106 toSci +1E-1572932 ->  0E-6176 Inexact Rounded Subnormal Underflow Clamped
-dqbas1107 toSci +1E-1572863 ->  0E-6176 Inexact Rounded Subnormal Underflow Clamped
-dqbas1108 toSci +9.9999999999999999999999999999999999999999999999999999999999999999999E+1572864 ->  Infinity Overflow Inexact Rounded
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCanonical.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCanonical.decTest
deleted file mode 100644
index 3ddf6ea..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCanonical.decTest
+++ /dev/null
@@ -1,372 +0,0 @@
-------------------------------------------------------------------------
--- dqCanonical.decTest -- test decQuad canonical results              --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This file tests that copy operations leave uncanonical operands
--- unchanged, and vice versa
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- Uncanonical declets are: abc, where:
---   a=1,2,3
---   b=6,7,e,f
---   c=e,f
-
--- assert some standard (canonical) values; this tests that FromString
--- produces canonical results (many more in decimalNN)
-dqcan001 apply 9.999999999999999999999999999999999E+6144  -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-dqcan002 apply 0                      -> #22080000000000000000000000000000
-dqcan003 apply 1                      -> #22080000000000000000000000000001
-dqcan004 apply -1                     -> #a2080000000000000000000000000001
-dqcan005 apply Infinity               -> #78000000000000000000000000000000
-dqcan006 apply -Infinity              -> #f8000000000000000000000000000000
-dqcan007 apply -NaN                   -> #fc000000000000000000000000000000
-dqcan008 apply -sNaN                  -> #fe000000000000000000000000000000
-dqcan009 apply  NaN999999999999999999999999999999999  -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan010 apply sNaN999999999999999999999999999999999  -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-decan011 apply  9999999999999999999999999999999999    -> #6e080ff3fcff3fcff3fcff3fcff3fcff
-dqcan012 apply 7.50                                   -> #220780000000000000000000000003d0
-dqcan013 apply 9.99                                   -> #220780000000000000000000000000ff
-
--- Base tests for canonical encodings (individual operator
--- propagation is tested later)
-
--- Finites: declets in coefficient
-dqcan021 canonical  #77ffcff3fcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-dqcan022 canonical  #77fffff3fcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-dqcan023 canonical  #77ffcffffcff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-dqcan024 canonical  #77ffcff3ffff3fcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-dqcan025 canonical  #77ffcff3fcffffcff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-dqcan026 canonical  #77ffcff3fcff3ffff3fcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-dqcan027 canonical  #77ffcff3fcff3fcffffcff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-dqcan028 canonical  #77ffcff3fcff3fcff3ffff3fcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-dqcan029 canonical  #77ffcff3fcff3fcff3fcffffcff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-dqcan030 canonical  #77ffcff3fcff3fcff3fcff3ffff3fcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-dqcan031 canonical  #77ffcff3fcff3fcff3fcff3fcffffcff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-dqcan032 canonical  #77ffcff3fcff3fcff3fcff3fcff3ffff -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-
--- NaN: declets in payload
-dqcan061 canonical  #7c000ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan062 canonical  #7c000ffffcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan063 canonical  #7c000ff3ffff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan064 canonical  #7c000ff3fcffffcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan065 canonical  #7c000ff3fcff3ffff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan066 canonical  #7c000ff3fcff3fcffffcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan067 canonical  #7c000ff3fcff3fcff3ffff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan068 canonical  #7c000ff3fcff3fcff3fcffffcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan069 canonical  #7c000ff3fcff3fcff3fcff3ffff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan070 canonical  #7c000ff3fcff3fcff3fcff3fcffffcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan071 canonical  #7c000ff3fcff3fcff3fcff3fcff3ffff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
--- NaN: exponent continuation bits [excluding sNaN selector]
-dqcan081 canonical  #7d000ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan082 canonical  #7c800ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan083 canonical  #7c400ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan084 canonical  #7c200ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan085 canonical  #7c100ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan086 canonical  #7c080ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan087 canonical  #7c040ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan088 canonical  #7c020ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan089 canonical  #7c010ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan090 canonical  #7c008ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan091 canonical  #7c004ff3fcff3fcff3fcff3fcff3fcff -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-
--- sNaN: declets in payload
-dqcan101 canonical  #7e000ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan102 canonical  #7e000ffffcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan103 canonical  #7e000ff3ffff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan104 canonical  #7e000ff3fcffffcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan105 canonical  #7e000ff3fcff3ffff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan106 canonical  #7e000ff3fcff3fcffffcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan107 canonical  #7e000ff3fcff3fcff3ffff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan108 canonical  #7e000ff3fcff3fcff3fcffffcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan109 canonical  #7e000ff3fcff3fcff3fcff3ffff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan100 canonical  #7e000ff3fcff3fcff3fcff3fcffffcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan111 canonical  #7e000ff3fcff3fcff3fcff3fcff3ffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
--- sNaN: exponent continuation bits [excluding sNaN selector]
-dqcan121 canonical  #7f000ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan122 canonical  #7e800ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan123 canonical  #7e400ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan124 canonical  #7e200ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan125 canonical  #7e100ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan126 canonical  #7e080ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan127 canonical  #7e040ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan128 canonical  #7e020ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan129 canonical  #7e010ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan130 canonical  #7e008ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-dqcan131 canonical  #7e004ff3fcff3fcff3fcff3fcff3fcff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-
--- Inf: exponent continuation bits
-dqcan137 canonical  #78000000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan138 canonical  #79000000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan139 canonical  #7a000000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan140 canonical  #78800000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan141 canonical  #78400000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan142 canonical  #78200000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan143 canonical  #78100000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan144 canonical  #78080000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan145 canonical  #78040000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan146 canonical  #78020000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan147 canonical  #78010000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan148 canonical  #78008000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan149 canonical  #78004000000000000000000000000000 -> #78000000000000000000000000000000
-
--- Inf: coefficient continuation bits (first, last, and a few others)
-dqcan150 canonical  #78000000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan151 canonical  #78020000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan152 canonical  #78000000000000000000000000000001 -> #78000000000000000000000000000000
-dqcan153 canonical  #78010000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan154 canonical  #78002000000000000000000000000000 -> #78000000000000000000000000000000
-dqcan155 canonical  #78000800000000000000000000000000 -> #78000000000000000000000000000000
-dqcan156 canonical  #78000020000000000000000000000000 -> #78000000000000000000000000000000
-dqcan157 canonical  #78000004000000000000000000000000 -> #78000000000000000000000000000000
-dqcan158 canonical  #78000000400000000000000000000000 -> #78000000000000000000000000000000
-dqcan159 canonical  #78000000080000000000000000000000 -> #78000000000000000000000000000000
-dqcan160 canonical  #78000000004000000000000000000000 -> #78000000000000000000000000000000
-dqcan161 canonical  #78000000000200000000000000000000 -> #78000000000000000000000000000000
-dqcan162 canonical  #78000000000080000000000000000000 -> #78000000000000000000000000000000
-dqcan163 canonical  #78000000000002000000000000000000 -> #78000000000000000000000000000000
-dqcan164 canonical  #78000000000000400000000000000000 -> #78000000000000000000000000000000
-dqcan165 canonical  #78000000000000080000000000000000 -> #78000000000000000000000000000000
-dqcan166 canonical  #78000000000000001000000000000000 -> #78000000000000000000000000000000
-dqcan167 canonical  #78000000000000000200000000000000 -> #78000000000000000000000000000000
-dqcan168 canonical  #78000000000000000080000000000000 -> #78000000000000000000000000000000
-dqcan169 canonical  #78000000000000000004000000000000 -> #78000000000000000000000000000000
-dqcan170 canonical  #78000000000000000000400000000000 -> #78000000000000000000000000000000
-dqcan171 canonical  #78000000000000000000010000000000 -> #78000000000000000000000000000000
-dqcan172 canonical  #78000000000000000000002000000000 -> #78000000000000000000000000000000
-dqcan173 canonical  #78000000000000000000000400000000 -> #78000000000000000000000000000000
-dqcan174 canonical  #78000000000000000000000080000000 -> #78000000000000000000000000000000
-dqcan175 canonical  #78000000000000000000000002000000 -> #78000000000000000000000000000000
-dqcan176 canonical  #78000000000000000000000000400000 -> #78000000000000000000000000000000
-dqcan177 canonical  #78000000000000000000000000020000 -> #78000000000000000000000000000000
-dqcan178 canonical  #78000000000000000000000000001000 -> #78000000000000000000000000000000
-dqcan179 canonical  #78000000000000000000000000000400 -> #78000000000000000000000000000000
-dqcan180 canonical  #78000000000000000000000000000020 -> #78000000000000000000000000000000
-dqcan181 canonical  #78000000000000000000000000000008 -> #78000000000000000000000000000000
-
-
--- Now the operators -- trying to check paths that might fail to
--- canonicalize propagated operands
-
------ Add:
--- Finites: neutral 0
-dqcan202 add  0E+6144 #77ffcff3fcff3fcffffcff3fcff3fcff         -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-dqcan203 add          #77ffcff3fcff3fcff3fcff3ffff3fcff 0E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff
--- tiny zero
-dqcan204 add  0E-6176 #77ffcff3ffff3fcff3fcff3fcff3fcff         -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded
-dqcan205 add          #77ffcff3fcff3fcff3fcff3fcff3ffff 0E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded
--- tiny non zero
-dqcan206 add -1E-6176 #77ffcff3fcff3fcff3fcff3fcfffffff          -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded
-dqcan207 add          #77ffcffffffffffffffffffffff3fcff -1E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded
--- NaN: declets in payload
-dqcan211 add  0  #7c000ff3fcff3fcff3fcfffffff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan212 add     #7c000ff3fcff3fcfffffff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff
--- NaN: exponent continuation bits [excluding sNaN selector]
-dqcan213 add  0  #7c400ff3fcff3fcff3fcff3fcff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan214 add     #7c020ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff
--- sNaN: declets in payload
-dqcan215 add  0  #7e000ff3fcffffcff3fcff3fcff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation
-dqcan216 add     #7e003ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation
--- sNaN: exponent continuation bits [excluding sNaN selector]
-dqcan217 add  0  #7e500ff3fcff3fcff3fcff3fcff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation
-dqcan218 add     #7e0e0ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation
--- Inf: exponent continuation bits
-dqcan220 add  0  #78010000000000000000000000000000   -> #78000000000000000000000000000000
-dqcan221 add     #78680000000000000000000000000000 0 -> #78000000000000000000000000000000
--- Inf: coefficient continuation bits
-dqcan222 add  0  #78002000000000000000000000000000   -> #78000000000000000000000000000000
-dqcan223 add     #78000000000000000000000000000001 0 -> #78000000000000000000000000000000
-dqcan224 add  0  #78000002000000000000000000000000   -> #78000000000000000000000000000000
-dqcan225 add     #780000000000f0000000000000000000 0 -> #78000000000000000000000000000000
-dqcan226 add  0  #78000000000000000005000000000000   -> #78000000000000000000000000000000
-dqcan227 add     #780000000000000000000000000a0000 0 -> #78000000000000000000000000000000
-
------ Class: [does not return encoded]
-
------ Compare:
-dqcan231 compare -Inf   1     ->  #a2080000000000000000000000000001
-dqcan232 compare -Inf  -Inf   ->  #22080000000000000000000000000000
-dqcan233 compare  1    -Inf   ->  #22080000000000000000000000000001
-dqcan234 compare  #7c010ff3fcff3fcff3fcff3ffffffcff     -1000  -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan235 compare  #7e004ff3fcff3fcff3ffffffcff3fcff     -1000  -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
-
------ CompareSig:
-dqcan241 comparesig -Inf   1     ->  #a2080000000000000000000000000001
-dqcan242 comparesig -Inf  -Inf   ->  #22080000000000000000000000000000
-dqcan243 comparesig  1    -Inf   ->  #22080000000000000000000000000001
-dqcan244 comparesig  #7c400ff3ffff3fcff3fcff3fcff3fcff   -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
-dqcan245 comparesig  #7e050ff3fcfffffff3fcff3fcff3fcff   -1000 -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
-
------ Copy: [does not usually canonicalize]
--- finites
-dqcan250 copy  #6e080ff3fcff3fcfffffff3fcfffffff -> #6e080ff3fcff3fcfffffff3fcfffffff
-dqcan251 copy  #ee080ff3fcff3ffff3fcff3ffff3fcff -> #ee080ff3fcff3ffff3fcff3ffff3fcff
--- NaNs
-dqcan252 copy  #7c000ff3fcffffffffffffffcff3fcff -> #7c000ff3fcffffffffffffffcff3fcff
-dqcan253 copy  #7c080ff3fcff3fcff3fcff3fcff3fcff -> #7c080ff3fcff3fcff3fcff3fcff3fcff
--- sNaN
-dqcan254 copy  #7e003ff3fcffffffffffffffcff3fcff -> #7e003ff3fcffffffffffffffcff3fcff
-dqcan255 copy  #7e100ff3fcff3fcff3fcff3fcff3fcff -> #7e100ff3fcff3fcff3fcff3fcff3fcff
--- Inf
-dqcan258 copy  #78002000000000000000000000000000 -> #78002000000000000000000000000000
-dqcan259 copy  #78000000000010000000000000100000 -> #78000000000010000000000000100000
-
------ CopyAbs: [does not usually canonicalize]
--- finites
-dqcan260 copyabs  #6e080ff3fcff3fcfffffff3fcfffffff -> #6e080ff3fcff3fcfffffff3fcfffffff
-dqcan261 copyabs  #ee080ff3fcff3ffff3fcff3ffff3fcff -> #6e080ff3fcff3ffff3fcff3ffff3fcff
--- NaNs
-dqcan262 copyabs  #fc000ff3fcffffffffffffffcff3fcff -> #7c000ff3fcffffffffffffffcff3fcff
-dqcan263 copyabs  #fc080ff3fcff3fcff3fcff3fcff3fcff -> #7c080ff3fcff3fcff3fcff3fcff3fcff
--- sNaN
-dqcan264 copyabs  #fe003ff3fcffffffffffffffcff3fcff -> #7e003ff3fcffffffffffffffcff3fcff
-dqcan265 copyabs  #fe100ff3fcff3fcff3fcff3fcff3fcff -> #7e100ff3fcff3fcff3fcff3fcff3fcff
--- Inf
-dqcan268 copyabs  #f8002000000000000000000000000000 -> #78002000000000000000000000000000
-dqcan269 copyabs  #f8000000000000700700700000000000 -> #78000000000000700700700000000000
-
------ CopyNegate: [does not usually canonicalize]
--- finites
-dqcan270 copynegate  #6e080ff3fcff3fcfffffff3fcfffffff -> #ee080ff3fcff3fcfffffff3fcfffffff
-dqcan271 copynegate  #ee080ff3fcff3ffff3fcff3ffff3fcff -> #6e080ff3fcff3ffff3fcff3ffff3fcff
--- NaNs
-dqcan272 copynegate  #7c000ff3fcffffffffffff3fcff3fcff -> #fc000ff3fcffffffffffff3fcff3fcff
-dqcan273 copynegate  #7c080ff3fcff3fcff3fcff3fcff3fcff -> #fc080ff3fcff3fcff3fcff3fcff3fcff
--- sNaN
-dqcan274 copynegate  #7e003ff3fcffffffffffffffcff3fcff -> #fe003ff3fcffffffffffffffcff3fcff
-dqcan275 copynegate  #7e100ff3fcff3fcff3fcff3fcff3fcff -> #fe100ff3fcff3fcff3fcff3fcff3fcff
--- Inf
-dqcan278 copynegate  #78002000000000000000000000000000 -> #f8002000000000000000000000000000
-dqcan279 copynegate  #78000000000010000000000000100000 -> #f8000000000010000000000000100000
-
------ CopySign: [does not usually canonicalize]
--- finites
-dqcan280 copysign  #6e080ff3fcff3fcfffffff3fcfffffff -1 -> #ee080ff3fcff3fcfffffff3fcfffffff
-dqcan281 copysign  #ee080ff3fcff3ffff3fcff3ffff3fcff  1 -> #6e080ff3fcff3ffff3fcff3ffff3fcff
--- NaNs
-dqcan282 copysign  #7c000ff3fcffffffffffffffcff3fcff -1 -> #fc000ff3fcffffffffffffffcff3fcff
-dqcan283 copysign  #7c080ff3fcff3fcff3fcff3fcff3fcff  1 -> #7c080ff3fcff3fcff3fcff3fcff3fcff
--- sNaN
-dqcan284 copysign  #7e003ff3fcffffffffffffffcff3fcff -1 -> #fe003ff3fcffffffffffffffcff3fcff
-dqcan285 copysign  #7e100ff3fcff3fcff3fcff3fcff3fcff  1 -> #7e100ff3fcff3fcff3fcff3fcff3fcff
--- Inf
-dqcan288 copysign  #78002000000000000000000000000000 -1 -> #f8002000000000000000000000000000
-dqcan289 copysign  #78000000000010000000000000100000  1 -> #78000000000010000000000000100000
-
------ Multiply:
--- Finites: neutral 0
-dqcan302 multiply  1  #77ffff3fcff3fcff0000000000000000               -> #77ffff3fcff3fcff0000000000000000
-dqcan303 multiply     #77fcffffcff3fcff0000000000000000 1             -> #77fccfffcff3fcff0000000000000000
--- negative
-dqcan306 multiply -1  #77ffff3fcff3fcff0000000000000000               -> #f7ffff3fcff3fcff0000000000000000
-dqcan307 multiply     #77fcffffcff3fcff0000000000000000 -1            -> #f7fccfffcff3fcff0000000000000000
--- NaN: declets in payload
-dqcan311 multiply  1  #7c03ff3fcff3fcff0000000000000000               -> #7c003f3fcff3fcff0000000000000000
-dqcan312 multiply     #7c03ff3fcff3fcff0000000000000000 1             -> #7c003f3fcff3fcff0000000000000000
--- NaN: exponent continuation bits [excluding sNaN selector]
-dqcan313 multiply  1  #7c40ff3fcff3fcff0000000000000000               -> #7c003f3fcff3fcff0000000000000000
-dqcan314 multiply     #7c40ff3fcff3fcff0000000000000000 1             -> #7c003f3fcff3fcff0000000000000000
--- sNaN: declets in payload
-dqcan315 multiply  1  #7e00ffffcff3fcff0000000000000000               -> #7c000fffcff3fcff0000000000000000 Invalid_operation
-dqcan316 multiply     #7e00ffffcff3fcff0000000000000000 1             -> #7c000fffcff3fcff0000000000000000 Invalid_operation
--- sNaN: exponent continuation bits [excluding sNaN selector]
-dqcan317 multiply  1  #7e80ff3fcff3fcff0000000000000000               -> #7c003f3fcff3fcff0000000000000000 Invalid_operation
-dqcan318 multiply     #7e80ff3fcff3fcff0000000000000000 1             -> #7c003f3fcff3fcff0000000000000000 Invalid_operation
--- Inf: exponent continuation bits
-dqcan320 multiply  1  #78800000000000000000000000000000               -> #78000000000000000000000000000000
-dqcan321 multiply     #78800000000000000000000000000000 1             -> #78000000000000000000000000000000
--- Inf: coefficient continuation bits
-dqcan322 multiply  1  #78020000000000000000000000000000               -> #78000000000000000000000000000000
-dqcan323 multiply     #78020000000000000000000000000000 1             -> #78000000000000000000000000000000
-dqcan324 multiply  1  #78000000000000010000000000000000               -> #78000000000000000000000000000000
-dqcan325 multiply     #78000000000000010000000000000000 1             -> #78000000000000000000000000000000
-dqcan326 multiply  1  #78000020000000000000000000000000               -> #78000000000000000000000000000000
-dqcan327 multiply     #78000020000000000000000000000000 1             -> #78000000000000000000000000000000
-
------ Quantize:
-dqcan401 quantize  #ee080ff3fcff3fcff3fffffffff3fcff 0    -> #ee080ff3fcff3fcff3fcff3fcff3fcff
-dqcan402 quantize  #ee080ff3fffffffffffcff3fcff3fcff 0    -> #ee080ff3fcff3fcff3fcff3fcff3fcff
-dqcan403 quantize  #78800000000000000000000000000000 Inf  -> #78000000000000000000000000000000
-dqcan404 quantize  #78020000000000000000000000000000 -Inf -> #78000000000000000000000000000000
-dqcan410 quantize  #7c080ff3fcff3fcff3fcff3fcff3fcff  1   -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan411 quantize  #fc000ff3fcfffffff3fcff3fcff3fcff  1   -> #fc000ff3fcff3fcff3fcff3fcff3fcff
-dqcan412 quantize  #7e100ff3fcff3fcff3fcff3fcff3fcff  1   -> #7c000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
-dqcan413 quantize  #fe000ff3fcff3fcff3ffffffcff3fcff  1   -> #fc000ff3fcff3fcff3fcff3fcff3fcff Invalid_operation
-
------ Subtract:
--- Finites: neutral 0
-dqcan502 subtract  0E+6144 #77ffcff3fcff3fcffffcff3fcff3fcff         -> #f7ffcff3fcff3fcff3fcff3fcff3fcff
-dqcan503 subtract          #77ffcff3fcff3fcff3fcff3ffff3fcff 0E+6144 -> #77ffcff3fcff3fcff3fcff3fcff3fcff
--- tiny zero
-dqcan504 subtract  0E-6176 #77ffcff3ffff3fcff3fcff3fcff3fcff         -> #f7ffcff3fcff3fcff3fcff3fcff3fcff Rounded
-dqcan505 subtract          #77ffcff3fcff3fcff3fcff3fcff3ffff 0E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Rounded
--- tiny non zero
-dqcan506 subtract -1E-6176 #77ffcff3fcff3fcff3fcff3fcfffffff          -> #f7ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded
-dqcan507 subtract          #77ffcffffffffffffffffffffff3fcff -1E-6176 -> #77ffcff3fcff3fcff3fcff3fcff3fcff Inexact Rounded
--- NaN: declets in payload
-dqcan511 subtract  0  #7c000ff3fcff3fcff3fcfffffff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan512 subtract     #7c000ff3fcff3fcfffffff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff
--- NaN: exponent continuation bits [excluding sNaN selector]
-dqcan513 subtract  0  #7c400ff3fcff3fcff3fcff3fcff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan514 subtract     #7c020ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff
--- sNaN: declets in payload
-dqcan515 subtract  0  #7e000ff3fcffffcff3fcff3fcff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation
-dqcan516 subtract     #7e003ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation
--- sNaN: exponent continuation bits [excluding sNaN selector]
-dqcan517 subtract  0  #7e500ff3fcff3fcff3fcff3fcff3fcff   -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation
-dqcan518 subtract     #7e0e0ff3fcff3fcff3fcff3fcff3fcff 0 -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation
--- Inf: exponent continuation bits
-dqcan520 subtract  0  #78010000000000000000000000000000   -> #f8000000000000000000000000000000
-dqcan521 subtract     #78680000000000000000000000000000 0 -> #78000000000000000000000000000000
--- Inf: coefficient continuation bits
-dqcan522 subtract  0  #78002000000000000000000000000000   -> #f8000000000000000000000000000000
-dqcan523 subtract     #78000000000000000000000000000001 0 -> #78000000000000000000000000000000
-dqcan524 subtract  0  #78000002000000000000000000000000   -> #f8000000000000000000000000000000
-dqcan525 subtract     #780000000000f0000000000000000000 0 -> #78000000000000000000000000000000
-dqcan526 subtract  0  #78000000000000000005000000000000   -> #f8000000000000000000000000000000
-dqcan527 subtract     #780000000000000000000000000a0000 0 -> #78000000000000000000000000000000
-
------ ToIntegral:
-dqcan601 tointegralx  #6e080ff3fdff3fcff3fcff3fcff3fcff  -> #6e080ff3fcff3fcff3fcff3fcff3fcff
-dqcan602 tointegralx  #ee080ff3fcff3ffff3fcff3fcff3fcff  -> #ee080ff3fcff3fcff3fcff3fcff3fcff
-dqcan603 tointegralx  #78800000000000000000000000000000  -> #78000000000000000000000000000000
-dqcan604 tointegralx  #78020000000000000000000000000000  -> #78000000000000000000000000000000
-dqcan614 tointegralx  #7c100ff3fcff3fcff3fcff3fcff3fcff  -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-dqcan615 tointegralx  #fc000ff3fcff3fcff3fcffffcff3fcff  -> #fc000ff3fcff3fcff3fcff3fcff3fcff
-dqcan616 tointegralx  #7e010ff3fcff3fcff3fcff3fcff3fcff  -> #7c000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation
-dqcan617 tointegralx  #fe000ff3fcff3fcff3fdff3fcff3fcff  -> #fc000ff3fcff3fcff3fcff3fcff3fcff  Invalid_operation
--- uncanonical 3999, 39.99, 3.99, 0.399,                  and negatives
-dqcan618 tointegralx  #22080000000000000000000000000fff  -> #22080000000000000000000000000cff
-dqcan619 tointegralx  #22078000000000000000000000000fff  -> #22080000000000000000000000000040  Inexact Rounded
-dqcan620 tointegralx  #22074000000000000000000000000fff  -> #22080000000000000000000000000004  Inexact Rounded
-dqcan621 tointegralx  #22070000000000000000000000000fff  -> #22080000000000000000000000000000  Inexact Rounded
-dqcan622 tointegralx  #a2080000000000000000000000000fff  -> #a2080000000000000000000000000cff
-dqcan623 tointegralx  #a2078000000000000000000000000fff  -> #a2080000000000000000000000000040  Inexact Rounded
-dqcan624 tointegralx  #a2074000000000000000000000000fff  -> #a2080000000000000000000000000004  Inexact Rounded
-dqcan625 tointegralx  #a2070000000000000000000000000fff  -> #a2080000000000000000000000000000  Inexact Rounded
-
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqClass.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqClass.decTest
deleted file mode 100644
index f341933..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqClass.decTest
+++ /dev/null
@@ -1,77 +0,0 @@
-------------------------------------------------------------------------
--- dqClass.decTest -- decQuad Class operations                        --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- [New 2006.11.27]
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
-dqcla001  class    0                        -> +Zero
-dqcla002  class    0.00                     -> +Zero
-dqcla003  class    0E+5                     -> +Zero
-dqcla004  class    1E-6176                  -> +Subnormal
-dqcla005  class  0.1E-6143                  -> +Subnormal
-dqcla006  class  0.99999999999999999999999999999999E-6143     -> +Subnormal
-dqcla007  class  1.00000000000000000000000000000000E-6143     -> +Normal
-dqcla008  class   1E-6143                   -> +Normal
-dqcla009  class   1E-100                    -> +Normal
-dqcla010  class   1E-10                     -> +Normal
-dqcla012  class   1E-1                      -> +Normal
-dqcla013  class   1                         -> +Normal
-dqcla014  class   2.50                      -> +Normal
-dqcla015  class   100.100                   -> +Normal
-dqcla016  class   1E+30                     -> +Normal
-dqcla017  class   1E+6144                   -> +Normal
-dqcla018  class   9.99999999999999999999999999999999E+6144    -> +Normal
-dqcla019  class   Inf                       -> +Infinity
-
-dqcla021  class   -0                        -> -Zero
-dqcla022  class   -0.00                     -> -Zero
-dqcla023  class   -0E+5                     -> -Zero
-dqcla024  class   -1E-6176                  -> -Subnormal
-dqcla025  class  -0.1E-6143                 -> -Subnormal
-dqcla026  class  -0.99999999999999999999999999999999E-6143    -> -Subnormal
-dqcla027  class  -1.00000000000000000000000000000000E-6143    -> -Normal
-dqcla028  class  -1E-6143                   -> -Normal
-dqcla029  class  -1E-100                    -> -Normal
-dqcla030  class  -1E-10                     -> -Normal
-dqcla032  class  -1E-1                      -> -Normal
-dqcla033  class  -1                         -> -Normal
-dqcla034  class  -2.50                      -> -Normal
-dqcla035  class  -100.100                   -> -Normal
-dqcla036  class  -1E+30                     -> -Normal
-dqcla037  class  -1E+6144                   -> -Normal
-dqcla0614  class  -9.99999999999999999999999999999999E+6144    -> -Normal
-dqcla039  class  -Inf                       -> -Infinity
-
-dqcla041  class   NaN                       -> NaN
-dqcla042  class  -NaN                       -> NaN
-dqcla043  class  +NaN12345                  -> NaN
-dqcla044  class   sNaN                      -> sNaN
-dqcla045  class  -sNaN                      -> sNaN
-dqcla046  class  +sNaN12345                 -> sNaN
-
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompare.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompare.decTest
deleted file mode 100644
index a617ad1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompare.decTest
+++ /dev/null
@@ -1,753 +0,0 @@
-------------------------------------------------------------------------
--- dqCompare.decTest -- decQuad comparison that allows quiet NaNs     --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Note that we cannot assume add/subtract tests cover paths adequately,
--- here, because the code might be quite different (comparison cannot
--- overflow or underflow, so actual subtractions are not necessary).
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- sanity checks
-dqcom001 compare  -2  -2  -> 0
-dqcom002 compare  -2  -1  -> -1
-dqcom003 compare  -2   0  -> -1
-dqcom004 compare  -2   1  -> -1
-dqcom005 compare  -2   2  -> -1
-dqcom006 compare  -1  -2  -> 1
-dqcom007 compare  -1  -1  -> 0
-dqcom008 compare  -1   0  -> -1
-dqcom009 compare  -1   1  -> -1
-dqcom010 compare  -1   2  -> -1
-dqcom011 compare   0  -2  -> 1
-dqcom012 compare   0  -1  -> 1
-dqcom013 compare   0   0  -> 0
-dqcom014 compare   0   1  -> -1
-dqcom015 compare   0   2  -> -1
-dqcom016 compare   1  -2  -> 1
-dqcom017 compare   1  -1  -> 1
-dqcom018 compare   1   0  -> 1
-dqcom019 compare   1   1  -> 0
-dqcom020 compare   1   2  -> -1
-dqcom021 compare   2  -2  -> 1
-dqcom022 compare   2  -1  -> 1
-dqcom023 compare   2   0  -> 1
-dqcom025 compare   2   1  -> 1
-dqcom026 compare   2   2  -> 0
-
-dqcom031 compare  -20  -20  -> 0
-dqcom032 compare  -20  -10  -> -1
-dqcom033 compare  -20   00  -> -1
-dqcom034 compare  -20   10  -> -1
-dqcom035 compare  -20   20  -> -1
-dqcom036 compare  -10  -20  -> 1
-dqcom037 compare  -10  -10  -> 0
-dqcom038 compare  -10   00  -> -1
-dqcom039 compare  -10   10  -> -1
-dqcom040 compare  -10   20  -> -1
-dqcom041 compare   00  -20  -> 1
-dqcom042 compare   00  -10  -> 1
-dqcom043 compare   00   00  -> 0
-dqcom044 compare   00   10  -> -1
-dqcom045 compare   00   20  -> -1
-dqcom046 compare   10  -20  -> 1
-dqcom047 compare   10  -10  -> 1
-dqcom048 compare   10   00  -> 1
-dqcom049 compare   10   10  -> 0
-dqcom050 compare   10   20  -> -1
-dqcom051 compare   20  -20  -> 1
-dqcom052 compare   20  -10  -> 1
-dqcom053 compare   20   00  -> 1
-dqcom055 compare   20   10  -> 1
-dqcom056 compare   20   20  -> 0
-
-dqcom061 compare  -2.0  -2.0  -> 0
-dqcom062 compare  -2.0  -1.0  -> -1
-dqcom063 compare  -2.0   0.0  -> -1
-dqcom064 compare  -2.0   1.0  -> -1
-dqcom065 compare  -2.0   2.0  -> -1
-dqcom066 compare  -1.0  -2.0  -> 1
-dqcom067 compare  -1.0  -1.0  -> 0
-dqcom068 compare  -1.0   0.0  -> -1
-dqcom069 compare  -1.0   1.0  -> -1
-dqcom070 compare  -1.0   2.0  -> -1
-dqcom071 compare   0.0  -2.0  -> 1
-dqcom072 compare   0.0  -1.0  -> 1
-dqcom073 compare   0.0   0.0  -> 0
-dqcom074 compare   0.0   1.0  -> -1
-dqcom075 compare   0.0   2.0  -> -1
-dqcom076 compare   1.0  -2.0  -> 1
-dqcom077 compare   1.0  -1.0  -> 1
-dqcom078 compare   1.0   0.0  -> 1
-dqcom079 compare   1.0   1.0  -> 0
-dqcom080 compare   1.0   2.0  -> -1
-dqcom081 compare   2.0  -2.0  -> 1
-dqcom082 compare   2.0  -1.0  -> 1
-dqcom083 compare   2.0   0.0  -> 1
-dqcom085 compare   2.0   1.0  -> 1
-dqcom086 compare   2.0   2.0  -> 0
-
--- now some cases which might overflow if subtract were used
-dqcom090 compare  9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144  -> 0
-dqcom091 compare -9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144  -> -1
-dqcom092 compare  9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 1
-dqcom093 compare -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0
-
--- some differing length/exponent cases
-dqcom100 compare   7.0    7.0    -> 0
-dqcom101 compare   7.0    7      -> 0
-dqcom102 compare   7      7.0    -> 0
-dqcom103 compare   7E+0   7.0    -> 0
-dqcom104 compare   70E-1  7.0    -> 0
-dqcom105 compare   0.7E+1 7      -> 0
-dqcom106 compare   70E-1  7      -> 0
-dqcom107 compare   7.0    7E+0   -> 0
-dqcom108 compare   7.0    70E-1  -> 0
-dqcom109 compare   7      0.7E+1 -> 0
-dqcom110 compare   7      70E-1  -> 0
-
-dqcom120 compare   8.0    7.0    -> 1
-dqcom121 compare   8.0    7      -> 1
-dqcom122 compare   8      7.0    -> 1
-dqcom123 compare   8E+0   7.0    -> 1
-dqcom124 compare   80E-1  7.0    -> 1
-dqcom125 compare   0.8E+1 7      -> 1
-dqcom126 compare   80E-1  7      -> 1
-dqcom127 compare   8.0    7E+0   -> 1
-dqcom128 compare   8.0    70E-1  -> 1
-dqcom129 compare   8      0.7E+1  -> 1
-dqcom130 compare   8      70E-1  -> 1
-
-dqcom140 compare   8.0    9.0    -> -1
-dqcom141 compare   8.0    9      -> -1
-dqcom142 compare   8      9.0    -> -1
-dqcom143 compare   8E+0   9.0    -> -1
-dqcom144 compare   80E-1  9.0    -> -1
-dqcom145 compare   0.8E+1 9      -> -1
-dqcom146 compare   80E-1  9      -> -1
-dqcom147 compare   8.0    9E+0   -> -1
-dqcom148 compare   8.0    90E-1  -> -1
-dqcom149 compare   8      0.9E+1 -> -1
-dqcom150 compare   8      90E-1  -> -1
-
--- and again, with sign changes -+ ..
-dqcom200 compare  -7.0    7.0    -> -1
-dqcom201 compare  -7.0    7      -> -1
-dqcom202 compare  -7      7.0    -> -1
-dqcom203 compare  -7E+0   7.0    -> -1
-dqcom204 compare  -70E-1  7.0    -> -1
-dqcom205 compare  -0.7E+1 7      -> -1
-dqcom206 compare  -70E-1  7      -> -1
-dqcom207 compare  -7.0    7E+0   -> -1
-dqcom208 compare  -7.0    70E-1  -> -1
-dqcom209 compare  -7      0.7E+1 -> -1
-dqcom210 compare  -7      70E-1  -> -1
-
-dqcom220 compare  -8.0    7.0    -> -1
-dqcom221 compare  -8.0    7      -> -1
-dqcom222 compare  -8      7.0    -> -1
-dqcom223 compare  -8E+0   7.0    -> -1
-dqcom224 compare  -80E-1  7.0    -> -1
-dqcom225 compare  -0.8E+1 7      -> -1
-dqcom226 compare  -80E-1  7      -> -1
-dqcom227 compare  -8.0    7E+0   -> -1
-dqcom228 compare  -8.0    70E-1  -> -1
-dqcom229 compare  -8      0.7E+1 -> -1
-dqcom230 compare  -8      70E-1  -> -1
-
-dqcom240 compare  -8.0    9.0    -> -1
-dqcom241 compare  -8.0    9      -> -1
-dqcom242 compare  -8      9.0    -> -1
-dqcom243 compare  -8E+0   9.0    -> -1
-dqcom244 compare  -80E-1  9.0    -> -1
-dqcom245 compare  -0.8E+1 9      -> -1
-dqcom246 compare  -80E-1  9      -> -1
-dqcom247 compare  -8.0    9E+0   -> -1
-dqcom248 compare  -8.0    90E-1  -> -1
-dqcom249 compare  -8      0.9E+1 -> -1
-dqcom250 compare  -8      90E-1  -> -1
-
--- and again, with sign changes +- ..
-dqcom300 compare   7.0    -7.0    -> 1
-dqcom301 compare   7.0    -7      -> 1
-dqcom302 compare   7      -7.0    -> 1
-dqcom303 compare   7E+0   -7.0    -> 1
-dqcom304 compare   70E-1  -7.0    -> 1
-dqcom305 compare   .7E+1  -7      -> 1
-dqcom306 compare   70E-1  -7      -> 1
-dqcom307 compare   7.0    -7E+0   -> 1
-dqcom308 compare   7.0    -70E-1  -> 1
-dqcom309 compare   7      -.7E+1  -> 1
-dqcom310 compare   7      -70E-1  -> 1
-
-dqcom320 compare   8.0    -7.0    -> 1
-dqcom321 compare   8.0    -7      -> 1
-dqcom322 compare   8      -7.0    -> 1
-dqcom323 compare   8E+0   -7.0    -> 1
-dqcom324 compare   80E-1  -7.0    -> 1
-dqcom325 compare   .8E+1  -7      -> 1
-dqcom326 compare   80E-1  -7      -> 1
-dqcom327 compare   8.0    -7E+0   -> 1
-dqcom328 compare   8.0    -70E-1  -> 1
-dqcom329 compare   8      -.7E+1  -> 1
-dqcom330 compare   8      -70E-1  -> 1
-
-dqcom340 compare   8.0    -9.0    -> 1
-dqcom341 compare   8.0    -9      -> 1
-dqcom342 compare   8      -9.0    -> 1
-dqcom343 compare   8E+0   -9.0    -> 1
-dqcom344 compare   80E-1  -9.0    -> 1
-dqcom345 compare   .8E+1  -9      -> 1
-dqcom346 compare   80E-1  -9      -> 1
-dqcom347 compare   8.0    -9E+0   -> 1
-dqcom348 compare   8.0    -90E-1  -> 1
-dqcom349 compare   8      -.9E+1  -> 1
-dqcom350 compare   8      -90E-1  -> 1
-
--- and again, with sign changes -- ..
-dqcom400 compare   -7.0    -7.0    -> 0
-dqcom401 compare   -7.0    -7      -> 0
-dqcom402 compare   -7      -7.0    -> 0
-dqcom403 compare   -7E+0   -7.0    -> 0
-dqcom404 compare   -70E-1  -7.0    -> 0
-dqcom405 compare   -.7E+1  -7      -> 0
-dqcom406 compare   -70E-1  -7      -> 0
-dqcom407 compare   -7.0    -7E+0   -> 0
-dqcom408 compare   -7.0    -70E-1  -> 0
-dqcom409 compare   -7      -.7E+1  -> 0
-dqcom410 compare   -7      -70E-1  -> 0
-
-dqcom420 compare   -8.0    -7.0    -> -1
-dqcom421 compare   -8.0    -7      -> -1
-dqcom422 compare   -8      -7.0    -> -1
-dqcom423 compare   -8E+0   -7.0    -> -1
-dqcom424 compare   -80E-1  -7.0    -> -1
-dqcom425 compare   -.8E+1  -7      -> -1
-dqcom426 compare   -80E-1  -7      -> -1
-dqcom427 compare   -8.0    -7E+0   -> -1
-dqcom428 compare   -8.0    -70E-1  -> -1
-dqcom429 compare   -8      -.7E+1  -> -1
-dqcom430 compare   -8      -70E-1  -> -1
-
-dqcom440 compare   -8.0    -9.0    -> 1
-dqcom441 compare   -8.0    -9      -> 1
-dqcom442 compare   -8      -9.0    -> 1
-dqcom443 compare   -8E+0   -9.0    -> 1
-dqcom444 compare   -80E-1  -9.0    -> 1
-dqcom445 compare   -.8E+1  -9      -> 1
-dqcom446 compare   -80E-1  -9      -> 1
-dqcom447 compare   -8.0    -9E+0   -> 1
-dqcom448 compare   -8.0    -90E-1  -> 1
-dqcom449 compare   -8      -.9E+1  -> 1
-dqcom450 compare   -8      -90E-1  -> 1
-
--- misalignment traps for little-endian
-dqcom451 compare      1.0       0.1  -> 1
-dqcom452 compare      0.1       1.0  -> -1
-dqcom453 compare     10.0       0.1  -> 1
-dqcom454 compare      0.1      10.0  -> -1
-dqcom455 compare      100       1.0  -> 1
-dqcom456 compare      1.0       100  -> -1
-dqcom457 compare     1000      10.0  -> 1
-dqcom458 compare     10.0      1000  -> -1
-dqcom459 compare    10000     100.0  -> 1
-dqcom460 compare    100.0     10000  -> -1
-dqcom461 compare   100000    1000.0  -> 1
-dqcom462 compare   1000.0    100000  -> -1
-dqcom463 compare  1000000   10000.0  -> 1
-dqcom464 compare  10000.0   1000000  -> -1
-
--- testcases that subtract to lots of zeros at boundaries [pgr]
-dqcom473 compare 123.9999999999999999994560000000000E-89 123.999999999999999999456E-89 -> 0
-dqcom474 compare 123.999999999999999999456000000000E+89 123.999999999999999999456E+89 -> 0
-dqcom475 compare 123.99999999999999999945600000000E-89 123.999999999999999999456E-89 -> 0
-dqcom476 compare 123.9999999999999999994560000000E+89 123.999999999999999999456E+89 -> 0
-dqcom477 compare 123.999999999999999999456000000E-89 123.999999999999999999456E-89 -> 0
-dqcom478 compare 123.99999999999999999945600000E+89 123.999999999999999999456E+89 -> 0
-dqcom479 compare 123.9999999999999999994560000E-89 123.999999999999999999456E-89 -> 0
-dqcom480 compare 123.999999999999999999456000E+89 123.999999999999999999456E+89 -> 0
-dqcom481 compare 123.99999999999999999945600E-89 123.999999999999999999456E-89 -> 0
-dqcom482 compare 123.9999999999999999994560E+89 123.999999999999999999456E+89 -> 0
-dqcom483 compare 123.999999999999999999456E-89 123.999999999999999999456E-89 -> 0
-dqcom487 compare 123.999999999999999999456E+89 123.9999999999999999994560000000000E+89 -> 0
-dqcom488 compare 123.999999999999999999456E-89 123.999999999999999999456000000000E-89 -> 0
-dqcom489 compare 123.999999999999999999456E+89 123.99999999999999999945600000000E+89 -> 0
-dqcom490 compare 123.999999999999999999456E-89 123.9999999999999999994560000000E-89 -> 0
-dqcom491 compare 123.999999999999999999456E+89 123.999999999999999999456000000E+89 -> 0
-dqcom492 compare 123.999999999999999999456E-89 123.99999999999999999945600000E-89 -> 0
-dqcom493 compare 123.999999999999999999456E+89 123.9999999999999999994560000E+89 -> 0
-dqcom494 compare 123.999999999999999999456E-89 123.999999999999999999456000E-89 -> 0
-dqcom495 compare 123.999999999999999999456E+89 123.99999999999999999945600E+89 -> 0
-dqcom496 compare 123.999999999999999999456E-89 123.9999999999999999994560E-89 -> 0
-dqcom497 compare 123.999999999999999999456E+89 123.999999999999999999456E+89 -> 0
-
--- wide-ranging, around precision; signs equal
-dqcom500 compare    1     1E-15    -> 1
-dqcom501 compare    1     1E-14    -> 1
-dqcom502 compare    1     1E-13    -> 1
-dqcom503 compare    1     1E-12    -> 1
-dqcom504 compare    1     1E-11    -> 1
-dqcom505 compare    1     1E-10    -> 1
-dqcom506 compare    1     1E-9     -> 1
-dqcom507 compare    1     1E-8     -> 1
-dqcom508 compare    1     1E-7     -> 1
-dqcom509 compare    1     1E-6     -> 1
-dqcom510 compare    1     1E-5     -> 1
-dqcom511 compare    1     1E-4     -> 1
-dqcom512 compare    1     1E-3     -> 1
-dqcom513 compare    1     1E-2     -> 1
-dqcom514 compare    1     1E-1     -> 1
-dqcom515 compare    1     1E-0     -> 0
-dqcom516 compare    1     1E+1     -> -1
-dqcom517 compare    1     1E+2     -> -1
-dqcom518 compare    1     1E+3     -> -1
-dqcom519 compare    1     1E+4     -> -1
-dqcom521 compare    1     1E+5     -> -1
-dqcom522 compare    1     1E+6     -> -1
-dqcom523 compare    1     1E+7     -> -1
-dqcom524 compare    1     1E+8     -> -1
-dqcom525 compare    1     1E+9     -> -1
-dqcom526 compare    1     1E+10    -> -1
-dqcom527 compare    1     1E+11    -> -1
-dqcom528 compare    1     1E+12    -> -1
-dqcom529 compare    1     1E+13    -> -1
-dqcom530 compare    1     1E+14    -> -1
-dqcom531 compare    1     1E+15    -> -1
--- LR swap
-dqcom540 compare    1E-15  1       -> -1
-dqcom541 compare    1E-14  1       -> -1
-dqcom542 compare    1E-13  1       -> -1
-dqcom543 compare    1E-12  1       -> -1
-dqcom544 compare    1E-11  1       -> -1
-dqcom545 compare    1E-10  1       -> -1
-dqcom546 compare    1E-9   1       -> -1
-dqcom547 compare    1E-8   1       -> -1
-dqcom548 compare    1E-7   1       -> -1
-dqcom549 compare    1E-6   1       -> -1
-dqcom550 compare    1E-5   1       -> -1
-dqcom551 compare    1E-4   1       -> -1
-dqcom552 compare    1E-3   1       -> -1
-dqcom553 compare    1E-2   1       -> -1
-dqcom554 compare    1E-1   1       -> -1
-dqcom555 compare    1E-0   1       ->  0
-dqcom556 compare    1E+1   1       ->  1
-dqcom557 compare    1E+2   1       ->  1
-dqcom558 compare    1E+3   1       ->  1
-dqcom559 compare    1E+4   1       ->  1
-dqcom561 compare    1E+5   1       ->  1
-dqcom562 compare    1E+6   1       ->  1
-dqcom563 compare    1E+7   1       ->  1
-dqcom564 compare    1E+8   1       ->  1
-dqcom565 compare    1E+9   1       ->  1
-dqcom566 compare    1E+10  1       ->  1
-dqcom567 compare    1E+11  1       ->  1
-dqcom568 compare    1E+12  1       ->  1
-dqcom569 compare    1E+13  1       ->  1
-dqcom570 compare    1E+14  1       ->  1
-dqcom571 compare    1E+15  1       ->  1
--- similar with a useful coefficient, one side only
-dqcom580 compare  0.000000987654321     1E-15    -> 1
-dqcom581 compare  0.000000987654321     1E-14    -> 1
-dqcom582 compare  0.000000987654321     1E-13    -> 1
-dqcom583 compare  0.000000987654321     1E-12    -> 1
-dqcom584 compare  0.000000987654321     1E-11    -> 1
-dqcom585 compare  0.000000987654321     1E-10    -> 1
-dqcom586 compare  0.000000987654321     1E-9     -> 1
-dqcom587 compare  0.000000987654321     1E-8     -> 1
-dqcom588 compare  0.000000987654321     1E-7     -> 1
-dqcom589 compare  0.000000987654321     1E-6     -> -1
-dqcom590 compare  0.000000987654321     1E-5     -> -1
-dqcom591 compare  0.000000987654321     1E-4     -> -1
-dqcom592 compare  0.000000987654321     1E-3     -> -1
-dqcom593 compare  0.000000987654321     1E-2     -> -1
-dqcom594 compare  0.000000987654321     1E-1     -> -1
-dqcom595 compare  0.000000987654321     1E-0     -> -1
-dqcom596 compare  0.000000987654321     1E+1     -> -1
-dqcom597 compare  0.000000987654321     1E+2     -> -1
-dqcom598 compare  0.000000987654321     1E+3     -> -1
-dqcom599 compare  0.000000987654321     1E+4     -> -1
-
--- check some unit-y traps
-dqcom600 compare   12            12.2345 -> -1
-dqcom601 compare   12.0          12.2345 -> -1
-dqcom602 compare   12.00         12.2345 -> -1
-dqcom603 compare   12.000        12.2345 -> -1
-dqcom604 compare   12.0000       12.2345 -> -1
-dqcom605 compare   12.00000      12.2345 -> -1
-dqcom606 compare   12.000000     12.2345 -> -1
-dqcom607 compare   12.0000000    12.2345 -> -1
-dqcom608 compare   12.00000000   12.2345 -> -1
-dqcom609 compare   12.000000000  12.2345 -> -1
-dqcom610 compare   12.1234 12            ->  1
-dqcom611 compare   12.1234 12.0          ->  1
-dqcom612 compare   12.1234 12.00         ->  1
-dqcom613 compare   12.1234 12.000        ->  1
-dqcom614 compare   12.1234 12.0000       ->  1
-dqcom615 compare   12.1234 12.00000      ->  1
-dqcom616 compare   12.1234 12.000000     ->  1
-dqcom617 compare   12.1234 12.0000000    ->  1
-dqcom618 compare   12.1234 12.00000000   ->  1
-dqcom619 compare   12.1234 12.000000000  ->  1
-dqcom620 compare  -12           -12.2345 ->  1
-dqcom621 compare  -12.0         -12.2345 ->  1
-dqcom622 compare  -12.00        -12.2345 ->  1
-dqcom623 compare  -12.000       -12.2345 ->  1
-dqcom624 compare  -12.0000      -12.2345 ->  1
-dqcom625 compare  -12.00000     -12.2345 ->  1
-dqcom626 compare  -12.000000    -12.2345 ->  1
-dqcom627 compare  -12.0000000   -12.2345 ->  1
-dqcom628 compare  -12.00000000  -12.2345 ->  1
-dqcom629 compare  -12.000000000 -12.2345 ->  1
-dqcom630 compare  -12.1234 -12           -> -1
-dqcom631 compare  -12.1234 -12.0         -> -1
-dqcom632 compare  -12.1234 -12.00        -> -1
-dqcom633 compare  -12.1234 -12.000       -> -1
-dqcom634 compare  -12.1234 -12.0000      -> -1
-dqcom635 compare  -12.1234 -12.00000     -> -1
-dqcom636 compare  -12.1234 -12.000000    -> -1
-dqcom637 compare  -12.1234 -12.0000000   -> -1
-dqcom638 compare  -12.1234 -12.00000000  -> -1
-dqcom639 compare  -12.1234 -12.000000000 -> -1
-
--- extended zeros
-dqcom640 compare   0     0   -> 0
-dqcom641 compare   0    -0   -> 0
-dqcom642 compare   0    -0.0 -> 0
-dqcom643 compare   0     0.0 -> 0
-dqcom644 compare  -0     0   -> 0
-dqcom645 compare  -0    -0   -> 0
-dqcom646 compare  -0    -0.0 -> 0
-dqcom647 compare  -0     0.0 -> 0
-dqcom648 compare   0.0   0   -> 0
-dqcom649 compare   0.0  -0   -> 0
-dqcom650 compare   0.0  -0.0 -> 0
-dqcom651 compare   0.0   0.0 -> 0
-dqcom652 compare  -0.0   0   -> 0
-dqcom653 compare  -0.0  -0   -> 0
-dqcom654 compare  -0.0  -0.0 -> 0
-dqcom655 compare  -0.0   0.0 -> 0
-
-dqcom656 compare  -0E1   0.0 -> 0
-dqcom657 compare  -0E2   0.0 -> 0
-dqcom658 compare   0E1   0.0 -> 0
-dqcom659 compare   0E2   0.0 -> 0
-dqcom660 compare  -0E1   0   -> 0
-dqcom661 compare  -0E2   0   -> 0
-dqcom662 compare   0E1   0   -> 0
-dqcom663 compare   0E2   0   -> 0
-dqcom664 compare  -0E1  -0E1 -> 0
-dqcom665 compare  -0E2  -0E1 -> 0
-dqcom666 compare   0E1  -0E1 -> 0
-dqcom667 compare   0E2  -0E1 -> 0
-dqcom668 compare  -0E1  -0E2 -> 0
-dqcom669 compare  -0E2  -0E2 -> 0
-dqcom670 compare   0E1  -0E2 -> 0
-dqcom671 compare   0E2  -0E2 -> 0
-dqcom672 compare  -0E1   0E1 -> 0
-dqcom673 compare  -0E2   0E1 -> 0
-dqcom674 compare   0E1   0E1 -> 0
-dqcom675 compare   0E2   0E1 -> 0
-dqcom676 compare  -0E1   0E2 -> 0
-dqcom677 compare  -0E2   0E2 -> 0
-dqcom678 compare   0E1   0E2 -> 0
-dqcom679 compare   0E2   0E2 -> 0
-
--- trailing zeros; unit-y
-dqcom680 compare   12    12           -> 0
-dqcom681 compare   12    12.0         -> 0
-dqcom682 compare   12    12.00        -> 0
-dqcom683 compare   12    12.000       -> 0
-dqcom684 compare   12    12.0000      -> 0
-dqcom685 compare   12    12.00000     -> 0
-dqcom686 compare   12    12.000000    -> 0
-dqcom687 compare   12    12.0000000   -> 0
-dqcom688 compare   12    12.00000000  -> 0
-dqcom689 compare   12    12.000000000 -> 0
-dqcom690 compare   12              12 -> 0
-dqcom691 compare   12.0            12 -> 0
-dqcom692 compare   12.00           12 -> 0
-dqcom693 compare   12.000          12 -> 0
-dqcom694 compare   12.0000         12 -> 0
-dqcom695 compare   12.00000        12 -> 0
-dqcom696 compare   12.000000       12 -> 0
-dqcom697 compare   12.0000000      12 -> 0
-dqcom698 compare   12.00000000     12 -> 0
-dqcom699 compare   12.000000000    12 -> 0
-
--- first, second, & last digit
-dqcom700 compare   1234567899999999999999999990123456 1234567899999999999999999990123455 -> 1
-dqcom701 compare   1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0
-dqcom702 compare   1234567899999999999999999990123456 1234567899999999999999999990123457 -> -1
-dqcom703 compare   1234567899999999999999999990123456 0234567899999999999999999990123456 -> 1
-dqcom704 compare   1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0
-dqcom705 compare   1234567899999999999999999990123456 2234567899999999999999999990123456 -> -1
-dqcom706 compare   1134567899999999999999999990123456 1034567899999999999999999990123456 -> 1
-dqcom707 compare   1134567899999999999999999990123456 1134567899999999999999999990123456 -> 0
-dqcom708 compare   1134567899999999999999999990123456 1234567899999999999999999990123456 -> -1
-
--- miscellaneous
-dqcom721 compare 12345678000 1 -> 1
-dqcom722 compare 1 12345678000 -> -1
-dqcom723 compare 1234567800  1 -> 1
-dqcom724 compare 1 1234567800  -> -1
-dqcom725 compare 1234567890  1 -> 1
-dqcom726 compare 1 1234567890  -> -1
-dqcom727 compare 1234567891  1 -> 1
-dqcom728 compare 1 1234567891  -> -1
-dqcom729 compare 12345678901 1 -> 1
-dqcom730 compare 1 12345678901 -> -1
-dqcom731 compare 1234567896  1 -> 1
-dqcom732 compare 1 1234567896  -> -1
-
--- residue cases at lower precision
-dqcom740 compare  1  0.9999999  -> 1
-dqcom741 compare  1  0.999999   -> 1
-dqcom742 compare  1  0.99999    -> 1
-dqcom743 compare  1  1.0000     -> 0
-dqcom744 compare  1  1.00001    -> -1
-dqcom745 compare  1  1.000001   -> -1
-dqcom746 compare  1  1.0000001  -> -1
-dqcom750 compare  0.9999999  1  -> -1
-dqcom751 compare  0.999999   1  -> -1
-dqcom752 compare  0.99999    1  -> -1
-dqcom753 compare  1.0000     1  -> 0
-dqcom754 compare  1.00001    1  -> 1
-dqcom755 compare  1.000001   1  -> 1
-dqcom756 compare  1.0000001  1  -> 1
-
--- Specials
-dqcom780 compare  Inf  -Inf   ->  1
-dqcom781 compare  Inf  -1000  ->  1
-dqcom782 compare  Inf  -1     ->  1
-dqcom783 compare  Inf  -0     ->  1
-dqcom784 compare  Inf   0     ->  1
-dqcom785 compare  Inf   1     ->  1
-dqcom786 compare  Inf   1000  ->  1
-dqcom787 compare  Inf   Inf   ->  0
-dqcom788 compare -1000  Inf   -> -1
-dqcom789 compare -Inf   Inf   -> -1
-dqcom790 compare -1     Inf   -> -1
-dqcom791 compare -0     Inf   -> -1
-dqcom792 compare  0     Inf   -> -1
-dqcom793 compare  1     Inf   -> -1
-dqcom794 compare  1000  Inf   -> -1
-dqcom795 compare  Inf   Inf   ->  0
-
-dqcom800 compare -Inf  -Inf   ->  0
-dqcom801 compare -Inf  -1000  -> -1
-dqcom802 compare -Inf  -1     -> -1
-dqcom803 compare -Inf  -0     -> -1
-dqcom804 compare -Inf   0     -> -1
-dqcom805 compare -Inf   1     -> -1
-dqcom806 compare -Inf   1000  -> -1
-dqcom807 compare -Inf   Inf   -> -1
-dqcom808 compare -Inf  -Inf   ->  0
-dqcom809 compare -1000 -Inf   ->  1
-dqcom810 compare -1    -Inf   ->  1
-dqcom811 compare -0    -Inf   ->  1
-dqcom812 compare  0    -Inf   ->  1
-dqcom813 compare  1    -Inf   ->  1
-dqcom814 compare  1000 -Inf   ->  1
-dqcom815 compare  Inf  -Inf   ->  1
-
-dqcom821 compare  NaN -Inf    ->  NaN
-dqcom822 compare  NaN -1000   ->  NaN
-dqcom823 compare  NaN -1      ->  NaN
-dqcom824 compare  NaN -0      ->  NaN
-dqcom825 compare  NaN  0      ->  NaN
-dqcom826 compare  NaN  1      ->  NaN
-dqcom827 compare  NaN  1000   ->  NaN
-dqcom828 compare  NaN  Inf    ->  NaN
-dqcom829 compare  NaN  NaN    ->  NaN
-dqcom830 compare -Inf  NaN    ->  NaN
-dqcom831 compare -1000 NaN    ->  NaN
-dqcom832 compare -1    NaN    ->  NaN
-dqcom833 compare -0    NaN    ->  NaN
-dqcom834 compare  0    NaN    ->  NaN
-dqcom835 compare  1    NaN    ->  NaN
-dqcom836 compare  1000 NaN    ->  NaN
-dqcom837 compare  Inf  NaN    ->  NaN
-dqcom838 compare -NaN -NaN    -> -NaN
-dqcom839 compare +NaN -NaN    ->  NaN
-dqcom840 compare -NaN +NaN    -> -NaN
-
-dqcom841 compare  sNaN -Inf   ->  NaN  Invalid_operation
-dqcom842 compare  sNaN -1000  ->  NaN  Invalid_operation
-dqcom843 compare  sNaN -1     ->  NaN  Invalid_operation
-dqcom844 compare  sNaN -0     ->  NaN  Invalid_operation
-dqcom845 compare  sNaN  0     ->  NaN  Invalid_operation
-dqcom846 compare  sNaN  1     ->  NaN  Invalid_operation
-dqcom847 compare  sNaN  1000  ->  NaN  Invalid_operation
-dqcom848 compare  sNaN  NaN   ->  NaN  Invalid_operation
-dqcom849 compare  sNaN sNaN   ->  NaN  Invalid_operation
-dqcom850 compare  NaN  sNaN   ->  NaN  Invalid_operation
-dqcom851 compare -Inf  sNaN   ->  NaN  Invalid_operation
-dqcom852 compare -1000 sNaN   ->  NaN  Invalid_operation
-dqcom853 compare -1    sNaN   ->  NaN  Invalid_operation
-dqcom854 compare -0    sNaN   ->  NaN  Invalid_operation
-dqcom855 compare  0    sNaN   ->  NaN  Invalid_operation
-dqcom856 compare  1    sNaN   ->  NaN  Invalid_operation
-dqcom857 compare  1000 sNaN   ->  NaN  Invalid_operation
-dqcom858 compare  Inf  sNaN   ->  NaN  Invalid_operation
-dqcom859 compare  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqcom860 compare  NaN9 -Inf   ->  NaN9
-dqcom861 compare  NaN8  999   ->  NaN8
-dqcom862 compare  NaN77 Inf   ->  NaN77
-dqcom863 compare -NaN67 NaN5  -> -NaN67
-dqcom864 compare -Inf  -NaN4  -> -NaN4
-dqcom865 compare -999  -NaN33 -> -NaN33
-dqcom866 compare  Inf   NaN2  ->  NaN2
-dqcom867 compare -NaN41 -NaN42 -> -NaN41
-dqcom868 compare +NaN41 -NaN42 ->  NaN41
-dqcom869 compare -NaN41 +NaN42 -> -NaN41
-dqcom870 compare +NaN41 +NaN42 ->  NaN41
-
-dqcom871 compare -sNaN99 -Inf    -> -NaN99 Invalid_operation
-dqcom872 compare  sNaN98 -11     ->  NaN98 Invalid_operation
-dqcom873 compare  sNaN97  NaN    ->  NaN97 Invalid_operation
-dqcom874 compare  sNaN16 sNaN94  ->  NaN16 Invalid_operation
-dqcom875 compare  NaN85  sNaN83  ->  NaN83 Invalid_operation
-dqcom876 compare -Inf    sNaN92  ->  NaN92 Invalid_operation
-dqcom877 compare  088    sNaN81  ->  NaN81 Invalid_operation
-dqcom878 compare  Inf    sNaN90  ->  NaN90 Invalid_operation
-dqcom879 compare  NaN   -sNaN89  -> -NaN89 Invalid_operation
-
--- wide range
-dqcom880 compare +1.23456789012345E-0 9E+6144 -> -1
-dqcom881 compare 9E+6144 +1.23456789012345E-0 ->  1
-dqcom882 compare +0.100 9E-6143               ->  1
-dqcom883 compare 9E-6143 +0.100               -> -1
-dqcom885 compare -1.23456789012345E-0 9E+6144 -> -1
-dqcom886 compare 9E+6144 -1.23456789012345E-0 ->  1
-dqcom887 compare -0.100 9E-6143               -> -1
-dqcom888 compare 9E-6143 -0.100               ->  1
-
--- signs
-dqcom901 compare  1e+77  1e+11 ->  1
-dqcom902 compare  1e+77 -1e+11 ->  1
-dqcom903 compare -1e+77  1e+11 -> -1
-dqcom904 compare -1e+77 -1e+11 -> -1
-dqcom905 compare  1e-77  1e-11 -> -1
-dqcom906 compare  1e-77 -1e-11 ->  1
-dqcom907 compare -1e-77  1e-11 -> -1
-dqcom908 compare -1e-77 -1e-11 ->  1
-
--- full alignment range, both ways
-dqcomp1001 compare 1 1.000000000000000000000000000000000  -> 0
-dqcomp1002 compare 1 1.00000000000000000000000000000000   -> 0
-dqcomp1003 compare 1 1.0000000000000000000000000000000    -> 0
-dqcomp1004 compare 1 1.000000000000000000000000000000     -> 0
-dqcomp1005 compare 1 1.00000000000000000000000000000      -> 0
-dqcomp1006 compare 1 1.0000000000000000000000000000       -> 0
-dqcomp1007 compare 1 1.000000000000000000000000000        -> 0
-dqcomp1008 compare 1 1.00000000000000000000000000         -> 0
-dqcomp1009 compare 1 1.0000000000000000000000000          -> 0
-dqcomp1010 compare 1 1.000000000000000000000000           -> 0
-dqcomp1011 compare 1 1.00000000000000000000000            -> 0
-dqcomp1012 compare 1 1.0000000000000000000000             -> 0
-dqcomp1013 compare 1 1.000000000000000000000              -> 0
-dqcomp1014 compare 1 1.00000000000000000000               -> 0
-dqcomp1015 compare 1 1.0000000000000000000                -> 0
-dqcomp1016 compare 1 1.000000000000000000                 -> 0
-dqcomp1017 compare 1 1.00000000000000000                  -> 0
-dqcomp1018 compare 1 1.0000000000000000                   -> 0
-dqcomp1019 compare 1 1.000000000000000  -> 0
-dqcomp1020 compare 1 1.00000000000000   -> 0
-dqcomp1021 compare 1 1.0000000000000    -> 0
-dqcomp1022 compare 1 1.000000000000     -> 0
-dqcomp1023 compare 1 1.00000000000      -> 0
-dqcomp1024 compare 1 1.0000000000       -> 0
-dqcomp1025 compare 1 1.000000000        -> 0
-dqcomp1026 compare 1 1.00000000         -> 0
-dqcomp1027 compare 1 1.0000000          -> 0
-dqcomp1028 compare 1 1.000000           -> 0
-dqcomp1029 compare 1 1.00000            -> 0
-dqcomp1030 compare 1 1.0000             -> 0
-dqcomp1031 compare 1 1.000              -> 0
-dqcomp1032 compare 1 1.00               -> 0
-dqcomp1033 compare 1 1.0                -> 0
-
-dqcomp1041 compare 1.000000000000000000000000000000000  1 -> 0
-dqcomp1042 compare 1.00000000000000000000000000000000   1 -> 0
-dqcomp1043 compare 1.0000000000000000000000000000000    1 -> 0
-dqcomp1044 compare 1.000000000000000000000000000000     1 -> 0
-dqcomp1045 compare 1.00000000000000000000000000000      1 -> 0
-dqcomp1046 compare 1.0000000000000000000000000000       1 -> 0
-dqcomp1047 compare 1.000000000000000000000000000        1 -> 0
-dqcomp1048 compare 1.00000000000000000000000000         1 -> 0
-dqcomp1049 compare 1.0000000000000000000000000          1 -> 0
-dqcomp1050 compare 1.000000000000000000000000           1 -> 0
-dqcomp1051 compare 1.00000000000000000000000            1 -> 0
-dqcomp1052 compare 1.0000000000000000000000             1 -> 0
-dqcomp1053 compare 1.000000000000000000000              1 -> 0
-dqcomp1054 compare 1.00000000000000000000               1 -> 0
-dqcomp1055 compare 1.0000000000000000000                1 -> 0
-dqcomp1056 compare 1.000000000000000000                 1 -> 0
-dqcomp1057 compare 1.00000000000000000                  1 -> 0
-dqcomp1058 compare 1.0000000000000000                   1 -> 0
-dqcomp1059 compare 1.000000000000000  1 -> 0
-dqcomp1060 compare 1.00000000000000   1 -> 0
-dqcomp1061 compare 1.0000000000000    1 -> 0
-dqcomp1062 compare 1.000000000000     1 -> 0
-dqcomp1063 compare 1.00000000000      1 -> 0
-dqcomp1064 compare 1.0000000000       1 -> 0
-dqcomp1065 compare 1.000000000        1 -> 0
-dqcomp1066 compare 1.00000000         1 -> 0
-dqcomp1067 compare 1.0000000          1 -> 0
-dqcomp1068 compare 1.000000           1 -> 0
-dqcomp1069 compare 1.00000            1 -> 0
-dqcomp1070 compare 1.0000             1 -> 0
-dqcomp1071 compare 1.000              1 -> 0
-dqcomp1072 compare 1.00               1 -> 0
-dqcomp1073 compare 1.0                1 -> 0
-
--- check MSD always detected non-zero
-dqcomp1080 compare 0 0.000000000000000000000000000000000  -> 0
-dqcomp1081 compare 0 1.000000000000000000000000000000000  -> -1
-dqcomp1082 compare 0 2.000000000000000000000000000000000  -> -1
-dqcomp1083 compare 0 3.000000000000000000000000000000000  -> -1
-dqcomp1084 compare 0 4.000000000000000000000000000000000  -> -1
-dqcomp1085 compare 0 5.000000000000000000000000000000000  -> -1
-dqcomp1086 compare 0 6.000000000000000000000000000000000  -> -1
-dqcomp1087 compare 0 7.000000000000000000000000000000000  -> -1
-dqcomp1088 compare 0 8.000000000000000000000000000000000  -> -1
-dqcomp1089 compare 0 9.000000000000000000000000000000000  -> -1
-dqcomp1090 compare 0.000000000000000000000000000000000  0 -> 0
-dqcomp1091 compare 1.000000000000000000000000000000000  0 -> 1
-dqcomp1092 compare 2.000000000000000000000000000000000  0 -> 1
-dqcomp1093 compare 3.000000000000000000000000000000000  0 -> 1
-dqcomp1094 compare 4.000000000000000000000000000000000  0 -> 1
-dqcomp1095 compare 5.000000000000000000000000000000000  0 -> 1
-dqcomp1096 compare 6.000000000000000000000000000000000  0 -> 1
-dqcomp1097 compare 7.000000000000000000000000000000000  0 -> 1
-dqcomp1098 compare 8.000000000000000000000000000000000  0 -> 1
-dqcomp1099 compare 9.000000000000000000000000000000000  0 -> 1
-
--- Null tests
-dqcom990 compare 10  # -> NaN Invalid_operation
-dqcom991 compare  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareSig.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareSig.decTest
deleted file mode 100644
index c068d47..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareSig.decTest
+++ /dev/null
@@ -1,647 +0,0 @@
-------------------------------------------------------------------------
--- dqCompareSig.decTest -- decQuad comparison; all NaNs signal        --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Note that we cannot assume add/subtract tests cover paths adequately,
--- here, because the code might be quite different (comparison cannot
--- overflow or underflow, so actual subtractions are not necessary).
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- sanity checks
-dqcms001 comparesig  -2  -2  -> 0
-dqcms002 comparesig  -2  -1  -> -1
-dqcms003 comparesig  -2   0  -> -1
-dqcms004 comparesig  -2   1  -> -1
-dqcms005 comparesig  -2   2  -> -1
-dqcms006 comparesig  -1  -2  -> 1
-dqcms007 comparesig  -1  -1  -> 0
-dqcms008 comparesig  -1   0  -> -1
-dqcms009 comparesig  -1   1  -> -1
-dqcms010 comparesig  -1   2  -> -1
-dqcms011 comparesig   0  -2  -> 1
-dqcms012 comparesig   0  -1  -> 1
-dqcms013 comparesig   0   0  -> 0
-dqcms014 comparesig   0   1  -> -1
-dqcms015 comparesig   0   2  -> -1
-dqcms016 comparesig   1  -2  -> 1
-dqcms017 comparesig   1  -1  -> 1
-dqcms018 comparesig   1   0  -> 1
-dqcms019 comparesig   1   1  -> 0
-dqcms020 comparesig   1   2  -> -1
-dqcms021 comparesig   2  -2  -> 1
-dqcms022 comparesig   2  -1  -> 1
-dqcms023 comparesig   2   0  -> 1
-dqcms025 comparesig   2   1  -> 1
-dqcms026 comparesig   2   2  -> 0
-
-dqcms031 comparesig  -20  -20  -> 0
-dqcms032 comparesig  -20  -10  -> -1
-dqcms033 comparesig  -20   00  -> -1
-dqcms034 comparesig  -20   10  -> -1
-dqcms035 comparesig  -20   20  -> -1
-dqcms036 comparesig  -10  -20  -> 1
-dqcms037 comparesig  -10  -10  -> 0
-dqcms038 comparesig  -10   00  -> -1
-dqcms039 comparesig  -10   10  -> -1
-dqcms040 comparesig  -10   20  -> -1
-dqcms041 comparesig   00  -20  -> 1
-dqcms042 comparesig   00  -10  -> 1
-dqcms043 comparesig   00   00  -> 0
-dqcms044 comparesig   00   10  -> -1
-dqcms045 comparesig   00   20  -> -1
-dqcms046 comparesig   10  -20  -> 1
-dqcms047 comparesig   10  -10  -> 1
-dqcms048 comparesig   10   00  -> 1
-dqcms049 comparesig   10   10  -> 0
-dqcms050 comparesig   10   20  -> -1
-dqcms051 comparesig   20  -20  -> 1
-dqcms052 comparesig   20  -10  -> 1
-dqcms053 comparesig   20   00  -> 1
-dqcms055 comparesig   20   10  -> 1
-dqcms056 comparesig   20   20  -> 0
-
-dqcms061 comparesig  -2.0  -2.0  -> 0
-dqcms062 comparesig  -2.0  -1.0  -> -1
-dqcms063 comparesig  -2.0   0.0  -> -1
-dqcms064 comparesig  -2.0   1.0  -> -1
-dqcms065 comparesig  -2.0   2.0  -> -1
-dqcms066 comparesig  -1.0  -2.0  -> 1
-dqcms067 comparesig  -1.0  -1.0  -> 0
-dqcms068 comparesig  -1.0   0.0  -> -1
-dqcms069 comparesig  -1.0   1.0  -> -1
-dqcms070 comparesig  -1.0   2.0  -> -1
-dqcms071 comparesig   0.0  -2.0  -> 1
-dqcms072 comparesig   0.0  -1.0  -> 1
-dqcms073 comparesig   0.0   0.0  -> 0
-dqcms074 comparesig   0.0   1.0  -> -1
-dqcms075 comparesig   0.0   2.0  -> -1
-dqcms076 comparesig   1.0  -2.0  -> 1
-dqcms077 comparesig   1.0  -1.0  -> 1
-dqcms078 comparesig   1.0   0.0  -> 1
-dqcms079 comparesig   1.0   1.0  -> 0
-dqcms080 comparesig   1.0   2.0  -> -1
-dqcms081 comparesig   2.0  -2.0  -> 1
-dqcms082 comparesig   2.0  -1.0  -> 1
-dqcms083 comparesig   2.0   0.0  -> 1
-dqcms085 comparesig   2.0   1.0  -> 1
-dqcms086 comparesig   2.0   2.0  -> 0
-
--- now some cases which might overflow if subtract were used
-dqcms090 comparesig  9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144  -> 0
-dqcms091 comparesig -9.999999999999999999999999999999999E+6144 9.999999999999999999999999999999999E+6144  -> -1
-dqcms092 comparesig  9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 1
-dqcms093 comparesig -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0
-
--- some differing length/exponent cases
-dqcms100 comparesig   7.0    7.0    -> 0
-dqcms101 comparesig   7.0    7      -> 0
-dqcms102 comparesig   7      7.0    -> 0
-dqcms103 comparesig   7E+0   7.0    -> 0
-dqcms104 comparesig   70E-1  7.0    -> 0
-dqcms105 comparesig   0.7E+1 7      -> 0
-dqcms106 comparesig   70E-1  7      -> 0
-dqcms107 comparesig   7.0    7E+0   -> 0
-dqcms108 comparesig   7.0    70E-1  -> 0
-dqcms109 comparesig   7      0.7E+1 -> 0
-dqcms110 comparesig   7      70E-1  -> 0
-
-dqcms120 comparesig   8.0    7.0    -> 1
-dqcms121 comparesig   8.0    7      -> 1
-dqcms122 comparesig   8      7.0    -> 1
-dqcms123 comparesig   8E+0   7.0    -> 1
-dqcms124 comparesig   80E-1  7.0    -> 1
-dqcms125 comparesig   0.8E+1 7      -> 1
-dqcms126 comparesig   80E-1  7      -> 1
-dqcms127 comparesig   8.0    7E+0   -> 1
-dqcms128 comparesig   8.0    70E-1  -> 1
-dqcms129 comparesig   8      0.7E+1  -> 1
-dqcms130 comparesig   8      70E-1  -> 1
-
-dqcms140 comparesig   8.0    9.0    -> -1
-dqcms141 comparesig   8.0    9      -> -1
-dqcms142 comparesig   8      9.0    -> -1
-dqcms143 comparesig   8E+0   9.0    -> -1
-dqcms144 comparesig   80E-1  9.0    -> -1
-dqcms145 comparesig   0.8E+1 9      -> -1
-dqcms146 comparesig   80E-1  9      -> -1
-dqcms147 comparesig   8.0    9E+0   -> -1
-dqcms148 comparesig   8.0    90E-1  -> -1
-dqcms149 comparesig   8      0.9E+1 -> -1
-dqcms150 comparesig   8      90E-1  -> -1
-
--- and again, with sign changes -+ ..
-dqcms200 comparesig  -7.0    7.0    -> -1
-dqcms201 comparesig  -7.0    7      -> -1
-dqcms202 comparesig  -7      7.0    -> -1
-dqcms203 comparesig  -7E+0   7.0    -> -1
-dqcms204 comparesig  -70E-1  7.0    -> -1
-dqcms205 comparesig  -0.7E+1 7      -> -1
-dqcms206 comparesig  -70E-1  7      -> -1
-dqcms207 comparesig  -7.0    7E+0   -> -1
-dqcms208 comparesig  -7.0    70E-1  -> -1
-dqcms209 comparesig  -7      0.7E+1 -> -1
-dqcms210 comparesig  -7      70E-1  -> -1
-
-dqcms220 comparesig  -8.0    7.0    -> -1
-dqcms221 comparesig  -8.0    7      -> -1
-dqcms222 comparesig  -8      7.0    -> -1
-dqcms223 comparesig  -8E+0   7.0    -> -1
-dqcms224 comparesig  -80E-1  7.0    -> -1
-dqcms225 comparesig  -0.8E+1 7      -> -1
-dqcms226 comparesig  -80E-1  7      -> -1
-dqcms227 comparesig  -8.0    7E+0   -> -1
-dqcms228 comparesig  -8.0    70E-1  -> -1
-dqcms229 comparesig  -8      0.7E+1 -> -1
-dqcms230 comparesig  -8      70E-1  -> -1
-
-dqcms240 comparesig  -8.0    9.0    -> -1
-dqcms241 comparesig  -8.0    9      -> -1
-dqcms242 comparesig  -8      9.0    -> -1
-dqcms243 comparesig  -8E+0   9.0    -> -1
-dqcms244 comparesig  -80E-1  9.0    -> -1
-dqcms245 comparesig  -0.8E+1 9      -> -1
-dqcms246 comparesig  -80E-1  9      -> -1
-dqcms247 comparesig  -8.0    9E+0   -> -1
-dqcms248 comparesig  -8.0    90E-1  -> -1
-dqcms249 comparesig  -8      0.9E+1 -> -1
-dqcms250 comparesig  -8      90E-1  -> -1
-
--- and again, with sign changes +- ..
-dqcms300 comparesig   7.0    -7.0    -> 1
-dqcms301 comparesig   7.0    -7      -> 1
-dqcms302 comparesig   7      -7.0    -> 1
-dqcms303 comparesig   7E+0   -7.0    -> 1
-dqcms304 comparesig   70E-1  -7.0    -> 1
-dqcms305 comparesig   .7E+1  -7      -> 1
-dqcms306 comparesig   70E-1  -7      -> 1
-dqcms307 comparesig   7.0    -7E+0   -> 1
-dqcms308 comparesig   7.0    -70E-1  -> 1
-dqcms309 comparesig   7      -.7E+1  -> 1
-dqcms310 comparesig   7      -70E-1  -> 1
-
-dqcms320 comparesig   8.0    -7.0    -> 1
-dqcms321 comparesig   8.0    -7      -> 1
-dqcms322 comparesig   8      -7.0    -> 1
-dqcms323 comparesig   8E+0   -7.0    -> 1
-dqcms324 comparesig   80E-1  -7.0    -> 1
-dqcms325 comparesig   .8E+1  -7      -> 1
-dqcms326 comparesig   80E-1  -7      -> 1
-dqcms327 comparesig   8.0    -7E+0   -> 1
-dqcms328 comparesig   8.0    -70E-1  -> 1
-dqcms329 comparesig   8      -.7E+1  -> 1
-dqcms330 comparesig   8      -70E-1  -> 1
-
-dqcms340 comparesig   8.0    -9.0    -> 1
-dqcms341 comparesig   8.0    -9      -> 1
-dqcms342 comparesig   8      -9.0    -> 1
-dqcms343 comparesig   8E+0   -9.0    -> 1
-dqcms344 comparesig   80E-1  -9.0    -> 1
-dqcms345 comparesig   .8E+1  -9      -> 1
-dqcms346 comparesig   80E-1  -9      -> 1
-dqcms347 comparesig   8.0    -9E+0   -> 1
-dqcms348 comparesig   8.0    -90E-1  -> 1
-dqcms349 comparesig   8      -.9E+1  -> 1
-dqcms350 comparesig   8      -90E-1  -> 1
-
--- and again, with sign changes -- ..
-dqcms400 comparesig   -7.0    -7.0    -> 0
-dqcms401 comparesig   -7.0    -7      -> 0
-dqcms402 comparesig   -7      -7.0    -> 0
-dqcms403 comparesig   -7E+0   -7.0    -> 0
-dqcms404 comparesig   -70E-1  -7.0    -> 0
-dqcms405 comparesig   -.7E+1  -7      -> 0
-dqcms406 comparesig   -70E-1  -7      -> 0
-dqcms407 comparesig   -7.0    -7E+0   -> 0
-dqcms408 comparesig   -7.0    -70E-1  -> 0
-dqcms409 comparesig   -7      -.7E+1  -> 0
-dqcms410 comparesig   -7      -70E-1  -> 0
-
-dqcms420 comparesig   -8.0    -7.0    -> -1
-dqcms421 comparesig   -8.0    -7      -> -1
-dqcms422 comparesig   -8      -7.0    -> -1
-dqcms423 comparesig   -8E+0   -7.0    -> -1
-dqcms424 comparesig   -80E-1  -7.0    -> -1
-dqcms425 comparesig   -.8E+1  -7      -> -1
-dqcms426 comparesig   -80E-1  -7      -> -1
-dqcms427 comparesig   -8.0    -7E+0   -> -1
-dqcms428 comparesig   -8.0    -70E-1  -> -1
-dqcms429 comparesig   -8      -.7E+1  -> -1
-dqcms430 comparesig   -8      -70E-1  -> -1
-
-dqcms440 comparesig   -8.0    -9.0    -> 1
-dqcms441 comparesig   -8.0    -9      -> 1
-dqcms442 comparesig   -8      -9.0    -> 1
-dqcms443 comparesig   -8E+0   -9.0    -> 1
-dqcms444 comparesig   -80E-1  -9.0    -> 1
-dqcms445 comparesig   -.8E+1  -9      -> 1
-dqcms446 comparesig   -80E-1  -9      -> 1
-dqcms447 comparesig   -8.0    -9E+0   -> 1
-dqcms448 comparesig   -8.0    -90E-1  -> 1
-dqcms449 comparesig   -8      -.9E+1  -> 1
-dqcms450 comparesig   -8      -90E-1  -> 1
-
-
--- testcases that subtract to lots of zeros at boundaries [pgr]
-dqcms473 comparesig 123.9999999999999999994560000000000E-89 123.999999999999999999456E-89 -> 0
-dqcms474 comparesig 123.999999999999999999456000000000E+89 123.999999999999999999456E+89 -> 0
-dqcms475 comparesig 123.99999999999999999945600000000E-89 123.999999999999999999456E-89 -> 0
-dqcms476 comparesig 123.9999999999999999994560000000E+89 123.999999999999999999456E+89 -> 0
-dqcms477 comparesig 123.999999999999999999456000000E-89 123.999999999999999999456E-89 -> 0
-dqcms478 comparesig 123.99999999999999999945600000E+89 123.999999999999999999456E+89 -> 0
-dqcms479 comparesig 123.9999999999999999994560000E-89 123.999999999999999999456E-89 -> 0
-dqcms480 comparesig 123.999999999999999999456000E+89 123.999999999999999999456E+89 -> 0
-dqcms481 comparesig 123.99999999999999999945600E-89 123.999999999999999999456E-89 -> 0
-dqcms482 comparesig 123.9999999999999999994560E+89 123.999999999999999999456E+89 -> 0
-dqcms483 comparesig 123.999999999999999999456E-89 123.999999999999999999456E-89 -> 0
-dqcms487 comparesig 123.999999999999999999456E+89 123.9999999999999999994560000000000E+89 -> 0
-dqcms488 comparesig 123.999999999999999999456E-89 123.999999999999999999456000000000E-89 -> 0
-dqcms489 comparesig 123.999999999999999999456E+89 123.99999999999999999945600000000E+89 -> 0
-dqcms490 comparesig 123.999999999999999999456E-89 123.9999999999999999994560000000E-89 -> 0
-dqcms491 comparesig 123.999999999999999999456E+89 123.999999999999999999456000000E+89 -> 0
-dqcms492 comparesig 123.999999999999999999456E-89 123.99999999999999999945600000E-89 -> 0
-dqcms493 comparesig 123.999999999999999999456E+89 123.9999999999999999994560000E+89 -> 0
-dqcms494 comparesig 123.999999999999999999456E-89 123.999999999999999999456000E-89 -> 0
-dqcms495 comparesig 123.999999999999999999456E+89 123.99999999999999999945600E+89 -> 0
-dqcms496 comparesig 123.999999999999999999456E-89 123.9999999999999999994560E-89 -> 0
-dqcms497 comparesig 123.999999999999999999456E+89 123.999999999999999999456E+89 -> 0
-
--- wide-ranging, around precision; signs equal
-dqcms500 comparesig    1     1E-15    -> 1
-dqcms501 comparesig    1     1E-14    -> 1
-dqcms502 comparesig    1     1E-13    -> 1
-dqcms503 comparesig    1     1E-12    -> 1
-dqcms504 comparesig    1     1E-11    -> 1
-dqcms505 comparesig    1     1E-10    -> 1
-dqcms506 comparesig    1     1E-9     -> 1
-dqcms507 comparesig    1     1E-8     -> 1
-dqcms508 comparesig    1     1E-7     -> 1
-dqcms509 comparesig    1     1E-6     -> 1
-dqcms510 comparesig    1     1E-5     -> 1
-dqcms511 comparesig    1     1E-4     -> 1
-dqcms512 comparesig    1     1E-3     -> 1
-dqcms513 comparesig    1     1E-2     -> 1
-dqcms514 comparesig    1     1E-1     -> 1
-dqcms515 comparesig    1     1E-0     -> 0
-dqcms516 comparesig    1     1E+1     -> -1
-dqcms517 comparesig    1     1E+2     -> -1
-dqcms518 comparesig    1     1E+3     -> -1
-dqcms519 comparesig    1     1E+4     -> -1
-dqcms521 comparesig    1     1E+5     -> -1
-dqcms522 comparesig    1     1E+6     -> -1
-dqcms523 comparesig    1     1E+7     -> -1
-dqcms524 comparesig    1     1E+8     -> -1
-dqcms525 comparesig    1     1E+9     -> -1
-dqcms526 comparesig    1     1E+10    -> -1
-dqcms527 comparesig    1     1E+11    -> -1
-dqcms528 comparesig    1     1E+12    -> -1
-dqcms529 comparesig    1     1E+13    -> -1
-dqcms530 comparesig    1     1E+14    -> -1
-dqcms531 comparesig    1     1E+15    -> -1
--- LR swap
-dqcms540 comparesig    1E-15  1       -> -1
-dqcms541 comparesig    1E-14  1       -> -1
-dqcms542 comparesig    1E-13  1       -> -1
-dqcms543 comparesig    1E-12  1       -> -1
-dqcms544 comparesig    1E-11  1       -> -1
-dqcms545 comparesig    1E-10  1       -> -1
-dqcms546 comparesig    1E-9   1       -> -1
-dqcms547 comparesig    1E-8   1       -> -1
-dqcms548 comparesig    1E-7   1       -> -1
-dqcms549 comparesig    1E-6   1       -> -1
-dqcms550 comparesig    1E-5   1       -> -1
-dqcms551 comparesig    1E-4   1       -> -1
-dqcms552 comparesig    1E-3   1       -> -1
-dqcms553 comparesig    1E-2   1       -> -1
-dqcms554 comparesig    1E-1   1       -> -1
-dqcms555 comparesig    1E-0   1       ->  0
-dqcms556 comparesig    1E+1   1       ->  1
-dqcms557 comparesig    1E+2   1       ->  1
-dqcms558 comparesig    1E+3   1       ->  1
-dqcms559 comparesig    1E+4   1       ->  1
-dqcms561 comparesig    1E+5   1       ->  1
-dqcms562 comparesig    1E+6   1       ->  1
-dqcms563 comparesig    1E+7   1       ->  1
-dqcms564 comparesig    1E+8   1       ->  1
-dqcms565 comparesig    1E+9   1       ->  1
-dqcms566 comparesig    1E+10  1       ->  1
-dqcms567 comparesig    1E+11  1       ->  1
-dqcms568 comparesig    1E+12  1       ->  1
-dqcms569 comparesig    1E+13  1       ->  1
-dqcms570 comparesig    1E+14  1       ->  1
-dqcms571 comparesig    1E+15  1       ->  1
--- similar with a useful coefficient, one side only
-dqcms580 comparesig  0.000000987654321     1E-15    -> 1
-dqcms581 comparesig  0.000000987654321     1E-14    -> 1
-dqcms582 comparesig  0.000000987654321     1E-13    -> 1
-dqcms583 comparesig  0.000000987654321     1E-12    -> 1
-dqcms584 comparesig  0.000000987654321     1E-11    -> 1
-dqcms585 comparesig  0.000000987654321     1E-10    -> 1
-dqcms586 comparesig  0.000000987654321     1E-9     -> 1
-dqcms587 comparesig  0.000000987654321     1E-8     -> 1
-dqcms588 comparesig  0.000000987654321     1E-7     -> 1
-dqcms589 comparesig  0.000000987654321     1E-6     -> -1
-dqcms590 comparesig  0.000000987654321     1E-5     -> -1
-dqcms591 comparesig  0.000000987654321     1E-4     -> -1
-dqcms592 comparesig  0.000000987654321     1E-3     -> -1
-dqcms593 comparesig  0.000000987654321     1E-2     -> -1
-dqcms594 comparesig  0.000000987654321     1E-1     -> -1
-dqcms595 comparesig  0.000000987654321     1E-0     -> -1
-dqcms596 comparesig  0.000000987654321     1E+1     -> -1
-dqcms597 comparesig  0.000000987654321     1E+2     -> -1
-dqcms598 comparesig  0.000000987654321     1E+3     -> -1
-dqcms599 comparesig  0.000000987654321     1E+4     -> -1
-
--- check some unit-y traps
-dqcms600 comparesig   12            12.2345 -> -1
-dqcms601 comparesig   12.0          12.2345 -> -1
-dqcms602 comparesig   12.00         12.2345 -> -1
-dqcms603 comparesig   12.000        12.2345 -> -1
-dqcms604 comparesig   12.0000       12.2345 -> -1
-dqcms605 comparesig   12.00000      12.2345 -> -1
-dqcms606 comparesig   12.000000     12.2345 -> -1
-dqcms607 comparesig   12.0000000    12.2345 -> -1
-dqcms608 comparesig   12.00000000   12.2345 -> -1
-dqcms609 comparesig   12.000000000  12.2345 -> -1
-dqcms610 comparesig   12.1234 12            ->  1
-dqcms611 comparesig   12.1234 12.0          ->  1
-dqcms612 comparesig   12.1234 12.00         ->  1
-dqcms613 comparesig   12.1234 12.000        ->  1
-dqcms614 comparesig   12.1234 12.0000       ->  1
-dqcms615 comparesig   12.1234 12.00000      ->  1
-dqcms616 comparesig   12.1234 12.000000     ->  1
-dqcms617 comparesig   12.1234 12.0000000    ->  1
-dqcms618 comparesig   12.1234 12.00000000   ->  1
-dqcms619 comparesig   12.1234 12.000000000  ->  1
-dqcms620 comparesig  -12           -12.2345 ->  1
-dqcms621 comparesig  -12.0         -12.2345 ->  1
-dqcms622 comparesig  -12.00        -12.2345 ->  1
-dqcms623 comparesig  -12.000       -12.2345 ->  1
-dqcms624 comparesig  -12.0000      -12.2345 ->  1
-dqcms625 comparesig  -12.00000     -12.2345 ->  1
-dqcms626 comparesig  -12.000000    -12.2345 ->  1
-dqcms627 comparesig  -12.0000000   -12.2345 ->  1
-dqcms628 comparesig  -12.00000000  -12.2345 ->  1
-dqcms629 comparesig  -12.000000000 -12.2345 ->  1
-dqcms630 comparesig  -12.1234 -12           -> -1
-dqcms631 comparesig  -12.1234 -12.0         -> -1
-dqcms632 comparesig  -12.1234 -12.00        -> -1
-dqcms633 comparesig  -12.1234 -12.000       -> -1
-dqcms634 comparesig  -12.1234 -12.0000      -> -1
-dqcms635 comparesig  -12.1234 -12.00000     -> -1
-dqcms636 comparesig  -12.1234 -12.000000    -> -1
-dqcms637 comparesig  -12.1234 -12.0000000   -> -1
-dqcms638 comparesig  -12.1234 -12.00000000  -> -1
-dqcms639 comparesig  -12.1234 -12.000000000 -> -1
-
--- extended zeros
-dqcms640 comparesig   0     0   -> 0
-dqcms641 comparesig   0    -0   -> 0
-dqcms642 comparesig   0    -0.0 -> 0
-dqcms643 comparesig   0     0.0 -> 0
-dqcms644 comparesig  -0     0   -> 0
-dqcms645 comparesig  -0    -0   -> 0
-dqcms646 comparesig  -0    -0.0 -> 0
-dqcms647 comparesig  -0     0.0 -> 0
-dqcms648 comparesig   0.0   0   -> 0
-dqcms649 comparesig   0.0  -0   -> 0
-dqcms650 comparesig   0.0  -0.0 -> 0
-dqcms651 comparesig   0.0   0.0 -> 0
-dqcms652 comparesig  -0.0   0   -> 0
-dqcms653 comparesig  -0.0  -0   -> 0
-dqcms654 comparesig  -0.0  -0.0 -> 0
-dqcms655 comparesig  -0.0   0.0 -> 0
-
-dqcms656 comparesig  -0E1   0.0 -> 0
-dqcms657 comparesig  -0E2   0.0 -> 0
-dqcms658 comparesig   0E1   0.0 -> 0
-dqcms659 comparesig   0E2   0.0 -> 0
-dqcms660 comparesig  -0E1   0   -> 0
-dqcms661 comparesig  -0E2   0   -> 0
-dqcms662 comparesig   0E1   0   -> 0
-dqcms663 comparesig   0E2   0   -> 0
-dqcms664 comparesig  -0E1  -0E1 -> 0
-dqcms665 comparesig  -0E2  -0E1 -> 0
-dqcms666 comparesig   0E1  -0E1 -> 0
-dqcms667 comparesig   0E2  -0E1 -> 0
-dqcms668 comparesig  -0E1  -0E2 -> 0
-dqcms669 comparesig  -0E2  -0E2 -> 0
-dqcms670 comparesig   0E1  -0E2 -> 0
-dqcms671 comparesig   0E2  -0E2 -> 0
-dqcms672 comparesig  -0E1   0E1 -> 0
-dqcms673 comparesig  -0E2   0E1 -> 0
-dqcms674 comparesig   0E1   0E1 -> 0
-dqcms675 comparesig   0E2   0E1 -> 0
-dqcms676 comparesig  -0E1   0E2 -> 0
-dqcms677 comparesig  -0E2   0E2 -> 0
-dqcms678 comparesig   0E1   0E2 -> 0
-dqcms679 comparesig   0E2   0E2 -> 0
-
--- trailing zeros; unit-y
-dqcms680 comparesig   12    12           -> 0
-dqcms681 comparesig   12    12.0         -> 0
-dqcms682 comparesig   12    12.00        -> 0
-dqcms683 comparesig   12    12.000       -> 0
-dqcms684 comparesig   12    12.0000      -> 0
-dqcms685 comparesig   12    12.00000     -> 0
-dqcms686 comparesig   12    12.000000    -> 0
-dqcms687 comparesig   12    12.0000000   -> 0
-dqcms688 comparesig   12    12.00000000  -> 0
-dqcms689 comparesig   12    12.000000000 -> 0
-dqcms690 comparesig   12              12 -> 0
-dqcms691 comparesig   12.0            12 -> 0
-dqcms692 comparesig   12.00           12 -> 0
-dqcms693 comparesig   12.000          12 -> 0
-dqcms694 comparesig   12.0000         12 -> 0
-dqcms695 comparesig   12.00000        12 -> 0
-dqcms696 comparesig   12.000000       12 -> 0
-dqcms697 comparesig   12.0000000      12 -> 0
-dqcms698 comparesig   12.00000000     12 -> 0
-dqcms699 comparesig   12.000000000    12 -> 0
-
--- first, second, & last digit
-dqcms700 comparesig   1234567899999999999999999990123456 1234567899999999999999999990123455 -> 1
-dqcms701 comparesig   1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0
-dqcms702 comparesig   1234567899999999999999999990123456 1234567899999999999999999990123457 -> -1
-dqcms703 comparesig   1234567899999999999999999990123456 0234567899999999999999999990123456 -> 1
-dqcms704 comparesig   1234567899999999999999999990123456 1234567899999999999999999990123456 -> 0
-dqcms705 comparesig   1234567899999999999999999990123456 2234567899999999999999999990123456 -> -1
-dqcms706 comparesig   1134567899999999999999999990123456 1034567899999999999999999990123456 -> 1
-dqcms707 comparesig   1134567899999999999999999990123456 1134567899999999999999999990123456 -> 0
-dqcms708 comparesig   1134567899999999999999999990123456 1234567899999999999999999990123456 -> -1
-
--- miscellaneous
-dqcms721 comparesig 12345678000 1 -> 1
-dqcms722 comparesig 1 12345678000 -> -1
-dqcms723 comparesig 1234567800  1 -> 1
-dqcms724 comparesig 1 1234567800  -> -1
-dqcms725 comparesig 1234567890  1 -> 1
-dqcms726 comparesig 1 1234567890  -> -1
-dqcms727 comparesig 1234567891  1 -> 1
-dqcms728 comparesig 1 1234567891  -> -1
-dqcms729 comparesig 12345678901 1 -> 1
-dqcms730 comparesig 1 12345678901 -> -1
-dqcms731 comparesig 1234567896  1 -> 1
-dqcms732 comparesig 1 1234567896  -> -1
-
--- residue cases at lower precision
-dqcms740 comparesig  1  0.9999999  -> 1
-dqcms741 comparesig  1  0.999999   -> 1
-dqcms742 comparesig  1  0.99999    -> 1
-dqcms743 comparesig  1  1.0000     -> 0
-dqcms744 comparesig  1  1.00001    -> -1
-dqcms745 comparesig  1  1.000001   -> -1
-dqcms746 comparesig  1  1.0000001  -> -1
-dqcms750 comparesig  0.9999999  1  -> -1
-dqcms751 comparesig  0.999999   1  -> -1
-dqcms752 comparesig  0.99999    1  -> -1
-dqcms753 comparesig  1.0000     1  -> 0
-dqcms754 comparesig  1.00001    1  -> 1
-dqcms755 comparesig  1.000001   1  -> 1
-dqcms756 comparesig  1.0000001  1  -> 1
-
--- Specials
-dqcms780 comparesig  Inf  -Inf   ->  1
-dqcms781 comparesig  Inf  -1000  ->  1
-dqcms782 comparesig  Inf  -1     ->  1
-dqcms783 comparesig  Inf  -0     ->  1
-dqcms784 comparesig  Inf   0     ->  1
-dqcms785 comparesig  Inf   1     ->  1
-dqcms786 comparesig  Inf   1000  ->  1
-dqcms787 comparesig  Inf   Inf   ->  0
-dqcms788 comparesig -1000  Inf   -> -1
-dqcms789 comparesig -Inf   Inf   -> -1
-dqcms790 comparesig -1     Inf   -> -1
-dqcms791 comparesig -0     Inf   -> -1
-dqcms792 comparesig  0     Inf   -> -1
-dqcms793 comparesig  1     Inf   -> -1
-dqcms794 comparesig  1000  Inf   -> -1
-dqcms795 comparesig  Inf   Inf   ->  0
-
-dqcms800 comparesig -Inf  -Inf   ->  0
-dqcms801 comparesig -Inf  -1000  -> -1
-dqcms802 comparesig -Inf  -1     -> -1
-dqcms803 comparesig -Inf  -0     -> -1
-dqcms804 comparesig -Inf   0     -> -1
-dqcms805 comparesig -Inf   1     -> -1
-dqcms806 comparesig -Inf   1000  -> -1
-dqcms807 comparesig -Inf   Inf   -> -1
-dqcms808 comparesig -Inf  -Inf   ->  0
-dqcms809 comparesig -1000 -Inf   ->  1
-dqcms810 comparesig -1    -Inf   ->  1
-dqcms811 comparesig -0    -Inf   ->  1
-dqcms812 comparesig  0    -Inf   ->  1
-dqcms813 comparesig  1    -Inf   ->  1
-dqcms814 comparesig  1000 -Inf   ->  1
-dqcms815 comparesig  Inf  -Inf   ->  1
-
-dqcms821 comparesig  NaN -Inf    ->  NaN  Invalid_operation
-dqcms822 comparesig  NaN -1000   ->  NaN  Invalid_operation
-dqcms823 comparesig  NaN -1      ->  NaN  Invalid_operation
-dqcms824 comparesig  NaN -0      ->  NaN  Invalid_operation
-dqcms825 comparesig  NaN  0      ->  NaN  Invalid_operation
-dqcms826 comparesig  NaN  1      ->  NaN  Invalid_operation
-dqcms827 comparesig  NaN  1000   ->  NaN  Invalid_operation
-dqcms828 comparesig  NaN  Inf    ->  NaN  Invalid_operation
-dqcms829 comparesig  NaN  NaN    ->  NaN  Invalid_operation
-dqcms830 comparesig -Inf  NaN    ->  NaN  Invalid_operation
-dqcms831 comparesig -1000 NaN    ->  NaN  Invalid_operation
-dqcms832 comparesig -1    NaN    ->  NaN  Invalid_operation
-dqcms833 comparesig -0    NaN    ->  NaN  Invalid_operation
-dqcms834 comparesig  0    NaN    ->  NaN  Invalid_operation
-dqcms835 comparesig  1    NaN    ->  NaN  Invalid_operation
-dqcms836 comparesig  1000 NaN    ->  NaN  Invalid_operation
-dqcms837 comparesig  Inf  NaN    ->  NaN  Invalid_operation
-dqcms838 comparesig -NaN -NaN    -> -NaN  Invalid_operation
-dqcms839 comparesig +NaN -NaN    ->  NaN  Invalid_operation
-dqcms840 comparesig -NaN +NaN    -> -NaN  Invalid_operation
-
-dqcms841 comparesig  sNaN -Inf   ->  NaN  Invalid_operation
-dqcms842 comparesig  sNaN -1000  ->  NaN  Invalid_operation
-dqcms843 comparesig  sNaN -1     ->  NaN  Invalid_operation
-dqcms844 comparesig  sNaN -0     ->  NaN  Invalid_operation
-dqcms845 comparesig  sNaN  0     ->  NaN  Invalid_operation
-dqcms846 comparesig  sNaN  1     ->  NaN  Invalid_operation
-dqcms847 comparesig  sNaN  1000  ->  NaN  Invalid_operation
-dqcms848 comparesig  sNaN  NaN   ->  NaN  Invalid_operation
-dqcms849 comparesig  sNaN sNaN   ->  NaN  Invalid_operation
-dqcms850 comparesig  NaN  sNaN   ->  NaN  Invalid_operation
-dqcms851 comparesig -Inf  sNaN   ->  NaN  Invalid_operation
-dqcms852 comparesig -1000 sNaN   ->  NaN  Invalid_operation
-dqcms853 comparesig -1    sNaN   ->  NaN  Invalid_operation
-dqcms854 comparesig -0    sNaN   ->  NaN  Invalid_operation
-dqcms855 comparesig  0    sNaN   ->  NaN  Invalid_operation
-dqcms856 comparesig  1    sNaN   ->  NaN  Invalid_operation
-dqcms857 comparesig  1000 sNaN   ->  NaN  Invalid_operation
-dqcms858 comparesig  Inf  sNaN   ->  NaN  Invalid_operation
-dqcms859 comparesig  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqcms860 comparesig  NaN9 -Inf   ->  NaN9    Invalid_operation
-dqcms861 comparesig  NaN8  999   ->  NaN8    Invalid_operation
-dqcms862 comparesig  NaN77 Inf   ->  NaN77   Invalid_operation
-dqcms863 comparesig -NaN67 NaN5  -> -NaN67   Invalid_operation
-dqcms864 comparesig -Inf  -NaN4  -> -NaN4    Invalid_operation
-dqcms865 comparesig -999  -NaN33 -> -NaN33   Invalid_operation
-dqcms866 comparesig  Inf   NaN2  ->  NaN2    Invalid_operation
-dqcms867 comparesig -NaN41 -NaN42 -> -NaN41  Invalid_operation
-dqcms868 comparesig +NaN41 -NaN42 ->  NaN41  Invalid_operation
-dqcms869 comparesig -NaN41 +NaN42 -> -NaN41  Invalid_operation
-dqcms870 comparesig +NaN41 +NaN42 ->  NaN41  Invalid_operation
-
-dqcms871 comparesig -sNaN99 -Inf    -> -NaN99 Invalid_operation
-dqcms872 comparesig  sNaN98 -11     ->  NaN98 Invalid_operation
-dqcms873 comparesig  sNaN97  NaN    ->  NaN97 Invalid_operation
-dqcms874 comparesig  sNaN16 sNaN94  ->  NaN16 Invalid_operation
-dqcms875 comparesig  NaN85  sNaN83  ->  NaN83 Invalid_operation
-dqcms876 comparesig -Inf    sNaN92  ->  NaN92 Invalid_operation
-dqcms877 comparesig  088    sNaN81  ->  NaN81 Invalid_operation
-dqcms878 comparesig  Inf    sNaN90  ->  NaN90 Invalid_operation
-dqcms879 comparesig  NaN   -sNaN89  -> -NaN89 Invalid_operation
-
--- wide range
-dqcms880 comparesig +1.23456789012345E-0 9E+6144 -> -1
-dqcms881 comparesig 9E+6144 +1.23456789012345E-0 ->  1
-dqcms882 comparesig +0.100 9E-6143               ->  1
-dqcms883 comparesig 9E-6143 +0.100               -> -1
-dqcms885 comparesig -1.23456789012345E-0 9E+6144 -> -1
-dqcms886 comparesig 9E+6144 -1.23456789012345E-0 ->  1
-dqcms887 comparesig -0.100 9E-6143               -> -1
-dqcms888 comparesig 9E-6143 -0.100               ->  1
-
--- signs
-dqcms901 comparesig  1e+77  1e+11 ->  1
-dqcms902 comparesig  1e+77 -1e+11 ->  1
-dqcms903 comparesig -1e+77  1e+11 -> -1
-dqcms904 comparesig -1e+77 -1e+11 -> -1
-dqcms905 comparesig  1e-77  1e-11 -> -1
-dqcms906 comparesig  1e-77 -1e-11 ->  1
-dqcms907 comparesig -1e-77  1e-11 -> -1
-dqcms908 comparesig -1e-77 -1e-11 ->  1
-
--- Null tests
-dqcms990 comparesig 10  # -> NaN Invalid_operation
-dqcms991 comparesig  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareTotal.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareTotal.decTest
deleted file mode 100644
index bae3761..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareTotal.decTest
+++ /dev/null
@@ -1,706 +0,0 @@
-------------------------------------------------------------------------
--- dqCompareTotal.decTest -- decQuad comparison using total ordering  --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Note that we cannot assume add/subtract tests cover paths adequately,
--- here, because the code might be quite different (comparison cannot
--- overflow or underflow, so actual subtractions are not necessary).
--- Similarly, comparetotal will have some radically different paths
--- than compare.
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- sanity checks
-dqcot001 comparetotal  -2  -2  -> 0
-dqcot002 comparetotal  -2  -1  -> -1
-dqcot003 comparetotal  -2   0  -> -1
-dqcot004 comparetotal  -2   1  -> -1
-dqcot005 comparetotal  -2   2  -> -1
-dqcot006 comparetotal  -1  -2  -> 1
-dqcot007 comparetotal  -1  -1  -> 0
-dqcot008 comparetotal  -1   0  -> -1
-dqcot009 comparetotal  -1   1  -> -1
-dqcot010 comparetotal  -1   2  -> -1
-dqcot011 comparetotal   0  -2  -> 1
-dqcot012 comparetotal   0  -1  -> 1
-dqcot013 comparetotal   0   0  -> 0
-dqcot014 comparetotal   0   1  -> -1
-dqcot015 comparetotal   0   2  -> -1
-dqcot016 comparetotal   1  -2  -> 1
-dqcot017 comparetotal   1  -1  -> 1
-dqcot018 comparetotal   1   0  -> 1
-dqcot019 comparetotal   1   1  -> 0
-dqcot020 comparetotal   1   2  -> -1
-dqcot021 comparetotal   2  -2  -> 1
-dqcot022 comparetotal   2  -1  -> 1
-dqcot023 comparetotal   2   0  -> 1
-dqcot025 comparetotal   2   1  -> 1
-dqcot026 comparetotal   2   2  -> 0
-
-dqcot031 comparetotal  -20  -20  -> 0
-dqcot032 comparetotal  -20  -10  -> -1
-dqcot033 comparetotal  -20   00  -> -1
-dqcot034 comparetotal  -20   10  -> -1
-dqcot035 comparetotal  -20   20  -> -1
-dqcot036 comparetotal  -10  -20  -> 1
-dqcot037 comparetotal  -10  -10  -> 0
-dqcot038 comparetotal  -10   00  -> -1
-dqcot039 comparetotal  -10   10  -> -1
-dqcot040 comparetotal  -10   20  -> -1
-dqcot041 comparetotal   00  -20  -> 1
-dqcot042 comparetotal   00  -10  -> 1
-dqcot043 comparetotal   00   00  -> 0
-dqcot044 comparetotal   00   10  -> -1
-dqcot045 comparetotal   00   20  -> -1
-dqcot046 comparetotal   10  -20  -> 1
-dqcot047 comparetotal   10  -10  -> 1
-dqcot048 comparetotal   10   00  -> 1
-dqcot049 comparetotal   10   10  -> 0
-dqcot050 comparetotal   10   20  -> -1
-dqcot051 comparetotal   20  -20  -> 1
-dqcot052 comparetotal   20  -10  -> 1
-dqcot053 comparetotal   20   00  -> 1
-dqcot055 comparetotal   20   10  -> 1
-dqcot056 comparetotal   20   20  -> 0
-
-dqcot061 comparetotal  -2.0  -2.0  -> 0
-dqcot062 comparetotal  -2.0  -1.0  -> -1
-dqcot063 comparetotal  -2.0   0.0  -> -1
-dqcot064 comparetotal  -2.0   1.0  -> -1
-dqcot065 comparetotal  -2.0   2.0  -> -1
-dqcot066 comparetotal  -1.0  -2.0  -> 1
-dqcot067 comparetotal  -1.0  -1.0  -> 0
-dqcot068 comparetotal  -1.0   0.0  -> -1
-dqcot069 comparetotal  -1.0   1.0  -> -1
-dqcot070 comparetotal  -1.0   2.0  -> -1
-dqcot071 comparetotal   0.0  -2.0  -> 1
-dqcot072 comparetotal   0.0  -1.0  -> 1
-dqcot073 comparetotal   0.0   0.0  -> 0
-dqcot074 comparetotal   0.0   1.0  -> -1
-dqcot075 comparetotal   0.0   2.0  -> -1
-dqcot076 comparetotal   1.0  -2.0  -> 1
-dqcot077 comparetotal   1.0  -1.0  -> 1
-dqcot078 comparetotal   1.0   0.0  -> 1
-dqcot079 comparetotal   1.0   1.0  -> 0
-dqcot080 comparetotal   1.0   2.0  -> -1
-dqcot081 comparetotal   2.0  -2.0  -> 1
-dqcot082 comparetotal   2.0  -1.0  -> 1
-dqcot083 comparetotal   2.0   0.0  -> 1
-dqcot085 comparetotal   2.0   1.0  -> 1
-dqcot086 comparetotal   2.0   2.0  -> 0
-
--- now some cases which might overflow if subtract were used
-dqcot090 comparetotal  9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144  -> 0
-dqcot091 comparetotal -9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144  -> -1
-dqcot092 comparetotal  9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 1
-dqcot093 comparetotal -9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144 -> 0
-
--- some differing length/exponent cases
--- in this first group, compare would compare all equal
-dqcot100 comparetotal   7.0    7.0    -> 0
-dqcot101 comparetotal   7.0    7      -> -1
-dqcot102 comparetotal   7      7.0    -> 1
-dqcot103 comparetotal   7E+0   7.0    -> 1
-dqcot104 comparetotal   70E-1  7.0    -> 0
-dqcot105 comparetotal   0.7E+1 7      -> 0
-dqcot106 comparetotal   70E-1  7      -> -1
-dqcot107 comparetotal   7.0    7E+0   -> -1
-dqcot108 comparetotal   7.0    70E-1  -> 0
-dqcot109 comparetotal   7      0.7E+1 -> 0
-dqcot110 comparetotal   7      70E-1  -> 1
-
-dqcot120 comparetotal   8.0    7.0    -> 1
-dqcot121 comparetotal   8.0    7      -> 1
-dqcot122 comparetotal   8      7.0    -> 1
-dqcot123 comparetotal   8E+0   7.0    -> 1
-dqcot124 comparetotal   80E-1  7.0    -> 1
-dqcot125 comparetotal   0.8E+1 7      -> 1
-dqcot126 comparetotal   80E-1  7      -> 1
-dqcot127 comparetotal   8.0    7E+0   -> 1
-dqcot128 comparetotal   8.0    70E-1  -> 1
-dqcot129 comparetotal   8      0.7E+1  -> 1
-dqcot130 comparetotal   8      70E-1  -> 1
-
-dqcot140 comparetotal   8.0    9.0    -> -1
-dqcot141 comparetotal   8.0    9      -> -1
-dqcot142 comparetotal   8      9.0    -> -1
-dqcot143 comparetotal   8E+0   9.0    -> -1
-dqcot144 comparetotal   80E-1  9.0    -> -1
-dqcot145 comparetotal   0.8E+1 9      -> -1
-dqcot146 comparetotal   80E-1  9      -> -1
-dqcot147 comparetotal   8.0    9E+0   -> -1
-dqcot148 comparetotal   8.0    90E-1  -> -1
-dqcot149 comparetotal   8      0.9E+1 -> -1
-dqcot150 comparetotal   8      90E-1  -> -1
-
--- and again, with sign changes -+ ..
-dqcot200 comparetotal  -7.0    7.0    -> -1
-dqcot201 comparetotal  -7.0    7      -> -1
-dqcot202 comparetotal  -7      7.0    -> -1
-dqcot203 comparetotal  -7E+0   7.0    -> -1
-dqcot204 comparetotal  -70E-1  7.0    -> -1
-dqcot205 comparetotal  -0.7E+1 7      -> -1
-dqcot206 comparetotal  -70E-1  7      -> -1
-dqcot207 comparetotal  -7.0    7E+0   -> -1
-dqcot208 comparetotal  -7.0    70E-1  -> -1
-dqcot209 comparetotal  -7      0.7E+1 -> -1
-dqcot210 comparetotal  -7      70E-1  -> -1
-
-dqcot220 comparetotal  -8.0    7.0    -> -1
-dqcot221 comparetotal  -8.0    7      -> -1
-dqcot222 comparetotal  -8      7.0    -> -1
-dqcot223 comparetotal  -8E+0   7.0    -> -1
-dqcot224 comparetotal  -80E-1  7.0    -> -1
-dqcot225 comparetotal  -0.8E+1 7      -> -1
-dqcot226 comparetotal  -80E-1  7      -> -1
-dqcot227 comparetotal  -8.0    7E+0   -> -1
-dqcot228 comparetotal  -8.0    70E-1  -> -1
-dqcot229 comparetotal  -8      0.7E+1 -> -1
-dqcot230 comparetotal  -8      70E-1  -> -1
-
-dqcot240 comparetotal  -8.0    9.0    -> -1
-dqcot241 comparetotal  -8.0    9      -> -1
-dqcot242 comparetotal  -8      9.0    -> -1
-dqcot243 comparetotal  -8E+0   9.0    -> -1
-dqcot244 comparetotal  -80E-1  9.0    -> -1
-dqcot245 comparetotal  -0.8E+1 9      -> -1
-dqcot246 comparetotal  -80E-1  9      -> -1
-dqcot247 comparetotal  -8.0    9E+0   -> -1
-dqcot248 comparetotal  -8.0    90E-1  -> -1
-dqcot249 comparetotal  -8      0.9E+1 -> -1
-dqcot250 comparetotal  -8      90E-1  -> -1
-
--- and again, with sign changes +- ..
-dqcot300 comparetotal   7.0    -7.0    -> 1
-dqcot301 comparetotal   7.0    -7      -> 1
-dqcot302 comparetotal   7      -7.0    -> 1
-dqcot303 comparetotal   7E+0   -7.0    -> 1
-dqcot304 comparetotal   70E-1  -7.0    -> 1
-dqcot305 comparetotal   .7E+1  -7      -> 1
-dqcot306 comparetotal   70E-1  -7      -> 1
-dqcot307 comparetotal   7.0    -7E+0   -> 1
-dqcot308 comparetotal   7.0    -70E-1  -> 1
-dqcot309 comparetotal   7      -.7E+1  -> 1
-dqcot310 comparetotal   7      -70E-1  -> 1
-
-dqcot320 comparetotal   8.0    -7.0    -> 1
-dqcot321 comparetotal   8.0    -7      -> 1
-dqcot322 comparetotal   8      -7.0    -> 1
-dqcot323 comparetotal   8E+0   -7.0    -> 1
-dqcot324 comparetotal   80E-1  -7.0    -> 1
-dqcot325 comparetotal   .8E+1  -7      -> 1
-dqcot326 comparetotal   80E-1  -7      -> 1
-dqcot327 comparetotal   8.0    -7E+0   -> 1
-dqcot328 comparetotal   8.0    -70E-1  -> 1
-dqcot329 comparetotal   8      -.7E+1  -> 1
-dqcot330 comparetotal   8      -70E-1  -> 1
-
-dqcot340 comparetotal   8.0    -9.0    -> 1
-dqcot341 comparetotal   8.0    -9      -> 1
-dqcot342 comparetotal   8      -9.0    -> 1
-dqcot343 comparetotal   8E+0   -9.0    -> 1
-dqcot344 comparetotal   80E-1  -9.0    -> 1
-dqcot345 comparetotal   .8E+1  -9      -> 1
-dqcot346 comparetotal   80E-1  -9      -> 1
-dqcot347 comparetotal   8.0    -9E+0   -> 1
-dqcot348 comparetotal   8.0    -90E-1  -> 1
-dqcot349 comparetotal   8      -.9E+1  -> 1
-dqcot350 comparetotal   8      -90E-1  -> 1
-
--- and again, with sign changes -- ..
-dqcot400 comparetotal   -7.0    -7.0    -> 0
-dqcot401 comparetotal   -7.0    -7      -> 1
-dqcot402 comparetotal   -7      -7.0    -> -1
-dqcot403 comparetotal   -7E+0   -7.0    -> -1
-dqcot404 comparetotal   -70E-1  -7.0    -> 0
-dqcot405 comparetotal   -.7E+1  -7      -> 0
-dqcot406 comparetotal   -70E-1  -7      -> 1
-dqcot407 comparetotal   -7.0    -7E+0   -> 1
-dqcot408 comparetotal   -7.0    -70E-1  -> 0
-dqcot409 comparetotal   -7      -.7E+1  -> 0
-dqcot410 comparetotal   -7      -70E-1  -> -1
-
-dqcot420 comparetotal   -8.0    -7.0    -> -1
-dqcot421 comparetotal   -8.0    -7      -> -1
-dqcot422 comparetotal   -8      -7.0    -> -1
-dqcot423 comparetotal   -8E+0   -7.0    -> -1
-dqcot424 comparetotal   -80E-1  -7.0    -> -1
-dqcot425 comparetotal   -.8E+1  -7      -> -1
-dqcot426 comparetotal   -80E-1  -7      -> -1
-dqcot427 comparetotal   -8.0    -7E+0   -> -1
-dqcot428 comparetotal   -8.0    -70E-1  -> -1
-dqcot429 comparetotal   -8      -.7E+1  -> -1
-dqcot430 comparetotal   -8      -70E-1  -> -1
-
-dqcot440 comparetotal   -8.0    -9.0    -> 1
-dqcot441 comparetotal   -8.0    -9      -> 1
-dqcot442 comparetotal   -8      -9.0    -> 1
-dqcot443 comparetotal   -8E+0   -9.0    -> 1
-dqcot444 comparetotal   -80E-1  -9.0    -> 1
-dqcot445 comparetotal   -.8E+1  -9      -> 1
-dqcot446 comparetotal   -80E-1  -9      -> 1
-dqcot447 comparetotal   -8.0    -9E+0   -> 1
-dqcot448 comparetotal   -8.0    -90E-1  -> 1
-dqcot449 comparetotal   -8      -.9E+1  -> 1
-dqcot450 comparetotal   -8      -90E-1  -> 1
-
-
--- testcases that subtract to lots of zeros at boundaries [pgr]
-dqcot473 comparetotal 123.4560000000000E-89 123.456E-89 -> -1
-dqcot474 comparetotal 123.456000000000E+89 123.456E+89 -> -1
-dqcot475 comparetotal 123.45600000000E-89 123.456E-89 -> -1
-dqcot476 comparetotal 123.4560000000E+89 123.456E+89 -> -1
-dqcot477 comparetotal 123.456000000E-89 123.456E-89 -> -1
-dqcot478 comparetotal 123.45600000E+89 123.456E+89 -> -1
-dqcot479 comparetotal 123.4560000E-89 123.456E-89 -> -1
-dqcot480 comparetotal 123.456000E+89 123.456E+89 -> -1
-dqcot481 comparetotal 123.45600E-89 123.456E-89 -> -1
-dqcot482 comparetotal 123.4560E+89 123.456E+89 -> -1
-dqcot483 comparetotal 123.456E-89 123.456E-89 -> 0
-dqcot487 comparetotal 123.456E+89 123.4560000000000E+89 -> 1
-dqcot488 comparetotal 123.456E-89 123.456000000000E-89 -> 1
-dqcot489 comparetotal 123.456E+89 123.45600000000E+89 -> 1
-dqcot490 comparetotal 123.456E-89 123.4560000000E-89 -> 1
-dqcot491 comparetotal 123.456E+89 123.456000000E+89 -> 1
-dqcot492 comparetotal 123.456E-89 123.45600000E-89 -> 1
-dqcot493 comparetotal 123.456E+89 123.4560000E+89 -> 1
-dqcot494 comparetotal 123.456E-89 123.456000E-89 -> 1
-dqcot495 comparetotal 123.456E+89 123.45600E+89 -> 1
-dqcot496 comparetotal 123.456E-89 123.4560E-89 -> 1
-dqcot497 comparetotal 123.456E+89 123.456E+89 -> 0
-
--- wide-ranging, around precision; signs equal
-dqcot498 comparetotal    1     1E-17    -> 1
-dqcot499 comparetotal    1     1E-16    -> 1
-dqcot500 comparetotal    1     1E-15    -> 1
-dqcot501 comparetotal    1     1E-14    -> 1
-dqcot502 comparetotal    1     1E-13    -> 1
-dqcot503 comparetotal    1     1E-12    -> 1
-dqcot504 comparetotal    1     1E-11    -> 1
-dqcot505 comparetotal    1     1E-10    -> 1
-dqcot506 comparetotal    1     1E-9     -> 1
-dqcot507 comparetotal    1     1E-8     -> 1
-dqcot508 comparetotal    1     1E-7     -> 1
-dqcot509 comparetotal    1     1E-6     -> 1
-dqcot510 comparetotal    1     1E-5     -> 1
-dqcot511 comparetotal    1     1E-4     -> 1
-dqcot512 comparetotal    1     1E-3     -> 1
-dqcot513 comparetotal    1     1E-2     -> 1
-dqcot514 comparetotal    1     1E-1     -> 1
-dqcot515 comparetotal    1     1E-0     -> 0
-dqcot516 comparetotal    1     1E+1     -> -1
-dqcot517 comparetotal    1     1E+2     -> -1
-dqcot518 comparetotal    1     1E+3     -> -1
-dqcot519 comparetotal    1     1E+4     -> -1
-dqcot521 comparetotal    1     1E+5     -> -1
-dqcot522 comparetotal    1     1E+6     -> -1
-dqcot523 comparetotal    1     1E+7     -> -1
-dqcot524 comparetotal    1     1E+8     -> -1
-dqcot525 comparetotal    1     1E+9     -> -1
-dqcot526 comparetotal    1     1E+10    -> -1
-dqcot527 comparetotal    1     1E+11    -> -1
-dqcot528 comparetotal    1     1E+12    -> -1
-dqcot529 comparetotal    1     1E+13    -> -1
-dqcot530 comparetotal    1     1E+14    -> -1
-dqcot531 comparetotal    1     1E+15    -> -1
-dqcot532 comparetotal    1     1E+16    -> -1
-dqcot533 comparetotal    1     1E+17    -> -1
--- LR swap
-dqcot538 comparetotal    1E-17  1       -> -1
-dqcot539 comparetotal    1E-16  1       -> -1
-dqcot540 comparetotal    1E-15  1       -> -1
-dqcot541 comparetotal    1E-14  1       -> -1
-dqcot542 comparetotal    1E-13  1       -> -1
-dqcot543 comparetotal    1E-12  1       -> -1
-dqcot544 comparetotal    1E-11  1       -> -1
-dqcot545 comparetotal    1E-10  1       -> -1
-dqcot546 comparetotal    1E-9   1       -> -1
-dqcot547 comparetotal    1E-8   1       -> -1
-dqcot548 comparetotal    1E-7   1       -> -1
-dqcot549 comparetotal    1E-6   1       -> -1
-dqcot550 comparetotal    1E-5   1       -> -1
-dqcot551 comparetotal    1E-4   1       -> -1
-dqcot552 comparetotal    1E-3   1       -> -1
-dqcot553 comparetotal    1E-2   1       -> -1
-dqcot554 comparetotal    1E-1   1       -> -1
-dqcot555 comparetotal    1E-0   1       ->  0
-dqcot556 comparetotal    1E+1   1       ->  1
-dqcot557 comparetotal    1E+2   1       ->  1
-dqcot558 comparetotal    1E+3   1       ->  1
-dqcot559 comparetotal    1E+4   1       ->  1
-dqcot561 comparetotal    1E+5   1       ->  1
-dqcot562 comparetotal    1E+6   1       ->  1
-dqcot563 comparetotal    1E+7   1       ->  1
-dqcot564 comparetotal    1E+8   1       ->  1
-dqcot565 comparetotal    1E+9   1       ->  1
-dqcot566 comparetotal    1E+10  1       ->  1
-dqcot567 comparetotal    1E+11  1       ->  1
-dqcot568 comparetotal    1E+12  1       ->  1
-dqcot569 comparetotal    1E+13  1       ->  1
-dqcot570 comparetotal    1E+14  1       ->  1
-dqcot571 comparetotal    1E+15  1       ->  1
-dqcot572 comparetotal    1E+16  1       ->  1
-dqcot573 comparetotal    1E+17  1       ->  1
--- similar with a useful coefficient, one side only
-dqcot578 comparetotal  0.000000987654321     1E-17    -> 1
-dqcot579 comparetotal  0.000000987654321     1E-16    -> 1
-dqcot580 comparetotal  0.000000987654321     1E-15    -> 1
-dqcot581 comparetotal  0.000000987654321     1E-14    -> 1
-dqcot582 comparetotal  0.000000987654321     1E-13    -> 1
-dqcot583 comparetotal  0.000000987654321     1E-12    -> 1
-dqcot584 comparetotal  0.000000987654321     1E-11    -> 1
-dqcot585 comparetotal  0.000000987654321     1E-10    -> 1
-dqcot586 comparetotal  0.000000987654321     1E-9     -> 1
-dqcot587 comparetotal  0.000000987654321     1E-8     -> 1
-dqcot588 comparetotal  0.000000987654321     1E-7     -> 1
-dqcot589 comparetotal  0.000000987654321     1E-6     -> -1
-dqcot590 comparetotal  0.000000987654321     1E-5     -> -1
-dqcot591 comparetotal  0.000000987654321     1E-4     -> -1
-dqcot592 comparetotal  0.000000987654321     1E-3     -> -1
-dqcot593 comparetotal  0.000000987654321     1E-2     -> -1
-dqcot594 comparetotal  0.000000987654321     1E-1     -> -1
-dqcot595 comparetotal  0.000000987654321     1E-0     -> -1
-dqcot596 comparetotal  0.000000987654321     1E+1     -> -1
-dqcot597 comparetotal  0.000000987654321     1E+2     -> -1
-dqcot598 comparetotal  0.000000987654321     1E+3     -> -1
-dqcot599 comparetotal  0.000000987654321     1E+4     -> -1
-
--- check some unit-y traps
-dqcot600 comparetotal   12            12.2345 -> -1
-dqcot601 comparetotal   12.0          12.2345 -> -1
-dqcot602 comparetotal   12.00         12.2345 -> -1
-dqcot603 comparetotal   12.000        12.2345 -> -1
-dqcot604 comparetotal   12.0000       12.2345 -> -1
-dqcot605 comparetotal   12.00000      12.2345 -> -1
-dqcot606 comparetotal   12.000000     12.2345 -> -1
-dqcot607 comparetotal   12.0000000    12.2345 -> -1
-dqcot608 comparetotal   12.00000000   12.2345 -> -1
-dqcot609 comparetotal   12.000000000  12.2345 -> -1
-dqcot610 comparetotal   12.1234 12            ->  1
-dqcot611 comparetotal   12.1234 12.0          ->  1
-dqcot612 comparetotal   12.1234 12.00         ->  1
-dqcot613 comparetotal   12.1234 12.000        ->  1
-dqcot614 comparetotal   12.1234 12.0000       ->  1
-dqcot615 comparetotal   12.1234 12.00000      ->  1
-dqcot616 comparetotal   12.1234 12.000000     ->  1
-dqcot617 comparetotal   12.1234 12.0000000    ->  1
-dqcot618 comparetotal   12.1234 12.00000000   ->  1
-dqcot619 comparetotal   12.1234 12.000000000  ->  1
-dqcot620 comparetotal  -12           -12.2345 ->  1
-dqcot621 comparetotal  -12.0         -12.2345 ->  1
-dqcot622 comparetotal  -12.00        -12.2345 ->  1
-dqcot623 comparetotal  -12.000       -12.2345 ->  1
-dqcot624 comparetotal  -12.0000      -12.2345 ->  1
-dqcot625 comparetotal  -12.00000     -12.2345 ->  1
-dqcot626 comparetotal  -12.000000    -12.2345 ->  1
-dqcot627 comparetotal  -12.0000000   -12.2345 ->  1
-dqcot628 comparetotal  -12.00000000  -12.2345 ->  1
-dqcot629 comparetotal  -12.000000000 -12.2345 ->  1
-dqcot630 comparetotal  -12.1234 -12           -> -1
-dqcot631 comparetotal  -12.1234 -12.0         -> -1
-dqcot632 comparetotal  -12.1234 -12.00        -> -1
-dqcot633 comparetotal  -12.1234 -12.000       -> -1
-dqcot634 comparetotal  -12.1234 -12.0000      -> -1
-dqcot635 comparetotal  -12.1234 -12.00000     -> -1
-dqcot636 comparetotal  -12.1234 -12.000000    -> -1
-dqcot637 comparetotal  -12.1234 -12.0000000   -> -1
-dqcot638 comparetotal  -12.1234 -12.00000000  -> -1
-dqcot639 comparetotal  -12.1234 -12.000000000 -> -1
-
--- extended zeros
-dqcot640 comparetotal   0     0   -> 0
-dqcot641 comparetotal   0    -0   -> 1
-dqcot642 comparetotal   0    -0.0 -> 1
-dqcot643 comparetotal   0     0.0 -> 1
-dqcot644 comparetotal  -0     0   -> -1
-dqcot645 comparetotal  -0    -0   -> 0
-dqcot646 comparetotal  -0    -0.0 -> -1
-dqcot647 comparetotal  -0     0.0 -> -1
-dqcot648 comparetotal   0.0   0   -> -1
-dqcot649 comparetotal   0.0  -0   -> 1
-dqcot650 comparetotal   0.0  -0.0 -> 1
-dqcot651 comparetotal   0.0   0.0 -> 0
-dqcot652 comparetotal  -0.0   0   -> -1
-dqcot653 comparetotal  -0.0  -0   -> 1
-dqcot654 comparetotal  -0.0  -0.0 -> 0
-dqcot655 comparetotal  -0.0   0.0 -> -1
-
-dqcot656 comparetotal  -0E1   0.0 -> -1
-dqcot657 comparetotal  -0E2   0.0 -> -1
-dqcot658 comparetotal   0E1   0.0 -> 1
-dqcot659 comparetotal   0E2   0.0 -> 1
-dqcot660 comparetotal  -0E1   0   -> -1
-dqcot661 comparetotal  -0E2   0   -> -1
-dqcot662 comparetotal   0E1   0   -> 1
-dqcot663 comparetotal   0E2   0   -> 1
-dqcot664 comparetotal  -0E1  -0E1 -> 0
-dqcot665 comparetotal  -0E2  -0E1 -> -1
-dqcot666 comparetotal   0E1  -0E1 -> 1
-dqcot667 comparetotal   0E2  -0E1 -> 1
-dqcot668 comparetotal  -0E1  -0E2 -> 1
-dqcot669 comparetotal  -0E2  -0E2 -> 0
-dqcot670 comparetotal   0E1  -0E2 -> 1
-dqcot671 comparetotal   0E2  -0E2 -> 1
-dqcot672 comparetotal  -0E1   0E1 -> -1
-dqcot673 comparetotal  -0E2   0E1 -> -1
-dqcot674 comparetotal   0E1   0E1 -> 0
-dqcot675 comparetotal   0E2   0E1 -> 1
-dqcot676 comparetotal  -0E1   0E2 -> -1
-dqcot677 comparetotal  -0E2   0E2 -> -1
-dqcot678 comparetotal   0E1   0E2 -> -1
-dqcot679 comparetotal   0E2   0E2 -> 0
-
--- trailing zeros; unit-y
-dqcot680 comparetotal   12    12           -> 0
-dqcot681 comparetotal   12    12.0         -> 1
-dqcot682 comparetotal   12    12.00        -> 1
-dqcot683 comparetotal   12    12.000       -> 1
-dqcot684 comparetotal   12    12.0000      -> 1
-dqcot685 comparetotal   12    12.00000     -> 1
-dqcot686 comparetotal   12    12.000000    -> 1
-dqcot687 comparetotal   12    12.0000000   -> 1
-dqcot688 comparetotal   12    12.00000000  -> 1
-dqcot689 comparetotal   12    12.000000000 -> 1
-dqcot690 comparetotal   12              12 -> 0
-dqcot691 comparetotal   12.0            12 -> -1
-dqcot692 comparetotal   12.00           12 -> -1
-dqcot693 comparetotal   12.000          12 -> -1
-dqcot694 comparetotal   12.0000         12 -> -1
-dqcot695 comparetotal   12.00000        12 -> -1
-dqcot696 comparetotal   12.000000       12 -> -1
-dqcot697 comparetotal   12.0000000      12 -> -1
-dqcot698 comparetotal   12.00000000     12 -> -1
-dqcot699 comparetotal   12.000000000    12 -> -1
-
--- old long operand checks
-dqcot701 comparetotal 12345678000  1 ->  1
-dqcot702 comparetotal 1 12345678000  -> -1
-dqcot703 comparetotal 1234567800   1 ->  1
-dqcot704 comparetotal 1 1234567800   -> -1
-dqcot705 comparetotal 1234567890   1 ->  1
-dqcot706 comparetotal 1 1234567890   -> -1
-dqcot707 comparetotal 1234567891   1 ->  1
-dqcot708 comparetotal 1 1234567891   -> -1
-dqcot709 comparetotal 12345678901  1 ->  1
-dqcot710 comparetotal 1 12345678901  -> -1
-dqcot711 comparetotal 1234567896   1 ->  1
-dqcot712 comparetotal 1 1234567896   -> -1
-dqcot713 comparetotal -1234567891  1 -> -1
-dqcot714 comparetotal 1 -1234567891  ->  1
-dqcot715 comparetotal -12345678901 1 -> -1
-dqcot716 comparetotal 1 -12345678901 ->  1
-dqcot717 comparetotal -1234567896  1 -> -1
-dqcot718 comparetotal 1 -1234567896  ->  1
-
--- old residue cases
-dqcot740 comparetotal  1  0.9999999  -> 1
-dqcot741 comparetotal  1  0.999999   -> 1
-dqcot742 comparetotal  1  0.99999    -> 1
-dqcot743 comparetotal  1  1.0000     -> 1
-dqcot744 comparetotal  1  1.00001    -> -1
-dqcot745 comparetotal  1  1.000001   -> -1
-dqcot746 comparetotal  1  1.0000001  -> -1
-dqcot750 comparetotal  0.9999999  1  -> -1
-dqcot751 comparetotal  0.999999   1  -> -1
-dqcot752 comparetotal  0.99999    1  -> -1
-dqcot753 comparetotal  1.0000     1  -> -1
-dqcot754 comparetotal  1.00001    1  -> 1
-dqcot755 comparetotal  1.000001   1  -> 1
-dqcot756 comparetotal  1.0000001  1  -> 1
-
--- Specials
-dqcot780 comparetotal  Inf  -Inf   ->  1
-dqcot781 comparetotal  Inf  -1000  ->  1
-dqcot782 comparetotal  Inf  -1     ->  1
-dqcot783 comparetotal  Inf  -0     ->  1
-dqcot784 comparetotal  Inf   0     ->  1
-dqcot785 comparetotal  Inf   1     ->  1
-dqcot786 comparetotal  Inf   1000  ->  1
-dqcot787 comparetotal  Inf   Inf   ->  0
-dqcot788 comparetotal -1000  Inf   -> -1
-dqcot789 comparetotal -Inf   Inf   -> -1
-dqcot790 comparetotal -1     Inf   -> -1
-dqcot791 comparetotal -0     Inf   -> -1
-dqcot792 comparetotal  0     Inf   -> -1
-dqcot793 comparetotal  1     Inf   -> -1
-dqcot794 comparetotal  1000  Inf   -> -1
-dqcot795 comparetotal  Inf   Inf   ->  0
-
-dqcot800 comparetotal -Inf  -Inf   ->  0
-dqcot801 comparetotal -Inf  -1000  -> -1
-dqcot802 comparetotal -Inf  -1     -> -1
-dqcot803 comparetotal -Inf  -0     -> -1
-dqcot804 comparetotal -Inf   0     -> -1
-dqcot805 comparetotal -Inf   1     -> -1
-dqcot806 comparetotal -Inf   1000  -> -1
-dqcot807 comparetotal -Inf   Inf   -> -1
-dqcot808 comparetotal -Inf  -Inf   ->  0
-dqcot809 comparetotal -1000 -Inf   ->  1
-dqcot810 comparetotal -1    -Inf   ->  1
-dqcot811 comparetotal -0    -Inf   ->  1
-dqcot812 comparetotal  0    -Inf   ->  1
-dqcot813 comparetotal  1    -Inf   ->  1
-dqcot814 comparetotal  1000 -Inf   ->  1
-dqcot815 comparetotal  Inf  -Inf   ->  1
-
-dqcot821 comparetotal  NaN -Inf    ->  1
-dqcot822 comparetotal  NaN -1000   ->  1
-dqcot823 comparetotal  NaN -1      ->  1
-dqcot824 comparetotal  NaN -0      ->  1
-dqcot825 comparetotal  NaN  0      ->  1
-dqcot826 comparetotal  NaN  1      ->  1
-dqcot827 comparetotal  NaN  1000   ->  1
-dqcot828 comparetotal  NaN  Inf    ->  1
-dqcot829 comparetotal  NaN  NaN    ->  0
-dqcot830 comparetotal -Inf  NaN    ->  -1
-dqcot831 comparetotal -1000 NaN    ->  -1
-dqcot832 comparetotal -1    NaN    ->  -1
-dqcot833 comparetotal -0    NaN    ->  -1
-dqcot834 comparetotal  0    NaN    ->  -1
-dqcot835 comparetotal  1    NaN    ->  -1
-dqcot836 comparetotal  1000 NaN    ->  -1
-dqcot837 comparetotal  Inf  NaN    ->  -1
-dqcot838 comparetotal -NaN -NaN    ->  0
-dqcot839 comparetotal +NaN -NaN    ->  1
-dqcot840 comparetotal -NaN +NaN    ->  -1
-
-dqcot841 comparetotal  sNaN -sNaN  ->  1
-dqcot842 comparetotal  sNaN -NaN   ->  1
-dqcot843 comparetotal  sNaN -Inf   ->  1
-dqcot844 comparetotal  sNaN -1000  ->  1
-dqcot845 comparetotal  sNaN -1     ->  1
-dqcot846 comparetotal  sNaN -0     ->  1
-dqcot847 comparetotal  sNaN  0     ->  1
-dqcot848 comparetotal  sNaN  1     ->  1
-dqcot849 comparetotal  sNaN  1000  ->  1
-dqcot850 comparetotal  sNaN  NaN   ->  -1
-dqcot851 comparetotal  sNaN sNaN   ->  0
-
-dqcot852 comparetotal -sNaN sNaN   ->  -1
-dqcot853 comparetotal -NaN  sNaN   ->  -1
-dqcot854 comparetotal -Inf  sNaN   ->  -1
-dqcot855 comparetotal -1000 sNaN   ->  -1
-dqcot856 comparetotal -1    sNaN   ->  -1
-dqcot857 comparetotal -0    sNaN   ->  -1
-dqcot858 comparetotal  0    sNaN   ->  -1
-dqcot859 comparetotal  1    sNaN   ->  -1
-dqcot860 comparetotal  1000 sNaN   ->  -1
-dqcot861 comparetotal  Inf  sNaN   ->  -1
-dqcot862 comparetotal  NaN  sNaN   ->  1
-dqcot863 comparetotal  sNaN sNaN   ->  0
-
-dqcot871 comparetotal  -sNaN -sNaN  ->  0
-dqcot872 comparetotal  -sNaN -NaN   ->  1
-dqcot873 comparetotal  -sNaN -Inf   ->  -1
-dqcot874 comparetotal  -sNaN -1000  ->  -1
-dqcot875 comparetotal  -sNaN -1     ->  -1
-dqcot876 comparetotal  -sNaN -0     ->  -1
-dqcot877 comparetotal  -sNaN  0     ->  -1
-dqcot878 comparetotal  -sNaN  1     ->  -1
-dqcot879 comparetotal  -sNaN  1000  ->  -1
-dqcot880 comparetotal  -sNaN  NaN   ->  -1
-dqcot881 comparetotal  -sNaN sNaN   ->  -1
-
-dqcot882 comparetotal -sNaN -sNaN   ->  0
-dqcot883 comparetotal -NaN  -sNaN   ->  -1
-dqcot884 comparetotal -Inf  -sNaN   ->  1
-dqcot885 comparetotal -1000 -sNaN   ->  1
-dqcot886 comparetotal -1    -sNaN   ->  1
-dqcot887 comparetotal -0    -sNaN   ->  1
-dqcot888 comparetotal  0    -sNaN   ->  1
-dqcot889 comparetotal  1    -sNaN   ->  1
-dqcot890 comparetotal  1000 -sNaN   ->  1
-dqcot891 comparetotal  Inf  -sNaN   ->  1
-dqcot892 comparetotal  NaN  -sNaN   ->  1
-dqcot893 comparetotal  sNaN -sNaN   ->  1
-
--- NaNs with payload
-dqcot960 comparetotal  NaN9 -Inf   ->  1
-dqcot961 comparetotal  NaN8  999   ->  1
-dqcot962 comparetotal  NaN77 Inf   ->  1
-dqcot963 comparetotal -NaN67 NaN5  ->  -1
-dqcot964 comparetotal -Inf  -NaN4  ->  1
-dqcot965 comparetotal -999  -NaN33 ->  1
-dqcot966 comparetotal  Inf   NaN2  ->  -1
-
-dqcot970 comparetotal -NaN41 -NaN42 -> 1
-dqcot971 comparetotal +NaN41 -NaN42 -> 1
-dqcot972 comparetotal -NaN41 +NaN42 -> -1
-dqcot973 comparetotal +NaN41 +NaN42 -> -1
-dqcot974 comparetotal -NaN42 -NaN01 -> -1
-dqcot975 comparetotal +NaN42 -NaN01 ->  1
-dqcot976 comparetotal -NaN42 +NaN01 -> -1
-dqcot977 comparetotal +NaN42 +NaN01 ->  1
-
-dqcot980 comparetotal -sNaN771 -sNaN772 -> 1
-dqcot981 comparetotal +sNaN771 -sNaN772 -> 1
-dqcot982 comparetotal -sNaN771 +sNaN772 -> -1
-dqcot983 comparetotal +sNaN771 +sNaN772 -> -1
-dqcot984 comparetotal -sNaN772 -sNaN771 -> -1
-dqcot985 comparetotal +sNaN772 -sNaN771 ->  1
-dqcot986 comparetotal -sNaN772 +sNaN771 -> -1
-dqcot987 comparetotal +sNaN772 +sNaN771 ->  1
-
-dqcot991 comparetotal -sNaN99 -Inf    -> -1
-dqcot992 comparetotal  sNaN98 -11     ->  1
-dqcot993 comparetotal  sNaN97  NaN    -> -1
-dqcot994 comparetotal  sNaN16 sNaN94  -> -1
-dqcot995 comparetotal  NaN85  sNaN83  ->  1
-dqcot996 comparetotal -Inf    sNaN92  -> -1
-dqcot997 comparetotal  088    sNaN81  -> -1
-dqcot998 comparetotal  Inf    sNaN90  -> -1
-dqcot999 comparetotal  NaN   -sNaN89  ->  1
-
--- spread zeros
-dqcot1110 comparetotal   0E-6143  0       -> -1
-dqcot1111 comparetotal   0E-6143 -0       ->  1
-dqcot1112 comparetotal  -0E-6143  0       -> -1
-dqcot1113 comparetotal  -0E-6143 -0       ->  1
-dqcot1114 comparetotal   0E-6143  0E+6144  -> -1
-dqcot1115 comparetotal   0E-6143 -0E+6144  ->  1
-dqcot1116 comparetotal  -0E-6143  0E+6144  -> -1
-dqcot1117 comparetotal  -0E-6143 -0E+6144  ->  1
-dqcot1118 comparetotal   0       0E+6144  -> -1
-dqcot1119 comparetotal   0      -0E+6144  ->  1
-dqcot1120 comparetotal  -0       0E+6144  -> -1
-dqcot1121 comparetotal  -0      -0E+6144  ->  1
-
-dqcot1130 comparetotal   0E+6144  0       ->  1
-dqcot1131 comparetotal   0E+6144 -0       ->  1
-dqcot1132 comparetotal  -0E+6144  0       -> -1
-dqcot1133 comparetotal  -0E+6144 -0       -> -1
-dqcot1134 comparetotal   0E+6144  0E-6143  ->  1
-dqcot1135 comparetotal   0E+6144 -0E-6143  ->  1
-dqcot1136 comparetotal  -0E+6144  0E-6143  -> -1
-dqcot1137 comparetotal  -0E+6144 -0E-6143  -> -1
-dqcot1138 comparetotal   0       0E-6143  ->  1
-dqcot1139 comparetotal   0      -0E-6143  ->  1
-dqcot1140 comparetotal  -0       0E-6143  -> -1
-dqcot1141 comparetotal  -0      -0E-6143  -> -1
-
--- Null tests
-dqcot9990 comparetotal 10  # -> NaN Invalid_operation
-dqcot9991 comparetotal  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareTotalMag.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareTotalMag.decTest
deleted file mode 100644
index 48b3e08..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCompareTotalMag.decTest
+++ /dev/null
@@ -1,706 +0,0 @@
-------------------------------------------------------------------------
--- dqCompareTotalMag.decTest -- decQuad comparison; abs. total order  --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Note that we cannot assume add/subtract tests cover paths adequately,
--- here, because the code might be quite different (comparison cannot
--- overflow or underflow, so actual subtractions are not necessary).
--- Similarly, comparetotal will have some radically different paths
--- than compare.
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- sanity checks
-dqctm001 comparetotmag  -2  -2   ->   0
-dqctm002 comparetotmag  -2  -1   ->   1
-dqctm003 comparetotmag  -2   0   ->   1
-dqctm004 comparetotmag  -2   1   ->   1
-dqctm005 comparetotmag  -2   2   ->   0
-dqctm006 comparetotmag  -1  -2   ->  -1
-dqctm007 comparetotmag  -1  -1   ->   0
-dqctm008 comparetotmag  -1   0   ->   1
-dqctm009 comparetotmag  -1   1   ->   0
-dqctm010 comparetotmag  -1   2   ->  -1
-dqctm011 comparetotmag   0  -2   ->  -1
-dqctm012 comparetotmag   0  -1   ->  -1
-dqctm013 comparetotmag   0   0   ->   0
-dqctm014 comparetotmag   0   1   ->  -1
-dqctm015 comparetotmag   0   2   ->  -1
-dqctm016 comparetotmag   1  -2   ->  -1
-dqctm017 comparetotmag   1  -1   ->   0
-dqctm018 comparetotmag   1   0   ->   1
-dqctm019 comparetotmag   1   1   ->   0
-dqctm020 comparetotmag   1   2   ->  -1
-dqctm021 comparetotmag   2  -2   ->   0
-dqctm022 comparetotmag   2  -1   ->   1
-dqctm023 comparetotmag   2   0   ->   1
-dqctm025 comparetotmag   2   1   ->   1
-dqctm026 comparetotmag   2   2   ->   0
-
-dqctm031 comparetotmag  -20  -20   ->   0
-dqctm032 comparetotmag  -20  -10   ->   1
-dqctm033 comparetotmag  -20   00   ->   1
-dqctm034 comparetotmag  -20   10   ->   1
-dqctm035 comparetotmag  -20   20   ->   0
-dqctm036 comparetotmag  -10  -20   ->  -1
-dqctm037 comparetotmag  -10  -10   ->   0
-dqctm038 comparetotmag  -10   00   ->   1
-dqctm039 comparetotmag  -10   10   ->   0
-dqctm040 comparetotmag  -10   20   ->  -1
-dqctm041 comparetotmag   00  -20   ->  -1
-dqctm042 comparetotmag   00  -10   ->  -1
-dqctm043 comparetotmag   00   00   ->   0
-dqctm044 comparetotmag   00   10   ->  -1
-dqctm045 comparetotmag   00   20   ->  -1
-dqctm046 comparetotmag   10  -20   ->  -1
-dqctm047 comparetotmag   10  -10   ->   0
-dqctm048 comparetotmag   10   00   ->   1
-dqctm049 comparetotmag   10   10   ->   0
-dqctm050 comparetotmag   10   20   ->  -1
-dqctm051 comparetotmag   20  -20   ->   0
-dqctm052 comparetotmag   20  -10   ->   1
-dqctm053 comparetotmag   20   00   ->   1
-dqctm055 comparetotmag   20   10   ->   1
-dqctm056 comparetotmag   20   20   ->   0
-
-dqctm061 comparetotmag  -2.0  -2.0   ->   0
-dqctm062 comparetotmag  -2.0  -1.0   ->   1
-dqctm063 comparetotmag  -2.0   0.0   ->   1
-dqctm064 comparetotmag  -2.0   1.0   ->   1
-dqctm065 comparetotmag  -2.0   2.0   ->   0
-dqctm066 comparetotmag  -1.0  -2.0   ->  -1
-dqctm067 comparetotmag  -1.0  -1.0   ->   0
-dqctm068 comparetotmag  -1.0   0.0   ->   1
-dqctm069 comparetotmag  -1.0   1.0   ->   0
-dqctm070 comparetotmag  -1.0   2.0   ->  -1
-dqctm071 comparetotmag   0.0  -2.0   ->  -1
-dqctm072 comparetotmag   0.0  -1.0   ->  -1
-dqctm073 comparetotmag   0.0   0.0   ->   0
-dqctm074 comparetotmag   0.0   1.0   ->  -1
-dqctm075 comparetotmag   0.0   2.0   ->  -1
-dqctm076 comparetotmag   1.0  -2.0   ->  -1
-dqctm077 comparetotmag   1.0  -1.0   ->   0
-dqctm078 comparetotmag   1.0   0.0   ->   1
-dqctm079 comparetotmag   1.0   1.0   ->   0
-dqctm080 comparetotmag   1.0   2.0   ->  -1
-dqctm081 comparetotmag   2.0  -2.0   ->   0
-dqctm082 comparetotmag   2.0  -1.0   ->   1
-dqctm083 comparetotmag   2.0   0.0   ->   1
-dqctm085 comparetotmag   2.0   1.0   ->   1
-dqctm086 comparetotmag   2.0   2.0   ->   0
-
--- now some cases which might overflow if subtract were used
-dqctm090 comparetotmag  9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144   ->   0
-dqctm091 comparetotmag -9.99999999999999999999999999999E+6144 9.99999999999999999999999999999E+6144   ->   0
-dqctm092 comparetotmag  9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144  ->   0
-dqctm093 comparetotmag -9.99999999999999999999999999999E+6144 -9.99999999999999999999999999999E+6144  ->   0
-
--- some differing length/exponent cases
--- in this first group, compare would compare all equal
-dqctm100 comparetotmag   7.0    7.0     ->   0
-dqctm101 comparetotmag   7.0    7       ->  -1
-dqctm102 comparetotmag   7      7.0     ->   1
-dqctm103 comparetotmag   7E+0   7.0     ->   1
-dqctm104 comparetotmag   70E-1  7.0     ->   0
-dqctm105 comparetotmag   0.7E+1 7       ->   0
-dqctm106 comparetotmag   70E-1  7       ->  -1
-dqctm107 comparetotmag   7.0    7E+0    ->  -1
-dqctm108 comparetotmag   7.0    70E-1   ->   0
-dqctm109 comparetotmag   7      0.7E+1  ->   0
-dqctm110 comparetotmag   7      70E-1   ->   1
-
-dqctm120 comparetotmag   8.0    7.0     ->   1
-dqctm121 comparetotmag   8.0    7       ->   1
-dqctm122 comparetotmag   8      7.0     ->   1
-dqctm123 comparetotmag   8E+0   7.0     ->   1
-dqctm124 comparetotmag   80E-1  7.0     ->   1
-dqctm125 comparetotmag   0.8E+1 7       ->   1
-dqctm126 comparetotmag   80E-1  7       ->   1
-dqctm127 comparetotmag   8.0    7E+0    ->   1
-dqctm128 comparetotmag   8.0    70E-1   ->   1
-dqctm129 comparetotmag   8      0.7E+1   ->   1
-dqctm130 comparetotmag   8      70E-1   ->   1
-
-dqctm140 comparetotmag   8.0    9.0     ->  -1
-dqctm141 comparetotmag   8.0    9       ->  -1
-dqctm142 comparetotmag   8      9.0     ->  -1
-dqctm143 comparetotmag   8E+0   9.0     ->  -1
-dqctm144 comparetotmag   80E-1  9.0     ->  -1
-dqctm145 comparetotmag   0.8E+1 9       ->  -1
-dqctm146 comparetotmag   80E-1  9       ->  -1
-dqctm147 comparetotmag   8.0    9E+0    ->  -1
-dqctm148 comparetotmag   8.0    90E-1   ->  -1
-dqctm149 comparetotmag   8      0.9E+1  ->  -1
-dqctm150 comparetotmag   8      90E-1   ->  -1
-
--- and again, with sign changes -+ ..
-dqctm200 comparetotmag  -7.0    7.0     ->   0
-dqctm201 comparetotmag  -7.0    7       ->  -1
-dqctm202 comparetotmag  -7      7.0     ->   1
-dqctm203 comparetotmag  -7E+0   7.0     ->   1
-dqctm204 comparetotmag  -70E-1  7.0     ->   0
-dqctm205 comparetotmag  -0.7E+1 7       ->   0
-dqctm206 comparetotmag  -70E-1  7       ->  -1
-dqctm207 comparetotmag  -7.0    7E+0    ->  -1
-dqctm208 comparetotmag  -7.0    70E-1   ->   0
-dqctm209 comparetotmag  -7      0.7E+1  ->   0
-dqctm210 comparetotmag  -7      70E-1   ->   1
-
-dqctm220 comparetotmag  -8.0    7.0     ->   1
-dqctm221 comparetotmag  -8.0    7       ->   1
-dqctm222 comparetotmag  -8      7.0     ->   1
-dqctm223 comparetotmag  -8E+0   7.0     ->   1
-dqctm224 comparetotmag  -80E-1  7.0     ->   1
-dqctm225 comparetotmag  -0.8E+1 7       ->   1
-dqctm226 comparetotmag  -80E-1  7       ->   1
-dqctm227 comparetotmag  -8.0    7E+0    ->   1
-dqctm228 comparetotmag  -8.0    70E-1   ->   1
-dqctm229 comparetotmag  -8      0.7E+1  ->   1
-dqctm230 comparetotmag  -8      70E-1   ->   1
-
-dqctm240 comparetotmag  -8.0    9.0     ->  -1
-dqctm241 comparetotmag  -8.0    9       ->  -1
-dqctm242 comparetotmag  -8      9.0     ->  -1
-dqctm243 comparetotmag  -8E+0   9.0     ->  -1
-dqctm244 comparetotmag  -80E-1  9.0     ->  -1
-dqctm245 comparetotmag  -0.8E+1 9       ->  -1
-dqctm246 comparetotmag  -80E-1  9       ->  -1
-dqctm247 comparetotmag  -8.0    9E+0    ->  -1
-dqctm248 comparetotmag  -8.0    90E-1   ->  -1
-dqctm249 comparetotmag  -8      0.9E+1  ->  -1
-dqctm250 comparetotmag  -8      90E-1   ->  -1
-
--- and again, with sign changes +- ..
-dqctm300 comparetotmag   7.0    -7.0     ->   0
-dqctm301 comparetotmag   7.0    -7       ->  -1
-dqctm302 comparetotmag   7      -7.0     ->   1
-dqctm303 comparetotmag   7E+0   -7.0     ->   1
-dqctm304 comparetotmag   70E-1  -7.0     ->   0
-dqctm305 comparetotmag   .7E+1  -7       ->   0
-dqctm306 comparetotmag   70E-1  -7       ->  -1
-dqctm307 comparetotmag   7.0    -7E+0    ->  -1
-dqctm308 comparetotmag   7.0    -70E-1   ->   0
-dqctm309 comparetotmag   7      -.7E+1   ->   0
-dqctm310 comparetotmag   7      -70E-1   ->   1
-
-dqctm320 comparetotmag   8.0    -7.0     ->   1
-dqctm321 comparetotmag   8.0    -7       ->   1
-dqctm322 comparetotmag   8      -7.0     ->   1
-dqctm323 comparetotmag   8E+0   -7.0     ->   1
-dqctm324 comparetotmag   80E-1  -7.0     ->   1
-dqctm325 comparetotmag   .8E+1  -7       ->   1
-dqctm326 comparetotmag   80E-1  -7       ->   1
-dqctm327 comparetotmag   8.0    -7E+0    ->   1
-dqctm328 comparetotmag   8.0    -70E-1   ->   1
-dqctm329 comparetotmag   8      -.7E+1   ->   1
-dqctm330 comparetotmag   8      -70E-1   ->   1
-
-dqctm340 comparetotmag   8.0    -9.0     ->  -1
-dqctm341 comparetotmag   8.0    -9       ->  -1
-dqctm342 comparetotmag   8      -9.0     ->  -1
-dqctm343 comparetotmag   8E+0   -9.0     ->  -1
-dqctm344 comparetotmag   80E-1  -9.0     ->  -1
-dqctm345 comparetotmag   .8E+1  -9       ->  -1
-dqctm346 comparetotmag   80E-1  -9       ->  -1
-dqctm347 comparetotmag   8.0    -9E+0    ->  -1
-dqctm348 comparetotmag   8.0    -90E-1   ->  -1
-dqctm349 comparetotmag   8      -.9E+1   ->  -1
-dqctm350 comparetotmag   8      -90E-1   ->  -1
-
--- and again, with sign changes -- ..
-dqctm400 comparetotmag   -7.0    -7.0     ->   0
-dqctm401 comparetotmag   -7.0    -7       ->  -1
-dqctm402 comparetotmag   -7      -7.0     ->   1
-dqctm403 comparetotmag   -7E+0   -7.0     ->   1
-dqctm404 comparetotmag   -70E-1  -7.0     ->   0
-dqctm405 comparetotmag   -.7E+1  -7       ->   0
-dqctm406 comparetotmag   -70E-1  -7       ->  -1
-dqctm407 comparetotmag   -7.0    -7E+0    ->  -1
-dqctm408 comparetotmag   -7.0    -70E-1   ->   0
-dqctm409 comparetotmag   -7      -.7E+1   ->   0
-dqctm410 comparetotmag   -7      -70E-1   ->   1
-
-dqctm420 comparetotmag   -8.0    -7.0     ->   1
-dqctm421 comparetotmag   -8.0    -7       ->   1
-dqctm422 comparetotmag   -8      -7.0     ->   1
-dqctm423 comparetotmag   -8E+0   -7.0     ->   1
-dqctm424 comparetotmag   -80E-1  -7.0     ->   1
-dqctm425 comparetotmag   -.8E+1  -7       ->   1
-dqctm426 comparetotmag   -80E-1  -7       ->   1
-dqctm427 comparetotmag   -8.0    -7E+0    ->   1
-dqctm428 comparetotmag   -8.0    -70E-1   ->   1
-dqctm429 comparetotmag   -8      -.7E+1   ->   1
-dqctm430 comparetotmag   -8      -70E-1   ->   1
-
-dqctm440 comparetotmag   -8.0    -9.0     ->  -1
-dqctm441 comparetotmag   -8.0    -9       ->  -1
-dqctm442 comparetotmag   -8      -9.0     ->  -1
-dqctm443 comparetotmag   -8E+0   -9.0     ->  -1
-dqctm444 comparetotmag   -80E-1  -9.0     ->  -1
-dqctm445 comparetotmag   -.8E+1  -9       ->  -1
-dqctm446 comparetotmag   -80E-1  -9       ->  -1
-dqctm447 comparetotmag   -8.0    -9E+0    ->  -1
-dqctm448 comparetotmag   -8.0    -90E-1   ->  -1
-dqctm449 comparetotmag   -8      -.9E+1   ->  -1
-dqctm450 comparetotmag   -8      -90E-1   ->  -1
-
-
--- testcases that subtract to lots of zeros at boundaries [pgr]
-dqctm473 comparetotmag 123.4560000000000E-89 123.456E-89  ->  -1
-dqctm474 comparetotmag 123.456000000000E+89 123.456E+89  ->  -1
-dqctm475 comparetotmag 123.45600000000E-89 123.456E-89  ->  -1
-dqctm476 comparetotmag 123.4560000000E+89 123.456E+89  ->  -1
-dqctm477 comparetotmag 123.456000000E-89 123.456E-89  ->  -1
-dqctm478 comparetotmag 123.45600000E+89 123.456E+89  ->  -1
-dqctm479 comparetotmag 123.4560000E-89 123.456E-89  ->  -1
-dqctm480 comparetotmag 123.456000E+89 123.456E+89  ->  -1
-dqctm481 comparetotmag 123.45600E-89 123.456E-89  ->  -1
-dqctm482 comparetotmag 123.4560E+89 123.456E+89  ->  -1
-dqctm483 comparetotmag 123.456E-89 123.456E-89  ->   0
-dqctm487 comparetotmag 123.456E+89 123.4560000000000E+89  ->   1
-dqctm488 comparetotmag 123.456E-89 123.456000000000E-89  ->   1
-dqctm489 comparetotmag 123.456E+89 123.45600000000E+89  ->   1
-dqctm490 comparetotmag 123.456E-89 123.4560000000E-89  ->   1
-dqctm491 comparetotmag 123.456E+89 123.456000000E+89  ->   1
-dqctm492 comparetotmag 123.456E-89 123.45600000E-89  ->   1
-dqctm493 comparetotmag 123.456E+89 123.4560000E+89  ->   1
-dqctm494 comparetotmag 123.456E-89 123.456000E-89  ->   1
-dqctm495 comparetotmag 123.456E+89 123.45600E+89  ->   1
-dqctm496 comparetotmag 123.456E-89 123.4560E-89  ->   1
-dqctm497 comparetotmag 123.456E+89 123.456E+89  ->   0
-
--- wide-ranging, around precision; signs equal
-dqctm498 comparetotmag    1     1E-17     ->   1
-dqctm499 comparetotmag    1     1E-16     ->   1
-dqctm500 comparetotmag    1     1E-15     ->   1
-dqctm501 comparetotmag    1     1E-14     ->   1
-dqctm502 comparetotmag    1     1E-13     ->   1
-dqctm503 comparetotmag    1     1E-12     ->   1
-dqctm504 comparetotmag    1     1E-11     ->   1
-dqctm505 comparetotmag    1     1E-10     ->   1
-dqctm506 comparetotmag    1     1E-9      ->   1
-dqctm507 comparetotmag    1     1E-8      ->   1
-dqctm508 comparetotmag    1     1E-7      ->   1
-dqctm509 comparetotmag    1     1E-6      ->   1
-dqctm510 comparetotmag    1     1E-5      ->   1
-dqctm511 comparetotmag    1     1E-4      ->   1
-dqctm512 comparetotmag    1     1E-3      ->   1
-dqctm513 comparetotmag    1     1E-2      ->   1
-dqctm514 comparetotmag    1     1E-1      ->   1
-dqctm515 comparetotmag    1     1E-0      ->   0
-dqctm516 comparetotmag    1     1E+1      ->  -1
-dqctm517 comparetotmag    1     1E+2      ->  -1
-dqctm518 comparetotmag    1     1E+3      ->  -1
-dqctm519 comparetotmag    1     1E+4      ->  -1
-dqctm521 comparetotmag    1     1E+5      ->  -1
-dqctm522 comparetotmag    1     1E+6      ->  -1
-dqctm523 comparetotmag    1     1E+7      ->  -1
-dqctm524 comparetotmag    1     1E+8      ->  -1
-dqctm525 comparetotmag    1     1E+9      ->  -1
-dqctm526 comparetotmag    1     1E+10     ->  -1
-dqctm527 comparetotmag    1     1E+11     ->  -1
-dqctm528 comparetotmag    1     1E+12     ->  -1
-dqctm529 comparetotmag    1     1E+13     ->  -1
-dqctm530 comparetotmag    1     1E+14     ->  -1
-dqctm531 comparetotmag    1     1E+15     ->  -1
-dqctm532 comparetotmag    1     1E+16     ->  -1
-dqctm533 comparetotmag    1     1E+17     ->  -1
--- LR swap
-dqctm538 comparetotmag    1E-17  1        ->  -1
-dqctm539 comparetotmag    1E-16  1        ->  -1
-dqctm540 comparetotmag    1E-15  1        ->  -1
-dqctm541 comparetotmag    1E-14  1        ->  -1
-dqctm542 comparetotmag    1E-13  1        ->  -1
-dqctm543 comparetotmag    1E-12  1        ->  -1
-dqctm544 comparetotmag    1E-11  1        ->  -1
-dqctm545 comparetotmag    1E-10  1        ->  -1
-dqctm546 comparetotmag    1E-9   1        ->  -1
-dqctm547 comparetotmag    1E-8   1        ->  -1
-dqctm548 comparetotmag    1E-7   1        ->  -1
-dqctm549 comparetotmag    1E-6   1        ->  -1
-dqctm550 comparetotmag    1E-5   1        ->  -1
-dqctm551 comparetotmag    1E-4   1        ->  -1
-dqctm552 comparetotmag    1E-3   1        ->  -1
-dqctm553 comparetotmag    1E-2   1        ->  -1
-dqctm554 comparetotmag    1E-1   1        ->  -1
-dqctm555 comparetotmag    1E-0   1        ->   0
-dqctm556 comparetotmag    1E+1   1        ->   1
-dqctm557 comparetotmag    1E+2   1        ->   1
-dqctm558 comparetotmag    1E+3   1        ->   1
-dqctm559 comparetotmag    1E+4   1        ->   1
-dqctm561 comparetotmag    1E+5   1        ->   1
-dqctm562 comparetotmag    1E+6   1        ->   1
-dqctm563 comparetotmag    1E+7   1        ->   1
-dqctm564 comparetotmag    1E+8   1        ->   1
-dqctm565 comparetotmag    1E+9   1        ->   1
-dqctm566 comparetotmag    1E+10  1        ->   1
-dqctm567 comparetotmag    1E+11  1        ->   1
-dqctm568 comparetotmag    1E+12  1        ->   1
-dqctm569 comparetotmag    1E+13  1        ->   1
-dqctm570 comparetotmag    1E+14  1        ->   1
-dqctm571 comparetotmag    1E+15  1        ->   1
-dqctm572 comparetotmag    1E+16  1        ->   1
-dqctm573 comparetotmag    1E+17  1        ->   1
--- similar with a useful coefficient, one side only
-dqctm578 comparetotmag  0.000000987654321     1E-17     ->   1
-dqctm579 comparetotmag  0.000000987654321     1E-16     ->   1
-dqctm580 comparetotmag  0.000000987654321     1E-15     ->   1
-dqctm581 comparetotmag  0.000000987654321     1E-14     ->   1
-dqctm582 comparetotmag  0.000000987654321     1E-13     ->   1
-dqctm583 comparetotmag  0.000000987654321     1E-12     ->   1
-dqctm584 comparetotmag  0.000000987654321     1E-11     ->   1
-dqctm585 comparetotmag  0.000000987654321     1E-10     ->   1
-dqctm586 comparetotmag  0.000000987654321     1E-9      ->   1
-dqctm587 comparetotmag  0.000000987654321     1E-8      ->   1
-dqctm588 comparetotmag  0.000000987654321     1E-7      ->   1
-dqctm589 comparetotmag  0.000000987654321     1E-6      ->  -1
-dqctm590 comparetotmag  0.000000987654321     1E-5      ->  -1
-dqctm591 comparetotmag  0.000000987654321     1E-4      ->  -1
-dqctm592 comparetotmag  0.000000987654321     1E-3      ->  -1
-dqctm593 comparetotmag  0.000000987654321     1E-2      ->  -1
-dqctm594 comparetotmag  0.000000987654321     1E-1      ->  -1
-dqctm595 comparetotmag  0.000000987654321     1E-0      ->  -1
-dqctm596 comparetotmag  0.000000987654321     1E+1      ->  -1
-dqctm597 comparetotmag  0.000000987654321     1E+2      ->  -1
-dqctm598 comparetotmag  0.000000987654321     1E+3      ->  -1
-dqctm599 comparetotmag  0.000000987654321     1E+4      ->  -1
-
--- check some unit-y traps
-dqctm600 comparetotmag   12            12.2345  ->  -1
-dqctm601 comparetotmag   12.0          12.2345  ->  -1
-dqctm602 comparetotmag   12.00         12.2345  ->  -1
-dqctm603 comparetotmag   12.000        12.2345  ->  -1
-dqctm604 comparetotmag   12.0000       12.2345  ->  -1
-dqctm605 comparetotmag   12.00000      12.2345  ->  -1
-dqctm606 comparetotmag   12.000000     12.2345  ->  -1
-dqctm607 comparetotmag   12.0000000    12.2345  ->  -1
-dqctm608 comparetotmag   12.00000000   12.2345  ->  -1
-dqctm609 comparetotmag   12.000000000  12.2345  ->  -1
-dqctm610 comparetotmag   12.1234 12             ->   1
-dqctm611 comparetotmag   12.1234 12.0           ->   1
-dqctm612 comparetotmag   12.1234 12.00          ->   1
-dqctm613 comparetotmag   12.1234 12.000         ->   1
-dqctm614 comparetotmag   12.1234 12.0000        ->   1
-dqctm615 comparetotmag   12.1234 12.00000       ->   1
-dqctm616 comparetotmag   12.1234 12.000000      ->   1
-dqctm617 comparetotmag   12.1234 12.0000000     ->   1
-dqctm618 comparetotmag   12.1234 12.00000000    ->   1
-dqctm619 comparetotmag   12.1234 12.000000000   ->   1
-dqctm620 comparetotmag  -12           -12.2345  ->  -1
-dqctm621 comparetotmag  -12.0         -12.2345  ->  -1
-dqctm622 comparetotmag  -12.00        -12.2345  ->  -1
-dqctm623 comparetotmag  -12.000       -12.2345  ->  -1
-dqctm624 comparetotmag  -12.0000      -12.2345  ->  -1
-dqctm625 comparetotmag  -12.00000     -12.2345  ->  -1
-dqctm626 comparetotmag  -12.000000    -12.2345  ->  -1
-dqctm627 comparetotmag  -12.0000000   -12.2345  ->  -1
-dqctm628 comparetotmag  -12.00000000  -12.2345  ->  -1
-dqctm629 comparetotmag  -12.000000000 -12.2345  ->  -1
-dqctm630 comparetotmag  -12.1234 -12            ->   1
-dqctm631 comparetotmag  -12.1234 -12.0          ->   1
-dqctm632 comparetotmag  -12.1234 -12.00         ->   1
-dqctm633 comparetotmag  -12.1234 -12.000        ->   1
-dqctm634 comparetotmag  -12.1234 -12.0000       ->   1
-dqctm635 comparetotmag  -12.1234 -12.00000      ->   1
-dqctm636 comparetotmag  -12.1234 -12.000000     ->   1
-dqctm637 comparetotmag  -12.1234 -12.0000000    ->   1
-dqctm638 comparetotmag  -12.1234 -12.00000000   ->   1
-dqctm639 comparetotmag  -12.1234 -12.000000000  ->   1
-
--- extended zeros
-dqctm640 comparetotmag   0     0    ->   0
-dqctm641 comparetotmag   0    -0    ->   0
-dqctm642 comparetotmag   0    -0.0  ->   1
-dqctm643 comparetotmag   0     0.0  ->   1
-dqctm644 comparetotmag  -0     0    ->   0
-dqctm645 comparetotmag  -0    -0    ->   0
-dqctm646 comparetotmag  -0    -0.0  ->   1
-dqctm647 comparetotmag  -0     0.0  ->   1
-dqctm648 comparetotmag   0.0   0    ->  -1
-dqctm649 comparetotmag   0.0  -0    ->  -1
-dqctm650 comparetotmag   0.0  -0.0  ->   0
-dqctm651 comparetotmag   0.0   0.0  ->   0
-dqctm652 comparetotmag  -0.0   0    ->  -1
-dqctm653 comparetotmag  -0.0  -0    ->  -1
-dqctm654 comparetotmag  -0.0  -0.0  ->   0
-dqctm655 comparetotmag  -0.0   0.0  ->   0
-
-dqctm656 comparetotmag  -0E1   0.0  ->   1
-dqctm657 comparetotmag  -0E2   0.0  ->   1
-dqctm658 comparetotmag   0E1   0.0  ->   1
-dqctm659 comparetotmag   0E2   0.0  ->   1
-dqctm660 comparetotmag  -0E1   0    ->   1
-dqctm661 comparetotmag  -0E2   0    ->   1
-dqctm662 comparetotmag   0E1   0    ->   1
-dqctm663 comparetotmag   0E2   0    ->   1
-dqctm664 comparetotmag  -0E1  -0E1  ->   0
-dqctm665 comparetotmag  -0E2  -0E1  ->   1
-dqctm666 comparetotmag   0E1  -0E1  ->   0
-dqctm667 comparetotmag   0E2  -0E1  ->   1
-dqctm668 comparetotmag  -0E1  -0E2  ->  -1
-dqctm669 comparetotmag  -0E2  -0E2  ->   0
-dqctm670 comparetotmag   0E1  -0E2  ->  -1
-dqctm671 comparetotmag   0E2  -0E2  ->   0
-dqctm672 comparetotmag  -0E1   0E1  ->   0
-dqctm673 comparetotmag  -0E2   0E1  ->   1
-dqctm674 comparetotmag   0E1   0E1  ->   0
-dqctm675 comparetotmag   0E2   0E1  ->   1
-dqctm676 comparetotmag  -0E1   0E2  ->  -1
-dqctm677 comparetotmag  -0E2   0E2  ->   0
-dqctm678 comparetotmag   0E1   0E2  ->  -1
-dqctm679 comparetotmag   0E2   0E2  ->   0
-
--- trailing zeros; unit-y
-dqctm680 comparetotmag   12    12            ->   0
-dqctm681 comparetotmag   12    12.0          ->   1
-dqctm682 comparetotmag   12    12.00         ->   1
-dqctm683 comparetotmag   12    12.000        ->   1
-dqctm684 comparetotmag   12    12.0000       ->   1
-dqctm685 comparetotmag   12    12.00000      ->   1
-dqctm686 comparetotmag   12    12.000000     ->   1
-dqctm687 comparetotmag   12    12.0000000    ->   1
-dqctm688 comparetotmag   12    12.00000000   ->   1
-dqctm689 comparetotmag   12    12.000000000  ->   1
-dqctm690 comparetotmag   12              12  ->   0
-dqctm691 comparetotmag   12.0            12  ->  -1
-dqctm692 comparetotmag   12.00           12  ->  -1
-dqctm693 comparetotmag   12.000          12  ->  -1
-dqctm694 comparetotmag   12.0000         12  ->  -1
-dqctm695 comparetotmag   12.00000        12  ->  -1
-dqctm696 comparetotmag   12.000000       12  ->  -1
-dqctm697 comparetotmag   12.0000000      12  ->  -1
-dqctm698 comparetotmag   12.00000000     12  ->  -1
-dqctm699 comparetotmag   12.000000000    12  ->  -1
-
--- old long operand checks
-dqctm701 comparetotmag 12345678000  1  ->   1
-dqctm702 comparetotmag 1 12345678000   ->  -1
-dqctm703 comparetotmag 1234567800   1  ->   1
-dqctm704 comparetotmag 1 1234567800    ->  -1
-dqctm705 comparetotmag 1234567890   1  ->   1
-dqctm706 comparetotmag 1 1234567890    ->  -1
-dqctm707 comparetotmag 1234567891   1  ->   1
-dqctm708 comparetotmag 1 1234567891    ->  -1
-dqctm709 comparetotmag 12345678901  1  ->   1
-dqctm710 comparetotmag 1 12345678901   ->  -1
-dqctm711 comparetotmag 1234567896   1  ->   1
-dqctm712 comparetotmag 1 1234567896    ->  -1
-dqctm713 comparetotmag -1234567891  1  ->   1
-dqctm714 comparetotmag 1 -1234567891   ->  -1
-dqctm715 comparetotmag -12345678901 1  ->   1
-dqctm716 comparetotmag 1 -12345678901  ->  -1
-dqctm717 comparetotmag -1234567896  1  ->   1
-dqctm718 comparetotmag 1 -1234567896   ->  -1
-
--- old residue cases
-dqctm740 comparetotmag  1  0.9999999   ->   1
-dqctm741 comparetotmag  1  0.999999    ->   1
-dqctm742 comparetotmag  1  0.99999     ->   1
-dqctm743 comparetotmag  1  1.0000      ->   1
-dqctm744 comparetotmag  1  1.00001     ->  -1
-dqctm745 comparetotmag  1  1.000001    ->  -1
-dqctm746 comparetotmag  1  1.0000001   ->  -1
-dqctm750 comparetotmag  0.9999999  1   ->  -1
-dqctm751 comparetotmag  0.999999   1   ->  -1
-dqctm752 comparetotmag  0.99999    1   ->  -1
-dqctm753 comparetotmag  1.0000     1   ->  -1
-dqctm754 comparetotmag  1.00001    1   ->   1
-dqctm755 comparetotmag  1.000001   1   ->   1
-dqctm756 comparetotmag  1.0000001  1   ->   1
-
--- Specials
-dqctm780 comparetotmag  Inf  -Inf   ->  0
-dqctm781 comparetotmag  Inf  -1000  ->  1
-dqctm782 comparetotmag  Inf  -1     ->  1
-dqctm783 comparetotmag  Inf  -0     ->  1
-dqctm784 comparetotmag  Inf   0     ->  1
-dqctm785 comparetotmag  Inf   1     ->  1
-dqctm786 comparetotmag  Inf   1000  ->  1
-dqctm787 comparetotmag  Inf   Inf   ->  0
-dqctm788 comparetotmag -1000  Inf   -> -1
-dqctm789 comparetotmag -Inf   Inf   ->  0
-dqctm790 comparetotmag -1     Inf   -> -1
-dqctm791 comparetotmag -0     Inf   -> -1
-dqctm792 comparetotmag  0     Inf   -> -1
-dqctm793 comparetotmag  1     Inf   -> -1
-dqctm794 comparetotmag  1000  Inf   -> -1
-dqctm795 comparetotmag  Inf   Inf   ->  0
-
-dqctm800 comparetotmag -Inf  -Inf   ->  0
-dqctm801 comparetotmag -Inf  -1000  ->  1
-dqctm802 comparetotmag -Inf  -1     ->  1
-dqctm803 comparetotmag -Inf  -0     ->  1
-dqctm804 comparetotmag -Inf   0     ->  1
-dqctm805 comparetotmag -Inf   1     ->  1
-dqctm806 comparetotmag -Inf   1000  ->  1
-dqctm807 comparetotmag -Inf   Inf   ->  0
-dqctm808 comparetotmag -Inf  -Inf   ->  0
-dqctm809 comparetotmag -1000 -Inf   -> -1
-dqctm810 comparetotmag -1    -Inf   -> -1
-dqctm811 comparetotmag -0    -Inf   -> -1
-dqctm812 comparetotmag  0    -Inf   -> -1
-dqctm813 comparetotmag  1    -Inf   -> -1
-dqctm814 comparetotmag  1000 -Inf   -> -1
-dqctm815 comparetotmag  Inf  -Inf   ->  0
-
-dqctm821 comparetotmag  NaN -Inf    ->  1
-dqctm822 comparetotmag  NaN -1000   ->  1
-dqctm823 comparetotmag  NaN -1      ->  1
-dqctm824 comparetotmag  NaN -0      ->  1
-dqctm825 comparetotmag  NaN  0      ->  1
-dqctm826 comparetotmag  NaN  1      ->  1
-dqctm827 comparetotmag  NaN  1000   ->  1
-dqctm828 comparetotmag  NaN  Inf    ->  1
-dqctm829 comparetotmag  NaN  NaN    ->  0
-dqctm830 comparetotmag -Inf  NaN    ->  -1
-dqctm831 comparetotmag -1000 NaN    ->  -1
-dqctm832 comparetotmag -1    NaN    ->  -1
-dqctm833 comparetotmag -0    NaN    ->  -1
-dqctm834 comparetotmag  0    NaN    ->  -1
-dqctm835 comparetotmag  1    NaN    ->  -1
-dqctm836 comparetotmag  1000 NaN    ->  -1
-dqctm837 comparetotmag  Inf  NaN    ->  -1
-dqctm838 comparetotmag -NaN -NaN    ->  0
-dqctm839 comparetotmag +NaN -NaN    ->  0
-dqctm840 comparetotmag -NaN +NaN    ->  0
-
-dqctm841 comparetotmag  sNaN -sNaN  ->  0
-dqctm842 comparetotmag  sNaN -NaN   ->  -1
-dqctm843 comparetotmag  sNaN -Inf   ->  1
-dqctm844 comparetotmag  sNaN -1000  ->  1
-dqctm845 comparetotmag  sNaN -1     ->  1
-dqctm846 comparetotmag  sNaN -0     ->  1
-dqctm847 comparetotmag  sNaN  0     ->  1
-dqctm848 comparetotmag  sNaN  1     ->  1
-dqctm849 comparetotmag  sNaN  1000  ->  1
-dqctm850 comparetotmag  sNaN  NaN   ->  -1
-dqctm851 comparetotmag  sNaN sNaN   ->  0
-
-dqctm852 comparetotmag -sNaN sNaN   ->  0
-dqctm853 comparetotmag -NaN  sNaN   ->  1
-dqctm854 comparetotmag -Inf  sNaN   ->  -1
-dqctm855 comparetotmag -1000 sNaN   ->  -1
-dqctm856 comparetotmag -1    sNaN   ->  -1
-dqctm857 comparetotmag -0    sNaN   ->  -1
-dqctm858 comparetotmag  0    sNaN   ->  -1
-dqctm859 comparetotmag  1    sNaN   ->  -1
-dqctm860 comparetotmag  1000 sNaN   ->  -1
-dqctm861 comparetotmag  Inf  sNaN   ->  -1
-dqctm862 comparetotmag  NaN  sNaN   ->  1
-dqctm863 comparetotmag  sNaN sNaN   ->  0
-
-dqctm871 comparetotmag  -sNaN -sNaN  ->  0
-dqctm872 comparetotmag  -sNaN -NaN   ->  -1
-dqctm873 comparetotmag  -sNaN -Inf   ->  1
-dqctm874 comparetotmag  -sNaN -1000  ->  1
-dqctm875 comparetotmag  -sNaN -1     ->  1
-dqctm876 comparetotmag  -sNaN -0     ->  1
-dqctm877 comparetotmag  -sNaN  0     ->  1
-dqctm878 comparetotmag  -sNaN  1     ->  1
-dqctm879 comparetotmag  -sNaN  1000  ->  1
-dqctm880 comparetotmag  -sNaN  NaN   ->  -1
-dqctm881 comparetotmag  -sNaN sNaN   ->  0
-
-dqctm882 comparetotmag -sNaN -sNaN   ->  0
-dqctm883 comparetotmag -NaN  -sNaN   ->  1
-dqctm884 comparetotmag -Inf  -sNaN   ->  -1
-dqctm885 comparetotmag -1000 -sNaN   ->  -1
-dqctm886 comparetotmag -1    -sNaN   ->  -1
-dqctm887 comparetotmag -0    -sNaN   ->  -1
-dqctm888 comparetotmag  0    -sNaN   ->  -1
-dqctm889 comparetotmag  1    -sNaN   ->  -1
-dqctm890 comparetotmag  1000 -sNaN   ->  -1
-dqctm891 comparetotmag  Inf  -sNaN   ->  -1
-dqctm892 comparetotmag  NaN  -sNaN   ->  1
-dqctm893 comparetotmag  sNaN -sNaN   ->  0
-
--- NaNs with payload
-dqctm960 comparetotmag  NaN9 -Inf   ->  1
-dqctm961 comparetotmag  NaN8  999   ->  1
-dqctm962 comparetotmag  NaN77 Inf   ->  1
-dqctm963 comparetotmag -NaN67 NaN5  ->  1
-dqctm964 comparetotmag -Inf  -NaN4  ->  -1
-dqctm965 comparetotmag -999  -NaN33 ->  -1
-dqctm966 comparetotmag  Inf   NaN2  ->  -1
-
-dqctm970 comparetotmag -NaN41 -NaN42 -> -1
-dqctm971 comparetotmag +NaN41 -NaN42 -> -1
-dqctm972 comparetotmag -NaN41 +NaN42 -> -1
-dqctm973 comparetotmag +NaN41 +NaN42 -> -1
-dqctm974 comparetotmag -NaN42 -NaN01 ->  1
-dqctm975 comparetotmag +NaN42 -NaN01 ->  1
-dqctm976 comparetotmag -NaN42 +NaN01 ->  1
-dqctm977 comparetotmag +NaN42 +NaN01 ->  1
-
-dqctm980 comparetotmag -sNaN771 -sNaN772 -> -1
-dqctm981 comparetotmag +sNaN771 -sNaN772 -> -1
-dqctm982 comparetotmag -sNaN771 +sNaN772 -> -1
-dqctm983 comparetotmag +sNaN771 +sNaN772 -> -1
-dqctm984 comparetotmag -sNaN772 -sNaN771 ->  1
-dqctm985 comparetotmag +sNaN772 -sNaN771 ->  1
-dqctm986 comparetotmag -sNaN772 +sNaN771 ->  1
-dqctm987 comparetotmag +sNaN772 +sNaN771 ->  1
-
-dqctm991 comparetotmag -sNaN99 -Inf    ->  1
-dqctm992 comparetotmag  sNaN98 -11     ->  1
-dqctm993 comparetotmag  sNaN97  NaN    -> -1
-dqctm994 comparetotmag  sNaN16 sNaN94  -> -1
-dqctm995 comparetotmag  NaN85  sNaN83  ->  1
-dqctm996 comparetotmag -Inf    sNaN92  -> -1
-dqctm997 comparetotmag  088    sNaN81  -> -1
-dqctm998 comparetotmag  Inf    sNaN90  -> -1
-dqctm999 comparetotmag  NaN   -sNaN89  ->  1
-
--- spread zeros
-dqctm1110 comparetotmag   0E-6143  0        ->  -1
-dqctm1111 comparetotmag   0E-6143 -0        ->  -1
-dqctm1112 comparetotmag  -0E-6143  0        ->  -1
-dqctm1113 comparetotmag  -0E-6143 -0        ->  -1
-dqctm1114 comparetotmag   0E-6143  0E+6144   ->  -1
-dqctm1115 comparetotmag   0E-6143 -0E+6144   ->  -1
-dqctm1116 comparetotmag  -0E-6143  0E+6144   ->  -1
-dqctm1117 comparetotmag  -0E-6143 -0E+6144   ->  -1
-dqctm1118 comparetotmag   0       0E+6144   ->  -1
-dqctm1119 comparetotmag   0      -0E+6144   ->  -1
-dqctm1120 comparetotmag  -0       0E+6144   ->  -1
-dqctm1121 comparetotmag  -0      -0E+6144   ->  -1
-
-dqctm1130 comparetotmag   0E+6144  0        ->   1
-dqctm1131 comparetotmag   0E+6144 -0        ->   1
-dqctm1132 comparetotmag  -0E+6144  0        ->   1
-dqctm1133 comparetotmag  -0E+6144 -0        ->   1
-dqctm1134 comparetotmag   0E+6144  0E-6143   ->   1
-dqctm1135 comparetotmag   0E+6144 -0E-6143   ->   1
-dqctm1136 comparetotmag  -0E+6144  0E-6143   ->   1
-dqctm1137 comparetotmag  -0E+6144 -0E-6143   ->   1
-dqctm1138 comparetotmag   0       0E-6143   ->   1
-dqctm1139 comparetotmag   0      -0E-6143   ->   1
-dqctm1140 comparetotmag  -0       0E-6143   ->   1
-dqctm1141 comparetotmag  -0      -0E-6143   ->   1
-
--- Null tests
-dqctm9990 comparetotmag 10  # -> NaN Invalid_operation
-dqctm9991 comparetotmag  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopy.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopy.decTest
deleted file mode 100644
index 7254d68..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopy.decTest
+++ /dev/null
@@ -1,88 +0,0 @@
-------------------------------------------------------------------------
--- dqCopy.decTest -- quiet decQuad copy                               --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- Sanity check
-dqcpy001 copy       +7.50  -> 7.50
-
--- Infinities
-dqcpy011 copy  Infinity    -> Infinity
-dqcpy012 copy  -Infinity   -> -Infinity
-
--- NaNs, 0 payload
-dqcpy021 copy         NaN  -> NaN
-dqcpy022 copy        -NaN  -> -NaN
-dqcpy023 copy        sNaN  -> sNaN
-dqcpy024 copy       -sNaN  -> -sNaN
-
--- NaNs, non-0 payload
-dqcpy031 copy       NaN10  -> NaN10
-dqcpy032 copy      -NaN10  -> -NaN10
-dqcpy033 copy      sNaN10  -> sNaN10
-dqcpy034 copy     -sNaN10  -> -sNaN10
-dqcpy035 copy       NaN7   -> NaN7
-dqcpy036 copy      -NaN7   -> -NaN7
-dqcpy037 copy      sNaN101 -> sNaN101
-dqcpy038 copy     -sNaN101 -> -sNaN101
-
--- finites
-dqcpy101 copy          7   -> 7
-dqcpy102 copy         -7   -> -7
-dqcpy103 copy         75   -> 75
-dqcpy104 copy        -75   -> -75
-dqcpy105 copy       7.50   -> 7.50
-dqcpy106 copy      -7.50   -> -7.50
-dqcpy107 copy       7.500  -> 7.500
-dqcpy108 copy      -7.500  -> -7.500
-
--- zeros
-dqcpy111 copy          0   -> 0
-dqcpy112 copy         -0   -> -0
-dqcpy113 copy       0E+4   -> 0E+4
-dqcpy114 copy      -0E+4   -> -0E+4
-dqcpy115 copy     0.0000   -> 0.0000
-dqcpy116 copy    -0.0000   -> -0.0000
-dqcpy117 copy      0E-141  -> 0E-141
-dqcpy118 copy     -0E-141  -> -0E-141
-
--- full coefficients, alternating bits
-dqcpy121 copy   2682682682682682682682682682682682    ->  2682682682682682682682682682682682
-dqcpy122 copy  -2682682682682682682682682682682682    -> -2682682682682682682682682682682682
-dqcpy123 copy   1341341341341341341341341341341341    ->  1341341341341341341341341341341341
-dqcpy124 copy  -1341341341341341341341341341341341    -> -1341341341341341341341341341341341
-
--- Nmax, Nmin, Ntiny
-dqcpy131 copy  9.999999999999999999999999999999999E+6144   ->  9.999999999999999999999999999999999E+6144
-dqcpy132 copy  1E-6143                                     ->  1E-6143
-dqcpy133 copy  1.000000000000000000000000000000000E-6143   ->  1.000000000000000000000000000000000E-6143
-dqcpy134 copy  1E-6176                                     ->  1E-6176
-
-dqcpy135 copy  -1E-6176                                    -> -1E-6176
-dqcpy136 copy  -1.000000000000000000000000000000000E-6143  -> -1.000000000000000000000000000000000E-6143
-dqcpy137 copy  -1E-6143                                    -> -1E-6143
-dqcpy138 copy  -9.999999999999999999999999999999999E+6144  -> -9.999999999999999999999999999999999E+6144
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopyAbs.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopyAbs.decTest
deleted file mode 100644
index bdec020..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopyAbs.decTest
+++ /dev/null
@@ -1,88 +0,0 @@
-------------------------------------------------------------------------
--- dqCopyAbs.decTest -- quiet decQuad copy and set sign to zero       --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- Sanity check
-dqcpa001 copyabs       +7.50  -> 7.50
-
--- Infinities
-dqcpa011 copyabs  Infinity    -> Infinity
-dqcpa012 copyabs  -Infinity   -> Infinity
-
--- NaNs, 0 payload
-dqcpa021 copyabs         NaN  -> NaN
-dqcpa022 copyabs        -NaN  -> NaN
-dqcpa023 copyabs        sNaN  -> sNaN
-dqcpa024 copyabs       -sNaN  -> sNaN
-
--- NaNs, non-0 payload
-dqcpa031 copyabs       NaN10  -> NaN10
-dqcpa032 copyabs      -NaN15  -> NaN15
-dqcpa033 copyabs      sNaN15  -> sNaN15
-dqcpa034 copyabs     -sNaN10  -> sNaN10
-dqcpa035 copyabs       NaN7   -> NaN7
-dqcpa036 copyabs      -NaN7   -> NaN7
-dqcpa037 copyabs      sNaN101 -> sNaN101
-dqcpa038 copyabs     -sNaN101 -> sNaN101
-
--- finites
-dqcpa101 copyabs          7   -> 7
-dqcpa102 copyabs         -7   -> 7
-dqcpa103 copyabs         75   -> 75
-dqcpa104 copyabs        -75   -> 75
-dqcpa105 copyabs       7.10   -> 7.10
-dqcpa106 copyabs      -7.10   -> 7.10
-dqcpa107 copyabs       7.500  -> 7.500
-dqcpa108 copyabs      -7.500  -> 7.500
-
--- zeros
-dqcpa111 copyabs          0   -> 0
-dqcpa112 copyabs         -0   -> 0
-dqcpa113 copyabs       0E+6   -> 0E+6
-dqcpa114 copyabs      -0E+6   -> 0E+6
-dqcpa115 copyabs     0.0000   -> 0.0000
-dqcpa116 copyabs    -0.0000   -> 0.0000
-dqcpa117 copyabs      0E-141  -> 0E-141
-dqcpa118 copyabs     -0E-141  -> 0E-141
-
--- full coefficients, alternating bits
-dqcpa121 copyabs   2682682682682682682682682682682682    ->  2682682682682682682682682682682682
-dqcpa122 copyabs  -2682682682682682682682682682682682    ->  2682682682682682682682682682682682
-dqcpa123 copyabs   1341341341341341341341341341341341    ->  1341341341341341341341341341341341
-dqcpa124 copyabs  -1341341341341341341341341341341341    ->  1341341341341341341341341341341341
-
--- Nmax, Nmin, Ntiny
-dqcpa131 copyabs  9.999999999999999999999999999999999E+6144   ->  9.999999999999999999999999999999999E+6144
-dqcpa132 copyabs  1E-6143                                     ->  1E-6143
-dqcpa133 copyabs  1.000000000000000000000000000000000E-6143   ->  1.000000000000000000000000000000000E-6143
-dqcpa134 copyabs  1E-6176                                     ->  1E-6176
-
-dqcpa135 copyabs  -1E-6176                                    ->  1E-6176
-dqcpa136 copyabs  -1.000000000000000000000000000000000E-6143  ->  1.000000000000000000000000000000000E-6143
-dqcpa137 copyabs  -1E-6143                                    ->  1E-6143
-dqcpa138 copyabs  -9.999999999999999999999999999999999E+6144  ->  9.999999999999999999999999999999999E+6144
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopyNegate.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopyNegate.decTest
deleted file mode 100644
index ea00855..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopyNegate.decTest
+++ /dev/null
@@ -1,88 +0,0 @@
-------------------------------------------------------------------------
--- dqCopyNegate.decTest -- quiet decQuad copy and negate              --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- Sanity check
-dqcpn001 copynegate       +7.50  -> -7.50
-
--- Infinities
-dqcpn011 copynegate  Infinity    -> -Infinity
-dqcpn012 copynegate  -Infinity   -> Infinity
-
--- NaNs, 0 payload
-dqcpn021 copynegate         NaN  -> -NaN
-dqcpn022 copynegate        -NaN  -> NaN
-dqcpn023 copynegate        sNaN  -> -sNaN
-dqcpn024 copynegate       -sNaN  -> sNaN
-
--- NaNs, non-0 payload
-dqcpn031 copynegate       NaN13  -> -NaN13
-dqcpn032 copynegate      -NaN13  -> NaN13
-dqcpn033 copynegate      sNaN13  -> -sNaN13
-dqcpn034 copynegate     -sNaN13  -> sNaN13
-dqcpn035 copynegate       NaN70  -> -NaN70
-dqcpn036 copynegate      -NaN70  -> NaN70
-dqcpn037 copynegate      sNaN101 -> -sNaN101
-dqcpn038 copynegate     -sNaN101 -> sNaN101
-
--- finites
-dqcpn101 copynegate          7   -> -7
-dqcpn102 copynegate         -7   -> 7
-dqcpn103 copynegate         75   -> -75
-dqcpn104 copynegate        -75   -> 75
-dqcpn105 copynegate       7.50   -> -7.50
-dqcpn106 copynegate      -7.50   -> 7.50
-dqcpn107 copynegate       7.500  -> -7.500
-dqcpn108 copynegate      -7.500  -> 7.500
-
--- zeros
-dqcpn111 copynegate          0   -> -0
-dqcpn112 copynegate         -0   -> 0
-dqcpn113 copynegate       0E+4   -> -0E+4
-dqcpn114 copynegate      -0E+4   -> 0E+4
-dqcpn115 copynegate     0.0000   -> -0.0000
-dqcpn116 copynegate    -0.0000   -> 0.0000
-dqcpn117 copynegate      0E-141  -> -0E-141
-dqcpn118 copynegate     -0E-141  -> 0E-141
-
--- full coefficients, alternating bits
-dqcpn121 copynegate   2682682682682682682682682682682682    -> -2682682682682682682682682682682682
-dqcpn122 copynegate  -2682682682682682682682682682682682    ->  2682682682682682682682682682682682
-dqcpn123 copynegate   1341341341341341341341341341341341    -> -1341341341341341341341341341341341
-dqcpn124 copynegate  -1341341341341341341341341341341341    ->  1341341341341341341341341341341341
-
--- Nmax, Nmin, Ntiny
-dqcpn131 copynegate  9.999999999999999999999999999999999E+6144   -> -9.999999999999999999999999999999999E+6144
-dqcpn132 copynegate  1E-6143                                     -> -1E-6143
-dqcpn133 copynegate  1.000000000000000000000000000000000E-6143   -> -1.000000000000000000000000000000000E-6143
-dqcpn134 copynegate  1E-6176                                     -> -1E-6176
-
-dqcpn135 copynegate  -1E-6176                                    ->  1E-6176
-dqcpn136 copynegate  -1.000000000000000000000000000000000E-6143  ->  1.000000000000000000000000000000000E-6143
-dqcpn137 copynegate  -1E-6143                                    ->  1E-6143
-dqcpn138 copynegate  -9.999999999999999999999999999999999E+6144  ->  9.999999999999999999999999999999999E+6144
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopySign.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopySign.decTest
deleted file mode 100644
index ce794b7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqCopySign.decTest
+++ /dev/null
@@ -1,175 +0,0 @@
-------------------------------------------------------------------------
--- dqCopySign.decTest -- quiet decQuad copy with sign from rhs        --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- Sanity check
-dqcps001 copysign       +7.50     11 -> 7.50
-
--- Infinities
-dqcps011 copysign  Infinity       11 -> Infinity
-dqcps012 copysign  -Infinity      11 -> Infinity
-
--- NaNs, 0 payload
-dqcps021 copysign         NaN     11 -> NaN
-dqcps022 copysign        -NaN     11 -> NaN
-dqcps023 copysign        sNaN     11 -> sNaN
-dqcps024 copysign       -sNaN     11 -> sNaN
-
--- NaNs, non-0 payload
-dqcps031 copysign       NaN10     11 -> NaN10
-dqcps032 copysign      -NaN10     11 -> NaN10
-dqcps033 copysign      sNaN10     11 -> sNaN10
-dqcps034 copysign     -sNaN10     11 -> sNaN10
-dqcps035 copysign       NaN7      11 -> NaN7
-dqcps036 copysign      -NaN7      11 -> NaN7
-dqcps037 copysign      sNaN101    11 -> sNaN101
-dqcps038 copysign     -sNaN101    11 -> sNaN101
-
--- finites
-dqcps101 copysign          7      11 -> 7
-dqcps102 copysign         -7      11 -> 7
-dqcps103 copysign         75      11 -> 75
-dqcps104 copysign        -75      11 -> 75
-dqcps105 copysign       7.50      11 -> 7.50
-dqcps106 copysign      -7.50      11 -> 7.50
-dqcps107 copysign       7.500     11 -> 7.500
-dqcps108 copysign      -7.500     11 -> 7.500
-
--- zeros
-dqcps111 copysign          0      11 -> 0
-dqcps112 copysign         -0      11 -> 0
-dqcps113 copysign       0E+4      11 -> 0E+4
-dqcps114 copysign      -0E+4      11 -> 0E+4
-dqcps115 copysign     0.0000      11 -> 0.0000
-dqcps116 copysign    -0.0000      11 -> 0.0000
-dqcps117 copysign      0E-141     11 -> 0E-141
-dqcps118 copysign     -0E-141     11 -> 0E-141
-
--- full coefficients, alternating bits
-dqcps121 copysign   2682682682682682682682682682682682 8  ->  2682682682682682682682682682682682
-dqcps122 copysign  -2682682682682682682682682682682682 8  ->  2682682682682682682682682682682682
-dqcps123 copysign   1341341341341341341341341341341341 8  ->  1341341341341341341341341341341341
-dqcps124 copysign  -1341341341341341341341341341341341 8  ->  1341341341341341341341341341341341
-
--- Nmax, Nmin, Ntiny
-dqcps131 copysign  9.999999999999999999999999999999999E+6144 8 ->  9.999999999999999999999999999999999E+6144
-dqcps132 copysign  1E-6143                                   8 ->  1E-6143
-dqcps133 copysign  1.000000000000000000000000000000000E-6143 8 ->  1.000000000000000000000000000000000E-6143
-dqcps134 copysign  1E-6176                                   8 ->  1E-6176
-
-dqcps135 copysign  -1E-6176                                   8 ->  1E-6176
-dqcps136 copysign  -1.000000000000000000000000000000000E-6143 8 ->  1.000000000000000000000000000000000E-6143
-dqcps137 copysign  -1E-6143                                   8 ->  1E-6143
-dqcps138 copysign  -9.999999999999999999999999999999999E+6144 8 ->  9.999999999999999999999999999999999E+6144
-
--- repeat with negative RHS
-
--- Infinities
-dqcps211 copysign  Infinity       -34 -> -Infinity
-dqcps212 copysign  -Infinity      -34 -> -Infinity
-
--- NaNs, 0 payload
-dqcps221 copysign         NaN     -34 -> -NaN
-dqcps222 copysign        -NaN     -34 -> -NaN
-dqcps223 copysign        sNaN     -34 -> -sNaN
-dqcps224 copysign       -sNaN     -34 -> -sNaN
-
--- NaNs, non-0 payload
-dqcps231 copysign       NaN10     -34 -> -NaN10
-dqcps232 copysign      -NaN10     -34 -> -NaN10
-dqcps233 copysign      sNaN10     -34 -> -sNaN10
-dqcps234 copysign     -sNaN10     -34 -> -sNaN10
-dqcps235 copysign       NaN7      -34 -> -NaN7
-dqcps236 copysign      -NaN7      -34 -> -NaN7
-dqcps237 copysign      sNaN101    -34 -> -sNaN101
-dqcps238 copysign     -sNaN101    -34 -> -sNaN101
-
--- finites
-dqcps301 copysign          7      -34 -> -7
-dqcps302 copysign         -7      -34 -> -7
-dqcps303 copysign         75      -34 -> -75
-dqcps304 copysign        -75      -34 -> -75
-dqcps305 copysign       7.50      -34 -> -7.50
-dqcps306 copysign      -7.50      -34 -> -7.50
-dqcps307 copysign       7.500     -34 -> -7.500
-dqcps308 copysign      -7.500     -34 -> -7.500
-
--- zeros
-dqcps311 copysign          0      -34 -> -0
-dqcps312 copysign         -0      -34 -> -0
-dqcps313 copysign       0E+4      -34 -> -0E+4
-dqcps314 copysign      -0E+4      -34 -> -0E+4
-dqcps315 copysign     0.0000      -34 -> -0.0000
-dqcps316 copysign    -0.0000      -34 -> -0.0000
-dqcps317 copysign      0E-141     -34 -> -0E-141
-dqcps318 copysign     -0E-141     -34 -> -0E-141
-
--- full coefficients, alternating bits
-dqcps321 copysign   2682682682682682682682682682682682 -9 -> -2682682682682682682682682682682682
-dqcps322 copysign  -2682682682682682682682682682682682 -9 -> -2682682682682682682682682682682682
-dqcps323 copysign   1341341341341341341341341341341341 -9 -> -1341341341341341341341341341341341
-dqcps324 copysign  -1341341341341341341341341341341341 -9 -> -1341341341341341341341341341341341
-
--- Nmax, Nmin, Ntiny
-dqcps331 copysign  9.999999999999999999999999999999999E+6144 -1  -> -9.999999999999999999999999999999999E+6144
-dqcps332 copysign  1E-6143                                   -1  -> -1E-6143
-dqcps333 copysign  1.000000000000000000000000000000000E-6143 -1  -> -1.000000000000000000000000000000000E-6143
-dqcps334 copysign  1E-6176                                   -1  -> -1E-6176
-
-dqcps335 copysign  -1E-6176                                   -3 -> -1E-6176
-dqcps336 copysign  -1.000000000000000000000000000000000E-6143 -3 -> -1.000000000000000000000000000000000E-6143
-dqcps337 copysign  -1E-6143                                   -3 -> -1E-6143
-dqcps338 copysign  -9.999999999999999999999999999999999E+6144 -3 -> -9.999999999999999999999999999999999E+6144
-
--- Other kinds of RHS
-dqcps401 copysign          701    -34 -> -701
-dqcps402 copysign         -720    -34 -> -720
-dqcps403 copysign          701    -0  -> -701
-dqcps404 copysign         -720    -0  -> -720
-dqcps405 copysign          701    +0  ->  701
-dqcps406 copysign         -720    +0  ->  720
-dqcps407 copysign          701    +34 ->  701
-dqcps408 copysign         -720    +34 ->  720
-
-dqcps413 copysign          701    -Inf  -> -701
-dqcps414 copysign         -720    -Inf  -> -720
-dqcps415 copysign          701    +Inf  ->  701
-dqcps416 copysign         -720    +Inf  ->  720
-
-dqcps420 copysign          701    -NaN  -> -701
-dqcps421 copysign         -720    -NaN  -> -720
-dqcps422 copysign          701    +NaN  ->  701
-dqcps423 copysign         -720    +NaN  ->  720
-dqcps425 copysign         -720    +NaN8 ->  720
-
-dqcps426 copysign          701    -sNaN  -> -701
-dqcps427 copysign         -720    -sNaN  -> -720
-dqcps428 copysign          701    +sNaN  ->  701
-dqcps429 copysign         -720    +sNaN  ->  720
-dqcps430 copysign         -720    +sNaN3 ->  720
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqDivide.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqDivide.decTest
deleted file mode 100644
index 3cf60c6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqDivide.decTest
+++ /dev/null
@@ -1,808 +0,0 @@
-------------------------------------------------------------------------
--- dqDivide.decTest -- decQuad division                               --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- sanity checks
-dqdiv001 divide  1     1    ->  1
-dqdiv002 divide  2     1    ->  2
-dqdiv003 divide  1     2    ->  0.5
-dqdiv004 divide  2     2    ->  1
-dqdiv005 divide  0     1    ->  0
-dqdiv006 divide  0     2    ->  0
-dqdiv007 divide  1     3    ->  0.3333333333333333333333333333333333 Inexact Rounded
-dqdiv008 divide  2     3    ->  0.6666666666666666666666666666666667 Inexact Rounded
-dqdiv009 divide  3     3    ->  1
-
-dqdiv010 divide  2.4   1    ->  2.4
-dqdiv011 divide  2.4   -1   ->  -2.4
-dqdiv012 divide  -2.4  1    ->  -2.4
-dqdiv013 divide  -2.4  -1   ->  2.4
-dqdiv014 divide  2.40  1    ->  2.40
-dqdiv015 divide  2.400 1    ->  2.400
-dqdiv016 divide  2.4   2    ->  1.2
-dqdiv017 divide  2.400 2    ->  1.200
-dqdiv018 divide  2.    2    ->  1
-dqdiv019 divide  20    20   ->  1
-
-dqdiv020 divide  187   187    ->  1
-dqdiv021 divide  5     2      ->  2.5
-dqdiv022 divide  50    20     ->  2.5
-dqdiv023 divide  500   200    ->  2.5
-dqdiv024 divide  50.0  20.0   ->  2.5
-dqdiv025 divide  5.00  2.00   ->  2.5
-dqdiv026 divide  5     2.0    ->  2.5
-dqdiv027 divide  5     2.000  ->  2.5
-dqdiv028 divide  5     0.20   ->  25
-dqdiv029 divide  5     0.200  ->  25
-dqdiv030 divide  10    1      ->  10
-dqdiv031 divide  100   1      ->  100
-dqdiv032 divide  1000  1      ->  1000
-dqdiv033 divide  1000  100    ->  10
-
-dqdiv035 divide  1     2      ->  0.5
-dqdiv036 divide  1     4      ->  0.25
-dqdiv037 divide  1     8      ->  0.125
-dqdiv038 divide  1     16     ->  0.0625
-dqdiv039 divide  1     32     ->  0.03125
-dqdiv040 divide  1     64     ->  0.015625
-dqdiv041 divide  1    -2      ->  -0.5
-dqdiv042 divide  1    -4      ->  -0.25
-dqdiv043 divide  1    -8      ->  -0.125
-dqdiv044 divide  1    -16     ->  -0.0625
-dqdiv045 divide  1    -32     ->  -0.03125
-dqdiv046 divide  1    -64     ->  -0.015625
-dqdiv047 divide -1     2      ->  -0.5
-dqdiv048 divide -1     4      ->  -0.25
-dqdiv049 divide -1     8      ->  -0.125
-dqdiv050 divide -1     16     ->  -0.0625
-dqdiv051 divide -1     32     ->  -0.03125
-dqdiv052 divide -1     64     ->  -0.015625
-dqdiv053 divide -1    -2      ->  0.5
-dqdiv054 divide -1    -4      ->  0.25
-dqdiv055 divide -1    -8      ->  0.125
-dqdiv056 divide -1    -16     ->  0.0625
-dqdiv057 divide -1    -32     ->  0.03125
-dqdiv058 divide -1    -64     ->  0.015625
-
--- bcdTime
-dqdiv060 divide  1 7                   -> 0.1428571428571428571428571428571429 Inexact Rounded
-dqdiv061 divide 1.2345678  1.9876543   -> 0.6211179680490717123193907511985359 Inexact Rounded
-
---               1234567890123456
-dqdiv067 divide  9999999999999999999999999999999999  1 ->  9999999999999999999999999999999999
-dqdiv068 divide  999999999999999999999999999999999   1 ->  999999999999999999999999999999999
-dqdiv069 divide  99999999999999999999999999999999    1 ->  99999999999999999999999999999999
-dqdiv070 divide  99999999999999999                   1 ->  99999999999999999
-dqdiv071 divide  9999999999999999                    1 ->  9999999999999999
-dqdiv072 divide  999999999999999                     1 ->  999999999999999
-dqdiv073 divide  99999999999999                      1 ->  99999999999999
-dqdiv074 divide  9999999999999                       1 ->  9999999999999
-dqdiv075 divide  999999999999                        1 ->  999999999999
-dqdiv076 divide  99999999999                         1 ->  99999999999
-dqdiv077 divide  9999999999                          1 ->  9999999999
-dqdiv078 divide  999999999                           1 ->  999999999
-dqdiv079 divide  99999999                            1 ->  99999999
-dqdiv080 divide  9999999                             1 ->  9999999
-dqdiv081 divide  999999                              1 ->  999999
-dqdiv082 divide  99999                               1 ->  99999
-dqdiv083 divide  9999                                1 ->  9999
-dqdiv084 divide  999                                 1 ->  999
-dqdiv085 divide  99                                  1 ->  99
-dqdiv086 divide  9                                   1 ->  9
-
-dqdiv090 divide  0.            1    ->  0
-dqdiv091 divide  .0            1    ->  0.0
-dqdiv092 divide  0.00          1    ->  0.00
-dqdiv093 divide  0.00E+9       1    ->  0E+7
-dqdiv094 divide  0.0000E-50    1    ->  0E-54
-
-dqdiv095 divide  1            1E-8  ->  1E+8
-dqdiv096 divide  1            1E-9  ->  1E+9
-dqdiv097 divide  1            1E-10 ->  1E+10
-dqdiv098 divide  1            1E-11 ->  1E+11
-dqdiv099 divide  1            1E-12 ->  1E+12
-
-dqdiv100 divide  1  1   -> 1
-dqdiv101 divide  1  2   -> 0.5
-dqdiv102 divide  1  3   -> 0.3333333333333333333333333333333333 Inexact Rounded
-dqdiv103 divide  1  4   -> 0.25
-dqdiv104 divide  1  5   -> 0.2
-dqdiv105 divide  1  6   -> 0.1666666666666666666666666666666667 Inexact Rounded
-dqdiv106 divide  1  7   -> 0.1428571428571428571428571428571429 Inexact Rounded
-dqdiv107 divide  1  8   -> 0.125
-dqdiv108 divide  1  9   -> 0.1111111111111111111111111111111111 Inexact Rounded
-dqdiv109 divide  1  10  -> 0.1
-dqdiv110 divide  1  1   -> 1
-dqdiv111 divide  2  1   -> 2
-dqdiv112 divide  3  1   -> 3
-dqdiv113 divide  4  1   -> 4
-dqdiv114 divide  5  1   -> 5
-dqdiv115 divide  6  1   -> 6
-dqdiv116 divide  7  1   -> 7
-dqdiv117 divide  8  1   -> 8
-dqdiv118 divide  9  1   -> 9
-dqdiv119 divide  10 1   -> 10
-
-dqdiv120 divide  3E+1 0.001  -> 3E+4
-dqdiv121 divide  2.200 2     -> 1.100
-
-dqdiv130 divide  12345  4.999  -> 2469.493898779755951190238047609522  Inexact Rounded
-dqdiv131 divide  12345  4.99   -> 2473.947895791583166332665330661323  Inexact Rounded
-dqdiv132 divide  12345  4.9    -> 2519.387755102040816326530612244898  Inexact Rounded
-dqdiv133 divide  12345  5      -> 2469
-dqdiv134 divide  12345  5.1    -> 2420.588235294117647058823529411765  Inexact Rounded
-dqdiv135 divide  12345  5.01   -> 2464.071856287425149700598802395210  Inexact Rounded
-dqdiv136 divide  12345  5.001  -> 2468.506298740251949610077984403119  Inexact Rounded
-
--- test possibly imprecise results
-dqdiv220 divide 391   597 ->  0.6549413735343383584589614740368509  Inexact Rounded
-dqdiv221 divide 391  -597 -> -0.6549413735343383584589614740368509  Inexact Rounded
-dqdiv222 divide -391  597 -> -0.6549413735343383584589614740368509  Inexact Rounded
-dqdiv223 divide -391 -597 ->  0.6549413735343383584589614740368509  Inexact Rounded
-
--- test some cases that are close to exponent overflow
-dqdiv270 divide 1 1e6144                  -> 1E-6144                 Subnormal
-dqdiv271 divide 1 0.9e6144                -> 1.11111111111111111111111111111111E-6144  Rounded Inexact Subnormal Underflow
-dqdiv272 divide 1 0.99e6144               -> 1.01010101010101010101010101010101E-6144  Rounded Inexact Subnormal Underflow
-dqdiv273 divide 1 0.9999999999999999e6144 -> 1.00000000000000010000000000000001E-6144  Rounded Inexact Subnormal Underflow
-dqdiv274 divide 9e6144    1               -> 9.000000000000000000000000000000000E+6144 Clamped
-dqdiv275 divide 9.9e6144  1               -> 9.900000000000000000000000000000000E+6144 Clamped
-dqdiv276 divide 9.99e6144 1               -> 9.990000000000000000000000000000000E+6144 Clamped
-dqdiv277 divide 9.999999999999999e6144 1  -> 9.999999999999999000000000000000000E+6144 Clamped
-
-dqdiv278 divide 1 0.9999999999999999999999999999999999e6144 -> 1.00000000000000000000000000000000E-6144  Rounded Inexact Subnormal Underflow
-dqdiv279 divide 9.999999999999999999999999999999999e6144 1  -> 9.999999999999999999999999999999999E+6144
-
--- Divide into 0 tests
-dqdiv301 divide    0    7     -> 0
-dqdiv302 divide    0    7E-5  -> 0E+5
-dqdiv303 divide    0    7E-1  -> 0E+1
-dqdiv304 divide    0    7E+1  -> 0.0
-dqdiv305 divide    0    7E+5  -> 0.00000
-dqdiv306 divide    0    7E+6  -> 0.000000
-dqdiv307 divide    0    7E+7  -> 0E-7
-dqdiv308 divide    0   70E-5  -> 0E+5
-dqdiv309 divide    0   70E-1  -> 0E+1
-dqdiv310 divide    0   70E+0  -> 0
-dqdiv311 divide    0   70E+1  -> 0.0
-dqdiv312 divide    0   70E+5  -> 0.00000
-dqdiv313 divide    0   70E+6  -> 0.000000
-dqdiv314 divide    0   70E+7  -> 0E-7
-dqdiv315 divide    0  700E-5  -> 0E+5
-dqdiv316 divide    0  700E-1  -> 0E+1
-dqdiv317 divide    0  700E+0  -> 0
-dqdiv318 divide    0  700E+1  -> 0.0
-dqdiv319 divide    0  700E+5  -> 0.00000
-dqdiv320 divide    0  700E+6  -> 0.000000
-dqdiv321 divide    0  700E+7  -> 0E-7
-dqdiv322 divide    0  700E+77 -> 0E-77
-
-dqdiv331 divide 0E-3    7E-5  -> 0E+2
-dqdiv332 divide 0E-3    7E-1  -> 0.00
-dqdiv333 divide 0E-3    7E+1  -> 0.0000
-dqdiv334 divide 0E-3    7E+5  -> 0E-8
-dqdiv335 divide 0E-1    7E-5  -> 0E+4
-dqdiv336 divide 0E-1    7E-1  -> 0
-dqdiv337 divide 0E-1    7E+1  -> 0.00
-dqdiv338 divide 0E-1    7E+5  -> 0.000000
-dqdiv339 divide 0E+1    7E-5  -> 0E+6
-dqdiv340 divide 0E+1    7E-1  -> 0E+2
-dqdiv341 divide 0E+1    7E+1  -> 0
-dqdiv342 divide 0E+1    7E+5  -> 0.0000
-dqdiv343 divide 0E+3    7E-5  -> 0E+8
-dqdiv344 divide 0E+3    7E-1  -> 0E+4
-dqdiv345 divide 0E+3    7E+1  -> 0E+2
-dqdiv346 divide 0E+3    7E+5  -> 0.00
-
--- These were 'input rounding'
-dqdiv441 divide 12345678000 1 -> 12345678000
-dqdiv442 divide 1 12345678000 -> 8.100000664200054464404466081166219E-11 Inexact Rounded
-dqdiv443 divide 1234567800  1 -> 1234567800
-dqdiv444 divide 1 1234567800  -> 8.100000664200054464404466081166219E-10 Inexact Rounded
-dqdiv445 divide 1234567890  1 -> 1234567890
-dqdiv446 divide 1 1234567890  -> 8.100000073710000670761006103925156E-10 Inexact Rounded
-dqdiv447 divide 1234567891  1 -> 1234567891
-dqdiv448 divide 1 1234567891  -> 8.100000067149000556665214614754629E-10 Inexact Rounded
-dqdiv449 divide 12345678901 1 -> 12345678901
-dqdiv450 divide 1 12345678901 -> 8.100000073053900658873130042376760E-11 Inexact Rounded
-dqdiv451 divide 1234567896  1 -> 1234567896
-dqdiv452 divide 1 1234567896  -> 8.100000034344000145618560617422697E-10 Inexact Rounded
-
--- high-lows
-dqdiv453 divide 1e+1   1    ->   1E+1
-dqdiv454 divide 1e+1   1.0  ->   1E+1
-dqdiv455 divide 1e+1   1.00 ->   1E+1
-dqdiv456 divide 1e+2   2    ->   5E+1
-dqdiv457 divide 1e+2   2.0  ->   5E+1
-dqdiv458 divide 1e+2   2.00 ->   5E+1
-
--- some from IEEE discussions
-dqdiv460 divide 3e0      2e0     -> 1.5
-dqdiv461 divide 30e-1    2e0     -> 1.5
-dqdiv462 divide 300e-2   2e0     -> 1.50
-dqdiv464 divide 3000e-3  2e0     -> 1.500
-dqdiv465 divide 3e0      20e-1   -> 1.5
-dqdiv466 divide 30e-1    20e-1   -> 1.5
-dqdiv467 divide 300e-2   20e-1   -> 1.5
-dqdiv468 divide 3000e-3  20e-1   -> 1.50
-dqdiv469 divide 3e0      200e-2  -> 1.5
-dqdiv470 divide 30e-1    200e-2  -> 1.5
-dqdiv471 divide 300e-2   200e-2  -> 1.5
-dqdiv472 divide 3000e-3  200e-2  -> 1.5
-dqdiv473 divide 3e0      2000e-3 -> 1.5
-dqdiv474 divide 30e-1    2000e-3 -> 1.5
-dqdiv475 divide 300e-2   2000e-3 -> 1.5
-dqdiv476 divide 3000e-3  2000e-3 -> 1.5
-
--- some reciprocals
-dqdiv480 divide 1        1.0E+33 -> 1E-33
-dqdiv481 divide 1        10E+33  -> 1E-34
-dqdiv482 divide 1        1.0E-33 -> 1E+33
-dqdiv483 divide 1        10E-33  -> 1E+32
-
--- RMS discussion table
-dqdiv484 divide 0e5     1e3 ->   0E+2
-dqdiv485 divide 0e5     2e3 ->   0E+2
-dqdiv486 divide 0e5    10e2 ->   0E+3
-dqdiv487 divide 0e5    20e2 ->   0E+3
-dqdiv488 divide 0e5   100e1 ->   0E+4
-dqdiv489 divide 0e5   200e1 ->   0E+4
-
-dqdiv491 divide 1e5     1e3 ->   1E+2
-dqdiv492 divide 1e5     2e3 ->   5E+1
-dqdiv493 divide 1e5    10e2 ->   1E+2
-dqdiv494 divide 1e5    20e2 ->   5E+1
-dqdiv495 divide 1e5   100e1 ->   1E+2
-dqdiv496 divide 1e5   200e1 ->   5E+1
-
--- tryzeros cases
-rounding:    half_up
-dqdiv497  divide  0E+6108 1000E-33  -> 0E+6111 Clamped
-dqdiv498  divide  0E-6170 1000E+33  -> 0E-6176 Clamped
-
-rounding:    half_up
-
--- focus on trailing zeros issues
-dqdiv500 divide  1      9.9    ->  0.1010101010101010101010101010101010  Inexact Rounded
-dqdiv501 divide  1      9.09   ->  0.1100110011001100110011001100110011  Inexact Rounded
-dqdiv502 divide  1      9.009  ->  0.1110001110001110001110001110001110  Inexact Rounded
-
-dqdiv511 divide 1         2    -> 0.5
-dqdiv512 divide 1.0       2    -> 0.5
-dqdiv513 divide 1.00      2    -> 0.50
-dqdiv514 divide 1.000     2    -> 0.500
-dqdiv515 divide 1.0000    2    -> 0.5000
-dqdiv516 divide 1.00000   2    -> 0.50000
-dqdiv517 divide 1.000000  2    -> 0.500000
-dqdiv518 divide 1.0000000 2    -> 0.5000000
-dqdiv519 divide 1.00      2.00 -> 0.5
-
-dqdiv521 divide 2    1         -> 2
-dqdiv522 divide 2    1.0       -> 2
-dqdiv523 divide 2    1.00      -> 2
-dqdiv524 divide 2    1.000     -> 2
-dqdiv525 divide 2    1.0000    -> 2
-dqdiv526 divide 2    1.00000   -> 2
-dqdiv527 divide 2    1.000000  -> 2
-dqdiv528 divide 2    1.0000000 -> 2
-dqdiv529 divide 2.00 1.00      -> 2
-
-dqdiv530 divide  2.40   2      ->  1.20
-dqdiv531 divide  2.40   4      ->  0.60
-dqdiv532 divide  2.40  10      ->  0.24
-dqdiv533 divide  2.40   2.0    ->  1.2
-dqdiv534 divide  2.40   4.0    ->  0.6
-dqdiv535 divide  2.40  10.0    ->  0.24
-dqdiv536 divide  2.40   2.00   ->  1.2
-dqdiv537 divide  2.40   4.00   ->  0.6
-dqdiv538 divide  2.40  10.00   ->  0.24
-dqdiv539 divide  0.9    0.1    ->  9
-dqdiv540 divide  0.9    0.01   ->  9E+1
-dqdiv541 divide  0.9    0.001  ->  9E+2
-dqdiv542 divide  5      2      ->  2.5
-dqdiv543 divide  5      2.0    ->  2.5
-dqdiv544 divide  5      2.00   ->  2.5
-dqdiv545 divide  5      20     ->  0.25
-dqdiv546 divide  5      20.0   ->  0.25
-dqdiv547 divide  2.400  2      ->  1.200
-dqdiv548 divide  2.400  2.0    ->  1.20
-dqdiv549 divide  2.400  2.400  ->  1
-
-dqdiv550 divide  240    1      ->  240
-dqdiv551 divide  240    10     ->  24
-dqdiv552 divide  240    100    ->  2.4
-dqdiv553 divide  240    1000   ->  0.24
-dqdiv554 divide  2400   1      ->  2400
-dqdiv555 divide  2400   10     ->  240
-dqdiv556 divide  2400   100    ->  24
-dqdiv557 divide  2400   1000   ->  2.4
-
--- +ve exponent
-dqdiv600 divide  2.4E+9     2  ->  1.2E+9
-dqdiv601 divide  2.40E+9    2  ->  1.20E+9
-dqdiv602 divide  2.400E+9   2  ->  1.200E+9
-dqdiv603 divide  2.4000E+9  2  ->  1.2000E+9
-dqdiv604 divide  24E+8      2  ->  1.2E+9
-dqdiv605 divide  240E+7     2  ->  1.20E+9
-dqdiv606 divide  2400E+6    2  ->  1.200E+9
-dqdiv607 divide  24000E+5   2  ->  1.2000E+9
-
--- more zeros, etc.
-dqdiv731 divide 5.00 1E-3    -> 5.00E+3
-dqdiv732 divide 00.00 0.000  -> NaN Division_undefined
-dqdiv733 divide 00.00 0E-3   -> NaN Division_undefined
-dqdiv734 divide  0    -0     -> NaN Division_undefined
-dqdiv735 divide -0     0     -> NaN Division_undefined
-dqdiv736 divide -0    -0     -> NaN Division_undefined
-
-dqdiv741 divide  0    -1     -> -0
-dqdiv742 divide -0    -1     ->  0
-dqdiv743 divide  0     1     ->  0
-dqdiv744 divide -0     1     -> -0
-dqdiv745 divide -1     0     -> -Infinity Division_by_zero
-dqdiv746 divide -1    -0     ->  Infinity Division_by_zero
-dqdiv747 divide  1     0     ->  Infinity Division_by_zero
-dqdiv748 divide  1    -0     -> -Infinity Division_by_zero
-
-dqdiv751 divide  0.0  -1     -> -0.0
-dqdiv752 divide -0.0  -1     ->  0.0
-dqdiv753 divide  0.0   1     ->  0.0
-dqdiv754 divide -0.0   1     -> -0.0
-dqdiv755 divide -1.0   0     -> -Infinity Division_by_zero
-dqdiv756 divide -1.0  -0     ->  Infinity Division_by_zero
-dqdiv757 divide  1.0   0     ->  Infinity Division_by_zero
-dqdiv758 divide  1.0  -0     -> -Infinity Division_by_zero
-
-dqdiv761 divide  0    -1.0   -> -0E+1
-dqdiv762 divide -0    -1.0   ->  0E+1
-dqdiv763 divide  0     1.0   ->  0E+1
-dqdiv764 divide -0     1.0   -> -0E+1
-dqdiv765 divide -1     0.0   -> -Infinity Division_by_zero
-dqdiv766 divide -1    -0.0   ->  Infinity Division_by_zero
-dqdiv767 divide  1     0.0   ->  Infinity Division_by_zero
-dqdiv768 divide  1    -0.0   -> -Infinity Division_by_zero
-
-dqdiv771 divide  0.0  -1.0   -> -0
-dqdiv772 divide -0.0  -1.0   ->  0
-dqdiv773 divide  0.0   1.0   ->  0
-dqdiv774 divide -0.0   1.0   -> -0
-dqdiv775 divide -1.0   0.0   -> -Infinity Division_by_zero
-dqdiv776 divide -1.0  -0.0   ->  Infinity Division_by_zero
-dqdiv777 divide  1.0   0.0   ->  Infinity Division_by_zero
-dqdiv778 divide  1.0  -0.0   -> -Infinity Division_by_zero
-
--- Specials
-dqdiv780 divide  Inf  -Inf   ->  NaN Invalid_operation
-dqdiv781 divide  Inf  -1000  -> -Infinity
-dqdiv782 divide  Inf  -1     -> -Infinity
-dqdiv783 divide  Inf  -0     -> -Infinity
-dqdiv784 divide  Inf   0     ->  Infinity
-dqdiv785 divide  Inf   1     ->  Infinity
-dqdiv786 divide  Inf   1000  ->  Infinity
-dqdiv787 divide  Inf   Inf   ->  NaN Invalid_operation
-dqdiv788 divide -1000  Inf   -> -0E-6176 Clamped
-dqdiv789 divide -Inf   Inf   ->  NaN Invalid_operation
-dqdiv790 divide -1     Inf   -> -0E-6176 Clamped
-dqdiv791 divide -0     Inf   -> -0E-6176 Clamped
-dqdiv792 divide  0     Inf   ->  0E-6176 Clamped
-dqdiv793 divide  1     Inf   ->  0E-6176 Clamped
-dqdiv794 divide  1000  Inf   ->  0E-6176 Clamped
-dqdiv795 divide  Inf   Inf   ->  NaN Invalid_operation
-
-dqdiv800 divide -Inf  -Inf   ->  NaN Invalid_operation
-dqdiv801 divide -Inf  -1000  ->  Infinity
-dqdiv802 divide -Inf  -1     ->  Infinity
-dqdiv803 divide -Inf  -0     ->  Infinity
-dqdiv804 divide -Inf   0     -> -Infinity
-dqdiv805 divide -Inf   1     -> -Infinity
-dqdiv806 divide -Inf   1000  -> -Infinity
-dqdiv807 divide -Inf   Inf   ->  NaN Invalid_operation
-dqdiv808 divide -1000  Inf   -> -0E-6176 Clamped
-dqdiv809 divide -Inf  -Inf   ->  NaN Invalid_operation
-dqdiv810 divide -1    -Inf   ->  0E-6176 Clamped
-dqdiv811 divide -0    -Inf   ->  0E-6176 Clamped
-dqdiv812 divide  0    -Inf   -> -0E-6176 Clamped
-dqdiv813 divide  1    -Inf   -> -0E-6176 Clamped
-dqdiv814 divide  1000 -Inf   -> -0E-6176 Clamped
-dqdiv815 divide  Inf  -Inf   ->  NaN Invalid_operation
-
-dqdiv821 divide  NaN -Inf    ->  NaN
-dqdiv822 divide  NaN -1000   ->  NaN
-dqdiv823 divide  NaN -1      ->  NaN
-dqdiv824 divide  NaN -0      ->  NaN
-dqdiv825 divide  NaN  0      ->  NaN
-dqdiv826 divide  NaN  1      ->  NaN
-dqdiv827 divide  NaN  1000   ->  NaN
-dqdiv828 divide  NaN  Inf    ->  NaN
-dqdiv829 divide  NaN  NaN    ->  NaN
-dqdiv830 divide -Inf  NaN    ->  NaN
-dqdiv831 divide -1000 NaN    ->  NaN
-dqdiv832 divide -1    NaN    ->  NaN
-dqdiv833 divide -0    NaN    ->  NaN
-dqdiv834 divide  0    NaN    ->  NaN
-dqdiv835 divide  1    NaN    ->  NaN
-dqdiv836 divide  1000 NaN    ->  NaN
-dqdiv837 divide  Inf  NaN    ->  NaN
-
-dqdiv841 divide  sNaN -Inf   ->  NaN  Invalid_operation
-dqdiv842 divide  sNaN -1000  ->  NaN  Invalid_operation
-dqdiv843 divide  sNaN -1     ->  NaN  Invalid_operation
-dqdiv844 divide  sNaN -0     ->  NaN  Invalid_operation
-dqdiv845 divide  sNaN  0     ->  NaN  Invalid_operation
-dqdiv846 divide  sNaN  1     ->  NaN  Invalid_operation
-dqdiv847 divide  sNaN  1000  ->  NaN  Invalid_operation
-dqdiv848 divide  sNaN  NaN   ->  NaN  Invalid_operation
-dqdiv849 divide  sNaN sNaN   ->  NaN  Invalid_operation
-dqdiv850 divide  NaN  sNaN   ->  NaN  Invalid_operation
-dqdiv851 divide -Inf  sNaN   ->  NaN  Invalid_operation
-dqdiv852 divide -1000 sNaN   ->  NaN  Invalid_operation
-dqdiv853 divide -1    sNaN   ->  NaN  Invalid_operation
-dqdiv854 divide -0    sNaN   ->  NaN  Invalid_operation
-dqdiv855 divide  0    sNaN   ->  NaN  Invalid_operation
-dqdiv856 divide  1    sNaN   ->  NaN  Invalid_operation
-dqdiv857 divide  1000 sNaN   ->  NaN  Invalid_operation
-dqdiv858 divide  Inf  sNaN   ->  NaN  Invalid_operation
-dqdiv859 divide  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqdiv861 divide  NaN9 -Inf   ->  NaN9
-dqdiv862 divide  NaN8  1000  ->  NaN8
-dqdiv863 divide  NaN7  Inf   ->  NaN7
-dqdiv864 divide  NaN6  NaN5  ->  NaN6
-dqdiv865 divide -Inf   NaN4  ->  NaN4
-dqdiv866 divide -1000  NaN3  ->  NaN3
-dqdiv867 divide  Inf   NaN2  ->  NaN2
-
-dqdiv871 divide  sNaN99 -Inf    ->  NaN99 Invalid_operation
-dqdiv872 divide  sNaN98 -1      ->  NaN98 Invalid_operation
-dqdiv873 divide  sNaN97  NaN    ->  NaN97 Invalid_operation
-dqdiv874 divide  sNaN96 sNaN94  ->  NaN96 Invalid_operation
-dqdiv875 divide  NaN95  sNaN93  ->  NaN93 Invalid_operation
-dqdiv876 divide -Inf    sNaN92  ->  NaN92 Invalid_operation
-dqdiv877 divide  0      sNaN91  ->  NaN91 Invalid_operation
-dqdiv878 divide  Inf    sNaN90  ->  NaN90 Invalid_operation
-dqdiv879 divide  NaN    sNaN89  ->  NaN89 Invalid_operation
-
-dqdiv881 divide  -NaN9  -Inf   ->  -NaN9
-dqdiv882 divide  -NaN8   1000  ->  -NaN8
-dqdiv883 divide  -NaN7   Inf   ->  -NaN7
-dqdiv884 divide  -NaN6  -NaN5  ->  -NaN6
-dqdiv885 divide  -Inf   -NaN4  ->  -NaN4
-dqdiv886 divide  -1000  -NaN3  ->  -NaN3
-dqdiv887 divide   Inf   -NaN2  ->  -NaN2
-
-dqdiv891 divide -sNaN99 -Inf    -> -NaN99 Invalid_operation
-dqdiv892 divide -sNaN98 -1      -> -NaN98 Invalid_operation
-dqdiv893 divide -sNaN97  NaN    -> -NaN97 Invalid_operation
-dqdiv894 divide -sNaN96 -sNaN94 -> -NaN96 Invalid_operation
-dqdiv895 divide -NaN95  -sNaN93 -> -NaN93 Invalid_operation
-dqdiv896 divide -Inf    -sNaN92 -> -NaN92 Invalid_operation
-dqdiv897 divide  0      -sNaN91 -> -NaN91 Invalid_operation
-dqdiv898 divide  Inf    -sNaN90 -> -NaN90 Invalid_operation
-dqdiv899 divide -NaN    -sNaN89 -> -NaN89 Invalid_operation
-
--- Various flavours of divide by 0
-dqdiv901 divide    0       0   ->  NaN Division_undefined
-dqdiv902 divide    0.0E5   0   ->  NaN Division_undefined
-dqdiv903 divide    0.000   0   ->  NaN Division_undefined
-dqdiv904 divide    0.0001  0   ->  Infinity Division_by_zero
-dqdiv905 divide    0.01    0   ->  Infinity Division_by_zero
-dqdiv906 divide    0.1     0   ->  Infinity Division_by_zero
-dqdiv907 divide    1       0   ->  Infinity Division_by_zero
-dqdiv908 divide    1       0.0 ->  Infinity Division_by_zero
-dqdiv909 divide   10       0.0 ->  Infinity Division_by_zero
-dqdiv910 divide   1E+100   0.0 ->  Infinity Division_by_zero
-dqdiv911 divide   1E+100   0   ->  Infinity Division_by_zero
-
-dqdiv921 divide   -0.0001  0   -> -Infinity Division_by_zero
-dqdiv922 divide   -0.01    0   -> -Infinity Division_by_zero
-dqdiv923 divide   -0.1     0   -> -Infinity Division_by_zero
-dqdiv924 divide   -1       0   -> -Infinity Division_by_zero
-dqdiv925 divide   -1       0.0 -> -Infinity Division_by_zero
-dqdiv926 divide  -10       0.0 -> -Infinity Division_by_zero
-dqdiv927 divide  -1E+100   0.0 -> -Infinity Division_by_zero
-dqdiv928 divide  -1E+100   0   -> -Infinity Division_by_zero
-
-dqdiv931 divide    0.0001 -0   -> -Infinity Division_by_zero
-dqdiv932 divide    0.01   -0   -> -Infinity Division_by_zero
-dqdiv933 divide    0.1    -0   -> -Infinity Division_by_zero
-dqdiv934 divide    1      -0   -> -Infinity Division_by_zero
-dqdiv935 divide    1      -0.0 -> -Infinity Division_by_zero
-dqdiv936 divide   10      -0.0 -> -Infinity Division_by_zero
-dqdiv937 divide   1E+100  -0.0 -> -Infinity Division_by_zero
-dqdiv938 divide   1E+100  -0   -> -Infinity Division_by_zero
-
-dqdiv941 divide   -0.0001 -0   ->  Infinity Division_by_zero
-dqdiv942 divide   -0.01   -0   ->  Infinity Division_by_zero
-dqdiv943 divide   -0.1    -0   ->  Infinity Division_by_zero
-dqdiv944 divide   -1      -0   ->  Infinity Division_by_zero
-dqdiv945 divide   -1      -0.0 ->  Infinity Division_by_zero
-dqdiv946 divide  -10      -0.0 ->  Infinity Division_by_zero
-dqdiv947 divide  -1E+100  -0.0 ->  Infinity Division_by_zero
-dqdiv948 divide  -1E+100  -0   ->  Infinity Division_by_zero
-
--- Examples from SQL proposal (Krishna Kulkarni)
-dqdiv1021  divide 1E0          1E0 -> 1
-dqdiv1022  divide 1E0          2E0 -> 0.5
-dqdiv1023  divide 1E0          3E0 -> 0.3333333333333333333333333333333333 Inexact Rounded
-dqdiv1024  divide 100E-2   1000E-3 -> 1
-dqdiv1025  divide 24E-1        2E0 -> 1.2
-dqdiv1026  divide 2400E-3      2E0 -> 1.200
-dqdiv1027  divide 5E0          2E0 -> 2.5
-dqdiv1028  divide 5E0        20E-1 -> 2.5
-dqdiv1029  divide 5E0      2000E-3 -> 2.5
-dqdiv1030  divide 5E0         2E-1 -> 25
-dqdiv1031  divide 5E0        20E-2 -> 25
-dqdiv1032  divide 480E-2       3E0 -> 1.60
-dqdiv1033  divide 47E-1        2E0 -> 2.35
-
--- ECMAScript bad examples
-rounding:    half_down
-dqdiv1040  divide 5 9  -> 0.5555555555555555555555555555555556 Inexact Rounded
-rounding:    half_even
-dqdiv1041  divide 6 11 -> 0.5454545454545454545454545454545455 Inexact Rounded
-
--- Gyuris example
-dqdiv1050  divide 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 0.9999999999999999999999999999991254 Inexact Rounded
-
--- overflow and underflow tests .. note subnormal results
--- signs
-dqdiv1751 divide  1e+4277  1e-3311 ->  Infinity Overflow Inexact Rounded
-dqdiv1752 divide  1e+4277 -1e-3311 -> -Infinity Overflow Inexact Rounded
-dqdiv1753 divide -1e+4277  1e-3311 -> -Infinity Overflow Inexact Rounded
-dqdiv1754 divide -1e+4277 -1e-3311 ->  Infinity Overflow Inexact Rounded
-dqdiv1755 divide  1e-4277  1e+3311 ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqdiv1756 divide  1e-4277 -1e+3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqdiv1757 divide -1e-4277  1e+3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqdiv1758 divide -1e-4277 -1e+3311 ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped
-
--- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
-dqdiv1760 divide 1e-6069 1e+101 -> 1E-6170 Subnormal
-dqdiv1761 divide 1e-6069 1e+102 -> 1E-6171 Subnormal
-dqdiv1762 divide 1e-6069 1e+103 -> 1E-6172 Subnormal
-dqdiv1763 divide 1e-6069 1e+104 -> 1E-6173 Subnormal
-dqdiv1764 divide 1e-6069 1e+105 -> 1E-6174 Subnormal
-dqdiv1765 divide 1e-6069 1e+106 -> 1E-6175 Subnormal
-dqdiv1766 divide 1e-6069 1e+107 -> 1E-6176 Subnormal
-dqdiv1767 divide 1e-6069 1e+108 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqdiv1768 divide 1e-6069 1e+109 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqdiv1769 divide 1e-6069 1e+110 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
--- [no equivalent of 'subnormal' for overflow]
-dqdiv1770 divide 1e+40 1e-6101 -> 1.000000000000000000000000000000E+6141 Clamped
-dqdiv1771 divide 1e+40 1e-6102 -> 1.0000000000000000000000000000000E+6142  Clamped
-dqdiv1772 divide 1e+40 1e-6103 -> 1.00000000000000000000000000000000E+6143  Clamped
-dqdiv1773 divide 1e+40 1e-6104 -> 1.000000000000000000000000000000000E+6144  Clamped
-dqdiv1774 divide 1e+40 1e-6105 -> Infinity Overflow Inexact Rounded
-dqdiv1775 divide 1e+40 1e-6106 -> Infinity Overflow Inexact Rounded
-dqdiv1776 divide 1e+40 1e-6107 -> Infinity Overflow Inexact Rounded
-dqdiv1777 divide 1e+40 1e-6108 -> Infinity Overflow Inexact Rounded
-dqdiv1778 divide 1e+40 1e-6109 -> Infinity Overflow Inexact Rounded
-dqdiv1779 divide 1e+40 1e-6110 -> Infinity Overflow Inexact Rounded
-
-dqdiv1801 divide  1.0000E-6172  1     -> 1.0000E-6172 Subnormal
-dqdiv1802 divide  1.000E-6172   1e+1  -> 1.000E-6173  Subnormal
-dqdiv1803 divide  1.00E-6172    1e+2  -> 1.00E-6174   Subnormal
-dqdiv1804 divide  1.0E-6172     1e+3  -> 1.0E-6175    Subnormal
-dqdiv1805 divide  1.0E-6172     1e+4  -> 1E-6176     Subnormal Rounded
-dqdiv1806 divide  1.3E-6172     1e+4  -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqdiv1807 divide  1.5E-6172     1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqdiv1808 divide  1.7E-6172     1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqdiv1809 divide  2.3E-6172     1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqdiv1810 divide  2.5E-6172     1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqdiv1811 divide  2.7E-6172     1e+4  -> 3E-6176     Underflow Subnormal Inexact Rounded
-dqdiv1812 divide  1.49E-6172    1e+4  -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqdiv1813 divide  1.50E-6172    1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqdiv1814 divide  1.51E-6172    1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqdiv1815 divide  2.49E-6172    1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqdiv1816 divide  2.50E-6172    1e+4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqdiv1817 divide  2.51E-6172    1e+4  -> 3E-6176     Underflow Subnormal Inexact Rounded
-
-dqdiv1818 divide  1E-6172       1e+4  -> 1E-6176     Subnormal
-dqdiv1819 divide  3E-6172       1e+5  -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
-dqdiv1820 divide  5E-6172       1e+5  -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
-dqdiv1821 divide  7E-6172       1e+5  -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqdiv1822 divide  9E-6172       1e+5  -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqdiv1823 divide  9.9E-6172     1e+5  -> 1E-6176     Underflow Subnormal Inexact Rounded
-
-dqdiv1824 divide  1E-6172      -1e+4  -> -1E-6176    Subnormal
-dqdiv1825 divide  3E-6172      -1e+5  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped
-dqdiv1826 divide -5E-6172       1e+5  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped
-dqdiv1827 divide  7E-6172      -1e+5  -> -1E-6176    Underflow Subnormal Inexact Rounded
-dqdiv1828 divide -9E-6172       1e+5  -> -1E-6176    Underflow Subnormal Inexact Rounded
-dqdiv1829 divide  9.9E-6172    -1e+5  -> -1E-6176    Underflow Subnormal Inexact Rounded
-dqdiv1830 divide  3.0E-6172    -1e+5  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped
-
-dqdiv1831 divide  1.0E-5977     1e+200 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqdiv1832 divide  1.0E-5977     1e+199 -> 1E-6176   Subnormal Rounded
-dqdiv1833 divide  1.0E-5977     1e+198 -> 1.0E-6175 Subnormal
-dqdiv1834 divide  2.0E-5977     2e+198 -> 1.0E-6175 Subnormal
-dqdiv1835 divide  4.0E-5977     4e+198 -> 1.0E-6175 Subnormal
-dqdiv1836 divide 10.0E-5977    10e+198 -> 1.0E-6175 Subnormal
-dqdiv1837 divide 30.0E-5977    30e+198 -> 1.0E-6175 Subnormal
-dqdiv1838 divide 40.0E-5982    40e+166 -> 1.0E-6148 Subnormal
-dqdiv1839 divide 40.0E-5982    40e+165 -> 1.0E-6147 Subnormal
-dqdiv1840 divide 40.0E-5982    40e+164 -> 1.0E-6146 Subnormal
-
--- randoms
-rounding:  half_even
-dqdiv2010  divide  -5231195652931651968034356117118850         -7243718664422548573203260970.34995          ->   722169.9095831284624736051460550680 Inexact Rounded
-dqdiv2011  divide  -89584669773927.82711237350022515352        -42077943728529635884.21142627532985         ->   0.000002129017291146471565928125887527266 Inexact Rounded
-dqdiv2012  divide  -2.828201693360723203806974891946180E-232    812596541221823960386384403089240.9         ->  -3.480450075640521320040055759125120E-265 Inexact Rounded
-dqdiv2013  divide  -6442775372761069267502937539408720          24904085056.69185465145182606089196         ->  -258703556388226463687701.4884719589 Inexact Rounded
-dqdiv2014  divide   5.535520011272625629610079879714705        -44343664650.57203052003068113531208         ->  -1.248322630728089308975940533493562E-10 Inexact Rounded
-dqdiv2015  divide   65919273712517865964325.99419625010        -314733354141381737378622515.7789054         ->  -0.0002094448295521490616379784758911632 Inexact Rounded
-dqdiv2016  divide  -7.779172568193197107115275140431129E+759   -140453015639.3988987652895178782143         ->   5.538629792161641534962774244238115E+748 Inexact Rounded
-dqdiv2017  divide   644314832597569.0181226067518178797        -115024585257425.1635759521565201075         ->  -5.601540150356479257367687450922795 Inexact Rounded
-dqdiv2018  divide   6.898640941579611450676592553286870E-47    -11272429881407851485163914999.25943         ->  -6.119923578285338689371137648319280E-75 Inexact Rounded
-dqdiv2019  divide  -3591344544888727133.30819750163254          5329395.423792795661446561090331037         ->  -673874662941.1968525589460533725290 Inexact Rounded
-dqdiv2020  divide  -7.682356781384631313156462724425838E+747   -6.60375855512219057281922141809940E+703     ->   1.163330960279556016678379128875149E+44 Inexact Rounded
-dqdiv2021  divide  -4511495596596941820863224.274679699         3365395017.263329795449661616090724         ->  -1340554548115304.904166888018346299 Inexact Rounded
-dqdiv2022  divide   5.211164127840931517263639608151299         164.5566381356276567012533847006453         ->   0.03166790587655228864478260157156510 Inexact Rounded
-dqdiv2023  divide  -49891.2243893458830384077684620383         -47179.9312961860747554053371171530          ->   1.057467084386767291602189656430268 Inexact Rounded
-dqdiv2024  divide   15065477.47214268488077415462413353         4366211.120892953261309529740552596         ->   3.450469309661227984244545513441359 Inexact Rounded
-dqdiv2025  divide   1.575670269440761846109602429612644E+370    653199649324740300.006185482643439          ->   2.412233795700359170904588548041481E+352 Inexact Rounded
-dqdiv2026  divide  -2112422311733448924573432192.620145        -80067206.03590693153848215848613406         ->   26383115089417660175.20102646756574 Inexact Rounded
-dqdiv2027  divide  -67096536051279809.32218611548721839        -869685412881941081664251990181.1049         ->   7.715035236584805921278566365231168E-14 Inexact Rounded
-dqdiv2028  divide  -58612908548962047.21866913425488972        -978449597531.3873665583475633831644         ->   59903.86085991703091236507859837023 Inexact Rounded
-dqdiv2029  divide  -133032412010942.1476864138213319796        -7.882059293498670705446528648201359E-428    ->   1.687787506504433064549515681693715E+441 Inexact Rounded
-dqdiv2030  divide   1.83746698338966029492299716360513E+977    -9.897926608979649951672839879128603E+154    ->  -1.856416051542212552042390218062458E+822 Inexact Rounded
-dqdiv2031  divide  -113742475841399236307128962.1507063         8298602.203049834732657567965262989         ->  -13706221006665137826.16557393919929 Inexact Rounded
-dqdiv2032  divide   196.4787574650754152995941808331862         929.6553388472318094427422117172394         ->   0.2113458066176526651006917922814018 Inexact Rounded
-dqdiv2033  divide   71931221465.43867996282803628130350         3838685934206426257090718.402248853         ->   1.873850132527423413607199513324021E-14 Inexact Rounded
-dqdiv2034  divide   488.4282502289651653783596246312885        -80.68940956806634280078706577953188         ->  -6.053189047280693318844801899473272 Inexact Rounded
-dqdiv2035  divide   9.001764344963921754981762913247394E-162   -8.585540973667205753734967645386919E-729    ->  -1.048479574271827326396012573232934E+567 Inexact Rounded
-dqdiv2036  divide  -7.404133959409894743706402857145471E-828   -51.38159929460289711134684843086265         ->   1.441008855516029461032061785219773E-829 Inexact Rounded
-dqdiv2037  divide   2.967520235574419794048994436040717E-613   -6252513855.91394894949879262731889          ->  -4.746123405656409127572998751885338E-623 Inexact Rounded
-dqdiv2038  divide  -18826852654824040505.83920366765051        -6336924877942437992590557460147340          ->   2.970976146546494669807886278519194E-15 Inexact Rounded
-dqdiv2039  divide  -8.101406784809197604949584001735949E+561    4.823300306948942821076681658771635E+361    ->  -1.679639721610839204738445747238987E+200 Inexact Rounded
-dqdiv2040  divide  -6.11981977773094052331062585191723E+295     1.507610253755339328302779005586534E+238    ->  -4.059285058911577244044418416044763E+57 Inexact Rounded
-dqdiv2041  divide   6.472638850046815880599220534274055E-596   -4.475233712083047516933911786159972         ->  -1.446324207062261745520496475778879E-596 Inexact Rounded
-dqdiv2042  divide  -84438593330.71277839631144509397112        -586684596204401664208947.4054879633         ->   1.439250218550041228759983937772504E-13 Inexact Rounded
-dqdiv2043  divide   9.354533233294022616695815656704369E-24     405.500390626135304252144163591746          ->   2.306911028827774549740571229736198E-26 Inexact Rounded
-dqdiv2044  divide   985606423350210.7374876650149957881        -36811563697.41925681866694859828794         ->  -26774.36990864119445335813354717711 Inexact Rounded
-dqdiv2045  divide  -8.187280774177715706278002247766311E-123   -38784124393.91212870828430001300068         ->   2.110987653356139147357240727794365E-133 Inexact Rounded
-dqdiv2046  divide  -4.612203126350070903459245798371657E+912    7.971562182727956290901984736800519E+64     ->  -5.785820922708683237098826662769748E+847 Inexact Rounded
-dqdiv2047  divide   4.661015909421485298247928967977089E+888   -6.360911253323922338737311563845581E+388    ->  -7.327591478321365980156654539638836E+499 Inexact Rounded
-dqdiv2048  divide   9156078172903.257500003260710833030         7.189796653262147139071634237964074E-90     ->   1.273482215766000994365201545096026E+102 Inexact Rounded
-dqdiv2049  divide  -1.710722303327476586373477781276586E-311   -3167561628260156837329323.729380695         ->   5.400754599578613984875752958645655E-336 Inexact Rounded
-dqdiv2050  divide  -4.647935210881806238321616345413021E-878    209388.5431867744648177308460639582         ->  -2.219765771394593733140494297388140E-883 Inexact Rounded
-dqdiv2051  divide   5958.694728395760992719084781582700         4.541510156564315632536353171846096E-746    ->   1.312051393253638664947852693005480E+749 Inexact Rounded
-dqdiv2052  divide  -7.935732544649702175256699886872093E-489   -7.433329073664793138998765647467971E+360    ->   1.067587949626076917672271619664656E-849 Inexact Rounded
-dqdiv2053  divide  -2746650864601157.863589959939901350         7.016684945507647528907184694359598E+548    ->  -3.914456593009309529351254950429932E-534 Inexact Rounded
-dqdiv2054  divide   3605149408631197365447953.994569178        -75614025825649082.78264864428237833         ->  -47678315.88472693507060063188020532 Inexact Rounded
-dqdiv2055  divide   788194320921798404906375214.196349         -6.222718148433247384932573401976337E-418    ->  -1.266639918634671803982222244977287E+444 Inexact Rounded
-dqdiv2056  divide   5620722730534752.758208943447603211         6.843552841168538319123000917657759E-139    ->   8.213164800485434666629970443739554E+153 Inexact Rounded
-dqdiv2057  divide   7304534676713703938102.403949019402        -576169.3685010935108153023803590835         ->  -12677756014201995.31969237144394772 Inexact Rounded
-dqdiv2058  divide   8067918762.134621639254916786945547        -8.774771480055536009105596163864758E+954    ->  -9.194448858836332156766764605125245E-946 Inexact Rounded
-dqdiv2059  divide   8.702093454123046507578256899537563E-324   -5.875399733016018404580201176576293E-401    ->  -1.481106622452052581470443526957335E+77 Inexact Rounded
-dqdiv2060  divide  -41426.01662518451861386352415092356         90.00146621684478300510769802013464         ->  -460.2815750287318692732067709176200 Inexact Rounded
-
--- random divide tests with result near 1
-dqdiv4001 divide  2003100352770753969878925664524900   2003100352770753969878925664497824  ->  1.000000000000000000000000000013517  Inexact Rounded
-dqdiv4002 divide  4817785793916490652579552318371645   4817785793916490652579552318362097  ->  1.000000000000000000000000000001982  Inexact Rounded
-dqdiv4003 divide  8299187410920067325648068439560282   8299187410920067325648068439591159  ->  0.9999999999999999999999999999962795  Inexact Rounded
-dqdiv4004 divide  5641088455897407044544461785365899   5641088455897407044544461785389965  ->  0.9999999999999999999999999999957338  Inexact Rounded
-dqdiv4005 divide  5752274694706545359326361313490424   5752274694706545359326361313502723  ->  0.9999999999999999999999999999978619  Inexact Rounded
-dqdiv4006 divide  6762079477373670594829319346099665   6762079477373670594829319346132579  ->  0.9999999999999999999999999999951326  Inexact Rounded
-dqdiv4007 divide  7286425153691890341633023222602916   7286425153691890341633023222606556  ->  0.9999999999999999999999999999995004  Inexact Rounded
-dqdiv4008 divide  9481233991901305727648306421946655   9481233991901305727648306421919124  ->  1.000000000000000000000000000002904  Inexact Rounded
-dqdiv4009 divide  4282053941893951742029444065614311   4282053941893951742029444065583077  ->  1.000000000000000000000000000007294  Inexact Rounded
-dqdiv4010 divide   626888225441250639741781850338695    626888225441250639741781850327299  ->  1.000000000000000000000000000018179  Inexact Rounded
-dqdiv4011 divide  3860973649222028009456598604468547   3860973649222028009456598604476849  ->  0.9999999999999999999999999999978498  Inexact Rounded
-dqdiv4012 divide  4753157080127468127908060607821839   4753157080127468127908060607788379  ->  1.000000000000000000000000000007040  Inexact Rounded
-dqdiv4013 divide   552448546203754062805706277880419    552448546203754062805706277881903  ->  0.9999999999999999999999999999973138  Inexact Rounded
-dqdiv4014 divide  8405954527952158455323713728917395   8405954527952158455323713728933866  ->  0.9999999999999999999999999999980406  Inexact Rounded
-dqdiv4015 divide  7554096502235321142555802238016116   7554096502235321142555802238026546  ->  0.9999999999999999999999999999986193  Inexact Rounded
-dqdiv4016 divide  4053257674127518606871054934746782   4053257674127518606871054934767355  ->  0.9999999999999999999999999999949243  Inexact Rounded
-dqdiv4017 divide  7112419420755090454716888844011582   7112419420755090454716888844038105  ->  0.9999999999999999999999999999962709  Inexact Rounded
-dqdiv4018 divide  3132302137520072728164549730911846   3132302137520072728164549730908416  ->  1.000000000000000000000000000001095  Inexact Rounded
-dqdiv4019 divide  4788374045841416355706715048161013   4788374045841416355706715048190077  ->  0.9999999999999999999999999999939303  Inexact Rounded
-dqdiv4020 divide  9466021636047630218238075099510597   9466021636047630218238075099484053  ->  1.000000000000000000000000000002804  Inexact Rounded
-dqdiv4021 divide   912742745646765625597399692138650    912742745646765625597399692139042  ->  0.9999999999999999999999999999995705  Inexact Rounded
-dqdiv4022 divide  9508402742933643208806264897188504   9508402742933643208806264897195973  ->  0.9999999999999999999999999999992145  Inexact Rounded
-dqdiv4023 divide  1186956795727233704962361914360895   1186956795727233704962361914329577  ->  1.000000000000000000000000000026385  Inexact Rounded
-dqdiv4024 divide  5972210268839014812696916170967938   5972210268839014812696916170954974  ->  1.000000000000000000000000000002171  Inexact Rounded
-dqdiv4025 divide  2303801625521619930894460139793140   2303801625521619930894460139799643  ->  0.9999999999999999999999999999971773  Inexact Rounded
-dqdiv4026 divide  6022231560002898264777393473966595   6022231560002898264777393473947198  ->  1.000000000000000000000000000003221  Inexact Rounded
-dqdiv4027 divide  8426148335801396199969346032210893   8426148335801396199969346032203179  ->  1.000000000000000000000000000000915  Inexact Rounded
-dqdiv4028 divide  8812278947028784637382847098411749   8812278947028784637382847098385317  ->  1.000000000000000000000000000002999  Inexact Rounded
-dqdiv4029 divide  8145282002348367383264197170116146   8145282002348367383264197170083988  ->  1.000000000000000000000000000003948  Inexact Rounded
-dqdiv4030 divide  6821577571876840153123510107387026   6821577571876840153123510107418008  ->  0.9999999999999999999999999999954582  Inexact Rounded
-dqdiv4031 divide  9018555319518966970480565482023720   9018555319518966970480565482013346  ->  1.000000000000000000000000000001150  Inexact Rounded
-dqdiv4032 divide  4602155712998228449640717252788864   4602155712998228449640717252818502  ->  0.9999999999999999999999999999935600  Inexact Rounded
-dqdiv4033 divide  6675607481522785614506828292264472   6675607481522785614506828292277100  ->  0.9999999999999999999999999999981083  Inexact Rounded
-dqdiv4034 divide  4015881516871833897766945836264472   4015881516871833897766945836262645  ->  1.000000000000000000000000000000455  Inexact Rounded
-dqdiv4035 divide  1415580205933411837595459716910365   1415580205933411837595459716880139  ->  1.000000000000000000000000000021352  Inexact Rounded
-dqdiv4036 divide  9432968297069542816752035276361552   9432968297069542816752035276353054  ->  1.000000000000000000000000000000901  Inexact Rounded
-dqdiv4037 divide  4799319591303848500532766682140658   4799319591303848500532766682172655  ->  0.9999999999999999999999999999933330  Inexact Rounded
-dqdiv4038 divide   316854270732839529790584284987472    316854270732839529790584285004832  ->  0.9999999999999999999999999999452114  Inexact Rounded
-dqdiv4039 divide  3598981300592490427826027975697415   3598981300592490427826027975686712  ->  1.000000000000000000000000000002974  Inexact Rounded
-dqdiv4040 divide  1664315435694461371155800682196520   1664315435694461371155800682195617  ->  1.000000000000000000000000000000543  Inexact Rounded
-dqdiv4041 divide  1680872316531128890102855316510581   1680872316531128890102855316495545  ->  1.000000000000000000000000000008945  Inexact Rounded
-dqdiv4042 divide  9881274879566405475755499281644730   9881274879566405475755499281615743  ->  1.000000000000000000000000000002934  Inexact Rounded
-dqdiv4043 divide  4737225957717466960447204232279216   4737225957717466960447204232277452  ->  1.000000000000000000000000000000372  Inexact Rounded
-dqdiv4044 divide  2482097379414867061213319346418288   2482097379414867061213319346387936  ->  1.000000000000000000000000000012228  Inexact Rounded
-dqdiv4045 divide  7406977595233762723576434122161868   7406977595233762723576434122189042  ->  0.9999999999999999999999999999963313  Inexact Rounded
-dqdiv4046 divide   228782057757566047086593281773577    228782057757566047086593281769727  ->  1.000000000000000000000000000016828  Inexact Rounded
-dqdiv4047 divide  2956594270240579648823270540367653   2956594270240579648823270540368556  ->  0.9999999999999999999999999999996946  Inexact Rounded
-dqdiv4048 divide  6326964098897620620534136767634340   6326964098897620620534136767619339  ->  1.000000000000000000000000000002371  Inexact Rounded
-dqdiv4049 divide   414586440456590215247002678327800    414586440456590215247002678316922  ->  1.000000000000000000000000000026238  Inexact Rounded
-dqdiv4050 divide  7364552208570039386220505636779125   7364552208570039386220505636803548  ->  0.9999999999999999999999999999966837  Inexact Rounded
-dqdiv4051 divide  5626266749902369710022824950590056   5626266749902369710022824950591008  ->  0.9999999999999999999999999999998308  Inexact Rounded
-dqdiv4052 divide  4863278293916197454987481343460484   4863278293916197454987481343442522  ->  1.000000000000000000000000000003693  Inexact Rounded
-dqdiv4053 divide  1170713582030637359713249796835483   1170713582030637359713249796823345  ->  1.000000000000000000000000000010368  Inexact Rounded
-dqdiv4054 divide  9838062494725965667776326556052931   9838062494725965667776326556061002  ->  0.9999999999999999999999999999991796  Inexact Rounded
-dqdiv4055 divide  4071388731298861093005687091498922   4071388731298861093005687091498278  ->  1.000000000000000000000000000000158  Inexact Rounded
-dqdiv4056 divide  8753155722324706795855038590272526   8753155722324706795855038590276656  ->  0.9999999999999999999999999999995282  Inexact Rounded
-dqdiv4057 divide  4399941911533273418844742658240485   4399941911533273418844742658219891  ->  1.000000000000000000000000000004681  Inexact Rounded
-dqdiv4058 divide  4127884159949503677776430620050269   4127884159949503677776430620026091  ->  1.000000000000000000000000000005857  Inexact Rounded
-dqdiv4059 divide  5536160822360800067042528317438808   5536160822360800067042528317450687  ->  0.9999999999999999999999999999978543  Inexact Rounded
-dqdiv4060 divide  3973234998468664936671088237710246   3973234998468664936671088237741886  ->  0.9999999999999999999999999999920367  Inexact Rounded
-dqdiv4061 divide  9824855935638263593410444142327358   9824855935638263593410444142328576  ->  0.9999999999999999999999999999998760  Inexact Rounded
-dqdiv4062 divide  5917078517340218131867327300814867   5917078517340218131867327300788701  ->  1.000000000000000000000000000004422  Inexact Rounded
-dqdiv4063 divide  4354236601830544882286139612521362   4354236601830544882286139612543223  ->  0.9999999999999999999999999999949794  Inexact Rounded
-dqdiv4064 divide  8058474772375259017342110013891294   8058474772375259017342110013906792  ->  0.9999999999999999999999999999980768  Inexact Rounded
-dqdiv4065 divide  5519604020981748170517093746166328   5519604020981748170517093746181763  ->  0.9999999999999999999999999999972036  Inexact Rounded
-dqdiv4066 divide  1502130966879805458831323782443139   1502130966879805458831323782412213  ->  1.000000000000000000000000000020588  Inexact Rounded
-dqdiv4067 divide   562795633719481212915159787980270    562795633719481212915159788007066  ->  0.9999999999999999999999999999523877  Inexact Rounded
-dqdiv4068 divide  6584743324494664273941281557268878   6584743324494664273941281557258945  ->  1.000000000000000000000000000001508  Inexact Rounded
-dqdiv4069 divide  3632000327285743997976431109416500   3632000327285743997976431109408107  ->  1.000000000000000000000000000002311  Inexact Rounded
-dqdiv4070 divide  1145827237315430089388953838561450   1145827237315430089388953838527332  ->  1.000000000000000000000000000029776  Inexact Rounded
-dqdiv4071 divide  8874431010357691869725372317350380   8874431010357691869725372317316472  ->  1.000000000000000000000000000003821  Inexact Rounded
-dqdiv4072 divide   992948718902804648119753141202196    992948718902804648119753141235222  ->  0.9999999999999999999999999999667395  Inexact Rounded
-dqdiv4073 divide  2522735183374218505142417265439989   2522735183374218505142417265453779  ->  0.9999999999999999999999999999945337  Inexact Rounded
-dqdiv4074 divide  2668419161912936508006872303501052   2668419161912936508006872303471036  ->  1.000000000000000000000000000011249  Inexact Rounded
-dqdiv4075 divide  3036169085665186712590941111775092   3036169085665186712590941111808846  ->  0.9999999999999999999999999999888827  Inexact Rounded
-dqdiv4076 divide  9441634604917231638508898934006147   9441634604917231638508898934000288  ->  1.000000000000000000000000000000621  Inexact Rounded
-dqdiv4077 divide  2677301353164377091111458811839190   2677301353164377091111458811867722  ->  0.9999999999999999999999999999893430  Inexact Rounded
-dqdiv4078 divide  6844979203112066166583765857171426   6844979203112066166583765857189682  ->  0.9999999999999999999999999999973329  Inexact Rounded
-dqdiv4079 divide  2220337435141796724323783960231661   2220337435141796724323783960208778  ->  1.000000000000000000000000000010306  Inexact Rounded
-dqdiv4080 divide  6447424700019783931569996989561380   6447424700019783931569996989572454  ->  0.9999999999999999999999999999982824  Inexact Rounded
-dqdiv4081 divide  7512856762696607119847092195587180   7512856762696607119847092195557346  ->  1.000000000000000000000000000003971  Inexact Rounded
-dqdiv4082 divide  7395261981193960399087819077237482   7395261981193960399087819077242487  ->  0.9999999999999999999999999999993232  Inexact Rounded
-dqdiv4083 divide  2253442467682584035792724884376735   2253442467682584035792724884407178  ->  0.9999999999999999999999999999864904  Inexact Rounded
-dqdiv4084 divide  8153138680300213135577336466190997   8153138680300213135577336466220607  ->  0.9999999999999999999999999999963683  Inexact Rounded
-dqdiv4085 divide  4668731252254148074041022681801390   4668731252254148074041022681778101  ->  1.000000000000000000000000000004988  Inexact Rounded
-dqdiv4086 divide  6078404557993669696040425501815056   6078404557993669696040425501797612  ->  1.000000000000000000000000000002870  Inexact Rounded
-dqdiv4087 divide  2306352359874261623223356878316278   2306352359874261623223356878335612  ->  0.9999999999999999999999999999916171  Inexact Rounded
-dqdiv4088 divide  3264842186668480362900909564091908   3264842186668480362900909564058658  ->  1.000000000000000000000000000010184  Inexact Rounded
-dqdiv4089 divide  6971985047279636878957959608612204   6971985047279636878957959608615088  ->  0.9999999999999999999999999999995863  Inexact Rounded
-dqdiv4090 divide  5262810889952721235466445973816257   5262810889952721235466445973783077  ->  1.000000000000000000000000000006305  Inexact Rounded
-dqdiv4091 divide  7947944731035267178548357070080288   7947944731035267178548357070061339  ->  1.000000000000000000000000000002384  Inexact Rounded
-dqdiv4092 divide  5071808908395375108383035800443229   5071808908395375108383035800412429  ->  1.000000000000000000000000000006073  Inexact Rounded
-dqdiv4093 divide  2043146542084503655511507209262969   2043146542084503655511507209249263  ->  1.000000000000000000000000000006708  Inexact Rounded
-dqdiv4094 divide  4097632735384534181661959731264802   4097632735384534181661959731234499  ->  1.000000000000000000000000000007395  Inexact Rounded
-dqdiv4095 divide  3061477642831387489729464587044430   3061477642831387489729464587059452  ->  0.9999999999999999999999999999950932  Inexact Rounded
-dqdiv4096 divide  3429854941039776159498802936252638   3429854941039776159498802936246415  ->  1.000000000000000000000000000001814  Inexact Rounded
-dqdiv4097 divide  4874324979578599700024133278284545   4874324979578599700024133278262131  ->  1.000000000000000000000000000004598  Inexact Rounded
-dqdiv4098 divide  5701652369691833541455978515820882   5701652369691833541455978515834854  ->  0.9999999999999999999999999999975495  Inexact Rounded
-dqdiv4099 divide  2928205728402945266953255632343113   2928205728402945266953255632373794  ->  0.9999999999999999999999999999895223  Inexact Rounded
-
--- Null tests
-dqdiv9998 divide 10  # -> NaN Invalid_operation
-dqdiv9999 divide  # 10 -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqDivideInt.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqDivideInt.decTest
deleted file mode 100644
index 3fec6db..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqDivideInt.decTest
+++ /dev/null
@@ -1,453 +0,0 @@
-------------------------------------------------------------------------
--- dqDivideInt.decTest -- decQuad integer division                    --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
-
-dqdvi001 divideint  1     1    ->  1
-dqdvi002 divideint  2     1    ->  2
-dqdvi003 divideint  1     2    ->  0
-dqdvi004 divideint  2     2    ->  1
-dqdvi005 divideint  0     1    ->  0
-dqdvi006 divideint  0     2    ->  0
-dqdvi007 divideint  1     3    ->  0
-dqdvi008 divideint  2     3    ->  0
-dqdvi009 divideint  3     3    ->  1
-
-dqdvi010 divideint  2.4   1    ->  2
-dqdvi011 divideint  2.4   -1   ->  -2
-dqdvi012 divideint  -2.4  1    ->  -2
-dqdvi013 divideint  -2.4  -1   ->  2
-dqdvi014 divideint  2.40  1    ->  2
-dqdvi015 divideint  2.400 1    ->  2
-dqdvi016 divideint  2.4   2    ->  1
-dqdvi017 divideint  2.400 2    ->  1
-dqdvi018 divideint  2.    2    ->  1
-dqdvi019 divideint  20    20   ->  1
-
-dqdvi020 divideint  187   187  ->  1
-dqdvi021 divideint  5     2    ->  2
-dqdvi022 divideint  5     2.0    ->  2
-dqdvi023 divideint  5     2.000  ->  2
-dqdvi024 divideint  5     0.200  ->  25
-dqdvi025 divideint  5     0.200  ->  25
-
-dqdvi030 divideint  1     2      ->  0
-dqdvi031 divideint  1     4      ->  0
-dqdvi032 divideint  1     8      ->  0
-dqdvi033 divideint  1     16     ->  0
-dqdvi034 divideint  1     32     ->  0
-dqdvi035 divideint  1     64     ->  0
-dqdvi040 divideint  1    -2      -> -0
-dqdvi041 divideint  1    -4      -> -0
-dqdvi042 divideint  1    -8      -> -0
-dqdvi043 divideint  1    -16     -> -0
-dqdvi044 divideint  1    -32     -> -0
-dqdvi045 divideint  1    -64     -> -0
-dqdvi050 divideint -1     2      -> -0
-dqdvi051 divideint -1     4      -> -0
-dqdvi052 divideint -1     8      -> -0
-dqdvi053 divideint -1     16     -> -0
-dqdvi054 divideint -1     32     -> -0
-dqdvi055 divideint -1     64     -> -0
-dqdvi060 divideint -1    -2      ->  0
-dqdvi061 divideint -1    -4      ->  0
-dqdvi062 divideint -1    -8      ->  0
-dqdvi063 divideint -1    -16     ->  0
-dqdvi064 divideint -1    -32     ->  0
-dqdvi065 divideint -1    -64     ->  0
-
--- similar with powers of ten
-dqdvi160 divideint  1     1         ->  1
-dqdvi161 divideint  1     10        ->  0
-dqdvi162 divideint  1     100       ->  0
-dqdvi163 divideint  1     1000      ->  0
-dqdvi164 divideint  1     10000     ->  0
-dqdvi165 divideint  1     100000    ->  0
-dqdvi166 divideint  1     1000000   ->  0
-dqdvi167 divideint  1     10000000  ->  0
-dqdvi168 divideint  1     100000000 ->  0
-dqdvi170 divideint  1    -1         -> -1
-dqdvi171 divideint  1    -10        -> -0
-dqdvi172 divideint  1    -100       -> -0
-dqdvi173 divideint  1    -1000      -> -0
-dqdvi174 divideint  1    -10000     -> -0
-dqdvi175 divideint  1    -100000    -> -0
-dqdvi176 divideint  1    -1000000   -> -0
-dqdvi177 divideint  1    -10000000  -> -0
-dqdvi178 divideint  1    -100000000 -> -0
-dqdvi180 divideint -1     1         -> -1
-dqdvi181 divideint -1     10        -> -0
-dqdvi182 divideint -1     100       -> -0
-dqdvi183 divideint -1     1000      -> -0
-dqdvi184 divideint -1     10000     -> -0
-dqdvi185 divideint -1     100000    -> -0
-dqdvi186 divideint -1     1000000   -> -0
-dqdvi187 divideint -1     10000000  -> -0
-dqdvi188 divideint -1     100000000 -> -0
-dqdvi190 divideint -1    -1         ->  1
-dqdvi191 divideint -1    -10        ->  0
-dqdvi192 divideint -1    -100       ->  0
-dqdvi193 divideint -1    -1000      ->  0
-dqdvi194 divideint -1    -10000     ->  0
-dqdvi195 divideint -1    -100000    ->  0
-dqdvi196 divideint -1    -1000000   ->  0
-dqdvi197 divideint -1    -10000000  ->  0
-dqdvi198 divideint -1    -100000000 ->  0
-
--- some long operand (at p=9) cases
-dqdvi070 divideint  999999999     1  ->  999999999
-dqdvi071 divideint  999999999.4   1  ->  999999999
-dqdvi072 divideint  999999999.5   1  ->  999999999
-dqdvi073 divideint  999999999.9   1  ->  999999999
-dqdvi074 divideint  999999999.999 1  ->  999999999
-
-dqdvi090 divideint  0.            1    ->  0
-dqdvi091 divideint  .0            1    ->  0
-dqdvi092 divideint  0.00          1    ->  0
-dqdvi093 divideint  0.00E+9       1    ->  0
-dqdvi094 divideint  0.0000E-50    1    ->  0
-
-dqdvi100 divideint  1  1   -> 1
-dqdvi101 divideint  1  2   -> 0
-dqdvi102 divideint  1  3   -> 0
-dqdvi103 divideint  1  4   -> 0
-dqdvi104 divideint  1  5   -> 0
-dqdvi105 divideint  1  6   -> 0
-dqdvi106 divideint  1  7   -> 0
-dqdvi107 divideint  1  8   -> 0
-dqdvi108 divideint  1  9   -> 0
-dqdvi109 divideint  1  10  -> 0
-dqdvi110 divideint  1  1   -> 1
-dqdvi111 divideint  2  1   -> 2
-dqdvi112 divideint  3  1   -> 3
-dqdvi113 divideint  4  1   -> 4
-dqdvi114 divideint  5  1   -> 5
-dqdvi115 divideint  6  1   -> 6
-dqdvi116 divideint  7  1   -> 7
-dqdvi117 divideint  8  1   -> 8
-dqdvi118 divideint  9  1   -> 9
-dqdvi119 divideint  10 1   -> 10
-
--- from DiagBigDecimal
-dqdvi131 divideint  101.3   1     ->  101
-dqdvi132 divideint  101.0   1     ->  101
-dqdvi133 divideint  101.3   3     ->  33
-dqdvi134 divideint  101.0   3     ->  33
-dqdvi135 divideint  2.4     1     ->  2
-dqdvi136 divideint  2.400   1     ->  2
-dqdvi137 divideint  18      18    ->  1
-dqdvi138 divideint  1120    1000  ->  1
-dqdvi139 divideint  2.4     2     ->  1
-dqdvi140 divideint  2.400   2     ->  1
-dqdvi141 divideint  0.5     2.000 ->  0
-dqdvi142 divideint  8.005   7     ->  1
-dqdvi143 divideint  5       2     ->  2
-dqdvi144 divideint  0       2     ->  0
-dqdvi145 divideint  0.00    2     ->  0
-
--- Others
-dqdvi150 divideint  12345  4.999  ->  2469
-dqdvi151 divideint  12345  4.99   ->  2473
-dqdvi152 divideint  12345  4.9    ->  2519
-dqdvi153 divideint  12345  5      ->  2469
-dqdvi154 divideint  12345  5.1    ->  2420
-dqdvi155 divideint  12345  5.01   ->  2464
-dqdvi156 divideint  12345  5.001  ->  2468
-dqdvi157 divideint    101  7.6    ->  13
-
--- Various flavours of divideint by 0
-dqdvi201 divideint  0      0   -> NaN Division_undefined
-dqdvi202 divideint  0.0E5  0   -> NaN Division_undefined
-dqdvi203 divideint  0.000  0   -> NaN Division_undefined
-dqdvi204 divideint  0.0001 0   -> Infinity Division_by_zero
-dqdvi205 divideint  0.01   0   -> Infinity Division_by_zero
-dqdvi206 divideint  0.1    0   -> Infinity Division_by_zero
-dqdvi207 divideint  1      0   -> Infinity Division_by_zero
-dqdvi208 divideint  1      0.0 -> Infinity Division_by_zero
-dqdvi209 divideint 10      0.0 -> Infinity Division_by_zero
-dqdvi210 divideint 1E+100  0.0 -> Infinity Division_by_zero
-dqdvi211 divideint 1E+380  0   -> Infinity Division_by_zero
-dqdvi214 divideint  -0.0001 0   -> -Infinity Division_by_zero
-dqdvi215 divideint  -0.01   0   -> -Infinity Division_by_zero
-dqdvi216 divideint  -0.1    0   -> -Infinity Division_by_zero
-dqdvi217 divideint  -1      0   -> -Infinity Division_by_zero
-dqdvi218 divideint  -1      0.0 -> -Infinity Division_by_zero
-dqdvi219 divideint -10      0.0 -> -Infinity Division_by_zero
-dqdvi220 divideint -1E+100  0.0 -> -Infinity Division_by_zero
-dqdvi221 divideint -1E+380  0   -> -Infinity Division_by_zero
-
--- test some cases that are close to exponent overflow
-dqdvi270 divideint 1 1e384          -> 0
-dqdvi271 divideint 1 0.9e384        -> 0
-dqdvi272 divideint 1 0.99e384       -> 0
-dqdvi273 divideint 1 0.9999999999999999e384       -> 0
-dqdvi274 divideint 9e384    1       -> NaN Division_impossible
-dqdvi275 divideint 9.9e384  1       -> NaN Division_impossible
-dqdvi276 divideint 9.99e384 1       -> NaN Division_impossible
-dqdvi277 divideint 9.999999999999999e384 1 -> NaN Division_impossible
-
-dqdvi280 divideint 0.1 9e-383       -> NaN Division_impossible
-dqdvi281 divideint 0.1 99e-383      -> NaN Division_impossible
-dqdvi282 divideint 0.1 999e-383     -> NaN Division_impossible
-dqdvi283 divideint 0.1 9e-382       -> NaN Division_impossible
-dqdvi284 divideint 0.1 99e-382      -> NaN Division_impossible
-
--- GD edge cases: lhs smaller than rhs but more digits
-dqdvi301  divideint  0.9      2      ->  0
-dqdvi302  divideint  0.9      2.0    ->  0
-dqdvi303  divideint  0.9      2.1    ->  0
-dqdvi304  divideint  0.9      2.00   ->  0
-dqdvi305  divideint  0.9      2.01   ->  0
-dqdvi306  divideint  0.12     1      ->  0
-dqdvi307  divideint  0.12     1.0    ->  0
-dqdvi308  divideint  0.12     1.00   ->  0
-dqdvi309  divideint  0.12     1.0    ->  0
-dqdvi310  divideint  0.12     1.00   ->  0
-dqdvi311  divideint  0.12     2      ->  0
-dqdvi312  divideint  0.12     2.0    ->  0
-dqdvi313  divideint  0.12     2.1    ->  0
-dqdvi314  divideint  0.12     2.00   ->  0
-dqdvi315  divideint  0.12     2.01   ->  0
-
--- edge cases of impossible
-dqdvi330  divideint  1234567987654321987654321890123456  10    ->  123456798765432198765432189012345
-dqdvi331  divideint  1234567987654321987654321890123456   1    ->  1234567987654321987654321890123456
-dqdvi332  divideint  1234567987654321987654321890123456   0.1  ->  NaN Division_impossible
-dqdvi333  divideint  1234567987654321987654321890123456   0.01 ->  NaN Division_impossible
-
--- overflow and underflow tests [from divide]
-dqdvi1051 divideint  1e+277  1e-311 ->  NaN Division_impossible
-dqdvi1052 divideint  1e+277 -1e-311 ->  NaN Division_impossible
-dqdvi1053 divideint -1e+277  1e-311 ->  NaN Division_impossible
-dqdvi1054 divideint -1e+277 -1e-311 ->  NaN Division_impossible
-dqdvi1055 divideint  1e-277  1e+311 ->  0
-dqdvi1056 divideint  1e-277 -1e+311 -> -0
-dqdvi1057 divideint -1e-277  1e+311 -> -0
-dqdvi1058 divideint -1e-277 -1e+311 ->  0
-
--- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
-dqdvi1060 divideint 1e-291 1e+101 -> 0
-dqdvi1061 divideint 1e-291 1e+102 -> 0
-dqdvi1062 divideint 1e-291 1e+103 -> 0
-dqdvi1063 divideint 1e-291 1e+104 -> 0
-dqdvi1064 divideint 1e-291 1e+105 -> 0
-dqdvi1065 divideint 1e-291 1e+106 -> 0
-dqdvi1066 divideint 1e-291 1e+107 -> 0
-dqdvi1067 divideint 1e-291 1e+108 -> 0
-dqdvi1068 divideint 1e-291 1e+109 -> 0
-dqdvi1069 divideint 1e-291 1e+110 -> 0
-
-dqdvi1101 divideint  1.0000E-394  1     -> 0
-dqdvi1102 divideint  1.000E-394   1e+1  -> 0
-dqdvi1103 divideint  1.00E-394    1e+2  -> 0
-
-dqdvi1118 divideint  1E-394       1e+4  -> 0
-dqdvi1119 divideint  3E-394      -1e+5  -> -0
-dqdvi1120 divideint  5E-394       1e+5  -> 0
-
-dqdvi1124 divideint  1E-394      -1e+4  -> -0
-dqdvi1130 divideint  3.0E-394    -1e+5  -> -0
-
-dqdvi1131 divideint  1.0E-199     1e+200 -> 0
-dqdvi1132 divideint  1.0E-199     1e+199 -> 0
-dqdvi1133 divideint  1.0E-199     1e+198 -> 0
-dqdvi1134 divideint  2.0E-199     2e+198 -> 0
-dqdvi1135 divideint  4.0E-199     4e+198 -> 0
-
--- long operand checks
-dqdvi401 divideint 12345678000 100 -> 123456780
-dqdvi402 divideint 1 12345678000   -> 0
-dqdvi403 divideint 1234567800  10  -> 123456780
-dqdvi404 divideint 1 1234567800    -> 0
-dqdvi405 divideint 1234567890  10  -> 123456789
-dqdvi406 divideint 1 1234567890    -> 0
-dqdvi407 divideint 1234567891  10  -> 123456789
-dqdvi408 divideint 1 1234567891    -> 0
-dqdvi409 divideint 12345678901 100 -> 123456789
-dqdvi410 divideint 1 12345678901   -> 0
-dqdvi411 divideint 1234567896  10  -> 123456789
-dqdvi412 divideint 1 1234567896    -> 0
-dqdvi413 divideint 12345678948 100 -> 123456789
-dqdvi414 divideint 12345678949 100 -> 123456789
-dqdvi415 divideint 12345678950 100 -> 123456789
-dqdvi416 divideint 12345678951 100 -> 123456789
-dqdvi417 divideint 12345678999 100 -> 123456789
-dqdvi441 divideint 12345678000 1 -> 12345678000
-dqdvi442 divideint 1 12345678000 -> 0
-dqdvi443 divideint 1234567800  1 -> 1234567800
-dqdvi444 divideint 1 1234567800  -> 0
-dqdvi445 divideint 1234567890  1 -> 1234567890
-dqdvi446 divideint 1 1234567890  -> 0
-dqdvi447 divideint 1234567891  1 -> 1234567891
-dqdvi448 divideint 1 1234567891  -> 0
-dqdvi449 divideint 12345678901 1 -> 12345678901
-dqdvi450 divideint 1 12345678901 -> 0
-dqdvi451 divideint 1234567896  1 -> 1234567896
-dqdvi452 divideint 1 1234567896  -> 0
-
--- more zeros, etc.
-dqdvi531 divideint 5.00 1E-3    -> 5000
-dqdvi532 divideint 00.00 0.000  -> NaN Division_undefined
-dqdvi533 divideint 00.00 0E-3   -> NaN Division_undefined
-dqdvi534 divideint  0    -0     -> NaN Division_undefined
-dqdvi535 divideint -0     0     -> NaN Division_undefined
-dqdvi536 divideint -0    -0     -> NaN Division_undefined
-
-dqdvi541 divideint  0    -1     -> -0
-dqdvi542 divideint -0    -1     ->  0
-dqdvi543 divideint  0     1     ->  0
-dqdvi544 divideint -0     1     -> -0
-dqdvi545 divideint -1     0     -> -Infinity Division_by_zero
-dqdvi546 divideint -1    -0     ->  Infinity Division_by_zero
-dqdvi547 divideint  1     0     ->  Infinity Division_by_zero
-dqdvi548 divideint  1    -0     -> -Infinity Division_by_zero
-
-dqdvi551 divideint  0.0  -1     -> -0
-dqdvi552 divideint -0.0  -1     ->  0
-dqdvi553 divideint  0.0   1     ->  0
-dqdvi554 divideint -0.0   1     -> -0
-dqdvi555 divideint -1.0   0     -> -Infinity Division_by_zero
-dqdvi556 divideint -1.0  -0     ->  Infinity Division_by_zero
-dqdvi557 divideint  1.0   0     ->  Infinity Division_by_zero
-dqdvi558 divideint  1.0  -0     -> -Infinity Division_by_zero
-
-dqdvi561 divideint  0    -1.0   -> -0
-dqdvi562 divideint -0    -1.0   ->  0
-dqdvi563 divideint  0     1.0   ->  0
-dqdvi564 divideint -0     1.0   -> -0
-dqdvi565 divideint -1     0.0   -> -Infinity Division_by_zero
-dqdvi566 divideint -1    -0.0   ->  Infinity Division_by_zero
-dqdvi567 divideint  1     0.0   ->  Infinity Division_by_zero
-dqdvi568 divideint  1    -0.0   -> -Infinity Division_by_zero
-
-dqdvi571 divideint  0.0  -1.0   -> -0
-dqdvi572 divideint -0.0  -1.0   ->  0
-dqdvi573 divideint  0.0   1.0   ->  0
-dqdvi574 divideint -0.0   1.0   -> -0
-dqdvi575 divideint -1.0   0.0   -> -Infinity Division_by_zero
-dqdvi576 divideint -1.0  -0.0   ->  Infinity Division_by_zero
-dqdvi577 divideint  1.0   0.0   ->  Infinity Division_by_zero
-dqdvi578 divideint  1.0  -0.0   -> -Infinity Division_by_zero
-
--- Specials
-dqdvi580 divideint  Inf  -Inf   ->  NaN Invalid_operation
-dqdvi581 divideint  Inf  -1000  -> -Infinity
-dqdvi582 divideint  Inf  -1     -> -Infinity
-dqdvi583 divideint  Inf  -0     -> -Infinity
-dqdvi584 divideint  Inf   0     ->  Infinity
-dqdvi585 divideint  Inf   1     ->  Infinity
-dqdvi586 divideint  Inf   1000  ->  Infinity
-dqdvi587 divideint  Inf   Inf   ->  NaN Invalid_operation
-dqdvi588 divideint -1000  Inf   -> -0
-dqdvi589 divideint -Inf   Inf   ->  NaN Invalid_operation
-dqdvi590 divideint -1     Inf   -> -0
-dqdvi591 divideint -0     Inf   -> -0
-dqdvi592 divideint  0     Inf   ->  0
-dqdvi593 divideint  1     Inf   ->  0
-dqdvi594 divideint  1000  Inf   ->  0
-dqdvi595 divideint  Inf   Inf   ->  NaN Invalid_operation
-
-dqdvi600 divideint -Inf  -Inf   ->  NaN Invalid_operation
-dqdvi601 divideint -Inf  -1000  ->  Infinity
-dqdvi602 divideint -Inf  -1     ->  Infinity
-dqdvi603 divideint -Inf  -0     ->  Infinity
-dqdvi604 divideint -Inf   0     -> -Infinity
-dqdvi605 divideint -Inf   1     -> -Infinity
-dqdvi606 divideint -Inf   1000  -> -Infinity
-dqdvi607 divideint -Inf   Inf   ->  NaN Invalid_operation
-dqdvi608 divideint -1000  Inf   -> -0
-dqdvi609 divideint -Inf  -Inf   ->  NaN Invalid_operation
-dqdvi610 divideint -1    -Inf   ->  0
-dqdvi611 divideint -0    -Inf   ->  0
-dqdvi612 divideint  0    -Inf   -> -0
-dqdvi613 divideint  1    -Inf   -> -0
-dqdvi614 divideint  1000 -Inf   -> -0
-dqdvi615 divideint  Inf  -Inf   ->  NaN Invalid_operation
-
-dqdvi621 divideint  NaN -Inf    ->  NaN
-dqdvi622 divideint  NaN -1000   ->  NaN
-dqdvi623 divideint  NaN -1      ->  NaN
-dqdvi624 divideint  NaN -0      ->  NaN
-dqdvi625 divideint  NaN  0      ->  NaN
-dqdvi626 divideint  NaN  1      ->  NaN
-dqdvi627 divideint  NaN  1000   ->  NaN
-dqdvi628 divideint  NaN  Inf    ->  NaN
-dqdvi629 divideint  NaN  NaN    ->  NaN
-dqdvi630 divideint -Inf  NaN    ->  NaN
-dqdvi631 divideint -1000 NaN    ->  NaN
-dqdvi632 divideint -1    NaN    ->  NaN
-dqdvi633 divideint -0    NaN    ->  NaN
-dqdvi634 divideint  0    NaN    ->  NaN
-dqdvi635 divideint  1    NaN    ->  NaN
-dqdvi636 divideint  1000 NaN    ->  NaN
-dqdvi637 divideint  Inf  NaN    ->  NaN
-
-dqdvi641 divideint  sNaN -Inf   ->  NaN  Invalid_operation
-dqdvi642 divideint  sNaN -1000  ->  NaN  Invalid_operation
-dqdvi643 divideint  sNaN -1     ->  NaN  Invalid_operation
-dqdvi644 divideint  sNaN -0     ->  NaN  Invalid_operation
-dqdvi645 divideint  sNaN  0     ->  NaN  Invalid_operation
-dqdvi646 divideint  sNaN  1     ->  NaN  Invalid_operation
-dqdvi647 divideint  sNaN  1000  ->  NaN  Invalid_operation
-dqdvi648 divideint  sNaN  NaN   ->  NaN  Invalid_operation
-dqdvi649 divideint  sNaN sNaN   ->  NaN  Invalid_operation
-dqdvi650 divideint  NaN  sNaN   ->  NaN  Invalid_operation
-dqdvi651 divideint -Inf  sNaN   ->  NaN  Invalid_operation
-dqdvi652 divideint -1000 sNaN   ->  NaN  Invalid_operation
-dqdvi653 divideint -1    sNaN   ->  NaN  Invalid_operation
-dqdvi654 divideint -0    sNaN   ->  NaN  Invalid_operation
-dqdvi655 divideint  0    sNaN   ->  NaN  Invalid_operation
-dqdvi656 divideint  1    sNaN   ->  NaN  Invalid_operation
-dqdvi657 divideint  1000 sNaN   ->  NaN  Invalid_operation
-dqdvi658 divideint  Inf  sNaN   ->  NaN  Invalid_operation
-dqdvi659 divideint  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqdvi661 divideint  NaN9 -Inf   ->  NaN9
-dqdvi662 divideint  NaN8  1000  ->  NaN8
-dqdvi663 divideint  NaN7  Inf   ->  NaN7
-dqdvi664 divideint -NaN6  NaN5  -> -NaN6
-dqdvi665 divideint -Inf   NaN4  ->  NaN4
-dqdvi666 divideint -1000  NaN3  ->  NaN3
-dqdvi667 divideint  Inf  -NaN2  -> -NaN2
-
-dqdvi671 divideint -sNaN99 -Inf    -> -NaN99 Invalid_operation
-dqdvi672 divideint  sNaN98 -1      ->  NaN98 Invalid_operation
-dqdvi673 divideint  sNaN97  NaN    ->  NaN97 Invalid_operation
-dqdvi674 divideint  sNaN96 sNaN94  ->  NaN96 Invalid_operation
-dqdvi675 divideint  NaN95  sNaN93  ->  NaN93 Invalid_operation
-dqdvi676 divideint -Inf    sNaN92  ->  NaN92 Invalid_operation
-dqdvi677 divideint  0      sNaN91  ->  NaN91 Invalid_operation
-dqdvi678 divideint  Inf   -sNaN90  -> -NaN90 Invalid_operation
-dqdvi679 divideint  NaN    sNaN89  ->  NaN89 Invalid_operation
-
--- Gyuris example
-dqdvi700 divideint 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 0
-
--- Null tests
-dqdvi900 divideint  10  # -> NaN Invalid_operation
-dqdvi901 divideint   # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqEncode.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqEncode.decTest
deleted file mode 100644
index 8c5d7b9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqEncode.decTest
+++ /dev/null
@@ -1,477 +0,0 @@
-------------------------------------------------------------------------
--- dqEncode.decTest -- decimal sixteen-byte format testcases          --
--- Copyright (c) IBM Corporation, 2000, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
--- [Previously called decimal128.decTest]
-version: 2.59
-
--- This set of tests is for the sixteen-byte concrete representation.
--- Its characteristics are:
---
---   1 bit  sign
---   5 bits combination field
---  12 bits exponent continuation
--- 110 bits coefficient continuation
---
--- Total exponent length 14 bits
--- Total coefficient length 114 bits (34 digits)
---
--- Elimit = 12287 (maximum encoded exponent)
--- Emax   =  6144 (largest exponent value)
--- Emin   = -6143 (smallest exponent value)
--- bias   =  6176 (subtracted from encoded exponent) = -Etiny
-
--- The testcases here have only exactly representable data on the
--- 'left-hand-side'; rounding from strings is tested in 'base'
--- testcase groups.
-
-extended:    1
-clamp:       1
-precision:   34
-rounding:    half_up
-maxExponent: 6144
-minExponent: -6143
-
--- General testcases
--- (mostly derived from the Strawman 4 document and examples)
-decq001 apply   #A20780000000000000000000000003D0 -> -7.50
-decq002 apply   -7.50             -> #A20780000000000000000000000003D0
--- derivative canonical plain strings
-decq003 apply   #A20840000000000000000000000003D0 -> -7.50E+3
-decq004 apply   -7.50E+3          -> #A20840000000000000000000000003D0
-decq005 apply   #A20800000000000000000000000003D0 -> -750
-decq006 apply   -750              -> #A20800000000000000000000000003D0
-decq007 apply   #A207c0000000000000000000000003D0 -> -75.0
-decq008 apply   -75.0             -> #A207c0000000000000000000000003D0
-decq009 apply   #A20740000000000000000000000003D0 -> -0.750
-decq010 apply   -0.750            -> #A20740000000000000000000000003D0
-decq011 apply   #A20700000000000000000000000003D0 -> -0.0750
-decq012 apply   -0.0750           -> #A20700000000000000000000000003D0
-decq013 apply   #A20680000000000000000000000003D0 -> -0.000750
-decq014 apply   -0.000750         -> #A20680000000000000000000000003D0
-decq015 apply   #A20600000000000000000000000003D0 -> -0.00000750
-decq016 apply   -0.00000750       -> #A20600000000000000000000000003D0
-decq017 apply   #A205c0000000000000000000000003D0 -> -7.50E-7
-decq018 apply   -7.50E-7          -> #A205c0000000000000000000000003D0
-
--- Normality
-decq020 apply   1234567890123456789012345678901234   -> #2608134b9c1e28e56f3c127177823534
-decq021 apply  -1234567890123456789012345678901234   -> #a608134b9c1e28e56f3c127177823534
-decq022 apply   1111111111111111111111111111111111   -> #26080912449124491244912449124491
-
--- Nmax and similar
-decq031 apply   9.999999999999999999999999999999999E+6144  -> #77ffcff3fcff3fcff3fcff3fcff3fcff
-decq032 apply   #77ffcff3fcff3fcff3fcff3fcff3fcff -> 9.999999999999999999999999999999999E+6144
-decq033 apply   1.234567890123456789012345678901234E+6144 -> #47ffd34b9c1e28e56f3c127177823534
-decq034 apply   #47ffd34b9c1e28e56f3c127177823534 -> 1.234567890123456789012345678901234E+6144
--- fold-downs (more below)
-decq035 apply   1.23E+6144    -> #47ffd300000000000000000000000000 Clamped
-decq036 apply   #47ffd300000000000000000000000000       -> 1.230000000000000000000000000000000E+6144
-decq037 apply   1E+6144       -> #47ffc000000000000000000000000000 Clamped
-decq038 apply   #47ffc000000000000000000000000000       -> 1.000000000000000000000000000000000E+6144
-
-decq051 apply   12345                   -> #220800000000000000000000000049c5
-decq052 apply   #220800000000000000000000000049c5       -> 12345
-decq053 apply   1234                    -> #22080000000000000000000000000534
-decq054 apply   #22080000000000000000000000000534       -> 1234
-decq055 apply   123                     -> #220800000000000000000000000000a3
-decq056 apply   #220800000000000000000000000000a3       -> 123
-decq057 apply   12                      -> #22080000000000000000000000000012
-decq058 apply   #22080000000000000000000000000012       -> 12
-decq059 apply   1                       -> #22080000000000000000000000000001
-decq060 apply   #22080000000000000000000000000001       -> 1
-decq061 apply   1.23                    -> #220780000000000000000000000000a3
-decq062 apply   #220780000000000000000000000000a3       -> 1.23
-decq063 apply   123.45                  -> #220780000000000000000000000049c5
-decq064 apply   #220780000000000000000000000049c5       -> 123.45
-
--- Nmin and below
-decq071 apply   1E-6143                                    -> #00084000000000000000000000000001
-decq072 apply   #00084000000000000000000000000001          -> 1E-6143
-decq073 apply   1.000000000000000000000000000000000E-6143  -> #04000000000000000000000000000000
-decq074 apply   #04000000000000000000000000000000          -> 1.000000000000000000000000000000000E-6143
-decq075 apply   1.000000000000000000000000000000001E-6143  -> #04000000000000000000000000000001
-decq076 apply   #04000000000000000000000000000001          -> 1.000000000000000000000000000000001E-6143
-
-decq077 apply   0.100000000000000000000000000000000E-6143  -> #00000800000000000000000000000000      Subnormal
-decq078 apply   #00000800000000000000000000000000          -> 1.00000000000000000000000000000000E-6144  Subnormal
-decq079 apply   0.000000000000000000000000000000010E-6143  -> #00000000000000000000000000000010      Subnormal
-decq080 apply   #00000000000000000000000000000010          -> 1.0E-6175              Subnormal
-decq081 apply   0.00000000000000000000000000000001E-6143   -> #00004000000000000000000000000001      Subnormal
-decq082 apply   #00004000000000000000000000000001          -> 1E-6175                Subnormal
-decq083 apply   0.000000000000000000000000000000001E-6143  -> #00000000000000000000000000000001      Subnormal
-decq084 apply   #00000000000000000000000000000001          -> 1E-6176                 Subnormal
-
--- underflows cannot be tested for simple copies, check edge cases
-decq090 apply   1e-6176                  -> #00000000000000000000000000000001  Subnormal
-decq100 apply   999999999999999999999999999999999e-6176 -> #00000ff3fcff3fcff3fcff3fcff3fcff  Subnormal
-
--- same again, negatives
--- Nmax and similar
-decq122 apply  -9.999999999999999999999999999999999E+6144  -> #f7ffcff3fcff3fcff3fcff3fcff3fcff
-decq123 apply   #f7ffcff3fcff3fcff3fcff3fcff3fcff -> -9.999999999999999999999999999999999E+6144
-decq124 apply  -1.234567890123456789012345678901234E+6144 -> #c7ffd34b9c1e28e56f3c127177823534
-decq125 apply   #c7ffd34b9c1e28e56f3c127177823534 -> -1.234567890123456789012345678901234E+6144
--- fold-downs (more below)
-decq130 apply  -1.23E+6144    -> #c7ffd300000000000000000000000000 Clamped
-decq131 apply   #c7ffd300000000000000000000000000       -> -1.230000000000000000000000000000000E+6144
-decq132 apply  -1E+6144       -> #c7ffc000000000000000000000000000 Clamped
-decq133 apply   #c7ffc000000000000000000000000000       -> -1.000000000000000000000000000000000E+6144
-
-decq151 apply  -12345                   -> #a20800000000000000000000000049c5
-decq152 apply   #a20800000000000000000000000049c5       -> -12345
-decq153 apply  -1234                    -> #a2080000000000000000000000000534
-decq154 apply   #a2080000000000000000000000000534       -> -1234
-decq155 apply  -123                     -> #a20800000000000000000000000000a3
-decq156 apply   #a20800000000000000000000000000a3       -> -123
-decq157 apply  -12                      -> #a2080000000000000000000000000012
-decq158 apply   #a2080000000000000000000000000012       -> -12
-decq159 apply  -1                       -> #a2080000000000000000000000000001
-decq160 apply   #a2080000000000000000000000000001       -> -1
-decq161 apply  -1.23                    -> #a20780000000000000000000000000a3
-decq162 apply   #a20780000000000000000000000000a3       -> -1.23
-decq163 apply  -123.45                  -> #a20780000000000000000000000049c5
-decq164 apply   #a20780000000000000000000000049c5       -> -123.45
-
--- Nmin and below
-decq171 apply  -1E-6143                                    -> #80084000000000000000000000000001
-decq172 apply   #80084000000000000000000000000001          -> -1E-6143
-decq173 apply  -1.000000000000000000000000000000000E-6143  -> #84000000000000000000000000000000
-decq174 apply   #84000000000000000000000000000000          -> -1.000000000000000000000000000000000E-6143
-decq175 apply  -1.000000000000000000000000000000001E-6143  -> #84000000000000000000000000000001
-decq176 apply   #84000000000000000000000000000001          -> -1.000000000000000000000000000000001E-6143
-
-decq177 apply  -0.100000000000000000000000000000000E-6143  -> #80000800000000000000000000000000      Subnormal
-decq178 apply   #80000800000000000000000000000000          -> -1.00000000000000000000000000000000E-6144  Subnormal
-decq179 apply  -0.000000000000000000000000000000010E-6143  -> #80000000000000000000000000000010      Subnormal
-decq180 apply   #80000000000000000000000000000010          -> -1.0E-6175              Subnormal
-decq181 apply  -0.00000000000000000000000000000001E-6143   -> #80004000000000000000000000000001      Subnormal
-decq182 apply   #80004000000000000000000000000001          -> -1E-6175                Subnormal
-decq183 apply  -0.000000000000000000000000000000001E-6143  -> #80000000000000000000000000000001      Subnormal
-decq184 apply   #80000000000000000000000000000001          -> -1E-6176                 Subnormal
-
--- underflow edge cases
-decq190 apply   -1e-6176                  -> #80000000000000000000000000000001  Subnormal
-decq200 apply   -999999999999999999999999999999999e-6176 -> #80000ff3fcff3fcff3fcff3fcff3fcff  Subnormal
-
--- zeros
-decq400 apply   0E-8000                 -> #00000000000000000000000000000000  Clamped
-decq401 apply   0E-6177                 -> #00000000000000000000000000000000  Clamped
-decq402 apply   0E-6176                 -> #00000000000000000000000000000000
-decq403 apply   #00000000000000000000000000000000       -> 0E-6176
-decq404 apply   0.000000000000000000000000000000000E-6143  -> #00000000000000000000000000000000
-decq405 apply   #00000000000000000000000000000000       -> 0E-6176
-decq406 apply   0E-2                    -> #22078000000000000000000000000000
-decq407 apply   #22078000000000000000000000000000       -> 0.00
-decq408 apply   0                       -> #22080000000000000000000000000000
-decq409 apply   #22080000000000000000000000000000       -> 0
-decq410 apply   0E+3                    -> #2208c000000000000000000000000000
-decq411 apply   #2208c000000000000000000000000000       -> 0E+3
-decq412 apply   0E+6111                 -> #43ffc000000000000000000000000000
-decq413 apply   #43ffc000000000000000000000000000       -> 0E+6111
--- clamped zeros...
-decq414 apply   0E+6112                 -> #43ffc000000000000000000000000000  Clamped
-decq415 apply   #43ffc000000000000000000000000000       -> 0E+6111
-decq416 apply   0E+6144                 -> #43ffc000000000000000000000000000  Clamped
-decq417 apply   #43ffc000000000000000000000000000       -> 0E+6111
-decq418 apply   0E+8000                 -> #43ffc000000000000000000000000000  Clamped
-decq419 apply   #43ffc000000000000000000000000000       -> 0E+6111
-
--- negative zeros
-decq420 apply  -0E-8000                 -> #80000000000000000000000000000000  Clamped
-decq421 apply  -0E-6177                 -> #80000000000000000000000000000000  Clamped
-decq422 apply  -0E-6176                 -> #80000000000000000000000000000000
-decq423 apply   #80000000000000000000000000000000       -> -0E-6176
-decq424 apply  -0.000000000000000000000000000000000E-6143  -> #80000000000000000000000000000000
-decq425 apply   #80000000000000000000000000000000       -> -0E-6176
-decq426 apply  -0E-2                    -> #a2078000000000000000000000000000
-decq427 apply   #a2078000000000000000000000000000       -> -0.00
-decq428 apply  -0                       -> #a2080000000000000000000000000000
-decq429 apply   #a2080000000000000000000000000000       -> -0
-decq430 apply  -0E+3                    -> #a208c000000000000000000000000000
-decq431 apply   #a208c000000000000000000000000000       -> -0E+3
-decq432 apply  -0E+6111                 -> #c3ffc000000000000000000000000000
-decq433 apply   #c3ffc000000000000000000000000000       -> -0E+6111
--- clamped zeros...
-decq434 apply  -0E+6112                 -> #c3ffc000000000000000000000000000  Clamped
-decq435 apply   #c3ffc000000000000000000000000000       -> -0E+6111
-decq436 apply  -0E+6144                 -> #c3ffc000000000000000000000000000  Clamped
-decq437 apply   #c3ffc000000000000000000000000000       -> -0E+6111
-decq438 apply  -0E+8000                 -> #c3ffc000000000000000000000000000  Clamped
-decq439 apply   #c3ffc000000000000000000000000000       -> -0E+6111
-
--- exponent lengths
-decq440 apply   #22080000000000000000000000000007       -> 7
-decq441 apply   7 -> #22080000000000000000000000000007
-decq442 apply   #220a4000000000000000000000000007       -> 7E+9
-decq443 apply   7E+9 -> #220a4000000000000000000000000007
-decq444 apply   #2220c000000000000000000000000007       -> 7E+99
-decq445 apply   7E+99 -> #2220c000000000000000000000000007
-decq446 apply   #2301c000000000000000000000000007       -> 7E+999
-decq447 apply   7E+999 -> #2301c000000000000000000000000007
-decq448 apply   #43e3c000000000000000000000000007       -> 7E+5999
-decq449 apply   7E+5999 -> #43e3c000000000000000000000000007
-
--- Specials
-decq500 apply   Infinity                          -> #78000000000000000000000000000000
-decq501 apply   #78787878787878787878787878787878 -> #78000000000000000000000000000000
-decq502 apply   #78000000000000000000000000000000 -> Infinity
-decq503 apply   #79797979797979797979797979797979 -> #78000000000000000000000000000000
-decq504 apply   #79000000000000000000000000000000 -> Infinity
-decq505 apply   #7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #78000000000000000000000000000000
-decq506 apply   #7a000000000000000000000000000000 -> Infinity
-decq507 apply   #7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #78000000000000000000000000000000
-decq508 apply   #7b000000000000000000000000000000 -> Infinity
-
-decq509 apply   NaN                               -> #7c000000000000000000000000000000
-decq510 apply   #7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #7c003c7c7c7c7c7c7c7c7c7c7c7c7c7c
-decq511 apply   #7c000000000000000000000000000000 -> NaN
-decq512 apply   #7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #7c003d7d7d7d7d7d7d7d7d7d7d7d7d7d
-decq513 apply   #7d000000000000000000000000000000 -> NaN
-decq514 apply   #7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #7e003e7e7c7e7e7e7e7c7e7e7e7e7c7e
-decq515 apply   #7e000000000000000000000000000000 -> sNaN
-decq516 apply   #7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #7e003f7f7c7f7f7f7f7c7f7f7f7f7c7f
-decq517 apply   #7f000000000000000000000000000000 -> sNaN
-decq518 apply   #7fffffffffffffffffffffffffffffff -> sNaN999999999999999999999999999999999
-decq519 apply   #7fffffffffffffffffffffffffffffff -> #7e000ff3fcff3fcff3fcff3fcff3fcff
-
-decq520 apply   -Infinity                         -> #f8000000000000000000000000000000
-decq521 apply   #f8787878787878787878787878787878 -> #f8000000000000000000000000000000
-decq522 apply   #f8000000000000000000000000000000 -> -Infinity
-decq523 apply   #f9797979797979797979797979797979 -> #f8000000000000000000000000000000
-decq524 apply   #f9000000000000000000000000000000 -> -Infinity
-decq525 apply   #fa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a -> #f8000000000000000000000000000000
-decq526 apply   #fa000000000000000000000000000000 -> -Infinity
-decq527 apply   #fb7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b -> #f8000000000000000000000000000000
-decq528 apply   #fb000000000000000000000000000000 -> -Infinity
-
-decq529 apply   -NaN                              -> #fc000000000000000000000000000000
-decq530 apply   #fc7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c -> #fc003c7c7c7c7c7c7c7c7c7c7c7c7c7c
-decq531 apply   #fc000000000000000000000000000000 -> -NaN
-decq532 apply   #fd7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d -> #fc003d7d7d7d7d7d7d7d7d7d7d7d7d7d
-decq533 apply   #fd000000000000000000000000000000 -> -NaN
-decq534 apply   #fe7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e -> #fe003e7e7c7e7e7e7e7c7e7e7e7e7c7e
-decq535 apply   #fe000000000000000000000000000000 -> -sNaN
-decq536 apply   #ff7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f -> #fe003f7f7c7f7f7f7f7c7f7f7f7f7c7f
-decq537 apply   #ff000000000000000000000000000000 -> -sNaN
-decq538 apply   #ffffffffffffffffffffffffffffffff -> -sNaN999999999999999999999999999999999
-decq539 apply   #ffffffffffffffffffffffffffffffff -> #fe000ff3fcff3fcff3fcff3fcff3fcff
-
-decq540 apply   NaN               -> #7c000000000000000000000000000000
-decq541 apply   NaN0              -> #7c000000000000000000000000000000
-decq542 apply   NaN1              -> #7c000000000000000000000000000001
-decq543 apply   NaN12             -> #7c000000000000000000000000000012
-decq544 apply   NaN79             -> #7c000000000000000000000000000079
-decq545 apply   NaN12345          -> #7c0000000000000000000000000049c5
-decq546 apply   NaN123456         -> #7c000000000000000000000000028e56
-decq547 apply   NaN799799         -> #7c0000000000000000000000000f7fdf
-decq548 apply   NaN799799799799799799799799799799799  -> #7c003dff7fdff7fdff7fdff7fdff7fdf
-decq549 apply   NaN999999999999999999999999999999999  -> #7c000ff3fcff3fcff3fcff3fcff3fcff
-decq550 apply     9999999999999999999999999999999999  -> #6e080ff3fcff3fcff3fcff3fcff3fcff
-
--- fold-down full sequence
-decq601 apply   1E+6144                 -> #47ffc000000000000000000000000000 Clamped
-decq602 apply   #47ffc000000000000000000000000000       -> 1.000000000000000000000000000000000E+6144
-decq603 apply   1E+6143                 -> #43ffc800000000000000000000000000 Clamped
-decq604 apply   #43ffc800000000000000000000000000       -> 1.00000000000000000000000000000000E+6143
-decq605 apply   1E+6142                 -> #43ffc100000000000000000000000000 Clamped
-decq606 apply   #43ffc100000000000000000000000000       -> 1.0000000000000000000000000000000E+6142
-decq607 apply   1E+6141                 -> #43ffc010000000000000000000000000 Clamped
-decq608 apply   #43ffc010000000000000000000000000       -> 1.000000000000000000000000000000E+6141
-decq609 apply   1E+6140                 -> #43ffc002000000000000000000000000 Clamped
-decq610 apply   #43ffc002000000000000000000000000       -> 1.00000000000000000000000000000E+6140
-decq611 apply   1E+6139                 -> #43ffc000400000000000000000000000 Clamped
-decq612 apply   #43ffc000400000000000000000000000       -> 1.0000000000000000000000000000E+6139
-decq613 apply   1E+6138                 -> #43ffc000040000000000000000000000 Clamped
-decq614 apply   #43ffc000040000000000000000000000       -> 1.000000000000000000000000000E+6138
-decq615 apply   1E+6137                 -> #43ffc000008000000000000000000000 Clamped
-decq616 apply   #43ffc000008000000000000000000000       -> 1.00000000000000000000000000E+6137
-decq617 apply   1E+6136                 -> #43ffc000001000000000000000000000 Clamped
-decq618 apply   #43ffc000001000000000000000000000       -> 1.0000000000000000000000000E+6136
-decq619 apply   1E+6135                 -> #43ffc000000100000000000000000000 Clamped
-decq620 apply   #43ffc000000100000000000000000000       -> 1.000000000000000000000000E+6135
-decq621 apply   1E+6134                 -> #43ffc000000020000000000000000000 Clamped
-decq622 apply   #43ffc000000020000000000000000000       -> 1.00000000000000000000000E+6134
-decq623 apply   1E+6133                 -> #43ffc000000004000000000000000000 Clamped
-decq624 apply   #43ffc000000004000000000000000000       -> 1.0000000000000000000000E+6133
-decq625 apply   1E+6132                 -> #43ffc000000000400000000000000000 Clamped
-decq626 apply   #43ffc000000000400000000000000000       -> 1.000000000000000000000E+6132
-decq627 apply   1E+6131                 -> #43ffc000000000080000000000000000 Clamped
-decq628 apply   #43ffc000000000080000000000000000       -> 1.00000000000000000000E+6131
-decq629 apply   1E+6130                 -> #43ffc000000000010000000000000000 Clamped
-decq630 apply   #43ffc000000000010000000000000000       -> 1.0000000000000000000E+6130
-decq631 apply   1E+6129                 -> #43ffc000000000001000000000000000 Clamped
-decq632 apply   #43ffc000000000001000000000000000       -> 1.000000000000000000E+6129
-decq633 apply   1E+6128                 -> #43ffc000000000000200000000000000 Clamped
-decq634 apply   #43ffc000000000000200000000000000       -> 1.00000000000000000E+6128
-decq635 apply   1E+6127                 -> #43ffc000000000000040000000000000 Clamped
-decq636 apply   #43ffc000000000000040000000000000       -> 1.0000000000000000E+6127
-decq637 apply   1E+6126                 -> #43ffc000000000000004000000000000 Clamped
-decq638 apply   #43ffc000000000000004000000000000       -> 1.000000000000000E+6126
-decq639 apply   1E+6125                 -> #43ffc000000000000000800000000000 Clamped
-decq640 apply   #43ffc000000000000000800000000000       -> 1.00000000000000E+6125
-decq641 apply   1E+6124                 -> #43ffc000000000000000100000000000 Clamped
-decq642 apply   #43ffc000000000000000100000000000       -> 1.0000000000000E+6124
-decq643 apply   1E+6123                 -> #43ffc000000000000000010000000000 Clamped
-decq644 apply   #43ffc000000000000000010000000000       -> 1.000000000000E+6123
-decq645 apply   1E+6122                 -> #43ffc000000000000000002000000000 Clamped
-decq646 apply   #43ffc000000000000000002000000000       -> 1.00000000000E+6122
-decq647 apply   1E+6121                 -> #43ffc000000000000000000400000000 Clamped
-decq648 apply   #43ffc000000000000000000400000000       -> 1.0000000000E+6121
-decq649 apply   1E+6120                 -> #43ffc000000000000000000040000000 Clamped
-decq650 apply   #43ffc000000000000000000040000000       -> 1.000000000E+6120
-decq651 apply   1E+6119                 -> #43ffc000000000000000000008000000 Clamped
-decq652 apply   #43ffc000000000000000000008000000       -> 1.00000000E+6119
-decq653 apply   1E+6118                 -> #43ffc000000000000000000001000000 Clamped
-decq654 apply   #43ffc000000000000000000001000000       -> 1.0000000E+6118
-decq655 apply   1E+6117                 -> #43ffc000000000000000000000100000 Clamped
-decq656 apply   #43ffc000000000000000000000100000       -> 1.000000E+6117
-decq657 apply   1E+6116                 -> #43ffc000000000000000000000020000 Clamped
-decq658 apply   #43ffc000000000000000000000020000       -> 1.00000E+6116
-decq659 apply   1E+6115                 -> #43ffc000000000000000000000004000 Clamped
-decq660 apply   #43ffc000000000000000000000004000       -> 1.0000E+6115
-decq661 apply   1E+6114                 -> #43ffc000000000000000000000000400 Clamped
-decq662 apply   #43ffc000000000000000000000000400       -> 1.000E+6114
-decq663 apply   1E+6113                 -> #43ffc000000000000000000000000080 Clamped
-decq664 apply   #43ffc000000000000000000000000080       -> 1.00E+6113
-decq665 apply   1E+6112                 -> #43ffc000000000000000000000000010 Clamped
-decq666 apply   #43ffc000000000000000000000000010       -> 1.0E+6112
-decq667 apply   1E+6111                 -> #43ffc000000000000000000000000001
-decq668 apply   #43ffc000000000000000000000000001       -> 1E+6111
-decq669 apply   1E+6110                 -> #43ff8000000000000000000000000001
-decq670 apply   #43ff8000000000000000000000000001       -> 1E+6110
-
--- Selected DPD codes
-decq700 apply   #22080000000000000000000000000000       -> 0
-decq701 apply   #22080000000000000000000000000009       -> 9
-decq702 apply   #22080000000000000000000000000010       -> 10
-decq703 apply   #22080000000000000000000000000019       -> 19
-decq704 apply   #22080000000000000000000000000020       -> 20
-decq705 apply   #22080000000000000000000000000029       -> 29
-decq706 apply   #22080000000000000000000000000030       -> 30
-decq707 apply   #22080000000000000000000000000039       -> 39
-decq708 apply   #22080000000000000000000000000040       -> 40
-decq709 apply   #22080000000000000000000000000049       -> 49
-decq710 apply   #22080000000000000000000000000050       -> 50
-decq711 apply   #22080000000000000000000000000059       -> 59
-decq712 apply   #22080000000000000000000000000060       -> 60
-decq713 apply   #22080000000000000000000000000069       -> 69
-decq714 apply   #22080000000000000000000000000070       -> 70
-decq715 apply   #22080000000000000000000000000071       -> 71
-decq716 apply   #22080000000000000000000000000072       -> 72
-decq717 apply   #22080000000000000000000000000073       -> 73
-decq718 apply   #22080000000000000000000000000074       -> 74
-decq719 apply   #22080000000000000000000000000075       -> 75
-decq720 apply   #22080000000000000000000000000076       -> 76
-decq721 apply   #22080000000000000000000000000077       -> 77
-decq722 apply   #22080000000000000000000000000078       -> 78
-decq723 apply   #22080000000000000000000000000079       -> 79
-
-decq730 apply   #2208000000000000000000000000029e       -> 994
-decq731 apply   #2208000000000000000000000000029f       -> 995
-decq732 apply   #220800000000000000000000000002a0       -> 520
-decq733 apply   #220800000000000000000000000002a1       -> 521
-
--- DPD: one of each of the huffman groups
-decq740 apply   #220800000000000000000000000003f7       -> 777
-decq741 apply   #220800000000000000000000000003f8       -> 778
-decq742 apply   #220800000000000000000000000003eb       -> 787
-decq743 apply   #2208000000000000000000000000037d       -> 877
-decq744 apply   #2208000000000000000000000000039f       -> 997
-decq745 apply   #220800000000000000000000000003bf       -> 979
-decq746 apply   #220800000000000000000000000003df       -> 799
-decq747 apply   #2208000000000000000000000000006e       -> 888
-
-
--- DPD all-highs cases (includes the 24 redundant codes)
-decq750 apply   #2208000000000000000000000000006e       -> 888
-decq751 apply   #2208000000000000000000000000016e       -> 888
-decq752 apply   #2208000000000000000000000000026e       -> 888
-decq753 apply   #2208000000000000000000000000036e       -> 888
-decq754 apply   #2208000000000000000000000000006f       -> 889
-decq755 apply   #2208000000000000000000000000016f       -> 889
-decq756 apply   #2208000000000000000000000000026f       -> 889
-decq757 apply   #2208000000000000000000000000036f       -> 889
-
-decq760 apply   #2208000000000000000000000000007e       -> 898
-decq761 apply   #2208000000000000000000000000017e       -> 898
-decq762 apply   #2208000000000000000000000000027e       -> 898
-decq763 apply   #2208000000000000000000000000037e       -> 898
-decq764 apply   #2208000000000000000000000000007f       -> 899
-decq765 apply   #2208000000000000000000000000017f       -> 899
-decq766 apply   #2208000000000000000000000000027f       -> 899
-decq767 apply   #2208000000000000000000000000037f       -> 899
-
-decq770 apply   #220800000000000000000000000000ee       -> 988
-decq771 apply   #220800000000000000000000000001ee       -> 988
-decq772 apply   #220800000000000000000000000002ee       -> 988
-decq773 apply   #220800000000000000000000000003ee       -> 988
-decq774 apply   #220800000000000000000000000000ef       -> 989
-decq775 apply   #220800000000000000000000000001ef       -> 989
-decq776 apply   #220800000000000000000000000002ef       -> 989
-decq777 apply   #220800000000000000000000000003ef       -> 989
-
-decq780 apply   #220800000000000000000000000000fe       -> 998
-decq781 apply   #220800000000000000000000000001fe       -> 998
-decq782 apply   #220800000000000000000000000002fe       -> 998
-decq783 apply   #220800000000000000000000000003fe       -> 998
-decq784 apply   #220800000000000000000000000000ff       -> 999
-decq785 apply   #220800000000000000000000000001ff       -> 999
-decq786 apply   #220800000000000000000000000002ff       -> 999
-decq787 apply   #220800000000000000000000000003ff       -> 999
-
--- Miscellaneous (testers' queries, etc.)
-
-decq790 apply   #2208000000000000000000000000c000       -> 30000
-decq791 apply   #22080000000000000000000000007800       -> 890000
-decq792 apply   30000 -> #2208000000000000000000000000c000
-decq793 apply   890000 -> #22080000000000000000000000007800
-
--- values around [u]int32 edges (zeros done earlier)
-decq800 apply -2147483646  -> #a208000000000000000000008c78af46
-decq801 apply -2147483647  -> #a208000000000000000000008c78af47
-decq802 apply -2147483648  -> #a208000000000000000000008c78af48
-decq803 apply -2147483649  -> #a208000000000000000000008c78af49
-decq804 apply  2147483646  -> #2208000000000000000000008c78af46
-decq805 apply  2147483647  -> #2208000000000000000000008c78af47
-decq806 apply  2147483648  -> #2208000000000000000000008c78af48
-decq807 apply  2147483649  -> #2208000000000000000000008c78af49
-decq808 apply  4294967294  -> #22080000000000000000000115afb55a
-decq809 apply  4294967295  -> #22080000000000000000000115afb55b
-decq810 apply  4294967296  -> #22080000000000000000000115afb57a
-decq811 apply  4294967297  -> #22080000000000000000000115afb57b
-
-decq820 apply  #a208000000000000000000008c78af46 -> -2147483646
-decq821 apply  #a208000000000000000000008c78af47 -> -2147483647
-decq822 apply  #a208000000000000000000008c78af48 -> -2147483648
-decq823 apply  #a208000000000000000000008c78af49 -> -2147483649
-decq824 apply  #2208000000000000000000008c78af46 ->  2147483646
-decq825 apply  #2208000000000000000000008c78af47 ->  2147483647
-decq826 apply  #2208000000000000000000008c78af48 ->  2147483648
-decq827 apply  #2208000000000000000000008c78af49 ->  2147483649
-decq828 apply  #22080000000000000000000115afb55a ->  4294967294
-decq829 apply  #22080000000000000000000115afb55b ->  4294967295
-decq830 apply  #22080000000000000000000115afb57a ->  4294967296
-decq831 apply  #22080000000000000000000115afb57b ->  4294967297
-
--- VG testcase
-decq840 apply    #2080000000000000F294000000172636 -> 8.81125000000001349436E-1548
-decq841 apply    #20800000000000008000000000000000 -> 8.000000000000000000E-1550
-decq842 apply    #1EF98490000000010F6E4E0000000000 -> 7.049000000000010795488000000000000E-3097
-decq843 multiply #20800000000000008000000000000000 #2080000000000000F294000000172636 -> #1EF98490000000010F6E4E0000000000 Rounded
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqFMA.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqFMA.decTest
deleted file mode 100644
index 2353f2f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqFMA.decTest
+++ /dev/null
@@ -1,1786 +0,0 @@
-------------------------------------------------------------------------
--- dqFMA.decTest -- decQuad Fused Multiply Add                        --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- These tests comprese three parts:
---   1. Sanity checks and other three-operand tests (especially those
---      where the fused operation makes a difference)
---   2. Multiply tests (third operand is neutral zero [0E+emax])
---   3. Addition tests (first operand is 1)
--- The multiply and addition tests are extensive because FMA may have
--- its own dedicated multiplication or addition routine(s), and they
--- also inherently check the left-to-right properties.
-
--- Sanity checks
-dqfma0001 fma  1   1   1 ->   2
-dqfma0002 fma  1   1   2 ->   3
-dqfma0003 fma  2   2   3 ->   7
-dqfma0004 fma  9   9   9 ->  90
-dqfma0005 fma -1   1   1 ->   0
-dqfma0006 fma -1   1   2 ->   1
-dqfma0007 fma -2   2   3 ->  -1
-dqfma0008 fma -9   9   9 -> -72
-dqfma0011 fma  1  -1   1 ->   0
-dqfma0012 fma  1  -1   2 ->   1
-dqfma0013 fma  2  -2   3 ->  -1
-dqfma0014 fma  9  -9   9 -> -72
-dqfma0015 fma  1   1  -1 ->   0
-dqfma0016 fma  1   1  -2 ->  -1
-dqfma0017 fma  2   2  -3 ->   1
-dqfma0018 fma  9   9  -9 ->  72
-
--- non-integer exacts
-dqfma0100  fma    25.2   63.6   -438  ->  1164.72
-dqfma0101  fma   0.301  0.380    334  ->  334.114380
-dqfma0102  fma    49.2   -4.8   23.3  ->  -212.86
-dqfma0103  fma    4.22  0.079  -94.6  ->  -94.26662
-dqfma0104  fma     903  0.797  0.887  ->  720.578
-dqfma0105  fma    6.13   -161   65.9  ->  -921.03
-dqfma0106  fma    28.2    727   5.45  ->  20506.85
-dqfma0107  fma       4    605    688  ->  3108
-dqfma0108  fma    93.3   0.19  0.226  ->  17.953
-dqfma0109  fma   0.169   -341   5.61  ->  -52.019
-dqfma0110  fma   -72.2     30  -51.2  ->  -2217.2
-dqfma0111  fma  -0.409     13   20.4  ->  15.083
-dqfma0112  fma     317   77.0   19.0  ->  24428.0
-dqfma0113  fma      47   6.58   1.62  ->  310.88
-dqfma0114  fma    1.36  0.984  0.493  ->  1.83124
-dqfma0115  fma    72.7    274   1.56  ->  19921.36
-dqfma0116  fma     335    847     83  ->  283828
-dqfma0117  fma     666  0.247   25.4  ->  189.902
-dqfma0118  fma   -3.87   3.06   78.0  ->  66.1578
-dqfma0119  fma   0.742    192   35.6  ->  178.064
-dqfma0120  fma   -91.6   5.29  0.153  ->  -484.411
-
--- cases where result is different from separate multiply + add; each
--- is preceded by the result of unfused multiply and add
--- [this is about 20% of all similar  cases in general]
---                                                                                                            ->  4.500119002100000209469729375698778E+38
-dqfma0202  fma       68537985861355864457.5694      6565875762972086605.85969       35892634447236753.172812  ->  4.500119002100000209469729375698779E+38 Inexact Rounded
---                                                                                                            ->  5.996248469584594346858881620185514E+41
-dqfma0208  fma          89261822344727628571.9      6717595845654131383336.89      5061036497288796076266.11  ->  5.996248469584594346858881620185513E+41 Inexact Rounded
---                                                                                                            ->  1.899242968678256924021594770874070E+34
-dqfma0210  fma       320506237232448685.495971       59257597764017967.984448      3205615239077711589912.85  ->  1.899242968678256924021594770874071E+34 Inexact Rounded
---                                                                                                            ->  7.078596978842809537929699954860309E+37
-dqfma0215  fma        220247843259112263.17995       321392340287987979002.80        47533279819997167655440  ->  7.078596978842809537929699954860308E+37 Inexact Rounded
---                                                                                                            ->  1.224955667581427559754106862350743E+37
-dqfma0226  fma       23880729790368880412.1449       512947333827064719.55407      217117438419590824502.963  ->  1.224955667581427559754106862350744E+37 Inexact Rounded
---                                                                                                            ->  -2.530094043253148806272276368579144E+42
-dqfma0229  fma        2539892357016099706.4126      -996142232667504817717435       53682082598315949425.937  ->  -2.530094043253148806272276368579143E+42 Inexact Rounded
---                                                                                                            ->  1.713387085759711954319391412788454E+37
-dqfma0233  fma        4546339491341624464.0804            3768717864169205581       83578980278690395184.620  ->  1.713387085759711954319391412788453E+37 Inexact Rounded
---                                                                                                            ->  4.062275663405823716411579117771547E+35
-dqfma0235  fma        409242119433816131.42253      992633815166741501.477249        70179636544416756129546  ->  4.062275663405823716411579117771548E+35 Inexact Rounded
---                                                                                                            ->  6.002604327732568490562249875306823E+47
-dqfma0258  fma        817941336593541742159684       733867339769310729266598      78563844650942419311830.8  ->  6.002604327732568490562249875306822E+47 Inexact Rounded
---                                                                                                            ->  -2.027022514381452197510103395283874E+39
-dqfma0264  fma       387617310169161270.737532     -5229442703414956061216.62      57665666816652967150473.5  ->  -2.027022514381452197510103395283873E+39 Inexact Rounded
---                                                                                                            ->  -7.856525039803554001144089842730361E+37
-dqfma0267  fma      -847655845720565274701.210        92685316564117739.83984      22780950041376424429.5686  ->  -7.856525039803554001144089842730360E+37 Inexact Rounded
---                                                                                                            ->  1.695515562011520746125607502237559E+38
-dqfma0268  fma          21590290365127685.3675       7853139227576541379426.8       -3275859437236180.761544  ->  1.695515562011520746125607502237558E+38 Inexact Rounded
---                                                                                                            ->  -8.448422935783289219748115038014710E+38
-dqfma0269  fma      -974320636272862697.971586      867109103641860247440.756        -9775170775902454762.98  ->  -8.448422935783289219748115038014709E+38 Inexact Rounded
-
--- Cases where multiply would overflow or underflow if separate
-dqfma0300  fma   9e+6144    10   0         -> Infinity  Overflow Inexact Rounded
-dqfma0301  fma   1e+6144    10   0         -> Infinity  Overflow Inexact Rounded
-dqfma0302  fma   1e+6144    10   -1e+6144  -> 9.000000000000000000000000000000000E+6144 Clamped
-dqfma0303  fma   1e+6144    10   -9e+6144  -> 1.000000000000000000000000000000000E+6144 Clamped
--- subnormal etc.
-dqfma0305  fma   1e-6176    0.1  0         -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqfma0306  fma   1e-6176    0.1  1         -> 1.000000000000000000000000000000000 Inexact Rounded
-dqfma0307  fma   1e-6176    0.1  1e-6176   -> 1E-6176 Underflow Subnormal Inexact Rounded
-
--- Infinite combinations
-dqfma0800 fma  Inf   Inf   Inf    ->  Infinity
-dqfma0801 fma  Inf   Inf  -Inf    ->  NaN Invalid_operation
-dqfma0802 fma  Inf  -Inf   Inf    ->  NaN Invalid_operation
-dqfma0803 fma  Inf  -Inf  -Inf    -> -Infinity
-dqfma0804 fma -Inf   Inf   Inf    ->  NaN Invalid_operation
-dqfma0805 fma -Inf   Inf  -Inf    -> -Infinity
-dqfma0806 fma -Inf  -Inf   Inf    ->  Infinity
-dqfma0807 fma -Inf  -Inf  -Inf    ->  NaN Invalid_operation
-
--- Triple NaN propagation
-dqfma0900 fma  NaN2  NaN3  NaN5   ->  NaN2
-dqfma0901 fma  0     NaN3  NaN5   ->  NaN3
-dqfma0902 fma  0     0     NaN5   ->  NaN5
--- first sNaN wins (consider qNaN from earlier sNaN being
--- overridden by an sNaN in third operand)
-dqfma0903 fma  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation
-dqfma0904 fma  0     sNaN2 sNaN3  ->  NaN2 Invalid_operation
-dqfma0905 fma  0     0     sNaN3  ->  NaN3 Invalid_operation
-dqfma0906 fma  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation
-dqfma0907 fma  NaN7  sNaN2 sNaN3  ->  NaN2 Invalid_operation
-dqfma0908 fma  NaN7  NaN5  sNaN3  ->  NaN3 Invalid_operation
-
--- MULTIPLICATION TESTS ------------------------------------------------
-rounding:    half_even
-
--- sanity checks
-dqfma2000 fma  2      2   0e+6144  -> 4
-dqfma2001 fma  2      3   0e+6144  -> 6
-dqfma2002 fma  5      1   0e+6144  -> 5
-dqfma2003 fma  5      2   0e+6144  -> 10
-dqfma2004 fma  1.20   2   0e+6144  -> 2.40
-dqfma2005 fma  1.20   0   0e+6144  -> 0.00
-dqfma2006 fma  1.20  -2   0e+6144  -> -2.40
-dqfma2007 fma  -1.20  2   0e+6144  -> -2.40
-dqfma2008 fma  -1.20  0   0e+6144  -> 0.00
-dqfma2009 fma  -1.20 -2   0e+6144  -> 2.40
-dqfma2010 fma  5.09 7.1   0e+6144  -> 36.139
-dqfma2011 fma  2.5    4   0e+6144  -> 10.0
-dqfma2012 fma  2.50   4   0e+6144  -> 10.00
-dqfma2013 fma  1.23456789 1.0000000000000000000000000000   0e+6144  -> 1.234567890000000000000000000000000 Rounded
-dqfma2015 fma  2.50   4   0e+6144  -> 10.00
-dqfma2016 fma   9.99999999999999999  9.99999999999999999   0e+6144  ->  99.99999999999999980000000000000000 Inexact Rounded
-dqfma2017 fma   9.99999999999999999 -9.99999999999999999   0e+6144  -> -99.99999999999999980000000000000000 Inexact Rounded
-dqfma2018 fma  -9.99999999999999999  9.99999999999999999   0e+6144  -> -99.99999999999999980000000000000000 Inexact Rounded
-dqfma2019 fma  -9.99999999999999999 -9.99999999999999999   0e+6144  ->  99.99999999999999980000000000000000 Inexact Rounded
-
--- zeros, etc.
-dqfma2021 fma   0      0       0e+6144  ->  0
-dqfma2022 fma   0     -0       0e+6144  ->  0
-dqfma2023 fma  -0      0       0e+6144  ->  0
-dqfma2024 fma  -0     -0       0e+6144  ->  0
-dqfma2025 fma  -0.0   -0.0     0e+6144  ->  0.00
-dqfma2026 fma  -0.0   -0.0     0e+6144  ->  0.00
-dqfma2027 fma  -0.0   -0.0     0e+6144  ->  0.00
-dqfma2028 fma  -0.0   -0.0     0e+6144  ->  0.00
-dqfma2030 fma   5.00   1E-3    0e+6144  ->  0.00500
-dqfma2031 fma   00.00  0.000   0e+6144  ->  0.00000
-dqfma2032 fma   00.00  0E-3    0e+6144  ->  0.00000     -- rhs is 0
-dqfma2033 fma   0E-3   00.00   0e+6144  ->  0.00000     -- lhs is 0
-dqfma2034 fma  -5.00   1E-3    0e+6144  -> -0.00500
-dqfma2035 fma  -00.00  0.000   0e+6144  ->  0.00000
-dqfma2036 fma  -00.00  0E-3    0e+6144  ->  0.00000     -- rhs is 0
-dqfma2037 fma  -0E-3   00.00   0e+6144  ->  0.00000     -- lhs is 0
-dqfma2038 fma   5.00  -1E-3    0e+6144  -> -0.00500
-dqfma2039 fma   00.00 -0.000   0e+6144  ->  0.00000
-dqfma2040 fma   00.00 -0E-3    0e+6144  ->  0.00000     -- rhs is 0
-dqfma2041 fma   0E-3  -00.00   0e+6144  ->  0.00000     -- lhs is 0
-dqfma2042 fma  -5.00  -1E-3    0e+6144  ->  0.00500
-dqfma2043 fma  -00.00 -0.000   0e+6144  ->  0.00000
-dqfma2044 fma  -00.00 -0E-3    0e+6144  ->  0.00000     -- rhs is 0
-dqfma2045 fma  -0E-3  -00.00   0e+6144  ->  0.00000     -- lhs is 0
-
--- examples from decarith
-dqfma2050 fma  1.20 3          0e+6144  -> 3.60
-dqfma2051 fma  7    3          0e+6144  -> 21
-dqfma2052 fma  0.9  0.8        0e+6144  -> 0.72
-dqfma2053 fma  0.9  -0         0e+6144  -> 0.0
-dqfma2054 fma  654321 654321   0e+6144  -> 428135971041
-
-dqfma2060 fma  123.45 1e7    0e+6144  ->  1.2345E+9
-dqfma2061 fma  123.45 1e8    0e+6144  ->  1.2345E+10
-dqfma2062 fma  123.45 1e+9   0e+6144  ->  1.2345E+11
-dqfma2063 fma  123.45 1e10   0e+6144  ->  1.2345E+12
-dqfma2064 fma  123.45 1e11   0e+6144  ->  1.2345E+13
-dqfma2065 fma  123.45 1e12   0e+6144  ->  1.2345E+14
-dqfma2066 fma  123.45 1e13   0e+6144  ->  1.2345E+15
-
-
--- test some intermediate lengths
---                    1234567890123456
-dqfma2080 fma  0.1 1230123456456789       0e+6144  -> 123012345645678.9
-dqfma2084 fma  0.1 1230123456456789       0e+6144  -> 123012345645678.9
-dqfma2090 fma  1230123456456789     0.1   0e+6144  -> 123012345645678.9
-dqfma2094 fma  1230123456456789     0.1   0e+6144  -> 123012345645678.9
-
--- test some more edge cases and carries
-dqfma2101 fma  9 9     0e+6144  -> 81
-dqfma2102 fma  9 90     0e+6144  -> 810
-dqfma2103 fma  9 900     0e+6144  -> 8100
-dqfma2104 fma  9 9000     0e+6144  -> 81000
-dqfma2105 fma  9 90000     0e+6144  -> 810000
-dqfma2106 fma  9 900000     0e+6144  -> 8100000
-dqfma2107 fma  9 9000000     0e+6144  -> 81000000
-dqfma2108 fma  9 90000000     0e+6144  -> 810000000
-dqfma2109 fma  9 900000000     0e+6144  -> 8100000000
-dqfma2110 fma  9 9000000000     0e+6144  -> 81000000000
-dqfma2111 fma  9 90000000000     0e+6144  -> 810000000000
-dqfma2112 fma  9 900000000000     0e+6144  -> 8100000000000
-dqfma2113 fma  9 9000000000000     0e+6144  -> 81000000000000
-dqfma2114 fma  9 90000000000000     0e+6144  -> 810000000000000
-dqfma2115 fma  9 900000000000000     0e+6144  -> 8100000000000000
---dqfma2116 fma  9 9000000000000000     0e+6144  -> 81000000000000000
---dqfma2117 fma  9 90000000000000000     0e+6144  -> 810000000000000000
---dqfma2118 fma  9 900000000000000000     0e+6144  -> 8100000000000000000
---dqfma2119 fma  9 9000000000000000000     0e+6144  -> 81000000000000000000
---dqfma2120 fma  9 90000000000000000000     0e+6144  -> 810000000000000000000
---dqfma2121 fma  9 900000000000000000000     0e+6144  -> 8100000000000000000000
---dqfma2122 fma  9 9000000000000000000000     0e+6144  -> 81000000000000000000000
---dqfma2123 fma  9 90000000000000000000000     0e+6144  -> 810000000000000000000000
--- test some more edge cases without carries
-dqfma2131 fma  3 3     0e+6144  -> 9
-dqfma2132 fma  3 30     0e+6144  -> 90
-dqfma2133 fma  3 300     0e+6144  -> 900
-dqfma2134 fma  3 3000     0e+6144  -> 9000
-dqfma2135 fma  3 30000     0e+6144  -> 90000
-dqfma2136 fma  3 300000     0e+6144  -> 900000
-dqfma2137 fma  3 3000000     0e+6144  -> 9000000
-dqfma2138 fma  3 30000000     0e+6144  -> 90000000
-dqfma2139 fma  3 300000000     0e+6144  -> 900000000
-dqfma2140 fma  3 3000000000     0e+6144  -> 9000000000
-dqfma2141 fma  3 30000000000     0e+6144  -> 90000000000
-dqfma2142 fma  3 300000000000     0e+6144  -> 900000000000
-dqfma2143 fma  3 3000000000000     0e+6144  -> 9000000000000
-dqfma2144 fma  3 30000000000000     0e+6144  -> 90000000000000
-dqfma2145 fma  3 300000000000000     0e+6144  -> 900000000000000
-dqfma2146 fma  3 3000000000000000     0e+6144  -> 9000000000000000
-dqfma2147 fma  3 30000000000000000     0e+6144  -> 90000000000000000
-dqfma2148 fma  3 300000000000000000     0e+6144  -> 900000000000000000
-dqfma2149 fma  3 3000000000000000000     0e+6144  -> 9000000000000000000
-dqfma2150 fma  3 30000000000000000000     0e+6144  -> 90000000000000000000
-dqfma2151 fma  3 300000000000000000000     0e+6144  -> 900000000000000000000
-dqfma2152 fma  3 3000000000000000000000     0e+6144  -> 9000000000000000000000
-dqfma2153 fma  3 30000000000000000000000     0e+6144  -> 90000000000000000000000
-
-dqfma2263 fma  30269.587755640502150977251770554 4.8046009735990873395936309640543   0e+6144  -> 145433.2908011933696719165119928296 Inexact Rounded
-
--- test some edge cases with exact rounding
-dqfma2301 fma  900000000000000000 9     0e+6144  -> 8100000000000000000
-dqfma2302 fma  900000000000000000 90     0e+6144  -> 81000000000000000000
-dqfma2303 fma  900000000000000000 900     0e+6144  -> 810000000000000000000
-dqfma2304 fma  900000000000000000 9000     0e+6144  -> 8100000000000000000000
-dqfma2305 fma  900000000000000000 90000     0e+6144  -> 81000000000000000000000
-dqfma2306 fma  900000000000000000 900000     0e+6144  -> 810000000000000000000000
-dqfma2307 fma  900000000000000000 9000000     0e+6144  -> 8100000000000000000000000
-dqfma2308 fma  900000000000000000 90000000     0e+6144  -> 81000000000000000000000000
-dqfma2309 fma  900000000000000000 900000000     0e+6144  -> 810000000000000000000000000
-dqfma2310 fma  900000000000000000 9000000000     0e+6144  -> 8100000000000000000000000000
-dqfma2311 fma  900000000000000000 90000000000     0e+6144  -> 81000000000000000000000000000
-dqfma2312 fma  900000000000000000 900000000000     0e+6144  -> 810000000000000000000000000000
-dqfma2313 fma  900000000000000000 9000000000000     0e+6144  -> 8100000000000000000000000000000
-dqfma2314 fma  900000000000000000 90000000000000     0e+6144  -> 81000000000000000000000000000000
-dqfma2315 fma  900000000000000000 900000000000000     0e+6144  -> 810000000000000000000000000000000
-dqfma2316 fma  900000000000000000 9000000000000000     0e+6144  -> 8100000000000000000000000000000000
-dqfma2317 fma  9000000000000000000 9000000000000000     0e+6144  -> 8.100000000000000000000000000000000E+34  Rounded
-dqfma2318 fma  90000000000000000000 9000000000000000     0e+6144  -> 8.100000000000000000000000000000000E+35  Rounded
-dqfma2319 fma  900000000000000000000 9000000000000000     0e+6144  -> 8.100000000000000000000000000000000E+36  Rounded
-dqfma2320 fma  9000000000000000000000 9000000000000000     0e+6144  -> 8.100000000000000000000000000000000E+37  Rounded
-dqfma2321 fma  90000000000000000000000 9000000000000000     0e+6144  -> 8.100000000000000000000000000000000E+38  Rounded
-dqfma2322 fma  900000000000000000000000 9000000000000000     0e+6144  -> 8.100000000000000000000000000000000E+39  Rounded
-dqfma2323 fma  9000000000000000000000000 9000000000000000     0e+6144  -> 8.100000000000000000000000000000000E+40  Rounded
-
--- tryzeros cases
-dqfma2504  fma   0E-4260 1000E-4260    0e+6144  -> 0E-6176 Clamped
-dqfma2505  fma   100E+4260 0E+4260     0e+6144  -> 0E+6111 Clamped
-
--- mixed with zeros
-dqfma2541 fma   0    -1       0e+6144  ->  0
-dqfma2542 fma  -0    -1       0e+6144  ->  0
-dqfma2543 fma   0     1       0e+6144  ->  0
-dqfma2544 fma  -0     1       0e+6144  ->  0
-dqfma2545 fma  -1     0       0e+6144  ->  0
-dqfma2546 fma  -1    -0       0e+6144  ->  0
-dqfma2547 fma   1     0       0e+6144  ->  0
-dqfma2548 fma   1    -0       0e+6144  ->  0
-
-dqfma2551 fma   0.0  -1       0e+6144  ->  0.0
-dqfma2552 fma  -0.0  -1       0e+6144  ->  0.0
-dqfma2553 fma   0.0   1       0e+6144  ->  0.0
-dqfma2554 fma  -0.0   1       0e+6144  ->  0.0
-dqfma2555 fma  -1.0   0       0e+6144  ->  0.0
-dqfma2556 fma  -1.0  -0       0e+6144  ->  0.0
-dqfma2557 fma   1.0   0       0e+6144  ->  0.0
-dqfma2558 fma   1.0  -0       0e+6144  ->  0.0
-
-dqfma2561 fma   0    -1.0     0e+6144  ->  0.0
-dqfma2562 fma  -0    -1.0     0e+6144  ->  0.0
-dqfma2563 fma   0     1.0     0e+6144  ->  0.0
-dqfma2564 fma  -0     1.0     0e+6144  ->  0.0
-dqfma2565 fma  -1     0.0     0e+6144  ->  0.0
-dqfma2566 fma  -1    -0.0     0e+6144  ->  0.0
-dqfma2567 fma   1     0.0     0e+6144  ->  0.0
-dqfma2568 fma   1    -0.0     0e+6144  ->  0.0
-
-dqfma2571 fma   0.0  -1.0     0e+6144  ->  0.00
-dqfma2572 fma  -0.0  -1.0     0e+6144  ->  0.00
-dqfma2573 fma   0.0   1.0     0e+6144  ->  0.00
-dqfma2574 fma  -0.0   1.0     0e+6144  ->  0.00
-dqfma2575 fma  -1.0   0.0     0e+6144  ->  0.00
-dqfma2576 fma  -1.0  -0.0     0e+6144  ->  0.00
-dqfma2577 fma   1.0   0.0     0e+6144  ->  0.00
-dqfma2578 fma   1.0  -0.0     0e+6144  ->  0.00
-dqfma2579 fma   1.0   0.0     0e+6144  ->  0.00
-dqfma2530 fma  -1.0  -0.0     0e+6144  ->  0.00
-dqfma2531 fma  -1.0   0.0     0e+6144  ->  0.00
-dqfma2532 fma   1.0  -0.0    -0e+6144  -> -0.00
-dqfma2533 fma   1.0   0.0    -0e+6144  ->  0.00
-dqfma2534 fma  -1.0  -0.0    -0e+6144  ->  0.00
-dqfma2535 fma  -1.0   0.0    -0e+6144  -> -0.00
-
-
--- Specials
-dqfma2580 fma   Inf  -Inf     0e+6144  -> -Infinity
-dqfma2581 fma   Inf  -1000    0e+6144  -> -Infinity
-dqfma2582 fma   Inf  -1       0e+6144  -> -Infinity
-dqfma2583 fma   Inf  -0       0e+6144  ->  NaN  Invalid_operation
-dqfma2584 fma   Inf   0       0e+6144  ->  NaN  Invalid_operation
-dqfma2585 fma   Inf   1       0e+6144  ->  Infinity
-dqfma2586 fma   Inf   1000    0e+6144  ->  Infinity
-dqfma2587 fma   Inf   Inf     0e+6144  ->  Infinity
-dqfma2588 fma  -1000  Inf     0e+6144  -> -Infinity
-dqfma2589 fma  -Inf   Inf     0e+6144  -> -Infinity
-dqfma2590 fma  -1     Inf     0e+6144  -> -Infinity
-dqfma2591 fma  -0     Inf     0e+6144  ->  NaN  Invalid_operation
-dqfma2592 fma   0     Inf     0e+6144  ->  NaN  Invalid_operation
-dqfma2593 fma   1     Inf     0e+6144  ->  Infinity
-dqfma2594 fma   1000  Inf     0e+6144  ->  Infinity
-dqfma2595 fma   Inf   Inf     0e+6144  ->  Infinity
-
-dqfma2600 fma  -Inf  -Inf     0e+6144  ->  Infinity
-dqfma2601 fma  -Inf  -1000    0e+6144  ->  Infinity
-dqfma2602 fma  -Inf  -1       0e+6144  ->  Infinity
-dqfma2603 fma  -Inf  -0       0e+6144  ->  NaN  Invalid_operation
-dqfma2604 fma  -Inf   0       0e+6144  ->  NaN  Invalid_operation
-dqfma2605 fma  -Inf   1       0e+6144  -> -Infinity
-dqfma2606 fma  -Inf   1000    0e+6144  -> -Infinity
-dqfma2607 fma  -Inf   Inf     0e+6144  -> -Infinity
-dqfma2608 fma  -1000  Inf     0e+6144  -> -Infinity
-dqfma2609 fma  -Inf  -Inf     0e+6144  ->  Infinity
-dqfma2610 fma  -1    -Inf     0e+6144  ->  Infinity
-dqfma2611 fma  -0    -Inf     0e+6144  ->  NaN  Invalid_operation
-dqfma2612 fma   0    -Inf     0e+6144  ->  NaN  Invalid_operation
-dqfma2613 fma   1    -Inf     0e+6144  -> -Infinity
-dqfma2614 fma   1000 -Inf     0e+6144  -> -Infinity
-dqfma2615 fma   Inf  -Inf     0e+6144  -> -Infinity
-
-dqfma2621 fma   NaN -Inf      0e+6144  ->  NaN
-dqfma2622 fma   NaN -1000     0e+6144  ->  NaN
-dqfma2623 fma   NaN -1        0e+6144  ->  NaN
-dqfma2624 fma   NaN -0        0e+6144  ->  NaN
-dqfma2625 fma   NaN  0        0e+6144  ->  NaN
-dqfma2626 fma   NaN  1        0e+6144  ->  NaN
-dqfma2627 fma   NaN  1000     0e+6144  ->  NaN
-dqfma2628 fma   NaN  Inf      0e+6144  ->  NaN
-dqfma2629 fma   NaN  NaN      0e+6144  ->  NaN
-dqfma2630 fma  -Inf  NaN      0e+6144  ->  NaN
-dqfma2631 fma  -1000 NaN      0e+6144  ->  NaN
-dqfma2632 fma  -1    NaN      0e+6144  ->  NaN
-dqfma2633 fma  -0    NaN      0e+6144  ->  NaN
-dqfma2634 fma   0    NaN      0e+6144  ->  NaN
-dqfma2635 fma   1    NaN      0e+6144  ->  NaN
-dqfma2636 fma   1000 NaN      0e+6144  ->  NaN
-dqfma2637 fma   Inf  NaN      0e+6144  ->  NaN
-
-dqfma2641 fma   sNaN -Inf     0e+6144  ->  NaN  Invalid_operation
-dqfma2642 fma   sNaN -1000    0e+6144  ->  NaN  Invalid_operation
-dqfma2643 fma   sNaN -1       0e+6144  ->  NaN  Invalid_operation
-dqfma2644 fma   sNaN -0       0e+6144  ->  NaN  Invalid_operation
-dqfma2645 fma   sNaN  0       0e+6144  ->  NaN  Invalid_operation
-dqfma2646 fma   sNaN  1       0e+6144  ->  NaN  Invalid_operation
-dqfma2647 fma   sNaN  1000    0e+6144  ->  NaN  Invalid_operation
-dqfma2648 fma   sNaN  NaN     0e+6144  ->  NaN  Invalid_operation
-dqfma2649 fma   sNaN sNaN     0e+6144  ->  NaN  Invalid_operation
-dqfma2650 fma   NaN  sNaN     0e+6144  ->  NaN  Invalid_operation
-dqfma2651 fma  -Inf  sNaN     0e+6144  ->  NaN  Invalid_operation
-dqfma2652 fma  -1000 sNaN     0e+6144  ->  NaN  Invalid_operation
-dqfma2653 fma  -1    sNaN     0e+6144  ->  NaN  Invalid_operation
-dqfma2654 fma  -0    sNaN     0e+6144  ->  NaN  Invalid_operation
-dqfma2655 fma   0    sNaN     0e+6144  ->  NaN  Invalid_operation
-dqfma2656 fma   1    sNaN     0e+6144  ->  NaN  Invalid_operation
-dqfma2657 fma   1000 sNaN     0e+6144  ->  NaN  Invalid_operation
-dqfma2658 fma   Inf  sNaN     0e+6144  ->  NaN  Invalid_operation
-dqfma2659 fma   NaN  sNaN     0e+6144  ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqfma2661 fma   NaN9 -Inf     0e+6144  ->  NaN9
-dqfma2662 fma   NaN8  999     0e+6144  ->  NaN8
-dqfma2663 fma   NaN71 Inf     0e+6144  ->  NaN71
-dqfma2664 fma   NaN6  NaN5    0e+6144  ->  NaN6
-dqfma2665 fma  -Inf   NaN4    0e+6144  ->  NaN4
-dqfma2666 fma  -999   NaN33   0e+6144  ->  NaN33
-dqfma2667 fma   Inf   NaN2    0e+6144  ->  NaN2
-
-dqfma2671 fma   sNaN99 -Inf      0e+6144  ->  NaN99 Invalid_operation
-dqfma2672 fma   sNaN98 -11       0e+6144  ->  NaN98 Invalid_operation
-dqfma2673 fma   sNaN97  NaN      0e+6144  ->  NaN97 Invalid_operation
-dqfma2674 fma   sNaN16 sNaN94    0e+6144  ->  NaN16 Invalid_operation
-dqfma2675 fma   NaN95  sNaN93    0e+6144  ->  NaN93 Invalid_operation
-dqfma2676 fma  -Inf    sNaN92    0e+6144  ->  NaN92 Invalid_operation
-dqfma2677 fma   088    sNaN91    0e+6144  ->  NaN91 Invalid_operation
-dqfma2678 fma   Inf    sNaN90    0e+6144  ->  NaN90 Invalid_operation
-dqfma2679 fma   NaN    sNaN89    0e+6144  ->  NaN89 Invalid_operation
-
-dqfma2681 fma  -NaN9 -Inf     0e+6144  -> -NaN9
-dqfma2682 fma  -NaN8  999     0e+6144  -> -NaN8
-dqfma2683 fma  -NaN71 Inf     0e+6144  -> -NaN71
-dqfma2684 fma  -NaN6 -NaN5    0e+6144  -> -NaN6
-dqfma2685 fma  -Inf  -NaN4    0e+6144  -> -NaN4
-dqfma2686 fma  -999  -NaN33   0e+6144  -> -NaN33
-dqfma2687 fma   Inf  -NaN2    0e+6144  -> -NaN2
-
-dqfma2691 fma  -sNaN99 -Inf      0e+6144  -> -NaN99 Invalid_operation
-dqfma2692 fma  -sNaN98 -11       0e+6144  -> -NaN98 Invalid_operation
-dqfma2693 fma  -sNaN97  NaN      0e+6144  -> -NaN97 Invalid_operation
-dqfma2694 fma  -sNaN16 -sNaN94   0e+6144  -> -NaN16 Invalid_operation
-dqfma2695 fma  -NaN95  -sNaN93   0e+6144  -> -NaN93 Invalid_operation
-dqfma2696 fma  -Inf    -sNaN92   0e+6144  -> -NaN92 Invalid_operation
-dqfma2697 fma   088    -sNaN91   0e+6144  -> -NaN91 Invalid_operation
-dqfma2698 fma   Inf    -sNaN90   0e+6144  -> -NaN90 Invalid_operation
-dqfma2699 fma  -NaN    -sNaN89   0e+6144  -> -NaN89 Invalid_operation
-
-dqfma2701 fma  -NaN  -Inf     0e+6144  -> -NaN
-dqfma2702 fma  -NaN   999     0e+6144  -> -NaN
-dqfma2703 fma  -NaN   Inf     0e+6144  -> -NaN
-dqfma2704 fma  -NaN  -NaN     0e+6144  -> -NaN
-dqfma2705 fma  -Inf  -NaN0    0e+6144  -> -NaN
-dqfma2706 fma  -999  -NaN     0e+6144  -> -NaN
-dqfma2707 fma   Inf  -NaN     0e+6144  -> -NaN
-
-dqfma2711 fma  -sNaN   -Inf      0e+6144  -> -NaN Invalid_operation
-dqfma2712 fma  -sNaN   -11       0e+6144  -> -NaN Invalid_operation
-dqfma2713 fma  -sNaN00  NaN      0e+6144  -> -NaN Invalid_operation
-dqfma2714 fma  -sNaN   -sNaN     0e+6144  -> -NaN Invalid_operation
-dqfma2715 fma  -NaN    -sNaN     0e+6144  -> -NaN Invalid_operation
-dqfma2716 fma  -Inf    -sNaN     0e+6144  -> -NaN Invalid_operation
-dqfma2717 fma   088    -sNaN     0e+6144  -> -NaN Invalid_operation
-dqfma2718 fma   Inf    -sNaN     0e+6144  -> -NaN Invalid_operation
-dqfma2719 fma  -NaN    -sNaN     0e+6144  -> -NaN Invalid_operation
-
--- overflow and underflow tests .. note subnormal results
--- signs
-dqfma2751 fma   1e+4277  1e+3311   0e+6144  ->  Infinity Overflow Inexact Rounded
-dqfma2752 fma   1e+4277 -1e+3311   0e+6144  -> -Infinity Overflow Inexact Rounded
-dqfma2753 fma  -1e+4277  1e+3311   0e+6144  -> -Infinity Overflow Inexact Rounded
-dqfma2754 fma  -1e+4277 -1e+3311   0e+6144  ->  Infinity Overflow Inexact Rounded
-dqfma2755 fma   1e-4277  1e-3311   0e+6144  ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqfma2756 fma   1e-4277 -1e-3311   0e+6144  -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqfma2757 fma  -1e-4277  1e-3311   0e+6144  -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqfma2758 fma  -1e-4277 -1e-3311   0e+6144  ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped
-
--- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
-dqfma2760 fma  1e-6069 1e-101   0e+6144  -> 1E-6170 Subnormal
-dqfma2761 fma  1e-6069 1e-102   0e+6144  -> 1E-6171 Subnormal
-dqfma2762 fma  1e-6069 1e-103   0e+6144  -> 1E-6172 Subnormal
-dqfma2763 fma  1e-6069 1e-104   0e+6144  -> 1E-6173 Subnormal
-dqfma2764 fma  1e-6069 1e-105   0e+6144  -> 1E-6174 Subnormal
-dqfma2765 fma  1e-6069 1e-106   0e+6144  -> 1E-6175 Subnormal
-dqfma2766 fma  1e-6069 1e-107   0e+6144  -> 1E-6176 Subnormal
-dqfma2767 fma  1e-6069 1e-108   0e+6144  -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqfma2768 fma  1e-6069 1e-109   0e+6144  -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqfma2769 fma  1e-6069 1e-110   0e+6144  -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
--- [no equivalent of 'subnormal' for overflow]
-dqfma2770 fma  1e+40 1e+6101   0e+6144  -> 1.000000000000000000000000000000E+6141 Clamped
-dqfma2771 fma  1e+40 1e+6102   0e+6144  -> 1.0000000000000000000000000000000E+6142  Clamped
-dqfma2772 fma  1e+40 1e+6103   0e+6144  -> 1.00000000000000000000000000000000E+6143  Clamped
-dqfma2773 fma  1e+40 1e+6104   0e+6144  -> 1.000000000000000000000000000000000E+6144  Clamped
-dqfma2774 fma  1e+40 1e+6105   0e+6144  -> Infinity Overflow Inexact Rounded
-dqfma2775 fma  1e+40 1e+6106   0e+6144  -> Infinity Overflow Inexact Rounded
-dqfma2776 fma  1e+40 1e+6107   0e+6144  -> Infinity Overflow Inexact Rounded
-dqfma2777 fma  1e+40 1e+6108   0e+6144  -> Infinity Overflow Inexact Rounded
-dqfma2778 fma  1e+40 1e+6109   0e+6144  -> Infinity Overflow Inexact Rounded
-dqfma2779 fma  1e+40 1e+6110   0e+6144  -> Infinity Overflow Inexact Rounded
-
-dqfma2801 fma   1.0000E-6172  1       0e+6144  -> 1.0000E-6172 Subnormal
-dqfma2802 fma   1.000E-6172   1e-1    0e+6144  -> 1.000E-6173  Subnormal
-dqfma2803 fma   1.00E-6172    1e-2    0e+6144  -> 1.00E-6174   Subnormal
-dqfma2804 fma   1.0E-6172     1e-3    0e+6144  -> 1.0E-6175    Subnormal
-dqfma2805 fma   1.0E-6172     1e-4    0e+6144  -> 1E-6176     Subnormal Rounded
-dqfma2806 fma   1.3E-6172     1e-4    0e+6144  -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqfma2807 fma   1.5E-6172     1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqfma2808 fma   1.7E-6172     1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqfma2809 fma   2.3E-6172     1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqfma2810 fma   2.5E-6172     1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqfma2811 fma   2.7E-6172     1e-4    0e+6144  -> 3E-6176     Underflow Subnormal Inexact Rounded
-dqfma2812 fma   1.49E-6172    1e-4    0e+6144  -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqfma2813 fma   1.50E-6172    1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqfma2814 fma   1.51E-6172    1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqfma2815 fma   2.49E-6172    1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqfma2816 fma   2.50E-6172    1e-4    0e+6144  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqfma2817 fma   2.51E-6172    1e-4    0e+6144  -> 3E-6176     Underflow Subnormal Inexact Rounded
-
-dqfma2818 fma   1E-6172       1e-4    0e+6144  -> 1E-6176     Subnormal
-dqfma2819 fma   3E-6172       1e-5    0e+6144  -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
-dqfma2820 fma   5E-6172       1e-5    0e+6144  -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
-dqfma2821 fma   7E-6172       1e-5    0e+6144  -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqfma2822 fma   9E-6172       1e-5    0e+6144  -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqfma2823 fma   9.9E-6172     1e-5    0e+6144  -> 1E-6176     Underflow Subnormal Inexact Rounded
-
-dqfma2824 fma   1E-6172      -1e-4    0e+6144  -> -1E-6176    Subnormal
-dqfma2825 fma   3E-6172      -1e-5    0e+6144  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped
-dqfma2826 fma  -5E-6172       1e-5    0e+6144  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped
-dqfma2827 fma   7E-6172      -1e-5    0e+6144  -> -1E-6176    Underflow Subnormal Inexact Rounded
-dqfma2828 fma  -9E-6172       1e-5    0e+6144  -> -1E-6176    Underflow Subnormal Inexact Rounded
-dqfma2829 fma   9.9E-6172    -1e-5    0e+6144  -> -1E-6176    Underflow Subnormal Inexact Rounded
-dqfma2830 fma   3.0E-6172    -1e-5    0e+6144  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped
-
-dqfma2831 fma   1.0E-5977     1e-200   0e+6144  -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqfma2832 fma   1.0E-5977     1e-199   0e+6144  -> 1E-6176    Subnormal Rounded
-dqfma2833 fma   1.0E-5977     1e-198   0e+6144  -> 1.0E-6175    Subnormal
-dqfma2834 fma   2.0E-5977     2e-198   0e+6144  -> 4.0E-6175    Subnormal
-dqfma2835 fma   4.0E-5977     4e-198   0e+6144  -> 1.60E-6174   Subnormal
-dqfma2836 fma  10.0E-5977    10e-198   0e+6144  -> 1.000E-6173  Subnormal
-dqfma2837 fma  30.0E-5977    30e-198   0e+6144  -> 9.000E-6173  Subnormal
-dqfma2838 fma  40.0E-5982    40e-166   0e+6144  -> 1.6000E-6145 Subnormal
-dqfma2839 fma  40.0E-5982    40e-165   0e+6144  -> 1.6000E-6144 Subnormal
-dqfma2840 fma  40.0E-5982    40e-164   0e+6144  -> 1.6000E-6143
-
--- Long operand overflow may be a different path
-dqfma2870 fma  100  9.999E+6143       0e+6144  ->  Infinity Inexact Overflow Rounded
-dqfma2871 fma  100 -9.999E+6143       0e+6144  -> -Infinity Inexact Overflow Rounded
-dqfma2872 fma       9.999E+6143 100   0e+6144  ->  Infinity Inexact Overflow Rounded
-dqfma2873 fma      -9.999E+6143 100   0e+6144  -> -Infinity Inexact Overflow Rounded
-
--- check for double-rounded subnormals
-dqfma2881 fma   1.2347E-6133 1.2347E-40    0e+6144  ->  1.524E-6173 Inexact Rounded Subnormal Underflow
-dqfma2882 fma   1.234E-6133 1.234E-40      0e+6144  ->  1.523E-6173 Inexact Rounded Subnormal Underflow
-dqfma2883 fma   1.23E-6133  1.23E-40       0e+6144  ->  1.513E-6173 Inexact Rounded Subnormal Underflow
-dqfma2884 fma   1.2E-6133   1.2E-40        0e+6144  ->  1.44E-6173  Subnormal
-dqfma2885 fma   1.2E-6133   1.2E-41        0e+6144  ->  1.44E-6174  Subnormal
-dqfma2886 fma   1.2E-6133   1.2E-42        0e+6144  ->  1.4E-6175   Subnormal Inexact Rounded Underflow
-dqfma2887 fma   1.2E-6133   1.3E-42        0e+6144  ->  1.6E-6175   Subnormal Inexact Rounded Underflow
-dqfma2888 fma   1.3E-6133   1.3E-42        0e+6144  ->  1.7E-6175   Subnormal Inexact Rounded Underflow
-dqfma2889 fma   1.3E-6133   1.3E-43        0e+6144  ->    2E-6176   Subnormal Inexact Rounded Underflow
-dqfma2890 fma   1.3E-6134   1.3E-43        0e+6144  ->    0E-6176   Clamped Subnormal Inexact Rounded Underflow
-
-dqfma2891 fma   1.2345E-39    1.234E-6133   0e+6144  ->  1.5234E-6172 Inexact Rounded Subnormal Underflow
-dqfma2892 fma   1.23456E-39   1.234E-6133   0e+6144  ->  1.5234E-6172 Inexact Rounded Subnormal Underflow
-dqfma2893 fma   1.2345E-40   1.234E-6133   0e+6144  ->  1.523E-6173  Inexact Rounded Subnormal Underflow
-dqfma2894 fma   1.23456E-40  1.234E-6133   0e+6144  ->  1.523E-6173  Inexact Rounded Subnormal Underflow
-dqfma2895 fma   1.2345E-41   1.234E-6133   0e+6144  ->  1.52E-6174   Inexact Rounded Subnormal Underflow
-dqfma2896 fma   1.23456E-41  1.234E-6133   0e+6144  ->  1.52E-6174   Inexact Rounded Subnormal Underflow
-
--- Now explore the case where we get a normal result with Underflow
--- prove operands are exact
-dqfma2906 fma   9.999999999999999999999999999999999E-6143  1                         0e+6144  -> 9.999999999999999999999999999999999E-6143
-dqfma2907 fma                        1  0.09999999999999999999999999999999999       0e+6144  -> 0.09999999999999999999999999999999999
--- the next rounds to Nmin
-dqfma2908 fma   9.999999999999999999999999999999999E-6143  0.09999999999999999999999999999999999       0e+6144  -> 1.000000000000000000000000000000000E-6143 Underflow Inexact Subnormal Rounded
-
--- hugest
-dqfma2909 fma  9999999999999999999999999999999999 9999999999999999999999999999999999   0e+6144  -> 9.999999999999999999999999999999998E+67 Inexact Rounded
-
--- Examples from SQL proposal (Krishna Kulkarni)
-precision:   34
-rounding:    half_up
-maxExponent: 6144
-minExponent: -6143
-dqfma21001  fma  130E-2  120E-2   0e+6144  -> 1.5600
-dqfma21002  fma  130E-2  12E-1    0e+6144  -> 1.560
-dqfma21003  fma  130E-2  1E0      0e+6144  -> 1.30
-dqfma21004  fma  1E2     1E4      0e+6144  -> 1E+6
-
--- Null tests
-dqfma2990 fma  10  #   0e+6144  -> NaN Invalid_operation
-dqfma2991 fma   # 10   0e+6144  -> NaN Invalid_operation
-
-
--- ADDITION TESTS ------------------------------------------------------
-rounding:    half_even
-
--- [first group are 'quick confidence check']
-dqadd3001 fma  1  1       1       ->  2
-dqadd3002 fma  1  2       3       ->  5
-dqadd3003 fma  1  '5.75'  '3.3'   ->  9.05
-dqadd3004 fma  1  '5'     '-3'    ->  2
-dqadd3005 fma  1  '-5'    '-3'    ->  -8
-dqadd3006 fma  1  '-7'    '2.5'   ->  -4.5
-dqadd3007 fma  1  '0.7'   '0.3'   ->  1.0
-dqadd3008 fma  1  '1.25'  '1.25'  ->  2.50
-dqadd3009 fma  1  '1.23456789'  '1.00000000' -> '2.23456789'
-dqadd3010 fma  1  '1.23456789'  '1.00000011' -> '2.23456800'
-
---             1234567890123456      1234567890123456
-dqadd3011 fma  1  '0.4444444444444444444444444444444446'  '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Inexact Rounded
-dqadd3012 fma  1  '0.4444444444444444444444444444444445'  '0.5555555555555555555555555555555555' -> '1.000000000000000000000000000000000' Rounded
-dqadd3013 fma  1  '0.4444444444444444444444444444444444'  '0.5555555555555555555555555555555555' -> '0.9999999999999999999999999999999999'
-dqadd3014 fma  1    '4444444444444444444444444444444444' '0.49'   -> '4444444444444444444444444444444444' Inexact Rounded
-dqadd3015 fma  1    '4444444444444444444444444444444444' '0.499'  -> '4444444444444444444444444444444444' Inexact Rounded
-dqadd3016 fma  1    '4444444444444444444444444444444444' '0.4999' -> '4444444444444444444444444444444444' Inexact Rounded
-dqadd3017 fma  1    '4444444444444444444444444444444444' '0.5000' -> '4444444444444444444444444444444444' Inexact Rounded
-dqadd3018 fma  1    '4444444444444444444444444444444444' '0.5001' -> '4444444444444444444444444444444445' Inexact Rounded
-dqadd3019 fma  1    '4444444444444444444444444444444444' '0.501'  -> '4444444444444444444444444444444445' Inexact Rounded
-dqadd3020 fma  1    '4444444444444444444444444444444444' '0.51'   -> '4444444444444444444444444444444445' Inexact Rounded
-
-dqadd3021 fma  1  0 1 -> 1
-dqadd3022 fma  1  1 1 -> 2
-dqadd3023 fma  1  2 1 -> 3
-dqadd3024 fma  1  3 1 -> 4
-dqadd3025 fma  1  4 1 -> 5
-dqadd3026 fma  1  5 1 -> 6
-dqadd3027 fma  1  6 1 -> 7
-dqadd3028 fma  1  7 1 -> 8
-dqadd3029 fma  1  8 1 -> 9
-dqadd3030 fma  1  9 1 -> 10
-
--- some carrying effects
-dqadd3031 fma  1  '0.9998'  '0.0000' -> '0.9998'
-dqadd3032 fma  1  '0.9998'  '0.0001' -> '0.9999'
-dqadd3033 fma  1  '0.9998'  '0.0002' -> '1.0000'
-dqadd3034 fma  1  '0.9998'  '0.0003' -> '1.0001'
-
-dqadd3035 fma  1  '70'  '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
-dqadd3036 fma  1  '700'  '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
-dqadd3037 fma  1  '7000'  '10000e+34' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
-dqadd3038 fma  1  '70000'  '10000e+34' -> '1.000000000000000000000000000000001E+38' Inexact Rounded
-dqadd3039 fma  1  '700000'  '10000e+34' -> '1.000000000000000000000000000000007E+38' Rounded
-
--- symmetry:
-dqadd3040 fma  1  '10000e+34'  '70' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
-dqadd3041 fma  1  '10000e+34'  '700' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
-dqadd3042 fma  1  '10000e+34'  '7000' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
-dqadd3044 fma  1  '10000e+34'  '70000' -> '1.000000000000000000000000000000001E+38' Inexact Rounded
-dqadd3045 fma  1  '10000e+34'  '700000' -> '1.000000000000000000000000000000007E+38' Rounded
-
--- same, without rounding
-dqadd3046 fma  1  '10000e+9'  '7' -> '10000000000007'
-dqadd3047 fma  1  '10000e+9'  '70' -> '10000000000070'
-dqadd3048 fma  1  '10000e+9'  '700' -> '10000000000700'
-dqadd3049 fma  1  '10000e+9'  '7000' -> '10000000007000'
-dqadd3050 fma  1  '10000e+9'  '70000' -> '10000000070000'
-dqadd3051 fma  1  '10000e+9'  '700000' -> '10000000700000'
-dqadd3052 fma  1  '10000e+9'  '7000000' -> '10000007000000'
-
--- examples from decarith
-dqadd3053 fma  1  '12' '7.00' -> '19.00'
-dqadd3054 fma  1  '1.3' '-1.07' -> '0.23'
-dqadd3055 fma  1  '1.3' '-1.30' -> '0.00'
-dqadd3056 fma  1  '1.3' '-2.07' -> '-0.77'
-dqadd3057 fma  1  '1E+2' '1E+4' -> '1.01E+4'
-
--- leading zero preservation
-dqadd3061 fma  1  1 '0.0001' -> '1.0001'
-dqadd3062 fma  1  1 '0.00001' -> '1.00001'
-dqadd3063 fma  1  1 '0.000001' -> '1.000001'
-dqadd3064 fma  1  1 '0.0000001' -> '1.0000001'
-dqadd3065 fma  1  1 '0.00000001' -> '1.00000001'
-
--- some funny zeros [in case of bad signum]
-dqadd3070 fma  1  1  0    -> 1
-dqadd3071 fma  1  1 0.    -> 1
-dqadd3072 fma  1  1  .0   -> 1.0
-dqadd3073 fma  1  1 0.0   -> 1.0
-dqadd3074 fma  1  1 0.00  -> 1.00
-dqadd3075 fma  1   0  1   -> 1
-dqadd3076 fma  1  0.  1   -> 1
-dqadd3077 fma  1   .0 1   -> 1.0
-dqadd3078 fma  1  0.0 1   -> 1.0
-dqadd3079 fma  1  0.00 1  -> 1.00
-
--- some carries
-dqadd3080 fma  1  999999998 1  -> 999999999
-dqadd3081 fma  1  999999999 1  -> 1000000000
-dqadd3082 fma  1   99999999 1  -> 100000000
-dqadd3083 fma  1    9999999 1  -> 10000000
-dqadd3084 fma  1     999999 1  -> 1000000
-dqadd3085 fma  1      99999 1  -> 100000
-dqadd3086 fma  1       9999 1  -> 10000
-dqadd3087 fma  1        999 1  -> 1000
-dqadd3088 fma  1         99 1  -> 100
-dqadd3089 fma  1          9 1  -> 10
-
-
--- more LHS swaps
-dqadd3090 fma  1  '-56267E-10'   0 ->  '-0.0000056267'
-dqadd3091 fma  1  '-56267E-6'    0 ->  '-0.056267'
-dqadd3092 fma  1  '-56267E-5'    0 ->  '-0.56267'
-dqadd3093 fma  1  '-56267E-4'    0 ->  '-5.6267'
-dqadd3094 fma  1  '-56267E-3'    0 ->  '-56.267'
-dqadd3095 fma  1  '-56267E-2'    0 ->  '-562.67'
-dqadd3096 fma  1  '-56267E-1'    0 ->  '-5626.7'
-dqadd3097 fma  1  '-56267E-0'    0 ->  '-56267'
-dqadd3098 fma  1  '-5E-10'       0 ->  '-5E-10'
-dqadd3099 fma  1  '-5E-7'        0 ->  '-5E-7'
-dqadd3100 fma  1  '-5E-6'        0 ->  '-0.000005'
-dqadd3101 fma  1  '-5E-5'        0 ->  '-0.00005'
-dqadd3102 fma  1  '-5E-4'        0 ->  '-0.0005'
-dqadd3103 fma  1  '-5E-1'        0 ->  '-0.5'
-dqadd3104 fma  1  '-5E0'         0 ->  '-5'
-dqadd3105 fma  1  '-5E1'         0 ->  '-50'
-dqadd3106 fma  1  '-5E5'         0 ->  '-500000'
-dqadd3107 fma  1  '-5E33'        0 ->  '-5000000000000000000000000000000000'
-dqadd3108 fma  1  '-5E34'        0 ->  '-5.000000000000000000000000000000000E+34'  Rounded
-dqadd3109 fma  1  '-5E35'        0 ->  '-5.000000000000000000000000000000000E+35'  Rounded
-dqadd3110 fma  1  '-5E36'        0 ->  '-5.000000000000000000000000000000000E+36'  Rounded
-dqadd3111 fma  1  '-5E100'       0 ->  '-5.000000000000000000000000000000000E+100' Rounded
-
--- more RHS swaps
-dqadd3113 fma  1  0  '-56267E-10' ->  '-0.0000056267'
-dqadd3114 fma  1  0  '-56267E-6'  ->  '-0.056267'
-dqadd3116 fma  1  0  '-56267E-5'  ->  '-0.56267'
-dqadd3117 fma  1  0  '-56267E-4'  ->  '-5.6267'
-dqadd3119 fma  1  0  '-56267E-3'  ->  '-56.267'
-dqadd3120 fma  1  0  '-56267E-2'  ->  '-562.67'
-dqadd3121 fma  1  0  '-56267E-1'  ->  '-5626.7'
-dqadd3122 fma  1  0  '-56267E-0'  ->  '-56267'
-dqadd3123 fma  1  0  '-5E-10'     ->  '-5E-10'
-dqadd3124 fma  1  0  '-5E-7'      ->  '-5E-7'
-dqadd3125 fma  1  0  '-5E-6'      ->  '-0.000005'
-dqadd3126 fma  1  0  '-5E-5'      ->  '-0.00005'
-dqadd3127 fma  1  0  '-5E-4'      ->  '-0.0005'
-dqadd3128 fma  1  0  '-5E-1'      ->  '-0.5'
-dqadd3129 fma  1  0  '-5E0'       ->  '-5'
-dqadd3130 fma  1  0  '-5E1'       ->  '-50'
-dqadd3131 fma  1  0  '-5E5'       ->  '-500000'
-dqadd3132 fma  1  0  '-5E33'      ->  '-5000000000000000000000000000000000'
-dqadd3133 fma  1  0  '-5E34'      ->  '-5.000000000000000000000000000000000E+34'   Rounded
-dqadd3134 fma  1  0  '-5E35'      ->  '-5.000000000000000000000000000000000E+35'   Rounded
-dqadd3135 fma  1  0  '-5E36'      ->  '-5.000000000000000000000000000000000E+36'   Rounded
-dqadd3136 fma  1  0  '-5E100'     ->  '-5.000000000000000000000000000000000E+100'  Rounded
-
--- related
-dqadd3137 fma  1   1  '0E-39'      ->  '1.000000000000000000000000000000000'  Rounded
-dqadd3138 fma  1  -1  '0E-39'      ->  '-1.000000000000000000000000000000000' Rounded
-dqadd3139 fma  1  '0E-39' 1        ->  '1.000000000000000000000000000000000'  Rounded
-dqadd3140 fma  1  '0E-39' -1       ->  '-1.000000000000000000000000000000000' Rounded
-dqadd3141 fma  1  1E+29   0.0000   ->  '100000000000000000000000000000.0000'
-dqadd3142 fma  1  1E+29   0.00000  ->  '100000000000000000000000000000.0000'  Rounded
-dqadd3143 fma  1  0.000   1E+30    ->  '1000000000000000000000000000000.000'
-dqadd3144 fma  1  0.0000  1E+30    ->  '1000000000000000000000000000000.000'  Rounded
-
--- [some of the next group are really constructor tests]
-dqadd3146 fma  1  '00.0'  0       ->  '0.0'
-dqadd3147 fma  1  '0.00'  0       ->  '0.00'
-dqadd3148 fma  1   0      '0.00'  ->  '0.00'
-dqadd3149 fma  1   0      '00.0'  ->  '0.0'
-dqadd3150 fma  1  '00.0'  '0.00'  ->  '0.00'
-dqadd3151 fma  1  '0.00'  '00.0'  ->  '0.00'
-dqadd3152 fma  1  '3'     '.3'    ->  '3.3'
-dqadd3153 fma  1  '3.'    '.3'    ->  '3.3'
-dqadd3154 fma  1  '3.0'   '.3'    ->  '3.3'
-dqadd3155 fma  1  '3.00'  '.3'    ->  '3.30'
-dqadd3156 fma  1  '3'     '3'     ->  '6'
-dqadd3157 fma  1  '3'     '+3'    ->  '6'
-dqadd3158 fma  1  '3'     '-3'    ->  '0'
-dqadd3159 fma  1  '0.3'   '-0.3'  ->  '0.0'
-dqadd3160 fma  1  '0.03'  '-0.03' ->  '0.00'
-
--- try borderline precision, with carries, etc.
-dqadd3161 fma  1  '1E+12' '-1'    -> '999999999999'
-dqadd3162 fma  1  '1E+12'  '1.11' -> '1000000000001.11'
-dqadd3163 fma  1  '1.11'  '1E+12' -> '1000000000001.11'
-dqadd3164 fma  1  '-1'    '1E+12' -> '999999999999'
-dqadd3165 fma  1  '7E+12' '-1'    -> '6999999999999'
-dqadd3166 fma  1  '7E+12'  '1.11' -> '7000000000001.11'
-dqadd3167 fma  1  '1.11'  '7E+12' -> '7000000000001.11'
-dqadd3168 fma  1  '-1'    '7E+12' -> '6999999999999'
-
-rounding: half_up
-dqadd3170 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555567' -> '5.000000000000000000000000000000001' Inexact Rounded
-dqadd3171 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555566' -> '5.000000000000000000000000000000001' Inexact Rounded
-dqadd3172 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555565' -> '5.000000000000000000000000000000001' Inexact Rounded
-dqadd3173 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555564' -> '5.000000000000000000000000000000000' Inexact Rounded
-dqadd3174 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555553' -> '4.999999999999999999999999999999999' Inexact Rounded
-dqadd3175 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555552' -> '4.999999999999999999999999999999999' Inexact Rounded
-dqadd3176 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555551' -> '4.999999999999999999999999999999999' Inexact Rounded
-dqadd3177 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555550' -> '4.999999999999999999999999999999999' Rounded
-dqadd3178 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555545' -> '4.999999999999999999999999999999999' Inexact Rounded
-dqadd3179 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555544' -> '4.999999999999999999999999999999998' Inexact Rounded
-dqadd3180 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555543' -> '4.999999999999999999999999999999998' Inexact Rounded
-dqadd3181 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555542' -> '4.999999999999999999999999999999998' Inexact Rounded
-dqadd3182 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555541' -> '4.999999999999999999999999999999998' Inexact Rounded
-dqadd3183 fma  1  '4.444444444444444444444444444444444'  '0.5555555555555555555555555555555540' -> '4.999999999999999999999999999999998' Rounded
-
--- and some more, including residue effects and different roundings
-rounding: half_up
-dqadd3200 fma  1  '1231234567890123456784560123456789' 0             -> '1231234567890123456784560123456789'
-dqadd3201 fma  1  '1231234567890123456784560123456789' 0.000000001   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3202 fma  1  '1231234567890123456784560123456789' 0.000001      -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3203 fma  1  '1231234567890123456784560123456789' 0.1           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3204 fma  1  '1231234567890123456784560123456789' 0.4           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3205 fma  1  '1231234567890123456784560123456789' 0.49          -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3206 fma  1  '1231234567890123456784560123456789' 0.499999      -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3207 fma  1  '1231234567890123456784560123456789' 0.499999999   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3208 fma  1  '1231234567890123456784560123456789' 0.5           -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3209 fma  1  '1231234567890123456784560123456789' 0.500000001   -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3210 fma  1  '1231234567890123456784560123456789' 0.500001      -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3211 fma  1  '1231234567890123456784560123456789' 0.51          -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3212 fma  1  '1231234567890123456784560123456789' 0.6           -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3213 fma  1  '1231234567890123456784560123456789' 0.9           -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3214 fma  1  '1231234567890123456784560123456789' 0.99999       -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3215 fma  1  '1231234567890123456784560123456789' 0.999999999   -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3216 fma  1  '1231234567890123456784560123456789' 1             -> '1231234567890123456784560123456790'
-dqadd3217 fma  1  '1231234567890123456784560123456789' 1.000000001   -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3218 fma  1  '1231234567890123456784560123456789' 1.00001       -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3219 fma  1  '1231234567890123456784560123456789' 1.1           -> '1231234567890123456784560123456790' Inexact Rounded
-
-rounding: half_even
-dqadd3220 fma  1  '1231234567890123456784560123456789' 0             -> '1231234567890123456784560123456789'
-dqadd3221 fma  1  '1231234567890123456784560123456789' 0.000000001   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3222 fma  1  '1231234567890123456784560123456789' 0.000001      -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3223 fma  1  '1231234567890123456784560123456789' 0.1           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3224 fma  1  '1231234567890123456784560123456789' 0.4           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3225 fma  1  '1231234567890123456784560123456789' 0.49          -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3226 fma  1  '1231234567890123456784560123456789' 0.499999      -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3227 fma  1  '1231234567890123456784560123456789' 0.499999999   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3228 fma  1  '1231234567890123456784560123456789' 0.5           -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3229 fma  1  '1231234567890123456784560123456789' 0.500000001   -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3230 fma  1  '1231234567890123456784560123456789' 0.500001      -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3231 fma  1  '1231234567890123456784560123456789' 0.51          -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3232 fma  1  '1231234567890123456784560123456789' 0.6           -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3233 fma  1  '1231234567890123456784560123456789' 0.9           -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3234 fma  1  '1231234567890123456784560123456789' 0.99999       -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3235 fma  1  '1231234567890123456784560123456789' 0.999999999   -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3236 fma  1  '1231234567890123456784560123456789' 1             -> '1231234567890123456784560123456790'
-dqadd3237 fma  1  '1231234567890123456784560123456789' 1.00000001    -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3238 fma  1  '1231234567890123456784560123456789' 1.00001       -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3239 fma  1  '1231234567890123456784560123456789' 1.1           -> '1231234567890123456784560123456790' Inexact Rounded
--- critical few with even bottom digit...
-dqadd3240 fma  1  '1231234567890123456784560123456788' 0.499999999   -> '1231234567890123456784560123456788' Inexact Rounded
-dqadd3241 fma  1  '1231234567890123456784560123456788' 0.5           -> '1231234567890123456784560123456788' Inexact Rounded
-dqadd3242 fma  1  '1231234567890123456784560123456788' 0.500000001   -> '1231234567890123456784560123456789' Inexact Rounded
-
-rounding: down
-dqadd3250 fma  1  '1231234567890123456784560123456789' 0             -> '1231234567890123456784560123456789'
-dqadd3251 fma  1  '1231234567890123456784560123456789' 0.000000001   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3252 fma  1  '1231234567890123456784560123456789' 0.000001      -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3253 fma  1  '1231234567890123456784560123456789' 0.1           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3254 fma  1  '1231234567890123456784560123456789' 0.4           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3255 fma  1  '1231234567890123456784560123456789' 0.49          -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3256 fma  1  '1231234567890123456784560123456789' 0.499999      -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3257 fma  1  '1231234567890123456784560123456789' 0.499999999   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3258 fma  1  '1231234567890123456784560123456789' 0.5           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3259 fma  1  '1231234567890123456784560123456789' 0.500000001   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3260 fma  1  '1231234567890123456784560123456789' 0.500001      -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3261 fma  1  '1231234567890123456784560123456789' 0.51          -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3262 fma  1  '1231234567890123456784560123456789' 0.6           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3263 fma  1  '1231234567890123456784560123456789' 0.9           -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3264 fma  1  '1231234567890123456784560123456789' 0.99999       -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3265 fma  1  '1231234567890123456784560123456789' 0.999999999   -> '1231234567890123456784560123456789' Inexact Rounded
-dqadd3266 fma  1  '1231234567890123456784560123456789' 1             -> '1231234567890123456784560123456790'
-dqadd3267 fma  1  '1231234567890123456784560123456789' 1.00000001    -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3268 fma  1  '1231234567890123456784560123456789' 1.00001       -> '1231234567890123456784560123456790' Inexact Rounded
-dqadd3269 fma  1  '1231234567890123456784560123456789' 1.1           -> '1231234567890123456784560123456790' Inexact Rounded
-
--- 1 in last place tests
-rounding: half_up
-dqadd3301 fma  1   -1   1      ->   0
-dqadd3302 fma  1    0   1      ->   1
-dqadd3303 fma  1    1   1      ->   2
-dqadd3304 fma  1   12   1      ->  13
-dqadd3305 fma  1   98   1      ->  99
-dqadd3306 fma  1   99   1      -> 100
-dqadd3307 fma  1  100   1      -> 101
-dqadd3308 fma  1  101   1      -> 102
-dqadd3309 fma  1   -1  -1      ->  -2
-dqadd3310 fma  1    0  -1      ->  -1
-dqadd3311 fma  1    1  -1      ->   0
-dqadd3312 fma  1   12  -1      ->  11
-dqadd3313 fma  1   98  -1      ->  97
-dqadd3314 fma  1   99  -1      ->  98
-dqadd3315 fma  1  100  -1      ->  99
-dqadd3316 fma  1  101  -1      -> 100
-
-dqadd3321 fma  1  -0.01  0.01    ->  0.00
-dqadd3322 fma  1   0.00  0.01    ->  0.01
-dqadd3323 fma  1   0.01  0.01    ->  0.02
-dqadd3324 fma  1   0.12  0.01    ->  0.13
-dqadd3325 fma  1   0.98  0.01    ->  0.99
-dqadd3326 fma  1   0.99  0.01    ->  1.00
-dqadd3327 fma  1   1.00  0.01    ->  1.01
-dqadd3328 fma  1   1.01  0.01    ->  1.02
-dqadd3329 fma  1  -0.01 -0.01    -> -0.02
-dqadd3330 fma  1   0.00 -0.01    -> -0.01
-dqadd3331 fma  1   0.01 -0.01    ->  0.00
-dqadd3332 fma  1   0.12 -0.01    ->  0.11
-dqadd3333 fma  1   0.98 -0.01    ->  0.97
-dqadd3334 fma  1   0.99 -0.01    ->  0.98
-dqadd3335 fma  1   1.00 -0.01    ->  0.99
-dqadd3336 fma  1   1.01 -0.01    ->  1.00
-
--- some more cases where adding 0 affects the coefficient
-dqadd3340 fma  1  1E+3    0    ->         1000
-dqadd3341 fma  1  1E+33   0    ->    1000000000000000000000000000000000
-dqadd3342 fma  1  1E+34   0    ->   1.000000000000000000000000000000000E+34  Rounded
-dqadd3343 fma  1  1E+35   0    ->   1.000000000000000000000000000000000E+35  Rounded
--- which simply follow from these cases ...
-dqadd3344 fma  1  1E+3    1    ->         1001
-dqadd3345 fma  1  1E+33   1    ->    1000000000000000000000000000000001
-dqadd3346 fma  1  1E+34   1    ->   1.000000000000000000000000000000000E+34  Inexact Rounded
-dqadd3347 fma  1  1E+35   1    ->   1.000000000000000000000000000000000E+35  Inexact Rounded
-dqadd3348 fma  1  1E+3    7    ->         1007
-dqadd3349 fma  1  1E+33   7    ->    1000000000000000000000000000000007
-dqadd3350 fma  1  1E+34   7    ->   1.000000000000000000000000000000001E+34  Inexact Rounded
-dqadd3351 fma  1  1E+35   7    ->   1.000000000000000000000000000000000E+35  Inexact Rounded
-
--- tryzeros cases
-rounding:    half_up
-dqadd3360  fma  1  0E+50 10000E+1  -> 1.0000E+5
-dqadd3361  fma  1  0E-50 10000E+1  -> 100000.0000000000000000000000000000 Rounded
-dqadd3362  fma  1  10000E+1 0E-50  -> 100000.0000000000000000000000000000 Rounded
-dqadd3363  fma  1  10000E+1 10000E-50  -> 100000.0000000000000000000000000000 Rounded Inexact
-dqadd3364  fma  1  9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144 -> 0E+6111
---            1 234567890123456789012345678901234
-
--- a curiosity from JSR 13 testing
-rounding:    half_down
-dqadd3370 fma  1   999999999999999999999999999999999 815 -> 1000000000000000000000000000000814
-dqadd3371 fma  1  9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact
-rounding:    half_up
-dqadd3372 fma  1   999999999999999999999999999999999 815 -> 1000000000000000000000000000000814
-dqadd3373 fma  1  9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact
-rounding:    half_even
-dqadd3374 fma  1   999999999999999999999999999999999 815 -> 1000000000000000000000000000000814
-dqadd3375 fma  1  9999999999999999999999999999999999 815 -> 1.000000000000000000000000000000081E+34 Rounded Inexact
-
--- ulp replacement tests
-dqadd3400 fma  1    1   77e-32      ->  1.00000000000000000000000000000077
-dqadd3401 fma  1    1   77e-33      ->  1.000000000000000000000000000000077
-dqadd3402 fma  1    1   77e-34      ->  1.000000000000000000000000000000008 Inexact Rounded
-dqadd3403 fma  1    1   77e-35      ->  1.000000000000000000000000000000001 Inexact Rounded
-dqadd3404 fma  1    1   77e-36      ->  1.000000000000000000000000000000000 Inexact Rounded
-dqadd3405 fma  1    1   77e-37      ->  1.000000000000000000000000000000000 Inexact Rounded
-dqadd3406 fma  1    1   77e-299     ->  1.000000000000000000000000000000000 Inexact Rounded
-
-dqadd3410 fma  1   10   77e-32      ->  10.00000000000000000000000000000077
-dqadd3411 fma  1   10   77e-33      ->  10.00000000000000000000000000000008 Inexact Rounded
-dqadd3412 fma  1   10   77e-34      ->  10.00000000000000000000000000000001 Inexact Rounded
-dqadd3413 fma  1   10   77e-35      ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd3414 fma  1   10   77e-36      ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd3415 fma  1   10   77e-37      ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd3416 fma  1   10   77e-299     ->  10.00000000000000000000000000000000 Inexact Rounded
-
-dqadd3420 fma  1   77e-32       1   ->  1.00000000000000000000000000000077
-dqadd3421 fma  1   77e-33       1   ->  1.000000000000000000000000000000077
-dqadd3422 fma  1   77e-34       1   ->  1.000000000000000000000000000000008 Inexact Rounded
-dqadd3423 fma  1   77e-35       1   ->  1.000000000000000000000000000000001 Inexact Rounded
-dqadd3424 fma  1   77e-36       1   ->  1.000000000000000000000000000000000 Inexact Rounded
-dqadd3425 fma  1   77e-37       1   ->  1.000000000000000000000000000000000 Inexact Rounded
-dqadd3426 fma  1   77e-299      1   ->  1.000000000000000000000000000000000 Inexact Rounded
-
-dqadd3430 fma  1   77e-32      10   ->  10.00000000000000000000000000000077
-dqadd3431 fma  1   77e-33      10   ->  10.00000000000000000000000000000008 Inexact Rounded
-dqadd3432 fma  1   77e-34      10   ->  10.00000000000000000000000000000001 Inexact Rounded
-dqadd3433 fma  1   77e-35      10   ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd3434 fma  1   77e-36      10   ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd3435 fma  1   77e-37      10   ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd3436 fma  1   77e-299     10   ->  10.00000000000000000000000000000000 Inexact Rounded
-
--- negative ulps
-dqadd36440 fma  1    1   -77e-32      ->  0.99999999999999999999999999999923
-dqadd36441 fma  1    1   -77e-33      ->  0.999999999999999999999999999999923
-dqadd36442 fma  1    1   -77e-34      ->  0.9999999999999999999999999999999923
-dqadd36443 fma  1    1   -77e-35      ->  0.9999999999999999999999999999999992 Inexact Rounded
-dqadd36444 fma  1    1   -77e-36      ->  0.9999999999999999999999999999999999 Inexact Rounded
-dqadd36445 fma  1    1   -77e-37      ->  1.000000000000000000000000000000000 Inexact Rounded
-dqadd36446 fma  1    1   -77e-99      ->  1.000000000000000000000000000000000 Inexact Rounded
-
-dqadd36450 fma  1   10   -77e-32      ->   9.99999999999999999999999999999923
-dqadd36451 fma  1   10   -77e-33      ->   9.999999999999999999999999999999923
-dqadd36452 fma  1   10   -77e-34      ->   9.999999999999999999999999999999992 Inexact Rounded
-dqadd36453 fma  1   10   -77e-35      ->   9.999999999999999999999999999999999 Inexact Rounded
-dqadd36454 fma  1   10   -77e-36      ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd36455 fma  1   10   -77e-37      ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd36456 fma  1   10   -77e-99      ->  10.00000000000000000000000000000000 Inexact Rounded
-
-dqadd36460 fma  1   -77e-32       1   ->  0.99999999999999999999999999999923
-dqadd36461 fma  1   -77e-33       1   ->  0.999999999999999999999999999999923
-dqadd36462 fma  1   -77e-34       1   ->  0.9999999999999999999999999999999923
-dqadd36463 fma  1   -77e-35       1   ->  0.9999999999999999999999999999999992 Inexact Rounded
-dqadd36464 fma  1   -77e-36       1   ->  0.9999999999999999999999999999999999 Inexact Rounded
-dqadd36465 fma  1   -77e-37       1   ->  1.000000000000000000000000000000000 Inexact Rounded
-dqadd36466 fma  1   -77e-99       1   ->  1.000000000000000000000000000000000 Inexact Rounded
-
-dqadd36470 fma  1   -77e-32      10   ->   9.99999999999999999999999999999923
-dqadd36471 fma  1   -77e-33      10   ->   9.999999999999999999999999999999923
-dqadd36472 fma  1   -77e-34      10   ->   9.999999999999999999999999999999992 Inexact Rounded
-dqadd36473 fma  1   -77e-35      10   ->   9.999999999999999999999999999999999 Inexact Rounded
-dqadd36474 fma  1   -77e-36      10   ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd36475 fma  1   -77e-37      10   ->  10.00000000000000000000000000000000 Inexact Rounded
-dqadd36476 fma  1   -77e-99      10   ->  10.00000000000000000000000000000000 Inexact Rounded
-
--- negative ulps
-dqadd36480 fma  1   -1    77e-32      ->  -0.99999999999999999999999999999923
-dqadd36481 fma  1   -1    77e-33      ->  -0.999999999999999999999999999999923
-dqadd36482 fma  1   -1    77e-34      ->  -0.9999999999999999999999999999999923
-dqadd36483 fma  1   -1    77e-35      ->  -0.9999999999999999999999999999999992 Inexact Rounded
-dqadd36484 fma  1   -1    77e-36      ->  -0.9999999999999999999999999999999999 Inexact Rounded
-dqadd36485 fma  1   -1    77e-37      ->  -1.000000000000000000000000000000000 Inexact Rounded
-dqadd36486 fma  1   -1    77e-99      ->  -1.000000000000000000000000000000000 Inexact Rounded
-
-dqadd36490 fma  1  -10    77e-32      ->   -9.99999999999999999999999999999923
-dqadd36491 fma  1  -10    77e-33      ->   -9.999999999999999999999999999999923
-dqadd36492 fma  1  -10    77e-34      ->   -9.999999999999999999999999999999992 Inexact Rounded
-dqadd36493 fma  1  -10    77e-35      ->   -9.999999999999999999999999999999999 Inexact Rounded
-dqadd36494 fma  1  -10    77e-36      ->  -10.00000000000000000000000000000000 Inexact Rounded
-dqadd36495 fma  1  -10    77e-37      ->  -10.00000000000000000000000000000000 Inexact Rounded
-dqadd36496 fma  1  -10    77e-99      ->  -10.00000000000000000000000000000000 Inexact Rounded
-
-dqadd36500 fma  1    77e-32      -1   ->  -0.99999999999999999999999999999923
-dqadd36501 fma  1    77e-33      -1   ->  -0.999999999999999999999999999999923
-dqadd36502 fma  1    77e-34      -1   ->  -0.9999999999999999999999999999999923
-dqadd36503 fma  1    77e-35      -1   ->  -0.9999999999999999999999999999999992 Inexact Rounded
-dqadd36504 fma  1    77e-36      -1   ->  -0.9999999999999999999999999999999999 Inexact Rounded
-dqadd36505 fma  1    77e-37      -1   ->  -1.000000000000000000000000000000000 Inexact Rounded
-dqadd36506 fma  1    77e-99      -1   ->  -1.000000000000000000000000000000000 Inexact Rounded
-
-dqadd36510 fma  1    77e-32      -10  ->   -9.99999999999999999999999999999923
-dqadd36511 fma  1    77e-33      -10  ->   -9.999999999999999999999999999999923
-dqadd36512 fma  1    77e-34      -10  ->   -9.999999999999999999999999999999992 Inexact Rounded
-dqadd36513 fma  1    77e-35      -10  ->   -9.999999999999999999999999999999999 Inexact Rounded
-dqadd36514 fma  1    77e-36      -10  ->  -10.00000000000000000000000000000000 Inexact Rounded
-dqadd36515 fma  1    77e-37      -10  ->  -10.00000000000000000000000000000000 Inexact Rounded
-dqadd36516 fma  1    77e-99      -10  ->  -10.00000000000000000000000000000000 Inexact Rounded
-
--- and some more residue effects and different roundings
-rounding: half_up
-dqadd36540 fma  1  '9876543219876543216543210123456789' 0             -> '9876543219876543216543210123456789'
-dqadd36541 fma  1  '9876543219876543216543210123456789' 0.000000001   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd36542 fma  1  '9876543219876543216543210123456789' 0.000001      -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd36543 fma  1  '9876543219876543216543210123456789' 0.1           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd36544 fma  1  '9876543219876543216543210123456789' 0.4           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd36545 fma  1  '9876543219876543216543210123456789' 0.49          -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd36546 fma  1  '9876543219876543216543210123456789' 0.499999      -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd36547 fma  1  '9876543219876543216543210123456789' 0.499999999   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd36548 fma  1  '9876543219876543216543210123456789' 0.5           -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36549 fma  1  '9876543219876543216543210123456789' 0.500000001   -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36550 fma  1  '9876543219876543216543210123456789' 0.500001      -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36551 fma  1  '9876543219876543216543210123456789' 0.51          -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36552 fma  1  '9876543219876543216543210123456789' 0.6           -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36553 fma  1  '9876543219876543216543210123456789' 0.9           -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36554 fma  1  '9876543219876543216543210123456789' 0.99999       -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36555 fma  1  '9876543219876543216543210123456789' 0.999999999   -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36556 fma  1  '9876543219876543216543210123456789' 1             -> '9876543219876543216543210123456790'
-dqadd36557 fma  1  '9876543219876543216543210123456789' 1.000000001   -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36558 fma  1  '9876543219876543216543210123456789' 1.00001       -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36559 fma  1  '9876543219876543216543210123456789' 1.1           -> '9876543219876543216543210123456790' Inexact Rounded
-
-rounding: half_even
-dqadd36560 fma  1  '9876543219876543216543210123456789' 0             -> '9876543219876543216543210123456789'
-dqadd36561 fma  1  '9876543219876543216543210123456789' 0.000000001   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd36562 fma  1  '9876543219876543216543210123456789' 0.000001      -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd36563 fma  1  '9876543219876543216543210123456789' 0.1           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd36564 fma  1  '9876543219876543216543210123456789' 0.4           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd36565 fma  1  '9876543219876543216543210123456789' 0.49          -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd36566 fma  1  '9876543219876543216543210123456789' 0.499999      -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd36567 fma  1  '9876543219876543216543210123456789' 0.499999999   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd36568 fma  1  '9876543219876543216543210123456789' 0.5           -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36569 fma  1  '9876543219876543216543210123456789' 0.500000001   -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36570 fma  1  '9876543219876543216543210123456789' 0.500001      -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36571 fma  1  '9876543219876543216543210123456789' 0.51          -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36572 fma  1  '9876543219876543216543210123456789' 0.6           -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36573 fma  1  '9876543219876543216543210123456789' 0.9           -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36574 fma  1  '9876543219876543216543210123456789' 0.99999       -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36575 fma  1  '9876543219876543216543210123456789' 0.999999999   -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36576 fma  1  '9876543219876543216543210123456789' 1             -> '9876543219876543216543210123456790'
-dqadd36577 fma  1  '9876543219876543216543210123456789' 1.00000001    -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36578 fma  1  '9876543219876543216543210123456789' 1.00001       -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd36579 fma  1  '9876543219876543216543210123456789' 1.1           -> '9876543219876543216543210123456790' Inexact Rounded
-
--- critical few with even bottom digit...
-dqadd37540 fma  1  '9876543219876543216543210123456788' 0.499999999   -> '9876543219876543216543210123456788' Inexact Rounded
-dqadd37541 fma  1  '9876543219876543216543210123456788' 0.5           -> '9876543219876543216543210123456788' Inexact Rounded
-dqadd37542 fma  1  '9876543219876543216543210123456788' 0.500000001   -> '9876543219876543216543210123456789' Inexact Rounded
-
-rounding: down
-dqadd37550 fma  1  '9876543219876543216543210123456789' 0             -> '9876543219876543216543210123456789'
-dqadd37551 fma  1  '9876543219876543216543210123456789' 0.000000001   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37552 fma  1  '9876543219876543216543210123456789' 0.000001      -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37553 fma  1  '9876543219876543216543210123456789' 0.1           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37554 fma  1  '9876543219876543216543210123456789' 0.4           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37555 fma  1  '9876543219876543216543210123456789' 0.49          -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37556 fma  1  '9876543219876543216543210123456789' 0.499999      -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37557 fma  1  '9876543219876543216543210123456789' 0.499999999   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37558 fma  1  '9876543219876543216543210123456789' 0.5           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37559 fma  1  '9876543219876543216543210123456789' 0.500000001   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37560 fma  1  '9876543219876543216543210123456789' 0.500001      -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37561 fma  1  '9876543219876543216543210123456789' 0.51          -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37562 fma  1  '9876543219876543216543210123456789' 0.6           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37563 fma  1  '9876543219876543216543210123456789' 0.9           -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37564 fma  1  '9876543219876543216543210123456789' 0.99999       -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37565 fma  1  '9876543219876543216543210123456789' 0.999999999   -> '9876543219876543216543210123456789' Inexact Rounded
-dqadd37566 fma  1  '9876543219876543216543210123456789' 1             -> '9876543219876543216543210123456790'
-dqadd37567 fma  1  '9876543219876543216543210123456789' 1.00000001    -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd37568 fma  1  '9876543219876543216543210123456789' 1.00001       -> '9876543219876543216543210123456790' Inexact Rounded
-dqadd37569 fma  1  '9876543219876543216543210123456789' 1.1           -> '9876543219876543216543210123456790' Inexact Rounded
-
--- more zeros, etc.
-rounding: half_even
-
-dqadd37701 fma  1  5.00 1.00E-3 -> 5.00100
-dqadd37702 fma  1  00.00 0.000  -> 0.000
-dqadd37703 fma  1  00.00 0E-3   -> 0.000
-dqadd37704 fma  1  0E-3  00.00  -> 0.000
-
-dqadd37710 fma  1  0E+3  00.00  -> 0.00
-dqadd37711 fma  1  0E+3  00.0   -> 0.0
-dqadd37712 fma  1  0E+3  00.    -> 0
-dqadd37713 fma  1  0E+3  00.E+1 -> 0E+1
-dqadd37714 fma  1  0E+3  00.E+2 -> 0E+2
-dqadd37715 fma  1  0E+3  00.E+3 -> 0E+3
-dqadd37716 fma  1  0E+3  00.E+4 -> 0E+3
-dqadd37717 fma  1  0E+3  00.E+5 -> 0E+3
-dqadd37718 fma  1  0E+3  -00.0   -> 0.0
-dqadd37719 fma  1  0E+3  -00.    -> 0
-dqadd37731 fma  1  0E+3  -00.E+1 -> 0E+1
-
-dqadd37720 fma  1  00.00  0E+3  -> 0.00
-dqadd37721 fma  1  00.0   0E+3  -> 0.0
-dqadd37722 fma  1  00.    0E+3  -> 0
-dqadd37723 fma  1  00.E+1 0E+3  -> 0E+1
-dqadd37724 fma  1  00.E+2 0E+3  -> 0E+2
-dqadd37725 fma  1  00.E+3 0E+3  -> 0E+3
-dqadd37726 fma  1  00.E+4 0E+3  -> 0E+3
-dqadd37727 fma  1  00.E+5 0E+3  -> 0E+3
-dqadd37728 fma  1  -00.00 0E+3  -> 0.00
-dqadd37729 fma  1  -00.0  0E+3  -> 0.0
-dqadd37730 fma  1  -00.   0E+3  -> 0
-
-dqadd37732 fma  1   0     0     ->  0
-dqadd37733 fma  1   0    -0     ->  0
-dqadd37734 fma  1  -0     0     ->  0
-dqadd37735 fma  1  -0    -0     -> -0     -- IEEE 854 special case
-
-dqadd37736 fma  1   1    -1     ->  0
-dqadd37737 fma  1  -1    -1     -> -2
-dqadd37738 fma  1   1     1     ->  2
-dqadd37739 fma  1  -1     1     ->  0
-
-dqadd37741 fma  1   0    -1     -> -1
-dqadd37742 fma  1  -0    -1     -> -1
-dqadd37743 fma  1   0     1     ->  1
-dqadd37744 fma  1  -0     1     ->  1
-dqadd37745 fma  1  -1     0     -> -1
-dqadd37746 fma  1  -1    -0     -> -1
-dqadd37747 fma  1   1     0     ->  1
-dqadd37748 fma  1   1    -0     ->  1
-
-dqadd37751 fma  1   0.0  -1     -> -1.0
-dqadd37752 fma  1  -0.0  -1     -> -1.0
-dqadd37753 fma  1   0.0   1     ->  1.0
-dqadd37754 fma  1  -0.0   1     ->  1.0
-dqadd37755 fma  1  -1.0   0     -> -1.0
-dqadd37756 fma  1  -1.0  -0     -> -1.0
-dqadd37757 fma  1   1.0   0     ->  1.0
-dqadd37758 fma  1   1.0  -0     ->  1.0
-
-dqadd37761 fma  1   0    -1.0   -> -1.0
-dqadd37762 fma  1  -0    -1.0   -> -1.0
-dqadd37763 fma  1   0     1.0   ->  1.0
-dqadd37764 fma  1  -0     1.0   ->  1.0
-dqadd37765 fma  1  -1     0.0   -> -1.0
-dqadd37766 fma  1  -1    -0.0   -> -1.0
-dqadd37767 fma  1   1     0.0   ->  1.0
-dqadd37768 fma  1   1    -0.0   ->  1.0
-
-dqadd37771 fma  1   0.0  -1.0   -> -1.0
-dqadd37772 fma  1  -0.0  -1.0   -> -1.0
-dqadd37773 fma  1   0.0   1.0   ->  1.0
-dqadd37774 fma  1  -0.0   1.0   ->  1.0
-dqadd37775 fma  1  -1.0   0.0   -> -1.0
-dqadd37776 fma  1  -1.0  -0.0   -> -1.0
-dqadd37777 fma  1   1.0   0.0   ->  1.0
-dqadd37778 fma  1   1.0  -0.0   ->  1.0
-
--- Specials
-dqadd37780 fma  1  -Inf  -Inf   -> -Infinity
-dqadd37781 fma  1  -Inf  -1000  -> -Infinity
-dqadd37782 fma  1  -Inf  -1     -> -Infinity
-dqadd37783 fma  1  -Inf  -0     -> -Infinity
-dqadd37784 fma  1  -Inf   0     -> -Infinity
-dqadd37785 fma  1  -Inf   1     -> -Infinity
-dqadd37786 fma  1  -Inf   1000  -> -Infinity
-dqadd37787 fma  1  -1000 -Inf   -> -Infinity
-dqadd37788 fma  1  -Inf  -Inf   -> -Infinity
-dqadd37789 fma  1  -1    -Inf   -> -Infinity
-dqadd37790 fma  1  -0    -Inf   -> -Infinity
-dqadd37791 fma  1   0    -Inf   -> -Infinity
-dqadd37792 fma  1   1    -Inf   -> -Infinity
-dqadd37793 fma  1   1000 -Inf   -> -Infinity
-dqadd37794 fma  1   Inf  -Inf   ->  NaN  Invalid_operation
-
-dqadd37800 fma  1   Inf  -Inf   ->  NaN  Invalid_operation
-dqadd37801 fma  1   Inf  -1000  ->  Infinity
-dqadd37802 fma  1   Inf  -1     ->  Infinity
-dqadd37803 fma  1   Inf  -0     ->  Infinity
-dqadd37804 fma  1   Inf   0     ->  Infinity
-dqadd37805 fma  1   Inf   1     ->  Infinity
-dqadd37806 fma  1   Inf   1000  ->  Infinity
-dqadd37807 fma  1   Inf   Inf   ->  Infinity
-dqadd37808 fma  1  -1000  Inf   ->  Infinity
-dqadd37809 fma  1  -Inf   Inf   ->  NaN  Invalid_operation
-dqadd37810 fma  1  -1     Inf   ->  Infinity
-dqadd37811 fma  1  -0     Inf   ->  Infinity
-dqadd37812 fma  1   0     Inf   ->  Infinity
-dqadd37813 fma  1   1     Inf   ->  Infinity
-dqadd37814 fma  1   1000  Inf   ->  Infinity
-dqadd37815 fma  1   Inf   Inf   ->  Infinity
-
-dqadd37821 fma  1   NaN -Inf    ->  NaN
-dqadd37822 fma  1   NaN -1000   ->  NaN
-dqadd37823 fma  1   NaN -1      ->  NaN
-dqadd37824 fma  1   NaN -0      ->  NaN
-dqadd37825 fma  1   NaN  0      ->  NaN
-dqadd37826 fma  1   NaN  1      ->  NaN
-dqadd37827 fma  1   NaN  1000   ->  NaN
-dqadd37828 fma  1   NaN  Inf    ->  NaN
-dqadd37829 fma  1   NaN  NaN    ->  NaN
-dqadd37830 fma  1  -Inf  NaN    ->  NaN
-dqadd37831 fma  1  -1000 NaN    ->  NaN
-dqadd37832 fma  1  -1    NaN    ->  NaN
-dqadd37833 fma  1  -0    NaN    ->  NaN
-dqadd37834 fma  1   0    NaN    ->  NaN
-dqadd37835 fma  1   1    NaN    ->  NaN
-dqadd37836 fma  1   1000 NaN    ->  NaN
-dqadd37837 fma  1   Inf  NaN    ->  NaN
-
-dqadd37841 fma  1   sNaN -Inf   ->  NaN  Invalid_operation
-dqadd37842 fma  1   sNaN -1000  ->  NaN  Invalid_operation
-dqadd37843 fma  1   sNaN -1     ->  NaN  Invalid_operation
-dqadd37844 fma  1   sNaN -0     ->  NaN  Invalid_operation
-dqadd37845 fma  1   sNaN  0     ->  NaN  Invalid_operation
-dqadd37846 fma  1   sNaN  1     ->  NaN  Invalid_operation
-dqadd37847 fma  1   sNaN  1000  ->  NaN  Invalid_operation
-dqadd37848 fma  1   sNaN  NaN   ->  NaN  Invalid_operation
-dqadd37849 fma  1   sNaN sNaN   ->  NaN  Invalid_operation
-dqadd37850 fma  1   NaN  sNaN   ->  NaN  Invalid_operation
-dqadd37851 fma  1  -Inf  sNaN   ->  NaN  Invalid_operation
-dqadd37852 fma  1  -1000 sNaN   ->  NaN  Invalid_operation
-dqadd37853 fma  1  -1    sNaN   ->  NaN  Invalid_operation
-dqadd37854 fma  1  -0    sNaN   ->  NaN  Invalid_operation
-dqadd37855 fma  1   0    sNaN   ->  NaN  Invalid_operation
-dqadd37856 fma  1   1    sNaN   ->  NaN  Invalid_operation
-dqadd37857 fma  1   1000 sNaN   ->  NaN  Invalid_operation
-dqadd37858 fma  1   Inf  sNaN   ->  NaN  Invalid_operation
-dqadd37859 fma  1   NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqadd37861 fma  1   NaN1   -Inf    ->  NaN1
-dqadd37862 fma  1  +NaN2   -1000   ->  NaN2
-dqadd37863 fma  1   NaN3    1000   ->  NaN3
-dqadd37864 fma  1   NaN4    Inf    ->  NaN4
-dqadd37865 fma  1   NaN5   +NaN6   ->  NaN5
-dqadd37866 fma  1  -Inf     NaN7   ->  NaN7
-dqadd37867 fma  1  -1000    NaN8   ->  NaN8
-dqadd37868 fma  1   1000    NaN9   ->  NaN9
-dqadd37869 fma  1   Inf    +NaN10  ->  NaN10
-dqadd37871 fma  1   sNaN11  -Inf   ->  NaN11  Invalid_operation
-dqadd37872 fma  1   sNaN12  -1000  ->  NaN12  Invalid_operation
-dqadd37873 fma  1   sNaN13   1000  ->  NaN13  Invalid_operation
-dqadd37874 fma  1   sNaN14   NaN17 ->  NaN14  Invalid_operation
-dqadd37875 fma  1   sNaN15  sNaN18 ->  NaN15  Invalid_operation
-dqadd37876 fma  1   NaN16   sNaN19 ->  NaN19  Invalid_operation
-dqadd37877 fma  1  -Inf    +sNaN20 ->  NaN20  Invalid_operation
-dqadd37878 fma  1  -1000    sNaN21 ->  NaN21  Invalid_operation
-dqadd37879 fma  1   1000    sNaN22 ->  NaN22  Invalid_operation
-dqadd37880 fma  1   Inf     sNaN23 ->  NaN23  Invalid_operation
-dqadd37881 fma  1  +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-dqadd37882 fma  1  -NaN26    NaN28 -> -NaN26
-dqadd37883 fma  1  -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-dqadd37884 fma  1   1000    -NaN30 -> -NaN30
-dqadd37885 fma  1   1000   -sNaN31 -> -NaN31  Invalid_operation
-
--- Here we explore near the boundary of rounding a subnormal to Nmin
-dqadd37575 fma  1   1E-6143 -1E-6176 ->  9.99999999999999999999999999999999E-6144 Subnormal
-dqadd37576 fma  1  -1E-6143 +1E-6176 -> -9.99999999999999999999999999999999E-6144 Subnormal
-
--- check overflow edge case
---               1234567890123456
-dqadd37972 apply       9.999999999999999999999999999999999E+6144         -> 9.999999999999999999999999999999999E+6144
-dqadd37973 fma  1      9.999999999999999999999999999999999E+6144  1      -> 9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd37974 fma  1       9999999999999999999999999999999999E+6111  1      -> 9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd37975 fma  1       9999999999999999999999999999999999E+6111  1E+6111  -> Infinity Overflow Inexact Rounded
-dqadd37976 fma  1       9999999999999999999999999999999999E+6111  9E+6110  -> Infinity Overflow Inexact Rounded
-dqadd37977 fma  1       9999999999999999999999999999999999E+6111  8E+6110  -> Infinity Overflow Inexact Rounded
-dqadd37978 fma  1       9999999999999999999999999999999999E+6111  7E+6110  -> Infinity Overflow Inexact Rounded
-dqadd37979 fma  1       9999999999999999999999999999999999E+6111  6E+6110  -> Infinity Overflow Inexact Rounded
-dqadd37980 fma  1       9999999999999999999999999999999999E+6111  5E+6110  -> Infinity Overflow Inexact Rounded
-dqadd37981 fma  1       9999999999999999999999999999999999E+6111  4E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd37982 fma  1       9999999999999999999999999999999999E+6111  3E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd37983 fma  1       9999999999999999999999999999999999E+6111  2E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd37984 fma  1       9999999999999999999999999999999999E+6111  1E+6110  -> 9.999999999999999999999999999999999E+6144 Inexact Rounded
-
-dqadd37985 apply      -9.999999999999999999999999999999999E+6144         -> -9.999999999999999999999999999999999E+6144
-dqadd37986 fma  1     -9.999999999999999999999999999999999E+6144 -1      -> -9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd37987 fma  1      -9999999999999999999999999999999999E+6111 -1      -> -9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd37988 fma  1      -9999999999999999999999999999999999E+6111 -1E+6111  -> -Infinity Overflow Inexact Rounded
-dqadd37989 fma  1      -9999999999999999999999999999999999E+6111 -9E+6110  -> -Infinity Overflow Inexact Rounded
-dqadd37990 fma  1      -9999999999999999999999999999999999E+6111 -8E+6110  -> -Infinity Overflow Inexact Rounded
-dqadd37991 fma  1      -9999999999999999999999999999999999E+6111 -7E+6110  -> -Infinity Overflow Inexact Rounded
-dqadd37992 fma  1      -9999999999999999999999999999999999E+6111 -6E+6110  -> -Infinity Overflow Inexact Rounded
-dqadd37993 fma  1      -9999999999999999999999999999999999E+6111 -5E+6110  -> -Infinity Overflow Inexact Rounded
-dqadd37994 fma  1      -9999999999999999999999999999999999E+6111 -4E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd37995 fma  1      -9999999999999999999999999999999999E+6111 -3E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd37996 fma  1      -9999999999999999999999999999999999E+6111 -2E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded
-dqadd37997 fma  1      -9999999999999999999999999999999999E+6111 -1E+6110  -> -9.999999999999999999999999999999999E+6144 Inexact Rounded
-
--- And for round down full and subnormal results
-rounding:     down
-dqadd371100 fma  1  1e+2 -1e-6143    -> 99.99999999999999999999999999999999 Rounded Inexact
-dqadd371101 fma  1  1e+1 -1e-6143    -> 9.999999999999999999999999999999999  Rounded Inexact
-dqadd371103 fma  1    +1 -1e-6143    -> 0.9999999999999999999999999999999999  Rounded Inexact
-dqadd371104 fma  1  1e-1 -1e-6143    -> 0.09999999999999999999999999999999999  Rounded Inexact
-dqadd371105 fma  1  1e-2 -1e-6143    -> 0.009999999999999999999999999999999999  Rounded Inexact
-dqadd371106 fma  1  1e-3 -1e-6143    -> 0.0009999999999999999999999999999999999  Rounded Inexact
-dqadd371107 fma  1  1e-4 -1e-6143    -> 0.00009999999999999999999999999999999999  Rounded Inexact
-dqadd371108 fma  1  1e-5 -1e-6143    -> 0.000009999999999999999999999999999999999  Rounded Inexact
-dqadd371109 fma  1  1e-6 -1e-6143    -> 9.999999999999999999999999999999999E-7  Rounded Inexact
-
-rounding:     ceiling
-dqadd371110 fma  1  -1e+2 +1e-6143   -> -99.99999999999999999999999999999999 Rounded Inexact
-dqadd371111 fma  1  -1e+1 +1e-6143   -> -9.999999999999999999999999999999999  Rounded Inexact
-dqadd371113 fma  1     -1 +1e-6143   -> -0.9999999999999999999999999999999999  Rounded Inexact
-dqadd371114 fma  1  -1e-1 +1e-6143   -> -0.09999999999999999999999999999999999  Rounded Inexact
-dqadd371115 fma  1  -1e-2 +1e-6143   -> -0.009999999999999999999999999999999999  Rounded Inexact
-dqadd371116 fma  1  -1e-3 +1e-6143   -> -0.0009999999999999999999999999999999999  Rounded Inexact
-dqadd371117 fma  1  -1e-4 +1e-6143   -> -0.00009999999999999999999999999999999999  Rounded Inexact
-dqadd371118 fma  1  -1e-5 +1e-6143   -> -0.000009999999999999999999999999999999999  Rounded Inexact
-dqadd371119 fma  1  -1e-6 +1e-6143   -> -9.999999999999999999999999999999999E-7  Rounded Inexact
-
--- tests based on Gunnar Degnbol's edge case
-rounding:     half_even
-
-dqadd371300 fma  1  1E34  -0.5                 ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371310 fma  1  1E34  -0.51                ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371311 fma  1  1E34  -0.501               ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371312 fma  1  1E34  -0.5001              ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371313 fma  1  1E34  -0.50001             ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371314 fma  1  1E34  -0.500001            ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371315 fma  1  1E34  -0.5000001           ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371316 fma  1  1E34  -0.50000001          ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371317 fma  1  1E34  -0.500000001         ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371318 fma  1  1E34  -0.5000000001        ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371319 fma  1  1E34  -0.50000000001       ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371320 fma  1  1E34  -0.500000000001      ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371321 fma  1  1E34  -0.5000000000001     ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371322 fma  1  1E34  -0.50000000000001    ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371323 fma  1  1E34  -0.500000000000001   ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371324 fma  1  1E34  -0.5000000000000001  ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371325 fma  1  1E34  -0.5000000000000000  ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371326 fma  1  1E34  -0.500000000000000   ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371327 fma  1  1E34  -0.50000000000000    ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371328 fma  1  1E34  -0.5000000000000     ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371329 fma  1  1E34  -0.500000000000      ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371330 fma  1  1E34  -0.50000000000       ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371331 fma  1  1E34  -0.5000000000        ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371332 fma  1  1E34  -0.500000000         ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371333 fma  1  1E34  -0.50000000          ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371334 fma  1  1E34  -0.5000000           ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371335 fma  1  1E34  -0.500000            ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371336 fma  1  1E34  -0.50000             ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371337 fma  1  1E34  -0.5000              ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371338 fma  1  1E34  -0.500               ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371339 fma  1  1E34  -0.50                ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-
-dqadd371340 fma  1  1E34  -5000000.000010001   ->  9999999999999999999999999995000000      Inexact Rounded
-dqadd371341 fma  1  1E34  -5000000.000000001   ->  9999999999999999999999999995000000      Inexact Rounded
-
-dqadd371349 fma  1  9999999999999999999999999999999999 0.4                 ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371350 fma  1  9999999999999999999999999999999999 0.49                ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371351 fma  1  9999999999999999999999999999999999 0.499               ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371352 fma  1  9999999999999999999999999999999999 0.4999              ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371353 fma  1  9999999999999999999999999999999999 0.49999             ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371354 fma  1  9999999999999999999999999999999999 0.499999            ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371355 fma  1  9999999999999999999999999999999999 0.4999999           ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371356 fma  1  9999999999999999999999999999999999 0.49999999          ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371357 fma  1  9999999999999999999999999999999999 0.499999999         ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371358 fma  1  9999999999999999999999999999999999 0.4999999999        ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371359 fma  1  9999999999999999999999999999999999 0.49999999999       ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371360 fma  1  9999999999999999999999999999999999 0.499999999999      ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371361 fma  1  9999999999999999999999999999999999 0.4999999999999     ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371362 fma  1  9999999999999999999999999999999999 0.49999999999999    ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371363 fma  1  9999999999999999999999999999999999 0.499999999999999   ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371364 fma  1  9999999999999999999999999999999999 0.4999999999999999  ->  9999999999999999999999999999999999      Inexact Rounded
-dqadd371365 fma  1  9999999999999999999999999999999999 0.5000000000000000  ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371367 fma  1  9999999999999999999999999999999999 0.500000000000000   ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371368 fma  1  9999999999999999999999999999999999 0.50000000000000    ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371369 fma  1  9999999999999999999999999999999999 0.5000000000000     ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371370 fma  1  9999999999999999999999999999999999 0.500000000000      ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371371 fma  1  9999999999999999999999999999999999 0.50000000000       ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371372 fma  1  9999999999999999999999999999999999 0.5000000000        ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371373 fma  1  9999999999999999999999999999999999 0.500000000         ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371374 fma  1  9999999999999999999999999999999999 0.50000000          ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371375 fma  1  9999999999999999999999999999999999 0.5000000           ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371376 fma  1  9999999999999999999999999999999999 0.500000            ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371377 fma  1  9999999999999999999999999999999999 0.50000             ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371378 fma  1  9999999999999999999999999999999999 0.5000              ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371379 fma  1  9999999999999999999999999999999999 0.500               ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371380 fma  1  9999999999999999999999999999999999 0.50                ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371381 fma  1  9999999999999999999999999999999999 0.5                 ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371382 fma  1  9999999999999999999999999999999999 0.5000000000000001  ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371383 fma  1  9999999999999999999999999999999999 0.500000000000001   ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371384 fma  1  9999999999999999999999999999999999 0.50000000000001    ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371385 fma  1  9999999999999999999999999999999999 0.5000000000001     ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371386 fma  1  9999999999999999999999999999999999 0.500000000001      ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371387 fma  1  9999999999999999999999999999999999 0.50000000001       ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371388 fma  1  9999999999999999999999999999999999 0.5000000001        ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371389 fma  1  9999999999999999999999999999999999 0.500000001         ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371390 fma  1  9999999999999999999999999999999999 0.50000001          ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371391 fma  1  9999999999999999999999999999999999 0.5000001           ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371392 fma  1  9999999999999999999999999999999999 0.500001            ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371393 fma  1  9999999999999999999999999999999999 0.50001             ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371394 fma  1  9999999999999999999999999999999999 0.5001              ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371395 fma  1  9999999999999999999999999999999999 0.501               ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-dqadd371396 fma  1  9999999999999999999999999999999999 0.51                ->  1.000000000000000000000000000000000E+34 Inexact Rounded
-
--- More GD edge cases, where difference between the unadjusted
--- exponents is larger than the maximum precision and one side is 0
-dqadd371420 fma  1   0 1.123456789987654321123456789012345     -> 1.123456789987654321123456789012345
-dqadd371421 fma  1   0 1.123456789987654321123456789012345E-1  -> 0.1123456789987654321123456789012345
-dqadd371422 fma  1   0 1.123456789987654321123456789012345E-2  -> 0.01123456789987654321123456789012345
-dqadd371423 fma  1   0 1.123456789987654321123456789012345E-3  -> 0.001123456789987654321123456789012345
-dqadd371424 fma  1   0 1.123456789987654321123456789012345E-4  -> 0.0001123456789987654321123456789012345
-dqadd371425 fma  1   0 1.123456789987654321123456789012345E-5  -> 0.00001123456789987654321123456789012345
-dqadd371426 fma  1   0 1.123456789987654321123456789012345E-6  -> 0.000001123456789987654321123456789012345
-dqadd371427 fma  1   0 1.123456789987654321123456789012345E-7  -> 1.123456789987654321123456789012345E-7
-dqadd371428 fma  1   0 1.123456789987654321123456789012345E-8  -> 1.123456789987654321123456789012345E-8
-dqadd371429 fma  1   0 1.123456789987654321123456789012345E-9  -> 1.123456789987654321123456789012345E-9
-dqadd371430 fma  1   0 1.123456789987654321123456789012345E-10 -> 1.123456789987654321123456789012345E-10
-dqadd371431 fma  1   0 1.123456789987654321123456789012345E-11 -> 1.123456789987654321123456789012345E-11
-dqadd371432 fma  1   0 1.123456789987654321123456789012345E-12 -> 1.123456789987654321123456789012345E-12
-dqadd371433 fma  1   0 1.123456789987654321123456789012345E-13 -> 1.123456789987654321123456789012345E-13
-dqadd371434 fma  1   0 1.123456789987654321123456789012345E-14 -> 1.123456789987654321123456789012345E-14
-dqadd371435 fma  1   0 1.123456789987654321123456789012345E-15 -> 1.123456789987654321123456789012345E-15
-dqadd371436 fma  1   0 1.123456789987654321123456789012345E-16 -> 1.123456789987654321123456789012345E-16
-dqadd371437 fma  1   0 1.123456789987654321123456789012345E-17 -> 1.123456789987654321123456789012345E-17
-dqadd371438 fma  1   0 1.123456789987654321123456789012345E-18 -> 1.123456789987654321123456789012345E-18
-dqadd371439 fma  1   0 1.123456789987654321123456789012345E-19 -> 1.123456789987654321123456789012345E-19
-dqadd371440 fma  1   0 1.123456789987654321123456789012345E-20 -> 1.123456789987654321123456789012345E-20
-dqadd371441 fma  1   0 1.123456789987654321123456789012345E-21 -> 1.123456789987654321123456789012345E-21
-dqadd371442 fma  1   0 1.123456789987654321123456789012345E-22 -> 1.123456789987654321123456789012345E-22
-dqadd371443 fma  1   0 1.123456789987654321123456789012345E-23 -> 1.123456789987654321123456789012345E-23
-dqadd371444 fma  1   0 1.123456789987654321123456789012345E-24 -> 1.123456789987654321123456789012345E-24
-dqadd371445 fma  1   0 1.123456789987654321123456789012345E-25 -> 1.123456789987654321123456789012345E-25
-dqadd371446 fma  1   0 1.123456789987654321123456789012345E-26 -> 1.123456789987654321123456789012345E-26
-dqadd371447 fma  1   0 1.123456789987654321123456789012345E-27 -> 1.123456789987654321123456789012345E-27
-dqadd371448 fma  1   0 1.123456789987654321123456789012345E-28 -> 1.123456789987654321123456789012345E-28
-dqadd371449 fma  1   0 1.123456789987654321123456789012345E-29 -> 1.123456789987654321123456789012345E-29
-dqadd371450 fma  1   0 1.123456789987654321123456789012345E-30 -> 1.123456789987654321123456789012345E-30
-dqadd371451 fma  1   0 1.123456789987654321123456789012345E-31 -> 1.123456789987654321123456789012345E-31
-dqadd371452 fma  1   0 1.123456789987654321123456789012345E-32 -> 1.123456789987654321123456789012345E-32
-dqadd371453 fma  1   0 1.123456789987654321123456789012345E-33 -> 1.123456789987654321123456789012345E-33
-dqadd371454 fma  1   0 1.123456789987654321123456789012345E-34 -> 1.123456789987654321123456789012345E-34
-dqadd371455 fma  1   0 1.123456789987654321123456789012345E-35 -> 1.123456789987654321123456789012345E-35
-dqadd371456 fma  1   0 1.123456789987654321123456789012345E-36 -> 1.123456789987654321123456789012345E-36
-
--- same, reversed 0
-dqadd371460 fma  1  1.123456789987654321123456789012345     0 -> 1.123456789987654321123456789012345
-dqadd371461 fma  1  1.123456789987654321123456789012345E-1  0 -> 0.1123456789987654321123456789012345
-dqadd371462 fma  1  1.123456789987654321123456789012345E-2  0 -> 0.01123456789987654321123456789012345
-dqadd371463 fma  1  1.123456789987654321123456789012345E-3  0 -> 0.001123456789987654321123456789012345
-dqadd371464 fma  1  1.123456789987654321123456789012345E-4  0 -> 0.0001123456789987654321123456789012345
-dqadd371465 fma  1  1.123456789987654321123456789012345E-5  0 -> 0.00001123456789987654321123456789012345
-dqadd371466 fma  1  1.123456789987654321123456789012345E-6  0 -> 0.000001123456789987654321123456789012345
-dqadd371467 fma  1  1.123456789987654321123456789012345E-7  0 -> 1.123456789987654321123456789012345E-7
-dqadd371468 fma  1  1.123456789987654321123456789012345E-8  0 -> 1.123456789987654321123456789012345E-8
-dqadd371469 fma  1  1.123456789987654321123456789012345E-9  0 -> 1.123456789987654321123456789012345E-9
-dqadd371470 fma  1  1.123456789987654321123456789012345E-10 0 -> 1.123456789987654321123456789012345E-10
-dqadd371471 fma  1  1.123456789987654321123456789012345E-11 0 -> 1.123456789987654321123456789012345E-11
-dqadd371472 fma  1  1.123456789987654321123456789012345E-12 0 -> 1.123456789987654321123456789012345E-12
-dqadd371473 fma  1  1.123456789987654321123456789012345E-13 0 -> 1.123456789987654321123456789012345E-13
-dqadd371474 fma  1  1.123456789987654321123456789012345E-14 0 -> 1.123456789987654321123456789012345E-14
-dqadd371475 fma  1  1.123456789987654321123456789012345E-15 0 -> 1.123456789987654321123456789012345E-15
-dqadd371476 fma  1  1.123456789987654321123456789012345E-16 0 -> 1.123456789987654321123456789012345E-16
-dqadd371477 fma  1  1.123456789987654321123456789012345E-17 0 -> 1.123456789987654321123456789012345E-17
-dqadd371478 fma  1  1.123456789987654321123456789012345E-18 0 -> 1.123456789987654321123456789012345E-18
-dqadd371479 fma  1  1.123456789987654321123456789012345E-19 0 -> 1.123456789987654321123456789012345E-19
-dqadd371480 fma  1  1.123456789987654321123456789012345E-20 0 -> 1.123456789987654321123456789012345E-20
-dqadd371481 fma  1  1.123456789987654321123456789012345E-21 0 -> 1.123456789987654321123456789012345E-21
-dqadd371482 fma  1  1.123456789987654321123456789012345E-22 0 -> 1.123456789987654321123456789012345E-22
-dqadd371483 fma  1  1.123456789987654321123456789012345E-23 0 -> 1.123456789987654321123456789012345E-23
-dqadd371484 fma  1  1.123456789987654321123456789012345E-24 0 -> 1.123456789987654321123456789012345E-24
-dqadd371485 fma  1  1.123456789987654321123456789012345E-25 0 -> 1.123456789987654321123456789012345E-25
-dqadd371486 fma  1  1.123456789987654321123456789012345E-26 0 -> 1.123456789987654321123456789012345E-26
-dqadd371487 fma  1  1.123456789987654321123456789012345E-27 0 -> 1.123456789987654321123456789012345E-27
-dqadd371488 fma  1  1.123456789987654321123456789012345E-28 0 -> 1.123456789987654321123456789012345E-28
-dqadd371489 fma  1  1.123456789987654321123456789012345E-29 0 -> 1.123456789987654321123456789012345E-29
-dqadd371490 fma  1  1.123456789987654321123456789012345E-30 0 -> 1.123456789987654321123456789012345E-30
-dqadd371491 fma  1  1.123456789987654321123456789012345E-31 0 -> 1.123456789987654321123456789012345E-31
-dqadd371492 fma  1  1.123456789987654321123456789012345E-32 0 -> 1.123456789987654321123456789012345E-32
-dqadd371493 fma  1  1.123456789987654321123456789012345E-33 0 -> 1.123456789987654321123456789012345E-33
-dqadd371494 fma  1  1.123456789987654321123456789012345E-34 0 -> 1.123456789987654321123456789012345E-34
-dqadd371495 fma  1  1.123456789987654321123456789012345E-35 0 -> 1.123456789987654321123456789012345E-35
-dqadd371496 fma  1  1.123456789987654321123456789012345E-36 0 -> 1.123456789987654321123456789012345E-36
-
--- same, Es on the 0
-dqadd371500 fma  1  1.123456789987654321123456789012345  0E-0   -> 1.123456789987654321123456789012345
-dqadd371501 fma  1  1.123456789987654321123456789012345  0E-1   -> 1.123456789987654321123456789012345
-dqadd371502 fma  1  1.123456789987654321123456789012345  0E-2   -> 1.123456789987654321123456789012345
-dqadd371503 fma  1  1.123456789987654321123456789012345  0E-3   -> 1.123456789987654321123456789012345
-dqadd371504 fma  1  1.123456789987654321123456789012345  0E-4   -> 1.123456789987654321123456789012345
-dqadd371505 fma  1  1.123456789987654321123456789012345  0E-5   -> 1.123456789987654321123456789012345
-dqadd371506 fma  1  1.123456789987654321123456789012345  0E-6   -> 1.123456789987654321123456789012345
-dqadd371507 fma  1  1.123456789987654321123456789012345  0E-7   -> 1.123456789987654321123456789012345
-dqadd371508 fma  1  1.123456789987654321123456789012345  0E-8   -> 1.123456789987654321123456789012345
-dqadd371509 fma  1  1.123456789987654321123456789012345  0E-9   -> 1.123456789987654321123456789012345
-dqadd371510 fma  1  1.123456789987654321123456789012345  0E-10  -> 1.123456789987654321123456789012345
-dqadd371511 fma  1  1.123456789987654321123456789012345  0E-11  -> 1.123456789987654321123456789012345
-dqadd371512 fma  1  1.123456789987654321123456789012345  0E-12  -> 1.123456789987654321123456789012345
-dqadd371513 fma  1  1.123456789987654321123456789012345  0E-13  -> 1.123456789987654321123456789012345
-dqadd371514 fma  1  1.123456789987654321123456789012345  0E-14  -> 1.123456789987654321123456789012345
-dqadd371515 fma  1  1.123456789987654321123456789012345  0E-15  -> 1.123456789987654321123456789012345
-dqadd371516 fma  1  1.123456789987654321123456789012345  0E-16  -> 1.123456789987654321123456789012345
-dqadd371517 fma  1  1.123456789987654321123456789012345  0E-17  -> 1.123456789987654321123456789012345
-dqadd371518 fma  1  1.123456789987654321123456789012345  0E-18  -> 1.123456789987654321123456789012345
-dqadd371519 fma  1  1.123456789987654321123456789012345  0E-19  -> 1.123456789987654321123456789012345
-dqadd371520 fma  1  1.123456789987654321123456789012345  0E-20  -> 1.123456789987654321123456789012345
-dqadd371521 fma  1  1.123456789987654321123456789012345  0E-21  -> 1.123456789987654321123456789012345
-dqadd371522 fma  1  1.123456789987654321123456789012345  0E-22  -> 1.123456789987654321123456789012345
-dqadd371523 fma  1  1.123456789987654321123456789012345  0E-23  -> 1.123456789987654321123456789012345
-dqadd371524 fma  1  1.123456789987654321123456789012345  0E-24  -> 1.123456789987654321123456789012345
-dqadd371525 fma  1  1.123456789987654321123456789012345  0E-25  -> 1.123456789987654321123456789012345
-dqadd371526 fma  1  1.123456789987654321123456789012345  0E-26  -> 1.123456789987654321123456789012345
-dqadd371527 fma  1  1.123456789987654321123456789012345  0E-27  -> 1.123456789987654321123456789012345
-dqadd371528 fma  1  1.123456789987654321123456789012345  0E-28  -> 1.123456789987654321123456789012345
-dqadd371529 fma  1  1.123456789987654321123456789012345  0E-29  -> 1.123456789987654321123456789012345
-dqadd371530 fma  1  1.123456789987654321123456789012345  0E-30  -> 1.123456789987654321123456789012345
-dqadd371531 fma  1  1.123456789987654321123456789012345  0E-31  -> 1.123456789987654321123456789012345
-dqadd371532 fma  1  1.123456789987654321123456789012345  0E-32  -> 1.123456789987654321123456789012345
-dqadd371533 fma  1  1.123456789987654321123456789012345  0E-33  -> 1.123456789987654321123456789012345
--- next four flag Rounded because the 0 extends the result
-dqadd371534 fma  1  1.123456789987654321123456789012345  0E-34  -> 1.123456789987654321123456789012345 Rounded
-dqadd371535 fma  1  1.123456789987654321123456789012345  0E-35  -> 1.123456789987654321123456789012345 Rounded
-dqadd371536 fma  1  1.123456789987654321123456789012345  0E-36  -> 1.123456789987654321123456789012345 Rounded
-dqadd371537 fma  1  1.123456789987654321123456789012345  0E-37  -> 1.123456789987654321123456789012345 Rounded
-
--- sum of two opposite-sign operands is exactly 0 and floor => -0
-rounding:    half_up
--- exact zeros from zeros
-dqadd371600 fma  1   0        0E-19  ->  0E-19
-dqadd371601 fma  1  -0        0E-19  ->  0E-19
-dqadd371602 fma  1   0       -0E-19  ->  0E-19
-dqadd371603 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd371611 fma  1  -11      11    ->  0
-dqadd371612 fma  1   11     -11    ->  0
--- overflow
-dqadd371613 fma  9E6144 10   1     ->  Infinity Overflow Inexact Rounded
-dqadd371614 fma -9E6144 10   1     -> -Infinity Overflow Inexact Rounded
-
-rounding:    half_down
--- exact zeros from zeros
-dqadd371620 fma  1   0        0E-19  ->  0E-19
-dqadd371621 fma  1  -0        0E-19  ->  0E-19
-dqadd371622 fma  1   0       -0E-19  ->  0E-19
-dqadd371623 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd371631 fma  1  -11      11    ->  0
-dqadd371632 fma  1   11     -11    ->  0
--- overflow
-dqadd371633 fma  9E6144 10   1     ->  Infinity Overflow Inexact Rounded
-dqadd371634 fma -9E6144 10   1     -> -Infinity Overflow Inexact Rounded
-
-rounding:    half_even
--- exact zeros from zeros
-dqadd371640 fma  1   0        0E-19  ->  0E-19
-dqadd371641 fma  1  -0        0E-19  ->  0E-19
-dqadd371642 fma  1   0       -0E-19  ->  0E-19
-dqadd371643 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd371651 fma  1  -11      11    ->  0
-dqadd371652 fma  1   11     -11    ->  0
--- overflow
-dqadd371653 fma  9E6144 10   1     ->  Infinity Overflow Inexact Rounded
-dqadd371654 fma -9E6144 10   1     -> -Infinity Overflow Inexact Rounded
-
-rounding:    up
--- exact zeros from zeros
-dqadd371660 fma  1   0        0E-19  ->  0E-19
-dqadd371661 fma  1  -0        0E-19  ->  0E-19
-dqadd371662 fma  1   0       -0E-19  ->  0E-19
-dqadd371663 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd371671 fma  1  -11      11    ->  0
-dqadd371672 fma  1   11     -11    ->  0
--- overflow
-dqadd371673 fma  9E6144 10   1     ->  Infinity Overflow Inexact Rounded
-dqadd371674 fma -9E6144 10   1     -> -Infinity Overflow Inexact Rounded
-
-rounding:    down
--- exact zeros from zeros
-dqadd371680 fma  1   0        0E-19  ->  0E-19
-dqadd371681 fma  1  -0        0E-19  ->  0E-19
-dqadd371682 fma  1   0       -0E-19  ->  0E-19
-dqadd371683 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd371691 fma  1  -11      11    ->  0
-dqadd371692 fma  1   11     -11    ->  0
--- overflow
-dqadd371693 fma  9E6144 10   1     ->  9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded
-dqadd371694 fma -9E6144 10   1     -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded
-
-rounding:    ceiling
--- exact zeros from zeros
-dqadd371700 fma  1   0        0E-19  ->  0E-19
-dqadd371701 fma  1  -0        0E-19  ->  0E-19
-dqadd371702 fma  1   0       -0E-19  ->  0E-19
-dqadd371703 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd371711 fma  1  -11      11    ->  0
-dqadd371712 fma  1   11     -11    ->  0
--- overflow
-dqadd371713 fma  9E6144 10   1     ->  Infinity Overflow Inexact Rounded
-dqadd371714 fma -9E6144 10   1     -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded
-
--- and the extra-special ugly case; unusual minuses marked by -- *
-rounding:    floor
--- exact zeros from zeros
-dqadd371720 fma  1   0        0E-19  ->  0E-19
-dqadd371721 fma  1  -0        0E-19  -> -0E-19           -- *
-dqadd371722 fma  1   0       -0E-19  -> -0E-19           -- *
-dqadd371723 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd371731 fma  1  -11      11    ->  -0                -- *
-dqadd371732 fma  1   11     -11    ->  -0                -- *
--- overflow
-dqadd371733 fma  9E6144 10   1     ->  9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded
-dqadd371734 fma -9E6144 10   1     -> -Infinity Overflow Inexact Rounded
-
-rounding:    05up
--- exact zeros from zeros
-dqadd371740 fma  1   0        0E-19  ->  0E-19
-dqadd371741 fma  1  -0        0E-19  ->  0E-19
-dqadd371742 fma  1   0       -0E-19  ->  0E-19
-dqadd371743 fma  1  -0       -0E-19  -> -0E-19
--- exact zeros from non-zeros
-dqadd371751 fma  1  -11      11    ->  0
-dqadd371752 fma  1   11     -11    ->  0
--- overflow
-dqadd371753 fma  9E6144 10   1     ->  9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded
-dqadd371754 fma -9E6144 10   1     -> -9.999999999999999999999999999999999E+6144 Overflow Inexact Rounded
-
--- Examples from SQL proposal (Krishna Kulkarni)
-dqadd371761 fma  1  130E-2    120E-2    -> 2.50
-dqadd371762 fma  1  130E-2    12E-1     -> 2.50
-dqadd371763 fma  1  130E-2    1E0       -> 2.30
-dqadd371764 fma  1  1E2       1E4       -> 1.01E+4
-dqadd371765 fma  1  130E-2   -120E-2 -> 0.10
-dqadd371766 fma  1  130E-2   -12E-1  -> 0.10
-dqadd371767 fma  1  130E-2   -1E0    -> 0.30
-dqadd371768 fma  1  1E2      -1E4    -> -9.9E+3
-
--- Gappy coefficients; check residue handling even with full coefficient gap
-rounding: half_even
-
-dqadd375001 fma  1  1239876543211234567894567890123456 1      -> 1239876543211234567894567890123457
-dqadd375002 fma  1  1239876543211234567894567890123456 0.6    -> 1239876543211234567894567890123457  Inexact Rounded
-dqadd375003 fma  1  1239876543211234567894567890123456 0.06   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375004 fma  1  1239876543211234567894567890123456 6E-3   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375005 fma  1  1239876543211234567894567890123456 6E-4   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375006 fma  1  1239876543211234567894567890123456 6E-5   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375007 fma  1  1239876543211234567894567890123456 6E-6   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375008 fma  1  1239876543211234567894567890123456 6E-7   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375009 fma  1  1239876543211234567894567890123456 6E-8   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375010 fma  1  1239876543211234567894567890123456 6E-9   -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375011 fma  1  1239876543211234567894567890123456 6E-10  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375012 fma  1  1239876543211234567894567890123456 6E-11  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375013 fma  1  1239876543211234567894567890123456 6E-12  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375014 fma  1  1239876543211234567894567890123456 6E-13  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375015 fma  1  1239876543211234567894567890123456 6E-14  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375016 fma  1  1239876543211234567894567890123456 6E-15  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375017 fma  1  1239876543211234567894567890123456 6E-16  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375018 fma  1  1239876543211234567894567890123456 6E-17  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375019 fma  1  1239876543211234567894567890123456 6E-18  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375020 fma  1  1239876543211234567894567890123456 6E-19  -> 1239876543211234567894567890123456  Inexact Rounded
-dqadd375021 fma  1  1239876543211234567894567890123456 6E-20  -> 1239876543211234567894567890123456  Inexact Rounded
-
--- widening second argument at gap
-dqadd375030 fma  1  12398765432112345678945678 1                       -> 12398765432112345678945679
-dqadd375031 fma  1  12398765432112345678945678 0.1                     -> 12398765432112345678945678.1
-dqadd375032 fma  1  12398765432112345678945678 0.12                    -> 12398765432112345678945678.12
-dqadd375033 fma  1  12398765432112345678945678 0.123                   -> 12398765432112345678945678.123
-dqadd375034 fma  1  12398765432112345678945678 0.1234                  -> 12398765432112345678945678.1234
-dqadd375035 fma  1  12398765432112345678945678 0.12345                 -> 12398765432112345678945678.12345
-dqadd375036 fma  1  12398765432112345678945678 0.123456                -> 12398765432112345678945678.123456
-dqadd375037 fma  1  12398765432112345678945678 0.1234567               -> 12398765432112345678945678.1234567
-dqadd375038 fma  1  12398765432112345678945678 0.12345678              -> 12398765432112345678945678.12345678
-dqadd375039 fma  1  12398765432112345678945678 0.123456789             -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd375040 fma  1  12398765432112345678945678 0.123456785             -> 12398765432112345678945678.12345678 Inexact Rounded
-dqadd375041 fma  1  12398765432112345678945678 0.1234567850            -> 12398765432112345678945678.12345678 Inexact Rounded
-dqadd375042 fma  1  12398765432112345678945678 0.1234567851            -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd375043 fma  1  12398765432112345678945678 0.12345678501           -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd375044 fma  1  12398765432112345678945678 0.123456785001          -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd375045 fma  1  12398765432112345678945678 0.1234567850001         -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd375046 fma  1  12398765432112345678945678 0.12345678500001        -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd375047 fma  1  12398765432112345678945678 0.123456785000001       -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd375048 fma  1  12398765432112345678945678 0.1234567850000001      -> 12398765432112345678945678.12345679 Inexact Rounded
-dqadd375049 fma  1  12398765432112345678945678 0.1234567850000000      -> 12398765432112345678945678.12345678 Inexact Rounded
---                               90123456
-rounding: half_even
-dqadd375050 fma  1  12398765432112345678945678 0.0234567750000000      -> 12398765432112345678945678.02345678 Inexact Rounded
-dqadd375051 fma  1  12398765432112345678945678 0.0034567750000000      -> 12398765432112345678945678.00345678 Inexact Rounded
-dqadd375052 fma  1  12398765432112345678945678 0.0004567750000000      -> 12398765432112345678945678.00045678 Inexact Rounded
-dqadd375053 fma  1  12398765432112345678945678 0.0000567750000000      -> 12398765432112345678945678.00005678 Inexact Rounded
-dqadd375054 fma  1  12398765432112345678945678 0.0000067750000000      -> 12398765432112345678945678.00000678 Inexact Rounded
-dqadd375055 fma  1  12398765432112345678945678 0.0000007750000000      -> 12398765432112345678945678.00000078 Inexact Rounded
-dqadd375056 fma  1  12398765432112345678945678 0.0000000750000000      -> 12398765432112345678945678.00000008 Inexact Rounded
-dqadd375057 fma  1  12398765432112345678945678 0.0000000050000000      -> 12398765432112345678945678.00000000 Inexact Rounded
-dqadd375060 fma  1  12398765432112345678945678 0.0234567750000001      -> 12398765432112345678945678.02345678 Inexact Rounded
-dqadd375061 fma  1  12398765432112345678945678 0.0034567750000001      -> 12398765432112345678945678.00345678 Inexact Rounded
-dqadd375062 fma  1  12398765432112345678945678 0.0004567750000001      -> 12398765432112345678945678.00045678 Inexact Rounded
-dqadd375063 fma  1  12398765432112345678945678 0.0000567750000001      -> 12398765432112345678945678.00005678 Inexact Rounded
-dqadd375064 fma  1  12398765432112345678945678 0.0000067750000001      -> 12398765432112345678945678.00000678 Inexact Rounded
-dqadd375065 fma  1  12398765432112345678945678 0.0000007750000001      -> 12398765432112345678945678.00000078 Inexact Rounded
-dqadd375066 fma  1  12398765432112345678945678 0.0000000750000001      -> 12398765432112345678945678.00000008 Inexact Rounded
-dqadd375067 fma  1  12398765432112345678945678 0.0000000050000001      -> 12398765432112345678945678.00000001 Inexact Rounded
--- far-out residues (full coefficient gap is 16+15 digits)
-rounding: up
-dqadd375070 fma  1  12398765432112345678945678 1E-8                    -> 12398765432112345678945678.00000001
-dqadd375071 fma  1  12398765432112345678945678 1E-9                    -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375072 fma  1  12398765432112345678945678 1E-10                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375073 fma  1  12398765432112345678945678 1E-11                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375074 fma  1  12398765432112345678945678 1E-12                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375075 fma  1  12398765432112345678945678 1E-13                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375076 fma  1  12398765432112345678945678 1E-14                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375077 fma  1  12398765432112345678945678 1E-15                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375078 fma  1  12398765432112345678945678 1E-16                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375079 fma  1  12398765432112345678945678 1E-17                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375080 fma  1  12398765432112345678945678 1E-18                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375081 fma  1  12398765432112345678945678 1E-19                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375082 fma  1  12398765432112345678945678 1E-20                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375083 fma  1  12398765432112345678945678 1E-25                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375084 fma  1  12398765432112345678945678 1E-30                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375085 fma  1  12398765432112345678945678 1E-31                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375086 fma  1  12398765432112345678945678 1E-32                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375087 fma  1  12398765432112345678945678 1E-33                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375088 fma  1  12398765432112345678945678 1E-34                   -> 12398765432112345678945678.00000001 Inexact Rounded
-dqadd375089 fma  1  12398765432112345678945678 1E-35                   -> 12398765432112345678945678.00000001 Inexact Rounded
-
--- Destructive subtract (from remainder tests)
-
--- +++ some of these will be off-by-one remainder vs remainderNear
-
-dqfma4000  fma  -1234567890123456789012345678901233   1.000000000000000000000000000000001    1234567890123456789012345678901234  ->  -0.234567890123456789012345678901233
-dqfma4001  fma  -1234567890123456789012345678901222    1.00000000000000000000000000000001    1234567890123456789012345678901234  ->  -0.34567890123456789012345678901222
-dqfma4002  fma  -1234567890123456789012345678901111     1.0000000000000000000000000000001    1234567890123456789012345678901234  ->  -0.4567890123456789012345678901111
-dqfma4003  fma   -308641972530864197253086419725314   4.000000000000000000000000000000001    1234567890123456789012345678901255  ->  -1.308641972530864197253086419725314
-dqfma4004  fma   -308641972530864197253086419725308   4.000000000000000000000000000000001    1234567890123456789012345678901234  ->  1.691358027469135802746913580274692
-dqfma4005  fma   -246913578024691357802469135780252     4.9999999999999999999999999999999    1234567890123456789012345678901234  ->  -1.3086421975308642197530864219748
-dqfma4006  fma   -246913578024691357802469135780247    4.99999999999999999999999999999999    1234567890123456789012345678901234  ->  1.46913578024691357802469135780247
-dqfma4007  fma   -246913578024691357802469135780247   4.999999999999999999999999999999999    1234567890123456789012345678901234  ->  -0.753086421975308642197530864219753
-dqfma4008  fma   -246913578024691357802469135780247   5.000000000000000000000000000000001    1234567890123456789012345678901234  ->  -1.246913578024691357802469135780247
-dqfma4009  fma   -246913578024691357802469135780246    5.00000000000000000000000000000001    1234567890123456789012345678901234  ->  1.53086421975308642197530864219754
-dqfma4010  fma   -246913578024691357802469135780242     5.0000000000000000000000000000001    1234567890123456789012345678901234  ->  -0.6913578024691357802469135780242
-dqfma4011  fma  -1234567890123456789012345678901232   1.000000000000000000000000000000001    1234567890123456789012345678901234  ->  0.765432109876543210987654321098768
-dqfma4012  fma  -1234567890123456789012345678901221    1.00000000000000000000000000000001    1234567890123456789012345678901234  ->  0.65432109876543210987654321098779
-dqfma4013  fma  -1234567890123456789012345678901110     1.0000000000000000000000000000001    1234567890123456789012345678901234  ->  0.5432109876543210987654321098890
-dqfma4014  fma   -308641972530864197253086419725313   4.000000000000000000000000000000001    1234567890123456789012345678901255  ->  2.691358027469135802746913580274687
-dqfma4015  fma   -308641972530864197253086419725308   4.000000000000000000000000000000001    1234567890123456789012345678901234  ->  1.691358027469135802746913580274692
-dqfma4016  fma   -246913578024691357802469135780251     4.9999999999999999999999999999999    1234567890123456789012345678901234  ->  3.6913578024691357802469135780251
-dqfma4017  fma   -246913578024691357802469135780247    4.99999999999999999999999999999999    1234567890123456789012345678901234  ->  1.46913578024691357802469135780247
-dqfma4018  fma   -246913578024691357802469135780246   4.999999999999999999999999999999999    1234567890123456789012345678901234  ->  4.246913578024691357802469135780246
-dqfma4019  fma   -246913578024691357802469135780241     5.0000000000000000000000000000001    1234567890123456789012345678901234  ->  4.3086421975308642197530864219759
-
--- Null tests
-dqadd39990 fma  1  10  # -> NaN Invalid_operation
-dqadd39991 fma  1   # 10 -> NaN Invalid_operation
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqInvert.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqInvert.decTest
deleted file mode 100644
index 3a1e29e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqInvert.decTest
+++ /dev/null
@@ -1,245 +0,0 @@
-------------------------------------------------------------------------
--- dqInvert.decTest -- digitwise logical INVERT for decQuads          --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- Sanity check (truth table)
-dqinv001 invert             0 -> 1111111111111111111111111111111111
-dqinv002 invert             1 -> 1111111111111111111111111111111110
-dqinv003 invert            10 -> 1111111111111111111111111111111101
-dqinv004 invert     111111111 -> 1111111111111111111111111000000000
-dqinv005 invert     000000000 -> 1111111111111111111111111111111111
--- and at msd and msd-1
-dqinv007 invert 0000000000000000000000000000000000 ->   1111111111111111111111111111111111
-dqinv008 invert 1000000000000000000000000000000000 ->    111111111111111111111111111111111
-dqinv009 invert 0000000000000000000000000000000000 ->   1111111111111111111111111111111111
-dqinv010 invert 0100000000000000000000000000000000 ->   1011111111111111111111111111111111
-dqinv011 invert 0111111111111111111111111111111111 ->   1000000000000000000000000000000000
-dqinv012 invert 1111111111111111111111111111111111 ->                  0
-dqinv013 invert 0011111111111111111111111111111111 ->   1100000000000000000000000000000000
-dqinv014 invert 0111111111111111111111111111111111 ->   1000000000000000000000000000000000
-
--- Various lengths
-dqinv600 invert 0111111111111111111011111111111111 ->   1000000000000000000100000000000000
-dqinv601 invert 0011111111111111110101111111111111 ->   1100000000000000001010000000000000
-dqinv602 invert 0101111111111111101110111111111111 ->   1010000000000000010001000000000000
-dqinv603 invert 0110111111111111011111011111111111 ->   1001000000000000100000100000000000
-dqinv604 invert 0111011111111110111111101111111111 ->   1000100000000001000000010000000000
-dqinv605 invert 0111101111111101111111110111111111 ->   1000010000000010000000001000000000
-dqinv606 invert 0111110111111011111111111011111111 ->   1000001000000100000000000100000000
-dqinv607 invert 0111111011110111111111111101111111 ->   1000000100001000000000000010000000
-dqinv608 invert 0111111101101111111111111110111111 ->   1000000010010000000000000001000000
-dqinv609 invert 0111111110011111111111111111011111 ->   1000000001100000000000000000100000
-dqinv610 invert 0111111110011111111111111111101111 ->   1000000001100000000000000000010000
-dqinv611 invert 0111111101101111111111111111110111 ->   1000000010010000000000000000001000
-dqinv612 invert 0111111011110111111111111111111011 ->   1000000100001000000000000000000100
-dqinv613 invert 0111110111111011111111111111111101 ->   1000001000000100000000000000000010
-dqinv614 invert 0111101111111101111111111111111110 ->   1000010000000010000000000000000001
-dqinv615 invert 0111011111111110111111111111111111 ->   1000100000000001000000000000000000
-dqinv616 invert 0110111111111111011111111111111110 ->   1001000000000000100000000000000001
-dqinv617 invert 0101111111111111101111111111111101 ->   1010000000000000010000000000000010
-dqinv618 invert 0011111111111111110111111111111011 ->   1100000000000000001000000000000100
-dqinv619 invert 0101111111111111111011111111110111 ->   1010000000000000000100000000001000
-dqinv620 invert 0110111111111111111101111111101111 ->   1001000000000000000010000000010000
-dqinv621 invert 0111011111111111111110111111011111 ->   1000100000000000000001000000100000
-dqinv622 invert 0111101111111111111111011110111111 ->   1000010000000000000000100001000000
-dqinv623 invert 0111110111111111111111101101111111 ->   1000001000000000000000010010000000
-dqinv624 invert 0111111011111111111111110011111111 ->   1000000100000000000000001100000000
-dqinv625 invert 0111111101111111111111110011111111 ->   1000000010000000000000001100000000
-dqinv626 invert 0111111110111111111111101101111111 ->   1000000001000000000000010010000000
-dqinv627 invert 0111111111011111111111011110111111 ->   1000000000100000000000100001000000
-dqinv628 invert 0111111111101111111110111111011111 ->   1000000000010000000001000000100000
-dqinv629 invert 0111111111110111111101111111101111 ->   1000000000001000000010000000010000
-dqinv630 invert 0111111111111011111011111111110111 ->   1000000000000100000100000000001000
-dqinv631 invert 0111111111111101110111111111111011 ->   1000000000000010001000000000000100
-dqinv632 invert 0111111111111110101111111111111101 ->   1000000000000001010000000000000010
-dqinv633 invert 0111111111111111011111111111111110 ->   1000000000000000100000000000000001
-
-dqinv021 invert 111111111     -> 1111111111111111111111111000000000
-dqinv022 invert 111111111111  -> 1111111111111111111111000000000000
-dqinv023 invert  11111111     -> 1111111111111111111111111100000000
-dqinv025 invert   1111111     -> 1111111111111111111111111110000000
-dqinv026 invert    111111     -> 1111111111111111111111111111000000
-dqinv027 invert     11111     -> 1111111111111111111111111111100000
-dqinv028 invert      1111     -> 1111111111111111111111111111110000
-dqinv029 invert       111     -> 1111111111111111111111111111111000
-dqinv031 invert        11     -> 1111111111111111111111111111111100
-dqinv032 invert         1     -> 1111111111111111111111111111111110
-dqinv033 invert 111111111111  -> 1111111111111111111111000000000000
-dqinv034 invert 11111111111   -> 1111111111111111111111100000000000
-dqinv035 invert 1111111111    -> 1111111111111111111111110000000000
-dqinv036 invert 111111111     -> 1111111111111111111111111000000000
-
-dqinv040 invert 011111111   -> 1111111111111111111111111100000000
-dqinv041 invert 101111111   -> 1111111111111111111111111010000000
-dqinv042 invert 110111111   -> 1111111111111111111111111001000000
-dqinv043 invert 111011111   -> 1111111111111111111111111000100000
-dqinv044 invert 111101111   -> 1111111111111111111111111000010000
-dqinv045 invert 111110111   -> 1111111111111111111111111000001000
-dqinv046 invert 111111011   -> 1111111111111111111111111000000100
-dqinv047 invert 111111101   -> 1111111111111111111111111000000010
-dqinv048 invert 111111110   -> 1111111111111111111111111000000001
-dqinv049 invert 011111011   -> 1111111111111111111111111100000100
-dqinv050 invert 101111101   -> 1111111111111111111111111010000010
-dqinv051 invert 110111110   -> 1111111111111111111111111001000001
-dqinv052 invert 111011101   -> 1111111111111111111111111000100010
-dqinv053 invert 111101011   -> 1111111111111111111111111000010100
-dqinv054 invert 111110111   -> 1111111111111111111111111000001000
-dqinv055 invert 111101011   -> 1111111111111111111111111000010100
-dqinv056 invert 111011101   -> 1111111111111111111111111000100010
-dqinv057 invert 110111110   -> 1111111111111111111111111001000001
-dqinv058 invert 101111101   -> 1111111111111111111111111010000010
-dqinv059 invert 011111011   -> 1111111111111111111111111100000100
-
-dqinv080 invert 1000000011111111   -> 1111111111111111110111111100000000
-dqinv081 invert 0100000101111111   -> 1111111111111111111011111010000000
-dqinv082 invert 0010000110111111   -> 1111111111111111111101111001000000
-dqinv083 invert 0001000111011111   -> 1111111111111111111110111000100000
-dqinv084 invert 0000100111101111   -> 1111111111111111111111011000010000
-dqinv085 invert 0000010111110111   -> 1111111111111111111111101000001000
-dqinv086 invert 0000001111111011   -> 1111111111111111111111110000000100
-dqinv087 invert 0000010111111101   -> 1111111111111111111111101000000010
-dqinv088 invert 0000100111111110   -> 1111111111111111111111011000000001
-dqinv089 invert 0001000011111011   -> 1111111111111111111110111100000100
-dqinv090 invert 0010000101111101   -> 1111111111111111111101111010000010
-dqinv091 invert 0100000110111110   -> 1111111111111111111011111001000001
-dqinv092 invert 1000000111011101   -> 1111111111111111110111111000100010
-dqinv093 invert 0100000111101011   -> 1111111111111111111011111000010100
-dqinv094 invert 0010000111110111   -> 1111111111111111111101111000001000
-dqinv095 invert 0001000111101011   -> 1111111111111111111110111000010100
-dqinv096 invert 0000100111011101   -> 1111111111111111111111011000100010
-dqinv097 invert 0000010110111110   -> 1111111111111111111111101001000001
-dqinv098 invert 0000001101111101   -> 1111111111111111111111110010000010
-dqinv099 invert 0000010011111011   -> 1111111111111111111111101100000100
-
--- and more thorough MSD/LSD tests [8 and 9 mght be encoded differently...]
-dqinv151 invert 1111111111111111111111111111111110 ->                                   1
-dqinv152 invert 1111111111111111110000000000000000 ->                    1111111111111111
-dqinv153 invert 1000000000000000001111111111111111 ->   111111111111111110000000000000000
-dqinv154 invert 1111111111111111111000000000000000 ->                     111111111111111
-dqinv155 invert 0100000000000000000111111111111111 ->  1011111111111111111000000000000000
-dqinv156 invert 1011111111111111110100000000000000 ->   100000000000000001011111111111111
-dqinv157 invert 1101111111111111110111111111111111 ->    10000000000000001000000000000000
-dqinv158 invert 1110111111111111110011111111111111 ->     1000000000000001100000000000000
-
--- non-0/1 should not be accepted, nor should signs
-dqinv220 invert 111111112   ->  NaN Invalid_operation
-dqinv221 invert 333333333   ->  NaN Invalid_operation
-dqinv222 invert 555555555   ->  NaN Invalid_operation
-dqinv223 invert 777777777   ->  NaN Invalid_operation
-dqinv224 invert 999999999   ->  NaN Invalid_operation
-dqinv225 invert 222222222   ->  NaN Invalid_operation
-dqinv226 invert 444444444   ->  NaN Invalid_operation
-dqinv227 invert 666666666   ->  NaN Invalid_operation
-dqinv228 invert 888888888   ->  NaN Invalid_operation
-dqinv229 invert 999999999   ->  NaN Invalid_operation
-dqinv230 invert 999999999   ->  NaN Invalid_operation
-dqinv231 invert 999999999   ->  NaN Invalid_operation
-dqinv232 invert 999999999   ->  NaN Invalid_operation
--- a few randoms
-dqinv240 invert  567468689  ->  NaN Invalid_operation
-dqinv241 invert  567367689  ->  NaN Invalid_operation
-dqinv242 invert -631917772  ->  NaN Invalid_operation
-dqinv243 invert -756253257  ->  NaN Invalid_operation
-dqinv244 invert  835590149  ->  NaN Invalid_operation
--- test MSD
-dqinv250 invert  2000000111000111000111000000000000 ->  NaN Invalid_operation
-dqinv251 invert  3000000111000111000111000000000000 ->  NaN Invalid_operation
-dqinv252 invert  4000000111000111000111000000000000 ->  NaN Invalid_operation
-dqinv253 invert  5000000111000111000111000000000000 ->  NaN Invalid_operation
-dqinv254 invert  6000000111000111000111000000000000 ->  NaN Invalid_operation
-dqinv255 invert  7000000111000111000111000000000000 ->  NaN Invalid_operation
-dqinv256 invert  8000000111000111000111000000000000 ->  NaN Invalid_operation
-dqinv257 invert  9000000111000111000111000000000000 ->  NaN Invalid_operation
--- test MSD-1
-dqinv270 invert  0200000111000111000111001000000000 ->  NaN Invalid_operation
-dqinv271 invert  0300000111000111000111000100000000 ->  NaN Invalid_operation
-dqinv272 invert  0400000111000111000111000010000000 ->  NaN Invalid_operation
-dqinv273 invert  0500000111000111000111000001000000 ->  NaN Invalid_operation
-dqinv274 invert  1600000111000111000111000000100000 ->  NaN Invalid_operation
-dqinv275 invert  1700000111000111000111000000010000 ->  NaN Invalid_operation
-dqinv276 invert  1800000111000111000111000000001000 ->  NaN Invalid_operation
-dqinv277 invert  1900000111000111000111000000000100 ->  NaN Invalid_operation
--- test LSD
-dqinv280 invert  0010000111000111000111000000000002 ->  NaN Invalid_operation
-dqinv281 invert  0001000111000111000111000000000003 ->  NaN Invalid_operation
-dqinv282 invert  0000000111000111000111100000000004 ->  NaN Invalid_operation
-dqinv283 invert  0000000111000111000111010000000005 ->  NaN Invalid_operation
-dqinv284 invert  1000000111000111000111001000000006 ->  NaN Invalid_operation
-dqinv285 invert  1000000111000111000111000100000007 ->  NaN Invalid_operation
-dqinv286 invert  1000000111000111000111000010000008 ->  NaN Invalid_operation
-dqinv287 invert  1000000111000111000111000001000009 ->  NaN Invalid_operation
--- test Middie
-dqinv288 invert  0010000111000111000111000020000000 ->  NaN Invalid_operation
-dqinv289 invert  0001000111000111000111000030000001 ->  NaN Invalid_operation
-dqinv290 invert  0000000111000111000111100040000010 ->  NaN Invalid_operation
-dqinv291 invert  0000000111000111000111010050000100 ->  NaN Invalid_operation
-dqinv292 invert  1000000111000111000111001060001000 ->  NaN Invalid_operation
-dqinv293 invert  1000000111000111000111000170010000 ->  NaN Invalid_operation
-dqinv294 invert  1000000111000111000111000080100000 ->  NaN Invalid_operation
-dqinv295 invert  1000000111000111000111000091000000 ->  NaN Invalid_operation
--- signs
-dqinv296 invert -1000000111000111000111000001000000  ->  NaN Invalid_operation
-dqinv299 invert  1000000111000111000111000001000000  ->  111111000111000111000111110111111
-
--- Nmax, Nmin, Ntiny-like
-dqinv341 invert  9.99999999E+2998  -> NaN Invalid_operation
-dqinv342 invert  1E-2998           -> NaN Invalid_operation
-dqinv343 invert  1.00000000E-2998  -> NaN Invalid_operation
-dqinv344 invert  1E-2078           -> NaN Invalid_operation
-dqinv345 invert  -1E-2078          -> NaN Invalid_operation
-dqinv346 invert  -1.00000000E-2998 -> NaN Invalid_operation
-dqinv347 invert  -1E-2998          -> NaN Invalid_operation
-dqinv348 invert  -9.99999999E+2998 -> NaN Invalid_operation
-
--- A few other non-integers
-dqinv361 invert  1.0               -> NaN Invalid_operation
-dqinv362 invert  1E+1              -> NaN Invalid_operation
-dqinv363 invert  0.0               -> NaN Invalid_operation
-dqinv364 invert  0E+1              -> NaN Invalid_operation
-dqinv365 invert  9.9               -> NaN Invalid_operation
-dqinv366 invert  9E+1              -> NaN Invalid_operation
-
--- All Specials are in error
-dqinv788 invert -Inf     -> NaN  Invalid_operation
-dqinv794 invert  Inf     -> NaN  Invalid_operation
-dqinv821 invert  NaN     -> NaN  Invalid_operation
-dqinv841 invert  sNaN    -> NaN  Invalid_operation
--- propagating NaNs
-dqinv861 invert  NaN1    -> NaN Invalid_operation
-dqinv862 invert +NaN2    -> NaN Invalid_operation
-dqinv863 invert  NaN3    -> NaN Invalid_operation
-dqinv864 invert  NaN4    -> NaN Invalid_operation
-dqinv865 invert  NaN5    -> NaN Invalid_operation
-dqinv871 invert  sNaN11  -> NaN Invalid_operation
-dqinv872 invert  sNaN12  -> NaN Invalid_operation
-dqinv873 invert  sNaN13  -> NaN Invalid_operation
-dqinv874 invert  sNaN14  -> NaN Invalid_operation
-dqinv875 invert  sNaN15  -> NaN Invalid_operation
-dqinv876 invert  NaN16   -> NaN Invalid_operation
-dqinv881 invert +NaN25   -> NaN Invalid_operation
-dqinv882 invert -NaN26   -> NaN Invalid_operation
-dqinv883 invert -sNaN27  -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqLogB.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqLogB.decTest
deleted file mode 100644
index a18313d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqLogB.decTest
+++ /dev/null
@@ -1,160 +0,0 @@
-------------------------------------------------------------------------
--- dqLogB.decTest -- integral 754r adjusted exponent, for decQuads    --
--- Copyright (c) IBM Corporation, 2005, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- basics
-dqlogb000 logb  0                 -> -Infinity  Division_by_zero
-dqlogb001 logb  1E-6176           -> -6176
-dqlogb002 logb  1E-6143           -> -6143
-dqlogb003 logb  0.001             -> -3
-dqlogb004 logb  0.03              -> -2
-dqlogb005 logb  1                 ->  0
-dqlogb006 logb  2                 ->  0
-dqlogb007 logb  2.5               ->  0
-dqlogb008 logb  2.50              ->  0
-dqlogb009 logb  2.500             ->  0
-dqlogb010 logb  10                ->  1
-dqlogb011 logb  70                ->  1
-dqlogb012 logb  100               ->  2
-dqlogb013 logb  250               ->  2
-dqlogb014 logb  9E+6144           ->  6144
-dqlogb015 logb +Infinity          ->  Infinity
-
--- negatives appear to be treated as positives
-dqlogb021 logb -0                 -> -Infinity  Division_by_zero
-dqlogb022 logb -1E-6176           -> -6176
-dqlogb023 logb -9E-6143           -> -6143
-dqlogb024 logb -0.001             -> -3
-dqlogb025 logb -1                 ->  0
-dqlogb026 logb -2                 ->  0
-dqlogb027 logb -10                ->  1
-dqlogb028 logb -70                ->  1
-dqlogb029 logb -100               ->  2
-dqlogb030 logb -9E+6144           ->  6144
-dqlogb031 logb -Infinity          ->  Infinity
-
--- zeros
-dqlogb111 logb          0   -> -Infinity  Division_by_zero
-dqlogb112 logb         -0   -> -Infinity  Division_by_zero
-dqlogb113 logb       0E+4   -> -Infinity  Division_by_zero
-dqlogb114 logb      -0E+4   -> -Infinity  Division_by_zero
-dqlogb115 logb     0.0000   -> -Infinity  Division_by_zero
-dqlogb116 logb    -0.0000   -> -Infinity  Division_by_zero
-dqlogb117 logb      0E-141  -> -Infinity  Division_by_zero
-dqlogb118 logb     -0E-141  -> -Infinity  Division_by_zero
-
--- full coefficients, alternating bits
-dqlogb121 logb   268268268        -> 8
-dqlogb122 logb  -268268268        -> 8
-dqlogb123 logb   134134134        -> 8
-dqlogb124 logb  -134134134        -> 8
-
--- Nmax, Nmin, Ntiny
-dqlogb131 logb  9.999999999999999999999999999999999E+6144   ->  6144
-dqlogb132 logb  1E-6143                   -> -6143
-dqlogb133 logb  1.000000000000000000000000000000000E-6143   -> -6143
-dqlogb134 logb  1E-6176                   -> -6176
-
-dqlogb135 logb  -1E-6176                  -> -6176
-dqlogb136 logb  -1.000000000000000000000000000000000E-6143  -> -6143
-dqlogb137 logb  -1E-6143                  -> -6143
-dqlogb1614 logb  -9.999999999999999999999999999999999E+6144  ->  6144
-
--- ones
-dqlogb0061 logb  1                 ->   0
-dqlogb0062 logb  1.0               ->   0
-dqlogb0063 logb  1.000000000000000 ->   0
-
--- notable cases -- exact powers of 10
-dqlogb1100 logb 1             -> 0
-dqlogb1101 logb 10            -> 1
-dqlogb1102 logb 100           -> 2
-dqlogb1103 logb 1000          -> 3
-dqlogb1104 logb 10000         -> 4
-dqlogb1105 logb 100000        -> 5
-dqlogb1106 logb 1000000       -> 6
-dqlogb1107 logb 10000000      -> 7
-dqlogb1108 logb 100000000     -> 8
-dqlogb1109 logb 1000000000    -> 9
-dqlogb1110 logb 10000000000   -> 10
-dqlogb1111 logb 100000000000  -> 11
-dqlogb1112 logb 1000000000000 -> 12
-dqlogb1113 logb 0.00000000001 -> -11
-dqlogb1114 logb 0.0000000001 -> -10
-dqlogb1115 logb 0.000000001 -> -9
-dqlogb1116 logb 0.00000001 -> -8
-dqlogb1117 logb 0.0000001 -> -7
-dqlogb1118 logb 0.000001 -> -6
-dqlogb1119 logb 0.00001 -> -5
-dqlogb1120 logb 0.0001 -> -4
-dqlogb1121 logb 0.001 -> -3
-dqlogb1122 logb 0.01 -> -2
-dqlogb1123 logb 0.1 -> -1
-dqlogb1124 logb 1E-99  -> -99
-dqlogb1125 logb 1E-100 -> -100
-dqlogb1127 logb 1E-299 -> -299
-dqlogb1126 logb 1E-6143 -> -6143
-
--- suggestions from Ilan Nehama
-dqlogb1400 logb 10E-3    -> -2
-dqlogb1401 logb 10E-2    -> -1
-dqlogb1402 logb 100E-2   ->  0
-dqlogb1403 logb 1000E-2  ->  1
-dqlogb1404 logb 10000E-2 ->  2
-dqlogb1405 logb 10E-1    ->  0
-dqlogb1406 logb 100E-1   ->  1
-dqlogb1407 logb 1000E-1  ->  2
-dqlogb1408 logb 10000E-1 ->  3
-dqlogb1409 logb 10E0     ->  1
-dqlogb1410 logb 100E0    ->  2
-dqlogb1411 logb 1000E0   ->  3
-dqlogb1412 logb 10000E0  ->  4
-dqlogb1413 logb 10E1     ->  2
-dqlogb1414 logb 100E1    ->  3
-dqlogb1415 logb 1000E1   ->  4
-dqlogb1416 logb 10000E1  ->  5
-dqlogb1417 logb 10E2     ->  3
-dqlogb1418 logb 100E2    ->  4
-dqlogb1419 logb 1000E2   ->  5
-dqlogb1420 logb 10000E2  ->  6
-
--- special values
-dqlogb820  logb   Infinity ->   Infinity
-dqlogb821  logb   0        ->  -Infinity Division_by_zero
-dqlogb822  logb   NaN      ->   NaN
-dqlogb823  logb   sNaN     ->   NaN     Invalid_operation
--- propagating NaNs
-dqlogb824  logb   sNaN123  ->   NaN123  Invalid_operation
-dqlogb825  logb   -sNaN321 ->  -NaN321  Invalid_operation
-dqlogb826  logb   NaN456   ->   NaN456
-dqlogb827  logb   -NaN654  ->  -NaN654
-dqlogb828  logb   NaN1     ->   NaN1
-
--- Null test
-dqlogb900  logb #   -> NaN Invalid_operation
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMax.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMax.decTest
deleted file mode 100644
index dc6a1ab..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMax.decTest
+++ /dev/null
@@ -1,322 +0,0 @@
-------------------------------------------------------------------------
--- dqMax.decTest -- decQuad maxnum                                    --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- we assume that base comparison is tested in compare.decTest, so
--- these mainly cover special cases and rounding
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- sanity checks
-dqmax001 max  -2  -2  -> -2
-dqmax002 max  -2  -1  -> -1
-dqmax003 max  -2   0  ->  0
-dqmax004 max  -2   1  ->  1
-dqmax005 max  -2   2  ->  2
-dqmax006 max  -1  -2  -> -1
-dqmax007 max  -1  -1  -> -1
-dqmax008 max  -1   0  ->  0
-dqmax009 max  -1   1  ->  1
-dqmax010 max  -1   2  ->  2
-dqmax011 max   0  -2  ->  0
-dqmax012 max   0  -1  ->  0
-dqmax013 max   0   0  ->  0
-dqmax014 max   0   1  ->  1
-dqmax015 max   0   2  ->  2
-dqmax016 max   1  -2  ->  1
-dqmax017 max   1  -1  ->  1
-dqmax018 max   1   0  ->  1
-dqmax019 max   1   1  ->  1
-dqmax020 max   1   2  ->  2
-dqmax021 max   2  -2  ->  2
-dqmax022 max   2  -1  ->  2
-dqmax023 max   2   0  ->  2
-dqmax025 max   2   1  ->  2
-dqmax026 max   2   2  ->  2
-
--- extended zeros
-dqmax030 max   0     0   ->  0
-dqmax031 max   0    -0   ->  0
-dqmax032 max   0    -0.0 ->  0
-dqmax033 max   0     0.0 ->  0
-dqmax034 max  -0     0   ->  0    -- note: -0 = 0, but 0 chosen
-dqmax035 max  -0    -0   -> -0
-dqmax036 max  -0    -0.0 -> -0.0
-dqmax037 max  -0     0.0 ->  0.0
-dqmax038 max   0.0   0   ->  0
-dqmax039 max   0.0  -0   ->  0.0
-dqmax040 max   0.0  -0.0 ->  0.0
-dqmax041 max   0.0   0.0 ->  0.0
-dqmax042 max  -0.0   0   ->  0
-dqmax043 max  -0.0  -0   -> -0.0
-dqmax044 max  -0.0  -0.0 -> -0.0
-dqmax045 max  -0.0   0.0 ->  0.0
-
-dqmax050 max  -0E1   0E1 ->  0E+1
-dqmax051 max  -0E2   0E2 ->  0E+2
-dqmax052 max  -0E2   0E1 ->  0E+1
-dqmax053 max  -0E1   0E2 ->  0E+2
-dqmax054 max   0E1  -0E1 ->  0E+1
-dqmax055 max   0E2  -0E2 ->  0E+2
-dqmax056 max   0E2  -0E1 ->  0E+2
-dqmax057 max   0E1  -0E2 ->  0E+1
-
-dqmax058 max   0E1   0E1 ->  0E+1
-dqmax059 max   0E2   0E2 ->  0E+2
-dqmax060 max   0E2   0E1 ->  0E+2
-dqmax061 max   0E1   0E2 ->  0E+2
-dqmax062 max  -0E1  -0E1 -> -0E+1
-dqmax063 max  -0E2  -0E2 -> -0E+2
-dqmax064 max  -0E2  -0E1 -> -0E+1
-dqmax065 max  -0E1  -0E2 -> -0E+1
-
--- Specials
-dqmax090 max  Inf  -Inf   ->  Infinity
-dqmax091 max  Inf  -1000  ->  Infinity
-dqmax092 max  Inf  -1     ->  Infinity
-dqmax093 max  Inf  -0     ->  Infinity
-dqmax094 max  Inf   0     ->  Infinity
-dqmax095 max  Inf   1     ->  Infinity
-dqmax096 max  Inf   1000  ->  Infinity
-dqmax097 max  Inf   Inf   ->  Infinity
-dqmax098 max -1000  Inf   ->  Infinity
-dqmax099 max -Inf   Inf   ->  Infinity
-dqmax100 max -1     Inf   ->  Infinity
-dqmax101 max -0     Inf   ->  Infinity
-dqmax102 max  0     Inf   ->  Infinity
-dqmax103 max  1     Inf   ->  Infinity
-dqmax104 max  1000  Inf   ->  Infinity
-dqmax105 max  Inf   Inf   ->  Infinity
-
-dqmax120 max -Inf  -Inf   -> -Infinity
-dqmax121 max -Inf  -1000  -> -1000
-dqmax122 max -Inf  -1     -> -1
-dqmax123 max -Inf  -0     -> -0
-dqmax124 max -Inf   0     ->  0
-dqmax125 max -Inf   1     ->  1
-dqmax126 max -Inf   1000  ->  1000
-dqmax127 max -Inf   Inf   ->  Infinity
-dqmax128 max -Inf  -Inf   ->  -Infinity
-dqmax129 max -1000 -Inf   ->  -1000
-dqmax130 max -1    -Inf   ->  -1
-dqmax131 max -0    -Inf   ->  -0
-dqmax132 max  0    -Inf   ->  0
-dqmax133 max  1    -Inf   ->  1
-dqmax134 max  1000 -Inf   ->  1000
-dqmax135 max  Inf  -Inf   ->  Infinity
-
--- 2004.08.02 754r chooses number over NaN in mixed cases
-dqmax141 max  NaN -Inf    -> -Infinity
-dqmax142 max  NaN -1000   -> -1000
-dqmax143 max  NaN -1      -> -1
-dqmax144 max  NaN -0      -> -0
-dqmax145 max  NaN  0      ->  0
-dqmax146 max  NaN  1      ->  1
-dqmax147 max  NaN  1000   ->  1000
-dqmax148 max  NaN  Inf    ->  Infinity
-dqmax149 max  NaN  NaN    ->  NaN
-dqmax150 max -Inf  NaN    -> -Infinity
-dqmax151 max -1000 NaN    -> -1000
-dqmax152 max -1    NaN    -> -1
-dqmax153 max -0    NaN    -> -0
-dqmax154 max  0    NaN    ->  0
-dqmax155 max  1    NaN    ->  1
-dqmax156 max  1000 NaN    ->  1000
-dqmax157 max  Inf  NaN    ->  Infinity
-
-dqmax161 max  sNaN -Inf   ->  NaN  Invalid_operation
-dqmax162 max  sNaN -1000  ->  NaN  Invalid_operation
-dqmax163 max  sNaN -1     ->  NaN  Invalid_operation
-dqmax164 max  sNaN -0     ->  NaN  Invalid_operation
-dqmax165 max  sNaN  0     ->  NaN  Invalid_operation
-dqmax166 max  sNaN  1     ->  NaN  Invalid_operation
-dqmax167 max  sNaN  1000  ->  NaN  Invalid_operation
-dqmax168 max  sNaN  NaN   ->  NaN  Invalid_operation
-dqmax169 max  sNaN sNaN   ->  NaN  Invalid_operation
-dqmax170 max  NaN  sNaN   ->  NaN  Invalid_operation
-dqmax171 max -Inf  sNaN   ->  NaN  Invalid_operation
-dqmax172 max -1000 sNaN   ->  NaN  Invalid_operation
-dqmax173 max -1    sNaN   ->  NaN  Invalid_operation
-dqmax174 max -0    sNaN   ->  NaN  Invalid_operation
-dqmax175 max  0    sNaN   ->  NaN  Invalid_operation
-dqmax176 max  1    sNaN   ->  NaN  Invalid_operation
-dqmax177 max  1000 sNaN   ->  NaN  Invalid_operation
-dqmax178 max  Inf  sNaN   ->  NaN  Invalid_operation
-dqmax179 max  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqmax181 max  NaN9  -Inf   -> -Infinity
-dqmax182 max  NaN8     9   ->  9
-dqmax183 max -NaN7   Inf   ->  Infinity
-
-dqmax184 max -NaN1   NaN11 -> -NaN1
-dqmax185 max  NaN2   NaN12 ->  NaN2
-dqmax186 max -NaN13 -NaN7  -> -NaN13
-dqmax187 max  NaN14 -NaN5  ->  NaN14
-
-dqmax188 max -Inf    NaN4  -> -Infinity
-dqmax189 max -9     -NaN3  -> -9
-dqmax190 max  Inf    NaN2  ->  Infinity
-
-dqmax191 max  sNaN99 -Inf    ->  NaN99 Invalid_operation
-dqmax192 max  sNaN98 -1      ->  NaN98 Invalid_operation
-dqmax193 max -sNaN97  NaN    -> -NaN97 Invalid_operation
-dqmax194 max  sNaN96 sNaN94  ->  NaN96 Invalid_operation
-dqmax195 max  NaN95  sNaN93  ->  NaN93 Invalid_operation
-dqmax196 max -Inf    sNaN92  ->  NaN92 Invalid_operation
-dqmax197 max  0      sNaN91  ->  NaN91 Invalid_operation
-dqmax198 max  Inf   -sNaN90  -> -NaN90 Invalid_operation
-dqmax199 max  NaN    sNaN89  ->  NaN89 Invalid_operation
-
--- old rounding checks
-dqmax221 max 12345678000 1  -> 12345678000
-dqmax222 max 1 12345678000  -> 12345678000
-dqmax223 max 1234567800  1  -> 1234567800
-dqmax224 max 1 1234567800   -> 1234567800
-dqmax225 max 1234567890  1  -> 1234567890
-dqmax226 max 1 1234567890   -> 1234567890
-dqmax227 max 1234567891  1  -> 1234567891
-dqmax228 max 1 1234567891   -> 1234567891
-dqmax229 max 12345678901 1  -> 12345678901
-dqmax230 max 1 12345678901  -> 12345678901
-dqmax231 max 1234567896  1  -> 1234567896
-dqmax232 max 1 1234567896   -> 1234567896
-dqmax233 max -1234567891  1 -> 1
-dqmax234 max 1 -1234567891  -> 1
-dqmax235 max -12345678901 1 -> 1
-dqmax236 max 1 -12345678901 -> 1
-dqmax237 max -1234567896  1 -> 1
-dqmax238 max 1 -1234567896  -> 1
-
--- from examples
-dqmax280 max '3'   '2'  ->  '3'
-dqmax281 max '-10' '3'  ->  '3'
-dqmax282 max '1.0' '1'  ->  '1'
-dqmax283 max '1' '1.0'  ->  '1'
-dqmax284 max '7' 'NaN'  ->  '7'
-
--- expanded list from min/max 754r purple prose
--- [explicit tests for exponent ordering]
-dqmax401 max  Inf    1.1     ->  Infinity
-dqmax402 max  1.1    1       ->  1.1
-dqmax403 max  1      1.0     ->  1
-dqmax404 max  1.0    0.1     ->  1.0
-dqmax405 max  0.1    0.10    ->  0.1
-dqmax406 max  0.10   0.100   ->  0.10
-dqmax407 max  0.10   0       ->  0.10
-dqmax408 max  0      0.0     ->  0
-dqmax409 max  0.0   -0       ->  0.0
-dqmax410 max  0.0   -0.0     ->  0.0
-dqmax411 max  0.00  -0.0     ->  0.00
-dqmax412 max  0.0   -0.00    ->  0.0
-dqmax413 max  0     -0.0     ->  0
-dqmax414 max  0     -0       ->  0
-dqmax415 max -0.0   -0       -> -0.0
-dqmax416 max -0     -0.100   -> -0
-dqmax417 max -0.100 -0.10    -> -0.100
-dqmax418 max -0.10  -0.1     -> -0.10
-dqmax419 max -0.1   -1.0     -> -0.1
-dqmax420 max -1.0   -1       -> -1.0
-dqmax421 max -1     -1.1     -> -1
-dqmax423 max -1.1   -Inf     -> -1.1
--- same with operands reversed
-dqmax431 max  1.1    Inf     ->  Infinity
-dqmax432 max  1      1.1     ->  1.1
-dqmax433 max  1.0    1       ->  1
-dqmax434 max  0.1    1.0     ->  1.0
-dqmax435 max  0.10   0.1     ->  0.1
-dqmax436 max  0.100  0.10    ->  0.10
-dqmax437 max  0      0.10    ->  0.10
-dqmax438 max  0.0    0       ->  0
-dqmax439 max -0      0.0     ->  0.0
-dqmax440 max -0.0    0.0     ->  0.0
-dqmax441 max -0.0    0.00    ->  0.00
-dqmax442 max -0.00   0.0     ->  0.0
-dqmax443 max -0.0    0       ->  0
-dqmax444 max -0      0       ->  0
-dqmax445 max -0     -0.0     -> -0.0
-dqmax446 max -0.100 -0       -> -0
-dqmax447 max -0.10  -0.100   -> -0.100
-dqmax448 max -0.1   -0.10    -> -0.10
-dqmax449 max -1.0   -0.1     -> -0.1
-dqmax450 max -1     -1.0     -> -1.0
-dqmax451 max -1.1   -1       -> -1
-dqmax453 max -Inf   -1.1     -> -1.1
--- largies
-dqmax460 max  1000   1E+3    ->  1E+3
-dqmax461 max  1E+3   1000    ->  1E+3
-dqmax462 max  1000  -1E+3    ->  1000
-dqmax463 max  1E+3  -1000    ->  1E+3
-dqmax464 max -1000   1E+3    ->  1E+3
-dqmax465 max -1E+3   1000    ->  1000
-dqmax466 max -1000  -1E+3    -> -1000
-dqmax467 max -1E+3  -1000    -> -1000
-
--- misalignment traps for little-endian
-dqmax471 max      1.0       0.1  -> 1.0
-dqmax472 max      0.1       1.0  -> 1.0
-dqmax473 max     10.0       0.1  -> 10.0
-dqmax474 max      0.1      10.0  -> 10.0
-dqmax475 max      100       1.0  -> 100
-dqmax476 max      1.0       100  -> 100
-dqmax477 max     1000      10.0  -> 1000
-dqmax478 max     10.0      1000  -> 1000
-dqmax479 max    10000     100.0  -> 10000
-dqmax480 max    100.0     10000  -> 10000
-dqmax481 max   100000    1000.0  -> 100000
-dqmax482 max   1000.0    100000  -> 100000
-dqmax483 max  1000000   10000.0  -> 1000000
-dqmax484 max  10000.0   1000000  -> 1000000
-
--- subnormals
-dqmax510 max  1.00E-6143       0  ->   1.00E-6143
-dqmax511 max  0.1E-6143        0  ->   1E-6144    Subnormal
-dqmax512 max  0.10E-6143       0  ->   1.0E-6144  Subnormal
-dqmax513 max  0.100E-6143      0  ->   1.00E-6144 Subnormal
-dqmax514 max  0.01E-6143       0  ->   1E-6145    Subnormal
-dqmax515 max  0.999E-6143      0  ->   9.99E-6144 Subnormal
-dqmax516 max  0.099E-6143      0  ->   9.9E-6145  Subnormal
-dqmax517 max  0.009E-6143      0  ->   9E-6146    Subnormal
-dqmax518 max  0.001E-6143      0  ->   1E-6146    Subnormal
-dqmax519 max  0.0009E-6143     0  ->   9E-6147    Subnormal
-dqmax520 max  0.0001E-6143     0  ->   1E-6147    Subnormal
-
-dqmax530 max -1.00E-6143       0  ->   0
-dqmax531 max -0.1E-6143        0  ->   0
-dqmax532 max -0.10E-6143       0  ->   0
-dqmax533 max -0.100E-6143      0  ->   0
-dqmax534 max -0.01E-6143       0  ->   0
-dqmax535 max -0.999E-6143      0  ->   0
-dqmax536 max -0.099E-6143      0  ->   0
-dqmax537 max -0.009E-6143      0  ->   0
-dqmax538 max -0.001E-6143      0  ->   0
-dqmax539 max -0.0009E-6143     0  ->   0
-dqmax540 max -0.0001E-6143     0  ->   0
-
--- Null tests
-dqmax900 max 10  #  -> NaN Invalid_operation
-dqmax901 max  # 10  -> NaN Invalid_operation
-
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMaxMag.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMaxMag.decTest
deleted file mode 100644
index 6f5be24..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMaxMag.decTest
+++ /dev/null
@@ -1,304 +0,0 @@
-------------------------------------------------------------------------
--- dqMaxMag.decTest -- decQuad maxnummag                              --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- we assume that base comparison is tested in compare.decTest, so
--- these mainly cover special cases and rounding
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- sanity checks
-dqmxg001 maxmag  -2  -2  -> -2
-dqmxg002 maxmag  -2  -1  -> -2
-dqmxg003 maxmag  -2   0  -> -2
-dqmxg004 maxmag  -2   1  -> -2
-dqmxg005 maxmag  -2   2  ->  2
-dqmxg006 maxmag  -1  -2  -> -2
-dqmxg007 maxmag  -1  -1  -> -1
-dqmxg008 maxmag  -1   0  -> -1
-dqmxg009 maxmag  -1   1  ->  1
-dqmxg010 maxmag  -1   2  ->  2
-dqmxg011 maxmag   0  -2  -> -2
-dqmxg012 maxmag   0  -1  -> -1
-dqmxg013 maxmag   0   0  ->  0
-dqmxg014 maxmag   0   1  ->  1
-dqmxg015 maxmag   0   2  ->  2
-dqmxg016 maxmag   1  -2  -> -2
-dqmxg017 maxmag   1  -1  ->  1
-dqmxg018 maxmag   1   0  ->  1
-dqmxg019 maxmag   1   1  ->  1
-dqmxg020 maxmag   1   2  ->  2
-dqmxg021 maxmag   2  -2  ->  2
-dqmxg022 maxmag   2  -1  ->  2
-dqmxg023 maxmag   2   0  ->  2
-dqmxg025 maxmag   2   1  ->  2
-dqmxg026 maxmag   2   2  ->  2
-
--- extended zeros
-dqmxg030 maxmag   0     0   ->  0
-dqmxg031 maxmag   0    -0   ->  0
-dqmxg032 maxmag   0    -0.0 ->  0
-dqmxg033 maxmag   0     0.0 ->  0
-dqmxg034 maxmag  -0     0   ->  0    -- note: -0 = 0, but 0 chosen
-dqmxg035 maxmag  -0    -0   -> -0
-dqmxg036 maxmag  -0    -0.0 -> -0.0
-dqmxg037 maxmag  -0     0.0 ->  0.0
-dqmxg038 maxmag   0.0   0   ->  0
-dqmxg039 maxmag   0.0  -0   ->  0.0
-dqmxg040 maxmag   0.0  -0.0 ->  0.0
-dqmxg041 maxmag   0.0   0.0 ->  0.0
-dqmxg042 maxmag  -0.0   0   ->  0
-dqmxg043 maxmag  -0.0  -0   -> -0.0
-dqmxg044 maxmag  -0.0  -0.0 -> -0.0
-dqmxg045 maxmag  -0.0   0.0 ->  0.0
-
-dqmxg050 maxmag  -0E1   0E1 ->  0E+1
-dqmxg051 maxmag  -0E2   0E2 ->  0E+2
-dqmxg052 maxmag  -0E2   0E1 ->  0E+1
-dqmxg053 maxmag  -0E1   0E2 ->  0E+2
-dqmxg054 maxmag   0E1  -0E1 ->  0E+1
-dqmxg055 maxmag   0E2  -0E2 ->  0E+2
-dqmxg056 maxmag   0E2  -0E1 ->  0E+2
-dqmxg057 maxmag   0E1  -0E2 ->  0E+1
-
-dqmxg058 maxmag   0E1   0E1 ->  0E+1
-dqmxg059 maxmag   0E2   0E2 ->  0E+2
-dqmxg060 maxmag   0E2   0E1 ->  0E+2
-dqmxg061 maxmag   0E1   0E2 ->  0E+2
-dqmxg062 maxmag  -0E1  -0E1 -> -0E+1
-dqmxg063 maxmag  -0E2  -0E2 -> -0E+2
-dqmxg064 maxmag  -0E2  -0E1 -> -0E+1
-dqmxg065 maxmag  -0E1  -0E2 -> -0E+1
-
--- Specials
-dqmxg090 maxmag  Inf  -Inf   ->  Infinity
-dqmxg091 maxmag  Inf  -1000  ->  Infinity
-dqmxg092 maxmag  Inf  -1     ->  Infinity
-dqmxg093 maxmag  Inf  -0     ->  Infinity
-dqmxg094 maxmag  Inf   0     ->  Infinity
-dqmxg095 maxmag  Inf   1     ->  Infinity
-dqmxg096 maxmag  Inf   1000  ->  Infinity
-dqmxg097 maxmag  Inf   Inf   ->  Infinity
-dqmxg098 maxmag -1000  Inf   ->  Infinity
-dqmxg099 maxmag -Inf   Inf   ->  Infinity
-dqmxg100 maxmag -1     Inf   ->  Infinity
-dqmxg101 maxmag -0     Inf   ->  Infinity
-dqmxg102 maxmag  0     Inf   ->  Infinity
-dqmxg103 maxmag  1     Inf   ->  Infinity
-dqmxg104 maxmag  1000  Inf   ->  Infinity
-dqmxg105 maxmag  Inf   Inf   ->  Infinity
-
-dqmxg120 maxmag -Inf  -Inf   -> -Infinity
-dqmxg121 maxmag -Inf  -1000  -> -Infinity
-dqmxg122 maxmag -Inf  -1     -> -Infinity
-dqmxg123 maxmag -Inf  -0     -> -Infinity
-dqmxg124 maxmag -Inf   0     -> -Infinity
-dqmxg125 maxmag -Inf   1     -> -Infinity
-dqmxg126 maxmag -Inf   1000  -> -Infinity
-dqmxg127 maxmag -Inf   Inf   ->  Infinity
-dqmxg128 maxmag -Inf  -Inf   ->  -Infinity
-dqmxg129 maxmag -1000 -Inf   -> -Infinity
-dqmxg130 maxmag -1    -Inf   -> -Infinity
-dqmxg131 maxmag -0    -Inf   -> -Infinity
-dqmxg132 maxmag  0    -Inf   -> -Infinity
-dqmxg133 maxmag  1    -Inf   -> -Infinity
-dqmxg134 maxmag  1000 -Inf   -> -Infinity
-dqmxg135 maxmag  Inf  -Inf   ->  Infinity
-
--- 2004.08.02 754r chooses number over NaN in mixed cases
-dqmxg141 maxmag  NaN -Inf    -> -Infinity
-dqmxg142 maxmag  NaN -1000   -> -1000
-dqmxg143 maxmag  NaN -1      -> -1
-dqmxg144 maxmag  NaN -0      -> -0
-dqmxg145 maxmag  NaN  0      ->  0
-dqmxg146 maxmag  NaN  1      ->  1
-dqmxg147 maxmag  NaN  1000   ->  1000
-dqmxg148 maxmag  NaN  Inf    ->  Infinity
-dqmxg149 maxmag  NaN  NaN    ->  NaN
-dqmxg150 maxmag -Inf  NaN    -> -Infinity
-dqmxg151 maxmag -1000 NaN    -> -1000
-dqmxg152 maxmag -1    NaN    -> -1
-dqmxg153 maxmag -0    NaN    -> -0
-dqmxg154 maxmag  0    NaN    ->  0
-dqmxg155 maxmag  1    NaN    ->  1
-dqmxg156 maxmag  1000 NaN    ->  1000
-dqmxg157 maxmag  Inf  NaN    ->  Infinity
-
-dqmxg161 maxmag  sNaN -Inf   ->  NaN  Invalid_operation
-dqmxg162 maxmag  sNaN -1000  ->  NaN  Invalid_operation
-dqmxg163 maxmag  sNaN -1     ->  NaN  Invalid_operation
-dqmxg164 maxmag  sNaN -0     ->  NaN  Invalid_operation
-dqmxg165 maxmag  sNaN  0     ->  NaN  Invalid_operation
-dqmxg166 maxmag  sNaN  1     ->  NaN  Invalid_operation
-dqmxg167 maxmag  sNaN  1000  ->  NaN  Invalid_operation
-dqmxg168 maxmag  sNaN  NaN   ->  NaN  Invalid_operation
-dqmxg169 maxmag  sNaN sNaN   ->  NaN  Invalid_operation
-dqmxg170 maxmag  NaN  sNaN   ->  NaN  Invalid_operation
-dqmxg171 maxmag -Inf  sNaN   ->  NaN  Invalid_operation
-dqmxg172 maxmag -1000 sNaN   ->  NaN  Invalid_operation
-dqmxg173 maxmag -1    sNaN   ->  NaN  Invalid_operation
-dqmxg174 maxmag -0    sNaN   ->  NaN  Invalid_operation
-dqmxg175 maxmag  0    sNaN   ->  NaN  Invalid_operation
-dqmxg176 maxmag  1    sNaN   ->  NaN  Invalid_operation
-dqmxg177 maxmag  1000 sNaN   ->  NaN  Invalid_operation
-dqmxg178 maxmag  Inf  sNaN   ->  NaN  Invalid_operation
-dqmxg179 maxmag  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqmxg181 maxmag  NaN9  -Inf   -> -Infinity
-dqmxg182 maxmag  NaN8     9   ->  9
-dqmxg183 maxmag -NaN7   Inf   ->  Infinity
-
-dqmxg184 maxmag -NaN1   NaN11 -> -NaN1
-dqmxg185 maxmag  NaN2   NaN12 ->  NaN2
-dqmxg186 maxmag -NaN13 -NaN7  -> -NaN13
-dqmxg187 maxmag  NaN14 -NaN5  ->  NaN14
-
-dqmxg188 maxmag -Inf    NaN4  -> -Infinity
-dqmxg189 maxmag -9     -NaN3  -> -9
-dqmxg190 maxmag  Inf    NaN2  ->  Infinity
-
-dqmxg191 maxmag  sNaN99 -Inf    ->  NaN99 Invalid_operation
-dqmxg192 maxmag  sNaN98 -1      ->  NaN98 Invalid_operation
-dqmxg193 maxmag -sNaN97  NaN    -> -NaN97 Invalid_operation
-dqmxg194 maxmag  sNaN96 sNaN94  ->  NaN96 Invalid_operation
-dqmxg195 maxmag  NaN95  sNaN93  ->  NaN93 Invalid_operation
-dqmxg196 maxmag -Inf    sNaN92  ->  NaN92 Invalid_operation
-dqmxg197 maxmag  0      sNaN91  ->  NaN91 Invalid_operation
-dqmxg198 maxmag  Inf   -sNaN90  -> -NaN90 Invalid_operation
-dqmxg199 maxmag  NaN    sNaN89  ->  NaN89 Invalid_operation
-
--- old rounding checks
-dqmxg221 maxmag 12345678000 1  -> 12345678000
-dqmxg222 maxmag 1 12345678000  -> 12345678000
-dqmxg223 maxmag 1234567800  1  -> 1234567800
-dqmxg224 maxmag 1 1234567800   -> 1234567800
-dqmxg225 maxmag 1234567890  1  -> 1234567890
-dqmxg226 maxmag 1 1234567890   -> 1234567890
-dqmxg227 maxmag 1234567891  1  -> 1234567891
-dqmxg228 maxmag 1 1234567891   -> 1234567891
-dqmxg229 maxmag 12345678901 1  -> 12345678901
-dqmxg230 maxmag 1 12345678901  -> 12345678901
-dqmxg231 maxmag 1234567896  1  -> 1234567896
-dqmxg232 maxmag 1 1234567896   -> 1234567896
-dqmxg233 maxmag -1234567891  1 -> -1234567891
-dqmxg234 maxmag 1 -1234567891  -> -1234567891
-dqmxg235 maxmag -12345678901 1 -> -12345678901
-dqmxg236 maxmag 1 -12345678901 -> -12345678901
-dqmxg237 maxmag -1234567896  1 -> -1234567896
-dqmxg238 maxmag 1 -1234567896  -> -1234567896
-
--- from examples
-dqmxg280 maxmag '3'   '2'  ->  '3'
-dqmxg281 maxmag '-10' '3'  ->  '-10'
-dqmxg282 maxmag '1.0' '1'  ->  '1'
-dqmxg283 maxmag '1' '1.0'  ->  '1'
-dqmxg284 maxmag '7' 'NaN'  ->  '7'
-
--- expanded list from min/max 754r purple prose
--- [explicit tests for exponent ordering]
-dqmxg401 maxmag  Inf    1.1     ->  Infinity
-dqmxg402 maxmag  1.1    1       ->  1.1
-dqmxg403 maxmag  1      1.0     ->  1
-dqmxg404 maxmag  1.0    0.1     ->  1.0
-dqmxg405 maxmag  0.1    0.10    ->  0.1
-dqmxg406 maxmag  0.10   0.100   ->  0.10
-dqmxg407 maxmag  0.10   0       ->  0.10
-dqmxg408 maxmag  0      0.0     ->  0
-dqmxg409 maxmag  0.0   -0       ->  0.0
-dqmxg410 maxmag  0.0   -0.0     ->  0.0
-dqmxg411 maxmag  0.00  -0.0     ->  0.00
-dqmxg412 maxmag  0.0   -0.00    ->  0.0
-dqmxg413 maxmag  0     -0.0     ->  0
-dqmxg414 maxmag  0     -0       ->  0
-dqmxg415 maxmag -0.0   -0       -> -0.0
-dqmxg416 maxmag -0     -0.100   -> -0.100
-dqmxg417 maxmag -0.100 -0.10    -> -0.100
-dqmxg418 maxmag -0.10  -0.1     -> -0.10
-dqmxg419 maxmag -0.1   -1.0     -> -1.0
-dqmxg420 maxmag -1.0   -1       -> -1.0
-dqmxg421 maxmag -1     -1.1     -> -1.1
-dqmxg423 maxmag -1.1   -Inf     -> -Infinity
--- same with operands reversed
-dqmxg431 maxmag  1.1    Inf     ->  Infinity
-dqmxg432 maxmag  1      1.1     ->  1.1
-dqmxg433 maxmag  1.0    1       ->  1
-dqmxg434 maxmag  0.1    1.0     ->  1.0
-dqmxg435 maxmag  0.10   0.1     ->  0.1
-dqmxg436 maxmag  0.100  0.10    ->  0.10
-dqmxg437 maxmag  0      0.10    ->  0.10
-dqmxg438 maxmag  0.0    0       ->  0
-dqmxg439 maxmag -0      0.0     ->  0.0
-dqmxg440 maxmag -0.0    0.0     ->  0.0
-dqmxg441 maxmag -0.0    0.00    ->  0.00
-dqmxg442 maxmag -0.00   0.0     ->  0.0
-dqmxg443 maxmag -0.0    0       ->  0
-dqmxg444 maxmag -0      0       ->  0
-dqmxg445 maxmag -0     -0.0     -> -0.0
-dqmxg446 maxmag -0.100 -0       -> -0.100
-dqmxg447 maxmag -0.10  -0.100   -> -0.100
-dqmxg448 maxmag -0.1   -0.10    -> -0.10
-dqmxg449 maxmag -1.0   -0.1     -> -1.0
-dqmxg450 maxmag -1     -1.0     -> -1.0
-dqmxg451 maxmag -1.1   -1       -> -1.1
-dqmxg453 maxmag -Inf   -1.1     -> -Infinity
--- largies
-dqmxg460 maxmag  1000   1E+3    ->  1E+3
-dqmxg461 maxmag  1E+3   1000    ->  1E+3
-dqmxg462 maxmag  1000  -1E+3    ->  1000
-dqmxg463 maxmag  1E+3  -1000    ->  1E+3
-dqmxg464 maxmag -1000   1E+3    ->  1E+3
-dqmxg465 maxmag -1E+3   1000    ->  1000
-dqmxg466 maxmag -1000  -1E+3    -> -1000
-dqmxg467 maxmag -1E+3  -1000    -> -1000
-
--- subnormals
-dqmxg510 maxmag  1.00E-6143       0  ->   1.00E-6143
-dqmxg511 maxmag  0.1E-6143        0  ->   1E-6144    Subnormal
-dqmxg512 maxmag  0.10E-6143       0  ->   1.0E-6144  Subnormal
-dqmxg513 maxmag  0.100E-6143      0  ->   1.00E-6144 Subnormal
-dqmxg514 maxmag  0.01E-6143       0  ->   1E-6145    Subnormal
-dqmxg515 maxmag  0.999E-6143      0  ->   9.99E-6144 Subnormal
-dqmxg516 maxmag  0.099E-6143      0  ->   9.9E-6145  Subnormal
-dqmxg517 maxmag  0.009E-6143      0  ->   9E-6146    Subnormal
-dqmxg518 maxmag  0.001E-6143      0  ->   1E-6146    Subnormal
-dqmxg519 maxmag  0.0009E-6143     0  ->   9E-6147    Subnormal
-dqmxg520 maxmag  0.0001E-6143     0  ->   1E-6147    Subnormal
-
-dqmxg530 maxmag -1.00E-6143       0  ->  -1.00E-6143
-dqmxg531 maxmag -0.1E-6143        0  ->  -1E-6144    Subnormal
-dqmxg532 maxmag -0.10E-6143       0  ->  -1.0E-6144  Subnormal
-dqmxg533 maxmag -0.100E-6143      0  ->  -1.00E-6144 Subnormal
-dqmxg534 maxmag -0.01E-6143       0  ->  -1E-6145    Subnormal
-dqmxg535 maxmag -0.999E-6143      0  ->  -9.99E-6144 Subnormal
-dqmxg536 maxmag -0.099E-6143      0  ->  -9.9E-6145  Subnormal
-dqmxg537 maxmag -0.009E-6143      0  ->  -9E-6146    Subnormal
-dqmxg538 maxmag -0.001E-6143      0  ->  -1E-6146    Subnormal
-dqmxg539 maxmag -0.0009E-6143     0  ->  -9E-6147    Subnormal
-dqmxg540 maxmag -0.0001E-6143     0  ->  -1E-6147    Subnormal
-
--- Null tests
-dqmxg900 maxmag 10  #  -> NaN Invalid_operation
-dqmxg901 maxmag  # 10  -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMin.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMin.decTest
deleted file mode 100644
index 5302039..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMin.decTest
+++ /dev/null
@@ -1,309 +0,0 @@
-------------------------------------------------------------------------
--- dqMin.decTest -- decQuad minnum                                    --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- we assume that base comparison is tested in compare.decTest, so
--- these mainly cover special cases and rounding
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- sanity checks
-dqmin001 min  -2  -2  -> -2
-dqmin002 min  -2  -1  -> -2
-dqmin003 min  -2   0  -> -2
-dqmin004 min  -2   1  -> -2
-dqmin005 min  -2   2  -> -2
-dqmin006 min  -1  -2  -> -2
-dqmin007 min  -1  -1  -> -1
-dqmin008 min  -1   0  -> -1
-dqmin009 min  -1   1  -> -1
-dqmin010 min  -1   2  -> -1
-dqmin011 min   0  -2  -> -2
-dqmin012 min   0  -1  -> -1
-dqmin013 min   0   0  ->  0
-dqmin014 min   0   1  ->  0
-dqmin015 min   0   2  ->  0
-dqmin016 min   1  -2  -> -2
-dqmin017 min   1  -1  -> -1
-dqmin018 min   1   0  ->  0
-dqmin019 min   1   1  ->  1
-dqmin020 min   1   2  ->  1
-dqmin021 min   2  -2  -> -2
-dqmin022 min   2  -1  -> -1
-dqmin023 min   2   0  ->  0
-dqmin025 min   2   1  ->  1
-dqmin026 min   2   2  ->  2
-
--- extended zeros
-dqmin030 min   0     0   ->  0
-dqmin031 min   0    -0   -> -0
-dqmin032 min   0    -0.0 -> -0.0
-dqmin033 min   0     0.0 ->  0.0
-dqmin034 min  -0     0   -> -0
-dqmin035 min  -0    -0   -> -0
-dqmin036 min  -0    -0.0 -> -0
-dqmin037 min  -0     0.0 -> -0
-dqmin038 min   0.0   0   ->  0.0
-dqmin039 min   0.0  -0   -> -0
-dqmin040 min   0.0  -0.0 -> -0.0
-dqmin041 min   0.0   0.0 ->  0.0
-dqmin042 min  -0.0   0   -> -0.0
-dqmin043 min  -0.0  -0   -> -0
-dqmin044 min  -0.0  -0.0 -> -0.0
-dqmin045 min  -0.0   0.0 -> -0.0
-
-dqmin046 min   0E1  -0E1 -> -0E+1
-dqmin047 min  -0E1   0E2 -> -0E+1
-dqmin048 min   0E2   0E1 ->  0E+1
-dqmin049 min   0E1   0E2 ->  0E+1
-dqmin050 min  -0E3  -0E2 -> -0E+3
-dqmin051 min  -0E2  -0E3 -> -0E+3
-
--- Specials
-dqmin090 min  Inf  -Inf   -> -Infinity
-dqmin091 min  Inf  -1000  -> -1000
-dqmin092 min  Inf  -1     -> -1
-dqmin093 min  Inf  -0     -> -0
-dqmin094 min  Inf   0     ->  0
-dqmin095 min  Inf   1     ->  1
-dqmin096 min  Inf   1000  ->  1000
-dqmin097 min  Inf   Inf   ->  Infinity
-dqmin098 min -1000  Inf   -> -1000
-dqmin099 min -Inf   Inf   -> -Infinity
-dqmin100 min -1     Inf   -> -1
-dqmin101 min -0     Inf   -> -0
-dqmin102 min  0     Inf   ->  0
-dqmin103 min  1     Inf   ->  1
-dqmin104 min  1000  Inf   ->  1000
-dqmin105 min  Inf   Inf   ->  Infinity
-
-dqmin120 min -Inf  -Inf   -> -Infinity
-dqmin121 min -Inf  -1000  -> -Infinity
-dqmin122 min -Inf  -1     -> -Infinity
-dqmin123 min -Inf  -0     -> -Infinity
-dqmin124 min -Inf   0     -> -Infinity
-dqmin125 min -Inf   1     -> -Infinity
-dqmin126 min -Inf   1000  -> -Infinity
-dqmin127 min -Inf   Inf   -> -Infinity
-dqmin128 min -Inf  -Inf   -> -Infinity
-dqmin129 min -1000 -Inf   -> -Infinity
-dqmin130 min -1    -Inf   -> -Infinity
-dqmin131 min -0    -Inf   -> -Infinity
-dqmin132 min  0    -Inf   -> -Infinity
-dqmin133 min  1    -Inf   -> -Infinity
-dqmin134 min  1000 -Inf   -> -Infinity
-dqmin135 min  Inf  -Inf   -> -Infinity
-
--- 2004.08.02 754r chooses number over NaN in mixed cases
-dqmin141 min  NaN -Inf    ->  -Infinity
-dqmin142 min  NaN -1000   ->  -1000
-dqmin143 min  NaN -1      ->  -1
-dqmin144 min  NaN -0      ->  -0
-dqmin145 min  NaN  0      ->  0
-dqmin146 min  NaN  1      ->  1
-dqmin147 min  NaN  1000   ->  1000
-dqmin148 min  NaN  Inf    ->  Infinity
-dqmin149 min  NaN  NaN    ->  NaN
-dqmin150 min -Inf  NaN    -> -Infinity
-dqmin151 min -1000 NaN    -> -1000
-dqmin152 min -1   -NaN    -> -1
-dqmin153 min -0    NaN    -> -0
-dqmin154 min  0   -NaN    ->  0
-dqmin155 min  1    NaN    ->  1
-dqmin156 min  1000 NaN    ->  1000
-dqmin157 min  Inf  NaN    ->  Infinity
-
-dqmin161 min  sNaN -Inf   ->  NaN  Invalid_operation
-dqmin162 min  sNaN -1000  ->  NaN  Invalid_operation
-dqmin163 min  sNaN -1     ->  NaN  Invalid_operation
-dqmin164 min  sNaN -0     ->  NaN  Invalid_operation
-dqmin165 min -sNaN  0     -> -NaN  Invalid_operation
-dqmin166 min -sNaN  1     -> -NaN  Invalid_operation
-dqmin167 min  sNaN  1000  ->  NaN  Invalid_operation
-dqmin168 min  sNaN  NaN   ->  NaN  Invalid_operation
-dqmin169 min  sNaN sNaN   ->  NaN  Invalid_operation
-dqmin170 min  NaN  sNaN   ->  NaN  Invalid_operation
-dqmin171 min -Inf  sNaN   ->  NaN  Invalid_operation
-dqmin172 min -1000 sNaN   ->  NaN  Invalid_operation
-dqmin173 min -1    sNaN   ->  NaN  Invalid_operation
-dqmin174 min -0    sNaN   ->  NaN  Invalid_operation
-dqmin175 min  0    sNaN   ->  NaN  Invalid_operation
-dqmin176 min  1    sNaN   ->  NaN  Invalid_operation
-dqmin177 min  1000 sNaN   ->  NaN  Invalid_operation
-dqmin178 min  Inf  sNaN   ->  NaN  Invalid_operation
-dqmin179 min  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqmin181 min  NaN9   -Inf   -> -Infinity
-dqmin182 min -NaN8    9990  ->  9990
-dqmin183 min  NaN71   Inf   ->  Infinity
-
-dqmin184 min  NaN1    NaN54 ->  NaN1
-dqmin185 min  NaN22  -NaN53 ->  NaN22
-dqmin186 min -NaN3    NaN6  -> -NaN3
-dqmin187 min -NaN44   NaN7  -> -NaN44
-
-dqmin188 min -Inf     NaN41 -> -Infinity
-dqmin189 min -9999   -NaN33 -> -9999
-dqmin190 min  Inf     NaN2  ->  Infinity
-
-dqmin191 min  sNaN99 -Inf    ->  NaN99 Invalid_operation
-dqmin192 min  sNaN98 -11     ->  NaN98 Invalid_operation
-dqmin193 min -sNaN97  NaN8   -> -NaN97 Invalid_operation
-dqmin194 min  sNaN69 sNaN94  ->  NaN69 Invalid_operation
-dqmin195 min  NaN95  sNaN93  ->  NaN93 Invalid_operation
-dqmin196 min -Inf    sNaN92  ->  NaN92 Invalid_operation
-dqmin197 min  088    sNaN91  ->  NaN91 Invalid_operation
-dqmin198 min  Inf   -sNaN90  -> -NaN90 Invalid_operation
-dqmin199 min  NaN    sNaN86  ->  NaN86 Invalid_operation
-
--- old rounding checks
-dqmin221 min -12345678000 1  -> -12345678000
-dqmin222 min 1 -12345678000  -> -12345678000
-dqmin223 min -1234567800  1  -> -1234567800
-dqmin224 min 1 -1234567800   -> -1234567800
-dqmin225 min -1234567890  1  -> -1234567890
-dqmin226 min 1 -1234567890   -> -1234567890
-dqmin227 min -1234567891  1  -> -1234567891
-dqmin228 min 1 -1234567891   -> -1234567891
-dqmin229 min -12345678901 1  -> -12345678901
-dqmin230 min 1 -12345678901  -> -12345678901
-dqmin231 min -1234567896  1  -> -1234567896
-dqmin232 min 1 -1234567896   -> -1234567896
-dqmin233 min 1234567891  1   -> 1
-dqmin234 min 1 1234567891    -> 1
-dqmin235 min 12345678901 1   -> 1
-dqmin236 min 1 12345678901   -> 1
-dqmin237 min 1234567896  1   -> 1
-dqmin238 min 1 1234567896    -> 1
-
--- from examples
-dqmin280 min '3'   '2'  ->  '2'
-dqmin281 min '-10' '3'  ->  '-10'
-dqmin282 min '1.0' '1'  ->  '1.0'
-dqmin283 min '1' '1.0'  ->  '1.0'
-dqmin284 min '7' 'NaN'  ->  '7'
-
--- expanded list from min/max 754r purple prose
--- [explicit tests for exponent ordering]
-dqmin401 min  Inf    1.1     ->  1.1
-dqmin402 min  1.1    1       ->  1
-dqmin403 min  1      1.0     ->  1.0
-dqmin404 min  1.0    0.1     ->  0.1
-dqmin405 min  0.1    0.10    ->  0.10
-dqmin406 min  0.10   0.100   ->  0.100
-dqmin407 min  0.10   0       ->  0
-dqmin408 min  0      0.0     ->  0.0
-dqmin409 min  0.0   -0       -> -0
-dqmin410 min  0.0   -0.0     -> -0.0
-dqmin411 min  0.00  -0.0     -> -0.0
-dqmin412 min  0.0   -0.00    -> -0.00
-dqmin413 min  0     -0.0     -> -0.0
-dqmin414 min  0     -0       -> -0
-dqmin415 min -0.0   -0       -> -0
-dqmin416 min -0     -0.100   -> -0.100
-dqmin417 min -0.100 -0.10    -> -0.10
-dqmin418 min -0.10  -0.1     -> -0.1
-dqmin419 min -0.1   -1.0     -> -1.0
-dqmin420 min -1.0   -1       -> -1
-dqmin421 min -1     -1.1     -> -1.1
-dqmin423 min -1.1   -Inf     -> -Infinity
--- same with operands reversed
-dqmin431 min  1.1    Inf     ->  1.1
-dqmin432 min  1      1.1     ->  1
-dqmin433 min  1.0    1       ->  1.0
-dqmin434 min  0.1    1.0     ->  0.1
-dqmin435 min  0.10   0.1     ->  0.10
-dqmin436 min  0.100  0.10    ->  0.100
-dqmin437 min  0      0.10    ->  0
-dqmin438 min  0.0    0       ->  0.0
-dqmin439 min -0      0.0     -> -0
-dqmin440 min -0.0    0.0     -> -0.0
-dqmin441 min -0.0    0.00    -> -0.0
-dqmin442 min -0.00   0.0     -> -0.00
-dqmin443 min -0.0    0       -> -0.0
-dqmin444 min -0      0       -> -0
-dqmin445 min -0     -0.0     -> -0
-dqmin446 min -0.100 -0       -> -0.100
-dqmin447 min -0.10  -0.100   -> -0.10
-dqmin448 min -0.1   -0.10    -> -0.1
-dqmin449 min -1.0   -0.1     -> -1.0
-dqmin450 min -1     -1.0     -> -1
-dqmin451 min -1.1   -1       -> -1.1
-dqmin453 min -Inf   -1.1     -> -Infinity
--- largies
-dqmin460 min  1000   1E+3    ->  1000
-dqmin461 min  1E+3   1000    ->  1000
-dqmin462 min  1000  -1E+3    -> -1E+3
-dqmin463 min  1E+3  -384    -> -384
-dqmin464 min -384   1E+3    -> -384
-dqmin465 min -1E+3   1000    -> -1E+3
-dqmin466 min -384  -1E+3    -> -1E+3
-dqmin467 min -1E+3  -384    -> -1E+3
-
--- misalignment traps for little-endian
-dqmin471 min      1.0       0.1  -> 0.1
-dqmin472 min      0.1       1.0  -> 0.1
-dqmin473 min     10.0       0.1  -> 0.1
-dqmin474 min      0.1      10.0  -> 0.1
-dqmin475 min      100       1.0  -> 1.0
-dqmin476 min      1.0       100  -> 1.0
-dqmin477 min     1000      10.0  -> 10.0
-dqmin478 min     10.0      1000  -> 10.0
-dqmin479 min    10000     100.0  -> 100.0
-dqmin480 min    100.0     10000  -> 100.0
-dqmin481 min   100000    1000.0  -> 1000.0
-dqmin482 min   1000.0    100000  -> 1000.0
-dqmin483 min  1000000   10000.0  -> 10000.0
-dqmin484 min  10000.0   1000000  -> 10000.0
-
--- subnormals
-dqmin510 min  1.00E-6143       0  ->   0
-dqmin511 min  0.1E-6143        0  ->   0
-dqmin512 min  0.10E-6143       0  ->   0
-dqmin513 min  0.100E-6143      0  ->   0
-dqmin514 min  0.01E-6143       0  ->   0
-dqmin515 min  0.999E-6143      0  ->   0
-dqmin516 min  0.099E-6143      0  ->   0
-dqmin517 min  0.009E-6143      0  ->   0
-dqmin518 min  0.001E-6143      0  ->   0
-dqmin519 min  0.0009E-6143     0  ->   0
-dqmin520 min  0.0001E-6143     0  ->   0
-
-dqmin530 min -1.00E-6143       0  ->  -1.00E-6143
-dqmin531 min -0.1E-6143        0  ->  -1E-6144    Subnormal
-dqmin532 min -0.10E-6143       0  ->  -1.0E-6144  Subnormal
-dqmin533 min -0.100E-6143      0  ->  -1.00E-6144 Subnormal
-dqmin534 min -0.01E-6143       0  ->  -1E-6145    Subnormal
-dqmin535 min -0.999E-6143      0  ->  -9.99E-6144 Subnormal
-dqmin536 min -0.099E-6143      0  ->  -9.9E-6145  Subnormal
-dqmin537 min -0.009E-6143      0  ->  -9E-6146    Subnormal
-dqmin538 min -0.001E-6143      0  ->  -1E-6146    Subnormal
-dqmin539 min -0.0009E-6143     0  ->  -9E-6147    Subnormal
-dqmin540 min -0.0001E-6143     0  ->  -1E-6147    Subnormal
-
-
--- Null tests
-dqmin900 min 10  # -> NaN Invalid_operation
-dqmin901 min  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMinMag.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMinMag.decTest
deleted file mode 100644
index 71b886f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMinMag.decTest
+++ /dev/null
@@ -1,293 +0,0 @@
-------------------------------------------------------------------------
--- dqMinMag.decTest -- decQuad minnummag                              --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- we assume that base comparison is tested in compare.decTest, so
--- these mainly cover special cases and rounding
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- sanity checks
-dqmng001 minmag  -2  -2  -> -2
-dqmng002 minmag  -2  -1  -> -1
-dqmng003 minmag  -2   0  ->  0
-dqmng004 minmag  -2   1  ->  1
-dqmng005 minmag  -2   2  -> -2
-dqmng006 minmag  -1  -2  -> -1
-dqmng007 minmag  -1  -1  -> -1
-dqmng008 minmag  -1   0  ->  0
-dqmng009 minmag  -1   1  -> -1
-dqmng010 minmag  -1   2  -> -1
-dqmng011 minmag   0  -2  ->  0
-dqmng012 minmag   0  -1  ->  0
-dqmng013 minmag   0   0  ->  0
-dqmng014 minmag   0   1  ->  0
-dqmng015 minmag   0   2  ->  0
-dqmng016 minmag   1  -2  ->  1
-dqmng017 minmag   1  -1  -> -1
-dqmng018 minmag   1   0  ->  0
-dqmng019 minmag   1   1  ->  1
-dqmng020 minmag   1   2  ->  1
-dqmng021 minmag   2  -2  -> -2
-dqmng022 minmag   2  -1  -> -1
-dqmng023 minmag   2   0  ->  0
-dqmng025 minmag   2   1  ->  1
-dqmng026 minmag   2   2  ->  2
-
--- extended zeros
-dqmng030 minmag   0     0   ->  0
-dqmng031 minmag   0    -0   -> -0
-dqmng032 minmag   0    -0.0 -> -0.0
-dqmng033 minmag   0     0.0 ->  0.0
-dqmng034 minmag  -0     0   -> -0
-dqmng035 minmag  -0    -0   -> -0
-dqmng036 minmag  -0    -0.0 -> -0
-dqmng037 minmag  -0     0.0 -> -0
-dqmng038 minmag   0.0   0   ->  0.0
-dqmng039 minmag   0.0  -0   -> -0
-dqmng040 minmag   0.0  -0.0 -> -0.0
-dqmng041 minmag   0.0   0.0 ->  0.0
-dqmng042 minmag  -0.0   0   -> -0.0
-dqmng043 minmag  -0.0  -0   -> -0
-dqmng044 minmag  -0.0  -0.0 -> -0.0
-dqmng045 minmag  -0.0   0.0 -> -0.0
-
-dqmng046 minmag   0E1  -0E1 -> -0E+1
-dqmng047 minmag  -0E1   0E2 -> -0E+1
-dqmng048 minmag   0E2   0E1 ->  0E+1
-dqmng049 minmag   0E1   0E2 ->  0E+1
-dqmng050 minmag  -0E3  -0E2 -> -0E+3
-dqmng051 minmag  -0E2  -0E3 -> -0E+3
-
--- Specials
-dqmng090 minmag  Inf  -Inf   -> -Infinity
-dqmng091 minmag  Inf  -1000  -> -1000
-dqmng092 minmag  Inf  -1     -> -1
-dqmng093 minmag  Inf  -0     -> -0
-dqmng094 minmag  Inf   0     ->  0
-dqmng095 minmag  Inf   1     ->  1
-dqmng096 minmag  Inf   1000  ->  1000
-dqmng097 minmag  Inf   Inf   ->  Infinity
-dqmng098 minmag -1000  Inf   -> -1000
-dqmng099 minmag -Inf   Inf   -> -Infinity
-dqmng100 minmag -1     Inf   -> -1
-dqmng101 minmag -0     Inf   -> -0
-dqmng102 minmag  0     Inf   ->  0
-dqmng103 minmag  1     Inf   ->  1
-dqmng104 minmag  1000  Inf   ->  1000
-dqmng105 minmag  Inf   Inf   ->  Infinity
-
-dqmng120 minmag -Inf  -Inf   -> -Infinity
-dqmng121 minmag -Inf  -1000  -> -1000
-dqmng122 minmag -Inf  -1     -> -1
-dqmng123 minmag -Inf  -0     -> -0
-dqmng124 minmag -Inf   0     ->  0
-dqmng125 minmag -Inf   1     ->  1
-dqmng126 minmag -Inf   1000  ->  1000
-dqmng127 minmag -Inf   Inf   -> -Infinity
-dqmng128 minmag -Inf  -Inf   -> -Infinity
-dqmng129 minmag -1000 -Inf   -> -1000
-dqmng130 minmag -1    -Inf   -> -1
-dqmng131 minmag -0    -Inf   -> -0
-dqmng132 minmag  0    -Inf   ->  0
-dqmng133 minmag  1    -Inf   ->  1
-dqmng134 minmag  1000 -Inf   ->  1000
-dqmng135 minmag  Inf  -Inf   -> -Infinity
-
--- 2004.08.02 754r chooses number over NaN in mixed cases
-dqmng141 minmag  NaN -Inf    ->  -Infinity
-dqmng142 minmag  NaN -1000   ->  -1000
-dqmng143 minmag  NaN -1      ->  -1
-dqmng144 minmag  NaN -0      ->  -0
-dqmng145 minmag  NaN  0      ->  0
-dqmng146 minmag  NaN  1      ->  1
-dqmng147 minmag  NaN  1000   ->  1000
-dqmng148 minmag  NaN  Inf    ->  Infinity
-dqmng149 minmag  NaN  NaN    ->  NaN
-dqmng150 minmag -Inf  NaN    -> -Infinity
-dqmng151 minmag -1000 NaN    -> -1000
-dqmng152 minmag -1   -NaN    -> -1
-dqmng153 minmag -0    NaN    -> -0
-dqmng154 minmag  0   -NaN    ->  0
-dqmng155 minmag  1    NaN    ->  1
-dqmng156 minmag  1000 NaN    ->  1000
-dqmng157 minmag  Inf  NaN    ->  Infinity
-
-dqmng161 minmag  sNaN -Inf   ->  NaN  Invalid_operation
-dqmng162 minmag  sNaN -1000  ->  NaN  Invalid_operation
-dqmng163 minmag  sNaN -1     ->  NaN  Invalid_operation
-dqmng164 minmag  sNaN -0     ->  NaN  Invalid_operation
-dqmng165 minmag -sNaN  0     -> -NaN  Invalid_operation
-dqmng166 minmag -sNaN  1     -> -NaN  Invalid_operation
-dqmng167 minmag  sNaN  1000  ->  NaN  Invalid_operation
-dqmng168 minmag  sNaN  NaN   ->  NaN  Invalid_operation
-dqmng169 minmag  sNaN sNaN   ->  NaN  Invalid_operation
-dqmng170 minmag  NaN  sNaN   ->  NaN  Invalid_operation
-dqmng171 minmag -Inf  sNaN   ->  NaN  Invalid_operation
-dqmng172 minmag -1000 sNaN   ->  NaN  Invalid_operation
-dqmng173 minmag -1    sNaN   ->  NaN  Invalid_operation
-dqmng174 minmag -0    sNaN   ->  NaN  Invalid_operation
-dqmng175 minmag  0    sNaN   ->  NaN  Invalid_operation
-dqmng176 minmag  1    sNaN   ->  NaN  Invalid_operation
-dqmng177 minmag  1000 sNaN   ->  NaN  Invalid_operation
-dqmng178 minmag  Inf  sNaN   ->  NaN  Invalid_operation
-dqmng179 minmag  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqmng181 minmag  NaN9   -Inf   -> -Infinity
-dqmng182 minmag -NaN8    9990  ->  9990
-dqmng183 minmag  NaN71   Inf   ->  Infinity
-
-dqmng184 minmag  NaN1    NaN54 ->  NaN1
-dqmng185 minmag  NaN22  -NaN53 ->  NaN22
-dqmng186 minmag -NaN3    NaN6  -> -NaN3
-dqmng187 minmag -NaN44   NaN7  -> -NaN44
-
-dqmng188 minmag -Inf     NaN41 -> -Infinity
-dqmng189 minmag -9999   -NaN33 -> -9999
-dqmng190 minmag  Inf     NaN2  ->  Infinity
-
-dqmng191 minmag  sNaN99 -Inf    ->  NaN99 Invalid_operation
-dqmng192 minmag  sNaN98 -11     ->  NaN98 Invalid_operation
-dqmng193 minmag -sNaN97  NaN8   -> -NaN97 Invalid_operation
-dqmng194 minmag  sNaN69 sNaN94  ->  NaN69 Invalid_operation
-dqmng195 minmag  NaN95  sNaN93  ->  NaN93 Invalid_operation
-dqmng196 minmag -Inf    sNaN92  ->  NaN92 Invalid_operation
-dqmng197 minmag  088    sNaN91  ->  NaN91 Invalid_operation
-dqmng198 minmag  Inf   -sNaN90  -> -NaN90 Invalid_operation
-dqmng199 minmag  NaN    sNaN86  ->  NaN86 Invalid_operation
-
--- old rounding checks
-dqmng221 minmag -12345678000 1  -> 1
-dqmng222 minmag 1 -12345678000  -> 1
-dqmng223 minmag -1234567800  1  -> 1
-dqmng224 minmag 1 -1234567800   -> 1
-dqmng225 minmag -1234567890  1  -> 1
-dqmng226 minmag 1 -1234567890   -> 1
-dqmng227 minmag -1234567891  1  -> 1
-dqmng228 minmag 1 -1234567891   -> 1
-dqmng229 minmag -12345678901 1  -> 1
-dqmng230 minmag 1 -12345678901  -> 1
-dqmng231 minmag -1234567896  1  -> 1
-dqmng232 minmag 1 -1234567896   -> 1
-dqmng233 minmag 1234567891  1   -> 1
-dqmng234 minmag 1 1234567891    -> 1
-dqmng235 minmag 12345678901 1   -> 1
-dqmng236 minmag 1 12345678901   -> 1
-dqmng237 minmag 1234567896  1   -> 1
-dqmng238 minmag 1 1234567896    -> 1
-
--- from examples
-dqmng280 minmag '3'   '2'  ->  '2'
-dqmng281 minmag '-10' '3'  ->  '3'
-dqmng282 minmag '1.0' '1'  ->  '1.0'
-dqmng283 minmag '1' '1.0'  ->  '1.0'
-dqmng284 minmag '7' 'NaN'  ->  '7'
-
--- expanded list from min/max 754r purple prose
--- [explicit tests for exponent ordering]
-dqmng401 minmag  Inf    1.1     ->  1.1
-dqmng402 minmag  1.1    1       ->  1
-dqmng403 minmag  1      1.0     ->  1.0
-dqmng404 minmag  1.0    0.1     ->  0.1
-dqmng405 minmag  0.1    0.10    ->  0.10
-dqmng406 minmag  0.10   0.100   ->  0.100
-dqmng407 minmag  0.10   0       ->  0
-dqmng408 minmag  0      0.0     ->  0.0
-dqmng409 minmag  0.0   -0       -> -0
-dqmng410 minmag  0.0   -0.0     -> -0.0
-dqmng411 minmag  0.00  -0.0     -> -0.0
-dqmng412 minmag  0.0   -0.00    -> -0.00
-dqmng413 minmag  0     -0.0     -> -0.0
-dqmng414 minmag  0     -0       -> -0
-dqmng415 minmag -0.0   -0       -> -0
-dqmng416 minmag -0     -0.100   -> -0
-dqmng417 minmag -0.100 -0.10    -> -0.10
-dqmng418 minmag -0.10  -0.1     -> -0.1
-dqmng419 minmag -0.1   -1.0     -> -0.1
-dqmng420 minmag -1.0   -1       -> -1
-dqmng421 minmag -1     -1.1     -> -1
-dqmng423 minmag -1.1   -Inf     -> -1.1
--- same with operands reversed
-dqmng431 minmag  1.1    Inf     ->  1.1
-dqmng432 minmag  1      1.1     ->  1
-dqmng433 minmag  1.0    1       ->  1.0
-dqmng434 minmag  0.1    1.0     ->  0.1
-dqmng435 minmag  0.10   0.1     ->  0.10
-dqmng436 minmag  0.100  0.10    ->  0.100
-dqmng437 minmag  0      0.10    ->  0
-dqmng438 minmag  0.0    0       ->  0.0
-dqmng439 minmag -0      0.0     -> -0
-dqmng440 minmag -0.0    0.0     -> -0.0
-dqmng441 minmag -0.0    0.00    -> -0.0
-dqmng442 minmag -0.00   0.0     -> -0.00
-dqmng443 minmag -0.0    0       -> -0.0
-dqmng444 minmag -0      0       -> -0
-dqmng445 minmag -0     -0.0     -> -0
-dqmng446 minmag -0.100 -0       -> -0
-dqmng447 minmag -0.10  -0.100   -> -0.10
-dqmng448 minmag -0.1   -0.10    -> -0.1
-dqmng449 minmag -1.0   -0.1     -> -0.1
-dqmng450 minmag -1     -1.0     -> -1
-dqmng451 minmag -1.1   -1       -> -1
-dqmng453 minmag -Inf   -1.1     -> -1.1
--- largies
-dqmng460 minmag  1000   1E+3    ->  1000
-dqmng461 minmag  1E+3   1000    ->  1000
-dqmng462 minmag  1000  -1E+3    -> -1E+3
-dqmng463 minmag  1E+3   -384    -> -384
-dqmng464 minmag -384    1E+3    -> -384
-dqmng465 minmag -1E+3   1000    -> -1E+3
-dqmng466 minmag -384   -1E+3    -> -384
-dqmng467 minmag -1E+3   -384    -> -384
-
--- subnormals
-dqmng510 minmag  1.00E-6143       0  ->   0
-dqmng511 minmag  0.1E-6143        0  ->   0
-dqmng512 minmag  0.10E-6143       0  ->   0
-dqmng513 minmag  0.100E-6143      0  ->   0
-dqmng514 minmag  0.01E-6143       0  ->   0
-dqmng515 minmag  0.999E-6143      0  ->   0
-dqmng516 minmag  0.099E-6143      0  ->   0
-dqmng517 minmag  0.009E-6143      0  ->   0
-dqmng518 minmag  0.001E-6143      0  ->   0
-dqmng519 minmag  0.0009E-6143     0  ->   0
-dqmng520 minmag  0.0001E-6143     0  ->   0
-
-dqmng530 minmag -1.00E-6143       0  ->   0
-dqmng531 minmag -0.1E-6143        0  ->   0
-dqmng532 minmag -0.10E-6143       0  ->   0
-dqmng533 minmag -0.100E-6143      0  ->   0
-dqmng534 minmag -0.01E-6143       0  ->   0
-dqmng535 minmag -0.999E-6143      0  ->   0
-dqmng536 minmag -0.099E-6143      0  ->   0
-dqmng537 minmag -0.009E-6143      0  ->   0
-dqmng538 minmag -0.001E-6143      0  ->   0
-dqmng539 minmag -0.0009E-6143     0  ->   0
-dqmng540 minmag -0.0001E-6143     0  ->   0
-
-
--- Null tests
-dqmng900 minmag 10  # -> NaN Invalid_operation
-dqmng901 minmag  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMinus.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMinus.decTest
deleted file mode 100644
index 7a00779..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMinus.decTest
+++ /dev/null
@@ -1,88 +0,0 @@
-------------------------------------------------------------------------
--- dqMinus.decTest -- decQuad 0-x                                     --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- Sanity check
-dqmns001 minus       +7.50  -> -7.50
-
--- Infinities
-dqmns011 minus  Infinity    -> -Infinity
-dqmns012 minus  -Infinity   -> Infinity
-
--- NaNs, 0 payload
-dqmns021 minus         NaN  -> NaN
-dqmns022 minus        -NaN  -> -NaN
-dqmns023 minus        sNaN  -> NaN  Invalid_operation
-dqmns024 minus       -sNaN  -> -NaN Invalid_operation
-
--- NaNs, non-0 payload
-dqmns031 minus       NaN13  -> NaN13
-dqmns032 minus      -NaN13  -> -NaN13
-dqmns033 minus      sNaN13  -> NaN13   Invalid_operation
-dqmns034 minus     -sNaN13  -> -NaN13  Invalid_operation
-dqmns035 minus       NaN70  -> NaN70
-dqmns036 minus      -NaN70  -> -NaN70
-dqmns037 minus      sNaN101 -> NaN101  Invalid_operation
-dqmns038 minus     -sNaN101 -> -NaN101 Invalid_operation
-
--- finites
-dqmns101 minus          7   -> -7
-dqmns102 minus         -7   -> 7
-dqmns103 minus         75   -> -75
-dqmns104 minus        -75   -> 75
-dqmns105 minus       7.50   -> -7.50
-dqmns106 minus      -7.50   -> 7.50
-dqmns107 minus       7.500  -> -7.500
-dqmns108 minus      -7.500  -> 7.500
-
--- zeros
-dqmns111 minus          0   -> 0
-dqmns112 minus         -0   -> 0
-dqmns113 minus       0E+4   -> 0E+4
-dqmns114 minus      -0E+4   -> 0E+4
-dqmns115 minus     0.0000   -> 0.0000
-dqmns116 minus    -0.0000   -> 0.0000
-dqmns117 minus      0E-141  -> 0E-141
-dqmns118 minus     -0E-141  -> 0E-141
-
--- full coefficients, alternating bits
-dqmns121 minus   2682682682682682682682682682682682    -> -2682682682682682682682682682682682
-dqmns122 minus  -2682682682682682682682682682682682    ->  2682682682682682682682682682682682
-dqmns123 minus   1341341341341341341341341341341341    -> -1341341341341341341341341341341341
-dqmns124 minus  -1341341341341341341341341341341341    ->  1341341341341341341341341341341341
-
--- Nmax, Nmin, Ntiny
-dqmns131 minus  9.999999999999999999999999999999999E+6144   -> -9.999999999999999999999999999999999E+6144
-dqmns132 minus  1E-6143                                     -> -1E-6143
-dqmns133 minus  1.000000000000000000000000000000000E-6143   -> -1.000000000000000000000000000000000E-6143
-dqmns134 minus  1E-6176                                     -> -1E-6176 Subnormal
-
-dqmns135 minus  -1E-6176                                    ->  1E-6176 Subnormal
-dqmns136 minus  -1.000000000000000000000000000000000E-6143  ->  1.000000000000000000000000000000000E-6143
-dqmns137 minus  -1E-6143                                    ->  1E-6143
-dqmns138 minus  -9.999999999999999999999999999999999E+6144  ->  9.999999999999999999999999999999999E+6144
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMultiply.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMultiply.decTest
deleted file mode 100644
index 676c1f5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqMultiply.decTest
+++ /dev/null
@@ -1,589 +0,0 @@
-------------------------------------------------------------------------
--- dqMultiply.decTest -- decQuad multiplication                       --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This set of tests are for decQuads only; all arguments are
--- representable in a decQuad
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- sanity checks
-dqmul000 multiply 2      2 -> 4
-dqmul001 multiply 2      3 -> 6
-dqmul002 multiply 5      1 -> 5
-dqmul003 multiply 5      2 -> 10
-dqmul004 multiply 1.20   2 -> 2.40
-dqmul005 multiply 1.20   0 -> 0.00
-dqmul006 multiply 1.20  -2 -> -2.40
-dqmul007 multiply -1.20  2 -> -2.40
-dqmul008 multiply -1.20  0 -> -0.00
-dqmul009 multiply -1.20 -2 -> 2.40
-dqmul010 multiply 5.09 7.1 -> 36.139
-dqmul011 multiply 2.5    4 -> 10.0
-dqmul012 multiply 2.50   4 -> 10.00
-dqmul013 multiply 1.23456789 1.0000000000000000000000000000 -> 1.234567890000000000000000000000000 Rounded
-dqmul015 multiply 2.50   4 -> 10.00
-dqmul016 multiply  9.99999999999999999  9.99999999999999999 ->  99.99999999999999980000000000000000 Inexact Rounded
-dqmul017 multiply  9.99999999999999999 -9.99999999999999999 -> -99.99999999999999980000000000000000 Inexact Rounded
-dqmul018 multiply -9.99999999999999999  9.99999999999999999 -> -99.99999999999999980000000000000000 Inexact Rounded
-dqmul019 multiply -9.99999999999999999 -9.99999999999999999 ->  99.99999999999999980000000000000000 Inexact Rounded
-
--- zeros, etc.
-dqmul021 multiply  0      0     ->  0
-dqmul022 multiply  0     -0     -> -0
-dqmul023 multiply -0      0     -> -0
-dqmul024 multiply -0     -0     ->  0
-dqmul025 multiply -0.0   -0.0   ->  0.00
-dqmul026 multiply -0.0   -0.0   ->  0.00
-dqmul027 multiply -0.0   -0.0   ->  0.00
-dqmul028 multiply -0.0   -0.0   ->  0.00
-dqmul030 multiply  5.00   1E-3  ->  0.00500
-dqmul031 multiply  00.00  0.000 ->  0.00000
-dqmul032 multiply  00.00  0E-3  ->  0.00000     -- rhs is 0
-dqmul033 multiply  0E-3   00.00 ->  0.00000     -- lhs is 0
-dqmul034 multiply -5.00   1E-3  -> -0.00500
-dqmul035 multiply -00.00  0.000 -> -0.00000
-dqmul036 multiply -00.00  0E-3  -> -0.00000     -- rhs is 0
-dqmul037 multiply -0E-3   00.00 -> -0.00000     -- lhs is 0
-dqmul038 multiply  5.00  -1E-3  -> -0.00500
-dqmul039 multiply  00.00 -0.000 -> -0.00000
-dqmul040 multiply  00.00 -0E-3  -> -0.00000     -- rhs is 0
-dqmul041 multiply  0E-3  -00.00 -> -0.00000     -- lhs is 0
-dqmul042 multiply -5.00  -1E-3  ->  0.00500
-dqmul043 multiply -00.00 -0.000 ->  0.00000
-dqmul044 multiply -00.00 -0E-3  ->  0.00000     -- rhs is 0
-dqmul045 multiply -0E-3  -00.00 ->  0.00000     -- lhs is 0
-
--- examples from decarith
-dqmul050 multiply 1.20 3        -> 3.60
-dqmul051 multiply 7    3        -> 21
-dqmul052 multiply 0.9  0.8      -> 0.72
-dqmul053 multiply 0.9  -0       -> -0.0
-dqmul054 multiply 654321 654321 -> 428135971041
-
-dqmul060 multiply 123.45 1e7  ->  1.2345E+9
-dqmul061 multiply 123.45 1e8  ->  1.2345E+10
-dqmul062 multiply 123.45 1e+9 ->  1.2345E+11
-dqmul063 multiply 123.45 1e10 ->  1.2345E+12
-dqmul064 multiply 123.45 1e11 ->  1.2345E+13
-dqmul065 multiply 123.45 1e12 ->  1.2345E+14
-dqmul066 multiply 123.45 1e13 ->  1.2345E+15
-
-
--- test some intermediate lengths
---                    1234567890123456
-dqmul080 multiply 0.1 1230123456456789     -> 123012345645678.9
-dqmul084 multiply 0.1 1230123456456789     -> 123012345645678.9
-dqmul090 multiply 1230123456456789     0.1 -> 123012345645678.9
-dqmul094 multiply 1230123456456789     0.1 -> 123012345645678.9
-
--- test some more edge cases and carries
-dqmul101 multiply 9 9   -> 81
-dqmul102 multiply 9 90   -> 810
-dqmul103 multiply 9 900   -> 8100
-dqmul104 multiply 9 9000   -> 81000
-dqmul105 multiply 9 90000   -> 810000
-dqmul106 multiply 9 900000   -> 8100000
-dqmul107 multiply 9 9000000   -> 81000000
-dqmul108 multiply 9 90000000   -> 810000000
-dqmul109 multiply 9 900000000   -> 8100000000
-dqmul110 multiply 9 9000000000   -> 81000000000
-dqmul111 multiply 9 90000000000   -> 810000000000
-dqmul112 multiply 9 900000000000   -> 8100000000000
-dqmul113 multiply 9 9000000000000   -> 81000000000000
-dqmul114 multiply 9 90000000000000   -> 810000000000000
-dqmul115 multiply 9 900000000000000   -> 8100000000000000
---dqmul116 multiply 9 9000000000000000   -> 81000000000000000
---dqmul117 multiply 9 90000000000000000   -> 810000000000000000
---dqmul118 multiply 9 900000000000000000   -> 8100000000000000000
---dqmul119 multiply 9 9000000000000000000   -> 81000000000000000000
---dqmul120 multiply 9 90000000000000000000   -> 810000000000000000000
---dqmul121 multiply 9 900000000000000000000   -> 8100000000000000000000
---dqmul122 multiply 9 9000000000000000000000   -> 81000000000000000000000
---dqmul123 multiply 9 90000000000000000000000   -> 810000000000000000000000
--- test some more edge cases without carries
-dqmul131 multiply 3 3   -> 9
-dqmul132 multiply 3 30   -> 90
-dqmul133 multiply 3 300   -> 900
-dqmul134 multiply 3 3000   -> 9000
-dqmul135 multiply 3 30000   -> 90000
-dqmul136 multiply 3 300000   -> 900000
-dqmul137 multiply 3 3000000   -> 9000000
-dqmul138 multiply 3 30000000   -> 90000000
-dqmul139 multiply 3 300000000   -> 900000000
-dqmul140 multiply 3 3000000000   -> 9000000000
-dqmul141 multiply 3 30000000000   -> 90000000000
-dqmul142 multiply 3 300000000000   -> 900000000000
-dqmul143 multiply 3 3000000000000   -> 9000000000000
-dqmul144 multiply 3 30000000000000   -> 90000000000000
-dqmul145 multiply 3 300000000000000   -> 900000000000000
-dqmul146 multiply 3 3000000000000000   -> 9000000000000000
-dqmul147 multiply 3 30000000000000000   -> 90000000000000000
-dqmul148 multiply 3 300000000000000000   -> 900000000000000000
-dqmul149 multiply 3 3000000000000000000   -> 9000000000000000000
-dqmul150 multiply 3 30000000000000000000   -> 90000000000000000000
-dqmul151 multiply 3 300000000000000000000   -> 900000000000000000000
-dqmul152 multiply 3 3000000000000000000000   -> 9000000000000000000000
-dqmul153 multiply 3 30000000000000000000000   -> 90000000000000000000000
-
-dqmul263 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165119928296 Inexact Rounded
-
--- test some edge cases with exact rounding
-dqmul301 multiply 900000000000000000 9   -> 8100000000000000000
-dqmul302 multiply 900000000000000000 90   -> 81000000000000000000
-dqmul303 multiply 900000000000000000 900   -> 810000000000000000000
-dqmul304 multiply 900000000000000000 9000   -> 8100000000000000000000
-dqmul305 multiply 900000000000000000 90000   -> 81000000000000000000000
-dqmul306 multiply 900000000000000000 900000   -> 810000000000000000000000
-dqmul307 multiply 900000000000000000 9000000   -> 8100000000000000000000000
-dqmul308 multiply 900000000000000000 90000000   -> 81000000000000000000000000
-dqmul309 multiply 900000000000000000 900000000   -> 810000000000000000000000000
-dqmul310 multiply 900000000000000000 9000000000   -> 8100000000000000000000000000
-dqmul311 multiply 900000000000000000 90000000000   -> 81000000000000000000000000000
-dqmul312 multiply 900000000000000000 900000000000   -> 810000000000000000000000000000
-dqmul313 multiply 900000000000000000 9000000000000   -> 8100000000000000000000000000000
-dqmul314 multiply 900000000000000000 90000000000000   -> 81000000000000000000000000000000
-dqmul315 multiply 900000000000000000 900000000000000   -> 810000000000000000000000000000000
-dqmul316 multiply 900000000000000000 9000000000000000   -> 8100000000000000000000000000000000
-dqmul317 multiply 9000000000000000000 9000000000000000   -> 8.100000000000000000000000000000000E+34  Rounded
-dqmul318 multiply 90000000000000000000 9000000000000000   -> 8.100000000000000000000000000000000E+35  Rounded
-dqmul319 multiply 900000000000000000000 9000000000000000   -> 8.100000000000000000000000000000000E+36  Rounded
-dqmul320 multiply 9000000000000000000000 9000000000000000   -> 8.100000000000000000000000000000000E+37  Rounded
-dqmul321 multiply 90000000000000000000000 9000000000000000   -> 8.100000000000000000000000000000000E+38  Rounded
-dqmul322 multiply 900000000000000000000000 9000000000000000   -> 8.100000000000000000000000000000000E+39  Rounded
-dqmul323 multiply 9000000000000000000000000 9000000000000000   -> 8.100000000000000000000000000000000E+40  Rounded
-
--- tryzeros cases
-dqmul504  multiply  0E-4260 1000E-4260  -> 0E-6176 Clamped
-dqmul505  multiply  100E+4260 0E+4260   -> 0E+6111 Clamped
-
--- mixed with zeros
-dqmul541 multiply  0    -1     -> -0
-dqmul542 multiply -0    -1     ->  0
-dqmul543 multiply  0     1     ->  0
-dqmul544 multiply -0     1     -> -0
-dqmul545 multiply -1     0     -> -0
-dqmul546 multiply -1    -0     ->  0
-dqmul547 multiply  1     0     ->  0
-dqmul548 multiply  1    -0     -> -0
-
-dqmul551 multiply  0.0  -1     -> -0.0
-dqmul552 multiply -0.0  -1     ->  0.0
-dqmul553 multiply  0.0   1     ->  0.0
-dqmul554 multiply -0.0   1     -> -0.0
-dqmul555 multiply -1.0   0     -> -0.0
-dqmul556 multiply -1.0  -0     ->  0.0
-dqmul557 multiply  1.0   0     ->  0.0
-dqmul558 multiply  1.0  -0     -> -0.0
-
-dqmul561 multiply  0    -1.0   -> -0.0
-dqmul562 multiply -0    -1.0   ->  0.0
-dqmul563 multiply  0     1.0   ->  0.0
-dqmul564 multiply -0     1.0   -> -0.0
-dqmul565 multiply -1     0.0   -> -0.0
-dqmul566 multiply -1    -0.0   ->  0.0
-dqmul567 multiply  1     0.0   ->  0.0
-dqmul568 multiply  1    -0.0   -> -0.0
-
-dqmul571 multiply  0.0  -1.0   -> -0.00
-dqmul572 multiply -0.0  -1.0   ->  0.00
-dqmul573 multiply  0.0   1.0   ->  0.00
-dqmul574 multiply -0.0   1.0   -> -0.00
-dqmul575 multiply -1.0   0.0   -> -0.00
-dqmul576 multiply -1.0  -0.0   ->  0.00
-dqmul577 multiply  1.0   0.0   ->  0.00
-dqmul578 multiply  1.0  -0.0   -> -0.00
-
-
--- Specials
-dqmul580 multiply  Inf  -Inf   -> -Infinity
-dqmul581 multiply  Inf  -1000  -> -Infinity
-dqmul582 multiply  Inf  -1     -> -Infinity
-dqmul583 multiply  Inf  -0     ->  NaN  Invalid_operation
-dqmul584 multiply  Inf   0     ->  NaN  Invalid_operation
-dqmul585 multiply  Inf   1     ->  Infinity
-dqmul586 multiply  Inf   1000  ->  Infinity
-dqmul587 multiply  Inf   Inf   ->  Infinity
-dqmul588 multiply -1000  Inf   -> -Infinity
-dqmul589 multiply -Inf   Inf   -> -Infinity
-dqmul590 multiply -1     Inf   -> -Infinity
-dqmul591 multiply -0     Inf   ->  NaN  Invalid_operation
-dqmul592 multiply  0     Inf   ->  NaN  Invalid_operation
-dqmul593 multiply  1     Inf   ->  Infinity
-dqmul594 multiply  1000  Inf   ->  Infinity
-dqmul595 multiply  Inf   Inf   ->  Infinity
-
-dqmul600 multiply -Inf  -Inf   ->  Infinity
-dqmul601 multiply -Inf  -1000  ->  Infinity
-dqmul602 multiply -Inf  -1     ->  Infinity
-dqmul603 multiply -Inf  -0     ->  NaN  Invalid_operation
-dqmul604 multiply -Inf   0     ->  NaN  Invalid_operation
-dqmul605 multiply -Inf   1     -> -Infinity
-dqmul606 multiply -Inf   1000  -> -Infinity
-dqmul607 multiply -Inf   Inf   -> -Infinity
-dqmul608 multiply -1000  Inf   -> -Infinity
-dqmul609 multiply -Inf  -Inf   ->  Infinity
-dqmul610 multiply -1    -Inf   ->  Infinity
-dqmul611 multiply -0    -Inf   ->  NaN  Invalid_operation
-dqmul612 multiply  0    -Inf   ->  NaN  Invalid_operation
-dqmul613 multiply  1    -Inf   -> -Infinity
-dqmul614 multiply  1000 -Inf   -> -Infinity
-dqmul615 multiply  Inf  -Inf   -> -Infinity
-
-dqmul621 multiply  NaN -Inf    ->  NaN
-dqmul622 multiply  NaN -1000   ->  NaN
-dqmul623 multiply  NaN -1      ->  NaN
-dqmul624 multiply  NaN -0      ->  NaN
-dqmul625 multiply  NaN  0      ->  NaN
-dqmul626 multiply  NaN  1      ->  NaN
-dqmul627 multiply  NaN  1000   ->  NaN
-dqmul628 multiply  NaN  Inf    ->  NaN
-dqmul629 multiply  NaN  NaN    ->  NaN
-dqmul630 multiply -Inf  NaN    ->  NaN
-dqmul631 multiply -1000 NaN    ->  NaN
-dqmul632 multiply -1    NaN    ->  NaN
-dqmul633 multiply -0    NaN    ->  NaN
-dqmul634 multiply  0    NaN    ->  NaN
-dqmul635 multiply  1    NaN    ->  NaN
-dqmul636 multiply  1000 NaN    ->  NaN
-dqmul637 multiply  Inf  NaN    ->  NaN
-
-dqmul641 multiply  sNaN -Inf   ->  NaN  Invalid_operation
-dqmul642 multiply  sNaN -1000  ->  NaN  Invalid_operation
-dqmul643 multiply  sNaN -1     ->  NaN  Invalid_operation
-dqmul644 multiply  sNaN -0     ->  NaN  Invalid_operation
-dqmul645 multiply  sNaN  0     ->  NaN  Invalid_operation
-dqmul646 multiply  sNaN  1     ->  NaN  Invalid_operation
-dqmul647 multiply  sNaN  1000  ->  NaN  Invalid_operation
-dqmul648 multiply  sNaN  NaN   ->  NaN  Invalid_operation
-dqmul649 multiply  sNaN sNaN   ->  NaN  Invalid_operation
-dqmul650 multiply  NaN  sNaN   ->  NaN  Invalid_operation
-dqmul651 multiply -Inf  sNaN   ->  NaN  Invalid_operation
-dqmul652 multiply -1000 sNaN   ->  NaN  Invalid_operation
-dqmul653 multiply -1    sNaN   ->  NaN  Invalid_operation
-dqmul654 multiply -0    sNaN   ->  NaN  Invalid_operation
-dqmul655 multiply  0    sNaN   ->  NaN  Invalid_operation
-dqmul656 multiply  1    sNaN   ->  NaN  Invalid_operation
-dqmul657 multiply  1000 sNaN   ->  NaN  Invalid_operation
-dqmul658 multiply  Inf  sNaN   ->  NaN  Invalid_operation
-dqmul659 multiply  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqmul661 multiply  NaN9 -Inf   ->  NaN9
-dqmul662 multiply  NaN8  999   ->  NaN8
-dqmul663 multiply  NaN71 Inf   ->  NaN71
-dqmul664 multiply  NaN6  NaN5  ->  NaN6
-dqmul665 multiply -Inf   NaN4  ->  NaN4
-dqmul666 multiply -999   NaN33 ->  NaN33
-dqmul667 multiply  Inf   NaN2  ->  NaN2
-
-dqmul671 multiply  sNaN99 -Inf    ->  NaN99 Invalid_operation
-dqmul672 multiply  sNaN98 -11     ->  NaN98 Invalid_operation
-dqmul673 multiply  sNaN97  NaN    ->  NaN97 Invalid_operation
-dqmul674 multiply  sNaN16 sNaN94  ->  NaN16 Invalid_operation
-dqmul675 multiply  NaN95  sNaN93  ->  NaN93 Invalid_operation
-dqmul676 multiply -Inf    sNaN92  ->  NaN92 Invalid_operation
-dqmul677 multiply  088    sNaN91  ->  NaN91 Invalid_operation
-dqmul678 multiply  Inf    sNaN90  ->  NaN90 Invalid_operation
-dqmul679 multiply  NaN    sNaN89  ->  NaN89 Invalid_operation
-
-dqmul681 multiply -NaN9 -Inf   -> -NaN9
-dqmul682 multiply -NaN8  999   -> -NaN8
-dqmul683 multiply -NaN71 Inf   -> -NaN71
-dqmul684 multiply -NaN6 -NaN5  -> -NaN6
-dqmul685 multiply -Inf  -NaN4  -> -NaN4
-dqmul686 multiply -999  -NaN33 -> -NaN33
-dqmul687 multiply  Inf  -NaN2  -> -NaN2
-
-dqmul691 multiply -sNaN99 -Inf    -> -NaN99 Invalid_operation
-dqmul692 multiply -sNaN98 -11     -> -NaN98 Invalid_operation
-dqmul693 multiply -sNaN97  NaN    -> -NaN97 Invalid_operation
-dqmul694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation
-dqmul695 multiply -NaN95  -sNaN93 -> -NaN93 Invalid_operation
-dqmul696 multiply -Inf    -sNaN92 -> -NaN92 Invalid_operation
-dqmul697 multiply  088    -sNaN91 -> -NaN91 Invalid_operation
-dqmul698 multiply  Inf    -sNaN90 -> -NaN90 Invalid_operation
-dqmul699 multiply -NaN    -sNaN89 -> -NaN89 Invalid_operation
-
-dqmul701 multiply -NaN  -Inf   -> -NaN
-dqmul702 multiply -NaN   999   -> -NaN
-dqmul703 multiply -NaN   Inf   -> -NaN
-dqmul704 multiply -NaN  -NaN   -> -NaN
-dqmul705 multiply -Inf  -NaN0  -> -NaN
-dqmul706 multiply -999  -NaN   -> -NaN
-dqmul707 multiply  Inf  -NaN   -> -NaN
-
-dqmul711 multiply -sNaN   -Inf    -> -NaN Invalid_operation
-dqmul712 multiply -sNaN   -11     -> -NaN Invalid_operation
-dqmul713 multiply -sNaN00  NaN    -> -NaN Invalid_operation
-dqmul714 multiply -sNaN   -sNaN   -> -NaN Invalid_operation
-dqmul715 multiply -NaN    -sNaN   -> -NaN Invalid_operation
-dqmul716 multiply -Inf    -sNaN   -> -NaN Invalid_operation
-dqmul717 multiply  088    -sNaN   -> -NaN Invalid_operation
-dqmul718 multiply  Inf    -sNaN   -> -NaN Invalid_operation
-dqmul719 multiply -NaN    -sNaN   -> -NaN Invalid_operation
-
--- overflow and underflow tests .. note subnormal results
--- signs
-dqmul751 multiply  1e+4277  1e+3311 ->  Infinity Overflow Inexact Rounded
-dqmul752 multiply  1e+4277 -1e+3311 -> -Infinity Overflow Inexact Rounded
-dqmul753 multiply -1e+4277  1e+3311 -> -Infinity Overflow Inexact Rounded
-dqmul754 multiply -1e+4277 -1e+3311 ->  Infinity Overflow Inexact Rounded
-dqmul755 multiply  1e-4277  1e-3311 ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqmul756 multiply  1e-4277 -1e-3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqmul757 multiply -1e-4277  1e-3311 -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqmul758 multiply -1e-4277 -1e-3311 ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped
-
--- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
-dqmul760 multiply 1e-6069 1e-101 -> 1E-6170 Subnormal
-dqmul761 multiply 1e-6069 1e-102 -> 1E-6171 Subnormal
-dqmul762 multiply 1e-6069 1e-103 -> 1E-6172 Subnormal
-dqmul763 multiply 1e-6069 1e-104 -> 1E-6173 Subnormal
-dqmul764 multiply 1e-6069 1e-105 -> 1E-6174 Subnormal
-dqmul765 multiply 1e-6069 1e-106 -> 1E-6175 Subnormal
-dqmul766 multiply 1e-6069 1e-107 -> 1E-6176 Subnormal
-dqmul767 multiply 1e-6069 1e-108 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqmul768 multiply 1e-6069 1e-109 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqmul769 multiply 1e-6069 1e-110 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
--- [no equivalent of 'subnormal' for overflow]
-dqmul770 multiply 1e+40 1e+6101 -> 1.000000000000000000000000000000E+6141 Clamped
-dqmul771 multiply 1e+40 1e+6102 -> 1.0000000000000000000000000000000E+6142  Clamped
-dqmul772 multiply 1e+40 1e+6103 -> 1.00000000000000000000000000000000E+6143  Clamped
-dqmul773 multiply 1e+40 1e+6104 -> 1.000000000000000000000000000000000E+6144  Clamped
-dqmul774 multiply 1e+40 1e+6105 -> Infinity Overflow Inexact Rounded
-dqmul775 multiply 1e+40 1e+6106 -> Infinity Overflow Inexact Rounded
-dqmul776 multiply 1e+40 1e+6107 -> Infinity Overflow Inexact Rounded
-dqmul777 multiply 1e+40 1e+6108 -> Infinity Overflow Inexact Rounded
-dqmul778 multiply 1e+40 1e+6109 -> Infinity Overflow Inexact Rounded
-dqmul779 multiply 1e+40 1e+6110 -> Infinity Overflow Inexact Rounded
-
-dqmul801 multiply  1.0000E-6172  1     -> 1.0000E-6172 Subnormal
-dqmul802 multiply  1.000E-6172   1e-1  -> 1.000E-6173  Subnormal
-dqmul803 multiply  1.00E-6172    1e-2  -> 1.00E-6174   Subnormal
-dqmul804 multiply  1.0E-6172     1e-3  -> 1.0E-6175    Subnormal
-dqmul805 multiply  1.0E-6172     1e-4  -> 1E-6176     Subnormal Rounded
-dqmul806 multiply  1.3E-6172     1e-4  -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqmul807 multiply  1.5E-6172     1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqmul808 multiply  1.7E-6172     1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqmul809 multiply  2.3E-6172     1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqmul810 multiply  2.5E-6172     1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqmul811 multiply  2.7E-6172     1e-4  -> 3E-6176     Underflow Subnormal Inexact Rounded
-dqmul812 multiply  1.49E-6172    1e-4  -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqmul813 multiply  1.50E-6172    1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqmul814 multiply  1.51E-6172    1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqmul815 multiply  2.49E-6172    1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqmul816 multiply  2.50E-6172    1e-4  -> 2E-6176     Underflow Subnormal Inexact Rounded
-dqmul817 multiply  2.51E-6172    1e-4  -> 3E-6176     Underflow Subnormal Inexact Rounded
-
-dqmul818 multiply  1E-6172       1e-4  -> 1E-6176     Subnormal
-dqmul819 multiply  3E-6172       1e-5  -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
-dqmul820 multiply  5E-6172       1e-5  -> 0E-6176     Underflow Subnormal Inexact Rounded Clamped
-dqmul821 multiply  7E-6172       1e-5  -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqmul822 multiply  9E-6172       1e-5  -> 1E-6176     Underflow Subnormal Inexact Rounded
-dqmul823 multiply  9.9E-6172     1e-5  -> 1E-6176     Underflow Subnormal Inexact Rounded
-
-dqmul824 multiply  1E-6172      -1e-4  -> -1E-6176    Subnormal
-dqmul825 multiply  3E-6172      -1e-5  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped
-dqmul826 multiply -5E-6172       1e-5  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped
-dqmul827 multiply  7E-6172      -1e-5  -> -1E-6176    Underflow Subnormal Inexact Rounded
-dqmul828 multiply -9E-6172       1e-5  -> -1E-6176    Underflow Subnormal Inexact Rounded
-dqmul829 multiply  9.9E-6172    -1e-5  -> -1E-6176    Underflow Subnormal Inexact Rounded
-dqmul830 multiply  3.0E-6172    -1e-5  -> -0E-6176    Underflow Subnormal Inexact Rounded Clamped
-
-dqmul831 multiply  1.0E-5977     1e-200 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqmul832 multiply  1.0E-5977     1e-199 -> 1E-6176    Subnormal Rounded
-dqmul833 multiply  1.0E-5977     1e-198 -> 1.0E-6175    Subnormal
-dqmul834 multiply  2.0E-5977     2e-198 -> 4.0E-6175    Subnormal
-dqmul835 multiply  4.0E-5977     4e-198 -> 1.60E-6174   Subnormal
-dqmul836 multiply 10.0E-5977    10e-198 -> 1.000E-6173  Subnormal
-dqmul837 multiply 30.0E-5977    30e-198 -> 9.000E-6173  Subnormal
-dqmul838 multiply 40.0E-5982    40e-166 -> 1.6000E-6145 Subnormal
-dqmul839 multiply 40.0E-5982    40e-165 -> 1.6000E-6144 Subnormal
-dqmul840 multiply 40.0E-5982    40e-164 -> 1.6000E-6143
-
--- Long operand overflow may be a different path
-dqmul870 multiply 100  9.999E+6143     ->  Infinity Inexact Overflow Rounded
-dqmul871 multiply 100 -9.999E+6143     -> -Infinity Inexact Overflow Rounded
-dqmul872 multiply      9.999E+6143 100 ->  Infinity Inexact Overflow Rounded
-dqmul873 multiply     -9.999E+6143 100 -> -Infinity Inexact Overflow Rounded
-
--- check for double-rounded subnormals
-dqmul881 multiply  1.2347E-6133 1.2347E-40  ->  1.524E-6173 Inexact Rounded Subnormal Underflow
-dqmul882 multiply  1.234E-6133 1.234E-40    ->  1.523E-6173 Inexact Rounded Subnormal Underflow
-dqmul883 multiply  1.23E-6133  1.23E-40     ->  1.513E-6173 Inexact Rounded Subnormal Underflow
-dqmul884 multiply  1.2E-6133   1.2E-40      ->  1.44E-6173  Subnormal
-dqmul885 multiply  1.2E-6133   1.2E-41      ->  1.44E-6174  Subnormal
-dqmul886 multiply  1.2E-6133   1.2E-42      ->  1.4E-6175   Subnormal Inexact Rounded Underflow
-dqmul887 multiply  1.2E-6133   1.3E-42      ->  1.6E-6175   Subnormal Inexact Rounded Underflow
-dqmul888 multiply  1.3E-6133   1.3E-42      ->  1.7E-6175   Subnormal Inexact Rounded Underflow
-dqmul889 multiply  1.3E-6133   1.3E-43      ->    2E-6176   Subnormal Inexact Rounded Underflow
-dqmul890 multiply  1.3E-6134   1.3E-43      ->    0E-6176   Clamped Subnormal Inexact Rounded Underflow
-
-dqmul891 multiply  1.2345E-39    1.234E-6133 ->  1.5234E-6172 Inexact Rounded Subnormal Underflow
-dqmul892 multiply  1.23456E-39   1.234E-6133 ->  1.5234E-6172 Inexact Rounded Subnormal Underflow
-dqmul893 multiply  1.2345E-40   1.234E-6133 ->  1.523E-6173  Inexact Rounded Subnormal Underflow
-dqmul894 multiply  1.23456E-40  1.234E-6133 ->  1.523E-6173  Inexact Rounded Subnormal Underflow
-dqmul895 multiply  1.2345E-41   1.234E-6133 ->  1.52E-6174   Inexact Rounded Subnormal Underflow
-dqmul896 multiply  1.23456E-41  1.234E-6133 ->  1.52E-6174   Inexact Rounded Subnormal Underflow
-
--- Now explore the case where we get a normal result with Underflow
--- prove operands are exact
-dqmul906 multiply  9.999999999999999999999999999999999E-6143  1                       -> 9.999999999999999999999999999999999E-6143
-dqmul907 multiply                       1  0.09999999999999999999999999999999999     -> 0.09999999999999999999999999999999999
--- the next rounds to Nmin
-dqmul908 multiply  9.999999999999999999999999999999999E-6143  0.09999999999999999999999999999999999     -> 1.000000000000000000000000000000000E-6143 Underflow Inexact Subnormal Rounded
-
--- hugest
-dqmul909 multiply 9999999999999999999999999999999999 9999999999999999999999999999999999 -> 9.999999999999999999999999999999998E+67 Inexact Rounded
--- VG case
-dqmul910 multiply 8.81125000000001349436E-1548 8.000000000000000000E-1550 -> 7.049000000000010795488000000000000E-3097 Rounded
-
--- Examples from SQL proposal (Krishna Kulkarni)
-precision:   34
-rounding:    half_up
-maxExponent: 6144
-minExponent: -6143
-dqmul911  multiply 130E-2  120E-2 -> 1.5600
-dqmul912  multiply 130E-2  12E-1  -> 1.560
-dqmul913  multiply 130E-2  1E0    -> 1.30
-dqmul914  multiply 1E2     1E4    -> 1E+6
-
--- power-of-ten edge cases
-dqmul1001 multiply  1      10               -> 10
-dqmul1002 multiply  1      100              -> 100
-dqmul1003 multiply  1      1000             -> 1000
-dqmul1004 multiply  1      10000            -> 10000
-dqmul1005 multiply  1      100000           -> 100000
-dqmul1006 multiply  1      1000000          -> 1000000
-dqmul1007 multiply  1      10000000         -> 10000000
-dqmul1008 multiply  1      100000000        -> 100000000
-dqmul1009 multiply  1      1000000000       -> 1000000000
-dqmul1010 multiply  1      10000000000      -> 10000000000
-dqmul1011 multiply  1      100000000000     -> 100000000000
-dqmul1012 multiply  1      1000000000000    -> 1000000000000
-dqmul1013 multiply  1      10000000000000   -> 10000000000000
-dqmul1014 multiply  1      100000000000000  -> 100000000000000
-dqmul1015 multiply  1      1000000000000000 -> 1000000000000000
-
-dqmul1016 multiply  1      1000000000000000000 -> 1000000000000000000
-dqmul1017 multiply  1      100000000000000000000000000 -> 100000000000000000000000000
-dqmul1018 multiply  1      1000000000000000000000000000 -> 1000000000000000000000000000
-dqmul1019 multiply  1      10000000000000000000000000000 -> 10000000000000000000000000000
-dqmul1020 multiply  1      1000000000000000000000000000000000 -> 1000000000000000000000000000000000
-
-dqmul1021 multiply  10     1                -> 10
-dqmul1022 multiply  10     10               -> 100
-dqmul1023 multiply  10     100              -> 1000
-dqmul1024 multiply  10     1000             -> 10000
-dqmul1025 multiply  10     10000            -> 100000
-dqmul1026 multiply  10     100000           -> 1000000
-dqmul1027 multiply  10     1000000          -> 10000000
-dqmul1028 multiply  10     10000000         -> 100000000
-dqmul1029 multiply  10     100000000        -> 1000000000
-dqmul1030 multiply  10     1000000000       -> 10000000000
-dqmul1031 multiply  10     10000000000      -> 100000000000
-dqmul1032 multiply  10     100000000000     -> 1000000000000
-dqmul1033 multiply  10     1000000000000    -> 10000000000000
-dqmul1034 multiply  10     10000000000000   -> 100000000000000
-dqmul1035 multiply  10     100000000000000  -> 1000000000000000
-
-dqmul1036 multiply  10     100000000000000000 -> 1000000000000000000
-dqmul1037 multiply  10     10000000000000000000000000 -> 100000000000000000000000000
-dqmul1038 multiply  10     100000000000000000000000000 -> 1000000000000000000000000000
-dqmul1039 multiply  10     1000000000000000000000000000 -> 10000000000000000000000000000
-dqmul1040 multiply  10     100000000000000000000000000000000 -> 1000000000000000000000000000000000
-
-dqmul1041 multiply  100    0.1              -> 10.0
-dqmul1042 multiply  100    1                -> 100
-dqmul1043 multiply  100    10               -> 1000
-dqmul1044 multiply  100    100              -> 10000
-dqmul1045 multiply  100    1000             -> 100000
-dqmul1046 multiply  100    10000            -> 1000000
-dqmul1047 multiply  100    100000           -> 10000000
-dqmul1048 multiply  100    1000000          -> 100000000
-dqmul1049 multiply  100    10000000         -> 1000000000
-dqmul1050 multiply  100    100000000        -> 10000000000
-dqmul1051 multiply  100    1000000000       -> 100000000000
-dqmul1052 multiply  100    10000000000      -> 1000000000000
-dqmul1053 multiply  100    100000000000     -> 10000000000000
-dqmul1054 multiply  100    1000000000000    -> 100000000000000
-dqmul1055 multiply  100    10000000000000   -> 1000000000000000
-
-dqmul1056 multiply  100    10000000000000000 -> 1000000000000000000
-dqmul1057 multiply  100    1000000000000000000000000 -> 100000000000000000000000000
-dqmul1058 multiply  100    10000000000000000000000000 -> 1000000000000000000000000000
-dqmul1059 multiply  100    100000000000000000000000000 -> 10000000000000000000000000000
-dqmul1060 multiply  100    10000000000000000000000000000000 -> 1000000000000000000000000000000000
-
-dqmul1061 multiply  1000   0.01             -> 10.00
-dqmul1062 multiply  1000   0.1              -> 100.0
-dqmul1063 multiply  1000   1                -> 1000
-dqmul1064 multiply  1000   10               -> 10000
-dqmul1065 multiply  1000   100              -> 100000
-dqmul1066 multiply  1000   1000             -> 1000000
-dqmul1067 multiply  1000   10000            -> 10000000
-dqmul1068 multiply  1000   100000           -> 100000000
-dqmul1069 multiply  1000   1000000          -> 1000000000
-dqmul1070 multiply  1000   10000000         -> 10000000000
-dqmul1071 multiply  1000   100000000        -> 100000000000
-dqmul1072 multiply  1000   1000000000       -> 1000000000000
-dqmul1073 multiply  1000   10000000000      -> 10000000000000
-dqmul1074 multiply  1000   100000000000     -> 100000000000000
-dqmul1075 multiply  1000   1000000000000    -> 1000000000000000
-
-dqmul1076 multiply  1000   1000000000000000 -> 1000000000000000000
-dqmul1077 multiply  1000   100000000000000000000000 -> 100000000000000000000000000
-dqmul1078 multiply  1000   1000000000000000000000000 -> 1000000000000000000000000000
-dqmul1079 multiply  1000   10000000000000000000000000 -> 10000000000000000000000000000
-dqmul1080 multiply  1000   1000000000000000000000000000000 -> 1000000000000000000000000000000000
-
-dqmul1081 multiply  10000  0.001            -> 10.000
-dqmul1082 multiply  10000  0.01             -> 100.00
-dqmul1083 multiply  10000  0.1              -> 1000.0
-dqmul1084 multiply  10000  1                -> 10000
-dqmul1085 multiply  10000  10               -> 100000
-dqmul1086 multiply  10000  100              -> 1000000
-dqmul1087 multiply  10000  1000             -> 10000000
-dqmul1088 multiply  10000  10000            -> 100000000
-dqmul1089 multiply  10000  100000           -> 1000000000
-dqmul1090 multiply  10000  1000000          -> 10000000000
-dqmul1091 multiply  10000  10000000         -> 100000000000
-dqmul1092 multiply  10000  100000000        -> 1000000000000
-dqmul1093 multiply  10000  1000000000       -> 10000000000000
-dqmul1094 multiply  10000  10000000000      -> 100000000000000
-dqmul1095 multiply  10000  100000000000     -> 1000000000000000
-
-dqmul1096 multiply  10000  100000000000000 -> 1000000000000000000
-dqmul1097 multiply  10000  10000000000000000000000 -> 100000000000000000000000000
-dqmul1098 multiply  10000  100000000000000000000000 -> 1000000000000000000000000000
-dqmul1099 multiply  10000  1000000000000000000000000 -> 10000000000000000000000000000
-dqmul1100 multiply  10000  100000000000000000000000000000 -> 1000000000000000000000000000000000
-
-dqmul1107 multiply  10000   99999999999     ->  999999999990000
-dqmul1108 multiply  10000   99999999999     ->  999999999990000
-
--- Null tests
-dqmul9990 multiply 10  # -> NaN Invalid_operation
-dqmul9991 multiply  # 10 -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextMinus.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextMinus.decTest
deleted file mode 100644
index 34f3958..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextMinus.decTest
+++ /dev/null
@@ -1,126 +0,0 @@
-------------------------------------------------------------------------
--- dqNextMinus.decTest -- decQuad next that is less [754r nextdown]   --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
-dqnextm001 nextminus  0.9999999999999999999999999999999995 ->   0.9999999999999999999999999999999994
-dqnextm002 nextminus  0.9999999999999999999999999999999996 ->   0.9999999999999999999999999999999995
-dqnextm003 nextminus  0.9999999999999999999999999999999997 ->   0.9999999999999999999999999999999996
-dqnextm004 nextminus  0.9999999999999999999999999999999998 ->   0.9999999999999999999999999999999997
-dqnextm005 nextminus  0.9999999999999999999999999999999999 ->   0.9999999999999999999999999999999998
-dqnextm006 nextminus  1.000000000000000000000000000000000  ->   0.9999999999999999999999999999999999
-dqnextm007 nextminus  1.0         ->   0.9999999999999999999999999999999999
-dqnextm008 nextminus  1           ->   0.9999999999999999999999999999999999
-dqnextm009 nextminus  1.000000000000000000000000000000001  ->   1.000000000000000000000000000000000
-dqnextm010 nextminus  1.000000000000000000000000000000002  ->   1.000000000000000000000000000000001
-dqnextm011 nextminus  1.000000000000000000000000000000003  ->   1.000000000000000000000000000000002
-dqnextm012 nextminus  1.000000000000000000000000000000004  ->   1.000000000000000000000000000000003
-dqnextm013 nextminus  1.000000000000000000000000000000005  ->   1.000000000000000000000000000000004
-dqnextm014 nextminus  1.000000000000000000000000000000006  ->   1.000000000000000000000000000000005
-dqnextm015 nextminus  1.000000000000000000000000000000007  ->   1.000000000000000000000000000000006
-dqnextm016 nextminus  1.000000000000000000000000000000008  ->   1.000000000000000000000000000000007
-dqnextm017 nextminus  1.000000000000000000000000000000009  ->   1.000000000000000000000000000000008
-dqnextm018 nextminus  1.000000000000000000000000000000010  ->   1.000000000000000000000000000000009
-dqnextm019 nextminus  1.000000000000000000000000000000011  ->   1.000000000000000000000000000000010
-dqnextm020 nextminus  1.000000000000000000000000000000012  ->   1.000000000000000000000000000000011
-
-dqnextm021 nextminus -0.9999999999999999999999999999999995 ->  -0.9999999999999999999999999999999996
-dqnextm022 nextminus -0.9999999999999999999999999999999996 ->  -0.9999999999999999999999999999999997
-dqnextm023 nextminus -0.9999999999999999999999999999999997 ->  -0.9999999999999999999999999999999998
-dqnextm024 nextminus -0.9999999999999999999999999999999998 ->  -0.9999999999999999999999999999999999
-dqnextm025 nextminus -0.9999999999999999999999999999999999 ->  -1.000000000000000000000000000000000
-dqnextm026 nextminus -1.000000000000000000000000000000000  ->  -1.000000000000000000000000000000001
-dqnextm027 nextminus -1.0         ->  -1.000000000000000000000000000000001
-dqnextm028 nextminus -1           ->  -1.000000000000000000000000000000001
-dqnextm029 nextminus -1.000000000000000000000000000000001  ->  -1.000000000000000000000000000000002
-dqnextm030 nextminus -1.000000000000000000000000000000002  ->  -1.000000000000000000000000000000003
-dqnextm031 nextminus -1.000000000000000000000000000000003  ->  -1.000000000000000000000000000000004
-dqnextm032 nextminus -1.000000000000000000000000000000004  ->  -1.000000000000000000000000000000005
-dqnextm033 nextminus -1.000000000000000000000000000000005  ->  -1.000000000000000000000000000000006
-dqnextm034 nextminus -1.000000000000000000000000000000006  ->  -1.000000000000000000000000000000007
-dqnextm035 nextminus -1.000000000000000000000000000000007  ->  -1.000000000000000000000000000000008
-dqnextm036 nextminus -1.000000000000000000000000000000008  ->  -1.000000000000000000000000000000009
-dqnextm037 nextminus -1.000000000000000000000000000000009  ->  -1.000000000000000000000000000000010
-dqnextm038 nextminus -1.000000000000000000000000000000010  ->  -1.000000000000000000000000000000011
-dqnextm039 nextminus -1.000000000000000000000000000000011  ->  -1.000000000000000000000000000000012
-
--- ultra-tiny inputs
-dqnextm062 nextminus  1E-6176         ->   0E-6176
-dqnextm065 nextminus -1E-6176         ->  -2E-6176
-
--- Zeros
-dqnextm100 nextminus -0           -> -1E-6176
-dqnextm101 nextminus  0           -> -1E-6176
-dqnextm102 nextminus  0.00        -> -1E-6176
-dqnextm103 nextminus -0.00        -> -1E-6176
-dqnextm104 nextminus  0E-300      -> -1E-6176
-dqnextm105 nextminus  0E+300      -> -1E-6176
-dqnextm106 nextminus  0E+30000    -> -1E-6176
-dqnextm107 nextminus -0E+30000    -> -1E-6176
-
--- specials
-dqnextm150 nextminus   Inf    ->  9.999999999999999999999999999999999E+6144
-dqnextm151 nextminus  -Inf    -> -Infinity
-dqnextm152 nextminus   NaN    ->  NaN
-dqnextm153 nextminus  sNaN    ->  NaN   Invalid_operation
-dqnextm154 nextminus   NaN77  ->  NaN77
-dqnextm155 nextminus  sNaN88  ->  NaN88 Invalid_operation
-dqnextm156 nextminus  -NaN    -> -NaN
-dqnextm157 nextminus -sNaN    -> -NaN   Invalid_operation
-dqnextm158 nextminus  -NaN77  -> -NaN77
-dqnextm159 nextminus -sNaN88  -> -NaN88 Invalid_operation
-
--- Nmax, Nmin, Ntiny, subnormals
-dqnextm170 nextminus  9.999999999999999999999999999999999E+6144   -> 9.999999999999999999999999999999998E+6144
-dqnextm171 nextminus  9.999999999999999999999999999999998E+6144   -> 9.999999999999999999999999999999997E+6144
-dqnextm172 nextminus  1E-6143                   -> 9.99999999999999999999999999999999E-6144
-dqnextm173 nextminus  1.000000000000000000000000000000000E-6143   -> 9.99999999999999999999999999999999E-6144
-dqnextm174 nextminus  9E-6176                   -> 8E-6176
-dqnextm175 nextminus  9.9E-6175                 -> 9.8E-6175
-dqnextm176 nextminus  9.99999999999999999999999999999E-6147       -> 9.99999999999999999999999999998E-6147
-dqnextm177 nextminus  9.99999999999999999999999999999999E-6144    -> 9.99999999999999999999999999999998E-6144
-dqnextm178 nextminus  9.99999999999999999999999999999998E-6144    -> 9.99999999999999999999999999999997E-6144
-dqnextm179 nextminus  9.99999999999999999999999999999997E-6144    -> 9.99999999999999999999999999999996E-6144
-dqnextm180 nextminus  0E-6176                   -> -1E-6176
-dqnextm181 nextminus  1E-6176                   -> 0E-6176
-dqnextm182 nextminus  2E-6176                   -> 1E-6176
-
-dqnextm183 nextminus  -0E-6176                  -> -1E-6176
-dqnextm184 nextminus  -1E-6176                  -> -2E-6176
-dqnextm185 nextminus  -2E-6176                  -> -3E-6176
-dqnextm186 nextminus  -10E-6176                 -> -1.1E-6175
-dqnextm187 nextminus  -100E-6176                -> -1.01E-6174
-dqnextm188 nextminus  -100000E-6176             -> -1.00001E-6171
-dqnextm189 nextminus  -1.00000000000000000000000000000E-6143      -> -1.000000000000000000000000000000001E-6143
-dqnextm190 nextminus  -1.000000000000000000000000000000000E-6143  -> -1.000000000000000000000000000000001E-6143
-dqnextm191 nextminus  -1E-6143                  -> -1.000000000000000000000000000000001E-6143
-dqnextm192 nextminus  -9.999999999999999999999999999999998E+6144  -> -9.999999999999999999999999999999999E+6144
-dqnextm193 nextminus  -9.999999999999999999999999999999999E+6144  -> -Infinity
-
--- Null tests
-dqnextm900 nextminus  # -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextPlus.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextPlus.decTest
deleted file mode 100644
index ac3f04e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextPlus.decTest
+++ /dev/null
@@ -1,124 +0,0 @@
-------------------------------------------------------------------------
--- dqNextPlus.decTest -- decQuad next that is greater [754r nextup]   --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
-dqnextp001 nextplus  0.9999999999999999999999999999999995 ->   0.9999999999999999999999999999999996
-dqnextp002 nextplus  0.9999999999999999999999999999999996 ->   0.9999999999999999999999999999999997
-dqnextp003 nextplus  0.9999999999999999999999999999999997 ->   0.9999999999999999999999999999999998
-dqnextp004 nextplus  0.9999999999999999999999999999999998 ->   0.9999999999999999999999999999999999
-dqnextp005 nextplus  0.9999999999999999999999999999999999 ->   1.000000000000000000000000000000000
-dqnextp006 nextplus  1.000000000000000000000000000000000  ->   1.000000000000000000000000000000001
-dqnextp007 nextplus  1.0         ->   1.000000000000000000000000000000001
-dqnextp008 nextplus  1           ->   1.000000000000000000000000000000001
-dqnextp009 nextplus  1.000000000000000000000000000000001  ->   1.000000000000000000000000000000002
-dqnextp010 nextplus  1.000000000000000000000000000000002  ->   1.000000000000000000000000000000003
-dqnextp011 nextplus  1.000000000000000000000000000000003  ->   1.000000000000000000000000000000004
-dqnextp012 nextplus  1.000000000000000000000000000000004  ->   1.000000000000000000000000000000005
-dqnextp013 nextplus  1.000000000000000000000000000000005  ->   1.000000000000000000000000000000006
-dqnextp014 nextplus  1.000000000000000000000000000000006  ->   1.000000000000000000000000000000007
-dqnextp015 nextplus  1.000000000000000000000000000000007  ->   1.000000000000000000000000000000008
-dqnextp016 nextplus  1.000000000000000000000000000000008  ->   1.000000000000000000000000000000009
-dqnextp017 nextplus  1.000000000000000000000000000000009  ->   1.000000000000000000000000000000010
-dqnextp018 nextplus  1.000000000000000000000000000000010  ->   1.000000000000000000000000000000011
-dqnextp019 nextplus  1.000000000000000000000000000000011  ->   1.000000000000000000000000000000012
-
-dqnextp021 nextplus -0.9999999999999999999999999999999995 ->  -0.9999999999999999999999999999999994
-dqnextp022 nextplus -0.9999999999999999999999999999999996 ->  -0.9999999999999999999999999999999995
-dqnextp023 nextplus -0.9999999999999999999999999999999997 ->  -0.9999999999999999999999999999999996
-dqnextp024 nextplus -0.9999999999999999999999999999999998 ->  -0.9999999999999999999999999999999997
-dqnextp025 nextplus -0.9999999999999999999999999999999999 ->  -0.9999999999999999999999999999999998
-dqnextp026 nextplus -1.000000000000000000000000000000000  ->  -0.9999999999999999999999999999999999
-dqnextp027 nextplus -1.0         ->  -0.9999999999999999999999999999999999
-dqnextp028 nextplus -1           ->  -0.9999999999999999999999999999999999
-dqnextp029 nextplus -1.000000000000000000000000000000001  ->  -1.000000000000000000000000000000000
-dqnextp030 nextplus -1.000000000000000000000000000000002  ->  -1.000000000000000000000000000000001
-dqnextp031 nextplus -1.000000000000000000000000000000003  ->  -1.000000000000000000000000000000002
-dqnextp032 nextplus -1.000000000000000000000000000000004  ->  -1.000000000000000000000000000000003
-dqnextp033 nextplus -1.000000000000000000000000000000005  ->  -1.000000000000000000000000000000004
-dqnextp034 nextplus -1.000000000000000000000000000000006  ->  -1.000000000000000000000000000000005
-dqnextp035 nextplus -1.000000000000000000000000000000007  ->  -1.000000000000000000000000000000006
-dqnextp036 nextplus -1.000000000000000000000000000000008  ->  -1.000000000000000000000000000000007
-dqnextp037 nextplus -1.000000000000000000000000000000009  ->  -1.000000000000000000000000000000008
-dqnextp038 nextplus -1.000000000000000000000000000000010  ->  -1.000000000000000000000000000000009
-dqnextp039 nextplus -1.000000000000000000000000000000011  ->  -1.000000000000000000000000000000010
-dqnextp040 nextplus -1.000000000000000000000000000000012  ->  -1.000000000000000000000000000000011
-
--- Zeros
-dqnextp100 nextplus  0           ->  1E-6176
-dqnextp101 nextplus  0.00        ->  1E-6176
-dqnextp102 nextplus  0E-300      ->  1E-6176
-dqnextp103 nextplus  0E+300      ->  1E-6176
-dqnextp104 nextplus  0E+30000    ->  1E-6176
-dqnextp105 nextplus -0           ->  1E-6176
-dqnextp106 nextplus -0.00        ->  1E-6176
-dqnextp107 nextplus -0E-300      ->  1E-6176
-dqnextp108 nextplus -0E+300      ->  1E-6176
-dqnextp109 nextplus -0E+30000    ->  1E-6176
-
--- specials
-dqnextp150 nextplus   Inf    ->  Infinity
-dqnextp151 nextplus  -Inf    -> -9.999999999999999999999999999999999E+6144
-dqnextp152 nextplus   NaN    ->  NaN
-dqnextp153 nextplus  sNaN    ->  NaN   Invalid_operation
-dqnextp154 nextplus   NaN77  ->  NaN77
-dqnextp155 nextplus  sNaN88  ->  NaN88 Invalid_operation
-dqnextp156 nextplus  -NaN    -> -NaN
-dqnextp157 nextplus -sNaN    -> -NaN   Invalid_operation
-dqnextp158 nextplus  -NaN77  -> -NaN77
-dqnextp159 nextplus -sNaN88  -> -NaN88 Invalid_operation
-
--- Nmax, Nmin, Ntiny, subnormals
-dqnextp170 nextplus  -9.999999999999999999999999999999999E+6144  -> -9.999999999999999999999999999999998E+6144
-dqnextp171 nextplus  -9.999999999999999999999999999999998E+6144  -> -9.999999999999999999999999999999997E+6144
-dqnextp172 nextplus  -1E-6143                  -> -9.99999999999999999999999999999999E-6144
-dqnextp173 nextplus  -1.000000000000000E-6143  -> -9.99999999999999999999999999999999E-6144
-dqnextp174 nextplus  -9E-6176                  -> -8E-6176
-dqnextp175 nextplus  -9.9E-6175                -> -9.8E-6175
-dqnextp176 nextplus  -9.99999999999999999999999999999E-6147      -> -9.99999999999999999999999999998E-6147
-dqnextp177 nextplus  -9.99999999999999999999999999999999E-6144   -> -9.99999999999999999999999999999998E-6144
-dqnextp178 nextplus  -9.99999999999999999999999999999998E-6144   -> -9.99999999999999999999999999999997E-6144
-dqnextp179 nextplus  -9.99999999999999999999999999999997E-6144   -> -9.99999999999999999999999999999996E-6144
-dqnextp180 nextplus  -0E-6176                  ->  1E-6176
-dqnextp181 nextplus  -1E-6176                  -> -0E-6176
-dqnextp182 nextplus  -2E-6176                  -> -1E-6176
-
-dqnextp183 nextplus   0E-6176                  ->  1E-6176
-dqnextp184 nextplus   1E-6176                  ->  2E-6176
-dqnextp185 nextplus   2E-6176                  ->  3E-6176
-dqnextp186 nextplus   10E-6176                 ->  1.1E-6175
-dqnextp187 nextplus   100E-6176                ->  1.01E-6174
-dqnextp188 nextplus   100000E-6176             ->  1.00001E-6171
-dqnextp189 nextplus   1.00000000000000000000000000000E-6143      ->  1.000000000000000000000000000000001E-6143
-dqnextp190 nextplus   1.000000000000000000000000000000000E-6143  ->  1.000000000000000000000000000000001E-6143
-dqnextp191 nextplus   1E-6143                  ->  1.000000000000000000000000000000001E-6143
-dqnextp192 nextplus   9.999999999999999999999999999999998E+6144  ->  9.999999999999999999999999999999999E+6144
-dqnextp193 nextplus   9.999999999999999999999999999999999E+6144  ->  Infinity
-
--- Null tests
-dqnextp900 nextplus  # -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextToward.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextToward.decTest
deleted file mode 100644
index e6d1e0b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqNextToward.decTest
+++ /dev/null
@@ -1,375 +0,0 @@
-------------------------------------------------------------------------
--- dqNextToward.decTest -- decQuad next toward rhs [754r nextafter]   --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
-
--- Sanity check with a scattering of numerics
-dqnextt001 nexttoward   10    10   ->  10
-dqnextt002 nexttoward  -10   -10   -> -10
-dqnextt003 nexttoward   1     10   ->  1.000000000000000000000000000000001
-dqnextt004 nexttoward   1    -10   ->  0.9999999999999999999999999999999999
-dqnextt005 nexttoward  -1     10   -> -0.9999999999999999999999999999999999
-dqnextt006 nexttoward  -1    -10   -> -1.000000000000000000000000000000001
-dqnextt007 nexttoward   0     10   ->  1E-6176       Underflow Subnormal Inexact Rounded
-dqnextt008 nexttoward   0    -10   -> -1E-6176       Underflow Subnormal Inexact Rounded
-dqnextt009 nexttoward   9.999999999999999999999999999999999E+6144 +Infinity ->  Infinity Overflow Inexact Rounded
-dqnextt010 nexttoward  -9.999999999999999999999999999999999E+6144 -Infinity -> -Infinity Overflow Inexact Rounded
-dqnextt011 nexttoward       9.999999999999999999999999999999999  10  ->  10.00000000000000000000000000000000
-dqnextt012 nexttoward   10  9.999999999999999999999999999999999      ->  9.999999999999999999999999999999999
-dqnextt013 nexttoward      -9.999999999999999999999999999999999 -10  -> -10.00000000000000000000000000000000
-dqnextt014 nexttoward  -10 -9.999999999999999999999999999999999      -> -9.999999999999999999999999999999999
-dqnextt015 nexttoward       9.999999999999999999999999999999998  10  ->  9.999999999999999999999999999999999
-dqnextt016 nexttoward   10  9.999999999999999999999999999999998      ->  9.999999999999999999999999999999999
-dqnextt017 nexttoward      -9.999999999999999999999999999999998 -10  -> -9.999999999999999999999999999999999
-dqnextt018 nexttoward  -10 -9.999999999999999999999999999999998      -> -9.999999999999999999999999999999999
-
-------- lhs=rhs
--- finites
-dqnextt101 nexttoward          7       7 ->  7
-dqnextt102 nexttoward         -7      -7 -> -7
-dqnextt103 nexttoward         75      75 ->  75
-dqnextt104 nexttoward        -75     -75 -> -75
-dqnextt105 nexttoward       7.50     7.5 ->  7.50
-dqnextt106 nexttoward      -7.50   -7.50 -> -7.50
-dqnextt107 nexttoward       7.500 7.5000 ->  7.500
-dqnextt108 nexttoward      -7.500   -7.5 -> -7.500
-
--- zeros
-dqnextt111 nexttoward          0       0 ->  0
-dqnextt112 nexttoward         -0      -0 -> -0
-dqnextt113 nexttoward       0E+4       0 ->  0E+4
-dqnextt114 nexttoward      -0E+4      -0 -> -0E+4
-dqnextt115 nexttoward     0.00000000000   0.000000000000 ->  0E-11
-dqnextt116 nexttoward    -0.00000000000  -0.00           -> -0E-11
-dqnextt117 nexttoward      0E-141      0 ->  0E-141
-dqnextt118 nexttoward     -0E-141   -000 -> -0E-141
-
--- full coefficients, alternating bits
-dqnextt121 nexttoward   268268268    268268268 ->   268268268
-dqnextt122 nexttoward  -268268268   -268268268 ->  -268268268
-dqnextt123 nexttoward   134134134    134134134 ->   134134134
-dqnextt124 nexttoward  -134134134   -134134134 ->  -134134134
-
--- Nmax, Nmin, Ntiny
-dqnextt131 nexttoward  9.999999999999999999999999999999999E+6144  9.999999999999999999999999999999999E+6144   ->   9.999999999999999999999999999999999E+6144
-dqnextt132 nexttoward  1E-6143           1E-6143            ->   1E-6143
-dqnextt133 nexttoward  1.000000000000000000000000000000000E-6143  1.000000000000000000000000000000000E-6143   ->   1.000000000000000000000000000000000E-6143
-dqnextt134 nexttoward  1E-6176           1E-6176            ->   1E-6176
-
-dqnextt135 nexttoward  -1E-6176          -1E-6176           ->  -1E-6176
-dqnextt136 nexttoward  -1.000000000000000000000000000000000E-6143 -1.000000000000000000000000000000000E-6143  ->  -1.000000000000000000000000000000000E-6143
-dqnextt137 nexttoward  -1E-6143          -1E-6143           ->  -1E-6143
-dqnextt138 nexttoward  -9.999999999999999999999999999999999E+6144 -9.999999999999999999999999999999999E+6144  ->  -9.999999999999999999999999999999999E+6144
-
-------- lhs<rhs
-dqnextt201 nexttoward  0.9999999999999999999999999999999995 Infinity ->   0.9999999999999999999999999999999996
-dqnextt202 nexttoward  0.9999999999999999999999999999999996 Infinity ->   0.9999999999999999999999999999999997
-dqnextt203 nexttoward  0.9999999999999999999999999999999997 Infinity ->   0.9999999999999999999999999999999998
-dqnextt204 nexttoward  0.9999999999999999999999999999999998 Infinity ->   0.9999999999999999999999999999999999
-dqnextt205 nexttoward  0.9999999999999999999999999999999999 Infinity ->   1.000000000000000000000000000000000
-dqnextt206 nexttoward  1.000000000000000000000000000000000  Infinity ->   1.000000000000000000000000000000001
-dqnextt207 nexttoward  1.0         Infinity ->   1.000000000000000000000000000000001
-dqnextt208 nexttoward  1           Infinity ->   1.000000000000000000000000000000001
-dqnextt209 nexttoward  1.000000000000000000000000000000001  Infinity ->   1.000000000000000000000000000000002
-dqnextt210 nexttoward  1.000000000000000000000000000000002  Infinity ->   1.000000000000000000000000000000003
-dqnextt211 nexttoward  1.000000000000000000000000000000003  Infinity ->   1.000000000000000000000000000000004
-dqnextt212 nexttoward  1.000000000000000000000000000000004  Infinity ->   1.000000000000000000000000000000005
-dqnextt213 nexttoward  1.000000000000000000000000000000005  Infinity ->   1.000000000000000000000000000000006
-dqnextt214 nexttoward  1.000000000000000000000000000000006  Infinity ->   1.000000000000000000000000000000007
-dqnextt215 nexttoward  1.000000000000000000000000000000007  Infinity ->   1.000000000000000000000000000000008
-dqnextt216 nexttoward  1.000000000000000000000000000000008  Infinity ->   1.000000000000000000000000000000009
-dqnextt217 nexttoward  1.000000000000000000000000000000009  Infinity ->   1.000000000000000000000000000000010
-dqnextt218 nexttoward  1.000000000000000000000000000000010  Infinity ->   1.000000000000000000000000000000011
-dqnextt219 nexttoward  1.000000000000000000000000000000011  Infinity ->   1.000000000000000000000000000000012
-
-dqnextt221 nexttoward -0.9999999999999999999999999999999995 Infinity ->  -0.9999999999999999999999999999999994
-dqnextt222 nexttoward -0.9999999999999999999999999999999996 Infinity -> -0.9999999999999999999999999999999995
-dqnextt223 nexttoward -0.9999999999999999999999999999999997 Infinity ->  -0.9999999999999999999999999999999996
-dqnextt224 nexttoward -0.9999999999999999999999999999999998 Infinity ->  -0.9999999999999999999999999999999997
-dqnextt225 nexttoward -0.9999999999999999999999999999999999 Infinity ->  -0.9999999999999999999999999999999998
-dqnextt226 nexttoward -1.000000000000000000000000000000000  Infinity ->  -0.9999999999999999999999999999999999
-dqnextt227 nexttoward -1.0         Infinity ->  -0.9999999999999999999999999999999999
-dqnextt228 nexttoward -1           Infinity ->  -0.9999999999999999999999999999999999
-dqnextt229 nexttoward -1.000000000000000000000000000000001  Infinity ->  -1.000000000000000000000000000000000
-dqnextt230 nexttoward -1.000000000000000000000000000000002  Infinity ->  -1.000000000000000000000000000000001
-dqnextt231 nexttoward -1.000000000000000000000000000000003  Infinity ->  -1.000000000000000000000000000000002
-dqnextt232 nexttoward -1.000000000000000000000000000000004  Infinity ->  -1.000000000000000000000000000000003
-dqnextt233 nexttoward -1.000000000000000000000000000000005  Infinity ->  -1.000000000000000000000000000000004
-dqnextt234 nexttoward -1.000000000000000000000000000000006  Infinity ->  -1.000000000000000000000000000000005
-dqnextt235 nexttoward -1.000000000000000000000000000000007  Infinity ->  -1.000000000000000000000000000000006
-dqnextt236 nexttoward -1.000000000000000000000000000000008  Infinity ->  -1.000000000000000000000000000000007
-dqnextt237 nexttoward -1.000000000000000000000000000000009  Infinity ->  -1.000000000000000000000000000000008
-dqnextt238 nexttoward -1.000000000000000000000000000000010  Infinity ->  -1.000000000000000000000000000000009
-dqnextt239 nexttoward -1.000000000000000000000000000000011  Infinity ->  -1.000000000000000000000000000000010
-dqnextt240 nexttoward -1.000000000000000000000000000000012  Infinity ->  -1.000000000000000000000000000000011
-
--- Zeros
-dqnextt300 nexttoward  0           Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded
-dqnextt301 nexttoward  0.00        Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded
-dqnextt302 nexttoward  0E-300      Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded
-dqnextt303 nexttoward  0E+300      Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded
-dqnextt304 nexttoward  0E+30000    Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded
-dqnextt305 nexttoward -0           Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded
-dqnextt306 nexttoward -0.00        Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded
-dqnextt307 nexttoward -0E-300      Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded
-dqnextt308 nexttoward -0E+300      Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded
-dqnextt309 nexttoward -0E+30000    Infinity ->  1E-6176              Underflow Subnormal Inexact Rounded
-
--- specials
-dqnextt350 nexttoward   Inf    Infinity ->  Infinity
-dqnextt351 nexttoward  -Inf    Infinity -> -9.999999999999999999999999999999999E+6144
-dqnextt352 nexttoward   NaN    Infinity ->  NaN
-dqnextt353 nexttoward  sNaN    Infinity ->  NaN   Invalid_operation
-dqnextt354 nexttoward   NaN77  Infinity ->  NaN77
-dqnextt355 nexttoward  sNaN88  Infinity ->  NaN88 Invalid_operation
-dqnextt356 nexttoward  -NaN    Infinity -> -NaN
-dqnextt357 nexttoward -sNaN    Infinity -> -NaN   Invalid_operation
-dqnextt358 nexttoward  -NaN77  Infinity -> -NaN77
-dqnextt359 nexttoward -sNaN88  Infinity -> -NaN88 Invalid_operation
-
--- Nmax, Nmin, Ntiny, subnormals
-dqnextt370 nexttoward  -9.999999999999999999999999999999999E+6144  Infinity  -> -9.999999999999999999999999999999998E+6144
-dqnextt371 nexttoward  -9.999999999999999999999999999999998E+6144  Infinity  -> -9.999999999999999999999999999999997E+6144
-dqnextt372 nexttoward  -1E-6143                  Infinity  -> -9.99999999999999999999999999999999E-6144  Underflow Subnormal Inexact Rounded
-dqnextt373 nexttoward  -1.000000000000000E-6143  Infinity  -> -9.99999999999999999999999999999999E-6144  Underflow Subnormal Inexact Rounded
-dqnextt374 nexttoward  -9E-6176                  Infinity  -> -8E-6176                 Underflow Subnormal Inexact Rounded
-dqnextt375 nexttoward  -9.9E-6175                Infinity  -> -9.8E-6175               Underflow Subnormal Inexact Rounded
-dqnextt376 nexttoward  -9.99999999999999999999999999999E-6147      Infinity  -> -9.99999999999999999999999999998E-6147     Underflow Subnormal Inexact Rounded
-dqnextt377 nexttoward  -9.99999999999999999999999999999999E-6144   Infinity  -> -9.99999999999999999999999999999998E-6144  Underflow Subnormal Inexact Rounded
-dqnextt378 nexttoward  -9.99999999999999999999999999999998E-6144   Infinity  -> -9.99999999999999999999999999999997E-6144  Underflow Subnormal Inexact Rounded
-dqnextt379 nexttoward  -9.99999999999999999999999999999997E-6144   Infinity  -> -9.99999999999999999999999999999996E-6144  Underflow Subnormal Inexact Rounded
-dqnextt380 nexttoward  -0E-6176                  Infinity  ->  1E-6176                 Underflow Subnormal Inexact Rounded
-dqnextt381 nexttoward  -1E-6176                  Infinity  -> -0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqnextt382 nexttoward  -2E-6176                  Infinity  -> -1E-6176                 Underflow Subnormal Inexact Rounded
-
-dqnextt383 nexttoward   0E-6176                  Infinity  ->  1E-6176                 Underflow Subnormal Inexact Rounded
-dqnextt384 nexttoward   1E-6176                  Infinity  ->  2E-6176                 Underflow Subnormal Inexact Rounded
-dqnextt385 nexttoward   2E-6176                  Infinity  ->  3E-6176                 Underflow Subnormal Inexact Rounded
-dqnextt386 nexttoward   10E-6176                 Infinity  ->  1.1E-6175               Underflow Subnormal Inexact Rounded
-dqnextt387 nexttoward   100E-6176                Infinity  ->  1.01E-6174              Underflow Subnormal Inexact Rounded
-dqnextt388 nexttoward   100000E-6176             Infinity  ->  1.00001E-6171           Underflow Subnormal Inexact Rounded
-dqnextt389 nexttoward   1.00000000000000000000000000000E-6143      Infinity  ->  1.000000000000000000000000000000001E-6143
-dqnextt390 nexttoward   1.000000000000000000000000000000000E-6143  Infinity  ->  1.000000000000000000000000000000001E-6143
-dqnextt391 nexttoward   1E-6143                  Infinity  ->  1.000000000000000000000000000000001E-6143
-dqnextt392 nexttoward   9.999999999999999999999999999999997E+6144  Infinity  ->  9.999999999999999999999999999999998E+6144
-dqnextt393 nexttoward   9.999999999999999999999999999999998E+6144  Infinity  ->  9.999999999999999999999999999999999E+6144
-dqnextt394 nexttoward   9.999999999999999999999999999999999E+6144  Infinity  ->  Infinity               Overflow Inexact Rounded
-
-------- lhs>rhs
-dqnextt401 nexttoward  0.9999999999999999999999999999999995  -Infinity ->   0.9999999999999999999999999999999994
-dqnextt402 nexttoward  0.9999999999999999999999999999999996  -Infinity ->   0.9999999999999999999999999999999995
-dqnextt403 nexttoward  0.9999999999999999999999999999999997  -Infinity ->   0.9999999999999999999999999999999996
-dqnextt404 nexttoward  0.9999999999999999999999999999999998  -Infinity ->   0.9999999999999999999999999999999997
-dqnextt405 nexttoward  0.9999999999999999999999999999999999  -Infinity ->   0.9999999999999999999999999999999998
-dqnextt406 nexttoward  1.000000000000000000000000000000000   -Infinity ->   0.9999999999999999999999999999999999
-dqnextt407 nexttoward  1.0          -Infinity ->   0.9999999999999999999999999999999999
-dqnextt408 nexttoward  1            -Infinity ->   0.9999999999999999999999999999999999
-dqnextt409 nexttoward  1.000000000000000000000000000000001   -Infinity ->   1.000000000000000000000000000000000
-dqnextt410 nexttoward  1.000000000000000000000000000000002   -Infinity ->   1.000000000000000000000000000000001
-dqnextt411 nexttoward  1.000000000000000000000000000000003   -Infinity ->   1.000000000000000000000000000000002
-dqnextt412 nexttoward  1.000000000000000000000000000000004   -Infinity ->   1.000000000000000000000000000000003
-dqnextt413 nexttoward  1.000000000000000000000000000000005   -Infinity ->   1.000000000000000000000000000000004
-dqnextt414 nexttoward  1.000000000000000000000000000000006   -Infinity ->   1.000000000000000000000000000000005
-dqnextt415 nexttoward  1.000000000000000000000000000000007   -Infinity ->   1.000000000000000000000000000000006
-dqnextt416 nexttoward  1.000000000000000000000000000000008   -Infinity ->   1.000000000000000000000000000000007
-dqnextt417 nexttoward  1.000000000000000000000000000000009   -Infinity ->   1.000000000000000000000000000000008
-dqnextt418 nexttoward  1.000000000000000000000000000000010   -Infinity ->   1.000000000000000000000000000000009
-dqnextt419 nexttoward  1.000000000000000000000000000000011   -Infinity ->   1.000000000000000000000000000000010
-dqnextt420 nexttoward  1.000000000000000000000000000000012   -Infinity ->   1.000000000000000000000000000000011
-
-dqnextt421 nexttoward -0.9999999999999999999999999999999995  -Infinity ->  -0.9999999999999999999999999999999996
-dqnextt422 nexttoward -0.9999999999999999999999999999999996  -Infinity ->  -0.9999999999999999999999999999999997
-dqnextt423 nexttoward -0.9999999999999999999999999999999997  -Infinity ->  -0.9999999999999999999999999999999998
-dqnextt424 nexttoward -0.9999999999999999999999999999999998  -Infinity ->  -0.9999999999999999999999999999999999
-dqnextt425 nexttoward -0.9999999999999999999999999999999999  -Infinity ->  -1.000000000000000000000000000000000
-dqnextt426 nexttoward -1.000000000000000000000000000000000   -Infinity ->  -1.000000000000000000000000000000001
-dqnextt427 nexttoward -1.0          -Infinity ->  -1.000000000000000000000000000000001
-dqnextt428 nexttoward -1            -Infinity ->  -1.000000000000000000000000000000001
-dqnextt429 nexttoward -1.000000000000000000000000000000001   -Infinity ->  -1.000000000000000000000000000000002
-dqnextt430 nexttoward -1.000000000000000000000000000000002   -Infinity ->  -1.000000000000000000000000000000003
-dqnextt431 nexttoward -1.000000000000000000000000000000003   -Infinity ->  -1.000000000000000000000000000000004
-dqnextt432 nexttoward -1.000000000000000000000000000000004   -Infinity ->  -1.000000000000000000000000000000005
-dqnextt433 nexttoward -1.000000000000000000000000000000005   -Infinity ->  -1.000000000000000000000000000000006
-dqnextt434 nexttoward -1.000000000000000000000000000000006   -Infinity ->  -1.000000000000000000000000000000007
-dqnextt435 nexttoward -1.000000000000000000000000000000007   -Infinity ->  -1.000000000000000000000000000000008
-dqnextt436 nexttoward -1.000000000000000000000000000000008   -Infinity ->  -1.000000000000000000000000000000009
-dqnextt437 nexttoward -1.000000000000000000000000000000009   -Infinity ->  -1.000000000000000000000000000000010
-dqnextt438 nexttoward -1.000000000000000000000000000000010   -Infinity ->  -1.000000000000000000000000000000011
-dqnextt439 nexttoward -1.000000000000000000000000000000011   -Infinity ->  -1.000000000000000000000000000000012
-
--- Zeros
-dqnextt500 nexttoward -0            -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded
-dqnextt501 nexttoward  0            -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded
-dqnextt502 nexttoward  0.00         -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded
-dqnextt503 nexttoward -0.00         -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded
-dqnextt504 nexttoward  0E-300       -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded
-dqnextt505 nexttoward  0E+300       -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded
-dqnextt506 nexttoward  0E+30000     -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded
-dqnextt507 nexttoward -0E+30000     -Infinity -> -1E-6176         Underflow Subnormal Inexact Rounded
-
--- specials
-dqnextt550 nexttoward   Inf     -Infinity ->  9.999999999999999999999999999999999E+6144
-dqnextt551 nexttoward  -Inf     -Infinity -> -Infinity
-dqnextt552 nexttoward   NaN     -Infinity ->  NaN
-dqnextt553 nexttoward  sNaN     -Infinity ->  NaN   Invalid_operation
-dqnextt554 nexttoward   NaN77   -Infinity ->  NaN77
-dqnextt555 nexttoward  sNaN88   -Infinity ->  NaN88 Invalid_operation
-dqnextt556 nexttoward  -NaN     -Infinity -> -NaN
-dqnextt557 nexttoward -sNaN     -Infinity -> -NaN   Invalid_operation
-dqnextt558 nexttoward  -NaN77   -Infinity -> -NaN77
-dqnextt559 nexttoward -sNaN88   -Infinity -> -NaN88 Invalid_operation
-
--- Nmax, Nmin, Ntiny, subnormals
-dqnextt670 nexttoward  9.999999999999999999999999999999999E+6144   -Infinity  -> 9.999999999999999999999999999999998E+6144
-dqnextt671 nexttoward  9.999999999999999999999999999999998E+6144   -Infinity  -> 9.999999999999999999999999999999997E+6144
-dqnextt672 nexttoward  1E-6143                   -Infinity  -> 9.99999999999999999999999999999999E-6144   Underflow Subnormal  Inexact Rounded
-dqnextt673 nexttoward  1.000000000000000000000000000000000E-6143   -Infinity  -> 9.99999999999999999999999999999999E-6144   Underflow Subnormal  Inexact Rounded
-dqnextt674 nexttoward  9E-6176                   -Infinity  -> 8E-6176                  Underflow Subnormal  Inexact Rounded
-dqnextt675 nexttoward  9.9E-6175                 -Infinity  -> 9.8E-6175                Underflow Subnormal  Inexact Rounded
-dqnextt676 nexttoward  9.99999999999999999999999999999E-6147       -Infinity  -> 9.99999999999999999999999999998E-6147      Underflow Subnormal  Inexact Rounded
-dqnextt677 nexttoward  9.99999999999999999999999999999999E-6144    -Infinity  -> 9.99999999999999999999999999999998E-6144   Underflow Subnormal  Inexact Rounded
-dqnextt678 nexttoward  9.99999999999999999999999999999998E-6144    -Infinity  -> 9.99999999999999999999999999999997E-6144   Underflow Subnormal  Inexact Rounded
-dqnextt679 nexttoward  9.99999999999999999999999999999997E-6144    -Infinity  -> 9.99999999999999999999999999999996E-6144   Underflow Subnormal  Inexact Rounded
-dqnextt680 nexttoward  0E-6176                   -Infinity  -> -1E-6176                 Underflow Subnormal  Inexact Rounded
-dqnextt681 nexttoward  1E-6176                   -Infinity  -> 0E-6176                  Underflow Subnormal  Inexact Rounded Clamped
-dqnextt682 nexttoward  2E-6176                   -Infinity  -> 1E-6176                  Underflow Subnormal  Inexact Rounded
-
-dqnextt683 nexttoward  -0E-6176                  -Infinity  -> -1E-6176                 Underflow Subnormal  Inexact Rounded
-dqnextt684 nexttoward  -1E-6176                  -Infinity  -> -2E-6176                 Underflow Subnormal  Inexact Rounded
-dqnextt685 nexttoward  -2E-6176                  -Infinity  -> -3E-6176                 Underflow Subnormal  Inexact Rounded
-dqnextt686 nexttoward  -10E-6176                 -Infinity  -> -1.1E-6175               Underflow Subnormal  Inexact Rounded
-dqnextt687 nexttoward  -100E-6176                -Infinity  -> -1.01E-6174              Underflow Subnormal  Inexact Rounded
-dqnextt688 nexttoward  -100000E-6176             -Infinity  -> -1.00001E-6171           Underflow Subnormal  Inexact Rounded
-dqnextt689 nexttoward  -1.00000000000000000000000000000E-6143      -Infinity  -> -1.000000000000000000000000000000001E-6143
-dqnextt690 nexttoward  -1.000000000000000000000000000000000E-6143  -Infinity  -> -1.000000000000000000000000000000001E-6143
-dqnextt691 nexttoward  -1E-6143                  -Infinity  -> -1.000000000000000000000000000000001E-6143
-dqnextt692 nexttoward  -9.999999999999999999999999999999998E+6144  -Infinity  -> -9.999999999999999999999999999999999E+6144
-dqnextt693 nexttoward  -9.999999999999999999999999999999999E+6144  -Infinity  -> -Infinity               Overflow Inexact Rounded
-
-------- Specials
-dqnextt780 nexttoward -Inf  -Inf   -> -Infinity
-dqnextt781 nexttoward -Inf  -1000  -> -9.999999999999999999999999999999999E+6144
-dqnextt782 nexttoward -Inf  -1     -> -9.999999999999999999999999999999999E+6144
-dqnextt783 nexttoward -Inf  -0     -> -9.999999999999999999999999999999999E+6144
-dqnextt784 nexttoward -Inf   0     -> -9.999999999999999999999999999999999E+6144
-dqnextt785 nexttoward -Inf   1     -> -9.999999999999999999999999999999999E+6144
-dqnextt786 nexttoward -Inf   1000  -> -9.999999999999999999999999999999999E+6144
-dqnextt787 nexttoward -1000 -Inf   -> -1000.000000000000000000000000000001
-dqnextt788 nexttoward -Inf  -Inf   -> -Infinity
-dqnextt789 nexttoward -1    -Inf   -> -1.000000000000000000000000000000001
-dqnextt790 nexttoward -0    -Inf   -> -1E-6176           Underflow Subnormal Inexact Rounded
-dqnextt791 nexttoward  0    -Inf   -> -1E-6176           Underflow Subnormal Inexact Rounded
-dqnextt792 nexttoward  1    -Inf   ->  0.9999999999999999999999999999999999
-dqnextt793 nexttoward  1000 -Inf   ->  999.9999999999999999999999999999999
-dqnextt794 nexttoward  Inf  -Inf   ->  9.999999999999999999999999999999999E+6144
-
-dqnextt800 nexttoward  Inf  -Inf   ->  9.999999999999999999999999999999999E+6144
-dqnextt801 nexttoward  Inf  -1000  ->  9.999999999999999999999999999999999E+6144
-dqnextt802 nexttoward  Inf  -1     ->  9.999999999999999999999999999999999E+6144
-dqnextt803 nexttoward  Inf  -0     ->  9.999999999999999999999999999999999E+6144
-dqnextt804 nexttoward  Inf   0     ->  9.999999999999999999999999999999999E+6144
-dqnextt805 nexttoward  Inf   1     ->  9.999999999999999999999999999999999E+6144
-dqnextt806 nexttoward  Inf   1000  ->  9.999999999999999999999999999999999E+6144
-dqnextt807 nexttoward  Inf   Inf   ->  Infinity
-dqnextt808 nexttoward -1000  Inf   -> -999.9999999999999999999999999999999
-dqnextt809 nexttoward -Inf   Inf   -> -9.999999999999999999999999999999999E+6144
-dqnextt810 nexttoward -1     Inf   -> -0.9999999999999999999999999999999999
-dqnextt811 nexttoward -0     Inf   ->  1E-6176           Underflow Subnormal Inexact Rounded
-dqnextt812 nexttoward  0     Inf   ->  1E-6176           Underflow Subnormal Inexact Rounded
-dqnextt813 nexttoward  1     Inf   ->  1.000000000000000000000000000000001
-dqnextt814 nexttoward  1000  Inf   ->  1000.000000000000000000000000000001
-dqnextt815 nexttoward  Inf   Inf   ->  Infinity
-
-dqnextt821 nexttoward  NaN -Inf    ->  NaN
-dqnextt822 nexttoward  NaN -1000   ->  NaN
-dqnextt823 nexttoward  NaN -1      ->  NaN
-dqnextt824 nexttoward  NaN -0      ->  NaN
-dqnextt825 nexttoward  NaN  0      ->  NaN
-dqnextt826 nexttoward  NaN  1      ->  NaN
-dqnextt827 nexttoward  NaN  1000   ->  NaN
-dqnextt828 nexttoward  NaN  Inf    ->  NaN
-dqnextt829 nexttoward  NaN  NaN    ->  NaN
-dqnextt830 nexttoward -Inf  NaN    ->  NaN
-dqnextt831 nexttoward -1000 NaN    ->  NaN
-dqnextt832 nexttoward -1    NaN    ->  NaN
-dqnextt833 nexttoward -0    NaN    ->  NaN
-dqnextt834 nexttoward  0    NaN    ->  NaN
-dqnextt835 nexttoward  1    NaN    ->  NaN
-dqnextt836 nexttoward  1000 NaN    ->  NaN
-dqnextt837 nexttoward  Inf  NaN    ->  NaN
-
-dqnextt841 nexttoward  sNaN -Inf   ->  NaN  Invalid_operation
-dqnextt842 nexttoward  sNaN -1000  ->  NaN  Invalid_operation
-dqnextt843 nexttoward  sNaN -1     ->  NaN  Invalid_operation
-dqnextt844 nexttoward  sNaN -0     ->  NaN  Invalid_operation
-dqnextt845 nexttoward  sNaN  0     ->  NaN  Invalid_operation
-dqnextt846 nexttoward  sNaN  1     ->  NaN  Invalid_operation
-dqnextt847 nexttoward  sNaN  1000  ->  NaN  Invalid_operation
-dqnextt848 nexttoward  sNaN  NaN   ->  NaN  Invalid_operation
-dqnextt849 nexttoward  sNaN sNaN   ->  NaN  Invalid_operation
-dqnextt850 nexttoward  NaN  sNaN   ->  NaN  Invalid_operation
-dqnextt851 nexttoward -Inf  sNaN   ->  NaN  Invalid_operation
-dqnextt852 nexttoward -1000 sNaN   ->  NaN  Invalid_operation
-dqnextt853 nexttoward -1    sNaN   ->  NaN  Invalid_operation
-dqnextt854 nexttoward -0    sNaN   ->  NaN  Invalid_operation
-dqnextt855 nexttoward  0    sNaN   ->  NaN  Invalid_operation
-dqnextt856 nexttoward  1    sNaN   ->  NaN  Invalid_operation
-dqnextt857 nexttoward  1000 sNaN   ->  NaN  Invalid_operation
-dqnextt858 nexttoward  Inf  sNaN   ->  NaN  Invalid_operation
-dqnextt859 nexttoward  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqnextt861 nexttoward  NaN1   -Inf    ->  NaN1
-dqnextt862 nexttoward +NaN2   -1000   ->  NaN2
-dqnextt863 nexttoward  NaN3    1000   ->  NaN3
-dqnextt864 nexttoward  NaN4    Inf    ->  NaN4
-dqnextt865 nexttoward  NaN5   +NaN6   ->  NaN5
-dqnextt866 nexttoward -Inf     NaN7   ->  NaN7
-dqnextt867 nexttoward -1000    NaN8   ->  NaN8
-dqnextt868 nexttoward  1000    NaN9   ->  NaN9
-dqnextt869 nexttoward  Inf    +NaN10  ->  NaN10
-dqnextt871 nexttoward  sNaN11  -Inf   ->  NaN11  Invalid_operation
-dqnextt872 nexttoward  sNaN12  -1000  ->  NaN12  Invalid_operation
-dqnextt873 nexttoward  sNaN13   1000  ->  NaN13  Invalid_operation
-dqnextt874 nexttoward  sNaN14   NaN17 ->  NaN14  Invalid_operation
-dqnextt875 nexttoward  sNaN15  sNaN18 ->  NaN15  Invalid_operation
-dqnextt876 nexttoward  NaN16   sNaN19 ->  NaN19  Invalid_operation
-dqnextt877 nexttoward -Inf    +sNaN20 ->  NaN20  Invalid_operation
-dqnextt878 nexttoward -1000    sNaN21 ->  NaN21  Invalid_operation
-dqnextt879 nexttoward  1000    sNaN22 ->  NaN22  Invalid_operation
-dqnextt880 nexttoward  Inf     sNaN23 ->  NaN23  Invalid_operation
-dqnextt881 nexttoward +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-dqnextt882 nexttoward -NaN26    NaN28 -> -NaN26
-dqnextt883 nexttoward -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-dqnextt884 nexttoward  1000    -NaN30 -> -NaN30
-dqnextt885 nexttoward  1000   -sNaN31 -> -NaN31  Invalid_operation
-
--- Null tests
-dqnextt900 nexttoward 1  # -> NaN Invalid_operation
-dqnextt901 nexttoward #  1 -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqOr.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqOr.decTest
deleted file mode 100644
index daa3c86..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqOr.decTest
+++ /dev/null
@@ -1,401 +0,0 @@
-------------------------------------------------------------------------
--- dqOr.decTest -- digitwise logical OR for decQuads                  --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- Sanity check (truth table)
-dqor001 or             0    0 ->    0
-dqor002 or             0    1 ->    1
-dqor003 or             1    0 ->    1
-dqor004 or             1    1 ->    1
-dqor005 or          1100 1010 -> 1110
--- and at msd and msd-1
-dqor006 or 0000000000000000000000000000000000 0000000000000000000000000000000000 ->           0
-dqor007 or 0000000000000000000000000000000000 1000000000000000000000000000000000 ->   1000000000000000000000000000000000
-dqor008 or 1000000000000000000000000000000000 0000000000000000000000000000000000 ->   1000000000000000000000000000000000
-dqor009 or 1000000000000000000000000000000000 1000000000000000000000000000000000 ->   1000000000000000000000000000000000
-dqor010 or 0000000000000000000000000000000000 0000000000000000000000000000000000 ->           0
-dqor011 or 0000000000000000000000000000000000 0100000000000000000000000000000000 ->    100000000000000000000000000000000
-dqor012 or 0100000000000000000000000000000000 0000000000000000000000000000000000 ->    100000000000000000000000000000000
-dqor013 or 0100000000000000000000000000000000 0100000000000000000000000000000000 ->    100000000000000000000000000000000
-
--- Various lengths
-dqor601 or 0111111111111111111111111111111111 1111111111111111111111111111111110  -> 1111111111111111111111111111111111
-dqor602 or 1011111111111111111111111111111111 1111111111111111111111111111111101  -> 1111111111111111111111111111111111
-dqor603 or 1101111111111111111111111111111111 1111111111111111111111111111111011  -> 1111111111111111111111111111111111
-dqor604 or 1110111111111111111111111111111111 1111111111111111111111111111110111  -> 1111111111111111111111111111111111
-dqor605 or 1111011111111111111111111111111111 1111111111111111111111111111101111  -> 1111111111111111111111111111111111
-dqor606 or 1111101111111111111111111111111111 1111111111111111111111111111011111  -> 1111111111111111111111111111111111
-dqor607 or 1111110111111111111111111111111111 1111111111111111111111111110111111  -> 1111111111111111111111111111111111
-dqor608 or 1111111011111111111111111111111111 1111111111111111111111111101111111  -> 1111111111111111111111111111111111
-dqor609 or 1111111101111111111111111111111111 1111111111111111111111111011111111  -> 1111111111111111111111111111111111
-dqor610 or 1111111110111111111111111111111111 1111111111111111111111110111111111  -> 1111111111111111111111111111111111
-dqor611 or 1111111111011111111111111111111111 1111111111111111111111101111111111  -> 1111111111111111111111111111111111
-dqor612 or 1111111111101111111111111111111111 1111111111111111111111011111111111  -> 1111111111111111111111111111111111
-dqor613 or 1111111111110111111111111111111111 1111111111111111111110111111111111  -> 1111111111111111111111111111111111
-dqor614 or 1111111111111011111111111111111111 1111111111111111111101111111111111  -> 1111111111111111111111111111111111
-dqor615 or 1111111111111101111111111111111111 1111111111111111111011111111111111  -> 1111111111111111111111111111111111
-dqor616 or 1111111111111110111111111111111111 1111111111111111110111111111111111  -> 1111111111111111111111111111111111
-dqor617 or 1111111111111111011111111111111111 1111111111111111101111111111111111  -> 1111111111111111111111111111111111
-dqor618 or 1111111111111111101111111111111111 1111111111111111011111111111111111  -> 1111111111111111111111111111111111
-dqor619 or 1111111111111111110111111111111111 1111111111111110111111111111111111  -> 1111111111111111111111111111111111
-dqor620 or 1111111111111111111011111111111111 1111111111111101111111111111111111  -> 1111111111111111111111111111111111
-dqor621 or 1111111111111111111101111111111111 1111111111111011111111111111111111  -> 1111111111111111111111111111111111
-dqor622 or 1111111111111111111110111111111111 1111111111110111111111111111111111  -> 1111111111111111111111111111111111
-dqor623 or 1111111111111111111111011111111111 1111111111101111111111111111111111  -> 1111111111111111111111111111111111
-dqor624 or 1111111111111111111111101111111111 1111111111011111111111111111111111  -> 1111111111111111111111111111111111
-dqor625 or 1111111111111111111111110111111111 1111111110111111111111111111111111  -> 1111111111111111111111111111111111
-dqor626 or 1111111111111111111111111011111111 1111111101111111111111111111111111  -> 1111111111111111111111111111111111
-dqor627 or 1111111111111111111111111101111111 1111111011111111111111111111111111  -> 1111111111111111111111111111111111
-dqor628 or 1111111111111111111111111110111111 1111110111111111111111111111111111  -> 1111111111111111111111111111111111
-dqor629 or 1111111111111111111111111111011111 1111101111111111111111111111111111  -> 1111111111111111111111111111111111
-dqor630 or 1111111111111111111111111111101111 1111011111111111111111111111111111  -> 1111111111111111111111111111111111
-dqor631 or 1111111111111111111111111111110111 1110111111111111111111111111111111  -> 1111111111111111111111111111111111
-dqor632 or 1111111111111111111111111111111011 1101111111111111111111111111111111  -> 1111111111111111111111111111111111
-dqor633 or 1111111111111111111111111111111101 1011111111111111111111111111111111  -> 1111111111111111111111111111111111
-dqor634 or 1111111111111111111111111111111110 0111111111111111111111111111111111  -> 1111111111111111111111111111111111
-
-dqor641 or 1111111111111111111111111111111110 0111111111111111111111111111111111  -> 1111111111111111111111111111111111
-dqor642 or 1111111111111111111111111111111101 1011111111111111111111111111111111  -> 1111111111111111111111111111111111
-dqor643 or 1111111111111111111111111111111011 1101111111111111111111111111111111  -> 1111111111111111111111111111111111
-dqor644 or 1111111111111111111111111111110111 1110111111111111111111111111111111  -> 1111111111111111111111111111111111
-dqor645 or 1111111111111111111111111111101111 1111011111111111111111111111111111  -> 1111111111111111111111111111111111
-dqor646 or 1111111111111111111111111111011111 1111101111111111111111111111111111  -> 1111111111111111111111111111111111
-dqor647 or 1111111111111111111111111110111111 1111110111111111111111111111111111  -> 1111111111111111111111111111111111
-dqor648 or 1111111111111111111111111101111111 1111111011111111111111111111111111  -> 1111111111111111111111111111111111
-dqor649 or 1111111111111111111111111011111111 1111111101111111111111111111111111  -> 1111111111111111111111111111111111
-dqor650 or 1111111111111111111111110111111111 1111111110111111111111111111111111  -> 1111111111111111111111111111111111
-dqor651 or 1111111111111111111111101111111111 1111111111011111111111111111111111  -> 1111111111111111111111111111111111
-dqor652 or 1111111111111111111111011111111111 1111111111101111111111111111111111  -> 1111111111111111111111111111111111
-dqor653 or 1111111111111111111110111111111111 1111111111110111111111111111111111  -> 1111111111111111111111111111111111
-dqor654 or 1111111111111111111101111111111111 1111111111111011111111111111111111  -> 1111111111111111111111111111111111
-dqor655 or 1111111111111111111011111111111111 1111111111111101111111111111111111  -> 1111111111111111111111111111111111
-dqor656 or 1111111111111111110111111111111111 1111111111111110111111111111111111  -> 1111111111111111111111111111111111
-dqor657 or 1010101010101010101010101010101010 1010101010101010001010101010101010  -> 1010101010101010101010101010101010
-dqor658 or 1111111111111111011111111111111111 1111111111111111101111111111111111  -> 1111111111111111111111111111111111
-dqor659 or 1111111111111110111111111111111111 1111111111111111110111111111111111  -> 1111111111111111111111111111111111
-dqor660 or 1111111111111101111111111111111111 1111111111111111111011111111111111  -> 1111111111111111111111111111111111
-dqor661 or 1111111111111011111111111111111111 1111111111111111111101111111111111  -> 1111111111111111111111111111111111
-dqor662 or 1111111111110111111111111111111111 1111111111111111111110111111111111  -> 1111111111111111111111111111111111
-dqor663 or 1111111111101111111111111111111111 1111111111111111111111011111111111  -> 1111111111111111111111111111111111
-dqor664 or 1111111111011111111111111111111111 1111111111111111111111101111111111  -> 1111111111111111111111111111111111
-dqor665 or 1111111110111111111111111111111111 1111111111111111111111110111111111  -> 1111111111111111111111111111111111
-dqor666 or 0101010101010101010101010101010101 0101010101010101010101010001010101  ->  101010101010101010101010101010101
-dqor667 or 1111111011111111111111111111111111 1111111111111111111111111101111111  -> 1111111111111111111111111111111111
-dqor668 or 1111110111111111111111111111111111 1111111111111111111111111110111111  -> 1111111111111111111111111111111111
-dqor669 or 1111101111111111111111111111111111 1111111111111111111111111111011111  -> 1111111111111111111111111111111111
-dqor670 or 1111011111111111111111111111111111 1111111111111111111111111111101111  -> 1111111111111111111111111111111111
-dqor671 or 1110111111111111111111111111111111 1111111111111111111111111111110111  -> 1111111111111111111111111111111111
-dqor672 or 1101111111111111111111111111111111 1111111111111111111111111111111011  -> 1111111111111111111111111111111111
-dqor673 or 1011111111111111111111111111111111 1111111111111111111111111111111101  -> 1111111111111111111111111111111111
-dqor674 or 0111111111111111111111111111111111 1111111111111111111111111111111110  -> 1111111111111111111111111111111111
-dqor675 or 0111111111111111111111111111111110 1111111111111111111111111111111110  -> 1111111111111111111111111111111110
-dqor676 or 1111111111111111111111111111111110 1111111111111111111111111111111110  -> 1111111111111111111111111111111110
-
-dqor681 or 0111111111111111111111111111111111 0111111111011111111111111111111110  ->  111111111111111111111111111111111
-dqor682 or 1011111111111111111111111111111111 1011111110101111111111111111111101  -> 1011111111111111111111111111111111
-dqor683 or 1101111111111111111111111111111111 1101111101110111111111111111111011  -> 1101111111111111111111111111111111
-dqor684 or 1110111111111111111111111111111111 1110111011111011111111111111110111  -> 1110111111111111111111111111111111
-dqor685 or 1111011111111111111111111111111111 1111010111111101111111111111101111  -> 1111011111111111111111111111111111
-dqor686 or 1111101111111111111111111111111111 1111101111111110111111111111011111  -> 1111101111111111111111111111111111
-dqor687 or 1111110111111111111111111111111111 1111010111111111011111111110111111  -> 1111110111111111111111111111111111
-dqor688 or 1111111011111111111111111111111111 1110111011111111101111111101111111  -> 1111111011111111111111111111111111
-dqor689 or 1111111101111111111111111111111111 1101111101111111110111111011111111  -> 1111111101111111111111111111111111
-dqor690 or 1111111110111111111111111111111111 1011111110111111111011110111111110  -> 1111111110111111111111111111111111
-dqor691 or 1111111111011111111111111111111111 0111111111011111111101101111111101  -> 1111111111011111111111111111111111
-dqor692 or 1111111111101111111111111111111111 1111111111101111111110011111111011  -> 1111111111101111111111111111111111
-dqor693 or 1111111111110111111111111111111111 1111111111110111111110011111110111  -> 1111111111110111111111111111111111
-dqor694 or 1111111111111011111111111111111111 1111111111111011111101101111101111  -> 1111111111111011111111111111111111
-dqor695 or 1111111111111101111111111111111111 1111111111111101111011110111011111  -> 1111111111111101111111111111111111
-dqor696 or 1111111111111110111111111111111111 1111111111111110110111111010111111  -> 1111111111111110111111111111111111
-dqor697 or 1111111111111111011111111111111111 1111111111111111001111111101111111  -> 1111111111111111011111111111111111
-dqor698 or 1111111111111111101111111111111111 1111111111111111001111111010111111  -> 1111111111111111101111111111111111
-dqor699 or 1111111111111111110111111111111111 1111111111111110110111110111011111  -> 1111111111111111110111111111111111
-dqor700 or 1111111111111111111011111111111111 1111111111111101111011101111101111  -> 1111111111111111111011111111111111
-dqor701 or 1111111111111111111101111111111111 1111111111111011111101011111110111  -> 1111111111111111111101111111111111
-dqor702 or 1111111111111111111110111111111111 1111111111110111111110111111111011  -> 1111111111111111111110111111111111
-dqor703 or 1111111111111111111111011111111111 1111111111101111111101011111111101  -> 1111111111111111111111011111111111
-dqor704 or 1111111111111111111111101111111111 1111111111011111111011101111111110  -> 1111111111111111111111101111111111
-dqor705 or 1111111111111111111111110111111111 0111111110111111110111110111111111  -> 1111111111111111111111110111111111
-dqor706 or 1111111111111111111111111011111111 1011111101111111101111111011111111  -> 1111111111111111111111111011111111
-dqor707 or 1111111111111111111111111101111111 1101111011111111011111111101111111  -> 1111111111111111111111111101111111
-dqor708 or 1111111111111111111111111110111111 1110110111111110111111111110111111  -> 1111111111111111111111111110111111
-dqor709 or 1111111111111111111111111111011111 1111001111111101111111111111011111  -> 1111111111111111111111111111011111
-dqor710 or 1111111111111111111111111111101111 1111001111111011111111111111101111  -> 1111111111111111111111111111101111
-dqor711 or 1111111111111111111111111111110111 1110110111110111111111111111110111  -> 1111111111111111111111111111110111
-dqor712 or 1111111111111111111111111111111011 1101111011101111111111111111111011  -> 1111111111111111111111111111111011
-dqor713 or 1111111111111111111111111111111101 1011111101011111111111111111111101  -> 1111111111111111111111111111111101
-dqor714 or 1111111111111111111111111111111110 0111111110111111111111111111111110  -> 1111111111111111111111111111111110
-
-
-
---         1234567890123456     1234567890123456 1234567890123456
-dqor020 or 1111111111111111     1111111111111111  ->  1111111111111111
-dqor021 or  111111111111111      111111111111111  ->   111111111111111
-dqor022 or   11111111111111       11111111111111  ->    11111111111111
-dqor023 or    1111111111111        1111111111111  ->     1111111111111
-dqor024 or     111111111111         111111111111  ->      111111111111
-dqor025 or      11111111111          11111111111  ->       11111111111
-dqor026 or       1111111111           1111111111  ->        1111111111
-dqor027 or        111111111            111111111  ->         111111111
-dqor028 or         11111111             11111111  ->          11111111
-dqor029 or          1111111              1111111  ->           1111111
-dqor030 or           111111               111111  ->            111111
-dqor031 or            11111                11111  ->             11111
-dqor032 or             1111                 1111  ->              1111
-dqor033 or              111                  111  ->               111
-dqor034 or               11                   11  ->                11
-dqor035 or                1                    1  ->                 1
-dqor036 or                0                    0  ->                 0
-
-dqor042 or  111111110000000     1111111110000000  ->  1111111110000000
-dqor043 or   11111110000000     1000000100000000  ->  1011111110000000
-dqor044 or    1111110000000     1000001000000000  ->  1001111110000000
-dqor045 or     111110000000     1000010000000000  ->  1000111110000000
-dqor046 or      11110000000     1000100000000000  ->  1000111110000000
-dqor047 or       1110000000     1001000000000000  ->  1001001110000000
-dqor048 or        110000000     1010000000000000  ->  1010000110000000
-dqor049 or         10000000     1100000000000000  ->  1100000010000000
-
-dqor090 or 011111111  111101111  ->  111111111
-dqor091 or 101111111  111101111  ->  111111111
-dqor092 or 110111111  111101111  ->  111111111
-dqor093 or 111011111  111101111  ->  111111111
-dqor094 or 111101111  111101111  ->  111101111
-dqor095 or 111110111  111101111  ->  111111111
-dqor096 or 111111011  111101111  ->  111111111
-dqor097 or 111111101  111101111  ->  111111111
-dqor098 or 111111110  111101111  ->  111111111
-
-dqor100 or 111101111  011111111  ->  111111111
-dqor101 or 111101111  101111111  ->  111111111
-dqor102 or 111101111  110111111  ->  111111111
-dqor103 or 111101111  111011111  ->  111111111
-dqor104 or 111101111  111101111  ->  111101111
-dqor105 or 111101111  111110111  ->  111111111
-dqor106 or 111101111  111111011  ->  111111111
-dqor107 or 111101111  111111101  ->  111111111
-dqor108 or 111101111  111111110  ->  111111111
-
--- non-0/1 should not be accepted, nor should signs
-dqor220 or 111111112  111111111  ->  NaN Invalid_operation
-dqor221 or 333333333  333333333  ->  NaN Invalid_operation
-dqor222 or 555555555  555555555  ->  NaN Invalid_operation
-dqor223 or 777777777  777777777  ->  NaN Invalid_operation
-dqor224 or 999999999  999999999  ->  NaN Invalid_operation
-dqor225 or 222222222  999999999  ->  NaN Invalid_operation
-dqor226 or 444444444  999999999  ->  NaN Invalid_operation
-dqor227 or 666666666  999999999  ->  NaN Invalid_operation
-dqor228 or 888888888  999999999  ->  NaN Invalid_operation
-dqor229 or 999999999  222222222  ->  NaN Invalid_operation
-dqor230 or 999999999  444444444  ->  NaN Invalid_operation
-dqor231 or 999999999  666666666  ->  NaN Invalid_operation
-dqor232 or 999999999  888888888  ->  NaN Invalid_operation
--- a few randoms
-dqor240 or  567468689 -934981942 ->  NaN Invalid_operation
-dqor241 or  567367689  934981942 ->  NaN Invalid_operation
-dqor242 or -631917772 -706014634 ->  NaN Invalid_operation
-dqor243 or -756253257  138579234 ->  NaN Invalid_operation
-dqor244 or  835590149  567435400 ->  NaN Invalid_operation
--- test MSD
-dqor250 or  2000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor251 or  7000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor252 or  8000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor253 or  9000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor254 or  2000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor255 or  7000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor256 or  8000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor257 or  9000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor258 or  1000000111000111000111000000000000 2000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor259 or  1000000111000111000111000000000000 7000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor260 or  1000000111000111000111000000000000 8000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor261 or  1000000111000111000111000000000000 9000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor262 or  0000000111000111000111000000000000 2000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor263 or  0000000111000111000111000000000000 7000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor264 or  0000000111000111000111000000000000 8000000111000111000111000000000000 ->  NaN Invalid_operation
-dqor265 or  0000000111000111000111000000000000 9000000111000111000111000000000000 ->  NaN Invalid_operation
--- test MSD-1
-dqor270 or  0200000111000111000111001000000000 1000000111000111000111100000000010 ->  NaN Invalid_operation
-dqor271 or  0700000111000111000111000100000000 1000000111000111000111010000000100 ->  NaN Invalid_operation
-dqor272 or  0800000111000111000111000010000000 1000000111000111000111001000001000 ->  NaN Invalid_operation
-dqor273 or  0900000111000111000111000001000000 1000000111000111000111000100010000 ->  NaN Invalid_operation
-dqor274 or  1000000111000111000111000000100000 0200000111000111000111000010100000 ->  NaN Invalid_operation
-dqor275 or  1000000111000111000111000000010000 0700000111000111000111000001000000 ->  NaN Invalid_operation
-dqor276 or  1000000111000111000111000000001000 0800000111000111000111000010100000 ->  NaN Invalid_operation
-dqor277 or  1000000111000111000111000000000100 0900000111000111000111000000010000 ->  NaN Invalid_operation
--- test LSD
-dqor280 or  0010000111000111000111000000000002 1000000111000111000111000100000001 ->  NaN Invalid_operation
-dqor281 or  0001000111000111000111000000000007 1000000111000111000111001000000011 ->  NaN Invalid_operation
-dqor282 or  0000000111000111000111100000000008 1000000111000111000111010000000001 ->  NaN Invalid_operation
-dqor283 or  0000000111000111000111010000000009 1000000111000111000111100000000001 ->  NaN Invalid_operation
-dqor284 or  1000000111000111000111001000000000 0001000111000111000111000000000002 ->  NaN Invalid_operation
-dqor285 or  1000000111000111000111000100000000 0010000111000111000111000000000007 ->  NaN Invalid_operation
-dqor286 or  1000000111000111000111000010000000 0100000111000111000111000000000008 ->  NaN Invalid_operation
-dqor287 or  1000000111000111000111000001000000 1000000111000111000111000000000009 ->  NaN Invalid_operation
--- test Middie
-dqor288 or  0010000111000111000111000020000000 1000000111000111000111001000000000 ->  NaN Invalid_operation
-dqor289 or  0001000111000111000111000070000001 1000000111000111000111000100000000 ->  NaN Invalid_operation
-dqor290 or  0000000111000111000111100080000010 1000000111000111000111000010000000 ->  NaN Invalid_operation
-dqor291 or  0000000111000111000111010090000100 1000000111000111000111000001000000 ->  NaN Invalid_operation
-dqor292 or  1000000111000111000111001000001000 0000000111000111000111000020100000 ->  NaN Invalid_operation
-dqor293 or  1000000111000111000111000100010000 0000000111000111000111000070010000 ->  NaN Invalid_operation
-dqor294 or  1000000111000111000111000010100000 0000000111000111000111000080001000 ->  NaN Invalid_operation
-dqor295 or  1000000111000111000111000001000000 0000000111000111000111000090000100 ->  NaN Invalid_operation
--- signs
-dqor296 or -1000000111000111000111000001000000 -0000001110001110001110010000000100 ->  NaN Invalid_operation
-dqor297 or -1000000111000111000111000001000000  0000001110001110001110000010000100 ->  NaN Invalid_operation
-dqor298 or  1000000111000111000111000001000000 -0000001110001110001110001000000100 ->  NaN Invalid_operation
-dqor299 or  1000000111000111000111000001000000  0000001110001110001110000011000100 ->  1000001111001111001111000011000100
-
--- Nmax, Nmin, Ntiny-like
-dqor331 or  2   9.99999999E+1999    -> NaN Invalid_operation
-dqor332 or  3   1E-1999             -> NaN Invalid_operation
-dqor333 or  4   1.00000000E-1999    -> NaN Invalid_operation
-dqor334 or  5   1E-1009             -> NaN Invalid_operation
-dqor335 or  6   -1E-1009            -> NaN Invalid_operation
-dqor336 or  7   -1.00000000E-1999   -> NaN Invalid_operation
-dqor337 or  8   -1E-1999            -> NaN Invalid_operation
-dqor338 or  9   -9.99999999E+1999   -> NaN Invalid_operation
-dqor341 or  9.99999999E+2999    -18 -> NaN Invalid_operation
-dqor342 or  1E-2999              01 -> NaN Invalid_operation
-dqor343 or  1.00000000E-2999    -18 -> NaN Invalid_operation
-dqor344 or  1E-1009              18 -> NaN Invalid_operation
-dqor345 or  -1E-1009            -10 -> NaN Invalid_operation
-dqor346 or  -1.00000000E-2999    18 -> NaN Invalid_operation
-dqor347 or  -1E-2999             10 -> NaN Invalid_operation
-dqor348 or  -9.99999999E+2999   -18 -> NaN Invalid_operation
-
--- A few other non-integers
-dqor361 or  1.0                  1  -> NaN Invalid_operation
-dqor362 or  1E+1                 1  -> NaN Invalid_operation
-dqor363 or  0.0                  1  -> NaN Invalid_operation
-dqor364 or  0E+1                 1  -> NaN Invalid_operation
-dqor365 or  9.9                  1  -> NaN Invalid_operation
-dqor366 or  9E+1                 1  -> NaN Invalid_operation
-dqor371 or  0 1.0                   -> NaN Invalid_operation
-dqor372 or  0 1E+1                  -> NaN Invalid_operation
-dqor373 or  0 0.0                   -> NaN Invalid_operation
-dqor374 or  0 0E+1                  -> NaN Invalid_operation
-dqor375 or  0 9.9                   -> NaN Invalid_operation
-dqor376 or  0 9E+1                  -> NaN Invalid_operation
-
--- All Specials are in error
-dqor780 or -Inf  -Inf   -> NaN Invalid_operation
-dqor781 or -Inf  -1000  -> NaN Invalid_operation
-dqor782 or -Inf  -1     -> NaN Invalid_operation
-dqor783 or -Inf  -0     -> NaN Invalid_operation
-dqor784 or -Inf   0     -> NaN Invalid_operation
-dqor785 or -Inf   1     -> NaN Invalid_operation
-dqor786 or -Inf   1000  -> NaN Invalid_operation
-dqor787 or -1000 -Inf   -> NaN Invalid_operation
-dqor788 or -Inf  -Inf   -> NaN Invalid_operation
-dqor789 or -1    -Inf   -> NaN Invalid_operation
-dqor790 or -0    -Inf   -> NaN Invalid_operation
-dqor791 or  0    -Inf   -> NaN Invalid_operation
-dqor792 or  1    -Inf   -> NaN Invalid_operation
-dqor793 or  1000 -Inf   -> NaN Invalid_operation
-dqor794 or  Inf  -Inf   -> NaN Invalid_operation
-
-dqor800 or  Inf  -Inf   -> NaN Invalid_operation
-dqor801 or  Inf  -1000  -> NaN Invalid_operation
-dqor802 or  Inf  -1     -> NaN Invalid_operation
-dqor803 or  Inf  -0     -> NaN Invalid_operation
-dqor804 or  Inf   0     -> NaN Invalid_operation
-dqor805 or  Inf   1     -> NaN Invalid_operation
-dqor806 or  Inf   1000  -> NaN Invalid_operation
-dqor807 or  Inf   Inf   -> NaN Invalid_operation
-dqor808 or -1000  Inf   -> NaN Invalid_operation
-dqor809 or -Inf   Inf   -> NaN Invalid_operation
-dqor810 or -1     Inf   -> NaN Invalid_operation
-dqor811 or -0     Inf   -> NaN Invalid_operation
-dqor812 or  0     Inf   -> NaN Invalid_operation
-dqor813 or  1     Inf   -> NaN Invalid_operation
-dqor814 or  1000  Inf   -> NaN Invalid_operation
-dqor815 or  Inf   Inf   -> NaN Invalid_operation
-
-dqor821 or  NaN -Inf    -> NaN Invalid_operation
-dqor822 or  NaN -1000   -> NaN Invalid_operation
-dqor823 or  NaN -1      -> NaN Invalid_operation
-dqor824 or  NaN -0      -> NaN Invalid_operation
-dqor825 or  NaN  0      -> NaN Invalid_operation
-dqor826 or  NaN  1      -> NaN Invalid_operation
-dqor827 or  NaN  1000   -> NaN Invalid_operation
-dqor828 or  NaN  Inf    -> NaN Invalid_operation
-dqor829 or  NaN  NaN    -> NaN Invalid_operation
-dqor830 or -Inf  NaN    -> NaN Invalid_operation
-dqor831 or -1000 NaN    -> NaN Invalid_operation
-dqor832 or -1    NaN    -> NaN Invalid_operation
-dqor833 or -0    NaN    -> NaN Invalid_operation
-dqor834 or  0    NaN    -> NaN Invalid_operation
-dqor835 or  1    NaN    -> NaN Invalid_operation
-dqor836 or  1000 NaN    -> NaN Invalid_operation
-dqor837 or  Inf  NaN    -> NaN Invalid_operation
-
-dqor841 or  sNaN -Inf   ->  NaN  Invalid_operation
-dqor842 or  sNaN -1000  ->  NaN  Invalid_operation
-dqor843 or  sNaN -1     ->  NaN  Invalid_operation
-dqor844 or  sNaN -0     ->  NaN  Invalid_operation
-dqor845 or  sNaN  0     ->  NaN  Invalid_operation
-dqor846 or  sNaN  1     ->  NaN  Invalid_operation
-dqor847 or  sNaN  1000  ->  NaN  Invalid_operation
-dqor848 or  sNaN  NaN   ->  NaN  Invalid_operation
-dqor849 or  sNaN sNaN   ->  NaN  Invalid_operation
-dqor850 or  NaN  sNaN   ->  NaN  Invalid_operation
-dqor851 or -Inf  sNaN   ->  NaN  Invalid_operation
-dqor852 or -1000 sNaN   ->  NaN  Invalid_operation
-dqor853 or -1    sNaN   ->  NaN  Invalid_operation
-dqor854 or -0    sNaN   ->  NaN  Invalid_operation
-dqor855 or  0    sNaN   ->  NaN  Invalid_operation
-dqor856 or  1    sNaN   ->  NaN  Invalid_operation
-dqor857 or  1000 sNaN   ->  NaN  Invalid_operation
-dqor858 or  Inf  sNaN   ->  NaN  Invalid_operation
-dqor859 or  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqor861 or  NaN1   -Inf    -> NaN Invalid_operation
-dqor862 or +NaN2   -1000   -> NaN Invalid_operation
-dqor863 or  NaN3    1000   -> NaN Invalid_operation
-dqor864 or  NaN4    Inf    -> NaN Invalid_operation
-dqor865 or  NaN5   +NaN6   -> NaN Invalid_operation
-dqor866 or -Inf     NaN7   -> NaN Invalid_operation
-dqor867 or -1000    NaN8   -> NaN Invalid_operation
-dqor868 or  1000    NaN9   -> NaN Invalid_operation
-dqor869 or  Inf    +NaN10  -> NaN Invalid_operation
-dqor871 or  sNaN11  -Inf   -> NaN Invalid_operation
-dqor872 or  sNaN12  -1000  -> NaN Invalid_operation
-dqor873 or  sNaN13   1000  -> NaN Invalid_operation
-dqor874 or  sNaN14   NaN17 -> NaN Invalid_operation
-dqor875 or  sNaN15  sNaN18 -> NaN Invalid_operation
-dqor876 or  NaN16   sNaN19 -> NaN Invalid_operation
-dqor877 or -Inf    +sNaN20 -> NaN Invalid_operation
-dqor878 or -1000    sNaN21 -> NaN Invalid_operation
-dqor879 or  1000    sNaN22 -> NaN Invalid_operation
-dqor880 or  Inf     sNaN23 -> NaN Invalid_operation
-dqor881 or +NaN25  +sNaN24 -> NaN Invalid_operation
-dqor882 or -NaN26    NaN28 -> NaN Invalid_operation
-dqor883 or -sNaN27  sNaN29 -> NaN Invalid_operation
-dqor884 or  1000    -NaN30 -> NaN Invalid_operation
-dqor885 or  1000   -sNaN31 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqPlus.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqPlus.decTest
deleted file mode 100644
index df1a15c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqPlus.decTest
+++ /dev/null
@@ -1,88 +0,0 @@
-------------------------------------------------------------------------
--- dqPlus.decTest -- decQuad 0+x                                      --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- Sanity check
-dqpls001 plus       +7.50  -> 7.50
-
--- Infinities
-dqpls011 plus  Infinity    -> Infinity
-dqpls012 plus  -Infinity   -> -Infinity
-
--- NaNs, 0 payload
-ddqls021 plus         NaN  -> NaN
-ddqls022 plus        -NaN  -> -NaN
-ddqls023 plus        sNaN  -> NaN  Invalid_operation
-ddqls024 plus       -sNaN  -> -NaN Invalid_operation
-
--- NaNs, non-0 payload
-ddqls031 plus       NaN13  -> NaN13
-ddqls032 plus      -NaN13  -> -NaN13
-ddqls033 plus      sNaN13  -> NaN13   Invalid_operation
-ddqls034 plus     -sNaN13  -> -NaN13  Invalid_operation
-ddqls035 plus       NaN70  -> NaN70
-ddqls036 plus      -NaN70  -> -NaN70
-ddqls037 plus      sNaN101 -> NaN101  Invalid_operation
-ddqls038 plus     -sNaN101 -> -NaN101 Invalid_operation
-
--- finites
-dqpls101 plus          7   -> 7
-dqpls102 plus         -7   -> -7
-dqpls103 plus         75   -> 75
-dqpls104 plus        -75   -> -75
-dqpls105 plus       7.50   -> 7.50
-dqpls106 plus      -7.50   -> -7.50
-dqpls107 plus       7.500  -> 7.500
-dqpls108 plus      -7.500  -> -7.500
-
--- zeros
-dqpls111 plus          0   -> 0
-dqpls112 plus         -0   -> 0
-dqpls113 plus       0E+4   -> 0E+4
-dqpls114 plus      -0E+4   -> 0E+4
-dqpls115 plus     0.0000   -> 0.0000
-dqpls116 plus    -0.0000   -> 0.0000
-dqpls117 plus      0E-141  -> 0E-141
-dqpls118 plus     -0E-141  -> 0E-141
-
--- full coefficients, alternating bits
-dqpls121 plus   2682682682682682682682682682682682    ->  2682682682682682682682682682682682
-dqpls122 plus  -2682682682682682682682682682682682    -> -2682682682682682682682682682682682
-dqpls123 plus   1341341341341341341341341341341341    ->  1341341341341341341341341341341341
-dqpls124 plus  -1341341341341341341341341341341341    -> -1341341341341341341341341341341341
-
--- Nmax, Nmin, Ntiny
-dqpls131 plus  9.999999999999999999999999999999999E+6144   ->  9.999999999999999999999999999999999E+6144
-dqpls132 plus  1E-6143                                     ->  1E-6143
-dqpls133 plus  1.000000000000000000000000000000000E-6143   ->  1.000000000000000000000000000000000E-6143
-dqpls134 plus  1E-6176                                     ->  1E-6176 Subnormal
-
-dqpls135 plus  -1E-6176                                    -> -1E-6176 Subnormal
-dqpls136 plus  -1.000000000000000000000000000000000E-6143  -> -1.000000000000000000000000000000000E-6143
-dqpls137 plus  -1E-6143                                    -> -1E-6143
-dqpls138 plus  -9.999999999999999999999999999999999E+6144  -> -9.999999999999999999999999999999999E+6144
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqQuantize.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqQuantize.decTest
deleted file mode 100644
index 4ed39b4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqQuantize.decTest
+++ /dev/null
@@ -1,836 +0,0 @@
-------------------------------------------------------------------------
--- dqQuantize.decTest -- decQuad quantize operation                   --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Most of the tests here assume a "regular pattern", where the
--- sign and coefficient are +1.
--- 2004.03.15 Underflow for quantize is suppressed
--- 2005.06.08 More extensive tests for 'does not fit'
--- [Forked from quantize.decTest 2006.11.25]
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- sanity checks
-dqqua001 quantize 0       1e0   -> 0
-dqqua002 quantize 1       1e0   -> 1
-dqqua003 quantize 0.1    1e+2   -> 0E+2 Inexact Rounded
-dqqua005 quantize 0.1    1e+1   -> 0E+1 Inexact Rounded
-dqqua006 quantize 0.1     1e0   -> 0 Inexact Rounded
-dqqua007 quantize 0.1    1e-1   -> 0.1
-dqqua008 quantize 0.1    1e-2   -> 0.10
-dqqua009 quantize 0.1    1e-3   -> 0.100
-dqqua010 quantize 0.9    1e+2   -> 0E+2 Inexact Rounded
-dqqua011 quantize 0.9    1e+1   -> 0E+1 Inexact Rounded
-dqqua012 quantize 0.9    1e+0   -> 1 Inexact Rounded
-dqqua013 quantize 0.9    1e-1   -> 0.9
-dqqua014 quantize 0.9    1e-2   -> 0.90
-dqqua015 quantize 0.9    1e-3   -> 0.900
--- negatives
-dqqua021 quantize -0      1e0   -> -0
-dqqua022 quantize -1      1e0   -> -1
-dqqua023 quantize -0.1   1e+2   -> -0E+2 Inexact Rounded
-dqqua025 quantize -0.1   1e+1   -> -0E+1 Inexact Rounded
-dqqua026 quantize -0.1    1e0   -> -0 Inexact Rounded
-dqqua027 quantize -0.1   1e-1   -> -0.1
-dqqua028 quantize -0.1   1e-2   -> -0.10
-dqqua029 quantize -0.1   1e-3   -> -0.100
-dqqua030 quantize -0.9   1e+2   -> -0E+2 Inexact Rounded
-dqqua031 quantize -0.9   1e+1   -> -0E+1 Inexact Rounded
-dqqua032 quantize -0.9   1e+0   -> -1 Inexact Rounded
-dqqua033 quantize -0.9   1e-1   -> -0.9
-dqqua034 quantize -0.9   1e-2   -> -0.90
-dqqua035 quantize -0.9   1e-3   -> -0.900
-dqqua036 quantize -0.5   1e+2   -> -0E+2 Inexact Rounded
-dqqua037 quantize -0.5   1e+1   -> -0E+1 Inexact Rounded
-dqqua038 quantize -0.5   1e+0   -> -0 Inexact Rounded
-dqqua039 quantize -0.5   1e-1   -> -0.5
-dqqua040 quantize -0.5   1e-2   -> -0.50
-dqqua041 quantize -0.5   1e-3   -> -0.500
-dqqua042 quantize -0.9   1e+2   -> -0E+2 Inexact Rounded
-dqqua043 quantize -0.9   1e+1   -> -0E+1 Inexact Rounded
-dqqua044 quantize -0.9   1e+0   -> -1 Inexact Rounded
-dqqua045 quantize -0.9   1e-1   -> -0.9
-dqqua046 quantize -0.9   1e-2   -> -0.90
-dqqua047 quantize -0.9   1e-3   -> -0.900
-
--- examples from Specification
-dqqua060 quantize 2.17   0.001  -> 2.170
-dqqua061 quantize 2.17   0.01   -> 2.17
-dqqua062 quantize 2.17   0.1    -> 2.2 Inexact Rounded
-dqqua063 quantize 2.17   1e+0   -> 2 Inexact Rounded
-dqqua064 quantize 2.17   1e+1   -> 0E+1 Inexact Rounded
-dqqua065 quantize -Inf    Inf   -> -Infinity
-dqqua066 quantize 2       Inf   -> NaN Invalid_operation
-dqqua067 quantize -0.1    1     -> -0 Inexact Rounded
-dqqua068 quantize -0      1e+5     -> -0E+5
-dqqua069 quantize +123451234567899876543216789012345.6 1e-2 -> NaN Invalid_operation
-dqqua070 quantize -987651234567899876543214335236450.6 1e-2 -> NaN Invalid_operation
-dqqua071 quantize 217    1e-1   -> 217.0
-dqqua072 quantize 217    1e+0   -> 217
-dqqua073 quantize 217    1e+1   -> 2.2E+2 Inexact Rounded
-dqqua074 quantize 217    1e+2   -> 2E+2 Inexact Rounded
-
--- general tests ..
-dqqua089 quantize 12     1e+4   -> 0E+4 Inexact Rounded
-dqqua090 quantize 12     1e+3   -> 0E+3 Inexact Rounded
-dqqua091 quantize 12     1e+2   -> 0E+2 Inexact Rounded
-dqqua092 quantize 12     1e+1   -> 1E+1 Inexact Rounded
-dqqua093 quantize 1.2345 1e-2   -> 1.23 Inexact Rounded
-dqqua094 quantize 1.2355 1e-2   -> 1.24 Inexact Rounded
-dqqua095 quantize 1.2345 1e-6   -> 1.234500
-dqqua096 quantize 9.9999 1e-2   -> 10.00 Inexact Rounded
-dqqua097 quantize 0.0001 1e-2   -> 0.00 Inexact Rounded
-dqqua098 quantize 0.001  1e-2   -> 0.00 Inexact Rounded
-dqqua099 quantize 0.009  1e-2   -> 0.01 Inexact Rounded
-dqqua100 quantize 92     1e+2   -> 1E+2 Inexact Rounded
-
-dqqua101 quantize -1      1e0   ->  -1
-dqqua102 quantize -1     1e-1   ->  -1.0
-dqqua103 quantize -1     1e-2   ->  -1.00
-dqqua104 quantize  0      1e0   ->  0
-dqqua105 quantize  0     1e-1   ->  0.0
-dqqua106 quantize  0     1e-2   ->  0.00
-dqqua107 quantize  0.00   1e0   ->  0
-dqqua108 quantize  0     1e+1   ->  0E+1
-dqqua109 quantize  0     1e+2   ->  0E+2
-dqqua110 quantize +1      1e0   ->  1
-dqqua111 quantize +1     1e-1   ->  1.0
-dqqua112 quantize +1     1e-2   ->  1.00
-
-dqqua120 quantize   1.04  1e-3 ->  1.040
-dqqua121 quantize   1.04  1e-2 ->  1.04
-dqqua122 quantize   1.04  1e-1 ->  1.0 Inexact Rounded
-dqqua123 quantize   1.04   1e0 ->  1 Inexact Rounded
-dqqua124 quantize   1.05  1e-3 ->  1.050
-dqqua125 quantize   1.05  1e-2 ->  1.05
-dqqua126 quantize   1.05  1e-1 ->  1.0 Inexact Rounded
-dqqua131 quantize   1.05   1e0 ->  1 Inexact Rounded
-dqqua132 quantize   1.06  1e-3 ->  1.060
-dqqua133 quantize   1.06  1e-2 ->  1.06
-dqqua134 quantize   1.06  1e-1 ->  1.1 Inexact Rounded
-dqqua135 quantize   1.06   1e0 ->  1 Inexact Rounded
-
-dqqua140 quantize   -10    1e-2  ->  -10.00
-dqqua141 quantize   +1     1e-2  ->  1.00
-dqqua142 quantize   +10    1e-2  ->  10.00
-dqqua143 quantize   1E+37  1e-2  ->  NaN Invalid_operation
-dqqua144 quantize   1E-37  1e-2  ->  0.00 Inexact Rounded
-dqqua145 quantize   1E-3   1e-2  ->  0.00 Inexact Rounded
-dqqua146 quantize   1E-2   1e-2  ->  0.01
-dqqua147 quantize   1E-1   1e-2  ->  0.10
-dqqua148 quantize   0E-37  1e-2  ->  0.00
-
-dqqua150 quantize   1.0600 1e-5 ->  1.06000
-dqqua151 quantize   1.0600 1e-4 ->  1.0600
-dqqua152 quantize   1.0600 1e-3 ->  1.060 Rounded
-dqqua153 quantize   1.0600 1e-2 ->  1.06 Rounded
-dqqua154 quantize   1.0600 1e-1 ->  1.1 Inexact Rounded
-dqqua155 quantize   1.0600  1e0 ->  1 Inexact Rounded
-
--- a couple where rounding was different in base tests
-rounding:    half_up
-dqqua157 quantize -0.5   1e+0   -> -1 Inexact Rounded
-dqqua158 quantize   1.05  1e-1 ->  1.1 Inexact Rounded
-dqqua159 quantize   1.06   1e0 ->  1 Inexact Rounded
-rounding:    half_even
-
--- base tests with non-1 coefficients
-dqqua161 quantize 0      -9e0   -> 0
-dqqua162 quantize 1      -7e0   -> 1
-dqqua163 quantize 0.1   -1e+2   -> 0E+2 Inexact Rounded
-dqqua165 quantize 0.1    0e+1   -> 0E+1 Inexact Rounded
-dqqua166 quantize 0.1     2e0   -> 0 Inexact Rounded
-dqqua167 quantize 0.1    3e-1   -> 0.1
-dqqua168 quantize 0.1   44e-2   -> 0.10
-dqqua169 quantize 0.1  555e-3   -> 0.100
-dqqua170 quantize 0.9 6666e+2   -> 0E+2 Inexact Rounded
-dqqua171 quantize 0.9 -777e+1   -> 0E+1 Inexact Rounded
-dqqua172 quantize 0.9  -88e+0   -> 1 Inexact Rounded
-dqqua173 quantize 0.9   -9e-1   -> 0.9
-dqqua174 quantize 0.9    0e-2   -> 0.90
-dqqua175 quantize 0.9  1.1e-3   -> 0.9000
--- negatives
-dqqua181 quantize -0    1.1e0   -> -0.0
-dqqua182 quantize -1     -1e0   -> -1
-dqqua183 quantize -0.1  11e+2   -> -0E+2 Inexact Rounded
-dqqua185 quantize -0.1 111e+1   -> -0E+1 Inexact Rounded
-dqqua186 quantize -0.1   71e0   -> -0 Inexact Rounded
-dqqua187 quantize -0.1 -91e-1   -> -0.1
-dqqua188 quantize -0.1 -.1e-2   -> -0.100
-dqqua189 quantize -0.1  -1e-3   -> -0.100
-dqqua190 quantize -0.9   0e+2   -> -0E+2 Inexact Rounded
-dqqua191 quantize -0.9  -0e+1   -> -0E+1 Inexact Rounded
-dqqua192 quantize -0.9 -10e+0   -> -1 Inexact Rounded
-dqqua193 quantize -0.9 100e-1   -> -0.9
-dqqua194 quantize -0.9 999e-2   -> -0.90
-
--- +ve exponents ..
-dqqua201 quantize   -1   1e+0 ->  -1
-dqqua202 quantize   -1   1e+1 ->  -0E+1 Inexact Rounded
-dqqua203 quantize   -1   1e+2 ->  -0E+2 Inexact Rounded
-dqqua204 quantize    0   1e+0 ->  0
-dqqua205 quantize    0   1e+1 ->  0E+1
-dqqua206 quantize    0   1e+2 ->  0E+2
-dqqua207 quantize   +1   1e+0 ->  1
-dqqua208 quantize   +1   1e+1 ->  0E+1 Inexact Rounded
-dqqua209 quantize   +1   1e+2 ->  0E+2 Inexact Rounded
-
-dqqua220 quantize   1.04 1e+3 ->  0E+3 Inexact Rounded
-dqqua221 quantize   1.04 1e+2 ->  0E+2 Inexact Rounded
-dqqua222 quantize   1.04 1e+1 ->  0E+1 Inexact Rounded
-dqqua223 quantize   1.04 1e+0 ->  1 Inexact Rounded
-dqqua224 quantize   1.05 1e+3 ->  0E+3 Inexact Rounded
-dqqua225 quantize   1.05 1e+2 ->  0E+2 Inexact Rounded
-dqqua226 quantize   1.05 1e+1 ->  0E+1 Inexact Rounded
-dqqua227 quantize   1.05 1e+0 ->  1 Inexact Rounded
-dqqua228 quantize   1.05 1e+3 ->  0E+3 Inexact Rounded
-dqqua229 quantize   1.05 1e+2 ->  0E+2 Inexact Rounded
-dqqua230 quantize   1.05 1e+1 ->  0E+1 Inexact Rounded
-dqqua231 quantize   1.05 1e+0 ->  1 Inexact Rounded
-dqqua232 quantize   1.06 1e+3 ->  0E+3 Inexact Rounded
-dqqua233 quantize   1.06 1e+2 ->  0E+2 Inexact Rounded
-dqqua234 quantize   1.06 1e+1 ->  0E+1 Inexact Rounded
-dqqua235 quantize   1.06 1e+0 ->  1 Inexact Rounded
-
-dqqua240 quantize   -10   1e+1  ->  -1E+1 Rounded
-dqqua241 quantize   +1    1e+1  ->  0E+1 Inexact Rounded
-dqqua242 quantize   +10   1e+1  ->  1E+1 Rounded
-dqqua243 quantize   1E+1  1e+1  ->  1E+1          -- underneath this is E+1
-dqqua244 quantize   1E+2  1e+1  ->  1.0E+2        -- underneath this is E+1
-dqqua245 quantize   1E+3  1e+1  ->  1.00E+3       -- underneath this is E+1
-dqqua246 quantize   1E+4  1e+1  ->  1.000E+4      -- underneath this is E+1
-dqqua247 quantize   1E+5  1e+1  ->  1.0000E+5     -- underneath this is E+1
-dqqua248 quantize   1E+6  1e+1  ->  1.00000E+6    -- underneath this is E+1
-dqqua249 quantize   1E+7  1e+1  ->  1.000000E+7   -- underneath this is E+1
-dqqua250 quantize   1E+8  1e+1  ->  1.0000000E+8  -- underneath this is E+1
-dqqua251 quantize   1E+9  1e+1  ->  1.00000000E+9 -- underneath this is E+1
--- next one tries to add 9 zeros
-dqqua252 quantize   1E+37 1e+1  ->  NaN Invalid_operation
-dqqua253 quantize   1E-37 1e+1  ->  0E+1 Inexact Rounded
-dqqua254 quantize   1E-2  1e+1  ->  0E+1 Inexact Rounded
-dqqua255 quantize   0E-37 1e+1  ->  0E+1
-dqqua256 quantize  -0E-37 1e+1  -> -0E+1
-dqqua257 quantize  -0E-1  1e+1  -> -0E+1
-dqqua258 quantize  -0     1e+1  -> -0E+1
-dqqua259 quantize  -0E+1  1e+1  -> -0E+1
-
-dqqua260 quantize   -10   1e+2  ->  -0E+2 Inexact Rounded
-dqqua261 quantize   +1    1e+2  ->  0E+2 Inexact Rounded
-dqqua262 quantize   +10   1e+2  ->  0E+2 Inexact Rounded
-dqqua263 quantize   1E+1  1e+2  ->  0E+2 Inexact Rounded
-dqqua264 quantize   1E+2  1e+2  ->  1E+2
-dqqua265 quantize   1E+3  1e+2  ->  1.0E+3
-dqqua266 quantize   1E+4  1e+2  ->  1.00E+4
-dqqua267 quantize   1E+5  1e+2  ->  1.000E+5
-dqqua268 quantize   1E+6  1e+2  ->  1.0000E+6
-dqqua269 quantize   1E+7  1e+2  ->  1.00000E+7
-dqqua270 quantize   1E+8  1e+2  ->  1.000000E+8
-dqqua271 quantize   1E+9  1e+2  ->  1.0000000E+9
-dqqua272 quantize   1E+10 1e+2  ->  1.00000000E+10
-dqqua273 quantize   1E-10 1e+2  ->  0E+2 Inexact Rounded
-dqqua274 quantize   1E-2  1e+2  ->  0E+2 Inexact Rounded
-dqqua275 quantize   0E-10 1e+2  ->  0E+2
-
-dqqua280 quantize   -10   1e+3  ->  -0E+3 Inexact Rounded
-dqqua281 quantize   +1    1e+3  ->  0E+3 Inexact Rounded
-dqqua282 quantize   +10   1e+3  ->  0E+3 Inexact Rounded
-dqqua283 quantize   1E+1  1e+3  ->  0E+3 Inexact Rounded
-dqqua284 quantize   1E+2  1e+3  ->  0E+3 Inexact Rounded
-dqqua285 quantize   1E+3  1e+3  ->  1E+3
-dqqua286 quantize   1E+4  1e+3  ->  1.0E+4
-dqqua287 quantize   1E+5  1e+3  ->  1.00E+5
-dqqua288 quantize   1E+6  1e+3  ->  1.000E+6
-dqqua289 quantize   1E+7  1e+3  ->  1.0000E+7
-dqqua290 quantize   1E+8  1e+3  ->  1.00000E+8
-dqqua291 quantize   1E+9  1e+3  ->  1.000000E+9
-dqqua292 quantize   1E+10 1e+3  ->  1.0000000E+10
-dqqua293 quantize   1E-10 1e+3  ->  0E+3 Inexact Rounded
-dqqua294 quantize   1E-2  1e+3  ->  0E+3 Inexact Rounded
-dqqua295 quantize   0E-10 1e+3  ->  0E+3
-
--- round up from below [sign wrong in JIT compiler once]
-dqqua300 quantize   0.0078 1e-5 ->  0.00780
-dqqua301 quantize   0.0078 1e-4 ->  0.0078
-dqqua302 quantize   0.0078 1e-3 ->  0.008 Inexact Rounded
-dqqua303 quantize   0.0078 1e-2 ->  0.01 Inexact Rounded
-dqqua304 quantize   0.0078 1e-1 ->  0.0 Inexact Rounded
-dqqua305 quantize   0.0078  1e0 ->  0 Inexact Rounded
-dqqua306 quantize   0.0078 1e+1 ->  0E+1 Inexact Rounded
-dqqua307 quantize   0.0078 1e+2 ->  0E+2 Inexact Rounded
-
-dqqua310 quantize  -0.0078 1e-5 -> -0.00780
-dqqua311 quantize  -0.0078 1e-4 -> -0.0078
-dqqua312 quantize  -0.0078 1e-3 -> -0.008 Inexact Rounded
-dqqua313 quantize  -0.0078 1e-2 -> -0.01 Inexact Rounded
-dqqua314 quantize  -0.0078 1e-1 -> -0.0 Inexact Rounded
-dqqua315 quantize  -0.0078  1e0 -> -0 Inexact Rounded
-dqqua316 quantize  -0.0078 1e+1 -> -0E+1 Inexact Rounded
-dqqua317 quantize  -0.0078 1e+2 -> -0E+2 Inexact Rounded
-
-dqqua320 quantize   0.078 1e-5 ->  0.07800
-dqqua321 quantize   0.078 1e-4 ->  0.0780
-dqqua322 quantize   0.078 1e-3 ->  0.078
-dqqua323 quantize   0.078 1e-2 ->  0.08 Inexact Rounded
-dqqua324 quantize   0.078 1e-1 ->  0.1 Inexact Rounded
-dqqua325 quantize   0.078  1e0 ->  0 Inexact Rounded
-dqqua326 quantize   0.078 1e+1 ->  0E+1 Inexact Rounded
-dqqua327 quantize   0.078 1e+2 ->  0E+2 Inexact Rounded
-
-dqqua330 quantize  -0.078 1e-5 -> -0.07800
-dqqua331 quantize  -0.078 1e-4 -> -0.0780
-dqqua332 quantize  -0.078 1e-3 -> -0.078
-dqqua333 quantize  -0.078 1e-2 -> -0.08 Inexact Rounded
-dqqua334 quantize  -0.078 1e-1 -> -0.1 Inexact Rounded
-dqqua335 quantize  -0.078  1e0 -> -0 Inexact Rounded
-dqqua336 quantize  -0.078 1e+1 -> -0E+1 Inexact Rounded
-dqqua337 quantize  -0.078 1e+2 -> -0E+2 Inexact Rounded
-
-dqqua340 quantize   0.78 1e-5 ->  0.78000
-dqqua341 quantize   0.78 1e-4 ->  0.7800
-dqqua342 quantize   0.78 1e-3 ->  0.780
-dqqua343 quantize   0.78 1e-2 ->  0.78
-dqqua344 quantize   0.78 1e-1 ->  0.8 Inexact Rounded
-dqqua345 quantize   0.78  1e0 ->  1 Inexact Rounded
-dqqua346 quantize   0.78 1e+1 ->  0E+1 Inexact Rounded
-dqqua347 quantize   0.78 1e+2 ->  0E+2 Inexact Rounded
-
-dqqua350 quantize  -0.78 1e-5 -> -0.78000
-dqqua351 quantize  -0.78 1e-4 -> -0.7800
-dqqua352 quantize  -0.78 1e-3 -> -0.780
-dqqua353 quantize  -0.78 1e-2 -> -0.78
-dqqua354 quantize  -0.78 1e-1 -> -0.8 Inexact Rounded
-dqqua355 quantize  -0.78  1e0 -> -1 Inexact Rounded
-dqqua356 quantize  -0.78 1e+1 -> -0E+1 Inexact Rounded
-dqqua357 quantize  -0.78 1e+2 -> -0E+2 Inexact Rounded
-
-dqqua360 quantize   7.8 1e-5 ->  7.80000
-dqqua361 quantize   7.8 1e-4 ->  7.8000
-dqqua362 quantize   7.8 1e-3 ->  7.800
-dqqua363 quantize   7.8 1e-2 ->  7.80
-dqqua364 quantize   7.8 1e-1 ->  7.8
-dqqua365 quantize   7.8  1e0 ->  8 Inexact Rounded
-dqqua366 quantize   7.8 1e+1 ->  1E+1 Inexact Rounded
-dqqua367 quantize   7.8 1e+2 ->  0E+2 Inexact Rounded
-dqqua368 quantize   7.8 1e+3 ->  0E+3 Inexact Rounded
-
-dqqua370 quantize  -7.8 1e-5 -> -7.80000
-dqqua371 quantize  -7.8 1e-4 -> -7.8000
-dqqua372 quantize  -7.8 1e-3 -> -7.800
-dqqua373 quantize  -7.8 1e-2 -> -7.80
-dqqua374 quantize  -7.8 1e-1 -> -7.8
-dqqua375 quantize  -7.8  1e0 -> -8 Inexact Rounded
-dqqua376 quantize  -7.8 1e+1 -> -1E+1 Inexact Rounded
-dqqua377 quantize  -7.8 1e+2 -> -0E+2 Inexact Rounded
-dqqua378 quantize  -7.8 1e+3 -> -0E+3 Inexact Rounded
-
--- some individuals
-dqqua380 quantize   1122334455667788991234567352364.506 1e-2 -> 1122334455667788991234567352364.51 Inexact Rounded
-dqqua381 quantize   11223344556677889912345673523645.06 1e-2 -> 11223344556677889912345673523645.06
-dqqua382 quantize   112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation
-dqqua383 quantize   1122334455667788991234567352364506  1e-2 -> NaN Invalid_operation
-dqqua384 quantize  -1122334455667788991234567352364.506 1e-2 -> -1122334455667788991234567352364.51 Inexact Rounded
-dqqua385 quantize  -11223344556677889912345673523645.06 1e-2 -> -11223344556677889912345673523645.06
-dqqua386 quantize  -112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation
-dqqua387 quantize  -1122334455667788991234567352364506  1e-2 -> NaN Invalid_operation
-
-rounding: down
-dqqua389 quantize   112233445566778899123456735236450.6 1e-2 -> NaN Invalid_operation
-rounding: half_up
-
--- and a few more from e-mail discussions
-dqqua391 quantize  11223344556677889912345678912.34567  1e-3 -> 11223344556677889912345678912.346   Inexact Rounded
-dqqua392 quantize  112233445566778899123456789123.4567  1e-3 -> 112233445566778899123456789123.457  Inexact Rounded
-dqqua393 quantize  1122334455667788991234567891234567.  1e-3 -> NaN Invalid_operation
-
--- some 9999 round-up cases
-dqqua400 quantize   9.999        1e-5  ->  9.99900
-dqqua401 quantize   9.999        1e-4  ->  9.9990
-dqqua402 quantize   9.999        1e-3  ->  9.999
-dqqua403 quantize   9.999        1e-2  -> 10.00     Inexact Rounded
-dqqua404 quantize   9.999        1e-1  -> 10.0      Inexact Rounded
-dqqua405 quantize   9.999         1e0  -> 10        Inexact Rounded
-dqqua406 quantize   9.999         1e1  -> 1E+1      Inexact Rounded
-dqqua407 quantize   9.999         1e2  -> 0E+2      Inexact Rounded
-
-dqqua410 quantize   0.999        1e-5  ->  0.99900
-dqqua411 quantize   0.999        1e-4  ->  0.9990
-dqqua412 quantize   0.999        1e-3  ->  0.999
-dqqua413 quantize   0.999        1e-2  ->  1.00     Inexact Rounded
-dqqua414 quantize   0.999        1e-1  ->  1.0      Inexact Rounded
-dqqua415 quantize   0.999         1e0  ->  1        Inexact Rounded
-dqqua416 quantize   0.999         1e1  -> 0E+1      Inexact Rounded
-
-dqqua420 quantize   0.0999       1e-5  ->  0.09990
-dqqua421 quantize   0.0999       1e-4  ->  0.0999
-dqqua422 quantize   0.0999       1e-3  ->  0.100    Inexact Rounded
-dqqua423 quantize   0.0999       1e-2  ->  0.10     Inexact Rounded
-dqqua424 quantize   0.0999       1e-1  ->  0.1      Inexact Rounded
-dqqua425 quantize   0.0999        1e0  ->  0        Inexact Rounded
-dqqua426 quantize   0.0999        1e1  -> 0E+1      Inexact Rounded
-
-dqqua430 quantize   0.00999      1e-5  ->  0.00999
-dqqua431 quantize   0.00999      1e-4  ->  0.0100   Inexact Rounded
-dqqua432 quantize   0.00999      1e-3  ->  0.010    Inexact Rounded
-dqqua433 quantize   0.00999      1e-2  ->  0.01     Inexact Rounded
-dqqua434 quantize   0.00999      1e-1  ->  0.0      Inexact Rounded
-dqqua435 quantize   0.00999       1e0  ->  0        Inexact Rounded
-dqqua436 quantize   0.00999       1e1  -> 0E+1      Inexact Rounded
-
-dqqua440 quantize   0.000999     1e-5  ->  0.00100  Inexact Rounded
-dqqua441 quantize   0.000999     1e-4  ->  0.0010   Inexact Rounded
-dqqua442 quantize   0.000999     1e-3  ->  0.001    Inexact Rounded
-dqqua443 quantize   0.000999     1e-2  ->  0.00     Inexact Rounded
-dqqua444 quantize   0.000999     1e-1  ->  0.0      Inexact Rounded
-dqqua445 quantize   0.000999      1e0  ->  0        Inexact Rounded
-dqqua446 quantize   0.000999      1e1  -> 0E+1      Inexact Rounded
-
-dqqua1001 quantize  0.000        0.001 ->  0.000
-dqqua1002 quantize  0.001        0.001 ->  0.001
-dqqua1003 quantize  0.0012       0.001 ->  0.001     Inexact Rounded
-dqqua1004 quantize  0.0018       0.001 ->  0.002     Inexact Rounded
-dqqua1005 quantize  0.501        0.001 ->  0.501
-dqqua1006 quantize  0.5012       0.001 ->  0.501     Inexact Rounded
-dqqua1007 quantize  0.5018       0.001 ->  0.502     Inexact Rounded
-dqqua1008 quantize  0.999        0.001 ->  0.999
-
-dqqua481 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded
-dqqua482 quantize 1234567800  1e+1 -> 1.23456780E+9 Rounded
-dqqua483 quantize 1234567890  1e+1 -> 1.23456789E+9 Rounded
-dqqua484 quantize 1234567891  1e+1 -> 1.23456789E+9 Inexact Rounded
-dqqua485 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded
-dqqua486 quantize 1234567896  1e+1 -> 1.23456790E+9 Inexact Rounded
--- a potential double-round
-dqqua487 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded
-dqqua488 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded
-
-dqqua491 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded
-dqqua492 quantize 1234567800  1e+1 -> 1.23456780E+9 Rounded
-dqqua493 quantize 1234567890  1e+1 -> 1.23456789E+9 Rounded
-dqqua494 quantize 1234567891  1e+1 -> 1.23456789E+9 Inexact Rounded
-dqqua495 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded
-dqqua496 quantize 1234567896  1e+1 -> 1.23456790E+9 Inexact Rounded
-dqqua497 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded
-dqqua498 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded
-
--- Zeros
-dqqua500 quantize   0     1e1 ->  0E+1
-dqqua501 quantize   0     1e0 ->  0
-dqqua502 quantize   0    1e-1 ->  0.0
-dqqua503 quantize   0.0  1e-1 ->  0.0
-dqqua504 quantize   0.0   1e0 ->  0
-dqqua505 quantize   0.0  1e+1 ->  0E+1
-dqqua506 quantize   0E+1 1e-1 ->  0.0
-dqqua507 quantize   0E+1  1e0 ->  0
-dqqua508 quantize   0E+1 1e+1 ->  0E+1
-dqqua509 quantize  -0     1e1 -> -0E+1
-dqqua510 quantize  -0     1e0 -> -0
-dqqua511 quantize  -0    1e-1 -> -0.0
-dqqua512 quantize  -0.0  1e-1 -> -0.0
-dqqua513 quantize  -0.0   1e0 -> -0
-dqqua514 quantize  -0.0  1e+1 -> -0E+1
-dqqua515 quantize  -0E+1 1e-1 -> -0.0
-dqqua516 quantize  -0E+1  1e0 -> -0
-dqqua517 quantize  -0E+1 1e+1 -> -0E+1
--- #519 here once a problem
-dqqua518 quantize  0    0E-3  -> 0.000
-dqqua519 quantize  0    0E-33 -> 0E-33
-dqqua520 quantize  0.00000000000000000000000000000000   0E-33 -> 0E-33
-dqqua521 quantize  0.000000000000000000000000000000000  0E-33 -> 0E-33
-
--- Some non-zeros with lots of padding on the right
-dqqua523 quantize   1   0E-33 -> 1.000000000000000000000000000000000
-dqqua524 quantize  12   0E-32 -> 12.00000000000000000000000000000000
-dqqua525 quantize 123   0E-31 -> 123.0000000000000000000000000000000
-dqqua526 quantize 123   0E-32 -> NaN Invalid_operation
-dqqua527 quantize 123.4 0E-31 -> 123.4000000000000000000000000000000
-dqqua528 quantize 123.4 0E-32 -> NaN Invalid_operation
-
--- Suspicious RHS values
-dqqua530 quantize   1.234    1e359 -> 0E+359 Inexact Rounded
-dqqua531 quantize 123.456    1e359 -> 0E+359 Inexact Rounded
-dqqua532 quantize   1.234    1e359 -> 0E+359 Inexact Rounded
-dqqua533 quantize 123.456    1e359 -> 0E+359 Inexact Rounded
--- next four are "won't fit" overflows
-dqqua536 quantize   1.234   1e-299 -> NaN Invalid_operation
-dqqua537 quantize 123.456   1e-299 -> NaN Invalid_operation
-dqqua538 quantize   1.234   1e-299 -> NaN Invalid_operation
-dqqua539 quantize 123.456   1e-299 -> NaN Invalid_operation
-
-dqqua542 quantize   1.234E+299    1e299 -> 1E+299    Inexact Rounded
-dqqua543 quantize   1.234E+298    1e299 -> 0E+299    Inexact Rounded
-dqqua544 quantize   1.234         1e299 -> 0E+299    Inexact Rounded
-dqqua547 quantize   0            1e-299 -> 0E-299
--- next two are "won't fit" overflows
-dqqua548 quantize   1.234        1e-299 -> NaN Invalid_operation
-dqqua549 quantize   1.234        1e-300 -> NaN Invalid_operation
--- [more below]
-
--- Specials
-dqqua580 quantize  Inf    -Inf   ->  Infinity
-dqqua581 quantize  Inf  1e-299   ->  NaN  Invalid_operation
-dqqua582 quantize  Inf  1e-1     ->  NaN  Invalid_operation
-dqqua583 quantize  Inf   1e0     ->  NaN  Invalid_operation
-dqqua584 quantize  Inf   1e1     ->  NaN  Invalid_operation
-dqqua585 quantize  Inf   1e299   ->  NaN  Invalid_operation
-dqqua586 quantize  Inf     Inf   ->  Infinity
-dqqua587 quantize -1000    Inf   ->  NaN  Invalid_operation
-dqqua588 quantize -Inf     Inf   ->  -Infinity
-dqqua589 quantize -1       Inf   ->  NaN  Invalid_operation
-dqqua590 quantize  0       Inf   ->  NaN  Invalid_operation
-dqqua591 quantize  1       Inf   ->  NaN  Invalid_operation
-dqqua592 quantize  1000    Inf   ->  NaN  Invalid_operation
-dqqua593 quantize  Inf     Inf   ->  Infinity
-dqqua594 quantize  Inf  1e-0     ->  NaN  Invalid_operation
-dqqua595 quantize -0       Inf   ->  NaN  Invalid_operation
-
-dqqua600 quantize -Inf    -Inf   ->  -Infinity
-dqqua601 quantize -Inf  1e-299   ->  NaN  Invalid_operation
-dqqua602 quantize -Inf  1e-1     ->  NaN  Invalid_operation
-dqqua603 quantize -Inf   1e0     ->  NaN  Invalid_operation
-dqqua604 quantize -Inf   1e1     ->  NaN  Invalid_operation
-dqqua605 quantize -Inf   1e299   ->  NaN  Invalid_operation
-dqqua606 quantize -Inf     Inf   ->  -Infinity
-dqqua607 quantize -1000    Inf   ->  NaN  Invalid_operation
-dqqua608 quantize -Inf    -Inf   ->  -Infinity
-dqqua609 quantize -1      -Inf   ->  NaN  Invalid_operation
-dqqua610 quantize  0      -Inf   ->  NaN  Invalid_operation
-dqqua611 quantize  1      -Inf   ->  NaN  Invalid_operation
-dqqua612 quantize  1000   -Inf   ->  NaN  Invalid_operation
-dqqua613 quantize  Inf    -Inf   ->  Infinity
-dqqua614 quantize -Inf  1e-0     ->  NaN  Invalid_operation
-dqqua615 quantize -0      -Inf   ->  NaN  Invalid_operation
-
-dqqua621 quantize  NaN   -Inf    ->  NaN
-dqqua622 quantize  NaN 1e-299    ->  NaN
-dqqua623 quantize  NaN 1e-1      ->  NaN
-dqqua624 quantize  NaN  1e0      ->  NaN
-dqqua625 quantize  NaN  1e1      ->  NaN
-dqqua626 quantize  NaN  1e299    ->  NaN
-dqqua627 quantize  NaN    Inf    ->  NaN
-dqqua628 quantize  NaN    NaN    ->  NaN
-dqqua629 quantize -Inf    NaN    ->  NaN
-dqqua630 quantize -1000   NaN    ->  NaN
-dqqua631 quantize -1      NaN    ->  NaN
-dqqua632 quantize  0      NaN    ->  NaN
-dqqua633 quantize  1      NaN    ->  NaN
-dqqua634 quantize  1000   NaN    ->  NaN
-dqqua635 quantize  Inf    NaN    ->  NaN
-dqqua636 quantize  NaN 1e-0      ->  NaN
-dqqua637 quantize -0      NaN    ->  NaN
-
-dqqua641 quantize  sNaN   -Inf   ->  NaN  Invalid_operation
-dqqua642 quantize  sNaN 1e-299   ->  NaN  Invalid_operation
-dqqua643 quantize  sNaN 1e-1     ->  NaN  Invalid_operation
-dqqua644 quantize  sNaN  1e0     ->  NaN  Invalid_operation
-dqqua645 quantize  sNaN  1e1     ->  NaN  Invalid_operation
-dqqua646 quantize  sNaN  1e299   ->  NaN  Invalid_operation
-dqqua647 quantize  sNaN    NaN   ->  NaN  Invalid_operation
-dqqua648 quantize  sNaN   sNaN   ->  NaN  Invalid_operation
-dqqua649 quantize  NaN    sNaN   ->  NaN  Invalid_operation
-dqqua650 quantize -Inf    sNaN   ->  NaN  Invalid_operation
-dqqua651 quantize -1000   sNaN   ->  NaN  Invalid_operation
-dqqua652 quantize -1      sNaN   ->  NaN  Invalid_operation
-dqqua653 quantize  0      sNaN   ->  NaN  Invalid_operation
-dqqua654 quantize  1      sNaN   ->  NaN  Invalid_operation
-dqqua655 quantize  1000   sNaN   ->  NaN  Invalid_operation
-dqqua656 quantize  Inf    sNaN   ->  NaN  Invalid_operation
-dqqua657 quantize  NaN    sNaN   ->  NaN  Invalid_operation
-dqqua658 quantize  sNaN 1e-0     ->  NaN  Invalid_operation
-dqqua659 quantize -0      sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqqua661 quantize  NaN9 -Inf   ->  NaN9
-dqqua662 quantize  NaN8  919   ->  NaN8
-dqqua663 quantize  NaN71 Inf   ->  NaN71
-dqqua664 quantize  NaN6  NaN5  ->  NaN6
-dqqua665 quantize -Inf   NaN4  ->  NaN4
-dqqua666 quantize -919   NaN31 ->  NaN31
-dqqua667 quantize  Inf   NaN2  ->  NaN2
-
-dqqua671 quantize  sNaN99 -Inf    ->  NaN99 Invalid_operation
-dqqua672 quantize  sNaN98 -11     ->  NaN98 Invalid_operation
-dqqua673 quantize  sNaN97  NaN    ->  NaN97 Invalid_operation
-dqqua674 quantize  sNaN16 sNaN94  ->  NaN16 Invalid_operation
-dqqua675 quantize  NaN95  sNaN93  ->  NaN93 Invalid_operation
-dqqua676 quantize -Inf    sNaN92  ->  NaN92 Invalid_operation
-dqqua677 quantize  088    sNaN91  ->  NaN91 Invalid_operation
-dqqua678 quantize  Inf    sNaN90  ->  NaN90 Invalid_operation
-dqqua679 quantize  NaN    sNaN88  ->  NaN88 Invalid_operation
-
-dqqua681 quantize -NaN9 -Inf   -> -NaN9
-dqqua682 quantize -NaN8  919   -> -NaN8
-dqqua683 quantize -NaN71 Inf   -> -NaN71
-dqqua684 quantize -NaN6 -NaN5  -> -NaN6
-dqqua685 quantize -Inf  -NaN4  -> -NaN4
-dqqua686 quantize -919  -NaN31 -> -NaN31
-dqqua687 quantize  Inf  -NaN2  -> -NaN2
-
-dqqua691 quantize -sNaN99 -Inf    -> -NaN99 Invalid_operation
-dqqua692 quantize -sNaN98 -11     -> -NaN98 Invalid_operation
-dqqua693 quantize -sNaN97  NaN    -> -NaN97 Invalid_operation
-dqqua694 quantize -sNaN16 sNaN94  -> -NaN16 Invalid_operation
-dqqua695 quantize -NaN95 -sNaN93  -> -NaN93 Invalid_operation
-dqqua696 quantize -Inf   -sNaN92  -> -NaN92 Invalid_operation
-dqqua697 quantize  088   -sNaN91  -> -NaN91 Invalid_operation
-dqqua698 quantize  Inf   -sNaN90  -> -NaN90 Invalid_operation
-dqqua699 quantize  NaN   -sNaN88  -> -NaN88 Invalid_operation
-
--- subnormals and underflow
-dqqua710 quantize  1.00E-6143   1e-6143  ->   1E-6143   Rounded
-dqqua711 quantize  0.1E-6143    2e-6144  ->   1E-6144   Subnormal
-dqqua712 quantize  0.10E-6143   3e-6144  ->   1E-6144   Subnormal Rounded
-dqqua713 quantize  0.100E-6143  4e-6144  ->   1E-6144   Subnormal Rounded
-dqqua714 quantize  0.01E-6143   5e-6145  ->   1E-6145   Subnormal
--- next is rounded to Emin
-dqqua715 quantize  0.999E-6143  1e-6143  ->   1E-6143   Inexact Rounded
-dqqua716 quantize  0.099E-6143 10e-6144  ->   1E-6144   Inexact Rounded Subnormal
-
-dqqua717 quantize  0.009E-6143  1e-6145  ->   1E-6145   Inexact Rounded Subnormal
-dqqua718 quantize  0.001E-6143  1e-6145  ->   0E-6145   Inexact Rounded
-dqqua719 quantize  0.0009E-6143 1e-6145  ->   0E-6145   Inexact Rounded
-dqqua720 quantize  0.0001E-6143 1e-6145  ->   0E-6145   Inexact Rounded
-
-dqqua730 quantize -1.00E-6143   1e-6143  ->  -1E-6143     Rounded
-dqqua731 quantize -0.1E-6143    1e-6143  ->  -0E-6143     Rounded Inexact
-dqqua732 quantize -0.10E-6143   1e-6143  ->  -0E-6143     Rounded Inexact
-dqqua733 quantize -0.100E-6143  1e-6143  ->  -0E-6143     Rounded Inexact
-dqqua734 quantize -0.01E-6143   1e-6143  ->  -0E-6143     Inexact Rounded
--- next is rounded to Emin
-dqqua735 quantize -0.999E-6143 90e-6143  ->  -1E-6143     Inexact Rounded
-dqqua736 quantize -0.099E-6143 -1e-6143  ->  -0E-6143     Inexact Rounded
-dqqua737 quantize -0.009E-6143 -1e-6143  ->  -0E-6143     Inexact Rounded
-dqqua738 quantize -0.001E-6143 -0e-6143  ->  -0E-6143     Inexact Rounded
-dqqua739 quantize -0.0001E-6143 0e-6143  ->  -0E-6143     Inexact Rounded
-
-dqqua740 quantize -1.00E-6143   1e-6144 ->  -1.0E-6143   Rounded
-dqqua741 quantize -0.1E-6143    1e-6144 ->  -1E-6144    Subnormal
-dqqua742 quantize -0.10E-6143   1e-6144 ->  -1E-6144    Subnormal Rounded
-dqqua743 quantize -0.100E-6143  1e-6144 ->  -1E-6144    Subnormal Rounded
-dqqua744 quantize -0.01E-6143   1e-6144 ->  -0E-6144    Inexact Rounded
--- next is rounded to Emin
-dqqua745 quantize -0.999E-6143  1e-6144 ->  -1.0E-6143   Inexact Rounded
-dqqua746 quantize -0.099E-6143  1e-6144 ->  -1E-6144    Inexact Rounded Subnormal
-dqqua747 quantize -0.009E-6143  1e-6144 ->  -0E-6144    Inexact Rounded
-dqqua748 quantize -0.001E-6143  1e-6144 ->  -0E-6144    Inexact Rounded
-dqqua749 quantize -0.0001E-6143 1e-6144 ->  -0E-6144    Inexact Rounded
-
-dqqua750 quantize -1.00E-6143   1e-6145 ->  -1.00E-6143
-dqqua751 quantize -0.1E-6143    1e-6145 ->  -1.0E-6144  Subnormal
-dqqua752 quantize -0.10E-6143   1e-6145 ->  -1.0E-6144  Subnormal
-dqqua753 quantize -0.100E-6143  1e-6145 ->  -1.0E-6144  Subnormal Rounded
-dqqua754 quantize -0.01E-6143   1e-6145 ->  -1E-6145    Subnormal
--- next is rounded to Emin
-dqqua755 quantize -0.999E-6143  1e-6145 ->  -1.00E-6143  Inexact Rounded
-dqqua756 quantize -0.099E-6143  1e-6145 ->  -1.0E-6144  Inexact Rounded Subnormal
-dqqua757 quantize -0.009E-6143  1e-6145 ->  -1E-6145    Inexact Rounded Subnormal
-dqqua758 quantize -0.001E-6143  1e-6145 ->  -0E-6145    Inexact Rounded
-dqqua759 quantize -0.0001E-6143 1e-6145 ->  -0E-6145    Inexact Rounded
-
-dqqua760 quantize -1.00E-6143   1e-6146 ->  -1.000E-6143
-dqqua761 quantize -0.1E-6143    1e-6146 ->  -1.00E-6144  Subnormal
-dqqua762 quantize -0.10E-6143   1e-6146 ->  -1.00E-6144  Subnormal
-dqqua763 quantize -0.100E-6143  1e-6146 ->  -1.00E-6144  Subnormal
-dqqua764 quantize -0.01E-6143   1e-6146 ->  -1.0E-6145   Subnormal
-dqqua765 quantize -0.999E-6143  1e-6146 ->  -9.99E-6144  Subnormal
-dqqua766 quantize -0.099E-6143  1e-6146 ->  -9.9E-6145   Subnormal
-dqqua767 quantize -0.009E-6143  1e-6146 ->  -9E-6146     Subnormal
-dqqua768 quantize -0.001E-6143  1e-6146 ->  -1E-6146     Subnormal
-dqqua769 quantize -0.0001E-6143 1e-6146 ->  -0E-6146     Inexact Rounded
-
--- More from Fung Lee
--- the next four would appear to be in error, but they are misleading (the
--- operands will be clamped to a lower exponent) and so are omitted
--- dqqua1021 quantize  8.666666666666000E+6144  1.000000000000000E+6144 ->  8.666666666666000000000000000000000E+6144  Clamped
--- dqqua1022 quantize -8.666666666666000E+6144  1.000000000000000E+6144 -> -8.666666666666000000000000000000000E+6144  Clamped
--- dqqua1027 quantize 8.666666666666000E+323  1E+31    -> NaN Invalid_operation
--- dqqua1030 quantize 8.66666666E+3           1E+3     -> 9E+3 Inexact Rounded
-
--- Int and uInt32 edge values for testing conversions
-dqqua1040 quantize -2147483646     0 -> -2147483646
-dqqua1041 quantize -2147483647     0 -> -2147483647
-dqqua1042 quantize -2147483648     0 -> -2147483648
-dqqua1043 quantize -2147483649     0 -> -2147483649
-dqqua1044 quantize  2147483646     0 ->  2147483646
-dqqua1045 quantize  2147483647     0 ->  2147483647
-dqqua1046 quantize  2147483648     0 ->  2147483648
-dqqua1047 quantize  2147483649     0 ->  2147483649
-dqqua1048 quantize  4294967294     0 ->  4294967294
-dqqua1049 quantize  4294967295     0 ->  4294967295
-dqqua1050 quantize  4294967296     0 ->  4294967296
-dqqua1051 quantize  4294967297     0 ->  4294967297
-
--- Rounding swathe
-rounding: half_even
-dqqua1100 quantize  1.2300    1.00    ->  1.23  Rounded
-dqqua1101 quantize  1.2301    1.00    ->  1.23  Inexact Rounded
-dqqua1102 quantize  1.2310    1.00    ->  1.23  Inexact Rounded
-dqqua1103 quantize  1.2350    1.00    ->  1.24  Inexact Rounded
-dqqua1104 quantize  1.2351    1.00    ->  1.24  Inexact Rounded
-dqqua1105 quantize  1.2450    1.00    ->  1.24  Inexact Rounded
-dqqua1106 quantize  1.2451    1.00    ->  1.25  Inexact Rounded
-dqqua1107 quantize  1.2360    1.00    ->  1.24  Inexact Rounded
-dqqua1108 quantize  1.2370    1.00    ->  1.24  Inexact Rounded
-dqqua1109 quantize  1.2399    1.00    ->  1.24  Inexact Rounded
-
-rounding: half_up
-dqqua1200 quantize  1.2300    1.00    ->  1.23  Rounded
-dqqua1201 quantize  1.2301    1.00    ->  1.23  Inexact Rounded
-dqqua1202 quantize  1.2310    1.00    ->  1.23  Inexact Rounded
-dqqua1203 quantize  1.2350    1.00    ->  1.24  Inexact Rounded
-dqqua1204 quantize  1.2351    1.00    ->  1.24  Inexact Rounded
-dqqua1205 quantize  1.2450    1.00    ->  1.25  Inexact Rounded
-dqqua1206 quantize  1.2451    1.00    ->  1.25  Inexact Rounded
-dqqua1207 quantize  1.2360    1.00    ->  1.24  Inexact Rounded
-dqqua1208 quantize  1.2370    1.00    ->  1.24  Inexact Rounded
-dqqua1209 quantize  1.2399    1.00    ->  1.24  Inexact Rounded
-
-rounding: half_down
-dqqua1300 quantize  1.2300    1.00    ->  1.23  Rounded
-dqqua1301 quantize  1.2301    1.00    ->  1.23  Inexact Rounded
-dqqua1302 quantize  1.2310    1.00    ->  1.23  Inexact Rounded
-dqqua1303 quantize  1.2350    1.00    ->  1.23  Inexact Rounded
-dqqua1304 quantize  1.2351    1.00    ->  1.24  Inexact Rounded
-dqqua1305 quantize  1.2450    1.00    ->  1.24  Inexact Rounded
-dqqua1306 quantize  1.2451    1.00    ->  1.25  Inexact Rounded
-dqqua1307 quantize  1.2360    1.00    ->  1.24  Inexact Rounded
-dqqua1308 quantize  1.2370    1.00    ->  1.24  Inexact Rounded
-dqqua1309 quantize  1.2399    1.00    ->  1.24  Inexact Rounded
-
-rounding: up
-dqqua1400 quantize  1.2300    1.00    ->  1.23  Rounded
-dqqua1401 quantize  1.2301    1.00    ->  1.24  Inexact Rounded
-dqqua1402 quantize  1.2310    1.00    ->  1.24  Inexact Rounded
-dqqua1403 quantize  1.2350    1.00    ->  1.24  Inexact Rounded
-dqqua1404 quantize  1.2351    1.00    ->  1.24  Inexact Rounded
-dqqua1405 quantize  1.2450    1.00    ->  1.25  Inexact Rounded
-dqqua1406 quantize  1.2451    1.00    ->  1.25  Inexact Rounded
-dqqua1407 quantize  1.2360    1.00    ->  1.24  Inexact Rounded
-dqqua1408 quantize  1.2370    1.00    ->  1.24  Inexact Rounded
-dqqua1409 quantize  1.2399    1.00    ->  1.24  Inexact Rounded
-dqqua1411 quantize -1.2399    1.00    -> -1.24  Inexact Rounded
-
-rounding: down
-dqqua1500 quantize  1.2300    1.00    ->  1.23  Rounded
-dqqua1501 quantize  1.2301    1.00    ->  1.23  Inexact Rounded
-dqqua1502 quantize  1.2310    1.00    ->  1.23  Inexact Rounded
-dqqua1503 quantize  1.2350    1.00    ->  1.23  Inexact Rounded
-dqqua1504 quantize  1.2351    1.00    ->  1.23  Inexact Rounded
-dqqua1505 quantize  1.2450    1.00    ->  1.24  Inexact Rounded
-dqqua1506 quantize  1.2451    1.00    ->  1.24  Inexact Rounded
-dqqua1507 quantize  1.2360    1.00    ->  1.23  Inexact Rounded
-dqqua1508 quantize  1.2370    1.00    ->  1.23  Inexact Rounded
-dqqua1509 quantize  1.2399    1.00    ->  1.23  Inexact Rounded
-dqqua1511 quantize -1.2399    1.00    -> -1.23  Inexact Rounded
-
-rounding: ceiling
-dqqua1600 quantize  1.2300    1.00    ->  1.23  Rounded
-dqqua1601 quantize  1.2301    1.00    ->  1.24  Inexact Rounded
-dqqua1602 quantize  1.2310    1.00    ->  1.24  Inexact Rounded
-dqqua1603 quantize  1.2350    1.00    ->  1.24  Inexact Rounded
-dqqua1604 quantize  1.2351    1.00    ->  1.24  Inexact Rounded
-dqqua1605 quantize  1.2450    1.00    ->  1.25  Inexact Rounded
-dqqua1606 quantize  1.2451    1.00    ->  1.25  Inexact Rounded
-dqqua1607 quantize  1.2360    1.00    ->  1.24  Inexact Rounded
-dqqua1608 quantize  1.2370    1.00    ->  1.24  Inexact Rounded
-dqqua1609 quantize  1.2399    1.00    ->  1.24  Inexact Rounded
-dqqua1611 quantize -1.2399    1.00    -> -1.23  Inexact Rounded
-
-rounding: floor
-dqqua1700 quantize  1.2300    1.00    ->  1.23  Rounded
-dqqua1701 quantize  1.2301    1.00    ->  1.23  Inexact Rounded
-dqqua1702 quantize  1.2310    1.00    ->  1.23  Inexact Rounded
-dqqua1703 quantize  1.2350    1.00    ->  1.23  Inexact Rounded
-dqqua1704 quantize  1.2351    1.00    ->  1.23  Inexact Rounded
-dqqua1705 quantize  1.2450    1.00    ->  1.24  Inexact Rounded
-dqqua1706 quantize  1.2451    1.00    ->  1.24  Inexact Rounded
-dqqua1707 quantize  1.2360    1.00    ->  1.23  Inexact Rounded
-dqqua1708 quantize  1.2370    1.00    ->  1.23  Inexact Rounded
-dqqua1709 quantize  1.2399    1.00    ->  1.23  Inexact Rounded
-dqqua1711 quantize -1.2399    1.00    -> -1.24  Inexact Rounded
-
-rounding: 05up
-dqqua1800 quantize  1.2000    1.00    ->  1.20  Rounded
-dqqua1801 quantize  1.2001    1.00    ->  1.21  Inexact Rounded
-dqqua1802 quantize  1.2010    1.00    ->  1.21  Inexact Rounded
-dqqua1803 quantize  1.2050    1.00    ->  1.21  Inexact Rounded
-dqqua1804 quantize  1.2051    1.00    ->  1.21  Inexact Rounded
-dqqua1807 quantize  1.2060    1.00    ->  1.21  Inexact Rounded
-dqqua1808 quantize  1.2070    1.00    ->  1.21  Inexact Rounded
-dqqua1809 quantize  1.2099    1.00    ->  1.21  Inexact Rounded
-dqqua1811 quantize -1.2099    1.00    -> -1.21  Inexact Rounded
-
-dqqua1900 quantize  1.2100    1.00    ->  1.21  Rounded
-dqqua1901 quantize  1.2101    1.00    ->  1.21  Inexact Rounded
-dqqua1902 quantize  1.2110    1.00    ->  1.21  Inexact Rounded
-dqqua1903 quantize  1.2150    1.00    ->  1.21  Inexact Rounded
-dqqua1904 quantize  1.2151    1.00    ->  1.21  Inexact Rounded
-dqqua1907 quantize  1.2160    1.00    ->  1.21  Inexact Rounded
-dqqua1908 quantize  1.2170    1.00    ->  1.21  Inexact Rounded
-dqqua1909 quantize  1.2199    1.00    ->  1.21  Inexact Rounded
-dqqua1911 quantize -1.2199    1.00    -> -1.21  Inexact Rounded
-
-dqqua2000 quantize  1.2400    1.00    ->  1.24  Rounded
-dqqua2001 quantize  1.2401    1.00    ->  1.24  Inexact Rounded
-dqqua2002 quantize  1.2410    1.00    ->  1.24  Inexact Rounded
-dqqua2003 quantize  1.2450    1.00    ->  1.24  Inexact Rounded
-dqqua2004 quantize  1.2451    1.00    ->  1.24  Inexact Rounded
-dqqua2007 quantize  1.2460    1.00    ->  1.24  Inexact Rounded
-dqqua2008 quantize  1.2470    1.00    ->  1.24  Inexact Rounded
-dqqua2009 quantize  1.2499    1.00    ->  1.24  Inexact Rounded
-dqqua2011 quantize -1.2499    1.00    -> -1.24  Inexact Rounded
-
-dqqua2100 quantize  1.2500    1.00    ->  1.25  Rounded
-dqqua2101 quantize  1.2501    1.00    ->  1.26  Inexact Rounded
-dqqua2102 quantize  1.2510    1.00    ->  1.26  Inexact Rounded
-dqqua2103 quantize  1.2550    1.00    ->  1.26  Inexact Rounded
-dqqua2104 quantize  1.2551    1.00    ->  1.26  Inexact Rounded
-dqqua2107 quantize  1.2560    1.00    ->  1.26  Inexact Rounded
-dqqua2108 quantize  1.2570    1.00    ->  1.26  Inexact Rounded
-dqqua2109 quantize  1.2599    1.00    ->  1.26  Inexact Rounded
-dqqua2111 quantize -1.2599    1.00    -> -1.26  Inexact Rounded
-
-dqqua2200 quantize  1.2600    1.00    ->  1.26  Rounded
-dqqua2201 quantize  1.2601    1.00    ->  1.26  Inexact Rounded
-dqqua2202 quantize  1.2610    1.00    ->  1.26  Inexact Rounded
-dqqua2203 quantize  1.2650    1.00    ->  1.26  Inexact Rounded
-dqqua2204 quantize  1.2651    1.00    ->  1.26  Inexact Rounded
-dqqua2207 quantize  1.2660    1.00    ->  1.26  Inexact Rounded
-dqqua2208 quantize  1.2670    1.00    ->  1.26  Inexact Rounded
-dqqua2209 quantize  1.2699    1.00    ->  1.26  Inexact Rounded
-dqqua2211 quantize -1.2699    1.00    -> -1.26  Inexact Rounded
-
-dqqua2300 quantize  1.2900    1.00    ->  1.29  Rounded
-dqqua2301 quantize  1.2901    1.00    ->  1.29  Inexact Rounded
-dqqua2302 quantize  1.2910    1.00    ->  1.29  Inexact Rounded
-dqqua2303 quantize  1.2950    1.00    ->  1.29  Inexact Rounded
-dqqua2304 quantize  1.2951    1.00    ->  1.29  Inexact Rounded
-dqqua2307 quantize  1.2960    1.00    ->  1.29  Inexact Rounded
-dqqua2308 quantize  1.2970    1.00    ->  1.29  Inexact Rounded
-dqqua2309 quantize  1.2999    1.00    ->  1.29  Inexact Rounded
-dqqua2311 quantize -1.2999    1.00    -> -1.29  Inexact Rounded
-
--- Null tests
-dqqua998 quantize 10    # -> NaN Invalid_operation
-dqqua999 quantize  # 1e10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqReduce.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqReduce.decTest
deleted file mode 100644
index 236574f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqReduce.decTest
+++ /dev/null
@@ -1,183 +0,0 @@
-------------------------------------------------------------------------
--- dqReduce.decTest -- remove trailing zeros from a decQuad           --
--- Copyright (c) IBM Corporation, 2003, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
-dqred001 reduce '1'      -> '1'
-dqred002 reduce '-1'     -> '-1'
-dqred003 reduce '1.00'   -> '1'
-dqred004 reduce '-1.00'  -> '-1'
-dqred005 reduce '0'      -> '0'
-dqred006 reduce '0.00'   -> '0'
-dqred007 reduce '00.0'   -> '0'
-dqred008 reduce '00.00'  -> '0'
-dqred009 reduce '00'     -> '0'
-dqred010 reduce '0E+1'   -> '0'
-dqred011 reduce '0E+5'   -> '0'
-
-dqred012 reduce '-2'     -> '-2'
-dqred013 reduce '2'      -> '2'
-dqred014 reduce '-2.00'  -> '-2'
-dqred015 reduce '2.00'   -> '2'
-dqred016 reduce '-0'     -> '-0'
-dqred017 reduce '-0.00'  -> '-0'
-dqred018 reduce '-00.0'  -> '-0'
-dqred019 reduce '-00.00' -> '-0'
-dqred020 reduce '-00'    -> '-0'
-dqred021 reduce '-0E+5'   -> '-0'
-dqred022 reduce '-0E+1'  -> '-0'
-
-dqred030 reduce '+0.1'            -> '0.1'
-dqred031 reduce '-0.1'            -> '-0.1'
-dqred032 reduce '+0.01'           -> '0.01'
-dqred033 reduce '-0.01'           -> '-0.01'
-dqred034 reduce '+0.001'          -> '0.001'
-dqred035 reduce '-0.001'          -> '-0.001'
-dqred036 reduce '+0.000001'       -> '0.000001'
-dqred037 reduce '-0.000001'       -> '-0.000001'
-dqred038 reduce '+0.000000000001' -> '1E-12'
-dqred039 reduce '-0.000000000001' -> '-1E-12'
-
-dqred041 reduce 1.1        -> 1.1
-dqred042 reduce 1.10       -> 1.1
-dqred043 reduce 1.100      -> 1.1
-dqred044 reduce 1.110      -> 1.11
-dqred045 reduce -1.1       -> -1.1
-dqred046 reduce -1.10      -> -1.1
-dqred047 reduce -1.100     -> -1.1
-dqred048 reduce -1.110     -> -1.11
-dqred049 reduce 9.9        -> 9.9
-dqred050 reduce 9.90       -> 9.9
-dqred051 reduce 9.900      -> 9.9
-dqred052 reduce 9.990      -> 9.99
-dqred053 reduce -9.9       -> -9.9
-dqred054 reduce -9.90      -> -9.9
-dqred055 reduce -9.900     -> -9.9
-dqred056 reduce -9.990     -> -9.99
-
--- some trailing fractional zeros with zeros in units
-dqred060 reduce  10.0        -> 1E+1
-dqred061 reduce  10.00       -> 1E+1
-dqred062 reduce  100.0       -> 1E+2
-dqred063 reduce  100.00      -> 1E+2
-dqred064 reduce  1.1000E+3   -> 1.1E+3
-dqred065 reduce  1.10000E+3  -> 1.1E+3
-dqred066 reduce -10.0        -> -1E+1
-dqred067 reduce -10.00       -> -1E+1
-dqred068 reduce -100.0       -> -1E+2
-dqred069 reduce -100.00      -> -1E+2
-dqred070 reduce -1.1000E+3   -> -1.1E+3
-dqred071 reduce -1.10000E+3  -> -1.1E+3
-
--- some insignificant trailing zeros with positive exponent
-dqred080 reduce  10E+1       -> 1E+2
-dqred081 reduce  100E+1      -> 1E+3
-dqred082 reduce  1.0E+2      -> 1E+2
-dqred083 reduce  1.0E+3      -> 1E+3
-dqred084 reduce  1.1E+3      -> 1.1E+3
-dqred085 reduce  1.00E+3     -> 1E+3
-dqred086 reduce  1.10E+3     -> 1.1E+3
-dqred087 reduce -10E+1       -> -1E+2
-dqred088 reduce -100E+1      -> -1E+3
-dqred089 reduce -1.0E+2      -> -1E+2
-dqred090 reduce -1.0E+3      -> -1E+3
-dqred091 reduce -1.1E+3      -> -1.1E+3
-dqred092 reduce -1.00E+3     -> -1E+3
-dqred093 reduce -1.10E+3     -> -1.1E+3
-
--- some significant trailing zeros, were we to be trimming
-dqred100 reduce  11          -> 11
-dqred101 reduce  10          -> 1E+1
-dqred102 reduce  10.         -> 1E+1
-dqred103 reduce  1.1E+1      -> 11
-dqred104 reduce  1.0E+1      -> 1E+1
-dqred105 reduce  1.10E+2     -> 1.1E+2
-dqred106 reduce  1.00E+2     -> 1E+2
-dqred107 reduce  1.100E+3    -> 1.1E+3
-dqred108 reduce  1.000E+3    -> 1E+3
-dqred109 reduce  1.000000E+6 -> 1E+6
-dqred110 reduce -11          -> -11
-dqred111 reduce -10          -> -1E+1
-dqred112 reduce -10.         -> -1E+1
-dqred113 reduce -1.1E+1      -> -11
-dqred114 reduce -1.0E+1      -> -1E+1
-dqred115 reduce -1.10E+2     -> -1.1E+2
-dqred116 reduce -1.00E+2     -> -1E+2
-dqred117 reduce -1.100E+3    -> -1.1E+3
-dqred118 reduce -1.000E+3    -> -1E+3
-dqred119 reduce -1.00000E+5  -> -1E+5
-dqred120 reduce -1.000000E+6 -> -1E+6
-dqred121 reduce -10.00000E+6 -> -1E+7
-dqred122 reduce -100.0000E+6 -> -1E+8
-dqred123 reduce -1000.000E+6 -> -1E+9
-dqred124 reduce -10000.00E+6 -> -1E+10
-dqred125 reduce -100000.0E+6 -> -1E+11
-dqred126 reduce -1000000.E+6 -> -1E+12
-
--- examples from decArith
-dqred140 reduce '2.1'     ->  '2.1'
-dqred141 reduce '-2.0'    ->  '-2'
-dqred142 reduce '1.200'   ->  '1.2'
-dqred143 reduce '-120'    ->  '-1.2E+2'
-dqred144 reduce '120.00'  ->  '1.2E+2'
-dqred145 reduce '0.00'    ->  '0'
-
--- Nmax, Nmin, Ntiny
--- note origami effect on some of these
-dqred151 reduce  9.999999999999999999999999999999999E+6144   -> 9.999999999999999999999999999999999E+6144
-dqred152 reduce  9.999999999999999999999999000000000E+6140   -> 9.99999999999999999999999900000E+6140
-dqred153 reduce  9.999999999999999999999999999990000E+6144   -> 9.999999999999999999999999999990000E+6144
-dqred154 reduce  1E-6143                   -> 1E-6143
-dqred155 reduce  1.000000000000000000000000000000000E-6143   -> 1E-6143
-dqred156 reduce  2.000E-6173               -> 2E-6173   Subnormal
-dqred157 reduce  1E-6176                   -> 1E-6176   Subnormal
-
-dqred161 reduce  -1E-6176                  -> -1E-6176  Subnormal
-dqred162 reduce  -2.000E-6173              -> -2E-6173  Subnormal
-dqred163 reduce  -1.000000000000000000000000000000000E-6143  -> -1E-6143
-dqred164 reduce  -1E-6143                  -> -1E-6143
-dqred165 reduce  -9.999999999999999999999999000000000E+6140  -> -9.99999999999999999999999900000E+6140
-dqred166 reduce  -9.999999999999999999999999999990000E+6144  -> -9.999999999999999999999999999990000E+6144
-dqred167 reduce  -9.999999999999999999999999999999990E+6144  -> -9.999999999999999999999999999999990E+6144
-dqred168 reduce  -9.999999999999999999999999999999999E+6144  -> -9.999999999999999999999999999999999E+6144
-dqred169 reduce  -9.999999999999999999999999999999990E+6144  -> -9.999999999999999999999999999999990E+6144
-
-
--- specials (reduce does not affect payload)
-dqred820 reduce 'Inf'    -> 'Infinity'
-dqred821 reduce '-Inf'   -> '-Infinity'
-dqred822 reduce   NaN    ->  NaN
-dqred823 reduce  sNaN    ->  NaN    Invalid_operation
-dqred824 reduce   NaN101 ->  NaN101
-dqred825 reduce  sNaN010 ->  NaN10  Invalid_operation
-dqred827 reduce  -NaN    -> -NaN
-dqred828 reduce -sNaN    -> -NaN    Invalid_operation
-dqred829 reduce  -NaN101 -> -NaN101
-dqred830 reduce -sNaN010 -> -NaN10  Invalid_operation
-
--- Null test
-dqred900 reduce  # -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRemainder.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRemainder.decTest
deleted file mode 100644
index bae8eae..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRemainder.decTest
+++ /dev/null
@@ -1,597 +0,0 @@
-------------------------------------------------------------------------
--- dqRemainder.decTest -- decQuad remainder                           --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- sanity checks (as base, above)
-dqrem001 remainder  1     1    ->  0
-dqrem002 remainder  2     1    ->  0
-dqrem003 remainder  1     2    ->  1
-dqrem004 remainder  2     2    ->  0
-dqrem005 remainder  0     1    ->  0
-dqrem006 remainder  0     2    ->  0
-dqrem007 remainder  1     3    ->  1
-dqrem008 remainder  2     3    ->  2
-dqrem009 remainder  3     3    ->  0
-
-dqrem010 remainder  2.4   1    ->  0.4
-dqrem011 remainder  2.4   -1   ->  0.4
-dqrem012 remainder  -2.4  1    ->  -0.4
-dqrem013 remainder  -2.4  -1   ->  -0.4
-dqrem014 remainder  2.40  1    ->  0.40
-dqrem015 remainder  2.400 1    ->  0.400
-dqrem016 remainder  2.4   2    ->  0.4
-dqrem017 remainder  2.400 2    ->  0.400
-dqrem018 remainder  2.    2    ->  0
-dqrem019 remainder  20    20   ->  0
-
-dqrem020 remainder  187   187    ->  0
-dqrem021 remainder  5     2      ->  1
-dqrem022 remainder  5     2.0    ->  1.0
-dqrem023 remainder  5     2.000  ->  1.000
-dqrem024 remainder  5     0.200  ->  0.000
-dqrem025 remainder  5     0.200  ->  0.000
-
-dqrem030 remainder  1     2      ->  1
-dqrem031 remainder  1     4      ->  1
-dqrem032 remainder  1     8      ->  1
-
-dqrem033 remainder  1     16     ->  1
-dqrem034 remainder  1     32     ->  1
-dqrem035 remainder  1     64     ->  1
-dqrem040 remainder  1    -2      ->  1
-dqrem041 remainder  1    -4      ->  1
-dqrem042 remainder  1    -8      ->  1
-dqrem043 remainder  1    -16     ->  1
-dqrem044 remainder  1    -32     ->  1
-dqrem045 remainder  1    -64     ->  1
-dqrem050 remainder -1     2      ->  -1
-dqrem051 remainder -1     4      ->  -1
-dqrem052 remainder -1     8      ->  -1
-dqrem053 remainder -1     16     ->  -1
-dqrem054 remainder -1     32     ->  -1
-dqrem055 remainder -1     64     ->  -1
-dqrem060 remainder -1    -2      ->  -1
-dqrem061 remainder -1    -4      ->  -1
-dqrem062 remainder -1    -8      ->  -1
-dqrem063 remainder -1    -16     ->  -1
-dqrem064 remainder -1    -32     ->  -1
-dqrem065 remainder -1    -64     ->  -1
-
-dqrem066 remainder  999999999     1  -> 0
-dqrem067 remainder  999999999.4   1  -> 0.4
-dqrem068 remainder  999999999.5   1  -> 0.5
-dqrem069 remainder  999999999.9   1  -> 0.9
-dqrem070 remainder  999999999.999 1  -> 0.999
-dqrem071 remainder  999999.999999 1  -> 0.999999
-dqrem072 remainder  9             1  -> 0
-
-dqrem080 remainder  0.            1  -> 0
-dqrem081 remainder  .0            1  -> 0.0
-dqrem082 remainder  0.00          1  -> 0.00
-dqrem083 remainder  0.00E+9       1  -> 0
-dqrem084 remainder  0.00E+3       1  -> 0
-dqrem085 remainder  0.00E+2       1  -> 0
-dqrem086 remainder  0.00E+1       1  -> 0.0
-dqrem087 remainder  0.00E+0       1  -> 0.00
-dqrem088 remainder  0.00E-0       1  -> 0.00
-dqrem089 remainder  0.00E-1       1  -> 0.000
-dqrem090 remainder  0.00E-2       1  -> 0.0000
-dqrem091 remainder  0.00E-3       1  -> 0.00000
-dqrem092 remainder  0.00E-4       1  -> 0.000000
-dqrem093 remainder  0.00E-5       1  -> 0E-7
-dqrem094 remainder  0.00E-6       1  -> 0E-8
-dqrem095 remainder  0.0000E-50    1  -> 0E-54
-
--- Various flavours of remainder by 0
-dqrem101 remainder  0       0   -> NaN Division_undefined
-dqrem102 remainder  0      -0   -> NaN Division_undefined
-dqrem103 remainder -0       0   -> NaN Division_undefined
-dqrem104 remainder -0      -0   -> NaN Division_undefined
-dqrem105 remainder  0.0E5   0   -> NaN Division_undefined
-dqrem106 remainder  0.000   0   -> NaN Division_undefined
--- [Some think this next group should be Division_by_zero exception, but
--- IEEE 854 is explicit that it is Invalid operation .. for
--- remainder-near, anyway]
-dqrem107 remainder  0.0001  0   -> NaN Invalid_operation
-dqrem108 remainder  0.01    0   -> NaN Invalid_operation
-dqrem109 remainder  0.1     0   -> NaN Invalid_operation
-dqrem110 remainder  1       0   -> NaN Invalid_operation
-dqrem111 remainder  1       0.0 -> NaN Invalid_operation
-dqrem112 remainder 10       0.0 -> NaN Invalid_operation
-dqrem113 remainder 1E+100   0.0 -> NaN Invalid_operation
-dqrem114 remainder 1E+380   0   -> NaN Invalid_operation
-dqrem115 remainder  0.0001 -0   -> NaN Invalid_operation
-dqrem116 remainder  0.01   -0   -> NaN Invalid_operation
-dqrem119 remainder  0.1    -0   -> NaN Invalid_operation
-dqrem120 remainder  1      -0   -> NaN Invalid_operation
-dqrem121 remainder  1      -0.0 -> NaN Invalid_operation
-dqrem122 remainder 10      -0.0 -> NaN Invalid_operation
-dqrem123 remainder 1E+100  -0.0 -> NaN Invalid_operation
-dqrem124 remainder 1E+384  -0   -> NaN Invalid_operation
--- and zeros on left
-dqrem130 remainder  0      1   ->  0
-dqrem131 remainder  0     -1   ->  0
-dqrem132 remainder  0.0    1   ->  0.0
-dqrem133 remainder  0.0   -1   ->  0.0
-dqrem134 remainder -0      1   -> -0
-dqrem135 remainder -0     -1   -> -0
-dqrem136 remainder -0.0    1   -> -0.0
-dqrem137 remainder -0.0   -1   -> -0.0
-
--- 0.5ers
-dqrem143 remainder   0.5  2     ->  0.5
-dqrem144 remainder   0.5  2.1   ->  0.5
-dqrem145 remainder   0.5  2.01  ->  0.50
-dqrem146 remainder   0.5  2.001 ->  0.500
-dqrem147 remainder   0.50 2     ->  0.50
-dqrem148 remainder   0.50 2.01  ->  0.50
-dqrem149 remainder   0.50 2.001 ->  0.500
-
--- steadies
-dqrem150 remainder  1  1   -> 0
-dqrem151 remainder  1  2   -> 1
-dqrem152 remainder  1  3   -> 1
-dqrem153 remainder  1  4   -> 1
-dqrem154 remainder  1  5   -> 1
-dqrem155 remainder  1  6   -> 1
-dqrem156 remainder  1  7   -> 1
-dqrem157 remainder  1  8   -> 1
-dqrem158 remainder  1  9   -> 1
-dqrem159 remainder  1  10  -> 1
-dqrem160 remainder  1  1   -> 0
-dqrem161 remainder  2  1   -> 0
-dqrem162 remainder  3  1   -> 0
-dqrem163 remainder  4  1   -> 0
-dqrem164 remainder  5  1   -> 0
-dqrem165 remainder  6  1   -> 0
-dqrem166 remainder  7  1   -> 0
-dqrem167 remainder  8  1   -> 0
-dqrem168 remainder  9  1   -> 0
-dqrem169 remainder  10 1   -> 0
-
--- some differences from remainderNear
-dqrem171 remainder   0.4  1.020 ->  0.400
-dqrem172 remainder   0.50 1.020 ->  0.500
-dqrem173 remainder   0.51 1.020 ->  0.510
-dqrem174 remainder   0.52 1.020 ->  0.520
-dqrem175 remainder   0.6  1.020 ->  0.600
-
--- More flavours of remainder by 0
-dqrem201 remainder  0      0   -> NaN Division_undefined
-dqrem202 remainder  0.0E5  0   -> NaN Division_undefined
-dqrem203 remainder  0.000  0   -> NaN Division_undefined
-dqrem204 remainder  0.0001 0   -> NaN Invalid_operation
-dqrem205 remainder  0.01   0   -> NaN Invalid_operation
-dqrem206 remainder  0.1    0   -> NaN Invalid_operation
-dqrem207 remainder  1      0   -> NaN Invalid_operation
-dqrem208 remainder  1      0.0 -> NaN Invalid_operation
-dqrem209 remainder 10      0.0 -> NaN Invalid_operation
-dqrem210 remainder 1E+100  0.0 -> NaN Invalid_operation
-dqrem211 remainder 1E+380  0   -> NaN Invalid_operation
-
--- some differences from remainderNear
-dqrem231 remainder  -0.4  1.020 -> -0.400
-dqrem232 remainder  -0.50 1.020 -> -0.500
-dqrem233 remainder  -0.51 1.020 -> -0.510
-dqrem234 remainder  -0.52 1.020 -> -0.520
-dqrem235 remainder  -0.6  1.020 -> -0.600
-
--- high Xs
-dqrem240 remainder  1E+2  1.00  ->  0.00
-
--- dqrem3xx are from DiagBigDecimal
-dqrem301 remainder   1    3     ->  1
-dqrem302 remainder   5    5     ->  0
-dqrem303 remainder   13   10    ->  3
-dqrem304 remainder   13   50    ->  13
-dqrem305 remainder   13   100   ->  13
-dqrem306 remainder   13   1000  ->  13
-dqrem307 remainder   .13    1   ->  0.13
-dqrem308 remainder   0.133  1   ->  0.133
-dqrem309 remainder   0.1033 1   ->  0.1033
-dqrem310 remainder   1.033  1   ->  0.033
-dqrem311 remainder   10.33  1   ->  0.33
-dqrem312 remainder   10.33 10   ->  0.33
-dqrem313 remainder   103.3  1   ->  0.3
-dqrem314 remainder   133   10   ->  3
-dqrem315 remainder   1033  10   ->  3
-dqrem316 remainder   1033  50   ->  33
-dqrem317 remainder   101.0  3   ->  2.0
-dqrem318 remainder   102.0  3   ->  0.0
-dqrem319 remainder   103.0  3   ->  1.0
-dqrem320 remainder   2.40   1   ->  0.40
-dqrem321 remainder   2.400  1   ->  0.400
-dqrem322 remainder   2.4    1   ->  0.4
-dqrem323 remainder   2.4    2   ->  0.4
-dqrem324 remainder   2.400  2   ->  0.400
-dqrem325 remainder   1   0.3    ->  0.1
-dqrem326 remainder   1   0.30   ->  0.10
-dqrem327 remainder   1   0.300  ->  0.100
-dqrem328 remainder   1   0.3000 ->  0.1000
-dqrem329 remainder   1.0    0.3 ->  0.1
-dqrem330 remainder   1.00   0.3 ->  0.10
-dqrem331 remainder   1.000  0.3 ->  0.100
-dqrem332 remainder   1.0000 0.3 ->  0.1000
-dqrem333 remainder   0.5  2     ->  0.5
-dqrem334 remainder   0.5  2.1   ->  0.5
-dqrem335 remainder   0.5  2.01  ->  0.50
-dqrem336 remainder   0.5  2.001 ->  0.500
-dqrem337 remainder   0.50 2     ->  0.50
-dqrem338 remainder   0.50 2.01  ->  0.50
-dqrem339 remainder   0.50 2.001 ->  0.500
-
-dqrem340 remainder   0.5   0.5000001    ->  0.5000000
-dqrem341 remainder   0.5   0.50000001    ->  0.50000000
-dqrem342 remainder   0.5   0.500000001    ->  0.500000000
-dqrem343 remainder   0.5   0.5000000001    ->  0.5000000000
-dqrem344 remainder   0.5   0.50000000001    ->  0.50000000000
-dqrem345 remainder   0.5   0.4999999    ->  1E-7
-dqrem346 remainder   0.5   0.49999999    ->  1E-8
-dqrem347 remainder   0.5   0.499999999    ->  1E-9
-dqrem348 remainder   0.5   0.4999999999    ->  1E-10
-dqrem349 remainder   0.5   0.49999999999    ->  1E-11
-dqrem350 remainder   0.5   0.499999999999    ->  1E-12
-
-dqrem351 remainder   0.03  7  ->  0.03
-dqrem352 remainder   5   2    ->  1
-dqrem353 remainder   4.1   2    ->  0.1
-dqrem354 remainder   4.01   2    ->  0.01
-dqrem355 remainder   4.001   2    ->  0.001
-dqrem356 remainder   4.0001   2    ->  0.0001
-dqrem357 remainder   4.00001   2    ->  0.00001
-dqrem358 remainder   4.000001   2    ->  0.000001
-dqrem359 remainder   4.0000001   2    ->  1E-7
-
-dqrem360 remainder   1.2   0.7345 ->  0.4655
-dqrem361 remainder   0.8   12     ->  0.8
-dqrem362 remainder   0.8   0.2    ->  0.0
-dqrem363 remainder   0.8   0.3    ->  0.2
-dqrem364 remainder   0.800   12   ->  0.800
-dqrem365 remainder   0.800   1.7  ->  0.800
-dqrem366 remainder   2.400   2    ->  0.400
-
-dqrem371 remainder   2.400  2        ->  0.400
-
-dqrem381 remainder 12345  1         ->  0
-dqrem382 remainder 12345  1.0001    ->  0.7657
-dqrem383 remainder 12345  1.001     ->  0.668
-dqrem384 remainder 12345  1.01      ->  0.78
-dqrem385 remainder 12345  1.1       ->  0.8
-dqrem386 remainder 12355  4         ->  3
-dqrem387 remainder 12345  4         ->  1
-dqrem388 remainder 12355  4.0001    ->  2.6912
-dqrem389 remainder 12345  4.0001    ->  0.6914
-dqrem390 remainder 12345  4.9       ->  1.9
-dqrem391 remainder 12345  4.99      ->  4.73
-dqrem392 remainder 12345  4.999     ->  2.469
-dqrem393 remainder 12345  4.9999    ->  0.2469
-dqrem394 remainder 12345  5         ->  0
-dqrem395 remainder 12345  5.0001    ->  4.7532
-dqrem396 remainder 12345  5.001     ->  2.532
-dqrem397 remainder 12345  5.01      ->  0.36
-dqrem398 remainder 12345  5.1       ->  3.0
-
--- the nasty division-by-1 cases
-dqrem401 remainder   0.5         1   ->  0.5
-dqrem402 remainder   0.55        1   ->  0.55
-dqrem403 remainder   0.555       1   ->  0.555
-dqrem404 remainder   0.5555      1   ->  0.5555
-dqrem405 remainder   0.55555     1   ->  0.55555
-dqrem406 remainder   0.555555    1   ->  0.555555
-dqrem407 remainder   0.5555555   1   ->  0.5555555
-dqrem408 remainder   0.55555555  1   ->  0.55555555
-dqrem409 remainder   0.555555555 1   ->  0.555555555
-
--- folddowns
-dqrem421 remainder   1E+6144        1  ->   NaN Division_impossible
-dqrem422 remainder   1E+6144  1E+6143  ->   0E+6111 Clamped
-dqrem423 remainder   1E+6144  2E+6143  ->   0E+6111 Clamped
-dqrem424 remainder   1E+6144  3E+6143  ->   1.00000000000000000000000000000000E+6143 Clamped
-dqrem425 remainder   1E+6144  4E+6143  ->   2.00000000000000000000000000000000E+6143 Clamped
-dqrem426 remainder   1E+6144  5E+6143  ->   0E+6111 Clamped
-dqrem427 remainder   1E+6144  6E+6143  ->   4.00000000000000000000000000000000E+6143 Clamped
-dqrem428 remainder   1E+6144  7E+6143  ->   3.00000000000000000000000000000000E+6143 Clamped
-dqrem429 remainder   1E+6144  8E+6143  ->   2.00000000000000000000000000000000E+6143 Clamped
-dqrem430 remainder   1E+6144  9E+6143  ->   1.00000000000000000000000000000000E+6143 Clamped
--- tinies
-dqrem431 remainder   1E-6175  1E-6176  ->   0E-6176
-dqrem432 remainder   1E-6175  2E-6176  ->   0E-6176
-dqrem433 remainder   1E-6175  3E-6176  ->   1E-6176 Subnormal
-dqrem434 remainder   1E-6175  4E-6176  ->   2E-6176 Subnormal
-dqrem435 remainder   1E-6175  5E-6176  ->   0E-6176
-dqrem436 remainder   1E-6175  6E-6176  ->   4E-6176 Subnormal
-dqrem437 remainder   1E-6175  7E-6176  ->   3E-6176 Subnormal
-dqrem438 remainder   1E-6175  8E-6176  ->   2E-6176 Subnormal
-dqrem439 remainder   1E-6175  9E-6176  ->   1E-6176 Subnormal
-dqrem440 remainder   1E-6175 10E-6176  ->   0E-6176
-dqrem441 remainder   1E-6175 11E-6176  -> 1.0E-6175 Subnormal
-dqrem442 remainder 100E-6175 11E-6176  -> 1.0E-6175 Subnormal
-dqrem443 remainder 100E-6175 20E-6176  ->   0E-6176
-dqrem444 remainder 100E-6175 21E-6176  -> 1.3E-6175 Subnormal
-dqrem445 remainder 100E-6175 30E-6176  -> 1.0E-6175 Subnormal
-
--- zero signs
-dqrem650 remainder  1  1 ->  0
-dqrem651 remainder -1  1 -> -0
-dqrem652 remainder  1 -1 ->  0
-dqrem653 remainder -1 -1 -> -0
-dqrem654 remainder  0  1 ->  0
-dqrem655 remainder -0  1 -> -0
-dqrem656 remainder  0 -1 ->  0
-dqrem657 remainder -0 -1 -> -0
-dqrem658 remainder  0.00  1  ->  0.00
-dqrem659 remainder -0.00  1  -> -0.00
-
--- Specials
-dqrem680 remainder  Inf  -Inf   ->  NaN Invalid_operation
-dqrem681 remainder  Inf  -1000  ->  NaN Invalid_operation
-dqrem682 remainder  Inf  -1     ->  NaN Invalid_operation
-dqrem683 remainder  Inf   0     ->  NaN Invalid_operation
-dqrem684 remainder  Inf  -0     ->  NaN Invalid_operation
-dqrem685 remainder  Inf   1     ->  NaN Invalid_operation
-dqrem686 remainder  Inf   1000  ->  NaN Invalid_operation
-dqrem687 remainder  Inf   Inf   ->  NaN Invalid_operation
-dqrem688 remainder -1000  Inf   -> -1000
-dqrem689 remainder -Inf   Inf   ->  NaN Invalid_operation
-dqrem691 remainder -1     Inf   -> -1
-dqrem692 remainder  0     Inf   ->  0
-dqrem693 remainder -0     Inf   -> -0
-dqrem694 remainder  1     Inf   ->  1
-dqrem695 remainder  1000  Inf   ->  1000
-dqrem696 remainder  Inf   Inf   ->  NaN Invalid_operation
-
-dqrem700 remainder -Inf  -Inf   ->  NaN Invalid_operation
-dqrem701 remainder -Inf  -1000  ->  NaN Invalid_operation
-dqrem702 remainder -Inf  -1     ->  NaN Invalid_operation
-dqrem703 remainder -Inf  -0     ->  NaN Invalid_operation
-dqrem704 remainder -Inf   0     ->  NaN Invalid_operation
-dqrem705 remainder -Inf   1     ->  NaN Invalid_operation
-dqrem706 remainder -Inf   1000  ->  NaN Invalid_operation
-dqrem707 remainder -Inf   Inf   ->  NaN Invalid_operation
-dqrem708 remainder -Inf  -Inf   ->  NaN Invalid_operation
-dqrem709 remainder -1000  Inf   -> -1000
-dqrem710 remainder -1    -Inf   -> -1
-dqrem711 remainder -0    -Inf   -> -0
-dqrem712 remainder  0    -Inf   ->  0
-dqrem713 remainder  1    -Inf   ->  1
-dqrem714 remainder  1000 -Inf   ->  1000
-dqrem715 remainder  Inf  -Inf   ->  NaN Invalid_operation
-
-dqrem721 remainder  NaN -Inf    ->  NaN
-dqrem722 remainder  NaN -1000   ->  NaN
-dqrem723 remainder  NaN -1      ->  NaN
-dqrem724 remainder  NaN -0      ->  NaN
-dqrem725 remainder -NaN  0      -> -NaN
-dqrem726 remainder  NaN  1      ->  NaN
-dqrem727 remainder  NaN  1000   ->  NaN
-dqrem728 remainder  NaN  Inf    ->  NaN
-dqrem729 remainder  NaN -NaN    ->  NaN
-dqrem730 remainder -Inf  NaN    ->  NaN
-dqrem731 remainder -1000 NaN    ->  NaN
-dqrem732 remainder -1    NaN    ->  NaN
-dqrem733 remainder -0   -NaN    -> -NaN
-dqrem734 remainder  0    NaN    ->  NaN
-dqrem735 remainder  1   -NaN    -> -NaN
-dqrem736 remainder  1000 NaN    ->  NaN
-dqrem737 remainder  Inf  NaN    ->  NaN
-
-dqrem741 remainder  sNaN -Inf   ->  NaN  Invalid_operation
-dqrem742 remainder  sNaN -1000  ->  NaN  Invalid_operation
-dqrem743 remainder -sNaN -1     -> -NaN  Invalid_operation
-dqrem744 remainder  sNaN -0     ->  NaN  Invalid_operation
-dqrem745 remainder  sNaN  0     ->  NaN  Invalid_operation
-dqrem746 remainder  sNaN  1     ->  NaN  Invalid_operation
-dqrem747 remainder  sNaN  1000  ->  NaN  Invalid_operation
-dqrem749 remainder  sNaN  NaN   ->  NaN  Invalid_operation
-dqrem750 remainder  sNaN sNaN   ->  NaN  Invalid_operation
-dqrem751 remainder  NaN  sNaN   ->  NaN  Invalid_operation
-dqrem752 remainder -Inf  sNaN   ->  NaN  Invalid_operation
-dqrem753 remainder -1000 sNaN   ->  NaN  Invalid_operation
-dqrem754 remainder -1    sNaN   ->  NaN  Invalid_operation
-dqrem755 remainder -0    sNaN   ->  NaN  Invalid_operation
-dqrem756 remainder  0    sNaN   ->  NaN  Invalid_operation
-dqrem757 remainder  1    sNaN   ->  NaN  Invalid_operation
-dqrem758 remainder  1000 sNaN   ->  NaN  Invalid_operation
-dqrem759 remainder  Inf -sNaN   -> -NaN  Invalid_operation
-
--- propaging NaNs
-dqrem760 remainder  NaN1   NaN7   ->  NaN1
-dqrem761 remainder sNaN2   NaN8   ->  NaN2 Invalid_operation
-dqrem762 remainder  NaN3  sNaN9   ->  NaN9 Invalid_operation
-dqrem763 remainder sNaN4  sNaN10  ->  NaN4 Invalid_operation
-dqrem764 remainder    15   NaN11  ->  NaN11
-dqrem765 remainder  NaN6   NaN12  ->  NaN6
-dqrem766 remainder  Inf    NaN13  ->  NaN13
-dqrem767 remainder  NaN14  -Inf   ->  NaN14
-dqrem768 remainder    0    NaN15  ->  NaN15
-dqrem769 remainder  NaN16   -0    ->  NaN16
-
--- edge cases of impossible
-dqrem770  remainder  1234568888888887777777777890123456  10    ->  6
-dqrem771  remainder  1234568888888887777777777890123456   1    ->  0
-dqrem772  remainder  1234568888888887777777777890123456   0.1  ->  NaN Division_impossible
-dqrem773  remainder  1234568888888887777777777890123456   0.01 ->  NaN Division_impossible
-
--- long operand checks
-dqrem801 remainder 12345678000 100 -> 0
-dqrem802 remainder 1 12345678000   -> 1
-dqrem803 remainder 1234567800  10  -> 0
-dqrem804 remainder 1 1234567800    -> 1
-dqrem805 remainder 1234567890  10  -> 0
-dqrem806 remainder 1 1234567890    -> 1
-dqrem807 remainder 1234567891  10  -> 1
-dqrem808 remainder 1 1234567891    -> 1
-dqrem809 remainder 12345678901 100 -> 1
-dqrem810 remainder 1 12345678901   -> 1
-dqrem811 remainder 1234567896  10  -> 6
-dqrem812 remainder 1 1234567896    -> 1
-
-dqrem821 remainder 12345678000 100 -> 0
-dqrem822 remainder 1 12345678000   -> 1
-dqrem823 remainder 1234567800  10  -> 0
-dqrem824 remainder 1 1234567800    -> 1
-dqrem825 remainder 1234567890  10  -> 0
-dqrem826 remainder 1 1234567890    -> 1
-dqrem827 remainder 1234567891  10  -> 1
-dqrem828 remainder 1 1234567891    -> 1
-dqrem829 remainder 12345678901 100 -> 1
-dqrem830 remainder 1 12345678901   -> 1
-dqrem831 remainder 1234567896  10  -> 6
-dqrem832 remainder 1 1234567896    -> 1
-
--- from divideint
-dqrem840 remainder  100000000.0   1  ->  0.0
-dqrem841 remainder  100000000.4   1  ->  0.4
-dqrem842 remainder  100000000.5   1  ->  0.5
-dqrem843 remainder  100000000.9   1  ->  0.9
-dqrem844 remainder  100000000.999 1  ->  0.999
-dqrem850 remainder  100000003     5  ->  3
-dqrem851 remainder  10000003      5  ->  3
-dqrem852 remainder  1000003       5  ->  3
-dqrem853 remainder  100003        5  ->  3
-dqrem854 remainder  10003         5  ->  3
-dqrem855 remainder  1003          5  ->  3
-dqrem856 remainder  103           5  ->  3
-dqrem857 remainder  13            5  ->  3
-dqrem858 remainder  1             5  ->  1
-
--- Vladimir's cases         1234567890123456
-dqrem860 remainder 123.0e1 1000000000000000  -> 1230
-dqrem861 remainder 1230    1000000000000000  -> 1230
-dqrem862 remainder 12.3e2  1000000000000000  -> 1230
-dqrem863 remainder 1.23e3  1000000000000000  -> 1230
-dqrem864 remainder 123e1   1000000000000000  -> 1230
-dqrem870 remainder 123e1    1000000000000000 -> 1230
-dqrem871 remainder 123e1     100000000000000 -> 1230
-dqrem872 remainder 123e1      10000000000000 -> 1230
-dqrem873 remainder 123e1       1000000000000 -> 1230
-dqrem874 remainder 123e1        100000000000 -> 1230
-dqrem875 remainder 123e1         10000000000 -> 1230
-dqrem876 remainder 123e1          1000000000 -> 1230
-dqrem877 remainder 123e1           100000000 -> 1230
-dqrem878 remainder 1230            100000000 -> 1230
-dqrem879 remainder 123e1            10000000 -> 1230
-dqrem880 remainder 123e1             1000000 -> 1230
-dqrem881 remainder 123e1              100000 -> 1230
-dqrem882 remainder 123e1               10000 -> 1230
-dqrem883 remainder 123e1                1000 ->  230
-dqrem884 remainder 123e1                 100 ->   30
-dqrem885 remainder 123e1                  10 ->    0
-dqrem886 remainder 123e1                   1 ->    0
-
-dqrem890 remainder 123e1    2000000000000000 -> 1230
-dqrem891 remainder 123e1     200000000000000 -> 1230
-dqrem892 remainder 123e1      20000000000000 -> 1230
-dqrem893 remainder 123e1       2000000000000 -> 1230
-dqrem894 remainder 123e1        200000000000 -> 1230
-dqrem895 remainder 123e1         20000000000 -> 1230
-dqrem896 remainder 123e1          2000000000 -> 1230
-dqrem897 remainder 123e1           200000000 -> 1230
-dqrem899 remainder 123e1            20000000 -> 1230
-dqrem900 remainder 123e1             2000000 -> 1230
-dqrem901 remainder 123e1              200000 -> 1230
-dqrem902 remainder 123e1               20000 -> 1230
-dqrem903 remainder 123e1                2000 -> 1230
-dqrem904 remainder 123e1                 200 ->   30
-dqrem905 remainder 123e1                  20 ->   10
-dqrem906 remainder 123e1                   2 ->    0
-
-dqrem910 remainder 123e1    5000000000000000 -> 1230
-dqrem911 remainder 123e1     500000000000000 -> 1230
-dqrem912 remainder 123e1      50000000000000 -> 1230
-dqrem913 remainder 123e1       5000000000000 -> 1230
-dqrem914 remainder 123e1        500000000000 -> 1230
-dqrem915 remainder 123e1         50000000000 -> 1230
-dqrem916 remainder 123e1          5000000000 -> 1230
-dqrem917 remainder 123e1           500000000 -> 1230
-dqrem919 remainder 123e1            50000000 -> 1230
-dqrem920 remainder 123e1             5000000 -> 1230
-dqrem921 remainder 123e1              500000 -> 1230
-dqrem922 remainder 123e1               50000 -> 1230
-dqrem923 remainder 123e1                5000 -> 1230
-dqrem924 remainder 123e1                 500 ->  230
-dqrem925 remainder 123e1                  50 ->   30
-dqrem926 remainder 123e1                   5 ->    0
-
-dqrem930 remainder 123e1    9000000000000000 -> 1230
-dqrem931 remainder 123e1     900000000000000 -> 1230
-dqrem932 remainder 123e1      90000000000000 -> 1230
-dqrem933 remainder 123e1       9000000000000 -> 1230
-dqrem934 remainder 123e1        900000000000 -> 1230
-dqrem935 remainder 123e1         90000000000 -> 1230
-dqrem936 remainder 123e1          9000000000 -> 1230
-dqrem937 remainder 123e1           900000000 -> 1230
-dqrem939 remainder 123e1            90000000 -> 1230
-dqrem940 remainder 123e1             9000000 -> 1230
-dqrem941 remainder 123e1              900000 -> 1230
-dqrem942 remainder 123e1               90000 -> 1230
-dqrem943 remainder 123e1                9000 -> 1230
-dqrem944 remainder 123e1                 900 ->  330
-dqrem945 remainder 123e1                  90 ->   60
-dqrem946 remainder 123e1                   9 ->    6
-
-dqrem950 remainder 123e1   1000000000000000 -> 1230
-dqrem961 remainder 123e1   2999999999999999 -> 1230
-dqrem962 remainder 123e1   3999999999999999 -> 1230
-dqrem963 remainder 123e1   4999999999999999 -> 1230
-dqrem964 remainder 123e1   5999999999999999 -> 1230
-dqrem965 remainder 123e1   6999999999999999 -> 1230
-dqrem966 remainder 123e1   7999999999999999 -> 1230
-dqrem967 remainder 123e1   8999999999999999 -> 1230
-dqrem968 remainder 123e1   9999999999999999 -> 1230
-dqrem969 remainder 123e1   9876543210987654 -> 1230
-
-dqrem980 remainder 123e1 1000E299 -> 1.23E+3  -- 123E+1 internally
-
--- overflow and underflow tests [from divide]
-dqrem1051 remainder  1e+277  1e-311 ->  NaN Division_impossible
-dqrem1052 remainder  1e+277 -1e-311 ->  NaN Division_impossible
-dqrem1053 remainder -1e+277  1e-311 ->  NaN Division_impossible
-dqrem1054 remainder -1e+277 -1e-311 ->  NaN Division_impossible
-dqrem1055 remainder  1e-277  1e+311 ->  1E-277
-dqrem1056 remainder  1e-277 -1e+311 ->  1E-277
-dqrem1057 remainder -1e-277  1e+311 -> -1E-277
-dqrem1058 remainder -1e-277 -1e+311 -> -1E-277
-
--- Gyuris example
-dqrem1070 remainder 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 8.336804418094040989630006819881709E-6143
-
--- destructive subtract
-dqrem1120  remainder  1234567890123456789012345678901234  1.000000000000000000000000000000001  ->  0.765432109876543210987654321098768
-dqrem1121  remainder  1234567890123456789012345678901234   1.00000000000000000000000000000001  ->   0.65432109876543210987654321098779
-dqrem1122  remainder  1234567890123456789012345678901234    1.0000000000000000000000000000001  ->    0.5432109876543210987654321098890
-dqrem1123  remainder  1234567890123456789012345678901255  4.000000000000000000000000000000001  ->  2.691358027469135802746913580274687
-dqrem1124  remainder  1234567890123456789012345678901234  4.000000000000000000000000000000001  ->  1.691358027469135802746913580274692
-dqrem1125  remainder  1234567890123456789012345678901234    4.9999999999999999999999999999999  ->    3.6913578024691357802469135780251
-dqrem1126  remainder  1234567890123456789012345678901234   4.99999999999999999999999999999999  ->   1.46913578024691357802469135780247
-dqrem1127  remainder  1234567890123456789012345678901234  4.999999999999999999999999999999999  ->  4.246913578024691357802469135780246
-dqrem1128  remainder  1234567890123456789012345678901234    5.0000000000000000000000000000001  ->    4.3086421975308642197530864219759
-
--- Null tests
-dqrem1000 remainder 10  # -> NaN Invalid_operation
-dqrem1001 remainder  # 10 -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRemainderNear.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRemainderNear.decTest
deleted file mode 100644
index b850626..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRemainderNear.decTest
+++ /dev/null
@@ -1,631 +0,0 @@
-------------------------------------------------------------------------
--- dqRemainderNear.decTest -- decQuad remainder-near                  --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- sanity checks (as base, above)
-dqrmn001 remaindernear  1     1    ->  0
-dqrmn002 remaindernear  2     1    ->  0
-dqrmn003 remaindernear  1     2    ->  1
-dqrmn004 remaindernear  2     2    ->  0
-dqrmn005 remaindernear  0     1    ->  0
-dqrmn006 remaindernear  0     2    ->  0
-dqrmn007 remaindernear  1     3    ->  1
-dqrmn008 remaindernear  2     3    -> -1
-dqrmn009 remaindernear  3     3    ->  0
-
-dqrmn010 remaindernear  2.4   1    ->  0.4
-dqrmn011 remaindernear  2.4   -1   ->  0.4
-dqrmn012 remaindernear  -2.4  1    ->  -0.4
-dqrmn013 remaindernear  -2.4  -1   ->  -0.4
-dqrmn014 remaindernear  2.40  1    ->  0.40
-dqrmn015 remaindernear  2.400 1    ->  0.400
-dqrmn016 remaindernear  2.4   2    ->  0.4
-dqrmn017 remaindernear  2.400 2    ->  0.400
-dqrmn018 remaindernear  2.    2    ->  0
-dqrmn019 remaindernear  20    20   ->  0
-
-dqrmn020 remaindernear  187   187    ->  0
-dqrmn021 remaindernear  5     2      ->  1
-dqrmn022 remaindernear  5     2.0    ->  1.0
-dqrmn023 remaindernear  5     2.000  ->  1.000
-dqrmn024 remaindernear  5     0.200  ->  0.000
-dqrmn025 remaindernear  5     0.200  ->  0.000
-
-dqrmn030 remaindernear  1     2      ->  1
-dqrmn031 remaindernear  1     4      ->  1
-dqrmn032 remaindernear  1     8      ->  1
-
-dqrmn033 remaindernear  1     16     ->  1
-dqrmn034 remaindernear  1     32     ->  1
-dqrmn035 remaindernear  1     64     ->  1
-dqrmn040 remaindernear  1    -2      ->  1
-dqrmn041 remaindernear  1    -4      ->  1
-dqrmn042 remaindernear  1    -8      ->  1
-dqrmn043 remaindernear  1    -16     ->  1
-dqrmn044 remaindernear  1    -32     ->  1
-dqrmn045 remaindernear  1    -64     ->  1
-dqrmn050 remaindernear -1     2      ->  -1
-dqrmn051 remaindernear -1     4      ->  -1
-dqrmn052 remaindernear -1     8      ->  -1
-dqrmn053 remaindernear -1     16     ->  -1
-dqrmn054 remaindernear -1     32     ->  -1
-dqrmn055 remaindernear -1     64     ->  -1
-dqrmn060 remaindernear -1    -2      ->  -1
-dqrmn061 remaindernear -1    -4      ->  -1
-dqrmn062 remaindernear -1    -8      ->  -1
-dqrmn063 remaindernear -1    -16     ->  -1
-dqrmn064 remaindernear -1    -32     ->  -1
-dqrmn065 remaindernear -1    -64     ->  -1
-
-dqrmn066 remaindernear          9.9   1  -> -0.1
-dqrmn067 remaindernear         99.7   1  -> -0.3
-dqrmn068 remaindernear  999999999     1  -> 0
-dqrmn069 remaindernear  999999999.4   1  -> 0.4
-dqrmn070 remaindernear  999999999.5   1  -> -0.5
-dqrmn071 remaindernear  999999999.9   1  -> -0.1
-dqrmn072 remaindernear  999999999.999 1  -> -0.001
-dqrmn073 remaindernear  999999.999999 1  -> -0.000001
-dqrmn074 remaindernear  9             1  -> 0
-dqrmn075 remaindernear  9999999999999999 1  -> 0
-dqrmn076 remaindernear  9999999999999999 2  -> -1
-dqrmn077 remaindernear  9999999999999999 3  -> 0
-dqrmn078 remaindernear  9999999999999999 4  -> -1
-
-dqrmn080 remaindernear  0.            1  -> 0
-dqrmn081 remaindernear  .0            1  -> 0.0
-dqrmn082 remaindernear  0.00          1  -> 0.00
-dqrmn083 remaindernear  0.00E+9       1  -> 0
-dqrmn084 remaindernear  0.00E+3       1  -> 0
-dqrmn085 remaindernear  0.00E+2       1  -> 0
-dqrmn086 remaindernear  0.00E+1       1  -> 0.0
-dqrmn087 remaindernear  0.00E+0       1  -> 0.00
-dqrmn088 remaindernear  0.00E-0       1  -> 0.00
-dqrmn089 remaindernear  0.00E-1       1  -> 0.000
-dqrmn090 remaindernear  0.00E-2       1  -> 0.0000
-dqrmn091 remaindernear  0.00E-3       1  -> 0.00000
-dqrmn092 remaindernear  0.00E-4       1  -> 0.000000
-dqrmn093 remaindernear  0.00E-5       1  -> 0E-7
-dqrmn094 remaindernear  0.00E-6       1  -> 0E-8
-dqrmn095 remaindernear  0.0000E-50    1  -> 0E-54
-
--- Various flavours of remaindernear by 0
-dqrmn101 remaindernear  0       0   -> NaN Division_undefined
-dqrmn102 remaindernear  0      -0   -> NaN Division_undefined
-dqrmn103 remaindernear -0       0   -> NaN Division_undefined
-dqrmn104 remaindernear -0      -0   -> NaN Division_undefined
-dqrmn105 remaindernear  0.0E5   0   -> NaN Division_undefined
-dqrmn106 remaindernear  0.000   0   -> NaN Division_undefined
--- [Some think this next group should be Division_by_zero exception, but
--- IEEE 854 is explicit that it is Invalid operation .. for
--- remainder-near, anyway]
-dqrmn107 remaindernear  0.0001  0   -> NaN Invalid_operation
-dqrmn108 remaindernear  0.01    0   -> NaN Invalid_operation
-dqrmn109 remaindernear  0.1     0   -> NaN Invalid_operation
-dqrmn110 remaindernear  1       0   -> NaN Invalid_operation
-dqrmn111 remaindernear  1       0.0 -> NaN Invalid_operation
-dqrmn112 remaindernear 10       0.0 -> NaN Invalid_operation
-dqrmn113 remaindernear 1E+100   0.0 -> NaN Invalid_operation
-dqrmn114 remaindernear 1E+380   0   -> NaN Invalid_operation
-dqrmn115 remaindernear  0.0001 -0   -> NaN Invalid_operation
-dqrmn116 remaindernear  0.01   -0   -> NaN Invalid_operation
-dqrmn119 remaindernear  0.1    -0   -> NaN Invalid_operation
-dqrmn120 remaindernear  1      -0   -> NaN Invalid_operation
-dqrmn121 remaindernear  1      -0.0 -> NaN Invalid_operation
-dqrmn122 remaindernear 10      -0.0 -> NaN Invalid_operation
-dqrmn123 remaindernear 1E+100  -0.0 -> NaN Invalid_operation
-dqrmn124 remaindernear 1E+384  -0   -> NaN Invalid_operation
--- and zeros on left
-dqrmn130 remaindernear  0      1   ->  0
-dqrmn131 remaindernear  0     -1   ->  0
-dqrmn132 remaindernear  0.0    1   ->  0.0
-dqrmn133 remaindernear  0.0   -1   ->  0.0
-dqrmn134 remaindernear -0      1   -> -0
-dqrmn135 remaindernear -0     -1   -> -0
-dqrmn136 remaindernear -0.0    1   -> -0.0
-dqrmn137 remaindernear -0.0   -1   -> -0.0
-
--- 0.5ers
-dqrmn143 remaindernear   0.5  2     ->  0.5
-dqrmn144 remaindernear   0.5  2.1   ->  0.5
-dqrmn145 remaindernear   0.5  2.01  ->  0.50
-dqrmn146 remaindernear   0.5  2.001 ->  0.500
-dqrmn147 remaindernear   0.50 2     ->  0.50
-dqrmn148 remaindernear   0.50 2.01  ->  0.50
-dqrmn149 remaindernear   0.50 2.001 ->  0.500
-
--- steadies
-dqrmn150 remaindernear  1  1   -> 0
-dqrmn151 remaindernear  1  2   -> 1
-dqrmn152 remaindernear  1  3   -> 1
-dqrmn153 remaindernear  1  4   -> 1
-dqrmn154 remaindernear  1  5   -> 1
-dqrmn155 remaindernear  1  6   -> 1
-dqrmn156 remaindernear  1  7   -> 1
-dqrmn157 remaindernear  1  8   -> 1
-dqrmn158 remaindernear  1  9   -> 1
-dqrmn159 remaindernear  1  10  -> 1
-dqrmn160 remaindernear  1  1   -> 0
-dqrmn161 remaindernear  2  1   -> 0
-dqrmn162 remaindernear  3  1   -> 0
-dqrmn163 remaindernear  4  1   -> 0
-dqrmn164 remaindernear  5  1   -> 0
-dqrmn165 remaindernear  6  1   -> 0
-dqrmn166 remaindernear  7  1   -> 0
-dqrmn167 remaindernear  8  1   -> 0
-dqrmn168 remaindernear  9  1   -> 0
-dqrmn169 remaindernear  10 1   -> 0
-
--- some differences from remainder
-dqrmn171 remaindernear   0.4  1.020 ->  0.400
-dqrmn172 remaindernear   0.50 1.020 ->  0.500
-dqrmn173 remaindernear   0.51 1.020 ->  0.510
-dqrmn174 remaindernear   0.52 1.020 -> -0.500
-dqrmn175 remaindernear   0.6  1.020 -> -0.420
-
--- More flavours of remaindernear by 0
-dqrmn201 remaindernear  0      0   -> NaN Division_undefined
-dqrmn202 remaindernear  0.0E5  0   -> NaN Division_undefined
-dqrmn203 remaindernear  0.000  0   -> NaN Division_undefined
-dqrmn204 remaindernear  0.0001 0   -> NaN Invalid_operation
-dqrmn205 remaindernear  0.01   0   -> NaN Invalid_operation
-dqrmn206 remaindernear  0.1    0   -> NaN Invalid_operation
-dqrmn207 remaindernear  1      0   -> NaN Invalid_operation
-dqrmn208 remaindernear  1      0.0 -> NaN Invalid_operation
-dqrmn209 remaindernear 10      0.0 -> NaN Invalid_operation
-dqrmn210 remaindernear 1E+100  0.0 -> NaN Invalid_operation
-dqrmn211 remaindernear 1E+380  0   -> NaN Invalid_operation
-
--- tests from the extended specification
-dqrmn221 remaindernear 2.1     3   -> -0.9
-dqrmn222 remaindernear  10     6   -> -2
-dqrmn223 remaindernear  10     3   ->  1
-dqrmn224 remaindernear -10     3   -> -1
-dqrmn225 remaindernear  10.2   1   -> 0.2
-dqrmn226 remaindernear  10     0.3 -> 0.1
-dqrmn227 remaindernear   3.6   1.3 -> -0.3
-
--- some differences from remainder
-dqrmn231 remaindernear  -0.4  1.020 -> -0.400
-dqrmn232 remaindernear  -0.50 1.020 -> -0.500
-dqrmn233 remaindernear  -0.51 1.020 -> -0.510
-dqrmn234 remaindernear  -0.52 1.020 ->  0.500
-dqrmn235 remaindernear  -0.6  1.020 ->  0.420
-
--- high Xs
-dqrmn240 remaindernear  1E+2  1.00  ->  0.00
-
--- dqrmn3xx are from DiagBigDecimal
-dqrmn301 remaindernear   1    3     ->  1
-dqrmn302 remaindernear   5    5     ->  0
-dqrmn303 remaindernear   13   10    ->  3
-dqrmn304 remaindernear   13   50    ->  13
-dqrmn305 remaindernear   13   100   ->  13
-dqrmn306 remaindernear   13   1000  ->  13
-dqrmn307 remaindernear   .13    1   ->  0.13
-dqrmn308 remaindernear   0.133  1   ->  0.133
-dqrmn309 remaindernear   0.1033 1   ->  0.1033
-dqrmn310 remaindernear   1.033  1   ->  0.033
-dqrmn311 remaindernear   10.33  1   ->  0.33
-dqrmn312 remaindernear   10.33 10   ->  0.33
-dqrmn313 remaindernear   103.3  1   ->  0.3
-dqrmn314 remaindernear   133   10   ->  3
-dqrmn315 remaindernear   1033  10   ->  3
-dqrmn316 remaindernear   1033  50   -> -17
-dqrmn317 remaindernear   101.0  3   -> -1.0
-dqrmn318 remaindernear   102.0  3   ->  0.0
-dqrmn319 remaindernear   103.0  3   ->  1.0
-dqrmn320 remaindernear   2.40   1   ->  0.40
-dqrmn321 remaindernear   2.400  1   ->  0.400
-dqrmn322 remaindernear   2.4    1   ->  0.4
-dqrmn323 remaindernear   2.4    2   ->  0.4
-dqrmn324 remaindernear   2.400  2   ->  0.400
-dqrmn325 remaindernear   1   0.3    ->  0.1
-dqrmn326 remaindernear   1   0.30   ->  0.10
-dqrmn327 remaindernear   1   0.300  ->  0.100
-dqrmn328 remaindernear   1   0.3000 ->  0.1000
-dqrmn329 remaindernear   1.0    0.3 ->  0.1
-dqrmn330 remaindernear   1.00   0.3 ->  0.10
-dqrmn331 remaindernear   1.000  0.3 ->  0.100
-dqrmn332 remaindernear   1.0000 0.3 ->  0.1000
-dqrmn333 remaindernear   0.5  2     ->  0.5
-dqrmn334 remaindernear   0.5  2.1   ->  0.5
-dqrmn335 remaindernear   0.5  2.01  ->  0.50
-dqrmn336 remaindernear   0.5  2.001 ->  0.500
-dqrmn337 remaindernear   0.50 2     ->  0.50
-dqrmn338 remaindernear   0.50 2.01  ->  0.50
-dqrmn339 remaindernear   0.50 2.001 ->  0.500
-
-dqrmn340 remaindernear   0.5   0.5000001    ->  -1E-7
-dqrmn341 remaindernear   0.5   0.50000001    ->  -1E-8
-dqrmn342 remaindernear   0.5   0.500000001    ->  -1E-9
-dqrmn343 remaindernear   0.5   0.5000000001    ->  -1E-10
-dqrmn344 remaindernear   0.5   0.50000000001    ->  -1E-11
-dqrmn345 remaindernear   0.5   0.4999999    ->  1E-7
-dqrmn346 remaindernear   0.5   0.49999999    ->  1E-8
-dqrmn347 remaindernear   0.5   0.499999999    ->  1E-9
-dqrmn348 remaindernear   0.5   0.4999999999    ->  1E-10
-dqrmn349 remaindernear   0.5   0.49999999999    ->  1E-11
-dqrmn350 remaindernear   0.5   0.499999999999    ->  1E-12
-
-dqrmn351 remaindernear   0.03  7  ->  0.03
-dqrmn352 remaindernear   5   2    ->  1
-dqrmn353 remaindernear   4.1   2    ->  0.1
-dqrmn354 remaindernear   4.01   2    ->  0.01
-dqrmn355 remaindernear   4.001   2    ->  0.001
-dqrmn356 remaindernear   4.0001   2    ->  0.0001
-dqrmn357 remaindernear   4.00001   2    ->  0.00001
-dqrmn358 remaindernear   4.000001   2    ->  0.000001
-dqrmn359 remaindernear   4.0000001   2    ->  1E-7
-
-dqrmn360 remaindernear   1.2   0.7345 -> -0.2690
-dqrmn361 remaindernear   0.8   12     ->  0.8
-dqrmn362 remaindernear   0.8   0.2    ->  0.0
-dqrmn363 remaindernear   0.8   0.3    -> -0.1
-dqrmn364 remaindernear   0.800   12   ->  0.800
-dqrmn365 remaindernear   0.800   1.7  ->  0.800
-dqrmn366 remaindernear   2.400   2    ->  0.400
-
--- round to even
-dqrmn371 remaindernear   121     2    ->  1
-dqrmn372 remaindernear   122     2    ->  0
-dqrmn373 remaindernear   123     2    -> -1
-dqrmn374 remaindernear   124     2    ->  0
-dqrmn375 remaindernear   125     2    ->  1
-dqrmn376 remaindernear   126     2    ->  0
-dqrmn377 remaindernear   127     2    -> -1
-
-dqrmn381 remaindernear 12345  1         ->  0
-dqrmn382 remaindernear 12345  1.0001    -> -0.2344
-dqrmn383 remaindernear 12345  1.001     -> -0.333
-dqrmn384 remaindernear 12345  1.01      -> -0.23
-dqrmn385 remaindernear 12345  1.1       -> -0.3
-dqrmn386 remaindernear 12355  4         -> -1
-dqrmn387 remaindernear 12345  4         ->  1
-dqrmn388 remaindernear 12355  4.0001    -> -1.3089
-dqrmn389 remaindernear 12345  4.0001    ->  0.6914
-dqrmn390 remaindernear 12345  4.9       ->  1.9
-dqrmn391 remaindernear 12345  4.99      -> -0.26
-dqrmn392 remaindernear 12345  4.999     ->  2.469
-dqrmn393 remaindernear 12345  4.9999    ->  0.2469
-dqrmn394 remaindernear 12345  5         ->  0
-dqrmn395 remaindernear 12345  5.0001    -> -0.2469
-dqrmn396 remaindernear 12345  5.001     -> -2.469
-dqrmn397 remaindernear 12345  5.01      ->  0.36
-dqrmn398 remaindernear 12345  5.1       -> -2.1
-
--- the nasty division-by-1 cases
-dqrmn401 remaindernear   0.4         1   ->  0.4
-dqrmn402 remaindernear   0.45        1   ->  0.45
-dqrmn403 remaindernear   0.455       1   ->  0.455
-dqrmn404 remaindernear   0.4555      1   ->  0.4555
-dqrmn405 remaindernear   0.45555     1   ->  0.45555
-dqrmn406 remaindernear   0.455555    1   ->  0.455555
-dqrmn407 remaindernear   0.4555555   1   ->  0.4555555
-dqrmn408 remaindernear   0.45555555  1   ->  0.45555555
-dqrmn409 remaindernear   0.455555555 1   ->  0.455555555
--- with spill... [412 exercises sticktab loop]
-dqrmn411 remaindernear   0.5         1   ->  0.5
-dqrmn412 remaindernear   0.55        1   -> -0.45
-dqrmn413 remaindernear   0.555       1   -> -0.445
-dqrmn414 remaindernear   0.5555      1   -> -0.4445
-dqrmn415 remaindernear   0.55555     1   -> -0.44445
-dqrmn416 remaindernear   0.555555    1   -> -0.444445
-dqrmn417 remaindernear   0.5555555   1   -> -0.4444445
-dqrmn418 remaindernear   0.55555555  1   -> -0.44444445
-dqrmn419 remaindernear   0.555555555 1   -> -0.444444445
-
--- folddowns
-dqrmn421 remaindernear   1E+6144        1  ->   NaN Division_impossible
-dqrmn422 remaindernear   1E+6144  1E+6143  ->   0E+6111 Clamped
-dqrmn423 remaindernear   1E+6144  2E+6143  ->   0E+6111 Clamped
-dqrmn424 remaindernear   1E+6144  3E+6143  ->   1.00000000000000000000000000000000E+6143 Clamped
-dqrmn425 remaindernear   1E+6144  4E+6143  ->   2.00000000000000000000000000000000E+6143 Clamped
-dqrmn426 remaindernear   1E+6144  5E+6143  ->   0E+6111 Clamped
-dqrmn427 remaindernear   1E+6144  6E+6143  ->  -2.00000000000000000000000000000000E+6143 Clamped
-dqrmn428 remaindernear   1E+6144  7E+6143  ->   3.00000000000000000000000000000000E+6143 Clamped
-dqrmn429 remaindernear   1E+6144  8E+6143  ->   2.00000000000000000000000000000000E+6143 Clamped
-dqrmn430 remaindernear   1E+6144  9E+6143  ->   1.00000000000000000000000000000000E+6143 Clamped
--- tinies
-dqrmn431 remaindernear   1E-6175  1E-6176  ->   0E-6176
-dqrmn432 remaindernear   1E-6175  2E-6176  ->   0E-6176
-dqrmn433 remaindernear   1E-6175  3E-6176  ->   1E-6176 Subnormal
-dqrmn434 remaindernear   1E-6175  4E-6176  ->   2E-6176 Subnormal
-dqrmn435 remaindernear   1E-6175  5E-6176  ->   0E-6176
-dqrmn436 remaindernear   1E-6175  6E-6176  ->  -2E-6176 Subnormal
-dqrmn437 remaindernear   1E-6175  7E-6176  ->   3E-6176 Subnormal
-dqrmn438 remaindernear   1E-6175  8E-6176  ->   2E-6176 Subnormal
-dqrmn439 remaindernear   1E-6175  9E-6176  ->   1E-6176 Subnormal
-dqrmn440 remaindernear   1E-6175 10E-6176  ->   0E-6176
-dqrmn441 remaindernear   1E-6175 11E-6176  ->  -1E-6176 Subnormal
-dqrmn442 remaindernear 100E-6175 11E-6176  ->  -1E-6176 Subnormal
-dqrmn443 remaindernear 100E-6175 20E-6176  ->   0E-6176
-dqrmn444 remaindernear 100E-6175 21E-6176  ->  -8E-6176 Subnormal
-dqrmn445 remaindernear 100E-6175 30E-6176  -> 1.0E-6175 Subnormal
-
--- zero signs
-dqrmn650 remaindernear  1  1 ->  0
-dqrmn651 remaindernear -1  1 -> -0
-dqrmn652 remaindernear  1 -1 ->  0
-dqrmn653 remaindernear -1 -1 -> -0
-dqrmn654 remaindernear  0  1 ->  0
-dqrmn655 remaindernear -0  1 -> -0
-dqrmn656 remaindernear  0 -1 ->  0
-dqrmn657 remaindernear -0 -1 -> -0
-dqrmn658 remaindernear  0.00  1  ->  0.00
-dqrmn659 remaindernear -0.00  1  -> -0.00
-
--- Specials
-dqrmn680 remaindernear  Inf  -Inf   ->  NaN Invalid_operation
-dqrmn681 remaindernear  Inf  -1000  ->  NaN Invalid_operation
-dqrmn682 remaindernear  Inf  -1     ->  NaN Invalid_operation
-dqrmn683 remaindernear  Inf   0     ->  NaN Invalid_operation
-dqrmn684 remaindernear  Inf  -0     ->  NaN Invalid_operation
-dqrmn685 remaindernear  Inf   1     ->  NaN Invalid_operation
-dqrmn686 remaindernear  Inf   1000  ->  NaN Invalid_operation
-dqrmn687 remaindernear  Inf   Inf   ->  NaN Invalid_operation
-dqrmn688 remaindernear -1000  Inf   -> -1000
-dqrmn689 remaindernear -Inf   Inf   ->  NaN Invalid_operation
-dqrmn691 remaindernear -1     Inf   -> -1
-dqrmn692 remaindernear  0     Inf   ->  0
-dqrmn693 remaindernear -0     Inf   -> -0
-dqrmn694 remaindernear  1     Inf   ->  1
-dqrmn695 remaindernear  1000  Inf   ->  1000
-dqrmn696 remaindernear  Inf   Inf   ->  NaN Invalid_operation
-
-dqrmn700 remaindernear -Inf  -Inf   ->  NaN Invalid_operation
-dqrmn701 remaindernear -Inf  -1000  ->  NaN Invalid_operation
-dqrmn702 remaindernear -Inf  -1     ->  NaN Invalid_operation
-dqrmn703 remaindernear -Inf  -0     ->  NaN Invalid_operation
-dqrmn704 remaindernear -Inf   0     ->  NaN Invalid_operation
-dqrmn705 remaindernear -Inf   1     ->  NaN Invalid_operation
-dqrmn706 remaindernear -Inf   1000  ->  NaN Invalid_operation
-dqrmn707 remaindernear -Inf   Inf   ->  NaN Invalid_operation
-dqrmn708 remaindernear -Inf  -Inf   ->  NaN Invalid_operation
-dqrmn709 remaindernear -1000  Inf   -> -1000
-dqrmn710 remaindernear -1    -Inf   -> -1
-dqrmn711 remaindernear -0    -Inf   -> -0
-dqrmn712 remaindernear  0    -Inf   ->  0
-dqrmn713 remaindernear  1    -Inf   ->  1
-dqrmn714 remaindernear  1000 -Inf   ->  1000
-dqrmn715 remaindernear  Inf  -Inf   ->  NaN Invalid_operation
-
-dqrmn721 remaindernear  NaN -Inf    ->  NaN
-dqrmn722 remaindernear  NaN -1000   ->  NaN
-dqrmn723 remaindernear  NaN -1      ->  NaN
-dqrmn724 remaindernear  NaN -0      ->  NaN
-dqrmn725 remaindernear -NaN  0      -> -NaN
-dqrmn726 remaindernear  NaN  1      ->  NaN
-dqrmn727 remaindernear  NaN  1000   ->  NaN
-dqrmn728 remaindernear  NaN  Inf    ->  NaN
-dqrmn729 remaindernear  NaN -NaN    ->  NaN
-dqrmn730 remaindernear -Inf  NaN    ->  NaN
-dqrmn731 remaindernear -1000 NaN    ->  NaN
-dqrmn732 remaindernear -1    NaN    ->  NaN
-dqrmn733 remaindernear -0   -NaN    -> -NaN
-dqrmn734 remaindernear  0    NaN    ->  NaN
-dqrmn735 remaindernear  1   -NaN    -> -NaN
-dqrmn736 remaindernear  1000 NaN    ->  NaN
-dqrmn737 remaindernear  Inf  NaN    ->  NaN
-
-dqrmn741 remaindernear  sNaN -Inf   ->  NaN  Invalid_operation
-dqrmn742 remaindernear  sNaN -1000  ->  NaN  Invalid_operation
-dqrmn743 remaindernear -sNaN -1     -> -NaN  Invalid_operation
-dqrmn744 remaindernear  sNaN -0     ->  NaN  Invalid_operation
-dqrmn745 remaindernear  sNaN  0     ->  NaN  Invalid_operation
-dqrmn746 remaindernear  sNaN  1     ->  NaN  Invalid_operation
-dqrmn747 remaindernear  sNaN  1000  ->  NaN  Invalid_operation
-dqrmn749 remaindernear  sNaN  NaN   ->  NaN  Invalid_operation
-dqrmn750 remaindernear  sNaN sNaN   ->  NaN  Invalid_operation
-dqrmn751 remaindernear  NaN  sNaN   ->  NaN  Invalid_operation
-dqrmn752 remaindernear -Inf  sNaN   ->  NaN  Invalid_operation
-dqrmn753 remaindernear -1000 sNaN   ->  NaN  Invalid_operation
-dqrmn754 remaindernear -1    sNaN   ->  NaN  Invalid_operation
-dqrmn755 remaindernear -0    sNaN   ->  NaN  Invalid_operation
-dqrmn756 remaindernear  0    sNaN   ->  NaN  Invalid_operation
-dqrmn757 remaindernear  1    sNaN   ->  NaN  Invalid_operation
-dqrmn758 remaindernear  1000 sNaN   ->  NaN  Invalid_operation
-dqrmn759 remaindernear  Inf -sNaN   -> -NaN  Invalid_operation
-
--- propaging NaNs
-dqrmn760 remaindernear  NaN1   NaN7   ->  NaN1
-dqrmn761 remaindernear sNaN2   NaN8   ->  NaN2 Invalid_operation
-dqrmn762 remaindernear  NaN3  sNaN9   ->  NaN9 Invalid_operation
-dqrmn763 remaindernear sNaN4  sNaN10  ->  NaN4 Invalid_operation
-dqrmn764 remaindernear    15   NaN11  ->  NaN11
-dqrmn765 remaindernear  NaN6   NaN12  ->  NaN6
-dqrmn766 remaindernear  Inf    NaN13  ->  NaN13
-dqrmn767 remaindernear  NaN14  -Inf   ->  NaN14
-dqrmn768 remaindernear    0    NaN15  ->  NaN15
-dqrmn769 remaindernear  NaN16   -0    ->  NaN16
-
--- edge cases of impossible
-dqrmn770  remaindernear  1234500000000000000000067890123456  10    -> -4
-dqrmn771  remaindernear  1234500000000000000000067890123456   1    ->  0
-dqrmn772  remaindernear  1234500000000000000000067890123456   0.1  ->  NaN Division_impossible
-dqrmn773  remaindernear  1234500000000000000000067890123456   0.01 ->  NaN Division_impossible
-
--- long operand checks
-dqrmn801 remaindernear 12345678000 100 -> 0
-dqrmn802 remaindernear 1 12345678000   -> 1
-dqrmn803 remaindernear 1234567800  10  -> 0
-dqrmn804 remaindernear 1 1234567800    -> 1
-dqrmn805 remaindernear 1234567890  10  -> 0
-dqrmn806 remaindernear 1 1234567890    -> 1
-dqrmn807 remaindernear 1234567891  10  -> 1
-dqrmn808 remaindernear 1 1234567891    -> 1
-dqrmn809 remaindernear 12345678901 100 -> 1
-dqrmn810 remaindernear 1 12345678901   -> 1
-dqrmn811 remaindernear 1234567896  10  -> -4
-dqrmn812 remaindernear 1 1234567896    -> 1
-
-dqrmn821 remaindernear 12345678000 100 -> 0
-dqrmn822 remaindernear 1 12345678000   -> 1
-dqrmn823 remaindernear 1234567800  10  -> 0
-dqrmn824 remaindernear 1 1234567800    -> 1
-dqrmn825 remaindernear 1234567890  10  -> 0
-dqrmn826 remaindernear 1 1234567890    -> 1
-dqrmn827 remaindernear 1234567891  10  -> 1
-dqrmn828 remaindernear 1 1234567891    -> 1
-dqrmn829 remaindernear 12345678901 100 -> 1
-dqrmn830 remaindernear 1 12345678901   -> 1
-dqrmn831 remaindernear 1234567896  10  -> -4
-dqrmn832 remaindernear 1 1234567896    -> 1
-
--- from divideint
-dqrmn840 remaindernear  100000000.0   1  ->  0.0
-dqrmn841 remaindernear  100000000.4   1  ->  0.4
-dqrmn842 remaindernear  100000000.5   1  ->  0.5
-dqrmn843 remaindernear  100000000.9   1  -> -0.1
-dqrmn844 remaindernear  100000000.999 1  -> -0.001
-dqrmn850 remaindernear  100000003     5  -> -2
-dqrmn851 remaindernear  10000003      5  -> -2
-dqrmn852 remaindernear  1000003       5  -> -2
-dqrmn853 remaindernear  100003        5  -> -2
-dqrmn854 remaindernear  10003         5  -> -2
-dqrmn855 remaindernear  1003          5  -> -2
-dqrmn856 remaindernear  103           5  -> -2
-dqrmn857 remaindernear  13            5  -> -2
-dqrmn858 remaindernear  1             5  ->  1
-
--- Vladimir's cases         1234567890123456
-dqrmn860 remaindernear 123.0e1 1000000000000000  -> 1230
-dqrmn861 remaindernear 1230    1000000000000000  -> 1230
-dqrmn862 remaindernear 12.3e2  1000000000000000  -> 1230
-dqrmn863 remaindernear 1.23e3  1000000000000000  -> 1230
-dqrmn864 remaindernear 123e1   1000000000000000  -> 1230
-dqrmn870 remaindernear 123e1    1000000000000000 -> 1230
-dqrmn871 remaindernear 123e1     100000000000000 -> 1230
-dqrmn872 remaindernear 123e1      10000000000000 -> 1230
-dqrmn873 remaindernear 123e1       1000000000000 -> 1230
-dqrmn874 remaindernear 123e1        100000000000 -> 1230
-dqrmn875 remaindernear 123e1         10000000000 -> 1230
-dqrmn876 remaindernear 123e1          1000000000 -> 1230
-dqrmn877 remaindernear 123e1           100000000 -> 1230
-dqrmn878 remaindernear 1230            100000000 -> 1230
-dqrmn879 remaindernear 123e1            10000000 -> 1230
-dqrmn880 remaindernear 123e1             1000000 -> 1230
-dqrmn881 remaindernear 123e1              100000 -> 1230
-dqrmn882 remaindernear 123e1               10000 -> 1230
-dqrmn883 remaindernear 123e1                1000 ->  230
-dqrmn884 remaindernear 123e1                 100 ->   30
-dqrmn885 remaindernear 123e1                  10 ->    0
-dqrmn886 remaindernear 123e1                   1 ->    0
-
-dqrmn890 remaindernear 123e1    2000000000000000 -> 1230
-dqrmn891 remaindernear 123e1     200000000000000 -> 1230
-dqrmn892 remaindernear 123e1      20000000000000 -> 1230
-dqrmn893 remaindernear 123e1       2000000000000 -> 1230
-dqrmn894 remaindernear 123e1        200000000000 -> 1230
-dqrmn895 remaindernear 123e1         20000000000 -> 1230
-dqrmn896 remaindernear 123e1          2000000000 -> 1230
-dqrmn897 remaindernear 123e1           200000000 -> 1230
-dqrmn899 remaindernear 123e1            20000000 -> 1230
-dqrmn900 remaindernear 123e1             2000000 -> 1230
-dqrmn901 remaindernear 123e1              200000 -> 1230
-dqrmn902 remaindernear 123e1               20000 -> 1230
-dqrmn903 remaindernear 123e1                2000 -> -770
-dqrmn904 remaindernear 123e1                 200 ->   30
-dqrmn905 remaindernear 123e1                  20 ->  -10
-dqrmn906 remaindernear 123e1                   2 ->    0
-
-dqrmn910 remaindernear 123e1    5000000000000000 -> 1230
-dqrmn911 remaindernear 123e1     500000000000000 -> 1230
-dqrmn912 remaindernear 123e1      50000000000000 -> 1230
-dqrmn913 remaindernear 123e1       5000000000000 -> 1230
-dqrmn914 remaindernear 123e1        500000000000 -> 1230
-dqrmn915 remaindernear 123e1         50000000000 -> 1230
-dqrmn916 remaindernear 123e1          5000000000 -> 1230
-dqrmn917 remaindernear 123e1           500000000 -> 1230
-dqrmn919 remaindernear 123e1            50000000 -> 1230
-dqrmn920 remaindernear 123e1             5000000 -> 1230
-dqrmn921 remaindernear 123e1              500000 -> 1230
-dqrmn922 remaindernear 123e1               50000 -> 1230
-dqrmn923 remaindernear 123e1                5000 -> 1230
-dqrmn924 remaindernear 123e1                 500 ->  230
-dqrmn925 remaindernear 123e1                  50 ->  -20
-dqrmn926 remaindernear 123e1                   5 ->    0
-
-dqrmn930 remaindernear 123e1    9000000000000000 -> 1230
-dqrmn931 remaindernear 123e1     900000000000000 -> 1230
-dqrmn932 remaindernear 123e1      90000000000000 -> 1230
-dqrmn933 remaindernear 123e1       9000000000000 -> 1230
-dqrmn934 remaindernear 123e1        900000000000 -> 1230
-dqrmn935 remaindernear 123e1         90000000000 -> 1230
-dqrmn936 remaindernear 123e1          9000000000 -> 1230
-dqrmn937 remaindernear 123e1           900000000 -> 1230
-dqrmn939 remaindernear 123e1            90000000 -> 1230
-dqrmn940 remaindernear 123e1             9000000 -> 1230
-dqrmn941 remaindernear 123e1              900000 -> 1230
-dqrmn942 remaindernear 123e1               90000 -> 1230
-dqrmn943 remaindernear 123e1                9000 -> 1230
-dqrmn944 remaindernear 123e1                 900 ->  330
-dqrmn945 remaindernear 123e1                  90 ->  -30
-dqrmn946 remaindernear 123e1                   9 ->   -3
-
-dqrmn950 remaindernear 123e1   1000000000000000 -> 1230
-dqrmn961 remaindernear 123e1   2999999999999999 -> 1230
-dqrmn962 remaindernear 123e1   3999999999999999 -> 1230
-dqrmn963 remaindernear 123e1   4999999999999999 -> 1230
-dqrmn964 remaindernear 123e1   5999999999999999 -> 1230
-dqrmn965 remaindernear 123e1   6999999999999999 -> 1230
-dqrmn966 remaindernear 123e1   7999999999999999 -> 1230
-dqrmn967 remaindernear 123e1   8999999999999999 -> 1230
-dqrmn968 remaindernear 123e1   9999999999999999 -> 1230
-dqrmn969 remaindernear 123e1   9876543210987654 -> 1230
-
-dqrmn980 remaindernear 123e1 1000E299 -> 1.23E+3  -- 123E+1 internally
-
--- overflow and underflow tests [from divide]
-dqrmn1051 remaindernear  1e+277  1e-311 ->  NaN Division_impossible
-dqrmn1052 remaindernear  1e+277 -1e-311 ->  NaN Division_impossible
-dqrmn1053 remaindernear -1e+277  1e-311 ->  NaN Division_impossible
-dqrmn1054 remaindernear -1e+277 -1e-311 ->  NaN Division_impossible
-dqrmn1055 remaindernear  1e-277  1e+311 ->  1E-277
-dqrmn1056 remaindernear  1e-277 -1e+311 ->  1E-277
-dqrmn1057 remaindernear -1e-277  1e+311 -> -1E-277
-dqrmn1058 remaindernear -1e-277 -1e+311 -> -1E-277
-
--- Gyuris example
-dqrmn1070 remainder 8.336804418094040989630006819881709E-6143 8.336804418094040989630006819889000E-6143 -> 8.336804418094040989630006819881709E-6143
-
--- destructive subtract
-dqrmn1101  remaindernear  1234567890123456789012345678901234  1.000000000000000000000000000000001  ->  -0.234567890123456789012345678901233
-dqrmn1102  remaindernear  1234567890123456789012345678901234   1.00000000000000000000000000000001  ->   -0.34567890123456789012345678901222
-dqrmn1103  remaindernear  1234567890123456789012345678901234    1.0000000000000000000000000000001  ->    -0.4567890123456789012345678901111
-dqrmn1104  remaindernear  1234567890123456789012345678901255  4.000000000000000000000000000000001  ->  -1.308641972530864197253086419725314
-dqrmn1105  remaindernear  1234567890123456789012345678901234  4.000000000000000000000000000000001  ->   1.691358027469135802746913580274692
-dqrmn1106  remaindernear  1234567890123456789012345678901234    4.9999999999999999999999999999999  ->    -1.3086421975308642197530864219748
-dqrmn1107  remaindernear  1234567890123456789012345678901234   4.99999999999999999999999999999999  ->    1.46913578024691357802469135780247
-dqrmn1108  remaindernear  1234567890123456789012345678901234  4.999999999999999999999999999999999  ->  -0.753086421975308642197530864219753
-dqrmn1109  remaindernear  1234567890123456789012345678901234  5.000000000000000000000000000000001  ->  -1.246913578024691357802469135780247
-dqrmn1110  remaindernear  1234567890123456789012345678901234   5.00000000000000000000000000000001  ->    1.53086421975308642197530864219754
-dqrmn1111  remaindernear  1234567890123456789012345678901234    5.0000000000000000000000000000001  ->    -0.6913578024691357802469135780242
-
--- Null tests
-dqrmn1000 remaindernear 10  # -> NaN Invalid_operation
-dqrmn1001 remaindernear  # 10 -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRotate.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRotate.decTest
deleted file mode 100644
index 858b823..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqRotate.decTest
+++ /dev/null
@@ -1,298 +0,0 @@
-------------------------------------------------------------------------
--- dqRotate.decTest -- rotate decQuad coefficient left or right       --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- Sanity check
-dqrot001 rotate                                   0    0  ->  0
-dqrot002 rotate                                   0    2  ->  0
-dqrot003 rotate                                   1    2  ->  100
-dqrot004 rotate                                   1   33  ->  1000000000000000000000000000000000
-dqrot005 rotate                                   1   34  ->  1
-dqrot006 rotate                                   1   -1  ->  1000000000000000000000000000000000
-dqrot007 rotate                                   0   -2  ->  0
-dqrot008 rotate  1234567890123456789012345678901234   -1  ->  4123456789012345678901234567890123
-dqrot009 rotate  1234567890123456789012345678901234   -33 ->  2345678901234567890123456789012341
-dqrot010 rotate  1234567890123456789012345678901234   -34 ->  1234567890123456789012345678901234
-dqrot011 rotate  9934567890123456789012345678901234   -33 ->  9345678901234567890123456789012349
-dqrot012 rotate  9934567890123456789012345678901234   -34 ->  9934567890123456789012345678901234
-
--- rhs must be an integer
-dqrot015 rotate        1    1.5    -> NaN Invalid_operation
-dqrot016 rotate        1    1.0    -> NaN Invalid_operation
-dqrot017 rotate        1    0.1    -> NaN Invalid_operation
-dqrot018 rotate        1    0.0    -> NaN Invalid_operation
-dqrot019 rotate        1    1E+1   -> NaN Invalid_operation
-dqrot020 rotate        1    1E+99  -> NaN Invalid_operation
-dqrot021 rotate        1    Inf    -> NaN Invalid_operation
-dqrot022 rotate        1    -Inf   -> NaN Invalid_operation
--- and |rhs| <= precision
-dqrot025 rotate        1    -1000  -> NaN Invalid_operation
-dqrot026 rotate        1    -35    -> NaN Invalid_operation
-dqrot027 rotate        1     35    -> NaN Invalid_operation
-dqrot028 rotate        1     1000  -> NaN Invalid_operation
-
--- full pattern
-dqrot030 rotate  1234567890123456789012345678901234         -34  -> 1234567890123456789012345678901234
-dqrot031 rotate  1234567890123456789012345678901234         -33  -> 2345678901234567890123456789012341
-dqrot032 rotate  1234567890123456789012345678901234         -32  -> 3456789012345678901234567890123412
-dqrot033 rotate  1234567890123456789012345678901234         -31  -> 4567890123456789012345678901234123
-dqrot034 rotate  1234567890123456789012345678901234         -30  -> 5678901234567890123456789012341234
-dqrot035 rotate  1234567890123456789012345678901234         -29  -> 6789012345678901234567890123412345
-dqrot036 rotate  1234567890123456789012345678901234         -28  -> 7890123456789012345678901234123456
-dqrot037 rotate  1234567890123456789012345678901234         -27  -> 8901234567890123456789012341234567
-dqrot038 rotate  1234567890123456789012345678901234         -26  -> 9012345678901234567890123412345678
-dqrot039 rotate  1234567890123456789012345678901234         -25  ->  123456789012345678901234123456789
-dqrot040 rotate  1234567890123456789012345678901234         -24  -> 1234567890123456789012341234567890
-dqrot041 rotate  1234567890123456789012345678901234         -23  -> 2345678901234567890123412345678901
-dqrot042 rotate  1234567890123456789012345678901234         -22  -> 3456789012345678901234123456789012
-dqrot043 rotate  1234567890123456789012345678901234         -21  -> 4567890123456789012341234567890123
-dqrot044 rotate  1234567890123456789012345678901234         -20  -> 5678901234567890123412345678901234
-dqrot045 rotate  1234567890123456789012345678901234         -19  -> 6789012345678901234123456789012345
-dqrot047 rotate  1234567890123456789012345678901234         -18  -> 7890123456789012341234567890123456
-dqrot048 rotate  1234567890123456789012345678901234         -17  -> 8901234567890123412345678901234567
-dqrot049 rotate  1234567890123456789012345678901234         -16  -> 9012345678901234123456789012345678
-dqrot050 rotate  1234567890123456789012345678901234         -15  ->  123456789012341234567890123456789
-dqrot051 rotate  1234567890123456789012345678901234         -14  -> 1234567890123412345678901234567890
-dqrot052 rotate  1234567890123456789012345678901234         -13  -> 2345678901234123456789012345678901
-dqrot053 rotate  1234567890123456789012345678901234         -12  -> 3456789012341234567890123456789012
-dqrot054 rotate  1234567890123456789012345678901234         -11  -> 4567890123412345678901234567890123
-dqrot055 rotate  1234567890123456789012345678901234         -10  -> 5678901234123456789012345678901234
-dqrot056 rotate  1234567890123456789012345678901234         -9   -> 6789012341234567890123456789012345
-dqrot057 rotate  1234567890123456789012345678901234         -8   -> 7890123412345678901234567890123456
-dqrot058 rotate  1234567890123456789012345678901234         -7   -> 8901234123456789012345678901234567
-dqrot059 rotate  1234567890123456789012345678901234         -6   -> 9012341234567890123456789012345678
-dqrot060 rotate  1234567890123456789012345678901234         -5   ->  123412345678901234567890123456789
-dqrot061 rotate  1234567890123456789012345678901234         -4   -> 1234123456789012345678901234567890
-dqrot062 rotate  1234567890123456789012345678901234         -3   -> 2341234567890123456789012345678901
-dqrot063 rotate  1234567890123456789012345678901234         -2   -> 3412345678901234567890123456789012
-dqrot064 rotate  1234567890123456789012345678901234         -1   -> 4123456789012345678901234567890123
-dqrot065 rotate  1234567890123456789012345678901234         -0   -> 1234567890123456789012345678901234
-
-dqrot066 rotate  1234567890123456789012345678901234         +0   -> 1234567890123456789012345678901234
-dqrot067 rotate  1234567890123456789012345678901234         +1   -> 2345678901234567890123456789012341
-dqrot068 rotate  1234567890123456789012345678901234         +2   -> 3456789012345678901234567890123412
-dqrot069 rotate  1234567890123456789012345678901234         +3   -> 4567890123456789012345678901234123
-dqrot070 rotate  1234567890123456789012345678901234         +4   -> 5678901234567890123456789012341234
-dqrot071 rotate  1234567890123456789012345678901234         +5   -> 6789012345678901234567890123412345
-dqrot072 rotate  1234567890123456789012345678901234         +6   -> 7890123456789012345678901234123456
-dqrot073 rotate  1234567890123456789012345678901234         +7   -> 8901234567890123456789012341234567
-dqrot074 rotate  1234567890123456789012345678901234         +8   -> 9012345678901234567890123412345678
-dqrot075 rotate  1234567890123456789012345678901234         +9   ->  123456789012345678901234123456789
-dqrot076 rotate  1234567890123456789012345678901234         +10  -> 1234567890123456789012341234567890
-dqrot077 rotate  1234567890123456789012345678901234         +11  -> 2345678901234567890123412345678901
-dqrot078 rotate  1234567890123456789012345678901234         +12  -> 3456789012345678901234123456789012
-dqrot079 rotate  1234567890123456789012345678901234         +13  -> 4567890123456789012341234567890123
-dqrot080 rotate  1234567890123456789012345678901234         +14  -> 5678901234567890123412345678901234
-dqrot081 rotate  1234567890123456789012345678901234         +15  -> 6789012345678901234123456789012345
-dqrot082 rotate  1234567890123456789012345678901234         +16  -> 7890123456789012341234567890123456
-dqrot083 rotate  1234567890123456789012345678901234         +17  -> 8901234567890123412345678901234567
-dqrot084 rotate  1234567890123456789012345678901234         +18  -> 9012345678901234123456789012345678
-dqrot085 rotate  1234567890123456789012345678901234         +19  ->  123456789012341234567890123456789
-dqrot086 rotate  1234567890123456789012345678901234         +20  -> 1234567890123412345678901234567890
-dqrot087 rotate  1234567890123456789012345678901234         +21  -> 2345678901234123456789012345678901
-dqrot088 rotate  1234567890123456789012345678901234         +22  -> 3456789012341234567890123456789012
-dqrot089 rotate  1234567890123456789012345678901234         +23  -> 4567890123412345678901234567890123
-dqrot090 rotate  1234567890123456789012345678901234         +24  -> 5678901234123456789012345678901234
-dqrot091 rotate  1234567890123456789012345678901234         +25  -> 6789012341234567890123456789012345
-dqrot092 rotate  1234567890123456789012345678901234         +26  -> 7890123412345678901234567890123456
-dqrot093 rotate  1234567890123456789012345678901234         +27  -> 8901234123456789012345678901234567
-dqrot094 rotate  1234567890123456789012345678901234         +28  -> 9012341234567890123456789012345678
-dqrot095 rotate  1234567890123456789012345678901234         +29  ->  123412345678901234567890123456789
-dqrot096 rotate  1234567890123456789012345678901234         +30  -> 1234123456789012345678901234567890
-dqrot097 rotate  1234567890123456789012345678901234         +31  -> 2341234567890123456789012345678901
-dqrot098 rotate  1234567890123456789012345678901234         +32  -> 3412345678901234567890123456789012
-dqrot099 rotate  1234567890123456789012345678901234         +33  -> 4123456789012345678901234567890123
-dqrot100 rotate  1234567890123456789012345678901234         +34  -> 1234567890123456789012345678901234
-
--- zeros
-dqrot270 rotate  0E-10              +29   ->   0E-10
-dqrot271 rotate  0E-10              -29   ->   0E-10
-dqrot272 rotate  0.000              +29   ->   0.000
-dqrot273 rotate  0.000              -29   ->   0.000
-dqrot274 rotate  0E+10              +29   ->   0E+10
-dqrot275 rotate  0E+10              -29   ->   0E+10
-dqrot276 rotate -0E-10              +29   ->  -0E-10
-dqrot277 rotate -0E-10              -29   ->  -0E-10
-dqrot278 rotate -0.000              +29   ->  -0.000
-dqrot279 rotate -0.000              -29   ->  -0.000
-dqrot280 rotate -0E+10              +29   ->  -0E+10
-dqrot281 rotate -0E+10              -29   ->  -0E+10
-
--- Nmax, Nmin, Ntiny
-dqrot141 rotate  9.999999999999999999999999999999999E+6144     -1  -> 9.999999999999999999999999999999999E+6144
-dqrot142 rotate  9.999999999999999999999999999999999E+6144     -33 -> 9.999999999999999999999999999999999E+6144
-dqrot143 rotate  9.999999999999999999999999999999999E+6144      1  -> 9.999999999999999999999999999999999E+6144
-dqrot144 rotate  9.999999999999999999999999999999999E+6144      33 -> 9.999999999999999999999999999999999E+6144
-dqrot145 rotate  1E-6143                                       -1  -> 1.000000000000000000000000000000000E-6110
-dqrot146 rotate  1E-6143                                       -33 -> 1.0E-6142
-dqrot147 rotate  1E-6143                                        1  -> 1.0E-6142
-dqrot148 rotate  1E-6143                                        33 -> 1.000000000000000000000000000000000E-6110
-dqrot151 rotate  1.000000000000000000000000000000000E-6143     -1  -> 1.00000000000000000000000000000000E-6144
-dqrot152 rotate  1.000000000000000000000000000000000E-6143     -33 -> 1E-6176
-dqrot153 rotate  1.000000000000000000000000000000000E-6143      1  -> 1E-6176
-dqrot154 rotate  1.000000000000000000000000000000000E-6143      33 -> 1.00000000000000000000000000000000E-6144
-dqrot155 rotate  9.000000000000000000000000000000000E-6143     -1  -> 9.00000000000000000000000000000000E-6144
-dqrot156 rotate  9.000000000000000000000000000000000E-6143     -33 -> 9E-6176
-dqrot157 rotate  9.000000000000000000000000000000000E-6143      1  -> 9E-6176
-dqrot158 rotate  9.000000000000000000000000000000000E-6143      33 -> 9.00000000000000000000000000000000E-6144
-dqrot160 rotate  1E-6176                                       -1  -> 1.000000000000000000000000000000000E-6143
-dqrot161 rotate  1E-6176                                       -33 -> 1.0E-6175
-dqrot162 rotate  1E-6176                                        1  -> 1.0E-6175
-dqrot163 rotate  1E-6176                                        33 -> 1.000000000000000000000000000000000E-6143
---  negatives
-dqrot171 rotate -9.999999999999999999999999999999999E+6144     -1  -> -9.999999999999999999999999999999999E+6144
-dqrot172 rotate -9.999999999999999999999999999999999E+6144     -33 -> -9.999999999999999999999999999999999E+6144
-dqrot173 rotate -9.999999999999999999999999999999999E+6144      1  -> -9.999999999999999999999999999999999E+6144
-dqrot174 rotate -9.999999999999999999999999999999999E+6144      33 -> -9.999999999999999999999999999999999E+6144
-dqrot175 rotate -1E-6143                                       -1  -> -1.000000000000000000000000000000000E-6110
-dqrot176 rotate -1E-6143                                       -33 -> -1.0E-6142
-dqrot177 rotate -1E-6143                                        1  -> -1.0E-6142
-dqrot178 rotate -1E-6143                                        33 -> -1.000000000000000000000000000000000E-6110
-dqrot181 rotate -1.000000000000000000000000000000000E-6143     -1  -> -1.00000000000000000000000000000000E-6144
-dqrot182 rotate -1.000000000000000000000000000000000E-6143     -33 -> -1E-6176
-dqrot183 rotate -1.000000000000000000000000000000000E-6143      1  -> -1E-6176
-dqrot184 rotate -1.000000000000000000000000000000000E-6143      33 -> -1.00000000000000000000000000000000E-6144
-dqrot185 rotate -9.000000000000000000000000000000000E-6143     -1  -> -9.00000000000000000000000000000000E-6144
-dqrot186 rotate -9.000000000000000000000000000000000E-6143     -33 -> -9E-6176
-dqrot187 rotate -9.000000000000000000000000000000000E-6143      1  -> -9E-6176
-dqrot188 rotate -9.000000000000000000000000000000000E-6143      33 -> -9.00000000000000000000000000000000E-6144
-dqrot190 rotate -1E-6176                                       -1  -> -1.000000000000000000000000000000000E-6143
-dqrot191 rotate -1E-6176                                       -33 -> -1.0E-6175
-dqrot192 rotate -1E-6176                                        1  -> -1.0E-6175
-dqrot193 rotate -1E-6176                                        33 -> -1.000000000000000000000000000000000E-6143
-
--- more negatives (of sanities)
-dqrot201 rotate                                  -0    0  -> -0
-dqrot202 rotate                                  -0    2  -> -0
-dqrot203 rotate                                  -1    2  -> -100
-dqrot204 rotate                                  -1   33  -> -1000000000000000000000000000000000
-dqrot205 rotate                                  -1   34  -> -1
-dqrot206 rotate                                  -1   -1  -> -1000000000000000000000000000000000
-dqrot207 rotate                                  -0   -2  -> -0
-dqrot208 rotate -1234567890123456789012345678901234   -1  -> -4123456789012345678901234567890123
-dqrot209 rotate -1234567890123456789012345678901234   -33 -> -2345678901234567890123456789012341
-dqrot210 rotate -1234567890123456789012345678901234   -34 -> -1234567890123456789012345678901234
-dqrot211 rotate -9934567890123456789012345678901234   -33 -> -9345678901234567890123456789012349
-dqrot212 rotate -9934567890123456789012345678901234   -34 -> -9934567890123456789012345678901234
-
-
--- Specials; NaNs are handled as usual
-dqrot781 rotate -Inf  -8     -> -Infinity
-dqrot782 rotate -Inf  -1     -> -Infinity
-dqrot783 rotate -Inf  -0     -> -Infinity
-dqrot784 rotate -Inf   0     -> -Infinity
-dqrot785 rotate -Inf   1     -> -Infinity
-dqrot786 rotate -Inf   8     -> -Infinity
-dqrot787 rotate -1000 -Inf   -> NaN Invalid_operation
-dqrot788 rotate -Inf  -Inf   -> NaN Invalid_operation
-dqrot789 rotate -1    -Inf   -> NaN Invalid_operation
-dqrot790 rotate -0    -Inf   -> NaN Invalid_operation
-dqrot791 rotate  0    -Inf   -> NaN Invalid_operation
-dqrot792 rotate  1    -Inf   -> NaN Invalid_operation
-dqrot793 rotate  1000 -Inf   -> NaN Invalid_operation
-dqrot794 rotate  Inf  -Inf   -> NaN Invalid_operation
-
-dqrot800 rotate  Inf  -Inf   -> NaN Invalid_operation
-dqrot801 rotate  Inf  -8     -> Infinity
-dqrot802 rotate  Inf  -1     -> Infinity
-dqrot803 rotate  Inf  -0     -> Infinity
-dqrot804 rotate  Inf   0     -> Infinity
-dqrot805 rotate  Inf   1     -> Infinity
-dqrot806 rotate  Inf   8     -> Infinity
-dqrot807 rotate  Inf   Inf   -> NaN Invalid_operation
-dqrot808 rotate -1000  Inf   -> NaN Invalid_operation
-dqrot809 rotate -Inf   Inf   -> NaN Invalid_operation
-dqrot810 rotate -1     Inf   -> NaN Invalid_operation
-dqrot811 rotate -0     Inf   -> NaN Invalid_operation
-dqrot812 rotate  0     Inf   -> NaN Invalid_operation
-dqrot813 rotate  1     Inf   -> NaN Invalid_operation
-dqrot814 rotate  1000  Inf   -> NaN Invalid_operation
-dqrot815 rotate  Inf   Inf   -> NaN Invalid_operation
-
-dqrot821 rotate  NaN -Inf    ->  NaN
-dqrot822 rotate  NaN -1000   ->  NaN
-dqrot823 rotate  NaN -1      ->  NaN
-dqrot824 rotate  NaN -0      ->  NaN
-dqrot825 rotate  NaN  0      ->  NaN
-dqrot826 rotate  NaN  1      ->  NaN
-dqrot827 rotate  NaN  1000   ->  NaN
-dqrot828 rotate  NaN  Inf    ->  NaN
-dqrot829 rotate  NaN  NaN    ->  NaN
-dqrot830 rotate -Inf  NaN    ->  NaN
-dqrot831 rotate -1000 NaN    ->  NaN
-dqrot832 rotate -1    NaN    ->  NaN
-dqrot833 rotate -0    NaN    ->  NaN
-dqrot834 rotate  0    NaN    ->  NaN
-dqrot835 rotate  1    NaN    ->  NaN
-dqrot836 rotate  1000 NaN    ->  NaN
-dqrot837 rotate  Inf  NaN    ->  NaN
-
-dqrot841 rotate  sNaN -Inf   ->  NaN  Invalid_operation
-dqrot842 rotate  sNaN -1000  ->  NaN  Invalid_operation
-dqrot843 rotate  sNaN -1     ->  NaN  Invalid_operation
-dqrot844 rotate  sNaN -0     ->  NaN  Invalid_operation
-dqrot845 rotate  sNaN  0     ->  NaN  Invalid_operation
-dqrot846 rotate  sNaN  1     ->  NaN  Invalid_operation
-dqrot847 rotate  sNaN  1000  ->  NaN  Invalid_operation
-dqrot848 rotate  sNaN  NaN   ->  NaN  Invalid_operation
-dqrot849 rotate  sNaN sNaN   ->  NaN  Invalid_operation
-dqrot850 rotate  NaN  sNaN   ->  NaN  Invalid_operation
-dqrot851 rotate -Inf  sNaN   ->  NaN  Invalid_operation
-dqrot852 rotate -1000 sNaN   ->  NaN  Invalid_operation
-dqrot853 rotate -1    sNaN   ->  NaN  Invalid_operation
-dqrot854 rotate -0    sNaN   ->  NaN  Invalid_operation
-dqrot855 rotate  0    sNaN   ->  NaN  Invalid_operation
-dqrot856 rotate  1    sNaN   ->  NaN  Invalid_operation
-dqrot857 rotate  1000 sNaN   ->  NaN  Invalid_operation
-dqrot858 rotate  Inf  sNaN   ->  NaN  Invalid_operation
-dqrot859 rotate  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqrot861 rotate  NaN1   -Inf    ->  NaN1
-dqrot862 rotate +NaN2   -1000   ->  NaN2
-dqrot863 rotate  NaN3    1000   ->  NaN3
-dqrot864 rotate  NaN4    Inf    ->  NaN4
-dqrot865 rotate  NaN5   +NaN6   ->  NaN5
-dqrot866 rotate -Inf     NaN7   ->  NaN7
-dqrot867 rotate -1000    NaN8   ->  NaN8
-dqrot868 rotate  1000    NaN9   ->  NaN9
-dqrot869 rotate  Inf    +NaN10  ->  NaN10
-dqrot871 rotate  sNaN11  -Inf   ->  NaN11  Invalid_operation
-dqrot872 rotate  sNaN12  -1000  ->  NaN12  Invalid_operation
-dqrot873 rotate  sNaN13   1000  ->  NaN13  Invalid_operation
-dqrot874 rotate  sNaN14   NaN17 ->  NaN14  Invalid_operation
-dqrot875 rotate  sNaN15  sNaN18 ->  NaN15  Invalid_operation
-dqrot876 rotate  NaN16   sNaN19 ->  NaN19  Invalid_operation
-dqrot877 rotate -Inf    +sNaN20 ->  NaN20  Invalid_operation
-dqrot878 rotate -1000    sNaN21 ->  NaN21  Invalid_operation
-dqrot879 rotate  1000    sNaN22 ->  NaN22  Invalid_operation
-dqrot880 rotate  Inf     sNaN23 ->  NaN23  Invalid_operation
-dqrot881 rotate +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-dqrot882 rotate -NaN26    NaN28 -> -NaN26
-dqrot883 rotate -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-dqrot884 rotate  1000    -NaN30 -> -NaN30
-dqrot885 rotate  1000   -sNaN31 -> -NaN31  Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqSameQuantum.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqSameQuantum.decTest
deleted file mode 100644
index 2f356bb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqSameQuantum.decTest
+++ /dev/null
@@ -1,389 +0,0 @@
-------------------------------------------------------------------------
--- dqSameQuantum.decTest -- check decQuad quantums match              --
--- Copyright (c) IBM Corporation, 2001, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- All operands and results are decQuads.
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
-dqsamq001 samequantum  0      0      ->  1
-dqsamq002 samequantum  0      1      ->  1
-dqsamq003 samequantum  1      0      ->  1
-dqsamq004 samequantum  1      1      ->  1
-
-dqsamq011 samequantum  10     1E+1   -> 0
-dqsamq012 samequantum  10E+1  10E+1  -> 1
-dqsamq013 samequantum  100    10E+1  -> 0
-dqsamq014 samequantum  100    1E+2   -> 0
-dqsamq015 samequantum  0.1    1E-2   -> 0
-dqsamq016 samequantum  0.1    1E-1   -> 1
-dqsamq017 samequantum  0.1    1E-0   -> 0
-dqsamq018 samequantum  999    999    -> 1
-dqsamq019 samequantum  999E-1 99.9   -> 1
-dqsamq020 samequantum  111E-1 22.2   -> 1
-dqsamq021 samequantum  111E-1 1234.2 -> 1
-
--- zeros
-dqsamq030 samequantum  0.0    1.1    -> 1
-dqsamq031 samequantum  0.0    1.11   -> 0
-dqsamq032 samequantum  0.0    0      -> 0
-dqsamq033 samequantum  0.0    0.0    -> 1
-dqsamq034 samequantum  0.0    0.00   -> 0
-dqsamq035 samequantum  0E+1   0E+0   -> 0
-dqsamq036 samequantum  0E+1   0E+1   -> 1
-dqsamq037 samequantum  0E+1   0E+2   -> 0
-dqsamq038 samequantum  0E-17  0E-16  -> 0
-dqsamq039 samequantum  0E-17  0E-17  -> 1
-dqsamq040 samequantum  0E-17  0E-18  -> 0
-dqsamq041 samequantum  0E-17  0.0E-15 -> 0
-dqsamq042 samequantum  0E-17  0.0E-16 -> 1
-dqsamq043 samequantum  0E-17  0.0E-17 -> 0
-dqsamq044 samequantum -0E-17  0.0E-16 -> 1
-dqsamq045 samequantum  0E-17 -0.0E-17 -> 0
-dqsamq046 samequantum  0E-17 -0.0E-16 -> 1
-dqsamq047 samequantum -0E-17  0.0E-17 -> 0
-dqsamq048 samequantum -0E-17 -0.0E-16 -> 1
-dqsamq049 samequantum -0E-17 -0.0E-17 -> 0
-
--- Nmax, Nmin, Ntiny
-dqsamq051 samequantum  9.99999999999999999999999999999999E+6144    9.99999999999999999999999999999999E+6144  -> 1
-dqsamq052 samequantum  1E-6143             1E-6143           -> 1
-dqsamq053 samequantum  1.00000000000000000000000000000000E-6143    1.00000000000000000000000000000000E-6143  -> 1
-dqsamq054 samequantum  1E-6176             1E-6176           -> 1
-dqsamq055 samequantum  9.99999999999999999999999999999999E+6144    9.99999999999999999999999999999999E+6144  -> 1
-dqsamq056 samequantum  1E-6143             1E-6143           -> 1
-dqsamq057 samequantum  1.00000000000000000000000000000000E-6143    1.00000000000000000000000000000000E-6143  -> 1
-dqsamq058 samequantum  1E-6176             1E-6176           -> 1
-
-dqsamq061 samequantum  -1E-6176            -1E-6176          -> 1
-dqsamq062 samequantum  -1.00000000000000000000000000000000E-6143   -1.00000000000000000000000000000000E-6143 -> 1
-dqsamq063 samequantum  -1E-6143            -1E-6143          -> 1
-dqsamq064 samequantum  -9.99999999999999999999999999999999E+6144   -9.99999999999999999999999999999999E+6144 -> 1
-dqsamq065 samequantum  -1E-6176            -1E-6176          -> 1
-dqsamq066 samequantum  -1.00000000000000000000000000000000E-6143   -1.00000000000000000000000000000000E-6143 -> 1
-dqsamq067 samequantum  -1E-6143            -1E-6143          -> 1
-dqsamq068 samequantum  -9.99999999999999999999999999999999E+6144   -9.99999999999999999999999999999999E+6144 -> 1
-
-dqsamq071 samequantum  -4E-6176            -1E-6176          -> 1
-dqsamq072 samequantum  -4.00000000000000000000000000000000E-6143   -1.00000000000000000000000000004000E-6143 -> 1
-dqsamq073 samequantum  -4E-6143            -1E-6143          -> 1
-dqsamq074 samequantum  -4.99999999999999999999999999999999E+6144   -9.99949999999999999999999999999999E+6144 -> 1
-dqsamq075 samequantum  -4E-6176            -1E-6176          -> 1
-dqsamq076 samequantum  -4.00000000000000000000000000000000E-6143   -1.00400000000000000000000000000000E-6143 -> 1
-dqsamq077 samequantum  -4E-6143            -1E-6143          -> 1
-dqsamq078 samequantum  -4.99999999999999999999999999999999E+6144   -9.94999999999999999999999999999999E+6144 -> 1
-
-dqsamq081 samequantum  -4E-1006           -1E-6176          -> 0
-dqsamq082 samequantum  -4.00000000000000000000000000000000E-6143   -1.00004000000000000000000000000000E-6136 -> 0
-dqsamq083 samequantum  -4E-6140           -1E-6143          -> 0
-dqsamq084 samequantum  -4.99999999999999999999999999999999E+6144   -9.99949999999999999999999999999999E+6136 -> 0
-dqsamq085 samequantum  -4E-1006           -1E-6176          -> 0
-dqsamq086 samequantum  -4.00000000000000000000000000000000E-6143   -1.00400000000000000000000000000000E-6136 -> 0
-dqsamq087 samequantum  -4E-6133           -1E-6143          -> 0
-dqsamq088 samequantum  -4.99999999999999999999999999999999E+6144   -9.94999999999999999999999999999999E+6136 -> 0
-
--- specials & combinations
-dqsamq0110 samequantum  -Inf    -Inf   -> 1
-dqsamq0111 samequantum  -Inf     Inf   -> 1
-dqsamq0112 samequantum  -Inf     NaN   -> 0
-dqsamq0113 samequantum  -Inf    -7E+3  -> 0
-dqsamq0114 samequantum  -Inf    -7     -> 0
-dqsamq0115 samequantum  -Inf    -7E-3  -> 0
-dqsamq0116 samequantum  -Inf    -0E-3  -> 0
-dqsamq0117 samequantum  -Inf    -0     -> 0
-dqsamq0118 samequantum  -Inf    -0E+3  -> 0
-dqsamq0119 samequantum  -Inf     0E-3  -> 0
-dqsamq0120 samequantum  -Inf     0     -> 0
-dqsamq0121 samequantum  -Inf     0E+3  -> 0
-dqsamq0122 samequantum  -Inf     7E-3  -> 0
-dqsamq0123 samequantum  -Inf     7     -> 0
-dqsamq0124 samequantum  -Inf     7E+3  -> 0
-dqsamq0125 samequantum  -Inf     sNaN  -> 0
-
-dqsamq0210 samequantum   Inf    -Inf   -> 1
-dqsamq0211 samequantum   Inf     Inf   -> 1
-dqsamq0212 samequantum   Inf     NaN   -> 0
-dqsamq0213 samequantum   Inf    -7E+3  -> 0
-dqsamq0214 samequantum   Inf    -7     -> 0
-dqsamq0215 samequantum   Inf    -7E-3  -> 0
-dqsamq0216 samequantum   Inf    -0E-3  -> 0
-dqsamq0217 samequantum   Inf    -0     -> 0
-dqsamq0218 samequantum   Inf    -0E+3  -> 0
-dqsamq0219 samequantum   Inf     0E-3  -> 0
-dqsamq0220 samequantum   Inf     0     -> 0
-dqsamq0221 samequantum   Inf     0E+3  -> 0
-dqsamq0222 samequantum   Inf     7E-3  -> 0
-dqsamq0223 samequantum   Inf     7     -> 0
-dqsamq0224 samequantum   Inf     7E+3  -> 0
-dqsamq0225 samequantum   Inf     sNaN  -> 0
-
-dqsamq0310 samequantum   NaN    -Inf   -> 0
-dqsamq0311 samequantum   NaN     Inf   -> 0
-dqsamq0312 samequantum   NaN     NaN   -> 1
-dqsamq0313 samequantum   NaN    -7E+3  -> 0
-dqsamq0314 samequantum   NaN    -7     -> 0
-dqsamq0315 samequantum   NaN    -7E-3  -> 0
-dqsamq0316 samequantum   NaN    -0E-3  -> 0
-dqsamq0317 samequantum   NaN    -0     -> 0
-dqsamq0318 samequantum   NaN    -0E+3  -> 0
-dqsamq0319 samequantum   NaN     0E-3  -> 0
-dqsamq0320 samequantum   NaN     0     -> 0
-dqsamq0321 samequantum   NaN     0E+3  -> 0
-dqsamq0322 samequantum   NaN     7E-3  -> 0
-dqsamq0323 samequantum   NaN     7     -> 0
-dqsamq0324 samequantum   NaN     7E+3  -> 0
-dqsamq0325 samequantum   NaN     sNaN  -> 1
-
-dqsamq0410 samequantum  -7E+3    -Inf   -> 0
-dqsamq0411 samequantum  -7E+3     Inf   -> 0
-dqsamq0412 samequantum  -7E+3     NaN   -> 0
-dqsamq0413 samequantum  -7E+3    -7E+3  -> 1
-dqsamq0414 samequantum  -7E+3    -7     -> 0
-dqsamq0415 samequantum  -7E+3    -7E-3  -> 0
-dqsamq0416 samequantum  -7E+3    -0E-3  -> 0
-dqsamq0417 samequantum  -7E+3    -0     -> 0
-dqsamq0418 samequantum  -7E+3    -0E+3  -> 1
-dqsamq0419 samequantum  -7E+3     0E-3  -> 0
-dqsamq0420 samequantum  -7E+3     0     -> 0
-dqsamq0421 samequantum  -7E+3     0E+3  -> 1
-dqsamq0422 samequantum  -7E+3     7E-3  -> 0
-dqsamq0423 samequantum  -7E+3     7     -> 0
-dqsamq0424 samequantum  -7E+3     7E+3  -> 1
-dqsamq0425 samequantum  -7E+3     sNaN  -> 0
-
-dqsamq0510 samequantum  -7      -Inf   -> 0
-dqsamq0511 samequantum  -7       Inf   -> 0
-dqsamq0512 samequantum  -7       NaN   -> 0
-dqsamq0513 samequantum  -7      -7E+3  -> 0
-dqsamq0514 samequantum  -7      -7     -> 1
-dqsamq0515 samequantum  -7      -7E-3  -> 0
-dqsamq0516 samequantum  -7      -0E-3  -> 0
-dqsamq0517 samequantum  -7      -0     -> 1
-dqsamq0518 samequantum  -7      -0E+3  -> 0
-dqsamq0519 samequantum  -7       0E-3  -> 0
-dqsamq0520 samequantum  -7       0     -> 1
-dqsamq0521 samequantum  -7       0E+3  -> 0
-dqsamq0522 samequantum  -7       7E-3  -> 0
-dqsamq0523 samequantum  -7       7     -> 1
-dqsamq0524 samequantum  -7       7E+3  -> 0
-dqsamq0525 samequantum  -7       sNaN  -> 0
-
-dqsamq0610 samequantum  -7E-3    -Inf   -> 0
-dqsamq0611 samequantum  -7E-3     Inf   -> 0
-dqsamq0612 samequantum  -7E-3     NaN   -> 0
-dqsamq0613 samequantum  -7E-3    -7E+3  -> 0
-dqsamq0614 samequantum  -7E-3    -7     -> 0
-dqsamq0615 samequantum  -7E-3    -7E-3  -> 1
-dqsamq0616 samequantum  -7E-3    -0E-3  -> 1
-dqsamq0617 samequantum  -7E-3    -0     -> 0
-dqsamq0618 samequantum  -7E-3    -0E+3  -> 0
-dqsamq0619 samequantum  -7E-3     0E-3  -> 1
-dqsamq0620 samequantum  -7E-3     0     -> 0
-dqsamq0621 samequantum  -7E-3     0E+3  -> 0
-dqsamq0622 samequantum  -7E-3     7E-3  -> 1
-dqsamq0623 samequantum  -7E-3     7     -> 0
-dqsamq0624 samequantum  -7E-3     7E+3  -> 0
-dqsamq0625 samequantum  -7E-3     sNaN  -> 0
-
-dqsamq0710 samequantum  -0E-3    -Inf   -> 0
-dqsamq0711 samequantum  -0E-3     Inf   -> 0
-dqsamq0712 samequantum  -0E-3     NaN   -> 0
-dqsamq0713 samequantum  -0E-3    -7E+3  -> 0
-dqsamq0714 samequantum  -0E-3    -7     -> 0
-dqsamq0715 samequantum  -0E-3    -7E-3  -> 1
-dqsamq0716 samequantum  -0E-3    -0E-3  -> 1
-dqsamq0717 samequantum  -0E-3    -0     -> 0
-dqsamq0718 samequantum  -0E-3    -0E+3  -> 0
-dqsamq0719 samequantum  -0E-3     0E-3  -> 1
-dqsamq0720 samequantum  -0E-3     0     -> 0
-dqsamq0721 samequantum  -0E-3     0E+3  -> 0
-dqsamq0722 samequantum  -0E-3     7E-3  -> 1
-dqsamq0723 samequantum  -0E-3     7     -> 0
-dqsamq0724 samequantum  -0E-3     7E+3  -> 0
-dqsamq0725 samequantum  -0E-3     sNaN  -> 0
-
-dqsamq0810 samequantum  -0      -Inf   -> 0
-dqsamq0811 samequantum  -0       Inf   -> 0
-dqsamq0812 samequantum  -0       NaN   -> 0
-dqsamq0813 samequantum  -0      -7E+3  -> 0
-dqsamq0814 samequantum  -0      -7     -> 1
-dqsamq0815 samequantum  -0      -7E-3  -> 0
-dqsamq0816 samequantum  -0      -0E-3  -> 0
-dqsamq0817 samequantum  -0      -0     -> 1
-dqsamq0818 samequantum  -0      -0E+3  -> 0
-dqsamq0819 samequantum  -0       0E-3  -> 0
-dqsamq0820 samequantum  -0       0     -> 1
-dqsamq0821 samequantum  -0       0E+3  -> 0
-dqsamq0822 samequantum  -0       7E-3  -> 0
-dqsamq0823 samequantum  -0       7     -> 1
-dqsamq0824 samequantum  -0       7E+3  -> 0
-dqsamq0825 samequantum  -0       sNaN  -> 0
-
-dqsamq0910 samequantum  -0E+3    -Inf   -> 0
-dqsamq0911 samequantum  -0E+3     Inf   -> 0
-dqsamq0912 samequantum  -0E+3     NaN   -> 0
-dqsamq0913 samequantum  -0E+3    -7E+3  -> 1
-dqsamq0914 samequantum  -0E+3    -7     -> 0
-dqsamq0915 samequantum  -0E+3    -7E-3  -> 0
-dqsamq0916 samequantum  -0E+3    -0E-3  -> 0
-dqsamq0917 samequantum  -0E+3    -0     -> 0
-dqsamq0918 samequantum  -0E+3    -0E+3  -> 1
-dqsamq0919 samequantum  -0E+3     0E-3  -> 0
-dqsamq0920 samequantum  -0E+3     0     -> 0
-dqsamq0921 samequantum  -0E+3     0E+3  -> 1
-dqsamq0922 samequantum  -0E+3     7E-3  -> 0
-dqsamq0923 samequantum  -0E+3     7     -> 0
-dqsamq0924 samequantum  -0E+3     7E+3  -> 1
-dqsamq0925 samequantum  -0E+3     sNaN  -> 0
-
-dqsamq1110 samequantum  0E-3    -Inf   -> 0
-dqsamq1111 samequantum  0E-3     Inf   -> 0
-dqsamq1112 samequantum  0E-3     NaN   -> 0
-dqsamq1113 samequantum  0E-3    -7E+3  -> 0
-dqsamq1114 samequantum  0E-3    -7     -> 0
-dqsamq1115 samequantum  0E-3    -7E-3  -> 1
-dqsamq1116 samequantum  0E-3    -0E-3  -> 1
-dqsamq1117 samequantum  0E-3    -0     -> 0
-dqsamq1118 samequantum  0E-3    -0E+3  -> 0
-dqsamq1119 samequantum  0E-3     0E-3  -> 1
-dqsamq1120 samequantum  0E-3     0     -> 0
-dqsamq1121 samequantum  0E-3     0E+3  -> 0
-dqsamq1122 samequantum  0E-3     7E-3  -> 1
-dqsamq1123 samequantum  0E-3     7     -> 0
-dqsamq1124 samequantum  0E-3     7E+3  -> 0
-dqsamq1125 samequantum  0E-3     sNaN  -> 0
-
-dqsamq1210 samequantum  0       -Inf   -> 0
-dqsamq1211 samequantum  0        Inf   -> 0
-dqsamq1212 samequantum  0        NaN   -> 0
-dqsamq1213 samequantum  0       -7E+3  -> 0
-dqsamq1214 samequantum  0       -7     -> 1
-dqsamq1215 samequantum  0       -7E-3  -> 0
-dqsamq1216 samequantum  0       -0E-3  -> 0
-dqsamq1217 samequantum  0       -0     -> 1
-dqsamq1218 samequantum  0       -0E+3  -> 0
-dqsamq1219 samequantum  0        0E-3  -> 0
-dqsamq1220 samequantum  0        0     -> 1
-dqsamq1221 samequantum  0        0E+3  -> 0
-dqsamq1222 samequantum  0        7E-3  -> 0
-dqsamq1223 samequantum  0        7     -> 1
-dqsamq1224 samequantum  0        7E+3  -> 0
-dqsamq1225 samequantum  0        sNaN  -> 0
-
-dqsamq1310 samequantum  0E+3    -Inf   -> 0
-dqsamq1311 samequantum  0E+3     Inf   -> 0
-dqsamq1312 samequantum  0E+3     NaN   -> 0
-dqsamq1313 samequantum  0E+3    -7E+3  -> 1
-dqsamq1314 samequantum  0E+3    -7     -> 0
-dqsamq1315 samequantum  0E+3    -7E-3  -> 0
-dqsamq1316 samequantum  0E+3    -0E-3  -> 0
-dqsamq1317 samequantum  0E+3    -0     -> 0
-dqsamq1318 samequantum  0E+3    -0E+3  -> 1
-dqsamq1319 samequantum  0E+3     0E-3  -> 0
-dqsamq1320 samequantum  0E+3     0     -> 0
-dqsamq1321 samequantum  0E+3     0E+3  -> 1
-dqsamq1322 samequantum  0E+3     7E-3  -> 0
-dqsamq1323 samequantum  0E+3     7     -> 0
-dqsamq1324 samequantum  0E+3     7E+3  -> 1
-dqsamq1325 samequantum  0E+3     sNaN  -> 0
-
-dqsamq1410 samequantum  7E-3    -Inf   -> 0
-dqsamq1411 samequantum  7E-3     Inf   -> 0
-dqsamq1412 samequantum  7E-3     NaN   -> 0
-dqsamq1413 samequantum  7E-3    -7E+3  -> 0
-dqsamq1414 samequantum  7E-3    -7     -> 0
-dqsamq1415 samequantum  7E-3    -7E-3  -> 1
-dqsamq1416 samequantum  7E-3    -0E-3  -> 1
-dqsamq1417 samequantum  7E-3    -0     -> 0
-dqsamq1418 samequantum  7E-3    -0E+3  -> 0
-dqsamq1419 samequantum  7E-3     0E-3  -> 1
-dqsamq1420 samequantum  7E-3     0     -> 0
-dqsamq1421 samequantum  7E-3     0E+3  -> 0
-dqsamq1422 samequantum  7E-3     7E-3  -> 1
-dqsamq1423 samequantum  7E-3     7     -> 0
-dqsamq1424 samequantum  7E-3     7E+3  -> 0
-dqsamq1425 samequantum  7E-3     sNaN  -> 0
-
-dqsamq1510 samequantum  7      -Inf   -> 0
-dqsamq1511 samequantum  7       Inf   -> 0
-dqsamq1512 samequantum  7       NaN   -> 0
-dqsamq1513 samequantum  7      -7E+3  -> 0
-dqsamq1514 samequantum  7      -7     -> 1
-dqsamq1515 samequantum  7      -7E-3  -> 0
-dqsamq1516 samequantum  7      -0E-3  -> 0
-dqsamq1517 samequantum  7      -0     -> 1
-dqsamq1518 samequantum  7      -0E+3  -> 0
-dqsamq1519 samequantum  7       0E-3  -> 0
-dqsamq1520 samequantum  7       0     -> 1
-dqsamq1521 samequantum  7       0E+3  -> 0
-dqsamq1522 samequantum  7       7E-3  -> 0
-dqsamq1523 samequantum  7       7     -> 1
-dqsamq1524 samequantum  7       7E+3  -> 0
-dqsamq1525 samequantum  7       sNaN  -> 0
-
-dqsamq1610 samequantum  7E+3    -Inf   -> 0
-dqsamq1611 samequantum  7E+3     Inf   -> 0
-dqsamq1612 samequantum  7E+3     NaN   -> 0
-dqsamq1613 samequantum  7E+3    -7E+3  -> 1
-dqsamq1614 samequantum  7E+3    -7     -> 0
-dqsamq1615 samequantum  7E+3    -7E-3  -> 0
-dqsamq1616 samequantum  7E+3    -0E-3  -> 0
-dqsamq1617 samequantum  7E+3    -0     -> 0
-dqsamq1618 samequantum  7E+3    -0E+3  -> 1
-dqsamq1619 samequantum  7E+3     0E-3  -> 0
-dqsamq1620 samequantum  7E+3     0     -> 0
-dqsamq1621 samequantum  7E+3     0E+3  -> 1
-dqsamq1622 samequantum  7E+3     7E-3  -> 0
-dqsamq1623 samequantum  7E+3     7     -> 0
-dqsamq1624 samequantum  7E+3     7E+3  -> 1
-dqsamq1625 samequantum  7E+3     sNaN  -> 0
-
-dqsamq1710 samequantum  sNaN    -Inf   -> 0
-dqsamq1711 samequantum  sNaN     Inf   -> 0
-dqsamq1712 samequantum  sNaN     NaN   -> 1
-dqsamq1713 samequantum  sNaN    -7E+3  -> 0
-dqsamq1714 samequantum  sNaN    -7     -> 0
-dqsamq1715 samequantum  sNaN    -7E-3  -> 0
-dqsamq1716 samequantum  sNaN    -0E-3  -> 0
-dqsamq1717 samequantum  sNaN    -0     -> 0
-dqsamq1718 samequantum  sNaN    -0E+3  -> 0
-dqsamq1719 samequantum  sNaN     0E-3  -> 0
-dqsamq1720 samequantum  sNaN     0     -> 0
-dqsamq1721 samequantum  sNaN     0E+3  -> 0
-dqsamq1722 samequantum  sNaN     7E-3  -> 0
-dqsamq1723 samequantum  sNaN     7     -> 0
-dqsamq1724 samequantum  sNaN     7E+3  -> 0
-dqsamq1725 samequantum  sNaN     sNaN  -> 1
--- noisy NaNs
-dqsamq1730 samequantum  sNaN3    sNaN3 -> 1
-dqsamq1731 samequantum  sNaN3    sNaN4 -> 1
-dqsamq1732 samequantum   NaN3     NaN3 -> 1
-dqsamq1733 samequantum   NaN3     NaN4 -> 1
-dqsamq1734 samequantum  sNaN3     3    -> 0
-dqsamq1735 samequantum   NaN3     3    -> 0
-dqsamq1736 samequantum      4    sNaN4 -> 0
-dqsamq1737 samequantum      3     NaN3 -> 0
-dqsamq1738 samequantum    Inf    sNaN4 -> 0
-dqsamq1739 samequantum   -Inf     NaN3 -> 0
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqScaleB.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqScaleB.decTest
deleted file mode 100644
index 01e1191..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqScaleB.decTest
+++ /dev/null
@@ -1,260 +0,0 @@
-------------------------------------------------------------------------
--- dqScalebB.decTest -- scale a decQuad by powers of 10               --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- Max |rhs| is 2*(6144+34) = 12356
-
--- Sanity checks
-dqscb001 scaleb       7.50   10 -> 7.50E+10
-dqscb002 scaleb       7.50    3 -> 7.50E+3
-dqscb003 scaleb       7.50    2 -> 750
-dqscb004 scaleb       7.50    1 -> 75.0
-dqscb005 scaleb       7.50    0 -> 7.50
-dqscb006 scaleb       7.50   -1 -> 0.750
-dqscb007 scaleb       7.50   -2 -> 0.0750
-dqscb008 scaleb       7.50  -10 -> 7.50E-10
-dqscb009 scaleb      -7.50    3 -> -7.50E+3
-dqscb010 scaleb      -7.50    2 -> -750
-dqscb011 scaleb      -7.50    1 -> -75.0
-dqscb012 scaleb      -7.50    0 -> -7.50
-dqscb013 scaleb      -7.50   -1 -> -0.750
-
--- Infinities
-dqscb014 scaleb  Infinity   1 -> Infinity
-dqscb015 scaleb  -Infinity  2 -> -Infinity
-dqscb016 scaleb  Infinity  -1 -> Infinity
-dqscb017 scaleb  -Infinity -2 -> -Infinity
-
--- Next two are somewhat undefined in 754r; treat as non-integer
-dqscb018 scaleb  10  Infinity -> NaN Invalid_operation
-dqscb019 scaleb  10 -Infinity -> NaN Invalid_operation
-
--- NaNs are undefined in 754r; assume usual processing
--- NaNs, 0 payload
-dqscb021 scaleb         NaN  1 -> NaN
-dqscb022 scaleb        -NaN -1 -> -NaN
-dqscb023 scaleb        sNaN  1 -> NaN Invalid_operation
-dqscb024 scaleb       -sNaN  1 -> -NaN Invalid_operation
-dqscb025 scaleb    4    NaN    -> NaN
-dqscb026 scaleb -Inf   -NaN    -> -NaN
-dqscb027 scaleb    4   sNaN    -> NaN Invalid_operation
-dqscb028 scaleb  Inf  -sNaN    -> -NaN Invalid_operation
-
--- non-integer RHS
-dqscb030 scaleb  1.23    1    ->  12.3
-dqscb031 scaleb  1.23    1.00 ->  NaN Invalid_operation
-dqscb032 scaleb  1.23    1.1  ->  NaN Invalid_operation
-dqscb033 scaleb  1.23    1.01 ->  NaN Invalid_operation
-dqscb034 scaleb  1.23    0.01 ->  NaN Invalid_operation
-dqscb035 scaleb  1.23    0.11 ->  NaN Invalid_operation
-dqscb036 scaleb  1.23    0.999999999 ->  NaN Invalid_operation
-dqscb037 scaleb  1.23   -1    ->  0.123
-dqscb0614 scaleb  1.23   -1.00 ->  NaN Invalid_operation
-dqscb039 scaleb  1.23   -1.1  ->  NaN Invalid_operation
-dqscb040 scaleb  1.23   -1.01 ->  NaN Invalid_operation
-dqscb041 scaleb  1.23   -0.01 ->  NaN Invalid_operation
-dqscb042 scaleb  1.23   -0.11 ->  NaN Invalid_operation
-dqscb043 scaleb  1.23   -0.999999999 ->  NaN Invalid_operation
-dqscb044 scaleb  1.23    0.1         ->  NaN Invalid_operation
-dqscb045 scaleb  1.23    1E+1        ->  NaN Invalid_operation
-dqscb046 scaleb  1.23    1.1234E+6   ->  NaN Invalid_operation
-dqscb047 scaleb  1.23    1.123E+4    ->  NaN Invalid_operation
-
--- out-of range RHS
-dqscb120 scaleb  1.23    12355       ->  Infinity Overflow Inexact Rounded
-dqscb121 scaleb  1.23    12356       ->  Infinity Overflow Inexact Rounded
-dqscb122 scaleb  1.23    12357       ->  NaN Invalid_operation
-dqscb123 scaleb  1.23    12358       ->  NaN Invalid_operation
-dqscb124 scaleb  1.23   -12355       ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqscb125 scaleb  1.23   -12356       ->  0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqscb126 scaleb  1.23   -12357       ->  NaN Invalid_operation
-dqscb127 scaleb  1.23   -12358       ->  NaN Invalid_operation
-
--- NaNs, non-0 payload
--- propagating NaNs
-dqscb861 scaleb  NaN01   -Inf     ->  NaN1
-dqscb862 scaleb -NaN02   -1000    -> -NaN2
-dqscb863 scaleb  NaN03    1000    ->  NaN3
-dqscb864 scaleb  NaN04    Inf     ->  NaN4
-dqscb865 scaleb  NaN05    NaN61   ->  NaN5
-dqscb866 scaleb -Inf     -NaN71   -> -NaN71
-dqscb867 scaleb -1000     NaN81   ->  NaN81
-dqscb868 scaleb  1000     NaN91   ->  NaN91
-dqscb869 scaleb  Inf      NaN101  ->  NaN101
-dqscb871 scaleb  sNaN011  -Inf    ->  NaN11  Invalid_operation
-dqscb872 scaleb  sNaN012  -1000   ->  NaN12  Invalid_operation
-dqscb873 scaleb -sNaN013   1000   -> -NaN13  Invalid_operation
-dqscb874 scaleb  sNaN014   NaN171 ->  NaN14  Invalid_operation
-dqscb875 scaleb  sNaN015  sNaN181 ->  NaN15  Invalid_operation
-dqscb876 scaleb  NaN016   sNaN191 ->  NaN191 Invalid_operation
-dqscb877 scaleb -Inf      sNaN201 ->  NaN201 Invalid_operation
-dqscb878 scaleb -1000     sNaN211 ->  NaN211 Invalid_operation
-dqscb879 scaleb  1000    -sNaN221 -> -NaN221 Invalid_operation
-dqscb880 scaleb  Inf      sNaN231 ->  NaN231 Invalid_operation
-dqscb881 scaleb  NaN025   sNaN241 ->  NaN241 Invalid_operation
-
--- finites
-dqscb051 scaleb          7   -2  -> 0.07
-dqscb052 scaleb         -7   -2  -> -0.07
-dqscb053 scaleb         75   -2  -> 0.75
-dqscb054 scaleb        -75   -2  -> -0.75
-dqscb055 scaleb       7.50   -2  -> 0.0750
-dqscb056 scaleb      -7.50   -2  -> -0.0750
-dqscb057 scaleb       7.500  -2  -> 0.07500
-dqscb058 scaleb      -7.500  -2  -> -0.07500
-dqscb061 scaleb          7   -1  -> 0.7
-dqscb062 scaleb         -7   -1  -> -0.7
-dqscb063 scaleb         75   -1  -> 7.5
-dqscb064 scaleb        -75   -1  -> -7.5
-dqscb065 scaleb       7.50   -1  -> 0.750
-dqscb066 scaleb      -7.50   -1  -> -0.750
-dqscb067 scaleb       7.500  -1  -> 0.7500
-dqscb068 scaleb      -7.500  -1  -> -0.7500
-dqscb071 scaleb          7    0  -> 7
-dqscb072 scaleb         -7    0  -> -7
-dqscb073 scaleb         75    0  -> 75
-dqscb074 scaleb        -75    0  -> -75
-dqscb075 scaleb       7.50    0  -> 7.50
-dqscb076 scaleb      -7.50    0  -> -7.50
-dqscb077 scaleb       7.500   0  -> 7.500
-dqscb078 scaleb      -7.500   0  -> -7.500
-dqscb081 scaleb          7    1  -> 7E+1
-dqscb082 scaleb         -7    1  -> -7E+1
-dqscb083 scaleb         75    1  -> 7.5E+2
-dqscb084 scaleb        -75    1  -> -7.5E+2
-dqscb085 scaleb       7.50    1  -> 75.0
-dqscb086 scaleb      -7.50    1  -> -75.0
-dqscb087 scaleb       7.500   1  -> 75.00
-dqscb088 scaleb      -7.500   1  -> -75.00
-dqscb091 scaleb          7    2  -> 7E+2
-dqscb092 scaleb         -7    2  -> -7E+2
-dqscb093 scaleb         75    2  -> 7.5E+3
-dqscb094 scaleb        -75    2  -> -7.5E+3
-dqscb095 scaleb       7.50    2  -> 750
-dqscb096 scaleb      -7.50    2  -> -750
-dqscb097 scaleb       7.500   2  -> 750.0
-dqscb098 scaleb      -7.500   2  -> -750.0
-
--- zeros
-dqscb111 scaleb          0  1 -> 0E+1
-dqscb112 scaleb         -0  2 -> -0E+2
-dqscb113 scaleb       0E+4  3 -> 0E+7
-dqscb114 scaleb      -0E+4  4 -> -0E+8
-dqscb115 scaleb     0.0000  5 -> 0E+1
-dqscb116 scaleb    -0.0000  6 -> -0E+2
-dqscb117 scaleb      0E-141 7 -> 0E-134
-dqscb118 scaleb     -0E-141 8 -> -0E-133
-
--- Nmax, Nmin, Ntiny
-dqscb132 scaleb  9.999999999999999999999999999999999E+6144  +6144 -> Infinity    Overflow Inexact Rounded
-dqscb133 scaleb  9.999999999999999999999999999999999E+6144  +10 -> Infinity     Overflow Inexact Rounded
-dqscb134 scaleb  9.999999999999999999999999999999999E+6144  +1  -> Infinity     Overflow Inexact Rounded
-dqscb135 scaleb  9.999999999999999999999999999999999E+6144   0  -> 9.999999999999999999999999999999999E+6144
-dqscb136 scaleb  9.999999999999999999999999999999999E+6144  -1  -> 9.999999999999999999999999999999999E+6143
-dqscb137 scaleb  1E-6143           +1  -> 1E-6142
-dqscb1614 scaleb  1E-6143           -0  -> 1E-6143
-dqscb139 scaleb  1E-6143           -1  -> 1E-6144          Subnormal
-dqscb140 scaleb  1.000000000000000000000000000000000E-6143  +1  -> 1.000000000000000000000000000000000E-6142
-dqscb141 scaleb  1.000000000000000000000000000000000E-6143   0  -> 1.000000000000000000000000000000000E-6143
-dqscb142 scaleb  1.000000000000000000000000000000000E-6143  -1  -> 1.00000000000000000000000000000000E-6144 Subnormal Rounded
-dqscb143 scaleb  1E-6176          +1  -> 1E-6175         Subnormal
-dqscb144 scaleb  1E-6176          -0  -> 1E-6176         Subnormal
-dqscb145 scaleb  1E-6176          -1  -> 0E-6176         Underflow Subnormal Inexact Rounded Clamped
-
-dqscb150 scaleb  -1E-6176         +1  -> -1E-6175        Subnormal
-dqscb151 scaleb  -1E-6176         -0  -> -1E-6176        Subnormal
-dqscb152 scaleb  -1E-6176         -1  -> -0E-6176        Underflow Subnormal Inexact Rounded Clamped
-dqscb153 scaleb  -1.000000000000000000000000000000000E-6143 +1  -> -1.000000000000000000000000000000000E-6142
-dqscb154 scaleb  -1.000000000000000000000000000000000E-6143 +0  -> -1.000000000000000000000000000000000E-6143
-dqscb155 scaleb  -1.000000000000000000000000000000000E-6143 -1  -> -1.00000000000000000000000000000000E-6144 Subnormal Rounded
-dqscb156 scaleb  -1E-6143          +1  -> -1E-6142
-dqscb157 scaleb  -1E-6143          -0  -> -1E-6143
-dqscb158 scaleb  -1E-6143          -1  -> -1E-6144          Subnormal
-dqscb159 scaleb  -9.999999999999999999999999999999999E+6144 +1  -> -Infinity        Overflow Inexact Rounded
-dqscb160 scaleb  -9.999999999999999999999999999999999E+6144 +0  -> -9.999999999999999999999999999999999E+6144
-dqscb161 scaleb  -9.999999999999999999999999999999999E+6144 -1  -> -9.999999999999999999999999999999999E+6143
-dqscb162 scaleb  -9E+6144          +1  -> -Infinity        Overflow Inexact Rounded
-dqscb163 scaleb  -1E+6144          +1  -> -Infinity        Overflow Inexact Rounded
-
--- some Origami
--- (these check that overflow is being done correctly)
-dqscb171 scaleb   1000E+6109  +1 -> 1.000E+6113
-dqscb172 scaleb   1000E+6110  +1 -> 1.000E+6114
-dqscb173 scaleb   1000E+6111  +1 -> 1.0000E+6115                    Clamped
-dqscb174 scaleb   1000E+6112  +1 -> 1.00000E+6116                   Clamped
-dqscb175 scaleb   1000E+6113  +1 -> 1.000000E+6117                  Clamped
-dqscb176 scaleb   1000E+6114  +1 -> 1.0000000E+6118                 Clamped
-dqscb177 scaleb   1000E+6131  +1 -> 1.000000000000000000000000E+6135                Clamped
-dqscb178 scaleb   1000E+6132  +1 -> 1.0000000000000000000000000E+6136               Clamped
-dqscb179 scaleb   1000E+6133  +1 -> 1.00000000000000000000000000E+6137              Clamped
-dqscb180 scaleb   1000E+6134  +1 -> 1.000000000000000000000000000E+6138             Clamped
-dqscb181 scaleb   1000E+6135  +1 -> 1.0000000000000000000000000000E+6139            Clamped
-dqscb182 scaleb   1000E+6136  +1 -> 1.00000000000000000000000000000E+6140           Clamped
-dqscb183 scaleb   1000E+6137  +1 -> 1.000000000000000000000000000000E+6141          Clamped
-dqscb184 scaleb   1000E+6138  +1 -> 1.0000000000000000000000000000000E+6142         Clamped
-dqscb185 scaleb   1000E+6139  +1 -> 1.00000000000000000000000000000000E+6143        Clamped
-dqscb186 scaleb   1000E+6140  +1 -> 1.000000000000000000000000000000000E+6144       Clamped
-dqscb187 scaleb   1000E+6141  +1 -> Infinity    Overflow Inexact Rounded
-
--- and a few more subnormal truncations
--- (these check that underflow is being done correctly)
-dqscb221 scaleb  1.000000000000000000000000000000000E-6143   0  -> 1.000000000000000000000000000000000E-6143
-dqscb222 scaleb  1.000000000000000000000000000000000E-6143  -1  -> 1.00000000000000000000000000000000E-6144 Subnormal Rounded
-dqscb223 scaleb  1.000000000000000000000000000000000E-6143  -2  -> 1.0000000000000000000000000000000E-6145 Subnormal Rounded
-dqscb224 scaleb  1.000000000000000000000000000000000E-6143  -3  -> 1.000000000000000000000000000000E-6146 Subnormal Rounded
-dqscb225 scaleb  1.000000000000000000000000000000000E-6143  -4  -> 1.00000000000000000000000000000E-6147 Subnormal Rounded
-dqscb226 scaleb  1.000000000000000000000000000000000E-6143  -5  -> 1.0000000000000000000000000000E-6148 Subnormal Rounded
-dqscb227 scaleb  1.000000000000000000000000000000000E-6143  -6  -> 1.000000000000000000000000000E-6149 Subnormal Rounded
-dqscb228 scaleb  1.000000000000000000000000000000000E-6143  -7  -> 1.00000000000000000000000000E-6150 Subnormal Rounded
-dqscb229 scaleb  1.000000000000000000000000000000000E-6143  -8  -> 1.0000000000000000000000000E-6151 Subnormal Rounded
-dqscb230 scaleb  1.000000000000000000000000000000000E-6143  -9  -> 1.000000000000000000000000E-6152 Subnormal Rounded
-dqscb231 scaleb  1.000000000000000000000000000000000E-6143  -10 -> 1.00000000000000000000000E-6153 Subnormal Rounded
-dqscb232 scaleb  1.000000000000000000000000000000000E-6143  -11 -> 1.0000000000000000000000E-6154 Subnormal Rounded
-dqscb233 scaleb  1.000000000000000000000000000000000E-6143  -12 -> 1.000000000000000000000E-6155 Subnormal Rounded
-dqscb234 scaleb  1.000000000000000000000000000000000E-6143  -13 -> 1.00000000000000000000E-6156 Subnormal Rounded
-dqscb235 scaleb  1.000000000000000000000000000000000E-6143  -14 -> 1.0000000000000000000E-6157 Subnormal Rounded
-dqscb236 scaleb  1.000000000000000000000000000000000E-6143  -15 -> 1.000000000000000000E-6158 Subnormal Rounded
-dqscb237 scaleb  1.000000000000000000000000000000000E-6143  -16 -> 1.00000000000000000E-6159 Subnormal Rounded
-dqscb238 scaleb  1.000000000000000000000000000000000E-6143  -17 -> 1.0000000000000000E-6160 Subnormal Rounded
-dqscb239 scaleb  1.000000000000000000000000000000000E-6143  -18 -> 1.000000000000000E-6161 Subnormal Rounded
-dqscb202 scaleb  1.000000000000000000000000000000000E-6143  -19 -> 1.00000000000000E-6162 Subnormal Rounded
-dqscb203 scaleb  1.000000000000000000000000000000000E-6143  -20 -> 1.0000000000000E-6163 Subnormal Rounded
-dqscb204 scaleb  1.000000000000000000000000000000000E-6143  -21 -> 1.000000000000E-6164 Subnormal Rounded
-dqscb205 scaleb  1.000000000000000000000000000000000E-6143  -22 -> 1.00000000000E-6165 Subnormal Rounded
-dqscb206 scaleb  1.000000000000000000000000000000000E-6143  -23 -> 1.0000000000E-6166 Subnormal Rounded
-dqscb207 scaleb  1.000000000000000000000000000000000E-6143  -24 -> 1.000000000E-6167 Subnormal Rounded
-dqscb208 scaleb  1.000000000000000000000000000000000E-6143  -25 -> 1.00000000E-6168 Subnormal Rounded
-dqscb209 scaleb  1.000000000000000000000000000000000E-6143  -26 -> 1.0000000E-6169 Subnormal Rounded
-dqscb210 scaleb  1.000000000000000000000000000000000E-6143  -27 -> 1.000000E-6170 Subnormal Rounded
-dqscb211 scaleb  1.000000000000000000000000000000000E-6143  -28 -> 1.00000E-6171 Subnormal Rounded
-dqscb212 scaleb  1.000000000000000000000000000000000E-6143  -29 -> 1.0000E-6172 Subnormal Rounded
-dqscb213 scaleb  1.000000000000000000000000000000000E-6143  -30 -> 1.000E-6173 Subnormal Rounded
-dqscb214 scaleb  1.000000000000000000000000000000000E-6143  -31 -> 1.00E-6174 Subnormal Rounded
-dqscb215 scaleb  1.000000000000000000000000000000000E-6143  -32 -> 1.0E-6175 Subnormal Rounded
-dqscb216 scaleb  1.000000000000000000000000000000000E-6143  -33 -> 1E-6176 Subnormal Rounded
-dqscb217 scaleb  1.000000000000000000000000000000000E-6143  -34 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
-dqscb218 scaleb  1.000000000000000000000000000000000E-6143  -35 -> 0E-6176 Underflow Subnormal Inexact Rounded Clamped
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqShift.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqShift.decTest
deleted file mode 100644
index 4ee836e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqShift.decTest
+++ /dev/null
@@ -1,298 +0,0 @@
-------------------------------------------------------------------------
--- dqShift.decTest -- shift decQuad coefficient left or right         --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- Sanity check
-dqshi001 shift                                   0    0  ->  0
-dqshi002 shift                                   0    2  ->  0
-dqshi003 shift                                   1    2  ->  100
-dqshi004 shift                                   1   33  ->  1000000000000000000000000000000000
-dqshi005 shift                                   1   34  ->  0
-dqshi006 shift                                   1   -1  ->  0
-dqshi007 shift                                   0   -2  ->  0
-dqshi008 shift  1234567890123456789012345678901234   -1  ->  123456789012345678901234567890123
-dqshi009 shift  1234567890123456789012345678901234   -33 ->  1
-dqshi010 shift  1234567890123456789012345678901234   -34 ->  0
-dqshi011 shift  9934567890123456789012345678901234   -33 ->  9
-dqshi012 shift  9934567890123456789012345678901234   -34 ->  0
-
--- rhs must be an integer
-dqshi015 shift        1    1.5    -> NaN Invalid_operation
-dqshi016 shift        1    1.0    -> NaN Invalid_operation
-dqshi017 shift        1    0.1    -> NaN Invalid_operation
-dqshi018 shift        1    0.0    -> NaN Invalid_operation
-dqshi019 shift        1    1E+1   -> NaN Invalid_operation
-dqshi020 shift        1    1E+99  -> NaN Invalid_operation
-dqshi021 shift        1    Inf    -> NaN Invalid_operation
-dqshi022 shift        1    -Inf   -> NaN Invalid_operation
--- and |rhs| <= precision
-dqshi025 shift        1    -1000  -> NaN Invalid_operation
-dqshi026 shift        1    -35    -> NaN Invalid_operation
-dqshi027 shift        1     35    -> NaN Invalid_operation
-dqshi028 shift        1     1000  -> NaN Invalid_operation
-
--- full shifting pattern
-dqshi030 shift  1234567890123456789012345678901234         -34  -> 0
-dqshi031 shift  1234567890123456789012345678901234         -33  -> 1
-dqshi032 shift  1234567890123456789012345678901234         -32  -> 12
-dqshi033 shift  1234567890123456789012345678901234         -31  -> 123
-dqshi034 shift  1234567890123456789012345678901234         -30  -> 1234
-dqshi035 shift  1234567890123456789012345678901234         -29  -> 12345
-dqshi036 shift  1234567890123456789012345678901234         -28  -> 123456
-dqshi037 shift  1234567890123456789012345678901234         -27  -> 1234567
-dqshi038 shift  1234567890123456789012345678901234         -26  -> 12345678
-dqshi039 shift  1234567890123456789012345678901234         -25  -> 123456789
-dqshi040 shift  1234567890123456789012345678901234         -24  -> 1234567890
-dqshi041 shift  1234567890123456789012345678901234         -23  -> 12345678901
-dqshi042 shift  1234567890123456789012345678901234         -22  -> 123456789012
-dqshi043 shift  1234567890123456789012345678901234         -21  -> 1234567890123
-dqshi044 shift  1234567890123456789012345678901234         -20  -> 12345678901234
-dqshi045 shift  1234567890123456789012345678901234         -19  -> 123456789012345
-dqshi047 shift  1234567890123456789012345678901234         -18  -> 1234567890123456
-dqshi048 shift  1234567890123456789012345678901234         -17  -> 12345678901234567
-dqshi049 shift  1234567890123456789012345678901234         -16  -> 123456789012345678
-dqshi050 shift  1234567890123456789012345678901234         -15  -> 1234567890123456789
-dqshi051 shift  1234567890123456789012345678901234         -14  -> 12345678901234567890
-dqshi052 shift  1234567890123456789012345678901234         -13  -> 123456789012345678901
-dqshi053 shift  1234567890123456789012345678901234         -12  -> 1234567890123456789012
-dqshi054 shift  1234567890123456789012345678901234         -11  -> 12345678901234567890123
-dqshi055 shift  1234567890123456789012345678901234         -10  -> 123456789012345678901234
-dqshi056 shift  1234567890123456789012345678901234         -9   -> 1234567890123456789012345
-dqshi057 shift  1234567890123456789012345678901234         -8   -> 12345678901234567890123456
-dqshi058 shift  1234567890123456789012345678901234         -7   -> 123456789012345678901234567
-dqshi059 shift  1234567890123456789012345678901234         -6   -> 1234567890123456789012345678
-dqshi060 shift  1234567890123456789012345678901234         -5   -> 12345678901234567890123456789
-dqshi061 shift  1234567890123456789012345678901234         -4   -> 123456789012345678901234567890
-dqshi062 shift  1234567890123456789012345678901234         -3   -> 1234567890123456789012345678901
-dqshi063 shift  1234567890123456789012345678901234         -2   -> 12345678901234567890123456789012
-dqshi064 shift  1234567890123456789012345678901234         -1   -> 123456789012345678901234567890123
-dqshi065 shift  1234567890123456789012345678901234         -0   -> 1234567890123456789012345678901234
-
-dqshi066 shift  1234567890123456789012345678901234         +0   -> 1234567890123456789012345678901234
-dqshi067 shift  1234567890123456789012345678901234         +1   -> 2345678901234567890123456789012340
-dqshi068 shift  1234567890123456789012345678901234         +2   -> 3456789012345678901234567890123400
-dqshi069 shift  1234567890123456789012345678901234         +3   -> 4567890123456789012345678901234000
-dqshi070 shift  1234567890123456789012345678901234         +4   -> 5678901234567890123456789012340000
-dqshi071 shift  1234567890123456789012345678901234         +5   -> 6789012345678901234567890123400000
-dqshi072 shift  1234567890123456789012345678901234         +6   -> 7890123456789012345678901234000000
-dqshi073 shift  1234567890123456789012345678901234         +7   -> 8901234567890123456789012340000000
-dqshi074 shift  1234567890123456789012345678901234         +8   -> 9012345678901234567890123400000000
-dqshi075 shift  1234567890123456789012345678901234         +9   ->  123456789012345678901234000000000
-dqshi076 shift  1234567890123456789012345678901234         +10  -> 1234567890123456789012340000000000
-dqshi077 shift  1234567890123456789012345678901234         +11  -> 2345678901234567890123400000000000
-dqshi078 shift  1234567890123456789012345678901234         +12  -> 3456789012345678901234000000000000
-dqshi079 shift  1234567890123456789012345678901234         +13  -> 4567890123456789012340000000000000
-dqshi080 shift  1234567890123456789012345678901234         +14  -> 5678901234567890123400000000000000
-dqshi081 shift  1234567890123456789012345678901234         +15  -> 6789012345678901234000000000000000
-dqshi082 shift  1234567890123456789012345678901234         +16  -> 7890123456789012340000000000000000
-dqshi083 shift  1234567890123456789012345678901234         +17  -> 8901234567890123400000000000000000
-dqshi084 shift  1234567890123456789012345678901234         +18  -> 9012345678901234000000000000000000
-dqshi085 shift  1234567890123456789012345678901234         +19  ->  123456789012340000000000000000000
-dqshi086 shift  1234567890123456789012345678901234         +20  -> 1234567890123400000000000000000000
-dqshi087 shift  1234567890123456789012345678901234         +21  -> 2345678901234000000000000000000000
-dqshi088 shift  1234567890123456789012345678901234         +22  -> 3456789012340000000000000000000000
-dqshi089 shift  1234567890123456789012345678901234         +23  -> 4567890123400000000000000000000000
-dqshi090 shift  1234567890123456789012345678901234         +24  -> 5678901234000000000000000000000000
-dqshi091 shift  1234567890123456789012345678901234         +25  -> 6789012340000000000000000000000000
-dqshi092 shift  1234567890123456789012345678901234         +26  -> 7890123400000000000000000000000000
-dqshi093 shift  1234567890123456789012345678901234         +27  -> 8901234000000000000000000000000000
-dqshi094 shift  1234567890123456789012345678901234         +28  -> 9012340000000000000000000000000000
-dqshi095 shift  1234567890123456789012345678901234         +29  ->  123400000000000000000000000000000
-dqshi096 shift  1234567890123456789012345678901234         +30  -> 1234000000000000000000000000000000
-dqshi097 shift  1234567890123456789012345678901234         +31  -> 2340000000000000000000000000000000
-dqshi098 shift  1234567890123456789012345678901234         +32  -> 3400000000000000000000000000000000
-dqshi099 shift  1234567890123456789012345678901234         +33  -> 4000000000000000000000000000000000
-dqshi100 shift  1234567890123456789012345678901234         +34  -> 0
-
--- zeros
-dqshi270 shift  0E-10              +29   ->   0E-10
-dqshi271 shift  0E-10              -29   ->   0E-10
-dqshi272 shift  0.000              +29   ->   0.000
-dqshi273 shift  0.000              -29   ->   0.000
-dqshi274 shift  0E+10              +29   ->   0E+10
-dqshi275 shift  0E+10              -29   ->   0E+10
-dqshi276 shift -0E-10              +29   ->  -0E-10
-dqshi277 shift -0E-10              -29   ->  -0E-10
-dqshi278 shift -0.000              +29   ->  -0.000
-dqshi279 shift -0.000              -29   ->  -0.000
-dqshi280 shift -0E+10              +29   ->  -0E+10
-dqshi281 shift -0E+10              -29   ->  -0E+10
-
--- Nmax, Nmin, Ntiny
-dqshi141 shift  9.999999999999999999999999999999999E+6144     -1  -> 9.99999999999999999999999999999999E+6143
-dqshi142 shift  9.999999999999999999999999999999999E+6144     -33 -> 9E+6111
-dqshi143 shift  9.999999999999999999999999999999999E+6144      1  -> 9.999999999999999999999999999999990E+6144
-dqshi144 shift  9.999999999999999999999999999999999E+6144      33 -> 9.000000000000000000000000000000000E+6144
-dqshi145 shift  1E-6143                                       -1  -> 0E-6143
-dqshi146 shift  1E-6143                                       -33 -> 0E-6143
-dqshi147 shift  1E-6143                                        1  -> 1.0E-6142
-dqshi148 shift  1E-6143                                        33 -> 1.000000000000000000000000000000000E-6110
-dqshi151 shift  1.000000000000000000000000000000000E-6143     -1  -> 1.00000000000000000000000000000000E-6144
-dqshi152 shift  1.000000000000000000000000000000000E-6143     -33 -> 1E-6176
-dqshi153 shift  1.000000000000000000000000000000000E-6143      1  -> 0E-6176
-dqshi154 shift  1.000000000000000000000000000000000E-6143      33 -> 0E-6176
-dqshi155 shift  9.000000000000000000000000000000000E-6143     -1  -> 9.00000000000000000000000000000000E-6144
-dqshi156 shift  9.000000000000000000000000000000000E-6143     -33 -> 9E-6176
-dqshi157 shift  9.000000000000000000000000000000000E-6143      1  -> 0E-6176
-dqshi158 shift  9.000000000000000000000000000000000E-6143      33 -> 0E-6176
-dqshi160 shift  1E-6176                                       -1  -> 0E-6176
-dqshi161 shift  1E-6176                                       -33 -> 0E-6176
-dqshi162 shift  1E-6176                                        1  -> 1.0E-6175
-dqshi163 shift  1E-6176                                        33 -> 1.000000000000000000000000000000000E-6143
---  negatives
-dqshi171 shift -9.999999999999999999999999999999999E+6144     -1  -> -9.99999999999999999999999999999999E+6143
-dqshi172 shift -9.999999999999999999999999999999999E+6144     -33 -> -9E+6111
-dqshi173 shift -9.999999999999999999999999999999999E+6144      1  -> -9.999999999999999999999999999999990E+6144
-dqshi174 shift -9.999999999999999999999999999999999E+6144      33 -> -9.000000000000000000000000000000000E+6144
-dqshi175 shift -1E-6143                                       -1  -> -0E-6143
-dqshi176 shift -1E-6143                                       -33 -> -0E-6143
-dqshi177 shift -1E-6143                                        1  -> -1.0E-6142
-dqshi178 shift -1E-6143                                        33 -> -1.000000000000000000000000000000000E-6110
-dqshi181 shift -1.000000000000000000000000000000000E-6143     -1  -> -1.00000000000000000000000000000000E-6144
-dqshi182 shift -1.000000000000000000000000000000000E-6143     -33 -> -1E-6176
-dqshi183 shift -1.000000000000000000000000000000000E-6143      1  -> -0E-6176
-dqshi184 shift -1.000000000000000000000000000000000E-6143      33 -> -0E-6176
-dqshi185 shift -9.000000000000000000000000000000000E-6143     -1  -> -9.00000000000000000000000000000000E-6144
-dqshi186 shift -9.000000000000000000000000000000000E-6143     -33 -> -9E-6176
-dqshi187 shift -9.000000000000000000000000000000000E-6143      1  -> -0E-6176
-dqshi188 shift -9.000000000000000000000000000000000E-6143      33 -> -0E-6176
-dqshi190 shift -1E-6176                                       -1  -> -0E-6176
-dqshi191 shift -1E-6176                                       -33 -> -0E-6176
-dqshi192 shift -1E-6176                                        1  -> -1.0E-6175
-dqshi193 shift -1E-6176                                        33 -> -1.000000000000000000000000000000000E-6143
-
--- more negatives (of sanities)
-dqshi201 shift                                  -0    0  -> -0
-dqshi202 shift                                  -0    2  -> -0
-dqshi203 shift                                  -1    2  -> -100
-dqshi204 shift                                  -1   33  -> -1000000000000000000000000000000000
-dqshi205 shift                                  -1   34  -> -0
-dqshi206 shift                                  -1   -1  -> -0
-dqshi207 shift                                  -0   -2  -> -0
-dqshi208 shift -1234567890123456789012345678901234   -1  -> -123456789012345678901234567890123
-dqshi209 shift -1234567890123456789012345678901234   -33 -> -1
-dqshi210 shift -1234567890123456789012345678901234   -34 -> -0
-dqshi211 shift -9934567890123456789012345678901234   -33 -> -9
-dqshi212 shift -9934567890123456789012345678901234   -34 -> -0
-
-
--- Specials; NaNs are handled as usual
-dqshi781 shift -Inf  -8     -> -Infinity
-dqshi782 shift -Inf  -1     -> -Infinity
-dqshi783 shift -Inf  -0     -> -Infinity
-dqshi784 shift -Inf   0     -> -Infinity
-dqshi785 shift -Inf   1     -> -Infinity
-dqshi786 shift -Inf   8     -> -Infinity
-dqshi787 shift -1000 -Inf   -> NaN Invalid_operation
-dqshi788 shift -Inf  -Inf   -> NaN Invalid_operation
-dqshi789 shift -1    -Inf   -> NaN Invalid_operation
-dqshi790 shift -0    -Inf   -> NaN Invalid_operation
-dqshi791 shift  0    -Inf   -> NaN Invalid_operation
-dqshi792 shift  1    -Inf   -> NaN Invalid_operation
-dqshi793 shift  1000 -Inf   -> NaN Invalid_operation
-dqshi794 shift  Inf  -Inf   -> NaN Invalid_operation
-
-dqshi800 shift  Inf  -Inf   -> NaN Invalid_operation
-dqshi801 shift  Inf  -8     -> Infinity
-dqshi802 shift  Inf  -1     -> Infinity
-dqshi803 shift  Inf  -0     -> Infinity
-dqshi804 shift  Inf   0     -> Infinity
-dqshi805 shift  Inf   1     -> Infinity
-dqshi806 shift  Inf   8     -> Infinity
-dqshi807 shift  Inf   Inf   -> NaN Invalid_operation
-dqshi808 shift -1000  Inf   -> NaN Invalid_operation
-dqshi809 shift -Inf   Inf   -> NaN Invalid_operation
-dqshi810 shift -1     Inf   -> NaN Invalid_operation
-dqshi811 shift -0     Inf   -> NaN Invalid_operation
-dqshi812 shift  0     Inf   -> NaN Invalid_operation
-dqshi813 shift  1     Inf   -> NaN Invalid_operation
-dqshi814 shift  1000  Inf   -> NaN Invalid_operation
-dqshi815 shift  Inf   Inf   -> NaN Invalid_operation
-
-dqshi821 shift  NaN -Inf    ->  NaN
-dqshi822 shift  NaN -1000   ->  NaN
-dqshi823 shift  NaN -1      ->  NaN
-dqshi824 shift  NaN -0      ->  NaN
-dqshi825 shift  NaN  0      ->  NaN
-dqshi826 shift  NaN  1      ->  NaN
-dqshi827 shift  NaN  1000   ->  NaN
-dqshi828 shift  NaN  Inf    ->  NaN
-dqshi829 shift  NaN  NaN    ->  NaN
-dqshi830 shift -Inf  NaN    ->  NaN
-dqshi831 shift -1000 NaN    ->  NaN
-dqshi832 shift -1    NaN    ->  NaN
-dqshi833 shift -0    NaN    ->  NaN
-dqshi834 shift  0    NaN    ->  NaN
-dqshi835 shift  1    NaN    ->  NaN
-dqshi836 shift  1000 NaN    ->  NaN
-dqshi837 shift  Inf  NaN    ->  NaN
-
-dqshi841 shift  sNaN -Inf   ->  NaN  Invalid_operation
-dqshi842 shift  sNaN -1000  ->  NaN  Invalid_operation
-dqshi843 shift  sNaN -1     ->  NaN  Invalid_operation
-dqshi844 shift  sNaN -0     ->  NaN  Invalid_operation
-dqshi845 shift  sNaN  0     ->  NaN  Invalid_operation
-dqshi846 shift  sNaN  1     ->  NaN  Invalid_operation
-dqshi847 shift  sNaN  1000  ->  NaN  Invalid_operation
-dqshi848 shift  sNaN  NaN   ->  NaN  Invalid_operation
-dqshi849 shift  sNaN sNaN   ->  NaN  Invalid_operation
-dqshi850 shift  NaN  sNaN   ->  NaN  Invalid_operation
-dqshi851 shift -Inf  sNaN   ->  NaN  Invalid_operation
-dqshi852 shift -1000 sNaN   ->  NaN  Invalid_operation
-dqshi853 shift -1    sNaN   ->  NaN  Invalid_operation
-dqshi854 shift -0    sNaN   ->  NaN  Invalid_operation
-dqshi855 shift  0    sNaN   ->  NaN  Invalid_operation
-dqshi856 shift  1    sNaN   ->  NaN  Invalid_operation
-dqshi857 shift  1000 sNaN   ->  NaN  Invalid_operation
-dqshi858 shift  Inf  sNaN   ->  NaN  Invalid_operation
-dqshi859 shift  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqshi861 shift  NaN1   -Inf    ->  NaN1
-dqshi862 shift +NaN2   -1000   ->  NaN2
-dqshi863 shift  NaN3    1000   ->  NaN3
-dqshi864 shift  NaN4    Inf    ->  NaN4
-dqshi865 shift  NaN5   +NaN6   ->  NaN5
-dqshi866 shift -Inf     NaN7   ->  NaN7
-dqshi867 shift -1000    NaN8   ->  NaN8
-dqshi868 shift  1000    NaN9   ->  NaN9
-dqshi869 shift  Inf    +NaN10  ->  NaN10
-dqshi871 shift  sNaN11  -Inf   ->  NaN11  Invalid_operation
-dqshi872 shift  sNaN12  -1000  ->  NaN12  Invalid_operation
-dqshi873 shift  sNaN13   1000  ->  NaN13  Invalid_operation
-dqshi874 shift  sNaN14   NaN17 ->  NaN14  Invalid_operation
-dqshi875 shift  sNaN15  sNaN18 ->  NaN15  Invalid_operation
-dqshi876 shift  NaN16   sNaN19 ->  NaN19  Invalid_operation
-dqshi877 shift -Inf    +sNaN20 ->  NaN20  Invalid_operation
-dqshi878 shift -1000    sNaN21 ->  NaN21  Invalid_operation
-dqshi879 shift  1000    sNaN22 ->  NaN22  Invalid_operation
-dqshi880 shift  Inf     sNaN23 ->  NaN23  Invalid_operation
-dqshi881 shift +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-dqshi882 shift -NaN26    NaN28 -> -NaN26
-dqshi883 shift -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-dqshi884 shift  1000    -NaN30 -> -NaN30
-dqshi885 shift  1000   -sNaN31 -> -NaN31  Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqSubtract.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqSubtract.decTest
deleted file mode 100644
index f3b9227..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqSubtract.decTest
+++ /dev/null
@@ -1,635 +0,0 @@
-------------------------------------------------------------------------
--- dqSubtract.decTest -- decQuad subtraction                          --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This set of tests are for decQuads only; all arguments are
--- representable in a decQuad
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- [first group are 'quick confidence check']
-dqsub001 subtract  0   0  -> '0'
-dqsub002 subtract  1   1  -> '0'
-dqsub003 subtract  1   2  -> '-1'
-dqsub004 subtract  2   1  -> '1'
-dqsub005 subtract  2   2  -> '0'
-dqsub006 subtract  3   2  -> '1'
-dqsub007 subtract  2   3  -> '-1'
-
-dqsub011 subtract -0   0  -> '-0'
-dqsub012 subtract -1   1  -> '-2'
-dqsub013 subtract -1   2  -> '-3'
-dqsub014 subtract -2   1  -> '-3'
-dqsub015 subtract -2   2  -> '-4'
-dqsub016 subtract -3   2  -> '-5'
-dqsub017 subtract -2   3  -> '-5'
-
-dqsub021 subtract  0  -0  -> '0'
-dqsub022 subtract  1  -1  -> '2'
-dqsub023 subtract  1  -2  -> '3'
-dqsub024 subtract  2  -1  -> '3'
-dqsub025 subtract  2  -2  -> '4'
-dqsub026 subtract  3  -2  -> '5'
-dqsub027 subtract  2  -3  -> '5'
-
-dqsub030 subtract  11  1  -> 10
-dqsub031 subtract  10  1  ->  9
-dqsub032 subtract  9   1  ->  8
-dqsub033 subtract  1   1  ->  0
-dqsub034 subtract  0   1  -> -1
-dqsub035 subtract -1   1  -> -2
-dqsub036 subtract -9   1  -> -10
-dqsub037 subtract -10  1  -> -11
-dqsub038 subtract -11  1  -> -12
-
-dqsub040 subtract '5.75' '3.3'  -> '2.45'
-dqsub041 subtract '5'    '-3'   -> '8'
-dqsub042 subtract '-5'   '-3'   -> '-2'
-dqsub043 subtract '-7'   '2.5'  -> '-9.5'
-dqsub044 subtract '0.7'  '0.3'  -> '0.4'
-dqsub045 subtract '1.3'  '0.3'  -> '1.0'
-dqsub046 subtract '1.25' '1.25' -> '0.00'
-
-dqsub050 subtract '1.23456789'    '1.00000000' -> '0.23456789'
-dqsub051 subtract '1.23456789'    '1.00000089' -> '0.23456700'
-
-dqsub060 subtract '70'    '10000e+34' -> '-1.000000000000000000000000000000000E+38' Inexact Rounded
-dqsub061 subtract '700'    '10000e+34' -> '-1.000000000000000000000000000000000E+38' Inexact Rounded
-dqsub062 subtract '7000'    '10000e+34' -> '-9.999999999999999999999999999999999E+37' Inexact Rounded
-dqsub063 subtract '70000'    '10000e+34' -> '-9.999999999999999999999999999999993E+37' Rounded
-dqsub064 subtract '700000'    '10000e+34' -> '-9.999999999999999999999999999999930E+37' Rounded
-  -- symmetry:
-dqsub065 subtract '10000e+34'    '70' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
-dqsub066 subtract '10000e+34'    '700' -> '1.000000000000000000000000000000000E+38' Inexact Rounded
-dqsub067 subtract '10000e+34'    '7000' -> '9.999999999999999999999999999999999E+37' Inexact Rounded
-dqsub068 subtract '10000e+34'    '70000' -> '9.999999999999999999999999999999993E+37' Rounded
-dqsub069 subtract '10000e+34'    '700000' -> '9.999999999999999999999999999999930E+37' Rounded
-
-  -- some of the next group are really constructor tests
-dqsub090 subtract '00.0'    '0.0'  -> '0.0'
-dqsub091 subtract '00.0'    '0.00' -> '0.00'
-dqsub092 subtract '0.00'    '00.0' -> '0.00'
-dqsub093 subtract '00.0'    '0.00' -> '0.00'
-dqsub094 subtract '0.00'    '00.0' -> '0.00'
-dqsub095 subtract '3'    '.3'   -> '2.7'
-dqsub096 subtract '3.'   '.3'   -> '2.7'
-dqsub097 subtract '3.0'  '.3'   -> '2.7'
-dqsub098 subtract '3.00' '.3'   -> '2.70'
-dqsub099 subtract '3'    '3'    -> '0'
-dqsub100 subtract '3'    '+3'   -> '0'
-dqsub101 subtract '3'    '-3'   -> '6'
-dqsub102 subtract '3'    '0.3'  -> '2.7'
-dqsub103 subtract '3.'   '0.3'  -> '2.7'
-dqsub104 subtract '3.0'  '0.3'  -> '2.7'
-dqsub105 subtract '3.00' '0.3'  -> '2.70'
-dqsub106 subtract '3'    '3.0'  -> '0.0'
-dqsub107 subtract '3'    '+3.0' -> '0.0'
-dqsub108 subtract '3'    '-3.0' -> '6.0'
-
--- the above all from add; massaged and extended.  Now some new ones...
--- [particularly important for comparisons]
--- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7
--- with input rounding.
-dqsub120 subtract  '10.23456784'    '10.23456789'  -> '-5E-8'
-dqsub121 subtract  '10.23456785'    '10.23456789'  -> '-4E-8'
-dqsub122 subtract  '10.23456786'    '10.23456789'  -> '-3E-8'
-dqsub123 subtract  '10.23456787'    '10.23456789'  -> '-2E-8'
-dqsub124 subtract  '10.23456788'    '10.23456789'  -> '-1E-8'
-dqsub125 subtract  '10.23456789'    '10.23456789'  -> '0E-8'
-dqsub126 subtract  '10.23456790'    '10.23456789'  -> '1E-8'
-dqsub127 subtract  '10.23456791'    '10.23456789'  -> '2E-8'
-dqsub128 subtract  '10.23456792'    '10.23456789'  -> '3E-8'
-dqsub129 subtract  '10.23456793'    '10.23456789'  -> '4E-8'
-dqsub130 subtract  '10.23456794'    '10.23456789'  -> '5E-8'
-dqsub131 subtract  '10.23456781'    '10.23456786'  -> '-5E-8'
-dqsub132 subtract  '10.23456782'    '10.23456786'  -> '-4E-8'
-dqsub133 subtract  '10.23456783'    '10.23456786'  -> '-3E-8'
-dqsub134 subtract  '10.23456784'    '10.23456786'  -> '-2E-8'
-dqsub135 subtract  '10.23456785'    '10.23456786'  -> '-1E-8'
-dqsub136 subtract  '10.23456786'    '10.23456786'  -> '0E-8'
-dqsub137 subtract  '10.23456787'    '10.23456786'  -> '1E-8'
-dqsub138 subtract  '10.23456788'    '10.23456786'  -> '2E-8'
-dqsub139 subtract  '10.23456789'    '10.23456786'  -> '3E-8'
-dqsub140 subtract  '10.23456790'    '10.23456786'  -> '4E-8'
-dqsub141 subtract  '10.23456791'    '10.23456786'  -> '5E-8'
-dqsub142 subtract  '1'              '0.999999999'  -> '1E-9'
-dqsub143 subtract  '0.999999999'    '1'            -> '-1E-9'
-dqsub144 subtract  '-10.23456780'   '-10.23456786' -> '6E-8'
-dqsub145 subtract  '-10.23456790'   '-10.23456786' -> '-4E-8'
-dqsub146 subtract  '-10.23456791'   '-10.23456786' -> '-5E-8'
-
--- additional scaled arithmetic tests [0.97 problem]
-dqsub160 subtract '0'     '.1'      -> '-0.1'
-dqsub161 subtract '00'    '.97983'  -> '-0.97983'
-dqsub162 subtract '0'     '.9'      -> '-0.9'
-dqsub163 subtract '0'     '0.102'   -> '-0.102'
-dqsub164 subtract '0'     '.4'      -> '-0.4'
-dqsub165 subtract '0'     '.307'    -> '-0.307'
-dqsub166 subtract '0'     '.43822'  -> '-0.43822'
-dqsub167 subtract '0'     '.911'    -> '-0.911'
-dqsub168 subtract '.0'    '.02'     -> '-0.02'
-dqsub169 subtract '00'    '.392'    -> '-0.392'
-dqsub170 subtract '0'     '.26'     -> '-0.26'
-dqsub171 subtract '0'     '0.51'    -> '-0.51'
-dqsub172 subtract '0'     '.2234'   -> '-0.2234'
-dqsub173 subtract '0'     '.2'      -> '-0.2'
-dqsub174 subtract '.0'    '.0008'   -> '-0.0008'
--- 0. on left
-dqsub180 subtract '0.0'     '-.1'      -> '0.1'
-dqsub181 subtract '0.00'    '-.97983'  -> '0.97983'
-dqsub182 subtract '0.0'     '-.9'      -> '0.9'
-dqsub183 subtract '0.0'     '-0.102'   -> '0.102'
-dqsub184 subtract '0.0'     '-.4'      -> '0.4'
-dqsub185 subtract '0.0'     '-.307'    -> '0.307'
-dqsub186 subtract '0.0'     '-.43822'  -> '0.43822'
-dqsub187 subtract '0.0'     '-.911'    -> '0.911'
-dqsub188 subtract '0.0'     '-.02'     -> '0.02'
-dqsub189 subtract '0.00'    '-.392'    -> '0.392'
-dqsub190 subtract '0.0'     '-.26'     -> '0.26'
-dqsub191 subtract '0.0'     '-0.51'    -> '0.51'
-dqsub192 subtract '0.0'     '-.2234'   -> '0.2234'
-dqsub193 subtract '0.0'     '-.2'      -> '0.2'
-dqsub194 subtract '0.0'     '-.0008'   -> '0.0008'
--- negatives of same
-dqsub200 subtract '0'     '-.1'      -> '0.1'
-dqsub201 subtract '00'    '-.97983'  -> '0.97983'
-dqsub202 subtract '0'     '-.9'      -> '0.9'
-dqsub203 subtract '0'     '-0.102'   -> '0.102'
-dqsub204 subtract '0'     '-.4'      -> '0.4'
-dqsub205 subtract '0'     '-.307'    -> '0.307'
-dqsub206 subtract '0'     '-.43822'  -> '0.43822'
-dqsub207 subtract '0'     '-.911'    -> '0.911'
-dqsub208 subtract '.0'    '-.02'     -> '0.02'
-dqsub209 subtract '00'    '-.392'    -> '0.392'
-dqsub210 subtract '0'     '-.26'     -> '0.26'
-dqsub211 subtract '0'     '-0.51'    -> '0.51'
-dqsub212 subtract '0'     '-.2234'   -> '0.2234'
-dqsub213 subtract '0'     '-.2'      -> '0.2'
-dqsub214 subtract '.0'    '-.0008'   -> '0.0008'
-
--- more fixed, LHS swaps [really the same as testcases under add]
-dqsub220 subtract '-56267E-12' 0  -> '-5.6267E-8'
-dqsub221 subtract '-56267E-11' 0  -> '-5.6267E-7'
-dqsub222 subtract '-56267E-10' 0  -> '-0.0000056267'
-dqsub223 subtract '-56267E-9'  0  -> '-0.000056267'
-dqsub224 subtract '-56267E-8'  0  -> '-0.00056267'
-dqsub225 subtract '-56267E-7'  0  -> '-0.0056267'
-dqsub226 subtract '-56267E-6'  0  -> '-0.056267'
-dqsub227 subtract '-56267E-5'  0  -> '-0.56267'
-dqsub228 subtract '-56267E-2'  0  -> '-562.67'
-dqsub229 subtract '-56267E-1'  0  -> '-5626.7'
-dqsub230 subtract '-56267E-0'  0  -> '-56267'
--- symmetry ...
-dqsub240 subtract 0 '-56267E-12'  -> '5.6267E-8'
-dqsub241 subtract 0 '-56267E-11'  -> '5.6267E-7'
-dqsub242 subtract 0 '-56267E-10'  -> '0.0000056267'
-dqsub243 subtract 0 '-56267E-9'   -> '0.000056267'
-dqsub244 subtract 0 '-56267E-8'   -> '0.00056267'
-dqsub245 subtract 0 '-56267E-7'   -> '0.0056267'
-dqsub246 subtract 0 '-56267E-6'   -> '0.056267'
-dqsub247 subtract 0 '-56267E-5'   -> '0.56267'
-dqsub248 subtract 0 '-56267E-2'   -> '562.67'
-dqsub249 subtract 0 '-56267E-1'   -> '5626.7'
-dqsub250 subtract 0 '-56267E-0'   -> '56267'
-
--- now some more from the 'new' add
-dqsub301 subtract '1.23456789'  '1.00000000' -> '0.23456789'
-dqsub302 subtract '1.23456789'  '1.00000011' -> '0.23456778'
-
--- some carrying effects
-dqsub321 subtract '0.9998'  '0.0000' -> '0.9998'
-dqsub322 subtract '0.9998'  '0.0001' -> '0.9997'
-dqsub323 subtract '0.9998'  '0.0002' -> '0.9996'
-dqsub324 subtract '0.9998'  '0.0003' -> '0.9995'
-dqsub325 subtract '0.9998'  '-0.0000' -> '0.9998'
-dqsub326 subtract '0.9998'  '-0.0001' -> '0.9999'
-dqsub327 subtract '0.9998'  '-0.0002' -> '1.0000'
-dqsub328 subtract '0.9998'  '-0.0003' -> '1.0001'
-
--- internal boundaries
-dqsub346 subtract '10000e+9'  '7'   -> '9999999999993'
-dqsub347 subtract '10000e+9'  '70'   -> '9999999999930'
-dqsub348 subtract '10000e+9'  '700'   -> '9999999999300'
-dqsub349 subtract '10000e+9'  '7000'   -> '9999999993000'
-dqsub350 subtract '10000e+9'  '70000'   -> '9999999930000'
-dqsub351 subtract '10000e+9'  '700000'   -> '9999999300000'
-dqsub352 subtract '7' '10000e+9'   -> '-9999999999993'
-dqsub353 subtract '70' '10000e+9'   -> '-9999999999930'
-dqsub354 subtract '700' '10000e+9'   -> '-9999999999300'
-dqsub355 subtract '7000' '10000e+9'   -> '-9999999993000'
-dqsub356 subtract '70000' '10000e+9'   -> '-9999999930000'
-dqsub357 subtract '700000' '10000e+9'   -> '-9999999300000'
-
--- zero preservation
-dqsub361 subtract 1 '0.0001' -> '0.9999'
-dqsub362 subtract 1 '0.00001' -> '0.99999'
-dqsub363 subtract 1 '0.000001' -> '0.999999'
-dqsub364 subtract 1 '0.0000000000000000000000000000000001' -> '0.9999999999999999999999999999999999'
-dqsub365 subtract 1 '0.00000000000000000000000000000000001' -> '1.000000000000000000000000000000000' Inexact Rounded
-dqsub366 subtract 1 '0.000000000000000000000000000000000001' -> '1.000000000000000000000000000000000' Inexact Rounded
-
--- some funny zeros [in case of bad signum]
-dqsub370 subtract 1  0  -> 1
-dqsub371 subtract 1 0.  -> 1
-dqsub372 subtract 1  .0 -> 1.0
-dqsub373 subtract 1 0.0 -> 1.0
-dqsub374 subtract  0  1 -> -1
-dqsub375 subtract 0.  1 -> -1
-dqsub376 subtract  .0 1 -> -1.0
-dqsub377 subtract 0.0 1 -> -1.0
-
--- leading 0 digit before round
-dqsub910 subtract -103519362 -51897955.3 -> -51621406.7
-dqsub911 subtract 159579.444 89827.5229 -> 69751.9211
-
-dqsub920 subtract 333.0000000000000000000000000123456 33.00000000000000000000000001234566 -> 299.9999999999999999999999999999999 Inexact Rounded
-dqsub921 subtract 333.0000000000000000000000000123456 33.00000000000000000000000001234565 -> 300.0000000000000000000000000000000 Inexact Rounded
-dqsub922 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234565 ->  99.99999999999999999999999999999995
-dqsub923 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234564 ->  99.99999999999999999999999999999996
-dqsub924 subtract 133.0000000000000000000000000123456 33.00000000000000000000000001234540 -> 100.0000000000000000000000000000002 Rounded
-dqsub925 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234560 ->  90.00000000000000000000000000000000
-dqsub926 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234561 ->  89.99999999999999999999999999999999
-dqsub927 subtract 133.0000000000000000000000000123456 43.00000000000000000000000001234566 ->  89.99999999999999999999999999999994
-dqsub928 subtract 101.0000000000000000000000000123456 91.00000000000000000000000001234566 ->   9.99999999999999999999999999999994
-dqsub929 subtract 101.0000000000000000000000000123456 99.00000000000000000000000001234566 ->   1.99999999999999999999999999999994
-
--- more LHS swaps [were fixed]
-dqsub390 subtract '-56267E-10'   0 ->  '-0.0000056267'
-dqsub391 subtract '-56267E-6'    0 ->  '-0.056267'
-dqsub392 subtract '-56267E-5'    0 ->  '-0.56267'
-dqsub393 subtract '-56267E-4'    0 ->  '-5.6267'
-dqsub394 subtract '-56267E-3'    0 ->  '-56.267'
-dqsub395 subtract '-56267E-2'    0 ->  '-562.67'
-dqsub396 subtract '-56267E-1'    0 ->  '-5626.7'
-dqsub397 subtract '-56267E-0'    0 ->  '-56267'
-dqsub398 subtract '-5E-10'       0 ->  '-5E-10'
-dqsub399 subtract '-5E-7'        0 ->  '-5E-7'
-dqsub400 subtract '-5E-6'        0 ->  '-0.000005'
-dqsub401 subtract '-5E-5'        0 ->  '-0.00005'
-dqsub402 subtract '-5E-4'        0 ->  '-0.0005'
-dqsub403 subtract '-5E-1'        0 ->  '-0.5'
-dqsub404 subtract '-5E0'         0 ->  '-5'
-dqsub405 subtract '-5E1'         0 ->  '-50'
-dqsub406 subtract '-5E5'         0 ->  '-500000'
-dqsub407 subtract '-5E33'        0 ->  '-5000000000000000000000000000000000'
-dqsub408 subtract '-5E34'        0 ->  '-5.000000000000000000000000000000000E+34'  Rounded
-dqsub409 subtract '-5E35'        0 ->  '-5.000000000000000000000000000000000E+35'  Rounded
-dqsub410 subtract '-5E36'        0 ->  '-5.000000000000000000000000000000000E+36'  Rounded
-dqsub411 subtract '-5E100'       0 ->  '-5.000000000000000000000000000000000E+100' Rounded
-
--- more RHS swaps [were fixed]
-dqsub420 subtract 0  '-56267E-10' ->  '0.0000056267'
-dqsub421 subtract 0  '-56267E-6'  ->  '0.056267'
-dqsub422 subtract 0  '-56267E-5'  ->  '0.56267'
-dqsub423 subtract 0  '-56267E-4'  ->  '5.6267'
-dqsub424 subtract 0  '-56267E-3'  ->  '56.267'
-dqsub425 subtract 0  '-56267E-2'  ->  '562.67'
-dqsub426 subtract 0  '-56267E-1'  ->  '5626.7'
-dqsub427 subtract 0  '-56267E-0'  ->  '56267'
-dqsub428 subtract 0  '-5E-10'     ->  '5E-10'
-dqsub429 subtract 0  '-5E-7'      ->  '5E-7'
-dqsub430 subtract 0  '-5E-6'      ->  '0.000005'
-dqsub431 subtract 0  '-5E-5'      ->  '0.00005'
-dqsub432 subtract 0  '-5E-4'      ->  '0.0005'
-dqsub433 subtract 0  '-5E-1'      ->  '0.5'
-dqsub434 subtract 0  '-5E0'       ->  '5'
-dqsub435 subtract 0  '-5E1'       ->  '50'
-dqsub436 subtract 0  '-5E5'       ->  '500000'
-dqsub437 subtract 0  '-5E33'      ->  '5000000000000000000000000000000000'
-dqsub438 subtract 0  '-5E34'      ->  '5.000000000000000000000000000000000E+34'   Rounded
-dqsub439 subtract 0  '-5E35'      ->  '5.000000000000000000000000000000000E+35'   Rounded
-dqsub440 subtract 0  '-5E36'      ->  '5.000000000000000000000000000000000E+36'   Rounded
-dqsub441 subtract 0  '-5E100'     ->  '5.000000000000000000000000000000000E+100'  Rounded
-
-
--- try borderline precision, with carries, etc.
-dqsub461 subtract '1E+16' '1'        -> '9999999999999999'
-dqsub462 subtract '1E+12' '-1.111'   -> '1000000000001.111'
-dqsub463 subtract '1.111'  '-1E+12'  -> '1000000000001.111'
-dqsub464 subtract '-1'    '-1E+16'   -> '9999999999999999'
-dqsub465 subtract '7E+15' '1'        -> '6999999999999999'
-dqsub466 subtract '7E+12' '-1.111'   -> '7000000000001.111'
-dqsub467 subtract '1.111'  '-7E+12'  -> '7000000000001.111'
-dqsub468 subtract '-1'    '-7E+15'   -> '6999999999999999'
-
---                   1234567890123456       1234567890123456      1 23456789012345
-dqsub470 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555563' -> '1.000000000000000000000000000000001' Inexact Rounded
-dqsub471 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555562' -> '1.000000000000000000000000000000001' Inexact Rounded
-dqsub472 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555561' -> '1.000000000000000000000000000000000' Inexact Rounded
-dqsub473 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555560' -> '1.000000000000000000000000000000000' Inexact Rounded
-dqsub474 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555559' -> '1.000000000000000000000000000000000' Inexact Rounded
-dqsub475 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555558' -> '1.000000000000000000000000000000000' Inexact Rounded
-dqsub476 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555557' -> '1.000000000000000000000000000000000' Inexact Rounded
-dqsub477 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555556' -> '1.000000000000000000000000000000000' Rounded
-dqsub478 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555555' -> '0.9999999999999999999999999999999999'
-dqsub479 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555554' -> '0.9999999999999999999999999999999998'
-dqsub480 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555553' -> '0.9999999999999999999999999999999997'
-dqsub481 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555552' -> '0.9999999999999999999999999999999996'
-dqsub482 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555551' -> '0.9999999999999999999999999999999995'
-dqsub483 subtract '0.4444444444444444444444444444444444'  '-0.5555555555555555555555555555555550' -> '0.9999999999999999999999999999999994'
-
--- and some more, including residue effects and different roundings
-rounding: half_up
-dqsub500 subtract '1231234555555555555555555567456789' 0             -> '1231234555555555555555555567456789'
-dqsub501 subtract '1231234555555555555555555567456789' 0.000000001   -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub502 subtract '1231234555555555555555555567456789' 0.000001      -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub503 subtract '1231234555555555555555555567456789' 0.1           -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub504 subtract '1231234555555555555555555567456789' 0.4           -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub505 subtract '1231234555555555555555555567456789' 0.49          -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub506 subtract '1231234555555555555555555567456789' 0.499999      -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub507 subtract '1231234555555555555555555567456789' 0.499999999   -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub508 subtract '1231234555555555555555555567456789' 0.5           -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub509 subtract '1231234555555555555555555567456789' 0.500000001   -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub510 subtract '1231234555555555555555555567456789' 0.500001      -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub511 subtract '1231234555555555555555555567456789' 0.51          -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub512 subtract '1231234555555555555555555567456789' 0.6           -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub513 subtract '1231234555555555555555555567456789' 0.9           -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub514 subtract '1231234555555555555555555567456789' 0.99999       -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub515 subtract '1231234555555555555555555567456789' 0.999999999   -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub516 subtract '1231234555555555555555555567456789' 1             -> '1231234555555555555555555567456788'
-dqsub517 subtract '1231234555555555555555555567456789' 1.000000001   -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub518 subtract '1231234555555555555555555567456789' 1.00001       -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub519 subtract '1231234555555555555555555567456789' 1.1           -> '1231234555555555555555555567456788' Inexact Rounded
-
-rounding: half_even
-dqsub520 subtract '1231234555555555555555555567456789' 0             -> '1231234555555555555555555567456789'
-dqsub521 subtract '1231234555555555555555555567456789' 0.000000001   -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub522 subtract '1231234555555555555555555567456789' 0.000001      -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub523 subtract '1231234555555555555555555567456789' 0.1           -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub524 subtract '1231234555555555555555555567456789' 0.4           -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub525 subtract '1231234555555555555555555567456789' 0.49          -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub526 subtract '1231234555555555555555555567456789' 0.499999      -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub527 subtract '1231234555555555555555555567456789' 0.499999999   -> '1231234555555555555555555567456789' Inexact Rounded
-dqsub528 subtract '1231234555555555555555555567456789' 0.5           -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub529 subtract '1231234555555555555555555567456789' 0.500000001   -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub530 subtract '1231234555555555555555555567456789' 0.500001      -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub531 subtract '1231234555555555555555555567456789' 0.51          -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub532 subtract '1231234555555555555555555567456789' 0.6           -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub533 subtract '1231234555555555555555555567456789' 0.9           -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub534 subtract '1231234555555555555555555567456789' 0.99999       -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub535 subtract '1231234555555555555555555567456789' 0.999999999   -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub536 subtract '1231234555555555555555555567456789' 1             -> '1231234555555555555555555567456788'
-dqsub537 subtract '1231234555555555555555555567456789' 1.00000001    -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub538 subtract '1231234555555555555555555567456789' 1.00001       -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub539 subtract '1231234555555555555555555567456789' 1.1           -> '1231234555555555555555555567456788' Inexact Rounded
--- critical few with even bottom digit...
-dqsub540 subtract '1231234555555555555555555567456788' 0.499999999   -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub541 subtract '1231234555555555555555555567456788' 0.5           -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub542 subtract '1231234555555555555555555567456788' 0.500000001   -> '1231234555555555555555555567456787' Inexact Rounded
-
-rounding: down
-dqsub550 subtract '1231234555555555555555555567456789' 0             -> '1231234555555555555555555567456789'
-dqsub551 subtract '1231234555555555555555555567456789' 0.000000001   -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub552 subtract '1231234555555555555555555567456789' 0.000001      -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub553 subtract '1231234555555555555555555567456789' 0.1           -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub554 subtract '1231234555555555555555555567456789' 0.4           -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub555 subtract '1231234555555555555555555567456789' 0.49          -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub556 subtract '1231234555555555555555555567456789' 0.499999      -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub557 subtract '1231234555555555555555555567456789' 0.499999999   -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub558 subtract '1231234555555555555555555567456789' 0.5           -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub559 subtract '1231234555555555555555555567456789' 0.500000001   -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub560 subtract '1231234555555555555555555567456789' 0.500001      -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub561 subtract '1231234555555555555555555567456789' 0.51          -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub562 subtract '1231234555555555555555555567456789' 0.6           -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub563 subtract '1231234555555555555555555567456789' 0.9           -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub564 subtract '1231234555555555555555555567456789' 0.99999       -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub565 subtract '1231234555555555555555555567456789' 0.999999999   -> '1231234555555555555555555567456788' Inexact Rounded
-dqsub566 subtract '1231234555555555555555555567456789' 1             -> '1231234555555555555555555567456788'
-dqsub567 subtract '1231234555555555555555555567456789' 1.00000001    -> '1231234555555555555555555567456787' Inexact Rounded
-dqsub568 subtract '1231234555555555555555555567456789' 1.00001       -> '1231234555555555555555555567456787' Inexact Rounded
-dqsub569 subtract '1231234555555555555555555567456789' 1.1           -> '1231234555555555555555555567456787' Inexact Rounded
-
--- symmetry...
-rounding: half_up
-dqsub600 subtract 0             '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789'
-dqsub601 subtract 0.000000001   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub602 subtract 0.000001      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub603 subtract 0.1           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub604 subtract 0.4           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub605 subtract 0.49          '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub606 subtract 0.499999      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub607 subtract 0.499999999   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub608 subtract 0.5           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub609 subtract 0.500000001   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub610 subtract 0.500001      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub611 subtract 0.51          '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub612 subtract 0.6           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub613 subtract 0.9           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub614 subtract 0.99999       '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub615 subtract 0.999999999   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub616 subtract 1             '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788'
-dqsub617 subtract 1.000000001   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub618 subtract 1.00001       '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub619 subtract 1.1           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-
-rounding: half_even
-dqsub620 subtract 0             '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789'
-dqsub621 subtract 0.000000001   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub622 subtract 0.000001      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub623 subtract 0.1           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub624 subtract 0.4           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub625 subtract 0.49          '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub626 subtract 0.499999      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub627 subtract 0.499999999   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789' Inexact Rounded
-dqsub628 subtract 0.5           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub629 subtract 0.500000001   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub630 subtract 0.500001      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub631 subtract 0.51          '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub632 subtract 0.6           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub633 subtract 0.9           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub634 subtract 0.99999       '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub635 subtract 0.999999999   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub636 subtract 1             '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788'
-dqsub637 subtract 1.00000001    '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub638 subtract 1.00001       '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub639 subtract 1.1           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
--- critical few with even bottom digit...
-dqsub640 subtract 0.499999999   '1231234555555555555555555567456788' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub641 subtract 0.5           '1231234555555555555555555567456788' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub642 subtract 0.500000001   '1231234555555555555555555567456788' -> '-1231234555555555555555555567456787' Inexact Rounded
-
-rounding: down
-dqsub650 subtract 0             '1231234555555555555555555567456789' -> '-1231234555555555555555555567456789'
-dqsub651 subtract 0.000000001   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub652 subtract 0.000001      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub653 subtract 0.1           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub654 subtract 0.4           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub655 subtract 0.49          '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub656 subtract 0.499999      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub657 subtract 0.499999999   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub658 subtract 0.5           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub659 subtract 0.500000001   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub660 subtract 0.500001      '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub661 subtract 0.51          '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub662 subtract 0.6           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub663 subtract 0.9           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub664 subtract 0.99999       '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub665 subtract 0.999999999   '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788' Inexact Rounded
-dqsub666 subtract 1             '1231234555555555555555555567456789' -> '-1231234555555555555555555567456788'
-dqsub667 subtract 1.00000001    '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded
-dqsub668 subtract 1.00001       '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded
-dqsub669 subtract 1.1           '1231234555555555555555555567456789' -> '-1231234555555555555555555567456787' Inexact Rounded
-
-
--- lots of leading zeros in intermediate result, and showing effects of
--- input rounding would have affected the following
-rounding: half_up
-dqsub670 subtract '1234567456789' '1234567456788.1' -> 0.9
-dqsub671 subtract '1234567456789' '1234567456788.9' -> 0.1
-dqsub672 subtract '1234567456789' '1234567456789.1' -> -0.1
-dqsub673 subtract '1234567456789' '1234567456789.5' -> -0.5
-dqsub674 subtract '1234567456789' '1234567456789.9' -> -0.9
-
-rounding: half_even
-dqsub680 subtract '1234567456789' '1234567456788.1' -> 0.9
-dqsub681 subtract '1234567456789' '1234567456788.9' -> 0.1
-dqsub682 subtract '1234567456789' '1234567456789.1' -> -0.1
-dqsub683 subtract '1234567456789' '1234567456789.5' -> -0.5
-dqsub684 subtract '1234567456789' '1234567456789.9' -> -0.9
-
-dqsub685 subtract '1234567456788' '1234567456787.1' -> 0.9
-dqsub686 subtract '1234567456788' '1234567456787.9' -> 0.1
-dqsub687 subtract '1234567456788' '1234567456788.1' -> -0.1
-dqsub688 subtract '1234567456788' '1234567456788.5' -> -0.5
-dqsub689 subtract '1234567456788' '1234567456788.9' -> -0.9
-
-rounding: down
-dqsub690 subtract '1234567456789' '1234567456788.1' -> 0.9
-dqsub691 subtract '1234567456789' '1234567456788.9' -> 0.1
-dqsub692 subtract '1234567456789' '1234567456789.1' -> -0.1
-dqsub693 subtract '1234567456789' '1234567456789.5' -> -0.5
-dqsub694 subtract '1234567456789' '1234567456789.9' -> -0.9
-
--- Specials
-dqsub780 subtract -Inf   Inf   -> -Infinity
-dqsub781 subtract -Inf   1000  -> -Infinity
-dqsub782 subtract -Inf   1     -> -Infinity
-dqsub783 subtract -Inf  -0     -> -Infinity
-dqsub784 subtract -Inf  -1     -> -Infinity
-dqsub785 subtract -Inf  -1000  -> -Infinity
-dqsub787 subtract -1000  Inf   -> -Infinity
-dqsub788 subtract -Inf   Inf   -> -Infinity
-dqsub789 subtract -1     Inf   -> -Infinity
-dqsub790 subtract  0     Inf   -> -Infinity
-dqsub791 subtract  1     Inf   -> -Infinity
-dqsub792 subtract  1000  Inf   -> -Infinity
-
-dqsub800 subtract  Inf   Inf   ->  NaN  Invalid_operation
-dqsub801 subtract  Inf   1000  ->  Infinity
-dqsub802 subtract  Inf   1     ->  Infinity
-dqsub803 subtract  Inf   0     ->  Infinity
-dqsub804 subtract  Inf  -0     ->  Infinity
-dqsub805 subtract  Inf  -1     ->  Infinity
-dqsub806 subtract  Inf  -1000  ->  Infinity
-dqsub807 subtract  Inf  -Inf   ->  Infinity
-dqsub808 subtract -1000 -Inf   ->  Infinity
-dqsub809 subtract -Inf  -Inf   ->  NaN  Invalid_operation
-dqsub810 subtract -1    -Inf   ->  Infinity
-dqsub811 subtract -0    -Inf   ->  Infinity
-dqsub812 subtract  0    -Inf   ->  Infinity
-dqsub813 subtract  1    -Inf   ->  Infinity
-dqsub814 subtract  1000 -Inf   ->  Infinity
-dqsub815 subtract  Inf  -Inf   ->  Infinity
-
-dqsub821 subtract  NaN   Inf   ->  NaN
-dqsub822 subtract -NaN   1000  -> -NaN
-dqsub823 subtract  NaN   1     ->  NaN
-dqsub824 subtract  NaN   0     ->  NaN
-dqsub825 subtract  NaN  -0     ->  NaN
-dqsub826 subtract  NaN  -1     ->  NaN
-dqsub827 subtract  NaN  -1000  ->  NaN
-dqsub828 subtract  NaN  -Inf   ->  NaN
-dqsub829 subtract -NaN   NaN   -> -NaN
-dqsub830 subtract -Inf   NaN   ->  NaN
-dqsub831 subtract -1000  NaN   ->  NaN
-dqsub832 subtract -1     NaN   ->  NaN
-dqsub833 subtract -0     NaN   ->  NaN
-dqsub834 subtract  0     NaN   ->  NaN
-dqsub835 subtract  1     NaN   ->  NaN
-dqsub836 subtract  1000 -NaN   -> -NaN
-dqsub837 subtract  Inf   NaN   ->  NaN
-
-dqsub841 subtract  sNaN  Inf   ->  NaN  Invalid_operation
-dqsub842 subtract -sNaN  1000  -> -NaN  Invalid_operation
-dqsub843 subtract  sNaN  1     ->  NaN  Invalid_operation
-dqsub844 subtract  sNaN  0     ->  NaN  Invalid_operation
-dqsub845 subtract  sNaN -0     ->  NaN  Invalid_operation
-dqsub846 subtract  sNaN -1     ->  NaN  Invalid_operation
-dqsub847 subtract  sNaN -1000  ->  NaN  Invalid_operation
-dqsub848 subtract  sNaN  NaN   ->  NaN  Invalid_operation
-dqsub849 subtract  sNaN sNaN   ->  NaN  Invalid_operation
-dqsub850 subtract  NaN  sNaN   ->  NaN  Invalid_operation
-dqsub851 subtract -Inf -sNaN   -> -NaN  Invalid_operation
-dqsub852 subtract -1000 sNaN   ->  NaN  Invalid_operation
-dqsub853 subtract -1    sNaN   ->  NaN  Invalid_operation
-dqsub854 subtract -0    sNaN   ->  NaN  Invalid_operation
-dqsub855 subtract  0    sNaN   ->  NaN  Invalid_operation
-dqsub856 subtract  1    sNaN   ->  NaN  Invalid_operation
-dqsub857 subtract  1000 sNaN   ->  NaN  Invalid_operation
-dqsub858 subtract  Inf  sNaN   ->  NaN  Invalid_operation
-dqsub859 subtract  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqsub861 subtract  NaN01   -Inf     ->  NaN1
-dqsub862 subtract -NaN02   -1000    -> -NaN2
-dqsub863 subtract  NaN03    1000    ->  NaN3
-dqsub864 subtract  NaN04    Inf     ->  NaN4
-dqsub865 subtract  NaN05    NaN61   ->  NaN5
-dqsub866 subtract -Inf     -NaN71   -> -NaN71
-dqsub867 subtract -1000     NaN81   ->  NaN81
-dqsub868 subtract  1000     NaN91   ->  NaN91
-dqsub869 subtract  Inf      NaN101  ->  NaN101
-dqsub871 subtract  sNaN011  -Inf    ->  NaN11  Invalid_operation
-dqsub872 subtract  sNaN012  -1000   ->  NaN12  Invalid_operation
-dqsub873 subtract -sNaN013   1000   -> -NaN13  Invalid_operation
-dqsub874 subtract  sNaN014   NaN171 ->  NaN14  Invalid_operation
-dqsub875 subtract  sNaN015  sNaN181 ->  NaN15  Invalid_operation
-dqsub876 subtract  NaN016   sNaN191 ->  NaN191 Invalid_operation
-dqsub877 subtract -Inf      sNaN201 ->  NaN201 Invalid_operation
-dqsub878 subtract -1000     sNaN211 ->  NaN211 Invalid_operation
-dqsub879 subtract  1000    -sNaN221 -> -NaN221 Invalid_operation
-dqsub880 subtract  Inf      sNaN231 ->  NaN231 Invalid_operation
-dqsub881 subtract  NaN025   sNaN241 ->  NaN241 Invalid_operation
-
--- edge case spills
-dqsub901 subtract  2.E-3  1.002  -> -1.000
-dqsub902 subtract  2.0E-3  1.002  -> -1.0000
-dqsub903 subtract  2.00E-3  1.0020  -> -1.00000
-dqsub904 subtract  2.000E-3  1.00200  -> -1.000000
-dqsub905 subtract  2.0000E-3  1.002000  -> -1.0000000
-dqsub906 subtract  2.00000E-3  1.0020000  -> -1.00000000
-dqsub907 subtract  2.000000E-3  1.00200000  -> -1.000000000
-dqsub908 subtract  2.0000000E-3  1.002000000  -> -1.0000000000
-
--- subnormals and overflows covered under Add
-
--- Examples from SQL proposal (Krishna Kulkarni)
-dqsub1125  subtract 130E-2  120E-2 -> 0.10
-dqsub1126  subtract 130E-2  12E-1  -> 0.10
-dqsub1127  subtract 130E-2  1E0    -> 0.30
-dqsub1128  subtract 1E2     1E4    -> -9.9E+3
-
--- Null tests
-dqsub9990 subtract 10  # -> NaN Invalid_operation
-dqsub9991 subtract  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqToIntegral.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqToIntegral.decTest
deleted file mode 100644
index eb12387..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqToIntegral.decTest
+++ /dev/null
@@ -1,257 +0,0 @@
-------------------------------------------------------------------------
--- dqToIntegral.decTest -- round Quad to integral value               --
--- Copyright (c) IBM Corporation, 2001, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This set of tests tests the extended specification 'round-to-integral
--- value-exact' operations (from IEEE 854, later modified in 754r).
--- All non-zero results are defined as being those from either copy or
--- quantize, so those are assumed to have been tested extensively
--- elsewhere; the tests here are for integrity, rounding mode, etc.
--- Also, it is assumed the test harness will use these tests for both
--- ToIntegralExact (which does set Inexact) and the fixed-name
--- functions (which do not set Inexact).
-
--- Note that decNumber implements an earlier definition of toIntegral
--- which never sets Inexact; the decTest operator for that is called
--- 'tointegral' instead of 'tointegralx'.
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
-dqintx001 tointegralx      0     ->  0
-dqintx002 tointegralx      0.0   ->  0
-dqintx003 tointegralx      0.1   ->  0  Inexact Rounded
-dqintx004 tointegralx      0.2   ->  0  Inexact Rounded
-dqintx005 tointegralx      0.3   ->  0  Inexact Rounded
-dqintx006 tointegralx      0.4   ->  0  Inexact Rounded
-dqintx007 tointegralx      0.5   ->  0  Inexact Rounded
-dqintx008 tointegralx      0.6   ->  1  Inexact Rounded
-dqintx009 tointegralx      0.7   ->  1  Inexact Rounded
-dqintx010 tointegralx      0.8   ->  1  Inexact Rounded
-dqintx011 tointegralx      0.9   ->  1  Inexact Rounded
-dqintx012 tointegralx      1     ->  1
-dqintx013 tointegralx      1.0   ->  1  Rounded
-dqintx014 tointegralx      1.1   ->  1  Inexact Rounded
-dqintx015 tointegralx      1.2   ->  1  Inexact Rounded
-dqintx016 tointegralx      1.3   ->  1  Inexact Rounded
-dqintx017 tointegralx      1.4   ->  1  Inexact Rounded
-dqintx018 tointegralx      1.5   ->  2  Inexact Rounded
-dqintx019 tointegralx      1.6   ->  2  Inexact Rounded
-dqintx020 tointegralx      1.7   ->  2  Inexact Rounded
-dqintx021 tointegralx      1.8   ->  2  Inexact Rounded
-dqintx022 tointegralx      1.9   ->  2  Inexact Rounded
--- negatives
-dqintx031 tointegralx     -0     -> -0
-dqintx032 tointegralx     -0.0   -> -0
-dqintx033 tointegralx     -0.1   -> -0  Inexact Rounded
-dqintx034 tointegralx     -0.2   -> -0  Inexact Rounded
-dqintx035 tointegralx     -0.3   -> -0  Inexact Rounded
-dqintx036 tointegralx     -0.4   -> -0  Inexact Rounded
-dqintx037 tointegralx     -0.5   -> -0  Inexact Rounded
-dqintx038 tointegralx     -0.6   -> -1  Inexact Rounded
-dqintx039 tointegralx     -0.7   -> -1  Inexact Rounded
-dqintx040 tointegralx     -0.8   -> -1  Inexact Rounded
-dqintx041 tointegralx     -0.9   -> -1  Inexact Rounded
-dqintx042 tointegralx     -1     -> -1
-dqintx043 tointegralx     -1.0   -> -1  Rounded
-dqintx044 tointegralx     -1.1   -> -1  Inexact Rounded
-dqintx045 tointegralx     -1.2   -> -1  Inexact Rounded
-dqintx046 tointegralx     -1.3   -> -1  Inexact Rounded
-dqintx047 tointegralx     -1.4   -> -1  Inexact Rounded
-dqintx048 tointegralx     -1.5   -> -2  Inexact Rounded
-dqintx049 tointegralx     -1.6   -> -2  Inexact Rounded
-dqintx050 tointegralx     -1.7   -> -2  Inexact Rounded
-dqintx051 tointegralx     -1.8   -> -2  Inexact Rounded
-dqintx052 tointegralx     -1.9   -> -2  Inexact Rounded
--- next two would be NaN using quantize(x, 0)
-dqintx053 tointegralx    10E+60  -> 1.0E+61
-dqintx054 tointegralx   -10E+60  -> -1.0E+61
-
--- numbers around precision
-dqintx060 tointegralx '56267E-17'   -> '0'      Inexact Rounded
-dqintx061 tointegralx '56267E-5'    -> '1'      Inexact Rounded
-dqintx062 tointegralx '56267E-2'    -> '563'    Inexact Rounded
-dqintx063 tointegralx '56267E-1'    -> '5627'   Inexact Rounded
-dqintx065 tointegralx '56267E-0'    -> '56267'
-dqintx066 tointegralx '56267E+0'    -> '56267'
-dqintx067 tointegralx '56267E+1'    -> '5.6267E+5'
-dqintx068 tointegralx '56267E+9'    -> '5.6267E+13'
-dqintx069 tointegralx '56267E+10'   -> '5.6267E+14'
-dqintx070 tointegralx '56267E+11'   -> '5.6267E+15'
-dqintx071 tointegralx '56267E+12'   -> '5.6267E+16'
-dqintx072 tointegralx '56267E+13'   -> '5.6267E+17'
-dqintx073 tointegralx '1.23E+96'    -> '1.23E+96'
-dqintx074 tointegralx '1.23E+6144'  -> #47ffd300000000000000000000000000 Clamped
-
-dqintx080 tointegralx '-56267E-10'  -> '-0'      Inexact Rounded
-dqintx081 tointegralx '-56267E-5'   -> '-1'      Inexact Rounded
-dqintx082 tointegralx '-56267E-2'   -> '-563'    Inexact Rounded
-dqintx083 tointegralx '-56267E-1'   -> '-5627'   Inexact Rounded
-dqintx085 tointegralx '-56267E-0'   -> '-56267'
-dqintx086 tointegralx '-56267E+0'   -> '-56267'
-dqintx087 tointegralx '-56267E+1'   -> '-5.6267E+5'
-dqintx088 tointegralx '-56267E+9'   -> '-5.6267E+13'
-dqintx089 tointegralx '-56267E+10'  -> '-5.6267E+14'
-dqintx090 tointegralx '-56267E+11'  -> '-5.6267E+15'
-dqintx091 tointegralx '-56267E+12'  -> '-5.6267E+16'
-dqintx092 tointegralx '-56267E+13'  -> '-5.6267E+17'
-dqintx093 tointegralx '-1.23E+96'   -> '-1.23E+96'
-dqintx094 tointegralx '-1.23E+6144' -> #c7ffd300000000000000000000000000 Clamped
-
--- subnormal inputs
-dqintx100 tointegralx        1E-299 -> 0  Inexact Rounded
-dqintx101 tointegralx      0.1E-299 -> 0  Inexact Rounded
-dqintx102 tointegralx     0.01E-299 -> 0  Inexact Rounded
-dqintx103 tointegralx        0E-299 -> 0
-
--- specials and zeros
-dqintx120 tointegralx 'Inf'       ->  Infinity
-dqintx121 tointegralx '-Inf'      -> -Infinity
-dqintx122 tointegralx   NaN       ->  NaN
-dqintx123 tointegralx  sNaN       ->  NaN  Invalid_operation
-dqintx124 tointegralx     0       ->  0
-dqintx125 tointegralx    -0       -> -0
-dqintx126 tointegralx     0.000   ->  0
-dqintx127 tointegralx     0.00    ->  0
-dqintx128 tointegralx     0.0     ->  0
-dqintx129 tointegralx     0       ->  0
-dqintx130 tointegralx     0E-3    ->  0
-dqintx131 tointegralx     0E-2    ->  0
-dqintx132 tointegralx     0E-1    ->  0
-dqintx133 tointegralx     0E-0    ->  0
-dqintx134 tointegralx     0E+1    ->  0E+1
-dqintx135 tointegralx     0E+2    ->  0E+2
-dqintx136 tointegralx     0E+3    ->  0E+3
-dqintx137 tointegralx     0E+4    ->  0E+4
-dqintx138 tointegralx     0E+5    ->  0E+5
-dqintx139 tointegralx    -0.000   -> -0
-dqintx140 tointegralx    -0.00    -> -0
-dqintx141 tointegralx    -0.0     -> -0
-dqintx142 tointegralx    -0       -> -0
-dqintx143 tointegralx    -0E-3    -> -0
-dqintx144 tointegralx    -0E-2    -> -0
-dqintx145 tointegralx    -0E-1    -> -0
-dqintx146 tointegralx    -0E-0    -> -0
-dqintx147 tointegralx    -0E+1    -> -0E+1
-dqintx148 tointegralx    -0E+2    -> -0E+2
-dqintx149 tointegralx    -0E+3    -> -0E+3
-dqintx150 tointegralx    -0E+4    -> -0E+4
-dqintx151 tointegralx    -0E+5    -> -0E+5
--- propagating NaNs
-dqintx152 tointegralx   NaN808    ->  NaN808
-dqintx153 tointegralx  sNaN080    ->  NaN80  Invalid_operation
-dqintx154 tointegralx  -NaN808    -> -NaN808
-dqintx155 tointegralx -sNaN080    -> -NaN80  Invalid_operation
-dqintx156 tointegralx  -NaN       -> -NaN
-dqintx157 tointegralx -sNaN       -> -NaN    Invalid_operation
-
--- examples
-rounding:    half_up
-dqintx200 tointegralx     2.1    -> 2            Inexact Rounded
-dqintx201 tointegralx   100      -> 100
-dqintx202 tointegralx   100.0    -> 100          Rounded
-dqintx203 tointegralx   101.5    -> 102          Inexact Rounded
-dqintx204 tointegralx  -101.5    -> -102         Inexact Rounded
-dqintx205 tointegralx   10E+5    -> 1.0E+6
-dqintx206 tointegralx  7.89E+77  -> 7.89E+77
-dqintx207 tointegralx   -Inf     -> -Infinity
-
-
--- all rounding modes
-rounding:    half_even
-dqintx210 tointegralx     55.5   ->  56  Inexact Rounded
-dqintx211 tointegralx     56.5   ->  56  Inexact Rounded
-dqintx212 tointegralx     57.5   ->  58  Inexact Rounded
-dqintx213 tointegralx    -55.5   -> -56  Inexact Rounded
-dqintx214 tointegralx    -56.5   -> -56  Inexact Rounded
-dqintx215 tointegralx    -57.5   -> -58  Inexact Rounded
-
-rounding:    half_up
-
-dqintx220 tointegralx     55.5   ->  56  Inexact Rounded
-dqintx221 tointegralx     56.5   ->  57  Inexact Rounded
-dqintx222 tointegralx     57.5   ->  58  Inexact Rounded
-dqintx223 tointegralx    -55.5   -> -56  Inexact Rounded
-dqintx224 tointegralx    -56.5   -> -57  Inexact Rounded
-dqintx225 tointegralx    -57.5   -> -58  Inexact Rounded
-
-rounding:    half_down
-
-dqintx230 tointegralx     55.5   ->  55  Inexact Rounded
-dqintx231 tointegralx     56.5   ->  56  Inexact Rounded
-dqintx232 tointegralx     57.5   ->  57  Inexact Rounded
-dqintx233 tointegralx    -55.5   -> -55  Inexact Rounded
-dqintx234 tointegralx    -56.5   -> -56  Inexact Rounded
-dqintx235 tointegralx    -57.5   -> -57  Inexact Rounded
-
-rounding:    up
-
-dqintx240 tointegralx     55.3   ->  56  Inexact Rounded
-dqintx241 tointegralx     56.3   ->  57  Inexact Rounded
-dqintx242 tointegralx     57.3   ->  58  Inexact Rounded
-dqintx243 tointegralx    -55.3   -> -56  Inexact Rounded
-dqintx244 tointegralx    -56.3   -> -57  Inexact Rounded
-dqintx245 tointegralx    -57.3   -> -58  Inexact Rounded
-
-rounding:    down
-
-dqintx250 tointegralx     55.7   ->  55  Inexact Rounded
-dqintx251 tointegralx     56.7   ->  56  Inexact Rounded
-dqintx252 tointegralx     57.7   ->  57  Inexact Rounded
-dqintx253 tointegralx    -55.7   -> -55  Inexact Rounded
-dqintx254 tointegralx    -56.7   -> -56  Inexact Rounded
-dqintx255 tointegralx    -57.7   -> -57  Inexact Rounded
-
-rounding:    ceiling
-
-dqintx260 tointegralx     55.3   ->  56  Inexact Rounded
-dqintx261 tointegralx     56.3   ->  57  Inexact Rounded
-dqintx262 tointegralx     57.3   ->  58  Inexact Rounded
-dqintx263 tointegralx    -55.3   -> -55  Inexact Rounded
-dqintx264 tointegralx    -56.3   -> -56  Inexact Rounded
-dqintx265 tointegralx    -57.3   -> -57  Inexact Rounded
-
-rounding:    floor
-
-dqintx270 tointegralx     55.7   ->  55  Inexact Rounded
-dqintx271 tointegralx     56.7   ->  56  Inexact Rounded
-dqintx272 tointegralx     57.7   ->  57  Inexact Rounded
-dqintx273 tointegralx    -55.7   -> -56  Inexact Rounded
-dqintx274 tointegralx    -56.7   -> -57  Inexact Rounded
-dqintx275 tointegralx    -57.7   -> -58  Inexact Rounded
-
--- Int and uInt32 edge values for testing conversions
-dqintx300 tointegralx -2147483646  -> -2147483646
-dqintx301 tointegralx -2147483647  -> -2147483647
-dqintx302 tointegralx -2147483648  -> -2147483648
-dqintx303 tointegralx -2147483649  -> -2147483649
-dqintx304 tointegralx  2147483646  ->  2147483646
-dqintx305 tointegralx  2147483647  ->  2147483647
-dqintx306 tointegralx  2147483648  ->  2147483648
-dqintx307 tointegralx  2147483649  ->  2147483649
-dqintx308 tointegralx  4294967294  ->  4294967294
-dqintx309 tointegralx  4294967295  ->  4294967295
-dqintx310 tointegralx  4294967296  ->  4294967296
-dqintx311 tointegralx  4294967297  ->  4294967297
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqXor.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqXor.decTest
deleted file mode 100644
index fbb32e4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dqXor.decTest
+++ /dev/null
@@ -1,410 +0,0 @@
-------------------------------------------------------------------------
--- dqXor.decTest -- digitwise logical XOR for decQuads                --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-clamp:       1
-precision:   34
-maxExponent: 6144
-minExponent: -6143
-rounding:    half_even
-
--- Sanity check (truth table)
-dqxor001 xor             0    0 ->    0
-dqxor002 xor             0    1 ->    1
-dqxor003 xor             1    0 ->    1
-dqxor004 xor             1    1 ->    0
-dqxor005 xor          1100 1010 ->  110
--- and at msd and msd-1
-dqxor006 xor 0000000000000000000000000000000000 0000000000000000000000000000000000 ->           0
-dqxor007 xor 0000000000000000000000000000000000 1000000000000000000000000000000000 ->   1000000000000000000000000000000000
-dqxor008 xor 1000000000000000000000000000000000 0000000000000000000000000000000000 ->   1000000000000000000000000000000000
-dqxor009 xor 1000000000000000000000000000000000 1000000000000000000000000000000000 ->           0
-dqxor010 xor 0000000000000000000000000000000000 0000000000000000000000000000000000 ->           0
-dqxor011 xor 0000000000000000000000000000000000 0100000000000000000000000000000000 ->    100000000000000000000000000000000
-dqxor012 xor 0100000000000000000000000000000000 0000000000000000000000000000000000 ->    100000000000000000000000000000000
-dqxor013 xor 0100000000000000000000000000000000 0100000000000000000000000000000000 ->           0
-
--- Various lengths
---           1234567890123456789012345678901234
-dqxor601 xor 0111111111111111111111111111111111 1111111111111111111111111111111111  -> 1000000000000000000000000000000000
-dqxor602 xor 1011111111111111111111111111111111 1111111111111111111111111111111111  ->  100000000000000000000000000000000
-dqxor603 xor 1101111111111111111111111111111111 1111111111111111111111111111111111  ->   10000000000000000000000000000000
-dqxor604 xor 1110111111111111111111111111111111 1111111111111111111111111111111111  ->    1000000000000000000000000000000
-dqxor605 xor 1111011111111111111111111111111111 1111111111111111111111111111111111  ->     100000000000000000000000000000
-dqxor606 xor 1111101111111111111111111111111111 1111111111111111111111111111111111  ->      10000000000000000000000000000
-dqxor607 xor 1111110111111111111111111111111111 1111111111111111111111111111111111  ->       1000000000000000000000000000
-dqxor608 xor 1111111011111111111111111111111111 1111111111111111111111111111111111  ->        100000000000000000000000000
-dqxor609 xor 1111111101111111111111111111111111 1111111111111111111111111111111111  ->         10000000000000000000000000
-dqxor610 xor 1111111110111111111111111111111111 1111111111111111111111111111111111  ->          1000000000000000000000000
-dqxor611 xor 1111111111011111111111111111111111 1111111111111111111111111111111111  ->           100000000000000000000000
-dqxor612 xor 1111111111101111111111111111111111 1111111111111111111111111111111111  ->            10000000000000000000000
-dqxor613 xor 1111111111110111111111111111111111 1111111111111111111111111111111111  ->             1000000000000000000000
-dqxor614 xor 1111111111111011111111111111111111 1111111111111111111111111111111111  ->              100000000000000000000
-dqxor615 xor 1111111111111101111111111111111111 1111111111111111111111111111111111  ->               10000000000000000000
-dqxor616 xor 1111111111111110111111111111111111 1111111111111111111111111111111111  ->                1000000000000000000
-dqxor617 xor 1111111111111111011111111111111111 1111111111111111111111111111111111  ->                 100000000000000000
-dqxor618 xor 1111111111111111101111111111111111 1111111111111111111111111111111111  ->                  10000000000000000
-dqxor619 xor 1111111111111111110111111111111111 1111111111111111111111111111111111  ->                   1000000000000000
-dqxor620 xor 1111111111111111111011111111111111 1111111111111111111111111111111111  ->                    100000000000000
-dqxor621 xor 1111111111111111111101111111111111 1111111111111111111111111111111111  ->                     10000000000000
-dqxor622 xor 1111111111111111111110111111111111 1111111111111111111111111111111111  ->                      1000000000000
-dqxor623 xor 1111111111111111111111011111111111 1111111111111111111111111111111111  ->                       100000000000
-dqxor624 xor 1111111111111111111111101111111111 1111111111111111111111111111111111  ->                        10000000000
-dqxor625 xor 1111111111111111111111110111111111 1111111111111111111111111111111111  ->                         1000000000
-dqxor626 xor 1111111111111111111111111011111111 1111111111111111111111111111111111  ->                          100000000
-dqxor627 xor 1111111111111111111111111101111111 1111111111111111111111111111111111  ->                           10000000
-dqxor628 xor 1111111111111111111111111110111111 1111111111111111111111111111111111  ->                            1000000
-dqxor629 xor 1111111111111111111111111111011111 1111111111111111111111111111111111  ->                             100000
-dqxor630 xor 1111111111111111111111111111101111 1111111111111111111111111111111111  ->                              10000
-dqxor631 xor 1111111111111111111111111111110111 1111111111111111111111111111111111  ->                               1000
-dqxor632 xor 1111111111111111111111111111111011 1111111111111111111111111111111111  ->                                100
-dqxor633 xor 1111111111111111111111111111111101 1111111111111111111111111111111111  ->                                 10
-dqxor634 xor 1111111111111111111111111111111110 1111111111111111111111111111111111  ->                                  1
-
-dqxor641 xor 1111111111111111111111111111111111 0111111111111111111111111111111111  -> 1000000000000000000000000000000000
-dqxor642 xor 1111111111111111111111111111111111 1011111111111111111111111111111111  ->  100000000000000000000000000000000
-dqxor643 xor 1111111111111111111111111111111111 1101111111111111111111111111111111  ->   10000000000000000000000000000000
-dqxor644 xor 1111111111111111111111111111111111 1110111111111111111111111111111111  ->    1000000000000000000000000000000
-dqxor645 xor 1111111111111111111111111111111111 1111011111111111111111111111111111  ->     100000000000000000000000000000
-dqxor646 xor 1111111111111111111111111111111111 1111101111111111111111111111111111  ->      10000000000000000000000000000
-dqxor647 xor 1111111111111111111111111111111111 1111110111111111111111111111111111  ->       1000000000000000000000000000
-dqxor648 xor 1111111111111111111111111111111111 1111111011111111111111111111111111  ->        100000000000000000000000000
-dqxor649 xor 1111111111111111111111111111111111 1111111101111111111111111111111111  ->         10000000000000000000000000
-dqxor650 xor 1111111111111111111111111111111111 1111111110111111111111111111111111  ->          1000000000000000000000000
-dqxor651 xor 1111111111111111111111111111111111 1111111111011111111111111111111111  ->           100000000000000000000000
-dqxor652 xor 1111111111111111111111111111111111 1111111111101111111111111111111111  ->            10000000000000000000000
-dqxor653 xor 1111111111111111111111111111111111 1111111111110111111111111111111111  ->             1000000000000000000000
-dqxor654 xor 1111111111111111111111111111111111 1111111111111011111111111111111111  ->              100000000000000000000
-dqxor655 xor 1111111111111111111111111111111111 1111111111111101111111111111111111  ->               10000000000000000000
-dqxor656 xor 1111111111111111111111111111111111 1111111111111110111111111111111111  ->                1000000000000000000
-dqxor657 xor 1111111111111111111111111111111111 1111111111111111011111111111111111  ->                 100000000000000000
-dqxor658 xor 1111111111111111111111111111111111 1111111111111111101111111111111111  ->                  10000000000000000
-dqxor659 xor 1111111111111111111111111111111111 1111111111111111110111111111111111  ->                   1000000000000000
-dqxor660 xor 1111111111111111111111111111111111 1111111111111111111011111111111111  ->                    100000000000000
-dqxor661 xor 1111111111111111111111111111111111 1111111111111111111101111111111111  ->                     10000000000000
-dqxor662 xor 1111111111111111111111111111111111 1111111111111111111110111111111111  ->                      1000000000000
-dqxor663 xor 1111111111111111111111111111111111 1111111111111111111111011111111111  ->                       100000000000
-dqxor664 xor 1111111111111111111111111111111111 1111111111111111111111101111111111  ->                        10000000000
-dqxor665 xor 1111111111111111111111111111111111 1111111111111111111111110111111111  ->                         1000000000
-dqxor666 xor 1111111111111111111111111111111111 1111111111111111111111111011111111  ->                          100000000
-dqxor667 xor 1111111111111111111111111111111111 1111111111111111111111111101111111  ->                           10000000
-dqxor668 xor 1111111111111111111111111111111111 1111111111111111111111111110111111  ->                            1000000
-dqxor669 xor 1111111111111111111111111111111111 1111111111111111111111111111011111  ->                             100000
-dqxor670 xor 1111111111111111111111111111111111 1111111111111111111111111111101111  ->                              10000
-dqxor671 xor 1111111111111111111111111111111111 1111111111111111111111111111110111  ->                               1000
-dqxor672 xor 1111111111111111111111111111111111 1111111111111111111111111111111011  ->                                100
-dqxor673 xor 1111111111111111111111111111111111 1111111111111111111111111111111101  ->                                 10
-dqxor674 xor 1111111111111111111111111111111111 1111111111111111111111111111111110  ->                                  1
-dqxor675 xor 0111111111111111111111111111111111 1111111111111111111111111111111110  -> 1000000000000000000000000000000001
-dqxor676 xor 1111111111111111111111111111111111 1111111111111111111111111111111110  ->                                  1
-
-
-dqxor021 xor 1111111110000000     1111111110000000  ->  0
-dqxor022 xor  111111110000000      111111110000000  ->  0
-dqxor023 xor   11111110000000       11111110000000  ->  0
-dqxor024 xor    1111110000000        1111110000000  ->  0
-dqxor025 xor     111110000000         111110000000  ->  0
-dqxor026 xor      11110000000          11110000000  ->  0
-dqxor027 xor       1110000000           1110000000  ->  0
-dqxor028 xor        110000000            110000000  ->  0
-dqxor029 xor         10000000             10000000  ->  0
-dqxor030 xor          1000000              1000000  ->  0
-dqxor031 xor           100000               100000  ->  0
-dqxor032 xor            10000                10000  ->  0
-dqxor033 xor             1000                 1000  ->  0
-dqxor034 xor              100                  100  ->  0
-dqxor035 xor               10                   10  ->  0
-dqxor036 xor                1                    1  ->  0
-
-dqxor040 xor 111111111  111111111111  ->  111000000000
-dqxor041 xor  11111111  111111111111  ->  111100000000
-dqxor042 xor  11111111     111111111  ->  100000000
-dqxor043 xor   1111111     100000010  ->  101111101
-dqxor044 xor    111111     100000100  ->  100111011
-dqxor045 xor     11111     100001000  ->  100010111
-dqxor046 xor      1111     100010000  ->  100011111
-dqxor047 xor       111     100100000  ->  100100111
-dqxor048 xor        11     101000000  ->  101000011
-dqxor049 xor         1     110000000  ->  110000001
-
-dqxor050 xor 1111111111  1  ->  1111111110
-dqxor051 xor  111111111  1  ->  111111110
-dqxor052 xor   11111111  1  ->  11111110
-dqxor053 xor    1111111  1  ->  1111110
-dqxor054 xor     111111  1  ->  111110
-dqxor055 xor      11111  1  ->  11110
-dqxor056 xor       1111  1  ->  1110
-dqxor057 xor        111  1  ->  110
-dqxor058 xor         11  1  ->  10
-dqxor059 xor          1  1  ->  0
-
-dqxor060 xor 1111111111  0  ->  1111111111
-dqxor061 xor  111111111  0  ->  111111111
-dqxor062 xor   11111111  0  ->  11111111
-dqxor063 xor    1111111  0  ->  1111111
-dqxor064 xor     111111  0  ->  111111
-dqxor065 xor      11111  0  ->  11111
-dqxor066 xor       1111  0  ->  1111
-dqxor067 xor        111  0  ->  111
-dqxor068 xor         11  0  ->  11
-dqxor069 xor          1  0  ->  1
-
-dqxor070 xor 1  1111111111  ->  1111111110
-dqxor071 xor 1   111111111  ->  111111110
-dqxor072 xor 1    11111111  ->  11111110
-dqxor073 xor 1     1111111  ->  1111110
-dqxor074 xor 1      111111  ->  111110
-dqxor075 xor 1       11111  ->  11110
-dqxor076 xor 1        1111  ->  1110
-dqxor077 xor 1         111  ->  110
-dqxor078 xor 1          11  ->  10
-dqxor079 xor 1           1  ->  0
-
-dqxor080 xor 0  1111111111  ->  1111111111
-dqxor081 xor 0   111111111  ->  111111111
-dqxor082 xor 0    11111111  ->  11111111
-dqxor083 xor 0     1111111  ->  1111111
-dqxor084 xor 0      111111  ->  111111
-dqxor085 xor 0       11111  ->  11111
-dqxor086 xor 0        1111  ->  1111
-dqxor087 xor 0         111  ->  111
-dqxor088 xor 0          11  ->  11
-dqxor089 xor 0           1  ->  1
-
-dqxor090 xor 011111111  111101111  ->  100010000
-dqxor091 xor 101111111  111101111  ->   10010000
-dqxor092 xor 110111111  111101111  ->    1010000
-dqxor093 xor 111011111  111101111  ->     110000
-dqxor094 xor 111101111  111101111  ->          0
-dqxor095 xor 111110111  111101111  ->      11000
-dqxor096 xor 111111011  111101111  ->      10100
-dqxor097 xor 111111101  111101111  ->      10010
-dqxor098 xor 111111110  111101111  ->      10001
-
-dqxor100 xor 111101111  011111111  ->  100010000
-dqxor101 xor 111101111  101111111  ->   10010000
-dqxor102 xor 111101111  110111111  ->    1010000
-dqxor103 xor 111101111  111011111  ->     110000
-dqxor104 xor 111101111  111101111  ->          0
-dqxor105 xor 111101111  111110111  ->      11000
-dqxor106 xor 111101111  111111011  ->      10100
-dqxor107 xor 111101111  111111101  ->      10010
-dqxor108 xor 111101111  111111110  ->      10001
-
--- non-0/1 should not be accepted, nor should signs
-dqxor220 xor 111111112  111111111  ->  NaN Invalid_operation
-dqxor221 xor 333333333  333333333  ->  NaN Invalid_operation
-dqxor222 xor 555555555  555555555  ->  NaN Invalid_operation
-dqxor223 xor 777777777  777777777  ->  NaN Invalid_operation
-dqxor224 xor 999999999  999999999  ->  NaN Invalid_operation
-dqxor225 xor 222222222  999999999  ->  NaN Invalid_operation
-dqxor226 xor 444444444  999999999  ->  NaN Invalid_operation
-dqxor227 xor 666666666  999999999  ->  NaN Invalid_operation
-dqxor228 xor 888888888  999999999  ->  NaN Invalid_operation
-dqxor229 xor 999999999  222222222  ->  NaN Invalid_operation
-dqxor230 xor 999999999  444444444  ->  NaN Invalid_operation
-dqxor231 xor 999999999  666666666  ->  NaN Invalid_operation
-dqxor232 xor 999999999  888888888  ->  NaN Invalid_operation
--- a few randoms
-dqxor240 xor  567468689 -934981942 ->  NaN Invalid_operation
-dqxor241 xor  567367689  934981942 ->  NaN Invalid_operation
-dqxor242 xor -631917772 -706014634 ->  NaN Invalid_operation
-dqxor243 xor -756253257  138579234 ->  NaN Invalid_operation
-dqxor244 xor  835590149  567435400 ->  NaN Invalid_operation
--- test MSD
-dqxor250 xor  2000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor251 xor  7000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor252 xor  8000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor253 xor  9000000111000111000111000000000000 1000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor254 xor  2000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor255 xor  7000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor256 xor  8000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor257 xor  9000000111000111000111000000000000 0000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor258 xor  1000000111000111000111000000000000 2000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor259 xor  1000000111000111000111000000000000 7000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor260 xor  1000000111000111000111000000000000 8000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor261 xor  1000000111000111000111000000000000 9000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor262 xor  0000000111000111000111000000000000 2000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor263 xor  0000000111000111000111000000000000 7000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor264 xor  0000000111000111000111000000000000 8000000111000111000111000000000000 ->  NaN Invalid_operation
-dqxor265 xor  0000000111000111000111000000000000 9000000111000111000111000000000000 ->  NaN Invalid_operation
--- test MSD-1
-dqxor270 xor  0200000111000111000111001000000000 1000000111000111000111100000000010 ->  NaN Invalid_operation
-dqxor271 xor  0700000111000111000111000100000000 1000000111000111000111010000000100 ->  NaN Invalid_operation
-dqxor272 xor  0800000111000111000111000010000000 1000000111000111000111001000001000 ->  NaN Invalid_operation
-dqxor273 xor  0900000111000111000111000001000000 1000000111000111000111000100010000 ->  NaN Invalid_operation
-dqxor274 xor  1000000111000111000111000000100000 0200000111000111000111000010100000 ->  NaN Invalid_operation
-dqxor275 xor  1000000111000111000111000000010000 0700000111000111000111000001000000 ->  NaN Invalid_operation
-dqxor276 xor  1000000111000111000111000000001000 0800000111000111000111000010100000 ->  NaN Invalid_operation
-dqxor277 xor  1000000111000111000111000000000100 0900000111000111000111000000010000 ->  NaN Invalid_operation
--- test LSD
-dqxor280 xor  0010000111000111000111000000000002 1000000111000111000111000100000001 ->  NaN Invalid_operation
-dqxor281 xor  0001000111000111000111000000000007 1000000111000111000111001000000011 ->  NaN Invalid_operation
-dqxor282 xor  0000000111000111000111100000000008 1000000111000111000111010000000001 ->  NaN Invalid_operation
-dqxor283 xor  0000000111000111000111010000000009 1000000111000111000111100000000001 ->  NaN Invalid_operation
-dqxor284 xor  1000000111000111000111001000000000 0001000111000111000111000000000002 ->  NaN Invalid_operation
-dqxor285 xor  1000000111000111000111000100000000 0010000111000111000111000000000007 ->  NaN Invalid_operation
-dqxor286 xor  1000000111000111000111000010000000 0100000111000111000111000000000008 ->  NaN Invalid_operation
-dqxor287 xor  1000000111000111000111000001000000 1000000111000111000111000000000009 ->  NaN Invalid_operation
--- test Middie
-dqxor288 xor  0010000111000111000111000020000000 1000000111000111000111001000000000 ->  NaN Invalid_operation
-dqxor289 xor  0001000111000111000111000070000001 1000000111000111000111000100000000 ->  NaN Invalid_operation
-dqxor290 xor  0000000111000111000111100080000010 1000000111000111000111000010000000 ->  NaN Invalid_operation
-dqxor291 xor  0000000111000111000111010090000100 1000000111000111000111000001000000 ->  NaN Invalid_operation
-dqxor292 xor  1000000111000111000111001000001000 0000000111000111000111000020100000 ->  NaN Invalid_operation
-dqxor293 xor  1000000111000111000111000100010000 0000000111000111000111000070010000 ->  NaN Invalid_operation
-dqxor294 xor  1000000111000111000111000010100000 0000000111000111000111000080001000 ->  NaN Invalid_operation
-dqxor295 xor  1000000111000111000111000001000000 0000000111000111000111000090000100 ->  NaN Invalid_operation
--- signs
-dqxor296 xor -1000000111000111000111000001000000 -0000001110001110001110010000000100 ->  NaN Invalid_operation
-dqxor297 xor -1000000111000111000111000001000000  0000001110001110001110000010000100 ->  NaN Invalid_operation
-dqxor298 xor  1000000111000111000111000001000000 -0000001110001110001110001000000100 ->  NaN Invalid_operation
-dqxor299 xor  1000000111000111000111000001000000  0000001110001110001110000011000100 ->  1000001001001001001001000010000100
-
--- Nmax, Nmin, Ntiny-like
-dqxor331 xor  2   9.99999999E+999     -> NaN Invalid_operation
-dqxor332 xor  3   1E-999              -> NaN Invalid_operation
-dqxor333 xor  4   1.00000000E-2821    -> NaN Invalid_operation
-dqxor334 xor  5   1E-900              -> NaN Invalid_operation
-dqxor335 xor  6   -1E-900             -> NaN Invalid_operation
-dqxor336 xor  7   -1.00000000E-999    -> NaN Invalid_operation
-dqxor337 xor  8   -1E-999             -> NaN Invalid_operation
-dqxor338 xor  9   -9.99999999E+999    -> NaN Invalid_operation
-dqxor341 xor  9.99999999E+999     -18 -> NaN Invalid_operation
-dqxor342 xor  1E-999               01 -> NaN Invalid_operation
-dqxor343 xor  1.00000000E-999     -18 -> NaN Invalid_operation
-dqxor344 xor  1E-908               18 -> NaN Invalid_operation
-dqxor345 xor  -1E-907             -10 -> NaN Invalid_operation
-dqxor346 xor  -1.00000000E-999     18 -> NaN Invalid_operation
-dqxor347 xor  -1E-999              10 -> NaN Invalid_operation
-dqxor348 xor  -9.99999999E+2991   -18 -> NaN Invalid_operation
-
--- A few other non-integers
-dqxor361 xor  1.0                  1  -> NaN Invalid_operation
-dqxor362 xor  1E+1                 1  -> NaN Invalid_operation
-dqxor363 xor  0.0                  1  -> NaN Invalid_operation
-dqxor364 xor  0E+1                 1  -> NaN Invalid_operation
-dqxor365 xor  9.9                  1  -> NaN Invalid_operation
-dqxor366 xor  9E+1                 1  -> NaN Invalid_operation
-dqxor371 xor  0 1.0                   -> NaN Invalid_operation
-dqxor372 xor  0 1E+1                  -> NaN Invalid_operation
-dqxor373 xor  0 0.0                   -> NaN Invalid_operation
-dqxor374 xor  0 0E+1                  -> NaN Invalid_operation
-dqxor375 xor  0 9.9                   -> NaN Invalid_operation
-dqxor376 xor  0 9E+1                  -> NaN Invalid_operation
-
--- All Specials are in error
-dqxor780 xor -Inf  -Inf   -> NaN Invalid_operation
-dqxor781 xor -Inf  -1000  -> NaN Invalid_operation
-dqxor782 xor -Inf  -1     -> NaN Invalid_operation
-dqxor783 xor -Inf  -0     -> NaN Invalid_operation
-dqxor784 xor -Inf   0     -> NaN Invalid_operation
-dqxor785 xor -Inf   1     -> NaN Invalid_operation
-dqxor786 xor -Inf   1000  -> NaN Invalid_operation
-dqxor787 xor -1000 -Inf   -> NaN Invalid_operation
-dqxor788 xor -Inf  -Inf   -> NaN Invalid_operation
-dqxor789 xor -1    -Inf   -> NaN Invalid_operation
-dqxor790 xor -0    -Inf   -> NaN Invalid_operation
-dqxor791 xor  0    -Inf   -> NaN Invalid_operation
-dqxor792 xor  1    -Inf   -> NaN Invalid_operation
-dqxor793 xor  1000 -Inf   -> NaN Invalid_operation
-dqxor794 xor  Inf  -Inf   -> NaN Invalid_operation
-
-dqxor800 xor  Inf  -Inf   -> NaN Invalid_operation
-dqxor801 xor  Inf  -1000  -> NaN Invalid_operation
-dqxor802 xor  Inf  -1     -> NaN Invalid_operation
-dqxor803 xor  Inf  -0     -> NaN Invalid_operation
-dqxor804 xor  Inf   0     -> NaN Invalid_operation
-dqxor805 xor  Inf   1     -> NaN Invalid_operation
-dqxor806 xor  Inf   1000  -> NaN Invalid_operation
-dqxor807 xor  Inf   Inf   -> NaN Invalid_operation
-dqxor808 xor -1000  Inf   -> NaN Invalid_operation
-dqxor809 xor -Inf   Inf   -> NaN Invalid_operation
-dqxor810 xor -1     Inf   -> NaN Invalid_operation
-dqxor811 xor -0     Inf   -> NaN Invalid_operation
-dqxor812 xor  0     Inf   -> NaN Invalid_operation
-dqxor813 xor  1     Inf   -> NaN Invalid_operation
-dqxor814 xor  1000  Inf   -> NaN Invalid_operation
-dqxor815 xor  Inf   Inf   -> NaN Invalid_operation
-
-dqxor821 xor  NaN -Inf    -> NaN Invalid_operation
-dqxor822 xor  NaN -1000   -> NaN Invalid_operation
-dqxor823 xor  NaN -1      -> NaN Invalid_operation
-dqxor824 xor  NaN -0      -> NaN Invalid_operation
-dqxor825 xor  NaN  0      -> NaN Invalid_operation
-dqxor826 xor  NaN  1      -> NaN Invalid_operation
-dqxor827 xor  NaN  1000   -> NaN Invalid_operation
-dqxor828 xor  NaN  Inf    -> NaN Invalid_operation
-dqxor829 xor  NaN  NaN    -> NaN Invalid_operation
-dqxor830 xor -Inf  NaN    -> NaN Invalid_operation
-dqxor831 xor -1000 NaN    -> NaN Invalid_operation
-dqxor832 xor -1    NaN    -> NaN Invalid_operation
-dqxor833 xor -0    NaN    -> NaN Invalid_operation
-dqxor834 xor  0    NaN    -> NaN Invalid_operation
-dqxor835 xor  1    NaN    -> NaN Invalid_operation
-dqxor836 xor  1000 NaN    -> NaN Invalid_operation
-dqxor837 xor  Inf  NaN    -> NaN Invalid_operation
-
-dqxor841 xor  sNaN -Inf   ->  NaN  Invalid_operation
-dqxor842 xor  sNaN -1000  ->  NaN  Invalid_operation
-dqxor843 xor  sNaN -1     ->  NaN  Invalid_operation
-dqxor844 xor  sNaN -0     ->  NaN  Invalid_operation
-dqxor845 xor  sNaN  0     ->  NaN  Invalid_operation
-dqxor846 xor  sNaN  1     ->  NaN  Invalid_operation
-dqxor847 xor  sNaN  1000  ->  NaN  Invalid_operation
-dqxor848 xor  sNaN  NaN   ->  NaN  Invalid_operation
-dqxor849 xor  sNaN sNaN   ->  NaN  Invalid_operation
-dqxor850 xor  NaN  sNaN   ->  NaN  Invalid_operation
-dqxor851 xor -Inf  sNaN   ->  NaN  Invalid_operation
-dqxor852 xor -1000 sNaN   ->  NaN  Invalid_operation
-dqxor853 xor -1    sNaN   ->  NaN  Invalid_operation
-dqxor854 xor -0    sNaN   ->  NaN  Invalid_operation
-dqxor855 xor  0    sNaN   ->  NaN  Invalid_operation
-dqxor856 xor  1    sNaN   ->  NaN  Invalid_operation
-dqxor857 xor  1000 sNaN   ->  NaN  Invalid_operation
-dqxor858 xor  Inf  sNaN   ->  NaN  Invalid_operation
-dqxor859 xor  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-dqxor861 xor  NaN1   -Inf    -> NaN Invalid_operation
-dqxor862 xor +NaN2   -1000   -> NaN Invalid_operation
-dqxor863 xor  NaN3    1000   -> NaN Invalid_operation
-dqxor864 xor  NaN4    Inf    -> NaN Invalid_operation
-dqxor865 xor  NaN5   +NaN6   -> NaN Invalid_operation
-dqxor866 xor -Inf     NaN7   -> NaN Invalid_operation
-dqxor867 xor -1000    NaN8   -> NaN Invalid_operation
-dqxor868 xor  1000    NaN9   -> NaN Invalid_operation
-dqxor869 xor  Inf    +NaN10  -> NaN Invalid_operation
-dqxor871 xor  sNaN11  -Inf   -> NaN Invalid_operation
-dqxor872 xor  sNaN12  -1000  -> NaN Invalid_operation
-dqxor873 xor  sNaN13   1000  -> NaN Invalid_operation
-dqxor874 xor  sNaN14   NaN17 -> NaN Invalid_operation
-dqxor875 xor  sNaN15  sNaN18 -> NaN Invalid_operation
-dqxor876 xor  NaN16   sNaN19 -> NaN Invalid_operation
-dqxor877 xor -Inf    +sNaN20 -> NaN Invalid_operation
-dqxor878 xor -1000    sNaN21 -> NaN Invalid_operation
-dqxor879 xor  1000    sNaN22 -> NaN Invalid_operation
-dqxor880 xor  Inf     sNaN23 -> NaN Invalid_operation
-dqxor881 xor +NaN25  +sNaN24 -> NaN Invalid_operation
-dqxor882 xor -NaN26    NaN28 -> NaN Invalid_operation
-dqxor883 xor -sNaN27  sNaN29 -> NaN Invalid_operation
-dqxor884 xor  1000    -NaN30 -> NaN Invalid_operation
-dqxor885 xor  1000   -sNaN31 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dsBase.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dsBase.decTest
deleted file mode 100644
index 8ac45fc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dsBase.decTest
+++ /dev/null
@@ -1,1062 +0,0 @@
-------------------------------------------------------------------------
--- dsBase.decTest -- base decSingle <--> string conversions           --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This file tests base conversions from string to a decimal number
--- and back to a string (in Scientific form)
-
--- Note that unlike other operations the operand is subject to rounding
--- to conform to emax and precision settings (that is, numbers will
--- conform to rules and exponent will be in permitted range).  The
--- 'left hand side', therefore, may have numbers that cannot be
--- represented in a decSingle.  Some testcases go to the limit of the
--- next-wider format, and hence these testcases may also be used to
--- test narrowing and widening operations.
-
-extended:    1
-clamp:       1
-precision:   7
-maxExponent: 96
-minExponent: -95
-rounding:    half_even
-
-dsbas001 toSci       0 -> 0
-dsbas002 toSci       1 -> 1
-dsbas003 toSci     1.0 -> 1.0
-dsbas004 toSci    1.00 -> 1.00
-dsbas005 toSci      10 -> 10
-dsbas006 toSci    1000 -> 1000
-dsbas007 toSci    10.0 -> 10.0
-dsbas008 toSci    10.1 -> 10.1
-dsbas009 toSci    10.4 -> 10.4
-dsbas010 toSci    10.5 -> 10.5
-dsbas011 toSci    10.6 -> 10.6
-dsbas012 toSci    10.9 -> 10.9
-dsbas013 toSci    11.0 -> 11.0
-dsbas014 toSci  1.234 -> 1.234
-dsbas015 toSci  0.123 -> 0.123
-dsbas016 toSci  0.012 -> 0.012
-dsbas017 toSci  -0    -> -0
-dsbas018 toSci  -0.0  -> -0.0
-dsbas019 toSci -00.00 -> -0.00
-
-dsbas021 toSci     -1 -> -1
-dsbas022 toSci   -1.0 -> -1.0
-dsbas023 toSci   -0.1 -> -0.1
-dsbas024 toSci   -9.1 -> -9.1
-dsbas025 toSci   -9.11 -> -9.11
-dsbas026 toSci   -9.119 -> -9.119
-dsbas027 toSci   -9.999 -> -9.999
-
-dsbas030 toSci  '1234.567'   -> '1234.567'
-dsbas031 toSci  '1234.000'   -> '1234.000'
-dsbas032 toSci   '1234912'   -> '1234912'
-dsbas033 toSci   '0.00001234567'   -> '0.00001234567'
-dsbas034 toSci  '0.000001234567'   -> '0.000001234567'
-dsbas035 toSci '0.0000001234567'   -> '1.234567E-7'
-dsbas036 toSci '0.00000001234567'  -> '1.234567E-8'
-
-dsbas037 toSci '0.1234564'   -> '0.1234564'
-dsbas038 toSci '0.1234565'   -> '0.1234565'
-
--- test finite bounds (Negs of, then 0, Ntiny, Nmin, other, Nmax)
-dsbsn001 toSci -9.999999E+96 -> -9.999999E+96
-dsbsn002 toSci -1E-95 -> -1E-95
-dsbsn003 toSci -1E-101 -> -1E-101 Subnormal
-dsbsn004 toSci -0 -> -0
-dsbsn005 toSci +0 ->  0
-dsbsn006 toSci +1E-101 ->  1E-101 Subnormal
-dsbsn007 toSci +1E-95 ->  1E-95
-dsbsn008 toSci +9.999999E+96 ->  9.999999E+96
-
--- String [many more examples are implicitly tested elsewhere]
--- strings without E cannot generate E in result
-dsbas040 toSci "12"        -> '12'
-dsbas041 toSci "-76"       -> '-76'
-dsbas042 toSci "12.76"     -> '12.76'
-dsbas043 toSci "+12.76"    -> '12.76'
-dsbas044 toSci "012.76"    -> '12.76'
-dsbas045 toSci "+0.003"    -> '0.003'
-dsbas046 toSci "17."       -> '17'
-dsbas047 toSci ".5"        -> '0.5'
-dsbas048 toSci "044"       -> '44'
-dsbas049 toSci "0044"      -> '44'
-dsbas050 toSci "0.0005"      -> '0.0005'
-dsbas051 toSci "00.00005"    -> '0.00005'
-dsbas052 toSci "0.000005"    -> '0.000005'
-dsbas053 toSci "0.0000050"   -> '0.0000050'
-dsbas054 toSci "0.0000005"   -> '5E-7'
-dsbas055 toSci "0.00000005"  -> '5E-8'
-dsbas056 toSci "12678.54" -> '12678.54'
-dsbas057 toSci "2678.543" -> '2678.543'
-dsbas058 toSci "345678.5" -> '345678.5'
-dsbas059 toSci "0678.5432" -> '678.5432'
-dsbas060 toSci "678.5432" -> '678.5432'
-dsbas061 toSci "+678.5432" -> '678.5432'
-dsbas062 toSci "+0678.5432" -> '678.5432'
-dsbas063 toSci "+00678.5432" -> '678.5432'
-dsbas064 toSci "-678.5432"  -> '-678.5432'
-dsbas065 toSci "-0678.5432"  -> '-678.5432'
-dsbas066 toSci "-00678.5432"  -> '-678.5432'
--- examples
-dsbas067 toSci "5E-6"        -> '0.000005'
-dsbas068 toSci "50E-7"       -> '0.0000050'
-dsbas069 toSci "5E-7"        -> '5E-7'
-
--- [No exotics as no Unicode]
-
--- rounded with dots in all (including edge) places
-dsbas071 toSci  .1234567890123456  -> 0.1234568 Inexact Rounded
-dsbas072 toSci  1.234567890123456  -> 1.234568 Inexact Rounded
-dsbas073 toSci  12.34567890123456  -> 12.34568 Inexact Rounded
-dsbas074 toSci  123.4567890123456  -> 123.4568 Inexact Rounded
-dsbas075 toSci  1234.567890123456  -> 1234.568 Inexact Rounded
-dsbas076 toSci  12345.67890123456  -> 12345.68 Inexact Rounded
-dsbas077 toSci  123456.7890123456  -> 123456.8 Inexact Rounded
-dsbas078 toSci  1234567.890123456  -> 1234568  Inexact Rounded
-dsbas079 toSci  12345678.90123456  -> 1.234568E+7 Inexact Rounded
-dsbas080 toSci  123456789.0123456  -> 1.234568E+8 Inexact Rounded
-dsbas081 toSci  1234567890.123456  -> 1.234568E+9 Inexact Rounded
-dsbas082 toSci  12345678901.23456  -> 1.234568E+10 Inexact Rounded
-dsbas083 toSci  123456789012.3456  -> 1.234568E+11 Inexact Rounded
-dsbas084 toSci  1234567890123.456  -> 1.234568E+12 Inexact Rounded
-dsbas085 toSci  12345678901234.56  -> 1.234568E+13 Inexact Rounded
-dsbas086 toSci  123456789012345.6  -> 1.234568E+14 Inexact Rounded
-dsbas087 toSci  1234567890123456.  -> 1.234568E+15 Inexact Rounded
-dsbas088 toSci  1234567890123456   -> 1.234568E+15 Inexact Rounded
-
--- Numbers with E
-dsbas130 toSci "0.000E-1"  -> '0.0000'
-dsbas131 toSci "0.000E-2"  -> '0.00000'
-dsbas132 toSci "0.000E-3"  -> '0.000000'
-dsbas133 toSci "0.000E-4"  -> '0E-7'
-dsbas134 toSci "0.00E-2"   -> '0.0000'
-dsbas135 toSci "0.00E-3"   -> '0.00000'
-dsbas136 toSci "0.00E-4"   -> '0.000000'
-dsbas137 toSci "0.00E-5"   -> '0E-7'
-dsbas138 toSci "+0E+9"     -> '0E+9'
-dsbas139 toSci "-0E+9"     -> '-0E+9'
-dsbas140 toSci "1E+9"      -> '1E+9'
-dsbas141 toSci "1e+09"     -> '1E+9'
-dsbas142 toSci "1E+90"     -> '1E+90'
-dsbas143 toSci "+1E+009"   -> '1E+9'
-dsbas144 toSci "0E+9"      -> '0E+9'
-dsbas145 toSci "1E+9"      -> '1E+9'
-dsbas146 toSci "1E+09"     -> '1E+9'
-dsbas147 toSci "1e+90"     -> '1E+90'
-dsbas148 toSci "1E+009"    -> '1E+9'
-dsbas149 toSci "000E+9"    -> '0E+9'
-dsbas150 toSci "1E9"       -> '1E+9'
-dsbas151 toSci "1e09"      -> '1E+9'
-dsbas152 toSci "1E90"      -> '1E+90'
-dsbas153 toSci "1E009"     -> '1E+9'
-dsbas154 toSci "0E9"       -> '0E+9'
-dsbas155 toSci "0.000e+0"  -> '0.000'
-dsbas156 toSci "0.000E-1"  -> '0.0000'
-dsbas157 toSci "4E+9"      -> '4E+9'
-dsbas158 toSci "44E+9"     -> '4.4E+10'
-dsbas159 toSci "0.73e-7"   -> '7.3E-8'
-dsbas160 toSci "00E+9"     -> '0E+9'
-dsbas161 toSci "00E-9"     -> '0E-9'
-dsbas162 toSci "10E+9"     -> '1.0E+10'
-dsbas163 toSci "10E+09"    -> '1.0E+10'
-dsbas164 toSci "10e+90"    -> '1.0E+91'
-dsbas165 toSci "10E+009"   -> '1.0E+10'
-dsbas166 toSci "100e+9"    -> '1.00E+11'
-dsbas167 toSci "100e+09"   -> '1.00E+11'
-dsbas168 toSci "100E+90"   -> '1.00E+92'
-dsbas169 toSci "100e+009"  -> '1.00E+11'
-
-dsbas170 toSci "1.265"     -> '1.265'
-dsbas171 toSci "1.265E-20" -> '1.265E-20'
-dsbas172 toSci "1.265E-8"  -> '1.265E-8'
-dsbas173 toSci "1.265E-4"  -> '0.0001265'
-dsbas174 toSci "1.265E-3"  -> '0.001265'
-dsbas175 toSci "1.265E-2"  -> '0.01265'
-dsbas176 toSci "1.265E-1"  -> '0.1265'
-dsbas177 toSci "1.265E-0"  -> '1.265'
-dsbas178 toSci "1.265E+1"  -> '12.65'
-dsbas179 toSci "1.265E+2"  -> '126.5'
-dsbas180 toSci "1.265E+3"  -> '1265'
-dsbas181 toSci "1.265E+4"  -> '1.265E+4'
-dsbas182 toSci "1.265E+8"  -> '1.265E+8'
-dsbas183 toSci "1.265E+20" -> '1.265E+20'
-
-dsbas190 toSci "12.65"     -> '12.65'
-dsbas191 toSci "12.65E-20" -> '1.265E-19'
-dsbas192 toSci "12.65E-8"  -> '1.265E-7'
-dsbas193 toSci "12.65E-4"  -> '0.001265'
-dsbas194 toSci "12.65E-3"  -> '0.01265'
-dsbas195 toSci "12.65E-2"  -> '0.1265'
-dsbas196 toSci "12.65E-1"  -> '1.265'
-dsbas197 toSci "12.65E-0"  -> '12.65'
-dsbas198 toSci "12.65E+1"  -> '126.5'
-dsbas199 toSci "12.65E+2"  -> '1265'
-dsbas200 toSci "12.65E+3"  -> '1.265E+4'
-dsbas201 toSci "12.65E+4"  -> '1.265E+5'
-dsbas202 toSci "12.65E+8"  -> '1.265E+9'
-dsbas203 toSci "12.65E+20" -> '1.265E+21'
-
-dsbas210 toSci "126.5"     -> '126.5'
-dsbas211 toSci "126.5E-20" -> '1.265E-18'
-dsbas212 toSci "126.5E-8"  -> '0.000001265'
-dsbas213 toSci "126.5E-4"  -> '0.01265'
-dsbas214 toSci "126.5E-3"  -> '0.1265'
-dsbas215 toSci "126.5E-2"  -> '1.265'
-dsbas216 toSci "126.5E-1"  -> '12.65'
-dsbas217 toSci "126.5E-0"  -> '126.5'
-dsbas218 toSci "126.5E+1"  -> '1265'
-dsbas219 toSci "126.5E+2"  -> '1.265E+4'
-dsbas220 toSci "126.5E+3"  -> '1.265E+5'
-dsbas221 toSci "126.5E+4"  -> '1.265E+6'
-dsbas222 toSci "126.5E+8"  -> '1.265E+10'
-dsbas223 toSci "126.5E+20" -> '1.265E+22'
-
-dsbas230 toSci "1265"     -> '1265'
-dsbas231 toSci "1265E-20" -> '1.265E-17'
-dsbas232 toSci "1265E-8"  -> '0.00001265'
-dsbas233 toSci "1265E-4"  -> '0.1265'
-dsbas234 toSci "1265E-3"  -> '1.265'
-dsbas235 toSci "1265E-2"  -> '12.65'
-dsbas236 toSci "1265E-1"  -> '126.5'
-dsbas237 toSci "1265E-0"  -> '1265'
-dsbas238 toSci "1265E+1"  -> '1.265E+4'
-dsbas239 toSci "1265E+2"  -> '1.265E+5'
-dsbas240 toSci "1265E+3"  -> '1.265E+6'
-dsbas241 toSci "1265E+4"  -> '1.265E+7'
-dsbas242 toSci "1265E+8"  -> '1.265E+11'
-dsbas243 toSci "1265E+20" -> '1.265E+23'
-
-dsbas250 toSci "0.1265"     -> '0.1265'
-dsbas251 toSci "0.1265E-20" -> '1.265E-21'
-dsbas252 toSci "0.1265E-8"  -> '1.265E-9'
-dsbas253 toSci "0.1265E-4"  -> '0.00001265'
-dsbas254 toSci "0.1265E-3"  -> '0.0001265'
-dsbas255 toSci "0.1265E-2"  -> '0.001265'
-dsbas256 toSci "0.1265E-1"  -> '0.01265'
-dsbas257 toSci "0.1265E-0"  -> '0.1265'
-dsbas258 toSci "0.1265E+1"  -> '1.265'
-dsbas259 toSci "0.1265E+2"  -> '12.65'
-dsbas260 toSci "0.1265E+3"  -> '126.5'
-dsbas261 toSci "0.1265E+4"  -> '1265'
-dsbas262 toSci "0.1265E+8"  -> '1.265E+7'
-dsbas263 toSci "0.1265E+20" -> '1.265E+19'
-
--- some more negative zeros [systematic tests below]
-dsbas290 toSci "-0.000E-1"  -> '-0.0000'
-dsbas291 toSci "-0.000E-2"  -> '-0.00000'
-dsbas292 toSci "-0.000E-3"  -> '-0.000000'
-dsbas293 toSci "-0.000E-4"  -> '-0E-7'
-dsbas294 toSci "-0.00E-2"   -> '-0.0000'
-dsbas295 toSci "-0.00E-3"   -> '-0.00000'
-dsbas296 toSci "-0.0E-2"    -> '-0.000'
-dsbas297 toSci "-0.0E-3"    -> '-0.0000'
-dsbas298 toSci "-0E-2"      -> '-0.00'
-dsbas299 toSci "-0E-3"      -> '-0.000'
-
--- Engineering notation tests
-dsbas301  toSci 10e12  -> 1.0E+13
-dsbas302  toEng 10e12  -> 10E+12
-dsbas303  toSci 10e11  -> 1.0E+12
-dsbas304  toEng 10e11  -> 1.0E+12
-dsbas305  toSci 10e10  -> 1.0E+11
-dsbas306  toEng 10e10  -> 100E+9
-dsbas307  toSci 10e9   -> 1.0E+10
-dsbas308  toEng 10e9   -> 10E+9
-dsbas309  toSci 10e8   -> 1.0E+9
-dsbas310  toEng 10e8   -> 1.0E+9
-dsbas311  toSci 10e7   -> 1.0E+8
-dsbas312  toEng 10e7   -> 100E+6
-dsbas313  toSci 10e6   -> 1.0E+7
-dsbas314  toEng 10e6   -> 10E+6
-dsbas315  toSci 10e5   -> 1.0E+6
-dsbas316  toEng 10e5   -> 1.0E+6
-dsbas317  toSci 10e4   -> 1.0E+5
-dsbas318  toEng 10e4   -> 100E+3
-dsbas319  toSci 10e3   -> 1.0E+4
-dsbas320  toEng 10e3   -> 10E+3
-dsbas321  toSci 10e2   -> 1.0E+3
-dsbas322  toEng 10e2   -> 1.0E+3
-dsbas323  toSci 10e1   -> 1.0E+2
-dsbas324  toEng 10e1   -> 100
-dsbas325  toSci 10e0   -> 10
-dsbas326  toEng 10e0   -> 10
-dsbas327  toSci 10e-1  -> 1.0
-dsbas328  toEng 10e-1  -> 1.0
-dsbas329  toSci 10e-2  -> 0.10
-dsbas330  toEng 10e-2  -> 0.10
-dsbas331  toSci 10e-3  -> 0.010
-dsbas332  toEng 10e-3  -> 0.010
-dsbas333  toSci 10e-4  -> 0.0010
-dsbas334  toEng 10e-4  -> 0.0010
-dsbas335  toSci 10e-5  -> 0.00010
-dsbas336  toEng 10e-5  -> 0.00010
-dsbas337  toSci 10e-6  -> 0.000010
-dsbas338  toEng 10e-6  -> 0.000010
-dsbas339  toSci 10e-7  -> 0.0000010
-dsbas340  toEng 10e-7  -> 0.0000010
-dsbas341  toSci 10e-8  -> 1.0E-7
-dsbas342  toEng 10e-8  -> 100E-9
-dsbas343  toSci 10e-9  -> 1.0E-8
-dsbas344  toEng 10e-9  -> 10E-9
-dsbas345  toSci 10e-10 -> 1.0E-9
-dsbas346  toEng 10e-10 -> 1.0E-9
-dsbas347  toSci 10e-11 -> 1.0E-10
-dsbas348  toEng 10e-11 -> 100E-12
-dsbas349  toSci 10e-12 -> 1.0E-11
-dsbas350  toEng 10e-12 -> 10E-12
-dsbas351  toSci 10e-13 -> 1.0E-12
-dsbas352  toEng 10e-13 -> 1.0E-12
-
-dsbas361  toSci 7E12  -> 7E+12
-dsbas362  toEng 7E12  -> 7E+12
-dsbas363  toSci 7E11  -> 7E+11
-dsbas364  toEng 7E11  -> 700E+9
-dsbas365  toSci 7E10  -> 7E+10
-dsbas366  toEng 7E10  -> 70E+9
-dsbas367  toSci 7E9   -> 7E+9
-dsbas368  toEng 7E9   -> 7E+9
-dsbas369  toSci 7E8   -> 7E+8
-dsbas370  toEng 7E8   -> 700E+6
-dsbas371  toSci 7E7   -> 7E+7
-dsbas372  toEng 7E7   -> 70E+6
-dsbas373  toSci 7E6   -> 7E+6
-dsbas374  toEng 7E6   -> 7E+6
-dsbas375  toSci 7E5   -> 7E+5
-dsbas376  toEng 7E5   -> 700E+3
-dsbas377  toSci 7E4   -> 7E+4
-dsbas378  toEng 7E4   -> 70E+3
-dsbas379  toSci 7E3   -> 7E+3
-dsbas380  toEng 7E3   -> 7E+3
-dsbas381  toSci 7E2   -> 7E+2
-dsbas382  toEng 7E2   -> 700
-dsbas383  toSci 7E1   -> 7E+1
-dsbas384  toEng 7E1   -> 70
-dsbas385  toSci 7E0   -> 7
-dsbas386  toEng 7E0   -> 7
-dsbas387  toSci 7E-1  -> 0.7
-dsbas388  toEng 7E-1  -> 0.7
-dsbas389  toSci 7E-2  -> 0.07
-dsbas390  toEng 7E-2  -> 0.07
-dsbas391  toSci 7E-3  -> 0.007
-dsbas392  toEng 7E-3  -> 0.007
-dsbas393  toSci 7E-4  -> 0.0007
-dsbas394  toEng 7E-4  -> 0.0007
-dsbas395  toSci 7E-5  -> 0.00007
-dsbas396  toEng 7E-5  -> 0.00007
-dsbas397  toSci 7E-6  -> 0.000007
-dsbas398  toEng 7E-6  -> 0.000007
-dsbas399  toSci 7E-7  -> 7E-7
-dsbas400  toEng 7E-7  -> 700E-9
-dsbas401  toSci 7E-8  -> 7E-8
-dsbas402  toEng 7E-8  -> 70E-9
-dsbas403  toSci 7E-9  -> 7E-9
-dsbas404  toEng 7E-9  -> 7E-9
-dsbas405  toSci 7E-10 -> 7E-10
-dsbas406  toEng 7E-10 -> 700E-12
-dsbas407  toSci 7E-11 -> 7E-11
-dsbas408  toEng 7E-11 -> 70E-12
-dsbas409  toSci 7E-12 -> 7E-12
-dsbas410  toEng 7E-12 -> 7E-12
-dsbas411  toSci 7E-13 -> 7E-13
-dsbas412  toEng 7E-13 -> 700E-15
-
--- Exacts remain exact up to precision ..
-dsbas420  toSci    100 -> 100
-dsbas422  toSci   1000 -> 1000
-dsbas424  toSci  999.9 ->  999.9
-dsbas426  toSci 1000.0 -> 1000.0
-dsbas428  toSci 1000.1 -> 1000.1
-dsbas430  toSci 10000 -> 10000
-dsbas432  toSci 1000        -> 1000
-dsbas434  toSci 10000       -> 10000
-dsbas436  toSci 100000      -> 100000
-dsbas438  toSci 1000000     -> 1000000
-dsbas440  toSci 10000000    -> 1.000000E+7   Rounded
-dsbas442  toSci 10000000    -> 1.000000E+7   Rounded
-dsbas444  toSci 10000003    -> 1.000000E+7   Rounded Inexact
-dsbas446  toSci 10000005    -> 1.000000E+7   Rounded Inexact
-dsbas448  toSci 100000050   -> 1.000000E+8   Rounded Inexact
-dsbas450  toSci 10000009    -> 1.000001E+7   Rounded Inexact
-dsbas452  toSci 100000000   -> 1.000000E+8   Rounded
-dsbas454  toSci 100000003   -> 1.000000E+8   Rounded Inexact
-dsbas456  toSci 100000005   -> 1.000000E+8   Rounded Inexact
-dsbas458  toSci 100000009   -> 1.000000E+8   Rounded Inexact
-dsbas460  toSci 1000000000  -> 1.000000E+9   Rounded
-dsbas462  toSci 1000000300  -> 1.000000E+9   Rounded Inexact
-dsbas464  toSci 1000000500  -> 1.000000E+9   Rounded Inexact
-dsbas466  toSci 1000000900  -> 1.000001E+9   Rounded Inexact
-dsbas468  toSci 10000000000 -> 1.000000E+10  Rounded
-dsbas470  toSci 10000003000 -> 1.000000E+10  Rounded Inexact
-dsbas472  toSci 10000005000 -> 1.000000E+10  Rounded Inexact
-dsbas474  toSci 10000009000 -> 1.000001E+10  Rounded Inexact
-
--- check rounding modes heeded
-rounding:  ceiling
-dsbsr401  toSci  1.1123450    ->  1.112345  Rounded
-dsbsr402  toSci  1.11234549   ->  1.112346  Rounded Inexact
-dsbsr403  toSci  1.11234550   ->  1.112346  Rounded Inexact
-dsbsr404  toSci  1.11234551   ->  1.112346  Rounded Inexact
-rounding:  up
-dsbsr405  toSci  1.1123450    ->  1.112345  Rounded
-dsbsr406  toSci  1.11234549   ->  1.112346  Rounded Inexact
-dsbsr407  toSci  1.11234550   ->  1.112346  Rounded Inexact
-dsbsr408  toSci  1.11234551   ->  1.112346  Rounded Inexact
-rounding:  floor
-dsbsr410  toSci  1.1123450    ->  1.112345  Rounded
-dsbsr411  toSci  1.11234549   ->  1.112345  Rounded Inexact
-dsbsr412  toSci  1.11234550   ->  1.112345  Rounded Inexact
-dsbsr413  toSci  1.11234551   ->  1.112345  Rounded Inexact
-rounding:  half_down
-dsbsr415  toSci  1.1123450    ->  1.112345  Rounded
-dsbsr416  toSci  1.11234549   ->  1.112345  Rounded Inexact
-dsbsr417  toSci  1.11234550   ->  1.112345  Rounded Inexact
-dsbsr418  toSci  1.11234650   ->  1.112346  Rounded Inexact
-dsbsr419  toSci  1.11234551   ->  1.112346  Rounded Inexact
-rounding:  half_even
-dsbsr421  toSci  1.1123450    ->  1.112345  Rounded
-dsbsr422  toSci  1.11234549   ->  1.112345  Rounded Inexact
-dsbsr423  toSci  1.11234550   ->  1.112346  Rounded Inexact
-dsbsr424  toSci  1.11234650   ->  1.112346  Rounded Inexact
-dsbsr425  toSci  1.11234551   ->  1.112346  Rounded Inexact
-rounding:  down
-dsbsr426  toSci  1.1123450    ->  1.112345  Rounded
-dsbsr427  toSci  1.11234549   ->  1.112345  Rounded Inexact
-dsbsr428  toSci  1.11234550   ->  1.112345  Rounded Inexact
-dsbsr429  toSci  1.11234551   ->  1.112345  Rounded Inexact
-rounding:  half_up
-dsbsr431  toSci  1.1123450    ->  1.112345  Rounded
-dsbsr432  toSci  1.11234549   ->  1.112345  Rounded Inexact
-dsbsr433  toSci  1.11234550   ->  1.112346  Rounded Inexact
-dsbsr434  toSci  1.11234650   ->  1.112347  Rounded Inexact
-dsbsr435  toSci  1.11234551   ->  1.112346  Rounded Inexact
--- negatives
-rounding:  ceiling
-dsbsr501  toSci -1.1123450    -> -1.112345  Rounded
-dsbsr502  toSci -1.11234549   -> -1.112345  Rounded Inexact
-dsbsr503  toSci -1.11234550   -> -1.112345  Rounded Inexact
-dsbsr504  toSci -1.11234551   -> -1.112345  Rounded Inexact
-rounding:  up
-dsbsr505  toSci -1.1123450    -> -1.112345  Rounded
-dsbsr506  toSci -1.11234549   -> -1.112346  Rounded Inexact
-dsbsr507  toSci -1.11234550   -> -1.112346  Rounded Inexact
-dsbsr508  toSci -1.11234551   -> -1.112346  Rounded Inexact
-rounding:  floor
-dsbsr510  toSci -1.1123450    -> -1.112345  Rounded
-dsbsr511  toSci -1.11234549   -> -1.112346  Rounded Inexact
-dsbsr512  toSci -1.11234550   -> -1.112346  Rounded Inexact
-dsbsr513  toSci -1.11234551   -> -1.112346  Rounded Inexact
-rounding:  half_down
-dsbsr515  toSci -1.1123450    -> -1.112345  Rounded
-dsbsr516  toSci -1.11234549   -> -1.112345  Rounded Inexact
-dsbsr517  toSci -1.11234550   -> -1.112345  Rounded Inexact
-dsbsr518  toSci -1.11234650   -> -1.112346  Rounded Inexact
-dsbsr519  toSci -1.11234551   -> -1.112346  Rounded Inexact
-rounding:  half_even
-dsbsr521  toSci -1.1123450    -> -1.112345  Rounded
-dsbsr522  toSci -1.11234549   -> -1.112345  Rounded Inexact
-dsbsr523  toSci -1.11234550   -> -1.112346  Rounded Inexact
-dsbsr524  toSci -1.11234650   -> -1.112346  Rounded Inexact
-dsbsr525  toSci -1.11234551   -> -1.112346  Rounded Inexact
-rounding:  down
-dsbsr526  toSci -1.1123450    -> -1.112345  Rounded
-dsbsr527  toSci -1.11234549   -> -1.112345  Rounded Inexact
-dsbsr528  toSci -1.11234550   -> -1.112345  Rounded Inexact
-dsbsr529  toSci -1.11234551   -> -1.112345  Rounded Inexact
-rounding:  half_up
-dsbsr531  toSci -1.1123450    -> -1.112345  Rounded
-dsbsr532  toSci -1.11234549   -> -1.112345  Rounded Inexact
-dsbsr533  toSci -1.11234550   -> -1.112346  Rounded Inexact
-dsbsr534  toSci -1.11234650   -> -1.112347  Rounded Inexact
-dsbsr535  toSci -1.11234551   -> -1.112346  Rounded Inexact
-
-rounding:    half_even
-
--- The 'baddies' tests from DiagBigDecimal, plus some new ones
-dsbas500 toSci '1..2'            -> NaN Conversion_syntax
-dsbas501 toSci '.'               -> NaN Conversion_syntax
-dsbas502 toSci '..'              -> NaN Conversion_syntax
-dsbas503 toSci '++1'             -> NaN Conversion_syntax
-dsbas504 toSci '--1'             -> NaN Conversion_syntax
-dsbas505 toSci '-+1'             -> NaN Conversion_syntax
-dsbas506 toSci '+-1'             -> NaN Conversion_syntax
-dsbas507 toSci '12e'             -> NaN Conversion_syntax
-dsbas508 toSci '12e++'           -> NaN Conversion_syntax
-dsbas509 toSci '12f4'            -> NaN Conversion_syntax
-dsbas510 toSci ' +1'             -> NaN Conversion_syntax
-dsbas511 toSci '+ 1'             -> NaN Conversion_syntax
-dsbas512 toSci '12 '             -> NaN Conversion_syntax
-dsbas513 toSci ' + 1'            -> NaN Conversion_syntax
-dsbas514 toSci ' - 1 '           -> NaN Conversion_syntax
-dsbas515 toSci 'x'               -> NaN Conversion_syntax
-dsbas516 toSci '-1-'             -> NaN Conversion_syntax
-dsbas517 toSci '12-'             -> NaN Conversion_syntax
-dsbas518 toSci '3+'              -> NaN Conversion_syntax
-dsbas519 toSci ''                -> NaN Conversion_syntax
-dsbas520 toSci '1e-'             -> NaN Conversion_syntax
-dsbas521 toSci '7e99999a'        -> NaN Conversion_syntax
-dsbas522 toSci '7e123567890x'    -> NaN Conversion_syntax
-dsbas523 toSci '7e12356789012x'  -> NaN Conversion_syntax
-dsbas524 toSci ''                -> NaN Conversion_syntax
-dsbas525 toSci 'e100'            -> NaN Conversion_syntax
-dsbas526 toSci '\u0e5a'          -> NaN Conversion_syntax
-dsbas527 toSci '\u0b65'          -> NaN Conversion_syntax
-dsbas528 toSci '123,65'          -> NaN Conversion_syntax
-dsbas529 toSci '1.34.5'          -> NaN Conversion_syntax
-dsbas530 toSci '.123.5'          -> NaN Conversion_syntax
-dsbas531 toSci '01.35.'          -> NaN Conversion_syntax
-dsbas532 toSci '01.35-'          -> NaN Conversion_syntax
-dsbas533 toSci '0000..'          -> NaN Conversion_syntax
-dsbas534 toSci '.0000.'          -> NaN Conversion_syntax
-dsbas535 toSci '00..00'          -> NaN Conversion_syntax
-dsbas536 toSci '111e*123'        -> NaN Conversion_syntax
-dsbas537 toSci '111e123-'        -> NaN Conversion_syntax
-dsbas538 toSci '111e+12+'        -> NaN Conversion_syntax
-dsbas539 toSci '111e1-3-'        -> NaN Conversion_syntax
-dsbas540 toSci '111e1*23'        -> NaN Conversion_syntax
-dsbas541 toSci '111e1e+3'        -> NaN Conversion_syntax
-dsbas542 toSci '1e1.0'           -> NaN Conversion_syntax
-dsbas543 toSci '1e123e'          -> NaN Conversion_syntax
-dsbas544 toSci 'ten'             -> NaN Conversion_syntax
-dsbas545 toSci 'ONE'             -> NaN Conversion_syntax
-dsbas546 toSci '1e.1'            -> NaN Conversion_syntax
-dsbas547 toSci '1e1.'            -> NaN Conversion_syntax
-dsbas548 toSci '1ee'             -> NaN Conversion_syntax
-dsbas549 toSci 'e+1'             -> NaN Conversion_syntax
-dsbas550 toSci '1.23.4'          -> NaN Conversion_syntax
-dsbas551 toSci '1.2.1'           -> NaN Conversion_syntax
-dsbas552 toSci '1E+1.2'          -> NaN Conversion_syntax
-dsbas553 toSci '1E+1.2.3'        -> NaN Conversion_syntax
-dsbas554 toSci '1E++1'           -> NaN Conversion_syntax
-dsbas555 toSci '1E--1'           -> NaN Conversion_syntax
-dsbas556 toSci '1E+-1'           -> NaN Conversion_syntax
-dsbas557 toSci '1E-+1'           -> NaN Conversion_syntax
-dsbas558 toSci '1E''1'           -> NaN Conversion_syntax
-dsbas559 toSci "1E""1"           -> NaN Conversion_syntax
-dsbas560 toSci "1E"""""          -> NaN Conversion_syntax
--- Near-specials
-dsbas561 toSci "qNaN"            -> NaN Conversion_syntax
-dsbas562 toSci "NaNq"            -> NaN Conversion_syntax
-dsbas563 toSci "NaNs"            -> NaN Conversion_syntax
-dsbas564 toSci "Infi"            -> NaN Conversion_syntax
-dsbas565 toSci "Infin"           -> NaN Conversion_syntax
-dsbas566 toSci "Infini"          -> NaN Conversion_syntax
-dsbas567 toSci "Infinit"         -> NaN Conversion_syntax
-dsbas568 toSci "-Infinit"        -> NaN Conversion_syntax
-dsbas569 toSci "0Inf"            -> NaN Conversion_syntax
-dsbas570 toSci "9Inf"            -> NaN Conversion_syntax
-dsbas571 toSci "-0Inf"           -> NaN Conversion_syntax
-dsbas572 toSci "-9Inf"           -> NaN Conversion_syntax
-dsbas573 toSci "-sNa"            -> NaN Conversion_syntax
-dsbas574 toSci "xNaN"            -> NaN Conversion_syntax
-dsbas575 toSci "0sNaN"           -> NaN Conversion_syntax
-
--- some baddies with dots and Es and dots and specials
-dsbas576 toSci  'e+1'            ->  NaN Conversion_syntax
-dsbas577 toSci  '.e+1'           ->  NaN Conversion_syntax
-dsbas578 toSci  '+.e+1'          ->  NaN Conversion_syntax
-dsbas579 toSci  '-.e+'           ->  NaN Conversion_syntax
-dsbas580 toSci  '-.e'            ->  NaN Conversion_syntax
-dsbas581 toSci  'E+1'            ->  NaN Conversion_syntax
-dsbas582 toSci  '.E+1'           ->  NaN Conversion_syntax
-dsbas583 toSci  '+.E+1'          ->  NaN Conversion_syntax
-dsbas584 toSci  '-.E+'           ->  NaN Conversion_syntax
-dsbas585 toSci  '-.E'            ->  NaN Conversion_syntax
-
-dsbas586 toSci  '.NaN'           ->  NaN Conversion_syntax
-dsbas587 toSci  '-.NaN'          ->  NaN Conversion_syntax
-dsbas588 toSci  '+.sNaN'         ->  NaN Conversion_syntax
-dsbas589 toSci  '+.Inf'          ->  NaN Conversion_syntax
-dsbas590 toSci  '.Infinity'      ->  NaN Conversion_syntax
-
--- Zeros
-dsbas601 toSci 0.000000000       -> 0E-9
-dsbas602 toSci 0.00000000        -> 0E-8
-dsbas603 toSci 0.0000000         -> 0E-7
-dsbas604 toSci 0.000000          -> 0.000000
-dsbas605 toSci 0.00000           -> 0.00000
-dsbas606 toSci 0.0000            -> 0.0000
-dsbas607 toSci 0.000             -> 0.000
-dsbas608 toSci 0.00              -> 0.00
-dsbas609 toSci 0.0               -> 0.0
-dsbas610 toSci  .0               -> 0.0
-dsbas611 toSci 0.                -> 0
-dsbas612 toSci -.0               -> -0.0
-dsbas613 toSci -0.               -> -0
-dsbas614 toSci -0.0              -> -0.0
-dsbas615 toSci -0.00             -> -0.00
-dsbas616 toSci -0.000            -> -0.000
-dsbas617 toSci -0.0000           -> -0.0000
-dsbas618 toSci -0.00000          -> -0.00000
-dsbas619 toSci -0.000000         -> -0.000000
-dsbas620 toSci -0.0000000        -> -0E-7
-dsbas621 toSci -0.00000000       -> -0E-8
-dsbas622 toSci -0.000000000      -> -0E-9
-
-dsbas630 toSci  0.00E+0          -> 0.00
-dsbas631 toSci  0.00E+1          -> 0.0
-dsbas632 toSci  0.00E+2          -> 0
-dsbas633 toSci  0.00E+3          -> 0E+1
-dsbas634 toSci  0.00E+4          -> 0E+2
-dsbas635 toSci  0.00E+5          -> 0E+3
-dsbas636 toSci  0.00E+6          -> 0E+4
-dsbas637 toSci  0.00E+7          -> 0E+5
-dsbas638 toSci  0.00E+8          -> 0E+6
-dsbas639 toSci  0.00E+9          -> 0E+7
-
-dsbas640 toSci  0.0E+0           -> 0.0
-dsbas641 toSci  0.0E+1           -> 0
-dsbas642 toSci  0.0E+2           -> 0E+1
-dsbas643 toSci  0.0E+3           -> 0E+2
-dsbas644 toSci  0.0E+4           -> 0E+3
-dsbas645 toSci  0.0E+5           -> 0E+4
-dsbas646 toSci  0.0E+6           -> 0E+5
-dsbas647 toSci  0.0E+7           -> 0E+6
-dsbas648 toSci  0.0E+8           -> 0E+7
-dsbas649 toSci  0.0E+9           -> 0E+8
-
-dsbas650 toSci  0E+0             -> 0
-dsbas651 toSci  0E+1             -> 0E+1
-dsbas652 toSci  0E+2             -> 0E+2
-dsbas653 toSci  0E+3             -> 0E+3
-dsbas654 toSci  0E+4             -> 0E+4
-dsbas655 toSci  0E+5             -> 0E+5
-dsbas656 toSci  0E+6             -> 0E+6
-dsbas657 toSci  0E+7             -> 0E+7
-dsbas658 toSci  0E+8             -> 0E+8
-dsbas659 toSci  0E+9             -> 0E+9
-
-dsbas660 toSci  0.0E-0           -> 0.0
-dsbas661 toSci  0.0E-1           -> 0.00
-dsbas662 toSci  0.0E-2           -> 0.000
-dsbas663 toSci  0.0E-3           -> 0.0000
-dsbas664 toSci  0.0E-4           -> 0.00000
-dsbas665 toSci  0.0E-5           -> 0.000000
-dsbas666 toSci  0.0E-6           -> 0E-7
-dsbas667 toSci  0.0E-7           -> 0E-8
-dsbas668 toSci  0.0E-8           -> 0E-9
-dsbas669 toSci  0.0E-9           -> 0E-10
-
-dsbas670 toSci  0.00E-0          -> 0.00
-dsbas671 toSci  0.00E-1          -> 0.000
-dsbas672 toSci  0.00E-2          -> 0.0000
-dsbas673 toSci  0.00E-3          -> 0.00000
-dsbas674 toSci  0.00E-4          -> 0.000000
-dsbas675 toSci  0.00E-5          -> 0E-7
-dsbas676 toSci  0.00E-6          -> 0E-8
-dsbas677 toSci  0.00E-7          -> 0E-9
-dsbas678 toSci  0.00E-8          -> 0E-10
-dsbas679 toSci  0.00E-9          -> 0E-11
-
-dsbas680 toSci  000000.          ->  0
-dsbas681 toSci   00000.          ->  0
-dsbas682 toSci    0000.          ->  0
-dsbas683 toSci     000.          ->  0
-dsbas684 toSci      00.          ->  0
-dsbas685 toSci       0.          ->  0
-dsbas686 toSci  +00000.          ->  0
-dsbas687 toSci  -00000.          -> -0
-dsbas688 toSci  +0.              ->  0
-dsbas689 toSci  -0.              -> -0
-
--- Specials
-dsbas700 toSci "NaN"             -> NaN
-dsbas701 toSci "nan"             -> NaN
-dsbas702 toSci "nAn"             -> NaN
-dsbas703 toSci "NAN"             -> NaN
-dsbas704 toSci "+NaN"            -> NaN
-dsbas705 toSci "+nan"            -> NaN
-dsbas706 toSci "+nAn"            -> NaN
-dsbas707 toSci "+NAN"            -> NaN
-dsbas708 toSci "-NaN"            -> -NaN
-dsbas709 toSci "-nan"            -> -NaN
-dsbas710 toSci "-nAn"            -> -NaN
-dsbas711 toSci "-NAN"            -> -NaN
-dsbas712 toSci 'NaN0'            -> NaN
-dsbas713 toSci 'NaN1'            -> NaN1
-dsbas714 toSci 'NaN12'           -> NaN12
-dsbas715 toSci 'NaN123'          -> NaN123
-dsbas716 toSci 'NaN1234'         -> NaN1234
-dsbas717 toSci 'NaN01'           -> NaN1
-dsbas718 toSci 'NaN012'          -> NaN12
-dsbas719 toSci 'NaN0123'         -> NaN123
-dsbas720 toSci 'NaN01234'        -> NaN1234
-dsbas721 toSci 'NaN001'          -> NaN1
-dsbas722 toSci 'NaN0012'         -> NaN12
-dsbas723 toSci 'NaN00123'        -> NaN123
-dsbas724 toSci 'NaN001234'       -> NaN1234
-dsbas725 toSci 'NaN1234567890123456' -> NaN Conversion_syntax
-dsbas726 toSci 'NaN123e+1'       -> NaN Conversion_syntax
-dsbas727 toSci 'NaN12.45'        -> NaN Conversion_syntax
-dsbas728 toSci 'NaN-12'          -> NaN Conversion_syntax
-dsbas729 toSci 'NaN+12'          -> NaN Conversion_syntax
-
-dsbas730 toSci "sNaN"            -> sNaN
-dsbas731 toSci "snan"            -> sNaN
-dsbas732 toSci "SnAn"            -> sNaN
-dsbas733 toSci "SNAN"            -> sNaN
-dsbas734 toSci "+sNaN"           -> sNaN
-dsbas735 toSci "+snan"           -> sNaN
-dsbas736 toSci "+SnAn"           -> sNaN
-dsbas737 toSci "+SNAN"           -> sNaN
-dsbas738 toSci "-sNaN"           -> -sNaN
-dsbas739 toSci "-snan"           -> -sNaN
-dsbas740 toSci "-SnAn"           -> -sNaN
-dsbas741 toSci "-SNAN"           -> -sNaN
-dsbas742 toSci 'sNaN0000'        -> sNaN
-dsbas743 toSci 'sNaN7'           -> sNaN7
-dsbas744 toSci 'sNaN007234'      -> sNaN7234
-dsbas745 toSci 'sNaN7234561234567890' -> NaN Conversion_syntax
-dsbas746 toSci 'sNaN72.45'       -> NaN Conversion_syntax
-dsbas747 toSci 'sNaN-72'         -> NaN Conversion_syntax
-
-dsbas748 toSci "Inf"             -> Infinity
-dsbas749 toSci "inf"             -> Infinity
-dsbas750 toSci "iNf"             -> Infinity
-dsbas751 toSci "INF"             -> Infinity
-dsbas752 toSci "+Inf"            -> Infinity
-dsbas753 toSci "+inf"            -> Infinity
-dsbas754 toSci "+iNf"            -> Infinity
-dsbas755 toSci "+INF"            -> Infinity
-dsbas756 toSci "-Inf"            -> -Infinity
-dsbas757 toSci "-inf"            -> -Infinity
-dsbas758 toSci "-iNf"            -> -Infinity
-dsbas759 toSci "-INF"            -> -Infinity
-
-dsbas760 toSci "Infinity"        -> Infinity
-dsbas761 toSci "infinity"        -> Infinity
-dsbas762 toSci "iNfInItY"        -> Infinity
-dsbas763 toSci "INFINITY"        -> Infinity
-dsbas764 toSci "+Infinity"       -> Infinity
-dsbas765 toSci "+infinity"       -> Infinity
-dsbas766 toSci "+iNfInItY"       -> Infinity
-dsbas767 toSci "+INFINITY"       -> Infinity
-dsbas768 toSci "-Infinity"       -> -Infinity
-dsbas769 toSci "-infinity"       -> -Infinity
-dsbas770 toSci "-iNfInItY"       -> -Infinity
-dsbas771 toSci "-INFINITY"       -> -Infinity
-
--- Specials and zeros for toEng
-dsbast772 toEng "NaN"              -> NaN
-dsbast773 toEng "-Infinity"        -> -Infinity
-dsbast774 toEng "-sNaN"            -> -sNaN
-dsbast775 toEng "-NaN"             -> -NaN
-dsbast776 toEng "+Infinity"        -> Infinity
-dsbast778 toEng "+sNaN"            -> sNaN
-dsbast779 toEng "+NaN"             -> NaN
-dsbast780 toEng "INFINITY"         -> Infinity
-dsbast781 toEng "SNAN"             -> sNaN
-dsbast782 toEng "NAN"              -> NaN
-dsbast783 toEng "infinity"         -> Infinity
-dsbast784 toEng "snan"             -> sNaN
-dsbast785 toEng "nan"              -> NaN
-dsbast786 toEng "InFINITY"         -> Infinity
-dsbast787 toEng "SnAN"             -> sNaN
-dsbast788 toEng "nAN"              -> NaN
-dsbast789 toEng "iNfinity"         -> Infinity
-dsbast790 toEng "sNan"             -> sNaN
-dsbast791 toEng "Nan"              -> NaN
-dsbast792 toEng "Infinity"         -> Infinity
-dsbast793 toEng "sNaN"             -> sNaN
-
--- Zero toEng, etc.
-dsbast800 toEng 0e+1              -> "0.00E+3"  -- doc example
-
-dsbast801 toEng 0.000000000       -> 0E-9
-dsbast802 toEng 0.00000000        -> 0.00E-6
-dsbast803 toEng 0.0000000         -> 0.0E-6
-dsbast804 toEng 0.000000          -> 0.000000
-dsbast805 toEng 0.00000           -> 0.00000
-dsbast806 toEng 0.0000            -> 0.0000
-dsbast807 toEng 0.000             -> 0.000
-dsbast808 toEng 0.00              -> 0.00
-dsbast809 toEng 0.0               -> 0.0
-dsbast810 toEng  .0               -> 0.0
-dsbast811 toEng 0.                -> 0
-dsbast812 toEng -.0               -> -0.0
-dsbast813 toEng -0.               -> -0
-dsbast814 toEng -0.0              -> -0.0
-dsbast815 toEng -0.00             -> -0.00
-dsbast816 toEng -0.000            -> -0.000
-dsbast817 toEng -0.0000           -> -0.0000
-dsbast818 toEng -0.00000          -> -0.00000
-dsbast819 toEng -0.000000         -> -0.000000
-dsbast820 toEng -0.0000000        -> -0.0E-6
-dsbast821 toEng -0.00000000       -> -0.00E-6
-dsbast822 toEng -0.000000000      -> -0E-9
-
-dsbast830 toEng  0.00E+0          -> 0.00
-dsbast831 toEng  0.00E+1          -> 0.0
-dsbast832 toEng  0.00E+2          -> 0
-dsbast833 toEng  0.00E+3          -> 0.00E+3
-dsbast834 toEng  0.00E+4          -> 0.0E+3
-dsbast835 toEng  0.00E+5          -> 0E+3
-dsbast836 toEng  0.00E+6          -> 0.00E+6
-dsbast837 toEng  0.00E+7          -> 0.0E+6
-dsbast838 toEng  0.00E+8          -> 0E+6
-dsbast839 toEng  0.00E+9          -> 0.00E+9
-
-dsbast840 toEng  0.0E+0           -> 0.0
-dsbast841 toEng  0.0E+1           -> 0
-dsbast842 toEng  0.0E+2           -> 0.00E+3
-dsbast843 toEng  0.0E+3           -> 0.0E+3
-dsbast844 toEng  0.0E+4           -> 0E+3
-dsbast845 toEng  0.0E+5           -> 0.00E+6
-dsbast846 toEng  0.0E+6           -> 0.0E+6
-dsbast847 toEng  0.0E+7           -> 0E+6
-dsbast848 toEng  0.0E+8           -> 0.00E+9
-dsbast849 toEng  0.0E+9           -> 0.0E+9
-
-dsbast850 toEng  0E+0             -> 0
-dsbast851 toEng  0E+1             -> 0.00E+3
-dsbast852 toEng  0E+2             -> 0.0E+3
-dsbast853 toEng  0E+3             -> 0E+3
-dsbast854 toEng  0E+4             -> 0.00E+6
-dsbast855 toEng  0E+5             -> 0.0E+6
-dsbast856 toEng  0E+6             -> 0E+6
-dsbast857 toEng  0E+7             -> 0.00E+9
-dsbast858 toEng  0E+8             -> 0.0E+9
-dsbast859 toEng  0E+9             -> 0E+9
-
-dsbast860 toEng  0.0E-0           -> 0.0
-dsbast861 toEng  0.0E-1           -> 0.00
-dsbast862 toEng  0.0E-2           -> 0.000
-dsbast863 toEng  0.0E-3           -> 0.0000
-dsbast864 toEng  0.0E-4           -> 0.00000
-dsbast865 toEng  0.0E-5           -> 0.000000
-dsbast866 toEng  0.0E-6           -> 0.0E-6
-dsbast867 toEng  0.0E-7           -> 0.00E-6
-dsbast868 toEng  0.0E-8           -> 0E-9
-dsbast869 toEng  0.0E-9           -> 0.0E-9
-
-dsbast870 toEng  0.00E-0          -> 0.00
-dsbast871 toEng  0.00E-1          -> 0.000
-dsbast872 toEng  0.00E-2          -> 0.0000
-dsbast873 toEng  0.00E-3          -> 0.00000
-dsbast874 toEng  0.00E-4          -> 0.000000
-dsbast875 toEng  0.00E-5          -> 0.0E-6
-dsbast876 toEng  0.00E-6          -> 0.00E-6
-dsbast877 toEng  0.00E-7          -> 0E-9
-dsbast878 toEng  0.00E-8          -> 0.0E-9
-dsbast879 toEng  0.00E-9          -> 0.00E-9
-
--- long input strings
-dsbas801 tosci          '01234567' -> 1234567
-dsbas802 tosci         '001234567' -> 1234567
-dsbas803 tosci        '0001234567' -> 1234567
-dsbas804 tosci       '00001234567' -> 1234567
-dsbas805 tosci      '000001234567' -> 1234567
-dsbas806 tosci     '0000001234567' -> 1234567
-dsbas807 tosci    '00000001234567' -> 1234567
-dsbas808 tosci   '000000001234567' -> 1234567
-dsbas809 tosci  '0000000001234567' -> 1234567
-dsbas810 tosci '00000000001234567' -> 1234567
-
-dsbas811 tosci          '0.1234567' ->      0.1234567
-dsbas812 tosci         '0.01234567' ->     0.01234567
-dsbas813 tosci        '0.001234567' ->    0.001234567
-dsbas814 tosci       '0.0001234567' ->   0.0001234567
-dsbas815 tosci      '0.00001234567' ->  0.00001234567
-dsbas816 tosci     '0.000001234567' -> 0.000001234567
-dsbas817 tosci    '0.0000001234567' ->       1.234567E-7
-dsbas818 tosci   '0.00000001234567' ->       1.234567E-8
-dsbas819 tosci  '0.000000001234567' ->       1.234567E-9
-dsbas820 tosci '0.0000000001234567' ->       1.234567E-10
-
-dsbas821 tosci '123456790'         -> 1.234568E+8 Inexact Rounded
-dsbas822 tosci '1234567901'        -> 1.234568E+9  Inexact Rounded
-dsbas823 tosci '12345679012'       -> 1.234568E+10 Inexact Rounded
-dsbas824 tosci '123456790123'      -> 1.234568E+11 Inexact Rounded
-dsbas825 tosci '1234567901234'     -> 1.234568E+12 Inexact Rounded
-dsbas826 tosci '12345679012345'    -> 1.234568E+13 Inexact Rounded
-dsbas827 tosci '123456790123456'   -> 1.234568E+14 Inexact Rounded
-dsbas828 tosci '1234567901234567'  -> 1.234568E+15 Inexact Rounded
-dsbas829 tosci '1234567890123456'  -> 1.234568E+15 Inexact Rounded
-
--- subnormals and overflows
-dsbas906 toSci '99e999999999'       -> Infinity Overflow  Inexact Rounded
-dsbas907 toSci '999e999999999'      -> Infinity Overflow  Inexact Rounded
-dsbas908 toSci '0.9e-999999999'     -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
-dsbas909 toSci '0.09e-999999999'    -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
-dsbas910 toSci '0.1e1000000000'     -> Infinity Overflow  Inexact Rounded
-dsbas911 toSci '10e-1000000000'     -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
-dsbas912 toSci '0.9e9999999999'     -> Infinity Overflow  Inexact Rounded
-dsbas913 toSci '99e-9999999999'     -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
-dsbas914 toSci '111e9999999999'     -> Infinity Overflow  Inexact Rounded
-dsbas915 toSci '1111e-9999999999'   -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
-dsbas916 toSci '1111e-99999999999'  -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
-dsbas917 toSci '7e1000000000'       -> Infinity Overflow  Inexact Rounded
--- negatives the same
-dsbas918 toSci '-99e999999999'      -> -Infinity Overflow  Inexact Rounded
-dsbas919 toSci '-999e999999999'     -> -Infinity Overflow  Inexact Rounded
-dsbas920 toSci '-0.9e-999999999'    -> -0E-101 Underflow Subnormal Inexact Rounded Clamped
-dsbas921 toSci '-0.09e-999999999'   -> -0E-101 Underflow Subnormal Inexact Rounded Clamped
-dsbas922 toSci '-0.1e1000000000'    -> -Infinity Overflow  Inexact Rounded
-dsbas923 toSci '-10e-1000000000'    -> -0E-101 Underflow Subnormal Inexact Rounded Clamped
-dsbas924 toSci '-0.9e9999999999'    -> -Infinity Overflow  Inexact Rounded
-dsbas925 toSci '-99e-9999999999'    -> -0E-101 Underflow Subnormal Inexact Rounded Clamped
-dsbas926 toSci '-111e9999999999'    -> -Infinity Overflow  Inexact Rounded
-dsbas927 toSci '-1111e-9999999999'  -> -0E-101 Underflow Subnormal Inexact Rounded Clamped
-dsbas928 toSci '-1111e-99999999999' -> -0E-101 Underflow Subnormal Inexact Rounded Clamped
-dsbas929 toSci '-7e1000000000'      -> -Infinity Overflow  Inexact Rounded
-
--- overflow results at different rounding modes
-rounding:  ceiling
-dsbas930 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-dsbas931 toSci '-7e10000'  -> -9.999999E+96 Overflow  Inexact Rounded
-rounding:  up
-dsbas932 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-dsbas933 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-rounding:  down
-dsbas934 toSci  '7e10000'  ->  9.999999E+96 Overflow  Inexact Rounded
-dsbas935 toSci '-7e10000'  -> -9.999999E+96 Overflow  Inexact Rounded
-rounding:  floor
-dsbas936 toSci  '7e10000'  ->  9.999999E+96 Overflow  Inexact Rounded
-dsbas937 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-
-rounding:  half_up
-dsbas938 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-dsbas939 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-rounding:  half_even
-dsbas940 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-dsbas941 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-rounding:  half_down
-dsbas942 toSci  '7e10000'  ->  Infinity Overflow  Inexact Rounded
-dsbas943 toSci '-7e10000'  -> -Infinity Overflow  Inexact Rounded
-
-rounding:  half_even
-
--- Now check 854/754r some subnormals and underflow to 0
-dsbem400 toSci  1.0000E-86     -> 1.0000E-86
-dsbem401 toSci  0.1E-97        -> 1E-98       Subnormal
-dsbem402 toSci  0.1000E-97     -> 1.000E-98   Subnormal
-dsbem403 toSci  0.0100E-97     -> 1.00E-99    Subnormal
-dsbem404 toSci  0.0010E-97     -> 1.0E-100     Subnormal
-dsbem405 toSci  0.0001E-97     -> 1E-101       Subnormal
-dsbem406 toSci  0.00010E-97    -> 1E-101     Subnormal Rounded
-dsbem407 toSci  0.00013E-97    -> 1E-101     Underflow Subnormal Inexact Rounded
-dsbem408 toSci  0.00015E-97    -> 2E-101     Underflow Subnormal Inexact Rounded
-dsbem409 toSci  0.00017E-97    -> 2E-101     Underflow Subnormal Inexact Rounded
-dsbem410 toSci  0.00023E-97    -> 2E-101     Underflow Subnormal Inexact Rounded
-dsbem411 toSci  0.00025E-97    -> 2E-101     Underflow Subnormal Inexact Rounded
-dsbem412 toSci  0.00027E-97    -> 3E-101     Underflow Subnormal Inexact Rounded
-dsbem413 toSci  0.000149E-97   -> 1E-101     Underflow Subnormal Inexact Rounded
-dsbem414 toSci  0.000150E-97   -> 2E-101     Underflow Subnormal Inexact Rounded
-dsbem415 toSci  0.000151E-97   -> 2E-101     Underflow Subnormal Inexact Rounded
-dsbem416 toSci  0.000249E-97   -> 2E-101     Underflow Subnormal Inexact Rounded
-dsbem417 toSci  0.000250E-97   -> 2E-101     Underflow Subnormal Inexact Rounded
-dsbem418 toSci  0.000251E-97   -> 3E-101     Underflow Subnormal Inexact Rounded
-dsbem419 toSci  0.00009E-97    -> 1E-101     Underflow Subnormal Inexact Rounded
-dsbem420 toSci  0.00005E-97    -> 0E-101     Underflow Subnormal Inexact Rounded Clamped
-dsbem421 toSci  0.00003E-97    -> 0E-101     Underflow Subnormal Inexact Rounded Clamped
-dsbem422 toSci  0.000009E-97   -> 0E-101     Underflow Subnormal Inexact Rounded Clamped
-dsbem423 toSci  0.000005E-97   -> 0E-101     Underflow Subnormal Inexact Rounded Clamped
-dsbem424 toSci  0.000003E-97   -> 0E-101     Underflow Subnormal Inexact Rounded Clamped
-
-dsbem425 toSci  0.001049E-97   -> 1.0E-100   Underflow Subnormal Inexact Rounded
-dsbem426 toSci  0.001050E-97   -> 1.0E-100   Underflow Subnormal Inexact Rounded
-dsbem427 toSci  0.001051E-97   -> 1.1E-100   Underflow Subnormal Inexact Rounded
-dsbem428 toSci  0.001149E-97   -> 1.1E-100   Underflow Subnormal Inexact Rounded
-dsbem429 toSci  0.001150E-97   -> 1.2E-100   Underflow Subnormal Inexact Rounded
-dsbem430 toSci  0.001151E-97   -> 1.2E-100   Underflow Subnormal Inexact Rounded
-
-dsbem432 toSci  0.010049E-97   -> 1.00E-99  Underflow Subnormal Inexact Rounded
-dsbem433 toSci  0.010050E-97   -> 1.00E-99  Underflow Subnormal Inexact Rounded
-dsbem434 toSci  0.010051E-97   -> 1.01E-99  Underflow Subnormal Inexact Rounded
-dsbem435 toSci  0.010149E-97   -> 1.01E-99  Underflow Subnormal Inexact Rounded
-dsbem436 toSci  0.010150E-97   -> 1.02E-99  Underflow Subnormal Inexact Rounded
-dsbem437 toSci  0.010151E-97   -> 1.02E-99  Underflow Subnormal Inexact Rounded
-
-dsbem440 toSci  0.10103E-97    -> 1.010E-98 Underflow Subnormal Inexact Rounded
-dsbem441 toSci  0.10105E-97    -> 1.010E-98 Underflow Subnormal Inexact Rounded
-dsbem442 toSci  0.10107E-97    -> 1.011E-98 Underflow Subnormal Inexact Rounded
-dsbem443 toSci  0.10113E-97    -> 1.011E-98 Underflow Subnormal Inexact Rounded
-dsbem444 toSci  0.10115E-97    -> 1.012E-98 Underflow Subnormal Inexact Rounded
-dsbem445 toSci  0.10117E-97    -> 1.012E-98 Underflow Subnormal Inexact Rounded
-
-dsbem450 toSci  1.10730E-98    -> 1.107E-98 Underflow Subnormal Inexact Rounded
-dsbem451 toSci  1.10750E-98    -> 1.108E-98 Underflow Subnormal Inexact Rounded
-dsbem452 toSci  1.10770E-98    -> 1.108E-98 Underflow Subnormal Inexact Rounded
-dsbem453 toSci  1.10830E-98    -> 1.108E-98 Underflow Subnormal Inexact Rounded
-dsbem454 toSci  1.10850E-98    -> 1.108E-98 Underflow Subnormal Inexact Rounded
-dsbem455 toSci  1.10870E-98    -> 1.109E-98 Underflow Subnormal Inexact Rounded
-
--- make sure sign OK
-dsbem456 toSci  -0.10103E-97   -> -1.010E-98 Underflow Subnormal Inexact Rounded
-dsbem457 toSci  -0.10105E-97   -> -1.010E-98 Underflow Subnormal Inexact Rounded
-dsbem458 toSci  -0.10107E-97   -> -1.011E-98 Underflow Subnormal Inexact Rounded
-dsbem459 toSci  -0.10113E-97   -> -1.011E-98 Underflow Subnormal Inexact Rounded
-dsbem460 toSci  -0.10115E-97   -> -1.012E-98 Underflow Subnormal Inexact Rounded
-dsbem461 toSci  -0.10117E-97   -> -1.012E-98 Underflow Subnormal Inexact Rounded
-
--- '999s' cases
-dsbem464 toSci  999999E-98         -> 9.99999E-93
-dsbem465 toSci  99999.0E-97        -> 9.99990E-93
-dsbem466 toSci  99999.E-97         -> 9.9999E-93
-dsbem467 toSci  9999.9E-97         -> 9.9999E-94
-dsbem468 toSci  999.99E-97         -> 9.9999E-95
-dsbem469 toSci  99.999E-97         -> 9.9999E-96 Subnormal
-dsbem470 toSci  9.9999E-97         -> 9.9999E-97 Subnormal
-dsbem471 toSci  0.99999E-97        -> 1.0000E-97 Underflow Subnormal Inexact Rounded
-dsbem472 toSci  0.099999E-97       -> 1.000E-98  Underflow Subnormal Inexact Rounded
-dsbem473 toSci  0.0099999E-97      -> 1.00E-99   Underflow Subnormal Inexact Rounded
-dsbem474 toSci  0.00099999E-97     -> 1.0E-100   Underflow Subnormal Inexact Rounded
-dsbem475 toSci  0.000099999E-97    -> 1E-101     Underflow Subnormal Inexact Rounded
-dsbem476 toSci  0.0000099999E-97   -> 0E-101     Underflow Subnormal Inexact Rounded Clamped
-dsbem477 toSci  0.00000099999E-97  -> 0E-101     Underflow Subnormal Inexact Rounded Clamped
-dsbem478 toSci  0.000000099999E-97 -> 0E-101     Underflow Subnormal Inexact Rounded Clamped
-
--- Exponents with insignificant leading zeros
-dsbas1001 toSci  1e999999999 -> Infinity Overflow Inexact Rounded
-dsbas1002 toSci  1e0999999999 -> Infinity Overflow Inexact Rounded
-dsbas1003 toSci  1e00999999999 -> Infinity Overflow Inexact Rounded
-dsbas1004 toSci  1e000999999999 -> Infinity Overflow Inexact Rounded
-dsbas1005 toSci  1e000000000000999999999 -> Infinity Overflow Inexact Rounded
-dsbas1006 toSci  1e000000000001000000007 -> Infinity Overflow Inexact Rounded
-dsbas1007 toSci  1e-999999999 -> 0E-101             Underflow Subnormal Inexact Rounded Clamped
-dsbas1008 toSci  1e-0999999999 -> 0E-101            Underflow Subnormal Inexact Rounded Clamped
-dsbas1009 toSci  1e-00999999999 -> 0E-101           Underflow Subnormal Inexact Rounded Clamped
-dsbas1010 toSci  1e-000999999999 -> 0E-101          Underflow Subnormal Inexact Rounded Clamped
-dsbas1011 toSci  1e-000000000000999999999 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
-dsbas1012 toSci  1e-000000000001000000007 -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
-
--- check for double-rounded subnormals
-dsbas1041 toSci     1.1152444E-96 ->  1.11524E-96 Inexact Rounded Subnormal Underflow
-dsbas1042 toSci     1.1152445E-96 ->  1.11524E-96 Inexact Rounded Subnormal Underflow
-dsbas1043 toSci     1.1152446E-96 ->  1.11524E-96 Inexact Rounded Subnormal Underflow
-
--- clamped zeros [see also clamp.decTest]
-dsbas1075 toSci   0e+10000  ->  0E+90   Clamped
-dsbas1076 toSci   0e-10000  ->  0E-101  Clamped
-dsbas1077 toSci  -0e+10000  -> -0E+90   Clamped
-dsbas1078 toSci  -0e-10000  -> -0E-101  Clamped
-
--- extreme values from next-wider
-dsbas1101 toSci -9.999999999999999E+384 -> -Infinity Overflow Inexact Rounded
-dsbas1102 toSci -1E-383 -> -0E-101 Inexact Rounded Subnormal Underflow Clamped
-dsbas1103 toSci -1E-398 -> -0E-101 Inexact Rounded Subnormal Underflow Clamped
-dsbas1104 toSci -0 -> -0
-dsbas1105 toSci +0 ->  0
-dsbas1106 toSci +1E-398 ->  0E-101 Inexact Rounded Subnormal Underflow Clamped
-dsbas1107 toSci +1E-383 ->  0E-101 Inexact Rounded Subnormal Underflow Clamped
-dsbas1108 toSci +9.999999999999999E+384 ->  Infinity Overflow Inexact Rounded
-
--- narrowing case
-dsbas1110 toSci 2.000000000000000E-99 -> 2.00E-99 Rounded Subnormal
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dsEncode.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dsEncode.decTest
deleted file mode 100644
index 7264748..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/dsEncode.decTest
+++ /dev/null
@@ -1,372 +0,0 @@
-------------------------------------------------------------------------
--- dsEncode.decTest -- decimal four-byte format testcases             --
--- Copyright (c) IBM Corporation, 2000, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
--- [Previously called decimal32.decTest]
-version: 2.59
-
--- This set of tests is for the four-byte concrete representation.
--- Its characteristics are:
---
---  1 bit  sign
---  5 bits combination field
---  6 bits exponent continuation
--- 20 bits coefficient continuation
---
--- Total exponent length 8 bits
--- Total coefficient length 24 bits (7 digits)
---
--- Elimit =  191 (maximum encoded exponent)
--- Emax   =   96 (largest exponent value)
--- Emin   =  -95 (smallest exponent value)
--- bias   =  101 (subtracted from encoded exponent) = -Etiny
-
--- The testcases here have only exactly representable data on the
--- 'left-hand-side'; rounding from strings is tested in 'base'
--- testcase groups.
-
-extended:    1
-clamp:       1
-precision:   7
-rounding:    half_up
-maxExponent: 96
-minExponent: -95
-
--- General testcases
--- (mostly derived from the Strawman 4 document and examples)
-decs001 apply   #A23003D0          -> -7.50
-decs002 apply   -7.50              -> #A23003D0
--- derivative canonical plain strings
-decs003 apply   #A26003D0         -> -7.50E+3
-decs004 apply   -7.50E+3          -> #A26003D0
-decs005 apply   #A25003D0         -> -750
-decs006 apply   -750              -> #A25003D0
-decs007 apply   #A24003D0         -> -75.0
-decs008 apply   -75.0             -> #A24003D0
-decs009 apply   #A22003D0         -> -0.750
-decs010 apply   -0.750            -> #A22003D0
-decs011 apply   #A21003D0         -> -0.0750
-decs012 apply   -0.0750           -> #A21003D0
-decs013 apply   #A1f003D0         -> -0.000750
-decs014 apply   -0.000750         -> #A1f003D0
-decs015 apply   #A1d003D0         -> -0.00000750
-decs016 apply   -0.00000750       -> #A1d003D0
-decs017 apply   #A1c003D0         -> -7.50E-7
-decs018 apply   -7.50E-7          -> #A1c003D0
-
--- Normality
-decs020 apply   1234567            -> #2654d2e7
-decs021 apply  -1234567            -> #a654d2e7
-decs022 apply   1111111            -> #26524491
-
--- Nmax and similar
-decs031 apply   9.999999E+96            -> #77f3fcff
-decs032 apply   #77f3fcff               -> 9.999999E+96
-decs033 apply   1.234567E+96            -> #47f4d2e7
-decs034 apply   #47f4d2e7               -> 1.234567E+96
--- fold-downs (more below)
-decs035 apply   1.23E+96                -> #47f4c000 Clamped
-decs036 apply   #47f4c000               -> 1.230000E+96
-decs037 apply   1E+96                   -> #47f00000 Clamped
-decs038 apply   #47f00000               -> 1.000000E+96
-
-decs051 apply   12345                   -> #225049c5
-decs052 apply   #225049c5               -> 12345
-decs053 apply   1234                    -> #22500534
-decs054 apply   #22500534               -> 1234
-decs055 apply   123                     -> #225000a3
-decs056 apply   #225000a3               -> 123
-decs057 apply   12                      -> #22500012
-decs058 apply   #22500012               -> 12
-decs059 apply   1                       -> #22500001
-decs060 apply   #22500001               -> 1
-decs061 apply   1.23                    -> #223000a3
-decs062 apply   #223000a3               -> 1.23
-decs063 apply   123.45                  -> #223049c5
-decs064 apply   #223049c5               -> 123.45
-
--- Nmin and below
-decs071 apply   1E-95                   -> #00600001
-decs072 apply   #00600001               -> 1E-95
-decs073 apply   1.000000E-95            -> #04000000
-decs074 apply   #04000000               -> 1.000000E-95
-decs075 apply   1.000001E-95            -> #04000001
-decs076 apply   #04000001               -> 1.000001E-95
-
-decs077 apply   0.100000E-95            -> #00020000     Subnormal
-decs07x apply   1.00000E-96             -> 1.00000E-96   Subnormal
-decs078 apply   #00020000               -> 1.00000E-96   Subnormal
-decs079 apply   0.000010E-95            -> #00000010     Subnormal
-decs080 apply   #00000010               -> 1.0E-100      Subnormal
-decs081 apply   0.000001E-95            -> #00000001     Subnormal
-decs082 apply   #00000001               -> 1E-101        Subnormal
-decs083 apply   1e-101                  -> #00000001     Subnormal
-decs084 apply   #00000001               -> 1E-101        Subnormal
-decs08x apply   1e-101                  -> 1E-101        Subnormal
-
--- underflows cannot be tested; just check edge case
-decs090 apply   1e-101                  -> #00000001  Subnormal
-
--- same again, negatives --
-
--- Nmax and similar
-decs122 apply  -9.999999E+96            -> #f7f3fcff
-decs123 apply   #f7f3fcff               -> -9.999999E+96
-decs124 apply  -1.234567E+96            -> #c7f4d2e7
-decs125 apply   #c7f4d2e7               -> -1.234567E+96
--- fold-downs (more below)
-decs130 apply  -1.23E+96                -> #c7f4c000 Clamped
-decs131 apply   #c7f4c000               -> -1.230000E+96
-decs132 apply  -1E+96                   -> #c7f00000 Clamped
-decs133 apply   #c7f00000               -> -1.000000E+96
-
-decs151 apply  -12345                   -> #a25049c5
-decs152 apply   #a25049c5               -> -12345
-decs153 apply  -1234                    -> #a2500534
-decs154 apply   #a2500534               -> -1234
-decs155 apply  -123                     -> #a25000a3
-decs156 apply   #a25000a3               -> -123
-decs157 apply  -12                      -> #a2500012
-decs158 apply   #a2500012               -> -12
-decs159 apply  -1                       -> #a2500001
-decs160 apply   #a2500001               -> -1
-decs161 apply  -1.23                    -> #a23000a3
-decs162 apply   #a23000a3               -> -1.23
-decs163 apply  -123.45                  -> #a23049c5
-decs164 apply   #a23049c5               -> -123.45
-
--- Nmin and below
-decs171 apply  -1E-95                   -> #80600001
-decs172 apply   #80600001               -> -1E-95
-decs173 apply  -1.000000E-95            -> #84000000
-decs174 apply   #84000000               -> -1.000000E-95
-decs175 apply  -1.000001E-95            -> #84000001
-decs176 apply   #84000001               -> -1.000001E-95
-
-decs177 apply  -0.100000E-95            -> #80020000     Subnormal
-decs178 apply   #80020000               -> -1.00000E-96  Subnormal
-decs179 apply  -0.000010E-95            -> #80000010     Subnormal
-decs180 apply   #80000010               -> -1.0E-100     Subnormal
-decs181 apply  -0.000001E-95            -> #80000001     Subnormal
-decs182 apply   #80000001               -> -1E-101       Subnormal
-decs183 apply  -1e-101                  -> #80000001     Subnormal
-decs184 apply   #80000001               -> -1E-101       Subnormal
-
--- underflow edge case
-decs190 apply  -1e-101                  -> #80000001  Subnormal
-
--- zeros
-decs400 apply   0E-400                  -> #00000000  Clamped
-decs401 apply   0E-101                  -> #00000000
-decs402 apply   #00000000               -> 0E-101
-decs403 apply   0.000000E-95            -> #00000000
-decs404 apply   #00000000               -> 0E-101
-decs405 apply   0E-2                    -> #22300000
-decs406 apply   #22300000               -> 0.00
-decs407 apply   0                       -> #22500000
-decs408 apply   #22500000               -> 0
-decs409 apply   0E+3                    -> #22800000
-decs410 apply   #22800000               -> 0E+3
-decs411 apply   0E+90                   -> #43f00000
-decs412 apply   #43f00000               -> 0E+90
--- clamped zeros...
-decs413 apply   0E+91                   -> #43f00000  Clamped
-decs414 apply   #43f00000               -> 0E+90
-decs415 apply   0E+96                   -> #43f00000  Clamped
-decs416 apply   #43f00000               -> 0E+90
-decs417 apply   0E+400                  -> #43f00000  Clamped
-decs418 apply   #43f00000               -> 0E+90
-
--- negative zeros
-decs420 apply   -0E-400                 -> #80000000  Clamped
-decs421 apply   -0E-101                 -> #80000000
-decs422 apply   #80000000               -> -0E-101
-decs423 apply   -0.000000E-95           -> #80000000
-decs424 apply   #80000000               -> -0E-101
-decs425 apply   -0E-2                   -> #a2300000
-decs426 apply   #a2300000               -> -0.00
-decs427 apply   -0                      -> #a2500000
-decs428 apply   #a2500000               -> -0
-decs429 apply   -0E+3                   -> #a2800000
-decs430 apply   #a2800000               -> -0E+3
-decs431 apply   -0E+90                  -> #c3f00000
-decs432 apply   #c3f00000               -> -0E+90
--- clamped zeros...
-decs433 apply   -0E+91                  -> #c3f00000  Clamped
-decs434 apply   #c3f00000               -> -0E+90
-decs435 apply   -0E+96                  -> #c3f00000  Clamped
-decs436 apply   #c3f00000               -> -0E+90
-decs437 apply   -0E+400                 -> #c3f00000  Clamped
-decs438 apply   #c3f00000               -> -0E+90
-
--- Specials
-decs500 apply   Infinity  -> #78000000
-decs501 apply   #78787878 -> #78000000
-decs502 apply   #78000000 -> Infinity
-decs503 apply   #79797979 -> #78000000
-decs504 apply   #79000000 -> Infinity
-decs505 apply   #7a7a7a7a -> #78000000
-decs506 apply   #7a000000 -> Infinity
-decs507 apply   #7b7b7b7b -> #78000000
-decs508 apply   #7b000000 -> Infinity
-decs509 apply   #7c7c7c7c -> #7c0c7c7c
-
-decs510 apply   NaN       -> #7c000000
-decs511 apply   #7c000000 -> NaN
-decs512 apply   #7d7d7d7d -> #7c0d7d7d
-decs513 apply   #7d000000 -> NaN
-decs514 apply   #7e7e7e7e -> #7e0e7c7e
-decs515 apply   #7e000000 -> sNaN
-decs516 apply   #7f7f7f7f -> #7e0f7c7f
-decs517 apply   #7f000000 -> sNaN
-decs518 apply   #7fffffff -> sNaN999999
-decs519 apply   #7fffffff -> #7e03fcff
-
-decs520 apply   -Infinity -> #f8000000
-decs521 apply   #f8787878 -> #f8000000
-decs522 apply   #f8000000 -> -Infinity
-decs523 apply   #f9797979 -> #f8000000
-decs524 apply   #f9000000 -> -Infinity
-decs525 apply   #fa7a7a7a -> #f8000000
-decs526 apply   #fa000000 -> -Infinity
-decs527 apply   #fb7b7b7b -> #f8000000
-decs528 apply   #fb000000 -> -Infinity
-
-decs529 apply   -NaN      -> #fc000000
-decs530 apply   #fc7c7c7c -> #fc0c7c7c
-decs531 apply   #fc000000 -> -NaN
-decs532 apply   #fd7d7d7d -> #fc0d7d7d
-decs533 apply   #fd000000 -> -NaN
-decs534 apply   #fe7e7e7e -> #fe0e7c7e
-decs535 apply   #fe000000 -> -sNaN
-decs536 apply   #ff7f7f7f -> #fe0f7c7f
-decs537 apply   #ff000000 -> -sNaN
-decs538 apply   #ffffffff -> -sNaN999999
-decs539 apply   #ffffffff -> #fe03fcff
-
--- diagnostic NaNs
-decs540 apply   NaN       -> #7c000000
-decs541 apply   NaN0      -> #7c000000
-decs542 apply   NaN1      -> #7c000001
-decs543 apply   NaN12     -> #7c000012
-decs544 apply   NaN79     -> #7c000079
-decs545 apply   NaN12345   -> #7c0049c5
-decs546 apply   NaN123456  -> #7c028e56
-decs547 apply   NaN799799  -> #7c0f7fdf
-decs548 apply   NaN999999  -> #7c03fcff
-
-
--- fold-down full sequence
-decs601 apply   1E+96                   -> #47f00000 Clamped
-decs602 apply   #47f00000               -> 1.000000E+96
-decs603 apply   1E+95                   -> #43f20000 Clamped
-decs604 apply   #43f20000               -> 1.00000E+95
-decs605 apply   1E+94                   -> #43f04000 Clamped
-decs606 apply   #43f04000               -> 1.0000E+94
-decs607 apply   1E+93                   -> #43f00400 Clamped
-decs608 apply   #43f00400               -> 1.000E+93
-decs609 apply   1E+92                   -> #43f00080 Clamped
-decs610 apply   #43f00080               -> 1.00E+92
-decs611 apply   1E+91                   -> #43f00010 Clamped
-decs612 apply   #43f00010               -> 1.0E+91
-decs613 apply   1E+90                   -> #43f00001
-decs614 apply   #43f00001               -> 1E+90
-
-
--- Selected DPD codes
-decs700 apply   #22500000       -> 0
-decs701 apply   #22500009       -> 9
-decs702 apply   #22500010       -> 10
-decs703 apply   #22500019       -> 19
-decs704 apply   #22500020       -> 20
-decs705 apply   #22500029       -> 29
-decs706 apply   #22500030       -> 30
-decs707 apply   #22500039       -> 39
-decs708 apply   #22500040       -> 40
-decs709 apply   #22500049       -> 49
-decs710 apply   #22500050       -> 50
-decs711 apply   #22500059       -> 59
-decs712 apply   #22500060       -> 60
-decs713 apply   #22500069       -> 69
-decs714 apply   #22500070       -> 70
-decs715 apply   #22500071       -> 71
-decs716 apply   #22500072       -> 72
-decs717 apply   #22500073       -> 73
-decs718 apply   #22500074       -> 74
-decs719 apply   #22500075       -> 75
-decs720 apply   #22500076       -> 76
-decs721 apply   #22500077       -> 77
-decs722 apply   #22500078       -> 78
-decs723 apply   #22500079       -> 79
-
-decs730 apply   #2250029e       -> 994
-decs731 apply   #2250029f       -> 995
-decs732 apply   #225002a0       -> 520
-decs733 apply   #225002a1       -> 521
-
--- DPD: one of each of the huffman groups
-decs740 apply   #225003f7       -> 777
-decs741 apply   #225003f8       -> 778
-decs742 apply   #225003eb       -> 787
-decs743 apply   #2250037d       -> 877
-decs744 apply   #2250039f       -> 997
-decs745 apply   #225003bf       -> 979
-decs746 apply   #225003df       -> 799
-decs747 apply   #2250006e       -> 888
-
-
--- DPD all-highs cases (includes the 24 redundant codes)
-decs750 apply   #2250006e       -> 888
-decs751 apply   #2250016e       -> 888
-decs752 apply   #2250026e       -> 888
-decs753 apply   #2250036e       -> 888
-decs754 apply   #2250006f       -> 889
-decs755 apply   #2250016f       -> 889
-decs756 apply   #2250026f       -> 889
-decs757 apply   #2250036f       -> 889
-
-decs760 apply   #2250007e       -> 898
-decs761 apply   #2250017e       -> 898
-decs762 apply   #2250027e       -> 898
-decs763 apply   #2250037e       -> 898
-decs764 apply   #2250007f       -> 899
-decs765 apply   #2250017f       -> 899
-decs766 apply   #2250027f       -> 899
-decs767 apply   #2250037f       -> 899
-
-decs770 apply   #225000ee       -> 988
-decs771 apply   #225001ee       -> 988
-decs772 apply   #225002ee       -> 988
-decs773 apply   #225003ee       -> 988
-decs774 apply   #225000ef       -> 989
-decs775 apply   #225001ef       -> 989
-decs776 apply   #225002ef       -> 989
-decs777 apply   #225003ef       -> 989
-
-decs780 apply   #225000fe       -> 998
-decs781 apply   #225001fe       -> 998
-decs782 apply   #225002fe       -> 998
-decs783 apply   #225003fe       -> 998
-decs784 apply   #225000ff       -> 999
-decs785 apply   #225001ff       -> 999
-decs786 apply   #225002ff       -> 999
-decs787 apply   #225003ff       -> 999
-
--- narrowing case
-decs790 apply 2.00E-99 -> #00000100 Subnormal
-decs791 apply #00000100 -> 2.00E-99 Subnormal
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/exp.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/exp.decTest
deleted file mode 100644
index 021b478..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/exp.decTest
+++ /dev/null
@@ -1,674 +0,0 @@
-------------------------------------------------------------------------
--- exp.decTest -- decimal natural exponentiation                      --
--- Copyright (c) IBM Corporation, 2005, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Tests of the exponential funtion.  Currently all testcases here
--- show results which are correctly rounded (within <= 0.5 ulp).
-
-extended:    1
-precision:   9
-rounding:    half_even
-maxExponent: 384
-minexponent: -383
-
--- basics (examples in specificiation, etc.)
-expx001 exp  -Infinity     -> 0
-expx002 exp  -10           -> 0.0000453999298 Inexact Rounded
-expx003 exp  -1            -> 0.367879441 Inexact Rounded
-expx004 exp   0            -> 1
-expx005 exp  -0            -> 1
-expx006 exp   1            -> 2.71828183  Inexact Rounded
-expx007 exp   0.693147181  -> 2.00000000  Inexact Rounded
-expx008 exp   10           -> 22026.4658  Inexact Rounded
-expx009 exp  +Infinity     -> Infinity
-
--- tiny edge cases
-precision:   7
-expx011 exp  0.1          ->  1.105171  Inexact Rounded
-expx012 exp  0.01         ->  1.010050  Inexact Rounded
-expx013 exp  0.001        ->  1.001001  Inexact Rounded
-expx014 exp  0.0001       ->  1.000100  Inexact Rounded
-expx015 exp  0.00001      ->  1.000010  Inexact Rounded
-expx016 exp  0.000001     ->  1.000001  Inexact Rounded
-expx017 exp  0.0000001    ->  1.000000  Inexact Rounded
-expx018 exp  0.0000003    ->  1.000000  Inexact Rounded
-expx019 exp  0.0000004    ->  1.000000  Inexact Rounded
-expx020 exp  0.0000005    ->  1.000001  Inexact Rounded
-expx021 exp  0.0000008    ->  1.000001  Inexact Rounded
-expx022 exp  0.0000009    ->  1.000001  Inexact Rounded
-expx023 exp  0.0000010    ->  1.000001  Inexact Rounded
-expx024 exp  0.0000011    ->  1.000001  Inexact Rounded
-expx025 exp  0.00000009   ->  1.000000  Inexact Rounded
-expx026 exp  0.00000005   ->  1.000000  Inexact Rounded
-expx027 exp  0.00000004   ->  1.000000  Inexact Rounded
-expx028 exp  0.00000001   ->  1.000000  Inexact Rounded
-
--- and some more zeros
-expx030 exp  0.00000000   ->  1
-expx031 exp  0E+100       ->  1
-expx032 exp  0E-100       ->  1
-expx033 exp -0.00000000   ->  1
-expx034 exp -0E+100       ->  1
-expx035 exp -0E-100       ->  1
-
--- basic e=0, e=1, e=2, e=4, e>=8 cases
-precision:   7
-expx041 exp  1          ->  2.718282  Inexact Rounded
-expx042 exp -1          ->  0.3678794 Inexact Rounded
-expx043 exp  10         ->  22026.47  Inexact Rounded
-expx044 exp -10         ->  0.00004539993 Inexact Rounded
-expx045 exp  100        ->  2.688117E+43  Inexact Rounded
-expx046 exp -100        ->  3.720076E-44  Inexact Rounded
-expx047 exp  1000       ->  Infinity Overflow Inexact Rounded
-expx048 exp -1000       ->  0E-389 Underflow Inexact Rounded Clamped Subnormal
-expx049 exp  100000000  ->  Infinity Overflow Inexact Rounded
-expx050 exp -100000000  ->  0E-389 Underflow Inexact Rounded Clamped Subnormal
-
--- miscellanea
--- similar to 'VF bug' test, at 17, but with last digit corrected for decimal
-precision: 16
-expx055 exp -5.42410311287441459172E+2 -> 2.717658486884572E-236 Inexact Rounded
---  result from NetRexx/Java prototype -> 2.7176584868845721117677929628617246054459644711108E-236
---   result from Rexx (series) version -> 2.717658486884572111767792962861724605446E-236
-precision: 17
-expx056 exp -5.42410311287441459172E+2 -> 2.7176584868845721E-236 Inexact Rounded
-precision: 18
-expx057 exp -5.42410311287441459172E+2 -> 2.71765848688457211E-236 Inexact Rounded
-precision: 19
-expx058 exp -5.42410311287441459172E+2 -> 2.717658486884572112E-236 Inexact Rounded
-precision: 20
-expx059 exp -5.42410311287441459172E+2 -> 2.7176584868845721118E-236 Inexact Rounded
-
--- rounding in areas of ..500.., ..499.., ..100.., ..999.. sequences
-precision:   50
-expx101 exp -9E-8 -> 0.99999991000000404999987850000273374995079250073811 Inexact Rounded
-precision:   31
-expx102 exp -9E-8 -> 0.9999999100000040499998785000027 Inexact Rounded
-precision:   30
-expx103 exp -9E-8 -> 0.999999910000004049999878500003  Inexact Rounded
-precision:   29
-expx104 exp -9E-8 -> 0.99999991000000404999987850000   Inexact Rounded
-precision:   28
-expx105 exp -9E-8 -> 0.9999999100000040499998785000    Inexact Rounded
-precision:   27
-expx106 exp -9E-8 -> 0.999999910000004049999878500     Inexact Rounded
-precision:   26
-expx107 exp -9E-8 -> 0.99999991000000404999987850      Inexact Rounded
-precision:   25
-expx108 exp -9E-8 -> 0.9999999100000040499998785       Inexact Rounded
-precision:   24
-expx109 exp -9E-8 -> 0.999999910000004049999879        Inexact Rounded
-precision:   23
-expx110 exp -9E-8 -> 0.99999991000000404999988         Inexact Rounded
-precision:   22
-expx111 exp -9E-8 -> 0.9999999100000040499999          Inexact Rounded
-precision:   21
-expx112 exp -9E-8 -> 0.999999910000004050000           Inexact Rounded
-precision:   20
-expx113 exp -9E-8 -> 0.99999991000000405000            Inexact Rounded
-precision:   19
-expx114 exp -9E-8 -> 0.9999999100000040500             Inexact Rounded
-precision:   18
-expx115 exp -9E-8 -> 0.999999910000004050              Inexact Rounded
-precision:   17
-expx116 exp -9E-8 -> 0.99999991000000405               Inexact Rounded
-precision:   16
-expx117 exp -9E-8 -> 0.9999999100000040                Inexact Rounded
-precision:   15
-expx118 exp -9E-8 -> 0.999999910000004                 Inexact Rounded
-precision:   14
-expx119 exp -9E-8 -> 0.99999991000000                  Inexact Rounded
-precision:   13
-expx120 exp -9E-8 -> 0.9999999100000                   Inexact Rounded
-precision:   12
-expx121 exp -9E-8 -> 0.999999910000                    Inexact Rounded
-precision:   11
-expx122 exp -9E-8 -> 0.99999991000                     Inexact Rounded
-precision:   10
-expx123 exp -9E-8 -> 0.9999999100                      Inexact Rounded
-precision:    9
-expx124 exp -9E-8 -> 0.999999910                       Inexact Rounded
-precision:    8
-expx125 exp -9E-8 -> 0.99999991                        Inexact Rounded
-precision:    7
-expx126 exp -9E-8 -> 0.9999999                         Inexact Rounded
-precision:    6
-expx127 exp -9E-8 -> 1.00000                           Inexact Rounded
-precision:    5
-expx128 exp -9E-8 -> 1.0000                            Inexact Rounded
-precision:    4
-expx129 exp -9E-8 -> 1.000                             Inexact Rounded
-precision:    3
-expx130 exp -9E-8 -> 1.00                              Inexact Rounded
-precision:    2
-expx131 exp -9E-8 -> 1.0                               Inexact Rounded
-precision:    1
-expx132 exp -9E-8 -> 1                                 Inexact Rounded
-
-
--- sanity checks, with iteration counts [normalized so 0<=|x|<1]
-precision:   50
-
-expx210 exp 0 -> 1
--- iterations: 2
-expx211 exp -1E-40 -> 0.99999999999999999999999999999999999999990000000000 Inexact Rounded
--- iterations: 8
-expx212 exp -9E-7 -> 0.99999910000040499987850002733749507925073811240510 Inexact Rounded
--- iterations: 6
-expx213 exp -9E-8 -> 0.99999991000000404999987850000273374995079250073811 Inexact Rounded
--- iterations: 15
-expx214 exp -0.003 -> 0.99700449550337297601206623409756091074177480489845 Inexact Rounded
--- iterations: 14
-expx215 exp -0.001 -> 0.99900049983337499166805535716765597470235590236008 Inexact Rounded
--- iterations: 26
-expx216 exp -0.1 -> 0.90483741803595957316424905944643662119470536098040 Inexact Rounded
--- iterations: 39
-expx217 exp -0.7 -> 0.49658530379140951470480009339752896170766716571182 Inexact Rounded
--- iterations: 41
-expx218 exp -0.9 -> 0.40656965974059911188345423964562598783370337617038 Inexact Rounded
--- iterations: 43
-expx219 exp -0.99 -> 0.37157669102204569053152411990820138691802885490501 Inexact Rounded
--- iterations: 26
-expx220 exp -1 -> 0.36787944117144232159552377016146086744581113103177 Inexact Rounded
--- iterations: 26
-expx221 exp -1.01 -> 0.36421897957152331975704629563734548959589139192482 Inexact Rounded
--- iterations: 27
-expx222 exp -1.1 -> 0.33287108369807955328884690643131552161247952156921 Inexact Rounded
--- iterations: 28
-expx223 exp -1.5 -> 0.22313016014842982893328047076401252134217162936108 Inexact Rounded
--- iterations: 30
-expx224 exp -2 -> 0.13533528323661269189399949497248440340763154590958 Inexact Rounded
--- iterations: 36
-expx225 exp -5 -> 0.0067379469990854670966360484231484242488495850273551 Inexact Rounded
--- iterations: 26
-expx226 exp -10 -> 0.000045399929762484851535591515560550610237918088866565 Inexact Rounded
--- iterations: 28
-expx227 exp -14 -> 8.3152871910356788406398514256526229460765836498457E-7 Inexact Rounded
--- iterations: 29
-expx228 exp -15 -> 3.0590232050182578837147949770228963937082078081856E-7 Inexact Rounded
--- iterations: 30
-expx233 exp 0 -> 1
--- iterations: 2
-expx234 exp 1E-40 -> 1.0000000000000000000000000000000000000001000000000 Inexact Rounded
--- iterations: 7
-expx235 exp 9E-7 -> 1.0000009000004050001215000273375049207507381125949 Inexact Rounded
--- iterations: 6
-expx236 exp 9E-8 -> 1.0000000900000040500001215000027337500492075007381 Inexact Rounded
--- iterations: 15
-expx237 exp 0.003 -> 1.0030045045033770260129340913489002053318727195619 Inexact Rounded
--- iterations: 13
-expx238 exp 0.001 -> 1.0010005001667083416680557539930583115630762005807 Inexact Rounded
--- iterations: 25
-expx239 exp 0.1 -> 1.1051709180756476248117078264902466682245471947375 Inexact Rounded
--- iterations: 38
-expx240 exp 0.7 -> 2.0137527074704765216245493885830652700175423941459 Inexact Rounded
--- iterations: 41
-expx241 exp 0.9 -> 2.4596031111569496638001265636024706954217723064401 Inexact Rounded
--- iterations: 42
-expx242 exp 0.99 -> 2.6912344723492622890998794040710139721802931841030 Inexact Rounded
--- iterations: 26
-expx243 exp 1 -> 2.7182818284590452353602874713526624977572470937000 Inexact Rounded
--- iterations: 26
-expx244 exp 1.01 -> 2.7456010150169164939897763166603876240737508195960 Inexact Rounded
--- iterations: 26
-expx245 exp 1.1 -> 3.0041660239464331120584079535886723932826810260163 Inexact Rounded
--- iterations: 28
-expx246 exp 1.5 -> 4.4816890703380648226020554601192758190057498683697 Inexact Rounded
--- iterations: 29
-expx247 exp 2 -> 7.3890560989306502272304274605750078131803155705518 Inexact Rounded
--- iterations: 36
-expx248 exp 5 -> 148.41315910257660342111558004055227962348766759388 Inexact Rounded
--- iterations: 26
-expx249 exp 10 -> 22026.465794806716516957900645284244366353512618557 Inexact Rounded
--- iterations: 28
-expx250 exp 14 -> 1202604.2841647767777492367707678594494124865433761 Inexact Rounded
--- iterations: 28
-expx251 exp 15 -> 3269017.3724721106393018550460917213155057385438200 Inexact Rounded
--- iterations: 29
-
--- a biggie [result verified 3 ways]
-precision: 250
-expx260 exp 1 -> 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668 Inexact Rounded
-
--- extreme range boundaries
-precision:   16
-maxExponent: 999999
-minExponent: -999999
--- Ntiny boundary
-expx290 exp  -2302618.022332529 -> 0E-1000014 Underflow Subnormal Inexact Rounded Clamped
-expx291 exp  -2302618.022332528 -> 1E-1000014 Underflow Subnormal Inexact Rounded
--- Nmax/10 and Nmax boundary
-expx292 exp  2302582.790408952 -> 9.999999993100277E+999998  Inexact Rounded
-expx293 exp  2302582.790408953 -> 1.000000000310028E+999999  Inexact Rounded
-expx294 exp  2302585.092993946 -> 9.999999003159870E+999999 Inexact Rounded
-expx295 exp  2302585.092994036 -> 9.999999903159821E+999999 Inexact Rounded
-expx296 exp  2302585.092994045 -> 9.999999993159820E+999999 Inexact Rounded
-expx297 exp  2302585.092994046 -> Infinity Overflow         Inexact Rounded
-
--- 0<-x<<1 effects
-precision:    30
-expx320 exp -4.9999999999999E-8 -> 0.999999950000001250000979166617 Inexact Rounded
-expx321 exp -5.0000000000000E-8 -> 0.999999950000001249999979166667 Inexact Rounded
-expx322 exp -5.0000000000001E-8 -> 0.999999950000001249998979166717 Inexact Rounded
-precision:    20
-expx323 exp -4.9999999999999E-8 -> 0.99999995000000125000 Inexact Rounded
-expx324 exp -5.0000000000000E-8 -> 0.99999995000000125000 Inexact Rounded
-expx325 exp -5.0000000000001E-8 -> 0.99999995000000125000 Inexact Rounded
-precision:    14
-expx326 exp -4.9999999999999E-8 -> 0.99999995000000 Inexact Rounded
-expx327 exp -5.0000000000000E-8 -> 0.99999995000000 Inexact Rounded
-expx328 exp -5.0000000000001E-8 -> 0.99999995000000 Inexact Rounded
--- overprecise and 0<-x<<1
-precision:    8
-expx330 exp -4.9999999999999E-8 -> 0.99999995       Inexact Rounded
-expx331 exp -5.0000000000000E-8 -> 0.99999995       Inexact Rounded
-expx332 exp -5.0000000000001E-8 -> 0.99999995       Inexact Rounded
-precision:    7
-expx333 exp -4.9999999999999E-8 -> 1.000000         Inexact Rounded
-expx334 exp -5.0000000000000E-8 -> 1.000000         Inexact Rounded
-expx335 exp -5.0000000000001E-8 -> 1.000000         Inexact Rounded
-precision:    3
-expx336 exp -4.9999999999999E-8 -> 1.00             Inexact Rounded
-expx337 exp -5.0000000000000E-8 -> 1.00             Inexact Rounded
-expx338 exp -5.0000000000001E-8 -> 1.00             Inexact Rounded
-
--- 0<x<<1 effects
-precision:    30
-expx340 exp  4.9999999999999E-8 -> 1.00000005000000124999902083328  Inexact Rounded
-expx341 exp  5.0000000000000E-8 -> 1.00000005000000125000002083333  Inexact Rounded
-expx342 exp  5.0000000000001E-8 -> 1.00000005000000125000102083338  Inexact Rounded
-precision:    20
-expx343 exp  4.9999999999999E-8 -> 1.0000000500000012500  Inexact Rounded
-expx344 exp  5.0000000000000E-8 -> 1.0000000500000012500  Inexact Rounded
-expx345 exp  5.0000000000001E-8 -> 1.0000000500000012500  Inexact Rounded
-precision:    14
-expx346 exp  4.9999999999999E-8 -> 1.0000000500000  Inexact Rounded
-expx347 exp  5.0000000000000E-8 -> 1.0000000500000  Inexact Rounded
-expx348 exp  5.0000000000001E-8 -> 1.0000000500000  Inexact Rounded
--- overprecise and 0<x<<1
-precision:    8
-expx350 exp  4.9999999999999E-8 -> 1.0000001        Inexact Rounded
-expx351 exp  5.0000000000000E-8 -> 1.0000001        Inexact Rounded
-expx352 exp  5.0000000000001E-8 -> 1.0000001        Inexact Rounded
-precision:    7
-expx353 exp  4.9999999999999E-8 -> 1.000000         Inexact Rounded
-expx354 exp  5.0000000000000E-8 -> 1.000000         Inexact Rounded
-expx355 exp  5.0000000000001E-8 -> 1.000000         Inexact Rounded
-precision:    3
-expx356 exp  4.9999999999999E-8 -> 1.00             Inexact Rounded
-expx357 exp  5.0000000000000E-8 -> 1.00             Inexact Rounded
-expx358 exp  5.0000000000001E-8 -> 1.00             Inexact Rounded
-
--- cases near 1              --  1 2345678901234567890
-precision:    20
-expx401 exp 0.99999999999996  -> 2.7182818284589365041  Inexact Rounded
-expx402 exp 0.99999999999997  -> 2.7182818284589636869  Inexact Rounded
-expx403 exp 0.99999999999998  -> 2.7182818284589908697  Inexact Rounded
-expx404 exp 0.99999999999999  -> 2.7182818284590180525  Inexact Rounded
-expx405 exp 1.0000000000000   -> 2.7182818284590452354  Inexact Rounded
-expx406 exp 1.0000000000001   -> 2.7182818284593170635  Inexact Rounded
-expx407 exp 1.0000000000002   -> 2.7182818284595888917  Inexact Rounded
-precision:    14
-expx411 exp 0.99999999999996  -> 2.7182818284589  Inexact Rounded
-expx412 exp 0.99999999999997  -> 2.7182818284590  Inexact Rounded
-expx413 exp 0.99999999999998  -> 2.7182818284590  Inexact Rounded
-expx414 exp 0.99999999999999  -> 2.7182818284590  Inexact Rounded
-expx415 exp 1.0000000000000   -> 2.7182818284590  Inexact Rounded
-expx416 exp 1.0000000000001   -> 2.7182818284593  Inexact Rounded
-expx417 exp 1.0000000000002   -> 2.7182818284596  Inexact Rounded
--- overprecise...
-precision:    7
-expx421 exp 0.99999999999996  -> 2.718282         Inexact Rounded
-expx422 exp 0.99999999999997  -> 2.718282         Inexact Rounded
-expx423 exp 0.99999999999998  -> 2.718282         Inexact Rounded
-expx424 exp 0.99999999999999  -> 2.718282         Inexact Rounded
-expx425 exp 1.0000000000001   -> 2.718282         Inexact Rounded
-expx426 exp 1.0000000000002   -> 2.718282         Inexact Rounded
-expx427 exp 1.0000000000003   -> 2.718282         Inexact Rounded
-precision:    2
-expx431 exp 0.99999999999996  -> 2.7              Inexact Rounded
-expx432 exp 0.99999999999997  -> 2.7              Inexact Rounded
-expx433 exp 0.99999999999998  -> 2.7              Inexact Rounded
-expx434 exp 0.99999999999999  -> 2.7              Inexact Rounded
-expx435 exp 1.0000000000001   -> 2.7              Inexact Rounded
-expx436 exp 1.0000000000002   -> 2.7              Inexact Rounded
-expx437 exp 1.0000000000003   -> 2.7              Inexact Rounded
-
--- basics at low precisions
-precision: 3
-expx501 exp  -Infinity     -> 0
-expx502 exp  -10           -> 0.0000454   Inexact Rounded
-expx503 exp  -1            -> 0.368       Inexact Rounded
-expx504 exp   0            -> 1
-expx505 exp  -0            -> 1
-expx506 exp   1            -> 2.72        Inexact Rounded
-expx507 exp   0.693147181  -> 2.00        Inexact Rounded
-expx508 exp   10           -> 2.20E+4     Inexact Rounded
-expx509 exp  +Infinity     -> Infinity
-precision: 2
-expx511 exp  -Infinity     -> 0
-expx512 exp  -10           -> 0.000045    Inexact Rounded
-expx513 exp  -1            -> 0.37        Inexact Rounded
-expx514 exp   0            -> 1
-expx515 exp  -0            -> 1
-expx516 exp   1            -> 2.7         Inexact Rounded
-expx517 exp   0.693147181  -> 2.0         Inexact Rounded
-expx518 exp   10           -> 2.2E+4      Inexact Rounded
-expx519 exp  +Infinity     -> Infinity
-precision: 1
-expx521 exp  -Infinity     -> 0
-expx522 exp  -10           -> 0.00005     Inexact Rounded
-expx523 exp  -1            -> 0.4         Inexact Rounded
-expx524 exp   0            -> 1
-expx525 exp  -0            -> 1
-expx526 exp   1            -> 3           Inexact Rounded
-expx527 exp   0.693147181  -> 2           Inexact Rounded
-expx528 exp   10           -> 2E+4        Inexact Rounded
-expx529 exp  +Infinity     -> Infinity
-
--- overflows, including some overprecise borderlines
-precision:   7
-maxExponent: 384
-minExponent: -383
-expx701 exp  1000000000  -> Infinity Overflow Inexact Rounded
-expx702 exp  100000000   -> Infinity Overflow Inexact Rounded
-expx703 exp  10000000    -> Infinity Overflow Inexact Rounded
-expx704 exp  1000000     -> Infinity Overflow Inexact Rounded
-expx705 exp  100000      -> Infinity Overflow Inexact Rounded
-expx706 exp  10000       -> Infinity Overflow Inexact Rounded
-expx707 exp  1000        -> Infinity Overflow Inexact Rounded
-expx708 exp  886.4952608 -> Infinity Overflow Inexact Rounded
-expx709 exp  886.4952607 -> 9.999999E+384 Inexact Rounded
-expx710 exp  886.49527   -> Infinity Overflow Inexact Rounded
-expx711 exp  886.49526   -> 9.999992E+384 Inexact Rounded
-precision:   16
-expx721 exp  886.4952608027075883 -> Infinity Overflow Inexact Rounded
-expx722 exp  886.4952608027075882 -> 9.999999999999999E+384 Inexact Rounded
-expx723 exp  886.49526080270759   -> Infinity Overflow Inexact Rounded
-expx724 exp  886.49526080270758   -> 9.999999999999917E+384 Inexact Rounded
-expx725 exp  886.4952608027076    -> Infinity Overflow Inexact Rounded
-expx726 exp  886.4952608027075    -> 9.999999999999117E+384 Inexact Rounded
--- and by special request ...
-precision:   15
-expx731 exp  886.495260802708     -> Infinity Overflow Inexact Rounded
-expx732 exp  886.495260802707     -> 9.99999999999412E+384 Inexact Rounded
-expx733 exp  886.495260802706     -> 9.99999999998412E+384 Inexact Rounded
-maxExponent: 999
-minExponent: -999
-expx735 exp  2302.58509299405    -> Infinity Overflow Inexact Rounded
-expx736 exp  2302.58509299404    -> 9.99999999994316E+999 Inexact Rounded
-expx737 exp  2302.58509299403    -> 9.99999999984316E+999 Inexact Rounded
-
--- subnormals and underflows, including underflow-to-zero edge point
-precision:   7
-maxExponent: 384
-minExponent: -383
-expx751 exp -1000000000   ->  0E-389 Underflow Inexact Rounded Clamped Subnormal
-expx752 exp -100000000    ->  0E-389 Underflow Inexact Rounded Clamped Subnormal
-expx753 exp -10000000     ->  0E-389 Underflow Inexact Rounded Clamped Subnormal
-expx754 exp -1000000      ->  0E-389 Underflow Inexact Rounded Clamped Subnormal
-expx755 exp -100000       ->  0E-389 Underflow Inexact Rounded Clamped Subnormal
-expx756 exp -10000        ->  0E-389 Underflow Inexact Rounded Clamped Subnormal
-expx757 exp -1000         ->  0E-389 Underflow Inexact Rounded Clamped Subnormal
-expx758 exp -881.89009    ->  1.000001E-383 Inexact Rounded
-expx759 exp -881.8901     ->  9.99991E-384  Inexact Rounded Underflow Subnormal
-expx760 exp -885          ->  4.4605E-385   Inexact Rounded Underflow Subnormal
-expx761 exp -888          ->  2.221E-386    Inexact Rounded Underflow Subnormal
-expx762 exp -890          ->  3.01E-387     Inexact Rounded Underflow Subnormal
-expx763 exp -892.9        ->  1.7E-388      Inexact Rounded Underflow Subnormal
-expx764 exp -893          ->  1.5E-388      Inexact Rounded Underflow Subnormal
-expx765 exp -893.5        ->  9E-389        Inexact Rounded Underflow Subnormal
-expx766 exp -895.7056     ->  1E-389        Inexact Rounded Underflow Subnormal
-expx769 exp -895.8        ->  1E-389        Inexact Rounded Underflow Subnormal
-expx770 exp -895.73       ->  1E-389        Inexact Rounded Underflow Subnormal
-expx771 exp -896.3987     ->  1E-389        Inexact Rounded Underflow Subnormal
-expx772 exp -896.3988     ->  0E-389        Inexact Rounded Underflow Subnormal Clamped
-expx773 exp -898.0081     ->  0E-389        Inexact Rounded Underflow Subnormal Clamped
-expx774 exp -898.0082     ->  0E-389        Inexact Rounded Underflow Subnormal Clamped
-
--- special values
-maxexponent: 999
-minexponent: -999
-expx820 exp   Inf    -> Infinity
-expx821 exp  -Inf    -> 0
-expx822 exp   NaN    -> NaN
-expx823 exp  sNaN    -> NaN Invalid_operation
--- propagating NaNs
-expx824 exp  sNaN123 ->  NaN123 Invalid_operation
-expx825 exp -sNaN321 -> -NaN321 Invalid_operation
-expx826 exp   NaN456 ->  NaN456
-expx827 exp  -NaN654 -> -NaN654
-expx828 exp   NaN1   ->  NaN1
-
--- Invalid operations due to restrictions
--- [next two probably skipped by most test harnesses]
-precision: 100000000
-expx901 exp  -Infinity     -> NaN Invalid_context
-precision:  99999999
-expx902 exp  -Infinity     -> NaN Invalid_context
-
-precision: 9
-maxExponent:   1000000
-minExponent:   -999999
-expx903 exp  -Infinity     -> NaN Invalid_context
-maxExponent:    999999
-minExponent:   -999999
-expx904 exp  -Infinity     -> 0
-maxExponent:    999999
-minExponent:  -1000000
-expx905 exp  -Infinity     -> NaN Invalid_context
-maxExponent:    999999
-minExponent:   -999998
-expx906 exp  -Infinity     -> 0
-
---
-maxExponent: 384
-minExponent: -383
-precision:   16
-rounding:    half_even
-
--- Null test
-expx900 exp  # -> NaN Invalid_operation
-
-
--- Randoms P=50, within 0-999
-Precision: 50
-maxExponent: 384
-minExponent: -383
-expx1501 exp 656.35397950590285612266095596539934213943872885728  -> 1.1243757610640319783611178528839652672062820040314E+285 Inexact Rounded
-expx1502 exp 0.93620571093652800225038550600780322831236082781471 -> 2.5502865130986176689199711857825771311178046842009 Inexact Rounded
-expx1503 exp 0.00000000000000008340785856601514714183373874105791 -> 1.0000000000000000834078585660151506202691740252512 Inexact Rounded
-expx1504 exp 0.00009174057262887789625745574686545163168788456203 -> 1.0000917447809239005146722341251524081006051473273 Inexact Rounded
-expx1505 exp 33.909116897973797735657751591014926629051117541243  -> 532773181025002.03543618901306726495870476617232229 Inexact Rounded
-expx1506 exp 0.00000740470413004406592124575295278456936809587311 -> 1.0000074047315449333590066395670306135567889210814 Inexact Rounded
-expx1507 exp 0.00000000000124854922222108802453746922483071445492 -> 1.0000000000012485492222218674621176239911424968263 Inexact Rounded
-expx1508 exp 4.1793280674155659794286951159430651258356014391382  -> 65.321946520147199404199787811336860087975118278185 Inexact Rounded
-expx1509 exp 485.43595745460655893746179890255529919221550201686  -> 6.6398403920459617255950476953129377459845366585463E+210 Inexact Rounded
-expx1510 exp 0.00000000003547259806590856032527875157830328156597 -> 1.0000000000354725980665377129320589406715000685515 Inexact Rounded
-expx1511 exp 0.00000000000000759621497339104047930616478635042678 -> 1.0000000000000075962149733910693305471257715463887 Inexact Rounded
-expx1512 exp 9.7959168821760339304571595474480640286072720233796  -> 17960.261146042955179164303653412650751681436352437 Inexact Rounded
-expx1513 exp 0.00000000566642006258290526783901451194943164535581 -> 1.0000000056664200786370634609832438815665249347650 Inexact Rounded
-expx1514 exp 741.29888791134298194088827572374718940925820027354  -> 8.7501694006317332808128946666402622432064923198731E+321 Inexact Rounded
-expx1515 exp 032.75573003552517668808529099897153710887014947935  -> 168125196578678.17725841108617955904425345631092339 Inexact Rounded
-expx1516 exp 42.333700726429333308594265553422902463737399437644  -> 2428245675864172475.4681119493045657797309369672012 Inexact Rounded
-expx1517 exp 0.00000000000000559682616876491888197609158802835798 -> 1.0000000000000055968261687649345442076732739577049 Inexact Rounded
-expx1518 exp 0.00000000000080703688668280193584758300973549486312 -> 1.0000000000008070368866831275901158164321867914342 Inexact Rounded
-expx1519 exp 640.72396012796509482382712891709072570653606838251  -> 1.8318094990683394229304133068983914236995326891045E+278 Inexact Rounded
-expx1520 exp 0.00000000000000509458922167631071416948112219512224 -> 1.0000000000000050945892216763236915891499324358556 Inexact Rounded
-expx1521 exp 6.7670394314315206378625221583973414660727960241395  -> 868.73613012822031367806248697092884415119568271315 Inexact Rounded
-expx1522 exp 04.823217407412963506638267226891024138054783122548  -> 124.36457929588837129731821077586705505565904205366 Inexact Rounded
-expx1523 exp 193.51307878701196403991208482520115359690106143615  -> 1.1006830872854715677390914655452261550768957576034E+84 Inexact Rounded
-expx1524 exp 5.7307749038303650539200345901210497015617393970463  -> 308.20800743106843083522721523715645950574866495196 Inexact Rounded
-expx1525 exp 0.00000000000095217825199797965200541169123743500267 -> 1.0000000000009521782519984329737172007991390381273 Inexact Rounded
-expx1526 exp 0.00027131440949183370966393682617930153495028919140 -> 1.0002713512185751022906058160480606598754913607364 Inexact Rounded
-expx1527 exp 0.00000000064503059114680682343002315662069272707123 -> 1.0000000006450305913548390552323517403613135496633 Inexact Rounded
-expx1528 exp 0.00000000000000095616643506527288866235238548440593 -> 1.0000000000000009561664350652733457894781582009094 Inexact Rounded
-expx1529 exp 0.00000000000000086449942811678650244459550252743433 -> 1.0000000000000008644994281167868761242261096529986 Inexact Rounded
-expx1530 exp 0.06223488355635359965683053157729204988381887621850 -> 1.0642122813392406657789688931838919323826250630831 Inexact Rounded
-expx1531 exp 0.00000400710807804429435502657131912308680674057053 -> 1.0000040071161065125925620890019319832127863559260 Inexact Rounded
-expx1532 exp 85.522796894744576211573232055494551429297878413017  -> 13870073686404228452757799770251085177.853337368935 Inexact Rounded
-expx1533 exp 9.1496720811363678696938036379756663548353399954363  -> 9411.3537122832743386783597629161763057370034495157 Inexact Rounded
-expx1534 exp 8.2215705240788294472944382056330516738577785177942  -> 3720.3406813383076953899654701615084425598377758189 Inexact Rounded
-expx1535 exp 0.00000000015772064569640613142823203726821076239561 -> 1.0000000001577206457088440324683315788358926129830 Inexact Rounded
-expx1536 exp 0.58179346473959531432624153576883440625538017532480 -> 1.7892445018275360163797022372655837188423194863605 Inexact Rounded
-expx1537 exp 33.555726197149525061455517784870570470833498096559  -> 374168069896324.62578073148993526626307095854407952 Inexact Rounded
-expx1538 exp 9.7898079803906215094140010009583375537259810398659  -> 17850.878119912208888217100998019986634620368538426 Inexact Rounded
-expx1539 exp 89.157697327174521542502447953032536541038636966347  -> 525649152320166503771224149330448089550.67293829227 Inexact Rounded
-expx1540 exp 25.022947600123328912029051897171319573322888514885  -> 73676343442.952517824345431437683153304645851960524 Inexact Rounded
-
--- exp(1) at 34
-Precision: 34
-expx1200 exp 1 -> 2.718281828459045235360287471352662 Inexact Rounded
-
--- Randoms P=34, within 0-999
-Precision: 34
-maxExponent: 6144
-minExponent: -6143
-expx1201 exp 309.5948855821510212996700645087188  -> 2.853319692901387521201738015050724E+134 Inexact Rounded
-expx1202 exp 9.936543068706211420422803962680164  -> 20672.15839203171877476511093276022 Inexact Rounded
-expx1203 exp 6.307870323881505684429839491707908  -> 548.8747777054637296137277391754665 Inexact Rounded
-expx1204 exp 0.0003543281389438420535201308282503 -> 1.000354390920573746164733350843155 Inexact Rounded
-expx1205 exp 0.0000037087453363918375598394920229 -> 1.000003708752213796324841920189323 Inexact Rounded
-expx1206 exp 0.0020432312687512438040222444116585 -> 1.002045320088164826013561630975308 Inexact Rounded
-expx1207 exp 6.856313340032177672550343216129586  -> 949.8587981604144147983589660524396 Inexact Rounded
-expx1208 exp 0.0000000000402094928333815643326418 -> 1.000000000040209492834189965989612 Inexact Rounded
-expx1209 exp 0.0049610784722412117632647003545839 -> 1.004973404997901987039589029277833 Inexact Rounded
-expx1210 exp 0.0000891471883724066909746786702686 -> 1.000089151162101085412780088266699 Inexact Rounded
-expx1211 exp 08.59979170376061890684723211112566  -> 5430.528314920905714615339273738097 Inexact Rounded
-expx1212 exp 9.473117039341003854872778112752590  -> 13005.36234331224953460055897913917 Inexact Rounded
-expx1213 exp 0.0999060724692207648429969999310118 -> 1.105067116975190602296052700726802 Inexact Rounded
-expx1214 exp 0.0000000927804533555877884082269247 -> 1.000000092780457659694183954740772 Inexact Rounded
-expx1215 exp 0.0376578583872889916298772818265677 -> 1.038375900489771946477857818447556 Inexact Rounded
-expx1216 exp 261.6896411697539524911536116712307  -> 4.470613562127465095241600174941460E+113 Inexact Rounded
-expx1217 exp 0.0709997423269162980875824213889626 -> 1.073580949235407949417814485533172 Inexact Rounded
-expx1218 exp 0.0000000444605583295169895235658731 -> 1.000000044460559317887627657593900 Inexact Rounded
-expx1219 exp 0.0000021224072854777512281369815185 -> 1.000002122409537785687390631070906 Inexact Rounded
-expx1220 exp 547.5174462574156885473558485475052  -> 6.078629247383807942612114579728672E+237 Inexact Rounded
-expx1221 exp 0.0000009067598041615192002339844670 -> 1.000000906760215268314680115374387 Inexact Rounded
-expx1222 exp 0.0316476500308065365803455533244603 -> 1.032153761880187977658387961769034 Inexact Rounded
-expx1223 exp 84.46160530377645101833996706384473  -> 4.799644995897968383503269871697856E+36 Inexact Rounded
-expx1224 exp 0.0000000000520599740290848018904145 -> 1.000000000052059974030439922338393 Inexact Rounded
-expx1225 exp 0.0000006748530640093620665651726708 -> 1.000000674853291722742292331812997 Inexact Rounded
-expx1226 exp 0.0000000116853119761042020507916169 -> 1.000000011685312044377460306165203 Inexact Rounded
-expx1227 exp 0.0022593818094258636727616886693280 -> 1.002261936135876893707094845543461 Inexact Rounded
-expx1228 exp 0.0029398857673478912249856509667517 -> 1.002944211469495086813087651287012 Inexact Rounded
-expx1229 exp 0.7511480029928802775376270557636963 -> 2.119431734510320169806976569366789 Inexact Rounded
-expx1230 exp 174.9431952176750671150886423048447  -> 9.481222305374955011464619468044051E+75 Inexact Rounded
-expx1231 exp 0.0000810612451694136129199895164424 -> 1.000081064530720924186615149646920 Inexact Rounded
-expx1232 exp 51.06888989702669288180946272499035  -> 15098613888619165073959.89896018749 Inexact Rounded
-expx1233 exp 0.0000000005992887599437093651494510 -> 1.000000000599288760123282874082758 Inexact Rounded
-expx1234 exp 714.8549046761054856311108828903972  -> 2.867744544891081117381595080480784E+310 Inexact Rounded
-expx1235 exp 0.0000000004468247802990643645607110 -> 1.000000000446824780398890556720233 Inexact Rounded
-expx1236 exp 831.5818151589890366323551672043709  -> 1.417077409182624969435938062261655E+361 Inexact Rounded
-expx1237 exp 0.0000000006868323825179605747108044 -> 1.000000000686832382753829935602454 Inexact Rounded
-expx1238 exp 0.0000001306740266408976840228440255 -> 1.000000130674035178748675187648098 Inexact Rounded
-expx1239 exp 0.3182210609022267704811502412335163 -> 1.374680115667798185758927247894859 Inexact Rounded
-expx1240 exp 0.0147741234179104437440264644295501 -> 1.014883800239950682628277534839222 Inexact Rounded
-
--- Randoms P=16, within 0-99
-Precision: 16
-maxExponent: 384
-minExponent: -383
-expx1101 exp 8.473011527013724  -> 4783.900643969246 Inexact Rounded
-expx1102 exp 0.0000055753022764 -> 1.000005575317818 Inexact Rounded
-expx1103 exp 0.0000323474114482 -> 1.000032347934631 Inexact Rounded
-expx1104 exp 64.54374138544166  -> 1.073966476173531E+28 Inexact Rounded
-expx1105 exp 90.47203246416569  -> 1.956610887250643E+39 Inexact Rounded
-expx1106 exp 9.299931532342757  -> 10937.27033325227 Inexact Rounded
-expx1107 exp 8.759678437852203  -> 6372.062234495381 Inexact Rounded
-expx1108 exp 0.0000931755127172 -> 1.000093179853690 Inexact Rounded
-expx1109 exp 0.0000028101158373 -> 1.000002810119786 Inexact Rounded
-expx1110 exp 0.0000008008130919 -> 1.000000800813413 Inexact Rounded
-expx1111 exp 8.339771722299049  -> 4187.133803081878 Inexact Rounded
-expx1112 exp 0.0026140497995474 -> 1.002617469406750 Inexact Rounded
-expx1113 exp 0.7478033356261771 -> 2.112354781975418 Inexact Rounded
-expx1114 exp 51.77663761827966  -> 3.064135801120365E+22 Inexact Rounded
-expx1115 exp 0.1524989783061012 -> 1.164741272084955 Inexact Rounded
-expx1116 exp 0.0066298798669219 -> 1.006651906170791 Inexact Rounded
-expx1117 exp 9.955141865534960  -> 21060.23334287038 Inexact Rounded
-expx1118 exp 92.34503059198483  -> 1.273318993481226E+40 Inexact Rounded
-expx1119 exp 0.0000709388677346 -> 1.000070941383956 Inexact Rounded
-expx1120 exp 79.12883036433204  -> 2.318538899389243E+34 Inexact Rounded
-expx1121 exp 0.0000090881548873 -> 1.000009088196185 Inexact Rounded
-expx1122 exp 0.0424828809603411 -> 1.043398194245720 Inexact Rounded
-expx1123 exp 0.8009035891427416 -> 2.227552811933310 Inexact Rounded
-expx1124 exp 8.825786167283102  -> 6807.540455289995 Inexact Rounded
-expx1125 exp 1.535457249746275  -> 4.643448260146849 Inexact Rounded
-expx1126 exp 69.02254254355800  -> 9.464754500670653E+29 Inexact Rounded
-expx1127 exp 0.0007050554368713 -> 1.000705304046880 Inexact Rounded
-expx1128 exp 0.0000081206549504 -> 1.000008120687923 Inexact Rounded
-expx1129 exp 0.621774854641137  -> 1.862230298554903 Inexact Rounded
-expx1130 exp 3.847629031404354  -> 46.88177613568203 Inexact Rounded
-expx1131 exp 24.81250184697732  -> 59694268456.19966 Inexact Rounded
-expx1132 exp 5.107546500516044  -> 165.2643809755670 Inexact Rounded
-expx1133 exp 79.17810943951986  -> 2.435656372541360E+34 Inexact Rounded
-expx1134 exp 0.0051394695667015 -> 1.005152699295301 Inexact Rounded
-expx1135 exp 57.44504488501725  -> 8.872908566929688E+24 Inexact Rounded
-expx1136 exp 0.0000508388968036 -> 1.000050840189122 Inexact Rounded
-expx1137 exp 69.71309932148997  -> 1.888053740693541E+30 Inexact Rounded
-expx1138 exp 0.0064183412981502 -> 1.006438982988835 Inexact Rounded
-expx1139 exp 9.346991220814677  -> 11464.27802035082 Inexact Rounded
-expx1140 exp 33.09087139999152  -> 235062229168763.5 Inexact Rounded
-
--- Randoms P=7, within 0-9
-Precision: 7
-maxExponent: 96
-minExponent: -95
-expx1001 exp 2.395441  -> 10.97304 Inexact Rounded
-expx1002 exp 0.6406779 -> 1.897767 Inexact Rounded
-expx1003 exp 0.5618218 -> 1.753865 Inexact Rounded
-expx1004 exp 3.055120  -> 21.22373 Inexact Rounded
-expx1005 exp 1.536792  -> 4.649650 Inexact Rounded
-expx1006 exp 0.0801591 -> 1.083459 Inexact Rounded
-expx1007 exp 0.0966875 -> 1.101516 Inexact Rounded
-expx1008 exp 0.0646761 -> 1.066813 Inexact Rounded
-expx1009 exp 0.0095670 -> 1.009613 Inexact Rounded
-expx1010 exp 2.956859  -> 19.23745 Inexact Rounded
-expx1011 exp 7.504679  -> 1816.522 Inexact Rounded
-expx1012 exp 0.0045259 -> 1.004536 Inexact Rounded
-expx1013 exp 3.810071  -> 45.15364 Inexact Rounded
-expx1014 exp 1.502390  -> 4.492413 Inexact Rounded
-expx1015 exp 0.0321523 -> 1.032675 Inexact Rounded
-expx1016 exp 0.0057214 -> 1.005738 Inexact Rounded
-expx1017 exp 9.811445  -> 18241.33 Inexact Rounded
-expx1018 exp 3.245249  -> 25.66810 Inexact Rounded
-expx1019 exp 0.3189742 -> 1.375716 Inexact Rounded
-expx1020 exp 0.8621610 -> 2.368273 Inexact Rounded
-expx1021 exp 0.0122511 -> 1.012326 Inexact Rounded
-expx1022 exp 2.202088  -> 9.043877 Inexact Rounded
-expx1023 exp 8.778203  -> 6491.202 Inexact Rounded
-expx1024 exp 0.1896279 -> 1.208800 Inexact Rounded
-expx1025 exp 0.4510947 -> 1.570030 Inexact Rounded
-expx1026 exp 0.276413  -> 1.318392 Inexact Rounded
-expx1027 exp 4.490067  -> 89.12742 Inexact Rounded
-expx1028 exp 0.0439786 -> 1.044960 Inexact Rounded
-expx1029 exp 0.8168245 -> 2.263301 Inexact Rounded
-expx1030 exp 0.0391658 -> 1.039943 Inexact Rounded
-expx1031 exp 9.261816  -> 10528.24 Inexact Rounded
-expx1032 exp 9.611186  -> 14930.87 Inexact Rounded
-expx1033 exp 9.118125  -> 9119.087 Inexact Rounded
-expx1034 exp 9.469083  -> 12953.00 Inexact Rounded
-expx1035 exp 0.0499983 -> 1.051269 Inexact Rounded
-expx1036 exp 0.0050746 -> 1.005087 Inexact Rounded
-expx1037 exp 0.0014696 -> 1.001471 Inexact Rounded
-expx1038 exp 9.138494  -> 9306.739 Inexact Rounded
-expx1039 exp 0.0065436 -> 1.006565 Inexact Rounded
-expx1040 exp 0.7284803 -> 2.071930 Inexact Rounded
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/extra.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/extra.decTest
deleted file mode 100644
index 1da414c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/extra.decTest
+++ /dev/null
@@ -1,2817 +0,0 @@
-version: ?.??
-
-extended: 1
-rounding: half_even
-
--- testing folddown and clamping
-maxexponent: 9
-minexponent: -9
-precision: 6
-clamp: 1
-extr0000 apply 1E+11 -> Infinity Overflow Inexact Rounded
-extr0001 apply 1E+10 -> Infinity Overflow Inexact Rounded
-extr0002 apply 1E+9 -> 1.00000E+9 Clamped
-extr0003 apply 1E+8 -> 1.0000E+8 Clamped
-extr0004 apply 1E+7 -> 1.000E+7 Clamped
-extr0005 apply 1E+6 -> 1.00E+6 Clamped
-extr0006 apply 1E+5 -> 1.0E+5 Clamped
-extr0007 apply 1E+4 -> 1E+4
-extr0008 apply 1E+3 -> 1E+3
-extr0009 apply 1E+2 -> 1E+2
-extr0010 apply 1E+1 -> 1E+1
-extr0011 apply 1 -> 1
-extr0012 apply 1E-1 -> 0.1
-extr0013 apply 1E-2 -> 0.01
-extr0014 apply 1E-3 -> 0.001
-extr0015 apply 1E-4 -> 0.0001
-extr0016 apply 1E-5 -> 0.00001
-extr0017 apply 1E-6 -> 0.000001
-extr0018 apply 1E-7 -> 1E-7
-extr0019 apply 1E-8 -> 1E-8
-extr0020 apply 1E-9 -> 1E-9
-extr0021 apply 1E-10 -> 1E-10 Subnormal
-extr0022 apply 1E-11 -> 1E-11 Subnormal
-extr0023 apply 1E-12 -> 1E-12 Subnormal
-extr0024 apply 1E-13 -> 1E-13 Subnormal
-extr0025 apply 1E-14 -> 1E-14 Subnormal
-extr0026 apply 1E-15 -> 0E-14 Inexact Rounded Subnormal Underflow Clamped
-extr0027 apply 1E-16 -> 0E-14 Inexact Rounded Subnormal Underflow Clamped
-clamp: 0
-
--- large precision, small minimum and maximum exponent; in this case
--- it's possible that folddown is required on a subnormal result
-maxexponent: 9
-minexponent: -9
-precision: 24
-clamp: 1
-extr0100 apply 1E+11 -> Infinity Overflow Inexact Rounded
-extr0101 apply 1E+10 -> Infinity Overflow Inexact Rounded
-extr0102 apply 1E+9 -> 1000000000.00000000000000 Clamped
-extr0103 apply 1E+8 -> 100000000.00000000000000 Clamped
-extr0104 apply 1E+7 -> 10000000.00000000000000 Clamped
-extr0105 apply 1E+6 -> 1000000.00000000000000 Clamped
-extr0106 apply 1E+5 -> 100000.00000000000000 Clamped
-extr0107 apply 1E+4 -> 10000.00000000000000 Clamped
-extr0108 apply 1E+3 -> 1000.00000000000000 Clamped
-extr0109 apply 1E+2 -> 100.00000000000000 Clamped
-extr0110 apply 1E+1 -> 10.00000000000000 Clamped
-extr0111 apply 1 ->    1.00000000000000 Clamped
-extr0112 apply 1E-1 -> 0.10000000000000 Clamped
-extr0113 apply 1E-2 -> 0.01000000000000 Clamped
-extr0114 apply 1E-3 -> 0.00100000000000 Clamped
-extr0115 apply 1E-4 -> 0.00010000000000 Clamped
-extr0116 apply 1E-5 -> 0.00001000000000 Clamped
-extr0117 apply 1E-6 -> 0.00000100000000 Clamped
-extr0118 apply 1E-7 -> 1.0000000E-7 Clamped
-extr0119 apply 1E-8 -> 1.000000E-8 Clamped
-extr0120 apply 1E-9 -> 1.00000E-9 Clamped
-extr0121 apply 1E-10 -> 1.0000E-10 Subnormal Clamped
-extr0122 apply 1E-11 -> 1.000E-11 Subnormal Clamped
-extr0123 apply 1E-12 -> 1.00E-12 Subnormal Clamped
-extr0124 apply 1E-13 -> 1.0E-13 Subnormal Clamped
-extr0125 apply 1E-14 -> 1E-14 Subnormal
-extr0126 apply 1E-15 -> 1E-15 Subnormal
-extr0127 apply 1E-16 -> 1E-16 Subnormal
-extr0128 apply 1E-17 -> 1E-17 Subnormal
-extr0129 apply 1E-18 -> 1E-18 Subnormal
-extr0130 apply 1E-19 -> 1E-19 Subnormal
-extr0131 apply 1E-20 -> 1E-20 Subnormal
-extr0132 apply 1E-21 -> 1E-21 Subnormal
-extr0133 apply 1E-22 -> 1E-22 Subnormal
-extr0134 apply 1E-23 -> 1E-23 Subnormal
-extr0135 apply 1E-24 -> 1E-24 Subnormal
-extr0136 apply 1E-25 -> 1E-25 Subnormal
-extr0137 apply 1E-26 -> 1E-26 Subnormal
-extr0138 apply 1E-27 -> 1E-27 Subnormal
-extr0139 apply 1E-28 -> 1E-28 Subnormal
-extr0140 apply 1E-29 -> 1E-29 Subnormal
-extr0141 apply 1E-30 -> 1E-30 Subnormal
-extr0142 apply 1E-31 -> 1E-31 Subnormal
-extr0143 apply 1E-32 -> 1E-32 Subnormal
-extr0144 apply 1E-33 -> 0E-32 Inexact Rounded Subnormal Underflow Clamped
-extr0145 apply 1E-34 -> 0E-32 Inexact Rounded Subnormal Underflow Clamped
-clamp: 0
-
--- some buggy addition cases from Python 2.5.x
-maxexponent: 999
-minexponent: -999
-precision: 6
-extr1000 add 0E+1000 0E+2000 -> 0E+999 Clamped
-extr1001 add 0E+1004 0E+1001 -> 0E+999 Clamped
-clamp: 1
-extr1002 add 0E+1000 0E+1000 -> 0E+994 Clamped
-clamp: 0
-extr1003 add 0E+1000 0E-1005 -> 0E-1004 Clamped
-extr1004 add 0E-1006 0 -> 0E-1004 Clamped
-extr1005 add 1E+1000 -1E+1000 -> 0E+999 Clamped
-extr1006 add -3.1E+1004 3.1E+1004 -> 0E+999 Clamped
-clamp: 1
-extr1007 add 1E+998 -1E+998 -> 0E+994 Clamped
-clamp: 0
-extr1008 add 2E-1005 -2E-1005 -> 0E-1004 Clamped
-extr1009 add -3.1E-1005 3.1E-1005 -> 0E-1004 Clamped
-
-precision: 3
-extr1010 add 99949.9 0.200000 -> 1.00E+5 Inexact Rounded
-extr1011 add 99949.9 0.100000 -> 1.00E+5 Inexact Rounded
-extr1012 add 99849.9 0.200000 -> 9.99E+4 Inexact Rounded
-extr1013 add 99849.9 0.100000 -> 9.98E+4 Inexact Rounded
-extr1014 add 1.0149 0.00011 -> 1.02 Inexact Rounded
-extr1015 add 1.0149 0.00010 -> 1.02 Inexact Rounded
-extr1016 add 1.0149 0.00009 -> 1.01 Inexact Rounded
-extr1017 add 1.0049 0.00011 -> 1.01 Inexact Rounded
-extr1018 add 1.0049 0.00010 -> 1.00 Inexact Rounded
-extr1019 add 1.0049 0.00009 -> 1.00 Inexact Rounded
-rounding: down
-extr1020 add 99999.9 0.200000 -> 1.00E+5 Inexact Rounded
-extr1021 add 99999.8 0.200000 -> 1.00E+5 Rounded
-extr1022 add 99999.7 0.200000 -> 9.99E+4 Inexact Rounded
-rounding: half_even
-
--- a bug in _rescale caused the following to fail in Python 2.5.1
-maxexponent: 999
-minexponent: -999
-precision: 6
-extr1100 add 0E+1000 1E+1000 -> Infinity Overflow Inexact Rounded
-extr1101 remainder 1E+1000 2E+1000 -> Infinity Overflow Inexact Rounded
-
--- tests for scaleb in case where input precision > context precision.
--- Result should be rounded.  (This isn't totally clear from the
--- specification, but the treatment of underflow in the testcases
--- suggests that rounding should occur in general.  Furthermore, it's
--- the way that the reference implementation behaves.)
-maxexponent: 999
-minexponent: -999
-precision: 3
-extr1200 scaleb 1234 1 -> 1.23E+4 Inexact Rounded
-extr1201 scaleb 5678 0 -> 5.68E+3 Inexact Rounded
-extr1202 scaleb -9105 -1 -> -910 Inexact Rounded
-
--- Invalid operation from 0 * infinity in fma
--- takes precedence over a third-argument sNaN
-extr1300 fma 0 Inf sNaN123 -> NaN Invalid_operation
-extr1301 fma Inf 0 sNaN456 -> NaN Invalid_operation
-extr1302 fma 0E123 -Inf sNaN789 -> NaN Invalid_operation
-extr1302 fma -Inf 0E-456 sNaN148 -> NaN Invalid_operation
-
--- max/min/max_mag/min_mag bug in 2.5.2/2.6/3.0: max(NaN, finite) gave
--- incorrect answers when the finite number required rounding; similarly
--- for the other thre functions
-maxexponent: 999
-minexponent: -999
-precision: 6
-rounding: half_even
-extr1400 max NaN 1234567 -> 1.23457E+6 Inexact Rounded
-extr1401 max 3141590E-123 NaN1729 -> 3.14159E-117 Rounded
-extr1402 max -7.654321 -NaN -> -7.65432 Inexact Rounded
-extr1410 min -NaN -765432.1 -> -765432 Inexact Rounded
-extr1411 min 3141592 NaN -> 3.14159E+6 Inexact Rounded
-extr1420 max_mag 0.1111111 -NaN123 -> 0.111111 Inexact Rounded
-extr1421 max_mag NaN999999999 0.001234567 -> 0.00123457 Inexact Rounded
-extr1430 min_mag 9181716151 -NaN -> 9.18172E+9 Inexact Rounded
-extr1431 min_mag NaN4 1.818180E100 -> 1.81818E+100 Rounded
-
--- Issue #6794: when comparing NaNs using compare_total, payloads
--- should be compared as though positive integers; not
--- lexicographically as strings.
-extr1500 comparetotal NaN123 NaN45 -> 1
-extr1501 comparetotal sNaN123 sNaN45 -> 1
-extr1502 comparetotal -NaN123 -NaN45 -> -1
-extr1503 comparetotal -sNaN123 -sNaN45 -> -1
-extr1504 comparetotal NaN45 NaN123 -> -1
-extr1505 comparetotal sNaN45 sNaN123 -> -1
-extr1506 comparetotal -NaN45 -NaN123 -> 1
-extr1507 comparetotal -sNaN45 -sNaN123 -> 1
-
-extr1510 comparetotal -sNaN63450748854172416 -sNaN911993 -> -1
-extr1511 comparetotmag NaN1222222222222 -NaN999999 -> 1
-
--- Issue #7233: rotate and scale should truncate an argument
--- of length greater than the current precision.
-precision: 4
-extr1600 rotate 1234567 -5 -> NaN Invalid_operation
-extr1601 rotate 1234567 -4 -> 4567
-extr1602 rotate 1234567 -3 -> 5674
-extr1603 rotate 1234567 -2 -> 6745
-extr1604 rotate 1234567 -1 -> 7456
-extr1605 rotate 1234567 0 -> 4567
-extr1606 rotate 1234567 1 -> 5674
-extr1607 rotate 1234567 2 -> 6745
-extr1608 rotate 1234567 3 -> 7456
-extr1609 rotate 1234567 4 -> 4567
-extr1610 rotate 1234567 5 -> NaN Invalid_operation
-
-extr1650 shift 1234567 -5 -> NaN Invalid_operation
-extr1651 shift 1234567 -4 -> 0
-extr1652 shift 1234567 -3 -> 4
-extr1653 shift 1234567 -2 -> 45
-extr1654 shift 1234567 -1 -> 456
-extr1655 shift 1234567 0 -> 4567
-extr1656 shift 1234567 1 -> 5670
-extr1657 shift 1234567 2 -> 6700
-extr1658 shift 1234567 3 -> 7000
-extr1659 shift 1234567 4 -> 0
-extr1660 shift 1234567 5 -> NaN Invalid_operation
-
--- Cases where the power function was impossibly slow to determine that the
--- result is inexact.  Thanks Stefan Krah for identifying this problem.
-precision: 16
-maxExponent: 999999999
-minExponent: -999999999
-extr1700 power 10 1e-999999999 -> 1.000000000000000 Inexact Rounded
-extr1701 power 100.0 -557.71e-742888888 -> 1.000000000000000 Inexact Rounded
-extr1702 power 10 1e-100 -> 1.000000000000000 Inexact Rounded
-
--- A couple of interesting exact cases for power.  Note that the specification
--- requires these to be reported as Inexact.
-extr1710 power 1e375 56e-3 -> 1.000000000000000E+21 Inexact Rounded
-extr1711 power 10000 0.75 -> 1000.000000000000 Inexact Rounded
-extr1712 power 1e-24 0.875 -> 1.000000000000000E-21 Inexact Rounded
-
--- Tests for the is_* boolean operations
-precision: 9
-maxExponent: 999
-minExponent: -999
-
-bool0000 iscanonical 0E-2000 -> 1
-bool0001 iscanonical -0E-2000 -> 1
-bool0002 iscanonical 0E-1008 -> 1
-bool0003 iscanonical -0E-1008 -> 1
-bool0004 iscanonical 0E-1007 -> 1
-bool0005 iscanonical -0E-1007 -> 1
-bool0006 iscanonical 0E-1006 -> 1
-bool0007 iscanonical -0E-1006 -> 1
-bool0008 iscanonical 0E-1000 -> 1
-bool0009 iscanonical -0E-1000 -> 1
-bool0010 iscanonical 0E-999 -> 1
-bool0011 iscanonical -0E-999 -> 1
-bool0012 iscanonical 0E-998 -> 1
-bool0013 iscanonical -0E-998 -> 1
-bool0014 iscanonical 0E-100 -> 1
-bool0015 iscanonical -0E-100 -> 1
-bool0016 iscanonical 0.000000 -> 1
-bool0017 iscanonical -0.000000 -> 1
-bool0018 iscanonical 0.000 -> 1
-bool0019 iscanonical -0.000 -> 1
-bool0020 iscanonical 0.00 -> 1
-bool0021 iscanonical -0.00 -> 1
-bool0022 iscanonical 0.0 -> 1
-bool0023 iscanonical -0.0 -> 1
-bool0024 iscanonical 0 -> 1
-bool0025 iscanonical -0 -> 1
-bool0026 iscanonical 0E+1 -> 1
-bool0027 iscanonical -0E+1 -> 1
-bool0028 iscanonical 0E+2 -> 1
-bool0029 iscanonical -0E+2 -> 1
-bool0030 iscanonical 0E+3 -> 1
-bool0031 iscanonical -0E+3 -> 1
-bool0032 iscanonical 0E+6 -> 1
-bool0033 iscanonical -0E+6 -> 1
-bool0034 iscanonical 0E+100 -> 1
-bool0035 iscanonical -0E+100 -> 1
-bool0036 iscanonical 0E+990 -> 1
-bool0037 iscanonical -0E+990 -> 1
-bool0038 iscanonical 0E+991 -> 1
-bool0039 iscanonical -0E+991 -> 1
-bool0040 iscanonical 0E+992 -> 1
-bool0041 iscanonical -0E+992 -> 1
-bool0042 iscanonical 0E+998 -> 1
-bool0043 iscanonical -0E+998 -> 1
-bool0044 iscanonical 0E+999 -> 1
-bool0045 iscanonical -0E+999 -> 1
-bool0046 iscanonical 0E+1000 -> 1
-bool0047 iscanonical -0E+1000 -> 1
-bool0048 iscanonical 0E+2000 -> 1
-bool0049 iscanonical -0E+2000 -> 1
-bool0050 iscanonical 1E-2000 -> 1
-bool0051 iscanonical -1E-2000 -> 1
-bool0052 iscanonical 1E-1008 -> 1
-bool0053 iscanonical -1E-1008 -> 1
-bool0054 iscanonical 1E-1007 -> 1
-bool0055 iscanonical -1E-1007 -> 1
-bool0056 iscanonical 1E-1006 -> 1
-bool0057 iscanonical -1E-1006 -> 1
-bool0058 iscanonical 1E-1000 -> 1
-bool0059 iscanonical -1E-1000 -> 1
-bool0060 iscanonical 1E-999 -> 1
-bool0061 iscanonical -1E-999 -> 1
-bool0062 iscanonical 1E-998 -> 1
-bool0063 iscanonical -1E-998 -> 1
-bool0064 iscanonical 1E-100 -> 1
-bool0065 iscanonical -1E-100 -> 1
-bool0066 iscanonical 0.000001 -> 1
-bool0067 iscanonical -0.000001 -> 1
-bool0068 iscanonical 0.001 -> 1
-bool0069 iscanonical -0.001 -> 1
-bool0070 iscanonical 0.01 -> 1
-bool0071 iscanonical -0.01 -> 1
-bool0072 iscanonical 0.1 -> 1
-bool0073 iscanonical -0.1 -> 1
-bool0074 iscanonical 1 -> 1
-bool0075 iscanonical -1 -> 1
-bool0076 iscanonical 1E+1 -> 1
-bool0077 iscanonical -1E+1 -> 1
-bool0078 iscanonical 1E+2 -> 1
-bool0079 iscanonical -1E+2 -> 1
-bool0080 iscanonical 1E+3 -> 1
-bool0081 iscanonical -1E+3 -> 1
-bool0082 iscanonical 1E+6 -> 1
-bool0083 iscanonical -1E+6 -> 1
-bool0084 iscanonical 1E+100 -> 1
-bool0085 iscanonical -1E+100 -> 1
-bool0086 iscanonical 1E+990 -> 1
-bool0087 iscanonical -1E+990 -> 1
-bool0088 iscanonical 1E+991 -> 1
-bool0089 iscanonical -1E+991 -> 1
-bool0090 iscanonical 1E+992 -> 1
-bool0091 iscanonical -1E+992 -> 1
-bool0092 iscanonical 1E+998 -> 1
-bool0093 iscanonical -1E+998 -> 1
-bool0094 iscanonical 1E+999 -> 1
-bool0095 iscanonical -1E+999 -> 1
-bool0096 iscanonical 1E+1000 -> 1
-bool0097 iscanonical -1E+1000 -> 1
-bool0098 iscanonical 1E+2000 -> 1
-bool0099 iscanonical -1E+2000 -> 1
-bool0100 iscanonical 9E-2000 -> 1
-bool0101 iscanonical -9E-2000 -> 1
-bool0102 iscanonical 9E-1008 -> 1
-bool0103 iscanonical -9E-1008 -> 1
-bool0104 iscanonical 9E-1007 -> 1
-bool0105 iscanonical -9E-1007 -> 1
-bool0106 iscanonical 9E-1006 -> 1
-bool0107 iscanonical -9E-1006 -> 1
-bool0108 iscanonical 9E-1000 -> 1
-bool0109 iscanonical -9E-1000 -> 1
-bool0110 iscanonical 9E-999 -> 1
-bool0111 iscanonical -9E-999 -> 1
-bool0112 iscanonical 9E-998 -> 1
-bool0113 iscanonical -9E-998 -> 1
-bool0114 iscanonical 9E-100 -> 1
-bool0115 iscanonical -9E-100 -> 1
-bool0116 iscanonical 0.000009 -> 1
-bool0117 iscanonical -0.000009 -> 1
-bool0118 iscanonical 0.009 -> 1
-bool0119 iscanonical -0.009 -> 1
-bool0120 iscanonical 0.09 -> 1
-bool0121 iscanonical -0.09 -> 1
-bool0122 iscanonical 0.9 -> 1
-bool0123 iscanonical -0.9 -> 1
-bool0124 iscanonical 9 -> 1
-bool0125 iscanonical -9 -> 1
-bool0126 iscanonical 9E+1 -> 1
-bool0127 iscanonical -9E+1 -> 1
-bool0128 iscanonical 9E+2 -> 1
-bool0129 iscanonical -9E+2 -> 1
-bool0130 iscanonical 9E+3 -> 1
-bool0131 iscanonical -9E+3 -> 1
-bool0132 iscanonical 9E+6 -> 1
-bool0133 iscanonical -9E+6 -> 1
-bool0134 iscanonical 9E+100 -> 1
-bool0135 iscanonical -9E+100 -> 1
-bool0136 iscanonical 9E+990 -> 1
-bool0137 iscanonical -9E+990 -> 1
-bool0138 iscanonical 9E+991 -> 1
-bool0139 iscanonical -9E+991 -> 1
-bool0140 iscanonical 9E+992 -> 1
-bool0141 iscanonical -9E+992 -> 1
-bool0142 iscanonical 9E+998 -> 1
-bool0143 iscanonical -9E+998 -> 1
-bool0144 iscanonical 9E+999 -> 1
-bool0145 iscanonical -9E+999 -> 1
-bool0146 iscanonical 9E+1000 -> 1
-bool0147 iscanonical -9E+1000 -> 1
-bool0148 iscanonical 9E+2000 -> 1
-bool0149 iscanonical -9E+2000 -> 1
-bool0150 iscanonical 9.99999999E-2000 -> 1
-bool0151 iscanonical -9.99999999E-2000 -> 1
-bool0152 iscanonical 9.99999999E-1008 -> 1
-bool0153 iscanonical -9.99999999E-1008 -> 1
-bool0154 iscanonical 9.99999999E-1007 -> 1
-bool0155 iscanonical -9.99999999E-1007 -> 1
-bool0156 iscanonical 9.99999999E-1006 -> 1
-bool0157 iscanonical -9.99999999E-1006 -> 1
-bool0158 iscanonical 9.99999999E-1000 -> 1
-bool0159 iscanonical -9.99999999E-1000 -> 1
-bool0160 iscanonical 9.99999999E-999 -> 1
-bool0161 iscanonical -9.99999999E-999 -> 1
-bool0162 iscanonical 9.99999999E-998 -> 1
-bool0163 iscanonical -9.99999999E-998 -> 1
-bool0164 iscanonical 9.99999999E-100 -> 1
-bool0165 iscanonical -9.99999999E-100 -> 1
-bool0166 iscanonical 0.00000999999999 -> 1
-bool0167 iscanonical -0.00000999999999 -> 1
-bool0168 iscanonical 0.00999999999 -> 1
-bool0169 iscanonical -0.00999999999 -> 1
-bool0170 iscanonical 0.0999999999 -> 1
-bool0171 iscanonical -0.0999999999 -> 1
-bool0172 iscanonical 0.999999999 -> 1
-bool0173 iscanonical -0.999999999 -> 1
-bool0174 iscanonical 9.99999999 -> 1
-bool0175 iscanonical -9.99999999 -> 1
-bool0176 iscanonical 99.9999999 -> 1
-bool0177 iscanonical -99.9999999 -> 1
-bool0178 iscanonical 999.999999 -> 1
-bool0179 iscanonical -999.999999 -> 1
-bool0180 iscanonical 9999.99999 -> 1
-bool0181 iscanonical -9999.99999 -> 1
-bool0182 iscanonical 9999999.99 -> 1
-bool0183 iscanonical -9999999.99 -> 1
-bool0184 iscanonical 9.99999999E+100 -> 1
-bool0185 iscanonical -9.99999999E+100 -> 1
-bool0186 iscanonical 9.99999999E+990 -> 1
-bool0187 iscanonical -9.99999999E+990 -> 1
-bool0188 iscanonical 9.99999999E+991 -> 1
-bool0189 iscanonical -9.99999999E+991 -> 1
-bool0190 iscanonical 9.99999999E+992 -> 1
-bool0191 iscanonical -9.99999999E+992 -> 1
-bool0192 iscanonical 9.99999999E+998 -> 1
-bool0193 iscanonical -9.99999999E+998 -> 1
-bool0194 iscanonical 9.99999999E+999 -> 1
-bool0195 iscanonical -9.99999999E+999 -> 1
-bool0196 iscanonical 9.99999999E+1000 -> 1
-bool0197 iscanonical -9.99999999E+1000 -> 1
-bool0198 iscanonical 9.99999999E+2000 -> 1
-bool0199 iscanonical -9.99999999E+2000 -> 1
-bool0200 iscanonical Infinity -> 1
-bool0201 iscanonical -Infinity -> 1
-bool0202 iscanonical NaN -> 1
-bool0203 iscanonical -NaN -> 1
-bool0204 iscanonical NaN123 -> 1
-bool0205 iscanonical -NaN123 -> 1
-bool0206 iscanonical sNaN -> 1
-bool0207 iscanonical -sNaN -> 1
-bool0208 iscanonical sNaN123 -> 1
-bool0209 iscanonical -sNaN123 -> 1
-bool0210 isfinite 0E-2000 -> 1
-bool0211 isfinite -0E-2000 -> 1
-bool0212 isfinite 0E-1008 -> 1
-bool0213 isfinite -0E-1008 -> 1
-bool0214 isfinite 0E-1007 -> 1
-bool0215 isfinite -0E-1007 -> 1
-bool0216 isfinite 0E-1006 -> 1
-bool0217 isfinite -0E-1006 -> 1
-bool0218 isfinite 0E-1000 -> 1
-bool0219 isfinite -0E-1000 -> 1
-bool0220 isfinite 0E-999 -> 1
-bool0221 isfinite -0E-999 -> 1
-bool0222 isfinite 0E-998 -> 1
-bool0223 isfinite -0E-998 -> 1
-bool0224 isfinite 0E-100 -> 1
-bool0225 isfinite -0E-100 -> 1
-bool0226 isfinite 0.000000 -> 1
-bool0227 isfinite -0.000000 -> 1
-bool0228 isfinite 0.000 -> 1
-bool0229 isfinite -0.000 -> 1
-bool0230 isfinite 0.00 -> 1
-bool0231 isfinite -0.00 -> 1
-bool0232 isfinite 0.0 -> 1
-bool0233 isfinite -0.0 -> 1
-bool0234 isfinite 0 -> 1
-bool0235 isfinite -0 -> 1
-bool0236 isfinite 0E+1 -> 1
-bool0237 isfinite -0E+1 -> 1
-bool0238 isfinite 0E+2 -> 1
-bool0239 isfinite -0E+2 -> 1
-bool0240 isfinite 0E+3 -> 1
-bool0241 isfinite -0E+3 -> 1
-bool0242 isfinite 0E+6 -> 1
-bool0243 isfinite -0E+6 -> 1
-bool0244 isfinite 0E+100 -> 1
-bool0245 isfinite -0E+100 -> 1
-bool0246 isfinite 0E+990 -> 1
-bool0247 isfinite -0E+990 -> 1
-bool0248 isfinite 0E+991 -> 1
-bool0249 isfinite -0E+991 -> 1
-bool0250 isfinite 0E+992 -> 1
-bool0251 isfinite -0E+992 -> 1
-bool0252 isfinite 0E+998 -> 1
-bool0253 isfinite -0E+998 -> 1
-bool0254 isfinite 0E+999 -> 1
-bool0255 isfinite -0E+999 -> 1
-bool0256 isfinite 0E+1000 -> 1
-bool0257 isfinite -0E+1000 -> 1
-bool0258 isfinite 0E+2000 -> 1
-bool0259 isfinite -0E+2000 -> 1
-bool0260 isfinite 1E-2000 -> 1
-bool0261 isfinite -1E-2000 -> 1
-bool0262 isfinite 1E-1008 -> 1
-bool0263 isfinite -1E-1008 -> 1
-bool0264 isfinite 1E-1007 -> 1
-bool0265 isfinite -1E-1007 -> 1
-bool0266 isfinite 1E-1006 -> 1
-bool0267 isfinite -1E-1006 -> 1
-bool0268 isfinite 1E-1000 -> 1
-bool0269 isfinite -1E-1000 -> 1
-bool0270 isfinite 1E-999 -> 1
-bool0271 isfinite -1E-999 -> 1
-bool0272 isfinite 1E-998 -> 1
-bool0273 isfinite -1E-998 -> 1
-bool0274 isfinite 1E-100 -> 1
-bool0275 isfinite -1E-100 -> 1
-bool0276 isfinite 0.000001 -> 1
-bool0277 isfinite -0.000001 -> 1
-bool0278 isfinite 0.001 -> 1
-bool0279 isfinite -0.001 -> 1
-bool0280 isfinite 0.01 -> 1
-bool0281 isfinite -0.01 -> 1
-bool0282 isfinite 0.1 -> 1
-bool0283 isfinite -0.1 -> 1
-bool0284 isfinite 1 -> 1
-bool0285 isfinite -1 -> 1
-bool0286 isfinite 1E+1 -> 1
-bool0287 isfinite -1E+1 -> 1
-bool0288 isfinite 1E+2 -> 1
-bool0289 isfinite -1E+2 -> 1
-bool0290 isfinite 1E+3 -> 1
-bool0291 isfinite -1E+3 -> 1
-bool0292 isfinite 1E+6 -> 1
-bool0293 isfinite -1E+6 -> 1
-bool0294 isfinite 1E+100 -> 1
-bool0295 isfinite -1E+100 -> 1
-bool0296 isfinite 1E+990 -> 1
-bool0297 isfinite -1E+990 -> 1
-bool0298 isfinite 1E+991 -> 1
-bool0299 isfinite -1E+991 -> 1
-bool0300 isfinite 1E+992 -> 1
-bool0301 isfinite -1E+992 -> 1
-bool0302 isfinite 1E+998 -> 1
-bool0303 isfinite -1E+998 -> 1
-bool0304 isfinite 1E+999 -> 1
-bool0305 isfinite -1E+999 -> 1
-bool0306 isfinite 1E+1000 -> 1
-bool0307 isfinite -1E+1000 -> 1
-bool0308 isfinite 1E+2000 -> 1
-bool0309 isfinite -1E+2000 -> 1
-bool0310 isfinite 9E-2000 -> 1
-bool0311 isfinite -9E-2000 -> 1
-bool0312 isfinite 9E-1008 -> 1
-bool0313 isfinite -9E-1008 -> 1
-bool0314 isfinite 9E-1007 -> 1
-bool0315 isfinite -9E-1007 -> 1
-bool0316 isfinite 9E-1006 -> 1
-bool0317 isfinite -9E-1006 -> 1
-bool0318 isfinite 9E-1000 -> 1
-bool0319 isfinite -9E-1000 -> 1
-bool0320 isfinite 9E-999 -> 1
-bool0321 isfinite -9E-999 -> 1
-bool0322 isfinite 9E-998 -> 1
-bool0323 isfinite -9E-998 -> 1
-bool0324 isfinite 9E-100 -> 1
-bool0325 isfinite -9E-100 -> 1
-bool0326 isfinite 0.000009 -> 1
-bool0327 isfinite -0.000009 -> 1
-bool0328 isfinite 0.009 -> 1
-bool0329 isfinite -0.009 -> 1
-bool0330 isfinite 0.09 -> 1
-bool0331 isfinite -0.09 -> 1
-bool0332 isfinite 0.9 -> 1
-bool0333 isfinite -0.9 -> 1
-bool0334 isfinite 9 -> 1
-bool0335 isfinite -9 -> 1
-bool0336 isfinite 9E+1 -> 1
-bool0337 isfinite -9E+1 -> 1
-bool0338 isfinite 9E+2 -> 1
-bool0339 isfinite -9E+2 -> 1
-bool0340 isfinite 9E+3 -> 1
-bool0341 isfinite -9E+3 -> 1
-bool0342 isfinite 9E+6 -> 1
-bool0343 isfinite -9E+6 -> 1
-bool0344 isfinite 9E+100 -> 1
-bool0345 isfinite -9E+100 -> 1
-bool0346 isfinite 9E+990 -> 1
-bool0347 isfinite -9E+990 -> 1
-bool0348 isfinite 9E+991 -> 1
-bool0349 isfinite -9E+991 -> 1
-bool0350 isfinite 9E+992 -> 1
-bool0351 isfinite -9E+992 -> 1
-bool0352 isfinite 9E+998 -> 1
-bool0353 isfinite -9E+998 -> 1
-bool0354 isfinite 9E+999 -> 1
-bool0355 isfinite -9E+999 -> 1
-bool0356 isfinite 9E+1000 -> 1
-bool0357 isfinite -9E+1000 -> 1
-bool0358 isfinite 9E+2000 -> 1
-bool0359 isfinite -9E+2000 -> 1
-bool0360 isfinite 9.99999999E-2000 -> 1
-bool0361 isfinite -9.99999999E-2000 -> 1
-bool0362 isfinite 9.99999999E-1008 -> 1
-bool0363 isfinite -9.99999999E-1008 -> 1
-bool0364 isfinite 9.99999999E-1007 -> 1
-bool0365 isfinite -9.99999999E-1007 -> 1
-bool0366 isfinite 9.99999999E-1006 -> 1
-bool0367 isfinite -9.99999999E-1006 -> 1
-bool0368 isfinite 9.99999999E-1000 -> 1
-bool0369 isfinite -9.99999999E-1000 -> 1
-bool0370 isfinite 9.99999999E-999 -> 1
-bool0371 isfinite -9.99999999E-999 -> 1
-bool0372 isfinite 9.99999999E-998 -> 1
-bool0373 isfinite -9.99999999E-998 -> 1
-bool0374 isfinite 9.99999999E-100 -> 1
-bool0375 isfinite -9.99999999E-100 -> 1
-bool0376 isfinite 0.00000999999999 -> 1
-bool0377 isfinite -0.00000999999999 -> 1
-bool0378 isfinite 0.00999999999 -> 1
-bool0379 isfinite -0.00999999999 -> 1
-bool0380 isfinite 0.0999999999 -> 1
-bool0381 isfinite -0.0999999999 -> 1
-bool0382 isfinite 0.999999999 -> 1
-bool0383 isfinite -0.999999999 -> 1
-bool0384 isfinite 9.99999999 -> 1
-bool0385 isfinite -9.99999999 -> 1
-bool0386 isfinite 99.9999999 -> 1
-bool0387 isfinite -99.9999999 -> 1
-bool0388 isfinite 999.999999 -> 1
-bool0389 isfinite -999.999999 -> 1
-bool0390 isfinite 9999.99999 -> 1
-bool0391 isfinite -9999.99999 -> 1
-bool0392 isfinite 9999999.99 -> 1
-bool0393 isfinite -9999999.99 -> 1
-bool0394 isfinite 9.99999999E+100 -> 1
-bool0395 isfinite -9.99999999E+100 -> 1
-bool0396 isfinite 9.99999999E+990 -> 1
-bool0397 isfinite -9.99999999E+990 -> 1
-bool0398 isfinite 9.99999999E+991 -> 1
-bool0399 isfinite -9.99999999E+991 -> 1
-bool0400 isfinite 9.99999999E+992 -> 1
-bool0401 isfinite -9.99999999E+992 -> 1
-bool0402 isfinite 9.99999999E+998 -> 1
-bool0403 isfinite -9.99999999E+998 -> 1
-bool0404 isfinite 9.99999999E+999 -> 1
-bool0405 isfinite -9.99999999E+999 -> 1
-bool0406 isfinite 9.99999999E+1000 -> 1
-bool0407 isfinite -9.99999999E+1000 -> 1
-bool0408 isfinite 9.99999999E+2000 -> 1
-bool0409 isfinite -9.99999999E+2000 -> 1
-bool0410 isfinite Infinity -> 0
-bool0411 isfinite -Infinity -> 0
-bool0412 isfinite NaN -> 0
-bool0413 isfinite -NaN -> 0
-bool0414 isfinite NaN123 -> 0
-bool0415 isfinite -NaN123 -> 0
-bool0416 isfinite sNaN -> 0
-bool0417 isfinite -sNaN -> 0
-bool0418 isfinite sNaN123 -> 0
-bool0419 isfinite -sNaN123 -> 0
-bool0420 isinfinite 0E-2000 -> 0
-bool0421 isinfinite -0E-2000 -> 0
-bool0422 isinfinite 0E-1008 -> 0
-bool0423 isinfinite -0E-1008 -> 0
-bool0424 isinfinite 0E-1007 -> 0
-bool0425 isinfinite -0E-1007 -> 0
-bool0426 isinfinite 0E-1006 -> 0
-bool0427 isinfinite -0E-1006 -> 0
-bool0428 isinfinite 0E-1000 -> 0
-bool0429 isinfinite -0E-1000 -> 0
-bool0430 isinfinite 0E-999 -> 0
-bool0431 isinfinite -0E-999 -> 0
-bool0432 isinfinite 0E-998 -> 0
-bool0433 isinfinite -0E-998 -> 0
-bool0434 isinfinite 0E-100 -> 0
-bool0435 isinfinite -0E-100 -> 0
-bool0436 isinfinite 0.000000 -> 0
-bool0437 isinfinite -0.000000 -> 0
-bool0438 isinfinite 0.000 -> 0
-bool0439 isinfinite -0.000 -> 0
-bool0440 isinfinite 0.00 -> 0
-bool0441 isinfinite -0.00 -> 0
-bool0442 isinfinite 0.0 -> 0
-bool0443 isinfinite -0.0 -> 0
-bool0444 isinfinite 0 -> 0
-bool0445 isinfinite -0 -> 0
-bool0446 isinfinite 0E+1 -> 0
-bool0447 isinfinite -0E+1 -> 0
-bool0448 isinfinite 0E+2 -> 0
-bool0449 isinfinite -0E+2 -> 0
-bool0450 isinfinite 0E+3 -> 0
-bool0451 isinfinite -0E+3 -> 0
-bool0452 isinfinite 0E+6 -> 0
-bool0453 isinfinite -0E+6 -> 0
-bool0454 isinfinite 0E+100 -> 0
-bool0455 isinfinite -0E+100 -> 0
-bool0456 isinfinite 0E+990 -> 0
-bool0457 isinfinite -0E+990 -> 0
-bool0458 isinfinite 0E+991 -> 0
-bool0459 isinfinite -0E+991 -> 0
-bool0460 isinfinite 0E+992 -> 0
-bool0461 isinfinite -0E+992 -> 0
-bool0462 isinfinite 0E+998 -> 0
-bool0463 isinfinite -0E+998 -> 0
-bool0464 isinfinite 0E+999 -> 0
-bool0465 isinfinite -0E+999 -> 0
-bool0466 isinfinite 0E+1000 -> 0
-bool0467 isinfinite -0E+1000 -> 0
-bool0468 isinfinite 0E+2000 -> 0
-bool0469 isinfinite -0E+2000 -> 0
-bool0470 isinfinite 1E-2000 -> 0
-bool0471 isinfinite -1E-2000 -> 0
-bool0472 isinfinite 1E-1008 -> 0
-bool0473 isinfinite -1E-1008 -> 0
-bool0474 isinfinite 1E-1007 -> 0
-bool0475 isinfinite -1E-1007 -> 0
-bool0476 isinfinite 1E-1006 -> 0
-bool0477 isinfinite -1E-1006 -> 0
-bool0478 isinfinite 1E-1000 -> 0
-bool0479 isinfinite -1E-1000 -> 0
-bool0480 isinfinite 1E-999 -> 0
-bool0481 isinfinite -1E-999 -> 0
-bool0482 isinfinite 1E-998 -> 0
-bool0483 isinfinite -1E-998 -> 0
-bool0484 isinfinite 1E-100 -> 0
-bool0485 isinfinite -1E-100 -> 0
-bool0486 isinfinite 0.000001 -> 0
-bool0487 isinfinite -0.000001 -> 0
-bool0488 isinfinite 0.001 -> 0
-bool0489 isinfinite -0.001 -> 0
-bool0490 isinfinite 0.01 -> 0
-bool0491 isinfinite -0.01 -> 0
-bool0492 isinfinite 0.1 -> 0
-bool0493 isinfinite -0.1 -> 0
-bool0494 isinfinite 1 -> 0
-bool0495 isinfinite -1 -> 0
-bool0496 isinfinite 1E+1 -> 0
-bool0497 isinfinite -1E+1 -> 0
-bool0498 isinfinite 1E+2 -> 0
-bool0499 isinfinite -1E+2 -> 0
-bool0500 isinfinite 1E+3 -> 0
-bool0501 isinfinite -1E+3 -> 0
-bool0502 isinfinite 1E+6 -> 0
-bool0503 isinfinite -1E+6 -> 0
-bool0504 isinfinite 1E+100 -> 0
-bool0505 isinfinite -1E+100 -> 0
-bool0506 isinfinite 1E+990 -> 0
-bool0507 isinfinite -1E+990 -> 0
-bool0508 isinfinite 1E+991 -> 0
-bool0509 isinfinite -1E+991 -> 0
-bool0510 isinfinite 1E+992 -> 0
-bool0511 isinfinite -1E+992 -> 0
-bool0512 isinfinite 1E+998 -> 0
-bool0513 isinfinite -1E+998 -> 0
-bool0514 isinfinite 1E+999 -> 0
-bool0515 isinfinite -1E+999 -> 0
-bool0516 isinfinite 1E+1000 -> 0
-bool0517 isinfinite -1E+1000 -> 0
-bool0518 isinfinite 1E+2000 -> 0
-bool0519 isinfinite -1E+2000 -> 0
-bool0520 isinfinite 9E-2000 -> 0
-bool0521 isinfinite -9E-2000 -> 0
-bool0522 isinfinite 9E-1008 -> 0
-bool0523 isinfinite -9E-1008 -> 0
-bool0524 isinfinite 9E-1007 -> 0
-bool0525 isinfinite -9E-1007 -> 0
-bool0526 isinfinite 9E-1006 -> 0
-bool0527 isinfinite -9E-1006 -> 0
-bool0528 isinfinite 9E-1000 -> 0
-bool0529 isinfinite -9E-1000 -> 0
-bool0530 isinfinite 9E-999 -> 0
-bool0531 isinfinite -9E-999 -> 0
-bool0532 isinfinite 9E-998 -> 0
-bool0533 isinfinite -9E-998 -> 0
-bool0534 isinfinite 9E-100 -> 0
-bool0535 isinfinite -9E-100 -> 0
-bool0536 isinfinite 0.000009 -> 0
-bool0537 isinfinite -0.000009 -> 0
-bool0538 isinfinite 0.009 -> 0
-bool0539 isinfinite -0.009 -> 0
-bool0540 isinfinite 0.09 -> 0
-bool0541 isinfinite -0.09 -> 0
-bool0542 isinfinite 0.9 -> 0
-bool0543 isinfinite -0.9 -> 0
-bool0544 isinfinite 9 -> 0
-bool0545 isinfinite -9 -> 0
-bool0546 isinfinite 9E+1 -> 0
-bool0547 isinfinite -9E+1 -> 0
-bool0548 isinfinite 9E+2 -> 0
-bool0549 isinfinite -9E+2 -> 0
-bool0550 isinfinite 9E+3 -> 0
-bool0551 isinfinite -9E+3 -> 0
-bool0552 isinfinite 9E+6 -> 0
-bool0553 isinfinite -9E+6 -> 0
-bool0554 isinfinite 9E+100 -> 0
-bool0555 isinfinite -9E+100 -> 0
-bool0556 isinfinite 9E+990 -> 0
-bool0557 isinfinite -9E+990 -> 0
-bool0558 isinfinite 9E+991 -> 0
-bool0559 isinfinite -9E+991 -> 0
-bool0560 isinfinite 9E+992 -> 0
-bool0561 isinfinite -9E+992 -> 0
-bool0562 isinfinite 9E+998 -> 0
-bool0563 isinfinite -9E+998 -> 0
-bool0564 isinfinite 9E+999 -> 0
-bool0565 isinfinite -9E+999 -> 0
-bool0566 isinfinite 9E+1000 -> 0
-bool0567 isinfinite -9E+1000 -> 0
-bool0568 isinfinite 9E+2000 -> 0
-bool0569 isinfinite -9E+2000 -> 0
-bool0570 isinfinite 9.99999999E-2000 -> 0
-bool0571 isinfinite -9.99999999E-2000 -> 0
-bool0572 isinfinite 9.99999999E-1008 -> 0
-bool0573 isinfinite -9.99999999E-1008 -> 0
-bool0574 isinfinite 9.99999999E-1007 -> 0
-bool0575 isinfinite -9.99999999E-1007 -> 0
-bool0576 isinfinite 9.99999999E-1006 -> 0
-bool0577 isinfinite -9.99999999E-1006 -> 0
-bool0578 isinfinite 9.99999999E-1000 -> 0
-bool0579 isinfinite -9.99999999E-1000 -> 0
-bool0580 isinfinite 9.99999999E-999 -> 0
-bool0581 isinfinite -9.99999999E-999 -> 0
-bool0582 isinfinite 9.99999999E-998 -> 0
-bool0583 isinfinite -9.99999999E-998 -> 0
-bool0584 isinfinite 9.99999999E-100 -> 0
-bool0585 isinfinite -9.99999999E-100 -> 0
-bool0586 isinfinite 0.00000999999999 -> 0
-bool0587 isinfinite -0.00000999999999 -> 0
-bool0588 isinfinite 0.00999999999 -> 0
-bool0589 isinfinite -0.00999999999 -> 0
-bool0590 isinfinite 0.0999999999 -> 0
-bool0591 isinfinite -0.0999999999 -> 0
-bool0592 isinfinite 0.999999999 -> 0
-bool0593 isinfinite -0.999999999 -> 0
-bool0594 isinfinite 9.99999999 -> 0
-bool0595 isinfinite -9.99999999 -> 0
-bool0596 isinfinite 99.9999999 -> 0
-bool0597 isinfinite -99.9999999 -> 0
-bool0598 isinfinite 999.999999 -> 0
-bool0599 isinfinite -999.999999 -> 0
-bool0600 isinfinite 9999.99999 -> 0
-bool0601 isinfinite -9999.99999 -> 0
-bool0602 isinfinite 9999999.99 -> 0
-bool0603 isinfinite -9999999.99 -> 0
-bool0604 isinfinite 9.99999999E+100 -> 0
-bool0605 isinfinite -9.99999999E+100 -> 0
-bool0606 isinfinite 9.99999999E+990 -> 0
-bool0607 isinfinite -9.99999999E+990 -> 0
-bool0608 isinfinite 9.99999999E+991 -> 0
-bool0609 isinfinite -9.99999999E+991 -> 0
-bool0610 isinfinite 9.99999999E+992 -> 0
-bool0611 isinfinite -9.99999999E+992 -> 0
-bool0612 isinfinite 9.99999999E+998 -> 0
-bool0613 isinfinite -9.99999999E+998 -> 0
-bool0614 isinfinite 9.99999999E+999 -> 0
-bool0615 isinfinite -9.99999999E+999 -> 0
-bool0616 isinfinite 9.99999999E+1000 -> 0
-bool0617 isinfinite -9.99999999E+1000 -> 0
-bool0618 isinfinite 9.99999999E+2000 -> 0
-bool0619 isinfinite -9.99999999E+2000 -> 0
-bool0620 isinfinite Infinity -> 1
-bool0621 isinfinite -Infinity -> 1
-bool0622 isinfinite NaN -> 0
-bool0623 isinfinite -NaN -> 0
-bool0624 isinfinite NaN123 -> 0
-bool0625 isinfinite -NaN123 -> 0
-bool0626 isinfinite sNaN -> 0
-bool0627 isinfinite -sNaN -> 0
-bool0628 isinfinite sNaN123 -> 0
-bool0629 isinfinite -sNaN123 -> 0
-bool0630 isnan 0E-2000 -> 0
-bool0631 isnan -0E-2000 -> 0
-bool0632 isnan 0E-1008 -> 0
-bool0633 isnan -0E-1008 -> 0
-bool0634 isnan 0E-1007 -> 0
-bool0635 isnan -0E-1007 -> 0
-bool0636 isnan 0E-1006 -> 0
-bool0637 isnan -0E-1006 -> 0
-bool0638 isnan 0E-1000 -> 0
-bool0639 isnan -0E-1000 -> 0
-bool0640 isnan 0E-999 -> 0
-bool0641 isnan -0E-999 -> 0
-bool0642 isnan 0E-998 -> 0
-bool0643 isnan -0E-998 -> 0
-bool0644 isnan 0E-100 -> 0
-bool0645 isnan -0E-100 -> 0
-bool0646 isnan 0.000000 -> 0
-bool0647 isnan -0.000000 -> 0
-bool0648 isnan 0.000 -> 0
-bool0649 isnan -0.000 -> 0
-bool0650 isnan 0.00 -> 0
-bool0651 isnan -0.00 -> 0
-bool0652 isnan 0.0 -> 0
-bool0653 isnan -0.0 -> 0
-bool0654 isnan 0 -> 0
-bool0655 isnan -0 -> 0
-bool0656 isnan 0E+1 -> 0
-bool0657 isnan -0E+1 -> 0
-bool0658 isnan 0E+2 -> 0
-bool0659 isnan -0E+2 -> 0
-bool0660 isnan 0E+3 -> 0
-bool0661 isnan -0E+3 -> 0
-bool0662 isnan 0E+6 -> 0
-bool0663 isnan -0E+6 -> 0
-bool0664 isnan 0E+100 -> 0
-bool0665 isnan -0E+100 -> 0
-bool0666 isnan 0E+990 -> 0
-bool0667 isnan -0E+990 -> 0
-bool0668 isnan 0E+991 -> 0
-bool0669 isnan -0E+991 -> 0
-bool0670 isnan 0E+992 -> 0
-bool0671 isnan -0E+992 -> 0
-bool0672 isnan 0E+998 -> 0
-bool0673 isnan -0E+998 -> 0
-bool0674 isnan 0E+999 -> 0
-bool0675 isnan -0E+999 -> 0
-bool0676 isnan 0E+1000 -> 0
-bool0677 isnan -0E+1000 -> 0
-bool0678 isnan 0E+2000 -> 0
-bool0679 isnan -0E+2000 -> 0
-bool0680 isnan 1E-2000 -> 0
-bool0681 isnan -1E-2000 -> 0
-bool0682 isnan 1E-1008 -> 0
-bool0683 isnan -1E-1008 -> 0
-bool0684 isnan 1E-1007 -> 0
-bool0685 isnan -1E-1007 -> 0
-bool0686 isnan 1E-1006 -> 0
-bool0687 isnan -1E-1006 -> 0
-bool0688 isnan 1E-1000 -> 0
-bool0689 isnan -1E-1000 -> 0
-bool0690 isnan 1E-999 -> 0
-bool0691 isnan -1E-999 -> 0
-bool0692 isnan 1E-998 -> 0
-bool0693 isnan -1E-998 -> 0
-bool0694 isnan 1E-100 -> 0
-bool0695 isnan -1E-100 -> 0
-bool0696 isnan 0.000001 -> 0
-bool0697 isnan -0.000001 -> 0
-bool0698 isnan 0.001 -> 0
-bool0699 isnan -0.001 -> 0
-bool0700 isnan 0.01 -> 0
-bool0701 isnan -0.01 -> 0
-bool0702 isnan 0.1 -> 0
-bool0703 isnan -0.1 -> 0
-bool0704 isnan 1 -> 0
-bool0705 isnan -1 -> 0
-bool0706 isnan 1E+1 -> 0
-bool0707 isnan -1E+1 -> 0
-bool0708 isnan 1E+2 -> 0
-bool0709 isnan -1E+2 -> 0
-bool0710 isnan 1E+3 -> 0
-bool0711 isnan -1E+3 -> 0
-bool0712 isnan 1E+6 -> 0
-bool0713 isnan -1E+6 -> 0
-bool0714 isnan 1E+100 -> 0
-bool0715 isnan -1E+100 -> 0
-bool0716 isnan 1E+990 -> 0
-bool0717 isnan -1E+990 -> 0
-bool0718 isnan 1E+991 -> 0
-bool0719 isnan -1E+991 -> 0
-bool0720 isnan 1E+992 -> 0
-bool0721 isnan -1E+992 -> 0
-bool0722 isnan 1E+998 -> 0
-bool0723 isnan -1E+998 -> 0
-bool0724 isnan 1E+999 -> 0
-bool0725 isnan -1E+999 -> 0
-bool0726 isnan 1E+1000 -> 0
-bool0727 isnan -1E+1000 -> 0
-bool0728 isnan 1E+2000 -> 0
-bool0729 isnan -1E+2000 -> 0
-bool0730 isnan 9E-2000 -> 0
-bool0731 isnan -9E-2000 -> 0
-bool0732 isnan 9E-1008 -> 0
-bool0733 isnan -9E-1008 -> 0
-bool0734 isnan 9E-1007 -> 0
-bool0735 isnan -9E-1007 -> 0
-bool0736 isnan 9E-1006 -> 0
-bool0737 isnan -9E-1006 -> 0
-bool0738 isnan 9E-1000 -> 0
-bool0739 isnan -9E-1000 -> 0
-bool0740 isnan 9E-999 -> 0
-bool0741 isnan -9E-999 -> 0
-bool0742 isnan 9E-998 -> 0
-bool0743 isnan -9E-998 -> 0
-bool0744 isnan 9E-100 -> 0
-bool0745 isnan -9E-100 -> 0
-bool0746 isnan 0.000009 -> 0
-bool0747 isnan -0.000009 -> 0
-bool0748 isnan 0.009 -> 0
-bool0749 isnan -0.009 -> 0
-bool0750 isnan 0.09 -> 0
-bool0751 isnan -0.09 -> 0
-bool0752 isnan 0.9 -> 0
-bool0753 isnan -0.9 -> 0
-bool0754 isnan 9 -> 0
-bool0755 isnan -9 -> 0
-bool0756 isnan 9E+1 -> 0
-bool0757 isnan -9E+1 -> 0
-bool0758 isnan 9E+2 -> 0
-bool0759 isnan -9E+2 -> 0
-bool0760 isnan 9E+3 -> 0
-bool0761 isnan -9E+3 -> 0
-bool0762 isnan 9E+6 -> 0
-bool0763 isnan -9E+6 -> 0
-bool0764 isnan 9E+100 -> 0
-bool0765 isnan -9E+100 -> 0
-bool0766 isnan 9E+990 -> 0
-bool0767 isnan -9E+990 -> 0
-bool0768 isnan 9E+991 -> 0
-bool0769 isnan -9E+991 -> 0
-bool0770 isnan 9E+992 -> 0
-bool0771 isnan -9E+992 -> 0
-bool0772 isnan 9E+998 -> 0
-bool0773 isnan -9E+998 -> 0
-bool0774 isnan 9E+999 -> 0
-bool0775 isnan -9E+999 -> 0
-bool0776 isnan 9E+1000 -> 0
-bool0777 isnan -9E+1000 -> 0
-bool0778 isnan 9E+2000 -> 0
-bool0779 isnan -9E+2000 -> 0
-bool0780 isnan 9.99999999E-2000 -> 0
-bool0781 isnan -9.99999999E-2000 -> 0
-bool0782 isnan 9.99999999E-1008 -> 0
-bool0783 isnan -9.99999999E-1008 -> 0
-bool0784 isnan 9.99999999E-1007 -> 0
-bool0785 isnan -9.99999999E-1007 -> 0
-bool0786 isnan 9.99999999E-1006 -> 0
-bool0787 isnan -9.99999999E-1006 -> 0
-bool0788 isnan 9.99999999E-1000 -> 0
-bool0789 isnan -9.99999999E-1000 -> 0
-bool0790 isnan 9.99999999E-999 -> 0
-bool0791 isnan -9.99999999E-999 -> 0
-bool0792 isnan 9.99999999E-998 -> 0
-bool0793 isnan -9.99999999E-998 -> 0
-bool0794 isnan 9.99999999E-100 -> 0
-bool0795 isnan -9.99999999E-100 -> 0
-bool0796 isnan 0.00000999999999 -> 0
-bool0797 isnan -0.00000999999999 -> 0
-bool0798 isnan 0.00999999999 -> 0
-bool0799 isnan -0.00999999999 -> 0
-bool0800 isnan 0.0999999999 -> 0
-bool0801 isnan -0.0999999999 -> 0
-bool0802 isnan 0.999999999 -> 0
-bool0803 isnan -0.999999999 -> 0
-bool0804 isnan 9.99999999 -> 0
-bool0805 isnan -9.99999999 -> 0
-bool0806 isnan 99.9999999 -> 0
-bool0807 isnan -99.9999999 -> 0
-bool0808 isnan 999.999999 -> 0
-bool0809 isnan -999.999999 -> 0
-bool0810 isnan 9999.99999 -> 0
-bool0811 isnan -9999.99999 -> 0
-bool0812 isnan 9999999.99 -> 0
-bool0813 isnan -9999999.99 -> 0
-bool0814 isnan 9.99999999E+100 -> 0
-bool0815 isnan -9.99999999E+100 -> 0
-bool0816 isnan 9.99999999E+990 -> 0
-bool0817 isnan -9.99999999E+990 -> 0
-bool0818 isnan 9.99999999E+991 -> 0
-bool0819 isnan -9.99999999E+991 -> 0
-bool0820 isnan 9.99999999E+992 -> 0
-bool0821 isnan -9.99999999E+992 -> 0
-bool0822 isnan 9.99999999E+998 -> 0
-bool0823 isnan -9.99999999E+998 -> 0
-bool0824 isnan 9.99999999E+999 -> 0
-bool0825 isnan -9.99999999E+999 -> 0
-bool0826 isnan 9.99999999E+1000 -> 0
-bool0827 isnan -9.99999999E+1000 -> 0
-bool0828 isnan 9.99999999E+2000 -> 0
-bool0829 isnan -9.99999999E+2000 -> 0
-bool0830 isnan Infinity -> 0
-bool0831 isnan -Infinity -> 0
-bool0832 isnan NaN -> 1
-bool0833 isnan -NaN -> 1
-bool0834 isnan NaN123 -> 1
-bool0835 isnan -NaN123 -> 1
-bool0836 isnan sNaN -> 1
-bool0837 isnan -sNaN -> 1
-bool0838 isnan sNaN123 -> 1
-bool0839 isnan -sNaN123 -> 1
-bool0840 isnormal 0E-2000 -> 0
-bool0841 isnormal -0E-2000 -> 0
-bool0842 isnormal 0E-1008 -> 0
-bool0843 isnormal -0E-1008 -> 0
-bool0844 isnormal 0E-1007 -> 0
-bool0845 isnormal -0E-1007 -> 0
-bool0846 isnormal 0E-1006 -> 0
-bool0847 isnormal -0E-1006 -> 0
-bool0848 isnormal 0E-1000 -> 0
-bool0849 isnormal -0E-1000 -> 0
-bool0850 isnormal 0E-999 -> 0
-bool0851 isnormal -0E-999 -> 0
-bool0852 isnormal 0E-998 -> 0
-bool0853 isnormal -0E-998 -> 0
-bool0854 isnormal 0E-100 -> 0
-bool0855 isnormal -0E-100 -> 0
-bool0856 isnormal 0.000000 -> 0
-bool0857 isnormal -0.000000 -> 0
-bool0858 isnormal 0.000 -> 0
-bool0859 isnormal -0.000 -> 0
-bool0860 isnormal 0.00 -> 0
-bool0861 isnormal -0.00 -> 0
-bool0862 isnormal 0.0 -> 0
-bool0863 isnormal -0.0 -> 0
-bool0864 isnormal 0 -> 0
-bool0865 isnormal -0 -> 0
-bool0866 isnormal 0E+1 -> 0
-bool0867 isnormal -0E+1 -> 0
-bool0868 isnormal 0E+2 -> 0
-bool0869 isnormal -0E+2 -> 0
-bool0870 isnormal 0E+3 -> 0
-bool0871 isnormal -0E+3 -> 0
-bool0872 isnormal 0E+6 -> 0
-bool0873 isnormal -0E+6 -> 0
-bool0874 isnormal 0E+100 -> 0
-bool0875 isnormal -0E+100 -> 0
-bool0876 isnormal 0E+990 -> 0
-bool0877 isnormal -0E+990 -> 0
-bool0878 isnormal 0E+991 -> 0
-bool0879 isnormal -0E+991 -> 0
-bool0880 isnormal 0E+992 -> 0
-bool0881 isnormal -0E+992 -> 0
-bool0882 isnormal 0E+998 -> 0
-bool0883 isnormal -0E+998 -> 0
-bool0884 isnormal 0E+999 -> 0
-bool0885 isnormal -0E+999 -> 0
-bool0886 isnormal 0E+1000 -> 0
-bool0887 isnormal -0E+1000 -> 0
-bool0888 isnormal 0E+2000 -> 0
-bool0889 isnormal -0E+2000 -> 0
-bool0890 isnormal 1E-2000 -> 0
-bool0891 isnormal -1E-2000 -> 0
-bool0892 isnormal 1E-1008 -> 0
-bool0893 isnormal -1E-1008 -> 0
-bool0894 isnormal 1E-1007 -> 0
-bool0895 isnormal -1E-1007 -> 0
-bool0896 isnormal 1E-1006 -> 0
-bool0897 isnormal -1E-1006 -> 0
-bool0898 isnormal 1E-1000 -> 0
-bool0899 isnormal -1E-1000 -> 0
-bool0900 isnormal 1E-999 -> 1
-bool0901 isnormal -1E-999 -> 1
-bool0902 isnormal 1E-998 -> 1
-bool0903 isnormal -1E-998 -> 1
-bool0904 isnormal 1E-100 -> 1
-bool0905 isnormal -1E-100 -> 1
-bool0906 isnormal 0.000001 -> 1
-bool0907 isnormal -0.000001 -> 1
-bool0908 isnormal 0.001 -> 1
-bool0909 isnormal -0.001 -> 1
-bool0910 isnormal 0.01 -> 1
-bool0911 isnormal -0.01 -> 1
-bool0912 isnormal 0.1 -> 1
-bool0913 isnormal -0.1 -> 1
-bool0914 isnormal 1 -> 1
-bool0915 isnormal -1 -> 1
-bool0916 isnormal 1E+1 -> 1
-bool0917 isnormal -1E+1 -> 1
-bool0918 isnormal 1E+2 -> 1
-bool0919 isnormal -1E+2 -> 1
-bool0920 isnormal 1E+3 -> 1
-bool0921 isnormal -1E+3 -> 1
-bool0922 isnormal 1E+6 -> 1
-bool0923 isnormal -1E+6 -> 1
-bool0924 isnormal 1E+100 -> 1
-bool0925 isnormal -1E+100 -> 1
-bool0926 isnormal 1E+990 -> 1
-bool0927 isnormal -1E+990 -> 1
-bool0928 isnormal 1E+991 -> 1
-bool0929 isnormal -1E+991 -> 1
-bool0930 isnormal 1E+992 -> 1
-bool0931 isnormal -1E+992 -> 1
-bool0932 isnormal 1E+998 -> 1
-bool0933 isnormal -1E+998 -> 1
-bool0934 isnormal 1E+999 -> 1
-bool0935 isnormal -1E+999 -> 1
-bool0936 isnormal 1E+1000 -> 1
-bool0937 isnormal -1E+1000 -> 1
-bool0938 isnormal 1E+2000 -> 1
-bool0939 isnormal -1E+2000 -> 1
-bool0940 isnormal 9E-2000 -> 0
-bool0941 isnormal -9E-2000 -> 0
-bool0942 isnormal 9E-1008 -> 0
-bool0943 isnormal -9E-1008 -> 0
-bool0944 isnormal 9E-1007 -> 0
-bool0945 isnormal -9E-1007 -> 0
-bool0946 isnormal 9E-1006 -> 0
-bool0947 isnormal -9E-1006 -> 0
-bool0948 isnormal 9E-1000 -> 0
-bool0949 isnormal -9E-1000 -> 0
-bool0950 isnormal 9E-999 -> 1
-bool0951 isnormal -9E-999 -> 1
-bool0952 isnormal 9E-998 -> 1
-bool0953 isnormal -9E-998 -> 1
-bool0954 isnormal 9E-100 -> 1
-bool0955 isnormal -9E-100 -> 1
-bool0956 isnormal 0.000009 -> 1
-bool0957 isnormal -0.000009 -> 1
-bool0958 isnormal 0.009 -> 1
-bool0959 isnormal -0.009 -> 1
-bool0960 isnormal 0.09 -> 1
-bool0961 isnormal -0.09 -> 1
-bool0962 isnormal 0.9 -> 1
-bool0963 isnormal -0.9 -> 1
-bool0964 isnormal 9 -> 1
-bool0965 isnormal -9 -> 1
-bool0966 isnormal 9E+1 -> 1
-bool0967 isnormal -9E+1 -> 1
-bool0968 isnormal 9E+2 -> 1
-bool0969 isnormal -9E+2 -> 1
-bool0970 isnormal 9E+3 -> 1
-bool0971 isnormal -9E+3 -> 1
-bool0972 isnormal 9E+6 -> 1
-bool0973 isnormal -9E+6 -> 1
-bool0974 isnormal 9E+100 -> 1
-bool0975 isnormal -9E+100 -> 1
-bool0976 isnormal 9E+990 -> 1
-bool0977 isnormal -9E+990 -> 1
-bool0978 isnormal 9E+991 -> 1
-bool0979 isnormal -9E+991 -> 1
-bool0980 isnormal 9E+992 -> 1
-bool0981 isnormal -9E+992 -> 1
-bool0982 isnormal 9E+998 -> 1
-bool0983 isnormal -9E+998 -> 1
-bool0984 isnormal 9E+999 -> 1
-bool0985 isnormal -9E+999 -> 1
-bool0986 isnormal 9E+1000 -> 1
-bool0987 isnormal -9E+1000 -> 1
-bool0988 isnormal 9E+2000 -> 1
-bool0989 isnormal -9E+2000 -> 1
-bool0990 isnormal 9.99999999E-2000 -> 0
-bool0991 isnormal -9.99999999E-2000 -> 0
-bool0992 isnormal 9.99999999E-1008 -> 0
-bool0993 isnormal -9.99999999E-1008 -> 0
-bool0994 isnormal 9.99999999E-1007 -> 0
-bool0995 isnormal -9.99999999E-1007 -> 0
-bool0996 isnormal 9.99999999E-1006 -> 0
-bool0997 isnormal -9.99999999E-1006 -> 0
-bool0998 isnormal 9.99999999E-1000 -> 0
-bool0999 isnormal -9.99999999E-1000 -> 0
-bool1000 isnormal 9.99999999E-999 -> 1
-bool1001 isnormal -9.99999999E-999 -> 1
-bool1002 isnormal 9.99999999E-998 -> 1
-bool1003 isnormal -9.99999999E-998 -> 1
-bool1004 isnormal 9.99999999E-100 -> 1
-bool1005 isnormal -9.99999999E-100 -> 1
-bool1006 isnormal 0.00000999999999 -> 1
-bool1007 isnormal -0.00000999999999 -> 1
-bool1008 isnormal 0.00999999999 -> 1
-bool1009 isnormal -0.00999999999 -> 1
-bool1010 isnormal 0.0999999999 -> 1
-bool1011 isnormal -0.0999999999 -> 1
-bool1012 isnormal 0.999999999 -> 1
-bool1013 isnormal -0.999999999 -> 1
-bool1014 isnormal 9.99999999 -> 1
-bool1015 isnormal -9.99999999 -> 1
-bool1016 isnormal 99.9999999 -> 1
-bool1017 isnormal -99.9999999 -> 1
-bool1018 isnormal 999.999999 -> 1
-bool1019 isnormal -999.999999 -> 1
-bool1020 isnormal 9999.99999 -> 1
-bool1021 isnormal -9999.99999 -> 1
-bool1022 isnormal 9999999.99 -> 1
-bool1023 isnormal -9999999.99 -> 1
-bool1024 isnormal 9.99999999E+100 -> 1
-bool1025 isnormal -9.99999999E+100 -> 1
-bool1026 isnormal 9.99999999E+990 -> 1
-bool1027 isnormal -9.99999999E+990 -> 1
-bool1028 isnormal 9.99999999E+991 -> 1
-bool1029 isnormal -9.99999999E+991 -> 1
-bool1030 isnormal 9.99999999E+992 -> 1
-bool1031 isnormal -9.99999999E+992 -> 1
-bool1032 isnormal 9.99999999E+998 -> 1
-bool1033 isnormal -9.99999999E+998 -> 1
-bool1034 isnormal 9.99999999E+999 -> 1
-bool1035 isnormal -9.99999999E+999 -> 1
-bool1036 isnormal 9.99999999E+1000 -> 1
-bool1037 isnormal -9.99999999E+1000 -> 1
-bool1038 isnormal 9.99999999E+2000 -> 1
-bool1039 isnormal -9.99999999E+2000 -> 1
-bool1040 isnormal Infinity -> 0
-bool1041 isnormal -Infinity -> 0
-bool1042 isnormal NaN -> 0
-bool1043 isnormal -NaN -> 0
-bool1044 isnormal NaN123 -> 0
-bool1045 isnormal -NaN123 -> 0
-bool1046 isnormal sNaN -> 0
-bool1047 isnormal -sNaN -> 0
-bool1048 isnormal sNaN123 -> 0
-bool1049 isnormal -sNaN123 -> 0
-bool1050 isqnan 0E-2000 -> 0
-bool1051 isqnan -0E-2000 -> 0
-bool1052 isqnan 0E-1008 -> 0
-bool1053 isqnan -0E-1008 -> 0
-bool1054 isqnan 0E-1007 -> 0
-bool1055 isqnan -0E-1007 -> 0
-bool1056 isqnan 0E-1006 -> 0
-bool1057 isqnan -0E-1006 -> 0
-bool1058 isqnan 0E-1000 -> 0
-bool1059 isqnan -0E-1000 -> 0
-bool1060 isqnan 0E-999 -> 0
-bool1061 isqnan -0E-999 -> 0
-bool1062 isqnan 0E-998 -> 0
-bool1063 isqnan -0E-998 -> 0
-bool1064 isqnan 0E-100 -> 0
-bool1065 isqnan -0E-100 -> 0
-bool1066 isqnan 0.000000 -> 0
-bool1067 isqnan -0.000000 -> 0
-bool1068 isqnan 0.000 -> 0
-bool1069 isqnan -0.000 -> 0
-bool1070 isqnan 0.00 -> 0
-bool1071 isqnan -0.00 -> 0
-bool1072 isqnan 0.0 -> 0
-bool1073 isqnan -0.0 -> 0
-bool1074 isqnan 0 -> 0
-bool1075 isqnan -0 -> 0
-bool1076 isqnan 0E+1 -> 0
-bool1077 isqnan -0E+1 -> 0
-bool1078 isqnan 0E+2 -> 0
-bool1079 isqnan -0E+2 -> 0
-bool1080 isqnan 0E+3 -> 0
-bool1081 isqnan -0E+3 -> 0
-bool1082 isqnan 0E+6 -> 0
-bool1083 isqnan -0E+6 -> 0
-bool1084 isqnan 0E+100 -> 0
-bool1085 isqnan -0E+100 -> 0
-bool1086 isqnan 0E+990 -> 0
-bool1087 isqnan -0E+990 -> 0
-bool1088 isqnan 0E+991 -> 0
-bool1089 isqnan -0E+991 -> 0
-bool1090 isqnan 0E+992 -> 0
-bool1091 isqnan -0E+992 -> 0
-bool1092 isqnan 0E+998 -> 0
-bool1093 isqnan -0E+998 -> 0
-bool1094 isqnan 0E+999 -> 0
-bool1095 isqnan -0E+999 -> 0
-bool1096 isqnan 0E+1000 -> 0
-bool1097 isqnan -0E+1000 -> 0
-bool1098 isqnan 0E+2000 -> 0
-bool1099 isqnan -0E+2000 -> 0
-bool1100 isqnan 1E-2000 -> 0
-bool1101 isqnan -1E-2000 -> 0
-bool1102 isqnan 1E-1008 -> 0
-bool1103 isqnan -1E-1008 -> 0
-bool1104 isqnan 1E-1007 -> 0
-bool1105 isqnan -1E-1007 -> 0
-bool1106 isqnan 1E-1006 -> 0
-bool1107 isqnan -1E-1006 -> 0
-bool1108 isqnan 1E-1000 -> 0
-bool1109 isqnan -1E-1000 -> 0
-bool1110 isqnan 1E-999 -> 0
-bool1111 isqnan -1E-999 -> 0
-bool1112 isqnan 1E-998 -> 0
-bool1113 isqnan -1E-998 -> 0
-bool1114 isqnan 1E-100 -> 0
-bool1115 isqnan -1E-100 -> 0
-bool1116 isqnan 0.000001 -> 0
-bool1117 isqnan -0.000001 -> 0
-bool1118 isqnan 0.001 -> 0
-bool1119 isqnan -0.001 -> 0
-bool1120 isqnan 0.01 -> 0
-bool1121 isqnan -0.01 -> 0
-bool1122 isqnan 0.1 -> 0
-bool1123 isqnan -0.1 -> 0
-bool1124 isqnan 1 -> 0
-bool1125 isqnan -1 -> 0
-bool1126 isqnan 1E+1 -> 0
-bool1127 isqnan -1E+1 -> 0
-bool1128 isqnan 1E+2 -> 0
-bool1129 isqnan -1E+2 -> 0
-bool1130 isqnan 1E+3 -> 0
-bool1131 isqnan -1E+3 -> 0
-bool1132 isqnan 1E+6 -> 0
-bool1133 isqnan -1E+6 -> 0
-bool1134 isqnan 1E+100 -> 0
-bool1135 isqnan -1E+100 -> 0
-bool1136 isqnan 1E+990 -> 0
-bool1137 isqnan -1E+990 -> 0
-bool1138 isqnan 1E+991 -> 0
-bool1139 isqnan -1E+991 -> 0
-bool1140 isqnan 1E+992 -> 0
-bool1141 isqnan -1E+992 -> 0
-bool1142 isqnan 1E+998 -> 0
-bool1143 isqnan -1E+998 -> 0
-bool1144 isqnan 1E+999 -> 0
-bool1145 isqnan -1E+999 -> 0
-bool1146 isqnan 1E+1000 -> 0
-bool1147 isqnan -1E+1000 -> 0
-bool1148 isqnan 1E+2000 -> 0
-bool1149 isqnan -1E+2000 -> 0
-bool1150 isqnan 9E-2000 -> 0
-bool1151 isqnan -9E-2000 -> 0
-bool1152 isqnan 9E-1008 -> 0
-bool1153 isqnan -9E-1008 -> 0
-bool1154 isqnan 9E-1007 -> 0
-bool1155 isqnan -9E-1007 -> 0
-bool1156 isqnan 9E-1006 -> 0
-bool1157 isqnan -9E-1006 -> 0
-bool1158 isqnan 9E-1000 -> 0
-bool1159 isqnan -9E-1000 -> 0
-bool1160 isqnan 9E-999 -> 0
-bool1161 isqnan -9E-999 -> 0
-bool1162 isqnan 9E-998 -> 0
-bool1163 isqnan -9E-998 -> 0
-bool1164 isqnan 9E-100 -> 0
-bool1165 isqnan -9E-100 -> 0
-bool1166 isqnan 0.000009 -> 0
-bool1167 isqnan -0.000009 -> 0
-bool1168 isqnan 0.009 -> 0
-bool1169 isqnan -0.009 -> 0
-bool1170 isqnan 0.09 -> 0
-bool1171 isqnan -0.09 -> 0
-bool1172 isqnan 0.9 -> 0
-bool1173 isqnan -0.9 -> 0
-bool1174 isqnan 9 -> 0
-bool1175 isqnan -9 -> 0
-bool1176 isqnan 9E+1 -> 0
-bool1177 isqnan -9E+1 -> 0
-bool1178 isqnan 9E+2 -> 0
-bool1179 isqnan -9E+2 -> 0
-bool1180 isqnan 9E+3 -> 0
-bool1181 isqnan -9E+3 -> 0
-bool1182 isqnan 9E+6 -> 0
-bool1183 isqnan -9E+6 -> 0
-bool1184 isqnan 9E+100 -> 0
-bool1185 isqnan -9E+100 -> 0
-bool1186 isqnan 9E+990 -> 0
-bool1187 isqnan -9E+990 -> 0
-bool1188 isqnan 9E+991 -> 0
-bool1189 isqnan -9E+991 -> 0
-bool1190 isqnan 9E+992 -> 0
-bool1191 isqnan -9E+992 -> 0
-bool1192 isqnan 9E+998 -> 0
-bool1193 isqnan -9E+998 -> 0
-bool1194 isqnan 9E+999 -> 0
-bool1195 isqnan -9E+999 -> 0
-bool1196 isqnan 9E+1000 -> 0
-bool1197 isqnan -9E+1000 -> 0
-bool1198 isqnan 9E+2000 -> 0
-bool1199 isqnan -9E+2000 -> 0
-bool1200 isqnan 9.99999999E-2000 -> 0
-bool1201 isqnan -9.99999999E-2000 -> 0
-bool1202 isqnan 9.99999999E-1008 -> 0
-bool1203 isqnan -9.99999999E-1008 -> 0
-bool1204 isqnan 9.99999999E-1007 -> 0
-bool1205 isqnan -9.99999999E-1007 -> 0
-bool1206 isqnan 9.99999999E-1006 -> 0
-bool1207 isqnan -9.99999999E-1006 -> 0
-bool1208 isqnan 9.99999999E-1000 -> 0
-bool1209 isqnan -9.99999999E-1000 -> 0
-bool1210 isqnan 9.99999999E-999 -> 0
-bool1211 isqnan -9.99999999E-999 -> 0
-bool1212 isqnan 9.99999999E-998 -> 0
-bool1213 isqnan -9.99999999E-998 -> 0
-bool1214 isqnan 9.99999999E-100 -> 0
-bool1215 isqnan -9.99999999E-100 -> 0
-bool1216 isqnan 0.00000999999999 -> 0
-bool1217 isqnan -0.00000999999999 -> 0
-bool1218 isqnan 0.00999999999 -> 0
-bool1219 isqnan -0.00999999999 -> 0
-bool1220 isqnan 0.0999999999 -> 0
-bool1221 isqnan -0.0999999999 -> 0
-bool1222 isqnan 0.999999999 -> 0
-bool1223 isqnan -0.999999999 -> 0
-bool1224 isqnan 9.99999999 -> 0
-bool1225 isqnan -9.99999999 -> 0
-bool1226 isqnan 99.9999999 -> 0
-bool1227 isqnan -99.9999999 -> 0
-bool1228 isqnan 999.999999 -> 0
-bool1229 isqnan -999.999999 -> 0
-bool1230 isqnan 9999.99999 -> 0
-bool1231 isqnan -9999.99999 -> 0
-bool1232 isqnan 9999999.99 -> 0
-bool1233 isqnan -9999999.99 -> 0
-bool1234 isqnan 9.99999999E+100 -> 0
-bool1235 isqnan -9.99999999E+100 -> 0
-bool1236 isqnan 9.99999999E+990 -> 0
-bool1237 isqnan -9.99999999E+990 -> 0
-bool1238 isqnan 9.99999999E+991 -> 0
-bool1239 isqnan -9.99999999E+991 -> 0
-bool1240 isqnan 9.99999999E+992 -> 0
-bool1241 isqnan -9.99999999E+992 -> 0
-bool1242 isqnan 9.99999999E+998 -> 0
-bool1243 isqnan -9.99999999E+998 -> 0
-bool1244 isqnan 9.99999999E+999 -> 0
-bool1245 isqnan -9.99999999E+999 -> 0
-bool1246 isqnan 9.99999999E+1000 -> 0
-bool1247 isqnan -9.99999999E+1000 -> 0
-bool1248 isqnan 9.99999999E+2000 -> 0
-bool1249 isqnan -9.99999999E+2000 -> 0
-bool1250 isqnan Infinity -> 0
-bool1251 isqnan -Infinity -> 0
-bool1252 isqnan NaN -> 1
-bool1253 isqnan -NaN -> 1
-bool1254 isqnan NaN123 -> 1
-bool1255 isqnan -NaN123 -> 1
-bool1256 isqnan sNaN -> 0
-bool1257 isqnan -sNaN -> 0
-bool1258 isqnan sNaN123 -> 0
-bool1259 isqnan -sNaN123 -> 0
-bool1260 issigned 0E-2000 -> 0
-bool1261 issigned -0E-2000 -> 1
-bool1262 issigned 0E-1008 -> 0
-bool1263 issigned -0E-1008 -> 1
-bool1264 issigned 0E-1007 -> 0
-bool1265 issigned -0E-1007 -> 1
-bool1266 issigned 0E-1006 -> 0
-bool1267 issigned -0E-1006 -> 1
-bool1268 issigned 0E-1000 -> 0
-bool1269 issigned -0E-1000 -> 1
-bool1270 issigned 0E-999 -> 0
-bool1271 issigned -0E-999 -> 1
-bool1272 issigned 0E-998 -> 0
-bool1273 issigned -0E-998 -> 1
-bool1274 issigned 0E-100 -> 0
-bool1275 issigned -0E-100 -> 1
-bool1276 issigned 0.000000 -> 0
-bool1277 issigned -0.000000 -> 1
-bool1278 issigned 0.000 -> 0
-bool1279 issigned -0.000 -> 1
-bool1280 issigned 0.00 -> 0
-bool1281 issigned -0.00 -> 1
-bool1282 issigned 0.0 -> 0
-bool1283 issigned -0.0 -> 1
-bool1284 issigned 0 -> 0
-bool1285 issigned -0 -> 1
-bool1286 issigned 0E+1 -> 0
-bool1287 issigned -0E+1 -> 1
-bool1288 issigned 0E+2 -> 0
-bool1289 issigned -0E+2 -> 1
-bool1290 issigned 0E+3 -> 0
-bool1291 issigned -0E+3 -> 1
-bool1292 issigned 0E+6 -> 0
-bool1293 issigned -0E+6 -> 1
-bool1294 issigned 0E+100 -> 0
-bool1295 issigned -0E+100 -> 1
-bool1296 issigned 0E+990 -> 0
-bool1297 issigned -0E+990 -> 1
-bool1298 issigned 0E+991 -> 0
-bool1299 issigned -0E+991 -> 1
-bool1300 issigned 0E+992 -> 0
-bool1301 issigned -0E+992 -> 1
-bool1302 issigned 0E+998 -> 0
-bool1303 issigned -0E+998 -> 1
-bool1304 issigned 0E+999 -> 0
-bool1305 issigned -0E+999 -> 1
-bool1306 issigned 0E+1000 -> 0
-bool1307 issigned -0E+1000 -> 1
-bool1308 issigned 0E+2000 -> 0
-bool1309 issigned -0E+2000 -> 1
-bool1310 issigned 1E-2000 -> 0
-bool1311 issigned -1E-2000 -> 1
-bool1312 issigned 1E-1008 -> 0
-bool1313 issigned -1E-1008 -> 1
-bool1314 issigned 1E-1007 -> 0
-bool1315 issigned -1E-1007 -> 1
-bool1316 issigned 1E-1006 -> 0
-bool1317 issigned -1E-1006 -> 1
-bool1318 issigned 1E-1000 -> 0
-bool1319 issigned -1E-1000 -> 1
-bool1320 issigned 1E-999 -> 0
-bool1321 issigned -1E-999 -> 1
-bool1322 issigned 1E-998 -> 0
-bool1323 issigned -1E-998 -> 1
-bool1324 issigned 1E-100 -> 0
-bool1325 issigned -1E-100 -> 1
-bool1326 issigned 0.000001 -> 0
-bool1327 issigned -0.000001 -> 1
-bool1328 issigned 0.001 -> 0
-bool1329 issigned -0.001 -> 1
-bool1330 issigned 0.01 -> 0
-bool1331 issigned -0.01 -> 1
-bool1332 issigned 0.1 -> 0
-bool1333 issigned -0.1 -> 1
-bool1334 issigned 1 -> 0
-bool1335 issigned -1 -> 1
-bool1336 issigned 1E+1 -> 0
-bool1337 issigned -1E+1 -> 1
-bool1338 issigned 1E+2 -> 0
-bool1339 issigned -1E+2 -> 1
-bool1340 issigned 1E+3 -> 0
-bool1341 issigned -1E+3 -> 1
-bool1342 issigned 1E+6 -> 0
-bool1343 issigned -1E+6 -> 1
-bool1344 issigned 1E+100 -> 0
-bool1345 issigned -1E+100 -> 1
-bool1346 issigned 1E+990 -> 0
-bool1347 issigned -1E+990 -> 1
-bool1348 issigned 1E+991 -> 0
-bool1349 issigned -1E+991 -> 1
-bool1350 issigned 1E+992 -> 0
-bool1351 issigned -1E+992 -> 1
-bool1352 issigned 1E+998 -> 0
-bool1353 issigned -1E+998 -> 1
-bool1354 issigned 1E+999 -> 0
-bool1355 issigned -1E+999 -> 1
-bool1356 issigned 1E+1000 -> 0
-bool1357 issigned -1E+1000 -> 1
-bool1358 issigned 1E+2000 -> 0
-bool1359 issigned -1E+2000 -> 1
-bool1360 issigned 9E-2000 -> 0
-bool1361 issigned -9E-2000 -> 1
-bool1362 issigned 9E-1008 -> 0
-bool1363 issigned -9E-1008 -> 1
-bool1364 issigned 9E-1007 -> 0
-bool1365 issigned -9E-1007 -> 1
-bool1366 issigned 9E-1006 -> 0
-bool1367 issigned -9E-1006 -> 1
-bool1368 issigned 9E-1000 -> 0
-bool1369 issigned -9E-1000 -> 1
-bool1370 issigned 9E-999 -> 0
-bool1371 issigned -9E-999 -> 1
-bool1372 issigned 9E-998 -> 0
-bool1373 issigned -9E-998 -> 1
-bool1374 issigned 9E-100 -> 0
-bool1375 issigned -9E-100 -> 1
-bool1376 issigned 0.000009 -> 0
-bool1377 issigned -0.000009 -> 1
-bool1378 issigned 0.009 -> 0
-bool1379 issigned -0.009 -> 1
-bool1380 issigned 0.09 -> 0
-bool1381 issigned -0.09 -> 1
-bool1382 issigned 0.9 -> 0
-bool1383 issigned -0.9 -> 1
-bool1384 issigned 9 -> 0
-bool1385 issigned -9 -> 1
-bool1386 issigned 9E+1 -> 0
-bool1387 issigned -9E+1 -> 1
-bool1388 issigned 9E+2 -> 0
-bool1389 issigned -9E+2 -> 1
-bool1390 issigned 9E+3 -> 0
-bool1391 issigned -9E+3 -> 1
-bool1392 issigned 9E+6 -> 0
-bool1393 issigned -9E+6 -> 1
-bool1394 issigned 9E+100 -> 0
-bool1395 issigned -9E+100 -> 1
-bool1396 issigned 9E+990 -> 0
-bool1397 issigned -9E+990 -> 1
-bool1398 issigned 9E+991 -> 0
-bool1399 issigned -9E+991 -> 1
-bool1400 issigned 9E+992 -> 0
-bool1401 issigned -9E+992 -> 1
-bool1402 issigned 9E+998 -> 0
-bool1403 issigned -9E+998 -> 1
-bool1404 issigned 9E+999 -> 0
-bool1405 issigned -9E+999 -> 1
-bool1406 issigned 9E+1000 -> 0
-bool1407 issigned -9E+1000 -> 1
-bool1408 issigned 9E+2000 -> 0
-bool1409 issigned -9E+2000 -> 1
-bool1410 issigned 9.99999999E-2000 -> 0
-bool1411 issigned -9.99999999E-2000 -> 1
-bool1412 issigned 9.99999999E-1008 -> 0
-bool1413 issigned -9.99999999E-1008 -> 1
-bool1414 issigned 9.99999999E-1007 -> 0
-bool1415 issigned -9.99999999E-1007 -> 1
-bool1416 issigned 9.99999999E-1006 -> 0
-bool1417 issigned -9.99999999E-1006 -> 1
-bool1418 issigned 9.99999999E-1000 -> 0
-bool1419 issigned -9.99999999E-1000 -> 1
-bool1420 issigned 9.99999999E-999 -> 0
-bool1421 issigned -9.99999999E-999 -> 1
-bool1422 issigned 9.99999999E-998 -> 0
-bool1423 issigned -9.99999999E-998 -> 1
-bool1424 issigned 9.99999999E-100 -> 0
-bool1425 issigned -9.99999999E-100 -> 1
-bool1426 issigned 0.00000999999999 -> 0
-bool1427 issigned -0.00000999999999 -> 1
-bool1428 issigned 0.00999999999 -> 0
-bool1429 issigned -0.00999999999 -> 1
-bool1430 issigned 0.0999999999 -> 0
-bool1431 issigned -0.0999999999 -> 1
-bool1432 issigned 0.999999999 -> 0
-bool1433 issigned -0.999999999 -> 1
-bool1434 issigned 9.99999999 -> 0
-bool1435 issigned -9.99999999 -> 1
-bool1436 issigned 99.9999999 -> 0
-bool1437 issigned -99.9999999 -> 1
-bool1438 issigned 999.999999 -> 0
-bool1439 issigned -999.999999 -> 1
-bool1440 issigned 9999.99999 -> 0
-bool1441 issigned -9999.99999 -> 1
-bool1442 issigned 9999999.99 -> 0
-bool1443 issigned -9999999.99 -> 1
-bool1444 issigned 9.99999999E+100 -> 0
-bool1445 issigned -9.99999999E+100 -> 1
-bool1446 issigned 9.99999999E+990 -> 0
-bool1447 issigned -9.99999999E+990 -> 1
-bool1448 issigned 9.99999999E+991 -> 0
-bool1449 issigned -9.99999999E+991 -> 1
-bool1450 issigned 9.99999999E+992 -> 0
-bool1451 issigned -9.99999999E+992 -> 1
-bool1452 issigned 9.99999999E+998 -> 0
-bool1453 issigned -9.99999999E+998 -> 1
-bool1454 issigned 9.99999999E+999 -> 0
-bool1455 issigned -9.99999999E+999 -> 1
-bool1456 issigned 9.99999999E+1000 -> 0
-bool1457 issigned -9.99999999E+1000 -> 1
-bool1458 issigned 9.99999999E+2000 -> 0
-bool1459 issigned -9.99999999E+2000 -> 1
-bool1460 issigned Infinity -> 0
-bool1461 issigned -Infinity -> 1
-bool1462 issigned NaN -> 0
-bool1463 issigned -NaN -> 1
-bool1464 issigned NaN123 -> 0
-bool1465 issigned -NaN123 -> 1
-bool1466 issigned sNaN -> 0
-bool1467 issigned -sNaN -> 1
-bool1468 issigned sNaN123 -> 0
-bool1469 issigned -sNaN123 -> 1
-bool1470 issnan 0E-2000 -> 0
-bool1471 issnan -0E-2000 -> 0
-bool1472 issnan 0E-1008 -> 0
-bool1473 issnan -0E-1008 -> 0
-bool1474 issnan 0E-1007 -> 0
-bool1475 issnan -0E-1007 -> 0
-bool1476 issnan 0E-1006 -> 0
-bool1477 issnan -0E-1006 -> 0
-bool1478 issnan 0E-1000 -> 0
-bool1479 issnan -0E-1000 -> 0
-bool1480 issnan 0E-999 -> 0
-bool1481 issnan -0E-999 -> 0
-bool1482 issnan 0E-998 -> 0
-bool1483 issnan -0E-998 -> 0
-bool1484 issnan 0E-100 -> 0
-bool1485 issnan -0E-100 -> 0
-bool1486 issnan 0.000000 -> 0
-bool1487 issnan -0.000000 -> 0
-bool1488 issnan 0.000 -> 0
-bool1489 issnan -0.000 -> 0
-bool1490 issnan 0.00 -> 0
-bool1491 issnan -0.00 -> 0
-bool1492 issnan 0.0 -> 0
-bool1493 issnan -0.0 -> 0
-bool1494 issnan 0 -> 0
-bool1495 issnan -0 -> 0
-bool1496 issnan 0E+1 -> 0
-bool1497 issnan -0E+1 -> 0
-bool1498 issnan 0E+2 -> 0
-bool1499 issnan -0E+2 -> 0
-bool1500 issnan 0E+3 -> 0
-bool1501 issnan -0E+3 -> 0
-bool1502 issnan 0E+6 -> 0
-bool1503 issnan -0E+6 -> 0
-bool1504 issnan 0E+100 -> 0
-bool1505 issnan -0E+100 -> 0
-bool1506 issnan 0E+990 -> 0
-bool1507 issnan -0E+990 -> 0
-bool1508 issnan 0E+991 -> 0
-bool1509 issnan -0E+991 -> 0
-bool1510 issnan 0E+992 -> 0
-bool1511 issnan -0E+992 -> 0
-bool1512 issnan 0E+998 -> 0
-bool1513 issnan -0E+998 -> 0
-bool1514 issnan 0E+999 -> 0
-bool1515 issnan -0E+999 -> 0
-bool1516 issnan 0E+1000 -> 0
-bool1517 issnan -0E+1000 -> 0
-bool1518 issnan 0E+2000 -> 0
-bool1519 issnan -0E+2000 -> 0
-bool1520 issnan 1E-2000 -> 0
-bool1521 issnan -1E-2000 -> 0
-bool1522 issnan 1E-1008 -> 0
-bool1523 issnan -1E-1008 -> 0
-bool1524 issnan 1E-1007 -> 0
-bool1525 issnan -1E-1007 -> 0
-bool1526 issnan 1E-1006 -> 0
-bool1527 issnan -1E-1006 -> 0
-bool1528 issnan 1E-1000 -> 0
-bool1529 issnan -1E-1000 -> 0
-bool1530 issnan 1E-999 -> 0
-bool1531 issnan -1E-999 -> 0
-bool1532 issnan 1E-998 -> 0
-bool1533 issnan -1E-998 -> 0
-bool1534 issnan 1E-100 -> 0
-bool1535 issnan -1E-100 -> 0
-bool1536 issnan 0.000001 -> 0
-bool1537 issnan -0.000001 -> 0
-bool1538 issnan 0.001 -> 0
-bool1539 issnan -0.001 -> 0
-bool1540 issnan 0.01 -> 0
-bool1541 issnan -0.01 -> 0
-bool1542 issnan 0.1 -> 0
-bool1543 issnan -0.1 -> 0
-bool1544 issnan 1 -> 0
-bool1545 issnan -1 -> 0
-bool1546 issnan 1E+1 -> 0
-bool1547 issnan -1E+1 -> 0
-bool1548 issnan 1E+2 -> 0
-bool1549 issnan -1E+2 -> 0
-bool1550 issnan 1E+3 -> 0
-bool1551 issnan -1E+3 -> 0
-bool1552 issnan 1E+6 -> 0
-bool1553 issnan -1E+6 -> 0
-bool1554 issnan 1E+100 -> 0
-bool1555 issnan -1E+100 -> 0
-bool1556 issnan 1E+990 -> 0
-bool1557 issnan -1E+990 -> 0
-bool1558 issnan 1E+991 -> 0
-bool1559 issnan -1E+991 -> 0
-bool1560 issnan 1E+992 -> 0
-bool1561 issnan -1E+992 -> 0
-bool1562 issnan 1E+998 -> 0
-bool1563 issnan -1E+998 -> 0
-bool1564 issnan 1E+999 -> 0
-bool1565 issnan -1E+999 -> 0
-bool1566 issnan 1E+1000 -> 0
-bool1567 issnan -1E+1000 -> 0
-bool1568 issnan 1E+2000 -> 0
-bool1569 issnan -1E+2000 -> 0
-bool1570 issnan 9E-2000 -> 0
-bool1571 issnan -9E-2000 -> 0
-bool1572 issnan 9E-1008 -> 0
-bool1573 issnan -9E-1008 -> 0
-bool1574 issnan 9E-1007 -> 0
-bool1575 issnan -9E-1007 -> 0
-bool1576 issnan 9E-1006 -> 0
-bool1577 issnan -9E-1006 -> 0
-bool1578 issnan 9E-1000 -> 0
-bool1579 issnan -9E-1000 -> 0
-bool1580 issnan 9E-999 -> 0
-bool1581 issnan -9E-999 -> 0
-bool1582 issnan 9E-998 -> 0
-bool1583 issnan -9E-998 -> 0
-bool1584 issnan 9E-100 -> 0
-bool1585 issnan -9E-100 -> 0
-bool1586 issnan 0.000009 -> 0
-bool1587 issnan -0.000009 -> 0
-bool1588 issnan 0.009 -> 0
-bool1589 issnan -0.009 -> 0
-bool1590 issnan 0.09 -> 0
-bool1591 issnan -0.09 -> 0
-bool1592 issnan 0.9 -> 0
-bool1593 issnan -0.9 -> 0
-bool1594 issnan 9 -> 0
-bool1595 issnan -9 -> 0
-bool1596 issnan 9E+1 -> 0
-bool1597 issnan -9E+1 -> 0
-bool1598 issnan 9E+2 -> 0
-bool1599 issnan -9E+2 -> 0
-bool1600 issnan 9E+3 -> 0
-bool1601 issnan -9E+3 -> 0
-bool1602 issnan 9E+6 -> 0
-bool1603 issnan -9E+6 -> 0
-bool1604 issnan 9E+100 -> 0
-bool1605 issnan -9E+100 -> 0
-bool1606 issnan 9E+990 -> 0
-bool1607 issnan -9E+990 -> 0
-bool1608 issnan 9E+991 -> 0
-bool1609 issnan -9E+991 -> 0
-bool1610 issnan 9E+992 -> 0
-bool1611 issnan -9E+992 -> 0
-bool1612 issnan 9E+998 -> 0
-bool1613 issnan -9E+998 -> 0
-bool1614 issnan 9E+999 -> 0
-bool1615 issnan -9E+999 -> 0
-bool1616 issnan 9E+1000 -> 0
-bool1617 issnan -9E+1000 -> 0
-bool1618 issnan 9E+2000 -> 0
-bool1619 issnan -9E+2000 -> 0
-bool1620 issnan 9.99999999E-2000 -> 0
-bool1621 issnan -9.99999999E-2000 -> 0
-bool1622 issnan 9.99999999E-1008 -> 0
-bool1623 issnan -9.99999999E-1008 -> 0
-bool1624 issnan 9.99999999E-1007 -> 0
-bool1625 issnan -9.99999999E-1007 -> 0
-bool1626 issnan 9.99999999E-1006 -> 0
-bool1627 issnan -9.99999999E-1006 -> 0
-bool1628 issnan 9.99999999E-1000 -> 0
-bool1629 issnan -9.99999999E-1000 -> 0
-bool1630 issnan 9.99999999E-999 -> 0
-bool1631 issnan -9.99999999E-999 -> 0
-bool1632 issnan 9.99999999E-998 -> 0
-bool1633 issnan -9.99999999E-998 -> 0
-bool1634 issnan 9.99999999E-100 -> 0
-bool1635 issnan -9.99999999E-100 -> 0
-bool1636 issnan 0.00000999999999 -> 0
-bool1637 issnan -0.00000999999999 -> 0
-bool1638 issnan 0.00999999999 -> 0
-bool1639 issnan -0.00999999999 -> 0
-bool1640 issnan 0.0999999999 -> 0
-bool1641 issnan -0.0999999999 -> 0
-bool1642 issnan 0.999999999 -> 0
-bool1643 issnan -0.999999999 -> 0
-bool1644 issnan 9.99999999 -> 0
-bool1645 issnan -9.99999999 -> 0
-bool1646 issnan 99.9999999 -> 0
-bool1647 issnan -99.9999999 -> 0
-bool1648 issnan 999.999999 -> 0
-bool1649 issnan -999.999999 -> 0
-bool1650 issnan 9999.99999 -> 0
-bool1651 issnan -9999.99999 -> 0
-bool1652 issnan 9999999.99 -> 0
-bool1653 issnan -9999999.99 -> 0
-bool1654 issnan 9.99999999E+100 -> 0
-bool1655 issnan -9.99999999E+100 -> 0
-bool1656 issnan 9.99999999E+990 -> 0
-bool1657 issnan -9.99999999E+990 -> 0
-bool1658 issnan 9.99999999E+991 -> 0
-bool1659 issnan -9.99999999E+991 -> 0
-bool1660 issnan 9.99999999E+992 -> 0
-bool1661 issnan -9.99999999E+992 -> 0
-bool1662 issnan 9.99999999E+998 -> 0
-bool1663 issnan -9.99999999E+998 -> 0
-bool1664 issnan 9.99999999E+999 -> 0
-bool1665 issnan -9.99999999E+999 -> 0
-bool1666 issnan 9.99999999E+1000 -> 0
-bool1667 issnan -9.99999999E+1000 -> 0
-bool1668 issnan 9.99999999E+2000 -> 0
-bool1669 issnan -9.99999999E+2000 -> 0
-bool1670 issnan Infinity -> 0
-bool1671 issnan -Infinity -> 0
-bool1672 issnan NaN -> 0
-bool1673 issnan -NaN -> 0
-bool1674 issnan NaN123 -> 0
-bool1675 issnan -NaN123 -> 0
-bool1676 issnan sNaN -> 1
-bool1677 issnan -sNaN -> 1
-bool1678 issnan sNaN123 -> 1
-bool1679 issnan -sNaN123 -> 1
-bool1680 issubnormal 0E-2000 -> 0
-bool1681 issubnormal -0E-2000 -> 0
-bool1682 issubnormal 0E-1008 -> 0
-bool1683 issubnormal -0E-1008 -> 0
-bool1684 issubnormal 0E-1007 -> 0
-bool1685 issubnormal -0E-1007 -> 0
-bool1686 issubnormal 0E-1006 -> 0
-bool1687 issubnormal -0E-1006 -> 0
-bool1688 issubnormal 0E-1000 -> 0
-bool1689 issubnormal -0E-1000 -> 0
-bool1690 issubnormal 0E-999 -> 0
-bool1691 issubnormal -0E-999 -> 0
-bool1692 issubnormal 0E-998 -> 0
-bool1693 issubnormal -0E-998 -> 0
-bool1694 issubnormal 0E-100 -> 0
-bool1695 issubnormal -0E-100 -> 0
-bool1696 issubnormal 0.000000 -> 0
-bool1697 issubnormal -0.000000 -> 0
-bool1698 issubnormal 0.000 -> 0
-bool1699 issubnormal -0.000 -> 0
-bool1700 issubnormal 0.00 -> 0
-bool1701 issubnormal -0.00 -> 0
-bool1702 issubnormal 0.0 -> 0
-bool1703 issubnormal -0.0 -> 0
-bool1704 issubnormal 0 -> 0
-bool1705 issubnormal -0 -> 0
-bool1706 issubnormal 0E+1 -> 0
-bool1707 issubnormal -0E+1 -> 0
-bool1708 issubnormal 0E+2 -> 0
-bool1709 issubnormal -0E+2 -> 0
-bool1710 issubnormal 0E+3 -> 0
-bool1711 issubnormal -0E+3 -> 0
-bool1712 issubnormal 0E+6 -> 0
-bool1713 issubnormal -0E+6 -> 0
-bool1714 issubnormal 0E+100 -> 0
-bool1715 issubnormal -0E+100 -> 0
-bool1716 issubnormal 0E+990 -> 0
-bool1717 issubnormal -0E+990 -> 0
-bool1718 issubnormal 0E+991 -> 0
-bool1719 issubnormal -0E+991 -> 0
-bool1720 issubnormal 0E+992 -> 0
-bool1721 issubnormal -0E+992 -> 0
-bool1722 issubnormal 0E+998 -> 0
-bool1723 issubnormal -0E+998 -> 0
-bool1724 issubnormal 0E+999 -> 0
-bool1725 issubnormal -0E+999 -> 0
-bool1726 issubnormal 0E+1000 -> 0
-bool1727 issubnormal -0E+1000 -> 0
-bool1728 issubnormal 0E+2000 -> 0
-bool1729 issubnormal -0E+2000 -> 0
-bool1730 issubnormal 1E-2000 -> 1
-bool1731 issubnormal -1E-2000 -> 1
-bool1732 issubnormal 1E-1008 -> 1
-bool1733 issubnormal -1E-1008 -> 1
-bool1734 issubnormal 1E-1007 -> 1
-bool1735 issubnormal -1E-1007 -> 1
-bool1736 issubnormal 1E-1006 -> 1
-bool1737 issubnormal -1E-1006 -> 1
-bool1738 issubnormal 1E-1000 -> 1
-bool1739 issubnormal -1E-1000 -> 1
-bool1740 issubnormal 1E-999 -> 0
-bool1741 issubnormal -1E-999 -> 0
-bool1742 issubnormal 1E-998 -> 0
-bool1743 issubnormal -1E-998 -> 0
-bool1744 issubnormal 1E-100 -> 0
-bool1745 issubnormal -1E-100 -> 0
-bool1746 issubnormal 0.000001 -> 0
-bool1747 issubnormal -0.000001 -> 0
-bool1748 issubnormal 0.001 -> 0
-bool1749 issubnormal -0.001 -> 0
-bool1750 issubnormal 0.01 -> 0
-bool1751 issubnormal -0.01 -> 0
-bool1752 issubnormal 0.1 -> 0
-bool1753 issubnormal -0.1 -> 0
-bool1754 issubnormal 1 -> 0
-bool1755 issubnormal -1 -> 0
-bool1756 issubnormal 1E+1 -> 0
-bool1757 issubnormal -1E+1 -> 0
-bool1758 issubnormal 1E+2 -> 0
-bool1759 issubnormal -1E+2 -> 0
-bool1760 issubnormal 1E+3 -> 0
-bool1761 issubnormal -1E+3 -> 0
-bool1762 issubnormal 1E+6 -> 0
-bool1763 issubnormal -1E+6 -> 0
-bool1764 issubnormal 1E+100 -> 0
-bool1765 issubnormal -1E+100 -> 0
-bool1766 issubnormal 1E+990 -> 0
-bool1767 issubnormal -1E+990 -> 0
-bool1768 issubnormal 1E+991 -> 0
-bool1769 issubnormal -1E+991 -> 0
-bool1770 issubnormal 1E+992 -> 0
-bool1771 issubnormal -1E+992 -> 0
-bool1772 issubnormal 1E+998 -> 0
-bool1773 issubnormal -1E+998 -> 0
-bool1774 issubnormal 1E+999 -> 0
-bool1775 issubnormal -1E+999 -> 0
-bool1776 issubnormal 1E+1000 -> 0
-bool1777 issubnormal -1E+1000 -> 0
-bool1778 issubnormal 1E+2000 -> 0
-bool1779 issubnormal -1E+2000 -> 0
-bool1780 issubnormal 9E-2000 -> 1
-bool1781 issubnormal -9E-2000 -> 1
-bool1782 issubnormal 9E-1008 -> 1
-bool1783 issubnormal -9E-1008 -> 1
-bool1784 issubnormal 9E-1007 -> 1
-bool1785 issubnormal -9E-1007 -> 1
-bool1786 issubnormal 9E-1006 -> 1
-bool1787 issubnormal -9E-1006 -> 1
-bool1788 issubnormal 9E-1000 -> 1
-bool1789 issubnormal -9E-1000 -> 1
-bool1790 issubnormal 9E-999 -> 0
-bool1791 issubnormal -9E-999 -> 0
-bool1792 issubnormal 9E-998 -> 0
-bool1793 issubnormal -9E-998 -> 0
-bool1794 issubnormal 9E-100 -> 0
-bool1795 issubnormal -9E-100 -> 0
-bool1796 issubnormal 0.000009 -> 0
-bool1797 issubnormal -0.000009 -> 0
-bool1798 issubnormal 0.009 -> 0
-bool1799 issubnormal -0.009 -> 0
-bool1800 issubnormal 0.09 -> 0
-bool1801 issubnormal -0.09 -> 0
-bool1802 issubnormal 0.9 -> 0
-bool1803 issubnormal -0.9 -> 0
-bool1804 issubnormal 9 -> 0
-bool1805 issubnormal -9 -> 0
-bool1806 issubnormal 9E+1 -> 0
-bool1807 issubnormal -9E+1 -> 0
-bool1808 issubnormal 9E+2 -> 0
-bool1809 issubnormal -9E+2 -> 0
-bool1810 issubnormal 9E+3 -> 0
-bool1811 issubnormal -9E+3 -> 0
-bool1812 issubnormal 9E+6 -> 0
-bool1813 issubnormal -9E+6 -> 0
-bool1814 issubnormal 9E+100 -> 0
-bool1815 issubnormal -9E+100 -> 0
-bool1816 issubnormal 9E+990 -> 0
-bool1817 issubnormal -9E+990 -> 0
-bool1818 issubnormal 9E+991 -> 0
-bool1819 issubnormal -9E+991 -> 0
-bool1820 issubnormal 9E+992 -> 0
-bool1821 issubnormal -9E+992 -> 0
-bool1822 issubnormal 9E+998 -> 0
-bool1823 issubnormal -9E+998 -> 0
-bool1824 issubnormal 9E+999 -> 0
-bool1825 issubnormal -9E+999 -> 0
-bool1826 issubnormal 9E+1000 -> 0
-bool1827 issubnormal -9E+1000 -> 0
-bool1828 issubnormal 9E+2000 -> 0
-bool1829 issubnormal -9E+2000 -> 0
-bool1830 issubnormal 9.99999999E-2000 -> 1
-bool1831 issubnormal -9.99999999E-2000 -> 1
-bool1832 issubnormal 9.99999999E-1008 -> 1
-bool1833 issubnormal -9.99999999E-1008 -> 1
-bool1834 issubnormal 9.99999999E-1007 -> 1
-bool1835 issubnormal -9.99999999E-1007 -> 1
-bool1836 issubnormal 9.99999999E-1006 -> 1
-bool1837 issubnormal -9.99999999E-1006 -> 1
-bool1838 issubnormal 9.99999999E-1000 -> 1
-bool1839 issubnormal -9.99999999E-1000 -> 1
-bool1840 issubnormal 9.99999999E-999 -> 0
-bool1841 issubnormal -9.99999999E-999 -> 0
-bool1842 issubnormal 9.99999999E-998 -> 0
-bool1843 issubnormal -9.99999999E-998 -> 0
-bool1844 issubnormal 9.99999999E-100 -> 0
-bool1845 issubnormal -9.99999999E-100 -> 0
-bool1846 issubnormal 0.00000999999999 -> 0
-bool1847 issubnormal -0.00000999999999 -> 0
-bool1848 issubnormal 0.00999999999 -> 0
-bool1849 issubnormal -0.00999999999 -> 0
-bool1850 issubnormal 0.0999999999 -> 0
-bool1851 issubnormal -0.0999999999 -> 0
-bool1852 issubnormal 0.999999999 -> 0
-bool1853 issubnormal -0.999999999 -> 0
-bool1854 issubnormal 9.99999999 -> 0
-bool1855 issubnormal -9.99999999 -> 0
-bool1856 issubnormal 99.9999999 -> 0
-bool1857 issubnormal -99.9999999 -> 0
-bool1858 issubnormal 999.999999 -> 0
-bool1859 issubnormal -999.999999 -> 0
-bool1860 issubnormal 9999.99999 -> 0
-bool1861 issubnormal -9999.99999 -> 0
-bool1862 issubnormal 9999999.99 -> 0
-bool1863 issubnormal -9999999.99 -> 0
-bool1864 issubnormal 9.99999999E+100 -> 0
-bool1865 issubnormal -9.99999999E+100 -> 0
-bool1866 issubnormal 9.99999999E+990 -> 0
-bool1867 issubnormal -9.99999999E+990 -> 0
-bool1868 issubnormal 9.99999999E+991 -> 0
-bool1869 issubnormal -9.99999999E+991 -> 0
-bool1870 issubnormal 9.99999999E+992 -> 0
-bool1871 issubnormal -9.99999999E+992 -> 0
-bool1872 issubnormal 9.99999999E+998 -> 0
-bool1873 issubnormal -9.99999999E+998 -> 0
-bool1874 issubnormal 9.99999999E+999 -> 0
-bool1875 issubnormal -9.99999999E+999 -> 0
-bool1876 issubnormal 9.99999999E+1000 -> 0
-bool1877 issubnormal -9.99999999E+1000 -> 0
-bool1878 issubnormal 9.99999999E+2000 -> 0
-bool1879 issubnormal -9.99999999E+2000 -> 0
-bool1880 issubnormal Infinity -> 0
-bool1881 issubnormal -Infinity -> 0
-bool1882 issubnormal NaN -> 0
-bool1883 issubnormal -NaN -> 0
-bool1884 issubnormal NaN123 -> 0
-bool1885 issubnormal -NaN123 -> 0
-bool1886 issubnormal sNaN -> 0
-bool1887 issubnormal -sNaN -> 0
-bool1888 issubnormal sNaN123 -> 0
-bool1889 issubnormal -sNaN123 -> 0
-bool1890 iszero 0E-2000 -> 1
-bool1891 iszero -0E-2000 -> 1
-bool1892 iszero 0E-1008 -> 1
-bool1893 iszero -0E-1008 -> 1
-bool1894 iszero 0E-1007 -> 1
-bool1895 iszero -0E-1007 -> 1
-bool1896 iszero 0E-1006 -> 1
-bool1897 iszero -0E-1006 -> 1
-bool1898 iszero 0E-1000 -> 1
-bool1899 iszero -0E-1000 -> 1
-bool1900 iszero 0E-999 -> 1
-bool1901 iszero -0E-999 -> 1
-bool1902 iszero 0E-998 -> 1
-bool1903 iszero -0E-998 -> 1
-bool1904 iszero 0E-100 -> 1
-bool1905 iszero -0E-100 -> 1
-bool1906 iszero 0.000000 -> 1
-bool1907 iszero -0.000000 -> 1
-bool1908 iszero 0.000 -> 1
-bool1909 iszero -0.000 -> 1
-bool1910 iszero 0.00 -> 1
-bool1911 iszero -0.00 -> 1
-bool1912 iszero 0.0 -> 1
-bool1913 iszero -0.0 -> 1
-bool1914 iszero 0 -> 1
-bool1915 iszero -0 -> 1
-bool1916 iszero 0E+1 -> 1
-bool1917 iszero -0E+1 -> 1
-bool1918 iszero 0E+2 -> 1
-bool1919 iszero -0E+2 -> 1
-bool1920 iszero 0E+3 -> 1
-bool1921 iszero -0E+3 -> 1
-bool1922 iszero 0E+6 -> 1
-bool1923 iszero -0E+6 -> 1
-bool1924 iszero 0E+100 -> 1
-bool1925 iszero -0E+100 -> 1
-bool1926 iszero 0E+990 -> 1
-bool1927 iszero -0E+990 -> 1
-bool1928 iszero 0E+991 -> 1
-bool1929 iszero -0E+991 -> 1
-bool1930 iszero 0E+992 -> 1
-bool1931 iszero -0E+992 -> 1
-bool1932 iszero 0E+998 -> 1
-bool1933 iszero -0E+998 -> 1
-bool1934 iszero 0E+999 -> 1
-bool1935 iszero -0E+999 -> 1
-bool1936 iszero 0E+1000 -> 1
-bool1937 iszero -0E+1000 -> 1
-bool1938 iszero 0E+2000 -> 1
-bool1939 iszero -0E+2000 -> 1
-bool1940 iszero 1E-2000 -> 0
-bool1941 iszero -1E-2000 -> 0
-bool1942 iszero 1E-1008 -> 0
-bool1943 iszero -1E-1008 -> 0
-bool1944 iszero 1E-1007 -> 0
-bool1945 iszero -1E-1007 -> 0
-bool1946 iszero 1E-1006 -> 0
-bool1947 iszero -1E-1006 -> 0
-bool1948 iszero 1E-1000 -> 0
-bool1949 iszero -1E-1000 -> 0
-bool1950 iszero 1E-999 -> 0
-bool1951 iszero -1E-999 -> 0
-bool1952 iszero 1E-998 -> 0
-bool1953 iszero -1E-998 -> 0
-bool1954 iszero 1E-100 -> 0
-bool1955 iszero -1E-100 -> 0
-bool1956 iszero 0.000001 -> 0
-bool1957 iszero -0.000001 -> 0
-bool1958 iszero 0.001 -> 0
-bool1959 iszero -0.001 -> 0
-bool1960 iszero 0.01 -> 0
-bool1961 iszero -0.01 -> 0
-bool1962 iszero 0.1 -> 0
-bool1963 iszero -0.1 -> 0
-bool1964 iszero 1 -> 0
-bool1965 iszero -1 -> 0
-bool1966 iszero 1E+1 -> 0
-bool1967 iszero -1E+1 -> 0
-bool1968 iszero 1E+2 -> 0
-bool1969 iszero -1E+2 -> 0
-bool1970 iszero 1E+3 -> 0
-bool1971 iszero -1E+3 -> 0
-bool1972 iszero 1E+6 -> 0
-bool1973 iszero -1E+6 -> 0
-bool1974 iszero 1E+100 -> 0
-bool1975 iszero -1E+100 -> 0
-bool1976 iszero 1E+990 -> 0
-bool1977 iszero -1E+990 -> 0
-bool1978 iszero 1E+991 -> 0
-bool1979 iszero -1E+991 -> 0
-bool1980 iszero 1E+992 -> 0
-bool1981 iszero -1E+992 -> 0
-bool1982 iszero 1E+998 -> 0
-bool1983 iszero -1E+998 -> 0
-bool1984 iszero 1E+999 -> 0
-bool1985 iszero -1E+999 -> 0
-bool1986 iszero 1E+1000 -> 0
-bool1987 iszero -1E+1000 -> 0
-bool1988 iszero 1E+2000 -> 0
-bool1989 iszero -1E+2000 -> 0
-bool1990 iszero 9E-2000 -> 0
-bool1991 iszero -9E-2000 -> 0
-bool1992 iszero 9E-1008 -> 0
-bool1993 iszero -9E-1008 -> 0
-bool1994 iszero 9E-1007 -> 0
-bool1995 iszero -9E-1007 -> 0
-bool1996 iszero 9E-1006 -> 0
-bool1997 iszero -9E-1006 -> 0
-bool1998 iszero 9E-1000 -> 0
-bool1999 iszero -9E-1000 -> 0
-bool2000 iszero 9E-999 -> 0
-bool2001 iszero -9E-999 -> 0
-bool2002 iszero 9E-998 -> 0
-bool2003 iszero -9E-998 -> 0
-bool2004 iszero 9E-100 -> 0
-bool2005 iszero -9E-100 -> 0
-bool2006 iszero 0.000009 -> 0
-bool2007 iszero -0.000009 -> 0
-bool2008 iszero 0.009 -> 0
-bool2009 iszero -0.009 -> 0
-bool2010 iszero 0.09 -> 0
-bool2011 iszero -0.09 -> 0
-bool2012 iszero 0.9 -> 0
-bool2013 iszero -0.9 -> 0
-bool2014 iszero 9 -> 0
-bool2015 iszero -9 -> 0
-bool2016 iszero 9E+1 -> 0
-bool2017 iszero -9E+1 -> 0
-bool2018 iszero 9E+2 -> 0
-bool2019 iszero -9E+2 -> 0
-bool2020 iszero 9E+3 -> 0
-bool2021 iszero -9E+3 -> 0
-bool2022 iszero 9E+6 -> 0
-bool2023 iszero -9E+6 -> 0
-bool2024 iszero 9E+100 -> 0
-bool2025 iszero -9E+100 -> 0
-bool2026 iszero 9E+990 -> 0
-bool2027 iszero -9E+990 -> 0
-bool2028 iszero 9E+991 -> 0
-bool2029 iszero -9E+991 -> 0
-bool2030 iszero 9E+992 -> 0
-bool2031 iszero -9E+992 -> 0
-bool2032 iszero 9E+998 -> 0
-bool2033 iszero -9E+998 -> 0
-bool2034 iszero 9E+999 -> 0
-bool2035 iszero -9E+999 -> 0
-bool2036 iszero 9E+1000 -> 0
-bool2037 iszero -9E+1000 -> 0
-bool2038 iszero 9E+2000 -> 0
-bool2039 iszero -9E+2000 -> 0
-bool2040 iszero 9.99999999E-2000 -> 0
-bool2041 iszero -9.99999999E-2000 -> 0
-bool2042 iszero 9.99999999E-1008 -> 0
-bool2043 iszero -9.99999999E-1008 -> 0
-bool2044 iszero 9.99999999E-1007 -> 0
-bool2045 iszero -9.99999999E-1007 -> 0
-bool2046 iszero 9.99999999E-1006 -> 0
-bool2047 iszero -9.99999999E-1006 -> 0
-bool2048 iszero 9.99999999E-1000 -> 0
-bool2049 iszero -9.99999999E-1000 -> 0
-bool2050 iszero 9.99999999E-999 -> 0
-bool2051 iszero -9.99999999E-999 -> 0
-bool2052 iszero 9.99999999E-998 -> 0
-bool2053 iszero -9.99999999E-998 -> 0
-bool2054 iszero 9.99999999E-100 -> 0
-bool2055 iszero -9.99999999E-100 -> 0
-bool2056 iszero 0.00000999999999 -> 0
-bool2057 iszero -0.00000999999999 -> 0
-bool2058 iszero 0.00999999999 -> 0
-bool2059 iszero -0.00999999999 -> 0
-bool2060 iszero 0.0999999999 -> 0
-bool2061 iszero -0.0999999999 -> 0
-bool2062 iszero 0.999999999 -> 0
-bool2063 iszero -0.999999999 -> 0
-bool2064 iszero 9.99999999 -> 0
-bool2065 iszero -9.99999999 -> 0
-bool2066 iszero 99.9999999 -> 0
-bool2067 iszero -99.9999999 -> 0
-bool2068 iszero 999.999999 -> 0
-bool2069 iszero -999.999999 -> 0
-bool2070 iszero 9999.99999 -> 0
-bool2071 iszero -9999.99999 -> 0
-bool2072 iszero 9999999.99 -> 0
-bool2073 iszero -9999999.99 -> 0
-bool2074 iszero 9.99999999E+100 -> 0
-bool2075 iszero -9.99999999E+100 -> 0
-bool2076 iszero 9.99999999E+990 -> 0
-bool2077 iszero -9.99999999E+990 -> 0
-bool2078 iszero 9.99999999E+991 -> 0
-bool2079 iszero -9.99999999E+991 -> 0
-bool2080 iszero 9.99999999E+992 -> 0
-bool2081 iszero -9.99999999E+992 -> 0
-bool2082 iszero 9.99999999E+998 -> 0
-bool2083 iszero -9.99999999E+998 -> 0
-bool2084 iszero 9.99999999E+999 -> 0
-bool2085 iszero -9.99999999E+999 -> 0
-bool2086 iszero 9.99999999E+1000 -> 0
-bool2087 iszero -9.99999999E+1000 -> 0
-bool2088 iszero 9.99999999E+2000 -> 0
-bool2089 iszero -9.99999999E+2000 -> 0
-bool2090 iszero Infinity -> 0
-bool2091 iszero -Infinity -> 0
-bool2092 iszero NaN -> 0
-bool2093 iszero -NaN -> 0
-bool2094 iszero NaN123 -> 0
-bool2095 iszero -NaN123 -> 0
-bool2096 iszero sNaN -> 0
-bool2097 iszero -sNaN -> 0
-bool2098 iszero sNaN123 -> 0
-bool2099 iszero -sNaN123 -> 0
-
-------------------------------------------------------------------------
--- The following tests (pwmx0 through pwmx440) are for the            --
--- three-argument version of power:                                   --
---                                                                    --
---   pow(x, y, z) := x**y % z                                         --
---                                                                    --
--- Note that the three-argument version of power is *not* part of     --
--- the IBM General Decimal Arithmetic specification.  Questions       --
--- about it, or about these testcases, should go to one of the        --
--- Python decimal authors.                                            --
-------------------------------------------------------------------------
-
-extended: 1
-precision: 9
-rounding: down
-maxExponent: 999
-minExponent: -999
-
--- Small numbers
--- Note that power(0, 0, m) is an error for any m
-pwmx0 power 0 -0 1 -> NaN Invalid_operation
-pwmx1 power 0 -0 2 -> NaN Invalid_operation
-pwmx2 power 0 -0 3 -> NaN Invalid_operation
-pwmx3 power 0 -0 4 -> NaN Invalid_operation
-pwmx4 power 0 -0 -1 -> NaN Invalid_operation
-pwmx5 power 0 -0 -2 -> NaN Invalid_operation
-pwmx6 power 0 0 1 -> NaN Invalid_operation
-pwmx7 power 0 0 2 -> NaN Invalid_operation
-pwmx8 power 0 0 3 -> NaN Invalid_operation
-pwmx9 power 0 0 4 -> NaN Invalid_operation
-pwmx10 power 0 0 -1 -> NaN Invalid_operation
-pwmx11 power 0 0 -2 -> NaN Invalid_operation
-pwmx12 power 0 1 1 -> 0
-pwmx13 power 0 1 2 -> 0
-pwmx14 power 0 1 3 -> 0
-pwmx15 power 0 1 4 -> 0
-pwmx16 power 0 1 -1 -> 0
-pwmx17 power 0 1 -2 -> 0
-pwmx18 power 0 2 1 -> 0
-pwmx19 power 0 2 2 -> 0
-pwmx20 power 0 2 3 -> 0
-pwmx21 power 0 2 4 -> 0
-pwmx22 power 0 2 -1 -> 0
-pwmx23 power 0 2 -2 -> 0
-pwmx24 power 0 3 1 -> 0
-pwmx25 power 0 3 2 -> 0
-pwmx26 power 0 3 3 -> 0
-pwmx27 power 0 3 4 -> 0
-pwmx28 power 0 3 -1 -> 0
-pwmx29 power 0 3 -2 -> 0
-pwmx30 power 0 4 1 -> 0
-pwmx31 power 0 4 2 -> 0
-pwmx32 power 0 4 3 -> 0
-pwmx33 power 0 4 4 -> 0
-pwmx34 power 0 4 -1 -> 0
-pwmx35 power 0 4 -2 -> 0
-pwmx36 power 0 5 1 -> 0
-pwmx37 power 0 5 2 -> 0
-pwmx38 power 0 5 3 -> 0
-pwmx39 power 0 5 4 -> 0
-pwmx40 power 0 5 -1 -> 0
-pwmx41 power 0 5 -2 -> 0
-pwmx42 power 1 -0 1 -> 0
-pwmx43 power 1 -0 2 -> 1
-pwmx44 power 1 -0 3 -> 1
-pwmx45 power 1 -0 4 -> 1
-pwmx46 power 1 -0 -1 -> 0
-pwmx47 power 1 -0 -2 -> 1
-pwmx48 power 1 0 1 -> 0
-pwmx49 power 1 0 2 -> 1
-pwmx50 power 1 0 3 -> 1
-pwmx51 power 1 0 4 -> 1
-pwmx52 power 1 0 -1 -> 0
-pwmx53 power 1 0 -2 -> 1
-pwmx54 power 1 1 1 -> 0
-pwmx55 power 1 1 2 -> 1
-pwmx56 power 1 1 3 -> 1
-pwmx57 power 1 1 4 -> 1
-pwmx58 power 1 1 -1 -> 0
-pwmx59 power 1 1 -2 -> 1
-pwmx60 power 1 2 1 -> 0
-pwmx61 power 1 2 2 -> 1
-pwmx62 power 1 2 3 -> 1
-pwmx63 power 1 2 4 -> 1
-pwmx64 power 1 2 -1 -> 0
-pwmx65 power 1 2 -2 -> 1
-pwmx66 power 1 3 1 -> 0
-pwmx67 power 1 3 2 -> 1
-pwmx68 power 1 3 3 -> 1
-pwmx69 power 1 3 4 -> 1
-pwmx70 power 1 3 -1 -> 0
-pwmx71 power 1 3 -2 -> 1
-pwmx72 power 1 4 1 -> 0
-pwmx73 power 1 4 2 -> 1
-pwmx74 power 1 4 3 -> 1
-pwmx75 power 1 4 4 -> 1
-pwmx76 power 1 4 -1 -> 0
-pwmx77 power 1 4 -2 -> 1
-pwmx78 power 1 5 1 -> 0
-pwmx79 power 1 5 2 -> 1
-pwmx80 power 1 5 3 -> 1
-pwmx81 power 1 5 4 -> 1
-pwmx82 power 1 5 -1 -> 0
-pwmx83 power 1 5 -2 -> 1
-pwmx84 power 2 -0 1 -> 0
-pwmx85 power 2 -0 2 -> 1
-pwmx86 power 2 -0 3 -> 1
-pwmx87 power 2 -0 4 -> 1
-pwmx88 power 2 -0 -1 -> 0
-pwmx89 power 2 -0 -2 -> 1
-pwmx90 power 2 0 1 -> 0
-pwmx91 power 2 0 2 -> 1
-pwmx92 power 2 0 3 -> 1
-pwmx93 power 2 0 4 -> 1
-pwmx94 power 2 0 -1 -> 0
-pwmx95 power 2 0 -2 -> 1
-pwmx96 power 2 1 1 -> 0
-pwmx97 power 2 1 2 -> 0
-pwmx98 power 2 1 3 -> 2
-pwmx99 power 2 1 4 -> 2
-pwmx100 power 2 1 -1 -> 0
-pwmx101 power 2 1 -2 -> 0
-pwmx102 power 2 2 1 -> 0
-pwmx103 power 2 2 2 -> 0
-pwmx104 power 2 2 3 -> 1
-pwmx105 power 2 2 4 -> 0
-pwmx106 power 2 2 -1 -> 0
-pwmx107 power 2 2 -2 -> 0
-pwmx108 power 2 3 1 -> 0
-pwmx109 power 2 3 2 -> 0
-pwmx110 power 2 3 3 -> 2
-pwmx111 power 2 3 4 -> 0
-pwmx112 power 2 3 -1 -> 0
-pwmx113 power 2 3 -2 -> 0
-pwmx114 power 2 4 1 -> 0
-pwmx115 power 2 4 2 -> 0
-pwmx116 power 2 4 3 -> 1
-pwmx117 power 2 4 4 -> 0
-pwmx118 power 2 4 -1 -> 0
-pwmx119 power 2 4 -2 -> 0
-pwmx120 power 2 5 1 -> 0
-pwmx121 power 2 5 2 -> 0
-pwmx122 power 2 5 3 -> 2
-pwmx123 power 2 5 4 -> 0
-pwmx124 power 2 5 -1 -> 0
-pwmx125 power 2 5 -2 -> 0
-pwmx126 power 3 -0 1 -> 0
-pwmx127 power 3 -0 2 -> 1
-pwmx128 power 3 -0 3 -> 1
-pwmx129 power 3 -0 4 -> 1
-pwmx130 power 3 -0 -1 -> 0
-pwmx131 power 3 -0 -2 -> 1
-pwmx132 power 3 0 1 -> 0
-pwmx133 power 3 0 2 -> 1
-pwmx134 power 3 0 3 -> 1
-pwmx135 power 3 0 4 -> 1
-pwmx136 power 3 0 -1 -> 0
-pwmx137 power 3 0 -2 -> 1
-pwmx138 power 3 1 1 -> 0
-pwmx139 power 3 1 2 -> 1
-pwmx140 power 3 1 3 -> 0
-pwmx141 power 3 1 4 -> 3
-pwmx142 power 3 1 -1 -> 0
-pwmx143 power 3 1 -2 -> 1
-pwmx144 power 3 2 1 -> 0
-pwmx145 power 3 2 2 -> 1
-pwmx146 power 3 2 3 -> 0
-pwmx147 power 3 2 4 -> 1
-pwmx148 power 3 2 -1 -> 0
-pwmx149 power 3 2 -2 -> 1
-pwmx150 power 3 3 1 -> 0
-pwmx151 power 3 3 2 -> 1
-pwmx152 power 3 3 3 -> 0
-pwmx153 power 3 3 4 -> 3
-pwmx154 power 3 3 -1 -> 0
-pwmx155 power 3 3 -2 -> 1
-pwmx156 power 3 4 1 -> 0
-pwmx157 power 3 4 2 -> 1
-pwmx158 power 3 4 3 -> 0
-pwmx159 power 3 4 4 -> 1
-pwmx160 power 3 4 -1 -> 0
-pwmx161 power 3 4 -2 -> 1
-pwmx162 power 3 5 1 -> 0
-pwmx163 power 3 5 2 -> 1
-pwmx164 power 3 5 3 -> 0
-pwmx165 power 3 5 4 -> 3
-pwmx166 power 3 5 -1 -> 0
-pwmx167 power 3 5 -2 -> 1
-pwmx168 power -0 -0 1 -> NaN Invalid_operation
-pwmx169 power -0 -0 2 -> NaN Invalid_operation
-pwmx170 power -0 -0 3 -> NaN Invalid_operation
-pwmx171 power -0 -0 4 -> NaN Invalid_operation
-pwmx172 power -0 -0 -1 -> NaN Invalid_operation
-pwmx173 power -0 -0 -2 -> NaN Invalid_operation
-pwmx174 power -0 0 1 -> NaN Invalid_operation
-pwmx175 power -0 0 2 -> NaN Invalid_operation
-pwmx176 power -0 0 3 -> NaN Invalid_operation
-pwmx177 power -0 0 4 -> NaN Invalid_operation
-pwmx178 power -0 0 -1 -> NaN Invalid_operation
-pwmx179 power -0 0 -2 -> NaN Invalid_operation
-pwmx180 power -0 1 1 -> -0
-pwmx181 power -0 1 2 -> -0
-pwmx182 power -0 1 3 -> -0
-pwmx183 power -0 1 4 -> -0
-pwmx184 power -0 1 -1 -> -0
-pwmx185 power -0 1 -2 -> -0
-pwmx186 power -0 2 1 -> 0
-pwmx187 power -0 2 2 -> 0
-pwmx188 power -0 2 3 -> 0
-pwmx189 power -0 2 4 -> 0
-pwmx190 power -0 2 -1 -> 0
-pwmx191 power -0 2 -2 -> 0
-pwmx192 power -0 3 1 -> -0
-pwmx193 power -0 3 2 -> -0
-pwmx194 power -0 3 3 -> -0
-pwmx195 power -0 3 4 -> -0
-pwmx196 power -0 3 -1 -> -0
-pwmx197 power -0 3 -2 -> -0
-pwmx198 power -0 4 1 -> 0
-pwmx199 power -0 4 2 -> 0
-pwmx200 power -0 4 3 -> 0
-pwmx201 power -0 4 4 -> 0
-pwmx202 power -0 4 -1 -> 0
-pwmx203 power -0 4 -2 -> 0
-pwmx204 power -0 5 1 -> -0
-pwmx205 power -0 5 2 -> -0
-pwmx206 power -0 5 3 -> -0
-pwmx207 power -0 5 4 -> -0
-pwmx208 power -0 5 -1 -> -0
-pwmx209 power -0 5 -2 -> -0
-pwmx210 power -1 -0 1 -> 0
-pwmx211 power -1 -0 2 -> 1
-pwmx212 power -1 -0 3 -> 1
-pwmx213 power -1 -0 4 -> 1
-pwmx214 power -1 -0 -1 -> 0
-pwmx215 power -1 -0 -2 -> 1
-pwmx216 power -1 0 1 -> 0
-pwmx217 power -1 0 2 -> 1
-pwmx218 power -1 0 3 -> 1
-pwmx219 power -1 0 4 -> 1
-pwmx220 power -1 0 -1 -> 0
-pwmx221 power -1 0 -2 -> 1
-pwmx222 power -1 1 1 -> -0
-pwmx223 power -1 1 2 -> -1
-pwmx224 power -1 1 3 -> -1
-pwmx225 power -1 1 4 -> -1
-pwmx226 power -1 1 -1 -> -0
-pwmx227 power -1 1 -2 -> -1
-pwmx228 power -1 2 1 -> 0
-pwmx229 power -1 2 2 -> 1
-pwmx230 power -1 2 3 -> 1
-pwmx231 power -1 2 4 -> 1
-pwmx232 power -1 2 -1 -> 0
-pwmx233 power -1 2 -2 -> 1
-pwmx234 power -1 3 1 -> -0
-pwmx235 power -1 3 2 -> -1
-pwmx236 power -1 3 3 -> -1
-pwmx237 power -1 3 4 -> -1
-pwmx238 power -1 3 -1 -> -0
-pwmx239 power -1 3 -2 -> -1
-pwmx240 power -1 4 1 -> 0
-pwmx241 power -1 4 2 -> 1
-pwmx242 power -1 4 3 -> 1
-pwmx243 power -1 4 4 -> 1
-pwmx244 power -1 4 -1 -> 0
-pwmx245 power -1 4 -2 -> 1
-pwmx246 power -1 5 1 -> -0
-pwmx247 power -1 5 2 -> -1
-pwmx248 power -1 5 3 -> -1
-pwmx249 power -1 5 4 -> -1
-pwmx250 power -1 5 -1 -> -0
-pwmx251 power -1 5 -2 -> -1
-
--- Randomly chosen larger values
-pwmx252 power 0 4 7 -> 0
-pwmx253 power -4 5 -9 -> -7
-pwmx254 power -5 4 -9 -> 4
-pwmx255 power -50 29 2 -> -0
-pwmx256 power -1 83 3 -> -1
-pwmx257 power -55 65 -75 -> -25
-pwmx258 power -613 151 -302 -> -9
-pwmx259 power 551 23 -35 -> 31
-pwmx260 power 51 142 942 -> 9
-pwmx261 power 6886 9204 -6091 -> 5034
-pwmx262 power 3057 5890 -3 -> 0
-pwmx263 power 56 4438 5365 -> 521
-pwmx264 power 96237 35669 -46669 -> 30717
-pwmx265 power 40011 34375 -57611 -> 625
-pwmx266 power 44317 38493 -12196 -> 11081
-pwmx267 power -282368 895633 -235870 -> -220928
-pwmx268 power 77328 852553 -405529 -> 129173
-pwmx269 power -929659 855713 650348 -> -90803
-pwmx270 power 907057 6574309 4924768 -> 3018257
-pwmx271 power -2887757 3198492 -5864352 -> 3440113
-pwmx272 power -247310 657371 -7415739 -> -1301840
-pwmx273 power -8399046 45334087 -22395020 -> -18515896
-pwmx274 power 79621397 4850236 1486555 -> 928706
-pwmx275 power 96012251 27971901 69609031 -> 50028729
-pwmx276 power -907335481 74127986 582330017 -> 51527187
-pwmx277 power -141192960 821063826 -260877928 -> 112318560
-pwmx278 power -501711702 934355994 82135143 -> 66586995
-pwmx279 power -9256358075 8900900138 -467222031 -> 95800246
-pwmx280 power -7031964291 1751257483 -935334498 -> -607626609
-pwmx281 power 8494314971 8740197252 107522491 -> 17373655
-pwmx282 power 88306216890 87477374166 -23498076 -> 15129528
-pwmx283 power -33939432478 7170196239 22133583 -> -11017036
-pwmx284 power 19466222767 30410710614 305752056 -> 191509537
-pwmx285 power -864942494008 370558899638 346688856 -> 56956768
-pwmx286 power -525406225603 345700226898 237163621 -> 56789534
-pwmx287 power 464612215955 312474621651 -329485700 -> 1853975
-pwmx288 power -1664283031244 3774474669855 919022867 -> -516034520
-pwmx289 power -3472438506913 7407327549995 -451206854 -> -74594761
-pwmx290 power -4223662152949 6891069279069 499843503 -> -80135290
-pwmx291 power -44022119276816 8168266170326 569679509 -> 375734475
-pwmx292 power -66195891207902 12532690555875 -243262129 -> -113186833
-pwmx293 power -69039911263164 52726605857673 360625196 -> -268662748
-pwmx294 power -299010116699208 885092589359231 -731310123 -> -104103765
-pwmx295 power -202495776299758 501159122943145 -686234870 -> -135511878
-pwmx296 power -595411478087676 836269270472481 -214614901 -> -183440819
-pwmx297 power -139555381056229 1324808520020507 -228944738 -> -218991473
-pwmx298 power 7846356250770543 1798045051036814 -101028985 -> 7805179
-pwmx299 power -4298015862709415 604966944844209 880212893 -> -87408671
-pwmx300 power -37384897538910893 76022206995659295 -930512842 -> -697757157
-pwmx301 power 82166659028005443 23375408251767704 817270700 -> 770697001
-pwmx302 power 97420301198165641 72213282983416924 947519716 -> 610711721
-pwmx303 power 913382043453243607 449681707248500262 211135545 -> 79544899
-pwmx304 power -313823613418052171 534579409610142937 -943062968 -> -446001379
-pwmx305 power -928106516894494093 760020177330116509 -50043994 -> -46010575
-pwmx306 power 4692146601679439796 4565354511806767804 -667339075 -> 480272081
-pwmx307 power 9722256633509177930 7276568791860505790 792675321 -> 182879752
-pwmx308 power 8689899484830064228 429082967129615261 -844555637 -> 270374557
-
--- All inputs must be integers
-pwmx309 power 2.1 3 1 -> NaN Invalid_operation
-pwmx310 power 0.4 1 5 -> NaN Invalid_operation
-pwmx311 power 2 3.1 5 -> NaN Invalid_operation
-pwmx312 power 13 -1.2 10 -> NaN Invalid_operation
-pwmx313 power 2 3 5.1 -> NaN Invalid_operation
-
--- Second argument must be nonnegative (-0 is okay)
-pwmx314 power 2 -3 5 -> NaN Invalid_operation
-pwmx315 power 7 -1 1 -> NaN Invalid_operation
-pwmx316 power 0 -2 6 -> NaN Invalid_operation
-
--- Third argument must be nonzero
-pwmx317 power 13 1003 0 -> NaN Invalid_operation
-pwmx318 power 1 0 0E+987 -> NaN Invalid_operation
-pwmx319 power 0 2 -0 -> NaN Invalid_operation
-
--- Integers are fine, no matter how they're expressed
-pwmx320 power 13.0 117.00 1E+2 -> 33
-pwmx321 power -2E+3 1.1E+10 -12323 -> 4811
-pwmx322 power 20 0E-300 143 -> 1
-pwmx323 power -20 -0E+1005 1179 -> 1
-pwmx324 power 0E-1001 17 5.6E+4 -> 0
-
--- Modulus must not exceed precision
-pwmx325 power 0 1 1234567890 -> NaN Invalid_operation
-pwmx326 power 1 0 1000000000 -> NaN Invalid_operation
-pwmx327 power -23 5 -1000000000 -> NaN Invalid_operation
-pwmx328 power 41557 213 -999999999 -> 47650456
-pwmx329 power -2134 199 999999997 -> -946957912
-
--- Huge base shouldn't present any problems
-pwmx330 power 1.23E+123456791 10123898 17291065 -> 5674045
-
--- Large exponent, may be slow
--- (if second argument is 1En then expect O(n) running time)
-pwmx331 power 1000288896 9.87E+12347 93379908 -> 43224924
-
--- Triple NaN propagation (adapted from examples in fma.decTest)
-pwmx400 power  NaN2  NaN3  NaN5   ->  NaN2
-pwmx401 power  1     NaN3  NaN5   ->  NaN3
-pwmx402 power  1     1     NaN5   ->  NaN5
-pwmx403 power  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation
-pwmx404 power  1     sNaN2 sNaN3  ->  NaN2 Invalid_operation
-pwmx405 power  1     1     sNaN3  ->  NaN3 Invalid_operation
-pwmx406 power  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation
-pwmx407 power  NaN7  sNaN2 sNaN3  ->  NaN2 Invalid_operation
-pwmx408 power  NaN7  NaN5  sNaN3  ->  NaN3 Invalid_operation
-
--- Infinities not allowed
-pwmx410 power Inf 1 1 -> NaN Invalid_operation
-pwmx411 power 1 Inf 1 -> NaN Invalid_operation
-pwmx412 power 1 1 Inf -> NaN Invalid_operation
-pwmx413 power -Inf 1 1 -> NaN Invalid_operation
-pwmx414 power 1 -Inf 1 -> NaN Invalid_operation
-pwmx415 power 1 1 -Inf -> NaN Invalid_operation
-
--- Just for fun: 1729 is a Carmichael number
-pwmx420 power 0 1728 1729 -> 0
-pwmx421 power 1 1728 1729 -> 1
-pwmx422 power 2 1728 1729 -> 1
-pwmx423 power 3 1728 1729 -> 1
-pwmx424 power 4 1728 1729 -> 1
-pwmx425 power 5 1728 1729 -> 1
-pwmx426 power 6 1728 1729 -> 1
-pwmx427 power 7 1728 1729 -> 742
-pwmx428 power 8 1728 1729 -> 1
-pwmx429 power 9 1728 1729 -> 1
-pwmx430 power 10 1728 1729 -> 1
-pwmx431 power 11 1728 1729 -> 1
-pwmx432 power 12 1728 1729 -> 1
-pwmx433 power 13 1728 1729 -> 533
-pwmx434 power 14 1728 1729 -> 742
-pwmx435 power 15 1728 1729 -> 1
-pwmx436 power 16 1728 1729 -> 1
-pwmx437 power 17 1728 1729 -> 1
-pwmx438 power 18 1728 1729 -> 1
-pwmx439 power 19 1728 1729 -> 456
-pwmx440 power 20 1728 1729 -> 1
-
--- plus and minus zero in various rounding modes (see issue 11131)
-extended: 1
-precision: 9
-maxexponent: 384
-minexponent: -383
-
-rounding: half_even
-plux1000 plus 0.0 -> 0.0
-plux1001 plus -0.0 -> 0.0
-minx1000 minus 0.0 -> 0.0
-minx1001 minus -0.0 -> 0.0
-absx1000 abs 0.0 -> 0.0
-absx1001 abs -0.0 -> 0.0
-
-rounding: half_up
-plux1010 plus 0.0 -> 0.0
-minx1010 minus 0.0 -> 0.0
-plux1011 plus -0.0 -> 0.0
-minx1011 minus -0.0 -> 0.0
-absx1010 abs 0.0 -> 0.0
-absx1011 abs -0.0 -> 0.0
-
-rounding: ceiling
-plux1020 plus 0.0 -> 0.0
-minx1020 minus 0.0 -> 0.0
-plux1021 plus -0.0 -> 0.0
-minx1021 minus -0.0 -> 0.0
-absx1020 abs 0.0 -> 0.0
-absx1021 abs -0.0 -> 0.0
-
-rounding: floor
-plux1030 plus 0.0 -> 0.0
-minx1030 minus 0.0 -> -0.0
-plux1031 plus -0.0 -> -0.0
-minx1031 minus -0.0 -> 0.0
-absx1030 abs 0.0 -> 0.0
-absx1031 abs -0.0 -> 0.0
-
-rounding: down
-plux1040 plus 0.0 -> 0.0
-minx1040 minus 0.0 -> 0.0
-plux1041 plus -0.0 -> 0.0
-minx1041 minus -0.0 -> 0.0
-absx1040 abs 0.0 -> 0.0
-absx1041 abs -0.0 -> 0.0
-
-rounding: up
-plux1050 plus 0.0 -> 0.0
-minx1050 minus 0.0 -> 0.0
-plux1051 plus -0.0 -> 0.0
-minx1051 minus -0.0 -> 0.0
-absx1050 abs 0.0 -> 0.0
-absx1051 abs -0.0 -> 0.0
-
-rounding: half_down
-plux1060 plus 0.0 -> 0.0
-minx1060 minus 0.0 -> 0.0
-plux1061 plus -0.0 -> 0.0
-minx1061 minus -0.0 -> 0.0
-absx1060 abs 0.0 -> 0.0
-absx1061 abs -0.0 -> 0.0
-
-rounding: 05up
-plux1070 plus 0.0 -> 0.0
-minx1070 minus 0.0 -> 0.0
-plux1071 plus -0.0 -> 0.0
-minx1071 minus -0.0 -> 0.0
-absx1070 abs 0.0 -> 0.0
-absx1071 abs -0.0 -> 0.0
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/fma.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/fma.decTest
deleted file mode 100644
index b0a81ca..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/fma.decTest
+++ /dev/null
@@ -1,3426 +0,0 @@
-------------------------------------------------------------------------
--- fma.decTest -- decimal fused multiply add                          --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
--- These tests comprese three parts:
---   1. Sanity checks and other three-operand tests (especially those
---      where the fused operation makes a difference)
---   2. Multiply tests (third operand is neutral zero [0E+emax])
---   3. Addition tests (first operand is 1)
--- The multiply and addition tests are extensive because FMA may have
--- its own dedicated multiplication or addition routine(s), and they
--- also inherently check the left-to-right properties.
-
--- Sanity checks
-fmax0001 fma  1   1   1 ->   2
-fmax0002 fma  1   1   2 ->   3
-fmax0003 fma  2   2   3 ->   7
-fmax0004 fma  9   9   9 ->  90
-fmax0005 fma -1   1   1 ->   0
-fmax0006 fma -1   1   2 ->   1
-fmax0007 fma -2   2   3 ->  -1
-fmax0008 fma -9   9   9 -> -72
-fmax0011 fma  1  -1   1 ->   0
-fmax0012 fma  1  -1   2 ->   1
-fmax0013 fma  2  -2   3 ->  -1
-fmax0014 fma  9  -9   9 -> -72
-fmax0015 fma  1   1  -1 ->   0
-fmax0016 fma  1   1  -2 ->  -1
-fmax0017 fma  2   2  -3 ->   1
-fmax0018 fma  9   9  -9 ->  72
-fmax0019 fma  3   5   7 ->  22
-fmax0029 fma  3  -5   7 ->  -8
-
--- non-integer exacts
-fma0100  fma    25.2   63.6   -438  ->  1164.72
-fma0101  fma   0.301  0.380    334  ->  334.114380
-fma0102  fma    49.2   -4.8   23.3  ->  -212.86
-fma0103  fma    4.22  0.079  -94.6  ->  -94.26662
-fma0104  fma     903  0.797  0.887  ->  720.578
-fma0105  fma    6.13   -161   65.9  ->  -921.03
-fma0106  fma    28.2    727   5.45  ->  20506.85
-fma0107  fma       4    605    688  ->  3108
-fma0108  fma    93.3   0.19  0.226  ->  17.953
-fma0109  fma   0.169   -341   5.61  ->  -52.019
-fma0110  fma   -72.2     30  -51.2  ->  -2217.2
-fma0111  fma  -0.409     13   20.4  ->  15.083
-fma0112  fma     317   77.0   19.0  ->  24428.0
-fma0113  fma      47   6.58   1.62  ->  310.88
-fma0114  fma    1.36  0.984  0.493  ->  1.83124
-fma0115  fma    72.7    274   1.56  ->  19921.36
-fma0116  fma     335    847     83  ->  283828
-fma0117  fma     666  0.247   25.4  ->  189.902
-fma0118  fma   -3.87   3.06   78.0  ->  66.1578
-fma0119  fma   0.742    192   35.6  ->  178.064
-fma0120  fma   -91.6   5.29  0.153  ->  -484.411
-
--- cases where result is different from separate multiply + add; each
--- is preceded by the result of unfused multiply and add
--- [this is about 20% of all similar  cases in general]
---               888565290   1557.96930  -86087.7578  -> 1.38435735E+12
-fma0201  fma     888565290   1557.96930  -86087.7578  -> 1.38435736E+12  Inexact Rounded
---             -85519342.9    735155419     42010431  -> -6.28700084E+16
-fma0205  fma   -85519342.9    735155419     42010431  -> -6.28700083E+16 Inexact Rounded
---                -98025.5  -294603.472   10414348.2  -> 2.88890669E+10
-fma0208  fma      -98025.5  -294603.472   10414348.2  -> 2.88890670E+10  Inexact Rounded
---              5967627.39   83526540.6   498494.810  -> 4.98455271E+14
-fma0211  fma    5967627.39   83526540.6   498494.810  -> 4.98455272E+14  Inexact Rounded
---               3456.9433    874.39518   197866.615  ->  3220601.18
-fma0216  fma     3456.9433    874.39518   197866.615  ->  3220601.17     Inexact Rounded
---              62769.8287   2096.98927    48.420317  ->  131627705
-fma0218  fma    62769.8287   2096.98927    48.420317  ->  131627706      Inexact Rounded
---               -68.81500   59961113.9     -8988862  -> -4.13521291E+9
-fma0219  fma     -68.81500   59961113.9     -8988862  -> -4.13521292E+9  Inexact Rounded
---              2126341.02   63491.5152    302427455  -> 1.35307040E+11
-fma0226  fma    2126341.02   63491.5152    302427455  -> 1.35307041E+11  Inexact Rounded
-
-
--- Infinite combinations
-fmax0800 fma  Inf   Inf   Inf    ->  Infinity
-fmax0801 fma  Inf   Inf  -Inf    ->  NaN Invalid_operation
-fmax0802 fma  Inf  -Inf   Inf    ->  NaN Invalid_operation
-fmax0803 fma  Inf  -Inf  -Inf    -> -Infinity
-fmax0804 fma -Inf   Inf   Inf    ->  NaN Invalid_operation
-fmax0805 fma -Inf   Inf  -Inf    -> -Infinity
-fmax0806 fma -Inf  -Inf   Inf    ->  Infinity
-fmax0807 fma -Inf  -Inf  -Inf    ->  NaN Invalid_operation
-fmax0808 fma -Inf   0       1    ->  NaN Invalid_operation
-fmax0809 fma -Inf   0     NaN    ->  NaN Invalid_operation
-
--- Triple NaN propagation
-fmax0900 fma  NaN2  NaN3  NaN5   ->  NaN2
-fmax0901 fma  0     NaN3  NaN5   ->  NaN3
-fmax0902 fma  0     0     NaN5   ->  NaN5
--- first sNaN wins (consider qNaN from earlier sNaN being
--- overridden by an sNaN in third operand)
-fmax0903 fma  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation
-fmax0904 fma  0     sNaN2 sNaN3  ->  NaN2 Invalid_operation
-fmax0905 fma  0     0     sNaN3  ->  NaN3 Invalid_operation
-fmax0906 fma  sNaN1 sNaN2 sNaN3  ->  NaN1 Invalid_operation
-fmax0907 fma  NaN7  sNaN2 sNaN3  ->  NaN2 Invalid_operation
-fmax0908 fma  NaN7  NaN5  sNaN3  ->  NaN3 Invalid_operation
-
--- MULTIPLICATION TESTS ------------------------------------------------
--- sanity checks (as base, above)
-fmax2000 fma 2      2  0E+999999  -> 4
-fmax2001 fma 2      3  0E+999999  -> 6
-fmax2002 fma 5      1  0E+999999  -> 5
-fmax2003 fma 5      2  0E+999999  -> 10
-fmax2004 fma 1.20   2  0E+999999  -> 2.40
-fmax2005 fma 1.20   0  0E+999999  -> 0.00
-fmax2006 fma 1.20  -2  0E+999999  -> -2.40
-fmax2007 fma -1.20  2  0E+999999  -> -2.40
-fmax2008 fma -1.20  0  0E+999999  -> 0.00
-fmax2009 fma -1.20 -2  0E+999999  -> 2.40
-fmax2010 fma 5.09 7.1  0E+999999  -> 36.139
-fmax2011 fma 2.5    4  0E+999999  -> 10.0
-fmax2012 fma 2.50   4  0E+999999  -> 10.00
-fmax2013 fma 1.23456789 1.00000000  0E+999999  -> 1.23456789 Rounded
-fmax2014 fma 9.999999999 9.999999999  0E+999999  -> 100.000000 Inexact Rounded
-fmax2015 fma 2.50   4  0E+999999  -> 10.00
-precision: 6
-fmax2016 fma 2.50   4  0E+999999  -> 10.00
-fmax2017 fma  9.999999  9.999999  0E+999999  ->  100.000 Inexact Rounded
-fmax2018 fma  9.999999 -9.999999  0E+999999  -> -100.000 Inexact Rounded
-fmax2019 fma -9.999999  9.999999  0E+999999  -> -100.000 Inexact Rounded
-fmax2020 fma -9.999999 -9.999999  0E+999999  ->  100.000 Inexact Rounded
-
--- 1999.12.21: next one is a edge case if intermediate longs are used
-precision: 15
-fmax2059 fma 999999999999 9765625  0E+999999  -> 9.76562499999023E+18 Inexact Rounded
-precision: 30
-fmax2160 fma 999999999999 9765625  0E+999999  -> 9765624999990234375
-precision: 9
------
-
--- zeros, etc.
-fmax2021 fma  0      0      0E+999999  ->  0
-fmax2022 fma  0     -0      0E+999999  ->  0
-fmax2023 fma -0      0      0E+999999  ->  0
-fmax2024 fma -0     -0      0E+999999  ->  0
-fmax2025 fma -0.0   -0.0    0E+999999  ->  0.00
-fmax2026 fma -0.0   -0.0    0E+999999  ->  0.00
-fmax2027 fma -0.0   -0.0    0E+999999  ->  0.00
-fmax2028 fma -0.0   -0.0    0E+999999  ->  0.00
-fmax2030 fma  5.00   1E-3   0E+999999  ->  0.00500
-fmax2031 fma  00.00  0.000  0E+999999  ->  0.00000
-fmax2032 fma  00.00  0E-3   0E+999999  ->  0.00000     -- rhs is 0
-fmax2033 fma  0E-3   00.00  0E+999999  ->  0.00000     -- lhs is 0
-fmax2034 fma -5.00   1E-3   0E+999999  -> -0.00500
-fmax2035 fma -00.00  0.000  0E+999999  ->  0.00000
-fmax2036 fma -00.00  0E-3   0E+999999  ->  0.00000     -- rhs is 0
-fmax2037 fma -0E-3   00.00  0E+999999  ->  0.00000     -- lhs is 0
-fmax2038 fma  5.00  -1E-3   0E+999999  -> -0.00500
-fmax2039 fma  00.00 -0.000  0E+999999  ->  0.00000
-fmax2040 fma  00.00 -0E-3   0E+999999  ->  0.00000     -- rhs is 0
-fmax2041 fma  0E-3  -00.00  0E+999999  ->  0.00000     -- lhs is 0
-fmax2042 fma -5.00  -1E-3   0E+999999  ->  0.00500
-fmax2043 fma -00.00 -0.000  0E+999999  ->  0.00000
-fmax2044 fma -00.00 -0E-3   0E+999999  ->  0.00000     -- rhs is 0
-fmax2045 fma -0E-3  -00.00  0E+999999  ->  0.00000     -- lhs is 0
-
--- examples from decarith multiply
-fmax2050 fma 1.20 3         0E+999999  -> 3.60
-fmax2051 fma 7    3         0E+999999  -> 21
-fmax2052 fma 0.9  0.8       0E+999999  -> 0.72
-fmax2053 fma 0.9  -0        0E+999999  -> 0.0
-fmax2054 fma 654321 654321  0E+999999  -> 4.28135971E+11  Inexact Rounded
-
-fmax2060 fma 123.45 1e7   0E+999999  ->  1.2345E+9
-fmax2061 fma 123.45 1e8   0E+999999  ->  1.2345E+10
-fmax2062 fma 123.45 1e+9  0E+999999  ->  1.2345E+11
-fmax2063 fma 123.45 1e10  0E+999999  ->  1.2345E+12
-fmax2064 fma 123.45 1e11  0E+999999  ->  1.2345E+13
-fmax2065 fma 123.45 1e12  0E+999999  ->  1.2345E+14
-fmax2066 fma 123.45 1e13  0E+999999  ->  1.2345E+15
-
-
--- test some intermediate lengths
-precision: 9
-fmax2080 fma 0.1 123456789           0E+999999  -> 12345678.9
-fmax2081 fma 0.1 1234567891          0E+999999  -> 123456789 Inexact Rounded
-fmax2082 fma 0.1 12345678912         0E+999999  -> 1.23456789E+9 Inexact Rounded
-fmax2083 fma 0.1 12345678912345      0E+999999  -> 1.23456789E+12 Inexact Rounded
-fmax2084 fma 0.1 123456789           0E+999999  -> 12345678.9
-precision: 8
-fmax2085 fma 0.1 12345678912         0E+999999  -> 1.2345679E+9 Inexact Rounded
-fmax2086 fma 0.1 12345678912345      0E+999999  -> 1.2345679E+12 Inexact Rounded
-precision: 7
-fmax2087 fma 0.1 12345678912         0E+999999  -> 1.234568E+9 Inexact Rounded
-fmax2088 fma 0.1 12345678912345      0E+999999  -> 1.234568E+12 Inexact Rounded
-
-precision: 9
-fmax2090 fma 123456789          0.1  0E+999999  -> 12345678.9
-fmax2091 fma 1234567891         0.1  0E+999999  -> 123456789 Inexact Rounded
-fmax2092 fma 12345678912        0.1  0E+999999  -> 1.23456789E+9 Inexact Rounded
-fmax2093 fma 12345678912345     0.1  0E+999999  -> 1.23456789E+12 Inexact Rounded
-fmax2094 fma 123456789          0.1  0E+999999  -> 12345678.9
-precision: 8
-fmax2095 fma 12345678912        0.1  0E+999999  -> 1.2345679E+9 Inexact Rounded
-fmax2096 fma 12345678912345     0.1  0E+999999  -> 1.2345679E+12 Inexact Rounded
-precision: 7
-fmax2097 fma 12345678912        0.1  0E+999999  -> 1.234568E+9 Inexact Rounded
-fmax2098 fma 12345678912345     0.1  0E+999999  -> 1.234568E+12 Inexact Rounded
-
--- test some more edge cases and carries
-maxexponent: 9999
-minexponent: -9999
-precision: 33
-fmax2101 fma 9 9    0E+999999  -> 81
-fmax2102 fma 9 90    0E+999999  -> 810
-fmax2103 fma 9 900    0E+999999  -> 8100
-fmax2104 fma 9 9000    0E+999999  -> 81000
-fmax2105 fma 9 90000    0E+999999  -> 810000
-fmax2106 fma 9 900000    0E+999999  -> 8100000
-fmax2107 fma 9 9000000    0E+999999  -> 81000000
-fmax2108 fma 9 90000000    0E+999999  -> 810000000
-fmax2109 fma 9 900000000    0E+999999  -> 8100000000
-fmax2110 fma 9 9000000000    0E+999999  -> 81000000000
-fmax2111 fma 9 90000000000    0E+999999  -> 810000000000
-fmax2112 fma 9 900000000000    0E+999999  -> 8100000000000
-fmax2113 fma 9 9000000000000    0E+999999  -> 81000000000000
-fmax2114 fma 9 90000000000000    0E+999999  -> 810000000000000
-fmax2115 fma 9 900000000000000    0E+999999  -> 8100000000000000
-fmax2116 fma 9 9000000000000000    0E+999999  -> 81000000000000000
-fmax2117 fma 9 90000000000000000    0E+999999  -> 810000000000000000
-fmax2118 fma 9 900000000000000000    0E+999999  -> 8100000000000000000
-fmax2119 fma 9 9000000000000000000    0E+999999  -> 81000000000000000000
-fmax2120 fma 9 90000000000000000000    0E+999999  -> 810000000000000000000
-fmax2121 fma 9 900000000000000000000    0E+999999  -> 8100000000000000000000
-fmax2122 fma 9 9000000000000000000000    0E+999999  -> 81000000000000000000000
-fmax2123 fma 9 90000000000000000000000    0E+999999  -> 810000000000000000000000
--- test some more edge cases without carries
-fmax2131 fma 3 3    0E+999999  -> 9
-fmax2132 fma 3 30    0E+999999  -> 90
-fmax2133 fma 3 300    0E+999999  -> 900
-fmax2134 fma 3 3000    0E+999999  -> 9000
-fmax2135 fma 3 30000    0E+999999  -> 90000
-fmax2136 fma 3 300000    0E+999999  -> 900000
-fmax2137 fma 3 3000000    0E+999999  -> 9000000
-fmax2138 fma 3 30000000    0E+999999  -> 90000000
-fmax2139 fma 3 300000000    0E+999999  -> 900000000
-fmax2140 fma 3 3000000000    0E+999999  -> 9000000000
-fmax2141 fma 3 30000000000    0E+999999  -> 90000000000
-fmax2142 fma 3 300000000000    0E+999999  -> 900000000000
-fmax2143 fma 3 3000000000000    0E+999999  -> 9000000000000
-fmax2144 fma 3 30000000000000    0E+999999  -> 90000000000000
-fmax2145 fma 3 300000000000000    0E+999999  -> 900000000000000
-fmax2146 fma 3 3000000000000000    0E+999999  -> 9000000000000000
-fmax2147 fma 3 30000000000000000    0E+999999  -> 90000000000000000
-fmax2148 fma 3 300000000000000000    0E+999999  -> 900000000000000000
-fmax2149 fma 3 3000000000000000000    0E+999999  -> 9000000000000000000
-fmax2150 fma 3 30000000000000000000    0E+999999  -> 90000000000000000000
-fmax2151 fma 3 300000000000000000000    0E+999999  -> 900000000000000000000
-fmax2152 fma 3 3000000000000000000000    0E+999999  -> 9000000000000000000000
-fmax2153 fma 3 30000000000000000000000    0E+999999  -> 90000000000000000000000
-
-maxexponent: 999999
-minexponent: -999999
-precision: 9
--- test some cases that are close to exponent overflow/underflow
-fmax2170 fma 1 9e999999     0E+999999  -> 9E+999999
-fmax2171 fma 1 9.9e999999   0E+999999  -> 9.9E+999999
-fmax2172 fma 1 9.99e999999  0E+999999  -> 9.99E+999999
-fmax2173 fma 9e999999    1  0E+999999  -> 9E+999999
-fmax2174 fma 9.9e999999  1  0E+999999  -> 9.9E+999999
-fmax2176 fma 9.99e999999 1  0E+999999  -> 9.99E+999999
-fmax2177 fma 1 9.99999e999999  0E+999999  -> 9.99999E+999999
-fmax2178 fma 9.99999e999999 1  0E+999999  -> 9.99999E+999999
-
-fmax2180 fma 0.1 9e-999998    0E+999999  -> 9E-999999
-fmax2181 fma 0.1 99e-999998   0E+999999  -> 9.9E-999998
-fmax2182 fma 0.1 999e-999998  0E+999999  -> 9.99E-999997
-
-fmax2183 fma 0.1 9e-999998      0E+999999  -> 9E-999999
-fmax2184 fma 0.1 99e-999998     0E+999999  -> 9.9E-999998
-fmax2185 fma 0.1 999e-999998    0E+999999  -> 9.99E-999997
-fmax2186 fma 0.1 999e-999997    0E+999999  -> 9.99E-999996
-fmax2187 fma 0.1 9999e-999997   0E+999999  -> 9.999E-999995
-fmax2188 fma 0.1 99999e-999997  0E+999999  -> 9.9999E-999994
-
-fmax2190 fma 1 9e-999998    0E+999999  -> 9E-999998
-fmax2191 fma 1 99e-999998   0E+999999  -> 9.9E-999997
-fmax2192 fma 1 999e-999998  0E+999999  -> 9.99E-999996
-fmax2193 fma 9e-999998   1  0E+999999  -> 9E-999998
-fmax2194 fma 99e-999998  1  0E+999999  -> 9.9E-999997
-fmax2195 fma 999e-999998 1  0E+999999  -> 9.99E-999996
-
--- long operand triangle
-precision: 33
-fmax2246 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369671916511992830 Inexact Rounded
-precision: 32
-fmax2247 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967191651199283  Inexact Rounded
-precision: 31
-fmax2248 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933696719165119928   Inexact Rounded
-precision: 30
-fmax2249 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369671916511993    Inexact Rounded
-precision: 29
-fmax2250 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967191651199     Inexact Rounded
-precision: 28
-fmax2251 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933696719165120      Inexact Rounded
-precision: 27
-fmax2252 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369671916512       Inexact Rounded
-precision: 26
-fmax2253 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967191651        Inexact Rounded
-precision: 25
-fmax2254 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933696719165         Inexact Rounded
-precision: 24
-fmax2255 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369671917          Inexact Rounded
-precision: 23
-fmax2256 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967192           Inexact Rounded
-precision: 22
-fmax2257 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933696719            Inexact Rounded
-precision: 21
-fmax2258 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193369672             Inexact Rounded
-precision: 20
-fmax2259 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119336967              Inexact Rounded
-precision: 19
-fmax2260 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011933697               Inexact Rounded
-precision: 18
-fmax2261 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193370                Inexact Rounded
-precision: 17
-fmax2262 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119337                 Inexact Rounded
-precision: 16
-fmax2263 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908011934                  Inexact Rounded
-precision: 15
-fmax2264 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801193                   Inexact Rounded
-precision: 14
-fmax2265 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080119                    Inexact Rounded
-precision: 13
-fmax2266 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908012                     Inexact Rounded
-precision: 12
-fmax2267 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.290801                      Inexact Rounded
-precision: 11
-fmax2268 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29080                       Inexact Rounded
-precision: 10
-fmax2269 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.2908                        Inexact Rounded
-precision:  9
-fmax2270 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.291                         Inexact Rounded
-precision:  8
-fmax2271 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.29                          Inexact Rounded
-precision:  7
-fmax2272 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433.3                           Inexact Rounded
-precision:  6
-fmax2273 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 145433                            Inexact Rounded
-precision:  5
-fmax2274 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1.4543E+5                         Inexact Rounded
-precision:  4
-fmax2275 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1.454E+5                         Inexact Rounded
-precision:  3
-fmax2276 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1.45E+5                         Inexact Rounded
-precision:  2
-fmax2277 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1.5E+5                         Inexact Rounded
-precision:  1
-fmax2278 fma 30269.587755640502150977251770554 4.8046009735990873395936309640543  0E+999999  -> 1E+5                          Inexact Rounded
-
--- test some edge cases with exact rounding
-maxexponent: 9999
-minexponent: -9999
-precision: 9
-fmax2301 fma 9 9    0E+999999  -> 81
-fmax2302 fma 9 90    0E+999999  -> 810
-fmax2303 fma 9 900    0E+999999  -> 8100
-fmax2304 fma 9 9000    0E+999999  -> 81000
-fmax2305 fma 9 90000    0E+999999  -> 810000
-fmax2306 fma 9 900000    0E+999999  -> 8100000
-fmax2307 fma 9 9000000    0E+999999  -> 81000000
-fmax2308 fma 9 90000000    0E+999999  -> 810000000
-fmax2309 fma 9 900000000    0E+999999  -> 8.10000000E+9   Rounded
-fmax2310 fma 9 9000000000    0E+999999  -> 8.10000000E+10  Rounded
-fmax2311 fma 9 90000000000    0E+999999  -> 8.10000000E+11  Rounded
-fmax2312 fma 9 900000000000    0E+999999  -> 8.10000000E+12  Rounded
-fmax2313 fma 9 9000000000000    0E+999999  -> 8.10000000E+13  Rounded
-fmax2314 fma 9 90000000000000    0E+999999  -> 8.10000000E+14  Rounded
-fmax2315 fma 9 900000000000000    0E+999999  -> 8.10000000E+15  Rounded
-fmax2316 fma 9 9000000000000000    0E+999999  -> 8.10000000E+16  Rounded
-fmax2317 fma 9 90000000000000000    0E+999999  -> 8.10000000E+17  Rounded
-fmax2318 fma 9 900000000000000000    0E+999999  -> 8.10000000E+18  Rounded
-fmax2319 fma 9 9000000000000000000    0E+999999  -> 8.10000000E+19  Rounded
-fmax2320 fma 9 90000000000000000000    0E+999999  -> 8.10000000E+20  Rounded
-fmax2321 fma 9 900000000000000000000    0E+999999  -> 8.10000000E+21  Rounded
-fmax2322 fma 9 9000000000000000000000    0E+999999  -> 8.10000000E+22  Rounded
-fmax2323 fma 9 90000000000000000000000    0E+999999  -> 8.10000000E+23  Rounded
-
--- fastpath breakers
-precision:   29
-fmax2330 fma 1.491824697641270317824852952837224 1.105170918075647624811707826490246514675628614562883537345747603  0E+999999  -> 1.6487212707001281468486507878 Inexact Rounded
-precision:   55
-fmax2331 fma 0.8958341352965282506768545828765117803873717284891040428 0.8958341352965282506768545828765117803873717284891040428  0E+999999  -> 0.8025187979624784829842553829934069955890983696752228299 Inexact Rounded
-
-
--- tryzeros cases
-precision:   7
-rounding:    half_up
-maxExponent: 92
-minexponent: -92
-fmax2504  fma  0E-60 1000E-60   0E+999999  -> 0E-98 Clamped
-fmax2505  fma  100E+60 0E+60    0E+999999  -> 0E+92 Clamped
-
--- mixed with zeros
-maxexponent: 999999
-minexponent: -999999
-precision: 9
-fmax2541 fma  0    -1      0E+999999  ->  0
-fmax2542 fma -0    -1      0E+999999  ->  0
-fmax2543 fma  0     1      0E+999999  ->  0
-fmax2544 fma -0     1      0E+999999  ->  0
-fmax2545 fma -1     0      0E+999999  ->  0
-fmax2546 fma -1    -0      0E+999999  ->  0
-fmax2547 fma  1     0      0E+999999  ->  0
-fmax2548 fma  1    -0      0E+999999  ->  0
-
-fmax2551 fma  0.0  -1      0E+999999  ->  0.0
-fmax2552 fma -0.0  -1      0E+999999  ->  0.0
-fmax2553 fma  0.0   1      0E+999999  ->  0.0
-fmax2554 fma -0.0   1      0E+999999  ->  0.0
-fmax2555 fma -1.0   0      0E+999999  ->  0.0
-fmax2556 fma -1.0  -0      0E+999999  ->  0.0
-fmax2557 fma  1.0   0      0E+999999  ->  0.0
-fmax2558 fma  1.0  -0      0E+999999  ->  0.0
-
-fmax2561 fma  0    -1.0    0E+999999  ->  0.0
-fmax2562 fma -0    -1.0    0E+999999  ->  0.0
-fmax2563 fma  0     1.0    0E+999999  ->  0.0
-fmax2564 fma -0     1.0    0E+999999  ->  0.0
-fmax2565 fma -1     0.0    0E+999999  ->  0.0
-fmax2566 fma -1    -0.0    0E+999999  ->  0.0
-fmax2567 fma  1     0.0    0E+999999  ->  0.0
-fmax2568 fma  1    -0.0    0E+999999  ->  0.0
-
-fmax2571 fma  0.0  -1.0    0E+999999  ->  0.00
-fmax2572 fma -0.0  -1.0    0E+999999  ->  0.00
-fmax2573 fma  0.0   1.0    0E+999999  ->  0.00
-fmax2574 fma -0.0   1.0    0E+999999  ->  0.00
-fmax2575 fma -1.0   0.0    0E+999999  ->  0.00
-fmax2576 fma -1.0  -0.0    0E+999999  ->  0.00
-fmax2577 fma  1.0   0.0    0E+999999  ->  0.00
-fmax2578 fma  1.0  -0.0    0E+999999  ->  0.00
-
-
--- Specials
-fmax2580 fma  Inf  -Inf    0E+999999  -> -Infinity
-fmax2581 fma  Inf  -1000   0E+999999  -> -Infinity
-fmax2582 fma  Inf  -1      0E+999999  -> -Infinity
-fmax2583 fma  Inf  -0      0E+999999  ->  NaN  Invalid_operation
-fmax2584 fma  Inf   0      0E+999999  ->  NaN  Invalid_operation
-fmax2585 fma  Inf   1      0E+999999  ->  Infinity
-fmax2586 fma  Inf   1000   0E+999999  ->  Infinity
-fmax2587 fma  Inf   Inf    0E+999999  ->  Infinity
-fmax2588 fma -1000  Inf    0E+999999  -> -Infinity
-fmax2589 fma -Inf   Inf    0E+999999  -> -Infinity
-fmax2590 fma -1     Inf    0E+999999  -> -Infinity
-fmax2591 fma -0     Inf    0E+999999  ->  NaN  Invalid_operation
-fmax2592 fma  0     Inf    0E+999999  ->  NaN  Invalid_operation
-fmax2593 fma  1     Inf    0E+999999  ->  Infinity
-fmax2594 fma  1000  Inf    0E+999999  ->  Infinity
-fmax2595 fma  Inf   Inf    0E+999999  ->  Infinity
-
-fmax2600 fma -Inf  -Inf    0E+999999  ->  Infinity
-fmax2601 fma -Inf  -1000   0E+999999  ->  Infinity
-fmax2602 fma -Inf  -1      0E+999999  ->  Infinity
-fmax2603 fma -Inf  -0      0E+999999  ->  NaN  Invalid_operation
-fmax2604 fma -Inf   0      0E+999999  ->  NaN  Invalid_operation
-fmax2605 fma -Inf   1      0E+999999  -> -Infinity
-fmax2606 fma -Inf   1000   0E+999999  -> -Infinity
-fmax2607 fma -Inf   Inf    0E+999999  -> -Infinity
-fmax2608 fma -1000  Inf    0E+999999  -> -Infinity
-fmax2609 fma -Inf  -Inf    0E+999999  ->  Infinity
-fmax2610 fma -1    -Inf    0E+999999  ->  Infinity
-fmax2611 fma -0    -Inf    0E+999999  ->  NaN  Invalid_operation
-fmax2612 fma  0    -Inf    0E+999999  ->  NaN  Invalid_operation
-fmax2613 fma  1    -Inf    0E+999999  -> -Infinity
-fmax2614 fma  1000 -Inf    0E+999999  -> -Infinity
-fmax2615 fma  Inf  -Inf    0E+999999  -> -Infinity
-
-fmax2621 fma  NaN -Inf     0E+999999  ->  NaN
-fmax2622 fma  NaN -1000    0E+999999  ->  NaN
-fmax2623 fma  NaN -1       0E+999999  ->  NaN
-fmax2624 fma  NaN -0       0E+999999  ->  NaN
-fmax2625 fma  NaN  0       0E+999999  ->  NaN
-fmax2626 fma  NaN  1       0E+999999  ->  NaN
-fmax2627 fma  NaN  1000    0E+999999  ->  NaN
-fmax2628 fma  NaN  Inf     0E+999999  ->  NaN
-fmax2629 fma  NaN  NaN     0E+999999  ->  NaN
-fmax2630 fma -Inf  NaN     0E+999999  ->  NaN
-fmax2631 fma -1000 NaN     0E+999999  ->  NaN
-fmax2632 fma -1    NaN     0E+999999  ->  NaN
-fmax2633 fma -0    NaN     0E+999999  ->  NaN
-fmax2634 fma  0    NaN     0E+999999  ->  NaN
-fmax2635 fma  1    NaN     0E+999999  ->  NaN
-fmax2636 fma  1000 NaN     0E+999999  ->  NaN
-fmax2637 fma  Inf  NaN     0E+999999  ->  NaN
-
-fmax2641 fma  sNaN -Inf    0E+999999  ->  NaN  Invalid_operation
-fmax2642 fma  sNaN -1000   0E+999999  ->  NaN  Invalid_operation
-fmax2643 fma  sNaN -1      0E+999999  ->  NaN  Invalid_operation
-fmax2644 fma  sNaN -0      0E+999999  ->  NaN  Invalid_operation
-fmax2645 fma  sNaN  0      0E+999999  ->  NaN  Invalid_operation
-fmax2646 fma  sNaN  1      0E+999999  ->  NaN  Invalid_operation
-fmax2647 fma  sNaN  1000   0E+999999  ->  NaN  Invalid_operation
-fmax2648 fma  sNaN  NaN    0E+999999  ->  NaN  Invalid_operation
-fmax2649 fma  sNaN sNaN    0E+999999  ->  NaN  Invalid_operation
-fmax2650 fma  NaN  sNaN    0E+999999  ->  NaN  Invalid_operation
-fmax2651 fma -Inf  sNaN    0E+999999  ->  NaN  Invalid_operation
-fmax2652 fma -1000 sNaN    0E+999999  ->  NaN  Invalid_operation
-fmax2653 fma -1    sNaN    0E+999999  ->  NaN  Invalid_operation
-fmax2654 fma -0    sNaN    0E+999999  ->  NaN  Invalid_operation
-fmax2655 fma  0    sNaN    0E+999999  ->  NaN  Invalid_operation
-fmax2656 fma  1    sNaN    0E+999999  ->  NaN  Invalid_operation
-fmax2657 fma  1000 sNaN    0E+999999  ->  NaN  Invalid_operation
-fmax2658 fma  Inf  sNaN    0E+999999  ->  NaN  Invalid_operation
-fmax2659 fma  NaN  sNaN    0E+999999  ->  NaN  Invalid_operation
-
--- propagating NaNs
-fmax2661 fma  NaN9 -Inf    0E+999999  ->  NaN9
-fmax2662 fma  NaN8  999    0E+999999  ->  NaN8
-fmax2663 fma  NaN71 Inf    0E+999999  ->  NaN71
-fmax2664 fma  NaN6  NaN5   0E+999999  ->  NaN6
-fmax2665 fma -Inf   NaN4   0E+999999  ->  NaN4
-fmax2666 fma -999   NaN33  0E+999999  ->  NaN33
-fmax2667 fma  Inf   NaN2   0E+999999  ->  NaN2
-
-fmax2671 fma  sNaN99 -Inf     0E+999999  ->  NaN99 Invalid_operation
-fmax2672 fma  sNaN98 -11      0E+999999  ->  NaN98 Invalid_operation
-fmax2673 fma  sNaN97  NaN     0E+999999  ->  NaN97 Invalid_operation
-fmax2674 fma  sNaN16 sNaN94   0E+999999  ->  NaN16 Invalid_operation
-fmax2675 fma  NaN95  sNaN93   0E+999999  ->  NaN93 Invalid_operation
-fmax2676 fma -Inf    sNaN92   0E+999999  ->  NaN92 Invalid_operation
-fmax2677 fma  088    sNaN91   0E+999999  ->  NaN91 Invalid_operation
-fmax2678 fma  Inf    sNaN90   0E+999999  ->  NaN90 Invalid_operation
-fmax2679 fma  NaN    sNaN89   0E+999999  ->  NaN89 Invalid_operation
-
-fmax2681 fma -NaN9 -Inf    0E+999999  -> -NaN9
-fmax2682 fma -NaN8  999    0E+999999  -> -NaN8
-fmax2683 fma -NaN71 Inf    0E+999999  -> -NaN71
-fmax2684 fma -NaN6 -NaN5   0E+999999  -> -NaN6
-fmax2685 fma -Inf  -NaN4   0E+999999  -> -NaN4
-fmax2686 fma -999  -NaN33  0E+999999  -> -NaN33
-fmax2687 fma  Inf  -NaN2   0E+999999  -> -NaN2
-
-fmax2691 fma -sNaN99 -Inf     0E+999999  -> -NaN99 Invalid_operation
-fmax2692 fma -sNaN98 -11      0E+999999  -> -NaN98 Invalid_operation
-fmax2693 fma -sNaN97  NaN     0E+999999  -> -NaN97 Invalid_operation
-fmax2694 fma -sNaN16 -sNaN94  0E+999999  -> -NaN16 Invalid_operation
-fmax2695 fma -NaN95  -sNaN93  0E+999999  -> -NaN93 Invalid_operation
-fmax2696 fma -Inf    -sNaN92  0E+999999  -> -NaN92 Invalid_operation
-fmax2697 fma  088    -sNaN91  0E+999999  -> -NaN91 Invalid_operation
-fmax2698 fma  Inf    -sNaN90  0E+999999  -> -NaN90 Invalid_operation
-fmax2699 fma -NaN    -sNaN89  0E+999999  -> -NaN89 Invalid_operation
-
-fmax2701 fma -NaN  -Inf    0E+999999  -> -NaN
-fmax2702 fma -NaN   999    0E+999999  -> -NaN
-fmax2703 fma -NaN   Inf    0E+999999  -> -NaN
-fmax2704 fma -NaN  -NaN    0E+999999  -> -NaN
-fmax2705 fma -Inf  -NaN0   0E+999999  -> -NaN
-fmax2706 fma -999  -NaN    0E+999999  -> -NaN
-fmax2707 fma  Inf  -NaN    0E+999999  -> -NaN
-
-fmax2711 fma -sNaN   -Inf     0E+999999  -> -NaN Invalid_operation
-fmax2712 fma -sNaN   -11      0E+999999  -> -NaN Invalid_operation
-fmax2713 fma -sNaN00  NaN     0E+999999  -> -NaN Invalid_operation
-fmax2714 fma -sNaN   -sNaN    0E+999999  -> -NaN Invalid_operation
-fmax2715 fma -NaN    -sNaN    0E+999999  -> -NaN Invalid_operation
-fmax2716 fma -Inf    -sNaN    0E+999999  -> -NaN Invalid_operation
-fmax2717 fma  088    -sNaN    0E+999999  -> -NaN Invalid_operation
-fmax2718 fma  Inf    -sNaN    0E+999999  -> -NaN Invalid_operation
-fmax2719 fma -NaN    -sNaN    0E+999999  -> -NaN Invalid_operation
-
--- overflow and underflow tests .. note subnormal results
-maxexponent: 999999
-minexponent: -999999
-fmax2730 fma +1.23456789012345E-0 9E+999999  0E+999999  -> Infinity Inexact Overflow Rounded
-fmax2731 fma 9E+999999 +1.23456789012345E-0  0E+999999  -> Infinity Inexact Overflow Rounded
-fmax2732 fma +0.100 9E-999999  0E+999999  -> 9.00E-1000000 Subnormal
-fmax2733 fma 9E-999999 +0.100  0E+999999  -> 9.00E-1000000 Subnormal
-fmax2735 fma -1.23456789012345E-0 9E+999999  0E+999999  -> -Infinity Inexact Overflow Rounded
-fmax2736 fma 9E+999999 -1.23456789012345E-0  0E+999999  -> -Infinity Inexact Overflow Rounded
-fmax2737 fma -0.100 9E-999999  0E+999999  -> -9.00E-1000000 Subnormal
-fmax2738 fma 9E-999999 -0.100  0E+999999  -> -9.00E-1000000 Subnormal
-
--- signs
-fmax2751 fma  1e+777777  1e+411111  0E+999999  ->  Infinity Overflow Inexact Rounded
-fmax2752 fma  1e+777777 -1e+411111  0E+999999  -> -Infinity Overflow Inexact Rounded
-fmax2753 fma -1e+777777  1e+411111  0E+999999  -> -Infinity Overflow Inexact Rounded
-fmax2754 fma -1e+777777 -1e+411111  0E+999999  ->  Infinity Overflow Inexact Rounded
-fmax2755 fma  1e-777777  1e-411111  0E+999999  ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-fmax2756 fma  1e-777777 -1e-411111  0E+999999  -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-fmax2757 fma -1e-777777  1e-411111  0E+999999  -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-fmax2758 fma -1e-777777 -1e-411111  0E+999999  ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-
--- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
-precision: 9
-fmax2760 fma 1e-600000 1e-400001  0E+999999  -> 1E-1000001 Subnormal
-fmax2761 fma 1e-600000 1e-400002  0E+999999  -> 1E-1000002 Subnormal
-fmax2762 fma 1e-600000 1e-400003  0E+999999  -> 1E-1000003 Subnormal
-fmax2763 fma 1e-600000 1e-400004  0E+999999  -> 1E-1000004 Subnormal
-fmax2764 fma 1e-600000 1e-400005  0E+999999  -> 1E-1000005 Subnormal
-fmax2765 fma 1e-600000 1e-400006  0E+999999  -> 1E-1000006 Subnormal
-fmax2766 fma 1e-600000 1e-400007  0E+999999  -> 1E-1000007 Subnormal
-fmax2767 fma 1e-600000 1e-400008  0E+999999  -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-fmax2768 fma 1e-600000 1e-400009  0E+999999  -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-fmax2769 fma 1e-600000 1e-400010  0E+999999  -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
--- [no equivalent of 'subnormal' for overflow]
-fmax2770 fma 1e+600000 1e+400001  0E+999999  -> Infinity Overflow Inexact Rounded
-fmax2771 fma 1e+600000 1e+400002  0E+999999  -> Infinity Overflow Inexact Rounded
-fmax2772 fma 1e+600000 1e+400003  0E+999999  -> Infinity Overflow Inexact Rounded
-fmax2773 fma 1e+600000 1e+400004  0E+999999  -> Infinity Overflow Inexact Rounded
-fmax2774 fma 1e+600000 1e+400005  0E+999999  -> Infinity Overflow Inexact Rounded
-fmax2775 fma 1e+600000 1e+400006  0E+999999  -> Infinity Overflow Inexact Rounded
-fmax2776 fma 1e+600000 1e+400007  0E+999999  -> Infinity Overflow Inexact Rounded
-fmax2777 fma 1e+600000 1e+400008  0E+999999  -> Infinity Overflow Inexact Rounded
-fmax2778 fma 1e+600000 1e+400009  0E+999999  -> Infinity Overflow Inexact Rounded
-fmax2779 fma 1e+600000 1e+400010  0E+999999  -> Infinity Overflow Inexact Rounded
-
--- 'subnormal' test edge condition at higher precisions
-precision: 99
-fmax2780 fma 1e-600000 1e-400007  0E+999999  -> 1E-1000007 Subnormal
-fmax2781 fma 1e-600000 1e-400008  0E+999999  -> 1E-1000008 Subnormal
-fmax2782 fma 1e-600000 1e-400097  0E+999999  -> 1E-1000097 Subnormal
-fmax2783 fma 1e-600000 1e-400098  0E+999999  -> 0E-1000097 Underflow Subnormal Inexact Rounded Clamped
-precision: 999
-fmax2784 fma 1e-600000 1e-400997  0E+999999  -> 1E-1000997 Subnormal
-fmax2785 fma 1e-600000 1e-400998  0E+999999  -> 0E-1000997 Underflow Subnormal Inexact Rounded Clamped
-
--- test subnormals rounding
-precision:   5
-maxExponent: 999
-minexponent: -999
-rounding:    half_even
-
-fmax2801 fma  1.0000E-999  1      0E+999999  -> 1.0000E-999
-fmax2802 fma  1.000E-999   1e-1   0E+999999  -> 1.000E-1000 Subnormal
-fmax2803 fma  1.00E-999    1e-2   0E+999999  -> 1.00E-1001  Subnormal
-fmax2804 fma  1.0E-999     1e-3   0E+999999  -> 1.0E-1002   Subnormal
-fmax2805 fma  1.0E-999     1e-4   0E+999999  -> 1E-1003     Subnormal Rounded
-fmax2806 fma  1.3E-999     1e-4   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded
-fmax2807 fma  1.5E-999     1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
-fmax2808 fma  1.7E-999     1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
-fmax2809 fma  2.3E-999     1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
-fmax2810 fma  2.5E-999     1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
-fmax2811 fma  2.7E-999     1e-4   0E+999999  -> 3E-1003     Underflow Subnormal Inexact Rounded
-fmax2812 fma  1.49E-999    1e-4   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded
-fmax2813 fma  1.50E-999    1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
-fmax2814 fma  1.51E-999    1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
-fmax2815 fma  2.49E-999    1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
-fmax2816 fma  2.50E-999    1e-4   0E+999999  -> 2E-1003     Underflow Subnormal Inexact Rounded
-fmax2817 fma  2.51E-999    1e-4   0E+999999  -> 3E-1003     Underflow Subnormal Inexact Rounded
-
-fmax2818 fma  1E-999       1e-4   0E+999999  -> 1E-1003     Subnormal
-fmax2819 fma  3E-999       1e-5   0E+999999  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
-fmax2820 fma  5E-999       1e-5   0E+999999  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
-fmax2821 fma  7E-999       1e-5   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded
-fmax2822 fma  9E-999       1e-5   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded
-fmax2823 fma  9.9E-999     1e-5   0E+999999  -> 1E-1003     Underflow Subnormal Inexact Rounded
-
-fmax2824 fma  1E-999      -1e-4   0E+999999  -> -1E-1003    Subnormal
-fmax2825 fma  3E-999      -1e-5   0E+999999  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
-fmax2826 fma -5E-999       1e-5   0E+999999  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
-fmax2827 fma  7E-999      -1e-5   0E+999999  -> -1E-1003    Underflow Subnormal Inexact Rounded
-fmax2828 fma -9E-999       1e-5   0E+999999  -> -1E-1003    Underflow Subnormal Inexact Rounded
-fmax2829 fma  9.9E-999    -1e-5   0E+999999  -> -1E-1003    Underflow Subnormal Inexact Rounded
-fmax2830 fma  3.0E-999    -1e-5   0E+999999  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
-
-fmax2831 fma  1.0E-501     1e-501  0E+999999  -> 1.0E-1002   Subnormal
-fmax2832 fma  2.0E-501     2e-501  0E+999999  -> 4.0E-1002   Subnormal
-fmax2833 fma  4.0E-501     4e-501  0E+999999  -> 1.60E-1001  Subnormal
-fmax2834 fma 10.0E-501    10e-501  0E+999999  -> 1.000E-1000 Subnormal
-fmax2835 fma 30.0E-501    30e-501  0E+999999  -> 9.000E-1000 Subnormal
-fmax2836 fma 40.0E-501    40e-501  0E+999999  -> 1.6000E-999
-
--- squares
-fmax2840 fma  1E-502       1e-502  0E+999999  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
-fmax2841 fma  1E-501       1e-501  0E+999999  -> 1E-1002     Subnormal
-fmax2842 fma  2E-501       2e-501  0E+999999  -> 4E-1002     Subnormal
-fmax2843 fma  4E-501       4e-501  0E+999999  -> 1.6E-1001   Subnormal
-fmax2844 fma 10E-501      10e-501  0E+999999  -> 1.00E-1000  Subnormal
-fmax2845 fma 30E-501      30e-501  0E+999999  -> 9.00E-1000  Subnormal
-fmax2846 fma 40E-501      40e-501  0E+999999  -> 1.600E-999
-
--- cubes
-fmax2850 fma  1E-670     1e-335  0E+999999  -> 0E-1003    Underflow Subnormal Inexact Rounded Clamped
-fmax2851 fma  1E-668     1e-334  0E+999999  -> 1E-1002    Subnormal
-fmax2852 fma  4E-668     2e-334  0E+999999  -> 8E-1002    Subnormal
-fmax2853 fma  9E-668     3e-334  0E+999999  -> 2.7E-1001  Subnormal
-fmax2854 fma 16E-668     4e-334  0E+999999  -> 6.4E-1001  Subnormal
-fmax2855 fma 25E-668     5e-334  0E+999999  -> 1.25E-1000 Subnormal
-fmax2856 fma 10E-668   100e-334  0E+999999  -> 1.000E-999
-
--- test derived from result of 0.099 ** 999 at 15 digits with unlimited exponent
-precision: 19
-fmax2860 fma  6636851557994578716E-520 6636851557994578716E-520  0E+999999  -> 4.40477986028551E-1003 Underflow Subnormal Inexact Rounded
-
--- Long operand overflow may be a different path
-precision: 3
-maxExponent: 999999
-minexponent: -999999
-fmax2870 fma 1  9.999E+999999    0E+999999  ->  Infinity Inexact Overflow Rounded
-fmax2871 fma 1 -9.999E+999999    0E+999999  -> -Infinity Inexact Overflow Rounded
-fmax2872 fma    9.999E+999999 1  0E+999999  ->  Infinity Inexact Overflow Rounded
-fmax2873 fma   -9.999E+999999 1  0E+999999  -> -Infinity Inexact Overflow Rounded
-
--- check for double-rounded subnormals
-precision:   5
-maxexponent: 79
-minexponent: -79
-fmax2881 fma  1.2347E-40  1.2347E-40   0E+999999  ->  1.524E-80  Inexact Rounded Subnormal Underflow
-fmax2882 fma  1.234E-40  1.234E-40     0E+999999  ->  1.523E-80  Inexact Rounded Subnormal Underflow
-fmax2883 fma  1.23E-40   1.23E-40      0E+999999  ->  1.513E-80  Inexact Rounded Subnormal Underflow
-fmax2884 fma  1.2E-40    1.2E-40       0E+999999  ->  1.44E-80   Subnormal
-fmax2885 fma  1.2E-40    1.2E-41       0E+999999  ->  1.44E-81   Subnormal
-fmax2886 fma  1.2E-40    1.2E-42       0E+999999  ->  1.4E-82    Subnormal Inexact Rounded Underflow
-fmax2887 fma  1.2E-40    1.3E-42       0E+999999  ->  1.6E-82    Subnormal Inexact Rounded Underflow
-fmax2888 fma  1.3E-40    1.3E-42       0E+999999  ->  1.7E-82    Subnormal Inexact Rounded Underflow
-fmax2889 fma  1.3E-40    1.3E-43       0E+999999  ->    2E-83    Subnormal Inexact Rounded Underflow
-fmax2890 fma  1.3E-41    1.3E-43       0E+999999  ->    0E-83    Clamped Subnormal Inexact Rounded Underflow
-
-fmax2891 fma  1.2345E-39   1.234E-40   0E+999999  ->  1.5234E-79 Inexact Rounded
-fmax2892 fma  1.23456E-39  1.234E-40   0E+999999  ->  1.5234E-79 Inexact Rounded
-fmax2893 fma  1.2345E-40   1.234E-40   0E+999999  ->  1.523E-80  Inexact Rounded Subnormal Underflow
-fmax2894 fma  1.23456E-40  1.234E-40   0E+999999  ->  1.523E-80  Inexact Rounded Subnormal Underflow
-fmax2895 fma  1.2345E-41   1.234E-40   0E+999999  ->  1.52E-81   Inexact Rounded Subnormal Underflow
-fmax2896 fma  1.23456E-41  1.234E-40   0E+999999  ->  1.52E-81   Inexact Rounded Subnormal Underflow
-
--- Now explore the case where we get a normal result with Underflow
-precision:   16
-rounding:    half_up
-maxExponent: 384
-minExponent: -383
-
-fmax2900 fma  0.3000000000E-191 0.3000000000E-191  0E+999999  -> 9.00000000000000E-384 Subnormal Rounded
-fmax2901 fma  0.3000000001E-191 0.3000000001E-191  0E+999999  -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded
-fmax2902 fma  9.999999999999999E-383  0.0999999999999          0E+999999  -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded
-fmax2903 fma  9.999999999999999E-383  0.09999999999999         0E+999999  -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded
-fmax2904 fma  9.999999999999999E-383  0.099999999999999        0E+999999  -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded
-fmax2905 fma  9.999999999999999E-383  0.0999999999999999       0E+999999  -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded
--- prove operands are exact
-fmax2906 fma  9.999999999999999E-383  1                        0E+999999  -> 9.999999999999999E-383
-fmax2907 fma                       1  0.09999999999999999      0E+999999  -> 0.09999999999999999
--- the next rounds to Nmin
-fmax2908 fma  9.999999999999999E-383  0.09999999999999999      0E+999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-fmax2909 fma  9.999999999999999E-383  0.099999999999999999     0E+999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-fmax2910 fma  9.999999999999999E-383  0.0999999999999999999    0E+999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-fmax2911 fma  9.999999999999999E-383  0.09999999999999999999   0E+999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-
--- Examples from SQL proposal (Krishna Kulkarni)
-precision:   34
-rounding:    half_up
-maxExponent: 6144
-minExponent: -6143
-fmax2921  fma 130E-2  120E-2  0E+999999  -> 1.5600
-fmax2922  fma 130E-2  12E-1   0E+999999  -> 1.560
-fmax2923  fma 130E-2  1E0     0E+999999  -> 1.30
-
--- Null tests
-fmax2990 fma  # 10  0E+999999  -> NaN Invalid_operation
-fmax2991 fma 10  #  0E+999999  -> NaN Invalid_operation
-
--- ADDITION TESTS ------------------------------------------------------
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
--- [first group are 'quick confidence check']
-fmax3001 fma  1   1       1       ->  2
-fmax3002 fma  1   2       3       ->  5
-fmax3003 fma  1   '5.75'  '3.3'   ->  9.05
-fmax3004 fma  1   '5'     '-3'    ->  2
-fmax3005 fma  1   '-5'    '-3'    ->  -8
-fmax3006 fma  1   '-7'    '2.5'   ->  -4.5
-fmax3007 fma  1   '0.7'   '0.3'   ->  1.0
-fmax3008 fma  1   '1.25'  '1.25'  ->  2.50
-fmax3009 fma  1   '1.23456789'  '1.00000000' -> '2.23456789'
-fmax3010 fma  1   '1.23456789'  '1.00000011' -> '2.23456800'
-
-fmax3011 fma  1   '0.4444444444'  '0.5555555555' -> '1.00000000' Inexact Rounded
-fmax3012 fma  1   '0.4444444440'  '0.5555555555' -> '1.00000000' Inexact Rounded
-fmax3013 fma  1   '0.4444444444'  '0.5555555550' -> '0.999999999' Inexact Rounded
-fmax3014 fma  1   '0.44444444449'    '0' -> '0.444444444' Inexact Rounded
-fmax3015 fma  1   '0.444444444499'   '0' -> '0.444444444' Inexact Rounded
-fmax3016 fma  1   '0.4444444444999'  '0' -> '0.444444444' Inexact Rounded
-fmax3017 fma  1   '0.4444444445000'  '0' -> '0.444444445' Inexact Rounded
-fmax3018 fma  1   '0.4444444445001'  '0' -> '0.444444445' Inexact Rounded
-fmax3019 fma  1   '0.444444444501'   '0' -> '0.444444445' Inexact Rounded
-fmax3020 fma  1   '0.44444444451'    '0' -> '0.444444445' Inexact Rounded
-
-fmax3021 fma  1   0 1 -> 1
-fmax3022 fma  1   1 1 -> 2
-fmax3023 fma  1   2 1 -> 3
-fmax3024 fma  1   3 1 -> 4
-fmax3025 fma  1   4 1 -> 5
-fmax3026 fma  1   5 1 -> 6
-fmax3027 fma  1   6 1 -> 7
-fmax3028 fma  1   7 1 -> 8
-fmax3029 fma  1   8 1 -> 9
-fmax3030 fma  1   9 1 -> 10
-
--- some carrying effects
-fmax3031 fma  1   '0.9998'  '0.0000' -> '0.9998'
-fmax3032 fma  1   '0.9998'  '0.0001' -> '0.9999'
-fmax3033 fma  1   '0.9998'  '0.0002' -> '1.0000'
-fmax3034 fma  1   '0.9998'  '0.0003' -> '1.0001'
-
-fmax3035 fma  1   '70'  '10000e+9' -> '1.00000000E+13' Inexact Rounded
-fmax3036 fma  1   '700'  '10000e+9' -> '1.00000000E+13' Inexact Rounded
-fmax3037 fma  1   '7000'  '10000e+9' -> '1.00000000E+13' Inexact Rounded
-fmax3038 fma  1   '70000'  '10000e+9' -> '1.00000001E+13' Inexact Rounded
-fmax3039 fma  1   '700000'  '10000e+9' -> '1.00000007E+13' Rounded
-
--- symmetry:
-fmax3040 fma  1   '10000e+9'  '70' -> '1.00000000E+13' Inexact Rounded
-fmax3041 fma  1   '10000e+9'  '700' -> '1.00000000E+13' Inexact Rounded
-fmax3042 fma  1   '10000e+9'  '7000' -> '1.00000000E+13' Inexact Rounded
-fmax3044 fma  1   '10000e+9'  '70000' -> '1.00000001E+13' Inexact Rounded
-fmax3045 fma  1   '10000e+9'  '700000' -> '1.00000007E+13' Rounded
-
--- same, higher precision
-precision: 15
-fmax3046 fma  1   '10000e+9'  '7' -> '10000000000007'
-fmax3047 fma  1   '10000e+9'  '70' -> '10000000000070'
-fmax3048 fma  1   '10000e+9'  '700' -> '10000000000700'
-fmax3049 fma  1   '10000e+9'  '7000' -> '10000000007000'
-fmax3050 fma  1   '10000e+9'  '70000' -> '10000000070000'
-fmax3051 fma  1   '10000e+9'  '700000' -> '10000000700000'
-fmax3052 fma  1   '10000e+9'  '7000000' -> '10000007000000'
-
--- examples from decarith
-fmax3053 fma  1   '12' '7.00' -> '19.00'
-fmax3054 fma  1   '1.3' '-1.07' -> '0.23'
-fmax3055 fma  1   '1.3' '-1.30' -> '0.00'
-fmax3056 fma  1   '1.3' '-2.07' -> '-0.77'
-fmax3057 fma  1   '1E+2' '1E+4' -> '1.01E+4'
-
--- zero preservation
-precision: 6
-fmax3060 fma  1   '10000e+9'  '70000' -> '1.00000E+13' Inexact Rounded
-fmax3061 fma  1   1 '0.0001' -> '1.0001'
-fmax3062 fma  1   1 '0.00001' -> '1.00001'
-fmax3063 fma  1   1 '0.000001' -> '1.00000' Inexact Rounded
-fmax3064 fma  1   1 '0.0000001' -> '1.00000' Inexact Rounded
-fmax3065 fma  1   1 '0.00000001' -> '1.00000' Inexact Rounded
-
--- some funny zeros [in case of bad signum]
-fmax3070 fma  1   1  0    -> 1
-fmax3071 fma  1   1 0.    -> 1
-fmax3072 fma  1   1  .0   -> 1.0
-fmax3073 fma  1   1 0.0   -> 1.0
-fmax3074 fma  1   1 0.00  -> 1.00
-fmax3075 fma  1    0  1   -> 1
-fmax3076 fma  1   0.  1   -> 1
-fmax3077 fma  1    .0 1   -> 1.0
-fmax3078 fma  1   0.0 1   -> 1.0
-fmax3079 fma  1   0.00 1  -> 1.00
-
-precision: 9
-
--- some carries
-fmax3080 fma  1   999999998 1  -> 999999999
-fmax3081 fma  1   999999999 1  -> 1.00000000E+9 Rounded
-fmax3082 fma  1    99999999 1  -> 100000000
-fmax3083 fma  1     9999999 1  -> 10000000
-fmax3084 fma  1      999999 1  -> 1000000
-fmax3085 fma  1       99999 1  -> 100000
-fmax3086 fma  1        9999 1  -> 10000
-fmax3087 fma  1         999 1  -> 1000
-fmax3088 fma  1          99 1  -> 100
-fmax3089 fma  1           9 1  -> 10
-
-
--- more LHS swaps
-fmax3090 fma  1   '-56267E-10'   0 ->  '-0.0000056267'
-fmax3091 fma  1   '-56267E-6'    0 ->  '-0.056267'
-fmax3092 fma  1   '-56267E-5'    0 ->  '-0.56267'
-fmax3093 fma  1   '-56267E-4'    0 ->  '-5.6267'
-fmax3094 fma  1   '-56267E-3'    0 ->  '-56.267'
-fmax3095 fma  1   '-56267E-2'    0 ->  '-562.67'
-fmax3096 fma  1   '-56267E-1'    0 ->  '-5626.7'
-fmax3097 fma  1   '-56267E-0'    0 ->  '-56267'
-fmax3098 fma  1   '-5E-10'       0 ->  '-5E-10'
-fmax3099 fma  1   '-5E-7'        0 ->  '-5E-7'
-fmax3100 fma  1   '-5E-6'        0 ->  '-0.000005'
-fmax3101 fma  1   '-5E-5'        0 ->  '-0.00005'
-fmax3102 fma  1   '-5E-4'        0 ->  '-0.0005'
-fmax3103 fma  1   '-5E-1'        0 ->  '-0.5'
-fmax3104 fma  1   '-5E0'         0 ->  '-5'
-fmax3105 fma  1   '-5E1'         0 ->  '-50'
-fmax3106 fma  1   '-5E5'         0 ->  '-500000'
-fmax3107 fma  1   '-5E8'         0 ->  '-500000000'
-fmax3108 fma  1   '-5E9'         0 ->  '-5.00000000E+9'   Rounded
-fmax3109 fma  1   '-5E10'        0 ->  '-5.00000000E+10'  Rounded
-fmax3110 fma  1   '-5E11'        0 ->  '-5.00000000E+11'  Rounded
-fmax3111 fma  1   '-5E100'       0 ->  '-5.00000000E+100' Rounded
-
--- more RHS swaps
-fmax3113 fma  1   0  '-56267E-10' ->  '-0.0000056267'
-fmax3114 fma  1   0  '-56267E-6'  ->  '-0.056267'
-fmax3116 fma  1   0  '-56267E-5'  ->  '-0.56267'
-fmax3117 fma  1   0  '-56267E-4'  ->  '-5.6267'
-fmax3119 fma  1   0  '-56267E-3'  ->  '-56.267'
-fmax3120 fma  1   0  '-56267E-2'  ->  '-562.67'
-fmax3121 fma  1   0  '-56267E-1'  ->  '-5626.7'
-fmax3122 fma  1   0  '-56267E-0'  ->  '-56267'
-fmax3123 fma  1   0  '-5E-10'     ->  '-5E-10'
-fmax3124 fma  1   0  '-5E-7'      ->  '-5E-7'
-fmax3125 fma  1   0  '-5E-6'      ->  '-0.000005'
-fmax3126 fma  1   0  '-5E-5'      ->  '-0.00005'
-fmax3127 fma  1   0  '-5E-4'      ->  '-0.0005'
-fmax3128 fma  1   0  '-5E-1'      ->  '-0.5'
-fmax3129 fma  1   0  '-5E0'       ->  '-5'
-fmax3130 fma  1   0  '-5E1'       ->  '-50'
-fmax3131 fma  1   0  '-5E5'       ->  '-500000'
-fmax3132 fma  1   0  '-5E8'       ->  '-500000000'
-fmax3133 fma  1   0  '-5E9'       ->  '-5.00000000E+9'    Rounded
-fmax3134 fma  1   0  '-5E10'      ->  '-5.00000000E+10'   Rounded
-fmax3135 fma  1   0  '-5E11'      ->  '-5.00000000E+11'   Rounded
-fmax3136 fma  1   0  '-5E100'     ->  '-5.00000000E+100'  Rounded
-
--- related
-fmax3137 fma  1    1  '0E-12'      ->  '1.00000000'  Rounded
-fmax3138 fma  1   -1  '0E-12'      ->  '-1.00000000' Rounded
-fmax3139 fma  1   '0E-12' 1        ->  '1.00000000'  Rounded
-fmax3140 fma  1   '0E-12' -1       ->  '-1.00000000' Rounded
-fmax3141 fma  1   1E+4    0.0000   ->  '10000.0000'
-fmax3142 fma  1   1E+4    0.00000  ->  '10000.0000'  Rounded
-fmax3143 fma  1   0.000   1E+5     ->  '100000.000'
-fmax3144 fma  1   0.0000  1E+5     ->  '100000.000'  Rounded
-
--- [some of the next group are really constructor tests]
-fmax3146 fma  1   '00.0'  0       ->  '0.0'
-fmax3147 fma  1   '0.00'  0       ->  '0.00'
-fmax3148 fma  1    0      '0.00'  ->  '0.00'
-fmax3149 fma  1    0      '00.0'  ->  '0.0'
-fmax3150 fma  1   '00.0'  '0.00'  ->  '0.00'
-fmax3151 fma  1   '0.00'  '00.0'  ->  '0.00'
-fmax3152 fma  1   '3'     '.3'    ->  '3.3'
-fmax3153 fma  1   '3.'    '.3'    ->  '3.3'
-fmax3154 fma  1   '3.0'   '.3'    ->  '3.3'
-fmax3155 fma  1   '3.00'  '.3'    ->  '3.30'
-fmax3156 fma  1   '3'     '3'     ->  '6'
-fmax3157 fma  1   '3'     '+3'    ->  '6'
-fmax3158 fma  1   '3'     '-3'    ->  '0'
-fmax3159 fma  1   '0.3'   '-0.3'  ->  '0.0'
-fmax3160 fma  1   '0.03'  '-0.03' ->  '0.00'
-
--- try borderline precision, with carries, etc.
-precision: 15
-fmax3161 fma  1   '1E+12' '-1'    -> '999999999999'
-fmax3162 fma  1   '1E+12'  '1.11' -> '1000000000001.11'
-fmax3163 fma  1   '1.11'  '1E+12' -> '1000000000001.11'
-fmax3164 fma  1   '-1'    '1E+12' -> '999999999999'
-fmax3165 fma  1   '7E+12' '-1'    -> '6999999999999'
-fmax3166 fma  1   '7E+12'  '1.11' -> '7000000000001.11'
-fmax3167 fma  1   '1.11'  '7E+12' -> '7000000000001.11'
-fmax3168 fma  1   '-1'    '7E+12' -> '6999999999999'
-
---             123456789012345      123456789012345      1 23456789012345
-fmax3170 fma  1   '0.444444444444444'  '0.555555555555563' -> '1.00000000000001' Inexact Rounded
-fmax3171 fma  1   '0.444444444444444'  '0.555555555555562' -> '1.00000000000001' Inexact Rounded
-fmax3172 fma  1   '0.444444444444444'  '0.555555555555561' -> '1.00000000000001' Inexact Rounded
-fmax3173 fma  1   '0.444444444444444'  '0.555555555555560' -> '1.00000000000000' Inexact Rounded
-fmax3174 fma  1   '0.444444444444444'  '0.555555555555559' -> '1.00000000000000' Inexact Rounded
-fmax3175 fma  1   '0.444444444444444'  '0.555555555555558' -> '1.00000000000000' Inexact Rounded
-fmax3176 fma  1   '0.444444444444444'  '0.555555555555557' -> '1.00000000000000' Inexact Rounded
-fmax3177 fma  1   '0.444444444444444'  '0.555555555555556' -> '1.00000000000000' Rounded
-fmax3178 fma  1   '0.444444444444444'  '0.555555555555555' -> '0.999999999999999'
-fmax3179 fma  1   '0.444444444444444'  '0.555555555555554' -> '0.999999999999998'
-fmax3180 fma  1   '0.444444444444444'  '0.555555555555553' -> '0.999999999999997'
-fmax3181 fma  1   '0.444444444444444'  '0.555555555555552' -> '0.999999999999996'
-fmax3182 fma  1   '0.444444444444444'  '0.555555555555551' -> '0.999999999999995'
-fmax3183 fma  1   '0.444444444444444'  '0.555555555555550' -> '0.999999999999994'
-
--- and some more, including residue effects and different roundings
-precision: 9
-rounding: half_up
-fmax3200 fma  1   '123456789' 0             -> '123456789'
-fmax3201 fma  1   '123456789' 0.000000001   -> '123456789' Inexact Rounded
-fmax3202 fma  1   '123456789' 0.000001      -> '123456789' Inexact Rounded
-fmax3203 fma  1   '123456789' 0.1           -> '123456789' Inexact Rounded
-fmax3204 fma  1   '123456789' 0.4           -> '123456789' Inexact Rounded
-fmax3205 fma  1   '123456789' 0.49          -> '123456789' Inexact Rounded
-fmax3206 fma  1   '123456789' 0.499999      -> '123456789' Inexact Rounded
-fmax3207 fma  1   '123456789' 0.499999999   -> '123456789' Inexact Rounded
-fmax3208 fma  1   '123456789' 0.5           -> '123456790' Inexact Rounded
-fmax3209 fma  1   '123456789' 0.500000001   -> '123456790' Inexact Rounded
-fmax3210 fma  1   '123456789' 0.500001      -> '123456790' Inexact Rounded
-fmax3211 fma  1   '123456789' 0.51          -> '123456790' Inexact Rounded
-fmax3212 fma  1   '123456789' 0.6           -> '123456790' Inexact Rounded
-fmax3213 fma  1   '123456789' 0.9           -> '123456790' Inexact Rounded
-fmax3214 fma  1   '123456789' 0.99999       -> '123456790' Inexact Rounded
-fmax3215 fma  1   '123456789' 0.999999999   -> '123456790' Inexact Rounded
-fmax3216 fma  1   '123456789' 1             -> '123456790'
-fmax3217 fma  1   '123456789' 1.000000001   -> '123456790' Inexact Rounded
-fmax3218 fma  1   '123456789' 1.00001       -> '123456790' Inexact Rounded
-fmax3219 fma  1   '123456789' 1.1           -> '123456790' Inexact Rounded
-
-rounding: half_even
-fmax3220 fma  1   '123456789' 0             -> '123456789'
-fmax3221 fma  1   '123456789' 0.000000001   -> '123456789' Inexact Rounded
-fmax3222 fma  1   '123456789' 0.000001      -> '123456789' Inexact Rounded
-fmax3223 fma  1   '123456789' 0.1           -> '123456789' Inexact Rounded
-fmax3224 fma  1   '123456789' 0.4           -> '123456789' Inexact Rounded
-fmax3225 fma  1   '123456789' 0.49          -> '123456789' Inexact Rounded
-fmax3226 fma  1   '123456789' 0.499999      -> '123456789' Inexact Rounded
-fmax3227 fma  1   '123456789' 0.499999999   -> '123456789' Inexact Rounded
-fmax3228 fma  1   '123456789' 0.5           -> '123456790' Inexact Rounded
-fmax3229 fma  1   '123456789' 0.500000001   -> '123456790' Inexact Rounded
-fmax3230 fma  1   '123456789' 0.500001      -> '123456790' Inexact Rounded
-fmax3231 fma  1   '123456789' 0.51          -> '123456790' Inexact Rounded
-fmax3232 fma  1   '123456789' 0.6           -> '123456790' Inexact Rounded
-fmax3233 fma  1   '123456789' 0.9           -> '123456790' Inexact Rounded
-fmax3234 fma  1   '123456789' 0.99999       -> '123456790' Inexact Rounded
-fmax3235 fma  1   '123456789' 0.999999999   -> '123456790' Inexact Rounded
-fmax3236 fma  1   '123456789' 1             -> '123456790'
-fmax3237 fma  1   '123456789' 1.00000001    -> '123456790' Inexact Rounded
-fmax3238 fma  1   '123456789' 1.00001       -> '123456790' Inexact Rounded
-fmax3239 fma  1   '123456789' 1.1           -> '123456790' Inexact Rounded
--- critical few with even bottom digit...
-fmax3240 fma  1   '123456788' 0.499999999   -> '123456788' Inexact Rounded
-fmax3241 fma  1   '123456788' 0.5           -> '123456788' Inexact Rounded
-fmax3242 fma  1   '123456788' 0.500000001   -> '123456789' Inexact Rounded
-
-rounding: down
-fmax3250 fma  1   '123456789' 0             -> '123456789'
-fmax3251 fma  1   '123456789' 0.000000001   -> '123456789' Inexact Rounded
-fmax3252 fma  1   '123456789' 0.000001      -> '123456789' Inexact Rounded
-fmax3253 fma  1   '123456789' 0.1           -> '123456789' Inexact Rounded
-fmax3254 fma  1   '123456789' 0.4           -> '123456789' Inexact Rounded
-fmax3255 fma  1   '123456789' 0.49          -> '123456789' Inexact Rounded
-fmax3256 fma  1   '123456789' 0.499999      -> '123456789' Inexact Rounded
-fmax3257 fma  1   '123456789' 0.499999999   -> '123456789' Inexact Rounded
-fmax3258 fma  1   '123456789' 0.5           -> '123456789' Inexact Rounded
-fmax3259 fma  1   '123456789' 0.500000001   -> '123456789' Inexact Rounded
-fmax3260 fma  1   '123456789' 0.500001      -> '123456789' Inexact Rounded
-fmax3261 fma  1   '123456789' 0.51          -> '123456789' Inexact Rounded
-fmax3262 fma  1   '123456789' 0.6           -> '123456789' Inexact Rounded
-fmax3263 fma  1   '123456789' 0.9           -> '123456789' Inexact Rounded
-fmax3264 fma  1   '123456789' 0.99999       -> '123456789' Inexact Rounded
-fmax3265 fma  1   '123456789' 0.999999999   -> '123456789' Inexact Rounded
-fmax3266 fma  1   '123456789' 1             -> '123456790'
-fmax3267 fma  1   '123456789' 1.00000001    -> '123456790' Inexact Rounded
-fmax3268 fma  1   '123456789' 1.00001       -> '123456790' Inexact Rounded
-fmax3269 fma  1   '123456789' 1.1           -> '123456790' Inexact Rounded
-
--- input preparation tests (operands should not be rounded)
-precision: 3
-rounding: half_up
-
-fmax3270 fma  1   '12345678900000'  9999999999999 ->  '2.23E+13' Inexact Rounded
-fmax3271 fma  1    '9999999999999' 12345678900000 ->  '2.23E+13' Inexact Rounded
-
-fmax3272 fma  1   '12E+3'  '3444'   ->  '1.54E+4' Inexact Rounded
-fmax3273 fma  1   '12E+3'  '3446'   ->  '1.54E+4' Inexact Rounded
-fmax3274 fma  1   '12E+3'  '3449.9' ->  '1.54E+4' Inexact Rounded
-fmax3275 fma  1   '12E+3'  '3450.0' ->  '1.55E+4' Inexact Rounded
-fmax3276 fma  1   '12E+3'  '3450.1' ->  '1.55E+4' Inexact Rounded
-fmax3277 fma  1   '12E+3'  '3454'   ->  '1.55E+4' Inexact Rounded
-fmax3278 fma  1   '12E+3'  '3456'   ->  '1.55E+4' Inexact Rounded
-
-fmax3281 fma  1   '3444'   '12E+3'  ->  '1.54E+4' Inexact Rounded
-fmax3282 fma  1   '3446'   '12E+3'  ->  '1.54E+4' Inexact Rounded
-fmax3283 fma  1   '3449.9' '12E+3'  ->  '1.54E+4' Inexact Rounded
-fmax3284 fma  1   '3450.0' '12E+3'  ->  '1.55E+4' Inexact Rounded
-fmax3285 fma  1   '3450.1' '12E+3'  ->  '1.55E+4' Inexact Rounded
-fmax3286 fma  1   '3454'   '12E+3'  ->  '1.55E+4' Inexact Rounded
-fmax3287 fma  1   '3456'   '12E+3'  ->  '1.55E+4' Inexact Rounded
-
-rounding: half_down
-fmax3291 fma  1   '3444'   '12E+3'  ->  '1.54E+4' Inexact Rounded
-fmax3292 fma  1   '3446'   '12E+3'  ->  '1.54E+4' Inexact Rounded
-fmax3293 fma  1   '3449.9' '12E+3'  ->  '1.54E+4' Inexact Rounded
-fmax3294 fma  1   '3450.0' '12E+3'  ->  '1.54E+4' Inexact Rounded
-fmax3295 fma  1   '3450.1' '12E+3'  ->  '1.55E+4' Inexact Rounded
-fmax3296 fma  1   '3454'   '12E+3'  ->  '1.55E+4' Inexact Rounded
-fmax3297 fma  1   '3456'   '12E+3'  ->  '1.55E+4' Inexact Rounded
-
--- 1 in last place tests
-rounding: half_up
-fmax3301 fma  1    -1   1      ->   0
-fmax3302 fma  1     0   1      ->   1
-fmax3303 fma  1     1   1      ->   2
-fmax3304 fma  1    12   1      ->  13
-fmax3305 fma  1    98   1      ->  99
-fmax3306 fma  1    99   1      -> 100
-fmax3307 fma  1   100   1      -> 101
-fmax3308 fma  1   101   1      -> 102
-fmax3309 fma  1    -1  -1      ->  -2
-fmax3310 fma  1     0  -1      ->  -1
-fmax3311 fma  1     1  -1      ->   0
-fmax3312 fma  1    12  -1      ->  11
-fmax3313 fma  1    98  -1      ->  97
-fmax3314 fma  1    99  -1      ->  98
-fmax3315 fma  1   100  -1      ->  99
-fmax3316 fma  1   101  -1      -> 100
-
-fmax3321 fma  1   -0.01  0.01    ->  0.00
-fmax3322 fma  1    0.00  0.01    ->  0.01
-fmax3323 fma  1    0.01  0.01    ->  0.02
-fmax3324 fma  1    0.12  0.01    ->  0.13
-fmax3325 fma  1    0.98  0.01    ->  0.99
-fmax3326 fma  1    0.99  0.01    ->  1.00
-fmax3327 fma  1    1.00  0.01    ->  1.01
-fmax3328 fma  1    1.01  0.01    ->  1.02
-fmax3329 fma  1   -0.01 -0.01    -> -0.02
-fmax3330 fma  1    0.00 -0.01    -> -0.01
-fmax3331 fma  1    0.01 -0.01    ->  0.00
-fmax3332 fma  1    0.12 -0.01    ->  0.11
-fmax3333 fma  1    0.98 -0.01    ->  0.97
-fmax3334 fma  1    0.99 -0.01    ->  0.98
-fmax3335 fma  1    1.00 -0.01    ->  0.99
-fmax3336 fma  1    1.01 -0.01    ->  1.00
-
--- some more cases where fma  1  ing 0 affects the coefficient
-precision: 9
-fmax3340 fma  1   1E+3    0    ->         1000
-fmax3341 fma  1   1E+8    0    ->    100000000
-fmax3342 fma  1   1E+9    0    ->   1.00000000E+9   Rounded
-fmax3343 fma  1   1E+10   0    ->   1.00000000E+10  Rounded
--- which simply follow from these cases ...
-fmax3344 fma  1   1E+3    1    ->         1001
-fmax3345 fma  1   1E+8    1    ->    100000001
-fmax3346 fma  1   1E+9    1    ->   1.00000000E+9   Inexact Rounded
-fmax3347 fma  1   1E+10   1    ->   1.00000000E+10  Inexact Rounded
-fmax3348 fma  1   1E+3    7    ->         1007
-fmax3349 fma  1   1E+8    7    ->    100000007
-fmax3350 fma  1   1E+9    7    ->   1.00000001E+9   Inexact Rounded
-fmax3351 fma  1   1E+10   7    ->   1.00000000E+10  Inexact Rounded
-
--- tryzeros cases
-precision:   7
-rounding:    half_up
-maxExponent: 92
-minexponent: -92
-fmax3361  fma  1   0E+50 10000E+1  -> 1.0000E+5
-fmax3362  fma  1   10000E+1 0E-50  -> 100000.0  Rounded
-fmax3363  fma  1   10000E+1 10000E-50  -> 100000.0  Rounded Inexact
-fmax3364  fma  1   9.999999E+92 -9.999999E+92 -> 0E+86
-
--- a curiosity from JSR 13 testing
-rounding:    half_down
-precision:   10
-fmax3370 fma  1   99999999 81512 -> 100081511
-precision:      6
-fmax3371 fma  1   99999999 81512 -> 1.00082E+8 Rounded Inexact
-rounding:    half_up
-precision:   10
-fmax3372 fma  1   99999999 81512 -> 100081511
-precision:      6
-fmax3373 fma  1   99999999 81512 -> 1.00082E+8 Rounded Inexact
-rounding:    half_even
-precision:   10
-fmax3374 fma  1   99999999 81512 -> 100081511
-precision:      6
-fmax3375 fma  1   99999999 81512 -> 1.00082E+8 Rounded Inexact
-
--- ulp replacement tests
-precision: 9
-maxexponent: 999999
-minexponent: -999999
-fmax3400 fma  1     1   77e-7       ->  1.0000077
-fmax3401 fma  1     1   77e-8       ->  1.00000077
-fmax3402 fma  1     1   77e-9       ->  1.00000008 Inexact Rounded
-fmax3403 fma  1     1   77e-10      ->  1.00000001 Inexact Rounded
-fmax3404 fma  1     1   77e-11      ->  1.00000000 Inexact Rounded
-fmax3405 fma  1     1   77e-12      ->  1.00000000 Inexact Rounded
-fmax3406 fma  1     1   77e-999     ->  1.00000000 Inexact Rounded
-fmax3407 fma  1     1   77e-999999  ->  1.00000000 Inexact Rounded
-
-fmax3410 fma  1    10   77e-7       ->  10.0000077
-fmax3411 fma  1    10   77e-8       ->  10.0000008 Inexact Rounded
-fmax3412 fma  1    10   77e-9       ->  10.0000001 Inexact Rounded
-fmax3413 fma  1    10   77e-10      ->  10.0000000 Inexact Rounded
-fmax3414 fma  1    10   77e-11      ->  10.0000000 Inexact Rounded
-fmax3415 fma  1    10   77e-12      ->  10.0000000 Inexact Rounded
-fmax3416 fma  1    10   77e-999     ->  10.0000000 Inexact Rounded
-fmax3417 fma  1    10   77e-999999  ->  10.0000000 Inexact Rounded
-
-fmax3420 fma  1    77e-7        1   ->  1.0000077
-fmax3421 fma  1    77e-8        1   ->  1.00000077
-fmax3422 fma  1    77e-9        1   ->  1.00000008 Inexact Rounded
-fmax3423 fma  1    77e-10       1   ->  1.00000001 Inexact Rounded
-fmax3424 fma  1    77e-11       1   ->  1.00000000 Inexact Rounded
-fmax3425 fma  1    77e-12       1   ->  1.00000000 Inexact Rounded
-fmax3426 fma  1    77e-999      1   ->  1.00000000 Inexact Rounded
-fmax3427 fma  1    77e-999999   1   ->  1.00000000 Inexact Rounded
-
-fmax3430 fma  1    77e-7       10   ->  10.0000077
-fmax3431 fma  1    77e-8       10   ->  10.0000008 Inexact Rounded
-fmax3432 fma  1    77e-9       10   ->  10.0000001 Inexact Rounded
-fmax3433 fma  1    77e-10      10   ->  10.0000000 Inexact Rounded
-fmax3434 fma  1    77e-11      10   ->  10.0000000 Inexact Rounded
-fmax3435 fma  1    77e-12      10   ->  10.0000000 Inexact Rounded
-fmax3436 fma  1    77e-999     10   ->  10.0000000 Inexact Rounded
-fmax3437 fma  1    77e-999999  10   ->  10.0000000 Inexact Rounded
-
--- negative ulps
-fmax3440 fma  1     1   -77e-7       ->  0.9999923
-fmax3441 fma  1     1   -77e-8       ->  0.99999923
-fmax3442 fma  1     1   -77e-9       ->  0.999999923
-fmax3443 fma  1     1   -77e-10      ->  0.999999992 Inexact Rounded
-fmax3444 fma  1     1   -77e-11      ->  0.999999999 Inexact Rounded
-fmax3445 fma  1     1   -77e-12      ->  1.00000000 Inexact Rounded
-fmax3446 fma  1     1   -77e-999     ->  1.00000000 Inexact Rounded
-fmax3447 fma  1     1   -77e-999999  ->  1.00000000 Inexact Rounded
-
-fmax3450 fma  1    10   -77e-7       ->   9.9999923
-fmax3451 fma  1    10   -77e-8       ->   9.99999923
-fmax3452 fma  1    10   -77e-9       ->   9.99999992 Inexact Rounded
-fmax3453 fma  1    10   -77e-10      ->   9.99999999 Inexact Rounded
-fmax3454 fma  1    10   -77e-11      ->  10.0000000 Inexact Rounded
-fmax3455 fma  1    10   -77e-12      ->  10.0000000 Inexact Rounded
-fmax3456 fma  1    10   -77e-999     ->  10.0000000 Inexact Rounded
-fmax3457 fma  1    10   -77e-999999  ->  10.0000000 Inexact Rounded
-
-fmax3460 fma  1    -77e-7        1   ->  0.9999923
-fmax3461 fma  1    -77e-8        1   ->  0.99999923
-fmax3462 fma  1    -77e-9        1   ->  0.999999923
-fmax3463 fma  1    -77e-10       1   ->  0.999999992 Inexact Rounded
-fmax3464 fma  1    -77e-11       1   ->  0.999999999 Inexact Rounded
-fmax3465 fma  1    -77e-12       1   ->  1.00000000 Inexact Rounded
-fmax3466 fma  1    -77e-999      1   ->  1.00000000 Inexact Rounded
-fmax3467 fma  1    -77e-999999   1   ->  1.00000000 Inexact Rounded
-
-fmax3470 fma  1    -77e-7       10   ->   9.9999923
-fmax3471 fma  1    -77e-8       10   ->   9.99999923
-fmax3472 fma  1    -77e-9       10   ->   9.99999992 Inexact Rounded
-fmax3473 fma  1    -77e-10      10   ->   9.99999999 Inexact Rounded
-fmax3474 fma  1    -77e-11      10   ->  10.0000000 Inexact Rounded
-fmax3475 fma  1    -77e-12      10   ->  10.0000000 Inexact Rounded
-fmax3476 fma  1    -77e-999     10   ->  10.0000000 Inexact Rounded
-fmax3477 fma  1    -77e-999999  10   ->  10.0000000 Inexact Rounded
-
--- negative ulps
-fmax3480 fma  1    -1    77e-7       ->  -0.9999923
-fmax3481 fma  1    -1    77e-8       ->  -0.99999923
-fmax3482 fma  1    -1    77e-9       ->  -0.999999923
-fmax3483 fma  1    -1    77e-10      ->  -0.999999992 Inexact Rounded
-fmax3484 fma  1    -1    77e-11      ->  -0.999999999 Inexact Rounded
-fmax3485 fma  1    -1    77e-12      ->  -1.00000000 Inexact Rounded
-fmax3486 fma  1    -1    77e-999     ->  -1.00000000 Inexact Rounded
-fmax3487 fma  1    -1    77e-999999  ->  -1.00000000 Inexact Rounded
-
-fmax3490 fma  1   -10    77e-7       ->   -9.9999923
-fmax3491 fma  1   -10    77e-8       ->   -9.99999923
-fmax3492 fma  1   -10    77e-9       ->   -9.99999992 Inexact Rounded
-fmax3493 fma  1   -10    77e-10      ->   -9.99999999 Inexact Rounded
-fmax3494 fma  1   -10    77e-11      ->  -10.0000000 Inexact Rounded
-fmax3495 fma  1   -10    77e-12      ->  -10.0000000 Inexact Rounded
-fmax3496 fma  1   -10    77e-999     ->  -10.0000000 Inexact Rounded
-fmax3497 fma  1   -10    77e-999999  ->  -10.0000000 Inexact Rounded
-
-fmax3500 fma  1     77e-7       -1   ->  -0.9999923
-fmax3501 fma  1     77e-8       -1   ->  -0.99999923
-fmax3502 fma  1     77e-9       -1   ->  -0.999999923
-fmax3503 fma  1     77e-10      -1   ->  -0.999999992 Inexact Rounded
-fmax3504 fma  1     77e-11      -1   ->  -0.999999999 Inexact Rounded
-fmax3505 fma  1     77e-12      -1   ->  -1.00000000 Inexact Rounded
-fmax3506 fma  1     77e-999     -1   ->  -1.00000000 Inexact Rounded
-fmax3507 fma  1     77e-999999  -1   ->  -1.00000000 Inexact Rounded
-
-fmax3510 fma  1     77e-7       -10  ->   -9.9999923
-fmax3511 fma  1     77e-8       -10  ->   -9.99999923
-fmax3512 fma  1     77e-9       -10  ->   -9.99999992 Inexact Rounded
-fmax3513 fma  1     77e-10      -10  ->   -9.99999999 Inexact Rounded
-fmax3514 fma  1     77e-11      -10  ->  -10.0000000 Inexact Rounded
-fmax3515 fma  1     77e-12      -10  ->  -10.0000000 Inexact Rounded
-fmax3516 fma  1     77e-999     -10  ->  -10.0000000 Inexact Rounded
-fmax3517 fma  1     77e-999999  -10  ->  -10.0000000 Inexact Rounded
-
-
--- long operands
-maxexponent: 999
-minexponent: -999
-precision: 9
-fmax3521 fma  1   12345678000 0 -> 1.23456780E+10 Rounded
-fmax3522 fma  1   0 12345678000 -> 1.23456780E+10 Rounded
-fmax3523 fma  1   1234567800  0 -> 1.23456780E+9 Rounded
-fmax3524 fma  1   0 1234567800  -> 1.23456780E+9 Rounded
-fmax3525 fma  1   1234567890  0 -> 1.23456789E+9 Rounded
-fmax3526 fma  1   0 1234567890  -> 1.23456789E+9 Rounded
-fmax3527 fma  1   1234567891  0 -> 1.23456789E+9 Inexact Rounded
-fmax3528 fma  1   0 1234567891  -> 1.23456789E+9 Inexact Rounded
-fmax3529 fma  1   12345678901 0 -> 1.23456789E+10 Inexact Rounded
-fmax3530 fma  1   0 12345678901 -> 1.23456789E+10 Inexact Rounded
-fmax3531 fma  1   1234567896  0 -> 1.23456790E+9 Inexact Rounded
-fmax3532 fma  1   0 1234567896  -> 1.23456790E+9 Inexact Rounded
-
-precision: 15
--- still checking
-fmax3541 fma  1   12345678000 0 -> 12345678000
-fmax3542 fma  1   0 12345678000 -> 12345678000
-fmax3543 fma  1   1234567800  0 -> 1234567800
-fmax3544 fma  1   0 1234567800  -> 1234567800
-fmax3545 fma  1   1234567890  0 -> 1234567890
-fmax3546 fma  1   0 1234567890  -> 1234567890
-fmax3547 fma  1   1234567891  0 -> 1234567891
-fmax3548 fma  1   0 1234567891  -> 1234567891
-fmax3549 fma  1   12345678901 0 -> 12345678901
-fmax3550 fma  1   0 12345678901 -> 12345678901
-fmax3551 fma  1   1234567896  0 -> 1234567896
-fmax3552 fma  1   0 1234567896  -> 1234567896
-
--- verify a query
-precision:    16
-maxExponent: +394
-minExponent: -393
-rounding:     down
-fmax3561 fma  1   1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded
-fmax3562 fma  1        0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded
--- and using decimal64 bounds...
-precision:    16
-maxExponent: +384
-minExponent: -383
-rounding:     down
-fmax3563 fma  1   1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded
-fmax3564 fma  1        0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded
-
-
--- some more residue effects with extreme rounding
-precision:   9
-rounding: half_up
-fmax3601 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded
-rounding: half_even
-fmax3602 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded
-rounding: half_down
-fmax3603 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded
-rounding: floor
-fmax3604 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded
-rounding: ceiling
-fmax3605 fma  1   123456789  0.000001 -> 123456790 Inexact Rounded
-rounding: up
-fmax3606 fma  1   123456789  0.000001 -> 123456790 Inexact Rounded
-rounding: down
-fmax3607 fma  1   123456789  0.000001 -> 123456789 Inexact Rounded
-
-rounding: half_up
-fmax3611 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded
-rounding: half_even
-fmax3612 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded
-rounding: half_down
-fmax3613 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded
-rounding: floor
-fmax3614 fma  1   123456789 -0.000001 -> 123456788 Inexact Rounded
-rounding: ceiling
-fmax3615 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded
-rounding: up
-fmax3616 fma  1   123456789 -0.000001 -> 123456789 Inexact Rounded
-rounding: down
-fmax3617 fma  1   123456789 -0.000001 -> 123456788 Inexact Rounded
-
-rounding: half_up
-fmax3621 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded
-rounding: half_even
-fmax3622 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded
-rounding: half_down
-fmax3623 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded
-rounding: floor
-fmax3624 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded
-rounding: ceiling
-fmax3625 fma  1   123456789  0.499999 -> 123456790 Inexact Rounded
-rounding: up
-fmax3626 fma  1   123456789  0.499999 -> 123456790 Inexact Rounded
-rounding: down
-fmax3627 fma  1   123456789  0.499999 -> 123456789 Inexact Rounded
-
-rounding: half_up
-fmax3631 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded
-rounding: half_even
-fmax3632 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded
-rounding: half_down
-fmax3633 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded
-rounding: floor
-fmax3634 fma  1   123456789 -0.499999 -> 123456788 Inexact Rounded
-rounding: ceiling
-fmax3635 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded
-rounding: up
-fmax3636 fma  1   123456789 -0.499999 -> 123456789 Inexact Rounded
-rounding: down
-fmax3637 fma  1   123456789 -0.499999 -> 123456788 Inexact Rounded
-
-rounding: half_up
-fmax3641 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded
-rounding: half_even
-fmax3642 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded
-rounding: half_down
-fmax3643 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded
-rounding: floor
-fmax3644 fma  1   123456789  0.500001 -> 123456789 Inexact Rounded
-rounding: ceiling
-fmax3645 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded
-rounding: up
-fmax3646 fma  1   123456789  0.500001 -> 123456790 Inexact Rounded
-rounding: down
-fmax3647 fma  1   123456789  0.500001 -> 123456789 Inexact Rounded
-
-rounding: half_up
-fmax3651 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded
-rounding: half_even
-fmax3652 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded
-rounding: half_down
-fmax3653 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded
-rounding: floor
-fmax3654 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded
-rounding: ceiling
-fmax3655 fma  1   123456789 -0.500001 -> 123456789 Inexact Rounded
-rounding: up
-fmax3656 fma  1   123456789 -0.500001 -> 123456789 Inexact Rounded
-rounding: down
-fmax3657 fma  1   123456789 -0.500001 -> 123456788 Inexact Rounded
-
--- long operand triangle
-rounding: half_up
-precision:  37
-fmax3660 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114834538
-precision:  36
-fmax3661 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483454  Inexact Rounded
-precision:  35
-fmax3662 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148345   Inexact Rounded
-precision:  34
-fmax3663 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114835    Inexact Rounded
-precision:  33
-fmax3664 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483     Inexact Rounded
-precision:  32
-fmax3665 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148      Inexact Rounded
-precision:  31
-fmax3666 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337115       Inexact Rounded
-precision:  30
-fmax3667 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711        Inexact Rounded
-precision:  29
-fmax3668 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371         Inexact Rounded
-precision:  28
-fmax3669 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337          Inexact Rounded
-precision:  27
-fmax3670 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892234           Inexact Rounded
-precision:  26
-fmax3671 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223            Inexact Rounded
-precision:  25
-fmax3672 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922             Inexact Rounded
-precision:  24
-fmax3673 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892              Inexact Rounded
-precision:  23
-fmax3674 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389               Inexact Rounded
-precision:  22
-fmax3675 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023639                Inexact Rounded
-precision:  21
-fmax3676 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102364                 Inexact Rounded
-precision:  20
-fmax3677 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236                  Inexact Rounded
-precision:  19
-fmax3678 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211024                   Inexact Rounded
-precision:  18
-fmax3679 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102                    Inexact Rounded
-precision:  17
-fmax3680 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110                     Inexact Rounded
-precision:  16
-fmax3681 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211                      Inexact Rounded
-precision:  15
-fmax3682 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221                       Inexact Rounded
-precision:  14
-fmax3683 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422                        Inexact Rounded
-precision:  13
-fmax3684 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42                         Inexact Rounded
-precision:  12
-fmax3685 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4                          Inexact Rounded
-precision:  11
-fmax3686 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166                            Inexact Rounded
-precision:  10
-fmax3687 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117417E+10                        Inexact Rounded
-precision:   9
-fmax3688 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84711742E+10                         Inexact Rounded
-precision:   8
-fmax3689 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471174E+10                          Inexact Rounded
-precision:   7
-fmax3690 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117E+10                          Inexact Rounded
-precision:   6
-fmax3691 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84712E+10                          Inexact Rounded
-precision:   5
-fmax3692 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471E+10                          Inexact Rounded
-precision:   4
-fmax3693 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847E+10                          Inexact Rounded
-precision:   3
-fmax3694 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.85E+10                          Inexact Rounded
-precision:   2
-fmax3695 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8E+10                          Inexact Rounded
-precision:   1
-fmax3696 fma  1   98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 1E+11                          Inexact Rounded
-
--- more zeros, etc.
-rounding: half_up
-precision:   9
-
-fmax3701 fma  1   5.00 1.00E-3 -> 5.00100
-fmax3702 fma  1   00.00 0.000  -> 0.000
-fmax3703 fma  1   00.00 0E-3   -> 0.000
-fmax3704 fma  1   0E-3  00.00  -> 0.000
-
-fmax3710 fma  1   0E+3  00.00  -> 0.00
-fmax3711 fma  1   0E+3  00.0   -> 0.0
-fmax3712 fma  1   0E+3  00.    -> 0
-fmax3713 fma  1   0E+3  00.E+1 -> 0E+1
-fmax3714 fma  1   0E+3  00.E+2 -> 0E+2
-fmax3715 fma  1   0E+3  00.E+3 -> 0E+3
-fmax3716 fma  1   0E+3  00.E+4 -> 0E+3
-fmax3717 fma  1   0E+3  00.E+5 -> 0E+3
-fmax3718 fma  1   0E+3  -00.0   -> 0.0
-fmax3719 fma  1   0E+3  -00.    -> 0
-fmax3731 fma  1   0E+3  -00.E+1 -> 0E+1
-
-fmax3720 fma  1   00.00  0E+3  -> 0.00
-fmax3721 fma  1   00.0   0E+3  -> 0.0
-fmax3722 fma  1   00.    0E+3  -> 0
-fmax3723 fma  1   00.E+1 0E+3  -> 0E+1
-fmax3724 fma  1   00.E+2 0E+3  -> 0E+2
-fmax3725 fma  1   00.E+3 0E+3  -> 0E+3
-fmax3726 fma  1   00.E+4 0E+3  -> 0E+3
-fmax3727 fma  1   00.E+5 0E+3  -> 0E+3
-fmax3728 fma  1   -00.00 0E+3  -> 0.00
-fmax3729 fma  1   -00.0  0E+3  -> 0.0
-fmax3730 fma  1   -00.   0E+3  -> 0
-
-fmax3732 fma  1    0     0     ->  0
-fmax3733 fma  1    0    -0     ->  0
-fmax3734 fma  1   -0     0     ->  0
-fmax3735 fma  1   -0    -0     -> -0     -- IEEE 854 special case
-
-fmax3736 fma  1    1    -1     ->  0
-fmax3737 fma  1   -1    -1     -> -2
-fmax3738 fma  1    1     1     ->  2
-fmax3739 fma  1   -1     1     ->  0
-
-fmax3741 fma  1    0    -1     -> -1
-fmax3742 fma  1   -0    -1     -> -1
-fmax3743 fma  1    0     1     ->  1
-fmax3744 fma  1   -0     1     ->  1
-fmax3745 fma  1   -1     0     -> -1
-fmax3746 fma  1   -1    -0     -> -1
-fmax3747 fma  1    1     0     ->  1
-fmax3748 fma  1    1    -0     ->  1
-
-fmax3751 fma  1    0.0  -1     -> -1.0
-fmax3752 fma  1   -0.0  -1     -> -1.0
-fmax3753 fma  1    0.0   1     ->  1.0
-fmax3754 fma  1   -0.0   1     ->  1.0
-fmax3755 fma  1   -1.0   0     -> -1.0
-fmax3756 fma  1   -1.0  -0     -> -1.0
-fmax3757 fma  1    1.0   0     ->  1.0
-fmax3758 fma  1    1.0  -0     ->  1.0
-
-fmax3761 fma  1    0    -1.0   -> -1.0
-fmax3762 fma  1   -0    -1.0   -> -1.0
-fmax3763 fma  1    0     1.0   ->  1.0
-fmax3764 fma  1   -0     1.0   ->  1.0
-fmax3765 fma  1   -1     0.0   -> -1.0
-fmax3766 fma  1   -1    -0.0   -> -1.0
-fmax3767 fma  1    1     0.0   ->  1.0
-fmax3768 fma  1    1    -0.0   ->  1.0
-
-fmax3771 fma  1    0.0  -1.0   -> -1.0
-fmax3772 fma  1   -0.0  -1.0   -> -1.0
-fmax3773 fma  1    0.0   1.0   ->  1.0
-fmax3774 fma  1   -0.0   1.0   ->  1.0
-fmax3775 fma  1   -1.0   0.0   -> -1.0
-fmax3776 fma  1   -1.0  -0.0   -> -1.0
-fmax3777 fma  1    1.0   0.0   ->  1.0
-fmax3778 fma  1    1.0  -0.0   ->  1.0
-
--- Specials
-fmax3780 fma  1   -Inf  -Inf   -> -Infinity
-fmax3781 fma  1   -Inf  -1000  -> -Infinity
-fmax3782 fma  1   -Inf  -1     -> -Infinity
-fmax3783 fma  1   -Inf  -0     -> -Infinity
-fmax3784 fma  1   -Inf   0     -> -Infinity
-fmax3785 fma  1   -Inf   1     -> -Infinity
-fmax3786 fma  1   -Inf   1000  -> -Infinity
-fmax3787 fma  1   -1000 -Inf   -> -Infinity
-fmax3788 fma  1   -Inf  -Inf   -> -Infinity
-fmax3789 fma  1   -1    -Inf   -> -Infinity
-fmax3790 fma  1   -0    -Inf   -> -Infinity
-fmax3791 fma  1    0    -Inf   -> -Infinity
-fmax3792 fma  1    1    -Inf   -> -Infinity
-fmax3793 fma  1    1000 -Inf   -> -Infinity
-fmax3794 fma  1    Inf  -Inf   ->  NaN  Invalid_operation
-
-fmax3800 fma  1    Inf  -Inf   ->  NaN  Invalid_operation
-fmax3801 fma  1    Inf  -1000  ->  Infinity
-fmax3802 fma  1    Inf  -1     ->  Infinity
-fmax3803 fma  1    Inf  -0     ->  Infinity
-fmax3804 fma  1    Inf   0     ->  Infinity
-fmax3805 fma  1    Inf   1     ->  Infinity
-fmax3806 fma  1    Inf   1000  ->  Infinity
-fmax3807 fma  1    Inf   Inf   ->  Infinity
-fmax3808 fma  1   -1000  Inf   ->  Infinity
-fmax3809 fma  1   -Inf   Inf   ->  NaN  Invalid_operation
-fmax3810 fma  1   -1     Inf   ->  Infinity
-fmax3811 fma  1   -0     Inf   ->  Infinity
-fmax3812 fma  1    0     Inf   ->  Infinity
-fmax3813 fma  1    1     Inf   ->  Infinity
-fmax3814 fma  1    1000  Inf   ->  Infinity
-fmax3815 fma  1    Inf   Inf   ->  Infinity
-
-fmax3821 fma  1    NaN -Inf    ->  NaN
-fmax3822 fma  1    NaN -1000   ->  NaN
-fmax3823 fma  1    NaN -1      ->  NaN
-fmax3824 fma  1    NaN -0      ->  NaN
-fmax3825 fma  1    NaN  0      ->  NaN
-fmax3826 fma  1    NaN  1      ->  NaN
-fmax3827 fma  1    NaN  1000   ->  NaN
-fmax3828 fma  1    NaN  Inf    ->  NaN
-fmax3829 fma  1    NaN  NaN    ->  NaN
-fmax3830 fma  1   -Inf  NaN    ->  NaN
-fmax3831 fma  1   -1000 NaN    ->  NaN
-fmax3832 fma  1   -1    NaN    ->  NaN
-fmax3833 fma  1   -0    NaN    ->  NaN
-fmax3834 fma  1    0    NaN    ->  NaN
-fmax3835 fma  1    1    NaN    ->  NaN
-fmax3836 fma  1    1000 NaN    ->  NaN
-fmax3837 fma  1    Inf  NaN    ->  NaN
-
-fmax3841 fma  1    sNaN -Inf   ->  NaN  Invalid_operation
-fmax3842 fma  1    sNaN -1000  ->  NaN  Invalid_operation
-fmax3843 fma  1    sNaN -1     ->  NaN  Invalid_operation
-fmax3844 fma  1    sNaN -0     ->  NaN  Invalid_operation
-fmax3845 fma  1    sNaN  0     ->  NaN  Invalid_operation
-fmax3846 fma  1    sNaN  1     ->  NaN  Invalid_operation
-fmax3847 fma  1    sNaN  1000  ->  NaN  Invalid_operation
-fmax3848 fma  1    sNaN  NaN   ->  NaN  Invalid_operation
-fmax3849 fma  1    sNaN sNaN   ->  NaN  Invalid_operation
-fmax3850 fma  1    NaN  sNaN   ->  NaN  Invalid_operation
-fmax3851 fma  1   -Inf  sNaN   ->  NaN  Invalid_operation
-fmax3852 fma  1   -1000 sNaN   ->  NaN  Invalid_operation
-fmax3853 fma  1   -1    sNaN   ->  NaN  Invalid_operation
-fmax3854 fma  1   -0    sNaN   ->  NaN  Invalid_operation
-fmax3855 fma  1    0    sNaN   ->  NaN  Invalid_operation
-fmax3856 fma  1    1    sNaN   ->  NaN  Invalid_operation
-fmax3857 fma  1    1000 sNaN   ->  NaN  Invalid_operation
-fmax3858 fma  1    Inf  sNaN   ->  NaN  Invalid_operation
-fmax3859 fma  1    NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-fmax3861 fma  1    NaN1   -Inf    ->  NaN1
-fmax3862 fma  1   +NaN2   -1000   ->  NaN2
-fmax3863 fma  1    NaN3    1000   ->  NaN3
-fmax3864 fma  1    NaN4    Inf    ->  NaN4
-fmax3865 fma  1    NaN5   +NaN6   ->  NaN5
-fmax3866 fma  1   -Inf     NaN7   ->  NaN7
-fmax3867 fma  1   -1000    NaN8   ->  NaN8
-fmax3868 fma  1    1000    NaN9   ->  NaN9
-fmax3869 fma  1    Inf    +NaN10  ->  NaN10
-fmax3871 fma  1    sNaN11  -Inf   ->  NaN11  Invalid_operation
-fmax3872 fma  1    sNaN12  -1000  ->  NaN12  Invalid_operation
-fmax3873 fma  1    sNaN13   1000  ->  NaN13  Invalid_operation
-fmax3874 fma  1    sNaN14   NaN17 ->  NaN14  Invalid_operation
-fmax3875 fma  1    sNaN15  sNaN18 ->  NaN15  Invalid_operation
-fmax3876 fma  1    NaN16   sNaN19 ->  NaN19  Invalid_operation
-fmax3877 fma  1   -Inf    +sNaN20 ->  NaN20  Invalid_operation
-fmax3878 fma  1   -1000    sNaN21 ->  NaN21  Invalid_operation
-fmax3879 fma  1    1000    sNaN22 ->  NaN22  Invalid_operation
-fmax3880 fma  1    Inf     sNaN23 ->  NaN23  Invalid_operation
-fmax3881 fma  1   +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-fmax3882 fma  1   -NaN26    NaN28 -> -NaN26
-fmax3883 fma  1   -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-fmax3884 fma  1    1000    -NaN30 -> -NaN30
-fmax3885 fma  1    1000   -sNaN31 -> -NaN31  Invalid_operation
-
--- overflow, underflow and subnormal tests
-maxexponent: 999999
-minexponent: -999999
-precision: 9
-fmax3890 fma  1   1E+999999     9E+999999   -> Infinity Overflow Inexact Rounded
-fmax3891 fma  1   9E+999999     1E+999999   -> Infinity Overflow Inexact Rounded
-fmax3892 fma  1   -1.1E-999999  1E-999999   -> -1E-1000000    Subnormal
-fmax3893 fma  1   1E-999999    -1.1e-999999 -> -1E-1000000    Subnormal
-fmax3894 fma  1   -1.0001E-999999  1E-999999   -> -1E-1000003 Subnormal
-fmax3895 fma  1   1E-999999    -1.0001e-999999 -> -1E-1000003 Subnormal
-fmax3896 fma  1   -1E+999999   -9E+999999   -> -Infinity Overflow Inexact Rounded
-fmax3897 fma  1   -9E+999999   -1E+999999   -> -Infinity Overflow Inexact Rounded
-fmax3898 fma  1   +1.1E-999999 -1E-999999   -> 1E-1000000   Subnormal
-fmax3899 fma  1   -1E-999999   +1.1e-999999 -> 1E-1000000    Subnormal
-fmax3900 fma  1   +1.0001E-999999 -1E-999999   -> 1E-1000003 Subnormal
-fmax3901 fma  1   -1E-999999   +1.0001e-999999 -> 1E-1000003 Subnormal
-fmax3902 fma  1   -1E+999999   +9E+999999   ->  8E+999999
-fmax3903 fma  1   -9E+999999   +1E+999999   -> -8E+999999
-
-precision: 3
-fmax3904 fma  1        0 -9.999E+999999   -> -Infinity Inexact Overflow Rounded
-fmax3905 fma  1          -9.999E+999999 0 -> -Infinity Inexact Overflow Rounded
-fmax3906 fma  1        0  9.999E+999999   ->  Infinity Inexact Overflow Rounded
-fmax3907 fma  1           9.999E+999999 0 ->  Infinity Inexact Overflow Rounded
-
-precision: 3
-maxexponent: 999
-minexponent: -999
-fmax3910 fma  1    1.00E-999   0    ->   1.00E-999
-fmax3911 fma  1    0.1E-999    0    ->   1E-1000   Subnormal
-fmax3912 fma  1    0.10E-999   0    ->   1.0E-1000 Subnormal
-fmax3913 fma  1    0.100E-999  0    ->   1.0E-1000 Subnormal Rounded
-fmax3914 fma  1    0.01E-999   0    ->   1E-1001   Subnormal
--- next is rounded to Nmin
-fmax3915 fma  1    0.999E-999  0    ->   1.00E-999 Inexact Rounded Subnormal Underflow
-fmax3916 fma  1    0.099E-999  0    ->   1.0E-1000 Inexact Rounded Subnormal Underflow
-fmax3917 fma  1    0.009E-999  0    ->   1E-1001   Inexact Rounded Subnormal Underflow
-fmax3918 fma  1    0.001E-999  0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-fmax3919 fma  1    0.0009E-999 0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-fmax3920 fma  1    0.0001E-999 0    ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
-fmax3930 fma  1   -1.00E-999   0    ->  -1.00E-999
-fmax3931 fma  1   -0.1E-999    0    ->  -1E-1000   Subnormal
-fmax3932 fma  1   -0.10E-999   0    ->  -1.0E-1000 Subnormal
-fmax3933 fma  1   -0.100E-999  0    ->  -1.0E-1000 Subnormal Rounded
-fmax3934 fma  1   -0.01E-999   0    ->  -1E-1001   Subnormal
--- next is rounded to Nmin
-fmax3935 fma  1   -0.999E-999  0    ->  -1.00E-999 Inexact Rounded Subnormal Underflow
-fmax3936 fma  1   -0.099E-999  0    ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
-fmax3937 fma  1   -0.009E-999  0    ->  -1E-1001   Inexact Rounded Subnormal Underflow
-fmax3938 fma  1   -0.001E-999  0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-fmax3939 fma  1   -0.0009E-999 0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-fmax3940 fma  1   -0.0001E-999 0    ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
--- some non-zero subnormal fma  1  s
-fmax3950 fma  1    1.00E-999    0.1E-999  ->   1.10E-999
-fmax3951 fma  1    0.1E-999     0.1E-999  ->   2E-1000    Subnormal
-fmax3952 fma  1    0.10E-999    0.1E-999  ->   2.0E-1000  Subnormal
-fmax3953 fma  1    0.100E-999   0.1E-999  ->   2.0E-1000  Subnormal Rounded
-fmax3954 fma  1    0.01E-999    0.1E-999  ->   1.1E-1000  Subnormal
-fmax3955 fma  1    0.999E-999   0.1E-999  ->   1.10E-999  Inexact Rounded
-fmax3956 fma  1    0.099E-999   0.1E-999  ->   2.0E-1000  Inexact Rounded Subnormal Underflow
-fmax3957 fma  1    0.009E-999   0.1E-999  ->   1.1E-1000  Inexact Rounded Subnormal Underflow
-fmax3958 fma  1    0.001E-999   0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow
-fmax3959 fma  1    0.0009E-999  0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow
-fmax3960 fma  1    0.0001E-999  0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow
--- negatives...
-fmax3961 fma  1    1.00E-999   -0.1E-999  ->   9.0E-1000  Subnormal
-fmax3962 fma  1    0.1E-999    -0.1E-999  ->   0E-1000
-fmax3963 fma  1    0.10E-999   -0.1E-999  ->   0E-1001
-fmax3964 fma  1    0.100E-999  -0.1E-999  ->   0E-1001    Clamped
-fmax3965 fma  1    0.01E-999   -0.1E-999  ->   -9E-1001   Subnormal
-fmax3966 fma  1    0.999E-999  -0.1E-999  ->   9.0E-1000  Inexact Rounded Subnormal Underflow
-fmax3967 fma  1    0.099E-999  -0.1E-999  ->   -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-fmax3968 fma  1    0.009E-999  -0.1E-999  ->   -9E-1001   Inexact Rounded Subnormal Underflow
-fmax3969 fma  1    0.001E-999  -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
-fmax3970 fma  1    0.0009E-999 -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
-fmax3971 fma  1    0.0001E-999 -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
-
--- some 'real' numbers
-maxExponent: 384
-minExponent: -383
-precision: 8
-fmax3566 fma  1   99999061735E-394  0E-394 -> 9.999906E-384 Inexact Rounded Underflow Subnormal
-precision: 7
-fmax3567 fma  1   99999061735E-394  0E-394 -> 9.99991E-384 Inexact Rounded Underflow Subnormal
-precision: 6
-fmax3568 fma  1   99999061735E-394  0E-394 -> 9.9999E-384 Inexact Rounded Underflow Subnormal
-
--- now the case where we can get underflow but the result is normal
--- [note this can't happen if the operands are also bounded, as we
--- cannot represent 1E-399, for example]
-precision:   16
-rounding:    half_up
-maxExponent: 384
-minExponent: -383
-
-fmax3571 fma  1         1E-383       0  -> 1E-383
-fmax3572 fma  1         1E-384       0  -> 1E-384   Subnormal
-fmax3573 fma  1         1E-383  1E-384  -> 1.1E-383
-fmax3574 subtract  1E-383  1E-384  ->   9E-384 Subnormal
-
--- Here we explore the boundary of rounding a subnormal to Nmin
-fmax3575 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
-fmax3576 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
-fmax3577 subtract  1E-383  1E-399  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-fmax3578 subtract  1E-383  1E-400  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-fmax3579 subtract  1E-383  1E-401  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-fmax3580 subtract  1E-383  1E-402  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-
--- check for double-rounded subnormals
-precision:   5
-maxexponent: 79
-minexponent: -79
--- Add: lhs and rhs 0
-fmax31001 fma  1         1.52444E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-fmax31002 fma  1         1.52445E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-fmax31003 fma  1         1.52446E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-fmax31004 fma  1         0 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-fmax31005 fma  1         0 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-fmax31006 fma  1         0 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-
--- Add: lhs >> rhs and vice versa
-fmax31011 fma  1         1.52444E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-fmax31012 fma  1         1.52445E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-fmax31013 fma  1         1.52446E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-fmax31014 fma  1         1E-100 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-fmax31015 fma  1         1E-100 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-fmax31016 fma  1         1E-100 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
-
--- Add: lhs + rhs fma  1  ition carried out
-fmax31021 fma  1         1.52443E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow
-fmax31022 fma  1         1.52444E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow
-fmax31023 fma  1         1.52445E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow
-fmax31024 fma  1         1.00001E-80  1.52443E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow
-fmax31025 fma  1         1.00001E-80  1.52444E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow
-fmax31026 fma  1         1.00001E-80  1.52445E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow
-
--- And for round down full and subnormal results
-precision:    16
-maxExponent: +384
-minExponent: -383
-rounding:     down
-
-fmax31100 fma  1   1e+2 -1e-383    -> 99.99999999999999 Rounded Inexact
-fmax31101 fma  1   1e+1 -1e-383    -> 9.999999999999999  Rounded Inexact
-fmax31103 fma  1     +1 -1e-383    -> 0.9999999999999999  Rounded Inexact
-fmax31104 fma  1   1e-1 -1e-383    -> 0.09999999999999999  Rounded Inexact
-fmax31105 fma  1   1e-2 -1e-383    -> 0.009999999999999999  Rounded Inexact
-fmax31106 fma  1   1e-3 -1e-383    -> 0.0009999999999999999  Rounded Inexact
-fmax31107 fma  1   1e-4 -1e-383    -> 0.00009999999999999999  Rounded Inexact
-fmax31108 fma  1   1e-5 -1e-383    -> 0.000009999999999999999  Rounded Inexact
-fmax31109 fma  1   1e-6 -1e-383    -> 9.999999999999999E-7  Rounded Inexact
-
-rounding:     ceiling
-fmax31110 fma  1   -1e+2 +1e-383   -> -99.99999999999999 Rounded Inexact
-fmax31111 fma  1   -1e+1 +1e-383   -> -9.999999999999999  Rounded Inexact
-fmax31113 fma  1      -1 +1e-383   -> -0.9999999999999999  Rounded Inexact
-fmax31114 fma  1   -1e-1 +1e-383   -> -0.09999999999999999  Rounded Inexact
-fmax31115 fma  1   -1e-2 +1e-383   -> -0.009999999999999999  Rounded Inexact
-fmax31116 fma  1   -1e-3 +1e-383   -> -0.0009999999999999999  Rounded Inexact
-fmax31117 fma  1   -1e-4 +1e-383   -> -0.00009999999999999999  Rounded Inexact
-fmax31118 fma  1   -1e-5 +1e-383   -> -0.000009999999999999999  Rounded Inexact
-fmax31119 fma  1   -1e-6 +1e-383   -> -9.999999999999999E-7  Rounded Inexact
-
-rounding:     down
-precision:    7
-maxExponent: +96
-minExponent: -95
-fmax31130 fma  1     1            -1e-200  -> 0.9999999  Rounded Inexact
--- subnormal boundary
-fmax31131 fma  1     1.000000E-94  -1e-200  ->  9.999999E-95  Rounded Inexact
-fmax31132 fma  1     1.000001E-95  -1e-200  ->  1.000000E-95  Rounded Inexact
-fmax31133 fma  1     1.000000E-95  -1e-200  ->  9.99999E-96  Rounded Inexact Subnormal Underflow
-fmax31134 fma  1     0.999999E-95  -1e-200  ->  9.99998E-96  Rounded Inexact Subnormal Underflow
-fmax31135 fma  1     0.001000E-95  -1e-200  ->  9.99E-99  Rounded Inexact Subnormal Underflow
-fmax31136 fma  1     0.000999E-95  -1e-200  ->  9.98E-99  Rounded Inexact Subnormal Underflow
-fmax31137 fma  1     1.000000E-95  -1e-101  ->  9.99999E-96  Subnormal
-fmax31138 fma  1        10000E-101 -1e-200  ->  9.999E-98  Subnormal Inexact Rounded Underflow
-fmax31139 fma  1         1000E-101 -1e-200  ->  9.99E-99   Subnormal Inexact Rounded Underflow
-fmax31140 fma  1          100E-101 -1e-200  ->  9.9E-100   Subnormal Inexact Rounded Underflow
-fmax31141 fma  1           10E-101 -1e-200  ->  9E-101     Subnormal Inexact Rounded Underflow
-fmax31142 fma  1            1E-101 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
-fmax31143 fma  1            0E-101 -1e-200  -> -0E-101     Subnormal Inexact Rounded Underflow Clamped
-fmax31144 fma  1            1E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
-
-fmax31151 fma  1        10000E-102 -1e-200  ->  9.99E-99  Subnormal Inexact Rounded Underflow
-fmax31152 fma  1         1000E-102 -1e-200  ->  9.9E-100  Subnormal Inexact Rounded Underflow
-fmax31153 fma  1          100E-102 -1e-200  ->  9E-101   Subnormal Inexact Rounded Underflow
-fmax31154 fma  1           10E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
-fmax31155 fma  1            1E-102 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
-fmax31156 fma  1            0E-102 -1e-200  -> -0E-101     Subnormal Inexact Rounded Underflow Clamped
-fmax31157 fma  1            1E-103 -1e-200  ->  0E-101     Subnormal Inexact Rounded Underflow Clamped
-
-fmax31160 fma  1          100E-105 -1e-101  -> -0E-101 Subnormal Inexact Rounded Underflow Clamped
-fmax31161 fma  1          100E-105 -1e-201  ->  0E-101 Subnormal Inexact Rounded Underflow Clamped
-
--- tests based on Gunnar Degnbol's edge case
-precision:   15
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
-fmax31200 fma  1   1E15  -0.5                 ->  1.00000000000000E+15 Inexact Rounded
-fmax31201 fma  1   1E15  -0.50                ->  1.00000000000000E+15 Inexact Rounded
-fmax31210 fma  1   1E15  -0.51                ->  999999999999999      Inexact Rounded
-fmax31211 fma  1   1E15  -0.501               ->  999999999999999      Inexact Rounded
-fmax31212 fma  1   1E15  -0.5001              ->  999999999999999      Inexact Rounded
-fmax31213 fma  1   1E15  -0.50001             ->  999999999999999      Inexact Rounded
-fmax31214 fma  1   1E15  -0.500001            ->  999999999999999      Inexact Rounded
-fmax31215 fma  1   1E15  -0.5000001           ->  999999999999999      Inexact Rounded
-fmax31216 fma  1   1E15  -0.50000001          ->  999999999999999      Inexact Rounded
-fmax31217 fma  1   1E15  -0.500000001         ->  999999999999999      Inexact Rounded
-fmax31218 fma  1   1E15  -0.5000000001        ->  999999999999999      Inexact Rounded
-fmax31219 fma  1   1E15  -0.50000000001       ->  999999999999999      Inexact Rounded
-fmax31220 fma  1   1E15  -0.500000000001      ->  999999999999999      Inexact Rounded
-fmax31221 fma  1   1E15  -0.5000000000001     ->  999999999999999      Inexact Rounded
-fmax31222 fma  1   1E15  -0.50000000000001    ->  999999999999999      Inexact Rounded
-fmax31223 fma  1   1E15  -0.500000000000001   ->  999999999999999      Inexact Rounded
-fmax31224 fma  1   1E15  -0.5000000000000001  ->  999999999999999      Inexact Rounded
-fmax31225 fma  1   1E15  -0.5000000000000000  ->  1.00000000000000E+15 Inexact Rounded
-fmax31230 fma  1   1E15  -5000000.000000001   ->  999999995000000      Inexact Rounded
-
-precision:   16
-
-fmax31300 fma  1   1E16  -0.5                 ->  1.000000000000000E+16 Inexact Rounded
-fmax31310 fma  1   1E16  -0.51                ->  9999999999999999      Inexact Rounded
-fmax31311 fma  1   1E16  -0.501               ->  9999999999999999      Inexact Rounded
-fmax31312 fma  1   1E16  -0.5001              ->  9999999999999999      Inexact Rounded
-fmax31313 fma  1   1E16  -0.50001             ->  9999999999999999      Inexact Rounded
-fmax31314 fma  1   1E16  -0.500001            ->  9999999999999999      Inexact Rounded
-fmax31315 fma  1   1E16  -0.5000001           ->  9999999999999999      Inexact Rounded
-fmax31316 fma  1   1E16  -0.50000001          ->  9999999999999999      Inexact Rounded
-fmax31317 fma  1   1E16  -0.500000001         ->  9999999999999999      Inexact Rounded
-fmax31318 fma  1   1E16  -0.5000000001        ->  9999999999999999      Inexact Rounded
-fmax31319 fma  1   1E16  -0.50000000001       ->  9999999999999999      Inexact Rounded
-fmax31320 fma  1   1E16  -0.500000000001      ->  9999999999999999      Inexact Rounded
-fmax31321 fma  1   1E16  -0.5000000000001     ->  9999999999999999      Inexact Rounded
-fmax31322 fma  1   1E16  -0.50000000000001    ->  9999999999999999      Inexact Rounded
-fmax31323 fma  1   1E16  -0.500000000000001   ->  9999999999999999      Inexact Rounded
-fmax31324 fma  1   1E16  -0.5000000000000001  ->  9999999999999999      Inexact Rounded
-fmax31325 fma  1   1E16  -0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
-fmax31326 fma  1   1E16  -0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
-fmax31327 fma  1   1E16  -0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
-fmax31328 fma  1   1E16  -0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
-fmax31329 fma  1   1E16  -0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
-fmax31330 fma  1   1E16  -0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
-fmax31331 fma  1   1E16  -0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
-fmax31332 fma  1   1E16  -0.500000000         ->  1.000000000000000E+16 Inexact Rounded
-fmax31333 fma  1   1E16  -0.50000000          ->  1.000000000000000E+16 Inexact Rounded
-fmax31334 fma  1   1E16  -0.5000000           ->  1.000000000000000E+16 Inexact Rounded
-fmax31335 fma  1   1E16  -0.500000            ->  1.000000000000000E+16 Inexact Rounded
-fmax31336 fma  1   1E16  -0.50000             ->  1.000000000000000E+16 Inexact Rounded
-fmax31337 fma  1   1E16  -0.5000              ->  1.000000000000000E+16 Inexact Rounded
-fmax31338 fma  1   1E16  -0.500               ->  1.000000000000000E+16 Inexact Rounded
-fmax31339 fma  1   1E16  -0.50                ->  1.000000000000000E+16 Inexact Rounded
-
-fmax31340 fma  1   1E16  -5000000.000010001   ->  9999999995000000      Inexact Rounded
-fmax31341 fma  1   1E16  -5000000.000000001   ->  9999999995000000      Inexact Rounded
-
-fmax31349 fma  1   9999999999999999 0.4                 ->  9999999999999999      Inexact Rounded
-fmax31350 fma  1   9999999999999999 0.49                ->  9999999999999999      Inexact Rounded
-fmax31351 fma  1   9999999999999999 0.499               ->  9999999999999999      Inexact Rounded
-fmax31352 fma  1   9999999999999999 0.4999              ->  9999999999999999      Inexact Rounded
-fmax31353 fma  1   9999999999999999 0.49999             ->  9999999999999999      Inexact Rounded
-fmax31354 fma  1   9999999999999999 0.499999            ->  9999999999999999      Inexact Rounded
-fmax31355 fma  1   9999999999999999 0.4999999           ->  9999999999999999      Inexact Rounded
-fmax31356 fma  1   9999999999999999 0.49999999          ->  9999999999999999      Inexact Rounded
-fmax31357 fma  1   9999999999999999 0.499999999         ->  9999999999999999      Inexact Rounded
-fmax31358 fma  1   9999999999999999 0.4999999999        ->  9999999999999999      Inexact Rounded
-fmax31359 fma  1   9999999999999999 0.49999999999       ->  9999999999999999      Inexact Rounded
-fmax31360 fma  1   9999999999999999 0.499999999999      ->  9999999999999999      Inexact Rounded
-fmax31361 fma  1   9999999999999999 0.4999999999999     ->  9999999999999999      Inexact Rounded
-fmax31362 fma  1   9999999999999999 0.49999999999999    ->  9999999999999999      Inexact Rounded
-fmax31363 fma  1   9999999999999999 0.499999999999999   ->  9999999999999999      Inexact Rounded
-fmax31364 fma  1   9999999999999999 0.4999999999999999  ->  9999999999999999      Inexact Rounded
-fmax31365 fma  1   9999999999999999 0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
-fmax31367 fma  1   9999999999999999 0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
-fmax31368 fma  1   9999999999999999 0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
-fmax31369 fma  1   9999999999999999 0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
-fmax31370 fma  1   9999999999999999 0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
-fmax31371 fma  1   9999999999999999 0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
-fmax31372 fma  1   9999999999999999 0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
-fmax31373 fma  1   9999999999999999 0.500000000         ->  1.000000000000000E+16 Inexact Rounded
-fmax31374 fma  1   9999999999999999 0.50000000          ->  1.000000000000000E+16 Inexact Rounded
-fmax31375 fma  1   9999999999999999 0.5000000           ->  1.000000000000000E+16 Inexact Rounded
-fmax31376 fma  1   9999999999999999 0.500000            ->  1.000000000000000E+16 Inexact Rounded
-fmax31377 fma  1   9999999999999999 0.50000             ->  1.000000000000000E+16 Inexact Rounded
-fmax31378 fma  1   9999999999999999 0.5000              ->  1.000000000000000E+16 Inexact Rounded
-fmax31379 fma  1   9999999999999999 0.500               ->  1.000000000000000E+16 Inexact Rounded
-fmax31380 fma  1   9999999999999999 0.50                ->  1.000000000000000E+16 Inexact Rounded
-fmax31381 fma  1   9999999999999999 0.5                 ->  1.000000000000000E+16 Inexact Rounded
-fmax31382 fma  1   9999999999999999 0.5000000000000001  ->  1.000000000000000E+16 Inexact Rounded
-fmax31383 fma  1   9999999999999999 0.500000000000001   ->  1.000000000000000E+16 Inexact Rounded
-fmax31384 fma  1   9999999999999999 0.50000000000001    ->  1.000000000000000E+16 Inexact Rounded
-fmax31385 fma  1   9999999999999999 0.5000000000001     ->  1.000000000000000E+16 Inexact Rounded
-fmax31386 fma  1   9999999999999999 0.500000000001      ->  1.000000000000000E+16 Inexact Rounded
-fmax31387 fma  1   9999999999999999 0.50000000001       ->  1.000000000000000E+16 Inexact Rounded
-fmax31388 fma  1   9999999999999999 0.5000000001        ->  1.000000000000000E+16 Inexact Rounded
-fmax31389 fma  1   9999999999999999 0.500000001         ->  1.000000000000000E+16 Inexact Rounded
-fmax31390 fma  1   9999999999999999 0.50000001          ->  1.000000000000000E+16 Inexact Rounded
-fmax31391 fma  1   9999999999999999 0.5000001           ->  1.000000000000000E+16 Inexact Rounded
-fmax31392 fma  1   9999999999999999 0.500001            ->  1.000000000000000E+16 Inexact Rounded
-fmax31393 fma  1   9999999999999999 0.50001             ->  1.000000000000000E+16 Inexact Rounded
-fmax31394 fma  1   9999999999999999 0.5001              ->  1.000000000000000E+16 Inexact Rounded
-fmax31395 fma  1   9999999999999999 0.501               ->  1.000000000000000E+16 Inexact Rounded
-fmax31396 fma  1   9999999999999999 0.51                ->  1.000000000000000E+16 Inexact Rounded
-
--- More GD edge cases, where difference between the unadjusted
--- exponents is larger than the maximum precision and one side is 0
-precision:   15
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
-fmax31400 fma  1    0 1.23456789012345     -> 1.23456789012345
-fmax31401 fma  1    0 1.23456789012345E-1  -> 0.123456789012345
-fmax31402 fma  1    0 1.23456789012345E-2  -> 0.0123456789012345
-fmax31403 fma  1    0 1.23456789012345E-3  -> 0.00123456789012345
-fmax31404 fma  1    0 1.23456789012345E-4  -> 0.000123456789012345
-fmax31405 fma  1    0 1.23456789012345E-5  -> 0.0000123456789012345
-fmax31406 fma  1    0 1.23456789012345E-6  -> 0.00000123456789012345
-fmax31407 fma  1    0 1.23456789012345E-7  -> 1.23456789012345E-7
-fmax31408 fma  1    0 1.23456789012345E-8  -> 1.23456789012345E-8
-fmax31409 fma  1    0 1.23456789012345E-9  -> 1.23456789012345E-9
-fmax31410 fma  1    0 1.23456789012345E-10 -> 1.23456789012345E-10
-fmax31411 fma  1    0 1.23456789012345E-11 -> 1.23456789012345E-11
-fmax31412 fma  1    0 1.23456789012345E-12 -> 1.23456789012345E-12
-fmax31413 fma  1    0 1.23456789012345E-13 -> 1.23456789012345E-13
-fmax31414 fma  1    0 1.23456789012345E-14 -> 1.23456789012345E-14
-fmax31415 fma  1    0 1.23456789012345E-15 -> 1.23456789012345E-15
-fmax31416 fma  1    0 1.23456789012345E-16 -> 1.23456789012345E-16
-fmax31417 fma  1    0 1.23456789012345E-17 -> 1.23456789012345E-17
-fmax31418 fma  1    0 1.23456789012345E-18 -> 1.23456789012345E-18
-fmax31419 fma  1    0 1.23456789012345E-19 -> 1.23456789012345E-19
-
--- same, precision 16..
-precision:   16
-fmax31420 fma  1    0 1.123456789012345     -> 1.123456789012345
-fmax31421 fma  1    0 1.123456789012345E-1  -> 0.1123456789012345
-fmax31422 fma  1    0 1.123456789012345E-2  -> 0.01123456789012345
-fmax31423 fma  1    0 1.123456789012345E-3  -> 0.001123456789012345
-fmax31424 fma  1    0 1.123456789012345E-4  -> 0.0001123456789012345
-fmax31425 fma  1    0 1.123456789012345E-5  -> 0.00001123456789012345
-fmax31426 fma  1    0 1.123456789012345E-6  -> 0.000001123456789012345
-fmax31427 fma  1    0 1.123456789012345E-7  -> 1.123456789012345E-7
-fmax31428 fma  1    0 1.123456789012345E-8  -> 1.123456789012345E-8
-fmax31429 fma  1    0 1.123456789012345E-9  -> 1.123456789012345E-9
-fmax31430 fma  1    0 1.123456789012345E-10 -> 1.123456789012345E-10
-fmax31431 fma  1    0 1.123456789012345E-11 -> 1.123456789012345E-11
-fmax31432 fma  1    0 1.123456789012345E-12 -> 1.123456789012345E-12
-fmax31433 fma  1    0 1.123456789012345E-13 -> 1.123456789012345E-13
-fmax31434 fma  1    0 1.123456789012345E-14 -> 1.123456789012345E-14
-fmax31435 fma  1    0 1.123456789012345E-15 -> 1.123456789012345E-15
-fmax31436 fma  1    0 1.123456789012345E-16 -> 1.123456789012345E-16
-fmax31437 fma  1    0 1.123456789012345E-17 -> 1.123456789012345E-17
-fmax31438 fma  1    0 1.123456789012345E-18 -> 1.123456789012345E-18
-fmax31439 fma  1    0 1.123456789012345E-19 -> 1.123456789012345E-19
-
--- same, reversed 0
-fmax31440 fma  1   1.123456789012345     0 -> 1.123456789012345
-fmax31441 fma  1   1.123456789012345E-1  0 -> 0.1123456789012345
-fmax31442 fma  1   1.123456789012345E-2  0 -> 0.01123456789012345
-fmax31443 fma  1   1.123456789012345E-3  0 -> 0.001123456789012345
-fmax31444 fma  1   1.123456789012345E-4  0 -> 0.0001123456789012345
-fmax31445 fma  1   1.123456789012345E-5  0 -> 0.00001123456789012345
-fmax31446 fma  1   1.123456789012345E-6  0 -> 0.000001123456789012345
-fmax31447 fma  1   1.123456789012345E-7  0 -> 1.123456789012345E-7
-fmax31448 fma  1   1.123456789012345E-8  0 -> 1.123456789012345E-8
-fmax31449 fma  1   1.123456789012345E-9  0 -> 1.123456789012345E-9
-fmax31450 fma  1   1.123456789012345E-10 0 -> 1.123456789012345E-10
-fmax31451 fma  1   1.123456789012345E-11 0 -> 1.123456789012345E-11
-fmax31452 fma  1   1.123456789012345E-12 0 -> 1.123456789012345E-12
-fmax31453 fma  1   1.123456789012345E-13 0 -> 1.123456789012345E-13
-fmax31454 fma  1   1.123456789012345E-14 0 -> 1.123456789012345E-14
-fmax31455 fma  1   1.123456789012345E-15 0 -> 1.123456789012345E-15
-fmax31456 fma  1   1.123456789012345E-16 0 -> 1.123456789012345E-16
-fmax31457 fma  1   1.123456789012345E-17 0 -> 1.123456789012345E-17
-fmax31458 fma  1   1.123456789012345E-18 0 -> 1.123456789012345E-18
-fmax31459 fma  1   1.123456789012345E-19 0 -> 1.123456789012345E-19
-
--- same, Es on the 0
-fmax31460 fma  1   1.123456789012345  0E-0   -> 1.123456789012345
-fmax31461 fma  1   1.123456789012345  0E-1   -> 1.123456789012345
-fmax31462 fma  1   1.123456789012345  0E-2   -> 1.123456789012345
-fmax31463 fma  1   1.123456789012345  0E-3   -> 1.123456789012345
-fmax31464 fma  1   1.123456789012345  0E-4   -> 1.123456789012345
-fmax31465 fma  1   1.123456789012345  0E-5   -> 1.123456789012345
-fmax31466 fma  1   1.123456789012345  0E-6   -> 1.123456789012345
-fmax31467 fma  1   1.123456789012345  0E-7   -> 1.123456789012345
-fmax31468 fma  1   1.123456789012345  0E-8   -> 1.123456789012345
-fmax31469 fma  1   1.123456789012345  0E-9   -> 1.123456789012345
-fmax31470 fma  1   1.123456789012345  0E-10  -> 1.123456789012345
-fmax31471 fma  1   1.123456789012345  0E-11  -> 1.123456789012345
-fmax31472 fma  1   1.123456789012345  0E-12  -> 1.123456789012345
-fmax31473 fma  1   1.123456789012345  0E-13  -> 1.123456789012345
-fmax31474 fma  1   1.123456789012345  0E-14  -> 1.123456789012345
-fmax31475 fma  1   1.123456789012345  0E-15  -> 1.123456789012345
--- next four flag Rounded because the 0 extends the result
-fmax31476 fma  1   1.123456789012345  0E-16  -> 1.123456789012345 Rounded
-fmax31477 fma  1   1.123456789012345  0E-17  -> 1.123456789012345 Rounded
-fmax31478 fma  1   1.123456789012345  0E-18  -> 1.123456789012345 Rounded
-fmax31479 fma  1   1.123456789012345  0E-19  -> 1.123456789012345 Rounded
-
--- sum of two opposite-sign operands is exactly 0 and floor => -0
-precision:   16
-maxExponent: 384
-minexponent: -383
-
-rounding:    half_up
--- exact zeros from zeros
-fmax31500 fma  1    0        0E-19  ->  0E-19
-fmax31501 fma  1   -0        0E-19  ->  0E-19
-fmax31502 fma  1    0       -0E-19  ->  0E-19
-fmax31503 fma  1   -0       -0E-19  -> -0E-19
-fmax31504 fma  1    0E-400   0E-19  ->  0E-398 Clamped
-fmax31505 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
-fmax31506 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
-fmax31507 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-fmax31511 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31512 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31513 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31514 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-fmax31515 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31516 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
-fmax31517 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
-fmax31518 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    half_down
--- exact zeros from zeros
-fmax31520 fma  1    0        0E-19  ->  0E-19
-fmax31521 fma  1   -0        0E-19  ->  0E-19
-fmax31522 fma  1    0       -0E-19  ->  0E-19
-fmax31523 fma  1   -0       -0E-19  -> -0E-19
-fmax31524 fma  1    0E-400   0E-19  ->  0E-398 Clamped
-fmax31525 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
-fmax31526 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
-fmax31527 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-fmax31531 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31532 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31533 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31534 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-fmax31535 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31536 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
-fmax31537 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
-fmax31538 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    half_even
--- exact zeros from zeros
-fmax31540 fma  1    0        0E-19  ->  0E-19
-fmax31541 fma  1   -0        0E-19  ->  0E-19
-fmax31542 fma  1    0       -0E-19  ->  0E-19
-fmax31543 fma  1   -0       -0E-19  -> -0E-19
-fmax31544 fma  1    0E-400   0E-19  ->  0E-398 Clamped
-fmax31545 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
-fmax31546 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
-fmax31547 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-fmax31551 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31552 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31553 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31554 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-fmax31555 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31556 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
-fmax31557 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
-fmax31558 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    up
--- exact zeros from zeros
-fmax31560 fma  1    0        0E-19  ->  0E-19
-fmax31561 fma  1   -0        0E-19  ->  0E-19
-fmax31562 fma  1    0       -0E-19  ->  0E-19
-fmax31563 fma  1   -0       -0E-19  -> -0E-19
-fmax31564 fma  1    0E-400   0E-19  ->  0E-398 Clamped
-fmax31565 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
-fmax31566 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
-fmax31567 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-fmax31571 fma  1    1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-fmax31572 fma  1   -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-fmax31573 fma  1    1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
-fmax31574 fma  1   -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
--- some exact zeros from non-zeros
-fmax31575 fma  1    1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
-fmax31576 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
-fmax31577 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
-fmax31578 fma  1   -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
-
-rounding:    down
--- exact zeros from zeros
-fmax31580 fma  1    0        0E-19  ->  0E-19
-fmax31581 fma  1   -0        0E-19  ->  0E-19
-fmax31582 fma  1    0       -0E-19  ->  0E-19
-fmax31583 fma  1   -0       -0E-19  -> -0E-19
-fmax31584 fma  1    0E-400   0E-19  ->  0E-398 Clamped
-fmax31585 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
-fmax31586 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
-fmax31587 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-fmax31591 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31592 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31593 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31594 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-fmax31595 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31596 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
-fmax31597 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
-fmax31598 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    ceiling
--- exact zeros from zeros
-fmax31600 fma  1    0        0E-19  ->  0E-19
-fmax31601 fma  1   -0        0E-19  ->  0E-19
-fmax31602 fma  1    0       -0E-19  ->  0E-19
-fmax31603 fma  1   -0       -0E-19  -> -0E-19
-fmax31604 fma  1    0E-400   0E-19  ->  0E-398 Clamped
-fmax31605 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
-fmax31606 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
-fmax31607 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-fmax31611 fma  1    1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-fmax31612 fma  1   -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-fmax31613 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31614 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-fmax31615 fma  1    1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
-fmax31616 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
-fmax31617 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
-fmax31618 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
--- and the extra-special ugly case; unusual minuses marked by -- *
-rounding:    floor
--- exact zeros from zeros
-fmax31620 fma  1    0        0E-19  ->  0E-19
-fmax31621 fma  1   -0        0E-19  -> -0E-19           -- *
-fmax31622 fma  1    0       -0E-19  -> -0E-19           -- *
-fmax31623 fma  1   -0       -0E-19  -> -0E-19
-fmax31624 fma  1    0E-400   0E-19  ->  0E-398 Clamped
-fmax31625 fma  1   -0E-400   0E-19  -> -0E-398 Clamped  -- *
-fmax31626 fma  1    0E-400  -0E-19  -> -0E-398 Clamped  -- *
-fmax31627 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-fmax31631 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31632 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31633 fma  1    1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
-fmax31634 fma  1   -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
--- some exact zeros from non-zeros
-fmax31635 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax31636 fma  1   -1E-401   1E-401 -> -0E-398 Clamped  -- *
-fmax31637 fma  1    1E-401  -1E-401 -> -0E-398 Clamped  -- *
-fmax31638 fma  1   -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
-
--- BigDecimal problem testcases 2006.01.23
-precision:   16
-maxExponent: 384
-minexponent: -383
-
-rounding:  down
-precision: 7
-fmax31651 fma  1    10001E+2  -2E+1 -> 1.00008E+6
-precision: 6
-fmax31652 fma  1    10001E+2  -2E+1 -> 1.00008E+6
-precision: 5
-fmax31653 fma  1    10001E+2  -2E+1 -> 1.0000E+6   Inexact Rounded
-precision: 4
-fmax31654 fma  1    10001E+2  -2E+1 -> 1.000E+6    Inexact Rounded
-precision: 3
-fmax31655 fma  1    10001E+2  -2E+1 -> 1.00E+6     Inexact Rounded
-precision: 2
-fmax31656 fma  1    10001E+2  -2E+1 -> 1.0E+6      Inexact Rounded
-precision: 1
-fmax31657 fma  1    10001E+2  -2E+1 -> 1E+6        Inexact Rounded
-
-rounding:  half_even
-precision: 7
-fmax31661 fma  1    10001E+2  -2E+1 -> 1.00008E+6
-precision: 6
-fmax31662 fma  1    10001E+2  -2E+1 -> 1.00008E+6
-precision: 5
-fmax31663 fma  1    10001E+2  -2E+1 -> 1.0001E+6   Inexact Rounded
-precision: 4
-fmax31664 fma  1    10001E+2  -2E+1 -> 1.000E+6    Inexact Rounded
-precision: 3
-fmax31665 fma  1    10001E+2  -2E+1 -> 1.00E+6     Inexact Rounded
-precision: 2
-fmax31666 fma  1    10001E+2  -2E+1 -> 1.0E+6      Inexact Rounded
-precision: 1
-fmax31667 fma  1    10001E+2  -2E+1 -> 1E+6        Inexact Rounded
-
-rounding:  up
-precision: 7
-fmax31671 fma  1    10001E+2  -2E+1 -> 1.00008E+6
-precision: 6
-fmax31672 fma  1    10001E+2  -2E+1 -> 1.00008E+6
-precision: 5
-fmax31673 fma  1    10001E+2  -2E+1 -> 1.0001E+6   Inexact Rounded
-precision: 4
-fmax31674 fma  1    10001E+2  -2E+1 -> 1.001E+6    Inexact Rounded
-precision: 3
-fmax31675 fma  1    10001E+2  -2E+1 -> 1.01E+6     Inexact Rounded
-precision: 2
-fmax31676 fma  1    10001E+2  -2E+1 -> 1.1E+6      Inexact Rounded
-precision: 1
-fmax31677 fma  1    10001E+2  -2E+1 -> 2E+6        Inexact Rounded
-
-precision:   34
-rounding:    half_up
-maxExponent: 6144
-minExponent: -6143
--- Examples from SQL proposal (Krishna Kulkarni)
-fmax31701  fma  1   130E-2    120E-2    -> 2.50
-fmax31702  fma  1   130E-2    12E-1     -> 2.50
-fmax31703  fma  1   130E-2    1E0       -> 2.30
-fmax31704  fma  1   1E2       1E4       -> 1.01E+4
-fmax31705  subtract 130E-2  120E-2 -> 0.10
-fmax31706  subtract 130E-2  12E-1  -> 0.10
-fmax31707  subtract 130E-2  1E0    -> 0.30
-fmax31708  subtract 1E2     1E4    -> -9.9E+3
-
-------------------------------------------------------------------------
--- Same as above, using decimal64 default parameters                  --
-------------------------------------------------------------------------
-precision:   16
-rounding:    half_even
-maxExponent: 384
-minexponent: -383
-
--- [first group are 'quick confidence check']
-fmax36001 fma  1   1       1       ->  2
-fmax36002 fma  1   2       3       ->  5
-fmax36003 fma  1   '5.75'  '3.3'   ->  9.05
-fmax36004 fma  1   '5'     '-3'    ->  2
-fmax36005 fma  1   '-5'    '-3'    ->  -8
-fmax36006 fma  1   '-7'    '2.5'   ->  -4.5
-fmax36007 fma  1   '0.7'   '0.3'   ->  1.0
-fmax36008 fma  1   '1.25'  '1.25'  ->  2.50
-fmax36009 fma  1   '1.23456789'  '1.00000000' -> '2.23456789'
-fmax36010 fma  1   '1.23456789'  '1.00000011' -> '2.23456800'
-
-fmax36011 fma  1   '0.44444444444444444'  '0.55555555555555555' -> '1.000000000000000' Inexact Rounded
-fmax36012 fma  1   '0.44444444444444440'  '0.55555555555555555' -> '1.000000000000000' Inexact Rounded
-fmax36013 fma  1   '0.44444444444444444'  '0.55555555555555550' -> '0.9999999999999999' Inexact Rounded
-fmax36014 fma  1   '0.444444444444444449'    '0' -> '0.4444444444444444' Inexact Rounded
-fmax36015 fma  1   '0.4444444444444444499'   '0' -> '0.4444444444444444' Inexact Rounded
-fmax36016 fma  1   '0.44444444444444444999'  '0' -> '0.4444444444444444' Inexact Rounded
-fmax36017 fma  1   '0.44444444444444445000'  '0' -> '0.4444444444444444' Inexact Rounded
-fmax36018 fma  1   '0.44444444444444445001'  '0' -> '0.4444444444444445' Inexact Rounded
-fmax36019 fma  1   '0.4444444444444444501'   '0' -> '0.4444444444444445' Inexact Rounded
-fmax36020 fma  1   '0.444444444444444451'    '0' -> '0.4444444444444445' Inexact Rounded
-
-fmax36021 fma  1   0 1 -> 1
-fmax36022 fma  1   1 1 -> 2
-fmax36023 fma  1   2 1 -> 3
-fmax36024 fma  1   3 1 -> 4
-fmax36025 fma  1   4 1 -> 5
-fmax36026 fma  1   5 1 -> 6
-fmax36027 fma  1   6 1 -> 7
-fmax36028 fma  1   7 1 -> 8
-fmax36029 fma  1   8 1 -> 9
-fmax36030 fma  1   9 1 -> 10
-
--- some carrying effects
-fmax36031 fma  1   '0.9998'  '0.0000' -> '0.9998'
-fmax36032 fma  1   '0.9998'  '0.0001' -> '0.9999'
-fmax36033 fma  1   '0.9998'  '0.0002' -> '1.0000'
-fmax36034 fma  1   '0.9998'  '0.0003' -> '1.0001'
-
-fmax36035 fma  1   '70'      '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
-fmax36036 fma  1   '700'     '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
-fmax36037 fma  1   '7000'    '10000e+16' -> '1.000000000000000E+20' Inexact Rounded
-fmax36038 fma  1   '70000'   '10000e+16' -> '1.000000000000001E+20' Inexact Rounded
-fmax36039 fma  1   '700000'  '10000e+16' -> '1.000000000000007E+20' Rounded
-
--- symmetry:
-fmax36040 fma  1   '10000e+16'  '70' -> '1.000000000000000E+20' Inexact Rounded
-fmax36041 fma  1   '10000e+16'  '700' -> '1.000000000000000E+20' Inexact Rounded
-fmax36042 fma  1   '10000e+16'  '7000' -> '1.000000000000000E+20' Inexact Rounded
-fmax36044 fma  1   '10000e+16'  '70000' -> '1.000000000000001E+20' Inexact Rounded
-fmax36045 fma  1   '10000e+16'  '700000' -> '1.000000000000007E+20' Rounded
-
-fmax36046 fma  1   '10000e+9'  '7' -> '10000000000007'
-fmax36047 fma  1   '10000e+9'  '70' -> '10000000000070'
-fmax36048 fma  1   '10000e+9'  '700' -> '10000000000700'
-fmax36049 fma  1   '10000e+9'  '7000' -> '10000000007000'
-fmax36050 fma  1   '10000e+9'  '70000' -> '10000000070000'
-fmax36051 fma  1   '10000e+9'  '700000' -> '10000000700000'
-
--- examples from decarith
-fmax36053 fma  1   '12' '7.00' -> '19.00'
-fmax36054 fma  1   '1.3' '-1.07' -> '0.23'
-fmax36055 fma  1   '1.3' '-1.30' -> '0.00'
-fmax36056 fma  1   '1.3' '-2.07' -> '-0.77'
-fmax36057 fma  1   '1E+2' '1E+4' -> '1.01E+4'
-
--- from above
-fmax36061 fma  1   1 '0.1' -> '1.1'
-fmax36062 fma  1   1 '0.01' -> '1.01'
-fmax36063 fma  1   1 '0.001' -> '1.001'
-fmax36064 fma  1   1 '0.0001' -> '1.0001'
-fmax36065 fma  1   1 '0.00001' -> '1.00001'
-fmax36066 fma  1   1 '0.000001' -> '1.000001'
-fmax36067 fma  1   1 '0.0000001' -> '1.0000001'
-fmax36068 fma  1   1 '0.00000001' -> '1.00000001'
-
--- some funny zeros [in case of bad signum]
-fmax36070 fma  1   1  0    -> 1
-fmax36071 fma  1   1 0.    -> 1
-fmax36072 fma  1   1  .0   -> 1.0
-fmax36073 fma  1   1 0.0   -> 1.0
-fmax36074 fma  1   1 0.00  -> 1.00
-fmax36075 fma  1    0  1   -> 1
-fmax36076 fma  1   0.  1   -> 1
-fmax36077 fma  1    .0 1   -> 1.0
-fmax36078 fma  1   0.0 1   -> 1.0
-fmax36079 fma  1   0.00 1  -> 1.00
-
--- some carries
-fmax36080 fma  1   9999999999999998 1  -> 9999999999999999
-fmax36081 fma  1   9999999999999999 1  -> 1.000000000000000E+16 Rounded
-fmax36082 fma  1    999999999999999 1  -> 1000000000000000
-fmax36083 fma  1      9999999999999 1  -> 10000000000000
-fmax36084 fma  1        99999999999 1  -> 100000000000
-fmax36085 fma  1          999999999 1  -> 1000000000
-fmax36086 fma  1            9999999 1  -> 10000000
-fmax36087 fma  1              99999 1  -> 100000
-fmax36088 fma  1                999 1  -> 1000
-fmax36089 fma  1                  9 1  -> 10
-
-
--- more LHS swaps
-fmax36090 fma  1   '-56267E-10'   0 ->  '-0.0000056267'
-fmax36091 fma  1   '-56267E-6'    0 ->  '-0.056267'
-fmax36092 fma  1   '-56267E-5'    0 ->  '-0.56267'
-fmax36093 fma  1   '-56267E-4'    0 ->  '-5.6267'
-fmax36094 fma  1   '-56267E-3'    0 ->  '-56.267'
-fmax36095 fma  1   '-56267E-2'    0 ->  '-562.67'
-fmax36096 fma  1   '-56267E-1'    0 ->  '-5626.7'
-fmax36097 fma  1   '-56267E-0'    0 ->  '-56267'
-fmax36098 fma  1   '-5E-10'       0 ->  '-5E-10'
-fmax36099 fma  1   '-5E-7'        0 ->  '-5E-7'
-fmax36100 fma  1   '-5E-6'        0 ->  '-0.000005'
-fmax36101 fma  1   '-5E-5'        0 ->  '-0.00005'
-fmax36102 fma  1   '-5E-4'        0 ->  '-0.0005'
-fmax36103 fma  1   '-5E-1'        0 ->  '-0.5'
-fmax36104 fma  1   '-5E0'         0 ->  '-5'
-fmax36105 fma  1   '-5E1'         0 ->  '-50'
-fmax36106 fma  1   '-5E5'         0 ->  '-500000'
-fmax36107 fma  1   '-5E15'        0 ->  '-5000000000000000'
-fmax36108 fma  1   '-5E16'        0 ->  '-5.000000000000000E+16'   Rounded
-fmax36109 fma  1   '-5E17'        0 ->  '-5.000000000000000E+17'  Rounded
-fmax36110 fma  1   '-5E18'        0 ->  '-5.000000000000000E+18'  Rounded
-fmax36111 fma  1   '-5E100'       0 ->  '-5.000000000000000E+100' Rounded
-
--- more RHS swaps
-fmax36113 fma  1   0  '-56267E-10' ->  '-0.0000056267'
-fmax36114 fma  1   0  '-56267E-6'  ->  '-0.056267'
-fmax36116 fma  1   0  '-56267E-5'  ->  '-0.56267'
-fmax36117 fma  1   0  '-56267E-4'  ->  '-5.6267'
-fmax36119 fma  1   0  '-56267E-3'  ->  '-56.267'
-fmax36120 fma  1   0  '-56267E-2'  ->  '-562.67'
-fmax36121 fma  1   0  '-56267E-1'  ->  '-5626.7'
-fmax36122 fma  1   0  '-56267E-0'  ->  '-56267'
-fmax36123 fma  1   0  '-5E-10'     ->  '-5E-10'
-fmax36124 fma  1   0  '-5E-7'      ->  '-5E-7'
-fmax36125 fma  1   0  '-5E-6'      ->  '-0.000005'
-fmax36126 fma  1   0  '-5E-5'      ->  '-0.00005'
-fmax36127 fma  1   0  '-5E-4'      ->  '-0.0005'
-fmax36128 fma  1   0  '-5E-1'      ->  '-0.5'
-fmax36129 fma  1   0  '-5E0'       ->  '-5'
-fmax36130 fma  1   0  '-5E1'       ->  '-50'
-fmax36131 fma  1   0  '-5E5'       ->  '-500000'
-fmax36132 fma  1   0  '-5E15'      ->  '-5000000000000000'
-fmax36133 fma  1   0  '-5E16'      ->  '-5.000000000000000E+16'   Rounded
-fmax36134 fma  1   0  '-5E17'      ->  '-5.000000000000000E+17'   Rounded
-fmax36135 fma  1   0  '-5E18'      ->  '-5.000000000000000E+18'   Rounded
-fmax36136 fma  1   0  '-5E100'     ->  '-5.000000000000000E+100'  Rounded
-
--- related
-fmax36137 fma  1    1  '0E-19'      ->  '1.000000000000000'  Rounded
-fmax36138 fma  1   -1  '0E-19'      ->  '-1.000000000000000' Rounded
-fmax36139 fma  1   '0E-19' 1        ->  '1.000000000000000'  Rounded
-fmax36140 fma  1   '0E-19' -1       ->  '-1.000000000000000' Rounded
-fmax36141 fma  1   1E+11   0.0000   ->  '100000000000.0000'
-fmax36142 fma  1   1E+11   0.00000  ->  '100000000000.0000'  Rounded
-fmax36143 fma  1   0.000   1E+12    ->  '1000000000000.000'
-fmax36144 fma  1   0.0000  1E+12    ->  '1000000000000.000'  Rounded
-
--- [some of the next group are really constructor tests]
-fmax36146 fma  1   '00.0'  0       ->  '0.0'
-fmax36147 fma  1   '0.00'  0       ->  '0.00'
-fmax36148 fma  1    0      '0.00'  ->  '0.00'
-fmax36149 fma  1    0      '00.0'  ->  '0.0'
-fmax36150 fma  1   '00.0'  '0.00'  ->  '0.00'
-fmax36151 fma  1   '0.00'  '00.0'  ->  '0.00'
-fmax36152 fma  1   '3'     '.3'    ->  '3.3'
-fmax36153 fma  1   '3.'    '.3'    ->  '3.3'
-fmax36154 fma  1   '3.0'   '.3'    ->  '3.3'
-fmax36155 fma  1   '3.00'  '.3'    ->  '3.30'
-fmax36156 fma  1   '3'     '3'     ->  '6'
-fmax36157 fma  1   '3'     '+3'    ->  '6'
-fmax36158 fma  1   '3'     '-3'    ->  '0'
-fmax36159 fma  1   '0.3'   '-0.3'  ->  '0.0'
-fmax36160 fma  1   '0.03'  '-0.03' ->  '0.00'
-
--- try borderline precision, with carries, etc.
-fmax36161 fma  1   '1E+13' '-1'    -> '9999999999999'
-fmax36162 fma  1   '1E+13'  '1.11' -> '10000000000001.11'
-fmax36163 fma  1   '1.11'  '1E+13' -> '10000000000001.11'
-fmax36164 fma  1   '-1'    '1E+13' -> '9999999999999'
-fmax36165 fma  1   '7E+13' '-1'    -> '69999999999999'
-fmax36166 fma  1   '7E+13'  '1.11' -> '70000000000001.11'
-fmax36167 fma  1   '1.11'  '7E+13' -> '70000000000001.11'
-fmax36168 fma  1   '-1'    '7E+13' -> '69999999999999'
-
---                    1234567890123456      1234567890123456      1 234567890123456
-fmax36170 fma  1   '0.4444444444444444'  '0.5555555555555563' -> '1.000000000000001' Inexact Rounded
-fmax36171 fma  1   '0.4444444444444444'  '0.5555555555555562' -> '1.000000000000001' Inexact Rounded
-fmax36172 fma  1   '0.4444444444444444'  '0.5555555555555561' -> '1.000000000000000' Inexact Rounded
-fmax36173 fma  1   '0.4444444444444444'  '0.5555555555555560' -> '1.000000000000000' Inexact Rounded
-fmax36174 fma  1   '0.4444444444444444'  '0.5555555555555559' -> '1.000000000000000' Inexact Rounded
-fmax36175 fma  1   '0.4444444444444444'  '0.5555555555555558' -> '1.000000000000000' Inexact Rounded
-fmax36176 fma  1   '0.4444444444444444'  '0.5555555555555557' -> '1.000000000000000' Inexact Rounded
-fmax36177 fma  1   '0.4444444444444444'  '0.5555555555555556' -> '1.000000000000000' Rounded
-fmax36178 fma  1   '0.4444444444444444'  '0.5555555555555555' -> '0.9999999999999999'
-fmax36179 fma  1   '0.4444444444444444'  '0.5555555555555554' -> '0.9999999999999998'
-fmax36180 fma  1   '0.4444444444444444'  '0.5555555555555553' -> '0.9999999999999997'
-fmax36181 fma  1   '0.4444444444444444'  '0.5555555555555552' -> '0.9999999999999996'
-fmax36182 fma  1   '0.4444444444444444'  '0.5555555555555551' -> '0.9999999999999995'
-fmax36183 fma  1   '0.4444444444444444'  '0.5555555555555550' -> '0.9999999999999994'
-
--- and some more, including residue effects and different roundings
-rounding: half_up
-fmax36200 fma  1   '6543210123456789' 0             -> '6543210123456789'
-fmax36201 fma  1   '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
-fmax36202 fma  1   '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
-fmax36203 fma  1   '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
-fmax36204 fma  1   '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
-fmax36205 fma  1   '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
-fmax36206 fma  1   '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
-fmax36207 fma  1   '6543210123456789' 0.499999   -> '6543210123456789' Inexact Rounded
-fmax36208 fma  1   '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded
-fmax36209 fma  1   '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded
-fmax36210 fma  1   '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded
-fmax36211 fma  1   '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded
-fmax36212 fma  1   '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded
-fmax36213 fma  1   '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded
-fmax36214 fma  1   '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded
-fmax36215 fma  1   '6543210123456789' 0.999999   -> '6543210123456790' Inexact Rounded
-fmax36216 fma  1   '6543210123456789' 1             -> '6543210123456790'
-fmax36217 fma  1   '6543210123456789' 1.000000001   -> '6543210123456790' Inexact Rounded
-fmax36218 fma  1   '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
-fmax36219 fma  1   '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
-
-rounding: half_even
-fmax36220 fma  1   '6543210123456789' 0             -> '6543210123456789'
-fmax36221 fma  1   '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
-fmax36222 fma  1   '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
-fmax36223 fma  1   '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
-fmax36224 fma  1   '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
-fmax36225 fma  1   '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
-fmax36226 fma  1   '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
-fmax36227 fma  1   '6543210123456789' 0.499999   -> '6543210123456789' Inexact Rounded
-fmax36228 fma  1   '6543210123456789' 0.5           -> '6543210123456790' Inexact Rounded
-fmax36229 fma  1   '6543210123456789' 0.500000001   -> '6543210123456790' Inexact Rounded
-fmax36230 fma  1   '6543210123456789' 0.500001      -> '6543210123456790' Inexact Rounded
-fmax36231 fma  1   '6543210123456789' 0.51          -> '6543210123456790' Inexact Rounded
-fmax36232 fma  1   '6543210123456789' 0.6           -> '6543210123456790' Inexact Rounded
-fmax36233 fma  1   '6543210123456789' 0.9           -> '6543210123456790' Inexact Rounded
-fmax36234 fma  1   '6543210123456789' 0.99999       -> '6543210123456790' Inexact Rounded
-fmax36235 fma  1   '6543210123456789' 0.999999   -> '6543210123456790' Inexact Rounded
-fmax36236 fma  1   '6543210123456789' 1             -> '6543210123456790'
-fmax36237 fma  1   '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded
-fmax36238 fma  1   '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
-fmax36239 fma  1   '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
--- critical few with even bottom digit...
-fmax36240 fma  1   '6543210123456788' 0.499999   -> '6543210123456788' Inexact Rounded
-fmax36241 fma  1   '6543210123456788' 0.5           -> '6543210123456788' Inexact Rounded
-fmax36242 fma  1   '6543210123456788' 0.500000001   -> '6543210123456789' Inexact Rounded
-
-rounding: down
-fmax36250 fma  1   '6543210123456789' 0             -> '6543210123456789'
-fmax36251 fma  1   '6543210123456789' 0.000000001   -> '6543210123456789' Inexact Rounded
-fmax36252 fma  1   '6543210123456789' 0.000001      -> '6543210123456789' Inexact Rounded
-fmax36253 fma  1   '6543210123456789' 0.1           -> '6543210123456789' Inexact Rounded
-fmax36254 fma  1   '6543210123456789' 0.4           -> '6543210123456789' Inexact Rounded
-fmax36255 fma  1   '6543210123456789' 0.49          -> '6543210123456789' Inexact Rounded
-fmax36256 fma  1   '6543210123456789' 0.499999      -> '6543210123456789' Inexact Rounded
-fmax36257 fma  1   '6543210123456789' 0.499999   -> '6543210123456789' Inexact Rounded
-fmax36258 fma  1   '6543210123456789' 0.5           -> '6543210123456789' Inexact Rounded
-fmax36259 fma  1   '6543210123456789' 0.500000001   -> '6543210123456789' Inexact Rounded
-fmax36260 fma  1   '6543210123456789' 0.500001      -> '6543210123456789' Inexact Rounded
-fmax36261 fma  1   '6543210123456789' 0.51          -> '6543210123456789' Inexact Rounded
-fmax36262 fma  1   '6543210123456789' 0.6           -> '6543210123456789' Inexact Rounded
-fmax36263 fma  1   '6543210123456789' 0.9           -> '6543210123456789' Inexact Rounded
-fmax36264 fma  1   '6543210123456789' 0.99999       -> '6543210123456789' Inexact Rounded
-fmax36265 fma  1   '6543210123456789' 0.999999   -> '6543210123456789' Inexact Rounded
-fmax36266 fma  1   '6543210123456789' 1             -> '6543210123456790'
-fmax36267 fma  1   '6543210123456789' 1.00000001    -> '6543210123456790' Inexact Rounded
-fmax36268 fma  1   '6543210123456789' 1.00001       -> '6543210123456790' Inexact Rounded
-fmax36269 fma  1   '6543210123456789' 1.1           -> '6543210123456790' Inexact Rounded
-
--- 1 in last place tests
-rounding: half_even
-fmax36301 fma  1    -1   1      ->   0
-fmax36302 fma  1     0   1      ->   1
-fmax36303 fma  1     1   1      ->   2
-fmax36304 fma  1    12   1      ->  13
-fmax36305 fma  1    98   1      ->  99
-fmax36306 fma  1    99   1      -> 100
-fmax36307 fma  1   100   1      -> 101
-fmax36308 fma  1   101   1      -> 102
-fmax36309 fma  1    -1  -1      ->  -2
-fmax36310 fma  1     0  -1      ->  -1
-fmax36311 fma  1     1  -1      ->   0
-fmax36312 fma  1    12  -1      ->  11
-fmax36313 fma  1    98  -1      ->  97
-fmax36314 fma  1    99  -1      ->  98
-fmax36315 fma  1   100  -1      ->  99
-fmax36316 fma  1   101  -1      -> 100
-
-fmax36321 fma  1   -0.01  0.01    ->  0.00
-fmax36322 fma  1    0.00  0.01    ->  0.01
-fmax36323 fma  1    0.01  0.01    ->  0.02
-fmax36324 fma  1    0.12  0.01    ->  0.13
-fmax36325 fma  1    0.98  0.01    ->  0.99
-fmax36326 fma  1    0.99  0.01    ->  1.00
-fmax36327 fma  1    1.00  0.01    ->  1.01
-fmax36328 fma  1    1.01  0.01    ->  1.02
-fmax36329 fma  1   -0.01 -0.01    -> -0.02
-fmax36330 fma  1    0.00 -0.01    -> -0.01
-fmax36331 fma  1    0.01 -0.01    ->  0.00
-fmax36332 fma  1    0.12 -0.01    ->  0.11
-fmax36333 fma  1    0.98 -0.01    ->  0.97
-fmax36334 fma  1    0.99 -0.01    ->  0.98
-fmax36335 fma  1    1.00 -0.01    ->  0.99
-fmax36336 fma  1    1.01 -0.01    ->  1.00
-
--- some more cases where fma  1  ing 0 affects the coefficient
-fmax36340 fma  1   1E+3    0    ->         1000
-fmax36341 fma  1   1E+15   0    ->    1000000000000000
-fmax36342 fma  1   1E+16   0    ->   1.000000000000000E+16  Rounded
-fmax36343 fma  1   1E+17   0    ->   1.000000000000000E+17  Rounded
--- which simply follow from these cases ...
-fmax36344 fma  1   1E+3    1    ->         1001
-fmax36345 fma  1   1E+15   1    ->    1000000000000001
-fmax36346 fma  1   1E+16   1    ->   1.000000000000000E+16  Inexact Rounded
-fmax36347 fma  1   1E+17   1    ->   1.000000000000000E+17  Inexact Rounded
-fmax36348 fma  1   1E+3    7    ->         1007
-fmax36349 fma  1   1E+15   7    ->    1000000000000007
-fmax36350 fma  1   1E+16   7    ->   1.000000000000001E+16  Inexact Rounded
-fmax36351 fma  1   1E+17   7    ->   1.000000000000000E+17  Inexact Rounded
-
--- tryzeros cases
-fmax36361  fma  1   0E+50 10000E+1  -> 1.0000E+5
-fmax36362  fma  1   10000E+1 0E-50  -> 100000.0000000000  Rounded
-fmax36363  fma  1   10000E+1 10000E-50  -> 100000.0000000000  Rounded Inexact
-fmax36364  fma  1   12.34    0e-398  -> 12.34000000000000  Rounded
-
--- ulp replacement tests
-fmax36400 fma  1     1   77e-14      ->  1.00000000000077
-fmax36401 fma  1     1   77e-15      ->  1.000000000000077
-fmax36402 fma  1     1   77e-16      ->  1.000000000000008 Inexact Rounded
-fmax36403 fma  1     1   77e-17      ->  1.000000000000001 Inexact Rounded
-fmax36404 fma  1     1   77e-18      ->  1.000000000000000 Inexact Rounded
-fmax36405 fma  1     1   77e-19      ->  1.000000000000000 Inexact Rounded
-fmax36406 fma  1     1   77e-99      ->  1.000000000000000 Inexact Rounded
-
-fmax36410 fma  1    10   77e-14      ->  10.00000000000077
-fmax36411 fma  1    10   77e-15      ->  10.00000000000008 Inexact Rounded
-fmax36412 fma  1    10   77e-16      ->  10.00000000000001 Inexact Rounded
-fmax36413 fma  1    10   77e-17      ->  10.00000000000000 Inexact Rounded
-fmax36414 fma  1    10   77e-18      ->  10.00000000000000 Inexact Rounded
-fmax36415 fma  1    10   77e-19      ->  10.00000000000000 Inexact Rounded
-fmax36416 fma  1    10   77e-99      ->  10.00000000000000 Inexact Rounded
-
-fmax36420 fma  1    77e-14       1   ->  1.00000000000077
-fmax36421 fma  1    77e-15       1   ->  1.000000000000077
-fmax36422 fma  1    77e-16       1   ->  1.000000000000008 Inexact Rounded
-fmax36423 fma  1    77e-17       1   ->  1.000000000000001 Inexact Rounded
-fmax36424 fma  1    77e-18       1   ->  1.000000000000000 Inexact Rounded
-fmax36425 fma  1    77e-19       1   ->  1.000000000000000 Inexact Rounded
-fmax36426 fma  1    77e-99       1   ->  1.000000000000000 Inexact Rounded
-
-fmax36430 fma  1    77e-14      10   ->  10.00000000000077
-fmax36431 fma  1    77e-15      10   ->  10.00000000000008 Inexact Rounded
-fmax36432 fma  1    77e-16      10   ->  10.00000000000001 Inexact Rounded
-fmax36433 fma  1    77e-17      10   ->  10.00000000000000 Inexact Rounded
-fmax36434 fma  1    77e-18      10   ->  10.00000000000000 Inexact Rounded
-fmax36435 fma  1    77e-19      10   ->  10.00000000000000 Inexact Rounded
-fmax36436 fma  1    77e-99      10   ->  10.00000000000000 Inexact Rounded
-
--- negative ulps
-fmax36440 fma  1     1   -77e-14      ->  0.99999999999923
-fmax36441 fma  1     1   -77e-15      ->  0.999999999999923
-fmax36442 fma  1     1   -77e-16      ->  0.9999999999999923
-fmax36443 fma  1     1   -77e-17      ->  0.9999999999999992 Inexact Rounded
-fmax36444 fma  1     1   -77e-18      ->  0.9999999999999999 Inexact Rounded
-fmax36445 fma  1     1   -77e-19      ->  1.000000000000000 Inexact Rounded
-fmax36446 fma  1     1   -77e-99      ->  1.000000000000000 Inexact Rounded
-
-fmax36450 fma  1    10   -77e-14      ->   9.99999999999923
-fmax36451 fma  1    10   -77e-15      ->   9.999999999999923
-fmax36452 fma  1    10   -77e-16      ->   9.999999999999992 Inexact Rounded
-fmax36453 fma  1    10   -77e-17      ->   9.999999999999999 Inexact Rounded
-fmax36454 fma  1    10   -77e-18      ->  10.00000000000000 Inexact Rounded
-fmax36455 fma  1    10   -77e-19      ->  10.00000000000000 Inexact Rounded
-fmax36456 fma  1    10   -77e-99      ->  10.00000000000000 Inexact Rounded
-
-fmax36460 fma  1    -77e-14       1   ->  0.99999999999923
-fmax36461 fma  1    -77e-15       1   ->  0.999999999999923
-fmax36462 fma  1    -77e-16       1   ->  0.9999999999999923
-fmax36463 fma  1    -77e-17       1   ->  0.9999999999999992 Inexact Rounded
-fmax36464 fma  1    -77e-18       1   ->  0.9999999999999999 Inexact Rounded
-fmax36465 fma  1    -77e-19       1   ->  1.000000000000000 Inexact Rounded
-fmax36466 fma  1    -77e-99       1   ->  1.000000000000000 Inexact Rounded
-
-fmax36470 fma  1    -77e-14      10   ->   9.99999999999923
-fmax36471 fma  1    -77e-15      10   ->   9.999999999999923
-fmax36472 fma  1    -77e-16      10   ->   9.999999999999992 Inexact Rounded
-fmax36473 fma  1    -77e-17      10   ->   9.999999999999999 Inexact Rounded
-fmax36474 fma  1    -77e-18      10   ->  10.00000000000000 Inexact Rounded
-fmax36475 fma  1    -77e-19      10   ->  10.00000000000000 Inexact Rounded
-fmax36476 fma  1    -77e-99      10   ->  10.00000000000000 Inexact Rounded
-
--- negative ulps
-fmax36480 fma  1    -1    77e-14      ->  -0.99999999999923
-fmax36481 fma  1    -1    77e-15      ->  -0.999999999999923
-fmax36482 fma  1    -1    77e-16      ->  -0.9999999999999923
-fmax36483 fma  1    -1    77e-17      ->  -0.9999999999999992 Inexact Rounded
-fmax36484 fma  1    -1    77e-18      ->  -0.9999999999999999 Inexact Rounded
-fmax36485 fma  1    -1    77e-19      ->  -1.000000000000000 Inexact Rounded
-fmax36486 fma  1    -1    77e-99      ->  -1.000000000000000 Inexact Rounded
-
-fmax36490 fma  1   -10    77e-14      ->   -9.99999999999923
-fmax36491 fma  1   -10    77e-15      ->   -9.999999999999923
-fmax36492 fma  1   -10    77e-16      ->   -9.999999999999992 Inexact Rounded
-fmax36493 fma  1   -10    77e-17      ->   -9.999999999999999 Inexact Rounded
-fmax36494 fma  1   -10    77e-18      ->  -10.00000000000000 Inexact Rounded
-fmax36495 fma  1   -10    77e-19      ->  -10.00000000000000 Inexact Rounded
-fmax36496 fma  1   -10    77e-99      ->  -10.00000000000000 Inexact Rounded
-
-fmax36500 fma  1     77e-14      -1   ->  -0.99999999999923
-fmax36501 fma  1     77e-15      -1   ->  -0.999999999999923
-fmax36502 fma  1     77e-16      -1   ->  -0.9999999999999923
-fmax36503 fma  1     77e-17      -1   ->  -0.9999999999999992 Inexact Rounded
-fmax36504 fma  1     77e-18      -1   ->  -0.9999999999999999 Inexact Rounded
-fmax36505 fma  1     77e-19      -1   ->  -1.000000000000000 Inexact Rounded
-fmax36506 fma  1     77e-99      -1   ->  -1.000000000000000 Inexact Rounded
-
-fmax36510 fma  1     77e-14      -10  ->   -9.99999999999923
-fmax36511 fma  1     77e-15      -10  ->   -9.999999999999923
-fmax36512 fma  1     77e-16      -10  ->   -9.999999999999992 Inexact Rounded
-fmax36513 fma  1     77e-17      -10  ->   -9.999999999999999 Inexact Rounded
-fmax36514 fma  1     77e-18      -10  ->  -10.00000000000000 Inexact Rounded
-fmax36515 fma  1     77e-19      -10  ->  -10.00000000000000 Inexact Rounded
-fmax36516 fma  1     77e-99      -10  ->  -10.00000000000000 Inexact Rounded
-
-
--- long operands
-fmax36521 fma  1   101234562345678000 0 -> 1.012345623456780E+17 Rounded
-fmax36522 fma  1   0 101234562345678000 -> 1.012345623456780E+17 Rounded
-fmax36523 fma  1   10123456234567800  0 -> 1.012345623456780E+16 Rounded
-fmax36524 fma  1   0 10123456234567800  -> 1.012345623456780E+16 Rounded
-fmax36525 fma  1   10123456234567890  0 -> 1.012345623456789E+16 Rounded
-fmax36526 fma  1   0 10123456234567890  -> 1.012345623456789E+16 Rounded
-fmax36527 fma  1   10123456234567891  0 -> 1.012345623456789E+16 Inexact Rounded
-fmax36528 fma  1   0 10123456234567891  -> 1.012345623456789E+16 Inexact Rounded
-fmax36529 fma  1   101234562345678901 0 -> 1.012345623456789E+17 Inexact Rounded
-fmax36530 fma  1   0 101234562345678901 -> 1.012345623456789E+17 Inexact Rounded
-fmax36531 fma  1   10123456234567896  0 -> 1.012345623456790E+16 Inexact Rounded
-fmax36532 fma  1   0 10123456234567896  -> 1.012345623456790E+16 Inexact Rounded
-
--- verify a query
-rounding:     down
-fmax36561 fma  1   1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded
-fmax36562 fma  1        0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded
--- and using decimal64 bounds...
-rounding:     down
-fmax36563 fma  1   1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded
-fmax36564 fma  1        0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded
-
--- more zeros, etc.
-rounding: half_even
-
-fmax36701 fma  1   5.00 1.00E-3 -> 5.00100
-fmax36702 fma  1   00.00 0.000  -> 0.000
-fmax36703 fma  1   00.00 0E-3   -> 0.000
-fmax36704 fma  1   0E-3  00.00  -> 0.000
-
-fmax36710 fma  1   0E+3  00.00  -> 0.00
-fmax36711 fma  1   0E+3  00.0   -> 0.0
-fmax36712 fma  1   0E+3  00.    -> 0
-fmax36713 fma  1   0E+3  00.E+1 -> 0E+1
-fmax36714 fma  1   0E+3  00.E+2 -> 0E+2
-fmax36715 fma  1   0E+3  00.E+3 -> 0E+3
-fmax36716 fma  1   0E+3  00.E+4 -> 0E+3
-fmax36717 fma  1   0E+3  00.E+5 -> 0E+3
-fmax36718 fma  1   0E+3  -00.0   -> 0.0
-fmax36719 fma  1   0E+3  -00.    -> 0
-fmax36731 fma  1   0E+3  -00.E+1 -> 0E+1
-
-fmax36720 fma  1   00.00  0E+3  -> 0.00
-fmax36721 fma  1   00.0   0E+3  -> 0.0
-fmax36722 fma  1   00.    0E+3  -> 0
-fmax36723 fma  1   00.E+1 0E+3  -> 0E+1
-fmax36724 fma  1   00.E+2 0E+3  -> 0E+2
-fmax36725 fma  1   00.E+3 0E+3  -> 0E+3
-fmax36726 fma  1   00.E+4 0E+3  -> 0E+3
-fmax36727 fma  1   00.E+5 0E+3  -> 0E+3
-fmax36728 fma  1   -00.00 0E+3  -> 0.00
-fmax36729 fma  1   -00.0  0E+3  -> 0.0
-fmax36730 fma  1   -00.   0E+3  -> 0
-
-fmax36732 fma  1    0     0     ->  0
-fmax36733 fma  1    0    -0     ->  0
-fmax36734 fma  1   -0     0     ->  0
-fmax36735 fma  1   -0    -0     -> -0     -- IEEE 854 special case
-
-fmax36736 fma  1    1    -1     ->  0
-fmax36737 fma  1   -1    -1     -> -2
-fmax36738 fma  1    1     1     ->  2
-fmax36739 fma  1   -1     1     ->  0
-
-fmax36741 fma  1    0    -1     -> -1
-fmax36742 fma  1   -0    -1     -> -1
-fmax36743 fma  1    0     1     ->  1
-fmax36744 fma  1   -0     1     ->  1
-fmax36745 fma  1   -1     0     -> -1
-fmax36746 fma  1   -1    -0     -> -1
-fmax36747 fma  1    1     0     ->  1
-fmax36748 fma  1    1    -0     ->  1
-
-fmax36751 fma  1    0.0  -1     -> -1.0
-fmax36752 fma  1   -0.0  -1     -> -1.0
-fmax36753 fma  1    0.0   1     ->  1.0
-fmax36754 fma  1   -0.0   1     ->  1.0
-fmax36755 fma  1   -1.0   0     -> -1.0
-fmax36756 fma  1   -1.0  -0     -> -1.0
-fmax36757 fma  1    1.0   0     ->  1.0
-fmax36758 fma  1    1.0  -0     ->  1.0
-
-fmax36761 fma  1    0    -1.0   -> -1.0
-fmax36762 fma  1   -0    -1.0   -> -1.0
-fmax36763 fma  1    0     1.0   ->  1.0
-fmax36764 fma  1   -0     1.0   ->  1.0
-fmax36765 fma  1   -1     0.0   -> -1.0
-fmax36766 fma  1   -1    -0.0   -> -1.0
-fmax36767 fma  1    1     0.0   ->  1.0
-fmax36768 fma  1    1    -0.0   ->  1.0
-
-fmax36771 fma  1    0.0  -1.0   -> -1.0
-fmax36772 fma  1   -0.0  -1.0   -> -1.0
-fmax36773 fma  1    0.0   1.0   ->  1.0
-fmax36774 fma  1   -0.0   1.0   ->  1.0
-fmax36775 fma  1   -1.0   0.0   -> -1.0
-fmax36776 fma  1   -1.0  -0.0   -> -1.0
-fmax36777 fma  1    1.0   0.0   ->  1.0
-fmax36778 fma  1    1.0  -0.0   ->  1.0
-
--- Specials
-fmax36780 fma  1   -Inf  -Inf   -> -Infinity
-fmax36781 fma  1   -Inf  -1000  -> -Infinity
-fmax36782 fma  1   -Inf  -1     -> -Infinity
-fmax36783 fma  1   -Inf  -0     -> -Infinity
-fmax36784 fma  1   -Inf   0     -> -Infinity
-fmax36785 fma  1   -Inf   1     -> -Infinity
-fmax36786 fma  1   -Inf   1000  -> -Infinity
-fmax36787 fma  1   -1000 -Inf   -> -Infinity
-fmax36788 fma  1   -Inf  -Inf   -> -Infinity
-fmax36789 fma  1   -1    -Inf   -> -Infinity
-fmax36790 fma  1   -0    -Inf   -> -Infinity
-fmax36791 fma  1    0    -Inf   -> -Infinity
-fmax36792 fma  1    1    -Inf   -> -Infinity
-fmax36793 fma  1    1000 -Inf   -> -Infinity
-fmax36794 fma  1    Inf  -Inf   ->  NaN  Invalid_operation
-
-fmax36800 fma  1    Inf  -Inf   ->  NaN  Invalid_operation
-fmax36801 fma  1    Inf  -1000  ->  Infinity
-fmax36802 fma  1    Inf  -1     ->  Infinity
-fmax36803 fma  1    Inf  -0     ->  Infinity
-fmax36804 fma  1    Inf   0     ->  Infinity
-fmax36805 fma  1    Inf   1     ->  Infinity
-fmax36806 fma  1    Inf   1000  ->  Infinity
-fmax36807 fma  1    Inf   Inf   ->  Infinity
-fmax36808 fma  1   -1000  Inf   ->  Infinity
-fmax36809 fma  1   -Inf   Inf   ->  NaN  Invalid_operation
-fmax36810 fma  1   -1     Inf   ->  Infinity
-fmax36811 fma  1   -0     Inf   ->  Infinity
-fmax36812 fma  1    0     Inf   ->  Infinity
-fmax36813 fma  1    1     Inf   ->  Infinity
-fmax36814 fma  1    1000  Inf   ->  Infinity
-fmax36815 fma  1    Inf   Inf   ->  Infinity
-
-fmax36821 fma  1    NaN -Inf    ->  NaN
-fmax36822 fma  1    NaN -1000   ->  NaN
-fmax36823 fma  1    NaN -1      ->  NaN
-fmax36824 fma  1    NaN -0      ->  NaN
-fmax36825 fma  1    NaN  0      ->  NaN
-fmax36826 fma  1    NaN  1      ->  NaN
-fmax36827 fma  1    NaN  1000   ->  NaN
-fmax36828 fma  1    NaN  Inf    ->  NaN
-fmax36829 fma  1    NaN  NaN    ->  NaN
-fmax36830 fma  1   -Inf  NaN    ->  NaN
-fmax36831 fma  1   -1000 NaN    ->  NaN
-fmax36832 fma  1   -1    NaN    ->  NaN
-fmax36833 fma  1   -0    NaN    ->  NaN
-fmax36834 fma  1    0    NaN    ->  NaN
-fmax36835 fma  1    1    NaN    ->  NaN
-fmax36836 fma  1    1000 NaN    ->  NaN
-fmax36837 fma  1    Inf  NaN    ->  NaN
-
-fmax36841 fma  1    sNaN -Inf   ->  NaN  Invalid_operation
-fmax36842 fma  1    sNaN -1000  ->  NaN  Invalid_operation
-fmax36843 fma  1    sNaN -1     ->  NaN  Invalid_operation
-fmax36844 fma  1    sNaN -0     ->  NaN  Invalid_operation
-fmax36845 fma  1    sNaN  0     ->  NaN  Invalid_operation
-fmax36846 fma  1    sNaN  1     ->  NaN  Invalid_operation
-fmax36847 fma  1    sNaN  1000  ->  NaN  Invalid_operation
-fmax36848 fma  1    sNaN  NaN   ->  NaN  Invalid_operation
-fmax36849 fma  1    sNaN sNaN   ->  NaN  Invalid_operation
-fmax36850 fma  1    NaN  sNaN   ->  NaN  Invalid_operation
-fmax36851 fma  1   -Inf  sNaN   ->  NaN  Invalid_operation
-fmax36852 fma  1   -1000 sNaN   ->  NaN  Invalid_operation
-fmax36853 fma  1   -1    sNaN   ->  NaN  Invalid_operation
-fmax36854 fma  1   -0    sNaN   ->  NaN  Invalid_operation
-fmax36855 fma  1    0    sNaN   ->  NaN  Invalid_operation
-fmax36856 fma  1    1    sNaN   ->  NaN  Invalid_operation
-fmax36857 fma  1    1000 sNaN   ->  NaN  Invalid_operation
-fmax36858 fma  1    Inf  sNaN   ->  NaN  Invalid_operation
-fmax36859 fma  1    NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-fmax36861 fma  1    NaN1   -Inf    ->  NaN1
-fmax36862 fma  1   +NaN2   -1000   ->  NaN2
-fmax36863 fma  1    NaN3    1000   ->  NaN3
-fmax36864 fma  1    NaN4    Inf    ->  NaN4
-fmax36865 fma  1    NaN5   +NaN6   ->  NaN5
-fmax36866 fma  1   -Inf     NaN7   ->  NaN7
-fmax36867 fma  1   -1000    NaN8   ->  NaN8
-fmax36868 fma  1    1000    NaN9   ->  NaN9
-fmax36869 fma  1    Inf    +NaN10  ->  NaN10
-fmax36871 fma  1    sNaN11  -Inf   ->  NaN11  Invalid_operation
-fmax36872 fma  1    sNaN12  -1000  ->  NaN12  Invalid_operation
-fmax36873 fma  1    sNaN13   1000  ->  NaN13  Invalid_operation
-fmax36874 fma  1    sNaN14   NaN17 ->  NaN14  Invalid_operation
-fmax36875 fma  1    sNaN15  sNaN18 ->  NaN15  Invalid_operation
-fmax36876 fma  1    NaN16   sNaN19 ->  NaN19  Invalid_operation
-fmax36877 fma  1   -Inf    +sNaN20 ->  NaN20  Invalid_operation
-fmax36878 fma  1   -1000    sNaN21 ->  NaN21  Invalid_operation
-fmax36879 fma  1    1000    sNaN22 ->  NaN22  Invalid_operation
-fmax36880 fma  1    Inf     sNaN23 ->  NaN23  Invalid_operation
-fmax36881 fma  1   +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-fmax36882 fma  1   -NaN26    NaN28 -> -NaN26
-fmax36883 fma  1   -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-fmax36884 fma  1    1000    -NaN30 -> -NaN30
-fmax36885 fma  1    1000   -sNaN31 -> -NaN31  Invalid_operation
-
--- now the case where we can get underflow but the result is normal
--- [note this can't happen if the operands are also bounded, as we
--- cannot represent 1E-399, for example]
-
-fmax36571 fma  1         1E-383       0  -> 1E-383
-fmax36572 fma  1         1E-384       0  -> 1E-384   Subnormal
-fmax36573 fma  1         1E-383  1E-384  -> 1.1E-383
-fmax36574 subtract  1E-383  1E-384  ->   9E-384 Subnormal
-
--- Here we explore the boundary of rounding a subnormal to Nmin
-fmax36575 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
-fmax36576 subtract  1E-383  1E-398  ->   9.99999999999999E-384  Subnormal
-fmax36577 subtract  1E-383  1E-399  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-fmax36578 subtract  1E-383  1E-400  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-fmax36579 subtract  1E-383  1E-401  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-fmax36580 subtract  1E-383  1E-402  ->   1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-
--- check overflow edge case
---               1234567890123456
-fmax36972 apply        9.999999999999999E+384         -> 9.999999999999999E+384
-fmax36973 fma  1       9.999999999999999E+384  1      -> 9.999999999999999E+384 Inexact Rounded
-fmax36974 fma  1        9999999999999999E+369  1      -> 9.999999999999999E+384 Inexact Rounded
-fmax36975 fma  1        9999999999999999E+369  1E+369  -> Infinity Overflow Inexact Rounded
-fmax36976 fma  1        9999999999999999E+369  9E+368  -> Infinity Overflow Inexact Rounded
-fmax36977 fma  1        9999999999999999E+369  8E+368  -> Infinity Overflow Inexact Rounded
-fmax36978 fma  1        9999999999999999E+369  7E+368  -> Infinity Overflow Inexact Rounded
-fmax36979 fma  1        9999999999999999E+369  6E+368  -> Infinity Overflow Inexact Rounded
-fmax36980 fma  1        9999999999999999E+369  5E+368  -> Infinity Overflow Inexact Rounded
-fmax36981 fma  1        9999999999999999E+369  4E+368  -> 9.999999999999999E+384 Inexact Rounded
-fmax36982 fma  1        9999999999999999E+369  3E+368  -> 9.999999999999999E+384 Inexact Rounded
-fmax36983 fma  1        9999999999999999E+369  2E+368  -> 9.999999999999999E+384 Inexact Rounded
-fmax36984 fma  1        9999999999999999E+369  1E+368  -> 9.999999999999999E+384 Inexact Rounded
-
-fmax36985 apply       -9.999999999999999E+384         -> -9.999999999999999E+384
-fmax36986 fma  1      -9.999999999999999E+384 -1      -> -9.999999999999999E+384 Inexact Rounded
-fmax36987 fma  1       -9999999999999999E+369 -1      -> -9.999999999999999E+384 Inexact Rounded
-fmax36988 fma  1       -9999999999999999E+369 -1E+369  -> -Infinity Overflow Inexact Rounded
-fmax36989 fma  1       -9999999999999999E+369 -9E+368  -> -Infinity Overflow Inexact Rounded
-fmax36990 fma  1       -9999999999999999E+369 -8E+368  -> -Infinity Overflow Inexact Rounded
-fmax36991 fma  1       -9999999999999999E+369 -7E+368  -> -Infinity Overflow Inexact Rounded
-fmax36992 fma  1       -9999999999999999E+369 -6E+368  -> -Infinity Overflow Inexact Rounded
-fmax36993 fma  1       -9999999999999999E+369 -5E+368  -> -Infinity Overflow Inexact Rounded
-fmax36994 fma  1       -9999999999999999E+369 -4E+368  -> -9.999999999999999E+384 Inexact Rounded
-fmax36995 fma  1       -9999999999999999E+369 -3E+368  -> -9.999999999999999E+384 Inexact Rounded
-fmax36996 fma  1       -9999999999999999E+369 -2E+368  -> -9.999999999999999E+384 Inexact Rounded
-fmax36997 fma  1       -9999999999999999E+369 -1E+368  -> -9.999999999999999E+384 Inexact Rounded
-
--- And for round down full and subnormal results
-rounding:     down
-fmax361100 fma  1   1e+2 -1e-383    -> 99.99999999999999 Rounded Inexact
-fmax361101 fma  1   1e+1 -1e-383    -> 9.999999999999999  Rounded Inexact
-fmax361103 fma  1     +1 -1e-383    -> 0.9999999999999999  Rounded Inexact
-fmax361104 fma  1   1e-1 -1e-383    -> 0.09999999999999999  Rounded Inexact
-fmax361105 fma  1   1e-2 -1e-383    -> 0.009999999999999999  Rounded Inexact
-fmax361106 fma  1   1e-3 -1e-383    -> 0.0009999999999999999  Rounded Inexact
-fmax361107 fma  1   1e-4 -1e-383    -> 0.00009999999999999999  Rounded Inexact
-fmax361108 fma  1   1e-5 -1e-383    -> 0.000009999999999999999  Rounded Inexact
-fmax361109 fma  1   1e-6 -1e-383    -> 9.999999999999999E-7  Rounded Inexact
-
-rounding:     ceiling
-fmax361110 fma  1   -1e+2 +1e-383   -> -99.99999999999999 Rounded Inexact
-fmax361111 fma  1   -1e+1 +1e-383   -> -9.999999999999999  Rounded Inexact
-fmax361113 fma  1      -1 +1e-383   -> -0.9999999999999999  Rounded Inexact
-fmax361114 fma  1   -1e-1 +1e-383   -> -0.09999999999999999  Rounded Inexact
-fmax361115 fma  1   -1e-2 +1e-383   -> -0.009999999999999999  Rounded Inexact
-fmax361116 fma  1   -1e-3 +1e-383   -> -0.0009999999999999999  Rounded Inexact
-fmax361117 fma  1   -1e-4 +1e-383   -> -0.00009999999999999999  Rounded Inexact
-fmax361118 fma  1   -1e-5 +1e-383   -> -0.000009999999999999999  Rounded Inexact
-fmax361119 fma  1   -1e-6 +1e-383   -> -9.999999999999999E-7  Rounded Inexact
-
--- tests based on Gunnar Degnbol's edge case
-rounding:     half_even
-
-fmax361300 fma  1   1E16  -0.5                 ->  1.000000000000000E+16 Inexact Rounded
-fmax361310 fma  1   1E16  -0.51                ->  9999999999999999      Inexact Rounded
-fmax361311 fma  1   1E16  -0.501               ->  9999999999999999      Inexact Rounded
-fmax361312 fma  1   1E16  -0.5001              ->  9999999999999999      Inexact Rounded
-fmax361313 fma  1   1E16  -0.50001             ->  9999999999999999      Inexact Rounded
-fmax361314 fma  1   1E16  -0.500001            ->  9999999999999999      Inexact Rounded
-fmax361315 fma  1   1E16  -0.5000001           ->  9999999999999999      Inexact Rounded
-fmax361316 fma  1   1E16  -0.50000001          ->  9999999999999999      Inexact Rounded
-fmax361317 fma  1   1E16  -0.500000001         ->  9999999999999999      Inexact Rounded
-fmax361318 fma  1   1E16  -0.5000000001        ->  9999999999999999      Inexact Rounded
-fmax361319 fma  1   1E16  -0.50000000001       ->  9999999999999999      Inexact Rounded
-fmax361320 fma  1   1E16  -0.500000000001      ->  9999999999999999      Inexact Rounded
-fmax361321 fma  1   1E16  -0.5000000000001     ->  9999999999999999      Inexact Rounded
-fmax361322 fma  1   1E16  -0.50000000000001    ->  9999999999999999      Inexact Rounded
-fmax361323 fma  1   1E16  -0.500000000000001   ->  9999999999999999      Inexact Rounded
-fmax361324 fma  1   1E16  -0.5000000000000001  ->  9999999999999999      Inexact Rounded
-fmax361325 fma  1   1E16  -0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
-fmax361326 fma  1   1E16  -0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
-fmax361327 fma  1   1E16  -0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
-fmax361328 fma  1   1E16  -0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
-fmax361329 fma  1   1E16  -0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
-fmax361330 fma  1   1E16  -0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
-fmax361331 fma  1   1E16  -0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
-fmax361332 fma  1   1E16  -0.500000000         ->  1.000000000000000E+16 Inexact Rounded
-fmax361333 fma  1   1E16  -0.50000000          ->  1.000000000000000E+16 Inexact Rounded
-fmax361334 fma  1   1E16  -0.5000000           ->  1.000000000000000E+16 Inexact Rounded
-fmax361335 fma  1   1E16  -0.500000            ->  1.000000000000000E+16 Inexact Rounded
-fmax361336 fma  1   1E16  -0.50000             ->  1.000000000000000E+16 Inexact Rounded
-fmax361337 fma  1   1E16  -0.5000              ->  1.000000000000000E+16 Inexact Rounded
-fmax361338 fma  1   1E16  -0.500               ->  1.000000000000000E+16 Inexact Rounded
-fmax361339 fma  1   1E16  -0.50                ->  1.000000000000000E+16 Inexact Rounded
-
-fmax361340 fma  1   1E16  -5000000.000010001   ->  9999999995000000      Inexact Rounded
-fmax361341 fma  1   1E16  -5000000.000000001   ->  9999999995000000      Inexact Rounded
-
-fmax361349 fma  1   9999999999999999 0.4                 ->  9999999999999999      Inexact Rounded
-fmax361350 fma  1   9999999999999999 0.49                ->  9999999999999999      Inexact Rounded
-fmax361351 fma  1   9999999999999999 0.499               ->  9999999999999999      Inexact Rounded
-fmax361352 fma  1   9999999999999999 0.4999              ->  9999999999999999      Inexact Rounded
-fmax361353 fma  1   9999999999999999 0.49999             ->  9999999999999999      Inexact Rounded
-fmax361354 fma  1   9999999999999999 0.499999            ->  9999999999999999      Inexact Rounded
-fmax361355 fma  1   9999999999999999 0.4999999           ->  9999999999999999      Inexact Rounded
-fmax361356 fma  1   9999999999999999 0.49999999          ->  9999999999999999      Inexact Rounded
-fmax361357 fma  1   9999999999999999 0.499999999         ->  9999999999999999      Inexact Rounded
-fmax361358 fma  1   9999999999999999 0.4999999999        ->  9999999999999999      Inexact Rounded
-fmax361359 fma  1   9999999999999999 0.49999999999       ->  9999999999999999      Inexact Rounded
-fmax361360 fma  1   9999999999999999 0.499999999999      ->  9999999999999999      Inexact Rounded
-fmax361361 fma  1   9999999999999999 0.4999999999999     ->  9999999999999999      Inexact Rounded
-fmax361362 fma  1   9999999999999999 0.49999999999999    ->  9999999999999999      Inexact Rounded
-fmax361363 fma  1   9999999999999999 0.499999999999999   ->  9999999999999999      Inexact Rounded
-fmax361364 fma  1   9999999999999999 0.4999999999999999  ->  9999999999999999      Inexact Rounded
-fmax361365 fma  1   9999999999999999 0.5000000000000000  ->  1.000000000000000E+16 Inexact Rounded
-fmax361367 fma  1   9999999999999999 0.500000000000000   ->  1.000000000000000E+16 Inexact Rounded
-fmax361368 fma  1   9999999999999999 0.50000000000000    ->  1.000000000000000E+16 Inexact Rounded
-fmax361369 fma  1   9999999999999999 0.5000000000000     ->  1.000000000000000E+16 Inexact Rounded
-fmax361370 fma  1   9999999999999999 0.500000000000      ->  1.000000000000000E+16 Inexact Rounded
-fmax361371 fma  1   9999999999999999 0.50000000000       ->  1.000000000000000E+16 Inexact Rounded
-fmax361372 fma  1   9999999999999999 0.5000000000        ->  1.000000000000000E+16 Inexact Rounded
-fmax361373 fma  1   9999999999999999 0.500000000         ->  1.000000000000000E+16 Inexact Rounded
-fmax361374 fma  1   9999999999999999 0.50000000          ->  1.000000000000000E+16 Inexact Rounded
-fmax361375 fma  1   9999999999999999 0.5000000           ->  1.000000000000000E+16 Inexact Rounded
-fmax361376 fma  1   9999999999999999 0.500000            ->  1.000000000000000E+16 Inexact Rounded
-fmax361377 fma  1   9999999999999999 0.50000             ->  1.000000000000000E+16 Inexact Rounded
-fmax361378 fma  1   9999999999999999 0.5000              ->  1.000000000000000E+16 Inexact Rounded
-fmax361379 fma  1   9999999999999999 0.500               ->  1.000000000000000E+16 Inexact Rounded
-fmax361380 fma  1   9999999999999999 0.50                ->  1.000000000000000E+16 Inexact Rounded
-fmax361381 fma  1   9999999999999999 0.5                 ->  1.000000000000000E+16 Inexact Rounded
-fmax361382 fma  1   9999999999999999 0.5000000000000001  ->  1.000000000000000E+16 Inexact Rounded
-fmax361383 fma  1   9999999999999999 0.500000000000001   ->  1.000000000000000E+16 Inexact Rounded
-fmax361384 fma  1   9999999999999999 0.50000000000001    ->  1.000000000000000E+16 Inexact Rounded
-fmax361385 fma  1   9999999999999999 0.5000000000001     ->  1.000000000000000E+16 Inexact Rounded
-fmax361386 fma  1   9999999999999999 0.500000000001      ->  1.000000000000000E+16 Inexact Rounded
-fmax361387 fma  1   9999999999999999 0.50000000001       ->  1.000000000000000E+16 Inexact Rounded
-fmax361388 fma  1   9999999999999999 0.5000000001        ->  1.000000000000000E+16 Inexact Rounded
-fmax361389 fma  1   9999999999999999 0.500000001         ->  1.000000000000000E+16 Inexact Rounded
-fmax361390 fma  1   9999999999999999 0.50000001          ->  1.000000000000000E+16 Inexact Rounded
-fmax361391 fma  1   9999999999999999 0.5000001           ->  1.000000000000000E+16 Inexact Rounded
-fmax361392 fma  1   9999999999999999 0.500001            ->  1.000000000000000E+16 Inexact Rounded
-fmax361393 fma  1   9999999999999999 0.50001             ->  1.000000000000000E+16 Inexact Rounded
-fmax361394 fma  1   9999999999999999 0.5001              ->  1.000000000000000E+16 Inexact Rounded
-fmax361395 fma  1   9999999999999999 0.501               ->  1.000000000000000E+16 Inexact Rounded
-fmax361396 fma  1   9999999999999999 0.51                ->  1.000000000000000E+16 Inexact Rounded
-
--- More GD edge cases, where difference between the unadjusted
--- exponents is larger than the maximum precision and one side is 0
-fmax361420 fma  1    0 1.123456789012345     -> 1.123456789012345
-fmax361421 fma  1    0 1.123456789012345E-1  -> 0.1123456789012345
-fmax361422 fma  1    0 1.123456789012345E-2  -> 0.01123456789012345
-fmax361423 fma  1    0 1.123456789012345E-3  -> 0.001123456789012345
-fmax361424 fma  1    0 1.123456789012345E-4  -> 0.0001123456789012345
-fmax361425 fma  1    0 1.123456789012345E-5  -> 0.00001123456789012345
-fmax361426 fma  1    0 1.123456789012345E-6  -> 0.000001123456789012345
-fmax361427 fma  1    0 1.123456789012345E-7  -> 1.123456789012345E-7
-fmax361428 fma  1    0 1.123456789012345E-8  -> 1.123456789012345E-8
-fmax361429 fma  1    0 1.123456789012345E-9  -> 1.123456789012345E-9
-fmax361430 fma  1    0 1.123456789012345E-10 -> 1.123456789012345E-10
-fmax361431 fma  1    0 1.123456789012345E-11 -> 1.123456789012345E-11
-fmax361432 fma  1    0 1.123456789012345E-12 -> 1.123456789012345E-12
-fmax361433 fma  1    0 1.123456789012345E-13 -> 1.123456789012345E-13
-fmax361434 fma  1    0 1.123456789012345E-14 -> 1.123456789012345E-14
-fmax361435 fma  1    0 1.123456789012345E-15 -> 1.123456789012345E-15
-fmax361436 fma  1    0 1.123456789012345E-16 -> 1.123456789012345E-16
-fmax361437 fma  1    0 1.123456789012345E-17 -> 1.123456789012345E-17
-fmax361438 fma  1    0 1.123456789012345E-18 -> 1.123456789012345E-18
-fmax361439 fma  1    0 1.123456789012345E-19 -> 1.123456789012345E-19
-
--- same, reversed 0
-fmax361440 fma  1   1.123456789012345     0 -> 1.123456789012345
-fmax361441 fma  1   1.123456789012345E-1  0 -> 0.1123456789012345
-fmax361442 fma  1   1.123456789012345E-2  0 -> 0.01123456789012345
-fmax361443 fma  1   1.123456789012345E-3  0 -> 0.001123456789012345
-fmax361444 fma  1   1.123456789012345E-4  0 -> 0.0001123456789012345
-fmax361445 fma  1   1.123456789012345E-5  0 -> 0.00001123456789012345
-fmax361446 fma  1   1.123456789012345E-6  0 -> 0.000001123456789012345
-fmax361447 fma  1   1.123456789012345E-7  0 -> 1.123456789012345E-7
-fmax361448 fma  1   1.123456789012345E-8  0 -> 1.123456789012345E-8
-fmax361449 fma  1   1.123456789012345E-9  0 -> 1.123456789012345E-9
-fmax361450 fma  1   1.123456789012345E-10 0 -> 1.123456789012345E-10
-fmax361451 fma  1   1.123456789012345E-11 0 -> 1.123456789012345E-11
-fmax361452 fma  1   1.123456789012345E-12 0 -> 1.123456789012345E-12
-fmax361453 fma  1   1.123456789012345E-13 0 -> 1.123456789012345E-13
-fmax361454 fma  1   1.123456789012345E-14 0 -> 1.123456789012345E-14
-fmax361455 fma  1   1.123456789012345E-15 0 -> 1.123456789012345E-15
-fmax361456 fma  1   1.123456789012345E-16 0 -> 1.123456789012345E-16
-fmax361457 fma  1   1.123456789012345E-17 0 -> 1.123456789012345E-17
-fmax361458 fma  1   1.123456789012345E-18 0 -> 1.123456789012345E-18
-fmax361459 fma  1   1.123456789012345E-19 0 -> 1.123456789012345E-19
-
--- same, Es on the 0
-fmax361460 fma  1   1.123456789012345  0E-0   -> 1.123456789012345
-fmax361461 fma  1   1.123456789012345  0E-1   -> 1.123456789012345
-fmax361462 fma  1   1.123456789012345  0E-2   -> 1.123456789012345
-fmax361463 fma  1   1.123456789012345  0E-3   -> 1.123456789012345
-fmax361464 fma  1   1.123456789012345  0E-4   -> 1.123456789012345
-fmax361465 fma  1   1.123456789012345  0E-5   -> 1.123456789012345
-fmax361466 fma  1   1.123456789012345  0E-6   -> 1.123456789012345
-fmax361467 fma  1   1.123456789012345  0E-7   -> 1.123456789012345
-fmax361468 fma  1   1.123456789012345  0E-8   -> 1.123456789012345
-fmax361469 fma  1   1.123456789012345  0E-9   -> 1.123456789012345
-fmax361470 fma  1   1.123456789012345  0E-10  -> 1.123456789012345
-fmax361471 fma  1   1.123456789012345  0E-11  -> 1.123456789012345
-fmax361472 fma  1   1.123456789012345  0E-12  -> 1.123456789012345
-fmax361473 fma  1   1.123456789012345  0E-13  -> 1.123456789012345
-fmax361474 fma  1   1.123456789012345  0E-14  -> 1.123456789012345
-fmax361475 fma  1   1.123456789012345  0E-15  -> 1.123456789012345
--- next four flag Rounded because the 0 extends the result
-fmax361476 fma  1   1.123456789012345  0E-16  -> 1.123456789012345 Rounded
-fmax361477 fma  1   1.123456789012345  0E-17  -> 1.123456789012345 Rounded
-fmax361478 fma  1   1.123456789012345  0E-18  -> 1.123456789012345 Rounded
-fmax361479 fma  1   1.123456789012345  0E-19  -> 1.123456789012345 Rounded
-
--- sum of two opposite-sign operands is exactly 0 and floor => -0
-rounding:    half_up
--- exact zeros from zeros
-fmax361500 fma  1    0        0E-19  ->  0E-19
-fmax361501 fma  1   -0        0E-19  ->  0E-19
-fmax361502 fma  1    0       -0E-19  ->  0E-19
-fmax361503 fma  1   -0       -0E-19  -> -0E-19
-fmax361504 fma  1    0E-400   0E-19  ->  0E-398 Clamped
-fmax361505 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
-fmax361506 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
-fmax361507 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-fmax361511 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361512 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361513 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361514 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-fmax361515 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361516 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
-fmax361517 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
-fmax361518 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    half_down
--- exact zeros from zeros
-fmax361520 fma  1    0        0E-19  ->  0E-19
-fmax361521 fma  1   -0        0E-19  ->  0E-19
-fmax361522 fma  1    0       -0E-19  ->  0E-19
-fmax361523 fma  1   -0       -0E-19  -> -0E-19
-fmax361524 fma  1    0E-400   0E-19  ->  0E-398 Clamped
-fmax361525 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
-fmax361526 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
-fmax361527 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-fmax361531 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361532 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361533 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361534 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-fmax361535 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361536 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
-fmax361537 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
-fmax361538 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    half_even
--- exact zeros from zeros
-fmax361540 fma  1    0        0E-19  ->  0E-19
-fmax361541 fma  1   -0        0E-19  ->  0E-19
-fmax361542 fma  1    0       -0E-19  ->  0E-19
-fmax361543 fma  1   -0       -0E-19  -> -0E-19
-fmax361544 fma  1    0E-400   0E-19  ->  0E-398 Clamped
-fmax361545 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
-fmax361546 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
-fmax361547 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-fmax361551 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361552 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361553 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361554 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-fmax361555 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361556 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
-fmax361557 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
-fmax361558 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    up
--- exact zeros from zeros
-fmax361560 fma  1    0        0E-19  ->  0E-19
-fmax361561 fma  1   -0        0E-19  ->  0E-19
-fmax361562 fma  1    0       -0E-19  ->  0E-19
-fmax361563 fma  1   -0       -0E-19  -> -0E-19
-fmax361564 fma  1    0E-400   0E-19  ->  0E-398 Clamped
-fmax361565 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
-fmax361566 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
-fmax361567 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-fmax361571 fma  1    1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-fmax361572 fma  1   -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-fmax361573 fma  1    1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
-fmax361574 fma  1   -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
--- some exact zeros from non-zeros
-fmax361575 fma  1    1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
-fmax361576 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
-fmax361577 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
-fmax361578 fma  1   -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
-
-rounding:    down
--- exact zeros from zeros
-fmax361580 fma  1    0        0E-19  ->  0E-19
-fmax361581 fma  1   -0        0E-19  ->  0E-19
-fmax361582 fma  1    0       -0E-19  ->  0E-19
-fmax361583 fma  1   -0       -0E-19  -> -0E-19
-fmax361584 fma  1    0E-400   0E-19  ->  0E-398 Clamped
-fmax361585 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
-fmax361586 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
-fmax361587 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-fmax361591 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361592 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361593 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361594 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-fmax361595 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361596 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
-fmax361597 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
-fmax361598 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
-rounding:    ceiling
--- exact zeros from zeros
-fmax361600 fma  1    0        0E-19  ->  0E-19
-fmax361601 fma  1   -0        0E-19  ->  0E-19
-fmax361602 fma  1    0       -0E-19  ->  0E-19
-fmax361603 fma  1   -0       -0E-19  -> -0E-19
-fmax361604 fma  1    0E-400   0E-19  ->  0E-398 Clamped
-fmax361605 fma  1   -0E-400   0E-19  ->  0E-398 Clamped
-fmax361606 fma  1    0E-400  -0E-19  ->  0E-398 Clamped
-fmax361607 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-fmax361611 fma  1    1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-fmax361612 fma  1   -1E-401   1E-400 ->  1E-398 Subnormal Inexact Rounded Underflow
-fmax361613 fma  1    1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361614 fma  1   -1E-401  -1E-400 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
--- some exact zeros from non-zeros
-fmax361615 fma  1    1E-401   1E-401 ->  1E-398 Subnormal Inexact Rounded Underflow
-fmax361616 fma  1   -1E-401   1E-401 ->  0E-398 Clamped
-fmax361617 fma  1    1E-401  -1E-401 ->  0E-398 Clamped
-fmax361618 fma  1   -1E-401  -1E-401 -> -0E-398 Subnormal Inexact Rounded Underflow Clamped
-
--- and the extra-special ugly case; unusual minuses marked by -- *
-rounding:    floor
--- exact zeros from zeros
-fmax361620 fma  1    0        0E-19  ->  0E-19
-fmax361621 fma  1   -0        0E-19  -> -0E-19           -- *
-fmax361622 fma  1    0       -0E-19  -> -0E-19           -- *
-fmax361623 fma  1   -0       -0E-19  -> -0E-19
-fmax361624 fma  1    0E-400   0E-19  ->  0E-398 Clamped
-fmax361625 fma  1   -0E-400   0E-19  -> -0E-398 Clamped  -- *
-fmax361626 fma  1    0E-400  -0E-19  -> -0E-398 Clamped  -- *
-fmax361627 fma  1   -0E-400  -0E-19  -> -0E-398 Clamped
--- inexact zeros
-fmax361631 fma  1    1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361632 fma  1   -1E-401   1E-400 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361633 fma  1    1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
-fmax361634 fma  1   -1E-401  -1E-400 -> -1E-398 Subnormal Inexact Rounded Underflow
--- some exact zeros from non-zeros
-fmax361635 fma  1    1E-401   1E-401 ->  0E-398 Subnormal Inexact Rounded Underflow Clamped
-fmax361636 fma  1   -1E-401   1E-401 -> -0E-398 Clamped  -- *
-fmax361637 fma  1    1E-401  -1E-401 -> -0E-398 Clamped  -- *
-fmax361638 fma  1   -1E-401  -1E-401 -> -1E-398 Subnormal Inexact Rounded Underflow
-
--- Examples from SQL proposal (Krishna Kulkarni)
-fmax361701 fma  1   130E-2    120E-2    -> 2.50
-fmax361702 fma  1   130E-2    12E-1     -> 2.50
-fmax361703 fma  1   130E-2    1E0       -> 2.30
-fmax361704 fma  1   1E2       1E4       -> 1.01E+4
-fmax361705 subtract 130E-2  120E-2 -> 0.10
-fmax361706 subtract 130E-2  12E-1  -> 0.10
-fmax361707 subtract 130E-2  1E0    -> 0.30
-fmax361708 subtract 1E2     1E4    -> -9.9E+3
-
--- Gappy coefficients; check residue handling even with full coefficient gap
-rounding: half_even
-
-fmax362001 fma  1   1234567890123456 1      -> 1234567890123457
-fmax362002 fma  1   1234567890123456 0.6    -> 1234567890123457  Inexact Rounded
-fmax362003 fma  1   1234567890123456 0.06   -> 1234567890123456  Inexact Rounded
-fmax362004 fma  1   1234567890123456 6E-3   -> 1234567890123456  Inexact Rounded
-fmax362005 fma  1   1234567890123456 6E-4   -> 1234567890123456  Inexact Rounded
-fmax362006 fma  1   1234567890123456 6E-5   -> 1234567890123456  Inexact Rounded
-fmax362007 fma  1   1234567890123456 6E-6   -> 1234567890123456  Inexact Rounded
-fmax362008 fma  1   1234567890123456 6E-7   -> 1234567890123456  Inexact Rounded
-fmax362009 fma  1   1234567890123456 6E-8   -> 1234567890123456  Inexact Rounded
-fmax362010 fma  1   1234567890123456 6E-9   -> 1234567890123456  Inexact Rounded
-fmax362011 fma  1   1234567890123456 6E-10  -> 1234567890123456  Inexact Rounded
-fmax362012 fma  1   1234567890123456 6E-11  -> 1234567890123456  Inexact Rounded
-fmax362013 fma  1   1234567890123456 6E-12  -> 1234567890123456  Inexact Rounded
-fmax362014 fma  1   1234567890123456 6E-13  -> 1234567890123456  Inexact Rounded
-fmax362015 fma  1   1234567890123456 6E-14  -> 1234567890123456  Inexact Rounded
-fmax362016 fma  1   1234567890123456 6E-15  -> 1234567890123456  Inexact Rounded
-fmax362017 fma  1   1234567890123456 6E-16  -> 1234567890123456  Inexact Rounded
-fmax362018 fma  1   1234567890123456 6E-17  -> 1234567890123456  Inexact Rounded
-fmax362019 fma  1   1234567890123456 6E-18  -> 1234567890123456  Inexact Rounded
-fmax362020 fma  1   1234567890123456 6E-19  -> 1234567890123456  Inexact Rounded
-fmax362021 fma  1   1234567890123456 6E-20  -> 1234567890123456  Inexact Rounded
-
--- widening second argument at gap
-fmax362030 fma  1   12345678 1                       -> 12345679
-fmax362031 fma  1   12345678 0.1                     -> 12345678.1
-fmax362032 fma  1   12345678 0.12                    -> 12345678.12
-fmax362033 fma  1   12345678 0.123                   -> 12345678.123
-fmax362034 fma  1   12345678 0.1234                  -> 12345678.1234
-fmax362035 fma  1   12345678 0.12345                 -> 12345678.12345
-fmax362036 fma  1   12345678 0.123456                -> 12345678.123456
-fmax362037 fma  1   12345678 0.1234567               -> 12345678.1234567
-fmax362038 fma  1   12345678 0.12345678              -> 12345678.12345678
-fmax362039 fma  1   12345678 0.123456789             -> 12345678.12345679 Inexact Rounded
-fmax362040 fma  1   12345678 0.123456785             -> 12345678.12345678 Inexact Rounded
-fmax362041 fma  1   12345678 0.1234567850            -> 12345678.12345678 Inexact Rounded
-fmax362042 fma  1   12345678 0.1234567851            -> 12345678.12345679 Inexact Rounded
-fmax362043 fma  1   12345678 0.12345678501           -> 12345678.12345679 Inexact Rounded
-fmax362044 fma  1   12345678 0.123456785001          -> 12345678.12345679 Inexact Rounded
-fmax362045 fma  1   12345678 0.1234567850001         -> 12345678.12345679 Inexact Rounded
-fmax362046 fma  1   12345678 0.12345678500001        -> 12345678.12345679 Inexact Rounded
-fmax362047 fma  1   12345678 0.123456785000001       -> 12345678.12345679 Inexact Rounded
-fmax362048 fma  1   12345678 0.1234567850000001      -> 12345678.12345679 Inexact Rounded
-fmax362049 fma  1   12345678 0.1234567850000000      -> 12345678.12345678 Inexact Rounded
---                               90123456
-rounding: half_even
-fmax362050 fma  1   12345678 0.0234567750000000      -> 12345678.02345678 Inexact Rounded
-fmax362051 fma  1   12345678 0.0034567750000000      -> 12345678.00345678 Inexact Rounded
-fmax362052 fma  1   12345678 0.0004567750000000      -> 12345678.00045678 Inexact Rounded
-fmax362053 fma  1   12345678 0.0000567750000000      -> 12345678.00005678 Inexact Rounded
-fmax362054 fma  1   12345678 0.0000067750000000      -> 12345678.00000678 Inexact Rounded
-fmax362055 fma  1   12345678 0.0000007750000000      -> 12345678.00000078 Inexact Rounded
-fmax362056 fma  1   12345678 0.0000000750000000      -> 12345678.00000008 Inexact Rounded
-fmax362057 fma  1   12345678 0.0000000050000000      -> 12345678.00000000 Inexact Rounded
-fmax362060 fma  1   12345678 0.0234567750000001      -> 12345678.02345678 Inexact Rounded
-fmax362061 fma  1   12345678 0.0034567750000001      -> 12345678.00345678 Inexact Rounded
-fmax362062 fma  1   12345678 0.0004567750000001      -> 12345678.00045678 Inexact Rounded
-fmax362063 fma  1   12345678 0.0000567750000001      -> 12345678.00005678 Inexact Rounded
-fmax362064 fma  1   12345678 0.0000067750000001      -> 12345678.00000678 Inexact Rounded
-fmax362065 fma  1   12345678 0.0000007750000001      -> 12345678.00000078 Inexact Rounded
-fmax362066 fma  1   12345678 0.0000000750000001      -> 12345678.00000008 Inexact Rounded
-fmax362067 fma  1   12345678 0.0000000050000001      -> 12345678.00000001 Inexact Rounded
--- far-out residues (full coefficient gap is 16+15 digits)
-rounding: up
-fmax362070 fma  1   12345678 1E-8                    -> 12345678.00000001
-fmax362071 fma  1   12345678 1E-9                    -> 12345678.00000001 Inexact Rounded
-fmax362072 fma  1   12345678 1E-10                   -> 12345678.00000001 Inexact Rounded
-fmax362073 fma  1   12345678 1E-11                   -> 12345678.00000001 Inexact Rounded
-fmax362074 fma  1   12345678 1E-12                   -> 12345678.00000001 Inexact Rounded
-fmax362075 fma  1   12345678 1E-13                   -> 12345678.00000001 Inexact Rounded
-fmax362076 fma  1   12345678 1E-14                   -> 12345678.00000001 Inexact Rounded
-fmax362077 fma  1   12345678 1E-15                   -> 12345678.00000001 Inexact Rounded
-fmax362078 fma  1   12345678 1E-16                   -> 12345678.00000001 Inexact Rounded
-fmax362079 fma  1   12345678 1E-17                   -> 12345678.00000001 Inexact Rounded
-fmax362080 fma  1   12345678 1E-18                   -> 12345678.00000001 Inexact Rounded
-fmax362081 fma  1   12345678 1E-19                   -> 12345678.00000001 Inexact Rounded
-fmax362082 fma  1   12345678 1E-20                   -> 12345678.00000001 Inexact Rounded
-fmax362083 fma  1   12345678 1E-25                   -> 12345678.00000001 Inexact Rounded
-fmax362084 fma  1   12345678 1E-30                   -> 12345678.00000001 Inexact Rounded
-fmax362085 fma  1   12345678 1E-31                   -> 12345678.00000001 Inexact Rounded
-fmax362086 fma  1   12345678 1E-32                   -> 12345678.00000001 Inexact Rounded
-fmax362087 fma  1   12345678 1E-33                   -> 12345678.00000001 Inexact Rounded
-fmax362088 fma  1   12345678 1E-34                   -> 12345678.00000001 Inexact Rounded
-fmax362089 fma  1   12345678 1E-35                   -> 12345678.00000001 Inexact Rounded
-
--- payload decapitate x3
-precision: 5
-fmax363000 fma  1 1  sNaN1234567890     ->  NaN67890  Invalid_operation
-fmax363001 fma    1 -sNaN1234512345 1   -> -NaN12345  Invalid_operation
-fmax363002 fma       sNaN1234554321 1 1 ->  NaN54321  Invalid_operation
-
--- Null tests
-fmax39990 fma  1   10  # -> NaN Invalid_operation
-fmax39991 fma  1    # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/inexact.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/inexact.decTest
deleted file mode 100644
index 22cfbf7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/inexact.decTest
+++ /dev/null
@@ -1,215 +0,0 @@
-------------------------------------------------------------------------
--- inexact.decTest -- decimal inexact and rounded edge cases          --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minexponent: -999
-
-inx001 add 1          1              -> 2
-inx002 add 123456789  0              -> 123456789
-inx003 add 123456789  0.0            -> 123456789 Rounded
-inx004 add 123456789  0.00           -> 123456789 Rounded
-inx005 add 123456789  1              -> 123456790
-inx006 add 123456789  0.1            -> 123456789 Inexact Rounded
-inx007 add 123456789  0.01           -> 123456789 Inexact Rounded
-inx008 add 123456789  0.001          -> 123456789 Inexact Rounded
-inx009 add 123456789  0.000001       -> 123456789 Inexact Rounded
-inx010 add 123456789  0.000000001    -> 123456789 Inexact Rounded
-inx011 add 123456789  0.000000000001 -> 123456789 Inexact Rounded
-
-inx012 add 123456789  0.9            -> 123456790 Inexact Rounded
-inx013 add 123456789  0.09           -> 123456789 Inexact Rounded
-inx014 add 123456789  0.009          -> 123456789 Inexact Rounded
-inx015 add 123456789  0.000009       -> 123456789 Inexact Rounded
-inx016 add 123456789  0.000000009    -> 123456789 Inexact Rounded
-inx017 add 123456789  0.000000000009 -> 123456789 Inexact Rounded
-
-inx021 add 1          -1              -> 0
-inx022 add 123456789  -0              -> 123456789
-inx023 add 123456789  -0.0            -> 123456789 Rounded
-inx024 add 123456789  -0.00           -> 123456789 Rounded
-inx025 add 123456789  -1              -> 123456788
-inx026 add 123456789  -0.1            -> 123456789 Inexact Rounded
-inx027 add 123456789  -0.01           -> 123456789 Inexact Rounded
-inx028 add 123456789  -0.001          -> 123456789 Inexact Rounded
-inx029 add 123456789  -0.000001       -> 123456789 Inexact Rounded
-inx030 add 123456789  -0.000000001    -> 123456789 Inexact Rounded
-inx031 add 123456789  -0.000000000001 -> 123456789 Inexact Rounded
-inx032 add 123456789  -0.9            -> 123456788 Inexact Rounded
-inx033 add 123456789  -0.09           -> 123456789 Inexact Rounded
-inx034 add 123456789  -0.009          -> 123456789 Inexact Rounded
-inx035 add 123456789  -0.000009       -> 123456789 Inexact Rounded
-inx036 add 123456789  -0.000000009    -> 123456789 Inexact Rounded
-inx037 add 123456789  -0.000000000009 -> 123456789 Inexact Rounded
-
-inx042 add  0               123456789 -> 123456789
-inx043 add  0.0             123456789 -> 123456789 Rounded
-inx044 add  0.00            123456789 -> 123456789 Rounded
-inx045 add  1               123456789 -> 123456790
-inx046 add  0.1             123456789 -> 123456789 Inexact Rounded
-inx047 add  0.01            123456789 -> 123456789 Inexact Rounded
-inx048 add  0.001           123456789 -> 123456789 Inexact Rounded
-inx049 add  0.000001        123456789 -> 123456789 Inexact Rounded
-inx050 add  0.000000001     123456789 -> 123456789 Inexact Rounded
-inx051 add  0.000000000001  123456789 -> 123456789 Inexact Rounded
-inx052 add  0.9             123456789 -> 123456790 Inexact Rounded
-inx053 add  0.09            123456789 -> 123456789 Inexact Rounded
-inx054 add  0.009           123456789 -> 123456789 Inexact Rounded
-inx055 add  0.000009        123456789 -> 123456789 Inexact Rounded
-inx056 add  0.000000009     123456789 -> 123456789 Inexact Rounded
-inx057 add  0.000000000009  123456789 -> 123456789 Inexact Rounded
-
-inx062 add  -0              123456789 -> 123456789
-inx063 add  -0.0            123456789 -> 123456789 Rounded
-inx064 add  -0.00           123456789 -> 123456789 Rounded
-inx065 add  -1              123456789 -> 123456788
-inx066 add  -0.1            123456789 -> 123456789 Inexact Rounded
-inx067 add  -0.01           123456789 -> 123456789 Inexact Rounded
-inx068 add  -0.001          123456789 -> 123456789 Inexact Rounded
-inx069 add  -0.000001       123456789 -> 123456789 Inexact Rounded
-inx070 add  -0.000000001    123456789 -> 123456789 Inexact Rounded
-inx071 add  -0.000000000001 123456789 -> 123456789 Inexact Rounded
-inx072 add  -0.9            123456789 -> 123456788 Inexact Rounded
-inx073 add  -0.09           123456789 -> 123456789 Inexact Rounded
-inx074 add  -0.009          123456789 -> 123456789 Inexact Rounded
-inx075 add  -0.000009       123456789 -> 123456789 Inexact Rounded
-inx076 add  -0.000000009    123456789 -> 123456789 Inexact Rounded
-inx077 add  -0.000000000009 123456789 -> 123456789 Inexact Rounded
-
--- some boundaries
-inx081 add    999999999           0     -> 999999999
-inx082 add  0.999999999 0.000000000     -> 0.999999999
-inx083 add    999999999           1     -> 1.00000000E+9 Rounded
-inx084 add  0.999999999 0.000000001     -> 1.00000000    Rounded
-inx085 add    999999999           2     -> 1.00000000E+9 Inexact Rounded
-inx086 add  0.999999999 0.000000002     -> 1.00000000    Inexact Rounded
-inx087 add    999999999           3     -> 1.00000000E+9 Inexact Rounded
-inx089 add  0.999999999 0.000000003     -> 1.00000000    Inexact Rounded
-
--- minus, plus, and subtract all assumed to work like add.
-
--- multiply
-precision: 8
-inx101 multiply  1000  1000        ->  1000000
-inx102 multiply  9000  9000        -> 81000000
-inx103 multiply  9999  9999        -> 99980001
-inx104 multiply  1000 10000        -> 10000000
-inx105 multiply 10000 10000        -> 1.0000000E+8 Rounded
-inx106 multiply 10001 10000        -> 1.0001000E+8 Rounded
-inx107 multiply 10001 10001        -> 1.0002000E+8 Inexact Rounded
-inx108 multiply 10101 10001        -> 1.0102010E+8 Inexact Rounded
-inx109 multiply 10001 10101        -> 1.0102010E+8 Inexact Rounded
-
--- divide
-precision: 4
-inx201 divide  1000  1000        ->  1
-inx202 divide  1000     1        ->  1000
-inx203 divide  1000     2        ->   500
-inx204 divide  1000     3        ->   333.3  Inexact Rounded
-inx205 divide  1000     4        ->   250
-inx206 divide  1000     5        ->   200
-inx207 divide  1000     6        ->   166.7  Inexact Rounded
-inx208 divide  1000     7        ->   142.9  Inexact Rounded
-inx209 divide  1000     8        ->   125
-inx210 divide  1000     9        ->   111.1  Inexact Rounded
-inx211 divide  1000    10        ->   100
-
-inx220 divide     1     1        ->   1
-inx221 divide     1     2        ->   0.5
-inx222 divide     1     4        ->   0.25
-inx223 divide     1     8        ->   0.125
-inx224 divide     1    16        ->   0.0625
-inx225 divide     1    32        ->   0.03125
-inx226 divide     1    64        ->   0.01563  Inexact Rounded
-inx227 divide     1   128        ->   0.007813 Inexact Rounded
-
-precision: 5
-inx230 divide     1     1        ->   1
-inx231 divide     1     2        ->   0.5
-inx232 divide     1     4        ->   0.25
-inx233 divide     1     8        ->   0.125
-inx234 divide     1    16        ->   0.0625
-inx235 divide     1    32        ->   0.03125
-inx236 divide     1    64        ->   0.015625
-inx237 divide     1   128        ->   0.0078125
-
-precision: 3
-inx240 divide     1     1        ->   1
-inx241 divide     1     2        ->   0.5
-inx242 divide     1     4        ->   0.25
-inx243 divide     1     8        ->   0.125
-inx244 divide     1    16        ->   0.0625
-inx245 divide     1    32        ->   0.0313   Inexact Rounded
-inx246 divide     1    64        ->   0.0156   Inexact Rounded
-inx247 divide     1   128        ->   0.00781  Inexact Rounded
-
-precision: 2
-inx250 divide     1     1        ->   1
-inx251 divide     1     2        ->   0.5
-inx252 divide     1     4        ->   0.25
-inx253 divide     1     8        ->   0.13     Inexact Rounded
-inx254 divide     1    16        ->   0.063    Inexact Rounded
-inx255 divide     1    32        ->   0.031    Inexact Rounded
-inx256 divide     1    64        ->   0.016    Inexact Rounded
-inx257 divide     1   128        ->   0.0078   Inexact Rounded
-
-precision: 1
-inx260 divide     1     1        ->   1
-inx261 divide     1     2        ->   0.5
-inx262 divide     1     4        ->   0.3      Inexact Rounded
-inx263 divide     1     8        ->   0.1      Inexact Rounded
-inx264 divide     1    16        ->   0.06     Inexact Rounded
-inx265 divide     1    32        ->   0.03     Inexact Rounded
-inx266 divide     1    64        ->   0.02     Inexact Rounded
-inx267 divide     1   128        ->   0.008    Inexact Rounded
-
-
--- power
-precision: 4
-inx301 power    0.5     2        ->   0.25
-inx302 power    0.5     4        ->   0.0625
-inx303 power    0.5     8        ->   0.003906   Inexact Rounded
-inx304 power    0.5    16        ->   0.00001526 Inexact Rounded
-inx305 power    0.5    32        ->   2.328E-10  Inexact Rounded
-
--- compare, divideInteger, and remainder are always exact
-
--- rescale
-precision: 4
-inx401 rescale 0       0   -> 0
-inx402 rescale 1       0   -> 1
-inx403 rescale 0.1    +2   -> 0E+2 Inexact Rounded
-inx404 rescale 0.1    +1   -> 0E+1 Inexact Rounded
-inx405 rescale 0.1     0   -> 0 Inexact Rounded
-inx406 rescale 0.1    -1   -> 0.1
-inx407 rescale 0.1    -2   -> 0.10
-
--- long operands cause rounding too
-precision: 9
-inx801 plus  123456789  -> 123456789
-inx802 plus  1234567890 -> 1.23456789E+9 Rounded
-inx803 plus  1234567891 -> 1.23456789E+9 Inexact Rounded
-inx804 plus  1234567892 -> 1.23456789E+9 Inexact Rounded
-inx805 plus  1234567899 -> 1.23456790E+9 Inexact Rounded
-inx806 plus  1234567900 -> 1.23456790E+9 Rounded
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/invert.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/invert.decTest
deleted file mode 100644
index 9ef5a91..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/invert.decTest
+++ /dev/null
@@ -1,176 +0,0 @@
-------------------------------------------------------------------------
--- invert.decTest -- digitwise logical INVERT                         --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minExponent: -999
-
--- Sanity check (truth table), and examples from decArith
-invx001 invert             0 -> 111111111
-invx002 invert             1 -> 111111110
-invx003 invert            10 -> 111111101
-invx004 invert     111111111 ->         0
-invx005 invert     000000000 -> 111111111
-invx006 invert     101010101 -> '10101010'
--- and at msd and msd-1
-invx007 invert 000000000 ->   111111111
-invx009 invert 100000000 ->    11111111
-invx011 invert 000000000 ->   111111111
-invx013 invert 010000000 ->   101111111
-
--- Various lengths
---             123456789         123456789
-invx021 invert 111111111     ->  0
-invx022 invert 111111111111  ->  0
-invx023 invert  11111111     ->  100000000
-invx025 invert   1111111     ->  110000000
-invx026 invert    111111     ->  111000000
-invx027 invert     11111     ->  111100000
-invx028 invert      1111     ->  111110000
-invx029 invert       111     ->  111111000
-invx031 invert        11     ->  111111100
-invx032 invert         1     ->  111111110
-invx033 invert 111111111111  ->  0
-invx034 invert 11111111111   ->  0
-invx035 invert 1111111111    ->  0
-invx036 invert 111111111     ->  0
-
-invx080 invert 011111111   ->  100000000
-invx081 invert 101111111   ->   10000000
-invx082 invert 110111111   ->    1000000
-invx083 invert 111011111   ->     100000
-invx084 invert 111101111   ->      10000
-invx085 invert 111110111   ->       1000
-invx086 invert 111111011   ->        100
-invx087 invert 111111101   ->         10
-invx088 invert 111111110   ->          1
-invx089 invert 011111011   ->  100000100
-invx090 invert 101111101   ->   10000010
-invx091 invert 110111110   ->    1000001
-invx092 invert 111011101   ->     100010
-invx093 invert 111101011   ->      10100
-invx094 invert 111110111   ->       1000
-invx095 invert 111101011   ->      10100
-invx096 invert 111011101   ->     100010
-invx097 invert 110111110   ->    1000001
-invx098 invert 101111101   ->   10000010
-invx099 invert 011111011   ->  100000100
-
--- non-0/1 should not be accepted, nor should signs
-invx220 invert 111111112   ->  NaN Invalid_operation
-invx221 invert 333333333   ->  NaN Invalid_operation
-invx222 invert 555555555   ->  NaN Invalid_operation
-invx223 invert 777777777   ->  NaN Invalid_operation
-invx224 invert 999999999   ->  NaN Invalid_operation
-invx225 invert 222222222   ->  NaN Invalid_operation
-invx226 invert 444444444   ->  NaN Invalid_operation
-invx227 invert 666666666   ->  NaN Invalid_operation
-invx228 invert 888888888   ->  NaN Invalid_operation
-invx229 invert 999999999   ->  NaN Invalid_operation
-invx230 invert 999999999   ->  NaN Invalid_operation
-invx231 invert 999999999   ->  NaN Invalid_operation
-invx232 invert 999999999   ->  NaN Invalid_operation
--- a few randoms
-invx240 invert  567468689  ->  NaN Invalid_operation
-invx241 invert  567367689  ->  NaN Invalid_operation
-invx242 invert -631917772  ->  NaN Invalid_operation
-invx243 invert -756253257  ->  NaN Invalid_operation
-invx244 invert  835590149  ->  NaN Invalid_operation
--- test MSD
-invx250 invert  200000000  ->  NaN Invalid_operation
-invx251 invert  300000000  ->  NaN Invalid_operation
-invx252 invert  400000000  ->  NaN Invalid_operation
-invx253 invert  500000000  ->  NaN Invalid_operation
-invx254 invert  600000000  ->  NaN Invalid_operation
-invx255 invert  700000000  ->  NaN Invalid_operation
-invx256 invert  800000000  ->  NaN Invalid_operation
-invx257 invert  900000000  ->  NaN Invalid_operation
--- test MSD-1
-invx270 invert  021000000  ->  NaN Invalid_operation
-invx271 invert  030100000  ->  NaN Invalid_operation
-invx272 invert  040010000  ->  NaN Invalid_operation
-invx273 invert  050001000  ->  NaN Invalid_operation
-invx274 invert  160000100  ->  NaN Invalid_operation
-invx275 invert  170000010  ->  NaN Invalid_operation
-invx276 invert  180000000  ->  NaN Invalid_operation
-invx277 invert  190000000  ->  NaN Invalid_operation
--- test LSD
-invx280 invert  000000002  ->  NaN Invalid_operation
-invx281 invert  000000003  ->  NaN Invalid_operation
-invx282 invert  000000004  ->  NaN Invalid_operation
-invx283 invert  000000005  ->  NaN Invalid_operation
-invx284 invert  101000006  ->  NaN Invalid_operation
-invx285 invert  100100007  ->  NaN Invalid_operation
-invx286 invert  100010008  ->  NaN Invalid_operation
-invx287 invert  100001009  ->  NaN Invalid_operation
--- test Middie
-invx288 invert  000020000  ->  NaN Invalid_operation
-invx289 invert  000030001  ->  NaN Invalid_operation
-invx290 invert  000040000  ->  NaN Invalid_operation
-invx291 invert  000050000  ->  NaN Invalid_operation
-invx292 invert  101060000  ->  NaN Invalid_operation
-invx293 invert  100170010  ->  NaN Invalid_operation
-invx294 invert  100080100  ->  NaN Invalid_operation
-invx295 invert  100091000  ->  NaN Invalid_operation
--- signs
-invx296 invert -100001000  ->  NaN Invalid_operation
-invx299 invert  100001000  ->  11110111
-
--- Nmax, Nmin, Ntiny
-invx341 invert  9.99999999E+999   -> NaN Invalid_operation
-invx342 invert  1E-999            -> NaN Invalid_operation
-invx343 invert  1.00000000E-999   -> NaN Invalid_operation
-invx344 invert  1E-1007           -> NaN Invalid_operation
-invx345 invert  -1E-1007          -> NaN Invalid_operation
-invx346 invert  -1.00000000E-999  -> NaN Invalid_operation
-invx347 invert  -1E-999           -> NaN Invalid_operation
-invx348 invert  -9.99999999E+999  -> NaN Invalid_operation
-
--- A few other non-integers
-invx361 invert  1.0               -> NaN Invalid_operation
-invx362 invert  1E+1              -> NaN Invalid_operation
-invx363 invert  0.0               -> NaN Invalid_operation
-invx364 invert  0E+1              -> NaN Invalid_operation
-invx365 invert  9.9               -> NaN Invalid_operation
-invx366 invert  9E+1              -> NaN Invalid_operation
-
--- All Specials are in error
-invx788 invert -Inf     -> NaN  Invalid_operation
-invx794 invert  Inf     -> NaN  Invalid_operation
-invx821 invert  NaN     -> NaN  Invalid_operation
-invx841 invert  sNaN    -> NaN  Invalid_operation
--- propagating NaNs
-invx861 invert  NaN1    -> NaN Invalid_operation
-invx862 invert +NaN2    -> NaN Invalid_operation
-invx863 invert  NaN3    -> NaN Invalid_operation
-invx864 invert  NaN4    -> NaN Invalid_operation
-invx865 invert  NaN5    -> NaN Invalid_operation
-invx871 invert  sNaN11  -> NaN Invalid_operation
-invx872 invert  sNaN12  -> NaN Invalid_operation
-invx873 invert  sNaN13  -> NaN Invalid_operation
-invx874 invert  sNaN14  -> NaN Invalid_operation
-invx875 invert  sNaN15  -> NaN Invalid_operation
-invx876 invert  NaN16   -> NaN Invalid_operation
-invx881 invert +NaN25   -> NaN Invalid_operation
-invx882 invert -NaN26   -> NaN Invalid_operation
-invx883 invert -sNaN27  -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ln.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ln.decTest
deleted file mode 100644
index efcb2a6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/ln.decTest
+++ /dev/null
@@ -1,611 +0,0 @@
-------------------------------------------------------------------------
--- ln.decTest -- decimal natural logarithm                            --
--- Copyright (c) IBM Corporation, 2005, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   16
-rounding:    half_even
-maxExponent: 384
-minexponent: -383
-
--- basics (examples in specification)
-precision: 9
-lnxs001 ln  0                 -> -Infinity
-lnxs002 ln  1.000             ->   0
-lnxs003 ln  2.71828183        ->   1.00000000         Inexact Rounded
-lnxs004 ln  10                ->   2.30258509         Inexact Rounded
-lnxs005 ln +Infinity          ->  Infinity
-
-
--- basics
-precision:   16
-lnx0001 ln  0                 -> -Infinity
-lnx0002 ln  1E-9              -> -20.72326583694641   Inexact Rounded
-lnx0003 ln  0.0007            ->  -7.264430222920869  Inexact Rounded
-lnx0004 ln  0.1               ->  -2.302585092994046  Inexact Rounded
-lnx0005 ln  0.7               ->  -0.3566749439387324 Inexact Rounded
-lnx0006 ln  1                 ->   0
-lnx0007 ln  1.000             ->   0
-lnx0008 ln  1.5               ->   0.4054651081081644 Inexact Rounded
-lnx0009 ln  2                 ->   0.6931471805599453 Inexact Rounded
-lnx0010 ln  2.718281828459045 ->   0.9999999999999999 Inexact Rounded
-lnx0011 ln  2.718281828459046 ->   1.000000000000000  Inexact Rounded
-lnx0012 ln  2.718281828459047 ->   1.000000000000001  Inexact Rounded
-lnx0013 ln  10                ->   2.302585092994046  Inexact Rounded
-lnx0014 ln  10.5              ->   2.351375257163478  Inexact Rounded
-lnx0015 ln  9999              ->   9.210240366975849  Inexact Rounded
-lnx0016 ln  1E6               ->  13.81551055796427   Inexact Rounded
-lnx0017 ln  1E+9              ->  20.72326583694641   Inexact Rounded
-lnx0018 ln +Infinity          ->  Infinity
-
--- notable cases
--- negatives
-lnx0021 ln -1E-9              -> NaN Invalid_operation
-lnx0022 ln -0.0007            -> NaN Invalid_operation
-lnx0023 ln -0.1               -> NaN Invalid_operation
-lnx0024 ln -0.7               -> NaN Invalid_operation
-lnx0025 ln -1                 -> NaN Invalid_operation
-lnx0026 ln -1.5               -> NaN Invalid_operation
-lnx0027 ln -2                 -> NaN Invalid_operation
-lnx0029 ln -10.5              -> NaN Invalid_operation
-lnx0028 ln -9999              -> NaN Invalid_operation
-lnx0030 ln -2.718281828459045 -> NaN Invalid_operation
-lnx0031 ln -2.718281828459046 -> NaN Invalid_operation
-lnx0032 ln -0                 -> -Infinity
-lnx0033 ln -0E+17             -> -Infinity
-lnx0034 ln -0E-17             -> -Infinity
--- other zeros
-lnx0041 ln  0                 -> -Infinity
-lnx0042 ln  0E+17             -> -Infinity
-lnx0043 ln  0E-17             -> -Infinity
--- infinities
-lnx0045 ln -Infinity          -> NaN Invalid_operation
-lnx0046 ln +Infinity          -> Infinity
--- ones
-lnx0050 ln  1                 ->   0
-lnx0051 ln  1.0               ->   0
-lnx0052 ln  1.000000000000000 ->   0
-lnx0053 ln  1.000000000000000000 ->   0
-
--- lower precision basics
-Precision: 7
-lnx0101 ln  0                 -> -Infinity
-lnx0102 ln  1E-9              -> -20.72327            Inexact Rounded
-lnx0103 ln  0.0007            ->  -7.264430           Inexact Rounded
-lnx0104 ln  0.1               ->  -2.302585           Inexact Rounded
-lnx0105 ln  0.7               ->  -0.3566749          Inexact Rounded
-lnx0106 ln  1                 ->   0
-lnx0107 ln  1.5               ->   0.4054651          Inexact Rounded
-lnx0108 ln  2                 ->   0.6931472          Inexact Rounded
-lnx0109 ln  2.718281828459045 ->   1.000000           Inexact Rounded
-lnx0110 ln  2.718281828459046 ->   1.000000           Inexact Rounded
-lnx0111 ln  2.718281828459047 ->   1.000000           Inexact Rounded
-lnx0112 ln  10                ->   2.302585           Inexact Rounded
-lnx0113 ln  10.5              ->   2.351375           Inexact Rounded
-lnx0114 ln  9999              ->   9.210240           Inexact Rounded
-lnx0115 ln  1E6               ->  13.81551            Inexact Rounded
-lnx0116 ln  1E+9              ->  20.72327            Inexact Rounded
-lnx0117 ln +Infinity          ->  Infinity
-Precision: 2
-lnx0121 ln  0                 -> -Infinity
-lnx0122 ln  1E-9              -> -21                  Inexact Rounded
-lnx0123 ln  0.0007            ->  -7.3                Inexact Rounded
-lnx0124 ln  0.1               ->  -2.3                Inexact Rounded
-lnx0125 ln  0.7               ->  -0.36               Inexact Rounded
-lnx0126 ln  1                 ->   0
-lnx0127 ln  1.5               ->   0.41               Inexact Rounded
-lnx0128 ln  2                 ->   0.69               Inexact Rounded
-lnx0129 ln  2.718281828459045 ->   1.0                Inexact Rounded
-lnx0130 ln  2.718281828459046 ->   1.0                Inexact Rounded
-lnx0131 ln  2.718281828459047 ->   1.0                Inexact Rounded
-lnx0132 ln  10                ->   2.3                Inexact Rounded
-lnx0133 ln  10.5              ->   2.4                Inexact Rounded
-lnx0134 ln  9999              ->   9.2                Inexact Rounded
-lnx0135 ln  1E6               ->  14                  Inexact Rounded
-lnx0136 ln  1E+9              ->  21                  Inexact Rounded
-lnx0137 ln +Infinity          ->  Infinity
-Precision: 1
-lnx0141 ln  0                 -> -Infinity
-lnx0142 ln  1E-9              -> -2E+1                Inexact Rounded
-lnx0143 ln  0.0007            ->  -7                  Inexact Rounded
-lnx0144 ln  0.1               ->  -2                  Inexact Rounded
-lnx0145 ln  0.7               ->  -0.4                Inexact Rounded
-lnx0146 ln  1                 ->   0
-lnx0147 ln  1.5               ->   0.4                Inexact Rounded
-lnx0148 ln  2                 ->   0.7                Inexact Rounded
-lnx0149 ln  2.718281828459045 ->   1                  Inexact Rounded
-lnx0150 ln  2.718281828459046 ->   1                  Inexact Rounded
-lnx0151 ln  2.718281828459047 ->   1                  Inexact Rounded
-lnx0152 ln  10                ->   2                  Inexact Rounded
-lnx0153 ln  10.5              ->   2                  Inexact Rounded
-lnx0154 ln  9999              ->   9                  Inexact Rounded
-lnx0155 ln  1E6               ->  1E+1                Inexact Rounded
-lnx0156 ln  1E+9              ->  2E+1                Inexact Rounded
-lnx0157 ln +Infinity          ->  Infinity
-
--- group low-precision ln(1)s:
-precision: 1
-lnx0161 ln  1 -> 0
-precision: 2
-lnx0162 ln  1 -> 0
-precision: 3
-lnx0163 ln  1 -> 0
-precision: 4
-lnx0164 ln  1 -> 0
-precision: 5
-lnx0165 ln  1 -> 0
-precision: 6
-lnx0166 ln  1 -> 0
-precision: 7
-lnx0167 ln  1 -> 0
-precision: 8
-lnx0168 ln  1 -> 0
-
--- edge-test ln(2) and ln(10) in case of lookasides
-precision: 45
-lnx201  ln  2 -> 0.693147180559945309417232121458176568075500134  Inexact Rounded
-lnx202  ln 10 -> 2.30258509299404568401799145468436420760110149   Inexact Rounded
-precision: 44
-lnx203  ln  2 -> 0.69314718055994530941723212145817656807550013   Inexact Rounded
-lnx204  ln 10 -> 2.3025850929940456840179914546843642076011015    Inexact Rounded
-precision: 43
-lnx205  ln  2 -> 0.6931471805599453094172321214581765680755001    Inexact Rounded
-lnx206  ln 10 -> 2.302585092994045684017991454684364207601101     Inexact Rounded
-precision: 42
-lnx207  ln  2 -> 0.693147180559945309417232121458176568075500     Inexact Rounded
-lnx208  ln 10 -> 2.30258509299404568401799145468436420760110      Inexact Rounded
-precision: 41
-lnx209  ln  2 -> 0.69314718055994530941723212145817656807550      Inexact Rounded
-lnx210  ln 10 -> 2.3025850929940456840179914546843642076011       Inexact Rounded
-precision: 40
-lnx211  ln  2 -> 0.6931471805599453094172321214581765680755       Inexact Rounded
-lnx212  ln 10 -> 2.302585092994045684017991454684364207601        Inexact Rounded
-precision: 39
-lnx213  ln  2 -> 0.693147180559945309417232121458176568076        Inexact Rounded
-lnx214  ln 10 -> 2.30258509299404568401799145468436420760         Inexact Rounded
-precision: 38
-lnx215  ln  2 -> 0.69314718055994530941723212145817656808         Inexact Rounded
-lnx216  ln 10 -> 2.3025850929940456840179914546843642076          Inexact Rounded
-precision: 37
-lnx217  ln  2 -> 0.6931471805599453094172321214581765681          Inexact Rounded
-lnx218  ln 10 -> 2.302585092994045684017991454684364208           Inexact Rounded
-precision: 36
-lnx219  ln  2 -> 0.693147180559945309417232121458176568           Inexact Rounded
-lnx220  ln 10 -> 2.30258509299404568401799145468436421            Inexact Rounded
-precision: 35
-lnx221  ln  2 -> 0.69314718055994530941723212145817657            Inexact Rounded
-lnx222  ln 10 -> 2.3025850929940456840179914546843642             Inexact Rounded
-precision: 34
-lnx223  ln  2 -> 0.6931471805599453094172321214581766             Inexact Rounded
-lnx224  ln 10 -> 2.302585092994045684017991454684364              Inexact Rounded
-precision: 33
-lnx225  ln  2 -> 0.693147180559945309417232121458177              Inexact Rounded
-lnx226  ln 10 -> 2.30258509299404568401799145468436               Inexact Rounded
-precision: 32
-lnx227  ln  2 -> 0.69314718055994530941723212145818               Inexact Rounded
-lnx228  ln 10 -> 2.3025850929940456840179914546844                Inexact Rounded
-precision: 31
-lnx229  ln  2 -> 0.6931471805599453094172321214582                Inexact Rounded
-lnx230  ln 10 -> 2.302585092994045684017991454684                 Inexact Rounded
-precision: 30
-lnx231  ln  2 -> 0.693147180559945309417232121458                 Inexact Rounded
-lnx232  ln 10 -> 2.30258509299404568401799145468                  Inexact Rounded
-
--- extreme input range values
-maxExponent: 384
-minExponent: -383
-Precision: 16
-
-lnx0901 ln 1e-400    -> -921.0340371976183  Inexact Rounded
-lnx0902 ln 1e+400    ->  921.0340371976183  Inexact Rounded
-lnx0903 ln 1e-999999 -> -2302582.790408953  Inexact Rounded
-lnx0904 ln 1e+999999 ->  2302582.790408953  Inexact Rounded
-lnx0905 ln 1e-1000013                -> -2302615.026600255  Inexact Rounded
-lnx0906 ln 2e-1000013                -> -2302614.333453074  Inexact Rounded
-
-lnx0910 ln 9.999999e+999999          ->  2302585.092993946  Inexact Rounded
-lnx0911 ln 9.9999999e+999999         ->  2302585.092994036  Inexact Rounded
-lnx0912 ln 9.99999999e+999999        ->  2302585.092994045  Inexact Rounded
-lnx0913 ln 9.999999999e+999999       ->  2302585.092994046  Inexact Rounded
-lnx0914 ln 9.999999999999e+999999    ->  2302585.092994046  Inexact Rounded
-lnx0915 ln 9.999999999999999e+999999 ->  2302585.092994046  Inexact Rounded
-lnx0916 ln 9.999999999999999999999999e+999999 ->  2302585.092994046  Inexact Rounded
-
--- randoms
--- P=50, within 0-999
-Precision: 50
-maxExponent: 384
-minExponent: -383
-lnx1501 ln 0.00098800906574486388604608477869812518857023768951 -> -6.9198186844033787995945147836955586009548513043689 Inexact Rounded
-lnx1502 ln 158.15866624664623070184595045304145949900714987827  -> 5.0635987458895647454907806507503825602758392287684 Inexact Rounded
-lnx1503 ln 0.00565661412059571925040285814021799775249288309321 -> -5.1749297776760632102047540300491550931651318975237 Inexact Rounded
-lnx1504 ln 0.00000006914232532620489602008402091666547903180607 -> -16.487098770877825308138976818688771638172333034347 Inexact Rounded
-lnx1505 ln 0.00025380374621297657504661540749355251231770070723 -> -8.2789492423005003205242162741569033124260321954589 Inexact Rounded
-lnx1506 ln 83.033654063877426261108592599182418953442677554806  -> 4.4192459962647137976949249810815698465031609843669 Inexact Rounded
-lnx1507 ln 0.00000000416863228092481651627734668440663678118729 -> -19.295677845122141772791294599714950175284915666430 Inexact Rounded
-lnx1508 ln 0.00000140847873187820570181214271960511080523457669 -> -13.473000349581967189668305314384952251556809480339 Inexact Rounded
-lnx1509 ln 66.176106555181527101630351127583944689752069132522  -> 4.1923194696232505883666171116966137694013431504252 Inexact Rounded
-lnx1510 ln 0.00000000000009899043487403590900111602024562297908 -> -29.943753166877840985821508112917991506656545174163 Inexact Rounded
-lnx1511 ln 0.00000000000324618296721747097510453388683912733569 -> -26.453541281444586819009546418577507163362590139422 Inexact Rounded
-lnx1512 ln 72.646968818463546449499147579023555008392860423385  -> 4.2856116660689646882852128853423566276718230426479 Inexact Rounded
-lnx1513 ln 0.00000000000000066755483124635612574263153825990523 -> -34.942910142802769319262875080398852491588707172483 Inexact Rounded
-lnx1514 ln 61.002910447202398204114909451851111424657671911002  -> 4.1109215752843377323363182051446177066434038096529 Inexact Rounded
-lnx1515 ln 917.06917611331980999227893584010544542312239174774  -> 6.8211829068303114128752453661946446979787826282907 Inexact Rounded
-lnx1516 ln 0.00000000170823794883673083358549749078972003965194 -> -20.187803436976150477297246666771626827057191023004 Inexact Rounded
-lnx1517 ln 0.53731767845358224445809761315159249898566542910649 -> -0.62116577939968409211736413628236285160048357000961 Inexact Rounded
-lnx1518 ln 0.00000000000000008965291392882804161299758708033373 -> -36.950585970980857376081265073276303670820056916206 Inexact Rounded
-lnx1519 ln 0.00000000006990244916026429904498278982530170295668 -> -23.383920429244457578373523508427783144589480420753 Inexact Rounded
-lnx1520 ln 4.0312542977070300070506064666536478373801988540614  -> 1.3940775676592451945795752796421391871302024763305 Inexact Rounded
-lnx1521 ln 271.84991311551875601432518819562391699324632396423  -> 5.6052501239873862517916679747146539808077431873478 Inexact Rounded
-lnx1522 ln 7.4118671629373864667229445746862314443895404818689  -> 2.0030823863706344628239147639318289961917060121141 Inexact Rounded
-lnx1523 ln 0.00000000000002026311452625364905357321664186034258 -> -31.529974180054438792043856877314043794320951134754 Inexact Rounded
-lnx1524 ln 0.00000000000009563398651261756952398250624737809347 -> -29.978248130576972953141284136962670021368834792579 Inexact Rounded
-lnx1525 ln 0.00000000009556772669409858653026558223465197808991 -> -23.071185939748285541228206161472956661196956741186 Inexact Rounded
-lnx1526 ln 6.8441648298027301292342057248737326152250794026761  -> 1.9233964395801946597272589473417948024361005082908 Inexact Rounded
-lnx1527 ln 0.00000000000073059699884439979394945822035704264577 -> -27.944914388353724718836101828677771967128509603158 Inexact Rounded
-lnx1528 ln 0.00000000000000002610078280419082263138064745416787 -> -38.184566367516207885573773320135965798717120735115 Inexact Rounded
-lnx1529 ln 0.00000000000000000150259517166294243088546806083283 -> -41.039337946266676108538170837580051699618334928421 Inexact Rounded
-lnx1530 ln 0.00000000000000087919160541714580707181969708502091 -> -34.667528818827671507514319744047440696187358676848 Inexact Rounded
-lnx1531 ln 0.00000000000395726725120787763271849577708068584598 -> -26.255467416961357741818735787226671938678424748431 Inexact Rounded
-lnx1532 ln 0.00000000002014334901669366218018377213150715938355 -> -24.628146955635359035289123027319969201693737159108 Inexact Rounded
-lnx1533 ln 0.00000008097927101101093117753938766241442896030637 -> -16.329072628469715178637178365710373398203190937454 Inexact Rounded
-lnx1534 ln 0.00000000000017115834162632864392039668116243984176 -> -29.396187292434898225453626794459285157263177528034 Inexact Rounded
-lnx1535 ln 0.39168317593866334087305459933723864294857086105035 -> -0.93730199062757240485836637306785037368746737693029 Inexact Rounded
-lnx1536 ln 79.335036798971515026519630103325369729637514127617  -> 4.3736798570287828823772149735170431010616961976965 Inexact Rounded
-lnx1537 ln 0.00000000000000056004952129926137413602116591493625 -> -35.118506463181870020730685884333000241039028127213 Inexact Rounded
-lnx1538 ln 0.00000006006035907843890918832481099660639553666078 -> -16.627915795747112566532705974853114454405010472043 Inexact Rounded
-lnx1539 ln 0.00000000085242024937414906371333826574632450587590 -> -20.882941460268101080186482230657774997273494107221 Inexact Rounded
-lnx1540 ln 0.00000000000043671099499262350316173246550771951561 -> -28.459504757285639221776305968469058854558726593945 Inexact Rounded
-
--- P=34, within 0-999
-Precision: 34
-lnx1201 ln 0.0086732880815927182997566810334394 -> -4.747507311920844752486938187973721 Inexact Rounded
-lnx1202 ln 0.0007104103693460260609792222569854 -> -7.249667769903503023005549250347695 Inexact Rounded
-lnx1203 ln 786.8398945385105190697541493392742  -> 6.668024790031836340471824147010546 Inexact Rounded
-lnx1204 ln 0.7723073620282687656895190171967399 -> -0.2583726708506850868786816238217326 Inexact Rounded
-lnx1205 ln 0.0061057951517197631287183938412200 -> -5.098516933918797347064454103742635 Inexact Rounded
-lnx1206 ln 0.6181379708184393730103917562498745 -> -0.4810435926903365087463387760350021 Inexact Rounded
-lnx1207 ln 09.13888261229039989110753389096760  -> 2.212538125507975574509563027696021 Inexact Rounded
-lnx1208 ln 802.0105417063143696497292158147174  -> 6.687121752052341737234832203350214 Inexact Rounded
-lnx1209 ln 778.7749710387773713523028497333058  -> 6.657722135126935472086625031413031 Inexact Rounded
-lnx1210 ln 0.0024457295895346502513567679390616 -> -6.013411799940245345321348290398517 Inexact Rounded
-lnx1211 ln 0.0000511296947872828310338864217860 -> -9.881145118237281798081573131711636 Inexact Rounded
-lnx1212 ln 0.0000246803508602554924938685155658 -> -10.60950314264825661825360971430218 Inexact Rounded
-lnx1213 ln 9.027898199253511668242977766616082  -> 2.200319582778899029786017830557293 Inexact Rounded
-lnx1214 ln 0.0991812396542505631850692800904188 -> -2.310806398964672258823043180400384 Inexact Rounded
-lnx1215 ln 0.0000000000070238810143028811223924 -> -25.68170519961636647174714538290075 Inexact Rounded
-lnx1216 ln 2.630101665342826494730394729313167  -> 0.9670225014664367465128243039749559 Inexact Rounded
-lnx1217 ln 0.0056878928594359587691526063254683 -> -5.169415422904037819736637399445096 Inexact Rounded
-lnx1218 ln 567.3436047121057843908106573095590  -> 6.340965124964258486463444360787970 Inexact Rounded
-lnx1219 ln 1.199291248124655996614605745649725  -> 0.1817307557425911805765087755675657 Inexact Rounded
-lnx1220 ln 25.02050448582031098696267479135557  -> 3.219695668137659139544178905459317 Inexact Rounded
-lnx1221 ln 0.0000000000009939597023558756961300 -> -27.63707972996537636504396558259058 Inexact Rounded
-lnx1222 ln 0.0000007988551670159429716506430403 -> -14.04008617542597230988198612376415 Inexact Rounded
-lnx1223 ln 4.681515800176129184873770605589795  -> 1.543621946415383338972124445445748 Inexact Rounded
-lnx1224 ln 15.95126669161103011206658749345781  -> 2.769538242479483539275986395443539 Inexact Rounded
-lnx1225 ln 0.0301626783922211213675457279076066 -> -3.501149933677283341023932281826341 Inexact Rounded
-lnx1226 ln 000.0040544064881821770528475185674  -> -5.507950967557021671647165889608324 Inexact Rounded
-lnx1227 ln 29.01617095935593792095913785100360  -> 3.367853293862745651888450004473297 Inexact Rounded
-lnx1228 ln 78.01836167344736733024804243195323  -> 4.356944205055768575987781375003992 Inexact Rounded
-lnx1229 ln 0.0000000096545319316965321158634893 -> -18.45583840160965814462095477365013 Inexact Rounded
-lnx1230 ln 97.95475237720579752770587185074428  -> 4.584505661612812742208619358214729 Inexact Rounded
-lnx1231 ln 528.0609262050423246402564228432371  -> 6.269211667589138113396583894315956 Inexact Rounded
-lnx1232 ln 0.0000002250064349732969696660452972 -> -15.30713683526963996712167701738724 Inexact Rounded
-lnx1233 ln 47.97063637767998658567199049725754  -> 3.870589081585660692195989854842372 Inexact Rounded
-lnx1234 ln 0.0005394311344541432318853513414361 -> -7.524995428393925934087126702974121 Inexact Rounded
-lnx1235 ln 0.0000000090973385649567471674972633 -> -18.51528393158931783447035004125791 Inexact Rounded
-lnx1236 ln 0.0000000000238776490227576197317977 -> -24.45807828188389561331158879207262 Inexact Rounded
-lnx1237 ln 0.0000236587000231921532145326218758 -> -10.65177964499823314952429277979034 Inexact Rounded
-lnx1238 ln 499.1277448846130709827154556125942  -> 6.212862064761427967461188083514774 Inexact Rounded
-lnx1239 ln 0.0000003960192300284787663712417647 -> -14.74180306619298548093697608293284 Inexact Rounded
-lnx1240 ln 41.08268350829477451667228892495136  -> 3.715586706887278039173584859218960 Inexact Rounded
-
--- P=16, within 0-99
-Precision: 16
-lnx1101 ln 7.964875261033948  -> 2.075041282352241 Inexact Rounded
-lnx1102 ln 13.54527396845394  -> 2.606037701870263 Inexact Rounded
-lnx1103 ln 0.0008026554341331 -> -7.127585034321814 Inexact Rounded
-lnx1104 ln 0.0000030582233261 -> -12.69767642300625 Inexact Rounded
-lnx1105 ln 0.0004477497509672 -> -7.711276073210766 Inexact Rounded
-lnx1106 ln 7.616268622474371  -> 2.030286567675148 Inexact Rounded
-lnx1107 ln 51.58329925806381  -> 3.943197962309569 Inexact Rounded
-lnx1108 ln 0.0018197497951263 -> -6.309056262549345 Inexact Rounded
-lnx1109 ln 2.956282457072984  -> 1.083932552334575 Inexact Rounded
-lnx1110 ln 0.3843325579189906 -> -0.9562470649400558 Inexact Rounded
-lnx1111 ln 0.0074466329265663 -> -4.899993304919237 Inexact Rounded
-lnx1112 ln 0.0003372478532993 -> -7.994692428206378 Inexact Rounded
-lnx1113 ln 0.0084792263167809 -> -4.770136069569271 Inexact Rounded
-lnx1114 ln 5.926756998151102  -> 1.779477182834305 Inexact Rounded
-lnx1115 ln 9.025699152180897  -> 2.200075969604119 Inexact Rounded
-lnx1116 ln 1.910124643533526  -> 0.6471684983238183 Inexact Rounded
-lnx1117 ln 0.8158922711411020 -> -0.2034729533939387 Inexact Rounded
-lnx1118 ln 0.0067080016475322 -> -5.004454189414139 Inexact Rounded
-lnx1119 ln 0.0047583242092716 -> -5.347859729601094 Inexact Rounded
-lnx1120 ln 0.0386647411641339 -> -3.252827175263113 Inexact Rounded
-lnx1121 ln 0.0050226427841761 -> -5.293799032774131 Inexact Rounded
-lnx1122 ln 6.927937541637261  -> 1.935562155866906 Inexact Rounded
-lnx1123 ln 0.0000095745343513 -> -11.55640365579814 Inexact Rounded
-lnx1124 ln 1.602465492956538  -> 0.4715433763243936 Inexact Rounded
-lnx1125 ln 38.98415625087535  -> 3.663155313610213 Inexact Rounded
-lnx1126 ln 5.343182042276734  -> 1.675821363568112 Inexact Rounded
-lnx1127 ln 55.89763703245816  -> 4.023522107934110 Inexact Rounded
-lnx1128 ln 0.7445257810280847 -> -0.2950077988101030 Inexact Rounded
-lnx1129 ln 1.631407314946094  -> 0.4894430257201248 Inexact Rounded
-lnx1130 ln 0.0005462451932602 -> -7.512442611116852 Inexact Rounded
-lnx1131 ln 0.0000864173269362 -> -9.356322359017317 Inexact Rounded
-lnx1132 ln 5.227161719132849  -> 1.653868438439637 Inexact Rounded
-lnx1133 ln 60.57078466941998  -> 4.103812675662452 Inexact Rounded
-lnx1134 ln 0.0992864325333160 -> -2.309746348350318 Inexact Rounded
-lnx1135 ln 09.48564268447325  -> 2.249779359074983 Inexact Rounded
-lnx1136 ln 0.0036106089355634 -> -5.623878840650787 Inexact Rounded
-lnx1137 ln 1.805176865587172  -> 0.5906585734593707 Inexact Rounded
-lnx1138 ln 62.59363259642255  -> 4.136663557220559 Inexact Rounded
-lnx1139 ln 4.373828261137201  -> 1.475638657912000 Inexact Rounded
-lnx1140 ln 0.994483524148738  -> -0.005531747794938690 Inexact Rounded
-
--- P=7, within 0-9
-Precision: 7
-lnx1001 ln 0.0912025 -> -2.394673 Inexact Rounded
-lnx1002 ln 0.9728626 -> -0.02751242 Inexact Rounded
-lnx1003 ln 0.3886032 -> -0.9451965 Inexact Rounded
-lnx1004 ln 8.798639  -> 2.174597 Inexact Rounded
-lnx1005 ln 2.459121  -> 0.8998040 Inexact Rounded
-lnx1006 ln 2.013193  -> 0.6997220 Inexact Rounded
-lnx1007 ln 9.064857  -> 2.204405 Inexact Rounded
-lnx1008 ln 5.796417  -> 1.757240 Inexact Rounded
-lnx1009 ln 0.1143471 -> -2.168517 Inexact Rounded
-lnx1010 ln 0.5341542 -> -0.6270707 Inexact Rounded
-lnx1011 ln 6.693781  -> 1.901179 Inexact Rounded
-lnx1012 ln 0.0081779 -> -4.806320 Inexact Rounded
-lnx1013 ln 8.313616  -> 2.117895 Inexact Rounded
-lnx1014 ln 3.486925  -> 1.249020 Inexact Rounded
-lnx1015 ln 0.1801401 -> -1.714020 Inexact Rounded
-lnx1016 ln 0.5227148 -> -0.6487193 Inexact Rounded
-lnx1017 ln 7.818111  -> 2.056443 Inexact Rounded
-lnx1018 ln 0.0870671 -> -2.441076 Inexact Rounded
-lnx1019 ln 8.153966  -> 2.098504 Inexact Rounded
-lnx1020 ln 2.040975  -> 0.7134276 Inexact Rounded
-lnx1021 ln 1.481642  -> 0.3931509 Inexact Rounded
-lnx1022 ln 0.2610123 -> -1.343188 Inexact Rounded
-lnx1023 ln 0.466723  -> -0.7620193 Inexact Rounded
-lnx1024 ln 0.0518756 -> -2.958907 Inexact Rounded
-lnx1025 ln 2.056410  -> 0.7209617 Inexact Rounded
-lnx1026 ln 0.181522  -> -1.706378 Inexact Rounded
-lnx1027 ln 0.515551  -> -0.6625190 Inexact Rounded
-lnx1028 ln 8.425089  -> 2.131214 Inexact Rounded
-lnx1029 ln 2.077091  -> 0.7309684 Inexact Rounded
-lnx1030 ln 6.212705  -> 1.826596 Inexact Rounded
-lnx1031 ln 5.729343  -> 1.745601 Inexact Rounded
-lnx1032 ln 4.831251  -> 1.575105 Inexact Rounded
-lnx1033 ln 2.029760  -> 0.7079176 Inexact Rounded
-lnx1034 ln 8.615060  -> 2.153512 Inexact Rounded
-lnx1035 ln 0.0611511 -> -2.794407 Inexact Rounded
-lnx1036 ln 5.195269  -> 1.647748 Inexact Rounded
-lnx1037 ln 9.617686  -> 2.263604 Inexact Rounded
-lnx1038 ln 0.0049382 -> -5.310754 Inexact Rounded
-lnx1039 ln 2.786840  -> 1.024908 Inexact Rounded
-lnx1040 ln 0.0091073 -> -4.698679 Inexact Rounded
-
--- from here 3-digit tests are based on reverse exp tests
-precision:   9
-rounding:    half_even
-maxExponent: 384
-minexponent: -383
-
-lnx001  ln 0           ->  -Infinity
-lnx002  ln 0.367879441 ->  -1.00000000    Inexact Rounded
-lnx003  ln 1           ->   0
-lnx005  ln 2.71828183  ->   1.00000000    Inexact Rounded
-lnx006  ln 2.00000000  ->   0.693147181   Inexact Rounded
-lnx007  ln +Infinity   ->   Infinity
-
--- tiny edge cases
-precision:   7
-lnx011  ln 1.105171 ->  0.1000001       Inexact Rounded
-lnx012  ln 1.010050 ->  0.009999835     Inexact Rounded
-lnx013  ln 1.000010 ->  0.000009999950  Inexact Rounded
-lnx014  ln 1.000001 ->  9.999995E-7     Inexact Rounded
-lnx015  ln 1.000000 ->  0
-
--- basic e=0, e=1, e=2, e=4, e>=8 cases
-precision:   7
-lnx041  ln 2.718282      ->  1.000000    Inexact Rounded
-lnx042  ln 0.3678794     -> -1.000000    Inexact Rounded
-lnx043  ln 22026.47      ->  10.00000    Inexact Rounded
-lnx044  ln 0.00004539993 -> -10.00000    Inexact Rounded
-lnx045  ln 2.688117E+43  ->  100.0000    Inexact Rounded
-lnx046  ln 3.720076E-44  -> -100.0000    Inexact Rounded
-lnx047  ln Infinity      ->  Infinity
-lnx048  ln 0E-389        -> -Infinity
-
--- miscellanea
-precision: 16
-lnx055  ln 2.717658486884572E-236     -> -542.4103112874415       Inexact Rounded
-precision: 17
-lnx056  ln 2.7176584868845721E-236    -> -542.41031128744146      Inexact Rounded
-precision: 18
-lnx057  ln 2.71765848688457211E-236   -> -542.410311287441459     Inexact Rounded
-precision: 19
-lnx058  ln 2.717658486884572112E-236  -> -542.4103112874414592    Inexact Rounded
-precision: 20
-lnx059  ln 2.7176584868845721118E-236 -> -542.41031128744145917   Inexact Rounded
-
--- inputs ending in ..500.., ..499.., ..100.., ..999.. sequences
-precision:   50
-lnx102  ln 0.9999999100000040499998785000027 -> -9.0000000000000000000000033749953829996446124861750E-8  Inexact Rounded
-precision:   30
-lnx103  ln 0.999999910000004049999878500003 -> -8.99999999999999999999997337499E-8   Inexact Rounded
-precision:   29
-lnx104  ln 0.99999991000000404999987850000 -> -9.0000000000000000000002733750E-8    Inexact Rounded
-precision:   28
-lnx105  ln 0.9999999100000040499998785000 -> -9.000000000000000000000273375E-8     Inexact Rounded
-precision:   27
-lnx106  ln 0.999999910000004049999878500 -> -9.00000000000000000000027338E-8      Inexact Rounded
-precision:   26
-lnx107  ln 0.99999991000000404999987850 -> -9.0000000000000000000002734E-8       Inexact Rounded
-precision:   25
-lnx108  ln 0.9999999100000040499998785 -> -9.000000000000000000000273E-8        Inexact Rounded
-precision:   24
-lnx109  ln 0.999999910000004049999879 -> -8.99999999999999995000027E-8         Inexact Rounded
-precision:   23
-lnx110  ln 0.99999991000000404999988 -> -8.9999999999999998500003E-8          Inexact Rounded
-precision:   22
-lnx111  ln 0.9999999100000040499999 -> -8.999999999999997850000E-8           Inexact Rounded
-precision:   21
-lnx112  ln 0.999999910000004050000 -> -8.99999999999998785000E-8            Inexact Rounded
-precision:   20
-lnx113  ln 0.99999991000000405000 -> -8.9999999999999878500E-8             Inexact Rounded
-precision:   19
-lnx114  ln 0.9999999100000040500 -> -8.999999999999987850E-8              Inexact Rounded
-precision:   18
-lnx115  ln 0.999999910000004050 -> -8.99999999999998785E-8               Inexact Rounded
--- next may be a > 0.5ulp case; a more precise answer is:
---                                -8.99999999999998784999918E-8
-precision:   17
-lnx116  ln 0.99999991000000405 -> -8.9999999999999878E-8               Inexact Rounded
-precision:   16
-lnx117  ln 0.9999999100000040 -> -9.000000004999988E-8               Inexact Rounded
-precision:   15
-lnx118  ln 0.999999910000004 -> -9.00000000499999E-8            Inexact Rounded
-precision:   14
-lnx119  ln 0.99999991000000 -> -9.0000004050000E-8                  Inexact Rounded
-precision:   13
-lnx120  ln 0.9999999100000 -> -9.000000405000E-8       Inexact Rounded
-precision:   12
-lnx121  ln 0.999999910000 -> -9.00000040500E-8        Inexact Rounded
-precision:   11
-lnx122  ln 0.99999991000 -> -9.0000004050E-8         Inexact Rounded
-precision:   10
-lnx123  ln 0.9999999100 -> -9.000000405E-8          Inexact Rounded
-precision:    9
-lnx124  ln 0.999999910 -> -9.00000041E-8           Inexact Rounded
-precision:    8
-lnx125  ln 0.99999991 -> -9.0000004E-8            Inexact Rounded
-precision:    7
-lnx126  ln 0.9999999 -> -1.000000E-7                   Inexact Rounded
-precision:   16
-lnx126b ln 0.9999999 -> -1.000000050000003E-7          Inexact Rounded
-precision:    6
-lnx127  ln 0.999999 -> -0.00000100000                  Inexact Rounded
-precision:    5
-lnx128  ln 0.99999 -> -0.000010000                     Inexact Rounded
-precision:    4
-lnx129  ln 0.9999 -> -0.0001000                        Inexact Rounded
-precision:    3
-lnx130  ln 0.999 -> -0.00100                           Inexact Rounded
-precision:    2
-lnx131  ln 0.99 -> -0.010                              Inexact Rounded
-precision:    1
-lnx132  ln 0.9 -> -0.1                                 Inexact Rounded
-
-
--- cases near 1              --  1 2345678901234567890
-precision:    20
-lnx401  ln 2.7182818284589365041 -> 0.99999999999996000000 Inexact Rounded
-lnx402  ln 2.7182818284589636869 -> 0.99999999999997000000 Inexact Rounded
-lnx403  ln 2.7182818284589908697 -> 0.99999999999997999999 Inexact Rounded
-lnx404  ln 2.7182818284590180525 -> 0.99999999999998999998 Inexact Rounded
-lnx405  ln 2.7182818284590452354 -> 1.0000000000000000000  Inexact Rounded
-lnx406  ln 2.7182818284593170635 -> 1.0000000000001000000  Inexact Rounded
-lnx407  ln 2.7182818284595888917 -> 1.0000000000002000000  Inexact Rounded
-precision:    14
-lnx411  ln 2.7182818284589 -> 0.99999999999995    Inexact Rounded
-lnx413  ln 2.7182818284590 -> 0.99999999999998    Inexact Rounded
-lnx416  ln 2.7182818284591 -> 1.0000000000000     Inexact Rounded
-lnx417  ln 2.7182818284592 -> 1.0000000000001     Inexact Rounded
-
--- overflows, including some exp overprecise borderlines
-precision:   7
-maxExponent: 384
-minExponent: -383
-lnx709  ln 9.999999E+384 ->  886.4953     Inexact Rounded
-lnx711  ln 9.999992E+384 ->  886.4953     Inexact Rounded
-precision:   16
-lnx722  ln 9.999999999999999E+384 ->  886.4952608027076     Inexact Rounded
-lnx724  ln 9.999999999999917E+384 ->  886.4952608027076     Inexact Rounded
-lnx726  ln 9.999999999999117E+384 ->  886.4952608027075     Inexact Rounded
--- and more...
-precision:   15
-maxExponent: 999
-minExponent: -999
-lnx731  ln 9.99999999999999E+999 -> 2302.58509299405       Inexact Rounded
--- next may be a > 0.5ulp case; a more precise answer is:
---                                  2302.58509299404495001799145442
-lnx732  ln 9.99999999999266E+999 -> 2302.58509299404       Inexact Rounded
-lnx733  ln 9.99999999999265E+999 -> 2302.58509299404       Inexact Rounded
-lnx734  ln 9.99999999999264E+999 -> 2302.58509299404       Inexact Rounded
-
--- subnormals and underflows for exp, including underflow-to-zero edge point
-precision:   7
-maxExponent: 384
-minExponent: -383
-lnx751  ln 0E-389 -> -Infinity
-lnx758  ln 1.000001E-383 -> -881.8901      Inexact Rounded
-lnx759  ln 9.99991E-384 -> -881.8901       Inexact Rounded
-lnx760  ln 4.4605E-385 -> -885.0000        Inexact Rounded
-lnx761  ln 2.221E-386 -> -887.9999         Inexact Rounded
-lnx762  ln 3.01E-387 -> -889.9985          Inexact Rounded
-lnx763  ln 1.7E-388 -> -892.8724           Inexact Rounded
-lnx764  ln 1.5E-388 -> -892.9976           Inexact Rounded
-lnx765  ln 9E-389 -> -893.5084             Inexact Rounded
-lnx766  ln 1E-389 -> -895.7056             Inexact Rounded
-lnx774  ln 0E-389 -> -Infinity
-
--- special values
-lnx820  ln Infinity ->   Infinity
-lnx821  ln 0        ->  -Infinity
-lnx822  ln NaN      ->   NaN
-lnx823  ln sNaN     ->   NaN     Invalid_operation
--- propagating NaNs
-lnx824  ln sNaN123  ->   NaN123  Invalid_operation
-lnx825  ln -sNaN321 ->  -NaN321  Invalid_operation
-lnx826  ln NaN456   ->   NaN456
-lnx827  ln -NaN654  ->  -NaN654
-lnx828  ln NaN1     ->   NaN1
-
--- Invalid operations due to restrictions
--- [next two probably skipped by most test harnesses]
-precision: 100000000
-lnx901  ln 1 ->  NaN            Invalid_context
-precision:  99999999
-lnx902  ln 0 ->  NaN            Invalid_context
-
-precision: 9
-maxExponent:   1000000
-minExponent:   -999999
-lnx903  ln 1   ->  NaN          Invalid_context
-maxExponent:    999999
-minExponent:   -999999
-lnx904  ln 0 ->  -Infinity
-maxExponent:    999999
-minExponent:  -1000000
-lnx905  ln 1   ->  NaN          Invalid_context
-maxExponent:    999999
-minExponent:   -999998
-lnx906  ln 0 ->  -Infinity
-
--- payload decapitate
-precision: 5
-lnx910  ln -sNaN1234567890 -> -NaN67890  Invalid_operation
-
--- Null test
-lnx900  ln #   -> NaN Invalid_operation
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/log10.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/log10.decTest
deleted file mode 100644
index 5169eab..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/log10.decTest
+++ /dev/null
@@ -1,551 +0,0 @@
-------------------------------------------------------------------------
--- log10.decTest -- decimal logarithm in base 10                      --
--- Copyright (c) IBM Corporation, 2005, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This emphasises the testing of notable cases, as they will often
--- have unusual paths (especially the 10**n results).
-
-extended:    1
-precision:   16
-rounding:    half_even
-maxExponent: 384
-minexponent: -383
-
--- examples in specification
-precision:   9
-logxs000 log10  0                 -> -Infinity
-logxs001 log10  0.001             -> -3
-logxs002 log10  1                 ->  0
-logxs003 log10  2                 ->  0.301029996         Inexact Rounded
-logxs004 log10  10                ->  1
-logxs005 log10  70                ->  1.84509804          Inexact Rounded
-logxs006 log10 +Infinity          ->  Infinity
-
-
--- basics (examples in specification, etc.)
-precision:   16
-logx0000 log10  0                 -> -Infinity
-logx0001 log10  7E-1000           -> -999.1549019599857   Inexact Rounded
-logx0002 log10  1.1E-9            -> -8.958607314841775   Inexact Rounded
-logx0003 log10  0.0007            -> -3.154901959985743   Inexact Rounded
-logx0004 log10  0.11              -> -0.9586073148417750  Inexact Rounded
-logx0005 log10  0.7               -> -0.1549019599857432  Inexact Rounded
-logx0006 log10  1                 ->  0
-logx0007 log10  1.5               ->  0.1760912590556812  Inexact Rounded
-logx0008 log10  2                 ->  0.3010299956639812  Inexact Rounded
-logx0009 log10  2.718281828459045 ->  0.4342944819032518  Inexact Rounded
-logx0010 log10  2.718281828459046 ->  0.4342944819032519  Inexact Rounded
-logx0011 log10  2.718281828459047 ->  0.4342944819032521  Inexact Rounded
-logx0012 log10  7                 ->  0.8450980400142568  Inexact Rounded
-logx0013 log10  10                ->  1
-logx0014 log10  10.5              ->  1.021189299069938   Inexact Rounded
-logx0015 log10  11                ->  1.041392685158225   Inexact Rounded
-logx0016 log10  70                ->  1.845098040014257   Inexact Rounded
-logx0017 log10  9999              ->  3.999956568380192   Inexact Rounded
-logx0018 log10  1.21E6            ->  6.082785370316450   Inexact Rounded
-logx0019 log10  1.1E+9            ->  9.041392685158225   Inexact Rounded
-logx0020 log10  7E+1000           ->  1000.845098040014   Inexact Rounded
-logx0021 log10 +Infinity          ->  Infinity
-
--- notable cases
--- negatives
-logx0031 log10 -1E-9              -> NaN Invalid_operation
-logx0032 log10 -0.0007            -> NaN Invalid_operation
-logx0033 log10 -0.1               -> NaN Invalid_operation
-logx0034 log10 -0.7               -> NaN Invalid_operation
-logx0035 log10 -1                 -> NaN Invalid_operation
-logx0036 log10 -1.5               -> NaN Invalid_operation
-logx0037 log10 -2                 -> NaN Invalid_operation
-logx0038 log10 -10.5              -> NaN Invalid_operation
-logx0039 log10 -10.5              -> NaN Invalid_operation
-logx0040 log10 -9999              -> NaN Invalid_operation
-logx0041 log10 -10                -> NaN Invalid_operation
-logx0042 log10 -0                 -> -Infinity
-logx0043 log10 -0E+17             -> -Infinity
-logx0044 log10 -0E-17             -> -Infinity
--- other zeros
-logx0051 log10  0                 -> -Infinity
-logx0052 log10  0E+17             -> -Infinity
-logx0053 log10  0E-17             -> -Infinity
--- infinities
-logx0055 log10 -Infinity          -> NaN Invalid_operation
-logx0056 log10 +Infinity          -> Infinity
--- ones
-logx0061 log10  1                 ->   0
-logx0062 log10  1.0               ->   0
-logx0063 log10  1.000000000000000 ->   0
-logx0064 log10  1.000000000000000000 ->   0
-
--- notable cases -- exact powers of 10
-logx1100 log10 1             -> 0
-logx1101 log10 10            -> 1
-logx1102 log10 100           -> 2
-logx1103 log10 1000          -> 3
-logx1104 log10 10000         -> 4
-logx1105 log10 100000        -> 5
-logx1106 log10 1000000       -> 6
-logx1107 log10 10000000      -> 7
-logx1108 log10 100000000     -> 8
-logx1109 log10 1000000000    -> 9
-logx1110 log10 10000000000   -> 10
-logx1111 log10 100000000000  -> 11
-logx1112 log10 1000000000000 -> 12
-logx1113 log10 0.00000000001 -> -11
-logx1114 log10 0.0000000001 -> -10
-logx1115 log10 0.000000001 -> -9
-logx1116 log10 0.00000001 -> -8
-logx1117 log10 0.0000001 -> -7
-logx1118 log10 0.000001 -> -6
-logx1119 log10 0.00001 -> -5
-logx1120 log10 0.0001 -> -4
-logx1121 log10 0.001 -> -3
-logx1122 log10 0.01 -> -2
-logx1123 log10 0.1 -> -1
-logx1124 log10 1E-99  -> -99
-logx1125 log10 1E-100 -> -100
-logx1126 log10 1E-383 -> -383
-
--- check normally exact cases round properly
-precision: 1
-logx1141 log10 10000000000   -> 1E+1         Rounded
-logx1142 log10 1000000000000 -> 1E+1 Inexact Rounded
-logx1143 log10 1E+100        -> 1E+2         Rounded
-logx1144 log10 1E+123        -> 1E+2 Inexact Rounded
-logx1145 log10 1E+126        -> 1E+2 Inexact Rounded
-logx1146 log10 1E+916        -> 9E+2 Inexact Rounded
-logx1147 log10 1E+999        -> 1E+3 Inexact Rounded
-
-precision: 2
-logx1151 log10 10000000000   -> 10
-logx1152 log10 1000000000000 -> 12
-logx1153 log10 1E+100        -> 1.0E+2         Rounded
-logx1154 log10 1E+123        -> 1.2E+2 Inexact Rounded
-logx1155 log10 1E+126        -> 1.3E+2 Inexact Rounded
-logx1156 log10 1E+916        -> 9.2E+2 Inexact Rounded
-logx1157 log10 1E+999        -> 1.0E+3 Inexact Rounded
--- some half-way point rounds, other cases, and negatives
-logx1158 log10 1E+125        -> 1.2E+2 Inexact Rounded
-logx1159 log10 1E+135        -> 1.4E+2 Inexact Rounded
-logx1160 log10 1E+129        -> 1.3E+2 Inexact Rounded
-logx1161 log10 1E+131        -> 1.3E+2 Inexact Rounded
-logx1162 log10 1E-123        -> -1.2E+2 Inexact Rounded
-logx1163 log10 1E-126        -> -1.3E+2 Inexact Rounded
-logx1164 log10 1E-916        -> -9.2E+2 Inexact Rounded
-logx1165 log10 1E-999        -> -1.0E+3 Inexact Rounded
-logx1166 log10 1E-125        -> -1.2E+2 Inexact Rounded
-logx1167 log10 1E-135        -> -1.4E+2 Inexact Rounded
-logx1168 log10 1E-129        -> -1.3E+2 Inexact Rounded
-logx1169 log10 1E-131        -> -1.3E+2 Inexact Rounded
-
-precision: 3
-logx1171 log10 10000000000   -> 10
-logx1172 log10 1000000000000 -> 12
-logx1173 log10 1E+100        -> 100
-logx1174 log10 1E+123        -> 123
-logx1175 log10 1E+126        -> 126
-logx1176 log10 1E+916        -> 916
-logx1177 log10 1E+999        -> 999
-
--- log10(2) .. tests both ln(2) and ln(10) constants, too
-precision: 50
-logx1201 log10 2     -> 0.30102999566398119521373889472449302676818988146211 Inexact Rounded
-logx1202 log10 2.000 -> 0.30102999566398119521373889472449302676818988146211 Inexact Rounded
-logx1203 log10 0.2E1 -> 0.30102999566398119521373889472449302676818988146211 Inexact Rounded
-precision: 49
-logx1204 log10 2 -> 0.3010299956639811952137388947244930267681898814621 Inexact Rounded
-precision: 48
-logx1205 log10 2 -> 0.301029995663981195213738894724493026768189881462  Inexact Rounded
-precision: 47
-logx1206 log10 2 -> 0.30102999566398119521373889472449302676818988146   Inexact Rounded
-precision: 46
-logx1207 log10 2 -> 0.3010299956639811952137388947244930267681898815    Inexact Rounded
-precision: 45
-logx1208 log10 2 -> 0.301029995663981195213738894724493026768189881     Inexact Rounded
-precision: 44
-logx1209 log10 2 -> 0.30102999566398119521373889472449302676818988      Inexact Rounded
-precision: 43
-logx1210 log10 2 -> 0.3010299956639811952137388947244930267681899       Inexact Rounded
-precision: 42
-logx1211 log10 2 -> 0.301029995663981195213738894724493026768190        Inexact Rounded
-precision: 41
-logx1212 log10 2 -> 0.30102999566398119521373889472449302676819         Inexact Rounded
-precision: 40
-logx1213 log10 2 -> 0.3010299956639811952137388947244930267682          Inexact Rounded
-precision: 39
-logx1214 log10 2 -> 0.301029995663981195213738894724493026768           Inexact Rounded
-precision: 38
-logx1215 log10 2 -> 0.30102999566398119521373889472449302677            Inexact Rounded
-precision: 37
-logx1216 log10 2 -> 0.3010299956639811952137388947244930268             Inexact Rounded
-precision: 36
-logx1217 log10 2 -> 0.301029995663981195213738894724493027              Inexact Rounded
-precision: 35
-logx1218 log10 2 -> 0.30102999566398119521373889472449303               Inexact Rounded
-precision: 34
-logx1219 log10 2 -> 0.3010299956639811952137388947244930                Inexact Rounded
-precision: 33
-logx1220 log10 2 -> 0.301029995663981195213738894724493                 Inexact Rounded
-precision: 32
-logx1221 log10 2 -> 0.30102999566398119521373889472449                  Inexact Rounded
-precision: 31
-logx1222 log10 2 -> 0.3010299956639811952137388947245                   Inexact Rounded
-precision: 30
-logx1223 log10 2 -> 0.301029995663981195213738894724                    Inexact Rounded
-precision: 29
-logx1224 log10 2 -> 0.30102999566398119521373889472                     Inexact Rounded
-precision: 28
-logx1225 log10 2 -> 0.3010299956639811952137388947                      Inexact Rounded
-precision: 27
-logx1226 log10 2 -> 0.301029995663981195213738895                       Inexact Rounded
-precision: 26
-logx1227 log10 2 -> 0.30102999566398119521373889                        Inexact Rounded
-precision: 25
-logx1228 log10 2 -> 0.3010299956639811952137389                         Inexact Rounded
-precision: 24
-logx1229 log10 2 -> 0.301029995663981195213739                          Inexact Rounded
-precision: 23
-logx1230 log10 2 -> 0.30102999566398119521374                           Inexact Rounded
-precision: 22
-logx1231 log10 2 -> 0.3010299956639811952137                            Inexact Rounded
-precision: 21
-logx1232 log10 2 -> 0.301029995663981195214                             Inexact Rounded
-precision: 20
-logx1233 log10 2 -> 0.30102999566398119521                              Inexact Rounded
-precision: 19
-logx1234 log10 2 -> 0.3010299956639811952                               Inexact Rounded
-precision: 18
-logx1235 log10 2 -> 0.301029995663981195                                Inexact Rounded
-precision: 17
-logx1236 log10 2 -> 0.30102999566398120                                 Inexact Rounded
-precision: 16
-logx1237 log10 2 -> 0.3010299956639812                                  Inexact Rounded
-precision: 15
-logx1238 log10 2 -> 0.301029995663981                                   Inexact Rounded
-precision: 14
-logx1239 log10 2 -> 0.30102999566398                                    Inexact Rounded
-precision: 13
-logx1240 log10 2 -> 0.3010299956640                                     Inexact Rounded
-precision: 12
-logx1241 log10 2 -> 0.301029995664                                      Inexact Rounded
-precision: 11
-logx1242 log10 2 -> 0.30102999566                                       Inexact Rounded
-precision: 10
-logx1243 log10 2 -> 0.3010299957                                        Inexact Rounded
-precision:  9
-logx1244 log10 2 -> 0.301029996                                         Inexact Rounded
-precision:  8
-logx1245 log10 2 -> 0.30103000                                          Inexact Rounded
-precision:  7
-logx1246 log10 2 -> 0.3010300                                           Inexact Rounded
-precision:  6
-logx1247 log10 2 -> 0.301030                                            Inexact Rounded
-precision:  5
-logx1248 log10 2 -> 0.30103                                             Inexact Rounded
-precision:  4
-logx1249 log10 2 -> 0.3010                                              Inexact Rounded
-precision:  3
-logx1250 log10 2 -> 0.301                                               Inexact Rounded
-precision:  2
-logx1251 log10 2 -> 0.30                                                Inexact Rounded
-precision:  1
-logx1252 log10 2 -> 0.3                                                 Inexact Rounded
-
-maxExponent: 384
-minExponent: -383
-precision:   16
-rounding:    half_even
-
--- More close-to-e, etc., tests
-precision:   34
-logx1301 log10 2.718281828459045235360287471352661  -> 0.4342944819032518276511289189166048 Inexact Rounded
-logx1302 log10 2.718281828459045235360287471352662  -> 0.4342944819032518276511289189166050 Inexact Rounded
-logx1303 log10 2.718281828459045235360287471352663  -> 0.4342944819032518276511289189166052 Inexact Rounded
-logx1304 log10 0.99999999999999999999999999999999   -> -4.342944819032518276511289189166073E-33 Inexact Rounded
-logx1305 log10 0.999999999999999999999999999999999  -> -4.342944819032518276511289189166053E-34 Inexact Rounded
-logx1306 log10 0.9999999999999999999999999999999999 -> -4.342944819032518276511289189166051E-35 Inexact Rounded
-logx1307 log10 1.000000000000000000000000000000000  -> 0
-logx1308 log10 1.0000000000000000000000000000000001 -> 4.342944819032518276511289189166051E-35 Inexact Rounded
-logx1309 log10 1.000000000000000000000000000000001  -> 4.342944819032518276511289189166049E-34 Inexact Rounded
-logx1310 log10 1.00000000000000000000000000000001   -> 4.342944819032518276511289189166029E-33 Inexact Rounded
--- lower p
-precision:    7
-logx1320 log10 0.999999    -> -4.342947E-7  Inexact Rounded
-logx1321 log10 0.9999999   -> -4.342945E-8  Inexact Rounded
-logx1322 log10 0.99999999  -> -4.342945E-9  Inexact Rounded
-logx1323 log10 0.999999999 -> -4.342945E-10 Inexact Rounded
-logx1324 log10 1.00000000  ->  0
-logx1325 log10 1.00000001  ->  4.342945E-9  Inexact Rounded
-logx1326 log10 1.0000001   ->  4.342945E-8  Inexact Rounded
-logx1327 log10 1.000001    ->  4.342943E-7  Inexact Rounded
-
--- near 10^3
-precision:   9
-logx1331 log10  999.9999998  -> 3.00000000 Inexact Rounded
-logx1332 log10  999.9999999  -> 3.00000000 Inexact Rounded
-logx1333 log10 1000.000000   -> 3
-logx1334 log10 1000.000001   -> 3.00000000 Inexact Rounded
-logx1335 log10 1000.000002   -> 3.00000000 Inexact Rounded
-precision: 16
-logx1341 log10  999.9999998  -> 2.999999999913141 Inexact Rounded
-logx1342 log10  999.9999999  -> 2.999999999956571 Inexact Rounded
-logx1343 log10 1000.000000   -> 3
-logx1344 log10 1000.000001   -> 3.000000000434294 Inexact Rounded
-logx1345 log10 1000.000002   -> 3.000000000868589 Inexact Rounded
-
--- suggestions from Ilan Nehama
-logx1400 log10 10E-3    -> -2
-logx1401 log10 10E-2    -> -1
-logx1402 log10 100E-2   ->  0
-logx1403 log10 1000E-2  ->  1
-logx1404 log10 10000E-2 ->  2
-logx1405 log10 10E-1    ->  0
-logx1406 log10 100E-1   ->  1
-logx1407 log10 1000E-1  ->  2
-logx1408 log10 10000E-1 ->  3
-logx1409 log10 10E0     ->  1
-logx1410 log10 100E0    ->  2
-logx1411 log10 1000E0   ->  3
-logx1412 log10 10000E0  ->  4
-logx1413 log10 10E1     ->  2
-logx1414 log10 100E1    ->  3
-logx1415 log10 1000E1   ->  4
-logx1416 log10 10000E1  ->  5
-logx1417 log10 10E2     ->  3
-logx1418 log10 100E2    ->  4
-logx1419 log10 1000E2   ->  5
-logx1420 log10 10000E2  ->  6
-
--- Randoms
--- P=50, within 0-9999
-Precision: 50
-logx2501 log10 0.00035448001667968141775891246991912655961163345904 ->  -3.4504082425411775290864053318247274944685586188505 Inexact Rounded
-logx2502 log10 70.636455726424311228255338637935330826995136597644  ->   1.8490288998408492045793070255302335558140975719247 Inexact Rounded
-logx2503 log10 0.00000000000000233550362473821889060812804063040169 -> -14.631619454343834858023578299142866557717904223667 Inexact Rounded
-logx2504 log10 97.783628621523244679901260358286898958832135433764  ->   1.9902661493224219517897657964362571690592734407330 Inexact Rounded
-logx2505 log10 0062.2377135315858392802612812022807838599572017342  ->   1.7940536293085066199287632725026837018486533544141 Inexact Rounded
-logx2506 log10 6.3767634652071053619977602804724129652981747879532  ->   0.80460030789825961615100163576080761326857374098644 Inexact Rounded
-logx2507 log10 63.297088981313278529306533814195068850532666658798  ->   1.8013837373724427092417170149098614410849353839673 Inexact Rounded
-logx2508 log10 0.00000077239693316881797717820110898167721602299187 ->  -6.1121594592718550613773886241951966264826760310047 Inexact Rounded
-logx2509 log10 0.00000003953580359780185534830572461922527831395002 ->  -7.4030094293833847136252547069905477213541787177561 Inexact Rounded
-logx2510 log10 754.62905817369989169188998111527272688791544577204  ->   2.8777335243761300047758534304371912099958057545416 Inexact Rounded
-logx2511 log10 0.00000048360378410241428936607147056283282849158312 ->  -6.3155103095309353457604038397980091650760346334512 Inexact Rounded
-logx2512 log10 0.00007509037583645612577196104591672080542932166089 ->  -4.1244157219700166314012344705538088030592896111026 Inexact Rounded
-logx2513 log10 0.00000000000705475944638915053419839063567898092064 -> -11.151517790256466048553810002525868198178167950377 Inexact Rounded
-logx2514 log10 9.6210300460497657917445410947099633479609165120661  ->   0.98322157093260978206633922877716078683518617768411 Inexact Rounded
-logx2515 log10 0.00000000050150361386555527496607245976120864985611 ->  -9.2997259330798261040411086835563234390934934629340 Inexact Rounded
-logx2516 log10 098.24754029731994125797723545333677604490074810751  ->   1.9923216862874337077795278629351060819105679670633 Inexact Rounded
-logx2517 log10 7.5091998150046994320441463854301624742491015752980  ->   0.87559366078005924080766469158763499725414024128781 Inexact Rounded
-logx2518 log10 0.00000000000079540571273330075193668596942268542425 -> -12.099411294165176028817305108475326325006250936963 Inexact Rounded
-logx2519 log10 0.00000042395034799555215782907515074134154915491701 ->  -6.3726850039125381134069450802108893075604464135297 Inexact Rounded
-logx2520 log10 56.683376304674355481905023145238799909301732694982  ->   1.7534557107853480435703421826077606250636580091754 Inexact Rounded
-logx2521 log10 48.734033811444195070807606721517169810438049581227  ->   1.6878323602741065190942654710049433808208291564049 Inexact Rounded
-logx2522 log10 0.00074830310930046865009851706989430228561880221063 ->  -3.1259224502209974082223667712016445572431791920618 Inexact Rounded
-logx2523 log10 36.677348885111593384020836720396262497122708598359  ->   1.5643979364260796086754530282302605477567469395425 Inexact Rounded
-logx2524 log10 0.00000000000000004495678560480432858812419145833744 -> -16.347204748239740510014320630363244015916029619561 Inexact Rounded
-logx2525 log10 9509.5854013650642799374159131940108748594774307104  ->   3.9781615829916326741100166519726824430945406302661 Inexact Rounded
-logx2526 log10 0.07834891268689177014044454793608715276615743819097 ->  -1.1059670262197643147805517398621288897669876996348 Inexact Rounded
-logx2527 log10 0.00000029584529880706128444454688454999032801904794 ->  -6.5289353275814043710076526920566721570375026917206 Inexact Rounded
-logx2528 log10 3.0713496544497618098794332787772186176981011904294  ->   0.48732926103896828546424341029492468100431414072994 Inexact Rounded
-logx2529 log10 352.66392670788816474407442785460803833927136413943  ->   2.5473610388199562714709836398243933320284077008314 Inexact Rounded
-logx2530 log10 0.00304743125181876267210516527361742185617091801650 ->  -2.5160660830163981967774124745311497447050056400207 Inexact Rounded
-logx2531 log10 0.00000076120535894952136499250364604538117729437183 ->  -6.1184981629047051532448413863950776496652483019415 Inexact Rounded
-logx2532 log10 769.88795978534353052965286195053735007473187735815  ->   2.8864275277862652709986498581064117950288798222100 Inexact Rounded
-logx2533 log10 0.00000000000000041297494808612226304619570016336188 -> -15.384076292745415917510668454361868659468669804710 Inexact Rounded
-logx2534 log10 860.88864595714426940247940960258558876903741966974  ->   2.9349469800554277915920278090647283233440859155176 Inexact Rounded
-logx2535 log10 5839.0328812994787235900178587371051096898683972444  ->   3.7663409208972392569269125539438874737147906238543 Inexact Rounded
-logx2536 log10 0.00000028532710151284840471670497112821201598377841 ->  -6.5446569753514027675878879843238065488490618159490 Inexact Rounded
-logx2537 log10 0.00000000000000009734490059931638483445631835651581 -> -16.011686794011271135978633880864278692254243106931 Inexact Rounded
-logx2538 log10 5.8610949526439529489252302463450302981511714144330  ->   0.76797875722452549281028552067645732490929361952278 Inexact Rounded
-logx2539 log10 6.6282432221115923372151148990137179611977576327206  ->   0.82139843639227213211012044000785757267155736071361 Inexact Rounded
-logx2540 log10 0.00000000001994071862386846626954819923923344413454 -> -10.700259194632339980266559224447212260115021637626 Inexact Rounded
-
--- P=34, within 0-9999
-Precision: 34
-logx2201 log10 1.522513203889714179088327328864183  -> 0.1825610677098896250496651330492109 Inexact Rounded
-logx2202 log10 0.171123774769717316154080888930404  -> -0.7666896483548462582461898092764408 Inexact Rounded
-logx2203 log10 0.0000000997467236251714283104963838 -> -7.001101360652518274271569010312115 Inexact Rounded
-logx2204 log10 0.0008856103624122479769647543468633 -> -3.052757310476070891830490327138190 Inexact Rounded
-logx2205 log10 1.938274868738032930709498221236758  -> 0.2874153648259449520201536171714594 Inexact Rounded
-logx2206 log10 479.5667847823826713082613445010097  -> 2.680849095850361068709165157286435 Inexact Rounded
-logx2207 log10 8856.136599178820202141823157336804  -> 3.947244306584767101480454261950559 Inexact Rounded
-logx2208 log10 0.0000911026318801903982642871344858 -> -4.040469076434979398438617464033826 Inexact Rounded
-logx2209 log10 0.0000000000017271112650427414732630 -> -11.76267968314038748995178212654921 Inexact Rounded
-logx2210 log10 6.962605370078885647639503548229695  -> 0.8427717807200322352686396925992250 Inexact Rounded
-logx2211 log10 0.3354804428992793132855923541692781 -> -0.4743327923012159170967636070844834 Inexact Rounded
-logx2212 log10 2.079864257474859008252165836663504  -> 0.3180349916198059046812506741388856 Inexact Rounded
-logx2213 log10 2805.479529292939499220276986621988  -> 3.448007104139974344565978780624744 Inexact Rounded
-logx2214 log10 66.45731133034187374557028537213949  -> 1.822542767005644041661520936223086 Inexact Rounded
-logx2215 log10 0.0000001206521261762681738274822835 -> -6.918465020390216969561494755767318 Inexact Rounded
-logx2216 log10 0.0000000001884891916264401160472381 -> -9.724713548119065386091933007528633 Inexact Rounded
-logx2217 log10 0.0000015467279551726326581314582759 -> -5.810586065070435383755759514608738 Inexact Rounded
-logx2218 log10 0.0090776316728068586744633914135952 -> -2.042027442843745884503280954390114 Inexact Rounded
-logx2219 log10 0.0000000000024541106528713393740030 -> -11.61010585935635713090119156069479 Inexact Rounded
-logx2220 log10 14.12936879385863410081087750645856  -> 1.150122760895466989841057385742662 Inexact Rounded
-logx2221 log10 0.0000036912481831392922922647231392 -> -5.432826753789892283556211380824203 Inexact Rounded
-logx2222 log10 0.0000000004067477525420424270138734 -> -9.390674838050073122857868012475060 Inexact Rounded
-logx2223 log10 7080.122562705399744969319589806194  -> 3.850040775747103318724330047546916 Inexact Rounded
-logx2224 log10 261.3491411363679209175524790255725  -> 2.417221077227536319655699517530855 Inexact Rounded
-logx2225 log10 003.9945581449915240094728380041494  -> 0.6014687471531988260823066997845691 Inexact Rounded
-logx2226 log10 0.0000000000583549164588495206767840 -> -10.23392254834182677023231713519341 Inexact Rounded
-logx2227 log10 9567.961832607240278342761088487484  -> 3.980819434211107631569386147016368 Inexact Rounded
-logx2228 log10 06.26592979160342972777219828867033  -> 0.7969855243966221408595024012574729 Inexact Rounded
-logx2229 log10 0.0000000000589847046598067273287319 -> -10.22926059078206218717755253582907 Inexact Rounded
-logx2230 log10 567.9388648235589204769442863724997  -> 2.754301589058313576472380262907638 Inexact Rounded
-logx2231 log10 039.7790325480037778918162264883415  -> 1.599654216592019199639285308997886 Inexact Rounded
-logx2232 log10 0.0000000005123951921894162149817207 -> -9.290394953898862694847327137242690 Inexact Rounded
-logx2233 log10 0.0000000000038500999723636904276723 -> -11.41452799337924056186867324854691 Inexact Rounded
-logx2234 log10 0.0006726500658977759825616537935864 -> -3.172210810922768725687671849421792 Inexact Rounded
-logx2235 log10 260.2400250475967528429943779126507  -> 2.415374092073799204236801383070064 Inexact Rounded
-logx2236 log10 0.0000000006101942339385102585042548 -> -9.214531900562046557191261226632509 Inexact Rounded
-logx2237 log10 0.0000000010846867501382746760066557 -> -8.964695664883282406359874242387236 Inexact Rounded
-logx2238 log10 60.24078375568814769010333711509928  -> 1.779890613567084253168373266648922 Inexact Rounded
-logx2239 log10 0.0012058738711757669337600252986093 -> -2.918698115012605915753728220896010 Inexact Rounded
-logx2240 log10 230.9450930197841600611503095185600  -> 2.363508739056822846742942599628966 Inexact Rounded
-
--- P=16, within 0-999
-Precision: 16
-logx2101 log10 0.0072067119605184 -> -2.142262835573038 Inexact Rounded
-logx2102 log10 503.6828482226624  -> 2.702157162195652 Inexact Rounded
-logx2103 log10 64.96074447821815  -> 1.812650993464174 Inexact Rounded
-logx2104 log10 48.75408597467246  -> 1.688011018842600 Inexact Rounded
-logx2105 log10 0.0329009839269587 -> -1.482791113975280 Inexact Rounded
-logx2106 log10 223.5320415060633  -> 2.349339784523410 Inexact Rounded
-logx2107 log10 73.12765002292194  -> 1.864081617476268 Inexact Rounded
-logx2108 log10 487.3749378358509  -> 2.687863192802252 Inexact Rounded
-logx2109 log10 0.0000019671987621 -> -5.706151757557926 Inexact Rounded
-logx2110 log10 0.0570680660609784 -> -1.243606844697873 Inexact Rounded
-logx2111 log10 33.10311638788998  -> 1.519868880976773 Inexact Rounded
-logx2112 log10 0.0687382699187077 -> -1.162801402868185 Inexact Rounded
-logx2113 log10 258.9416193626484  -> 2.413201859654145 Inexact Rounded
-logx2114 log10 0.0005306100136736 -> -3.275224558269725 Inexact Rounded
-logx2115 log10 65.78490393408572  -> 1.818126244825109 Inexact Rounded
-logx2116 log10 504.2328842073510  -> 2.702631165346958 Inexact Rounded
-logx2117 log10 9.417432755815027  -> 0.9739325278524503 Inexact Rounded
-logx2118 log10 006.7054835355498  -> 0.8264301004947640 Inexact Rounded
-logx2119 log10 0.0917012272363915 -> -1.037624852133399 Inexact Rounded
-logx2120 log10 5.959404385244921  -> 0.7752028561953401 Inexact Rounded
-logx2121 log10 0.0001209759148486 -> -3.917301084968903 Inexact Rounded
-logx2122 log10 0.0004706112139838 -> -3.327337728428039 Inexact Rounded
-logx2123 log10 0.0069700457377046 -> -2.156764372035771 Inexact Rounded
-logx2124 log10 0.5155584569852619 -> -0.2877220847805025 Inexact Rounded
-logx2125 log10 88.06005885607414  -> 1.944778971389913 Inexact Rounded
-logx2126 log10 0.0448240038219866 -> -1.348489353509709 Inexact Rounded
-logx2127 log10 3.419622484059565  -> 0.5339781639101145 Inexact Rounded
-logx2128 log10 5.171123353858721  -> 0.7135848977142854 Inexact Rounded
-logx2129 log10 0.0002133188319807 -> -3.670970802945872 Inexact Rounded
-logx2130 log10 46.21086703136966  -> 1.664744117045149 Inexact Rounded
-logx2131 log10 0.0000631053714415 -> -4.199933672639880 Inexact Rounded
-logx2132 log10 78.66019196870698  -> 1.895755001962469 Inexact Rounded
-logx2133 log10 0.0007152278351188 -> -3.145555592082297 Inexact Rounded
-logx2134 log10 45.52509819928536  -> 1.658250891256892 Inexact Rounded
-logx2135 log10 0.0000703227795740 -> -4.152903971697183 Inexact Rounded
-logx2136 log10 26.24438641426669  -> 1.419036423550599 Inexact Rounded
-logx2137 log10 0.0000044654829535 -> -5.350131564166817 Inexact Rounded
-logx2138 log10 0.7360702733062529 -> -0.1330807211893611 Inexact Rounded
-logx2139 log10 8.417059176469655  -> 0.9251603805112778 Inexact Rounded
-logx2140 log10 0.0002926570767968 -> -3.533640969664818 Inexact Rounded
-
--- P=7, within 0-99
-Precision: 7
-logx2001 log10 57.26089  -> 1.757858 Inexact Rounded
-logx2002 log10 0.0575421 -> -1.240014 Inexact Rounded
-logx2003 log10 0.5918465 -> -0.2277909 Inexact Rounded
-logx2004 log10 0.0068776 -> -2.162563 Inexact Rounded
-logx2005 log10 0.0066833 -> -2.175009 Inexact Rounded
-logx2006 log10 9.926963  -> 0.9968164 Inexact Rounded
-logx2007 log10 0.0041852 -> -2.378284 Inexact Rounded
-logx2008 log10 84.15412  -> 1.925075 Inexact Rounded
-logx2009 log10 2.466856  -> 0.3921438 Inexact Rounded
-logx2010 log10 0.0058047 -> -2.236220 Inexact Rounded
-logx2011 log10 9.885154  -> 0.9949834 Inexact Rounded
-logx2012 log10 0.6667654 -> -0.1760269 Inexact Rounded
-logx2013 log10 34.65736  -> 1.539795 Inexact Rounded
-logx2014 log10 0.0026884 -> -2.570506 Inexact Rounded
-logx2015 log10 0.0432767 -> -1.363746 Inexact Rounded
-logx2016 log10 66.01407  -> 1.819637 Inexact Rounded
-logx2017 log10 0.0070572 -> -2.151368 Inexact Rounded
-logx2018 log10 0.0731613 -> -1.135719 Inexact Rounded
-logx2019 log10 9.838983  -> 0.9929502 Inexact Rounded
-logx2020 log10 15.89696  -> 1.201314 Inexact Rounded
-logx2021 log10 8.459247  -> 0.9273317 Inexact Rounded
-logx2022 log10 0.0010873 -> -2.963651 Inexact Rounded
-logx2023 log10 0.6498619 -> -0.1871789 Inexact Rounded
-logx2024 log10 0.0847008 -> -1.072112 Inexact Rounded
-logx2025 log10 0.0075489 -> -2.122116 Inexact Rounded
-logx2026 log10 51.11152  -> 1.708519 Inexact Rounded
-logx2027 log10 0.7233866 -> -0.1406295 Inexact Rounded
-logx2028 log10 2.254721  -> 0.3530928 Inexact Rounded
-logx2029 log10 6.568444  -> 0.8174625 Inexact Rounded
-logx2030 log10 83.72639  -> 1.922862 Inexact Rounded
-logx2031 log10 6.720585  -> 0.8274071 Inexact Rounded
-logx2032 log10 87.90366  -> 1.944007 Inexact Rounded
-logx2033 log10 0.0433324 -> -1.363187 Inexact Rounded
-logx2034 log10 34.63912  -> 1.539567 Inexact Rounded
-logx2035 log10 0.8089059 -> -0.09210200 Inexact Rounded
-logx2036 log10 7.793405  -> 0.8917272 Inexact Rounded
-logx2037 log10 0.0041757 -> -2.379271 Inexact Rounded
-logx2038 log10 7.135417  -> 0.8534194 Inexact Rounded
-logx2039 log10 12.49570  -> 1.096761 Inexact Rounded
-logx2040 log10 6.356276  -> 0.8032027 Inexact Rounded
-
---------
-maxExponent: 384
-minExponent: -383
-precision:   16
-rounding:    half_even
-
--- special values
-logx820  log10   Infinity ->   Infinity
-logx821  log10   0        ->  -Infinity
-logx822  log10   NaN      ->   NaN
-logx823  log10   sNaN     ->   NaN     Invalid_operation
--- propagating NaNs
-logx824  log10   sNaN123  ->   NaN123  Invalid_operation
-logx825  log10   -sNaN321 ->  -NaN321  Invalid_operation
-logx826  log10   NaN456   ->   NaN456
-logx827  log10   -NaN654  ->  -NaN654
-logx828  log10   NaN1     ->   NaN1
-
-
--- Invalid operations due to restrictions
--- [next two probably skipped by most test harnesses]
-precision: 100000000
-logx901  log10 1 ->  NaN            Invalid_context
-precision:  99999999
-logx902  log10 0 ->  NaN            Invalid_context
-
-precision: 9
-maxExponent:   1000000
-minExponent:   -999999
-logx903  log10 1   ->  NaN            Invalid_context
-maxExponent:    999999
-minExponent:   -999999
-logx904  log10 0 ->  -Infinity
-maxExponent:    999999
-minExponent:  -1000000
-logx905  log10 1   ->  NaN            Invalid_context
-maxExponent:    999999
-minExponent:   -999998
-logx906  log10 0 ->  -Infinity
-
--- Null test
-logx900  log10 #   -> NaN Invalid_operation
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/logb.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/logb.decTest
deleted file mode 100644
index ff420d0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/logb.decTest
+++ /dev/null
@@ -1,188 +0,0 @@
-------------------------------------------------------------------------
--- logb.decTest -- return integral adjusted exponent as per 754r      --
--- Copyright (c) IBM Corporation, 2005, 2009.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This emphasises the testing of notable cases, as they will often
--- have unusual paths (especially the 10**n results).
-
-extended:    1
-rounding:    half_even
-maxExponent: 999
-minexponent: -999
-
--- basics & examples
-precision:   9
-logbx001 logb  0                 -> -Infinity  Division_by_zero
-logbx002 logb  1E-999            -> -999
-logbx003 logb  9E-999            -> -999
-logbx004 logb  0.001             -> -3
-logbx005 logb  0.03              -> -2
-logbx006 logb  1                 ->  0
-logbx007 logb  2                 ->  0
-logbx008 logb  2.5               ->  0
-logbx009 logb  2.50              ->  0
-logbx010 logb  10                ->  1
-logbx011 logb  70                ->  1
-logbx012 logb  100               ->  2
-logbx013 logb  250               ->  2
-logbx014 logb +Infinity          ->  Infinity
-
--- negatives are treated as positives
-logbx021 logb -0                 -> -Infinity  Division_by_zero
-logbx022 logb -1E-999            -> -999
-logbx023 logb -9E-999            -> -999
-logbx024 logb -0.001             -> -3
-logbx025 logb -1                 ->  0
-logbx026 logb -2                 ->  0
-logbx027 logb -10                ->  1
-logbx028 logb -70                ->  1
-logbx029 logb -100               ->  2
-logbx030 logb -100000000         ->  8
-logbx031 logb -Infinity          ->  Infinity
-
--- zeros
-logbx111 logb          0   -> -Infinity  Division_by_zero
-logbx112 logb         -0   -> -Infinity  Division_by_zero
-logbx113 logb       0E+4   -> -Infinity  Division_by_zero
-logbx114 logb      -0E+4   -> -Infinity  Division_by_zero
-logbx115 logb     0.0000   -> -Infinity  Division_by_zero
-logbx116 logb    -0.0000   -> -Infinity  Division_by_zero
-logbx117 logb      0E-141  -> -Infinity  Division_by_zero
-logbx118 logb     -0E-141  -> -Infinity  Division_by_zero
-
--- full coefficients, alternating bits
-logbx121 logb   268268268        -> 8
-logbx122 logb  -268268268        -> 8
-logbx123 logb   134134134        -> 8
-logbx124 logb  -134134134        -> 8
-
--- Nmax, Nmin, Ntiny
-logbx131 logb  9.99999999E+999   -> 999
-logbx132 logb  1E-999            -> -999
-logbx133 logb  1.00000000E-999   -> -999
-logbx134 logb  1E-1007           -> -1007
-
-logbx135 logb  -1E-1007          -> -1007
-logbx136 logb  -1.00000000E-999  -> -999
-logbx137 logb  -1E-999           -> -999
-logbx138 logb  -9.99999999E+999  ->  999
-
--- ones
-logbx0061 logb  1                 ->   0
-logbx0062 logb  1.0               ->   0
-logbx0063 logb  1.000000000000000 ->   0
-logbx0064 logb  1.000000000000000000 ->   0
-
--- notable cases -- exact powers of 10
-logbx1100 logb 1             -> 0
-logbx1101 logb 10            -> 1
-logbx1102 logb 100           -> 2
-logbx1103 logb 1000          -> 3
-logbx1104 logb 10000         -> 4
-logbx1105 logb 100000        -> 5
-logbx1106 logb 1000000       -> 6
-logbx1107 logb 10000000      -> 7
-logbx1108 logb 100000000     -> 8
-logbx1109 logb 1000000000    -> 9
-logbx1110 logb 10000000000   -> 10
-logbx1111 logb 100000000000  -> 11
-logbx1112 logb 1000000000000 -> 12
-logbx1113 logb 0.00000000001 -> -11
-logbx1114 logb 0.0000000001 -> -10
-logbx1115 logb 0.000000001 -> -9
-logbx1116 logb 0.00000001 -> -8
-logbx1117 logb 0.0000001 -> -7
-logbx1118 logb 0.000001 -> -6
-logbx1119 logb 0.00001 -> -5
-logbx1120 logb 0.0001 -> -4
-logbx1121 logb 0.001 -> -3
-logbx1122 logb 0.01 -> -2
-logbx1123 logb 0.1 -> -1
-logbx1124 logb 1E-99  -> -99
-logbx1125 logb 1E-100 -> -100
-logbx1126 logb 1E-383 -> -383
-logbx1127 logb 1E-999 -> -999
-
--- suggestions from Ilan Nehama
-logbx1400 logb 10E-3    -> -2
-logbx1401 logb 10E-2    -> -1
-logbx1402 logb 100E-2   ->  0
-logbx1403 logb 1000E-2  ->  1
-logbx1404 logb 10000E-2 ->  2
-logbx1405 logb 10E-1    ->  0
-logbx1406 logb 100E-1   ->  1
-logbx1407 logb 1000E-1  ->  2
-logbx1408 logb 10000E-1 ->  3
-logbx1409 logb 10E0     ->  1
-logbx1410 logb 100E0    ->  2
-logbx1411 logb 1000E0   ->  3
-logbx1412 logb 10000E0  ->  4
-logbx1413 logb 10E1     ->  2
-logbx1414 logb 100E1    ->  3
-logbx1415 logb 1000E1   ->  4
-logbx1416 logb 10000E1  ->  5
-logbx1417 logb 10E2     ->  3
-logbx1418 logb 100E2    ->  4
-logbx1419 logb 1000E2   ->  5
-logbx1420 logb 10000E2  ->  6
-
--- inexacts
-precision: 2
-logbx1500 logb 10000E2       ->  6
-logbx1501 logb 1E+99         ->  99
-logbx1502 logb 1E-99         -> -99
-logbx1503 logb 1E+100        ->  1.0E+2  Rounded
-logbx1504 logb 1E+999        ->  1.0E+3  Inexact Rounded
-logbx1505 logb 1E-100        -> -1.0E+2  Rounded
-logbx1506 logb 1E-999        -> -1.0E+3  Inexact Rounded
-logbx1507 logb 1E-1111       -> -1.1E+3  Inexact Rounded
-logbx1508 logb 1E-3333       -> -3.3E+3  Inexact Rounded
-logbx1509 logb 1E-6666       -> -6.7E+3  Inexact Rounded
-logbx1510 logb 1E+999999999  ->  1.0E+9  Inexact Rounded
-logbx1511 logb 1E-999999999  -> -1.0E+9  Inexact Rounded
-precision: 1
-logbx1517 logb 1E-1111       -> -1E+3    Inexact Rounded
-logbx1518 logb 1E-3333       -> -3E+3    Inexact Rounded
-logbx1519 logb 1E-6666       -> -7E+3    Inexact Rounded
-precision: 8
-logbx1520 logb 1E+999999999  ->  1.0000000E+9 Inexact Rounded
-logbx1521 logb 1E-999999999  -> -1.0000000E+9 Inexact Rounded
-precision: 9
-logbx1523 logb 1E+999999999  ->  999999999
-logbx1524 logb 1E-999999999  -> -999999999
-
--- special values
-precision: 9
-logbx820  logb   Infinity ->   Infinity
-logbx821  logb  -Infinity ->   Infinity
-logbx822  logb   0        ->  -Infinity Division_by_zero
-logbx823  logb   NaN      ->   NaN
-logbx824  logb   sNaN     ->   NaN     Invalid_operation
--- propagating NaNs
-logbx825  logb   sNaN123  ->   NaN123  Invalid_operation
-logbx826  logb   -sNaN321 ->  -NaN321  Invalid_operation
-logbx827  logb   NaN456   ->   NaN456
-logbx828  logb   -NaN654  ->  -NaN654
-logbx829  logb   NaN1     ->   NaN1
-
--- Null test
-logbx900  logb #   -> NaN Invalid_operation
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/max.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/max.decTest
deleted file mode 100644
index e31cb1f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/max.decTest
+++ /dev/null
@@ -1,424 +0,0 @@
-------------------------------------------------------------------------
--- max.decTest -- decimal maximum                                     --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- we assume that base comparison is tested in compare.decTest, so
--- these mainly cover special cases and rounding
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
--- sanity checks
-maxx001 max  -2  -2  -> -2
-maxx002 max  -2  -1  -> -1
-maxx003 max  -2   0  ->  0
-maxx004 max  -2   1  ->  1
-maxx005 max  -2   2  ->  2
-maxx006 max  -1  -2  -> -1
-maxx007 max  -1  -1  -> -1
-maxx008 max  -1   0  ->  0
-maxx009 max  -1   1  ->  1
-maxx010 max  -1   2  ->  2
-maxx011 max   0  -2  ->  0
-maxx012 max   0  -1  ->  0
-maxx013 max   0   0  ->  0
-maxx014 max   0   1  ->  1
-maxx015 max   0   2  ->  2
-maxx016 max   1  -2  ->  1
-maxx017 max   1  -1  ->  1
-maxx018 max   1   0  ->  1
-maxx019 max   1   1  ->  1
-maxx020 max   1   2  ->  2
-maxx021 max   2  -2  ->  2
-maxx022 max   2  -1  ->  2
-maxx023 max   2   0  ->  2
-maxx025 max   2   1  ->  2
-maxx026 max   2   2  ->  2
-
--- extended zeros
-maxx030 max   0     0   ->  0
-maxx031 max   0    -0   ->  0
-maxx032 max   0    -0.0 ->  0
-maxx033 max   0     0.0 ->  0
-maxx034 max  -0     0   ->  0    -- note: -0 = 0, but 0 chosen
-maxx035 max  -0    -0   -> -0
-maxx036 max  -0    -0.0 -> -0.0
-maxx037 max  -0     0.0 ->  0.0
-maxx038 max   0.0   0   ->  0
-maxx039 max   0.0  -0   ->  0.0
-maxx040 max   0.0  -0.0 ->  0.0
-maxx041 max   0.0   0.0 ->  0.0
-maxx042 max  -0.0   0   ->  0
-maxx043 max  -0.0  -0   -> -0.0
-maxx044 max  -0.0  -0.0 -> -0.0
-maxx045 max  -0.0   0.0 ->  0.0
-
-maxx050 max  -0E1   0E1 ->  0E+1
-maxx051 max  -0E2   0E2 ->  0E+2
-maxx052 max  -0E2   0E1 ->  0E+1
-maxx053 max  -0E1   0E2 ->  0E+2
-maxx054 max   0E1  -0E1 ->  0E+1
-maxx055 max   0E2  -0E2 ->  0E+2
-maxx056 max   0E2  -0E1 ->  0E+2
-maxx057 max   0E1  -0E2 ->  0E+1
-
-maxx058 max   0E1   0E1 ->  0E+1
-maxx059 max   0E2   0E2 ->  0E+2
-maxx060 max   0E2   0E1 ->  0E+2
-maxx061 max   0E1   0E2 ->  0E+2
-maxx062 max  -0E1  -0E1 -> -0E+1
-maxx063 max  -0E2  -0E2 -> -0E+2
-maxx064 max  -0E2  -0E1 -> -0E+1
-maxx065 max  -0E1  -0E2 -> -0E+1
-
--- Specials
-precision: 9
-maxx090 max  Inf  -Inf   ->  Infinity
-maxx091 max  Inf  -1000  ->  Infinity
-maxx092 max  Inf  -1     ->  Infinity
-maxx093 max  Inf  -0     ->  Infinity
-maxx094 max  Inf   0     ->  Infinity
-maxx095 max  Inf   1     ->  Infinity
-maxx096 max  Inf   1000  ->  Infinity
-maxx097 max  Inf   Inf   ->  Infinity
-maxx098 max -1000  Inf   ->  Infinity
-maxx099 max -Inf   Inf   ->  Infinity
-maxx100 max -1     Inf   ->  Infinity
-maxx101 max -0     Inf   ->  Infinity
-maxx102 max  0     Inf   ->  Infinity
-maxx103 max  1     Inf   ->  Infinity
-maxx104 max  1000  Inf   ->  Infinity
-maxx105 max  Inf   Inf   ->  Infinity
-
-maxx120 max -Inf  -Inf   -> -Infinity
-maxx121 max -Inf  -1000  -> -1000
-maxx122 max -Inf  -1     -> -1
-maxx123 max -Inf  -0     -> -0
-maxx124 max -Inf   0     ->  0
-maxx125 max -Inf   1     ->  1
-maxx126 max -Inf   1000  ->  1000
-maxx127 max -Inf   Inf   ->  Infinity
-maxx128 max -Inf  -Inf   ->  -Infinity
-maxx129 max -1000 -Inf   ->  -1000
-maxx130 max -1    -Inf   ->  -1
-maxx131 max -0    -Inf   ->  -0
-maxx132 max  0    -Inf   ->  0
-maxx133 max  1    -Inf   ->  1
-maxx134 max  1000 -Inf   ->  1000
-maxx135 max  Inf  -Inf   ->  Infinity
-
--- 2004.08.02 754r chooses number over NaN in mixed cases
-maxx141 max  NaN -Inf    -> -Infinity
-maxx142 max  NaN -1000   -> -1000
-maxx143 max  NaN -1      -> -1
-maxx144 max  NaN -0      -> -0
-maxx145 max  NaN  0      ->  0
-maxx146 max  NaN  1      ->  1
-maxx147 max  NaN  1000   ->  1000
-maxx148 max  NaN  Inf    ->  Infinity
-maxx149 max  NaN  NaN    ->  NaN
-maxx150 max -Inf  NaN    -> -Infinity
-maxx151 max -1000 NaN    -> -1000
-maxx152 max -1    NaN    -> -1
-maxx153 max -0    NaN    -> -0
-maxx154 max  0    NaN    ->  0
-maxx155 max  1    NaN    ->  1
-maxx156 max  1000 NaN    ->  1000
-maxx157 max  Inf  NaN    ->  Infinity
-
-maxx161 max  sNaN -Inf   ->  NaN  Invalid_operation
-maxx162 max  sNaN -1000  ->  NaN  Invalid_operation
-maxx163 max  sNaN -1     ->  NaN  Invalid_operation
-maxx164 max  sNaN -0     ->  NaN  Invalid_operation
-maxx165 max  sNaN  0     ->  NaN  Invalid_operation
-maxx166 max  sNaN  1     ->  NaN  Invalid_operation
-maxx167 max  sNaN  1000  ->  NaN  Invalid_operation
-maxx168 max  sNaN  NaN   ->  NaN  Invalid_operation
-maxx169 max  sNaN sNaN   ->  NaN  Invalid_operation
-maxx170 max  NaN  sNaN   ->  NaN  Invalid_operation
-maxx171 max -Inf  sNaN   ->  NaN  Invalid_operation
-maxx172 max -1000 sNaN   ->  NaN  Invalid_operation
-maxx173 max -1    sNaN   ->  NaN  Invalid_operation
-maxx174 max -0    sNaN   ->  NaN  Invalid_operation
-maxx175 max  0    sNaN   ->  NaN  Invalid_operation
-maxx176 max  1    sNaN   ->  NaN  Invalid_operation
-maxx177 max  1000 sNaN   ->  NaN  Invalid_operation
-maxx178 max  Inf  sNaN   ->  NaN  Invalid_operation
-maxx179 max  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-maxx181 max  NaN9  -Inf   -> -Infinity
-maxx182 max  NaN8     9   ->  9
-maxx183 max -NaN7   Inf   ->  Infinity
-
-maxx184 max -NaN1   NaN11 -> -NaN1
-maxx185 max  NaN2   NaN12 ->  NaN2
-maxx186 max -NaN13 -NaN7  -> -NaN13
-maxx187 max  NaN14 -NaN5  ->  NaN14
-
-maxx188 max -Inf    NaN4  -> -Infinity
-maxx189 max -9     -NaN3  -> -9
-maxx190 max  Inf    NaN2  ->  Infinity
-
-maxx191 max  sNaN99 -Inf    ->  NaN99 Invalid_operation
-maxx192 max  sNaN98 -1      ->  NaN98 Invalid_operation
-maxx193 max -sNaN97  NaN    -> -NaN97 Invalid_operation
-maxx194 max  sNaN96 sNaN94  ->  NaN96 Invalid_operation
-maxx195 max  NaN95  sNaN93  ->  NaN93 Invalid_operation
-maxx196 max -Inf    sNaN92  ->  NaN92 Invalid_operation
-maxx197 max  0      sNaN91  ->  NaN91 Invalid_operation
-maxx198 max  Inf   -sNaN90  -> -NaN90 Invalid_operation
-maxx199 max  NaN    sNaN89  ->  NaN89 Invalid_operation
-
--- rounding checks
-maxexponent: 999
-minexponent: -999
-precision: 9
-maxx201 max 12345678000 1  -> 1.23456780E+10 Rounded
-maxx202 max 1 12345678000  -> 1.23456780E+10 Rounded
-maxx203 max 1234567800  1  -> 1.23456780E+9 Rounded
-maxx204 max 1 1234567800   -> 1.23456780E+9 Rounded
-maxx205 max 1234567890  1  -> 1.23456789E+9 Rounded
-maxx206 max 1 1234567890   -> 1.23456789E+9 Rounded
-maxx207 max 1234567891  1  -> 1.23456789E+9 Inexact Rounded
-maxx208 max 1 1234567891   -> 1.23456789E+9 Inexact Rounded
-maxx209 max 12345678901 1  -> 1.23456789E+10 Inexact Rounded
-maxx210 max 1 12345678901  -> 1.23456789E+10 Inexact Rounded
-maxx211 max 1234567896  1  -> 1.23456790E+9 Inexact Rounded
-maxx212 max 1 1234567896   -> 1.23456790E+9 Inexact Rounded
-maxx213 max -1234567891  1 -> 1
-maxx214 max 1 -1234567891  -> 1
-maxx215 max -12345678901 1 -> 1
-maxx216 max 1 -12345678901 -> 1
-maxx217 max -1234567896  1 -> 1
-maxx218 max 1 -1234567896  -> 1
-
-precision: 15
-maxx221 max 12345678000 1  -> 12345678000
-maxx222 max 1 12345678000  -> 12345678000
-maxx223 max 1234567800  1  -> 1234567800
-maxx224 max 1 1234567800   -> 1234567800
-maxx225 max 1234567890  1  -> 1234567890
-maxx226 max 1 1234567890   -> 1234567890
-maxx227 max 1234567891  1  -> 1234567891
-maxx228 max 1 1234567891   -> 1234567891
-maxx229 max 12345678901 1  -> 12345678901
-maxx230 max 1 12345678901  -> 12345678901
-maxx231 max 1234567896  1  -> 1234567896
-maxx232 max 1 1234567896   -> 1234567896
-maxx233 max -1234567891  1 -> 1
-maxx234 max 1 -1234567891  -> 1
-maxx235 max -12345678901 1 -> 1
-maxx236 max 1 -12345678901 -> 1
-maxx237 max -1234567896  1 -> 1
-maxx238 max 1 -1234567896  -> 1
-
--- from examples
-maxx280 max '3'   '2'  ->  '3'
-maxx281 max '-10' '3'  ->  '3'
-maxx282 max '1.0' '1'  ->  '1'
-maxx283 max '1' '1.0'  ->  '1'
-maxx284 max '7' 'NaN'  ->  '7'
-
--- overflow and underflow tests ...
-maxExponent: 999999999
-minexponent: -999999999
-maxx330 max +1.23456789012345E-0 9E+999999999 ->  9E+999999999
-maxx331 max 9E+999999999 +1.23456789012345E-0 ->  9E+999999999
-maxx332 max +0.100 9E-999999999               ->  0.100
-maxx333 max 9E-999999999 +0.100               ->  0.100
-maxx335 max -1.23456789012345E-0 9E+999999999 ->  9E+999999999
-maxx336 max 9E+999999999 -1.23456789012345E-0 ->  9E+999999999
-maxx337 max -0.100 9E-999999999               ->  9E-999999999
-maxx338 max 9E-999999999 -0.100               ->  9E-999999999
-
-maxx339 max 1e-599999999 1e-400000001   ->  1E-400000001
-maxx340 max 1e-599999999 1e-400000000   ->  1E-400000000
-maxx341 max 1e-600000000 1e-400000000   ->  1E-400000000
-maxx342 max 9e-999999998 0.01           ->  0.01
-maxx343 max 9e-999999998 0.1            ->  0.1
-maxx344 max 0.01 9e-999999998           ->  0.01
-maxx345 max 1e599999999 1e400000001     ->  1E+599999999
-maxx346 max 1e599999999 1e400000000     ->  1E+599999999
-maxx347 max 1e600000000 1e400000000     ->  1E+600000000
-maxx348 max 9e999999998 100             ->  9E+999999998
-maxx349 max 9e999999998 10              ->  9E+999999998
-maxx350 max 100  9e999999998            ->  9E+999999998
--- signs
-maxx351 max  1e+777777777  1e+411111111 ->  1E+777777777
-maxx352 max  1e+777777777 -1e+411111111 ->  1E+777777777
-maxx353 max -1e+777777777  1e+411111111 ->  1E+411111111
-maxx354 max -1e+777777777 -1e+411111111 -> -1E+411111111
-maxx355 max  1e-777777777  1e-411111111 ->  1E-411111111
-maxx356 max  1e-777777777 -1e-411111111 ->  1E-777777777
-maxx357 max -1e-777777777  1e-411111111 ->  1E-411111111
-maxx358 max -1e-777777777 -1e-411111111 -> -1E-777777777
-
--- expanded list from min/max 754r purple prose
--- [explicit tests for exponent ordering]
-maxx401 max  Inf    1.1     ->  Infinity
-maxx402 max  1.1    1       ->  1.1
-maxx403 max  1      1.0     ->  1
-maxx404 max  1.0    0.1     ->  1.0
-maxx405 max  0.1    0.10    ->  0.1
-maxx406 max  0.10   0.100   ->  0.10
-maxx407 max  0.10   0       ->  0.10
-maxx408 max  0      0.0     ->  0
-maxx409 max  0.0   -0       ->  0.0
-maxx410 max  0.0   -0.0     ->  0.0
-maxx411 max  0.00  -0.0     ->  0.00
-maxx412 max  0.0   -0.00    ->  0.0
-maxx413 max  0     -0.0     ->  0
-maxx414 max  0     -0       ->  0
-maxx415 max -0.0   -0       -> -0.0
-maxx416 max -0     -0.100   -> -0
-maxx417 max -0.100 -0.10    -> -0.100
-maxx418 max -0.10  -0.1     -> -0.10
-maxx419 max -0.1   -1.0     -> -0.1
-maxx420 max -1.0   -1       -> -1.0
-maxx421 max -1     -1.1     -> -1
-maxx423 max -1.1   -Inf     -> -1.1
--- same with operands reversed
-maxx431 max  1.1    Inf     ->  Infinity
-maxx432 max  1      1.1     ->  1.1
-maxx433 max  1.0    1       ->  1
-maxx434 max  0.1    1.0     ->  1.0
-maxx435 max  0.10   0.1     ->  0.1
-maxx436 max  0.100  0.10    ->  0.10
-maxx437 max  0      0.10    ->  0.10
-maxx438 max  0.0    0       ->  0
-maxx439 max -0      0.0     ->  0.0
-maxx440 max -0.0    0.0     ->  0.0
-maxx441 max -0.0    0.00    ->  0.00
-maxx442 max -0.00   0.0     ->  0.0
-maxx443 max -0.0    0       ->  0
-maxx444 max -0      0       ->  0
-maxx445 max -0     -0.0     -> -0.0
-maxx446 max -0.100 -0       -> -0
-maxx447 max -0.10  -0.100   -> -0.100
-maxx448 max -0.1   -0.10    -> -0.10
-maxx449 max -1.0   -0.1     -> -0.1
-maxx450 max -1     -1.0     -> -1.0
-maxx451 max -1.1   -1       -> -1
-maxx453 max -Inf   -1.1     -> -1.1
--- largies
-maxx460 max  1000   1E+3    ->  1E+3
-maxx461 max  1E+3   1000    ->  1E+3
-maxx462 max  1000  -1E+3    ->  1000
-maxx463 max  1E+3  -1000    ->  1E+3
-maxx464 max -1000   1E+3    ->  1E+3
-maxx465 max -1E+3   1000    ->  1000
-maxx466 max -1000  -1E+3    -> -1000
-maxx467 max -1E+3  -1000    -> -1000
-
--- rounding (results treated as though plus)
-maxexponent: 999999999
-minexponent: -999999999
-precision: 3
-
-maxx470 max  1      .5     ->  1
-maxx471 max  10     5      ->  10
-maxx472 max  100    50     ->  100
-maxx473 max  1000   500    ->  1.00E+3 Rounded
-maxx474 max  10000  5000   ->  1.00E+4 Rounded
-maxx475 max  6      .5     ->  6
-maxx476 max  66     5      ->  66
-maxx477 max  666    50     ->  666
-maxx478 max  6666   500    ->  6.67E+3 Rounded Inexact
-maxx479 max  66666  5000   ->  6.67E+4 Rounded Inexact
-maxx480 max  33333  5000   ->  3.33E+4 Rounded Inexact
-maxx481 max  .5     1      ->  1
-maxx482 max  .5     10     ->  10
-maxx483 max  .5     100    ->  100
-maxx484 max  .5     1000   ->  1.00E+3 Rounded
-maxx485 max  .5     10000  ->  1.00E+4 Rounded
-maxx486 max  .5     6      ->  6
-maxx487 max  .5     66     ->  66
-maxx488 max  .5     666    ->  666
-maxx489 max  .5     6666   ->  6.67E+3 Rounded Inexact
-maxx490 max  .5     66666  ->  6.67E+4 Rounded Inexact
-maxx491 max  .5     33333  ->  3.33E+4 Rounded Inexact
-
--- overflow tests
-maxexponent: 999999999
-minexponent: -999999999
-precision: 3
-maxx500 max 9.999E+999999999  0 ->  Infinity Inexact Overflow Rounded
-maxx501 max -9.999E+999999999 0 ->  0
-
--- subnormals and underflow
-precision: 3
-maxexponent: 999
-minexponent: -999
-maxx510 max  1.00E-999       0  ->   1.00E-999
-maxx511 max  0.1E-999        0  ->   1E-1000   Subnormal
-maxx512 max  0.10E-999       0  ->   1.0E-1000 Subnormal
-maxx513 max  0.100E-999      0  ->   1.0E-1000 Subnormal Rounded
-maxx514 max  0.01E-999       0  ->   1E-1001   Subnormal
--- next is rounded to Nmin
-maxx515 max  0.999E-999      0  ->   1.00E-999 Inexact Rounded Subnormal Underflow
-maxx516 max  0.099E-999      0  ->   1.0E-1000 Inexact Rounded Subnormal Underflow
-maxx517 max  0.009E-999      0  ->   1E-1001   Inexact Rounded Subnormal Underflow
-maxx518 max  0.001E-999      0  ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-maxx519 max  0.0009E-999     0  ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-maxx520 max  0.0001E-999     0  ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
-maxx530 max -1.00E-999       0  ->   0
-maxx531 max -0.1E-999        0  ->   0
-maxx532 max -0.10E-999       0  ->   0
-maxx533 max -0.100E-999      0  ->   0
-maxx534 max -0.01E-999       0  ->   0
-maxx535 max -0.999E-999      0  ->   0
-maxx536 max -0.099E-999      0  ->   0
-maxx537 max -0.009E-999      0  ->   0
-maxx538 max -0.001E-999      0  ->   0
-maxx539 max -0.0009E-999     0  ->   0
-maxx540 max -0.0001E-999     0  ->   0
-
--- misalignment traps for little-endian
-precision: 9
-maxx551 max      1.0       0.1  -> 1.0
-maxx552 max      0.1       1.0  -> 1.0
-maxx553 max     10.0       0.1  -> 10.0
-maxx554 max      0.1      10.0  -> 10.0
-maxx555 max      100       1.0  -> 100
-maxx556 max      1.0       100  -> 100
-maxx557 max     1000      10.0  -> 1000
-maxx558 max     10.0      1000  -> 1000
-maxx559 max    10000     100.0  -> 10000
-maxx560 max    100.0     10000  -> 10000
-maxx661 max   100000    1000.0  -> 100000
-maxx662 max   1000.0    100000  -> 100000
-maxx663 max  1000000   10000.0  -> 1000000
-maxx664 max  10000.0   1000000  -> 1000000
-
--- payload decapitate
-precision: 5
-maxx670 max      11 -sNaN12345678901 -> -NaN78901  Invalid_operation
-
--- Null tests
-maxx900 max 10  #  -> NaN Invalid_operation
-maxx901 max  # 10  -> NaN Invalid_operation
-
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/maxmag.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/maxmag.decTest
deleted file mode 100644
index 6b44213..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/maxmag.decTest
+++ /dev/null
@@ -1,404 +0,0 @@
-------------------------------------------------------------------------
--- maxmag.decTest -- decimal maximum by magnitude                     --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- we assume that base comparison is tested in compare.decTest, so
--- these mainly cover special cases and rounding
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
--- sanity checks
-mxgx001 maxmag  -2  -2  -> -2
-mxgx002 maxmag  -2  -1  -> -2
-mxgx003 maxmag  -2   0  -> -2
-mxgx004 maxmag  -2   1  -> -2
-mxgx005 maxmag  -2   2  ->  2
-mxgx006 maxmag  -1  -2  -> -2
-mxgx007 maxmag  -1  -1  -> -1
-mxgx008 maxmag  -1   0  -> -1
-mxgx009 maxmag  -1   1  ->  1
-mxgx010 maxmag  -1   2  ->  2
-mxgx011 maxmag   0  -2  -> -2
-mxgx012 maxmag   0  -1  -> -1
-mxgx013 maxmag   0   0  ->  0
-mxgx014 maxmag   0   1  ->  1
-mxgx015 maxmag   0   2  ->  2
-mxgx016 maxmag   1  -2  -> -2
-mxgx017 maxmag   1  -1  ->  1
-mxgx018 maxmag   1   0  ->  1
-mxgx019 maxmag   1   1  ->  1
-mxgx020 maxmag   1   2  ->  2
-mxgx021 maxmag   2  -2  ->  2
-mxgx022 maxmag   2  -1  ->  2
-mxgx023 maxmag   2   0  ->  2
-mxgx025 maxmag   2   1  ->  2
-mxgx026 maxmag   2   2  ->  2
-
--- extended zeros
-mxgx030 maxmag   0     0   ->  0
-mxgx031 maxmag   0    -0   ->  0
-mxgx032 maxmag   0    -0.0 ->  0
-mxgx033 maxmag   0     0.0 ->  0
-mxgx034 maxmag  -0     0   ->  0    -- note: -0 = 0, but 0 chosen
-mxgx035 maxmag  -0    -0   -> -0
-mxgx036 maxmag  -0    -0.0 -> -0.0
-mxgx037 maxmag  -0     0.0 ->  0.0
-mxgx038 maxmag   0.0   0   ->  0
-mxgx039 maxmag   0.0  -0   ->  0.0
-mxgx040 maxmag   0.0  -0.0 ->  0.0
-mxgx041 maxmag   0.0   0.0 ->  0.0
-mxgx042 maxmag  -0.0   0   ->  0
-mxgx043 maxmag  -0.0  -0   -> -0.0
-mxgx044 maxmag  -0.0  -0.0 -> -0.0
-mxgx045 maxmag  -0.0   0.0 ->  0.0
-
-mxgx050 maxmag  -0E1   0E1 ->  0E+1
-mxgx051 maxmag  -0E2   0E2 ->  0E+2
-mxgx052 maxmag  -0E2   0E1 ->  0E+1
-mxgx053 maxmag  -0E1   0E2 ->  0E+2
-mxgx054 maxmag   0E1  -0E1 ->  0E+1
-mxgx055 maxmag   0E2  -0E2 ->  0E+2
-mxgx056 maxmag   0E2  -0E1 ->  0E+2
-mxgx057 maxmag   0E1  -0E2 ->  0E+1
-
-mxgx058 maxmag   0E1   0E1 ->  0E+1
-mxgx059 maxmag   0E2   0E2 ->  0E+2
-mxgx060 maxmag   0E2   0E1 ->  0E+2
-mxgx061 maxmag   0E1   0E2 ->  0E+2
-mxgx062 maxmag  -0E1  -0E1 -> -0E+1
-mxgx063 maxmag  -0E2  -0E2 -> -0E+2
-mxgx064 maxmag  -0E2  -0E1 -> -0E+1
-mxgx065 maxmag  -0E1  -0E2 -> -0E+1
-
--- Specials
-precision: 9
-mxgx090 maxmag  Inf  -Inf   ->  Infinity
-mxgx091 maxmag  Inf  -1000  ->  Infinity
-mxgx092 maxmag  Inf  -1     ->  Infinity
-mxgx093 maxmag  Inf  -0     ->  Infinity
-mxgx094 maxmag  Inf   0     ->  Infinity
-mxgx095 maxmag  Inf   1     ->  Infinity
-mxgx096 maxmag  Inf   1000  ->  Infinity
-mxgx097 maxmag  Inf   Inf   ->  Infinity
-mxgx098 maxmag -1000  Inf   ->  Infinity
-mxgx099 maxmag -Inf   Inf   ->  Infinity
-mxgx100 maxmag -1     Inf   ->  Infinity
-mxgx101 maxmag -0     Inf   ->  Infinity
-mxgx102 maxmag  0     Inf   ->  Infinity
-mxgx103 maxmag  1     Inf   ->  Infinity
-mxgx104 maxmag  1000  Inf   ->  Infinity
-mxgx105 maxmag  Inf   Inf   ->  Infinity
-
-mxgx120 maxmag -Inf  -Inf   -> -Infinity
-mxgx121 maxmag -Inf  -1000  -> -Infinity
-mxgx122 maxmag -Inf  -1     -> -Infinity
-mxgx123 maxmag -Inf  -0     -> -Infinity
-mxgx124 maxmag -Inf   0     -> -Infinity
-mxgx125 maxmag -Inf   1     -> -Infinity
-mxgx126 maxmag -Inf   1000  -> -Infinity
-mxgx127 maxmag -Inf   Inf   ->  Infinity
-mxgx128 maxmag -Inf  -Inf   -> -Infinity
-mxgx129 maxmag -1000 -Inf   -> -Infinity
-mxgx130 maxmag -1    -Inf   -> -Infinity
-mxgx131 maxmag -0    -Inf   -> -Infinity
-mxgx132 maxmag  0    -Inf   -> -Infinity
-mxgx133 maxmag  1    -Inf   -> -Infinity
-mxgx134 maxmag  1000 -Inf   -> -Infinity
-mxgx135 maxmag  Inf  -Inf   ->  Infinity
-
--- 2004.08.02 754r chooses number over NaN in mixed cases
-mxgx141 maxmag  NaN -Inf    -> -Infinity
-mxgx142 maxmag  NaN -1000   -> -1000
-mxgx143 maxmag  NaN -1      -> -1
-mxgx144 maxmag  NaN -0      -> -0
-mxgx145 maxmag  NaN  0      ->  0
-mxgx146 maxmag  NaN  1      ->  1
-mxgx147 maxmag  NaN  1000   ->  1000
-mxgx148 maxmag  NaN  Inf    ->  Infinity
-mxgx149 maxmag  NaN  NaN    ->  NaN
-mxgx150 maxmag -Inf  NaN    -> -Infinity
-mxgx151 maxmag -1000 NaN    -> -1000
-mxgx152 maxmag -1    NaN    -> -1
-mxgx153 maxmag -0    NaN    -> -0
-mxgx154 maxmag  0    NaN    ->  0
-mxgx155 maxmag  1    NaN    ->  1
-mxgx156 maxmag  1000 NaN    ->  1000
-mxgx157 maxmag  Inf  NaN    ->  Infinity
-
-mxgx161 maxmag  sNaN -Inf   ->  NaN  Invalid_operation
-mxgx162 maxmag  sNaN -1000  ->  NaN  Invalid_operation
-mxgx163 maxmag  sNaN -1     ->  NaN  Invalid_operation
-mxgx164 maxmag  sNaN -0     ->  NaN  Invalid_operation
-mxgx165 maxmag  sNaN  0     ->  NaN  Invalid_operation
-mxgx166 maxmag  sNaN  1     ->  NaN  Invalid_operation
-mxgx167 maxmag  sNaN  1000  ->  NaN  Invalid_operation
-mxgx168 maxmag  sNaN  NaN   ->  NaN  Invalid_operation
-mxgx169 maxmag  sNaN sNaN   ->  NaN  Invalid_operation
-mxgx170 maxmag  NaN  sNaN   ->  NaN  Invalid_operation
-mxgx171 maxmag -Inf  sNaN   ->  NaN  Invalid_operation
-mxgx172 maxmag -1000 sNaN   ->  NaN  Invalid_operation
-mxgx173 maxmag -1    sNaN   ->  NaN  Invalid_operation
-mxgx174 maxmag -0    sNaN   ->  NaN  Invalid_operation
-mxgx175 maxmag  0    sNaN   ->  NaN  Invalid_operation
-mxgx176 maxmag  1    sNaN   ->  NaN  Invalid_operation
-mxgx177 maxmag  1000 sNaN   ->  NaN  Invalid_operation
-mxgx178 maxmag  Inf  sNaN   ->  NaN  Invalid_operation
-mxgx179 maxmag  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-mxgx181 maxmag  NaN9  -Inf   -> -Infinity
-mxgx182 maxmag  NaN8     9   ->  9
-mxgx183 maxmag -NaN7   Inf   ->  Infinity
-
-mxgx184 maxmag -NaN1   NaN11 -> -NaN1
-mxgx185 maxmag  NaN2   NaN12 ->  NaN2
-mxgx186 maxmag -NaN13 -NaN7  -> -NaN13
-mxgx187 maxmag  NaN14 -NaN5  ->  NaN14
-
-mxgx188 maxmag -Inf    NaN4  -> -Infinity
-mxgx189 maxmag -9     -NaN3  -> -9
-mxgx190 maxmag  Inf    NaN2  ->  Infinity
-
-mxgx191 maxmag  sNaN99 -Inf    ->  NaN99 Invalid_operation
-mxgx192 maxmag  sNaN98 -1      ->  NaN98 Invalid_operation
-mxgx193 maxmag -sNaN97  NaN    -> -NaN97 Invalid_operation
-mxgx194 maxmag  sNaN96 sNaN94  ->  NaN96 Invalid_operation
-mxgx195 maxmag  NaN95  sNaN93  ->  NaN93 Invalid_operation
-mxgx196 maxmag -Inf    sNaN92  ->  NaN92 Invalid_operation
-mxgx197 maxmag  0      sNaN91  ->  NaN91 Invalid_operation
-mxgx198 maxmag  Inf   -sNaN90  -> -NaN90 Invalid_operation
-mxgx199 maxmag  NaN    sNaN89  ->  NaN89 Invalid_operation
-
--- rounding checks
-maxexponent: 999
-minexponent: -999
-precision: 9
-mxgx201 maxmag 12345678000 1  -> 1.23456780E+10 Rounded
-mxgx202 maxmag 1 12345678000  -> 1.23456780E+10 Rounded
-mxgx203 maxmag 1234567800  1  -> 1.23456780E+9 Rounded
-mxgx204 maxmag 1 1234567800   -> 1.23456780E+9 Rounded
-mxgx205 maxmag 1234567890  1  -> 1.23456789E+9 Rounded
-mxgx206 maxmag 1 1234567890   -> 1.23456789E+9 Rounded
-mxgx207 maxmag 1234567891  1  -> 1.23456789E+9 Inexact Rounded
-mxgx208 maxmag 1 1234567891   -> 1.23456789E+9 Inexact Rounded
-mxgx209 maxmag 12345678901 1  -> 1.23456789E+10 Inexact Rounded
-mxgx210 maxmag 1 12345678901  -> 1.23456789E+10 Inexact Rounded
-mxgx211 maxmag 1234567896  1  -> 1.23456790E+9 Inexact Rounded
-mxgx212 maxmag 1 1234567896   -> 1.23456790E+9 Inexact Rounded
-mxgx213 maxmag -1234567891  1 -> -1.23456789E+9   Inexact Rounded
-mxgx214 maxmag 1 -1234567891  -> -1.23456789E+9   Inexact Rounded
-mxgx215 maxmag -12345678901 1 -> -1.23456789E+10  Inexact Rounded
-mxgx216 maxmag 1 -12345678901 -> -1.23456789E+10  Inexact Rounded
-mxgx217 maxmag -1234567896  1 -> -1.23456790E+9   Inexact Rounded
-mxgx218 maxmag 1 -1234567896  -> -1.23456790E+9   Inexact Rounded
-
-precision: 15
-mxgx221 maxmag 12345678000 1  -> 12345678000
-mxgx222 maxmag 1 12345678000  -> 12345678000
-mxgx223 maxmag 1234567800  1  -> 1234567800
-mxgx224 maxmag 1 1234567800   -> 1234567800
-mxgx225 maxmag 1234567890  1  -> 1234567890
-mxgx226 maxmag 1 1234567890   -> 1234567890
-mxgx227 maxmag 1234567891  1  -> 1234567891
-mxgx228 maxmag 1 1234567891   -> 1234567891
-mxgx229 maxmag 12345678901 1  -> 12345678901
-mxgx230 maxmag 1 12345678901  -> 12345678901
-mxgx231 maxmag 1234567896  1  -> 1234567896
-mxgx232 maxmag 1 1234567896   -> 1234567896
-mxgx233 maxmag -1234567891  1 -> -1234567891
-mxgx234 maxmag 1 -1234567891  -> -1234567891
-mxgx235 maxmag -12345678901 1 -> -12345678901
-mxgx236 maxmag 1 -12345678901 -> -12345678901
-mxgx237 maxmag -1234567896  1 -> -1234567896
-mxgx238 maxmag 1 -1234567896  -> -1234567896
-
--- from examples
-mxgx280 maxmag '3'   '2'  ->  '3'
-mxgx281 maxmag '-10' '3'  ->  '-10'
-mxgx282 maxmag '1.0' '1'  ->  '1'
-mxgx283 maxmag '1' '1.0'  ->  '1'
-mxgx284 maxmag '7' 'NaN'  ->  '7'
-
--- overflow and underflow tests ...
-maxExponent: 999999999
-minexponent: -999999999
-mxgx330 maxmag +1.23456789012345E-0 9E+999999999 ->  9E+999999999
-mxgx331 maxmag 9E+999999999 +1.23456789012345E-0 ->  9E+999999999
-mxgx332 maxmag +0.100 9E-999999999               ->  0.100
-mxgx333 maxmag 9E-999999999 +0.100               ->  0.100
-mxgx335 maxmag -1.23456789012345E-0 9E+999999999 ->  9E+999999999
-mxgx336 maxmag 9E+999999999 -1.23456789012345E-0 ->  9E+999999999
-mxgx337 maxmag -0.100 9E-999999999               ->  -0.100
-mxgx338 maxmag 9E-999999999 -0.100               ->  -0.100
-
-mxgx339 maxmag 1e-599999999 1e-400000001   ->  1E-400000001
-mxgx340 maxmag 1e-599999999 1e-400000000   ->  1E-400000000
-mxgx341 maxmag 1e-600000000 1e-400000000   ->  1E-400000000
-mxgx342 maxmag 9e-999999998 0.01           ->  0.01
-mxgx343 maxmag 9e-999999998 0.1            ->  0.1
-mxgx344 maxmag 0.01 9e-999999998           ->  0.01
-mxgx345 maxmag 1e599999999 1e400000001     ->  1E+599999999
-mxgx346 maxmag 1e599999999 1e400000000     ->  1E+599999999
-mxgx347 maxmag 1e600000000 1e400000000     ->  1E+600000000
-mxgx348 maxmag 9e999999998 100             ->  9E+999999998
-mxgx349 maxmag 9e999999998 10              ->  9E+999999998
-mxgx350 maxmag 100  9e999999998            ->  9E+999999998
--- signs
-mxgx351 maxmag  1e+777777777  1e+411111111 ->  1E+777777777
-mxgx352 maxmag  1e+777777777 -1e+411111111 ->  1E+777777777
-mxgx353 maxmag -1e+777777777  1e+411111111 -> -1E+777777777
-mxgx354 maxmag -1e+777777777 -1e+411111111 -> -1E+777777777
-mxgx355 maxmag  1e-777777777  1e-411111111 ->  1E-411111111
-mxgx356 maxmag  1e-777777777 -1e-411111111 -> -1E-411111111
-mxgx357 maxmag -1e-777777777  1e-411111111 ->  1E-411111111
-mxgx358 maxmag -1e-777777777 -1e-411111111 -> -1E-411111111
-
--- expanded list from min/max 754r purple prose
--- [explicit tests for exponent ordering]
-mxgx401 maxmag  Inf    1.1     ->  Infinity
-mxgx402 maxmag  1.1    1       ->  1.1
-mxgx403 maxmag  1      1.0     ->  1
-mxgx404 maxmag  1.0    0.1     ->  1.0
-mxgx405 maxmag  0.1    0.10    ->  0.1
-mxgx406 maxmag  0.10   0.100   ->  0.10
-mxgx407 maxmag  0.10   0       ->  0.10
-mxgx408 maxmag  0      0.0     ->  0
-mxgx409 maxmag  0.0   -0       ->  0.0
-mxgx410 maxmag  0.0   -0.0     ->  0.0
-mxgx411 maxmag  0.00  -0.0     ->  0.00
-mxgx412 maxmag  0.0   -0.00    ->  0.0
-mxgx413 maxmag  0     -0.0     ->  0
-mxgx414 maxmag  0     -0       ->  0
-mxgx415 maxmag -0.0   -0       -> -0.0
-mxgx416 maxmag -0     -0.100   -> -0.100
-mxgx417 maxmag -0.100 -0.10    -> -0.100
-mxgx418 maxmag -0.10  -0.1     -> -0.10
-mxgx419 maxmag -0.1   -1.0     -> -1.0
-mxgx420 maxmag -1.0   -1       -> -1.0
-mxgx421 maxmag -1     -1.1     -> -1.1
-mxgx423 maxmag -1.1   -Inf     -> -Infinity
--- same with operands reversed
-mxgx431 maxmag  1.1    Inf     ->  Infinity
-mxgx432 maxmag  1      1.1     ->  1.1
-mxgx433 maxmag  1.0    1       ->  1
-mxgx434 maxmag  0.1    1.0     ->  1.0
-mxgx435 maxmag  0.10   0.1     ->  0.1
-mxgx436 maxmag  0.100  0.10    ->  0.10
-mxgx437 maxmag  0      0.10    ->  0.10
-mxgx438 maxmag  0.0    0       ->  0
-mxgx439 maxmag -0      0.0     ->  0.0
-mxgx440 maxmag -0.0    0.0     ->  0.0
-mxgx441 maxmag -0.0    0.00    ->  0.00
-mxgx442 maxmag -0.00   0.0     ->  0.0
-mxgx443 maxmag -0.0    0       ->  0
-mxgx444 maxmag -0      0       ->  0
-mxgx445 maxmag -0     -0.0     -> -0.0
-mxgx446 maxmag -0.100 -0       -> -0.100
-mxgx447 maxmag -0.10  -0.100   -> -0.100
-mxgx448 maxmag -0.1   -0.10    -> -0.10
-mxgx449 maxmag -1.0   -0.1     -> -1.0
-mxgx450 maxmag -1     -1.0     -> -1.0
-mxgx451 maxmag -1.1   -1       -> -1.1
-mxgx453 maxmag -Inf   -1.1     -> -Infinity
--- largies
-mxgx460 maxmag  1000   1E+3    ->  1E+3
-mxgx461 maxmag  1E+3   1000    ->  1E+3
-mxgx462 maxmag  1000  -1E+3    ->  1000
-mxgx463 maxmag  1E+3  -1000    ->  1E+3
-mxgx464 maxmag -1000   1E+3    ->  1E+3
-mxgx465 maxmag -1E+3   1000    ->  1000
-mxgx466 maxmag -1000  -1E+3    -> -1000
-mxgx467 maxmag -1E+3  -1000    -> -1000
-
--- rounding (results treated as though plus)
-maxexponent: 999999999
-minexponent: -999999999
-precision: 3
-
-mxgx470 maxmag  1      .5     ->  1
-mxgx471 maxmag  10     5      ->  10
-mxgx472 maxmag  100    50     ->  100
-mxgx473 maxmag  1000   500    ->  1.00E+3 Rounded
-mxgx474 maxmag  10000  5000   ->  1.00E+4 Rounded
-mxgx475 maxmag  6      .5     ->  6
-mxgx476 maxmag  66     5      ->  66
-mxgx477 maxmag  666    50     ->  666
-mxgx478 maxmag  6666   500    ->  6.67E+3 Rounded Inexact
-mxgx479 maxmag  66666  5000   ->  6.67E+4 Rounded Inexact
-mxgx480 maxmag  33333  5000   ->  3.33E+4 Rounded Inexact
-mxgx481 maxmag  .5     1      ->  1
-mxgx482 maxmag  .5     10     ->  10
-mxgx483 maxmag  .5     100    ->  100
-mxgx484 maxmag  .5     1000   ->  1.00E+3 Rounded
-mxgx485 maxmag  .5     10000  ->  1.00E+4 Rounded
-mxgx486 maxmag  .5     6      ->  6
-mxgx487 maxmag  .5     66     ->  66
-mxgx488 maxmag  .5     666    ->  666
-mxgx489 maxmag  .5     6666   ->  6.67E+3 Rounded Inexact
-mxgx490 maxmag  .5     66666  ->  6.67E+4 Rounded Inexact
-mxgx491 maxmag  .5     33333  ->  3.33E+4 Rounded Inexact
-
--- overflow tests
-maxexponent: 999999999
-minexponent: -999999999
-precision: 3
-mxgx500 maxmag 9.999E+999999999  0 ->  Infinity Inexact Overflow Rounded
-mxgx501 maxmag -9.999E+999999999 0 -> -Infinity Inexact Overflow Rounded
-
--- subnormals and underflow
-precision: 3
-maxexponent: 999
-minexponent: -999
-mxgx510 maxmag  1.00E-999       0  ->   1.00E-999
-mxgx511 maxmag  0.1E-999        0  ->   1E-1000   Subnormal
-mxgx512 maxmag  0.10E-999       0  ->   1.0E-1000 Subnormal
-mxgx513 maxmag  0.100E-999      0  ->   1.0E-1000 Subnormal Rounded
-mxgx514 maxmag  0.01E-999       0  ->   1E-1001   Subnormal
--- next is rounded to Nmin
-mxgx515 maxmag  0.999E-999      0  ->   1.00E-999 Inexact Rounded Subnormal Underflow
-mxgx516 maxmag  0.099E-999      0  ->   1.0E-1000 Inexact Rounded Subnormal Underflow
-mxgx517 maxmag  0.009E-999      0  ->   1E-1001   Inexact Rounded Subnormal Underflow
-mxgx518 maxmag  0.001E-999      0  ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-mxgx519 maxmag  0.0009E-999     0  ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-mxgx520 maxmag  0.0001E-999     0  ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
-mxgx530 maxmag -1.00E-999       0  ->  -1.00E-999
-mxgx531 maxmag -0.1E-999        0  ->  -1E-1000   Subnormal
-mxgx532 maxmag -0.10E-999       0  ->  -1.0E-1000 Subnormal
-mxgx533 maxmag -0.100E-999      0  ->  -1.0E-1000 Subnormal Rounded
-mxgx534 maxmag -0.01E-999       0  ->  -1E-1001   Subnormal
--- next is rounded to -Nmin
-mxgx535 maxmag -0.999E-999      0  ->  -1.00E-999 Inexact Rounded Subnormal Underflow
-mxgx536 maxmag -0.099E-999      0  ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
-mxgx537 maxmag -0.009E-999      0  ->  -1E-1001   Inexact Rounded Subnormal Underflow
-mxgx538 maxmag -0.001E-999      0  ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-mxgx539 maxmag -0.0009E-999     0  ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-mxgx540 maxmag -0.0001E-999     0  ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
--- Null tests
-mxgx900 maxmag 10  #  -> NaN Invalid_operation
-mxgx901 maxmag  # 10  -> NaN Invalid_operation
-
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/min.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/min.decTest
deleted file mode 100644
index 1304930..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/min.decTest
+++ /dev/null
@@ -1,407 +0,0 @@
-------------------------------------------------------------------------
--- min.decTest -- decimal minimum                                     --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- we assume that base comparison is tested in compare.decTest, so
--- these mainly cover special cases and rounding
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
--- sanity checks
-mnmx001 min  -2  -2  -> -2
-mnmx002 min  -2  -1  -> -2
-mnmx003 min  -2   0  -> -2
-mnmx004 min  -2   1  -> -2
-mnmx005 min  -2   2  -> -2
-mnmx006 min  -1  -2  -> -2
-mnmx007 min  -1  -1  -> -1
-mnmx008 min  -1   0  -> -1
-mnmx009 min  -1   1  -> -1
-mnmx010 min  -1   2  -> -1
-mnmx011 min   0  -2  -> -2
-mnmx012 min   0  -1  -> -1
-mnmx013 min   0   0  ->  0
-mnmx014 min   0   1  ->  0
-mnmx015 min   0   2  ->  0
-mnmx016 min   1  -2  -> -2
-mnmx017 min   1  -1  -> -1
-mnmx018 min   1   0  ->  0
-mnmx019 min   1   1  ->  1
-mnmx020 min   1   2  ->  1
-mnmx021 min   2  -2  -> -2
-mnmx022 min   2  -1  -> -1
-mnmx023 min   2   0  ->  0
-mnmx025 min   2   1  ->  1
-mnmx026 min   2   2  ->  2
-
--- extended zeros
-mnmx030 min   0     0   ->  0
-mnmx031 min   0    -0   -> -0
-mnmx032 min   0    -0.0 -> -0.0
-mnmx033 min   0     0.0 ->  0.0
-mnmx034 min  -0     0   -> -0
-mnmx035 min  -0    -0   -> -0
-mnmx036 min  -0    -0.0 -> -0
-mnmx037 min  -0     0.0 -> -0
-mnmx038 min   0.0   0   ->  0.0
-mnmx039 min   0.0  -0   -> -0
-mnmx040 min   0.0  -0.0 -> -0.0
-mnmx041 min   0.0   0.0 ->  0.0
-mnmx042 min  -0.0   0   -> -0.0
-mnmx043 min  -0.0  -0   -> -0
-mnmx044 min  -0.0  -0.0 -> -0.0
-mnmx045 min  -0.0   0.0 -> -0.0
-
-mnmx046 min   0E1  -0E1 -> -0E+1
-mnmx047 min  -0E1   0E2 -> -0E+1
-mnmx048 min   0E2   0E1 ->  0E+1
-mnmx049 min   0E1   0E2 ->  0E+1
-mnmx050 min  -0E3  -0E2 -> -0E+3
-mnmx051 min  -0E2  -0E3 -> -0E+3
-
--- Specials
-precision: 9
-mnmx090 min  Inf  -Inf   -> -Infinity
-mnmx091 min  Inf  -1000  -> -1000
-mnmx092 min  Inf  -1     -> -1
-mnmx093 min  Inf  -0     -> -0
-mnmx094 min  Inf   0     ->  0
-mnmx095 min  Inf   1     ->  1
-mnmx096 min  Inf   1000  ->  1000
-mnmx097 min  Inf   Inf   ->  Infinity
-mnmx098 min -1000  Inf   -> -1000
-mnmx099 min -Inf   Inf   -> -Infinity
-mnmx100 min -1     Inf   -> -1
-mnmx101 min -0     Inf   -> -0
-mnmx102 min  0     Inf   ->  0
-mnmx103 min  1     Inf   ->  1
-mnmx104 min  1000  Inf   ->  1000
-mnmx105 min  Inf   Inf   ->  Infinity
-
-mnmx120 min -Inf  -Inf   -> -Infinity
-mnmx121 min -Inf  -1000  -> -Infinity
-mnmx122 min -Inf  -1     -> -Infinity
-mnmx123 min -Inf  -0     -> -Infinity
-mnmx124 min -Inf   0     -> -Infinity
-mnmx125 min -Inf   1     -> -Infinity
-mnmx126 min -Inf   1000  -> -Infinity
-mnmx127 min -Inf   Inf   -> -Infinity
-mnmx128 min -Inf  -Inf   -> -Infinity
-mnmx129 min -1000 -Inf   -> -Infinity
-mnmx130 min -1    -Inf   -> -Infinity
-mnmx131 min -0    -Inf   -> -Infinity
-mnmx132 min  0    -Inf   -> -Infinity
-mnmx133 min  1    -Inf   -> -Infinity
-mnmx134 min  1000 -Inf   -> -Infinity
-mnmx135 min  Inf  -Inf   -> -Infinity
-
--- 2004.08.02 754r chooses number over NaN in mixed cases
-mnmx141 min  NaN -Inf    ->  -Infinity
-mnmx142 min  NaN -1000   ->  -1000
-mnmx143 min  NaN -1      ->  -1
-mnmx144 min  NaN -0      ->  -0
-mnmx145 min  NaN  0      ->  0
-mnmx146 min  NaN  1      ->  1
-mnmx147 min  NaN  1000   ->  1000
-mnmx148 min  NaN  Inf    ->  Infinity
-mnmx149 min  NaN  NaN    ->  NaN
-mnmx150 min -Inf  NaN    -> -Infinity
-mnmx151 min -1000 NaN    -> -1000
-mnmx152 min -1   -NaN    -> -1
-mnmx153 min -0    NaN    -> -0
-mnmx154 min  0   -NaN    ->  0
-mnmx155 min  1    NaN    ->  1
-mnmx156 min  1000 NaN    ->  1000
-mnmx157 min  Inf  NaN    ->  Infinity
-
-mnmx161 min  sNaN -Inf   ->  NaN  Invalid_operation
-mnmx162 min  sNaN -1000  ->  NaN  Invalid_operation
-mnmx163 min  sNaN -1     ->  NaN  Invalid_operation
-mnmx164 min  sNaN -0     ->  NaN  Invalid_operation
-mnmx165 min -sNaN  0     -> -NaN  Invalid_operation
-mnmx166 min -sNaN  1     -> -NaN  Invalid_operation
-mnmx167 min  sNaN  1000  ->  NaN  Invalid_operation
-mnmx168 min  sNaN  NaN   ->  NaN  Invalid_operation
-mnmx169 min  sNaN sNaN   ->  NaN  Invalid_operation
-mnmx170 min  NaN  sNaN   ->  NaN  Invalid_operation
-mnmx171 min -Inf  sNaN   ->  NaN  Invalid_operation
-mnmx172 min -1000 sNaN   ->  NaN  Invalid_operation
-mnmx173 min -1    sNaN   ->  NaN  Invalid_operation
-mnmx174 min -0    sNaN   ->  NaN  Invalid_operation
-mnmx175 min  0    sNaN   ->  NaN  Invalid_operation
-mnmx176 min  1    sNaN   ->  NaN  Invalid_operation
-mnmx177 min  1000 sNaN   ->  NaN  Invalid_operation
-mnmx178 min  Inf  sNaN   ->  NaN  Invalid_operation
-mnmx179 min  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-mnmx181 min  NaN9   -Inf   -> -Infinity
-mnmx182 min -NaN8    9990  ->  9990
-mnmx183 min  NaN71   Inf   ->  Infinity
-
-mnmx184 min  NaN1    NaN54 ->  NaN1
-mnmx185 min  NaN22  -NaN53 ->  NaN22
-mnmx186 min -NaN3    NaN6  -> -NaN3
-mnmx187 min -NaN44   NaN7  -> -NaN44
-
-mnmx188 min -Inf     NaN41 -> -Infinity
-mnmx189 min -9999   -NaN33 -> -9999
-mnmx190 min  Inf     NaN2  ->  Infinity
-
-mnmx191 min  sNaN99 -Inf    ->  NaN99 Invalid_operation
-mnmx192 min  sNaN98 -11     ->  NaN98 Invalid_operation
-mnmx193 min -sNaN97  NaN8   -> -NaN97 Invalid_operation
-mnmx194 min  sNaN69 sNaN94  ->  NaN69 Invalid_operation
-mnmx195 min  NaN95  sNaN93  ->  NaN93 Invalid_operation
-mnmx196 min -Inf    sNaN92  ->  NaN92 Invalid_operation
-mnmx197 min  088    sNaN91  ->  NaN91 Invalid_operation
-mnmx198 min  Inf   -sNaN90  -> -NaN90 Invalid_operation
-mnmx199 min  NaN    sNaN86  ->  NaN86 Invalid_operation
-
--- rounding checks -- chosen is rounded, or not
-maxExponent: 999
-minexponent: -999
-precision: 9
-mnmx201 min -12345678000 1  -> -1.23456780E+10 Rounded
-mnmx202 min 1 -12345678000  -> -1.23456780E+10 Rounded
-mnmx203 min -1234567800  1  -> -1.23456780E+9 Rounded
-mnmx204 min 1 -1234567800   -> -1.23456780E+9 Rounded
-mnmx205 min -1234567890  1  -> -1.23456789E+9 Rounded
-mnmx206 min 1 -1234567890   -> -1.23456789E+9 Rounded
-mnmx207 min -1234567891  1  -> -1.23456789E+9 Inexact Rounded
-mnmx208 min 1 -1234567891   -> -1.23456789E+9 Inexact Rounded
-mnmx209 min -12345678901 1  -> -1.23456789E+10 Inexact Rounded
-mnmx210 min 1 -12345678901  -> -1.23456789E+10 Inexact Rounded
-mnmx211 min -1234567896  1  -> -1.23456790E+9 Inexact Rounded
-mnmx212 min 1 -1234567896   -> -1.23456790E+9 Inexact Rounded
-mnmx213 min 1234567891  1   -> 1
-mnmx214 min 1 1234567891    -> 1
-mnmx215 min 12345678901 1   -> 1
-mnmx216 min 1 12345678901   -> 1
-mnmx217 min 1234567896  1   -> 1
-mnmx218 min 1 1234567896    -> 1
-
-precision: 15
-mnmx221 min -12345678000 1  -> -12345678000
-mnmx222 min 1 -12345678000  -> -12345678000
-mnmx223 min -1234567800  1  -> -1234567800
-mnmx224 min 1 -1234567800   -> -1234567800
-mnmx225 min -1234567890  1  -> -1234567890
-mnmx226 min 1 -1234567890   -> -1234567890
-mnmx227 min -1234567891  1  -> -1234567891
-mnmx228 min 1 -1234567891   -> -1234567891
-mnmx229 min -12345678901 1  -> -12345678901
-mnmx230 min 1 -12345678901  -> -12345678901
-mnmx231 min -1234567896  1  -> -1234567896
-mnmx232 min 1 -1234567896   -> -1234567896
-mnmx233 min 1234567891  1   -> 1
-mnmx234 min 1 1234567891    -> 1
-mnmx235 min 12345678901 1   -> 1
-mnmx236 min 1 12345678901   -> 1
-mnmx237 min 1234567896  1   -> 1
-mnmx238 min 1 1234567896    -> 1
-
--- from examples
-mnmx280 min '3'   '2'  ->  '2'
-mnmx281 min '-10' '3'  ->  '-10'
-mnmx282 min '1.0' '1'  ->  '1.0'
-mnmx283 min '1' '1.0'  ->  '1.0'
-mnmx284 min '7' 'NaN'  ->  '7'
-
--- overflow and underflow tests .. subnormal results [inputs] now allowed
-maxExponent: 999999999
-minexponent: -999999999
-mnmx330 min -1.23456789012345E-0 -9E+999999999 -> -9E+999999999
-mnmx331 min -9E+999999999 -1.23456789012345E-0 -> -9E+999999999
-mnmx332 min -0.100 -9E-999999999               -> -0.100
-mnmx333 min -9E-999999999 -0.100               -> -0.100
-mnmx335 min +1.23456789012345E-0 -9E+999999999 -> -9E+999999999
-mnmx336 min -9E+999999999 1.23456789012345E-0  -> -9E+999999999
-mnmx337 min +0.100 -9E-999999999               -> -9E-999999999
-mnmx338 min -9E-999999999 0.100                -> -9E-999999999
-
-mnmx339 min -1e-599999999 -1e-400000001   ->  -1E-400000001
-mnmx340 min -1e-599999999 -1e-400000000   ->  -1E-400000000
-mnmx341 min -1e-600000000 -1e-400000000   ->  -1E-400000000
-mnmx342 min -9e-999999998 -0.01           ->  -0.01
-mnmx343 min -9e-999999998 -0.1            ->  -0.1
-mnmx344 min -0.01         -9e-999999998   ->  -0.01
-mnmx345 min -1e599999999  -1e400000001    ->  -1E+599999999
-mnmx346 min -1e599999999  -1e400000000    ->  -1E+599999999
-mnmx347 min -1e600000000  -1e400000000    ->  -1E+600000000
-mnmx348 min -9e999999998  -100            ->  -9E+999999998
-mnmx349 min -9e999999998  -10             ->  -9E+999999998
-mnmx350 min -100          -9e999999998    ->  -9E+999999998
--- signs
-mnmx351 min -1e+777777777 -1e+411111111 -> -1E+777777777
-mnmx352 min -1e+777777777 +1e+411111111 -> -1E+777777777
-mnmx353 min +1e+777777777 -1e+411111111 -> -1E+411111111
-mnmx354 min +1e+777777777 +1e+411111111 ->  1E+411111111
-mnmx355 min -1e-777777777 -1e-411111111 -> -1E-411111111
-mnmx356 min -1e-777777777 +1e-411111111 -> -1E-777777777
-mnmx357 min +1e-777777777 -1e-411111111 -> -1E-411111111
-mnmx358 min +1e-777777777 +1e-411111111 ->  1E-777777777
-
--- expanded list from min/max 754r purple prose
--- [explicit tests for exponent ordering]
-mnmx401 min  Inf    1.1     ->  1.1
-mnmx402 min  1.1    1       ->  1
-mnmx403 min  1      1.0     ->  1.0
-mnmx404 min  1.0    0.1     ->  0.1
-mnmx405 min  0.1    0.10    ->  0.10
-mnmx406 min  0.10   0.100   ->  0.100
-mnmx407 min  0.10   0       ->  0
-mnmx408 min  0      0.0     ->  0.0
-mnmx409 min  0.0   -0       -> -0
-mnmx410 min  0.0   -0.0     -> -0.0
-mnmx411 min  0.00  -0.0     -> -0.0
-mnmx412 min  0.0   -0.00    -> -0.00
-mnmx413 min  0     -0.0     -> -0.0
-mnmx414 min  0     -0       -> -0
-mnmx415 min -0.0   -0       -> -0
-mnmx416 min -0     -0.100   -> -0.100
-mnmx417 min -0.100 -0.10    -> -0.10
-mnmx418 min -0.10  -0.1     -> -0.1
-mnmx419 min -0.1   -1.0     -> -1.0
-mnmx420 min -1.0   -1       -> -1
-mnmx421 min -1     -1.1     -> -1.1
-mnmx423 min -1.1   -Inf     -> -Infinity
--- same with operands reversed
-mnmx431 min  1.1    Inf     ->  1.1
-mnmx432 min  1      1.1     ->  1
-mnmx433 min  1.0    1       ->  1.0
-mnmx434 min  0.1    1.0     ->  0.1
-mnmx435 min  0.10   0.1     ->  0.10
-mnmx436 min  0.100  0.10    ->  0.100
-mnmx437 min  0      0.10    ->  0
-mnmx438 min  0.0    0       ->  0.0
-mnmx439 min -0      0.0     -> -0
-mnmx440 min -0.0    0.0     -> -0.0
-mnmx441 min -0.0    0.00    -> -0.0
-mnmx442 min -0.00   0.0     -> -0.00
-mnmx443 min -0.0    0       -> -0.0
-mnmx444 min -0      0       -> -0
-mnmx445 min -0     -0.0     -> -0
-mnmx446 min -0.100 -0       -> -0.100
-mnmx447 min -0.10  -0.100   -> -0.10
-mnmx448 min -0.1   -0.10    -> -0.1
-mnmx449 min -1.0   -0.1     -> -1.0
-mnmx450 min -1     -1.0     -> -1
-mnmx451 min -1.1   -1       -> -1.1
-mnmx453 min -Inf   -1.1     -> -Infinity
--- largies
-mnmx460 min  1000   1E+3    ->  1000
-mnmx461 min  1E+3   1000    ->  1000
-mnmx462 min  1000  -1E+3    -> -1E+3
-mnmx463 min  1E+3  -1000    -> -1000
-mnmx464 min -1000   1E+3    -> -1000
-mnmx465 min -1E+3   1000    -> -1E+3
-mnmx466 min -1000  -1E+3    -> -1E+3
-mnmx467 min -1E+3  -1000    -> -1E+3
-
--- rounding (results treated as though plus)
-maxexponent: 999999999
-minexponent: -999999999
-precision: 3
-
-mnmx470 min  1      5      ->  1
-mnmx471 min  10     50     ->  10
-mnmx472 min  100    500    ->  100
-mnmx473 min  1000   5000   ->  1.00E+3 Rounded
-mnmx474 min  10000  50000  ->  1.00E+4 Rounded
-mnmx475 min  6      50     ->  6
-mnmx476 min  66     500    ->  66
-mnmx477 min  666    5000   ->  666
-mnmx478 min  6666   50000  ->  6.67E+3 Rounded Inexact
-mnmx479 min  66666  500000 ->  6.67E+4 Rounded Inexact
-mnmx480 min  33333  500000 ->  3.33E+4 Rounded Inexact
-mnmx481 min  75401  1      ->  1
-mnmx482 min  75402  10     ->  10
-mnmx483 min  75403  100    ->  100
-mnmx484 min  75404  1000   ->  1.00E+3 Rounded
-mnmx485 min  75405  10000  ->  1.00E+4 Rounded
-mnmx486 min  75406  6      ->  6
-mnmx487 min  75407  66     ->  66
-mnmx488 min  75408  666    ->  666
-mnmx489 min  75409  6666   ->  6.67E+3 Rounded Inexact
-mnmx490 min  75410  66666  ->  6.67E+4 Rounded Inexact
-mnmx491 min  75411  33333  ->  3.33E+4 Rounded Inexact
-
-
--- overflow tests
-maxexponent: 999999999
-minexponent: -999999999
-precision: 3
-mnmx500 min 9.999E+999999999  0 ->  0
-mnmx501 min -9.999E+999999999 0 -> -Infinity Inexact Overflow Rounded
-
--- subnormals and underflow
-precision: 3
-maxexponent: 999
-minexponent: -999
-mnmx510 min  1.00E-999       0  ->   0
-mnmx511 min  0.1E-999        0  ->   0
-mnmx512 min  0.10E-999       0  ->   0
-mnmx513 min  0.100E-999      0  ->   0
-mnmx514 min  0.01E-999       0  ->   0
-mnmx515 min  0.999E-999      0  ->   0
-mnmx516 min  0.099E-999      0  ->   0
-mnmx517 min  0.009E-999      0  ->   0
-mnmx518 min  0.001E-999      0  ->   0
-mnmx519 min  0.0009E-999     0  ->   0
-mnmx520 min  0.0001E-999     0  ->   0
-
-mnmx530 min -1.00E-999       0  ->  -1.00E-999
-mnmx531 min -0.1E-999        0  ->  -1E-1000   Subnormal
-mnmx532 min -0.10E-999       0  ->  -1.0E-1000 Subnormal
-mnmx533 min -0.100E-999      0  ->  -1.0E-1000 Subnormal Rounded
-mnmx534 min -0.01E-999       0  ->  -1E-1001   Subnormal
--- next is rounded to Nmin
-mnmx535 min -0.999E-999      0  ->  -1.00E-999 Inexact Rounded Subnormal Underflow
-mnmx536 min -0.099E-999      0  ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
-mnmx537 min -0.009E-999      0  ->  -1E-1001   Inexact Rounded Subnormal Underflow
-mnmx538 min -0.001E-999      0  ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-mnmx539 min -0.0009E-999     0  ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-mnmx540 min -0.0001E-999     0  ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
--- misalignment traps for little-endian
-precision: 9
-mnmx551 min      1.0       0.1  -> 0.1
-mnmx552 min      0.1       1.0  -> 0.1
-mnmx553 min     10.0       0.1  -> 0.1
-mnmx554 min      0.1      10.0  -> 0.1
-mnmx555 min      100       1.0  -> 1.0
-mnmx556 min      1.0       100  -> 1.0
-mnmx557 min     1000      10.0  -> 10.0
-mnmx558 min     10.0      1000  -> 10.0
-mnmx559 min    10000     100.0  -> 100.0
-mnmx560 min    100.0     10000  -> 100.0
-mnmx561 min   100000    1000.0  -> 1000.0
-mnmx562 min   1000.0    100000  -> 1000.0
-mnmx563 min  1000000   10000.0  -> 10000.0
-mnmx564 min  10000.0   1000000  -> 10000.0
-
--- Null tests
-mnm900 min 10  # -> NaN Invalid_operation
-mnm901 min  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/minmag.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/minmag.decTest
deleted file mode 100644
index 9e56233..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/minmag.decTest
+++ /dev/null
@@ -1,390 +0,0 @@
-------------------------------------------------------------------------
--- minmag.decTest -- decimal minimum by magnitude                     --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- we assume that base comparison is tested in compare.decTest, so
--- these mainly cover special cases and rounding
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
--- sanity checks
-mngx001 minmag  -2  -2  -> -2
-mngx002 minmag  -2  -1  -> -1
-mngx003 minmag  -2   0  ->  0
-mngx004 minmag  -2   1  ->  1
-mngx005 minmag  -2   2  -> -2
-mngx006 minmag  -1  -2  -> -1
-mngx007 minmag  -1  -1  -> -1
-mngx008 minmag  -1   0  ->  0
-mngx009 minmag  -1   1  -> -1
-mngx010 minmag  -1   2  -> -1
-mngx011 minmag   0  -2  ->  0
-mngx012 minmag   0  -1  ->  0
-mngx013 minmag   0   0  ->  0
-mngx014 minmag   0   1  ->  0
-mngx015 minmag   0   2  ->  0
-mngx016 minmag   1  -2  ->  1
-mngx017 minmag   1  -1  -> -1
-mngx018 minmag   1   0  ->  0
-mngx019 minmag   1   1  ->  1
-mngx020 minmag   1   2  ->  1
-mngx021 minmag   2  -2  -> -2
-mngx022 minmag   2  -1  -> -1
-mngx023 minmag   2   0  ->  0
-mngx025 minmag   2   1  ->  1
-mngx026 minmag   2   2  ->  2
-
--- extended zeros
-mngx030 minmag   0     0   ->  0
-mngx031 minmag   0    -0   -> -0
-mngx032 minmag   0    -0.0 -> -0.0
-mngx033 minmag   0     0.0 ->  0.0
-mngx034 minmag  -0     0   -> -0
-mngx035 minmag  -0    -0   -> -0
-mngx036 minmag  -0    -0.0 -> -0
-mngx037 minmag  -0     0.0 -> -0
-mngx038 minmag   0.0   0   ->  0.0
-mngx039 minmag   0.0  -0   -> -0
-mngx040 minmag   0.0  -0.0 -> -0.0
-mngx041 minmag   0.0   0.0 ->  0.0
-mngx042 minmag  -0.0   0   -> -0.0
-mngx043 minmag  -0.0  -0   -> -0
-mngx044 minmag  -0.0  -0.0 -> -0.0
-mngx045 minmag  -0.0   0.0 -> -0.0
-
-mngx046 minmag   0E1  -0E1 -> -0E+1
-mngx047 minmag  -0E1   0E2 -> -0E+1
-mngx048 minmag   0E2   0E1 ->  0E+1
-mngx049 minmag   0E1   0E2 ->  0E+1
-mngx050 minmag  -0E3  -0E2 -> -0E+3
-mngx051 minmag  -0E2  -0E3 -> -0E+3
-
--- Specials
-precision: 9
-mngx090 minmag  Inf  -Inf   -> -Infinity
-mngx091 minmag  Inf  -1000  -> -1000
-mngx092 minmag  Inf  -1     -> -1
-mngx093 minmag  Inf  -0     -> -0
-mngx094 minmag  Inf   0     ->  0
-mngx095 minmag  Inf   1     ->  1
-mngx096 minmag  Inf   1000  ->  1000
-mngx097 minmag  Inf   Inf   ->  Infinity
-mngx098 minmag -1000  Inf   -> -1000
-mngx099 minmag -Inf   Inf   -> -Infinity
-mngx100 minmag -1     Inf   -> -1
-mngx101 minmag -0     Inf   -> -0
-mngx102 minmag  0     Inf   ->  0
-mngx103 minmag  1     Inf   ->  1
-mngx104 minmag  1000  Inf   ->  1000
-mngx105 minmag  Inf   Inf   ->  Infinity
-
-mngx120 minmag -Inf  -Inf   -> -Infinity
-mngx121 minmag -Inf  -1000  -> -1000
-mngx122 minmag -Inf  -1     -> -1
-mngx123 minmag -Inf  -0     -> -0
-mngx124 minmag -Inf   0     ->  0
-mngx125 minmag -Inf   1     ->  1
-mngx126 minmag -Inf   1000  ->  1000
-mngx127 minmag -Inf   Inf   -> -Infinity
-mngx128 minmag -Inf  -Inf   -> -Infinity
-mngx129 minmag -1000 -Inf   -> -1000
-mngx130 minmag -1    -Inf   -> -1
-mngx131 minmag -0    -Inf   -> -0
-mngx132 minmag  0    -Inf   ->  0
-mngx133 minmag  1    -Inf   ->  1
-mngx134 minmag  1000 -Inf   ->  1000
-mngx135 minmag  Inf  -Inf   -> -Infinity
-
--- 2004.08.02 754r chooses number over NaN in mixed cases
-mngx141 minmag  NaN -Inf    ->  -Infinity
-mngx142 minmag  NaN -1000   ->  -1000
-mngx143 minmag  NaN -1      ->  -1
-mngx144 minmag  NaN -0      ->  -0
-mngx145 minmag  NaN  0      ->  0
-mngx146 minmag  NaN  1      ->  1
-mngx147 minmag  NaN  1000   ->  1000
-mngx148 minmag  NaN  Inf    ->  Infinity
-mngx149 minmag  NaN  NaN    ->  NaN
-mngx150 minmag -Inf  NaN    -> -Infinity
-mngx151 minmag -1000 NaN    -> -1000
-mngx152 minmag -1   -NaN    -> -1
-mngx153 minmag -0    NaN    -> -0
-mngx154 minmag  0   -NaN    ->  0
-mngx155 minmag  1    NaN    ->  1
-mngx156 minmag  1000 NaN    ->  1000
-mngx157 minmag  Inf  NaN    ->  Infinity
-
-mngx161 minmag  sNaN -Inf   ->  NaN  Invalid_operation
-mngx162 minmag  sNaN -1000  ->  NaN  Invalid_operation
-mngx163 minmag  sNaN -1     ->  NaN  Invalid_operation
-mngx164 minmag  sNaN -0     ->  NaN  Invalid_operation
-mngx165 minmag -sNaN  0     -> -NaN  Invalid_operation
-mngx166 minmag -sNaN  1     -> -NaN  Invalid_operation
-mngx167 minmag  sNaN  1000  ->  NaN  Invalid_operation
-mngx168 minmag  sNaN  NaN   ->  NaN  Invalid_operation
-mngx169 minmag  sNaN sNaN   ->  NaN  Invalid_operation
-mngx170 minmag  NaN  sNaN   ->  NaN  Invalid_operation
-mngx171 minmag -Inf  sNaN   ->  NaN  Invalid_operation
-mngx172 minmag -1000 sNaN   ->  NaN  Invalid_operation
-mngx173 minmag -1    sNaN   ->  NaN  Invalid_operation
-mngx174 minmag -0    sNaN   ->  NaN  Invalid_operation
-mngx175 minmag  0    sNaN   ->  NaN  Invalid_operation
-mngx176 minmag  1    sNaN   ->  NaN  Invalid_operation
-mngx177 minmag  1000 sNaN   ->  NaN  Invalid_operation
-mngx178 minmag  Inf  sNaN   ->  NaN  Invalid_operation
-mngx179 minmag  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-mngx181 minmag  NaN9   -Inf   -> -Infinity
-mngx182 minmag -NaN8    9990  ->  9990
-mngx183 minmag  NaN71   Inf   ->  Infinity
-
-mngx184 minmag  NaN1    NaN54 ->  NaN1
-mngx185 minmag  NaN22  -NaN53 ->  NaN22
-mngx186 minmag -NaN3    NaN6  -> -NaN3
-mngx187 minmag -NaN44   NaN7  -> -NaN44
-
-mngx188 minmag -Inf     NaN41 -> -Infinity
-mngx189 minmag -9999   -NaN33 -> -9999
-mngx190 minmag  Inf     NaN2  ->  Infinity
-
-mngx191 minmag  sNaN99 -Inf    ->  NaN99 Invalid_operation
-mngx192 minmag  sNaN98 -11     ->  NaN98 Invalid_operation
-mngx193 minmag -sNaN97  NaN8   -> -NaN97 Invalid_operation
-mngx194 minmag  sNaN69 sNaN94  ->  NaN69 Invalid_operation
-mngx195 minmag  NaN95  sNaN93  ->  NaN93 Invalid_operation
-mngx196 minmag -Inf    sNaN92  ->  NaN92 Invalid_operation
-mngx197 minmag  088    sNaN91  ->  NaN91 Invalid_operation
-mngx198 minmag  Inf   -sNaN90  -> -NaN90 Invalid_operation
-mngx199 minmag  NaN    sNaN86  ->  NaN86 Invalid_operation
-
--- rounding checks -- chosen is rounded, or not
-maxExponent: 999
-minexponent: -999
-precision: 9
-mngx201 minmag -12345678000 1  -> 1
-mngx202 minmag 1 -12345678000  -> 1
-mngx203 minmag -1234567800  1  -> 1
-mngx204 minmag 1 -1234567800   -> 1
-mngx205 minmag -1234567890  1  -> 1
-mngx206 minmag 1 -1234567890   -> 1
-mngx207 minmag -1234567891  1  -> 1
-mngx208 minmag 1 -1234567891   -> 1
-mngx209 minmag -12345678901 1  -> 1
-mngx210 minmag 1 -12345678901  -> 1
-mngx211 minmag -1234567896  1  -> 1
-mngx212 minmag 1 -1234567896   -> 1
-mngx213 minmag 1234567891  1   -> 1
-mngx214 minmag 1 1234567891    -> 1
-mngx215 minmag 12345678901 1   -> 1
-mngx216 minmag 1 12345678901   -> 1
-mngx217 minmag 1234567896  1   -> 1
-mngx218 minmag 1 1234567896    -> 1
-
-precision: 15
-mngx221 minmag -12345678000 1  -> 1
-mngx222 minmag 1 -12345678000  -> 1
-mngx223 minmag -1234567800  1  -> 1
-mngx224 minmag 1 -1234567800   -> 1
-mngx225 minmag -1234567890  1  -> 1
-mngx226 minmag 1 -1234567890   -> 1
-mngx227 minmag -1234567891  1  -> 1
-mngx228 minmag 1 -1234567891   -> 1
-mngx229 minmag -12345678901 1  -> 1
-mngx230 minmag 1 -12345678901  -> 1
-mngx231 minmag -1234567896  1  -> 1
-mngx232 minmag 1 -1234567896   -> 1
-mngx233 minmag 1234567891  1   -> 1
-mngx234 minmag 1 1234567891    -> 1
-mngx235 minmag 12345678901 1   -> 1
-mngx236 minmag 1 12345678901   -> 1
-mngx237 minmag 1234567896  1   -> 1
-mngx238 minmag 1 1234567896    -> 1
-
--- from examples
-mngx280 minmag '3'   '2'  ->  '2'
-mngx281 minmag '-10' '3'  ->  '3'
-mngx282 minmag '1.0' '1'  ->  '1.0'
-mngx283 minmag '1' '1.0'  ->  '1.0'
-mngx284 minmag '7' 'NaN'  ->  '7'
-
--- overflow and underflow tests .. subnormal results [inputs] now allowed
-maxExponent: 999999999
-minexponent: -999999999
-mngx330 minmag -1.23456789012345E-0 -9E+999999999 -> -1.23456789012345
-mngx331 minmag -9E+999999999 -1.23456789012345E-0 -> -1.23456789012345
-mngx332 minmag -0.100 -9E-999999999               -> -9E-999999999
-mngx333 minmag -9E-999999999 -0.100               -> -9E-999999999
-mngx335 minmag +1.23456789012345E-0 -9E+999999999 ->  1.23456789012345
-mngx336 minmag -9E+999999999 1.23456789012345E-0  ->  1.23456789012345
-mngx337 minmag +0.100 -9E-999999999               -> -9E-999999999
-mngx338 minmag -9E-999999999 0.100                -> -9E-999999999
-
-mngx339 minmag -1e-599999999 -1e-400000001   ->  -1E-599999999
-mngx340 minmag -1e-599999999 -1e-400000000   ->  -1E-599999999
-mngx341 minmag -1e-600000000 -1e-400000000   ->  -1E-600000000
-mngx342 minmag -9e-999999998 -0.01           ->  -9E-999999998
-mngx343 minmag -9e-999999998 -0.1            ->  -9E-999999998
-mngx344 minmag -0.01         -9e-999999998   ->  -9E-999999998
-mngx345 minmag -1e599999999  -1e400000001    ->  -1E+400000001
-mngx346 minmag -1e599999999  -1e400000000    ->  -1E+400000000
-mngx347 minmag -1e600000000  -1e400000000    ->  -1E+400000000
-mngx348 minmag -9e999999998  -100            ->  -100
-mngx349 minmag -9e999999998  -10             ->  -10
-mngx350 minmag -100          -9e999999998    ->  -100
--- signs
-mngx351 minmag -1e+777777777 -1e+411111111 -> -1E+411111111
-mngx352 minmag -1e+777777777 +1e+411111111 ->  1E+411111111
-mngx353 minmag +1e+777777777 -1e+411111111 -> -1E+411111111
-mngx354 minmag +1e+777777777 +1e+411111111 ->  1E+411111111
-mngx355 minmag -1e-777777777 -1e-411111111 -> -1E-777777777
-mngx356 minmag -1e-777777777 +1e-411111111 -> -1E-777777777
-mngx357 minmag +1e-777777777 -1e-411111111 ->  1E-777777777
-mngx358 minmag +1e-777777777 +1e-411111111 ->  1E-777777777
-
--- expanded list from min/max 754r purple prose
--- [explicit tests for exponent ordering]
-mngx401 minmag  Inf    1.1     ->  1.1
-mngx402 minmag  1.1    1       ->  1
-mngx403 minmag  1      1.0     ->  1.0
-mngx404 minmag  1.0    0.1     ->  0.1
-mngx405 minmag  0.1    0.10    ->  0.10
-mngx406 minmag  0.10   0.100   ->  0.100
-mngx407 minmag  0.10   0       ->  0
-mngx408 minmag  0      0.0     ->  0.0
-mngx409 minmag  0.0   -0       -> -0
-mngx410 minmag  0.0   -0.0     -> -0.0
-mngx411 minmag  0.00  -0.0     -> -0.0
-mngx412 minmag  0.0   -0.00    -> -0.00
-mngx413 minmag  0     -0.0     -> -0.0
-mngx414 minmag  0     -0       -> -0
-mngx415 minmag -0.0   -0       -> -0
-mngx416 minmag -0     -0.100   -> -0
-mngx417 minmag -0.100 -0.10    -> -0.10
-mngx418 minmag -0.10  -0.1     -> -0.1
-mngx419 minmag -0.1   -1.0     -> -0.1
-mngx420 minmag -1.0   -1       -> -1
-mngx421 minmag -1     -1.1     -> -1
-mngx423 minmag -1.1   -Inf     -> -1.1
--- same with operands reversed
-mngx431 minmag  1.1    Inf     ->  1.1
-mngx432 minmag  1      1.1     ->  1
-mngx433 minmag  1.0    1       ->  1.0
-mngx434 minmag  0.1    1.0     ->  0.1
-mngx435 minmag  0.10   0.1     ->  0.10
-mngx436 minmag  0.100  0.10    ->  0.100
-mngx437 minmag  0      0.10    ->  0
-mngx438 minmag  0.0    0       ->  0.0
-mngx439 minmag -0      0.0     -> -0
-mngx440 minmag -0.0    0.0     -> -0.0
-mngx441 minmag -0.0    0.00    -> -0.0
-mngx442 minmag -0.00   0.0     -> -0.00
-mngx443 minmag -0.0    0       -> -0.0
-mngx444 minmag -0      0       -> -0
-mngx445 minmag -0     -0.0     -> -0
-mngx446 minmag -0.100 -0       -> -0
-mngx447 minmag -0.10  -0.100   -> -0.10
-mngx448 minmag -0.1   -0.10    -> -0.1
-mngx449 minmag -1.0   -0.1     -> -0.1
-mngx450 minmag -1     -1.0     -> -1
-mngx451 minmag -1.1   -1       -> -1
-mngx453 minmag -Inf   -1.1     -> -1.1
--- largies
-mngx460 minmag  1000   1E+3    ->  1000
-mngx461 minmag  1E+3   1000    ->  1000
-mngx462 minmag  1000  -1E+3    -> -1E+3
-mngx463 minmag  1E+3  -1000    -> -1000
-mngx464 minmag -1000   1E+3    -> -1000
-mngx465 minmag -1E+3   1000    -> -1E+3
-mngx466 minmag -1000  -1E+3    -> -1E+3
-mngx467 minmag -1E+3  -1000    -> -1E+3
-
--- rounding (results treated as though plus)
-maxexponent: 999999999
-minexponent: -999999999
-precision: 3
-
-mngx470 minmag  1      5      ->  1
-mngx471 minmag  10     50     ->  10
-mngx472 minmag  100    500    ->  100
-mngx473 minmag  1000   5000   ->  1.00E+3 Rounded
-mngx474 minmag  10000  50000  ->  1.00E+4 Rounded
-mngx475 minmag  6      50     ->  6
-mngx476 minmag  66     500    ->  66
-mngx477 minmag  666    5000   ->  666
-mngx478 minmag  6666   50000  ->  6.67E+3 Rounded Inexact
-mngx479 minmag  66666  500000 ->  6.67E+4 Rounded Inexact
-mngx480 minmag  33333  500000 ->  3.33E+4 Rounded Inexact
-mngx481 minmag  75401  1      ->  1
-mngx482 minmag  75402  10     ->  10
-mngx483 minmag  75403  100    ->  100
-mngx484 minmag  75404  1000   ->  1.00E+3 Rounded
-mngx485 minmag  75405  10000  ->  1.00E+4 Rounded
-mngx486 minmag  75406  6      ->  6
-mngx487 minmag  75407  66     ->  66
-mngx488 minmag  75408  666    ->  666
-mngx489 minmag  75409  6666   ->  6.67E+3 Rounded Inexact
-mngx490 minmag  75410  66666  ->  6.67E+4 Rounded Inexact
-mngx491 minmag  75411  33333  ->  3.33E+4 Rounded Inexact
-
-
--- overflow tests
-maxexponent: 999999999
-minexponent: -999999999
-precision: 3
-mngx500 minmag 9.999E+999999999  0 ->  0
-mngx501 minmag -9.999E+999999999 0 ->  0
-
--- subnormals and underflow
-precision: 3
-maxexponent: 999
-minexponent: -999
-mngx510 minmag  1.00E-999       0  ->   0
-mngx511 minmag  0.1E-999        0  ->   0
-mngx512 minmag  0.10E-999       0  ->   0
-mngx513 minmag  0.100E-999      0  ->   0
-mngx514 minmag  0.01E-999       0  ->   0
-mngx515 minmag  0.999E-999      0  ->   0
-mngx516 minmag  0.099E-999      0  ->   0
-mngx517 minmag  0.009E-999      0  ->   0
-mngx518 minmag  0.001E-999      0  ->   0
-mngx519 minmag  0.0009E-999     0  ->   0
-mngx520 minmag  0.0001E-999     0  ->   0
-
-mngx530 minmag -1.00E-999       0  ->   0
-mngx531 minmag -0.1E-999        0  ->   0
-mngx532 minmag -0.10E-999       0  ->   0
-mngx533 minmag -0.100E-999      0  ->   0
-mngx534 minmag -0.01E-999       0  ->   0
-mngx535 minmag -0.999E-999      0  ->   0
-mngx536 minmag -0.099E-999      0  ->   0
-mngx537 minmag -0.009E-999      0  ->   0
-mngx538 minmag -0.001E-999      0  ->   0
-mngx539 minmag -0.0009E-999     0  ->   0
-mngx540 minmag -0.0001E-999     0  ->   0
-
-
--- Null tests
-mng900 minmag 10  # -> NaN Invalid_operation
-mng901 minmag  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/minus.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/minus.decTest
deleted file mode 100644
index 634d0c6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/minus.decTest
+++ /dev/null
@@ -1,182 +0,0 @@
-------------------------------------------------------------------------
--- minus.decTest -- decimal negation                                  --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This set of tests primarily tests the existence of the operator.
--- Subtraction, rounding, and more overflows are tested elsewhere.
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
-minx001 minus '1'      -> '-1'
-minx002 minus '-1'     -> '1'
-minx003 minus '1.00'   -> '-1.00'
-minx004 minus '-1.00'  -> '1.00'
-minx005 minus '0'      -> '0'
-minx006 minus '0.00'   -> '0.00'
-minx007 minus '00.0'   -> '0.0'
-minx008 minus '00.00'  -> '0.00'
-minx009 minus '00'     -> '0'
-
-minx010 minus '-2'     -> '2'
-minx011 minus '2'      -> '-2'
-minx012 minus '-2.00'  -> '2.00'
-minx013 minus '2.00'   -> '-2.00'
-minx014 minus '-0'     -> '0'
-minx015 minus '-0.00'  -> '0.00'
-minx016 minus '-00.0'  -> '0.0'
-minx017 minus '-00.00' -> '0.00'
-minx018 minus '-00'    -> '0'
-
--- "lhs" zeros in plus and minus have exponent = operand
-minx020 minus '-0E3'   -> '0E+3'
-minx021 minus '-0E2'   -> '0E+2'
-minx022 minus '-0E1'   -> '0E+1'
-minx023 minus '-0E0'   -> '0'
-minx024 minus '+0E0'   -> '0'
-minx025 minus '+0E1'   -> '0E+1'
-minx026 minus '+0E2'   -> '0E+2'
-minx027 minus '+0E3'   -> '0E+3'
-
-minx030 minus '-5E3'   -> '5E+3'
-minx031 minus '-5E8'   -> '5E+8'
-minx032 minus '-5E13'  -> '5E+13'
-minx033 minus '-5E18'  -> '5E+18'
-minx034 minus '+5E3'   -> '-5E+3'
-minx035 minus '+5E8'   -> '-5E+8'
-minx036 minus '+5E13'  -> '-5E+13'
-minx037 minus '+5E18'  -> '-5E+18'
-
-minx050 minus '-2000000' -> '2000000'
-minx051 minus '2000000'  -> '-2000000'
-precision: 7
-minx052 minus '-2000000' -> '2000000'
-minx053 minus '2000000'  -> '-2000000'
-precision: 6
-minx054 minus '-2000000' -> '2.00000E+6' Rounded
-minx055 minus '2000000'  -> '-2.00000E+6' Rounded
-precision: 3
-minx056 minus '-2000000' -> '2.00E+6' Rounded
-minx057 minus '2000000'  -> '-2.00E+6' Rounded
-
--- more fixed, potential LHS swaps/overlays if done by 0 subtract x
-precision: 9
-minx060 minus '56267E-10'   -> '-0.0000056267'
-minx061 minus '56267E-5'    -> '-0.56267'
-minx062 minus '56267E-2'    -> '-562.67'
-minx063 minus '56267E-1'    -> '-5626.7'
-minx065 minus '56267E-0'    -> '-56267'
-minx066 minus '56267E+0'    -> '-56267'
-minx067 minus '56267E+1'    -> '-5.6267E+5'
-minx068 minus '56267E+2'    -> '-5.6267E+6'
-minx069 minus '56267E+3'    -> '-5.6267E+7'
-minx070 minus '56267E+4'    -> '-5.6267E+8'
-minx071 minus '56267E+5'    -> '-5.6267E+9'
-minx072 minus '56267E+6'    -> '-5.6267E+10'
-minx080 minus '-56267E-10'  -> '0.0000056267'
-minx081 minus '-56267E-5'   -> '0.56267'
-minx082 minus '-56267E-2'   -> '562.67'
-minx083 minus '-56267E-1'   -> '5626.7'
-minx085 minus '-56267E-0'   -> '56267'
-minx086 minus '-56267E+0'   -> '56267'
-minx087 minus '-56267E+1'   -> '5.6267E+5'
-minx088 minus '-56267E+2'   -> '5.6267E+6'
-minx089 minus '-56267E+3'   -> '5.6267E+7'
-minx090 minus '-56267E+4'   -> '5.6267E+8'
-minx091 minus '-56267E+5'   -> '5.6267E+9'
-minx092 minus '-56267E+6'   -> '5.6267E+10'
-
-
--- overflow tests
-maxexponent: 999999999
-minexponent: -999999999
-precision: 3
-minx100 minus 9.999E+999999999  -> -Infinity Inexact Overflow Rounded
-minx101 minus -9.999E+999999999 ->  Infinity Inexact Overflow Rounded
-
--- subnormals and underflow
-precision: 3
-maxexponent: 999
-minexponent: -999
-minx110 minus  1.00E-999        ->  -1.00E-999
-minx111 minus  0.1E-999         ->  -1E-1000   Subnormal
-minx112 minus  0.10E-999        ->  -1.0E-1000 Subnormal
-minx113 minus  0.100E-999       ->  -1.0E-1000 Subnormal Rounded
-minx114 minus  0.01E-999        ->  -1E-1001   Subnormal
--- next is rounded to Emin
-minx115 minus  0.999E-999       ->  -1.00E-999 Inexact Rounded Subnormal Underflow
-minx116 minus  0.099E-999       ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
-minx117 minus  0.009E-999       ->  -1E-1001   Inexact Rounded Subnormal Underflow
-minx118 minus  0.001E-999       ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-minx119 minus  0.0009E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-minx120 minus  0.0001E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
-minx130 minus -1.00E-999        ->   1.00E-999
-minx131 minus -0.1E-999         ->   1E-1000   Subnormal
-minx132 minus -0.10E-999        ->   1.0E-1000 Subnormal
-minx133 minus -0.100E-999       ->   1.0E-1000 Subnormal Rounded
-minx134 minus -0.01E-999        ->   1E-1001   Subnormal
--- next is rounded to Emin
-minx135 minus -0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
-minx136 minus -0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
-minx137 minus -0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
-minx138 minus -0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-minx139 minus -0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-minx140 minus -0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
-
--- long operand checks
-maxexponent: 999
-minexponent: -999
-precision: 9
-minx301 minus 12345678000  -> -1.23456780E+10 Rounded
-minx302 minus 1234567800   -> -1.23456780E+9 Rounded
-minx303 minus 1234567890   -> -1.23456789E+9 Rounded
-minx304 minus 1234567891   -> -1.23456789E+9 Inexact Rounded
-minx305 minus 12345678901  -> -1.23456789E+10 Inexact Rounded
-minx306 minus 1234567896   -> -1.23456790E+9 Inexact Rounded
-
-precision: 15
--- still checking
-minx321 minus 12345678000  -> -12345678000
-minx322 minus 1234567800   -> -1234567800
-minx323 minus 1234567890   -> -1234567890
-minx324 minus 1234567891   -> -1234567891
-minx325 minus 12345678901  -> -12345678901
-minx326 minus 1234567896   -> -1234567896
-
--- specials
-minx420 minus 'Inf'    -> '-Infinity'
-minx421 minus '-Inf'   -> 'Infinity'
-minx422 minus   NaN    ->  NaN
-minx423 minus  sNaN    ->  NaN    Invalid_operation
-minx424 minus   NaN255 ->  NaN255
-minx425 minus  sNaN256 ->  NaN256 Invalid_operation
-minx426 minus  -NaN    -> -NaN
-minx427 minus -sNaN    -> -NaN    Invalid_operation
-minx428 minus  -NaN255 -> -NaN255
-minx429 minus -sNaN256 -> -NaN256 Invalid_operation
-
--- Null tests
-minx900 minus  # -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/multiply.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/multiply.decTest
deleted file mode 100644
index fec0f4f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/multiply.decTest
+++ /dev/null
@@ -1,731 +0,0 @@
-------------------------------------------------------------------------
--- multiply.decTest -- decimal multiplication                         --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
--- sanity checks (as base, above)
-mulx000 multiply 2      2 -> 4
-mulx001 multiply 2      3 -> 6
-mulx002 multiply 5      1 -> 5
-mulx003 multiply 5      2 -> 10
-mulx004 multiply 1.20   2 -> 2.40
-mulx005 multiply 1.20   0 -> 0.00
-mulx006 multiply 1.20  -2 -> -2.40
-mulx007 multiply -1.20  2 -> -2.40
-mulx008 multiply -1.20  0 -> -0.00
-mulx009 multiply -1.20 -2 -> 2.40
-mulx010 multiply 5.09 7.1 -> 36.139
-mulx011 multiply 2.5    4 -> 10.0
-mulx012 multiply 2.50   4 -> 10.00
-mulx013 multiply 1.23456789 1.00000000 -> 1.23456789 Rounded
-mulx014 multiply 9.999999999 9.999999999 -> 100.000000 Inexact Rounded
-mulx015 multiply 2.50   4 -> 10.00
-precision: 6
-mulx016 multiply 2.50   4 -> 10.00
-mulx017 multiply  9.999999999  9.999999999 ->  100.000 Inexact Rounded
-mulx018 multiply  9.999999999 -9.999999999 -> -100.000 Inexact Rounded
-mulx019 multiply -9.999999999  9.999999999 -> -100.000 Inexact Rounded
-mulx020 multiply -9.999999999 -9.999999999 ->  100.000 Inexact Rounded
-
--- 1999.12.21: next one is a edge case if intermediate longs are used
-precision: 15
-mulx059 multiply 999999999999 9765625 -> 9.76562499999023E+18 Inexact Rounded
-precision: 30
-mulx160 multiply 999999999999 9765625 -> 9765624999990234375
-precision: 9
------
-
--- zeros, etc.
-mulx021 multiply  0      0     ->  0
-mulx022 multiply  0     -0     -> -0
-mulx023 multiply -0      0     -> -0
-mulx024 multiply -0     -0     ->  0
-mulx025 multiply -0.0   -0.0   ->  0.00
-mulx026 multiply -0.0   -0.0   ->  0.00
-mulx027 multiply -0.0   -0.0   ->  0.00
-mulx028 multiply -0.0   -0.0   ->  0.00
-mulx030 multiply  5.00   1E-3  ->  0.00500
-mulx031 multiply  00.00  0.000 ->  0.00000
-mulx032 multiply  00.00  0E-3  ->  0.00000     -- rhs is 0
-mulx033 multiply  0E-3   00.00 ->  0.00000     -- lhs is 0
-mulx034 multiply -5.00   1E-3  -> -0.00500
-mulx035 multiply -00.00  0.000 -> -0.00000
-mulx036 multiply -00.00  0E-3  -> -0.00000     -- rhs is 0
-mulx037 multiply -0E-3   00.00 -> -0.00000     -- lhs is 0
-mulx038 multiply  5.00  -1E-3  -> -0.00500
-mulx039 multiply  00.00 -0.000 -> -0.00000
-mulx040 multiply  00.00 -0E-3  -> -0.00000     -- rhs is 0
-mulx041 multiply  0E-3  -00.00 -> -0.00000     -- lhs is 0
-mulx042 multiply -5.00  -1E-3  ->  0.00500
-mulx043 multiply -00.00 -0.000 ->  0.00000
-mulx044 multiply -00.00 -0E-3  ->  0.00000     -- rhs is 0
-mulx045 multiply -0E-3  -00.00 ->  0.00000     -- lhs is 0
-
--- examples from decarith
-mulx050 multiply 1.20 3        -> 3.60
-mulx051 multiply 7    3        -> 21
-mulx052 multiply 0.9  0.8      -> 0.72
-mulx053 multiply 0.9  -0       -> -0.0
-mulx054 multiply 654321 654321 -> 4.28135971E+11  Inexact Rounded
-
-mulx060 multiply 123.45 1e7  ->  1.2345E+9
-mulx061 multiply 123.45 1e8  ->  1.2345E+10
-mulx062 multiply 123.45 1e+9 ->  1.2345E+11
-mulx063 multiply 123.45 1e10 ->  1.2345E+12
-mulx064 multiply 123.45 1e11 ->  1.2345E+13
-mulx065 multiply 123.45 1e12 ->  1.2345E+14
-mulx066 multiply 123.45 1e13 ->  1.2345E+15
-
-
--- test some intermediate lengths
-precision: 9
-mulx080 multiply 0.1 123456789          -> 12345678.9
-mulx081 multiply 0.1 1234567891         -> 123456789 Inexact Rounded
-mulx082 multiply 0.1 12345678912        -> 1.23456789E+9 Inexact Rounded
-mulx083 multiply 0.1 12345678912345     -> 1.23456789E+12 Inexact Rounded
-mulx084 multiply 0.1 123456789          -> 12345678.9
-precision: 8
-mulx085 multiply 0.1 12345678912        -> 1.2345679E+9 Inexact Rounded
-mulx086 multiply 0.1 12345678912345     -> 1.2345679E+12 Inexact Rounded
-precision: 7
-mulx087 multiply 0.1 12345678912        -> 1.234568E+9 Inexact Rounded
-mulx088 multiply 0.1 12345678912345     -> 1.234568E+12 Inexact Rounded
-
-precision: 9
-mulx090 multiply 123456789          0.1 -> 12345678.9
-mulx091 multiply 1234567891         0.1 -> 123456789 Inexact Rounded
-mulx092 multiply 12345678912        0.1 -> 1.23456789E+9 Inexact Rounded
-mulx093 multiply 12345678912345     0.1 -> 1.23456789E+12 Inexact Rounded
-mulx094 multiply 123456789          0.1 -> 12345678.9
-precision: 8
-mulx095 multiply 12345678912        0.1 -> 1.2345679E+9 Inexact Rounded
-mulx096 multiply 12345678912345     0.1 -> 1.2345679E+12 Inexact Rounded
-precision: 7
-mulx097 multiply 12345678912        0.1 -> 1.234568E+9 Inexact Rounded
-mulx098 multiply 12345678912345     0.1 -> 1.234568E+12 Inexact Rounded
-
--- test some more edge cases and carries
-maxexponent: 9999
-minexponent: -9999
-precision: 33
-mulx101 multiply 9 9   -> 81
-mulx102 multiply 9 90   -> 810
-mulx103 multiply 9 900   -> 8100
-mulx104 multiply 9 9000   -> 81000
-mulx105 multiply 9 90000   -> 810000
-mulx106 multiply 9 900000   -> 8100000
-mulx107 multiply 9 9000000   -> 81000000
-mulx108 multiply 9 90000000   -> 810000000
-mulx109 multiply 9 900000000   -> 8100000000
-mulx110 multiply 9 9000000000   -> 81000000000
-mulx111 multiply 9 90000000000   -> 810000000000
-mulx112 multiply 9 900000000000   -> 8100000000000
-mulx113 multiply 9 9000000000000   -> 81000000000000
-mulx114 multiply 9 90000000000000   -> 810000000000000
-mulx115 multiply 9 900000000000000   -> 8100000000000000
-mulx116 multiply 9 9000000000000000   -> 81000000000000000
-mulx117 multiply 9 90000000000000000   -> 810000000000000000
-mulx118 multiply 9 900000000000000000   -> 8100000000000000000
-mulx119 multiply 9 9000000000000000000   -> 81000000000000000000
-mulx120 multiply 9 90000000000000000000   -> 810000000000000000000
-mulx121 multiply 9 900000000000000000000   -> 8100000000000000000000
-mulx122 multiply 9 9000000000000000000000   -> 81000000000000000000000
-mulx123 multiply 9 90000000000000000000000   -> 810000000000000000000000
--- test some more edge cases without carries
-mulx131 multiply 3 3   -> 9
-mulx132 multiply 3 30   -> 90
-mulx133 multiply 3 300   -> 900
-mulx134 multiply 3 3000   -> 9000
-mulx135 multiply 3 30000   -> 90000
-mulx136 multiply 3 300000   -> 900000
-mulx137 multiply 3 3000000   -> 9000000
-mulx138 multiply 3 30000000   -> 90000000
-mulx139 multiply 3 300000000   -> 900000000
-mulx140 multiply 3 3000000000   -> 9000000000
-mulx141 multiply 3 30000000000   -> 90000000000
-mulx142 multiply 3 300000000000   -> 900000000000
-mulx143 multiply 3 3000000000000   -> 9000000000000
-mulx144 multiply 3 30000000000000   -> 90000000000000
-mulx145 multiply 3 300000000000000   -> 900000000000000
-mulx146 multiply 3 3000000000000000   -> 9000000000000000
-mulx147 multiply 3 30000000000000000   -> 90000000000000000
-mulx148 multiply 3 300000000000000000   -> 900000000000000000
-mulx149 multiply 3 3000000000000000000   -> 9000000000000000000
-mulx150 multiply 3 30000000000000000000   -> 90000000000000000000
-mulx151 multiply 3 300000000000000000000   -> 900000000000000000000
-mulx152 multiply 3 3000000000000000000000   -> 9000000000000000000000
-mulx153 multiply 3 30000000000000000000000   -> 90000000000000000000000
-
-maxexponent: 999999999
-minexponent: -999999999
-precision: 9
--- test some cases that are close to exponent overflow/underflow
-mulx170 multiply 1 9e999999999    -> 9E+999999999
-mulx171 multiply 1 9.9e999999999  -> 9.9E+999999999
-mulx172 multiply 1 9.99e999999999 -> 9.99E+999999999
-mulx173 multiply 9e999999999    1 -> 9E+999999999
-mulx174 multiply 9.9e999999999  1 -> 9.9E+999999999
-mulx176 multiply 9.99e999999999 1 -> 9.99E+999999999
-mulx177 multiply 1 9.99999999e999999999 -> 9.99999999E+999999999
-mulx178 multiply 9.99999999e999999999 1 -> 9.99999999E+999999999
-
-mulx180 multiply 0.1 9e-999999998   -> 9E-999999999
-mulx181 multiply 0.1 99e-999999998  -> 9.9E-999999998
-mulx182 multiply 0.1 999e-999999998 -> 9.99E-999999997
-
-mulx183 multiply 0.1 9e-999999998     -> 9E-999999999
-mulx184 multiply 0.1 99e-999999998    -> 9.9E-999999998
-mulx185 multiply 0.1 999e-999999998   -> 9.99E-999999997
-mulx186 multiply 0.1 999e-999999997   -> 9.99E-999999996
-mulx187 multiply 0.1 9999e-999999997  -> 9.999E-999999995
-mulx188 multiply 0.1 99999e-999999997 -> 9.9999E-999999994
-
-mulx190 multiply 1 9e-999999998   -> 9E-999999998
-mulx191 multiply 1 99e-999999998  -> 9.9E-999999997
-mulx192 multiply 1 999e-999999998 -> 9.99E-999999996
-mulx193 multiply 9e-999999998   1 -> 9E-999999998
-mulx194 multiply 99e-999999998  1 -> 9.9E-999999997
-mulx195 multiply 999e-999999998 1 -> 9.99E-999999996
-
-mulx196 multiply 1e-599999999 1e-400000000 -> 1E-999999999
-mulx197 multiply 1e-600000000 1e-399999999 -> 1E-999999999
-mulx198 multiply 1.2e-599999999 1.2e-400000000 -> 1.44E-999999999
-mulx199 multiply 1.2e-600000000 1.2e-399999999 -> 1.44E-999999999
-
-mulx201 multiply 1e599999999 1e400000000 -> 1E+999999999
-mulx202 multiply 1e600000000 1e399999999 -> 1E+999999999
-mulx203 multiply 1.2e599999999 1.2e400000000 -> 1.44E+999999999
-mulx204 multiply 1.2e600000000 1.2e399999999 -> 1.44E+999999999
-
--- long operand triangle
-precision: 33
-mulx246 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916511992830 Inexact Rounded
-precision: 32
-mulx247 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651199283  Inexact Rounded
-precision: 31
-mulx248 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165119928   Inexact Rounded
-precision: 30
-mulx249 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916511993    Inexact Rounded
-precision: 29
-mulx250 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651199     Inexact Rounded
-precision: 28
-mulx251 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165120      Inexact Rounded
-precision: 27
-mulx252 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916512       Inexact Rounded
-precision: 26
-mulx253 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651        Inexact Rounded
-precision: 25
-mulx254 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165         Inexact Rounded
-precision: 24
-mulx255 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671917          Inexact Rounded
-precision: 23
-mulx256 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967192           Inexact Rounded
-precision: 22
-mulx257 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719            Inexact Rounded
-precision: 21
-mulx258 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369672             Inexact Rounded
-precision: 20
-mulx259 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967              Inexact Rounded
-precision: 19
-mulx260 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933697               Inexact Rounded
-precision: 18
-mulx261 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193370                Inexact Rounded
-precision: 17
-mulx262 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119337                 Inexact Rounded
-precision: 16
-mulx263 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011934                  Inexact Rounded
-precision: 15
-mulx264 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193                   Inexact Rounded
-precision: 14
-mulx265 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119                    Inexact Rounded
-precision: 13
-mulx266 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908012                     Inexact Rounded
-precision: 12
-mulx267 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801                      Inexact Rounded
-precision: 11
-mulx268 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080                       Inexact Rounded
-precision: 10
-mulx269 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908                        Inexact Rounded
-precision:  9
-mulx270 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.291                         Inexact Rounded
-precision:  8
-mulx271 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29                          Inexact Rounded
-precision:  7
-mulx272 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.3                           Inexact Rounded
-precision:  6
-mulx273 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433                            Inexact Rounded
-precision:  5
-mulx274 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.4543E+5                         Inexact Rounded
-precision:  4
-mulx275 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.454E+5                         Inexact Rounded
-precision:  3
-mulx276 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.45E+5                         Inexact Rounded
-precision:  2
-mulx277 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.5E+5                         Inexact Rounded
-precision:  1
-mulx278 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1E+5                          Inexact Rounded
-
--- test some edge cases with exact rounding
-maxexponent: 9999
-minexponent: -9999
-precision: 9
-mulx301 multiply 9 9   -> 81
-mulx302 multiply 9 90   -> 810
-mulx303 multiply 9 900   -> 8100
-mulx304 multiply 9 9000   -> 81000
-mulx305 multiply 9 90000   -> 810000
-mulx306 multiply 9 900000   -> 8100000
-mulx307 multiply 9 9000000   -> 81000000
-mulx308 multiply 9 90000000   -> 810000000
-mulx309 multiply 9 900000000   -> 8.10000000E+9   Rounded
-mulx310 multiply 9 9000000000   -> 8.10000000E+10  Rounded
-mulx311 multiply 9 90000000000   -> 8.10000000E+11  Rounded
-mulx312 multiply 9 900000000000   -> 8.10000000E+12  Rounded
-mulx313 multiply 9 9000000000000   -> 8.10000000E+13  Rounded
-mulx314 multiply 9 90000000000000   -> 8.10000000E+14  Rounded
-mulx315 multiply 9 900000000000000   -> 8.10000000E+15  Rounded
-mulx316 multiply 9 9000000000000000   -> 8.10000000E+16  Rounded
-mulx317 multiply 9 90000000000000000   -> 8.10000000E+17  Rounded
-mulx318 multiply 9 900000000000000000   -> 8.10000000E+18  Rounded
-mulx319 multiply 9 9000000000000000000   -> 8.10000000E+19  Rounded
-mulx320 multiply 9 90000000000000000000   -> 8.10000000E+20  Rounded
-mulx321 multiply 9 900000000000000000000   -> 8.10000000E+21  Rounded
-mulx322 multiply 9 9000000000000000000000   -> 8.10000000E+22  Rounded
-mulx323 multiply 9 90000000000000000000000   -> 8.10000000E+23  Rounded
-
--- fastpath breakers
-precision:   29
-mulx330 multiply 1.491824697641270317824852952837224 1.105170918075647624811707826490246514675628614562883537345747603 -> 1.6487212707001281468486507878 Inexact Rounded
-precision:   55
-mulx331 multiply 0.8958341352965282506768545828765117803873717284891040428 0.8958341352965282506768545828765117803873717284891040428 -> 0.8025187979624784829842553829934069955890983696752228299 Inexact Rounded
-
-
--- tryzeros cases
-precision:   7
-rounding:    half_up
-maxExponent: 92
-minexponent: -92
-mulx504  multiply  0E-60 1000E-60  -> 0E-98 Clamped
-mulx505  multiply  100E+60 0E+60   -> 0E+92 Clamped
-
--- mixed with zeros
-maxexponent: 999999999
-minexponent: -999999999
-precision: 9
-mulx541 multiply  0    -1     -> -0
-mulx542 multiply -0    -1     ->  0
-mulx543 multiply  0     1     ->  0
-mulx544 multiply -0     1     -> -0
-mulx545 multiply -1     0     -> -0
-mulx546 multiply -1    -0     ->  0
-mulx547 multiply  1     0     ->  0
-mulx548 multiply  1    -0     -> -0
-
-mulx551 multiply  0.0  -1     -> -0.0
-mulx552 multiply -0.0  -1     ->  0.0
-mulx553 multiply  0.0   1     ->  0.0
-mulx554 multiply -0.0   1     -> -0.0
-mulx555 multiply -1.0   0     -> -0.0
-mulx556 multiply -1.0  -0     ->  0.0
-mulx557 multiply  1.0   0     ->  0.0
-mulx558 multiply  1.0  -0     -> -0.0
-
-mulx561 multiply  0    -1.0   -> -0.0
-mulx562 multiply -0    -1.0   ->  0.0
-mulx563 multiply  0     1.0   ->  0.0
-mulx564 multiply -0     1.0   -> -0.0
-mulx565 multiply -1     0.0   -> -0.0
-mulx566 multiply -1    -0.0   ->  0.0
-mulx567 multiply  1     0.0   ->  0.0
-mulx568 multiply  1    -0.0   -> -0.0
-
-mulx571 multiply  0.0  -1.0   -> -0.00
-mulx572 multiply -0.0  -1.0   ->  0.00
-mulx573 multiply  0.0   1.0   ->  0.00
-mulx574 multiply -0.0   1.0   -> -0.00
-mulx575 multiply -1.0   0.0   -> -0.00
-mulx576 multiply -1.0  -0.0   ->  0.00
-mulx577 multiply  1.0   0.0   ->  0.00
-mulx578 multiply  1.0  -0.0   -> -0.00
-
-
--- Specials
-mulx580 multiply  Inf  -Inf   -> -Infinity
-mulx581 multiply  Inf  -1000  -> -Infinity
-mulx582 multiply  Inf  -1     -> -Infinity
-mulx583 multiply  Inf  -0     ->  NaN  Invalid_operation
-mulx584 multiply  Inf   0     ->  NaN  Invalid_operation
-mulx585 multiply  Inf   1     ->  Infinity
-mulx586 multiply  Inf   1000  ->  Infinity
-mulx587 multiply  Inf   Inf   ->  Infinity
-mulx588 multiply -1000  Inf   -> -Infinity
-mulx589 multiply -Inf   Inf   -> -Infinity
-mulx590 multiply -1     Inf   -> -Infinity
-mulx591 multiply -0     Inf   ->  NaN  Invalid_operation
-mulx592 multiply  0     Inf   ->  NaN  Invalid_operation
-mulx593 multiply  1     Inf   ->  Infinity
-mulx594 multiply  1000  Inf   ->  Infinity
-mulx595 multiply  Inf   Inf   ->  Infinity
-
-mulx600 multiply -Inf  -Inf   ->  Infinity
-mulx601 multiply -Inf  -1000  ->  Infinity
-mulx602 multiply -Inf  -1     ->  Infinity
-mulx603 multiply -Inf  -0     ->  NaN  Invalid_operation
-mulx604 multiply -Inf   0     ->  NaN  Invalid_operation
-mulx605 multiply -Inf   1     -> -Infinity
-mulx606 multiply -Inf   1000  -> -Infinity
-mulx607 multiply -Inf   Inf   -> -Infinity
-mulx608 multiply -1000  Inf   -> -Infinity
-mulx609 multiply -Inf  -Inf   ->  Infinity
-mulx610 multiply -1    -Inf   ->  Infinity
-mulx611 multiply -0    -Inf   ->  NaN  Invalid_operation
-mulx612 multiply  0    -Inf   ->  NaN  Invalid_operation
-mulx613 multiply  1    -Inf   -> -Infinity
-mulx614 multiply  1000 -Inf   -> -Infinity
-mulx615 multiply  Inf  -Inf   -> -Infinity
-
-mulx621 multiply  NaN -Inf    ->  NaN
-mulx622 multiply  NaN -1000   ->  NaN
-mulx623 multiply  NaN -1      ->  NaN
-mulx624 multiply  NaN -0      ->  NaN
-mulx625 multiply  NaN  0      ->  NaN
-mulx626 multiply  NaN  1      ->  NaN
-mulx627 multiply  NaN  1000   ->  NaN
-mulx628 multiply  NaN  Inf    ->  NaN
-mulx629 multiply  NaN  NaN    ->  NaN
-mulx630 multiply -Inf  NaN    ->  NaN
-mulx631 multiply -1000 NaN    ->  NaN
-mulx632 multiply -1    NaN    ->  NaN
-mulx633 multiply -0    NaN    ->  NaN
-mulx634 multiply  0    NaN    ->  NaN
-mulx635 multiply  1    NaN    ->  NaN
-mulx636 multiply  1000 NaN    ->  NaN
-mulx637 multiply  Inf  NaN    ->  NaN
-
-mulx641 multiply  sNaN -Inf   ->  NaN  Invalid_operation
-mulx642 multiply  sNaN -1000  ->  NaN  Invalid_operation
-mulx643 multiply  sNaN -1     ->  NaN  Invalid_operation
-mulx644 multiply  sNaN -0     ->  NaN  Invalid_operation
-mulx645 multiply  sNaN  0     ->  NaN  Invalid_operation
-mulx646 multiply  sNaN  1     ->  NaN  Invalid_operation
-mulx647 multiply  sNaN  1000  ->  NaN  Invalid_operation
-mulx648 multiply  sNaN  NaN   ->  NaN  Invalid_operation
-mulx649 multiply  sNaN sNaN   ->  NaN  Invalid_operation
-mulx650 multiply  NaN  sNaN   ->  NaN  Invalid_operation
-mulx651 multiply -Inf  sNaN   ->  NaN  Invalid_operation
-mulx652 multiply -1000 sNaN   ->  NaN  Invalid_operation
-mulx653 multiply -1    sNaN   ->  NaN  Invalid_operation
-mulx654 multiply -0    sNaN   ->  NaN  Invalid_operation
-mulx655 multiply  0    sNaN   ->  NaN  Invalid_operation
-mulx656 multiply  1    sNaN   ->  NaN  Invalid_operation
-mulx657 multiply  1000 sNaN   ->  NaN  Invalid_operation
-mulx658 multiply  Inf  sNaN   ->  NaN  Invalid_operation
-mulx659 multiply  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-mulx661 multiply  NaN9 -Inf   ->  NaN9
-mulx662 multiply  NaN8  999   ->  NaN8
-mulx663 multiply  NaN71 Inf   ->  NaN71
-mulx664 multiply  NaN6  NaN5  ->  NaN6
-mulx665 multiply -Inf   NaN4  ->  NaN4
-mulx666 multiply -999   NaN33 ->  NaN33
-mulx667 multiply  Inf   NaN2  ->  NaN2
-
-mulx671 multiply  sNaN99 -Inf    ->  NaN99 Invalid_operation
-mulx672 multiply  sNaN98 -11     ->  NaN98 Invalid_operation
-mulx673 multiply  sNaN97  NaN    ->  NaN97 Invalid_operation
-mulx674 multiply  sNaN16 sNaN94  ->  NaN16 Invalid_operation
-mulx675 multiply  NaN95  sNaN93  ->  NaN93 Invalid_operation
-mulx676 multiply -Inf    sNaN92  ->  NaN92 Invalid_operation
-mulx677 multiply  088    sNaN91  ->  NaN91 Invalid_operation
-mulx678 multiply  Inf    sNaN90  ->  NaN90 Invalid_operation
-mulx679 multiply  NaN    sNaN89  ->  NaN89 Invalid_operation
-
-mulx681 multiply -NaN9 -Inf   -> -NaN9
-mulx682 multiply -NaN8  999   -> -NaN8
-mulx683 multiply -NaN71 Inf   -> -NaN71
-mulx684 multiply -NaN6 -NaN5  -> -NaN6
-mulx685 multiply -Inf  -NaN4  -> -NaN4
-mulx686 multiply -999  -NaN33 -> -NaN33
-mulx687 multiply  Inf  -NaN2  -> -NaN2
-
-mulx691 multiply -sNaN99 -Inf    -> -NaN99 Invalid_operation
-mulx692 multiply -sNaN98 -11     -> -NaN98 Invalid_operation
-mulx693 multiply -sNaN97  NaN    -> -NaN97 Invalid_operation
-mulx694 multiply -sNaN16 -sNaN94 -> -NaN16 Invalid_operation
-mulx695 multiply -NaN95  -sNaN93 -> -NaN93 Invalid_operation
-mulx696 multiply -Inf    -sNaN92 -> -NaN92 Invalid_operation
-mulx697 multiply  088    -sNaN91 -> -NaN91 Invalid_operation
-mulx698 multiply  Inf    -sNaN90 -> -NaN90 Invalid_operation
-mulx699 multiply -NaN    -sNaN89 -> -NaN89 Invalid_operation
-
-mulx701 multiply -NaN  -Inf   -> -NaN
-mulx702 multiply -NaN   999   -> -NaN
-mulx703 multiply -NaN   Inf   -> -NaN
-mulx704 multiply -NaN  -NaN   -> -NaN
-mulx705 multiply -Inf  -NaN0  -> -NaN
-mulx706 multiply -999  -NaN   -> -NaN
-mulx707 multiply  Inf  -NaN   -> -NaN
-
-mulx711 multiply -sNaN   -Inf    -> -NaN Invalid_operation
-mulx712 multiply -sNaN   -11     -> -NaN Invalid_operation
-mulx713 multiply -sNaN00  NaN    -> -NaN Invalid_operation
-mulx714 multiply -sNaN   -sNaN   -> -NaN Invalid_operation
-mulx715 multiply -NaN    -sNaN   -> -NaN Invalid_operation
-mulx716 multiply -Inf    -sNaN   -> -NaN Invalid_operation
-mulx717 multiply  088    -sNaN   -> -NaN Invalid_operation
-mulx718 multiply  Inf    -sNaN   -> -NaN Invalid_operation
-mulx719 multiply -NaN    -sNaN   -> -NaN Invalid_operation
-
--- overflow and underflow tests .. note subnormal results
-maxexponent: 999999999
-minexponent: -999999999
-mulx730 multiply +1.23456789012345E-0 9E+999999999 -> Infinity Inexact Overflow Rounded
-mulx731 multiply 9E+999999999 +1.23456789012345E-0 -> Infinity Inexact Overflow Rounded
-mulx732 multiply +0.100 9E-999999999 -> 9.00E-1000000000 Subnormal
-mulx733 multiply 9E-999999999 +0.100 -> 9.00E-1000000000 Subnormal
-mulx735 multiply -1.23456789012345E-0 9E+999999999 -> -Infinity Inexact Overflow Rounded
-mulx736 multiply 9E+999999999 -1.23456789012345E-0 -> -Infinity Inexact Overflow Rounded
-mulx737 multiply -0.100 9E-999999999 -> -9.00E-1000000000 Subnormal
-mulx738 multiply 9E-999999999 -0.100 -> -9.00E-1000000000 Subnormal
-
-mulx739 multiply 1e-599999999 1e-400000001 -> 1E-1000000000 Subnormal
-mulx740 multiply 1e-599999999 1e-400000000 -> 1E-999999999
-mulx741 multiply 1e-600000000 1e-400000000 -> 1E-1000000000 Subnormal
-mulx742 multiply 9e-999999998 0.01 -> 9E-1000000000 Subnormal
-mulx743 multiply 9e-999999998 0.1  -> 9E-999999999
-mulx744 multiply 0.01 9e-999999998 -> 9E-1000000000 Subnormal
-mulx745 multiply 1e599999999 1e400000001 -> Infinity Overflow Inexact Rounded
-mulx746 multiply 1e599999999 1e400000000 -> 1E+999999999
-mulx747 multiply 1e600000000 1e400000000 -> Infinity Overflow Inexact Rounded
-mulx748 multiply 9e999999998 100  -> Infinity Overflow Inexact Rounded
-mulx749 multiply 9e999999998 10   -> 9.0E+999999999
-mulx750 multiply 100  9e999999998 -> Infinity Overflow Inexact Rounded
--- signs
-mulx751 multiply  1e+777777777  1e+411111111 ->  Infinity Overflow Inexact Rounded
-mulx752 multiply  1e+777777777 -1e+411111111 -> -Infinity Overflow Inexact Rounded
-mulx753 multiply -1e+777777777  1e+411111111 -> -Infinity Overflow Inexact Rounded
-mulx754 multiply -1e+777777777 -1e+411111111 ->  Infinity Overflow Inexact Rounded
-mulx755 multiply  1e-777777777  1e-411111111 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-mulx756 multiply  1e-777777777 -1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-mulx757 multiply -1e-777777777  1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-mulx758 multiply -1e-777777777 -1e-411111111 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-
--- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
-precision: 9
-mulx760 multiply 1e-600000000 1e-400000001 -> 1E-1000000001 Subnormal
-mulx761 multiply 1e-600000000 1e-400000002 -> 1E-1000000002 Subnormal
-mulx762 multiply 1e-600000000 1e-400000003 -> 1E-1000000003 Subnormal
-mulx763 multiply 1e-600000000 1e-400000004 -> 1E-1000000004 Subnormal
-mulx764 multiply 1e-600000000 1e-400000005 -> 1E-1000000005 Subnormal
-mulx765 multiply 1e-600000000 1e-400000006 -> 1E-1000000006 Subnormal
-mulx766 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
-mulx767 multiply 1e-600000000 1e-400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-mulx768 multiply 1e-600000000 1e-400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-mulx769 multiply 1e-600000000 1e-400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
--- [no equivalent of 'subnormal' for overflow]
-mulx770 multiply 1e+600000000 1e+400000001 -> Infinity Overflow Inexact Rounded
-mulx771 multiply 1e+600000000 1e+400000002 -> Infinity Overflow Inexact Rounded
-mulx772 multiply 1e+600000000 1e+400000003 -> Infinity Overflow Inexact Rounded
-mulx773 multiply 1e+600000000 1e+400000004 -> Infinity Overflow Inexact Rounded
-mulx774 multiply 1e+600000000 1e+400000005 -> Infinity Overflow Inexact Rounded
-mulx775 multiply 1e+600000000 1e+400000006 -> Infinity Overflow Inexact Rounded
-mulx776 multiply 1e+600000000 1e+400000007 -> Infinity Overflow Inexact Rounded
-mulx777 multiply 1e+600000000 1e+400000008 -> Infinity Overflow Inexact Rounded
-mulx778 multiply 1e+600000000 1e+400000009 -> Infinity Overflow Inexact Rounded
-mulx779 multiply 1e+600000000 1e+400000010 -> Infinity Overflow Inexact Rounded
-
--- 'subnormal' test edge condition at higher precisions
-precision: 99
-mulx780 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
-mulx781 multiply 1e-600000000 1e-400000008 -> 1E-1000000008 Subnormal
-mulx782 multiply 1e-600000000 1e-400000097 -> 1E-1000000097 Subnormal
-mulx783 multiply 1e-600000000 1e-400000098 -> 0E-1000000097 Underflow Subnormal Inexact Rounded Clamped
-precision: 999
-mulx784 multiply 1e-600000000 1e-400000997 -> 1E-1000000997 Subnormal
-mulx785 multiply 1e-600000000 1e-400000998 -> 0E-1000000997 Underflow Subnormal Inexact Rounded Clamped
-
--- following testcases [through mulx800] not yet run against code
-precision: 9999
-mulx786 multiply 1e-600000000 1e-400009997 -> 1E-1000009997 Subnormal
-mulx787 multiply 1e-600000000 1e-400009998 -> 0E-1000009997 Underflow Subnormal Inexact Rounded Clamped
-precision: 99999
-mulx788 multiply 1e-600000000 1e-400099997 -> 1E-1000099997 Subnormal
-mulx789 multiply 1e-600000000 1e-400099998 -> 0E-1000099997 Underflow Subnormal Inexact Rounded Clamped
-precision: 999999
-mulx790 multiply 1e-600000000 1e-400999997 -> 1E-1000999997 Subnormal
-mulx791 multiply 1e-600000000 1e-400999998 -> 0E-1000999997 Underflow Subnormal Inexact Rounded Clamped
-precision: 9999999
-mulx792 multiply 1e-600000000 1e-409999997 -> 1E-1009999997 Subnormal
-mulx793 multiply 1e-600000000 1e-409999998 -> 0E-1009999997 Underflow Subnormal Inexact Rounded Clamped
-precision: 99999999
-mulx794 multiply 1e-600000000 1e-499999997 -> 1E-1099999997 Subnormal
-mulx795 multiply 1e-600000000 1e-499999998 -> 0E-1099999997 Underflow Subnormal Inexact Rounded Clamped
-precision: 999999999
-mulx796 multiply 1e-999999999 1e-999999997 -> 1E-1999999996 Subnormal
-mulx797 multiply 1e-999999999 1e-999999998 -> 1E-1999999997 Subnormal
-mulx798 multiply 1e-999999999 1e-999999999 -> 0E-1999999997 Underflow Subnormal Inexact Rounded Clamped
-mulx799 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
-mulx800 multiply 1e-600000000 1e-400000008 -> 1E-1000000008 Subnormal
-
--- test subnormals rounding
-precision:   5
-maxExponent: 999
-minexponent: -999
-rounding:    half_even
-
-mulx801 multiply  1.0000E-999  1     -> 1.0000E-999
-mulx802 multiply  1.000E-999   1e-1  -> 1.000E-1000 Subnormal
-mulx803 multiply  1.00E-999    1e-2  -> 1.00E-1001  Subnormal
-mulx804 multiply  1.0E-999     1e-3  -> 1.0E-1002   Subnormal
-mulx805 multiply  1.0E-999     1e-4  -> 1E-1003     Subnormal Rounded
-mulx806 multiply  1.3E-999     1e-4  -> 1E-1003     Underflow Subnormal Inexact Rounded
-mulx807 multiply  1.5E-999     1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
-mulx808 multiply  1.7E-999     1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
-mulx809 multiply  2.3E-999     1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
-mulx810 multiply  2.5E-999     1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
-mulx811 multiply  2.7E-999     1e-4  -> 3E-1003     Underflow Subnormal Inexact Rounded
-mulx812 multiply  1.49E-999    1e-4  -> 1E-1003     Underflow Subnormal Inexact Rounded
-mulx813 multiply  1.50E-999    1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
-mulx814 multiply  1.51E-999    1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
-mulx815 multiply  2.49E-999    1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
-mulx816 multiply  2.50E-999    1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
-mulx817 multiply  2.51E-999    1e-4  -> 3E-1003     Underflow Subnormal Inexact Rounded
-
-mulx818 multiply  1E-999       1e-4  -> 1E-1003     Subnormal
-mulx819 multiply  3E-999       1e-5  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
-mulx820 multiply  5E-999       1e-5  -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
-mulx821 multiply  7E-999       1e-5  -> 1E-1003     Underflow Subnormal Inexact Rounded
-mulx822 multiply  9E-999       1e-5  -> 1E-1003     Underflow Subnormal Inexact Rounded
-mulx823 multiply  9.9E-999     1e-5  -> 1E-1003     Underflow Subnormal Inexact Rounded
-
-mulx824 multiply  1E-999      -1e-4  -> -1E-1003    Subnormal
-mulx825 multiply  3E-999      -1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
-mulx826 multiply -5E-999       1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
-mulx827 multiply  7E-999      -1e-5  -> -1E-1003    Underflow Subnormal Inexact Rounded
-mulx828 multiply -9E-999       1e-5  -> -1E-1003    Underflow Subnormal Inexact Rounded
-mulx829 multiply  9.9E-999    -1e-5  -> -1E-1003    Underflow Subnormal Inexact Rounded
-mulx830 multiply  3.0E-999    -1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded Clamped
-
-mulx831 multiply  1.0E-501     1e-501 -> 1.0E-1002   Subnormal
-mulx832 multiply  2.0E-501     2e-501 -> 4.0E-1002   Subnormal
-mulx833 multiply  4.0E-501     4e-501 -> 1.60E-1001  Subnormal
-mulx834 multiply 10.0E-501    10e-501 -> 1.000E-1000 Subnormal
-mulx835 multiply 30.0E-501    30e-501 -> 9.000E-1000 Subnormal
-mulx836 multiply 40.0E-501    40e-501 -> 1.6000E-999
-
--- squares
-mulx840 multiply  1E-502       1e-502 -> 0E-1003     Underflow Subnormal Inexact Rounded Clamped
-mulx841 multiply  1E-501       1e-501 -> 1E-1002     Subnormal
-mulx842 multiply  2E-501       2e-501 -> 4E-1002     Subnormal
-mulx843 multiply  4E-501       4e-501 -> 1.6E-1001   Subnormal
-mulx844 multiply 10E-501      10e-501 -> 1.00E-1000  Subnormal
-mulx845 multiply 30E-501      30e-501 -> 9.00E-1000  Subnormal
-mulx846 multiply 40E-501      40e-501 -> 1.600E-999
-
--- cubes
-mulx850 multiply  1E-670     1e-335 -> 0E-1003    Underflow Subnormal Inexact Rounded Clamped
-mulx851 multiply  1E-668     1e-334 -> 1E-1002    Subnormal
-mulx852 multiply  4E-668     2e-334 -> 8E-1002    Subnormal
-mulx853 multiply  9E-668     3e-334 -> 2.7E-1001  Subnormal
-mulx854 multiply 16E-668     4e-334 -> 6.4E-1001  Subnormal
-mulx855 multiply 25E-668     5e-334 -> 1.25E-1000 Subnormal
-mulx856 multiply 10E-668   100e-334 -> 1.000E-999
-
--- test derived from result of 0.099 ** 999 at 15 digits with unlimited exponent
-precision: 19
-mulx860 multiply  6636851557994578716E-520 6636851557994578716E-520 -> 4.40477986028551E-1003 Underflow Subnormal Inexact Rounded
-
--- Long operand overflow may be a different path
-precision: 3
-maxExponent: 999999999
-minexponent: -999999999
-mulx870 multiply 1  9.999E+999999999   ->  Infinity Inexact Overflow Rounded
-mulx871 multiply 1 -9.999E+999999999   -> -Infinity Inexact Overflow Rounded
-mulx872 multiply    9.999E+999999999 1 ->  Infinity Inexact Overflow Rounded
-mulx873 multiply   -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded
-
--- check for double-rounded subnormals
-precision:   5
-maxexponent: 79
-minexponent: -79
-mulx881 multiply  1.2347E-40  1.2347E-40  ->  1.524E-80  Inexact Rounded Subnormal Underflow
-mulx882 multiply  1.234E-40  1.234E-40    ->  1.523E-80  Inexact Rounded Subnormal Underflow
-mulx883 multiply  1.23E-40   1.23E-40     ->  1.513E-80  Inexact Rounded Subnormal Underflow
-mulx884 multiply  1.2E-40    1.2E-40      ->  1.44E-80   Subnormal
-mulx885 multiply  1.2E-40    1.2E-41      ->  1.44E-81   Subnormal
-mulx886 multiply  1.2E-40    1.2E-42      ->  1.4E-82    Subnormal Inexact Rounded Underflow
-mulx887 multiply  1.2E-40    1.3E-42      ->  1.6E-82    Subnormal Inexact Rounded Underflow
-mulx888 multiply  1.3E-40    1.3E-42      ->  1.7E-82    Subnormal Inexact Rounded Underflow
-mulx889 multiply  1.3E-40    1.3E-43      ->    2E-83    Subnormal Inexact Rounded Underflow
-mulx890 multiply  1.3E-41    1.3E-43      ->    0E-83    Clamped Subnormal Inexact Rounded Underflow
-
-mulx891 multiply  1.2345E-39   1.234E-40  ->  1.5234E-79 Inexact Rounded
-mulx892 multiply  1.23456E-39  1.234E-40  ->  1.5234E-79 Inexact Rounded
-mulx893 multiply  1.2345E-40   1.234E-40  ->  1.523E-80  Inexact Rounded Subnormal Underflow
-mulx894 multiply  1.23456E-40  1.234E-40  ->  1.523E-80  Inexact Rounded Subnormal Underflow
-mulx895 multiply  1.2345E-41   1.234E-40  ->  1.52E-81   Inexact Rounded Subnormal Underflow
-mulx896 multiply  1.23456E-41  1.234E-40  ->  1.52E-81   Inexact Rounded Subnormal Underflow
-
--- Now explore the case where we get a normal result with Underflow
-precision:   16
-rounding:    half_up
-maxExponent: 384
-minExponent: -383
-
-mulx900 multiply  0.3000000000E-191 0.3000000000E-191 -> 9.00000000000000E-384 Subnormal Rounded
-mulx901 multiply  0.3000000001E-191 0.3000000001E-191 -> 9.00000000600000E-384 Underflow Inexact Subnormal Rounded
-mulx902 multiply  9.999999999999999E-383  0.0999999999999         -> 9.99999999999000E-384 Underflow Inexact Subnormal Rounded
-mulx903 multiply  9.999999999999999E-383  0.09999999999999        -> 9.99999999999900E-384 Underflow Inexact Subnormal Rounded
-mulx904 multiply  9.999999999999999E-383  0.099999999999999       -> 9.99999999999990E-384 Underflow Inexact Subnormal Rounded
-mulx905 multiply  9.999999999999999E-383  0.0999999999999999      -> 9.99999999999999E-384 Underflow Inexact Subnormal Rounded
--- prove operands are exact
-mulx906 multiply  9.999999999999999E-383  1                       -> 9.999999999999999E-383
-mulx907 multiply                       1  0.09999999999999999     -> 0.09999999999999999
--- the next rounds to Nmin
-mulx908 multiply  9.999999999999999E-383  0.09999999999999999     -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-mulx909 multiply  9.999999999999999E-383  0.099999999999999999    -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-mulx910 multiply  9.999999999999999E-383  0.0999999999999999999   -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-mulx911 multiply  9.999999999999999E-383  0.09999999999999999999  -> 1.000000000000000E-383 Underflow Inexact Subnormal Rounded
-
-
--- Examples from SQL proposal (Krishna Kulkarni)
-precision:   34
-rounding:    half_up
-maxExponent: 6144
-minExponent: -6143
-mulx1001  multiply 130E-2  120E-2 -> 1.5600
-mulx1002  multiply 130E-2  12E-1  -> 1.560
-mulx1003  multiply 130E-2  1E0    -> 1.30
-mulx1004  multiply 1E2     1E4    -> 1E+6
-
--- payload decapitate
-precision: 5
-mulx1010  multiply 11 -sNaN1234567890 -> -NaN67890  Invalid_operation
-
--- Null tests
-mulx990 multiply 10  # -> NaN Invalid_operation
-mulx991 multiply  # 10 -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nextminus.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nextminus.decTest
deleted file mode 100644
index ba93066..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nextminus.decTest
+++ /dev/null
@@ -1,148 +0,0 @@
-------------------------------------------------------------------------
--- nextminus.decTest -- decimal next that is less [754r nextdown]     --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
-nextm001 nextminus  0.999999995 ->   0.999999994
-nextm002 nextminus  0.999999996 ->   0.999999995
-nextm003 nextminus  0.999999997 ->   0.999999996
-nextm004 nextminus  0.999999998 ->   0.999999997
-nextm005 nextminus  0.999999999 ->   0.999999998
-nextm006 nextminus  1.00000000  ->   0.999999999
-nextm007 nextminus  1.0         ->   0.999999999
-nextm008 nextminus  1           ->   0.999999999
-nextm009 nextminus  1.00000001  ->   1.00000000
-nextm010 nextminus  1.00000002  ->   1.00000001
-nextm011 nextminus  1.00000003  ->   1.00000002
-nextm012 nextminus  1.00000004  ->   1.00000003
-nextm013 nextminus  1.00000005  ->   1.00000004
-nextm014 nextminus  1.00000006  ->   1.00000005
-nextm015 nextminus  1.00000007  ->   1.00000006
-nextm016 nextminus  1.00000008  ->   1.00000007
-nextm017 nextminus  1.00000009  ->   1.00000008
-nextm018 nextminus  1.00000010  ->   1.00000009
-nextm019 nextminus  1.00000011  ->   1.00000010
-nextm020 nextminus  1.00000012  ->   1.00000011
-
-nextm021 nextminus -0.999999995 ->  -0.999999996
-nextm022 nextminus -0.999999996 ->  -0.999999997
-nextm023 nextminus -0.999999997 ->  -0.999999998
-nextm024 nextminus -0.999999998 ->  -0.999999999
-nextm025 nextminus -0.999999999 ->  -1.00000000
-nextm026 nextminus -1.00000000  ->  -1.00000001
-nextm027 nextminus -1.0         ->  -1.00000001
-nextm028 nextminus -1           ->  -1.00000001
-nextm029 nextminus -1.00000001  ->  -1.00000002
-nextm030 nextminus -1.00000002  ->  -1.00000003
-nextm031 nextminus -1.00000003  ->  -1.00000004
-nextm032 nextminus -1.00000004  ->  -1.00000005
-nextm033 nextminus -1.00000005  ->  -1.00000006
-nextm034 nextminus -1.00000006  ->  -1.00000007
-nextm035 nextminus -1.00000007  ->  -1.00000008
-nextm036 nextminus -1.00000008  ->  -1.00000009
-nextm037 nextminus -1.00000009  ->  -1.00000010
-nextm038 nextminus -1.00000010  ->  -1.00000011
-nextm039 nextminus -1.00000011  ->  -1.00000012
-
--- input operand is >precision
-nextm041 nextminus  1.00000010998  ->   1.00000010
-nextm042 nextminus  1.00000010999  ->   1.00000010
-nextm043 nextminus  1.00000011000  ->   1.00000010
-nextm044 nextminus  1.00000011001  ->   1.00000011
-nextm045 nextminus  1.00000011002  ->   1.00000011
-nextm046 nextminus  1.00000011002  ->   1.00000011
-nextm047 nextminus  1.00000011052  ->   1.00000011
-nextm048 nextminus  1.00000011552  ->   1.00000011
-nextm049 nextminus -1.00000010998  ->  -1.00000011
-nextm050 nextminus -1.00000010999  ->  -1.00000011
-nextm051 nextminus -1.00000011000  ->  -1.00000012
-nextm052 nextminus -1.00000011001  ->  -1.00000012
-nextm053 nextminus -1.00000011002  ->  -1.00000012
-nextm054 nextminus -1.00000011002  ->  -1.00000012
-nextm055 nextminus -1.00000011052  ->  -1.00000012
-nextm056 nextminus -1.00000011552  ->  -1.00000012
--- ultra-tiny inputs
-nextm060 nextminus  1E-99999       ->   0E-391
-nextm061 nextminus  1E-999999999   ->   0E-391
-nextm062 nextminus  1E-391         ->   0E-391
-nextm063 nextminus -1E-99999       ->  -1E-391
-nextm064 nextminus -1E-999999999   ->  -1E-391
-nextm065 nextminus -1E-391         ->  -2E-391
-
--- Zeros
-nextm100 nextminus -0           -> -1E-391
-nextm101 nextminus  0           -> -1E-391
-nextm102 nextminus  0.00        -> -1E-391
-nextm103 nextminus -0.00        -> -1E-391
-nextm104 nextminus  0E-300      -> -1E-391
-nextm105 nextminus  0E+300      -> -1E-391
-nextm106 nextminus  0E+30000    -> -1E-391
-nextm107 nextminus -0E+30000    -> -1E-391
-
-precision: 9
-maxExponent: 999
-minexponent: -999
--- specials
-nextm150 nextminus   Inf    ->  9.99999999E+999
-nextm151 nextminus  -Inf    -> -Infinity
-nextm152 nextminus   NaN    ->  NaN
-nextm153 nextminus  sNaN    ->  NaN   Invalid_operation
-nextm154 nextminus   NaN77  ->  NaN77
-nextm155 nextminus  sNaN88  ->  NaN88 Invalid_operation
-nextm156 nextminus  -NaN    -> -NaN
-nextm157 nextminus -sNaN    -> -NaN   Invalid_operation
-nextm158 nextminus  -NaN77  -> -NaN77
-nextm159 nextminus -sNaN88  -> -NaN88 Invalid_operation
-
--- Nmax, Nmin, Ntiny, subnormals
-nextm170 nextminus  9.99999999E+999   -> 9.99999998E+999
-nextm171 nextminus  9.99999998E+999   -> 9.99999997E+999
-nextm172 nextminus  1E-999            -> 9.9999999E-1000
-nextm173 nextminus  1.00000000E-999   -> 9.9999999E-1000
-nextm174 nextminus  9E-1007           -> 8E-1007
-nextm175 nextminus  9.9E-1006         -> 9.8E-1006
-nextm176 nextminus  9.9999E-1003      -> 9.9998E-1003
-nextm177 nextminus  9.9999999E-1000   -> 9.9999998E-1000
-nextm178 nextminus  9.9999998E-1000   -> 9.9999997E-1000
-nextm179 nextminus  9.9999997E-1000   -> 9.9999996E-1000
-nextm180 nextminus  0E-1007           -> -1E-1007
-nextm181 nextminus  1E-1007           -> 0E-1007
-nextm182 nextminus  2E-1007           -> 1E-1007
-
-nextm183 nextminus  -0E-1007          -> -1E-1007
-nextm184 nextminus  -1E-1007          -> -2E-1007
-nextm185 nextminus  -2E-1007          -> -3E-1007
-nextm186 nextminus  -10E-1007         -> -1.1E-1006
-nextm187 nextminus  -100E-1007        -> -1.01E-1005
-nextm188 nextminus  -100000E-1007     -> -1.00001E-1002
-nextm189 nextminus  -1.0000E-999      -> -1.00000001E-999
-nextm190 nextminus  -1.00000000E-999  -> -1.00000001E-999
-nextm191 nextminus  -1E-999           -> -1.00000001E-999
-nextm192 nextminus  -9.99999998E+999  -> -9.99999999E+999
-nextm193 nextminus  -9.99999999E+999  -> -Infinity
-
--- Null tests
-nextm900 nextminus  # -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nextplus.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nextplus.decTest
deleted file mode 100644
index 44989e5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nextplus.decTest
+++ /dev/null
@@ -1,150 +0,0 @@
-------------------------------------------------------------------------
--- nextplus.decTest -- decimal next that is greater [754r nextup]     --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
-nextp001 nextplus  0.999999995 ->   0.999999996
-nextp002 nextplus  0.999999996 ->   0.999999997
-nextp003 nextplus  0.999999997 ->   0.999999998
-nextp004 nextplus  0.999999998 ->   0.999999999
-nextp005 nextplus  0.999999999 ->   1.00000000
-nextp006 nextplus  1.00000000  ->   1.00000001
-nextp007 nextplus  1.0         ->   1.00000001
-nextp008 nextplus  1           ->   1.00000001
-nextp009 nextplus  1.00000001  ->   1.00000002
-nextp010 nextplus  1.00000002  ->   1.00000003
-nextp011 nextplus  1.00000003  ->   1.00000004
-nextp012 nextplus  1.00000004  ->   1.00000005
-nextp013 nextplus  1.00000005  ->   1.00000006
-nextp014 nextplus  1.00000006  ->   1.00000007
-nextp015 nextplus  1.00000007  ->   1.00000008
-nextp016 nextplus  1.00000008  ->   1.00000009
-nextp017 nextplus  1.00000009  ->   1.00000010
-nextp018 nextplus  1.00000010  ->   1.00000011
-nextp019 nextplus  1.00000011  ->   1.00000012
-
-nextp021 nextplus -0.999999995 ->  -0.999999994
-nextp022 nextplus -0.999999996 ->  -0.999999995
-nextp023 nextplus -0.999999997 ->  -0.999999996
-nextp024 nextplus -0.999999998 ->  -0.999999997
-nextp025 nextplus -0.999999999 ->  -0.999999998
-nextp026 nextplus -1.00000000  ->  -0.999999999
-nextp027 nextplus -1.0         ->  -0.999999999
-nextp028 nextplus -1           ->  -0.999999999
-nextp029 nextplus -1.00000001  ->  -1.00000000
-nextp030 nextplus -1.00000002  ->  -1.00000001
-nextp031 nextplus -1.00000003  ->  -1.00000002
-nextp032 nextplus -1.00000004  ->  -1.00000003
-nextp033 nextplus -1.00000005  ->  -1.00000004
-nextp034 nextplus -1.00000006  ->  -1.00000005
-nextp035 nextplus -1.00000007  ->  -1.00000006
-nextp036 nextplus -1.00000008  ->  -1.00000007
-nextp037 nextplus -1.00000009  ->  -1.00000008
-nextp038 nextplus -1.00000010  ->  -1.00000009
-nextp039 nextplus -1.00000011  ->  -1.00000010
-nextp040 nextplus -1.00000012  ->  -1.00000011
-
--- input operand is >precision
-nextp041 nextplus  1.00000010998  ->   1.00000011
-nextp042 nextplus  1.00000010999  ->   1.00000011
-nextp043 nextplus  1.00000011000  ->   1.00000012
-nextp044 nextplus  1.00000011001  ->   1.00000012
-nextp045 nextplus  1.00000011002  ->   1.00000012
-nextp046 nextplus  1.00000011002  ->   1.00000012
-nextp047 nextplus  1.00000011052  ->   1.00000012
-nextp048 nextplus  1.00000011552  ->   1.00000012
-nextp049 nextplus -1.00000010998  ->  -1.00000010
-nextp050 nextplus -1.00000010999  ->  -1.00000010
-nextp051 nextplus -1.00000011000  ->  -1.00000010
-nextp052 nextplus -1.00000011001  ->  -1.00000011
-nextp053 nextplus -1.00000011002  ->  -1.00000011
-nextp054 nextplus -1.00000011002  ->  -1.00000011
-nextp055 nextplus -1.00000011052  ->  -1.00000011
-nextp056 nextplus -1.00000011552  ->  -1.00000011
--- ultra-tiny inputs
-nextp060 nextplus  1E-99999       ->   1E-391
-nextp061 nextplus  1E-999999999   ->   1E-391
-nextp062 nextplus  1E-391         ->   2E-391
-nextp063 nextplus -1E-99999       ->  -0E-391
-nextp064 nextplus -1E-999999999   ->  -0E-391
-nextp065 nextplus -1E-391         ->  -0E-391
-
--- Zeros
-nextp100 nextplus  0           ->  1E-391
-nextp101 nextplus  0.00        ->  1E-391
-nextp102 nextplus  0E-300      ->  1E-391
-nextp103 nextplus  0E+300      ->  1E-391
-nextp104 nextplus  0E+30000    ->  1E-391
-nextp105 nextplus -0           ->  1E-391
-nextp106 nextplus -0.00        ->  1E-391
-nextp107 nextplus -0E-300      ->  1E-391
-nextp108 nextplus -0E+300      ->  1E-391
-nextp109 nextplus -0E+30000    ->  1E-391
-
-maxExponent: 999
-minexponent: -999
-precision: 9
--- specials
-nextp150 nextplus   Inf    ->  Infinity
-nextp151 nextplus  -Inf    -> -9.99999999E+999
-nextp152 nextplus   NaN    ->  NaN
-nextp153 nextplus  sNaN    ->  NaN   Invalid_operation
-nextp154 nextplus   NaN77  ->  NaN77
-nextp155 nextplus  sNaN88  ->  NaN88 Invalid_operation
-nextp156 nextplus  -NaN    -> -NaN
-nextp157 nextplus -sNaN    -> -NaN   Invalid_operation
-nextp158 nextplus  -NaN77  -> -NaN77
-nextp159 nextplus -sNaN88  -> -NaN88 Invalid_operation
-
--- Nmax, Nmin, Ntiny, subnormals
-nextp170 nextplus  9.99999999E+999   -> Infinity
-nextp171 nextplus  9.99999998E+999   -> 9.99999999E+999
-nextp172 nextplus  1E-999            -> 1.00000001E-999
-nextp173 nextplus  1.00000000E-999   -> 1.00000001E-999
-nextp174 nextplus  9E-1007           -> 1.0E-1006
-nextp175 nextplus  9.9E-1006         -> 1.00E-1005
-nextp176 nextplus  9.9999E-1003      -> 1.00000E-1002
-nextp177 nextplus  9.9999999E-1000   -> 1.00000000E-999
-nextp178 nextplus  9.9999998E-1000   -> 9.9999999E-1000
-nextp179 nextplus  9.9999997E-1000   -> 9.9999998E-1000
-nextp180 nextplus  0E-1007           -> 1E-1007
-nextp181 nextplus  1E-1007           -> 2E-1007
-nextp182 nextplus  2E-1007           -> 3E-1007
-
-nextp183 nextplus  -0E-1007          ->  1E-1007
-nextp184 nextplus  -1E-1007          -> -0E-1007
-nextp185 nextplus  -2E-1007          -> -1E-1007
-nextp186 nextplus  -10E-1007         -> -9E-1007
-nextp187 nextplus  -100E-1007        -> -9.9E-1006
-nextp188 nextplus  -100000E-1007     -> -9.9999E-1003
-nextp189 nextplus  -1.0000E-999      -> -9.9999999E-1000
-nextp190 nextplus  -1.00000000E-999  -> -9.9999999E-1000
-nextp191 nextplus  -1E-999           -> -9.9999999E-1000
-nextp192 nextplus  -9.99999998E+999  -> -9.99999997E+999
-nextp193 nextplus  -9.99999999E+999  -> -9.99999998E+999
-
--- Null tests
-nextp900 nextplus  # -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nexttoward.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nexttoward.decTest
deleted file mode 100644
index da26f65..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/nexttoward.decTest
+++ /dev/null
@@ -1,426 +0,0 @@
-------------------------------------------------------------------------
--- nexttoward.decTest -- decimal next toward rhs [754r nextafter]     --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
--- Sanity check with a scattering of numerics
-nextt001 nexttoward   10    10   ->  10
-nextt002 nexttoward  -10   -10   -> -10
-nextt003 nexttoward   1     10   ->  1.00000001
-nextt004 nexttoward   1    -10   ->  0.999999999
-nextt005 nexttoward  -1     10   -> -0.999999999
-nextt006 nexttoward  -1    -10   -> -1.00000001
-nextt007 nexttoward   0     10   ->  1E-391       Underflow Subnormal Inexact Rounded
-nextt008 nexttoward   0    -10   -> -1E-391       Underflow Subnormal Inexact Rounded
-nextt009 nexttoward   9.99999999E+384 +Infinity ->  Infinity Overflow Inexact Rounded
-nextt010 nexttoward  -9.99999999E+384 -Infinity -> -Infinity Overflow Inexact Rounded
-
-------- lhs=rhs
--- finites
-nextt101 nexttoward          7       7 ->  7
-nextt102 nexttoward         -7      -7 -> -7
-nextt103 nexttoward         75      75 ->  75
-nextt104 nexttoward        -75     -75 -> -75
-nextt105 nexttoward       7.50     7.5 ->  7.50
-nextt106 nexttoward      -7.50   -7.50 -> -7.50
-nextt107 nexttoward       7.500 7.5000 ->  7.500
-nextt108 nexttoward      -7.500   -7.5 -> -7.500
-
--- zeros
-nextt111 nexttoward          0       0 ->  0
-nextt112 nexttoward         -0      -0 -> -0
-nextt113 nexttoward       0E+4       0 ->  0E+4
-nextt114 nexttoward      -0E+4      -0 -> -0E+4
-nextt115 nexttoward     0.0000 0.00000 ->  0.0000
-nextt116 nexttoward    -0.0000   -0.00 -> -0.0000
-nextt117 nexttoward      0E-141      0 ->  0E-141
-nextt118 nexttoward     -0E-141   -000 -> -0E-141
-
--- full coefficients, alternating bits
-nextt121 nexttoward   268268268    268268268 ->   268268268
-nextt122 nexttoward  -268268268   -268268268 ->  -268268268
-nextt123 nexttoward   134134134    134134134 ->   134134134
-nextt124 nexttoward  -134134134   -134134134 ->  -134134134
-
--- Nmax, Nmin, Ntiny
-nextt131 nexttoward  9.99999999E+384  9.99999999E+384   ->   9.99999999E+384
-nextt132 nexttoward  1E-383           1E-383            ->   1E-383
-nextt133 nexttoward  1.00000000E-383  1.00000000E-383   ->   1.00000000E-383
-nextt134 nexttoward  1E-391           1E-391            ->   1E-391
-
-nextt135 nexttoward  -1E-391          -1E-391           ->  -1E-391
-nextt136 nexttoward  -1.00000000E-383 -1.00000000E-383  ->  -1.00000000E-383
-nextt137 nexttoward  -1E-383          -1E-383           ->  -1E-383
-nextt138 nexttoward  -9.99999999E+384 -9.99999999E+384  ->  -9.99999999E+384
-
-------- lhs<rhs
-nextt201 nexttoward  0.999999995 Infinity ->   0.999999996
-nextt202 nexttoward  0.999999996 Infinity ->   0.999999997
-nextt203 nexttoward  0.999999997 Infinity ->   0.999999998
-nextt204 nexttoward  0.999999998 Infinity ->   0.999999999
-nextt205 nexttoward  0.999999999 Infinity ->   1.00000000
-nextt206 nexttoward  1.00000000  Infinity ->   1.00000001
-nextt207 nexttoward  1.0         Infinity ->   1.00000001
-nextt208 nexttoward  1           Infinity ->   1.00000001
-nextt209 nexttoward  1.00000001  Infinity ->   1.00000002
-nextt210 nexttoward  1.00000002  Infinity ->   1.00000003
-nextt211 nexttoward  1.00000003  Infinity ->   1.00000004
-nextt212 nexttoward  1.00000004  Infinity ->   1.00000005
-nextt213 nexttoward  1.00000005  Infinity ->   1.00000006
-nextt214 nexttoward  1.00000006  Infinity ->   1.00000007
-nextt215 nexttoward  1.00000007  Infinity ->   1.00000008
-nextt216 nexttoward  1.00000008  Infinity ->   1.00000009
-nextt217 nexttoward  1.00000009  Infinity ->   1.00000010
-nextt218 nexttoward  1.00000010  Infinity ->   1.00000011
-nextt219 nexttoward  1.00000011  Infinity ->   1.00000012
-
-nextt221 nexttoward -0.999999995 Infinity ->  -0.999999994
-nextt222 nexttoward -0.999999996 Infinity ->  -0.999999995
-nextt223 nexttoward -0.999999997 Infinity ->  -0.999999996
-nextt224 nexttoward -0.999999998 Infinity ->  -0.999999997
-nextt225 nexttoward -0.999999999 Infinity ->  -0.999999998
-nextt226 nexttoward -1.00000000  Infinity ->  -0.999999999
-nextt227 nexttoward -1.0         Infinity ->  -0.999999999
-nextt228 nexttoward -1           Infinity ->  -0.999999999
-nextt229 nexttoward -1.00000001  Infinity ->  -1.00000000
-nextt230 nexttoward -1.00000002  Infinity ->  -1.00000001
-nextt231 nexttoward -1.00000003  Infinity ->  -1.00000002
-nextt232 nexttoward -1.00000004  Infinity ->  -1.00000003
-nextt233 nexttoward -1.00000005  Infinity ->  -1.00000004
-nextt234 nexttoward -1.00000006  Infinity ->  -1.00000005
-nextt235 nexttoward -1.00000007  Infinity ->  -1.00000006
-nextt236 nexttoward -1.00000008  Infinity ->  -1.00000007
-nextt237 nexttoward -1.00000009  Infinity ->  -1.00000008
-nextt238 nexttoward -1.00000010  Infinity ->  -1.00000009
-nextt239 nexttoward -1.00000011  Infinity ->  -1.00000010
-nextt240 nexttoward -1.00000012  Infinity ->  -1.00000011
-
--- input operand is >precision
-nextt241 nexttoward  1.00000010998  Infinity ->   1.00000011
-nextt242 nexttoward  1.00000010999  Infinity ->   1.00000011
-nextt243 nexttoward  1.00000011000  Infinity ->   1.00000012
-nextt244 nexttoward  1.00000011001  Infinity ->   1.00000012
-nextt245 nexttoward  1.00000011002  Infinity ->   1.00000012
-nextt246 nexttoward  1.00000011002  Infinity ->   1.00000012
-nextt247 nexttoward  1.00000011052  Infinity ->   1.00000012
-nextt248 nexttoward  1.00000011552  Infinity ->   1.00000012
-nextt249 nexttoward -1.00000010998  Infinity ->  -1.00000010
-nextt250 nexttoward -1.00000010999  Infinity ->  -1.00000010
-nextt251 nexttoward -1.00000011000  Infinity ->  -1.00000010
-nextt252 nexttoward -1.00000011001  Infinity ->  -1.00000011
-nextt253 nexttoward -1.00000011002  Infinity ->  -1.00000011
-nextt254 nexttoward -1.00000011002  Infinity ->  -1.00000011
-nextt255 nexttoward -1.00000011052  Infinity ->  -1.00000011
-nextt256 nexttoward -1.00000011552  Infinity ->  -1.00000011
--- ultra-tiny inputs
-nextt260 nexttoward  1E-99999       Infinity ->   1E-391          Underflow Subnormal Inexact Rounded
-nextt261 nexttoward  1E-999999999   Infinity ->   1E-391          Underflow Subnormal Inexact Rounded
-nextt262 nexttoward  1E-391         Infinity ->   2E-391          Underflow Subnormal Inexact Rounded
-nextt263 nexttoward -1E-99999       Infinity ->  -0E-391          Underflow Subnormal Inexact Rounded Clamped
-nextt264 nexttoward -1E-999999999   Infinity ->  -0E-391          Underflow Subnormal Inexact Rounded Clamped
-nextt265 nexttoward -1E-391         Infinity ->  -0E-391          Underflow Subnormal Inexact Rounded Clamped
-
--- Zeros
-nextt300 nexttoward  0           Infinity ->  1E-391              Underflow Subnormal Inexact Rounded
-nextt301 nexttoward  0.00        Infinity ->  1E-391              Underflow Subnormal Inexact Rounded
-nextt302 nexttoward  0E-300      Infinity ->  1E-391              Underflow Subnormal Inexact Rounded
-nextt303 nexttoward  0E+300      Infinity ->  1E-391              Underflow Subnormal Inexact Rounded
-nextt304 nexttoward  0E+30000    Infinity ->  1E-391              Underflow Subnormal Inexact Rounded
-nextt305 nexttoward -0           Infinity ->  1E-391              Underflow Subnormal Inexact Rounded
-nextt306 nexttoward -0.00        Infinity ->  1E-391              Underflow Subnormal Inexact Rounded
-nextt307 nexttoward -0E-300      Infinity ->  1E-391              Underflow Subnormal Inexact Rounded
-nextt308 nexttoward -0E+300      Infinity ->  1E-391              Underflow Subnormal Inexact Rounded
-nextt309 nexttoward -0E+30000    Infinity ->  1E-391              Underflow Subnormal Inexact Rounded
-
--- specials
-nextt350 nexttoward   Inf    Infinity ->  Infinity
-nextt351 nexttoward  -Inf    Infinity -> -9.99999999E+384
-nextt352 nexttoward   NaN    Infinity ->  NaN
-nextt353 nexttoward  sNaN    Infinity ->  NaN   Invalid_operation
-nextt354 nexttoward   NaN77  Infinity ->  NaN77
-nextt355 nexttoward  sNaN88  Infinity ->  NaN88 Invalid_operation
-nextt356 nexttoward  -NaN    Infinity -> -NaN
-nextt357 nexttoward -sNaN    Infinity -> -NaN   Invalid_operation
-nextt358 nexttoward  -NaN77  Infinity -> -NaN77
-nextt359 nexttoward -sNaN88  Infinity -> -NaN88 Invalid_operation
-
--- Nmax, Nmin, Ntiny, subnormals
-maxExponent: 999
-minexponent: -999
-nextt370 nexttoward  9.99999999E+999   Infinity -> Infinity        Overflow Inexact Rounded
-nextt371 nexttoward  9.99999998E+999   Infinity -> 9.99999999E+999
-nextt372 nexttoward  1E-999            Infinity -> 1.00000001E-999
-nextt373 nexttoward  1.00000000E-999   Infinity -> 1.00000001E-999
-nextt374 nexttoward  0.999999999E-999  Infinity -> 1.00000000E-999
-nextt375 nexttoward  0.99999999E-999   Infinity -> 1.00000000E-999
-nextt376 nexttoward  9E-1007           Infinity -> 1.0E-1006       Underflow Subnormal Inexact Rounded
-nextt377 nexttoward  9.9E-1006         Infinity -> 1.00E-1005      Underflow Subnormal Inexact Rounded
-nextt378 nexttoward  9.9999E-1003      Infinity -> 1.00000E-1002   Underflow Subnormal Inexact Rounded
-nextt379 nexttoward  9.9999998E-1000   Infinity -> 9.9999999E-1000 Underflow Subnormal Inexact Rounded
-nextt380 nexttoward  9.9999997E-1000   Infinity -> 9.9999998E-1000 Underflow Subnormal Inexact Rounded
-nextt381 nexttoward  0E-1007           Infinity -> 1E-1007         Underflow Subnormal Inexact Rounded
-nextt382 nexttoward  1E-1007           Infinity -> 2E-1007         Underflow Subnormal Inexact Rounded
-nextt383 nexttoward  2E-1007           Infinity -> 3E-1007         Underflow Subnormal Inexact Rounded
-
-nextt385 nexttoward  -0E-1007          Infinity ->  1E-1007        Underflow Subnormal Inexact Rounded
-nextt386 nexttoward  -1E-1007          Infinity -> -0E-1007        Underflow Subnormal Inexact Rounded Clamped
-nextt387 nexttoward  -2E-1007          Infinity -> -1E-1007        Underflow Subnormal Inexact Rounded
-nextt388 nexttoward  -10E-1007         Infinity -> -9E-1007        Underflow Subnormal Inexact Rounded
-nextt389 nexttoward  -100E-1007        Infinity -> -9.9E-1006      Underflow Subnormal Inexact Rounded
-nextt390 nexttoward  -100000E-1007     Infinity -> -9.9999E-1003   Underflow Subnormal Inexact Rounded
-nextt391 nexttoward  -1.0000E-999      Infinity -> -9.9999999E-1000  Underflow Subnormal Inexact Rounded
-nextt392 nexttoward  -1.00000000E-999  Infinity -> -9.9999999E-1000  Underflow Subnormal Inexact Rounded
-nextt393 nexttoward  -1E-999           Infinity -> -9.9999999E-1000  Underflow Subnormal Inexact Rounded
-nextt394 nexttoward  -9.99999998E+999  Infinity -> -9.99999997E+999
-nextt395 nexttoward  -9.99999999E+999  Infinity -> -9.99999998E+999
-
-------- lhs>rhs
-maxExponent: 384
-minexponent: -383
-nextt401 nexttoward  0.999999995  -Infinity ->   0.999999994
-nextt402 nexttoward  0.999999996  -Infinity ->   0.999999995
-nextt403 nexttoward  0.999999997  -Infinity ->   0.999999996
-nextt404 nexttoward  0.999999998  -Infinity ->   0.999999997
-nextt405 nexttoward  0.999999999  -Infinity ->   0.999999998
-nextt406 nexttoward  1.00000000   -Infinity ->   0.999999999
-nextt407 nexttoward  1.0          -Infinity ->   0.999999999
-nextt408 nexttoward  1            -Infinity ->   0.999999999
-nextt409 nexttoward  1.00000001   -Infinity ->   1.00000000
-nextt410 nexttoward  1.00000002   -Infinity ->   1.00000001
-nextt411 nexttoward  1.00000003   -Infinity ->   1.00000002
-nextt412 nexttoward  1.00000004   -Infinity ->   1.00000003
-nextt413 nexttoward  1.00000005   -Infinity ->   1.00000004
-nextt414 nexttoward  1.00000006   -Infinity ->   1.00000005
-nextt415 nexttoward  1.00000007   -Infinity ->   1.00000006
-nextt416 nexttoward  1.00000008   -Infinity ->   1.00000007
-nextt417 nexttoward  1.00000009   -Infinity ->   1.00000008
-nextt418 nexttoward  1.00000010   -Infinity ->   1.00000009
-nextt419 nexttoward  1.00000011   -Infinity ->   1.00000010
-nextt420 nexttoward  1.00000012   -Infinity ->   1.00000011
-
-nextt421 nexttoward -0.999999995  -Infinity ->  -0.999999996
-nextt422 nexttoward -0.999999996  -Infinity ->  -0.999999997
-nextt423 nexttoward -0.999999997  -Infinity ->  -0.999999998
-nextt424 nexttoward -0.999999998  -Infinity ->  -0.999999999
-nextt425 nexttoward -0.999999999  -Infinity ->  -1.00000000
-nextt426 nexttoward -1.00000000   -Infinity ->  -1.00000001
-nextt427 nexttoward -1.0          -Infinity ->  -1.00000001
-nextt428 nexttoward -1            -Infinity ->  -1.00000001
-nextt429 nexttoward -1.00000001   -Infinity ->  -1.00000002
-nextt430 nexttoward -1.00000002   -Infinity ->  -1.00000003
-nextt431 nexttoward -1.00000003   -Infinity ->  -1.00000004
-nextt432 nexttoward -1.00000004   -Infinity ->  -1.00000005
-nextt433 nexttoward -1.00000005   -Infinity ->  -1.00000006
-nextt434 nexttoward -1.00000006   -Infinity ->  -1.00000007
-nextt435 nexttoward -1.00000007   -Infinity ->  -1.00000008
-nextt436 nexttoward -1.00000008   -Infinity ->  -1.00000009
-nextt437 nexttoward -1.00000009   -Infinity ->  -1.00000010
-nextt438 nexttoward -1.00000010   -Infinity ->  -1.00000011
-nextt439 nexttoward -1.00000011   -Infinity ->  -1.00000012
-
--- input operand is >precision
-nextt441 nexttoward  1.00000010998   -Infinity ->   1.00000010
-nextt442 nexttoward  1.00000010999   -Infinity ->   1.00000010
-nextt443 nexttoward  1.00000011000   -Infinity ->   1.00000010
-nextt444 nexttoward  1.00000011001   -Infinity ->   1.00000011
-nextt445 nexttoward  1.00000011002   -Infinity ->   1.00000011
-nextt446 nexttoward  1.00000011002   -Infinity ->   1.00000011
-nextt447 nexttoward  1.00000011052   -Infinity ->   1.00000011
-nextt448 nexttoward  1.00000011552   -Infinity ->   1.00000011
-nextt449 nexttoward -1.00000010998   -Infinity ->  -1.00000011
-nextt450 nexttoward -1.00000010999   -Infinity ->  -1.00000011
-nextt451 nexttoward -1.00000011000   -Infinity ->  -1.00000012
-nextt452 nexttoward -1.00000011001   -Infinity ->  -1.00000012
-nextt453 nexttoward -1.00000011002   -Infinity ->  -1.00000012
-nextt454 nexttoward -1.00000011002   -Infinity ->  -1.00000012
-nextt455 nexttoward -1.00000011052   -Infinity ->  -1.00000012
-nextt456 nexttoward -1.00000011552   -Infinity ->  -1.00000012
--- ultra-tiny inputs
-nextt460 nexttoward  1E-99999        -Infinity ->   0E-391     Underflow Subnormal Inexact Rounded Clamped
-nextt461 nexttoward  1E-999999999    -Infinity ->   0E-391     Underflow Subnormal Inexact Rounded Clamped
-nextt462 nexttoward  1E-391          -Infinity ->   0E-391     Underflow Subnormal Inexact Rounded Clamped
-nextt463 nexttoward -1E-99999        -Infinity ->  -1E-391     Underflow Subnormal Inexact Rounded
-nextt464 nexttoward -1E-999999999    -Infinity ->  -1E-391     Underflow Subnormal Inexact Rounded
-nextt465 nexttoward -1E-391          -Infinity ->  -2E-391     Underflow Subnormal Inexact Rounded
-
--- Zeros
-nextt500 nexttoward -0            -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded
-nextt501 nexttoward  0            -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded
-nextt502 nexttoward  0.00         -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded
-nextt503 nexttoward -0.00         -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded
-nextt504 nexttoward  0E-300       -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded
-nextt505 nexttoward  0E+300       -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded
-nextt506 nexttoward  0E+30000     -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded
-nextt507 nexttoward -0E+30000     -Infinity -> -1E-391         Underflow Subnormal Inexact Rounded
-nextt508 nexttoward  0.00         -0.0000   -> -0.00
-
--- specials
-nextt550 nexttoward   Inf     -Infinity ->  9.99999999E+384
-nextt551 nexttoward  -Inf     -Infinity -> -Infinity
-nextt552 nexttoward   NaN     -Infinity ->  NaN
-nextt553 nexttoward  sNaN     -Infinity ->  NaN   Invalid_operation
-nextt554 nexttoward   NaN77   -Infinity ->  NaN77
-nextt555 nexttoward  sNaN88   -Infinity ->  NaN88 Invalid_operation
-nextt556 nexttoward  -NaN     -Infinity -> -NaN
-nextt557 nexttoward -sNaN     -Infinity -> -NaN   Invalid_operation
-nextt558 nexttoward  -NaN77   -Infinity -> -NaN77
-nextt559 nexttoward -sNaN88   -Infinity -> -NaN88 Invalid_operation
-
--- Nmax, Nmin, Ntiny, subnormals
-maxExponent: 999
-minexponent: -999
-nextt570 nexttoward  9.99999999E+999    -Infinity -> 9.99999998E+999
-nextt571 nexttoward  9.99999998E+999    -Infinity -> 9.99999997E+999
-nextt572 nexttoward  1E-999             -Infinity -> 9.9999999E-1000 Underflow Subnormal Inexact Rounded
-nextt573 nexttoward  1.00000000E-999    -Infinity -> 9.9999999E-1000 Underflow Subnormal Inexact Rounded
-nextt574 nexttoward  9E-1007            -Infinity -> 8E-1007         Underflow Subnormal Inexact Rounded
-nextt575 nexttoward  9.9E-1006          -Infinity -> 9.8E-1006       Underflow Subnormal Inexact Rounded
-nextt576 nexttoward  9.9999E-1003       -Infinity -> 9.9998E-1003    Underflow Subnormal Inexact Rounded
-nextt577 nexttoward  9.9999999E-1000    -Infinity -> 9.9999998E-1000 Underflow Subnormal Inexact Rounded
-nextt578 nexttoward  9.9999998E-1000    -Infinity -> 9.9999997E-1000 Underflow Subnormal Inexact Rounded
-nextt579 nexttoward  9.9999997E-1000    -Infinity -> 9.9999996E-1000 Underflow Subnormal Inexact Rounded
-nextt580 nexttoward  0E-1007            -Infinity -> -1E-1007        Underflow Subnormal Inexact Rounded
-nextt581 nexttoward  1E-1007            -Infinity -> 0E-1007         Underflow Subnormal Inexact Rounded Clamped
-nextt582 nexttoward  2E-1007            -Infinity -> 1E-1007         Underflow Subnormal Inexact Rounded
-
-nextt583 nexttoward  -0E-1007           -Infinity -> -1E-1007        Underflow Subnormal Inexact Rounded
-nextt584 nexttoward  -1E-1007           -Infinity -> -2E-1007        Underflow Subnormal Inexact Rounded
-nextt585 nexttoward  -2E-1007           -Infinity -> -3E-1007        Underflow Subnormal Inexact Rounded
-nextt586 nexttoward  -10E-1007          -Infinity -> -1.1E-1006      Underflow Subnormal Inexact Rounded
-nextt587 nexttoward  -100E-1007         -Infinity -> -1.01E-1005     Underflow Subnormal Inexact Rounded
-nextt588 nexttoward  -100000E-1007      -Infinity -> -1.00001E-1002  Underflow Subnormal Inexact Rounded
-nextt589 nexttoward  -1.0000E-999       -Infinity -> -1.00000001E-999
-nextt590 nexttoward  -1.00000000E-999   -Infinity -> -1.00000001E-999
-nextt591 nexttoward  -1E-999            -Infinity -> -1.00000001E-999
-nextt592 nexttoward  -9.99999998E+999   -Infinity -> -9.99999999E+999
-nextt593 nexttoward  -9.99999999E+999   -Infinity -> -Infinity Overflow Inexact Rounded
-
-
-
-
-------- Specials
-maxExponent: 384
-minexponent: -383
-nextt780 nexttoward -Inf  -Inf   -> -Infinity
-nextt781 nexttoward -Inf  -1000  -> -9.99999999E+384
-nextt782 nexttoward -Inf  -1     -> -9.99999999E+384
-nextt783 nexttoward -Inf  -0     -> -9.99999999E+384
-nextt784 nexttoward -Inf   0     -> -9.99999999E+384
-nextt785 nexttoward -Inf   1     -> -9.99999999E+384
-nextt786 nexttoward -Inf   1000  -> -9.99999999E+384
-nextt787 nexttoward -1000 -Inf   -> -1000.00001
-nextt788 nexttoward -Inf  -Inf   -> -Infinity
-nextt789 nexttoward -1    -Inf   -> -1.00000001
-nextt790 nexttoward -0    -Inf   -> -1E-391           Underflow Subnormal Inexact Rounded
-nextt791 nexttoward  0    -Inf   -> -1E-391           Underflow Subnormal Inexact Rounded
-nextt792 nexttoward  1    -Inf   ->  0.999999999
-nextt793 nexttoward  1000 -Inf   ->  999.999999
-nextt794 nexttoward  Inf  -Inf   ->  9.99999999E+384
-
-nextt800 nexttoward  Inf  -Inf   ->  9.99999999E+384
-nextt801 nexttoward  Inf  -1000  ->  9.99999999E+384
-nextt802 nexttoward  Inf  -1     ->  9.99999999E+384
-nextt803 nexttoward  Inf  -0     ->  9.99999999E+384
-nextt804 nexttoward  Inf   0     ->  9.99999999E+384
-nextt805 nexttoward  Inf   1     ->  9.99999999E+384
-nextt806 nexttoward  Inf   1000  ->  9.99999999E+384
-nextt807 nexttoward  Inf   Inf   ->  Infinity
-nextt808 nexttoward -1000  Inf   -> -999.999999
-nextt809 nexttoward -Inf   Inf   -> -9.99999999E+384
-nextt810 nexttoward -1     Inf   -> -0.999999999
-nextt811 nexttoward -0     Inf   ->  1E-391           Underflow Subnormal Inexact Rounded
-nextt812 nexttoward  0     Inf   ->  1E-391           Underflow Subnormal Inexact Rounded
-nextt813 nexttoward  1     Inf   ->  1.00000001
-nextt814 nexttoward  1000  Inf   ->  1000.00001
-nextt815 nexttoward  Inf   Inf   ->  Infinity
-
-nextt821 nexttoward  NaN -Inf    ->  NaN
-nextt822 nexttoward  NaN -1000   ->  NaN
-nextt823 nexttoward  NaN -1      ->  NaN
-nextt824 nexttoward  NaN -0      ->  NaN
-nextt825 nexttoward  NaN  0      ->  NaN
-nextt826 nexttoward  NaN  1      ->  NaN
-nextt827 nexttoward  NaN  1000   ->  NaN
-nextt828 nexttoward  NaN  Inf    ->  NaN
-nextt829 nexttoward  NaN  NaN    ->  NaN
-nextt830 nexttoward -Inf  NaN    ->  NaN
-nextt831 nexttoward -1000 NaN    ->  NaN
-nextt832 nexttoward -1    NaN    ->  NaN
-nextt833 nexttoward -0    NaN    ->  NaN
-nextt834 nexttoward  0    NaN    ->  NaN
-nextt835 nexttoward  1    NaN    ->  NaN
-nextt836 nexttoward  1000 NaN    ->  NaN
-nextt837 nexttoward  Inf  NaN    ->  NaN
-
-nextt841 nexttoward  sNaN -Inf   ->  NaN  Invalid_operation
-nextt842 nexttoward  sNaN -1000  ->  NaN  Invalid_operation
-nextt843 nexttoward  sNaN -1     ->  NaN  Invalid_operation
-nextt844 nexttoward  sNaN -0     ->  NaN  Invalid_operation
-nextt845 nexttoward  sNaN  0     ->  NaN  Invalid_operation
-nextt846 nexttoward  sNaN  1     ->  NaN  Invalid_operation
-nextt847 nexttoward  sNaN  1000  ->  NaN  Invalid_operation
-nextt848 nexttoward  sNaN  NaN   ->  NaN  Invalid_operation
-nextt849 nexttoward  sNaN sNaN   ->  NaN  Invalid_operation
-nextt850 nexttoward  NaN  sNaN   ->  NaN  Invalid_operation
-nextt851 nexttoward -Inf  sNaN   ->  NaN  Invalid_operation
-nextt852 nexttoward -1000 sNaN   ->  NaN  Invalid_operation
-nextt853 nexttoward -1    sNaN   ->  NaN  Invalid_operation
-nextt854 nexttoward -0    sNaN   ->  NaN  Invalid_operation
-nextt855 nexttoward  0    sNaN   ->  NaN  Invalid_operation
-nextt856 nexttoward  1    sNaN   ->  NaN  Invalid_operation
-nextt857 nexttoward  1000 sNaN   ->  NaN  Invalid_operation
-nextt858 nexttoward  Inf  sNaN   ->  NaN  Invalid_operation
-nextt859 nexttoward  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-nextt861 nexttoward  NaN1   -Inf    ->  NaN1
-nextt862 nexttoward +NaN2   -1000   ->  NaN2
-nextt863 nexttoward  NaN3    1000   ->  NaN3
-nextt864 nexttoward  NaN4    Inf    ->  NaN4
-nextt865 nexttoward  NaN5   +NaN6   ->  NaN5
-nextt866 nexttoward -Inf     NaN7   ->  NaN7
-nextt867 nexttoward -1000    NaN8   ->  NaN8
-nextt868 nexttoward  1000    NaN9   ->  NaN9
-nextt869 nexttoward  Inf    +NaN10  ->  NaN10
-nextt871 nexttoward  sNaN11  -Inf   ->  NaN11  Invalid_operation
-nextt872 nexttoward  sNaN12  -1000  ->  NaN12  Invalid_operation
-nextt873 nexttoward  sNaN13   1000  ->  NaN13  Invalid_operation
-nextt874 nexttoward  sNaN14   NaN17 ->  NaN14  Invalid_operation
-nextt875 nexttoward  sNaN15  sNaN18 ->  NaN15  Invalid_operation
-nextt876 nexttoward  NaN16   sNaN19 ->  NaN19  Invalid_operation
-nextt877 nexttoward -Inf    +sNaN20 ->  NaN20  Invalid_operation
-nextt878 nexttoward -1000    sNaN21 ->  NaN21  Invalid_operation
-nextt879 nexttoward  1000    sNaN22 ->  NaN22  Invalid_operation
-nextt880 nexttoward  Inf     sNaN23 ->  NaN23  Invalid_operation
-nextt881 nexttoward +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-nextt882 nexttoward -NaN26    NaN28 -> -NaN26
-nextt883 nexttoward -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-nextt884 nexttoward  1000    -NaN30 -> -NaN30
-nextt885 nexttoward  1000   -sNaN31 -> -NaN31  Invalid_operation
-
--- Null tests
-nextt900 nexttoward 1  # -> NaN Invalid_operation
-nextt901 nexttoward #  1 -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/or.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/or.decTest
deleted file mode 100644
index f471d0b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/or.decTest
+++ /dev/null
@@ -1,334 +0,0 @@
-------------------------------------------------------------------------
--- or.decTest -- digitwise logical OR                                 --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minExponent: -999
-
--- Sanity check (truth table)
-orx001 or             0    0 ->    0
-orx002 or             0    1 ->    1
-orx003 or             1    0 ->    1
-orx004 or             1    1 ->    1
-orx005 or          1100 1010 -> 1110
--- and at msd and msd-1
-orx006 or 000000000 000000000 ->           0
-orx007 or 000000000 100000000 ->   100000000
-orx008 or 100000000 000000000 ->   100000000
-orx009 or 100000000 100000000 ->   100000000
-orx010 or 000000000 000000000 ->           0
-orx011 or 000000000 010000000 ->    10000000
-orx012 or 010000000 000000000 ->    10000000
-orx013 or 010000000 010000000 ->    10000000
-
--- Various lengths
---        123456789     123456789      123456789
-orx021 or 111111111     111111111  ->  111111111
-orx022 or 111111111111  111111111  ->  111111111
-orx023 or  11111111      11111111  ->   11111111
-orx025 or   1111111       1111111  ->    1111111
-orx026 or    111111        111111  ->     111111
-orx027 or     11111         11111  ->      11111
-orx028 or      1111          1111  ->       1111
-orx029 or       111           111  ->        111
-orx031 or        11            11  ->         11
-orx032 or         1             1  ->          1
-orx033 or 111111111111 1111111111  ->  111111111
-orx034 or 11111111111 11111111111  ->  111111111
-orx035 or 1111111111 111111111111  ->  111111111
-orx036 or 111111111 1111111111111  ->  111111111
-
-orx040 or 111111111  111111111111  ->  111111111
-orx041 or  11111111  111111111111  ->  111111111
-orx042 or  11111111     111111111  ->  111111111
-orx043 or   1111111     100000010  ->  101111111
-orx044 or    111111     100000100  ->  100111111
-orx045 or     11111     100001000  ->  100011111
-orx046 or      1111     100010000  ->  100011111
-orx047 or       111     100100000  ->  100100111
-orx048 or        11     101000000  ->  101000011
-orx049 or         1     110000000  ->  110000001
-
-orx050 or 1111111111  1  ->  111111111
-orx051 or  111111111  1  ->  111111111
-orx052 or   11111111  1  ->  11111111
-orx053 or    1111111  1  ->  1111111
-orx054 or     111111  1  ->  111111
-orx055 or      11111  1  ->  11111
-orx056 or       1111  1  ->  1111
-orx057 or        111  1  ->  111
-orx058 or         11  1  ->  11
-orx059 or          1  1  ->  1
-
-orx060 or 1111111111  0  ->  111111111
-orx061 or  111111111  0  ->  111111111
-orx062 or   11111111  0  ->  11111111
-orx063 or    1111111  0  ->  1111111
-orx064 or     111111  0  ->  111111
-orx065 or      11111  0  ->  11111
-orx066 or       1111  0  ->  1111
-orx067 or        111  0  ->  111
-orx068 or         11  0  ->  11
-orx069 or          1  0  ->  1
-
-orx070 or 1  1111111111  ->  111111111
-orx071 or 1   111111111  ->  111111111
-orx072 or 1    11111111  ->  11111111
-orx073 or 1     1111111  ->  1111111
-orx074 or 1      111111  ->  111111
-orx075 or 1       11111  ->  11111
-orx076 or 1        1111  ->  1111
-orx077 or 1         111  ->  111
-orx078 or 1          11  ->  11
-orx079 or 1           1  ->  1
-
-orx080 or 0  1111111111  ->  111111111
-orx081 or 0   111111111  ->  111111111
-orx082 or 0    11111111  ->  11111111
-orx083 or 0     1111111  ->  1111111
-orx084 or 0      111111  ->  111111
-orx085 or 0       11111  ->  11111
-orx086 or 0        1111  ->  1111
-orx087 or 0         111  ->  111
-orx088 or 0          11  ->  11
-orx089 or 0           1  ->  1
-
-orx090 or 011111111  111101111  ->  111111111
-orx091 or 101111111  111101111  ->  111111111
-orx092 or 110111111  111101111  ->  111111111
-orx093 or 111011111  111101111  ->  111111111
-orx094 or 111101111  111101111  ->  111101111
-orx095 or 111110111  111101111  ->  111111111
-orx096 or 111111011  111101111  ->  111111111
-orx097 or 111111101  111101111  ->  111111111
-orx098 or 111111110  111101111  ->  111111111
-
-orx100 or 111101111  011111111  ->  111111111
-orx101 or 111101111  101111111  ->  111111111
-orx102 or 111101111  110111111  ->  111111111
-orx103 or 111101111  111011111  ->  111111111
-orx104 or 111101111  111101111  ->  111101111
-orx105 or 111101111  111110111  ->  111111111
-orx106 or 111101111  111111011  ->  111111111
-orx107 or 111101111  111111101  ->  111111111
-orx108 or 111101111  111111110  ->  111111111
-
--- non-0/1 should not be accepted, nor should signs
-orx220 or 111111112  111111111  ->  NaN Invalid_operation
-orx221 or 333333333  333333333  ->  NaN Invalid_operation
-orx222 or 555555555  555555555  ->  NaN Invalid_operation
-orx223 or 777777777  777777777  ->  NaN Invalid_operation
-orx224 or 999999999  999999999  ->  NaN Invalid_operation
-orx225 or 222222222  999999999  ->  NaN Invalid_operation
-orx226 or 444444444  999999999  ->  NaN Invalid_operation
-orx227 or 666666666  999999999  ->  NaN Invalid_operation
-orx228 or 888888888  999999999  ->  NaN Invalid_operation
-orx229 or 999999999  222222222  ->  NaN Invalid_operation
-orx230 or 999999999  444444444  ->  NaN Invalid_operation
-orx231 or 999999999  666666666  ->  NaN Invalid_operation
-orx232 or 999999999  888888888  ->  NaN Invalid_operation
--- a few randoms
-orx240 or  567468689 -934981942 ->  NaN Invalid_operation
-orx241 or  567367689  934981942 ->  NaN Invalid_operation
-orx242 or -631917772 -706014634 ->  NaN Invalid_operation
-orx243 or -756253257  138579234 ->  NaN Invalid_operation
-orx244 or  835590149  567435400 ->  NaN Invalid_operation
--- test MSD
-orx250 or  200000000 100000000 ->  NaN Invalid_operation
-orx251 or  700000000 100000000 ->  NaN Invalid_operation
-orx252 or  800000000 100000000 ->  NaN Invalid_operation
-orx253 or  900000000 100000000 ->  NaN Invalid_operation
-orx254 or  200000000 000000000 ->  NaN Invalid_operation
-orx255 or  700000000 000000000 ->  NaN Invalid_operation
-orx256 or  800000000 000000000 ->  NaN Invalid_operation
-orx257 or  900000000 000000000 ->  NaN Invalid_operation
-orx258 or  100000000 200000000 ->  NaN Invalid_operation
-orx259 or  100000000 700000000 ->  NaN Invalid_operation
-orx260 or  100000000 800000000 ->  NaN Invalid_operation
-orx261 or  100000000 900000000 ->  NaN Invalid_operation
-orx262 or  000000000 200000000 ->  NaN Invalid_operation
-orx263 or  000000000 700000000 ->  NaN Invalid_operation
-orx264 or  000000000 800000000 ->  NaN Invalid_operation
-orx265 or  000000000 900000000 ->  NaN Invalid_operation
--- test MSD-1
-orx270 or  020000000 100000000 ->  NaN Invalid_operation
-orx271 or  070100000 100000000 ->  NaN Invalid_operation
-orx272 or  080010000 100000001 ->  NaN Invalid_operation
-orx273 or  090001000 100000010 ->  NaN Invalid_operation
-orx274 or  100000100 020010100 ->  NaN Invalid_operation
-orx275 or  100000000 070001000 ->  NaN Invalid_operation
-orx276 or  100000010 080010100 ->  NaN Invalid_operation
-orx277 or  100000000 090000010 ->  NaN Invalid_operation
--- test LSD
-orx280 or  001000002 100000000 ->  NaN Invalid_operation
-orx281 or  000000007 100000000 ->  NaN Invalid_operation
-orx282 or  000000008 100000000 ->  NaN Invalid_operation
-orx283 or  000000009 100000000 ->  NaN Invalid_operation
-orx284 or  100000000 000100002 ->  NaN Invalid_operation
-orx285 or  100100000 001000007 ->  NaN Invalid_operation
-orx286 or  100010000 010000008 ->  NaN Invalid_operation
-orx287 or  100001000 100000009 ->  NaN Invalid_operation
--- test Middie
-orx288 or  001020000 100000000 ->  NaN Invalid_operation
-orx289 or  000070001 100000000 ->  NaN Invalid_operation
-orx290 or  000080000 100010000 ->  NaN Invalid_operation
-orx291 or  000090000 100001000 ->  NaN Invalid_operation
-orx292 or  100000010 000020100 ->  NaN Invalid_operation
-orx293 or  100100000 000070010 ->  NaN Invalid_operation
-orx294 or  100010100 000080001 ->  NaN Invalid_operation
-orx295 or  100001000 000090000 ->  NaN Invalid_operation
--- signs
-orx296 or -100001000 -000000000 ->  NaN Invalid_operation
-orx297 or -100001000  000010000 ->  NaN Invalid_operation
-orx298 or  100001000 -000000000 ->  NaN Invalid_operation
-orx299 or  100001000  000011000 ->  100011000
-
--- Nmax, Nmin, Ntiny
-orx331 or  2   9.99999999E+999     -> NaN Invalid_operation
-orx332 or  3   1E-999              -> NaN Invalid_operation
-orx333 or  4   1.00000000E-999     -> NaN Invalid_operation
-orx334 or  5   1E-1007             -> NaN Invalid_operation
-orx335 or  6   -1E-1007            -> NaN Invalid_operation
-orx336 or  7   -1.00000000E-999    -> NaN Invalid_operation
-orx337 or  8   -1E-999             -> NaN Invalid_operation
-orx338 or  9   -9.99999999E+999    -> NaN Invalid_operation
-orx341 or  9.99999999E+999     -18 -> NaN Invalid_operation
-orx342 or  1E-999               01 -> NaN Invalid_operation
-orx343 or  1.00000000E-999     -18 -> NaN Invalid_operation
-orx344 or  1E-1007              18 -> NaN Invalid_operation
-orx345 or  -1E-1007            -10 -> NaN Invalid_operation
-orx346 or  -1.00000000E-999     18 -> NaN Invalid_operation
-orx347 or  -1E-999              10 -> NaN Invalid_operation
-orx348 or  -9.99999999E+999    -18 -> NaN Invalid_operation
-
--- A few other non-integers
-orx361 or  1.0                  1  -> NaN Invalid_operation
-orx362 or  1E+1                 1  -> NaN Invalid_operation
-orx363 or  0.0                  1  -> NaN Invalid_operation
-orx364 or  0E+1                 1  -> NaN Invalid_operation
-orx365 or  9.9                  1  -> NaN Invalid_operation
-orx366 or  9E+1                 1  -> NaN Invalid_operation
-orx371 or  0 1.0                   -> NaN Invalid_operation
-orx372 or  0 1E+1                  -> NaN Invalid_operation
-orx373 or  0 0.0                   -> NaN Invalid_operation
-orx374 or  0 0E+1                  -> NaN Invalid_operation
-orx375 or  0 9.9                   -> NaN Invalid_operation
-orx376 or  0 9E+1                  -> NaN Invalid_operation
-
--- All Specials are in error
-orx780 or -Inf  -Inf   -> NaN Invalid_operation
-orx781 or -Inf  -1000  -> NaN Invalid_operation
-orx782 or -Inf  -1     -> NaN Invalid_operation
-orx783 or -Inf  -0     -> NaN Invalid_operation
-orx784 or -Inf   0     -> NaN Invalid_operation
-orx785 or -Inf   1     -> NaN Invalid_operation
-orx786 or -Inf   1000  -> NaN Invalid_operation
-orx787 or -1000 -Inf   -> NaN Invalid_operation
-orx788 or -Inf  -Inf   -> NaN Invalid_operation
-orx789 or -1    -Inf   -> NaN Invalid_operation
-orx790 or -0    -Inf   -> NaN Invalid_operation
-orx791 or  0    -Inf   -> NaN Invalid_operation
-orx792 or  1    -Inf   -> NaN Invalid_operation
-orx793 or  1000 -Inf   -> NaN Invalid_operation
-orx794 or  Inf  -Inf   -> NaN Invalid_operation
-
-orx800 or  Inf  -Inf   -> NaN Invalid_operation
-orx801 or  Inf  -1000  -> NaN Invalid_operation
-orx802 or  Inf  -1     -> NaN Invalid_operation
-orx803 or  Inf  -0     -> NaN Invalid_operation
-orx804 or  Inf   0     -> NaN Invalid_operation
-orx805 or  Inf   1     -> NaN Invalid_operation
-orx806 or  Inf   1000  -> NaN Invalid_operation
-orx807 or  Inf   Inf   -> NaN Invalid_operation
-orx808 or -1000  Inf   -> NaN Invalid_operation
-orx809 or -Inf   Inf   -> NaN Invalid_operation
-orx810 or -1     Inf   -> NaN Invalid_operation
-orx811 or -0     Inf   -> NaN Invalid_operation
-orx812 or  0     Inf   -> NaN Invalid_operation
-orx813 or  1     Inf   -> NaN Invalid_operation
-orx814 or  1000  Inf   -> NaN Invalid_operation
-orx815 or  Inf   Inf   -> NaN Invalid_operation
-
-orx821 or  NaN -Inf    -> NaN Invalid_operation
-orx822 or  NaN -1000   -> NaN Invalid_operation
-orx823 or  NaN -1      -> NaN Invalid_operation
-orx824 or  NaN -0      -> NaN Invalid_operation
-orx825 or  NaN  0      -> NaN Invalid_operation
-orx826 or  NaN  1      -> NaN Invalid_operation
-orx827 or  NaN  1000   -> NaN Invalid_operation
-orx828 or  NaN  Inf    -> NaN Invalid_operation
-orx829 or  NaN  NaN    -> NaN Invalid_operation
-orx830 or -Inf  NaN    -> NaN Invalid_operation
-orx831 or -1000 NaN    -> NaN Invalid_operation
-orx832 or -1    NaN    -> NaN Invalid_operation
-orx833 or -0    NaN    -> NaN Invalid_operation
-orx834 or  0    NaN    -> NaN Invalid_operation
-orx835 or  1    NaN    -> NaN Invalid_operation
-orx836 or  1000 NaN    -> NaN Invalid_operation
-orx837 or  Inf  NaN    -> NaN Invalid_operation
-
-orx841 or  sNaN -Inf   ->  NaN  Invalid_operation
-orx842 or  sNaN -1000  ->  NaN  Invalid_operation
-orx843 or  sNaN -1     ->  NaN  Invalid_operation
-orx844 or  sNaN -0     ->  NaN  Invalid_operation
-orx845 or  sNaN  0     ->  NaN  Invalid_operation
-orx846 or  sNaN  1     ->  NaN  Invalid_operation
-orx847 or  sNaN  1000  ->  NaN  Invalid_operation
-orx848 or  sNaN  NaN   ->  NaN  Invalid_operation
-orx849 or  sNaN sNaN   ->  NaN  Invalid_operation
-orx850 or  NaN  sNaN   ->  NaN  Invalid_operation
-orx851 or -Inf  sNaN   ->  NaN  Invalid_operation
-orx852 or -1000 sNaN   ->  NaN  Invalid_operation
-orx853 or -1    sNaN   ->  NaN  Invalid_operation
-orx854 or -0    sNaN   ->  NaN  Invalid_operation
-orx855 or  0    sNaN   ->  NaN  Invalid_operation
-orx856 or  1    sNaN   ->  NaN  Invalid_operation
-orx857 or  1000 sNaN   ->  NaN  Invalid_operation
-orx858 or  Inf  sNaN   ->  NaN  Invalid_operation
-orx859 or  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-orx861 or  NaN1   -Inf    -> NaN Invalid_operation
-orx862 or +NaN2   -1000   -> NaN Invalid_operation
-orx863 or  NaN3    1000   -> NaN Invalid_operation
-orx864 or  NaN4    Inf    -> NaN Invalid_operation
-orx865 or  NaN5   +NaN6   -> NaN Invalid_operation
-orx866 or -Inf     NaN7   -> NaN Invalid_operation
-orx867 or -1000    NaN8   -> NaN Invalid_operation
-orx868 or  1000    NaN9   -> NaN Invalid_operation
-orx869 or  Inf    +NaN10  -> NaN Invalid_operation
-orx871 or  sNaN11  -Inf   -> NaN Invalid_operation
-orx872 or  sNaN12  -1000  -> NaN Invalid_operation
-orx873 or  sNaN13   1000  -> NaN Invalid_operation
-orx874 or  sNaN14   NaN17 -> NaN Invalid_operation
-orx875 or  sNaN15  sNaN18 -> NaN Invalid_operation
-orx876 or  NaN16   sNaN19 -> NaN Invalid_operation
-orx877 or -Inf    +sNaN20 -> NaN Invalid_operation
-orx878 or -1000    sNaN21 -> NaN Invalid_operation
-orx879 or  1000    sNaN22 -> NaN Invalid_operation
-orx880 or  Inf     sNaN23 -> NaN Invalid_operation
-orx881 or +NaN25  +sNaN24 -> NaN Invalid_operation
-orx882 or -NaN26    NaN28 -> NaN Invalid_operation
-orx883 or -sNaN27  sNaN29 -> NaN Invalid_operation
-orx884 or  1000    -NaN30 -> NaN Invalid_operation
-orx885 or  1000   -sNaN31 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/plus.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/plus.decTest
deleted file mode 100644
index d8be477..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/plus.decTest
+++ /dev/null
@@ -1,195 +0,0 @@
-------------------------------------------------------------------------
--- plus.decTest -- decimal monadic addition                           --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This set of tests primarily tests the existence of the operator.
--- Addition and rounding, and most overflows, are tested elsewhere.
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
-plux001 plus '1'      -> '1'
-plux002 plus '-1'     -> '-1'
-plux003 plus '1.00'   -> '1.00'
-plux004 plus '-1.00'  -> '-1.00'
-plux005 plus '0'      -> '0'
-plux006 plus '0.00'   -> '0.00'
-plux007 plus '00.0'   -> '0.0'
-plux008 plus '00.00'  -> '0.00'
-plux009 plus '00'     -> '0'
-
-plux010 plus '-2'     -> '-2'
-plux011 plus '2'      -> '2'
-plux012 plus '-2.00'  -> '-2.00'
-plux013 plus '2.00'   -> '2.00'
-plux014 plus '-0'     -> '0'
-plux015 plus '-0.00'  -> '0.00'
-plux016 plus '-00.0'  -> '0.0'
-plux017 plus '-00.00' -> '0.00'
-plux018 plus '-00'    -> '0'
-
-plux020 plus '-2000000' -> '-2000000'
-plux021 plus '2000000'  -> '2000000'
-precision: 7
-plux022 plus '-2000000' -> '-2000000'
-plux023 plus '2000000'  -> '2000000'
-precision: 6
-plux024 plus '-2000000' -> '-2.00000E+6' Rounded
-plux025 plus '2000000'  -> '2.00000E+6' Rounded
-precision: 3
-plux026 plus '-2000000' -> '-2.00E+6' Rounded
-plux027 plus '2000000'  -> '2.00E+6' Rounded
-
--- more fixed, potential LHS swaps if done by add 0
-precision: 9
-plux060 plus '56267E-10'   -> '0.0000056267'
-plux061 plus '56267E-5'    -> '0.56267'
-plux062 plus '56267E-2'    -> '562.67'
-plux063 plus '56267E-1'    -> '5626.7'
-plux065 plus '56267E-0'    -> '56267'
-plux066 plus '56267E+0'    -> '56267'
-plux067 plus '56267E+1'    -> '5.6267E+5'
-plux068 plus '56267E+2'    -> '5.6267E+6'
-plux069 plus '56267E+3'    -> '5.6267E+7'
-plux070 plus '56267E+4'    -> '5.6267E+8'
-plux071 plus '56267E+5'    -> '5.6267E+9'
-plux072 plus '56267E+6'    -> '5.6267E+10'
-plux080 plus '-56267E-10'  -> '-0.0000056267'
-plux081 plus '-56267E-5'   -> '-0.56267'
-plux082 plus '-56267E-2'   -> '-562.67'
-plux083 plus '-56267E-1'   -> '-5626.7'
-plux085 plus '-56267E-0'   -> '-56267'
-plux086 plus '-56267E+0'   -> '-56267'
-plux087 plus '-56267E+1'   -> '-5.6267E+5'
-plux088 plus '-56267E+2'   -> '-5.6267E+6'
-plux089 plus '-56267E+3'   -> '-5.6267E+7'
-plux090 plus '-56267E+4'   -> '-5.6267E+8'
-plux091 plus '-56267E+5'   -> '-5.6267E+9'
-plux092 plus '-56267E+6'   -> '-5.6267E+10'
-
--- "lhs" zeros in plus and minus have exponent = operand
-plux120 plus '-0E3'   -> '0E+3'
-plux121 plus '-0E2'   -> '0E+2'
-plux122 plus '-0E1'   -> '0E+1'
-plux123 plus '-0E0'   -> '0'
-plux124 plus '+0E0'   -> '0'
-plux125 plus '+0E1'   -> '0E+1'
-plux126 plus '+0E2'   -> '0E+2'
-plux127 plus '+0E3'   -> '0E+3'
-
-plux130 plus '-5E3'   -> '-5E+3'
-plux131 plus '-5E8'   -> '-5E+8'
-plux132 plus '-5E13'  -> '-5E+13'
-plux133 plus '-5E18'  -> '-5E+18'
-plux134 plus '+5E3'   -> '5E+3'
-plux135 plus '+5E8'   -> '5E+8'
-plux136 plus '+5E13'  -> '5E+13'
-plux137 plus '+5E18'  -> '5E+18'
-
--- specials
-plux150 plus 'Inf'    -> 'Infinity'
-plux151 plus '-Inf'   -> '-Infinity'
-plux152 plus   NaN    ->  NaN
-plux153 plus  sNaN    ->  NaN   Invalid_operation
-plux154 plus   NaN77  ->  NaN77
-plux155 plus  sNaN88  ->  NaN88 Invalid_operation
-plux156 plus  -NaN    -> -NaN
-plux157 plus -sNaN    -> -NaN   Invalid_operation
-plux158 plus  -NaN77  -> -NaN77
-plux159 plus -sNaN88  -> -NaN88 Invalid_operation
-
--- overflow tests
-maxexponent: 999999999
-minexponent: -999999999
-precision: 3
-plux160 plus 9.999E+999999999  ->  Infinity Inexact Overflow Rounded
-plux161 plus -9.999E+999999999 -> -Infinity Inexact Overflow Rounded
-
--- subnormals and underflow
-precision: 3
-maxexponent: 999
-minexponent: -999
-plux210 plus  1.00E-999        ->   1.00E-999
-plux211 plus  0.1E-999         ->   1E-1000   Subnormal
-plux212 plus  0.10E-999        ->   1.0E-1000 Subnormal
-plux213 plus  0.100E-999       ->   1.0E-1000 Subnormal Rounded
-plux214 plus  0.01E-999        ->   1E-1001   Subnormal
--- next is rounded to Emin
-plux215 plus  0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
-plux216 plus  0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
-plux217 plus  0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
-plux218 plus  0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-plux219 plus  0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-plux220 plus  0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
-plux230 plus -1.00E-999        ->  -1.00E-999
-plux231 plus -0.1E-999         ->  -1E-1000   Subnormal
-plux232 plus -0.10E-999        ->  -1.0E-1000 Subnormal
-plux233 plus -0.100E-999       ->  -1.0E-1000 Subnormal Rounded
-plux234 plus -0.01E-999        ->  -1E-1001   Subnormal
--- next is rounded to Emin
-plux235 plus -0.999E-999       ->  -1.00E-999 Inexact Rounded Subnormal Underflow
-plux236 plus -0.099E-999       ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
-plux237 plus -0.009E-999       ->  -1E-1001   Inexact Rounded Subnormal Underflow
-plux238 plus -0.001E-999       ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-plux239 plus -0.0009E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-plux240 plus -0.0001E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
--- subnormals clamped to 0-Etiny
-precision:   16
-maxExponent: 384
-minExponent: -383
-plux251 plus 7E-398     -> 7E-398 Subnormal
-plux252 plus 0E-398     -> 0E-398
-plux253 plus 7E-399     -> 1E-398 Subnormal Underflow Inexact Rounded
-plux254 plus 4E-399     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
-plux255 plus 7E-400     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
-plux256 plus 7E-401     -> 0E-398 Clamped Subnormal Underflow Inexact Rounded
-plux257 plus 0E-399     -> 0E-398 Clamped
-plux258 plus 0E-400     -> 0E-398 Clamped
-plux259 plus 0E-401     -> 0E-398 Clamped
-
--- long operand checks
-maxexponent: 999
-minexponent: -999
-precision: 9
-plux301 plus 12345678000  -> 1.23456780E+10 Rounded
-plux302 plus 1234567800   -> 1.23456780E+9 Rounded
-plux303 plus 1234567890   -> 1.23456789E+9 Rounded
-plux304 plus 1234567891   -> 1.23456789E+9 Inexact Rounded
-plux305 plus 12345678901  -> 1.23456789E+10 Inexact Rounded
-plux306 plus 1234567896   -> 1.23456790E+9 Inexact Rounded
-
--- still checking
-precision: 15
-plux321 plus 12345678000  -> 12345678000
-plux322 plus 1234567800   -> 1234567800
-plux323 plus 1234567890   -> 1234567890
-plux324 plus 1234567891   -> 1234567891
-plux325 plus 12345678901  -> 12345678901
-plux326 plus 1234567896   -> 1234567896
-precision: 9
-
--- Null tests
-plu900 plus  # -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/power.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/power.decTest
deleted file mode 100644
index 7f72d5f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/power.decTest
+++ /dev/null
@@ -1,1624 +0,0 @@
-------------------------------------------------------------------------
--- power.decTest -- decimal exponentiation [power(x, y)]              --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- In addition to the power operator testcases here, see also the file
--- powersqrt.decTest which includes all the tests from
--- squareroot.decTest implemented using power(x, 0.5)
-
-extended:    1
-precision:   16
-rounding:    half_even
-maxExponent: 384
-minExponent: -383
-
--- base checks.  Note 0**0 is an error.
-powx001 power    '0'  '0'         -> NaN Invalid_operation
-powx002 power    '0'  '1'         -> '0'
-powx003 power    '0'  '2'         -> '0'
-powx004 power    '1'  '0'         -> '1'
-powx005 power    '1'  '1'         -> '1'
-powx006 power    '1'  '2'         -> '1'
-
-powx010 power    '2'  '0'         -> '1'
-powx011 power    '2'  '1'         -> '2'
-powx012 power    '2'  '2'         -> '4'
-powx013 power    '2'  '3'         -> '8'
-powx014 power    '2'  '4'         -> '16'
-powx015 power    '2'  '5'         -> '32'
-powx016 power    '2'  '6'         -> '64'
-powx017 power    '2'  '7'         -> '128'
-powx018 power    '2'  '8'         -> '256'
-powx019 power    '2'  '9'         -> '512'
-powx020 power    '2'  '10'        -> '1024'
-powx021 power    '2'  '11'        -> '2048'
-powx022 power    '2'  '12'        -> '4096'
-powx023 power    '2'  '15'        -> '32768'
-powx024 power    '2'  '16'        -> '65536'
-powx025 power    '2'  '31'        -> '2147483648'
--- NB 0 not stripped in next
-powx026 power    '2'  '32'        -> '4294967296'
-
-precision: 9
-powx027 power    '2'  '31'        -> '2.14748365E+9' Inexact Rounded
--- NB 0 not stripped in next
-powx028 power    '2'  '32'        -> '4.29496730E+9' Inexact Rounded
-precision: 10
-powx029 power    '2'  '31'        -> '2147483648'
-powx030 power    '2'  '32'        -> '4294967296'
-precision: 9
-
-powx031 power    '3'  '2'         -> 9
-powx032 power    '4'  '2'         -> 16
-powx033 power    '5'  '2'         -> 25
-powx034 power    '6'  '2'         -> 36
-powx035 power    '7'  '2'         -> 49
-powx036 power    '8'  '2'         -> 64
-powx037 power    '9'  '2'         -> 81
-powx038 power    '10' '2'         -> 100
-powx039 power    '11' '2'         -> 121
-powx040 power    '12' '2'         -> 144
-
-powx041 power    '3'  '3'         -> 27
-powx042 power    '4'  '3'         -> 64
-powx043 power    '5'  '3'         -> 125
-powx044 power    '6'  '3'         -> 216
-powx045 power    '7'  '3'         -> 343
-powx047 power   '-3'  '3'         -> -27
-powx048 power   '-4'  '3'         -> -64
-powx049 power   '-5'  '3'         -> -125
-powx050 power   '-6'  '3'         -> -216
-powx051 power   '-7'  '3'         -> -343
-
-powx052 power   '10'  '0'         -> 1
-powx053 power   '10'  '1'         -> 10
-powx054 power   '10'  '2'         -> 100
-powx055 power   '10'  '3'         -> 1000
-powx056 power   '10'  '4'         -> 10000
-powx057 power   '10'  '5'         -> 100000
-powx058 power   '10'  '6'         -> 1000000
-powx059 power   '10'  '7'         -> 10000000
-powx060 power   '10'  '8'         -> 100000000
-powx061 power   '10'  '9'         -> 1.00000000E+9 Rounded
-powx062 power   '10'  '22'        -> 1.00000000E+22 Rounded
-powx063 power   '10'  '77'        -> 1.00000000E+77 Rounded
-powx064 power   '10'  '99'        -> 1.00000000E+99 Rounded
-
-powx070 power  '0.3'  '0'           -> '1'
-powx071 power  '0.3'  '1'           -> '0.3'
-powx072 power  '0.3'  '1.00'        -> '0.3'
-powx073 power  '0.3'  '2.00'        -> '0.09'
-powx074 power  '0.3'  '2.000000000' -> '0.09'
-powx075 power  '6.0'  '1'           -> '6.0'     -- NB zeros not stripped
-powx076 power  '6.0'  '2'           -> '36.00'   -- ..
-powx077 power   '-3'  '2'           -> '9'       -- from NetRexx book
-powx078 power    '4'  '3'           -> '64'      -- .. (sort of)
-
-powx080 power   0.1    0            -> 1
-powx081 power   0.1    1            -> 0.1
-powx082 power   0.1    2            -> 0.01
-powx083 power   0.1    3            -> 0.001
-powx084 power   0.1    4            -> 0.0001
-powx085 power   0.1    5            -> 0.00001
-powx086 power   0.1    6            -> 0.000001
-powx087 power   0.1    7            -> 1E-7
-powx088 power   0.1    8            -> 1E-8
-powx089 power   0.1    9            -> 1E-9
-
-powx090 power   101    2            -> 10201
-powx091 power   101    3            -> 1030301
-powx092 power   101    4            -> 104060401
-powx093 power   101    5            -> 1.05101005E+10 Inexact Rounded
-powx094 power   101    6            -> 1.06152015E+12 Inexact Rounded
-powx095 power   101    7            -> 1.07213535E+14 Inexact Rounded
-
--- negative powers
-powx099 power  '1'  '-1'    -> 1
-powx100 power  '3'  '-1'    -> 0.333333333 Inexact Rounded
-powx101 power  '2'  '-1'    -> 0.5
-powx102 power  '2'  '-2'    -> 0.25
-powx103 power  '2'  '-4'    -> 0.0625
-powx104 power  '2'  '-8'    -> 0.00390625
-powx105 power  '2'  '-16'   -> 0.0000152587891 Inexact Rounded
-powx106 power  '2'  '-32'   -> 2.32830644E-10 Inexact Rounded
-powx108 power  '2'  '-64'   -> 5.42101086E-20 Inexact Rounded
-powx110 power  '10'  '-8'   -> 1E-8
-powx111 power  '10'  '-7'   -> 1E-7
-powx112 power  '10'  '-6'   -> 0.000001
-powx113 power  '10'  '-5'   -> 0.00001
-powx114 power  '10'  '-4'   -> 0.0001
-powx115 power  '10'  '-3'   -> 0.001
-powx116 power  '10'  '-2'   -> 0.01
-powx117 power  '10'  '-1'   -> 0.1
-powx121 power  '10'  '-77'  -> '1E-77'
-powx122 power  '10'  '-22'  -> '1E-22'
-
-powx123 power   '2'  '-1'   -> '0.5'
-powx124 power   '2'  '-2'   -> '0.25'
-powx125 power   '2'  '-4'   -> '0.0625'
-
-powx126 power   '0'  '-1'   -> Infinity
-powx127 power   '0'  '-2'   -> Infinity
-powx128 power   -0   '-1'   -> -Infinity
-powx129 power   -0   '-2'   -> Infinity
-
--- "0.5" tests from original Rexx diagnostics [loop unrolled]
-powx200 power   0.5    0    -> 1
-powx201 power   0.5    1    -> 0.5
-powx202 power   0.5    2    -> 0.25
-powx203 power   0.5    3    -> 0.125
-powx204 power   0.5    4    -> 0.0625
-powx205 power   0.5    5    -> 0.03125
-powx206 power   0.5    6    -> 0.015625
-powx207 power   0.5    7    -> 0.0078125
-powx208 power   0.5    8    -> 0.00390625
-powx209 power   0.5    9    -> 0.001953125
-powx210 power   0.5   10    -> 0.0009765625
-
-powx211 power 1  100000000  -> 1
-powx212 power 1  999999998  -> 1
-powx213 power 1  999999999  -> 1
-
-
--- The Vienna case.  Checks both setup and 1/acc working precision
--- Modified 1998.12.14 as RHS no longer rounded before use (must fit)
--- Modified 1990.02.04 as LHS is now rounded (instead of truncated to guard)
---    '123456789E+10'    -- lhs .. rounded to 1.23E+18
---    '-1.23000e+2'      -- rhs .. [was: -1.23455e+2, rounds to -123]
--- Modified 2002.10.06 -- finally, no input rounding
--- With input rounding, result would be 8.74E-2226
-precision: 3
-maxexponent: 5000
-minexponent: -5000
-powx219 power '123456789E+10' '-1.23000e+2' -> '5.54E-2226' Inexact Rounded
-
--- zeros
-maxexponent: +96
-minexponent: -95
-precision: 7
-powx223 power          0E-30 3  ->  0
-powx224 power          0E-10 3  ->  0
-powx225 power          0E-1  3  ->  0
-powx226 power          0E+0  3  ->  0
-powx227 power          0     3  ->  0
-powx228 power          0E+1  3  ->  0
-powx229 power          0E+10 3  ->  0
-powx230 power          0E+30 3  ->  0
-powx231 power     3    0E-30    ->  1
-powx232 power     3    0E-10    ->  1
-powx233 power     3    0E-1     ->  1
-powx234 power     3    0E+0     ->  1
-powx235 power     3    0        ->  1
-powx236 power     3    0E+1     ->  1
-powx237 power     3    0E+10    ->  1
-powx238 power     3    0E+30    ->  1
-powx239 power          0E-30 -3 ->  Infinity
-powx240 power          0E-10 -3 ->  Infinity
-powx241 power          0E-1  -3 ->  Infinity
-powx242 power          0E+0  -3 ->  Infinity
-powx243 power          0     -3 ->  Infinity
-powx244 power          0E+1  -3 ->  Infinity
-powx245 power          0E+10 -3 ->  Infinity
-powx246 power          0E+30 -3 ->  Infinity
-powx247 power    -3    0E-30    ->  1
-powx248 power    -3    0E-10    ->  1
-powx249 power    -3    0E-1     ->  1
-powx250 power    -3    0E+0     ->  1
-powx251 power    -3    0        ->  1
-powx252 power    -3    0E+1     ->  1
-powx253 power    -3    0E+10    ->  1
-powx254 power    -3    0E+30    ->  1
-
--- a few lhs negatives
-precision: 9
-maxExponent: 999
-minexponent: -999
-powx260 power   -10   '0'         -> 1
-powx261 power   -10   '1'         -> -10
-powx262 power   -10   '2'         -> 100
-powx263 power   -10   '3'         -> -1000
-powx264 power   -10   '4'         -> 10000
-powx265 power   -10   '5'         -> -100000
-powx266 power   -10   '6'         -> 1000000
-powx267 power   -10   '7'         -> -10000000
-powx268 power   -10   '8'         -> 100000000
-powx269 power   -10   '9'         -> -1.00000000E+9 Rounded
-powx270 power   -10   '22'        -> 1.00000000E+22 Rounded
-powx271 power   -10   '77'        -> -1.00000000E+77 Rounded
-powx272 power   -10   '99'        -> -1.00000000E+99 Rounded
-
--- some more edge cases
-precision:   15
-maxExponent: 999
-minexponent: -999
-powx391 power  0.1   999 -> 1E-999
-powx392 power  0.099 999 -> 4.360732062E-1004 Underflow Subnormal Inexact Rounded
-powx393 power  0.098 999 -> 1.71731E-1008 Underflow Subnormal Inexact Rounded
-powx394 power  0.097 999 -> 6E-1013 Underflow Subnormal Inexact Rounded
-powx395 power  0.096 999 -> 0E-1013 Underflow Subnormal Inexact Rounded Clamped
-powx396 power  0.01  999 -> 0E-1013 Underflow Subnormal Inexact Rounded Clamped
-powx397 power  0.02 100000000 -> 0E-1013 Underflow Subnormal Inexact Rounded Clamped
-
--- multiply tests are here to aid checking and test for consistent handling
--- of underflow
-precision: 5
-maxexponent: 999
-minexponent: -999
-
--- squares
-mulx400 multiply  1E-502     1e-502 -> 0E-1003    Subnormal Inexact Underflow Rounded Clamped
-mulx401 multiply  1E-501     1e-501 -> 1E-1002    Subnormal
-mulx402 multiply  2E-501     2e-501 -> 4E-1002    Subnormal
-mulx403 multiply  4E-501     4e-501 -> 1.6E-1001  Subnormal
-mulx404 multiply 10E-501    10e-501 -> 1.00E-1000 Subnormal
-mulx405 multiply 30E-501    30e-501 -> 9.00E-1000 Subnormal
-mulx406 multiply 40E-501    40e-501 -> 1.600E-999
-
-powx400 power     1E-502     2      -> 0E-1003    Underflow Subnormal Inexact Rounded Clamped
-powx401 power     1E-501     2      -> 1E-1002    Subnormal
-powx402 power     2E-501     2      -> 4E-1002    Subnormal
-powx403 power     4E-501     2      -> 1.6E-1001  Subnormal
-powx404 power    10E-501     2      -> 1.00E-1000 Subnormal
-powx405 power    30E-501     2      -> 9.00E-1000 Subnormal
-powx406 power    40E-501     2      -> 1.600E-999
-
--- cubes
-mulx410 multiply  1E-670     1e-335 -> 0E-1003    Underflow Subnormal Inexact Rounded Clamped
-mulx411 multiply  1E-668     1e-334 -> 1E-1002    Subnormal
-mulx412 multiply  4E-668     2e-334 -> 8E-1002    Subnormal
-mulx413 multiply  9E-668     3e-334 -> 2.7E-1001  Subnormal
-mulx414 multiply 16E-668     4e-334 -> 6.4E-1001  Subnormal
-mulx415 multiply 25E-668     5e-334 -> 1.25E-1000 Subnormal
-mulx416 multiply 10E-668   100e-334 -> 1.000E-999
-
-powx410 power     1E-335     3      -> 0E-1003    Underflow Subnormal Inexact Rounded Clamped
-powx411 power     1E-334     3      -> 1E-1002    Subnormal
-powx412 power     2E-334     3      -> 8E-1002    Subnormal
-powx413 power     3E-334     3      -> 2.7E-1001  Subnormal
-powx414 power     4E-334     3      -> 6.4E-1001  Subnormal
-powx415 power     5E-334     3      -> 1.25E-1000 Subnormal
-powx416 power    10E-334     3      -> 1.000E-999
-
--- negative powers, testing subnormals
-precision:   5
-maxExponent: 999
-minexponent: -999
-powx421 power  2.5E-501     -2         ->  Infinity Overflow Inexact Rounded
-powx422 power  2.5E-500     -2         ->  1.6E+999
-
-powx423 power  2.5E+499     -2         ->  1.6E-999
-powx424 power  2.5E+500     -2         ->  1.6E-1001 Subnormal
-powx425 power  2.5E+501     -2         ->    2E-1003 Underflow Subnormal Inexact Rounded
-powx426 power  2.5E+502     -2         ->    0E-1003 Underflow Subnormal Inexact Rounded Clamped
-
-powx427 power 0.25E+499     -2         ->  1.6E-997
-powx428 power 0.25E+500     -2         ->  1.6E-999
-powx429 power 0.25E+501     -2         ->  1.6E-1001 Subnormal
-powx430 power 0.25E+502     -2         ->    2E-1003 Underflow Subnormal Inexact Rounded
-powx431 power 0.25E+503     -2         ->    0E-1003 Underflow Subnormal Inexact Rounded Clamped
-
-powx432 power 0.04E+499     -2         ->  6.25E-996
-powx433 power 0.04E+500     -2         ->  6.25E-998
-powx434 power 0.04E+501     -2         ->  6.25E-1000 Subnormal
-powx435 power 0.04E+502     -2         ->   6.2E-1002 Underflow Subnormal Inexact Rounded
-powx436 power 0.04E+503     -2         ->     1E-1003 Underflow Subnormal Inexact Rounded
-powx437 power 0.04E+504     -2         ->     0E-1003 Underflow Subnormal Inexact Rounded Clamped
-
-powx441 power 0.04E+334     -3         ->  1.5625E-998
-powx442 power 0.04E+335     -3         ->    1.56E-1001 Underflow Subnormal Inexact Rounded
-powx443 power 0.04E+336     -3         ->       0E-1003 Underflow Subnormal Inexact Rounded Clamped
-powx444 power 0.25E+333     -3         ->     6.4E-998
-powx445 power 0.25E+334     -3         ->     6.4E-1001 Subnormal
-powx446 power 0.25E+335     -3         ->       1E-1003 Underflow Subnormal Inexact Rounded
-powx447 power 0.25E+336     -3         ->       0E-1003 Underflow Subnormal Inexact Rounded Clamped
--- check sign for cubes  and a few squares
-powx448 power -0.04E+334    -3         -> -1.5625E-998
-powx449 power -0.04E+335    -3         ->   -1.56E-1001 Underflow Subnormal Inexact Rounded
-powx450 power -0.04E+336    -3         ->      -0E-1003 Underflow Subnormal Inexact Rounded Clamped
-powx451 power -0.25E+333    -3         ->    -6.4E-998
-powx452 power -0.25E+334    -3         ->    -6.4E-1001 Subnormal
-powx453 power -0.25E+335    -3         ->      -1E-1003 Underflow Subnormal Inexact Rounded
-powx454 power -0.25E+336    -3         ->      -0E-1003 Underflow Subnormal Inexact Rounded Clamped
-powx455 power -0.04E+499    -2         ->    6.25E-996
-powx456 power -0.04E+500    -2         ->    6.25E-998
-powx457 power -0.04E+501    -2         ->    6.25E-1000 Subnormal
-powx458 power -0.04E+502    -2         ->     6.2E-1002 Underflow Subnormal Inexact Rounded
-
--- test -0s
-precision: 9
-powx560 power  0  0        ->  NaN Invalid_operation
-powx561 power  0 -0        ->  NaN Invalid_operation
-powx562 power -0  0        ->  NaN Invalid_operation
-powx563 power -0 -0        ->  NaN Invalid_operation
-powx564 power  1  0        ->  1
-powx565 power  1 -0        ->  1
-powx566 power -1  0        ->  1
-powx567 power -1 -0        ->  1
-powx568 power  0  1        ->  0
-powx569 power  0 -1        ->  Infinity
-powx570 power -0  1        -> -0
-powx571 power -0 -1        -> -Infinity
-powx572 power  0  2        ->  0
-powx573 power  0 -2        ->  Infinity
-powx574 power -0  2        ->  0
-powx575 power -0 -2        ->  Infinity
-powx576 power  0  3        ->  0
-powx577 power  0 -3        ->  Infinity
-powx578 power -0  3        -> -0
-powx579 power -0 -3        -> -Infinity
-
--- Specials
-powx580 power  Inf  -Inf   ->  0
-powx581 power  Inf  -1000  ->  0
-powx582 power  Inf  -1     ->  0
-powx583 power  Inf  -0.5   ->  0
-powx584 power  Inf  -0     ->  1
-powx585 power  Inf   0     ->  1
-powx586 power  Inf   0.5   ->  Infinity
-powx587 power  Inf   1     ->  Infinity
-powx588 power  Inf   1000  ->  Infinity
-powx589 power  Inf   Inf   ->  Infinity
-powx590 power -1000  Inf   ->  NaN  Invalid_operation
-powx591 power -Inf   Inf   ->  NaN  Invalid_operation
-powx592 power -1     Inf   ->  NaN  Invalid_operation
-powx593 power -0.5   Inf   ->  NaN  Invalid_operation
-powx594 power -0     Inf   ->  0
-powx595 power  0     Inf   ->  0
-powx596 power  0.5   Inf   ->  0
-powx597 power  1     Inf   ->  1.00000000 Inexact Rounded
-powx598 power  1000  Inf   ->  Infinity
-powx599 power  Inf   Inf   ->  Infinity
-
-powx600 power -Inf  -Inf   ->  NaN  Invalid_operation
-powx601 power -Inf  -1000  ->  0
-powx602 power -Inf  -1     -> -0
-powx603 power -Inf  -0.5   ->  NaN  Invalid_operation
-powx604 power -Inf  -0     ->  1
-powx605 power -Inf   0     ->  1
-powx606 power -Inf   0.5   ->  NaN  Invalid_operation
-powx607 power -Inf   1     -> -Infinity
-powx608 power -Inf   1000  ->  Infinity
-powx609 power -Inf   Inf   ->  NaN  Invalid_operation
-powx610 power -1000  Inf   ->  NaN  Invalid_operation
-powx611 power -Inf  -Inf   ->  NaN  Invalid_operation
-powx612 power -1    -Inf   ->  NaN  Invalid_operation
-powx613 power -0.5  -Inf   ->  NaN  Invalid_operation
-powx614 power -0    -Inf   ->  Infinity
-powx615 power  0    -Inf   ->  Infinity
-powx616 power  0.5  -Inf   ->  Infinity
-powx617 power  1    -Inf   ->  1.00000000 Inexact Rounded
-powx618 power  1000 -Inf   ->  0
-powx619 power  Inf  -Inf   ->  0
-
-powx621 power  NaN -Inf    ->  NaN
-powx622 power  NaN -1000   ->  NaN
-powx623 power  NaN -1      ->  NaN
-powx624 power  NaN -0.5    ->  NaN
-powx625 power  NaN -0      ->  NaN
-powx626 power  NaN  0      ->  NaN
-powx627 power  NaN  0.5    ->  NaN
-powx628 power  NaN  1      ->  NaN
-powx629 power  NaN  1000   ->  NaN
-powx630 power  NaN  Inf    ->  NaN
-powx631 power  NaN  NaN    ->  NaN
-powx632 power -Inf  NaN    ->  NaN
-powx633 power -1000 NaN    ->  NaN
-powx634 power -1    NaN    ->  NaN
-powx635 power -0    NaN    ->  NaN
-powx636 power  0    NaN    ->  NaN
-powx637 power  1    NaN    ->  NaN
-powx638 power  1000 NaN    ->  NaN
-powx639 power  Inf  NaN    ->  NaN
-
-powx641 power  sNaN -Inf   ->  NaN  Invalid_operation
-powx642 power  sNaN -1000  ->  NaN  Invalid_operation
-powx643 power  sNaN -1     ->  NaN  Invalid_operation
-powx644 power  sNaN -0.5   ->  NaN  Invalid_operation
-powx645 power  sNaN -0     ->  NaN  Invalid_operation
-powx646 power  sNaN  0     ->  NaN  Invalid_operation
-powx647 power  sNaN  0.5   ->  NaN  Invalid_operation
-powx648 power  sNaN  1     ->  NaN  Invalid_operation
-powx649 power  sNaN  1000  ->  NaN  Invalid_operation
-powx650 power  sNaN  NaN   ->  NaN  Invalid_operation
-powx651 power  sNaN sNaN   ->  NaN  Invalid_operation
-powx652 power  NaN  sNaN   ->  NaN  Invalid_operation
-powx653 power -Inf  sNaN   ->  NaN  Invalid_operation
-powx654 power -1000 sNaN   ->  NaN  Invalid_operation
-powx655 power -1    sNaN   ->  NaN  Invalid_operation
-powx656 power -0.5  sNaN   ->  NaN  Invalid_operation
-powx657 power -0    sNaN   ->  NaN  Invalid_operation
-powx658 power  0    sNaN   ->  NaN  Invalid_operation
-powx659 power  0.5  sNaN   ->  NaN  Invalid_operation
-powx660 power  1    sNaN   ->  NaN  Invalid_operation
-powx661 power  1000 sNaN   ->  NaN  Invalid_operation
-powx662 power  Inf  sNaN   ->  NaN  Invalid_operation
-powx663 power  NaN  sNaN   ->  NaN  Invalid_operation
-
--- NaN propagation
-powx670 power  NaN3  sNaN7  ->  NaN7  Invalid_operation
-powx671 power  sNaN8  NaN6  ->  NaN8  Invalid_operation
-powx672 power  1     sNaN7  ->  NaN7  Invalid_operation
-powx673 power  sNaN8  1     ->  NaN8  Invalid_operation
-powx674 power  Inf   sNaN7  ->  NaN7  Invalid_operation
-powx675 power  sNaN8  Inf   ->  NaN8  Invalid_operation
-powx676 power  Inf    NaN9  ->  NaN9
-powx677 power  NaN6   Inf   ->  NaN6
-powx678 power  1      NaN5  ->  NaN5
-powx679 power  NaN2   1     ->  NaN2
-powx680 power  NaN2   Nan4  ->  NaN2
-powx681 power  NaN    Nan4  ->  NaN
-powx682 power  NaN345 Nan   ->  NaN345
-powx683 power  Inf    -sNaN7 -> -NaN7  Invalid_operation
-powx684 power  -sNaN8  Inf   -> -NaN8  Invalid_operation
-powx685 power  Inf    -NaN9  -> -NaN9
-powx686 power  -NaN6   Inf   -> -NaN6
-powx687 power  -NaN2  -Nan4  -> -NaN2
-
--- long operand and RHS range checks
-maxexponent: 999
-minexponent: -999
-precision: 9
-powx701 power 12345678000 1 -> 1.23456780E+10 Rounded
-powx702 power 1234567800  1 -> 1.23456780E+9 Rounded
-powx703 power 1234567890  1 -> 1.23456789E+9 Rounded
-powx704 power 1234567891  1 -> 1.23456789E+9 Inexact Rounded
-powx705 power 12345678901 1 -> 1.23456789E+10 Inexact Rounded
-powx706 power 1234567896  1 -> 1.23456790E+9 Inexact Rounded
-
-precision: 15
--- still checking
-powx741 power 12345678000 1 -> 12345678000
-powx742 power 1234567800  1 -> 1234567800
-powx743 power 1234567890  1 -> 1234567890
-powx744 power 1234567891  1 -> 1234567891
-powx745 power 12345678901 1 -> 12345678901
-powx746 power 1234567896  1 -> 1234567896
-
-maxexponent: 999999
-minexponent: -999999
-precision: 9
-
--- near out-of-range edge cases
-powx163 power   '10'  '999999' -> '1.00000000E+999999' Rounded
-powx164 power   '10'  '999998' -> '1.00000000E+999998' Rounded
-powx165 power   '10'  '999997' -> '1.00000000E+999997' Rounded
-powx166 power   '10'  '333333' -> '1.00000000E+333333' Rounded
-powx183 power   '7'   '1000000'  -> 1.09651419E+845098 Inexact Rounded
-powx184 power   '7'   '1000001'  -> 7.67559934E+845098 Inexact Rounded
-powx186 power   '7'   '-1000001' -> 1.30282986E-845099 Inexact Rounded
-powx187 power   '7'   '-1000000' -> 9.11980901E-845099 Inexact Rounded
-powx118 power  '10'  '-333333'   -> 1E-333333
-powx119 power  '10'  '-999998'   -> 1E-999998
-powx120 power  '10'  '-999999'   -> 1E-999999
-powx181 power   '7'   '999998'   -> 2.23778406E+845096 Inexact Rounded
-powx182 power   '7'   '999999'   -> 1.56644884E+845097 Inexact Rounded
-powx189 power   '7'   '-999999'  -> 6.38386631E-845098 Inexact Rounded
-powx190 power   '7'   '-999998'  -> 4.46870641E-845097 Inexact Rounded
-
--- overflow and underflow tests
-precision: 9
-
-powx277 power  9             999999 -> 3.59084629E+954241 Inexact Rounded
-powx278 power  9.99999999    999999 -> 9.99000501E+999998 Inexact Rounded
-powx279 power 10             999999 -> 1.00000000E+999999         Rounded
-powx280 power 10.0000001     999999 -> 1.01005016E+999999 Inexact Rounded
-powx281 power 10.000001      999999 -> 1.10517080E+999999 Inexact Rounded
-powx282 power 10.00001       999999 -> 2.71827775E+999999 Inexact Rounded
-powx283 power 10.0001        999999 -> Infinity Overflow Inexact Rounded
-powx285 power 11             999999 -> Infinity Overflow Inexact Rounded
-powx286 power 12             999999 -> Infinity Overflow Inexact Rounded
-powx287 power 999            999999 -> Infinity Overflow Inexact Rounded
-powx288 power 999999999      999999 -> Infinity Overflow Inexact Rounded
-powx289 power 9.9E999999999  999999 -> Infinity Overflow Inexact Rounded
-
-powx290 power 0.5            999999 -> 2.02006812E-301030 Inexact Rounded
-powx291 power 0.1            999999 -> 1E-999999  -- unrounded
-powx292 power 0.09           999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx293 power 0.05           999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx294 power 0.01           999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx295 power 0.0001         999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx297 power 0.0000001      999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx298 power 0.0000000001   999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx299 power 1E-999999999   999999 -> 0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-
-powx310 power -9             999999 -> -3.59084629E+954241 Inexact Rounded
-powx311 power -10            999999 -> -1.00000000E+999999 Rounded
-powx312 power -10.0001       999999 -> -Infinity Overflow Inexact Rounded
-powx313 power -10.1          999999 -> -Infinity Overflow Inexact Rounded
-powx314 power -11            999999 -> -Infinity Overflow Inexact Rounded
-powx315 power -12            999999 -> -Infinity Overflow Inexact Rounded
-powx316 power -999           999999 -> -Infinity Overflow Inexact Rounded
-powx317 power -999999        999999 -> -Infinity Overflow Inexact Rounded
-powx318 power -999999999     999999 -> -Infinity Overflow Inexact Rounded
-powx319 power -9.9E999999999 999999 -> -Infinity Overflow Inexact Rounded
-
-powx320 power -0.5           999999 -> -2.02006812E-301030 Inexact Rounded
-powx321 power -0.1           999999 -> -1E-999999
-powx322 power -0.09          999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx323 power -0.05          999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx324 power -0.01          999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx325 power -0.0001        999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx327 power -0.0000001     999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx328 power -0.0000000001  999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx329 power -1E-999999999  999999 -> -0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-
--- note no trim of next result
-powx330 power -9             999998 ->  3.98982921E+954240 Inexact Rounded
-powx331 power -10            999998 ->  1.00000000E+999998 Rounded
-powx332 power -10.0001       999998 ->  Infinity Overflow Inexact Rounded
-powx333 power -10.1          999998 ->  Infinity Overflow Inexact Rounded
-powx334 power -11            999998 ->  Infinity Overflow Inexact Rounded
-powx335 power -12            999998 ->  Infinity Overflow Inexact Rounded
-powx336 power -999           999998 ->  Infinity Overflow Inexact Rounded
-powx337 power -999999        999998 ->  Infinity Overflow Inexact Rounded
-powx338 power -999999999     999998 ->  Infinity Overflow Inexact Rounded
-powx339 power -9.9E999999999 999998 ->  Infinity Overflow Inexact Rounded
-
-powx340 power -0.5           999998 ->  4.04013624E-301030 Inexact Rounded
-powx341 power -0.1           999998 ->  1E-999998  -- NB exact unrounded
-powx342 power -0.09          999998 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx343 power -0.05          999998 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx344 power -0.01          999998 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx345 power -0.0001        999998 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx347 power -0.0000001     999998 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx348 power -0.0000000001  999998 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx349 power -1E-999999999  999998 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-
--- some subnormals
-precision: 9
--- [precision is 9, so smallest exponent is -1000000007
-powx350 power  1e-1          500000 ->  1E-500000
-powx351 power  1e-2          999999 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-powx352 power  1e-2          500000 ->  1E-1000000 Subnormal
-powx353 power  1e-2          500001 ->  1E-1000002 Subnormal
-powx354 power  1e-2          500002 ->  1E-1000004 Subnormal
-powx355 power  1e-2          500003 ->  1E-1000006 Subnormal
-powx356 power  1e-2          500004 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-
-powx360 power  0.010001      500000 ->  5.17176082E-999979 Inexact Rounded
-powx361 power  0.010000001   500000 ->  1.0512711E-1000000 Underflow Subnormal Inexact Rounded
-powx362 power  0.010000001   500001 ->  1.05127E-1000002 Underflow Subnormal Inexact Rounded
-powx363 power  0.0100000009  500000 ->  1.0460279E-1000000 Underflow Subnormal Inexact Rounded
-powx364 power  0.0100000001  500000 ->  1.0050125E-1000000 Underflow Subnormal Inexact Rounded
-powx365 power  0.01          500000 ->  1E-1000000 Subnormal
-powx366 power  0.0099999999  500000 ->  9.950125E-1000001 Underflow Subnormal Inexact Rounded
-powx367 power  0.0099999998  500000 ->  9.900498E-1000001 Underflow Subnormal Inexact Rounded
-powx368 power  0.0099999997  500000 ->  9.851119E-1000001 Underflow Subnormal Inexact Rounded
-powx369 power  0.0099999996  500000 ->  9.801987E-1000001 Underflow Subnormal Inexact Rounded
-powx370 power  0.009         500000 ->  0E-1000007 Underflow Subnormal Inexact Rounded Clamped
-
--- 1/subnormal -> overflow
-powx371 power  1e-1         -500000 ->  1E+500000
-powx372 power  1e-2         -999999 ->  Infinity Overflow Inexact Rounded
-powx373 power  1e-2         -500000 ->  Infinity Overflow Inexact Rounded
-powx374 power  1e-2         -500001 ->  Infinity Overflow Inexact Rounded
-powx375 power  1e-2         -500002 ->  Infinity Overflow Inexact Rounded
-powx376 power  1e-2         -500003 ->  Infinity Overflow Inexact Rounded
-powx377 power  1e-2         -500004 ->  Infinity Overflow Inexact Rounded
-
-powx381 power  0.010001     -500000 ->  1.93357743E+999978 Inexact Rounded
-powx382 power  0.010000001  -500000 ->  9.51229427E+999999 Inexact Rounded
-powx383 power  0.010000001  -500001 ->  Infinity Overflow  Inexact Rounded
-powx384 power  0.0100000009 -500000 ->  9.55997484E+999999 Inexact Rounded
-powx385 power  0.0100000001 -500000 ->  9.95012479E+999999 Inexact Rounded
-powx386 power  0.01         -500000 ->  Infinity Overflow Inexact Rounded
-powx387 power  0.009999     -500000 ->  Infinity Overflow Inexact Rounded
-
--- negative power giving subnormal
-powx388 power  100.000001   -500000 ->  9.950125E-1000001 Underflow Subnormal Inexact Rounded
-
-
--- test some 'false integer' boundaries
-precision:   16
-rounding:    half_even
-maxExponent: 384
-minExponent: -383
-powx501 power  100  1E+1   ->  1.000000000000000E+20     Rounded
-powx502 power  100  1E+2   ->  1.000000000000000E+200    Rounded
-powx503 power  100  1E+3   ->  Infinity Overflow Inexact Rounded
-powx504 power  100  1E+4   ->  Infinity Overflow Inexact Rounded
-powx505 power  100  1E+5   ->  Infinity Overflow Inexact Rounded
-powx506 power  100  1E+6   ->  Infinity Overflow Inexact Rounded
-powx507 power  100  1E+7   ->  Infinity Overflow Inexact Rounded
-powx508 power  100  1E+8   ->  Infinity Overflow Inexact Rounded
-powx509 power  100  1E+9   ->  Infinity Overflow Inexact Rounded
-powx510 power  100  1E+10  ->  Infinity Overflow Inexact Rounded
-powx511 power  100  1E+11  ->  Infinity Overflow Inexact Rounded
-powx512 power  100  1E+12  ->  Infinity Overflow Inexact Rounded
-powx513 power  100  1E+13  ->  Infinity Overflow Inexact Rounded
-powx514 power  100  1E+14  ->  Infinity Overflow Inexact Rounded
-powx515 power  100  1E+15  ->  Infinity Overflow Inexact Rounded
-powx516 power  100  1E+16  ->  Infinity Overflow Inexact Rounded
-powx517 power  100  1E+17  ->  Infinity Overflow Inexact Rounded
-powx518 power  100  1E+18  ->  Infinity Overflow Inexact Rounded
-powx519 power  100  1E+19  ->  Infinity Overflow Inexact Rounded
-powx520 power  100  1E+20  ->  Infinity Overflow Inexact Rounded
-powx521 power  100  1E+21  ->  Infinity Overflow Inexact Rounded
-powx522 power  100  1E+22  ->  Infinity Overflow Inexact Rounded
-powx523 power  100  1E+23  ->  Infinity Overflow Inexact Rounded
-powx524 power  100  1E+24  ->  Infinity Overflow Inexact Rounded
-powx525 power  100  1E+25  ->  Infinity Overflow Inexact Rounded
-powx526 power  100  1E+26  ->  Infinity Overflow Inexact Rounded
-powx527 power  100  1E+27  ->  Infinity Overflow Inexact Rounded
-powx528 power  100  1E+28  ->  Infinity Overflow Inexact Rounded
-powx529 power  100  1E+29  ->  Infinity Overflow Inexact Rounded
-powx530 power  100  1E+30  ->  Infinity Overflow Inexact Rounded
-powx531 power  100  1E+40  ->  Infinity Overflow Inexact Rounded
-powx532 power  100  1E+50  ->  Infinity Overflow Inexact Rounded
-powx533 power  100  1E+100 ->  Infinity Overflow Inexact Rounded
-powx534 power  100  1E+383 ->  Infinity Overflow Inexact Rounded
-
--- a check for double-rounded subnormals
-precision:   5
-maxexponent: 79
-minexponent: -79
-powx750 power     1.2347E-40  2      ->  1.524E-80 Inexact Rounded Subnormal Underflow
-
--- Null tests
-powx900 power  1 # -> NaN Invalid_operation
-powx901 power  # 1 -> NaN Invalid_operation
-
-----------------------------------------------------------------------
--- Below here are tests with a precision or context outside of the  --
--- decNumber 'mathematical functions' restricted range.  These      --
--- remain supported in decNumber to minimize breakage, but may be   --
--- outside the range of other implementations.                      --
-----------------------------------------------------------------------
-maxexponent: 999999999
-minexponent: -999999999
-precision: 9
-powx1063 power   '10'  '999999999' -> '1.00000000E+999999999' Rounded
-powx1064 power   '10'  '999999998' -> '1.00000000E+999999998' Rounded
-powx1065 power   '10'  '999999997' -> '1.00000000E+999999997' Rounded
-powx1066 power   '10'  '333333333' -> '1.00000000E+333333333' Rounded
--- next two are integer-out-of range
-powx1183 power   '7'   '1000000000'  -> NaN Invalid_context
-powx1184 power   '7'   '1000000001'  -> NaN Invalid_context
-powx1186 power   '7'   '-1000000001' -> 1.38243630E-845098041 Inexact Rounded
-powx1187 power   '7'   '-1000000000' -> 9.67705411E-845098041 Inexact Rounded
-
--- out-of-range edge cases
-powx1118 power  '10'  '-333333333'   -> 1E-333333333
-powx1119 power  '10'  '-999999998'   -> 1E-999999998
-powx1120 power  '10'  '-999999999'   -> 1E-999999999
-powx1181 power   '7'   '999999998'   -> 2.10892313E+845098038 Inexact Rounded
-powx1182 power   '7'   '999999999'   -> 1.47624619E+845098039 Inexact Rounded
-powx1189 power   '7'   '-999999999'  -> 6.77393787E-845098040 Inexact Rounded
-powx1190 power   '7'   '-999999998'  -> 4.74175651E-845098039 Inexact Rounded
-
--- A (rare) case where the last digit is not within 0.5 ULP with classic precision
-precision: 9
-powx1215 power "-21971575.0E+31454441" "-7" -> "-4.04549502E-220181139" Inexact Rounded
-precision: 20
-powx1216 power "-21971575.0E+31454441" "-7" -> "-4.0454950249324891788E-220181139" Inexact Rounded
-
--- overflow and underflow tests
-precision: 9
-powx1280 power  9            999999999 -> 3.05550054E+954242508 Inexact Rounded
-powx1281 power 10            999999999 -> 1.00000000E+999999999 Rounded
-powx1282 power 10.0001       999999999 -> Infinity Overflow Inexact Rounded
-powx1283 power 10.1          999999999 -> Infinity Overflow Inexact Rounded
-powx1284 power 11            999999999 -> Infinity Overflow Inexact Rounded
-powx1285 power 12            999999999 -> Infinity Overflow Inexact Rounded
-powx1286 power 999           999999999 -> Infinity Overflow Inexact Rounded
-powx1287 power 999999        999999999 -> Infinity Overflow Inexact Rounded
-powx1288 power 999999999     999999999 -> Infinity Overflow Inexact Rounded
-powx1289 power 9.9E999999999 999999999 -> Infinity Overflow Inexact Rounded
-
-powx1290 power 0.5           999999999 -> 4.33559594E-301029996 Inexact Rounded
-powx1291 power 0.1           999999999 -> 1E-999999999  -- unrounded
-powx1292 power 0.09          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1293 power 0.05          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1294 power 0.01          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1295 power 0.0001        999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1297 power 0.0000001     999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1298 power 0.0000000001  999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1299 power 1E-999999999  999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-
-powx1310 power -9             999999999 -> -3.05550054E+954242508 Inexact Rounded
-powx1311 power -10            999999999 -> -1.00000000E+999999999 Rounded
-powx1312 power -10.0001       999999999 -> -Infinity Overflow Inexact Rounded
-powx1313 power -10.1          999999999 -> -Infinity Overflow Inexact Rounded
-powx1314 power -11            999999999 -> -Infinity Overflow Inexact Rounded
-powx1315 power -12            999999999 -> -Infinity Overflow Inexact Rounded
-powx1316 power -999           999999999 -> -Infinity Overflow Inexact Rounded
-powx1317 power -999999        999999999 -> -Infinity Overflow Inexact Rounded
-powx1318 power -999999999     999999999 -> -Infinity Overflow Inexact Rounded
-powx1319 power -9.9E999999999 999999999 -> -Infinity Overflow Inexact Rounded
-
-powx1320 power -0.5           999999999 -> -4.33559594E-301029996 Inexact Rounded
-powx1321 power -0.1           999999999 -> -1E-999999999
-powx1322 power -0.09          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1323 power -0.05          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1324 power -0.01          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1325 power -0.0001        999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1327 power -0.0000001     999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1328 power -0.0000000001  999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1329 power -1E-999999999  999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-
--- note no trim of next result
-powx1330 power -9             999999998 ->  3.39500060E+954242507 Inexact Rounded
-powx1331 power -10            999999998 ->  1.00000000E+999999998 Rounded
-powx1332 power -10.0001       999999998 ->  Infinity Overflow Inexact Rounded
-powx1333 power -10.1          999999998 ->  Infinity Overflow Inexact Rounded
-powx1334 power -11            999999998 ->  Infinity Overflow Inexact Rounded
-powx1335 power -12            999999998 ->  Infinity Overflow Inexact Rounded
-powx1336 power -999           999999998 ->  Infinity Overflow Inexact Rounded
-powx1337 power -999999        999999998 ->  Infinity Overflow Inexact Rounded
-powx1338 power -999999999     999999998 ->  Infinity Overflow Inexact Rounded
-powx1339 power -9.9E999999999 999999998 ->  Infinity Overflow Inexact Rounded
-
-powx1340 power -0.5           999999998 ->  8.67119187E-301029996 Inexact Rounded
-powx1341 power -0.1           999999998 ->  1E-999999998  -- NB exact unrounded
-powx1342 power -0.09          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1343 power -0.05          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1344 power -0.01          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1345 power -0.0001        999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1347 power -0.0000001     999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1348 power -0.0000000001  999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1349 power -1E-999999999  999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-
--- some subnormals
-precision: 9
--- [precision is 9, so smallest exponent is -1000000007
-powx1350 power  1e-1          500000000 ->  1E-500000000
-powx1351 power  1e-2          999999999 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1352 power  1e-2          500000000 ->  1E-1000000000 Subnormal
-powx1353 power  1e-2          500000001 ->  1E-1000000002 Subnormal
-powx1354 power  1e-2          500000002 ->  1E-1000000004 Subnormal
-powx1355 power  1e-2          500000003 ->  1E-1000000006 Subnormal
-powx1356 power  1e-2          500000004 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-
-powx1360 power  0.010001      500000000 ->  4.34941988E-999978287 Inexact Rounded
-powx1361 power  0.010000001   500000000 ->  5.18469257E-999999979 Inexact Rounded
-powx1362 power  0.010000001   500000001 ->  5.18469309E-999999981 Inexact Rounded
-powx1363 power  0.0100000009  500000000 ->  3.49342003E-999999981 Inexact Rounded
-powx1364 power  0.0100000001  500000000 ->  1.48413155E-999999998 Inexact Rounded
-powx1365 power  0.01          500000000 ->  1E-1000000000 Subnormal
-powx1366 power  0.0099999999  500000000 ->  6.7379E-1000000003 Underflow Subnormal Inexact Rounded
-powx1367 power  0.0099999998  500000000 ->  4.54E-1000000005 Underflow Subnormal Inexact Rounded
-powx1368 power  0.0099999997  500000000 ->  3E-1000000007 Underflow Subnormal Inexact Rounded
-powx1369 power  0.0099999996  500000000 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-powx1370 power  0.009         500000000 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-
--- 1/subnormal -> overflow
-powx1371 power  1e-1         -500000000 ->  1E+500000000
-powx1372 power  1e-2         -999999999 ->  Infinity Overflow Inexact Rounded
-powx1373 power  1e-2         -500000000 ->  Infinity Overflow Inexact Rounded
-powx1374 power  1e-2         -500000001 ->  Infinity Overflow Inexact Rounded
-powx1375 power  1e-2         -500000002 ->  Infinity Overflow Inexact Rounded
-powx1376 power  1e-2         -500000003 ->  Infinity Overflow Inexact Rounded
-powx1377 power  1e-2         -500000004 ->  Infinity Overflow Inexact Rounded
-
-powx1381 power  0.010001     -500000000 ->  2.29915719E+999978286 Inexact Rounded
-powx1382 power  0.010000001  -500000000 ->  1.92875467E+999999978 Inexact Rounded
-powx1383 power  0.010000001  -500000001 ->  1.92875448E+999999980 Inexact Rounded
-powx1384 power  0.0100000009 -500000000 ->  2.86252438E+999999980 Inexact Rounded
-powx1385 power  0.0100000001 -500000000 ->  6.73794717E+999999997 Inexact Rounded
-powx1386 power  0.01         -500000000 ->  Infinity Overflow Inexact Rounded
-powx1387 power  0.009999     -500000000 ->  Infinity Overflow Inexact Rounded
-
--- negative power giving subnormal
-powx1388 power  100.000001   -500000000 ->  6.7379E-1000000003 Underflow Subnormal Inexact Rounded
-
-----------------------------------------------------------------------
--- Below here are the tests with a non-integer rhs, including the   --
--- tests that previously caused Invalid operation.  An integer-only --
--- (on rhs) implementation should handle all the tests above as     --
--- shown, and would flag most of the following tests as Invalid.    --
-----------------------------------------------------------------------
-precision:   16
-rounding:    half_even
-maxExponent: 384
-minExponent: -383
-
-powx2000 power 7 '10000000000'        -> Infinity Overflow Inexact Rounded
-powx2001 power 2 '2.000001'           -> 4.000002772589683 Inexact Rounded
-powx2002 power 2 '2.00000000'         -> 4
-powx2003 power 2 '2.000000001'        -> 4.000000002772589 Inexact Rounded
-powx2004 power 2 '2.0000000001'       -> 4.000000000277259 Inexact Rounded
-powx2005 power 2 '2.00000000001'      -> 4.000000000027726 Inexact Rounded
-powx2006 power 2 '2.000000000001'     -> 4.000000000002773 Inexact Rounded
-powx2007 power 2 '2.0000000000001'    -> 4.000000000000277 Inexact Rounded
-powx2008 power 2 '2.00000000000001'   -> 4.000000000000028 Inexact Rounded
-powx2009 power 2 '2.000000000000001'  -> 4.000000000000003 Inexact Rounded
-powx2010 power 2 '2.0000000000000001' -> 4.000000000000000 Inexact Rounded
---                1 234567890123456
-
-powx2011 power 1 1234 -> 1
-precision: 4
-powx2012 power 1 1234 -> 1
-precision: 3
-powx2013 power 1 1234     -> 1
-powx2014 power 1 12.34e+2 -> 1
-powx2015 power 1 12.3     -> 1.00 Inexact Rounded
-powx2016 power 1 12.0     -> 1
-powx2017 power 1 1.01     -> 1.00 Inexact Rounded
-powx2018 power 2 1.00     -> 2
-powx2019 power 2 2.00     -> 4
-precision: 9
-powx2030 power 1 1.0001           -> 1.00000000 Inexact Rounded
-powx2031 power 1 1.0000001        -> 1.00000000 Inexact Rounded
-powx2032 power 1 1.0000000001     -> 1.00000000 Inexact Rounded
-powx2033 power 1 1.0000000000001  -> 1.00000000 Inexact Rounded
-precision: 5
-powx2034 power 1 1.0001           -> 1.0000 Inexact Rounded
-powx2035 power 1 1.0000001        -> 1.0000 Inexact Rounded
-powx2036 power 1 1.0000000001     -> 1.0000 Inexact Rounded
-powx2037 power 1 1.0000000000001  -> 1.0000 Inexact Rounded
-powx2038 power 1 1.0000000000001  -> 1.0000 Inexact Rounded
-
-rounding: ceiling
-precision: 3
-powx2039 power 1 1.01     -> 1.00 Inexact Rounded
-powx2040 power 1 12.3     -> 1.00 Inexact Rounded
-rounding: half_even
-
--- 1 ** any integer, including big ones, should be exact
-powx2041 power 1 1000000000   -> 1
-powx2042 power 1 9999999999   -> 1
-powx2043 power 1 12345678000  -> 1
-powx2044 power 1 1234567800   -> 1
-powx2045 power 1 1234567890   -> 1
-powx2046 power 1 11234567891  -> 1
-powx2047 power 1 12345678901  -> 1
-powx2048 power 1 1234567896   -> 1
-powx2049 power 1 -1234567896  -> 1
-powx2051 power 1 1000000000   -> 1
-powx2052 power 1 -1000000000  -> 1
-powx2053 power 1 12345678000  -> 1
-powx2054 power 1 -1234567896  -> 1
-powx2055 power 1 1000000000   -> 1
-powx2056 power 1 4300000000   -> 1
-powx2057 power 1 -1000000000  -> 1
--- negatives ... but not out of range for decNumber
-powx2061 power -1 100000   -> 1
-powx2062 power -1 999999   -> -1
-powx2063 power -1 1278000  -> 1
-powx2064 power -1 127803   -> -1
-powx2065 power -1 127890   -> 1
-powx2066 power -1 1167891  -> -1
-powx2067 power -1 1278901  -> -1
-powx2068 power -1 127896   -> 1
-powx2069 power -1 -167897  -> -1
-powx2071 power -1 100000   -> 1
-powx2072 power -1 -100001  -> -1
-powx2073 power -1 1278000  -> 1
-powx2074 power -1 -167896  -> 1
-powx2075 power -1 100000   -> 1
-powx2076 power -1 -100009  -> -1
-
--- The above were derived from the earlier version of power.decTest;
--- now start new tests for power(x,y) for non-integer y
-precision: 9
-
--- tests from specification
-powx2081 power 2           3    ->  '8'
-powx2082 power -2          3    ->  '-8'
-powx2083 power 2          -3    ->  '0.125'
-powx2084 power 1.7        '8'   ->  '69.7575744' Inexact Rounded
-powx2085 power 10 0.301029996   ->  2.00000000   Inexact Rounded
-powx2086 power Infinity   '-1'  ->  '0'
-powx2087 power Infinity   '0'   ->  '1'
-powx2088 power Infinity   '1'   ->  'Infinity'
-powx2089 power -Infinity  '-1'  ->  '-0'
-powx2090 power -Infinity  '0'   ->  '1'
-powx2091 power -Infinity  '1'   ->  '-Infinity'
-powx2092 power -Infinity  '2'   ->  'Infinity'
-powx2093 power 0  0             ->  'NaN' Invalid_operation
-
-precision:   16
-rounding:    half_even
-maxExponent: 384
-minExponent: -383
-
--- basics
-powx2100 power 1E-7     1E-7   -> 0.9999983881917339      Inexact Rounded
-powx2101 power 0.003    1E-7   -> 0.9999994190858697      Inexact Rounded
-powx2102 power 0.7      1E-7   -> 0.9999999643325062      Inexact Rounded
-powx2103 power 1.2      1E-7   -> 1.000000018232156       Inexact Rounded
-powx2104 power 71       1E-7   -> 1.000000426268079       Inexact Rounded
-powx2105 power 9E+9     1E-7   -> 1.000002292051668       Inexact Rounded
-
-powx2110 power 1E-7     0.003  -> 0.9527961640236519      Inexact Rounded
-powx2111 power 0.003    0.003  -> 0.9827235503366797      Inexact Rounded
-powx2112 power 0.7      0.003  -> 0.9989305474406207      Inexact Rounded
-powx2113 power 1.2      0.003  -> 1.000547114282834       Inexact Rounded
-powx2114 power 71       0.003  -> 1.012870156273545       Inexact Rounded
-powx2115 power 9E+9     0.003  -> 1.071180671278787       Inexact Rounded
-
-powx2120 power 1E-7     0.7    -> 0.00001258925411794167  Inexact Rounded
-powx2121 power 0.003    0.7    -> 0.01713897630281030     Inexact Rounded
-powx2122 power 0.7      0.7    -> 0.7790559126704491      Inexact Rounded
-powx2123 power 1.2      0.7    -> 1.136126977198889       Inexact Rounded
-powx2124 power 71       0.7    -> 19.76427300093870       Inexact Rounded
-powx2125 power 9E+9     0.7    -> 9289016.976853710       Inexact Rounded
-
-powx2130 power 1E-7     1.2    -> 3.981071705534973E-9    Inexact Rounded
-powx2131 power 0.003    1.2    -> 0.0009387403933595694   Inexact Rounded
-powx2132 power 0.7      1.2    -> 0.6518049405663864      Inexact Rounded
-powx2133 power 1.2      1.2    -> 1.244564747203978       Inexact Rounded
-powx2134 power 71       1.2    -> 166.5367244638552       Inexact Rounded
-powx2135 power 9E+9     1.2    -> 881233526124.8791       Inexact Rounded
-
-powx2140 power 1E-7     71     -> 0E-398                  Inexact Rounded Underflow Subnormal Clamped
-powx2141 power 0.003    71     -> 7.509466514979725E-180  Inexact Rounded
-powx2142 power 0.7      71     -> 1.004525211269079E-11   Inexact Rounded
-powx2143 power 1.2      71     -> 418666.7483186515       Inexact Rounded
-powx2144 power 71       71     -> 2.750063734834616E+131  Inexact Rounded
-powx2145 power 9E+9     71     -> Infinity                Inexact Rounded Overflow
-
-powx2150 power 1E-7     9E+9   -> 0E-398                  Inexact Rounded Underflow Subnormal Clamped
-powx2151 power 0.003    9E+9   -> 0E-398                  Inexact Rounded Underflow Subnormal Clamped
-powx2152 power 0.7      9E+9   -> 0E-398                  Inexact Rounded Underflow Subnormal Clamped
-powx2153 power 1.2      9E+9   -> Infinity                Inexact Rounded Overflow
-powx2154 power 71       9E+9   -> Infinity                Inexact Rounded Overflow
-powx2155 power 9E+9     9E+9   -> Infinity                Inexact Rounded Overflow
-
--- number line milestones with lhs<1 and lhs>1
-
--- Overflow boundary (Nmax)
-powx2202 power 71     207.966651583983200 -> Infinity Inexact Rounded Overflow
-powx2201 power 71     207.966651583983199 -> 9.999999999999994E+384 Inexact Rounded
-powx2204 power 0.003 -152.603449817093577 -> Infinity Inexact Rounded Overflow
-powx2203 power 0.003 -152.603449817093576 -> 9.999999999999994E+384 Inexact Rounded
-
--- Nmin boundary
-powx2211 power 71    -206.886305341988480 -> 1.000000000000005E-383 Inexact Rounded
-powx2212 power 71    -206.886305341988481 -> 1.000000000000001E-383 Inexact Rounded
-powx2213 power 71    -206.886305341988482 -> 9.99999999999997E-384  Inexact Rounded Underflow Subnormal
-powx2214 power 71    -206.886305341988483 -> 9.99999999999992E-384  Inexact Rounded Underflow Subnormal
---                                           9.999999999999924565357019820
-
-powx2215 power 0.003  151.810704623238543 -> 1.000000000000009E-383 Inexact Rounded
-powx2216 power 0.003  151.810704623238544 -> 1.000000000000003E-383 Inexact Rounded
-powx2217 power 0.003  151.810704623238545 -> 9.99999999999997E-384  Inexact Rounded Underflow Subnormal
-powx2218 power 0.003  151.810704623238546 -> 9.99999999999991E-384  Inexact Rounded Underflow Subnormal
-
--- Ntiny boundary, these edge cases determined using half_up rounding
-rounding: half_up
-powx2221 power 71    -215.151510469220498 -> 1E-398    Inexact Rounded Underflow Subnormal
-powx2222 power 71    -215.151510469220499 -> 1E-398    Inexact Rounded Underflow Subnormal
-powx2223 power 71    -215.151510469220500 -> 0E-398    Inexact Rounded Underflow Subnormal Clamped
-powx2224 power 71    -215.151510469220501 -> 0E-398    Inexact Rounded Underflow Subnormal Clamped
-
-powx2225 power 0.003  157.875613618285691 -> 1E-398    Inexact Rounded Underflow Subnormal
-powx2226 power 0.003  157.875613618285692 -> 1E-398    Inexact Rounded Underflow Subnormal
-powx2227 power 0.003  157.875613618285693 -> 0E-398    Inexact Rounded Underflow Subnormal Clamped
-powx2228 power 0.003  220                 -> 0E-398    Inexact Rounded Underflow Subnormal Clamped
-rounding: half_even
-
--- power(10, y) are important ...
-
--- Integer powers are exact, unless over/underflow
-powx2301 power 10     385     -> Infinity Overflow Inexact Rounded
-powx2302 power 10     384     -> 1.000000000000000E+384 Rounded
-powx2303 power 10      17     -> 1.000000000000000E+17 Rounded
-powx2304 power 10      16     -> 1.000000000000000E+16 Rounded
-powx2305 power 10      15     -> 1000000000000000
-powx2306 power 10      10     -> 10000000000
-powx2307 power 10       5     -> 100000
-powx2308 power 10       1     -> 10
-powx2309 power 10       0     -> 1
-powx2310 power 10      -1     -> 0.1
-powx2311 power 10      -5     -> 0.00001
-powx2312 power 10      -6     -> 0.000001
-powx2313 power 10      -7     -> 1E-7
-powx2314 power 10      -8     -> 1E-8
-powx2315 power 10      -9     -> 1E-9
-powx2316 power 10     -10     -> 1E-10
-powx2317 power 10    -383     -> 1E-383
-powx2318 power 10    -384     -> 1E-384 Subnormal
-powx2319 power 10    -385     -> 1E-385 Subnormal
-powx2320 power 10    -397     -> 1E-397 Subnormal
-powx2321 power 10    -398     -> 1E-398 Subnormal
-powx2322 power 10    -399     -> 0E-398 Subnormal Underflow Inexact Rounded Clamped
-powx2323 power 10    -400     -> 0E-398 Subnormal Underflow Inexact Rounded Clamped
-
--- Independent sanity check: 1961 Godfrey & Siddons four-figure logs
-powx2351 power 10   0.0000    -> 1
-powx2352 power 10   0.3010    -> 1.999861869632744 Inexact Rounded
-powx2353 power 10   0.4771    -> 2.999853181190793 Inexact Rounded
-powx2354 power 10   0.6021    -> 4.000368510461250 Inexact Rounded
-powx2355 power 10   0.6990    -> 5.000345349769785 Inexact Rounded
-powx2356 power 10   0.7782    -> 6.000673538641164 Inexact Rounded
-powx2357 power 10   0.8451    -> 7.000031591308969 Inexact Rounded
-powx2358 power 10   0.9031    -> 8.000184448550990 Inexact Rounded
-powx2359 power 10   0.9542    -> 8.999119108700520 Inexact Rounded
-powx2360 power 10   0.9956    -> 9.899197750805841 Inexact Rounded
-powx2361 power 10   0.9996    -> 9.990793899844618 Inexact Rounded
-precision: 4
-powx2371 power 10   0.0000    -> 1
-powx2372 power 10   0.3010    -> 2.000 Inexact Rounded
-powx2373 power 10   0.4771    -> 3.000 Inexact Rounded
-powx2374 power 10   0.6021    -> 4.000 Inexact Rounded
-powx2375 power 10   0.6990    -> 5.000 Inexact Rounded
-powx2376 power 10   0.7782    -> 6.001 Inexact Rounded
-powx2377 power 10   0.8451    -> 7.000 Inexact Rounded
-powx2378 power 10   0.9031    -> 8.000 Inexact Rounded
-powx2379 power 10   0.9542    -> 8.999 Inexact Rounded
-powx2380 power 10   0.9956    -> 9.899 Inexact Rounded
-powx2381 power 10   0.9996    -> 9.991 Inexact Rounded
-
--- 10**x ~=2 (inverse of the test in log10.decTest)
-precision: 50
-powx2401 power 10 0.30102999566398119521373889472449302676818988146211 -> 2.0000000000000000000000000000000000000000000000000 Inexact Rounded
-precision: 49
-powx2402 power 10 0.3010299956639811952137388947244930267681898814621 -> 2.000000000000000000000000000000000000000000000000 Inexact Rounded
-precision: 48
-powx2403 power 10 0.301029995663981195213738894724493026768189881462 -> 2.00000000000000000000000000000000000000000000000 Inexact Rounded
-precision: 47
-powx2404 power 10 0.30102999566398119521373889472449302676818988146 -> 2.0000000000000000000000000000000000000000000000 Inexact Rounded
-precision: 46
-powx2405 power 10 0.3010299956639811952137388947244930267681898815 -> 2.000000000000000000000000000000000000000000000 Inexact Rounded
-precision: 45
-powx2406 power 10 0.301029995663981195213738894724493026768189881 -> 2.00000000000000000000000000000000000000000000 Inexact Rounded
-precision: 44
-powx2407 power 10 0.30102999566398119521373889472449302676818988 -> 2.0000000000000000000000000000000000000000000 Inexact Rounded
-precision: 43
-powx2408 power 10 0.3010299956639811952137388947244930267681899 -> 2.000000000000000000000000000000000000000000 Inexact Rounded
-precision: 42
-powx2409 power 10 0.301029995663981195213738894724493026768190 -> 2.00000000000000000000000000000000000000000 Inexact Rounded
-precision: 41
-powx2410 power 10 0.30102999566398119521373889472449302676819 -> 2.0000000000000000000000000000000000000000 Inexact Rounded
-precision: 40
-powx2411 power 10 0.3010299956639811952137388947244930267682 -> 2.000000000000000000000000000000000000000 Inexact Rounded
-precision: 39
-powx2412 power 10 0.301029995663981195213738894724493026768 -> 2.00000000000000000000000000000000000000 Inexact Rounded
-precision: 38
-powx2413 power 10 0.30102999566398119521373889472449302677 -> 2.0000000000000000000000000000000000000 Inexact Rounded
-precision: 37
-powx2414 power 10 0.3010299956639811952137388947244930268 -> 2.000000000000000000000000000000000000 Inexact Rounded
-precision: 36
-powx2415 power 10 0.301029995663981195213738894724493027 -> 2.00000000000000000000000000000000000 Inexact Rounded
-precision: 35
-powx2416 power 10 0.30102999566398119521373889472449303 -> 2.0000000000000000000000000000000000 Inexact Rounded
-precision: 34
-powx2417 power 10 0.3010299956639811952137388947244930 -> 2.000000000000000000000000000000000 Inexact Rounded
-precision: 33
-powx2418 power 10 0.301029995663981195213738894724493 -> 2.00000000000000000000000000000000 Inexact Rounded
-precision: 32
-powx2419 power 10 0.30102999566398119521373889472449 -> 2.0000000000000000000000000000000 Inexact Rounded
-precision: 31
-powx2420 power 10 0.3010299956639811952137388947245 -> 2.000000000000000000000000000000 Inexact Rounded
-precision: 30
-powx2421 power 10 0.301029995663981195213738894725 -> 2.00000000000000000000000000000 Inexact Rounded
-precision: 29
-powx2422 power 10 0.30102999566398119521373889472 -> 2.0000000000000000000000000000 Inexact Rounded
-precision: 28
-powx2423 power 10 0.3010299956639811952137388947 -> 2.000000000000000000000000000 Inexact Rounded
-precision: 27
-powx2424 power 10 0.301029995663981195213738895 -> 2.00000000000000000000000000 Inexact Rounded
-precision: 26
-powx2425 power 10 0.30102999566398119521373889 -> 2.0000000000000000000000000 Inexact Rounded
-precision: 25
-powx2426 power 10 0.3010299956639811952137389 -> 2.000000000000000000000000 Inexact Rounded
-precision: 24
-powx2427 power 10 0.301029995663981195213739 -> 2.00000000000000000000000 Inexact Rounded
-precision: 23
-powx2428 power 10 0.30102999566398119521374 -> 2.0000000000000000000000 Inexact Rounded
-precision: 22
-powx2429 power 10 0.3010299956639811952137 -> 2.000000000000000000000 Inexact Rounded
-precision: 21
-powx2430 power 10 0.301029995663981195214 -> 2.00000000000000000000 Inexact Rounded
-precision: 20
-powx2431 power 10 0.30102999566398119521 -> 2.0000000000000000000 Inexact Rounded
-precision: 19
-powx2432 power 10 0.3010299956639811952 -> 2.000000000000000000 Inexact Rounded
-precision: 18
-powx2433 power 10 0.301029995663981195 -> 2.00000000000000000 Inexact Rounded
-precision: 17
-powx2434 power 10 0.30102999566398120 -> 2.0000000000000000 Inexact Rounded
-precision: 16
-powx2435 power 10 0.3010299956639812 -> 2.000000000000000 Inexact Rounded
-precision: 15
-powx2436 power 10 0.301029995663981 -> 2.00000000000000 Inexact Rounded
-precision: 14
-powx2437 power 10 0.30102999566398 -> 2.0000000000000 Inexact Rounded
-precision: 13
-powx2438 power 10 0.3010299956640 -> 2.000000000000 Inexact Rounded
-precision: 12
-powx2439 power 10 0.301029995664 -> 2.00000000000 Inexact Rounded
-precision: 11
-powx2440 power 10 0.30102999566 -> 2.0000000000 Inexact Rounded
-precision: 10
-powx2441 power 10 0.3010299957 -> 2.000000000 Inexact Rounded
-precision:  9
-powx2442 power 10 0.301029996 -> 2.00000000 Inexact Rounded
-precision:  8
-powx2443 power 10 0.30103000 -> 2.0000000 Inexact Rounded
-precision:  7
-powx2444 power 10 0.3010300 -> 2.000000 Inexact Rounded
-precision:  6
-powx2445 power 10 0.301030 -> 2.00000 Inexact Rounded
-precision:  5
-powx2446 power 10 0.30103 -> 2.0000 Inexact Rounded
-precision:  4
-powx2447 power 10 0.3010 -> 2.000 Inexact Rounded
-precision:  3
-powx2448 power 10 0.301 -> 2.00 Inexact Rounded
-precision:  2
-powx2449 power 10 0.30 -> 2.0 Inexact Rounded
-precision:  1
-powx2450 power 10 0.3 -> 2 Inexact Rounded
-
-maxExponent: 384
-minExponent: -383
-precision:   16
-rounding:    half_even
-
--- Close-to-e tests
-precision:   34
-powx2500 power 10 0.4342944819032518276511289189166048     -> 2.718281828459045235360287471352661  Inexact Rounded
-powx2501 power 10 0.4342944819032518276511289189166049     -> 2.718281828459045235360287471352661  Inexact Rounded
-powx2502 power 10 0.4342944819032518276511289189166050     -> 2.718281828459045235360287471352662  Inexact Rounded
-powx2503 power 10 0.4342944819032518276511289189166051     -> 2.718281828459045235360287471352663  Inexact Rounded
-powx2504 power 10 0.4342944819032518276511289189166052     -> 2.718281828459045235360287471352663  Inexact Rounded
-
--- e**e, 16->34
-powx2505 power 2.718281828459045 2.718281828459045 -> '15.15426224147925705633739513098219' Inexact Rounded
-
--- Sequence around an integer
-powx2512 power 10 2.9999999999999999999999999999999997     -> 999.9999999999999999999999999999993  Inexact Rounded
-powx2513 power 10 2.9999999999999999999999999999999998     -> 999.9999999999999999999999999999995  Inexact Rounded
-powx2514 power 10 2.9999999999999999999999999999999999     -> 999.9999999999999999999999999999998  Inexact Rounded
-powx2515 power 10 3.0000000000000000000000000000000000     -> 1000
-powx2516 power 10 3.0000000000000000000000000000000001     -> 1000.000000000000000000000000000000  Inexact Rounded
-powx2517 power 10 3.0000000000000000000000000000000002     -> 1000.000000000000000000000000000000  Inexact Rounded
-powx2518 power 10 3.0000000000000000000000000000000003     -> 1000.000000000000000000000000000001  Inexact Rounded
-
--- randomly generated tests
-maxExponent: 384
-minExponent: -383
-
--- P=34, within 0-999 -- positive arg2
-Precision: 34
-powx3201 power 5.301557744131969249145904611290735  369.3175647984435534243813466380579 -> 3.427165676345688240023113326603960E+267 Inexact Rounded
-powx3202 power 0.0000000000506875655819165973738225 21.93514102704466434121826965196878 -> 1.498169860033487321566659495340789E-226 Inexact Rounded
-powx3203 power 97.88877680721519917858007810494043  5.159898445242793470476673109899554 -> 18705942904.43290467281449559427982      Inexact Rounded
-powx3204 power 7.380441015594399747973924380493799  17.93614173904818313507525109033288 -> 3715757985820076.273336082702577274      Inexact Rounded
-powx3205 power 2.045623627647350918819219169855040  1082.999652407430697958175966996254 -> 4.208806435006704867447150904279854E+336 Inexact Rounded
-powx3206 power 0.0000000762582873112118926142955423 20.30534237055073996975203864170432 -> 2.967574278677013090697130349198877E-145 Inexact Rounded
-powx3207 power 0.0000000000194091470907814855660535 14.71164213947722238856835440242911 -> 2.564391397469554735037158345963280E-158 Inexact Rounded
-powx3208 power 0.0000000000509434185382818596853504 20.97051498204188277347203735421595 -> 1.420157372748083000927138678417272E-216 Inexact Rounded
-powx3209 power 0.0005389217212073307301395750745119 43.96798225485747315858678755538971 -> 1.957850185781292007977898626137240E-144 Inexact Rounded
-powx3210 power 498.5690105989136050444077447411198  128.1038813807243375878831104745803 -> 3.882212970903893127009102293596268E+345 Inexact Rounded
-powx3211 power 0.0000000935428918637303954281938975 5.736933454863278597460091596496099 -> 4.733219644540496152403967823635195E-41  Inexact Rounded
-powx3212 power 8.581586784734161309180363110126352  252.0229459968869784643374981477208 -> 1.907464842458674622356177850049873E+235 Inexact Rounded
-powx3213 power 294.1005302951621709143320795278305  155.5466374141708615975111014663722 -> 9.251717033292072959166737280729728E+383 Inexact Rounded
-powx3214 power 0.0000000041253343654396865855722090 19.00170974760425576247662125110472 -> 4.779566288553864405790921353593512E-160 Inexact Rounded
-powx3215 power 0.0000000000046912257352141395184092 24.66089523148729269098773236636878 -> 4.205126874048597849476723538057527E-280 Inexact Rounded
-powx3216 power 0.0000000000036796674296520639450494 22.09713956900694689234335912523078 -> 2.173081843837539818472071316420405E-253 Inexact Rounded
-powx3217 power 9.659887100303037657934372148567685  277.3765665424320875993026404492216 -> 1.614974043145519382749740616665041E+273 Inexact Rounded
-powx3218 power 0.0000083231310642229204398943076403 29.33123211782131466471359128190372 -> 1.013330439786660210757226597785328E-149 Inexact Rounded
-powx3219 power 0.0938084859086450954956863725653664 262.6091918199905272837286784975012 -> 1.262802485286301066967555821509344E-270 Inexact Rounded
-powx3220 power 8.194926977580900145696305910223304  184.3705133945546202012995485297248 -> 2.696353910907824016690021495828584E+168 Inexact Rounded
-powx3221 power 72.39594594653085161522285114566120  168.7721909489321402152033939836725 -> 7.379858293630460043361584410795031E+313 Inexact Rounded
-powx3222 power 0.0000000000003436856010144185445537 26.34329868961274988994452526178983 -> 4.585379573595865689605567720192768E-329 Inexact Rounded
-powx3223 power 20.18365633762226550254542489492623  127.2099705237021350103678072707790 -> 1.020919629336979353690271762206060E+166 Inexact Rounded
-powx3224 power 0.0000000553723990761530290129268131 8.157597566134754638015199501162405 -> 6.349030513396147480954474615067145E-60  Inexact Rounded
-powx3225 power 0.0001028742674265840656614682618035 93.99842317306603797965470281716482 -> 1.455871110222736531854990397769940E-375 Inexact Rounded
-powx3226 power 95.90195152775543876489746343266050  143.5992850002211509777720799352475 -> 3.881540015848530405189834366588567E+284 Inexact Rounded
-powx3227 power 0.0000000000041783747057233878360333 12.14591167764993506821334760954430 -> 6.190998557456885985124592807383163E-139 Inexact Rounded
-powx3228 power 0.5572830497086740798434917090018768 1001.921811263919522230330241349166 -> 3.871145158537170450093833881625838E-255 Inexact Rounded
-powx3229 power 516.4754759779093954790813881333232  29.23812463126309057800793645336343 -> 2.110986192408878294012450052929185E+79  Inexact Rounded
-powx3230 power 0.0000835892099464584776847299020706 27.64279992884843877453592659341588 -> 1.891535098905506689512376224943293E-113 Inexact Rounded
-powx3231 power 72.45836577748571838139900165184955  166.2562890735032545091688015160084 -> 1.784091549041561516923092542939141E+309 Inexact Rounded
-powx3232 power 305.1823317643335924007629563009032  83.01065159508472884219290136319623 -> 1.757493136164395229602456782779110E+206 Inexact Rounded
-powx3233 power 7.108527102951713603542835791733786  145.7057852766236365450463428821948 -> 1.285934774113104362663619896550528E+124 Inexact Rounded
-powx3234 power 6.471393503175464828149365697049824  64.11741937262455725284754171995720 -> 9.978990355881803195280027533011699E+51  Inexact Rounded
-powx3235 power 39.72898094138459885662380866268385  239.9677288017447400786672779735168 -> 5.422218208517098335832848487375086E+383 Inexact Rounded
-powx3236 power 0.0002865592332736973000183287329933 90.34733869590583787065642532641096 -> 8.293733126976212033209243257136796E-321 Inexact Rounded
-powx3237 power 0.0000011343384394864811195077357936 1.926568285528399656789140809399396 -> 3.516055639378350146874261077470142E-12  Inexact Rounded
-powx3238 power 0.0000000035321610295065299384889224 7.583861778824284092434085265265582 -> 7.970899823817369764381976286536230E-65  Inexact Rounded
-powx3239 power 657.5028301569352677543770758346683  90.55778453811965116200206020172758 -> 1.522530898581564200655160665723268E+255 Inexact Rounded
-powx3240 power 8.484756398325748879450577520251447  389.7468292476262478578280531222417 -> 8.595142803587368093392510310811218E+361 Inexact Rounded
-
--- P=16, within 0-99 -- positive arg2
-Precision: 16
-powx3101 power 0.0000215524639223 48.37532522355252 -> 1.804663257287277E-226 Inexact Rounded
-powx3102 power 00.80705856227999  2706.777535121391 -> 1.029625065876157E-252 Inexact Rounded
-powx3103 power 3.445441676383689  428.5185892455830 -> 1.657401683096454E+230 Inexact Rounded
-powx3104 power 0.0040158689495826 159.5725558816240 -> 4.255743665762492E-383 Inexact Rounded
-powx3105 power 0.0000841553281215 38.32504413453944 -> 6.738653902512052E-157 Inexact Rounded
-powx3106 power 0.7322610252571353 502.1254457674118 -> 1.109978126985943E-68  Inexact Rounded
-powx3107 power 10.75052532144880  67.34180604734781 -> 2.873015019470189E+69  Inexact Rounded
-powx3108 power 26.20425952945617  104.6002671186488 -> 2.301859355777030E+148 Inexact Rounded
-powx3109 power 0.0000055737473850 31.16285859005424 -> 1.883348470100446E-164 Inexact Rounded
-powx3110 power 61.06096011360700  10.93608439088726 -> 3.382686473028249E+19  Inexact Rounded
-powx3111 power 9.340880853257137  179.9094938131726 -> 3.819299795937696E+174 Inexact Rounded
-powx3112 power 0.0000050767371756 72.03346394186741 -> 4.216236691569869E-382 Inexact Rounded
-powx3113 power 6.838478807860596  47.49665590602285 -> 4.547621630099203E+39  Inexact Rounded
-powx3114 power 0.1299324346439081 397.7440523576938 -> 3.065047705553981E-353 Inexact Rounded
-powx3115 power 0.0003418047034264 20.00516791512018 -> 4.546189665380487E-70  Inexact Rounded
-powx3116 power 0.0001276899611715 78.12968287355703 -> 5.960217405063995E-305 Inexact Rounded
-powx3117 power 25.93160588180509  252.6245071004620 -> 1.472171597589146E+357 Inexact Rounded
-powx3118 power 35.47516857763178  86.14723037360925 -> 3.324299908481125E+133 Inexact Rounded
-powx3119 power 0.0000048171086721 43.31965603038666 -> 4.572331516616228E-231 Inexact Rounded
-powx3120 power 17.97652681097851  144.4684576550292 -> 1.842509906097860E+181 Inexact Rounded
-powx3121 power 3.622765141518729  305.1948680344950 -> 4.132320967578704E+170 Inexact Rounded
-powx3122 power 0.0080959002453519 143.9899444945627 -> 6.474627812947047E-302 Inexact Rounded
-powx3123 power 9.841699927276571  299.2466668837188 -> 1.489097656208736E+297 Inexact Rounded
-powx3124 power 0.0786659206232355 347.4750796962570 -> 2.05764809646925E-384  Inexact Rounded Underflow Subnormal
-powx3125 power 0.0000084459792645 52.47348690745487 -> 6.076251876516942E-267 Inexact Rounded
-powx3126 power 27.86589909967504  191.7296537102283 -> 1.157064112989386E+277 Inexact Rounded
-powx3127 power 0.0000419907937234 58.44957702730767 -> 1.496950672075162E-256 Inexact Rounded
-powx3128 power 0.0000664977739382 80.06749213261876 -> 3.488517620107875E-335 Inexact Rounded
-powx3129 power 58.49554484886656  125.8480768373499 -> 2.449089862146640E+222 Inexact Rounded
-powx3130 power 15.02820060024449  212.3527988973338 -> 8.307913932682067E+249 Inexact Rounded
-powx3131 power 0.0002650089942992 30.92173123678761 -> 2.517827664836147E-111 Inexact Rounded
-powx3132 power 0.0007342977426578 69.49168880741123 -> 1.600168665674440E-218 Inexact Rounded
-powx3133 power 0.0063816068650629 150.1400094183812 -> 2.705057295799001E-330 Inexact Rounded
-powx3134 power 9.912921122728791  297.8274013633411 -> 4.967624993438900E+296 Inexact Rounded
-powx3135 power 1.988603563989245  768.4862967922182 -> 2.692842474899596E+229 Inexact Rounded
-powx3136 power 8.418014519517691  164.2431359980725 -> 9.106211585888836E+151 Inexact Rounded
-powx3137 power 6.068823604450686  120.2955212365837 -> 1.599431918105982E+94  Inexact Rounded
-powx3138 power 56.90062738303850  54.90468294683645 -> 2.312839177902428E+96  Inexact Rounded
-powx3139 power 5.710905139750871  73.44608752962156 -> 3.775876053709929E+55  Inexact Rounded
-powx3140 power 0.0000017446761203 1.223981492228899 -> 8.952936595465635E-8   Inexact Rounded
-
--- P=7, within 0-9 -- positive arg2
-Precision: 7
-powx3001 power 8.738689  55.96523 -> 4.878180E+52  Inexact Rounded
-powx3002 power 0.0404763 147.4965 -> 3.689722E-206 Inexact Rounded
-powx3003 power 0.0604232 76.69778 -> 3.319183E-94  Inexact Rounded
-powx3004 power 0.0058855 107.5018 -> 1.768875E-240 Inexact Rounded
-powx3005 power 2.058302  1173.050 -> 5.778899E+367 Inexact Rounded
-powx3006 power 0.0056998 85.70157 -> 4.716783E-193 Inexact Rounded
-powx3007 power 0.8169297 3693.537 -> 4.475962E-325 Inexact Rounded
-powx3008 power 0.2810153 659.9568 -> 1.533177E-364 Inexact Rounded
-powx3009 power 4.617478  15.68308 -> 2.629748E+10  Inexact Rounded
-powx3010 power 0.0296418 244.2302 -> 6.207949E-374 Inexact Rounded
-powx3011 power 0.0036456 127.9987 -> 8.120891E-313 Inexact Rounded
-powx3012 power 0.5012813 577.5418 -> 6.088802E-174 Inexact Rounded
-powx3013 power 0.0033275 119.9800 -> 5.055049E-298 Inexact Rounded
-powx3014 power 0.0037652 111.7092 -> 1.560351E-271 Inexact Rounded
-powx3015 power 0.6463252 239.0568 -> 4.864564E-46  Inexact Rounded
-powx3016 power 4.784378  475.0521 -> 8.964460E+322 Inexact Rounded
-powx3017 power 4.610305  563.1791 -> 6.290298E+373 Inexact Rounded
-powx3018 power 0.0175167 80.52208 -> 3.623472E-142 Inexact Rounded
-powx3019 power 5.238307  356.7944 -> 4.011461E+256 Inexact Rounded
-powx3020 power 0.0003527 96.26347 -> 4.377932E-333 Inexact Rounded
-powx3021 power 0.0015155 136.0516 -> 2.57113E-384  Inexact Rounded Underflow Subnormal
-powx3022 power 5.753573  273.2340 -> 4.373184E+207 Inexact Rounded
-powx3023 power 7.778665  332.7917 -> 3.060640E+296 Inexact Rounded
-powx3024 power 1.432479  2046.064 -> 2.325829E+319 Inexact Rounded
-powx3025 power 5.610516  136.4563 -> 1.607502E+102 Inexact Rounded
-powx3026 power 0.0050697 137.4513 -> 3.522315E-316 Inexact Rounded
-powx3027 power 5.678737  85.16253 -> 1.713909E+64  Inexact Rounded
-powx3028 power 0.0816167 236.1973 -> 9.228802E-258 Inexact Rounded
-powx3029 power 0.2602805 562.0157 -> 2.944556E-329 Inexact Rounded
-powx3030 power 0.0080936 24.25367 -> 1.839755E-51  Inexact Rounded
-powx3031 power 4.092016  82.94603 -> 5.724948E+50  Inexact Rounded
-powx3032 power 0.0078255 7.204184 -> 6.675342E-16  Inexact Rounded
-powx3033 power 0.9917693 29846.44 -> 7.430177E-108 Inexact Rounded
-powx3034 power 1.610380  301.2467 -> 2.170142E+62  Inexact Rounded
-powx3035 power 0.0588236 212.1097 -> 1.023196E-261 Inexact Rounded
-powx3036 power 2.498069  531.4647 -> 2.054561E+211 Inexact Rounded
-powx3037 power 9.964342  326.5438 -> 1.089452E+326 Inexact Rounded
-powx3038 power 0.0820626 268.8718 -> 1.107350E-292 Inexact Rounded
-powx3039 power 6.176486  360.7779 -> 1.914449E+285 Inexact Rounded
-powx3040 power 4.206363  16.17288 -> 1.231314E+10  Inexact Rounded
-
--- P=34, within 0-999 -- negative arg2
-Precision: 34
-powx3701 power 376.0915270000109486633402827007902  -35.69822349904102131649243701958463 -> 1.165722831225506457828653413200143E-92  Inexact Rounded
-powx3702 power 0.0000000503747440074613191665845314 -9.520308341497979093021813571450575 -> 3.000432478861883953977971226770410E+69  Inexact Rounded
-powx3703 power 290.6858731495339778337953407938308  -118.5459048597789693292455673428367 -> 9.357969047113989238392527565200302E-293 Inexact Rounded
-powx3704 power 4.598864607620052062908700928454182  -299.8323667698931125720218537483753 -> 2.069641269855413539579128114448478E-199 Inexact Rounded
-powx3705 power 2.556952676986830645708349254938903  -425.1755373251941383147998924703593 -> 4.428799777833598654260883861514638E-174 Inexact Rounded
-powx3706 power 0.0000005656198763404221986640610118 -32.83361380678301321230028730075315 -> 1.340270622401829145968477601029251E+205 Inexact Rounded
-powx3707 power 012.4841978642452960750801410372125  -214.3734291828712962809866663321921 -> 9.319857751170603140459057535971202E-236 Inexact Rounded
-powx3708 power 0.0000000056041586148066919174315551 -37.21129049213858341528033343116533 -> 1.118345010652454313186702341873169E+307 Inexact Rounded
-powx3709 power 0.0694569218941833767199998804202152 -8.697509072368973932501239815677732 -> 11862866995.51026489032838174290271      Inexact Rounded
-powx3710 power 6.380984024259450398729243522354144  -451.0635696889193561457985486366827 -> 8.800353109387322474809325670314330E-364 Inexact Rounded
-powx3711 power 786.0264840756809048288007204917801  -43.09935384678762773057342161718540 -> 1.616324183365644133979585419925934E-125 Inexact Rounded
-powx3712 power 96.07836427113204744101287948445130  -185.1414572546330024388914720271876 -> 8.586320815218383004023264980018610E-368 Inexact Rounded
-powx3713 power 0.0000000002332189796855870659792406 -5.779561613164628076880609893753327 -> 4.678450775876385793618570483345066E+55  Inexact Rounded
-powx3714 power 0.7254146672024602242369943237968857 -2115.512891397828615710130092245691 -> 8.539080958041689288202111403102495E+294 Inexact Rounded
-powx3715 power 0.0017380543649702864796144008592137 -6.307668017761022788220578633538713 -> 256309141459075651.2275798017695017      Inexact Rounded
-powx3716 power 05.29498758952276908267649116142379  -287.3233896734103442991981056134167 -> 1.039130027847489364009368608104291E-208 Inexact Rounded
-powx3717 power 15.64403593865932622003462779104178  -110.5296633358063267478609032002475 -> 9.750540276026524527375125980296142E-133 Inexact Rounded
-powx3718 power 89.69639006761571087634945077373508  -181.3209914139357665609268339422627 -> 8.335034232277762924539395632025281E-355 Inexact Rounded
-powx3719 power 6.974087483731006359914914110135058  -174.6815625746710345173615508179842 -> 4.553072265122011176641590109568031E-148 Inexact Rounded
-powx3720 power 0.0034393024010554821130553772681993 -93.60931598413919272595497100497364 -> 4.067468855817145539589988349449394E+230 Inexact Rounded
-powx3721 power 63.32834072300379155053737260965633  -168.3926799435088324825751446957616 -> 4.207907835462640471617519501741094E-304 Inexact Rounded
-powx3722 power 00.00216088174206276369011255907785  -70.12279562855442784757874508991013 -> 8.000657143378187029609343435067057E+186 Inexact Rounded
-powx3723 power 934.5957982703545893572134393004375  -102.2287735565878252484031426026726 -> 2.073813769209257617246544424827240E-304 Inexact Rounded
-powx3724 power 107.9116792558793921873995885441177  -44.11941092260869786313838181499158 -> 2.005476533631183268912552168759595E-90  Inexact Rounded
-powx3725 power 0.0000000000188049827381428191769262 -19.32118917192242027966847501724073 -> 1.713174297100918857053338286389034E+207 Inexact Rounded
-powx3726 power 614.9820907366248142166636259027728  -4.069913257030791586645250035698123 -> 4.462432572576935752713876293746717E-12  Inexact Rounded
-powx3727 power 752.0655175769182096165651274049422  -22.59292060348797472013598378334370 -> 1.039881526694635205040192531504131E-65  Inexact Rounded
-powx3728 power 72.20446632047659449616175456059013  -175.4705356401853924020842356605072 -> 7.529540175791582421966947814549028E-327 Inexact Rounded
-powx3729 power 518.8346486600403405764055847937416  -65.87320268592761588756963215588232 -> 1.420189426992170936958891180073151E-179 Inexact Rounded
-powx3730 power 3.457164372003960576453458502270716  -440.3201118177861273814529713443698 -> 6.176418595751201287186292664257369E-238 Inexact Rounded
-powx3731 power 7.908352793344189720739467675503991  -298.6646112894719680394152664740255 -> 5.935857120229147638104675057695125E-269 Inexact Rounded
-powx3732 power 0.0000004297399403788595027926075086 -22.66504617185071293588817501468339 -> 2.012270405520600820469665145636204E+144 Inexact Rounded
-powx3733 power 0.0000008592124097322966354868716443 -9.913109586558030204789520190180906 -> 1.354958763843310237046818832755215E+60  Inexact Rounded
-powx3734 power 161.4806080561258105880907470989925  -70.72907837434814261716311990271578 -> 6.632555003698945544941329872901929E-157 Inexact Rounded
-powx3735 power 0.0000000090669568624173832705631918 -36.53759624613665940127058439106640 -> 7.161808401023414735428130112941559E+293 Inexact Rounded
-powx3736 power 0.0000000000029440295978365709342752 -1.297354238738921988884421117731562 -> 911731060579291.7661267358872917380      Inexact Rounded
-powx3737 power 21.37477220144832172175460425143692  -76.95949933640539226475686997477889 -> 4.481741242418091914011962399912885E-103 Inexact Rounded
-powx3738 power 0.0000000000186657798201636342150903 -20.18296240350678245567049161730909 -> 3.483954007114900406906338526575672E+216 Inexact Rounded
-powx3739 power 0.0006522464792960191985996959126792 -80.03762491483514679886504099194414 -> 9.266548513614215557228467517053035E+254 Inexact Rounded
-powx3740 power 0.0000000032851343694200568966168055 -21.53462116926375512242403160008026 -> 4.873201679668455240861376213601189E+182 Inexact Rounded
-
--- P=16, within 0-99 -- negative arg2
-Precision: 16
-powx3601 power 0.0000151338748474 -40.84655618364688 -> 7.628470824137755E+196 Inexact Rounded
-powx3602 power 0.1542771848654862 -435.8830009466800 -> 6.389817177800744E+353 Inexact Rounded
-powx3603 power 48.28477749367364  -218.5929209902050 -> 8.531049532576154E-369 Inexact Rounded
-powx3604 power 7.960775891584911  -12.78113732182505 -> 3.053270889769488E-12  Inexact Rounded
-powx3605 power 0.9430340651863058 -9010.470056913748 -> 3.313374654923807E+229 Inexact Rounded
-powx3606 power 0.0000202661501602 -65.57915207383306 -> 5.997379176536464E+307 Inexact Rounded
-powx3607 power 04.33007440798390  -232.0476834666588 -> 2.007827183010456E-148 Inexact Rounded
-powx3608 power 0.0000141944643914 -11.32407921958717 -> 7.902934485074846E+54  Inexact Rounded
-powx3609 power 0.0000021977758261 -53.53706138253307 -> 8.195631772317815E+302 Inexact Rounded
-powx3610 power 39.51297655474188  -19.40370976012326 -> 1.040699608072659E-31  Inexact Rounded
-powx3611 power 38.71210232488775  -66.58341618227921 -> 1.886855066146495E-106 Inexact Rounded
-powx3612 power 0.0000804235229062 -6.715207948992859 -> 3.134757864389333E+27  Inexact Rounded
-powx3613 power 0.0000073547092399 -11.27725685719934 -> 7.781428390953695E+57  Inexact Rounded
-powx3614 power 52.72181272599316  -186.1422311607435 -> 2.916601998744177E-321 Inexact Rounded
-powx3615 power 0.0969519963083306 -280.8220862151369 -> 3.955906885970987E+284 Inexact Rounded
-powx3616 power 94.07263302150081  -148.2031146071230 -> 3.361958990752490E-293 Inexact Rounded
-powx3617 power 85.80286965053704  -90.21453695813759 -> 3.715602429645798E-175 Inexact Rounded
-powx3618 power 03.52699858152259  -492.0414362539196 -> 4.507309220081092E-270 Inexact Rounded
-powx3619 power 0.0508278086396068 -181.0871731572167 -> 2.034428013017949E+234 Inexact Rounded
-powx3620 power 0.395576740303172  -915.5524507432392 -> 5.706585187437578E+368 Inexact Rounded
-powx3621 power 38.06105826789202  -49.75913753435335 -> 2.273188991431738E-79  Inexact Rounded
-powx3622 power 0.0003656748910646 -73.28988491310354 -> 7.768936940568763E+251 Inexact Rounded
-powx3623 power 0.0000006373551809 -51.30825234200690 -> 7.697618167701985E+317 Inexact Rounded
-powx3624 power 82.41729920673856  -35.73319631625699 -> 3.424042354585529E-69  Inexact Rounded
-powx3625 power 0.7845821453127670 -971.4982028897663 -> 2.283415527661089E+102 Inexact Rounded
-powx3626 power 4.840983673433497  -182.3730452370515 -> 1.220591407927770E-125 Inexact Rounded
-powx3627 power 0.0000006137592139 -2.122139474431484 -> 15231217034839.29      Inexact Rounded
-powx3628 power 0.0003657962862984 -35.97993782448099 -> 4.512701319250839E+123 Inexact Rounded
-powx3629 power 40.93693004443150  -165.1362408792997 -> 6.044276411057239E-267 Inexact Rounded
-powx3630 power 0.2941552583028898 -17.41046264945892 -> 1787833103.503346      Inexact Rounded
-powx3631 power 63.99335135369977  -69.92417205168579 -> 5.099359804872509E-127 Inexact Rounded
-powx3632 power 0.0000657924467388 -89.14497293588313 -> 6.145878266688521E+372 Inexact Rounded
-powx3633 power 11.35071250339147  -323.3705865614542 -> 6.863626248766775E-342 Inexact Rounded
-powx3634 power 23.88024718470895  -277.7117513329510 -> 2.006441422612815E-383 Inexact Rounded
-powx3635 power 0.0000009111939914 -58.51782946929182 -> 2.954352883996773E+353 Inexact Rounded
-powx3636 power 0.0000878179048782 -75.81060420238669 -> 3.306878455207585E+307 Inexact Rounded
-powx3637 power 07.39190564273779  -287.5047307244636 -> 1.692080354659805E-250 Inexact Rounded
-powx3638 power 0.0000298310819799 -1.844740377759355 -> 222874718.7238888      Inexact Rounded
-powx3639 power 0.0000006412929384 -28.24850078229290 -> 8.737164230666529E+174 Inexact Rounded
-powx3640 power 0.0000010202965998 -47.17573701956498 -> 4.392845306049341E+282 Inexact Rounded
-
--- P=7, within 0-9 -- negative arg2
-Precision: 7
-powx3501 power 0.326324  -71.96509  -> 1.000673E+35  Inexact Rounded
-powx3502 power 0.0017635 -0.7186967 -> 95.28419      Inexact Rounded
-powx3503 power 8.564155  -253.0899  -> 8.850512E-237 Inexact Rounded
-powx3504 power 8.987272  -2.155789  -> 0.008793859   Inexact Rounded
-powx3505 power 9.604856  -139.9630  -> 3.073492E-138 Inexact Rounded
-powx3506 power 0.8472919 -2539.085  -> 5.372686E+182 Inexact Rounded
-powx3507 power 5.312329  -60.32965  -> 1.753121E-44  Inexact Rounded
-powx3508 power 0.0338294 -100.5440  -> 7.423939E+147 Inexact Rounded
-powx3509 power 0.0017777 -130.8583  -> 7.565629E+359 Inexact Rounded
-powx3510 power 8.016154  -405.5689  -> 2.395977E-367 Inexact Rounded
-powx3511 power 5.016570  -327.8906  -> 2.203784E-230 Inexact Rounded
-powx3512 power 0.8161743 -744.5276  -> 4.786899E+65  Inexact Rounded
-powx3513 power 0.0666343 -164.7320  -> 5.951240E+193 Inexact Rounded
-powx3514 power 0.0803966 -202.2666  -> 2.715512E+221 Inexact Rounded
-powx3515 power 0.0014752 -12.55547  -> 3.518905E+35  Inexact Rounded
-powx3516 power 9.737565  -14.69615  -> 2.975672E-15  Inexact Rounded
-powx3517 power 0.6634172 -152.7308  -> 1.654458E+27  Inexact Rounded
-powx3518 power 0.0009337 -33.32939  -> 9.575039E+100 Inexact Rounded
-powx3519 power 8.679922  -224.4194  -> 2.392446E-211 Inexact Rounded
-powx3520 power 7.390494  -161.9483  -> 2.088375E-141 Inexact Rounded
-powx3521 power 0.4631489 -417.1673  -> 2.821106E+139 Inexact Rounded
-powx3522 power 0.0095471 -7.677458  -> 3.231855E+15  Inexact Rounded
-powx3523 power 6.566339  -176.1867  -> 9.965633E-145 Inexact Rounded
-powx3524 power 2.696128  -26.15501  -> 5.419731E-12  Inexact Rounded
-powx3525 power 0.4464366 -852.1893  -> 2.957725E+298 Inexact Rounded
-powx3526 power 0.4772006 -921.4111  -> 1.118105E+296 Inexact Rounded
-powx3527 power 8.923696  -359.2211  -> 3.501573E-342 Inexact Rounded
-powx3528 power 0.0018008 -66.91252  -> 4.402718E+183 Inexact Rounded
-powx3529 power 0.0811964 -92.83278  -> 1.701111E+101 Inexact Rounded
-powx3530 power 0.0711219 -58.94347  -> 4.644148E+67  Inexact Rounded
-powx3531 power 7.958121  -50.66123  -> 2.311161E-46  Inexact Rounded
-powx3532 power 6.106466  -81.83610  -> 4.943285E-65  Inexact Rounded
-powx3533 power 4.557634  -129.5268  -> 4.737917E-86  Inexact Rounded
-powx3534 power 0.0027348 -9.180135  -> 3.383524E+23  Inexact Rounded
-powx3535 power 0.0083924 -46.24016  -> 9.996212E+95  Inexact Rounded
-powx3536 power 2.138523  -47.25897  -> 2.507009E-16  Inexact Rounded
-powx3537 power 1.626728  -1573.830  -> 2.668117E-333 Inexact Rounded
-powx3538 power 0.082615  -164.5842  -> 1.717882E+178 Inexact Rounded
-powx3539 power 7.636003  -363.6763  -> 8.366174E-322 Inexact Rounded
-powx3540 power 0.0021481 -138.0065  -> 1.562505E+368 Inexact Rounded
-
-
--- Invalid operations due to restrictions
--- [next two probably skipped by most test harnesses]
-precision: 100000000
-powx4001  power 1 1.1 ->  NaN         Invalid_context
-precision:  99999999
-powx4002  power 1 1.1 ->  NaN         Invalid_context
-
-precision: 9
-maxExponent:   1000000
-minExponent:   -999999
-powx4003  power 1 1.1  ->  NaN        Invalid_context
-maxExponent:    999999
-minExponent:   -999999
-powx4004  power 1 1.1  ->  1.00000000 Inexact Rounded
-maxExponent:    999999
-minExponent:  -1000000
-powx4005  power 1 1.1  ->  NaN        Invalid_context
-maxExponent:    999999
-minExponent:   -999998
-powx4006  power 1 1.1  ->  1.00000000 Inexact Rounded
-
--- operand range violations
-powx4007  power 1             1.1E+999999  ->  1
-powx4008  power 1             1.1E+1000000 ->  NaN Invalid_operation
-powx4009  power 1.1E+999999   1.1          ->  Infinity Overflow Inexact Rounded
-powx4010  power 1.1E+1000000  1.1          ->  NaN Invalid_operation
-powx4011  power 1             1.1E-1999997 ->  1.00000000 Inexact Rounded
-powx4012  power 1             1.1E-1999998 ->  NaN Invalid_operation
-powx4013  power 1.1E-1999997  1.1          ->  0E-1000006 Underflow Inexact Rounded Clamped Subnormal
-powx4014  power 1.1E-1999998  1.1          ->  NaN Invalid_operation
-
--- rounding modes -- power is sensitive
-precision:   7
-maxExponent: 99
-minExponent: -99
-
---   0.7  ** 3.3 =>   0.30819354053418943822
---   0.7  ** 3.4 =>   0.29739477638272533854
---  -1.2  ** 17  => -22.18611106740436992
---  -1.3  ** 17  => -86.50415919381337933
---   0.5  ** 11  =>   0.00048828125
---   3.15 ** 3   =>  31.255875
-
-rounding: up
-powx4100  power      0.7  3.3 ->  0.3081936 Inexact Rounded
-powx4101  power      0.7  3.4 ->  0.2973948 Inexact Rounded
-powx4102  power     -1.2  17  -> -22.18612  Inexact Rounded
-powx4103  power     -1.3  17  -> -86.50416  Inexact Rounded
-powx4104  power  17 81.27115  -> 9.999974E+99 Inexact Rounded
-powx4105  power  17 81.27116  -> Infinity     Overflow Inexact Rounded
-
-rounding: down
-powx4120  power      0.7  3.3 ->  0.3081935 Inexact Rounded
-powx4121  power      0.7  3.4 ->  0.2973947 Inexact Rounded
-powx4122  power     -1.2  17  -> -22.18611  Inexact Rounded
-powx4123  power     -1.3  17  -> -86.50415  Inexact Rounded
-powx4124  power  17 81.27115  -> 9.999973E+99 Inexact Rounded
-powx4125  power  17 81.27116  -> 9.999999E+99 Overflow Inexact Rounded
-
-rounding: floor
-powx4140  power      0.7  3.3 ->  0.3081935 Inexact Rounded
-powx4141  power      0.7  3.4 ->  0.2973947 Inexact Rounded
-powx4142  power     -1.2  17  -> -22.18612  Inexact Rounded
-powx4143  power     -1.3  17  -> -86.50416  Inexact Rounded
-powx4144  power  17 81.27115  -> 9.999973E+99 Inexact Rounded
-powx4145  power  17 81.27116  -> 9.999999E+99 Overflow Inexact Rounded
-
-rounding: ceiling
-powx4160  power      0.7  3.3 ->  0.3081936 Inexact Rounded
-powx4161  power      0.7  3.4 ->  0.2973948 Inexact Rounded
-powx4162  power     -1.2  17  -> -22.18611  Inexact Rounded
-powx4163  power     -1.3  17  -> -86.50415  Inexact Rounded
-powx4164  power  17 81.27115  -> 9.999974E+99 Inexact Rounded
-powx4165  power  17 81.27116  -> Infinity     Overflow Inexact Rounded
-
-rounding: half_up
-powx4180  power      0.7  3.3 ->  0.3081935 Inexact Rounded
-powx4181  power      0.7  3.4 ->  0.2973948 Inexact Rounded
-powx4182  power     -1.2  17  -> -22.18611  Inexact Rounded
-powx4183  power     -1.3  17  -> -86.50416  Inexact Rounded
-powx4184  power      0.5  11  ->  0.0004882813 Inexact Rounded
-powx4185  power      3.15  3  ->  31.25588  Inexact Rounded
-powx4186  power  17 81.27115  -> 9.999974E+99 Inexact Rounded
-powx4187  power  17 81.27116  -> Infinity     Overflow Inexact Rounded
-
-rounding: half_even
-powx4200  power      0.7  3.3 ->  0.3081935 Inexact Rounded
-powx4201  power      0.7  3.4 ->  0.2973948 Inexact Rounded
-powx4202  power     -1.2  17  -> -22.18611  Inexact Rounded
-powx4203  power     -1.3  17  -> -86.50416  Inexact Rounded
-powx4204  power      0.5  11  ->  0.0004882812 Inexact Rounded
-powx4205  power      3.15  3  ->  31.25588  Inexact Rounded
-powx4206  power  17 81.27115  -> 9.999974E+99 Inexact Rounded
-powx4207  power  17 81.27116  -> Infinity     Overflow Inexact Rounded
-
-rounding: half_down
-powx4220  power      0.7  3.3 ->  0.3081935 Inexact Rounded
-powx4221  power      0.7  3.4 ->  0.2973948 Inexact Rounded
-powx4222  power     -1.2  17  -> -22.18611  Inexact Rounded
-powx4223  power     -1.3  17  -> -86.50416  Inexact Rounded
-powx4224  power      0.5  11  ->  0.0004882812 Inexact Rounded
-powx4225  power      3.15  3  ->  31.25587  Inexact Rounded
-powx4226  power     -3.15  3  -> -31.25587  Inexact Rounded
-powx4227  power  17 81.27115  -> 9.999974E+99 Inexact Rounded
-powx4228  power  17 81.27116  -> Infinity     Overflow Inexact Rounded
-
-
--- more rounding tests as per Ilan Nehama's suggestions & analysis
--- these are likely to show > 0.5 ulp error for very small powers
-precision:   7
-maxExponent: 96
-minExponent: -95
-
--- For x=nextfp(1)=1.00..001 (where the number of 0s is precision-2)
---   power(x,y)=x when the rounding is up (e.g., toward_pos_inf or
---   ceil) for any y in (0,1].
-rounding: ceiling
-powx4301  power  1.000001 0          -> 1
--- The next test should be skipped for decNumber
-powx4302  power  1.000001 1e-101     -> 1.000001   Inexact Rounded
--- The next test should be skipped for decNumber
-powx4303  power  1.000001 1e-95      -> 1.000001   Inexact Rounded
-powx4304  power  1.000001 1e-10      -> 1.000001   Inexact Rounded
-powx4305  power  1.000001 0.1        -> 1.000001   Inexact Rounded
-powx4306  power  1.000001 0.1234567  -> 1.000001   Inexact Rounded
-powx4307  power  1.000001 0.7        -> 1.000001   Inexact Rounded
-powx4308  power  1.000001 0.9999999  -> 1.000001   Inexact Rounded
-powx4309  power  1.000001 1.000000   -> 1.000001
---   power(x,y)=1 when the rounding is down (e.g. toward_zero or
---   floor) for any y in [0,1).
-rounding: floor
-powx4321  power  1.000001 0          -> 1
-powx4322  power  1.000001 1e-101     -> 1.000000   Inexact Rounded
-powx4323  power  1.000001 1e-95      -> 1.000000   Inexact Rounded
-powx4324  power  1.000001 1e-10      -> 1.000000   Inexact Rounded
-powx4325  power  1.000001 0.1        -> 1.000000   Inexact Rounded
-powx4326  power  1.000001 0.1234567  -> 1.000000   Inexact Rounded
-powx4327  power  1.000001 0.7        -> 1.000000   Inexact Rounded
-powx4328  power  1.000001 0.9999999  -> 1.000000   Inexact Rounded
-powx4329  power  1.000001 1.000000   -> 1.000001
-
--- For x=prevfp(1)=0.99..99 (where the number of 9s is precision)
---   power(x,y)=x when the rounding is down for any y in (0,1].
-rounding: floor
-powx4341  power  0.9999999 0          -> 1
--- The next test should be skipped for decNumber
-powx4342  power  0.9999999 1e-101     -> 0.9999999   Inexact Rounded
--- The next test should be skipped for decNumber
-powx4343  power  0.9999999 1e-95      -> 0.9999999   Inexact Rounded
-powx4344  power  0.9999999 1e-10      -> 0.9999999   Inexact Rounded
-powx4345  power  0.9999999 0.1        -> 0.9999999   Inexact Rounded
-powx4346  power  0.9999999 0.1234567  -> 0.9999999   Inexact Rounded
-powx4347  power  0.9999999 0.7        -> 0.9999999   Inexact Rounded
-powx4348  power  0.9999999 0.9999999  -> 0.9999999   Inexact Rounded
-powx4349  power  0.9999999 1.000000   -> 0.9999999
---   power(x,y)=1 when the rounding is up for any y in (0,1].
-rounding: ceiling
-powx4361  power  0.9999999 0          -> 1
-powx4362  power  0.9999999 1e-101     -> 1.000000    Inexact Rounded
-powx4363  power  0.9999999 1e-95      -> 1.000000    Inexact Rounded
-powx4364  power  0.9999999 1e-10      -> 1.000000    Inexact Rounded
-powx4365  power  0.9999999 0.1        -> 1.000000    Inexact Rounded
-powx4366  power  0.9999999 0.1234567  -> 1.000000    Inexact Rounded
-powx4367  power  0.9999999 0.7        -> 1.000000    Inexact Rounded
-powx4368  power  0.9999999 0.9999999  -> 1.000000    Inexact Rounded
-powx4369  power  0.9999999 1.000000   -> 0.9999999
-
--- For x=nextfp(0)
---   power(x,y)=0 when the rounding is down for any y larger than 1.
-rounding: floor
-powx4382  power  1e-101    0          -> 1
-powx4383  power  1e-101    0.9999999  -> 1E-101 Underflow Subnormal Inexact Rounded
-powx4384  power  1e-101    1.000000   -> 1E-101 Subnormal
-powx4385  power  1e-101    1.000001   -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
-powx4386  power  1e-101    2.000000   -> 0E-101 Underflow Subnormal Inexact Rounded Clamped
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/powersqrt.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/powersqrt.decTest
deleted file mode 100644
index 6c021a0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/powersqrt.decTest
+++ /dev/null
@@ -1,2970 +0,0 @@
-------------------------------------------------------------------------
--- powersqrt.decTest -- decimal square root, using power              --
--- Copyright (c) IBM Corporation, 2004, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- These testcases are taken from squareroot.decTest but are
--- evaluated using the power operator.  The differences in results
--- (153 out of 2856) fall into the following categories:
---
---    x    ** 0.5 (x>0) has no preferred exponent, and is Inexact
---                (and hence full precision); almost all differences are
---                in this category
---    0.00 ** 0.5 becomes 0 (not 0.0), etc.
---   -0    ** 0.5 becomes 0 (never -0)
---    Some exact subnormals become inexact and hence underflows
-
-extended:    1
-precision:   9
-rounding:    half_even
-maxExponent: 384
-minexponent: -383
-
--- basics
-pwsx001  power 1        0.5 -> 1.00000000 Inexact Rounded
-pwsx002  power -1       0.5 -> NaN Invalid_operation
-pwsx003  power 1.00     0.5 -> 1.00000000 Inexact Rounded
-pwsx004  power -1.00    0.5 -> NaN Invalid_operation
-pwsx005  power 0        0.5 -> 0
-pwsx006  power 00.0     0.5 -> 0
-pwsx007  power 0.00     0.5 -> 0
-pwsx008  power 00.00    0.5 -> 0
-pwsx009  power 00.000   0.5 -> 0
-pwsx010  power 00.0000  0.5 -> 0
-pwsx011  power 00       0.5 -> 0
-
-pwsx012  power -2       0.5 -> NaN Invalid_operation
-pwsx013  power 2        0.5 -> 1.41421356 Inexact Rounded
-pwsx014  power -2.00    0.5 -> NaN Invalid_operation
-pwsx015  power 2.00     0.5 -> 1.41421356 Inexact Rounded
-pwsx016  power -0       0.5 -> 0
-pwsx017  power -0.0     0.5 -> 0
-pwsx018  power -00.00   0.5 -> 0
-pwsx019  power -00.000  0.5 -> 0
-pwsx020  power -0.0000  0.5 -> 0
-pwsx021  power -0E+9    0.5 -> 0
-pwsx022  power -0E+10   0.5 -> 0
-pwsx023  power -0E+11   0.5 -> 0
-pwsx024  power -0E+12   0.5 -> 0
-pwsx025  power -00      0.5 -> 0
-pwsx026  power 0E+5     0.5 -> 0
-pwsx027  power 4.0      0.5 -> 2.00000000 Inexact Rounded
-pwsx028  power 4.00     0.5 -> 2.00000000 Inexact Rounded
-
-pwsx030  power +0.1             0.5 -> 0.316227766 Inexact Rounded
-pwsx031  power -0.1             0.5 -> NaN Invalid_operation
-pwsx032  power +0.01            0.5 -> 0.100000000 Inexact Rounded
-pwsx033  power -0.01            0.5 -> NaN Invalid_operation
-pwsx034  power +0.001           0.5 -> 0.0316227766 Inexact Rounded
-pwsx035  power -0.001           0.5 -> NaN Invalid_operation
-pwsx036  power +0.000001        0.5 -> 0.00100000000 Inexact Rounded
-pwsx037  power -0.000001        0.5 -> NaN Invalid_operation
-pwsx038  power +0.000000000001  0.5 -> 0.00000100000000 Inexact Rounded
-pwsx039  power -0.000000000001  0.5 -> NaN Invalid_operation
-
-pwsx041  power 1.1         0.5 -> 1.04880885 Inexact Rounded
-pwsx042  power 1.10        0.5 -> 1.04880885 Inexact Rounded
-pwsx043  power 1.100       0.5 -> 1.04880885 Inexact Rounded
-pwsx044  power 1.110       0.5 -> 1.05356538 Inexact Rounded
-pwsx045  power -1.1        0.5 -> NaN Invalid_operation
-pwsx046  power -1.10       0.5 -> NaN Invalid_operation
-pwsx047  power -1.100      0.5 -> NaN Invalid_operation
-pwsx048  power -1.110      0.5 -> NaN Invalid_operation
-pwsx049  power 9.9         0.5 -> 3.14642654 Inexact Rounded
-pwsx050  power 9.90        0.5 -> 3.14642654 Inexact Rounded
-pwsx051  power 9.900       0.5 -> 3.14642654 Inexact Rounded
-pwsx052  power 9.990       0.5 -> 3.16069613 Inexact Rounded
-pwsx053  power -9.9        0.5 -> NaN Invalid_operation
-pwsx054  power -9.90       0.5 -> NaN Invalid_operation
-pwsx055  power -9.900      0.5 -> NaN Invalid_operation
-pwsx056  power -9.990      0.5 -> NaN Invalid_operation
-
-pwsx060  power  1            0.5 -> 1.00000000 Inexact Rounded
-pwsx061  power  1.0          0.5 -> 1.00000000 Inexact Rounded
-pwsx062  power  1.00         0.5 -> 1.00000000 Inexact Rounded
-pwsx063  power  10.0         0.5 -> 3.16227766 Inexact Rounded
-pwsx064  power  10.0         0.5 -> 3.16227766 Inexact Rounded
-pwsx065  power  10.0         0.5 -> 3.16227766 Inexact Rounded
-pwsx066  power  10.00        0.5 -> 3.16227766 Inexact Rounded
-pwsx067  power  100          0.5 -> 10.0000000 Inexact Rounded
-pwsx068  power  100.0        0.5 -> 10.0000000 Inexact Rounded
-pwsx069  power  100.00       0.5 -> 10.0000000 Inexact Rounded
-pwsx070  power  1.1000E+3    0.5 -> 33.1662479 Inexact Rounded
-pwsx071  power  1.10000E+3   0.5 -> 33.1662479 Inexact Rounded
-pwsx072  power -10.0         0.5 -> NaN Invalid_operation
-pwsx073  power -10.00        0.5 -> NaN Invalid_operation
-pwsx074  power -100.0        0.5 -> NaN Invalid_operation
-pwsx075  power -100.00       0.5 -> NaN Invalid_operation
-pwsx076  power -1.1000E+3    0.5 -> NaN Invalid_operation
-pwsx077  power -1.10000E+3   0.5 -> NaN Invalid_operation
-
--- famous squares
-pwsx080  power     1   0.5 -> 1.00000000 Inexact Rounded
-pwsx081  power     4   0.5 -> 2.00000000 Inexact Rounded
-pwsx082  power     9   0.5 -> 3.00000000 Inexact Rounded
-pwsx083  power    16   0.5 -> 4.00000000 Inexact Rounded
-pwsx084  power    25   0.5 -> 5.00000000 Inexact Rounded
-pwsx085  power    36   0.5 -> 6.00000000 Inexact Rounded
-pwsx086  power    49   0.5 -> 7.00000000 Inexact Rounded
-pwsx087  power    64   0.5 -> 8.00000000 Inexact Rounded
-pwsx088  power    81   0.5 -> 9.00000000 Inexact Rounded
-pwsx089  power   100   0.5 -> 10.0000000 Inexact Rounded
-pwsx090  power   121   0.5 -> 11.0000000 Inexact Rounded
-pwsx091  power   144   0.5 -> 12.0000000 Inexact Rounded
-pwsx092  power   169   0.5 -> 13.0000000 Inexact Rounded
-pwsx093  power   256   0.5 -> 16.0000000 Inexact Rounded
-pwsx094  power  1024   0.5 -> 32.0000000 Inexact Rounded
-pwsx095  power  4096   0.5 -> 64.0000000 Inexact Rounded
-pwsx100  power   0.01  0.5 -> 0.100000000 Inexact Rounded
-pwsx101  power   0.04  0.5 -> 0.200000000 Inexact Rounded
-pwsx102  power   0.09  0.5 -> 0.300000000 Inexact Rounded
-pwsx103  power   0.16  0.5 -> 0.400000000 Inexact Rounded
-pwsx104  power   0.25  0.5 -> 0.500000000 Inexact Rounded
-pwsx105  power   0.36  0.5 -> 0.600000000 Inexact Rounded
-pwsx106  power   0.49  0.5 -> 0.700000000 Inexact Rounded
-pwsx107  power   0.64  0.5 -> 0.800000000 Inexact Rounded
-pwsx108  power   0.81  0.5 -> 0.900000000 Inexact Rounded
-pwsx109  power   1.00  0.5 -> 1.00000000 Inexact Rounded
-pwsx110  power   1.21  0.5 -> 1.10000000 Inexact Rounded
-pwsx111  power   1.44  0.5 -> 1.20000000 Inexact Rounded
-pwsx112  power   1.69  0.5 -> 1.30000000 Inexact Rounded
-pwsx113  power   2.56  0.5 -> 1.60000000 Inexact Rounded
-pwsx114  power  10.24  0.5 -> 3.20000000 Inexact Rounded
-pwsx115  power  40.96  0.5 -> 6.40000000 Inexact Rounded
-
--- Precision 1 squareroot tests [exhaustive, plus exponent adjusts]
-rounding:    half_even
-maxExponent: 999
-minexponent: -999
-precision:   1
-pwsx1201  power 0.1  0.5 -> 0.3  Inexact Rounded
-pwsx1202  power 0.01  0.5 -> 0.1 Inexact Rounded
-pwsx1203  power 1.0E-1  0.5 -> 0.3  Inexact Rounded
-pwsx1204  power 1.00E-2  0.5 -> 0.1  Inexact Rounded
-pwsx1205  power 1E-3  0.5 -> 0.03  Inexact Rounded
-pwsx1206  power 1E+1  0.5 -> 3  Inexact Rounded
-pwsx1207  power 1E+2  0.5 -> 1E+1 Inexact Rounded
-pwsx1208  power 1E+3  0.5 -> 3E+1  Inexact Rounded
-pwsx1209  power 0.2  0.5 -> 0.4  Inexact Rounded
-pwsx1210  power 0.02  0.5 -> 0.1  Inexact Rounded
-pwsx1211  power 2.0E-1  0.5 -> 0.4  Inexact Rounded
-pwsx1212  power 2.00E-2  0.5 -> 0.1  Inexact Rounded
-pwsx1213  power 2E-3  0.5 -> 0.04  Inexact Rounded
-pwsx1214  power 2E+1  0.5 -> 4  Inexact Rounded
-pwsx1215  power 2E+2  0.5 -> 1E+1  Inexact Rounded
-pwsx1216  power 2E+3  0.5 -> 4E+1  Inexact Rounded
-pwsx1217  power 0.3  0.5 -> 0.5  Inexact Rounded
-pwsx1218  power 0.03  0.5 -> 0.2  Inexact Rounded
-pwsx1219  power 3.0E-1  0.5 -> 0.5  Inexact Rounded
-pwsx1220  power 3.00E-2  0.5 -> 0.2  Inexact Rounded
-pwsx1221  power 3E-3  0.5 -> 0.05  Inexact Rounded
-pwsx1222  power 3E+1  0.5 -> 5  Inexact Rounded
-pwsx1223  power 3E+2  0.5 -> 2E+1  Inexact Rounded
-pwsx1224  power 3E+3  0.5 -> 5E+1  Inexact Rounded
-pwsx1225  power 0.4  0.5 -> 0.6  Inexact Rounded
-pwsx1226  power 0.04  0.5 -> 0.2 Inexact Rounded
-pwsx1227  power 4.0E-1  0.5 -> 0.6  Inexact Rounded
-pwsx1228  power 4.00E-2  0.5 -> 0.2  Inexact Rounded
-pwsx1229  power 4E-3  0.5 -> 0.06  Inexact Rounded
-pwsx1230  power 4E+1  0.5 -> 6  Inexact Rounded
-pwsx1231  power 4E+2  0.5 -> 2E+1 Inexact Rounded
-pwsx1232  power 4E+3  0.5 -> 6E+1  Inexact Rounded
-pwsx1233  power 0.5  0.5 -> 0.7  Inexact Rounded
-pwsx1234  power 0.05  0.5 -> 0.2  Inexact Rounded
-pwsx1235  power 5.0E-1  0.5 -> 0.7  Inexact Rounded
-pwsx1236  power 5.00E-2  0.5 -> 0.2  Inexact Rounded
-pwsx1237  power 5E-3  0.5 -> 0.07  Inexact Rounded
-pwsx1238  power 5E+1  0.5 -> 7  Inexact Rounded
-pwsx1239  power 5E+2  0.5 -> 2E+1  Inexact Rounded
-pwsx1240  power 5E+3  0.5 -> 7E+1  Inexact Rounded
-pwsx1241  power 0.6  0.5 -> 0.8  Inexact Rounded
-pwsx1242  power 0.06  0.5 -> 0.2  Inexact Rounded
-pwsx1243  power 6.0E-1  0.5 -> 0.8  Inexact Rounded
-pwsx1244  power 6.00E-2  0.5 -> 0.2  Inexact Rounded
-pwsx1245  power 6E-3  0.5 -> 0.08  Inexact Rounded
-pwsx1246  power 6E+1  0.5 -> 8  Inexact Rounded
-pwsx1247  power 6E+2  0.5 -> 2E+1  Inexact Rounded
-pwsx1248  power 6E+3  0.5 -> 8E+1  Inexact Rounded
-pwsx1249  power 0.7  0.5 -> 0.8  Inexact Rounded
-pwsx1250  power 0.07  0.5 -> 0.3  Inexact Rounded
-pwsx1251  power 7.0E-1  0.5 -> 0.8  Inexact Rounded
-pwsx1252  power 7.00E-2  0.5 -> 0.3  Inexact Rounded
-pwsx1253  power 7E-3  0.5 -> 0.08  Inexact Rounded
-pwsx1254  power 7E+1  0.5 -> 8  Inexact Rounded
-pwsx1255  power 7E+2  0.5 -> 3E+1  Inexact Rounded
-pwsx1256  power 7E+3  0.5 -> 8E+1  Inexact Rounded
-pwsx1257  power 0.8  0.5 -> 0.9  Inexact Rounded
-pwsx1258  power 0.08  0.5 -> 0.3  Inexact Rounded
-pwsx1259  power 8.0E-1  0.5 -> 0.9  Inexact Rounded
-pwsx1260  power 8.00E-2  0.5 -> 0.3  Inexact Rounded
-pwsx1261  power 8E-3  0.5 -> 0.09  Inexact Rounded
-pwsx1262  power 8E+1  0.5 -> 9  Inexact Rounded
-pwsx1263  power 8E+2  0.5 -> 3E+1  Inexact Rounded
-pwsx1264  power 8E+3  0.5 -> 9E+1  Inexact Rounded
-pwsx1265  power 0.9  0.5 -> 0.9  Inexact Rounded
-pwsx1266  power 0.09  0.5 -> 0.3 Inexact Rounded
-pwsx1267  power 9.0E-1  0.5 -> 0.9  Inexact Rounded
-pwsx1268  power 9.00E-2  0.5 -> 0.3  Inexact Rounded
-pwsx1269  power 9E-3  0.5 -> 0.09  Inexact Rounded
-pwsx1270  power 9E+1  0.5 -> 9  Inexact Rounded
-pwsx1271  power 9E+2  0.5 -> 3E+1 Inexact Rounded
-pwsx1272  power 9E+3  0.5 -> 9E+1  Inexact Rounded
-
--- Precision 2 squareroot tests [exhaustive, plus exponent adjusts]
-rounding:    half_even
-maxExponent: 999
-minexponent: -999
-precision:   2
-pwsx2201  power 0.1  0.5 -> 0.32  Inexact Rounded
-pwsx2202  power 0.01  0.5 -> 0.10 Inexact Rounded
-pwsx2203  power 1.0E-1  0.5 -> 0.32  Inexact Rounded
-pwsx2204  power 1.00E-2  0.5 -> 0.10 Inexact Rounded
-pwsx2205  power 1E-3  0.5 -> 0.032  Inexact Rounded
-pwsx2206  power 1E+1  0.5 -> 3.2  Inexact Rounded
-pwsx2207  power 1E+2  0.5 -> 10 Inexact Rounded
-pwsx2208  power 1E+3  0.5 -> 32  Inexact Rounded
-pwsx2209  power 0.2  0.5 -> 0.45  Inexact Rounded
-pwsx2210  power 0.02  0.5 -> 0.14  Inexact Rounded
-pwsx2211  power 2.0E-1  0.5 -> 0.45  Inexact Rounded
-pwsx2212  power 2.00E-2  0.5 -> 0.14  Inexact Rounded
-pwsx2213  power 2E-3  0.5 -> 0.045  Inexact Rounded
-pwsx2214  power 2E+1  0.5 -> 4.5  Inexact Rounded
-pwsx2215  power 2E+2  0.5 -> 14  Inexact Rounded
-pwsx2216  power 2E+3  0.5 -> 45  Inexact Rounded
-pwsx2217  power 0.3  0.5 -> 0.55  Inexact Rounded
-pwsx2218  power 0.03  0.5 -> 0.17  Inexact Rounded
-pwsx2219  power 3.0E-1  0.5 -> 0.55  Inexact Rounded
-pwsx2220  power 3.00E-2  0.5 -> 0.17  Inexact Rounded
-pwsx2221  power 3E-3  0.5 -> 0.055  Inexact Rounded
-pwsx2222  power 3E+1  0.5 -> 5.5  Inexact Rounded
-pwsx2223  power 3E+2  0.5 -> 17  Inexact Rounded
-pwsx2224  power 3E+3  0.5 -> 55  Inexact Rounded
-pwsx2225  power 0.4  0.5 -> 0.63  Inexact Rounded
-pwsx2226  power 0.04  0.5 -> 0.20 Inexact Rounded
-pwsx2227  power 4.0E-1  0.5 -> 0.63  Inexact Rounded
-pwsx2228  power 4.00E-2  0.5 -> 0.20 Inexact Rounded
-pwsx2229  power 4E-3  0.5 -> 0.063  Inexact Rounded
-pwsx2230  power 4E+1  0.5 -> 6.3  Inexact Rounded
-pwsx2231  power 4E+2  0.5 -> 20 Inexact Rounded
-pwsx2232  power 4E+3  0.5 -> 63  Inexact Rounded
-pwsx2233  power 0.5  0.5 -> 0.71  Inexact Rounded
-pwsx2234  power 0.05  0.5 -> 0.22  Inexact Rounded
-pwsx2235  power 5.0E-1  0.5 -> 0.71  Inexact Rounded
-pwsx2236  power 5.00E-2  0.5 -> 0.22  Inexact Rounded
-pwsx2237  power 5E-3  0.5 -> 0.071  Inexact Rounded
-pwsx2238  power 5E+1  0.5 -> 7.1  Inexact Rounded
-pwsx2239  power 5E+2  0.5 -> 22  Inexact Rounded
-pwsx2240  power 5E+3  0.5 -> 71  Inexact Rounded
-pwsx2241  power 0.6  0.5 -> 0.77  Inexact Rounded
-pwsx2242  power 0.06  0.5 -> 0.24  Inexact Rounded
-pwsx2243  power 6.0E-1  0.5 -> 0.77  Inexact Rounded
-pwsx2244  power 6.00E-2  0.5 -> 0.24  Inexact Rounded
-pwsx2245  power 6E-3  0.5 -> 0.077  Inexact Rounded
-pwsx2246  power 6E+1  0.5 -> 7.7  Inexact Rounded
-pwsx2247  power 6E+2  0.5 -> 24  Inexact Rounded
-pwsx2248  power 6E+3  0.5 -> 77  Inexact Rounded
-pwsx2249  power 0.7  0.5 -> 0.84  Inexact Rounded
-pwsx2250  power 0.07  0.5 -> 0.26  Inexact Rounded
-pwsx2251  power 7.0E-1  0.5 -> 0.84  Inexact Rounded
-pwsx2252  power 7.00E-2  0.5 -> 0.26  Inexact Rounded
-pwsx2253  power 7E-3  0.5 -> 0.084  Inexact Rounded
-pwsx2254  power 7E+1  0.5 -> 8.4  Inexact Rounded
-pwsx2255  power 7E+2  0.5 -> 26  Inexact Rounded
-pwsx2256  power 7E+3  0.5 -> 84  Inexact Rounded
-pwsx2257  power 0.8  0.5 -> 0.89  Inexact Rounded
-pwsx2258  power 0.08  0.5 -> 0.28  Inexact Rounded
-pwsx2259  power 8.0E-1  0.5 -> 0.89  Inexact Rounded
-pwsx2260  power 8.00E-2  0.5 -> 0.28  Inexact Rounded
-pwsx2261  power 8E-3  0.5 -> 0.089  Inexact Rounded
-pwsx2262  power 8E+1  0.5 -> 8.9  Inexact Rounded
-pwsx2263  power 8E+2  0.5 -> 28  Inexact Rounded
-pwsx2264  power 8E+3  0.5 -> 89  Inexact Rounded
-pwsx2265  power 0.9  0.5 -> 0.95  Inexact Rounded
-pwsx2266  power 0.09  0.5 -> 0.30  Inexact Rounded
-pwsx2267  power 9.0E-1  0.5 -> 0.95  Inexact Rounded
-pwsx2268  power 9.00E-2  0.5 -> 0.30 Inexact Rounded
-pwsx2269  power 9E-3  0.5 -> 0.095  Inexact Rounded
-pwsx2270  power 9E+1  0.5 -> 9.5  Inexact Rounded
-pwsx2271  power 9E+2  0.5 -> 30 Inexact Rounded
-pwsx2272  power 9E+3  0.5 -> 95  Inexact Rounded
-pwsx2273  power 0.10  0.5 -> 0.32  Inexact Rounded
-pwsx2274  power 0.010  0.5 -> 0.10 Inexact Rounded
-pwsx2275  power 10.0E-1  0.5 -> 1.0 Inexact Rounded
-pwsx2276  power 10.00E-2  0.5 -> 0.32  Inexact Rounded
-pwsx2277  power 10E-3  0.5 -> 0.10 Inexact Rounded
-pwsx2278  power 10E+1  0.5 -> 10 Inexact Rounded
-pwsx2279  power 10E+2  0.5 -> 32  Inexact Rounded
-pwsx2280  power 10E+3  0.5 -> 1.0E+2 Inexact Rounded
-pwsx2281  power 0.11  0.5 -> 0.33  Inexact Rounded
-pwsx2282  power 0.011  0.5 -> 0.10  Inexact Rounded
-pwsx2283  power 11.0E-1  0.5 -> 1.0  Inexact Rounded
-pwsx2284  power 11.00E-2  0.5 -> 0.33  Inexact Rounded
-pwsx2285  power 11E-3  0.5 -> 0.10  Inexact Rounded
-pwsx2286  power 11E+1  0.5 -> 10  Inexact Rounded
-pwsx2287  power 11E+2  0.5 -> 33  Inexact Rounded
-pwsx2288  power 11E+3  0.5 -> 1.0E+2  Inexact Rounded
-pwsx2289  power 0.12  0.5 -> 0.35  Inexact Rounded
-pwsx2290  power 0.012  0.5 -> 0.11  Inexact Rounded
-pwsx2291  power 12.0E-1  0.5 -> 1.1  Inexact Rounded
-pwsx2292  power 12.00E-2  0.5 -> 0.35  Inexact Rounded
-pwsx2293  power 12E-3  0.5 -> 0.11  Inexact Rounded
-pwsx2294  power 12E+1  0.5 -> 11  Inexact Rounded
-pwsx2295  power 12E+2  0.5 -> 35  Inexact Rounded
-pwsx2296  power 12E+3  0.5 -> 1.1E+2  Inexact Rounded
-pwsx2297  power 0.13  0.5 -> 0.36  Inexact Rounded
-pwsx2298  power 0.013  0.5 -> 0.11  Inexact Rounded
-pwsx2299  power 13.0E-1  0.5 -> 1.1  Inexact Rounded
-pwsx2300  power 13.00E-2  0.5 -> 0.36  Inexact Rounded
-pwsx2301  power 13E-3  0.5 -> 0.11  Inexact Rounded
-pwsx2302  power 13E+1  0.5 -> 11  Inexact Rounded
-pwsx2303  power 13E+2  0.5 -> 36  Inexact Rounded
-pwsx2304  power 13E+3  0.5 -> 1.1E+2  Inexact Rounded
-pwsx2305  power 0.14  0.5 -> 0.37  Inexact Rounded
-pwsx2306  power 0.014  0.5 -> 0.12  Inexact Rounded
-pwsx2307  power 14.0E-1  0.5 -> 1.2  Inexact Rounded
-pwsx2308  power 14.00E-2  0.5 -> 0.37  Inexact Rounded
-pwsx2309  power 14E-3  0.5 -> 0.12  Inexact Rounded
-pwsx2310  power 14E+1  0.5 -> 12  Inexact Rounded
-pwsx2311  power 14E+2  0.5 -> 37  Inexact Rounded
-pwsx2312  power 14E+3  0.5 -> 1.2E+2  Inexact Rounded
-pwsx2313  power 0.15  0.5 -> 0.39  Inexact Rounded
-pwsx2314  power 0.015  0.5 -> 0.12  Inexact Rounded
-pwsx2315  power 15.0E-1  0.5 -> 1.2  Inexact Rounded
-pwsx2316  power 15.00E-2  0.5 -> 0.39  Inexact Rounded
-pwsx2317  power 15E-3  0.5 -> 0.12  Inexact Rounded
-pwsx2318  power 15E+1  0.5 -> 12  Inexact Rounded
-pwsx2319  power 15E+2  0.5 -> 39  Inexact Rounded
-pwsx2320  power 15E+3  0.5 -> 1.2E+2  Inexact Rounded
-pwsx2321  power 0.16  0.5 -> 0.40 Inexact Rounded
-pwsx2322  power 0.016  0.5 -> 0.13  Inexact Rounded
-pwsx2323  power 16.0E-1  0.5 -> 1.3  Inexact Rounded
-pwsx2324  power 16.00E-2  0.5 -> 0.40 Inexact Rounded
-pwsx2325  power 16E-3  0.5 -> 0.13  Inexact Rounded
-pwsx2326  power 16E+1  0.5 -> 13  Inexact Rounded
-pwsx2327  power 16E+2  0.5 -> 40 Inexact Rounded
-pwsx2328  power 16E+3  0.5 -> 1.3E+2  Inexact Rounded
-pwsx2329  power 0.17  0.5 -> 0.41  Inexact Rounded
-pwsx2330  power 0.017  0.5 -> 0.13  Inexact Rounded
-pwsx2331  power 17.0E-1  0.5 -> 1.3  Inexact Rounded
-pwsx2332  power 17.00E-2  0.5 -> 0.41  Inexact Rounded
-pwsx2333  power 17E-3  0.5 -> 0.13  Inexact Rounded
-pwsx2334  power 17E+1  0.5 -> 13  Inexact Rounded
-pwsx2335  power 17E+2  0.5 -> 41  Inexact Rounded
-pwsx2336  power 17E+3  0.5 -> 1.3E+2  Inexact Rounded
-pwsx2337  power 0.18  0.5 -> 0.42  Inexact Rounded
-pwsx2338  power 0.018  0.5 -> 0.13  Inexact Rounded
-pwsx2339  power 18.0E-1  0.5 -> 1.3  Inexact Rounded
-pwsx2340  power 18.00E-2  0.5 -> 0.42  Inexact Rounded
-pwsx2341  power 18E-3  0.5 -> 0.13  Inexact Rounded
-pwsx2342  power 18E+1  0.5 -> 13  Inexact Rounded
-pwsx2343  power 18E+2  0.5 -> 42  Inexact Rounded
-pwsx2344  power 18E+3  0.5 -> 1.3E+2  Inexact Rounded
-pwsx2345  power 0.19  0.5 -> 0.44  Inexact Rounded
-pwsx2346  power 0.019  0.5 -> 0.14  Inexact Rounded
-pwsx2347  power 19.0E-1  0.5 -> 1.4  Inexact Rounded
-pwsx2348  power 19.00E-2  0.5 -> 0.44  Inexact Rounded
-pwsx2349  power 19E-3  0.5 -> 0.14  Inexact Rounded
-pwsx2350  power 19E+1  0.5 -> 14  Inexact Rounded
-pwsx2351  power 19E+2  0.5 -> 44  Inexact Rounded
-pwsx2352  power 19E+3  0.5 -> 1.4E+2  Inexact Rounded
-pwsx2353  power 0.20  0.5 -> 0.45  Inexact Rounded
-pwsx2354  power 0.020  0.5 -> 0.14  Inexact Rounded
-pwsx2355  power 20.0E-1  0.5 -> 1.4  Inexact Rounded
-pwsx2356  power 20.00E-2  0.5 -> 0.45  Inexact Rounded
-pwsx2357  power 20E-3  0.5 -> 0.14  Inexact Rounded
-pwsx2358  power 20E+1  0.5 -> 14  Inexact Rounded
-pwsx2359  power 20E+2  0.5 -> 45  Inexact Rounded
-pwsx2360  power 20E+3  0.5 -> 1.4E+2  Inexact Rounded
-pwsx2361  power 0.21  0.5 -> 0.46  Inexact Rounded
-pwsx2362  power 0.021  0.5 -> 0.14  Inexact Rounded
-pwsx2363  power 21.0E-1  0.5 -> 1.4  Inexact Rounded
-pwsx2364  power 21.00E-2  0.5 -> 0.46  Inexact Rounded
-pwsx2365  power 21E-3  0.5 -> 0.14  Inexact Rounded
-pwsx2366  power 21E+1  0.5 -> 14  Inexact Rounded
-pwsx2367  power 21E+2  0.5 -> 46  Inexact Rounded
-pwsx2368  power 21E+3  0.5 -> 1.4E+2  Inexact Rounded
-pwsx2369  power 0.22  0.5 -> 0.47  Inexact Rounded
-pwsx2370  power 0.022  0.5 -> 0.15  Inexact Rounded
-pwsx2371  power 22.0E-1  0.5 -> 1.5  Inexact Rounded
-pwsx2372  power 22.00E-2  0.5 -> 0.47  Inexact Rounded
-pwsx2373  power 22E-3  0.5 -> 0.15  Inexact Rounded
-pwsx2374  power 22E+1  0.5 -> 15  Inexact Rounded
-pwsx2375  power 22E+2  0.5 -> 47  Inexact Rounded
-pwsx2376  power 22E+3  0.5 -> 1.5E+2  Inexact Rounded
-pwsx2377  power 0.23  0.5 -> 0.48  Inexact Rounded
-pwsx2378  power 0.023  0.5 -> 0.15  Inexact Rounded
-pwsx2379  power 23.0E-1  0.5 -> 1.5  Inexact Rounded
-pwsx2380  power 23.00E-2  0.5 -> 0.48  Inexact Rounded
-pwsx2381  power 23E-3  0.5 -> 0.15  Inexact Rounded
-pwsx2382  power 23E+1  0.5 -> 15  Inexact Rounded
-pwsx2383  power 23E+2  0.5 -> 48  Inexact Rounded
-pwsx2384  power 23E+3  0.5 -> 1.5E+2  Inexact Rounded
-pwsx2385  power 0.24  0.5 -> 0.49  Inexact Rounded
-pwsx2386  power 0.024  0.5 -> 0.15  Inexact Rounded
-pwsx2387  power 24.0E-1  0.5 -> 1.5  Inexact Rounded
-pwsx2388  power 24.00E-2  0.5 -> 0.49  Inexact Rounded
-pwsx2389  power 24E-3  0.5 -> 0.15  Inexact Rounded
-pwsx2390  power 24E+1  0.5 -> 15  Inexact Rounded
-pwsx2391  power 24E+2  0.5 -> 49  Inexact Rounded
-pwsx2392  power 24E+3  0.5 -> 1.5E+2  Inexact Rounded
-pwsx2393  power 0.25  0.5 -> 0.50 Inexact Rounded
-pwsx2394  power 0.025  0.5 -> 0.16  Inexact Rounded
-pwsx2395  power 25.0E-1  0.5 -> 1.6  Inexact Rounded
-pwsx2396  power 25.00E-2  0.5 -> 0.50 Inexact Rounded
-pwsx2397  power 25E-3  0.5 -> 0.16  Inexact Rounded
-pwsx2398  power 25E+1  0.5 -> 16  Inexact Rounded
-pwsx2399  power 25E+2  0.5 -> 50 Inexact Rounded
-pwsx2400  power 25E+3  0.5 -> 1.6E+2  Inexact Rounded
-pwsx2401  power 0.26  0.5 -> 0.51  Inexact Rounded
-pwsx2402  power 0.026  0.5 -> 0.16  Inexact Rounded
-pwsx2403  power 26.0E-1  0.5 -> 1.6  Inexact Rounded
-pwsx2404  power 26.00E-2  0.5 -> 0.51  Inexact Rounded
-pwsx2405  power 26E-3  0.5 -> 0.16  Inexact Rounded
-pwsx2406  power 26E+1  0.5 -> 16  Inexact Rounded
-pwsx2407  power 26E+2  0.5 -> 51  Inexact Rounded
-pwsx2408  power 26E+3  0.5 -> 1.6E+2  Inexact Rounded
-pwsx2409  power 0.27  0.5 -> 0.52  Inexact Rounded
-pwsx2410  power 0.027  0.5 -> 0.16  Inexact Rounded
-pwsx2411  power 27.0E-1  0.5 -> 1.6  Inexact Rounded
-pwsx2412  power 27.00E-2  0.5 -> 0.52  Inexact Rounded
-pwsx2413  power 27E-3  0.5 -> 0.16  Inexact Rounded
-pwsx2414  power 27E+1  0.5 -> 16  Inexact Rounded
-pwsx2415  power 27E+2  0.5 -> 52  Inexact Rounded
-pwsx2416  power 27E+3  0.5 -> 1.6E+2  Inexact Rounded
-pwsx2417  power 0.28  0.5 -> 0.53  Inexact Rounded
-pwsx2418  power 0.028  0.5 -> 0.17  Inexact Rounded
-pwsx2419  power 28.0E-1  0.5 -> 1.7  Inexact Rounded
-pwsx2420  power 28.00E-2  0.5 -> 0.53  Inexact Rounded
-pwsx2421  power 28E-3  0.5 -> 0.17  Inexact Rounded
-pwsx2422  power 28E+1  0.5 -> 17  Inexact Rounded
-pwsx2423  power 28E+2  0.5 -> 53  Inexact Rounded
-pwsx2424  power 28E+3  0.5 -> 1.7E+2  Inexact Rounded
-pwsx2425  power 0.29  0.5 -> 0.54  Inexact Rounded
-pwsx2426  power 0.029  0.5 -> 0.17  Inexact Rounded
-pwsx2427  power 29.0E-1  0.5 -> 1.7  Inexact Rounded
-pwsx2428  power 29.00E-2  0.5 -> 0.54  Inexact Rounded
-pwsx2429  power 29E-3  0.5 -> 0.17  Inexact Rounded
-pwsx2430  power 29E+1  0.5 -> 17  Inexact Rounded
-pwsx2431  power 29E+2  0.5 -> 54  Inexact Rounded
-pwsx2432  power 29E+3  0.5 -> 1.7E+2  Inexact Rounded
-pwsx2433  power 0.30  0.5 -> 0.55  Inexact Rounded
-pwsx2434  power 0.030  0.5 -> 0.17  Inexact Rounded
-pwsx2435  power 30.0E-1  0.5 -> 1.7  Inexact Rounded
-pwsx2436  power 30.00E-2  0.5 -> 0.55  Inexact Rounded
-pwsx2437  power 30E-3  0.5 -> 0.17  Inexact Rounded
-pwsx2438  power 30E+1  0.5 -> 17  Inexact Rounded
-pwsx2439  power 30E+2  0.5 -> 55  Inexact Rounded
-pwsx2440  power 30E+3  0.5 -> 1.7E+2  Inexact Rounded
-pwsx2441  power 0.31  0.5 -> 0.56  Inexact Rounded
-pwsx2442  power 0.031  0.5 -> 0.18  Inexact Rounded
-pwsx2443  power 31.0E-1  0.5 -> 1.8  Inexact Rounded
-pwsx2444  power 31.00E-2  0.5 -> 0.56  Inexact Rounded
-pwsx2445  power 31E-3  0.5 -> 0.18  Inexact Rounded
-pwsx2446  power 31E+1  0.5 -> 18  Inexact Rounded
-pwsx2447  power 31E+2  0.5 -> 56  Inexact Rounded
-pwsx2448  power 31E+3  0.5 -> 1.8E+2  Inexact Rounded
-pwsx2449  power 0.32  0.5 -> 0.57  Inexact Rounded
-pwsx2450  power 0.032  0.5 -> 0.18  Inexact Rounded
-pwsx2451  power 32.0E-1  0.5 -> 1.8  Inexact Rounded
-pwsx2452  power 32.00E-2  0.5 -> 0.57  Inexact Rounded
-pwsx2453  power 32E-3  0.5 -> 0.18  Inexact Rounded
-pwsx2454  power 32E+1  0.5 -> 18  Inexact Rounded
-pwsx2455  power 32E+2  0.5 -> 57  Inexact Rounded
-pwsx2456  power 32E+3  0.5 -> 1.8E+2  Inexact Rounded
-pwsx2457  power 0.33  0.5 -> 0.57  Inexact Rounded
-pwsx2458  power 0.033  0.5 -> 0.18  Inexact Rounded
-pwsx2459  power 33.0E-1  0.5 -> 1.8  Inexact Rounded
-pwsx2460  power 33.00E-2  0.5 -> 0.57  Inexact Rounded
-pwsx2461  power 33E-3  0.5 -> 0.18  Inexact Rounded
-pwsx2462  power 33E+1  0.5 -> 18  Inexact Rounded
-pwsx2463  power 33E+2  0.5 -> 57  Inexact Rounded
-pwsx2464  power 33E+3  0.5 -> 1.8E+2  Inexact Rounded
-pwsx2465  power 0.34  0.5 -> 0.58  Inexact Rounded
-pwsx2466  power 0.034  0.5 -> 0.18  Inexact Rounded
-pwsx2467  power 34.0E-1  0.5 -> 1.8  Inexact Rounded
-pwsx2468  power 34.00E-2  0.5 -> 0.58  Inexact Rounded
-pwsx2469  power 34E-3  0.5 -> 0.18  Inexact Rounded
-pwsx2470  power 34E+1  0.5 -> 18  Inexact Rounded
-pwsx2471  power 34E+2  0.5 -> 58  Inexact Rounded
-pwsx2472  power 34E+3  0.5 -> 1.8E+2  Inexact Rounded
-pwsx2473  power 0.35  0.5 -> 0.59  Inexact Rounded
-pwsx2474  power 0.035  0.5 -> 0.19  Inexact Rounded
-pwsx2475  power 35.0E-1  0.5 -> 1.9  Inexact Rounded
-pwsx2476  power 35.00E-2  0.5 -> 0.59  Inexact Rounded
-pwsx2477  power 35E-3  0.5 -> 0.19  Inexact Rounded
-pwsx2478  power 35E+1  0.5 -> 19  Inexact Rounded
-pwsx2479  power 35E+2  0.5 -> 59  Inexact Rounded
-pwsx2480  power 35E+3  0.5 -> 1.9E+2  Inexact Rounded
-pwsx2481  power 0.36  0.5 -> 0.60 Inexact Rounded
-pwsx2482  power 0.036  0.5 -> 0.19  Inexact Rounded
-pwsx2483  power 36.0E-1  0.5 -> 1.9  Inexact Rounded
-pwsx2484  power 36.00E-2  0.5 -> 0.60 Inexact Rounded
-pwsx2485  power 36E-3  0.5 -> 0.19  Inexact Rounded
-pwsx2486  power 36E+1  0.5 -> 19  Inexact Rounded
-pwsx2487  power 36E+2  0.5 -> 60 Inexact Rounded
-pwsx2488  power 36E+3  0.5 -> 1.9E+2  Inexact Rounded
-pwsx2489  power 0.37  0.5 -> 0.61  Inexact Rounded
-pwsx2490  power 0.037  0.5 -> 0.19  Inexact Rounded
-pwsx2491  power 37.0E-1  0.5 -> 1.9  Inexact Rounded
-pwsx2492  power 37.00E-2  0.5 -> 0.61  Inexact Rounded
-pwsx2493  power 37E-3  0.5 -> 0.19  Inexact Rounded
-pwsx2494  power 37E+1  0.5 -> 19  Inexact Rounded
-pwsx2495  power 37E+2  0.5 -> 61  Inexact Rounded
-pwsx2496  power 37E+3  0.5 -> 1.9E+2  Inexact Rounded
-pwsx2497  power 0.38  0.5 -> 0.62  Inexact Rounded
-pwsx2498  power 0.038  0.5 -> 0.19  Inexact Rounded
-pwsx2499  power 38.0E-1  0.5 -> 1.9  Inexact Rounded
-pwsx2500  power 38.00E-2  0.5 -> 0.62  Inexact Rounded
-pwsx2501  power 38E-3  0.5 -> 0.19  Inexact Rounded
-pwsx2502  power 38E+1  0.5 -> 19  Inexact Rounded
-pwsx2503  power 38E+2  0.5 -> 62  Inexact Rounded
-pwsx2504  power 38E+3  0.5 -> 1.9E+2  Inexact Rounded
-pwsx2505  power 0.39  0.5 -> 0.62  Inexact Rounded
-pwsx2506  power 0.039  0.5 -> 0.20  Inexact Rounded
-pwsx2507  power 39.0E-1  0.5 -> 2.0  Inexact Rounded
-pwsx2508  power 39.00E-2  0.5 -> 0.62  Inexact Rounded
-pwsx2509  power 39E-3  0.5 -> 0.20  Inexact Rounded
-pwsx2510  power 39E+1  0.5 -> 20  Inexact Rounded
-pwsx2511  power 39E+2  0.5 -> 62  Inexact Rounded
-pwsx2512  power 39E+3  0.5 -> 2.0E+2  Inexact Rounded
-pwsx2513  power 0.40  0.5 -> 0.63  Inexact Rounded
-pwsx2514  power 0.040  0.5 -> 0.20 Inexact Rounded
-pwsx2515  power 40.0E-1  0.5 -> 2.0 Inexact Rounded
-pwsx2516  power 40.00E-2  0.5 -> 0.63  Inexact Rounded
-pwsx2517  power 40E-3  0.5 -> 0.20 Inexact Rounded
-pwsx2518  power 40E+1  0.5 -> 20 Inexact Rounded
-pwsx2519  power 40E+2  0.5 -> 63  Inexact Rounded
-pwsx2520  power 40E+3  0.5 -> 2.0E+2 Inexact Rounded
-pwsx2521  power 0.41  0.5 -> 0.64  Inexact Rounded
-pwsx2522  power 0.041  0.5 -> 0.20  Inexact Rounded
-pwsx2523  power 41.0E-1  0.5 -> 2.0  Inexact Rounded
-pwsx2524  power 41.00E-2  0.5 -> 0.64  Inexact Rounded
-pwsx2525  power 41E-3  0.5 -> 0.20  Inexact Rounded
-pwsx2526  power 41E+1  0.5 -> 20  Inexact Rounded
-pwsx2527  power 41E+2  0.5 -> 64  Inexact Rounded
-pwsx2528  power 41E+3  0.5 -> 2.0E+2  Inexact Rounded
-pwsx2529  power 0.42  0.5 -> 0.65  Inexact Rounded
-pwsx2530  power 0.042  0.5 -> 0.20  Inexact Rounded
-pwsx2531  power 42.0E-1  0.5 -> 2.0  Inexact Rounded
-pwsx2532  power 42.00E-2  0.5 -> 0.65  Inexact Rounded
-pwsx2533  power 42E-3  0.5 -> 0.20  Inexact Rounded
-pwsx2534  power 42E+1  0.5 -> 20  Inexact Rounded
-pwsx2535  power 42E+2  0.5 -> 65  Inexact Rounded
-pwsx2536  power 42E+3  0.5 -> 2.0E+2  Inexact Rounded
-pwsx2537  power 0.43  0.5 -> 0.66  Inexact Rounded
-pwsx2538  power 0.043  0.5 -> 0.21  Inexact Rounded
-pwsx2539  power 43.0E-1  0.5 -> 2.1  Inexact Rounded
-pwsx2540  power 43.00E-2  0.5 -> 0.66  Inexact Rounded
-pwsx2541  power 43E-3  0.5 -> 0.21  Inexact Rounded
-pwsx2542  power 43E+1  0.5 -> 21  Inexact Rounded
-pwsx2543  power 43E+2  0.5 -> 66  Inexact Rounded
-pwsx2544  power 43E+3  0.5 -> 2.1E+2  Inexact Rounded
-pwsx2545  power 0.44  0.5 -> 0.66  Inexact Rounded
-pwsx2546  power 0.044  0.5 -> 0.21  Inexact Rounded
-pwsx2547  power 44.0E-1  0.5 -> 2.1  Inexact Rounded
-pwsx2548  power 44.00E-2  0.5 -> 0.66  Inexact Rounded
-pwsx2549  power 44E-3  0.5 -> 0.21  Inexact Rounded
-pwsx2550  power 44E+1  0.5 -> 21  Inexact Rounded
-pwsx2551  power 44E+2  0.5 -> 66  Inexact Rounded
-pwsx2552  power 44E+3  0.5 -> 2.1E+2  Inexact Rounded
-pwsx2553  power 0.45  0.5 -> 0.67  Inexact Rounded
-pwsx2554  power 0.045  0.5 -> 0.21  Inexact Rounded
-pwsx2555  power 45.0E-1  0.5 -> 2.1  Inexact Rounded
-pwsx2556  power 45.00E-2  0.5 -> 0.67  Inexact Rounded
-pwsx2557  power 45E-3  0.5 -> 0.21  Inexact Rounded
-pwsx2558  power 45E+1  0.5 -> 21  Inexact Rounded
-pwsx2559  power 45E+2  0.5 -> 67  Inexact Rounded
-pwsx2560  power 45E+3  0.5 -> 2.1E+2  Inexact Rounded
-pwsx2561  power 0.46  0.5 -> 0.68  Inexact Rounded
-pwsx2562  power 0.046  0.5 -> 0.21  Inexact Rounded
-pwsx2563  power 46.0E-1  0.5 -> 2.1  Inexact Rounded
-pwsx2564  power 46.00E-2  0.5 -> 0.68  Inexact Rounded
-pwsx2565  power 46E-3  0.5 -> 0.21  Inexact Rounded
-pwsx2566  power 46E+1  0.5 -> 21  Inexact Rounded
-pwsx2567  power 46E+2  0.5 -> 68  Inexact Rounded
-pwsx2568  power 46E+3  0.5 -> 2.1E+2  Inexact Rounded
-pwsx2569  power 0.47  0.5 -> 0.69  Inexact Rounded
-pwsx2570  power 0.047  0.5 -> 0.22  Inexact Rounded
-pwsx2571  power 47.0E-1  0.5 -> 2.2  Inexact Rounded
-pwsx2572  power 47.00E-2  0.5 -> 0.69  Inexact Rounded
-pwsx2573  power 47E-3  0.5 -> 0.22  Inexact Rounded
-pwsx2574  power 47E+1  0.5 -> 22  Inexact Rounded
-pwsx2575  power 47E+2  0.5 -> 69  Inexact Rounded
-pwsx2576  power 47E+3  0.5 -> 2.2E+2  Inexact Rounded
-pwsx2577  power 0.48  0.5 -> 0.69  Inexact Rounded
-pwsx2578  power 0.048  0.5 -> 0.22  Inexact Rounded
-pwsx2579  power 48.0E-1  0.5 -> 2.2  Inexact Rounded
-pwsx2580  power 48.00E-2  0.5 -> 0.69  Inexact Rounded
-pwsx2581  power 48E-3  0.5 -> 0.22  Inexact Rounded
-pwsx2582  power 48E+1  0.5 -> 22  Inexact Rounded
-pwsx2583  power 48E+2  0.5 -> 69  Inexact Rounded
-pwsx2584  power 48E+3  0.5 -> 2.2E+2  Inexact Rounded
-pwsx2585  power 0.49  0.5 -> 0.70 Inexact Rounded
-pwsx2586  power 0.049  0.5 -> 0.22  Inexact Rounded
-pwsx2587  power 49.0E-1  0.5 -> 2.2  Inexact Rounded
-pwsx2588  power 49.00E-2  0.5 -> 0.70 Inexact Rounded
-pwsx2589  power 49E-3  0.5 -> 0.22  Inexact Rounded
-pwsx2590  power 49E+1  0.5 -> 22  Inexact Rounded
-pwsx2591  power 49E+2  0.5 -> 70 Inexact Rounded
-pwsx2592  power 49E+3  0.5 -> 2.2E+2  Inexact Rounded
-pwsx2593  power 0.50  0.5 -> 0.71  Inexact Rounded
-pwsx2594  power 0.050  0.5 -> 0.22  Inexact Rounded
-pwsx2595  power 50.0E-1  0.5 -> 2.2  Inexact Rounded
-pwsx2596  power 50.00E-2  0.5 -> 0.71  Inexact Rounded
-pwsx2597  power 50E-3  0.5 -> 0.22  Inexact Rounded
-pwsx2598  power 50E+1  0.5 -> 22  Inexact Rounded
-pwsx2599  power 50E+2  0.5 -> 71  Inexact Rounded
-pwsx2600  power 50E+3  0.5 -> 2.2E+2  Inexact Rounded
-pwsx2601  power 0.51  0.5 -> 0.71  Inexact Rounded
-pwsx2602  power 0.051  0.5 -> 0.23  Inexact Rounded
-pwsx2603  power 51.0E-1  0.5 -> 2.3  Inexact Rounded
-pwsx2604  power 51.00E-2  0.5 -> 0.71  Inexact Rounded
-pwsx2605  power 51E-3  0.5 -> 0.23  Inexact Rounded
-pwsx2606  power 51E+1  0.5 -> 23  Inexact Rounded
-pwsx2607  power 51E+2  0.5 -> 71  Inexact Rounded
-pwsx2608  power 51E+3  0.5 -> 2.3E+2  Inexact Rounded
-pwsx2609  power 0.52  0.5 -> 0.72  Inexact Rounded
-pwsx2610  power 0.052  0.5 -> 0.23  Inexact Rounded
-pwsx2611  power 52.0E-1  0.5 -> 2.3  Inexact Rounded
-pwsx2612  power 52.00E-2  0.5 -> 0.72  Inexact Rounded
-pwsx2613  power 52E-3  0.5 -> 0.23  Inexact Rounded
-pwsx2614  power 52E+1  0.5 -> 23  Inexact Rounded
-pwsx2615  power 52E+2  0.5 -> 72  Inexact Rounded
-pwsx2616  power 52E+3  0.5 -> 2.3E+2  Inexact Rounded
-pwsx2617  power 0.53  0.5 -> 0.73  Inexact Rounded
-pwsx2618  power 0.053  0.5 -> 0.23  Inexact Rounded
-pwsx2619  power 53.0E-1  0.5 -> 2.3  Inexact Rounded
-pwsx2620  power 53.00E-2  0.5 -> 0.73  Inexact Rounded
-pwsx2621  power 53E-3  0.5 -> 0.23  Inexact Rounded
-pwsx2622  power 53E+1  0.5 -> 23  Inexact Rounded
-pwsx2623  power 53E+2  0.5 -> 73  Inexact Rounded
-pwsx2624  power 53E+3  0.5 -> 2.3E+2  Inexact Rounded
-pwsx2625  power 0.54  0.5 -> 0.73  Inexact Rounded
-pwsx2626  power 0.054  0.5 -> 0.23  Inexact Rounded
-pwsx2627  power 54.0E-1  0.5 -> 2.3  Inexact Rounded
-pwsx2628  power 54.00E-2  0.5 -> 0.73  Inexact Rounded
-pwsx2629  power 54E-3  0.5 -> 0.23  Inexact Rounded
-pwsx2630  power 54E+1  0.5 -> 23  Inexact Rounded
-pwsx2631  power 54E+2  0.5 -> 73  Inexact Rounded
-pwsx2632  power 54E+3  0.5 -> 2.3E+2  Inexact Rounded
-pwsx2633  power 0.55  0.5 -> 0.74  Inexact Rounded
-pwsx2634  power 0.055  0.5 -> 0.23  Inexact Rounded
-pwsx2635  power 55.0E-1  0.5 -> 2.3  Inexact Rounded
-pwsx2636  power 55.00E-2  0.5 -> 0.74  Inexact Rounded
-pwsx2637  power 55E-3  0.5 -> 0.23  Inexact Rounded
-pwsx2638  power 55E+1  0.5 -> 23  Inexact Rounded
-pwsx2639  power 55E+2  0.5 -> 74  Inexact Rounded
-pwsx2640  power 55E+3  0.5 -> 2.3E+2  Inexact Rounded
-pwsx2641  power 0.56  0.5 -> 0.75  Inexact Rounded
-pwsx2642  power 0.056  0.5 -> 0.24  Inexact Rounded
-pwsx2643  power 56.0E-1  0.5 -> 2.4  Inexact Rounded
-pwsx2644  power 56.00E-2  0.5 -> 0.75  Inexact Rounded
-pwsx2645  power 56E-3  0.5 -> 0.24  Inexact Rounded
-pwsx2646  power 56E+1  0.5 -> 24  Inexact Rounded
-pwsx2647  power 56E+2  0.5 -> 75  Inexact Rounded
-pwsx2648  power 56E+3  0.5 -> 2.4E+2  Inexact Rounded
-pwsx2649  power 0.57  0.5 -> 0.75  Inexact Rounded
-pwsx2650  power 0.057  0.5 -> 0.24  Inexact Rounded
-pwsx2651  power 57.0E-1  0.5 -> 2.4  Inexact Rounded
-pwsx2652  power 57.00E-2  0.5 -> 0.75  Inexact Rounded
-pwsx2653  power 57E-3  0.5 -> 0.24  Inexact Rounded
-pwsx2654  power 57E+1  0.5 -> 24  Inexact Rounded
-pwsx2655  power 57E+2  0.5 -> 75  Inexact Rounded
-pwsx2656  power 57E+3  0.5 -> 2.4E+2  Inexact Rounded
-pwsx2657  power 0.58  0.5 -> 0.76  Inexact Rounded
-pwsx2658  power 0.058  0.5 -> 0.24  Inexact Rounded
-pwsx2659  power 58.0E-1  0.5 -> 2.4  Inexact Rounded
-pwsx2660  power 58.00E-2  0.5 -> 0.76  Inexact Rounded
-pwsx2661  power 58E-3  0.5 -> 0.24  Inexact Rounded
-pwsx2662  power 58E+1  0.5 -> 24  Inexact Rounded
-pwsx2663  power 58E+2  0.5 -> 76  Inexact Rounded
-pwsx2664  power 58E+3  0.5 -> 2.4E+2  Inexact Rounded
-pwsx2665  power 0.59  0.5 -> 0.77  Inexact Rounded
-pwsx2666  power 0.059  0.5 -> 0.24  Inexact Rounded
-pwsx2667  power 59.0E-1  0.5 -> 2.4  Inexact Rounded
-pwsx2668  power 59.00E-2  0.5 -> 0.77  Inexact Rounded
-pwsx2669  power 59E-3  0.5 -> 0.24  Inexact Rounded
-pwsx2670  power 59E+1  0.5 -> 24  Inexact Rounded
-pwsx2671  power 59E+2  0.5 -> 77  Inexact Rounded
-pwsx2672  power 59E+3  0.5 -> 2.4E+2  Inexact Rounded
-pwsx2673  power 0.60  0.5 -> 0.77  Inexact Rounded
-pwsx2674  power 0.060  0.5 -> 0.24  Inexact Rounded
-pwsx2675  power 60.0E-1  0.5 -> 2.4  Inexact Rounded
-pwsx2676  power 60.00E-2  0.5 -> 0.77  Inexact Rounded
-pwsx2677  power 60E-3  0.5 -> 0.24  Inexact Rounded
-pwsx2678  power 60E+1  0.5 -> 24  Inexact Rounded
-pwsx2679  power 60E+2  0.5 -> 77  Inexact Rounded
-pwsx2680  power 60E+3  0.5 -> 2.4E+2  Inexact Rounded
-pwsx2681  power 0.61  0.5 -> 0.78  Inexact Rounded
-pwsx2682  power 0.061  0.5 -> 0.25  Inexact Rounded
-pwsx2683  power 61.0E-1  0.5 -> 2.5  Inexact Rounded
-pwsx2684  power 61.00E-2  0.5 -> 0.78  Inexact Rounded
-pwsx2685  power 61E-3  0.5 -> 0.25  Inexact Rounded
-pwsx2686  power 61E+1  0.5 -> 25  Inexact Rounded
-pwsx2687  power 61E+2  0.5 -> 78  Inexact Rounded
-pwsx2688  power 61E+3  0.5 -> 2.5E+2  Inexact Rounded
-pwsx2689  power 0.62  0.5 -> 0.79  Inexact Rounded
-pwsx2690  power 0.062  0.5 -> 0.25  Inexact Rounded
-pwsx2691  power 62.0E-1  0.5 -> 2.5  Inexact Rounded
-pwsx2692  power 62.00E-2  0.5 -> 0.79  Inexact Rounded
-pwsx2693  power 62E-3  0.5 -> 0.25  Inexact Rounded
-pwsx2694  power 62E+1  0.5 -> 25  Inexact Rounded
-pwsx2695  power 62E+2  0.5 -> 79  Inexact Rounded
-pwsx2696  power 62E+3  0.5 -> 2.5E+2  Inexact Rounded
-pwsx2697  power 0.63  0.5 -> 0.79  Inexact Rounded
-pwsx2698  power 0.063  0.5 -> 0.25  Inexact Rounded
-pwsx2699  power 63.0E-1  0.5 -> 2.5  Inexact Rounded
-pwsx2700  power 63.00E-2  0.5 -> 0.79  Inexact Rounded
-pwsx2701  power 63E-3  0.5 -> 0.25  Inexact Rounded
-pwsx2702  power 63E+1  0.5 -> 25  Inexact Rounded
-pwsx2703  power 63E+2  0.5 -> 79  Inexact Rounded
-pwsx2704  power 63E+3  0.5 -> 2.5E+2  Inexact Rounded
-pwsx2705  power 0.64  0.5 -> 0.80 Inexact Rounded
-pwsx2706  power 0.064  0.5 -> 0.25  Inexact Rounded
-pwsx2707  power 64.0E-1  0.5 -> 2.5  Inexact Rounded
-pwsx2708  power 64.00E-2  0.5 -> 0.80 Inexact Rounded
-pwsx2709  power 64E-3  0.5 -> 0.25  Inexact Rounded
-pwsx2710  power 64E+1  0.5 -> 25  Inexact Rounded
-pwsx2711  power 64E+2  0.5 -> 80 Inexact Rounded
-pwsx2712  power 64E+3  0.5 -> 2.5E+2  Inexact Rounded
-pwsx2713  power 0.65  0.5 -> 0.81  Inexact Rounded
-pwsx2714  power 0.065  0.5 -> 0.25  Inexact Rounded
-pwsx2715  power 65.0E-1  0.5 -> 2.5  Inexact Rounded
-pwsx2716  power 65.00E-2  0.5 -> 0.81  Inexact Rounded
-pwsx2717  power 65E-3  0.5 -> 0.25  Inexact Rounded
-pwsx2718  power 65E+1  0.5 -> 25  Inexact Rounded
-pwsx2719  power 65E+2  0.5 -> 81  Inexact Rounded
-pwsx2720  power 65E+3  0.5 -> 2.5E+2  Inexact Rounded
-pwsx2721  power 0.66  0.5 -> 0.81  Inexact Rounded
-pwsx2722  power 0.066  0.5 -> 0.26  Inexact Rounded
-pwsx2723  power 66.0E-1  0.5 -> 2.6  Inexact Rounded
-pwsx2724  power 66.00E-2  0.5 -> 0.81  Inexact Rounded
-pwsx2725  power 66E-3  0.5 -> 0.26  Inexact Rounded
-pwsx2726  power 66E+1  0.5 -> 26  Inexact Rounded
-pwsx2727  power 66E+2  0.5 -> 81  Inexact Rounded
-pwsx2728  power 66E+3  0.5 -> 2.6E+2  Inexact Rounded
-pwsx2729  power 0.67  0.5 -> 0.82  Inexact Rounded
-pwsx2730  power 0.067  0.5 -> 0.26  Inexact Rounded
-pwsx2731  power 67.0E-1  0.5 -> 2.6  Inexact Rounded
-pwsx2732  power 67.00E-2  0.5 -> 0.82  Inexact Rounded
-pwsx2733  power 67E-3  0.5 -> 0.26  Inexact Rounded
-pwsx2734  power 67E+1  0.5 -> 26  Inexact Rounded
-pwsx2735  power 67E+2  0.5 -> 82  Inexact Rounded
-pwsx2736  power 67E+3  0.5 -> 2.6E+2  Inexact Rounded
-pwsx2737  power 0.68  0.5 -> 0.82  Inexact Rounded
-pwsx2738  power 0.068  0.5 -> 0.26  Inexact Rounded
-pwsx2739  power 68.0E-1  0.5 -> 2.6  Inexact Rounded
-pwsx2740  power 68.00E-2  0.5 -> 0.82  Inexact Rounded
-pwsx2741  power 68E-3  0.5 -> 0.26  Inexact Rounded
-pwsx2742  power 68E+1  0.5 -> 26  Inexact Rounded
-pwsx2743  power 68E+2  0.5 -> 82  Inexact Rounded
-pwsx2744  power 68E+3  0.5 -> 2.6E+2  Inexact Rounded
-pwsx2745  power 0.69  0.5 -> 0.83  Inexact Rounded
-pwsx2746  power 0.069  0.5 -> 0.26  Inexact Rounded
-pwsx2747  power 69.0E-1  0.5 -> 2.6  Inexact Rounded
-pwsx2748  power 69.00E-2  0.5 -> 0.83  Inexact Rounded
-pwsx2749  power 69E-3  0.5 -> 0.26  Inexact Rounded
-pwsx2750  power 69E+1  0.5 -> 26  Inexact Rounded
-pwsx2751  power 69E+2  0.5 -> 83  Inexact Rounded
-pwsx2752  power 69E+3  0.5 -> 2.6E+2  Inexact Rounded
-pwsx2753  power 0.70  0.5 -> 0.84  Inexact Rounded
-pwsx2754  power 0.070  0.5 -> 0.26  Inexact Rounded
-pwsx2755  power 70.0E-1  0.5 -> 2.6  Inexact Rounded
-pwsx2756  power 70.00E-2  0.5 -> 0.84  Inexact Rounded
-pwsx2757  power 70E-3  0.5 -> 0.26  Inexact Rounded
-pwsx2758  power 70E+1  0.5 -> 26  Inexact Rounded
-pwsx2759  power 70E+2  0.5 -> 84  Inexact Rounded
-pwsx2760  power 70E+3  0.5 -> 2.6E+2  Inexact Rounded
-pwsx2761  power 0.71  0.5 -> 0.84  Inexact Rounded
-pwsx2762  power 0.071  0.5 -> 0.27  Inexact Rounded
-pwsx2763  power 71.0E-1  0.5 -> 2.7  Inexact Rounded
-pwsx2764  power 71.00E-2  0.5 -> 0.84  Inexact Rounded
-pwsx2765  power 71E-3  0.5 -> 0.27  Inexact Rounded
-pwsx2766  power 71E+1  0.5 -> 27  Inexact Rounded
-pwsx2767  power 71E+2  0.5 -> 84  Inexact Rounded
-pwsx2768  power 71E+3  0.5 -> 2.7E+2  Inexact Rounded
-pwsx2769  power 0.72  0.5 -> 0.85  Inexact Rounded
-pwsx2770  power 0.072  0.5 -> 0.27  Inexact Rounded
-pwsx2771  power 72.0E-1  0.5 -> 2.7  Inexact Rounded
-pwsx2772  power 72.00E-2  0.5 -> 0.85  Inexact Rounded
-pwsx2773  power 72E-3  0.5 -> 0.27  Inexact Rounded
-pwsx2774  power 72E+1  0.5 -> 27  Inexact Rounded
-pwsx2775  power 72E+2  0.5 -> 85  Inexact Rounded
-pwsx2776  power 72E+3  0.5 -> 2.7E+2  Inexact Rounded
-pwsx2777  power 0.73  0.5 -> 0.85  Inexact Rounded
-pwsx2778  power 0.073  0.5 -> 0.27  Inexact Rounded
-pwsx2779  power 73.0E-1  0.5 -> 2.7  Inexact Rounded
-pwsx2780  power 73.00E-2  0.5 -> 0.85  Inexact Rounded
-pwsx2781  power 73E-3  0.5 -> 0.27  Inexact Rounded
-pwsx2782  power 73E+1  0.5 -> 27  Inexact Rounded
-pwsx2783  power 73E+2  0.5 -> 85  Inexact Rounded
-pwsx2784  power 73E+3  0.5 -> 2.7E+2  Inexact Rounded
-pwsx2785  power 0.74  0.5 -> 0.86  Inexact Rounded
-pwsx2786  power 0.074  0.5 -> 0.27  Inexact Rounded
-pwsx2787  power 74.0E-1  0.5 -> 2.7  Inexact Rounded
-pwsx2788  power 74.00E-2  0.5 -> 0.86  Inexact Rounded
-pwsx2789  power 74E-3  0.5 -> 0.27  Inexact Rounded
-pwsx2790  power 74E+1  0.5 -> 27  Inexact Rounded
-pwsx2791  power 74E+2  0.5 -> 86  Inexact Rounded
-pwsx2792  power 74E+3  0.5 -> 2.7E+2  Inexact Rounded
-pwsx2793  power 0.75  0.5 -> 0.87  Inexact Rounded
-pwsx2794  power 0.075  0.5 -> 0.27  Inexact Rounded
-pwsx2795  power 75.0E-1  0.5 -> 2.7  Inexact Rounded
-pwsx2796  power 75.00E-2  0.5 -> 0.87  Inexact Rounded
-pwsx2797  power 75E-3  0.5 -> 0.27  Inexact Rounded
-pwsx2798  power 75E+1  0.5 -> 27  Inexact Rounded
-pwsx2799  power 75E+2  0.5 -> 87  Inexact Rounded
-pwsx2800  power 75E+3  0.5 -> 2.7E+2  Inexact Rounded
-pwsx2801  power 0.76  0.5 -> 0.87  Inexact Rounded
-pwsx2802  power 0.076  0.5 -> 0.28  Inexact Rounded
-pwsx2803  power 76.0E-1  0.5 -> 2.8  Inexact Rounded
-pwsx2804  power 76.00E-2  0.5 -> 0.87  Inexact Rounded
-pwsx2805  power 76E-3  0.5 -> 0.28  Inexact Rounded
-pwsx2806  power 76E+1  0.5 -> 28  Inexact Rounded
-pwsx2807  power 76E+2  0.5 -> 87  Inexact Rounded
-pwsx2808  power 76E+3  0.5 -> 2.8E+2  Inexact Rounded
-pwsx2809  power 0.77  0.5 -> 0.88  Inexact Rounded
-pwsx2810  power 0.077  0.5 -> 0.28  Inexact Rounded
-pwsx2811  power 77.0E-1  0.5 -> 2.8  Inexact Rounded
-pwsx2812  power 77.00E-2  0.5 -> 0.88  Inexact Rounded
-pwsx2813  power 77E-3  0.5 -> 0.28  Inexact Rounded
-pwsx2814  power 77E+1  0.5 -> 28  Inexact Rounded
-pwsx2815  power 77E+2  0.5 -> 88  Inexact Rounded
-pwsx2816  power 77E+3  0.5 -> 2.8E+2  Inexact Rounded
-pwsx2817  power 0.78  0.5 -> 0.88  Inexact Rounded
-pwsx2818  power 0.078  0.5 -> 0.28  Inexact Rounded
-pwsx2819  power 78.0E-1  0.5 -> 2.8  Inexact Rounded
-pwsx2820  power 78.00E-2  0.5 -> 0.88  Inexact Rounded
-pwsx2821  power 78E-3  0.5 -> 0.28  Inexact Rounded
-pwsx2822  power 78E+1  0.5 -> 28  Inexact Rounded
-pwsx2823  power 78E+2  0.5 -> 88  Inexact Rounded
-pwsx2824  power 78E+3  0.5 -> 2.8E+2  Inexact Rounded
-pwsx2825  power 0.79  0.5 -> 0.89  Inexact Rounded
-pwsx2826  power 0.079  0.5 -> 0.28  Inexact Rounded
-pwsx2827  power 79.0E-1  0.5 -> 2.8  Inexact Rounded
-pwsx2828  power 79.00E-2  0.5 -> 0.89  Inexact Rounded
-pwsx2829  power 79E-3  0.5 -> 0.28  Inexact Rounded
-pwsx2830  power 79E+1  0.5 -> 28  Inexact Rounded
-pwsx2831  power 79E+2  0.5 -> 89  Inexact Rounded
-pwsx2832  power 79E+3  0.5 -> 2.8E+2  Inexact Rounded
-pwsx2833  power 0.80  0.5 -> 0.89  Inexact Rounded
-pwsx2834  power 0.080  0.5 -> 0.28  Inexact Rounded
-pwsx2835  power 80.0E-1  0.5 -> 2.8  Inexact Rounded
-pwsx2836  power 80.00E-2  0.5 -> 0.89  Inexact Rounded
-pwsx2837  power 80E-3  0.5 -> 0.28  Inexact Rounded
-pwsx2838  power 80E+1  0.5 -> 28  Inexact Rounded
-pwsx2839  power 80E+2  0.5 -> 89  Inexact Rounded
-pwsx2840  power 80E+3  0.5 -> 2.8E+2  Inexact Rounded
-pwsx2841  power 0.81  0.5 -> 0.90 Inexact Rounded
-pwsx2842  power 0.081  0.5 -> 0.28  Inexact Rounded
-pwsx2843  power 81.0E-1  0.5 -> 2.8  Inexact Rounded
-pwsx2844  power 81.00E-2  0.5 -> 0.90 Inexact Rounded
-pwsx2845  power 81E-3  0.5 -> 0.28  Inexact Rounded
-pwsx2846  power 81E+1  0.5 -> 28  Inexact Rounded
-pwsx2847  power 81E+2  0.5 -> 90 Inexact Rounded
-pwsx2848  power 81E+3  0.5 -> 2.8E+2  Inexact Rounded
-pwsx2849  power 0.82  0.5 -> 0.91  Inexact Rounded
-pwsx2850  power 0.082  0.5 -> 0.29  Inexact Rounded
-pwsx2851  power 82.0E-1  0.5 -> 2.9  Inexact Rounded
-pwsx2852  power 82.00E-2  0.5 -> 0.91  Inexact Rounded
-pwsx2853  power 82E-3  0.5 -> 0.29  Inexact Rounded
-pwsx2854  power 82E+1  0.5 -> 29  Inexact Rounded
-pwsx2855  power 82E+2  0.5 -> 91  Inexact Rounded
-pwsx2856  power 82E+3  0.5 -> 2.9E+2  Inexact Rounded
-pwsx2857  power 0.83  0.5 -> 0.91  Inexact Rounded
-pwsx2858  power 0.083  0.5 -> 0.29  Inexact Rounded
-pwsx2859  power 83.0E-1  0.5 -> 2.9  Inexact Rounded
-pwsx2860  power 83.00E-2  0.5 -> 0.91  Inexact Rounded
-pwsx2861  power 83E-3  0.5 -> 0.29  Inexact Rounded
-pwsx2862  power 83E+1  0.5 -> 29  Inexact Rounded
-pwsx2863  power 83E+2  0.5 -> 91  Inexact Rounded
-pwsx2864  power 83E+3  0.5 -> 2.9E+2  Inexact Rounded
-pwsx2865  power 0.84  0.5 -> 0.92  Inexact Rounded
-pwsx2866  power 0.084  0.5 -> 0.29  Inexact Rounded
-pwsx2867  power 84.0E-1  0.5 -> 2.9  Inexact Rounded
-pwsx2868  power 84.00E-2  0.5 -> 0.92  Inexact Rounded
-pwsx2869  power 84E-3  0.5 -> 0.29  Inexact Rounded
-pwsx2870  power 84E+1  0.5 -> 29  Inexact Rounded
-pwsx2871  power 84E+2  0.5 -> 92  Inexact Rounded
-pwsx2872  power 84E+3  0.5 -> 2.9E+2  Inexact Rounded
-pwsx2873  power 0.85  0.5 -> 0.92  Inexact Rounded
-pwsx2874  power 0.085  0.5 -> 0.29  Inexact Rounded
-pwsx2875  power 85.0E-1  0.5 -> 2.9  Inexact Rounded
-pwsx2876  power 85.00E-2  0.5 -> 0.92  Inexact Rounded
-pwsx2877  power 85E-3  0.5 -> 0.29  Inexact Rounded
-pwsx2878  power 85E+1  0.5 -> 29  Inexact Rounded
-pwsx2879  power 85E+2  0.5 -> 92  Inexact Rounded
-pwsx2880  power 85E+3  0.5 -> 2.9E+2  Inexact Rounded
-pwsx2881  power 0.86  0.5 -> 0.93  Inexact Rounded
-pwsx2882  power 0.086  0.5 -> 0.29  Inexact Rounded
-pwsx2883  power 86.0E-1  0.5 -> 2.9  Inexact Rounded
-pwsx2884  power 86.00E-2  0.5 -> 0.93  Inexact Rounded
-pwsx2885  power 86E-3  0.5 -> 0.29  Inexact Rounded
-pwsx2886  power 86E+1  0.5 -> 29  Inexact Rounded
-pwsx2887  power 86E+2  0.5 -> 93  Inexact Rounded
-pwsx2888  power 86E+3  0.5 -> 2.9E+2  Inexact Rounded
-pwsx2889  power 0.87  0.5 -> 0.93  Inexact Rounded
-pwsx2890  power 0.087  0.5 -> 0.29  Inexact Rounded
-pwsx2891  power 87.0E-1  0.5 -> 2.9  Inexact Rounded
-pwsx2892  power 87.00E-2  0.5 -> 0.93  Inexact Rounded
-pwsx2893  power 87E-3  0.5 -> 0.29  Inexact Rounded
-pwsx2894  power 87E+1  0.5 -> 29  Inexact Rounded
-pwsx2895  power 87E+2  0.5 -> 93  Inexact Rounded
-pwsx2896  power 87E+3  0.5 -> 2.9E+2  Inexact Rounded
-pwsx2897  power 0.88  0.5 -> 0.94  Inexact Rounded
-pwsx2898  power 0.088  0.5 -> 0.30  Inexact Rounded
-pwsx2899  power 88.0E-1  0.5 -> 3.0  Inexact Rounded
-pwsx2900  power 88.00E-2  0.5 -> 0.94  Inexact Rounded
-pwsx2901  power 88E-3  0.5 -> 0.30  Inexact Rounded
-pwsx2902  power 88E+1  0.5 -> 30  Inexact Rounded
-pwsx2903  power 88E+2  0.5 -> 94  Inexact Rounded
-pwsx2904  power 88E+3  0.5 -> 3.0E+2  Inexact Rounded
-pwsx2905  power 0.89  0.5 -> 0.94  Inexact Rounded
-pwsx2906  power 0.089  0.5 -> 0.30  Inexact Rounded
-pwsx2907  power 89.0E-1  0.5 -> 3.0  Inexact Rounded
-pwsx2908  power 89.00E-2  0.5 -> 0.94  Inexact Rounded
-pwsx2909  power 89E-3  0.5 -> 0.30  Inexact Rounded
-pwsx2910  power 89E+1  0.5 -> 30  Inexact Rounded
-pwsx2911  power 89E+2  0.5 -> 94  Inexact Rounded
-pwsx2912  power 89E+3  0.5 -> 3.0E+2  Inexact Rounded
-pwsx2913  power 0.90  0.5 -> 0.95  Inexact Rounded
-pwsx2914  power 0.090  0.5 -> 0.30 Inexact Rounded
-pwsx2915  power 90.0E-1  0.5 -> 3.0 Inexact Rounded
-pwsx2916  power 90.00E-2  0.5 -> 0.95  Inexact Rounded
-pwsx2917  power 90E-3  0.5 -> 0.30 Inexact Rounded
-pwsx2918  power 90E+1  0.5 -> 30 Inexact Rounded
-pwsx2919  power 90E+2  0.5 -> 95  Inexact Rounded
-pwsx2920  power 90E+3  0.5 -> 3.0E+2 Inexact Rounded
-pwsx2921  power 0.91  0.5 -> 0.95  Inexact Rounded
-pwsx2922  power 0.091  0.5 -> 0.30  Inexact Rounded
-pwsx2923  power 91.0E-1  0.5 -> 3.0  Inexact Rounded
-pwsx2924  power 91.00E-2  0.5 -> 0.95  Inexact Rounded
-pwsx2925  power 91E-3  0.5 -> 0.30  Inexact Rounded
-pwsx2926  power 91E+1  0.5 -> 30  Inexact Rounded
-pwsx2927  power 91E+2  0.5 -> 95  Inexact Rounded
-pwsx2928  power 91E+3  0.5 -> 3.0E+2  Inexact Rounded
-pwsx2929  power 0.92  0.5 -> 0.96  Inexact Rounded
-pwsx2930  power 0.092  0.5 -> 0.30  Inexact Rounded
-pwsx2931  power 92.0E-1  0.5 -> 3.0  Inexact Rounded
-pwsx2932  power 92.00E-2  0.5 -> 0.96  Inexact Rounded
-pwsx2933  power 92E-3  0.5 -> 0.30  Inexact Rounded
-pwsx2934  power 92E+1  0.5 -> 30  Inexact Rounded
-pwsx2935  power 92E+2  0.5 -> 96  Inexact Rounded
-pwsx2936  power 92E+3  0.5 -> 3.0E+2  Inexact Rounded
-pwsx2937  power 0.93  0.5 -> 0.96  Inexact Rounded
-pwsx2938  power 0.093  0.5 -> 0.30  Inexact Rounded
-pwsx2939  power 93.0E-1  0.5 -> 3.0  Inexact Rounded
-pwsx2940  power 93.00E-2  0.5 -> 0.96  Inexact Rounded
-pwsx2941  power 93E-3  0.5 -> 0.30  Inexact Rounded
-pwsx2942  power 93E+1  0.5 -> 30  Inexact Rounded
-pwsx2943  power 93E+2  0.5 -> 96  Inexact Rounded
-pwsx2944  power 93E+3  0.5 -> 3.0E+2  Inexact Rounded
-pwsx2945  power 0.94  0.5 -> 0.97  Inexact Rounded
-pwsx2946  power 0.094  0.5 -> 0.31  Inexact Rounded
-pwsx2947  power 94.0E-1  0.5 -> 3.1  Inexact Rounded
-pwsx2948  power 94.00E-2  0.5 -> 0.97  Inexact Rounded
-pwsx2949  power 94E-3  0.5 -> 0.31  Inexact Rounded
-pwsx2950  power 94E+1  0.5 -> 31  Inexact Rounded
-pwsx2951  power 94E+2  0.5 -> 97  Inexact Rounded
-pwsx2952  power 94E+3  0.5 -> 3.1E+2  Inexact Rounded
-pwsx2953  power 0.95  0.5 -> 0.97  Inexact Rounded
-pwsx2954  power 0.095  0.5 -> 0.31  Inexact Rounded
-pwsx2955  power 95.0E-1  0.5 -> 3.1  Inexact Rounded
-pwsx2956  power 95.00E-2  0.5 -> 0.97  Inexact Rounded
-pwsx2957  power 95E-3  0.5 -> 0.31  Inexact Rounded
-pwsx2958  power 95E+1  0.5 -> 31  Inexact Rounded
-pwsx2959  power 95E+2  0.5 -> 97  Inexact Rounded
-pwsx2960  power 95E+3  0.5 -> 3.1E+2  Inexact Rounded
-pwsx2961  power 0.96  0.5 -> 0.98  Inexact Rounded
-pwsx2962  power 0.096  0.5 -> 0.31  Inexact Rounded
-pwsx2963  power 96.0E-1  0.5 -> 3.1  Inexact Rounded
-pwsx2964  power 96.00E-2  0.5 -> 0.98  Inexact Rounded
-pwsx2965  power 96E-3  0.5 -> 0.31  Inexact Rounded
-pwsx2966  power 96E+1  0.5 -> 31  Inexact Rounded
-pwsx2967  power 96E+2  0.5 -> 98  Inexact Rounded
-pwsx2968  power 96E+3  0.5 -> 3.1E+2  Inexact Rounded
-pwsx2969  power 0.97  0.5 -> 0.98  Inexact Rounded
-pwsx2970  power 0.097  0.5 -> 0.31  Inexact Rounded
-pwsx2971  power 97.0E-1  0.5 -> 3.1  Inexact Rounded
-pwsx2972  power 97.00E-2  0.5 -> 0.98  Inexact Rounded
-pwsx2973  power 97E-3  0.5 -> 0.31  Inexact Rounded
-pwsx2974  power 97E+1  0.5 -> 31  Inexact Rounded
-pwsx2975  power 97E+2  0.5 -> 98  Inexact Rounded
-pwsx2976  power 97E+3  0.5 -> 3.1E+2  Inexact Rounded
-pwsx2977  power 0.98  0.5 -> 0.99  Inexact Rounded
-pwsx2978  power 0.098  0.5 -> 0.31  Inexact Rounded
-pwsx2979  power 98.0E-1  0.5 -> 3.1  Inexact Rounded
-pwsx2980  power 98.00E-2  0.5 -> 0.99  Inexact Rounded
-pwsx2981  power 98E-3  0.5 -> 0.31  Inexact Rounded
-pwsx2982  power 98E+1  0.5 -> 31  Inexact Rounded
-pwsx2983  power 98E+2  0.5 -> 99  Inexact Rounded
-pwsx2984  power 98E+3  0.5 -> 3.1E+2  Inexact Rounded
-pwsx2985  power 0.99  0.5 -> 0.99  Inexact Rounded
-pwsx2986  power 0.099  0.5 -> 0.31  Inexact Rounded
-pwsx2987  power 99.0E-1  0.5 -> 3.1  Inexact Rounded
-pwsx2988  power 99.00E-2  0.5 -> 0.99  Inexact Rounded
-pwsx2989  power 99E-3  0.5 -> 0.31  Inexact Rounded
-pwsx2990  power 99E+1  0.5 -> 31  Inexact Rounded
-pwsx2991  power 99E+2  0.5 -> 99  Inexact Rounded
-pwsx2992  power 99E+3  0.5 -> 3.1E+2  Inexact Rounded
-
--- Precision 3 squareroot tests [exhaustive, f and f/10]
-rounding:    half_even
-maxExponent: 999
-minexponent: -999
-precision:   3
-pwsx3001  power 0.1  0.5 -> 0.316  Inexact Rounded
-pwsx3002  power 0.01  0.5 -> 0.100  Inexact Rounded
-pwsx3003  power 0.2  0.5 -> 0.447  Inexact Rounded
-pwsx3004  power 0.02  0.5 -> 0.141  Inexact Rounded
-pwsx3005  power 0.3  0.5 -> 0.548  Inexact Rounded
-pwsx3006  power 0.03  0.5 -> 0.173  Inexact Rounded
-pwsx3007  power 0.4  0.5 -> 0.632  Inexact Rounded
-pwsx3008  power 0.04  0.5 -> 0.200  Inexact Rounded
-pwsx3009  power 0.5  0.5 -> 0.707  Inexact Rounded
-pwsx3010  power 0.05  0.5 -> 0.224  Inexact Rounded
-pwsx3011  power 0.6  0.5 -> 0.775  Inexact Rounded
-pwsx3012  power 0.06  0.5 -> 0.245  Inexact Rounded
-pwsx3013  power 0.7  0.5 -> 0.837  Inexact Rounded
-pwsx3014  power 0.07  0.5 -> 0.265  Inexact Rounded
-pwsx3015  power 0.8  0.5 -> 0.894  Inexact Rounded
-pwsx3016  power 0.08  0.5 -> 0.283  Inexact Rounded
-pwsx3017  power 0.9  0.5 -> 0.949  Inexact Rounded
-pwsx3018  power 0.09  0.5 -> 0.300  Inexact Rounded
-pwsx3019  power 0.11  0.5 -> 0.332  Inexact Rounded
-pwsx3020  power 0.011  0.5 -> 0.105  Inexact Rounded
-pwsx3021  power 0.12  0.5 -> 0.346  Inexact Rounded
-pwsx3022  power 0.012  0.5 -> 0.110  Inexact Rounded
-pwsx3023  power 0.13  0.5 -> 0.361  Inexact Rounded
-pwsx3024  power 0.013  0.5 -> 0.114  Inexact Rounded
-pwsx3025  power 0.14  0.5 -> 0.374  Inexact Rounded
-pwsx3026  power 0.014  0.5 -> 0.118  Inexact Rounded
-pwsx3027  power 0.15  0.5 -> 0.387  Inexact Rounded
-pwsx3028  power 0.015  0.5 -> 0.122  Inexact Rounded
-pwsx3029  power 0.16  0.5 -> 0.400  Inexact Rounded
-pwsx3030  power 0.016  0.5 -> 0.126  Inexact Rounded
-pwsx3031  power 0.17  0.5 -> 0.412  Inexact Rounded
-pwsx3032  power 0.017  0.5 -> 0.130  Inexact Rounded
-pwsx3033  power 0.18  0.5 -> 0.424  Inexact Rounded
-pwsx3034  power 0.018  0.5 -> 0.134  Inexact Rounded
-pwsx3035  power 0.19  0.5 -> 0.436  Inexact Rounded
-pwsx3036  power 0.019  0.5 -> 0.138  Inexact Rounded
-pwsx3037  power 0.21  0.5 -> 0.458  Inexact Rounded
-pwsx3038  power 0.021  0.5 -> 0.145  Inexact Rounded
-pwsx3039  power 0.22  0.5 -> 0.469  Inexact Rounded
-pwsx3040  power 0.022  0.5 -> 0.148  Inexact Rounded
-pwsx3041  power 0.23  0.5 -> 0.480  Inexact Rounded
-pwsx3042  power 0.023  0.5 -> 0.152  Inexact Rounded
-pwsx3043  power 0.24  0.5 -> 0.490  Inexact Rounded
-pwsx3044  power 0.024  0.5 -> 0.155  Inexact Rounded
-pwsx3045  power 0.25  0.5 -> 0.500  Inexact Rounded
-pwsx3046  power 0.025  0.5 -> 0.158  Inexact Rounded
-pwsx3047  power 0.26  0.5 -> 0.510  Inexact Rounded
-pwsx3048  power 0.026  0.5 -> 0.161  Inexact Rounded
-pwsx3049  power 0.27  0.5 -> 0.520  Inexact Rounded
-pwsx3050  power 0.027  0.5 -> 0.164  Inexact Rounded
-pwsx3051  power 0.28  0.5 -> 0.529  Inexact Rounded
-pwsx3052  power 0.028  0.5 -> 0.167  Inexact Rounded
-pwsx3053  power 0.29  0.5 -> 0.539  Inexact Rounded
-pwsx3054  power 0.029  0.5 -> 0.170  Inexact Rounded
-pwsx3055  power 0.31  0.5 -> 0.557  Inexact Rounded
-pwsx3056  power 0.031  0.5 -> 0.176  Inexact Rounded
-pwsx3057  power 0.32  0.5 -> 0.566  Inexact Rounded
-pwsx3058  power 0.032  0.5 -> 0.179  Inexact Rounded
-pwsx3059  power 0.33  0.5 -> 0.574  Inexact Rounded
-pwsx3060  power 0.033  0.5 -> 0.182  Inexact Rounded
-pwsx3061  power 0.34  0.5 -> 0.583  Inexact Rounded
-pwsx3062  power 0.034  0.5 -> 0.184  Inexact Rounded
-pwsx3063  power 0.35  0.5 -> 0.592  Inexact Rounded
-pwsx3064  power 0.035  0.5 -> 0.187  Inexact Rounded
-pwsx3065  power 0.36  0.5 -> 0.600  Inexact Rounded
-pwsx3066  power 0.036  0.5 -> 0.190  Inexact Rounded
-pwsx3067  power 0.37  0.5 -> 0.608  Inexact Rounded
-pwsx3068  power 0.037  0.5 -> 0.192  Inexact Rounded
-pwsx3069  power 0.38  0.5 -> 0.616  Inexact Rounded
-pwsx3070  power 0.038  0.5 -> 0.195  Inexact Rounded
-pwsx3071  power 0.39  0.5 -> 0.624  Inexact Rounded
-pwsx3072  power 0.039  0.5 -> 0.197  Inexact Rounded
-pwsx3073  power 0.41  0.5 -> 0.640  Inexact Rounded
-pwsx3074  power 0.041  0.5 -> 0.202  Inexact Rounded
-pwsx3075  power 0.42  0.5 -> 0.648  Inexact Rounded
-pwsx3076  power 0.042  0.5 -> 0.205  Inexact Rounded
-pwsx3077  power 0.43  0.5 -> 0.656  Inexact Rounded
-pwsx3078  power 0.043  0.5 -> 0.207  Inexact Rounded
-pwsx3079  power 0.44  0.5 -> 0.663  Inexact Rounded
-pwsx3080  power 0.044  0.5 -> 0.210  Inexact Rounded
-pwsx3081  power 0.45  0.5 -> 0.671  Inexact Rounded
-pwsx3082  power 0.045  0.5 -> 0.212  Inexact Rounded
-pwsx3083  power 0.46  0.5 -> 0.678  Inexact Rounded
-pwsx3084  power 0.046  0.5 -> 0.214  Inexact Rounded
-pwsx3085  power 0.47  0.5 -> 0.686  Inexact Rounded
-pwsx3086  power 0.047  0.5 -> 0.217  Inexact Rounded
-pwsx3087  power 0.48  0.5 -> 0.693  Inexact Rounded
-pwsx3088  power 0.048  0.5 -> 0.219  Inexact Rounded
-pwsx3089  power 0.49  0.5 -> 0.700  Inexact Rounded
-pwsx3090  power 0.049  0.5 -> 0.221  Inexact Rounded
-pwsx3091  power 0.51  0.5 -> 0.714  Inexact Rounded
-pwsx3092  power 0.051  0.5 -> 0.226  Inexact Rounded
-pwsx3093  power 0.52  0.5 -> 0.721  Inexact Rounded
-pwsx3094  power 0.052  0.5 -> 0.228  Inexact Rounded
-pwsx3095  power 0.53  0.5 -> 0.728  Inexact Rounded
-pwsx3096  power 0.053  0.5 -> 0.230  Inexact Rounded
-pwsx3097  power 0.54  0.5 -> 0.735  Inexact Rounded
-pwsx3098  power 0.054  0.5 -> 0.232  Inexact Rounded
-pwsx3099  power 0.55  0.5 -> 0.742  Inexact Rounded
-pwsx3100  power 0.055  0.5 -> 0.235  Inexact Rounded
-pwsx3101  power 0.56  0.5 -> 0.748  Inexact Rounded
-pwsx3102  power 0.056  0.5 -> 0.237  Inexact Rounded
-pwsx3103  power 0.57  0.5 -> 0.755  Inexact Rounded
-pwsx3104  power 0.057  0.5 -> 0.239  Inexact Rounded
-pwsx3105  power 0.58  0.5 -> 0.762  Inexact Rounded
-pwsx3106  power 0.058  0.5 -> 0.241  Inexact Rounded
-pwsx3107  power 0.59  0.5 -> 0.768  Inexact Rounded
-pwsx3108  power 0.059  0.5 -> 0.243  Inexact Rounded
-pwsx3109  power 0.61  0.5 -> 0.781  Inexact Rounded
-pwsx3110  power 0.061  0.5 -> 0.247  Inexact Rounded
-pwsx3111  power 0.62  0.5 -> 0.787  Inexact Rounded
-pwsx3112  power 0.062  0.5 -> 0.249  Inexact Rounded
-pwsx3113  power 0.63  0.5 -> 0.794  Inexact Rounded
-pwsx3114  power 0.063  0.5 -> 0.251  Inexact Rounded
-pwsx3115  power 0.64  0.5 -> 0.800  Inexact Rounded
-pwsx3116  power 0.064  0.5 -> 0.253  Inexact Rounded
-pwsx3117  power 0.65  0.5 -> 0.806  Inexact Rounded
-pwsx3118  power 0.065  0.5 -> 0.255  Inexact Rounded
-pwsx3119  power 0.66  0.5 -> 0.812  Inexact Rounded
-pwsx3120  power 0.066  0.5 -> 0.257  Inexact Rounded
-pwsx3121  power 0.67  0.5 -> 0.819  Inexact Rounded
-pwsx3122  power 0.067  0.5 -> 0.259  Inexact Rounded
-pwsx3123  power 0.68  0.5 -> 0.825  Inexact Rounded
-pwsx3124  power 0.068  0.5 -> 0.261  Inexact Rounded
-pwsx3125  power 0.69  0.5 -> 0.831  Inexact Rounded
-pwsx3126  power 0.069  0.5 -> 0.263  Inexact Rounded
-pwsx3127  power 0.71  0.5 -> 0.843  Inexact Rounded
-pwsx3128  power 0.071  0.5 -> 0.266  Inexact Rounded
-pwsx3129  power 0.72  0.5 -> 0.849  Inexact Rounded
-pwsx3130  power 0.072  0.5 -> 0.268  Inexact Rounded
-pwsx3131  power 0.73  0.5 -> 0.854  Inexact Rounded
-pwsx3132  power 0.073  0.5 -> 0.270  Inexact Rounded
-pwsx3133  power 0.74  0.5 -> 0.860  Inexact Rounded
-pwsx3134  power 0.074  0.5 -> 0.272  Inexact Rounded
-pwsx3135  power 0.75  0.5 -> 0.866  Inexact Rounded
-pwsx3136  power 0.075  0.5 -> 0.274  Inexact Rounded
-pwsx3137  power 0.76  0.5 -> 0.872  Inexact Rounded
-pwsx3138  power 0.076  0.5 -> 0.276  Inexact Rounded
-pwsx3139  power 0.77  0.5 -> 0.877  Inexact Rounded
-pwsx3140  power 0.077  0.5 -> 0.277  Inexact Rounded
-pwsx3141  power 0.78  0.5 -> 0.883  Inexact Rounded
-pwsx3142  power 0.078  0.5 -> 0.279  Inexact Rounded
-pwsx3143  power 0.79  0.5 -> 0.889  Inexact Rounded
-pwsx3144  power 0.079  0.5 -> 0.281  Inexact Rounded
-pwsx3145  power 0.81  0.5 -> 0.900  Inexact Rounded
-pwsx3146  power 0.081  0.5 -> 0.285  Inexact Rounded
-pwsx3147  power 0.82  0.5 -> 0.906  Inexact Rounded
-pwsx3148  power 0.082  0.5 -> 0.286  Inexact Rounded
-pwsx3149  power 0.83  0.5 -> 0.911  Inexact Rounded
-pwsx3150  power 0.083  0.5 -> 0.288  Inexact Rounded
-pwsx3151  power 0.84  0.5 -> 0.917  Inexact Rounded
-pwsx3152  power 0.084  0.5 -> 0.290  Inexact Rounded
-pwsx3153  power 0.85  0.5 -> 0.922  Inexact Rounded
-pwsx3154  power 0.085  0.5 -> 0.292  Inexact Rounded
-pwsx3155  power 0.86  0.5 -> 0.927  Inexact Rounded
-pwsx3156  power 0.086  0.5 -> 0.293  Inexact Rounded
-pwsx3157  power 0.87  0.5 -> 0.933  Inexact Rounded
-pwsx3158  power 0.087  0.5 -> 0.295  Inexact Rounded
-pwsx3159  power 0.88  0.5 -> 0.938  Inexact Rounded
-pwsx3160  power 0.088  0.5 -> 0.297  Inexact Rounded
-pwsx3161  power 0.89  0.5 -> 0.943  Inexact Rounded
-pwsx3162  power 0.089  0.5 -> 0.298  Inexact Rounded
-pwsx3163  power 0.91  0.5 -> 0.954  Inexact Rounded
-pwsx3164  power 0.091  0.5 -> 0.302  Inexact Rounded
-pwsx3165  power 0.92  0.5 -> 0.959  Inexact Rounded
-pwsx3166  power 0.092  0.5 -> 0.303  Inexact Rounded
-pwsx3167  power 0.93  0.5 -> 0.964  Inexact Rounded
-pwsx3168  power 0.093  0.5 -> 0.305  Inexact Rounded
-pwsx3169  power 0.94  0.5 -> 0.970  Inexact Rounded
-pwsx3170  power 0.094  0.5 -> 0.307  Inexact Rounded
-pwsx3171  power 0.95  0.5 -> 0.975  Inexact Rounded
-pwsx3172  power 0.095  0.5 -> 0.308  Inexact Rounded
-pwsx3173  power 0.96  0.5 -> 0.980  Inexact Rounded
-pwsx3174  power 0.096  0.5 -> 0.310  Inexact Rounded
-pwsx3175  power 0.97  0.5 -> 0.985  Inexact Rounded
-pwsx3176  power 0.097  0.5 -> 0.311  Inexact Rounded
-pwsx3177  power 0.98  0.5 -> 0.990  Inexact Rounded
-pwsx3178  power 0.098  0.5 -> 0.313  Inexact Rounded
-pwsx3179  power 0.99  0.5 -> 0.995  Inexact Rounded
-pwsx3180  power 0.099  0.5 -> 0.315  Inexact Rounded
-pwsx3181  power 0.101  0.5 -> 0.318  Inexact Rounded
-pwsx3182  power 0.0101  0.5 -> 0.100  Inexact Rounded
-pwsx3183  power 0.102  0.5 -> 0.319  Inexact Rounded
-pwsx3184  power 0.0102  0.5 -> 0.101  Inexact Rounded
-pwsx3185  power 0.103  0.5 -> 0.321  Inexact Rounded
-pwsx3186  power 0.0103  0.5 -> 0.101  Inexact Rounded
-pwsx3187  power 0.104  0.5 -> 0.322  Inexact Rounded
-pwsx3188  power 0.0104  0.5 -> 0.102  Inexact Rounded
-pwsx3189  power 0.105  0.5 -> 0.324  Inexact Rounded
-pwsx3190  power 0.0105  0.5 -> 0.102  Inexact Rounded
-pwsx3191  power 0.106  0.5 -> 0.326  Inexact Rounded
-pwsx3192  power 0.0106  0.5 -> 0.103  Inexact Rounded
-pwsx3193  power 0.107  0.5 -> 0.327  Inexact Rounded
-pwsx3194  power 0.0107  0.5 -> 0.103  Inexact Rounded
-pwsx3195  power 0.108  0.5 -> 0.329  Inexact Rounded
-pwsx3196  power 0.0108  0.5 -> 0.104  Inexact Rounded
-pwsx3197  power 0.109  0.5 -> 0.330  Inexact Rounded
-pwsx3198  power 0.0109  0.5 -> 0.104  Inexact Rounded
-pwsx3199  power 0.111  0.5 -> 0.333  Inexact Rounded
-pwsx3200  power 0.0111  0.5 -> 0.105  Inexact Rounded
-pwsx3201  power 0.112  0.5 -> 0.335  Inexact Rounded
-pwsx3202  power 0.0112  0.5 -> 0.106  Inexact Rounded
-pwsx3203  power 0.113  0.5 -> 0.336  Inexact Rounded
-pwsx3204  power 0.0113  0.5 -> 0.106  Inexact Rounded
-pwsx3205  power 0.114  0.5 -> 0.338  Inexact Rounded
-pwsx3206  power 0.0114  0.5 -> 0.107  Inexact Rounded
-pwsx3207  power 0.115  0.5 -> 0.339  Inexact Rounded
-pwsx3208  power 0.0115  0.5 -> 0.107  Inexact Rounded
-pwsx3209  power 0.116  0.5 -> 0.341  Inexact Rounded
-pwsx3210  power 0.0116  0.5 -> 0.108  Inexact Rounded
-pwsx3211  power 0.117  0.5 -> 0.342  Inexact Rounded
-pwsx3212  power 0.0117  0.5 -> 0.108  Inexact Rounded
-pwsx3213  power 0.118  0.5 -> 0.344  Inexact Rounded
-pwsx3214  power 0.0118  0.5 -> 0.109  Inexact Rounded
-pwsx3215  power 0.119  0.5 -> 0.345  Inexact Rounded
-pwsx3216  power 0.0119  0.5 -> 0.109  Inexact Rounded
-pwsx3217  power 0.121  0.5 -> 0.348  Inexact Rounded
-pwsx3218  power 0.0121  0.5 -> 0.110  Inexact Rounded
-pwsx3219  power 0.122  0.5 -> 0.349  Inexact Rounded
-pwsx3220  power 0.0122  0.5 -> 0.110  Inexact Rounded
-pwsx3221  power 0.123  0.5 -> 0.351  Inexact Rounded
-pwsx3222  power 0.0123  0.5 -> 0.111  Inexact Rounded
-pwsx3223  power 0.124  0.5 -> 0.352  Inexact Rounded
-pwsx3224  power 0.0124  0.5 -> 0.111  Inexact Rounded
-pwsx3225  power 0.125  0.5 -> 0.354  Inexact Rounded
-pwsx3226  power 0.0125  0.5 -> 0.112  Inexact Rounded
-pwsx3227  power 0.126  0.5 -> 0.355  Inexact Rounded
-pwsx3228  power 0.0126  0.5 -> 0.112  Inexact Rounded
-pwsx3229  power 0.127  0.5 -> 0.356  Inexact Rounded
-pwsx3230  power 0.0127  0.5 -> 0.113  Inexact Rounded
-pwsx3231  power 0.128  0.5 -> 0.358  Inexact Rounded
-pwsx3232  power 0.0128  0.5 -> 0.113  Inexact Rounded
-pwsx3233  power 0.129  0.5 -> 0.359  Inexact Rounded
-pwsx3234  power 0.0129  0.5 -> 0.114  Inexact Rounded
-pwsx3235  power 0.131  0.5 -> 0.362  Inexact Rounded
-pwsx3236  power 0.0131  0.5 -> 0.114  Inexact Rounded
-pwsx3237  power 0.132  0.5 -> 0.363  Inexact Rounded
-pwsx3238  power 0.0132  0.5 -> 0.115  Inexact Rounded
-pwsx3239  power 0.133  0.5 -> 0.365  Inexact Rounded
-pwsx3240  power 0.0133  0.5 -> 0.115  Inexact Rounded
-pwsx3241  power 0.134  0.5 -> 0.366  Inexact Rounded
-pwsx3242  power 0.0134  0.5 -> 0.116  Inexact Rounded
-pwsx3243  power 0.135  0.5 -> 0.367  Inexact Rounded
-pwsx3244  power 0.0135  0.5 -> 0.116  Inexact Rounded
-pwsx3245  power 0.136  0.5 -> 0.369  Inexact Rounded
-pwsx3246  power 0.0136  0.5 -> 0.117  Inexact Rounded
-pwsx3247  power 0.137  0.5 -> 0.370  Inexact Rounded
-pwsx3248  power 0.0137  0.5 -> 0.117  Inexact Rounded
-pwsx3249  power 0.138  0.5 -> 0.371  Inexact Rounded
-pwsx3250  power 0.0138  0.5 -> 0.117  Inexact Rounded
-pwsx3251  power 0.139  0.5 -> 0.373  Inexact Rounded
-pwsx3252  power 0.0139  0.5 -> 0.118  Inexact Rounded
-pwsx3253  power 0.141  0.5 -> 0.375  Inexact Rounded
-pwsx3254  power 0.0141  0.5 -> 0.119  Inexact Rounded
-pwsx3255  power 0.142  0.5 -> 0.377  Inexact Rounded
-pwsx3256  power 0.0142  0.5 -> 0.119  Inexact Rounded
-pwsx3257  power 0.143  0.5 -> 0.378  Inexact Rounded
-pwsx3258  power 0.0143  0.5 -> 0.120  Inexact Rounded
-pwsx3259  power 0.144  0.5 -> 0.379  Inexact Rounded
-pwsx3260  power 0.0144  0.5 -> 0.120  Inexact Rounded
-pwsx3261  power 0.145  0.5 -> 0.381  Inexact Rounded
-pwsx3262  power 0.0145  0.5 -> 0.120  Inexact Rounded
-pwsx3263  power 0.146  0.5 -> 0.382  Inexact Rounded
-pwsx3264  power 0.0146  0.5 -> 0.121  Inexact Rounded
-pwsx3265  power 0.147  0.5 -> 0.383  Inexact Rounded
-pwsx3266  power 0.0147  0.5 -> 0.121  Inexact Rounded
-pwsx3267  power 0.148  0.5 -> 0.385  Inexact Rounded
-pwsx3268  power 0.0148  0.5 -> 0.122  Inexact Rounded
-pwsx3269  power 0.149  0.5 -> 0.386  Inexact Rounded
-pwsx3270  power 0.0149  0.5 -> 0.122  Inexact Rounded
-pwsx3271  power 0.151  0.5 -> 0.389  Inexact Rounded
-pwsx3272  power 0.0151  0.5 -> 0.123  Inexact Rounded
-pwsx3273  power 0.152  0.5 -> 0.390  Inexact Rounded
-pwsx3274  power 0.0152  0.5 -> 0.123  Inexact Rounded
-pwsx3275  power 0.153  0.5 -> 0.391  Inexact Rounded
-pwsx3276  power 0.0153  0.5 -> 0.124  Inexact Rounded
-pwsx3277  power 0.154  0.5 -> 0.392  Inexact Rounded
-pwsx3278  power 0.0154  0.5 -> 0.124  Inexact Rounded
-pwsx3279  power 0.155  0.5 -> 0.394  Inexact Rounded
-pwsx3280  power 0.0155  0.5 -> 0.124  Inexact Rounded
-pwsx3281  power 0.156  0.5 -> 0.395  Inexact Rounded
-pwsx3282  power 0.0156  0.5 -> 0.125  Inexact Rounded
-pwsx3283  power 0.157  0.5 -> 0.396  Inexact Rounded
-pwsx3284  power 0.0157  0.5 -> 0.125  Inexact Rounded
-pwsx3285  power 0.158  0.5 -> 0.397  Inexact Rounded
-pwsx3286  power 0.0158  0.5 -> 0.126  Inexact Rounded
-pwsx3287  power 0.159  0.5 -> 0.399  Inexact Rounded
-pwsx3288  power 0.0159  0.5 -> 0.126  Inexact Rounded
-pwsx3289  power 0.161  0.5 -> 0.401  Inexact Rounded
-pwsx3290  power 0.0161  0.5 -> 0.127  Inexact Rounded
-pwsx3291  power 0.162  0.5 -> 0.402  Inexact Rounded
-pwsx3292  power 0.0162  0.5 -> 0.127  Inexact Rounded
-pwsx3293  power 0.163  0.5 -> 0.404  Inexact Rounded
-pwsx3294  power 0.0163  0.5 -> 0.128  Inexact Rounded
-pwsx3295  power 0.164  0.5 -> 0.405  Inexact Rounded
-pwsx3296  power 0.0164  0.5 -> 0.128  Inexact Rounded
-pwsx3297  power 0.165  0.5 -> 0.406  Inexact Rounded
-pwsx3298  power 0.0165  0.5 -> 0.128  Inexact Rounded
-pwsx3299  power 0.166  0.5 -> 0.407  Inexact Rounded
-pwsx3300  power 0.0166  0.5 -> 0.129  Inexact Rounded
-pwsx3301  power 0.167  0.5 -> 0.409  Inexact Rounded
-pwsx3302  power 0.0167  0.5 -> 0.129  Inexact Rounded
-pwsx3303  power 0.168  0.5 -> 0.410  Inexact Rounded
-pwsx3304  power 0.0168  0.5 -> 0.130  Inexact Rounded
-pwsx3305  power 0.169  0.5 -> 0.411  Inexact Rounded
-pwsx3306  power 0.0169  0.5 -> 0.130  Inexact Rounded
-pwsx3307  power 0.171  0.5 -> 0.414  Inexact Rounded
-pwsx3308  power 0.0171  0.5 -> 0.131  Inexact Rounded
-pwsx3309  power 0.172  0.5 -> 0.415  Inexact Rounded
-pwsx3310  power 0.0172  0.5 -> 0.131  Inexact Rounded
-pwsx3311  power 0.173  0.5 -> 0.416  Inexact Rounded
-pwsx3312  power 0.0173  0.5 -> 0.132  Inexact Rounded
-pwsx3313  power 0.174  0.5 -> 0.417  Inexact Rounded
-pwsx3314  power 0.0174  0.5 -> 0.132  Inexact Rounded
-pwsx3315  power 0.175  0.5 -> 0.418  Inexact Rounded
-pwsx3316  power 0.0175  0.5 -> 0.132  Inexact Rounded
-pwsx3317  power 0.176  0.5 -> 0.420  Inexact Rounded
-pwsx3318  power 0.0176  0.5 -> 0.133  Inexact Rounded
-pwsx3319  power 0.177  0.5 -> 0.421  Inexact Rounded
-pwsx3320  power 0.0177  0.5 -> 0.133  Inexact Rounded
-pwsx3321  power 0.178  0.5 -> 0.422  Inexact Rounded
-pwsx3322  power 0.0178  0.5 -> 0.133  Inexact Rounded
-pwsx3323  power 0.179  0.5 -> 0.423  Inexact Rounded
-pwsx3324  power 0.0179  0.5 -> 0.134  Inexact Rounded
-pwsx3325  power 0.181  0.5 -> 0.425  Inexact Rounded
-pwsx3326  power 0.0181  0.5 -> 0.135  Inexact Rounded
-pwsx3327  power 0.182  0.5 -> 0.427  Inexact Rounded
-pwsx3328  power 0.0182  0.5 -> 0.135  Inexact Rounded
-pwsx3329  power 0.183  0.5 -> 0.428  Inexact Rounded
-pwsx3330  power 0.0183  0.5 -> 0.135  Inexact Rounded
-pwsx3331  power 0.184  0.5 -> 0.429  Inexact Rounded
-pwsx3332  power 0.0184  0.5 -> 0.136  Inexact Rounded
-pwsx3333  power 0.185  0.5 -> 0.430  Inexact Rounded
-pwsx3334  power 0.0185  0.5 -> 0.136  Inexact Rounded
-pwsx3335  power 0.186  0.5 -> 0.431  Inexact Rounded
-pwsx3336  power 0.0186  0.5 -> 0.136  Inexact Rounded
-pwsx3337  power 0.187  0.5 -> 0.432  Inexact Rounded
-pwsx3338  power 0.0187  0.5 -> 0.137  Inexact Rounded
-pwsx3339  power 0.188  0.5 -> 0.434  Inexact Rounded
-pwsx3340  power 0.0188  0.5 -> 0.137  Inexact Rounded
-pwsx3341  power 0.189  0.5 -> 0.435  Inexact Rounded
-pwsx3342  power 0.0189  0.5 -> 0.137  Inexact Rounded
-pwsx3343  power 0.191  0.5 -> 0.437  Inexact Rounded
-pwsx3344  power 0.0191  0.5 -> 0.138  Inexact Rounded
-pwsx3345  power 0.192  0.5 -> 0.438  Inexact Rounded
-pwsx3346  power 0.0192  0.5 -> 0.139  Inexact Rounded
-pwsx3347  power 0.193  0.5 -> 0.439  Inexact Rounded
-pwsx3348  power 0.0193  0.5 -> 0.139  Inexact Rounded
-pwsx3349  power 0.194  0.5 -> 0.440  Inexact Rounded
-pwsx3350  power 0.0194  0.5 -> 0.139  Inexact Rounded
-pwsx3351  power 0.195  0.5 -> 0.442  Inexact Rounded
-pwsx3352  power 0.0195  0.5 -> 0.140  Inexact Rounded
-pwsx3353  power 0.196  0.5 -> 0.443  Inexact Rounded
-pwsx3354  power 0.0196  0.5 -> 0.140  Inexact Rounded
-pwsx3355  power 0.197  0.5 -> 0.444  Inexact Rounded
-pwsx3356  power 0.0197  0.5 -> 0.140  Inexact Rounded
-pwsx3357  power 0.198  0.5 -> 0.445  Inexact Rounded
-pwsx3358  power 0.0198  0.5 -> 0.141  Inexact Rounded
-pwsx3359  power 0.199  0.5 -> 0.446  Inexact Rounded
-pwsx3360  power 0.0199  0.5 -> 0.141  Inexact Rounded
-pwsx3361  power 0.201  0.5 -> 0.448  Inexact Rounded
-pwsx3362  power 0.0201  0.5 -> 0.142  Inexact Rounded
-pwsx3363  power 0.202  0.5 -> 0.449  Inexact Rounded
-pwsx3364  power 0.0202  0.5 -> 0.142  Inexact Rounded
-pwsx3365  power 0.203  0.5 -> 0.451  Inexact Rounded
-pwsx3366  power 0.0203  0.5 -> 0.142  Inexact Rounded
-pwsx3367  power 0.204  0.5 -> 0.452  Inexact Rounded
-pwsx3368  power 0.0204  0.5 -> 0.143  Inexact Rounded
-pwsx3369  power 0.205  0.5 -> 0.453  Inexact Rounded
-pwsx3370  power 0.0205  0.5 -> 0.143  Inexact Rounded
-pwsx3371  power 0.206  0.5 -> 0.454  Inexact Rounded
-pwsx3372  power 0.0206  0.5 -> 0.144  Inexact Rounded
-pwsx3373  power 0.207  0.5 -> 0.455  Inexact Rounded
-pwsx3374  power 0.0207  0.5 -> 0.144  Inexact Rounded
-pwsx3375  power 0.208  0.5 -> 0.456  Inexact Rounded
-pwsx3376  power 0.0208  0.5 -> 0.144  Inexact Rounded
-pwsx3377  power 0.209  0.5 -> 0.457  Inexact Rounded
-pwsx3378  power 0.0209  0.5 -> 0.145  Inexact Rounded
-pwsx3379  power 0.211  0.5 -> 0.459  Inexact Rounded
-pwsx3380  power 0.0211  0.5 -> 0.145  Inexact Rounded
-pwsx3381  power 0.212  0.5 -> 0.460  Inexact Rounded
-pwsx3382  power 0.0212  0.5 -> 0.146  Inexact Rounded
-pwsx3383  power 0.213  0.5 -> 0.462  Inexact Rounded
-pwsx3384  power 0.0213  0.5 -> 0.146  Inexact Rounded
-pwsx3385  power 0.214  0.5 -> 0.463  Inexact Rounded
-pwsx3386  power 0.0214  0.5 -> 0.146  Inexact Rounded
-pwsx3387  power 0.215  0.5 -> 0.464  Inexact Rounded
-pwsx3388  power 0.0215  0.5 -> 0.147  Inexact Rounded
-pwsx3389  power 0.216  0.5 -> 0.465  Inexact Rounded
-pwsx3390  power 0.0216  0.5 -> 0.147  Inexact Rounded
-pwsx3391  power 0.217  0.5 -> 0.466  Inexact Rounded
-pwsx3392  power 0.0217  0.5 -> 0.147  Inexact Rounded
-pwsx3393  power 0.218  0.5 -> 0.467  Inexact Rounded
-pwsx3394  power 0.0218  0.5 -> 0.148  Inexact Rounded
-pwsx3395  power 0.219  0.5 -> 0.468  Inexact Rounded
-pwsx3396  power 0.0219  0.5 -> 0.148  Inexact Rounded
-pwsx3397  power 0.221  0.5 -> 0.470  Inexact Rounded
-pwsx3398  power 0.0221  0.5 -> 0.149  Inexact Rounded
-pwsx3399  power 0.222  0.5 -> 0.471  Inexact Rounded
-pwsx3400  power 0.0222  0.5 -> 0.149  Inexact Rounded
-pwsx3401  power 0.223  0.5 -> 0.472  Inexact Rounded
-pwsx3402  power 0.0223  0.5 -> 0.149  Inexact Rounded
-pwsx3403  power 0.224  0.5 -> 0.473  Inexact Rounded
-pwsx3404  power 0.0224  0.5 -> 0.150  Inexact Rounded
-pwsx3405  power 0.225  0.5 -> 0.474  Inexact Rounded
-pwsx3406  power 0.0225  0.5 -> 0.150  Inexact Rounded
-pwsx3407  power 0.226  0.5 -> 0.475  Inexact Rounded
-pwsx3408  power 0.0226  0.5 -> 0.150  Inexact Rounded
-pwsx3409  power 0.227  0.5 -> 0.476  Inexact Rounded
-pwsx3410  power 0.0227  0.5 -> 0.151  Inexact Rounded
-pwsx3411  power 0.228  0.5 -> 0.477  Inexact Rounded
-pwsx3412  power 0.0228  0.5 -> 0.151  Inexact Rounded
-pwsx3413  power 0.229  0.5 -> 0.479  Inexact Rounded
-pwsx3414  power 0.0229  0.5 -> 0.151  Inexact Rounded
-pwsx3415  power 0.231  0.5 -> 0.481  Inexact Rounded
-pwsx3416  power 0.0231  0.5 -> 0.152  Inexact Rounded
-pwsx3417  power 0.232  0.5 -> 0.482  Inexact Rounded
-pwsx3418  power 0.0232  0.5 -> 0.152  Inexact Rounded
-pwsx3419  power 0.233  0.5 -> 0.483  Inexact Rounded
-pwsx3420  power 0.0233  0.5 -> 0.153  Inexact Rounded
-pwsx3421  power 0.234  0.5 -> 0.484  Inexact Rounded
-pwsx3422  power 0.0234  0.5 -> 0.153  Inexact Rounded
-pwsx3423  power 0.235  0.5 -> 0.485  Inexact Rounded
-pwsx3424  power 0.0235  0.5 -> 0.153  Inexact Rounded
-pwsx3425  power 0.236  0.5 -> 0.486  Inexact Rounded
-pwsx3426  power 0.0236  0.5 -> 0.154  Inexact Rounded
-pwsx3427  power 0.237  0.5 -> 0.487  Inexact Rounded
-pwsx3428  power 0.0237  0.5 -> 0.154  Inexact Rounded
-pwsx3429  power 0.238  0.5 -> 0.488  Inexact Rounded
-pwsx3430  power 0.0238  0.5 -> 0.154  Inexact Rounded
-pwsx3431  power 0.239  0.5 -> 0.489  Inexact Rounded
-pwsx3432  power 0.0239  0.5 -> 0.155  Inexact Rounded
-pwsx3433  power 0.241  0.5 -> 0.491  Inexact Rounded
-pwsx3434  power 0.0241  0.5 -> 0.155  Inexact Rounded
-pwsx3435  power 0.242  0.5 -> 0.492  Inexact Rounded
-pwsx3436  power 0.0242  0.5 -> 0.156  Inexact Rounded
-pwsx3437  power 0.243  0.5 -> 0.493  Inexact Rounded
-pwsx3438  power 0.0243  0.5 -> 0.156  Inexact Rounded
-pwsx3439  power 0.244  0.5 -> 0.494  Inexact Rounded
-pwsx3440  power 0.0244  0.5 -> 0.156  Inexact Rounded
-pwsx3441  power 0.245  0.5 -> 0.495  Inexact Rounded
-pwsx3442  power 0.0245  0.5 -> 0.157  Inexact Rounded
-pwsx3443  power 0.246  0.5 -> 0.496  Inexact Rounded
-pwsx3444  power 0.0246  0.5 -> 0.157  Inexact Rounded
-pwsx3445  power 0.247  0.5 -> 0.497  Inexact Rounded
-pwsx3446  power 0.0247  0.5 -> 0.157  Inexact Rounded
-pwsx3447  power 0.248  0.5 -> 0.498  Inexact Rounded
-pwsx3448  power 0.0248  0.5 -> 0.157  Inexact Rounded
-pwsx3449  power 0.249  0.5 -> 0.499  Inexact Rounded
-pwsx3450  power 0.0249  0.5 -> 0.158  Inexact Rounded
-pwsx3451  power 0.251  0.5 -> 0.501  Inexact Rounded
-pwsx3452  power 0.0251  0.5 -> 0.158  Inexact Rounded
-pwsx3453  power 0.252  0.5 -> 0.502  Inexact Rounded
-pwsx3454  power 0.0252  0.5 -> 0.159  Inexact Rounded
-pwsx3455  power 0.253  0.5 -> 0.503  Inexact Rounded
-pwsx3456  power 0.0253  0.5 -> 0.159  Inexact Rounded
-pwsx3457  power 0.254  0.5 -> 0.504  Inexact Rounded
-pwsx3458  power 0.0254  0.5 -> 0.159  Inexact Rounded
-pwsx3459  power 0.255  0.5 -> 0.505  Inexact Rounded
-pwsx3460  power 0.0255  0.5 -> 0.160  Inexact Rounded
-pwsx3461  power 0.256  0.5 -> 0.506  Inexact Rounded
-pwsx3462  power 0.0256  0.5 -> 0.160  Inexact Rounded
-pwsx3463  power 0.257  0.5 -> 0.507  Inexact Rounded
-pwsx3464  power 0.0257  0.5 -> 0.160  Inexact Rounded
-pwsx3465  power 0.258  0.5 -> 0.508  Inexact Rounded
-pwsx3466  power 0.0258  0.5 -> 0.161  Inexact Rounded
-pwsx3467  power 0.259  0.5 -> 0.509  Inexact Rounded
-pwsx3468  power 0.0259  0.5 -> 0.161  Inexact Rounded
-pwsx3469  power 0.261  0.5 -> 0.511  Inexact Rounded
-pwsx3470  power 0.0261  0.5 -> 0.162  Inexact Rounded
-pwsx3471  power 0.262  0.5 -> 0.512  Inexact Rounded
-pwsx3472  power 0.0262  0.5 -> 0.162  Inexact Rounded
-pwsx3473  power 0.263  0.5 -> 0.513  Inexact Rounded
-pwsx3474  power 0.0263  0.5 -> 0.162  Inexact Rounded
-pwsx3475  power 0.264  0.5 -> 0.514  Inexact Rounded
-pwsx3476  power 0.0264  0.5 -> 0.162  Inexact Rounded
-pwsx3477  power 0.265  0.5 -> 0.515  Inexact Rounded
-pwsx3478  power 0.0265  0.5 -> 0.163  Inexact Rounded
-pwsx3479  power 0.266  0.5 -> 0.516  Inexact Rounded
-pwsx3480  power 0.0266  0.5 -> 0.163  Inexact Rounded
-pwsx3481  power 0.267  0.5 -> 0.517  Inexact Rounded
-pwsx3482  power 0.0267  0.5 -> 0.163  Inexact Rounded
-pwsx3483  power 0.268  0.5 -> 0.518  Inexact Rounded
-pwsx3484  power 0.0268  0.5 -> 0.164  Inexact Rounded
-pwsx3485  power 0.269  0.5 -> 0.519  Inexact Rounded
-pwsx3486  power 0.0269  0.5 -> 0.164  Inexact Rounded
-pwsx3487  power 0.271  0.5 -> 0.521  Inexact Rounded
-pwsx3488  power 0.0271  0.5 -> 0.165  Inexact Rounded
-pwsx3489  power 0.272  0.5 -> 0.522  Inexact Rounded
-pwsx3490  power 0.0272  0.5 -> 0.165  Inexact Rounded
-pwsx3491  power 0.273  0.5 -> 0.522  Inexact Rounded
-pwsx3492  power 0.0273  0.5 -> 0.165  Inexact Rounded
-pwsx3493  power 0.274  0.5 -> 0.523  Inexact Rounded
-pwsx3494  power 0.0274  0.5 -> 0.166  Inexact Rounded
-pwsx3495  power 0.275  0.5 -> 0.524  Inexact Rounded
-pwsx3496  power 0.0275  0.5 -> 0.166  Inexact Rounded
-pwsx3497  power 0.276  0.5 -> 0.525  Inexact Rounded
-pwsx3498  power 0.0276  0.5 -> 0.166  Inexact Rounded
-pwsx3499  power 0.277  0.5 -> 0.526  Inexact Rounded
-pwsx3500  power 0.0277  0.5 -> 0.166  Inexact Rounded
-pwsx3501  power 0.278  0.5 -> 0.527  Inexact Rounded
-pwsx3502  power 0.0278  0.5 -> 0.167  Inexact Rounded
-pwsx3503  power 0.279  0.5 -> 0.528  Inexact Rounded
-pwsx3504  power 0.0279  0.5 -> 0.167  Inexact Rounded
-pwsx3505  power 0.281  0.5 -> 0.530  Inexact Rounded
-pwsx3506  power 0.0281  0.5 -> 0.168  Inexact Rounded
-pwsx3507  power 0.282  0.5 -> 0.531  Inexact Rounded
-pwsx3508  power 0.0282  0.5 -> 0.168  Inexact Rounded
-pwsx3509  power 0.283  0.5 -> 0.532  Inexact Rounded
-pwsx3510  power 0.0283  0.5 -> 0.168  Inexact Rounded
-pwsx3511  power 0.284  0.5 -> 0.533  Inexact Rounded
-pwsx3512  power 0.0284  0.5 -> 0.169  Inexact Rounded
-pwsx3513  power 0.285  0.5 -> 0.534  Inexact Rounded
-pwsx3514  power 0.0285  0.5 -> 0.169  Inexact Rounded
-pwsx3515  power 0.286  0.5 -> 0.535  Inexact Rounded
-pwsx3516  power 0.0286  0.5 -> 0.169  Inexact Rounded
-pwsx3517  power 0.287  0.5 -> 0.536  Inexact Rounded
-pwsx3518  power 0.0287  0.5 -> 0.169  Inexact Rounded
-pwsx3519  power 0.288  0.5 -> 0.537  Inexact Rounded
-pwsx3520  power 0.0288  0.5 -> 0.170  Inexact Rounded
-pwsx3521  power 0.289  0.5 -> 0.538  Inexact Rounded
-pwsx3522  power 0.0289  0.5 -> 0.170  Inexact Rounded
-pwsx3523  power 0.291  0.5 -> 0.539  Inexact Rounded
-pwsx3524  power 0.0291  0.5 -> 0.171  Inexact Rounded
-pwsx3525  power 0.292  0.5 -> 0.540  Inexact Rounded
-pwsx3526  power 0.0292  0.5 -> 0.171  Inexact Rounded
-pwsx3527  power 0.293  0.5 -> 0.541  Inexact Rounded
-pwsx3528  power 0.0293  0.5 -> 0.171  Inexact Rounded
-pwsx3529  power 0.294  0.5 -> 0.542  Inexact Rounded
-pwsx3530  power 0.0294  0.5 -> 0.171  Inexact Rounded
-pwsx3531  power 0.295  0.5 -> 0.543  Inexact Rounded
-pwsx3532  power 0.0295  0.5 -> 0.172  Inexact Rounded
-pwsx3533  power 0.296  0.5 -> 0.544  Inexact Rounded
-pwsx3534  power 0.0296  0.5 -> 0.172  Inexact Rounded
-pwsx3535  power 0.297  0.5 -> 0.545  Inexact Rounded
-pwsx3536  power 0.0297  0.5 -> 0.172  Inexact Rounded
-pwsx3537  power 0.298  0.5 -> 0.546  Inexact Rounded
-pwsx3538  power 0.0298  0.5 -> 0.173  Inexact Rounded
-pwsx3539  power 0.299  0.5 -> 0.547  Inexact Rounded
-pwsx3540  power 0.0299  0.5 -> 0.173  Inexact Rounded
-pwsx3541  power 0.301  0.5 -> 0.549  Inexact Rounded
-pwsx3542  power 0.0301  0.5 -> 0.173  Inexact Rounded
-pwsx3543  power 0.302  0.5 -> 0.550  Inexact Rounded
-pwsx3544  power 0.0302  0.5 -> 0.174  Inexact Rounded
-pwsx3545  power 0.303  0.5 -> 0.550  Inexact Rounded
-pwsx3546  power 0.0303  0.5 -> 0.174  Inexact Rounded
-pwsx3547  power 0.304  0.5 -> 0.551  Inexact Rounded
-pwsx3548  power 0.0304  0.5 -> 0.174  Inexact Rounded
-pwsx3549  power 0.305  0.5 -> 0.552  Inexact Rounded
-pwsx3550  power 0.0305  0.5 -> 0.175  Inexact Rounded
-pwsx3551  power 0.306  0.5 -> 0.553  Inexact Rounded
-pwsx3552  power 0.0306  0.5 -> 0.175  Inexact Rounded
-pwsx3553  power 0.307  0.5 -> 0.554  Inexact Rounded
-pwsx3554  power 0.0307  0.5 -> 0.175  Inexact Rounded
-pwsx3555  power 0.308  0.5 -> 0.555  Inexact Rounded
-pwsx3556  power 0.0308  0.5 -> 0.175  Inexact Rounded
-pwsx3557  power 0.309  0.5 -> 0.556  Inexact Rounded
-pwsx3558  power 0.0309  0.5 -> 0.176  Inexact Rounded
-pwsx3559  power 0.311  0.5 -> 0.558  Inexact Rounded
-pwsx3560  power 0.0311  0.5 -> 0.176  Inexact Rounded
-pwsx3561  power 0.312  0.5 -> 0.559  Inexact Rounded
-pwsx3562  power 0.0312  0.5 -> 0.177  Inexact Rounded
-pwsx3563  power 0.313  0.5 -> 0.559  Inexact Rounded
-pwsx3564  power 0.0313  0.5 -> 0.177  Inexact Rounded
-pwsx3565  power 0.314  0.5 -> 0.560  Inexact Rounded
-pwsx3566  power 0.0314  0.5 -> 0.177  Inexact Rounded
-pwsx3567  power 0.315  0.5 -> 0.561  Inexact Rounded
-pwsx3568  power 0.0315  0.5 -> 0.177  Inexact Rounded
-pwsx3569  power 0.316  0.5 -> 0.562  Inexact Rounded
-pwsx3570  power 0.0316  0.5 -> 0.178  Inexact Rounded
-pwsx3571  power 0.317  0.5 -> 0.563  Inexact Rounded
-pwsx3572  power 0.0317  0.5 -> 0.178  Inexact Rounded
-pwsx3573  power 0.318  0.5 -> 0.564  Inexact Rounded
-pwsx3574  power 0.0318  0.5 -> 0.178  Inexact Rounded
-pwsx3575  power 0.319  0.5 -> 0.565  Inexact Rounded
-pwsx3576  power 0.0319  0.5 -> 0.179  Inexact Rounded
-pwsx3577  power 0.321  0.5 -> 0.567  Inexact Rounded
-pwsx3578  power 0.0321  0.5 -> 0.179  Inexact Rounded
-pwsx3579  power 0.322  0.5 -> 0.567  Inexact Rounded
-pwsx3580  power 0.0322  0.5 -> 0.179  Inexact Rounded
-pwsx3581  power 0.323  0.5 -> 0.568  Inexact Rounded
-pwsx3582  power 0.0323  0.5 -> 0.180  Inexact Rounded
-pwsx3583  power 0.324  0.5 -> 0.569  Inexact Rounded
-pwsx3584  power 0.0324  0.5 -> 0.180  Inexact Rounded
-pwsx3585  power 0.325  0.5 -> 0.570  Inexact Rounded
-pwsx3586  power 0.0325  0.5 -> 0.180  Inexact Rounded
-pwsx3587  power 0.326  0.5 -> 0.571  Inexact Rounded
-pwsx3588  power 0.0326  0.5 -> 0.181  Inexact Rounded
-pwsx3589  power 0.327  0.5 -> 0.572  Inexact Rounded
-pwsx3590  power 0.0327  0.5 -> 0.181  Inexact Rounded
-pwsx3591  power 0.328  0.5 -> 0.573  Inexact Rounded
-pwsx3592  power 0.0328  0.5 -> 0.181  Inexact Rounded
-pwsx3593  power 0.329  0.5 -> 0.574  Inexact Rounded
-pwsx3594  power 0.0329  0.5 -> 0.181  Inexact Rounded
-pwsx3595  power 0.331  0.5 -> 0.575  Inexact Rounded
-pwsx3596  power 0.0331  0.5 -> 0.182  Inexact Rounded
-pwsx3597  power 0.332  0.5 -> 0.576  Inexact Rounded
-pwsx3598  power 0.0332  0.5 -> 0.182  Inexact Rounded
-pwsx3599  power 0.333  0.5 -> 0.577  Inexact Rounded
-pwsx3600  power 0.0333  0.5 -> 0.182  Inexact Rounded
-pwsx3601  power 0.334  0.5 -> 0.578  Inexact Rounded
-pwsx3602  power 0.0334  0.5 -> 0.183  Inexact Rounded
-pwsx3603  power 0.335  0.5 -> 0.579  Inexact Rounded
-pwsx3604  power 0.0335  0.5 -> 0.183  Inexact Rounded
-pwsx3605  power 0.336  0.5 -> 0.580  Inexact Rounded
-pwsx3606  power 0.0336  0.5 -> 0.183  Inexact Rounded
-pwsx3607  power 0.337  0.5 -> 0.581  Inexact Rounded
-pwsx3608  power 0.0337  0.5 -> 0.184  Inexact Rounded
-pwsx3609  power 0.338  0.5 -> 0.581  Inexact Rounded
-pwsx3610  power 0.0338  0.5 -> 0.184  Inexact Rounded
-pwsx3611  power 0.339  0.5 -> 0.582  Inexact Rounded
-pwsx3612  power 0.0339  0.5 -> 0.184  Inexact Rounded
-pwsx3613  power 0.341  0.5 -> 0.584  Inexact Rounded
-pwsx3614  power 0.0341  0.5 -> 0.185  Inexact Rounded
-pwsx3615  power 0.342  0.5 -> 0.585  Inexact Rounded
-pwsx3616  power 0.0342  0.5 -> 0.185  Inexact Rounded
-pwsx3617  power 0.343  0.5 -> 0.586  Inexact Rounded
-pwsx3618  power 0.0343  0.5 -> 0.185  Inexact Rounded
-pwsx3619  power 0.344  0.5 -> 0.587  Inexact Rounded
-pwsx3620  power 0.0344  0.5 -> 0.185  Inexact Rounded
-pwsx3621  power 0.345  0.5 -> 0.587  Inexact Rounded
-pwsx3622  power 0.0345  0.5 -> 0.186  Inexact Rounded
-pwsx3623  power 0.346  0.5 -> 0.588  Inexact Rounded
-pwsx3624  power 0.0346  0.5 -> 0.186  Inexact Rounded
-pwsx3625  power 0.347  0.5 -> 0.589  Inexact Rounded
-pwsx3626  power 0.0347  0.5 -> 0.186  Inexact Rounded
-pwsx3627  power 0.348  0.5 -> 0.590  Inexact Rounded
-pwsx3628  power 0.0348  0.5 -> 0.187  Inexact Rounded
-pwsx3629  power 0.349  0.5 -> 0.591  Inexact Rounded
-pwsx3630  power 0.0349  0.5 -> 0.187  Inexact Rounded
-pwsx3631  power 0.351  0.5 -> 0.592  Inexact Rounded
-pwsx3632  power 0.0351  0.5 -> 0.187  Inexact Rounded
-pwsx3633  power 0.352  0.5 -> 0.593  Inexact Rounded
-pwsx3634  power 0.0352  0.5 -> 0.188  Inexact Rounded
-pwsx3635  power 0.353  0.5 -> 0.594  Inexact Rounded
-pwsx3636  power 0.0353  0.5 -> 0.188  Inexact Rounded
-pwsx3637  power 0.354  0.5 -> 0.595  Inexact Rounded
-pwsx3638  power 0.0354  0.5 -> 0.188  Inexact Rounded
-pwsx3639  power 0.355  0.5 -> 0.596  Inexact Rounded
-pwsx3640  power 0.0355  0.5 -> 0.188  Inexact Rounded
-pwsx3641  power 0.356  0.5 -> 0.597  Inexact Rounded
-pwsx3642  power 0.0356  0.5 -> 0.189  Inexact Rounded
-pwsx3643  power 0.357  0.5 -> 0.597  Inexact Rounded
-pwsx3644  power 0.0357  0.5 -> 0.189  Inexact Rounded
-pwsx3645  power 0.358  0.5 -> 0.598  Inexact Rounded
-pwsx3646  power 0.0358  0.5 -> 0.189  Inexact Rounded
-pwsx3647  power 0.359  0.5 -> 0.599  Inexact Rounded
-pwsx3648  power 0.0359  0.5 -> 0.189  Inexact Rounded
-pwsx3649  power 0.361  0.5 -> 0.601  Inexact Rounded
-pwsx3650  power 0.0361  0.5 -> 0.190  Inexact Rounded
-pwsx3651  power 0.362  0.5 -> 0.602  Inexact Rounded
-pwsx3652  power 0.0362  0.5 -> 0.190  Inexact Rounded
-pwsx3653  power 0.363  0.5 -> 0.602  Inexact Rounded
-pwsx3654  power 0.0363  0.5 -> 0.191  Inexact Rounded
-pwsx3655  power 0.364  0.5 -> 0.603  Inexact Rounded
-pwsx3656  power 0.0364  0.5 -> 0.191  Inexact Rounded
-pwsx3657  power 0.365  0.5 -> 0.604  Inexact Rounded
-pwsx3658  power 0.0365  0.5 -> 0.191  Inexact Rounded
-pwsx3659  power 0.366  0.5 -> 0.605  Inexact Rounded
-pwsx3660  power 0.0366  0.5 -> 0.191  Inexact Rounded
-pwsx3661  power 0.367  0.5 -> 0.606  Inexact Rounded
-pwsx3662  power 0.0367  0.5 -> 0.192  Inexact Rounded
-pwsx3663  power 0.368  0.5 -> 0.607  Inexact Rounded
-pwsx3664  power 0.0368  0.5 -> 0.192  Inexact Rounded
-pwsx3665  power 0.369  0.5 -> 0.607  Inexact Rounded
-pwsx3666  power 0.0369  0.5 -> 0.192  Inexact Rounded
-pwsx3667  power 0.371  0.5 -> 0.609  Inexact Rounded
-pwsx3668  power 0.0371  0.5 -> 0.193  Inexact Rounded
-pwsx3669  power 0.372  0.5 -> 0.610  Inexact Rounded
-pwsx3670  power 0.0372  0.5 -> 0.193  Inexact Rounded
-pwsx3671  power 0.373  0.5 -> 0.611  Inexact Rounded
-pwsx3672  power 0.0373  0.5 -> 0.193  Inexact Rounded
-pwsx3673  power 0.374  0.5 -> 0.612  Inexact Rounded
-pwsx3674  power 0.0374  0.5 -> 0.193  Inexact Rounded
-pwsx3675  power 0.375  0.5 -> 0.612  Inexact Rounded
-pwsx3676  power 0.0375  0.5 -> 0.194  Inexact Rounded
-pwsx3677  power 0.376  0.5 -> 0.613  Inexact Rounded
-pwsx3678  power 0.0376  0.5 -> 0.194  Inexact Rounded
-pwsx3679  power 0.377  0.5 -> 0.614  Inexact Rounded
-pwsx3680  power 0.0377  0.5 -> 0.194  Inexact Rounded
-pwsx3681  power 0.378  0.5 -> 0.615  Inexact Rounded
-pwsx3682  power 0.0378  0.5 -> 0.194  Inexact Rounded
-pwsx3683  power 0.379  0.5 -> 0.616  Inexact Rounded
-pwsx3684  power 0.0379  0.5 -> 0.195  Inexact Rounded
-pwsx3685  power 0.381  0.5 -> 0.617  Inexact Rounded
-pwsx3686  power 0.0381  0.5 -> 0.195  Inexact Rounded
-pwsx3687  power 0.382  0.5 -> 0.618  Inexact Rounded
-pwsx3688  power 0.0382  0.5 -> 0.195  Inexact Rounded
-pwsx3689  power 0.383  0.5 -> 0.619  Inexact Rounded
-pwsx3690  power 0.0383  0.5 -> 0.196  Inexact Rounded
-pwsx3691  power 0.384  0.5 -> 0.620  Inexact Rounded
-pwsx3692  power 0.0384  0.5 -> 0.196  Inexact Rounded
-pwsx3693  power 0.385  0.5 -> 0.620  Inexact Rounded
-pwsx3694  power 0.0385  0.5 -> 0.196  Inexact Rounded
-pwsx3695  power 0.386  0.5 -> 0.621  Inexact Rounded
-pwsx3696  power 0.0386  0.5 -> 0.196  Inexact Rounded
-pwsx3697  power 0.387  0.5 -> 0.622  Inexact Rounded
-pwsx3698  power 0.0387  0.5 -> 0.197  Inexact Rounded
-pwsx3699  power 0.388  0.5 -> 0.623  Inexact Rounded
-pwsx3700  power 0.0388  0.5 -> 0.197  Inexact Rounded
-pwsx3701  power 0.389  0.5 -> 0.624  Inexact Rounded
-pwsx3702  power 0.0389  0.5 -> 0.197  Inexact Rounded
-pwsx3703  power 0.391  0.5 -> 0.625  Inexact Rounded
-pwsx3704  power 0.0391  0.5 -> 0.198  Inexact Rounded
-pwsx3705  power 0.392  0.5 -> 0.626  Inexact Rounded
-pwsx3706  power 0.0392  0.5 -> 0.198  Inexact Rounded
-pwsx3707  power 0.393  0.5 -> 0.627  Inexact Rounded
-pwsx3708  power 0.0393  0.5 -> 0.198  Inexact Rounded
-pwsx3709  power 0.394  0.5 -> 0.628  Inexact Rounded
-pwsx3710  power 0.0394  0.5 -> 0.198  Inexact Rounded
-pwsx3711  power 0.395  0.5 -> 0.628  Inexact Rounded
-pwsx3712  power 0.0395  0.5 -> 0.199  Inexact Rounded
-pwsx3713  power 0.396  0.5 -> 0.629  Inexact Rounded
-pwsx3714  power 0.0396  0.5 -> 0.199  Inexact Rounded
-pwsx3715  power 0.397  0.5 -> 0.630  Inexact Rounded
-pwsx3716  power 0.0397  0.5 -> 0.199  Inexact Rounded
-pwsx3717  power 0.398  0.5 -> 0.631  Inexact Rounded
-pwsx3718  power 0.0398  0.5 -> 0.199  Inexact Rounded
-pwsx3719  power 0.399  0.5 -> 0.632  Inexact Rounded
-pwsx3720  power 0.0399  0.5 -> 0.200  Inexact Rounded
-pwsx3721  power 0.401  0.5 -> 0.633  Inexact Rounded
-pwsx3722  power 0.0401  0.5 -> 0.200  Inexact Rounded
-pwsx3723  power 0.402  0.5 -> 0.634  Inexact Rounded
-pwsx3724  power 0.0402  0.5 -> 0.200  Inexact Rounded
-pwsx3725  power 0.403  0.5 -> 0.635  Inexact Rounded
-pwsx3726  power 0.0403  0.5 -> 0.201  Inexact Rounded
-pwsx3727  power 0.404  0.5 -> 0.636  Inexact Rounded
-pwsx3728  power 0.0404  0.5 -> 0.201  Inexact Rounded
-pwsx3729  power 0.405  0.5 -> 0.636  Inexact Rounded
-pwsx3730  power 0.0405  0.5 -> 0.201  Inexact Rounded
-pwsx3731  power 0.406  0.5 -> 0.637  Inexact Rounded
-pwsx3732  power 0.0406  0.5 -> 0.201  Inexact Rounded
-pwsx3733  power 0.407  0.5 -> 0.638  Inexact Rounded
-pwsx3734  power 0.0407  0.5 -> 0.202  Inexact Rounded
-pwsx3735  power 0.408  0.5 -> 0.639  Inexact Rounded
-pwsx3736  power 0.0408  0.5 -> 0.202  Inexact Rounded
-pwsx3737  power 0.409  0.5 -> 0.640  Inexact Rounded
-pwsx3738  power 0.0409  0.5 -> 0.202  Inexact Rounded
-pwsx3739  power 0.411  0.5 -> 0.641  Inexact Rounded
-pwsx3740  power 0.0411  0.5 -> 0.203  Inexact Rounded
-pwsx3741  power 0.412  0.5 -> 0.642  Inexact Rounded
-pwsx3742  power 0.0412  0.5 -> 0.203  Inexact Rounded
-pwsx3743  power 0.413  0.5 -> 0.643  Inexact Rounded
-pwsx3744  power 0.0413  0.5 -> 0.203  Inexact Rounded
-pwsx3745  power 0.414  0.5 -> 0.643  Inexact Rounded
-pwsx3746  power 0.0414  0.5 -> 0.203  Inexact Rounded
-pwsx3747  power 0.415  0.5 -> 0.644  Inexact Rounded
-pwsx3748  power 0.0415  0.5 -> 0.204  Inexact Rounded
-pwsx3749  power 0.416  0.5 -> 0.645  Inexact Rounded
-pwsx3750  power 0.0416  0.5 -> 0.204  Inexact Rounded
-pwsx3751  power 0.417  0.5 -> 0.646  Inexact Rounded
-pwsx3752  power 0.0417  0.5 -> 0.204  Inexact Rounded
-pwsx3753  power 0.418  0.5 -> 0.647  Inexact Rounded
-pwsx3754  power 0.0418  0.5 -> 0.204  Inexact Rounded
-pwsx3755  power 0.419  0.5 -> 0.647  Inexact Rounded
-pwsx3756  power 0.0419  0.5 -> 0.205  Inexact Rounded
-pwsx3757  power 0.421  0.5 -> 0.649  Inexact Rounded
-pwsx3758  power 0.0421  0.5 -> 0.205  Inexact Rounded
-pwsx3759  power 0.422  0.5 -> 0.650  Inexact Rounded
-pwsx3760  power 0.0422  0.5 -> 0.205  Inexact Rounded
-pwsx3761  power 0.423  0.5 -> 0.650  Inexact Rounded
-pwsx3762  power 0.0423  0.5 -> 0.206  Inexact Rounded
-pwsx3763  power 0.424  0.5 -> 0.651  Inexact Rounded
-pwsx3764  power 0.0424  0.5 -> 0.206  Inexact Rounded
-pwsx3765  power 0.425  0.5 -> 0.652  Inexact Rounded
-pwsx3766  power 0.0425  0.5 -> 0.206  Inexact Rounded
-pwsx3767  power 0.426  0.5 -> 0.653  Inexact Rounded
-pwsx3768  power 0.0426  0.5 -> 0.206  Inexact Rounded
-pwsx3769  power 0.427  0.5 -> 0.653  Inexact Rounded
-pwsx3770  power 0.0427  0.5 -> 0.207  Inexact Rounded
-pwsx3771  power 0.428  0.5 -> 0.654  Inexact Rounded
-pwsx3772  power 0.0428  0.5 -> 0.207  Inexact Rounded
-pwsx3773  power 0.429  0.5 -> 0.655  Inexact Rounded
-pwsx3774  power 0.0429  0.5 -> 0.207  Inexact Rounded
-pwsx3775  power 0.431  0.5 -> 0.657  Inexact Rounded
-pwsx3776  power 0.0431  0.5 -> 0.208  Inexact Rounded
-pwsx3777  power 0.432  0.5 -> 0.657  Inexact Rounded
-pwsx3778  power 0.0432  0.5 -> 0.208  Inexact Rounded
-pwsx3779  power 0.433  0.5 -> 0.658  Inexact Rounded
-pwsx3780  power 0.0433  0.5 -> 0.208  Inexact Rounded
-pwsx3781  power 0.434  0.5 -> 0.659  Inexact Rounded
-pwsx3782  power 0.0434  0.5 -> 0.208  Inexact Rounded
-pwsx3783  power 0.435  0.5 -> 0.660  Inexact Rounded
-pwsx3784  power 0.0435  0.5 -> 0.209  Inexact Rounded
-pwsx3785  power 0.436  0.5 -> 0.660  Inexact Rounded
-pwsx3786  power 0.0436  0.5 -> 0.209  Inexact Rounded
-pwsx3787  power 0.437  0.5 -> 0.661  Inexact Rounded
-pwsx3788  power 0.0437  0.5 -> 0.209  Inexact Rounded
-pwsx3789  power 0.438  0.5 -> 0.662  Inexact Rounded
-pwsx3790  power 0.0438  0.5 -> 0.209  Inexact Rounded
-pwsx3791  power 0.439  0.5 -> 0.663  Inexact Rounded
-pwsx3792  power 0.0439  0.5 -> 0.210  Inexact Rounded
-pwsx3793  power 0.441  0.5 -> 0.664  Inexact Rounded
-pwsx3794  power 0.0441  0.5 -> 0.210  Inexact Rounded
-pwsx3795  power 0.442  0.5 -> 0.665  Inexact Rounded
-pwsx3796  power 0.0442  0.5 -> 0.210  Inexact Rounded
-pwsx3797  power 0.443  0.5 -> 0.666  Inexact Rounded
-pwsx3798  power 0.0443  0.5 -> 0.210  Inexact Rounded
-pwsx3799  power 0.444  0.5 -> 0.666  Inexact Rounded
-pwsx3800  power 0.0444  0.5 -> 0.211  Inexact Rounded
-pwsx3801  power 0.445  0.5 -> 0.667  Inexact Rounded
-pwsx3802  power 0.0445  0.5 -> 0.211  Inexact Rounded
-pwsx3803  power 0.446  0.5 -> 0.668  Inexact Rounded
-pwsx3804  power 0.0446  0.5 -> 0.211  Inexact Rounded
-pwsx3805  power 0.447  0.5 -> 0.669  Inexact Rounded
-pwsx3806  power 0.0447  0.5 -> 0.211  Inexact Rounded
-pwsx3807  power 0.448  0.5 -> 0.669  Inexact Rounded
-pwsx3808  power 0.0448  0.5 -> 0.212  Inexact Rounded
-pwsx3809  power 0.449  0.5 -> 0.670  Inexact Rounded
-pwsx3810  power 0.0449  0.5 -> 0.212  Inexact Rounded
-pwsx3811  power 0.451  0.5 -> 0.672  Inexact Rounded
-pwsx3812  power 0.0451  0.5 -> 0.212  Inexact Rounded
-pwsx3813  power 0.452  0.5 -> 0.672  Inexact Rounded
-pwsx3814  power 0.0452  0.5 -> 0.213  Inexact Rounded
-pwsx3815  power 0.453  0.5 -> 0.673  Inexact Rounded
-pwsx3816  power 0.0453  0.5 -> 0.213  Inexact Rounded
-pwsx3817  power 0.454  0.5 -> 0.674  Inexact Rounded
-pwsx3818  power 0.0454  0.5 -> 0.213  Inexact Rounded
-pwsx3819  power 0.455  0.5 -> 0.675  Inexact Rounded
-pwsx3820  power 0.0455  0.5 -> 0.213  Inexact Rounded
-pwsx3821  power 0.456  0.5 -> 0.675  Inexact Rounded
-pwsx3822  power 0.0456  0.5 -> 0.214  Inexact Rounded
-pwsx3823  power 0.457  0.5 -> 0.676  Inexact Rounded
-pwsx3824  power 0.0457  0.5 -> 0.214  Inexact Rounded
-pwsx3825  power 0.458  0.5 -> 0.677  Inexact Rounded
-pwsx3826  power 0.0458  0.5 -> 0.214  Inexact Rounded
-pwsx3827  power 0.459  0.5 -> 0.677  Inexact Rounded
-pwsx3828  power 0.0459  0.5 -> 0.214  Inexact Rounded
-pwsx3829  power 0.461  0.5 -> 0.679  Inexact Rounded
-pwsx3830  power 0.0461  0.5 -> 0.215  Inexact Rounded
-pwsx3831  power 0.462  0.5 -> 0.680  Inexact Rounded
-pwsx3832  power 0.0462  0.5 -> 0.215  Inexact Rounded
-pwsx3833  power 0.463  0.5 -> 0.680  Inexact Rounded
-pwsx3834  power 0.0463  0.5 -> 0.215  Inexact Rounded
-pwsx3835  power 0.464  0.5 -> 0.681  Inexact Rounded
-pwsx3836  power 0.0464  0.5 -> 0.215  Inexact Rounded
-pwsx3837  power 0.465  0.5 -> 0.682  Inexact Rounded
-pwsx3838  power 0.0465  0.5 -> 0.216  Inexact Rounded
-pwsx3839  power 0.466  0.5 -> 0.683  Inexact Rounded
-pwsx3840  power 0.0466  0.5 -> 0.216  Inexact Rounded
-pwsx3841  power 0.467  0.5 -> 0.683  Inexact Rounded
-pwsx3842  power 0.0467  0.5 -> 0.216  Inexact Rounded
-pwsx3843  power 0.468  0.5 -> 0.684  Inexact Rounded
-pwsx3844  power 0.0468  0.5 -> 0.216  Inexact Rounded
-pwsx3845  power 0.469  0.5 -> 0.685  Inexact Rounded
-pwsx3846  power 0.0469  0.5 -> 0.217  Inexact Rounded
-pwsx3847  power 0.471  0.5 -> 0.686  Inexact Rounded
-pwsx3848  power 0.0471  0.5 -> 0.217  Inexact Rounded
-pwsx3849  power 0.472  0.5 -> 0.687  Inexact Rounded
-pwsx3850  power 0.0472  0.5 -> 0.217  Inexact Rounded
-pwsx3851  power 0.473  0.5 -> 0.688  Inexact Rounded
-pwsx3852  power 0.0473  0.5 -> 0.217  Inexact Rounded
-pwsx3853  power 0.474  0.5 -> 0.688  Inexact Rounded
-pwsx3854  power 0.0474  0.5 -> 0.218  Inexact Rounded
-pwsx3855  power 0.475  0.5 -> 0.689  Inexact Rounded
-pwsx3856  power 0.0475  0.5 -> 0.218  Inexact Rounded
-pwsx3857  power 0.476  0.5 -> 0.690  Inexact Rounded
-pwsx3858  power 0.0476  0.5 -> 0.218  Inexact Rounded
-pwsx3859  power 0.477  0.5 -> 0.691  Inexact Rounded
-pwsx3860  power 0.0477  0.5 -> 0.218  Inexact Rounded
-pwsx3861  power 0.478  0.5 -> 0.691  Inexact Rounded
-pwsx3862  power 0.0478  0.5 -> 0.219  Inexact Rounded
-pwsx3863  power 0.479  0.5 -> 0.692  Inexact Rounded
-pwsx3864  power 0.0479  0.5 -> 0.219  Inexact Rounded
-pwsx3865  power 0.481  0.5 -> 0.694  Inexact Rounded
-pwsx3866  power 0.0481  0.5 -> 0.219  Inexact Rounded
-pwsx3867  power 0.482  0.5 -> 0.694  Inexact Rounded
-pwsx3868  power 0.0482  0.5 -> 0.220  Inexact Rounded
-pwsx3869  power 0.483  0.5 -> 0.695  Inexact Rounded
-pwsx3870  power 0.0483  0.5 -> 0.220  Inexact Rounded
-pwsx3871  power 0.484  0.5 -> 0.696  Inexact Rounded
-pwsx3872  power 0.0484  0.5 -> 0.220  Inexact Rounded
-pwsx3873  power 0.485  0.5 -> 0.696  Inexact Rounded
-pwsx3874  power 0.0485  0.5 -> 0.220  Inexact Rounded
-pwsx3875  power 0.486  0.5 -> 0.697  Inexact Rounded
-pwsx3876  power 0.0486  0.5 -> 0.220  Inexact Rounded
-pwsx3877  power 0.487  0.5 -> 0.698  Inexact Rounded
-pwsx3878  power 0.0487  0.5 -> 0.221  Inexact Rounded
-pwsx3879  power 0.488  0.5 -> 0.699  Inexact Rounded
-pwsx3880  power 0.0488  0.5 -> 0.221  Inexact Rounded
-pwsx3881  power 0.489  0.5 -> 0.699  Inexact Rounded
-pwsx3882  power 0.0489  0.5 -> 0.221  Inexact Rounded
-pwsx3883  power 0.491  0.5 -> 0.701  Inexact Rounded
-pwsx3884  power 0.0491  0.5 -> 0.222  Inexact Rounded
-pwsx3885  power 0.492  0.5 -> 0.701  Inexact Rounded
-pwsx3886  power 0.0492  0.5 -> 0.222  Inexact Rounded
-pwsx3887  power 0.493  0.5 -> 0.702  Inexact Rounded
-pwsx3888  power 0.0493  0.5 -> 0.222  Inexact Rounded
-pwsx3889  power 0.494  0.5 -> 0.703  Inexact Rounded
-pwsx3890  power 0.0494  0.5 -> 0.222  Inexact Rounded
-pwsx3891  power 0.495  0.5 -> 0.704  Inexact Rounded
-pwsx3892  power 0.0495  0.5 -> 0.222  Inexact Rounded
-pwsx3893  power 0.496  0.5 -> 0.704  Inexact Rounded
-pwsx3894  power 0.0496  0.5 -> 0.223  Inexact Rounded
-pwsx3895  power 0.497  0.5 -> 0.705  Inexact Rounded
-pwsx3896  power 0.0497  0.5 -> 0.223  Inexact Rounded
-pwsx3897  power 0.498  0.5 -> 0.706  Inexact Rounded
-pwsx3898  power 0.0498  0.5 -> 0.223  Inexact Rounded
-pwsx3899  power 0.499  0.5 -> 0.706  Inexact Rounded
-pwsx3900  power 0.0499  0.5 -> 0.223  Inexact Rounded
-pwsx3901  power 0.501  0.5 -> 0.708  Inexact Rounded
-pwsx3902  power 0.0501  0.5 -> 0.224  Inexact Rounded
-pwsx3903  power 0.502  0.5 -> 0.709  Inexact Rounded
-pwsx3904  power 0.0502  0.5 -> 0.224  Inexact Rounded
-pwsx3905  power 0.503  0.5 -> 0.709  Inexact Rounded
-pwsx3906  power 0.0503  0.5 -> 0.224  Inexact Rounded
-pwsx3907  power 0.504  0.5 -> 0.710  Inexact Rounded
-pwsx3908  power 0.0504  0.5 -> 0.224  Inexact Rounded
-pwsx3909  power 0.505  0.5 -> 0.711  Inexact Rounded
-pwsx3910  power 0.0505  0.5 -> 0.225  Inexact Rounded
-pwsx3911  power 0.506  0.5 -> 0.711  Inexact Rounded
-pwsx3912  power 0.0506  0.5 -> 0.225  Inexact Rounded
-pwsx3913  power 0.507  0.5 -> 0.712  Inexact Rounded
-pwsx3914  power 0.0507  0.5 -> 0.225  Inexact Rounded
-pwsx3915  power 0.508  0.5 -> 0.713  Inexact Rounded
-pwsx3916  power 0.0508  0.5 -> 0.225  Inexact Rounded
-pwsx3917  power 0.509  0.5 -> 0.713  Inexact Rounded
-pwsx3918  power 0.0509  0.5 -> 0.226  Inexact Rounded
-pwsx3919  power 0.511  0.5 -> 0.715  Inexact Rounded
-pwsx3920  power 0.0511  0.5 -> 0.226  Inexact Rounded
-pwsx3921  power 0.512  0.5 -> 0.716  Inexact Rounded
-pwsx3922  power 0.0512  0.5 -> 0.226  Inexact Rounded
-pwsx3923  power 0.513  0.5 -> 0.716  Inexact Rounded
-pwsx3924  power 0.0513  0.5 -> 0.226  Inexact Rounded
-pwsx3925  power 0.514  0.5 -> 0.717  Inexact Rounded
-pwsx3926  power 0.0514  0.5 -> 0.227  Inexact Rounded
-pwsx3927  power 0.515  0.5 -> 0.718  Inexact Rounded
-pwsx3928  power 0.0515  0.5 -> 0.227  Inexact Rounded
-pwsx3929  power 0.516  0.5 -> 0.718  Inexact Rounded
-pwsx3930  power 0.0516  0.5 -> 0.227  Inexact Rounded
-pwsx3931  power 0.517  0.5 -> 0.719  Inexact Rounded
-pwsx3932  power 0.0517  0.5 -> 0.227  Inexact Rounded
-pwsx3933  power 0.518  0.5 -> 0.720  Inexact Rounded
-pwsx3934  power 0.0518  0.5 -> 0.228  Inexact Rounded
-pwsx3935  power 0.519  0.5 -> 0.720  Inexact Rounded
-pwsx3936  power 0.0519  0.5 -> 0.228  Inexact Rounded
-pwsx3937  power 0.521  0.5 -> 0.722  Inexact Rounded
-pwsx3938  power 0.0521  0.5 -> 0.228  Inexact Rounded
-pwsx3939  power 0.522  0.5 -> 0.722  Inexact Rounded
-pwsx3940  power 0.0522  0.5 -> 0.228  Inexact Rounded
-pwsx3941  power 0.523  0.5 -> 0.723  Inexact Rounded
-pwsx3942  power 0.0523  0.5 -> 0.229  Inexact Rounded
-pwsx3943  power 0.524  0.5 -> 0.724  Inexact Rounded
-pwsx3944  power 0.0524  0.5 -> 0.229  Inexact Rounded
-pwsx3945  power 0.525  0.5 -> 0.725  Inexact Rounded
-pwsx3946  power 0.0525  0.5 -> 0.229  Inexact Rounded
-pwsx3947  power 0.526  0.5 -> 0.725  Inexact Rounded
-pwsx3948  power 0.0526  0.5 -> 0.229  Inexact Rounded
-pwsx3949  power 0.527  0.5 -> 0.726  Inexact Rounded
-pwsx3950  power 0.0527  0.5 -> 0.230  Inexact Rounded
-pwsx3951  power 0.528  0.5 -> 0.727  Inexact Rounded
-pwsx3952  power 0.0528  0.5 -> 0.230  Inexact Rounded
-pwsx3953  power 0.529  0.5 -> 0.727  Inexact Rounded
-pwsx3954  power 0.0529  0.5 -> 0.230  Inexact Rounded
-pwsx3955  power 0.531  0.5 -> 0.729  Inexact Rounded
-pwsx3956  power 0.0531  0.5 -> 0.230  Inexact Rounded
-pwsx3957  power 0.532  0.5 -> 0.729  Inexact Rounded
-pwsx3958  power 0.0532  0.5 -> 0.231  Inexact Rounded
-pwsx3959  power 0.533  0.5 -> 0.730  Inexact Rounded
-pwsx3960  power 0.0533  0.5 -> 0.231  Inexact Rounded
-pwsx3961  power 0.534  0.5 -> 0.731  Inexact Rounded
-pwsx3962  power 0.0534  0.5 -> 0.231  Inexact Rounded
-pwsx3963  power 0.535  0.5 -> 0.731  Inexact Rounded
-pwsx3964  power 0.0535  0.5 -> 0.231  Inexact Rounded
-pwsx3965  power 0.536  0.5 -> 0.732  Inexact Rounded
-pwsx3966  power 0.0536  0.5 -> 0.232  Inexact Rounded
-pwsx3967  power 0.537  0.5 -> 0.733  Inexact Rounded
-pwsx3968  power 0.0537  0.5 -> 0.232  Inexact Rounded
-pwsx3969  power 0.538  0.5 -> 0.733  Inexact Rounded
-pwsx3970  power 0.0538  0.5 -> 0.232  Inexact Rounded
-pwsx3971  power 0.539  0.5 -> 0.734  Inexact Rounded
-pwsx3972  power 0.0539  0.5 -> 0.232  Inexact Rounded
-pwsx3973  power 0.541  0.5 -> 0.736  Inexact Rounded
-pwsx3974  power 0.0541  0.5 -> 0.233  Inexact Rounded
-pwsx3975  power 0.542  0.5 -> 0.736  Inexact Rounded
-pwsx3976  power 0.0542  0.5 -> 0.233  Inexact Rounded
-pwsx3977  power 0.543  0.5 -> 0.737  Inexact Rounded
-pwsx3978  power 0.0543  0.5 -> 0.233  Inexact Rounded
-pwsx3979  power 0.544  0.5 -> 0.738  Inexact Rounded
-pwsx3980  power 0.0544  0.5 -> 0.233  Inexact Rounded
-pwsx3981  power 0.545  0.5 -> 0.738  Inexact Rounded
-pwsx3982  power 0.0545  0.5 -> 0.233  Inexact Rounded
-pwsx3983  power 0.546  0.5 -> 0.739  Inexact Rounded
-pwsx3984  power 0.0546  0.5 -> 0.234  Inexact Rounded
-pwsx3985  power 0.547  0.5 -> 0.740  Inexact Rounded
-pwsx3986  power 0.0547  0.5 -> 0.234  Inexact Rounded
-pwsx3987  power 0.548  0.5 -> 0.740  Inexact Rounded
-pwsx3988  power 0.0548  0.5 -> 0.234  Inexact Rounded
-pwsx3989  power 0.549  0.5 -> 0.741  Inexact Rounded
-pwsx3990  power 0.0549  0.5 -> 0.234  Inexact Rounded
-pwsx3991  power 0.551  0.5 -> 0.742  Inexact Rounded
-pwsx3992  power 0.0551  0.5 -> 0.235  Inexact Rounded
-pwsx3993  power 0.552  0.5 -> 0.743  Inexact Rounded
-pwsx3994  power 0.0552  0.5 -> 0.235  Inexact Rounded
-pwsx3995  power 0.553  0.5 -> 0.744  Inexact Rounded
-pwsx3996  power 0.0553  0.5 -> 0.235  Inexact Rounded
-pwsx3997  power 0.554  0.5 -> 0.744  Inexact Rounded
-pwsx3998  power 0.0554  0.5 -> 0.235  Inexact Rounded
-pwsx3999  power 0.555  0.5 -> 0.745  Inexact Rounded
-pwsx4000  power 0.0555  0.5 -> 0.236  Inexact Rounded
-pwsx4001  power 0.556  0.5 -> 0.746  Inexact Rounded
-pwsx4002  power 0.0556  0.5 -> 0.236  Inexact Rounded
-pwsx4003  power 0.557  0.5 -> 0.746  Inexact Rounded
-pwsx4004  power 0.0557  0.5 -> 0.236  Inexact Rounded
-pwsx4005  power 0.558  0.5 -> 0.747  Inexact Rounded
-pwsx4006  power 0.0558  0.5 -> 0.236  Inexact Rounded
-pwsx4007  power 0.559  0.5 -> 0.748  Inexact Rounded
-pwsx4008  power 0.0559  0.5 -> 0.236  Inexact Rounded
-pwsx4009  power 0.561  0.5 -> 0.749  Inexact Rounded
-pwsx4010  power 0.0561  0.5 -> 0.237  Inexact Rounded
-pwsx4011  power 0.562  0.5 -> 0.750  Inexact Rounded
-pwsx4012  power 0.0562  0.5 -> 0.237  Inexact Rounded
-pwsx4013  power 0.563  0.5 -> 0.750  Inexact Rounded
-pwsx4014  power 0.0563  0.5 -> 0.237  Inexact Rounded
-pwsx4015  power 0.564  0.5 -> 0.751  Inexact Rounded
-pwsx4016  power 0.0564  0.5 -> 0.237  Inexact Rounded
-pwsx4017  power 0.565  0.5 -> 0.752  Inexact Rounded
-pwsx4018  power 0.0565  0.5 -> 0.238  Inexact Rounded
-pwsx4019  power 0.566  0.5 -> 0.752  Inexact Rounded
-pwsx4020  power 0.0566  0.5 -> 0.238  Inexact Rounded
-pwsx4021  power 0.567  0.5 -> 0.753  Inexact Rounded
-pwsx4022  power 0.0567  0.5 -> 0.238  Inexact Rounded
-pwsx4023  power 0.568  0.5 -> 0.754  Inexact Rounded
-pwsx4024  power 0.0568  0.5 -> 0.238  Inexact Rounded
-pwsx4025  power 0.569  0.5 -> 0.754  Inexact Rounded
-pwsx4026  power 0.0569  0.5 -> 0.239  Inexact Rounded
-pwsx4027  power 0.571  0.5 -> 0.756  Inexact Rounded
-pwsx4028  power 0.0571  0.5 -> 0.239  Inexact Rounded
-pwsx4029  power 0.572  0.5 -> 0.756  Inexact Rounded
-pwsx4030  power 0.0572  0.5 -> 0.239  Inexact Rounded
-pwsx4031  power 0.573  0.5 -> 0.757  Inexact Rounded
-pwsx4032  power 0.0573  0.5 -> 0.239  Inexact Rounded
-pwsx4033  power 0.574  0.5 -> 0.758  Inexact Rounded
-pwsx4034  power 0.0574  0.5 -> 0.240  Inexact Rounded
-pwsx4035  power 0.575  0.5 -> 0.758  Inexact Rounded
-pwsx4036  power 0.0575  0.5 -> 0.240  Inexact Rounded
-pwsx4037  power 0.576  0.5 -> 0.759  Inexact Rounded
-pwsx4038  power 0.0576  0.5 -> 0.240  Inexact Rounded
-pwsx4039  power 0.577  0.5 -> 0.760  Inexact Rounded
-pwsx4040  power 0.0577  0.5 -> 0.240  Inexact Rounded
-pwsx4041  power 0.578  0.5 -> 0.760  Inexact Rounded
-pwsx4042  power 0.0578  0.5 -> 0.240  Inexact Rounded
-pwsx4043  power 0.579  0.5 -> 0.761  Inexact Rounded
-pwsx4044  power 0.0579  0.5 -> 0.241  Inexact Rounded
-pwsx4045  power 0.581  0.5 -> 0.762  Inexact Rounded
-pwsx4046  power 0.0581  0.5 -> 0.241  Inexact Rounded
-pwsx4047  power 0.582  0.5 -> 0.763  Inexact Rounded
-pwsx4048  power 0.0582  0.5 -> 0.241  Inexact Rounded
-pwsx4049  power 0.583  0.5 -> 0.764  Inexact Rounded
-pwsx4050  power 0.0583  0.5 -> 0.241  Inexact Rounded
-pwsx4051  power 0.584  0.5 -> 0.764  Inexact Rounded
-pwsx4052  power 0.0584  0.5 -> 0.242  Inexact Rounded
-pwsx4053  power 0.585  0.5 -> 0.765  Inexact Rounded
-pwsx4054  power 0.0585  0.5 -> 0.242  Inexact Rounded
-pwsx4055  power 0.586  0.5 -> 0.766  Inexact Rounded
-pwsx4056  power 0.0586  0.5 -> 0.242  Inexact Rounded
-pwsx4057  power 0.587  0.5 -> 0.766  Inexact Rounded
-pwsx4058  power 0.0587  0.5 -> 0.242  Inexact Rounded
-pwsx4059  power 0.588  0.5 -> 0.767  Inexact Rounded
-pwsx4060  power 0.0588  0.5 -> 0.242  Inexact Rounded
-pwsx4061  power 0.589  0.5 -> 0.767  Inexact Rounded
-pwsx4062  power 0.0589  0.5 -> 0.243  Inexact Rounded
-pwsx4063  power 0.591  0.5 -> 0.769  Inexact Rounded
-pwsx4064  power 0.0591  0.5 -> 0.243  Inexact Rounded
-pwsx4065  power 0.592  0.5 -> 0.769  Inexact Rounded
-pwsx4066  power 0.0592  0.5 -> 0.243  Inexact Rounded
-pwsx4067  power 0.593  0.5 -> 0.770  Inexact Rounded
-pwsx4068  power 0.0593  0.5 -> 0.244  Inexact Rounded
-pwsx4069  power 0.594  0.5 -> 0.771  Inexact Rounded
-pwsx4070  power 0.0594  0.5 -> 0.244  Inexact Rounded
-pwsx4071  power 0.595  0.5 -> 0.771  Inexact Rounded
-pwsx4072  power 0.0595  0.5 -> 0.244  Inexact Rounded
-pwsx4073  power 0.596  0.5 -> 0.772  Inexact Rounded
-pwsx4074  power 0.0596  0.5 -> 0.244  Inexact Rounded
-pwsx4075  power 0.597  0.5 -> 0.773  Inexact Rounded
-pwsx4076  power 0.0597  0.5 -> 0.244  Inexact Rounded
-pwsx4077  power 0.598  0.5 -> 0.773  Inexact Rounded
-pwsx4078  power 0.0598  0.5 -> 0.245  Inexact Rounded
-pwsx4079  power 0.599  0.5 -> 0.774  Inexact Rounded
-pwsx4080  power 0.0599  0.5 -> 0.245  Inexact Rounded
-pwsx4081  power 0.601  0.5 -> 0.775  Inexact Rounded
-pwsx4082  power 0.0601  0.5 -> 0.245  Inexact Rounded
-pwsx4083  power 0.602  0.5 -> 0.776  Inexact Rounded
-pwsx4084  power 0.0602  0.5 -> 0.245  Inexact Rounded
-pwsx4085  power 0.603  0.5 -> 0.777  Inexact Rounded
-pwsx4086  power 0.0603  0.5 -> 0.246  Inexact Rounded
-pwsx4087  power 0.604  0.5 -> 0.777  Inexact Rounded
-pwsx4088  power 0.0604  0.5 -> 0.246  Inexact Rounded
-pwsx4089  power 0.605  0.5 -> 0.778  Inexact Rounded
-pwsx4090  power 0.0605  0.5 -> 0.246  Inexact Rounded
-pwsx4091  power 0.606  0.5 -> 0.778  Inexact Rounded
-pwsx4092  power 0.0606  0.5 -> 0.246  Inexact Rounded
-pwsx4093  power 0.607  0.5 -> 0.779  Inexact Rounded
-pwsx4094  power 0.0607  0.5 -> 0.246  Inexact Rounded
-pwsx4095  power 0.608  0.5 -> 0.780  Inexact Rounded
-pwsx4096  power 0.0608  0.5 -> 0.247  Inexact Rounded
-pwsx4097  power 0.609  0.5 -> 0.780  Inexact Rounded
-pwsx4098  power 0.0609  0.5 -> 0.247  Inexact Rounded
-pwsx4099  power 0.611  0.5 -> 0.782  Inexact Rounded
-pwsx4100  power 0.0611  0.5 -> 0.247  Inexact Rounded
-pwsx4101  power 0.612  0.5 -> 0.782  Inexact Rounded
-pwsx4102  power 0.0612  0.5 -> 0.247  Inexact Rounded
-pwsx4103  power 0.613  0.5 -> 0.783  Inexact Rounded
-pwsx4104  power 0.0613  0.5 -> 0.248  Inexact Rounded
-pwsx4105  power 0.614  0.5 -> 0.784  Inexact Rounded
-pwsx4106  power 0.0614  0.5 -> 0.248  Inexact Rounded
-pwsx4107  power 0.615  0.5 -> 0.784  Inexact Rounded
-pwsx4108  power 0.0615  0.5 -> 0.248  Inexact Rounded
-pwsx4109  power 0.616  0.5 -> 0.785  Inexact Rounded
-pwsx4110  power 0.0616  0.5 -> 0.248  Inexact Rounded
-pwsx4111  power 0.617  0.5 -> 0.785  Inexact Rounded
-pwsx4112  power 0.0617  0.5 -> 0.248  Inexact Rounded
-pwsx4113  power 0.618  0.5 -> 0.786  Inexact Rounded
-pwsx4114  power 0.0618  0.5 -> 0.249  Inexact Rounded
-pwsx4115  power 0.619  0.5 -> 0.787  Inexact Rounded
-pwsx4116  power 0.0619  0.5 -> 0.249  Inexact Rounded
-pwsx4117  power 0.621  0.5 -> 0.788  Inexact Rounded
-pwsx4118  power 0.0621  0.5 -> 0.249  Inexact Rounded
-pwsx4119  power 0.622  0.5 -> 0.789  Inexact Rounded
-pwsx4120  power 0.0622  0.5 -> 0.249  Inexact Rounded
-pwsx4121  power 0.623  0.5 -> 0.789  Inexact Rounded
-pwsx4122  power 0.0623  0.5 -> 0.250  Inexact Rounded
-pwsx4123  power 0.624  0.5 -> 0.790  Inexact Rounded
-pwsx4124  power 0.0624  0.5 -> 0.250  Inexact Rounded
-pwsx4125  power 0.625  0.5 -> 0.791  Inexact Rounded
-pwsx4126  power 0.0625  0.5 -> 0.250  Inexact Rounded
-pwsx4127  power 0.626  0.5 -> 0.791  Inexact Rounded
-pwsx4128  power 0.0626  0.5 -> 0.250  Inexact Rounded
-pwsx4129  power 0.627  0.5 -> 0.792  Inexact Rounded
-pwsx4130  power 0.0627  0.5 -> 0.250  Inexact Rounded
-pwsx4131  power 0.628  0.5 -> 0.792  Inexact Rounded
-pwsx4132  power 0.0628  0.5 -> 0.251  Inexact Rounded
-pwsx4133  power 0.629  0.5 -> 0.793  Inexact Rounded
-pwsx4134  power 0.0629  0.5 -> 0.251  Inexact Rounded
-pwsx4135  power 0.631  0.5 -> 0.794  Inexact Rounded
-pwsx4136  power 0.0631  0.5 -> 0.251  Inexact Rounded
-pwsx4137  power 0.632  0.5 -> 0.795  Inexact Rounded
-pwsx4138  power 0.0632  0.5 -> 0.251  Inexact Rounded
-pwsx4139  power 0.633  0.5 -> 0.796  Inexact Rounded
-pwsx4140  power 0.0633  0.5 -> 0.252  Inexact Rounded
-pwsx4141  power 0.634  0.5 -> 0.796  Inexact Rounded
-pwsx4142  power 0.0634  0.5 -> 0.252  Inexact Rounded
-pwsx4143  power 0.635  0.5 -> 0.797  Inexact Rounded
-pwsx4144  power 0.0635  0.5 -> 0.252  Inexact Rounded
-pwsx4145  power 0.636  0.5 -> 0.797  Inexact Rounded
-pwsx4146  power 0.0636  0.5 -> 0.252  Inexact Rounded
-pwsx4147  power 0.637  0.5 -> 0.798  Inexact Rounded
-pwsx4148  power 0.0637  0.5 -> 0.252  Inexact Rounded
-pwsx4149  power 0.638  0.5 -> 0.799  Inexact Rounded
-pwsx4150  power 0.0638  0.5 -> 0.253  Inexact Rounded
-pwsx4151  power 0.639  0.5 -> 0.799  Inexact Rounded
-pwsx4152  power 0.0639  0.5 -> 0.253  Inexact Rounded
-pwsx4153  power 0.641  0.5 -> 0.801  Inexact Rounded
-pwsx4154  power 0.0641  0.5 -> 0.253  Inexact Rounded
-pwsx4155  power 0.642  0.5 -> 0.801  Inexact Rounded
-pwsx4156  power 0.0642  0.5 -> 0.253  Inexact Rounded
-pwsx4157  power 0.643  0.5 -> 0.802  Inexact Rounded
-pwsx4158  power 0.0643  0.5 -> 0.254  Inexact Rounded
-pwsx4159  power 0.644  0.5 -> 0.802  Inexact Rounded
-pwsx4160  power 0.0644  0.5 -> 0.254  Inexact Rounded
-pwsx4161  power 0.645  0.5 -> 0.803  Inexact Rounded
-pwsx4162  power 0.0645  0.5 -> 0.254  Inexact Rounded
-pwsx4163  power 0.646  0.5 -> 0.804  Inexact Rounded
-pwsx4164  power 0.0646  0.5 -> 0.254  Inexact Rounded
-pwsx4165  power 0.647  0.5 -> 0.804  Inexact Rounded
-pwsx4166  power 0.0647  0.5 -> 0.254  Inexact Rounded
-pwsx4167  power 0.648  0.5 -> 0.805  Inexact Rounded
-pwsx4168  power 0.0648  0.5 -> 0.255  Inexact Rounded
-pwsx4169  power 0.649  0.5 -> 0.806  Inexact Rounded
-pwsx4170  power 0.0649  0.5 -> 0.255  Inexact Rounded
-pwsx4171  power 0.651  0.5 -> 0.807  Inexact Rounded
-pwsx4172  power 0.0651  0.5 -> 0.255  Inexact Rounded
-pwsx4173  power 0.652  0.5 -> 0.807  Inexact Rounded
-pwsx4174  power 0.0652  0.5 -> 0.255  Inexact Rounded
-pwsx4175  power 0.653  0.5 -> 0.808  Inexact Rounded
-pwsx4176  power 0.0653  0.5 -> 0.256  Inexact Rounded
-pwsx4177  power 0.654  0.5 -> 0.809  Inexact Rounded
-pwsx4178  power 0.0654  0.5 -> 0.256  Inexact Rounded
-pwsx4179  power 0.655  0.5 -> 0.809  Inexact Rounded
-pwsx4180  power 0.0655  0.5 -> 0.256  Inexact Rounded
-pwsx4181  power 0.656  0.5 -> 0.810  Inexact Rounded
-pwsx4182  power 0.0656  0.5 -> 0.256  Inexact Rounded
-pwsx4183  power 0.657  0.5 -> 0.811  Inexact Rounded
-pwsx4184  power 0.0657  0.5 -> 0.256  Inexact Rounded
-pwsx4185  power 0.658  0.5 -> 0.811  Inexact Rounded
-pwsx4186  power 0.0658  0.5 -> 0.257  Inexact Rounded
-pwsx4187  power 0.659  0.5 -> 0.812  Inexact Rounded
-pwsx4188  power 0.0659  0.5 -> 0.257  Inexact Rounded
-pwsx4189  power 0.661  0.5 -> 0.813  Inexact Rounded
-pwsx4190  power 0.0661  0.5 -> 0.257  Inexact Rounded
-pwsx4191  power 0.662  0.5 -> 0.814  Inexact Rounded
-pwsx4192  power 0.0662  0.5 -> 0.257  Inexact Rounded
-pwsx4193  power 0.663  0.5 -> 0.814  Inexact Rounded
-pwsx4194  power 0.0663  0.5 -> 0.257  Inexact Rounded
-pwsx4195  power 0.664  0.5 -> 0.815  Inexact Rounded
-pwsx4196  power 0.0664  0.5 -> 0.258  Inexact Rounded
-pwsx4197  power 0.665  0.5 -> 0.815  Inexact Rounded
-pwsx4198  power 0.0665  0.5 -> 0.258  Inexact Rounded
-pwsx4199  power 0.666  0.5 -> 0.816  Inexact Rounded
-pwsx4200  power 0.0666  0.5 -> 0.258  Inexact Rounded
-pwsx4201  power 0.667  0.5 -> 0.817  Inexact Rounded
-pwsx4202  power 0.0667  0.5 -> 0.258  Inexact Rounded
-pwsx4203  power 0.668  0.5 -> 0.817  Inexact Rounded
-pwsx4204  power 0.0668  0.5 -> 0.258  Inexact Rounded
-pwsx4205  power 0.669  0.5 -> 0.818  Inexact Rounded
-pwsx4206  power 0.0669  0.5 -> 0.259  Inexact Rounded
-pwsx4207  power 0.671  0.5 -> 0.819  Inexact Rounded
-pwsx4208  power 0.0671  0.5 -> 0.259  Inexact Rounded
-pwsx4209  power 0.672  0.5 -> 0.820  Inexact Rounded
-pwsx4210  power 0.0672  0.5 -> 0.259  Inexact Rounded
-pwsx4211  power 0.673  0.5 -> 0.820  Inexact Rounded
-pwsx4212  power 0.0673  0.5 -> 0.259  Inexact Rounded
-pwsx4213  power 0.674  0.5 -> 0.821  Inexact Rounded
-pwsx4214  power 0.0674  0.5 -> 0.260  Inexact Rounded
-pwsx4215  power 0.675  0.5 -> 0.822  Inexact Rounded
-pwsx4216  power 0.0675  0.5 -> 0.260  Inexact Rounded
-pwsx4217  power 0.676  0.5 -> 0.822  Inexact Rounded
-pwsx4218  power 0.0676  0.5 -> 0.260  Inexact Rounded
-pwsx4219  power 0.677  0.5 -> 0.823  Inexact Rounded
-pwsx4220  power 0.0677  0.5 -> 0.260  Inexact Rounded
-pwsx4221  power 0.678  0.5 -> 0.823  Inexact Rounded
-pwsx4222  power 0.0678  0.5 -> 0.260  Inexact Rounded
-pwsx4223  power 0.679  0.5 -> 0.824  Inexact Rounded
-pwsx4224  power 0.0679  0.5 -> 0.261  Inexact Rounded
-pwsx4225  power 0.681  0.5 -> 0.825  Inexact Rounded
-pwsx4226  power 0.0681  0.5 -> 0.261  Inexact Rounded
-pwsx4227  power 0.682  0.5 -> 0.826  Inexact Rounded
-pwsx4228  power 0.0682  0.5 -> 0.261  Inexact Rounded
-pwsx4229  power 0.683  0.5 -> 0.826  Inexact Rounded
-pwsx4230  power 0.0683  0.5 -> 0.261  Inexact Rounded
-pwsx4231  power 0.684  0.5 -> 0.827  Inexact Rounded
-pwsx4232  power 0.0684  0.5 -> 0.262  Inexact Rounded
-pwsx4233  power 0.685  0.5 -> 0.828  Inexact Rounded
-pwsx4234  power 0.0685  0.5 -> 0.262  Inexact Rounded
-pwsx4235  power 0.686  0.5 -> 0.828  Inexact Rounded
-pwsx4236  power 0.0686  0.5 -> 0.262  Inexact Rounded
-pwsx4237  power 0.687  0.5 -> 0.829  Inexact Rounded
-pwsx4238  power 0.0687  0.5 -> 0.262  Inexact Rounded
-pwsx4239  power 0.688  0.5 -> 0.829  Inexact Rounded
-pwsx4240  power 0.0688  0.5 -> 0.262  Inexact Rounded
-pwsx4241  power 0.689  0.5 -> 0.830  Inexact Rounded
-pwsx4242  power 0.0689  0.5 -> 0.262  Inexact Rounded
-pwsx4243  power 0.691  0.5 -> 0.831  Inexact Rounded
-pwsx4244  power 0.0691  0.5 -> 0.263  Inexact Rounded
-pwsx4245  power 0.692  0.5 -> 0.832  Inexact Rounded
-pwsx4246  power 0.0692  0.5 -> 0.263  Inexact Rounded
-pwsx4247  power 0.693  0.5 -> 0.832  Inexact Rounded
-pwsx4248  power 0.0693  0.5 -> 0.263  Inexact Rounded
-pwsx4249  power 0.694  0.5 -> 0.833  Inexact Rounded
-pwsx4250  power 0.0694  0.5 -> 0.263  Inexact Rounded
-pwsx4251  power 0.695  0.5 -> 0.834  Inexact Rounded
-pwsx4252  power 0.0695  0.5 -> 0.264  Inexact Rounded
-pwsx4253  power 0.696  0.5 -> 0.834  Inexact Rounded
-pwsx4254  power 0.0696  0.5 -> 0.264  Inexact Rounded
-pwsx4255  power 0.697  0.5 -> 0.835  Inexact Rounded
-pwsx4256  power 0.0697  0.5 -> 0.264  Inexact Rounded
-pwsx4257  power 0.698  0.5 -> 0.835  Inexact Rounded
-pwsx4258  power 0.0698  0.5 -> 0.264  Inexact Rounded
-pwsx4259  power 0.699  0.5 -> 0.836  Inexact Rounded
-pwsx4260  power 0.0699  0.5 -> 0.264  Inexact Rounded
-pwsx4261  power 0.701  0.5 -> 0.837  Inexact Rounded
-pwsx4262  power 0.0701  0.5 -> 0.265  Inexact Rounded
-pwsx4263  power 0.702  0.5 -> 0.838  Inexact Rounded
-pwsx4264  power 0.0702  0.5 -> 0.265  Inexact Rounded
-pwsx4265  power 0.703  0.5 -> 0.838  Inexact Rounded
-pwsx4266  power 0.0703  0.5 -> 0.265  Inexact Rounded
-pwsx4267  power 0.704  0.5 -> 0.839  Inexact Rounded
-pwsx4268  power 0.0704  0.5 -> 0.265  Inexact Rounded
-pwsx4269  power 0.705  0.5 -> 0.840  Inexact Rounded
-pwsx4270  power 0.0705  0.5 -> 0.266  Inexact Rounded
-pwsx4271  power 0.706  0.5 -> 0.840  Inexact Rounded
-pwsx4272  power 0.0706  0.5 -> 0.266  Inexact Rounded
-pwsx4273  power 0.707  0.5 -> 0.841  Inexact Rounded
-pwsx4274  power 0.0707  0.5 -> 0.266  Inexact Rounded
-pwsx4275  power 0.708  0.5 -> 0.841  Inexact Rounded
-pwsx4276  power 0.0708  0.5 -> 0.266  Inexact Rounded
-pwsx4277  power 0.709  0.5 -> 0.842  Inexact Rounded
-pwsx4278  power 0.0709  0.5 -> 0.266  Inexact Rounded
-pwsx4279  power 0.711  0.5 -> 0.843  Inexact Rounded
-pwsx4280  power 0.0711  0.5 -> 0.267  Inexact Rounded
-pwsx4281  power 0.712  0.5 -> 0.844  Inexact Rounded
-pwsx4282  power 0.0712  0.5 -> 0.267  Inexact Rounded
-pwsx4283  power 0.713  0.5 -> 0.844  Inexact Rounded
-pwsx4284  power 0.0713  0.5 -> 0.267  Inexact Rounded
-pwsx4285  power 0.714  0.5 -> 0.845  Inexact Rounded
-pwsx4286  power 0.0714  0.5 -> 0.267  Inexact Rounded
-pwsx4287  power 0.715  0.5 -> 0.846  Inexact Rounded
-pwsx4288  power 0.0715  0.5 -> 0.267  Inexact Rounded
-pwsx4289  power 0.716  0.5 -> 0.846  Inexact Rounded
-pwsx4290  power 0.0716  0.5 -> 0.268  Inexact Rounded
-pwsx4291  power 0.717  0.5 -> 0.847  Inexact Rounded
-pwsx4292  power 0.0717  0.5 -> 0.268  Inexact Rounded
-pwsx4293  power 0.718  0.5 -> 0.847  Inexact Rounded
-pwsx4294  power 0.0718  0.5 -> 0.268  Inexact Rounded
-pwsx4295  power 0.719  0.5 -> 0.848  Inexact Rounded
-pwsx4296  power 0.0719  0.5 -> 0.268  Inexact Rounded
-pwsx4297  power 0.721  0.5 -> 0.849  Inexact Rounded
-pwsx4298  power 0.0721  0.5 -> 0.269  Inexact Rounded
-pwsx4299  power 0.722  0.5 -> 0.850  Inexact Rounded
-pwsx4300  power 0.0722  0.5 -> 0.269  Inexact Rounded
-pwsx4301  power 0.723  0.5 -> 0.850  Inexact Rounded
-pwsx4302  power 0.0723  0.5 -> 0.269  Inexact Rounded
-pwsx4303  power 0.724  0.5 -> 0.851  Inexact Rounded
-pwsx4304  power 0.0724  0.5 -> 0.269  Inexact Rounded
-pwsx4305  power 0.725  0.5 -> 0.851  Inexact Rounded
-pwsx4306  power 0.0725  0.5 -> 0.269  Inexact Rounded
-pwsx4307  power 0.726  0.5 -> 0.852  Inexact Rounded
-pwsx4308  power 0.0726  0.5 -> 0.269  Inexact Rounded
-pwsx4309  power 0.727  0.5 -> 0.853  Inexact Rounded
-pwsx4310  power 0.0727  0.5 -> 0.270  Inexact Rounded
-pwsx4311  power 0.728  0.5 -> 0.853  Inexact Rounded
-pwsx4312  power 0.0728  0.5 -> 0.270  Inexact Rounded
-pwsx4313  power 0.729  0.5 -> 0.854  Inexact Rounded
-pwsx4314  power 0.0729  0.5 -> 0.270  Inexact Rounded
-pwsx4315  power 0.731  0.5 -> 0.855  Inexact Rounded
-pwsx4316  power 0.0731  0.5 -> 0.270  Inexact Rounded
-pwsx4317  power 0.732  0.5 -> 0.856  Inexact Rounded
-pwsx4318  power 0.0732  0.5 -> 0.271  Inexact Rounded
-pwsx4319  power 0.733  0.5 -> 0.856  Inexact Rounded
-pwsx4320  power 0.0733  0.5 -> 0.271  Inexact Rounded
-pwsx4321  power 0.734  0.5 -> 0.857  Inexact Rounded
-pwsx4322  power 0.0734  0.5 -> 0.271  Inexact Rounded
-pwsx4323  power 0.735  0.5 -> 0.857  Inexact Rounded
-pwsx4324  power 0.0735  0.5 -> 0.271  Inexact Rounded
-pwsx4325  power 0.736  0.5 -> 0.858  Inexact Rounded
-pwsx4326  power 0.0736  0.5 -> 0.271  Inexact Rounded
-pwsx4327  power 0.737  0.5 -> 0.858  Inexact Rounded
-pwsx4328  power 0.0737  0.5 -> 0.271  Inexact Rounded
-pwsx4329  power 0.738  0.5 -> 0.859  Inexact Rounded
-pwsx4330  power 0.0738  0.5 -> 0.272  Inexact Rounded
-pwsx4331  power 0.739  0.5 -> 0.860  Inexact Rounded
-pwsx4332  power 0.0739  0.5 -> 0.272  Inexact Rounded
-pwsx4333  power 0.741  0.5 -> 0.861  Inexact Rounded
-pwsx4334  power 0.0741  0.5 -> 0.272  Inexact Rounded
-pwsx4335  power 0.742  0.5 -> 0.861  Inexact Rounded
-pwsx4336  power 0.0742  0.5 -> 0.272  Inexact Rounded
-pwsx4337  power 0.743  0.5 -> 0.862  Inexact Rounded
-pwsx4338  power 0.0743  0.5 -> 0.273  Inexact Rounded
-pwsx4339  power 0.744  0.5 -> 0.863  Inexact Rounded
-pwsx4340  power 0.0744  0.5 -> 0.273  Inexact Rounded
-pwsx4341  power 0.745  0.5 -> 0.863  Inexact Rounded
-pwsx4342  power 0.0745  0.5 -> 0.273  Inexact Rounded
-pwsx4343  power 0.746  0.5 -> 0.864  Inexact Rounded
-pwsx4344  power 0.0746  0.5 -> 0.273  Inexact Rounded
-pwsx4345  power 0.747  0.5 -> 0.864  Inexact Rounded
-pwsx4346  power 0.0747  0.5 -> 0.273  Inexact Rounded
-pwsx4347  power 0.748  0.5 -> 0.865  Inexact Rounded
-pwsx4348  power 0.0748  0.5 -> 0.273  Inexact Rounded
-pwsx4349  power 0.749  0.5 -> 0.865  Inexact Rounded
-pwsx4350  power 0.0749  0.5 -> 0.274  Inexact Rounded
-pwsx4351  power 0.751  0.5 -> 0.867  Inexact Rounded
-pwsx4352  power 0.0751  0.5 -> 0.274  Inexact Rounded
-pwsx4353  power 0.752  0.5 -> 0.867  Inexact Rounded
-pwsx4354  power 0.0752  0.5 -> 0.274  Inexact Rounded
-pwsx4355  power 0.753  0.5 -> 0.868  Inexact Rounded
-pwsx4356  power 0.0753  0.5 -> 0.274  Inexact Rounded
-pwsx4357  power 0.754  0.5 -> 0.868  Inexact Rounded
-pwsx4358  power 0.0754  0.5 -> 0.275  Inexact Rounded
-pwsx4359  power 0.755  0.5 -> 0.869  Inexact Rounded
-pwsx4360  power 0.0755  0.5 -> 0.275  Inexact Rounded
-pwsx4361  power 0.756  0.5 -> 0.869  Inexact Rounded
-pwsx4362  power 0.0756  0.5 -> 0.275  Inexact Rounded
-pwsx4363  power 0.757  0.5 -> 0.870  Inexact Rounded
-pwsx4364  power 0.0757  0.5 -> 0.275  Inexact Rounded
-pwsx4365  power 0.758  0.5 -> 0.871  Inexact Rounded
-pwsx4366  power 0.0758  0.5 -> 0.275  Inexact Rounded
-pwsx4367  power 0.759  0.5 -> 0.871  Inexact Rounded
-pwsx4368  power 0.0759  0.5 -> 0.275  Inexact Rounded
-pwsx4369  power 0.761  0.5 -> 0.872  Inexact Rounded
-pwsx4370  power 0.0761  0.5 -> 0.276  Inexact Rounded
-pwsx4371  power 0.762  0.5 -> 0.873  Inexact Rounded
-pwsx4372  power 0.0762  0.5 -> 0.276  Inexact Rounded
-pwsx4373  power 0.763  0.5 -> 0.873  Inexact Rounded
-pwsx4374  power 0.0763  0.5 -> 0.276  Inexact Rounded
-pwsx4375  power 0.764  0.5 -> 0.874  Inexact Rounded
-pwsx4376  power 0.0764  0.5 -> 0.276  Inexact Rounded
-pwsx4377  power 0.765  0.5 -> 0.875  Inexact Rounded
-pwsx4378  power 0.0765  0.5 -> 0.277  Inexact Rounded
-pwsx4379  power 0.766  0.5 -> 0.875  Inexact Rounded
-pwsx4380  power 0.0766  0.5 -> 0.277  Inexact Rounded
-pwsx4381  power 0.767  0.5 -> 0.876  Inexact Rounded
-pwsx4382  power 0.0767  0.5 -> 0.277  Inexact Rounded
-pwsx4383  power 0.768  0.5 -> 0.876  Inexact Rounded
-pwsx4384  power 0.0768  0.5 -> 0.277  Inexact Rounded
-pwsx4385  power 0.769  0.5 -> 0.877  Inexact Rounded
-pwsx4386  power 0.0769  0.5 -> 0.277  Inexact Rounded
-pwsx4387  power 0.771  0.5 -> 0.878  Inexact Rounded
-pwsx4388  power 0.0771  0.5 -> 0.278  Inexact Rounded
-pwsx4389  power 0.772  0.5 -> 0.879  Inexact Rounded
-pwsx4390  power 0.0772  0.5 -> 0.278  Inexact Rounded
-pwsx4391  power 0.773  0.5 -> 0.879  Inexact Rounded
-pwsx4392  power 0.0773  0.5 -> 0.278  Inexact Rounded
-pwsx4393  power 0.774  0.5 -> 0.880  Inexact Rounded
-pwsx4394  power 0.0774  0.5 -> 0.278  Inexact Rounded
-pwsx4395  power 0.775  0.5 -> 0.880  Inexact Rounded
-pwsx4396  power 0.0775  0.5 -> 0.278  Inexact Rounded
-pwsx4397  power 0.776  0.5 -> 0.881  Inexact Rounded
-pwsx4398  power 0.0776  0.5 -> 0.279  Inexact Rounded
-pwsx4399  power 0.777  0.5 -> 0.881  Inexact Rounded
-pwsx4400  power 0.0777  0.5 -> 0.279  Inexact Rounded
-pwsx4401  power 0.778  0.5 -> 0.882  Inexact Rounded
-pwsx4402  power 0.0778  0.5 -> 0.279  Inexact Rounded
-pwsx4403  power 0.779  0.5 -> 0.883  Inexact Rounded
-pwsx4404  power 0.0779  0.5 -> 0.279  Inexact Rounded
-pwsx4405  power 0.781  0.5 -> 0.884  Inexact Rounded
-pwsx4406  power 0.0781  0.5 -> 0.279  Inexact Rounded
-pwsx4407  power 0.782  0.5 -> 0.884  Inexact Rounded
-pwsx4408  power 0.0782  0.5 -> 0.280  Inexact Rounded
-pwsx4409  power 0.783  0.5 -> 0.885  Inexact Rounded
-pwsx4410  power 0.0783  0.5 -> 0.280  Inexact Rounded
-pwsx4411  power 0.784  0.5 -> 0.885  Inexact Rounded
-pwsx4412  power 0.0784  0.5 -> 0.280  Inexact Rounded
-pwsx4413  power 0.785  0.5 -> 0.886  Inexact Rounded
-pwsx4414  power 0.0785  0.5 -> 0.280  Inexact Rounded
-pwsx4415  power 0.786  0.5 -> 0.887  Inexact Rounded
-pwsx4416  power 0.0786  0.5 -> 0.280  Inexact Rounded
-pwsx4417  power 0.787  0.5 -> 0.887  Inexact Rounded
-pwsx4418  power 0.0787  0.5 -> 0.281  Inexact Rounded
-pwsx4419  power 0.788  0.5 -> 0.888  Inexact Rounded
-pwsx4420  power 0.0788  0.5 -> 0.281  Inexact Rounded
-pwsx4421  power 0.789  0.5 -> 0.888  Inexact Rounded
-pwsx4422  power 0.0789  0.5 -> 0.281  Inexact Rounded
-pwsx4423  power 0.791  0.5 -> 0.889  Inexact Rounded
-pwsx4424  power 0.0791  0.5 -> 0.281  Inexact Rounded
-pwsx4425  power 0.792  0.5 -> 0.890  Inexact Rounded
-pwsx4426  power 0.0792  0.5 -> 0.281  Inexact Rounded
-pwsx4427  power 0.793  0.5 -> 0.891  Inexact Rounded
-pwsx4428  power 0.0793  0.5 -> 0.282  Inexact Rounded
-pwsx4429  power 0.794  0.5 -> 0.891  Inexact Rounded
-pwsx4430  power 0.0794  0.5 -> 0.282  Inexact Rounded
-pwsx4431  power 0.795  0.5 -> 0.892  Inexact Rounded
-pwsx4432  power 0.0795  0.5 -> 0.282  Inexact Rounded
-pwsx4433  power 0.796  0.5 -> 0.892  Inexact Rounded
-pwsx4434  power 0.0796  0.5 -> 0.282  Inexact Rounded
-pwsx4435  power 0.797  0.5 -> 0.893  Inexact Rounded
-pwsx4436  power 0.0797  0.5 -> 0.282  Inexact Rounded
-pwsx4437  power 0.798  0.5 -> 0.893  Inexact Rounded
-pwsx4438  power 0.0798  0.5 -> 0.282  Inexact Rounded
-pwsx4439  power 0.799  0.5 -> 0.894  Inexact Rounded
-pwsx4440  power 0.0799  0.5 -> 0.283  Inexact Rounded
-pwsx4441  power 0.801  0.5 -> 0.895  Inexact Rounded
-pwsx4442  power 0.0801  0.5 -> 0.283  Inexact Rounded
-pwsx4443  power 0.802  0.5 -> 0.896  Inexact Rounded
-pwsx4444  power 0.0802  0.5 -> 0.283  Inexact Rounded
-pwsx4445  power 0.803  0.5 -> 0.896  Inexact Rounded
-pwsx4446  power 0.0803  0.5 -> 0.283  Inexact Rounded
-pwsx4447  power 0.804  0.5 -> 0.897  Inexact Rounded
-pwsx4448  power 0.0804  0.5 -> 0.284  Inexact Rounded
-pwsx4449  power 0.805  0.5 -> 0.897  Inexact Rounded
-pwsx4450  power 0.0805  0.5 -> 0.284  Inexact Rounded
-pwsx4451  power 0.806  0.5 -> 0.898  Inexact Rounded
-pwsx4452  power 0.0806  0.5 -> 0.284  Inexact Rounded
-pwsx4453  power 0.807  0.5 -> 0.898  Inexact Rounded
-pwsx4454  power 0.0807  0.5 -> 0.284  Inexact Rounded
-pwsx4455  power 0.808  0.5 -> 0.899  Inexact Rounded
-pwsx4456  power 0.0808  0.5 -> 0.284  Inexact Rounded
-pwsx4457  power 0.809  0.5 -> 0.899  Inexact Rounded
-pwsx4458  power 0.0809  0.5 -> 0.284  Inexact Rounded
-pwsx4459  power 0.811  0.5 -> 0.901  Inexact Rounded
-pwsx4460  power 0.0811  0.5 -> 0.285  Inexact Rounded
-pwsx4461  power 0.812  0.5 -> 0.901  Inexact Rounded
-pwsx4462  power 0.0812  0.5 -> 0.285  Inexact Rounded
-pwsx4463  power 0.813  0.5 -> 0.902  Inexact Rounded
-pwsx4464  power 0.0813  0.5 -> 0.285  Inexact Rounded
-pwsx4465  power 0.814  0.5 -> 0.902  Inexact Rounded
-pwsx4466  power 0.0814  0.5 -> 0.285  Inexact Rounded
-pwsx4467  power 0.815  0.5 -> 0.903  Inexact Rounded
-pwsx4468  power 0.0815  0.5 -> 0.285  Inexact Rounded
-pwsx4469  power 0.816  0.5 -> 0.903  Inexact Rounded
-pwsx4470  power 0.0816  0.5 -> 0.286  Inexact Rounded
-pwsx4471  power 0.817  0.5 -> 0.904  Inexact Rounded
-pwsx4472  power 0.0817  0.5 -> 0.286  Inexact Rounded
-pwsx4473  power 0.818  0.5 -> 0.904  Inexact Rounded
-pwsx4474  power 0.0818  0.5 -> 0.286  Inexact Rounded
-pwsx4475  power 0.819  0.5 -> 0.905  Inexact Rounded
-pwsx4476  power 0.0819  0.5 -> 0.286  Inexact Rounded
-pwsx4477  power 0.821  0.5 -> 0.906  Inexact Rounded
-pwsx4478  power 0.0821  0.5 -> 0.287  Inexact Rounded
-pwsx4479  power 0.822  0.5 -> 0.907  Inexact Rounded
-pwsx4480  power 0.0822  0.5 -> 0.287  Inexact Rounded
-pwsx4481  power 0.823  0.5 -> 0.907  Inexact Rounded
-pwsx4482  power 0.0823  0.5 -> 0.287  Inexact Rounded
-pwsx4483  power 0.824  0.5 -> 0.908  Inexact Rounded
-pwsx4484  power 0.0824  0.5 -> 0.287  Inexact Rounded
-pwsx4485  power 0.825  0.5 -> 0.908  Inexact Rounded
-pwsx4486  power 0.0825  0.5 -> 0.287  Inexact Rounded
-pwsx4487  power 0.826  0.5 -> 0.909  Inexact Rounded
-pwsx4488  power 0.0826  0.5 -> 0.287  Inexact Rounded
-pwsx4489  power 0.827  0.5 -> 0.909  Inexact Rounded
-pwsx4490  power 0.0827  0.5 -> 0.288  Inexact Rounded
-pwsx4491  power 0.828  0.5 -> 0.910  Inexact Rounded
-pwsx4492  power 0.0828  0.5 -> 0.288  Inexact Rounded
-pwsx4493  power 0.829  0.5 -> 0.910  Inexact Rounded
-pwsx4494  power 0.0829  0.5 -> 0.288  Inexact Rounded
-pwsx4495  power 0.831  0.5 -> 0.912  Inexact Rounded
-pwsx4496  power 0.0831  0.5 -> 0.288  Inexact Rounded
-pwsx4497  power 0.832  0.5 -> 0.912  Inexact Rounded
-pwsx4498  power 0.0832  0.5 -> 0.288  Inexact Rounded
-pwsx4499  power 0.833  0.5 -> 0.913  Inexact Rounded
-pwsx4500  power 0.0833  0.5 -> 0.289  Inexact Rounded
-pwsx4501  power 0.834  0.5 -> 0.913  Inexact Rounded
-pwsx4502  power 0.0834  0.5 -> 0.289  Inexact Rounded
-pwsx4503  power 0.835  0.5 -> 0.914  Inexact Rounded
-pwsx4504  power 0.0835  0.5 -> 0.289  Inexact Rounded
-pwsx4505  power 0.836  0.5 -> 0.914  Inexact Rounded
-pwsx4506  power 0.0836  0.5 -> 0.289  Inexact Rounded
-pwsx4507  power 0.837  0.5 -> 0.915  Inexact Rounded
-pwsx4508  power 0.0837  0.5 -> 0.289  Inexact Rounded
-pwsx4509  power 0.838  0.5 -> 0.915  Inexact Rounded
-pwsx4510  power 0.0838  0.5 -> 0.289  Inexact Rounded
-pwsx4511  power 0.839  0.5 -> 0.916  Inexact Rounded
-pwsx4512  power 0.0839  0.5 -> 0.290  Inexact Rounded
-pwsx4513  power 0.841  0.5 -> 0.917  Inexact Rounded
-pwsx4514  power 0.0841  0.5 -> 0.290  Inexact Rounded
-pwsx4515  power 0.842  0.5 -> 0.918  Inexact Rounded
-pwsx4516  power 0.0842  0.5 -> 0.290  Inexact Rounded
-pwsx4517  power 0.843  0.5 -> 0.918  Inexact Rounded
-pwsx4518  power 0.0843  0.5 -> 0.290  Inexact Rounded
-pwsx4519  power 0.844  0.5 -> 0.919  Inexact Rounded
-pwsx4520  power 0.0844  0.5 -> 0.291  Inexact Rounded
-pwsx4521  power 0.845  0.5 -> 0.919  Inexact Rounded
-pwsx4522  power 0.0845  0.5 -> 0.291  Inexact Rounded
-pwsx4523  power 0.846  0.5 -> 0.920  Inexact Rounded
-pwsx4524  power 0.0846  0.5 -> 0.291  Inexact Rounded
-pwsx4525  power 0.847  0.5 -> 0.920  Inexact Rounded
-pwsx4526  power 0.0847  0.5 -> 0.291  Inexact Rounded
-pwsx4527  power 0.848  0.5 -> 0.921  Inexact Rounded
-pwsx4528  power 0.0848  0.5 -> 0.291  Inexact Rounded
-pwsx4529  power 0.849  0.5 -> 0.921  Inexact Rounded
-pwsx4530  power 0.0849  0.5 -> 0.291  Inexact Rounded
-pwsx4531  power 0.851  0.5 -> 0.922  Inexact Rounded
-pwsx4532  power 0.0851  0.5 -> 0.292  Inexact Rounded
-pwsx4533  power 0.852  0.5 -> 0.923  Inexact Rounded
-pwsx4534  power 0.0852  0.5 -> 0.292  Inexact Rounded
-pwsx4535  power 0.853  0.5 -> 0.924  Inexact Rounded
-pwsx4536  power 0.0853  0.5 -> 0.292  Inexact Rounded
-pwsx4537  power 0.854  0.5 -> 0.924  Inexact Rounded
-pwsx4538  power 0.0854  0.5 -> 0.292  Inexact Rounded
-pwsx4539  power 0.855  0.5 -> 0.925  Inexact Rounded
-pwsx4540  power 0.0855  0.5 -> 0.292  Inexact Rounded
-pwsx4541  power 0.856  0.5 -> 0.925  Inexact Rounded
-pwsx4542  power 0.0856  0.5 -> 0.293  Inexact Rounded
-pwsx4543  power 0.857  0.5 -> 0.926  Inexact Rounded
-pwsx4544  power 0.0857  0.5 -> 0.293  Inexact Rounded
-pwsx4545  power 0.858  0.5 -> 0.926  Inexact Rounded
-pwsx4546  power 0.0858  0.5 -> 0.293  Inexact Rounded
-pwsx4547  power 0.859  0.5 -> 0.927  Inexact Rounded
-pwsx4548  power 0.0859  0.5 -> 0.293  Inexact Rounded
-pwsx4549  power 0.861  0.5 -> 0.928  Inexact Rounded
-pwsx4550  power 0.0861  0.5 -> 0.293  Inexact Rounded
-pwsx4551  power 0.862  0.5 -> 0.928  Inexact Rounded
-pwsx4552  power 0.0862  0.5 -> 0.294  Inexact Rounded
-pwsx4553  power 0.863  0.5 -> 0.929  Inexact Rounded
-pwsx4554  power 0.0863  0.5 -> 0.294  Inexact Rounded
-pwsx4555  power 0.864  0.5 -> 0.930  Inexact Rounded
-pwsx4556  power 0.0864  0.5 -> 0.294  Inexact Rounded
-pwsx4557  power 0.865  0.5 -> 0.930  Inexact Rounded
-pwsx4558  power 0.0865  0.5 -> 0.294  Inexact Rounded
-pwsx4559  power 0.866  0.5 -> 0.931  Inexact Rounded
-pwsx4560  power 0.0866  0.5 -> 0.294  Inexact Rounded
-pwsx4561  power 0.867  0.5 -> 0.931  Inexact Rounded
-pwsx4562  power 0.0867  0.5 -> 0.294  Inexact Rounded
-pwsx4563  power 0.868  0.5 -> 0.932  Inexact Rounded
-pwsx4564  power 0.0868  0.5 -> 0.295  Inexact Rounded
-pwsx4565  power 0.869  0.5 -> 0.932  Inexact Rounded
-pwsx4566  power 0.0869  0.5 -> 0.295  Inexact Rounded
-pwsx4567  power 0.871  0.5 -> 0.933  Inexact Rounded
-pwsx4568  power 0.0871  0.5 -> 0.295  Inexact Rounded
-pwsx4569  power 0.872  0.5 -> 0.934  Inexact Rounded
-pwsx4570  power 0.0872  0.5 -> 0.295  Inexact Rounded
-pwsx4571  power 0.873  0.5 -> 0.934  Inexact Rounded
-pwsx4572  power 0.0873  0.5 -> 0.295  Inexact Rounded
-pwsx4573  power 0.874  0.5 -> 0.935  Inexact Rounded
-pwsx4574  power 0.0874  0.5 -> 0.296  Inexact Rounded
-pwsx4575  power 0.875  0.5 -> 0.935  Inexact Rounded
-pwsx4576  power 0.0875  0.5 -> 0.296  Inexact Rounded
-pwsx4577  power 0.876  0.5 -> 0.936  Inexact Rounded
-pwsx4578  power 0.0876  0.5 -> 0.296  Inexact Rounded
-pwsx4579  power 0.877  0.5 -> 0.936  Inexact Rounded
-pwsx4580  power 0.0877  0.5 -> 0.296  Inexact Rounded
-pwsx4581  power 0.878  0.5 -> 0.937  Inexact Rounded
-pwsx4582  power 0.0878  0.5 -> 0.296  Inexact Rounded
-pwsx4583  power 0.879  0.5 -> 0.938  Inexact Rounded
-pwsx4584  power 0.0879  0.5 -> 0.296  Inexact Rounded
-pwsx4585  power 0.881  0.5 -> 0.939  Inexact Rounded
-pwsx4586  power 0.0881  0.5 -> 0.297  Inexact Rounded
-pwsx4587  power 0.882  0.5 -> 0.939  Inexact Rounded
-pwsx4588  power 0.0882  0.5 -> 0.297  Inexact Rounded
-pwsx4589  power 0.883  0.5 -> 0.940  Inexact Rounded
-pwsx4590  power 0.0883  0.5 -> 0.297  Inexact Rounded
-pwsx4591  power 0.884  0.5 -> 0.940  Inexact Rounded
-pwsx4592  power 0.0884  0.5 -> 0.297  Inexact Rounded
-pwsx4593  power 0.885  0.5 -> 0.941  Inexact Rounded
-pwsx4594  power 0.0885  0.5 -> 0.297  Inexact Rounded
-pwsx4595  power 0.886  0.5 -> 0.941  Inexact Rounded
-pwsx4596  power 0.0886  0.5 -> 0.298  Inexact Rounded
-pwsx4597  power 0.887  0.5 -> 0.942  Inexact Rounded
-pwsx4598  power 0.0887  0.5 -> 0.298  Inexact Rounded
-pwsx4599  power 0.888  0.5 -> 0.942  Inexact Rounded
-pwsx4600  power 0.0888  0.5 -> 0.298  Inexact Rounded
-pwsx4601  power 0.889  0.5 -> 0.943  Inexact Rounded
-pwsx4602  power 0.0889  0.5 -> 0.298  Inexact Rounded
-pwsx4603  power 0.891  0.5 -> 0.944  Inexact Rounded
-pwsx4604  power 0.0891  0.5 -> 0.298  Inexact Rounded
-pwsx4605  power 0.892  0.5 -> 0.944  Inexact Rounded
-pwsx4606  power 0.0892  0.5 -> 0.299  Inexact Rounded
-pwsx4607  power 0.893  0.5 -> 0.945  Inexact Rounded
-pwsx4608  power 0.0893  0.5 -> 0.299  Inexact Rounded
-pwsx4609  power 0.894  0.5 -> 0.946  Inexact Rounded
-pwsx4610  power 0.0894  0.5 -> 0.299  Inexact Rounded
-pwsx4611  power 0.895  0.5 -> 0.946  Inexact Rounded
-pwsx4612  power 0.0895  0.5 -> 0.299  Inexact Rounded
-pwsx4613  power 0.896  0.5 -> 0.947  Inexact Rounded
-pwsx4614  power 0.0896  0.5 -> 0.299  Inexact Rounded
-pwsx4615  power 0.897  0.5 -> 0.947  Inexact Rounded
-pwsx4616  power 0.0897  0.5 -> 0.299  Inexact Rounded
-pwsx4617  power 0.898  0.5 -> 0.948  Inexact Rounded
-pwsx4618  power 0.0898  0.5 -> 0.300  Inexact Rounded
-pwsx4619  power 0.899  0.5 -> 0.948  Inexact Rounded
-pwsx4620  power 0.0899  0.5 -> 0.300  Inexact Rounded
-pwsx4621  power 0.901  0.5 -> 0.949  Inexact Rounded
-pwsx4622  power 0.0901  0.5 -> 0.300  Inexact Rounded
-pwsx4623  power 0.902  0.5 -> 0.950  Inexact Rounded
-pwsx4624  power 0.0902  0.5 -> 0.300  Inexact Rounded
-pwsx4625  power 0.903  0.5 -> 0.950  Inexact Rounded
-pwsx4626  power 0.0903  0.5 -> 0.300  Inexact Rounded
-pwsx4627  power 0.904  0.5 -> 0.951  Inexact Rounded
-pwsx4628  power 0.0904  0.5 -> 0.301  Inexact Rounded
-pwsx4629  power 0.905  0.5 -> 0.951  Inexact Rounded
-pwsx4630  power 0.0905  0.5 -> 0.301  Inexact Rounded
-pwsx4631  power 0.906  0.5 -> 0.952  Inexact Rounded
-pwsx4632  power 0.0906  0.5 -> 0.301  Inexact Rounded
-pwsx4633  power 0.907  0.5 -> 0.952  Inexact Rounded
-pwsx4634  power 0.0907  0.5 -> 0.301  Inexact Rounded
-pwsx4635  power 0.908  0.5 -> 0.953  Inexact Rounded
-pwsx4636  power 0.0908  0.5 -> 0.301  Inexact Rounded
-pwsx4637  power 0.909  0.5 -> 0.953  Inexact Rounded
-pwsx4638  power 0.0909  0.5 -> 0.301  Inexact Rounded
-pwsx4639  power 0.911  0.5 -> 0.954  Inexact Rounded
-pwsx4640  power 0.0911  0.5 -> 0.302  Inexact Rounded
-pwsx4641  power 0.912  0.5 -> 0.955  Inexact Rounded
-pwsx4642  power 0.0912  0.5 -> 0.302  Inexact Rounded
-pwsx4643  power 0.913  0.5 -> 0.956  Inexact Rounded
-pwsx4644  power 0.0913  0.5 -> 0.302  Inexact Rounded
-pwsx4645  power 0.914  0.5 -> 0.956  Inexact Rounded
-pwsx4646  power 0.0914  0.5 -> 0.302  Inexact Rounded
-pwsx4647  power 0.915  0.5 -> 0.957  Inexact Rounded
-pwsx4648  power 0.0915  0.5 -> 0.302  Inexact Rounded
-pwsx4649  power 0.916  0.5 -> 0.957  Inexact Rounded
-pwsx4650  power 0.0916  0.5 -> 0.303  Inexact Rounded
-pwsx4651  power 0.917  0.5 -> 0.958  Inexact Rounded
-pwsx4652  power 0.0917  0.5 -> 0.303  Inexact Rounded
-pwsx4653  power 0.918  0.5 -> 0.958  Inexact Rounded
-pwsx4654  power 0.0918  0.5 -> 0.303  Inexact Rounded
-pwsx4655  power 0.919  0.5 -> 0.959  Inexact Rounded
-pwsx4656  power 0.0919  0.5 -> 0.303  Inexact Rounded
-pwsx4657  power 0.921  0.5 -> 0.960  Inexact Rounded
-pwsx4658  power 0.0921  0.5 -> 0.303  Inexact Rounded
-pwsx4659  power 0.922  0.5 -> 0.960  Inexact Rounded
-pwsx4660  power 0.0922  0.5 -> 0.304  Inexact Rounded
-pwsx4661  power 0.923  0.5 -> 0.961  Inexact Rounded
-pwsx4662  power 0.0923  0.5 -> 0.304  Inexact Rounded
-pwsx4663  power 0.924  0.5 -> 0.961  Inexact Rounded
-pwsx4664  power 0.0924  0.5 -> 0.304  Inexact Rounded
-pwsx4665  power 0.925  0.5 -> 0.962  Inexact Rounded
-pwsx4666  power 0.0925  0.5 -> 0.304  Inexact Rounded
-pwsx4667  power 0.926  0.5 -> 0.962  Inexact Rounded
-pwsx4668  power 0.0926  0.5 -> 0.304  Inexact Rounded
-pwsx4669  power 0.927  0.5 -> 0.963  Inexact Rounded
-pwsx4670  power 0.0927  0.5 -> 0.304  Inexact Rounded
-pwsx4671  power 0.928  0.5 -> 0.963  Inexact Rounded
-pwsx4672  power 0.0928  0.5 -> 0.305  Inexact Rounded
-pwsx4673  power 0.929  0.5 -> 0.964  Inexact Rounded
-pwsx4674  power 0.0929  0.5 -> 0.305  Inexact Rounded
-pwsx4675  power 0.931  0.5 -> 0.965  Inexact Rounded
-pwsx4676  power 0.0931  0.5 -> 0.305  Inexact Rounded
-pwsx4677  power 0.932  0.5 -> 0.965  Inexact Rounded
-pwsx4678  power 0.0932  0.5 -> 0.305  Inexact Rounded
-pwsx4679  power 0.933  0.5 -> 0.966  Inexact Rounded
-pwsx4680  power 0.0933  0.5 -> 0.305  Inexact Rounded
-pwsx4681  power 0.934  0.5 -> 0.966  Inexact Rounded
-pwsx4682  power 0.0934  0.5 -> 0.306  Inexact Rounded
-pwsx4683  power 0.935  0.5 -> 0.967  Inexact Rounded
-pwsx4684  power 0.0935  0.5 -> 0.306  Inexact Rounded
-pwsx4685  power 0.936  0.5 -> 0.967  Inexact Rounded
-pwsx4686  power 0.0936  0.5 -> 0.306  Inexact Rounded
-pwsx4687  power 0.937  0.5 -> 0.968  Inexact Rounded
-pwsx4688  power 0.0937  0.5 -> 0.306  Inexact Rounded
-pwsx4689  power 0.938  0.5 -> 0.969  Inexact Rounded
-pwsx4690  power 0.0938  0.5 -> 0.306  Inexact Rounded
-pwsx4691  power 0.939  0.5 -> 0.969  Inexact Rounded
-pwsx4692  power 0.0939  0.5 -> 0.306  Inexact Rounded
-pwsx4693  power 0.941  0.5 -> 0.970  Inexact Rounded
-pwsx4694  power 0.0941  0.5 -> 0.307  Inexact Rounded
-pwsx4695  power 0.942  0.5 -> 0.971  Inexact Rounded
-pwsx4696  power 0.0942  0.5 -> 0.307  Inexact Rounded
-pwsx4697  power 0.943  0.5 -> 0.971  Inexact Rounded
-pwsx4698  power 0.0943  0.5 -> 0.307  Inexact Rounded
-pwsx4699  power 0.944  0.5 -> 0.972  Inexact Rounded
-pwsx4700  power 0.0944  0.5 -> 0.307  Inexact Rounded
-pwsx4701  power 0.945  0.5 -> 0.972  Inexact Rounded
-pwsx4702  power 0.0945  0.5 -> 0.307  Inexact Rounded
-pwsx4703  power 0.946  0.5 -> 0.973  Inexact Rounded
-pwsx4704  power 0.0946  0.5 -> 0.308  Inexact Rounded
-pwsx4705  power 0.947  0.5 -> 0.973  Inexact Rounded
-pwsx4706  power 0.0947  0.5 -> 0.308  Inexact Rounded
-pwsx4707  power 0.948  0.5 -> 0.974  Inexact Rounded
-pwsx4708  power 0.0948  0.5 -> 0.308  Inexact Rounded
-pwsx4709  power 0.949  0.5 -> 0.974  Inexact Rounded
-pwsx4710  power 0.0949  0.5 -> 0.308  Inexact Rounded
-pwsx4711  power 0.951  0.5 -> 0.975  Inexact Rounded
-pwsx4712  power 0.0951  0.5 -> 0.308  Inexact Rounded
-pwsx4713  power 0.952  0.5 -> 0.976  Inexact Rounded
-pwsx4714  power 0.0952  0.5 -> 0.309  Inexact Rounded
-pwsx4715  power 0.953  0.5 -> 0.976  Inexact Rounded
-pwsx4716  power 0.0953  0.5 -> 0.309  Inexact Rounded
-pwsx4717  power 0.954  0.5 -> 0.977  Inexact Rounded
-pwsx4718  power 0.0954  0.5 -> 0.309  Inexact Rounded
-pwsx4719  power 0.955  0.5 -> 0.977  Inexact Rounded
-pwsx4720  power 0.0955  0.5 -> 0.309  Inexact Rounded
-pwsx4721  power 0.956  0.5 -> 0.978  Inexact Rounded
-pwsx4722  power 0.0956  0.5 -> 0.309  Inexact Rounded
-pwsx4723  power 0.957  0.5 -> 0.978  Inexact Rounded
-pwsx4724  power 0.0957  0.5 -> 0.309  Inexact Rounded
-pwsx4725  power 0.958  0.5 -> 0.979  Inexact Rounded
-pwsx4726  power 0.0958  0.5 -> 0.310  Inexact Rounded
-pwsx4727  power 0.959  0.5 -> 0.979  Inexact Rounded
-pwsx4728  power 0.0959  0.5 -> 0.310  Inexact Rounded
-pwsx4729  power 0.961  0.5 -> 0.980  Inexact Rounded
-pwsx4730  power 0.0961  0.5 -> 0.310  Inexact Rounded
-pwsx4731  power 0.962  0.5 -> 0.981  Inexact Rounded
-pwsx4732  power 0.0962  0.5 -> 0.310  Inexact Rounded
-pwsx4733  power 0.963  0.5 -> 0.981  Inexact Rounded
-pwsx4734  power 0.0963  0.5 -> 0.310  Inexact Rounded
-pwsx4735  power 0.964  0.5 -> 0.982  Inexact Rounded
-pwsx4736  power 0.0964  0.5 -> 0.310  Inexact Rounded
-pwsx4737  power 0.965  0.5 -> 0.982  Inexact Rounded
-pwsx4738  power 0.0965  0.5 -> 0.311  Inexact Rounded
-pwsx4739  power 0.966  0.5 -> 0.983  Inexact Rounded
-pwsx4740  power 0.0966  0.5 -> 0.311  Inexact Rounded
-pwsx4741  power 0.967  0.5 -> 0.983  Inexact Rounded
-pwsx4742  power 0.0967  0.5 -> 0.311  Inexact Rounded
-pwsx4743  power 0.968  0.5 -> 0.984  Inexact Rounded
-pwsx4744  power 0.0968  0.5 -> 0.311  Inexact Rounded
-pwsx4745  power 0.969  0.5 -> 0.984  Inexact Rounded
-pwsx4746  power 0.0969  0.5 -> 0.311  Inexact Rounded
-pwsx4747  power 0.971  0.5 -> 0.985  Inexact Rounded
-pwsx4748  power 0.0971  0.5 -> 0.312  Inexact Rounded
-pwsx4749  power 0.972  0.5 -> 0.986  Inexact Rounded
-pwsx4750  power 0.0972  0.5 -> 0.312  Inexact Rounded
-pwsx4751  power 0.973  0.5 -> 0.986  Inexact Rounded
-pwsx4752  power 0.0973  0.5 -> 0.312  Inexact Rounded
-pwsx4753  power 0.974  0.5 -> 0.987  Inexact Rounded
-pwsx4754  power 0.0974  0.5 -> 0.312  Inexact Rounded
-pwsx4755  power 0.975  0.5 -> 0.987  Inexact Rounded
-pwsx4756  power 0.0975  0.5 -> 0.312  Inexact Rounded
-pwsx4757  power 0.976  0.5 -> 0.988  Inexact Rounded
-pwsx4758  power 0.0976  0.5 -> 0.312  Inexact Rounded
-pwsx4759  power 0.977  0.5 -> 0.988  Inexact Rounded
-pwsx4760  power 0.0977  0.5 -> 0.313  Inexact Rounded
-pwsx4761  power 0.978  0.5 -> 0.989  Inexact Rounded
-pwsx4762  power 0.0978  0.5 -> 0.313  Inexact Rounded
-pwsx4763  power 0.979  0.5 -> 0.989  Inexact Rounded
-pwsx4764  power 0.0979  0.5 -> 0.313  Inexact Rounded
-pwsx4765  power 0.981  0.5 -> 0.990  Inexact Rounded
-pwsx4766  power 0.0981  0.5 -> 0.313  Inexact Rounded
-pwsx4767  power 0.982  0.5 -> 0.991  Inexact Rounded
-pwsx4768  power 0.0982  0.5 -> 0.313  Inexact Rounded
-pwsx4769  power 0.983  0.5 -> 0.991  Inexact Rounded
-pwsx4770  power 0.0983  0.5 -> 0.314  Inexact Rounded
-pwsx4771  power 0.984  0.5 -> 0.992  Inexact Rounded
-pwsx4772  power 0.0984  0.5 -> 0.314  Inexact Rounded
-pwsx4773  power 0.985  0.5 -> 0.992  Inexact Rounded
-pwsx4774  power 0.0985  0.5 -> 0.314  Inexact Rounded
-pwsx4775  power 0.986  0.5 -> 0.993  Inexact Rounded
-pwsx4776  power 0.0986  0.5 -> 0.314  Inexact Rounded
-pwsx4777  power 0.987  0.5 -> 0.993  Inexact Rounded
-pwsx4778  power 0.0987  0.5 -> 0.314  Inexact Rounded
-pwsx4779  power 0.988  0.5 -> 0.994  Inexact Rounded
-pwsx4780  power 0.0988  0.5 -> 0.314  Inexact Rounded
-pwsx4781  power 0.989  0.5 -> 0.994  Inexact Rounded
-pwsx4782  power 0.0989  0.5 -> 0.314  Inexact Rounded
-pwsx4783  power 0.991  0.5 -> 0.995  Inexact Rounded
-pwsx4784  power 0.0991  0.5 -> 0.315  Inexact Rounded
-pwsx4785  power 0.992  0.5 -> 0.996  Inexact Rounded
-pwsx4786  power 0.0992  0.5 -> 0.315  Inexact Rounded
-pwsx4787  power 0.993  0.5 -> 0.996  Inexact Rounded
-pwsx4788  power 0.0993  0.5 -> 0.315  Inexact Rounded
-pwsx4789  power 0.994  0.5 -> 0.997  Inexact Rounded
-pwsx4790  power 0.0994  0.5 -> 0.315  Inexact Rounded
-pwsx4791  power 0.995  0.5 -> 0.997  Inexact Rounded
-pwsx4792  power 0.0995  0.5 -> 0.315  Inexact Rounded
-pwsx4793  power 0.996  0.5 -> 0.998  Inexact Rounded
-pwsx4794  power 0.0996  0.5 -> 0.316  Inexact Rounded
-pwsx4795  power 0.997  0.5 -> 0.998  Inexact Rounded
-pwsx4796  power 0.0997  0.5 -> 0.316  Inexact Rounded
-pwsx4797  power 0.998  0.5 -> 0.999  Inexact Rounded
-pwsx4798  power 0.0998  0.5 -> 0.316  Inexact Rounded
-pwsx4799  power 0.999  0.5 -> 0.999  Inexact Rounded
-pwsx4800  power 0.0999  0.5 -> 0.316  Inexact Rounded
-
--- A group of precision 4 tests where Hull & Abrham adjustments are
--- needed in some cases (both up and down) [see Hull1985b]
-rounding:    half_even
-maxExponent: 999
-minexponent: -999
-precision:   4
-pwsx5001  power 0.0118   0.5 -> 0.1086  Inexact Rounded
-pwsx5002  power 0.119    0.5 -> 0.3450  Inexact Rounded
-pwsx5003  power 0.0119   0.5 -> 0.1091  Inexact Rounded
-pwsx5004  power 0.121    0.5 -> 0.3479  Inexact Rounded
-pwsx5005  power 0.0121   0.5 -> 0.1100  Inexact Rounded
-pwsx5006  power 0.122    0.5 -> 0.3493  Inexact Rounded
-pwsx5007  power 0.0122   0.5 -> 0.1105  Inexact Rounded
-pwsx5008  power 0.123    0.5 -> 0.3507  Inexact Rounded
-pwsx5009  power 0.494    0.5 -> 0.7029  Inexact Rounded
-pwsx5010  power 0.0669   0.5 -> 0.2587  Inexact Rounded
-pwsx5011  power 0.9558   0.5 -> 0.9777  Inexact Rounded
-pwsx5012  power 0.9348   0.5 -> 0.9669  Inexact Rounded
-pwsx5013  power 0.9345   0.5 -> 0.9667  Inexact Rounded
-pwsx5014  power 0.09345  0.5 -> 0.3057  Inexact Rounded
-pwsx5015  power 0.9346   0.5 -> 0.9667  Inexact Rounded
-pwsx5016  power 0.09346  0.5 -> 0.3057  Inexact Rounded
-pwsx5017  power 0.9347   0.5 -> 0.9668  Inexact Rounded
-
--- examples from decArith
-precision: 9
-pwsx700  power  0        0.5 -> '0'
-pwsx701  power  -0       0.5 -> '0'
-pwsx702  power  0.39     0.5 -> 0.624499800    Inexact Rounded
-pwsx703  power  100      0.5 -> '10.0000000'   Inexact Rounded
-pwsx704  power  1.00     0.5 -> '1.00000000'   Inexact Rounded
-pwsx705  power  7        0.5 -> '2.64575131'   Inexact Rounded
-pwsx706  power  10       0.5 -> 3.16227766     Inexact Rounded
-
--- some one-offs
-precision: 9
-pwsx711  power  0.1      0.5 -> 0.316227766    Inexact Rounded
-pwsx712  power  0.2      0.5 -> 0.447213595    Inexact Rounded
-pwsx713  power  0.3      0.5 -> 0.547722558    Inexact Rounded
-pwsx714  power  0.4      0.5 -> 0.632455532    Inexact Rounded
-pwsx715  power  0.5      0.5 -> 0.707106781    Inexact Rounded
-pwsx716  power  0.6      0.5 -> 0.774596669    Inexact Rounded
-pwsx717  power  0.7      0.5 -> 0.836660027    Inexact Rounded
-pwsx718  power  0.8      0.5 -> 0.894427191    Inexact Rounded
-pwsx719  power  0.9      0.5 -> 0.948683298    Inexact Rounded
-precision: 10               -- note no normalizatoin here
-pwsx720  power +0.1      0.5 -> 0.3162277660   Inexact Rounded
-precision: 11
-pwsx721  power +0.1      0.5 -> 0.31622776602  Inexact Rounded
-precision: 12
-pwsx722  power +0.1      0.5 -> 0.316227766017 Inexact Rounded
-precision: 9
-pwsx723  power  0.39     0.5 -> 0.624499800    Inexact Rounded
-precision: 15
-pwsx724  power  0.39     0.5 -> 0.624499799839840 Inexact Rounded
-
--- discussion cases
-precision: 7
-pwsx731  power     9    0.5 -> 3.000000  Inexact Rounded
-pwsx732  power   100    0.5 -> 10.00000  Inexact Rounded
-pwsx733  power   123    0.5 -> 11.09054  Inexact Rounded
-pwsx734  power   144    0.5 -> 12.00000  Inexact Rounded
-pwsx735  power   156    0.5 -> 12.49000  Inexact Rounded
-pwsx736  power 10000    0.5 -> 100.0000  Inexact Rounded
-
--- values close to overflow (if there were input rounding)
-maxexponent: 99
-minexponent: -99
-precision: 5
-pwsx760  power  9.9997E+99    0.5 -> 9.9998E+49 Inexact Rounded
-pwsx761  power  9.9998E+99    0.5 -> 9.9999E+49 Inexact Rounded
-pwsx762  power  9.9999E+99    0.5 -> 9.9999E+49 Inexact Rounded
-pwsx763  power  9.99991E+99   0.5 -> 1.0000E+50 Inexact Rounded
-pwsx764  power  9.99994E+99   0.5 -> 1.0000E+50 Inexact Rounded
-pwsx765  power  9.99995E+99   0.5 -> 1.0000E+50 Inexact Rounded
-pwsx766  power  9.99999E+99   0.5 -> 1.0000E+50 Inexact Rounded
-precision: 9
-pwsx770  power  9.9997E+99    0.5 -> 9.99985000E+49  Inexact Rounded
-pwsx771  power  9.9998E+99    0.5 -> 9.99990000E+49  Inexact Rounded
-pwsx772  power  9.9999E+99    0.5 -> 9.99995000E+49  Inexact Rounded
-pwsx773  power  9.99991E+99   0.5 -> 9.99995500E+49  Inexact Rounded
-pwsx774  power  9.99994E+99   0.5 -> 9.99997000E+49  Inexact Rounded
-pwsx775  power  9.99995E+99   0.5 -> 9.99997500E+49  Inexact Rounded
-pwsx776  power  9.99999E+99   0.5 -> 9.99999500E+49  Inexact Rounded
-precision: 20
-pwsx780  power  9.9997E+99    0.5 -> '9.9998499988749831247E+49' Inexact Rounded
-pwsx781  power  9.9998E+99    0.5 -> '9.9998999994999949999E+49' Inexact Rounded
-pwsx782  power  9.9999E+99    0.5 -> '9.9999499998749993750E+49' Inexact Rounded
-pwsx783  power  9.99991E+99   0.5 -> '9.9999549998987495444E+49' Inexact Rounded
-pwsx784  power  9.99994E+99   0.5 -> '9.9999699999549998650E+49' Inexact Rounded
-pwsx785  power  9.99995E+99   0.5 -> '9.9999749999687499219E+49' Inexact Rounded
-pwsx786  power  9.99999E+99   0.5 -> '9.9999949999987499994E+49' Inexact Rounded
-
--- subnormals and underflows [these can only result when eMax is < digits+1]
--- Etiny = -(Emax + (precision-1))
--- start with subnormal operands and normal results
-maxexponent: 9
-minexponent: -9
-precision: 9                -- Etiny=-17
-pwsx800  power  1E-17    0.5 -> 3.16227766E-9 Inexact Rounded
-pwsx801  power 10E-17    0.5 -> 1.00000000E-8 Inexact Rounded
-precision: 10               -- Etiny=-18
-pwsx802  power 10E-18    0.5 -> 3.162277660E-9 Inexact Rounded
-pwsx803  power  1E-18    0.5 -> 1.000000000E-9 Inexact Rounded
-
-precision: 11               -- Etiny=-19
-pwsx804  power  1E-19    0.5 -> 3.162277660E-10 Underflow Subnormal Inexact Rounded
--- The next test should be skipped for decNumber
-pwsx805  power 10E-19    0.5 -> 1.0000000000E-9 Inexact Rounded
-precision: 12               -- Etiny=-20
-pwsx806  power 10E-20    0.5 -> 3.1622776602E-10 Underflow Subnormal Inexact Rounded
-pwsx807  power  1E-20    0.5 -> 1.0000000000E-10 Underflow Subnormal Inexact Rounded
-
-precision: 13               -- Etiny=-21
-pwsx808  power  1E-21    0.5 -> 3.1622776602E-11 Underflow Subnormal Inexact Rounded
-pwsx809  power 10E-21    0.5 -> 1.00000000000E-10 Underflow Subnormal Inexact Rounded
-precision: 14               -- Etiny=-22
-pwsx810  power  1E-21    0.5 -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded
-pwsx811  power 10E-22    0.5 -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded
-pwsx812  power  1E-22    0.5 -> 1.00000000000E-11 Underflow Subnormal Inexact Rounded
-
-
--- special values
-maxexponent: 999
-minexponent: -999
-pwsx820  power   Inf     0.5 -> Infinity
-pwsx821  power  -Inf     0.5 -> NaN Invalid_operation
-pwsx822  power   NaN     0.5 -> NaN
-pwsx823  power  sNaN     0.5 -> NaN Invalid_operation
--- propagating NaNs
-pwsx824  power  sNaN123  0.5 -> NaN123 Invalid_operation
-pwsx825  power -sNaN321  0.5 -> -NaN321 Invalid_operation
-pwsx826  power   NaN456  0.5 -> NaN456
-pwsx827  power  -NaN654  0.5 -> -NaN654
-pwsx828  power   NaN1    0.5 -> NaN1
-
--- Null test
-pwsx900  power  #  0.5 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/quantize.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/quantize.decTest
deleted file mode 100644
index 46be5eb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/quantize.decTest
+++ /dev/null
@@ -1,948 +0,0 @@
-------------------------------------------------------------------------
--- quantize.decTest -- decimal quantize operation                     --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- Most of the tests here assume a "regular pattern", where the
--- sign and coefficient are +1.
--- 2004.03.15 Underflow for quantize is suppressed
--- 2005.06.08 More extensive tests for 'does not fit'
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minexponent: -999
-
--- sanity checks
-quax001 quantize 0       1e0   -> 0
-quax002 quantize 1       1e0   -> 1
-quax003 quantize 0.1    1e+2   -> 0E+2 Inexact Rounded
-quax005 quantize 0.1    1e+1   -> 0E+1 Inexact Rounded
-quax006 quantize 0.1     1e0   -> 0 Inexact Rounded
-quax007 quantize 0.1    1e-1   -> 0.1
-quax008 quantize 0.1    1e-2   -> 0.10
-quax009 quantize 0.1    1e-3   -> 0.100
-quax010 quantize 0.9    1e+2   -> 0E+2 Inexact Rounded
-quax011 quantize 0.9    1e+1   -> 0E+1 Inexact Rounded
-quax012 quantize 0.9    1e+0   -> 1 Inexact Rounded
-quax013 quantize 0.9    1e-1   -> 0.9
-quax014 quantize 0.9    1e-2   -> 0.90
-quax015 quantize 0.9    1e-3   -> 0.900
--- negatives
-quax021 quantize -0      1e0   -> -0
-quax022 quantize -1      1e0   -> -1
-quax023 quantize -0.1   1e+2   -> -0E+2 Inexact Rounded
-quax025 quantize -0.1   1e+1   -> -0E+1 Inexact Rounded
-quax026 quantize -0.1    1e0   -> -0 Inexact Rounded
-quax027 quantize -0.1   1e-1   -> -0.1
-quax028 quantize -0.1   1e-2   -> -0.10
-quax029 quantize -0.1   1e-3   -> -0.100
-quax030 quantize -0.9   1e+2   -> -0E+2 Inexact Rounded
-quax031 quantize -0.9   1e+1   -> -0E+1 Inexact Rounded
-quax032 quantize -0.9   1e+0   -> -1 Inexact Rounded
-quax033 quantize -0.9   1e-1   -> -0.9
-quax034 quantize -0.9   1e-2   -> -0.90
-quax035 quantize -0.9   1e-3   -> -0.900
-quax036 quantize -0.5   1e+2   -> -0E+2 Inexact Rounded
-quax037 quantize -0.5   1e+1   -> -0E+1 Inexact Rounded
-quax038 quantize -0.5   1e+0   -> -1 Inexact Rounded
-quax039 quantize -0.5   1e-1   -> -0.5
-quax040 quantize -0.5   1e-2   -> -0.50
-quax041 quantize -0.5   1e-3   -> -0.500
-quax042 quantize -0.9   1e+2   -> -0E+2 Inexact Rounded
-quax043 quantize -0.9   1e+1   -> -0E+1 Inexact Rounded
-quax044 quantize -0.9   1e+0   -> -1 Inexact Rounded
-quax045 quantize -0.9   1e-1   -> -0.9
-quax046 quantize -0.9   1e-2   -> -0.90
-quax047 quantize -0.9   1e-3   -> -0.900
-
--- examples from Specification
-quax060 quantize 2.17   0.001  -> 2.170
-quax061 quantize 2.17   0.01   -> 2.17
-quax062 quantize 2.17   0.1    -> 2.2 Inexact Rounded
-quax063 quantize 2.17   1e+0   -> 2 Inexact Rounded
-quax064 quantize 2.17   1e+1   -> 0E+1 Inexact Rounded
-quax065 quantize -Inf    Inf   -> -Infinity
-quax066 quantize 2       Inf   -> NaN Invalid_operation
-quax067 quantize -0.1    1     -> -0 Inexact Rounded
-quax068 quantize -0      1e+5     -> -0E+5
-quax069 quantize +35236450.6 1e-2 -> NaN Invalid_operation
-quax070 quantize -35236450.6 1e-2 -> NaN Invalid_operation
-quax071 quantize 217    1e-1   -> 217.0
-quax072 quantize 217    1e+0   -> 217
-quax073 quantize 217    1e+1   -> 2.2E+2 Inexact Rounded
-quax074 quantize 217    1e+2   -> 2E+2 Inexact Rounded
-
--- general tests ..
-quax089 quantize 12     1e+4   -> 0E+4 Inexact Rounded
-quax090 quantize 12     1e+3   -> 0E+3 Inexact Rounded
-quax091 quantize 12     1e+2   -> 0E+2 Inexact Rounded
-quax092 quantize 12     1e+1   -> 1E+1 Inexact Rounded
-quax093 quantize 1.2345 1e-2   -> 1.23 Inexact Rounded
-quax094 quantize 1.2355 1e-2   -> 1.24 Inexact Rounded
-quax095 quantize 1.2345 1e-6   -> 1.234500
-quax096 quantize 9.9999 1e-2   -> 10.00 Inexact Rounded
-quax097 quantize 0.0001 1e-2   -> 0.00 Inexact Rounded
-quax098 quantize 0.001  1e-2   -> 0.00 Inexact Rounded
-quax099 quantize 0.009  1e-2   -> 0.01 Inexact Rounded
-quax100 quantize 92     1e+2   -> 1E+2 Inexact Rounded
-
-quax101 quantize -1      1e0   ->  -1
-quax102 quantize -1     1e-1   ->  -1.0
-quax103 quantize -1     1e-2   ->  -1.00
-quax104 quantize  0      1e0   ->  0
-quax105 quantize  0     1e-1   ->  0.0
-quax106 quantize  0     1e-2   ->  0.00
-quax107 quantize  0.00   1e0   ->  0
-quax108 quantize  0     1e+1   ->  0E+1
-quax109 quantize  0     1e+2   ->  0E+2
-quax110 quantize +1      1e0   ->  1
-quax111 quantize +1     1e-1   ->  1.0
-quax112 quantize +1     1e-2   ->  1.00
-
-quax120 quantize   1.04  1e-3 ->  1.040
-quax121 quantize   1.04  1e-2 ->  1.04
-quax122 quantize   1.04  1e-1 ->  1.0 Inexact Rounded
-quax123 quantize   1.04   1e0 ->  1 Inexact Rounded
-quax124 quantize   1.05  1e-3 ->  1.050
-quax125 quantize   1.05  1e-2 ->  1.05
-quax126 quantize   1.05  1e-1 ->  1.1 Inexact Rounded
-quax131 quantize   1.05   1e0 ->  1 Inexact Rounded
-quax132 quantize   1.06  1e-3 ->  1.060
-quax133 quantize   1.06  1e-2 ->  1.06
-quax134 quantize   1.06  1e-1 ->  1.1 Inexact Rounded
-quax135 quantize   1.06   1e0 ->  1 Inexact Rounded
-
-quax140 quantize   -10    1e-2  ->  -10.00
-quax141 quantize   +1     1e-2  ->  1.00
-quax142 quantize   +10    1e-2  ->  10.00
-quax143 quantize   1E+10  1e-2  ->  NaN Invalid_operation
-quax144 quantize   1E-10  1e-2  ->  0.00 Inexact Rounded
-quax145 quantize   1E-3   1e-2  ->  0.00 Inexact Rounded
-quax146 quantize   1E-2   1e-2  ->  0.01
-quax147 quantize   1E-1   1e-2  ->  0.10
-quax148 quantize   0E-10  1e-2  ->  0.00
-
-quax150 quantize   1.0600 1e-5 ->  1.06000
-quax151 quantize   1.0600 1e-4 ->  1.0600
-quax152 quantize   1.0600 1e-3 ->  1.060 Rounded
-quax153 quantize   1.0600 1e-2 ->  1.06 Rounded
-quax154 quantize   1.0600 1e-1 ->  1.1 Inexact Rounded
-quax155 quantize   1.0600  1e0 ->  1 Inexact Rounded
-
--- base tests with non-1 coefficients
-quax161 quantize 0      -9e0   -> 0
-quax162 quantize 1      -7e0   -> 1
-quax163 quantize 0.1   -1e+2   -> 0E+2 Inexact Rounded
-quax165 quantize 0.1    0e+1   -> 0E+1 Inexact Rounded
-quax166 quantize 0.1     2e0   -> 0 Inexact Rounded
-quax167 quantize 0.1    3e-1   -> 0.1
-quax168 quantize 0.1   44e-2   -> 0.10
-quax169 quantize 0.1  555e-3   -> 0.100
-quax170 quantize 0.9 6666e+2   -> 0E+2 Inexact Rounded
-quax171 quantize 0.9 -777e+1   -> 0E+1 Inexact Rounded
-quax172 quantize 0.9  -88e+0   -> 1 Inexact Rounded
-quax173 quantize 0.9   -9e-1   -> 0.9
-quax174 quantize 0.9    0e-2   -> 0.90
-quax175 quantize 0.9  1.1e-3   -> 0.9000
--- negatives
-quax181 quantize -0    1.1e0   -> -0.0
-quax182 quantize -1     -1e0   -> -1
-quax183 quantize -0.1  11e+2   -> -0E+2 Inexact Rounded
-quax185 quantize -0.1 111e+1   -> -0E+1 Inexact Rounded
-quax186 quantize -0.1   71e0   -> -0 Inexact Rounded
-quax187 quantize -0.1 -91e-1   -> -0.1
-quax188 quantize -0.1 -.1e-2   -> -0.100
-quax189 quantize -0.1  -1e-3   -> -0.100
-quax190 quantize -0.9   0e+2   -> -0E+2 Inexact Rounded
-quax191 quantize -0.9  -0e+1   -> -0E+1 Inexact Rounded
-quax192 quantize -0.9 -10e+0   -> -1 Inexact Rounded
-quax193 quantize -0.9 100e-1   -> -0.9
-quax194 quantize -0.9 999e-2   -> -0.90
-
--- +ve exponents ..
-quax201 quantize   -1   1e+0 ->  -1
-quax202 quantize   -1   1e+1 ->  -0E+1 Inexact Rounded
-quax203 quantize   -1   1e+2 ->  -0E+2 Inexact Rounded
-quax204 quantize    0   1e+0 ->  0
-quax205 quantize    0   1e+1 ->  0E+1
-quax206 quantize    0   1e+2 ->  0E+2
-quax207 quantize   +1   1e+0 ->  1
-quax208 quantize   +1   1e+1 ->  0E+1 Inexact Rounded
-quax209 quantize   +1   1e+2 ->  0E+2 Inexact Rounded
-
-quax220 quantize   1.04 1e+3 ->  0E+3 Inexact Rounded
-quax221 quantize   1.04 1e+2 ->  0E+2 Inexact Rounded
-quax222 quantize   1.04 1e+1 ->  0E+1 Inexact Rounded
-quax223 quantize   1.04 1e+0 ->  1 Inexact Rounded
-quax224 quantize   1.05 1e+3 ->  0E+3 Inexact Rounded
-quax225 quantize   1.05 1e+2 ->  0E+2 Inexact Rounded
-quax226 quantize   1.05 1e+1 ->  0E+1 Inexact Rounded
-quax227 quantize   1.05 1e+0 ->  1 Inexact Rounded
-quax228 quantize   1.05 1e+3 ->  0E+3 Inexact Rounded
-quax229 quantize   1.05 1e+2 ->  0E+2 Inexact Rounded
-quax230 quantize   1.05 1e+1 ->  0E+1 Inexact Rounded
-quax231 quantize   1.05 1e+0 ->  1 Inexact Rounded
-quax232 quantize   1.06 1e+3 ->  0E+3 Inexact Rounded
-quax233 quantize   1.06 1e+2 ->  0E+2 Inexact Rounded
-quax234 quantize   1.06 1e+1 ->  0E+1 Inexact Rounded
-quax235 quantize   1.06 1e+0 ->  1 Inexact Rounded
-
-quax240 quantize   -10   1e+1  ->  -1E+1 Rounded
-quax241 quantize   +1    1e+1  ->  0E+1 Inexact Rounded
-quax242 quantize   +10   1e+1  ->  1E+1 Rounded
-quax243 quantize   1E+1  1e+1  ->  1E+1          -- underneath this is E+1
-quax244 quantize   1E+2  1e+1  ->  1.0E+2        -- underneath this is E+1
-quax245 quantize   1E+3  1e+1  ->  1.00E+3       -- underneath this is E+1
-quax246 quantize   1E+4  1e+1  ->  1.000E+4      -- underneath this is E+1
-quax247 quantize   1E+5  1e+1  ->  1.0000E+5     -- underneath this is E+1
-quax248 quantize   1E+6  1e+1  ->  1.00000E+6    -- underneath this is E+1
-quax249 quantize   1E+7  1e+1  ->  1.000000E+7   -- underneath this is E+1
-quax250 quantize   1E+8  1e+1  ->  1.0000000E+8  -- underneath this is E+1
-quax251 quantize   1E+9  1e+1  ->  1.00000000E+9 -- underneath this is E+1
--- next one tries to add 9 zeros
-quax252 quantize   1E+10 1e+1  ->  NaN Invalid_operation
-quax253 quantize   1E-10 1e+1  ->  0E+1 Inexact Rounded
-quax254 quantize   1E-2  1e+1  ->  0E+1 Inexact Rounded
-quax255 quantize   0E-10 1e+1  ->  0E+1
-quax256 quantize  -0E-10 1e+1  -> -0E+1
-quax257 quantize  -0E-1  1e+1  -> -0E+1
-quax258 quantize  -0     1e+1  -> -0E+1
-quax259 quantize  -0E+1  1e+1  -> -0E+1
-
-quax260 quantize   -10   1e+2  ->  -0E+2 Inexact Rounded
-quax261 quantize   +1    1e+2  ->  0E+2 Inexact Rounded
-quax262 quantize   +10   1e+2  ->  0E+2 Inexact Rounded
-quax263 quantize   1E+1  1e+2  ->  0E+2 Inexact Rounded
-quax264 quantize   1E+2  1e+2  ->  1E+2
-quax265 quantize   1E+3  1e+2  ->  1.0E+3
-quax266 quantize   1E+4  1e+2  ->  1.00E+4
-quax267 quantize   1E+5  1e+2  ->  1.000E+5
-quax268 quantize   1E+6  1e+2  ->  1.0000E+6
-quax269 quantize   1E+7  1e+2  ->  1.00000E+7
-quax270 quantize   1E+8  1e+2  ->  1.000000E+8
-quax271 quantize   1E+9  1e+2  ->  1.0000000E+9
-quax272 quantize   1E+10 1e+2  ->  1.00000000E+10
-quax273 quantize   1E-10 1e+2  ->  0E+2 Inexact Rounded
-quax274 quantize   1E-2  1e+2  ->  0E+2 Inexact Rounded
-quax275 quantize   0E-10 1e+2  ->  0E+2
-
-quax280 quantize   -10   1e+3  ->  -0E+3 Inexact Rounded
-quax281 quantize   +1    1e+3  ->  0E+3 Inexact Rounded
-quax282 quantize   +10   1e+3  ->  0E+3 Inexact Rounded
-quax283 quantize   1E+1  1e+3  ->  0E+3 Inexact Rounded
-quax284 quantize   1E+2  1e+3  ->  0E+3 Inexact Rounded
-quax285 quantize   1E+3  1e+3  ->  1E+3
-quax286 quantize   1E+4  1e+3  ->  1.0E+4
-quax287 quantize   1E+5  1e+3  ->  1.00E+5
-quax288 quantize   1E+6  1e+3  ->  1.000E+6
-quax289 quantize   1E+7  1e+3  ->  1.0000E+7
-quax290 quantize   1E+8  1e+3  ->  1.00000E+8
-quax291 quantize   1E+9  1e+3  ->  1.000000E+9
-quax292 quantize   1E+10 1e+3  ->  1.0000000E+10
-quax293 quantize   1E-10 1e+3  ->  0E+3 Inexact Rounded
-quax294 quantize   1E-2  1e+3  ->  0E+3 Inexact Rounded
-quax295 quantize   0E-10 1e+3  ->  0E+3
-
--- round up from below [sign wrong in JIT compiler once]
-quax300 quantize   0.0078 1e-5 ->  0.00780
-quax301 quantize   0.0078 1e-4 ->  0.0078
-quax302 quantize   0.0078 1e-3 ->  0.008 Inexact Rounded
-quax303 quantize   0.0078 1e-2 ->  0.01 Inexact Rounded
-quax304 quantize   0.0078 1e-1 ->  0.0 Inexact Rounded
-quax305 quantize   0.0078  1e0 ->  0 Inexact Rounded
-quax306 quantize   0.0078 1e+1 ->  0E+1 Inexact Rounded
-quax307 quantize   0.0078 1e+2 ->  0E+2 Inexact Rounded
-
-quax310 quantize  -0.0078 1e-5 -> -0.00780
-quax311 quantize  -0.0078 1e-4 -> -0.0078
-quax312 quantize  -0.0078 1e-3 -> -0.008 Inexact Rounded
-quax313 quantize  -0.0078 1e-2 -> -0.01 Inexact Rounded
-quax314 quantize  -0.0078 1e-1 -> -0.0 Inexact Rounded
-quax315 quantize  -0.0078  1e0 -> -0 Inexact Rounded
-quax316 quantize  -0.0078 1e+1 -> -0E+1 Inexact Rounded
-quax317 quantize  -0.0078 1e+2 -> -0E+2 Inexact Rounded
-
-quax320 quantize   0.078 1e-5 ->  0.07800
-quax321 quantize   0.078 1e-4 ->  0.0780
-quax322 quantize   0.078 1e-3 ->  0.078
-quax323 quantize   0.078 1e-2 ->  0.08 Inexact Rounded
-quax324 quantize   0.078 1e-1 ->  0.1 Inexact Rounded
-quax325 quantize   0.078  1e0 ->  0 Inexact Rounded
-quax326 quantize   0.078 1e+1 ->  0E+1 Inexact Rounded
-quax327 quantize   0.078 1e+2 ->  0E+2 Inexact Rounded
-
-quax330 quantize  -0.078 1e-5 -> -0.07800
-quax331 quantize  -0.078 1e-4 -> -0.0780
-quax332 quantize  -0.078 1e-3 -> -0.078
-quax333 quantize  -0.078 1e-2 -> -0.08 Inexact Rounded
-quax334 quantize  -0.078 1e-1 -> -0.1 Inexact Rounded
-quax335 quantize  -0.078  1e0 -> -0 Inexact Rounded
-quax336 quantize  -0.078 1e+1 -> -0E+1 Inexact Rounded
-quax337 quantize  -0.078 1e+2 -> -0E+2 Inexact Rounded
-
-quax340 quantize   0.78 1e-5 ->  0.78000
-quax341 quantize   0.78 1e-4 ->  0.7800
-quax342 quantize   0.78 1e-3 ->  0.780
-quax343 quantize   0.78 1e-2 ->  0.78
-quax344 quantize   0.78 1e-1 ->  0.8 Inexact Rounded
-quax345 quantize   0.78  1e0 ->  1 Inexact Rounded
-quax346 quantize   0.78 1e+1 ->  0E+1 Inexact Rounded
-quax347 quantize   0.78 1e+2 ->  0E+2 Inexact Rounded
-
-quax350 quantize  -0.78 1e-5 -> -0.78000
-quax351 quantize  -0.78 1e-4 -> -0.7800
-quax352 quantize  -0.78 1e-3 -> -0.780
-quax353 quantize  -0.78 1e-2 -> -0.78
-quax354 quantize  -0.78 1e-1 -> -0.8 Inexact Rounded
-quax355 quantize  -0.78  1e0 -> -1 Inexact Rounded
-quax356 quantize  -0.78 1e+1 -> -0E+1 Inexact Rounded
-quax357 quantize  -0.78 1e+2 -> -0E+2 Inexact Rounded
-
-quax360 quantize   7.8 1e-5 ->  7.80000
-quax361 quantize   7.8 1e-4 ->  7.8000
-quax362 quantize   7.8 1e-3 ->  7.800
-quax363 quantize   7.8 1e-2 ->  7.80
-quax364 quantize   7.8 1e-1 ->  7.8
-quax365 quantize   7.8  1e0 ->  8 Inexact Rounded
-quax366 quantize   7.8 1e+1 ->  1E+1 Inexact Rounded
-quax367 quantize   7.8 1e+2 ->  0E+2 Inexact Rounded
-quax368 quantize   7.8 1e+3 ->  0E+3 Inexact Rounded
-
-quax370 quantize  -7.8 1e-5 -> -7.80000
-quax371 quantize  -7.8 1e-4 -> -7.8000
-quax372 quantize  -7.8 1e-3 -> -7.800
-quax373 quantize  -7.8 1e-2 -> -7.80
-quax374 quantize  -7.8 1e-1 -> -7.8
-quax375 quantize  -7.8  1e0 -> -8 Inexact Rounded
-quax376 quantize  -7.8 1e+1 -> -1E+1 Inexact Rounded
-quax377 quantize  -7.8 1e+2 -> -0E+2 Inexact Rounded
-quax378 quantize  -7.8 1e+3 -> -0E+3 Inexact Rounded
-
--- some individuals
-precision: 9
-quax380 quantize   352364.506 1e-2 -> 352364.51 Inexact Rounded
-quax381 quantize   3523645.06 1e-2 -> 3523645.06
-quax382 quantize   35236450.6 1e-2 -> NaN Invalid_operation
-quax383 quantize   352364506  1e-2 -> NaN Invalid_operation
-quax384 quantize  -352364.506 1e-2 -> -352364.51 Inexact Rounded
-quax385 quantize  -3523645.06 1e-2 -> -3523645.06
-quax386 quantize  -35236450.6 1e-2 -> NaN Invalid_operation
-quax387 quantize  -352364506  1e-2 -> NaN Invalid_operation
-
-rounding: down
-quax389 quantize   35236450.6 1e-2 -> NaN Invalid_operation
--- ? should that one instead have been:
--- quax389 quantize   35236450.6 1e-2 -> NaN Invalid_operation
-rounding: half_up
-
--- and a few more from e-mail discussions
-precision: 7
-quax391 quantize  12.34567  1e-3 -> 12.346   Inexact Rounded
-quax392 quantize  123.4567  1e-3 -> 123.457  Inexact Rounded
-quax393 quantize  1234.567  1e-3 -> 1234.567
-quax394 quantize  12345.67  1e-3 -> NaN Invalid_operation
-quax395 quantize  123456.7  1e-3 -> NaN Invalid_operation
-quax396 quantize  1234567.  1e-3 -> NaN Invalid_operation
-
--- some 9999 round-up cases
-precision: 9
-quax400 quantize   9.999        1e-5  ->  9.99900
-quax401 quantize   9.999        1e-4  ->  9.9990
-quax402 quantize   9.999        1e-3  ->  9.999
-quax403 quantize   9.999        1e-2  -> 10.00     Inexact Rounded
-quax404 quantize   9.999        1e-1  -> 10.0      Inexact Rounded
-quax405 quantize   9.999         1e0  -> 10        Inexact Rounded
-quax406 quantize   9.999         1e1  -> 1E+1      Inexact Rounded
-quax407 quantize   9.999         1e2  -> 0E+2      Inexact Rounded
-
-quax410 quantize   0.999        1e-5  ->  0.99900
-quax411 quantize   0.999        1e-4  ->  0.9990
-quax412 quantize   0.999        1e-3  ->  0.999
-quax413 quantize   0.999        1e-2  ->  1.00     Inexact Rounded
-quax414 quantize   0.999        1e-1  ->  1.0      Inexact Rounded
-quax415 quantize   0.999         1e0  ->  1        Inexact Rounded
-quax416 quantize   0.999         1e1  -> 0E+1      Inexact Rounded
-
-quax420 quantize   0.0999       1e-5  ->  0.09990
-quax421 quantize   0.0999       1e-4  ->  0.0999
-quax422 quantize   0.0999       1e-3  ->  0.100    Inexact Rounded
-quax423 quantize   0.0999       1e-2  ->  0.10     Inexact Rounded
-quax424 quantize   0.0999       1e-1  ->  0.1      Inexact Rounded
-quax425 quantize   0.0999        1e0  ->  0        Inexact Rounded
-quax426 quantize   0.0999        1e1  -> 0E+1      Inexact Rounded
-
-quax430 quantize   0.00999      1e-5  ->  0.00999
-quax431 quantize   0.00999      1e-4  ->  0.0100   Inexact Rounded
-quax432 quantize   0.00999      1e-3  ->  0.010    Inexact Rounded
-quax433 quantize   0.00999      1e-2  ->  0.01     Inexact Rounded
-quax434 quantize   0.00999      1e-1  ->  0.0      Inexact Rounded
-quax435 quantize   0.00999       1e0  ->  0        Inexact Rounded
-quax436 quantize   0.00999       1e1  -> 0E+1      Inexact Rounded
-
-quax440 quantize   0.000999     1e-5  ->  0.00100  Inexact Rounded
-quax441 quantize   0.000999     1e-4  ->  0.0010   Inexact Rounded
-quax442 quantize   0.000999     1e-3  ->  0.001    Inexact Rounded
-quax443 quantize   0.000999     1e-2  ->  0.00     Inexact Rounded
-quax444 quantize   0.000999     1e-1  ->  0.0      Inexact Rounded
-quax445 quantize   0.000999      1e0  ->  0        Inexact Rounded
-quax446 quantize   0.000999      1e1  -> 0E+1      Inexact Rounded
-
-precision: 8
-quax449 quantize   9.999E-15    1e-23 ->  NaN Invalid_operation
-quax450 quantize   9.999E-15    1e-22 ->  9.9990000E-15
-quax451 quantize   9.999E-15    1e-21 ->  9.999000E-15
-quax452 quantize   9.999E-15    1e-20 ->  9.99900E-15
-quax453 quantize   9.999E-15    1e-19 ->  9.9990E-15
-quax454 quantize   9.999E-15    1e-18 ->  9.999E-15
-quax455 quantize   9.999E-15    1e-17 ->  1.000E-14 Inexact Rounded
-quax456 quantize   9.999E-15    1e-16 ->  1.00E-14  Inexact Rounded
-quax457 quantize   9.999E-15    1e-15 ->  1.0E-14   Inexact Rounded
-quax458 quantize   9.999E-15    1e-14 ->  1E-14     Inexact Rounded
-quax459 quantize   9.999E-15    1e-13 ->  0E-13     Inexact Rounded
-quax460 quantize   9.999E-15    1e-12 ->  0E-12     Inexact Rounded
-quax461 quantize   9.999E-15    1e-11 ->  0E-11     Inexact Rounded
-quax462 quantize   9.999E-15    1e-10 ->  0E-10     Inexact Rounded
-quax463 quantize   9.999E-15     1e-9 ->  0E-9      Inexact Rounded
-quax464 quantize   9.999E-15     1e-8 ->  0E-8      Inexact Rounded
-quax465 quantize   9.999E-15     1e-7 ->  0E-7      Inexact Rounded
-quax466 quantize   9.999E-15     1e-6 ->  0.000000  Inexact Rounded
-quax467 quantize   9.999E-15     1e-5 ->  0.00000   Inexact Rounded
-quax468 quantize   9.999E-15     1e-4 ->  0.0000    Inexact Rounded
-quax469 quantize   9.999E-15     1e-3 ->  0.000     Inexact Rounded
-quax470 quantize   9.999E-15     1e-2 ->  0.00      Inexact Rounded
-quax471 quantize   9.999E-15     1e-1 ->  0.0       Inexact Rounded
-quax472 quantize   9.999E-15      1e0 ->  0         Inexact Rounded
-quax473 quantize   9.999E-15      1e1 ->  0E+1      Inexact Rounded
-
-precision: 7
-quax900 quantize   9.999E-15    1e-22 ->  NaN       Invalid_operation
-quax901 quantize   9.999E-15    1e-21 ->  9.999000E-15
-quax902 quantize   9.999E-15    1e-20 ->  9.99900E-15
-quax903 quantize   9.999E-15    1e-19 ->  9.9990E-15
-quax904 quantize   9.999E-15    1e-18 ->  9.999E-15
-quax905 quantize   9.999E-15    1e-17 ->  1.000E-14 Inexact Rounded
-quax906 quantize   9.999E-15    1e-16 ->  1.00E-14  Inexact Rounded
-quax907 quantize   9.999E-15    1e-15 ->  1.0E-14   Inexact Rounded
-quax908 quantize   9.999E-15    1e-14 ->  1E-14     Inexact Rounded
-quax909 quantize   9.999E-15    1e-13 ->  0E-13     Inexact Rounded
-quax910 quantize   9.999E-15    1e-12 ->  0E-12     Inexact Rounded
-quax911 quantize   9.999E-15    1e-11 ->  0E-11     Inexact Rounded
-quax912 quantize   9.999E-15    1e-10 ->  0E-10     Inexact Rounded
-quax913 quantize   9.999E-15     1e-9 ->  0E-9      Inexact Rounded
-quax914 quantize   9.999E-15     1e-8 ->  0E-8      Inexact Rounded
-quax915 quantize   9.999E-15     1e-7 ->  0E-7      Inexact Rounded
-quax916 quantize   9.999E-15     1e-6 ->  0.000000  Inexact Rounded
-quax917 quantize   9.999E-15     1e-5 ->  0.00000   Inexact Rounded
-quax918 quantize   9.999E-15     1e-4 ->  0.0000    Inexact Rounded
-quax919 quantize   9.999E-15     1e-3 ->  0.000     Inexact Rounded
-quax920 quantize   9.999E-15     1e-2 ->  0.00      Inexact Rounded
-quax921 quantize   9.999E-15     1e-1 ->  0.0       Inexact Rounded
-quax922 quantize   9.999E-15      1e0 ->  0         Inexact Rounded
-quax923 quantize   9.999E-15      1e1 ->  0E+1      Inexact Rounded
-
-precision: 6
-quax930 quantize   9.999E-15    1e-22 ->  NaN       Invalid_operation
-quax931 quantize   9.999E-15    1e-21 ->  NaN       Invalid_operation
-quax932 quantize   9.999E-15    1e-20 ->  9.99900E-15
-quax933 quantize   9.999E-15    1e-19 ->  9.9990E-15
-quax934 quantize   9.999E-15    1e-18 ->  9.999E-15
-quax935 quantize   9.999E-15    1e-17 ->  1.000E-14 Inexact Rounded
-quax936 quantize   9.999E-15    1e-16 ->  1.00E-14  Inexact Rounded
-quax937 quantize   9.999E-15    1e-15 ->  1.0E-14   Inexact Rounded
-quax938 quantize   9.999E-15    1e-14 ->  1E-14     Inexact Rounded
-quax939 quantize   9.999E-15    1e-13 ->  0E-13     Inexact Rounded
-quax940 quantize   9.999E-15    1e-12 ->  0E-12     Inexact Rounded
-quax941 quantize   9.999E-15    1e-11 ->  0E-11     Inexact Rounded
-quax942 quantize   9.999E-15    1e-10 ->  0E-10     Inexact Rounded
-quax943 quantize   9.999E-15     1e-9 ->  0E-9      Inexact Rounded
-quax944 quantize   9.999E-15     1e-8 ->  0E-8      Inexact Rounded
-quax945 quantize   9.999E-15     1e-7 ->  0E-7      Inexact Rounded
-quax946 quantize   9.999E-15     1e-6 ->  0.000000  Inexact Rounded
-quax947 quantize   9.999E-15     1e-5 ->  0.00000   Inexact Rounded
-quax948 quantize   9.999E-15     1e-4 ->  0.0000    Inexact Rounded
-quax949 quantize   9.999E-15     1e-3 ->  0.000     Inexact Rounded
-quax950 quantize   9.999E-15     1e-2 ->  0.00      Inexact Rounded
-quax951 quantize   9.999E-15     1e-1 ->  0.0       Inexact Rounded
-quax952 quantize   9.999E-15      1e0 ->  0         Inexact Rounded
-quax953 quantize   9.999E-15      1e1 ->  0E+1      Inexact Rounded
-
-precision: 3
-quax960 quantize   9.999E-15    1e-22 ->  NaN       Invalid_operation
-quax961 quantize   9.999E-15    1e-21 ->  NaN       Invalid_operation
-quax962 quantize   9.999E-15    1e-20 ->  NaN       Invalid_operation
-quax963 quantize   9.999E-15    1e-19 ->  NaN       Invalid_operation
-quax964 quantize   9.999E-15    1e-18 ->  NaN       Invalid_operation
-quax965 quantize   9.999E-15    1e-17 ->  NaN       Invalid_operation
-quax966 quantize   9.999E-15    1e-16 ->  1.00E-14  Inexact Rounded
-quax967 quantize   9.999E-15    1e-15 ->  1.0E-14   Inexact Rounded
-quax968 quantize   9.999E-15    1e-14 ->  1E-14     Inexact Rounded
-quax969 quantize   9.999E-15    1e-13 ->  0E-13     Inexact Rounded
-quax970 quantize   9.999E-15    1e-12 ->  0E-12     Inexact Rounded
-quax971 quantize   9.999E-15    1e-11 ->  0E-11     Inexact Rounded
-quax972 quantize   9.999E-15    1e-10 ->  0E-10     Inexact Rounded
-quax973 quantize   9.999E-15     1e-9 ->  0E-9      Inexact Rounded
-quax974 quantize   9.999E-15     1e-8 ->  0E-8      Inexact Rounded
-quax975 quantize   9.999E-15     1e-7 ->  0E-7      Inexact Rounded
-quax976 quantize   9.999E-15     1e-6 ->  0.000000  Inexact Rounded
-quax977 quantize   9.999E-15     1e-5 ->  0.00000   Inexact Rounded
-quax978 quantize   9.999E-15     1e-4 ->  0.0000    Inexact Rounded
-quax979 quantize   9.999E-15     1e-3 ->  0.000     Inexact Rounded
-quax980 quantize   9.999E-15     1e-2 ->  0.00      Inexact Rounded
-quax981 quantize   9.999E-15     1e-1 ->  0.0       Inexact Rounded
-quax982 quantize   9.999E-15      1e0 ->  0         Inexact Rounded
-quax983 quantize   9.999E-15      1e1 ->  0E+1      Inexact Rounded
-
--- Fung Lee's case & similar
-precision: 3
-quax1001 quantize  0.000        0.001 ->  0.000
-quax1002 quantize  0.001        0.001 ->  0.001
-quax1003 quantize  0.0012       0.001 ->  0.001     Inexact Rounded
-quax1004 quantize  0.0018       0.001 ->  0.002     Inexact Rounded
-quax1005 quantize  0.501        0.001 ->  0.501
-quax1006 quantize  0.5012       0.001 ->  0.501     Inexact Rounded
-quax1007 quantize  0.5018       0.001 ->  0.502     Inexact Rounded
-quax1008 quantize  0.999        0.001 ->  0.999
-quax1009 quantize  0.9992       0.001 ->  0.999     Inexact Rounded
-quax1010 quantize  0.9998       0.001 ->  NaN       Invalid_operation
-quax1011 quantize  1.0001       0.001 ->  NaN       Invalid_operation
-quax1012 quantize  1.0051       0.001 ->  NaN       Invalid_operation
-quax1013 quantize  1.0551       0.001 ->  NaN       Invalid_operation
-quax1014 quantize  1.5551       0.001 ->  NaN       Invalid_operation
-quax1015 quantize  1.9999       0.001 ->  NaN       Invalid_operation
-
--- long operand checks [rhs checks removed]
-maxexponent: 999
-minexponent: -999
-precision: 9
-quax481 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded
-quax482 quantize 1234567800  1e+1 -> 1.23456780E+9 Rounded
-quax483 quantize 1234567890  1e+1 -> 1.23456789E+9 Rounded
-quax484 quantize 1234567891  1e+1 -> 1.23456789E+9 Inexact Rounded
-quax485 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded
-quax486 quantize 1234567896  1e+1 -> 1.23456790E+9 Inexact Rounded
--- a potential double-round
-quax487 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded
-quax488 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded
-
-precision: 15
-quax491 quantize 12345678000 1e+3 -> 1.2345678E+10 Rounded
-quax492 quantize 1234567800  1e+1 -> 1.23456780E+9 Rounded
-quax493 quantize 1234567890  1e+1 -> 1.23456789E+9 Rounded
-quax494 quantize 1234567891  1e+1 -> 1.23456789E+9 Inexact Rounded
-quax495 quantize 12345678901 1e+2 -> 1.23456789E+10 Inexact Rounded
-quax496 quantize 1234567896  1e+1 -> 1.23456790E+9 Inexact Rounded
-quax497 quantize 1234.987643 1e-4 -> 1234.9876 Inexact Rounded
-quax498 quantize 1234.987647 1e-4 -> 1234.9876 Inexact Rounded
-
--- Zeros
-quax500 quantize   0     1e1 ->  0E+1
-quax501 quantize   0     1e0 ->  0
-quax502 quantize   0    1e-1 ->  0.0
-quax503 quantize   0.0  1e-1 ->  0.0
-quax504 quantize   0.0   1e0 ->  0
-quax505 quantize   0.0  1e+1 ->  0E+1
-quax506 quantize   0E+1 1e-1 ->  0.0
-quax507 quantize   0E+1  1e0 ->  0
-quax508 quantize   0E+1 1e+1 ->  0E+1
-quax509 quantize  -0     1e1 -> -0E+1
-quax510 quantize  -0     1e0 -> -0
-quax511 quantize  -0    1e-1 -> -0.0
-quax512 quantize  -0.0  1e-1 -> -0.0
-quax513 quantize  -0.0   1e0 -> -0
-quax514 quantize  -0.0  1e+1 -> -0E+1
-quax515 quantize  -0E+1 1e-1 -> -0.0
-quax516 quantize  -0E+1  1e0 -> -0
-quax517 quantize  -0E+1 1e+1 -> -0E+1
-
--- Suspicious RHS values
-maxexponent: 999999999
-minexponent: -999999999
-precision: 15
-quax520 quantize   1.234    1e999999000 -> 0E+999999000 Inexact Rounded
-quax521 quantize 123.456    1e999999000 -> 0E+999999000 Inexact Rounded
-quax522 quantize   1.234    1e999999999 -> 0E+999999999 Inexact Rounded
-quax523 quantize 123.456    1e999999999 -> 0E+999999999 Inexact Rounded
-quax524 quantize 123.456   1e1000000000 -> NaN Invalid_operation
-quax525 quantize 123.456  1e12345678903 -> NaN Invalid_operation
--- next four are "won't fit" overflows
-quax526 quantize   1.234   1e-999999000 -> NaN Invalid_operation
-quax527 quantize 123.456   1e-999999000 -> NaN Invalid_operation
-quax528 quantize   1.234   1e-999999999 -> NaN Invalid_operation
-quax529 quantize 123.456   1e-999999999 -> NaN Invalid_operation
-quax530 quantize 123.456  1e-1000000014 -> NaN Invalid_operation
-quax531 quantize 123.456 1e-12345678903 -> NaN Invalid_operation
-
-maxexponent: 999
-minexponent: -999
-precision: 15
-quax532 quantize   1.234E+999    1e999 -> 1E+999    Inexact Rounded
-quax533 quantize   1.234E+998    1e999 -> 0E+999    Inexact Rounded
-quax534 quantize   1.234         1e999 -> 0E+999    Inexact Rounded
-quax535 quantize   1.234        1e1000 -> NaN Invalid_operation
-quax536 quantize   1.234        1e5000 -> NaN Invalid_operation
-quax537 quantize   0            1e-999 -> 0E-999
--- next two are "won't fit" overflows
-quax538 quantize   1.234        1e-999 -> NaN Invalid_operation
-quax539 quantize   1.234       1e-1000 -> NaN Invalid_operation
-quax540 quantize   1.234       1e-5000 -> NaN Invalid_operation
--- [more below]
-
--- check bounds (lhs maybe out of range for destination, etc.)
-precision:     7
-quax541 quantize   1E+999   1e+999 -> 1E+999
-quax542 quantize   1E+1000  1e+999 -> NaN Invalid_operation
-quax543 quantize   1E+999  1e+1000 -> NaN Invalid_operation
-quax544 quantize   1E-999   1e-999 -> 1E-999
-quax545 quantize   1E-1000  1e-999 -> 0E-999    Inexact Rounded
-quax546 quantize   1E-999  1e-1000 -> 1.0E-999
-quax547 quantize   1E-1005  1e-999 -> 0E-999    Inexact Rounded
-quax548 quantize   1E-1006  1e-999 -> 0E-999    Inexact Rounded
-quax549 quantize   1E-1007  1e-999 -> 0E-999    Inexact Rounded
-quax550 quantize   1E-998  1e-1005 -> NaN Invalid_operation  -- won't fit
-quax551 quantize   1E-999  1e-1005 -> 1.000000E-999
-quax552 quantize   1E-1000 1e-1005 -> 1.00000E-1000 Subnormal
-quax553 quantize   1E-999  1e-1006 -> NaN Invalid_operation
-quax554 quantize   1E-999  1e-1007 -> NaN Invalid_operation
--- related subnormal rounding
-quax555 quantize   1.666666E-999  1e-1005 -> 1.666666E-999
-quax556 quantize   1.666666E-1000 1e-1005 -> 1.66667E-1000  Subnormal Inexact Rounded
-quax557 quantize   1.666666E-1001 1e-1005 -> 1.6667E-1001  Subnormal Inexact Rounded
-quax558 quantize   1.666666E-1002 1e-1005 -> 1.667E-1002  Subnormal Inexact Rounded
-quax559 quantize   1.666666E-1003 1e-1005 -> 1.67E-1003  Subnormal Inexact Rounded
-quax560 quantize   1.666666E-1004 1e-1005 -> 1.7E-1004  Subnormal Inexact Rounded
-quax561 quantize   1.666666E-1005 1e-1005 -> 2E-1005  Subnormal Inexact Rounded
-quax562 quantize   1.666666E-1006 1e-1005 -> 0E-1005   Inexact Rounded
-quax563 quantize   1.666666E-1007 1e-1005 -> 0E-1005   Inexact Rounded
-
--- Specials
-quax580 quantize  Inf    -Inf   ->  Infinity
-quax581 quantize  Inf  1e-1000  ->  NaN  Invalid_operation
-quax582 quantize  Inf  1e-1     ->  NaN  Invalid_operation
-quax583 quantize  Inf   1e0     ->  NaN  Invalid_operation
-quax584 quantize  Inf   1e1     ->  NaN  Invalid_operation
-quax585 quantize  Inf   1e1000  ->  NaN  Invalid_operation
-quax586 quantize  Inf     Inf   ->  Infinity
-quax587 quantize -1000    Inf   ->  NaN  Invalid_operation
-quax588 quantize -Inf     Inf   ->  -Infinity
-quax589 quantize -1       Inf   ->  NaN  Invalid_operation
-quax590 quantize  0       Inf   ->  NaN  Invalid_operation
-quax591 quantize  1       Inf   ->  NaN  Invalid_operation
-quax592 quantize  1000    Inf   ->  NaN  Invalid_operation
-quax593 quantize  Inf     Inf   ->  Infinity
-quax594 quantize  Inf  1e-0     ->  NaN  Invalid_operation
-quax595 quantize -0       Inf   ->  NaN  Invalid_operation
-
-quax600 quantize -Inf    -Inf   ->  -Infinity
-quax601 quantize -Inf  1e-1000  ->  NaN  Invalid_operation
-quax602 quantize -Inf  1e-1     ->  NaN  Invalid_operation
-quax603 quantize -Inf   1e0     ->  NaN  Invalid_operation
-quax604 quantize -Inf   1e1     ->  NaN  Invalid_operation
-quax605 quantize -Inf   1e1000  ->  NaN  Invalid_operation
-quax606 quantize -Inf     Inf   ->  -Infinity
-quax607 quantize -1000    Inf   ->  NaN  Invalid_operation
-quax608 quantize -Inf    -Inf   ->  -Infinity
-quax609 quantize -1      -Inf   ->  NaN  Invalid_operation
-quax610 quantize  0      -Inf   ->  NaN  Invalid_operation
-quax611 quantize  1      -Inf   ->  NaN  Invalid_operation
-quax612 quantize  1000   -Inf   ->  NaN  Invalid_operation
-quax613 quantize  Inf    -Inf   ->  Infinity
-quax614 quantize -Inf  1e-0     ->  NaN  Invalid_operation
-quax615 quantize -0      -Inf   ->  NaN  Invalid_operation
-
-quax621 quantize  NaN   -Inf    ->  NaN
-quax622 quantize  NaN 1e-1000   ->  NaN
-quax623 quantize  NaN 1e-1      ->  NaN
-quax624 quantize  NaN  1e0      ->  NaN
-quax625 quantize  NaN  1e1      ->  NaN
-quax626 quantize  NaN  1e1000   ->  NaN
-quax627 quantize  NaN    Inf    ->  NaN
-quax628 quantize  NaN    NaN    ->  NaN
-quax629 quantize -Inf    NaN    ->  NaN
-quax630 quantize -1000   NaN    ->  NaN
-quax631 quantize -1      NaN    ->  NaN
-quax632 quantize  0      NaN    ->  NaN
-quax633 quantize  1      NaN    ->  NaN
-quax634 quantize  1000   NaN    ->  NaN
-quax635 quantize  Inf    NaN    ->  NaN
-quax636 quantize  NaN 1e-0      ->  NaN
-quax637 quantize -0      NaN    ->  NaN
-
-quax641 quantize  sNaN   -Inf   ->  NaN  Invalid_operation
-quax642 quantize  sNaN 1e-1000  ->  NaN  Invalid_operation
-quax643 quantize  sNaN 1e-1     ->  NaN  Invalid_operation
-quax644 quantize  sNaN  1e0     ->  NaN  Invalid_operation
-quax645 quantize  sNaN  1e1     ->  NaN  Invalid_operation
-quax646 quantize  sNaN  1e1000  ->  NaN  Invalid_operation
-quax647 quantize  sNaN    NaN   ->  NaN  Invalid_operation
-quax648 quantize  sNaN   sNaN   ->  NaN  Invalid_operation
-quax649 quantize  NaN    sNaN   ->  NaN  Invalid_operation
-quax650 quantize -Inf    sNaN   ->  NaN  Invalid_operation
-quax651 quantize -1000   sNaN   ->  NaN  Invalid_operation
-quax652 quantize -1      sNaN   ->  NaN  Invalid_operation
-quax653 quantize  0      sNaN   ->  NaN  Invalid_operation
-quax654 quantize  1      sNaN   ->  NaN  Invalid_operation
-quax655 quantize  1000   sNaN   ->  NaN  Invalid_operation
-quax656 quantize  Inf    sNaN   ->  NaN  Invalid_operation
-quax657 quantize  NaN    sNaN   ->  NaN  Invalid_operation
-quax658 quantize  sNaN 1e-0     ->  NaN  Invalid_operation
-quax659 quantize -0      sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-quax661 quantize  NaN9 -Inf   ->  NaN9
-quax662 quantize  NaN8  919   ->  NaN8
-quax663 quantize  NaN71 Inf   ->  NaN71
-quax664 quantize  NaN6  NaN5  ->  NaN6
-quax665 quantize -Inf   NaN4  ->  NaN4
-quax666 quantize -919   NaN31 ->  NaN31
-quax667 quantize  Inf   NaN2  ->  NaN2
-
-quax671 quantize  sNaN99 -Inf    ->  NaN99 Invalid_operation
-quax672 quantize  sNaN98 -11     ->  NaN98 Invalid_operation
-quax673 quantize  sNaN97  NaN    ->  NaN97 Invalid_operation
-quax674 quantize  sNaN16 sNaN94  ->  NaN16 Invalid_operation
-quax675 quantize  NaN95  sNaN93  ->  NaN93 Invalid_operation
-quax676 quantize -Inf    sNaN92  ->  NaN92 Invalid_operation
-quax677 quantize  088    sNaN91  ->  NaN91 Invalid_operation
-quax678 quantize  Inf    sNaN90  ->  NaN90 Invalid_operation
-quax679 quantize  NaN    sNaN88  ->  NaN88 Invalid_operation
-
-quax681 quantize -NaN9 -Inf   -> -NaN9
-quax682 quantize -NaN8  919   -> -NaN8
-quax683 quantize -NaN71 Inf   -> -NaN71
-quax684 quantize -NaN6 -NaN5  -> -NaN6
-quax685 quantize -Inf  -NaN4  -> -NaN4
-quax686 quantize -919  -NaN31 -> -NaN31
-quax687 quantize  Inf  -NaN2  -> -NaN2
-
-quax691 quantize -sNaN99 -Inf    -> -NaN99 Invalid_operation
-quax692 quantize -sNaN98 -11     -> -NaN98 Invalid_operation
-quax693 quantize -sNaN97  NaN    -> -NaN97 Invalid_operation
-quax694 quantize -sNaN16 sNaN94  -> -NaN16 Invalid_operation
-quax695 quantize -NaN95 -sNaN93  -> -NaN93 Invalid_operation
-quax696 quantize -Inf   -sNaN92  -> -NaN92 Invalid_operation
-quax697 quantize  088   -sNaN91  -> -NaN91 Invalid_operation
-quax698 quantize  Inf   -sNaN90  -> -NaN90 Invalid_operation
-quax699 quantize  NaN   -sNaN88  -> -NaN88 Invalid_operation
-
--- subnormals and underflow
-precision: 4
-maxexponent: 999
-minexponent: -999
-quax710 quantize  1.00E-999    1e-999  ->   1E-999    Rounded
-quax711 quantize  0.1E-999    2e-1000  ->   1E-1000   Subnormal
-quax712 quantize  0.10E-999   3e-1000  ->   1E-1000   Subnormal Rounded
-quax713 quantize  0.100E-999  4e-1000  ->   1E-1000   Subnormal Rounded
-quax714 quantize  0.01E-999   5e-1001  ->   1E-1001   Subnormal
--- next is rounded to Emin
-quax715 quantize  0.999E-999   1e-999  ->   1E-999    Inexact Rounded
-quax716 quantize  0.099E-999 10e-1000  ->   1E-1000   Inexact Rounded Subnormal
-
-quax717 quantize  0.009E-999  1e-1001  ->   1E-1001   Inexact Rounded Subnormal
-quax718 quantize  0.001E-999  1e-1001  ->   0E-1001   Inexact Rounded
-quax719 quantize  0.0009E-999 1e-1001  ->   0E-1001   Inexact Rounded
-quax720 quantize  0.0001E-999 1e-1001  ->   0E-1001   Inexact Rounded
-
-quax730 quantize -1.00E-999   1e-999  ->  -1E-999     Rounded
-quax731 quantize -0.1E-999    1e-999  ->  -0E-999     Rounded Inexact
-quax732 quantize -0.10E-999   1e-999  ->  -0E-999     Rounded Inexact
-quax733 quantize -0.100E-999  1e-999  ->  -0E-999     Rounded Inexact
-quax734 quantize -0.01E-999   1e-999  ->  -0E-999     Inexact Rounded
--- next is rounded to Emin
-quax735 quantize -0.999E-999 90e-999  ->  -1E-999     Inexact Rounded
-quax736 quantize -0.099E-999 -1e-999  ->  -0E-999     Inexact Rounded
-quax737 quantize -0.009E-999 -1e-999  ->  -0E-999     Inexact Rounded
-quax738 quantize -0.001E-999 -0e-999  ->  -0E-999     Inexact Rounded
-quax739 quantize -0.0001E-999 0e-999  ->  -0E-999     Inexact Rounded
-
-quax740 quantize -1.00E-999   1e-1000 ->  -1.0E-999   Rounded
-quax741 quantize -0.1E-999    1e-1000 ->  -1E-1000    Subnormal
-quax742 quantize -0.10E-999   1e-1000 ->  -1E-1000    Subnormal Rounded
-quax743 quantize -0.100E-999  1e-1000 ->  -1E-1000    Subnormal Rounded
-quax744 quantize -0.01E-999   1e-1000 ->  -0E-1000    Inexact Rounded
--- next is rounded to Emin
-quax745 quantize -0.999E-999  1e-1000 ->  -1.0E-999   Inexact Rounded
-quax746 quantize -0.099E-999  1e-1000 ->  -1E-1000    Inexact Rounded Subnormal
-quax747 quantize -0.009E-999  1e-1000 ->  -0E-1000    Inexact Rounded
-quax748 quantize -0.001E-999  1e-1000 ->  -0E-1000    Inexact Rounded
-quax749 quantize -0.0001E-999 1e-1000 ->  -0E-1000    Inexact Rounded
-
-quax750 quantize -1.00E-999   1e-1001 ->  -1.00E-999
-quax751 quantize -0.1E-999    1e-1001 ->  -1.0E-1000  Subnormal
-quax752 quantize -0.10E-999   1e-1001 ->  -1.0E-1000  Subnormal
-quax753 quantize -0.100E-999  1e-1001 ->  -1.0E-1000  Subnormal Rounded
-quax754 quantize -0.01E-999   1e-1001 ->  -1E-1001    Subnormal
--- next is rounded to Emin
-quax755 quantize -0.999E-999  1e-1001 ->  -1.00E-999  Inexact Rounded
-quax756 quantize -0.099E-999  1e-1001 ->  -1.0E-1000  Inexact Rounded Subnormal
-quax757 quantize -0.009E-999  1e-1001 ->  -1E-1001    Inexact Rounded Subnormal
-quax758 quantize -0.001E-999  1e-1001 ->  -0E-1001    Inexact Rounded
-quax759 quantize -0.0001E-999 1e-1001 ->  -0E-1001    Inexact Rounded
-
-quax760 quantize -1.00E-999   1e-1002 ->  -1.000E-999
-quax761 quantize -0.1E-999    1e-1002 ->  -1.00E-1000  Subnormal
-quax762 quantize -0.10E-999   1e-1002 ->  -1.00E-1000  Subnormal
-quax763 quantize -0.100E-999  1e-1002 ->  -1.00E-1000  Subnormal
-quax764 quantize -0.01E-999   1e-1002 ->  -1.0E-1001   Subnormal
-quax765 quantize -0.999E-999  1e-1002 ->  -9.99E-1000  Subnormal
-quax766 quantize -0.099E-999  1e-1002 ->  -9.9E-1001   Subnormal
-quax767 quantize -0.009E-999  1e-1002 ->  -9E-1002     Subnormal
-quax768 quantize -0.001E-999  1e-1002 ->  -1E-1002     Subnormal
-quax769 quantize -0.0001E-999 1e-1002 ->  -0E-1002     Inexact Rounded
-
--- rhs must be no less than Etiny
-quax770 quantize -1.00E-999   1e-1003 ->  NaN Invalid_operation
-quax771 quantize -0.1E-999    1e-1003 ->  NaN Invalid_operation
-quax772 quantize -0.10E-999   1e-1003 ->  NaN Invalid_operation
-quax773 quantize -0.100E-999  1e-1003 ->  NaN Invalid_operation
-quax774 quantize -0.01E-999   1e-1003 ->  NaN Invalid_operation
-quax775 quantize -0.999E-999  1e-1003 ->  NaN Invalid_operation
-quax776 quantize -0.099E-999  1e-1003 ->  NaN Invalid_operation
-quax777 quantize -0.009E-999  1e-1003 ->  NaN Invalid_operation
-quax778 quantize -0.001E-999  1e-1003 ->  NaN Invalid_operation
-quax779 quantize -0.0001E-999 1e-1003 ->  NaN Invalid_operation
-quax780 quantize -0.0001E-999 1e-1004 ->  NaN Invalid_operation
-
-precision:   9
-maxExponent: 999999999
-minexponent: -999999999
-
--- some extremes derived from Rescale testcases
-quax801 quantize   0   1e1000000000 -> NaN Invalid_operation
-quax802 quantize   0  1e-1000000000 -> 0E-1000000000
-quax803 quantize   0   1e2000000000 -> NaN Invalid_operation
-quax804 quantize   0  1e-2000000000 -> NaN Invalid_operation
-quax805 quantize   0   1e3000000000 -> NaN Invalid_operation
-quax806 quantize   0  1e-3000000000 -> NaN Invalid_operation
-quax807 quantize   0   1e4000000000 -> NaN Invalid_operation
-quax808 quantize   0  1e-4000000000 -> NaN Invalid_operation
-quax809 quantize   0   1e5000000000 -> NaN Invalid_operation
-quax810 quantize   0  1e-5000000000 -> NaN Invalid_operation
-quax811 quantize   0   1e6000000000 -> NaN Invalid_operation
-quax812 quantize   0  1e-6000000000 -> NaN Invalid_operation
-quax813 quantize   0   1e7000000000 -> NaN Invalid_operation
-quax814 quantize   0  1e-7000000000 -> NaN Invalid_operation
-quax815 quantize   0   1e8000000000 -> NaN Invalid_operation
-quax816 quantize   0  1e-8000000000 -> NaN Invalid_operation
-quax817 quantize   0   1e9000000000 -> NaN Invalid_operation
-quax818 quantize   0  1e-9000000000 -> NaN Invalid_operation
-quax819 quantize   0   1e9999999999 -> NaN Invalid_operation
-quax820 quantize   0  1e-9999999999 -> NaN Invalid_operation
-quax821 quantize   0   1e10000000000 -> NaN Invalid_operation
-quax822 quantize   0  1e-10000000000 -> NaN Invalid_operation
-
-quax843 quantize   0    1e999999999 -> 0E+999999999
-quax844 quantize   0   1e1000000000 -> NaN Invalid_operation
-quax845 quantize   0   1e-999999999 -> 0E-999999999
-quax846 quantize   0  1e-1000000000 -> 0E-1000000000
-quax847 quantize   0  1e-1000000001 -> 0E-1000000001
-quax848 quantize   0  1e-1000000002 -> 0E-1000000002
-quax849 quantize   0  1e-1000000003 -> 0E-1000000003
-quax850 quantize   0  1e-1000000004 -> 0E-1000000004
-quax851 quantize   0  1e-1000000005 -> 0E-1000000005
-quax852 quantize   0  1e-1000000006 -> 0E-1000000006
-quax853 quantize   0  1e-1000000007 -> 0E-1000000007
-quax854 quantize   0  1e-1000000008 -> NaN Invalid_operation
-
-quax861 quantize   1  1e+2147483649 -> NaN Invalid_operation
-quax862 quantize   1  1e+2147483648 -> NaN Invalid_operation
-quax863 quantize   1  1e+2147483647 -> NaN Invalid_operation
-quax864 quantize   1  1e-2147483647 -> NaN Invalid_operation
-quax865 quantize   1  1e-2147483648 -> NaN Invalid_operation
-quax866 quantize   1  1e-2147483649 -> NaN Invalid_operation
-
--- More from Fung Lee
-precision:   16
-rounding:    half_up
-maxExponent: 384
-minExponent: -383
-quax1021 quantize    8.666666666666000E+384     1.000000000000000E+384  -> 8.666666666666000E+384
-quax1022 quantize 64#8.666666666666000E+384  64#1.000000000000000E+384  -> 8.666666666666000E+384
-quax1023 quantize 64#8.666666666666000E+384  128#1.000000000000000E+384 -> 8.666666666666000E+384
-quax1024 quantize 64#8.666666666666000E+384  64#1E+384                  -> 8.666666666666000E+384
-quax1025 quantize 64#8.666666666666000E+384  64#1E+384   -> 64#8.666666666666000E+384
-quax1026 quantize 64#8.666666666666000E+384 128#1E+384   -> 64#9E+384 Inexact Rounded Clamped
-quax1027 quantize 64#8.666666666666000E+323  64#1E+31    -> NaN Invalid_operation
-quax1028 quantize 64#8.666666666666000E+323 128#1E+31    -> NaN Invalid_operation
-quax1029 quantize 64#8.66666666E+3          128#1E+10    -> 64#0E10 Inexact Rounded
-quax1030 quantize    8.66666666E+3              1E+3     -> 9E+3 Inexact Rounded
-
--- Int and uInt32 edge values for testing conversions
-quax1040 quantize -2147483646     0 -> -2147483646
-quax1041 quantize -2147483647     0 -> -2147483647
-quax1042 quantize -2147483648     0 -> -2147483648
-quax1043 quantize -2147483649     0 -> -2147483649
-quax1044 quantize  2147483646     0 ->  2147483646
-quax1045 quantize  2147483647     0 ->  2147483647
-quax1046 quantize  2147483648     0 ->  2147483648
-quax1047 quantize  2147483649     0 ->  2147483649
-quax1048 quantize  4294967294     0 ->  4294967294
-quax1049 quantize  4294967295     0 ->  4294967295
-quax1050 quantize  4294967296     0 ->  4294967296
-quax1051 quantize  4294967297     0 ->  4294967297
--- and powers of ten for same
-quax1101 quantize  5000000000     0 ->  5000000000
-quax1102 quantize  4000000000     0 ->  4000000000
-quax1103 quantize  2000000000     0 ->  2000000000
-quax1104 quantize  1000000000     0 ->  1000000000
-quax1105 quantize  0100000000     0 ->  100000000
-quax1106 quantize  0010000000     0 ->  10000000
-quax1107 quantize  0001000000     0 ->  1000000
-quax1108 quantize  0000100000     0 ->  100000
-quax1109 quantize  0000010000     0 ->  10000
-quax1110 quantize  0000001000     0 ->  1000
-quax1111 quantize  0000000100     0 ->  100
-quax1112 quantize  0000000010     0 ->  10
-quax1113 quantize  0000000001     0 ->  1
-quax1114 quantize  0000000000     0 ->  0
--- and powers of ten for same
-quax1121 quantize -5000000000     0 -> -5000000000
-quax1122 quantize -4000000000     0 -> -4000000000
-quax1123 quantize -2000000000     0 -> -2000000000
-quax1124 quantize -1000000000     0 -> -1000000000
-quax1125 quantize -0100000000     0 -> -100000000
-quax1126 quantize -0010000000     0 -> -10000000
-quax1127 quantize -0001000000     0 -> -1000000
-quax1128 quantize -0000100000     0 -> -100000
-quax1129 quantize -0000010000     0 -> -10000
-quax1130 quantize -0000001000     0 -> -1000
-quax1131 quantize -0000000100     0 -> -100
-quax1132 quantize -0000000010     0 -> -10
-quax1133 quantize -0000000001     0 -> -1
-quax1134 quantize -0000000000     0 -> -0
-
--- Some miscellany
-precision:   34
-rounding:    half_up
-maxExponent: 6144
-minExponent: -6143
---                             1         2         3
---                   1 234567890123456789012345678901234
-quax0a1 quantize     8.555555555555555555555555555555555E+6143  1E+6143      -> 9E+6143   Inexact Rounded
-quax0a2 quantize 128#8.555555555555555555555555555555555E+6143  128#1E+6143  -> 8.55555555555555555555555555555556E+6143   Rounded Inexact
-quax0a3 quantize 128#8.555555555555555555555555555555555E+6144  128#1E+6144  -> 8.555555555555555555555555555555555E+6144
-
--- payload decapitate
-precision: 5
-quax62100 quantize 11 -sNaN1234567890 -> -NaN67890  Invalid_operation
-
--- Null tests
-quax998 quantize 10    # -> NaN Invalid_operation
-quax999 quantize  # 1e10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/randomBound32.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/randomBound32.decTest
deleted file mode 100644
index 27df1c2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/randomBound32.decTest
+++ /dev/null
@@ -1,2443 +0,0 @@
-------------------------------------------------------------------------
--- randomBound32.decTest -- decimal testcases -- boundaries near 32   --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- These testcases test calculations at precisions 31, 32, and 33, to
--- exercise the boundaries around 2**5
-
--- randomly generated testcases [26 Sep 2001]
-extended:    1
-precision:   31
-rounding:    half_up
-maxExponent: 9999
-minexponent: -9999
-
-addx3001 add 4953734675913.065314738743322579 0218.932010396534371704930714860E+797 -> 2.189320103965343717049307148600E+799 Inexact Rounded
-comx3001 compare 4953734675913.065314738743322579 0218.932010396534371704930714860E+797 -> -1
-divx3001 divide 4953734675913.065314738743322579 0218.932010396534371704930714860E+797 -> 2.262681764507965005284080800438E-787 Inexact Rounded
-dvix3001 divideint 4953734675913.065314738743322579 0218.932010396534371704930714860E+797 -> 0
-mulx3001 multiply 4953734675913.065314738743322579 0218.932010396534371704930714860E+797 -> 1.084531091568672041923151632066E+812 Inexact Rounded
-powx3001 power 4953734675913.065314738743322579 2 -> 24539487239343522246155890.99495 Inexact Rounded
-remx3001 remainder 4953734675913.065314738743322579 0218.932010396534371704930714860E+797 -> 4953734675913.065314738743322579
-subx3001 subtract 4953734675913.065314738743322579 0218.932010396534371704930714860E+797 -> -2.189320103965343717049307148600E+799 Inexact Rounded
-addx3002 add 9641.684323386955881595490347910E-844 -78864532047.12287484430980636798E+934 -> -7.886453204712287484430980636798E+944 Inexact Rounded
-comx3002 compare 9641.684323386955881595490347910E-844 -78864532047.12287484430980636798E+934 -> 1
-divx3002 divide 9641.684323386955881595490347910E-844 -78864532047.12287484430980636798E+934 -> -1.222562801441069667849402782716E-1785 Inexact Rounded
-dvix3002 divideint 9641.684323386955881595490347910E-844 -78864532047.12287484430980636798E+934 -> -0
-mulx3002 multiply 9641.684323386955881595490347910E-844 -78864532047.12287484430980636798E+934 -> -7.603869223099928141659831589905E+104 Inexact Rounded
-powx3002 power 9641.684323386955881595490347910E-844 -8 -> 1.338988152067180337738955757587E+6720 Inexact Rounded
-remx3002 remainder 9641.684323386955881595490347910E-844 -78864532047.12287484430980636798E+934 -> 9.641684323386955881595490347910E-841
-subx3002 subtract 9641.684323386955881595490347910E-844 -78864532047.12287484430980636798E+934 -> 7.886453204712287484430980636798E+944 Inexact Rounded
-addx3003 add -1.028048571628326871054964307774E+529 49200008645699.35577937582714739 -> -1.028048571628326871054964307774E+529 Inexact Rounded
-comx3003 compare -1.028048571628326871054964307774E+529 49200008645699.35577937582714739 -> -1
-divx3003 divide -1.028048571628326871054964307774E+529 49200008645699.35577937582714739 -> -2.089529249946971482861843692465E+515 Inexact Rounded
-dvix3003 divideint -1.028048571628326871054964307774E+529 49200008645699.35577937582714739 -> NaN Division_impossible
-mulx3003 multiply -1.028048571628326871054964307774E+529 49200008645699.35577937582714739 -> -5.057999861231255549283737861207E+542 Inexact Rounded
-powx3003 power -1.028048571628326871054964307774E+529 5 -> -1.148333858253704284232780819739E+2645 Inexact Rounded
-remx3003 remainder -1.028048571628326871054964307774E+529 49200008645699.35577937582714739 -> NaN Division_impossible
-subx3003 subtract -1.028048571628326871054964307774E+529 49200008645699.35577937582714739 -> -1.028048571628326871054964307774E+529 Inexact Rounded
-addx3004 add 479084.8561808930525417735205519 084157571054.2691784660983989931 -> 84158050139.12535935915094076662 Inexact Rounded
-comx3004 compare 479084.8561808930525417735205519 084157571054.2691784660983989931 -> -1
-divx3004 divide 479084.8561808930525417735205519 084157571054.2691784660983989931 -> 0.000005692712493709617905493710207969 Inexact Rounded
-dvix3004 divideint 479084.8561808930525417735205519 084157571054.2691784660983989931 -> 0
-mulx3004 multiply 479084.8561808930525417735205519 084157571054.2691784660983989931 -> 40318617825067837.47317700523687 Inexact Rounded
-powx3004 power 479084.8561808930525417735205519 8 -> 2.775233598021235973545933045837E+45 Inexact Rounded
-remx3004 remainder 479084.8561808930525417735205519 084157571054.2691784660983989931 -> 479084.8561808930525417735205519
-subx3004 subtract 479084.8561808930525417735205519 084157571054.2691784660983989931 -> -84157091969.41299757304585721958 Inexact Rounded
-addx3005 add -0363750788.573782205664349562931 -3172.080934464133691909905980096 -> -363753960.6547166697980414728370 Inexact Rounded
-comx3005 compare -0363750788.573782205664349562931 -3172.080934464133691909905980096 -> -1
-divx3005 divide -0363750788.573782205664349562931 -3172.080934464133691909905980096 -> 114672.6064337420167096295290890 Inexact Rounded
-dvix3005 divideint -0363750788.573782205664349562931 -3172.080934464133691909905980096 -> 114672
-mulx3005 multiply -0363750788.573782205664349562931 -3172.080934464133691909905980096 -> 1153846941331.188583292239230818 Inexact Rounded
-powx3005 power -0363750788.573782205664349562931 -3172 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3005 remainder -0363750788.573782205664349562931 -3172.080934464133691909905980096 -> -1923.656911066945656824381431488
-subx3005 subtract -0363750788.573782205664349562931 -3172.080934464133691909905980096 -> -363747616.4928477415306576530250 Inexact Rounded
-addx3006 add 1381026551423669919010191878449 -82.66614775445371254999357800739 -> 1381026551423669919010191878366 Inexact Rounded
-comx3006 compare 1381026551423669919010191878449 -82.66614775445371254999357800739 -> 1
-divx3006 divide 1381026551423669919010191878449 -82.66614775445371254999357800739 -> -16706071214613552377376639557.90 Inexact Rounded
-dvix3006 divideint 1381026551423669919010191878449 -82.66614775445371254999357800739 -> -16706071214613552377376639557
-mulx3006 multiply 1381026551423669919010191878449 -82.66614775445371254999357800739 -> -1.141641449528127656560770057228E+32 Inexact Rounded
-powx3006 power 1381026551423669919010191878449 -83 -> 2.307977908106564299925193011052E-2502 Inexact Rounded
-remx3006 remainder 1381026551423669919010191878449 -82.66614775445371254999357800739 -> 74.22115953553602036042168767377
-subx3006 subtract 1381026551423669919010191878449 -82.66614775445371254999357800739 -> 1381026551423669919010191878532 Inexact Rounded
-addx3007 add 4627.026960423072127953556635585 -4410583132901.830017479741231131 -> -4410583128274.803057056669103177 Inexact Rounded
-comx3007 compare 4627.026960423072127953556635585 -4410583132901.830017479741231131 -> 1
-divx3007 divide 4627.026960423072127953556635585 -4410583132901.830017479741231131 -> -1.049073743992404570569003129346E-9 Inexact Rounded
-dvix3007 divideint 4627.026960423072127953556635585 -4410583132901.830017479741231131 -> -0
-mulx3007 multiply 4627.026960423072127953556635585 -4410583132901.830017479741231131 -> -20407887067124025.31576887565113 Inexact Rounded
-powx3007 power 4627.026960423072127953556635585 -4 -> 2.181684167222334934221407781701E-15 Inexact Rounded
-remx3007 remainder 4627.026960423072127953556635585 -4410583132901.830017479741231131 -> 4627.026960423072127953556635585
-subx3007 subtract 4627.026960423072127953556635585 -4410583132901.830017479741231131 -> 4410583137528.856977902813359085 Inexact Rounded
-addx3008 add 75353574493.84484153484918212042 -8684111695095849922263044191221 -> -8684111695095849922187690616727 Inexact Rounded
-comx3008 compare 75353574493.84484153484918212042 -8684111695095849922263044191221 -> 1
-divx3008 divide 75353574493.84484153484918212042 -8684111695095849922263044191221 -> -8.677177026223536475531592432118E-21 Inexact Rounded
-dvix3008 divideint 75353574493.84484153484918212042 -8684111695095849922263044191221 -> -0
-mulx3008 multiply 75353574493.84484153484918212042 -8684111695095849922263044191221 -> -6.543788575292743281456830701127E+41 Inexact Rounded
-powx3008 power 75353574493.84484153484918212042 -9 -> 1.276630670287906925570645490707E-98 Inexact Rounded
-remx3008 remainder 75353574493.84484153484918212042 -8684111695095849922263044191221 -> 75353574493.84484153484918212042
-subx3008 subtract 75353574493.84484153484918212042 -8684111695095849922263044191221 -> 8684111695095849922338397765715 Inexact Rounded
-addx3009 add 6907058.216435355874729592373011 2.857005446917670515662398741545 -> 6907061.073440802792400108035410 Inexact Rounded
-comx3009 compare 6907058.216435355874729592373011 2.857005446917670515662398741545 -> 1
-divx3009 divide 6907058.216435355874729592373011 2.857005446917670515662398741545 -> 2417586.646146283856436864121104 Inexact Rounded
-dvix3009 divideint 6907058.216435355874729592373011 2.857005446917670515662398741545 -> 2417586
-mulx3009 multiply 6907058.216435355874729592373011 2.857005446917670515662398741545 -> 19733502.94653326211623698034717 Inexact Rounded
-powx3009 power 6907058.216435355874729592373011 3 -> 329518156646369505494.8971353240 Inexact Rounded
-remx3009 remainder 6907058.216435355874729592373011 2.857005446917670515662398741545 -> 1.846043452483451396449034189630
-subx3009 subtract 6907058.216435355874729592373011 2.857005446917670515662398741545 -> 6907055.359429908957059076710612 Inexact Rounded
-addx3010 add -38949530427253.24030680468677190 712168021.1265384466442576619064E-992 -> -38949530427253.24030680468677190 Inexact Rounded
-comx3010 compare -38949530427253.24030680468677190 712168021.1265384466442576619064E-992 -> -1
-divx3010 divide -38949530427253.24030680468677190 712168021.1265384466442576619064E-992 -> -5.469149031100999700489221122509E+996 Inexact Rounded
-dvix3010 divideint -38949530427253.24030680468677190 712168021.1265384466442576619064E-992 -> NaN Division_impossible
-mulx3010 multiply -38949530427253.24030680468677190 712168021.1265384466442576619064E-992 -> -2.773861000818483769292240109417E-970 Inexact Rounded
-powx3010 power -38949530427253.24030680468677190 7 -> -1.359926959823071332599817363877E+95 Inexact Rounded
-remx3010 remainder -38949530427253.24030680468677190 712168021.1265384466442576619064E-992 -> NaN Division_impossible
-subx3010 subtract -38949530427253.24030680468677190 712168021.1265384466442576619064E-992 -> -38949530427253.24030680468677190 Inexact Rounded
-addx3011 add -0708069.025667471996378081482549 -562842.4701520787831018732202804 -> -1270911.495819550779479954702829 Inexact Rounded
-comx3011 compare -0708069.025667471996378081482549 -562842.4701520787831018732202804 -> -1
-divx3011 divide -0708069.025667471996378081482549 -562842.4701520787831018732202804 -> 1.258023449218665608349145394069 Inexact Rounded
-dvix3011 divideint -0708069.025667471996378081482549 -562842.4701520787831018732202804 -> 1
-mulx3011 multiply -0708069.025667471996378081482549 -562842.4701520787831018732202804 -> 398531319444.8556128729086112205 Inexact Rounded
-powx3011 power -0708069.025667471996378081482549 -562842 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3011 remainder -0708069.025667471996378081482549 -562842.4701520787831018732202804 -> -145226.5555153932132762082622686
-subx3011 subtract -0708069.025667471996378081482549 -562842.4701520787831018732202804 -> -145226.5555153932132762082622686
-addx3012 add 4055087.246994644709729942673976 -43183146921897.67383476104084575E+211 -> -4.318314692189767383476104084575E+224 Inexact Rounded
-comx3012 compare 4055087.246994644709729942673976 -43183146921897.67383476104084575E+211 -> 1
-divx3012 divide 4055087.246994644709729942673976 -43183146921897.67383476104084575E+211 -> -9.390439409913307906923909630247E-219 Inexact Rounded
-dvix3012 divideint 4055087.246994644709729942673976 -43183146921897.67383476104084575E+211 -> -0
-mulx3012 multiply 4055087.246994644709729942673976 -43183146921897.67383476104084575E+211 -> -1.751114283680833039197637874453E+231 Inexact Rounded
-powx3012 power 4055087.246994644709729942673976 -4 -> 3.698274893849241116195795515302E-27 Inexact Rounded
-remx3012 remainder 4055087.246994644709729942673976 -43183146921897.67383476104084575E+211 -> 4055087.246994644709729942673976
-subx3012 subtract 4055087.246994644709729942673976 -43183146921897.67383476104084575E+211 -> 4.318314692189767383476104084575E+224 Inexact Rounded
-addx3013 add 4502895892520.396581348110906909E-512 -815.9047305921862348263521876034 -> -815.9047305921862348263521876034 Inexact Rounded
-comx3013 compare 4502895892520.396581348110906909E-512 -815.9047305921862348263521876034 -> 1
-divx3013 divide 4502895892520.396581348110906909E-512 -815.9047305921862348263521876034 -> -5.518899111238367862234798433551E-503 Inexact Rounded
-dvix3013 divideint 4502895892520.396581348110906909E-512 -815.9047305921862348263521876034 -> -0
-mulx3013 multiply 4502895892520.396581348110906909E-512 -815.9047305921862348263521876034 -> -3.673934060071516156604453756541E-497 Inexact Rounded
-powx3013 power 4502895892520.396581348110906909E-512 -816 -> Infinity Overflow Inexact Rounded
-remx3013 remainder 4502895892520.396581348110906909E-512 -815.9047305921862348263521876034 -> 4.502895892520396581348110906909E-500
-subx3013 subtract 4502895892520.396581348110906909E-512 -815.9047305921862348263521876034 -> 815.9047305921862348263521876034 Inexact Rounded
-addx3014 add 467.6721295072628100260239179865 -02.07155073395573569852316073025 -> 465.6005787733070743275007572563 Inexact Rounded
-comx3014 compare 467.6721295072628100260239179865 -02.07155073395573569852316073025 -> 1
-divx3014 divide 467.6721295072628100260239179865 -02.07155073395573569852316073025 -> -225.7594380101027705997496045999 Inexact Rounded
-dvix3014 divideint 467.6721295072628100260239179865 -02.07155073395573569852316073025 -> -225
-mulx3014 multiply 467.6721295072628100260239179865 -02.07155073395573569852316073025 -> -968.8065431314121523074875069807 Inexact Rounded
-powx3014 power 467.6721295072628100260239179865 -2 -> 0.000004572113694193221810609836080931 Inexact Rounded
-remx3014 remainder 467.6721295072628100260239179865 -02.07155073395573569852316073025 -> 1.57321436722227785831275368025
-subx3014 subtract 467.6721295072628100260239179865 -02.07155073395573569852316073025 -> 469.7436802412185457245470787168 Inexact Rounded
-addx3015 add 2.156795313311150143949997552501E-571 -8677147.586389401682712180146855 -> -8677147.586389401682712180146855 Inexact Rounded
-comx3015 compare 2.156795313311150143949997552501E-571 -8677147.586389401682712180146855 -> 1
-divx3015 divide 2.156795313311150143949997552501E-571 -8677147.586389401682712180146855 -> -2.485604044230163799604243529005E-578 Inexact Rounded
-dvix3015 divideint 2.156795313311150143949997552501E-571 -8677147.586389401682712180146855 -> -0
-mulx3015 multiply 2.156795313311150143949997552501E-571 -8677147.586389401682712180146855 -> -1.871483124723381986272837942577E-564 Inexact Rounded
-powx3015 power 2.156795313311150143949997552501E-571 -8677148 -> Infinity Overflow Inexact Rounded
-remx3015 remainder 2.156795313311150143949997552501E-571 -8677147.586389401682712180146855 -> 2.156795313311150143949997552501E-571
-subx3015 subtract 2.156795313311150143949997552501E-571 -8677147.586389401682712180146855 -> 8677147.586389401682712180146855 Inexact Rounded
-addx3016 add -974953.2801637208368002585822457 -693095793.3667578067802698191246 -> -694070746.6469215276170700777068 Inexact Rounded
-comx3016 compare -974953.2801637208368002585822457 -693095793.3667578067802698191246 -> 1
-divx3016 divide -974953.2801637208368002585822457 -693095793.3667578067802698191246 -> 0.001406664546942092941961075608769 Inexact Rounded
-dvix3016 divideint -974953.2801637208368002585822457 -693095793.3667578067802698191246 -> 0
-mulx3016 multiply -974953.2801637208368002585822457 -693095793.3667578067802698191246 -> 675736017210596.9899587749991363 Inexact Rounded
-powx3016 power -974953.2801637208368002585822457 -693095793 -> -0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3016 remainder -974953.2801637208368002585822457 -693095793.3667578067802698191246 -> -974953.2801637208368002585822457
-subx3016 subtract -974953.2801637208368002585822457 -693095793.3667578067802698191246 -> 692120840.0865940859434695605424 Inexact Rounded
-addx3017 add -7634680140009571846155654339781 3009630949502.035852433434214413E-490 -> -7634680140009571846155654339781 Inexact Rounded
-comx3017 compare -7634680140009571846155654339781 3009630949502.035852433434214413E-490 -> -1
-divx3017 divide -7634680140009571846155654339781 3009630949502.035852433434214413E-490 -> -2.536749610869326753741024659948E+508 Inexact Rounded
-dvix3017 divideint -7634680140009571846155654339781 3009630949502.035852433434214413E-490 -> NaN Division_impossible
-mulx3017 multiply -7634680140009571846155654339781 3009630949502.035852433434214413E-490 -> -2.297756963892134373657544025107E-447 Inexact Rounded
-powx3017 power -7634680140009571846155654339781 3 -> -4.450128382072157170207584847831E+92 Inexact Rounded
-remx3017 remainder -7634680140009571846155654339781 3009630949502.035852433434214413E-490 -> NaN Division_impossible
-subx3017 subtract -7634680140009571846155654339781 3009630949502.035852433434214413E-490 -> -7634680140009571846155654339781 Inexact Rounded
-addx3018 add 262273.0222851186523650889896428E-624 74177.21073338090843145838835480 -> 74177.21073338090843145838835480 Inexact Rounded
-comx3018 compare 262273.0222851186523650889896428E-624 74177.21073338090843145838835480 -> -1
-divx3018 divide 262273.0222851186523650889896428E-624 74177.21073338090843145838835480 -> 3.535762799545274329358292065343E-624 Inexact Rounded
-dvix3018 divideint 262273.0222851186523650889896428E-624 74177.21073338090843145838835480 -> 0
-mulx3018 multiply 262273.0222851186523650889896428E-624 74177.21073338090843145838835480 -> 1.945468124372395349192665031675E-614 Inexact Rounded
-powx3018 power 262273.0222851186523650889896428E-624 74177 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3018 remainder 262273.0222851186523650889896428E-624 74177.21073338090843145838835480 -> 2.622730222851186523650889896428E-619
-subx3018 subtract 262273.0222851186523650889896428E-624 74177.21073338090843145838835480 -> -74177.21073338090843145838835480 Inexact Rounded
-addx3019 add -8036052748815903177624716581732 -066677357.4438809548850966167573 -> -8036052748815903177624783259089 Inexact Rounded
-comx3019 compare -8036052748815903177624716581732 -066677357.4438809548850966167573 -> -1
-divx3019 divide -8036052748815903177624716581732 -066677357.4438809548850966167573 -> 120521464210387351732732.6271469 Inexact Rounded
-dvix3019 divideint -8036052748815903177624716581732 -066677357.4438809548850966167573 -> 120521464210387351732732
-mulx3019 multiply -8036052748815903177624716581732 -066677357.4438809548850966167573 -> 5.358227615706800711033262124598E+38 Inexact Rounded
-powx3019 power -8036052748815903177624716581732 -66677357 -> -0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3019 remainder -8036052748815903177624716581732 -066677357.4438809548850966167573 -> -41816499.5048993028288978900564
-subx3019 subtract -8036052748815903177624716581732 -066677357.4438809548850966167573 -> -8036052748815903177624649904375 Inexact Rounded
-addx3020 add 883429.5928031498103637713570166E+765 -43978.97283712939198111043032726 -> 8.834295928031498103637713570166E+770 Inexact Rounded
-comx3020 compare 883429.5928031498103637713570166E+765 -43978.97283712939198111043032726 -> 1
-divx3020 divide 883429.5928031498103637713570166E+765 -43978.97283712939198111043032726 -> -2.008754492913739633208672455025E+766 Inexact Rounded
-dvix3020 divideint 883429.5928031498103637713570166E+765 -43978.97283712939198111043032726 -> NaN Division_impossible
-mulx3020 multiply 883429.5928031498103637713570166E+765 -43978.97283712939198111043032726 -> -3.885232606540600490321438191516E+775 Inexact Rounded
-powx3020 power 883429.5928031498103637713570166E+765 -43979 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3020 remainder 883429.5928031498103637713570166E+765 -43978.97283712939198111043032726 -> NaN Division_impossible
-subx3020 subtract 883429.5928031498103637713570166E+765 -43978.97283712939198111043032726 -> 8.834295928031498103637713570166E+770 Inexact Rounded
-addx3021 add 24791301060.37938360567775506973 -5613327866480.322649080205877564 -> -5588536565419.943265474528122494 Inexact Rounded
-comx3021 compare 24791301060.37938360567775506973 -5613327866480.322649080205877564 -> 1
-divx3021 divide 24791301060.37938360567775506973 -5613327866480.322649080205877564 -> -0.004416506865458415275182120038399 Inexact Rounded
-dvix3021 divideint 24791301060.37938360567775506973 -5613327866480.322649080205877564 -> -0
-mulx3021 multiply 24791301060.37938360567775506973 -5613327866480.322649080205877564 -> -139161701088530765925120.8408852 Inexact Rounded
-powx3021 power 24791301060.37938360567775506973 -6 -> 4.307289712375673028996126249656E-63 Inexact Rounded
-remx3021 remainder 24791301060.37938360567775506973 -5613327866480.322649080205877564 -> 24791301060.37938360567775506973
-subx3021 subtract 24791301060.37938360567775506973 -5613327866480.322649080205877564 -> 5638119167540.702032685883632634 Inexact Rounded
-addx3022 add -930711443.9474781586162910776139 -740.3860979292775472622798348030 -> -930712184.3335760878938383398937 Inexact Rounded
-comx3022 compare -930711443.9474781586162910776139 -740.3860979292775472622798348030 -> -1
-divx3022 divide -930711443.9474781586162910776139 -740.3860979292775472622798348030 -> 1257062.290270583507131602958799 Inexact Rounded
-dvix3022 divideint -930711443.9474781586162910776139 -740.3860979292775472622798348030 -> 1257062
-mulx3022 multiply -930711443.9474781586162910776139 -740.3860979292775472622798348030 -> 689085814282.3968746911100154133 Inexact Rounded
-powx3022 power -930711443.9474781586162910776139 -740 -> 1.193603394165051899997226995178E-6637 Inexact Rounded
-remx3022 remainder -930711443.9474781586162910776139 -740.3860979292775472622798348030 -> -214.9123046664996750639167712140
-subx3022 subtract -930711443.9474781586162910776139 -740.3860979292775472622798348030 -> -930710703.5613802293387438153341 Inexact Rounded
-addx3023 add 2358276428765.064191082773385539 214.3589796082328665878602304469 -> 2358276428979.423170691006252127 Inexact Rounded
-comx3023 compare 2358276428765.064191082773385539 214.3589796082328665878602304469 -> 1
-divx3023 divide 2358276428765.064191082773385539 214.3589796082328665878602304469 -> 11001528525.07089502152736489473 Inexact Rounded
-dvix3023 divideint 2358276428765.064191082773385539 214.3589796082328665878602304469 -> 11001528525
-mulx3023 multiply 2358276428765.064191082773385539 214.3589796082328665878602304469 -> 505517728904226.6233443209659001 Inexact Rounded
-powx3023 power 2358276428765.064191082773385539 214 -> 5.435856480782850080741276939256E+2647 Inexact Rounded
-remx3023 remainder 2358276428765.064191082773385539 214.3589796082328665878602304469 -> 15.1969844739096415643561521775
-subx3023 subtract 2358276428765.064191082773385539 214.3589796082328665878602304469 -> 2358276428550.705211474540518951 Inexact Rounded
-addx3024 add -3.868744449795653651638308926987E+750 8270.472492965559872384018329418 -> -3.868744449795653651638308926987E+750 Inexact Rounded
-comx3024 compare -3.868744449795653651638308926987E+750 8270.472492965559872384018329418 -> -1
-divx3024 divide -3.868744449795653651638308926987E+750 8270.472492965559872384018329418 -> -4.677779235812959233092739433453E+746 Inexact Rounded
-dvix3024 divideint -3.868744449795653651638308926987E+750 8270.472492965559872384018329418 -> NaN Division_impossible
-mulx3024 multiply -3.868744449795653651638308926987E+750 8270.472492965559872384018329418 -> -3.199634455434813294426505526063E+754 Inexact Rounded
-powx3024 power -3.868744449795653651638308926987E+750 8270 -> Infinity Overflow Inexact Rounded
-remx3024 remainder -3.868744449795653651638308926987E+750 8270.472492965559872384018329418 -> NaN Division_impossible
-subx3024 subtract -3.868744449795653651638308926987E+750 8270.472492965559872384018329418 -> -3.868744449795653651638308926987E+750 Inexact Rounded
-addx3025 add 140422069.5863246490180206814374E-447 -567195652586.2454217069003186487 -> -567195652586.2454217069003186487 Inexact Rounded
-comx3025 compare 140422069.5863246490180206814374E-447 -567195652586.2454217069003186487 -> 1
-divx3025 divide 140422069.5863246490180206814374E-447 -567195652586.2454217069003186487 -> -2.475725421131866851190640203633E-451 Inexact Rounded
-dvix3025 divideint 140422069.5863246490180206814374E-447 -567195652586.2454217069003186487 -> -0
-mulx3025 multiply 140422069.5863246490180206814374E-447 -567195652586.2454217069003186487 -> -7.964678739652657498503799559950E-428 Inexact Rounded
-powx3025 power 140422069.5863246490180206814374E-447 -6 -> 1.304330899731988395473578425854E+2633 Inexact Rounded
-remx3025 remainder 140422069.5863246490180206814374E-447 -567195652586.2454217069003186487 -> 1.404220695863246490180206814374E-439
-subx3025 subtract 140422069.5863246490180206814374E-447 -567195652586.2454217069003186487 -> 567195652586.2454217069003186487 Inexact Rounded
-addx3026 add 75929096475.63450425339472559646E+153 -0945260193.503803519572604151290E+459 -> -9.452601935038035195726041512900E+467 Inexact Rounded
-comx3026 compare 75929096475.63450425339472559646E+153 -0945260193.503803519572604151290E+459 -> 1
-divx3026 divide 75929096475.63450425339472559646E+153 -0945260193.503803519572604151290E+459 -> -8.032613347885465805613265604973E-305 Inexact Rounded
-dvix3026 divideint 75929096475.63450425339472559646E+153 -0945260193.503803519572604151290E+459 -> -0
-mulx3026 multiply 75929096475.63450425339472559646E+153 -0945260193.503803519572604151290E+459 -> -7.177275242712723733041569606882E+631 Inexact Rounded
-powx3026 power 75929096475.63450425339472559646E+153 -9 -> 1.192136299657177324051477375561E-1475 Inexact Rounded
-remx3026 remainder 75929096475.63450425339472559646E+153 -0945260193.503803519572604151290E+459 -> 7.592909647563450425339472559646E+163
-subx3026 subtract 75929096475.63450425339472559646E+153 -0945260193.503803519572604151290E+459 -> 9.452601935038035195726041512900E+467 Inexact Rounded
-addx3027 add 6312318309.142044953357460463732 -5641317823.202274083982487558514E+628 -> -5.641317823202274083982487558514E+637 Inexact Rounded
-comx3027 compare 6312318309.142044953357460463732 -5641317823.202274083982487558514E+628 -> 1
-divx3027 divide 6312318309.142044953357460463732 -5641317823.202274083982487558514E+628 -> -1.118943925332481944765809682502E-628 Inexact Rounded
-dvix3027 divideint 6312318309.142044953357460463732 -5641317823.202274083982487558514E+628 -> -0
-mulx3027 multiply 6312318309.142044953357460463732 -5641317823.202274083982487558514E+628 -> -3.560979378308906043783023726787E+647 Inexact Rounded
-powx3027 power 6312318309.142044953357460463732 -6 -> 1.580762611512787720076533747265E-59 Inexact Rounded
-remx3027 remainder 6312318309.142044953357460463732 -5641317823.202274083982487558514E+628 -> 6312318309.142044953357460463732
-subx3027 subtract 6312318309.142044953357460463732 -5641317823.202274083982487558514E+628 -> 5.641317823202274083982487558514E+637 Inexact Rounded
-addx3028 add 93793652428100.52105928239469937 917.2571313109730433369594936416E-712 -> 93793652428100.52105928239469937 Inexact Rounded
-comx3028 compare 93793652428100.52105928239469937 917.2571313109730433369594936416E-712 -> 1
-divx3028 divide 93793652428100.52105928239469937 917.2571313109730433369594936416E-712 -> 1.022544815694674972559924997256E+723 Inexact Rounded
-dvix3028 divideint 93793652428100.52105928239469937 917.2571313109730433369594936416E-712 -> NaN Division_impossible
-mulx3028 multiply 93793652428100.52105928239469937 917.2571313109730433369594936416E-712 -> 8.603289656137796526769786965341E-696 Inexact Rounded
-powx3028 power 93793652428100.52105928239469937 9 -> 5.617732206663136654187263964365E+125 Inexact Rounded
-remx3028 remainder 93793652428100.52105928239469937 917.2571313109730433369594936416E-712 -> NaN Division_impossible
-subx3028 subtract 93793652428100.52105928239469937 917.2571313109730433369594936416E-712 -> 93793652428100.52105928239469937 Inexact Rounded
-addx3029 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337115 Inexact Rounded
-comx3029 compare 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 1
-divx3029 divide 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> -4103968.106336710126241266685434 Inexact Rounded
-dvix3029 divideint 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> -4103968
-mulx3029 multiply 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> -2362732023235112.375960528304974 Inexact Rounded
-powx3029 power 98471198160.56524417578665886060 -23994 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3029 remainder 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 2551.45824316125588493249246784
-subx3029 subtract 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471222154.70837811518409435005 Inexact Rounded
-addx3030 add 329326552.0208398002250836592043 -02451.10065397010591546041034041 -> 329324100.9201858301191681987940 Inexact Rounded
-comx3030 compare 329326552.0208398002250836592043 -02451.10065397010591546041034041 -> 1
-divx3030 divide 329326552.0208398002250836592043 -02451.10065397010591546041034041 -> -134358.6406732917173739187421978 Inexact Rounded
-dvix3030 divideint 329326552.0208398002250836592043 -02451.10065397010591546041034041 -> -134358
-mulx3030 multiply 329326552.0208398002250836592043 -02451.10065397010591546041034041 -> -807212527028.0005401736893474430 Inexact Rounded
-powx3030 power 329326552.0208398002250836592043 -2451 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3030 remainder 329326552.0208398002250836592043 -02451.10065397010591546041034041 -> 1570.35472430963565384668749322
-subx3030 subtract 329326552.0208398002250836592043 -02451.10065397010591546041034041 -> 329329003.1214937703309991196146 Inexact Rounded
-addx3031 add -92980.68431371090354435763218439 -2282178507046019721925800997065 -> -2282178507046019721925801090046 Inexact Rounded
-comx3031 compare -92980.68431371090354435763218439 -2282178507046019721925800997065 -> 1
-divx3031 divide -92980.68431371090354435763218439 -2282178507046019721925800997065 -> 4.074207342968196863070496994457E-26 Inexact Rounded
-dvix3031 divideint -92980.68431371090354435763218439 -2282178507046019721925800997065 -> 0
-mulx3031 multiply -92980.68431371090354435763218439 -2282178507046019721925800997065 -> 2.121985193111820147170707717938E+35 Inexact Rounded
-powx3031 power -92980.68431371090354435763218439 -2 -> 1.156683455371909793870207184337E-10 Inexact Rounded
-remx3031 remainder -92980.68431371090354435763218439 -2282178507046019721925800997065 -> -92980.68431371090354435763218439
-subx3031 subtract -92980.68431371090354435763218439 -2282178507046019721925800997065 -> 2282178507046019721925800904084 Inexact Rounded
-addx3032 add 12135817762.27858606259822256987E+738 98.35649167872356132249561021910E-902 -> 1.213581776227858606259822256987E+748 Inexact Rounded
-comx3032 compare 12135817762.27858606259822256987E+738 98.35649167872356132249561021910E-902 -> 1
-divx3032 divide 12135817762.27858606259822256987E+738 98.35649167872356132249561021910E-902 -> 1.233860374149945561886955398724E+1648 Inexact Rounded
-dvix3032 divideint 12135817762.27858606259822256987E+738 98.35649167872356132249561021910E-902 -> NaN Division_impossible
-mulx3032 multiply 12135817762.27858606259822256987E+738 98.35649167872356132249561021910E-902 -> 1.193636458750059340733188876015E-152 Inexact Rounded
-powx3032 power 12135817762.27858606259822256987E+738 10 -> 6.929317520577437720457517499936E+7480 Inexact Rounded
-remx3032 remainder 12135817762.27858606259822256987E+738 98.35649167872356132249561021910E-902 -> NaN Division_impossible
-subx3032 subtract 12135817762.27858606259822256987E+738 98.35649167872356132249561021910E-902 -> 1.213581776227858606259822256987E+748 Inexact Rounded
-addx3033 add 37.27457578793521166809739140081 -392550.4790095035979998355569916 -> -392513.2044337156627881674596002 Inexact Rounded
-comx3033 compare 37.27457578793521166809739140081 -392550.4790095035979998355569916 -> 1
-divx3033 divide 37.27457578793521166809739140081 -392550.4790095035979998355569916 -> -0.00009495486002714264641177211062199 Inexact Rounded
-dvix3033 divideint 37.27457578793521166809739140081 -392550.4790095035979998355569916 -> -0
-mulx3033 multiply 37.27457578793521166809739140081 -392550.4790095035979998355569916 -> -14632152.58043001234518095997140 Inexact Rounded
-powx3033 power 37.27457578793521166809739140081 -392550 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3033 remainder 37.27457578793521166809739140081 -392550.4790095035979998355569916 -> 37.27457578793521166809739140081
-subx3033 subtract 37.27457578793521166809739140081 -392550.4790095035979998355569916 -> 392587.7535852915332115036543830 Inexact Rounded
-addx3034 add -2787.980590304199878755265273703 7117631179305319208210387565324 -> 7117631179305319208210387562536 Inexact Rounded
-comx3034 compare -2787.980590304199878755265273703 7117631179305319208210387565324 -> -1
-divx3034 divide -2787.980590304199878755265273703 7117631179305319208210387565324 -> -3.917006262435063093475140250870E-28 Inexact Rounded
-dvix3034 divideint -2787.980590304199878755265273703 7117631179305319208210387565324 -> -0
-mulx3034 multiply -2787.980590304199878755265273703 7117631179305319208210387565324 -> -1.984381757684722217801410305714E+34 Inexact Rounded
-powx3034 power -2787.980590304199878755265273703 7 -> -1309266999233099220127139.440082 Inexact Rounded
-remx3034 remainder -2787.980590304199878755265273703 7117631179305319208210387565324 -> -2787.980590304199878755265273703
-subx3034 subtract -2787.980590304199878755265273703 7117631179305319208210387565324 -> -7117631179305319208210387568112 Inexact Rounded
-addx3035 add -9890633.854609434943559831911276E+971 -1939985729.436827777055699361237 -> -9.890633854609434943559831911276E+977 Inexact Rounded
-comx3035 compare -9890633.854609434943559831911276E+971 -1939985729.436827777055699361237 -> -1
-divx3035 divide -9890633.854609434943559831911276E+971 -1939985729.436827777055699361237 -> 5.098302376420396260404821158158E+968 Inexact Rounded
-dvix3035 divideint -9890633.854609434943559831911276E+971 -1939985729.436827777055699361237 -> NaN Division_impossible
-mulx3035 multiply -9890633.854609434943559831911276E+971 -1939985729.436827777055699361237 -> 1.918768853302706825964087702307E+987 Inexact Rounded
-powx3035 power -9890633.854609434943559831911276E+971 -2 -> 1.022237362667592867768511487814E-1956 Inexact Rounded
-remx3035 remainder -9890633.854609434943559831911276E+971 -1939985729.436827777055699361237 -> NaN Division_impossible
-subx3035 subtract -9890633.854609434943559831911276E+971 -1939985729.436827777055699361237 -> -9.890633854609434943559831911276E+977 Inexact Rounded
-addx3036 add 3944570323.331121750661920475191 -17360722.28878145641394962484366 -> 3927209601.042340294247970850347 Inexact Rounded
-comx3036 compare 3944570323.331121750661920475191 -17360722.28878145641394962484366 -> 1
-divx3036 divide 3944570323.331121750661920475191 -17360722.28878145641394962484366 -> -227.2123393091837706827708196101 Inexact Rounded
-dvix3036 divideint 3944570323.331121750661920475191 -17360722.28878145641394962484366 -> -227
-mulx3036 multiply 3944570323.331121750661920475191 -17360722.28878145641394962484366 -> -68480589931920481.56020043213767 Inexact Rounded
-powx3036 power 3944570323.331121750661920475191 -17360722 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3036 remainder 3944570323.331121750661920475191 -17360722.28878145641394962484366 -> 3686363.77773114469535563568018
-subx3036 subtract 3944570323.331121750661920475191 -17360722.28878145641394962484366 -> 3961931045.619903207075870100035 Inexact Rounded
-addx3037 add 19544.14018503427029002552872707 1786697762.885178994182133839546 -> 1786717307.025364028452423865075 Inexact Rounded
-comx3037 compare 19544.14018503427029002552872707 1786697762.885178994182133839546 -> -1
-divx3037 divide 19544.14018503427029002552872707 1786697762.885178994182133839546 -> 0.00001093869404832867759234359871991 Inexact Rounded
-dvix3037 divideint 19544.14018503427029002552872707 1786697762.885178994182133839546 -> 0
-mulx3037 multiply 19544.14018503427029002552872707 1786697762.885178994182133839546 -> 34919471546115.05897163496162290 Inexact Rounded
-powx3037 power 19544.14018503427029002552872707 2 -> 381973415.5722714009298802557940 Inexact Rounded
-remx3037 remainder 19544.14018503427029002552872707 1786697762.885178994182133839546 -> 19544.14018503427029002552872707
-subx3037 subtract 19544.14018503427029002552872707 1786697762.885178994182133839546 -> -1786678218.744993959911843814017 Inexact Rounded
-addx3038 add -05.75485957937617757983513662981 5564476875.989640431173694372083 -> 5564476870.234780851797516792248 Inexact Rounded
-comx3038 compare -05.75485957937617757983513662981 5564476875.989640431173694372083 -> -1
-divx3038 divide -05.75485957937617757983513662981 5564476875.989640431173694372083 -> -1.034213944568271324841608825136E-9 Inexact Rounded
-dvix3038 divideint -05.75485957937617757983513662981 5564476875.989640431173694372083 -> -0
-mulx3038 multiply -05.75485957937617757983513662981 5564476875.989640431173694372083 -> -32022783054.00620878436398990135 Inexact Rounded
-powx3038 power -05.75485957937617757983513662981 6 -> 36325.23118223611421303238908472 Inexact Rounded
-remx3038 remainder -05.75485957937617757983513662981 5564476875.989640431173694372083 -> -5.75485957937617757983513662981
-subx3038 subtract -05.75485957937617757983513662981 5564476875.989640431173694372083 -> -5564476881.744500010549871951918 Inexact Rounded
-addx3039 add -4208820.898718069194008526302746 626887.7553774705678201112845462E+206 -> 6.268877553774705678201112845462E+211 Inexact Rounded
-comx3039 compare -4208820.898718069194008526302746 626887.7553774705678201112845462E+206 -> -1
-divx3039 divide -4208820.898718069194008526302746 626887.7553774705678201112845462E+206 -> -6.713834913211527184907421856434E-206 Inexact Rounded
-dvix3039 divideint -4208820.898718069194008526302746 626887.7553774705678201112845462E+206 -> -0
-mulx3039 multiply -4208820.898718069194008526302746 626887.7553774705678201112845462E+206 -> -2.638458285983158789458925170267E+218 Inexact Rounded
-powx3039 power -4208820.898718069194008526302746 6 -> 5.558564783291260359142223337994E+39 Inexact Rounded
-remx3039 remainder -4208820.898718069194008526302746 626887.7553774705678201112845462E+206 -> -4208820.898718069194008526302746
-subx3039 subtract -4208820.898718069194008526302746 626887.7553774705678201112845462E+206 -> -6.268877553774705678201112845462E+211 Inexact Rounded
-addx3040 add -70077195478066.30896979085821269E+549 4607.163248554155483681430013073 -> -7.007719547806630896979085821269E+562 Inexact Rounded
-comx3040 compare -70077195478066.30896979085821269E+549 4607.163248554155483681430013073 -> -1
-divx3040 divide -70077195478066.30896979085821269E+549 4607.163248554155483681430013073 -> -1.521048673498997627360230078306E+559 Inexact Rounded
-dvix3040 divideint -70077195478066.30896979085821269E+549 4607.163248554155483681430013073 -> NaN Division_impossible
-mulx3040 multiply -70077195478066.30896979085821269E+549 4607.163248554155483681430013073 -> -3.228570795682925509478191397878E+566 Inexact Rounded
-powx3040 power -70077195478066.30896979085821269E+549 4607 -> -Infinity Overflow Inexact Rounded
-remx3040 remainder -70077195478066.30896979085821269E+549 4607.163248554155483681430013073 -> NaN Division_impossible
-subx3040 subtract -70077195478066.30896979085821269E+549 4607.163248554155483681430013073 -> -7.007719547806630896979085821269E+562 Inexact Rounded
-addx3041 add -442941.7541811527940918244383454 -068126768.0563559819156379151016 -> -68569709.81053713470972973953995 Inexact Rounded
-comx3041 compare -442941.7541811527940918244383454 -068126768.0563559819156379151016 -> 1
-divx3041 divide -442941.7541811527940918244383454 -068126768.0563559819156379151016 -> 0.006501728568934042143913111768557 Inexact Rounded
-dvix3041 divideint -442941.7541811527940918244383454 -068126768.0563559819156379151016 -> 0
-mulx3041 multiply -442941.7541811527940918244383454 -068126768.0563559819156379151016 -> 30176190149574.84386395947593970 Inexact Rounded
-powx3041 power -442941.7541811527940918244383454 -68126768 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3041 remainder -442941.7541811527940918244383454 -068126768.0563559819156379151016 -> -442941.7541811527940918244383454
-subx3041 subtract -442941.7541811527940918244383454 -068126768.0563559819156379151016 -> 67683826.30217482912154609066325 Inexact Rounded
-addx3042 add -040726778711.8677615616711676159 299691.9430345259174614997064916 -> -40726479019.92472703575370611619 Inexact Rounded
-comx3042 compare -040726778711.8677615616711676159 299691.9430345259174614997064916 -> -1
-divx3042 divide -040726778711.8677615616711676159 299691.9430345259174614997064916 -> -135895.4741975690872548233111888 Inexact Rounded
-dvix3042 divideint -040726778711.8677615616711676159 299691.9430345259174614997064916 -> -135895
-mulx3042 multiply -040726778711.8677615616711676159 299691.9430345259174614997064916 -> -12205487445696816.02175665622242 Inexact Rounded
-powx3042 power -040726778711.8677615616711676159 299692 -> Infinity Overflow Inexact Rounded
-remx3042 remainder -040726778711.8677615616711676159 299691.9430345259174614997064916 -> -142113.1908620082406650022240180
-subx3042 subtract -040726778711.8677615616711676159 299691.9430345259174614997064916 -> -40727078403.81079608758862911561 Inexact Rounded
-addx3043 add -1934197520.738366912179143085955 3.810751422515178400293693371519 -> -1934197516.927615489663964685661 Inexact Rounded
-comx3043 compare -1934197520.738366912179143085955 3.810751422515178400293693371519 -> -1
-divx3043 divide -1934197520.738366912179143085955 3.810751422515178400293693371519 -> -507563287.7312566071537233697473 Inexact Rounded
-dvix3043 divideint -1934197520.738366912179143085955 3.810751422515178400293693371519 -> -507563287
-mulx3043 multiply -1934197520.738366912179143085955 3.810751422515178400293693371519 -> -7370745953.579062985130438309023 Inexact Rounded
-powx3043 power -1934197520.738366912179143085955 4 -> 1.399597922275400947497855539475E+37 Inexact Rounded
-remx3043 remainder -1934197520.738366912179143085955 3.810751422515178400293693371519 -> -2.786637155934674312936704177047
-subx3043 subtract -1934197520.738366912179143085955 3.810751422515178400293693371519 -> -1934197524.549118334694321486249 Inexact Rounded
-addx3044 add 813262.7723533833038829559646830 -303284822716.8282178131118185907 -> -303284009454.0558644298079356347 Inexact Rounded
-comx3044 compare 813262.7723533833038829559646830 -303284822716.8282178131118185907 -> 1
-divx3044 divide 813262.7723533833038829559646830 -303284822716.8282178131118185907 -> -0.000002681514904267770294213381485108 Inexact Rounded
-dvix3044 divideint 813262.7723533833038829559646830 -303284822716.8282178131118185907 -> -0
-mulx3044 multiply 813262.7723533833038829559646830 -303284822716.8282178131118185907 -> -246650255735392080.1357404280431 Inexact Rounded
-powx3044 power 813262.7723533833038829559646830 -3 -> 1.859119568310997605545914895133E-18 Inexact Rounded
-remx3044 remainder 813262.7723533833038829559646830 -303284822716.8282178131118185907 -> 813262.7723533833038829559646830
-subx3044 subtract 813262.7723533833038829559646830 -303284822716.8282178131118185907 -> 303285635979.6005711964157015467 Inexact Rounded
-addx3045 add 36105954884.94621434979365589311 745558205.7692397481313005659523E-952 -> 36105954884.94621434979365589311 Inexact Rounded
-comx3045 compare 36105954884.94621434979365589311 745558205.7692397481313005659523E-952 -> 1
-divx3045 divide 36105954884.94621434979365589311 745558205.7692397481313005659523E-952 -> 4.842808328786805821411674302686E+953 Inexact Rounded
-dvix3045 divideint 36105954884.94621434979365589311 745558205.7692397481313005659523E-952 -> NaN Division_impossible
-mulx3045 multiply 36105954884.94621434979365589311 745558205.7692397481313005659523E-952 -> 2.691909094160561673391352743869E-933 Inexact Rounded
-powx3045 power 36105954884.94621434979365589311 7 -> 7.999297449713301719582732447386E+73 Inexact Rounded
-remx3045 remainder 36105954884.94621434979365589311 745558205.7692397481313005659523E-952 -> NaN Division_impossible
-subx3045 subtract 36105954884.94621434979365589311 745558205.7692397481313005659523E-952 -> 36105954884.94621434979365589311 Inexact Rounded
-addx3046 add -075537177538.1814516621962185490 26980775255.51542856483122484898 -> -48556402282.66602309736499370002
-comx3046 compare -075537177538.1814516621962185490 26980775255.51542856483122484898 -> -1
-divx3046 divide -075537177538.1814516621962185490 26980775255.51542856483122484898 -> -2.799666682029089956269018541649 Inexact Rounded
-dvix3046 divideint -075537177538.1814516621962185490 26980775255.51542856483122484898 -> -2
-mulx3046 multiply -075537177538.1814516621962185490 26980775255.51542856483122484898 -> -2038051610593641947717.268652175 Inexact Rounded
-powx3046 power -075537177538.1814516621962185490 3 -> -4.310049518987988084595264617727E+32 Inexact Rounded
-remx3046 remainder -075537177538.1814516621962185490 26980775255.51542856483122484898 -> -21575627027.15059453253376885104
-subx3046 subtract -075537177538.1814516621962185490 26980775255.51542856483122484898 -> -102517952793.6968802270274433980 Inexact Rounded
-addx3047 add -4223765.415319564898840040697647 -2590590305497454185455459149918E-215 -> -4223765.415319564898840040697647 Inexact Rounded
-comx3047 compare -4223765.415319564898840040697647 -2590590305497454185455459149918E-215 -> -1
-divx3047 divide -4223765.415319564898840040697647 -2590590305497454185455459149918E-215 -> 1.630425855588347356570076909053E+191 Inexact Rounded
-dvix3047 divideint -4223765.415319564898840040697647 -2590590305497454185455459149918E-215 -> NaN Division_impossible
-mulx3047 multiply -4223765.415319564898840040697647 -2590590305497454185455459149918E-215 -> 1.094204573762229308798604845395E-178 Inexact Rounded
-powx3047 power -4223765.415319564898840040697647 -3 -> -1.327090775863616939309569791138E-20 Inexact Rounded
-remx3047 remainder -4223765.415319564898840040697647 -2590590305497454185455459149918E-215 -> NaN Division_impossible
-subx3047 subtract -4223765.415319564898840040697647 -2590590305497454185455459149918E-215 -> -4223765.415319564898840040697647 Inexact Rounded
-addx3048 add -6468.903738522951259063099946195 -7877.324314273694312164407794939E+267 -> -7.877324314273694312164407794939E+270 Inexact Rounded
-comx3048 compare -6468.903738522951259063099946195 -7877.324314273694312164407794939E+267 -> 1
-divx3048 divide -6468.903738522951259063099946195 -7877.324314273694312164407794939E+267 -> 8.212057140774706874666307246628E-268 Inexact Rounded
-dvix3048 divideint -6468.903738522951259063099946195 -7877.324314273694312164407794939E+267 -> 0
-mulx3048 multiply -6468.903738522951259063099946195 -7877.324314273694312164407794939E+267 -> 5.095765270616284455922747530676E+274 Inexact Rounded
-powx3048 power -6468.903738522951259063099946195 -8 -> 3.261027724982089298030362367616E-31 Inexact Rounded
-remx3048 remainder -6468.903738522951259063099946195 -7877.324314273694312164407794939E+267 -> -6468.903738522951259063099946195
-subx3048 subtract -6468.903738522951259063099946195 -7877.324314273694312164407794939E+267 -> 7.877324314273694312164407794939E+270 Inexact Rounded
-addx3049 add -9567221.183663236817239254783372E-203 1650.198961256061165362319471264 -> 1650.198961256061165362319471264 Inexact Rounded
-comx3049 compare -9567221.183663236817239254783372E-203 1650.198961256061165362319471264 -> -1
-divx3049 divide -9567221.183663236817239254783372E-203 1650.198961256061165362319471264 -> -5.797616777301250711985729776957E-200 Inexact Rounded
-dvix3049 divideint -9567221.183663236817239254783372E-203 1650.198961256061165362319471264 -> -0
-mulx3049 multiply -9567221.183663236817239254783372E-203 1650.198961256061165362319471264 -> -1.578781845938805737527304303976E-193 Inexact Rounded
-powx3049 power -9567221.183663236817239254783372E-203 1650 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3049 remainder -9567221.183663236817239254783372E-203 1650.198961256061165362319471264 -> -9.567221183663236817239254783372E-197
-subx3049 subtract -9567221.183663236817239254783372E-203 1650.198961256061165362319471264 -> -1650.198961256061165362319471264 Inexact Rounded
-addx3050 add 8812306098770.200752139142033569E-428 26790.17380163975186972720427030E+568 -> 2.679017380163975186972720427030E+572 Inexact Rounded
-comx3050 compare 8812306098770.200752139142033569E-428 26790.17380163975186972720427030E+568 -> -1
-divx3050 divide 8812306098770.200752139142033569E-428 26790.17380163975186972720427030E+568 -> 3.289379965960065573444140749635E-988 Inexact Rounded
-dvix3050 divideint 8812306098770.200752139142033569E-428 26790.17380163975186972720427030E+568 -> 0
-mulx3050 multiply 8812306098770.200752139142033569E-428 26790.17380163975186972720427030E+568 -> 2.360832119793036398127652187732E+157 Inexact Rounded
-powx3050 power 8812306098770.200752139142033569E-428 3 -> 6.843349527476967274129043949969E-1246 Inexact Rounded
-remx3050 remainder 8812306098770.200752139142033569E-428 26790.17380163975186972720427030E+568 -> 8.812306098770200752139142033569E-416
-subx3050 subtract 8812306098770.200752139142033569E-428 26790.17380163975186972720427030E+568 -> -2.679017380163975186972720427030E+572 Inexact Rounded
-addx3051 add 80108033.12724838718736922500904 -706207255092.7645192310078892869 -> -706127147059.6372708438205200619 Inexact Rounded
-comx3051 compare 80108033.12724838718736922500904 -706207255092.7645192310078892869 -> 1
-divx3051 divide 80108033.12724838718736922500904 -706207255092.7645192310078892869 -> -0.0001134341690057060105325397863996 Inexact Rounded
-dvix3051 divideint 80108033.12724838718736922500904 -706207255092.7645192310078892869 -> -0
-mulx3051 multiply 80108033.12724838718736922500904 -706207255092.7645192310078892869 -> -56572874185674332398.36004114372 Inexact Rounded
-powx3051 power 80108033.12724838718736922500904 -7 -> 4.723539145042336483008674060324E-56 Inexact Rounded
-remx3051 remainder 80108033.12724838718736922500904 -706207255092.7645192310078892869 -> 80108033.12724838718736922500904
-subx3051 subtract 80108033.12724838718736922500904 -706207255092.7645192310078892869 -> 706287363125.8917676181952585119 Inexact Rounded
-addx3052 add -37942846282.76101663789059003505 -5.649456053942850351313869983197 -> -37942846288.41047269183344038636 Inexact Rounded
-comx3052 compare -37942846282.76101663789059003505 -5.649456053942850351313869983197 -> -1
-divx3052 divide -37942846282.76101663789059003505 -5.649456053942850351313869983197 -> 6716194607.139224735032566328960 Inexact Rounded
-dvix3052 divideint -37942846282.76101663789059003505 -5.649456053942850351313869983197 -> 6716194607
-mulx3052 multiply -37942846282.76101663789059003505 -5.649456053942850351313869983197 -> 214356442635.9672009449140933366 Inexact Rounded
-powx3052 power -37942846282.76101663789059003505 -6 -> 3.351355986382646046773008753885E-64 Inexact Rounded
-remx3052 remainder -37942846282.76101663789059003505 -5.649456053942850351313869983197 -> -0.786544022188321089603127981421
-subx3052 subtract -37942846282.76101663789059003505 -5.649456053942850351313869983197 -> -37942846277.11156058394773968374 Inexact Rounded
-addx3053 add 92659632115305.13735437728445541 6483438.317862851676468094261410E-139 -> 92659632115305.13735437728445541 Inexact Rounded
-comx3053 compare 92659632115305.13735437728445541 6483438.317862851676468094261410E-139 -> 1
-divx3053 divide 92659632115305.13735437728445541 6483438.317862851676468094261410E-139 -> 1.429174267919135710410529211791E+146 Inexact Rounded
-dvix3053 divideint 92659632115305.13735437728445541 6483438.317862851676468094261410E-139 -> NaN Division_impossible
-mulx3053 multiply 92659632115305.13735437728445541 6483438.317862851676468094261410E-139 -> 6.007530093754446085819255987878E-119 Inexact Rounded
-powx3053 power 92659632115305.13735437728445541 6 -> 6.329121451953461546696051563323E+83 Inexact Rounded
-remx3053 remainder 92659632115305.13735437728445541 6483438.317862851676468094261410E-139 -> NaN Division_impossible
-subx3053 subtract 92659632115305.13735437728445541 6483438.317862851676468094261410E-139 -> 92659632115305.13735437728445541 Inexact Rounded
-addx3054 add 2838948.589837595494152150647194 569547026247.5469563701415715960 -> 569549865196.1367939656357237466 Inexact Rounded
-comx3054 compare 2838948.589837595494152150647194 569547026247.5469563701415715960 -> -1
-divx3054 divide 2838948.589837595494152150647194 569547026247.5469563701415715960 -> 0.000004984572755198057481907281080406 Inexact Rounded
-dvix3054 divideint 2838948.589837595494152150647194 569547026247.5469563701415715960 -> 0
-mulx3054 multiply 2838948.589837595494152150647194 569547026247.5469563701415715960 -> 1616914727011669419.390959984273 Inexact Rounded
-powx3054 power 2838948.589837595494152150647194 6 -> 5.235343334986059753096884080673E+38 Inexact Rounded
-remx3054 remainder 2838948.589837595494152150647194 569547026247.5469563701415715960 -> 2838948.589837595494152150647194
-subx3054 subtract 2838948.589837595494152150647194 569547026247.5469563701415715960 -> -569544187298.9571187746474194454 Inexact Rounded
-addx3055 add 524995204523.6053307941775794287E+694 1589600879689517100527293028553 -> 5.249952045236053307941775794287E+705 Inexact Rounded
-comx3055 compare 524995204523.6053307941775794287E+694 1589600879689517100527293028553 -> 1
-divx3055 divide 524995204523.6053307941775794287E+694 1589600879689517100527293028553 -> 3.302685669286670708554753139233E+675 Inexact Rounded
-dvix3055 divideint 524995204523.6053307941775794287E+694 1589600879689517100527293028553 -> NaN Division_impossible
-mulx3055 multiply 524995204523.6053307941775794287E+694 1589600879689517100527293028553 -> 8.345328389435009812933599889447E+735 Inexact Rounded
-powx3055 power 524995204523.6053307941775794287E+694 2 -> 2.756199647727821911857160230849E+1411 Inexact Rounded
-remx3055 remainder 524995204523.6053307941775794287E+694 1589600879689517100527293028553 -> NaN Division_impossible
-subx3055 subtract 524995204523.6053307941775794287E+694 1589600879689517100527293028553 -> 5.249952045236053307941775794287E+705 Inexact Rounded
-addx3056 add -57131573677452.15449921725097290 4669681430736.326858508715643769 -> -52461892246715.82764070853532913 Inexact Rounded
-comx3056 compare -57131573677452.15449921725097290 4669681430736.326858508715643769 -> -1
-divx3056 divide -57131573677452.15449921725097290 4669681430736.326858508715643769 -> -12.23457628210057733643575143694 Inexact Rounded
-dvix3056 divideint -57131573677452.15449921725097290 4669681430736.326858508715643769 -> -12
-mulx3056 multiply -57131573677452.15449921725097290 4669681430736.326858508715643769 -> -266786248710342647746063322.0544 Inexact Rounded
-powx3056 power -57131573677452.15449921725097290 5 -> -6.086686503752679375430019503679E+68 Inexact Rounded
-remx3056 remainder -57131573677452.15449921725097290 4669681430736.326858508715643769 -> -1095396508616.232197112663247672
-subx3056 subtract -57131573677452.15449921725097290 4669681430736.326858508715643769 -> -61801255108188.48135772596661667 Inexact Rounded
-addx3057 add 90794826.55528018781830463383411 -5.471502270351231110027647216128 -> 90794821.08377791746707352380646 Inexact Rounded
-comx3057 compare 90794826.55528018781830463383411 -5.471502270351231110027647216128 -> 1
-divx3057 divide 90794826.55528018781830463383411 -5.471502270351231110027647216128 -> -16594131.20365054928428313232246 Inexact Rounded
-dvix3057 divideint 90794826.55528018781830463383411 -5.471502270351231110027647216128 -> -16594131
-mulx3057 multiply 90794826.55528018781830463383411 -5.471502270351231110027647216128 -> -496784099.6333617958496589124964 Inexact Rounded
-powx3057 power 90794826.55528018781830463383411 -5 -> 1.620669590532856523565742953997E-40 Inexact Rounded
-remx3057 remainder 90794826.55528018781830463383411 -5.471502270351231110027647216128 -> 1.114274442767230442307896655232
-subx3057 subtract 90794826.55528018781830463383411 -5.471502270351231110027647216128 -> 90794832.02678245816953574386176 Inexact Rounded
-addx3058 add 58508794729.35191160840980489138 -47060867.24988279680824397447551 -> 58461733862.10202881160156091690 Inexact Rounded
-comx3058 compare 58508794729.35191160840980489138 -47060867.24988279680824397447551 -> 1
-divx3058 divide 58508794729.35191160840980489138 -47060867.24988279680824397447551 -> -1243.257894477021678809337875304 Inexact Rounded
-dvix3058 divideint 58508794729.35191160840980489138 -47060867.24988279680824397447551 -> -1243
-mulx3058 multiply 58508794729.35191160840980489138 -47060867.24988279680824397447551 -> -2753474621708672573.249029643967 Inexact Rounded
-powx3058 power 58508794729.35191160840980489138 -47060867 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3058 remainder 58508794729.35191160840980489138 -47060867.24988279680824397447551 -> 12136737.74759517576254461832107
-subx3058 subtract 58508794729.35191160840980489138 -47060867.24988279680824397447551 -> 58555855596.60179440521804886586 Inexact Rounded
-addx3059 add -746104.0768078474426464219416332E+006 9595418.300613754556671852801667E+385 -> 9.595418300613754556671852801667E+391 Inexact Rounded
-comx3059 compare -746104.0768078474426464219416332E+006 9595418.300613754556671852801667E+385 -> -1
-divx3059 divide -746104.0768078474426464219416332E+006 9595418.300613754556671852801667E+385 -> -7.775628465932789700547872511745E-381 Inexact Rounded
-dvix3059 divideint -746104.0768078474426464219416332E+006 9595418.300613754556671852801667E+385 -> -0
-mulx3059 multiply -746104.0768078474426464219416332E+006 9595418.300613754556671852801667E+385 -> -7.159180712764549711669939947084E+403 Inexact Rounded
-powx3059 power -746104.0768078474426464219416332E+006 10 -> 5.345571346302582882805035996696E+118 Inexact Rounded
-remx3059 remainder -746104.0768078474426464219416332E+006 9595418.300613754556671852801667E+385 -> -746104076807.8474426464219416332
-subx3059 subtract -746104.0768078474426464219416332E+006 9595418.300613754556671852801667E+385 -> -9.595418300613754556671852801667E+391 Inexact Rounded
-addx3060 add 55.99427632688387400403789659459E+119 -9.170530450881612853998489340127 -> 5.599427632688387400403789659459E+120 Inexact Rounded
-comx3060 compare 55.99427632688387400403789659459E+119 -9.170530450881612853998489340127 -> 1
-divx3060 divide 55.99427632688387400403789659459E+119 -9.170530450881612853998489340127 -> -6.105892851759828176655685111491E+119 Inexact Rounded
-dvix3060 divideint 55.99427632688387400403789659459E+119 -9.170530450881612853998489340127 -> NaN Division_impossible
-mulx3060 multiply 55.99427632688387400403789659459E+119 -9.170530450881612853998489340127 -> -5.134972161307679939281170944556E+121 Inexact Rounded
-powx3060 power 55.99427632688387400403789659459E+119 -9 -> 1.848022584764384077672041056396E-1087 Inexact Rounded
-remx3060 remainder 55.99427632688387400403789659459E+119 -9.170530450881612853998489340127 -> NaN Division_impossible
-subx3060 subtract 55.99427632688387400403789659459E+119 -9.170530450881612853998489340127 -> 5.599427632688387400403789659459E+120 Inexact Rounded
-addx3061 add -41214265628.83801241467317270595 1015336323798389903361978271354 -> 1015336323798389903320764005725 Inexact Rounded
-comx3061 compare -41214265628.83801241467317270595 1015336323798389903361978271354 -> -1
-divx3061 divide -41214265628.83801241467317270595 1015336323798389903361978271354 -> -4.059173759750342247620706384027E-20 Inexact Rounded
-dvix3061 divideint -41214265628.83801241467317270595 1015336323798389903361978271354 -> -0
-mulx3061 multiply -41214265628.83801241467317270595 1015336323798389903361978271354 -> -4.184634095163472384028549378392E+40 Inexact Rounded
-powx3061 power -41214265628.83801241467317270595 1 -> -41214265628.83801241467317270595
-remx3061 remainder -41214265628.83801241467317270595 1015336323798389903361978271354 -> -41214265628.83801241467317270595
-subx3061 subtract -41214265628.83801241467317270595 1015336323798389903361978271354 -> -1015336323798389903403192536983 Inexact Rounded
-addx3062 add 89937.39749201095570357557430822 82351554210093.60879476027800331 -> 82351554300031.00628677123370689 Inexact Rounded
-comx3062 compare 89937.39749201095570357557430822 82351554210093.60879476027800331 -> -1
-divx3062 divide 89937.39749201095570357557430822 82351554210093.60879476027800331 -> 1.092115362662913415592930982129E-9 Inexact Rounded
-dvix3062 divideint 89937.39749201095570357557430822 82351554210093.60879476027800331 -> 0
-mulx3062 multiply 89937.39749201095570357557430822 82351554210093.60879476027800331 -> 7406484465078077191.920015793662 Inexact Rounded
-powx3062 power 89937.39749201095570357557430822 8 -> 4.280776267723913043050100934291E+39 Inexact Rounded
-remx3062 remainder 89937.39749201095570357557430822 82351554210093.60879476027800331 -> 89937.39749201095570357557430822
-subx3062 subtract 89937.39749201095570357557430822 82351554210093.60879476027800331 -> -82351554120156.21130274932229973 Inexact Rounded
-addx3063 add 01712661.64677082156284125486943E+359 57932.78435529483241552042115837E-037 -> 1.712661646770821562841254869430E+365 Inexact Rounded
-comx3063 compare 01712661.64677082156284125486943E+359 57932.78435529483241552042115837E-037 -> 1
-divx3063 divide 01712661.64677082156284125486943E+359 57932.78435529483241552042115837E-037 -> 2.956290925475414185960999788848E+397 Inexact Rounded
-dvix3063 divideint 01712661.64677082156284125486943E+359 57932.78435529483241552042115837E-037 -> NaN Division_impossible
-mulx3063 multiply 01712661.64677082156284125486943E+359 57932.78435529483241552042115837E-037 -> 9.921925785595813587655312307930E+332 Inexact Rounded
-powx3063 power 01712661.64677082156284125486943E+359 6 -> 2.523651803323047711735501944959E+2191 Inexact Rounded
-remx3063 remainder 01712661.64677082156284125486943E+359 57932.78435529483241552042115837E-037 -> NaN Division_impossible
-subx3063 subtract 01712661.64677082156284125486943E+359 57932.78435529483241552042115837E-037 -> 1.712661646770821562841254869430E+365 Inexact Rounded
-addx3064 add -2647593306.528617691373470059213 -655531558709.4582168930191014461 -> -658179152015.9868345843925715053 Inexact Rounded
-comx3064 compare -2647593306.528617691373470059213 -655531558709.4582168930191014461 -> 1
-divx3064 divide -2647593306.528617691373470059213 -655531558709.4582168930191014461 -> 0.004038849497560303158639192895544 Inexact Rounded
-dvix3064 divideint -2647593306.528617691373470059213 -655531558709.4582168930191014461 -> 0
-mulx3064 multiply -2647593306.528617691373470059213 -655531558709.4582168930191014461 -> 1735580967057433153120.099643641 Inexact Rounded
-powx3064 power -2647593306.528617691373470059213 -7 -> -1.096581914005902583413810201571E-66 Inexact Rounded
-remx3064 remainder -2647593306.528617691373470059213 -655531558709.4582168930191014461 -> -2647593306.528617691373470059213
-subx3064 subtract -2647593306.528617691373470059213 -655531558709.4582168930191014461 -> 652883965402.9295992016456313869 Inexact Rounded
-addx3065 add 2904078690665765116603253099668E-329 -71.45586619176091599264717047885E+787 -> -7.145586619176091599264717047885E+788 Inexact Rounded
-comx3065 compare 2904078690665765116603253099668E-329 -71.45586619176091599264717047885E+787 -> 1
-divx3065 divide 2904078690665765116603253099668E-329 -71.45586619176091599264717047885E+787 -> -4.064157144036712325084472022316E-1088 Inexact Rounded
-dvix3065 divideint 2904078690665765116603253099668E-329 -71.45586619176091599264717047885E+787 -> -0
-mulx3065 multiply 2904078690665765116603253099668E-329 -71.45586619176091599264717047885E+787 -> -2.075134583305571527962710017262E+490 Inexact Rounded
-powx3065 power 2904078690665765116603253099668E-329 -7 -> 5.740389208842895561250128407803E+2089 Inexact Rounded
-remx3065 remainder 2904078690665765116603253099668E-329 -71.45586619176091599264717047885E+787 -> 2.904078690665765116603253099668E-299
-subx3065 subtract 2904078690665765116603253099668E-329 -71.45586619176091599264717047885E+787 -> 7.145586619176091599264717047885E+788 Inexact Rounded
-addx3066 add 22094338972.39109726522477999515 -409846549371.3900805039668417203E-499 -> 22094338972.39109726522477999515 Inexact Rounded
-comx3066 compare 22094338972.39109726522477999515 -409846549371.3900805039668417203E-499 -> 1
-divx3066 divide 22094338972.39109726522477999515 -409846549371.3900805039668417203E-499 -> -5.390880808019174194010224736965E+497 Inexact Rounded
-dvix3066 divideint 22094338972.39109726522477999515 -409846549371.3900805039668417203E-499 -> NaN Division_impossible
-mulx3066 multiply 22094338972.39109726522477999515 -409846549371.3900805039668417203E-499 -> -9.055288588476315822113975426730E-478 Inexact Rounded
-powx3066 power 22094338972.39109726522477999515 -4 -> 4.196391022354122686725315209967E-42 Inexact Rounded
-remx3066 remainder 22094338972.39109726522477999515 -409846549371.3900805039668417203E-499 -> NaN Division_impossible
-subx3066 subtract 22094338972.39109726522477999515 -409846549371.3900805039668417203E-499 -> 22094338972.39109726522477999515 Inexact Rounded
-addx3067 add -3374988581607586061255542201048 82293895124.90045271504836568681 -> -3374988581607586061173248305923 Inexact Rounded
-comx3067 compare -3374988581607586061255542201048 82293895124.90045271504836568681 -> -1
-divx3067 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81310977038 Inexact Rounded
-dvix3067 divideint -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797
-mulx3067 multiply -3374988581607586061255542201048 82293895124.90045271504836568681 -> -2.777409563825512202793336132310E+41 Inexact Rounded
-powx3067 power -3374988581607586061255542201048 8 -> 1.683365657238878057620634207267E+244 Inexact Rounded
-remx3067 remainder -3374988581607586061255542201048 82293895124.90045271504836568681 -> -66913970168.62046257175566384243
-subx3067 subtract -3374988581607586061255542201048 82293895124.90045271504836568681 -> -3374988581607586061337836096173 Inexact Rounded
-addx3068 add -84172558160661.35863831029352323 -11271.58916600931155937291904890 -> -84172558171932.94780431960508260 Inexact Rounded
-comx3068 compare -84172558160661.35863831029352323 -11271.58916600931155937291904890 -> -1
-divx3068 divide -84172558160661.35863831029352323 -11271.58916600931155937291904890 -> 7467674426.467986736459678347587 Inexact Rounded
-dvix3068 divideint -84172558160661.35863831029352323 -11271.58916600931155937291904890 -> 7467674426
-mulx3068 multiply -84172558160661.35863831029352323 -11271.58916600931155937291904890 -> 948758494638999235.1953022970755 Inexact Rounded
-powx3068 power -84172558160661.35863831029352323 -11272 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3068 remainder -84172558160661.35863831029352323 -11271.58916600931155937291904890 -> -5274.95422851496534479122656860
-subx3068 subtract -84172558160661.35863831029352323 -11271.58916600931155937291904890 -> -84172558149389.76947230098196386 Inexact Rounded
-addx3069 add -70046932324614.90596396237508541E-568 33.63163964004608865836577297698E-918 -> -7.004693232461490596396237508541E-555 Inexact Rounded
-comx3069 compare -70046932324614.90596396237508541E-568 33.63163964004608865836577297698E-918 -> -1
-divx3069 divide -70046932324614.90596396237508541E-568 33.63163964004608865836577297698E-918 -> -2.082768876995463487926920072359E+362 Inexact Rounded
-dvix3069 divideint -70046932324614.90596396237508541E-568 33.63163964004608865836577297698E-918 -> NaN Division_impossible
-mulx3069 multiply -70046932324614.90596396237508541E-568 33.63163964004608865836577297698E-918 -> -2.355793185832144388285949021738E-1471 Inexact Rounded
-powx3069 power -70046932324614.90596396237508541E-568 3 -> -3.436903678302639677280508409829E-1663 Inexact Rounded
-remx3069 remainder -70046932324614.90596396237508541E-568 33.63163964004608865836577297698E-918 -> NaN Division_impossible
-subx3069 subtract -70046932324614.90596396237508541E-568 33.63163964004608865836577297698E-918 -> -7.004693232461490596396237508541E-555 Inexact Rounded
-addx3070 add 0004125384407.053782660115680886 -391429084.5847321402514385603223E-648 -> 4125384407.053782660115680886000 Inexact Rounded
-comx3070 compare 0004125384407.053782660115680886 -391429084.5847321402514385603223E-648 -> 1
-divx3070 divide 0004125384407.053782660115680886 -391429084.5847321402514385603223E-648 -> -1.053928941287132717250540955457E+649 Inexact Rounded
-dvix3070 divideint 0004125384407.053782660115680886 -391429084.5847321402514385603223E-648 -> NaN Division_impossible
-mulx3070 multiply 0004125384407.053782660115680886 -391429084.5847321402514385603223E-648 -> -1.614795442013190139080634449273E-630 Inexact Rounded
-powx3070 power 0004125384407.053782660115680886 -4 -> 3.452568541597450106266555783362E-39 Inexact Rounded
-remx3070 remainder 0004125384407.053782660115680886 -391429084.5847321402514385603223E-648 -> NaN Division_impossible
-subx3070 subtract 0004125384407.053782660115680886 -391429084.5847321402514385603223E-648 -> 4125384407.053782660115680886000 Inexact Rounded
-addx3071 add -31823131.15691583393820628480997E-440 92913.91582947237200286427030028E+771 -> 9.291391582947237200286427030028E+775 Inexact Rounded
-comx3071 compare -31823131.15691583393820628480997E-440 92913.91582947237200286427030028E+771 -> -1
-divx3071 divide -31823131.15691583393820628480997E-440 92913.91582947237200286427030028E+771 -> -3.425012375468251447194400841658E-1209 Inexact Rounded
-dvix3071 divideint -31823131.15691583393820628480997E-440 92913.91582947237200286427030028E+771 -> -0
-mulx3071 multiply -31823131.15691583393820628480997E-440 92913.91582947237200286427030028E+771 -> -2.956811729743937541973845029816E+343 Inexact Rounded
-powx3071 power -31823131.15691583393820628480997E-440 9 -> -3.347234803487575870321338308655E-3893 Inexact Rounded
-remx3071 remainder -31823131.15691583393820628480997E-440 92913.91582947237200286427030028E+771 -> -3.182313115691583393820628480997E-433
-subx3071 subtract -31823131.15691583393820628480997E-440 92913.91582947237200286427030028E+771 -> -9.291391582947237200286427030028E+775 Inexact Rounded
-addx3072 add 55573867888.91575330563698128150 599.5231614736232188354393212234 -> 55573868488.43891477926020011694 Inexact Rounded
-comx3072 compare 55573867888.91575330563698128150 599.5231614736232188354393212234 -> 1
-divx3072 divide 55573867888.91575330563698128150 599.5231614736232188354393212234 -> 92696782.14318796763098335498657 Inexact Rounded
-dvix3072 divideint 55573867888.91575330563698128150 599.5231614736232188354393212234 -> 92696782
-mulx3072 multiply 55573867888.91575330563698128150 599.5231614736232188354393212234 -> 33317820972080.24347717542221477 Inexact Rounded
-powx3072 power 55573867888.91575330563698128150 600 -> 8.363240671070136278221965616973E+6446 Inexact Rounded
-remx3072 remainder 55573867888.91575330563698128150 599.5231614736232188354393212234 -> 85.8445030391099686478265169012
-subx3072 subtract 55573867888.91575330563698128150 599.5231614736232188354393212234 -> 55573867289.39259183201376244606 Inexact Rounded
-addx3073 add -5447727448431680878699555714796E-800 5487207.142687001607026665515349E-362 -> 5.487207142687001607026665515349E-356 Inexact Rounded
-comx3073 compare -5447727448431680878699555714796E-800 5487207.142687001607026665515349E-362 -> -1
-divx3073 divide -5447727448431680878699555714796E-800 5487207.142687001607026665515349E-362 -> -9.928051387110587327889009363069E-415 Inexact Rounded
-dvix3073 divideint -5447727448431680878699555714796E-800 5487207.142687001607026665515349E-362 -> -0
-mulx3073 multiply -5447727448431680878699555714796E-800 5487207.142687001607026665515349E-362 -> -2.989280896644635352838087864373E-1125 Inexact Rounded
-powx3073 power -5447727448431680878699555714796E-800 5 -> -4.798183553278543065204833300725E-3847 Inexact Rounded
-remx3073 remainder -5447727448431680878699555714796E-800 5487207.142687001607026665515349E-362 -> -5.447727448431680878699555714796E-770
-subx3073 subtract -5447727448431680878699555714796E-800 5487207.142687001607026665515349E-362 -> -5.487207142687001607026665515349E-356 Inexact Rounded
-addx3074 add 0418349404834.547110239542290134 09819915.92405288066606124554841 -> 418359224750.4711631202083513795 Inexact Rounded
-comx3074 compare 0418349404834.547110239542290134 09819915.92405288066606124554841 -> 1
-divx3074 divide 0418349404834.547110239542290134 09819915.92405288066606124554841 -> 42602.13713335803513874339309132 Inexact Rounded
-dvix3074 divideint 0418349404834.547110239542290134 09819915.92405288066606124554841 -> 42602
-mulx3074 multiply 0418349404834.547110239542290134 09819915.92405288066606124554841 -> 4108155982352814348.343441299082 Inexact Rounded
-powx3074 power 0418349404834.547110239542290134 9819916 -> Infinity Overflow Inexact Rounded
-remx3074 remainder 0418349404834.547110239542290134 09819915.92405288066606124554841 -> 1346638.04628810400110728063718
-subx3074 subtract 0418349404834.547110239542290134 09819915.92405288066606124554841 -> 418339584918.6230573588762288885 Inexact Rounded
-addx3075 add -262021.7565194737396448014286436 -7983992600094836304387324162042E+390 -> -7.983992600094836304387324162042E+420 Inexact Rounded
-comx3075 compare -262021.7565194737396448014286436 -7983992600094836304387324162042E+390 -> 1
-divx3075 divide -262021.7565194737396448014286436 -7983992600094836304387324162042E+390 -> 3.281838669494274896180376328433E-416 Inexact Rounded
-dvix3075 divideint -262021.7565194737396448014286436 -7983992600094836304387324162042E+390 -> 0
-mulx3075 multiply -262021.7565194737396448014286436 -7983992600094836304387324162042E+390 -> 2.091979765115329268275803385534E+426 Inexact Rounded
-powx3075 power -262021.7565194737396448014286436 -8 -> 4.500918721033033032706782304195E-44 Inexact Rounded
-remx3075 remainder -262021.7565194737396448014286436 -7983992600094836304387324162042E+390 -> -262021.7565194737396448014286436
-subx3075 subtract -262021.7565194737396448014286436 -7983992600094836304387324162042E+390 -> 7.983992600094836304387324162042E+420 Inexact Rounded
-addx3076 add 48696050631.42565380301204592392E-505 -33868752339.85057267609967806187E+821 -> -3.386875233985057267609967806187E+831 Inexact Rounded
-comx3076 compare 48696050631.42565380301204592392E-505 -33868752339.85057267609967806187E+821 -> 1
-divx3076 divide 48696050631.42565380301204592392E-505 -33868752339.85057267609967806187E+821 -> -1.437786964892976582009952172420E-1326 Inexact Rounded
-dvix3076 divideint 48696050631.42565380301204592392E-505 -33868752339.85057267609967806187E+821 -> -0
-mulx3076 multiply 48696050631.42565380301204592392E-505 -33868752339.85057267609967806187E+821 -> -1.649274478764579569246425611629E+337 Inexact Rounded
-powx3076 power 48696050631.42565380301204592392E-505 -3 -> 8.660017688773759463020340778853E+1482 Inexact Rounded
-remx3076 remainder 48696050631.42565380301204592392E-505 -33868752339.85057267609967806187E+821 -> 4.869605063142565380301204592392E-495
-subx3076 subtract 48696050631.42565380301204592392E-505 -33868752339.85057267609967806187E+821 -> 3.386875233985057267609967806187E+831 Inexact Rounded
-addx3077 add 95316999.19440144356471126680708 -60791.33805057402845885978390435 -> 95256207.85635086953625240702318 Inexact Rounded
-comx3077 compare 95316999.19440144356471126680708 -60791.33805057402845885978390435 -> 1
-divx3077 divide 95316999.19440144356471126680708 -60791.33805057402845885978390435 -> -1567.937180706641856870286122623 Inexact Rounded
-dvix3077 divideint 95316999.19440144356471126680708 -60791.33805057402845885978390435 -> -1567
-mulx3077 multiply 95316999.19440144356471126680708 -60791.33805057402845885978390435 -> -5794447919993.150493301061195714 Inexact Rounded
-powx3077 power 95316999.19440144356471126680708 -60791 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3077 remainder 95316999.19440144356471126680708 -60791.33805057402845885978390435 -> 56972.46915194096967798542896355
-subx3077 subtract 95316999.19440144356471126680708 -60791.33805057402845885978390435 -> 95377790.53245201759317012659098 Inexact Rounded
-addx3078 add -5326702296402708234722215224979E-136 8032459.450998820205916538543258 -> 8032459.450998820205916538543258 Inexact Rounded
-comx3078 compare -5326702296402708234722215224979E-136 8032459.450998820205916538543258 -> -1
-divx3078 divide -5326702296402708234722215224979E-136 8032459.450998820205916538543258 -> -6.631471131473117487839243582873E-113 Inexact Rounded
-dvix3078 divideint -5326702296402708234722215224979E-136 8032459.450998820205916538543258 -> -0
-mulx3078 multiply -5326702296402708234722215224979E-136 8032459.450998820205916538543258 -> -4.278652020339705265013632757349E-99 Inexact Rounded
-powx3078 power -5326702296402708234722215224979E-136 8032459 -> -0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3078 remainder -5326702296402708234722215224979E-136 8032459.450998820205916538543258 -> -5.326702296402708234722215224979E-106
-subx3078 subtract -5326702296402708234722215224979E-136 8032459.450998820205916538543258 -> -8032459.450998820205916538543258 Inexact Rounded
-addx3079 add 67.18750684079501575335482615780E-281 734.1168841683438410314843011541E-854 -> 6.718750684079501575335482615780E-280 Inexact Rounded
-comx3079 compare 67.18750684079501575335482615780E-281 734.1168841683438410314843011541E-854 -> 1
-divx3079 divide 67.18750684079501575335482615780E-281 734.1168841683438410314843011541E-854 -> 9.152153872187460598958616592442E+571 Inexact Rounded
-dvix3079 divideint 67.18750684079501575335482615780E-281 734.1168841683438410314843011541E-854 -> NaN Division_impossible
-mulx3079 multiply 67.18750684079501575335482615780E-281 734.1168841683438410314843011541E-854 -> 4.932348317700372401849231767007E-1131 Inexact Rounded
-powx3079 power 67.18750684079501575335482615780E-281 7 -> 6.180444071023111300817518409550E-1955 Inexact Rounded
-remx3079 remainder 67.18750684079501575335482615780E-281 734.1168841683438410314843011541E-854 -> NaN Division_impossible
-subx3079 subtract 67.18750684079501575335482615780E-281 734.1168841683438410314843011541E-854 -> 6.718750684079501575335482615780E-280 Inexact Rounded
-addx3080 add -8739299372114.092482914139281669 507610074.7343577029345077385838 -> -8738791762039.358125211204773930 Inexact Rounded
-comx3080 compare -8739299372114.092482914139281669 507610074.7343577029345077385838 -> -1
-divx3080 divide -8739299372114.092482914139281669 507610074.7343577029345077385838 -> -17216.56012577673731612130068130 Inexact Rounded
-dvix3080 divideint -8739299372114.092482914139281669 507610074.7343577029345077385838 -> -17216
-mulx3080 multiply -8739299372114.092482914139281669 507610074.7343577029345077385838 -> -4436156407404759833857.580707024 Inexact Rounded
-powx3080 power -8739299372114.092482914139281669 507610075 -> -Infinity Overflow Inexact Rounded
-remx3080 remainder -8739299372114.092482914139281669 507610074.7343577029345077385838 -> -284325487.3902691936540542102992
-subx3080 subtract -8739299372114.092482914139281669 507610074.7343577029345077385838 -> -8739806982188.826840617073789408 Inexact Rounded
-addx3081 add 2454.002078468928665008217727731 583546039.6233842869119950982009E-147 -> 2454.002078468928665008217727731 Inexact Rounded
-comx3081 compare 2454.002078468928665008217727731 583546039.6233842869119950982009E-147 -> 1
-divx3081 divide 2454.002078468928665008217727731 583546039.6233842869119950982009E-147 -> 4.205327278123112611006652533618E+141 Inexact Rounded
-dvix3081 divideint 2454.002078468928665008217727731 583546039.6233842869119950982009E-147 -> NaN Division_impossible
-mulx3081 multiply 2454.002078468928665008217727731 583546039.6233842869119950982009E-147 -> 1.432023194118096842806010293027E-135 Inexact Rounded
-powx3081 power 2454.002078468928665008217727731 6 -> 218398452792293853786.9263054420 Inexact Rounded
-remx3081 remainder 2454.002078468928665008217727731 583546039.6233842869119950982009E-147 -> NaN Division_impossible
-subx3081 subtract 2454.002078468928665008217727731 583546039.6233842869119950982009E-147 -> 2454.002078468928665008217727731 Inexact Rounded
-addx3082 add 764578.5204849936912066033177429 64603.13571259164812609436832506 -> 829181.6561975853393326976860680 Inexact Rounded
-comx3082 compare 764578.5204849936912066033177429 64603.13571259164812609436832506 -> 1
-divx3082 divide 764578.5204849936912066033177429 64603.13571259164812609436832506 -> 11.83500633601553578851124281417 Inexact Rounded
-dvix3082 divideint 764578.5204849936912066033177429 64603.13571259164812609436832506 -> 11
-mulx3082 multiply 764578.5204849936912066033177429 64603.13571259164812609436832506 -> 49394169921.82458094138096628957 Inexact Rounded
-powx3082 power 764578.5204849936912066033177429 64603 -> Infinity Overflow Inexact Rounded
-remx3082 remainder 764578.5204849936912066033177429 64603.13571259164812609436832506 -> 53944.02764648556181956526616724
-subx3082 subtract 764578.5204849936912066033177429 64603.13571259164812609436832506 -> 699975.3847724020430805089494178 Inexact Rounded
-addx3083 add 079203.7330103777716903518367560 846388934347.6324036132959664705 -> 846389013551.3654139910676568223 Inexact Rounded
-comx3083 compare 079203.7330103777716903518367560 846388934347.6324036132959664705 -> -1
-divx3083 divide 079203.7330103777716903518367560 846388934347.6324036132959664705 -> 9.357841270860339858146471876044E-8 Inexact Rounded
-dvix3083 divideint 079203.7330103777716903518367560 846388934347.6324036132959664705 -> 0
-mulx3083 multiply 079203.7330103777716903518367560 846388934347.6324036132959664705 -> 67037163179008037.19983564789203 Inexact Rounded
-powx3083 power 079203.7330103777716903518367560 8 -> 1.548692549503356788115682996756E+39 Inexact Rounded
-remx3083 remainder 079203.7330103777716903518367560 846388934347.6324036132959664705 -> 79203.7330103777716903518367560
-subx3083 subtract 079203.7330103777716903518367560 846388934347.6324036132959664705 -> -846388855143.8993932355242761187 Inexact Rounded
-addx3084 add -4278.581514688669249247007127899E-329 5.474973992953902631890208360829 -> 5.474973992953902631890208360829 Inexact Rounded
-comx3084 compare -4278.581514688669249247007127899E-329 5.474973992953902631890208360829 -> -1
-divx3084 divide -4278.581514688669249247007127899E-329 5.474973992953902631890208360829 -> -7.814797878848469282033896969532E-327 Inexact Rounded
-dvix3084 divideint -4278.581514688669249247007127899E-329 5.474973992953902631890208360829 -> -0
-mulx3084 multiply -4278.581514688669249247007127899E-329 5.474973992953902631890208360829 -> -2.342512251965378028433584538870E-325 Inexact Rounded
-powx3084 power -4278.581514688669249247007127899E-329 5 -> -1.433834587801771244104676682986E-1627 Inexact Rounded
-remx3084 remainder -4278.581514688669249247007127899E-329 5.474973992953902631890208360829 -> -4.278581514688669249247007127899E-326
-subx3084 subtract -4278.581514688669249247007127899E-329 5.474973992953902631890208360829 -> -5.474973992953902631890208360829 Inexact Rounded
-addx3085 add 60867019.81764798845468445196869E+651 6.149612565404080501157093851895E+817 -> 6.149612565404080501157093851895E+817 Inexact Rounded
-comx3085 compare 60867019.81764798845468445196869E+651 6.149612565404080501157093851895E+817 -> -1
-divx3085 divide 60867019.81764798845468445196869E+651 6.149612565404080501157093851895E+817 -> 9.897699923417617920996187420968E-160 Inexact Rounded
-dvix3085 divideint 60867019.81764798845468445196869E+651 6.149612565404080501157093851895E+817 -> 0
-mulx3085 multiply 60867019.81764798845468445196869E+651 6.149612565404080501157093851895E+817 -> 3.743085898893072544197564013497E+1476 Inexact Rounded
-powx3085 power 60867019.81764798845468445196869E+651 6 -> 5.085014897388871736767602086646E+3952 Inexact Rounded
-remx3085 remainder 60867019.81764798845468445196869E+651 6.149612565404080501157093851895E+817 -> 6.086701981764798845468445196869E+658
-subx3085 subtract 60867019.81764798845468445196869E+651 6.149612565404080501157093851895E+817 -> -6.149612565404080501157093851895E+817 Inexact Rounded
-addx3086 add 18554417738217.62218590965803605E-382 -0894505909529.052378474618435782E+527 -> -8.945059095290523784746184357820E+538 Inexact Rounded
-comx3086 compare 18554417738217.62218590965803605E-382 -0894505909529.052378474618435782E+527 -> 1
-divx3086 divide 18554417738217.62218590965803605E-382 -0894505909529.052378474618435782E+527 -> -2.074264411286709228674841672954E-908 Inexact Rounded
-dvix3086 divideint 18554417738217.62218590965803605E-382 -0894505909529.052378474618435782E+527 -> -0
-mulx3086 multiply 18554417738217.62218590965803605E-382 -0894505909529.052378474618435782E+527 -> -1.659703631470633700884136887614E+170 Inexact Rounded
-powx3086 power 18554417738217.62218590965803605E-382 -9 -> 3.836842998295531899082688721531E+3318 Inexact Rounded
-remx3086 remainder 18554417738217.62218590965803605E-382 -0894505909529.052378474618435782E+527 -> 1.855441773821762218590965803605E-369
-subx3086 subtract 18554417738217.62218590965803605E-382 -0894505909529.052378474618435782E+527 -> 8.945059095290523784746184357820E+538 Inexact Rounded
-addx3087 add 69073355517144.36356688642213839 997784782535.6104634823627327033E+116 -> 9.977847825356104634823627327033E+127 Inexact Rounded
-comx3087 compare 69073355517144.36356688642213839 997784782535.6104634823627327033E+116 -> -1
-divx3087 divide 69073355517144.36356688642213839 997784782535.6104634823627327033E+116 -> 6.922670772910807388395384866884E-115 Inexact Rounded
-dvix3087 divideint 69073355517144.36356688642213839 997784782535.6104634823627327033E+116 -> 0
-mulx3087 multiply 69073355517144.36356688642213839 997784782535.6104634823627327033E+116 -> 6.892034301367879802693422066425E+141 Inexact Rounded
-powx3087 power 69073355517144.36356688642213839 10 -> 2.472324890841334302628435461516E+138 Inexact Rounded
-remx3087 remainder 69073355517144.36356688642213839 997784782535.6104634823627327033E+116 -> 69073355517144.36356688642213839
-subx3087 subtract 69073355517144.36356688642213839 997784782535.6104634823627327033E+116 -> -9.977847825356104634823627327033E+127 Inexact Rounded
-addx3088 add 450282259072.8657099359104277477 -1791307965314309175477911369824 -> -1791307965314309175027629110751 Inexact Rounded
-comx3088 compare 450282259072.8657099359104277477 -1791307965314309175477911369824 -> 1
-divx3088 divide 450282259072.8657099359104277477 -1791307965314309175477911369824 -> -2.513706564096350714213771006483E-19 Inexact Rounded
-dvix3088 divideint 450282259072.8657099359104277477 -1791307965314309175477911369824 -> -0
-mulx3088 multiply 450282259072.8657099359104277477 -1791307965314309175477911369824 -> -8.065941973169457071650996861677E+41 Inexact Rounded
-powx3088 power 450282259072.8657099359104277477 -2 -> 4.932082442194544671633570348838E-24 Inexact Rounded
-remx3088 remainder 450282259072.8657099359104277477 -1791307965314309175477911369824 -> 450282259072.8657099359104277477
-subx3088 subtract 450282259072.8657099359104277477 -1791307965314309175477911369824 -> 1791307965314309175928193628897 Inexact Rounded
-addx3089 add 954678411.7838149266455177850037 142988.7096204254529284334278794 -> 954821400.4934353520984462184316 Inexact Rounded
-comx3089 compare 954678411.7838149266455177850037 142988.7096204254529284334278794 -> 1
-divx3089 divide 954678411.7838149266455177850037 142988.7096204254529284334278794 -> 6676.599951968811589335427770046 Inexact Rounded
-dvix3089 divideint 954678411.7838149266455177850037 142988.7096204254529284334278794 -> 6676
-mulx3089 multiply 954678411.7838149266455177850037 142988.7096204254529284334278794 -> 136508234203444.8694879431412375 Inexact Rounded
-powx3089 power 954678411.7838149266455177850037 142989 -> Infinity Overflow Inexact Rounded
-remx3089 remainder 954678411.7838149266455177850037 142988.7096204254529284334278794 -> 85786.3578546028952962204808256
-subx3089 subtract 954678411.7838149266455177850037 142988.7096204254529284334278794 -> 954535423.0741945011925893515758 Inexact Rounded
-addx3090 add -9244530976.220812127155852389807E+557 541089.4715446858896619078627941 -> -9.244530976220812127155852389807E+566 Inexact Rounded
-comx3090 compare -9244530976.220812127155852389807E+557 541089.4715446858896619078627941 -> -1
-divx3090 divide -9244530976.220812127155852389807E+557 541089.4715446858896619078627941 -> -1.708503207395591002370649848757E+561 Inexact Rounded
-dvix3090 divideint -9244530976.220812127155852389807E+557 541089.4715446858896619078627941 -> NaN Division_impossible
-mulx3090 multiply -9244530976.220812127155852389807E+557 541089.4715446858896619078627941 -> -5.002118380601798392363043558941E+572 Inexact Rounded
-powx3090 power -9244530976.220812127155852389807E+557 541089 -> -Infinity Overflow Inexact Rounded
-remx3090 remainder -9244530976.220812127155852389807E+557 541089.4715446858896619078627941 -> NaN Division_impossible
-subx3090 subtract -9244530976.220812127155852389807E+557 541089.4715446858896619078627941 -> -9.244530976220812127155852389807E+566 Inexact Rounded
-addx3091 add -75492024.20990197005974241975449 -14760421311348.35269044633000927 -> -14760496803372.56259241638975169 Inexact Rounded
-comx3091 compare -75492024.20990197005974241975449 -14760421311348.35269044633000927 -> 1
-divx3091 divide -75492024.20990197005974241975449 -14760421311348.35269044633000927 -> 0.000005114489797920668836278344635108 Inexact Rounded
-dvix3091 divideint -75492024.20990197005974241975449 -14760421311348.35269044633000927 -> 0
-mulx3091 multiply -75492024.20990197005974241975449 -14760421311348.35269044633000927 -> 1114294082984662825831.464787487 Inexact Rounded
-powx3091 power -75492024.20990197005974241975449 -1 -> -1.324643246046162082348970735576E-8 Inexact Rounded
-remx3091 remainder -75492024.20990197005974241975449 -14760421311348.35269044633000927 -> -75492024.20990197005974241975449
-subx3091 subtract -75492024.20990197005974241975449 -14760421311348.35269044633000927 -> 14760345819324.14278847627026685 Inexact Rounded
-addx3092 add 317747.6972215715434186596178036E-452 24759763.33144824613591228097330E+092 -> 2.475976333144824613591228097330E+99 Inexact Rounded
-comx3092 compare 317747.6972215715434186596178036E-452 24759763.33144824613591228097330E+092 -> -1
-divx3092 divide 317747.6972215715434186596178036E-452 24759763.33144824613591228097330E+092 -> 1.283322837007852247594216151634E-546 Inexact Rounded
-dvix3092 divideint 317747.6972215715434186596178036E-452 24759763.33144824613591228097330E+092 -> 0
-mulx3092 multiply 317747.6972215715434186596178036E-452 24759763.33144824613591228097330E+092 -> 7.867357782318786860404997647513E-348 Inexact Rounded
-powx3092 power 317747.6972215715434186596178036E-452 2 -> 1.009635990896115043331231496209E-893 Inexact Rounded
-remx3092 remainder 317747.6972215715434186596178036E-452 24759763.33144824613591228097330E+092 -> 3.177476972215715434186596178036E-447
-subx3092 subtract 317747.6972215715434186596178036E-452 24759763.33144824613591228097330E+092 -> -2.475976333144824613591228097330E+99 Inexact Rounded
-addx3093 add -8.153334430358647134334545353427 -9.717872025814596548462854853522 -> -17.87120645617324368279740020695 Inexact Rounded
-comx3093 compare -8.153334430358647134334545353427 -9.717872025814596548462854853522 -> 1
-divx3093 divide -8.153334430358647134334545353427 -9.717872025814596548462854853522 -> 0.8390040956188859972044344532019 Inexact Rounded
-dvix3093 divideint -8.153334430358647134334545353427 -9.717872025814596548462854853522 -> 0
-mulx3093 multiply -8.153334430358647134334545353427 -9.717872025814596548462854853522 -> 79.23306057789328578902960605222 Inexact Rounded
-powx3093 power -8.153334430358647134334545353427 -10 -> 7.702778966876727056635952801162E-10 Inexact Rounded
-remx3093 remainder -8.153334430358647134334545353427 -9.717872025814596548462854853522 -> -8.153334430358647134334545353427
-subx3093 subtract -8.153334430358647134334545353427 -9.717872025814596548462854853522 -> 1.564537595455949414128309500095
-addx3094 add 7.267345197492967332320456062961E-478 5054015481833.263541189916208065 -> 5054015481833.263541189916208065 Inexact Rounded
-comx3094 compare 7.267345197492967332320456062961E-478 5054015481833.263541189916208065 -> -1
-divx3094 divide 7.267345197492967332320456062961E-478 5054015481833.263541189916208065 -> 1.437934890309606594895299558654E-490 Inexact Rounded
-dvix3094 divideint 7.267345197492967332320456062961E-478 5054015481833.263541189916208065 -> 0
-mulx3094 multiply 7.267345197492967332320456062961E-478 5054015481833.263541189916208065 -> 3.672927513995607308048737751972E-465 Inexact Rounded
-powx3094 power 7.267345197492967332320456062961E-478 5 -> 2.027117616846668568108096583897E-2386 Inexact Rounded
-remx3094 remainder 7.267345197492967332320456062961E-478 5054015481833.263541189916208065 -> 7.267345197492967332320456062961E-478
-subx3094 subtract 7.267345197492967332320456062961E-478 5054015481833.263541189916208065 -> -5054015481833.263541189916208065 Inexact Rounded
-addx3095 add -1223354029.862567054230912271171 8135774223401322785475014855625 -> 8135774223401322785473791501595 Inexact Rounded
-comx3095 compare -1223354029.862567054230912271171 8135774223401322785475014855625 -> -1
-divx3095 divide -1223354029.862567054230912271171 8135774223401322785475014855625 -> -1.503672540892020337688277553692E-22 Inexact Rounded
-dvix3095 divideint -1223354029.862567054230912271171 8135774223401322785475014855625 -> -0
-mulx3095 multiply -1223354029.862567054230912271171 8135774223401322785475014855625 -> -9.952932182250005119307429060894E+39 Inexact Rounded
-powx3095 power -1223354029.862567054230912271171 8 -> 5.016689887192830666848068841227E+72 Inexact Rounded
-remx3095 remainder -1223354029.862567054230912271171 8135774223401322785475014855625 -> -1223354029.862567054230912271171
-subx3095 subtract -1223354029.862567054230912271171 8135774223401322785475014855625 -> -8135774223401322785476238209655 Inexact Rounded
-addx3096 add 285397644111.5655679961211349982E+645 -2479499427613157519359627280704 -> 2.853976441115655679961211349982E+656 Inexact Rounded
-comx3096 compare 285397644111.5655679961211349982E+645 -2479499427613157519359627280704 -> 1
-divx3096 divide 285397644111.5655679961211349982E+645 -2479499427613157519359627280704 -> -1.151029280076495626421134733122E+626 Inexact Rounded
-dvix3096 divideint 285397644111.5655679961211349982E+645 -2479499427613157519359627280704 -> NaN Division_impossible
-mulx3096 multiply 285397644111.5655679961211349982E+645 -2479499427613157519359627280704 -> -7.076432952167704614138411740001E+686 Inexact Rounded
-powx3096 power 285397644111.5655679961211349982E+645 -2 -> 1.227719722087860401233030479451E-1313 Inexact Rounded
-remx3096 remainder 285397644111.5655679961211349982E+645 -2479499427613157519359627280704 -> NaN Division_impossible
-subx3096 subtract 285397644111.5655679961211349982E+645 -2479499427613157519359627280704 -> 2.853976441115655679961211349982E+656 Inexact Rounded
-addx3097 add -4673112.663442366293812346653429 -3429.998403142546001438238460958 -> -4676542.661845508839813784891890 Inexact Rounded
-comx3097 compare -4673112.663442366293812346653429 -3429.998403142546001438238460958 -> -1
-divx3097 divide -4673112.663442366293812346653429 -3429.998403142546001438238460958 -> 1362.424151323477505064686589716 Inexact Rounded
-dvix3097 divideint -4673112.663442366293812346653429 -3429.998403142546001438238460958 -> 1362
-mulx3097 multiply -4673112.663442366293812346653429 -3429.998403142546001438238460958 -> 16028768973.31252639476148371361 Inexact Rounded
-powx3097 power -4673112.663442366293812346653429 -3430 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3097 remainder -4673112.663442366293812346653429 -3429.998403142546001438238460958 -> -1454.838362218639853465869604204
-subx3097 subtract -4673112.663442366293812346653429 -3429.998403142546001438238460958 -> -4669682.665039223747810908414968 Inexact Rounded
-addx3098 add 88.96492479681278079861456051103 386939.4621006514751889096510923E+139 -> 3.869394621006514751889096510923E+144 Inexact Rounded
-comx3098 compare 88.96492479681278079861456051103 386939.4621006514751889096510923E+139 -> -1
-divx3098 divide 88.96492479681278079861456051103 386939.4621006514751889096510923E+139 -> 2.299194926095985647821385937618E-143 Inexact Rounded
-dvix3098 divideint 88.96492479681278079861456051103 386939.4621006514751889096510923E+139 -> 0
-mulx3098 multiply 88.96492479681278079861456051103 386939.4621006514751889096510923E+139 -> 3.442404014670364763780946297856E+146 Inexact Rounded
-powx3098 power 88.96492479681278079861456051103 4 -> 62643391.73078290226474758858970 Inexact Rounded
-remx3098 remainder 88.96492479681278079861456051103 386939.4621006514751889096510923E+139 -> 88.96492479681278079861456051103
-subx3098 subtract 88.96492479681278079861456051103 386939.4621006514751889096510923E+139 -> -3.869394621006514751889096510923E+144 Inexact Rounded
-addx3099 add 064326846.4286437304788069444326E-942 92.23649942010862087149015091350 -> 92.23649942010862087149015091350 Inexact Rounded
-comx3099 compare 064326846.4286437304788069444326E-942 92.23649942010862087149015091350 -> -1
-divx3099 divide 064326846.4286437304788069444326E-942 92.23649942010862087149015091350 -> 6.974120530708230229344349531719E-937 Inexact Rounded
-dvix3099 divideint 064326846.4286437304788069444326E-942 92.23649942010862087149015091350 -> 0
-mulx3099 multiply 064326846.4286437304788069444326E-942 92.23649942010862087149015091350 -> 5.933283133313013755814405436342E-933 Inexact Rounded
-powx3099 power 064326846.4286437304788069444326E-942 92 -> 0E-10029 Underflow Subnormal Inexact Rounded Clamped
-remx3099 remainder 064326846.4286437304788069444326E-942 92.23649942010862087149015091350 -> 6.43268464286437304788069444326E-935
-subx3099 subtract 064326846.4286437304788069444326E-942 92.23649942010862087149015091350 -> -92.23649942010862087149015091350 Inexact Rounded
-addx3100 add 504507.0043949324433170405699360 605387.7175522955344659311072099 -> 1109894.721947227977782971677146 Inexact Rounded
-comx3100 compare 504507.0043949324433170405699360 605387.7175522955344659311072099 -> -1
-divx3100 divide 504507.0043949324433170405699360 605387.7175522955344659311072099 -> 0.8333618105678718895216067463832 Inexact Rounded
-dvix3100 divideint 504507.0043949324433170405699360 605387.7175522955344659311072099 -> 0
-mulx3100 multiply 504507.0043949324433170405699360 605387.7175522955344659311072099 -> 305422343879.7940838630401656585 Inexact Rounded
-powx3100 power 504507.0043949324433170405699360 605388 -> Infinity Overflow Inexact Rounded
-remx3100 remainder 504507.0043949324433170405699360 605387.7175522955344659311072099 -> 504507.0043949324433170405699360
-subx3100 subtract 504507.0043949324433170405699360 605387.7175522955344659311072099 -> -100880.7131573630911488905372739
-
--- randomly generated testcases [26 Sep 2001]
-precision: 32
-rounding: half_up
-maxExponent: 9999
-
-addx3201 add 1.5283550163839789319142430253644 -1.6578158484822969520405291379492 -> -0.1294608320983180201262861125848
-comx3201 compare 1.5283550163839789319142430253644 -1.6578158484822969520405291379492 -> 1
-divx3201 divide 1.5283550163839789319142430253644 -1.6578158484822969520405291379492 -> -0.92190879812324313630282980110280 Inexact Rounded
-dvix3201 divideint 1.5283550163839789319142430253644 -1.6578158484822969520405291379492 -> -0
-mulx3201 multiply 1.5283550163839789319142430253644 -1.6578158484822969520405291379492 -> -2.5337311682687808926633910761614 Inexact Rounded
-powx3201 power 1.5283550163839789319142430253644 -2 -> 0.42810618916584924451466691603128 Inexact Rounded
-remx3201 remainder 1.5283550163839789319142430253644 -1.6578158484822969520405291379492 -> 1.5283550163839789319142430253644
-subx3201 subtract 1.5283550163839789319142430253644 -1.6578158484822969520405291379492 -> 3.1861708648662758839547721633136
-addx3202 add -622903030605.2867503937836507326 6519388607.1331855704471328795821 -> -616383641998.15356482333651785302 Inexact Rounded
-comx3202 compare -622903030605.2867503937836507326 6519388607.1331855704471328795821 -> -1
-divx3202 divide -622903030605.2867503937836507326 6519388607.1331855704471328795821 -> -95.546234185785110491676894153510 Inexact Rounded
-dvix3202 divideint -622903030605.2867503937836507326 6519388607.1331855704471328795821 -> -95
-mulx3202 multiply -622903030605.2867503937836507326 6519388607.1331855704471328795821 -> -4060946921076840449949.6988828486 Inexact Rounded
-powx3202 power -622903030605.2867503937836507326 7 -> -3.6386736597702404352813308064300E+82 Inexact Rounded
-remx3202 remainder -622903030605.2867503937836507326 6519388607.1331855704471328795821 -> -3561112927.6341212013060271723005
-subx3202 subtract -622903030605.2867503937836507326 6519388607.1331855704471328795821 -> -629422419212.41993596423078361218 Inexact Rounded
-addx3203 add -5675915.2465457487632250245209054 73913909880.381367895205086027416 -> 73908233965.134822146441861002895 Inexact Rounded
-comx3203 compare -5675915.2465457487632250245209054 73913909880.381367895205086027416 -> -1
-divx3203 divide -5675915.2465457487632250245209054 73913909880.381367895205086027416 -> -0.000076790894376056827552388054657082 Inexact Rounded
-dvix3203 divideint -5675915.2465457487632250245209054 73913909880.381367895205086027416 -> -0
-mulx3203 multiply -5675915.2465457487632250245209054 73913909880.381367895205086027416 -> -419529088021865067.23307352973589 Inexact Rounded
-powx3203 power -5675915.2465457487632250245209054 7 -> -1.8978038060207777231389234721908E+47 Inexact Rounded
-remx3203 remainder -5675915.2465457487632250245209054 73913909880.381367895205086027416 -> -5675915.2465457487632250245209054
-subx3203 subtract -5675915.2465457487632250245209054 73913909880.381367895205086027416 -> -73919585795.627913643968311051937 Inexact Rounded
-addx3204 add 97.647321172555144900685605318635 4.8620911587547548751209841570885 -> 102.50941233130989977580658947572 Inexact Rounded
-comx3204 compare 97.647321172555144900685605318635 4.8620911587547548751209841570885 -> 1
-divx3204 divide 97.647321172555144900685605318635 4.8620911587547548751209841570885 -> 20.083399916665466374741708949621 Inexact Rounded
-dvix3204 divideint 97.647321172555144900685605318635 4.8620911587547548751209841570885 -> 20
-mulx3204 multiply 97.647321172555144900685605318635 4.8620911587547548751209841570885 -> 474.77017694916635398652276042175 Inexact Rounded
-powx3204 power 97.647321172555144900685605318635 5 -> 8877724578.7935312939231828719842 Inexact Rounded
-remx3204 remainder 97.647321172555144900685605318635 4.8620911587547548751209841570885 -> 0.4054979974600473982659221768650
-subx3204 subtract 97.647321172555144900685605318635 4.8620911587547548751209841570885 -> 92.785230013800390025564621161547 Inexact Rounded
-addx3205 add -9717253267024.5380651435435603552 -2669.2539695193820424002013488480E+363 -> -2.6692539695193820424002013488480E+366 Inexact Rounded
-comx3205 compare -9717253267024.5380651435435603552 -2669.2539695193820424002013488480E+363 -> 1
-divx3205 divide -9717253267024.5380651435435603552 -2669.2539695193820424002013488480E+363 -> 3.6404378818903462695633337631098E-354 Inexact Rounded
-dvix3205 divideint -9717253267024.5380651435435603552 -2669.2539695193820424002013488480E+363 -> 0
-mulx3205 multiply -9717253267024.5380651435435603552 -2669.2539695193820424002013488480E+363 -> 2.5937816855830431899123217912144E+379 Inexact Rounded
-powx3205 power -9717253267024.5380651435435603552 -3 -> -1.0898567880085337780041328661330E-39 Inexact Rounded
-remx3205 remainder -9717253267024.5380651435435603552 -2669.2539695193820424002013488480E+363 -> -9717253267024.5380651435435603552
-subx3205 subtract -9717253267024.5380651435435603552 -2669.2539695193820424002013488480E+363 -> 2.6692539695193820424002013488480E+366 Inexact Rounded
-addx3206 add -4.0817391717190128506083001702335E-767 12772.807105920712660991033689206 -> 12772.807105920712660991033689206 Inexact Rounded
-comx3206 compare -4.0817391717190128506083001702335E-767 12772.807105920712660991033689206 -> -1
-divx3206 divide -4.0817391717190128506083001702335E-767 12772.807105920712660991033689206 -> -3.1956477052150593175206769891434E-771 Inexact Rounded
-dvix3206 divideint -4.0817391717190128506083001702335E-767 12772.807105920712660991033689206 -> -0
-mulx3206 multiply -4.0817391717190128506083001702335E-767 12772.807105920712660991033689206 -> -5.2135267097047531336100750110314E-763 Inexact Rounded
-powx3206 power -4.0817391717190128506083001702335E-767 12773 -> -0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3206 remainder -4.0817391717190128506083001702335E-767 12772.807105920712660991033689206 -> -4.0817391717190128506083001702335E-767
-subx3206 subtract -4.0817391717190128506083001702335E-767 12772.807105920712660991033689206 -> -12772.807105920712660991033689206 Inexact Rounded
-addx3207 add 68625322655934146845003028928647 -59.634169944840280159782488098700 -> 68625322655934146845003028928587 Inexact Rounded
-comx3207 compare 68625322655934146845003028928647 -59.634169944840280159782488098700 -> 1
-divx3207 divide 68625322655934146845003028928647 -59.634169944840280159782488098700 -> -1150771826276954946844322988192.5 Inexact Rounded
-dvix3207 divideint 68625322655934146845003028928647 -59.634169944840280159782488098700 -> -1150771826276954946844322988192
-mulx3207 multiply 68625322655934146845003028928647 -59.634169944840280159782488098700 -> -4.0924141537834748501140151997778E+33 Inexact Rounded
-powx3207 power 68625322655934146845003028928647 -60 -> 6.4704731111943370171711131942603E-1911 Inexact Rounded
-remx3207 remainder 68625322655934146845003028928647 -59.634169944840280159782488098700 -> 28.201254004897257552939369449600
-subx3207 subtract 68625322655934146845003028928647 -59.634169944840280159782488098700 -> 68625322655934146845003028928707 Inexact Rounded
-addx3208 add 732515.76532049290815665856727641 -92134479835821.319619827023729829 -> -92134479103305.554299334115573170 Inexact Rounded
-comx3208 compare 732515.76532049290815665856727641 -92134479835821.319619827023729829 -> 1
-divx3208 divide 732515.76532049290815665856727641 -92134479835821.319619827023729829 -> -7.9505063318943846655593887991914E-9 Inexact Rounded
-dvix3208 divideint 732515.76532049290815665856727641 -92134479835821.319619827023729829 -> -0
-mulx3208 multiply 732515.76532049290815665856727641 -92134479835821.319619827023729829 -> -67489959009342175728.710494356322 Inexact Rounded
-powx3208 power 732515.76532049290815665856727641 -9 -> 1.6468241050443471359358016585877E-53 Inexact Rounded
-remx3208 remainder 732515.76532049290815665856727641 -92134479835821.319619827023729829 -> 732515.76532049290815665856727641
-subx3208 subtract 732515.76532049290815665856727641 -92134479835821.319619827023729829 -> 92134480568337.084940319931886488 Inexact Rounded
-addx3209 add -30.458011942978338421676454778733 -5023372024597665102336430410403E+831 -> -5.0233720245976651023364304104030E+861 Inexact Rounded
-comx3209 compare -30.458011942978338421676454778733 -5023372024597665102336430410403E+831 -> 1
-divx3209 divide -30.458011942978338421676454778733 -5023372024597665102336430410403E+831 -> 6.0632602550311410821483001305010E-861 Inexact Rounded
-dvix3209 divideint -30.458011942978338421676454778733 -5023372024597665102336430410403E+831 -> 0
-mulx3209 multiply -30.458011942978338421676454778733 -5023372024597665102336430410403E+831 -> 1.5300192511921895929031818638961E+863 Inexact Rounded
-powx3209 power -30.458011942978338421676454778733 -5 -> -3.8149797481405136042487643253109E-8 Inexact Rounded
-remx3209 remainder -30.458011942978338421676454778733 -5023372024597665102336430410403E+831 -> -30.458011942978338421676454778733
-subx3209 subtract -30.458011942978338421676454778733 -5023372024597665102336430410403E+831 -> 5.0233720245976651023364304104030E+861 Inexact Rounded
-addx3210 add -89640.094149414644660480286430462 -58703419758.800889903227509215474 -> -58703509398.895039317872169695760 Inexact Rounded
-comx3210 compare -89640.094149414644660480286430462 -58703419758.800889903227509215474 -> 1
-divx3210 divide -89640.094149414644660480286430462 -58703419758.800889903227509215474 -> 0.0000015269995260536025237167199970238 Inexact Rounded
-dvix3210 divideint -89640.094149414644660480286430462 -58703419758.800889903227509215474 -> 0
-mulx3210 multiply -89640.094149414644660480286430462 -58703419758.800889903227509215474 -> 5262180074071519.7018252171579753 Inexact Rounded
-powx3210 power -89640.094149414644660480286430462 -6 -> 1.9274635591165405888724595165741E-30 Inexact Rounded
-remx3210 remainder -89640.094149414644660480286430462 -58703419758.800889903227509215474 -> -89640.094149414644660480286430462
-subx3210 subtract -89640.094149414644660480286430462 -58703419758.800889903227509215474 -> 58703330118.706740488582848735188 Inexact Rounded
-addx3211 add 458653.1567870081810052917714259 18353106238.516235116080449814053E-038 -> 458653.15678700818100529177142590 Inexact Rounded
-comx3211 compare 458653.1567870081810052917714259 18353106238.516235116080449814053E-038 -> 1
-divx3211 divide 458653.1567870081810052917714259 18353106238.516235116080449814053E-038 -> 2.4990492117594160215641311760498E+33 Inexact Rounded
-dvix3211 divideint 458653.1567870081810052917714259 18353106238.516235116080449814053E-038 -> NaN Division_impossible
-mulx3211 multiply 458653.1567870081810052917714259 18353106238.516235116080449814053E-038 -> 8.4177101131428047497998594379593E-23 Inexact Rounded
-powx3211 power 458653.1567870081810052917714259 2 -> 210362718230.68790865117452429990 Inexact Rounded
-remx3211 remainder 458653.1567870081810052917714259 18353106238.516235116080449814053E-038 -> NaN Division_impossible
-subx3211 subtract 458653.1567870081810052917714259 18353106238.516235116080449814053E-038 -> 458653.15678700818100529177142590 Inexact Rounded
-addx3212 add 913391.42744224458216174967853722 -21051638.816432817393202262710630E+432 -> -2.1051638816432817393202262710630E+439 Inexact Rounded
-comx3212 compare 913391.42744224458216174967853722 -21051638.816432817393202262710630E+432 -> 1
-divx3212 divide 913391.42744224458216174967853722 -21051638.816432817393202262710630E+432 -> -4.3388138824102151127273259092613E-434 Inexact Rounded
-dvix3212 divideint 913391.42744224458216174967853722 -21051638.816432817393202262710630E+432 -> -0
-mulx3212 multiply 913391.42744224458216174967853722 -21051638.816432817393202262710630E+432 -> -1.9228386428540135340600836707270E+445 Inexact Rounded
-powx3212 power 913391.42744224458216174967853722 -2 -> 1.1986327439971532470297300128074E-12 Inexact Rounded
-remx3212 remainder 913391.42744224458216174967853722 -21051638.816432817393202262710630E+432 -> 913391.42744224458216174967853722
-subx3212 subtract 913391.42744224458216174967853722 -21051638.816432817393202262710630E+432 -> 2.1051638816432817393202262710630E+439 Inexact Rounded
-addx3213 add -917591456829.12109027484399536567 -28892177726858026955513438843371E+708 -> -2.8892177726858026955513438843371E+739 Inexact Rounded
-comx3213 compare -917591456829.12109027484399536567 -28892177726858026955513438843371E+708 -> 1
-divx3213 divide -917591456829.12109027484399536567 -28892177726858026955513438843371E+708 -> 3.1759165595057674196644927106447E-728 Inexact Rounded
-dvix3213 divideint -917591456829.12109027484399536567 -28892177726858026955513438843371E+708 -> 0
-mulx3213 multiply -917591456829.12109027484399536567 -28892177726858026955513438843371E+708 -> 2.6511215451353541156703914721725E+751 Inexact Rounded
-powx3213 power -917591456829.12109027484399536567 -3 -> -1.2943505591853739240003453341911E-36 Inexact Rounded
-remx3213 remainder -917591456829.12109027484399536567 -28892177726858026955513438843371E+708 -> -917591456829.12109027484399536567
-subx3213 subtract -917591456829.12109027484399536567 -28892177726858026955513438843371E+708 -> 2.8892177726858026955513438843371E+739 Inexact Rounded
-addx3214 add 34938410840645.913399699219228218 30.818220393242402846077755480548 -> 34938410840676.731620092461631064 Inexact Rounded
-comx3214 compare 34938410840645.913399699219228218 30.818220393242402846077755480548 -> 1
-divx3214 divide 34938410840645.913399699219228218 30.818220393242402846077755480548 -> 1133693327999.7879503260098666966 Inexact Rounded
-dvix3214 divideint 34938410840645.913399699219228218 30.818220393242402846077755480548 -> 1133693327999
-mulx3214 multiply 34938410840645.913399699219228218 30.818220393242402846077755480548 -> 1076739645476675.3318519289128961 Inexact Rounded
-powx3214 power 34938410840645.913399699219228218 31 -> 6.9566085958798732786509909683267E+419 Inexact Rounded
-remx3214 remainder 34938410840645.913399699219228218 30.818220393242402846077755480548 -> 24.283226805899273551376371736548
-subx3214 subtract 34938410840645.913399699219228218 30.818220393242402846077755480548 -> 34938410840615.095179305976825372 Inexact Rounded
-addx3215 add 6034.7374411022598081745006769023E-517 29771833428054709077850588904653 -> 29771833428054709077850588904653 Inexact Rounded
-comx3215 compare 6034.7374411022598081745006769023E-517 29771833428054709077850588904653 -> -1
-divx3215 divide 6034.7374411022598081745006769023E-517 29771833428054709077850588904653 -> 2.0269955680376683526099444523691E-545 Inexact Rounded
-dvix3215 divideint 6034.7374411022598081745006769023E-517 29771833428054709077850588904653 -> 0
-mulx3215 multiply 6034.7374411022598081745006769023E-517 29771833428054709077850588904653 -> 1.7966519787854159464382359411642E-482 Inexact Rounded
-powx3215 power 6034.7374411022598081745006769023E-517 3 -> 2.1977340597301840681528507640032E-1540 Inexact Rounded
-remx3215 remainder 6034.7374411022598081745006769023E-517 29771833428054709077850588904653 -> 6.0347374411022598081745006769023E-514
-subx3215 subtract 6034.7374411022598081745006769023E-517 29771833428054709077850588904653 -> -29771833428054709077850588904653 Inexact Rounded
-addx3216 add -5565747671734.1686009705574503152 -490.30899494881071282787487030303 -> -5565747672224.4775959193681631431 Inexact Rounded
-comx3216 compare -5565747671734.1686009705574503152 -490.30899494881071282787487030303 -> -1
-divx3216 divide -5565747671734.1686009705574503152 -490.30899494881071282787487030303 -> 11351510433.365074871574519756245 Inexact Rounded
-dvix3216 divideint -5565747671734.1686009705574503152 -490.30899494881071282787487030303 -> 11351510433
-mulx3216 multiply -5565747671734.1686009705574503152 -490.30899494881071282787487030303 -> 2728936147066663.4580064428639745 Inexact Rounded
-powx3216 power -5565747671734.1686009705574503152 -490 -> 4.9371745297619526113991728953197E-6246 Inexact Rounded
-remx3216 remainder -5565747671734.1686009705574503152 -490.30899494881071282787487030303 -> -178.99949336276892685183308348801
-subx3216 subtract -5565747671734.1686009705574503152 -490.30899494881071282787487030303 -> -5565747671243.8596060217467374873 Inexact Rounded
-addx3217 add 319545511.89203495546689273564728E+036 -2955943533943321899150310192061 -> 3.1954551189203199952335879232538E+44 Inexact Rounded
-comx3217 compare 319545511.89203495546689273564728E+036 -2955943533943321899150310192061 -> 1
-divx3217 divide 319545511.89203495546689273564728E+036 -2955943533943321899150310192061 -> -108102711781422.68663084859902931 Inexact Rounded
-dvix3217 divideint 319545511.89203495546689273564728E+036 -2955943533943321899150310192061 -> -108102711781422
-mulx3217 multiply 319545511.89203495546689273564728E+036 -2955943533943321899150310192061 -> -9.4455848967786959996525702197139E+74 Inexact Rounded
-powx3217 power 319545511.89203495546689273564728E+036 -3 -> 3.0647978448946294457985223953472E-134 Inexact Rounded
-remx3217 remainder 319545511.89203495546689273564728E+036 -2955943533943321899150310192061 -> 2029642017122316721531728309258
-subx3217 subtract 319545511.89203495546689273564728E+036 -2955943533943321899150310192061 -> 3.1954551189203791141042667896918E+44 Inexact Rounded
-addx3218 add -36852134.84194296250843579428931 -5830629.8347085025808716360357940 -> -42682764.676651465089307430325104 Rounded
-comx3218 compare -36852134.84194296250843579428931 -5830629.8347085025808716360357940 -> -1
-divx3218 divide -36852134.84194296250843579428931 -5830629.8347085025808716360357940 -> 6.3204380807318655475459047410160 Inexact Rounded
-dvix3218 divideint -36852134.84194296250843579428931 -5830629.8347085025808716360357940 -> 6
-mulx3218 multiply -36852134.84194296250843579428931 -5830629.8347085025808716360357940 -> 214871156882133.34437417534873098 Inexact Rounded
-powx3218 power -36852134.84194296250843579428931 -5830630 -> 0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3218 remainder -36852134.84194296250843579428931 -5830629.8347085025808716360357940 -> -1868355.8336919470232059780745460
-subx3218 subtract -36852134.84194296250843579428931 -5830629.8347085025808716360357940 -> -31021505.007234459927564158253516 Rounded
-addx3219 add 8.6021905001798578659275880018221E-374 -39505285344943.729681835377530908 -> -39505285344943.729681835377530908 Inexact Rounded
-comx3219 compare 8.6021905001798578659275880018221E-374 -39505285344943.729681835377530908 -> 1
-divx3219 divide 8.6021905001798578659275880018221E-374 -39505285344943.729681835377530908 -> -2.1774783867700502002511486885272E-387 Inexact Rounded
-dvix3219 divideint 8.6021905001798578659275880018221E-374 -39505285344943.729681835377530908 -> -0
-mulx3219 multiply 8.6021905001798578659275880018221E-374 -39505285344943.729681835377530908 -> -3.3983199030116951081865430362053E-360 Inexact Rounded
-powx3219 power 8.6021905001798578659275880018221E-374 -4 -> 1.8262649155820433126240754123257E+1492 Inexact Rounded
-remx3219 remainder 8.6021905001798578659275880018221E-374 -39505285344943.729681835377530908 -> 8.6021905001798578659275880018221E-374
-subx3219 subtract 8.6021905001798578659275880018221E-374 -39505285344943.729681835377530908 -> 39505285344943.729681835377530908 Inexact Rounded
-addx3220 add -54863165.152174109720312887805017 736.1398476560169141105328256628 -> -54862429.012326453703398777272191 Inexact Rounded
-comx3220 compare -54863165.152174109720312887805017 736.1398476560169141105328256628 -> -1
-divx3220 divide -54863165.152174109720312887805017 736.1398476560169141105328256628 -> -74528.182826764384088602813142847 Inexact Rounded
-dvix3220 divideint -54863165.152174109720312887805017 736.1398476560169141105328256628 -> -74528
-mulx3220 multiply -54863165.152174109720312887805017 736.1398476560169141105328256628 -> -40386962037.048345148338122539405 Inexact Rounded
-powx3220 power -54863165.152174109720312887805017 736 -> 1.2903643981679111625370174573639E+5696 Inexact Rounded
-remx3220 remainder -54863165.152174109720312887805017 736.1398476560169141105328256628 -> -134.5860664811454830973740198416
-subx3220 subtract -54863165.152174109720312887805017 736.1398476560169141105328256628 -> -54863901.292021765737226998337843 Inexact Rounded
-addx3221 add -3263743464517851012531708810307 2457206.2471248382136273643208109 -> -3263743464517851012531706353100.8 Inexact Rounded
-comx3221 compare -3263743464517851012531708810307 2457206.2471248382136273643208109 -> -1
-divx3221 divide -3263743464517851012531708810307 2457206.2471248382136273643208109 -> -1328233422952076975055082.5768082 Inexact Rounded
-dvix3221 divideint -3263743464517851012531708810307 2457206.2471248382136273643208109 -> -1328233422952076975055082
-mulx3221 multiply -3263743464517851012531708810307 2457206.2471248382136273643208109 -> -8.0196908300261262548565838031943E+36 Inexact Rounded
-powx3221 power -3263743464517851012531708810307 2457206 -> Infinity Overflow Inexact Rounded
-remx3221 remainder -3263743464517851012531708810307 2457206.2471248382136273643208109 -> -1417336.7573398366062994535940062
-subx3221 subtract -3263743464517851012531708810307 2457206.2471248382136273643208109 -> -3263743464517851012531711267513.2 Inexact Rounded
-addx3222 add 2856586744.0548637797291151154902E-895 953545637646.57694835860339582821E+080 -> 9.5354563764657694835860339582821E+91 Inexact Rounded
-comx3222 compare 2856586744.0548637797291151154902E-895 953545637646.57694835860339582821E+080 -> -1
-divx3222 divide 2856586744.0548637797291151154902E-895 953545637646.57694835860339582821E+080 -> 2.9957525170007980008712828968300E-978 Inexact Rounded
-dvix3222 divideint 2856586744.0548637797291151154902E-895 953545637646.57694835860339582821E+080 -> 0
-mulx3222 multiply 2856586744.0548637797291151154902E-895 953545637646.57694835860339582821E+080 -> 2.7238858283525541854826594343954E-794 Inexact Rounded
-powx3222 power 2856586744.0548637797291151154902E-895 10 -> 3.6180466753307072256807593988336E-8856 Inexact Rounded
-remx3222 remainder 2856586744.0548637797291151154902E-895 953545637646.57694835860339582821E+080 -> 2.8565867440548637797291151154902E-886
-subx3222 subtract 2856586744.0548637797291151154902E-895 953545637646.57694835860339582821E+080 -> -9.5354563764657694835860339582821E+91 Inexact Rounded
-addx3223 add 5624157233.3433661009203529937625 626098409265.93738586750090160638 -> 631722566499.28075196842125460014 Inexact Rounded
-comx3223 compare 5624157233.3433661009203529937625 626098409265.93738586750090160638 -> -1
-divx3223 divide 5624157233.3433661009203529937625 626098409265.93738586750090160638 -> 0.0089828645946207580492752544218316 Inexact Rounded
-dvix3223 divideint 5624157233.3433661009203529937625 626098409265.93738586750090160638 -> 0
-mulx3223 multiply 5624157233.3433661009203529937625 626098409265.93738586750090160638 -> 3521275897257796938833.8975037909 Inexact Rounded
-powx3223 power 5624157233.3433661009203529937625 6 -> 3.1647887196303262540158328459030E+58 Inexact Rounded
-remx3223 remainder 5624157233.3433661009203529937625 626098409265.93738586750090160638 -> 5624157233.3433661009203529937625
-subx3223 subtract 5624157233.3433661009203529937625 626098409265.93738586750090160638 -> -620474252032.59401976658054861262 Inexact Rounded
-addx3224 add -213499362.91476998701834067092611 419272438.02555757699863022643444 -> 205773075.11078758998028955550833
-comx3224 compare -213499362.91476998701834067092611 419272438.02555757699863022643444 -> -1
-divx3224 divide -213499362.91476998701834067092611 419272438.02555757699863022643444 -> -0.50921392286166855779828061147786 Inexact Rounded
-dvix3224 divideint -213499362.91476998701834067092611 419272438.02555757699863022643444 -> -0
-mulx3224 multiply -213499362.91476998701834067092611 419272438.02555757699863022643444 -> -89514398406178925.073260776410672 Inexact Rounded
-powx3224 power -213499362.91476998701834067092611 419272438 -> Infinity Overflow Inexact Rounded
-remx3224 remainder -213499362.91476998701834067092611 419272438.02555757699863022643444 -> -213499362.91476998701834067092611
-subx3224 subtract -213499362.91476998701834067092611 419272438.02555757699863022643444 -> -632771800.94032756401697089736055
-addx3225 add 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 30274.392356614101238316845401518 Inexact Rounded
-comx3225 compare 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1
-divx3225 divide 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 6300.1252178837655359831527173832 Inexact Rounded
-dvix3225 divideint 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 6300
-mulx3225 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651199283 Inexact Rounded
-powx3225 power 30269.587755640502150977251770554 5 -> 25411630481547464128383.220368208 Inexact Rounded
-remx3225 remainder 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 0.6016219662519115373766970119100
-subx3225 subtract 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 30264.783154666903063637658139590 Inexact Rounded
-addx3226 add 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> 4.7525676459351505682005359699680E+705 Inexact Rounded
-comx3226 compare 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> 1
-divx3226 divide 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> -8.1057651538555854520994438038537E+673 Inexact Rounded
-dvix3226 divideint 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> NaN Division_impossible
-mulx3226 multiply 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> -2.7865227773649353769876975366506E+737 Inexact Rounded
-powx3226 power 47.525676459351505682005359699680E+704 -6 -> 8.6782100393941226535150385475464E-4235 Inexact Rounded
-remx3226 remainder 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> NaN Division_impossible
-subx3226 subtract 47.525676459351505682005359699680E+704 -58631943508436657383369760970210 -> 4.7525676459351505682005359699680E+705 Inexact Rounded
-addx3227 add -74396862273800.625679130772935550 -115616605.52826981284183992013157 -> -74396977890406.153948943614775470 Inexact Rounded
-comx3227 compare -74396862273800.625679130772935550 -115616605.52826981284183992013157 -> -1
-divx3227 divide -74396862273800.625679130772935550 -115616605.52826981284183992013157 -> 643479.03948459716424778005613112 Inexact Rounded
-dvix3227 divideint -74396862273800.625679130772935550 -115616605.52826981284183992013157 -> 643479
-mulx3227 multiply -74396862273800.625679130772935550 -115616605.52826981284183992013157 -> 8601512678051025297297.7169654467 Inexact Rounded
-powx3227 power -74396862273800.625679130772935550 -115616606 -> 0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3227 remainder -74396862273800.625679130772935550 -115616605.52826981284183992013157 -> -4565075.09478147646296920746797
-subx3227 subtract -74396862273800.625679130772935550 -115616605.52826981284183992013157 -> -74396746657195.097409317931095630 Inexact Rounded
-addx3228 add 67585560.562561229497720955705979 826.96290288608566737177503451613 -> 67586387.525464115583388327481014 Inexact Rounded
-comx3228 compare 67585560.562561229497720955705979 826.96290288608566737177503451613 -> 1
-divx3228 divide 67585560.562561229497720955705979 826.96290288608566737177503451613 -> 81727.439437354248789852715586510 Inexact Rounded
-dvix3228 divideint 67585560.562561229497720955705979 826.96290288608566737177503451613 -> 81727
-mulx3228 multiply 67585560.562561229497720955705979 826.96290288608566737177503451613 -> 55890751355.998983433895910295596 Inexact Rounded
-powx3228 power 67585560.562561229497720955705979 827 -> 1.9462204583352191108781197788255E+6475 Inexact Rounded
-remx3228 remainder 67585560.562561229497720955705979 826.96290288608566737177503451613 -> 363.39839010616042789746007924349
-subx3228 subtract 67585560.562561229497720955705979 826.96290288608566737177503451613 -> 67584733.599658343412053583930944 Inexact Rounded
-addx3229 add 6877386868.9498051860742298735156E-232 390.3154289860643509393769754551 -> 390.31542898606435093937697545510 Inexact Rounded
-comx3229 compare 6877386868.9498051860742298735156E-232 390.3154289860643509393769754551 -> -1
-divx3229 divide 6877386868.9498051860742298735156E-232 390.3154289860643509393769754551 -> 1.7620074325054038174571564409871E-225 Inexact Rounded
-dvix3229 divideint 6877386868.9498051860742298735156E-232 390.3154289860643509393769754551 -> 0
-mulx3229 multiply 6877386868.9498051860742298735156E-232 390.3154289860643509393769754551 -> 2.6843502060572691408091663822732E-220 Inexact Rounded
-powx3229 power 6877386868.9498051860742298735156E-232 390 -> 0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3229 remainder 6877386868.9498051860742298735156E-232 390.3154289860643509393769754551 -> 6.8773868689498051860742298735156E-223
-subx3229 subtract 6877386868.9498051860742298735156E-232 390.3154289860643509393769754551 -> -390.31542898606435093937697545510 Inexact Rounded
-addx3230 add -1647335.201144609256134925838937 -186654823782.50459802235024230856 -> -186656471117.70574263160637723440 Inexact Rounded
-comx3230 compare -1647335.201144609256134925838937 -186654823782.50459802235024230856 -> 1
-divx3230 divide -1647335.201144609256134925838937 -186654823782.50459802235024230856 -> 0.0000088255699357876233458660331146583 Inexact Rounded
-dvix3230 divideint -1647335.201144609256134925838937 -186654823782.50459802235024230856 -> 0
-mulx3230 multiply -1647335.201144609256134925838937 -186654823782.50459802235024230856 -> 307483061680363807.48775619333285 Inexact Rounded
-powx3230 power -1647335.201144609256134925838937 -2 -> 3.6849876990439502152784389237891E-13 Inexact Rounded
-remx3230 remainder -1647335.201144609256134925838937 -186654823782.50459802235024230856 -> -1647335.201144609256134925838937
-subx3230 subtract -1647335.201144609256134925838937 -186654823782.50459802235024230856 -> 186653176447.30345341309410738272 Inexact Rounded
-addx3231 add 41407818140948.866630923934138155 -5156.7624534000311342310106671627E-963 -> 41407818140948.866630923934138155 Inexact Rounded
-comx3231 compare 41407818140948.866630923934138155 -5156.7624534000311342310106671627E-963 -> 1
-divx3231 divide 41407818140948.866630923934138155 -5156.7624534000311342310106671627E-963 -> -8.0298091128179204076796507697517E+972 Inexact Rounded
-dvix3231 divideint 41407818140948.866630923934138155 -5156.7624534000311342310106671627E-963 -> NaN Division_impossible
-mulx3231 multiply 41407818140948.866630923934138155 -5156.7624534000311342310106671627E-963 -> -2.1353028186646179369220834691156E-946 Inexact Rounded
-powx3231 power 41407818140948.866630923934138155 -5 -> 8.2146348556648547525693528004081E-69 Inexact Rounded
-remx3231 remainder 41407818140948.866630923934138155 -5156.7624534000311342310106671627E-963 -> NaN Division_impossible
-subx3231 subtract 41407818140948.866630923934138155 -5156.7624534000311342310106671627E-963 -> 41407818140948.866630923934138155 Inexact Rounded
-addx3232 add -6.6547424012516834662011706165297 -574454585580.06215974139884746441 -> -574454585586.71690214265053093061 Inexact Rounded
-comx3232 compare -6.6547424012516834662011706165297 -574454585580.06215974139884746441 -> 1
-divx3232 divide -6.6547424012516834662011706165297 -574454585580.06215974139884746441 -> 1.1584453442097568745411568037078E-11 Inexact Rounded
-dvix3232 divideint -6.6547424012516834662011706165297 -574454585580.06215974139884746441 -> 0
-mulx3232 multiply -6.6547424012516834662011706165297 -574454585580.06215974139884746441 -> 3822847288253.1035559206691532826 Inexact Rounded
-powx3232 power -6.6547424012516834662011706165297 -6 -> 0.000011513636283388791488128239232906 Inexact Rounded
-remx3232 remainder -6.6547424012516834662011706165297 -574454585580.06215974139884746441 -> -6.6547424012516834662011706165297
-subx3232 subtract -6.6547424012516834662011706165297 -574454585580.06215974139884746441 -> 574454585573.40741734014716399821 Inexact Rounded
-addx3233 add -27627.758745381267780885067447671 -23385972189441.709586433758111062 -> -23385972217069.468331815025891947 Inexact Rounded
-comx3233 compare -27627.758745381267780885067447671 -23385972189441.709586433758111062 -> 1
-divx3233 divide -27627.758745381267780885067447671 -23385972189441.709586433758111062 -> 1.1813816642548920194709898111624E-9 Inexact Rounded
-dvix3233 divideint -27627.758745381267780885067447671 -23385972189441.709586433758111062 -> 0
-mulx3233 multiply -27627.758745381267780885067447671 -23385972189441.709586433758111062 -> 646101997676091306.41485393678655 Inexact Rounded
-powx3233 power -27627.758745381267780885067447671 -2 -> 1.3101128009560812529198521922269E-9 Inexact Rounded
-remx3233 remainder -27627.758745381267780885067447671 -23385972189441.709586433758111062 -> -27627.758745381267780885067447671
-subx3233 subtract -27627.758745381267780885067447671 -23385972189441.709586433758111062 -> 23385972161813.950841052490330177 Inexact Rounded
-addx3234 add 209819.74379099914752963711944307E-228 -440230.6700989532467831370320266E-960 -> 2.0981974379099914752963711944307E-223 Inexact Rounded
-comx3234 compare 209819.74379099914752963711944307E-228 -440230.6700989532467831370320266E-960 -> 1
-divx3234 divide 209819.74379099914752963711944307E-228 -440230.6700989532467831370320266E-960 -> -4.7661318949867060595545765053187E+731 Inexact Rounded
-dvix3234 divideint 209819.74379099914752963711944307E-228 -440230.6700989532467831370320266E-960 -> NaN Division_impossible
-mulx3234 multiply 209819.74379099914752963711944307E-228 -440230.6700989532467831370320266E-960 -> -9.2369086409102239573726316593648E-1178 Inexact Rounded
-powx3234 power 209819.74379099914752963711944307E-228 -4 -> 5.1595828494111690910650919776705E+890 Inexact Rounded
-remx3234 remainder 209819.74379099914752963711944307E-228 -440230.6700989532467831370320266E-960 -> NaN Division_impossible
-subx3234 subtract 209819.74379099914752963711944307E-228 -440230.6700989532467831370320266E-960 -> 2.0981974379099914752963711944307E-223 Inexact Rounded
-addx3235 add 2.3488457600415474270259330865184 9182434.6660212482500376220508605E-612 -> 2.3488457600415474270259330865184 Inexact Rounded
-comx3235 compare 2.3488457600415474270259330865184 9182434.6660212482500376220508605E-612 -> 1
-divx3235 divide 2.3488457600415474270259330865184 9182434.6660212482500376220508605E-612 -> 2.5579771002708402753412266574941E+605 Inexact Rounded
-dvix3235 divideint 2.3488457600415474270259330865184 9182434.6660212482500376220508605E-612 -> NaN Division_impossible
-mulx3235 multiply 2.3488457600415474270259330865184 9182434.6660212482500376220508605E-612 -> 2.1568122732142531556215204459407E-605 Inexact Rounded
-powx3235 power 2.3488457600415474270259330865184 9 -> 2176.1583446147511579113022622255 Inexact Rounded
-remx3235 remainder 2.3488457600415474270259330865184 9182434.6660212482500376220508605E-612 -> NaN Division_impossible
-subx3235 subtract 2.3488457600415474270259330865184 9182434.6660212482500376220508605E-612 -> 2.3488457600415474270259330865184 Inexact Rounded
-addx3236 add -5107586300197.9703941034404557409 56609.05486055057838678039496686E-768 -> -5107586300197.9703941034404557409 Inexact Rounded
-comx3236 compare -5107586300197.9703941034404557409 56609.05486055057838678039496686E-768 -> -1
-divx3236 divide -5107586300197.9703941034404557409 56609.05486055057838678039496686E-768 -> -9.0225606358909877855326357402242E+775 Inexact Rounded
-dvix3236 divideint -5107586300197.9703941034404557409 56609.05486055057838678039496686E-768 -> NaN Division_impossible
-mulx3236 multiply -5107586300197.9703941034404557409 56609.05486055057838678039496686E-768 -> -2.8913563307290346152596212593532E-751 Inexact Rounded
-powx3236 power -5107586300197.9703941034404557409 6 -> 1.7753920894188022125919559565029E+76 Inexact Rounded
-remx3236 remainder -5107586300197.9703941034404557409 56609.05486055057838678039496686E-768 -> NaN Division_impossible
-subx3236 subtract -5107586300197.9703941034404557409 56609.05486055057838678039496686E-768 -> -5107586300197.9703941034404557409 Inexact Rounded
-addx3237 add -70454070095869.70717871212601390 -6200178.370249260009168888392406 -> -70454076296048.077427972135182788 Inexact Rounded
-comx3237 compare -70454070095869.70717871212601390 -6200178.370249260009168888392406 -> -1
-divx3237 divide -70454070095869.70717871212601390 -6200178.370249260009168888392406 -> 11363232.779549422490548997517194 Inexact Rounded
-dvix3237 divideint -70454070095869.70717871212601390 -6200178.370249260009168888392406 -> 11363232
-mulx3237 multiply -70454070095869.70717871212601390 -6200178.370249260009168888392406 -> 436827801504436566945.76663687924 Inexact Rounded
-powx3237 power -70454070095869.70717871212601390 -6200178 -> 0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3237 remainder -70454070095869.70717871212601390 -6200178.370249260009168888392406 -> -4833345.467866203920028883583808
-subx3237 subtract -70454070095869.70717871212601390 -6200178.370249260009168888392406 -> -70454063895691.336929452116845012 Inexact Rounded
-addx3238 add 29119.220621511046558757900645228 3517612.8810761470018676311863010E-222 -> 29119.220621511046558757900645228 Inexact Rounded
-comx3238 compare 29119.220621511046558757900645228 3517612.8810761470018676311863010E-222 -> 1
-divx3238 divide 29119.220621511046558757900645228 3517612.8810761470018676311863010E-222 -> 8.2781197380089684063239752337467E+219 Inexact Rounded
-dvix3238 divideint 29119.220621511046558757900645228 3517612.8810761470018676311863010E-222 -> NaN Division_impossible
-mulx3238 multiply 29119.220621511046558757900645228 3517612.8810761470018676311863010E-222 -> 1.0243014554512542440592768088600E-211 Inexact Rounded
-powx3238 power 29119.220621511046558757900645228 4 -> 718983605328417461.32835984217255 Inexact Rounded
-remx3238 remainder 29119.220621511046558757900645228 3517612.8810761470018676311863010E-222 -> NaN Division_impossible
-subx3238 subtract 29119.220621511046558757900645228 3517612.8810761470018676311863010E-222 -> 29119.220621511046558757900645228 Inexact Rounded
-addx3239 add -5168.2214111091132913776042214525 -5690274.0971173476527123568627720 -> -5695442.3185284567660037344669935 Inexact Rounded
-comx3239 compare -5168.2214111091132913776042214525 -5690274.0971173476527123568627720 -> 1
-divx3239 divide -5168.2214111091132913776042214525 -5690274.0971173476527123568627720 -> 0.00090825526554639915580539316714451 Inexact Rounded
-dvix3239 divideint -5168.2214111091132913776042214525 -5690274.0971173476527123568627720 -> 0
-mulx3239 multiply -5168.2214111091132913776042214525 -5690274.0971173476527123568627720 -> 29408596423.801454053855793898323 Inexact Rounded
-powx3239 power -5168.2214111091132913776042214525 -5690274 -> 0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3239 remainder -5168.2214111091132913776042214525 -5690274.0971173476527123568627720 -> -5168.2214111091132913776042214525
-subx3239 subtract -5168.2214111091132913776042214525 -5690274.0971173476527123568627720 -> 5685105.8757062385394209792585505 Inexact Rounded
-addx3240 add 33783.060857197067391462144517964 -2070.0806959465088198508322815406 -> 31712.980161250558571611312236423 Inexact Rounded
-comx3240 compare 33783.060857197067391462144517964 -2070.0806959465088198508322815406 -> 1
-divx3240 divide 33783.060857197067391462144517964 -2070.0806959465088198508322815406 -> -16.319683055519892881394358449220 Inexact Rounded
-dvix3240 divideint 33783.060857197067391462144517964 -2070.0806959465088198508322815406 -> -16
-mulx3240 multiply 33783.060857197067391462144517964 -2070.0806959465088198508322815406 -> -69933662.130469766080574235843448 Inexact Rounded
-powx3240 power 33783.060857197067391462144517964 -2070 -> 3.9181336001803008597293818984406E-9375 Inexact Rounded
-remx3240 remainder 33783.060857197067391462144517964 -2070.0806959465088198508322815406 -> 661.7697220529262738488280133144
-subx3240 subtract 33783.060857197067391462144517964 -2070.0806959465088198508322815406 -> 35853.141553143576211312976799505 Inexact Rounded
-addx3241 add 42207435091050.840296353874733169E-905 73330633078.828216018536326743325E+976 -> 7.3330633078828216018536326743325E+986 Inexact Rounded
-comx3241 compare 42207435091050.840296353874733169E-905 73330633078.828216018536326743325E+976 -> -1
-divx3241 divide 42207435091050.840296353874733169E-905 73330633078.828216018536326743325E+976 -> 5.7557712676064206636178247554056E-1879 Inexact Rounded
-dvix3241 divideint 42207435091050.840296353874733169E-905 73330633078.828216018536326743325E+976 -> 0
-mulx3241 multiply 42207435091050.840296353874733169E-905 73330633078.828216018536326743325E+976 -> 3.0950979358603075650592433398939E+95 Inexact Rounded
-powx3241 power 42207435091050.840296353874733169E-905 7 -> 2.3862872940615283599573082966642E-6240 Inexact Rounded
-remx3241 remainder 42207435091050.840296353874733169E-905 73330633078.828216018536326743325E+976 -> 4.2207435091050840296353874733169E-892
-subx3241 subtract 42207435091050.840296353874733169E-905 73330633078.828216018536326743325E+976 -> -7.3330633078828216018536326743325E+986 Inexact Rounded
-addx3242 add -71800.806700868784841045406679641 -39617456964250697902519150526701 -> -39617456964250697902519150598502 Inexact Rounded
-comx3242 compare -71800.806700868784841045406679641 -39617456964250697902519150526701 -> 1
-divx3242 divide -71800.806700868784841045406679641 -39617456964250697902519150526701 -> 1.8123527405017220178579049964126E-27 Inexact Rounded
-dvix3242 divideint -71800.806700868784841045406679641 -39617456964250697902519150526701 -> 0
-mulx3242 multiply -71800.806700868784841045406679641 -39617456964250697902519150526701 -> 2.8445653694701522164901827524538E+36 Inexact Rounded
-powx3242 power -71800.806700868784841045406679641 -4 -> 3.7625536850895480882178599428774E-20 Inexact Rounded
-remx3242 remainder -71800.806700868784841045406679641 -39617456964250697902519150526701 -> -71800.806700868784841045406679641
-subx3242 subtract -71800.806700868784841045406679641 -39617456964250697902519150526701 -> 39617456964250697902519150454900 Inexact Rounded
-addx3243 add 53627480801.631504892310016062160 328259.56947661049313311983109503 -> 53627809061.200981502803149181991 Inexact Rounded
-comx3243 compare 53627480801.631504892310016062160 328259.56947661049313311983109503 -> 1
-divx3243 divide 53627480801.631504892310016062160 328259.56947661049313311983109503 -> 163369.13159039717901500465109839 Inexact Rounded
-dvix3243 divideint 53627480801.631504892310016062160 328259.56947661049313311983109503 -> 163369
-mulx3243 multiply 53627480801.631504892310016062160 328259.56947661049313311983109503 -> 17603733760058752.363123585224369 Inexact Rounded
-powx3243 power 53627480801.631504892310016062160 328260 -> Infinity Overflow Inexact Rounded
-remx3243 remainder 53627480801.631504892310016062160 328259.56947661049313311983109503 -> 43195.80712523964536237599604393
-subx3243 subtract 53627480801.631504892310016062160 328259.56947661049313311983109503 -> 53627152542.062028281816882942329 Inexact Rounded
-addx3244 add -5052601598.5559371338428368438728 -97855372.224321664785314782556064 -> -5150456970.7802587986281516264289 Inexact Rounded
-comx3244 compare -5052601598.5559371338428368438728 -97855372.224321664785314782556064 -> -1
-divx3244 divide -5052601598.5559371338428368438728 -97855372.224321664785314782556064 -> 51.633359351732432283879274192947 Inexact Rounded
-dvix3244 divideint -5052601598.5559371338428368438728 -97855372.224321664785314782556064 -> 51
-mulx3244 multiply -5052601598.5559371338428368438728 -97855372.224321664785314782556064 -> 494424210127893893.12581512954787 Inexact Rounded
-powx3244 power -5052601598.5559371338428368438728 -97855372 -> 0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3244 remainder -5052601598.5559371338428368438728 -97855372.224321664785314782556064 -> -61977615.115532229791782933513536
-subx3244 subtract -5052601598.5559371338428368438728 -97855372.224321664785314782556064 -> -4954746226.3316154690575220613167 Inexact Rounded
-addx3245 add 4208134320733.7069742988228068191E+146 4270869.1760149477598920960628392E+471 -> 4.2708691760149477598920960628392E+477 Inexact Rounded
-comx3245 compare 4208134320733.7069742988228068191E+146 4270869.1760149477598920960628392E+471 -> -1
-divx3245 divide 4208134320733.7069742988228068191E+146 4270869.1760149477598920960628392E+471 -> 9.8531098643021951048744078027283E-320 Inexact Rounded
-dvix3245 divideint 4208134320733.7069742988228068191E+146 4270869.1760149477598920960628392E+471 -> 0
-mulx3245 multiply 4208134320733.7069742988228068191E+146 4270869.1760149477598920960628392E+471 -> 1.7972391158952189002169082753183E+636 Inexact Rounded
-powx3245 power 4208134320733.7069742988228068191E+146 4 -> 3.1358723439830872127129821963857E+634 Inexact Rounded
-remx3245 remainder 4208134320733.7069742988228068191E+146 4270869.1760149477598920960628392E+471 -> 4.2081343207337069742988228068191E+158
-subx3245 subtract 4208134320733.7069742988228068191E+146 4270869.1760149477598920960628392E+471 -> -4.2708691760149477598920960628392E+477 Inexact Rounded
-addx3246 add -8.5077009657942581515590471189084E+308 9652145155.374217047842114042376E-250 -> -8.5077009657942581515590471189084E+308 Inexact Rounded
-comx3246 compare -8.5077009657942581515590471189084E+308 9652145155.374217047842114042376E-250 -> -1
-divx3246 divide -8.5077009657942581515590471189084E+308 9652145155.374217047842114042376E-250 -> -8.8143110457236089978070419047970E+548 Inexact Rounded
-dvix3246 divideint -8.5077009657942581515590471189084E+308 9652145155.374217047842114042376E-250 -> NaN Division_impossible
-mulx3246 multiply -8.5077009657942581515590471189084E+308 9652145155.374217047842114042376E-250 -> -8.2117564660363596283732942091852E+68 Inexact Rounded
-powx3246 power -8.5077009657942581515590471189084E+308 10 -> 1.9866536812573207868350640760678E+3089 Inexact Rounded
-remx3246 remainder -8.5077009657942581515590471189084E+308 9652145155.374217047842114042376E-250 -> NaN Division_impossible
-subx3246 subtract -8.5077009657942581515590471189084E+308 9652145155.374217047842114042376E-250 -> -8.5077009657942581515590471189084E+308 Inexact Rounded
-addx3247 add -9504.9703032286960790904181078063E+619 -86.245956949049186533469206485003 -> -9.5049703032286960790904181078063E+622 Inexact Rounded
-comx3247 compare -9504.9703032286960790904181078063E+619 -86.245956949049186533469206485003 -> -1
-divx3247 divide -9504.9703032286960790904181078063E+619 -86.245956949049186533469206485003 -> 1.1020772033225707125391212519421E+621 Inexact Rounded
-dvix3247 divideint -9504.9703032286960790904181078063E+619 -86.245956949049186533469206485003 -> NaN Division_impossible
-mulx3247 multiply -9504.9703032286960790904181078063E+619 -86.245956949049186533469206485003 -> 8.1976525957425311427858087117655E+624 Inexact Rounded
-powx3247 power -9504.9703032286960790904181078063E+619 -86 -> 0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3247 remainder -9504.9703032286960790904181078063E+619 -86.245956949049186533469206485003 -> NaN Division_impossible
-subx3247 subtract -9504.9703032286960790904181078063E+619 -86.245956949049186533469206485003 -> -9.5049703032286960790904181078063E+622 Inexact Rounded
-addx3248 add -440220916.66716743026896931194749 -102725.01594377871560564824358775 -> -440323641.68311120898457496019108 Inexact Rounded
-comx3248 compare -440220916.66716743026896931194749 -102725.01594377871560564824358775 -> -1
-divx3248 divide -440220916.66716743026896931194749 -102725.01594377871560564824358775 -> 4285.4305022264473269770246126234 Inexact Rounded
-dvix3248 divideint -440220916.66716743026896931194749 -102725.01594377871560564824358775 -> 4285
-mulx3248 multiply -440220916.66716743026896931194749 -102725.01594377871560564824358775 -> 45221700683419.655596771711603505 Inexact Rounded
-powx3248 power -440220916.66716743026896931194749 -102725 -> -0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3248 remainder -440220916.66716743026896931194749 -102725.01594377871560564824358775 -> -44223.34807563389876658817398125
-subx3248 subtract -440220916.66716743026896931194749 -102725.01594377871560564824358775 -> -440118191.65122365155336366370390 Inexact Rounded
-addx3249 add -46.250735086006350517943464758019 14656357555174.263295266074908024 -> 14656357555128.012560180068557506 Inexact Rounded
-comx3249 compare -46.250735086006350517943464758019 14656357555174.263295266074908024 -> -1
-divx3249 divide -46.250735086006350517943464758019 14656357555174.263295266074908024 -> -3.1556773169523313932207725522866E-12 Inexact Rounded
-dvix3249 divideint -46.250735086006350517943464758019 14656357555174.263295266074908024 -> -0
-mulx3249 multiply -46.250735086006350517943464758019 14656357555174.263295266074908024 -> -677867310610152.55569620459788530 Inexact Rounded
-powx3249 power -46.250735086006350517943464758019 1 -> -46.250735086006350517943464758019
-remx3249 remainder -46.250735086006350517943464758019 14656357555174.263295266074908024 -> -46.250735086006350517943464758019
-subx3249 subtract -46.250735086006350517943464758019 14656357555174.263295266074908024 -> -14656357555220.514030352081258542 Inexact Rounded
-addx3250 add -61641121299391.316420647102699627E+763 -91896469863.461006903590004188187E+474 -> -6.1641121299391316420647102699627E+776 Inexact Rounded
-comx3250 compare -61641121299391.316420647102699627E+763 -91896469863.461006903590004188187E+474 -> -1
-divx3250 divide -61641121299391.316420647102699627E+763 -91896469863.461006903590004188187E+474 -> 6.7076702065897819604716946852581E+291 Inexact Rounded
-dvix3250 divideint -61641121299391.316420647102699627E+763 -91896469863.461006903590004188187E+474 -> NaN Division_impossible
-mulx3250 multiply -61641121299391.316420647102699627E+763 -91896469863.461006903590004188187E+474 -> 5.6646014458394584921579417504939E+1261 Inexact Rounded
-powx3250 power -61641121299391.316420647102699627E+763 -9 -> -7.7833261179975532508748150708605E-6992 Inexact Rounded
-remx3250 remainder -61641121299391.316420647102699627E+763 -91896469863.461006903590004188187E+474 -> NaN Division_impossible
-subx3250 subtract -61641121299391.316420647102699627E+763 -91896469863.461006903590004188187E+474 -> -6.1641121299391316420647102699627E+776 Inexact Rounded
-addx3251 add 96668419802749.555738010239087449E-838 -19498732131365824921639467044927E-542 -> -1.9498732131365824921639467044927E-511 Inexact Rounded
-comx3251 compare 96668419802749.555738010239087449E-838 -19498732131365824921639467044927E-542 -> 1
-divx3251 divide 96668419802749.555738010239087449E-838 -19498732131365824921639467044927E-542 -> -4.9576772044192514715453215933704E-314 Inexact Rounded
-dvix3251 divideint 96668419802749.555738010239087449E-838 -19498732131365824921639467044927E-542 -> -0
-mulx3251 multiply 96668419802749.555738010239087449E-838 -19498732131365824921639467044927E-542 -> -1.8849116232962331617140676274611E-1335 Inexact Rounded
-powx3251 power 96668419802749.555738010239087449E-838 -2 -> 1.0701157625268896323611633350003E+1648 Inexact Rounded
-remx3251 remainder 96668419802749.555738010239087449E-838 -19498732131365824921639467044927E-542 -> 9.6668419802749555738010239087449E-825
-subx3251 subtract 96668419802749.555738010239087449E-838 -19498732131365824921639467044927E-542 -> 1.9498732131365824921639467044927E-511 Inexact Rounded
-addx3252 add -8534543911197995906031245719519E+124 16487117050031.594886541650897974 -> -8.5345439111979959060312457195190E+154 Inexact Rounded
-comx3252 compare -8534543911197995906031245719519E+124 16487117050031.594886541650897974 -> -1
-divx3252 divide -8534543911197995906031245719519E+124 16487117050031.594886541650897974 -> -5.1764925822381062287959523371316E+141 Inexact Rounded
-dvix3252 divideint -8534543911197995906031245719519E+124 16487117050031.594886541650897974 -> NaN Division_impossible
-mulx3252 multiply -8534543911197995906031245719519E+124 16487117050031.594886541650897974 -> -1.4071002443255581217471698731240E+168 Inexact Rounded
-powx3252 power -8534543911197995906031245719519E+124 2 -> 7.2838439772166785429482995041337E+309 Inexact Rounded
-remx3252 remainder -8534543911197995906031245719519E+124 16487117050031.594886541650897974 -> NaN Division_impossible
-subx3252 subtract -8534543911197995906031245719519E+124 16487117050031.594886541650897974 -> -8.5345439111979959060312457195190E+154 Inexact Rounded
-addx3253 add -62663404777.352508979582846931050 9.2570938837239134052589184917186E+916 -> 9.2570938837239134052589184917186E+916 Inexact Rounded
-comx3253 compare -62663404777.352508979582846931050 9.2570938837239134052589184917186E+916 -> -1
-divx3253 divide -62663404777.352508979582846931050 9.2570938837239134052589184917186E+916 -> -6.7692307720384142592597124956951E-907 Inexact Rounded
-dvix3253 divideint -62663404777.352508979582846931050 9.2570938837239134052589184917186E+916 -> -0
-mulx3253 multiply -62663404777.352508979582846931050 9.2570938837239134052589184917186E+916 -> -5.8008102109774576654709018012876E+927 Inexact Rounded
-powx3253 power -62663404777.352508979582846931050 9 -> -1.4897928814133059615670462753825E+97 Inexact Rounded
-remx3253 remainder -62663404777.352508979582846931050 9.2570938837239134052589184917186E+916 -> -62663404777.352508979582846931050
-subx3253 subtract -62663404777.352508979582846931050 9.2570938837239134052589184917186E+916 -> -9.2570938837239134052589184917186E+916 Inexact Rounded
-addx3254 add 1.744601214474560992754529320172E-827 -17.353669504253419489494030651507E-631 -> -1.7353669504253419489494030651507E-630 Inexact Rounded
-comx3254 compare 1.744601214474560992754529320172E-827 -17.353669504253419489494030651507E-631 -> 1
-divx3254 divide 1.744601214474560992754529320172E-827 -17.353669504253419489494030651507E-631 -> -1.0053212169604565230497117966004E-197 Inexact Rounded
-dvix3254 divideint 1.744601214474560992754529320172E-827 -17.353669504253419489494030651507E-631 -> -0
-mulx3254 multiply 1.744601214474560992754529320172E-827 -17.353669504253419489494030651507E-631 -> -3.0275232892710668432895049546233E-1457 Inexact Rounded
-powx3254 power 1.744601214474560992754529320172E-827 -2 -> 3.2855468099615282394992542515980E+1653 Inexact Rounded
-remx3254 remainder 1.744601214474560992754529320172E-827 -17.353669504253419489494030651507E-631 -> 1.744601214474560992754529320172E-827
-subx3254 subtract 1.744601214474560992754529320172E-827 -17.353669504253419489494030651507E-631 -> 1.7353669504253419489494030651507E-630 Inexact Rounded
-addx3255 add 0367191549036702224827734853471 4410320662415266533763143837742E+721 -> 4.4103206624152665337631438377420E+751 Inexact Rounded
-comx3255 compare 0367191549036702224827734853471 4410320662415266533763143837742E+721 -> -1
-divx3255 divide 0367191549036702224827734853471 4410320662415266533763143837742E+721 -> 8.3257335949720619093963917942525E-723 Inexact Rounded
-dvix3255 divideint 0367191549036702224827734853471 4410320662415266533763143837742E+721 -> 0
-mulx3255 multiply 0367191549036702224827734853471 4410320662415266533763143837742E+721 -> 1.6194324757808363802947192054966E+781 Inexact Rounded
-powx3255 power 0367191549036702224827734853471 4 -> 1.8179030119354318182493703269258E+118 Inexact Rounded
-remx3255 remainder 0367191549036702224827734853471 4410320662415266533763143837742E+721 -> 367191549036702224827734853471
-subx3255 subtract 0367191549036702224827734853471 4410320662415266533763143837742E+721 -> -4.4103206624152665337631438377420E+751 Inexact Rounded
-addx3256 add 097704116.4492566721965710365073 -96736.400939809433556067504289145 -> 97607380.048316862763014969003011 Inexact Rounded
-comx3256 compare 097704116.4492566721965710365073 -96736.400939809433556067504289145 -> 1
-divx3256 divide 097704116.4492566721965710365073 -96736.400939809433556067504289145 -> -1010.0036335861757252324592571874 Inexact Rounded
-dvix3256 divideint 097704116.4492566721965710365073 -96736.400939809433556067504289145 -> -1010
-mulx3256 multiply 097704116.4492566721965710365073 -96736.400939809433556067504289145 -> -9451544582305.1234805483449772252 Inexact Rounded
-powx3256 power 097704116.4492566721965710365073 -96736 -> 0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3256 remainder 097704116.4492566721965710365073 -96736.400939809433556067504289145 -> 351.500049144304942857175263550
-subx3256 subtract 097704116.4492566721965710365073 -96736.400939809433556067504289145 -> 97800852.850196481630127104011589 Inexact Rounded
-addx3257 add 19533298.147150158931958733807878 80.141668338350708476637377647025E-641 -> 19533298.147150158931958733807878 Inexact Rounded
-comx3257 compare 19533298.147150158931958733807878 80.141668338350708476637377647025E-641 -> 1
-divx3257 divide 19533298.147150158931958733807878 80.141668338350708476637377647025E-641 -> 2.4373460837728485395672882395171E+646 Inexact Rounded
-dvix3257 divideint 19533298.147150158931958733807878 80.141668338350708476637377647025E-641 -> NaN Division_impossible
-mulx3257 multiply 19533298.147150158931958733807878 80.141668338350708476637377647025E-641 -> 1.5654311016630284502459158971272E-632 Inexact Rounded
-powx3257 power 19533298.147150158931958733807878 8 -> 2.1193595047638230427530063654613E+58 Inexact Rounded
-remx3257 remainder 19533298.147150158931958733807878 80.141668338350708476637377647025E-641 -> NaN Division_impossible
-subx3257 subtract 19533298.147150158931958733807878 80.141668338350708476637377647025E-641 -> 19533298.147150158931958733807878 Inexact Rounded
-addx3258 add -23765003221220177430797028997378 -15203369569.373411506379096871224E-945 -> -23765003221220177430797028997378 Inexact Rounded
-comx3258 compare -23765003221220177430797028997378 -15203369569.373411506379096871224E-945 -> -1
-divx3258 divide -23765003221220177430797028997378 -15203369569.373411506379096871224E-945 -> 1.5631405336020930064824135669541E+966 Inexact Rounded
-dvix3258 divideint -23765003221220177430797028997378 -15203369569.373411506379096871224E-945 -> NaN Division_impossible
-mulx3258 multiply -23765003221220177430797028997378 -15203369569.373411506379096871224E-945 -> 3.6130812678955994625210007005216E-904 Inexact Rounded
-powx3258 power -23765003221220177430797028997378 -2 -> 1.7706154318483481190364979209436E-63 Inexact Rounded
-remx3258 remainder -23765003221220177430797028997378 -15203369569.373411506379096871224E-945 -> NaN Division_impossible
-subx3258 subtract -23765003221220177430797028997378 -15203369569.373411506379096871224E-945 -> -23765003221220177430797028997378 Inexact Rounded
-addx3259 add 129255.41937932433359193338910552E+932 -281253953.38990382799508873560320 -> 1.2925541937932433359193338910552E+937 Inexact Rounded
-comx3259 compare 129255.41937932433359193338910552E+932 -281253953.38990382799508873560320 -> 1
-divx3259 divide 129255.41937932433359193338910552E+932 -281253953.38990382799508873560320 -> -4.5956836453828213050223260551064E+928 Inexact Rounded
-dvix3259 divideint 129255.41937932433359193338910552E+932 -281253953.38990382799508873560320 -> NaN Division_impossible
-mulx3259 multiply 129255.41937932433359193338910552E+932 -281253953.38990382799508873560320 -> -3.6353597697504958096931088780367E+945 Inexact Rounded
-powx3259 power 129255.41937932433359193338910552E+932 -281253953 -> 0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3259 remainder 129255.41937932433359193338910552E+932 -281253953.38990382799508873560320 -> NaN Division_impossible
-subx3259 subtract 129255.41937932433359193338910552E+932 -281253953.38990382799508873560320 -> 1.2925541937932433359193338910552E+937 Inexact Rounded
-addx3260 add -86863.276249466008289214762980838 531.50602652732088208397655484476 -> -86331.770222938687407130786425993 Inexact Rounded
-comx3260 compare -86863.276249466008289214762980838 531.50602652732088208397655484476 -> -1
-divx3260 divide -86863.276249466008289214762980838 531.50602652732088208397655484476 -> -163.42858201815891408475902229649 Inexact Rounded
-dvix3260 divideint -86863.276249466008289214762980838 531.50602652732088208397655484476 -> -163
-mulx3260 multiply -86863.276249466008289214762980838 531.50602652732088208397655484476 -> -46168354.810498682140456143534524 Inexact Rounded
-powx3260 power -86863.276249466008289214762980838 532 -> 2.8897579184173839519859710217510E+2627 Inexact Rounded
-remx3260 remainder -86863.276249466008289214762980838 531.50602652732088208397655484476 -> -227.79392551270450952658454114212
-subx3260 subtract -86863.276249466008289214762980838 531.50602652732088208397655484476 -> -87394.782275993329171298739535683 Inexact Rounded
-addx3261 add -40707.169006771111855573524157083 -68795521421321853333274411827749 -> -68795521421321853333274411868456 Inexact Rounded
-comx3261 compare -40707.169006771111855573524157083 -68795521421321853333274411827749 -> 1
-divx3261 divide -40707.169006771111855573524157083 -68795521421321853333274411827749 -> 5.9171248601300236694386185513139E-28 Inexact Rounded
-dvix3261 divideint -40707.169006771111855573524157083 -68795521421321853333274411827749 -> 0
-mulx3261 multiply -40707.169006771111855573524157083 -68795521421321853333274411827749 -> 2.8004709174066910577370895499575E+36 Inexact Rounded
-powx3261 power -40707.169006771111855573524157083 -7 -> -5.3988802915897595722440392884051E-33 Inexact Rounded
-remx3261 remainder -40707.169006771111855573524157083 -68795521421321853333274411827749 -> -40707.169006771111855573524157083
-subx3261 subtract -40707.169006771111855573524157083 -68795521421321853333274411827749 -> 68795521421321853333274411787042 Inexact Rounded
-addx3262 add -90838752568673.728630494658778003E+095 -738.01370301217606577533107981431 -> -9.0838752568673728630494658778003E+108 Inexact Rounded
-comx3262 compare -90838752568673.728630494658778003E+095 -738.01370301217606577533107981431 -> -1
-divx3262 divide -90838752568673.728630494658778003E+095 -738.01370301217606577533107981431 -> 1.2308545518588430875268553851424E+106 Inexact Rounded
-dvix3262 divideint -90838752568673.728630494658778003E+095 -738.01370301217606577533107981431 -> NaN Division_impossible
-mulx3262 multiply -90838752568673.728630494658778003E+095 -738.01370301217606577533107981431 -> 6.7040244160213718891633678248127E+111 Inexact Rounded
-powx3262 power -90838752568673.728630494658778003E+095 -738 -> 0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3262 remainder -90838752568673.728630494658778003E+095 -738.01370301217606577533107981431 -> NaN Division_impossible
-subx3262 subtract -90838752568673.728630494658778003E+095 -738.01370301217606577533107981431 -> -9.0838752568673728630494658778003E+108 Inexact Rounded
-addx3263 add -4245360967593.9206771555839718158E-682 -3.119606239042530207103203508057 -> -3.1196062390425302071032035080570 Inexact Rounded
-comx3263 compare -4245360967593.9206771555839718158E-682 -3.119606239042530207103203508057 -> 1
-divx3263 divide -4245360967593.9206771555839718158E-682 -3.119606239042530207103203508057 -> 1.3608643662980066356437236081969E-670 Inexact Rounded
-dvix3263 divideint -4245360967593.9206771555839718158E-682 -3.119606239042530207103203508057 -> 0
-mulx3263 multiply -4245360967593.9206771555839718158E-682 -3.119606239042530207103203508057 -> 1.3243854561493627844105290415330E-669 Inexact Rounded
-powx3263 power -4245360967593.9206771555839718158E-682 -3 -> -1.3069414504933253288042820429894E+2008 Inexact Rounded
-remx3263 remainder -4245360967593.9206771555839718158E-682 -3.119606239042530207103203508057 -> -4.2453609675939206771555839718158E-670
-subx3263 subtract -4245360967593.9206771555839718158E-682 -3.119606239042530207103203508057 -> 3.1196062390425302071032035080570 Inexact Rounded
-addx3264 add -3422145405774.0800213000547612240E-023 -60810.964656409650839011321706310 -> -60810.964656409685060465379447110 Inexact Rounded
-comx3264 compare -3422145405774.0800213000547612240E-023 -60810.964656409650839011321706310 -> 1
-divx3264 divide -3422145405774.0800213000547612240E-023 -60810.964656409650839011321706310 -> 5.6275137635287882875914124742650E-16 Inexact Rounded
-dvix3264 divideint -3422145405774.0800213000547612240E-023 -60810.964656409650839011321706310 -> 0
-mulx3264 multiply -3422145405774.0800213000547612240E-023 -60810.964656409650839011321706310 -> 0.0000020810396331962224323288744910607 Inexact Rounded
-powx3264 power -3422145405774.0800213000547612240E-023 -60811 -> -Infinity Overflow Inexact Rounded
-remx3264 remainder -3422145405774.0800213000547612240E-023 -60810.964656409650839011321706310 -> -3.4221454057740800213000547612240E-11
-subx3264 subtract -3422145405774.0800213000547612240E-023 -60810.964656409650839011321706310 -> 60810.964656409616617557263965510 Inexact Rounded
-addx3265 add -24521811.07649485796598387627478E-661 -94860846133404815410816234000694 -> -94860846133404815410816234000694 Inexact Rounded
-comx3265 compare -24521811.07649485796598387627478E-661 -94860846133404815410816234000694 -> 1
-divx3265 divide -24521811.07649485796598387627478E-661 -94860846133404815410816234000694 -> 2.5850297647576657819483988845904E-686 Inexact Rounded
-dvix3265 divideint -24521811.07649485796598387627478E-661 -94860846133404815410816234000694 -> 0
-mulx3265 multiply -24521811.07649485796598387627478E-661 -94860846133404815410816234000694 -> 2.3261597474398006215017751785104E-622 Inexact Rounded
-powx3265 power -24521811.07649485796598387627478E-661 -9 -> -3.1190843559949184618590264246586E+5882 Inexact Rounded
-remx3265 remainder -24521811.07649485796598387627478E-661 -94860846133404815410816234000694 -> -2.452181107649485796598387627478E-654
-subx3265 subtract -24521811.07649485796598387627478E-661 -94860846133404815410816234000694 -> 94860846133404815410816234000694 Inexact Rounded
-addx3266 add -5042529937498.8944492248538951438 3891904674.4549170968807145612549 -> -5038638032824.4395321279731805825 Inexact Rounded
-comx3266 compare -5042529937498.8944492248538951438 3891904674.4549170968807145612549 -> -1
-divx3266 divide -5042529937498.8944492248538951438 3891904674.4549170968807145612549 -> -1295.6457979549894351378127413283 Inexact Rounded
-dvix3266 divideint -5042529937498.8944492248538951438 3891904674.4549170968807145612549 -> -1295
-mulx3266 multiply -5042529937498.8944492248538951438 3891904674.4549170968807145612549 -> -19625045834830808256871.952659048 Inexact Rounded
-powx3266 power -5042529937498.8944492248538951438 4 -> 6.4653782991800009492580180960839E+50 Inexact Rounded
-remx3266 remainder -5042529937498.8944492248538951438 3891904674.4549170968807145612549 -> -2513384079.7768087643285383187045
-subx3266 subtract -5042529937498.8944492248538951438 3891904674.4549170968807145612549 -> -5046421842173.3493663217346097051 Inexact Rounded
-addx3267 add -535824163.54531747646293693868651E-665 2732988.5891363639325008206099712 -> 2732988.5891363639325008206099712 Inexact Rounded
-comx3267 compare -535824163.54531747646293693868651E-665 2732988.5891363639325008206099712 -> -1
-divx3267 divide -535824163.54531747646293693868651E-665 2732988.5891363639325008206099712 -> -1.9605795855687791246611683328346E-663 Inexact Rounded
-dvix3267 divideint -535824163.54531747646293693868651E-665 2732988.5891363639325008206099712 -> -0
-mulx3267 multiply -535824163.54531747646293693868651E-665 2732988.5891363639325008206099712 -> -1.4644013247528895376254850705597E-650 Inexact Rounded
-powx3267 power -535824163.54531747646293693868651E-665 2732989 -> -0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3267 remainder -535824163.54531747646293693868651E-665 2732988.5891363639325008206099712 -> -5.3582416354531747646293693868651E-657
-subx3267 subtract -535824163.54531747646293693868651E-665 2732988.5891363639325008206099712 -> -2732988.5891363639325008206099712 Inexact Rounded
-addx3268 add 24032.702008553084252925140858134E-509 52864854.899420632375589206704068 -> 52864854.899420632375589206704068 Inexact Rounded
-comx3268 compare 24032.702008553084252925140858134E-509 52864854.899420632375589206704068 -> -1
-divx3268 divide 24032.702008553084252925140858134E-509 52864854.899420632375589206704068 -> 4.5460641203455697917573431961511E-513 Inexact Rounded
-dvix3268 divideint 24032.702008553084252925140858134E-509 52864854.899420632375589206704068 -> 0
-mulx3268 multiply 24032.702008553084252925140858134E-509 52864854.899420632375589206704068 -> 1.2704853045231735885074945710576E-497 Inexact Rounded
-powx3268 power 24032.702008553084252925140858134E-509 52864855 -> 0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3268 remainder 24032.702008553084252925140858134E-509 52864854.899420632375589206704068 -> 2.4032702008553084252925140858134E-505
-subx3268 subtract 24032.702008553084252925140858134E-509 52864854.899420632375589206704068 -> -52864854.899420632375589206704068 Inexact Rounded
-addx3269 add 71553220259.938950698030519906727E-496 754.44220417415325444943566016062 -> 754.44220417415325444943566016062 Inexact Rounded
-comx3269 compare 71553220259.938950698030519906727E-496 754.44220417415325444943566016062 -> -1
-divx3269 divide 71553220259.938950698030519906727E-496 754.44220417415325444943566016062 -> 9.4842547068617879794218050008353E-489 Inexact Rounded
-dvix3269 divideint 71553220259.938950698030519906727E-496 754.44220417415325444943566016062 -> 0
-mulx3269 multiply 71553220259.938950698030519906727E-496 754.44220417415325444943566016062 -> 5.3982769208667021044675146787248E-483 Inexact Rounded
-powx3269 power 71553220259.938950698030519906727E-496 754 -> 0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3269 remainder 71553220259.938950698030519906727E-496 754.44220417415325444943566016062 -> 7.1553220259938950698030519906727E-486
-subx3269 subtract 71553220259.938950698030519906727E-496 754.44220417415325444943566016062 -> -754.44220417415325444943566016062 Inexact Rounded
-addx3270 add 35572.960284795962697740953932508 520.39506364687594082725754878910E-731 -> 35572.960284795962697740953932508 Inexact Rounded
-comx3270 compare 35572.960284795962697740953932508 520.39506364687594082725754878910E-731 -> 1
-divx3270 divide 35572.960284795962697740953932508 520.39506364687594082725754878910E-731 -> 6.8357605153869556504869061469852E+732 Inexact Rounded
-dvix3270 divideint 35572.960284795962697740953932508 520.39506364687594082725754878910E-731 -> NaN Division_impossible
-mulx3270 multiply 35572.960284795962697740953932508 520.39506364687594082725754878910E-731 -> 1.8511992931514185102474609686066E-724 Inexact Rounded
-powx3270 power 35572.960284795962697740953932508 5 -> 56963942247985404337401.149353169 Inexact Rounded
-remx3270 remainder 35572.960284795962697740953932508 520.39506364687594082725754878910E-731 -> NaN Division_impossible
-subx3270 subtract 35572.960284795962697740953932508 520.39506364687594082725754878910E-731 -> 35572.960284795962697740953932508 Inexact Rounded
-addx3271 add 53035405018123760598334895413057E+818 -9558464247240.4476790042911379151 -> 5.3035405018123760598334895413057E+849 Inexact Rounded
-comx3271 compare 53035405018123760598334895413057E+818 -9558464247240.4476790042911379151 -> 1
-divx3271 divide 53035405018123760598334895413057E+818 -9558464247240.4476790042911379151 -> -5.5485278436266802470202487233285E+836 Inexact Rounded
-dvix3271 divideint 53035405018123760598334895413057E+818 -9558464247240.4476790042911379151 -> NaN Division_impossible
-mulx3271 multiply 53035405018123760598334895413057E+818 -9558464247240.4476790042911379151 -> -5.0693702270365259274203181894613E+862 Inexact Rounded
-powx3271 power 53035405018123760598334895413057E+818 -10 -> 5.6799053935427267944455848135618E-8498 Inexact Rounded
-remx3271 remainder 53035405018123760598334895413057E+818 -9558464247240.4476790042911379151 -> NaN Division_impossible
-subx3271 subtract 53035405018123760598334895413057E+818 -9558464247240.4476790042911379151 -> 5.3035405018123760598334895413057E+849 Inexact Rounded
-addx3272 add 95.490751127249945886828257312118 987.01498316307365714167410690192E+133 -> 9.8701498316307365714167410690192E+135 Inexact Rounded
-comx3272 compare 95.490751127249945886828257312118 987.01498316307365714167410690192E+133 -> -1
-divx3272 divide 95.490751127249945886828257312118 987.01498316307365714167410690192E+133 -> 9.6747012716293341927566515915016E-135 Inexact Rounded
-dvix3272 divideint 95.490751127249945886828257312118 987.01498316307365714167410690192E+133 -> 0
-mulx3272 multiply 95.490751127249945886828257312118 987.01498316307365714167410690192E+133 -> 9.4250802116091862185764800227004E+137 Inexact Rounded
-powx3272 power 95.490751127249945886828257312118 10 -> 63039548646186864162.847491534337 Inexact Rounded
-remx3272 remainder 95.490751127249945886828257312118 987.01498316307365714167410690192E+133 -> 95.490751127249945886828257312118
-subx3272 subtract 95.490751127249945886828257312118 987.01498316307365714167410690192E+133 -> -9.8701498316307365714167410690192E+135 Inexact Rounded
-addx3273 add 69434850287.460788550936730296153 -35119136549015044241569827542264 -> -35119136549015044241500392691977 Inexact Rounded
-comx3273 compare 69434850287.460788550936730296153 -35119136549015044241569827542264 -> 1
-divx3273 divide 69434850287.460788550936730296153 -35119136549015044241569827542264 -> -1.9771229338327273644129394734299E-21 Inexact Rounded
-dvix3273 divideint 69434850287.460788550936730296153 -35119136549015044241569827542264 -> -0
-mulx3273 multiply 69434850287.460788550936730296153 -35119136549015044241569827542264 -> -2.4384919885057519302646522425980E+42 Inexact Rounded
-powx3273 power 69434850287.460788550936730296153 -4 -> 4.3021939605842038995370443743844E-44 Inexact Rounded
-remx3273 remainder 69434850287.460788550936730296153 -35119136549015044241569827542264 -> 69434850287.460788550936730296153
-subx3273 subtract 69434850287.460788550936730296153 -35119136549015044241569827542264 -> 35119136549015044241639262392551 Inexact Rounded
-addx3274 add -392.22739924621965621739098725407 -65551274.987160998195282109612136 -> -65551667.214560244414938327003123 Inexact Rounded
-comx3274 compare -392.22739924621965621739098725407 -65551274.987160998195282109612136 -> 1
-divx3274 divide -392.22739924621965621739098725407 -65551274.987160998195282109612136 -> 0.0000059835205237890809449684317245033 Inexact Rounded
-dvix3274 divideint -392.22739924621965621739098725407 -65551274.987160998195282109612136 -> 0
-mulx3274 multiply -392.22739924621965621739098725407 -65551274.987160998195282109612136 -> 25711006105.487929108329637701882 Inexact Rounded
-powx3274 power -392.22739924621965621739098725407 -65551275 -> -0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3274 remainder -392.22739924621965621739098725407 -65551274.987160998195282109612136 -> -392.22739924621965621739098725407
-subx3274 subtract -392.22739924621965621739098725407 -65551274.987160998195282109612136 -> 65550882.759761751975625892221149 Inexact Rounded
-addx3275 add 6413265.4423561191792972085539457 24514.222704714139350026165721146 -> 6437779.6650608333186472347196668 Inexact Rounded
-comx3275 compare 6413265.4423561191792972085539457 24514.222704714139350026165721146 -> 1
-divx3275 divide 6413265.4423561191792972085539457 24514.222704714139350026165721146 -> 261.61406460270241498757868681883 Inexact Rounded
-dvix3275 divideint 6413265.4423561191792972085539457 24514.222704714139350026165721146 -> 261
-mulx3275 multiply 6413265.4423561191792972085539457 24514.222704714139350026165721146 -> 157216217318.36494525300694583138 Inexact Rounded
-powx3275 power 6413265.4423561191792972085539457 24514 -> Infinity Overflow Inexact Rounded
-remx3275 remainder 6413265.4423561191792972085539457 24514.222704714139350026165721146 -> 15053.316425728808940379300726594
-subx3275 subtract 6413265.4423561191792972085539457 24514.222704714139350026165721146 -> 6388751.2196514050399471823882246 Inexact Rounded
-addx3276 add -6.9667706389122107760046184064057E+487 32.405810703971538278419625527234 -> -6.9667706389122107760046184064057E+487 Inexact Rounded
-comx3276 compare -6.9667706389122107760046184064057E+487 32.405810703971538278419625527234 -> -1
-divx3276 divide -6.9667706389122107760046184064057E+487 32.405810703971538278419625527234 -> -2.1498522911689997341347293419761E+486 Inexact Rounded
-dvix3276 divideint -6.9667706389122107760046184064057E+487 32.405810703971538278419625527234 -> NaN Division_impossible
-mulx3276 multiply -6.9667706389122107760046184064057E+487 32.405810703971538278419625527234 -> -2.2576385054257595259511556258470E+489 Inexact Rounded
-powx3276 power -6.9667706389122107760046184064057E+487 32 -> Infinity Overflow Inexact Rounded
-remx3276 remainder -6.9667706389122107760046184064057E+487 32.405810703971538278419625527234 -> NaN Division_impossible
-subx3276 subtract -6.9667706389122107760046184064057E+487 32.405810703971538278419625527234 -> -6.9667706389122107760046184064057E+487 Inexact Rounded
-addx3277 add 378204716633.40024100602896057615 -0300218714378.322231269606216516 -> 77986002255.07800973642274406015
-comx3277 compare 378204716633.40024100602896057615 -0300218714378.322231269606216516 -> 1
-divx3277 divide 378204716633.40024100602896057615 -0300218714378.322231269606216516 -> -1.2597639604731753284599748820876 Inexact Rounded
-dvix3277 divideint 378204716633.40024100602896057615 -0300218714378.322231269606216516 -> -1
-mulx3277 multiply 378204716633.40024100602896057615 -0300218714378.322231269606216516 -> -113544133799497082075557.21180430 Inexact Rounded
-powx3277 power 378204716633.40024100602896057615 -3 -> 1.8484988212401886887562779996737E-35 Inexact Rounded
-remx3277 remainder 378204716633.40024100602896057615 -0300218714378.322231269606216516 -> 77986002255.07800973642274406015
-subx3277 subtract 378204716633.40024100602896057615 -0300218714378.322231269606216516 -> 678423431011.72247227563517709215
-addx3278 add -44234.512012457148027685282969235E+501 2132572.4571987908375002100894927 -> -4.4234512012457148027685282969235E+505 Inexact Rounded
-comx3278 compare -44234.512012457148027685282969235E+501 2132572.4571987908375002100894927 -> -1
-divx3278 divide -44234.512012457148027685282969235E+501 2132572.4571987908375002100894927 -> -2.0742325477916347193181603963257E+499 Inexact Rounded
-dvix3278 divideint -44234.512012457148027685282969235E+501 2132572.4571987908375002100894927 -> NaN Division_impossible
-mulx3278 multiply -44234.512012457148027685282969235E+501 2132572.4571987908375002100894927 -> -9.4333301975395170465982968019915E+511 Inexact Rounded
-powx3278 power -44234.512012457148027685282969235E+501 2132572 -> Infinity Overflow Inexact Rounded
-remx3278 remainder -44234.512012457148027685282969235E+501 2132572.4571987908375002100894927 -> NaN Division_impossible
-subx3278 subtract -44234.512012457148027685282969235E+501 2132572.4571987908375002100894927 -> -4.4234512012457148027685282969235E+505 Inexact Rounded
-addx3279 add -3554.5895974968741465654022772100E-073 9752.0428746722497621936998533848E+516 -> 9.7520428746722497621936998533848E+519 Inexact Rounded
-comx3279 compare -3554.5895974968741465654022772100E-073 9752.0428746722497621936998533848E+516 -> -1
-divx3279 divide -3554.5895974968741465654022772100E-073 9752.0428746722497621936998533848E+516 -> -3.6449692061227100572768330912162E-590 Inexact Rounded
-dvix3279 divideint -3554.5895974968741465654022772100E-073 9752.0428746722497621936998533848E+516 -> -0
-mulx3279 multiply -3554.5895974968741465654022772100E-073 9752.0428746722497621936998533848E+516 -> -3.4664510156653491769901435777060E+450 Inexact Rounded
-powx3279 power -3554.5895974968741465654022772100E-073 10 -> 3.2202875716019266933215387456197E-695 Inexact Rounded
-remx3279 remainder -3554.5895974968741465654022772100E-073 9752.0428746722497621936998533848E+516 -> -3.5545895974968741465654022772100E-70
-subx3279 subtract -3554.5895974968741465654022772100E-073 9752.0428746722497621936998533848E+516 -> -9.7520428746722497621936998533848E+519 Inexact Rounded
-addx3280 add 750187685.63632608923397234391668 4633194252863.6730625972669246025 -> 4633944440549.3093886865008969464 Inexact Rounded
-comx3280 compare 750187685.63632608923397234391668 4633194252863.6730625972669246025 -> -1
-divx3280 divide 750187685.63632608923397234391668 4633194252863.6730625972669246025 -> 0.00016191587157664541463871807382759 Inexact Rounded
-dvix3280 divideint 750187685.63632608923397234391668 4633194252863.6730625972669246025 -> 0
-mulx3280 multiply 750187685.63632608923397234391668 4633194252863.6730625972669246025 -> 3475765273659325895012.7612107556 Inexact Rounded
-powx3280 power 750187685.63632608923397234391668 5 -> 2.3760176068829529745152188798557E+44 Inexact Rounded
-remx3280 remainder 750187685.63632608923397234391668 4633194252863.6730625972669246025 -> 750187685.63632608923397234391668
-subx3280 subtract 750187685.63632608923397234391668 4633194252863.6730625972669246025 -> -4632444065178.0367365080329522586 Inexact Rounded
-addx3281 add 30190034242853.251165951457589386E-028 8038885676.3204238322976087799751E+018 -> 8038885676320423832297608779.9751 Inexact Rounded
-comx3281 compare 30190034242853.251165951457589386E-028 8038885676.3204238322976087799751E+018 -> -1
-divx3281 divide 30190034242853.251165951457589386E-028 8038885676.3204238322976087799751E+018 -> 3.7554998862319807295903348960280E-43 Inexact Rounded
-dvix3281 divideint 30190034242853.251165951457589386E-028 8038885676.3204238322976087799751E+018 -> 0
-mulx3281 multiply 30190034242853.251165951457589386E-028 8038885676.3204238322976087799751E+018 -> 24269423384249.611263728854793731 Inexact Rounded
-powx3281 power 30190034242853.251165951457589386E-028 8 -> 6.9009494305612589578332690692113E-117 Inexact Rounded
-remx3281 remainder 30190034242853.251165951457589386E-028 8038885676.3204238322976087799751E+018 -> 3.0190034242853251165951457589386E-15
-subx3281 subtract 30190034242853.251165951457589386E-028 8038885676.3204238322976087799751E+018 -> -8038885676320423832297608779.9751 Inexact Rounded
-addx3282 add 65.537942676774715953400768803539 125946917260.87536506197191782198 -> 125946917326.41330773874663377538 Inexact Rounded
-comx3282 compare 65.537942676774715953400768803539 125946917260.87536506197191782198 -> -1
-divx3282 divide 65.537942676774715953400768803539 125946917260.87536506197191782198 -> 5.2036162616846894920389414735878E-10 Inexact Rounded
-dvix3282 divideint 65.537942676774715953400768803539 125946917260.87536506197191782198 -> 0
-mulx3282 multiply 65.537942676774715953400768803539 125946917260.87536506197191782198 -> 8254301843759.7376990957355411370 Inexact Rounded
-powx3282 power 65.537942676774715953400768803539 1 -> 65.537942676774715953400768803539
-remx3282 remainder 65.537942676774715953400768803539 125946917260.87536506197191782198 -> 65.537942676774715953400768803539
-subx3282 subtract 65.537942676774715953400768803539 125946917260.87536506197191782198 -> -125946917195.33742238519720186858 Inexact Rounded
-addx3283 add 8015272348677.5489394183881813700 949.23027111499779258284877920022 -> 8015272349626.7792105333859739528 Inexact Rounded
-comx3283 compare 8015272348677.5489394183881813700 949.23027111499779258284877920022 -> 1
-divx3283 divide 8015272348677.5489394183881813700 949.23027111499779258284877920022 -> 8443970438.5560107978790084430110 Inexact Rounded
-dvix3283 divideint 8015272348677.5489394183881813700 949.23027111499779258284877920022 -> 8443970438
-mulx3283 multiply 8015272348677.5489394183881813700 949.23027111499779258284877920022 -> 7608339144595734.8984281431471741 Inexact Rounded
-powx3283 power 8015272348677.5489394183881813700 949 -> Infinity Overflow Inexact Rounded
-remx3283 remainder 8015272348677.5489394183881813700 949.23027111499779258284877920022 -> 527.78228041355742397895303690364
-subx3283 subtract 8015272348677.5489394183881813700 949.23027111499779258284877920022 -> 8015272347728.3186683033903887872 Inexact Rounded
-addx3284 add -32595333982.67068622120451804225 69130.052233649808750113141502465E-862 -> -32595333982.670686221204518042250 Inexact Rounded
-comx3284 compare -32595333982.67068622120451804225 69130.052233649808750113141502465E-862 -> -1
-divx3284 divide -32595333982.67068622120451804225 69130.052233649808750113141502465E-862 -> -4.7150744038935574574681609457727E+867 Inexact Rounded
-dvix3284 divideint -32595333982.67068622120451804225 69130.052233649808750113141502465E-862 -> NaN Division_impossible
-mulx3284 multiply -32595333982.67068622120451804225 69130.052233649808750113141502465E-862 -> -2.2533171407952851885446213697715E-847 Inexact Rounded
-powx3284 power -32595333982.67068622120451804225 7 -> -3.9092014148031739666525606093306E+73 Inexact Rounded
-remx3284 remainder -32595333982.67068622120451804225 69130.052233649808750113141502465E-862 -> NaN Division_impossible
-subx3284 subtract -32595333982.67068622120451804225 69130.052233649808750113141502465E-862 -> -32595333982.670686221204518042250 Inexact Rounded
-addx3285 add -17544189017145.710117633021800426E-537 292178000.06450804618299520094843 -> 292178000.06450804618299520094843 Inexact Rounded
-comx3285 compare -17544189017145.710117633021800426E-537 292178000.06450804618299520094843 -> -1
-divx3285 divide -17544189017145.710117633021800426E-537 292178000.06450804618299520094843 -> -6.0046235559392715334668277026896E-533 Inexact Rounded
-dvix3285 divideint -17544189017145.710117633021800426E-537 292178000.06450804618299520094843 -> -0
-mulx3285 multiply -17544189017145.710117633021800426E-537 292178000.06450804618299520094843 -> -5.1260260597833406461110136952456E-516 Inexact Rounded
-powx3285 power -17544189017145.710117633021800426E-537 292178000 -> 0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3285 remainder -17544189017145.710117633021800426E-537 292178000.06450804618299520094843 -> -1.7544189017145710117633021800426E-524
-subx3285 subtract -17544189017145.710117633021800426E-537 292178000.06450804618299520094843 -> -292178000.06450804618299520094843 Inexact Rounded
-addx3286 add -506650.99395649907139204052441630 11.018427502031650148962067367158 -> -506639.97552899703974189156234893 Inexact Rounded
-comx3286 compare -506650.99395649907139204052441630 11.018427502031650148962067367158 -> -1
-divx3286 divide -506650.99395649907139204052441630 11.018427502031650148962067367158 -> -45982.150707356329027698717189104 Inexact Rounded
-dvix3286 divideint -506650.99395649907139204052441630 11.018427502031650148962067367158 -> -45982
-mulx3286 multiply -506650.99395649907139204052441630 11.018427502031650148962067367158 -> -5582497.2457419607392940234271222 Inexact Rounded
-powx3286 power -506650.99395649907139204052441630 11 -> -5.6467412678809885333313818078829E+62 Inexact Rounded
-remx3286 remainder -506650.99395649907139204052441630 11.018427502031650148962067367158 -> -1.660558079734242466742739640844
-subx3286 subtract -506650.99395649907139204052441630 11.018427502031650148962067367158 -> -506662.01238400110304218948648367 Inexact Rounded
-addx3287 add 4846835159.5922372307656000769395E-241 -84.001893040865864590122330800768 -> -84.001893040865864590122330800768 Inexact Rounded
-comx3287 compare 4846835159.5922372307656000769395E-241 -84.001893040865864590122330800768 -> 1
-divx3287 divide 4846835159.5922372307656000769395E-241 -84.001893040865864590122330800768 -> -5.7699118247660357814641813260524E-234 Inexact Rounded
-dvix3287 divideint 4846835159.5922372307656000769395E-241 -84.001893040865864590122330800768 -> -0
-mulx3287 multiply 4846835159.5922372307656000769395E-241 -84.001893040865864590122330800768 -> -4.0714332866277514481192856925775E-230 Inexact Rounded
-powx3287 power 4846835159.5922372307656000769395E-241 -84 -> Infinity Overflow Inexact Rounded
-remx3287 remainder 4846835159.5922372307656000769395E-241 -84.001893040865864590122330800768 -> 4.8468351595922372307656000769395E-232
-subx3287 subtract 4846835159.5922372307656000769395E-241 -84.001893040865864590122330800768 -> 84.001893040865864590122330800768 Inexact Rounded
-addx3288 add -35.029311013822259358116556164908 -3994308878.1994645313414534209127 -> -3994308913.2287755451637127790293 Inexact Rounded
-comx3288 compare -35.029311013822259358116556164908 -3994308878.1994645313414534209127 -> 1
-divx3288 divide -35.029311013822259358116556164908 -3994308878.1994645313414534209127 -> 8.7698052609323004543538163061774E-9 Inexact Rounded
-dvix3288 divideint -35.029311013822259358116556164908 -3994308878.1994645313414534209127 -> 0
-mulx3288 multiply -35.029311013822259358116556164908 -3994308878.1994645313414534209127 -> 139917887979.72053637272961120639 Inexact Rounded
-powx3288 power -35.029311013822259358116556164908 -4 -> 6.6416138040522124693495178218096E-7 Inexact Rounded
-remx3288 remainder -35.029311013822259358116556164908 -3994308878.1994645313414534209127 -> -35.029311013822259358116556164908
-subx3288 subtract -35.029311013822259358116556164908 -3994308878.1994645313414534209127 -> 3994308843.1701535175191940627961 Inexact Rounded
-addx3289 add 7606663750.6735265233044420887018E+166 -5491814639.4484565418284686127552E+365 -> -5.4918146394484565418284686127552E+374 Inexact Rounded
-comx3289 compare 7606663750.6735265233044420887018E+166 -5491814639.4484565418284686127552E+365 -> 1
-divx3289 divide 7606663750.6735265233044420887018E+166 -5491814639.4484565418284686127552E+365 -> -1.3850911310869487895947733090204E-199 Inexact Rounded
-dvix3289 divideint 7606663750.6735265233044420887018E+166 -5491814639.4484565418284686127552E+365 -> -0
-mulx3289 multiply 7606663750.6735265233044420887018E+166 -5491814639.4484565418284686127552E+365 -> -4.1774387343310777190917128006589E+550 Inexact Rounded
-powx3289 power 7606663750.6735265233044420887018E+166 -5 -> 3.9267106978887346373957314818178E-880 Inexact Rounded
-remx3289 remainder 7606663750.6735265233044420887018E+166 -5491814639.4484565418284686127552E+365 -> 7.6066637506735265233044420887018E+175
-subx3289 subtract 7606663750.6735265233044420887018E+166 -5491814639.4484565418284686127552E+365 -> 5.4918146394484565418284686127552E+374 Inexact Rounded
-addx3290 add -25677.829660831741274207326697052E-163 -94135395124193048560172705082029E-862 -> -2.5677829660831741274207326697052E-159 Inexact Rounded
-comx3290 compare -25677.829660831741274207326697052E-163 -94135395124193048560172705082029E-862 -> -1
-divx3290 divide -25677.829660831741274207326697052E-163 -94135395124193048560172705082029E-862 -> 2.7277550199853009708493167299838E+671 Inexact Rounded
-dvix3290 divideint -25677.829660831741274207326697052E-163 -94135395124193048560172705082029E-862 -> NaN Division_impossible
-mulx3290 multiply -25677.829660831741274207326697052E-163 -94135395124193048560172705082029E-862 -> 2.4171926410541199393728294762559E-989 Inexact Rounded
-powx3290 power -25677.829660831741274207326697052E-163 -9 -> -2.0605121420682764897867221992174E+1427 Inexact Rounded
-remx3290 remainder -25677.829660831741274207326697052E-163 -94135395124193048560172705082029E-862 -> NaN Division_impossible
-subx3290 subtract -25677.829660831741274207326697052E-163 -94135395124193048560172705082029E-862 -> -2.5677829660831741274207326697052E-159 Inexact Rounded
-addx3291 add 97271576094.456406729671729224827 -1.5412563837540810793697955063295E+554 -> -1.5412563837540810793697955063295E+554 Inexact Rounded
-comx3291 compare 97271576094.456406729671729224827 -1.5412563837540810793697955063295E+554 -> 1
-divx3291 divide 97271576094.456406729671729224827 -1.5412563837540810793697955063295E+554 -> -6.3111872313890646144473652645030E-544 Inexact Rounded
-dvix3291 divideint 97271576094.456406729671729224827 -1.5412563837540810793697955063295E+554 -> -0
-mulx3291 multiply 97271576094.456406729671729224827 -1.5412563837540810793697955063295E+554 -> -1.4992043761340180288065959300090E+565 Inexact Rounded
-powx3291 power 97271576094.456406729671729224827 -2 -> 1.0568858765852073181352309401343E-22 Inexact Rounded
-remx3291 remainder 97271576094.456406729671729224827 -1.5412563837540810793697955063295E+554 -> 97271576094.456406729671729224827
-subx3291 subtract 97271576094.456406729671729224827 -1.5412563837540810793697955063295E+554 -> 1.5412563837540810793697955063295E+554 Inexact Rounded
-addx3292 add 41139789894.401826915757391777563 -1.8729920305671057957156159690823E-020 -> 41139789894.401826915757391777544 Inexact Rounded
-comx3292 compare 41139789894.401826915757391777563 -1.8729920305671057957156159690823E-020 -> 1
-divx3292 divide 41139789894.401826915757391777563 -1.8729920305671057957156159690823E-020 -> -2196474369511625389289506461551.0 Inexact Rounded
-dvix3292 divideint 41139789894.401826915757391777563 -1.8729920305671057957156159690823E-020 -> -2196474369511625389289506461551
-mulx3292 multiply 41139789894.401826915757391777563 -1.8729920305671057957156159690823E-020 -> -7.7054498611419776714291080928601E-10 Inexact Rounded
-powx3292 power 41139789894.401826915757391777563 -2 -> 5.9084812442741091550891451069919E-22 Inexact Rounded
-remx3292 remainder 41139789894.401826915757391777563 -1.8729920305671057957156159690823E-020 -> 6.98141022640544018935102953527E-22
-subx3292 subtract 41139789894.401826915757391777563 -1.8729920305671057957156159690823E-020 -> 41139789894.401826915757391777582 Inexact Rounded
-addx3293 add -83310831287241.777598696853498149 -54799825033.797100418162985103519E-330 -> -83310831287241.777598696853498149 Inexact Rounded
-comx3293 compare -83310831287241.777598696853498149 -54799825033.797100418162985103519E-330 -> -1
-divx3293 divide -83310831287241.777598696853498149 -54799825033.797100418162985103519E-330 -> 1.5202754978845438636605170857478E+333 Inexact Rounded
-dvix3293 divideint -83310831287241.777598696853498149 -54799825033.797100418162985103519E-330 -> NaN Division_impossible
-mulx3293 multiply -83310831287241.777598696853498149 -54799825033.797100418162985103519E-330 -> 4.5654189779610386760330527839588E-306 Inexact Rounded
-powx3293 power -83310831287241.777598696853498149 -5 -> -2.4916822606682624827900581728387E-70 Inexact Rounded
-remx3293 remainder -83310831287241.777598696853498149 -54799825033.797100418162985103519E-330 -> NaN Division_impossible
-subx3293 subtract -83310831287241.777598696853498149 -54799825033.797100418162985103519E-330 -> -83310831287241.777598696853498149 Inexact Rounded
-addx3294 add 4506653461.4414974233678331771169 -74955470.977653038010031457181957E-887 -> 4506653461.4414974233678331771169 Inexact Rounded
-comx3294 compare 4506653461.4414974233678331771169 -74955470.977653038010031457181957E-887 -> 1
-divx3294 divide 4506653461.4414974233678331771169 -74955470.977653038010031457181957E-887 -> -6.0124409901781490054438220048629E+888 Inexact Rounded
-dvix3294 divideint 4506653461.4414974233678331771169 -74955470.977653038010031457181957E-887 -> NaN Division_impossible
-mulx3294 multiply 4506653461.4414974233678331771169 -74955470.977653038010031457181957E-887 -> -3.3779833273541776470902903512949E-870 Inexact Rounded
-powx3294 power 4506653461.4414974233678331771169 -7 -> 2.6486272911486461102735412463189E-68 Inexact Rounded
-remx3294 remainder 4506653461.4414974233678331771169 -74955470.977653038010031457181957E-887 -> NaN Division_impossible
-subx3294 subtract 4506653461.4414974233678331771169 -74955470.977653038010031457181957E-887 -> 4506653461.4414974233678331771169 Inexact Rounded
-addx3295 add 23777.857951114967684767609401626 720760.03897144157012301385227528 -> 744537.89692255653780778146167691 Inexact Rounded
-comx3295 compare 23777.857951114967684767609401626 720760.03897144157012301385227528 -> -1
-divx3295 divide 23777.857951114967684767609401626 720760.03897144157012301385227528 -> 0.032989978169498808275308039034795 Inexact Rounded
-dvix3295 divideint 23777.857951114967684767609401626 720760.03897144157012301385227528 -> 0
-mulx3295 multiply 23777.857951114967684767609401626 720760.03897144157012301385227528 -> 17138129823.503025913034987537096 Inexact Rounded
-powx3295 power 23777.857951114967684767609401626 720760 -> Infinity Overflow Inexact Rounded
-remx3295 remainder 23777.857951114967684767609401626 720760.03897144157012301385227528 -> 23777.857951114967684767609401626
-subx3295 subtract 23777.857951114967684767609401626 720760.03897144157012301385227528 -> -696982.18102032660243824624287365 Inexact Rounded
-addx3296 add -21337853323980858055292469611948 6080272840.3071490445256786982100E+532 -> 6.0802728403071490445256786982100E+541 Inexact Rounded
-comx3296 compare -21337853323980858055292469611948 6080272840.3071490445256786982100E+532 -> -1
-divx3296 divide -21337853323980858055292469611948 6080272840.3071490445256786982100E+532 -> -3.5093578667274020123788514069885E-511 Inexact Rounded
-dvix3296 divideint -21337853323980858055292469611948 6080272840.3071490445256786982100E+532 -> -0
-mulx3296 multiply -21337853323980858055292469611948 6080272840.3071490445256786982100E+532 -> -1.2973997003625843317417981902198E+573 Inexact Rounded
-powx3296 power -21337853323980858055292469611948 6 -> 9.4385298321304970306180652097874E+187 Inexact Rounded
-remx3296 remainder -21337853323980858055292469611948 6080272840.3071490445256786982100E+532 -> -21337853323980858055292469611948
-subx3296 subtract -21337853323980858055292469611948 6080272840.3071490445256786982100E+532 -> -6.0802728403071490445256786982100E+541 Inexact Rounded
-addx3297 add -818409238.0423893439849743856947 756.39156265972753259267069158760 -> -818408481.65082668425744179302401 Inexact Rounded
-comx3297 compare -818409238.0423893439849743856947 756.39156265972753259267069158760 -> -1
-divx3297 divide -818409238.0423893439849743856947 756.39156265972753259267069158760 -> -1081991.4954690752676494129493403 Inexact Rounded
-dvix3297 divideint -818409238.0423893439849743856947 756.39156265972753259267069158760 -> -1081991
-mulx3297 multiply -818409238.0423893439849743856947 756.39156265972753259267069158760 -> -619037842458.03980537370328252817 Inexact Rounded
-powx3297 power -818409238.0423893439849743856947 756 -> 1.6058883946373232750995543573461E+6738 Inexact Rounded
-remx3297 remainder -818409238.0423893439849743856947 756.39156265972753259267069158760 -> -374.76862809126749803143314108840
-subx3297 subtract -818409238.0423893439849743856947 756.39156265972753259267069158760 -> -818409994.43395200371250697836539 Inexact Rounded
-addx3298 add 47567380384943.87013600286155046 65.084709374908275826942076480326 -> 47567380385008.954845377769826287 Inexact Rounded
-comx3298 compare 47567380384943.87013600286155046 65.084709374908275826942076480326 -> 1
-divx3298 divide 47567380384943.87013600286155046 65.084709374908275826942076480326 -> 730853388480.86247690474303493972 Inexact Rounded
-dvix3298 divideint 47567380384943.87013600286155046 65.084709374908275826942076480326 -> 730853388480
-mulx3298 multiply 47567380384943.87013600286155046 65.084709374908275826942076480326 -> 3095909128079784.3348591472999468 Inexact Rounded
-powx3298 power 47567380384943.87013600286155046 65 -> 1.0594982876763214301042437482634E+889 Inexact Rounded
-remx3298 remainder 47567380384943.87013600286155046 65.084709374908275826942076480326 -> 56.134058687770878126430844955520
-subx3298 subtract 47567380384943.87013600286155046 65.084709374908275826942076480326 -> 47567380384878.785426627953274633 Inexact Rounded
-addx3299 add -296615544.05897984545127115290251 -5416115.4315053536014016450973264 -> -302031659.49048519905267279799984 Inexact Rounded
-comx3299 compare -296615544.05897984545127115290251 -5416115.4315053536014016450973264 -> -1
-divx3299 divide -296615544.05897984545127115290251 -5416115.4315053536014016450973264 -> 54.765366028496664530688259272591 Inexact Rounded
-dvix3299 divideint -296615544.05897984545127115290251 -5416115.4315053536014016450973264 -> 54
-mulx3299 multiply -296615544.05897984545127115290251 -5416115.4315053536014016450973264 -> 1606504025402196.8484885386501478 Inexact Rounded
-powx3299 power -296615544.05897984545127115290251 -5416115 -> -0E-10030 Underflow Subnormal Inexact Rounded Clamped
-remx3299 remainder -296615544.05897984545127115290251 -5416115.4315053536014016450973264 -> -4145310.7576907509755823176468844
-subx3299 subtract -296615544.05897984545127115290251 -5416115.4315053536014016450973264 -> -291199428.62747449184986950780518 Inexact Rounded
-addx3300 add 61391705914.046707180652185247584E+739 -675982087721.91856456125242297346 -> 6.1391705914046707180652185247584E+749 Inexact Rounded
-comx3300 compare 61391705914.046707180652185247584E+739 -675982087721.91856456125242297346 -> 1
-divx3300 divide 61391705914.046707180652185247584E+739 -675982087721.91856456125242297346 -> -9.0818539468906248593699700040068E+737 Inexact Rounded
-dvix3300 divideint 61391705914.046707180652185247584E+739 -675982087721.91856456125242297346 -> NaN Division_impossible
-mulx3300 multiply 61391705914.046707180652185247584E+739 -675982087721.91856456125242297346 -> -4.1499693532587347944890300176290E+761 Inexact Rounded
-powx3300 power 61391705914.046707180652185247584E+739 -7 -> 3.0425105291210947473420999890124E-5249 Inexact Rounded
-remx3300 remainder 61391705914.046707180652185247584E+739 -675982087721.91856456125242297346 -> NaN Division_impossible
-subx3300 subtract 61391705914.046707180652185247584E+739 -675982087721.91856456125242297346 -> 6.1391705914046707180652185247584E+749 Inexact Rounded
-
--- randomly generated testcases [26 Sep 2001]
-precision: 33
-rounding: half_up
-maxExponent: 9999
-
-addx3401 add 042.668056830485571428877212944418 -01364112374639.4941124016455321071 -> -1364112374596.82605557115996067822 Inexact Rounded
-comx3401 compare 042.668056830485571428877212944418 -01364112374639.4941124016455321071 -> 1
-divx3401 divide 042.668056830485571428877212944418 -01364112374639.4941124016455321071 -> -3.12789896373176963160811150593867E-11 Inexact Rounded
-dvix3401 divideint 042.668056830485571428877212944418 -01364112374639.4941124016455321071 -> -0
-mulx3401 multiply 042.668056830485571428877212944418 -01364112374639.4941124016455321071 -> -58204024324286.5595453066065234923 Inexact Rounded
-powx3401 power 042.668056830485571428877212944418 -1 -> 0.0234367363850869744523417227148909 Inexact Rounded
-remx3401 remainder 042.668056830485571428877212944418 -01364112374639.4941124016455321071 -> 42.668056830485571428877212944418
-subx3401 subtract 042.668056830485571428877212944418 -01364112374639.4941124016455321071 -> 1364112374682.16216923213110353598 Inexact Rounded
-addx3402 add -327.179426341653256363531809227344E+453 759067457.107518663444899356760793 -> -3.27179426341653256363531809227344E+455 Inexact Rounded
-comx3402 compare -327.179426341653256363531809227344E+453 759067457.107518663444899356760793 -> -1
-divx3402 divide -327.179426341653256363531809227344E+453 759067457.107518663444899356760793 -> -4.31028129684803083255704680611589E+446 Inexact Rounded
-dvix3402 divideint -327.179426341653256363531809227344E+453 759067457.107518663444899356760793 -> NaN Division_impossible
-mulx3402 multiply -327.179426341653256363531809227344E+453 759067457.107518663444899356760793 -> -2.48351255171055445110558613627379E+464 Inexact Rounded
-powx3402 power -327.179426341653256363531809227344E+453 759067457 -> -Infinity Overflow Inexact Rounded
-remx3402 remainder -327.179426341653256363531809227344E+453 759067457.107518663444899356760793 -> NaN Division_impossible
-subx3402 subtract -327.179426341653256363531809227344E+453 759067457.107518663444899356760793 -> -3.27179426341653256363531809227344E+455 Inexact Rounded
-addx3403 add 81721.5803096185422787702538493471 900099473.245809628076790757217328 -> 900181194.826119246619069527471177 Inexact Rounded
-comx3403 compare 81721.5803096185422787702538493471 900099473.245809628076790757217328 -> -1
-divx3403 divide 81721.5803096185422787702538493471 900099473.245809628076790757217328 -> 0.0000907917210693679220610511319812826 Inexact Rounded
-dvix3403 divideint 81721.5803096185422787702538493471 900099473.245809628076790757217328 -> 0
-mulx3403 multiply 81721.5803096185422787702538493471 900099473.245809628076790757217328 -> 73557551389502.7779979042453102926 Inexact Rounded
-powx3403 power 81721.5803096185422787702538493471 900099473 -> Infinity Overflow Inexact Rounded
-remx3403 remainder 81721.5803096185422787702538493471 900099473.245809628076790757217328 -> 81721.5803096185422787702538493471
-subx3403 subtract 81721.5803096185422787702538493471 900099473.245809628076790757217328 -> -900017751.665500009534511986963479 Inexact Rounded
-addx3404 add 3991.56734635183403814636354392163E-807 72.3239822255871305731314565069132 -> 72.3239822255871305731314565069132 Inexact Rounded
-comx3404 compare 3991.56734635183403814636354392163E-807 72.3239822255871305731314565069132 -> -1
-divx3404 divide 3991.56734635183403814636354392163E-807 72.3239822255871305731314565069132 -> 5.51900935695390664984598248115290E-806 Inexact Rounded
-dvix3404 divideint 3991.56734635183403814636354392163E-807 72.3239822255871305731314565069132 -> 0
-mulx3404 multiply 3991.56734635183403814636354392163E-807 72.3239822255871305731314565069132 -> 2.88686045809784034794803928177854E-802 Inexact Rounded
-powx3404 power 3991.56734635183403814636354392163E-807 72 -> 0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3404 remainder 3991.56734635183403814636354392163E-807 72.3239822255871305731314565069132 -> 3.99156734635183403814636354392163E-804
-subx3404 subtract 3991.56734635183403814636354392163E-807 72.3239822255871305731314565069132 -> -72.3239822255871305731314565069132 Inexact Rounded
-addx3405 add -66.3393308595957726456416979163306 5.08486573050459213864684589662559 -> -61.2544651290911805069948520197050 Inexact Rounded
-comx3405 compare -66.3393308595957726456416979163306 5.08486573050459213864684589662559 -> -1
-divx3405 divide -66.3393308595957726456416979163306 5.08486573050459213864684589662559 -> -13.0464272560079276694749924915850 Inexact Rounded
-dvix3405 divideint -66.3393308595957726456416979163306 5.08486573050459213864684589662559 -> -13
-mulx3405 multiply -66.3393308595957726456416979163306 5.08486573050459213864684589662559 -> -337.326590072564290813539036280205 Inexact Rounded
-powx3405 power -66.3393308595957726456416979163306 5 -> -1284858888.27285822259184896667990 Inexact Rounded
-remx3405 remainder -66.3393308595957726456416979163306 5.08486573050459213864684589662559 -> -0.23607636303607484323270126019793
-subx3405 subtract -66.3393308595957726456416979163306 5.08486573050459213864684589662559 -> -71.4241965901003647842885438129562 Inexact Rounded
-addx3406 add -393606.873703567753255097095208112E+111 -2124339550.86891093200758095660557 -> -3.93606873703567753255097095208112E+116 Inexact Rounded
-comx3406 compare -393606.873703567753255097095208112E+111 -2124339550.86891093200758095660557 -> -1
-divx3406 divide -393606.873703567753255097095208112E+111 -2124339550.86891093200758095660557 -> 1.85284350396137075010428736564737E+107 Inexact Rounded
-dvix3406 divideint -393606.873703567753255097095208112E+111 -2124339550.86891093200758095660557 -> NaN Division_impossible
-mulx3406 multiply -393606.873703567753255097095208112E+111 -2124339550.86891093200758095660557 -> 8.36154649302353269818801263275941E+125 Inexact Rounded
-powx3406 power -393606.873703567753255097095208112E+111 -2 -> 6.45467904123103560528919747688443E-234 Inexact Rounded
-remx3406 remainder -393606.873703567753255097095208112E+111 -2124339550.86891093200758095660557 -> NaN Division_impossible
-subx3406 subtract -393606.873703567753255097095208112E+111 -2124339550.86891093200758095660557 -> -3.93606873703567753255097095208112E+116 Inexact Rounded
-addx3407 add -019133598.609812524622150421584346 -858439846.628367734642622922030051 -> -877573445.238180259264773343614397
-comx3407 compare -019133598.609812524622150421584346 -858439846.628367734642622922030051 -> 1
-divx3407 divide -019133598.609812524622150421584346 -858439846.628367734642622922030051 -> 0.0222888053076312565797460650311070 Inexact Rounded
-dvix3407 divideint -019133598.609812524622150421584346 -858439846.628367734642622922030051 -> 0
-mulx3407 multiply -019133598.609812524622150421584346 -858439846.628367734642622922030051 -> 16425043456056213.7395191514029288 Inexact Rounded
-powx3407 power -019133598.609812524622150421584346 -858439847 -> -0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3407 remainder -019133598.609812524622150421584346 -858439846.628367734642622922030051 -> -19133598.609812524622150421584346
-subx3407 subtract -019133598.609812524622150421584346 -858439846.628367734642622922030051 -> 839306248.018555210020472500445705
-addx3408 add 465.351982159046525762715549761814 240444.975944666924657629172844780 -> 240910.327926825971183391888394542 Inexact Rounded
-comx3408 compare 465.351982159046525762715549761814 240444.975944666924657629172844780 -> -1
-divx3408 divide 465.351982159046525762715549761814 240444.975944666924657629172844780 -> 0.00193537827243326122782974132829095 Inexact Rounded
-dvix3408 divideint 465.351982159046525762715549761814 240444.975944666924657629172844780 -> 0
-mulx3408 multiply 465.351982159046525762715549761814 240444.975944666924657629172844780 -> 111891546.156035013780371395668674 Inexact Rounded
-powx3408 power 465.351982159046525762715549761814 240445 -> Infinity Overflow Inexact Rounded
-remx3408 remainder 465.351982159046525762715549761814 240444.975944666924657629172844780 -> 465.351982159046525762715549761814
-subx3408 subtract 465.351982159046525762715549761814 240444.975944666924657629172844780 -> -239979.623962507878131866457295018 Inexact Rounded
-addx3409 add 28066955004783.1076824222873384828 571699969.220753535758504907561016E-718 -> 28066955004783.1076824222873384828 Inexact Rounded
-comx3409 compare 28066955004783.1076824222873384828 571699969.220753535758504907561016E-718 -> 1
-divx3409 divide 28066955004783.1076824222873384828 571699969.220753535758504907561016E-718 -> 4.90938543219432390013656968123815E+722 Inexact Rounded
-dvix3409 divideint 28066955004783.1076824222873384828 571699969.220753535758504907561016E-718 -> NaN Division_impossible
-mulx3409 multiply 28066955004783.1076824222873384828 571699969.220753535758504907561016E-718 -> 1.60458773123547770690452195569223E-696 Inexact Rounded
-powx3409 power 28066955004783.1076824222873384828 6 -> 4.88845689938951583020171325568218E+80 Inexact Rounded
-remx3409 remainder 28066955004783.1076824222873384828 571699969.220753535758504907561016E-718 -> NaN Division_impossible
-subx3409 subtract 28066955004783.1076824222873384828 571699969.220753535758504907561016E-718 -> 28066955004783.1076824222873384828 Inexact Rounded
-addx3410 add 28275236927392.4960902824105246047 28212038.4825243127096613158419270E+422 -> 2.82120384825243127096613158419270E+429 Inexact Rounded
-comx3410 compare 28275236927392.4960902824105246047 28212038.4825243127096613158419270E+422 -> -1
-divx3410 divide 28275236927392.4960902824105246047 28212038.4825243127096613158419270E+422 -> 1.00224012330435927467559203688861E-416 Inexact Rounded
-dvix3410 divideint 28275236927392.4960902824105246047 28212038.4825243127096613158419270E+422 -> 0
-mulx3410 multiply 28275236927392.4960902824105246047 28212038.4825243127096613158419270E+422 -> 7.97702072298089605706798770013561E+442 Inexact Rounded
-powx3410 power 28275236927392.4960902824105246047 3 -> 2.26057415546622161347322061281516E+40 Inexact Rounded
-remx3410 remainder 28275236927392.4960902824105246047 28212038.4825243127096613158419270E+422 -> 28275236927392.4960902824105246047
-subx3410 subtract 28275236927392.4960902824105246047 28212038.4825243127096613158419270E+422 -> -2.82120384825243127096613158419270E+429 Inexact Rounded
-addx3411 add 11791.8644211874630234271801789996 -8.45457275930363860982261343159741 -> 11783.4098484281593848173575655680 Inexact Rounded
-comx3411 compare 11791.8644211874630234271801789996 -8.45457275930363860982261343159741 -> 1
-divx3411 divide 11791.8644211874630234271801789996 -8.45457275930363860982261343159741 -> -1394.73214754836418731335761858151 Inexact Rounded
-dvix3411 divideint 11791.8644211874630234271801789996 -8.45457275930363860982261343159741 -> -1394
-mulx3411 multiply 11791.8644211874630234271801789996 -8.45457275930363860982261343159741 -> -99695.1757167732926302533138186716 Inexact Rounded
-powx3411 power 11791.8644211874630234271801789996 -8 -> 2.67510099318723516565332928253711E-33 Inexact Rounded
-remx3411 remainder 11791.8644211874630234271801789996 -8.45457275930363860982261343159741 -> 6.18999471819080133445705535281046
-subx3411 subtract 11791.8644211874630234271801789996 -8.45457275930363860982261343159741 -> 11800.3189939467666620370027924312 Inexact Rounded
-addx3412 add 44.7085340739581668975502342787578 -9337.05408133023920640485556647937 -> -9292.34554725628103950730533220061 Inexact Rounded
-comx3412 compare 44.7085340739581668975502342787578 -9337.05408133023920640485556647937 -> 1
-divx3412 divide 44.7085340739581668975502342787578 -9337.05408133023920640485556647937 -> -0.00478829121953512281527242631775613 Inexact Rounded
-dvix3412 divideint 44.7085340739581668975502342787578 -9337.05408133023920640485556647937 -> -0
-mulx3412 multiply 44.7085340739581668975502342787578 -9337.05408133023920640485556647937 -> -417446.000545543168866158913077419 Inexact Rounded
-powx3412 power 44.7085340739581668975502342787578 -9337 -> 0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3412 remainder 44.7085340739581668975502342787578 -9337.05408133023920640485556647937 -> 44.7085340739581668975502342787578
-subx3412 subtract 44.7085340739581668975502342787578 -9337.05408133023920640485556647937 -> 9381.76261540419737330240580075813 Inexact Rounded
-addx3413 add 93354527428804.5458053295581965867E+576 -856525909852.318790321300941615314 -> 9.33545274288045458053295581965867E+589 Inexact Rounded
-comx3413 compare 93354527428804.5458053295581965867E+576 -856525909852.318790321300941615314 -> 1
-divx3413 divide 93354527428804.5458053295581965867E+576 -856525909852.318790321300941615314 -> -1.08992064752484400353231056271614E+578 Inexact Rounded
-dvix3413 divideint 93354527428804.5458053295581965867E+576 -856525909852.318790321300941615314 -> NaN Division_impossible
-mulx3413 multiply 93354527428804.5458053295581965867E+576 -856525909852.318790321300941615314 -> -7.99605715447900642683774360731254E+601 Inexact Rounded
-powx3413 power 93354527428804.5458053295581965867E+576 -9 -> 1.85687015691763406448005521221518E-5310 Inexact Rounded
-remx3413 remainder 93354527428804.5458053295581965867E+576 -856525909852.318790321300941615314 -> NaN Division_impossible
-subx3413 subtract 93354527428804.5458053295581965867E+576 -856525909852.318790321300941615314 -> 9.33545274288045458053295581965867E+589 Inexact Rounded
-addx3414 add -367399415798804503177950040443482 -54845683.9691776397285506712812754 -> -367399415798804503177950095289166 Inexact Rounded
-comx3414 compare -367399415798804503177950040443482 -54845683.9691776397285506712812754 -> -1
-divx3414 divide -367399415798804503177950040443482 -54845683.9691776397285506712812754 -> 6698784465980529140072174.30474769 Inexact Rounded
-dvix3414 divideint -367399415798804503177950040443482 -54845683.9691776397285506712812754 -> 6698784465980529140072174
-mulx3414 multiply -367399415798804503177950040443482 -54845683.9691776397285506712812754 -> 2.01502722493617222018040789291414E+40 Inexact Rounded
-powx3414 power -367399415798804503177950040443482 -54845684 -> 0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3414 remainder -367399415798804503177950040443482 -54845683.9691776397285506712812754 -> -16714095.6549657189177857892292804
-subx3414 subtract -367399415798804503177950040443482 -54845683.9691776397285506712812754 -> -367399415798804503177949985597798 Inexact Rounded
-addx3415 add -2.87155919781024108503670175443740 89529730130.6427881332776797193807 -> 89529730127.7712289354674386343440 Inexact Rounded
-comx3415 compare -2.87155919781024108503670175443740 89529730130.6427881332776797193807 -> -1
-divx3415 divide -2.87155919781024108503670175443740 89529730130.6427881332776797193807 -> -3.20738060264454013174835928754430E-11 Inexact Rounded
-dvix3415 divideint -2.87155919781024108503670175443740 89529730130.6427881332776797193807 -> -0
-mulx3415 multiply -2.87155919781024108503670175443740 89529730130.6427881332776797193807 -> -257089920034.115975469931085527642 Inexact Rounded
-powx3415 power -2.87155919781024108503670175443740 9 -> -13275.7774683251354527310820885737 Inexact Rounded
-remx3415 remainder -2.87155919781024108503670175443740 89529730130.6427881332776797193807 -> -2.87155919781024108503670175443740
-subx3415 subtract -2.87155919781024108503670175443740 89529730130.6427881332776797193807 -> -89529730133.5143473310879208044174 Inexact Rounded
-addx3416 add -010.693934338179479652178057279204E+188 26484.8887731973153745666514260684 -> -1.06939343381794796521780572792040E+189 Inexact Rounded
-comx3416 compare -010.693934338179479652178057279204E+188 26484.8887731973153745666514260684 -> -1
-divx3416 divide -010.693934338179479652178057279204E+188 26484.8887731973153745666514260684 -> -4.03774938598259547575707503087638E+184 Inexact Rounded
-dvix3416 divideint -010.693934338179479652178057279204E+188 26484.8887731973153745666514260684 -> NaN Division_impossible
-mulx3416 multiply -010.693934338179479652178057279204E+188 26484.8887731973153745666514260684 -> -2.83227661494558963558481633880647E+193 Inexact Rounded
-powx3416 power -010.693934338179479652178057279204E+188 26485 -> -Infinity Overflow Inexact Rounded
-remx3416 remainder -010.693934338179479652178057279204E+188 26484.8887731973153745666514260684 -> NaN Division_impossible
-subx3416 subtract -010.693934338179479652178057279204E+188 26484.8887731973153745666514260684 -> -1.06939343381794796521780572792040E+189 Inexact Rounded
-addx3417 add 611655569568.832698912762075889186 010182743219.475839030505966016982 -> 621838312788.308537943268041906168
-comx3417 compare 611655569568.832698912762075889186 010182743219.475839030505966016982 -> 1
-divx3417 divide 611655569568.832698912762075889186 010182743219.475839030505966016982 -> 60.0678575886074367081836436812959 Inexact Rounded
-dvix3417 divideint 611655569568.832698912762075889186 010182743219.475839030505966016982 -> 60
-mulx3417 multiply 611655569568.832698912762075889186 010182743219.475839030505966016982 -> 6228331603681663511826.60450280350 Inexact Rounded
-powx3417 power 611655569568.832698912762075889186 1 -> 611655569568.832698912762075889186
-remx3417 remainder 611655569568.832698912762075889186 010182743219.475839030505966016982 -> 690976400.282357082404114870266
-subx3417 subtract 611655569568.832698912762075889186 010182743219.475839030505966016982 -> 601472826349.356859882256109872204
-addx3418 add 3457947.39062863674882672518304442 -01.9995218868908849056866549811425 -> 3457945.39110674985794181949638944 Inexact Rounded
-comx3418 compare 3457947.39062863674882672518304442 -01.9995218868908849056866549811425 -> 1
-divx3418 divide 3457947.39062863674882672518304442 -01.9995218868908849056866549811425 -> -1729387.11663991852426428263230475 Inexact Rounded
-dvix3418 divideint 3457947.39062863674882672518304442 -01.9995218868908849056866549811425 -> -1729387
-mulx3418 multiply 3457947.39062863674882672518304442 -01.9995218868908849056866549811425 -> -6914241.49127918361259252956576654 Inexact Rounded
-powx3418 power 3457947.39062863674882672518304442 -2 -> 8.36302195229701913376802373659526E-14 Inexact Rounded
-remx3418 remainder 3457947.39062863674882672518304442 -01.9995218868908849056866549811425 -> 0.2332240699744359979851713353525
-subx3418 subtract 3457947.39062863674882672518304442 -01.9995218868908849056866549811425 -> 3457949.39015052363971163086969940 Inexact Rounded
-addx3419 add -53308666960535.7393391289364591513 -6527.00547629475578694521436764596E-442 -> -53308666960535.7393391289364591513 Inexact Rounded
-comx3419 compare -53308666960535.7393391289364591513 -6527.00547629475578694521436764596E-442 -> -1
-divx3419 divide -53308666960535.7393391289364591513 -6527.00547629475578694521436764596E-442 -> 8.16740037282731870883136714441204E+451 Inexact Rounded
-dvix3419 divideint -53308666960535.7393391289364591513 -6527.00547629475578694521436764596E-442 -> NaN Division_impossible
-mulx3419 multiply -53308666960535.7393391289364591513 -6527.00547629475578694521436764596E-442 -> 3.47945961185390084641156250100085E-425 Inexact Rounded
-powx3419 power -53308666960535.7393391289364591513 -7 -> -8.17363502380497033342380498988958E-97 Inexact Rounded
-remx3419 remainder -53308666960535.7393391289364591513 -6527.00547629475578694521436764596E-442 -> NaN Division_impossible
-subx3419 subtract -53308666960535.7393391289364591513 -6527.00547629475578694521436764596E-442 -> -53308666960535.7393391289364591513 Inexact Rounded
-addx3420 add -5568057.17870139549478277980540034 -407906443.141342175740471849723638 -> -413474500.320043571235254629529038 Inexact Rounded
-comx3420 compare -5568057.17870139549478277980540034 -407906443.141342175740471849723638 -> 1
-divx3420 divide -5568057.17870139549478277980540034 -407906443.141342175740471849723638 -> 0.0136503290701197094953429018013146 Inexact Rounded
-dvix3420 divideint -5568057.17870139549478277980540034 -407906443.141342175740471849723638 -> 0
-mulx3420 multiply -5568057.17870139549478277980540034 -407906443.141342175740471849723638 -> 2271246398971702.91169807728132089 Inexact Rounded
-powx3420 power -5568057.17870139549478277980540034 -407906443 -> -0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3420 remainder -5568057.17870139549478277980540034 -407906443.141342175740471849723638 -> -5568057.17870139549478277980540034
-subx3420 subtract -5568057.17870139549478277980540034 -407906443.141342175740471849723638 -> 402338385.962640780245689069918238 Inexact Rounded
-addx3421 add 9804385273.49533524416415189990857 84.1433929743544659553964804646569 -> 9804385357.63872821851861785530505 Inexact Rounded
-comx3421 compare 9804385273.49533524416415189990857 84.1433929743544659553964804646569 -> 1
-divx3421 divide 9804385273.49533524416415189990857 84.1433929743544659553964804646569 -> 116519965.821719977402398190558439 Inexact Rounded
-dvix3421 divideint 9804385273.49533524416415189990857 84.1433929743544659553964804646569 -> 116519965
-mulx3421 multiply 9804385273.49533524416415189990857 84.1433929743544659553964804646569 -> 824974242939.691780798621180901714 Inexact Rounded
-powx3421 power 9804385273.49533524416415189990857 84 -> 1.90244010779692739037080418507909E+839 Inexact Rounded
-remx3421 remainder 9804385273.49533524416415189990857 84.1433929743544659553964804646569 -> 69.1423069734476624350435642749915
-subx3421 subtract 9804385273.49533524416415189990857 84.1433929743544659553964804646569 -> 9804385189.35194226980968594451209 Inexact Rounded
-addx3422 add -5234910986592.18801727046580014273E-547 -5874220715892.91440069210512515154 -> -5874220715892.91440069210512515154 Inexact Rounded
-comx3422 compare -5234910986592.18801727046580014273E-547 -5874220715892.91440069210512515154 -> 1
-divx3422 divide -5234910986592.18801727046580014273E-547 -5874220715892.91440069210512515154 -> 8.91166886601477021757439826903776E-548 Inexact Rounded
-dvix3422 divideint -5234910986592.18801727046580014273E-547 -5874220715892.91440069210512515154 -> 0
-mulx3422 multiply -5234910986592.18801727046580014273E-547 -5874220715892.91440069210512515154 -> 3.07510225632952455144944282925583E-522 Inexact Rounded
-powx3422 power -5234910986592.18801727046580014273E-547 -6 -> 4.85896970703117149235935037271084E+3205 Inexact Rounded
-remx3422 remainder -5234910986592.18801727046580014273E-547 -5874220715892.91440069210512515154 -> -5.23491098659218801727046580014273E-535
-subx3422 subtract -5234910986592.18801727046580014273E-547 -5874220715892.91440069210512515154 -> 5874220715892.91440069210512515154 Inexact Rounded
-addx3423 add 698416560151955285929747633786867E-495 51754681.6784872628933218985216916E-266 -> 5.17546816784872628933218985216916E-259 Inexact Rounded
-comx3423 compare 698416560151955285929747633786867E-495 51754681.6784872628933218985216916E-266 -> -1
-divx3423 divide 698416560151955285929747633786867E-495 51754681.6784872628933218985216916E-266 -> 1.34947513442491971488363250398908E-204 Inexact Rounded
-dvix3423 divideint 698416560151955285929747633786867E-495 51754681.6784872628933218985216916E-266 -> 0
-mulx3423 multiply 698416560151955285929747633786867E-495 51754681.6784872628933218985216916E-266 -> 3.61463267496484976064271305679796E-721 Inexact Rounded
-powx3423 power 698416560151955285929747633786867E-495 5 -> 1.66177661007189430761396979787413E-2311 Inexact Rounded
-remx3423 remainder 698416560151955285929747633786867E-495 51754681.6784872628933218985216916E-266 -> 6.98416560151955285929747633786867E-463
-subx3423 subtract 698416560151955285929747633786867E-495 51754681.6784872628933218985216916E-266 -> -5.17546816784872628933218985216916E-259 Inexact Rounded
-addx3424 add 107635.497735316515080720330536027 -3972075.83989512668362609609006425E-605 -> 107635.497735316515080720330536027 Inexact Rounded
-comx3424 compare 107635.497735316515080720330536027 -3972075.83989512668362609609006425E-605 -> 1
-divx3424 divide 107635.497735316515080720330536027 -3972075.83989512668362609609006425E-605 -> -2.70980469844599888443309571235597E+603 Inexact Rounded
-dvix3424 divideint 107635.497735316515080720330536027 -3972075.83989512668362609609006425E-605 -> NaN Division_impossible
-mulx3424 multiply 107635.497735316515080720330536027 -3972075.83989512668362609609006425E-605 -> -4.27536360069537352698066408021773E-594 Inexact Rounded
-powx3424 power 107635.497735316515080720330536027 -4 -> 7.45037111502910487803432806334714E-21 Inexact Rounded
-remx3424 remainder 107635.497735316515080720330536027 -3972075.83989512668362609609006425E-605 -> NaN Division_impossible
-subx3424 subtract 107635.497735316515080720330536027 -3972075.83989512668362609609006425E-605 -> 107635.497735316515080720330536027 Inexact Rounded
-addx3425 add -32174291345686.5371446616670961807 79518863759385.5925052747867099091E+408 -> 7.95188637593855925052747867099091E+421 Inexact Rounded
-comx3425 compare -32174291345686.5371446616670961807 79518863759385.5925052747867099091E+408 -> -1
-divx3425 divide -32174291345686.5371446616670961807 79518863759385.5925052747867099091E+408 -> -4.04612060894658007715621807881076E-409 Inexact Rounded
-dvix3425 divideint -32174291345686.5371446616670961807 79518863759385.5925052747867099091E+408 -> -0
-mulx3425 multiply -32174291345686.5371446616670961807 79518863759385.5925052747867099091E+408 -> -2.55846309007242668513226814043593E+435 Inexact Rounded
-powx3425 power -32174291345686.5371446616670961807 8 -> 1.14834377656109143210058690590666E+108 Inexact Rounded
-remx3425 remainder -32174291345686.5371446616670961807 79518863759385.5925052747867099091E+408 -> -32174291345686.5371446616670961807
-subx3425 subtract -32174291345686.5371446616670961807 79518863759385.5925052747867099091E+408 -> -7.95188637593855925052747867099091E+421 Inexact Rounded
-addx3426 add -8151730494.53190523620899410544099E+688 -93173.0631474527142307644239919480E+900 -> -9.31730631474527142307644239919480E+904 Inexact Rounded
-comx3426 compare -8151730494.53190523620899410544099E+688 -93173.0631474527142307644239919480E+900 -> 1
-divx3426 divide -8151730494.53190523620899410544099E+688 -93173.0631474527142307644239919480E+900 -> 8.74902060655796717043678441884283E-208 Inexact Rounded
-dvix3426 divideint -8151730494.53190523620899410544099E+688 -93173.0631474527142307644239919480E+900 -> 0
-mulx3426 multiply -8151730494.53190523620899410544099E+688 -93173.0631474527142307644239919480E+900 -> 7.59521700128037149179751467730962E+1602 Inexact Rounded
-powx3426 power -8151730494.53190523620899410544099E+688 -9 -> -6.29146352774842448375275282183700E-6282 Inexact Rounded
-remx3426 remainder -8151730494.53190523620899410544099E+688 -93173.0631474527142307644239919480E+900 -> -8.15173049453190523620899410544099E+697
-subx3426 subtract -8151730494.53190523620899410544099E+688 -93173.0631474527142307644239919480E+900 -> 9.31730631474527142307644239919480E+904 Inexact Rounded
-addx3427 add 1.33649801345976199708341799505220 -56623.0530039528969825480755159562E+459 -> -5.66230530039528969825480755159562E+463 Inexact Rounded
-comx3427 compare 1.33649801345976199708341799505220 -56623.0530039528969825480755159562E+459 -> 1
-divx3427 divide 1.33649801345976199708341799505220 -56623.0530039528969825480755159562E+459 -> -2.36034255052700900395787131334608E-464 Inexact Rounded
-dvix3427 divideint 1.33649801345976199708341799505220 -56623.0530039528969825480755159562E+459 -> -0
-mulx3427 multiply 1.33649801345976199708341799505220 -56623.0530039528969825480755159562E+459 -> -7.56765978558098558928268129700052E+463 Inexact Rounded
-powx3427 power 1.33649801345976199708341799505220 -6 -> 0.175464835912284900180305028965188 Inexact Rounded
-remx3427 remainder 1.33649801345976199708341799505220 -56623.0530039528969825480755159562E+459 -> 1.33649801345976199708341799505220
-subx3427 subtract 1.33649801345976199708341799505220 -56623.0530039528969825480755159562E+459 -> 5.66230530039528969825480755159562E+463 Inexact Rounded
-addx3428 add 67762238162788.6551061476018185196 -6140.75837959248100352788853809376E-822 -> 67762238162788.6551061476018185196 Inexact Rounded
-comx3428 compare 67762238162788.6551061476018185196 -6140.75837959248100352788853809376E-822 -> 1
-divx3428 divide 67762238162788.6551061476018185196 -6140.75837959248100352788853809376E-822 -> -1.10348321777294157014941951870409E+832 Inexact Rounded
-dvix3428 divideint 67762238162788.6551061476018185196 -6140.75837959248100352788853809376E-822 -> NaN Division_impossible
-mulx3428 multiply 67762238162788.6551061476018185196 -6140.75837959248100352788853809376E-822 -> -4.16111531818085838717201828773857E-805 Inexact Rounded
-powx3428 power 67762238162788.6551061476018185196 -6 -> 1.03293631708006509074972764670281E-83 Inexact Rounded
-remx3428 remainder 67762238162788.6551061476018185196 -6140.75837959248100352788853809376E-822 -> NaN Division_impossible
-subx3428 subtract 67762238162788.6551061476018185196 -6140.75837959248100352788853809376E-822 -> 67762238162788.6551061476018185196 Inexact Rounded
-addx3429 add 4286562.76568866751577306056498271 6286.77291578497580015557979349893E+820 -> 6.28677291578497580015557979349893E+823 Inexact Rounded
-comx3429 compare 4286562.76568866751577306056498271 6286.77291578497580015557979349893E+820 -> -1
-divx3429 divide 4286562.76568866751577306056498271 6286.77291578497580015557979349893E+820 -> 6.81838333133660025740681459349372E-818 Inexact Rounded
-dvix3429 divideint 4286562.76568866751577306056498271 6286.77291578497580015557979349893E+820 -> 0
-mulx3429 multiply 4286562.76568866751577306056498271 6286.77291578497580015557979349893E+820 -> 2.69486466971438542975159893306219E+830 Inexact Rounded
-powx3429 power 4286562.76568866751577306056498271 6 -> 6.20376193064412081058181881805108E+39 Inexact Rounded
-remx3429 remainder 4286562.76568866751577306056498271 6286.77291578497580015557979349893E+820 -> 4286562.76568866751577306056498271
-subx3429 subtract 4286562.76568866751577306056498271 6286.77291578497580015557979349893E+820 -> -6.28677291578497580015557979349893E+823 Inexact Rounded
-addx3430 add -765782.827432642697305644096365566 67.1634368459576834692758114618652 -> -765715.663995796739622174820554104 Inexact Rounded
-comx3430 compare -765782.827432642697305644096365566 67.1634368459576834692758114618652 -> -1
-divx3430 divide -765782.827432642697305644096365566 67.1634368459576834692758114618652 -> -11401.7814363639478774761697650867 Inexact Rounded
-dvix3430 divideint -765782.827432642697305644096365566 67.1634368459576834692758114618652 -> -11401
-mulx3430 multiply -765782.827432642697305644096365566 67.1634368459576834692758114618652 -> -51432606.5679912088468256122315944 Inexact Rounded
-powx3430 power -765782.827432642697305644096365566 67 -> -1.71821200770749773595473594136582E+394 Inexact Rounded
-remx3430 remainder -765782.827432642697305644096365566 67.1634368459576834692758114618652 -> -52.4839518791480724305698888408548
-subx3430 subtract -765782.827432642697305644096365566 67.1634368459576834692758114618652 -> -765849.990869488654989113372177028 Inexact Rounded
-addx3431 add 46.2835931916106252756465724211276 59.2989237834093118332826617957791 -> 105.582516975019937108929234216907 Inexact Rounded
-comx3431 compare 46.2835931916106252756465724211276 59.2989237834093118332826617957791 -> -1
-divx3431 divide 46.2835931916106252756465724211276 59.2989237834093118332826617957791 -> 0.780513207299722975882416995140701 Inexact Rounded
-dvix3431 divideint 46.2835931916106252756465724211276 59.2989237834093118332826617957791 -> 0
-mulx3431 multiply 46.2835931916106252756465724211276 59.2989237834093118332826617957791 -> 2744.56726509164060561370653286614 Inexact Rounded
-powx3431 power 46.2835931916106252756465724211276 59 -> 1.82052645780601002671007943923993E+98 Inexact Rounded
-remx3431 remainder 46.2835931916106252756465724211276 59.2989237834093118332826617957791 -> 46.2835931916106252756465724211276
-subx3431 subtract 46.2835931916106252756465724211276 59.2989237834093118332826617957791 -> -13.0153305917986865576360893746515
-addx3432 add -3029555.82298840234029474459694644 857535844655004737373089601128532 -> 857535844655004737373089598098976 Inexact Rounded
-comx3432 compare -3029555.82298840234029474459694644 857535844655004737373089601128532 -> -1
-divx3432 divide -3029555.82298840234029474459694644 857535844655004737373089601128532 -> -3.53286202771759704502126811323937E-27 Inexact Rounded
-dvix3432 divideint -3029555.82298840234029474459694644 857535844655004737373089601128532 -> -0
-mulx3432 multiply -3029555.82298840234029474459694644 857535844655004737373089601128532 -> -2.59795271159584761928986181925721E+39 Inexact Rounded
-powx3432 power -3029555.82298840234029474459694644 9 -> -2.14986224790431302561340100746360E+58 Inexact Rounded
-remx3432 remainder -3029555.82298840234029474459694644 857535844655004737373089601128532 -> -3029555.82298840234029474459694644
-subx3432 subtract -3029555.82298840234029474459694644 857535844655004737373089601128532 -> -857535844655004737373089604158088 Inexact Rounded
-addx3433 add -0138466789523.10694176543700501945E-948 481026979918882487383654367924619 -> 481026979918882487383654367924619 Inexact Rounded
-comx3433 compare -0138466789523.10694176543700501945E-948 481026979918882487383654367924619 -> -1
-divx3433 divide -0138466789523.10694176543700501945E-948 481026979918882487383654367924619 -> -2.87856597038397207797777811199804E-970 Inexact Rounded
-dvix3433 divideint -0138466789523.10694176543700501945E-948 481026979918882487383654367924619 -> -0
-mulx3433 multiply -0138466789523.10694176543700501945E-948 481026979918882487383654367924619 -> -6.66062615833636908683785283687416E-905 Inexact Rounded
-powx3433 power -0138466789523.10694176543700501945E-948 5 -> -5.09012109092637525843636056746667E-4685 Inexact Rounded
-remx3433 remainder -0138466789523.10694176543700501945E-948 481026979918882487383654367924619 -> -1.3846678952310694176543700501945E-937
-subx3433 subtract -0138466789523.10694176543700501945E-948 481026979918882487383654367924619 -> -481026979918882487383654367924619 Inexact Rounded
-addx3434 add -9593566466.96690575714244442109870 -87632034347.4845477961976776833770E+769 -> -8.76320343474845477961976776833770E+779 Inexact Rounded
-comx3434 compare -9593566466.96690575714244442109870 -87632034347.4845477961976776833770E+769 -> 1
-divx3434 divide -9593566466.96690575714244442109870 -87632034347.4845477961976776833770E+769 -> 1.09475564939253134070730299863765E-770 Inexact Rounded
-dvix3434 divideint -9593566466.96690575714244442109870 -87632034347.4845477961976776833770E+769 -> 0
-mulx3434 multiply -9593566466.96690575714244442109870 -87632034347.4845477961976776833770E+769 -> 8.40703746148119867711463485065336E+789 Inexact Rounded
-powx3434 power -9593566466.96690575714244442109870 -9 -> -1.45271091841882960010964421066745E-90 Inexact Rounded
-remx3434 remainder -9593566466.96690575714244442109870 -87632034347.4845477961976776833770E+769 -> -9593566466.96690575714244442109870
-subx3434 subtract -9593566466.96690575714244442109870 -87632034347.4845477961976776833770E+769 -> 8.76320343474845477961976776833770E+779 Inexact Rounded
-addx3435 add -3189.30765477670526823106100241863E-898 565688889.355241946154894311253202E-466 -> 5.65688889355241946154894311253202E-458 Inexact Rounded
-comx3435 compare -3189.30765477670526823106100241863E-898 565688889.355241946154894311253202E-466 -> -1
-divx3435 divide -3189.30765477670526823106100241863E-898 565688889.355241946154894311253202E-466 -> -5.63791814686655486612569970629128E-438 Inexact Rounded
-dvix3435 divideint -3189.30765477670526823106100241863E-898 565688889.355241946154894311253202E-466 -> -0
-mulx3435 multiply -3189.30765477670526823106100241863E-898 565688889.355241946154894311253202E-466 -> -1.80415590504280580443565448126548E-1352 Inexact Rounded
-powx3435 power -3189.30765477670526823106100241863E-898 6 -> 1.05239431027683904514311527228736E-5367 Inexact Rounded
-remx3435 remainder -3189.30765477670526823106100241863E-898 565688889.355241946154894311253202E-466 -> -3.18930765477670526823106100241863E-895
-subx3435 subtract -3189.30765477670526823106100241863E-898 565688889.355241946154894311253202E-466 -> -5.65688889355241946154894311253202E-458 Inexact Rounded
-addx3436 add -17084552395.6714834680088150543965 -631925802672.685034379197328370812E+527 -> -6.31925802672685034379197328370812E+538 Inexact Rounded
-comx3436 compare -17084552395.6714834680088150543965 -631925802672.685034379197328370812E+527 -> 1
-divx3436 divide -17084552395.6714834680088150543965 -631925802672.685034379197328370812E+527 -> 2.70356936263934622050341328519534E-529 Inexact Rounded
-dvix3436 divideint -17084552395.6714834680088150543965 -631925802672.685034379197328370812E+527 -> 0
-mulx3436 multiply -17084552395.6714834680088150543965 -631925802672.685034379197328370812E+527 -> 1.07961694859382462346866817306769E+549 Inexact Rounded
-powx3436 power -17084552395.6714834680088150543965 -6 -> 4.02141014977177984123011868387622E-62 Inexact Rounded
-remx3436 remainder -17084552395.6714834680088150543965 -631925802672.685034379197328370812E+527 -> -17084552395.6714834680088150543965
-subx3436 subtract -17084552395.6714834680088150543965 -631925802672.685034379197328370812E+527 -> 6.31925802672685034379197328370812E+538 Inexact Rounded
-addx3437 add 034956830.349823306815911887469760 -61600816.0672274126966042956781665E-667 -> 34956830.3498233068159118874697600 Inexact Rounded
-comx3437 compare 034956830.349823306815911887469760 -61600816.0672274126966042956781665E-667 -> 1
-divx3437 divide 034956830.349823306815911887469760 -61600816.0672274126966042956781665E-667 -> -5.67473494371787737607169979602343E+666 Inexact Rounded
-dvix3437 divideint 034956830.349823306815911887469760 -61600816.0672274126966042956781665E-667 -> NaN Division_impossible
-mulx3437 multiply 034956830.349823306815911887469760 -61600816.0672274126966042956781665E-667 -> -2.15336927667273841617128781173293E-652 Inexact Rounded
-powx3437 power 034956830.349823306815911887469760 -6 -> 5.48034272566098493462169431762597E-46 Inexact Rounded
-remx3437 remainder 034956830.349823306815911887469760 -61600816.0672274126966042956781665E-667 -> NaN Division_impossible
-subx3437 subtract 034956830.349823306815911887469760 -61600816.0672274126966042956781665E-667 -> 34956830.3498233068159118874697600 Inexact Rounded
-addx3438 add -763.440067781256632695791981893608 19.9263811350611007833220620745413 -> -743.513686646195531912469919819067 Inexact Rounded
-comx3438 compare -763.440067781256632695791981893608 19.9263811350611007833220620745413 -> -1
-divx3438 divide -763.440067781256632695791981893608 19.9263811350611007833220620745413 -> -38.3130314835722766807703585435688 Inexact Rounded
-dvix3438 divideint -763.440067781256632695791981893608 19.9263811350611007833220620745413 -> -38
-mulx3438 multiply -763.440067781256632695791981893608 19.9263811350611007833220620745413 -> -15212.5977643862002585039364868883 Inexact Rounded
-powx3438 power -763.440067781256632695791981893608 20 -> 4.52375407727336769552481661250924E+57 Inexact Rounded
-remx3438 remainder -763.440067781256632695791981893608 19.9263811350611007833220620745413 -> -6.2375846489348029295536230610386
-subx3438 subtract -763.440067781256632695791981893608 19.9263811350611007833220620745413 -> -783.366448916317733479114043968149 Inexact Rounded
-addx3439 add -510472027868440667684575147556654E+789 834872378550801889983927148587909 -> -5.10472027868440667684575147556654E+821 Inexact Rounded
-comx3439 compare -510472027868440667684575147556654E+789 834872378550801889983927148587909 -> -1
-divx3439 divide -510472027868440667684575147556654E+789 834872378550801889983927148587909 -> -6.11437198047603754107526874071737E+788 Inexact Rounded
-dvix3439 divideint -510472027868440667684575147556654E+789 834872378550801889983927148587909 -> NaN Division_impossible
-mulx3439 multiply -510472027868440667684575147556654E+789 834872378550801889983927148587909 -> -4.26178996090176289115594057419892E+854 Inexact Rounded
-powx3439 power -510472027868440667684575147556654E+789 8 -> 4.61079266619522147262600755274182E+6573 Inexact Rounded
-remx3439 remainder -510472027868440667684575147556654E+789 834872378550801889983927148587909 -> NaN Division_impossible
-subx3439 subtract -510472027868440667684575147556654E+789 834872378550801889983927148587909 -> -5.10472027868440667684575147556654E+821 Inexact Rounded
-addx3440 add 070304761.560517086676993503034828E-094 -17773.7446959771077104057845273992E-761 -> 7.03047615605170866769935030348280E-87 Inexact Rounded
-comx3440 compare 070304761.560517086676993503034828E-094 -17773.7446959771077104057845273992E-761 -> 1
-divx3440 divide 070304761.560517086676993503034828E-094 -17773.7446959771077104057845273992E-761 -> -3.95554019499502537743883483402608E+670 Inexact Rounded
-dvix3440 divideint 070304761.560517086676993503034828E-094 -17773.7446959771077104057845273992E-761 -> NaN Division_impossible
-mulx3440 multiply 070304761.560517086676993503034828E-094 -17773.7446959771077104057845273992E-761 -> -1.24957888288817581538108991453732E-843 Inexact Rounded
-powx3440 power 070304761.560517086676993503034828E-094 -2 -> 2.02316135427631488479902919959627E+172 Inexact Rounded
-remx3440 remainder 070304761.560517086676993503034828E-094 -17773.7446959771077104057845273992E-761 -> NaN Division_impossible
-subx3440 subtract 070304761.560517086676993503034828E-094 -17773.7446959771077104057845273992E-761 -> 7.03047615605170866769935030348280E-87 Inexact Rounded
-addx3441 add -0970725697662.27605454336231195463 -4541.41897546697187157913886433474 -> -970725702203.695030010334183533769 Inexact Rounded
-comx3441 compare -0970725697662.27605454336231195463 -4541.41897546697187157913886433474 -> -1
-divx3441 divide -0970725697662.27605454336231195463 -4541.41897546697187157913886433474 -> 213749425.654447811698884007553614 Inexact Rounded
-dvix3441 divideint -0970725697662.27605454336231195463 -4541.41897546697187157913886433474 -> 213749425
-mulx3441 multiply -0970725697662.27605454336231195463 -4541.41897546697187157913886433474 -> 4408472103336875.21161867891724392 Inexact Rounded
-powx3441 power -0970725697662.27605454336231195463 -4541 -> -0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3441 remainder -0970725697662.27605454336231195463 -4541.41897546697187157913886433474 -> -2972.12171050214753770792631747550
-subx3441 subtract -0970725697662.27605454336231195463 -4541.41897546697187157913886433474 -> -970725693120.857079076390440375491 Inexact Rounded
-addx3442 add -808178238631844268316111259558675 -598400.265108644514211244980426520 -> -808178238631844268316111260157075 Inexact Rounded
-comx3442 compare -808178238631844268316111259558675 -598400.265108644514211244980426520 -> -1
-divx3442 divide -808178238631844268316111259558675 -598400.265108644514211244980426520 -> 1350564640015847635178945884.97836 Inexact Rounded
-dvix3442 divideint -808178238631844268316111259558675 -598400.265108644514211244980426520 -> 1350564640015847635178945884
-mulx3442 multiply -808178238631844268316111259558675 -598400.265108644514211244980426520 -> 4.83614072252332979731348423145208E+38 Inexact Rounded
-powx3442 power -808178238631844268316111259558675 -598400 -> 0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3442 remainder -808178238631844268316111259558675 -598400.265108644514211244980426520 -> -585452.097764536570956813681556320
-subx3442 subtract -808178238631844268316111259558675 -598400.265108644514211244980426520 -> -808178238631844268316111258960275 Inexact Rounded
-addx3443 add -9.90826595069053564311371766315200 -031.625916781307847864872329806646 -> -41.5341827319983835079860474697980 Rounded
-comx3443 compare -9.90826595069053564311371766315200 -031.625916781307847864872329806646 -> 1
-divx3443 divide -9.90826595069053564311371766315200 -031.625916781307847864872329806646 -> 0.313295770023233218639213140599856 Inexact Rounded
-dvix3443 divideint -9.90826595069053564311371766315200 -031.625916781307847864872329806646 -> 0
-mulx3443 multiply -9.90826595069053564311371766315200 -031.625916781307847864872329806646 -> 313.357994403604968250936036978086 Inexact Rounded
-powx3443 power -9.90826595069053564311371766315200 -32 -> 1.34299698259038003011439568004625E-32 Inexact Rounded
-remx3443 remainder -9.90826595069053564311371766315200 -031.625916781307847864872329806646 -> -9.90826595069053564311371766315200
-subx3443 subtract -9.90826595069053564311371766315200 -031.625916781307847864872329806646 -> 21.7176508306173122217586121434940 Rounded
-addx3444 add -196925.469891897719160698483752907 -41268.9975444533794067723958739778 -> -238194.467436351098567470879626885 Inexact Rounded
-comx3444 compare -196925.469891897719160698483752907 -41268.9975444533794067723958739778 -> -1
-divx3444 divide -196925.469891897719160698483752907 -41268.9975444533794067723958739778 -> 4.77175317088274715226553516820589 Inexact Rounded
-dvix3444 divideint -196925.469891897719160698483752907 -41268.9975444533794067723958739778 -> 4
-mulx3444 multiply -196925.469891897719160698483752907 -41268.9975444533794067723958739778 -> 8126916733.40905487026003135987472 Inexact Rounded
-powx3444 power -196925.469891897719160698483752907 -41269 -> -0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3444 remainder -196925.469891897719160698483752907 -41268.9975444533794067723958739778 -> -31849.4797140842015336089002569958
-subx3444 subtract -196925.469891897719160698483752907 -41268.9975444533794067723958739778 -> -155656.472347444339753926087878929 Inexact Rounded
-addx3445 add 421071135212152225162086005824310 1335320330.08964354845796510145246E-604 -> 421071135212152225162086005824310 Inexact Rounded
-comx3445 compare 421071135212152225162086005824310 1335320330.08964354845796510145246E-604 -> 1
-divx3445 divide 421071135212152225162086005824310 1335320330.08964354845796510145246E-604 -> 3.15333426537349744281860005497304E+627 Inexact Rounded
-dvix3445 divideint 421071135212152225162086005824310 1335320330.08964354845796510145246E-604 -> NaN Division_impossible
-mulx3445 multiply 421071135212152225162086005824310 1335320330.08964354845796510145246E-604 -> 5.62264847262712040027311932121460E-563 Inexact Rounded
-powx3445 power 421071135212152225162086005824310 1 -> 421071135212152225162086005824310
-remx3445 remainder 421071135212152225162086005824310 1335320330.08964354845796510145246E-604 -> NaN Division_impossible
-subx3445 subtract 421071135212152225162086005824310 1335320330.08964354845796510145246E-604 -> 421071135212152225162086005824310 Inexact Rounded
-addx3446 add 1249441.46421514282301182772247227 -0289848.71208912281976374705180836E-676 -> 1249441.46421514282301182772247227 Inexact Rounded
-comx3446 compare 1249441.46421514282301182772247227 -0289848.71208912281976374705180836E-676 -> 1
-divx3446 divide 1249441.46421514282301182772247227 -0289848.71208912281976374705180836E-676 -> -4.31066764178328992440635387255816E+676 Inexact Rounded
-dvix3446 divideint 1249441.46421514282301182772247227 -0289848.71208912281976374705180836E-676 -> NaN Division_impossible
-mulx3446 multiply 1249441.46421514282301182772247227 -0289848.71208912281976374705180836E-676 -> -3.62148999233506984566620611700349E-665 Inexact Rounded
-powx3446 power 1249441.46421514282301182772247227 -3 -> 5.12686942572191282348415024932322E-19 Inexact Rounded
-remx3446 remainder 1249441.46421514282301182772247227 -0289848.71208912281976374705180836E-676 -> NaN Division_impossible
-subx3446 subtract 1249441.46421514282301182772247227 -0289848.71208912281976374705180836E-676 -> 1249441.46421514282301182772247227 Inexact Rounded
-addx3447 add 74815000.4716875558358937279052903 -690425401708167622194241915195001E+891 -> -6.90425401708167622194241915195001E+923 Inexact Rounded
-comx3447 compare 74815000.4716875558358937279052903 -690425401708167622194241915195001E+891 -> 1
-divx3447 divide 74815000.4716875558358937279052903 -690425401708167622194241915195001E+891 -> -1.08360729901578455109968388309079E-916 Inexact Rounded
-dvix3447 divideint 74815000.4716875558358937279052903 -690425401708167622194241915195001E+891 -> -0
-mulx3447 multiply 74815000.4716875558358937279052903 -690425401708167622194241915195001E+891 -> -5.16541767544616308732028810026275E+931 Inexact Rounded
-powx3447 power 74815000.4716875558358937279052903 -7 -> 7.62218032252683815537906972439985E-56 Inexact Rounded
-remx3447 remainder 74815000.4716875558358937279052903 -690425401708167622194241915195001E+891 -> 74815000.4716875558358937279052903
-subx3447 subtract 74815000.4716875558358937279052903 -690425401708167622194241915195001E+891 -> 6.90425401708167622194241915195001E+923 Inexact Rounded
-addx3448 add -1683993.51210241555668790556759021 -72394384927344.8402585228267493374 -> -72394386611338.3523609383834372430 Inexact Rounded
-comx3448 compare -1683993.51210241555668790556759021 -72394384927344.8402585228267493374 -> 1
-divx3448 divide -1683993.51210241555668790556759021 -72394384927344.8402585228267493374 -> 2.32613829621244113284301004158794E-8 Inexact Rounded
-dvix3448 divideint -1683993.51210241555668790556759021 -72394384927344.8402585228267493374 -> 0
-mulx3448 multiply -1683993.51210241555668790556759021 -72394384927344.8402585228267493374 -> 121911674530293613615.441384822381 Inexact Rounded
-powx3448 power -1683993.51210241555668790556759021 -7 -> -2.60385683509956889000676113860292E-44 Inexact Rounded
-remx3448 remainder -1683993.51210241555668790556759021 -72394384927344.8402585228267493374 -> -1683993.51210241555668790556759021
-subx3448 subtract -1683993.51210241555668790556759021 -72394384927344.8402585228267493374 -> 72394383243351.3281561072700614318 Inexact Rounded
-addx3449 add -763.148530974741766171756970448158 517370.808956957601473642272664647 -> 516607.660425982859707470515694199 Inexact Rounded
-comx3449 compare -763.148530974741766171756970448158 517370.808956957601473642272664647 -> -1
-divx3449 divide -763.148530974741766171756970448158 517370.808956957601473642272664647 -> -0.00147505139014951946381155525173867 Inexact Rounded
-dvix3449 divideint -763.148530974741766171756970448158 517370.808956957601473642272664647 -> -0
-mulx3449 multiply -763.148530974741766171756970448158 517370.808956957601473642272664647 -> -394830772.824715962925351447322187 Inexact Rounded
-powx3449 power -763.148530974741766171756970448158 517371 -> -Infinity Overflow Inexact Rounded
-remx3449 remainder -763.148530974741766171756970448158 517370.808956957601473642272664647 -> -763.148530974741766171756970448158
-subx3449 subtract -763.148530974741766171756970448158 517370.808956957601473642272664647 -> -518133.957487932343239814029635095 Inexact Rounded
-addx3450 add -77.5841338812312523460591226178754 -927540422.641025050968830154578151E+524 -> -9.27540422641025050968830154578151E+532 Inexact Rounded
-comx3450 compare -77.5841338812312523460591226178754 -927540422.641025050968830154578151E+524 -> 1
-divx3450 divide -77.5841338812312523460591226178754 -927540422.641025050968830154578151E+524 -> 8.36450164191471769978415758342237E-532 Inexact Rounded
-dvix3450 divideint -77.5841338812312523460591226178754 -927540422.641025050968830154578151E+524 -> 0
-mulx3450 multiply -77.5841338812312523460591226178754 -927540422.641025050968830154578151E+524 -> 7.19624203304351070562409746475943E+534 Inexact Rounded
-powx3450 power -77.5841338812312523460591226178754 -9 -> -9.81846856873938549466341693997829E-18 Inexact Rounded
-remx3450 remainder -77.5841338812312523460591226178754 -927540422.641025050968830154578151E+524 -> -77.5841338812312523460591226178754
-subx3450 subtract -77.5841338812312523460591226178754 -927540422.641025050968830154578151E+524 -> 9.27540422641025050968830154578151E+532 Inexact Rounded
-addx3451 add 5176295309.89943746236102209837813 -129733.103628797477167908698565465 -> 5176165576.79580866488385418967956 Inexact Rounded
-comx3451 compare 5176295309.89943746236102209837813 -129733.103628797477167908698565465 -> 1
-divx3451 divide 5176295309.89943746236102209837813 -129733.103628797477167908698565465 -> -39899.5720067736855444089432524094 Inexact Rounded
-dvix3451 divideint 5176295309.89943746236102209837813 -129733.103628797477167908698565465 -> -39899
-mulx3451 multiply 5176295309.89943746236102209837813 -129733.103628797477167908698565465 -> -671536855852442.071887385512001794 Inexact Rounded
-powx3451 power 5176295309.89943746236102209837813 -129733 -> 0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3451 remainder 5176295309.89943746236102209837813 -129733.103628797477167908698565465 -> 74208.214046920838632934314641965
-subx3451 subtract 5176295309.89943746236102209837813 -129733.103628797477167908698565465 -> 5176425043.00306625983819000707670 Inexact Rounded
-addx3452 add 4471634841166.90197229286530307326E+172 31511104397.8671727003201890825879E-955 -> 4.47163484116690197229286530307326E+184 Inexact Rounded
-comx3452 compare 4471634841166.90197229286530307326E+172 31511104397.8671727003201890825879E-955 -> 1
-divx3452 divide 4471634841166.90197229286530307326E+172 31511104397.8671727003201890825879E-955 -> 1.41906636616314987705536737025932E+1129 Inexact Rounded
-dvix3452 divideint 4471634841166.90197229286530307326E+172 31511104397.8671727003201890825879E-955 -> NaN Division_impossible
-mulx3452 multiply 4471634841166.90197229286530307326E+172 31511104397.8671727003201890825879E-955 -> 1.40906152309150441010046222214810E-760 Inexact Rounded
-powx3452 power 4471634841166.90197229286530307326E+172 3 -> 8.94126556389673498386397569249516E+553 Inexact Rounded
-remx3452 remainder 4471634841166.90197229286530307326E+172 31511104397.8671727003201890825879E-955 -> NaN Division_impossible
-subx3452 subtract 4471634841166.90197229286530307326E+172 31511104397.8671727003201890825879E-955 -> 4.47163484116690197229286530307326E+184 Inexact Rounded
-addx3453 add -8189130.15945231049670285726774317 2.57912402871404325831670923864936E-366 -> -8189130.15945231049670285726774317 Inexact Rounded
-comx3453 compare -8189130.15945231049670285726774317 2.57912402871404325831670923864936E-366 -> -1
-divx3453 divide -8189130.15945231049670285726774317 2.57912402871404325831670923864936E-366 -> -3.17515949922556778343526099830093E+372 Inexact Rounded
-dvix3453 divideint -8189130.15945231049670285726774317 2.57912402871404325831670923864936E-366 -> NaN Division_impossible
-mulx3453 multiply -8189130.15945231049670285726774317 2.57912402871404325831670923864936E-366 -> -2.11207823685103185039979144161848E-359 Inexact Rounded
-powx3453 power -8189130.15945231049670285726774317 3 -> -549178241054875982731.000937875885 Inexact Rounded
-remx3453 remainder -8189130.15945231049670285726774317 2.57912402871404325831670923864936E-366 -> NaN Division_impossible
-subx3453 subtract -8189130.15945231049670285726774317 2.57912402871404325831670923864936E-366 -> -8189130.15945231049670285726774317 Inexact Rounded
-addx3454 add -254346232981353293392888785643245 -764.416902486152093758287929678445 -> -254346232981353293392888785644009 Inexact Rounded
-comx3454 compare -254346232981353293392888785643245 -764.416902486152093758287929678445 -> -1
-divx3454 divide -254346232981353293392888785643245 -764.416902486152093758287929678445 -> 332732350833857889204406356900.665 Inexact Rounded
-dvix3454 divideint -254346232981353293392888785643245 -764.416902486152093758287929678445 -> 332732350833857889204406356900
-mulx3454 multiply -254346232981353293392888785643245 -764.416902486152093758287929678445 -> 1.94426559574627262006307326336289E+35 Inexact Rounded
-powx3454 power -254346232981353293392888785643245 -764 -> 0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3454 remainder -254346232981353293392888785643245 -764.416902486152093758287929678445 -> -508.299323962538610580669092979500
-subx3454 subtract -254346232981353293392888785643245 -764.416902486152093758287929678445 -> -254346232981353293392888785642481 Inexact Rounded
-addx3455 add -2875.36745499544177964804277329726 -13187.8492045054802205691248267638 -> -16063.2166595009220002171676000611 Inexact Rounded
-comx3455 compare -2875.36745499544177964804277329726 -13187.8492045054802205691248267638 -> 1
-divx3455 divide -2875.36745499544177964804277329726 -13187.8492045054802205691248267638 -> 0.218031569091122520391599541575615 Inexact Rounded
-dvix3455 divideint -2875.36745499544177964804277329726 -13187.8492045054802205691248267638 -> 0
-mulx3455 multiply -2875.36745499544177964804277329726 -13187.8492045054802205691248267638 -> 37919912.4040225840727281633024665 Inexact Rounded
-powx3455 power -2875.36745499544177964804277329726 -13188 -> 0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3455 remainder -2875.36745499544177964804277329726 -13187.8492045054802205691248267638 -> -2875.36745499544177964804277329726
-subx3455 subtract -2875.36745499544177964804277329726 -13187.8492045054802205691248267638 -> 10312.4817495100384409210820534665 Inexact Rounded
-addx3456 add -7.26927570984219944693602140223103 0160883021541.32275286769110003971E-438 -> -7.26927570984219944693602140223103 Inexact Rounded
-comx3456 compare -7.26927570984219944693602140223103 0160883021541.32275286769110003971E-438 -> -1
-divx3456 divide -7.26927570984219944693602140223103 0160883021541.32275286769110003971E-438 -> -4.51836100553039917574557235275173E+427 Inexact Rounded
-dvix3456 divideint -7.26927570984219944693602140223103 0160883021541.32275286769110003971E-438 -> NaN Division_impossible
-mulx3456 multiply -7.26927570984219944693602140223103 0160883021541.32275286769110003971E-438 -> -1.16950304061635681891361504442479E-426 Inexact Rounded
-powx3456 power -7.26927570984219944693602140223103 2 -> 52.8423693457018126451998096211036 Inexact Rounded
-remx3456 remainder -7.26927570984219944693602140223103 0160883021541.32275286769110003971E-438 -> NaN Division_impossible
-subx3456 subtract -7.26927570984219944693602140223103 0160883021541.32275286769110003971E-438 -> -7.26927570984219944693602140223103 Inexact Rounded
-addx3457 add -28567151.6868762752241056540028515E+498 -4470.15455137546427645290210989675 -> -2.85671516868762752241056540028515E+505 Inexact Rounded
-comx3457 compare -28567151.6868762752241056540028515E+498 -4470.15455137546427645290210989675 -> -1
-divx3457 divide -28567151.6868762752241056540028515E+498 -4470.15455137546427645290210989675 -> 6.39064071690455919792707589054106E+501 Inexact Rounded
-dvix3457 divideint -28567151.6868762752241056540028515E+498 -4470.15455137546427645290210989675 -> NaN Division_impossible
-mulx3457 multiply -28567151.6868762752241056540028515E+498 -4470.15455137546427645290210989675 -> 1.27699583132923253605397736797000E+509 Inexact Rounded
-powx3457 power -28567151.6868762752241056540028515E+498 -4470 -> 0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3457 remainder -28567151.6868762752241056540028515E+498 -4470.15455137546427645290210989675 -> NaN Division_impossible
-subx3457 subtract -28567151.6868762752241056540028515E+498 -4470.15455137546427645290210989675 -> -2.85671516868762752241056540028515E+505 Inexact Rounded
-addx3458 add 7191753.79974136447257468282073718 81.3878426176038487948375777384429 -> 7191835.18758398207642347765831492 Inexact Rounded
-comx3458 compare 7191753.79974136447257468282073718 81.3878426176038487948375777384429 -> 1
-divx3458 divide 7191753.79974136447257468282073718 81.3878426176038487948375777384429 -> 88363.9812586188186733935569874100 Inexact Rounded
-dvix3458 divideint 7191753.79974136447257468282073718 81.3878426176038487948375777384429 -> 88363
-mulx3458 multiply 7191753.79974136447257468282073718 81.3878426176038487948375777384429 -> 585321326.397904638863485891524555 Inexact Rounded
-powx3458 power 7191753.79974136447257468282073718 81 -> 2.53290983138561482612557404148760E+555 Inexact Rounded
-remx3458 remainder 7191753.79974136447257468282073718 81.3878426176038487948375777384429 -> 79.8625220355815164499390351500273
-subx3458 subtract 7191753.79974136447257468282073718 81.3878426176038487948375777384429 -> 7191672.41189874686872588798315944 Inexact Rounded
-addx3459 add 502975804.069864536104621700404770 684.790028432074527960269515227243 -> 502976488.859892968179149660674285 Inexact Rounded
-comx3459 compare 502975804.069864536104621700404770 684.790028432074527960269515227243 -> 1
-divx3459 divide 502975804.069864536104621700404770 684.790028432074527960269515227243 -> 734496.390406706323899801641278933 Inexact Rounded
-dvix3459 divideint 502975804.069864536104621700404770 684.790028432074527960269515227243 -> 734496
-mulx3459 multiply 502975804.069864536104621700404770 684.790028432074527960269515227243 -> 344432815169.648082754214631086270 Inexact Rounded
-powx3459 power 502975804.069864536104621700404770 685 -> 3.62876716573623552761739177592677E+5960 Inexact Rounded
-remx3459 remainder 502975804.069864536104621700404770 684.790028432074527960269515227243 -> 267.346619523615915582548420925472
-subx3459 subtract 502975804.069864536104621700404770 684.790028432074527960269515227243 -> 502975119.279836104030093740135255 Inexact Rounded
-addx3460 add 1505368.42063731861590460453659570 -465242.678439951462767630022819105 -> 1040125.74219736715313697451377660 Inexact Rounded
-comx3460 compare 1505368.42063731861590460453659570 -465242.678439951462767630022819105 -> 1
-divx3460 divide 1505368.42063731861590460453659570 -465242.678439951462767630022819105 -> -3.23566278503319947059213001405065 Inexact Rounded
-dvix3460 divideint 1505368.42063731861590460453659570 -465242.678439951462767630022819105 -> -3
-mulx3460 multiply 1505368.42063731861590460453659570 -465242.678439951462767630022819105 -> -700361636056.225618266296899048765 Inexact Rounded
-powx3460 power 1505368.42063731861590460453659570 -465243 -> 0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3460 remainder 1505368.42063731861590460453659570 -465242.678439951462767630022819105 -> 109640.385317464227601714468138385
-subx3460 subtract 1505368.42063731861590460453659570 -465242.678439951462767630022819105 -> 1970611.09907727007867223455941481 Inexact Rounded
-addx3461 add 69225023.2850142784063416137144829 8584050.06648191798834819995325693 -> 77809073.3514961963946898136677398 Inexact Rounded
-comx3461 compare 69225023.2850142784063416137144829 8584050.06648191798834819995325693 -> 1
-divx3461 divide 69225023.2850142784063416137144829 8584050.06648191798834819995325693 -> 8.06437785764050431295652411163382 Inexact Rounded
-dvix3461 divideint 69225023.2850142784063416137144829 8584050.06648191798834819995325693 -> 8
-mulx3461 multiply 69225023.2850142784063416137144829 8584050.06648191798834819995325693 -> 594231065731939.137329770485497261 Inexact Rounded
-powx3461 power 69225023.2850142784063416137144829 8584050 -> Infinity Overflow Inexact Rounded
-remx3461 remainder 69225023.2850142784063416137144829 8584050.06648191798834819995325693 -> 552622.75315893449955601408842746
-subx3461 subtract 69225023.2850142784063416137144829 8584050.06648191798834819995325693 -> 60640973.2185323604179934137612260 Inexact Rounded
-addx3462 add -55669501853.7751006841940471339310E+614 061400538.186044693233816566977189 -> -5.56695018537751006841940471339310E+624 Inexact Rounded
-comx3462 compare -55669501853.7751006841940471339310E+614 061400538.186044693233816566977189 -> -1
-divx3462 divide -55669501853.7751006841940471339310E+614 061400538.186044693233816566977189 -> -9.06661464189378059067792554300676E+616 Inexact Rounded
-dvix3462 divideint -55669501853.7751006841940471339310E+614 061400538.186044693233816566977189 -> NaN Division_impossible
-mulx3462 multiply -55669501853.7751006841940471339310E+614 061400538.186044693233816566977189 -> -3.41813737437080390787865389703565E+632 Inexact Rounded
-powx3462 power -55669501853.7751006841940471339310E+614 61400538 -> Infinity Overflow Inexact Rounded
-remx3462 remainder -55669501853.7751006841940471339310E+614 061400538.186044693233816566977189 -> NaN Division_impossible
-subx3462 subtract -55669501853.7751006841940471339310E+614 061400538.186044693233816566977189 -> -5.56695018537751006841940471339310E+624 Inexact Rounded
-addx3463 add -527566.521273992424649346837337602E-408 -834662.599983953345718523807123972 -> -834662.599983953345718523807123972 Inexact Rounded
-comx3463 compare -527566.521273992424649346837337602E-408 -834662.599983953345718523807123972 -> 1
-divx3463 divide -527566.521273992424649346837337602E-408 -834662.599983953345718523807123972 -> 6.32071595497552015656909892339226E-409 Inexact Rounded
-dvix3463 divideint -527566.521273992424649346837337602E-408 -834662.599983953345718523807123972 -> 0
-mulx3463 multiply -527566.521273992424649346837337602E-408 -834662.599983953345718523807123972 -> 4.40340044311040151960763108019957E-397 Inexact Rounded
-powx3463 power -527566.521273992424649346837337602E-408 -834663 -> -Infinity Overflow Inexact Rounded
-remx3463 remainder -527566.521273992424649346837337602E-408 -834662.599983953345718523807123972 -> -5.27566521273992424649346837337602E-403
-subx3463 subtract -527566.521273992424649346837337602E-408 -834662.599983953345718523807123972 -> 834662.599983953345718523807123972 Inexact Rounded
-addx3464 add 69065510.0459653699418083455335366 694848643848212520086960886818157E-853 -> 69065510.0459653699418083455335366 Inexact Rounded
-comx3464 compare 69065510.0459653699418083455335366 694848643848212520086960886818157E-853 -> 1
-divx3464 divide 69065510.0459653699418083455335366 694848643848212520086960886818157E-853 -> 9.93964810285396646889830919492683E+827 Inexact Rounded
-dvix3464 divideint 69065510.0459653699418083455335366 694848643848212520086960886818157E-853 -> NaN Division_impossible
-mulx3464 multiply 69065510.0459653699418083455335366 694848643848212520086960886818157E-853 -> 4.79900759921241352562381181332720E-813 Inexact Rounded
-powx3464 power 69065510.0459653699418083455335366 7 -> 7.49598249763416483824919118973567E+54 Inexact Rounded
-remx3464 remainder 69065510.0459653699418083455335366 694848643848212520086960886818157E-853 -> NaN Division_impossible
-subx3464 subtract 69065510.0459653699418083455335366 694848643848212520086960886818157E-853 -> 69065510.0459653699418083455335366 Inexact Rounded
-addx3465 add -2921982.82411285505229122890041841 -72994.6523840298017471962569778803E-763 -> -2921982.82411285505229122890041841 Inexact Rounded
-comx3465 compare -2921982.82411285505229122890041841 -72994.6523840298017471962569778803E-763 -> -1
-divx3465 divide -2921982.82411285505229122890041841 -72994.6523840298017471962569778803E-763 -> 4.00300943792444663467732029501716E+764 Inexact Rounded
-dvix3465 divideint -2921982.82411285505229122890041841 -72994.6523840298017471962569778803E-763 -> NaN Division_impossible
-mulx3465 multiply -2921982.82411285505229122890041841 -72994.6523840298017471962569778803E-763 -> 2.13289120518223547921212412642411E-752 Inexact Rounded
-powx3465 power -2921982.82411285505229122890041841 -7 -> -5.49865394870631248479668782154131E-46 Inexact Rounded
-remx3465 remainder -2921982.82411285505229122890041841 -72994.6523840298017471962569778803E-763 -> NaN Division_impossible
-subx3465 subtract -2921982.82411285505229122890041841 -72994.6523840298017471962569778803E-763 -> -2921982.82411285505229122890041841 Inexact Rounded
-addx3466 add 4.51117459466491451401835756593793 3873385.19981811640063144338087230 -> 3873389.71099271106554595739922987 Inexact Rounded
-comx3466 compare 4.51117459466491451401835756593793 3873385.19981811640063144338087230 -> -1
-divx3466 divide 4.51117459466491451401835756593793 3873385.19981811640063144338087230 -> 0.00000116465942888322776753062580106351 Inexact Rounded
-dvix3466 divideint 4.51117459466491451401835756593793 3873385.19981811640063144338087230 -> 0
-mulx3466 multiply 4.51117459466491451401835756593793 3873385.19981811640063144338087230 -> 17473516.9087705701652062546164705 Inexact Rounded
-powx3466 power 4.51117459466491451401835756593793 3873385 -> Infinity Overflow Inexact Rounded
-remx3466 remainder 4.51117459466491451401835756593793 3873385.19981811640063144338087230 -> 4.51117459466491451401835756593793
-subx3466 subtract 4.51117459466491451401835756593793 3873385.19981811640063144338087230 -> -3873380.68864352173571692936251473 Inexact Rounded
-addx3467 add 49553763474698.8118661758811091120 36.1713861293896216593840817950781E+410 -> 3.61713861293896216593840817950781E+411 Inexact Rounded
-comx3467 compare 49553763474698.8118661758811091120 36.1713861293896216593840817950781E+410 -> -1
-divx3467 divide 49553763474698.8118661758811091120 36.1713861293896216593840817950781E+410 -> 1.36997137177543416190811827685231E-398 Inexact Rounded
-dvix3467 divideint 49553763474698.8118661758811091120 36.1713861293896216593840817950781E+410 -> 0
-mulx3467 multiply 49553763474698.8118661758811091120 36.1713861293896216593840817950781E+410 -> 1.79242831280777466554271332425735E+425 Inexact Rounded
-powx3467 power 49553763474698.8118661758811091120 4 -> 6.02985091099730236635954801474802E+54 Inexact Rounded
-remx3467 remainder 49553763474698.8118661758811091120 36.1713861293896216593840817950781E+410 -> 49553763474698.8118661758811091120
-subx3467 subtract 49553763474698.8118661758811091120 36.1713861293896216593840817950781E+410 -> -3.61713861293896216593840817950781E+411 Inexact Rounded
-addx3468 add 755985583344.379951506071499170749E+956 746921095569971477373643487285780 -> 7.55985583344379951506071499170749E+967 Inexact Rounded
-comx3468 compare 755985583344.379951506071499170749E+956 746921095569971477373643487285780 -> 1
-divx3468 divide 755985583344.379951506071499170749E+956 746921095569971477373643487285780 -> 1.01213580367212873025671916758669E+935 Inexact Rounded
-dvix3468 divideint 755985583344.379951506071499170749E+956 746921095569971477373643487285780 -> NaN Division_impossible
-mulx3468 multiply 755985583344.379951506071499170749E+956 746921095569971477373643487285780 -> 5.64661580146688255286933753616580E+1000 Inexact Rounded
-powx3468 power 755985583344.379951506071499170749E+956 7 -> 1.41121958516547725677142981375469E+6775 Inexact Rounded
-remx3468 remainder 755985583344.379951506071499170749E+956 746921095569971477373643487285780 -> NaN Division_impossible
-subx3468 subtract 755985583344.379951506071499170749E+956 746921095569971477373643487285780 -> 7.55985583344379951506071499170749E+967 Inexact Rounded
-addx3469 add -20101668541.7472260497594230105456 -395562148.345003931161532101109964 -> -20497230690.0922299809209551116556 Inexact Rounded
-comx3469 compare -20101668541.7472260497594230105456 -395562148.345003931161532101109964 -> -1
-divx3469 divide -20101668541.7472260497594230105456 -395562148.345003931161532101109964 -> 50.8179779735012053661447873666816 Inexact Rounded
-dvix3469 divideint -20101668541.7472260497594230105456 -395562148.345003931161532101109964 -> 50
-mulx3469 multiply -20101668541.7472260497594230105456 -395562148.345003931161532101109964 -> 7951459193692715079.09328760016914 Inexact Rounded
-powx3469 power -20101668541.7472260497594230105456 -395562148 -> 0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3469 remainder -20101668541.7472260497594230105456 -395562148.345003931161532101109964 -> -323561124.497029491682817955047400
-subx3469 subtract -20101668541.7472260497594230105456 -395562148.345003931161532101109964 -> -19706106393.4022221185978909094356 Inexact Rounded
-addx3470 add 5583903.18072100716072011264668631 460868914694.088387067451312500723 -> 460874498597.269108074612032613370 Inexact Rounded
-comx3470 compare 5583903.18072100716072011264668631 460868914694.088387067451312500723 -> -1
-divx3470 divide 5583903.18072100716072011264668631 460868914694.088387067451312500723 -> 0.0000121160334374633240168068405467307 Inexact Rounded
-dvix3470 divideint 5583903.18072100716072011264668631 460868914694.088387067451312500723 -> 0
-mulx3470 multiply 5583903.18072100716072011264668631 460868914694.088387067451312500723 -> 2573447398655758659.39475672905225 Inexact Rounded
-powx3470 power 5583903.18072100716072011264668631 5 -> 5.42861943589418603298670454702901E+33 Inexact Rounded
-remx3470 remainder 5583903.18072100716072011264668631 460868914694.088387067451312500723 -> 5583903.18072100716072011264668631
-subx3470 subtract 5583903.18072100716072011264668631 460868914694.088387067451312500723 -> -460863330790.907666060290592388076 Inexact Rounded
-addx3471 add -955638397975240685017992436116257E+020 -508580.148958769104511751975720470E+662 -> -5.08580148958769104511751975720470E+667 Inexact Rounded
-comx3471 compare -955638397975240685017992436116257E+020 -508580.148958769104511751975720470E+662 -> 1
-divx3471 divide -955638397975240685017992436116257E+020 -508580.148958769104511751975720470E+662 -> 1.87903204624039476408191264564568E-615 Inexact Rounded
-dvix3471 divideint -955638397975240685017992436116257E+020 -508580.148958769104511751975720470E+662 -> 0
-mulx3471 multiply -955638397975240685017992436116257E+020 -508580.148958769104511751975720470E+662 -> 4.86018718792967378985838739820108E+720 Inexact Rounded
-powx3471 power -955638397975240685017992436116257E+020 -5 -> -1.25467730420304189161768408462414E-265 Inexact Rounded
-remx3471 remainder -955638397975240685017992436116257E+020 -508580.148958769104511751975720470E+662 -> -9.55638397975240685017992436116257E+52
-subx3471 subtract -955638397975240685017992436116257E+020 -508580.148958769104511751975720470E+662 -> 5.08580148958769104511751975720470E+667 Inexact Rounded
-addx3472 add -136243796098020983814115584402407E+796 6589108083.99750311651581032447390 -> -1.36243796098020983814115584402407E+828 Inexact Rounded
-comx3472 compare -136243796098020983814115584402407E+796 6589108083.99750311651581032447390 -> -1
-divx3472 divide -136243796098020983814115584402407E+796 6589108083.99750311651581032447390 -> -2.06771226638255600634939371365920E+818 Inexact Rounded
-dvix3472 divideint -136243796098020983814115584402407E+796 6589108083.99750311651581032447390 -> NaN Division_impossible
-mulx3472 multiply -136243796098020983814115584402407E+796 6589108083.99750311651581032447390 -> -8.97725098263977535966921696143011E+837 Inexact Rounded
-powx3472 power -136243796098020983814115584402407E+796 7 -> -8.71399185551742199752832286984005E+5796 Inexact Rounded
-remx3472 remainder -136243796098020983814115584402407E+796 6589108083.99750311651581032447390 -> NaN Division_impossible
-subx3472 subtract -136243796098020983814115584402407E+796 6589108083.99750311651581032447390 -> -1.36243796098020983814115584402407E+828 Inexact Rounded
-addx3473 add -808498.482718304598213092937543934E+521 48005.1465097914355096301483788905 -> -8.08498482718304598213092937543934E+526 Inexact Rounded
-comx3473 compare -808498.482718304598213092937543934E+521 48005.1465097914355096301483788905 -> -1
-divx3473 divide -808498.482718304598213092937543934E+521 48005.1465097914355096301483788905 -> -1.68419126177106468565397017107736E+522 Inexact Rounded
-dvix3473 divideint -808498.482718304598213092937543934E+521 48005.1465097914355096301483788905 -> NaN Division_impossible
-mulx3473 multiply -808498.482718304598213092937543934E+521 48005.1465097914355096301483788905 -> -3.88120881158362912220132691803539E+531 Inexact Rounded
-powx3473 power -808498.482718304598213092937543934E+521 48005 -> -Infinity Overflow Inexact Rounded
-remx3473 remainder -808498.482718304598213092937543934E+521 48005.1465097914355096301483788905 -> NaN Division_impossible
-subx3473 subtract -808498.482718304598213092937543934E+521 48005.1465097914355096301483788905 -> -8.08498482718304598213092937543934E+526 Inexact Rounded
-addx3474 add -812.266340554281305985524813074211E+396 -3195.63111559114001594257448970812E+986 -> -3.19563111559114001594257448970812E+989 Inexact Rounded
-comx3474 compare -812.266340554281305985524813074211E+396 -3195.63111559114001594257448970812E+986 -> 1
-divx3474 divide -812.266340554281305985524813074211E+396 -3195.63111559114001594257448970812E+986 -> 2.54180257724779721448484781056040E-591 Inexact Rounded
-dvix3474 divideint -812.266340554281305985524813074211E+396 -3195.63111559114001594257448970812E+986 -> 0
-mulx3474 multiply -812.266340554281305985524813074211E+396 -3195.63111559114001594257448970812E+986 -> 2.59570359202261082537505332325404E+1388 Inexact Rounded
-powx3474 power -812.266340554281305985524813074211E+396 -3 -> -1.86596988030914616216741808216469E-1197 Inexact Rounded
-remx3474 remainder -812.266340554281305985524813074211E+396 -3195.63111559114001594257448970812E+986 -> -8.12266340554281305985524813074211E+398
-subx3474 subtract -812.266340554281305985524813074211E+396 -3195.63111559114001594257448970812E+986 -> 3.19563111559114001594257448970812E+989 Inexact Rounded
-addx3475 add -929889.720905183397678866648217793E+134 -280300190774.057595671079264841349 -> -9.29889720905183397678866648217793E+139 Inexact Rounded
-comx3475 compare -929889.720905183397678866648217793E+134 -280300190774.057595671079264841349 -> -1
-divx3475 divide -929889.720905183397678866648217793E+134 -280300190774.057595671079264841349 -> 3.31747801646964399331556971055197E+128 Inexact Rounded
-dvix3475 divideint -929889.720905183397678866648217793E+134 -280300190774.057595671079264841349 -> NaN Division_impossible
-mulx3475 multiply -929889.720905183397678866648217793E+134 -280300190774.057595671079264841349 -> 2.60648266168558079957349074609920E+151 Inexact Rounded
-powx3475 power -929889.720905183397678866648217793E+134 -3 -> -1.24367143370300189518778505830181E-420 Inexact Rounded
-remx3475 remainder -929889.720905183397678866648217793E+134 -280300190774.057595671079264841349 -> NaN Division_impossible
-subx3475 subtract -929889.720905183397678866648217793E+134 -280300190774.057595671079264841349 -> -9.29889720905183397678866648217793E+139 Inexact Rounded
-addx3476 add 83946.0157801953636255078996185540 492670373.235391665758701500314473 -> 492754319.251171861122327008214092 Inexact Rounded
-comx3476 compare 83946.0157801953636255078996185540 492670373.235391665758701500314473 -> -1
-divx3476 divide 83946.0157801953636255078996185540 492670373.235391665758701500314473 -> 0.000170389819117633485695890041185782 Inexact Rounded
-dvix3476 divideint 83946.0157801953636255078996185540 492670373.235391665758701500314473 -> 0
-mulx3476 multiply 83946.0157801953636255078996185540 492670373.235391665758701500314473 -> 41357714926052.9282985560380064649 Inexact Rounded
-powx3476 power 83946.0157801953636255078996185540 492670373 -> Infinity Overflow Inexact Rounded
-remx3476 remainder 83946.0157801953636255078996185540 492670373.235391665758701500314473 -> 83946.0157801953636255078996185540
-subx3476 subtract 83946.0157801953636255078996185540 492670373.235391665758701500314473 -> -492586427.219611470395075992414854 Inexact Rounded
-addx3477 add 7812758113817.99135851825223122508 3037492.36716301443309571918002123E-157 -> 7812758113817.99135851825223122508 Inexact Rounded
-comx3477 compare 7812758113817.99135851825223122508 3037492.36716301443309571918002123E-157 -> 1
-divx3477 divide 7812758113817.99135851825223122508 3037492.36716301443309571918002123E-157 -> 2.57210790001590171809512871857381E+163 Inexact Rounded
-dvix3477 divideint 7812758113817.99135851825223122508 3037492.36716301443309571918002123E-157 -> NaN Division_impossible
-mulx3477 multiply 7812758113817.99135851825223122508 3037492.36716301443309571918002123E-157 -> 2.37311931372130583136091717093935E-138 Inexact Rounded
-powx3477 power 7812758113817.99135851825223122508 3 -> 4.76884421816246896090414314934253E+38 Inexact Rounded
-remx3477 remainder 7812758113817.99135851825223122508 3037492.36716301443309571918002123E-157 -> NaN Division_impossible
-subx3477 subtract 7812758113817.99135851825223122508 3037492.36716301443309571918002123E-157 -> 7812758113817.99135851825223122508 Inexact Rounded
-addx3478 add 489191747.148674326757767356626016 01136942.1182277580093027768490545 -> 490328689.266902084767070133475071 Inexact Rounded
-comx3478 compare 489191747.148674326757767356626016 01136942.1182277580093027768490545 -> 1
-divx3478 divide 489191747.148674326757767356626016 01136942.1182277580093027768490545 -> 430.269702657525223124148258641358 Inexact Rounded
-dvix3478 divideint 489191747.148674326757767356626016 01136942.1182277580093027768490545 -> 430
-mulx3478 multiply 489191747.148674326757767356626016 01136942.1182277580093027768490545 -> 556182701222751.588454129518830550 Inexact Rounded
-powx3478 power 489191747.148674326757767356626016 1136942 -> Infinity Overflow Inexact Rounded
-remx3478 remainder 489191747.148674326757767356626016 01136942.1182277580093027768490545 -> 306636.3107383827575733115325810
-subx3478 subtract 489191747.148674326757767356626016 01136942.1182277580093027768490545 -> 488054805.030446568748464579776962 Inexact Rounded
-addx3479 add -599369540.373174482335865567937853E+289 -38288383205.6749439588707955585209 -> -5.99369540373174482335865567937853E+297 Inexact Rounded
-comx3479 compare -599369540.373174482335865567937853E+289 -38288383205.6749439588707955585209 -> -1
-divx3479 divide -599369540.373174482335865567937853E+289 -38288383205.6749439588707955585209 -> 1.56540833065089684132688143737586E+287 Inexact Rounded
-dvix3479 divideint -599369540.373174482335865567937853E+289 -38288383205.6749439588707955585209 -> NaN Division_impossible
-mulx3479 multiply -599369540.373174482335865567937853E+289 -38288383205.6749439588707955585209 -> 2.29488906436173641324091638963715E+308 Inexact Rounded
-powx3479 power -599369540.373174482335865567937853E+289 -4 -> 7.74856580646291366270329165540958E-1192 Inexact Rounded
-remx3479 remainder -599369540.373174482335865567937853E+289 -38288383205.6749439588707955585209 -> NaN Division_impossible
-subx3479 subtract -599369540.373174482335865567937853E+289 -38288383205.6749439588707955585209 -> -5.99369540373174482335865567937853E+297 Inexact Rounded
-addx3480 add -3376883870.85961692148022521960139 -65247489449.7334589731171980408284 -> -68624373320.5930758945974232604298 Inexact Rounded
-comx3480 compare -3376883870.85961692148022521960139 -65247489449.7334589731171980408284 -> 1
-divx3480 divide -3376883870.85961692148022521960139 -65247489449.7334589731171980408284 -> 0.0517550008335747813596332404664731 Inexact Rounded
-dvix3480 divideint -3376883870.85961692148022521960139 -65247489449.7334589731171980408284 -> 0
-mulx3480 multiply -3376883870.85961692148022521960139 -65247489449.7334589731171980408284 -> 220333194736887939420.719579906257 Inexact Rounded
-powx3480 power -3376883870.85961692148022521960139 -7 -> -1.99704163718361153125735756179280E-67 Inexact Rounded
-remx3480 remainder -3376883870.85961692148022521960139 -65247489449.7334589731171980408284 -> -3376883870.85961692148022521960139
-subx3480 subtract -3376883870.85961692148022521960139 -65247489449.7334589731171980408284 -> 61870605578.8738420516369728212270 Inexact Rounded
-addx3481 add 58.6776780370008364590621772421025 01.5925518866529044494309229975160 -> 60.2702299236537409084931002396185
-comx3481 compare 58.6776780370008364590621772421025 01.5925518866529044494309229975160 -> 1
-divx3481 divide 58.6776780370008364590621772421025 01.5925518866529044494309229975160 -> 36.8450651616286048437498576613622 Inexact Rounded
-dvix3481 divideint 58.6776780370008364590621772421025 01.5925518866529044494309229975160 -> 36
-mulx3481 multiply 58.6776780370008364590621772421025 01.5925518866529044494309229975160 -> 93.4472468622373769590900258060029 Inexact Rounded
-powx3481 power 58.6776780370008364590621772421025 2 -> 3443.06989981393033632008313505230 Inexact Rounded
-remx3481 remainder 58.6776780370008364590621772421025 01.5925518866529044494309229975160 -> 1.3458101174962762795489493315265
-subx3481 subtract 58.6776780370008364590621772421025 01.5925518866529044494309229975160 -> 57.0851261503479320096312542445865
-addx3482 add 4099616339.96249499552808575717579 290.795187361072489816791525139895 -> 4099616630.75768235660057557396732 Inexact Rounded
-comx3482 compare 4099616339.96249499552808575717579 290.795187361072489816791525139895 -> 1
-divx3482 divide 4099616339.96249499552808575717579 290.795187361072489816791525139895 -> 14097951.1289920788134209002390834 Inexact Rounded
-dvix3482 divideint 4099616339.96249499552808575717579 290.795187361072489816791525139895 -> 14097951
-mulx3482 multiply 4099616339.96249499552808575717579 290.795187361072489816791525139895 -> 1192148701687.90798437501397900174 Inexact Rounded
-powx3482 power 4099616339.96249499552808575717579 291 -> 2.03364757877800497409765979877258E+2797 Inexact Rounded
-remx3482 remainder 4099616339.96249499552808575717579 290.795187361072489816791525139895 -> 37.510275726642959858538282144855
-subx3482 subtract 4099616339.96249499552808575717579 290.795187361072489816791525139895 -> 4099616049.16730763445559594038426 Inexact Rounded
-addx3483 add 85870777.2282833141709970713739108 -2140392861153.69401346398478113715 -> -2140306990376.46573014981378406578 Inexact Rounded
-comx3483 compare 85870777.2282833141709970713739108 -2140392861153.69401346398478113715 -> 1
-divx3483 divide 85870777.2282833141709970713739108 -2140392861153.69401346398478113715 -> -0.0000401191663393971853092748263233128 Inexact Rounded
-dvix3483 divideint 85870777.2282833141709970713739108 -2140392861153.69401346398478113715 -> -0
-mulx3483 multiply 85870777.2282833141709970713739108 -2140392861153.69401346398478113715 -> -183797198561136797328.508878254848 Inexact Rounded
-powx3483 power 85870777.2282833141709970713739108 -2 -> 1.35615463448707573424578785973269E-16 Inexact Rounded
-remx3483 remainder 85870777.2282833141709970713739108 -2140392861153.69401346398478113715 -> 85870777.2282833141709970713739108
-subx3483 subtract 85870777.2282833141709970713739108 -2140392861153.69401346398478113715 -> 2140478731930.92229677815577820852 Inexact Rounded
-addx3484 add 20900.9693761555165742010339929779 -38.7546147649523793463260940289585 -> 20862.2147613905641948547078989489 Inexact Rounded
-comx3484 compare 20900.9693761555165742010339929779 -38.7546147649523793463260940289585 -> 1
-divx3484 divide 20900.9693761555165742010339929779 -38.7546147649523793463260940289585 -> -539.315627388386430188627412639767 Inexact Rounded
-dvix3484 divideint 20900.9693761555165742010339929779 -38.7546147649523793463260940289585 -> -539
-mulx3484 multiply 20900.9693761555165742010339929779 -38.7546147649523793463260940289585 -> -810009.016386974103738622793670566 Inexact Rounded
-powx3484 power 20900.9693761555165742010339929779 -39 -> 3.26219014701526335296044439989665E-169 Inexact Rounded
-remx3484 remainder 20900.9693761555165742010339929779 -38.7546147649523793463260940289585 -> 12.2320178461841065312693113692685
-subx3484 subtract 20900.9693761555165742010339929779 -38.7546147649523793463260940289585 -> 20939.7239909204689535473600870069 Inexact Rounded
-addx3485 add 448.827596155587910947511170319456 379130153.382794042652974596286062 -> 379130602.210390198240885543797232 Inexact Rounded
-comx3485 compare 448.827596155587910947511170319456 379130153.382794042652974596286062 -> -1
-divx3485 divide 448.827596155587910947511170319456 379130153.382794042652974596286062 -> 0.00000118383513458615061394140895596979 Inexact Rounded
-dvix3485 divideint 448.827596155587910947511170319456 379130153.382794042652974596286062 -> 0
-mulx3485 multiply 448.827596155587910947511170319456 379130153.382794042652974596286062 -> 170164075372.898786469094460692097 Inexact Rounded
-powx3485 power 448.827596155587910947511170319456 379130153 -> Infinity Overflow Inexact Rounded
-remx3485 remainder 448.827596155587910947511170319456 379130153.382794042652974596286062 -> 448.827596155587910947511170319456
-subx3485 subtract 448.827596155587910947511170319456 379130153.382794042652974596286062 -> -379129704.555197887065063648774892 Inexact Rounded
-addx3486 add 98.4134807921002817357000140482039 3404725543.77032945444654351546779 -> 3404725642.18381024654682525116780 Inexact Rounded
-comx3486 compare 98.4134807921002817357000140482039 3404725543.77032945444654351546779 -> -1
-divx3486 divide 98.4134807921002817357000140482039 3404725543.77032945444654351546779 -> 2.89049673833970863420201979291523E-8 Inexact Rounded
-dvix3486 divideint 98.4134807921002817357000140482039 3404725543.77032945444654351546779 -> 0
-mulx3486 multiply 98.4134807921002817357000140482039 3404725543.77032945444654351546779 -> 335070891904.214504811798212040413 Inexact Rounded
-powx3486 power 98.4134807921002817357000140482039 3 -> 953155.543384739667965055839894682 Inexact Rounded
-remx3486 remainder 98.4134807921002817357000140482039 3404725543.77032945444654351546779 -> 98.4134807921002817357000140482039
-subx3486 subtract 98.4134807921002817357000140482039 3404725543.77032945444654351546779 -> -3404725445.35684866234626177976778 Inexact Rounded
-addx3487 add 545746433.649359734136476718176330E-787 -5149957099709.12830072802043560650E-437 -> -5.14995709970912830072802043560650E-425 Inexact Rounded
-comx3487 compare 545746433.649359734136476718176330E-787 -5149957099709.12830072802043560650E-437 -> 1
-divx3487 divide 545746433.649359734136476718176330E-787 -5149957099709.12830072802043560650E-437 -> -1.05971064046375011086850722752614E-354 Inexact Rounded
-dvix3487 divideint 545746433.649359734136476718176330E-787 -5149957099709.12830072802043560650E-437 -> -0
-mulx3487 multiply 545746433.649359734136476718176330E-787 -5149957099709.12830072802043560650E-437 -> -2.81057072061345688074304873033317E-1203 Inexact Rounded
-powx3487 power 545746433.649359734136476718176330E-787 -5 -> 2.06559640092667166976186801348662E+3891 Inexact Rounded
-remx3487 remainder 545746433.649359734136476718176330E-787 -5149957099709.12830072802043560650E-437 -> 5.45746433649359734136476718176330E-779
-subx3487 subtract 545746433.649359734136476718176330E-787 -5149957099709.12830072802043560650E-437 -> 5.14995709970912830072802043560650E-425 Inexact Rounded
-addx3488 add 741304513547.273820525801608231737 0396.22823128272584928019323186355E-830 -> 741304513547.273820525801608231737 Inexact Rounded
-comx3488 compare 741304513547.273820525801608231737 0396.22823128272584928019323186355E-830 -> 1
-divx3488 divide 741304513547.273820525801608231737 0396.22823128272584928019323186355E-830 -> 1.87090281565101612623398174727653E+839 Inexact Rounded
-dvix3488 divideint 741304513547.273820525801608231737 0396.22823128272584928019323186355E-830 -> NaN Division_impossible
-mulx3488 multiply 741304513547.273820525801608231737 0396.22823128272584928019323186355E-830 -> 2.93725776244737788947443361076095E-816 Inexact Rounded
-powx3488 power 741304513547.273820525801608231737 4 -> 3.01985838652892073903194846668712E+47 Inexact Rounded
-remx3488 remainder 741304513547.273820525801608231737 0396.22823128272584928019323186355E-830 -> NaN Division_impossible
-subx3488 subtract 741304513547.273820525801608231737 0396.22823128272584928019323186355E-830 -> 741304513547.273820525801608231737 Inexact Rounded
-addx3489 add -706.145005094292315613907254240553 4739.82486195739758308735946332234 -> 4033.67985686310526747345220908179 Inexact Rounded
-comx3489 compare -706.145005094292315613907254240553 4739.82486195739758308735946332234 -> -1
-divx3489 divide -706.145005094292315613907254240553 4739.82486195739758308735946332234 -> -0.148981244172527671907534117771626 Inexact Rounded
-dvix3489 divideint -706.145005094292315613907254240553 4739.82486195739758308735946332234 -> -0
-mulx3489 multiply -706.145005094292315613907254240553 4739.82486195739758308735946332234 -> -3347003.65129295988793454267973464 Inexact Rounded
-powx3489 power -706.145005094292315613907254240553 4740 -> Infinity Overflow Inexact Rounded
-remx3489 remainder -706.145005094292315613907254240553 4739.82486195739758308735946332234 -> -706.145005094292315613907254240553
-subx3489 subtract -706.145005094292315613907254240553 4739.82486195739758308735946332234 -> -5445.96986705168989870126671756289 Inexact Rounded
-addx3490 add -769925786.823099083228795187975893 -31201.9980469760239870067820594790 -> -769956988.821146059252782194757952 Inexact Rounded
-comx3490 compare -769925786.823099083228795187975893 -31201.9980469760239870067820594790 -> -1
-divx3490 divide -769925786.823099083228795187975893 -31201.9980469760239870067820594790 -> 24675.5283319978698932292028650803 Inexact Rounded
-dvix3490 divideint -769925786.823099083228795187975893 -31201.9980469760239870067820594790 -> 24675
-mulx3490 multiply -769925786.823099083228795187975893 -31201.9980469760239870067820594790 -> 24023222896770.8161787236737395477 Inexact Rounded
-powx3490 power -769925786.823099083228795187975893 -31202 -> 0E-10031 Underflow Subnormal Inexact Rounded Clamped
-remx3490 remainder -769925786.823099083228795187975893 -31201.9980469760239870067820594790 -> -16485.0139656913494028406582486750
-subx3490 subtract -769925786.823099083228795187975893 -31201.9980469760239870067820594790 -> -769894584.825052107204808181193834 Inexact Rounded
-addx3491 add 84438610546049.7256507419289692857E+906 052604240766736461898844111790311 -> 8.44386105460497256507419289692857E+919 Inexact Rounded
-comx3491 compare 84438610546049.7256507419289692857E+906 052604240766736461898844111790311 -> 1
-divx3491 divide 84438610546049.7256507419289692857E+906 052604240766736461898844111790311 -> 1.60516736512701978695559003341922E+888 Inexact Rounded
-dvix3491 divideint 84438610546049.7256507419289692857E+906 052604240766736461898844111790311 -> NaN Division_impossible
-mulx3491 multiply 84438610546049.7256507419289692857E+906 052604240766736461898844111790311 -> 4.44182899917309231779837668210610E+951 Inexact Rounded
-powx3491 power 84438610546049.7256507419289692857E+906 5 -> 4.29245144719689283247342866988213E+4599 Inexact Rounded
-remx3491 remainder 84438610546049.7256507419289692857E+906 052604240766736461898844111790311 -> NaN Division_impossible
-subx3491 subtract 84438610546049.7256507419289692857E+906 052604240766736461898844111790311 -> 8.44386105460497256507419289692857E+919 Inexact Rounded
-addx3492 add 549760.911304725795164589619286514 165.160089615604924207754883953484 -> 549926.071394341400088797374170467 Inexact Rounded
-comx3492 compare 549760.911304725795164589619286514 165.160089615604924207754883953484 -> 1
-divx3492 divide 549760.911304725795164589619286514 165.160089615604924207754883953484 -> 3328.65471667062107598395714348089 Inexact Rounded
-dvix3492 divideint 549760.911304725795164589619286514 165.160089615604924207754883953484 -> 3328
-mulx3492 multiply 549760.911304725795164589619286514 165.160089615604924207754883953484 -> 90798561.3782451425861113694732484 Inexact Rounded
-powx3492 power 549760.911304725795164589619286514 165 -> 1.34488925442386544028875603347654E+947 Inexact Rounded
-remx3492 remainder 549760.911304725795164589619286514 165.160089615604924207754883953484 -> 108.133063992607401181365489319248
-subx3492 subtract 549760.911304725795164589619286514 165.160089615604924207754883953484 -> 549595.751215110190240381864402561 Inexact Rounded
-addx3493 add 3650514.18649737956855828939662794 08086721.4036886948248274834735629 -> 11737235.5901860743933857728701908 Inexact Rounded
-comx3493 compare 3650514.18649737956855828939662794 08086721.4036886948248274834735629 -> -1
-divx3493 divide 3650514.18649737956855828939662794 08086721.4036886948248274834735629 -> 0.451420792712387250865423208234291 Inexact Rounded
-dvix3493 divideint 3650514.18649737956855828939662794 08086721.4036886948248274834735629 -> 0
-mulx3493 multiply 3650514.18649737956855828939662794 08086721.4036886948248274834735629 -> 29520691206417.5831886752808745421 Inexact Rounded
-powx3493 power 3650514.18649737956855828939662794 8086721 -> Infinity Overflow Inexact Rounded
-remx3493 remainder 3650514.18649737956855828939662794 08086721.4036886948248274834735629 -> 3650514.18649737956855828939662794
-subx3493 subtract 3650514.18649737956855828939662794 08086721.4036886948248274834735629 -> -4436207.21719131525626919407693496
-addx3494 add 55067723881950.1346958179604099594 -8.90481481687182931431054785192083 -> 55067723881941.2298810010885806451 Inexact Rounded
-comx3494 compare 55067723881950.1346958179604099594 -8.90481481687182931431054785192083 -> 1
-divx3494 divide 55067723881950.1346958179604099594 -8.90481481687182931431054785192083 -> -6184039198391.19853088419484117054 Inexact Rounded
-dvix3494 divideint 55067723881950.1346958179604099594 -8.90481481687182931431054785192083 -> -6184039198391
-mulx3494 multiply 55067723881950.1346958179604099594 -8.90481481687182931431054785192083 -> -490367883555396.250365158593373279 Inexact Rounded
-powx3494 power 55067723881950.1346958179604099594 -9 -> 2.14746386538529270173788457887121E-124 Inexact Rounded
-remx3494 remainder 55067723881950.1346958179604099594 -8.90481481687182931431054785192083 -> 1.76788075918488693086347720461547
-subx3494 subtract 55067723881950.1346958179604099594 -8.90481481687182931431054785192083 -> 55067723881959.0395106348322392737 Inexact Rounded
-addx3495 add 868251123.413992653362860637541060E+019 5579665045.37858308541154858567656E+131 -> 5.57966504537858308541154858567656E+140 Inexact Rounded
-comx3495 compare 868251123.413992653362860637541060E+019 5579665045.37858308541154858567656E+131 -> -1
-divx3495 divide 868251123.413992653362860637541060E+019 5579665045.37858308541154858567656E+131 -> 1.55609900657590706155251902725027E-113 Inexact Rounded
-dvix3495 divideint 868251123.413992653362860637541060E+019 5579665045.37858308541154858567656E+131 -> 0
-mulx3495 multiply 868251123.413992653362860637541060E+019 5579665045.37858308541154858567656E+131 -> 4.84455044392374106106966779322483E+168 Inexact Rounded
-powx3495 power 868251123.413992653362860637541060E+019 6 -> 4.28422354304291884802690733853227E+167 Inexact Rounded
-remx3495 remainder 868251123.413992653362860637541060E+019 5579665045.37858308541154858567656E+131 -> 8682511234139926533628606375.41060
-subx3495 subtract 868251123.413992653362860637541060E+019 5579665045.37858308541154858567656E+131 -> -5.57966504537858308541154858567656E+140 Inexact Rounded
-addx3496 add -646.464431574014407536004990059069 -798.679560020414523841321724649594E-037 -> -646.464431574014407536004990059069 Inexact Rounded
-comx3496 compare -646.464431574014407536004990059069 -798.679560020414523841321724649594E-037 -> -1
-divx3496 divide -646.464431574014407536004990059069 -798.679560020414523841321724649594E-037 -> 8.09416521887063886613527228353543E+36 Inexact Rounded
-dvix3496 divideint -646.464431574014407536004990059069 -798.679560020414523841321724649594E-037 -> NaN Division_impossible
-mulx3496 multiply -646.464431574014407536004990059069 -798.679560020414523841321724649594E-037 -> 5.16317927778381197995451363439626E-32 Inexact Rounded
-powx3496 power -646.464431574014407536004990059069 -8 -> 3.27825641569860861774700548035691E-23 Inexact Rounded
-remx3496 remainder -646.464431574014407536004990059069 -798.679560020414523841321724649594E-037 -> NaN Division_impossible
-subx3496 subtract -646.464431574014407536004990059069 -798.679560020414523841321724649594E-037 -> -646.464431574014407536004990059069 Inexact Rounded
-addx3497 add 354.546679975219753598558273421556 -7039.46386812239015144581761752927E-448 -> 354.546679975219753598558273421556 Inexact Rounded
-comx3497 compare 354.546679975219753598558273421556 -7039.46386812239015144581761752927E-448 -> 1
-divx3497 divide 354.546679975219753598558273421556 -7039.46386812239015144581761752927E-448 -> -5.03655799102477192579414523352028E+446 Inexact Rounded
-dvix3497 divideint 354.546679975219753598558273421556 -7039.46386812239015144581761752927E-448 -> NaN Division_impossible
-mulx3497 multiply 354.546679975219753598558273421556 -7039.46386812239015144581761752927E-448 -> -2.49581854324831161267369292071408E-442 Inexact Rounded
-powx3497 power 354.546679975219753598558273421556 -7 -> 1.41999246365875617298270414304233E-18 Inexact Rounded
-remx3497 remainder 354.546679975219753598558273421556 -7039.46386812239015144581761752927E-448 -> NaN Division_impossible
-subx3497 subtract 354.546679975219753598558273421556 -7039.46386812239015144581761752927E-448 -> 354.546679975219753598558273421556 Inexact Rounded
-addx3498 add 91936087917435.5974889495278215874 -67080823344.8903392584327136082486E-757 -> 91936087917435.5974889495278215874 Inexact Rounded
-comx3498 compare 91936087917435.5974889495278215874 -67080823344.8903392584327136082486E-757 -> 1
-divx3498 divide 91936087917435.5974889495278215874 -67080823344.8903392584327136082486E-757 -> -1.37052712434303366569304688993783E+760 Inexact Rounded
-dvix3498 divideint 91936087917435.5974889495278215874 -67080823344.8903392584327136082486E-757 -> NaN Division_impossible
-mulx3498 multiply 91936087917435.5974889495278215874 -67080823344.8903392584327136082486E-757 -> -6.16714847260980448099292763939423E-733 Inexact Rounded
-powx3498 power 91936087917435.5974889495278215874 -7 -> 1.80134899939035708719659065082630E-98 Inexact Rounded
-remx3498 remainder 91936087917435.5974889495278215874 -67080823344.8903392584327136082486E-757 -> NaN Division_impossible
-subx3498 subtract 91936087917435.5974889495278215874 -67080823344.8903392584327136082486E-757 -> 91936087917435.5974889495278215874 Inexact Rounded
-addx3499 add -07345.6422518528556136521417259811E-600 41188325.7041362608934957584583381E-763 -> -7.34564225185285561365214172598110E-597 Inexact Rounded
-comx3499 compare -07345.6422518528556136521417259811E-600 41188325.7041362608934957584583381E-763 -> -1
-divx3499 divide -07345.6422518528556136521417259811E-600 41188325.7041362608934957584583381E-763 -> -1.78342822299163842247184303878022E+159 Inexact Rounded
-dvix3499 divideint -07345.6422518528556136521417259811E-600 41188325.7041362608934957584583381E-763 -> NaN Division_impossible
-mulx3499 multiply -07345.6422518528556136521417259811E-600 41188325.7041362608934957584583381E-763 -> -3.02554705575380338274126867655676E-1352 Inexact Rounded
-powx3499 power -07345.6422518528556136521417259811E-600 4 -> 2.91151541552217582082937236255996E-2385 Inexact Rounded
-remx3499 remainder -07345.6422518528556136521417259811E-600 41188325.7041362608934957584583381E-763 -> NaN Division_impossible
-subx3499 subtract -07345.6422518528556136521417259811E-600 41188325.7041362608934957584583381E-763 -> -7.34564225185285561365214172598110E-597 Inexact Rounded
-addx3500 add -253280724.939458021588167965038184 616988.426425908872398170896375634E+396 -> 6.16988426425908872398170896375634E+401 Inexact Rounded
-comx3500 compare -253280724.939458021588167965038184 616988.426425908872398170896375634E+396 -> -1
-divx3500 divide -253280724.939458021588167965038184 616988.426425908872398170896375634E+396 -> -4.10511306357337753351655511866170E-394 Inexact Rounded
-dvix3500 divideint -253280724.939458021588167965038184 616988.426425908872398170896375634E+396 -> -0
-mulx3500 multiply -253280724.939458021588167965038184 616988.426425908872398170896375634E+396 -> -1.56271275924409657991913620522315E+410 Inexact Rounded
-powx3500 power -253280724.939458021588167965038184 6 -> 2.64005420221406808782284459794424E+50 Inexact Rounded
-remx3500 remainder -253280724.939458021588167965038184 616988.426425908872398170896375634E+396 -> -253280724.939458021588167965038184
-subx3500 subtract -253280724.939458021588167965038184 616988.426425908872398170896375634E+396 -> -6.16988426425908872398170896375634E+401 Inexact Rounded
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/randoms.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/randoms.decTest
deleted file mode 100644
index f56630f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/randoms.decTest
+++ /dev/null
@@ -1,4030 +0,0 @@
-------------------------------------------------------------------------
--- randoms.decTest -- decimal random testcases                        --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-maxexponent: 999999999
-minexponent: -999999999
-precision:   9
-rounding:    half_up
-
--- Randomly generated testcases [31 Dec 2000, with results defined for
--- all cases [27 Oct 2001], and no trim/finish [9 Jun 2002]
-xadd001 add 905.67402 -202896611.E-780472620 -> 905.674020 Inexact Rounded
-xcom001 compare 905.67402 -202896611.E-780472620 -> 1
-xdiv001 divide 905.67402 -202896611.E-780472620 -> -4.46372177E+780472614 Inexact Rounded
-xdvi001 divideint 905.67402 -202896611.E-780472620 -> NaN Division_impossible
-xmul001 multiply 905.67402 -202896611.E-780472620 -> -1.83758189E-780472609 Inexact Rounded
-xpow001 power 905.67402 -2 -> 0.00000121914730 Inexact Rounded
-xrem001 remainder 905.67402 -202896611.E-780472620 -> NaN Division_impossible
-xsub001 subtract 905.67402 -202896611.E-780472620 -> 905.674020 Inexact Rounded
-xadd002 add 3915134.7 -597164907. -> -593249772 Inexact Rounded
-xcom002 compare 3915134.7 -597164907. -> 1
-xdiv002 divide 3915134.7 -597164907. -> -0.00655620358 Inexact Rounded
-xdvi002 divideint 3915134.7 -597164907. -> -0
-xmul002 multiply 3915134.7 -597164907. -> -2.33798105E+15 Inexact Rounded
-xpow002 power 3915134.7 -597164907 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem002 remainder 3915134.7 -597164907. -> 3915134.7
-xsub002 subtract 3915134.7 -597164907. -> 601080042 Inexact Rounded
-xadd003 add 309759261 62663.487 -> 309821924 Inexact Rounded
-xcom003 compare 309759261 62663.487 -> 1
-xdiv003 divide 309759261 62663.487 -> 4943.21775 Inexact Rounded
-xdvi003 divideint 309759261 62663.487 -> 4943
-xmul003 multiply 309759261 62663.487 -> 1.94105954E+13 Inexact Rounded
-xpow003 power 309759261 62663 -> 1.13679199E+532073 Inexact Rounded
-xrem003 remainder 309759261 62663.487 -> 13644.759
-xsub003 subtract 309759261 62663.487 -> 309696598 Inexact Rounded
-xadd004 add 3.93591888E-236595626 7242375.00 -> 7242375.00 Inexact Rounded
-xcom004 compare 3.93591888E-236595626 7242375.00 -> -1
-xdiv004 divide 3.93591888E-236595626 7242375.00 -> 5.43456930E-236595633 Inexact Rounded
-xdvi004 divideint 3.93591888E-236595626 7242375.00 -> 0
-xmul004 multiply 3.93591888E-236595626 7242375.00 -> 2.85054005E-236595619 Inexact Rounded
-xpow004 power 3.93591888E-236595626 7242375 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem004 remainder 3.93591888E-236595626 7242375.00 -> 3.93591888E-236595626
-xsub004 subtract 3.93591888E-236595626 7242375.00 -> -7242375.00 Inexact Rounded
-xadd005 add 323902.714 -608669.607E-657060568 -> 323902.714 Inexact Rounded
-xcom005 compare 323902.714 -608669.607E-657060568 -> 1
-xdiv005 divide 323902.714 -608669.607E-657060568 -> -5.32148657E+657060567 Inexact Rounded
-xdvi005 divideint 323902.714 -608669.607E-657060568 -> NaN Division_impossible
-xmul005 multiply 323902.714 -608669.607E-657060568 -> -1.97149738E-657060557 Inexact Rounded
-xpow005 power 323902.714 -6 -> 8.65989204E-34 Inexact Rounded
-xrem005 remainder 323902.714 -608669.607E-657060568 -> NaN Division_impossible
-xsub005 subtract 323902.714 -608669.607E-657060568 -> 323902.714 Inexact Rounded
-xadd006 add 5.11970092 -8807.22036 -> -8802.10066 Inexact Rounded
-xcom006 compare 5.11970092 -8807.22036 -> 1
-xdiv006 divide 5.11970092 -8807.22036 -> -0.000581307236 Inexact Rounded
-xdvi006 divideint 5.11970092 -8807.22036 -> -0
-xmul006 multiply 5.11970092 -8807.22036 -> -45090.3342 Inexact Rounded
-xpow006 power 5.11970092 -8807 -> 4.81819262E-6247 Inexact Rounded
-xrem006 remainder 5.11970092 -8807.22036 -> 5.11970092
-xsub006 subtract 5.11970092 -8807.22036 -> 8812.34006 Inexact Rounded
-xadd007 add -7.99874516 4561.83758 -> 4553.83883 Inexact Rounded
-xcom007 compare -7.99874516 4561.83758 -> -1
-xdiv007 divide -7.99874516 4561.83758 -> -0.00175340420 Inexact Rounded
-xdvi007 divideint -7.99874516 4561.83758 -> -0
-xmul007 multiply -7.99874516 4561.83758 -> -36488.9763 Inexact Rounded
-xpow007 power -7.99874516 4562 -> 3.85236199E+4119 Inexact Rounded
-xrem007 remainder -7.99874516 4561.83758 -> -7.99874516
-xsub007 subtract -7.99874516 4561.83758 -> -4569.83633 Inexact Rounded
-xadd008 add 297802878 -927206.324 -> 296875672 Inexact Rounded
-xcom008 compare 297802878 -927206.324 -> 1
-xdiv008 divide 297802878 -927206.324 -> -321.182967 Inexact Rounded
-xdvi008 divideint 297802878 -927206.324 -> -321
-xmul008 multiply 297802878 -927206.324 -> -2.76124712E+14 Inexact Rounded
-xpow008 power 297802878 -927206 -> 1.94602810E-7857078 Inexact Rounded
-xrem008 remainder 297802878 -927206.324 -> 169647.996
-xsub008 subtract 297802878 -927206.324 -> 298730084 Inexact Rounded
-xadd009 add -766.651824 31300.3619 -> 30533.7101 Inexact Rounded
-xcom009 compare -766.651824 31300.3619 -> -1
-xdiv009 divide -766.651824 31300.3619 -> -0.0244933853 Inexact Rounded
-xdvi009 divideint -766.651824 31300.3619 -> -0
-xmul009 multiply -766.651824 31300.3619 -> -23996479.5 Inexact Rounded
-xpow009 power -766.651824 31300 -> 8.37189011E+90287 Inexact Rounded
-xrem009 remainder -766.651824 31300.3619 -> -766.651824
-xsub009 subtract -766.651824 31300.3619 -> -32067.0137 Inexact Rounded
-xadd010 add -56746.8689E+934981942 471002521. -> -5.67468689E+934981946 Inexact Rounded
-xcom010 compare -56746.8689E+934981942 471002521. -> -1
-xdiv010 divide -56746.8689E+934981942 471002521. -> -1.20481030E+934981938 Inexact Rounded
-xdvi010 divideint -56746.8689E+934981942 471002521. -> NaN Division_impossible
-xmul010 multiply -56746.8689E+934981942 471002521. -> -2.67279183E+934981955 Inexact Rounded
-xpow010 power -56746.8689E+934981942 471002521 -> -Infinity Overflow Inexact Rounded
-xrem010 remainder -56746.8689E+934981942 471002521. -> NaN Division_impossible
-xsub010 subtract -56746.8689E+934981942 471002521. -> -5.67468689E+934981946 Inexact Rounded
-xadd011 add 456417160 -41346.1024 -> 456375814 Inexact Rounded
-xcom011 compare 456417160 -41346.1024 -> 1
-xdiv011 divide 456417160 -41346.1024 -> -11038.9404 Inexact Rounded
-xdvi011 divideint 456417160 -41346.1024 -> -11038
-xmul011 multiply 456417160 -41346.1024 -> -1.88710706E+13 Inexact Rounded
-xpow011 power 456417160 -41346 -> 1.04766863E-358030 Inexact Rounded
-xrem011 remainder 456417160 -41346.1024 -> 38881.7088
-xsub011 subtract 456417160 -41346.1024 -> 456458506 Inexact Rounded
-xadd012 add 102895.722 -2.62214826 -> 102893.100 Inexact Rounded
-xcom012 compare 102895.722 -2.62214826 -> 1
-xdiv012 divide 102895.722 -2.62214826 -> -39241.0008 Inexact Rounded
-xdvi012 divideint 102895.722 -2.62214826 -> -39241
-xmul012 multiply 102895.722 -2.62214826 -> -269807.838 Inexact Rounded
-xpow012 power 102895.722 -3 -> 9.17926786E-16 Inexact Rounded
-xrem012 remainder 102895.722 -2.62214826 -> 0.00212934
-xsub012 subtract 102895.722 -2.62214826 -> 102898.344 Inexact Rounded
-xadd013 add 61.3033331E+157644141 -567740.918E-893439456 -> 6.13033331E+157644142 Inexact Rounded
-xcom013 compare 61.3033331E+157644141 -567740.918E-893439456 -> 1
-xdiv013 divide 61.3033331E+157644141 -567740.918E-893439456 -> -Infinity Inexact Overflow Rounded
-xdvi013 divideint 61.3033331E+157644141 -567740.918E-893439456 -> NaN Division_impossible
-xmul013 multiply 61.3033331E+157644141 -567740.918E-893439456 -> -3.48044106E-735795308 Inexact Rounded
-xpow013 power 61.3033331E+157644141 -6 -> 1.88406322E-945864857 Inexact Rounded
-xrem013 remainder 61.3033331E+157644141 -567740.918E-893439456 -> NaN Division_impossible
-xsub013 subtract 61.3033331E+157644141 -567740.918E-893439456 -> 6.13033331E+157644142 Inexact Rounded
-xadd014 add 80223.3897 73921.0383E-467772675 -> 80223.3897 Inexact Rounded
-xcom014 compare 80223.3897 73921.0383E-467772675 -> 1
-xdiv014 divide 80223.3897 73921.0383E-467772675 -> 1.08525789E+467772675 Inexact Rounded
-xdvi014 divideint 80223.3897 73921.0383E-467772675 -> NaN Division_impossible
-xmul014 multiply 80223.3897 73921.0383E-467772675 -> 5.93019626E-467772666 Inexact Rounded
-xpow014 power 80223.3897 7 -> 2.13848919E+34 Inexact Rounded
-xrem014 remainder 80223.3897 73921.0383E-467772675 -> NaN Division_impossible
-xsub014 subtract 80223.3897 73921.0383E-467772675 -> 80223.3897 Inexact Rounded
-xadd015 add -654645.954 -9.12535752 -> -654655.079 Inexact Rounded
-xcom015 compare -654645.954 -9.12535752 -> -1
-xdiv015 divide -654645.954 -9.12535752 -> 71739.2116 Inexact Rounded
-xdvi015 divideint -654645.954 -9.12535752 -> 71739
-xmul015 multiply -654645.954 -9.12535752 -> 5973878.38 Inexact Rounded
-xpow015 power -654645.954 -9 -> -4.52836690E-53 Inexact Rounded
-xrem015 remainder -654645.954 -9.12535752 -> -1.93087272
-xsub015 subtract -654645.954 -9.12535752 -> -654636.829 Inexact Rounded
-xadd016 add 63.1917772E-706014634 -7.56253257E-138579234 -> -7.56253257E-138579234 Inexact Rounded
-xcom016 compare 63.1917772E-706014634 -7.56253257E-138579234 -> 1
-xdiv016 divide 63.1917772E-706014634 -7.56253257E-138579234 -> -8.35590149E-567435400 Inexact Rounded
-xdvi016 divideint 63.1917772E-706014634 -7.56253257E-138579234 -> -0
-xmul016 multiply 63.1917772E-706014634 -7.56253257E-138579234 -> -4.77889873E-844593866 Inexact Rounded
-xpow016 power 63.1917772E-706014634 -8 -> Infinity Overflow Inexact Rounded
-xrem016 remainder 63.1917772E-706014634 -7.56253257E-138579234 -> 6.31917772E-706014633
-xsub016 subtract 63.1917772E-706014634 -7.56253257E-138579234 -> 7.56253257E-138579234 Inexact Rounded
-xadd017 add -39674.7190 2490607.78 -> 2450933.06 Inexact Rounded
-xcom017 compare -39674.7190 2490607.78 -> -1
-xdiv017 divide -39674.7190 2490607.78 -> -0.0159297338 Inexact Rounded
-xdvi017 divideint -39674.7190 2490607.78 -> -0
-xmul017 multiply -39674.7190 2490607.78 -> -9.88141638E+10 Inexact Rounded
-xpow017 power -39674.7190 2490608 -> 2.55032329E+11453095 Inexact Rounded
-xrem017 remainder -39674.7190 2490607.78 -> -39674.7190
-xsub017 subtract -39674.7190 2490607.78 -> -2530282.50 Inexact Rounded
-xadd018 add -3364.59737E-600363681 896487.451 -> 896487.451 Inexact Rounded
-xcom018 compare -3364.59737E-600363681 896487.451 -> -1
-xdiv018 divide -3364.59737E-600363681 896487.451 -> -3.75308920E-600363684 Inexact Rounded
-xdvi018 divideint -3364.59737E-600363681 896487.451 -> -0
-xmul018 multiply -3364.59737E-600363681 896487.451 -> -3.01631932E-600363672 Inexact Rounded
-xpow018 power -3364.59737E-600363681 896487 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem018 remainder -3364.59737E-600363681 896487.451 -> -3.36459737E-600363678
-xsub018 subtract -3364.59737E-600363681 896487.451 -> -896487.451 Inexact Rounded
-xadd019 add -64138.0578 31759011.3E+697488342 -> 3.17590113E+697488349 Inexact Rounded
-xcom019 compare -64138.0578 31759011.3E+697488342 -> -1
-xdiv019 divide -64138.0578 31759011.3E+697488342 -> -2.01952313E-697488345 Inexact Rounded
-xdvi019 divideint -64138.0578 31759011.3E+697488342 -> -0
-xmul019 multiply -64138.0578 31759011.3E+697488342 -> -2.03696130E+697488354 Inexact Rounded
-xpow019 power -64138.0578 3 -> -2.63844116E+14 Inexact Rounded
-xrem019 remainder -64138.0578 31759011.3E+697488342 -> -64138.0578
-xsub019 subtract -64138.0578 31759011.3E+697488342 -> -3.17590113E+697488349 Inexact Rounded
-xadd020 add 61399.8527 -64344484.5 -> -64283084.6 Inexact Rounded
-xcom020 compare 61399.8527 -64344484.5 -> 1
-xdiv020 divide 61399.8527 -64344484.5 -> -0.000954236454 Inexact Rounded
-xdvi020 divideint 61399.8527 -64344484.5 -> -0
-xmul020 multiply 61399.8527 -64344484.5 -> -3.95074187E+12 Inexact Rounded
-xpow020 power 61399.8527 -64344485 -> 1.27378842E-308092161 Inexact Rounded
-xrem020 remainder 61399.8527 -64344484.5 -> 61399.8527
-xsub020 subtract 61399.8527 -64344484.5 -> 64405884.4 Inexact Rounded
-xadd021 add -722960.204 -26154599.8 -> -26877560.0 Inexact Rounded
-xcom021 compare -722960.204 -26154599.8 -> 1
-xdiv021 divide -722960.204 -26154599.8 -> 0.0276417995 Inexact Rounded
-xdvi021 divideint -722960.204 -26154599.8 -> 0
-xmul021 multiply -722960.204 -26154599.8 -> 1.89087348E+13 Inexact Rounded
-xpow021 power -722960.204 -26154600 -> 5.34236139E-153242794 Inexact Rounded
-xrem021 remainder -722960.204 -26154599.8 -> -722960.204
-xsub021 subtract -722960.204 -26154599.8 -> 25431639.6 Inexact Rounded
-xadd022 add 9.47109959E+230565093 73354723.2 -> 9.47109959E+230565093 Inexact Rounded
-xcom022 compare 9.47109959E+230565093 73354723.2 -> 1
-xdiv022 divide 9.47109959E+230565093 73354723.2 -> 1.29113698E+230565086 Inexact Rounded
-xdvi022 divideint 9.47109959E+230565093 73354723.2 -> NaN Division_impossible
-xmul022 multiply 9.47109959E+230565093 73354723.2 -> 6.94749889E+230565101 Inexact Rounded
-xpow022 power 9.47109959E+230565093 73354723 -> Infinity Overflow Inexact Rounded
-xrem022 remainder 9.47109959E+230565093 73354723.2 -> NaN Division_impossible
-xsub022 subtract 9.47109959E+230565093 73354723.2 -> 9.47109959E+230565093 Inexact Rounded
-xadd023 add 43.7456245 547441956. -> 547442000 Inexact Rounded
-xcom023 compare 43.7456245 547441956. -> -1
-xdiv023 divide 43.7456245 547441956. -> 7.99091557E-8 Inexact Rounded
-xdvi023 divideint 43.7456245 547441956. -> 0
-xmul023 multiply 43.7456245 547441956. -> 2.39481902E+10 Inexact Rounded
-xpow023 power 43.7456245 547441956 -> 2.91742391E+898316458 Inexact Rounded
-xrem023 remainder 43.7456245 547441956. -> 43.7456245
-xsub023 subtract 43.7456245 547441956. -> -547441912 Inexact Rounded
-xadd024 add -73150542E-242017390 -8.15869954 -> -8.15869954 Inexact Rounded
-xcom024 compare -73150542E-242017390 -8.15869954 -> 1
-xdiv024 divide -73150542E-242017390 -8.15869954 -> 8.96595611E-242017384 Inexact Rounded
-xdvi024 divideint -73150542E-242017390 -8.15869954 -> 0
-xmul024 multiply -73150542E-242017390 -8.15869954 -> 5.96813293E-242017382 Inexact Rounded
-xpow024 power -73150542E-242017390 -8 -> Infinity Overflow Inexact Rounded
-xrem024 remainder -73150542E-242017390 -8.15869954 -> -7.3150542E-242017383
-xsub024 subtract -73150542E-242017390 -8.15869954 -> 8.15869954 Inexact Rounded
-xadd025 add 2015.62109E+299897596 -11788916.1 -> 2.01562109E+299897599 Inexact Rounded
-xcom025 compare 2015.62109E+299897596 -11788916.1 -> 1
-xdiv025 divide 2015.62109E+299897596 -11788916.1 -> -1.70975947E+299897592 Inexact Rounded
-xdvi025 divideint 2015.62109E+299897596 -11788916.1 -> NaN Division_impossible
-xmul025 multiply 2015.62109E+299897596 -11788916.1 -> -2.37619879E+299897606 Inexact Rounded
-xpow025 power 2015.62109E+299897596 -11788916 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem025 remainder 2015.62109E+299897596 -11788916.1 -> NaN Division_impossible
-xsub025 subtract 2015.62109E+299897596 -11788916.1 -> 2.01562109E+299897599 Inexact Rounded
-xadd026 add 29.498114 -26486451 -> -26486421.5 Inexact Rounded
-xcom026 compare 29.498114 -26486451 -> 1
-xdiv026 divide 29.498114 -26486451 -> -0.00000111370580 Inexact Rounded
-xdvi026 divideint 29.498114 -26486451 -> -0
-xmul026 multiply 29.498114 -26486451 -> -781300351 Inexact Rounded
-xpow026 power 29.498114 -26486451 -> 4.22252513E-38929634 Inexact Rounded
-xrem026 remainder 29.498114 -26486451 -> 29.498114
-xsub026 subtract 29.498114 -26486451 -> 26486480.5 Inexact Rounded
-xadd027 add 244375043.E+130840878 -9.44522029 -> 2.44375043E+130840886 Inexact Rounded
-xcom027 compare 244375043.E+130840878 -9.44522029 -> 1
-xdiv027 divide 244375043.E+130840878 -9.44522029 -> -2.58728791E+130840885 Inexact Rounded
-xdvi027 divideint 244375043.E+130840878 -9.44522029 -> NaN Division_impossible
-xmul027 multiply 244375043.E+130840878 -9.44522029 -> -2.30817611E+130840887 Inexact Rounded
-xpow027 power 244375043.E+130840878 -9 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem027 remainder 244375043.E+130840878 -9.44522029 -> NaN Division_impossible
-xsub027 subtract 244375043.E+130840878 -9.44522029 -> 2.44375043E+130840886 Inexact Rounded
-xadd028 add -349388.759 -196215.776 -> -545604.535
-xcom028 compare -349388.759 -196215.776 -> -1
-xdiv028 divide -349388.759 -196215.776 -> 1.78063541 Inexact Rounded
-xdvi028 divideint -349388.759 -196215.776 -> 1
-xmul028 multiply -349388.759 -196215.776 -> 6.85555865E+10 Inexact Rounded
-xpow028 power -349388.759 -196216 -> 1.24551752E-1087686 Inexact Rounded
-xrem028 remainder -349388.759 -196215.776 -> -153172.983
-xsub028 subtract -349388.759 -196215.776 -> -153172.983
-xadd029 add -70905112.4 -91353968.8 -> -162259081 Inexact Rounded
-xcom029 compare -70905112.4 -91353968.8 -> 1
-xdiv029 divide -70905112.4 -91353968.8 -> 0.776157986 Inexact Rounded
-xdvi029 divideint -70905112.4 -91353968.8 -> 0
-xmul029 multiply -70905112.4 -91353968.8 -> 6.47746343E+15 Inexact Rounded
-xpow029 power -70905112.4 -91353969 -> -3.05944741E-717190554 Inexact Rounded
-xrem029 remainder -70905112.4 -91353968.8 -> -70905112.4
-xsub029 subtract -70905112.4 -91353968.8 -> 20448856.4
-xadd030 add -225094.28 -88.7723542 -> -225183.052 Inexact Rounded
-xcom030 compare -225094.28 -88.7723542 -> -1
-xdiv030 divide -225094.28 -88.7723542 -> 2535.63491 Inexact Rounded
-xdvi030 divideint -225094.28 -88.7723542 -> 2535
-xmul030 multiply -225094.28 -88.7723542 -> 19982149.2 Inexact Rounded
-xpow030 power -225094.28 -89 -> -4.36076965E-477 Inexact Rounded
-xrem030 remainder -225094.28 -88.7723542 -> -56.3621030
-xsub030 subtract -225094.28 -88.7723542 -> -225005.508 Inexact Rounded
-xadd031 add 50.4442340 82.7952169E+880120759 -> 8.27952169E+880120760 Inexact Rounded
-xcom031 compare 50.4442340 82.7952169E+880120759 -> -1
-xdiv031 divide 50.4442340 82.7952169E+880120759 -> 6.09265075E-880120760 Inexact Rounded
-xdvi031 divideint 50.4442340 82.7952169E+880120759 -> 0
-xmul031 multiply 50.4442340 82.7952169E+880120759 -> 4.17654130E+880120762 Inexact Rounded
-xpow031 power 50.4442340 8 -> 4.19268518E+13 Inexact Rounded
-xrem031 remainder 50.4442340 82.7952169E+880120759 -> 50.4442340
-xsub031 subtract 50.4442340 82.7952169E+880120759 -> -8.27952169E+880120760 Inexact Rounded
-xadd032 add -32311.9037 8.36379449 -> -32303.5399 Inexact Rounded
-xcom032 compare -32311.9037 8.36379449 -> -1
-xdiv032 divide -32311.9037 8.36379449 -> -3863.30675 Inexact Rounded
-xdvi032 divideint -32311.9037 8.36379449 -> -3863
-xmul032 multiply -32311.9037 8.36379449 -> -270250.122 Inexact Rounded
-xpow032 power -32311.9037 8 -> 1.18822960E+36 Inexact Rounded
-xrem032 remainder -32311.9037 8.36379449 -> -2.56558513
-xsub032 subtract -32311.9037 8.36379449 -> -32320.2675 Inexact Rounded
-xadd033 add 615396156.E+549895291 -29530247.4 -> 6.15396156E+549895299 Inexact Rounded
-xcom033 compare 615396156.E+549895291 -29530247.4 -> 1
-xdiv033 divide 615396156.E+549895291 -29530247.4 -> -2.08395191E+549895292 Inexact Rounded
-xdvi033 divideint 615396156.E+549895291 -29530247.4 -> NaN Division_impossible
-xmul033 multiply 615396156.E+549895291 -29530247.4 -> -1.81728007E+549895307 Inexact Rounded
-xpow033 power 615396156.E+549895291 -29530247 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem033 remainder 615396156.E+549895291 -29530247.4 -> NaN Division_impossible
-xsub033 subtract 615396156.E+549895291 -29530247.4 -> 6.15396156E+549895299 Inexact Rounded
-xadd034 add 592.142173E-419941416 -3.46079109E-844011845 -> 5.92142173E-419941414 Inexact Rounded
-xcom034 compare 592.142173E-419941416 -3.46079109E-844011845 -> 1
-xdiv034 divide 592.142173E-419941416 -3.46079109E-844011845 -> -1.71100236E+424070431 Inexact Rounded
-xdvi034 divideint 592.142173E-419941416 -3.46079109E-844011845 -> NaN Division_impossible
-xmul034 multiply 592.142173E-419941416 -3.46079109E-844011845 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xpow034 power 592.142173E-419941416 -3 -> Infinity Overflow Inexact Rounded
-xrem034 remainder 592.142173E-419941416 -3.46079109E-844011845 -> NaN Division_impossible
-xsub034 subtract 592.142173E-419941416 -3.46079109E-844011845 -> 5.92142173E-419941414 Inexact Rounded
-xadd035 add 849.515993E-878446473 -1039.08778 -> -1039.08778 Inexact Rounded
-xcom035 compare 849.515993E-878446473 -1039.08778 -> 1
-xdiv035 divide 849.515993E-878446473 -1039.08778 -> -8.17559411E-878446474 Inexact Rounded
-xdvi035 divideint 849.515993E-878446473 -1039.08778 -> -0
-xmul035 multiply 849.515993E-878446473 -1039.08778 -> -8.82721687E-878446468 Inexact Rounded
-xpow035 power 849.515993E-878446473 -1039 -> Infinity Overflow Inexact Rounded
-xrem035 remainder 849.515993E-878446473 -1039.08778 -> 8.49515993E-878446471
-xsub035 subtract 849.515993E-878446473 -1039.08778 -> 1039.08778 Inexact Rounded
-xadd036 add 213361789 -599.644851 -> 213361189 Inexact Rounded
-xcom036 compare 213361789 -599.644851 -> 1
-xdiv036 divide 213361789 -599.644851 -> -355813.593 Inexact Rounded
-xdvi036 divideint 213361789 -599.644851 -> -355813
-xmul036 multiply 213361789 -599.644851 -> -1.27941298E+11 Inexact Rounded
-xpow036 power 213361789 -600 -> 3.38854684E-4998 Inexact Rounded
-xrem036 remainder 213361789 -599.644851 -> 355.631137
-xsub036 subtract 213361789 -599.644851 -> 213362389 Inexact Rounded
-xadd037 add -795522555. -298.037702 -> -795522853 Inexact Rounded
-xcom037 compare -795522555. -298.037702 -> -1
-xdiv037 divide -795522555. -298.037702 -> 2669201.08 Inexact Rounded
-xdvi037 divideint -795522555. -298.037702 -> 2669201
-xmul037 multiply -795522555. -298.037702 -> 2.37095714E+11 Inexact Rounded
-xpow037 power -795522555. -298 -> 4.03232712E-2653 Inexact Rounded
-xrem037 remainder -795522555. -298.037702 -> -22.783898
-xsub037 subtract -795522555. -298.037702 -> -795522257 Inexact Rounded
-xadd038 add -501260651. -8761893.0E-689281479 -> -501260651 Inexact Rounded
-xcom038 compare -501260651. -8761893.0E-689281479 -> -1
-xdiv038 divide -501260651. -8761893.0E-689281479 -> 5.72091728E+689281480 Inexact Rounded
-xdvi038 divideint -501260651. -8761893.0E-689281479 -> NaN Division_impossible
-xmul038 multiply -501260651. -8761893.0E-689281479 -> 4.39199219E-689281464 Inexact Rounded
-xpow038 power -501260651. -9 -> -5.00526961E-79 Inexact Rounded
-xrem038 remainder -501260651. -8761893.0E-689281479 -> NaN Division_impossible
-xsub038 subtract -501260651. -8761893.0E-689281479 -> -501260651 Inexact Rounded
-xadd039 add -1.70781105E-848889023 36504769.4 -> 36504769.4 Inexact Rounded
-xcom039 compare -1.70781105E-848889023 36504769.4 -> -1
-xdiv039 divide -1.70781105E-848889023 36504769.4 -> -4.67832307E-848889031 Inexact Rounded
-xdvi039 divideint -1.70781105E-848889023 36504769.4 -> -0
-xmul039 multiply -1.70781105E-848889023 36504769.4 -> -6.23432486E-848889016 Inexact Rounded
-xpow039 power -1.70781105E-848889023 36504769 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem039 remainder -1.70781105E-848889023 36504769.4 -> -1.70781105E-848889023
-xsub039 subtract -1.70781105E-848889023 36504769.4 -> -36504769.4 Inexact Rounded
-xadd040 add -5290.54984E-490626676 842535254 -> 842535254 Inexact Rounded
-xcom040 compare -5290.54984E-490626676 842535254 -> -1
-xdiv040 divide -5290.54984E-490626676 842535254 -> -6.27932162E-490626682 Inexact Rounded
-xdvi040 divideint -5290.54984E-490626676 842535254 -> -0
-xmul040 multiply -5290.54984E-490626676 842535254 -> -4.45747475E-490626664 Inexact Rounded
-xpow040 power -5290.54984E-490626676 842535254 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem040 remainder -5290.54984E-490626676 842535254 -> -5.29054984E-490626673
-xsub040 subtract -5290.54984E-490626676 842535254 -> -842535254 Inexact Rounded
-xadd041 add 608.31825E+535268120 -59609.0993 -> 6.08318250E+535268122 Inexact Rounded
-xcom041 compare 608.31825E+535268120 -59609.0993 -> 1
-xdiv041 divide 608.31825E+535268120 -59609.0993 -> -1.02051240E+535268118 Inexact Rounded
-xdvi041 divideint 608.31825E+535268120 -59609.0993 -> NaN Division_impossible
-xmul041 multiply 608.31825E+535268120 -59609.0993 -> -3.62613030E+535268127 Inexact Rounded
-xpow041 power 608.31825E+535268120 -59609 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem041 remainder 608.31825E+535268120 -59609.0993 -> NaN Division_impossible
-xsub041 subtract 608.31825E+535268120 -59609.0993 -> 6.08318250E+535268122 Inexact Rounded
-xadd042 add -4629035.31 -167.884398 -> -4629203.19 Inexact Rounded
-xcom042 compare -4629035.31 -167.884398 -> -1
-xdiv042 divide -4629035.31 -167.884398 -> 27572.7546 Inexact Rounded
-xdvi042 divideint -4629035.31 -167.884398 -> 27572
-xmul042 multiply -4629035.31 -167.884398 -> 777142806 Inexact Rounded
-xpow042 power -4629035.31 -168 -> 1.57614831E-1120 Inexact Rounded
-xrem042 remainder -4629035.31 -167.884398 -> -126.688344
-xsub042 subtract -4629035.31 -167.884398 -> -4628867.43 Inexact Rounded
-xadd043 add -66527378. -706400268. -> -772927646
-xcom043 compare -66527378. -706400268. -> 1
-xdiv043 divide -66527378. -706400268. -> 0.0941780192 Inexact Rounded
-xdvi043 divideint -66527378. -706400268. -> 0
-xmul043 multiply -66527378. -706400268. -> 4.69949576E+16 Inexact Rounded
-xpow043 power -66527378. -706400268 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem043 remainder -66527378. -706400268. -> -66527378
-xsub043 subtract -66527378. -706400268. -> 639872890
-xadd044 add -2510497.53 372882462. -> 370371964 Inexact Rounded
-xcom044 compare -2510497.53 372882462. -> -1
-xdiv044 divide -2510497.53 372882462. -> -0.00673267795 Inexact Rounded
-xdvi044 divideint -2510497.53 372882462. -> -0
-xmul044 multiply -2510497.53 372882462. -> -9.36120500E+14 Inexact Rounded
-xpow044 power -2510497.53 372882462 -> Infinity Overflow Inexact Rounded
-xrem044 remainder -2510497.53 372882462. -> -2510497.53
-xsub044 subtract -2510497.53 372882462. -> -375392960 Inexact Rounded
-xadd045 add 136.255393E+53329961 -53494.7201E+720058060 -> -5.34947201E+720058064 Inexact Rounded
-xcom045 compare 136.255393E+53329961 -53494.7201E+720058060 -> 1
-xdiv045 divide 136.255393E+53329961 -53494.7201E+720058060 -> -2.54708115E-666728102 Inexact Rounded
-xdvi045 divideint 136.255393E+53329961 -53494.7201E+720058060 -> -0
-xmul045 multiply 136.255393E+53329961 -53494.7201E+720058060 -> -7.28894411E+773388027 Inexact Rounded
-xpow045 power 136.255393E+53329961 -5 -> 2.12927373E-266649816 Inexact Rounded
-xrem045 remainder 136.255393E+53329961 -53494.7201E+720058060 -> 1.36255393E+53329963
-xsub045 subtract 136.255393E+53329961 -53494.7201E+720058060 -> 5.34947201E+720058064 Inexact Rounded
-xadd046 add -876673.100 -6150.92266 -> -882824.023 Inexact Rounded
-xcom046 compare -876673.100 -6150.92266 -> -1
-xdiv046 divide -876673.100 -6150.92266 -> 142.527089 Inexact Rounded
-xdvi046 divideint -876673.100 -6150.92266 -> 142
-xmul046 multiply -876673.100 -6150.92266 -> 5.39234844E+9 Inexact Rounded
-xpow046 power -876673.100 -6151 -> -4.03111774E-36555 Inexact Rounded
-xrem046 remainder -876673.100 -6150.92266 -> -3242.08228
-xsub046 subtract -876673.100 -6150.92266 -> -870522.177 Inexact Rounded
-xadd047 add -2.45151797E+911306117 27235771 -> -2.45151797E+911306117 Inexact Rounded
-xcom047 compare -2.45151797E+911306117 27235771 -> -1
-xdiv047 divide -2.45151797E+911306117 27235771 -> -9.00109628E+911306109 Inexact Rounded
-xdvi047 divideint -2.45151797E+911306117 27235771 -> NaN Division_impossible
-xmul047 multiply -2.45151797E+911306117 27235771 -> -6.67689820E+911306124 Inexact Rounded
-xpow047 power -2.45151797E+911306117 27235771 -> -Infinity Overflow Inexact Rounded
-xrem047 remainder -2.45151797E+911306117 27235771 -> NaN Division_impossible
-xsub047 subtract -2.45151797E+911306117 27235771 -> -2.45151797E+911306117 Inexact Rounded
-xadd048 add -9.15117551 -4.95100733E-314511326 -> -9.15117551 Inexact Rounded
-xcom048 compare -9.15117551 -4.95100733E-314511326 -> -1
-xdiv048 divide -9.15117551 -4.95100733E-314511326 -> 1.84834618E+314511326 Inexact Rounded
-xdvi048 divideint -9.15117551 -4.95100733E-314511326 -> NaN Division_impossible
-xmul048 multiply -9.15117551 -4.95100733E-314511326 -> 4.53075370E-314511325 Inexact Rounded
-xpow048 power -9.15117551 -5 -> -0.0000155817265 Inexact Rounded
-xrem048 remainder -9.15117551 -4.95100733E-314511326 -> NaN Division_impossible
-xsub048 subtract -9.15117551 -4.95100733E-314511326 -> -9.15117551 Inexact Rounded
-xadd049 add 3.61890453E-985606128 30664416. -> 30664416.0 Inexact Rounded
-xcom049 compare 3.61890453E-985606128 30664416. -> -1
-xdiv049 divide 3.61890453E-985606128 30664416. -> 1.18016418E-985606135 Inexact Rounded
-xdvi049 divideint 3.61890453E-985606128 30664416. -> 0
-xmul049 multiply 3.61890453E-985606128 30664416. -> 1.10971594E-985606120 Inexact Rounded
-xpow049 power 3.61890453E-985606128 30664416 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem049 remainder 3.61890453E-985606128 30664416. -> 3.61890453E-985606128
-xsub049 subtract 3.61890453E-985606128 30664416. -> -30664416.0 Inexact Rounded
-xadd050 add -257674602E+216723382 -70820959.4 -> -2.57674602E+216723390 Inexact Rounded
-xcom050 compare -257674602E+216723382 -70820959.4 -> -1
-xdiv050 divide -257674602E+216723382 -70820959.4 -> 3.63839468E+216723382 Inexact Rounded
-xdvi050 divideint -257674602E+216723382 -70820959.4 -> NaN Division_impossible
-xmul050 multiply -257674602E+216723382 -70820959.4 -> 1.82487625E+216723398 Inexact Rounded
-xpow050 power -257674602E+216723382 -70820959 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem050 remainder -257674602E+216723382 -70820959.4 -> NaN Division_impossible
-xsub050 subtract -257674602E+216723382 -70820959.4 -> -2.57674602E+216723390 Inexact Rounded
-xadd051 add 218699.206 556944241. -> 557162940 Inexact Rounded
-xcom051 compare 218699.206 556944241. -> -1
-xdiv051 divide 218699.206 556944241. -> 0.000392677022 Inexact Rounded
-xdvi051 divideint 218699.206 556944241. -> 0
-xmul051 multiply 218699.206 556944241. -> 1.21803263E+14 Inexact Rounded
-xpow051 power 218699.206 556944241 -> Infinity Overflow Inexact Rounded
-xrem051 remainder 218699.206 556944241. -> 218699.206
-xsub051 subtract 218699.206 556944241. -> -556725542 Inexact Rounded
-xadd052 add 106211716. -3456793.74 -> 102754922 Inexact Rounded
-xcom052 compare 106211716. -3456793.74 -> 1
-xdiv052 divide 106211716. -3456793.74 -> -30.7255000 Inexact Rounded
-xdvi052 divideint 106211716. -3456793.74 -> -30
-xmul052 multiply 106211716. -3456793.74 -> -3.67151995E+14 Inexact Rounded
-xpow052 power 106211716. -3456794 -> 2.07225581E-27744825 Inexact Rounded
-xrem052 remainder 106211716. -3456793.74 -> 2507903.80
-xsub052 subtract 106211716. -3456793.74 -> 109668510 Inexact Rounded
-xadd053 add 1.25018078 399856.763E-726816740 -> 1.25018078 Inexact Rounded
-xcom053 compare 1.25018078 399856.763E-726816740 -> 1
-xdiv053 divide 1.25018078 399856.763E-726816740 -> 3.12657155E+726816734 Inexact Rounded
-xdvi053 divideint 1.25018078 399856.763E-726816740 -> NaN Division_impossible
-xmul053 multiply 1.25018078 399856.763E-726816740 -> 4.99893240E-726816735 Inexact Rounded
-xpow053 power 1.25018078 4 -> 2.44281890 Inexact Rounded
-xrem053 remainder 1.25018078 399856.763E-726816740 -> NaN Division_impossible
-xsub053 subtract 1.25018078 399856.763E-726816740 -> 1.25018078 Inexact Rounded
-xadd054 add 364.99811 -46222.0505 -> -45857.0524 Inexact Rounded
-xcom054 compare 364.99811 -46222.0505 -> 1
-xdiv054 divide 364.99811 -46222.0505 -> -0.00789662306 Inexact Rounded
-xdvi054 divideint 364.99811 -46222.0505 -> -0
-xmul054 multiply 364.99811 -46222.0505 -> -16870961.1 Inexact Rounded
-xpow054 power 364.99811 -46222 -> 6.35570856E-118435 Inexact Rounded
-xrem054 remainder 364.99811 -46222.0505 -> 364.99811
-xsub054 subtract 364.99811 -46222.0505 -> 46587.0486 Inexact Rounded
-xadd055 add -392217576. -958364096 -> -1.35058167E+9 Inexact Rounded
-xcom055 compare -392217576. -958364096 -> 1
-xdiv055 divide -392217576. -958364096 -> 0.409257377 Inexact Rounded
-xdvi055 divideint -392217576. -958364096 -> 0
-xmul055 multiply -392217576. -958364096 -> 3.75887243E+17 Inexact Rounded
-xpow055 power -392217576. -958364096 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem055 remainder -392217576. -958364096 -> -392217576
-xsub055 subtract -392217576. -958364096 -> 566146520
-xadd056 add 169601285 714526.639 -> 170315812 Inexact Rounded
-xcom056 compare 169601285 714526.639 -> 1
-xdiv056 divide 169601285 714526.639 -> 237.361738 Inexact Rounded
-xdvi056 divideint 169601285 714526.639 -> 237
-xmul056 multiply 169601285 714526.639 -> 1.21184636E+14 Inexact Rounded
-xpow056 power 169601285 714527 -> 2.06052444E+5880149 Inexact Rounded
-xrem056 remainder 169601285 714526.639 -> 258471.557
-xsub056 subtract 169601285 714526.639 -> 168886758 Inexact Rounded
-xadd057 add -674.094552E+586944319 6354.2668E+589657266 -> 6.35426680E+589657269 Inexact Rounded
-xcom057 compare -674.094552E+586944319 6354.2668E+589657266 -> -1
-xdiv057 divide -674.094552E+586944319 6354.2668E+589657266 -> -1.06085340E-2712948 Inexact Rounded
-xdvi057 divideint -674.094552E+586944319 6354.2668E+589657266 -> -0
-xmul057 multiply -674.094552E+586944319 6354.2668E+589657266 -> -Infinity Inexact Overflow Rounded
-xpow057 power -674.094552E+586944319 6 -> Infinity Overflow Inexact Rounded
-xrem057 remainder -674.094552E+586944319 6354.2668E+589657266 -> -6.74094552E+586944321
-xsub057 subtract -674.094552E+586944319 6354.2668E+589657266 -> -6.35426680E+589657269 Inexact Rounded
-xadd058 add 151795163E-371727182 -488.09788E-738852245 -> 1.51795163E-371727174 Inexact Rounded
-xcom058 compare 151795163E-371727182 -488.09788E-738852245 -> 1
-xdiv058 divide 151795163E-371727182 -488.09788E-738852245 -> -3.10993285E+367125068 Inexact Rounded
-xdvi058 divideint 151795163E-371727182 -488.09788E-738852245 -> NaN Division_impossible
-xmul058 multiply 151795163E-371727182 -488.09788E-738852245 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xpow058 power 151795163E-371727182 -5 -> Infinity Overflow Inexact Rounded
-xrem058 remainder 151795163E-371727182 -488.09788E-738852245 -> NaN Division_impossible
-xsub058 subtract 151795163E-371727182 -488.09788E-738852245 -> 1.51795163E-371727174 Inexact Rounded
-xadd059 add -746.293386 927749.647 -> 927003.354 Inexact Rounded
-xcom059 compare -746.293386 927749.647 -> -1
-xdiv059 divide -746.293386 927749.647 -> -0.000804412471 Inexact Rounded
-xdvi059 divideint -746.293386 927749.647 -> -0
-xmul059 multiply -746.293386 927749.647 -> -692373425 Inexact Rounded
-xpow059 power -746.293386 927750 -> 7.49278741E+2665341 Inexact Rounded
-xrem059 remainder -746.293386 927749.647 -> -746.293386
-xsub059 subtract -746.293386 927749.647 -> -928495.940 Inexact Rounded
-xadd060 add 888946471E+241331592 -235739.595 -> 8.88946471E+241331600 Inexact Rounded
-xcom060 compare 888946471E+241331592 -235739.595 -> 1
-xdiv060 divide 888946471E+241331592 -235739.595 -> -3.77088317E+241331595 Inexact Rounded
-xdvi060 divideint 888946471E+241331592 -235739.595 -> NaN Division_impossible
-xmul060 multiply 888946471E+241331592 -235739.595 -> -2.09559881E+241331606 Inexact Rounded
-xpow060 power 888946471E+241331592 -235740 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem060 remainder 888946471E+241331592 -235739.595 -> NaN Division_impossible
-xsub060 subtract 888946471E+241331592 -235739.595 -> 8.88946471E+241331600 Inexact Rounded
-xadd061 add 6.64377249 79161.1070E+619453776 -> 7.91611070E+619453780 Inexact Rounded
-xcom061 compare 6.64377249 79161.1070E+619453776 -> -1
-xdiv061 divide 6.64377249 79161.1070E+619453776 -> 8.39272307E-619453781 Inexact Rounded
-xdvi061 divideint 6.64377249 79161.1070E+619453776 -> 0
-xmul061 multiply 6.64377249 79161.1070E+619453776 -> 5.25928385E+619453781 Inexact Rounded
-xpow061 power 6.64377249 8 -> 3795928.44 Inexact Rounded
-xrem061 remainder 6.64377249 79161.1070E+619453776 -> 6.64377249
-xsub061 subtract 6.64377249 79161.1070E+619453776 -> -7.91611070E+619453780 Inexact Rounded
-xadd062 add 3146.66571E-313373366 88.5282010 -> 88.5282010 Inexact Rounded
-xcom062 compare 3146.66571E-313373366 88.5282010 -> -1
-xdiv062 divide 3146.66571E-313373366 88.5282010 -> 3.55442184E-313373365 Inexact Rounded
-xdvi062 divideint 3146.66571E-313373366 88.5282010 -> 0
-xmul062 multiply 3146.66571E-313373366 88.5282010 -> 2.78568654E-313373361 Inexact Rounded
-xpow062 power 3146.66571E-313373366 89 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem062 remainder 3146.66571E-313373366 88.5282010 -> 3.14666571E-313373363
-xsub062 subtract 3146.66571E-313373366 88.5282010 -> -88.5282010 Inexact Rounded
-xadd063 add 6.44693097 -87195.8711 -> -87189.4242 Inexact Rounded
-xcom063 compare 6.44693097 -87195.8711 -> 1
-xdiv063 divide 6.44693097 -87195.8711 -> -0.0000739361955 Inexact Rounded
-xdvi063 divideint 6.44693097 -87195.8711 -> -0
-xmul063 multiply 6.44693097 -87195.8711 -> -562145.762 Inexact Rounded
-xpow063 power 6.44693097 -87196 -> 4.50881730E-70573 Inexact Rounded
-xrem063 remainder 6.44693097 -87195.8711 -> 6.44693097
-xsub063 subtract 6.44693097 -87195.8711 -> 87202.3180 Inexact Rounded
-xadd064 add -2113132.56E+577957840 981125821 -> -2.11313256E+577957846 Inexact Rounded
-xcom064 compare -2113132.56E+577957840 981125821 -> -1
-xdiv064 divide -2113132.56E+577957840 981125821 -> -2.15378345E+577957837 Inexact Rounded
-xdvi064 divideint -2113132.56E+577957840 981125821 -> NaN Division_impossible
-xmul064 multiply -2113132.56E+577957840 981125821 -> -2.07324892E+577957855 Inexact Rounded
-xpow064 power -2113132.56E+577957840 981125821 -> -Infinity Overflow Inexact Rounded
-xrem064 remainder -2113132.56E+577957840 981125821 -> NaN Division_impossible
-xsub064 subtract -2113132.56E+577957840 981125821 -> -2.11313256E+577957846 Inexact Rounded
-xadd065 add -7701.42814 72667.5181 -> 64966.0900 Inexact Rounded
-xcom065 compare -7701.42814 72667.5181 -> -1
-xdiv065 divide -7701.42814 72667.5181 -> -0.105981714 Inexact Rounded
-xdvi065 divideint -7701.42814 72667.5181 -> -0
-xmul065 multiply -7701.42814 72667.5181 -> -559643669 Inexact Rounded
-xpow065 power -7701.42814 72668 -> 2.29543837E+282429 Inexact Rounded
-xrem065 remainder -7701.42814 72667.5181 -> -7701.42814
-xsub065 subtract -7701.42814 72667.5181 -> -80368.9462 Inexact Rounded
-xadd066 add -851.754789 -582659.149 -> -583510.904 Inexact Rounded
-xcom066 compare -851.754789 -582659.149 -> 1
-xdiv066 divide -851.754789 -582659.149 -> 0.00146184058 Inexact Rounded
-xdvi066 divideint -851.754789 -582659.149 -> 0
-xmul066 multiply -851.754789 -582659.149 -> 496282721 Inexact Rounded
-xpow066 power -851.754789 -582659 -> -6.83532593E-1707375 Inexact Rounded
-xrem066 remainder -851.754789 -582659.149 -> -851.754789
-xsub066 subtract -851.754789 -582659.149 -> 581807.394 Inexact Rounded
-xadd067 add -5.01992943 7852.16531 -> 7847.14538 Inexact Rounded
-xcom067 compare -5.01992943 7852.16531 -> -1
-xdiv067 divide -5.01992943 7852.16531 -> -0.000639305113 Inexact Rounded
-xdvi067 divideint -5.01992943 7852.16531 -> -0
-xmul067 multiply -5.01992943 7852.16531 -> -39417.3157 Inexact Rounded
-xpow067 power -5.01992943 7852 -> 7.54481448E+5501 Inexact Rounded
-xrem067 remainder -5.01992943 7852.16531 -> -5.01992943
-xsub067 subtract -5.01992943 7852.16531 -> -7857.18524 Inexact Rounded
-xadd068 add -12393257.2 76803689E+949125770 -> 7.68036890E+949125777 Inexact Rounded
-xcom068 compare -12393257.2 76803689E+949125770 -> -1
-xdiv068 divide -12393257.2 76803689E+949125770 -> -1.61362786E-949125771 Inexact Rounded
-xdvi068 divideint -12393257.2 76803689E+949125770 -> -0
-xmul068 multiply -12393257.2 76803689E+949125770 -> -9.51847872E+949125784 Inexact Rounded
-xpow068 power -12393257.2 8 -> 5.56523749E+56 Inexact Rounded
-xrem068 remainder -12393257.2 76803689E+949125770 -> -12393257.2
-xsub068 subtract -12393257.2 76803689E+949125770 -> -7.68036890E+949125777 Inexact Rounded
-xadd069 add -754771634.E+716555026 -292336.311 -> -7.54771634E+716555034 Inexact Rounded
-xcom069 compare -754771634.E+716555026 -292336.311 -> -1
-xdiv069 divide -754771634.E+716555026 -292336.311 -> 2.58186070E+716555029 Inexact Rounded
-xdvi069 divideint -754771634.E+716555026 -292336.311 -> NaN Division_impossible
-xmul069 multiply -754771634.E+716555026 -292336.311 -> 2.20647155E+716555040 Inexact Rounded
-xpow069 power -754771634.E+716555026 -292336 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem069 remainder -754771634.E+716555026 -292336.311 -> NaN Division_impossible
-xsub069 subtract -754771634.E+716555026 -292336.311 -> -7.54771634E+716555034 Inexact Rounded
-xadd070 add -915006.171E+614548652 -314086965. -> -9.15006171E+614548657 Inexact Rounded
-xcom070 compare -915006.171E+614548652 -314086965. -> -1
-xdiv070 divide -915006.171E+614548652 -314086965. -> 2.91322555E+614548649 Inexact Rounded
-xdvi070 divideint -915006.171E+614548652 -314086965. -> NaN Division_impossible
-xmul070 multiply -915006.171E+614548652 -314086965. -> 2.87391511E+614548666 Inexact Rounded
-xpow070 power -915006.171E+614548652 -314086965 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem070 remainder -915006.171E+614548652 -314086965. -> NaN Division_impossible
-xsub070 subtract -915006.171E+614548652 -314086965. -> -9.15006171E+614548657 Inexact Rounded
-xadd071 add -296590035 -481734529 -> -778324564
-xcom071 compare -296590035 -481734529 -> 1
-xdiv071 divide -296590035 -481734529 -> 0.615671116 Inexact Rounded
-xdvi071 divideint -296590035 -481734529 -> 0
-xmul071 multiply -296590035 -481734529 -> 1.42877661E+17 Inexact Rounded
-xpow071 power -296590035 -481734529 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem071 remainder -296590035 -481734529 -> -296590035
-xsub071 subtract -296590035 -481734529 -> 185144494
-xadd072 add 8.27822605 9241557.19 -> 9241565.47 Inexact Rounded
-xcom072 compare 8.27822605 9241557.19 -> -1
-xdiv072 divide 8.27822605 9241557.19 -> 8.95760950E-7 Inexact Rounded
-xdvi072 divideint 8.27822605 9241557.19 -> 0
-xmul072 multiply 8.27822605 9241557.19 -> 76503699.5 Inexact Rounded
-xpow072 power 8.27822605 9241557 -> 5.10219969E+8483169 Inexact Rounded
-xrem072 remainder 8.27822605 9241557.19 -> 8.27822605
-xsub072 subtract 8.27822605 9241557.19 -> -9241548.91 Inexact Rounded
-xadd073 add -1.43581098 7286313.54 -> 7286312.10 Inexact Rounded
-xcom073 compare -1.43581098 7286313.54 -> -1
-xdiv073 divide -1.43581098 7286313.54 -> -1.97055887E-7 Inexact Rounded
-xdvi073 divideint -1.43581098 7286313.54 -> -0
-xmul073 multiply -1.43581098 7286313.54 -> -10461769.0 Inexact Rounded
-xpow073 power -1.43581098 7286314 -> 1.09389741E+1144660 Inexact Rounded
-xrem073 remainder -1.43581098 7286313.54 -> -1.43581098
-xsub073 subtract -1.43581098 7286313.54 -> -7286314.98 Inexact Rounded
-xadd074 add -699036193. 759263.509E+533543625 -> 7.59263509E+533543630 Inexact Rounded
-xcom074 compare -699036193. 759263.509E+533543625 -> -1
-xdiv074 divide -699036193. 759263.509E+533543625 -> -9.20676662E-533543623 Inexact Rounded
-xdvi074 divideint -699036193. 759263.509E+533543625 -> -0
-xmul074 multiply -699036193. 759263.509E+533543625 -> -5.30752673E+533543639 Inexact Rounded
-xpow074 power -699036193. 8 -> 5.70160724E+70 Inexact Rounded
-xrem074 remainder -699036193. 759263.509E+533543625 -> -699036193
-xsub074 subtract -699036193. 759263.509E+533543625 -> -7.59263509E+533543630 Inexact Rounded
-xadd075 add -83.7273615E-305281957 -287779593.E+458777774 -> -2.87779593E+458777782 Inexact Rounded
-xcom075 compare -83.7273615E-305281957 -287779593.E+458777774 -> 1
-xdiv075 divide -83.7273615E-305281957 -287779593.E+458777774 -> 2.90942664E-764059738 Inexact Rounded
-xdvi075 divideint -83.7273615E-305281957 -287779593.E+458777774 -> 0
-xmul075 multiply -83.7273615E-305281957 -287779593.E+458777774 -> 2.40950260E+153495827 Inexact Rounded
-xpow075 power -83.7273615E-305281957 -3 -> -1.70371828E+915845865 Inexact Rounded
-xrem075 remainder -83.7273615E-305281957 -287779593.E+458777774 -> -8.37273615E-305281956
-xsub075 subtract -83.7273615E-305281957 -287779593.E+458777774 -> 2.87779593E+458777782 Inexact Rounded
-xadd076 add 8.48503224 6522.03316 -> 6530.51819 Inexact Rounded
-xcom076 compare 8.48503224 6522.03316 -> -1
-xdiv076 divide 8.48503224 6522.03316 -> 0.00130097962 Inexact Rounded
-xdvi076 divideint 8.48503224 6522.03316 -> 0
-xmul076 multiply 8.48503224 6522.03316 -> 55339.6616 Inexact Rounded
-xpow076 power 8.48503224 6522 -> 4.76547542E+6056 Inexact Rounded
-xrem076 remainder 8.48503224 6522.03316 -> 8.48503224
-xsub076 subtract 8.48503224 6522.03316 -> -6513.54813 Inexact Rounded
-xadd077 add 527916091 -809.054070 -> 527915282 Inexact Rounded
-xcom077 compare 527916091 -809.054070 -> 1
-xdiv077 divide 527916091 -809.054070 -> -652510.272 Inexact Rounded
-xdvi077 divideint 527916091 -809.054070 -> -652510
-xmul077 multiply 527916091 -809.054070 -> -4.27112662E+11 Inexact Rounded
-xpow077 power 527916091 -809 -> 2.78609697E-7057 Inexact Rounded
-xrem077 remainder 527916091 -809.054070 -> 219.784300
-xsub077 subtract 527916091 -809.054070 -> 527916900 Inexact Rounded
-xadd078 add 3857058.60 5792997.58E+881077409 -> 5.79299758E+881077415 Inexact Rounded
-xcom078 compare 3857058.60 5792997.58E+881077409 -> -1
-xdiv078 divide 3857058.60 5792997.58E+881077409 -> 6.65813950E-881077410 Inexact Rounded
-xdvi078 divideint 3857058.60 5792997.58E+881077409 -> 0
-xmul078 multiply 3857058.60 5792997.58E+881077409 -> 2.23439311E+881077422 Inexact Rounded
-xpow078 power 3857058.60 6 -> 3.29258824E+39 Inexact Rounded
-xrem078 remainder 3857058.60 5792997.58E+881077409 -> 3857058.60
-xsub078 subtract 3857058.60 5792997.58E+881077409 -> -5.79299758E+881077415 Inexact Rounded
-xadd079 add -66587363.E+556538173 -551902402E+357309146 -> -6.65873630E+556538180 Inexact Rounded
-xcom079 compare -66587363.E+556538173 -551902402E+357309146 -> -1
-xdiv079 divide -66587363.E+556538173 -551902402E+357309146 -> 1.20650613E+199229026 Inexact Rounded
-xdvi079 divideint -66587363.E+556538173 -551902402E+357309146 -> NaN Division_impossible
-xmul079 multiply -66587363.E+556538173 -551902402E+357309146 -> 3.67497256E+913847335 Inexact Rounded
-xpow079 power -66587363.E+556538173 -6 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem079 remainder -66587363.E+556538173 -551902402E+357309146 -> NaN Division_impossible
-xsub079 subtract -66587363.E+556538173 -551902402E+357309146 -> -6.65873630E+556538180 Inexact Rounded
-xadd080 add -580.502955 38125521.7 -> 38124941.2 Inexact Rounded
-xcom080 compare -580.502955 38125521.7 -> -1
-xdiv080 divide -580.502955 38125521.7 -> -0.0000152260987 Inexact Rounded
-xdvi080 divideint -580.502955 38125521.7 -> -0
-xmul080 multiply -580.502955 38125521.7 -> -2.21319780E+10 Inexact Rounded
-xpow080 power -580.502955 38125522 -> 6.07262078E+105371486 Inexact Rounded
-xrem080 remainder -580.502955 38125521.7 -> -580.502955
-xsub080 subtract -580.502955 38125521.7 -> -38126102.2 Inexact Rounded
-xadd081 add -9627363.00 -80616885E-749891394 -> -9627363.00 Inexact Rounded
-xcom081 compare -9627363.00 -80616885E-749891394 -> -1
-xdiv081 divide -9627363.00 -80616885E-749891394 -> 1.19421173E+749891393 Inexact Rounded
-xdvi081 divideint -9627363.00 -80616885E-749891394 -> NaN Division_impossible
-xmul081 multiply -9627363.00 -80616885E-749891394 -> 7.76128016E-749891380 Inexact Rounded
-xpow081 power -9627363.00 -8 -> 1.35500601E-56 Inexact Rounded
-xrem081 remainder -9627363.00 -80616885E-749891394 -> NaN Division_impossible
-xsub081 subtract -9627363.00 -80616885E-749891394 -> -9627363.00 Inexact Rounded
-xadd082 add -526.594855E+803110107 -64.5451639 -> -5.26594855E+803110109 Inexact Rounded
-xcom082 compare -526.594855E+803110107 -64.5451639 -> -1
-xdiv082 divide -526.594855E+803110107 -64.5451639 -> 8.15854858E+803110107 Inexact Rounded
-xdvi082 divideint -526.594855E+803110107 -64.5451639 -> NaN Division_impossible
-xmul082 multiply -526.594855E+803110107 -64.5451639 -> 3.39891512E+803110111 Inexact Rounded
-xpow082 power -526.594855E+803110107 -65 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem082 remainder -526.594855E+803110107 -64.5451639 -> NaN Division_impossible
-xsub082 subtract -526.594855E+803110107 -64.5451639 -> -5.26594855E+803110109 Inexact Rounded
-xadd083 add -8378.55499 760.131257 -> -7618.42373 Inexact Rounded
-xcom083 compare -8378.55499 760.131257 -> -1
-xdiv083 divide -8378.55499 760.131257 -> -11.0225108 Inexact Rounded
-xdvi083 divideint -8378.55499 760.131257 -> -11
-xmul083 multiply -8378.55499 760.131257 -> -6368801.54 Inexact Rounded
-xpow083 power -8378.55499 760 -> 4.06007928E+2981 Inexact Rounded
-xrem083 remainder -8378.55499 760.131257 -> -17.111163
-xsub083 subtract -8378.55499 760.131257 -> -9138.68625 Inexact Rounded
-xadd084 add -717.697718 984304413 -> 984303695 Inexact Rounded
-xcom084 compare -717.697718 984304413 -> -1
-xdiv084 divide -717.697718 984304413 -> -7.29142030E-7 Inexact Rounded
-xdvi084 divideint -717.697718 984304413 -> -0
-xmul084 multiply -717.697718 984304413 -> -7.06433031E+11 Inexact Rounded
-xpow084 power -717.697718 984304413 -> -Infinity Overflow Inexact Rounded
-xrem084 remainder -717.697718 984304413 -> -717.697718
-xsub084 subtract -717.697718 984304413 -> -984305131 Inexact Rounded
-xadd085 add -76762243.4E-741100094 -273.706674 -> -273.706674 Inexact Rounded
-xcom085 compare -76762243.4E-741100094 -273.706674 -> 1
-xdiv085 divide -76762243.4E-741100094 -273.706674 -> 2.80454409E-741100089 Inexact Rounded
-xdvi085 divideint -76762243.4E-741100094 -273.706674 -> 0
-xmul085 multiply -76762243.4E-741100094 -273.706674 -> 2.10103383E-741100084 Inexact Rounded
-xpow085 power -76762243.4E-741100094 -274 -> Infinity Overflow Inexact Rounded
-xrem085 remainder -76762243.4E-741100094 -273.706674 -> -7.67622434E-741100087
-xsub085 subtract -76762243.4E-741100094 -273.706674 -> 273.706674 Inexact Rounded
-xadd086 add -701.518354E+786274918 8822750.68E+243052107 -> -7.01518354E+786274920 Inexact Rounded
-xcom086 compare -701.518354E+786274918 8822750.68E+243052107 -> -1
-xdiv086 divide -701.518354E+786274918 8822750.68E+243052107 -> -7.95124309E+543222806 Inexact Rounded
-xdvi086 divideint -701.518354E+786274918 8822750.68E+243052107 -> NaN Division_impossible
-xmul086 multiply -701.518354E+786274918 8822750.68E+243052107 -> -Infinity Inexact Overflow Rounded
-xpow086 power -701.518354E+786274918 9 -> -Infinity Overflow Inexact Rounded
-xrem086 remainder -701.518354E+786274918 8822750.68E+243052107 -> NaN Division_impossible
-xsub086 subtract -701.518354E+786274918 8822750.68E+243052107 -> -7.01518354E+786274920 Inexact Rounded
-xadd087 add -359866845. -4.57434117 -> -359866850 Inexact Rounded
-xcom087 compare -359866845. -4.57434117 -> -1
-xdiv087 divide -359866845. -4.57434117 -> 78670748.8 Inexact Rounded
-xdvi087 divideint -359866845. -4.57434117 -> 78670748
-xmul087 multiply -359866845. -4.57434117 -> 1.64615372E+9 Inexact Rounded
-xpow087 power -359866845. -5 -> -1.65687909E-43 Inexact Rounded
-xrem087 remainder -359866845. -4.57434117 -> -3.54890484
-xsub087 subtract -359866845. -4.57434117 -> -359866840 Inexact Rounded
-xadd088 add 779934536. -76562645.7 -> 703371890 Inexact Rounded
-xcom088 compare 779934536. -76562645.7 -> 1
-xdiv088 divide 779934536. -76562645.7 -> -10.1868807 Inexact Rounded
-xdvi088 divideint 779934536. -76562645.7 -> -10
-xmul088 multiply 779934536. -76562645.7 -> -5.97138515E+16 Inexact Rounded
-xpow088 power 779934536. -76562646 -> 3.36739063E-680799501 Inexact Rounded
-xrem088 remainder 779934536. -76562645.7 -> 14308079.0
-xsub088 subtract 779934536. -76562645.7 -> 856497182 Inexact Rounded
-xadd089 add -4820.95451 3516234.99E+303303176 -> 3.51623499E+303303182 Inexact Rounded
-xcom089 compare -4820.95451 3516234.99E+303303176 -> -1
-xdiv089 divide -4820.95451 3516234.99E+303303176 -> -1.37105584E-303303179 Inexact Rounded
-xdvi089 divideint -4820.95451 3516234.99E+303303176 -> -0
-xmul089 multiply -4820.95451 3516234.99E+303303176 -> -1.69516089E+303303186 Inexact Rounded
-xpow089 power -4820.95451 4 -> 5.40172082E+14 Inexact Rounded
-xrem089 remainder -4820.95451 3516234.99E+303303176 -> -4820.95451
-xsub089 subtract -4820.95451 3516234.99E+303303176 -> -3.51623499E+303303182 Inexact Rounded
-xadd090 add 69355976.9 -9.57838562E+758804984 -> -9.57838562E+758804984 Inexact Rounded
-xcom090 compare 69355976.9 -9.57838562E+758804984 -> 1
-xdiv090 divide 69355976.9 -9.57838562E+758804984 -> -7.24088376E-758804978 Inexact Rounded
-xdvi090 divideint 69355976.9 -9.57838562E+758804984 -> -0
-xmul090 multiply 69355976.9 -9.57838562E+758804984 -> -6.64318292E+758804992 Inexact Rounded
-xpow090 power 69355976.9 -10 -> 3.88294346E-79 Inexact Rounded
-xrem090 remainder 69355976.9 -9.57838562E+758804984 -> 69355976.9
-xsub090 subtract 69355976.9 -9.57838562E+758804984 -> 9.57838562E+758804984 Inexact Rounded
-xadd091 add -12672093.1 8569.78255E-382866025 -> -12672093.1 Inexact Rounded
-xcom091 compare -12672093.1 8569.78255E-382866025 -> -1
-xdiv091 divide -12672093.1 8569.78255E-382866025 -> -1.47869482E+382866028 Inexact Rounded
-xdvi091 divideint -12672093.1 8569.78255E-382866025 -> NaN Division_impossible
-xmul091 multiply -12672093.1 8569.78255E-382866025 -> -1.08597082E-382866014 Inexact Rounded
-xpow091 power -12672093.1 9 -> -8.42626658E+63 Inexact Rounded
-xrem091 remainder -12672093.1 8569.78255E-382866025 -> NaN Division_impossible
-xsub091 subtract -12672093.1 8569.78255E-382866025 -> -12672093.1 Inexact Rounded
-xadd092 add -5910750.2 66150383E-662459241 -> -5910750.20 Inexact Rounded
-xcom092 compare -5910750.2 66150383E-662459241 -> -1
-xdiv092 divide -5910750.2 66150383E-662459241 -> -8.93532272E+662459239 Inexact Rounded
-xdvi092 divideint -5910750.2 66150383E-662459241 -> NaN Division_impossible
-xmul092 multiply -5910750.2 66150383E-662459241 -> -3.90998390E-662459227 Inexact Rounded
-xpow092 power -5910750.2 7 -> -2.52056696E+47 Inexact Rounded
-xrem092 remainder -5910750.2 66150383E-662459241 -> NaN Division_impossible
-xsub092 subtract -5910750.2 66150383E-662459241 -> -5910750.20 Inexact Rounded
-xadd093 add -532577268.E-163806629 -240650398E-650110558 -> -5.32577268E-163806621 Inexact Rounded
-xcom093 compare -532577268.E-163806629 -240650398E-650110558 -> -1
-xdiv093 divide -532577268.E-163806629 -240650398E-650110558 -> 2.21307454E+486303929 Inexact Rounded
-xdvi093 divideint -532577268.E-163806629 -240650398E-650110558 -> NaN Division_impossible
-xmul093 multiply -532577268.E-163806629 -240650398E-650110558 -> 1.28164932E-813917170 Inexact Rounded
-xpow093 power -532577268.E-163806629 -2 -> 3.52561389E+327613240 Inexact Rounded
-xrem093 remainder -532577268.E-163806629 -240650398E-650110558 -> NaN Division_impossible
-xsub093 subtract -532577268.E-163806629 -240650398E-650110558 -> -5.32577268E-163806621 Inexact Rounded
-xadd094 add -671.507198E-908587890 3057429.32E-555230623 -> 3.05742932E-555230617 Inexact Rounded
-xcom094 compare -671.507198E-908587890 3057429.32E-555230623 -> -1
-xdiv094 divide -671.507198E-908587890 3057429.32E-555230623 -> -2.19631307E-353357271 Inexact Rounded
-xdvi094 divideint -671.507198E-908587890 3057429.32E-555230623 -> -0
-xmul094 multiply -671.507198E-908587890 3057429.32E-555230623 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xpow094 power -671.507198E-908587890 3 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem094 remainder -671.507198E-908587890 3057429.32E-555230623 -> -6.71507198E-908587888
-xsub094 subtract -671.507198E-908587890 3057429.32E-555230623 -> -3.05742932E-555230617 Inexact Rounded
-xadd095 add -294.994352E+346452027 -6061853.0 -> -2.94994352E+346452029 Inexact Rounded
-xcom095 compare -294.994352E+346452027 -6061853.0 -> -1
-xdiv095 divide -294.994352E+346452027 -6061853.0 -> 4.86640557E+346452022 Inexact Rounded
-xdvi095 divideint -294.994352E+346452027 -6061853.0 -> NaN Division_impossible
-xmul095 multiply -294.994352E+346452027 -6061853.0 -> 1.78821240E+346452036 Inexact Rounded
-xpow095 power -294.994352E+346452027 -6061853 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem095 remainder -294.994352E+346452027 -6061853.0 -> NaN Division_impossible
-xsub095 subtract -294.994352E+346452027 -6061853.0 -> -2.94994352E+346452029 Inexact Rounded
-xadd096 add 329579114 146780548. -> 476359662
-xcom096 compare 329579114 146780548. -> 1
-xdiv096 divide 329579114 146780548. -> 2.24538686 Inexact Rounded
-xdvi096 divideint 329579114 146780548. -> 2
-xmul096 multiply 329579114 146780548. -> 4.83758030E+16 Inexact Rounded
-xpow096 power 329579114 146780548 -> Infinity Overflow Inexact Rounded
-xrem096 remainder 329579114 146780548. -> 36018018
-xsub096 subtract 329579114 146780548. -> 182798566
-xadd097 add -789904.686E-217225000 -1991.07181E-84080059 -> -1.99107181E-84080056 Inexact Rounded
-xcom097 compare -789904.686E-217225000 -1991.07181E-84080059 -> 1
-xdiv097 divide -789904.686E-217225000 -1991.07181E-84080059 -> 3.96723354E-133144939 Inexact Rounded
-xdvi097 divideint -789904.686E-217225000 -1991.07181E-84080059 -> 0
-xmul097 multiply -789904.686E-217225000 -1991.07181E-84080059 -> 1.57275695E-301305050 Inexact Rounded
-xpow097 power -789904.686E-217225000 -2 -> 1.60269403E+434449988 Inexact Rounded
-xrem097 remainder -789904.686E-217225000 -1991.07181E-84080059 -> -7.89904686E-217224995
-xsub097 subtract -789904.686E-217225000 -1991.07181E-84080059 -> 1.99107181E-84080056 Inexact Rounded
-xadd098 add 59893.3544 -408595868 -> -408535975 Inexact Rounded
-xcom098 compare 59893.3544 -408595868 -> 1
-xdiv098 divide 59893.3544 -408595868 -> -0.000146583358 Inexact Rounded
-xdvi098 divideint 59893.3544 -408595868 -> -0
-xmul098 multiply 59893.3544 -408595868 -> -2.44721771E+13 Inexact Rounded
-xpow098 power 59893.3544 -408595868 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem098 remainder 59893.3544 -408595868 -> 59893.3544
-xsub098 subtract 59893.3544 -408595868 -> 408655761 Inexact Rounded
-xadd099 add 129.878613 -54652.7288E-963564940 -> 129.878613 Inexact Rounded
-xcom099 compare 129.878613 -54652.7288E-963564940 -> 1
-xdiv099 divide 129.878613 -54652.7288E-963564940 -> -2.37643418E+963564937 Inexact Rounded
-xdvi099 divideint 129.878613 -54652.7288E-963564940 -> NaN Division_impossible
-xmul099 multiply 129.878613 -54652.7288E-963564940 -> -7.09822061E-963564934 Inexact Rounded
-xpow099 power 129.878613 -5 -> 2.70590029E-11 Inexact Rounded
-xrem099 remainder 129.878613 -54652.7288E-963564940 -> NaN Division_impossible
-xsub099 subtract 129.878613 -54652.7288E-963564940 -> 129.878613 Inexact Rounded
-xadd100 add 9866.99208 708756501. -> 708766368 Inexact Rounded
-xcom100 compare 9866.99208 708756501. -> -1
-xdiv100 divide 9866.99208 708756501. -> 0.0000139215543 Inexact Rounded
-xdvi100 divideint 9866.99208 708756501. -> 0
-xmul100 multiply 9866.99208 708756501. -> 6.99329478E+12 Inexact Rounded
-xpow100 power 9866.99208 708756501 -> Infinity Overflow Inexact Rounded
-xrem100 remainder 9866.99208 708756501. -> 9866.99208
-xsub100 subtract 9866.99208 708756501. -> -708746634 Inexact Rounded
-xadd101 add -78810.6297 -399884.68 -> -478695.310 Inexact Rounded
-xcom101 compare -78810.6297 -399884.68 -> 1
-xdiv101 divide -78810.6297 -399884.68 -> 0.197083393 Inexact Rounded
-xdvi101 divideint -78810.6297 -399884.68 -> 0
-xmul101 multiply -78810.6297 -399884.68 -> 3.15151634E+10 Inexact Rounded
-xpow101 power -78810.6297 -399885 -> -1.54252408E-1958071 Inexact Rounded
-xrem101 remainder -78810.6297 -399884.68 -> -78810.6297
-xsub101 subtract -78810.6297 -399884.68 -> 321074.050 Inexact Rounded
-xadd102 add 409189761 -771.471460 -> 409188990 Inexact Rounded
-xcom102 compare 409189761 -771.471460 -> 1
-xdiv102 divide 409189761 -771.471460 -> -530401.683 Inexact Rounded
-xdvi102 divideint 409189761 -771.471460 -> -530401
-xmul102 multiply 409189761 -771.471460 -> -3.15678222E+11 Inexact Rounded
-xpow102 power 409189761 -771 -> 1.60698414E-6640 Inexact Rounded
-xrem102 remainder 409189761 -771.471460 -> 527.144540
-xsub102 subtract 409189761 -771.471460 -> 409190532 Inexact Rounded
-xadd103 add -1.68748838 460.46924 -> 458.781752 Inexact Rounded
-xcom103 compare -1.68748838 460.46924 -> -1
-xdiv103 divide -1.68748838 460.46924 -> -0.00366471467 Inexact Rounded
-xdvi103 divideint -1.68748838 460.46924 -> -0
-xmul103 multiply -1.68748838 460.46924 -> -777.036492 Inexact Rounded
-xpow103 power -1.68748838 460 -> 3.39440648E+104 Inexact Rounded
-xrem103 remainder -1.68748838 460.46924 -> -1.68748838
-xsub103 subtract -1.68748838 460.46924 -> -462.156728 Inexact Rounded
-xadd104 add 553527296. -7924.40185 -> 553519372 Inexact Rounded
-xcom104 compare 553527296. -7924.40185 -> 1
-xdiv104 divide 553527296. -7924.40185 -> -69850.9877 Inexact Rounded
-xdvi104 divideint 553527296. -7924.40185 -> -69850
-xmul104 multiply 553527296. -7924.40185 -> -4.38637273E+12 Inexact Rounded
-xpow104 power 553527296. -7924 -> 2.32397214E-69281 Inexact Rounded
-xrem104 remainder 553527296. -7924.40185 -> 7826.77750
-xsub104 subtract 553527296. -7924.40185 -> 553535220 Inexact Rounded
-xadd105 add -38.7465207 64936.2942 -> 64897.5477 Inexact Rounded
-xcom105 compare -38.7465207 64936.2942 -> -1
-xdiv105 divide -38.7465207 64936.2942 -> -0.000596685123 Inexact Rounded
-xdvi105 divideint -38.7465207 64936.2942 -> -0
-xmul105 multiply -38.7465207 64936.2942 -> -2516055.47 Inexact Rounded
-xpow105 power -38.7465207 64936 -> 3.01500762E+103133 Inexact Rounded
-xrem105 remainder -38.7465207 64936.2942 -> -38.7465207
-xsub105 subtract -38.7465207 64936.2942 -> -64975.0407 Inexact Rounded
-xadd106 add -201075.248 845.663928 -> -200229.584 Inexact Rounded
-xcom106 compare -201075.248 845.663928 -> -1
-xdiv106 divide -201075.248 845.663928 -> -237.772053 Inexact Rounded
-xdvi106 divideint -201075.248 845.663928 -> -237
-xmul106 multiply -201075.248 845.663928 -> -170042084 Inexact Rounded
-xpow106 power -201075.248 846 -> 4.37911767E+4486 Inexact Rounded
-xrem106 remainder -201075.248 845.663928 -> -652.897064
-xsub106 subtract -201075.248 845.663928 -> -201920.912 Inexact Rounded
-xadd107 add 91048.4559 75953609.3 -> 76044657.8 Inexact Rounded
-xcom107 compare 91048.4559 75953609.3 -> -1
-xdiv107 divide 91048.4559 75953609.3 -> 0.00119873771 Inexact Rounded
-xdvi107 divideint 91048.4559 75953609.3 -> 0
-xmul107 multiply 91048.4559 75953609.3 -> 6.91545885E+12 Inexact Rounded
-xpow107 power 91048.4559 75953609 -> 6.94467746E+376674650 Inexact Rounded
-xrem107 remainder 91048.4559 75953609.3 -> 91048.4559
-xsub107 subtract 91048.4559 75953609.3 -> -75862560.8 Inexact Rounded
-xadd108 add 6898273.86E-252097460 15.3456196 -> 15.3456196 Inexact Rounded
-xcom108 compare 6898273.86E-252097460 15.3456196 -> -1
-xdiv108 divide 6898273.86E-252097460 15.3456196 -> 4.49527229E-252097455 Inexact Rounded
-xdvi108 divideint 6898273.86E-252097460 15.3456196 -> 0
-xmul108 multiply 6898273.86E-252097460 15.3456196 -> 1.05858287E-252097452 Inexact Rounded
-xpow108 power 6898273.86E-252097460 15 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem108 remainder 6898273.86E-252097460 15.3456196 -> 6.89827386E-252097454
-xsub108 subtract 6898273.86E-252097460 15.3456196 -> -15.3456196 Inexact Rounded
-xadd109 add 88.4370343 -980709105E-869899289 -> 88.4370343 Inexact Rounded
-xcom109 compare 88.4370343 -980709105E-869899289 -> 1
-xdiv109 divide 88.4370343 -980709105E-869899289 -> -9.01766220E+869899281 Inexact Rounded
-xdvi109 divideint 88.4370343 -980709105E-869899289 -> NaN Division_impossible
-xmul109 multiply 88.4370343 -980709105E-869899289 -> -8.67310048E-869899279 Inexact Rounded
-xpow109 power 88.4370343 -10 -> 3.41710479E-20 Inexact Rounded
-xrem109 remainder 88.4370343 -980709105E-869899289 -> NaN Division_impossible
-xsub109 subtract 88.4370343 -980709105E-869899289 -> 88.4370343 Inexact Rounded
-xadd110 add -17643.39 2.0352568E+304871331 -> 2.03525680E+304871331 Inexact Rounded
-xcom110 compare -17643.39 2.0352568E+304871331 -> -1
-xdiv110 divide -17643.39 2.0352568E+304871331 -> -8.66887658E-304871328 Inexact Rounded
-xdvi110 divideint -17643.39 2.0352568E+304871331 -> -0
-xmul110 multiply -17643.39 2.0352568E+304871331 -> -3.59088295E+304871335 Inexact Rounded
-xpow110 power -17643.39 2 -> 311289211 Inexact Rounded
-xrem110 remainder -17643.39 2.0352568E+304871331 -> -17643.39
-xsub110 subtract -17643.39 2.0352568E+304871331 -> -2.03525680E+304871331 Inexact Rounded
-xadd111 add 4589785.16 7459.04237 -> 4597244.20 Inexact Rounded
-xcom111 compare 4589785.16 7459.04237 -> 1
-xdiv111 divide 4589785.16 7459.04237 -> 615.331692 Inexact Rounded
-xdvi111 divideint 4589785.16 7459.04237 -> 615
-xmul111 multiply 4589785.16 7459.04237 -> 3.42354020E+10 Inexact Rounded
-xpow111 power 4589785.16 7459 -> 2.03795258E+49690 Inexact Rounded
-xrem111 remainder 4589785.16 7459.04237 -> 2474.10245
-xsub111 subtract 4589785.16 7459.04237 -> 4582326.12 Inexact Rounded
-xadd112 add -51.1632090E-753968082 8.96207471E-585797887 -> 8.96207471E-585797887 Inexact Rounded
-xcom112 compare -51.1632090E-753968082 8.96207471E-585797887 -> -1
-xdiv112 divide -51.1632090E-753968082 8.96207471E-585797887 -> -5.70885768E-168170195 Inexact Rounded
-xdvi112 divideint -51.1632090E-753968082 8.96207471E-585797887 -> -0
-xmul112 multiply -51.1632090E-753968082 8.96207471E-585797887 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xpow112 power -51.1632090E-753968082 9 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem112 remainder -51.1632090E-753968082 8.96207471E-585797887 -> -5.11632090E-753968081
-xsub112 subtract -51.1632090E-753968082 8.96207471E-585797887 -> -8.96207471E-585797887 Inexact Rounded
-xadd113 add 982.217817 7224909.4E-45243816 -> 982.217817 Inexact Rounded
-xcom113 compare 982.217817 7224909.4E-45243816 -> 1
-xdiv113 divide 982.217817 7224909.4E-45243816 -> 1.35948807E+45243812 Inexact Rounded
-xdvi113 divideint 982.217817 7224909.4E-45243816 -> NaN Division_impossible
-xmul113 multiply 982.217817 7224909.4E-45243816 -> 7.09643474E-45243807 Inexact Rounded
-xpow113 power 982.217817 7 -> 8.81971709E+20 Inexact Rounded
-xrem113 remainder 982.217817 7224909.4E-45243816 -> NaN Division_impossible
-xsub113 subtract 982.217817 7224909.4E-45243816 -> 982.217817 Inexact Rounded
-xadd114 add 503712056. -57490703.5E+924890183 -> -5.74907035E+924890190 Inexact Rounded
-xcom114 compare 503712056. -57490703.5E+924890183 -> 1
-xdiv114 divide 503712056. -57490703.5E+924890183 -> -8.76162623E-924890183 Inexact Rounded
-xdvi114 divideint 503712056. -57490703.5E+924890183 -> -0
-xmul114 multiply 503712056. -57490703.5E+924890183 -> -2.89587605E+924890199 Inexact Rounded
-xpow114 power 503712056. -6 -> 6.12217764E-53 Inexact Rounded
-xrem114 remainder 503712056. -57490703.5E+924890183 -> 503712056
-xsub114 subtract 503712056. -57490703.5E+924890183 -> 5.74907035E+924890190 Inexact Rounded
-xadd115 add 883.849223 249259171 -> 249260055 Inexact Rounded
-xcom115 compare 883.849223 249259171 -> -1
-xdiv115 divide 883.849223 249259171 -> 0.00000354590453 Inexact Rounded
-xdvi115 divideint 883.849223 249259171 -> 0
-xmul115 multiply 883.849223 249259171 -> 2.20307525E+11 Inexact Rounded
-xpow115 power 883.849223 249259171 -> 5.15642844E+734411783 Inexact Rounded
-xrem115 remainder 883.849223 249259171 -> 883.849223
-xsub115 subtract 883.849223 249259171 -> -249258287 Inexact Rounded
-xadd116 add 245.092853E+872642874 828195.152E+419771532 -> 2.45092853E+872642876 Inexact Rounded
-xcom116 compare 245.092853E+872642874 828195.152E+419771532 -> 1
-xdiv116 divide 245.092853E+872642874 828195.152E+419771532 -> 2.95936112E+452871338 Inexact Rounded
-xdvi116 divideint 245.092853E+872642874 828195.152E+419771532 -> NaN Division_impossible
-xmul116 multiply 245.092853E+872642874 828195.152E+419771532 -> Infinity Inexact Overflow Rounded
-xpow116 power 245.092853E+872642874 8 -> Infinity Overflow Inexact Rounded
-xrem116 remainder 245.092853E+872642874 828195.152E+419771532 -> NaN Division_impossible
-xsub116 subtract 245.092853E+872642874 828195.152E+419771532 -> 2.45092853E+872642876 Inexact Rounded
-xadd117 add -83658638.6E+728551928 2952478.42 -> -8.36586386E+728551935 Inexact Rounded
-xcom117 compare -83658638.6E+728551928 2952478.42 -> -1
-xdiv117 divide -83658638.6E+728551928 2952478.42 -> -2.83350551E+728551929 Inexact Rounded
-xdvi117 divideint -83658638.6E+728551928 2952478.42 -> NaN Division_impossible
-xmul117 multiply -83658638.6E+728551928 2952478.42 -> -2.47000325E+728551942 Inexact Rounded
-xpow117 power -83658638.6E+728551928 2952478 -> Infinity Overflow Inexact Rounded
-xrem117 remainder -83658638.6E+728551928 2952478.42 -> NaN Division_impossible
-xsub117 subtract -83658638.6E+728551928 2952478.42 -> -8.36586386E+728551935 Inexact Rounded
-xadd118 add -6291780.97 269967.394E-22000817 -> -6291780.97 Inexact Rounded
-xcom118 compare -6291780.97 269967.394E-22000817 -> -1
-xdiv118 divide -6291780.97 269967.394E-22000817 -> -2.33057069E+22000818 Inexact Rounded
-xdvi118 divideint -6291780.97 269967.394E-22000817 -> NaN Division_impossible
-xmul118 multiply -6291780.97 269967.394E-22000817 -> -1.69857571E-22000805 Inexact Rounded
-xpow118 power -6291780.97 3 -> -2.49069636E+20 Inexact Rounded
-xrem118 remainder -6291780.97 269967.394E-22000817 -> NaN Division_impossible
-xsub118 subtract -6291780.97 269967.394E-22000817 -> -6291780.97 Inexact Rounded
-xadd119 add 978571348.E+222382547 6006.19370 -> 9.78571348E+222382555 Inexact Rounded
-xcom119 compare 978571348.E+222382547 6006.19370 -> 1
-xdiv119 divide 978571348.E+222382547 6006.19370 -> 1.62927038E+222382552 Inexact Rounded
-xdvi119 divideint 978571348.E+222382547 6006.19370 -> NaN Division_impossible
-xmul119 multiply 978571348.E+222382547 6006.19370 -> 5.87748907E+222382559 Inexact Rounded
-xpow119 power 978571348.E+222382547 6006 -> Infinity Overflow Inexact Rounded
-xrem119 remainder 978571348.E+222382547 6006.19370 -> NaN Division_impossible
-xsub119 subtract 978571348.E+222382547 6006.19370 -> 9.78571348E+222382555 Inexact Rounded
-xadd120 add 14239029. -36527.2221 -> 14202501.8 Inexact Rounded
-xcom120 compare 14239029. -36527.2221 -> 1
-xdiv120 divide 14239029. -36527.2221 -> -389.819652 Inexact Rounded
-xdvi120 divideint 14239029. -36527.2221 -> -389
-xmul120 multiply 14239029. -36527.2221 -> -5.20112175E+11 Inexact Rounded
-xpow120 power 14239029. -36527 -> 6.64292731E-261296 Inexact Rounded
-xrem120 remainder 14239029. -36527.2221 -> 29939.6031
-xsub120 subtract 14239029. -36527.2221 -> 14275556.2 Inexact Rounded
-xadd121 add 72333.2654E-544425548 -690.664836E+662155120 -> -6.90664836E+662155122 Inexact Rounded
-xcom121 compare 72333.2654E-544425548 -690.664836E+662155120 -> 1
-xdiv121 divide 72333.2654E-544425548 -690.664836E+662155120 -> -0E-1000000007 Inexact Rounded Underflow Subnormal Clamped
-xdvi121 divideint 72333.2654E-544425548 -690.664836E+662155120 -> -0
-xmul121 multiply 72333.2654E-544425548 -690.664836E+662155120 -> -4.99580429E+117729579 Inexact Rounded
-xpow121 power 72333.2654E-544425548 -7 -> Infinity Overflow Inexact Rounded
-xrem121 remainder 72333.2654E-544425548 -690.664836E+662155120 -> 7.23332654E-544425544
-xsub121 subtract 72333.2654E-544425548 -690.664836E+662155120 -> 6.90664836E+662155122 Inexact Rounded
-xadd122 add -37721.1567E-115787341 -828949864E-76251747 -> -8.28949864E-76251739 Inexact Rounded
-xcom122 compare -37721.1567E-115787341 -828949864E-76251747 -> 1
-xdiv122 divide -37721.1567E-115787341 -828949864E-76251747 -> 4.55047505E-39535599 Inexact Rounded
-xdvi122 divideint -37721.1567E-115787341 -828949864E-76251747 -> 0
-xmul122 multiply -37721.1567E-115787341 -828949864E-76251747 -> 3.12689477E-192039075 Inexact Rounded
-xpow122 power -37721.1567E-115787341 -8 -> 2.43960765E+926298691 Inexact Rounded
-xrem122 remainder -37721.1567E-115787341 -828949864E-76251747 -> -3.77211567E-115787337
-xsub122 subtract -37721.1567E-115787341 -828949864E-76251747 -> 8.28949864E-76251739 Inexact Rounded
-xadd123 add -2078852.83E-647080089 -119779858.E+734665461 -> -1.19779858E+734665469 Inexact Rounded
-xcom123 compare -2078852.83E-647080089 -119779858.E+734665461 -> 1
-xdiv123 divide -2078852.83E-647080089 -119779858.E+734665461 -> 0E-1000000007 Inexact Rounded Underflow Subnormal Clamped
-xdvi123 divideint -2078852.83E-647080089 -119779858.E+734665461 -> 0
-xmul123 multiply -2078852.83E-647080089 -119779858.E+734665461 -> 2.49004697E+87585386 Inexact Rounded
-xpow123 power -2078852.83E-647080089 -1 -> -4.81034533E+647080082 Inexact Rounded
-xrem123 remainder -2078852.83E-647080089 -119779858.E+734665461 -> -2.07885283E-647080083
-xsub123 subtract -2078852.83E-647080089 -119779858.E+734665461 -> 1.19779858E+734665469 Inexact Rounded
-xadd124 add -79145.3625 -7718.57307 -> -86863.9356 Inexact Rounded
-xcom124 compare -79145.3625 -7718.57307 -> -1
-xdiv124 divide -79145.3625 -7718.57307 -> 10.2538852 Inexact Rounded
-xdvi124 divideint -79145.3625 -7718.57307 -> 10
-xmul124 multiply -79145.3625 -7718.57307 -> 610889264 Inexact Rounded
-xpow124 power -79145.3625 -7719 -> -1.13181941E-37811 Inexact Rounded
-xrem124 remainder -79145.3625 -7718.57307 -> -1959.63180
-xsub124 subtract -79145.3625 -7718.57307 -> -71426.7894 Inexact Rounded
-xadd125 add 2103890.49E+959247237 20024.3017 -> 2.10389049E+959247243 Inexact Rounded
-xcom125 compare 2103890.49E+959247237 20024.3017 -> 1
-xdiv125 divide 2103890.49E+959247237 20024.3017 -> 1.05066859E+959247239 Inexact Rounded
-xdvi125 divideint 2103890.49E+959247237 20024.3017 -> NaN Division_impossible
-xmul125 multiply 2103890.49E+959247237 20024.3017 -> 4.21289379E+959247247 Inexact Rounded
-xpow125 power 2103890.49E+959247237 20024 -> Infinity Overflow Inexact Rounded
-xrem125 remainder 2103890.49E+959247237 20024.3017 -> NaN Division_impossible
-xsub125 subtract 2103890.49E+959247237 20024.3017 -> 2.10389049E+959247243 Inexact Rounded
-xadd126 add 911249557 79810804.9 -> 991060362 Inexact Rounded
-xcom126 compare 911249557 79810804.9 -> 1
-xdiv126 divide 911249557 79810804.9 -> 11.4176214 Inexact Rounded
-xdvi126 divideint 911249557 79810804.9 -> 11
-xmul126 multiply 911249557 79810804.9 -> 7.27275606E+16 Inexact Rounded
-xpow126 power 911249557 79810805 -> 6.77595741E+715075867 Inexact Rounded
-xrem126 remainder 911249557 79810804.9 -> 33330703.1
-xsub126 subtract 911249557 79810804.9 -> 831438752 Inexact Rounded
-xadd127 add 341134.994 3.37486292 -> 341138.369 Inexact Rounded
-xcom127 compare 341134.994 3.37486292 -> 1
-xdiv127 divide 341134.994 3.37486292 -> 101081.141 Inexact Rounded
-xdvi127 divideint 341134.994 3.37486292 -> 101081
-xmul127 multiply 341134.994 3.37486292 -> 1151283.84 Inexact Rounded
-xpow127 power 341134.994 3 -> 3.96989314E+16 Inexact Rounded
-xrem127 remainder 341134.994 3.37486292 -> 0.47518348
-xsub127 subtract 341134.994 3.37486292 -> 341131.619 Inexact Rounded
-xadd128 add 244.23634 512706190E-341459836 -> 244.236340 Inexact Rounded
-xcom128 compare 244.23634 512706190E-341459836 -> 1
-xdiv128 divide 244.23634 512706190E-341459836 -> 4.76367059E+341459829 Inexact Rounded
-xdvi128 divideint 244.23634 512706190E-341459836 -> NaN Division_impossible
-xmul128 multiply 244.23634 512706190E-341459836 -> 1.25221483E-341459825 Inexact Rounded
-xpow128 power 244.23634 5 -> 8.69063312E+11 Inexact Rounded
-xrem128 remainder 244.23634 512706190E-341459836 -> NaN Division_impossible
-xsub128 subtract 244.23634 512706190E-341459836 -> 244.236340 Inexact Rounded
-xadd129 add -9.22783849E+171585954 -99.0946800 -> -9.22783849E+171585954 Inexact Rounded
-xcom129 compare -9.22783849E+171585954 -99.0946800 -> -1
-xdiv129 divide -9.22783849E+171585954 -99.0946800 -> 9.31214318E+171585952 Inexact Rounded
-xdvi129 divideint -9.22783849E+171585954 -99.0946800 -> NaN Division_impossible
-xmul129 multiply -9.22783849E+171585954 -99.0946800 -> 9.14429702E+171585956 Inexact Rounded
-xpow129 power -9.22783849E+171585954 -99 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem129 remainder -9.22783849E+171585954 -99.0946800 -> NaN Division_impossible
-xsub129 subtract -9.22783849E+171585954 -99.0946800 -> -9.22783849E+171585954 Inexact Rounded
-xadd130 add 699631.893 -226.423958 -> 699405.469 Inexact Rounded
-xcom130 compare 699631.893 -226.423958 -> 1
-xdiv130 divide 699631.893 -226.423958 -> -3089.91990 Inexact Rounded
-xdvi130 divideint 699631.893 -226.423958 -> -3089
-xmul130 multiply 699631.893 -226.423958 -> -158413422 Inexact Rounded
-xpow130 power 699631.893 -226 -> 1.14675511E-1321 Inexact Rounded
-xrem130 remainder 699631.893 -226.423958 -> 208.286738
-xsub130 subtract 699631.893 -226.423958 -> 699858.317 Inexact Rounded
-xadd131 add -249350139.E-571793673 775732428. -> 775732428 Inexact Rounded
-xcom131 compare -249350139.E-571793673 775732428. -> -1
-xdiv131 divide -249350139.E-571793673 775732428. -> -3.21438334E-571793674 Inexact Rounded
-xdvi131 divideint -249350139.E-571793673 775732428. -> -0
-xmul131 multiply -249350139.E-571793673 775732428. -> -1.93428989E-571793656 Inexact Rounded
-xpow131 power -249350139.E-571793673 775732428 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem131 remainder -249350139.E-571793673 775732428. -> -2.49350139E-571793665
-xsub131 subtract -249350139.E-571793673 775732428. -> -775732428 Inexact Rounded
-xadd132 add 5.11629020 -480.53194 -> -475.415650 Inexact Rounded
-xcom132 compare 5.11629020 -480.53194 -> 1
-xdiv132 divide 5.11629020 -480.53194 -> -0.0106471387 Inexact Rounded
-xdvi132 divideint 5.11629020 -480.53194 -> -0
-xmul132 multiply 5.11629020 -480.53194 -> -2458.54086 Inexact Rounded
-xpow132 power 5.11629020 -481 -> 9.83021951E-342 Inexact Rounded
-xrem132 remainder 5.11629020 -480.53194 -> 5.11629020
-xsub132 subtract 5.11629020 -480.53194 -> 485.648230 Inexact Rounded
-xadd133 add -8.23352673E-446723147 -530710.866 -> -530710.866 Inexact Rounded
-xcom133 compare -8.23352673E-446723147 -530710.866 -> 1
-xdiv133 divide -8.23352673E-446723147 -530710.866 -> 1.55141476E-446723152 Inexact Rounded
-xdvi133 divideint -8.23352673E-446723147 -530710.866 -> 0
-xmul133 multiply -8.23352673E-446723147 -530710.866 -> 4.36962210E-446723141 Inexact Rounded
-xpow133 power -8.23352673E-446723147 -530711 -> -Infinity Overflow Inexact Rounded
-xrem133 remainder -8.23352673E-446723147 -530710.866 -> -8.23352673E-446723147
-xsub133 subtract -8.23352673E-446723147 -530710.866 -> 530710.866 Inexact Rounded
-xadd134 add 7.0598608 -95908.35 -> -95901.2901 Inexact Rounded
-xcom134 compare 7.0598608 -95908.35 -> 1
-xdiv134 divide 7.0598608 -95908.35 -> -0.0000736104917 Inexact Rounded
-xdvi134 divideint 7.0598608 -95908.35 -> -0
-xmul134 multiply 7.0598608 -95908.35 -> -677099.601 Inexact Rounded
-xpow134 power 7.0598608 -95908 -> 4.57073877E-81407 Inexact Rounded
-xrem134 remainder 7.0598608 -95908.35 -> 7.0598608
-xsub134 subtract 7.0598608 -95908.35 -> 95915.4099 Inexact Rounded
-xadd135 add -7.91189845E+207202706 1532.71847E+509944335 -> 1.53271847E+509944338 Inexact Rounded
-xcom135 compare -7.91189845E+207202706 1532.71847E+509944335 -> -1
-xdiv135 divide -7.91189845E+207202706 1532.71847E+509944335 -> -5.16200372E-302741632 Inexact Rounded
-xdvi135 divideint -7.91189845E+207202706 1532.71847E+509944335 -> -0
-xmul135 multiply -7.91189845E+207202706 1532.71847E+509944335 -> -1.21267129E+717147045 Inexact Rounded
-xpow135 power -7.91189845E+207202706 2 -> 6.25981371E+414405413 Inexact Rounded
-xrem135 remainder -7.91189845E+207202706 1532.71847E+509944335 -> -7.91189845E+207202706
-xsub135 subtract -7.91189845E+207202706 1532.71847E+509944335 -> -1.53271847E+509944338 Inexact Rounded
-xadd136 add 208839370.E-215147432 -75.9420559 -> -75.9420559 Inexact Rounded
-xcom136 compare 208839370.E-215147432 -75.9420559 -> 1
-xdiv136 divide 208839370.E-215147432 -75.9420559 -> -2.74998310E-215147426 Inexact Rounded
-xdvi136 divideint 208839370.E-215147432 -75.9420559 -> -0
-xmul136 multiply 208839370.E-215147432 -75.9420559 -> -1.58596911E-215147422 Inexact Rounded
-xpow136 power 208839370.E-215147432 -76 -> Infinity Overflow Inexact Rounded
-xrem136 remainder 208839370.E-215147432 -75.9420559 -> 2.08839370E-215147424
-xsub136 subtract 208839370.E-215147432 -75.9420559 -> 75.9420559 Inexact Rounded
-xadd137 add 427.754244E-353328369 4705.0796 -> 4705.07960 Inexact Rounded
-xcom137 compare 427.754244E-353328369 4705.0796 -> -1
-xdiv137 divide 427.754244E-353328369 4705.0796 -> 9.09132853E-353328371 Inexact Rounded
-xdvi137 divideint 427.754244E-353328369 4705.0796 -> 0
-xmul137 multiply 427.754244E-353328369 4705.0796 -> 2.01261777E-353328363 Inexact Rounded
-xpow137 power 427.754244E-353328369 4705 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem137 remainder 427.754244E-353328369 4705.0796 -> 4.27754244E-353328367
-xsub137 subtract 427.754244E-353328369 4705.0796 -> -4705.07960 Inexact Rounded
-xadd138 add 44911.089 -95.1733605E-313081848 -> 44911.0890 Inexact Rounded
-xcom138 compare 44911.089 -95.1733605E-313081848 -> 1
-xdiv138 divide 44911.089 -95.1733605E-313081848 -> -4.71887183E+313081850 Inexact Rounded
-xdvi138 divideint 44911.089 -95.1733605E-313081848 -> NaN Division_impossible
-xmul138 multiply 44911.089 -95.1733605E-313081848 -> -4.27433926E-313081842 Inexact Rounded
-xpow138 power 44911.089 -10 -> 2.99546425E-47 Inexact Rounded
-xrem138 remainder 44911.089 -95.1733605E-313081848 -> NaN Division_impossible
-xsub138 subtract 44911.089 -95.1733605E-313081848 -> 44911.0890 Inexact Rounded
-xadd139 add 452371821. -4109709.19 -> 448262112 Inexact Rounded
-xcom139 compare 452371821. -4109709.19 -> 1
-xdiv139 divide 452371821. -4109709.19 -> -110.073925 Inexact Rounded
-xdvi139 divideint 452371821. -4109709.19 -> -110
-xmul139 multiply 452371821. -4109709.19 -> -1.85911663E+15 Inexact Rounded
-xpow139 power 452371821. -4109709 -> 1.15528807E-35571568 Inexact Rounded
-xrem139 remainder 452371821. -4109709.19 -> 303810.10
-xsub139 subtract 452371821. -4109709.19 -> 456481530 Inexact Rounded
-xadd140 add 94007.4392 -9467725.5E+681898234 -> -9.46772550E+681898240 Inexact Rounded
-xcom140 compare 94007.4392 -9467725.5E+681898234 -> 1
-xdiv140 divide 94007.4392 -9467725.5E+681898234 -> -9.92925272E-681898237 Inexact Rounded
-xdvi140 divideint 94007.4392 -9467725.5E+681898234 -> -0
-xmul140 multiply 94007.4392 -9467725.5E+681898234 -> -8.90036629E+681898245 Inexact Rounded
-xpow140 power 94007.4392 -9 -> 1.74397397E-45 Inexact Rounded
-xrem140 remainder 94007.4392 -9467725.5E+681898234 -> 94007.4392
-xsub140 subtract 94007.4392 -9467725.5E+681898234 -> 9.46772550E+681898240 Inexact Rounded
-xadd141 add 99147554.0E-751410586 38313.6423 -> 38313.6423 Inexact Rounded
-xcom141 compare 99147554.0E-751410586 38313.6423 -> -1
-xdiv141 divide 99147554.0E-751410586 38313.6423 -> 2.58778722E-751410583 Inexact Rounded
-xdvi141 divideint 99147554.0E-751410586 38313.6423 -> 0
-xmul141 multiply 99147554.0E-751410586 38313.6423 -> 3.79870392E-751410574 Inexact Rounded
-xpow141 power 99147554.0E-751410586 38314 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem141 remainder 99147554.0E-751410586 38313.6423 -> 9.91475540E-751410579
-xsub141 subtract 99147554.0E-751410586 38313.6423 -> -38313.6423 Inexact Rounded
-xadd142 add -7919.30254 -669.607854 -> -8588.91039 Inexact Rounded
-xcom142 compare -7919.30254 -669.607854 -> -1
-xdiv142 divide -7919.30254 -669.607854 -> 11.8267767 Inexact Rounded
-xdvi142 divideint -7919.30254 -669.607854 -> 11
-xmul142 multiply -7919.30254 -669.607854 -> 5302827.18 Inexact Rounded
-xpow142 power -7919.30254 -670 -> 7.58147724E-2613 Inexact Rounded
-xrem142 remainder -7919.30254 -669.607854 -> -553.616146
-xsub142 subtract -7919.30254 -669.607854 -> -7249.69469 Inexact Rounded
-xadd143 add 461.58280E+136110821 710666052.E-383754231 -> 4.61582800E+136110823 Inexact Rounded
-xcom143 compare 461.58280E+136110821 710666052.E-383754231 -> 1
-xdiv143 divide 461.58280E+136110821 710666052.E-383754231 -> 6.49507316E+519865045 Inexact Rounded
-xdvi143 divideint 461.58280E+136110821 710666052.E-383754231 -> NaN Division_impossible
-xmul143 multiply 461.58280E+136110821 710666052.E-383754231 -> 3.28031226E-247643399 Inexact Rounded
-xpow143 power 461.58280E+136110821 7 -> 4.46423781E+952775765 Inexact Rounded
-xrem143 remainder 461.58280E+136110821 710666052.E-383754231 -> NaN Division_impossible
-xsub143 subtract 461.58280E+136110821 710666052.E-383754231 -> 4.61582800E+136110823 Inexact Rounded
-xadd144 add 3455755.47E-112465506 771.674306 -> 771.674306 Inexact Rounded
-xcom144 compare 3455755.47E-112465506 771.674306 -> -1
-xdiv144 divide 3455755.47E-112465506 771.674306 -> 4.47825649E-112465503 Inexact Rounded
-xdvi144 divideint 3455755.47E-112465506 771.674306 -> 0
-xmul144 multiply 3455755.47E-112465506 771.674306 -> 2.66671770E-112465497 Inexact Rounded
-xpow144 power 3455755.47E-112465506 772 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem144 remainder 3455755.47E-112465506 771.674306 -> 3.45575547E-112465500
-xsub144 subtract 3455755.47E-112465506 771.674306 -> -771.674306 Inexact Rounded
-xadd145 add -477067757.E-961684940 7.70122608E-741072245 -> 7.70122608E-741072245 Inexact Rounded
-xcom145 compare -477067757.E-961684940 7.70122608E-741072245 -> -1
-xdiv145 divide -477067757.E-961684940 7.70122608E-741072245 -> -6.19469877E-220612688 Inexact Rounded
-xdvi145 divideint -477067757.E-961684940 7.70122608E-741072245 -> -0
-xmul145 multiply -477067757.E-961684940 7.70122608E-741072245 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xpow145 power -477067757.E-961684940 8 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem145 remainder -477067757.E-961684940 7.70122608E-741072245 -> -4.77067757E-961684932
-xsub145 subtract -477067757.E-961684940 7.70122608E-741072245 -> -7.70122608E-741072245 Inexact Rounded
-xadd146 add 76482.352 8237806.8 -> 8314289.15 Inexact Rounded
-xcom146 compare 76482.352 8237806.8 -> -1
-xdiv146 divide 76482.352 8237806.8 -> 0.00928430999 Inexact Rounded
-xdvi146 divideint 76482.352 8237806.8 -> 0
-xmul146 multiply 76482.352 8237806.8 -> 6.30046839E+11 Inexact Rounded
-xpow146 power 76482.352 8237807 -> 8.44216559E+40229834 Inexact Rounded
-xrem146 remainder 76482.352 8237806.8 -> 76482.352
-xsub146 subtract 76482.352 8237806.8 -> -8161324.45 Inexact Rounded
-xadd147 add 1.21505164E-565556504 9.26146573 -> 9.26146573 Inexact Rounded
-xcom147 compare 1.21505164E-565556504 9.26146573 -> -1
-xdiv147 divide 1.21505164E-565556504 9.26146573 -> 1.31194314E-565556505 Inexact Rounded
-xdvi147 divideint 1.21505164E-565556504 9.26146573 -> 0
-xmul147 multiply 1.21505164E-565556504 9.26146573 -> 1.12531591E-565556503 Inexact Rounded
-xpow147 power 1.21505164E-565556504 9 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem147 remainder 1.21505164E-565556504 9.26146573 -> 1.21505164E-565556504
-xsub147 subtract 1.21505164E-565556504 9.26146573 -> -9.26146573 Inexact Rounded
-xadd148 add -8303060.25E-169894883 901561.985 -> 901561.985 Inexact Rounded
-xcom148 compare -8303060.25E-169894883 901561.985 -> -1
-xdiv148 divide -8303060.25E-169894883 901561.985 -> -9.20963881E-169894883 Inexact Rounded
-xdvi148 divideint -8303060.25E-169894883 901561.985 -> -0
-xmul148 multiply -8303060.25E-169894883 901561.985 -> -7.48572348E-169894871 Inexact Rounded
-xpow148 power -8303060.25E-169894883 901562 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem148 remainder -8303060.25E-169894883 901561.985 -> -8.30306025E-169894877
-xsub148 subtract -8303060.25E-169894883 901561.985 -> -901561.985 Inexact Rounded
-xadd149 add -592464.92 71445510.7 -> 70853045.8 Inexact Rounded
-xcom149 compare -592464.92 71445510.7 -> -1
-xdiv149 divide -592464.92 71445510.7 -> -0.00829254231 Inexact Rounded
-xdvi149 divideint -592464.92 71445510.7 -> -0
-xmul149 multiply -592464.92 71445510.7 -> -4.23289588E+13 Inexact Rounded
-xpow149 power -592464.92 71445511 -> -1.58269108E+412430832 Inexact Rounded
-xrem149 remainder -592464.92 71445510.7 -> -592464.92
-xsub149 subtract -592464.92 71445510.7 -> -72037975.6 Inexact Rounded
-xadd150 add -73774.4165 -39.8243027 -> -73814.2408 Inexact Rounded
-xcom150 compare -73774.4165 -39.8243027 -> -1
-xdiv150 divide -73774.4165 -39.8243027 -> 1852.49738 Inexact Rounded
-xdvi150 divideint -73774.4165 -39.8243027 -> 1852
-xmul150 multiply -73774.4165 -39.8243027 -> 2938014.69 Inexact Rounded
-xpow150 power -73774.4165 -40 -> 1.92206765E-195 Inexact Rounded
-xrem150 remainder -73774.4165 -39.8243027 -> -19.8078996
-xsub150 subtract -73774.4165 -39.8243027 -> -73734.5922 Inexact Rounded
-xadd151 add -524724715. -55763.7937 -> -524780479 Inexact Rounded
-xcom151 compare -524724715. -55763.7937 -> -1
-xdiv151 divide -524724715. -55763.7937 -> 9409.77434 Inexact Rounded
-xdvi151 divideint -524724715. -55763.7937 -> 9409
-xmul151 multiply -524724715. -55763.7937 -> 2.92606408E+13 Inexact Rounded
-xpow151 power -524724715. -55764 -> 5.47898351E-486259 Inexact Rounded
-xrem151 remainder -524724715. -55763.7937 -> -43180.0767
-xsub151 subtract -524724715. -55763.7937 -> -524668951 Inexact Rounded
-xadd152 add 7.53800427 784873768E-9981146 -> 7.53800427 Inexact Rounded
-xcom152 compare 7.53800427 784873768E-9981146 -> 1
-xdiv152 divide 7.53800427 784873768E-9981146 -> 9.60409760E+9981137 Inexact Rounded
-xdvi152 divideint 7.53800427 784873768E-9981146 -> NaN Division_impossible
-xmul152 multiply 7.53800427 784873768E-9981146 -> 5.91638181E-9981137 Inexact Rounded
-xpow152 power 7.53800427 8 -> 10424399.2 Inexact Rounded
-xrem152 remainder 7.53800427 784873768E-9981146 -> NaN Division_impossible
-xsub152 subtract 7.53800427 784873768E-9981146 -> 7.53800427 Inexact Rounded
-xadd153 add 37.6027452 7.22454233 -> 44.8272875 Inexact Rounded
-xcom153 compare 37.6027452 7.22454233 -> 1
-xdiv153 divide 37.6027452 7.22454233 -> 5.20486191 Inexact Rounded
-xdvi153 divideint 37.6027452 7.22454233 -> 5
-xmul153 multiply 37.6027452 7.22454233 -> 271.662624 Inexact Rounded
-xpow153 power 37.6027452 7 -> 1.06300881E+11 Inexact Rounded
-xrem153 remainder 37.6027452 7.22454233 -> 1.48003355
-xsub153 subtract 37.6027452 7.22454233 -> 30.3782029 Inexact Rounded
-xadd154 add 2447660.39 -36981.4253 -> 2410678.96 Inexact Rounded
-xcom154 compare 2447660.39 -36981.4253 -> 1
-xdiv154 divide 2447660.39 -36981.4253 -> -66.1862102 Inexact Rounded
-xdvi154 divideint 2447660.39 -36981.4253 -> -66
-xmul154 multiply 2447660.39 -36981.4253 -> -9.05179699E+10 Inexact Rounded
-xpow154 power 2447660.39 -36981 -> 3.92066064E-236263 Inexact Rounded
-xrem154 remainder 2447660.39 -36981.4253 -> 6886.3202
-xsub154 subtract 2447660.39 -36981.4253 -> 2484641.82 Inexact Rounded
-xadd155 add 2160.36419 1418.33574E+656265382 -> 1.41833574E+656265385 Inexact Rounded
-xcom155 compare 2160.36419 1418.33574E+656265382 -> -1
-xdiv155 divide 2160.36419 1418.33574E+656265382 -> 1.52316841E-656265382 Inexact Rounded
-xdvi155 divideint 2160.36419 1418.33574E+656265382 -> 0
-xmul155 multiply 2160.36419 1418.33574E+656265382 -> 3.06412174E+656265388 Inexact Rounded
-xpow155 power 2160.36419 1 -> 2160.36419
-xrem155 remainder 2160.36419 1418.33574E+656265382 -> 2160.36419
-xsub155 subtract 2160.36419 1418.33574E+656265382 -> -1.41833574E+656265385 Inexact Rounded
-xadd156 add 8926.44939 54.9430027 -> 8981.39239 Inexact Rounded
-xcom156 compare 8926.44939 54.9430027 -> 1
-xdiv156 divide 8926.44939 54.9430027 -> 162.467447 Inexact Rounded
-xdvi156 divideint 8926.44939 54.9430027 -> 162
-xmul156 multiply 8926.44939 54.9430027 -> 490445.933 Inexact Rounded
-xpow156 power 8926.44939 55 -> 1.93789877E+217 Inexact Rounded
-xrem156 remainder 8926.44939 54.9430027 -> 25.6829526
-xsub156 subtract 8926.44939 54.9430027 -> 8871.50639 Inexact Rounded
-xadd157 add 861588029 -41657398E+77955925 -> -4.16573980E+77955932 Inexact Rounded
-xcom157 compare 861588029 -41657398E+77955925 -> 1
-xdiv157 divide 861588029 -41657398E+77955925 -> -2.06827135E-77955924 Inexact Rounded
-xdvi157 divideint 861588029 -41657398E+77955925 -> -0
-xmul157 multiply 861588029 -41657398E+77955925 -> -3.58915154E+77955941 Inexact Rounded
-xpow157 power 861588029 -4 -> 1.81468553E-36 Inexact Rounded
-xrem157 remainder 861588029 -41657398E+77955925 -> 861588029
-xsub157 subtract 861588029 -41657398E+77955925 -> 4.16573980E+77955932 Inexact Rounded
-xadd158 add -34.5253062 52.6722019 -> 18.1468957
-xcom158 compare -34.5253062 52.6722019 -> -1
-xdiv158 divide -34.5253062 52.6722019 -> -0.655474899 Inexact Rounded
-xdvi158 divideint -34.5253062 52.6722019 -> -0
-xmul158 multiply -34.5253062 52.6722019 -> -1818.52390 Inexact Rounded
-xpow158 power -34.5253062 53 -> -3.32115821E+81 Inexact Rounded
-xrem158 remainder -34.5253062 52.6722019 -> -34.5253062
-xsub158 subtract -34.5253062 52.6722019 -> -87.1975081
-xadd159 add -18861647. 99794586.7 -> 80932939.7
-xcom159 compare -18861647. 99794586.7 -> -1
-xdiv159 divide -18861647. 99794586.7 -> -0.189004711 Inexact Rounded
-xdvi159 divideint -18861647. 99794586.7 -> -0
-xmul159 multiply -18861647. 99794586.7 -> -1.88229027E+15 Inexact Rounded
-xpow159 power -18861647. 99794587 -> -4.28957459E+726063462 Inexact Rounded
-xrem159 remainder -18861647. 99794586.7 -> -18861647.0
-xsub159 subtract -18861647. 99794586.7 -> -118656234 Inexact Rounded
-xadd160 add 322192.407 461.67044 -> 322654.077 Inexact Rounded
-xcom160 compare 322192.407 461.67044 -> 1
-xdiv160 divide 322192.407 461.67044 -> 697.883986 Inexact Rounded
-xdvi160 divideint 322192.407 461.67044 -> 697
-xmul160 multiply 322192.407 461.67044 -> 148746710 Inexact Rounded
-xpow160 power 322192.407 462 -> 5.61395873E+2544 Inexact Rounded
-xrem160 remainder 322192.407 461.67044 -> 408.11032
-xsub160 subtract 322192.407 461.67044 -> 321730.737 Inexact Rounded
-xadd161 add -896298518E+61412314 78873.8049 -> -8.96298518E+61412322 Inexact Rounded
-xcom161 compare -896298518E+61412314 78873.8049 -> -1
-xdiv161 divide -896298518E+61412314 78873.8049 -> -1.13637033E+61412318 Inexact Rounded
-xdvi161 divideint -896298518E+61412314 78873.8049 -> NaN Division_impossible
-xmul161 multiply -896298518E+61412314 78873.8049 -> -7.06944744E+61412327 Inexact Rounded
-xpow161 power -896298518E+61412314 78874 -> Infinity Overflow Inexact Rounded
-xrem161 remainder -896298518E+61412314 78873.8049 -> NaN Division_impossible
-xsub161 subtract -896298518E+61412314 78873.8049 -> -8.96298518E+61412322 Inexact Rounded
-xadd162 add 293.773732 479899052E+789950177 -> 4.79899052E+789950185 Inexact Rounded
-xcom162 compare 293.773732 479899052E+789950177 -> -1
-xdiv162 divide 293.773732 479899052E+789950177 -> 6.12157350E-789950184 Inexact Rounded
-xdvi162 divideint 293.773732 479899052E+789950177 -> 0
-xmul162 multiply 293.773732 479899052E+789950177 -> 1.40981735E+789950188 Inexact Rounded
-xpow162 power 293.773732 5 -> 2.18808809E+12 Inexact Rounded
-xrem162 remainder 293.773732 479899052E+789950177 -> 293.773732
-xsub162 subtract 293.773732 479899052E+789950177 -> -4.79899052E+789950185 Inexact Rounded
-xadd163 add -103519362 51897955.3 -> -51621406.7
-xcom163 compare -103519362 51897955.3 -> -1
-xdiv163 divide -103519362 51897955.3 -> -1.99467130 Inexact Rounded
-xdvi163 divideint -103519362 51897955.3 -> -1
-xmul163 multiply -103519362 51897955.3 -> -5.37244322E+15 Inexact Rounded
-xpow163 power -103519362 51897955 -> -4.28858229E+415963229 Inexact Rounded
-xrem163 remainder -103519362 51897955.3 -> -51621406.7
-xsub163 subtract -103519362 51897955.3 -> -155417317 Inexact Rounded
-xadd164 add 37380.7802 -277719788. -> -277682407 Inexact Rounded
-xcom164 compare 37380.7802 -277719788. -> 1
-xdiv164 divide 37380.7802 -277719788. -> -0.000134598908 Inexact Rounded
-xdvi164 divideint 37380.7802 -277719788. -> -0
-xmul164 multiply 37380.7802 -277719788. -> -1.03813824E+13 Inexact Rounded
-xpow164 power 37380.7802 -277719788 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem164 remainder 37380.7802 -277719788. -> 37380.7802
-xsub164 subtract 37380.7802 -277719788. -> 277757169 Inexact Rounded
-xadd165 add 320133844. -977517477 -> -657383633
-xcom165 compare 320133844. -977517477 -> 1
-xdiv165 divide 320133844. -977517477 -> -0.327496798 Inexact Rounded
-xdvi165 divideint 320133844. -977517477 -> -0
-xmul165 multiply 320133844. -977517477 -> -3.12936427E+17 Inexact Rounded
-xpow165 power 320133844. -977517477 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem165 remainder 320133844. -977517477 -> 320133844
-xsub165 subtract 320133844. -977517477 -> 1.29765132E+9 Inexact Rounded
-xadd166 add 721776701E+933646161 -5689279.64E+669903645 -> 7.21776701E+933646169 Inexact Rounded
-xcom166 compare 721776701E+933646161 -5689279.64E+669903645 -> 1
-xdiv166 divide 721776701E+933646161 -5689279.64E+669903645 -> -1.26866097E+263742518 Inexact Rounded
-xdvi166 divideint 721776701E+933646161 -5689279.64E+669903645 -> NaN Division_impossible
-xmul166 multiply 721776701E+933646161 -5689279.64E+669903645 -> -Infinity Inexact Overflow Rounded
-xpow166 power 721776701E+933646161 -6 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem166 remainder 721776701E+933646161 -5689279.64E+669903645 -> NaN Division_impossible
-xsub166 subtract 721776701E+933646161 -5689279.64E+669903645 -> 7.21776701E+933646169 Inexact Rounded
-xadd167 add -5409.00482 -2.16149386 -> -5411.16631 Inexact Rounded
-xcom167 compare -5409.00482 -2.16149386 -> -1
-xdiv167 divide -5409.00482 -2.16149386 -> 2502.43821 Inexact Rounded
-xdvi167 divideint -5409.00482 -2.16149386 -> 2502
-xmul167 multiply -5409.00482 -2.16149386 -> 11691.5307 Inexact Rounded
-xpow167 power -5409.00482 -2 -> 3.41794652E-8 Inexact Rounded
-xrem167 remainder -5409.00482 -2.16149386 -> -0.94718228
-xsub167 subtract -5409.00482 -2.16149386 -> -5406.84333 Inexact Rounded
-xadd168 add -957960.367 322.858170 -> -957637.509 Inexact Rounded
-xcom168 compare -957960.367 322.858170 -> -1
-xdiv168 divide -957960.367 322.858170 -> -2967.12444 Inexact Rounded
-xdvi168 divideint -957960.367 322.858170 -> -2967
-xmul168 multiply -957960.367 322.858170 -> -309285331 Inexact Rounded
-xpow168 power -957960.367 323 -> -9.44617460E+1931 Inexact Rounded
-xrem168 remainder -957960.367 322.858170 -> -40.176610
-xsub168 subtract -957960.367 322.858170 -> -958283.225 Inexact Rounded
-xadd169 add -11817.8754E+613893442 -3.84735082E+888333249 -> -3.84735082E+888333249 Inexact Rounded
-xcom169 compare -11817.8754E+613893442 -3.84735082E+888333249 -> 1
-xdiv169 divide -11817.8754E+613893442 -3.84735082E+888333249 -> 3.07169165E-274439804 Inexact Rounded
-xdvi169 divideint -11817.8754E+613893442 -3.84735082E+888333249 -> 0
-xmul169 multiply -11817.8754E+613893442 -3.84735082E+888333249 -> Infinity Inexact Overflow Rounded
-xpow169 power -11817.8754E+613893442 -4 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem169 remainder -11817.8754E+613893442 -3.84735082E+888333249 -> -1.18178754E+613893446
-xsub169 subtract -11817.8754E+613893442 -3.84735082E+888333249 -> 3.84735082E+888333249 Inexact Rounded
-xadd170 add 840258203 58363.980E-906584723 -> 840258203 Inexact Rounded
-xcom170 compare 840258203 58363.980E-906584723 -> 1
-xdiv170 divide 840258203 58363.980E-906584723 -> 1.43968626E+906584727 Inexact Rounded
-xdvi170 divideint 840258203 58363.980E-906584723 -> NaN Division_impossible
-xmul170 multiply 840258203 58363.980E-906584723 -> 4.90408130E-906584710 Inexact Rounded
-xpow170 power 840258203 6 -> 3.51946431E+53 Inexact Rounded
-xrem170 remainder 840258203 58363.980E-906584723 -> NaN Division_impossible
-xsub170 subtract 840258203 58363.980E-906584723 -> 840258203 Inexact Rounded
-xadd171 add -205842096. -191342.721 -> -206033439 Inexact Rounded
-xcom171 compare -205842096. -191342.721 -> -1
-xdiv171 divide -205842096. -191342.721 -> 1075.77699 Inexact Rounded
-xdvi171 divideint -205842096. -191342.721 -> 1075
-xmul171 multiply -205842096. -191342.721 -> 3.93863867E+13 Inexact Rounded
-xpow171 power -205842096. -191343 -> -2.66955553E-1590737 Inexact Rounded
-xrem171 remainder -205842096. -191342.721 -> -148670.925
-xsub171 subtract -205842096. -191342.721 -> -205650753 Inexact Rounded
-xadd172 add 42501124. 884.938498E+123341480 -> 8.84938498E+123341482 Inexact Rounded
-xcom172 compare 42501124. 884.938498E+123341480 -> -1
-xdiv172 divide 42501124. 884.938498E+123341480 -> 4.80272065E-123341476 Inexact Rounded
-xdvi172 divideint 42501124. 884.938498E+123341480 -> 0
-xmul172 multiply 42501124. 884.938498E+123341480 -> 3.76108808E+123341490 Inexact Rounded
-xpow172 power 42501124. 9 -> 4.52484536E+68 Inexact Rounded
-xrem172 remainder 42501124. 884.938498E+123341480 -> 42501124
-xsub172 subtract 42501124. 884.938498E+123341480 -> -8.84938498E+123341482 Inexact Rounded
-xadd173 add -57809452. -620380746 -> -678190198
-xcom173 compare -57809452. -620380746 -> 1
-xdiv173 divide -57809452. -620380746 -> 0.0931838268 Inexact Rounded
-xdvi173 divideint -57809452. -620380746 -> 0
-xmul173 multiply -57809452. -620380746 -> 3.58638710E+16 Inexact Rounded
-xpow173 power -57809452. -620380746 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem173 remainder -57809452. -620380746 -> -57809452
-xsub173 subtract -57809452. -620380746 -> 562571294
-xadd174 add -8022370.31 9858581.6 -> 1836211.29
-xcom174 compare -8022370.31 9858581.6 -> -1
-xdiv174 divide -8022370.31 9858581.6 -> -0.813744881 Inexact Rounded
-xdvi174 divideint -8022370.31 9858581.6 -> -0
-xmul174 multiply -8022370.31 9858581.6 -> -7.90891923E+13 Inexact Rounded
-xpow174 power -8022370.31 9858582 -> 2.34458249E+68066634 Inexact Rounded
-xrem174 remainder -8022370.31 9858581.6 -> -8022370.31
-xsub174 subtract -8022370.31 9858581.6 -> -17880951.9 Inexact Rounded
-xadd175 add 2.49065060E+592139141 -5432.72014E-419965357 -> 2.49065060E+592139141 Inexact Rounded
-xcom175 compare 2.49065060E+592139141 -5432.72014E-419965357 -> 1
-xdiv175 divide 2.49065060E+592139141 -5432.72014E-419965357 -> -Infinity Inexact Overflow Rounded
-xdvi175 divideint 2.49065060E+592139141 -5432.72014E-419965357 -> NaN Division_impossible
-xmul175 multiply 2.49065060E+592139141 -5432.72014E-419965357 -> -1.35310077E+172173788 Inexact Rounded
-xpow175 power 2.49065060E+592139141 -5 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem175 remainder 2.49065060E+592139141 -5432.72014E-419965357 -> NaN Division_impossible
-xsub175 subtract 2.49065060E+592139141 -5432.72014E-419965357 -> 2.49065060E+592139141 Inexact Rounded
-xadd176 add -697273715E-242824870 -3.81757506 -> -3.81757506 Inexact Rounded
-xcom176 compare -697273715E-242824870 -3.81757506 -> 1
-xdiv176 divide -697273715E-242824870 -3.81757506 -> 1.82648331E-242824862 Inexact Rounded
-xdvi176 divideint -697273715E-242824870 -3.81757506 -> 0
-xmul176 multiply -697273715E-242824870 -3.81757506 -> 2.66189474E-242824861 Inexact Rounded
-xpow176 power -697273715E-242824870 -4 -> 4.23045251E+971299444 Inexact Rounded
-xrem176 remainder -697273715E-242824870 -3.81757506 -> -6.97273715E-242824862
-xsub176 subtract -697273715E-242824870 -3.81757506 -> 3.81757506 Inexact Rounded
-xadd177 add -7.42204403E-315716280 -8156111.67E+283261636 -> -8.15611167E+283261642 Inexact Rounded
-xcom177 compare -7.42204403E-315716280 -8156111.67E+283261636 -> 1
-xdiv177 divide -7.42204403E-315716280 -8156111.67E+283261636 -> 9.09997843E-598977923 Inexact Rounded
-xdvi177 divideint -7.42204403E-315716280 -8156111.67E+283261636 -> 0
-xmul177 multiply -7.42204403E-315716280 -8156111.67E+283261636 -> 6.05350199E-32454637 Inexact Rounded
-xpow177 power -7.42204403E-315716280 -8 -> Infinity Overflow Inexact Rounded
-xrem177 remainder -7.42204403E-315716280 -8156111.67E+283261636 -> -7.42204403E-315716280
-xsub177 subtract -7.42204403E-315716280 -8156111.67E+283261636 -> 8.15611167E+283261642 Inexact Rounded
-xadd178 add 738063892 89900467.8 -> 827964360 Inexact Rounded
-xcom178 compare 738063892 89900467.8 -> 1
-xdiv178 divide 738063892 89900467.8 -> 8.20978923 Inexact Rounded
-xdvi178 divideint 738063892 89900467.8 -> 8
-xmul178 multiply 738063892 89900467.8 -> 6.63522892E+16 Inexact Rounded
-xpow178 power 738063892 89900468 -> 1.53166723E+797245797 Inexact Rounded
-xrem178 remainder 738063892 89900467.8 -> 18860149.6
-xsub178 subtract 738063892 89900467.8 -> 648163424 Inexact Rounded
-xadd179 add -630309366 -884783.338E-21595410 -> -630309366 Inexact Rounded
-xcom179 compare -630309366 -884783.338E-21595410 -> -1
-xdiv179 divide -630309366 -884783.338E-21595410 -> 7.12388377E+21595412 Inexact Rounded
-xdvi179 divideint -630309366 -884783.338E-21595410 -> NaN Division_impossible
-xmul179 multiply -630309366 -884783.338E-21595410 -> 5.57687225E-21595396 Inexact Rounded
-xpow179 power -630309366 -9 -> -6.36819210E-80 Inexact Rounded
-xrem179 remainder -630309366 -884783.338E-21595410 -> NaN Division_impossible
-xsub179 subtract -630309366 -884783.338E-21595410 -> -630309366 Inexact Rounded
-xadd180 add 613.207774 -3007.78608 -> -2394.57831 Inexact Rounded
-xcom180 compare 613.207774 -3007.78608 -> 1
-xdiv180 divide 613.207774 -3007.78608 -> -0.203873466 Inexact Rounded
-xdvi180 divideint 613.207774 -3007.78608 -> -0
-xmul180 multiply 613.207774 -3007.78608 -> -1844397.81 Inexact Rounded
-xpow180 power 613.207774 -3008 -> 7.51939160E-8386 Inexact Rounded
-xrem180 remainder 613.207774 -3007.78608 -> 613.207774
-xsub180 subtract 613.207774 -3007.78608 -> 3620.99385 Inexact Rounded
-xadd181 add -93006222.3 -3.08964619 -> -93006225.4 Inexact Rounded
-xcom181 compare -93006222.3 -3.08964619 -> -1
-xdiv181 divide -93006222.3 -3.08964619 -> 30102547.9 Inexact Rounded
-xdvi181 divideint -93006222.3 -3.08964619 -> 30102547
-xmul181 multiply -93006222.3 -3.08964619 -> 287356320 Inexact Rounded
-xpow181 power -93006222.3 -3 -> -1.24297956E-24 Inexact Rounded
-xrem181 remainder -93006222.3 -3.08964619 -> -2.65215407
-xsub181 subtract -93006222.3 -3.08964619 -> -93006219.2 Inexact Rounded
-xadd182 add -18116.0621 34096.306E-270347092 -> -18116.0621 Inexact Rounded
-xcom182 compare -18116.0621 34096.306E-270347092 -> -1
-xdiv182 divide -18116.0621 34096.306E-270347092 -> -5.31320375E+270347091 Inexact Rounded
-xdvi182 divideint -18116.0621 34096.306E-270347092 -> NaN Division_impossible
-xmul182 multiply -18116.0621 34096.306E-270347092 -> -6.17690797E-270347084 Inexact Rounded
-xpow182 power -18116.0621 3 -> -5.94554133E+12 Inexact Rounded
-xrem182 remainder -18116.0621 34096.306E-270347092 -> NaN Division_impossible
-xsub182 subtract -18116.0621 34096.306E-270347092 -> -18116.0621 Inexact Rounded
-xadd183 add 19272386.9 -410442379. -> -391169992 Inexact Rounded
-xcom183 compare 19272386.9 -410442379. -> 1
-xdiv183 divide 19272386.9 -410442379. -> -0.0469551584 Inexact Rounded
-xdvi183 divideint 19272386.9 -410442379. -> -0
-xmul183 multiply 19272386.9 -410442379. -> -7.91020433E+15 Inexact Rounded
-xpow183 power 19272386.9 -410442379 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem183 remainder 19272386.9 -410442379. -> 19272386.9
-xsub183 subtract 19272386.9 -410442379. -> 429714766 Inexact Rounded
-xadd184 add 4180.30821 -1.6439543E-624759104 -> 4180.30821 Inexact Rounded
-xcom184 compare 4180.30821 -1.6439543E-624759104 -> 1
-xdiv184 divide 4180.30821 -1.6439543E-624759104 -> -2.54283724E+624759107 Inexact Rounded
-xdvi184 divideint 4180.30821 -1.6439543E-624759104 -> NaN Division_impossible
-xmul184 multiply 4180.30821 -1.6439543E-624759104 -> -6.87223566E-624759101 Inexact Rounded
-xpow184 power 4180.30821 -2 -> 5.72246828E-8 Inexact Rounded
-xrem184 remainder 4180.30821 -1.6439543E-624759104 -> NaN Division_impossible
-xsub184 subtract 4180.30821 -1.6439543E-624759104 -> 4180.30821 Inexact Rounded
-xadd185 add 571.536725 389.899220 -> 961.435945
-xcom185 compare 571.536725 389.899220 -> 1
-xdiv185 divide 571.536725 389.899220 -> 1.46585757 Inexact Rounded
-xdvi185 divideint 571.536725 389.899220 -> 1
-xmul185 multiply 571.536725 389.899220 -> 222841.723 Inexact Rounded
-xpow185 power 571.536725 390 -> 1.76691373E+1075 Inexact Rounded
-xrem185 remainder 571.536725 389.899220 -> 181.637505
-xsub185 subtract 571.536725 389.899220 -> 181.637505
-xadd186 add -622007306.E+159924886 -126.971745 -> -6.22007306E+159924894 Inexact Rounded
-xcom186 compare -622007306.E+159924886 -126.971745 -> -1
-xdiv186 divide -622007306.E+159924886 -126.971745 -> 4.89878521E+159924892 Inexact Rounded
-xdvi186 divideint -622007306.E+159924886 -126.971745 -> NaN Division_impossible
-xmul186 multiply -622007306.E+159924886 -126.971745 -> 7.89773530E+159924896 Inexact Rounded
-xpow186 power -622007306.E+159924886 -127 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem186 remainder -622007306.E+159924886 -126.971745 -> NaN Division_impossible
-xsub186 subtract -622007306.E+159924886 -126.971745 -> -6.22007306E+159924894 Inexact Rounded
-xadd187 add -29.356551E-282816139 37141748E-903397821 -> -2.93565510E-282816138 Inexact Rounded
-xcom187 compare -29.356551E-282816139 37141748E-903397821 -> -1
-xdiv187 divide -29.356551E-282816139 37141748E-903397821 -> -7.90392283E+620581675 Inexact Rounded
-xdvi187 divideint -29.356551E-282816139 37141748E-903397821 -> NaN Division_impossible
-xmul187 multiply -29.356551E-282816139 37141748E-903397821 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xpow187 power -29.356551E-282816139 4 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem187 remainder -29.356551E-282816139 37141748E-903397821 -> NaN Division_impossible
-xsub187 subtract -29.356551E-282816139 37141748E-903397821 -> -2.93565510E-282816138 Inexact Rounded
-xadd188 add 92427442.4 674334898. -> 766762340 Inexact Rounded
-xcom188 compare 92427442.4 674334898. -> -1
-xdiv188 divide 92427442.4 674334898. -> 0.137064599 Inexact Rounded
-xdvi188 divideint 92427442.4 674334898. -> 0
-xmul188 multiply 92427442.4 674334898. -> 6.23270499E+16 Inexact Rounded
-xpow188 power 92427442.4 674334898 -> Infinity Overflow Inexact Rounded
-xrem188 remainder 92427442.4 674334898. -> 92427442.4
-xsub188 subtract 92427442.4 674334898. -> -581907456 Inexact Rounded
-xadd189 add 44651895.7 -910508.438 -> 43741387.3 Inexact Rounded
-xcom189 compare 44651895.7 -910508.438 -> 1
-xdiv189 divide 44651895.7 -910508.438 -> -49.0406171 Inexact Rounded
-xdvi189 divideint 44651895.7 -910508.438 -> -49
-xmul189 multiply 44651895.7 -910508.438 -> -4.06559278E+13 Inexact Rounded
-xpow189 power 44651895.7 -910508 -> 3.72264277E-6965241 Inexact Rounded
-xrem189 remainder 44651895.7 -910508.438 -> 36982.238
-xsub189 subtract 44651895.7 -910508.438 -> 45562404.1 Inexact Rounded
-xadd190 add 647897872.E+374021790 -467.423029 -> 6.47897872E+374021798 Inexact Rounded
-xcom190 compare 647897872.E+374021790 -467.423029 -> 1
-xdiv190 divide 647897872.E+374021790 -467.423029 -> -1.38610601E+374021796 Inexact Rounded
-xdvi190 divideint 647897872.E+374021790 -467.423029 -> NaN Division_impossible
-xmul190 multiply 647897872.E+374021790 -467.423029 -> -3.02842386E+374021801 Inexact Rounded
-xpow190 power 647897872.E+374021790 -467 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem190 remainder 647897872.E+374021790 -467.423029 -> NaN Division_impossible
-xsub190 subtract 647897872.E+374021790 -467.423029 -> 6.47897872E+374021798 Inexact Rounded
-xadd191 add 25.2592149 59.0436981 -> 84.3029130
-xcom191 compare 25.2592149 59.0436981 -> -1
-xdiv191 divide 25.2592149 59.0436981 -> 0.427805434 Inexact Rounded
-xdvi191 divideint 25.2592149 59.0436981 -> 0
-xmul191 multiply 25.2592149 59.0436981 -> 1491.39746 Inexact Rounded
-xpow191 power 25.2592149 59 -> 5.53058435E+82 Inexact Rounded
-xrem191 remainder 25.2592149 59.0436981 -> 25.2592149
-xsub191 subtract 25.2592149 59.0436981 -> -33.7844832
-xadd192 add -6.850835 -1273.48240 -> -1280.33324 Inexact Rounded
-xcom192 compare -6.850835 -1273.48240 -> 1
-xdiv192 divide -6.850835 -1273.48240 -> 0.00537960713 Inexact Rounded
-xdvi192 divideint -6.850835 -1273.48240 -> 0
-xmul192 multiply -6.850835 -1273.48240 -> 8724.41780 Inexact Rounded
-xpow192 power -6.850835 -1273 -> -1.25462678E-1064 Inexact Rounded
-xrem192 remainder -6.850835 -1273.48240 -> -6.850835
-xsub192 subtract -6.850835 -1273.48240 -> 1266.63157 Inexact Rounded
-xadd193 add 174.272325 5638.16229 -> 5812.43462 Inexact Rounded
-xcom193 compare 174.272325 5638.16229 -> -1
-xdiv193 divide 174.272325 5638.16229 -> 0.0309094198 Inexact Rounded
-xdvi193 divideint 174.272325 5638.16229 -> 0
-xmul193 multiply 174.272325 5638.16229 -> 982575.651 Inexact Rounded
-xpow193 power 174.272325 5638 -> 1.11137724E+12636 Inexact Rounded
-xrem193 remainder 174.272325 5638.16229 -> 174.272325
-xsub193 subtract 174.272325 5638.16229 -> -5463.88997 Inexact Rounded
-xadd194 add 3455629.76 -8.27332322 -> 3455621.49 Inexact Rounded
-xcom194 compare 3455629.76 -8.27332322 -> 1
-xdiv194 divide 3455629.76 -8.27332322 -> -417683.399 Inexact Rounded
-xdvi194 divideint 3455629.76 -8.27332322 -> -417683
-xmul194 multiply 3455629.76 -8.27332322 -> -28589541.9 Inexact Rounded
-xpow194 power 3455629.76 -8 -> 4.91793015E-53 Inexact Rounded
-xrem194 remainder 3455629.76 -8.27332322 -> 3.29750074
-xsub194 subtract 3455629.76 -8.27332322 -> 3455638.03 Inexact Rounded
-xadd195 add -924337723E-640771235 86639377.1 -> 86639377.1 Inexact Rounded
-xcom195 compare -924337723E-640771235 86639377.1 -> -1
-xdiv195 divide -924337723E-640771235 86639377.1 -> -1.06687947E-640771234 Inexact Rounded
-xdvi195 divideint -924337723E-640771235 86639377.1 -> -0
-xmul195 multiply -924337723E-640771235 86639377.1 -> -8.00840446E-640771219 Inexact Rounded
-xpow195 power -924337723E-640771235 86639377 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem195 remainder -924337723E-640771235 86639377.1 -> -9.24337723E-640771227
-xsub195 subtract -924337723E-640771235 86639377.1 -> -86639377.1 Inexact Rounded
-xadd196 add -620236932.E+656823969 3364722.73 -> -6.20236932E+656823977 Inexact Rounded
-xcom196 compare -620236932.E+656823969 3364722.73 -> -1
-xdiv196 divide -620236932.E+656823969 3364722.73 -> -1.84335228E+656823971 Inexact Rounded
-xdvi196 divideint -620236932.E+656823969 3364722.73 -> NaN Division_impossible
-xmul196 multiply -620236932.E+656823969 3364722.73 -> -2.08692530E+656823984 Inexact Rounded
-xpow196 power -620236932.E+656823969 3364723 -> -Infinity Overflow Inexact Rounded
-xrem196 remainder -620236932.E+656823969 3364722.73 -> NaN Division_impossible
-xsub196 subtract -620236932.E+656823969 3364722.73 -> -6.20236932E+656823977 Inexact Rounded
-xadd197 add 9.10025079 702777882E-8192234 -> 9.10025079 Inexact Rounded
-xcom197 compare 9.10025079 702777882E-8192234 -> 1
-xdiv197 divide 9.10025079 702777882E-8192234 -> 1.29489715E+8192226 Inexact Rounded
-xdvi197 divideint 9.10025079 702777882E-8192234 -> NaN Division_impossible
-xmul197 multiply 9.10025079 702777882E-8192234 -> 6.39545498E-8192225 Inexact Rounded
-xpow197 power 9.10025079 7 -> 5168607.19 Inexact Rounded
-xrem197 remainder 9.10025079 702777882E-8192234 -> NaN Division_impossible
-xsub197 subtract 9.10025079 702777882E-8192234 -> 9.10025079 Inexact Rounded
-xadd198 add -18857539.9 813013129. -> 794155589 Inexact Rounded
-xcom198 compare -18857539.9 813013129. -> -1
-xdiv198 divide -18857539.9 813013129. -> -0.0231946315 Inexact Rounded
-xdvi198 divideint -18857539.9 813013129. -> -0
-xmul198 multiply -18857539.9 813013129. -> -1.53314275E+16 Inexact Rounded
-xpow198 power -18857539.9 813013129 -> -Infinity Overflow Inexact Rounded
-xrem198 remainder -18857539.9 813013129. -> -18857539.9
-xsub198 subtract -18857539.9 813013129. -> -831870669 Inexact Rounded
-xadd199 add -8.29530327 3243419.57E+35688332 -> 3.24341957E+35688338 Inexact Rounded
-xcom199 compare -8.29530327 3243419.57E+35688332 -> -1
-xdiv199 divide -8.29530327 3243419.57E+35688332 -> -2.55757946E-35688338 Inexact Rounded
-xdvi199 divideint -8.29530327 3243419.57E+35688332 -> -0
-xmul199 multiply -8.29530327 3243419.57E+35688332 -> -2.69051490E+35688339 Inexact Rounded
-xpow199 power -8.29530327 3 -> -570.816876 Inexact Rounded
-xrem199 remainder -8.29530327 3243419.57E+35688332 -> -8.29530327
-xsub199 subtract -8.29530327 3243419.57E+35688332 -> -3.24341957E+35688338 Inexact Rounded
-xadd200 add -57101683.5 763551341E+991491712 -> 7.63551341E+991491720 Inexact Rounded
-xcom200 compare -57101683.5 763551341E+991491712 -> -1
-xdiv200 divide -57101683.5 763551341E+991491712 -> -7.47843405E-991491714 Inexact Rounded
-xdvi200 divideint -57101683.5 763551341E+991491712 -> -0
-xmul200 multiply -57101683.5 763551341E+991491712 -> -4.36000670E+991491728 Inexact Rounded
-xpow200 power -57101683.5 8 -> 1.13029368E+62 Inexact Rounded
-xrem200 remainder -57101683.5 763551341E+991491712 -> -57101683.5
-xsub200 subtract -57101683.5 763551341E+991491712 -> -7.63551341E+991491720 Inexact Rounded
-xadd201 add -603326.740 1710.95183 -> -601615.788 Inexact Rounded
-xcom201 compare -603326.740 1710.95183 -> -1
-xdiv201 divide -603326.740 1710.95183 -> -352.626374 Inexact Rounded
-xdvi201 divideint -603326.740 1710.95183 -> -352
-xmul201 multiply -603326.740 1710.95183 -> -1.03226299E+9 Inexact Rounded
-xpow201 power -603326.740 1711 -> -3.35315976E+9890 Inexact Rounded
-xrem201 remainder -603326.740 1710.95183 -> -1071.69584
-xsub201 subtract -603326.740 1710.95183 -> -605037.692 Inexact Rounded
-xadd202 add -48142763.3 -943434114 -> -991576877 Inexact Rounded
-xcom202 compare -48142763.3 -943434114 -> 1
-xdiv202 divide -48142763.3 -943434114 -> 0.0510292797 Inexact Rounded
-xdvi202 divideint -48142763.3 -943434114 -> 0
-xmul202 multiply -48142763.3 -943434114 -> 4.54195252E+16 Inexact Rounded
-xpow202 power -48142763.3 -943434114 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem202 remainder -48142763.3 -943434114 -> -48142763.3
-xsub202 subtract -48142763.3 -943434114 -> 895291351 Inexact Rounded
-xadd203 add -204.586767 -235.531847 -> -440.118614
-xcom203 compare -204.586767 -235.531847 -> 1
-xdiv203 divide -204.586767 -235.531847 -> 0.868616154 Inexact Rounded
-xdvi203 divideint -204.586767 -235.531847 -> 0
-xmul203 multiply -204.586767 -235.531847 -> 48186.6991 Inexact Rounded
-xpow203 power -204.586767 -236 -> 4.29438222E-546 Inexact Rounded
-xrem203 remainder -204.586767 -235.531847 -> -204.586767
-xsub203 subtract -204.586767 -235.531847 -> 30.945080
-xadd204 add -70.3805581 830137.913 -> 830067.532 Inexact Rounded
-xcom204 compare -70.3805581 830137.913 -> -1
-xdiv204 divide -70.3805581 830137.913 -> -0.0000847817658 Inexact Rounded
-xdvi204 divideint -70.3805581 830137.913 -> -0
-xmul204 multiply -70.3805581 830137.913 -> -58425569.6 Inexact Rounded
-xpow204 power -70.3805581 830138 -> 4.95165841E+1533640 Inexact Rounded
-xrem204 remainder -70.3805581 830137.913 -> -70.3805581
-xsub204 subtract -70.3805581 830137.913 -> -830208.294 Inexact Rounded
-xadd205 add -8818.47606 -60766.4571 -> -69584.9332 Inexact Rounded
-xcom205 compare -8818.47606 -60766.4571 -> 1
-xdiv205 divide -8818.47606 -60766.4571 -> 0.145120787 Inexact Rounded
-xdvi205 divideint -8818.47606 -60766.4571 -> 0
-xmul205 multiply -8818.47606 -60766.4571 -> 535867547 Inexact Rounded
-xpow205 power -8818.47606 -60766 -> 1.64487755E-239746 Inexact Rounded
-xrem205 remainder -8818.47606 -60766.4571 -> -8818.47606
-xsub205 subtract -8818.47606 -60766.4571 -> 51947.9810 Inexact Rounded
-xadd206 add 37060929.3E-168439509 -79576717.1 -> -79576717.1 Inexact Rounded
-xcom206 compare 37060929.3E-168439509 -79576717.1 -> 1
-xdiv206 divide 37060929.3E-168439509 -79576717.1 -> -4.65725788E-168439510 Inexact Rounded
-xdvi206 divideint 37060929.3E-168439509 -79576717.1 -> -0
-xmul206 multiply 37060929.3E-168439509 -79576717.1 -> -2.94918709E-168439494 Inexact Rounded
-xpow206 power 37060929.3E-168439509 -79576717 -> Infinity Overflow Inexact Rounded
-xrem206 remainder 37060929.3E-168439509 -79576717.1 -> 3.70609293E-168439502
-xsub206 subtract 37060929.3E-168439509 -79576717.1 -> 79576717.1 Inexact Rounded
-xadd207 add -656285310. -107221462. -> -763506772
-xcom207 compare -656285310. -107221462. -> -1
-xdiv207 divide -656285310. -107221462. -> 6.12083904 Inexact Rounded
-xdvi207 divideint -656285310. -107221462. -> 6
-xmul207 multiply -656285310. -107221462. -> 7.03678704E+16 Inexact Rounded
-xpow207 power -656285310. -107221462 -> 8.05338080E-945381569 Inexact Rounded
-xrem207 remainder -656285310. -107221462. -> -12956538
-xsub207 subtract -656285310. -107221462. -> -549063848
-xadd208 add 653397.125 7195.30990 -> 660592.435 Inexact Rounded
-xcom208 compare 653397.125 7195.30990 -> 1
-xdiv208 divide 653397.125 7195.30990 -> 90.8087538 Inexact Rounded
-xdvi208 divideint 653397.125 7195.30990 -> 90
-xmul208 multiply 653397.125 7195.30990 -> 4.70139480E+9 Inexact Rounded
-xpow208 power 653397.125 7195 -> 1.58522983E+41840 Inexact Rounded
-xrem208 remainder 653397.125 7195.30990 -> 5819.23400
-xsub208 subtract 653397.125 7195.30990 -> 646201.815 Inexact Rounded
-xadd209 add 56221910.0E+857909374 -58.7247929 -> 5.62219100E+857909381 Inexact Rounded
-xcom209 compare 56221910.0E+857909374 -58.7247929 -> 1
-xdiv209 divide 56221910.0E+857909374 -58.7247929 -> -9.57379451E+857909379 Inexact Rounded
-xdvi209 divideint 56221910.0E+857909374 -58.7247929 -> NaN Division_impossible
-xmul209 multiply 56221910.0E+857909374 -58.7247929 -> -3.30162002E+857909383 Inexact Rounded
-xpow209 power 56221910.0E+857909374 -59 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem209 remainder 56221910.0E+857909374 -58.7247929 -> NaN Division_impossible
-xsub209 subtract 56221910.0E+857909374 -58.7247929 -> 5.62219100E+857909381 Inexact Rounded
-xadd210 add 809862859E+643769974 -5.06784016 -> 8.09862859E+643769982 Inexact Rounded
-xcom210 compare 809862859E+643769974 -5.06784016 -> 1
-xdiv210 divide 809862859E+643769974 -5.06784016 -> -1.59804341E+643769982 Inexact Rounded
-xdvi210 divideint 809862859E+643769974 -5.06784016 -> NaN Division_impossible
-xmul210 multiply 809862859E+643769974 -5.06784016 -> -4.10425552E+643769983 Inexact Rounded
-xpow210 power 809862859E+643769974 -5 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem210 remainder 809862859E+643769974 -5.06784016 -> NaN Division_impossible
-xsub210 subtract 809862859E+643769974 -5.06784016 -> 8.09862859E+643769982 Inexact Rounded
-xadd211 add -62011.4563E-117563240 -57.1731586E+115657204 -> -5.71731586E+115657205 Inexact Rounded
-xcom211 compare -62011.4563E-117563240 -57.1731586E+115657204 -> 1
-xdiv211 divide -62011.4563E-117563240 -57.1731586E+115657204 -> 1.08462534E-233220441 Inexact Rounded
-xdvi211 divideint -62011.4563E-117563240 -57.1731586E+115657204 -> 0
-xmul211 multiply -62011.4563E-117563240 -57.1731586E+115657204 -> 3.54539083E-1906030 Inexact Rounded
-xpow211 power -62011.4563E-117563240 -6 -> 1.75860546E+705379411 Inexact Rounded
-xrem211 remainder -62011.4563E-117563240 -57.1731586E+115657204 -> -6.20114563E-117563236
-xsub211 subtract -62011.4563E-117563240 -57.1731586E+115657204 -> 5.71731586E+115657205 Inexact Rounded
-xadd212 add 315.33351 91588.837E-536020149 -> 315.333510 Inexact Rounded
-xcom212 compare 315.33351 91588.837E-536020149 -> 1
-xdiv212 divide 315.33351 91588.837E-536020149 -> 3.44292515E+536020146 Inexact Rounded
-xdvi212 divideint 315.33351 91588.837E-536020149 -> NaN Division_impossible
-xmul212 multiply 315.33351 91588.837E-536020149 -> 2.88810294E-536020142 Inexact Rounded
-xpow212 power 315.33351 9 -> 3.08269902E+22 Inexact Rounded
-xrem212 remainder 315.33351 91588.837E-536020149 -> NaN Division_impossible
-xsub212 subtract 315.33351 91588.837E-536020149 -> 315.333510 Inexact Rounded
-xadd213 add 739.944710 202949.175 -> 203689.120 Inexact Rounded
-xcom213 compare 739.944710 202949.175 -> -1
-xdiv213 divide 739.944710 202949.175 -> 0.00364596067 Inexact Rounded
-xdvi213 divideint 739.944710 202949.175 -> 0
-xmul213 multiply 739.944710 202949.175 -> 150171168 Inexact Rounded
-xpow213 power 739.944710 202949 -> 1.32611729E+582301 Inexact Rounded
-xrem213 remainder 739.944710 202949.175 -> 739.944710
-xsub213 subtract 739.944710 202949.175 -> -202209.230 Inexact Rounded
-xadd214 add 87686.8016 4204890.40 -> 4292577.20 Inexact Rounded
-xcom214 compare 87686.8016 4204890.40 -> -1
-xdiv214 divide 87686.8016 4204890.40 -> 0.0208535285 Inexact Rounded
-xdvi214 divideint 87686.8016 4204890.40 -> 0
-xmul214 multiply 87686.8016 4204890.40 -> 3.68713390E+11 Inexact Rounded
-xpow214 power 87686.8016 4204890 -> 5.14846981E+20784494 Inexact Rounded
-xrem214 remainder 87686.8016 4204890.40 -> 87686.8016
-xsub214 subtract 87686.8016 4204890.40 -> -4117203.60 Inexact Rounded
-xadd215 add 987126721.E-725794834 4874166.23 -> 4874166.23 Inexact Rounded
-xcom215 compare 987126721.E-725794834 4874166.23 -> -1
-xdiv215 divide 987126721.E-725794834 4874166.23 -> 2.02522170E-725794832 Inexact Rounded
-xdvi215 divideint 987126721.E-725794834 4874166.23 -> 0
-xmul215 multiply 987126721.E-725794834 4874166.23 -> 4.81141973E-725794819 Inexact Rounded
-xpow215 power 987126721.E-725794834 4874166 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem215 remainder 987126721.E-725794834 4874166.23 -> 9.87126721E-725794826
-xsub215 subtract 987126721.E-725794834 4874166.23 -> -4874166.23 Inexact Rounded
-xadd216 add 728148726.E-661695938 32798.5202 -> 32798.5202 Inexact Rounded
-xcom216 compare 728148726.E-661695938 32798.5202 -> -1
-xdiv216 divide 728148726.E-661695938 32798.5202 -> 2.22006579E-661695934 Inexact Rounded
-xdvi216 divideint 728148726.E-661695938 32798.5202 -> 0
-xmul216 multiply 728148726.E-661695938 32798.5202 -> 2.38822007E-661695925 Inexact Rounded
-xpow216 power 728148726.E-661695938 32799 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem216 remainder 728148726.E-661695938 32798.5202 -> 7.28148726E-661695930
-xsub216 subtract 728148726.E-661695938 32798.5202 -> -32798.5202 Inexact Rounded
-xadd217 add 7428219.97 667.326760 -> 7428887.30 Inexact Rounded
-xcom217 compare 7428219.97 667.326760 -> 1
-xdiv217 divide 7428219.97 667.326760 -> 11131.3084 Inexact Rounded
-xdvi217 divideint 7428219.97 667.326760 -> 11131
-xmul217 multiply 7428219.97 667.326760 -> 4.95704997E+9 Inexact Rounded
-xpow217 power 7428219.97 667 -> 7.58808509E+4582 Inexact Rounded
-xrem217 remainder 7428219.97 667.326760 -> 205.804440
-xsub217 subtract 7428219.97 667.326760 -> 7427552.64 Inexact Rounded
-xadd218 add -7291.19212 209.64966E-588526476 -> -7291.19212 Inexact Rounded
-xcom218 compare -7291.19212 209.64966E-588526476 -> -1
-xdiv218 divide -7291.19212 209.64966E-588526476 -> -3.47779821E+588526477 Inexact Rounded
-xdvi218 divideint -7291.19212 209.64966E-588526476 -> NaN Division_impossible
-xmul218 multiply -7291.19212 209.64966E-588526476 -> -1.52859595E-588526470 Inexact Rounded
-xpow218 power -7291.19212 2 -> 53161482.5 Inexact Rounded
-xrem218 remainder -7291.19212 209.64966E-588526476 -> NaN Division_impossible
-xsub218 subtract -7291.19212 209.64966E-588526476 -> -7291.19212 Inexact Rounded
-xadd219 add -358.24550 -4447.78675E+601402509 -> -4.44778675E+601402512 Inexact Rounded
-xcom219 compare -358.24550 -4447.78675E+601402509 -> 1
-xdiv219 divide -358.24550 -4447.78675E+601402509 -> 8.05446664E-601402511 Inexact Rounded
-xdvi219 divideint -358.24550 -4447.78675E+601402509 -> 0
-xmul219 multiply -358.24550 -4447.78675E+601402509 -> 1.59339959E+601402515 Inexact Rounded
-xpow219 power -358.24550 -4 -> 6.07123474E-11 Inexact Rounded
-xrem219 remainder -358.24550 -4447.78675E+601402509 -> -358.24550
-xsub219 subtract -358.24550 -4447.78675E+601402509 -> 4.44778675E+601402512 Inexact Rounded
-xadd220 add 118.621826 -2.72010038 -> 115.901726 Inexact Rounded
-xcom220 compare 118.621826 -2.72010038 -> 1
-xdiv220 divide 118.621826 -2.72010038 -> -43.6093561 Inexact Rounded
-xdvi220 divideint 118.621826 -2.72010038 -> -43
-xmul220 multiply 118.621826 -2.72010038 -> -322.663274 Inexact Rounded
-xpow220 power 118.621826 -3 -> 5.99109471E-7 Inexact Rounded
-xrem220 remainder 118.621826 -2.72010038 -> 1.65750966
-xsub220 subtract 118.621826 -2.72010038 -> 121.341926 Inexact Rounded
-xadd221 add 8071961.94 -135533740.E-102451543 -> 8071961.94 Inexact Rounded
-xcom221 compare 8071961.94 -135533740.E-102451543 -> 1
-xdiv221 divide 8071961.94 -135533740.E-102451543 -> -5.95568450E+102451541 Inexact Rounded
-xdvi221 divideint 8071961.94 -135533740.E-102451543 -> NaN Division_impossible
-xmul221 multiply 8071961.94 -135533740.E-102451543 -> -1.09402319E-102451528 Inexact Rounded
-xpow221 power 8071961.94 -1 -> 1.23885619E-7 Inexact Rounded
-xrem221 remainder 8071961.94 -135533740.E-102451543 -> NaN Division_impossible
-xsub221 subtract 8071961.94 -135533740.E-102451543 -> 8071961.94 Inexact Rounded
-xadd222 add 64262528.5E+812118682 -8692.94447E-732186947 -> 6.42625285E+812118689 Inexact Rounded
-xcom222 compare 64262528.5E+812118682 -8692.94447E-732186947 -> 1
-xdiv222 divide 64262528.5E+812118682 -8692.94447E-732186947 -> -Infinity Inexact Overflow Rounded
-xdvi222 divideint 64262528.5E+812118682 -8692.94447E-732186947 -> NaN Division_impossible
-xmul222 multiply 64262528.5E+812118682 -8692.94447E-732186947 -> -5.58630592E+79931746 Inexact Rounded
-xpow222 power 64262528.5E+812118682 -9 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem222 remainder 64262528.5E+812118682 -8692.94447E-732186947 -> NaN Division_impossible
-xsub222 subtract 64262528.5E+812118682 -8692.94447E-732186947 -> 6.42625285E+812118689 Inexact Rounded
-xadd223 add -35544.4029 -567830.130 -> -603374.533 Inexact Rounded
-xcom223 compare -35544.4029 -567830.130 -> 1
-xdiv223 divide -35544.4029 -567830.130 -> 0.0625968948 Inexact Rounded
-xdvi223 divideint -35544.4029 -567830.130 -> 0
-xmul223 multiply -35544.4029 -567830.130 -> 2.01831829E+10 Inexact Rounded
-xpow223 power -35544.4029 -567830 -> 3.77069368E-2584065 Inexact Rounded
-xrem223 remainder -35544.4029 -567830.130 -> -35544.4029
-xsub223 subtract -35544.4029 -567830.130 -> 532285.727 Inexact Rounded
-xadd224 add -7.16513047E+59297103 87767.8211 -> -7.16513047E+59297103 Inexact Rounded
-xcom224 compare -7.16513047E+59297103 87767.8211 -> -1
-xdiv224 divide -7.16513047E+59297103 87767.8211 -> -8.16373288E+59297098 Inexact Rounded
-xdvi224 divideint -7.16513047E+59297103 87767.8211 -> NaN Division_impossible
-xmul224 multiply -7.16513047E+59297103 87767.8211 -> -6.28867889E+59297108 Inexact Rounded
-xpow224 power -7.16513047E+59297103 87768 -> Infinity Overflow Inexact Rounded
-xrem224 remainder -7.16513047E+59297103 87767.8211 -> NaN Division_impossible
-xsub224 subtract -7.16513047E+59297103 87767.8211 -> -7.16513047E+59297103 Inexact Rounded
-xadd225 add -509.483395 -147242915. -> -147243424 Inexact Rounded
-xcom225 compare -509.483395 -147242915. -> 1
-xdiv225 divide -509.483395 -147242915. -> 0.00000346015559 Inexact Rounded
-xdvi225 divideint -509.483395 -147242915. -> 0
-xmul225 multiply -509.483395 -147242915. -> 7.50178202E+10 Inexact Rounded
-xpow225 power -509.483395 -147242915 -> -3.10760519E-398605718 Inexact Rounded
-xrem225 remainder -509.483395 -147242915. -> -509.483395
-xsub225 subtract -509.483395 -147242915. -> 147242406 Inexact Rounded
-xadd226 add -7919047.28E+956041629 -367667329 -> -7.91904728E+956041635 Inexact Rounded
-xcom226 compare -7919047.28E+956041629 -367667329 -> -1
-xdiv226 divide -7919047.28E+956041629 -367667329 -> 2.15386211E+956041627 Inexact Rounded
-xdvi226 divideint -7919047.28E+956041629 -367667329 -> NaN Division_impossible
-xmul226 multiply -7919047.28E+956041629 -367667329 -> 2.91157496E+956041644 Inexact Rounded
-xpow226 power -7919047.28E+956041629 -367667329 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem226 remainder -7919047.28E+956041629 -367667329 -> NaN Division_impossible
-xsub226 subtract -7919047.28E+956041629 -367667329 -> -7.91904728E+956041635 Inexact Rounded
-xadd227 add 895612630. -36.4104040 -> 895612594 Inexact Rounded
-xcom227 compare 895612630. -36.4104040 -> 1
-xdiv227 divide 895612630. -36.4104040 -> -24597712.0 Inexact Rounded
-xdvi227 divideint 895612630. -36.4104040 -> -24597711
-xmul227 multiply 895612630. -36.4104040 -> -3.26096177E+10 Inexact Rounded
-xpow227 power 895612630. -36 -> 5.29264130E-323 Inexact Rounded
-xrem227 remainder 895612630. -36.4104040 -> 35.0147560
-xsub227 subtract 895612630. -36.4104040 -> 895612666 Inexact Rounded
-xadd228 add 25455.4973 2955.00006E+528196218 -> 2.95500006E+528196221 Inexact Rounded
-xcom228 compare 25455.4973 2955.00006E+528196218 -> -1
-xdiv228 divide 25455.4973 2955.00006E+528196218 -> 8.61438131E-528196218 Inexact Rounded
-xdvi228 divideint 25455.4973 2955.00006E+528196218 -> 0
-xmul228 multiply 25455.4973 2955.00006E+528196218 -> 7.52209960E+528196225 Inexact Rounded
-xpow228 power 25455.4973 3 -> 1.64947128E+13 Inexact Rounded
-xrem228 remainder 25455.4973 2955.00006E+528196218 -> 25455.4973
-xsub228 subtract 25455.4973 2955.00006E+528196218 -> -2.95500006E+528196221 Inexact Rounded
-xadd229 add -112.294144E+273414172 -71448007.7 -> -1.12294144E+273414174 Inexact Rounded
-xcom229 compare -112.294144E+273414172 -71448007.7 -> -1
-xdiv229 divide -112.294144E+273414172 -71448007.7 -> 1.57169035E+273414166 Inexact Rounded
-xdvi229 divideint -112.294144E+273414172 -71448007.7 -> NaN Division_impossible
-xmul229 multiply -112.294144E+273414172 -71448007.7 -> 8.02319287E+273414181 Inexact Rounded
-xpow229 power -112.294144E+273414172 -71448008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem229 remainder -112.294144E+273414172 -71448007.7 -> NaN Division_impossible
-xsub229 subtract -112.294144E+273414172 -71448007.7 -> -1.12294144E+273414174 Inexact Rounded
-xadd230 add 62871.2202 2484.0382E+211662557 -> 2.48403820E+211662560 Inexact Rounded
-xcom230 compare 62871.2202 2484.0382E+211662557 -> -1
-xdiv230 divide 62871.2202 2484.0382E+211662557 -> 2.53100859E-211662556 Inexact Rounded
-xdvi230 divideint 62871.2202 2484.0382E+211662557 -> 0
-xmul230 multiply 62871.2202 2484.0382E+211662557 -> 1.56174513E+211662565 Inexact Rounded
-xpow230 power 62871.2202 2 -> 3.95279033E+9 Inexact Rounded
-xrem230 remainder 62871.2202 2484.0382E+211662557 -> 62871.2202
-xsub230 subtract 62871.2202 2484.0382E+211662557 -> -2.48403820E+211662560 Inexact Rounded
-xadd231 add 71.9281575 -9810012.5 -> -9809940.57 Inexact Rounded
-xcom231 compare 71.9281575 -9810012.5 -> 1
-xdiv231 divide 71.9281575 -9810012.5 -> -0.00000733211680 Inexact Rounded
-xdvi231 divideint 71.9281575 -9810012.5 -> -0
-xmul231 multiply 71.9281575 -9810012.5 -> -705616124 Inexact Rounded
-xpow231 power 71.9281575 -9810013 -> 2.00363798E-18216203 Inexact Rounded
-xrem231 remainder 71.9281575 -9810012.5 -> 71.9281575
-xsub231 subtract 71.9281575 -9810012.5 -> 9810084.43 Inexact Rounded
-xadd232 add -6388022. -88.042967 -> -6388110.04 Inexact Rounded
-xcom232 compare -6388022. -88.042967 -> -1
-xdiv232 divide -6388022. -88.042967 -> 72555.7329 Inexact Rounded
-xdvi232 divideint -6388022. -88.042967 -> 72555
-xmul232 multiply -6388022. -88.042967 -> 562420410 Inexact Rounded
-xpow232 power -6388022. -88 -> 1.34201238E-599 Inexact Rounded
-xrem232 remainder -6388022. -88.042967 -> -64.529315
-xsub232 subtract -6388022. -88.042967 -> -6387933.96 Inexact Rounded
-xadd233 add 372567445. 96.0992141 -> 372567541 Inexact Rounded
-xcom233 compare 372567445. 96.0992141 -> 1
-xdiv233 divide 372567445. 96.0992141 -> 3876904.18 Inexact Rounded
-xdvi233 divideint 372567445. 96.0992141 -> 3876904
-xmul233 multiply 372567445. 96.0992141 -> 3.58034387E+10 Inexact Rounded
-xpow233 power 372567445. 96 -> 6.84968715E+822 Inexact Rounded
-xrem233 remainder 372567445. 96.0992141 -> 17.4588536
-xsub233 subtract 372567445. 96.0992141 -> 372567349 Inexact Rounded
-xadd234 add 802.156517 -174409310.E-255338020 -> 802.156517 Inexact Rounded
-xcom234 compare 802.156517 -174409310.E-255338020 -> 1
-xdiv234 divide 802.156517 -174409310.E-255338020 -> -4.59927579E+255338014 Inexact Rounded
-xdvi234 divideint 802.156517 -174409310.E-255338020 -> NaN Division_impossible
-xmul234 multiply 802.156517 -174409310.E-255338020 -> -1.39903565E-255338009 Inexact Rounded
-xpow234 power 802.156517 -2 -> 0.00000155411005 Inexact Rounded
-xrem234 remainder 802.156517 -174409310.E-255338020 -> NaN Division_impossible
-xsub234 subtract 802.156517 -174409310.E-255338020 -> 802.156517 Inexact Rounded
-xadd235 add -3.65207541 74501982.0 -> 74501978.3 Inexact Rounded
-xcom235 compare -3.65207541 74501982.0 -> -1
-xdiv235 divide -3.65207541 74501982.0 -> -4.90198423E-8 Inexact Rounded
-xdvi235 divideint -3.65207541 74501982.0 -> -0
-xmul235 multiply -3.65207541 74501982.0 -> -272086856 Inexact Rounded
-xpow235 power -3.65207541 74501982 -> 2.10339452E+41910325 Inexact Rounded
-xrem235 remainder -3.65207541 74501982.0 -> -3.65207541
-xsub235 subtract -3.65207541 74501982.0 -> -74501985.7 Inexact Rounded
-xadd236 add -5297.76981 -859.719404 -> -6157.48921 Inexact Rounded
-xcom236 compare -5297.76981 -859.719404 -> -1
-xdiv236 divide -5297.76981 -859.719404 -> 6.16220802 Inexact Rounded
-xdvi236 divideint -5297.76981 -859.719404 -> 6
-xmul236 multiply -5297.76981 -859.719404 -> 4554595.50 Inexact Rounded
-xpow236 power -5297.76981 -860 -> 1.90523108E-3203 Inexact Rounded
-xrem236 remainder -5297.76981 -859.719404 -> -139.453386
-xsub236 subtract -5297.76981 -859.719404 -> -4438.05041 Inexact Rounded
-xadd237 add -684172.592 766.448597E+288361959 -> 7.66448597E+288361961 Inexact Rounded
-xcom237 compare -684172.592 766.448597E+288361959 -> -1
-xdiv237 divide -684172.592 766.448597E+288361959 -> -8.92652938E-288361957 Inexact Rounded
-xdvi237 divideint -684172.592 766.448597E+288361959 -> -0
-xmul237 multiply -684172.592 766.448597E+288361959 -> -5.24383123E+288361967 Inexact Rounded
-xpow237 power -684172.592 8 -> 4.80093005E+46 Inexact Rounded
-xrem237 remainder -684172.592 766.448597E+288361959 -> -684172.592
-xsub237 subtract -684172.592 766.448597E+288361959 -> -7.66448597E+288361961 Inexact Rounded
-xadd238 add 626919.219 57469.8727E+13188610 -> 5.74698727E+13188614 Inexact Rounded
-xcom238 compare 626919.219 57469.8727E+13188610 -> -1
-xdiv238 divide 626919.219 57469.8727E+13188610 -> 1.09086586E-13188609 Inexact Rounded
-xdvi238 divideint 626919.219 57469.8727E+13188610 -> 0
-xmul238 multiply 626919.219 57469.8727E+13188610 -> 3.60289677E+13188620 Inexact Rounded
-xpow238 power 626919.219 6 -> 6.07112959E+34 Inexact Rounded
-xrem238 remainder 626919.219 57469.8727E+13188610 -> 626919.219
-xsub238 subtract 626919.219 57469.8727E+13188610 -> -5.74698727E+13188614 Inexact Rounded
-xadd239 add -77480.5840 893265.594E+287982552 -> 8.93265594E+287982557 Inexact Rounded
-xcom239 compare -77480.5840 893265.594E+287982552 -> -1
-xdiv239 divide -77480.5840 893265.594E+287982552 -> -8.67385742E-287982554 Inexact Rounded
-xdvi239 divideint -77480.5840 893265.594E+287982552 -> -0
-xmul239 multiply -77480.5840 893265.594E+287982552 -> -6.92107399E+287982562 Inexact Rounded
-xpow239 power -77480.5840 9 -> -1.00631969E+44 Inexact Rounded
-xrem239 remainder -77480.5840 893265.594E+287982552 -> -77480.5840
-xsub239 subtract -77480.5840 893265.594E+287982552 -> -8.93265594E+287982557 Inexact Rounded
-xadd240 add -7177620.29 7786343.83 -> 608723.54
-xcom240 compare -7177620.29 7786343.83 -> -1
-xdiv240 divide -7177620.29 7786343.83 -> -0.921821647 Inexact Rounded
-xdvi240 divideint -7177620.29 7786343.83 -> -0
-xmul240 multiply -7177620.29 7786343.83 -> -5.58874195E+13 Inexact Rounded
-xpow240 power -7177620.29 7786344 -> 2.96037074E+53383022 Inexact Rounded
-xrem240 remainder -7177620.29 7786343.83 -> -7177620.29
-xsub240 subtract -7177620.29 7786343.83 -> -14963964.1 Inexact Rounded
-xadd241 add 9.6224130 4.50355112 -> 14.1259641 Inexact Rounded
-xcom241 compare 9.6224130 4.50355112 -> 1
-xdiv241 divide 9.6224130 4.50355112 -> 2.13662791 Inexact Rounded
-xdvi241 divideint 9.6224130 4.50355112 -> 2
-xmul241 multiply 9.6224130 4.50355112 -> 43.3350288 Inexact Rounded
-xpow241 power 9.6224130 5 -> 82493.5448 Inexact Rounded
-xrem241 remainder 9.6224130 4.50355112 -> 0.61531076
-xsub241 subtract 9.6224130 4.50355112 -> 5.11886188
-xadd242 add -66.6337347E-597410086 -818812885 -> -818812885 Inexact Rounded
-xcom242 compare -66.6337347E-597410086 -818812885 -> 1
-xdiv242 divide -66.6337347E-597410086 -818812885 -> 8.13784638E-597410094 Inexact Rounded
-xdvi242 divideint -66.6337347E-597410086 -818812885 -> 0
-xmul242 multiply -66.6337347E-597410086 -818812885 -> 5.45605605E-597410076 Inexact Rounded
-xpow242 power -66.6337347E-597410086 -818812885 -> -Infinity Overflow Inexact Rounded
-xrem242 remainder -66.6337347E-597410086 -818812885 -> -6.66337347E-597410085
-xsub242 subtract -66.6337347E-597410086 -818812885 -> 818812885 Inexact Rounded
-xadd243 add 65587553.7 600574.736 -> 66188128.4 Inexact Rounded
-xcom243 compare 65587553.7 600574.736 -> 1
-xdiv243 divide 65587553.7 600574.736 -> 109.207980 Inexact Rounded
-xdvi243 divideint 65587553.7 600574.736 -> 109
-xmul243 multiply 65587553.7 600574.736 -> 3.93902277E+13 Inexact Rounded
-xpow243 power 65587553.7 600575 -> 3.40404817E+4694587 Inexact Rounded
-xrem243 remainder 65587553.7 600574.736 -> 124907.476
-xsub243 subtract 65587553.7 600574.736 -> 64986979.0 Inexact Rounded
-xadd244 add -32401.939 -585200217. -> -585232619 Inexact Rounded
-xcom244 compare -32401.939 -585200217. -> 1
-xdiv244 divide -32401.939 -585200217. -> 0.0000553689798 Inexact Rounded
-xdvi244 divideint -32401.939 -585200217. -> 0
-xmul244 multiply -32401.939 -585200217. -> 1.89616217E+13 Inexact Rounded
-xpow244 power -32401.939 -585200217 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem244 remainder -32401.939 -585200217. -> -32401.939
-xsub244 subtract -32401.939 -585200217. -> 585167815 Inexact Rounded
-xadd245 add 69573.988 -9.77003465E+740933668 -> -9.77003465E+740933668 Inexact Rounded
-xcom245 compare 69573.988 -9.77003465E+740933668 -> 1
-xdiv245 divide 69573.988 -9.77003465E+740933668 -> -7.12116082E-740933665 Inexact Rounded
-xdvi245 divideint 69573.988 -9.77003465E+740933668 -> -0
-xmul245 multiply 69573.988 -9.77003465E+740933668 -> -6.79740273E+740933673 Inexact Rounded
-xpow245 power 69573.988 -10 -> 3.76297229E-49 Inexact Rounded
-xrem245 remainder 69573.988 -9.77003465E+740933668 -> 69573.988
-xsub245 subtract 69573.988 -9.77003465E+740933668 -> 9.77003465E+740933668 Inexact Rounded
-xadd246 add 2362.06251 -433149546.E-152643629 -> 2362.06251 Inexact Rounded
-xcom246 compare 2362.06251 -433149546.E-152643629 -> 1
-xdiv246 divide 2362.06251 -433149546.E-152643629 -> -5.45322633E+152643623 Inexact Rounded
-xdvi246 divideint 2362.06251 -433149546.E-152643629 -> NaN Division_impossible
-xmul246 multiply 2362.06251 -433149546.E-152643629 -> -1.02312630E-152643617 Inexact Rounded
-xpow246 power 2362.06251 -4 -> 3.21243577E-14 Inexact Rounded
-xrem246 remainder 2362.06251 -433149546.E-152643629 -> NaN Division_impossible
-xsub246 subtract 2362.06251 -433149546.E-152643629 -> 2362.06251 Inexact Rounded
-xadd247 add -615.23488E+249953452 -21437483.7 -> -6.15234880E+249953454 Inexact Rounded
-xcom247 compare -615.23488E+249953452 -21437483.7 -> -1
-xdiv247 divide -615.23488E+249953452 -21437483.7 -> 2.86990250E+249953447 Inexact Rounded
-xdvi247 divideint -615.23488E+249953452 -21437483.7 -> NaN Division_impossible
-xmul247 multiply -615.23488E+249953452 -21437483.7 -> 1.31890877E+249953462 Inexact Rounded
-xpow247 power -615.23488E+249953452 -21437484 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem247 remainder -615.23488E+249953452 -21437483.7 -> NaN Division_impossible
-xsub247 subtract -615.23488E+249953452 -21437483.7 -> -6.15234880E+249953454 Inexact Rounded
-xadd248 add 216741082. 250290244 -> 467031326
-xcom248 compare 216741082. 250290244 -> -1
-xdiv248 divide 216741082. 250290244 -> 0.865958970 Inexact Rounded
-xdvi248 divideint 216741082. 250290244 -> 0
-xmul248 multiply 216741082. 250290244 -> 5.42481783E+16 Inexact Rounded
-xpow248 power 216741082. 250290244 -> Infinity Overflow Inexact Rounded
-xrem248 remainder 216741082. 250290244 -> 216741082
-xsub248 subtract 216741082. 250290244 -> -33549162
-xadd249 add -6364720.49 5539245.64 -> -825474.85
-xcom249 compare -6364720.49 5539245.64 -> -1
-xdiv249 divide -6364720.49 5539245.64 -> -1.14902297 Inexact Rounded
-xdvi249 divideint -6364720.49 5539245.64 -> -1
-xmul249 multiply -6364720.49 5539245.64 -> -3.52557502E+13 Inexact Rounded
-xpow249 power -6364720.49 5539246 -> 2.96894641E+37687807 Inexact Rounded
-xrem249 remainder -6364720.49 5539245.64 -> -825474.85
-xsub249 subtract -6364720.49 5539245.64 -> -11903966.1 Inexact Rounded
-xadd250 add -814599.475 -14.5431191 -> -814614.018 Inexact Rounded
-xcom250 compare -814599.475 -14.5431191 -> -1
-xdiv250 divide -814599.475 -14.5431191 -> 56012.7074 Inexact Rounded
-xdvi250 divideint -814599.475 -14.5431191 -> 56012
-xmul250 multiply -814599.475 -14.5431191 -> 11846817.2 Inexact Rounded
-xpow250 power -814599.475 -15 -> -2.16689622E-89 Inexact Rounded
-xrem250 remainder -814599.475 -14.5431191 -> -10.2879708
-xsub250 subtract -814599.475 -14.5431191 -> -814584.932 Inexact Rounded
-xadd251 add -877498.755 507408724E-168628106 -> -877498.755 Inexact Rounded
-xcom251 compare -877498.755 507408724E-168628106 -> -1
-xdiv251 divide -877498.755 507408724E-168628106 -> -1.72937262E+168628103 Inexact Rounded
-xdvi251 divideint -877498.755 507408724E-168628106 -> NaN Division_impossible
-xmul251 multiply -877498.755 507408724E-168628106 -> -4.45250524E-168628092 Inexact Rounded
-xpow251 power -877498.755 5 -> -5.20274505E+29 Inexact Rounded
-xrem251 remainder -877498.755 507408724E-168628106 -> NaN Division_impossible
-xsub251 subtract -877498.755 507408724E-168628106 -> -877498.755 Inexact Rounded
-xadd252 add 10634446.5E+475783861 50.7213056E+17807809 -> 1.06344465E+475783868 Inexact Rounded
-xcom252 compare 10634446.5E+475783861 50.7213056E+17807809 -> 1
-xdiv252 divide 10634446.5E+475783861 50.7213056E+17807809 -> 2.09664289E+457976057 Inexact Rounded
-xdvi252 divideint 10634446.5E+475783861 50.7213056E+17807809 -> NaN Division_impossible
-xmul252 multiply 10634446.5E+475783861 50.7213056E+17807809 -> 5.39393011E+493591678 Inexact Rounded
-xpow252 power 10634446.5E+475783861 5 -> Infinity Overflow Inexact Rounded
-xrem252 remainder 10634446.5E+475783861 50.7213056E+17807809 -> NaN Division_impossible
-xsub252 subtract 10634446.5E+475783861 50.7213056E+17807809 -> 1.06344465E+475783868 Inexact Rounded
-xadd253 add -162726.257E-597285918 -4391.54799 -> -4391.54799 Inexact Rounded
-xcom253 compare -162726.257E-597285918 -4391.54799 -> 1
-xdiv253 divide -162726.257E-597285918 -4391.54799 -> 3.70544185E-597285917 Inexact Rounded
-xdvi253 divideint -162726.257E-597285918 -4391.54799 -> 0
-xmul253 multiply -162726.257E-597285918 -4391.54799 -> 7.14620167E-597285910 Inexact Rounded
-xpow253 power -162726.257E-597285918 -4392 -> Infinity Overflow Inexact Rounded
-xrem253 remainder -162726.257E-597285918 -4391.54799 -> -1.62726257E-597285913
-xsub253 subtract -162726.257E-597285918 -4391.54799 -> 4391.54799 Inexact Rounded
-xadd254 add 700354586.E-99856707 7198.0493E+436250299 -> 7.19804930E+436250302 Inexact Rounded
-xcom254 compare 700354586.E-99856707 7198.0493E+436250299 -> -1
-xdiv254 divide 700354586.E-99856707 7198.0493E+436250299 -> 9.72978312E-536107002 Inexact Rounded
-xdvi254 divideint 700354586.E-99856707 7198.0493E+436250299 -> 0
-xmul254 multiply 700354586.E-99856707 7198.0493E+436250299 -> 5.04118684E+336393604 Inexact Rounded
-xpow254 power 700354586.E-99856707 7 -> 8.26467610E-698996888 Inexact Rounded
-xrem254 remainder 700354586.E-99856707 7198.0493E+436250299 -> 7.00354586E-99856699
-xsub254 subtract 700354586.E-99856707 7198.0493E+436250299 -> -7.19804930E+436250302 Inexact Rounded
-xadd255 add 39617663E-463704664 -895.290346 -> -895.290346 Inexact Rounded
-xcom255 compare 39617663E-463704664 -895.290346 -> 1
-xdiv255 divide 39617663E-463704664 -895.290346 -> -4.42511898E-463704660 Inexact Rounded
-xdvi255 divideint 39617663E-463704664 -895.290346 -> -0
-xmul255 multiply 39617663E-463704664 -895.290346 -> -3.54693112E-463704654 Inexact Rounded
-xpow255 power 39617663E-463704664 -895 -> Infinity Overflow Inexact Rounded
-xrem255 remainder 39617663E-463704664 -895.290346 -> 3.9617663E-463704657
-xsub255 subtract 39617663E-463704664 -895.290346 -> 895.290346 Inexact Rounded
-xadd256 add 5350882.59 -36329829 -> -30978946.4 Inexact Rounded
-xcom256 compare 5350882.59 -36329829 -> 1
-xdiv256 divide 5350882.59 -36329829 -> -0.147286204 Inexact Rounded
-xdvi256 divideint 5350882.59 -36329829 -> -0
-xmul256 multiply 5350882.59 -36329829 -> -1.94396649E+14 Inexact Rounded
-xpow256 power 5350882.59 -36329829 -> 9.77006107E-244442546 Inexact Rounded
-xrem256 remainder 5350882.59 -36329829 -> 5350882.59
-xsub256 subtract 5350882.59 -36329829 -> 41680711.6 Inexact Rounded
-xadd257 add 91966.4084E+210382952 166740.46E-42001390 -> 9.19664084E+210382956 Inexact Rounded
-xcom257 compare 91966.4084E+210382952 166740.46E-42001390 -> 1
-xdiv257 divide 91966.4084E+210382952 166740.46E-42001390 -> 5.51554244E+252384341 Inexact Rounded
-xdvi257 divideint 91966.4084E+210382952 166740.46E-42001390 -> NaN Division_impossible
-xmul257 multiply 91966.4084E+210382952 166740.46E-42001390 -> 1.53345212E+168381572 Inexact Rounded
-xpow257 power 91966.4084E+210382952 2 -> 8.45782027E+420765913 Inexact Rounded
-xrem257 remainder 91966.4084E+210382952 166740.46E-42001390 -> NaN Division_impossible
-xsub257 subtract 91966.4084E+210382952 166740.46E-42001390 -> 9.19664084E+210382956 Inexact Rounded
-xadd258 add 231899031.E-481759076 726.337100 -> 726.337100 Inexact Rounded
-xcom258 compare 231899031.E-481759076 726.337100 -> -1
-xdiv258 divide 231899031.E-481759076 726.337100 -> 3.19271907E-481759071 Inexact Rounded
-xdvi258 divideint 231899031.E-481759076 726.337100 -> 0
-xmul258 multiply 231899031.E-481759076 726.337100 -> 1.68436870E-481759065 Inexact Rounded
-xpow258 power 231899031.E-481759076 726 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem258 remainder 231899031.E-481759076 726.337100 -> 2.31899031E-481759068
-xsub258 subtract 231899031.E-481759076 726.337100 -> -726.337100 Inexact Rounded
-xadd259 add -9611312.33 22109735.9 -> 12498423.6 Inexact Rounded
-xcom259 compare -9611312.33 22109735.9 -> -1
-xdiv259 divide -9611312.33 22109735.9 -> -0.434709504 Inexact Rounded
-xdvi259 divideint -9611312.33 22109735.9 -> -0
-xmul259 multiply -9611312.33 22109735.9 -> -2.12503577E+14 Inexact Rounded
-xpow259 power -9611312.33 22109736 -> 6.74530828E+154387481 Inexact Rounded
-xrem259 remainder -9611312.33 22109735.9 -> -9611312.33
-xsub259 subtract -9611312.33 22109735.9 -> -31721048.2 Inexact Rounded
-xadd260 add -5604938.15E-36812542 735937577. -> 735937577 Inexact Rounded
-xcom260 compare -5604938.15E-36812542 735937577. -> -1
-xdiv260 divide -5604938.15E-36812542 735937577. -> -7.61605104E-36812545 Inexact Rounded
-xdvi260 divideint -5604938.15E-36812542 735937577. -> -0
-xmul260 multiply -5604938.15E-36812542 735937577. -> -4.12488460E-36812527 Inexact Rounded
-xpow260 power -5604938.15E-36812542 735937577 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem260 remainder -5604938.15E-36812542 735937577. -> -5.60493815E-36812536
-xsub260 subtract -5604938.15E-36812542 735937577. -> -735937577 Inexact Rounded
-xadd261 add 693881413. 260547224E-480281418 -> 693881413 Inexact Rounded
-xcom261 compare 693881413. 260547224E-480281418 -> 1
-xdiv261 divide 693881413. 260547224E-480281418 -> 2.66316947E+480281418 Inexact Rounded
-xdvi261 divideint 693881413. 260547224E-480281418 -> NaN Division_impossible
-xmul261 multiply 693881413. 260547224E-480281418 -> 1.80788876E-480281401 Inexact Rounded
-xpow261 power 693881413. 3 -> 3.34084066E+26 Inexact Rounded
-xrem261 remainder 693881413. 260547224E-480281418 -> NaN Division_impossible
-xsub261 subtract 693881413. 260547224E-480281418 -> 693881413 Inexact Rounded
-xadd262 add -34865.7378E-368768024 2297117.88 -> 2297117.88 Inexact Rounded
-xcom262 compare -34865.7378E-368768024 2297117.88 -> -1
-xdiv262 divide -34865.7378E-368768024 2297117.88 -> -1.51780360E-368768026 Inexact Rounded
-xdvi262 divideint -34865.7378E-368768024 2297117.88 -> -0
-xmul262 multiply -34865.7378E-368768024 2297117.88 -> -8.00907097E-368768014 Inexact Rounded
-xpow262 power -34865.7378E-368768024 2297118 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem262 remainder -34865.7378E-368768024 2297117.88 -> -3.48657378E-368768020
-xsub262 subtract -34865.7378E-368768024 2297117.88 -> -2297117.88 Inexact Rounded
-xadd263 add 1123.32456 7.86747918E+930888796 -> 7.86747918E+930888796 Inexact Rounded
-xcom263 compare 1123.32456 7.86747918E+930888796 -> -1
-xdiv263 divide 1123.32456 7.86747918E+930888796 -> 1.42780748E-930888794 Inexact Rounded
-xdvi263 divideint 1123.32456 7.86747918E+930888796 -> 0
-xmul263 multiply 1123.32456 7.86747918E+930888796 -> 8.83773259E+930888799 Inexact Rounded
-xpow263 power 1123.32456 8 -> 2.53537401E+24 Inexact Rounded
-xrem263 remainder 1123.32456 7.86747918E+930888796 -> 1123.32456
-xsub263 subtract 1123.32456 7.86747918E+930888796 -> -7.86747918E+930888796 Inexact Rounded
-xadd264 add 56.6607465E+467812565 909552512E+764516200 -> 9.09552512E+764516208 Inexact Rounded
-xcom264 compare 56.6607465E+467812565 909552512E+764516200 -> -1
-xdiv264 divide 56.6607465E+467812565 909552512E+764516200 -> 6.22951899E-296703643 Inexact Rounded
-xdvi264 divideint 56.6607465E+467812565 909552512E+764516200 -> 0
-xmul264 multiply 56.6607465E+467812565 909552512E+764516200 -> Infinity Inexact Overflow Rounded
-xpow264 power 56.6607465E+467812565 9 -> Infinity Overflow Inexact Rounded
-xrem264 remainder 56.6607465E+467812565 909552512E+764516200 -> 5.66607465E+467812566
-xsub264 subtract 56.6607465E+467812565 909552512E+764516200 -> -9.09552512E+764516208 Inexact Rounded
-xadd265 add -1.85771840E+365552540 -73028339.7 -> -1.85771840E+365552540 Inexact Rounded
-xcom265 compare -1.85771840E+365552540 -73028339.7 -> -1
-xdiv265 divide -1.85771840E+365552540 -73028339.7 -> 2.54383217E+365552532 Inexact Rounded
-xdvi265 divideint -1.85771840E+365552540 -73028339.7 -> NaN Division_impossible
-xmul265 multiply -1.85771840E+365552540 -73028339.7 -> 1.35666090E+365552548 Inexact Rounded
-xpow265 power -1.85771840E+365552540 -73028340 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem265 remainder -1.85771840E+365552540 -73028339.7 -> NaN Division_impossible
-xsub265 subtract -1.85771840E+365552540 -73028339.7 -> -1.85771840E+365552540 Inexact Rounded
-xadd266 add 34.1935525 -40767.6450 -> -40733.4514 Inexact Rounded
-xcom266 compare 34.1935525 -40767.6450 -> 1
-xdiv266 divide 34.1935525 -40767.6450 -> -0.000838742402 Inexact Rounded
-xdvi266 divideint 34.1935525 -40767.6450 -> -0
-xmul266 multiply 34.1935525 -40767.6450 -> -1393990.61 Inexact Rounded
-xpow266 power 34.1935525 -40768 -> 1.45174210E-62536 Inexact Rounded
-xrem266 remainder 34.1935525 -40767.6450 -> 34.1935525
-xsub266 subtract 34.1935525 -40767.6450 -> 40801.8386 Inexact Rounded
-xadd267 add 26.0009168E+751618294 -304019.929 -> 2.60009168E+751618295 Inexact Rounded
-xcom267 compare 26.0009168E+751618294 -304019.929 -> 1
-xdiv267 divide 26.0009168E+751618294 -304019.929 -> -8.55237250E+751618289 Inexact Rounded
-xdvi267 divideint 26.0009168E+751618294 -304019.929 -> NaN Division_impossible
-xmul267 multiply 26.0009168E+751618294 -304019.929 -> -7.90479688E+751618300 Inexact Rounded
-xpow267 power 26.0009168E+751618294 -304020 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem267 remainder 26.0009168E+751618294 -304019.929 -> NaN Division_impossible
-xsub267 subtract 26.0009168E+751618294 -304019.929 -> 2.60009168E+751618295 Inexact Rounded
-xadd268 add -58.4853072E+588540055 -4647.3205 -> -5.84853072E+588540056 Inexact Rounded
-xcom268 compare -58.4853072E+588540055 -4647.3205 -> -1
-xdiv268 divide -58.4853072E+588540055 -4647.3205 -> 1.25847372E+588540053 Inexact Rounded
-xdvi268 divideint -58.4853072E+588540055 -4647.3205 -> NaN Division_impossible
-xmul268 multiply -58.4853072E+588540055 -4647.3205 -> 2.71799967E+588540060 Inexact Rounded
-xpow268 power -58.4853072E+588540055 -4647 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem268 remainder -58.4853072E+588540055 -4647.3205 -> NaN Division_impossible
-xsub268 subtract -58.4853072E+588540055 -4647.3205 -> -5.84853072E+588540056 Inexact Rounded
-xadd269 add 51.025101 -4467691.57 -> -4467640.54 Inexact Rounded
-xcom269 compare 51.025101 -4467691.57 -> 1
-xdiv269 divide 51.025101 -4467691.57 -> -0.0000114209095 Inexact Rounded
-xdvi269 divideint 51.025101 -4467691.57 -> -0
-xmul269 multiply 51.025101 -4467691.57 -> -227964414 Inexact Rounded
-xpow269 power 51.025101 -4467692 -> 4.49462589E-7629853 Inexact Rounded
-xrem269 remainder 51.025101 -4467691.57 -> 51.025101
-xsub269 subtract 51.025101 -4467691.57 -> 4467742.60 Inexact Rounded
-xadd270 add -2214.76582 379785372E+223117572 -> 3.79785372E+223117580 Inexact Rounded
-xcom270 compare -2214.76582 379785372E+223117572 -> -1
-xdiv270 divide -2214.76582 379785372E+223117572 -> -5.83162487E-223117578 Inexact Rounded
-xdvi270 divideint -2214.76582 379785372E+223117572 -> -0
-xmul270 multiply -2214.76582 379785372E+223117572 -> -8.41135661E+223117583 Inexact Rounded
-xpow270 power -2214.76582 4 -> 2.40608658E+13 Inexact Rounded
-xrem270 remainder -2214.76582 379785372E+223117572 -> -2214.76582
-xsub270 subtract -2214.76582 379785372E+223117572 -> -3.79785372E+223117580 Inexact Rounded
-xadd271 add -2564.75207E-841443929 -653498187 -> -653498187 Inexact Rounded
-xcom271 compare -2564.75207E-841443929 -653498187 -> 1
-xdiv271 divide -2564.75207E-841443929 -653498187 -> 3.92465063E-841443935 Inexact Rounded
-xdvi271 divideint -2564.75207E-841443929 -653498187 -> 0
-xmul271 multiply -2564.75207E-841443929 -653498187 -> 1.67606083E-841443917 Inexact Rounded
-xpow271 power -2564.75207E-841443929 -653498187 -> -Infinity Overflow Inexact Rounded
-xrem271 remainder -2564.75207E-841443929 -653498187 -> -2.56475207E-841443926
-xsub271 subtract -2564.75207E-841443929 -653498187 -> 653498187 Inexact Rounded
-xadd272 add 513115529. 27775075.6E+217133352 -> 2.77750756E+217133359 Inexact Rounded
-xcom272 compare 513115529. 27775075.6E+217133352 -> -1
-xdiv272 divide 513115529. 27775075.6E+217133352 -> 1.84739562E-217133351 Inexact Rounded
-xdvi272 divideint 513115529. 27775075.6E+217133352 -> 0
-xmul272 multiply 513115529. 27775075.6E+217133352 -> 1.42518226E+217133368 Inexact Rounded
-xpow272 power 513115529. 3 -> 1.35096928E+26 Inexact Rounded
-xrem272 remainder 513115529. 27775075.6E+217133352 -> 513115529
-xsub272 subtract 513115529. 27775075.6E+217133352 -> -2.77750756E+217133359 Inexact Rounded
-xadd273 add -247157.208 -532990.453 -> -780147.661
-xcom273 compare -247157.208 -532990.453 -> 1
-xdiv273 divide -247157.208 -532990.453 -> 0.463717890 Inexact Rounded
-xdvi273 divideint -247157.208 -532990.453 -> 0
-xmul273 multiply -247157.208 -532990.453 -> 1.31732432E+11 Inexact Rounded
-xpow273 power -247157.208 -532990 -> 1.48314033E-2874401 Inexact Rounded
-xrem273 remainder -247157.208 -532990.453 -> -247157.208
-xsub273 subtract -247157.208 -532990.453 -> 285833.245
-xadd274 add 40.2490764E-339482253 7626.85442E+594264540 -> 7.62685442E+594264543 Inexact Rounded
-xcom274 compare 40.2490764E-339482253 7626.85442E+594264540 -> -1
-xdiv274 divide 40.2490764E-339482253 7626.85442E+594264540 -> 5.27728395E-933746796 Inexact Rounded
-xdvi274 divideint 40.2490764E-339482253 7626.85442E+594264540 -> 0
-xmul274 multiply 40.2490764E-339482253 7626.85442E+594264540 -> 3.06973846E+254782292 Inexact Rounded
-xpow274 power 40.2490764E-339482253 8 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem274 remainder 40.2490764E-339482253 7626.85442E+594264540 -> 4.02490764E-339482252
-xsub274 subtract 40.2490764E-339482253 7626.85442E+594264540 -> -7.62685442E+594264543 Inexact Rounded
-xadd275 add -1156008.8 -8870382.36 -> -10026391.2 Inexact Rounded
-xcom275 compare -1156008.8 -8870382.36 -> 1
-xdiv275 divide -1156008.8 -8870382.36 -> 0.130322319 Inexact Rounded
-xdvi275 divideint -1156008.8 -8870382.36 -> 0
-xmul275 multiply -1156008.8 -8870382.36 -> 1.02542401E+13 Inexact Rounded
-xpow275 power -1156008.8 -8870382 -> 4.32494996E-53780782 Inexact Rounded
-xrem275 remainder -1156008.8 -8870382.36 -> -1156008.80
-xsub275 subtract -1156008.8 -8870382.36 -> 7714373.56
-xadd276 add 880097928. -52455011.1E+204538218 -> -5.24550111E+204538225 Inexact Rounded
-xcom276 compare 880097928. -52455011.1E+204538218 -> 1
-xdiv276 divide 880097928. -52455011.1E+204538218 -> -1.67781478E-204538217 Inexact Rounded
-xdvi276 divideint 880097928. -52455011.1E+204538218 -> -0
-xmul276 multiply 880097928. -52455011.1E+204538218 -> -4.61655466E+204538234 Inexact Rounded
-xpow276 power 880097928. -5 -> 1.89384751E-45 Inexact Rounded
-xrem276 remainder 880097928. -52455011.1E+204538218 -> 880097928
-xsub276 subtract 880097928. -52455011.1E+204538218 -> 5.24550111E+204538225 Inexact Rounded
-xadd277 add 5796.2524 34458329.7E+832129426 -> 3.44583297E+832129433 Inexact Rounded
-xcom277 compare 5796.2524 34458329.7E+832129426 -> -1
-xdiv277 divide 5796.2524 34458329.7E+832129426 -> 1.68210486E-832129430 Inexact Rounded
-xdvi277 divideint 5796.2524 34458329.7E+832129426 -> 0
-xmul277 multiply 5796.2524 34458329.7E+832129426 -> 1.99729176E+832129437 Inexact Rounded
-xpow277 power 5796.2524 3 -> 1.94734037E+11 Inexact Rounded
-xrem277 remainder 5796.2524 34458329.7E+832129426 -> 5796.2524
-xsub277 subtract 5796.2524 34458329.7E+832129426 -> -3.44583297E+832129433 Inexact Rounded
-xadd278 add 27.1000923E-218032223 -45.0198341 -> -45.0198341 Inexact Rounded
-xcom278 compare 27.1000923E-218032223 -45.0198341 -> 1
-xdiv278 divide 27.1000923E-218032223 -45.0198341 -> -6.01958955E-218032224 Inexact Rounded
-xdvi278 divideint 27.1000923E-218032223 -45.0198341 -> -0
-xmul278 multiply 27.1000923E-218032223 -45.0198341 -> -1.22004166E-218032220 Inexact Rounded
-xpow278 power 27.1000923E-218032223 -45 -> Infinity Overflow Inexact Rounded
-xrem278 remainder 27.1000923E-218032223 -45.0198341 -> 2.71000923E-218032222
-xsub278 subtract 27.1000923E-218032223 -45.0198341 -> 45.0198341 Inexact Rounded
-xadd279 add 42643477.8 26118465E-730390549 -> 42643477.8 Inexact Rounded
-xcom279 compare 42643477.8 26118465E-730390549 -> 1
-xdiv279 divide 42643477.8 26118465E-730390549 -> 1.63269464E+730390549 Inexact Rounded
-xdvi279 divideint 42643477.8 26118465E-730390549 -> NaN Division_impossible
-xmul279 multiply 42643477.8 26118465E-730390549 -> 1.11378218E-730390534 Inexact Rounded
-xpow279 power 42643477.8 3 -> 7.75457230E+22 Inexact Rounded
-xrem279 remainder 42643477.8 26118465E-730390549 -> NaN Division_impossible
-xsub279 subtract 42643477.8 26118465E-730390549 -> 42643477.8 Inexact Rounded
-xadd280 add -31918.9176E-163031657 -21.5422824E-807317258 -> -3.19189176E-163031653 Inexact Rounded
-xcom280 compare -31918.9176E-163031657 -21.5422824E-807317258 -> -1
-xdiv280 divide -31918.9176E-163031657 -21.5422824E-807317258 -> 1.48168690E+644285604 Inexact Rounded
-xdvi280 divideint -31918.9176E-163031657 -21.5422824E-807317258 -> NaN Division_impossible
-xmul280 multiply -31918.9176E-163031657 -21.5422824E-807317258 -> 6.87606337E-970348910 Inexact Rounded
-xpow280 power -31918.9176E-163031657 -2 -> 9.81530250E+326063304 Inexact Rounded
-xrem280 remainder -31918.9176E-163031657 -21.5422824E-807317258 -> NaN Division_impossible
-xsub280 subtract -31918.9176E-163031657 -21.5422824E-807317258 -> -3.19189176E-163031653 Inexact Rounded
-xadd281 add 84224841.0 2.62548255E+647087608 -> 2.62548255E+647087608 Inexact Rounded
-xcom281 compare 84224841.0 2.62548255E+647087608 -> -1
-xdiv281 divide 84224841.0 2.62548255E+647087608 -> 3.20797565E-647087601 Inexact Rounded
-xdvi281 divideint 84224841.0 2.62548255E+647087608 -> 0
-xmul281 multiply 84224841.0 2.62548255E+647087608 -> 2.21130850E+647087616 Inexact Rounded
-xpow281 power 84224841.0 3 -> 5.97476185E+23 Inexact Rounded
-xrem281 remainder 84224841.0 2.62548255E+647087608 -> 84224841.0
-xsub281 subtract 84224841.0 2.62548255E+647087608 -> -2.62548255E+647087608 Inexact Rounded
-xadd282 add -64413698.9 -6674.1055E-701047852 -> -64413698.9 Inexact Rounded
-xcom282 compare -64413698.9 -6674.1055E-701047852 -> -1
-xdiv282 divide -64413698.9 -6674.1055E-701047852 -> 9.65128569E+701047855 Inexact Rounded
-xdvi282 divideint -64413698.9 -6674.1055E-701047852 -> NaN Division_impossible
-xmul282 multiply -64413698.9 -6674.1055E-701047852 -> 4.29903822E-701047841 Inexact Rounded
-xpow282 power -64413698.9 -7 -> -2.17346338E-55 Inexact Rounded
-xrem282 remainder -64413698.9 -6674.1055E-701047852 -> NaN Division_impossible
-xsub282 subtract -64413698.9 -6674.1055E-701047852 -> -64413698.9 Inexact Rounded
-xadd283 add -62.5059208 9.5795779E-898350012 -> -62.5059208 Inexact Rounded
-xcom283 compare -62.5059208 9.5795779E-898350012 -> -1
-xdiv283 divide -62.5059208 9.5795779E-898350012 -> -6.52491388E+898350012 Inexact Rounded
-xdvi283 divideint -62.5059208 9.5795779E-898350012 -> NaN Division_impossible
-xmul283 multiply -62.5059208 9.5795779E-898350012 -> -5.98780338E-898350010 Inexact Rounded
-xpow283 power -62.5059208 10 -> 9.10356659E+17 Inexact Rounded
-xrem283 remainder -62.5059208 9.5795779E-898350012 -> NaN Division_impossible
-xsub283 subtract -62.5059208 9.5795779E-898350012 -> -62.5059208 Inexact Rounded
-xadd284 add 9090950.80 436.400932 -> 9091387.20 Inexact Rounded
-xcom284 compare 9090950.80 436.400932 -> 1
-xdiv284 divide 9090950.80 436.400932 -> 20831.6485 Inexact Rounded
-xdvi284 divideint 9090950.80 436.400932 -> 20831
-xmul284 multiply 9090950.80 436.400932 -> 3.96729940E+9 Inexact Rounded
-xpow284 power 9090950.80 436 -> 8.98789557E+3033 Inexact Rounded
-xrem284 remainder 9090950.80 436.400932 -> 282.985508
-xsub284 subtract 9090950.80 436.400932 -> 9090514.40 Inexact Rounded
-xadd285 add -89833825.7E+329205393 -779430.194 -> -8.98338257E+329205400 Inexact Rounded
-xcom285 compare -89833825.7E+329205393 -779430.194 -> -1
-xdiv285 divide -89833825.7E+329205393 -779430.194 -> 1.15255768E+329205395 Inexact Rounded
-xdvi285 divideint -89833825.7E+329205393 -779430.194 -> NaN Division_impossible
-xmul285 multiply -89833825.7E+329205393 -779430.194 -> 7.00191962E+329205406 Inexact Rounded
-xpow285 power -89833825.7E+329205393 -779430 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem285 remainder -89833825.7E+329205393 -779430.194 -> NaN Division_impossible
-xsub285 subtract -89833825.7E+329205393 -779430.194 -> -8.98338257E+329205400 Inexact Rounded
-xadd286 add -714562.019E+750205688 704079764 -> -7.14562019E+750205693 Inexact Rounded
-xcom286 compare -714562.019E+750205688 704079764 -> -1
-xdiv286 divide -714562.019E+750205688 704079764 -> -1.01488788E+750205685 Inexact Rounded
-xdvi286 divideint -714562.019E+750205688 704079764 -> NaN Division_impossible
-xmul286 multiply -714562.019E+750205688 704079764 -> -5.03108658E+750205702 Inexact Rounded
-xpow286 power -714562.019E+750205688 704079764 -> Infinity Overflow Inexact Rounded
-xrem286 remainder -714562.019E+750205688 704079764 -> NaN Division_impossible
-xsub286 subtract -714562.019E+750205688 704079764 -> -7.14562019E+750205693 Inexact Rounded
-xadd287 add -584537670. 31139.7737E-146687560 -> -584537670 Inexact Rounded
-xcom287 compare -584537670. 31139.7737E-146687560 -> -1
-xdiv287 divide -584537670. 31139.7737E-146687560 -> -1.87714168E+146687564 Inexact Rounded
-xdvi287 divideint -584537670. 31139.7737E-146687560 -> NaN Division_impossible
-xmul287 multiply -584537670. 31139.7737E-146687560 -> -1.82023708E-146687547 Inexact Rounded
-xpow287 power -584537670. 3 -> -1.99727337E+26 Inexact Rounded
-xrem287 remainder -584537670. 31139.7737E-146687560 -> NaN Division_impossible
-xsub287 subtract -584537670. 31139.7737E-146687560 -> -584537670 Inexact Rounded
-xadd288 add -4.18074650E-858746879 571035.277E-279409165 -> 5.71035277E-279409160 Inexact Rounded
-xcom288 compare -4.18074650E-858746879 571035.277E-279409165 -> -1
-xdiv288 divide -4.18074650E-858746879 571035.277E-279409165 -> -7.32134540E-579337720 Inexact Rounded
-xdvi288 divideint -4.18074650E-858746879 571035.277E-279409165 -> -0
-xmul288 multiply -4.18074650E-858746879 571035.277E-279409165 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xpow288 power -4.18074650E-858746879 6 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem288 remainder -4.18074650E-858746879 571035.277E-279409165 -> -4.18074650E-858746879
-xsub288 subtract -4.18074650E-858746879 571035.277E-279409165 -> -5.71035277E-279409160 Inexact Rounded
-xadd289 add 5.15309635 -695649.219E+451948183 -> -6.95649219E+451948188 Inexact Rounded
-xcom289 compare 5.15309635 -695649.219E+451948183 -> 1
-xdiv289 divide 5.15309635 -695649.219E+451948183 -> -7.40760747E-451948189 Inexact Rounded
-xdvi289 divideint 5.15309635 -695649.219E+451948183 -> -0
-xmul289 multiply 5.15309635 -695649.219E+451948183 -> -3.58474745E+451948189 Inexact Rounded
-xpow289 power 5.15309635 -7 -> 0.0000103638749 Inexact Rounded
-xrem289 remainder 5.15309635 -695649.219E+451948183 -> 5.15309635
-xsub289 subtract 5.15309635 -695649.219E+451948183 -> 6.95649219E+451948188 Inexact Rounded
-xadd290 add -940030153.E+83797657 -4.11510193 -> -9.40030153E+83797665 Inexact Rounded
-xcom290 compare -940030153.E+83797657 -4.11510193 -> -1
-xdiv290 divide -940030153.E+83797657 -4.11510193 -> 2.28434233E+83797665 Inexact Rounded
-xdvi290 divideint -940030153.E+83797657 -4.11510193 -> NaN Division_impossible
-xmul290 multiply -940030153.E+83797657 -4.11510193 -> 3.86831990E+83797666 Inexact Rounded
-xpow290 power -940030153.E+83797657 -4 -> 1.28065710E-335190664 Inexact Rounded
-xrem290 remainder -940030153.E+83797657 -4.11510193 -> NaN Division_impossible
-xsub290 subtract -940030153.E+83797657 -4.11510193 -> -9.40030153E+83797665 Inexact Rounded
-xadd291 add 89088.9683E+587739290 1.31932110 -> 8.90889683E+587739294 Inexact Rounded
-xcom291 compare 89088.9683E+587739290 1.31932110 -> 1
-xdiv291 divide 89088.9683E+587739290 1.31932110 -> 6.75263727E+587739294 Inexact Rounded
-xdvi291 divideint 89088.9683E+587739290 1.31932110 -> NaN Division_impossible
-xmul291 multiply 89088.9683E+587739290 1.31932110 -> 1.17536956E+587739295 Inexact Rounded
-xpow291 power 89088.9683E+587739290 1 -> 8.90889683E+587739294
-xrem291 remainder 89088.9683E+587739290 1.31932110 -> NaN Division_impossible
-xsub291 subtract 89088.9683E+587739290 1.31932110 -> 8.90889683E+587739294 Inexact Rounded
-xadd292 add 3336750 6.47961126 -> 3336756.48 Inexact Rounded
-xcom292 compare 3336750 6.47961126 -> 1
-xdiv292 divide 3336750 6.47961126 -> 514961.448 Inexact Rounded
-xdvi292 divideint 3336750 6.47961126 -> 514961
-xmul292 multiply 3336750 6.47961126 -> 21620842.9 Inexact Rounded
-xpow292 power 3336750 6 -> 1.38019997E+39 Inexact Rounded
-xrem292 remainder 3336750 6.47961126 -> 2.90593914
-xsub292 subtract 3336750 6.47961126 -> 3336743.52 Inexact Rounded
-xadd293 add 904654622. 692065270.E+329081915 -> 6.92065270E+329081923 Inexact Rounded
-xcom293 compare 904654622. 692065270.E+329081915 -> -1
-xdiv293 divide 904654622. 692065270.E+329081915 -> 1.30718107E-329081915 Inexact Rounded
-xdvi293 divideint 904654622. 692065270.E+329081915 -> 0
-xmul293 multiply 904654622. 692065270.E+329081915 -> 6.26080045E+329081932 Inexact Rounded
-xpow293 power 904654622. 7 -> 4.95883485E+62 Inexact Rounded
-xrem293 remainder 904654622. 692065270.E+329081915 -> 904654622
-xsub293 subtract 904654622. 692065270.E+329081915 -> -6.92065270E+329081923 Inexact Rounded
-xadd294 add 304804380 -4681.23698 -> 304799699 Inexact Rounded
-xcom294 compare 304804380 -4681.23698 -> 1
-xdiv294 divide 304804380 -4681.23698 -> -65111.9312 Inexact Rounded
-xdvi294 divideint 304804380 -4681.23698 -> -65111
-xmul294 multiply 304804380 -4681.23698 -> -1.42686154E+12 Inexact Rounded
-xpow294 power 304804380 -4681 -> 1.98037102E-39714 Inexact Rounded
-xrem294 remainder 304804380 -4681.23698 -> 4358.99522
-xsub294 subtract 304804380 -4681.23698 -> 304809061 Inexact Rounded
-xadd295 add 674.55569 -82981.2684E+852890752 -> -8.29812684E+852890756 Inexact Rounded
-xcom295 compare 674.55569 -82981.2684E+852890752 -> 1
-xdiv295 divide 674.55569 -82981.2684E+852890752 -> -8.12901156E-852890755 Inexact Rounded
-xdvi295 divideint 674.55569 -82981.2684E+852890752 -> -0
-xmul295 multiply 674.55569 -82981.2684E+852890752 -> -5.59754868E+852890759 Inexact Rounded
-xpow295 power 674.55569 -8 -> 2.33269265E-23 Inexact Rounded
-xrem295 remainder 674.55569 -82981.2684E+852890752 -> 674.55569
-xsub295 subtract 674.55569 -82981.2684E+852890752 -> 8.29812684E+852890756 Inexact Rounded
-xadd296 add -5111.51025E-108006096 5448870.4E+279212255 -> 5.44887040E+279212261 Inexact Rounded
-xcom296 compare -5111.51025E-108006096 5448870.4E+279212255 -> -1
-xdiv296 divide -5111.51025E-108006096 5448870.4E+279212255 -> -9.38086222E-387218355 Inexact Rounded
-xdvi296 divideint -5111.51025E-108006096 5448870.4E+279212255 -> -0
-xmul296 multiply -5111.51025E-108006096 5448870.4E+279212255 -> -2.78519569E+171206169 Inexact Rounded
-xpow296 power -5111.51025E-108006096 5 -> -3.48936323E-540030462 Inexact Rounded
-xrem296 remainder -5111.51025E-108006096 5448870.4E+279212255 -> -5.11151025E-108006093
-xsub296 subtract -5111.51025E-108006096 5448870.4E+279212255 -> -5.44887040E+279212261 Inexact Rounded
-xadd297 add -2623.45068 -466463938. -> -466466561 Inexact Rounded
-xcom297 compare -2623.45068 -466463938. -> 1
-xdiv297 divide -2623.45068 -466463938. -> 0.00000562412325 Inexact Rounded
-xdvi297 divideint -2623.45068 -466463938. -> 0
-xmul297 multiply -2623.45068 -466463938. -> 1.22374514E+12 Inexact Rounded
-xpow297 power -2623.45068 -466463938 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem297 remainder -2623.45068 -466463938. -> -2623.45068
-xsub297 subtract -2623.45068 -466463938. -> 466461315 Inexact Rounded
-xadd298 add 299350.435 3373.33551 -> 302723.771 Inexact Rounded
-xcom298 compare 299350.435 3373.33551 -> 1
-xdiv298 divide 299350.435 3373.33551 -> 88.7401903 Inexact Rounded
-xdvi298 divideint 299350.435 3373.33551 -> 88
-xmul298 multiply 299350.435 3373.33551 -> 1.00980945E+9 Inexact Rounded
-xpow298 power 299350.435 3373 -> 1.42817370E+18471 Inexact Rounded
-xrem298 remainder 299350.435 3373.33551 -> 2496.91012
-xsub298 subtract 299350.435 3373.33551 -> 295977.099 Inexact Rounded
-xadd299 add -6589947.80 -2448.75933E-591549734 -> -6589947.80 Inexact Rounded
-xcom299 compare -6589947.80 -2448.75933E-591549734 -> -1
-xdiv299 divide -6589947.80 -2448.75933E-591549734 -> 2.69113739E+591549737 Inexact Rounded
-xdvi299 divideint -6589947.80 -2448.75933E-591549734 -> NaN Division_impossible
-xmul299 multiply -6589947.80 -2448.75933E-591549734 -> 1.61371962E-591549724 Inexact Rounded
-xpow299 power -6589947.80 -2 -> 2.30269305E-14 Inexact Rounded
-xrem299 remainder -6589947.80 -2448.75933E-591549734 -> NaN Division_impossible
-xsub299 subtract -6589947.80 -2448.75933E-591549734 -> -6589947.80 Inexact Rounded
-xadd300 add 3774.5358E-491090520 173.060090 -> 173.060090 Inexact Rounded
-xcom300 compare 3774.5358E-491090520 173.060090 -> -1
-xdiv300 divide 3774.5358E-491090520 173.060090 -> 2.18105503E-491090519 Inexact Rounded
-xdvi300 divideint 3774.5358E-491090520 173.060090 -> 0
-xmul300 multiply 3774.5358E-491090520 173.060090 -> 6.53221505E-491090515 Inexact Rounded
-xpow300 power 3774.5358E-491090520 173 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem300 remainder 3774.5358E-491090520 173.060090 -> 3.7745358E-491090517
-xsub300 subtract 3774.5358E-491090520 173.060090 -> -173.060090 Inexact Rounded
-xadd301 add -13.6783690 -453.610117 -> -467.288486 Rounded
-xcom301 compare -13.6783690 -453.610117 -> 1
-xdiv301 divide -13.6783690 -453.610117 -> 0.0301544619 Inexact Rounded
-xdvi301 divideint -13.6783690 -453.610117 -> 0
-xmul301 multiply -13.6783690 -453.610117 -> 6204.64656 Inexact Rounded
-xpow301 power -13.6783690 -454 -> 1.73948535E-516 Inexact Rounded
-xrem301 remainder -13.6783690 -453.610117 -> -13.6783690
-xsub301 subtract -13.6783690 -453.610117 -> 439.931748 Rounded
-xadd302 add -990100927.E-615244634 223801.421E+247632618 -> 2.23801421E+247632623 Inexact Rounded
-xcom302 compare -990100927.E-615244634 223801.421E+247632618 -> -1
-xdiv302 divide -990100927.E-615244634 223801.421E+247632618 -> -4.42401537E-862877249 Inexact Rounded
-xdvi302 divideint -990100927.E-615244634 223801.421E+247632618 -> -0
-xmul302 multiply -990100927.E-615244634 223801.421E+247632618 -> -2.21585994E-367612002 Inexact Rounded
-xpow302 power -990100927.E-615244634 2 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem302 remainder -990100927.E-615244634 223801.421E+247632618 -> -9.90100927E-615244626
-xsub302 subtract -990100927.E-615244634 223801.421E+247632618 -> -2.23801421E+247632623 Inexact Rounded
-xadd303 add 1275.10292 -667965353 -> -667964078 Inexact Rounded
-xcom303 compare 1275.10292 -667965353 -> 1
-xdiv303 divide 1275.10292 -667965353 -> -0.00000190893572 Inexact Rounded
-xdvi303 divideint 1275.10292 -667965353 -> -0
-xmul303 multiply 1275.10292 -667965353 -> -8.51724572E+11 Inexact Rounded
-xpow303 power 1275.10292 -667965353 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem303 remainder 1275.10292 -667965353 -> 1275.10292
-xsub303 subtract 1275.10292 -667965353 -> 667966628 Inexact Rounded
-xadd304 add -8.76375480E-596792197 992.077361 -> 992.077361 Inexact Rounded
-xcom304 compare -8.76375480E-596792197 992.077361 -> -1
-xdiv304 divide -8.76375480E-596792197 992.077361 -> -8.83374134E-596792200 Inexact Rounded
-xdvi304 divideint -8.76375480E-596792197 992.077361 -> -0
-xmul304 multiply -8.76375480E-596792197 992.077361 -> -8.69432273E-596792194 Inexact Rounded
-xpow304 power -8.76375480E-596792197 992 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem304 remainder -8.76375480E-596792197 992.077361 -> -8.76375480E-596792197
-xsub304 subtract -8.76375480E-596792197 992.077361 -> -992.077361 Inexact Rounded
-xadd305 add 953.976935E+385444720 96503.3378 -> 9.53976935E+385444722 Inexact Rounded
-xcom305 compare 953.976935E+385444720 96503.3378 -> 1
-xdiv305 divide 953.976935E+385444720 96503.3378 -> 9.88542942E+385444717 Inexact Rounded
-xdvi305 divideint 953.976935E+385444720 96503.3378 -> NaN Division_impossible
-xmul305 multiply 953.976935E+385444720 96503.3378 -> 9.20619584E+385444727 Inexact Rounded
-xpow305 power 953.976935E+385444720 96503 -> Infinity Overflow Inexact Rounded
-xrem305 remainder 953.976935E+385444720 96503.3378 -> NaN Division_impossible
-xsub305 subtract 953.976935E+385444720 96503.3378 -> 9.53976935E+385444722 Inexact Rounded
-xadd306 add 213577152 -986710073E+31900046 -> -9.86710073E+31900054 Inexact Rounded
-xcom306 compare 213577152 -986710073E+31900046 -> 1
-xdiv306 divide 213577152 -986710073E+31900046 -> -2.16453807E-31900047 Inexact Rounded
-xdvi306 divideint 213577152 -986710073E+31900046 -> -0
-xmul306 multiply 213577152 -986710073E+31900046 -> -2.10738727E+31900063 Inexact Rounded
-xpow306 power 213577152 -10 -> 5.06351487E-84 Inexact Rounded
-xrem306 remainder 213577152 -986710073E+31900046 -> 213577152
-xsub306 subtract 213577152 -986710073E+31900046 -> 9.86710073E+31900054 Inexact Rounded
-xadd307 add 91393.9398E-323439228 -135.701000 -> -135.701000 Inexact Rounded
-xcom307 compare 91393.9398E-323439228 -135.701000 -> 1
-xdiv307 divide 91393.9398E-323439228 -135.701000 -> -6.73494962E-323439226 Inexact Rounded
-xdvi307 divideint 91393.9398E-323439228 -135.701000 -> -0
-xmul307 multiply 91393.9398E-323439228 -135.701000 -> -1.24022490E-323439221 Inexact Rounded
-xpow307 power 91393.9398E-323439228 -136 -> Infinity Overflow Inexact Rounded
-xrem307 remainder 91393.9398E-323439228 -135.701000 -> 9.13939398E-323439224
-xsub307 subtract 91393.9398E-323439228 -135.701000 -> 135.701000 Inexact Rounded
-xadd308 add -396.503557 45757264.E-254363788 -> -396.503557 Inexact Rounded
-xcom308 compare -396.503557 45757264.E-254363788 -> -1
-xdiv308 divide -396.503557 45757264.E-254363788 -> -8.66536856E+254363782 Inexact Rounded
-xdvi308 divideint -396.503557 45757264.E-254363788 -> NaN Division_impossible
-xmul308 multiply -396.503557 45757264.E-254363788 -> -1.81429179E-254363778 Inexact Rounded
-xpow308 power -396.503557 5 -> -9.80021128E+12 Inexact Rounded
-xrem308 remainder -396.503557 45757264.E-254363788 -> NaN Division_impossible
-xsub308 subtract -396.503557 45757264.E-254363788 -> -396.503557 Inexact Rounded
-xadd309 add 59807846.1 1.53345254 -> 59807847.6 Inexact Rounded
-xcom309 compare 59807846.1 1.53345254 -> 1
-xdiv309 divide 59807846.1 1.53345254 -> 39002084.9 Inexact Rounded
-xdvi309 divideint 59807846.1 1.53345254 -> 39002084
-xmul309 multiply 59807846.1 1.53345254 -> 91712493.5 Inexact Rounded
-xpow309 power 59807846.1 2 -> 3.57697846E+15 Inexact Rounded
-xrem309 remainder 59807846.1 1.53345254 -> 1.32490664
-xsub309 subtract 59807846.1 1.53345254 -> 59807844.6 Inexact Rounded
-xadd310 add -8046158.45 8.3635397 -> -8046150.09 Inexact Rounded
-xcom310 compare -8046158.45 8.3635397 -> -1
-xdiv310 divide -8046158.45 8.3635397 -> -962051.803 Inexact Rounded
-xdvi310 divideint -8046158.45 8.3635397 -> -962051
-xmul310 multiply -8046158.45 8.3635397 -> -67294365.6 Inexact Rounded
-xpow310 power -8046158.45 8 -> 1.75674467E+55 Inexact Rounded
-xrem310 remainder -8046158.45 8.3635397 -> -6.7180753
-xsub310 subtract -8046158.45 8.3635397 -> -8046166.81 Inexact Rounded
-xadd311 add 55.1123381E+50627250 -94.0355047E-162540316 -> 5.51123381E+50627251 Inexact Rounded
-xcom311 compare 55.1123381E+50627250 -94.0355047E-162540316 -> 1
-xdiv311 divide 55.1123381E+50627250 -94.0355047E-162540316 -> -5.86080101E+213167565 Inexact Rounded
-xdvi311 divideint 55.1123381E+50627250 -94.0355047E-162540316 -> NaN Division_impossible
-xmul311 multiply 55.1123381E+50627250 -94.0355047E-162540316 -> -5.18251653E-111913063 Inexact Rounded
-xpow311 power 55.1123381E+50627250 -9 -> 2.13186881E-455645266 Inexact Rounded
-xrem311 remainder 55.1123381E+50627250 -94.0355047E-162540316 -> NaN Division_impossible
-xsub311 subtract 55.1123381E+50627250 -94.0355047E-162540316 -> 5.51123381E+50627251 Inexact Rounded
-xadd312 add -948.038054 3580.84510 -> 2632.80705 Inexact Rounded
-xcom312 compare -948.038054 3580.84510 -> -1
-xdiv312 divide -948.038054 3580.84510 -> -0.264752601 Inexact Rounded
-xdvi312 divideint -948.038054 3580.84510 -> -0
-xmul312 multiply -948.038054 3580.84510 -> -3394777.42 Inexact Rounded
-xpow312 power -948.038054 3581 -> -1.03058288E+10660 Inexact Rounded
-xrem312 remainder -948.038054 3580.84510 -> -948.038054
-xsub312 subtract -948.038054 3580.84510 -> -4528.88315 Inexact Rounded
-xadd313 add -6026.42752 -14.2286406E-334921364 -> -6026.42752 Inexact Rounded
-xcom313 compare -6026.42752 -14.2286406E-334921364 -> -1
-xdiv313 divide -6026.42752 -14.2286406E-334921364 -> 4.23542044E+334921366 Inexact Rounded
-xdvi313 divideint -6026.42752 -14.2286406E-334921364 -> NaN Division_impossible
-xmul313 multiply -6026.42752 -14.2286406E-334921364 -> 8.57478713E-334921360 Inexact Rounded
-xpow313 power -6026.42752 -1 -> -0.000165935788 Inexact Rounded
-xrem313 remainder -6026.42752 -14.2286406E-334921364 -> NaN Division_impossible
-xsub313 subtract -6026.42752 -14.2286406E-334921364 -> -6026.42752 Inexact Rounded
-xadd314 add 79551.5014 -538.186229 -> 79013.3152 Inexact Rounded
-xcom314 compare 79551.5014 -538.186229 -> 1
-xdiv314 divide 79551.5014 -538.186229 -> -147.814078 Inexact Rounded
-xdvi314 divideint 79551.5014 -538.186229 -> -147
-xmul314 multiply 79551.5014 -538.186229 -> -42813522.5 Inexact Rounded
-xpow314 power 79551.5014 -538 -> 2.82599389E-2637 Inexact Rounded
-xrem314 remainder 79551.5014 -538.186229 -> 438.125737
-xsub314 subtract 79551.5014 -538.186229 -> 80089.6876 Inexact Rounded
-xadd315 add 42706056.E+623578292 -690.327745 -> 4.27060560E+623578299 Inexact Rounded
-xcom315 compare 42706056.E+623578292 -690.327745 -> 1
-xdiv315 divide 42706056.E+623578292 -690.327745 -> -6.18634501E+623578296 Inexact Rounded
-xdvi315 divideint 42706056.E+623578292 -690.327745 -> NaN Division_impossible
-xmul315 multiply 42706056.E+623578292 -690.327745 -> -2.94811753E+623578302 Inexact Rounded
-xpow315 power 42706056.E+623578292 -690 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem315 remainder 42706056.E+623578292 -690.327745 -> NaN Division_impossible
-xsub315 subtract 42706056.E+623578292 -690.327745 -> 4.27060560E+623578299 Inexact Rounded
-xadd316 add 2454136.08E+502374077 856268.795E-356664934 -> 2.45413608E+502374083 Inexact Rounded
-xcom316 compare 2454136.08E+502374077 856268.795E-356664934 -> 1
-xdiv316 divide 2454136.08E+502374077 856268.795E-356664934 -> 2.86608142E+859039011 Inexact Rounded
-xdvi316 divideint 2454136.08E+502374077 856268.795E-356664934 -> NaN Division_impossible
-xmul316 multiply 2454136.08E+502374077 856268.795E-356664934 -> 2.10140014E+145709155 Inexact Rounded
-xpow316 power 2454136.08E+502374077 9 -> Infinity Overflow Inexact Rounded
-xrem316 remainder 2454136.08E+502374077 856268.795E-356664934 -> NaN Division_impossible
-xsub316 subtract 2454136.08E+502374077 856268.795E-356664934 -> 2.45413608E+502374083 Inexact Rounded
-xadd317 add -3264204.54 -42704.501 -> -3306909.04 Inexact Rounded
-xcom317 compare -3264204.54 -42704.501 -> -1
-xdiv317 divide -3264204.54 -42704.501 -> 76.4370140 Inexact Rounded
-xdvi317 divideint -3264204.54 -42704.501 -> 76
-xmul317 multiply -3264204.54 -42704.501 -> 1.39396226E+11 Inexact Rounded
-xpow317 power -3264204.54 -42705 -> -1.37293410E-278171 Inexact Rounded
-xrem317 remainder -3264204.54 -42704.501 -> -18662.464
-xsub317 subtract -3264204.54 -42704.501 -> -3221500.04 Inexact Rounded
-xadd318 add 1.21265492 44102.6073 -> 44103.8200 Inexact Rounded
-xcom318 compare 1.21265492 44102.6073 -> -1
-xdiv318 divide 1.21265492 44102.6073 -> 0.0000274962183 Inexact Rounded
-xdvi318 divideint 1.21265492 44102.6073 -> 0
-xmul318 multiply 1.21265492 44102.6073 -> 53481.2437 Inexact Rounded
-xpow318 power 1.21265492 44103 -> 1.15662573E+3693 Inexact Rounded
-xrem318 remainder 1.21265492 44102.6073 -> 1.21265492
-xsub318 subtract 1.21265492 44102.6073 -> -44101.3946 Inexact Rounded
-xadd319 add -19.054711E+975514652 -22144.0822 -> -1.90547110E+975514653 Inexact Rounded
-xcom319 compare -19.054711E+975514652 -22144.0822 -> -1
-xdiv319 divide -19.054711E+975514652 -22144.0822 -> 8.60487729E+975514648 Inexact Rounded
-xdvi319 divideint -19.054711E+975514652 -22144.0822 -> NaN Division_impossible
-xmul319 multiply -19.054711E+975514652 -22144.0822 -> 4.21949087E+975514657 Inexact Rounded
-xpow319 power -19.054711E+975514652 -22144 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem319 remainder -19.054711E+975514652 -22144.0822 -> NaN Division_impossible
-xsub319 subtract -19.054711E+975514652 -22144.0822 -> -1.90547110E+975514653 Inexact Rounded
-xadd320 add 745.78452 -1922.00670E+375923302 -> -1.92200670E+375923305 Inexact Rounded
-xcom320 compare 745.78452 -1922.00670E+375923302 -> 1
-xdiv320 divide 745.78452 -1922.00670E+375923302 -> -3.88023892E-375923303 Inexact Rounded
-xdvi320 divideint 745.78452 -1922.00670E+375923302 -> -0
-xmul320 multiply 745.78452 -1922.00670E+375923302 -> -1.43340284E+375923308 Inexact Rounded
-xpow320 power 745.78452 -2 -> 0.00000179793204 Inexact Rounded
-xrem320 remainder 745.78452 -1922.00670E+375923302 -> 745.78452
-xsub320 subtract 745.78452 -1922.00670E+375923302 -> 1.92200670E+375923305 Inexact Rounded
-xadd321 add -963717836 -823989308 -> -1.78770714E+9 Inexact Rounded
-xcom321 compare -963717836 -823989308 -> -1
-xdiv321 divide -963717836 -823989308 -> 1.16957566 Inexact Rounded
-xdvi321 divideint -963717836 -823989308 -> 1
-xmul321 multiply -963717836 -823989308 -> 7.94093193E+17 Inexact Rounded
-xpow321 power -963717836 -823989308 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem321 remainder -963717836 -823989308 -> -139728528
-xsub321 subtract -963717836 -823989308 -> -139728528
-xadd322 add 82.4185291E-321919303 -215747737.E-995147400 -> 8.24185291E-321919302 Inexact Rounded
-xcom322 compare 82.4185291E-321919303 -215747737.E-995147400 -> 1
-xdiv322 divide 82.4185291E-321919303 -215747737.E-995147400 -> -3.82013412E+673228090 Inexact Rounded
-xdvi322 divideint 82.4185291E-321919303 -215747737.E-995147400 -> NaN Division_impossible
-xmul322 multiply 82.4185291E-321919303 -215747737.E-995147400 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xpow322 power 82.4185291E-321919303 -2 -> 1.47214396E+643838602 Inexact Rounded
-xrem322 remainder 82.4185291E-321919303 -215747737.E-995147400 -> NaN Division_impossible
-xsub322 subtract 82.4185291E-321919303 -215747737.E-995147400 -> 8.24185291E-321919302 Inexact Rounded
-xadd323 add -808328.607E-790810342 53075.7082 -> 53075.7082 Inexact Rounded
-xcom323 compare -808328.607E-790810342 53075.7082 -> -1
-xdiv323 divide -808328.607E-790810342 53075.7082 -> -1.52297281E-790810341 Inexact Rounded
-xdvi323 divideint -808328.607E-790810342 53075.7082 -> -0
-xmul323 multiply -808328.607E-790810342 53075.7082 -> -4.29026133E-790810332 Inexact Rounded
-xpow323 power -808328.607E-790810342 53076 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem323 remainder -808328.607E-790810342 53075.7082 -> -8.08328607E-790810337
-xsub323 subtract -808328.607E-790810342 53075.7082 -> -53075.7082 Inexact Rounded
-xadd324 add 700592.720 -698485.085 -> 2107.635
-xcom324 compare 700592.720 -698485.085 -> 1
-xdiv324 divide 700592.720 -698485.085 -> -1.00301744 Inexact Rounded
-xdvi324 divideint 700592.720 -698485.085 -> -1
-xmul324 multiply 700592.720 -698485.085 -> -4.89353566E+11 Inexact Rounded
-xpow324 power 700592.720 -698485 -> 8.83690000E-4082971 Inexact Rounded
-xrem324 remainder 700592.720 -698485.085 -> 2107.635
-xsub324 subtract 700592.720 -698485.085 -> 1399077.81 Inexact Rounded
-xadd325 add -80273928.0 661346.239 -> -79612581.8 Inexact Rounded
-xcom325 compare -80273928.0 661346.239 -> -1
-xdiv325 divide -80273928.0 661346.239 -> -121.379579 Inexact Rounded
-xdvi325 divideint -80273928.0 661346.239 -> -121
-xmul325 multiply -80273928.0 661346.239 -> -5.30888604E+13 Inexact Rounded
-xpow325 power -80273928.0 661346 -> 5.45664856E+5227658 Inexact Rounded
-xrem325 remainder -80273928.0 661346.239 -> -251033.081
-xsub325 subtract -80273928.0 661346.239 -> -80935274.2 Inexact Rounded
-xadd326 add -24018251.0E+819786764 59141.9600E-167165065 -> -2.40182510E+819786771 Inexact Rounded
-xcom326 compare -24018251.0E+819786764 59141.9600E-167165065 -> -1
-xdiv326 divide -24018251.0E+819786764 59141.9600E-167165065 -> -4.06111854E+986951831 Inexact Rounded
-xdvi326 divideint -24018251.0E+819786764 59141.9600E-167165065 -> NaN Division_impossible
-xmul326 multiply -24018251.0E+819786764 59141.9600E-167165065 -> -1.42048644E+652621711 Inexact Rounded
-xpow326 power -24018251.0E+819786764 6 -> Infinity Overflow Inexact Rounded
-xrem326 remainder -24018251.0E+819786764 59141.9600E-167165065 -> NaN Division_impossible
-xsub326 subtract -24018251.0E+819786764 59141.9600E-167165065 -> -2.40182510E+819786771 Inexact Rounded
-xadd327 add 2512953.3 -3769170.35E-993621645 -> 2512953.30 Inexact Rounded
-xcom327 compare 2512953.3 -3769170.35E-993621645 -> 1
-xdiv327 divide 2512953.3 -3769170.35E-993621645 -> -6.66712583E+993621644 Inexact Rounded
-xdvi327 divideint 2512953.3 -3769170.35E-993621645 -> NaN Division_impossible
-xmul327 multiply 2512953.3 -3769170.35E-993621645 -> -9.47174907E-993621633 Inexact Rounded
-xpow327 power 2512953.3 -4 -> 2.50762348E-26 Inexact Rounded
-xrem327 remainder 2512953.3 -3769170.35E-993621645 -> NaN Division_impossible
-xsub327 subtract 2512953.3 -3769170.35E-993621645 -> 2512953.30 Inexact Rounded
-xadd328 add -682.796370 71131.0224 -> 70448.2260 Inexact Rounded
-xcom328 compare -682.796370 71131.0224 -> -1
-xdiv328 divide -682.796370 71131.0224 -> -0.00959913617 Inexact Rounded
-xdvi328 divideint -682.796370 71131.0224 -> -0
-xmul328 multiply -682.796370 71131.0224 -> -48568003.9 Inexact Rounded
-xpow328 power -682.796370 71131 -> -9.28114741E+201605 Inexact Rounded
-xrem328 remainder -682.796370 71131.0224 -> -682.796370
-xsub328 subtract -682.796370 71131.0224 -> -71813.8188 Inexact Rounded
-xadd329 add 89.9997490 -4993.69831 -> -4903.69856 Inexact Rounded
-xcom329 compare 89.9997490 -4993.69831 -> 1
-xdiv329 divide 89.9997490 -4993.69831 -> -0.0180226644 Inexact Rounded
-xdvi329 divideint 89.9997490 -4993.69831 -> -0
-xmul329 multiply 89.9997490 -4993.69831 -> -449431.594 Inexact Rounded
-xpow329 power 89.9997490 -4994 -> 3.30336525E-9760 Inexact Rounded
-xrem329 remainder 89.9997490 -4993.69831 -> 89.9997490
-xsub329 subtract 89.9997490 -4993.69831 -> 5083.69806 Inexact Rounded
-xadd330 add 76563354.6E-112338836 278271.585E-511481095 -> 7.65633546E-112338829 Inexact Rounded
-xcom330 compare 76563354.6E-112338836 278271.585E-511481095 -> 1
-xdiv330 divide 76563354.6E-112338836 278271.585E-511481095 -> 2.75138960E+399142261 Inexact Rounded
-xdvi330 divideint 76563354.6E-112338836 278271.585E-511481095 -> NaN Division_impossible
-xmul330 multiply 76563354.6E-112338836 278271.585E-511481095 -> 2.13054060E-623819918 Inexact Rounded
-xpow330 power 76563354.6E-112338836 3 -> 4.48810347E-337016485 Inexact Rounded
-xrem330 remainder 76563354.6E-112338836 278271.585E-511481095 -> NaN Division_impossible
-xsub330 subtract 76563354.6E-112338836 278271.585E-511481095 -> 7.65633546E-112338829 Inexact Rounded
-xadd331 add -932499.010 873.377701E-502190452 -> -932499.010 Inexact Rounded
-xcom331 compare -932499.010 873.377701E-502190452 -> -1
-xdiv331 divide -932499.010 873.377701E-502190452 -> -1.06769272E+502190455 Inexact Rounded
-xdvi331 divideint -932499.010 873.377701E-502190452 -> NaN Division_impossible
-xmul331 multiply -932499.010 873.377701E-502190452 -> -8.14423842E-502190444 Inexact Rounded
-xpow331 power -932499.010 9 -> -5.33132815E+53 Inexact Rounded
-xrem331 remainder -932499.010 873.377701E-502190452 -> NaN Division_impossible
-xsub331 subtract -932499.010 873.377701E-502190452 -> -932499.010 Inexact Rounded
-xadd332 add -7735918.21E+799514797 -7748.78023 -> -7.73591821E+799514803 Inexact Rounded
-xcom332 compare -7735918.21E+799514797 -7748.78023 -> -1
-xdiv332 divide -7735918.21E+799514797 -7748.78023 -> 9.98340123E+799514799 Inexact Rounded
-xdvi332 divideint -7735918.21E+799514797 -7748.78023 -> NaN Division_impossible
-xmul332 multiply -7735918.21E+799514797 -7748.78023 -> 5.99439301E+799514807 Inexact Rounded
-xpow332 power -7735918.21E+799514797 -7749 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem332 remainder -7735918.21E+799514797 -7748.78023 -> NaN Division_impossible
-xsub332 subtract -7735918.21E+799514797 -7748.78023 -> -7.73591821E+799514803 Inexact Rounded
-xadd333 add -3708780.75E+445232787 980.006567E-780728623 -> -3.70878075E+445232793 Inexact Rounded
-xcom333 compare -3708780.75E+445232787 980.006567E-780728623 -> -1
-xdiv333 divide -3708780.75E+445232787 980.006567E-780728623 -> -Infinity Inexact Overflow Rounded
-xdvi333 divideint -3708780.75E+445232787 980.006567E-780728623 -> NaN Division_impossible
-xmul333 multiply -3708780.75E+445232787 980.006567E-780728623 -> -3.63462949E-335495827 Inexact Rounded
-xpow333 power -3708780.75E+445232787 10 -> Infinity Overflow Inexact Rounded
-xrem333 remainder -3708780.75E+445232787 980.006567E-780728623 -> NaN Division_impossible
-xsub333 subtract -3708780.75E+445232787 980.006567E-780728623 -> -3.70878075E+445232793 Inexact Rounded
-xadd334 add -5205124.44E-140588661 -495394029.E-620856313 -> -5.20512444E-140588655 Inexact Rounded
-xcom334 compare -5205124.44E-140588661 -495394029.E-620856313 -> -1
-xdiv334 divide -5205124.44E-140588661 -495394029.E-620856313 -> 1.05070391E+480267650 Inexact Rounded
-xdvi334 divideint -5205124.44E-140588661 -495394029.E-620856313 -> NaN Division_impossible
-xmul334 multiply -5205124.44E-140588661 -495394029.E-620856313 -> 2.57858757E-761444959 Inexact Rounded
-xpow334 power -5205124.44E-140588661 -5 -> -2.61724523E+702943271 Inexact Rounded
-xrem334 remainder -5205124.44E-140588661 -495394029.E-620856313 -> NaN Division_impossible
-xsub334 subtract -5205124.44E-140588661 -495394029.E-620856313 -> -5.20512444E-140588655 Inexact Rounded
-xadd335 add -8868.72074 5592399.93 -> 5583531.21 Inexact Rounded
-xcom335 compare -8868.72074 5592399.93 -> -1
-xdiv335 divide -8868.72074 5592399.93 -> -0.00158585238 Inexact Rounded
-xdvi335 divideint -8868.72074 5592399.93 -> -0
-xmul335 multiply -8868.72074 5592399.93 -> -4.95974332E+10 Inexact Rounded
-xpow335 power -8868.72074 5592400 -> 5.55074142E+22078017 Inexact Rounded
-xrem335 remainder -8868.72074 5592399.93 -> -8868.72074
-xsub335 subtract -8868.72074 5592399.93 -> -5601268.65 Inexact Rounded
-xadd336 add -74.7852037E-175205809 4.14316542 -> 4.14316542 Inexact Rounded
-xcom336 compare -74.7852037E-175205809 4.14316542 -> -1
-xdiv336 divide -74.7852037E-175205809 4.14316542 -> -1.80502577E-175205808 Inexact Rounded
-xdvi336 divideint -74.7852037E-175205809 4.14316542 -> -0
-xmul336 multiply -74.7852037E-175205809 4.14316542 -> -3.09847470E-175205807 Inexact Rounded
-xpow336 power -74.7852037E-175205809 4 -> 3.12797104E-700823229 Inexact Rounded
-xrem336 remainder -74.7852037E-175205809 4.14316542 -> -7.47852037E-175205808
-xsub336 subtract -74.7852037E-175205809 4.14316542 -> -4.14316542 Inexact Rounded
-xadd337 add 84196.1091E+242628748 8.07523036E-288231467 -> 8.41961091E+242628752 Inexact Rounded
-xcom337 compare 84196.1091E+242628748 8.07523036E-288231467 -> 1
-xdiv337 divide 84196.1091E+242628748 8.07523036E-288231467 -> 1.04264653E+530860219 Inexact Rounded
-xdvi337 divideint 84196.1091E+242628748 8.07523036E-288231467 -> NaN Division_impossible
-xmul337 multiply 84196.1091E+242628748 8.07523036E-288231467 -> 6.79902976E-45602714 Inexact Rounded
-xpow337 power 84196.1091E+242628748 8 -> Infinity Overflow Inexact Rounded
-xrem337 remainder 84196.1091E+242628748 8.07523036E-288231467 -> NaN Division_impossible
-xsub337 subtract 84196.1091E+242628748 8.07523036E-288231467 -> 8.41961091E+242628752 Inexact Rounded
-xadd338 add 38660103.1 -6671.73085E+900998477 -> -6.67173085E+900998480 Inexact Rounded
-xcom338 compare 38660103.1 -6671.73085E+900998477 -> 1
-xdiv338 divide 38660103.1 -6671.73085E+900998477 -> -5.79461372E-900998474 Inexact Rounded
-xdvi338 divideint 38660103.1 -6671.73085E+900998477 -> -0
-xmul338 multiply 38660103.1 -6671.73085E+900998477 -> -2.57929803E+900998488 Inexact Rounded
-xpow338 power 38660103.1 -7 -> 7.74745290E-54 Inexact Rounded
-xrem338 remainder 38660103.1 -6671.73085E+900998477 -> 38660103.1
-xsub338 subtract 38660103.1 -6671.73085E+900998477 -> 6.67173085E+900998480 Inexact Rounded
-xadd339 add -52.2659460 -296404199E+372050476 -> -2.96404199E+372050484 Inexact Rounded
-xcom339 compare -52.2659460 -296404199E+372050476 -> 1
-xdiv339 divide -52.2659460 -296404199E+372050476 -> 1.76333352E-372050483 Inexact Rounded
-xdvi339 divideint -52.2659460 -296404199E+372050476 -> 0
-xmul339 multiply -52.2659460 -296404199E+372050476 -> 1.54918459E+372050486 Inexact Rounded
-xpow339 power -52.2659460 -3 -> -0.00000700395833 Inexact Rounded
-xrem339 remainder -52.2659460 -296404199E+372050476 -> -52.2659460
-xsub339 subtract -52.2659460 -296404199E+372050476 -> 2.96404199E+372050484 Inexact Rounded
-xadd340 add 6.06625013 -276.359186 -> -270.292936 Inexact Rounded
-xcom340 compare 6.06625013 -276.359186 -> 1
-xdiv340 divide 6.06625013 -276.359186 -> -0.0219506007 Inexact Rounded
-xdvi340 divideint 6.06625013 -276.359186 -> -0
-xmul340 multiply 6.06625013 -276.359186 -> -1676.46395 Inexact Rounded
-xpow340 power 6.06625013 -276 -> 8.20339149E-217 Inexact Rounded
-xrem340 remainder 6.06625013 -276.359186 -> 6.06625013
-xsub340 subtract 6.06625013 -276.359186 -> 282.425436 Inexact Rounded
-xadd341 add -62971617.5E-241444744 46266799.3 -> 46266799.3 Inexact Rounded
-xcom341 compare -62971617.5E-241444744 46266799.3 -> -1
-xdiv341 divide -62971617.5E-241444744 46266799.3 -> -1.36105411E-241444744 Inexact Rounded
-xdvi341 divideint -62971617.5E-241444744 46266799.3 -> -0
-xmul341 multiply -62971617.5E-241444744 46266799.3 -> -2.91349519E-241444729 Inexact Rounded
-xpow341 power -62971617.5E-241444744 46266799 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem341 remainder -62971617.5E-241444744 46266799.3 -> -6.29716175E-241444737
-xsub341 subtract -62971617.5E-241444744 46266799.3 -> -46266799.3 Inexact Rounded
-xadd342 add -5.36917800 -311124593.E-976066491 -> -5.36917800 Inexact Rounded
-xcom342 compare -5.36917800 -311124593.E-976066491 -> -1
-xdiv342 divide -5.36917800 -311124593.E-976066491 -> 1.72573243E+976066483 Inexact Rounded
-xdvi342 divideint -5.36917800 -311124593.E-976066491 -> NaN Division_impossible
-xmul342 multiply -5.36917800 -311124593.E-976066491 -> 1.67048332E-976066482 Inexact Rounded
-xpow342 power -5.36917800 -3 -> -0.00646065565 Inexact Rounded
-xrem342 remainder -5.36917800 -311124593.E-976066491 -> NaN Division_impossible
-xsub342 subtract -5.36917800 -311124593.E-976066491 -> -5.36917800 Inexact Rounded
-xadd343 add 2467915.01 -92.5558322 -> 2467822.45 Inexact Rounded
-xcom343 compare 2467915.01 -92.5558322 -> 1
-xdiv343 divide 2467915.01 -92.5558322 -> -26664.0681 Inexact Rounded
-xdvi343 divideint 2467915.01 -92.5558322 -> -26664
-xmul343 multiply 2467915.01 -92.5558322 -> -228419928 Inexact Rounded
-xpow343 power 2467915.01 -93 -> 3.26055444E-595 Inexact Rounded
-xrem343 remainder 2467915.01 -92.5558322 -> 6.3002192
-xsub343 subtract 2467915.01 -92.5558322 -> 2468007.57 Inexact Rounded
-xadd344 add 187.232671 -840.469347 -> -653.236676
-xcom344 compare 187.232671 -840.469347 -> 1
-xdiv344 divide 187.232671 -840.469347 -> -0.222771564 Inexact Rounded
-xdvi344 divideint 187.232671 -840.469347 -> -0
-xmul344 multiply 187.232671 -840.469347 -> -157363.321 Inexact Rounded
-xpow344 power 187.232671 -840 -> 1.58280862E-1909 Inexact Rounded
-xrem344 remainder 187.232671 -840.469347 -> 187.232671
-xsub344 subtract 187.232671 -840.469347 -> 1027.70202 Inexact Rounded
-xadd345 add 81233.6823 -5192.21666E+309315093 -> -5.19221666E+309315096 Inexact Rounded
-xcom345 compare 81233.6823 -5192.21666E+309315093 -> 1
-xdiv345 divide 81233.6823 -5192.21666E+309315093 -> -1.56452798E-309315092 Inexact Rounded
-xdvi345 divideint 81233.6823 -5192.21666E+309315093 -> -0
-xmul345 multiply 81233.6823 -5192.21666E+309315093 -> -4.21782879E+309315101 Inexact Rounded
-xpow345 power 81233.6823 -5 -> 2.82695763E-25 Inexact Rounded
-xrem345 remainder 81233.6823 -5192.21666E+309315093 -> 81233.6823
-xsub345 subtract 81233.6823 -5192.21666E+309315093 -> 5.19221666E+309315096 Inexact Rounded
-xadd346 add -854.586113 -79.8715762E-853065103 -> -854.586113 Inexact Rounded
-xcom346 compare -854.586113 -79.8715762E-853065103 -> -1
-xdiv346 divide -854.586113 -79.8715762E-853065103 -> 1.06995023E+853065104 Inexact Rounded
-xdvi346 divideint -854.586113 -79.8715762E-853065103 -> NaN Division_impossible
-xmul346 multiply -854.586113 -79.8715762E-853065103 -> 6.82571398E-853065099 Inexact Rounded
-xpow346 power -854.586113 -8 -> 3.51522679E-24 Inexact Rounded
-xrem346 remainder -854.586113 -79.8715762E-853065103 -> NaN Division_impossible
-xsub346 subtract -854.586113 -79.8715762E-853065103 -> -854.586113 Inexact Rounded
-xadd347 add 78872665.3 172.102119 -> 78872837.4 Inexact Rounded
-xcom347 compare 78872665.3 172.102119 -> 1
-xdiv347 divide 78872665.3 172.102119 -> 458289.914 Inexact Rounded
-xdvi347 divideint 78872665.3 172.102119 -> 458289
-xmul347 multiply 78872665.3 172.102119 -> 1.35741528E+10 Inexact Rounded
-xpow347 power 78872665.3 172 -> 1.86793137E+1358 Inexact Rounded
-xrem347 remainder 78872665.3 172.102119 -> 157.285609
-xsub347 subtract 78872665.3 172.102119 -> 78872493.2 Inexact Rounded
-xadd348 add 328268.1E-436315617 -204.522245 -> -204.522245 Inexact Rounded
-xcom348 compare 328268.1E-436315617 -204.522245 -> 1
-xdiv348 divide 328268.1E-436315617 -204.522245 -> -1.60504839E-436315614 Inexact Rounded
-xdvi348 divideint 328268.1E-436315617 -204.522245 -> -0
-xmul348 multiply 328268.1E-436315617 -204.522245 -> -6.71381288E-436315610 Inexact Rounded
-xpow348 power 328268.1E-436315617 -205 -> Infinity Overflow Inexact Rounded
-xrem348 remainder 328268.1E-436315617 -204.522245 -> 3.282681E-436315612
-xsub348 subtract 328268.1E-436315617 -204.522245 -> 204.522245 Inexact Rounded
-xadd349 add -4037911.02E+641367645 29.5713010 -> -4.03791102E+641367651 Inexact Rounded
-xcom349 compare -4037911.02E+641367645 29.5713010 -> -1
-xdiv349 divide -4037911.02E+641367645 29.5713010 -> -1.36548305E+641367650 Inexact Rounded
-xdvi349 divideint -4037911.02E+641367645 29.5713010 -> NaN Division_impossible
-xmul349 multiply -4037911.02E+641367645 29.5713010 -> -1.19406282E+641367653 Inexact Rounded
-xpow349 power -4037911.02E+641367645 30 -> Infinity Overflow Inexact Rounded
-xrem349 remainder -4037911.02E+641367645 29.5713010 -> NaN Division_impossible
-xsub349 subtract -4037911.02E+641367645 29.5713010 -> -4.03791102E+641367651 Inexact Rounded
-xadd350 add -688755561.E-95301699 978.275312E+913812609 -> 9.78275312E+913812611 Inexact Rounded
-xcom350 compare -688755561.E-95301699 978.275312E+913812609 -> -1
-xdiv350 divide -688755561.E-95301699 978.275312E+913812609 -> -0E-1000000007 Inexact Rounded Underflow Subnormal Clamped
-xdvi350 divideint -688755561.E-95301699 978.275312E+913812609 -> -0
-xmul350 multiply -688755561.E-95301699 978.275312E+913812609 -> -6.73792561E+818510921 Inexact Rounded
-xpow350 power -688755561.E-95301699 10 -> 2.40243244E-953016902 Inexact Rounded
-xrem350 remainder -688755561.E-95301699 978.275312E+913812609 -> -6.88755561E-95301691
-xsub350 subtract -688755561.E-95301699 978.275312E+913812609 -> -9.78275312E+913812611 Inexact Rounded
-xadd351 add -5.47345502 59818.7580 -> 59813.2845 Inexact Rounded
-xcom351 compare -5.47345502 59818.7580 -> -1
-xdiv351 divide -5.47345502 59818.7580 -> -0.0000915006463 Inexact Rounded
-xdvi351 divideint -5.47345502 59818.7580 -> -0
-xmul351 multiply -5.47345502 59818.7580 -> -327415.281 Inexact Rounded
-xpow351 power -5.47345502 59819 -> -1.16914146E+44162 Inexact Rounded
-xrem351 remainder -5.47345502 59818.7580 -> -5.47345502
-xsub351 subtract -5.47345502 59818.7580 -> -59824.2315 Inexact Rounded
-xadd352 add 563891620E-361354567 -845900362. -> -845900362 Inexact Rounded
-xcom352 compare 563891620E-361354567 -845900362. -> 1
-xdiv352 divide 563891620E-361354567 -845900362. -> -6.66617069E-361354568 Inexact Rounded
-xdvi352 divideint 563891620E-361354567 -845900362. -> -0
-xmul352 multiply 563891620E-361354567 -845900362. -> -4.76996125E-361354550 Inexact Rounded
-xpow352 power 563891620E-361354567 -845900362 -> Infinity Overflow Inexact Rounded
-xrem352 remainder 563891620E-361354567 -845900362. -> 5.63891620E-361354559
-xsub352 subtract 563891620E-361354567 -845900362. -> 845900362 Inexact Rounded
-xadd353 add -69.7231286 85773.7504 -> 85704.0273 Inexact Rounded
-xcom353 compare -69.7231286 85773.7504 -> -1
-xdiv353 divide -69.7231286 85773.7504 -> -0.000812872566 Inexact Rounded
-xdvi353 divideint -69.7231286 85773.7504 -> -0
-xmul353 multiply -69.7231286 85773.7504 -> -5980414.23 Inexact Rounded
-xpow353 power -69.7231286 85774 -> 6.41714261E+158113 Inexact Rounded
-xrem353 remainder -69.7231286 85773.7504 -> -69.7231286
-xsub353 subtract -69.7231286 85773.7504 -> -85843.4735 Inexact Rounded
-xadd354 add 5125.51188 73814638.4E-500934741 -> 5125.51188 Inexact Rounded
-xcom354 compare 5125.51188 73814638.4E-500934741 -> 1
-xdiv354 divide 5125.51188 73814638.4E-500934741 -> 6.94376074E+500934736 Inexact Rounded
-xdvi354 divideint 5125.51188 73814638.4E-500934741 -> NaN Division_impossible
-xmul354 multiply 5125.51188 73814638.4E-500934741 -> 3.78337806E-500934730 Inexact Rounded
-xpow354 power 5125.51188 7 -> 9.29310216E+25 Inexact Rounded
-xrem354 remainder 5125.51188 73814638.4E-500934741 -> NaN Division_impossible
-xsub354 subtract 5125.51188 73814638.4E-500934741 -> 5125.51188 Inexact Rounded
-xadd355 add -54.6254096 -332921899. -> -332921954 Inexact Rounded
-xcom355 compare -54.6254096 -332921899. -> 1
-xdiv355 divide -54.6254096 -332921899. -> 1.64078752E-7 Inexact Rounded
-xdvi355 divideint -54.6254096 -332921899. -> 0
-xmul355 multiply -54.6254096 -332921899. -> 1.81859951E+10 Inexact Rounded
-xpow355 power -54.6254096 -332921899 -> -1.01482569E-578416745 Inexact Rounded
-xrem355 remainder -54.6254096 -332921899. -> -54.6254096
-xsub355 subtract -54.6254096 -332921899. -> 332921844 Inexact Rounded
-xadd356 add -9.04778095E-591874079 8719.40286 -> 8719.40286 Inexact Rounded
-xcom356 compare -9.04778095E-591874079 8719.40286 -> -1
-xdiv356 divide -9.04778095E-591874079 8719.40286 -> -1.03766062E-591874082 Inexact Rounded
-xdvi356 divideint -9.04778095E-591874079 8719.40286 -> -0
-xmul356 multiply -9.04778095E-591874079 8719.40286 -> -7.88912471E-591874075 Inexact Rounded
-xpow356 power -9.04778095E-591874079 8719 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem356 remainder -9.04778095E-591874079 8719.40286 -> -9.04778095E-591874079
-xsub356 subtract -9.04778095E-591874079 8719.40286 -> -8719.40286 Inexact Rounded
-xadd357 add -21006.1733E+884684431 -48872.9175 -> -2.10061733E+884684435 Inexact Rounded
-xcom357 compare -21006.1733E+884684431 -48872.9175 -> -1
-xdiv357 divide -21006.1733E+884684431 -48872.9175 -> 4.29812141E+884684430 Inexact Rounded
-xdvi357 divideint -21006.1733E+884684431 -48872.9175 -> NaN Division_impossible
-xmul357 multiply -21006.1733E+884684431 -48872.9175 -> 1.02663297E+884684440 Inexact Rounded
-xpow357 power -21006.1733E+884684431 -48873 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem357 remainder -21006.1733E+884684431 -48872.9175 -> NaN Division_impossible
-xsub357 subtract -21006.1733E+884684431 -48872.9175 -> -2.10061733E+884684435 Inexact Rounded
-xadd358 add -1546783 -51935370.4 -> -53482153.4
-xcom358 compare -1546783 -51935370.4 -> 1
-xdiv358 divide -1546783 -51935370.4 -> 0.0297828433 Inexact Rounded
-xdvi358 divideint -1546783 -51935370.4 -> 0
-xmul358 multiply -1546783 -51935370.4 -> 8.03327480E+13 Inexact Rounded
-xpow358 power -1546783 -51935370 -> 3.36022461E-321450306 Inexact Rounded
-xrem358 remainder -1546783 -51935370.4 -> -1546783.0
-xsub358 subtract -1546783 -51935370.4 -> 50388587.4
-xadd359 add 61302486.8 205.490417 -> 61302692.3 Inexact Rounded
-xcom359 compare 61302486.8 205.490417 -> 1
-xdiv359 divide 61302486.8 205.490417 -> 298322.850 Inexact Rounded
-xdvi359 divideint 61302486.8 205.490417 -> 298322
-xmul359 multiply 61302486.8 205.490417 -> 1.25970736E+10 Inexact Rounded
-xpow359 power 61302486.8 205 -> 2.71024755E+1596 Inexact Rounded
-xrem359 remainder 61302486.8 205.490417 -> 174.619726
-xsub359 subtract 61302486.8 205.490417 -> 61302281.3 Inexact Rounded
-xadd360 add -318180109. -54008744.6E-170931002 -> -318180109 Inexact Rounded
-xcom360 compare -318180109. -54008744.6E-170931002 -> -1
-xdiv360 divide -318180109. -54008744.6E-170931002 -> 5.89127023E+170931002 Inexact Rounded
-xdvi360 divideint -318180109. -54008744.6E-170931002 -> NaN Division_impossible
-xmul360 multiply -318180109. -54008744.6E-170931002 -> 1.71845082E-170930986 Inexact Rounded
-xpow360 power -318180109. -5 -> -3.06644280E-43 Inexact Rounded
-xrem360 remainder -318180109. -54008744.6E-170931002 -> NaN Division_impossible
-xsub360 subtract -318180109. -54008744.6E-170931002 -> -318180109 Inexact Rounded
-xadd361 add -28486137.1E+901441714 -42454.940 -> -2.84861371E+901441721 Inexact Rounded
-xcom361 compare -28486137.1E+901441714 -42454.940 -> -1
-xdiv361 divide -28486137.1E+901441714 -42454.940 -> 6.70973439E+901441716 Inexact Rounded
-xdvi361 divideint -28486137.1E+901441714 -42454.940 -> NaN Division_impossible
-xmul361 multiply -28486137.1E+901441714 -42454.940 -> 1.20937724E+901441726 Inexact Rounded
-xpow361 power -28486137.1E+901441714 -42455 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem361 remainder -28486137.1E+901441714 -42454.940 -> NaN Division_impossible
-xsub361 subtract -28486137.1E+901441714 -42454.940 -> -2.84861371E+901441721 Inexact Rounded
-xadd362 add -546398328. -27.9149712 -> -546398356 Inexact Rounded
-xcom362 compare -546398328. -27.9149712 -> -1
-xdiv362 divide -546398328. -27.9149712 -> 19573666.2 Inexact Rounded
-xdvi362 divideint -546398328. -27.9149712 -> 19573666
-xmul362 multiply -546398328. -27.9149712 -> 1.52526936E+10 Inexact Rounded
-xpow362 power -546398328. -28 -> 2.23737032E-245 Inexact Rounded
-xrem362 remainder -546398328. -27.9149712 -> -5.3315808
-xsub362 subtract -546398328. -27.9149712 -> -546398300 Inexact Rounded
-xadd363 add 5402066.1E-284978216 622.751128 -> 622.751128 Inexact Rounded
-xcom363 compare 5402066.1E-284978216 622.751128 -> -1
-xdiv363 divide 5402066.1E-284978216 622.751128 -> 8.67451837E-284978213 Inexact Rounded
-xdvi363 divideint 5402066.1E-284978216 622.751128 -> 0
-xmul363 multiply 5402066.1E-284978216 622.751128 -> 3.36414276E-284978207 Inexact Rounded
-xpow363 power 5402066.1E-284978216 623 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem363 remainder 5402066.1E-284978216 622.751128 -> 5.4020661E-284978210
-xsub363 subtract 5402066.1E-284978216 622.751128 -> -622.751128 Inexact Rounded
-xadd364 add 18845620 3129.43753 -> 18848749.4 Inexact Rounded
-xcom364 compare 18845620 3129.43753 -> 1
-xdiv364 divide 18845620 3129.43753 -> 6022.04704 Inexact Rounded
-xdvi364 divideint 18845620 3129.43753 -> 6022
-xmul364 multiply 18845620 3129.43753 -> 5.89761905E+10 Inexact Rounded
-xpow364 power 18845620 3129 -> 1.35967443E+22764 Inexact Rounded
-xrem364 remainder 18845620 3129.43753 -> 147.19434
-xsub364 subtract 18845620 3129.43753 -> 18842490.6 Inexact Rounded
-xadd365 add 50707.1412E+912475670 -198098.186E+701407524 -> 5.07071412E+912475674 Inexact Rounded
-xcom365 compare 50707.1412E+912475670 -198098.186E+701407524 -> 1
-xdiv365 divide 50707.1412E+912475670 -198098.186E+701407524 -> -2.55969740E+211068145 Inexact Rounded
-xdvi365 divideint 50707.1412E+912475670 -198098.186E+701407524 -> NaN Division_impossible
-xmul365 multiply 50707.1412E+912475670 -198098.186E+701407524 -> -Infinity Inexact Overflow Rounded
-xpow365 power 50707.1412E+912475670 -2 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem365 remainder 50707.1412E+912475670 -198098.186E+701407524 -> NaN Division_impossible
-xsub365 subtract 50707.1412E+912475670 -198098.186E+701407524 -> 5.07071412E+912475674 Inexact Rounded
-xadd366 add 55.8245006E+928885991 99170843.9E-47402167 -> 5.58245006E+928885992 Inexact Rounded
-xcom366 compare 55.8245006E+928885991 99170843.9E-47402167 -> 1
-xdiv366 divide 55.8245006E+928885991 99170843.9E-47402167 -> 5.62912429E+976288151 Inexact Rounded
-xdvi366 divideint 55.8245006E+928885991 99170843.9E-47402167 -> NaN Division_impossible
-xmul366 multiply 55.8245006E+928885991 99170843.9E-47402167 -> 5.53616283E+881483833 Inexact Rounded
-xpow366 power 55.8245006E+928885991 10 -> Infinity Overflow Inexact Rounded
-xrem366 remainder 55.8245006E+928885991 99170843.9E-47402167 -> NaN Division_impossible
-xsub366 subtract 55.8245006E+928885991 99170843.9E-47402167 -> 5.58245006E+928885992 Inexact Rounded
-xadd367 add 13.8003883E-386224921 -84126481.9E-296378341 -> -8.41264819E-296378334 Inexact Rounded
-xcom367 compare 13.8003883E-386224921 -84126481.9E-296378341 -> 1
-xdiv367 divide 13.8003883E-386224921 -84126481.9E-296378341 -> -1.64043331E-89846587 Inexact Rounded
-xdvi367 divideint 13.8003883E-386224921 -84126481.9E-296378341 -> -0
-xmul367 multiply 13.8003883E-386224921 -84126481.9E-296378341 -> -1.16097812E-682603253 Inexact Rounded
-xpow367 power 13.8003883E-386224921 -8 -> Infinity Overflow Inexact Rounded
-xrem367 remainder 13.8003883E-386224921 -84126481.9E-296378341 -> 1.38003883E-386224920
-xsub367 subtract 13.8003883E-386224921 -84126481.9E-296378341 -> 8.41264819E-296378334 Inexact Rounded
-xadd368 add 9820.90457 46671.5915 -> 56492.4961 Inexact Rounded
-xcom368 compare 9820.90457 46671.5915 -> -1
-xdiv368 divide 9820.90457 46671.5915 -> 0.210425748 Inexact Rounded
-xdvi368 divideint 9820.90457 46671.5915 -> 0
-xmul368 multiply 9820.90457 46671.5915 -> 458357246 Inexact Rounded
-xpow368 power 9820.90457 46672 -> 4.94753070E+186321 Inexact Rounded
-xrem368 remainder 9820.90457 46671.5915 -> 9820.90457
-xsub368 subtract 9820.90457 46671.5915 -> -36850.6869 Inexact Rounded
-xadd369 add 7.22436006E+831949153 -11168830E+322331045 -> 7.22436006E+831949153 Inexact Rounded
-xcom369 compare 7.22436006E+831949153 -11168830E+322331045 -> 1
-xdiv369 divide 7.22436006E+831949153 -11168830E+322331045 -> -6.46832306E+509618101 Inexact Rounded
-xdvi369 divideint 7.22436006E+831949153 -11168830E+322331045 -> NaN Division_impossible
-xmul369 multiply 7.22436006E+831949153 -11168830E+322331045 -> -Infinity Inexact Overflow Rounded
-xpow369 power 7.22436006E+831949153 -1 -> 1.38420565E-831949154 Inexact Rounded
-xrem369 remainder 7.22436006E+831949153 -11168830E+322331045 -> NaN Division_impossible
-xsub369 subtract 7.22436006E+831949153 -11168830E+322331045 -> 7.22436006E+831949153 Inexact Rounded
-xadd370 add 472648900 -207.784153 -> 472648692 Inexact Rounded
-xcom370 compare 472648900 -207.784153 -> 1
-xdiv370 divide 472648900 -207.784153 -> -2274711.01 Inexact Rounded
-xdvi370 divideint 472648900 -207.784153 -> -2274711
-xmul370 multiply 472648900 -207.784153 -> -9.82089514E+10 Inexact Rounded
-xpow370 power 472648900 -208 -> 4.96547145E-1805 Inexact Rounded
-xrem370 remainder 472648900 -207.784153 -> 1.545217
-xsub370 subtract 472648900 -207.784153 -> 472649108 Inexact Rounded
-xadd371 add -8754.49306 -818.165153E+631475457 -> -8.18165153E+631475459 Inexact Rounded
-xcom371 compare -8754.49306 -818.165153E+631475457 -> 1
-xdiv371 divide -8754.49306 -818.165153E+631475457 -> 1.07001539E-631475456 Inexact Rounded
-xdvi371 divideint -8754.49306 -818.165153E+631475457 -> 0
-xmul371 multiply -8754.49306 -818.165153E+631475457 -> 7.16262115E+631475463 Inexact Rounded
-xpow371 power -8754.49306 -8 -> 2.89835767E-32 Inexact Rounded
-xrem371 remainder -8754.49306 -818.165153E+631475457 -> -8754.49306
-xsub371 subtract -8754.49306 -818.165153E+631475457 -> 8.18165153E+631475459 Inexact Rounded
-xadd372 add 98750864 191380.551 -> 98942244.6 Inexact Rounded
-xcom372 compare 98750864 191380.551 -> 1
-xdiv372 divide 98750864 191380.551 -> 515.992161 Inexact Rounded
-xdvi372 divideint 98750864 191380.551 -> 515
-xmul372 multiply 98750864 191380.551 -> 1.88989948E+13 Inexact Rounded
-xpow372 power 98750864 191381 -> 1.70908809E+1530003 Inexact Rounded
-xrem372 remainder 98750864 191380.551 -> 189880.235
-xsub372 subtract 98750864 191380.551 -> 98559483.4 Inexact Rounded
-xadd373 add 725292561. -768963606.E+340762986 -> -7.68963606E+340762994 Inexact Rounded
-xcom373 compare 725292561. -768963606.E+340762986 -> 1
-xdiv373 divide 725292561. -768963606.E+340762986 -> -9.43207917E-340762987 Inexact Rounded
-xdvi373 divideint 725292561. -768963606.E+340762986 -> -0
-xmul373 multiply 725292561. -768963606.E+340762986 -> -5.57723583E+340763003 Inexact Rounded
-xpow373 power 725292561. -8 -> 1.30585277E-71 Inexact Rounded
-xrem373 remainder 725292561. -768963606.E+340762986 -> 725292561
-xsub373 subtract 725292561. -768963606.E+340762986 -> 7.68963606E+340762994 Inexact Rounded
-xadd374 add 1862.80445 648254483. -> 648256346 Inexact Rounded
-xcom374 compare 1862.80445 648254483. -> -1
-xdiv374 divide 1862.80445 648254483. -> 0.00000287356972 Inexact Rounded
-xdvi374 divideint 1862.80445 648254483. -> 0
-xmul374 multiply 1862.80445 648254483. -> 1.20757134E+12 Inexact Rounded
-xpow374 power 1862.80445 648254483 -> Infinity Overflow Inexact Rounded
-xrem374 remainder 1862.80445 648254483. -> 1862.80445
-xsub374 subtract 1862.80445 648254483. -> -648252620 Inexact Rounded
-xadd375 add -5549320.1 -93580684.1 -> -99130004.2
-xcom375 compare -5549320.1 -93580684.1 -> 1
-xdiv375 divide -5549320.1 -93580684.1 -> 0.0592998454 Inexact Rounded
-xdvi375 divideint -5549320.1 -93580684.1 -> 0
-xmul375 multiply -5549320.1 -93580684.1 -> 5.19309171E+14 Inexact Rounded
-xpow375 power -5549320.1 -93580684 -> 4.20662079E-631130572 Inexact Rounded
-xrem375 remainder -5549320.1 -93580684.1 -> -5549320.1
-xsub375 subtract -5549320.1 -93580684.1 -> 88031364.0
-xadd376 add -14677053.1 -25784.7358 -> -14702837.8 Inexact Rounded
-xcom376 compare -14677053.1 -25784.7358 -> -1
-xdiv376 divide -14677053.1 -25784.7358 -> 569.214795 Inexact Rounded
-xdvi376 divideint -14677053.1 -25784.7358 -> 569
-xmul376 multiply -14677053.1 -25784.7358 -> 3.78443937E+11 Inexact Rounded
-xpow376 power -14677053.1 -25785 -> -1.64760831E-184792 Inexact Rounded
-xrem376 remainder -14677053.1 -25784.7358 -> -5538.4298
-xsub376 subtract -14677053.1 -25784.7358 -> -14651268.4 Inexact Rounded
-xadd377 add 547402.308E+571687617 -7835797.01E+500067364 -> 5.47402308E+571687622 Inexact Rounded
-xcom377 compare 547402.308E+571687617 -7835797.01E+500067364 -> 1
-xdiv377 divide 547402.308E+571687617 -7835797.01E+500067364 -> -6.98591742E+71620251 Inexact Rounded
-xdvi377 divideint 547402.308E+571687617 -7835797.01E+500067364 -> NaN Division_impossible
-xmul377 multiply 547402.308E+571687617 -7835797.01E+500067364 -> -Infinity Inexact Overflow Rounded
-xpow377 power 547402.308E+571687617 -8 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem377 remainder 547402.308E+571687617 -7835797.01E+500067364 -> NaN Division_impossible
-xsub377 subtract 547402.308E+571687617 -7835797.01E+500067364 -> 5.47402308E+571687622 Inexact Rounded
-xadd378 add -4131738.09 7579.07566 -> -4124159.01 Inexact Rounded
-xcom378 compare -4131738.09 7579.07566 -> -1
-xdiv378 divide -4131738.09 7579.07566 -> -545.150659 Inexact Rounded
-xdvi378 divideint -4131738.09 7579.07566 -> -545
-xmul378 multiply -4131738.09 7579.07566 -> -3.13147556E+10 Inexact Rounded
-xpow378 power -4131738.09 7579 -> -4.68132794E+50143 Inexact Rounded
-xrem378 remainder -4131738.09 7579.07566 -> -1141.85530
-xsub378 subtract -4131738.09 7579.07566 -> -4139317.17 Inexact Rounded
-xadd379 add 504544.648 -7678.96133E-662143268 -> 504544.648 Inexact Rounded
-xcom379 compare 504544.648 -7678.96133E-662143268 -> 1
-xdiv379 divide 504544.648 -7678.96133E-662143268 -> -6.57048039E+662143269 Inexact Rounded
-xdvi379 divideint 504544.648 -7678.96133E-662143268 -> NaN Division_impossible
-xmul379 multiply 504544.648 -7678.96133E-662143268 -> -3.87437884E-662143259 Inexact Rounded
-xpow379 power 504544.648 -8 -> 2.38124001E-46 Inexact Rounded
-xrem379 remainder 504544.648 -7678.96133E-662143268 -> NaN Division_impossible
-xsub379 subtract 504544.648 -7678.96133E-662143268 -> 504544.648 Inexact Rounded
-xadd380 add 829898241 8912.99114E+929228149 -> 8.91299114E+929228152 Inexact Rounded
-xcom380 compare 829898241 8912.99114E+929228149 -> -1
-xdiv380 divide 829898241 8912.99114E+929228149 -> 9.31110811E-929228145 Inexact Rounded
-xdvi380 divideint 829898241 8912.99114E+929228149 -> 0
-xmul380 multiply 829898241 8912.99114E+929228149 -> 7.39687567E+929228161 Inexact Rounded
-xpow380 power 829898241 9 -> 1.86734084E+80 Inexact Rounded
-xrem380 remainder 829898241 8912.99114E+929228149 -> 829898241
-xsub380 subtract 829898241 8912.99114E+929228149 -> -8.91299114E+929228152 Inexact Rounded
-xadd381 add 53.6891691 -11.2371140 -> 42.4520551
-xcom381 compare 53.6891691 -11.2371140 -> 1
-xdiv381 divide 53.6891691 -11.2371140 -> -4.77784323 Inexact Rounded
-xdvi381 divideint 53.6891691 -11.2371140 -> -4
-xmul381 multiply 53.6891691 -11.2371140 -> -603.311314 Inexact Rounded
-xpow381 power 53.6891691 -11 -> 9.35936725E-20 Inexact Rounded
-xrem381 remainder 53.6891691 -11.2371140 -> 8.7407131
-xsub381 subtract 53.6891691 -11.2371140 -> 64.9262831
-xadd382 add -93951823.4 -25317.8645 -> -93977141.3 Inexact Rounded
-xcom382 compare -93951823.4 -25317.8645 -> -1
-xdiv382 divide -93951823.4 -25317.8645 -> 3710.89052 Inexact Rounded
-xdvi382 divideint -93951823.4 -25317.8645 -> 3710
-xmul382 multiply -93951823.4 -25317.8645 -> 2.37865953E+12 Inexact Rounded
-xpow382 power -93951823.4 -25318 -> 9.67857714E-201859 Inexact Rounded
-xrem382 remainder -93951823.4 -25317.8645 -> -22546.1050
-xsub382 subtract -93951823.4 -25317.8645 -> -93926505.5 Inexact Rounded
-xadd383 add 446919.123 951338490. -> 951785409 Inexact Rounded
-xcom383 compare 446919.123 951338490. -> -1
-xdiv383 divide 446919.123 951338490. -> 0.000469779293 Inexact Rounded
-xdvi383 divideint 446919.123 951338490. -> 0
-xmul383 multiply 446919.123 951338490. -> 4.25171364E+14 Inexact Rounded
-xpow383 power 446919.123 951338490 -> Infinity Overflow Inexact Rounded
-xrem383 remainder 446919.123 951338490. -> 446919.123
-xsub383 subtract 446919.123 951338490. -> -950891571 Inexact Rounded
-xadd384 add -8.01787748 -88.3076852 -> -96.3255627 Inexact Rounded
-xcom384 compare -8.01787748 -88.3076852 -> 1
-xdiv384 divide -8.01787748 -88.3076852 -> 0.0907947871 Inexact Rounded
-xdvi384 divideint -8.01787748 -88.3076852 -> 0
-xmul384 multiply -8.01787748 -88.3076852 -> 708.040200 Inexact Rounded
-xpow384 power -8.01787748 -88 -> 2.77186088E-80 Inexact Rounded
-xrem384 remainder -8.01787748 -88.3076852 -> -8.01787748
-xsub384 subtract -8.01787748 -88.3076852 -> 80.2898077 Inexact Rounded
-xadd385 add 517458139 -999731.548 -> 516458407 Inexact Rounded
-xcom385 compare 517458139 -999731.548 -> 1
-xdiv385 divide 517458139 -999731.548 -> -517.597089 Inexact Rounded
-xdvi385 divideint 517458139 -999731.548 -> -517
-xmul385 multiply 517458139 -999731.548 -> -5.17319226E+14 Inexact Rounded
-xpow385 power 517458139 -999732 -> 1.24821346E-8711540 Inexact Rounded
-xrem385 remainder 517458139 -999731.548 -> 596928.684
-xsub385 subtract 517458139 -999731.548 -> 518457871 Inexact Rounded
-xadd386 add -405543440 -4013.18295 -> -405547453 Inexact Rounded
-xcom386 compare -405543440 -4013.18295 -> -1
-xdiv386 divide -405543440 -4013.18295 -> 101052.816 Inexact Rounded
-xdvi386 divideint -405543440 -4013.18295 -> 101052
-xmul386 multiply -405543440 -4013.18295 -> 1.62752002E+12 Inexact Rounded
-xpow386 power -405543440 -4013 -> -8.83061932E-34545 Inexact Rounded
-xrem386 remainder -405543440 -4013.18295 -> -3276.53660
-xsub386 subtract -405543440 -4013.18295 -> -405539427 Inexact Rounded
-xadd387 add -49245250.1E+682760825 -848776.637 -> -4.92452501E+682760832 Inexact Rounded
-xcom387 compare -49245250.1E+682760825 -848776.637 -> -1
-xdiv387 divide -49245250.1E+682760825 -848776.637 -> 5.80190924E+682760826 Inexact Rounded
-xdvi387 divideint -49245250.1E+682760825 -848776.637 -> NaN Division_impossible
-xmul387 multiply -49245250.1E+682760825 -848776.637 -> 4.17982178E+682760838 Inexact Rounded
-xpow387 power -49245250.1E+682760825 -848777 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem387 remainder -49245250.1E+682760825 -848776.637 -> NaN Division_impossible
-xsub387 subtract -49245250.1E+682760825 -848776.637 -> -4.92452501E+682760832 Inexact Rounded
-xadd388 add -151144455 -170371.29 -> -151314826 Inexact Rounded
-xcom388 compare -151144455 -170371.29 -> -1
-xdiv388 divide -151144455 -170371.29 -> 887.147447 Inexact Rounded
-xdvi388 divideint -151144455 -170371.29 -> 887
-xmul388 multiply -151144455 -170371.29 -> 2.57506758E+13 Inexact Rounded
-xpow388 power -151144455 -170371 -> -5.86496369E-1393532 Inexact Rounded
-xrem388 remainder -151144455 -170371.29 -> -25120.77
-xsub388 subtract -151144455 -170371.29 -> -150974084 Inexact Rounded
-xadd389 add -729236746.E+662737067 9.10823602 -> -7.29236746E+662737075 Inexact Rounded
-xcom389 compare -729236746.E+662737067 9.10823602 -> -1
-xdiv389 divide -729236746.E+662737067 9.10823602 -> -8.00634442E+662737074 Inexact Rounded
-xdvi389 divideint -729236746.E+662737067 9.10823602 -> NaN Division_impossible
-xmul389 multiply -729236746.E+662737067 9.10823602 -> -6.64206040E+662737076 Inexact Rounded
-xpow389 power -729236746.E+662737067 9 -> -Infinity Overflow Inexact Rounded
-xrem389 remainder -729236746.E+662737067 9.10823602 -> NaN Division_impossible
-xsub389 subtract -729236746.E+662737067 9.10823602 -> -7.29236746E+662737075 Inexact Rounded
-xadd390 add 534.394729 -2369839.37 -> -2369304.98 Inexact Rounded
-xcom390 compare 534.394729 -2369839.37 -> 1
-xdiv390 divide 534.394729 -2369839.37 -> -0.000225498291 Inexact Rounded
-xdvi390 divideint 534.394729 -2369839.37 -> -0
-xmul390 multiply 534.394729 -2369839.37 -> -1.26642967E+9 Inexact Rounded
-xpow390 power 534.394729 -2369839 -> 7.12522896E-6464595 Inexact Rounded
-xrem390 remainder 534.394729 -2369839.37 -> 534.394729
-xsub390 subtract 534.394729 -2369839.37 -> 2370373.76 Inexact Rounded
-xadd391 add 89100.1797 224.370309 -> 89324.5500 Inexact Rounded
-xcom391 compare 89100.1797 224.370309 -> 1
-xdiv391 divide 89100.1797 224.370309 -> 397.112167 Inexact Rounded
-xdvi391 divideint 89100.1797 224.370309 -> 397
-xmul391 multiply 89100.1797 224.370309 -> 19991434.9 Inexact Rounded
-xpow391 power 89100.1797 224 -> 5.92654936E+1108 Inexact Rounded
-xrem391 remainder 89100.1797 224.370309 -> 25.167027
-xsub391 subtract 89100.1797 224.370309 -> 88875.8094 Inexact Rounded
-xadd392 add -821377.777 38.552821 -> -821339.224 Inexact Rounded
-xcom392 compare -821377.777 38.552821 -> -1
-xdiv392 divide -821377.777 38.552821 -> -21305.2575 Inexact Rounded
-xdvi392 divideint -821377.777 38.552821 -> -21305
-xmul392 multiply -821377.777 38.552821 -> -31666430.4 Inexact Rounded
-xpow392 power -821377.777 39 -> -4.64702482E+230 Inexact Rounded
-xrem392 remainder -821377.777 38.552821 -> -9.925595
-xsub392 subtract -821377.777 38.552821 -> -821416.330 Inexact Rounded
-xadd393 add -392640.782 -2571619.5E+113237865 -> -2.57161950E+113237871 Inexact Rounded
-xcom393 compare -392640.782 -2571619.5E+113237865 -> 1
-xdiv393 divide -392640.782 -2571619.5E+113237865 -> 1.52682301E-113237866 Inexact Rounded
-xdvi393 divideint -392640.782 -2571619.5E+113237865 -> 0
-xmul393 multiply -392640.782 -2571619.5E+113237865 -> 1.00972269E+113237877 Inexact Rounded
-xpow393 power -392640.782 -3 -> -1.65201422E-17 Inexact Rounded
-xrem393 remainder -392640.782 -2571619.5E+113237865 -> -392640.782
-xsub393 subtract -392640.782 -2571619.5E+113237865 -> 2.57161950E+113237871 Inexact Rounded
-xadd394 add -651397.712 -723.59673 -> -652121.309 Inexact Rounded
-xcom394 compare -651397.712 -723.59673 -> -1
-xdiv394 divide -651397.712 -723.59673 -> 900.222023 Inexact Rounded
-xdvi394 divideint -651397.712 -723.59673 -> 900
-xmul394 multiply -651397.712 -723.59673 -> 471349254 Inexact Rounded
-xpow394 power -651397.712 -724 -> 5.96115415E-4210 Inexact Rounded
-xrem394 remainder -651397.712 -723.59673 -> -160.65500
-xsub394 subtract -651397.712 -723.59673 -> -650674.115 Inexact Rounded
-xadd395 add 86.6890892 940380864 -> 940380951 Inexact Rounded
-xcom395 compare 86.6890892 940380864 -> -1
-xdiv395 divide 86.6890892 940380864 -> 9.21850843E-8 Inexact Rounded
-xdvi395 divideint 86.6890892 940380864 -> 0
-xmul395 multiply 86.6890892 940380864 -> 8.15207606E+10 Inexact Rounded
-xpow395 power 86.6890892 940380864 -> Infinity Overflow Inexact Rounded
-xrem395 remainder 86.6890892 940380864 -> 86.6890892
-xsub395 subtract 86.6890892 940380864 -> -940380777 Inexact Rounded
-xadd396 add 4880.06442E-382222621 -115627239E-912834031 -> 4.88006442E-382222618 Inexact Rounded
-xcom396 compare 4880.06442E-382222621 -115627239E-912834031 -> 1
-xdiv396 divide 4880.06442E-382222621 -115627239E-912834031 -> -4.22051453E+530611405 Inexact Rounded
-xdvi396 divideint 4880.06442E-382222621 -115627239E-912834031 -> NaN Division_impossible
-xmul396 multiply 4880.06442E-382222621 -115627239E-912834031 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xpow396 power 4880.06442E-382222621 -1 -> 2.04915328E+382222617 Inexact Rounded
-xrem396 remainder 4880.06442E-382222621 -115627239E-912834031 -> NaN Division_impossible
-xsub396 subtract 4880.06442E-382222621 -115627239E-912834031 -> 4.88006442E-382222618 Inexact Rounded
-xadd397 add 173398265E-532383158 3462.51450E+80986915 -> 3.46251450E+80986918 Inexact Rounded
-xcom397 compare 173398265E-532383158 3462.51450E+80986915 -> -1
-xdiv397 divide 173398265E-532383158 3462.51450E+80986915 -> 5.00787116E-613370069 Inexact Rounded
-xdvi397 divideint 173398265E-532383158 3462.51450E+80986915 -> 0
-xmul397 multiply 173398265E-532383158 3462.51450E+80986915 -> 6.00394007E-451396232 Inexact Rounded
-xpow397 power 173398265E-532383158 3 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem397 remainder 173398265E-532383158 3462.51450E+80986915 -> 1.73398265E-532383150
-xsub397 subtract 173398265E-532383158 3462.51450E+80986915 -> -3.46251450E+80986918 Inexact Rounded
-xadd398 add -1522176.78 -6631061.77 -> -8153238.55
-xcom398 compare -1522176.78 -6631061.77 -> 1
-xdiv398 divide -1522176.78 -6631061.77 -> 0.229552496 Inexact Rounded
-xdvi398 divideint -1522176.78 -6631061.77 -> 0
-xmul398 multiply -1522176.78 -6631061.77 -> 1.00936483E+13 Inexact Rounded
-xpow398 power -1522176.78 -6631062 -> 4.54268854E-40996310 Inexact Rounded
-xrem398 remainder -1522176.78 -6631061.77 -> -1522176.78
-xsub398 subtract -1522176.78 -6631061.77 -> 5108884.99
-xadd399 add 538.10453 522934310 -> 522934848 Inexact Rounded
-xcom399 compare 538.10453 522934310 -> -1
-xdiv399 divide 538.10453 522934310 -> 0.00000102900980 Inexact Rounded
-xdvi399 divideint 538.10453 522934310 -> 0
-xmul399 multiply 538.10453 522934310 -> 2.81393321E+11 Inexact Rounded
-xpow399 power 538.10453 522934310 -> Infinity Overflow Inexact Rounded
-xrem399 remainder 538.10453 522934310 -> 538.10453
-xsub399 subtract 538.10453 522934310 -> -522933772 Inexact Rounded
-xadd400 add 880243.444E-750940977 -354.601578E-204943740 -> -3.54601578E-204943738 Inexact Rounded
-xcom400 compare 880243.444E-750940977 -354.601578E-204943740 -> 1
-xdiv400 divide 880243.444E-750940977 -354.601578E-204943740 -> -2.48234497E-545997234 Inexact Rounded
-xdvi400 divideint 880243.444E-750940977 -354.601578E-204943740 -> -0
-xmul400 multiply 880243.444E-750940977 -354.601578E-204943740 -> -3.12135714E-955884709 Inexact Rounded
-xpow400 power 880243.444E-750940977 -4 -> Infinity Overflow Inexact Rounded
-xrem400 remainder 880243.444E-750940977 -354.601578E-204943740 -> 8.80243444E-750940972
-xsub400 subtract 880243.444E-750940977 -354.601578E-204943740 -> 3.54601578E-204943738 Inexact Rounded
-xadd401 add 968370.780 6677268.73 -> 7645639.51 Rounded
-xcom401 compare 968370.780 6677268.73 -> -1
-xdiv401 divide 968370.780 6677268.73 -> 0.145024982 Inexact Rounded
-xdvi401 divideint 968370.780 6677268.73 -> 0
-xmul401 multiply 968370.780 6677268.73 -> 6.46607193E+12 Inexact Rounded
-xpow401 power 968370.780 6677269 -> 3.29990931E+39970410 Inexact Rounded
-xrem401 remainder 968370.780 6677268.73 -> 968370.780
-xsub401 subtract 968370.780 6677268.73 -> -5708897.95 Rounded
-xadd402 add -97.7474945 31248241.5 -> 31248143.8 Inexact Rounded
-xcom402 compare -97.7474945 31248241.5 -> -1
-xdiv402 divide -97.7474945 31248241.5 -> -0.00000312809585 Inexact Rounded
-xdvi402 divideint -97.7474945 31248241.5 -> -0
-xmul402 multiply -97.7474945 31248241.5 -> -3.05443731E+9 Inexact Rounded
-xpow402 power -97.7474945 31248242 -> 2.90714257E+62187302 Inexact Rounded
-xrem402 remainder -97.7474945 31248241.5 -> -97.7474945
-xsub402 subtract -97.7474945 31248241.5 -> -31248339.2 Inexact Rounded
-xadd403 add -187582786.E+369916952 957840435E+744365567 -> 9.57840435E+744365575 Inexact Rounded
-xcom403 compare -187582786.E+369916952 957840435E+744365567 -> -1
-xdiv403 divide -187582786.E+369916952 957840435E+744365567 -> -1.95839285E-374448616 Inexact Rounded
-xdvi403 divideint -187582786.E+369916952 957840435E+744365567 -> -0
-xmul403 multiply -187582786.E+369916952 957840435E+744365567 -> -Infinity Inexact Overflow Rounded
-xpow403 power -187582786.E+369916952 10 -> Infinity Overflow Inexact Rounded
-xrem403 remainder -187582786.E+369916952 957840435E+744365567 -> -1.87582786E+369916960
-xsub403 subtract -187582786.E+369916952 957840435E+744365567 -> -9.57840435E+744365575 Inexact Rounded
-xadd404 add -328026144. -125499735. -> -453525879
-xcom404 compare -328026144. -125499735. -> -1
-xdiv404 divide -328026144. -125499735. -> 2.61375965 Inexact Rounded
-xdvi404 divideint -328026144. -125499735. -> 2
-xmul404 multiply -328026144. -125499735. -> 4.11671941E+16 Inexact Rounded
-xpow404 power -328026144. -125499735 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem404 remainder -328026144. -125499735. -> -77026674
-xsub404 subtract -328026144. -125499735. -> -202526409
-xadd405 add -99424150.2E-523662102 3712.35030 -> 3712.35030 Inexact Rounded
-xcom405 compare -99424150.2E-523662102 3712.35030 -> -1
-xdiv405 divide -99424150.2E-523662102 3712.35030 -> -2.67819958E-523662098 Inexact Rounded
-xdvi405 divideint -99424150.2E-523662102 3712.35030 -> -0
-xmul405 multiply -99424150.2E-523662102 3712.35030 -> -3.69097274E-523662091 Inexact Rounded
-xpow405 power -99424150.2E-523662102 3712 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem405 remainder -99424150.2E-523662102 3712.35030 -> -9.94241502E-523662095
-xsub405 subtract -99424150.2E-523662102 3712.35030 -> -3712.35030 Inexact Rounded
-xadd406 add 14838.0718 9489893.28E+830631266 -> 9.48989328E+830631272 Inexact Rounded
-xcom406 compare 14838.0718 9489893.28E+830631266 -> -1
-xdiv406 divide 14838.0718 9489893.28E+830631266 -> 1.56356572E-830631269 Inexact Rounded
-xdvi406 divideint 14838.0718 9489893.28E+830631266 -> 0
-xmul406 multiply 14838.0718 9489893.28E+830631266 -> 1.40811718E+830631277 Inexact Rounded
-xpow406 power 14838.0718 9 -> 3.48656057E+37 Inexact Rounded
-xrem406 remainder 14838.0718 9489893.28E+830631266 -> 14838.0718
-xsub406 subtract 14838.0718 9489893.28E+830631266 -> -9.48989328E+830631272 Inexact Rounded
-xadd407 add 71207472.8 -31835.0809 -> 71175637.7 Inexact Rounded
-xcom407 compare 71207472.8 -31835.0809 -> 1
-xdiv407 divide 71207472.8 -31835.0809 -> -2236.76117 Inexact Rounded
-xdvi407 divideint 71207472.8 -31835.0809 -> -2236
-xmul407 multiply 71207472.8 -31835.0809 -> -2.26689566E+12 Inexact Rounded
-xpow407 power 71207472.8 -31835 -> 7.05333953E-249986 Inexact Rounded
-xrem407 remainder 71207472.8 -31835.0809 -> 24231.9076
-xsub407 subtract 71207472.8 -31835.0809 -> 71239307.9 Inexact Rounded
-xadd408 add -20440.4394 -44.4064328E+511085806 -> -4.44064328E+511085807 Inexact Rounded
-xcom408 compare -20440.4394 -44.4064328E+511085806 -> 1
-xdiv408 divide -20440.4394 -44.4064328E+511085806 -> 4.60303567E-511085804 Inexact Rounded
-xdvi408 divideint -20440.4394 -44.4064328E+511085806 -> 0
-xmul408 multiply -20440.4394 -44.4064328E+511085806 -> 9.07686999E+511085811 Inexact Rounded
-xpow408 power -20440.4394 -4 -> 5.72847590E-18 Inexact Rounded
-xrem408 remainder -20440.4394 -44.4064328E+511085806 -> -20440.4394
-xsub408 subtract -20440.4394 -44.4064328E+511085806 -> 4.44064328E+511085807 Inexact Rounded
-xadd409 add -54.3684171E-807210192 1.04592973E-984041807 -> -5.43684171E-807210191 Inexact Rounded
-xcom409 compare -54.3684171E-807210192 1.04592973E-984041807 -> -1
-xdiv409 divide -54.3684171E-807210192 1.04592973E-984041807 -> -5.19809463E+176831616 Inexact Rounded
-xdvi409 divideint -54.3684171E-807210192 1.04592973E-984041807 -> NaN Division_impossible
-xmul409 multiply -54.3684171E-807210192 1.04592973E-984041807 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xpow409 power -54.3684171E-807210192 1 -> -5.43684171E-807210191
-xrem409 remainder -54.3684171E-807210192 1.04592973E-984041807 -> NaN Division_impossible
-xsub409 subtract -54.3684171E-807210192 1.04592973E-984041807 -> -5.43684171E-807210191 Inexact Rounded
-xadd410 add 54310060.5E+948159739 274320701.E+205880484 -> 5.43100605E+948159746 Inexact Rounded
-xcom410 compare 54310060.5E+948159739 274320701.E+205880484 -> 1
-xdiv410 divide 54310060.5E+948159739 274320701.E+205880484 -> 1.97980175E+742279254 Inexact Rounded
-xdvi410 divideint 54310060.5E+948159739 274320701.E+205880484 -> NaN Division_impossible
-xmul410 multiply 54310060.5E+948159739 274320701.E+205880484 -> Infinity Inexact Overflow Rounded
-xpow410 power 54310060.5E+948159739 3 -> Infinity Overflow Inexact Rounded
-xrem410 remainder 54310060.5E+948159739 274320701.E+205880484 -> NaN Division_impossible
-xsub410 subtract 54310060.5E+948159739 274320701.E+205880484 -> 5.43100605E+948159746 Inexact Rounded
-xadd411 add -657.186702 426844.39 -> 426187.203 Inexact Rounded
-xcom411 compare -657.186702 426844.39 -> -1
-xdiv411 divide -657.186702 426844.39 -> -0.00153964001 Inexact Rounded
-xdvi411 divideint -657.186702 426844.39 -> -0
-xmul411 multiply -657.186702 426844.39 -> -280516457 Inexact Rounded
-xpow411 power -657.186702 426844 -> 3.50000575E+1202713 Inexact Rounded
-xrem411 remainder -657.186702 426844.39 -> -657.186702
-xsub411 subtract -657.186702 426844.39 -> -427501.577 Inexact Rounded
-xadd412 add -41593077.0 -688607.564 -> -42281684.6 Inexact Rounded
-xcom412 compare -41593077.0 -688607.564 -> -1
-xdiv412 divide -41593077.0 -688607.564 -> 60.4017138 Inexact Rounded
-xdvi412 divideint -41593077.0 -688607.564 -> 60
-xmul412 multiply -41593077.0 -688607.564 -> 2.86413074E+13 Inexact Rounded
-xpow412 power -41593077.0 -688608 -> 1.42150750E-5246519 Inexact Rounded
-xrem412 remainder -41593077.0 -688607.564 -> -276623.160
-xsub412 subtract -41593077.0 -688607.564 -> -40904469.4 Inexact Rounded
-xadd413 add -5786.38132 190556652.E+177045877 -> 1.90556652E+177045885 Inexact Rounded
-xcom413 compare -5786.38132 190556652.E+177045877 -> -1
-xdiv413 divide -5786.38132 190556652.E+177045877 -> -3.03656748E-177045882 Inexact Rounded
-xdvi413 divideint -5786.38132 190556652.E+177045877 -> -0
-xmul413 multiply -5786.38132 190556652.E+177045877 -> -1.10263345E+177045889 Inexact Rounded
-xpow413 power -5786.38132 2 -> 33482208.8 Inexact Rounded
-xrem413 remainder -5786.38132 190556652.E+177045877 -> -5786.38132
-xsub413 subtract -5786.38132 190556652.E+177045877 -> -1.90556652E+177045885 Inexact Rounded
-xadd414 add 737622.974 -241560693E+249506565 -> -2.41560693E+249506573 Inexact Rounded
-xcom414 compare 737622.974 -241560693E+249506565 -> 1
-xdiv414 divide 737622.974 -241560693E+249506565 -> -3.05357202E-249506568 Inexact Rounded
-xdvi414 divideint 737622.974 -241560693E+249506565 -> -0
-xmul414 multiply 737622.974 -241560693E+249506565 -> -1.78180717E+249506579 Inexact Rounded
-xpow414 power 737622.974 -2 -> 1.83793916E-12 Inexact Rounded
-xrem414 remainder 737622.974 -241560693E+249506565 -> 737622.974
-xsub414 subtract 737622.974 -241560693E+249506565 -> 2.41560693E+249506573 Inexact Rounded
-xadd415 add 5615373.52 -7.27583808E-949781048 -> 5615373.52 Inexact Rounded
-xcom415 compare 5615373.52 -7.27583808E-949781048 -> 1
-xdiv415 divide 5615373.52 -7.27583808E-949781048 -> -7.71783739E+949781053 Inexact Rounded
-xdvi415 divideint 5615373.52 -7.27583808E-949781048 -> NaN Division_impossible
-xmul415 multiply 5615373.52 -7.27583808E-949781048 -> -4.08565485E-949781041 Inexact Rounded
-xpow415 power 5615373.52 -7 -> 5.68001460E-48 Inexact Rounded
-xrem415 remainder 5615373.52 -7.27583808E-949781048 -> NaN Division_impossible
-xsub415 subtract 5615373.52 -7.27583808E-949781048 -> 5615373.52 Inexact Rounded
-xadd416 add 644136.179 -835708.103 -> -191571.924
-xcom416 compare 644136.179 -835708.103 -> 1
-xdiv416 divide 644136.179 -835708.103 -> -0.770766942 Inexact Rounded
-xdvi416 divideint 644136.179 -835708.103 -> -0
-xmul416 multiply 644136.179 -835708.103 -> -5.38309824E+11 Inexact Rounded
-xpow416 power 644136.179 -835708 -> 7.41936858E-4854610 Inexact Rounded
-xrem416 remainder 644136.179 -835708.103 -> 644136.179
-xsub416 subtract 644136.179 -835708.103 -> 1479844.28 Inexact Rounded
-xadd417 add -307.419521E+466861843 -738689976.E-199032711 -> -3.07419521E+466861845 Inexact Rounded
-xcom417 compare -307.419521E+466861843 -738689976.E-199032711 -> -1
-xdiv417 divide -307.419521E+466861843 -738689976.E-199032711 -> 4.16168529E+665894547 Inexact Rounded
-xdvi417 divideint -307.419521E+466861843 -738689976.E-199032711 -> NaN Division_impossible
-xmul417 multiply -307.419521E+466861843 -738689976.E-199032711 -> 2.27087719E+267829143 Inexact Rounded
-xpow417 power -307.419521E+466861843 -7 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem417 remainder -307.419521E+466861843 -738689976.E-199032711 -> NaN Division_impossible
-xsub417 subtract -307.419521E+466861843 -738689976.E-199032711 -> -3.07419521E+466861845 Inexact Rounded
-xadd418 add -619642.130 -226740537.E-902590153 -> -619642.130 Inexact Rounded
-xcom418 compare -619642.130 -226740537.E-902590153 -> -1
-xdiv418 divide -619642.130 -226740537.E-902590153 -> 2.73282466E+902590150 Inexact Rounded
-xdvi418 divideint -619642.130 -226740537.E-902590153 -> NaN Division_impossible
-xmul418 multiply -619642.130 -226740537.E-902590153 -> 1.40497989E-902590139 Inexact Rounded
-xpow418 power -619642.130 -2 -> 2.60446259E-12 Inexact Rounded
-xrem418 remainder -619642.130 -226740537.E-902590153 -> NaN Division_impossible
-xsub418 subtract -619642.130 -226740537.E-902590153 -> -619642.130 Inexact Rounded
-xadd419 add -31068.7549 -3.41495042E+86001379 -> -3.41495042E+86001379 Inexact Rounded
-xcom419 compare -31068.7549 -3.41495042E+86001379 -> 1
-xdiv419 divide -31068.7549 -3.41495042E+86001379 -> 9.09786412E-86001376 Inexact Rounded
-xdvi419 divideint -31068.7549 -3.41495042E+86001379 -> 0
-xmul419 multiply -31068.7549 -3.41495042E+86001379 -> 1.06098258E+86001384 Inexact Rounded
-xpow419 power -31068.7549 -3 -> -3.33448258E-14 Inexact Rounded
-xrem419 remainder -31068.7549 -3.41495042E+86001379 -> -31068.7549
-xsub419 subtract -31068.7549 -3.41495042E+86001379 -> 3.41495042E+86001379 Inexact Rounded
-xadd420 add -68951173. -211804977.E-97318126 -> -68951173.0 Inexact Rounded
-xcom420 compare -68951173. -211804977.E-97318126 -> -1
-xdiv420 divide -68951173. -211804977.E-97318126 -> 3.25540854E+97318125 Inexact Rounded
-xdvi420 divideint -68951173. -211804977.E-97318126 -> NaN Division_impossible
-xmul420 multiply -68951173. -211804977.E-97318126 -> 1.46042016E-97318110 Inexact Rounded
-xpow420 power -68951173. -2 -> 2.10337488E-16 Inexact Rounded
-xrem420 remainder -68951173. -211804977.E-97318126 -> NaN Division_impossible
-xsub420 subtract -68951173. -211804977.E-97318126 -> -68951173.0 Inexact Rounded
-xadd421 add -4.09492571E-301749490 434.20199E-749390952 -> -4.09492571E-301749490 Inexact Rounded
-xcom421 compare -4.09492571E-301749490 434.20199E-749390952 -> -1
-xdiv421 divide -4.09492571E-301749490 434.20199E-749390952 -> -9.43092341E+447641459 Inexact Rounded
-xdvi421 divideint -4.09492571E-301749490 434.20199E-749390952 -> NaN Division_impossible
-xmul421 multiply -4.09492571E-301749490 434.20199E-749390952 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xpow421 power -4.09492571E-301749490 4 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem421 remainder -4.09492571E-301749490 434.20199E-749390952 -> NaN Division_impossible
-xsub421 subtract -4.09492571E-301749490 434.20199E-749390952 -> -4.09492571E-301749490 Inexact Rounded
-xadd422 add 3898.03188 -82572.615 -> -78674.5831 Inexact Rounded
-xcom422 compare 3898.03188 -82572.615 -> 1
-xdiv422 divide 3898.03188 -82572.615 -> -0.0472073202 Inexact Rounded
-xdvi422 divideint 3898.03188 -82572.615 -> -0
-xmul422 multiply 3898.03188 -82572.615 -> -321870686 Inexact Rounded
-xpow422 power 3898.03188 -82573 -> 1.33010737E-296507 Inexact Rounded
-xrem422 remainder 3898.03188 -82572.615 -> 3898.03188
-xsub422 subtract 3898.03188 -82572.615 -> 86470.6469 Inexact Rounded
-xadd423 add -1.7619356 -2546.64043 -> -2548.40237 Inexact Rounded
-xcom423 compare -1.7619356 -2546.64043 -> 1
-xdiv423 divide -1.7619356 -2546.64043 -> 0.000691866657 Inexact Rounded
-xdvi423 divideint -1.7619356 -2546.64043 -> 0
-xmul423 multiply -1.7619356 -2546.64043 -> 4487.01643 Inexact Rounded
-xpow423 power -1.7619356 -2547 -> -2.90664557E-627 Inexact Rounded
-xrem423 remainder -1.7619356 -2546.64043 -> -1.7619356
-xsub423 subtract -1.7619356 -2546.64043 -> 2544.87849 Inexact Rounded
-xadd424 add 59714.1968 29734388.6E-564525525 -> 59714.1968 Inexact Rounded
-xcom424 compare 59714.1968 29734388.6E-564525525 -> 1
-xdiv424 divide 59714.1968 29734388.6E-564525525 -> 2.00825373E+564525522 Inexact Rounded
-xdvi424 divideint 59714.1968 29734388.6E-564525525 -> NaN Division_impossible
-xmul424 multiply 59714.1968 29734388.6E-564525525 -> 1.77556513E-564525513 Inexact Rounded
-xpow424 power 59714.1968 3 -> 2.12928005E+14 Inexact Rounded
-xrem424 remainder 59714.1968 29734388.6E-564525525 -> NaN Division_impossible
-xsub424 subtract 59714.1968 29734388.6E-564525525 -> 59714.1968 Inexact Rounded
-xadd425 add 6.88891136E-935467395 -785049.562E-741671442 -> -7.85049562E-741671437 Inexact Rounded
-xcom425 compare 6.88891136E-935467395 -785049.562E-741671442 -> 1
-xdiv425 divide 6.88891136E-935467395 -785049.562E-741671442 -> -8.77512923E-193795959 Inexact Rounded
-xdvi425 divideint 6.88891136E-935467395 -785049.562E-741671442 -> -0
-xmul425 multiply 6.88891136E-935467395 -785049.562E-741671442 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xpow425 power 6.88891136E-935467395 -8 -> Infinity Overflow Inexact Rounded
-xrem425 remainder 6.88891136E-935467395 -785049.562E-741671442 -> 6.88891136E-935467395
-xsub425 subtract 6.88891136E-935467395 -785049.562E-741671442 -> 7.85049562E-741671437 Inexact Rounded
-xadd426 add 975566251 -519.858530 -> 975565731 Inexact Rounded
-xcom426 compare 975566251 -519.858530 -> 1
-xdiv426 divide 975566251 -519.858530 -> -1876599.49 Inexact Rounded
-xdvi426 divideint 975566251 -519.858530 -> -1876599
-xmul426 multiply 975566251 -519.858530 -> -5.07156437E+11 Inexact Rounded
-xpow426 power 975566251 -520 -> 3.85905300E-4675 Inexact Rounded
-xrem426 remainder 975566251 -519.858530 -> 253.460530
-xsub426 subtract 975566251 -519.858530 -> 975566771 Inexact Rounded
-xadd427 add 307401954 -231481582. -> 75920372
-xcom427 compare 307401954 -231481582. -> 1
-xdiv427 divide 307401954 -231481582. -> -1.32797586 Inexact Rounded
-xdvi427 divideint 307401954 -231481582. -> -1
-xmul427 multiply 307401954 -231481582. -> -7.11578906E+16 Inexact Rounded
-xpow427 power 307401954 -231481582 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem427 remainder 307401954 -231481582. -> 75920372
-xsub427 subtract 307401954 -231481582. -> 538883536
-xadd428 add 2237645.48E+992947388 -60618055.3E-857316706 -> 2.23764548E+992947394 Inexact Rounded
-xcom428 compare 2237645.48E+992947388 -60618055.3E-857316706 -> 1
-xdiv428 divide 2237645.48E+992947388 -60618055.3E-857316706 -> -Infinity Inexact Overflow Rounded
-xdvi428 divideint 2237645.48E+992947388 -60618055.3E-857316706 -> NaN Division_impossible
-xmul428 multiply 2237645.48E+992947388 -60618055.3E-857316706 -> -1.35641717E+135630696 Inexact Rounded
-xpow428 power 2237645.48E+992947388 -6 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem428 remainder 2237645.48E+992947388 -60618055.3E-857316706 -> NaN Division_impossible
-xsub428 subtract 2237645.48E+992947388 -60618055.3E-857316706 -> 2.23764548E+992947394 Inexact Rounded
-xadd429 add -403903.851 35.5049687E-72095155 -> -403903.851 Inexact Rounded
-xcom429 compare -403903.851 35.5049687E-72095155 -> -1
-xdiv429 divide -403903.851 35.5049687E-72095155 -> -1.13759810E+72095159 Inexact Rounded
-xdvi429 divideint -403903.851 35.5049687E-72095155 -> NaN Division_impossible
-xmul429 multiply -403903.851 35.5049687E-72095155 -> -1.43405936E-72095148 Inexact Rounded
-xpow429 power -403903.851 4 -> 2.66141117E+22 Inexact Rounded
-xrem429 remainder -403903.851 35.5049687E-72095155 -> NaN Division_impossible
-xsub429 subtract -403903.851 35.5049687E-72095155 -> -403903.851 Inexact Rounded
-xadd430 add 6.48674979 -621732.532E+422575800 -> -6.21732532E+422575805 Inexact Rounded
-xcom430 compare 6.48674979 -621732.532E+422575800 -> 1
-xdiv430 divide 6.48674979 -621732.532E+422575800 -> -1.04333447E-422575805 Inexact Rounded
-xdvi430 divideint 6.48674979 -621732.532E+422575800 -> -0
-xmul430 multiply 6.48674979 -621732.532E+422575800 -> -4.03302337E+422575806 Inexact Rounded
-xpow430 power 6.48674979 -6 -> 0.0000134226146 Inexact Rounded
-xrem430 remainder 6.48674979 -621732.532E+422575800 -> 6.48674979
-xsub430 subtract 6.48674979 -621732.532E+422575800 -> 6.21732532E+422575805 Inexact Rounded
-xadd431 add -31401.9418 36.3960679 -> -31365.5457 Inexact Rounded
-xcom431 compare -31401.9418 36.3960679 -> -1
-xdiv431 divide -31401.9418 36.3960679 -> -862.783911 Inexact Rounded
-xdvi431 divideint -31401.9418 36.3960679 -> -862
-xmul431 multiply -31401.9418 36.3960679 -> -1142907.21 Inexact Rounded
-xpow431 power -31401.9418 36 -> 7.77023505E+161 Inexact Rounded
-xrem431 remainder -31401.9418 36.3960679 -> -28.5312702
-xsub431 subtract -31401.9418 36.3960679 -> -31438.3379 Inexact Rounded
-xadd432 add 31345321.1 51.5482191 -> 31345372.6 Inexact Rounded
-xcom432 compare 31345321.1 51.5482191 -> 1
-xdiv432 divide 31345321.1 51.5482191 -> 608077.673 Inexact Rounded
-xdvi432 divideint 31345321.1 51.5482191 -> 608077
-xmul432 multiply 31345321.1 51.5482191 -> 1.61579548E+9 Inexact Rounded
-xpow432 power 31345321.1 52 -> 6.32385059E+389 Inexact Rounded
-xrem432 remainder 31345321.1 51.5482191 -> 34.6743293
-xsub432 subtract 31345321.1 51.5482191 -> 31345269.6 Inexact Rounded
-xadd433 add -64.172844 -28506227.2E-767965800 -> -64.1728440 Inexact Rounded
-xcom433 compare -64.172844 -28506227.2E-767965800 -> -1
-xdiv433 divide -64.172844 -28506227.2E-767965800 -> 2.25118686E+767965794 Inexact Rounded
-xdvi433 divideint -64.172844 -28506227.2E-767965800 -> NaN Division_impossible
-xmul433 multiply -64.172844 -28506227.2E-767965800 -> 1.82932567E-767965791 Inexact Rounded
-xpow433 power -64.172844 -3 -> -0.00000378395654 Inexact Rounded
-xrem433 remainder -64.172844 -28506227.2E-767965800 -> NaN Division_impossible
-xsub433 subtract -64.172844 -28506227.2E-767965800 -> -64.1728440 Inexact Rounded
-xadd434 add 70437.1551 -62916.1233 -> 7521.0318
-xcom434 compare 70437.1551 -62916.1233 -> 1
-xdiv434 divide 70437.1551 -62916.1233 -> -1.11954061 Inexact Rounded
-xdvi434 divideint 70437.1551 -62916.1233 -> -1
-xmul434 multiply 70437.1551 -62916.1233 -> -4.43163274E+9 Inexact Rounded
-xpow434 power 70437.1551 -62916 -> 5.02945060E-305005 Inexact Rounded
-xrem434 remainder 70437.1551 -62916.1233 -> 7521.0318
-xsub434 subtract 70437.1551 -62916.1233 -> 133353.278 Inexact Rounded
-xadd435 add 916260164 -58.4017325 -> 916260106 Inexact Rounded
-xcom435 compare 916260164 -58.4017325 -> 1
-xdiv435 divide 916260164 -58.4017325 -> -15688920.9 Inexact Rounded
-xdvi435 divideint 916260164 -58.4017325 -> -15688920
-xmul435 multiply 916260164 -58.4017325 -> -5.35111810E+10 Inexact Rounded
-xpow435 power 916260164 -58 -> 1.59554587E-520 Inexact Rounded
-xrem435 remainder 916260164 -58.4017325 -> 54.9461000
-xsub435 subtract 916260164 -58.4017325 -> 916260222 Inexact Rounded
-xadd436 add 19889085.3E-46816480 1581683.94 -> 1581683.94 Inexact Rounded
-xcom436 compare 19889085.3E-46816480 1581683.94 -> -1
-xdiv436 divide 19889085.3E-46816480 1581683.94 -> 1.25746268E-46816479 Inexact Rounded
-xdvi436 divideint 19889085.3E-46816480 1581683.94 -> 0
-xmul436 multiply 19889085.3E-46816480 1581683.94 -> 3.14582468E-46816467 Inexact Rounded
-xpow436 power 19889085.3E-46816480 1581684 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem436 remainder 19889085.3E-46816480 1581683.94 -> 1.98890853E-46816473
-xsub436 subtract 19889085.3E-46816480 1581683.94 -> -1581683.94 Inexact Rounded
-xadd437 add -56312.3383 789.466064 -> -55522.8722 Inexact Rounded
-xcom437 compare -56312.3383 789.466064 -> -1
-xdiv437 divide -56312.3383 789.466064 -> -71.3296503 Inexact Rounded
-xdvi437 divideint -56312.3383 789.466064 -> -71
-xmul437 multiply -56312.3383 789.466064 -> -44456680.1 Inexact Rounded
-xpow437 power -56312.3383 789 -> -1.68348724E+3748 Inexact Rounded
-xrem437 remainder -56312.3383 789.466064 -> -260.247756
-xsub437 subtract -56312.3383 789.466064 -> -57101.8044 Inexact Rounded
-xadd438 add 183442.849 -925876106 -> -925692663 Inexact Rounded
-xcom438 compare 183442.849 -925876106 -> 1
-xdiv438 divide 183442.849 -925876106 -> -0.000198128937 Inexact Rounded
-xdvi438 divideint 183442.849 -925876106 -> -0
-xmul438 multiply 183442.849 -925876106 -> -1.69845351E+14 Inexact Rounded
-xpow438 power 183442.849 -925876106 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem438 remainder 183442.849 -925876106 -> 183442.849
-xsub438 subtract 183442.849 -925876106 -> 926059549 Inexact Rounded
-xadd439 add 971113.655E-695540249 -419351120E-977743823 -> 9.71113655E-695540244 Inexact Rounded
-xcom439 compare 971113.655E-695540249 -419351120E-977743823 -> 1
-xdiv439 divide 971113.655E-695540249 -419351120E-977743823 -> -2.31575310E+282203571 Inexact Rounded
-xdvi439 divideint 971113.655E-695540249 -419351120E-977743823 -> NaN Division_impossible
-xmul439 multiply 971113.655E-695540249 -419351120E-977743823 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xpow439 power 971113.655E-695540249 -4 -> Infinity Overflow Inexact Rounded
-xrem439 remainder 971113.655E-695540249 -419351120E-977743823 -> NaN Division_impossible
-xsub439 subtract 971113.655E-695540249 -419351120E-977743823 -> 9.71113655E-695540244 Inexact Rounded
-xadd440 add 859658551. 72338.2054 -> 859730889 Inexact Rounded
-xcom440 compare 859658551. 72338.2054 -> 1
-xdiv440 divide 859658551. 72338.2054 -> 11883.8800 Inexact Rounded
-xdvi440 divideint 859658551. 72338.2054 -> 11883
-xmul440 multiply 859658551. 72338.2054 -> 6.21861568E+13 Inexact Rounded
-xpow440 power 859658551. 72338 -> 1.87620450E+646291 Inexact Rounded
-xrem440 remainder 859658551. 72338.2054 -> 63656.2318
-xsub440 subtract 859658551. 72338.2054 -> 859586213 Inexact Rounded
-xadd441 add -3.86446630E+426816068 -664.534737 -> -3.86446630E+426816068 Inexact Rounded
-xcom441 compare -3.86446630E+426816068 -664.534737 -> -1
-xdiv441 divide -3.86446630E+426816068 -664.534737 -> 5.81529615E+426816065 Inexact Rounded
-xdvi441 divideint -3.86446630E+426816068 -664.534737 -> NaN Division_impossible
-xmul441 multiply -3.86446630E+426816068 -664.534737 -> 2.56807210E+426816071 Inexact Rounded
-xpow441 power -3.86446630E+426816068 -665 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem441 remainder -3.86446630E+426816068 -664.534737 -> NaN Division_impossible
-xsub441 subtract -3.86446630E+426816068 -664.534737 -> -3.86446630E+426816068 Inexact Rounded
-xadd442 add -969.881818 31170.8555 -> 30200.9737 Inexact Rounded
-xcom442 compare -969.881818 31170.8555 -> -1
-xdiv442 divide -969.881818 31170.8555 -> -0.0311150208 Inexact Rounded
-xdvi442 divideint -969.881818 31170.8555 -> -0
-xmul442 multiply -969.881818 31170.8555 -> -30232046.0 Inexact Rounded
-xpow442 power -969.881818 31171 -> -1.02865894E+93099 Inexact Rounded
-xrem442 remainder -969.881818 31170.8555 -> -969.881818
-xsub442 subtract -969.881818 31170.8555 -> -32140.7373 Inexact Rounded
-xadd443 add 7980537.27 85.4040512 -> 7980622.67 Inexact Rounded
-xcom443 compare 7980537.27 85.4040512 -> 1
-xdiv443 divide 7980537.27 85.4040512 -> 93444.4814 Inexact Rounded
-xdvi443 divideint 7980537.27 85.4040512 -> 93444
-xmul443 multiply 7980537.27 85.4040512 -> 681570214 Inexact Rounded
-xpow443 power 7980537.27 85 -> 4.70685763E+586 Inexact Rounded
-xrem443 remainder 7980537.27 85.4040512 -> 41.1096672
-xsub443 subtract 7980537.27 85.4040512 -> 7980451.87 Inexact Rounded
-xadd444 add -114609916. 7525.14981 -> -114602391 Inexact Rounded
-xcom444 compare -114609916. 7525.14981 -> -1
-xdiv444 divide -114609916. 7525.14981 -> -15230.2504 Inexact Rounded
-xdvi444 divideint -114609916. 7525.14981 -> -15230
-xmul444 multiply -114609916. 7525.14981 -> -8.62456788E+11 Inexact Rounded
-xpow444 power -114609916. 7525 -> -4.43620445E+60645 Inexact Rounded
-xrem444 remainder -114609916. 7525.14981 -> -1884.39370
-xsub444 subtract -114609916. 7525.14981 -> -114617441 Inexact Rounded
-xadd445 add 8.43404682E-500572568 474526719 -> 474526719 Inexact Rounded
-xcom445 compare 8.43404682E-500572568 474526719 -> -1
-xdiv445 divide 8.43404682E-500572568 474526719 -> 1.77735973E-500572576 Inexact Rounded
-xdvi445 divideint 8.43404682E-500572568 474526719 -> 0
-xmul445 multiply 8.43404682E-500572568 474526719 -> 4.00218057E-500572559 Inexact Rounded
-xpow445 power 8.43404682E-500572568 474526719 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem445 remainder 8.43404682E-500572568 474526719 -> 8.43404682E-500572568
-xsub445 subtract 8.43404682E-500572568 474526719 -> -474526719 Inexact Rounded
-xadd446 add 188006433 2260.17037E-978192525 -> 188006433 Inexact Rounded
-xcom446 compare 188006433 2260.17037E-978192525 -> 1
-xdiv446 divide 188006433 2260.17037E-978192525 -> 8.31824165E+978192529 Inexact Rounded
-xdvi446 divideint 188006433 2260.17037E-978192525 -> NaN Division_impossible
-xmul446 multiply 188006433 2260.17037E-978192525 -> 4.24926569E-978192514 Inexact Rounded
-xpow446 power 188006433 2 -> 3.53464188E+16 Inexact Rounded
-xrem446 remainder 188006433 2260.17037E-978192525 -> NaN Division_impossible
-xsub446 subtract 188006433 2260.17037E-978192525 -> 188006433 Inexact Rounded
-xadd447 add -9.95836312 -866466703 -> -866466713 Inexact Rounded
-xcom447 compare -9.95836312 -866466703 -> 1
-xdiv447 divide -9.95836312 -866466703 -> 1.14930707E-8 Inexact Rounded
-xdvi447 divideint -9.95836312 -866466703 -> 0
-xmul447 multiply -9.95836312 -866466703 -> 8.62859006E+9 Inexact Rounded
-xpow447 power -9.95836312 -866466703 -> -6.71744369E-864896630 Inexact Rounded
-xrem447 remainder -9.95836312 -866466703 -> -9.95836312
-xsub447 subtract -9.95836312 -866466703 -> 866466693 Inexact Rounded
-xadd448 add 80919339.2E-967231586 219.824266 -> 219.824266 Inexact Rounded
-xcom448 compare 80919339.2E-967231586 219.824266 -> -1
-xdiv448 divide 80919339.2E-967231586 219.824266 -> 3.68109220E-967231581 Inexact Rounded
-xdvi448 divideint 80919339.2E-967231586 219.824266 -> 0
-xmul448 multiply 80919339.2E-967231586 219.824266 -> 1.77880343E-967231576 Inexact Rounded
-xpow448 power 80919339.2E-967231586 220 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem448 remainder 80919339.2E-967231586 219.824266 -> 8.09193392E-967231579
-xsub448 subtract 80919339.2E-967231586 219.824266 -> -219.824266 Inexact Rounded
-xadd449 add 159579.444 -89827.5229 -> 69751.9211
-xcom449 compare 159579.444 -89827.5229 -> 1
-xdiv449 divide 159579.444 -89827.5229 -> -1.77650946 Inexact Rounded
-xdvi449 divideint 159579.444 -89827.5229 -> -1
-xmul449 multiply 159579.444 -89827.5229 -> -1.43346262E+10 Inexact Rounded
-xpow449 power 159579.444 -89828 -> 9.69955850E-467374 Inexact Rounded
-xrem449 remainder 159579.444 -89827.5229 -> 69751.9211
-xsub449 subtract 159579.444 -89827.5229 -> 249406.967 Inexact Rounded
-xadd450 add -4.54000153 6966333.74 -> 6966329.20 Inexact Rounded
-xcom450 compare -4.54000153 6966333.74 -> -1
-xdiv450 divide -4.54000153 6966333.74 -> -6.51706005E-7 Inexact Rounded
-xdvi450 divideint -4.54000153 6966333.74 -> -0
-xmul450 multiply -4.54000153 6966333.74 -> -31627165.8 Inexact Rounded
-xpow450 power -4.54000153 6966334 -> 3.52568913E+4577271 Inexact Rounded
-xrem450 remainder -4.54000153 6966333.74 -> -4.54000153
-xsub450 subtract -4.54000153 6966333.74 -> -6966338.28 Inexact Rounded
-xadd451 add 28701538.7E-391015649 -920999192. -> -920999192 Inexact Rounded
-xcom451 compare 28701538.7E-391015649 -920999192. -> 1
-xdiv451 divide 28701538.7E-391015649 -920999192. -> -3.11634787E-391015651 Inexact Rounded
-xdvi451 divideint 28701538.7E-391015649 -920999192. -> -0
-xmul451 multiply 28701538.7E-391015649 -920999192. -> -2.64340940E-391015633 Inexact Rounded
-xpow451 power 28701538.7E-391015649 -920999192 -> Infinity Overflow Inexact Rounded
-xrem451 remainder 28701538.7E-391015649 -920999192. -> 2.87015387E-391015642
-xsub451 subtract 28701538.7E-391015649 -920999192. -> 920999192 Inexact Rounded
-xadd452 add -361382575. -7976.15286E+898491169 -> -7.97615286E+898491172 Inexact Rounded
-xcom452 compare -361382575. -7976.15286E+898491169 -> 1
-xdiv452 divide -361382575. -7976.15286E+898491169 -> 4.53078798E-898491165 Inexact Rounded
-xdvi452 divideint -361382575. -7976.15286E+898491169 -> 0
-xmul452 multiply -361382575. -7976.15286E+898491169 -> 2.88244266E+898491181 Inexact Rounded
-xpow452 power -361382575. -8 -> 3.43765537E-69 Inexact Rounded
-xrem452 remainder -361382575. -7976.15286E+898491169 -> -361382575
-xsub452 subtract -361382575. -7976.15286E+898491169 -> 7.97615286E+898491172 Inexact Rounded
-xadd453 add 7021805.61 1222952.83 -> 8244758.44
-xcom453 compare 7021805.61 1222952.83 -> 1
-xdiv453 divide 7021805.61 1222952.83 -> 5.74168148 Inexact Rounded
-xdvi453 divideint 7021805.61 1222952.83 -> 5
-xmul453 multiply 7021805.61 1222952.83 -> 8.58733704E+12 Inexact Rounded
-xpow453 power 7021805.61 1222953 -> 1.26540553E+8372885 Inexact Rounded
-xrem453 remainder 7021805.61 1222952.83 -> 907041.46
-xsub453 subtract 7021805.61 1222952.83 -> 5798852.78
-xadd454 add -40.4811667 -79655.5635 -> -79696.0447 Inexact Rounded
-xcom454 compare -40.4811667 -79655.5635 -> 1
-xdiv454 divide -40.4811667 -79655.5635 -> 0.000508202628 Inexact Rounded
-xdvi454 divideint -40.4811667 -79655.5635 -> 0
-xmul454 multiply -40.4811667 -79655.5635 -> 3224550.14 Inexact Rounded
-xpow454 power -40.4811667 -79656 -> 4.50174275E-128028 Inexact Rounded
-xrem454 remainder -40.4811667 -79655.5635 -> -40.4811667
-xsub454 subtract -40.4811667 -79655.5635 -> 79615.0823 Inexact Rounded
-xadd455 add -8755674.38E+117168177 148.903404 -> -8.75567438E+117168183 Inexact Rounded
-xcom455 compare -8755674.38E+117168177 148.903404 -> -1
-xdiv455 divide -8755674.38E+117168177 148.903404 -> -5.88010357E+117168181 Inexact Rounded
-xdvi455 divideint -8755674.38E+117168177 148.903404 -> NaN Division_impossible
-xmul455 multiply -8755674.38E+117168177 148.903404 -> -1.30374972E+117168186 Inexact Rounded
-xpow455 power -8755674.38E+117168177 149 -> -Infinity Overflow Inexact Rounded
-xrem455 remainder -8755674.38E+117168177 148.903404 -> NaN Division_impossible
-xsub455 subtract -8755674.38E+117168177 148.903404 -> -8.75567438E+117168183 Inexact Rounded
-xadd456 add 34.5329781E+382829392 -45.2177309 -> 3.45329781E+382829393 Inexact Rounded
-xcom456 compare 34.5329781E+382829392 -45.2177309 -> 1
-xdiv456 divide 34.5329781E+382829392 -45.2177309 -> -7.63704357E+382829391 Inexact Rounded
-xdvi456 divideint 34.5329781E+382829392 -45.2177309 -> NaN Division_impossible
-xmul456 multiply 34.5329781E+382829392 -45.2177309 -> -1.56150291E+382829395 Inexact Rounded
-xpow456 power 34.5329781E+382829392 -45 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem456 remainder 34.5329781E+382829392 -45.2177309 -> NaN Division_impossible
-xsub456 subtract 34.5329781E+382829392 -45.2177309 -> 3.45329781E+382829393 Inexact Rounded
-xadd457 add -37958476.0 584367.935 -> -37374108.1 Inexact Rounded
-xcom457 compare -37958476.0 584367.935 -> -1
-xdiv457 divide -37958476.0 584367.935 -> -64.9564662 Inexact Rounded
-xdvi457 divideint -37958476.0 584367.935 -> -64
-xmul457 multiply -37958476.0 584367.935 -> -2.21817162E+13 Inexact Rounded
-xpow457 power -37958476.0 584368 -> 3.20538268E+4429105 Inexact Rounded
-xrem457 remainder -37958476.0 584367.935 -> -558928.160
-xsub457 subtract -37958476.0 584367.935 -> -38542843.9 Inexact Rounded
-xadd458 add 495233.553E-414152215 62352759.2 -> 62352759.2 Inexact Rounded
-xcom458 compare 495233.553E-414152215 62352759.2 -> -1
-xdiv458 divide 495233.553E-414152215 62352759.2 -> 7.94244809E-414152218 Inexact Rounded
-xdvi458 divideint 495233.553E-414152215 62352759.2 -> 0
-xmul458 multiply 495233.553E-414152215 62352759.2 -> 3.08791785E-414152202 Inexact Rounded
-xpow458 power 495233.553E-414152215 62352759 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem458 remainder 495233.553E-414152215 62352759.2 -> 4.95233553E-414152210
-xsub458 subtract 495233.553E-414152215 62352759.2 -> -62352759.2 Inexact Rounded
-xadd459 add -502343060 -96828.994 -> -502439889 Inexact Rounded
-xcom459 compare -502343060 -96828.994 -> -1
-xdiv459 divide -502343060 -96828.994 -> 5187.94050 Inexact Rounded
-xdvi459 divideint -502343060 -96828.994 -> 5187
-xmul459 multiply -502343060 -96828.994 -> 4.86413731E+13 Inexact Rounded
-xpow459 power -502343060 -96829 -> -6.78602119E-842510 Inexact Rounded
-xrem459 remainder -502343060 -96828.994 -> -91068.122
-xsub459 subtract -502343060 -96828.994 -> -502246231 Inexact Rounded
-xadd460 add -22.439639E+916362878 -39.4037681 -> -2.24396390E+916362879 Inexact Rounded
-xcom460 compare -22.439639E+916362878 -39.4037681 -> -1
-xdiv460 divide -22.439639E+916362878 -39.4037681 -> 5.69479521E+916362877 Inexact Rounded
-xdvi460 divideint -22.439639E+916362878 -39.4037681 -> NaN Division_impossible
-xmul460 multiply -22.439639E+916362878 -39.4037681 -> 8.84206331E+916362880 Inexact Rounded
-xpow460 power -22.439639E+916362878 -39 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem460 remainder -22.439639E+916362878 -39.4037681 -> NaN Division_impossible
-xsub460 subtract -22.439639E+916362878 -39.4037681 -> -2.24396390E+916362879 Inexact Rounded
-xadd461 add 718180.587E-957473722 1.66223443 -> 1.66223443 Inexact Rounded
-xcom461 compare 718180.587E-957473722 1.66223443 -> -1
-xdiv461 divide 718180.587E-957473722 1.66223443 -> 4.32057340E-957473717 Inexact Rounded
-xdvi461 divideint 718180.587E-957473722 1.66223443 -> 0
-xmul461 multiply 718180.587E-957473722 1.66223443 -> 1.19378450E-957473716 Inexact Rounded
-xpow461 power 718180.587E-957473722 2 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem461 remainder 718180.587E-957473722 1.66223443 -> 7.18180587E-957473717
-xsub461 subtract 718180.587E-957473722 1.66223443 -> -1.66223443 Inexact Rounded
-xadd462 add -51592.2698 -713885.741 -> -765478.011 Inexact Rounded
-xcom462 compare -51592.2698 -713885.741 -> 1
-xdiv462 divide -51592.2698 -713885.741 -> 0.0722696460 Inexact Rounded
-xdvi462 divideint -51592.2698 -713885.741 -> 0
-xmul462 multiply -51592.2698 -713885.741 -> 3.68309858E+10 Inexact Rounded
-xpow462 power -51592.2698 -713886 -> 6.38576920E-3364249 Inexact Rounded
-xrem462 remainder -51592.2698 -713885.741 -> -51592.2698
-xsub462 subtract -51592.2698 -713885.741 -> 662293.471 Inexact Rounded
-xadd463 add 51.2279848E+80439745 207.55925E+865165070 -> 2.07559250E+865165072 Inexact Rounded
-xcom463 compare 51.2279848E+80439745 207.55925E+865165070 -> -1
-xdiv463 divide 51.2279848E+80439745 207.55925E+865165070 -> 2.46811379E-784725326 Inexact Rounded
-xdvi463 divideint 51.2279848E+80439745 207.55925E+865165070 -> 0
-xmul463 multiply 51.2279848E+80439745 207.55925E+865165070 -> 1.06328421E+945604819 Inexact Rounded
-xpow463 power 51.2279848E+80439745 2 -> 2.62430643E+160879493 Inexact Rounded
-xrem463 remainder 51.2279848E+80439745 207.55925E+865165070 -> 5.12279848E+80439746
-xsub463 subtract 51.2279848E+80439745 207.55925E+865165070 -> -2.07559250E+865165072 Inexact Rounded
-xadd464 add -5983.23468 -39.9544513 -> -6023.18913 Inexact Rounded
-xcom464 compare -5983.23468 -39.9544513 -> -1
-xdiv464 divide -5983.23468 -39.9544513 -> 149.751392 Inexact Rounded
-xdvi464 divideint -5983.23468 -39.9544513 -> 149
-xmul464 multiply -5983.23468 -39.9544513 -> 239056.859 Inexact Rounded
-xpow464 power -5983.23468 -40 -> 8.36678291E-152 Inexact Rounded
-xrem464 remainder -5983.23468 -39.9544513 -> -30.0214363
-xsub464 subtract -5983.23468 -39.9544513 -> -5943.28023 Inexact Rounded
-xadd465 add 921639332.E-917542963 287325.891 -> 287325.891 Inexact Rounded
-xcom465 compare 921639332.E-917542963 287325.891 -> -1
-xdiv465 divide 921639332.E-917542963 287325.891 -> 3.20764456E-917542960 Inexact Rounded
-xdvi465 divideint 921639332.E-917542963 287325.891 -> 0
-xmul465 multiply 921639332.E-917542963 287325.891 -> 2.64810842E-917542949 Inexact Rounded
-xpow465 power 921639332.E-917542963 287326 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem465 remainder 921639332.E-917542963 287325.891 -> 9.21639332E-917542955
-xsub465 subtract 921639332.E-917542963 287325.891 -> -287325.891 Inexact Rounded
-xadd466 add 91095916.8E-787312969 -58643.418E+58189880 -> -5.86434180E+58189884 Inexact Rounded
-xcom466 compare 91095916.8E-787312969 -58643.418E+58189880 -> 1
-xdiv466 divide 91095916.8E-787312969 -58643.418E+58189880 -> -1.55338689E-845502846 Inexact Rounded
-xdvi466 divideint 91095916.8E-787312969 -58643.418E+58189880 -> -0
-xmul466 multiply 91095916.8E-787312969 -58643.418E+58189880 -> -5.34217593E-729123077 Inexact Rounded
-xpow466 power 91095916.8E-787312969 -6 -> Infinity Overflow Inexact Rounded
-xrem466 remainder 91095916.8E-787312969 -58643.418E+58189880 -> 9.10959168E-787312962
-xsub466 subtract 91095916.8E-787312969 -58643.418E+58189880 -> 5.86434180E+58189884 Inexact Rounded
-xadd467 add -6410.5555 -234964259 -> -234970670 Inexact Rounded
-xcom467 compare -6410.5555 -234964259 -> 1
-xdiv467 divide -6410.5555 -234964259 -> 0.0000272831090 Inexact Rounded
-xdvi467 divideint -6410.5555 -234964259 -> 0
-xmul467 multiply -6410.5555 -234964259 -> 1.50625142E+12 Inexact Rounded
-xpow467 power -6410.5555 -234964259 -> -1.27064467E-894484419 Inexact Rounded
-xrem467 remainder -6410.5555 -234964259 -> -6410.5555
-xsub467 subtract -6410.5555 -234964259 -> 234957848 Inexact Rounded
-xadd468 add -5.32711606 -8447286.21 -> -8447291.54 Inexact Rounded
-xcom468 compare -5.32711606 -8447286.21 -> 1
-xdiv468 divide -5.32711606 -8447286.21 -> 6.30630468E-7 Inexact Rounded
-xdvi468 divideint -5.32711606 -8447286.21 -> 0
-xmul468 multiply -5.32711606 -8447286.21 -> 44999674.0 Inexact Rounded
-xpow468 power -5.32711606 -8447286 -> 9.09138728E-6136888 Inexact Rounded
-xrem468 remainder -5.32711606 -8447286.21 -> -5.32711606
-xsub468 subtract -5.32711606 -8447286.21 -> 8447280.88 Inexact Rounded
-xadd469 add -82272171.8 -776.238587E-372690416 -> -82272171.8 Inexact Rounded
-xcom469 compare -82272171.8 -776.238587E-372690416 -> -1
-xdiv469 divide -82272171.8 -776.238587E-372690416 -> 1.05988253E+372690421 Inexact Rounded
-xdvi469 divideint -82272171.8 -776.238587E-372690416 -> NaN Division_impossible
-xmul469 multiply -82272171.8 -776.238587E-372690416 -> 6.38628344E-372690406 Inexact Rounded
-xpow469 power -82272171.8 -8 -> 4.76404994E-64 Inexact Rounded
-xrem469 remainder -82272171.8 -776.238587E-372690416 -> NaN Division_impossible
-xsub469 subtract -82272171.8 -776.238587E-372690416 -> -82272171.8 Inexact Rounded
-xadd470 add 412411244.E-774339264 866452.465 -> 866452.465 Inexact Rounded
-xcom470 compare 412411244.E-774339264 866452.465 -> -1
-xdiv470 divide 412411244.E-774339264 866452.465 -> 4.75976768E-774339262 Inexact Rounded
-xdvi470 divideint 412411244.E-774339264 866452.465 -> 0
-xmul470 multiply 412411244.E-774339264 866452.465 -> 3.57334739E-774339250 Inexact Rounded
-xpow470 power 412411244.E-774339264 866452 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem470 remainder 412411244.E-774339264 866452.465 -> 4.12411244E-774339256
-xsub470 subtract 412411244.E-774339264 866452.465 -> -866452.465 Inexact Rounded
-xadd471 add -103.474598 -3.01660661E-446661257 -> -103.474598 Inexact Rounded
-xcom471 compare -103.474598 -3.01660661E-446661257 -> -1
-xdiv471 divide -103.474598 -3.01660661E-446661257 -> 3.43016546E+446661258 Inexact Rounded
-xdvi471 divideint -103.474598 -3.01660661E-446661257 -> NaN Division_impossible
-xmul471 multiply -103.474598 -3.01660661E-446661257 -> 3.12142156E-446661255 Inexact Rounded
-xpow471 power -103.474598 -3 -> -9.02607123E-7 Inexact Rounded
-xrem471 remainder -103.474598 -3.01660661E-446661257 -> NaN Division_impossible
-xsub471 subtract -103.474598 -3.01660661E-446661257 -> -103.474598 Inexact Rounded
-xadd472 add -31027.8323 -475378186. -> -475409214 Inexact Rounded
-xcom472 compare -31027.8323 -475378186. -> 1
-xdiv472 divide -31027.8323 -475378186. -> 0.0000652697856 Inexact Rounded
-xdvi472 divideint -31027.8323 -475378186. -> 0
-xmul472 multiply -31027.8323 -475378186. -> 1.47499546E+13 Inexact Rounded
-xpow472 power -31027.8323 -475378186 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem472 remainder -31027.8323 -475378186. -> -31027.8323
-xsub472 subtract -31027.8323 -475378186. -> 475347158 Inexact Rounded
-xadd473 add -1199339.72 -5.73068392E+53774632 -> -5.73068392E+53774632 Inexact Rounded
-xcom473 compare -1199339.72 -5.73068392E+53774632 -> 1
-xdiv473 divide -1199339.72 -5.73068392E+53774632 -> 2.09283872E-53774627 Inexact Rounded
-xdvi473 divideint -1199339.72 -5.73068392E+53774632 -> 0
-xmul473 multiply -1199339.72 -5.73068392E+53774632 -> 6.87303685E+53774638 Inexact Rounded
-xpow473 power -1199339.72 -6 -> 3.36005741E-37 Inexact Rounded
-xrem473 remainder -1199339.72 -5.73068392E+53774632 -> -1199339.72
-xsub473 subtract -1199339.72 -5.73068392E+53774632 -> 5.73068392E+53774632 Inexact Rounded
-xadd474 add -732908.930E+364345433 -3486146.26 -> -7.32908930E+364345438 Inexact Rounded
-xcom474 compare -732908.930E+364345433 -3486146.26 -> -1
-xdiv474 divide -732908.930E+364345433 -3486146.26 -> 2.10234705E+364345432 Inexact Rounded
-xdvi474 divideint -732908.930E+364345433 -3486146.26 -> NaN Division_impossible
-xmul474 multiply -732908.930E+364345433 -3486146.26 -> 2.55502773E+364345445 Inexact Rounded
-xpow474 power -732908.930E+364345433 -3486146 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem474 remainder -732908.930E+364345433 -3486146.26 -> NaN Division_impossible
-xsub474 subtract -732908.930E+364345433 -3486146.26 -> -7.32908930E+364345438 Inexact Rounded
-xadd475 add -2376150.83 -46777583.3 -> -49153734.1 Inexact Rounded
-xcom475 compare -2376150.83 -46777583.3 -> 1
-xdiv475 divide -2376150.83 -46777583.3 -> 0.0507967847 Inexact Rounded
-xdvi475 divideint -2376150.83 -46777583.3 -> 0
-xmul475 multiply -2376150.83 -46777583.3 -> 1.11150593E+14 Inexact Rounded
-xpow475 power -2376150.83 -46777583 -> -3.51886193E-298247976 Inexact Rounded
-xrem475 remainder -2376150.83 -46777583.3 -> -2376150.83
-xsub475 subtract -2376150.83 -46777583.3 -> 44401432.5 Inexact Rounded
-xadd476 add 6.3664211 -140854908. -> -140854902 Inexact Rounded
-xcom476 compare 6.3664211 -140854908. -> 1
-xdiv476 divide 6.3664211 -140854908. -> -4.51984328E-8 Inexact Rounded
-xdvi476 divideint 6.3664211 -140854908. -> -0
-xmul476 multiply 6.3664211 -140854908. -> -896741658 Inexact Rounded
-xpow476 power 6.3664211 -140854908 -> 7.25432803E-113232608 Inexact Rounded
-xrem476 remainder 6.3664211 -140854908. -> 6.3664211
-xsub476 subtract 6.3664211 -140854908. -> 140854914 Inexact Rounded
-xadd477 add -15.791522 1902.30210E+90741844 -> 1.90230210E+90741847 Inexact Rounded
-xcom477 compare -15.791522 1902.30210E+90741844 -> -1
-xdiv477 divide -15.791522 1902.30210E+90741844 -> -8.30126929E-90741847 Inexact Rounded
-xdvi477 divideint -15.791522 1902.30210E+90741844 -> -0
-xmul477 multiply -15.791522 1902.30210E+90741844 -> -3.00402455E+90741848 Inexact Rounded
-xpow477 power -15.791522 2 -> 249.372167 Inexact Rounded
-xrem477 remainder -15.791522 1902.30210E+90741844 -> -15.791522
-xsub477 subtract -15.791522 1902.30210E+90741844 -> -1.90230210E+90741847 Inexact Rounded
-xadd478 add 15356.1505E+373950429 2.88020400 -> 1.53561505E+373950433 Inexact Rounded
-xcom478 compare 15356.1505E+373950429 2.88020400 -> 1
-xdiv478 divide 15356.1505E+373950429 2.88020400 -> 5.33161905E+373950432 Inexact Rounded
-xdvi478 divideint 15356.1505E+373950429 2.88020400 -> NaN Division_impossible
-xmul478 multiply 15356.1505E+373950429 2.88020400 -> 4.42288461E+373950433 Inexact Rounded
-xpow478 power 15356.1505E+373950429 3 -> Infinity Overflow Inexact Rounded
-xrem478 remainder 15356.1505E+373950429 2.88020400 -> NaN Division_impossible
-xsub478 subtract 15356.1505E+373950429 2.88020400 -> 1.53561505E+373950433 Inexact Rounded
-xadd479 add -3.12001326E+318884762 9567.21595 -> -3.12001326E+318884762 Inexact Rounded
-xcom479 compare -3.12001326E+318884762 9567.21595 -> -1
-xdiv479 divide -3.12001326E+318884762 9567.21595 -> -3.26115066E+318884758 Inexact Rounded
-xdvi479 divideint -3.12001326E+318884762 9567.21595 -> NaN Division_impossible
-xmul479 multiply -3.12001326E+318884762 9567.21595 -> -2.98498406E+318884766 Inexact Rounded
-xpow479 power -3.12001326E+318884762 9567 -> -Infinity Overflow Inexact Rounded
-xrem479 remainder -3.12001326E+318884762 9567.21595 -> NaN Division_impossible
-xsub479 subtract -3.12001326E+318884762 9567.21595 -> -3.12001326E+318884762 Inexact Rounded
-xadd480 add 49436.6528 751.919517 -> 50188.5723 Inexact Rounded
-xcom480 compare 49436.6528 751.919517 -> 1
-xdiv480 divide 49436.6528 751.919517 -> 65.7472664 Inexact Rounded
-xdvi480 divideint 49436.6528 751.919517 -> 65
-xmul480 multiply 49436.6528 751.919517 -> 37172384.1 Inexact Rounded
-xpow480 power 49436.6528 752 -> 8.41185718E+3529 Inexact Rounded
-xrem480 remainder 49436.6528 751.919517 -> 561.884195
-xsub480 subtract 49436.6528 751.919517 -> 48684.7333 Inexact Rounded
-xadd481 add 552.669453 8.3725760E+16223526 -> 8.37257600E+16223526 Inexact Rounded
-xcom481 compare 552.669453 8.3725760E+16223526 -> -1
-xdiv481 divide 552.669453 8.3725760E+16223526 -> 6.60094878E-16223525 Inexact Rounded
-xdvi481 divideint 552.669453 8.3725760E+16223526 -> 0
-xmul481 multiply 552.669453 8.3725760E+16223526 -> 4.62726700E+16223529 Inexact Rounded
-xpow481 power 552.669453 8 -> 8.70409632E+21 Inexact Rounded
-xrem481 remainder 552.669453 8.3725760E+16223526 -> 552.669453
-xsub481 subtract 552.669453 8.3725760E+16223526 -> -8.37257600E+16223526 Inexact Rounded
-xadd482 add -3266303 453741.520 -> -2812561.48 Rounded
-xcom482 compare -3266303 453741.520 -> -1
-xdiv482 divide -3266303 453741.520 -> -7.19859844 Inexact Rounded
-xdvi482 divideint -3266303 453741.520 -> -7
-xmul482 multiply -3266303 453741.520 -> -1.48205729E+12 Inexact Rounded
-xpow482 power -3266303 453742 -> 1.02497315E+2955701 Inexact Rounded
-xrem482 remainder -3266303 453741.520 -> -90112.360
-xsub482 subtract -3266303 453741.520 -> -3720044.52 Rounded
-xadd483 add 12302757.4 542922.487E+414443353 -> 5.42922487E+414443358 Inexact Rounded
-xcom483 compare 12302757.4 542922.487E+414443353 -> -1
-xdiv483 divide 12302757.4 542922.487E+414443353 -> 2.26602465E-414443352 Inexact Rounded
-xdvi483 divideint 12302757.4 542922.487E+414443353 -> 0
-xmul483 multiply 12302757.4 542922.487E+414443353 -> 6.67944364E+414443365 Inexact Rounded
-xpow483 power 12302757.4 5 -> 2.81846276E+35 Inexact Rounded
-xrem483 remainder 12302757.4 542922.487E+414443353 -> 12302757.4
-xsub483 subtract 12302757.4 542922.487E+414443353 -> -5.42922487E+414443358 Inexact Rounded
-xadd484 add -5670757.79E-784754984 128144.503 -> 128144.503 Inexact Rounded
-xcom484 compare -5670757.79E-784754984 128144.503 -> -1
-xdiv484 divide -5670757.79E-784754984 128144.503 -> -4.42528369E-784754983 Inexact Rounded
-xdvi484 divideint -5670757.79E-784754984 128144.503 -> -0
-xmul484 multiply -5670757.79E-784754984 128144.503 -> -7.26676439E-784754973 Inexact Rounded
-xpow484 power -5670757.79E-784754984 128145 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem484 remainder -5670757.79E-784754984 128144.503 -> -5.67075779E-784754978
-xsub484 subtract -5670757.79E-784754984 128144.503 -> -128144.503 Inexact Rounded
-xadd485 add 22.7721968E+842530698 5223.70462 -> 2.27721968E+842530699 Inexact Rounded
-xcom485 compare 22.7721968E+842530698 5223.70462 -> 1
-xdiv485 divide 22.7721968E+842530698 5223.70462 -> 4.35939596E+842530695 Inexact Rounded
-xdvi485 divideint 22.7721968E+842530698 5223.70462 -> NaN Division_impossible
-xmul485 multiply 22.7721968E+842530698 5223.70462 -> 1.18955230E+842530703 Inexact Rounded
-xpow485 power 22.7721968E+842530698 5224 -> Infinity Overflow Inexact Rounded
-xrem485 remainder 22.7721968E+842530698 5223.70462 -> NaN Division_impossible
-xsub485 subtract 22.7721968E+842530698 5223.70462 -> 2.27721968E+842530699 Inexact Rounded
-xadd486 add 88.5158199E-980164357 325846116 -> 325846116 Inexact Rounded
-xcom486 compare 88.5158199E-980164357 325846116 -> -1
-xdiv486 divide 88.5158199E-980164357 325846116 -> 2.71649148E-980164364 Inexact Rounded
-xdvi486 divideint 88.5158199E-980164357 325846116 -> 0
-xmul486 multiply 88.5158199E-980164357 325846116 -> 2.88425361E-980164347 Inexact Rounded
-xpow486 power 88.5158199E-980164357 325846116 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem486 remainder 88.5158199E-980164357 325846116 -> 8.85158199E-980164356
-xsub486 subtract 88.5158199E-980164357 325846116 -> -325846116 Inexact Rounded
-xadd487 add -22881.0408 5.63661562 -> -22875.4042 Inexact Rounded
-xcom487 compare -22881.0408 5.63661562 -> -1
-xdiv487 divide -22881.0408 5.63661562 -> -4059.35802 Inexact Rounded
-xdvi487 divideint -22881.0408 5.63661562 -> -4059
-xmul487 multiply -22881.0408 5.63661562 -> -128971.632 Inexact Rounded
-xpow487 power -22881.0408 6 -> 1.43500909E+26 Inexact Rounded
-xrem487 remainder -22881.0408 5.63661562 -> -2.01799842
-xsub487 subtract -22881.0408 5.63661562 -> -22886.6774 Inexact Rounded
-xadd488 add -7157.57449 -76.4455519E-85647047 -> -7157.57449 Inexact Rounded
-xcom488 compare -7157.57449 -76.4455519E-85647047 -> -1
-xdiv488 divide -7157.57449 -76.4455519E-85647047 -> 9.36297052E+85647048 Inexact Rounded
-xdvi488 divideint -7157.57449 -76.4455519E-85647047 -> NaN Division_impossible
-xmul488 multiply -7157.57449 -76.4455519E-85647047 -> 5.47164732E-85647042 Inexact Rounded
-xpow488 power -7157.57449 -8 -> 1.45168700E-31 Inexact Rounded
-xrem488 remainder -7157.57449 -76.4455519E-85647047 -> NaN Division_impossible
-xsub488 subtract -7157.57449 -76.4455519E-85647047 -> -7157.57449 Inexact Rounded
-xadd489 add -503113.801 -9715149.82E-612184422 -> -503113.801 Inexact Rounded
-xcom489 compare -503113.801 -9715149.82E-612184422 -> -1
-xdiv489 divide -503113.801 -9715149.82E-612184422 -> 5.17865201E+612184420 Inexact Rounded
-xdvi489 divideint -503113.801 -9715149.82E-612184422 -> NaN Division_impossible
-xmul489 multiply -503113.801 -9715149.82E-612184422 -> 4.88782595E-612184410 Inexact Rounded
-xpow489 power -503113.801 -10 -> 9.62360287E-58 Inexact Rounded
-xrem489 remainder -503113.801 -9715149.82E-612184422 -> NaN Division_impossible
-xsub489 subtract -503113.801 -9715149.82E-612184422 -> -503113.801 Inexact Rounded
-xadd490 add -3066962.41 -55.3096879 -> -3067017.72 Inexact Rounded
-xcom490 compare -3066962.41 -55.3096879 -> -1
-xdiv490 divide -3066962.41 -55.3096879 -> 55450.7271 Inexact Rounded
-xdvi490 divideint -3066962.41 -55.3096879 -> 55450
-xmul490 multiply -3066962.41 -55.3096879 -> 169632734 Inexact Rounded
-xpow490 power -3066962.41 -55 -> -1.70229600E-357 Inexact Rounded
-xrem490 remainder -3066962.41 -55.3096879 -> -40.2159450
-xsub490 subtract -3066962.41 -55.3096879 -> -3066907.10 Inexact Rounded
-xadd491 add -53311.5738E+156608936 -7.45890666 -> -5.33115738E+156608940 Inexact Rounded
-xcom491 compare -53311.5738E+156608936 -7.45890666 -> -1
-xdiv491 divide -53311.5738E+156608936 -7.45890666 -> 7.14737109E+156608939 Inexact Rounded
-xdvi491 divideint -53311.5738E+156608936 -7.45890666 -> NaN Division_impossible
-xmul491 multiply -53311.5738E+156608936 -7.45890666 -> 3.97646053E+156608941 Inexact Rounded
-xpow491 power -53311.5738E+156608936 -7 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem491 remainder -53311.5738E+156608936 -7.45890666 -> NaN Division_impossible
-xsub491 subtract -53311.5738E+156608936 -7.45890666 -> -5.33115738E+156608940 Inexact Rounded
-xadd492 add 998890068. -92.057879 -> 998889976 Inexact Rounded
-xcom492 compare 998890068. -92.057879 -> 1
-xdiv492 divide 998890068. -92.057879 -> -10850674.4 Inexact Rounded
-xdvi492 divideint 998890068. -92.057879 -> -10850674
-xmul492 multiply 998890068. -92.057879 -> -9.19557010E+10 Inexact Rounded
-xpow492 power 998890068. -92 -> 1.10757225E-828 Inexact Rounded
-xrem492 remainder 998890068. -92.057879 -> 33.839554
-xsub492 subtract 998890068. -92.057879 -> 998890160 Inexact Rounded
-xadd493 add 122.495591 -407836028. -> -407835906 Inexact Rounded
-xcom493 compare 122.495591 -407836028. -> 1
-xdiv493 divide 122.495591 -407836028. -> -3.00355002E-7 Inexact Rounded
-xdvi493 divideint 122.495591 -407836028. -> -0
-xmul493 multiply 122.495591 -407836028. -> -4.99581153E+10 Inexact Rounded
-xpow493 power 122.495591 -407836028 -> 4.82463773E-851610754 Inexact Rounded
-xrem493 remainder 122.495591 -407836028. -> 122.495591
-xsub493 subtract 122.495591 -407836028. -> 407836150 Inexact Rounded
-xadd494 add 187098.488 6220.05584E-236541249 -> 187098.488 Inexact Rounded
-xcom494 compare 187098.488 6220.05584E-236541249 -> 1
-xdiv494 divide 187098.488 6220.05584E-236541249 -> 3.00798727E+236541250 Inexact Rounded
-xdvi494 divideint 187098.488 6220.05584E-236541249 -> NaN Division_impossible
-xmul494 multiply 187098.488 6220.05584E-236541249 -> 1.16376304E-236541240 Inexact Rounded
-xpow494 power 187098.488 6 -> 4.28964811E+31 Inexact Rounded
-xrem494 remainder 187098.488 6220.05584E-236541249 -> NaN Division_impossible
-xsub494 subtract 187098.488 6220.05584E-236541249 -> 187098.488 Inexact Rounded
-xadd495 add 4819899.21E+432982550 -727441917 -> 4.81989921E+432982556 Inexact Rounded
-xcom495 compare 4819899.21E+432982550 -727441917 -> 1
-xdiv495 divide 4819899.21E+432982550 -727441917 -> -6.62582001E+432982547 Inexact Rounded
-xdvi495 divideint 4819899.21E+432982550 -727441917 -> NaN Division_impossible
-xmul495 multiply 4819899.21E+432982550 -727441917 -> -3.50619672E+432982565 Inexact Rounded
-xpow495 power 4819899.21E+432982550 -727441917 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem495 remainder 4819899.21E+432982550 -727441917 -> NaN Division_impossible
-xsub495 subtract 4819899.21E+432982550 -727441917 -> 4.81989921E+432982556 Inexact Rounded
-xadd496 add 5770.01020E+507459752 -4208339.33E-129766680 -> 5.77001020E+507459755 Inexact Rounded
-xcom496 compare 5770.01020E+507459752 -4208339.33E-129766680 -> 1
-xdiv496 divide 5770.01020E+507459752 -4208339.33E-129766680 -> -1.37108958E+637226429 Inexact Rounded
-xdvi496 divideint 5770.01020E+507459752 -4208339.33E-129766680 -> NaN Division_impossible
-xmul496 multiply 5770.01020E+507459752 -4208339.33E-129766680 -> -2.42821609E+377693082 Inexact Rounded
-xpow496 power 5770.01020E+507459752 -4 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
-xrem496 remainder 5770.01020E+507459752 -4208339.33E-129766680 -> NaN Division_impossible
-xsub496 subtract 5770.01020E+507459752 -4208339.33E-129766680 -> 5.77001020E+507459755 Inexact Rounded
-xadd497 add -286.371320 710319152 -> 710318866 Inexact Rounded
-xcom497 compare -286.371320 710319152 -> -1
-xdiv497 divide -286.371320 710319152 -> -4.03158664E-7 Inexact Rounded
-xdvi497 divideint -286.371320 710319152 -> -0
-xmul497 multiply -286.371320 710319152 -> -2.03415033E+11 Inexact Rounded
-xpow497 power -286.371320 710319152 -> Infinity Overflow Inexact Rounded
-xrem497 remainder -286.371320 710319152 -> -286.371320
-xsub497 subtract -286.371320 710319152 -> -710319438 Inexact Rounded
-xadd498 add -7.27403536 -481469656E-835183700 -> -7.27403536 Inexact Rounded
-xcom498 compare -7.27403536 -481469656E-835183700 -> -1
-xdiv498 divide -7.27403536 -481469656E-835183700 -> 1.51079830E+835183692 Inexact Rounded
-xdvi498 divideint -7.27403536 -481469656E-835183700 -> NaN Division_impossible
-xmul498 multiply -7.27403536 -481469656E-835183700 -> 3.50222730E-835183691 Inexact Rounded
-xpow498 power -7.27403536 -5 -> -0.0000491046885 Inexact Rounded
-xrem498 remainder -7.27403536 -481469656E-835183700 -> NaN Division_impossible
-xsub498 subtract -7.27403536 -481469656E-835183700 -> -7.27403536 Inexact Rounded
-xadd499 add -6157.74292 -94075286.2E+92555877 -> -9.40752862E+92555884 Inexact Rounded
-xcom499 compare -6157.74292 -94075286.2E+92555877 -> 1
-xdiv499 divide -6157.74292 -94075286.2E+92555877 -> 6.54554790E-92555882 Inexact Rounded
-xdvi499 divideint -6157.74292 -94075286.2E+92555877 -> 0
-xmul499 multiply -6157.74292 -94075286.2E+92555877 -> 5.79291428E+92555888 Inexact Rounded
-xpow499 power -6157.74292 -9 -> -7.85608218E-35 Inexact Rounded
-xrem499 remainder -6157.74292 -94075286.2E+92555877 -> -6157.74292
-xsub499 subtract -6157.74292 -94075286.2E+92555877 -> 9.40752862E+92555884 Inexact Rounded
-xadd500 add -525445087.E+231529167 188227460 -> -5.25445087E+231529175 Inexact Rounded
-xcom500 compare -525445087.E+231529167 188227460 -> -1
-xdiv500 divide -525445087.E+231529167 188227460 -> -2.79154321E+231529167 Inexact Rounded
-xdvi500 divideint -525445087.E+231529167 188227460 -> NaN Division_impossible
-xmul500 multiply -525445087.E+231529167 188227460 -> -9.89031941E+231529183 Inexact Rounded
-xpow500 power -525445087.E+231529167 188227460 -> Infinity Overflow Inexact Rounded
-xrem500 remainder -525445087.E+231529167 188227460 -> NaN Division_impossible
-xsub500 subtract -525445087.E+231529167 188227460 -> -5.25445087E+231529175 Inexact Rounded
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/reduce.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/reduce.decTest
deleted file mode 100644
index cdc06d4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/reduce.decTest
+++ /dev/null
@@ -1,234 +0,0 @@
-------------------------------------------------------------------------
--- reduce.decTest -- remove trailing zeros                            --
--- Copyright (c) IBM Corporation, 2003, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
--- [This used to be called normalize.]
-
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minexponent: -999
-
-redx001 reduce '1'      -> '1'
-redx002 reduce '-1'     -> '-1'
-redx003 reduce '1.00'   -> '1'
-redx004 reduce '-1.00'  -> '-1'
-redx005 reduce '0'      -> '0'
-redx006 reduce '0.00'   -> '0'
-redx007 reduce '00.0'   -> '0'
-redx008 reduce '00.00'  -> '0'
-redx009 reduce '00'     -> '0'
-redx010 reduce '0E+1'   -> '0'
-redx011 reduce '0E+5'   -> '0'
-
-redx012 reduce '-2'     -> '-2'
-redx013 reduce '2'      -> '2'
-redx014 reduce '-2.00'  -> '-2'
-redx015 reduce '2.00'   -> '2'
-redx016 reduce '-0'     -> '-0'
-redx017 reduce '-0.00'  -> '-0'
-redx018 reduce '-00.0'  -> '-0'
-redx019 reduce '-00.00' -> '-0'
-redx020 reduce '-00'    -> '-0'
-redx021 reduce '-0E+5'   -> '-0'
-redx022 reduce '-0E+1'  -> '-0'
-
-redx030 reduce '+0.1'            -> '0.1'
-redx031 reduce '-0.1'            -> '-0.1'
-redx032 reduce '+0.01'           -> '0.01'
-redx033 reduce '-0.01'           -> '-0.01'
-redx034 reduce '+0.001'          -> '0.001'
-redx035 reduce '-0.001'          -> '-0.001'
-redx036 reduce '+0.000001'       -> '0.000001'
-redx037 reduce '-0.000001'       -> '-0.000001'
-redx038 reduce '+0.000000000001' -> '1E-12'
-redx039 reduce '-0.000000000001' -> '-1E-12'
-
-redx041 reduce 1.1        -> 1.1
-redx042 reduce 1.10       -> 1.1
-redx043 reduce 1.100      -> 1.1
-redx044 reduce 1.110      -> 1.11
-redx045 reduce -1.1       -> -1.1
-redx046 reduce -1.10      -> -1.1
-redx047 reduce -1.100     -> -1.1
-redx048 reduce -1.110     -> -1.11
-redx049 reduce 9.9        -> 9.9
-redx050 reduce 9.90       -> 9.9
-redx051 reduce 9.900      -> 9.9
-redx052 reduce 9.990      -> 9.99
-redx053 reduce -9.9       -> -9.9
-redx054 reduce -9.90      -> -9.9
-redx055 reduce -9.900     -> -9.9
-redx056 reduce -9.990     -> -9.99
-
--- some trailing fractional zeros with zeros in units
-redx060 reduce  10.0        -> 1E+1
-redx061 reduce  10.00       -> 1E+1
-redx062 reduce  100.0       -> 1E+2
-redx063 reduce  100.00      -> 1E+2
-redx064 reduce  1.1000E+3   -> 1.1E+3
-redx065 reduce  1.10000E+3  -> 1.1E+3
-redx066 reduce -10.0        -> -1E+1
-redx067 reduce -10.00       -> -1E+1
-redx068 reduce -100.0       -> -1E+2
-redx069 reduce -100.00      -> -1E+2
-redx070 reduce -1.1000E+3   -> -1.1E+3
-redx071 reduce -1.10000E+3  -> -1.1E+3
-
--- some insignificant trailing zeros with positive exponent
-redx080 reduce  10E+1       -> 1E+2
-redx081 reduce  100E+1      -> 1E+3
-redx082 reduce  1.0E+2      -> 1E+2
-redx083 reduce  1.0E+3      -> 1E+3
-redx084 reduce  1.1E+3      -> 1.1E+3
-redx085 reduce  1.00E+3     -> 1E+3
-redx086 reduce  1.10E+3     -> 1.1E+3
-redx087 reduce -10E+1       -> -1E+2
-redx088 reduce -100E+1      -> -1E+3
-redx089 reduce -1.0E+2      -> -1E+2
-redx090 reduce -1.0E+3      -> -1E+3
-redx091 reduce -1.1E+3      -> -1.1E+3
-redx092 reduce -1.00E+3     -> -1E+3
-redx093 reduce -1.10E+3     -> -1.1E+3
-
--- some significant trailing zeros, were we to be trimming
-redx100 reduce  11          -> 11
-redx101 reduce  10          -> 1E+1
-redx102 reduce  10.         -> 1E+1
-redx103 reduce  1.1E+1      -> 11
-redx104 reduce  1.0E+1      -> 1E+1
-redx105 reduce  1.10E+2     -> 1.1E+2
-redx106 reduce  1.00E+2     -> 1E+2
-redx107 reduce  1.100E+3    -> 1.1E+3
-redx108 reduce  1.000E+3    -> 1E+3
-redx109 reduce  1.000000E+6 -> 1E+6
-redx110 reduce -11          -> -11
-redx111 reduce -10          -> -1E+1
-redx112 reduce -10.         -> -1E+1
-redx113 reduce -1.1E+1      -> -11
-redx114 reduce -1.0E+1      -> -1E+1
-redx115 reduce -1.10E+2     -> -1.1E+2
-redx116 reduce -1.00E+2     -> -1E+2
-redx117 reduce -1.100E+3    -> -1.1E+3
-redx118 reduce -1.000E+3    -> -1E+3
-redx119 reduce -1.00000E+5  -> -1E+5
-redx120 reduce -1.000000E+6 -> -1E+6
-redx121 reduce -10.00000E+6 -> -1E+7
-redx122 reduce -100.0000E+6 -> -1E+8
-redx123 reduce -1000.000E+6 -> -1E+9
-redx124 reduce -10000.00E+6 -> -1E+10
-redx125 reduce -100000.0E+6 -> -1E+11
-redx126 reduce -1000000.E+6 -> -1E+12
-
--- examples from decArith
-redx140 reduce '2.1'     ->  '2.1'
-redx141 reduce '-2.0'    ->  '-2'
-redx142 reduce '1.200'   ->  '1.2'
-redx143 reduce '-120'    ->  '-1.2E+2'
-redx144 reduce '120.00'  ->  '1.2E+2'
-redx145 reduce '0.00'    ->  '0'
-
--- overflow tests
-maxexponent: 999999999
-minexponent: -999999999
-precision: 3
-redx160 reduce 9.999E+999999999  ->  Infinity Inexact Overflow Rounded
-redx161 reduce -9.999E+999999999 -> -Infinity Inexact Overflow Rounded
-
--- subnormals and underflow
-precision: 3
-maxexponent: 999
-minexponent: -999
-redx210 reduce  1.00E-999        ->   1E-999
-redx211 reduce  0.1E-999         ->   1E-1000   Subnormal
-redx212 reduce  0.10E-999        ->   1E-1000   Subnormal
-redx213 reduce  0.100E-999       ->   1E-1000   Subnormal Rounded
-redx214 reduce  0.01E-999        ->   1E-1001   Subnormal
--- next is rounded to Emin
-redx215 reduce  0.999E-999       ->   1E-999    Inexact Rounded Subnormal Underflow
-redx216 reduce  0.099E-999       ->   1E-1000   Inexact Rounded Subnormal Underflow
-redx217 reduce  0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
-redx218 reduce  0.001E-999       ->   0         Inexact Rounded Subnormal Underflow Clamped
-redx219 reduce  0.0009E-999      ->   0         Inexact Rounded Subnormal Underflow Clamped
-redx220 reduce  0.0001E-999      ->   0         Inexact Rounded Subnormal Underflow Clamped
-
-redx230 reduce -1.00E-999        ->  -1E-999
-redx231 reduce -0.1E-999         ->  -1E-1000   Subnormal
-redx232 reduce -0.10E-999        ->  -1E-1000   Subnormal
-redx233 reduce -0.100E-999       ->  -1E-1000   Subnormal Rounded
-redx234 reduce -0.01E-999        ->  -1E-1001   Subnormal
--- next is rounded to Emin
-redx235 reduce -0.999E-999       ->  -1E-999    Inexact Rounded Subnormal Underflow
-redx236 reduce -0.099E-999       ->  -1E-1000   Inexact Rounded Subnormal Underflow
-redx237 reduce -0.009E-999       ->  -1E-1001   Inexact Rounded Subnormal Underflow
-redx238 reduce -0.001E-999       ->  -0         Inexact Rounded Subnormal Underflow Clamped
-redx239 reduce -0.0009E-999      ->  -0         Inexact Rounded Subnormal Underflow Clamped
-redx240 reduce -0.0001E-999      ->  -0         Inexact Rounded Subnormal Underflow Clamped
-
--- more reshaping
-precision: 9
-redx260 reduce '56260E-10'   -> '0.000005626'
-redx261 reduce '56260E-5'    -> '0.5626'
-redx262 reduce '56260E-2'    -> '562.6'
-redx263 reduce '56260E-1'    -> '5626'
-redx265 reduce '56260E-0'    -> '5.626E+4'
-redx266 reduce '56260E+0'    -> '5.626E+4'
-redx267 reduce '56260E+1'    -> '5.626E+5'
-redx268 reduce '56260E+2'    -> '5.626E+6'
-redx269 reduce '56260E+3'    -> '5.626E+7'
-redx270 reduce '56260E+4'    -> '5.626E+8'
-redx271 reduce '56260E+5'    -> '5.626E+9'
-redx272 reduce '56260E+6'    -> '5.626E+10'
-redx280 reduce '-56260E-10'  -> '-0.000005626'
-redx281 reduce '-56260E-5'   -> '-0.5626'
-redx282 reduce '-56260E-2'   -> '-562.6'
-redx283 reduce '-56260E-1'   -> '-5626'
-redx285 reduce '-56260E-0'   -> '-5.626E+4'
-redx286 reduce '-56260E+0'   -> '-5.626E+4'
-redx287 reduce '-56260E+1'   -> '-5.626E+5'
-redx288 reduce '-56260E+2'   -> '-5.626E+6'
-redx289 reduce '-56260E+3'   -> '-5.626E+7'
-redx290 reduce '-56260E+4'   -> '-5.626E+8'
-redx291 reduce '-56260E+5'   -> '-5.626E+9'
-redx292 reduce '-56260E+6'   -> '-5.626E+10'
-
--- FL test
-precision: 40
-redx295 reduce 9892345673.0123456780000000000 -> 9892345673.012345678
-
--- specials
-redx820 reduce 'Inf'    -> 'Infinity'
-redx821 reduce '-Inf'   -> '-Infinity'
-redx822 reduce   NaN    ->  NaN
-redx823 reduce  sNaN    ->  NaN    Invalid_operation
-redx824 reduce   NaN101 ->  NaN101
-redx825 reduce  sNaN010 ->  NaN10  Invalid_operation
-redx827 reduce  -NaN    -> -NaN
-redx828 reduce -sNaN    -> -NaN    Invalid_operation
-redx829 reduce  -NaN101 -> -NaN101
-redx830 reduce -sNaN010 -> -NaN10  Invalid_operation
-
--- payload decapitate
-precision: 5
-redx62100 reduce  sNaN1234567890 -> NaN67890  Invalid_operation
-
--- Null test
-redx900 reduce  # -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/remainder.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/remainder.decTest
deleted file mode 100644
index 45ab689..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/remainder.decTest
+++ /dev/null
@@ -1,640 +0,0 @@
-------------------------------------------------------------------------
--- remainder.decTest -- decimal remainder                             --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
--- sanity checks (as base, above)
-remx001 remainder  1     1    ->  0
-remx002 remainder  2     1    ->  0
-remx003 remainder  1     2    ->  1
-remx004 remainder  2     2    ->  0
-remx005 remainder  0     1    ->  0
-remx006 remainder  0     2    ->  0
-remx007 remainder  1     3    ->  1
-remx008 remainder  2     3    ->  2
-remx009 remainder  3     3    ->  0
-
-remx010 remainder  2.4   1    ->  0.4
-remx011 remainder  2.4   -1   ->  0.4
-remx012 remainder  -2.4  1    ->  -0.4
-remx013 remainder  -2.4  -1   ->  -0.4
-remx014 remainder  2.40  1    ->  0.40
-remx015 remainder  2.400 1    ->  0.400
-remx016 remainder  2.4   2    ->  0.4
-remx017 remainder  2.400 2    ->  0.400
-remx018 remainder  2.    2    ->  0
-remx019 remainder  20    20   ->  0
-
-remx020 remainder  187   187    ->  0
-remx021 remainder  5     2      ->  1
-remx022 remainder  5     2.0    ->  1.0
-remx023 remainder  5     2.000  ->  1.000
-remx024 remainder  5     0.200  ->  0.000
-remx025 remainder  5     0.200  ->  0.000
-
-remx030 remainder  1     2      ->  1
-remx031 remainder  1     4      ->  1
-remx032 remainder  1     8      ->  1
-
-remx033 remainder  1     16     ->  1
-remx034 remainder  1     32     ->  1
-remx035 remainder  1     64     ->  1
-remx040 remainder  1    -2      ->  1
-remx041 remainder  1    -4      ->  1
-remx042 remainder  1    -8      ->  1
-remx043 remainder  1    -16     ->  1
-remx044 remainder  1    -32     ->  1
-remx045 remainder  1    -64     ->  1
-remx050 remainder -1     2      ->  -1
-remx051 remainder -1     4      ->  -1
-remx052 remainder -1     8      ->  -1
-remx053 remainder -1     16     ->  -1
-remx054 remainder -1     32     ->  -1
-remx055 remainder -1     64     ->  -1
-remx060 remainder -1    -2      ->  -1
-remx061 remainder -1    -4      ->  -1
-remx062 remainder -1    -8      ->  -1
-remx063 remainder -1    -16     ->  -1
-remx064 remainder -1    -32     ->  -1
-remx065 remainder -1    -64     ->  -1
-
-remx066 remainder  999999999     1  -> 0
-remx067 remainder  999999999.4   1  -> 0.4
-remx068 remainder  999999999.5   1  -> 0.5
-remx069 remainder  999999999.9   1  -> 0.9
-remx070 remainder  999999999.999 1  -> 0.999
-precision: 6
-remx071 remainder  999999999     1  -> NaN Division_impossible
-remx072 remainder  99999999      1  -> NaN Division_impossible
-remx073 remainder  9999999       1  -> NaN Division_impossible
-remx074 remainder  999999        1  -> 0
-remx075 remainder  99999         1  -> 0
-remx076 remainder  9999          1  -> 0
-remx077 remainder  999           1  -> 0
-remx078 remainder  99            1  -> 0
-remx079 remainder  9             1  -> 0
-
-precision: 9
-remx080 remainder  0.            1  -> 0
-remx081 remainder  .0            1  -> 0.0
-remx082 remainder  0.00          1  -> 0.00
-remx083 remainder  0.00E+9       1  -> 0
-remx084 remainder  0.00E+3       1  -> 0
-remx085 remainder  0.00E+2       1  -> 0
-remx086 remainder  0.00E+1       1  -> 0.0
-remx087 remainder  0.00E+0       1  -> 0.00
-remx088 remainder  0.00E-0       1  -> 0.00
-remx089 remainder  0.00E-1       1  -> 0.000
-remx090 remainder  0.00E-2       1  -> 0.0000
-remx091 remainder  0.00E-3       1  -> 0.00000
-remx092 remainder  0.00E-4       1  -> 0.000000
-remx093 remainder  0.00E-5       1  -> 0E-7
-remx094 remainder  0.00E-6       1  -> 0E-8
-remx095 remainder  0.0000E-50    1  -> 0E-54
-
--- Various flavours of remainder by 0
-precision: 9
-maxexponent: 999999999
-minexponent: -999999999
-remx101 remainder  0       0   -> NaN Division_undefined
-remx102 remainder  0      -0   -> NaN Division_undefined
-remx103 remainder -0       0   -> NaN Division_undefined
-remx104 remainder -0      -0   -> NaN Division_undefined
-remx105 remainder  0.0E5   0   -> NaN Division_undefined
-remx106 remainder  0.000   0   -> NaN Division_undefined
--- [Some think this next group should be Division_by_zero exception, but
--- IEEE 854 is explicit that it is Invalid operation .. for
--- remainder-near, anyway]
-remx107 remainder  0.0001  0   -> NaN Invalid_operation
-remx108 remainder  0.01    0   -> NaN Invalid_operation
-remx109 remainder  0.1     0   -> NaN Invalid_operation
-remx110 remainder  1       0   -> NaN Invalid_operation
-remx111 remainder  1       0.0 -> NaN Invalid_operation
-remx112 remainder 10       0.0 -> NaN Invalid_operation
-remx113 remainder 1E+100   0.0 -> NaN Invalid_operation
-remx114 remainder 1E+1000  0   -> NaN Invalid_operation
-remx115 remainder  0.0001 -0   -> NaN Invalid_operation
-remx116 remainder  0.01   -0   -> NaN Invalid_operation
-remx119 remainder  0.1    -0   -> NaN Invalid_operation
-remx120 remainder  1      -0   -> NaN Invalid_operation
-remx121 remainder  1      -0.0 -> NaN Invalid_operation
-remx122 remainder 10      -0.0 -> NaN Invalid_operation
-remx123 remainder 1E+100  -0.0 -> NaN Invalid_operation
-remx124 remainder 1E+1000 -0   -> NaN Invalid_operation
--- and zeros on left
-remx130 remainder  0      1   ->  0
-remx131 remainder  0     -1   ->  0
-remx132 remainder  0.0    1   ->  0.0
-remx133 remainder  0.0   -1   ->  0.0
-remx134 remainder -0      1   -> -0
-remx135 remainder -0     -1   -> -0
-remx136 remainder -0.0    1   -> -0.0
-remx137 remainder -0.0   -1   -> -0.0
-
--- 0.5ers
-remx143 remainder   0.5  2     ->  0.5
-remx144 remainder   0.5  2.1   ->  0.5
-remx145 remainder   0.5  2.01  ->  0.50
-remx146 remainder   0.5  2.001 ->  0.500
-remx147 remainder   0.50 2     ->  0.50
-remx148 remainder   0.50 2.01  ->  0.50
-remx149 remainder   0.50 2.001 ->  0.500
-
--- steadies
-remx150 remainder  1  1   -> 0
-remx151 remainder  1  2   -> 1
-remx152 remainder  1  3   -> 1
-remx153 remainder  1  4   -> 1
-remx154 remainder  1  5   -> 1
-remx155 remainder  1  6   -> 1
-remx156 remainder  1  7   -> 1
-remx157 remainder  1  8   -> 1
-remx158 remainder  1  9   -> 1
-remx159 remainder  1  10  -> 1
-remx160 remainder  1  1   -> 0
-remx161 remainder  2  1   -> 0
-remx162 remainder  3  1   -> 0
-remx163 remainder  4  1   -> 0
-remx164 remainder  5  1   -> 0
-remx165 remainder  6  1   -> 0
-remx166 remainder  7  1   -> 0
-remx167 remainder  8  1   -> 0
-remx168 remainder  9  1   -> 0
-remx169 remainder  10 1   -> 0
-
--- some differences from remainderNear
-remx171 remainder   0.4  1.020 ->  0.400
-remx172 remainder   0.50 1.020 ->  0.500
-remx173 remainder   0.51 1.020 ->  0.510
-remx174 remainder   0.52 1.020 ->  0.520
-remx175 remainder   0.6  1.020 ->  0.600
-
-
--- More flavours of remainder by 0
-maxexponent: 999999999
-minexponent: -999999999
-remx201 remainder  0      0   -> NaN Division_undefined
-remx202 remainder  0.0E5  0   -> NaN Division_undefined
-remx203 remainder  0.000  0   -> NaN Division_undefined
-remx204 remainder  0.0001 0   -> NaN Invalid_operation
-remx205 remainder  0.01   0   -> NaN Invalid_operation
-remx206 remainder  0.1    0   -> NaN Invalid_operation
-remx207 remainder  1      0   -> NaN Invalid_operation
-remx208 remainder  1      0.0 -> NaN Invalid_operation
-remx209 remainder 10      0.0 -> NaN Invalid_operation
-remx210 remainder 1E+100  0.0 -> NaN Invalid_operation
-remx211 remainder 1E+1000 0   -> NaN Invalid_operation
-
--- some differences from remainderNear
-remx231 remainder  -0.4  1.020 -> -0.400
-remx232 remainder  -0.50 1.020 -> -0.500
-remx233 remainder  -0.51 1.020 -> -0.510
-remx234 remainder  -0.52 1.020 -> -0.520
-remx235 remainder  -0.6  1.020 -> -0.600
-
--- high Xs
-remx240 remainder  1E+2  1.00  ->  0.00
-
-
--- test some cases that are close to exponent overflow
-maxexponent: 999999999
-minexponent: -999999999
-remx270 remainder 1 1e999999999    -> 1
-remx271 remainder 1 0.9e999999999  -> 1
-remx272 remainder 1 0.99e999999999 -> 1
-remx273 remainder 1 0.999999999e999999999 -> 1
-remx274 remainder 9e999999999          1 -> NaN Division_impossible
-remx275 remainder 9.9e999999999        1 -> NaN Division_impossible
-remx276 remainder 9.99e999999999       1 -> NaN Division_impossible
-remx277 remainder 9.99999999e999999999 1 -> NaN Division_impossible
-
-remx280 remainder 0.1 9e-999999999       -> NaN Division_impossible
-remx281 remainder 0.1 99e-999999999      -> NaN Division_impossible
-remx282 remainder 0.1 999e-999999999     -> NaN Division_impossible
-
-remx283 remainder 0.1 9e-999999998       -> NaN Division_impossible
-remx284 remainder 0.1 99e-999999998      -> NaN Division_impossible
-remx285 remainder 0.1 999e-999999998     -> NaN Division_impossible
-remx286 remainder 0.1 999e-999999997     -> NaN Division_impossible
-remx287 remainder 0.1 9999e-999999997    -> NaN Division_impossible
-remx288 remainder 0.1 99999e-999999997   -> NaN Division_impossible
-
--- remx3xx are from DiagBigDecimal
-remx301 remainder   1    3     ->  1
-remx302 remainder   5    5     ->  0
-remx303 remainder   13   10    ->  3
-remx304 remainder   13   50    ->  13
-remx305 remainder   13   100   ->  13
-remx306 remainder   13   1000  ->  13
-remx307 remainder   .13    1   ->  0.13
-remx308 remainder   0.133  1   ->  0.133
-remx309 remainder   0.1033 1   ->  0.1033
-remx310 remainder   1.033  1   ->  0.033
-remx311 remainder   10.33  1   ->  0.33
-remx312 remainder   10.33 10   ->  0.33
-remx313 remainder   103.3  1   ->  0.3
-remx314 remainder   133   10   ->  3
-remx315 remainder   1033  10   ->  3
-remx316 remainder   1033  50   ->  33
-remx317 remainder   101.0  3   ->  2.0
-remx318 remainder   102.0  3   ->  0.0
-remx319 remainder   103.0  3   ->  1.0
-remx320 remainder   2.40   1   ->  0.40
-remx321 remainder   2.400  1   ->  0.400
-remx322 remainder   2.4    1   ->  0.4
-remx323 remainder   2.4    2   ->  0.4
-remx324 remainder   2.400  2   ->  0.400
-remx325 remainder   1   0.3    ->  0.1
-remx326 remainder   1   0.30   ->  0.10
-remx327 remainder   1   0.300  ->  0.100
-remx328 remainder   1   0.3000 ->  0.1000
-remx329 remainder   1.0    0.3 ->  0.1
-remx330 remainder   1.00   0.3 ->  0.10
-remx331 remainder   1.000  0.3 ->  0.100
-remx332 remainder   1.0000 0.3 ->  0.1000
-remx333 remainder   0.5  2     ->  0.5
-remx334 remainder   0.5  2.1   ->  0.5
-remx335 remainder   0.5  2.01  ->  0.50
-remx336 remainder   0.5  2.001 ->  0.500
-remx337 remainder   0.50 2     ->  0.50
-remx338 remainder   0.50 2.01  ->  0.50
-remx339 remainder   0.50 2.001 ->  0.500
-
-remx340 remainder   0.5   0.5000001    ->  0.5000000
-remx341 remainder   0.5   0.50000001    ->  0.50000000
-remx342 remainder   0.5   0.500000001    ->  0.500000000
-remx343 remainder   0.5   0.5000000001    ->  0.500000000  Rounded
-remx344 remainder   0.5   0.50000000001    ->  0.500000000  Rounded
-remx345 remainder   0.5   0.4999999    ->  1E-7
-remx346 remainder   0.5   0.49999999    ->  1E-8
-remx347 remainder   0.5   0.499999999    ->  1E-9
-remx348 remainder   0.5   0.4999999999    ->  1E-10
-remx349 remainder   0.5   0.49999999999    ->  1E-11
-remx350 remainder   0.5   0.499999999999    ->  1E-12
-
-remx351 remainder   0.03  7  ->  0.03
-remx352 remainder   5   2    ->  1
-remx353 remainder   4.1   2    ->  0.1
-remx354 remainder   4.01   2    ->  0.01
-remx355 remainder   4.001   2    ->  0.001
-remx356 remainder   4.0001   2    ->  0.0001
-remx357 remainder   4.00001   2    ->  0.00001
-remx358 remainder   4.000001   2    ->  0.000001
-remx359 remainder   4.0000001   2    ->  1E-7
-
-remx360 remainder   1.2   0.7345 ->  0.4655
-remx361 remainder   0.8   12     ->  0.8
-remx362 remainder   0.8   0.2    ->  0.0
-remx363 remainder   0.8   0.3    ->  0.2
-remx364 remainder   0.800   12   ->  0.800
-remx365 remainder   0.800   1.7  ->  0.800
-remx366 remainder   2.400   2    ->  0.400
-
-precision: 6
-remx371 remainder   2.400  2        ->  0.400
-precision: 3
--- long operand, rounded, case
-remx372 remainder   12345678900000 12e+12 -> 3.46E+11 Inexact Rounded
---                  12000000000000
-
-precision: 5
-remx381 remainder 12345  1         ->  0
-remx382 remainder 12345  1.0001    ->  0.7657
-remx383 remainder 12345  1.001     ->  0.668
-remx384 remainder 12345  1.01      ->  0.78
-remx385 remainder 12345  1.1       ->  0.8
-remx386 remainder 12355  4         ->  3
-remx387 remainder 12345  4         ->  1
-remx388 remainder 12355  4.0001    ->  2.6912
-remx389 remainder 12345  4.0001    ->  0.6914
-remx390 remainder 12345  4.9       ->  1.9
-remx391 remainder 12345  4.99      ->  4.73
-remx392 remainder 12345  4.999     ->  2.469
-remx393 remainder 12345  4.9999    ->  0.2469
-remx394 remainder 12345  5         ->  0
-remx395 remainder 12345  5.0001    ->  4.7532
-remx396 remainder 12345  5.001     ->  2.532
-remx397 remainder 12345  5.01      ->  0.36
-remx398 remainder 12345  5.1       ->  3.0
-
-precision: 9
--- the nasty division-by-1 cases
-remx401 remainder   0.5         1   ->  0.5
-remx402 remainder   0.55        1   ->  0.55
-remx403 remainder   0.555       1   ->  0.555
-remx404 remainder   0.5555      1   ->  0.5555
-remx405 remainder   0.55555     1   ->  0.55555
-remx406 remainder   0.555555    1   ->  0.555555
-remx407 remainder   0.5555555   1   ->  0.5555555
-remx408 remainder   0.55555555  1   ->  0.55555555
-remx409 remainder   0.555555555 1   ->  0.555555555
-
--- zero signs
-remx650 remainder  1  1 ->  0
-remx651 remainder -1  1 -> -0
-remx652 remainder  1 -1 ->  0
-remx653 remainder -1 -1 -> -0
-remx654 remainder  0  1 ->  0
-remx655 remainder -0  1 -> -0
-remx656 remainder  0 -1 ->  0
-remx657 remainder -0 -1 -> -0
-remx658 remainder  0.00  1  ->  0.00
-remx659 remainder -0.00  1  -> -0.00
-
--- Specials
-remx680 remainder  Inf  -Inf   ->  NaN Invalid_operation
-remx681 remainder  Inf  -1000  ->  NaN Invalid_operation
-remx682 remainder  Inf  -1     ->  NaN Invalid_operation
-remx683 remainder  Inf   0     ->  NaN Invalid_operation
-remx684 remainder  Inf  -0     ->  NaN Invalid_operation
-remx685 remainder  Inf   1     ->  NaN Invalid_operation
-remx686 remainder  Inf   1000  ->  NaN Invalid_operation
-remx687 remainder  Inf   Inf   ->  NaN Invalid_operation
-remx688 remainder -1000  Inf   -> -1000
-remx689 remainder -Inf   Inf   ->  NaN Invalid_operation
-remx691 remainder -1     Inf   -> -1
-remx692 remainder  0     Inf   ->  0
-remx693 remainder -0     Inf   -> -0
-remx694 remainder  1     Inf   ->  1
-remx695 remainder  1000  Inf   ->  1000
-remx696 remainder  Inf   Inf   ->  NaN Invalid_operation
-
-remx700 remainder -Inf  -Inf   ->  NaN Invalid_operation
-remx701 remainder -Inf  -1000  ->  NaN Invalid_operation
-remx702 remainder -Inf  -1     ->  NaN Invalid_operation
-remx703 remainder -Inf  -0     ->  NaN Invalid_operation
-remx704 remainder -Inf   0     ->  NaN Invalid_operation
-remx705 remainder -Inf   1     ->  NaN Invalid_operation
-remx706 remainder -Inf   1000  ->  NaN Invalid_operation
-remx707 remainder -Inf   Inf   ->  NaN Invalid_operation
-remx708 remainder -Inf  -Inf   ->  NaN Invalid_operation
-remx709 remainder -1000  Inf   -> -1000
-remx710 remainder -1    -Inf   -> -1
-remx711 remainder -0    -Inf   -> -0
-remx712 remainder  0    -Inf   ->  0
-remx713 remainder  1    -Inf   ->  1
-remx714 remainder  1000 -Inf   ->  1000
-remx715 remainder  Inf  -Inf   ->  NaN Invalid_operation
-
-remx721 remainder  NaN -Inf    ->  NaN
-remx722 remainder  NaN -1000   ->  NaN
-remx723 remainder  NaN -1      ->  NaN
-remx724 remainder  NaN -0      ->  NaN
-remx725 remainder -NaN  0      -> -NaN
-remx726 remainder  NaN  1      ->  NaN
-remx727 remainder  NaN  1000   ->  NaN
-remx728 remainder  NaN  Inf    ->  NaN
-remx729 remainder  NaN -NaN    ->  NaN
-remx730 remainder -Inf  NaN    ->  NaN
-remx731 remainder -1000 NaN    ->  NaN
-remx732 remainder -1    NaN    ->  NaN
-remx733 remainder -0   -NaN    -> -NaN
-remx734 remainder  0    NaN    ->  NaN
-remx735 remainder  1   -NaN    -> -NaN
-remx736 remainder  1000 NaN    ->  NaN
-remx737 remainder  Inf  NaN    ->  NaN
-
-remx741 remainder  sNaN -Inf   ->  NaN  Invalid_operation
-remx742 remainder  sNaN -1000  ->  NaN  Invalid_operation
-remx743 remainder -sNaN -1     -> -NaN  Invalid_operation
-remx744 remainder  sNaN -0     ->  NaN  Invalid_operation
-remx745 remainder  sNaN  0     ->  NaN  Invalid_operation
-remx746 remainder  sNaN  1     ->  NaN  Invalid_operation
-remx747 remainder  sNaN  1000  ->  NaN  Invalid_operation
-remx749 remainder  sNaN  NaN   ->  NaN  Invalid_operation
-remx750 remainder  sNaN sNaN   ->  NaN  Invalid_operation
-remx751 remainder  NaN  sNaN   ->  NaN  Invalid_operation
-remx752 remainder -Inf  sNaN   ->  NaN  Invalid_operation
-remx753 remainder -1000 sNaN   ->  NaN  Invalid_operation
-remx754 remainder -1    sNaN   ->  NaN  Invalid_operation
-remx755 remainder -0    sNaN   ->  NaN  Invalid_operation
-remx756 remainder  0    sNaN   ->  NaN  Invalid_operation
-remx757 remainder  1    sNaN   ->  NaN  Invalid_operation
-remx758 remainder  1000 sNaN   ->  NaN  Invalid_operation
-remx759 remainder  Inf -sNaN   -> -NaN  Invalid_operation
-
--- propaging NaNs
-remx760 remainder  NaN1   NaN7   ->  NaN1
-remx761 remainder sNaN2   NaN8   ->  NaN2 Invalid_operation
-remx762 remainder  NaN3  sNaN9   ->  NaN9 Invalid_operation
-remx763 remainder sNaN4  sNaN10  ->  NaN4 Invalid_operation
-remx764 remainder    15   NaN11  ->  NaN11
-remx765 remainder  NaN6   NaN12  ->  NaN6
-remx766 remainder  Inf    NaN13  ->  NaN13
-remx767 remainder  NaN14  -Inf   ->  NaN14
-remx768 remainder    0    NaN15  ->  NaN15
-remx769 remainder  NaN16   -0    ->  NaN16
-
--- test some cases that are close to exponent overflow
-maxexponent: 999999999
-minexponent: -999999999
-remx770 remainder 1 1e999999999    -> 1
-remx771 remainder 1 0.9e999999999  -> 1
-remx772 remainder 1 0.99e999999999 -> 1
-remx773 remainder 1 0.999999999e999999999 -> 1
-remx774 remainder 9e999999999          1 -> NaN Division_impossible
-remx775 remainder 9.9e999999999        1 -> NaN Division_impossible
-remx776 remainder 9.99e999999999       1 -> NaN Division_impossible
-remx777 remainder 9.99999999e999999999 1 -> NaN Division_impossible
-
--- long operand checks
-maxexponent: 999
-minexponent: -999
-precision: 9
-remx801 remainder 12345678000 100 -> 0
-remx802 remainder 1 12345678000   -> 1
-remx803 remainder 1234567800  10  -> 0
-remx804 remainder 1 1234567800    -> 1
-remx805 remainder 1234567890  10  -> 0
-remx806 remainder 1 1234567890    -> 1
-remx807 remainder 1234567891  10  -> 1
-remx808 remainder 1 1234567891    -> 1
-remx809 remainder 12345678901 100 -> 1
-remx810 remainder 1 12345678901   -> 1
-remx811 remainder 1234567896  10  -> 6
-remx812 remainder 1 1234567896    -> 1
-
-precision: 15
-remx821 remainder 12345678000 100 -> 0
-remx822 remainder 1 12345678000   -> 1
-remx823 remainder 1234567800  10  -> 0
-remx824 remainder 1 1234567800    -> 1
-remx825 remainder 1234567890  10  -> 0
-remx826 remainder 1 1234567890    -> 1
-remx827 remainder 1234567891  10  -> 1
-remx828 remainder 1 1234567891    -> 1
-remx829 remainder 12345678901 100 -> 1
-remx830 remainder 1 12345678901   -> 1
-remx831 remainder 1234567896  10  -> 6
-remx832 remainder 1 1234567896    -> 1
-
--- worries from divideint
-precision: 8
-remx840 remainder  100000000.0   1  ->  NaN Division_impossible
-remx841 remainder  100000000.4   1  ->  NaN Division_impossible
-remx842 remainder  100000000.5   1  ->  NaN Division_impossible
-remx843 remainder  100000000.9   1  ->  NaN Division_impossible
-remx844 remainder  100000000.999 1  ->  NaN Division_impossible
-precision: 6
-remx850 remainder  100000003     5  ->  NaN Division_impossible
-remx851 remainder  10000003      5  ->  NaN Division_impossible
-remx852 remainder  1000003       5  ->  3
-remx853 remainder  100003        5  ->  3
-remx854 remainder  10003         5  ->  3
-remx855 remainder  1003          5  ->  3
-remx856 remainder  103           5  ->  3
-remx857 remainder  13            5  ->  3
-remx858 remainder  1             5  ->  1
-
--- Vladimir's cases
-remx860 remainder 123.0e1 10000000000000000 -> 1230
-remx861 remainder 1230    10000000000000000 -> 1230
-remx862 remainder 12.3e2  10000000000000000 -> 1230
-remx863 remainder 1.23e3  10000000000000000 -> 1230
-remx864 remainder 123e1   10000000000000000 -> 1230
-remx870 remainder 123e1    1000000000000000 -> 1230
-remx871 remainder 123e1     100000000000000 -> 1230
-remx872 remainder 123e1      10000000000000 -> 1230
-remx873 remainder 123e1       1000000000000 -> 1230
-remx874 remainder 123e1        100000000000 -> 1230
-remx875 remainder 123e1         10000000000 -> 1230
-remx876 remainder 123e1          1000000000 -> 1230
-remx877 remainder 123e1           100000000 -> 1230
-remx878 remainder 1230            100000000 -> 1230
-remx879 remainder 123e1            10000000 -> 1230
-remx880 remainder 123e1             1000000 -> 1230
-remx881 remainder 123e1              100000 -> 1230
-remx882 remainder 123e1               10000 -> 1230
-remx883 remainder 123e1                1000 ->  230
-remx884 remainder 123e1                 100 ->   30
-remx885 remainder 123e1                  10 ->    0
-remx886 remainder 123e1                   1 ->    0
-
-remx889 remainder 123e1   20000000000000000 -> 1230
-remx890 remainder 123e1    2000000000000000 -> 1230
-remx891 remainder 123e1     200000000000000 -> 1230
-remx892 remainder 123e1      20000000000000 -> 1230
-remx893 remainder 123e1       2000000000000 -> 1230
-remx894 remainder 123e1        200000000000 -> 1230
-remx895 remainder 123e1         20000000000 -> 1230
-remx896 remainder 123e1          2000000000 -> 1230
-remx897 remainder 123e1           200000000 -> 1230
-remx899 remainder 123e1            20000000 -> 1230
-remx900 remainder 123e1             2000000 -> 1230
-remx901 remainder 123e1              200000 -> 1230
-remx902 remainder 123e1               20000 -> 1230
-remx903 remainder 123e1                2000 -> 1230
-remx904 remainder 123e1                 200 ->   30
-remx905 remainder 123e1                  20 ->   10
-remx906 remainder 123e1                   2 ->    0
-
-remx909 remainder 123e1   50000000000000000 -> 1230
-remx910 remainder 123e1    5000000000000000 -> 1230
-remx911 remainder 123e1     500000000000000 -> 1230
-remx912 remainder 123e1      50000000000000 -> 1230
-remx913 remainder 123e1       5000000000000 -> 1230
-remx914 remainder 123e1        500000000000 -> 1230
-remx915 remainder 123e1         50000000000 -> 1230
-remx916 remainder 123e1          5000000000 -> 1230
-remx917 remainder 123e1           500000000 -> 1230
-remx919 remainder 123e1            50000000 -> 1230
-remx920 remainder 123e1             5000000 -> 1230
-remx921 remainder 123e1              500000 -> 1230
-remx922 remainder 123e1               50000 -> 1230
-remx923 remainder 123e1                5000 -> 1230
-remx924 remainder 123e1                 500 ->  230
-remx925 remainder 123e1                  50 ->   30
-remx926 remainder 123e1                   5 ->    0
-
-remx929 remainder 123e1   90000000000000000 -> 1230
-remx930 remainder 123e1    9000000000000000 -> 1230
-remx931 remainder 123e1     900000000000000 -> 1230
-remx932 remainder 123e1      90000000000000 -> 1230
-remx933 remainder 123e1       9000000000000 -> 1230
-remx934 remainder 123e1        900000000000 -> 1230
-remx935 remainder 123e1         90000000000 -> 1230
-remx936 remainder 123e1          9000000000 -> 1230
-remx937 remainder 123e1           900000000 -> 1230
-remx939 remainder 123e1            90000000 -> 1230
-remx940 remainder 123e1             9000000 -> 1230
-remx941 remainder 123e1              900000 -> 1230
-remx942 remainder 123e1               90000 -> 1230
-remx943 remainder 123e1                9000 -> 1230
-remx944 remainder 123e1                 900 ->  330
-remx945 remainder 123e1                  90 ->   60
-remx946 remainder 123e1                   9 ->    6
-
-remx950 remainder 123e1   10000000000000000 -> 1230
-remx951 remainder 123e1   100000000000000000 -> 1230
-remx952 remainder 123e1   1000000000000000000 -> 1230
-remx953 remainder 123e1   10000000000000000000 -> 1230
-remx954 remainder 123e1   100000000000000000000 -> 1230
-remx955 remainder 123e1   1000000000000000000000 -> 1230
-remx956 remainder 123e1   10000000000000000000000 -> 1230
-remx957 remainder 123e1   100000000000000000000000 -> 1230
-remx958 remainder 123e1   1000000000000000000000000 -> 1230
-remx959 remainder 123e1   10000000000000000000000000 -> 1230
-
-remx960 remainder 123e1   19999999999999999 -> 1230
-remx961 remainder 123e1   199999999999999990 -> 1230
-remx962 remainder 123e1   1999999999999999999 -> 1230
-remx963 remainder 123e1   19999999999999999990 -> 1230
-remx964 remainder 123e1   199999999999999999999 -> 1230
-remx965 remainder 123e1   1999999999999999999990 -> 1230
-remx966 remainder 123e1   19999999999999999999999 -> 1230
-remx967 remainder 123e1   199999999999999999999990 -> 1230
-remx968 remainder 123e1   1999999999999999999999999 -> 1230
-remx969 remainder 123e1   19999999999999999999999990 -> 1230
-
-remx970 remainder 1e1   10000000000000000 -> 10
-remx971 remainder 1e1   100000000000000000 -> 10
-remx972 remainder 1e1   1000000000000000000 -> 10
-remx973 remainder 1e1   10000000000000000000 -> 10
-remx974 remainder 1e1   100000000000000000000 -> 10
-remx975 remainder 1e1   1000000000000000000000 -> 10
-remx976 remainder 1e1   10000000000000000000000 -> 10
-remx977 remainder 1e1   100000000000000000000000 -> 10
-remx978 remainder 1e1   1000000000000000000000000 -> 10
-remx979 remainder 1e1   10000000000000000000000000 -> 10
-
-remx980 remainder 123e1 1000E999999 -> 1.23E+3  -- 123E+1 internally
-
--- overflow and underflow tests [from divide]
-precision: 9
-maxexponent: 999999999
-minexponent: -999999999
-remx990 remainder +1.23456789012345E-0 9E+999999999 -> 1.23456789 Inexact Rounded
-remx991 remainder 9E+999999999 +0.23456789012345E-0 -> NaN Division_impossible
-remx992 remainder +0.100 9E+999999999               -> 0.100
-remx993 remainder 9E-999999999 +9.100               -> 9E-999999999
-remx995 remainder -1.23456789012345E-0 9E+999999999 -> -1.23456789 Inexact Rounded
-remx996 remainder 9E+999999999 -0.83456789012345E-0 -> NaN Division_impossible
-remx997 remainder -0.100 9E+999999999               -> -0.100
-remx998 remainder 9E-999999999 -9.100               -> 9E-999999999
-
--- Null tests
-remx1000 remainder 10  # -> NaN Invalid_operation
-remx1001 remainder  # 10 -> NaN Invalid_operation
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/remainderNear.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/remainderNear.decTest
deleted file mode 100644
index c0b94a0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/remainderNear.decTest
+++ /dev/null
@@ -1,572 +0,0 @@
-------------------------------------------------------------------------
--- remainderNear.decTest -- decimal remainder-near (IEEE remainder)   --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
-rmnx001 remaindernear  1     1    ->  0
-rmnx002 remaindernear  2     1    ->  0
-rmnx003 remaindernear  1     2    ->  1
-rmnx004 remaindernear  2     2    ->  0
-rmnx005 remaindernear  0     1    ->  0
-rmnx006 remaindernear  0     2    ->  0
-rmnx007 remaindernear  1     3    ->  1
-rmnx008 remaindernear  2     3    -> -1
-rmnx009 remaindernear  3     3    ->  0
-
-rmnx010 remaindernear  2.4   1    ->  0.4
-rmnx011 remaindernear  2.4   -1   ->  0.4
-rmnx012 remaindernear  -2.4  1    ->  -0.4
-rmnx013 remaindernear  -2.4  -1   ->  -0.4
-rmnx014 remaindernear  2.40  1    ->  0.40
-rmnx015 remaindernear  2.400 1    ->  0.400
-rmnx016 remaindernear  2.4   2    ->  0.4
-rmnx017 remaindernear  2.400 2    ->  0.400
-rmnx018 remaindernear  2.    2    ->  0
-rmnx019 remaindernear  20    20   ->  0
-
-rmnx020 remaindernear  187   187    ->  0
-rmnx021 remaindernear  5     2      ->  1
-rmnx022 remaindernear  5     2.0    ->  1.0
-rmnx023 remaindernear  5     2.000  ->  1.000
-rmnx024 remaindernear  5     0.200  ->  0.000
-rmnx025 remaindernear  5     0.200  ->  0.000
-
-rmnx030 remaindernear  1     2      ->  1
-rmnx031 remaindernear  1     4      ->  1
-rmnx032 remaindernear  1     8      ->  1
-rmnx033 remaindernear  1     16     ->  1
-rmnx034 remaindernear  1     32     ->  1
-rmnx035 remaindernear  1     64     ->  1
-rmnx040 remaindernear  1    -2      ->  1
-rmnx041 remaindernear  1    -4      ->  1
-rmnx042 remaindernear  1    -8      ->  1
-rmnx043 remaindernear  1    -16     ->  1
-rmnx044 remaindernear  1    -32     ->  1
-rmnx045 remaindernear  1    -64     ->  1
-rmnx050 remaindernear -1     2      ->  -1
-rmnx051 remaindernear -1     4      ->  -1
-rmnx052 remaindernear -1     8      ->  -1
-rmnx053 remaindernear -1     16     ->  -1
-rmnx054 remaindernear -1     32     ->  -1
-rmnx055 remaindernear -1     64     ->  -1
-rmnx060 remaindernear -1    -2      ->  -1
-rmnx061 remaindernear -1    -4      ->  -1
-rmnx062 remaindernear -1    -8      ->  -1
-rmnx063 remaindernear -1    -16     ->  -1
-rmnx064 remaindernear -1    -32     ->  -1
-rmnx065 remaindernear -1    -64     ->  -1
-
-rmnx066 remaindernear  999999997     1  -> 0
-rmnx067 remaindernear  999999997.4   1  -> 0.4
-rmnx068 remaindernear  999999997.5   1  -> -0.5
-rmnx069 remaindernear  999999997.9   1  -> -0.1
-rmnx070 remaindernear  999999997.999 1  -> -0.001
-
-rmnx071 remaindernear  999999998     1  -> 0
-rmnx072 remaindernear  999999998.4   1  -> 0.4
-rmnx073 remaindernear  999999998.5   1  -> 0.5
-rmnx074 remaindernear  999999998.9   1  -> -0.1
-rmnx075 remaindernear  999999998.999 1  -> -0.001
-
-rmnx076 remaindernear  999999999     1  -> 0
-rmnx077 remaindernear  999999999.4   1  -> 0.4
-rmnx078 remaindernear  999999999.5   1  -> NaN Division_impossible
-rmnx079 remaindernear  999999999.9   1  -> NaN Division_impossible
-rmnx080 remaindernear  999999999.999 1  -> NaN Division_impossible
-
-precision: 6
-rmnx081 remaindernear  999999999     1  -> NaN Division_impossible
-rmnx082 remaindernear  99999999      1  -> NaN Division_impossible
-rmnx083 remaindernear  9999999       1  -> NaN Division_impossible
-rmnx084 remaindernear  999999        1  -> 0
-rmnx085 remaindernear  99999         1  -> 0
-rmnx086 remaindernear  9999          1  -> 0
-rmnx087 remaindernear  999           1  -> 0
-rmnx088 remaindernear  99            1  -> 0
-rmnx089 remaindernear  9             1  -> 0
-
-precision: 9
-rmnx090 remaindernear  0.            1  -> 0
-rmnx091 remaindernear  .0            1  -> 0.0
-rmnx092 remaindernear  0.00          1  -> 0.00
-rmnx093 remaindernear  0.00E+9       1  -> 0
-rmnx094 remaindernear  0.0000E-50    1  -> 0E-54
-
-
--- Various flavours of remaindernear by 0
-precision: 9
-maxexponent: 999999999
-minexponent: -999999999
-rmnx101 remaindernear  0       0   -> NaN Division_undefined
-rmnx102 remaindernear  0      -0   -> NaN Division_undefined
-rmnx103 remaindernear -0       0   -> NaN Division_undefined
-rmnx104 remaindernear -0      -0   -> NaN Division_undefined
-rmnx105 remaindernear  0.0E5   0   -> NaN Division_undefined
-rmnx106 remaindernear  0.000   0   -> NaN Division_undefined
--- [Some think this next group should be Division_by_zero exception,
--- but IEEE 854 is explicit that it is Invalid operation .. for
--- remaindernear-near, anyway]
-rmnx107 remaindernear  0.0001  0   -> NaN Invalid_operation
-rmnx108 remaindernear  0.01    0   -> NaN Invalid_operation
-rmnx109 remaindernear  0.1     0   -> NaN Invalid_operation
-rmnx110 remaindernear  1       0   -> NaN Invalid_operation
-rmnx111 remaindernear  1       0.0 -> NaN Invalid_operation
-rmnx112 remaindernear 10       0.0 -> NaN Invalid_operation
-rmnx113 remaindernear 1E+100   0.0 -> NaN Invalid_operation
-rmnx114 remaindernear 1E+1000  0   -> NaN Invalid_operation
-rmnx115 remaindernear  0.0001 -0   -> NaN Invalid_operation
-rmnx116 remaindernear  0.01   -0   -> NaN Invalid_operation
-rmnx119 remaindernear  0.1    -0   -> NaN Invalid_operation
-rmnx120 remaindernear  1      -0   -> NaN Invalid_operation
-rmnx121 remaindernear  1      -0.0 -> NaN Invalid_operation
-rmnx122 remaindernear 10      -0.0 -> NaN Invalid_operation
-rmnx123 remaindernear 1E+100  -0.0 -> NaN Invalid_operation
-rmnx124 remaindernear 1E+1000 -0   -> NaN Invalid_operation
--- and zeros on left
-rmnx130 remaindernear  0      1   ->  0
-rmnx131 remaindernear  0     -1   ->  0
-rmnx132 remaindernear  0.0    1   ->  0.0
-rmnx133 remaindernear  0.0   -1   ->  0.0
-rmnx134 remaindernear -0      1   -> -0
-rmnx135 remaindernear -0     -1   -> -0
-rmnx136 remaindernear -0.0    1   -> -0.0
-rmnx137 remaindernear -0.0   -1   -> -0.0
-
--- 0.5ers
-rmmx143 remaindernear   0.5  2     ->  0.5
-rmmx144 remaindernear   0.5  2.1   ->  0.5
-rmmx145 remaindernear   0.5  2.01  ->  0.50
-rmmx146 remaindernear   0.5  2.001 ->  0.500
-rmmx147 remaindernear   0.50 2     ->  0.50
-rmmx148 remaindernear   0.50 2.01  ->  0.50
-rmmx149 remaindernear   0.50 2.001 ->  0.500
-
--- some differences from remainder
-rmnx150 remaindernear   0.4  1.020 ->  0.400
-rmnx151 remaindernear   0.50 1.020 ->  0.500
-rmnx152 remaindernear   0.51 1.020 ->  0.510
-rmnx153 remaindernear   0.52 1.020 -> -0.500
-rmnx154 remaindernear   0.6  1.020 -> -0.420
-rmnx155 remaindernear   0.49 1     ->  0.49
-rmnx156 remaindernear   0.50 1     ->  0.50
-rmnx157 remaindernear   1.50 1     -> -0.50
-rmnx158 remaindernear   2.50 1     ->  0.50
-rmnx159 remaindernear   9.50 1     -> -0.50
-rmnx160 remaindernear   0.51 1     -> -0.49
-
--- the nasty division-by-1 cases
-rmnx161 remaindernear   0.4         1   ->  0.4
-rmnx162 remaindernear   0.45        1   ->  0.45
-rmnx163 remaindernear   0.455       1   ->  0.455
-rmnx164 remaindernear   0.4555      1   ->  0.4555
-rmnx165 remaindernear   0.45555     1   ->  0.45555
-rmnx166 remaindernear   0.455555    1   ->  0.455555
-rmnx167 remaindernear   0.4555555   1   ->  0.4555555
-rmnx168 remaindernear   0.45555555  1   ->  0.45555555
-rmnx169 remaindernear   0.455555555 1   ->  0.455555555
--- with spill...
-rmnx171 remaindernear   0.5         1   ->  0.5
-rmnx172 remaindernear   0.55        1   -> -0.45
-rmnx173 remaindernear   0.555       1   -> -0.445
-rmnx174 remaindernear   0.5555      1   -> -0.4445
-rmnx175 remaindernear   0.55555     1   -> -0.44445
-rmnx176 remaindernear   0.555555    1   -> -0.444445
-rmnx177 remaindernear   0.5555555   1   -> -0.4444445
-rmnx178 remaindernear   0.55555555  1   -> -0.44444445
-rmnx179 remaindernear   0.555555555 1   -> -0.444444445
-
--- progression
-rmnx180 remaindernear  1  1   -> 0
-rmnx181 remaindernear  1  2   -> 1
-rmnx182 remaindernear  1  3   -> 1
-rmnx183 remaindernear  1  4   -> 1
-rmnx184 remaindernear  1  5   -> 1
-rmnx185 remaindernear  1  6   -> 1
-rmnx186 remaindernear  1  7   -> 1
-rmnx187 remaindernear  1  8   -> 1
-rmnx188 remaindernear  1  9   -> 1
-rmnx189 remaindernear  1  10  -> 1
-rmnx190 remaindernear  1  1   -> 0
-rmnx191 remaindernear  2  1   -> 0
-rmnx192 remaindernear  3  1   -> 0
-rmnx193 remaindernear  4  1   -> 0
-rmnx194 remaindernear  5  1   -> 0
-rmnx195 remaindernear  6  1   -> 0
-rmnx196 remaindernear  7  1   -> 0
-rmnx197 remaindernear  8  1   -> 0
-rmnx198 remaindernear  9  1   -> 0
-rmnx199 remaindernear  10 1   -> 0
-
-
--- Various flavours of remaindernear by 0
-maxexponent: 999999999
-minexponent: -999999999
-rmnx201 remaindernear  0      0   -> NaN Division_undefined
-rmnx202 remaindernear  0.0E5  0   -> NaN Division_undefined
-rmnx203 remaindernear  0.000  0   -> NaN Division_undefined
-rmnx204 remaindernear  0.0001 0   -> NaN Invalid_operation
-rmnx205 remaindernear  0.01   0   -> NaN Invalid_operation
-rmnx206 remaindernear  0.1    0   -> NaN Invalid_operation
-rmnx207 remaindernear  1      0   -> NaN Invalid_operation
-rmnx208 remaindernear  1      0.0 -> NaN Invalid_operation
-rmnx209 remaindernear 10      0.0 -> NaN Invalid_operation
-rmnx210 remaindernear 1E+100  0.0 -> NaN Invalid_operation
-rmnx211 remaindernear 1E+1000 0   -> NaN Invalid_operation
-
--- tests from the extended specification
-rmnx221 remaindernear 2.1     3   -> -0.9
-rmnx222 remaindernear  10     6   -> -2
-rmnx223 remaindernear  10     3   ->  1
-rmnx224 remaindernear -10     3   -> -1
-rmnx225 remaindernear  10.2   1   -> 0.2
-rmnx226 remaindernear  10     0.3 -> 0.1
-rmnx227 remaindernear   3.6   1.3 -> -0.3
-
--- some differences from remainder
-rmnx231 remaindernear   0.4  1.020 ->  0.400
-rmnx232 remaindernear   0.50 1.020 ->  0.500
-rmnx233 remaindernear   0.51 1.020 ->  0.510
-rmnx234 remaindernear   0.52 1.020 -> -0.500
-rmnx235 remaindernear   0.6  1.020 -> -0.420
-
--- test some cases that are close to exponent overflow
-maxexponent: 999999999
-minexponent: -999999999
-rmnx270 remaindernear 1 1e999999999    -> 1
-rmnx271 remaindernear 1 0.9e999999999  -> 1
-rmnx272 remaindernear 1 0.99e999999999 -> 1
-rmnx273 remaindernear 1 0.999999999e999999999 -> 1
-rmnx274 remaindernear 9e999999999          1 -> NaN Division_impossible
-rmnx275 remaindernear 9.9e999999999        1 -> NaN Division_impossible
-rmnx276 remaindernear 9.99e999999999       1 -> NaN Division_impossible
-rmnx277 remaindernear 9.99999999e999999999 1 -> NaN Division_impossible
-
-rmnx280 remaindernear 0.1 9e-999999999       -> NaN Division_impossible
-rmnx281 remaindernear 0.1 99e-999999999      -> NaN Division_impossible
-rmnx282 remaindernear 0.1 999e-999999999     -> NaN Division_impossible
-
-rmnx283 remaindernear 0.1 9e-999999998       -> NaN Division_impossible
-rmnx284 remaindernear 0.1 99e-999999998      -> NaN Division_impossible
-rmnx285 remaindernear 0.1 999e-999999998     -> NaN Division_impossible
-rmnx286 remaindernear 0.1 999e-999999997     -> NaN Division_impossible
-rmnx287 remaindernear 0.1 9999e-999999997    -> NaN Division_impossible
-rmnx288 remaindernear 0.1 99999e-999999997   -> NaN Division_impossible
-
--- rmnx3xx are from DiagBigDecimal
-rmnx301 remaindernear   1    3     ->  1
-rmnx302 remaindernear   5    5     ->  0
-rmnx303 remaindernear   13   10    ->  3
-rmnx304 remaindernear   13   50    ->  13
-rmnx305 remaindernear   13   100   ->  13
-rmnx306 remaindernear   13   1000  ->  13
-rmnx307 remaindernear   .13    1   ->  0.13
-rmnx308 remaindernear   0.133  1   ->  0.133
-rmnx309 remaindernear   0.1033 1   ->  0.1033
-rmnx310 remaindernear   1.033  1   ->  0.033
-rmnx311 remaindernear   10.33  1   ->  0.33
-rmnx312 remaindernear   10.33 10   ->  0.33
-rmnx313 remaindernear   103.3  1   ->  0.3
-rmnx314 remaindernear   133   10   ->  3
-rmnx315 remaindernear   1033  10   ->  3
-rmnx316 remaindernear   1033  50   -> -17
-rmnx317 remaindernear   101.0  3   -> -1.0
-rmnx318 remaindernear   102.0  3   ->  0.0
-rmnx319 remaindernear   103.0  3   ->  1.0
-rmnx320 remaindernear   2.40   1   ->  0.40
-rmnx321 remaindernear   2.400  1   ->  0.400
-rmnx322 remaindernear   2.4    1   ->  0.4
-rmnx323 remaindernear   2.4    2   ->  0.4
-rmnx324 remaindernear   2.400  2   ->  0.400
-rmnx325 remaindernear   1   0.3    ->  0.1
-rmnx326 remaindernear   1   0.30   ->  0.10
-rmnx327 remaindernear   1   0.300  ->  0.100
-rmnx328 remaindernear   1   0.3000 ->  0.1000
-rmnx329 remaindernear   1.0    0.3 ->  0.1
-rmnx330 remaindernear   1.00   0.3 ->  0.10
-rmnx331 remaindernear   1.000  0.3 ->  0.100
-rmnx332 remaindernear   1.0000 0.3 ->  0.1000
-rmnx333 remaindernear   0.5  2     ->  0.5
-rmnx334 remaindernear   0.5  2.1   ->  0.5
-rmnx335 remaindernear   0.5  2.01  ->  0.50
-rmnx336 remaindernear   0.5  2.001 ->  0.500
-rmnx337 remaindernear   0.50 2     ->  0.50
-rmnx338 remaindernear   0.50 2.01  ->  0.50
-rmnx339 remaindernear   0.50 2.001 ->  0.500
-
-rmnx340 remaindernear   0.5   0.5000001    ->  -1E-7
-rmnx341 remaindernear   0.5   0.50000001    ->  -1E-8
-rmnx342 remaindernear   0.5   0.500000001    ->  -1E-9
-rmnx343 remaindernear   0.5   0.5000000001    ->  -1E-10
-rmnx344 remaindernear   0.5   0.50000000001    ->  -1E-11
-rmnx345 remaindernear   0.5   0.4999999    ->  1E-7
-rmnx346 remaindernear   0.5   0.49999999    ->  1E-8
-rmnx347 remaindernear   0.5   0.499999999    ->  1E-9
-rmnx348 remaindernear   0.5   0.4999999999    ->  1E-10
-rmnx349 remaindernear   0.5   0.49999999999    ->  1E-11
-
-rmnx350 remaindernear   0.03  7  ->  0.03
-rmnx351 remaindernear   5   2    ->  1
-rmnx352 remaindernear   4.1   2    ->  0.1
-rmnx353 remaindernear   4.01   2    ->  0.01
-rmnx354 remaindernear   4.001   2    ->  0.001
-rmnx355 remaindernear   4.0001   2    ->  0.0001
-rmnx356 remaindernear   4.00001   2    ->  0.00001
-rmnx357 remaindernear   4.000001   2    ->  0.000001
-rmnx358 remaindernear   4.0000001   2    ->  1E-7
-
-rmnx360 remaindernear   1.2   0.7345 -> -0.2690
-rmnx361 remaindernear   0.8   12     ->  0.8
-rmnx362 remaindernear   0.8   0.2    ->  0.0
-rmnx363 remaindernear   0.8   0.3    -> -0.1
-rmnx364 remaindernear   0.800   12   ->  0.800
-rmnx365 remaindernear   0.800   1.7  ->  0.800
-rmnx366 remaindernear   2.400   2    ->  0.400
-
-precision: 6
-rmnx371 remaindernear   2.400  2        ->  0.400
-precision: 3
-rmnx372 remaindernear   12345678900000 12e+12 -> 3.46E+11 Inexact Rounded
-
-precision: 5
-rmnx381 remaindernear 12345  1         ->  0
-rmnx382 remaindernear 12345  1.0001    -> -0.2344
-rmnx383 remaindernear 12345  1.001     -> -0.333
-rmnx384 remaindernear 12345  1.01      -> -0.23
-rmnx385 remaindernear 12345  1.1       -> -0.3
-rmnx386 remaindernear 12355  4         -> -1
-rmnx387 remaindernear 12345  4         ->  1
-rmnx388 remaindernear 12355  4.0001    -> -1.3089
-rmnx389 remaindernear 12345  4.0001    ->  0.6914
-rmnx390 remaindernear 12345  4.9       ->  1.9
-rmnx391 remaindernear 12345  4.99      -> -0.26
-rmnx392 remaindernear 12345  4.999     ->  2.469
-rmnx393 remaindernear 12345  4.9999    ->  0.2469
-rmnx394 remaindernear 12345  5         ->  0
-rmnx395 remaindernear 12345  5.0001    -> -0.2469
-rmnx396 remaindernear 12345  5.001     -> -2.469
-rmnx397 remaindernear 12345  5.01      ->  0.36
-rmnx398 remaindernear 12345  5.1       -> -2.1
-
-precision: 9
--- some nasty division-by-1 cases [some similar above]
-rmnx401 remaindernear   0.4         1   ->  0.4
-rmnx402 remaindernear   0.45        1   ->  0.45
-rmnx403 remaindernear   0.455       1   ->  0.455
-rmnx404 remaindernear   0.4555      1   ->  0.4555
-rmnx405 remaindernear   0.45555     1   ->  0.45555
-rmnx406 remaindernear   0.455555    1   ->  0.455555
-rmnx407 remaindernear   0.4555555   1   ->  0.4555555
-rmnx408 remaindernear   0.45555555  1   ->  0.45555555
-rmnx409 remaindernear   0.455555555 1   ->  0.455555555
-
--- some tricky LHSs
-rmnx420 remaindernear   99999999.999999999   1E+8   -> -1E-9
-rmnx421 remaindernear  999999999.999999999   1E+9   -> -1E-9
-precision: 9
-rmnx430 remaindernear   0.455555555 1   ->  0.455555555
-precision: 8
-rmnx431 remaindernear   0.455555555 1   ->  0.45555556 Inexact Rounded
-precision: 7
-rmnx432 remaindernear   0.455555555 1   ->  0.4555556  Inexact Rounded
-precision: 6
-rmnx433 remaindernear   0.455555555 1   ->  0.455556   Inexact Rounded
-precision: 5
-rmnx434 remaindernear   0.455555555 1   ->  0.45556    Inexact Rounded
-precision: 4
-rmnx435 remaindernear   0.455555555 1   ->  0.4556     Inexact Rounded
-precision: 3
-rmnx436 remaindernear   0.455555555 1   ->  0.456      Inexact Rounded
-precision: 2
-rmnx437 remaindernear   0.455555555 1   ->  0.46       Inexact Rounded
-precision: 1
-rmnx438 remaindernear   0.455555555 1   ->  0.5        Inexact Rounded
-
--- early tests; from text descriptions
-precision: 9
-rmnx601 remaindernear  10   6  -> -2
-rmnx602 remaindernear -10   6  -> 2
-rmnx603 remaindernear  11   3  -> -1
-rmnx604 remaindernear  11   5  -> 1
-rmnx605 remaindernear   7.7 8  -> -0.3
-rmnx606 remaindernear  31.5 3  -> 1.5    -- i=10
-rmnx607 remaindernear  34.5 3  -> -1.5   -- i=11
-
--- zero signs
-rmnx650 remaindernear  1  1 ->  0
-rmnx651 remaindernear -1  1 -> -0
-rmnx652 remaindernear  1 -1 ->  0
-rmnx653 remaindernear -1 -1 -> -0
-rmnx654 remaindernear  0  1 ->  0
-rmnx655 remaindernear -0  1 -> -0
-rmnx656 remaindernear  0 -1 ->  0
-rmnx657 remaindernear -0 -1 -> -0
-rmnx658 remaindernear  0.00  1  ->  0.00
-rmnx659 remaindernear -0.00  1  -> -0.00
-
--- Specials
-rmnx680 remaindernear  Inf  -Inf   ->  NaN Invalid_operation
-rmnx681 remaindernear  Inf  -1000  ->  NaN Invalid_operation
-rmnx682 remaindernear  Inf  -1     ->  NaN Invalid_operation
-rmnx683 remaindernear  Inf   0     ->  NaN Invalid_operation
-rmnx684 remaindernear  Inf  -0     ->  NaN Invalid_operation
-rmnx685 remaindernear  Inf   1     ->  NaN Invalid_operation
-rmnx686 remaindernear  Inf   1000  ->  NaN Invalid_operation
-rmnx687 remaindernear  Inf   Inf   ->  NaN Invalid_operation
-rmnx688 remaindernear -1000  Inf   -> -1000
-rmnx689 remaindernear -Inf   Inf   ->  NaN Invalid_operation
-rmnx691 remaindernear -1     Inf   -> -1
-rmnx692 remaindernear  0     Inf   ->  0
-rmnx693 remaindernear -0     Inf   -> -0
-rmnx694 remaindernear  1     Inf   ->  1
-rmnx695 remaindernear  1000  Inf   ->  1000
-rmnx696 remaindernear  Inf   Inf   ->  NaN Invalid_operation
-
-rmnx700 remaindernear -Inf  -Inf   ->  NaN Invalid_operation
-rmnx701 remaindernear -Inf  -1000  ->  NaN Invalid_operation
-rmnx702 remaindernear -Inf  -1     ->  NaN Invalid_operation
-rmnx703 remaindernear -Inf  -0     ->  NaN Invalid_operation
-rmnx704 remaindernear -Inf   0     ->  NaN Invalid_operation
-rmnx705 remaindernear -Inf   1     ->  NaN Invalid_operation
-rmnx706 remaindernear -Inf   1000  ->  NaN Invalid_operation
-rmnx707 remaindernear -Inf   Inf   ->  NaN Invalid_operation
-rmnx708 remaindernear -Inf  -Inf   ->  NaN Invalid_operation
-rmnx709 remaindernear -1000  Inf   -> -1000
-rmnx710 remaindernear -1    -Inf   -> -1
-rmnx711 remaindernear -0    -Inf   -> -0
-rmnx712 remaindernear  0    -Inf   ->  0
-rmnx713 remaindernear  1    -Inf   ->  1
-rmnx714 remaindernear  1000 -Inf   ->  1000
-rmnx715 remaindernear  Inf  -Inf   ->  NaN Invalid_operation
-
-rmnx721 remaindernear  NaN -Inf    ->  NaN
-rmnx722 remaindernear  NaN -1000   ->  NaN
-rmnx723 remaindernear  NaN -1      ->  NaN
-rmnx724 remaindernear  NaN -0      ->  NaN
-rmnx725 remaindernear  NaN  0      ->  NaN
-rmnx726 remaindernear  NaN  1      ->  NaN
-rmnx727 remaindernear  NaN  1000   ->  NaN
-rmnx728 remaindernear  NaN  Inf    ->  NaN
-rmnx729 remaindernear  NaN  NaN    ->  NaN
-rmnx730 remaindernear -Inf  NaN    ->  NaN
-rmnx731 remaindernear -1000 NaN    ->  NaN
-rmnx732 remaindernear -1   -NaN    -> -NaN
-rmnx733 remaindernear -0    NaN    ->  NaN
-rmnx734 remaindernear  0    NaN    ->  NaN
-rmnx735 remaindernear  1    NaN    ->  NaN
-rmnx736 remaindernear  1000 NaN    ->  NaN
-rmnx737 remaindernear  Inf  NaN    ->  NaN
-
-rmnx741 remaindernear  sNaN -Inf   ->  NaN  Invalid_operation
-rmnx742 remaindernear  sNaN -1000  ->  NaN  Invalid_operation
-rmnx743 remaindernear -sNaN -1     -> -NaN  Invalid_operation
-rmnx744 remaindernear  sNaN -0     ->  NaN  Invalid_operation
-rmnx745 remaindernear  sNaN  0     ->  NaN  Invalid_operation
-rmnx746 remaindernear  sNaN  1     ->  NaN  Invalid_operation
-rmnx747 remaindernear  sNaN  1000  ->  NaN  Invalid_operation
-rmnx749 remaindernear  sNaN  NaN   ->  NaN  Invalid_operation
-rmnx750 remaindernear  sNaN sNaN   ->  NaN  Invalid_operation
-rmnx751 remaindernear  NaN  sNaN   ->  NaN  Invalid_operation
-rmnx752 remaindernear -Inf  sNaN   ->  NaN  Invalid_operation
-rmnx753 remaindernear -1000 sNaN   ->  NaN  Invalid_operation
-rmnx754 remaindernear -1    sNaN   ->  NaN  Invalid_operation
-rmnx755 remaindernear -0   -sNaN   -> -NaN  Invalid_operation
-rmnx756 remaindernear  0    sNaN   ->  NaN  Invalid_operation
-rmnx757 remaindernear  1    sNaN   ->  NaN  Invalid_operation
-rmnx758 remaindernear  1000 sNaN   ->  NaN  Invalid_operation
-rmnx759 remaindernear  Inf  sNaN   ->  NaN  Invalid_operation
-rmnx760 remaindernear  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propaging NaNs
-rmnx761 remaindernear  NaN1   NaN7   ->  NaN1
-rmnx762 remaindernear sNaN2   NaN8   ->  NaN2 Invalid_operation
-rmnx763 remaindernear  NaN3 -sNaN9   -> -NaN9 Invalid_operation
-rmnx764 remaindernear sNaN4  sNaN10  ->  NaN4 Invalid_operation
-rmnx765 remaindernear    15   NaN11  ->  NaN11
-rmnx766 remaindernear  NaN6   NaN12  ->  NaN6
-rmnx767 remaindernear  Inf   -NaN13  -> -NaN13
-rmnx768 remaindernear  NaN14  -Inf   ->  NaN14
-rmnx769 remaindernear    0    NaN15  ->  NaN15
-rmnx770 remaindernear -NaN16   -0    -> -NaN16
-
--- test some cases that are close to exponent overflow
-maxexponent: 999999999
-minexponent: -999999999
-rmnx780 remaindernear 1 1e999999999    -> 1
-rmnx781 remaindernear 1 0.9e999999999  -> 1
-rmnx782 remaindernear 1 0.99e999999999 -> 1
-rmnx783 remaindernear 1 0.999999999e999999999 -> 1
-rmnx784 remaindernear 9e999999999          1 -> NaN Division_impossible
-rmnx785 remaindernear 9.9e999999999        1 -> NaN Division_impossible
-rmnx786 remaindernear 9.99e999999999       1 -> NaN Division_impossible
-rmnx787 remaindernear 9.99999999e999999999 1 -> NaN Division_impossible
-
-
--- overflow and underflow tests [from divide]
-precision: 9
-maxexponent: 999999999
-minexponent: -999999999
-rmnx790 remaindernear +1.23456789012345E-0 9E+999999999 -> 1.23456789 Inexact Rounded
-rmnx791 remaindernear 9E+999999999 +0.23456789012345E-0 -> NaN Division_impossible
-rmnx792 remaindernear +0.100 9E+999999999               -> 0.100
-rmnx793 remaindernear 9E-999999999 +9.100               -> 9E-999999999
-rmnx795 remaindernear -1.23456789012345E-0 9E+999999999 -> -1.23456789 Inexact Rounded
-rmnx796 remaindernear 9E+999999999 -0.83456789012345E-0 -> NaN Division_impossible
-rmnx797 remaindernear -0.100 9E+999999999               -> -0.100
-rmnx798 remaindernear 9E-999999999 -9.100               -> 9E-999999999
-
--- long operands checks
-maxexponent: 999
-minexponent: -999
-precision: 9
-rmnx801 remaindernear 12345678000 100 -> 0
-rmnx802 remaindernear 1 12345678000   -> 1
-rmnx803 remaindernear 1234567800  10  -> 0
-rmnx804 remaindernear 1 1234567800    -> 1
-rmnx805 remaindernear 1234567890  10  -> 0
-rmnx806 remaindernear 1 1234567890    -> 1
-rmnx807 remaindernear 1234567891  10  -> 1
-rmnx808 remaindernear 1 1234567891    -> 1
-rmnx809 remaindernear 12345678901 100 -> 1
-rmnx810 remaindernear 1 12345678901   -> 1
-rmnx811 remaindernear 1234567896  10  -> -4
-rmnx812 remaindernear 1 1234567896    -> 1
-
-precision: 15
-rmnx841 remaindernear 12345678000 100 -> 0
-rmnx842 remaindernear 1 12345678000   -> 1
-rmnx843 remaindernear 1234567800  10  -> 0
-rmnx844 remaindernear 1 1234567800    -> 1
-rmnx845 remaindernear 1234567890  10  -> 0
-rmnx846 remaindernear 1 1234567890    -> 1
-rmnx847 remaindernear 1234567891  10  -> 1
-rmnx848 remaindernear 1 1234567891    -> 1
-rmnx849 remaindernear 12345678901 100 -> 1
-rmnx850 remaindernear 1 12345678901   -> 1
-rmnx851 remaindernear 1234567896  10  -> -4
-rmnx852 remaindernear 1 1234567896    -> 1
-
--- Null tests
-rmnx900 remaindernear 10  # -> NaN Invalid_operation
-rmnx901 remaindernear  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rescale.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rescale.decTest
deleted file mode 100644
index d17cb15..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rescale.decTest
+++ /dev/null
@@ -1,764 +0,0 @@
-------------------------------------------------------------------------
--- rescale.decTest -- decimal rescale operation                       --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- [obsolete]   Quantize.decTest has the improved version
-
--- 2004.03.15 Underflow for quantize is suppressed
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minexponent: -999
-
--- sanity checks
-
-resx001 rescale 0       0   -> 0
-resx002 rescale 1       0   -> 1
-resx003 rescale 0.1    +2   -> 0E+2 Inexact Rounded
-resx005 rescale 0.1    +1   -> 0E+1 Inexact Rounded
-resx006 rescale 0.1     0   -> 0 Inexact Rounded
-resx007 rescale 0.1    -1   -> 0.1
-resx008 rescale 0.1    -2   -> 0.10
-resx009 rescale 0.1    -3   -> 0.100
-resx010 rescale 0.9    +2   -> 0E+2 Inexact Rounded
-resx011 rescale 0.9    +1   -> 0E+1 Inexact Rounded
-resx012 rescale 0.9    +0   -> 1 Inexact Rounded
-resx013 rescale 0.9    -1   -> 0.9
-resx014 rescale 0.9    -2   -> 0.90
-resx015 rescale 0.9    -3   -> 0.900
--- negatives
-resx021 rescale -0      0   -> -0
-resx022 rescale -1      0   -> -1
-resx023 rescale -0.1   +2   -> -0E+2 Inexact Rounded
-resx025 rescale -0.1   +1   -> -0E+1 Inexact Rounded
-resx026 rescale -0.1    0   -> -0 Inexact Rounded
-resx027 rescale -0.1   -1   -> -0.1
-resx028 rescale -0.1   -2   -> -0.10
-resx029 rescale -0.1   -3   -> -0.100
-resx030 rescale -0.9   +2   -> -0E+2 Inexact Rounded
-resx031 rescale -0.9   +1   -> -0E+1 Inexact Rounded
-resx032 rescale -0.9   +0   -> -1 Inexact Rounded
-resx033 rescale -0.9   -1   -> -0.9
-resx034 rescale -0.9   -2   -> -0.90
-resx035 rescale -0.9   -3   -> -0.900
-resx036 rescale -0.5   +2   -> -0E+2 Inexact Rounded
-resx037 rescale -0.5   +1   -> -0E+1 Inexact Rounded
-resx038 rescale -0.5   +0   -> -1 Inexact Rounded
-resx039 rescale -0.5   -1   -> -0.5
-resx040 rescale -0.5   -2   -> -0.50
-resx041 rescale -0.5   -3   -> -0.500
-resx042 rescale -0.9   +2   -> -0E+2 Inexact Rounded
-resx043 rescale -0.9   +1   -> -0E+1 Inexact Rounded
-resx044 rescale -0.9   +0   -> -1 Inexact Rounded
-resx045 rescale -0.9   -1   -> -0.9
-resx046 rescale -0.9   -2   -> -0.90
-resx047 rescale -0.9   -3   -> -0.900
-
--- examples from Specification
-resx060 rescale 2.17   -3   -> 2.170
-resx061 rescale 2.17   -2   -> 2.17
-resx062 rescale 2.17   -1   -> 2.2 Inexact Rounded
-resx063 rescale 2.17    0   -> 2 Inexact Rounded
-resx064 rescale 2.17   +1   -> 0E+1 Inexact Rounded
-resx065 rescale 2      Inf  -> NaN Invalid_operation
-resx066 rescale -0.1    0   -> -0 Inexact Rounded
-resx067 rescale -0      5   -> -0E+5
-resx068 rescale +35236450.6 -2 -> NaN Invalid_operation
-resx069 rescale -35236450.6 -2 -> NaN Invalid_operation
-resx070 rescale 217    -1   -> 217.0
-resx071 rescale 217     0   -> 217
-resx072 rescale 217    +1   -> 2.2E+2 Inexact Rounded
-resx073 rescale 217    +2   -> 2E+2 Inexact Rounded
-
--- general tests ..
-resx089 rescale 12     +4   -> 0E+4 Inexact Rounded
-resx090 rescale 12     +3   -> 0E+3 Inexact Rounded
-resx091 rescale 12     +2   -> 0E+2 Inexact Rounded
-resx092 rescale 12     +1   -> 1E+1 Inexact Rounded
-resx093 rescale 1.2345 -2   -> 1.23 Inexact Rounded
-resx094 rescale 1.2355 -2   -> 1.24 Inexact Rounded
-resx095 rescale 1.2345 -6   -> 1.234500
-resx096 rescale 9.9999 -2   -> 10.00 Inexact Rounded
-resx097 rescale 0.0001 -2   -> 0.00 Inexact Rounded
-resx098 rescale 0.001  -2   -> 0.00 Inexact Rounded
-resx099 rescale 0.009  -2   -> 0.01 Inexact Rounded
-resx100 rescale 92     +2   -> 1E+2 Inexact Rounded
-
-resx101 rescale -1      0   ->  -1
-resx102 rescale -1     -1   ->  -1.0
-resx103 rescale -1     -2   ->  -1.00
-resx104 rescale  0      0   ->  0
-resx105 rescale  0     -1   ->  0.0
-resx106 rescale  0     -2   ->  0.00
-resx107 rescale  0.00   0   ->  0
-resx108 rescale  0     +1   ->  0E+1
-resx109 rescale  0     +2   ->  0E+2
-resx110 rescale +1      0   ->  1
-resx111 rescale +1     -1   ->  1.0
-resx112 rescale +1     -2   ->  1.00
-
-resx120 rescale   1.04  -3 ->  1.040
-resx121 rescale   1.04  -2 ->  1.04
-resx122 rescale   1.04  -1 ->  1.0 Inexact Rounded
-resx123 rescale   1.04   0 ->  1 Inexact Rounded
-resx124 rescale   1.05  -3 ->  1.050
-resx125 rescale   1.05  -2 ->  1.05
-resx126 rescale   1.05  -1 ->  1.1 Inexact Rounded
-resx127 rescale   1.05   0 ->  1 Inexact Rounded
-resx128 rescale   1.05  -3 ->  1.050
-resx129 rescale   1.05  -2 ->  1.05
-resx130 rescale   1.05  -1 ->  1.1 Inexact Rounded
-resx131 rescale   1.05   0 ->  1 Inexact Rounded
-resx132 rescale   1.06  -3 ->  1.060
-resx133 rescale   1.06  -2 ->  1.06
-resx134 rescale   1.06  -1 ->  1.1 Inexact Rounded
-resx135 rescale   1.06   0 ->  1 Inexact Rounded
-
-resx140 rescale   -10    -2  ->  -10.00
-resx141 rescale   +1     -2  ->  1.00
-resx142 rescale   +10    -2  ->  10.00
-resx143 rescale   1E+10  -2  ->  NaN Invalid_operation
-resx144 rescale   1E-10  -2  ->  0.00 Inexact Rounded
-resx145 rescale   1E-3   -2  ->  0.00 Inexact Rounded
-resx146 rescale   1E-2   -2  ->  0.01
-resx147 rescale   1E-1   -2  ->  0.10
-resx148 rescale   0E-10  -2  ->  0.00
-
-resx150 rescale   1.0600 -5 ->  1.06000
-resx151 rescale   1.0600 -4 ->  1.0600
-resx152 rescale   1.0600 -3 ->  1.060 Rounded
-resx153 rescale   1.0600 -2 ->  1.06 Rounded
-resx154 rescale   1.0600 -1 ->  1.1 Inexact Rounded
-resx155 rescale   1.0600  0 ->  1 Inexact Rounded
-
--- +ve exponents ..
-resx201 rescale   -1   +0 ->  -1
-resx202 rescale   -1   +1 ->  -0E+1 Inexact Rounded
-resx203 rescale   -1   +2 ->  -0E+2 Inexact Rounded
-resx204 rescale    0   +0 ->  0
-resx205 rescale    0   +1 ->  0E+1
-resx206 rescale    0   +2 ->  0E+2
-resx207 rescale   +1   +0 ->  1
-resx208 rescale   +1   +1 ->  0E+1 Inexact Rounded
-resx209 rescale   +1   +2 ->  0E+2 Inexact Rounded
-
-resx220 rescale   1.04 +3 ->  0E+3 Inexact Rounded
-resx221 rescale   1.04 +2 ->  0E+2 Inexact Rounded
-resx222 rescale   1.04 +1 ->  0E+1 Inexact Rounded
-resx223 rescale   1.04 +0 ->  1 Inexact Rounded
-resx224 rescale   1.05 +3 ->  0E+3 Inexact Rounded
-resx225 rescale   1.05 +2 ->  0E+2 Inexact Rounded
-resx226 rescale   1.05 +1 ->  0E+1 Inexact Rounded
-resx227 rescale   1.05 +0 ->  1 Inexact Rounded
-resx228 rescale   1.05 +3 ->  0E+3 Inexact Rounded
-resx229 rescale   1.05 +2 ->  0E+2 Inexact Rounded
-resx230 rescale   1.05 +1 ->  0E+1 Inexact Rounded
-resx231 rescale   1.05 +0 ->  1 Inexact Rounded
-resx232 rescale   1.06 +3 ->  0E+3 Inexact Rounded
-resx233 rescale   1.06 +2 ->  0E+2 Inexact Rounded
-resx234 rescale   1.06 +1 ->  0E+1 Inexact Rounded
-resx235 rescale   1.06 +0 ->  1 Inexact Rounded
-
-resx240 rescale   -10   +1  ->  -1E+1 Rounded
-resx241 rescale   +1    +1  ->  0E+1 Inexact Rounded
-resx242 rescale   +10   +1  ->  1E+1 Rounded
-resx243 rescale   1E+1  +1  ->  1E+1          -- underneath this is E+1
-resx244 rescale   1E+2  +1  ->  1.0E+2        -- underneath this is E+1
-resx245 rescale   1E+3  +1  ->  1.00E+3       -- underneath this is E+1
-resx246 rescale   1E+4  +1  ->  1.000E+4      -- underneath this is E+1
-resx247 rescale   1E+5  +1  ->  1.0000E+5     -- underneath this is E+1
-resx248 rescale   1E+6  +1  ->  1.00000E+6    -- underneath this is E+1
-resx249 rescale   1E+7  +1  ->  1.000000E+7   -- underneath this is E+1
-resx250 rescale   1E+8  +1  ->  1.0000000E+8  -- underneath this is E+1
-resx251 rescale   1E+9  +1  ->  1.00000000E+9 -- underneath this is E+1
--- next one tries to add 9 zeros
-resx252 rescale   1E+10 +1  ->  NaN Invalid_operation
-resx253 rescale   1E-10 +1  ->  0E+1 Inexact Rounded
-resx254 rescale   1E-2  +1  ->  0E+1 Inexact Rounded
-resx255 rescale   0E-10 +1  ->  0E+1
-resx256 rescale  -0E-10 +1  -> -0E+1
-resx257 rescale  -0E-1  +1  -> -0E+1
-resx258 rescale  -0     +1  -> -0E+1
-resx259 rescale  -0E+1  +1  -> -0E+1
-
-resx260 rescale   -10   +2  ->  -0E+2 Inexact Rounded
-resx261 rescale   +1    +2  ->  0E+2 Inexact Rounded
-resx262 rescale   +10   +2  ->  0E+2 Inexact Rounded
-resx263 rescale   1E+1  +2  ->  0E+2 Inexact Rounded
-resx264 rescale   1E+2  +2  ->  1E+2
-resx265 rescale   1E+3  +2  ->  1.0E+3
-resx266 rescale   1E+4  +2  ->  1.00E+4
-resx267 rescale   1E+5  +2  ->  1.000E+5
-resx268 rescale   1E+6  +2  ->  1.0000E+6
-resx269 rescale   1E+7  +2  ->  1.00000E+7
-resx270 rescale   1E+8  +2  ->  1.000000E+8
-resx271 rescale   1E+9  +2  ->  1.0000000E+9
-resx272 rescale   1E+10 +2  ->  1.00000000E+10
-resx273 rescale   1E-10 +2  ->  0E+2 Inexact Rounded
-resx274 rescale   1E-2  +2  ->  0E+2 Inexact Rounded
-resx275 rescale   0E-10 +2  ->  0E+2
-
-resx280 rescale   -10   +3  ->  -0E+3 Inexact Rounded
-resx281 rescale   +1    +3  ->  0E+3 Inexact Rounded
-resx282 rescale   +10   +3  ->  0E+3 Inexact Rounded
-resx283 rescale   1E+1  +3  ->  0E+3 Inexact Rounded
-resx284 rescale   1E+2  +3  ->  0E+3 Inexact Rounded
-resx285 rescale   1E+3  +3  ->  1E+3
-resx286 rescale   1E+4  +3  ->  1.0E+4
-resx287 rescale   1E+5  +3  ->  1.00E+5
-resx288 rescale   1E+6  +3  ->  1.000E+6
-resx289 rescale   1E+7  +3  ->  1.0000E+7
-resx290 rescale   1E+8  +3  ->  1.00000E+8
-resx291 rescale   1E+9  +3  ->  1.000000E+9
-resx292 rescale   1E+10 +3  ->  1.0000000E+10
-resx293 rescale   1E-10 +3  ->  0E+3 Inexact Rounded
-resx294 rescale   1E-2  +3  ->  0E+3 Inexact Rounded
-resx295 rescale   0E-10 +3  ->  0E+3
-
--- round up from below [sign wrong in JIT compiler once]
-resx300 rescale   0.0078 -5 ->  0.00780
-resx301 rescale   0.0078 -4 ->  0.0078
-resx302 rescale   0.0078 -3 ->  0.008 Inexact Rounded
-resx303 rescale   0.0078 -2 ->  0.01 Inexact Rounded
-resx304 rescale   0.0078 -1 ->  0.0 Inexact Rounded
-resx305 rescale   0.0078  0 ->  0 Inexact Rounded
-resx306 rescale   0.0078 +1 ->  0E+1 Inexact Rounded
-resx307 rescale   0.0078 +2 ->  0E+2 Inexact Rounded
-
-resx310 rescale  -0.0078 -5 -> -0.00780
-resx311 rescale  -0.0078 -4 -> -0.0078
-resx312 rescale  -0.0078 -3 -> -0.008 Inexact Rounded
-resx313 rescale  -0.0078 -2 -> -0.01 Inexact Rounded
-resx314 rescale  -0.0078 -1 -> -0.0 Inexact Rounded
-resx315 rescale  -0.0078  0 -> -0 Inexact Rounded
-resx316 rescale  -0.0078 +1 -> -0E+1 Inexact Rounded
-resx317 rescale  -0.0078 +2 -> -0E+2 Inexact Rounded
-
-resx320 rescale   0.078 -5 ->  0.07800
-resx321 rescale   0.078 -4 ->  0.0780
-resx322 rescale   0.078 -3 ->  0.078
-resx323 rescale   0.078 -2 ->  0.08 Inexact Rounded
-resx324 rescale   0.078 -1 ->  0.1 Inexact Rounded
-resx325 rescale   0.078  0 ->  0 Inexact Rounded
-resx326 rescale   0.078 +1 ->  0E+1 Inexact Rounded
-resx327 rescale   0.078 +2 ->  0E+2 Inexact Rounded
-
-resx330 rescale  -0.078 -5 -> -0.07800
-resx331 rescale  -0.078 -4 -> -0.0780
-resx332 rescale  -0.078 -3 -> -0.078
-resx333 rescale  -0.078 -2 -> -0.08 Inexact Rounded
-resx334 rescale  -0.078 -1 -> -0.1 Inexact Rounded
-resx335 rescale  -0.078  0 -> -0 Inexact Rounded
-resx336 rescale  -0.078 +1 -> -0E+1 Inexact Rounded
-resx337 rescale  -0.078 +2 -> -0E+2 Inexact Rounded
-
-resx340 rescale   0.78 -5 ->  0.78000
-resx341 rescale   0.78 -4 ->  0.7800
-resx342 rescale   0.78 -3 ->  0.780
-resx343 rescale   0.78 -2 ->  0.78
-resx344 rescale   0.78 -1 ->  0.8 Inexact Rounded
-resx345 rescale   0.78  0 ->  1 Inexact Rounded
-resx346 rescale   0.78 +1 ->  0E+1 Inexact Rounded
-resx347 rescale   0.78 +2 ->  0E+2 Inexact Rounded
-
-resx350 rescale  -0.78 -5 -> -0.78000
-resx351 rescale  -0.78 -4 -> -0.7800
-resx352 rescale  -0.78 -3 -> -0.780
-resx353 rescale  -0.78 -2 -> -0.78
-resx354 rescale  -0.78 -1 -> -0.8 Inexact Rounded
-resx355 rescale  -0.78  0 -> -1 Inexact Rounded
-resx356 rescale  -0.78 +1 -> -0E+1 Inexact Rounded
-resx357 rescale  -0.78 +2 -> -0E+2 Inexact Rounded
-
-resx360 rescale   7.8 -5 ->  7.80000
-resx361 rescale   7.8 -4 ->  7.8000
-resx362 rescale   7.8 -3 ->  7.800
-resx363 rescale   7.8 -2 ->  7.80
-resx364 rescale   7.8 -1 ->  7.8
-resx365 rescale   7.8  0 ->  8 Inexact Rounded
-resx366 rescale   7.8 +1 ->  1E+1 Inexact Rounded
-resx367 rescale   7.8 +2 ->  0E+2 Inexact Rounded
-resx368 rescale   7.8 +3 ->  0E+3 Inexact Rounded
-
-resx370 rescale  -7.8 -5 -> -7.80000
-resx371 rescale  -7.8 -4 -> -7.8000
-resx372 rescale  -7.8 -3 -> -7.800
-resx373 rescale  -7.8 -2 -> -7.80
-resx374 rescale  -7.8 -1 -> -7.8
-resx375 rescale  -7.8  0 -> -8 Inexact Rounded
-resx376 rescale  -7.8 +1 -> -1E+1 Inexact Rounded
-resx377 rescale  -7.8 +2 -> -0E+2 Inexact Rounded
-resx378 rescale  -7.8 +3 -> -0E+3 Inexact Rounded
-
--- some individuals
-precision: 9
-resx380 rescale   352364.506 -2 -> 352364.51 Inexact Rounded
-resx381 rescale   3523645.06 -2 -> 3523645.06
-resx382 rescale   35236450.6 -2 -> NaN Invalid_operation
-resx383 rescale   352364506  -2 -> NaN Invalid_operation
-resx384 rescale  -352364.506 -2 -> -352364.51 Inexact Rounded
-resx385 rescale  -3523645.06 -2 -> -3523645.06
-resx386 rescale  -35236450.6 -2 -> NaN Invalid_operation
-resx387 rescale  -352364506  -2 -> NaN Invalid_operation
-
-rounding: down
-resx389 rescale   35236450.6 -2 -> NaN Invalid_operation
--- ? should that one instead have been:
--- resx389 rescale   35236450.6 -2 -> NaN Invalid_operation
-rounding: half_up
-
--- and a few more from e-mail discussions
-precision: 7
-resx391 rescale  12.34567  -3 -> 12.346   Inexact Rounded
-resx392 rescale  123.4567  -3 -> 123.457  Inexact Rounded
-resx393 rescale  1234.567  -3 -> 1234.567
-resx394 rescale  12345.67  -3 -> NaN Invalid_operation
-resx395 rescale  123456.7  -3 -> NaN Invalid_operation
-resx396 rescale  1234567.  -3 -> NaN Invalid_operation
-
--- some 9999 round-up cases
-precision: 9
-resx400 rescale   9.999        -5  ->  9.99900
-resx401 rescale   9.999        -4  ->  9.9990
-resx402 rescale   9.999        -3  ->  9.999
-resx403 rescale   9.999        -2  -> 10.00     Inexact Rounded
-resx404 rescale   9.999        -1  -> 10.0      Inexact Rounded
-resx405 rescale   9.999         0  -> 10        Inexact Rounded
-resx406 rescale   9.999         1  -> 1E+1      Inexact Rounded
-resx407 rescale   9.999         2  -> 0E+2      Inexact Rounded
-
-resx410 rescale   0.999        -5  ->  0.99900
-resx411 rescale   0.999        -4  ->  0.9990
-resx412 rescale   0.999        -3  ->  0.999
-resx413 rescale   0.999        -2  ->  1.00     Inexact Rounded
-resx414 rescale   0.999        -1  ->  1.0      Inexact Rounded
-resx415 rescale   0.999         0  ->  1        Inexact Rounded
-resx416 rescale   0.999         1  -> 0E+1      Inexact Rounded
-
-resx420 rescale   0.0999       -5  ->  0.09990
-resx421 rescale   0.0999       -4  ->  0.0999
-resx422 rescale   0.0999       -3  ->  0.100    Inexact Rounded
-resx423 rescale   0.0999       -2  ->  0.10     Inexact Rounded
-resx424 rescale   0.0999       -1  ->  0.1      Inexact Rounded
-resx425 rescale   0.0999        0  ->  0        Inexact Rounded
-resx426 rescale   0.0999        1  -> 0E+1      Inexact Rounded
-
-resx430 rescale   0.00999      -5  ->  0.00999
-resx431 rescale   0.00999      -4  ->  0.0100   Inexact Rounded
-resx432 rescale   0.00999      -3  ->  0.010    Inexact Rounded
-resx433 rescale   0.00999      -2  ->  0.01     Inexact Rounded
-resx434 rescale   0.00999      -1  ->  0.0      Inexact Rounded
-resx435 rescale   0.00999       0  ->  0        Inexact Rounded
-resx436 rescale   0.00999       1  -> 0E+1      Inexact Rounded
-
-resx440 rescale   0.000999     -5  ->  0.00100  Inexact Rounded
-resx441 rescale   0.000999     -4  ->  0.0010   Inexact Rounded
-resx442 rescale   0.000999     -3  ->  0.001    Inexact Rounded
-resx443 rescale   0.000999     -2  ->  0.00     Inexact Rounded
-resx444 rescale   0.000999     -1  ->  0.0      Inexact Rounded
-resx445 rescale   0.000999      0  ->  0        Inexact Rounded
-resx446 rescale   0.000999      1  -> 0E+1      Inexact Rounded
-
-precision: 8
-resx449 rescale   9.999E-15    -23 ->  NaN      Invalid_operation
-resx450 rescale   9.999E-15    -22 ->  9.9990000E-15
-resx451 rescale   9.999E-15    -21 ->  9.999000E-15
-resx452 rescale   9.999E-15    -20 ->  9.99900E-15
-resx453 rescale   9.999E-15    -19 ->  9.9990E-15
-resx454 rescale   9.999E-15    -18 ->  9.999E-15
-resx455 rescale   9.999E-15    -17 ->  1.000E-14 Inexact Rounded
-resx456 rescale   9.999E-15    -16 ->  1.00E-14  Inexact Rounded
-resx457 rescale   9.999E-15    -15 ->  1.0E-14   Inexact Rounded
-resx458 rescale   9.999E-15    -14 ->  1E-14     Inexact Rounded
-resx459 rescale   9.999E-15    -13 ->  0E-13     Inexact Rounded
-resx460 rescale   9.999E-15    -12 ->  0E-12     Inexact Rounded
-resx461 rescale   9.999E-15    -11 ->  0E-11     Inexact Rounded
-resx462 rescale   9.999E-15    -10 ->  0E-10     Inexact Rounded
-resx463 rescale   9.999E-15     -9 ->  0E-9      Inexact Rounded
-resx464 rescale   9.999E-15     -8 ->  0E-8      Inexact Rounded
-resx465 rescale   9.999E-15     -7 ->  0E-7      Inexact Rounded
-resx466 rescale   9.999E-15     -6 ->  0.000000  Inexact Rounded
-resx467 rescale   9.999E-15     -5 ->  0.00000   Inexact Rounded
-resx468 rescale   9.999E-15     -4 ->  0.0000    Inexact Rounded
-resx469 rescale   9.999E-15     -3 ->  0.000     Inexact Rounded
-resx470 rescale   9.999E-15     -2 ->  0.00      Inexact Rounded
-resx471 rescale   9.999E-15     -1 ->  0.0       Inexact Rounded
-resx472 rescale   9.999E-15      0 ->  0         Inexact Rounded
-resx473 rescale   9.999E-15      1 ->  0E+1      Inexact Rounded
-
--- [additional tests for "don't fit" edge cases are in
--- quantize.decTest.  Here's a critical one.]
-precision: 3
-resx480 rescale   0.9999        -3 ->  NaN       Invalid_operation
-
-
--- long operand checks [rhs checks removed]
-maxexponent: 999
-minexponent: -999
-precision: 9
-resx481 rescale 12345678000 +3 -> 1.2345678E+10 Rounded
-resx482 rescale 1234567800  +1 -> 1.23456780E+9 Rounded
-resx483 rescale 1234567890  +1 -> 1.23456789E+9 Rounded
-resx484 rescale 1234567891  +1 -> 1.23456789E+9 Inexact Rounded
-resx485 rescale 12345678901 +2 -> 1.23456789E+10 Inexact Rounded
-resx486 rescale 1234567896  +1 -> 1.23456790E+9 Inexact Rounded
--- a potential double-round
-resx487 rescale 1234.987643 -4 -> 1234.9876 Inexact Rounded
-resx488 rescale 1234.987647 -4 -> 1234.9876 Inexact Rounded
-
-precision: 15
-resx491 rescale 12345678000 +3 -> 1.2345678E+10 Rounded
-resx492 rescale 1234567800  +1 -> 1.23456780E+9 Rounded
-resx493 rescale 1234567890  +1 -> 1.23456789E+9 Rounded
-resx494 rescale 1234567891  +1 -> 1.23456789E+9 Inexact Rounded
-resx495 rescale 12345678901 +2 -> 1.23456789E+10 Inexact Rounded
-resx496 rescale 1234567896  +1 -> 1.23456790E+9 Inexact Rounded
-resx497 rescale 1234.987643 -4 -> 1234.9876 Inexact Rounded
-resx498 rescale 1234.987647 -4 -> 1234.9876 Inexact Rounded
-
--- Zeros
-resx500 rescale   0     1 ->  0E+1
-resx501 rescale   0     0 ->  0
-resx502 rescale   0    -1 ->  0.0
-resx503 rescale   0.0  -1 ->  0.0
-resx504 rescale   0.0   0 ->  0
-resx505 rescale   0.0  +1 ->  0E+1
-resx506 rescale   0E+1 -1 ->  0.0
-resx507 rescale   0E+1  0 ->  0
-resx508 rescale   0E+1 +1 ->  0E+1
-resx509 rescale  -0     1 -> -0E+1
-resx510 rescale  -0     0 -> -0
-resx511 rescale  -0    -1 -> -0.0
-resx512 rescale  -0.0  -1 -> -0.0
-resx513 rescale  -0.0   0 -> -0
-resx514 rescale  -0.0  +1 -> -0E+1
-resx515 rescale  -0E+1 -1 -> -0.0
-resx516 rescale  -0E+1  0 -> -0
-resx517 rescale  -0E+1 +1 -> -0E+1
-
--- Suspicious RHS values
-maxexponent: 999999999
-minexponent: -999999999
-precision: 15
-resx520 rescale   1.234    999999E+3 -> 0E+999999000 Inexact Rounded
-resx521 rescale 123.456    999999E+3 -> 0E+999999000 Inexact Rounded
-resx522 rescale   1.234    999999999 -> 0E+999999999 Inexact Rounded
-resx523 rescale 123.456    999999999 -> 0E+999999999 Inexact Rounded
-resx524 rescale 123.456   1000000000 -> NaN Invalid_operation
-resx525 rescale 123.456  12345678903 -> NaN Invalid_operation
--- next four are "won't fit" overflows
-resx526 rescale   1.234   -999999E+3 -> NaN Invalid_operation
-resx527 rescale 123.456   -999999E+3 -> NaN Invalid_operation
-resx528 rescale   1.234   -999999999 -> NaN Invalid_operation
-resx529 rescale 123.456   -999999999 -> NaN Invalid_operation
-resx530 rescale 123.456  -1000000014 -> NaN Invalid_operation
-resx531 rescale 123.456 -12345678903 -> NaN Invalid_operation
-
-maxexponent: 999
-minexponent: -999
-precision: 15
-resx532 rescale   1.234E+999    999 -> 1E+999    Inexact Rounded
-resx533 rescale   1.234E+998    999 -> 0E+999    Inexact Rounded
-resx534 rescale   1.234         999 -> 0E+999    Inexact Rounded
-resx535 rescale   1.234        1000 -> NaN Invalid_operation
-resx536 rescale   1.234        5000 -> NaN Invalid_operation
-resx537 rescale   0            -999 -> 0E-999
--- next two are "won't fit" overflows
-resx538 rescale   1.234        -999 -> NaN Invalid_operation
-resx539 rescale   1.234       -1000 -> NaN Invalid_operation
-resx540 rescale   1.234       -5000 -> NaN Invalid_operation
--- [more below]
-
--- check bounds (lhs maybe out of range for destination, etc.)
-precision:     7
-resx541 rescale   1E+999   +999 -> 1E+999
-resx542 rescale   1E+1000  +999 -> NaN Invalid_operation
-resx543 rescale   1E+999  +1000 -> NaN Invalid_operation
-resx544 rescale   1E-999   -999 -> 1E-999
-resx545 rescale   1E-1000  -999 -> 0E-999    Inexact Rounded
-resx546 rescale   1E-999  -1000 -> 1.0E-999
-resx547 rescale   1E-1005  -999 -> 0E-999    Inexact Rounded
-resx548 rescale   1E-1006  -999 -> 0E-999    Inexact Rounded
-resx549 rescale   1E-1007  -999 -> 0E-999    Inexact Rounded
-resx550 rescale   1E-998  -1005 -> NaN Invalid_operation  -- won't fit
-resx551 rescale   1E-999  -1005 -> 1.000000E-999
-resx552 rescale   1E-1000 -1005 -> 1.00000E-1000 Subnormal
-resx553 rescale   1E-999  -1006 -> NaN Invalid_operation
-resx554 rescale   1E-999  -1007 -> NaN Invalid_operation
--- related subnormal rounding
-resx555 rescale   1.666666E-999  -1005 -> 1.666666E-999
-resx556 rescale   1.666666E-1000 -1005 -> 1.66667E-1000  Subnormal Inexact Rounded
-resx557 rescale   1.666666E-1001 -1005 -> 1.6667E-1001  Subnormal Inexact Rounded
-resx558 rescale   1.666666E-1002 -1005 -> 1.667E-1002  Subnormal Inexact Rounded
-resx559 rescale   1.666666E-1003 -1005 -> 1.67E-1003  Subnormal Inexact Rounded
-resx560 rescale   1.666666E-1004 -1005 -> 1.7E-1004  Subnormal Inexact Rounded
-resx561 rescale   1.666666E-1005 -1005 -> 2E-1005  Subnormal Inexact Rounded
-resx562 rescale   1.666666E-1006 -1005 -> 0E-1005   Inexact Rounded
-resx563 rescale   1.666666E-1007 -1005 -> 0E-1005   Inexact Rounded
-
--- fractional RHS, some good and some bad
-precision: 9
-resx564 rescale   222 +2.0           -> 2E+2 Inexact Rounded
-resx565 rescale   222 +2.00000000    -> 2E+2 Inexact Rounded
-resx566 rescale   222 +2.00100000000 -> NaN Invalid_operation
-resx567 rescale   222 +2.000001      -> NaN Invalid_operation
-resx568 rescale   222 +2.000000001   -> NaN Invalid_operation
-resx569 rescale   222 +2.0000000001  -> NaN Invalid_operation
-resx570 rescale   222 +2.00000000001 -> NaN Invalid_operation
-resx571 rescale   222 +2.99999999999 -> NaN Invalid_operation
-resx572 rescale   222 -2.00000000    -> 222.00
-resx573 rescale   222 -2.00100000000 -> NaN Invalid_operation
-resx574 rescale   222 -2.0000001000  -> NaN Invalid_operation
-resx575 rescale   222 -2.00000000001 -> NaN Invalid_operation
-resx576 rescale   222 -2.99999999999 -> NaN Invalid_operation
-
--- Specials
-resx580 rescale  Inf  -Inf   ->  Infinity
-resx581 rescale  Inf  -1000  ->  NaN  Invalid_operation
-resx582 rescale  Inf  -1     ->  NaN  Invalid_operation
-resx583 rescale  Inf   0     ->  NaN  Invalid_operation
-resx584 rescale  Inf   1     ->  NaN  Invalid_operation
-resx585 rescale  Inf   1000  ->  NaN  Invalid_operation
-resx586 rescale  Inf   Inf   ->  Infinity
-resx587 rescale -1000  Inf   ->  NaN  Invalid_operation
-resx588 rescale -Inf   Inf   ->  -Infinity
-resx589 rescale -1     Inf   ->  NaN  Invalid_operation
-resx590 rescale  0     Inf   ->  NaN  Invalid_operation
-resx591 rescale  1     Inf   ->  NaN  Invalid_operation
-resx592 rescale  1000  Inf   ->  NaN  Invalid_operation
-resx593 rescale  Inf   Inf   ->  Infinity
-resx594 rescale  Inf  -0     ->  NaN  Invalid_operation
-resx595 rescale -0     Inf   ->  NaN  Invalid_operation
-
-resx600 rescale -Inf  -Inf   ->  -Infinity
-resx601 rescale -Inf  -1000  ->  NaN  Invalid_operation
-resx602 rescale -Inf  -1     ->  NaN  Invalid_operation
-resx603 rescale -Inf   0     ->  NaN  Invalid_operation
-resx604 rescale -Inf   1     ->  NaN  Invalid_operation
-resx605 rescale -Inf   1000  ->  NaN  Invalid_operation
-resx606 rescale -Inf   Inf   ->  -Infinity
-resx607 rescale -1000  Inf   ->  NaN  Invalid_operation
-resx608 rescale -Inf  -Inf   ->  -Infinity
-resx609 rescale -1    -Inf   ->  NaN  Invalid_operation
-resx610 rescale  0    -Inf   ->  NaN  Invalid_operation
-resx611 rescale  1    -Inf   ->  NaN  Invalid_operation
-resx612 rescale  1000 -Inf   ->  NaN  Invalid_operation
-resx613 rescale  Inf  -Inf   ->  Infinity
-resx614 rescale -Inf  -0     ->  NaN  Invalid_operation
-resx615 rescale -0    -Inf   ->  NaN  Invalid_operation
-
-resx621 rescale  NaN -Inf    ->  NaN
-resx622 rescale  NaN -1000   ->  NaN
-resx623 rescale  NaN -1      ->  NaN
-resx624 rescale  NaN  0      ->  NaN
-resx625 rescale  NaN  1      ->  NaN
-resx626 rescale  NaN  1000   ->  NaN
-resx627 rescale  NaN  Inf    ->  NaN
-resx628 rescale  NaN  NaN    ->  NaN
-resx629 rescale -Inf  NaN    ->  NaN
-resx630 rescale -1000 NaN    ->  NaN
-resx631 rescale -1    NaN    ->  NaN
-resx632 rescale  0    NaN    ->  NaN
-resx633 rescale  1   -NaN    -> -NaN
-resx634 rescale  1000 NaN    ->  NaN
-resx635 rescale  Inf  NaN    ->  NaN
-resx636 rescale  NaN -0      ->  NaN
-resx637 rescale -0    NaN    ->  NaN
-
-resx641 rescale  sNaN -Inf   ->  NaN  Invalid_operation
-resx642 rescale  sNaN -1000  ->  NaN  Invalid_operation
-resx643 rescale  sNaN -1     ->  NaN  Invalid_operation
-resx644 rescale  sNaN  0     ->  NaN  Invalid_operation
-resx645 rescale  sNaN  1     ->  NaN  Invalid_operation
-resx646 rescale  sNaN  1000  ->  NaN  Invalid_operation
-resx647 rescale -sNaN  NaN   -> -NaN  Invalid_operation
-resx648 rescale  sNaN -sNaN  ->  NaN  Invalid_operation
-resx649 rescale  NaN  sNaN   ->  NaN  Invalid_operation
-resx650 rescale -Inf  sNaN   ->  NaN  Invalid_operation
-resx651 rescale -1000 sNaN   ->  NaN  Invalid_operation
-resx652 rescale -1    sNaN   ->  NaN  Invalid_operation
-resx653 rescale  0    sNaN   ->  NaN  Invalid_operation
-resx654 rescale  1   -sNaN   -> -NaN  Invalid_operation
-resx655 rescale  1000 sNaN   ->  NaN  Invalid_operation
-resx656 rescale  Inf  sNaN   ->  NaN  Invalid_operation
-resx657 rescale  NaN  sNaN   ->  NaN  Invalid_operation
-resx658 rescale  sNaN -0     ->  NaN  Invalid_operation
-resx659 rescale -0    sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-resx661 rescale  NaN9 -Inf   ->  NaN9
-resx662 rescale  NaN81 919   ->  NaN81
-resx663 rescale  NaN72 Inf   ->  NaN72
-resx664 rescale -NaN66 NaN5  -> -NaN66
-resx665 rescale -Inf   NaN4  ->  NaN4
-resx666 rescale -919   NaN32 ->  NaN32
-resx667 rescale  Inf   NaN2  ->  NaN2
-
-resx671 rescale  sNaN99 -Inf    ->  NaN99 Invalid_operation
-resx672 rescale -sNaN98 -11     -> -NaN98 Invalid_operation
-resx673 rescale  sNaN97  NaN    ->  NaN97 Invalid_operation
-resx674 rescale  sNaN16 sNaN94  ->  NaN16 Invalid_operation
-resx675 rescale  NaN95  sNaN93  ->  NaN93 Invalid_operation
-resx676 rescale -Inf    sNaN92  ->  NaN92 Invalid_operation
-resx677 rescale  088   -sNaN91  -> -NaN91 Invalid_operation
-resx678 rescale  Inf   -sNaN90  -> -NaN90 Invalid_operation
-resx679 rescale  NaN    sNaN87  ->  NaN87 Invalid_operation
-
--- subnormals and underflow
-precision: 4
-maxexponent: 999
-minexponent: -999
-resx710 rescale  1.00E-999    -999  ->   1E-999    Rounded
-resx711 rescale  0.1E-999    -1000  ->   1E-1000   Subnormal
-resx712 rescale  0.10E-999   -1000  ->   1E-1000   Subnormal Rounded
-resx713 rescale  0.100E-999  -1000  ->   1E-1000   Subnormal Rounded
-resx714 rescale  0.01E-999   -1001  ->   1E-1001   Subnormal
--- next is rounded to Emin
-resx715 rescale  0.999E-999   -999  ->   1E-999    Inexact Rounded
-resx716 rescale  0.099E-999  -1000  ->   1E-1000   Inexact Rounded Subnormal
-
-resx717 rescale  0.009E-999  -1001  ->   1E-1001   Inexact Rounded Subnormal
-resx718 rescale  0.001E-999  -1001  ->   0E-1001   Inexact Rounded
-resx719 rescale  0.0009E-999 -1001  ->   0E-1001   Inexact Rounded
-resx720 rescale  0.0001E-999 -1001  ->   0E-1001   Inexact Rounded
-
-resx730 rescale -1.00E-999   -999  ->  -1E-999     Rounded
-resx731 rescale -0.1E-999    -999  ->  -0E-999     Rounded Inexact
-resx732 rescale -0.10E-999   -999  ->  -0E-999     Rounded Inexact
-resx733 rescale -0.100E-999  -999  ->  -0E-999     Rounded Inexact
-resx734 rescale -0.01E-999   -999  ->  -0E-999     Inexact Rounded
--- next is rounded to Emin
-resx735 rescale -0.999E-999  -999  ->  -1E-999     Inexact Rounded
-resx736 rescale -0.099E-999  -999  ->  -0E-999     Inexact Rounded
-resx737 rescale -0.009E-999  -999  ->  -0E-999     Inexact Rounded
-resx738 rescale -0.001E-999  -999  ->  -0E-999     Inexact Rounded
-resx739 rescale -0.0001E-999 -999  ->  -0E-999     Inexact Rounded
-
-resx740 rescale -1.00E-999   -1000 ->  -1.0E-999   Rounded
-resx741 rescale -0.1E-999    -1000 ->  -1E-1000    Subnormal
-resx742 rescale -0.10E-999   -1000 ->  -1E-1000    Subnormal Rounded
-resx743 rescale -0.100E-999  -1000 ->  -1E-1000    Subnormal Rounded
-resx744 rescale -0.01E-999   -1000 ->  -0E-1000    Inexact Rounded
--- next is rounded to Emin
-resx745 rescale -0.999E-999  -1000 ->  -1.0E-999   Inexact Rounded
-resx746 rescale -0.099E-999  -1000 ->  -1E-1000    Inexact Rounded Subnormal
-resx747 rescale -0.009E-999  -1000 ->  -0E-1000    Inexact Rounded
-resx748 rescale -0.001E-999  -1000 ->  -0E-1000    Inexact Rounded
-resx749 rescale -0.0001E-999 -1000 ->  -0E-1000    Inexact Rounded
-
-resx750 rescale -1.00E-999   -1001 ->  -1.00E-999
-resx751 rescale -0.1E-999    -1001 ->  -1.0E-1000  Subnormal
-resx752 rescale -0.10E-999   -1001 ->  -1.0E-1000  Subnormal
-resx753 rescale -0.100E-999  -1001 ->  -1.0E-1000  Subnormal Rounded
-resx754 rescale -0.01E-999   -1001 ->  -1E-1001    Subnormal
--- next is rounded to Emin
-resx755 rescale -0.999E-999  -1001 ->  -1.00E-999  Inexact Rounded
-resx756 rescale -0.099E-999  -1001 ->  -1.0E-1000  Inexact Rounded Subnormal
-resx757 rescale -0.009E-999  -1001 ->  -1E-1001    Inexact Rounded Subnormal
-resx758 rescale -0.001E-999  -1001 ->  -0E-1001    Inexact Rounded
-resx759 rescale -0.0001E-999 -1001 ->  -0E-1001    Inexact Rounded
-
-resx760 rescale -1.00E-999   -1002 ->  -1.000E-999
-resx761 rescale -0.1E-999    -1002 ->  -1.00E-1000  Subnormal
-resx762 rescale -0.10E-999   -1002 ->  -1.00E-1000  Subnormal
-resx763 rescale -0.100E-999  -1002 ->  -1.00E-1000  Subnormal
-resx764 rescale -0.01E-999   -1002 ->  -1.0E-1001   Subnormal
-resx765 rescale -0.999E-999  -1002 ->  -9.99E-1000  Subnormal
-resx766 rescale -0.099E-999  -1002 ->  -9.9E-1001   Subnormal
-resx767 rescale -0.009E-999  -1002 ->  -9E-1002     Subnormal
-resx768 rescale -0.001E-999  -1002 ->  -1E-1002     Subnormal
-resx769 rescale -0.0001E-999 -1002 ->  -0E-1002     Inexact Rounded
-
--- rhs must be no less than Etiny
-resx770 rescale -1.00E-999   -1003 ->  NaN Invalid_operation
-resx771 rescale -0.1E-999    -1003 ->  NaN Invalid_operation
-resx772 rescale -0.10E-999   -1003 ->  NaN Invalid_operation
-resx773 rescale -0.100E-999  -1003 ->  NaN Invalid_operation
-resx774 rescale -0.01E-999   -1003 ->  NaN Invalid_operation
-resx775 rescale -0.999E-999  -1003 ->  NaN Invalid_operation
-resx776 rescale -0.099E-999  -1003 ->  NaN Invalid_operation
-resx777 rescale -0.009E-999  -1003 ->  NaN Invalid_operation
-resx778 rescale -0.001E-999  -1003 ->  NaN Invalid_operation
-resx779 rescale -0.0001E-999 -1003 ->  NaN Invalid_operation
-
-precision:   9
-maxExponent: 999999999
-minexponent: -999999999
-
--- getInt worries
-resx801 rescale   0   1000000000 -> NaN Invalid_operation
-resx802 rescale   0  -1000000000 -> 0E-1000000000
-resx803 rescale   0   2000000000 -> NaN Invalid_operation
-resx804 rescale   0  -2000000000 -> NaN Invalid_operation
-resx805 rescale   0   3000000000 -> NaN Invalid_operation
-resx806 rescale   0  -3000000000 -> NaN Invalid_operation
-resx807 rescale   0   4000000000 -> NaN Invalid_operation
-resx808 rescale   0  -4000000000 -> NaN Invalid_operation
-resx809 rescale   0   5000000000 -> NaN Invalid_operation
-resx810 rescale   0  -5000000000 -> NaN Invalid_operation
-resx811 rescale   0   6000000000 -> NaN Invalid_operation
-resx812 rescale   0  -6000000000 -> NaN Invalid_operation
-resx813 rescale   0   7000000000 -> NaN Invalid_operation
-resx814 rescale   0  -7000000000 -> NaN Invalid_operation
-resx815 rescale   0   8000000000 -> NaN Invalid_operation
-resx816 rescale   0  -8000000000 -> NaN Invalid_operation
-resx817 rescale   0   9000000000 -> NaN Invalid_operation
-resx818 rescale   0  -9000000000 -> NaN Invalid_operation
-resx819 rescale   0   9999999999 -> NaN Invalid_operation
-resx820 rescale   0  -9999999999 -> NaN Invalid_operation
-resx821 rescale   0   10000000000 -> NaN Invalid_operation
-resx822 rescale   0  -10000000000 -> NaN Invalid_operation
-
-resx831 rescale   1   0E-1       -> 1
-resx832 rescale   1   0E-2       -> 1
-resx833 rescale   1   0E-3       -> 1
-resx834 rescale   1   0E-4       -> 1
-resx835 rescale   1   0E-100     -> 1
-resx836 rescale   1   0E-100000  -> 1
-resx837 rescale   1   0E+100     -> 1
-resx838 rescale   1   0E+100000  -> 1
-
-resx841 rescale   0   5E-1000000 -> NaN Invalid_operation
-resx842 rescale   0   5E-1000000 -> NaN Invalid_operation
-resx843 rescale   0    999999999 -> 0E+999999999
-resx844 rescale   0   1000000000 -> NaN Invalid_operation
-resx845 rescale   0   -999999999 -> 0E-999999999
-resx846 rescale   0  -1000000000 -> 0E-1000000000
-resx847 rescale   0  -1000000001 -> 0E-1000000001
-resx848 rescale   0  -1000000002 -> 0E-1000000002
-resx849 rescale   0  -1000000003 -> 0E-1000000003
-resx850 rescale   0  -1000000004 -> 0E-1000000004
-resx851 rescale   0  -1000000005 -> 0E-1000000005
-resx852 rescale   0  -1000000006 -> 0E-1000000006
-resx853 rescale   0  -1000000007 -> 0E-1000000007
-resx854 rescale   0  -1000000008 -> NaN Invalid_operation
-
-resx861 rescale   1  +2147483649 -> NaN Invalid_operation
-resx862 rescale   1  +2147483648 -> NaN Invalid_operation
-resx863 rescale   1  +2147483647 -> NaN Invalid_operation
-resx864 rescale   1  -2147483647 -> NaN Invalid_operation
-resx865 rescale   1  -2147483648 -> NaN Invalid_operation
-resx866 rescale   1  -2147483649 -> NaN Invalid_operation
-
--- Null tests
-res900 rescale 10  # -> NaN Invalid_operation
-res901 rescale  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rotate.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rotate.decTest
deleted file mode 100644
index 12db821..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rotate.decTest
+++ /dev/null
@@ -1,247 +0,0 @@
-------------------------------------------------------------------------
--- rotate.decTest -- rotate coefficient left or right                 --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minExponent: -999
-
--- Sanity check
-rotx001 rotate          0    0  ->  0
-rotx002 rotate          0    2  ->  0
-rotx003 rotate          1    2  ->  100
-rotx004 rotate         34    8  ->  400000003
-rotx005 rotate          1    9  ->  1
-rotx006 rotate          1   -1  ->  100000000
-rotx007 rotate  123456789   -1  ->  912345678
-rotx008 rotate  123456789   -8  ->  234567891
-rotx009 rotate  123456789   -9  ->  123456789
-rotx010 rotate          0   -2  ->  0
-
--- rhs must be an integer
-rotx011 rotate        1    1.5    -> NaN Invalid_operation
-rotx012 rotate        1    1.0    -> NaN Invalid_operation
-rotx013 rotate        1    0.1    -> NaN Invalid_operation
-rotx014 rotate        1    0.0    -> NaN Invalid_operation
-rotx015 rotate        1    1E+1   -> NaN Invalid_operation
-rotx016 rotate        1    1E+99  -> NaN Invalid_operation
-rotx017 rotate        1    Inf    -> NaN Invalid_operation
-rotx018 rotate        1    -Inf   -> NaN Invalid_operation
--- and |rhs| <= precision
-rotx020 rotate        1    -1000  -> NaN Invalid_operation
-rotx021 rotate        1    -10    -> NaN Invalid_operation
-rotx022 rotate        1     10    -> NaN Invalid_operation
-rotx023 rotate        1     1000  -> NaN Invalid_operation
-
--- full pattern
-rotx030 rotate  123456789          -9   -> 123456789
-rotx031 rotate  123456789          -8   -> 234567891
-rotx032 rotate  123456789          -7   -> 345678912
-rotx033 rotate  123456789          -6   -> 456789123
-rotx034 rotate  123456789          -5   -> 567891234
-rotx035 rotate  123456789          -4   -> 678912345
-rotx036 rotate  123456789          -3   -> 789123456
-rotx037 rotate  123456789          -2   -> 891234567
-rotx038 rotate  123456789          -1   -> 912345678
-rotx039 rotate  123456789          -0   -> 123456789
-rotx040 rotate  123456789          +0   -> 123456789
-rotx041 rotate  123456789          +1   -> 234567891
-rotx042 rotate  123456789          +2   -> 345678912
-rotx043 rotate  123456789          +3   -> 456789123
-rotx044 rotate  123456789          +4   -> 567891234
-rotx045 rotate  123456789          +5   -> 678912345
-rotx046 rotate  123456789          +6   -> 789123456
-rotx047 rotate  123456789          +7   -> 891234567
-rotx048 rotate  123456789          +8   -> 912345678
-rotx049 rotate  123456789          +9   -> 123456789
-
--- zeros
-rotx060 rotate  0E-10              +9   ->   0E-10
-rotx061 rotate  0E-10              -9   ->   0E-10
-rotx062 rotate  0.000              +9   ->   0.000
-rotx063 rotate  0.000              -9   ->   0.000
-rotx064 rotate  0E+10              +9   ->   0E+10
-rotx065 rotate  0E+10              -9   ->   0E+10
-rotx066 rotate -0E-10              +9   ->  -0E-10
-rotx067 rotate -0E-10              -9   ->  -0E-10
-rotx068 rotate -0.000              +9   ->  -0.000
-rotx069 rotate -0.000              -9   ->  -0.000
-rotx070 rotate -0E+10              +9   ->  -0E+10
-rotx071 rotate -0E+10              -9   ->  -0E+10
-
--- Nmax, Nmin, Ntiny
-rotx141 rotate  9.99999999E+999     -1  -> 9.99999999E+999
-rotx142 rotate  9.99999999E+999     -8  -> 9.99999999E+999
-rotx143 rotate  9.99999999E+999      1  -> 9.99999999E+999
-rotx144 rotate  9.99999999E+999      8  -> 9.99999999E+999
-rotx145 rotate  1E-999              -1  -> 1.00000000E-991
-rotx146 rotate  1E-999              -8  -> 1.0E-998
-rotx147 rotate  1E-999               1  -> 1.0E-998
-rotx148 rotate  1E-999               8  -> 1.00000000E-991
-rotx151 rotate  1.00000000E-999     -1  -> 1.0000000E-1000
-rotx152 rotate  1.00000000E-999     -8  -> 1E-1007
-rotx153 rotate  1.00000000E-999      1  -> 1E-1007
-rotx154 rotate  1.00000000E-999      8  -> 1.0000000E-1000
-rotx155 rotate  9.00000000E-999     -1  -> 9.0000000E-1000
-rotx156 rotate  9.00000000E-999     -8  -> 9E-1007
-rotx157 rotate  9.00000000E-999      1  -> 9E-1007
-rotx158 rotate  9.00000000E-999      8  -> 9.0000000E-1000
-rotx160 rotate  1E-1007             -1  -> 1.00000000E-999
-rotx161 rotate  1E-1007             -8  -> 1.0E-1006
-rotx162 rotate  1E-1007              1  -> 1.0E-1006
-rotx163 rotate  1E-1007              8  -> 1.00000000E-999
---  negatives
-rotx171 rotate -9.99999999E+999     -1  -> -9.99999999E+999
-rotx172 rotate -9.99999999E+999     -8  -> -9.99999999E+999
-rotx173 rotate -9.99999999E+999      1  -> -9.99999999E+999
-rotx174 rotate -9.99999999E+999      8  -> -9.99999999E+999
-rotx175 rotate -1E-999              -1  -> -1.00000000E-991
-rotx176 rotate -1E-999              -8  -> -1.0E-998
-rotx177 rotate -1E-999               1  -> -1.0E-998
-rotx178 rotate -1E-999               8  -> -1.00000000E-991
-rotx181 rotate -1.00000000E-999     -1  -> -1.0000000E-1000
-rotx182 rotate -1.00000000E-999     -8  -> -1E-1007
-rotx183 rotate -1.00000000E-999      1  -> -1E-1007
-rotx184 rotate -1.00000000E-999      8  -> -1.0000000E-1000
-rotx185 rotate -9.00000000E-999     -1  -> -9.0000000E-1000
-rotx186 rotate -9.00000000E-999     -8  -> -9E-1007
-rotx187 rotate -9.00000000E-999      1  -> -9E-1007
-rotx188 rotate -9.00000000E-999      8  -> -9.0000000E-1000
-rotx190 rotate -1E-1007             -1  -> -1.00000000E-999
-rotx191 rotate -1E-1007             -8  -> -1.0E-1006
-rotx192 rotate -1E-1007              1  -> -1.0E-1006
-rotx193 rotate -1E-1007              8  -> -1.00000000E-999
-
--- more negatives (of sanities)
-rotx201 rotate         -0    0  ->  -0
-rotx202 rotate         -0    2  ->  -0
-rotx203 rotate         -1    2  ->  -100
-rotx204 rotate         -1    8  ->  -100000000
-rotx205 rotate         -1    9  ->  -1
-rotx206 rotate         -1   -1  ->  -100000000
-rotx207 rotate -123456789   -1  ->  -912345678
-rotx208 rotate -123456789   -8  ->  -234567891
-rotx209 rotate -123456789   -9  ->  -123456789
-rotx210 rotate         -0   -2  ->  -0
-
--- Specials; NaNs are handled as usual
-rotx781 rotate -Inf  -8     -> -Infinity
-rotx782 rotate -Inf  -1     -> -Infinity
-rotx783 rotate -Inf  -0     -> -Infinity
-rotx784 rotate -Inf   0     -> -Infinity
-rotx785 rotate -Inf   1     -> -Infinity
-rotx786 rotate -Inf   8     -> -Infinity
-rotx787 rotate -1000 -Inf   -> NaN Invalid_operation
-rotx788 rotate -Inf  -Inf   -> NaN Invalid_operation
-rotx789 rotate -1    -Inf   -> NaN Invalid_operation
-rotx790 rotate -0    -Inf   -> NaN Invalid_operation
-rotx791 rotate  0    -Inf   -> NaN Invalid_operation
-rotx792 rotate  1    -Inf   -> NaN Invalid_operation
-rotx793 rotate  1000 -Inf   -> NaN Invalid_operation
-rotx794 rotate  Inf  -Inf   -> NaN Invalid_operation
-
-rotx800 rotate  Inf  -Inf   -> NaN Invalid_operation
-rotx801 rotate  Inf  -8     -> Infinity
-rotx802 rotate  Inf  -1     -> Infinity
-rotx803 rotate  Inf  -0     -> Infinity
-rotx804 rotate  Inf   0     -> Infinity
-rotx805 rotate  Inf   1     -> Infinity
-rotx806 rotate  Inf   8     -> Infinity
-rotx807 rotate  Inf   Inf   -> NaN Invalid_operation
-rotx808 rotate -1000  Inf   -> NaN Invalid_operation
-rotx809 rotate -Inf   Inf   -> NaN Invalid_operation
-rotx810 rotate -1     Inf   -> NaN Invalid_operation
-rotx811 rotate -0     Inf   -> NaN Invalid_operation
-rotx812 rotate  0     Inf   -> NaN Invalid_operation
-rotx813 rotate  1     Inf   -> NaN Invalid_operation
-rotx814 rotate  1000  Inf   -> NaN Invalid_operation
-rotx815 rotate  Inf   Inf   -> NaN Invalid_operation
-
-rotx821 rotate  NaN -Inf    ->  NaN
-rotx822 rotate  NaN -1000   ->  NaN
-rotx823 rotate  NaN -1      ->  NaN
-rotx824 rotate  NaN -0      ->  NaN
-rotx825 rotate  NaN  0      ->  NaN
-rotx826 rotate  NaN  1      ->  NaN
-rotx827 rotate  NaN  1000   ->  NaN
-rotx828 rotate  NaN  Inf    ->  NaN
-rotx829 rotate  NaN  NaN    ->  NaN
-rotx830 rotate -Inf  NaN    ->  NaN
-rotx831 rotate -1000 NaN    ->  NaN
-rotx832 rotate -1    NaN    ->  NaN
-rotx833 rotate -0    NaN    ->  NaN
-rotx834 rotate  0    NaN    ->  NaN
-rotx835 rotate  1    NaN    ->  NaN
-rotx836 rotate  1000 NaN    ->  NaN
-rotx837 rotate  Inf  NaN    ->  NaN
-
-
-
-rotx841 rotate  sNaN -Inf   ->  NaN  Invalid_operation
-rotx842 rotate  sNaN -1000  ->  NaN  Invalid_operation
-rotx843 rotate  sNaN -1     ->  NaN  Invalid_operation
-rotx844 rotate  sNaN -0     ->  NaN  Invalid_operation
-rotx845 rotate  sNaN  0     ->  NaN  Invalid_operation
-rotx846 rotate  sNaN  1     ->  NaN  Invalid_operation
-rotx847 rotate  sNaN  1000  ->  NaN  Invalid_operation
-rotx848 rotate  sNaN  NaN   ->  NaN  Invalid_operation
-rotx849 rotate  sNaN sNaN   ->  NaN  Invalid_operation
-rotx850 rotate  NaN  sNaN   ->  NaN  Invalid_operation
-rotx851 rotate -Inf  sNaN   ->  NaN  Invalid_operation
-rotx852 rotate -1000 sNaN   ->  NaN  Invalid_operation
-rotx853 rotate -1    sNaN   ->  NaN  Invalid_operation
-rotx854 rotate -0    sNaN   ->  NaN  Invalid_operation
-rotx855 rotate  0    sNaN   ->  NaN  Invalid_operation
-rotx856 rotate  1    sNaN   ->  NaN  Invalid_operation
-rotx857 rotate  1000 sNaN   ->  NaN  Invalid_operation
-rotx858 rotate  Inf  sNaN   ->  NaN  Invalid_operation
-rotx859 rotate  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-rotx861 rotate  NaN1   -Inf    ->  NaN1
-rotx862 rotate +NaN2   -1000   ->  NaN2
-rotx863 rotate  NaN3    1000   ->  NaN3
-rotx864 rotate  NaN4    Inf    ->  NaN4
-rotx865 rotate  NaN5   +NaN6   ->  NaN5
-rotx866 rotate -Inf     NaN7   ->  NaN7
-rotx867 rotate -1000    NaN8   ->  NaN8
-rotx868 rotate  1000    NaN9   ->  NaN9
-rotx869 rotate  Inf    +NaN10  ->  NaN10
-rotx871 rotate  sNaN11  -Inf   ->  NaN11  Invalid_operation
-rotx872 rotate  sNaN12  -1000  ->  NaN12  Invalid_operation
-rotx873 rotate  sNaN13   1000  ->  NaN13  Invalid_operation
-rotx874 rotate  sNaN14   NaN17 ->  NaN14  Invalid_operation
-rotx875 rotate  sNaN15  sNaN18 ->  NaN15  Invalid_operation
-rotx876 rotate  NaN16   sNaN19 ->  NaN19  Invalid_operation
-rotx877 rotate -Inf    +sNaN20 ->  NaN20  Invalid_operation
-rotx878 rotate -1000    sNaN21 ->  NaN21  Invalid_operation
-rotx879 rotate  1000    sNaN22 ->  NaN22  Invalid_operation
-rotx880 rotate  Inf     sNaN23 ->  NaN23  Invalid_operation
-rotx881 rotate +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-rotx882 rotate -NaN26    NaN28 -> -NaN26
-rotx883 rotate -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-rotx884 rotate  1000    -NaN30 -> -NaN30
-rotx885 rotate  1000   -sNaN31 -> -NaN31  Invalid_operation
-
--- payload decapitate
-precision: 5
-rotx886 rotate  11 -sNaN1234567890 -> -NaN67890  Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rounding.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rounding.decTest
deleted file mode 100644
index 44d4aa1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/rounding.decTest
+++ /dev/null
@@ -1,1303 +0,0 @@
-------------------------------------------------------------------------
--- rounding.decTest -- decimal rounding modes testcases               --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- These tests require that implementations take account of residues in
--- order to get correct results for some rounding modes.  Rather than
--- single rounding tests we therefore need tests for most operators.
--- [We do assume add/minus/plus/subtract are common paths, however, as
--- is rounding of negatives (if the latter works for addition, assume it
--- works for the others, too).]
---
--- Round-for-reround (05UP) is tested as a separate block, mostly for
--- 'historical' reasons.
---
--- Underflow Subnormal and overflow behaviours are tested under the
--- individual operators.
-
-extended:    1
-precision:   5           -- for easier visual inspection
-maxExponent: 999
-minexponent: -999
-
--- Addition operators -------------------------------------------------
-rounding: down
-
-radx100  add 12345 -0.1       -> 12344 Inexact Rounded
-radx101  add 12345 -0.01      -> 12344 Inexact Rounded
-radx102  add 12345 -0.001     -> 12344 Inexact Rounded
-radx103  add 12345 -0.00001   -> 12344 Inexact Rounded
-radx104  add 12345 -0.000001  -> 12344 Inexact Rounded
-radx105  add 12345 -0.0000001 -> 12344 Inexact Rounded
-radx106  add 12345  0         -> 12345
-radx107  add 12345  0.0000001 -> 12345 Inexact Rounded
-radx108  add 12345  0.000001  -> 12345 Inexact Rounded
-radx109  add 12345  0.00001   -> 12345 Inexact Rounded
-radx110  add 12345  0.0001    -> 12345 Inexact Rounded
-radx111  add 12345  0.001     -> 12345 Inexact Rounded
-radx112  add 12345  0.01      -> 12345 Inexact Rounded
-radx113  add 12345  0.1       -> 12345 Inexact Rounded
-
-radx115  add 12346  0.49999   -> 12346 Inexact Rounded
-radx116  add 12346  0.5       -> 12346 Inexact Rounded
-radx117  add 12346  0.50001   -> 12346 Inexact Rounded
-
-radx120  add 12345  0.4       -> 12345 Inexact Rounded
-radx121  add 12345  0.49      -> 12345 Inexact Rounded
-radx122  add 12345  0.499     -> 12345 Inexact Rounded
-radx123  add 12345  0.49999   -> 12345 Inexact Rounded
-radx124  add 12345  0.5       -> 12345 Inexact Rounded
-radx125  add 12345  0.50001   -> 12345 Inexact Rounded
-radx126  add 12345  0.5001    -> 12345 Inexact Rounded
-radx127  add 12345  0.501     -> 12345 Inexact Rounded
-radx128  add 12345  0.51      -> 12345 Inexact Rounded
-radx129  add 12345  0.6       -> 12345 Inexact Rounded
-
-rounding: half_down
-
-radx140  add 12345 -0.1       -> 12345 Inexact Rounded
-radx141  add 12345 -0.01      -> 12345 Inexact Rounded
-radx142  add 12345 -0.001     -> 12345 Inexact Rounded
-radx143  add 12345 -0.00001   -> 12345 Inexact Rounded
-radx144  add 12345 -0.000001  -> 12345 Inexact Rounded
-radx145  add 12345 -0.0000001 -> 12345 Inexact Rounded
-radx146  add 12345  0         -> 12345
-radx147  add 12345  0.0000001 -> 12345 Inexact Rounded
-radx148  add 12345  0.000001  -> 12345 Inexact Rounded
-radx149  add 12345  0.00001   -> 12345 Inexact Rounded
-radx150  add 12345  0.0001    -> 12345 Inexact Rounded
-radx151  add 12345  0.001     -> 12345 Inexact Rounded
-radx152  add 12345  0.01      -> 12345 Inexact Rounded
-radx153  add 12345  0.1       -> 12345 Inexact Rounded
-
-radx155  add 12346  0.49999   -> 12346 Inexact Rounded
-radx156  add 12346  0.5       -> 12346 Inexact Rounded
-radx157  add 12346  0.50001   -> 12347 Inexact Rounded
-
-radx160  add 12345  0.4       -> 12345 Inexact Rounded
-radx161  add 12345  0.49      -> 12345 Inexact Rounded
-radx162  add 12345  0.499     -> 12345 Inexact Rounded
-radx163  add 12345  0.49999   -> 12345 Inexact Rounded
-radx164  add 12345  0.5       -> 12345 Inexact Rounded
-radx165  add 12345  0.50001   -> 12346 Inexact Rounded
-radx166  add 12345  0.5001    -> 12346 Inexact Rounded
-radx167  add 12345  0.501     -> 12346 Inexact Rounded
-radx168  add 12345  0.51      -> 12346 Inexact Rounded
-radx169  add 12345  0.6       -> 12346 Inexact Rounded
-
-rounding: half_even
-
-radx170  add 12345 -0.1       -> 12345 Inexact Rounded
-radx171  add 12345 -0.01      -> 12345 Inexact Rounded
-radx172  add 12345 -0.001     -> 12345 Inexact Rounded
-radx173  add 12345 -0.00001   -> 12345 Inexact Rounded
-radx174  add 12345 -0.000001  -> 12345 Inexact Rounded
-radx175  add 12345 -0.0000001 -> 12345 Inexact Rounded
-radx176  add 12345  0         -> 12345
-radx177  add 12345  0.0000001 -> 12345 Inexact Rounded
-radx178  add 12345  0.000001  -> 12345 Inexact Rounded
-radx179  add 12345  0.00001   -> 12345 Inexact Rounded
-radx180  add 12345  0.0001    -> 12345 Inexact Rounded
-radx181  add 12345  0.001     -> 12345 Inexact Rounded
-radx182  add 12345  0.01      -> 12345 Inexact Rounded
-radx183  add 12345  0.1       -> 12345 Inexact Rounded
-
-radx185  add 12346  0.49999   -> 12346 Inexact Rounded
-radx186  add 12346  0.5       -> 12346 Inexact Rounded
-radx187  add 12346  0.50001   -> 12347 Inexact Rounded
-
-radx190  add 12345  0.4       -> 12345 Inexact Rounded
-radx191  add 12345  0.49      -> 12345 Inexact Rounded
-radx192  add 12345  0.499     -> 12345 Inexact Rounded
-radx193  add 12345  0.49999   -> 12345 Inexact Rounded
-radx194  add 12345  0.5       -> 12346 Inexact Rounded
-radx195  add 12345  0.50001   -> 12346 Inexact Rounded
-radx196  add 12345  0.5001    -> 12346 Inexact Rounded
-radx197  add 12345  0.501     -> 12346 Inexact Rounded
-radx198  add 12345  0.51      -> 12346 Inexact Rounded
-radx199  add 12345  0.6       -> 12346 Inexact Rounded
-
-rounding: half_up
-
-radx200  add 12345 -0.1       -> 12345 Inexact Rounded
-radx201  add 12345 -0.01      -> 12345 Inexact Rounded
-radx202  add 12345 -0.001     -> 12345 Inexact Rounded
-radx203  add 12345 -0.00001   -> 12345 Inexact Rounded
-radx204  add 12345 -0.000001  -> 12345 Inexact Rounded
-radx205  add 12345 -0.0000001 -> 12345 Inexact Rounded
-radx206  add 12345  0         -> 12345
-radx207  add 12345  0.0000001 -> 12345 Inexact Rounded
-radx208  add 12345  0.000001  -> 12345 Inexact Rounded
-radx209  add 12345  0.00001   -> 12345 Inexact Rounded
-radx210  add 12345  0.0001    -> 12345 Inexact Rounded
-radx211  add 12345  0.001     -> 12345 Inexact Rounded
-radx212  add 12345  0.01      -> 12345 Inexact Rounded
-radx213  add 12345  0.1       -> 12345 Inexact Rounded
-
-radx215  add 12346  0.49999   -> 12346 Inexact Rounded
-radx216  add 12346  0.5       -> 12347 Inexact Rounded
-radx217  add 12346  0.50001   -> 12347 Inexact Rounded
-
-radx220  add 12345  0.4       -> 12345 Inexact Rounded
-radx221  add 12345  0.49      -> 12345 Inexact Rounded
-radx222  add 12345  0.499     -> 12345 Inexact Rounded
-radx223  add 12345  0.49999   -> 12345 Inexact Rounded
-radx224  add 12345  0.5       -> 12346 Inexact Rounded
-radx225  add 12345  0.50001   -> 12346 Inexact Rounded
-radx226  add 12345  0.5001    -> 12346 Inexact Rounded
-radx227  add 12345  0.501     -> 12346 Inexact Rounded
-radx228  add 12345  0.51      -> 12346 Inexact Rounded
-radx229  add 12345  0.6       -> 12346 Inexact Rounded
-
-rounding: up
-
-radx230  add 12345 -0.1       -> 12345 Inexact Rounded
-radx231  add 12345 -0.01      -> 12345 Inexact Rounded
-radx232  add 12345 -0.001     -> 12345 Inexact Rounded
-radx233  add 12345 -0.00001   -> 12345 Inexact Rounded
-radx234  add 12345 -0.000001  -> 12345 Inexact Rounded
-radx235  add 12345 -0.0000001 -> 12345 Inexact Rounded
-radx236  add 12345  0         -> 12345
-radx237  add 12345  0.0000001 -> 12346 Inexact Rounded
-radx238  add 12345  0.000001  -> 12346 Inexact Rounded
-radx239  add 12345  0.00001   -> 12346 Inexact Rounded
-radx240  add 12345  0.0001    -> 12346 Inexact Rounded
-radx241  add 12345  0.001     -> 12346 Inexact Rounded
-radx242  add 12345  0.01      -> 12346 Inexact Rounded
-radx243  add 12345  0.1       -> 12346 Inexact Rounded
-
-radx245  add 12346  0.49999   -> 12347 Inexact Rounded
-radx246  add 12346  0.5       -> 12347 Inexact Rounded
-radx247  add 12346  0.50001   -> 12347 Inexact Rounded
-
-radx250  add 12345  0.4       -> 12346 Inexact Rounded
-radx251  add 12345  0.49      -> 12346 Inexact Rounded
-radx252  add 12345  0.499     -> 12346 Inexact Rounded
-radx253  add 12345  0.49999   -> 12346 Inexact Rounded
-radx254  add 12345  0.5       -> 12346 Inexact Rounded
-radx255  add 12345  0.50001   -> 12346 Inexact Rounded
-radx256  add 12345  0.5001    -> 12346 Inexact Rounded
-radx257  add 12345  0.501     -> 12346 Inexact Rounded
-radx258  add 12345  0.51      -> 12346 Inexact Rounded
-radx259  add 12345  0.6       -> 12346 Inexact Rounded
-
-rounding: floor
-
-radx300  add 12345 -0.1       -> 12344 Inexact Rounded
-radx301  add 12345 -0.01      -> 12344 Inexact Rounded
-radx302  add 12345 -0.001     -> 12344 Inexact Rounded
-radx303  add 12345 -0.00001   -> 12344 Inexact Rounded
-radx304  add 12345 -0.000001  -> 12344 Inexact Rounded
-radx305  add 12345 -0.0000001 -> 12344 Inexact Rounded
-radx306  add 12345  0         -> 12345
-radx307  add 12345  0.0000001 -> 12345 Inexact Rounded
-radx308  add 12345  0.000001  -> 12345 Inexact Rounded
-radx309  add 12345  0.00001   -> 12345 Inexact Rounded
-radx310  add 12345  0.0001    -> 12345 Inexact Rounded
-radx311  add 12345  0.001     -> 12345 Inexact Rounded
-radx312  add 12345  0.01      -> 12345 Inexact Rounded
-radx313  add 12345  0.1       -> 12345 Inexact Rounded
-
-radx315  add 12346  0.49999   -> 12346 Inexact Rounded
-radx316  add 12346  0.5       -> 12346 Inexact Rounded
-radx317  add 12346  0.50001   -> 12346 Inexact Rounded
-
-radx320  add 12345  0.4       -> 12345 Inexact Rounded
-radx321  add 12345  0.49      -> 12345 Inexact Rounded
-radx322  add 12345  0.499     -> 12345 Inexact Rounded
-radx323  add 12345  0.49999   -> 12345 Inexact Rounded
-radx324  add 12345  0.5       -> 12345 Inexact Rounded
-radx325  add 12345  0.50001   -> 12345 Inexact Rounded
-radx326  add 12345  0.5001    -> 12345 Inexact Rounded
-radx327  add 12345  0.501     -> 12345 Inexact Rounded
-radx328  add 12345  0.51      -> 12345 Inexact Rounded
-radx329  add 12345  0.6       -> 12345 Inexact Rounded
-
-rounding: ceiling
-
-radx330  add 12345 -0.1       -> 12345 Inexact Rounded
-radx331  add 12345 -0.01      -> 12345 Inexact Rounded
-radx332  add 12345 -0.001     -> 12345 Inexact Rounded
-radx333  add 12345 -0.00001   -> 12345 Inexact Rounded
-radx334  add 12345 -0.000001  -> 12345 Inexact Rounded
-radx335  add 12345 -0.0000001 -> 12345 Inexact Rounded
-radx336  add 12345  0         -> 12345
-radx337  add 12345  0.0000001 -> 12346 Inexact Rounded
-radx338  add 12345  0.000001  -> 12346 Inexact Rounded
-radx339  add 12345  0.00001   -> 12346 Inexact Rounded
-radx340  add 12345  0.0001    -> 12346 Inexact Rounded
-radx341  add 12345  0.001     -> 12346 Inexact Rounded
-radx342  add 12345  0.01      -> 12346 Inexact Rounded
-radx343  add 12345  0.1       -> 12346 Inexact Rounded
-
-radx345  add 12346  0.49999   -> 12347 Inexact Rounded
-radx346  add 12346  0.5       -> 12347 Inexact Rounded
-radx347  add 12346  0.50001   -> 12347 Inexact Rounded
-
-radx350  add 12345  0.4       -> 12346 Inexact Rounded
-radx351  add 12345  0.49      -> 12346 Inexact Rounded
-radx352  add 12345  0.499     -> 12346 Inexact Rounded
-radx353  add 12345  0.49999   -> 12346 Inexact Rounded
-radx354  add 12345  0.5       -> 12346 Inexact Rounded
-radx355  add 12345  0.50001   -> 12346 Inexact Rounded
-radx356  add 12345  0.5001    -> 12346 Inexact Rounded
-radx357  add 12345  0.501     -> 12346 Inexact Rounded
-radx358  add 12345  0.51      -> 12346 Inexact Rounded
-radx359  add 12345  0.6       -> 12346 Inexact Rounded
-
--- negatives...
-
-rounding: down
-
-rsux100  add -12345 -0.1       -> -12345 Inexact Rounded
-rsux101  add -12345 -0.01      -> -12345 Inexact Rounded
-rsux102  add -12345 -0.001     -> -12345 Inexact Rounded
-rsux103  add -12345 -0.00001   -> -12345 Inexact Rounded
-rsux104  add -12345 -0.000001  -> -12345 Inexact Rounded
-rsux105  add -12345 -0.0000001 -> -12345 Inexact Rounded
-rsux106  add -12345  0         -> -12345
-rsux107  add -12345  0.0000001 -> -12344 Inexact Rounded
-rsux108  add -12345  0.000001  -> -12344 Inexact Rounded
-rsux109  add -12345  0.00001   -> -12344 Inexact Rounded
-rsux110  add -12345  0.0001    -> -12344 Inexact Rounded
-rsux111  add -12345  0.001     -> -12344 Inexact Rounded
-rsux112  add -12345  0.01      -> -12344 Inexact Rounded
-rsux113  add -12345  0.1       -> -12344 Inexact Rounded
-
-rsux115  add -12346  0.49999   -> -12345 Inexact Rounded
-rsux116  add -12346  0.5       -> -12345 Inexact Rounded
-rsux117  add -12346  0.50001   -> -12345 Inexact Rounded
-
-rsux120  add -12345  0.4       -> -12344 Inexact Rounded
-rsux121  add -12345  0.49      -> -12344 Inexact Rounded
-rsux122  add -12345  0.499     -> -12344 Inexact Rounded
-rsux123  add -12345  0.49999   -> -12344 Inexact Rounded
-rsux124  add -12345  0.5       -> -12344 Inexact Rounded
-rsux125  add -12345  0.50001   -> -12344 Inexact Rounded
-rsux126  add -12345  0.5001    -> -12344 Inexact Rounded
-rsux127  add -12345  0.501     -> -12344 Inexact Rounded
-rsux128  add -12345  0.51      -> -12344 Inexact Rounded
-rsux129  add -12345  0.6       -> -12344 Inexact Rounded
-
-rounding: half_down
-
-rsux140  add -12345 -0.1       -> -12345 Inexact Rounded
-rsux141  add -12345 -0.01      -> -12345 Inexact Rounded
-rsux142  add -12345 -0.001     -> -12345 Inexact Rounded
-rsux143  add -12345 -0.00001   -> -12345 Inexact Rounded
-rsux144  add -12345 -0.000001  -> -12345 Inexact Rounded
-rsux145  add -12345 -0.0000001 -> -12345 Inexact Rounded
-rsux146  add -12345  0         -> -12345
-rsux147  add -12345  0.0000001 -> -12345 Inexact Rounded
-rsux148  add -12345  0.000001  -> -12345 Inexact Rounded
-rsux149  add -12345  0.00001   -> -12345 Inexact Rounded
-rsux150  add -12345  0.0001    -> -12345 Inexact Rounded
-rsux151  add -12345  0.001     -> -12345 Inexact Rounded
-rsux152  add -12345  0.01      -> -12345 Inexact Rounded
-rsux153  add -12345  0.1       -> -12345 Inexact Rounded
-
-rsux155  add -12346  0.49999   -> -12346 Inexact Rounded
-rsux156  add -12346  0.5       -> -12345 Inexact Rounded
-rsux157  add -12346  0.50001   -> -12345 Inexact Rounded
-
-rsux160  add -12345  0.4       -> -12345 Inexact Rounded
-rsux161  add -12345  0.49      -> -12345 Inexact Rounded
-rsux162  add -12345  0.499     -> -12345 Inexact Rounded
-rsux163  add -12345  0.49999   -> -12345 Inexact Rounded
-rsux164  add -12345  0.5       -> -12344 Inexact Rounded
-rsux165  add -12345  0.50001   -> -12344 Inexact Rounded
-rsux166  add -12345  0.5001    -> -12344 Inexact Rounded
-rsux167  add -12345  0.501     -> -12344 Inexact Rounded
-rsux168  add -12345  0.51      -> -12344 Inexact Rounded
-rsux169  add -12345  0.6       -> -12344 Inexact Rounded
-
-rounding: half_even
-
-rsux170  add -12345 -0.1       -> -12345 Inexact Rounded
-rsux171  add -12345 -0.01      -> -12345 Inexact Rounded
-rsux172  add -12345 -0.001     -> -12345 Inexact Rounded
-rsux173  add -12345 -0.00001   -> -12345 Inexact Rounded
-rsux174  add -12345 -0.000001  -> -12345 Inexact Rounded
-rsux175  add -12345 -0.0000001 -> -12345 Inexact Rounded
-rsux176  add -12345  0         -> -12345
-rsux177  add -12345  0.0000001 -> -12345 Inexact Rounded
-rsux178  add -12345  0.000001  -> -12345 Inexact Rounded
-rsux179  add -12345  0.00001   -> -12345 Inexact Rounded
-rsux180  add -12345  0.0001    -> -12345 Inexact Rounded
-rsux181  add -12345  0.001     -> -12345 Inexact Rounded
-rsux182  add -12345  0.01      -> -12345 Inexact Rounded
-rsux183  add -12345  0.1       -> -12345 Inexact Rounded
-
-rsux185  add -12346  0.49999   -> -12346 Inexact Rounded
-rsux186  add -12346  0.5       -> -12346 Inexact Rounded
-rsux187  add -12346  0.50001   -> -12345 Inexact Rounded
-
-rsux190  add -12345  0.4       -> -12345 Inexact Rounded
-rsux191  add -12345  0.49      -> -12345 Inexact Rounded
-rsux192  add -12345  0.499     -> -12345 Inexact Rounded
-rsux193  add -12345  0.49999   -> -12345 Inexact Rounded
-rsux194  add -12345  0.5       -> -12344 Inexact Rounded
-rsux195  add -12345  0.50001   -> -12344 Inexact Rounded
-rsux196  add -12345  0.5001    -> -12344 Inexact Rounded
-rsux197  add -12345  0.501     -> -12344 Inexact Rounded
-rsux198  add -12345  0.51      -> -12344 Inexact Rounded
-rsux199  add -12345  0.6       -> -12344 Inexact Rounded
-
-rounding: half_up
-
-rsux200  add -12345 -0.1       -> -12345 Inexact Rounded
-rsux201  add -12345 -0.01      -> -12345 Inexact Rounded
-rsux202  add -12345 -0.001     -> -12345 Inexact Rounded
-rsux203  add -12345 -0.00001   -> -12345 Inexact Rounded
-rsux204  add -12345 -0.000001  -> -12345 Inexact Rounded
-rsux205  add -12345 -0.0000001 -> -12345 Inexact Rounded
-rsux206  add -12345  0         -> -12345
-rsux207  add -12345  0.0000001 -> -12345 Inexact Rounded
-rsux208  add -12345  0.000001  -> -12345 Inexact Rounded
-rsux209  add -12345  0.00001   -> -12345 Inexact Rounded
-rsux210  add -12345  0.0001    -> -12345 Inexact Rounded
-rsux211  add -12345  0.001     -> -12345 Inexact Rounded
-rsux212  add -12345  0.01      -> -12345 Inexact Rounded
-rsux213  add -12345  0.1       -> -12345 Inexact Rounded
-
-rsux215  add -12346  0.49999   -> -12346 Inexact Rounded
-rsux216  add -12346  0.5       -> -12346 Inexact Rounded
-rsux217  add -12346  0.50001   -> -12345 Inexact Rounded
-
-rsux220  add -12345  0.4       -> -12345 Inexact Rounded
-rsux221  add -12345  0.49      -> -12345 Inexact Rounded
-rsux222  add -12345  0.499     -> -12345 Inexact Rounded
-rsux223  add -12345  0.49999   -> -12345 Inexact Rounded
-rsux224  add -12345  0.5       -> -12345 Inexact Rounded
-rsux225  add -12345  0.50001   -> -12344 Inexact Rounded
-rsux226  add -12345  0.5001    -> -12344 Inexact Rounded
-rsux227  add -12345  0.501     -> -12344 Inexact Rounded
-rsux228  add -12345  0.51      -> -12344 Inexact Rounded
-rsux229  add -12345  0.6       -> -12344 Inexact Rounded
-
-rounding: up
-
-rsux230  add -12345 -0.1       -> -12346 Inexact Rounded
-rsux231  add -12345 -0.01      -> -12346 Inexact Rounded
-rsux232  add -12345 -0.001     -> -12346 Inexact Rounded
-rsux233  add -12345 -0.00001   -> -12346 Inexact Rounded
-rsux234  add -12345 -0.000001  -> -12346 Inexact Rounded
-rsux235  add -12345 -0.0000001 -> -12346 Inexact Rounded
-rsux236  add -12345  0         -> -12345
-rsux237  add -12345  0.0000001 -> -12345 Inexact Rounded
-rsux238  add -12345  0.000001  -> -12345 Inexact Rounded
-rsux239  add -12345  0.00001   -> -12345 Inexact Rounded
-rsux240  add -12345  0.0001    -> -12345 Inexact Rounded
-rsux241  add -12345  0.001     -> -12345 Inexact Rounded
-rsux242  add -12345  0.01      -> -12345 Inexact Rounded
-rsux243  add -12345  0.1       -> -12345 Inexact Rounded
-
-rsux245  add -12346  0.49999   -> -12346 Inexact Rounded
-rsux246  add -12346  0.5       -> -12346 Inexact Rounded
-rsux247  add -12346  0.50001   -> -12346 Inexact Rounded
-
-rsux250  add -12345  0.4       -> -12345 Inexact Rounded
-rsux251  add -12345  0.49      -> -12345 Inexact Rounded
-rsux252  add -12345  0.499     -> -12345 Inexact Rounded
-rsux253  add -12345  0.49999   -> -12345 Inexact Rounded
-rsux254  add -12345  0.5       -> -12345 Inexact Rounded
-rsux255  add -12345  0.50001   -> -12345 Inexact Rounded
-rsux256  add -12345  0.5001    -> -12345 Inexact Rounded
-rsux257  add -12345  0.501     -> -12345 Inexact Rounded
-rsux258  add -12345  0.51      -> -12345 Inexact Rounded
-rsux259  add -12345  0.6       -> -12345 Inexact Rounded
-
-rounding: floor
-
-rsux300  add -12345 -0.1       -> -12346 Inexact Rounded
-rsux301  add -12345 -0.01      -> -12346 Inexact Rounded
-rsux302  add -12345 -0.001     -> -12346 Inexact Rounded
-rsux303  add -12345 -0.00001   -> -12346 Inexact Rounded
-rsux304  add -12345 -0.000001  -> -12346 Inexact Rounded
-rsux305  add -12345 -0.0000001 -> -12346 Inexact Rounded
-rsux306  add -12345  0         -> -12345
-rsux307  add -12345  0.0000001 -> -12345 Inexact Rounded
-rsux308  add -12345  0.000001  -> -12345 Inexact Rounded
-rsux309  add -12345  0.00001   -> -12345 Inexact Rounded
-rsux310  add -12345  0.0001    -> -12345 Inexact Rounded
-rsux311  add -12345  0.001     -> -12345 Inexact Rounded
-rsux312  add -12345  0.01      -> -12345 Inexact Rounded
-rsux313  add -12345  0.1       -> -12345 Inexact Rounded
-
-rsux315  add -12346  0.49999   -> -12346 Inexact Rounded
-rsux316  add -12346  0.5       -> -12346 Inexact Rounded
-rsux317  add -12346  0.50001   -> -12346 Inexact Rounded
-
-rsux320  add -12345  0.4       -> -12345 Inexact Rounded
-rsux321  add -12345  0.49      -> -12345 Inexact Rounded
-rsux322  add -12345  0.499     -> -12345 Inexact Rounded
-rsux323  add -12345  0.49999   -> -12345 Inexact Rounded
-rsux324  add -12345  0.5       -> -12345 Inexact Rounded
-rsux325  add -12345  0.50001   -> -12345 Inexact Rounded
-rsux326  add -12345  0.5001    -> -12345 Inexact Rounded
-rsux327  add -12345  0.501     -> -12345 Inexact Rounded
-rsux328  add -12345  0.51      -> -12345 Inexact Rounded
-rsux329  add -12345  0.6       -> -12345 Inexact Rounded
-
-rounding: ceiling
-
-rsux330  add -12345 -0.1       -> -12345 Inexact Rounded
-rsux331  add -12345 -0.01      -> -12345 Inexact Rounded
-rsux332  add -12345 -0.001     -> -12345 Inexact Rounded
-rsux333  add -12345 -0.00001   -> -12345 Inexact Rounded
-rsux334  add -12345 -0.000001  -> -12345 Inexact Rounded
-rsux335  add -12345 -0.0000001 -> -12345 Inexact Rounded
-rsux336  add -12345  0         -> -12345
-rsux337  add -12345  0.0000001 -> -12344 Inexact Rounded
-rsux338  add -12345  0.000001  -> -12344 Inexact Rounded
-rsux339  add -12345  0.00001   -> -12344 Inexact Rounded
-rsux340  add -12345  0.0001    -> -12344 Inexact Rounded
-rsux341  add -12345  0.001     -> -12344 Inexact Rounded
-rsux342  add -12345  0.01      -> -12344 Inexact Rounded
-rsux343  add -12345  0.1       -> -12344 Inexact Rounded
-
-rsux345  add -12346  0.49999   -> -12345 Inexact Rounded
-rsux346  add -12346  0.5       -> -12345 Inexact Rounded
-rsux347  add -12346  0.50001   -> -12345 Inexact Rounded
-
-rsux350  add -12345  0.4       -> -12344 Inexact Rounded
-rsux351  add -12345  0.49      -> -12344 Inexact Rounded
-rsux352  add -12345  0.499     -> -12344 Inexact Rounded
-rsux353  add -12345  0.49999   -> -12344 Inexact Rounded
-rsux354  add -12345  0.5       -> -12344 Inexact Rounded
-rsux355  add -12345  0.50001   -> -12344 Inexact Rounded
-rsux356  add -12345  0.5001    -> -12344 Inexact Rounded
-rsux357  add -12345  0.501     -> -12344 Inexact Rounded
-rsux358  add -12345  0.51      -> -12344 Inexact Rounded
-rsux359  add -12345  0.6       -> -12344 Inexact Rounded
-
--- Check cancellation subtractions
--- (The IEEE 854 'curious rule' in $6.3)
-
-rounding: down
-rzex001  add  0    0    ->  0
-rzex002  add  0   -0    ->  0
-rzex003  add -0    0    ->  0
-rzex004  add -0   -0    -> -0
-rzex005  add  1   -1    ->  0
-rzex006  add -1    1    ->  0
-rzex007  add  1.5 -1.5  ->  0.0
-rzex008  add -1.5  1.5  ->  0.0
-rzex009  add  2   -2    ->  0
-rzex010  add -2    2    ->  0
-
-rounding: up
-rzex011  add  0    0    ->  0
-rzex012  add  0   -0    ->  0
-rzex013  add -0    0    ->  0
-rzex014  add -0   -0    -> -0
-rzex015  add  1   -1    ->  0
-rzex016  add -1    1    ->  0
-rzex017  add  1.5 -1.5  ->  0.0
-rzex018  add -1.5  1.5  ->  0.0
-rzex019  add  2   -2    ->  0
-rzex020  add -2    2    ->  0
-
-rounding: half_up
-rzex021  add  0    0    ->  0
-rzex022  add  0   -0    ->  0
-rzex023  add -0    0    ->  0
-rzex024  add -0   -0    -> -0
-rzex025  add  1   -1    ->  0
-rzex026  add -1    1    ->  0
-rzex027  add  1.5 -1.5  ->  0.0
-rzex028  add -1.5  1.5  ->  0.0
-rzex029  add  2   -2    ->  0
-rzex030  add -2    2    ->  0
-
-rounding: half_down
-rzex031  add  0    0    ->  0
-rzex032  add  0   -0    ->  0
-rzex033  add -0    0    ->  0
-rzex034  add -0   -0    -> -0
-rzex035  add  1   -1    ->  0
-rzex036  add -1    1    ->  0
-rzex037  add  1.5 -1.5  ->  0.0
-rzex038  add -1.5  1.5  ->  0.0
-rzex039  add  2   -2    ->  0
-rzex040  add -2    2    ->  0
-
-rounding: half_even
-rzex041  add  0    0    ->  0
-rzex042  add  0   -0    ->  0
-rzex043  add -0    0    ->  0
-rzex044  add -0   -0    -> -0
-rzex045  add  1   -1    ->  0
-rzex046  add -1    1    ->  0
-rzex047  add  1.5 -1.5  ->  0.0
-rzex048  add -1.5  1.5  ->  0.0
-rzex049  add  2   -2    ->  0
-rzex050  add -2    2    ->  0
-
-rounding: floor
-rzex051  add  0    0    ->  0
-rzex052  add  0   -0    -> -0    -- here are two 'curious'
-rzex053  add -0    0    -> -0    --
-rzex054  add -0   -0    -> -0
-rzex055  add  1   -1    -> -0    -- here are the rest
-rzex056  add -1    1    -> -0    -- ..
-rzex057  add  1.5 -1.5  -> -0.0  -- ..
-rzex058  add -1.5  1.5  -> -0.0  -- ..
-rzex059  add  2   -2    -> -0    -- ..
-rzex060  add -2    2    -> -0    -- ..
-
-rounding: ceiling
-rzex061  add  0    0    ->  0
-rzex062  add  0   -0    ->  0
-rzex063  add -0    0    ->  0
-rzex064  add -0   -0    -> -0
-rzex065  add  1   -1    ->  0
-rzex066  add -1    1    ->  0
-rzex067  add  1.5 -1.5  ->  0.0
-rzex068  add -1.5  1.5  ->  0.0
-rzex069  add  2   -2    ->  0
-rzex070  add -2    2    ->  0
-
-
--- Division operators -------------------------------------------------
-
-rounding: down
-rdvx101  divide 12345  1         ->  12345
-rdvx102  divide 12345  1.0001    ->  12343 Inexact Rounded
-rdvx103  divide 12345  1.001     ->  12332 Inexact Rounded
-rdvx104  divide 12345  1.01      ->  12222 Inexact Rounded
-rdvx105  divide 12345  1.1       ->  11222 Inexact Rounded
-rdvx106  divide 12355  4         ->   3088.7 Inexact Rounded
-rdvx107  divide 12345  4         ->   3086.2 Inexact Rounded
-rdvx108  divide 12355  4.0001    ->   3088.6 Inexact Rounded
-rdvx109  divide 12345  4.0001    ->   3086.1 Inexact Rounded
-rdvx110  divide 12345  4.9       ->   2519.3 Inexact Rounded
-rdvx111  divide 12345  4.99      ->   2473.9 Inexact Rounded
-rdvx112  divide 12345  4.999     ->   2469.4 Inexact Rounded
-rdvx113  divide 12345  4.9999    ->   2469.0 Inexact Rounded
-rdvx114  divide 12345  5         ->   2469
-rdvx115  divide 12345  5.0001    ->  2468.9 Inexact Rounded
-rdvx116  divide 12345  5.001     ->  2468.5 Inexact Rounded
-rdvx117  divide 12345  5.01      ->  2464.0 Inexact Rounded
-rdvx118  divide 12345  5.1       ->  2420.5 Inexact Rounded
-
-rounding: half_down
-rdvx201  divide 12345  1         ->  12345
-rdvx202  divide 12345  1.0001    ->  12344 Inexact Rounded
-rdvx203  divide 12345  1.001     ->  12333 Inexact Rounded
-rdvx204  divide 12345  1.01      ->  12223 Inexact Rounded
-rdvx205  divide 12345  1.1       ->  11223 Inexact Rounded
-rdvx206  divide 12355  4         ->   3088.7 Inexact Rounded
-rdvx207  divide 12345  4         ->   3086.2 Inexact Rounded
-rdvx208  divide 12355  4.0001    ->   3088.7 Inexact Rounded
-rdvx209  divide 12345  4.0001    ->   3086.2 Inexact Rounded
-rdvx210  divide 12345  4.9       ->   2519.4 Inexact Rounded
-rdvx211  divide 12345  4.99      ->   2473.9 Inexact Rounded
-rdvx212  divide 12345  4.999     ->   2469.5 Inexact Rounded
-rdvx213  divide 12345  4.9999    ->   2469.0 Inexact Rounded
-rdvx214  divide 12345  5         ->   2469
-rdvx215  divide 12345  5.0001    ->  2469.0 Inexact Rounded
-rdvx216  divide 12345  5.001     ->  2468.5 Inexact Rounded
-rdvx217  divide 12345  5.01      ->  2464.1 Inexact Rounded
-rdvx218  divide 12345  5.1       ->  2420.6 Inexact Rounded
-
-rounding: half_even
-rdvx301  divide 12345  1         ->  12345
-rdvx302  divide 12345  1.0001    ->  12344 Inexact Rounded
-rdvx303  divide 12345  1.001     ->  12333 Inexact Rounded
-rdvx304  divide 12345  1.01      ->  12223 Inexact Rounded
-rdvx305  divide 12345  1.1       ->  11223 Inexact Rounded
-rdvx306  divide 12355  4         ->   3088.8 Inexact Rounded
-rdvx307  divide 12345  4         ->   3086.2 Inexact Rounded
-rdvx308  divide 12355  4.0001    ->   3088.7 Inexact Rounded
-rdvx309  divide 12345  4.0001    ->   3086.2 Inexact Rounded
-rdvx310  divide 12345  4.9       ->   2519.4 Inexact Rounded
-rdvx311  divide 12345  4.99      ->   2473.9 Inexact Rounded
-rdvx312  divide 12345  4.999     ->   2469.5 Inexact Rounded
-rdvx313  divide 12345  4.9999    ->   2469.0 Inexact Rounded
-rdvx314  divide 12345  5         ->   2469
-rdvx315  divide 12345  5.0001    ->  2469.0 Inexact Rounded
-rdvx316  divide 12345  5.001     ->  2468.5 Inexact Rounded
-rdvx317  divide 12345  5.01      ->  2464.1 Inexact Rounded
-rdvx318  divide 12345  5.1       ->  2420.6 Inexact Rounded
-
-rounding: half_up
-rdvx401  divide 12345  1         ->  12345
-rdvx402  divide 12345  1.0001    ->  12344 Inexact Rounded
-rdvx403  divide 12345  1.001     ->  12333 Inexact Rounded
-rdvx404  divide 12345  1.01      ->  12223 Inexact Rounded
-rdvx405  divide 12345  1.1       ->  11223 Inexact Rounded
-rdvx406  divide 12355  4         ->   3088.8 Inexact Rounded
-rdvx407  divide 12345  4         ->   3086.3 Inexact Rounded
-rdvx408  divide 12355  4.0001    ->   3088.7 Inexact Rounded
-rdvx409  divide 12345  4.0001    ->   3086.2 Inexact Rounded
-rdvx410  divide 12345  4.9       ->   2519.4 Inexact Rounded
-rdvx411  divide 12345  4.99      ->   2473.9 Inexact Rounded
-rdvx412  divide 12345  4.999     ->   2469.5 Inexact Rounded
-rdvx413  divide 12345  4.9999    ->   2469.0 Inexact Rounded
-rdvx414  divide 12345  5         ->   2469
-rdvx415  divide 12345  5.0001    ->  2469.0 Inexact Rounded
-rdvx416  divide 12345  5.001     ->  2468.5 Inexact Rounded
-rdvx417  divide 12345  5.01      ->  2464.1 Inexact Rounded
-rdvx418  divide 12345  5.1       ->  2420.6 Inexact Rounded
-
-rounding: up
-rdvx501  divide 12345  1         ->  12345
-rdvx502  divide 12345  1.0001    ->  12344 Inexact Rounded
-rdvx503  divide 12345  1.001     ->  12333 Inexact Rounded
-rdvx504  divide 12345  1.01      ->  12223 Inexact Rounded
-rdvx505  divide 12345  1.1       ->  11223 Inexact Rounded
-rdvx506  divide 12355  4         ->   3088.8 Inexact Rounded
-rdvx507  divide 12345  4         ->   3086.3 Inexact Rounded
-rdvx508  divide 12355  4.0001    ->   3088.7 Inexact Rounded
-rdvx509  divide 12345  4.0001    ->   3086.2 Inexact Rounded
-rdvx510  divide 12345  4.9       ->   2519.4 Inexact Rounded
-rdvx511  divide 12345  4.99      ->   2474.0 Inexact Rounded
-rdvx512  divide 12345  4.999     ->   2469.5 Inexact Rounded
-rdvx513  divide 12345  4.9999    ->   2469.1 Inexact Rounded
-rdvx514  divide 12345  5         ->   2469
-rdvx515  divide 12345  5.0001    ->  2469.0 Inexact Rounded
-rdvx516  divide 12345  5.001     ->  2468.6 Inexact Rounded
-rdvx517  divide 12345  5.01      ->  2464.1 Inexact Rounded
-rdvx518  divide 12345  5.1       ->  2420.6 Inexact Rounded
-
-rounding: floor
-rdvx601  divide 12345  1         ->  12345
-rdvx602  divide 12345  1.0001    ->  12343 Inexact Rounded
-rdvx603  divide 12345  1.001     ->  12332 Inexact Rounded
-rdvx604  divide 12345  1.01      ->  12222 Inexact Rounded
-rdvx605  divide 12345  1.1       ->  11222 Inexact Rounded
-rdvx606  divide 12355  4         ->   3088.7 Inexact Rounded
-rdvx607  divide 12345  4         ->   3086.2 Inexact Rounded
-rdvx608  divide 12355  4.0001    ->   3088.6 Inexact Rounded
-rdvx609  divide 12345  4.0001    ->   3086.1 Inexact Rounded
-rdvx610  divide 12345  4.9       ->   2519.3 Inexact Rounded
-rdvx611  divide 12345  4.99      ->   2473.9 Inexact Rounded
-rdvx612  divide 12345  4.999     ->   2469.4 Inexact Rounded
-rdvx613  divide 12345  4.9999    ->   2469.0 Inexact Rounded
-rdvx614  divide 12345  5         ->   2469
-rdvx615  divide 12345  5.0001    ->  2468.9 Inexact Rounded
-rdvx616  divide 12345  5.001     ->  2468.5 Inexact Rounded
-rdvx617  divide 12345  5.01      ->  2464.0 Inexact Rounded
-rdvx618  divide 12345  5.1       ->  2420.5 Inexact Rounded
-
-rounding: ceiling
-rdvx701  divide 12345  1         ->  12345
-rdvx702  divide 12345  1.0001    ->  12344 Inexact Rounded
-rdvx703  divide 12345  1.001     ->  12333 Inexact Rounded
-rdvx704  divide 12345  1.01      ->  12223 Inexact Rounded
-rdvx705  divide 12345  1.1       ->  11223 Inexact Rounded
-rdvx706  divide 12355  4         ->   3088.8 Inexact Rounded
-rdvx707  divide 12345  4         ->   3086.3 Inexact Rounded
-rdvx708  divide 12355  4.0001    ->   3088.7 Inexact Rounded
-rdvx709  divide 12345  4.0001    ->   3086.2 Inexact Rounded
-rdvx710  divide 12345  4.9       ->   2519.4 Inexact Rounded
-rdvx711  divide 12345  4.99      ->   2474.0 Inexact Rounded
-rdvx712  divide 12345  4.999     ->   2469.5 Inexact Rounded
-rdvx713  divide 12345  4.9999    ->   2469.1 Inexact Rounded
-rdvx714  divide 12345  5         ->   2469
-rdvx715  divide 12345  5.0001    ->  2469.0 Inexact Rounded
-rdvx716  divide 12345  5.001     ->  2468.6 Inexact Rounded
-rdvx717  divide 12345  5.01      ->  2464.1 Inexact Rounded
-rdvx718  divide 12345  5.1       ->  2420.6 Inexact Rounded
-
--- [divideInteger and remainder unaffected]
-
--- Multiplication operator --------------------------------------------
-
-rounding: down
-rmux101  multiply 12345  1         ->  12345
-rmux102  multiply 12345  1.0001    ->  12346 Inexact Rounded
-rmux103  multiply 12345  1.001     ->  12357 Inexact Rounded
-rmux104  multiply 12345  1.01      ->  12468 Inexact Rounded
-rmux105  multiply 12345  1.1       ->  13579 Inexact Rounded
-rmux106  multiply 12345  4         ->  49380
-rmux107  multiply 12345  4.0001    ->  49381 Inexact Rounded
-rmux108  multiply 12345  4.9       ->  60490 Inexact Rounded
-rmux109  multiply 12345  4.99      ->  61601 Inexact Rounded
-rmux110  multiply 12345  4.999     ->  61712 Inexact Rounded
-rmux111  multiply 12345  4.9999    ->  61723 Inexact Rounded
-rmux112  multiply 12345  5         ->  61725
-rmux113  multiply 12345  5.0001    ->  61726 Inexact Rounded
-rmux114  multiply 12345  5.001     ->  61737 Inexact Rounded
-rmux115  multiply 12345  5.01      ->  61848 Inexact Rounded
-rmux116  multiply 12345  12        ->  1.4814E+5 Rounded
-rmux117  multiply 12345  13        ->  1.6048E+5 Inexact Rounded
-rmux118  multiply 12355  12        ->  1.4826E+5 Rounded
-rmux119  multiply 12355  13        ->  1.6061E+5 Inexact Rounded
-
-rounding: half_down
-rmux201  multiply 12345  1         ->  12345
-rmux202  multiply 12345  1.0001    ->  12346 Inexact Rounded
-rmux203  multiply 12345  1.001     ->  12357 Inexact Rounded
-rmux204  multiply 12345  1.01      ->  12468 Inexact Rounded
-rmux205  multiply 12345  1.1       ->  13579 Inexact Rounded
-rmux206  multiply 12345  4         ->  49380
-rmux207  multiply 12345  4.0001    ->  49381 Inexact Rounded
-rmux208  multiply 12345  4.9       ->  60490 Inexact Rounded
-rmux209  multiply 12345  4.99      ->  61602 Inexact Rounded
-rmux210  multiply 12345  4.999     ->  61713 Inexact Rounded
-rmux211  multiply 12345  4.9999    ->  61724 Inexact Rounded
-rmux212  multiply 12345  5         ->  61725
-rmux213  multiply 12345  5.0001    ->  61726 Inexact Rounded
-rmux214  multiply 12345  5.001     ->  61737 Inexact Rounded
-rmux215  multiply 12345  5.01      ->  61848 Inexact Rounded
-rmux216  multiply 12345  12        ->  1.4814E+5 Rounded
-rmux217  multiply 12345  13        ->  1.6048E+5 Inexact Rounded
-rmux218  multiply 12355  12        ->  1.4826E+5 Rounded
-rmux219  multiply 12355  13        ->  1.6061E+5 Inexact Rounded
-
-rounding: half_even
-rmux301  multiply 12345  1         ->  12345
-rmux302  multiply 12345  1.0001    ->  12346 Inexact Rounded
-rmux303  multiply 12345  1.001     ->  12357 Inexact Rounded
-rmux304  multiply 12345  1.01      ->  12468 Inexact Rounded
-rmux305  multiply 12345  1.1       ->  13580 Inexact Rounded
-rmux306  multiply 12345  4         ->  49380
-rmux307  multiply 12345  4.0001    ->  49381 Inexact Rounded
-rmux308  multiply 12345  4.9       ->  60490 Inexact Rounded
-rmux309  multiply 12345  4.99      ->  61602 Inexact Rounded
-rmux310  multiply 12345  4.999     ->  61713 Inexact Rounded
-rmux311  multiply 12345  4.9999    ->  61724 Inexact Rounded
-rmux312  multiply 12345  5         ->  61725
-rmux313  multiply 12345  5.0001    ->  61726 Inexact Rounded
-rmux314  multiply 12345  5.001     ->  61737 Inexact Rounded
-rmux315  multiply 12345  5.01      ->  61848 Inexact Rounded
-rmux316  multiply 12345  12        ->  1.4814E+5 Rounded
-rmux317  multiply 12345  13        ->  1.6048E+5 Inexact Rounded
-rmux318  multiply 12355  12        ->  1.4826E+5 Rounded
-rmux319  multiply 12355  13        ->  1.6062E+5 Inexact Rounded
-
-rounding: half_up
-rmux401  multiply 12345  1         ->  12345
-rmux402  multiply 12345  1.0001    ->  12346 Inexact Rounded
-rmux403  multiply 12345  1.001     ->  12357 Inexact Rounded
-rmux404  multiply 12345  1.01      ->  12468 Inexact Rounded
-rmux405  multiply 12345  1.1       ->  13580 Inexact Rounded
-rmux406  multiply 12345  4         ->  49380
-rmux407  multiply 12345  4.0001    ->  49381 Inexact Rounded
-rmux408  multiply 12345  4.9       ->  60491 Inexact Rounded
-rmux409  multiply 12345  4.99      ->  61602 Inexact Rounded
-rmux410  multiply 12345  4.999     ->  61713 Inexact Rounded
-rmux411  multiply 12345  4.9999    ->  61724 Inexact Rounded
-rmux412  multiply 12345  5         ->  61725
-rmux413  multiply 12345  5.0001    ->  61726 Inexact Rounded
-rmux414  multiply 12345  5.001     ->  61737 Inexact Rounded
-rmux415  multiply 12345  5.01      ->  61848 Inexact Rounded
-rmux416  multiply 12345  12        ->  1.4814E+5 Rounded
-rmux417  multiply 12345  13        ->  1.6049E+5 Inexact Rounded
-rmux418  multiply 12355  12        ->  1.4826E+5 Rounded
-rmux419  multiply 12355  13        ->  1.6062E+5 Inexact Rounded
-
-rounding: up
-rmux501  multiply 12345  1         ->  12345
-rmux502  multiply 12345  1.0001    ->  12347 Inexact Rounded
-rmux503  multiply 12345  1.001     ->  12358 Inexact Rounded
-rmux504  multiply 12345  1.01      ->  12469 Inexact Rounded
-rmux505  multiply 12345  1.1       ->  13580 Inexact Rounded
-rmux506  multiply 12345  4         ->  49380
-rmux507  multiply 12345  4.0001    ->  49382 Inexact Rounded
-rmux508  multiply 12345  4.9       ->  60491 Inexact Rounded
-rmux509  multiply 12345  4.99      ->  61602 Inexact Rounded
-rmux510  multiply 12345  4.999     ->  61713 Inexact Rounded
-rmux511  multiply 12345  4.9999    ->  61724 Inexact Rounded
-rmux512  multiply 12345  5         ->  61725
-rmux513  multiply 12345  5.0001    ->  61727 Inexact Rounded
-rmux514  multiply 12345  5.001     ->  61738 Inexact Rounded
-rmux515  multiply 12345  5.01      ->  61849 Inexact Rounded
-rmux516  multiply 12345  12        ->  1.4814E+5 Rounded
-rmux517  multiply 12345  13        ->  1.6049E+5 Inexact Rounded
-rmux518  multiply 12355  12        ->  1.4826E+5 Rounded
-rmux519  multiply 12355  13        ->  1.6062E+5 Inexact Rounded
--- [rmux516 & rmux518] can surprise
-
-rounding: floor
-rmux601  multiply 12345  1         ->  12345
-rmux602  multiply 12345  1.0001    ->  12346 Inexact Rounded
-rmux603  multiply 12345  1.001     ->  12357 Inexact Rounded
-rmux604  multiply 12345  1.01      ->  12468 Inexact Rounded
-rmux605  multiply 12345  1.1       ->  13579 Inexact Rounded
-rmux606  multiply 12345  4         ->  49380
-rmux607  multiply 12345  4.0001    ->  49381 Inexact Rounded
-rmux608  multiply 12345  4.9       ->  60490 Inexact Rounded
-rmux609  multiply 12345  4.99      ->  61601 Inexact Rounded
-rmux610  multiply 12345  4.999     ->  61712 Inexact Rounded
-rmux611  multiply 12345  4.9999    ->  61723 Inexact Rounded
-rmux612  multiply 12345  5         ->  61725
-rmux613  multiply 12345  5.0001    ->  61726 Inexact Rounded
-rmux614  multiply 12345  5.001     ->  61737 Inexact Rounded
-rmux615  multiply 12345  5.01      ->  61848 Inexact Rounded
-rmux616  multiply 12345  12        ->  1.4814E+5 Rounded
-rmux617  multiply 12345  13        ->  1.6048E+5 Inexact Rounded
-rmux618  multiply 12355  12        ->  1.4826E+5 Rounded
-rmux619  multiply 12355  13        ->  1.6061E+5 Inexact Rounded
-
-rounding: ceiling
-rmux701  multiply 12345  1         ->  12345
-rmux702  multiply 12345  1.0001    ->  12347 Inexact Rounded
-rmux703  multiply 12345  1.001     ->  12358 Inexact Rounded
-rmux704  multiply 12345  1.01      ->  12469 Inexact Rounded
-rmux705  multiply 12345  1.1       ->  13580 Inexact Rounded
-rmux706  multiply 12345  4         ->  49380
-rmux707  multiply 12345  4.0001    ->  49382 Inexact Rounded
-rmux708  multiply 12345  4.9       ->  60491 Inexact Rounded
-rmux709  multiply 12345  4.99      ->  61602 Inexact Rounded
-rmux710  multiply 12345  4.999     ->  61713 Inexact Rounded
-rmux711  multiply 12345  4.9999    ->  61724 Inexact Rounded
-rmux712  multiply 12345  5         ->  61725
-rmux713  multiply 12345  5.0001    ->  61727 Inexact Rounded
-rmux714  multiply 12345  5.001     ->  61738 Inexact Rounded
-rmux715  multiply 12345  5.01      ->  61849 Inexact Rounded
-rmux716  multiply 12345  12        ->  1.4814E+5 Rounded
-rmux717  multiply 12345  13        ->  1.6049E+5 Inexact Rounded
-rmux718  multiply 12355  12        ->  1.4826E+5 Rounded
-rmux719  multiply 12355  13        ->  1.6062E+5 Inexact Rounded
-
--- Power operator -----------------------------------------------------
-
-rounding: down
-rpox101  power 12345  -5        ->  3.4877E-21 Inexact Rounded
-rpox102  power 12345  -4        ->  4.3056E-17 Inexact Rounded
-rpox103  power 12345  -3        ->  5.3152E-13 Inexact Rounded
-rpox104  power 12345  -2        ->  6.5617E-9 Inexact Rounded
-rpox105  power 12345  -1        ->  0.000081004 Inexact Rounded
-rpox106  power 12345  0         ->  1
-rpox107  power 12345  1         ->  12345
-rpox108  power 12345  2         ->  1.5239E+8 Inexact Rounded
-rpox109  power 12345  3         ->  1.8813E+12 Inexact Rounded
-rpox110  power 12345  4         ->  2.3225E+16 Inexact Rounded
-rpox111  power 12345  5         ->  2.8671E+20 Inexact Rounded
-rpox112  power   415  2         ->  1.7222E+5 Inexact Rounded
-rpox113  power    75  3         ->  4.2187E+5 Inexact Rounded
-
-rounding: half_down
-rpox201  power 12345  -5        ->  3.4877E-21 Inexact Rounded
-rpox202  power 12345  -4        ->  4.3056E-17 Inexact Rounded
-rpox203  power 12345  -3        ->  5.3153E-13 Inexact Rounded
-rpox204  power 12345  -2        ->  6.5617E-9 Inexact Rounded
-rpox205  power 12345  -1        ->  0.000081004 Inexact Rounded
-rpox206  power 12345  0         ->  1
-rpox207  power 12345  1         ->  12345
-rpox208  power 12345  2         ->  1.5240E+8 Inexact Rounded
-rpox209  power 12345  3         ->  1.8814E+12 Inexact Rounded
-rpox210  power 12345  4         ->  2.3225E+16 Inexact Rounded
-rpox211  power 12345  5         ->  2.8672E+20 Inexact Rounded
-rpox212  power   415  2         ->  1.7222E+5 Inexact Rounded
-rpox213  power    75  3         ->  4.2187E+5 Inexact Rounded
-
-rounding: half_even
-rpox301  power 12345  -5        ->  3.4877E-21 Inexact Rounded
-rpox302  power 12345  -4        ->  4.3056E-17 Inexact Rounded
-rpox303  power 12345  -3        ->  5.3153E-13 Inexact Rounded
-rpox304  power 12345  -2        ->  6.5617E-9 Inexact Rounded
-rpox305  power 12345  -1        ->  0.000081004 Inexact Rounded
-rpox306  power 12345  0         ->  1
-rpox307  power 12345  1         ->  12345
-rpox308  power 12345  2         ->  1.5240E+8 Inexact Rounded
-rpox309  power 12345  3         ->  1.8814E+12 Inexact Rounded
-rpox310  power 12345  4         ->  2.3225E+16 Inexact Rounded
-rpox311  power 12345  5         ->  2.8672E+20 Inexact Rounded
-rpox312  power   415  2         ->  1.7222E+5 Inexact Rounded
-rpox313  power    75  3         ->  4.2188E+5 Inexact Rounded
-
-rounding: half_up
-rpox401  power 12345  -5        ->  3.4877E-21 Inexact Rounded
-rpox402  power 12345  -4        ->  4.3056E-17 Inexact Rounded
-rpox403  power 12345  -3        ->  5.3153E-13 Inexact Rounded
-rpox404  power 12345  -2        ->  6.5617E-9 Inexact Rounded
-rpox405  power 12345  -1        ->  0.000081004 Inexact Rounded
-rpox406  power 12345  0         ->  1
-rpox407  power 12345  1         ->  12345
-rpox408  power 12345  2         ->  1.5240E+8 Inexact Rounded
-rpox409  power 12345  3         ->  1.8814E+12 Inexact Rounded
-rpox410  power 12345  4         ->  2.3225E+16 Inexact Rounded
-rpox411  power 12345  5         ->  2.8672E+20 Inexact Rounded
-rpox412  power   415  2         ->  1.7223E+5 Inexact Rounded
-rpox413  power    75  3         ->  4.2188E+5 Inexact Rounded
-
-rounding: up
-rpox501  power 12345  -5        ->  3.4878E-21 Inexact Rounded
-rpox502  power 12345  -4        ->  4.3057E-17 Inexact Rounded
-rpox503  power 12345  -3        ->  5.3153E-13 Inexact Rounded
-rpox504  power 12345  -2        ->  6.5618E-9 Inexact Rounded
-rpox505  power 12345  -1        ->  0.000081005 Inexact Rounded
-rpox506  power 12345  0         ->  1
-rpox507  power 12345  1         ->  12345
-rpox508  power 12345  2         ->  1.5240E+8 Inexact Rounded
-rpox509  power 12345  3         ->  1.8814E+12 Inexact Rounded
-rpox510  power 12345  4         ->  2.3226E+16 Inexact Rounded
-rpox511  power 12345  5         ->  2.8672E+20 Inexact Rounded
-rpox512  power   415  2         ->  1.7223E+5 Inexact Rounded
-rpox513  power    75  3         ->  4.2188E+5 Inexact Rounded
-
-rounding: floor
-rpox601  power 12345  -5        ->  3.4877E-21 Inexact Rounded
-rpox602  power 12345  -4        ->  4.3056E-17 Inexact Rounded
-rpox603  power 12345  -3        ->  5.3152E-13 Inexact Rounded
-rpox604  power 12345  -2        ->  6.5617E-9 Inexact Rounded
-rpox605  power 12345  -1        ->  0.000081004 Inexact Rounded
-rpox606  power 12345  0         ->  1
-rpox607  power 12345  1         ->  12345
-rpox608  power 12345  2         ->  1.5239E+8 Inexact Rounded
-rpox609  power 12345  3         ->  1.8813E+12 Inexact Rounded
-rpox610  power 12345  4         ->  2.3225E+16 Inexact Rounded
-rpox611  power 12345  5         ->  2.8671E+20 Inexact Rounded
-rpox612  power   415  2         ->  1.7222E+5 Inexact Rounded
-rpox613  power    75  3         ->  4.2187E+5 Inexact Rounded
-
-rounding: ceiling
-rpox701  power 12345  -5        ->  3.4878E-21 Inexact Rounded
-rpox702  power 12345  -4        ->  4.3057E-17 Inexact Rounded
-rpox703  power 12345  -3        ->  5.3153E-13 Inexact Rounded
-rpox704  power 12345  -2        ->  6.5618E-9 Inexact Rounded
-rpox705  power 12345  -1        ->  0.000081005 Inexact Rounded
-rpox706  power 12345  0         ->  1
-rpox707  power 12345  1         ->  12345
-rpox708  power 12345  2         ->  1.5240E+8 Inexact Rounded
-rpox709  power 12345  3         ->  1.8814E+12 Inexact Rounded
-rpox710  power 12345  4         ->  2.3226E+16 Inexact Rounded
-rpox711  power 12345  5         ->  2.8672E+20 Inexact Rounded
-rpox712  power   415  2         ->  1.7223E+5 Inexact Rounded
-rpox713  power    75  3         ->  4.2188E+5 Inexact Rounded
-
--- Underflow Subnormal and overflow values vary with rounding mode and sign
-maxexponent: 999999999
-minexponent: -999999999
-rounding: down
-rovx100  multiply   10    9E+999999999 ->  9.9999E+999999999 Overflow Inexact Rounded
-rovx101  multiply  -10    9E+999999999 -> -9.9999E+999999999 Overflow Inexact Rounded
-rovx102  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
-rovx104  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
-
-rounding: up
-rovx110  multiply   10    9E+999999999 ->  Infinity Overflow Inexact Rounded
-rovx111  multiply  -10    9E+999999999 -> -Infinity Overflow Inexact Rounded
-rovx112  divide     1E-9  9E+999999999 ->  1E-1000000003 Underflow Subnormal Inexact Rounded
-rovx114  divide    -1E-9  9E+999999999 -> -1E-1000000003 Underflow Subnormal Inexact Rounded
-
-rounding: ceiling
-rovx120  multiply   10    9E+999999999 ->  Infinity Overflow Inexact Rounded
-rovx121  multiply  -10    9E+999999999 -> -9.9999E+999999999 Overflow Inexact Rounded
-rovx122  divide     1E-9  9E+999999999 ->  1E-1000000003 Underflow Subnormal Inexact Rounded
-rovx124  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
-
-rounding: floor
-rovx130  multiply   10    9E+999999999 ->  9.9999E+999999999 Overflow Inexact Rounded
-rovx131  multiply  -10    9E+999999999 -> -Infinity Overflow Inexact Rounded
-rovx132  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
-rovx134  divide    -1E-9  9E+999999999 -> -1E-1000000003 Underflow Subnormal Inexact Rounded
-
-rounding: half_up
-rovx140  multiply   10    9E+999999999 ->  Infinity Overflow Inexact Rounded
-rovx141  multiply  -10    9E+999999999 -> -Infinity Overflow Inexact Rounded
-rovx142  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
-rovx144  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
-
-rounding: half_even
-rovx150  multiply   10    9E+999999999 ->  Infinity Overflow Inexact Rounded
-rovx151  multiply  -10    9E+999999999 -> -Infinity Overflow Inexact Rounded
-rovx152  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
-rovx154  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
-
-rounding: half_down
-rovx160  multiply   10    9E+999999999 ->  Infinity Overflow Inexact Rounded
-rovx161  multiply  -10    9E+999999999 -> -Infinity Overflow Inexact Rounded
-rovx162  divide     1E-9  9E+999999999 ->  0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
-rovx164  divide    -1E-9  9E+999999999 -> -0E-1000000003 Underflow Subnormal Inexact Rounded Clamped
-
--- check maximum finite value over a range of precisions
-rounding: down
-precision: 1
-rovx200  multiply   10    9E+999999999 ->  9E+999999999 Overflow Inexact Rounded
-rovx201  multiply  -10    9E+999999999 -> -9E+999999999 Overflow Inexact Rounded
-precision: 2
-rovx210  multiply   10    9E+999999999 ->  9.9E+999999999 Overflow Inexact Rounded
-rovx211  multiply  -10    9E+999999999 -> -9.9E+999999999 Overflow Inexact Rounded
-precision: 3
-rovx220  multiply   10    9E+999999999 ->  9.99E+999999999 Overflow Inexact Rounded
-rovx221  multiply  -10    9E+999999999 -> -9.99E+999999999 Overflow Inexact Rounded
-precision: 4
-rovx230  multiply   10    9E+999999999 ->  9.999E+999999999 Overflow Inexact Rounded
-rovx231  multiply  -10    9E+999999999 -> -9.999E+999999999 Overflow Inexact Rounded
-precision: 5
-rovx240  multiply   10    9E+999999999 ->  9.9999E+999999999 Overflow Inexact Rounded
-rovx241  multiply  -10    9E+999999999 -> -9.9999E+999999999 Overflow Inexact Rounded
-precision: 6
-rovx250  multiply   10    9E+999999999 ->  9.99999E+999999999 Overflow Inexact Rounded
-rovx251  multiply  -10    9E+999999999 -> -9.99999E+999999999 Overflow Inexact Rounded
-precision: 7
-rovx260  multiply   10    9E+999999999 ->  9.999999E+999999999 Overflow Inexact Rounded
-rovx261  multiply  -10    9E+999999999 -> -9.999999E+999999999 Overflow Inexact Rounded
-precision: 8
-rovx270  multiply   10    9E+999999999 ->  9.9999999E+999999999 Overflow Inexact Rounded
-rovx271  multiply  -10    9E+999999999 -> -9.9999999E+999999999 Overflow Inexact Rounded
-precision: 9
-rovx280  multiply   10    9E+999999999 ->  9.99999999E+999999999 Overflow Inexact Rounded
-rovx281  multiply  -10    9E+999999999 -> -9.99999999E+999999999 Overflow Inexact Rounded
-precision: 10
-rovx290  multiply   10    9E+999999999 ->  9.999999999E+999999999 Overflow Inexact Rounded
-rovx291  multiply  -10    9E+999999999 -> -9.999999999E+999999999 Overflow Inexact Rounded
-
--- reprise rounding mode effect (using multiplies so precision directive used)
-precision: 9
-maxexponent: 999999999
-rounding: half_up
-rmex400 multiply -9.999E+999999999 10 -> -Infinity Overflow Inexact Rounded
-rmex401 multiply  9.999E+999999999 10 ->  Infinity Overflow Inexact Rounded
-rounding: half_down
-rmex402 multiply -9.999E+999999999 10 -> -Infinity Overflow Inexact Rounded
-rmex403 multiply  9.999E+999999999 10 ->  Infinity Overflow Inexact Rounded
-rounding: half_even
-rmex404 multiply -9.999E+999999999 10 -> -Infinity Overflow Inexact Rounded
-rmex405 multiply  9.999E+999999999 10 ->  Infinity Overflow Inexact Rounded
-rounding: floor
-rmex406 multiply -9.999E+999999999 10 -> -Infinity Overflow Inexact Rounded
-rmex407 multiply  9.999E+999999999 10 ->  9.99999999E+999999999 Overflow Inexact Rounded
-rounding: ceiling
-rmex408 multiply -9.999E+999999999 10 -> -9.99999999E+999999999 Overflow Inexact Rounded
-rmex409 multiply  9.999E+999999999 10 ->  Infinity Overflow Inexact Rounded
-rounding: up
-rmex410 multiply -9.999E+999999999 10 -> -Infinity Overflow Inexact Rounded
-rmex411 multiply  9.999E+999999999 10 ->  Infinity Overflow Inexact Rounded
-rounding: down
-rmex412 multiply -9.999E+999999999 10 -> -9.99999999E+999999999 Overflow Inexact Rounded
-rmex413 multiply  9.999E+999999999 10 ->  9.99999999E+999999999 Overflow Inexact Rounded
-
------ Round-for-reround -----
-rounding:    05up
-precision:   5           -- for easier visual inspection
-maxExponent: 999
-minexponent: -999
-
--- basic rounding; really is just 0 and 5 up
-r05up001 add 12340  0.001     -> 12341 Inexact Rounded
-r05up002 add 12341  0.001     -> 12341 Inexact Rounded
-r05up003 add 12342  0.001     -> 12342 Inexact Rounded
-r05up004 add 12343  0.001     -> 12343 Inexact Rounded
-r05up005 add 12344  0.001     -> 12344 Inexact Rounded
-r05up006 add 12345  0.001     -> 12346 Inexact Rounded
-r05up007 add 12346  0.001     -> 12346 Inexact Rounded
-r05up008 add 12347  0.001     -> 12347 Inexact Rounded
-r05up009 add 12348  0.001     -> 12348 Inexact Rounded
-r05up010 add 12349  0.001     -> 12349 Inexact Rounded
-
-r05up011 add 12340  0.000     -> 12340 Rounded
-r05up012 add 12341  0.000     -> 12341 Rounded
-r05up013 add 12342  0.000     -> 12342 Rounded
-r05up014 add 12343  0.000     -> 12343 Rounded
-r05up015 add 12344  0.000     -> 12344 Rounded
-r05up016 add 12345  0.000     -> 12345 Rounded
-r05up017 add 12346  0.000     -> 12346 Rounded
-r05up018 add 12347  0.000     -> 12347 Rounded
-r05up019 add 12348  0.000     -> 12348 Rounded
-r05up020 add 12349  0.000     -> 12349 Rounded
-
-r05up021 add 12340  0.901     -> 12341 Inexact Rounded
-r05up022 add 12341  0.901     -> 12341 Inexact Rounded
-r05up023 add 12342  0.901     -> 12342 Inexact Rounded
-r05up024 add 12343  0.901     -> 12343 Inexact Rounded
-r05up025 add 12344  0.901     -> 12344 Inexact Rounded
-r05up026 add 12345  0.901     -> 12346 Inexact Rounded
-r05up027 add 12346  0.901     -> 12346 Inexact Rounded
-r05up028 add 12347  0.901     -> 12347 Inexact Rounded
-r05up029 add 12348  0.901     -> 12348 Inexact Rounded
-r05up030 add 12349  0.901     -> 12349 Inexact Rounded
-
-r05up031 add -12340  -0.001     -> -12341 Inexact Rounded
-r05up032 add -12341  -0.001     -> -12341 Inexact Rounded
-r05up033 add -12342  -0.001     -> -12342 Inexact Rounded
-r05up034 add -12343  -0.001     -> -12343 Inexact Rounded
-r05up035 add -12344  -0.001     -> -12344 Inexact Rounded
-r05up036 add -12345  -0.001     -> -12346 Inexact Rounded
-r05up037 add -12346  -0.001     -> -12346 Inexact Rounded
-r05up038 add -12347  -0.001     -> -12347 Inexact Rounded
-r05up039 add -12348  -0.001     -> -12348 Inexact Rounded
-r05up040 add -12349  -0.001     -> -12349 Inexact Rounded
-
-r05up041 add -12340   0.001     -> -12339 Inexact Rounded
-r05up042 add -12341   0.001     -> -12341 Inexact Rounded
-r05up043 add -12342   0.001     -> -12341 Inexact Rounded
-r05up044 add -12343   0.001     -> -12342 Inexact Rounded
-r05up045 add -12344   0.001     -> -12343 Inexact Rounded
-r05up046 add -12345   0.001     -> -12344 Inexact Rounded
-r05up047 add -12346   0.001     -> -12346 Inexact Rounded
-r05up048 add -12347   0.001     -> -12346 Inexact Rounded
-r05up049 add -12348   0.001     -> -12347 Inexact Rounded
-r05up050 add -12349   0.001     -> -12348 Inexact Rounded
-
--- Addition operators -------------------------------------------------
--- [The first few of these check negative residue possibilities; these
--- cases may be implemented as a negative residue in fastpaths]
-
-r0adx100  add 12345 -0.1       -> 12344 Inexact Rounded
-r0adx101  add 12345 -0.01      -> 12344 Inexact Rounded
-r0adx102  add 12345 -0.001     -> 12344 Inexact Rounded
-r0adx103  add 12345 -0.00001   -> 12344 Inexact Rounded
-r0adx104  add 12345 -0.000001  -> 12344 Inexact Rounded
-r0adx105  add 12345 -0.0000001 -> 12344 Inexact Rounded
-r0adx106  add 12345  0         -> 12345
-r0adx107  add 12345  0.0000001 -> 12346 Inexact Rounded
-r0adx108  add 12345  0.000001  -> 12346 Inexact Rounded
-r0adx109  add 12345  0.00001   -> 12346 Inexact Rounded
-r0adx110  add 12345  0.0001    -> 12346 Inexact Rounded
-r0adx111  add 12345  0.001     -> 12346 Inexact Rounded
-r0adx112  add 12345  0.01      -> 12346 Inexact Rounded
-r0adx113  add 12345  0.1       -> 12346 Inexact Rounded
-
-r0adx115  add 12346  0.49999   -> 12346 Inexact Rounded
-r0adx116  add 12346  0.5       -> 12346 Inexact Rounded
-r0adx117  add 12346  0.50001   -> 12346 Inexact Rounded
-
-r0adx120  add 12345  0.4       -> 12346 Inexact Rounded
-r0adx121  add 12345  0.49      -> 12346 Inexact Rounded
-r0adx122  add 12345  0.499     -> 12346 Inexact Rounded
-r0adx123  add 12345  0.49999   -> 12346 Inexact Rounded
-r0adx124  add 12345  0.5       -> 12346 Inexact Rounded
-r0adx125  add 12345  0.50001   -> 12346 Inexact Rounded
-r0adx126  add 12345  0.5001    -> 12346 Inexact Rounded
-r0adx127  add 12345  0.501     -> 12346 Inexact Rounded
-r0adx128  add 12345  0.51      -> 12346 Inexact Rounded
-r0adx129  add 12345  0.6       -> 12346 Inexact Rounded
-
--- negatives...
-
-r0sux100  add -12345 -0.1       -> -12346 Inexact Rounded
-r0sux101  add -12345 -0.01      -> -12346 Inexact Rounded
-r0sux102  add -12345 -0.001     -> -12346 Inexact Rounded
-r0sux103  add -12345 -0.00001   -> -12346 Inexact Rounded
-r0sux104  add -12345 -0.000001  -> -12346 Inexact Rounded
-r0sux105  add -12345 -0.0000001 -> -12346 Inexact Rounded
-r0sux106  add -12345  0         -> -12345
-r0sux107  add -12345  0.0000001 -> -12344 Inexact Rounded
-r0sux108  add -12345  0.000001  -> -12344 Inexact Rounded
-r0sux109  add -12345  0.00001   -> -12344 Inexact Rounded
-r0sux110  add -12345  0.0001    -> -12344 Inexact Rounded
-r0sux111  add -12345  0.001     -> -12344 Inexact Rounded
-r0sux112  add -12345  0.01      -> -12344 Inexact Rounded
-r0sux113  add -12345  0.1       -> -12344 Inexact Rounded
-
-r0sux115  add -12346  0.49999   -> -12346 Inexact Rounded
-r0sux116  add -12346  0.5       -> -12346 Inexact Rounded
-r0sux117  add -12346  0.50001   -> -12346 Inexact Rounded
-
-r0sux120  add -12345  0.4       -> -12344 Inexact Rounded
-r0sux121  add -12345  0.49      -> -12344 Inexact Rounded
-r0sux122  add -12345  0.499     -> -12344 Inexact Rounded
-r0sux123  add -12345  0.49999   -> -12344 Inexact Rounded
-r0sux124  add -12345  0.5       -> -12344 Inexact Rounded
-r0sux125  add -12345  0.50001   -> -12344 Inexact Rounded
-r0sux126  add -12345  0.5001    -> -12344 Inexact Rounded
-r0sux127  add -12345  0.501     -> -12344 Inexact Rounded
-r0sux128  add -12345  0.51      -> -12344 Inexact Rounded
-r0sux129  add -12345  0.6       -> -12344 Inexact Rounded
-
--- Check cancellation subtractions
--- (The IEEE 854 'curious rule' in $6.3)
-
-r0zex001  add  0    0    ->  0
-r0zex002  add  0   -0    ->  0
-r0zex003  add -0    0    ->  0
-r0zex004  add -0   -0    -> -0
-r0zex005  add  1   -1    ->  0
-r0zex006  add -1    1    ->  0
-r0zex007  add  1.5 -1.5  ->  0.0
-r0zex008  add -1.5  1.5  ->  0.0
-r0zex009  add  2   -2    ->  0
-r0zex010  add -2    2    ->  0
-
-
--- Division operators -------------------------------------------------
-
-r0dvx101  divide 12345  1         ->  12345
-r0dvx102  divide 12345  1.0001    ->  12343 Inexact Rounded
-r0dvx103  divide 12345  1.001     ->  12332 Inexact Rounded
-r0dvx104  divide 12345  1.01      ->  12222 Inexact Rounded
-r0dvx105  divide 12345  1.1       ->  11222 Inexact Rounded
-r0dvx106  divide 12355  4         ->   3088.7 Inexact Rounded
-r0dvx107  divide 12345  4         ->   3086.2 Inexact Rounded
-r0dvx108  divide 12355  4.0001    ->   3088.6 Inexact Rounded
-r0dvx109  divide 12345  4.0001    ->   3086.1 Inexact Rounded
-r0dvx110  divide 12345  4.9       ->   2519.3 Inexact Rounded
-r0dvx111  divide 12345  4.99      ->   2473.9 Inexact Rounded
-r0dvx112  divide 12345  4.999     ->   2469.4 Inexact Rounded
-r0dvx113  divide 12345  4.9999    ->   2469.1 Inexact Rounded
-r0dvx114  divide 12345  5         ->   2469
-r0dvx115  divide 12345  5.0001    ->  2468.9 Inexact Rounded
-r0dvx116  divide 12345  5.001     ->  2468.6 Inexact Rounded
-r0dvx117  divide 12345  5.01      ->  2464.1 Inexact Rounded
-r0dvx118  divide 12345  5.1       ->  2420.6 Inexact Rounded
-
--- [divideInteger and remainder unaffected]
-
--- Multiplication operator --------------------------------------------
-
-r0mux101  multiply 12345  1         ->  12345
-r0mux102  multiply 12345  1.0001    ->  12346 Inexact Rounded
-r0mux103  multiply 12345  1.001     ->  12357 Inexact Rounded
-r0mux104  multiply 12345  1.01      ->  12468 Inexact Rounded
-r0mux105  multiply 12345  1.1       ->  13579 Inexact Rounded
-r0mux106  multiply 12345  4         ->  49380
-r0mux107  multiply 12345  4.0001    ->  49381 Inexact Rounded
-r0mux108  multiply 12345  4.9       ->  60491 Inexact Rounded
-r0mux109  multiply 12345  4.99      ->  61601 Inexact Rounded
-r0mux110  multiply 12345  4.999     ->  61712 Inexact Rounded
-r0mux111  multiply 12345  4.9999    ->  61723 Inexact Rounded
-r0mux112  multiply 12345  5         ->  61725
-r0mux113  multiply 12345  5.0001    ->  61726 Inexact Rounded
-r0mux114  multiply 12345  5.001     ->  61737 Inexact Rounded
-r0mux115  multiply 12345  5.01      ->  61848 Inexact Rounded
-r0mux116  multiply 12345  12        ->  1.4814E+5 Rounded
-r0mux117  multiply 12345  13        ->  1.6048E+5 Inexact Rounded
-r0mux118  multiply 12355  12        ->  1.4826E+5 Rounded
-r0mux119  multiply 12355  13        ->  1.6061E+5 Inexact Rounded
-
-
--- Power operator -----------------------------------------------------
-
-r0pox101  power 12345  -5        ->  3.4877E-21 Inexact Rounded
-r0pox102  power 12345  -4        ->  4.3056E-17 Inexact Rounded
-r0pox103  power 12345  -3        ->  5.3152E-13 Inexact Rounded
-r0pox104  power 12345  -2        ->  6.5617E-9 Inexact Rounded
-r0pox105  power 12345  -1        ->  0.000081004 Inexact Rounded
-r0pox106  power 12345  0         ->  1
-r0pox107  power 12345  1         ->  12345
-r0pox108  power 12345  2         ->  1.5239E+8 Inexact Rounded
-r0pox109  power 12345  3         ->  1.8813E+12 Inexact Rounded
-r0pox110  power 12345  4         ->  2.3226E+16 Inexact Rounded
-r0pox111  power 12345  5         ->  2.8671E+20 Inexact Rounded
-r0pox112  power   415  2         ->  1.7222E+5 Inexact Rounded
-r0pox113  power    75  3         ->  4.2187E+5 Inexact Rounded
-
-
--- Underflow Subnormal and overflow values vary with rounding mode and sign
-maxexponent: 999999999
-minexponent: -999999999
--- [round down gives Nmax on first two and .0E... on the next two]
-r0ovx100  multiply   10    9E+999999999 ->  9.9999E+999999999 Overflow Inexact Rounded
-r0ovx101  multiply  -10    9E+999999999 -> -9.9999E+999999999 Overflow Inexact Rounded
-r0ovx102  divide     1E-9  9E+999999999 ->  1E-1000000003 Underflow Subnormal Inexact Rounded
-r0ovx104  divide    -1E-9  9E+999999999 -> -1E-1000000003 Underflow Subnormal Inexact Rounded
-
--- reprise rounding mode effect (using multiplies so precision directive used)
-precision: 9
-maxexponent: 999999999
-r0mex412 multiply -9.999E+999999999 10 -> -9.99999999E+999999999 Overflow Inexact Rounded
-r0mex413 multiply  9.999E+999999999 10 ->  9.99999999E+999999999 Overflow Inexact Rounded
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/samequantum.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/samequantum.decTest
deleted file mode 100644
index f64a922..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/samequantum.decTest
+++ /dev/null
@@ -1,389 +0,0 @@
-------------------------------------------------------------------------
--- samequantum.decTest -- check quantums match                        --
--- Copyright (c) IBM Corporation, 2001, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minExponent: -999
-
-samq001 samequantum  0      0      ->  1
-samq002 samequantum  0      1      ->  1
-samq003 samequantum  1      0      ->  1
-samq004 samequantum  1      1      ->  1
-
-samq011 samequantum  10     1E+1   -> 0
-samq012 samequantum  10E+1  10E+1  -> 1
-samq013 samequantum  100    10E+1  -> 0
-samq014 samequantum  100    1E+2   -> 0
-samq015 samequantum  0.1    1E-2   -> 0
-samq016 samequantum  0.1    1E-1   -> 1
-samq017 samequantum  0.1    1E-0   -> 0
-samq018 samequantum  999    999    -> 1
-samq019 samequantum  999E-1 99.9   -> 1
-samq020 samequantum  111E-1 22.2   -> 1
-samq021 samequantum  111E-1 1234.2 -> 1
-
--- zeros
-samq030 samequantum  0.0    1.1    -> 1
-samq031 samequantum  0.0    1.11   -> 0
-samq032 samequantum  0.0    0      -> 0
-samq033 samequantum  0.0    0.0    -> 1
-samq034 samequantum  0.0    0.00   -> 0
-samq035 samequantum  0E+1   0E+0   -> 0
-samq036 samequantum  0E+1   0E+1   -> 1
-samq037 samequantum  0E+1   0E+2   -> 0
-samq038 samequantum  0E-17  0E-16  -> 0
-samq039 samequantum  0E-17  0E-17  -> 1
-samq040 samequantum  0E-17  0E-18  -> 0
-samq041 samequantum  0E-17  0.0E-15 -> 0
-samq042 samequantum  0E-17  0.0E-16 -> 1
-samq043 samequantum  0E-17  0.0E-17 -> 0
-samq044 samequantum -0E-17  0.0E-16 -> 1
-samq045 samequantum  0E-17 -0.0E-17 -> 0
-samq046 samequantum  0E-17 -0.0E-16 -> 1
-samq047 samequantum -0E-17  0.0E-17 -> 0
-samq048 samequantum -0E-17 -0.0E-16 -> 1
-samq049 samequantum -0E-17 -0.0E-17 -> 0
-
--- Nmax, Nmin, Ntiny
-samq051 samequantum  9.99999999E+999    9.99999999E+999  -> 1
-samq052 samequantum  1E-999             1E-999           -> 1
-samq053 samequantum  1.00000000E-999    1.00000000E-999  -> 1
-samq054 samequantum  1E-1007            1E-1007          -> 1
-samq055 samequantum  9.99999999E+999    9.99999999E+999  -> 1
-samq056 samequantum  1E-999             1E-999           -> 1
-samq057 samequantum  1.00000000E-999    1.00000000E-999  -> 1
-samq058 samequantum  1E-1007            1E-1007          -> 1
-
-samq061 samequantum  -1E-1007           -1E-1007         -> 1
-samq062 samequantum  -1.00000000E-999   -1.00000000E-999 -> 1
-samq063 samequantum  -1E-999            -1E-999          -> 1
-samq064 samequantum  -9.99999999E+999   -9.99999999E+999 -> 1
-samq065 samequantum  -1E-1007           -1E-1007         -> 1
-samq066 samequantum  -1.00000000E-999   -1.00000000E-999 -> 1
-samq067 samequantum  -1E-999            -1E-999          -> 1
-samq068 samequantum  -9.99999999E+999   -9.99999999E+999 -> 1
-
-samq071 samequantum  -4E-1007           -1E-1007         -> 1
-samq072 samequantum  -4.00000000E-999   -1.00004000E-999 -> 1
-samq073 samequantum  -4E-999            -1E-999          -> 1
-samq074 samequantum  -4.99999999E+999   -9.99949999E+999 -> 1
-samq075 samequantum  -4E-1007           -1E-1007         -> 1
-samq076 samequantum  -4.00000000E-999   -1.00400000E-999 -> 1
-samq077 samequantum  -4E-999            -1E-999          -> 1
-samq078 samequantum  -4.99999999E+999   -9.94999999E+999 -> 1
-
-samq081 samequantum  -4E-1006           -1E-1007         -> 0
-samq082 samequantum  -4.00000000E-999   -1.00004000E-996 -> 0
-samq083 samequantum  -4E-996            -1E-999          -> 0
-samq084 samequantum  -4.99999999E+999   -9.99949999E+996 -> 0
-samq085 samequantum  -4E-1006           -1E-1007         -> 0
-samq086 samequantum  -4.00000000E-999   -1.00400000E-996 -> 0
-samq087 samequantum  -4E-996            -1E-999          -> 0
-samq088 samequantum  -4.99999999E+999   -9.94999999E+996 -> 0
-
--- specials & combinations
-samq0110 samequantum  -Inf    -Inf   -> 1
-samq0111 samequantum  -Inf     Inf   -> 1
-samq0112 samequantum  -Inf     NaN   -> 0
-samq0113 samequantum  -Inf    -7E+3  -> 0
-samq0114 samequantum  -Inf    -7     -> 0
-samq0115 samequantum  -Inf    -7E-3  -> 0
-samq0116 samequantum  -Inf    -0E-3  -> 0
-samq0117 samequantum  -Inf    -0     -> 0
-samq0118 samequantum  -Inf    -0E+3  -> 0
-samq0119 samequantum  -Inf     0E-3  -> 0
-samq0120 samequantum  -Inf     0     -> 0
-samq0121 samequantum  -Inf     0E+3  -> 0
-samq0122 samequantum  -Inf     7E-3  -> 0
-samq0123 samequantum  -Inf     7     -> 0
-samq0124 samequantum  -Inf     7E+3  -> 0
-samq0125 samequantum  -Inf     sNaN  -> 0
-
-samq0210 samequantum   Inf    -Inf   -> 1
-samq0211 samequantum   Inf     Inf   -> 1
-samq0212 samequantum   Inf     NaN   -> 0
-samq0213 samequantum   Inf    -7E+3  -> 0
-samq0214 samequantum   Inf    -7     -> 0
-samq0215 samequantum   Inf    -7E-3  -> 0
-samq0216 samequantum   Inf    -0E-3  -> 0
-samq0217 samequantum   Inf    -0     -> 0
-samq0218 samequantum   Inf    -0E+3  -> 0
-samq0219 samequantum   Inf     0E-3  -> 0
-samq0220 samequantum   Inf     0     -> 0
-samq0221 samequantum   Inf     0E+3  -> 0
-samq0222 samequantum   Inf     7E-3  -> 0
-samq0223 samequantum   Inf     7     -> 0
-samq0224 samequantum   Inf     7E+3  -> 0
-samq0225 samequantum   Inf     sNaN  -> 0
-
-samq0310 samequantum   NaN    -Inf   -> 0
-samq0311 samequantum   NaN     Inf   -> 0
-samq0312 samequantum   NaN     NaN   -> 1
-samq0313 samequantum   NaN    -7E+3  -> 0
-samq0314 samequantum   NaN    -7     -> 0
-samq0315 samequantum   NaN    -7E-3  -> 0
-samq0316 samequantum   NaN    -0E-3  -> 0
-samq0317 samequantum   NaN    -0     -> 0
-samq0318 samequantum   NaN    -0E+3  -> 0
-samq0319 samequantum   NaN     0E-3  -> 0
-samq0320 samequantum   NaN     0     -> 0
-samq0321 samequantum   NaN     0E+3  -> 0
-samq0322 samequantum   NaN     7E-3  -> 0
-samq0323 samequantum   NaN     7     -> 0
-samq0324 samequantum   NaN     7E+3  -> 0
-samq0325 samequantum   NaN     sNaN  -> 1
-
-samq0410 samequantum  -7E+3    -Inf   -> 0
-samq0411 samequantum  -7E+3     Inf   -> 0
-samq0412 samequantum  -7E+3     NaN   -> 0
-samq0413 samequantum  -7E+3    -7E+3  -> 1
-samq0414 samequantum  -7E+3    -7     -> 0
-samq0415 samequantum  -7E+3    -7E-3  -> 0
-samq0416 samequantum  -7E+3    -0E-3  -> 0
-samq0417 samequantum  -7E+3    -0     -> 0
-samq0418 samequantum  -7E+3    -0E+3  -> 1
-samq0419 samequantum  -7E+3     0E-3  -> 0
-samq0420 samequantum  -7E+3     0     -> 0
-samq0421 samequantum  -7E+3     0E+3  -> 1
-samq0422 samequantum  -7E+3     7E-3  -> 0
-samq0423 samequantum  -7E+3     7     -> 0
-samq0424 samequantum  -7E+3     7E+3  -> 1
-samq0425 samequantum  -7E+3     sNaN  -> 0
-
-samq0510 samequantum  -7      -Inf   -> 0
-samq0511 samequantum  -7       Inf   -> 0
-samq0512 samequantum  -7       NaN   -> 0
-samq0513 samequantum  -7      -7E+3  -> 0
-samq0514 samequantum  -7      -7     -> 1
-samq0515 samequantum  -7      -7E-3  -> 0
-samq0516 samequantum  -7      -0E-3  -> 0
-samq0517 samequantum  -7      -0     -> 1
-samq0518 samequantum  -7      -0E+3  -> 0
-samq0519 samequantum  -7       0E-3  -> 0
-samq0520 samequantum  -7       0     -> 1
-samq0521 samequantum  -7       0E+3  -> 0
-samq0522 samequantum  -7       7E-3  -> 0
-samq0523 samequantum  -7       7     -> 1
-samq0524 samequantum  -7       7E+3  -> 0
-samq0525 samequantum  -7       sNaN  -> 0
-
-samq0610 samequantum  -7E-3    -Inf   -> 0
-samq0611 samequantum  -7E-3     Inf   -> 0
-samq0612 samequantum  -7E-3     NaN   -> 0
-samq0613 samequantum  -7E-3    -7E+3  -> 0
-samq0614 samequantum  -7E-3    -7     -> 0
-samq0615 samequantum  -7E-3    -7E-3  -> 1
-samq0616 samequantum  -7E-3    -0E-3  -> 1
-samq0617 samequantum  -7E-3    -0     -> 0
-samq0618 samequantum  -7E-3    -0E+3  -> 0
-samq0619 samequantum  -7E-3     0E-3  -> 1
-samq0620 samequantum  -7E-3     0     -> 0
-samq0621 samequantum  -7E-3     0E+3  -> 0
-samq0622 samequantum  -7E-3     7E-3  -> 1
-samq0623 samequantum  -7E-3     7     -> 0
-samq0624 samequantum  -7E-3     7E+3  -> 0
-samq0625 samequantum  -7E-3     sNaN  -> 0
-
-samq0710 samequantum  -0E-3    -Inf   -> 0
-samq0711 samequantum  -0E-3     Inf   -> 0
-samq0712 samequantum  -0E-3     NaN   -> 0
-samq0713 samequantum  -0E-3    -7E+3  -> 0
-samq0714 samequantum  -0E-3    -7     -> 0
-samq0715 samequantum  -0E-3    -7E-3  -> 1
-samq0716 samequantum  -0E-3    -0E-3  -> 1
-samq0717 samequantum  -0E-3    -0     -> 0
-samq0718 samequantum  -0E-3    -0E+3  -> 0
-samq0719 samequantum  -0E-3     0E-3  -> 1
-samq0720 samequantum  -0E-3     0     -> 0
-samq0721 samequantum  -0E-3     0E+3  -> 0
-samq0722 samequantum  -0E-3     7E-3  -> 1
-samq0723 samequantum  -0E-3     7     -> 0
-samq0724 samequantum  -0E-3     7E+3  -> 0
-samq0725 samequantum  -0E-3     sNaN  -> 0
-
-samq0810 samequantum  -0      -Inf   -> 0
-samq0811 samequantum  -0       Inf   -> 0
-samq0812 samequantum  -0       NaN   -> 0
-samq0813 samequantum  -0      -7E+3  -> 0
-samq0814 samequantum  -0      -7     -> 1
-samq0815 samequantum  -0      -7E-3  -> 0
-samq0816 samequantum  -0      -0E-3  -> 0
-samq0817 samequantum  -0      -0     -> 1
-samq0818 samequantum  -0      -0E+3  -> 0
-samq0819 samequantum  -0       0E-3  -> 0
-samq0820 samequantum  -0       0     -> 1
-samq0821 samequantum  -0       0E+3  -> 0
-samq0822 samequantum  -0       7E-3  -> 0
-samq0823 samequantum  -0       7     -> 1
-samq0824 samequantum  -0       7E+3  -> 0
-samq0825 samequantum  -0       sNaN  -> 0
-
-samq0910 samequantum  -0E+3    -Inf   -> 0
-samq0911 samequantum  -0E+3     Inf   -> 0
-samq0912 samequantum  -0E+3     NaN   -> 0
-samq0913 samequantum  -0E+3    -7E+3  -> 1
-samq0914 samequantum  -0E+3    -7     -> 0
-samq0915 samequantum  -0E+3    -7E-3  -> 0
-samq0916 samequantum  -0E+3    -0E-3  -> 0
-samq0917 samequantum  -0E+3    -0     -> 0
-samq0918 samequantum  -0E+3    -0E+3  -> 1
-samq0919 samequantum  -0E+3     0E-3  -> 0
-samq0920 samequantum  -0E+3     0     -> 0
-samq0921 samequantum  -0E+3     0E+3  -> 1
-samq0922 samequantum  -0E+3     7E-3  -> 0
-samq0923 samequantum  -0E+3     7     -> 0
-samq0924 samequantum  -0E+3     7E+3  -> 1
-samq0925 samequantum  -0E+3     sNaN  -> 0
-
-samq1110 samequantum  0E-3    -Inf   -> 0
-samq1111 samequantum  0E-3     Inf   -> 0
-samq1112 samequantum  0E-3     NaN   -> 0
-samq1113 samequantum  0E-3    -7E+3  -> 0
-samq1114 samequantum  0E-3    -7     -> 0
-samq1115 samequantum  0E-3    -7E-3  -> 1
-samq1116 samequantum  0E-3    -0E-3  -> 1
-samq1117 samequantum  0E-3    -0     -> 0
-samq1118 samequantum  0E-3    -0E+3  -> 0
-samq1119 samequantum  0E-3     0E-3  -> 1
-samq1120 samequantum  0E-3     0     -> 0
-samq1121 samequantum  0E-3     0E+3  -> 0
-samq1122 samequantum  0E-3     7E-3  -> 1
-samq1123 samequantum  0E-3     7     -> 0
-samq1124 samequantum  0E-3     7E+3  -> 0
-samq1125 samequantum  0E-3     sNaN  -> 0
-
-samq1210 samequantum  0       -Inf   -> 0
-samq1211 samequantum  0        Inf   -> 0
-samq1212 samequantum  0        NaN   -> 0
-samq1213 samequantum  0       -7E+3  -> 0
-samq1214 samequantum  0       -7     -> 1
-samq1215 samequantum  0       -7E-3  -> 0
-samq1216 samequantum  0       -0E-3  -> 0
-samq1217 samequantum  0       -0     -> 1
-samq1218 samequantum  0       -0E+3  -> 0
-samq1219 samequantum  0        0E-3  -> 0
-samq1220 samequantum  0        0     -> 1
-samq1221 samequantum  0        0E+3  -> 0
-samq1222 samequantum  0        7E-3  -> 0
-samq1223 samequantum  0        7     -> 1
-samq1224 samequantum  0        7E+3  -> 0
-samq1225 samequantum  0        sNaN  -> 0
-
-samq1310 samequantum  0E+3    -Inf   -> 0
-samq1311 samequantum  0E+3     Inf   -> 0
-samq1312 samequantum  0E+3     NaN   -> 0
-samq1313 samequantum  0E+3    -7E+3  -> 1
-samq1314 samequantum  0E+3    -7     -> 0
-samq1315 samequantum  0E+3    -7E-3  -> 0
-samq1316 samequantum  0E+3    -0E-3  -> 0
-samq1317 samequantum  0E+3    -0     -> 0
-samq1318 samequantum  0E+3    -0E+3  -> 1
-samq1319 samequantum  0E+3     0E-3  -> 0
-samq1320 samequantum  0E+3     0     -> 0
-samq1321 samequantum  0E+3     0E+3  -> 1
-samq1322 samequantum  0E+3     7E-3  -> 0
-samq1323 samequantum  0E+3     7     -> 0
-samq1324 samequantum  0E+3     7E+3  -> 1
-samq1325 samequantum  0E+3     sNaN  -> 0
-
-samq1410 samequantum  7E-3    -Inf   -> 0
-samq1411 samequantum  7E-3     Inf   -> 0
-samq1412 samequantum  7E-3     NaN   -> 0
-samq1413 samequantum  7E-3    -7E+3  -> 0
-samq1414 samequantum  7E-3    -7     -> 0
-samq1415 samequantum  7E-3    -7E-3  -> 1
-samq1416 samequantum  7E-3    -0E-3  -> 1
-samq1417 samequantum  7E-3    -0     -> 0
-samq1418 samequantum  7E-3    -0E+3  -> 0
-samq1419 samequantum  7E-3     0E-3  -> 1
-samq1420 samequantum  7E-3     0     -> 0
-samq1421 samequantum  7E-3     0E+3  -> 0
-samq1422 samequantum  7E-3     7E-3  -> 1
-samq1423 samequantum  7E-3     7     -> 0
-samq1424 samequantum  7E-3     7E+3  -> 0
-samq1425 samequantum  7E-3     sNaN  -> 0
-
-samq1510 samequantum  7      -Inf   -> 0
-samq1511 samequantum  7       Inf   -> 0
-samq1512 samequantum  7       NaN   -> 0
-samq1513 samequantum  7      -7E+3  -> 0
-samq1514 samequantum  7      -7     -> 1
-samq1515 samequantum  7      -7E-3  -> 0
-samq1516 samequantum  7      -0E-3  -> 0
-samq1517 samequantum  7      -0     -> 1
-samq1518 samequantum  7      -0E+3  -> 0
-samq1519 samequantum  7       0E-3  -> 0
-samq1520 samequantum  7       0     -> 1
-samq1521 samequantum  7       0E+3  -> 0
-samq1522 samequantum  7       7E-3  -> 0
-samq1523 samequantum  7       7     -> 1
-samq1524 samequantum  7       7E+3  -> 0
-samq1525 samequantum  7       sNaN  -> 0
-
-samq1610 samequantum  7E+3    -Inf   -> 0
-samq1611 samequantum  7E+3     Inf   -> 0
-samq1612 samequantum  7E+3     NaN   -> 0
-samq1613 samequantum  7E+3    -7E+3  -> 1
-samq1614 samequantum  7E+3    -7     -> 0
-samq1615 samequantum  7E+3    -7E-3  -> 0
-samq1616 samequantum  7E+3    -0E-3  -> 0
-samq1617 samequantum  7E+3    -0     -> 0
-samq1618 samequantum  7E+3    -0E+3  -> 1
-samq1619 samequantum  7E+3     0E-3  -> 0
-samq1620 samequantum  7E+3     0     -> 0
-samq1621 samequantum  7E+3     0E+3  -> 1
-samq1622 samequantum  7E+3     7E-3  -> 0
-samq1623 samequantum  7E+3     7     -> 0
-samq1624 samequantum  7E+3     7E+3  -> 1
-samq1625 samequantum  7E+3     sNaN  -> 0
-
-samq1710 samequantum  sNaN    -Inf   -> 0
-samq1711 samequantum  sNaN     Inf   -> 0
-samq1712 samequantum  sNaN     NaN   -> 1
-samq1713 samequantum  sNaN    -7E+3  -> 0
-samq1714 samequantum  sNaN    -7     -> 0
-samq1715 samequantum  sNaN    -7E-3  -> 0
-samq1716 samequantum  sNaN    -0E-3  -> 0
-samq1717 samequantum  sNaN    -0     -> 0
-samq1718 samequantum  sNaN    -0E+3  -> 0
-samq1719 samequantum  sNaN     0E-3  -> 0
-samq1720 samequantum  sNaN     0     -> 0
-samq1721 samequantum  sNaN     0E+3  -> 0
-samq1722 samequantum  sNaN     7E-3  -> 0
-samq1723 samequantum  sNaN     7     -> 0
-samq1724 samequantum  sNaN     7E+3  -> 0
-samq1725 samequantum  sNaN     sNaN  -> 1
--- noisy NaNs
-samq1730 samequantum  sNaN3    sNaN3 -> 1
-samq1731 samequantum  sNaN3    sNaN4 -> 1
-samq1732 samequantum   NaN3     NaN3 -> 1
-samq1733 samequantum   NaN3     NaN4 -> 1
-samq1734 samequantum  sNaN3     3    -> 0
-samq1735 samequantum   NaN3     3    -> 0
-samq1736 samequantum      4    sNaN4 -> 0
-samq1737 samequantum      3     NaN3 -> 0
-samq1738 samequantum    Inf    sNaN4 -> 0
-samq1739 samequantum   -Inf     NaN3 -> 0
-
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/scaleb.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/scaleb.decTest
deleted file mode 100644
index 372e3dd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/scaleb.decTest
+++ /dev/null
@@ -1,209 +0,0 @@
-------------------------------------------------------------------------
--- scaleb.decTest -- scale a number by powers of 10                   --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minExponent: -999
-
--- Max |rhs| is 2*(999+9) = 2016
-
--- Sanity checks
-scbx001 scaleb       7.50   10 -> 7.50E+10
-scbx002 scaleb       7.50    3 -> 7.50E+3
-scbx003 scaleb       7.50    2 -> 750
-scbx004 scaleb       7.50    1 -> 75.0
-scbx005 scaleb       7.50    0 -> 7.50
-scbx006 scaleb       7.50   -1 -> 0.750
-scbx007 scaleb       7.50   -2 -> 0.0750
-scbx008 scaleb       7.50  -10 -> 7.50E-10
-scbx009 scaleb      -7.50    3 -> -7.50E+3
-scbx010 scaleb      -7.50    2 -> -750
-scbx011 scaleb      -7.50    1 -> -75.0
-scbx012 scaleb      -7.50    0 -> -7.50
-scbx013 scaleb      -7.50   -1 -> -0.750
-
--- Infinities
-scbx014 scaleb  Infinity   1 -> Infinity
-scbx015 scaleb  -Infinity  2 -> -Infinity
-scbx016 scaleb  Infinity  -1 -> Infinity
-scbx017 scaleb  -Infinity -2 -> -Infinity
-
--- Next two are somewhat undefined in 754r; treat as non-integer
-scbx018 scaleb  10  Infinity -> NaN Invalid_operation
-scbx019 scaleb  10 -Infinity -> NaN Invalid_operation
-
--- NaNs are undefined in 754r; assume usual processing
--- NaNs, 0 payload
-scbx021 scaleb         NaN  1 -> NaN
-scbx022 scaleb        -NaN -1 -> -NaN
-scbx023 scaleb        sNaN  1 -> NaN Invalid_operation
-scbx024 scaleb       -sNaN  1 -> -NaN Invalid_operation
-scbx025 scaleb    4    NaN    -> NaN
-scbx026 scaleb -Inf   -NaN    -> -NaN
-scbx027 scaleb    4   sNaN    -> NaN Invalid_operation
-scbx028 scaleb  Inf  -sNaN    -> -NaN Invalid_operation
-
--- non-integer RHS
-scbx030 scaleb  1.23    1    ->  12.3
-scbx031 scaleb  1.23    1.00 ->  NaN Invalid_operation
-scbx032 scaleb  1.23    1.1  ->  NaN Invalid_operation
-scbx033 scaleb  1.23    1.01 ->  NaN Invalid_operation
-scbx034 scaleb  1.23    0.01 ->  NaN Invalid_operation
-scbx035 scaleb  1.23    0.11 ->  NaN Invalid_operation
-scbx036 scaleb  1.23    0.999999999 ->  NaN Invalid_operation
-scbx037 scaleb  1.23   -1    ->  0.123
-scbx038 scaleb  1.23   -1.00 ->  NaN Invalid_operation
-scbx039 scaleb  1.23   -1.1  ->  NaN Invalid_operation
-scbx040 scaleb  1.23   -1.01 ->  NaN Invalid_operation
-scbx041 scaleb  1.23   -0.01 ->  NaN Invalid_operation
-scbx042 scaleb  1.23   -0.11 ->  NaN Invalid_operation
-scbx043 scaleb  1.23   -0.999999999 ->  NaN Invalid_operation
-scbx044 scaleb  1.23    0.1         ->  NaN Invalid_operation
-scbx045 scaleb  1.23    1E+1        ->  NaN Invalid_operation
-scbx046 scaleb  1.23    1.1234E+6   ->  NaN Invalid_operation
-scbx047 scaleb  1.23    1.123E+4    ->  NaN Invalid_operation
-
-
-scbx120 scaleb  1.23    2015        ->  Infinity Overflow Inexact Rounded
-scbx121 scaleb  1.23    2016        ->  Infinity Overflow Inexact Rounded
-scbx122 scaleb  1.23    2017        ->  NaN Invalid_operation
-scbx123 scaleb  1.23    2018        ->  NaN Invalid_operation
-scbx124 scaleb  1.23   -2015        ->  0E-1007 Underflow Subnormal Inexact Rounded Clamped
-scbx125 scaleb  1.23   -2016        ->  0E-1007 Underflow Subnormal Inexact Rounded Clamped
-scbx126 scaleb  1.23   -2017        ->  NaN Invalid_operation
-scbx127 scaleb  1.23   -2018        ->  NaN Invalid_operation
-
--- NaNs, non-0 payload
--- propagating NaNs
-scbx861 scaleb  NaN01   -Inf     ->  NaN1
-scbx862 scaleb -NaN02   -1000    -> -NaN2
-scbx863 scaleb  NaN03    1000    ->  NaN3
-scbx864 scaleb  NaN04    Inf     ->  NaN4
-scbx865 scaleb  NaN05    NaN61   ->  NaN5
-scbx866 scaleb -Inf     -NaN71   -> -NaN71
-scbx867 scaleb -1000     NaN81   ->  NaN81
-scbx868 scaleb  1000     NaN91   ->  NaN91
-scbx869 scaleb  Inf      NaN101  ->  NaN101
-scbx871 scaleb  sNaN011  -Inf    ->  NaN11  Invalid_operation
-scbx872 scaleb  sNaN012  -1000   ->  NaN12  Invalid_operation
-scbx873 scaleb -sNaN013   1000   -> -NaN13  Invalid_operation
-scbx874 scaleb  sNaN014   NaN171 ->  NaN14  Invalid_operation
-scbx875 scaleb  sNaN015  sNaN181 ->  NaN15  Invalid_operation
-scbx876 scaleb  NaN016   sNaN191 ->  NaN191 Invalid_operation
-scbx877 scaleb -Inf      sNaN201 ->  NaN201 Invalid_operation
-scbx878 scaleb -1000     sNaN211 ->  NaN211 Invalid_operation
-scbx879 scaleb  1000    -sNaN221 -> -NaN221 Invalid_operation
-scbx880 scaleb  Inf      sNaN231 ->  NaN231 Invalid_operation
-scbx881 scaleb  NaN025   sNaN241 ->  NaN241 Invalid_operation
-
--- finites
-scbx051 scaleb          7   -2  -> 0.07
-scbx052 scaleb         -7   -2  -> -0.07
-scbx053 scaleb         75   -2  -> 0.75
-scbx054 scaleb        -75   -2  -> -0.75
-scbx055 scaleb       7.50   -2  -> 0.0750
-scbx056 scaleb      -7.50   -2  -> -0.0750
-scbx057 scaleb       7.500  -2  -> 0.07500
-scbx058 scaleb      -7.500  -2  -> -0.07500
-scbx061 scaleb          7   -1  -> 0.7
-scbx062 scaleb         -7   -1  -> -0.7
-scbx063 scaleb         75   -1  -> 7.5
-scbx064 scaleb        -75   -1  -> -7.5
-scbx065 scaleb       7.50   -1  -> 0.750
-scbx066 scaleb      -7.50   -1  -> -0.750
-scbx067 scaleb       7.500  -1  -> 0.7500
-scbx068 scaleb      -7.500  -1  -> -0.7500
-scbx071 scaleb          7    0  -> 7
-scbx072 scaleb         -7    0  -> -7
-scbx073 scaleb         75    0  -> 75
-scbx074 scaleb        -75    0  -> -75
-scbx075 scaleb       7.50    0  -> 7.50
-scbx076 scaleb      -7.50    0  -> -7.50
-scbx077 scaleb       7.500   0  -> 7.500
-scbx078 scaleb      -7.500   0  -> -7.500
-scbx081 scaleb          7    1  -> 7E+1
-scbx082 scaleb         -7    1  -> -7E+1
-scbx083 scaleb         75    1  -> 7.5E+2
-scbx084 scaleb        -75    1  -> -7.5E+2
-scbx085 scaleb       7.50    1  -> 75.0
-scbx086 scaleb      -7.50    1  -> -75.0
-scbx087 scaleb       7.500   1  -> 75.00
-scbx088 scaleb      -7.500   1  -> -75.00
-scbx091 scaleb          7    2  -> 7E+2
-scbx092 scaleb         -7    2  -> -7E+2
-scbx093 scaleb         75    2  -> 7.5E+3
-scbx094 scaleb        -75    2  -> -7.5E+3
-scbx095 scaleb       7.50    2  -> 750
-scbx096 scaleb      -7.50    2  -> -750
-scbx097 scaleb       7.500   2  -> 750.0
-scbx098 scaleb      -7.500   2  -> -750.0
-
--- zeros
-scbx111 scaleb          0  1 -> 0E+1
-scbx112 scaleb         -0  2 -> -0E+2
-scbx113 scaleb       0E+4  3 -> 0E+7
-scbx114 scaleb      -0E+4  4 -> -0E+8
-scbx115 scaleb     0.0000  5 -> 0E+1
-scbx116 scaleb    -0.0000  6 -> -0E+2
-scbx117 scaleb      0E-141 7 -> 0E-134
-scbx118 scaleb     -0E-141 8 -> -0E-133
-
--- Nmax, Nmin, Ntiny
-scbx132 scaleb  9.99999999E+999 +999 -> Infinity    Overflow Inexact Rounded
-scbx133 scaleb  9.99999999E+999  +10 -> Infinity     Overflow Inexact Rounded
-scbx134 scaleb  9.99999999E+999  +1  -> Infinity     Overflow Inexact Rounded
-scbx135 scaleb  9.99999999E+999   0  -> 9.99999999E+999
-scbx136 scaleb  9.99999999E+999  -1  -> 9.99999999E+998
-scbx137 scaleb  1E-999           +1  -> 1E-998
-scbx138 scaleb  1E-999           -0  -> 1E-999
-scbx139 scaleb  1E-999           -1  -> 1E-1000         Subnormal
-scbx140 scaleb  1.00000000E-999  +1  -> 1.00000000E-998
-scbx141 scaleb  1.00000000E-999   0  -> 1.00000000E-999
-scbx142 scaleb  1.00000000E-999  -1  -> 1.0000000E-1000 Subnormal Rounded
-scbx143 scaleb  1E-1007          +1  -> 1E-1006         Subnormal
-scbx144 scaleb  1E-1007          -0  -> 1E-1007         Subnormal
-scbx145 scaleb  1E-1007          -1  -> 0E-1007         Underflow Subnormal Inexact Rounded Clamped
-
-scbx150 scaleb  -1E-1007         +1  -> -1E-1006        Subnormal
-scbx151 scaleb  -1E-1007         -0  -> -1E-1007        Subnormal
-scbx152 scaleb  -1E-1007         -1  -> -0E-1007        Underflow Subnormal Inexact Rounded Clamped
-scbx153 scaleb  -1.00000000E-999 +1  -> -1.00000000E-998
-scbx154 scaleb  -1.00000000E-999 +0  -> -1.00000000E-999
-scbx155 scaleb  -1.00000000E-999 -1  -> -1.0000000E-1000 Subnormal Rounded
-scbx156 scaleb  -1E-999          +1  -> -1E-998
-scbx157 scaleb  -1E-999          -0  -> -1E-999
-scbx158 scaleb  -1E-999          -1  -> -1E-1000         Subnormal
-scbx159 scaleb  -9.99999999E+999 +1  -> -Infinity        Overflow Inexact Rounded
-scbx160 scaleb  -9.99999999E+999 +0  -> -9.99999999E+999
-scbx161 scaleb  -9.99999999E+999 -1  -> -9.99999999E+998
-scbx162 scaleb  -9E+999          +1  -> -Infinity        Overflow Inexact Rounded
-scbx163 scaleb  -1E+999          +1  -> -Infinity        Overflow Inexact Rounded
-
--- Krah examples
-precision:   34
-maxExponent: 999999999
-minExponent: -999999999
--- integer overflow in 3.61 or earlier
-scbx164 scaleb  1E-999999999  -1200000000  -> NaN Invalid_operation
--- out of range
-scbx165 scaleb  -1E-999999999  +1200000000  -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/shift.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/shift.decTest
deleted file mode 100644
index 3fac72f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/shift.decTest
+++ /dev/null
@@ -1,250 +0,0 @@
-------------------------------------------------------------------------
--- shift.decTest -- shift coefficient left or right                   --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minExponent: -999
-
--- Sanity check
-shix001 shift          0    0  ->  0
-shix002 shift          0    2  ->  0
-shix003 shift          1    2  ->  100
-shix004 shift          1    8  ->  100000000
-shix005 shift          1    9  ->  0
-shix006 shift          1   -1  ->  0
-shix007 shift  123456789   -1  ->  12345678
-shix008 shift  123456789   -8  ->  1
-shix009 shift  123456789   -9  ->  0
-shix010 shift          0   -2  ->  0
-
--- rhs must be an integer
-shix011 shift        1    1.5    -> NaN Invalid_operation
-shix012 shift        1    1.0    -> NaN Invalid_operation
-shix013 shift        1    0.1    -> NaN Invalid_operation
-shix014 shift        1    0.0    -> NaN Invalid_operation
-shix015 shift        1    1E+1   -> NaN Invalid_operation
-shix016 shift        1    1E+99  -> NaN Invalid_operation
-shix017 shift        1    Inf    -> NaN Invalid_operation
-shix018 shift        1    -Inf   -> NaN Invalid_operation
--- and |rhs| <= precision
-shix020 shift        1    -1000  -> NaN Invalid_operation
-shix021 shift        1    -10    -> NaN Invalid_operation
-shix022 shift        1     10    -> NaN Invalid_operation
-shix023 shift        1     1000  -> NaN Invalid_operation
-
--- full shifting pattern
-shix030 shift  123456789          -9   -> 0
-shix031 shift  123456789          -8   -> 1
-shix032 shift  123456789          -7   -> 12
-shix033 shift  123456789          -6   -> 123
-shix034 shift  123456789          -5   -> 1234
-shix035 shift  123456789          -4   -> 12345
-shix036 shift  123456789          -3   -> 123456
-shix037 shift  123456789          -2   -> 1234567
-shix038 shift  123456789          -1   -> 12345678
-shix039 shift  123456789          -0   -> 123456789
-shix040 shift  123456789          +0   -> 123456789
-shix041 shift  123456789          +1   -> 234567890
-shix042 shift  123456789          +2   -> 345678900
-shix043 shift  123456789          +3   -> 456789000
-shix044 shift  123456789          +4   -> 567890000
-shix045 shift  123456789          +5   -> 678900000
-shix046 shift  123456789          +6   -> 789000000
-shix047 shift  123456789          +7   -> 890000000
-shix048 shift  123456789          +8   -> 900000000
-shix049 shift  123456789          +9   -> 0
-
--- from examples
-shix051 shift 34        8   ->  '400000000'
-shix052 shift 12        9   ->  '0'
-shix053 shift 123456789 -2  ->  '1234567'
-shix054 shift 123456789 0   ->  '123456789'
-shix055 shift 123456789 +2  ->  '345678900'
-
--- zeros
-shix060 shift  0E-10              +9   ->   0E-10
-shix061 shift  0E-10              -9   ->   0E-10
-shix062 shift  0.000              +9   ->   0.000
-shix063 shift  0.000              -9   ->   0.000
-shix064 shift  0E+10              +9   ->   0E+10
-shix065 shift  0E+10              -9   ->   0E+10
-shix066 shift -0E-10              +9   ->  -0E-10
-shix067 shift -0E-10              -9   ->  -0E-10
-shix068 shift -0.000              +9   ->  -0.000
-shix069 shift -0.000              -9   ->  -0.000
-shix070 shift -0E+10              +9   ->  -0E+10
-shix071 shift -0E+10              -9   ->  -0E+10
-
--- Nmax, Nmin, Ntiny
-shix141 shift  9.99999999E+999     -1  -> 9.9999999E+998
-shix142 shift  9.99999999E+999     -8  -> 9E+991
-shix143 shift  9.99999999E+999      1  -> 9.99999990E+999
-shix144 shift  9.99999999E+999      8  -> 9.00000000E+999
-shix145 shift  1E-999              -1  -> 0E-999
-shix146 shift  1E-999              -8  -> 0E-999
-shix147 shift  1E-999               1  -> 1.0E-998
-shix148 shift  1E-999               8  -> 1.00000000E-991
-shix151 shift  1.00000000E-999     -1  -> 1.0000000E-1000
-shix152 shift  1.00000000E-999     -8  -> 1E-1007
-shix153 shift  1.00000000E-999      1  -> 0E-1007
-shix154 shift  1.00000000E-999      8  -> 0E-1007
-shix155 shift  9.00000000E-999     -1  -> 9.0000000E-1000
-shix156 shift  9.00000000E-999     -8  -> 9E-1007
-shix157 shift  9.00000000E-999      1  -> 0E-1007
-shix158 shift  9.00000000E-999      8  -> 0E-1007
-shix160 shift  1E-1007             -1  -> 0E-1007
-shix161 shift  1E-1007             -8  -> 0E-1007
-shix162 shift  1E-1007              1  -> 1.0E-1006
-shix163 shift  1E-1007              8  -> 1.00000000E-999
---  negatives
-shix171 shift -9.99999999E+999     -1  -> -9.9999999E+998
-shix172 shift -9.99999999E+999     -8  -> -9E+991
-shix173 shift -9.99999999E+999      1  -> -9.99999990E+999
-shix174 shift -9.99999999E+999      8  -> -9.00000000E+999
-shix175 shift -1E-999              -1  -> -0E-999
-shix176 shift -1E-999              -8  -> -0E-999
-shix177 shift -1E-999               1  -> -1.0E-998
-shix178 shift -1E-999               8  -> -1.00000000E-991
-shix181 shift -1.00000000E-999     -1  -> -1.0000000E-1000
-shix182 shift -1.00000000E-999     -8  -> -1E-1007
-shix183 shift -1.00000000E-999      1  -> -0E-1007
-shix184 shift -1.00000000E-999      8  -> -0E-1007
-shix185 shift -9.00000000E-999     -1  -> -9.0000000E-1000
-shix186 shift -9.00000000E-999     -8  -> -9E-1007
-shix187 shift -9.00000000E-999      1  -> -0E-1007
-shix188 shift -9.00000000E-999      8  -> -0E-1007
-shix190 shift -1E-1007             -1  -> -0E-1007
-shix191 shift -1E-1007             -8  -> -0E-1007
-shix192 shift -1E-1007              1  -> -1.0E-1006
-shix193 shift -1E-1007              8  -> -1.00000000E-999
-
--- more negatives (of sanities)
-shix201 shift         -0    0  ->  -0
-shix202 shift         -0    2  ->  -0
-shix203 shift         -1    2  ->  -100
-shix204 shift         -1    8  ->  -100000000
-shix205 shift         -1    9  ->  -0
-shix206 shift         -1   -1  ->  -0
-shix207 shift -123456789   -1  ->  -12345678
-shix208 shift -123456789   -8  ->  -1
-shix209 shift -123456789   -9  ->  -0
-shix210 shift         -0   -2  ->  -0
-shix211 shift         -0   -0  ->  -0
-
-
--- Specials; NaNs are handled as usual
-shix781 shift -Inf  -8     -> -Infinity
-shix782 shift -Inf  -1     -> -Infinity
-shix783 shift -Inf  -0     -> -Infinity
-shix784 shift -Inf   0     -> -Infinity
-shix785 shift -Inf   1     -> -Infinity
-shix786 shift -Inf   8     -> -Infinity
-shix787 shift -1000 -Inf   -> NaN Invalid_operation
-shix788 shift -Inf  -Inf   -> NaN Invalid_operation
-shix789 shift -1    -Inf   -> NaN Invalid_operation
-shix790 shift -0    -Inf   -> NaN Invalid_operation
-shix791 shift  0    -Inf   -> NaN Invalid_operation
-shix792 shift  1    -Inf   -> NaN Invalid_operation
-shix793 shift  1000 -Inf   -> NaN Invalid_operation
-shix794 shift  Inf  -Inf   -> NaN Invalid_operation
-
-shix800 shift  Inf  -Inf   -> NaN Invalid_operation
-shix801 shift  Inf  -8     -> Infinity
-shix802 shift  Inf  -1     -> Infinity
-shix803 shift  Inf  -0     -> Infinity
-shix804 shift  Inf   0     -> Infinity
-shix805 shift  Inf   1     -> Infinity
-shix806 shift  Inf   8     -> Infinity
-shix807 shift  Inf   Inf   -> NaN Invalid_operation
-shix808 shift -1000  Inf   -> NaN Invalid_operation
-shix809 shift -Inf   Inf   -> NaN Invalid_operation
-shix810 shift -1     Inf   -> NaN Invalid_operation
-shix811 shift -0     Inf   -> NaN Invalid_operation
-shix812 shift  0     Inf   -> NaN Invalid_operation
-shix813 shift  1     Inf   -> NaN Invalid_operation
-shix814 shift  1000  Inf   -> NaN Invalid_operation
-shix815 shift  Inf   Inf   -> NaN Invalid_operation
-
-shix821 shift  NaN -Inf    ->  NaN
-shix822 shift  NaN -1000   ->  NaN
-shix823 shift  NaN -1      ->  NaN
-shix824 shift  NaN -0      ->  NaN
-shix825 shift  NaN  0      ->  NaN
-shix826 shift  NaN  1      ->  NaN
-shix827 shift  NaN  1000   ->  NaN
-shix828 shift  NaN  Inf    ->  NaN
-shix829 shift  NaN  NaN    ->  NaN
-shix830 shift -Inf  NaN    ->  NaN
-shix831 shift -1000 NaN    ->  NaN
-shix832 shift -1    NaN    ->  NaN
-shix833 shift -0    NaN    ->  NaN
-shix834 shift  0    NaN    ->  NaN
-shix835 shift  1    NaN    ->  NaN
-shix836 shift  1000 NaN    ->  NaN
-shix837 shift  Inf  NaN    ->  NaN
-
-shix841 shift  sNaN -Inf   ->  NaN  Invalid_operation
-shix842 shift  sNaN -1000  ->  NaN  Invalid_operation
-shix843 shift  sNaN -1     ->  NaN  Invalid_operation
-shix844 shift  sNaN -0     ->  NaN  Invalid_operation
-shix845 shift  sNaN  0     ->  NaN  Invalid_operation
-shix846 shift  sNaN  1     ->  NaN  Invalid_operation
-shix847 shift  sNaN  1000  ->  NaN  Invalid_operation
-shix848 shift  sNaN  NaN   ->  NaN  Invalid_operation
-shix849 shift  sNaN sNaN   ->  NaN  Invalid_operation
-shix850 shift  NaN  sNaN   ->  NaN  Invalid_operation
-shix851 shift -Inf  sNaN   ->  NaN  Invalid_operation
-shix852 shift -1000 sNaN   ->  NaN  Invalid_operation
-shix853 shift -1    sNaN   ->  NaN  Invalid_operation
-shix854 shift -0    sNaN   ->  NaN  Invalid_operation
-shix855 shift  0    sNaN   ->  NaN  Invalid_operation
-shix856 shift  1    sNaN   ->  NaN  Invalid_operation
-shix857 shift  1000 sNaN   ->  NaN  Invalid_operation
-shix858 shift  Inf  sNaN   ->  NaN  Invalid_operation
-shix859 shift  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-shix861 shift  NaN1   -Inf    ->  NaN1
-shix862 shift +NaN2   -1000   ->  NaN2
-shix863 shift  NaN3    1000   ->  NaN3
-shix864 shift  NaN4    Inf    ->  NaN4
-shix865 shift  NaN5   +NaN6   ->  NaN5
-shix866 shift -Inf     NaN7   ->  NaN7
-shix867 shift -1000    NaN8   ->  NaN8
-shix868 shift  1000    NaN9   ->  NaN9
-shix869 shift  Inf    +NaN10  ->  NaN10
-shix871 shift  sNaN11  -Inf   ->  NaN11  Invalid_operation
-shix872 shift  sNaN12  -1000  ->  NaN12  Invalid_operation
-shix873 shift  sNaN13   1000  ->  NaN13  Invalid_operation
-shix874 shift  sNaN14   NaN17 ->  NaN14  Invalid_operation
-shix875 shift  sNaN15  sNaN18 ->  NaN15  Invalid_operation
-shix876 shift  NaN16   sNaN19 ->  NaN19  Invalid_operation
-shix877 shift -Inf    +sNaN20 ->  NaN20  Invalid_operation
-shix878 shift -1000    sNaN21 ->  NaN21  Invalid_operation
-shix879 shift  1000    sNaN22 ->  NaN22  Invalid_operation
-shix880 shift  Inf     sNaN23 ->  NaN23  Invalid_operation
-shix881 shift +NaN25  +sNaN24 ->  NaN24  Invalid_operation
-shix882 shift -NaN26    NaN28 -> -NaN26
-shix883 shift -sNaN27  sNaN29 -> -NaN27  Invalid_operation
-shix884 shift  1000    -NaN30 -> -NaN30
-shix885 shift  1000   -sNaN31 -> -NaN31  Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/squareroot.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/squareroot.decTest
deleted file mode 100644
index 23e04f1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/squareroot.decTest
+++ /dev/null
@@ -1,3834 +0,0 @@
-------------------------------------------------------------------------
--- squareroot.decTest -- decimal square root                          --
--- Copyright (c) IBM Corporation, 2003, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
--- basics
-sqtx001 squareroot 1       -> 1
-sqtx002 squareroot -1      -> NaN Invalid_operation
-sqtx003 squareroot 1.00    -> 1.0
-sqtx004 squareroot -1.00   -> NaN Invalid_operation
-sqtx005 squareroot 0       -> 0
-sqtx006 squareroot 00.0    -> 0.0
-sqtx007 squareroot 0.00    -> 0.0
-sqtx008 squareroot 00.00   -> 0.0
-sqtx009 squareroot 00.000  -> 0.00
-sqtx010 squareroot 00.0000 -> 0.00
-sqtx011 squareroot 00      -> 0
-
-sqtx012 squareroot -2      -> NaN Invalid_operation
-sqtx013 squareroot 2       -> 1.41421356 Inexact Rounded
-sqtx014 squareroot -2.00   -> NaN Invalid_operation
-sqtx015 squareroot 2.00    -> 1.41421356 Inexact Rounded
-sqtx016 squareroot -0      -> -0
-sqtx017 squareroot -0.0    -> -0.0
-sqtx018 squareroot -00.00  -> -0.0
-sqtx019 squareroot -00.000 -> -0.00
-sqtx020 squareroot -0.0000 -> -0.00
-sqtx021 squareroot -0E+9   -> -0E+4
-sqtx022 squareroot -0E+10  -> -0E+5
-sqtx023 squareroot -0E+11  -> -0E+5
-sqtx024 squareroot -0E+12  -> -0E+6
-sqtx025 squareroot -00     -> -0
-sqtx026 squareroot 0E+5    -> 0E+2
-sqtx027 squareroot 4.0     -> 2.0
-sqtx028 squareroot 4.00    -> 2.0
-
-sqtx030 squareroot +0.1            -> 0.316227766 Inexact Rounded
-sqtx031 squareroot -0.1            -> NaN Invalid_operation
-sqtx032 squareroot +0.01           -> 0.1
-sqtx033 squareroot -0.01           -> NaN Invalid_operation
-sqtx034 squareroot +0.001          -> 0.0316227766 Inexact Rounded
-sqtx035 squareroot -0.001          -> NaN Invalid_operation
-sqtx036 squareroot +0.000001       -> 0.001
-sqtx037 squareroot -0.000001       -> NaN Invalid_operation
-sqtx038 squareroot +0.000000000001 -> 0.000001
-sqtx039 squareroot -0.000000000001 -> NaN Invalid_operation
-
-sqtx041 squareroot 1.1        -> 1.04880885 Inexact Rounded
-sqtx042 squareroot 1.10       -> 1.04880885 Inexact Rounded
-sqtx043 squareroot 1.100      -> 1.04880885 Inexact Rounded
-sqtx044 squareroot 1.110      -> 1.05356538 Inexact Rounded
-sqtx045 squareroot -1.1       -> NaN Invalid_operation
-sqtx046 squareroot -1.10      -> NaN Invalid_operation
-sqtx047 squareroot -1.100     -> NaN Invalid_operation
-sqtx048 squareroot -1.110     -> NaN Invalid_operation
-sqtx049 squareroot 9.9        -> 3.14642654 Inexact Rounded
-sqtx050 squareroot 9.90       -> 3.14642654 Inexact Rounded
-sqtx051 squareroot 9.900      -> 3.14642654 Inexact Rounded
-sqtx052 squareroot 9.990      -> 3.16069613 Inexact Rounded
-sqtx053 squareroot -9.9       -> NaN Invalid_operation
-sqtx054 squareroot -9.90      -> NaN Invalid_operation
-sqtx055 squareroot -9.900     -> NaN Invalid_operation
-sqtx056 squareroot -9.990     -> NaN Invalid_operation
-
-sqtx060 squareroot  1           -> 1
-sqtx061 squareroot  1.0         -> 1.0
-sqtx062 squareroot  1.00        -> 1.0
-sqtx063 squareroot  10.0        -> 3.16227766 Inexact Rounded
-sqtx064 squareroot  10.0        -> 3.16227766 Inexact Rounded
-sqtx065 squareroot  10.0        -> 3.16227766 Inexact Rounded
-sqtx066 squareroot  10.00       -> 3.16227766 Inexact Rounded
-sqtx067 squareroot  100         -> 10
-sqtx068 squareroot  100.0       -> 10.0
-sqtx069 squareroot  100.00      -> 10.0
-sqtx070 squareroot  1.1000E+3   -> 33.1662479 Inexact Rounded
-sqtx071 squareroot  1.10000E+3  -> 33.1662479 Inexact Rounded
-sqtx072 squareroot -10.0        -> NaN Invalid_operation
-sqtx073 squareroot -10.00       -> NaN Invalid_operation
-sqtx074 squareroot -100.0       -> NaN Invalid_operation
-sqtx075 squareroot -100.00      -> NaN Invalid_operation
-sqtx076 squareroot -1.1000E+3   -> NaN Invalid_operation
-sqtx077 squareroot -1.10000E+3  -> NaN Invalid_operation
-sqtx078 squareroot  1.000       -> 1.00
-sqtx079 squareroot  1.0000      -> 1.00
-
--- famous squares
-sqtx080 squareroot     1  -> 1
-sqtx081 squareroot     4  -> 2
-sqtx082 squareroot     9  -> 3
-sqtx083 squareroot    16  -> 4
-sqtx084 squareroot    25  -> 5
-sqtx085 squareroot    36  -> 6
-sqtx086 squareroot    49  -> 7
-sqtx087 squareroot    64  -> 8
-sqtx088 squareroot    81  -> 9
-sqtx089 squareroot   100  -> 10
-sqtx090 squareroot   121  -> 11
-sqtx091 squareroot   144  -> 12
-sqtx092 squareroot   169  -> 13
-sqtx093 squareroot   256  -> 16
-sqtx094 squareroot  1024  -> 32
-sqtx095 squareroot  4096  -> 64
-sqtx100 squareroot   0.01 -> 0.1
-sqtx101 squareroot   0.04 -> 0.2
-sqtx102 squareroot   0.09 -> 0.3
-sqtx103 squareroot   0.16 -> 0.4
-sqtx104 squareroot   0.25 -> 0.5
-sqtx105 squareroot   0.36 -> 0.6
-sqtx106 squareroot   0.49 -> 0.7
-sqtx107 squareroot   0.64 -> 0.8
-sqtx108 squareroot   0.81 -> 0.9
-sqtx109 squareroot   1.00 -> 1.0
-sqtx110 squareroot   1.21 -> 1.1
-sqtx111 squareroot   1.44 -> 1.2
-sqtx112 squareroot   1.69 -> 1.3
-sqtx113 squareroot   2.56 -> 1.6
-sqtx114 squareroot  10.24 -> 3.2
-sqtx115 squareroot  40.96 -> 6.4
-
--- Precision 1 squareroot tests [exhaustive, plus exponent adjusts]
-rounding:    half_even
-maxExponent: 999
-minexponent: -999
-precision:   1
-sqtx1201 squareroot 0.1 -> 0.3  Inexact Rounded
-sqtx1202 squareroot 0.01 -> 0.1
-sqtx1203 squareroot 1.0E-1 -> 0.3  Inexact Rounded
-sqtx1204 squareroot 1.00E-2 -> 0.1  Rounded
-sqtx1205 squareroot 1E-3 -> 0.03  Inexact Rounded
-sqtx1206 squareroot 1E+1 -> 3  Inexact Rounded
-sqtx1207 squareroot 1E+2 -> 1E+1
-sqtx1208 squareroot 1E+3 -> 3E+1  Inexact Rounded
-sqtx1209 squareroot 0.2 -> 0.4  Inexact Rounded
-sqtx1210 squareroot 0.02 -> 0.1  Inexact Rounded
-sqtx1211 squareroot 2.0E-1 -> 0.4  Inexact Rounded
-sqtx1212 squareroot 2.00E-2 -> 0.1  Inexact Rounded
-sqtx1213 squareroot 2E-3 -> 0.04  Inexact Rounded
-sqtx1214 squareroot 2E+1 -> 4  Inexact Rounded
-sqtx1215 squareroot 2E+2 -> 1E+1  Inexact Rounded
-sqtx1216 squareroot 2E+3 -> 4E+1  Inexact Rounded
-sqtx1217 squareroot 0.3 -> 0.5  Inexact Rounded
-sqtx1218 squareroot 0.03 -> 0.2  Inexact Rounded
-sqtx1219 squareroot 3.0E-1 -> 0.5  Inexact Rounded
-sqtx1220 squareroot 3.00E-2 -> 0.2  Inexact Rounded
-sqtx1221 squareroot 3E-3 -> 0.05  Inexact Rounded
-sqtx1222 squareroot 3E+1 -> 5  Inexact Rounded
-sqtx1223 squareroot 3E+2 -> 2E+1  Inexact Rounded
-sqtx1224 squareroot 3E+3 -> 5E+1  Inexact Rounded
-sqtx1225 squareroot 0.4 -> 0.6  Inexact Rounded
-sqtx1226 squareroot 0.04 -> 0.2
-sqtx1227 squareroot 4.0E-1 -> 0.6  Inexact Rounded
-sqtx1228 squareroot 4.00E-2 -> 0.2  Rounded
-sqtx1229 squareroot 4E-3 -> 0.06  Inexact Rounded
-sqtx1230 squareroot 4E+1 -> 6  Inexact Rounded
-sqtx1231 squareroot 4E+2 -> 2E+1
-sqtx1232 squareroot 4E+3 -> 6E+1  Inexact Rounded
-sqtx1233 squareroot 0.5 -> 0.7  Inexact Rounded
-sqtx1234 squareroot 0.05 -> 0.2  Inexact Rounded
-sqtx1235 squareroot 5.0E-1 -> 0.7  Inexact Rounded
-sqtx1236 squareroot 5.00E-2 -> 0.2  Inexact Rounded
-sqtx1237 squareroot 5E-3 -> 0.07  Inexact Rounded
-sqtx1238 squareroot 5E+1 -> 7  Inexact Rounded
-sqtx1239 squareroot 5E+2 -> 2E+1  Inexact Rounded
-sqtx1240 squareroot 5E+3 -> 7E+1  Inexact Rounded
-sqtx1241 squareroot 0.6 -> 0.8  Inexact Rounded
-sqtx1242 squareroot 0.06 -> 0.2  Inexact Rounded
-sqtx1243 squareroot 6.0E-1 -> 0.8  Inexact Rounded
-sqtx1244 squareroot 6.00E-2 -> 0.2  Inexact Rounded
-sqtx1245 squareroot 6E-3 -> 0.08  Inexact Rounded
-sqtx1246 squareroot 6E+1 -> 8  Inexact Rounded
-sqtx1247 squareroot 6E+2 -> 2E+1  Inexact Rounded
-sqtx1248 squareroot 6E+3 -> 8E+1  Inexact Rounded
-sqtx1249 squareroot 0.7 -> 0.8  Inexact Rounded
-sqtx1250 squareroot 0.07 -> 0.3  Inexact Rounded
-sqtx1251 squareroot 7.0E-1 -> 0.8  Inexact Rounded
-sqtx1252 squareroot 7.00E-2 -> 0.3  Inexact Rounded
-sqtx1253 squareroot 7E-3 -> 0.08  Inexact Rounded
-sqtx1254 squareroot 7E+1 -> 8  Inexact Rounded
-sqtx1255 squareroot 7E+2 -> 3E+1  Inexact Rounded
-sqtx1256 squareroot 7E+3 -> 8E+1  Inexact Rounded
-sqtx1257 squareroot 0.8 -> 0.9  Inexact Rounded
-sqtx1258 squareroot 0.08 -> 0.3  Inexact Rounded
-sqtx1259 squareroot 8.0E-1 -> 0.9  Inexact Rounded
-sqtx1260 squareroot 8.00E-2 -> 0.3  Inexact Rounded
-sqtx1261 squareroot 8E-3 -> 0.09  Inexact Rounded
-sqtx1262 squareroot 8E+1 -> 9  Inexact Rounded
-sqtx1263 squareroot 8E+2 -> 3E+1  Inexact Rounded
-sqtx1264 squareroot 8E+3 -> 9E+1  Inexact Rounded
-sqtx1265 squareroot 0.9 -> 0.9  Inexact Rounded
-sqtx1266 squareroot 0.09 -> 0.3
-sqtx1267 squareroot 9.0E-1 -> 0.9  Inexact Rounded
-sqtx1268 squareroot 9.00E-2 -> 0.3  Rounded
-sqtx1269 squareroot 9E-3 -> 0.09  Inexact Rounded
-sqtx1270 squareroot 9E+1 -> 9  Inexact Rounded
-sqtx1271 squareroot 9E+2 -> 3E+1
-sqtx1272 squareroot 9E+3 -> 9E+1  Inexact Rounded
-
--- Precision 2 squareroot tests [exhaustive, plus exponent adjusts]
-rounding:    half_even
-maxExponent: 999
-minexponent: -999
-precision:   2
-sqtx2201 squareroot 0.1 -> 0.32  Inexact Rounded
-sqtx2202 squareroot 0.01 -> 0.1
-sqtx2203 squareroot 1.0E-1 -> 0.32  Inexact Rounded
-sqtx2204 squareroot 1.00E-2 -> 0.10
-sqtx2205 squareroot 1E-3 -> 0.032  Inexact Rounded
-sqtx2206 squareroot 1E+1 -> 3.2  Inexact Rounded
-sqtx2207 squareroot 1E+2 -> 1E+1
-sqtx2208 squareroot 1E+3 -> 32  Inexact Rounded
-sqtx2209 squareroot 0.2 -> 0.45  Inexact Rounded
-sqtx2210 squareroot 0.02 -> 0.14  Inexact Rounded
-sqtx2211 squareroot 2.0E-1 -> 0.45  Inexact Rounded
-sqtx2212 squareroot 2.00E-2 -> 0.14  Inexact Rounded
-sqtx2213 squareroot 2E-3 -> 0.045  Inexact Rounded
-sqtx2214 squareroot 2E+1 -> 4.5  Inexact Rounded
-sqtx2215 squareroot 2E+2 -> 14  Inexact Rounded
-sqtx2216 squareroot 2E+3 -> 45  Inexact Rounded
-sqtx2217 squareroot 0.3 -> 0.55  Inexact Rounded
-sqtx2218 squareroot 0.03 -> 0.17  Inexact Rounded
-sqtx2219 squareroot 3.0E-1 -> 0.55  Inexact Rounded
-sqtx2220 squareroot 3.00E-2 -> 0.17  Inexact Rounded
-sqtx2221 squareroot 3E-3 -> 0.055  Inexact Rounded
-sqtx2222 squareroot 3E+1 -> 5.5  Inexact Rounded
-sqtx2223 squareroot 3E+2 -> 17  Inexact Rounded
-sqtx2224 squareroot 3E+3 -> 55  Inexact Rounded
-sqtx2225 squareroot 0.4 -> 0.63  Inexact Rounded
-sqtx2226 squareroot 0.04 -> 0.2
-sqtx2227 squareroot 4.0E-1 -> 0.63  Inexact Rounded
-sqtx2228 squareroot 4.00E-2 -> 0.20
-sqtx2229 squareroot 4E-3 -> 0.063  Inexact Rounded
-sqtx2230 squareroot 4E+1 -> 6.3  Inexact Rounded
-sqtx2231 squareroot 4E+2 -> 2E+1
-sqtx2232 squareroot 4E+3 -> 63  Inexact Rounded
-sqtx2233 squareroot 0.5 -> 0.71  Inexact Rounded
-sqtx2234 squareroot 0.05 -> 0.22  Inexact Rounded
-sqtx2235 squareroot 5.0E-1 -> 0.71  Inexact Rounded
-sqtx2236 squareroot 5.00E-2 -> 0.22  Inexact Rounded
-sqtx2237 squareroot 5E-3 -> 0.071  Inexact Rounded
-sqtx2238 squareroot 5E+1 -> 7.1  Inexact Rounded
-sqtx2239 squareroot 5E+2 -> 22  Inexact Rounded
-sqtx2240 squareroot 5E+3 -> 71  Inexact Rounded
-sqtx2241 squareroot 0.6 -> 0.77  Inexact Rounded
-sqtx2242 squareroot 0.06 -> 0.24  Inexact Rounded
-sqtx2243 squareroot 6.0E-1 -> 0.77  Inexact Rounded
-sqtx2244 squareroot 6.00E-2 -> 0.24  Inexact Rounded
-sqtx2245 squareroot 6E-3 -> 0.077  Inexact Rounded
-sqtx2246 squareroot 6E+1 -> 7.7  Inexact Rounded
-sqtx2247 squareroot 6E+2 -> 24  Inexact Rounded
-sqtx2248 squareroot 6E+3 -> 77  Inexact Rounded
-sqtx2249 squareroot 0.7 -> 0.84  Inexact Rounded
-sqtx2250 squareroot 0.07 -> 0.26  Inexact Rounded
-sqtx2251 squareroot 7.0E-1 -> 0.84  Inexact Rounded
-sqtx2252 squareroot 7.00E-2 -> 0.26  Inexact Rounded
-sqtx2253 squareroot 7E-3 -> 0.084  Inexact Rounded
-sqtx2254 squareroot 7E+1 -> 8.4  Inexact Rounded
-sqtx2255 squareroot 7E+2 -> 26  Inexact Rounded
-sqtx2256 squareroot 7E+3 -> 84  Inexact Rounded
-sqtx2257 squareroot 0.8 -> 0.89  Inexact Rounded
-sqtx2258 squareroot 0.08 -> 0.28  Inexact Rounded
-sqtx2259 squareroot 8.0E-1 -> 0.89  Inexact Rounded
-sqtx2260 squareroot 8.00E-2 -> 0.28  Inexact Rounded
-sqtx2261 squareroot 8E-3 -> 0.089  Inexact Rounded
-sqtx2262 squareroot 8E+1 -> 8.9  Inexact Rounded
-sqtx2263 squareroot 8E+2 -> 28  Inexact Rounded
-sqtx2264 squareroot 8E+3 -> 89  Inexact Rounded
-sqtx2265 squareroot 0.9 -> 0.95  Inexact Rounded
-sqtx2266 squareroot 0.09 -> 0.3
-sqtx2267 squareroot 9.0E-1 -> 0.95  Inexact Rounded
-sqtx2268 squareroot 9.00E-2 -> 0.30
-sqtx2269 squareroot 9E-3 -> 0.095  Inexact Rounded
-sqtx2270 squareroot 9E+1 -> 9.5  Inexact Rounded
-sqtx2271 squareroot 9E+2 -> 3E+1
-sqtx2272 squareroot 9E+3 -> 95  Inexact Rounded
-sqtx2273 squareroot 0.10 -> 0.32  Inexact Rounded
-sqtx2274 squareroot 0.010 -> 0.10
-sqtx2275 squareroot 10.0E-1 -> 1.0
-sqtx2276 squareroot 10.00E-2 -> 0.32  Inexact Rounded
-sqtx2277 squareroot 10E-3 -> 0.10
-sqtx2278 squareroot 10E+1 -> 10
-sqtx2279 squareroot 10E+2 -> 32  Inexact Rounded
-sqtx2280 squareroot 10E+3 -> 1.0E+2
-sqtx2281 squareroot 0.11 -> 0.33  Inexact Rounded
-sqtx2282 squareroot 0.011 -> 0.10  Inexact Rounded
-sqtx2283 squareroot 11.0E-1 -> 1.0  Inexact Rounded
-sqtx2284 squareroot 11.00E-2 -> 0.33  Inexact Rounded
-sqtx2285 squareroot 11E-3 -> 0.10  Inexact Rounded
-sqtx2286 squareroot 11E+1 -> 10  Inexact Rounded
-sqtx2287 squareroot 11E+2 -> 33  Inexact Rounded
-sqtx2288 squareroot 11E+3 -> 1.0E+2  Inexact Rounded
-sqtx2289 squareroot 0.12 -> 0.35  Inexact Rounded
-sqtx2290 squareroot 0.012 -> 0.11  Inexact Rounded
-sqtx2291 squareroot 12.0E-1 -> 1.1  Inexact Rounded
-sqtx2292 squareroot 12.00E-2 -> 0.35  Inexact Rounded
-sqtx2293 squareroot 12E-3 -> 0.11  Inexact Rounded
-sqtx2294 squareroot 12E+1 -> 11  Inexact Rounded
-sqtx2295 squareroot 12E+2 -> 35  Inexact Rounded
-sqtx2296 squareroot 12E+3 -> 1.1E+2  Inexact Rounded
-sqtx2297 squareroot 0.13 -> 0.36  Inexact Rounded
-sqtx2298 squareroot 0.013 -> 0.11  Inexact Rounded
-sqtx2299 squareroot 13.0E-1 -> 1.1  Inexact Rounded
-sqtx2300 squareroot 13.00E-2 -> 0.36  Inexact Rounded
-sqtx2301 squareroot 13E-3 -> 0.11  Inexact Rounded
-sqtx2302 squareroot 13E+1 -> 11  Inexact Rounded
-sqtx2303 squareroot 13E+2 -> 36  Inexact Rounded
-sqtx2304 squareroot 13E+3 -> 1.1E+2  Inexact Rounded
-sqtx2305 squareroot 0.14 -> 0.37  Inexact Rounded
-sqtx2306 squareroot 0.014 -> 0.12  Inexact Rounded
-sqtx2307 squareroot 14.0E-1 -> 1.2  Inexact Rounded
-sqtx2308 squareroot 14.00E-2 -> 0.37  Inexact Rounded
-sqtx2309 squareroot 14E-3 -> 0.12  Inexact Rounded
-sqtx2310 squareroot 14E+1 -> 12  Inexact Rounded
-sqtx2311 squareroot 14E+2 -> 37  Inexact Rounded
-sqtx2312 squareroot 14E+3 -> 1.2E+2  Inexact Rounded
-sqtx2313 squareroot 0.15 -> 0.39  Inexact Rounded
-sqtx2314 squareroot 0.015 -> 0.12  Inexact Rounded
-sqtx2315 squareroot 15.0E-1 -> 1.2  Inexact Rounded
-sqtx2316 squareroot 15.00E-2 -> 0.39  Inexact Rounded
-sqtx2317 squareroot 15E-3 -> 0.12  Inexact Rounded
-sqtx2318 squareroot 15E+1 -> 12  Inexact Rounded
-sqtx2319 squareroot 15E+2 -> 39  Inexact Rounded
-sqtx2320 squareroot 15E+3 -> 1.2E+2  Inexact Rounded
-sqtx2321 squareroot 0.16 -> 0.4
-sqtx2322 squareroot 0.016 -> 0.13  Inexact Rounded
-sqtx2323 squareroot 16.0E-1 -> 1.3  Inexact Rounded
-sqtx2324 squareroot 16.00E-2 -> 0.40
-sqtx2325 squareroot 16E-3 -> 0.13  Inexact Rounded
-sqtx2326 squareroot 16E+1 -> 13  Inexact Rounded
-sqtx2327 squareroot 16E+2 -> 4E+1
-sqtx2328 squareroot 16E+3 -> 1.3E+2  Inexact Rounded
-sqtx2329 squareroot 0.17 -> 0.41  Inexact Rounded
-sqtx2330 squareroot 0.017 -> 0.13  Inexact Rounded
-sqtx2331 squareroot 17.0E-1 -> 1.3  Inexact Rounded
-sqtx2332 squareroot 17.00E-2 -> 0.41  Inexact Rounded
-sqtx2333 squareroot 17E-3 -> 0.13  Inexact Rounded
-sqtx2334 squareroot 17E+1 -> 13  Inexact Rounded
-sqtx2335 squareroot 17E+2 -> 41  Inexact Rounded
-sqtx2336 squareroot 17E+3 -> 1.3E+2  Inexact Rounded
-sqtx2337 squareroot 0.18 -> 0.42  Inexact Rounded
-sqtx2338 squareroot 0.018 -> 0.13  Inexact Rounded
-sqtx2339 squareroot 18.0E-1 -> 1.3  Inexact Rounded
-sqtx2340 squareroot 18.00E-2 -> 0.42  Inexact Rounded
-sqtx2341 squareroot 18E-3 -> 0.13  Inexact Rounded
-sqtx2342 squareroot 18E+1 -> 13  Inexact Rounded
-sqtx2343 squareroot 18E+2 -> 42  Inexact Rounded
-sqtx2344 squareroot 18E+3 -> 1.3E+2  Inexact Rounded
-sqtx2345 squareroot 0.19 -> 0.44  Inexact Rounded
-sqtx2346 squareroot 0.019 -> 0.14  Inexact Rounded
-sqtx2347 squareroot 19.0E-1 -> 1.4  Inexact Rounded
-sqtx2348 squareroot 19.00E-2 -> 0.44  Inexact Rounded
-sqtx2349 squareroot 19E-3 -> 0.14  Inexact Rounded
-sqtx2350 squareroot 19E+1 -> 14  Inexact Rounded
-sqtx2351 squareroot 19E+2 -> 44  Inexact Rounded
-sqtx2352 squareroot 19E+3 -> 1.4E+2  Inexact Rounded
-sqtx2353 squareroot 0.20 -> 0.45  Inexact Rounded
-sqtx2354 squareroot 0.020 -> 0.14  Inexact Rounded
-sqtx2355 squareroot 20.0E-1 -> 1.4  Inexact Rounded
-sqtx2356 squareroot 20.00E-2 -> 0.45  Inexact Rounded
-sqtx2357 squareroot 20E-3 -> 0.14  Inexact Rounded
-sqtx2358 squareroot 20E+1 -> 14  Inexact Rounded
-sqtx2359 squareroot 20E+2 -> 45  Inexact Rounded
-sqtx2360 squareroot 20E+3 -> 1.4E+2  Inexact Rounded
-sqtx2361 squareroot 0.21 -> 0.46  Inexact Rounded
-sqtx2362 squareroot 0.021 -> 0.14  Inexact Rounded
-sqtx2363 squareroot 21.0E-1 -> 1.4  Inexact Rounded
-sqtx2364 squareroot 21.00E-2 -> 0.46  Inexact Rounded
-sqtx2365 squareroot 21E-3 -> 0.14  Inexact Rounded
-sqtx2366 squareroot 21E+1 -> 14  Inexact Rounded
-sqtx2367 squareroot 21E+2 -> 46  Inexact Rounded
-sqtx2368 squareroot 21E+3 -> 1.4E+2  Inexact Rounded
-sqtx2369 squareroot 0.22 -> 0.47  Inexact Rounded
-sqtx2370 squareroot 0.022 -> 0.15  Inexact Rounded
-sqtx2371 squareroot 22.0E-1 -> 1.5  Inexact Rounded
-sqtx2372 squareroot 22.00E-2 -> 0.47  Inexact Rounded
-sqtx2373 squareroot 22E-3 -> 0.15  Inexact Rounded
-sqtx2374 squareroot 22E+1 -> 15  Inexact Rounded
-sqtx2375 squareroot 22E+2 -> 47  Inexact Rounded
-sqtx2376 squareroot 22E+3 -> 1.5E+2  Inexact Rounded
-sqtx2377 squareroot 0.23 -> 0.48  Inexact Rounded
-sqtx2378 squareroot 0.023 -> 0.15  Inexact Rounded
-sqtx2379 squareroot 23.0E-1 -> 1.5  Inexact Rounded
-sqtx2380 squareroot 23.00E-2 -> 0.48  Inexact Rounded
-sqtx2381 squareroot 23E-3 -> 0.15  Inexact Rounded
-sqtx2382 squareroot 23E+1 -> 15  Inexact Rounded
-sqtx2383 squareroot 23E+2 -> 48  Inexact Rounded
-sqtx2384 squareroot 23E+3 -> 1.5E+2  Inexact Rounded
-sqtx2385 squareroot 0.24 -> 0.49  Inexact Rounded
-sqtx2386 squareroot 0.024 -> 0.15  Inexact Rounded
-sqtx2387 squareroot 24.0E-1 -> 1.5  Inexact Rounded
-sqtx2388 squareroot 24.00E-2 -> 0.49  Inexact Rounded
-sqtx2389 squareroot 24E-3 -> 0.15  Inexact Rounded
-sqtx2390 squareroot 24E+1 -> 15  Inexact Rounded
-sqtx2391 squareroot 24E+2 -> 49  Inexact Rounded
-sqtx2392 squareroot 24E+3 -> 1.5E+2  Inexact Rounded
-sqtx2393 squareroot 0.25 -> 0.5
-sqtx2394 squareroot 0.025 -> 0.16  Inexact Rounded
-sqtx2395 squareroot 25.0E-1 -> 1.6  Inexact Rounded
-sqtx2396 squareroot 25.00E-2 -> 0.50
-sqtx2397 squareroot 25E-3 -> 0.16  Inexact Rounded
-sqtx2398 squareroot 25E+1 -> 16  Inexact Rounded
-sqtx2399 squareroot 25E+2 -> 5E+1
-sqtx2400 squareroot 25E+3 -> 1.6E+2  Inexact Rounded
-sqtx2401 squareroot 0.26 -> 0.51  Inexact Rounded
-sqtx2402 squareroot 0.026 -> 0.16  Inexact Rounded
-sqtx2403 squareroot 26.0E-1 -> 1.6  Inexact Rounded
-sqtx2404 squareroot 26.00E-2 -> 0.51  Inexact Rounded
-sqtx2405 squareroot 26E-3 -> 0.16  Inexact Rounded
-sqtx2406 squareroot 26E+1 -> 16  Inexact Rounded
-sqtx2407 squareroot 26E+2 -> 51  Inexact Rounded
-sqtx2408 squareroot 26E+3 -> 1.6E+2  Inexact Rounded
-sqtx2409 squareroot 0.27 -> 0.52  Inexact Rounded
-sqtx2410 squareroot 0.027 -> 0.16  Inexact Rounded
-sqtx2411 squareroot 27.0E-1 -> 1.6  Inexact Rounded
-sqtx2412 squareroot 27.00E-2 -> 0.52  Inexact Rounded
-sqtx2413 squareroot 27E-3 -> 0.16  Inexact Rounded
-sqtx2414 squareroot 27E+1 -> 16  Inexact Rounded
-sqtx2415 squareroot 27E+2 -> 52  Inexact Rounded
-sqtx2416 squareroot 27E+3 -> 1.6E+2  Inexact Rounded
-sqtx2417 squareroot 0.28 -> 0.53  Inexact Rounded
-sqtx2418 squareroot 0.028 -> 0.17  Inexact Rounded
-sqtx2419 squareroot 28.0E-1 -> 1.7  Inexact Rounded
-sqtx2420 squareroot 28.00E-2 -> 0.53  Inexact Rounded
-sqtx2421 squareroot 28E-3 -> 0.17  Inexact Rounded
-sqtx2422 squareroot 28E+1 -> 17  Inexact Rounded
-sqtx2423 squareroot 28E+2 -> 53  Inexact Rounded
-sqtx2424 squareroot 28E+3 -> 1.7E+2  Inexact Rounded
-sqtx2425 squareroot 0.29 -> 0.54  Inexact Rounded
-sqtx2426 squareroot 0.029 -> 0.17  Inexact Rounded
-sqtx2427 squareroot 29.0E-1 -> 1.7  Inexact Rounded
-sqtx2428 squareroot 29.00E-2 -> 0.54  Inexact Rounded
-sqtx2429 squareroot 29E-3 -> 0.17  Inexact Rounded
-sqtx2430 squareroot 29E+1 -> 17  Inexact Rounded
-sqtx2431 squareroot 29E+2 -> 54  Inexact Rounded
-sqtx2432 squareroot 29E+3 -> 1.7E+2  Inexact Rounded
-sqtx2433 squareroot 0.30 -> 0.55  Inexact Rounded
-sqtx2434 squareroot 0.030 -> 0.17  Inexact Rounded
-sqtx2435 squareroot 30.0E-1 -> 1.7  Inexact Rounded
-sqtx2436 squareroot 30.00E-2 -> 0.55  Inexact Rounded
-sqtx2437 squareroot 30E-3 -> 0.17  Inexact Rounded
-sqtx2438 squareroot 30E+1 -> 17  Inexact Rounded
-sqtx2439 squareroot 30E+2 -> 55  Inexact Rounded
-sqtx2440 squareroot 30E+3 -> 1.7E+2  Inexact Rounded
-sqtx2441 squareroot 0.31 -> 0.56  Inexact Rounded
-sqtx2442 squareroot 0.031 -> 0.18  Inexact Rounded
-sqtx2443 squareroot 31.0E-1 -> 1.8  Inexact Rounded
-sqtx2444 squareroot 31.00E-2 -> 0.56  Inexact Rounded
-sqtx2445 squareroot 31E-3 -> 0.18  Inexact Rounded
-sqtx2446 squareroot 31E+1 -> 18  Inexact Rounded
-sqtx2447 squareroot 31E+2 -> 56  Inexact Rounded
-sqtx2448 squareroot 31E+3 -> 1.8E+2  Inexact Rounded
-sqtx2449 squareroot 0.32 -> 0.57  Inexact Rounded
-sqtx2450 squareroot 0.032 -> 0.18  Inexact Rounded
-sqtx2451 squareroot 32.0E-1 -> 1.8  Inexact Rounded
-sqtx2452 squareroot 32.00E-2 -> 0.57  Inexact Rounded
-sqtx2453 squareroot 32E-3 -> 0.18  Inexact Rounded
-sqtx2454 squareroot 32E+1 -> 18  Inexact Rounded
-sqtx2455 squareroot 32E+2 -> 57  Inexact Rounded
-sqtx2456 squareroot 32E+3 -> 1.8E+2  Inexact Rounded
-sqtx2457 squareroot 0.33 -> 0.57  Inexact Rounded
-sqtx2458 squareroot 0.033 -> 0.18  Inexact Rounded
-sqtx2459 squareroot 33.0E-1 -> 1.8  Inexact Rounded
-sqtx2460 squareroot 33.00E-2 -> 0.57  Inexact Rounded
-sqtx2461 squareroot 33E-3 -> 0.18  Inexact Rounded
-sqtx2462 squareroot 33E+1 -> 18  Inexact Rounded
-sqtx2463 squareroot 33E+2 -> 57  Inexact Rounded
-sqtx2464 squareroot 33E+3 -> 1.8E+2  Inexact Rounded
-sqtx2465 squareroot 0.34 -> 0.58  Inexact Rounded
-sqtx2466 squareroot 0.034 -> 0.18  Inexact Rounded
-sqtx2467 squareroot 34.0E-1 -> 1.8  Inexact Rounded
-sqtx2468 squareroot 34.00E-2 -> 0.58  Inexact Rounded
-sqtx2469 squareroot 34E-3 -> 0.18  Inexact Rounded
-sqtx2470 squareroot 34E+1 -> 18  Inexact Rounded
-sqtx2471 squareroot 34E+2 -> 58  Inexact Rounded
-sqtx2472 squareroot 34E+3 -> 1.8E+2  Inexact Rounded
-sqtx2473 squareroot 0.35 -> 0.59  Inexact Rounded
-sqtx2474 squareroot 0.035 -> 0.19  Inexact Rounded
-sqtx2475 squareroot 35.0E-1 -> 1.9  Inexact Rounded
-sqtx2476 squareroot 35.00E-2 -> 0.59  Inexact Rounded
-sqtx2477 squareroot 35E-3 -> 0.19  Inexact Rounded
-sqtx2478 squareroot 35E+1 -> 19  Inexact Rounded
-sqtx2479 squareroot 35E+2 -> 59  Inexact Rounded
-sqtx2480 squareroot 35E+3 -> 1.9E+2  Inexact Rounded
-sqtx2481 squareroot 0.36 -> 0.6
-sqtx2482 squareroot 0.036 -> 0.19  Inexact Rounded
-sqtx2483 squareroot 36.0E-1 -> 1.9  Inexact Rounded
-sqtx2484 squareroot 36.00E-2 -> 0.60
-sqtx2485 squareroot 36E-3 -> 0.19  Inexact Rounded
-sqtx2486 squareroot 36E+1 -> 19  Inexact Rounded
-sqtx2487 squareroot 36E+2 -> 6E+1
-sqtx2488 squareroot 36E+3 -> 1.9E+2  Inexact Rounded
-sqtx2489 squareroot 0.37 -> 0.61  Inexact Rounded
-sqtx2490 squareroot 0.037 -> 0.19  Inexact Rounded
-sqtx2491 squareroot 37.0E-1 -> 1.9  Inexact Rounded
-sqtx2492 squareroot 37.00E-2 -> 0.61  Inexact Rounded
-sqtx2493 squareroot 37E-3 -> 0.19  Inexact Rounded
-sqtx2494 squareroot 37E+1 -> 19  Inexact Rounded
-sqtx2495 squareroot 37E+2 -> 61  Inexact Rounded
-sqtx2496 squareroot 37E+3 -> 1.9E+2  Inexact Rounded
-sqtx2497 squareroot 0.38 -> 0.62  Inexact Rounded
-sqtx2498 squareroot 0.038 -> 0.19  Inexact Rounded
-sqtx2499 squareroot 38.0E-1 -> 1.9  Inexact Rounded
-sqtx2500 squareroot 38.00E-2 -> 0.62  Inexact Rounded
-sqtx2501 squareroot 38E-3 -> 0.19  Inexact Rounded
-sqtx2502 squareroot 38E+1 -> 19  Inexact Rounded
-sqtx2503 squareroot 38E+2 -> 62  Inexact Rounded
-sqtx2504 squareroot 38E+3 -> 1.9E+2  Inexact Rounded
-sqtx2505 squareroot 0.39 -> 0.62  Inexact Rounded
-sqtx2506 squareroot 0.039 -> 0.20  Inexact Rounded
-sqtx2507 squareroot 39.0E-1 -> 2.0  Inexact Rounded
-sqtx2508 squareroot 39.00E-2 -> 0.62  Inexact Rounded
-sqtx2509 squareroot 39E-3 -> 0.20  Inexact Rounded
-sqtx2510 squareroot 39E+1 -> 20  Inexact Rounded
-sqtx2511 squareroot 39E+2 -> 62  Inexact Rounded
-sqtx2512 squareroot 39E+3 -> 2.0E+2  Inexact Rounded
-sqtx2513 squareroot 0.40 -> 0.63  Inexact Rounded
-sqtx2514 squareroot 0.040 -> 0.20
-sqtx2515 squareroot 40.0E-1 -> 2.0
-sqtx2516 squareroot 40.00E-2 -> 0.63  Inexact Rounded
-sqtx2517 squareroot 40E-3 -> 0.20
-sqtx2518 squareroot 40E+1 -> 20
-sqtx2519 squareroot 40E+2 -> 63  Inexact Rounded
-sqtx2520 squareroot 40E+3 -> 2.0E+2
-sqtx2521 squareroot 0.41 -> 0.64  Inexact Rounded
-sqtx2522 squareroot 0.041 -> 0.20  Inexact Rounded
-sqtx2523 squareroot 41.0E-1 -> 2.0  Inexact Rounded
-sqtx2524 squareroot 41.00E-2 -> 0.64  Inexact Rounded
-sqtx2525 squareroot 41E-3 -> 0.20  Inexact Rounded
-sqtx2526 squareroot 41E+1 -> 20  Inexact Rounded
-sqtx2527 squareroot 41E+2 -> 64  Inexact Rounded
-sqtx2528 squareroot 41E+3 -> 2.0E+2  Inexact Rounded
-sqtx2529 squareroot 0.42 -> 0.65  Inexact Rounded
-sqtx2530 squareroot 0.042 -> 0.20  Inexact Rounded
-sqtx2531 squareroot 42.0E-1 -> 2.0  Inexact Rounded
-sqtx2532 squareroot 42.00E-2 -> 0.65  Inexact Rounded
-sqtx2533 squareroot 42E-3 -> 0.20  Inexact Rounded
-sqtx2534 squareroot 42E+1 -> 20  Inexact Rounded
-sqtx2535 squareroot 42E+2 -> 65  Inexact Rounded
-sqtx2536 squareroot 42E+3 -> 2.0E+2  Inexact Rounded
-sqtx2537 squareroot 0.43 -> 0.66  Inexact Rounded
-sqtx2538 squareroot 0.043 -> 0.21  Inexact Rounded
-sqtx2539 squareroot 43.0E-1 -> 2.1  Inexact Rounded
-sqtx2540 squareroot 43.00E-2 -> 0.66  Inexact Rounded
-sqtx2541 squareroot 43E-3 -> 0.21  Inexact Rounded
-sqtx2542 squareroot 43E+1 -> 21  Inexact Rounded
-sqtx2543 squareroot 43E+2 -> 66  Inexact Rounded
-sqtx2544 squareroot 43E+3 -> 2.1E+2  Inexact Rounded
-sqtx2545 squareroot 0.44 -> 0.66  Inexact Rounded
-sqtx2546 squareroot 0.044 -> 0.21  Inexact Rounded
-sqtx2547 squareroot 44.0E-1 -> 2.1  Inexact Rounded
-sqtx2548 squareroot 44.00E-2 -> 0.66  Inexact Rounded
-sqtx2549 squareroot 44E-3 -> 0.21  Inexact Rounded
-sqtx2550 squareroot 44E+1 -> 21  Inexact Rounded
-sqtx2551 squareroot 44E+2 -> 66  Inexact Rounded
-sqtx2552 squareroot 44E+3 -> 2.1E+2  Inexact Rounded
-sqtx2553 squareroot 0.45 -> 0.67  Inexact Rounded
-sqtx2554 squareroot 0.045 -> 0.21  Inexact Rounded
-sqtx2555 squareroot 45.0E-1 -> 2.1  Inexact Rounded
-sqtx2556 squareroot 45.00E-2 -> 0.67  Inexact Rounded
-sqtx2557 squareroot 45E-3 -> 0.21  Inexact Rounded
-sqtx2558 squareroot 45E+1 -> 21  Inexact Rounded
-sqtx2559 squareroot 45E+2 -> 67  Inexact Rounded
-sqtx2560 squareroot 45E+3 -> 2.1E+2  Inexact Rounded
-sqtx2561 squareroot 0.46 -> 0.68  Inexact Rounded
-sqtx2562 squareroot 0.046 -> 0.21  Inexact Rounded
-sqtx2563 squareroot 46.0E-1 -> 2.1  Inexact Rounded
-sqtx2564 squareroot 46.00E-2 -> 0.68  Inexact Rounded
-sqtx2565 squareroot 46E-3 -> 0.21  Inexact Rounded
-sqtx2566 squareroot 46E+1 -> 21  Inexact Rounded
-sqtx2567 squareroot 46E+2 -> 68  Inexact Rounded
-sqtx2568 squareroot 46E+3 -> 2.1E+2  Inexact Rounded
-sqtx2569 squareroot 0.47 -> 0.69  Inexact Rounded
-sqtx2570 squareroot 0.047 -> 0.22  Inexact Rounded
-sqtx2571 squareroot 47.0E-1 -> 2.2  Inexact Rounded
-sqtx2572 squareroot 47.00E-2 -> 0.69  Inexact Rounded
-sqtx2573 squareroot 47E-3 -> 0.22  Inexact Rounded
-sqtx2574 squareroot 47E+1 -> 22  Inexact Rounded
-sqtx2575 squareroot 47E+2 -> 69  Inexact Rounded
-sqtx2576 squareroot 47E+3 -> 2.2E+2  Inexact Rounded
-sqtx2577 squareroot 0.48 -> 0.69  Inexact Rounded
-sqtx2578 squareroot 0.048 -> 0.22  Inexact Rounded
-sqtx2579 squareroot 48.0E-1 -> 2.2  Inexact Rounded
-sqtx2580 squareroot 48.00E-2 -> 0.69  Inexact Rounded
-sqtx2581 squareroot 48E-3 -> 0.22  Inexact Rounded
-sqtx2582 squareroot 48E+1 -> 22  Inexact Rounded
-sqtx2583 squareroot 48E+2 -> 69  Inexact Rounded
-sqtx2584 squareroot 48E+3 -> 2.2E+2  Inexact Rounded
-sqtx2585 squareroot 0.49 -> 0.7
-sqtx2586 squareroot 0.049 -> 0.22  Inexact Rounded
-sqtx2587 squareroot 49.0E-1 -> 2.2  Inexact Rounded
-sqtx2588 squareroot 49.00E-2 -> 0.70
-sqtx2589 squareroot 49E-3 -> 0.22  Inexact Rounded
-sqtx2590 squareroot 49E+1 -> 22  Inexact Rounded
-sqtx2591 squareroot 49E+2 -> 7E+1
-sqtx2592 squareroot 49E+3 -> 2.2E+2  Inexact Rounded
-sqtx2593 squareroot 0.50 -> 0.71  Inexact Rounded
-sqtx2594 squareroot 0.050 -> 0.22  Inexact Rounded
-sqtx2595 squareroot 50.0E-1 -> 2.2  Inexact Rounded
-sqtx2596 squareroot 50.00E-2 -> 0.71  Inexact Rounded
-sqtx2597 squareroot 50E-3 -> 0.22  Inexact Rounded
-sqtx2598 squareroot 50E+1 -> 22  Inexact Rounded
-sqtx2599 squareroot 50E+2 -> 71  Inexact Rounded
-sqtx2600 squareroot 50E+3 -> 2.2E+2  Inexact Rounded
-sqtx2601 squareroot 0.51 -> 0.71  Inexact Rounded
-sqtx2602 squareroot 0.051 -> 0.23  Inexact Rounded
-sqtx2603 squareroot 51.0E-1 -> 2.3  Inexact Rounded
-sqtx2604 squareroot 51.00E-2 -> 0.71  Inexact Rounded
-sqtx2605 squareroot 51E-3 -> 0.23  Inexact Rounded
-sqtx2606 squareroot 51E+1 -> 23  Inexact Rounded
-sqtx2607 squareroot 51E+2 -> 71  Inexact Rounded
-sqtx2608 squareroot 51E+3 -> 2.3E+2  Inexact Rounded
-sqtx2609 squareroot 0.52 -> 0.72  Inexact Rounded
-sqtx2610 squareroot 0.052 -> 0.23  Inexact Rounded
-sqtx2611 squareroot 52.0E-1 -> 2.3  Inexact Rounded
-sqtx2612 squareroot 52.00E-2 -> 0.72  Inexact Rounded
-sqtx2613 squareroot 52E-3 -> 0.23  Inexact Rounded
-sqtx2614 squareroot 52E+1 -> 23  Inexact Rounded
-sqtx2615 squareroot 52E+2 -> 72  Inexact Rounded
-sqtx2616 squareroot 52E+3 -> 2.3E+2  Inexact Rounded
-sqtx2617 squareroot 0.53 -> 0.73  Inexact Rounded
-sqtx2618 squareroot 0.053 -> 0.23  Inexact Rounded
-sqtx2619 squareroot 53.0E-1 -> 2.3  Inexact Rounded
-sqtx2620 squareroot 53.00E-2 -> 0.73  Inexact Rounded
-sqtx2621 squareroot 53E-3 -> 0.23  Inexact Rounded
-sqtx2622 squareroot 53E+1 -> 23  Inexact Rounded
-sqtx2623 squareroot 53E+2 -> 73  Inexact Rounded
-sqtx2624 squareroot 53E+3 -> 2.3E+2  Inexact Rounded
-sqtx2625 squareroot 0.54 -> 0.73  Inexact Rounded
-sqtx2626 squareroot 0.054 -> 0.23  Inexact Rounded
-sqtx2627 squareroot 54.0E-1 -> 2.3  Inexact Rounded
-sqtx2628 squareroot 54.00E-2 -> 0.73  Inexact Rounded
-sqtx2629 squareroot 54E-3 -> 0.23  Inexact Rounded
-sqtx2630 squareroot 54E+1 -> 23  Inexact Rounded
-sqtx2631 squareroot 54E+2 -> 73  Inexact Rounded
-sqtx2632 squareroot 54E+3 -> 2.3E+2  Inexact Rounded
-sqtx2633 squareroot 0.55 -> 0.74  Inexact Rounded
-sqtx2634 squareroot 0.055 -> 0.23  Inexact Rounded
-sqtx2635 squareroot 55.0E-1 -> 2.3  Inexact Rounded
-sqtx2636 squareroot 55.00E-2 -> 0.74  Inexact Rounded
-sqtx2637 squareroot 55E-3 -> 0.23  Inexact Rounded
-sqtx2638 squareroot 55E+1 -> 23  Inexact Rounded
-sqtx2639 squareroot 55E+2 -> 74  Inexact Rounded
-sqtx2640 squareroot 55E+3 -> 2.3E+2  Inexact Rounded
-sqtx2641 squareroot 0.56 -> 0.75  Inexact Rounded
-sqtx2642 squareroot 0.056 -> 0.24  Inexact Rounded
-sqtx2643 squareroot 56.0E-1 -> 2.4  Inexact Rounded
-sqtx2644 squareroot 56.00E-2 -> 0.75  Inexact Rounded
-sqtx2645 squareroot 56E-3 -> 0.24  Inexact Rounded
-sqtx2646 squareroot 56E+1 -> 24  Inexact Rounded
-sqtx2647 squareroot 56E+2 -> 75  Inexact Rounded
-sqtx2648 squareroot 56E+3 -> 2.4E+2  Inexact Rounded
-sqtx2649 squareroot 0.57 -> 0.75  Inexact Rounded
-sqtx2650 squareroot 0.057 -> 0.24  Inexact Rounded
-sqtx2651 squareroot 57.0E-1 -> 2.4  Inexact Rounded
-sqtx2652 squareroot 57.00E-2 -> 0.75  Inexact Rounded
-sqtx2653 squareroot 57E-3 -> 0.24  Inexact Rounded
-sqtx2654 squareroot 57E+1 -> 24  Inexact Rounded
-sqtx2655 squareroot 57E+2 -> 75  Inexact Rounded
-sqtx2656 squareroot 57E+3 -> 2.4E+2  Inexact Rounded
-sqtx2657 squareroot 0.58 -> 0.76  Inexact Rounded
-sqtx2658 squareroot 0.058 -> 0.24  Inexact Rounded
-sqtx2659 squareroot 58.0E-1 -> 2.4  Inexact Rounded
-sqtx2660 squareroot 58.00E-2 -> 0.76  Inexact Rounded
-sqtx2661 squareroot 58E-3 -> 0.24  Inexact Rounded
-sqtx2662 squareroot 58E+1 -> 24  Inexact Rounded
-sqtx2663 squareroot 58E+2 -> 76  Inexact Rounded
-sqtx2664 squareroot 58E+3 -> 2.4E+2  Inexact Rounded
-sqtx2665 squareroot 0.59 -> 0.77  Inexact Rounded
-sqtx2666 squareroot 0.059 -> 0.24  Inexact Rounded
-sqtx2667 squareroot 59.0E-1 -> 2.4  Inexact Rounded
-sqtx2668 squareroot 59.00E-2 -> 0.77  Inexact Rounded
-sqtx2669 squareroot 59E-3 -> 0.24  Inexact Rounded
-sqtx2670 squareroot 59E+1 -> 24  Inexact Rounded
-sqtx2671 squareroot 59E+2 -> 77  Inexact Rounded
-sqtx2672 squareroot 59E+3 -> 2.4E+2  Inexact Rounded
-sqtx2673 squareroot 0.60 -> 0.77  Inexact Rounded
-sqtx2674 squareroot 0.060 -> 0.24  Inexact Rounded
-sqtx2675 squareroot 60.0E-1 -> 2.4  Inexact Rounded
-sqtx2676 squareroot 60.00E-2 -> 0.77  Inexact Rounded
-sqtx2677 squareroot 60E-3 -> 0.24  Inexact Rounded
-sqtx2678 squareroot 60E+1 -> 24  Inexact Rounded
-sqtx2679 squareroot 60E+2 -> 77  Inexact Rounded
-sqtx2680 squareroot 60E+3 -> 2.4E+2  Inexact Rounded
-sqtx2681 squareroot 0.61 -> 0.78  Inexact Rounded
-sqtx2682 squareroot 0.061 -> 0.25  Inexact Rounded
-sqtx2683 squareroot 61.0E-1 -> 2.5  Inexact Rounded
-sqtx2684 squareroot 61.00E-2 -> 0.78  Inexact Rounded
-sqtx2685 squareroot 61E-3 -> 0.25  Inexact Rounded
-sqtx2686 squareroot 61E+1 -> 25  Inexact Rounded
-sqtx2687 squareroot 61E+2 -> 78  Inexact Rounded
-sqtx2688 squareroot 61E+3 -> 2.5E+2  Inexact Rounded
-sqtx2689 squareroot 0.62 -> 0.79  Inexact Rounded
-sqtx2690 squareroot 0.062 -> 0.25  Inexact Rounded
-sqtx2691 squareroot 62.0E-1 -> 2.5  Inexact Rounded
-sqtx2692 squareroot 62.00E-2 -> 0.79  Inexact Rounded
-sqtx2693 squareroot 62E-3 -> 0.25  Inexact Rounded
-sqtx2694 squareroot 62E+1 -> 25  Inexact Rounded
-sqtx2695 squareroot 62E+2 -> 79  Inexact Rounded
-sqtx2696 squareroot 62E+3 -> 2.5E+2  Inexact Rounded
-sqtx2697 squareroot 0.63 -> 0.79  Inexact Rounded
-sqtx2698 squareroot 0.063 -> 0.25  Inexact Rounded
-sqtx2699 squareroot 63.0E-1 -> 2.5  Inexact Rounded
-sqtx2700 squareroot 63.00E-2 -> 0.79  Inexact Rounded
-sqtx2701 squareroot 63E-3 -> 0.25  Inexact Rounded
-sqtx2702 squareroot 63E+1 -> 25  Inexact Rounded
-sqtx2703 squareroot 63E+2 -> 79  Inexact Rounded
-sqtx2704 squareroot 63E+3 -> 2.5E+2  Inexact Rounded
-sqtx2705 squareroot 0.64 -> 0.8
-sqtx2706 squareroot 0.064 -> 0.25  Inexact Rounded
-sqtx2707 squareroot 64.0E-1 -> 2.5  Inexact Rounded
-sqtx2708 squareroot 64.00E-2 -> 0.80
-sqtx2709 squareroot 64E-3 -> 0.25  Inexact Rounded
-sqtx2710 squareroot 64E+1 -> 25  Inexact Rounded
-sqtx2711 squareroot 64E+2 -> 8E+1
-sqtx2712 squareroot 64E+3 -> 2.5E+2  Inexact Rounded
-sqtx2713 squareroot 0.65 -> 0.81  Inexact Rounded
-sqtx2714 squareroot 0.065 -> 0.25  Inexact Rounded
-sqtx2715 squareroot 65.0E-1 -> 2.5  Inexact Rounded
-sqtx2716 squareroot 65.00E-2 -> 0.81  Inexact Rounded
-sqtx2717 squareroot 65E-3 -> 0.25  Inexact Rounded
-sqtx2718 squareroot 65E+1 -> 25  Inexact Rounded
-sqtx2719 squareroot 65E+2 -> 81  Inexact Rounded
-sqtx2720 squareroot 65E+3 -> 2.5E+2  Inexact Rounded
-sqtx2721 squareroot 0.66 -> 0.81  Inexact Rounded
-sqtx2722 squareroot 0.066 -> 0.26  Inexact Rounded
-sqtx2723 squareroot 66.0E-1 -> 2.6  Inexact Rounded
-sqtx2724 squareroot 66.00E-2 -> 0.81  Inexact Rounded
-sqtx2725 squareroot 66E-3 -> 0.26  Inexact Rounded
-sqtx2726 squareroot 66E+1 -> 26  Inexact Rounded
-sqtx2727 squareroot 66E+2 -> 81  Inexact Rounded
-sqtx2728 squareroot 66E+3 -> 2.6E+2  Inexact Rounded
-sqtx2729 squareroot 0.67 -> 0.82  Inexact Rounded
-sqtx2730 squareroot 0.067 -> 0.26  Inexact Rounded
-sqtx2731 squareroot 67.0E-1 -> 2.6  Inexact Rounded
-sqtx2732 squareroot 67.00E-2 -> 0.82  Inexact Rounded
-sqtx2733 squareroot 67E-3 -> 0.26  Inexact Rounded
-sqtx2734 squareroot 67E+1 -> 26  Inexact Rounded
-sqtx2735 squareroot 67E+2 -> 82  Inexact Rounded
-sqtx2736 squareroot 67E+3 -> 2.6E+2  Inexact Rounded
-sqtx2737 squareroot 0.68 -> 0.82  Inexact Rounded
-sqtx2738 squareroot 0.068 -> 0.26  Inexact Rounded
-sqtx2739 squareroot 68.0E-1 -> 2.6  Inexact Rounded
-sqtx2740 squareroot 68.00E-2 -> 0.82  Inexact Rounded
-sqtx2741 squareroot 68E-3 -> 0.26  Inexact Rounded
-sqtx2742 squareroot 68E+1 -> 26  Inexact Rounded
-sqtx2743 squareroot 68E+2 -> 82  Inexact Rounded
-sqtx2744 squareroot 68E+3 -> 2.6E+2  Inexact Rounded
-sqtx2745 squareroot 0.69 -> 0.83  Inexact Rounded
-sqtx2746 squareroot 0.069 -> 0.26  Inexact Rounded
-sqtx2747 squareroot 69.0E-1 -> 2.6  Inexact Rounded
-sqtx2748 squareroot 69.00E-2 -> 0.83  Inexact Rounded
-sqtx2749 squareroot 69E-3 -> 0.26  Inexact Rounded
-sqtx2750 squareroot 69E+1 -> 26  Inexact Rounded
-sqtx2751 squareroot 69E+2 -> 83  Inexact Rounded
-sqtx2752 squareroot 69E+3 -> 2.6E+2  Inexact Rounded
-sqtx2753 squareroot 0.70 -> 0.84  Inexact Rounded
-sqtx2754 squareroot 0.070 -> 0.26  Inexact Rounded
-sqtx2755 squareroot 70.0E-1 -> 2.6  Inexact Rounded
-sqtx2756 squareroot 70.00E-2 -> 0.84  Inexact Rounded
-sqtx2757 squareroot 70E-3 -> 0.26  Inexact Rounded
-sqtx2758 squareroot 70E+1 -> 26  Inexact Rounded
-sqtx2759 squareroot 70E+2 -> 84  Inexact Rounded
-sqtx2760 squareroot 70E+3 -> 2.6E+2  Inexact Rounded
-sqtx2761 squareroot 0.71 -> 0.84  Inexact Rounded
-sqtx2762 squareroot 0.071 -> 0.27  Inexact Rounded
-sqtx2763 squareroot 71.0E-1 -> 2.7  Inexact Rounded
-sqtx2764 squareroot 71.00E-2 -> 0.84  Inexact Rounded
-sqtx2765 squareroot 71E-3 -> 0.27  Inexact Rounded
-sqtx2766 squareroot 71E+1 -> 27  Inexact Rounded
-sqtx2767 squareroot 71E+2 -> 84  Inexact Rounded
-sqtx2768 squareroot 71E+3 -> 2.7E+2  Inexact Rounded
-sqtx2769 squareroot 0.72 -> 0.85  Inexact Rounded
-sqtx2770 squareroot 0.072 -> 0.27  Inexact Rounded
-sqtx2771 squareroot 72.0E-1 -> 2.7  Inexact Rounded
-sqtx2772 squareroot 72.00E-2 -> 0.85  Inexact Rounded
-sqtx2773 squareroot 72E-3 -> 0.27  Inexact Rounded
-sqtx2774 squareroot 72E+1 -> 27  Inexact Rounded
-sqtx2775 squareroot 72E+2 -> 85  Inexact Rounded
-sqtx2776 squareroot 72E+3 -> 2.7E+2  Inexact Rounded
-sqtx2777 squareroot 0.73 -> 0.85  Inexact Rounded
-sqtx2778 squareroot 0.073 -> 0.27  Inexact Rounded
-sqtx2779 squareroot 73.0E-1 -> 2.7  Inexact Rounded
-sqtx2780 squareroot 73.00E-2 -> 0.85  Inexact Rounded
-sqtx2781 squareroot 73E-3 -> 0.27  Inexact Rounded
-sqtx2782 squareroot 73E+1 -> 27  Inexact Rounded
-sqtx2783 squareroot 73E+2 -> 85  Inexact Rounded
-sqtx2784 squareroot 73E+3 -> 2.7E+2  Inexact Rounded
-sqtx2785 squareroot 0.74 -> 0.86  Inexact Rounded
-sqtx2786 squareroot 0.074 -> 0.27  Inexact Rounded
-sqtx2787 squareroot 74.0E-1 -> 2.7  Inexact Rounded
-sqtx2788 squareroot 74.00E-2 -> 0.86  Inexact Rounded
-sqtx2789 squareroot 74E-3 -> 0.27  Inexact Rounded
-sqtx2790 squareroot 74E+1 -> 27  Inexact Rounded
-sqtx2791 squareroot 74E+2 -> 86  Inexact Rounded
-sqtx2792 squareroot 74E+3 -> 2.7E+2  Inexact Rounded
-sqtx2793 squareroot 0.75 -> 0.87  Inexact Rounded
-sqtx2794 squareroot 0.075 -> 0.27  Inexact Rounded
-sqtx2795 squareroot 75.0E-1 -> 2.7  Inexact Rounded
-sqtx2796 squareroot 75.00E-2 -> 0.87  Inexact Rounded
-sqtx2797 squareroot 75E-3 -> 0.27  Inexact Rounded
-sqtx2798 squareroot 75E+1 -> 27  Inexact Rounded
-sqtx2799 squareroot 75E+2 -> 87  Inexact Rounded
-sqtx2800 squareroot 75E+3 -> 2.7E+2  Inexact Rounded
-sqtx2801 squareroot 0.76 -> 0.87  Inexact Rounded
-sqtx2802 squareroot 0.076 -> 0.28  Inexact Rounded
-sqtx2803 squareroot 76.0E-1 -> 2.8  Inexact Rounded
-sqtx2804 squareroot 76.00E-2 -> 0.87  Inexact Rounded
-sqtx2805 squareroot 76E-3 -> 0.28  Inexact Rounded
-sqtx2806 squareroot 76E+1 -> 28  Inexact Rounded
-sqtx2807 squareroot 76E+2 -> 87  Inexact Rounded
-sqtx2808 squareroot 76E+3 -> 2.8E+2  Inexact Rounded
-sqtx2809 squareroot 0.77 -> 0.88  Inexact Rounded
-sqtx2810 squareroot 0.077 -> 0.28  Inexact Rounded
-sqtx2811 squareroot 77.0E-1 -> 2.8  Inexact Rounded
-sqtx2812 squareroot 77.00E-2 -> 0.88  Inexact Rounded
-sqtx2813 squareroot 77E-3 -> 0.28  Inexact Rounded
-sqtx2814 squareroot 77E+1 -> 28  Inexact Rounded
-sqtx2815 squareroot 77E+2 -> 88  Inexact Rounded
-sqtx2816 squareroot 77E+3 -> 2.8E+2  Inexact Rounded
-sqtx2817 squareroot 0.78 -> 0.88  Inexact Rounded
-sqtx2818 squareroot 0.078 -> 0.28  Inexact Rounded
-sqtx2819 squareroot 78.0E-1 -> 2.8  Inexact Rounded
-sqtx2820 squareroot 78.00E-2 -> 0.88  Inexact Rounded
-sqtx2821 squareroot 78E-3 -> 0.28  Inexact Rounded
-sqtx2822 squareroot 78E+1 -> 28  Inexact Rounded
-sqtx2823 squareroot 78E+2 -> 88  Inexact Rounded
-sqtx2824 squareroot 78E+3 -> 2.8E+2  Inexact Rounded
-sqtx2825 squareroot 0.79 -> 0.89  Inexact Rounded
-sqtx2826 squareroot 0.079 -> 0.28  Inexact Rounded
-sqtx2827 squareroot 79.0E-1 -> 2.8  Inexact Rounded
-sqtx2828 squareroot 79.00E-2 -> 0.89  Inexact Rounded
-sqtx2829 squareroot 79E-3 -> 0.28  Inexact Rounded
-sqtx2830 squareroot 79E+1 -> 28  Inexact Rounded
-sqtx2831 squareroot 79E+2 -> 89  Inexact Rounded
-sqtx2832 squareroot 79E+3 -> 2.8E+2  Inexact Rounded
-sqtx2833 squareroot 0.80 -> 0.89  Inexact Rounded
-sqtx2834 squareroot 0.080 -> 0.28  Inexact Rounded
-sqtx2835 squareroot 80.0E-1 -> 2.8  Inexact Rounded
-sqtx2836 squareroot 80.00E-2 -> 0.89  Inexact Rounded
-sqtx2837 squareroot 80E-3 -> 0.28  Inexact Rounded
-sqtx2838 squareroot 80E+1 -> 28  Inexact Rounded
-sqtx2839 squareroot 80E+2 -> 89  Inexact Rounded
-sqtx2840 squareroot 80E+3 -> 2.8E+2  Inexact Rounded
-sqtx2841 squareroot 0.81 -> 0.9
-sqtx2842 squareroot 0.081 -> 0.28  Inexact Rounded
-sqtx2843 squareroot 81.0E-1 -> 2.8  Inexact Rounded
-sqtx2844 squareroot 81.00E-2 -> 0.90
-sqtx2845 squareroot 81E-3 -> 0.28  Inexact Rounded
-sqtx2846 squareroot 81E+1 -> 28  Inexact Rounded
-sqtx2847 squareroot 81E+2 -> 9E+1
-sqtx2848 squareroot 81E+3 -> 2.8E+2  Inexact Rounded
-sqtx2849 squareroot 0.82 -> 0.91  Inexact Rounded
-sqtx2850 squareroot 0.082 -> 0.29  Inexact Rounded
-sqtx2851 squareroot 82.0E-1 -> 2.9  Inexact Rounded
-sqtx2852 squareroot 82.00E-2 -> 0.91  Inexact Rounded
-sqtx2853 squareroot 82E-3 -> 0.29  Inexact Rounded
-sqtx2854 squareroot 82E+1 -> 29  Inexact Rounded
-sqtx2855 squareroot 82E+2 -> 91  Inexact Rounded
-sqtx2856 squareroot 82E+3 -> 2.9E+2  Inexact Rounded
-sqtx2857 squareroot 0.83 -> 0.91  Inexact Rounded
-sqtx2858 squareroot 0.083 -> 0.29  Inexact Rounded
-sqtx2859 squareroot 83.0E-1 -> 2.9  Inexact Rounded
-sqtx2860 squareroot 83.00E-2 -> 0.91  Inexact Rounded
-sqtx2861 squareroot 83E-3 -> 0.29  Inexact Rounded
-sqtx2862 squareroot 83E+1 -> 29  Inexact Rounded
-sqtx2863 squareroot 83E+2 -> 91  Inexact Rounded
-sqtx2864 squareroot 83E+3 -> 2.9E+2  Inexact Rounded
-sqtx2865 squareroot 0.84 -> 0.92  Inexact Rounded
-sqtx2866 squareroot 0.084 -> 0.29  Inexact Rounded
-sqtx2867 squareroot 84.0E-1 -> 2.9  Inexact Rounded
-sqtx2868 squareroot 84.00E-2 -> 0.92  Inexact Rounded
-sqtx2869 squareroot 84E-3 -> 0.29  Inexact Rounded
-sqtx2870 squareroot 84E+1 -> 29  Inexact Rounded
-sqtx2871 squareroot 84E+2 -> 92  Inexact Rounded
-sqtx2872 squareroot 84E+3 -> 2.9E+2  Inexact Rounded
-sqtx2873 squareroot 0.85 -> 0.92  Inexact Rounded
-sqtx2874 squareroot 0.085 -> 0.29  Inexact Rounded
-sqtx2875 squareroot 85.0E-1 -> 2.9  Inexact Rounded
-sqtx2876 squareroot 85.00E-2 -> 0.92  Inexact Rounded
-sqtx2877 squareroot 85E-3 -> 0.29  Inexact Rounded
-sqtx2878 squareroot 85E+1 -> 29  Inexact Rounded
-sqtx2879 squareroot 85E+2 -> 92  Inexact Rounded
-sqtx2880 squareroot 85E+3 -> 2.9E+2  Inexact Rounded
-sqtx2881 squareroot 0.86 -> 0.93  Inexact Rounded
-sqtx2882 squareroot 0.086 -> 0.29  Inexact Rounded
-sqtx2883 squareroot 86.0E-1 -> 2.9  Inexact Rounded
-sqtx2884 squareroot 86.00E-2 -> 0.93  Inexact Rounded
-sqtx2885 squareroot 86E-3 -> 0.29  Inexact Rounded
-sqtx2886 squareroot 86E+1 -> 29  Inexact Rounded
-sqtx2887 squareroot 86E+2 -> 93  Inexact Rounded
-sqtx2888 squareroot 86E+3 -> 2.9E+2  Inexact Rounded
-sqtx2889 squareroot 0.87 -> 0.93  Inexact Rounded
-sqtx2890 squareroot 0.087 -> 0.29  Inexact Rounded
-sqtx2891 squareroot 87.0E-1 -> 2.9  Inexact Rounded
-sqtx2892 squareroot 87.00E-2 -> 0.93  Inexact Rounded
-sqtx2893 squareroot 87E-3 -> 0.29  Inexact Rounded
-sqtx2894 squareroot 87E+1 -> 29  Inexact Rounded
-sqtx2895 squareroot 87E+2 -> 93  Inexact Rounded
-sqtx2896 squareroot 87E+3 -> 2.9E+2  Inexact Rounded
-sqtx2897 squareroot 0.88 -> 0.94  Inexact Rounded
-sqtx2898 squareroot 0.088 -> 0.30  Inexact Rounded
-sqtx2899 squareroot 88.0E-1 -> 3.0  Inexact Rounded
-sqtx2900 squareroot 88.00E-2 -> 0.94  Inexact Rounded
-sqtx2901 squareroot 88E-3 -> 0.30  Inexact Rounded
-sqtx2902 squareroot 88E+1 -> 30  Inexact Rounded
-sqtx2903 squareroot 88E+2 -> 94  Inexact Rounded
-sqtx2904 squareroot 88E+3 -> 3.0E+2  Inexact Rounded
-sqtx2905 squareroot 0.89 -> 0.94  Inexact Rounded
-sqtx2906 squareroot 0.089 -> 0.30  Inexact Rounded
-sqtx2907 squareroot 89.0E-1 -> 3.0  Inexact Rounded
-sqtx2908 squareroot 89.00E-2 -> 0.94  Inexact Rounded
-sqtx2909 squareroot 89E-3 -> 0.30  Inexact Rounded
-sqtx2910 squareroot 89E+1 -> 30  Inexact Rounded
-sqtx2911 squareroot 89E+2 -> 94  Inexact Rounded
-sqtx2912 squareroot 89E+3 -> 3.0E+2  Inexact Rounded
-sqtx2913 squareroot 0.90 -> 0.95  Inexact Rounded
-sqtx2914 squareroot 0.090 -> 0.30
-sqtx2915 squareroot 90.0E-1 -> 3.0
-sqtx2916 squareroot 90.00E-2 -> 0.95  Inexact Rounded
-sqtx2917 squareroot 90E-3 -> 0.30
-sqtx2918 squareroot 90E+1 -> 30
-sqtx2919 squareroot 90E+2 -> 95  Inexact Rounded
-sqtx2920 squareroot 90E+3 -> 3.0E+2
-sqtx2921 squareroot 0.91 -> 0.95  Inexact Rounded
-sqtx2922 squareroot 0.091 -> 0.30  Inexact Rounded
-sqtx2923 squareroot 91.0E-1 -> 3.0  Inexact Rounded
-sqtx2924 squareroot 91.00E-2 -> 0.95  Inexact Rounded
-sqtx2925 squareroot 91E-3 -> 0.30  Inexact Rounded
-sqtx2926 squareroot 91E+1 -> 30  Inexact Rounded
-sqtx2927 squareroot 91E+2 -> 95  Inexact Rounded
-sqtx2928 squareroot 91E+3 -> 3.0E+2  Inexact Rounded
-sqtx2929 squareroot 0.92 -> 0.96  Inexact Rounded
-sqtx2930 squareroot 0.092 -> 0.30  Inexact Rounded
-sqtx2931 squareroot 92.0E-1 -> 3.0  Inexact Rounded
-sqtx2932 squareroot 92.00E-2 -> 0.96  Inexact Rounded
-sqtx2933 squareroot 92E-3 -> 0.30  Inexact Rounded
-sqtx2934 squareroot 92E+1 -> 30  Inexact Rounded
-sqtx2935 squareroot 92E+2 -> 96  Inexact Rounded
-sqtx2936 squareroot 92E+3 -> 3.0E+2  Inexact Rounded
-sqtx2937 squareroot 0.93 -> 0.96  Inexact Rounded
-sqtx2938 squareroot 0.093 -> 0.30  Inexact Rounded
-sqtx2939 squareroot 93.0E-1 -> 3.0  Inexact Rounded
-sqtx2940 squareroot 93.00E-2 -> 0.96  Inexact Rounded
-sqtx2941 squareroot 93E-3 -> 0.30  Inexact Rounded
-sqtx2942 squareroot 93E+1 -> 30  Inexact Rounded
-sqtx2943 squareroot 93E+2 -> 96  Inexact Rounded
-sqtx2944 squareroot 93E+3 -> 3.0E+2  Inexact Rounded
-sqtx2945 squareroot 0.94 -> 0.97  Inexact Rounded
-sqtx2946 squareroot 0.094 -> 0.31  Inexact Rounded
-sqtx2947 squareroot 94.0E-1 -> 3.1  Inexact Rounded
-sqtx2948 squareroot 94.00E-2 -> 0.97  Inexact Rounded
-sqtx2949 squareroot 94E-3 -> 0.31  Inexact Rounded
-sqtx2950 squareroot 94E+1 -> 31  Inexact Rounded
-sqtx2951 squareroot 94E+2 -> 97  Inexact Rounded
-sqtx2952 squareroot 94E+3 -> 3.1E+2  Inexact Rounded
-sqtx2953 squareroot 0.95 -> 0.97  Inexact Rounded
-sqtx2954 squareroot 0.095 -> 0.31  Inexact Rounded
-sqtx2955 squareroot 95.0E-1 -> 3.1  Inexact Rounded
-sqtx2956 squareroot 95.00E-2 -> 0.97  Inexact Rounded
-sqtx2957 squareroot 95E-3 -> 0.31  Inexact Rounded
-sqtx2958 squareroot 95E+1 -> 31  Inexact Rounded
-sqtx2959 squareroot 95E+2 -> 97  Inexact Rounded
-sqtx2960 squareroot 95E+3 -> 3.1E+2  Inexact Rounded
-sqtx2961 squareroot 0.96 -> 0.98  Inexact Rounded
-sqtx2962 squareroot 0.096 -> 0.31  Inexact Rounded
-sqtx2963 squareroot 96.0E-1 -> 3.1  Inexact Rounded
-sqtx2964 squareroot 96.00E-2 -> 0.98  Inexact Rounded
-sqtx2965 squareroot 96E-3 -> 0.31  Inexact Rounded
-sqtx2966 squareroot 96E+1 -> 31  Inexact Rounded
-sqtx2967 squareroot 96E+2 -> 98  Inexact Rounded
-sqtx2968 squareroot 96E+3 -> 3.1E+2  Inexact Rounded
-sqtx2969 squareroot 0.97 -> 0.98  Inexact Rounded
-sqtx2970 squareroot 0.097 -> 0.31  Inexact Rounded
-sqtx2971 squareroot 97.0E-1 -> 3.1  Inexact Rounded
-sqtx2972 squareroot 97.00E-2 -> 0.98  Inexact Rounded
-sqtx2973 squareroot 97E-3 -> 0.31  Inexact Rounded
-sqtx2974 squareroot 97E+1 -> 31  Inexact Rounded
-sqtx2975 squareroot 97E+2 -> 98  Inexact Rounded
-sqtx2976 squareroot 97E+3 -> 3.1E+2  Inexact Rounded
-sqtx2977 squareroot 0.98 -> 0.99  Inexact Rounded
-sqtx2978 squareroot 0.098 -> 0.31  Inexact Rounded
-sqtx2979 squareroot 98.0E-1 -> 3.1  Inexact Rounded
-sqtx2980 squareroot 98.00E-2 -> 0.99  Inexact Rounded
-sqtx2981 squareroot 98E-3 -> 0.31  Inexact Rounded
-sqtx2982 squareroot 98E+1 -> 31  Inexact Rounded
-sqtx2983 squareroot 98E+2 -> 99  Inexact Rounded
-sqtx2984 squareroot 98E+3 -> 3.1E+2  Inexact Rounded
-sqtx2985 squareroot 0.99 -> 0.99  Inexact Rounded
-sqtx2986 squareroot 0.099 -> 0.31  Inexact Rounded
-sqtx2987 squareroot 99.0E-1 -> 3.1  Inexact Rounded
-sqtx2988 squareroot 99.00E-2 -> 0.99  Inexact Rounded
-sqtx2989 squareroot 99E-3 -> 0.31  Inexact Rounded
-sqtx2990 squareroot 99E+1 -> 31  Inexact Rounded
-sqtx2991 squareroot 99E+2 -> 99  Inexact Rounded
-sqtx2992 squareroot 99E+3 -> 3.1E+2  Inexact Rounded
-
--- Precision 3 squareroot tests [exhaustive, f and f/10]
-rounding:    half_even
-maxExponent: 999
-minexponent: -999
-precision:   3
-sqtx3001 squareroot 0.1 -> 0.316  Inexact Rounded
-sqtx3002 squareroot 0.01 -> 0.1
-sqtx3003 squareroot 0.2 -> 0.447  Inexact Rounded
-sqtx3004 squareroot 0.02 -> 0.141  Inexact Rounded
-sqtx3005 squareroot 0.3 -> 0.548  Inexact Rounded
-sqtx3006 squareroot 0.03 -> 0.173  Inexact Rounded
-sqtx3007 squareroot 0.4 -> 0.632  Inexact Rounded
-sqtx3008 squareroot 0.04 -> 0.2
-sqtx3009 squareroot 0.5 -> 0.707  Inexact Rounded
-sqtx3010 squareroot 0.05 -> 0.224  Inexact Rounded
-sqtx3011 squareroot 0.6 -> 0.775  Inexact Rounded
-sqtx3012 squareroot 0.06 -> 0.245  Inexact Rounded
-sqtx3013 squareroot 0.7 -> 0.837  Inexact Rounded
-sqtx3014 squareroot 0.07 -> 0.265  Inexact Rounded
-sqtx3015 squareroot 0.8 -> 0.894  Inexact Rounded
-sqtx3016 squareroot 0.08 -> 0.283  Inexact Rounded
-sqtx3017 squareroot 0.9 -> 0.949  Inexact Rounded
-sqtx3018 squareroot 0.09 -> 0.3
-sqtx3019 squareroot 0.11 -> 0.332  Inexact Rounded
-sqtx3020 squareroot 0.011 -> 0.105  Inexact Rounded
-sqtx3021 squareroot 0.12 -> 0.346  Inexact Rounded
-sqtx3022 squareroot 0.012 -> 0.110  Inexact Rounded
-sqtx3023 squareroot 0.13 -> 0.361  Inexact Rounded
-sqtx3024 squareroot 0.013 -> 0.114  Inexact Rounded
-sqtx3025 squareroot 0.14 -> 0.374  Inexact Rounded
-sqtx3026 squareroot 0.014 -> 0.118  Inexact Rounded
-sqtx3027 squareroot 0.15 -> 0.387  Inexact Rounded
-sqtx3028 squareroot 0.015 -> 0.122  Inexact Rounded
-sqtx3029 squareroot 0.16 -> 0.4
-sqtx3030 squareroot 0.016 -> 0.126  Inexact Rounded
-sqtx3031 squareroot 0.17 -> 0.412  Inexact Rounded
-sqtx3032 squareroot 0.017 -> 0.130  Inexact Rounded
-sqtx3033 squareroot 0.18 -> 0.424  Inexact Rounded
-sqtx3034 squareroot 0.018 -> 0.134  Inexact Rounded
-sqtx3035 squareroot 0.19 -> 0.436  Inexact Rounded
-sqtx3036 squareroot 0.019 -> 0.138  Inexact Rounded
-sqtx3037 squareroot 0.21 -> 0.458  Inexact Rounded
-sqtx3038 squareroot 0.021 -> 0.145  Inexact Rounded
-sqtx3039 squareroot 0.22 -> 0.469  Inexact Rounded
-sqtx3040 squareroot 0.022 -> 0.148  Inexact Rounded
-sqtx3041 squareroot 0.23 -> 0.480  Inexact Rounded
-sqtx3042 squareroot 0.023 -> 0.152  Inexact Rounded
-sqtx3043 squareroot 0.24 -> 0.490  Inexact Rounded
-sqtx3044 squareroot 0.024 -> 0.155  Inexact Rounded
-sqtx3045 squareroot 0.25 -> 0.5
-sqtx3046 squareroot 0.025 -> 0.158  Inexact Rounded
-sqtx3047 squareroot 0.26 -> 0.510  Inexact Rounded
-sqtx3048 squareroot 0.026 -> 0.161  Inexact Rounded
-sqtx3049 squareroot 0.27 -> 0.520  Inexact Rounded
-sqtx3050 squareroot 0.027 -> 0.164  Inexact Rounded
-sqtx3051 squareroot 0.28 -> 0.529  Inexact Rounded
-sqtx3052 squareroot 0.028 -> 0.167  Inexact Rounded
-sqtx3053 squareroot 0.29 -> 0.539  Inexact Rounded
-sqtx3054 squareroot 0.029 -> 0.170  Inexact Rounded
-sqtx3055 squareroot 0.31 -> 0.557  Inexact Rounded
-sqtx3056 squareroot 0.031 -> 0.176  Inexact Rounded
-sqtx3057 squareroot 0.32 -> 0.566  Inexact Rounded
-sqtx3058 squareroot 0.032 -> 0.179  Inexact Rounded
-sqtx3059 squareroot 0.33 -> 0.574  Inexact Rounded
-sqtx3060 squareroot 0.033 -> 0.182  Inexact Rounded
-sqtx3061 squareroot 0.34 -> 0.583  Inexact Rounded
-sqtx3062 squareroot 0.034 -> 0.184  Inexact Rounded
-sqtx3063 squareroot 0.35 -> 0.592  Inexact Rounded
-sqtx3064 squareroot 0.035 -> 0.187  Inexact Rounded
-sqtx3065 squareroot 0.36 -> 0.6
-sqtx3066 squareroot 0.036 -> 0.190  Inexact Rounded
-sqtx3067 squareroot 0.37 -> 0.608  Inexact Rounded
-sqtx3068 squareroot 0.037 -> 0.192  Inexact Rounded
-sqtx3069 squareroot 0.38 -> 0.616  Inexact Rounded
-sqtx3070 squareroot 0.038 -> 0.195  Inexact Rounded
-sqtx3071 squareroot 0.39 -> 0.624  Inexact Rounded
-sqtx3072 squareroot 0.039 -> 0.197  Inexact Rounded
-sqtx3073 squareroot 0.41 -> 0.640  Inexact Rounded
-sqtx3074 squareroot 0.041 -> 0.202  Inexact Rounded
-sqtx3075 squareroot 0.42 -> 0.648  Inexact Rounded
-sqtx3076 squareroot 0.042 -> 0.205  Inexact Rounded
-sqtx3077 squareroot 0.43 -> 0.656  Inexact Rounded
-sqtx3078 squareroot 0.043 -> 0.207  Inexact Rounded
-sqtx3079 squareroot 0.44 -> 0.663  Inexact Rounded
-sqtx3080 squareroot 0.044 -> 0.210  Inexact Rounded
-sqtx3081 squareroot 0.45 -> 0.671  Inexact Rounded
-sqtx3082 squareroot 0.045 -> 0.212  Inexact Rounded
-sqtx3083 squareroot 0.46 -> 0.678  Inexact Rounded
-sqtx3084 squareroot 0.046 -> 0.214  Inexact Rounded
-sqtx3085 squareroot 0.47 -> 0.686  Inexact Rounded
-sqtx3086 squareroot 0.047 -> 0.217  Inexact Rounded
-sqtx3087 squareroot 0.48 -> 0.693  Inexact Rounded
-sqtx3088 squareroot 0.048 -> 0.219  Inexact Rounded
-sqtx3089 squareroot 0.49 -> 0.7
-sqtx3090 squareroot 0.049 -> 0.221  Inexact Rounded
-sqtx3091 squareroot 0.51 -> 0.714  Inexact Rounded
-sqtx3092 squareroot 0.051 -> 0.226  Inexact Rounded
-sqtx3093 squareroot 0.52 -> 0.721  Inexact Rounded
-sqtx3094 squareroot 0.052 -> 0.228  Inexact Rounded
-sqtx3095 squareroot 0.53 -> 0.728  Inexact Rounded
-sqtx3096 squareroot 0.053 -> 0.230  Inexact Rounded
-sqtx3097 squareroot 0.54 -> 0.735  Inexact Rounded
-sqtx3098 squareroot 0.054 -> 0.232  Inexact Rounded
-sqtx3099 squareroot 0.55 -> 0.742  Inexact Rounded
-sqtx3100 squareroot 0.055 -> 0.235  Inexact Rounded
-sqtx3101 squareroot 0.56 -> 0.748  Inexact Rounded
-sqtx3102 squareroot 0.056 -> 0.237  Inexact Rounded
-sqtx3103 squareroot 0.57 -> 0.755  Inexact Rounded
-sqtx3104 squareroot 0.057 -> 0.239  Inexact Rounded
-sqtx3105 squareroot 0.58 -> 0.762  Inexact Rounded
-sqtx3106 squareroot 0.058 -> 0.241  Inexact Rounded
-sqtx3107 squareroot 0.59 -> 0.768  Inexact Rounded
-sqtx3108 squareroot 0.059 -> 0.243  Inexact Rounded
-sqtx3109 squareroot 0.61 -> 0.781  Inexact Rounded
-sqtx3110 squareroot 0.061 -> 0.247  Inexact Rounded
-sqtx3111 squareroot 0.62 -> 0.787  Inexact Rounded
-sqtx3112 squareroot 0.062 -> 0.249  Inexact Rounded
-sqtx3113 squareroot 0.63 -> 0.794  Inexact Rounded
-sqtx3114 squareroot 0.063 -> 0.251  Inexact Rounded
-sqtx3115 squareroot 0.64 -> 0.8
-sqtx3116 squareroot 0.064 -> 0.253  Inexact Rounded
-sqtx3117 squareroot 0.65 -> 0.806  Inexact Rounded
-sqtx3118 squareroot 0.065 -> 0.255  Inexact Rounded
-sqtx3119 squareroot 0.66 -> 0.812  Inexact Rounded
-sqtx3120 squareroot 0.066 -> 0.257  Inexact Rounded
-sqtx3121 squareroot 0.67 -> 0.819  Inexact Rounded
-sqtx3122 squareroot 0.067 -> 0.259  Inexact Rounded
-sqtx3123 squareroot 0.68 -> 0.825  Inexact Rounded
-sqtx3124 squareroot 0.068 -> 0.261  Inexact Rounded
-sqtx3125 squareroot 0.69 -> 0.831  Inexact Rounded
-sqtx3126 squareroot 0.069 -> 0.263  Inexact Rounded
-sqtx3127 squareroot 0.71 -> 0.843  Inexact Rounded
-sqtx3128 squareroot 0.071 -> 0.266  Inexact Rounded
-sqtx3129 squareroot 0.72 -> 0.849  Inexact Rounded
-sqtx3130 squareroot 0.072 -> 0.268  Inexact Rounded
-sqtx3131 squareroot 0.73 -> 0.854  Inexact Rounded
-sqtx3132 squareroot 0.073 -> 0.270  Inexact Rounded
-sqtx3133 squareroot 0.74 -> 0.860  Inexact Rounded
-sqtx3134 squareroot 0.074 -> 0.272  Inexact Rounded
-sqtx3135 squareroot 0.75 -> 0.866  Inexact Rounded
-sqtx3136 squareroot 0.075 -> 0.274  Inexact Rounded
-sqtx3137 squareroot 0.76 -> 0.872  Inexact Rounded
-sqtx3138 squareroot 0.076 -> 0.276  Inexact Rounded
-sqtx3139 squareroot 0.77 -> 0.877  Inexact Rounded
-sqtx3140 squareroot 0.077 -> 0.277  Inexact Rounded
-sqtx3141 squareroot 0.78 -> 0.883  Inexact Rounded
-sqtx3142 squareroot 0.078 -> 0.279  Inexact Rounded
-sqtx3143 squareroot 0.79 -> 0.889  Inexact Rounded
-sqtx3144 squareroot 0.079 -> 0.281  Inexact Rounded
-sqtx3145 squareroot 0.81 -> 0.9
-sqtx3146 squareroot 0.081 -> 0.285  Inexact Rounded
-sqtx3147 squareroot 0.82 -> 0.906  Inexact Rounded
-sqtx3148 squareroot 0.082 -> 0.286  Inexact Rounded
-sqtx3149 squareroot 0.83 -> 0.911  Inexact Rounded
-sqtx3150 squareroot 0.083 -> 0.288  Inexact Rounded
-sqtx3151 squareroot 0.84 -> 0.917  Inexact Rounded
-sqtx3152 squareroot 0.084 -> 0.290  Inexact Rounded
-sqtx3153 squareroot 0.85 -> 0.922  Inexact Rounded
-sqtx3154 squareroot 0.085 -> 0.292  Inexact Rounded
-sqtx3155 squareroot 0.86 -> 0.927  Inexact Rounded
-sqtx3156 squareroot 0.086 -> 0.293  Inexact Rounded
-sqtx3157 squareroot 0.87 -> 0.933  Inexact Rounded
-sqtx3158 squareroot 0.087 -> 0.295  Inexact Rounded
-sqtx3159 squareroot 0.88 -> 0.938  Inexact Rounded
-sqtx3160 squareroot 0.088 -> 0.297  Inexact Rounded
-sqtx3161 squareroot 0.89 -> 0.943  Inexact Rounded
-sqtx3162 squareroot 0.089 -> 0.298  Inexact Rounded
-sqtx3163 squareroot 0.91 -> 0.954  Inexact Rounded
-sqtx3164 squareroot 0.091 -> 0.302  Inexact Rounded
-sqtx3165 squareroot 0.92 -> 0.959  Inexact Rounded
-sqtx3166 squareroot 0.092 -> 0.303  Inexact Rounded
-sqtx3167 squareroot 0.93 -> 0.964  Inexact Rounded
-sqtx3168 squareroot 0.093 -> 0.305  Inexact Rounded
-sqtx3169 squareroot 0.94 -> 0.970  Inexact Rounded
-sqtx3170 squareroot 0.094 -> 0.307  Inexact Rounded
-sqtx3171 squareroot 0.95 -> 0.975  Inexact Rounded
-sqtx3172 squareroot 0.095 -> 0.308  Inexact Rounded
-sqtx3173 squareroot 0.96 -> 0.980  Inexact Rounded
-sqtx3174 squareroot 0.096 -> 0.310  Inexact Rounded
-sqtx3175 squareroot 0.97 -> 0.985  Inexact Rounded
-sqtx3176 squareroot 0.097 -> 0.311  Inexact Rounded
-sqtx3177 squareroot 0.98 -> 0.990  Inexact Rounded
-sqtx3178 squareroot 0.098 -> 0.313  Inexact Rounded
-sqtx3179 squareroot 0.99 -> 0.995  Inexact Rounded
-sqtx3180 squareroot 0.099 -> 0.315  Inexact Rounded
-sqtx3181 squareroot 0.101 -> 0.318  Inexact Rounded
-sqtx3182 squareroot 0.0101 -> 0.100  Inexact Rounded
-sqtx3183 squareroot 0.102 -> 0.319  Inexact Rounded
-sqtx3184 squareroot 0.0102 -> 0.101  Inexact Rounded
-sqtx3185 squareroot 0.103 -> 0.321  Inexact Rounded
-sqtx3186 squareroot 0.0103 -> 0.101  Inexact Rounded
-sqtx3187 squareroot 0.104 -> 0.322  Inexact Rounded
-sqtx3188 squareroot 0.0104 -> 0.102  Inexact Rounded
-sqtx3189 squareroot 0.105 -> 0.324  Inexact Rounded
-sqtx3190 squareroot 0.0105 -> 0.102  Inexact Rounded
-sqtx3191 squareroot 0.106 -> 0.326  Inexact Rounded
-sqtx3192 squareroot 0.0106 -> 0.103  Inexact Rounded
-sqtx3193 squareroot 0.107 -> 0.327  Inexact Rounded
-sqtx3194 squareroot 0.0107 -> 0.103  Inexact Rounded
-sqtx3195 squareroot 0.108 -> 0.329  Inexact Rounded
-sqtx3196 squareroot 0.0108 -> 0.104  Inexact Rounded
-sqtx3197 squareroot 0.109 -> 0.330  Inexact Rounded
-sqtx3198 squareroot 0.0109 -> 0.104  Inexact Rounded
-sqtx3199 squareroot 0.111 -> 0.333  Inexact Rounded
-sqtx3200 squareroot 0.0111 -> 0.105  Inexact Rounded
-sqtx3201 squareroot 0.112 -> 0.335  Inexact Rounded
-sqtx3202 squareroot 0.0112 -> 0.106  Inexact Rounded
-sqtx3203 squareroot 0.113 -> 0.336  Inexact Rounded
-sqtx3204 squareroot 0.0113 -> 0.106  Inexact Rounded
-sqtx3205 squareroot 0.114 -> 0.338  Inexact Rounded
-sqtx3206 squareroot 0.0114 -> 0.107  Inexact Rounded
-sqtx3207 squareroot 0.115 -> 0.339  Inexact Rounded
-sqtx3208 squareroot 0.0115 -> 0.107  Inexact Rounded
-sqtx3209 squareroot 0.116 -> 0.341  Inexact Rounded
-sqtx3210 squareroot 0.0116 -> 0.108  Inexact Rounded
-sqtx3211 squareroot 0.117 -> 0.342  Inexact Rounded
-sqtx3212 squareroot 0.0117 -> 0.108  Inexact Rounded
-sqtx3213 squareroot 0.118 -> 0.344  Inexact Rounded
-sqtx3214 squareroot 0.0118 -> 0.109  Inexact Rounded
-sqtx3215 squareroot 0.119 -> 0.345  Inexact Rounded
-sqtx3216 squareroot 0.0119 -> 0.109  Inexact Rounded
-sqtx3217 squareroot 0.121 -> 0.348  Inexact Rounded
-sqtx3218 squareroot 0.0121 -> 0.11
-sqtx3219 squareroot 0.122 -> 0.349  Inexact Rounded
-sqtx3220 squareroot 0.0122 -> 0.110  Inexact Rounded
-sqtx3221 squareroot 0.123 -> 0.351  Inexact Rounded
-sqtx3222 squareroot 0.0123 -> 0.111  Inexact Rounded
-sqtx3223 squareroot 0.124 -> 0.352  Inexact Rounded
-sqtx3224 squareroot 0.0124 -> 0.111  Inexact Rounded
-sqtx3225 squareroot 0.125 -> 0.354  Inexact Rounded
-sqtx3226 squareroot 0.0125 -> 0.112  Inexact Rounded
-sqtx3227 squareroot 0.126 -> 0.355  Inexact Rounded
-sqtx3228 squareroot 0.0126 -> 0.112  Inexact Rounded
-sqtx3229 squareroot 0.127 -> 0.356  Inexact Rounded
-sqtx3230 squareroot 0.0127 -> 0.113  Inexact Rounded
-sqtx3231 squareroot 0.128 -> 0.358  Inexact Rounded
-sqtx3232 squareroot 0.0128 -> 0.113  Inexact Rounded
-sqtx3233 squareroot 0.129 -> 0.359  Inexact Rounded
-sqtx3234 squareroot 0.0129 -> 0.114  Inexact Rounded
-sqtx3235 squareroot 0.131 -> 0.362  Inexact Rounded
-sqtx3236 squareroot 0.0131 -> 0.114  Inexact Rounded
-sqtx3237 squareroot 0.132 -> 0.363  Inexact Rounded
-sqtx3238 squareroot 0.0132 -> 0.115  Inexact Rounded
-sqtx3239 squareroot 0.133 -> 0.365  Inexact Rounded
-sqtx3240 squareroot 0.0133 -> 0.115  Inexact Rounded
-sqtx3241 squareroot 0.134 -> 0.366  Inexact Rounded
-sqtx3242 squareroot 0.0134 -> 0.116  Inexact Rounded
-sqtx3243 squareroot 0.135 -> 0.367  Inexact Rounded
-sqtx3244 squareroot 0.0135 -> 0.116  Inexact Rounded
-sqtx3245 squareroot 0.136 -> 0.369  Inexact Rounded
-sqtx3246 squareroot 0.0136 -> 0.117  Inexact Rounded
-sqtx3247 squareroot 0.137 -> 0.370  Inexact Rounded
-sqtx3248 squareroot 0.0137 -> 0.117  Inexact Rounded
-sqtx3249 squareroot 0.138 -> 0.371  Inexact Rounded
-sqtx3250 squareroot 0.0138 -> 0.117  Inexact Rounded
-sqtx3251 squareroot 0.139 -> 0.373  Inexact Rounded
-sqtx3252 squareroot 0.0139 -> 0.118  Inexact Rounded
-sqtx3253 squareroot 0.141 -> 0.375  Inexact Rounded
-sqtx3254 squareroot 0.0141 -> 0.119  Inexact Rounded
-sqtx3255 squareroot 0.142 -> 0.377  Inexact Rounded
-sqtx3256 squareroot 0.0142 -> 0.119  Inexact Rounded
-sqtx3257 squareroot 0.143 -> 0.378  Inexact Rounded
-sqtx3258 squareroot 0.0143 -> 0.120  Inexact Rounded
-sqtx3259 squareroot 0.144 -> 0.379  Inexact Rounded
-sqtx3260 squareroot 0.0144 -> 0.12
-sqtx3261 squareroot 0.145 -> 0.381  Inexact Rounded
-sqtx3262 squareroot 0.0145 -> 0.120  Inexact Rounded
-sqtx3263 squareroot 0.146 -> 0.382  Inexact Rounded
-sqtx3264 squareroot 0.0146 -> 0.121  Inexact Rounded
-sqtx3265 squareroot 0.147 -> 0.383  Inexact Rounded
-sqtx3266 squareroot 0.0147 -> 0.121  Inexact Rounded
-sqtx3267 squareroot 0.148 -> 0.385  Inexact Rounded
-sqtx3268 squareroot 0.0148 -> 0.122  Inexact Rounded
-sqtx3269 squareroot 0.149 -> 0.386  Inexact Rounded
-sqtx3270 squareroot 0.0149 -> 0.122  Inexact Rounded
-sqtx3271 squareroot 0.151 -> 0.389  Inexact Rounded
-sqtx3272 squareroot 0.0151 -> 0.123  Inexact Rounded
-sqtx3273 squareroot 0.152 -> 0.390  Inexact Rounded
-sqtx3274 squareroot 0.0152 -> 0.123  Inexact Rounded
-sqtx3275 squareroot 0.153 -> 0.391  Inexact Rounded
-sqtx3276 squareroot 0.0153 -> 0.124  Inexact Rounded
-sqtx3277 squareroot 0.154 -> 0.392  Inexact Rounded
-sqtx3278 squareroot 0.0154 -> 0.124  Inexact Rounded
-sqtx3279 squareroot 0.155 -> 0.394  Inexact Rounded
-sqtx3280 squareroot 0.0155 -> 0.124  Inexact Rounded
-sqtx3281 squareroot 0.156 -> 0.395  Inexact Rounded
-sqtx3282 squareroot 0.0156 -> 0.125  Inexact Rounded
-sqtx3283 squareroot 0.157 -> 0.396  Inexact Rounded
-sqtx3284 squareroot 0.0157 -> 0.125  Inexact Rounded
-sqtx3285 squareroot 0.158 -> 0.397  Inexact Rounded
-sqtx3286 squareroot 0.0158 -> 0.126  Inexact Rounded
-sqtx3287 squareroot 0.159 -> 0.399  Inexact Rounded
-sqtx3288 squareroot 0.0159 -> 0.126  Inexact Rounded
-sqtx3289 squareroot 0.161 -> 0.401  Inexact Rounded
-sqtx3290 squareroot 0.0161 -> 0.127  Inexact Rounded
-sqtx3291 squareroot 0.162 -> 0.402  Inexact Rounded
-sqtx3292 squareroot 0.0162 -> 0.127  Inexact Rounded
-sqtx3293 squareroot 0.163 -> 0.404  Inexact Rounded
-sqtx3294 squareroot 0.0163 -> 0.128  Inexact Rounded
-sqtx3295 squareroot 0.164 -> 0.405  Inexact Rounded
-sqtx3296 squareroot 0.0164 -> 0.128  Inexact Rounded
-sqtx3297 squareroot 0.165 -> 0.406  Inexact Rounded
-sqtx3298 squareroot 0.0165 -> 0.128  Inexact Rounded
-sqtx3299 squareroot 0.166 -> 0.407  Inexact Rounded
-sqtx3300 squareroot 0.0166 -> 0.129  Inexact Rounded
-sqtx3301 squareroot 0.167 -> 0.409  Inexact Rounded
-sqtx3302 squareroot 0.0167 -> 0.129  Inexact Rounded
-sqtx3303 squareroot 0.168 -> 0.410  Inexact Rounded
-sqtx3304 squareroot 0.0168 -> 0.130  Inexact Rounded
-sqtx3305 squareroot 0.169 -> 0.411  Inexact Rounded
-sqtx3306 squareroot 0.0169 -> 0.13
-sqtx3307 squareroot 0.171 -> 0.414  Inexact Rounded
-sqtx3308 squareroot 0.0171 -> 0.131  Inexact Rounded
-sqtx3309 squareroot 0.172 -> 0.415  Inexact Rounded
-sqtx3310 squareroot 0.0172 -> 0.131  Inexact Rounded
-sqtx3311 squareroot 0.173 -> 0.416  Inexact Rounded
-sqtx3312 squareroot 0.0173 -> 0.132  Inexact Rounded
-sqtx3313 squareroot 0.174 -> 0.417  Inexact Rounded
-sqtx3314 squareroot 0.0174 -> 0.132  Inexact Rounded
-sqtx3315 squareroot 0.175 -> 0.418  Inexact Rounded
-sqtx3316 squareroot 0.0175 -> 0.132  Inexact Rounded
-sqtx3317 squareroot 0.176 -> 0.420  Inexact Rounded
-sqtx3318 squareroot 0.0176 -> 0.133  Inexact Rounded
-sqtx3319 squareroot 0.177 -> 0.421  Inexact Rounded
-sqtx3320 squareroot 0.0177 -> 0.133  Inexact Rounded
-sqtx3321 squareroot 0.178 -> 0.422  Inexact Rounded
-sqtx3322 squareroot 0.0178 -> 0.133  Inexact Rounded
-sqtx3323 squareroot 0.179 -> 0.423  Inexact Rounded
-sqtx3324 squareroot 0.0179 -> 0.134  Inexact Rounded
-sqtx3325 squareroot 0.181 -> 0.425  Inexact Rounded
-sqtx3326 squareroot 0.0181 -> 0.135  Inexact Rounded
-sqtx3327 squareroot 0.182 -> 0.427  Inexact Rounded
-sqtx3328 squareroot 0.0182 -> 0.135  Inexact Rounded
-sqtx3329 squareroot 0.183 -> 0.428  Inexact Rounded
-sqtx3330 squareroot 0.0183 -> 0.135  Inexact Rounded
-sqtx3331 squareroot 0.184 -> 0.429  Inexact Rounded
-sqtx3332 squareroot 0.0184 -> 0.136  Inexact Rounded
-sqtx3333 squareroot 0.185 -> 0.430  Inexact Rounded
-sqtx3334 squareroot 0.0185 -> 0.136  Inexact Rounded
-sqtx3335 squareroot 0.186 -> 0.431  Inexact Rounded
-sqtx3336 squareroot 0.0186 -> 0.136  Inexact Rounded
-sqtx3337 squareroot 0.187 -> 0.432  Inexact Rounded
-sqtx3338 squareroot 0.0187 -> 0.137  Inexact Rounded
-sqtx3339 squareroot 0.188 -> 0.434  Inexact Rounded
-sqtx3340 squareroot 0.0188 -> 0.137  Inexact Rounded
-sqtx3341 squareroot 0.189 -> 0.435  Inexact Rounded
-sqtx3342 squareroot 0.0189 -> 0.137  Inexact Rounded
-sqtx3343 squareroot 0.191 -> 0.437  Inexact Rounded
-sqtx3344 squareroot 0.0191 -> 0.138  Inexact Rounded
-sqtx3345 squareroot 0.192 -> 0.438  Inexact Rounded
-sqtx3346 squareroot 0.0192 -> 0.139  Inexact Rounded
-sqtx3347 squareroot 0.193 -> 0.439  Inexact Rounded
-sqtx3348 squareroot 0.0193 -> 0.139  Inexact Rounded
-sqtx3349 squareroot 0.194 -> 0.440  Inexact Rounded
-sqtx3350 squareroot 0.0194 -> 0.139  Inexact Rounded
-sqtx3351 squareroot 0.195 -> 0.442  Inexact Rounded
-sqtx3352 squareroot 0.0195 -> 0.140  Inexact Rounded
-sqtx3353 squareroot 0.196 -> 0.443  Inexact Rounded
-sqtx3354 squareroot 0.0196 -> 0.14
-sqtx3355 squareroot 0.197 -> 0.444  Inexact Rounded
-sqtx3356 squareroot 0.0197 -> 0.140  Inexact Rounded
-sqtx3357 squareroot 0.198 -> 0.445  Inexact Rounded
-sqtx3358 squareroot 0.0198 -> 0.141  Inexact Rounded
-sqtx3359 squareroot 0.199 -> 0.446  Inexact Rounded
-sqtx3360 squareroot 0.0199 -> 0.141  Inexact Rounded
-sqtx3361 squareroot 0.201 -> 0.448  Inexact Rounded
-sqtx3362 squareroot 0.0201 -> 0.142  Inexact Rounded
-sqtx3363 squareroot 0.202 -> 0.449  Inexact Rounded
-sqtx3364 squareroot 0.0202 -> 0.142  Inexact Rounded
-sqtx3365 squareroot 0.203 -> 0.451  Inexact Rounded
-sqtx3366 squareroot 0.0203 -> 0.142  Inexact Rounded
-sqtx3367 squareroot 0.204 -> 0.452  Inexact Rounded
-sqtx3368 squareroot 0.0204 -> 0.143  Inexact Rounded
-sqtx3369 squareroot 0.205 -> 0.453  Inexact Rounded
-sqtx3370 squareroot 0.0205 -> 0.143  Inexact Rounded
-sqtx3371 squareroot 0.206 -> 0.454  Inexact Rounded
-sqtx3372 squareroot 0.0206 -> 0.144  Inexact Rounded
-sqtx3373 squareroot 0.207 -> 0.455  Inexact Rounded
-sqtx3374 squareroot 0.0207 -> 0.144  Inexact Rounded
-sqtx3375 squareroot 0.208 -> 0.456  Inexact Rounded
-sqtx3376 squareroot 0.0208 -> 0.144  Inexact Rounded
-sqtx3377 squareroot 0.209 -> 0.457  Inexact Rounded
-sqtx3378 squareroot 0.0209 -> 0.145  Inexact Rounded
-sqtx3379 squareroot 0.211 -> 0.459  Inexact Rounded
-sqtx3380 squareroot 0.0211 -> 0.145  Inexact Rounded
-sqtx3381 squareroot 0.212 -> 0.460  Inexact Rounded
-sqtx3382 squareroot 0.0212 -> 0.146  Inexact Rounded
-sqtx3383 squareroot 0.213 -> 0.462  Inexact Rounded
-sqtx3384 squareroot 0.0213 -> 0.146  Inexact Rounded
-sqtx3385 squareroot 0.214 -> 0.463  Inexact Rounded
-sqtx3386 squareroot 0.0214 -> 0.146  Inexact Rounded
-sqtx3387 squareroot 0.215 -> 0.464  Inexact Rounded
-sqtx3388 squareroot 0.0215 -> 0.147  Inexact Rounded
-sqtx3389 squareroot 0.216 -> 0.465  Inexact Rounded
-sqtx3390 squareroot 0.0216 -> 0.147  Inexact Rounded
-sqtx3391 squareroot 0.217 -> 0.466  Inexact Rounded
-sqtx3392 squareroot 0.0217 -> 0.147  Inexact Rounded
-sqtx3393 squareroot 0.218 -> 0.467  Inexact Rounded
-sqtx3394 squareroot 0.0218 -> 0.148  Inexact Rounded
-sqtx3395 squareroot 0.219 -> 0.468  Inexact Rounded
-sqtx3396 squareroot 0.0219 -> 0.148  Inexact Rounded
-sqtx3397 squareroot 0.221 -> 0.470  Inexact Rounded
-sqtx3398 squareroot 0.0221 -> 0.149  Inexact Rounded
-sqtx3399 squareroot 0.222 -> 0.471  Inexact Rounded
-sqtx3400 squareroot 0.0222 -> 0.149  Inexact Rounded
-sqtx3401 squareroot 0.223 -> 0.472  Inexact Rounded
-sqtx3402 squareroot 0.0223 -> 0.149  Inexact Rounded
-sqtx3403 squareroot 0.224 -> 0.473  Inexact Rounded
-sqtx3404 squareroot 0.0224 -> 0.150  Inexact Rounded
-sqtx3405 squareroot 0.225 -> 0.474  Inexact Rounded
-sqtx3406 squareroot 0.0225 -> 0.15
-sqtx3407 squareroot 0.226 -> 0.475  Inexact Rounded
-sqtx3408 squareroot 0.0226 -> 0.150  Inexact Rounded
-sqtx3409 squareroot 0.227 -> 0.476  Inexact Rounded
-sqtx3410 squareroot 0.0227 -> 0.151  Inexact Rounded
-sqtx3411 squareroot 0.228 -> 0.477  Inexact Rounded
-sqtx3412 squareroot 0.0228 -> 0.151  Inexact Rounded
-sqtx3413 squareroot 0.229 -> 0.479  Inexact Rounded
-sqtx3414 squareroot 0.0229 -> 0.151  Inexact Rounded
-sqtx3415 squareroot 0.231 -> 0.481  Inexact Rounded
-sqtx3416 squareroot 0.0231 -> 0.152  Inexact Rounded
-sqtx3417 squareroot 0.232 -> 0.482  Inexact Rounded
-sqtx3418 squareroot 0.0232 -> 0.152  Inexact Rounded
-sqtx3419 squareroot 0.233 -> 0.483  Inexact Rounded
-sqtx3420 squareroot 0.0233 -> 0.153  Inexact Rounded
-sqtx3421 squareroot 0.234 -> 0.484  Inexact Rounded
-sqtx3422 squareroot 0.0234 -> 0.153  Inexact Rounded
-sqtx3423 squareroot 0.235 -> 0.485  Inexact Rounded
-sqtx3424 squareroot 0.0235 -> 0.153  Inexact Rounded
-sqtx3425 squareroot 0.236 -> 0.486  Inexact Rounded
-sqtx3426 squareroot 0.0236 -> 0.154  Inexact Rounded
-sqtx3427 squareroot 0.237 -> 0.487  Inexact Rounded
-sqtx3428 squareroot 0.0237 -> 0.154  Inexact Rounded
-sqtx3429 squareroot 0.238 -> 0.488  Inexact Rounded
-sqtx3430 squareroot 0.0238 -> 0.154  Inexact Rounded
-sqtx3431 squareroot 0.239 -> 0.489  Inexact Rounded
-sqtx3432 squareroot 0.0239 -> 0.155  Inexact Rounded
-sqtx3433 squareroot 0.241 -> 0.491  Inexact Rounded
-sqtx3434 squareroot 0.0241 -> 0.155  Inexact Rounded
-sqtx3435 squareroot 0.242 -> 0.492  Inexact Rounded
-sqtx3436 squareroot 0.0242 -> 0.156  Inexact Rounded
-sqtx3437 squareroot 0.243 -> 0.493  Inexact Rounded
-sqtx3438 squareroot 0.0243 -> 0.156  Inexact Rounded
-sqtx3439 squareroot 0.244 -> 0.494  Inexact Rounded
-sqtx3440 squareroot 0.0244 -> 0.156  Inexact Rounded
-sqtx3441 squareroot 0.245 -> 0.495  Inexact Rounded
-sqtx3442 squareroot 0.0245 -> 0.157  Inexact Rounded
-sqtx3443 squareroot 0.246 -> 0.496  Inexact Rounded
-sqtx3444 squareroot 0.0246 -> 0.157  Inexact Rounded
-sqtx3445 squareroot 0.247 -> 0.497  Inexact Rounded
-sqtx3446 squareroot 0.0247 -> 0.157  Inexact Rounded
-sqtx3447 squareroot 0.248 -> 0.498  Inexact Rounded
-sqtx3448 squareroot 0.0248 -> 0.157  Inexact Rounded
-sqtx3449 squareroot 0.249 -> 0.499  Inexact Rounded
-sqtx3450 squareroot 0.0249 -> 0.158  Inexact Rounded
-sqtx3451 squareroot 0.251 -> 0.501  Inexact Rounded
-sqtx3452 squareroot 0.0251 -> 0.158  Inexact Rounded
-sqtx3453 squareroot 0.252 -> 0.502  Inexact Rounded
-sqtx3454 squareroot 0.0252 -> 0.159  Inexact Rounded
-sqtx3455 squareroot 0.253 -> 0.503  Inexact Rounded
-sqtx3456 squareroot 0.0253 -> 0.159  Inexact Rounded
-sqtx3457 squareroot 0.254 -> 0.504  Inexact Rounded
-sqtx3458 squareroot 0.0254 -> 0.159  Inexact Rounded
-sqtx3459 squareroot 0.255 -> 0.505  Inexact Rounded
-sqtx3460 squareroot 0.0255 -> 0.160  Inexact Rounded
-sqtx3461 squareroot 0.256 -> 0.506  Inexact Rounded
-sqtx3462 squareroot 0.0256 -> 0.16
-sqtx3463 squareroot 0.257 -> 0.507  Inexact Rounded
-sqtx3464 squareroot 0.0257 -> 0.160  Inexact Rounded
-sqtx3465 squareroot 0.258 -> 0.508  Inexact Rounded
-sqtx3466 squareroot 0.0258 -> 0.161  Inexact Rounded
-sqtx3467 squareroot 0.259 -> 0.509  Inexact Rounded
-sqtx3468 squareroot 0.0259 -> 0.161  Inexact Rounded
-sqtx3469 squareroot 0.261 -> 0.511  Inexact Rounded
-sqtx3470 squareroot 0.0261 -> 0.162  Inexact Rounded
-sqtx3471 squareroot 0.262 -> 0.512  Inexact Rounded
-sqtx3472 squareroot 0.0262 -> 0.162  Inexact Rounded
-sqtx3473 squareroot 0.263 -> 0.513  Inexact Rounded
-sqtx3474 squareroot 0.0263 -> 0.162  Inexact Rounded
-sqtx3475 squareroot 0.264 -> 0.514  Inexact Rounded
-sqtx3476 squareroot 0.0264 -> 0.162  Inexact Rounded
-sqtx3477 squareroot 0.265 -> 0.515  Inexact Rounded
-sqtx3478 squareroot 0.0265 -> 0.163  Inexact Rounded
-sqtx3479 squareroot 0.266 -> 0.516  Inexact Rounded
-sqtx3480 squareroot 0.0266 -> 0.163  Inexact Rounded
-sqtx3481 squareroot 0.267 -> 0.517  Inexact Rounded
-sqtx3482 squareroot 0.0267 -> 0.163  Inexact Rounded
-sqtx3483 squareroot 0.268 -> 0.518  Inexact Rounded
-sqtx3484 squareroot 0.0268 -> 0.164  Inexact Rounded
-sqtx3485 squareroot 0.269 -> 0.519  Inexact Rounded
-sqtx3486 squareroot 0.0269 -> 0.164  Inexact Rounded
-sqtx3487 squareroot 0.271 -> 0.521  Inexact Rounded
-sqtx3488 squareroot 0.0271 -> 0.165  Inexact Rounded
-sqtx3489 squareroot 0.272 -> 0.522  Inexact Rounded
-sqtx3490 squareroot 0.0272 -> 0.165  Inexact Rounded
-sqtx3491 squareroot 0.273 -> 0.522  Inexact Rounded
-sqtx3492 squareroot 0.0273 -> 0.165  Inexact Rounded
-sqtx3493 squareroot 0.274 -> 0.523  Inexact Rounded
-sqtx3494 squareroot 0.0274 -> 0.166  Inexact Rounded
-sqtx3495 squareroot 0.275 -> 0.524  Inexact Rounded
-sqtx3496 squareroot 0.0275 -> 0.166  Inexact Rounded
-sqtx3497 squareroot 0.276 -> 0.525  Inexact Rounded
-sqtx3498 squareroot 0.0276 -> 0.166  Inexact Rounded
-sqtx3499 squareroot 0.277 -> 0.526  Inexact Rounded
-sqtx3500 squareroot 0.0277 -> 0.166  Inexact Rounded
-sqtx3501 squareroot 0.278 -> 0.527  Inexact Rounded
-sqtx3502 squareroot 0.0278 -> 0.167  Inexact Rounded
-sqtx3503 squareroot 0.279 -> 0.528  Inexact Rounded
-sqtx3504 squareroot 0.0279 -> 0.167  Inexact Rounded
-sqtx3505 squareroot 0.281 -> 0.530  Inexact Rounded
-sqtx3506 squareroot 0.0281 -> 0.168  Inexact Rounded
-sqtx3507 squareroot 0.282 -> 0.531  Inexact Rounded
-sqtx3508 squareroot 0.0282 -> 0.168  Inexact Rounded
-sqtx3509 squareroot 0.283 -> 0.532  Inexact Rounded
-sqtx3510 squareroot 0.0283 -> 0.168  Inexact Rounded
-sqtx3511 squareroot 0.284 -> 0.533  Inexact Rounded
-sqtx3512 squareroot 0.0284 -> 0.169  Inexact Rounded
-sqtx3513 squareroot 0.285 -> 0.534  Inexact Rounded
-sqtx3514 squareroot 0.0285 -> 0.169  Inexact Rounded
-sqtx3515 squareroot 0.286 -> 0.535  Inexact Rounded
-sqtx3516 squareroot 0.0286 -> 0.169  Inexact Rounded
-sqtx3517 squareroot 0.287 -> 0.536  Inexact Rounded
-sqtx3518 squareroot 0.0287 -> 0.169  Inexact Rounded
-sqtx3519 squareroot 0.288 -> 0.537  Inexact Rounded
-sqtx3520 squareroot 0.0288 -> 0.170  Inexact Rounded
-sqtx3521 squareroot 0.289 -> 0.538  Inexact Rounded
-sqtx3522 squareroot 0.0289 -> 0.17
-sqtx3523 squareroot 0.291 -> 0.539  Inexact Rounded
-sqtx3524 squareroot 0.0291 -> 0.171  Inexact Rounded
-sqtx3525 squareroot 0.292 -> 0.540  Inexact Rounded
-sqtx3526 squareroot 0.0292 -> 0.171  Inexact Rounded
-sqtx3527 squareroot 0.293 -> 0.541  Inexact Rounded
-sqtx3528 squareroot 0.0293 -> 0.171  Inexact Rounded
-sqtx3529 squareroot 0.294 -> 0.542  Inexact Rounded
-sqtx3530 squareroot 0.0294 -> 0.171  Inexact Rounded
-sqtx3531 squareroot 0.295 -> 0.543  Inexact Rounded
-sqtx3532 squareroot 0.0295 -> 0.172  Inexact Rounded
-sqtx3533 squareroot 0.296 -> 0.544  Inexact Rounded
-sqtx3534 squareroot 0.0296 -> 0.172  Inexact Rounded
-sqtx3535 squareroot 0.297 -> 0.545  Inexact Rounded
-sqtx3536 squareroot 0.0297 -> 0.172  Inexact Rounded
-sqtx3537 squareroot 0.298 -> 0.546  Inexact Rounded
-sqtx3538 squareroot 0.0298 -> 0.173  Inexact Rounded
-sqtx3539 squareroot 0.299 -> 0.547  Inexact Rounded
-sqtx3540 squareroot 0.0299 -> 0.173  Inexact Rounded
-sqtx3541 squareroot 0.301 -> 0.549  Inexact Rounded
-sqtx3542 squareroot 0.0301 -> 0.173  Inexact Rounded
-sqtx3543 squareroot 0.302 -> 0.550  Inexact Rounded
-sqtx3544 squareroot 0.0302 -> 0.174  Inexact Rounded
-sqtx3545 squareroot 0.303 -> 0.550  Inexact Rounded
-sqtx3546 squareroot 0.0303 -> 0.174  Inexact Rounded
-sqtx3547 squareroot 0.304 -> 0.551  Inexact Rounded
-sqtx3548 squareroot 0.0304 -> 0.174  Inexact Rounded
-sqtx3549 squareroot 0.305 -> 0.552  Inexact Rounded
-sqtx3550 squareroot 0.0305 -> 0.175  Inexact Rounded
-sqtx3551 squareroot 0.306 -> 0.553  Inexact Rounded
-sqtx3552 squareroot 0.0306 -> 0.175  Inexact Rounded
-sqtx3553 squareroot 0.307 -> 0.554  Inexact Rounded
-sqtx3554 squareroot 0.0307 -> 0.175  Inexact Rounded
-sqtx3555 squareroot 0.308 -> 0.555  Inexact Rounded
-sqtx3556 squareroot 0.0308 -> 0.175  Inexact Rounded
-sqtx3557 squareroot 0.309 -> 0.556  Inexact Rounded
-sqtx3558 squareroot 0.0309 -> 0.176  Inexact Rounded
-sqtx3559 squareroot 0.311 -> 0.558  Inexact Rounded
-sqtx3560 squareroot 0.0311 -> 0.176  Inexact Rounded
-sqtx3561 squareroot 0.312 -> 0.559  Inexact Rounded
-sqtx3562 squareroot 0.0312 -> 0.177  Inexact Rounded
-sqtx3563 squareroot 0.313 -> 0.559  Inexact Rounded
-sqtx3564 squareroot 0.0313 -> 0.177  Inexact Rounded
-sqtx3565 squareroot 0.314 -> 0.560  Inexact Rounded
-sqtx3566 squareroot 0.0314 -> 0.177  Inexact Rounded
-sqtx3567 squareroot 0.315 -> 0.561  Inexact Rounded
-sqtx3568 squareroot 0.0315 -> 0.177  Inexact Rounded
-sqtx3569 squareroot 0.316 -> 0.562  Inexact Rounded
-sqtx3570 squareroot 0.0316 -> 0.178  Inexact Rounded
-sqtx3571 squareroot 0.317 -> 0.563  Inexact Rounded
-sqtx3572 squareroot 0.0317 -> 0.178  Inexact Rounded
-sqtx3573 squareroot 0.318 -> 0.564  Inexact Rounded
-sqtx3574 squareroot 0.0318 -> 0.178  Inexact Rounded
-sqtx3575 squareroot 0.319 -> 0.565  Inexact Rounded
-sqtx3576 squareroot 0.0319 -> 0.179  Inexact Rounded
-sqtx3577 squareroot 0.321 -> 0.567  Inexact Rounded
-sqtx3578 squareroot 0.0321 -> 0.179  Inexact Rounded
-sqtx3579 squareroot 0.322 -> 0.567  Inexact Rounded
-sqtx3580 squareroot 0.0322 -> 0.179  Inexact Rounded
-sqtx3581 squareroot 0.323 -> 0.568  Inexact Rounded
-sqtx3582 squareroot 0.0323 -> 0.180  Inexact Rounded
-sqtx3583 squareroot 0.324 -> 0.569  Inexact Rounded
-sqtx3584 squareroot 0.0324 -> 0.18
-sqtx3585 squareroot 0.325 -> 0.570  Inexact Rounded
-sqtx3586 squareroot 0.0325 -> 0.180  Inexact Rounded
-sqtx3587 squareroot 0.326 -> 0.571  Inexact Rounded
-sqtx3588 squareroot 0.0326 -> 0.181  Inexact Rounded
-sqtx3589 squareroot 0.327 -> 0.572  Inexact Rounded
-sqtx3590 squareroot 0.0327 -> 0.181  Inexact Rounded
-sqtx3591 squareroot 0.328 -> 0.573  Inexact Rounded
-sqtx3592 squareroot 0.0328 -> 0.181  Inexact Rounded
-sqtx3593 squareroot 0.329 -> 0.574  Inexact Rounded
-sqtx3594 squareroot 0.0329 -> 0.181  Inexact Rounded
-sqtx3595 squareroot 0.331 -> 0.575  Inexact Rounded
-sqtx3596 squareroot 0.0331 -> 0.182  Inexact Rounded
-sqtx3597 squareroot 0.332 -> 0.576  Inexact Rounded
-sqtx3598 squareroot 0.0332 -> 0.182  Inexact Rounded
-sqtx3599 squareroot 0.333 -> 0.577  Inexact Rounded
-sqtx3600 squareroot 0.0333 -> 0.182  Inexact Rounded
-sqtx3601 squareroot 0.334 -> 0.578  Inexact Rounded
-sqtx3602 squareroot 0.0334 -> 0.183  Inexact Rounded
-sqtx3603 squareroot 0.335 -> 0.579  Inexact Rounded
-sqtx3604 squareroot 0.0335 -> 0.183  Inexact Rounded
-sqtx3605 squareroot 0.336 -> 0.580  Inexact Rounded
-sqtx3606 squareroot 0.0336 -> 0.183  Inexact Rounded
-sqtx3607 squareroot 0.337 -> 0.581  Inexact Rounded
-sqtx3608 squareroot 0.0337 -> 0.184  Inexact Rounded
-sqtx3609 squareroot 0.338 -> 0.581  Inexact Rounded
-sqtx3610 squareroot 0.0338 -> 0.184  Inexact Rounded
-sqtx3611 squareroot 0.339 -> 0.582  Inexact Rounded
-sqtx3612 squareroot 0.0339 -> 0.184  Inexact Rounded
-sqtx3613 squareroot 0.341 -> 0.584  Inexact Rounded
-sqtx3614 squareroot 0.0341 -> 0.185  Inexact Rounded
-sqtx3615 squareroot 0.342 -> 0.585  Inexact Rounded
-sqtx3616 squareroot 0.0342 -> 0.185  Inexact Rounded
-sqtx3617 squareroot 0.343 -> 0.586  Inexact Rounded
-sqtx3618 squareroot 0.0343 -> 0.185  Inexact Rounded
-sqtx3619 squareroot 0.344 -> 0.587  Inexact Rounded
-sqtx3620 squareroot 0.0344 -> 0.185  Inexact Rounded
-sqtx3621 squareroot 0.345 -> 0.587  Inexact Rounded
-sqtx3622 squareroot 0.0345 -> 0.186  Inexact Rounded
-sqtx3623 squareroot 0.346 -> 0.588  Inexact Rounded
-sqtx3624 squareroot 0.0346 -> 0.186  Inexact Rounded
-sqtx3625 squareroot 0.347 -> 0.589  Inexact Rounded
-sqtx3626 squareroot 0.0347 -> 0.186  Inexact Rounded
-sqtx3627 squareroot 0.348 -> 0.590  Inexact Rounded
-sqtx3628 squareroot 0.0348 -> 0.187  Inexact Rounded
-sqtx3629 squareroot 0.349 -> 0.591  Inexact Rounded
-sqtx3630 squareroot 0.0349 -> 0.187  Inexact Rounded
-sqtx3631 squareroot 0.351 -> 0.592  Inexact Rounded
-sqtx3632 squareroot 0.0351 -> 0.187  Inexact Rounded
-sqtx3633 squareroot 0.352 -> 0.593  Inexact Rounded
-sqtx3634 squareroot 0.0352 -> 0.188  Inexact Rounded
-sqtx3635 squareroot 0.353 -> 0.594  Inexact Rounded
-sqtx3636 squareroot 0.0353 -> 0.188  Inexact Rounded
-sqtx3637 squareroot 0.354 -> 0.595  Inexact Rounded
-sqtx3638 squareroot 0.0354 -> 0.188  Inexact Rounded
-sqtx3639 squareroot 0.355 -> 0.596  Inexact Rounded
-sqtx3640 squareroot 0.0355 -> 0.188  Inexact Rounded
-sqtx3641 squareroot 0.356 -> 0.597  Inexact Rounded
-sqtx3642 squareroot 0.0356 -> 0.189  Inexact Rounded
-sqtx3643 squareroot 0.357 -> 0.597  Inexact Rounded
-sqtx3644 squareroot 0.0357 -> 0.189  Inexact Rounded
-sqtx3645 squareroot 0.358 -> 0.598  Inexact Rounded
-sqtx3646 squareroot 0.0358 -> 0.189  Inexact Rounded
-sqtx3647 squareroot 0.359 -> 0.599  Inexact Rounded
-sqtx3648 squareroot 0.0359 -> 0.189  Inexact Rounded
-sqtx3649 squareroot 0.361 -> 0.601  Inexact Rounded
-sqtx3650 squareroot 0.0361 -> 0.19
-sqtx3651 squareroot 0.362 -> 0.602  Inexact Rounded
-sqtx3652 squareroot 0.0362 -> 0.190  Inexact Rounded
-sqtx3653 squareroot 0.363 -> 0.602  Inexact Rounded
-sqtx3654 squareroot 0.0363 -> 0.191  Inexact Rounded
-sqtx3655 squareroot 0.364 -> 0.603  Inexact Rounded
-sqtx3656 squareroot 0.0364 -> 0.191  Inexact Rounded
-sqtx3657 squareroot 0.365 -> 0.604  Inexact Rounded
-sqtx3658 squareroot 0.0365 -> 0.191  Inexact Rounded
-sqtx3659 squareroot 0.366 -> 0.605  Inexact Rounded
-sqtx3660 squareroot 0.0366 -> 0.191  Inexact Rounded
-sqtx3661 squareroot 0.367 -> 0.606  Inexact Rounded
-sqtx3662 squareroot 0.0367 -> 0.192  Inexact Rounded
-sqtx3663 squareroot 0.368 -> 0.607  Inexact Rounded
-sqtx3664 squareroot 0.0368 -> 0.192  Inexact Rounded
-sqtx3665 squareroot 0.369 -> 0.607  Inexact Rounded
-sqtx3666 squareroot 0.0369 -> 0.192  Inexact Rounded
-sqtx3667 squareroot 0.371 -> 0.609  Inexact Rounded
-sqtx3668 squareroot 0.0371 -> 0.193  Inexact Rounded
-sqtx3669 squareroot 0.372 -> 0.610  Inexact Rounded
-sqtx3670 squareroot 0.0372 -> 0.193  Inexact Rounded
-sqtx3671 squareroot 0.373 -> 0.611  Inexact Rounded
-sqtx3672 squareroot 0.0373 -> 0.193  Inexact Rounded
-sqtx3673 squareroot 0.374 -> 0.612  Inexact Rounded
-sqtx3674 squareroot 0.0374 -> 0.193  Inexact Rounded
-sqtx3675 squareroot 0.375 -> 0.612  Inexact Rounded
-sqtx3676 squareroot 0.0375 -> 0.194  Inexact Rounded
-sqtx3677 squareroot 0.376 -> 0.613  Inexact Rounded
-sqtx3678 squareroot 0.0376 -> 0.194  Inexact Rounded
-sqtx3679 squareroot 0.377 -> 0.614  Inexact Rounded
-sqtx3680 squareroot 0.0377 -> 0.194  Inexact Rounded
-sqtx3681 squareroot 0.378 -> 0.615  Inexact Rounded
-sqtx3682 squareroot 0.0378 -> 0.194  Inexact Rounded
-sqtx3683 squareroot 0.379 -> 0.616  Inexact Rounded
-sqtx3684 squareroot 0.0379 -> 0.195  Inexact Rounded
-sqtx3685 squareroot 0.381 -> 0.617  Inexact Rounded
-sqtx3686 squareroot 0.0381 -> 0.195  Inexact Rounded
-sqtx3687 squareroot 0.382 -> 0.618  Inexact Rounded
-sqtx3688 squareroot 0.0382 -> 0.195  Inexact Rounded
-sqtx3689 squareroot 0.383 -> 0.619  Inexact Rounded
-sqtx3690 squareroot 0.0383 -> 0.196  Inexact Rounded
-sqtx3691 squareroot 0.384 -> 0.620  Inexact Rounded
-sqtx3692 squareroot 0.0384 -> 0.196  Inexact Rounded
-sqtx3693 squareroot 0.385 -> 0.620  Inexact Rounded
-sqtx3694 squareroot 0.0385 -> 0.196  Inexact Rounded
-sqtx3695 squareroot 0.386 -> 0.621  Inexact Rounded
-sqtx3696 squareroot 0.0386 -> 0.196  Inexact Rounded
-sqtx3697 squareroot 0.387 -> 0.622  Inexact Rounded
-sqtx3698 squareroot 0.0387 -> 0.197  Inexact Rounded
-sqtx3699 squareroot 0.388 -> 0.623  Inexact Rounded
-sqtx3700 squareroot 0.0388 -> 0.197  Inexact Rounded
-sqtx3701 squareroot 0.389 -> 0.624  Inexact Rounded
-sqtx3702 squareroot 0.0389 -> 0.197  Inexact Rounded
-sqtx3703 squareroot 0.391 -> 0.625  Inexact Rounded
-sqtx3704 squareroot 0.0391 -> 0.198  Inexact Rounded
-sqtx3705 squareroot 0.392 -> 0.626  Inexact Rounded
-sqtx3706 squareroot 0.0392 -> 0.198  Inexact Rounded
-sqtx3707 squareroot 0.393 -> 0.627  Inexact Rounded
-sqtx3708 squareroot 0.0393 -> 0.198  Inexact Rounded
-sqtx3709 squareroot 0.394 -> 0.628  Inexact Rounded
-sqtx3710 squareroot 0.0394 -> 0.198  Inexact Rounded
-sqtx3711 squareroot 0.395 -> 0.628  Inexact Rounded
-sqtx3712 squareroot 0.0395 -> 0.199  Inexact Rounded
-sqtx3713 squareroot 0.396 -> 0.629  Inexact Rounded
-sqtx3714 squareroot 0.0396 -> 0.199  Inexact Rounded
-sqtx3715 squareroot 0.397 -> 0.630  Inexact Rounded
-sqtx3716 squareroot 0.0397 -> 0.199  Inexact Rounded
-sqtx3717 squareroot 0.398 -> 0.631  Inexact Rounded
-sqtx3718 squareroot 0.0398 -> 0.199  Inexact Rounded
-sqtx3719 squareroot 0.399 -> 0.632  Inexact Rounded
-sqtx3720 squareroot 0.0399 -> 0.200  Inexact Rounded
-sqtx3721 squareroot 0.401 -> 0.633  Inexact Rounded
-sqtx3722 squareroot 0.0401 -> 0.200  Inexact Rounded
-sqtx3723 squareroot 0.402 -> 0.634  Inexact Rounded
-sqtx3724 squareroot 0.0402 -> 0.200  Inexact Rounded
-sqtx3725 squareroot 0.403 -> 0.635  Inexact Rounded
-sqtx3726 squareroot 0.0403 -> 0.201  Inexact Rounded
-sqtx3727 squareroot 0.404 -> 0.636  Inexact Rounded
-sqtx3728 squareroot 0.0404 -> 0.201  Inexact Rounded
-sqtx3729 squareroot 0.405 -> 0.636  Inexact Rounded
-sqtx3730 squareroot 0.0405 -> 0.201  Inexact Rounded
-sqtx3731 squareroot 0.406 -> 0.637  Inexact Rounded
-sqtx3732 squareroot 0.0406 -> 0.201  Inexact Rounded
-sqtx3733 squareroot 0.407 -> 0.638  Inexact Rounded
-sqtx3734 squareroot 0.0407 -> 0.202  Inexact Rounded
-sqtx3735 squareroot 0.408 -> 0.639  Inexact Rounded
-sqtx3736 squareroot 0.0408 -> 0.202  Inexact Rounded
-sqtx3737 squareroot 0.409 -> 0.640  Inexact Rounded
-sqtx3738 squareroot 0.0409 -> 0.202  Inexact Rounded
-sqtx3739 squareroot 0.411 -> 0.641  Inexact Rounded
-sqtx3740 squareroot 0.0411 -> 0.203  Inexact Rounded
-sqtx3741 squareroot 0.412 -> 0.642  Inexact Rounded
-sqtx3742 squareroot 0.0412 -> 0.203  Inexact Rounded
-sqtx3743 squareroot 0.413 -> 0.643  Inexact Rounded
-sqtx3744 squareroot 0.0413 -> 0.203  Inexact Rounded
-sqtx3745 squareroot 0.414 -> 0.643  Inexact Rounded
-sqtx3746 squareroot 0.0414 -> 0.203  Inexact Rounded
-sqtx3747 squareroot 0.415 -> 0.644  Inexact Rounded
-sqtx3748 squareroot 0.0415 -> 0.204  Inexact Rounded
-sqtx3749 squareroot 0.416 -> 0.645  Inexact Rounded
-sqtx3750 squareroot 0.0416 -> 0.204  Inexact Rounded
-sqtx3751 squareroot 0.417 -> 0.646  Inexact Rounded
-sqtx3752 squareroot 0.0417 -> 0.204  Inexact Rounded
-sqtx3753 squareroot 0.418 -> 0.647  Inexact Rounded
-sqtx3754 squareroot 0.0418 -> 0.204  Inexact Rounded
-sqtx3755 squareroot 0.419 -> 0.647  Inexact Rounded
-sqtx3756 squareroot 0.0419 -> 0.205  Inexact Rounded
-sqtx3757 squareroot 0.421 -> 0.649  Inexact Rounded
-sqtx3758 squareroot 0.0421 -> 0.205  Inexact Rounded
-sqtx3759 squareroot 0.422 -> 0.650  Inexact Rounded
-sqtx3760 squareroot 0.0422 -> 0.205  Inexact Rounded
-sqtx3761 squareroot 0.423 -> 0.650  Inexact Rounded
-sqtx3762 squareroot 0.0423 -> 0.206  Inexact Rounded
-sqtx3763 squareroot 0.424 -> 0.651  Inexact Rounded
-sqtx3764 squareroot 0.0424 -> 0.206  Inexact Rounded
-sqtx3765 squareroot 0.425 -> 0.652  Inexact Rounded
-sqtx3766 squareroot 0.0425 -> 0.206  Inexact Rounded
-sqtx3767 squareroot 0.426 -> 0.653  Inexact Rounded
-sqtx3768 squareroot 0.0426 -> 0.206  Inexact Rounded
-sqtx3769 squareroot 0.427 -> 0.653  Inexact Rounded
-sqtx3770 squareroot 0.0427 -> 0.207  Inexact Rounded
-sqtx3771 squareroot 0.428 -> 0.654  Inexact Rounded
-sqtx3772 squareroot 0.0428 -> 0.207  Inexact Rounded
-sqtx3773 squareroot 0.429 -> 0.655  Inexact Rounded
-sqtx3774 squareroot 0.0429 -> 0.207  Inexact Rounded
-sqtx3775 squareroot 0.431 -> 0.657  Inexact Rounded
-sqtx3776 squareroot 0.0431 -> 0.208  Inexact Rounded
-sqtx3777 squareroot 0.432 -> 0.657  Inexact Rounded
-sqtx3778 squareroot 0.0432 -> 0.208  Inexact Rounded
-sqtx3779 squareroot 0.433 -> 0.658  Inexact Rounded
-sqtx3780 squareroot 0.0433 -> 0.208  Inexact Rounded
-sqtx3781 squareroot 0.434 -> 0.659  Inexact Rounded
-sqtx3782 squareroot 0.0434 -> 0.208  Inexact Rounded
-sqtx3783 squareroot 0.435 -> 0.660  Inexact Rounded
-sqtx3784 squareroot 0.0435 -> 0.209  Inexact Rounded
-sqtx3785 squareroot 0.436 -> 0.660  Inexact Rounded
-sqtx3786 squareroot 0.0436 -> 0.209  Inexact Rounded
-sqtx3787 squareroot 0.437 -> 0.661  Inexact Rounded
-sqtx3788 squareroot 0.0437 -> 0.209  Inexact Rounded
-sqtx3789 squareroot 0.438 -> 0.662  Inexact Rounded
-sqtx3790 squareroot 0.0438 -> 0.209  Inexact Rounded
-sqtx3791 squareroot 0.439 -> 0.663  Inexact Rounded
-sqtx3792 squareroot 0.0439 -> 0.210  Inexact Rounded
-sqtx3793 squareroot 0.441 -> 0.664  Inexact Rounded
-sqtx3794 squareroot 0.0441 -> 0.21
-sqtx3795 squareroot 0.442 -> 0.665  Inexact Rounded
-sqtx3796 squareroot 0.0442 -> 0.210  Inexact Rounded
-sqtx3797 squareroot 0.443 -> 0.666  Inexact Rounded
-sqtx3798 squareroot 0.0443 -> 0.210  Inexact Rounded
-sqtx3799 squareroot 0.444 -> 0.666  Inexact Rounded
-sqtx3800 squareroot 0.0444 -> 0.211  Inexact Rounded
-sqtx3801 squareroot 0.445 -> 0.667  Inexact Rounded
-sqtx3802 squareroot 0.0445 -> 0.211  Inexact Rounded
-sqtx3803 squareroot 0.446 -> 0.668  Inexact Rounded
-sqtx3804 squareroot 0.0446 -> 0.211  Inexact Rounded
-sqtx3805 squareroot 0.447 -> 0.669  Inexact Rounded
-sqtx3806 squareroot 0.0447 -> 0.211  Inexact Rounded
-sqtx3807 squareroot 0.448 -> 0.669  Inexact Rounded
-sqtx3808 squareroot 0.0448 -> 0.212  Inexact Rounded
-sqtx3809 squareroot 0.449 -> 0.670  Inexact Rounded
-sqtx3810 squareroot 0.0449 -> 0.212  Inexact Rounded
-sqtx3811 squareroot 0.451 -> 0.672  Inexact Rounded
-sqtx3812 squareroot 0.0451 -> 0.212  Inexact Rounded
-sqtx3813 squareroot 0.452 -> 0.672  Inexact Rounded
-sqtx3814 squareroot 0.0452 -> 0.213  Inexact Rounded
-sqtx3815 squareroot 0.453 -> 0.673  Inexact Rounded
-sqtx3816 squareroot 0.0453 -> 0.213  Inexact Rounded
-sqtx3817 squareroot 0.454 -> 0.674  Inexact Rounded
-sqtx3818 squareroot 0.0454 -> 0.213  Inexact Rounded
-sqtx3819 squareroot 0.455 -> 0.675  Inexact Rounded
-sqtx3820 squareroot 0.0455 -> 0.213  Inexact Rounded
-sqtx3821 squareroot 0.456 -> 0.675  Inexact Rounded
-sqtx3822 squareroot 0.0456 -> 0.214  Inexact Rounded
-sqtx3823 squareroot 0.457 -> 0.676  Inexact Rounded
-sqtx3824 squareroot 0.0457 -> 0.214  Inexact Rounded
-sqtx3825 squareroot 0.458 -> 0.677  Inexact Rounded
-sqtx3826 squareroot 0.0458 -> 0.214  Inexact Rounded
-sqtx3827 squareroot 0.459 -> 0.677  Inexact Rounded
-sqtx3828 squareroot 0.0459 -> 0.214  Inexact Rounded
-sqtx3829 squareroot 0.461 -> 0.679  Inexact Rounded
-sqtx3830 squareroot 0.0461 -> 0.215  Inexact Rounded
-sqtx3831 squareroot 0.462 -> 0.680  Inexact Rounded
-sqtx3832 squareroot 0.0462 -> 0.215  Inexact Rounded
-sqtx3833 squareroot 0.463 -> 0.680  Inexact Rounded
-sqtx3834 squareroot 0.0463 -> 0.215  Inexact Rounded
-sqtx3835 squareroot 0.464 -> 0.681  Inexact Rounded
-sqtx3836 squareroot 0.0464 -> 0.215  Inexact Rounded
-sqtx3837 squareroot 0.465 -> 0.682  Inexact Rounded
-sqtx3838 squareroot 0.0465 -> 0.216  Inexact Rounded
-sqtx3839 squareroot 0.466 -> 0.683  Inexact Rounded
-sqtx3840 squareroot 0.0466 -> 0.216  Inexact Rounded
-sqtx3841 squareroot 0.467 -> 0.683  Inexact Rounded
-sqtx3842 squareroot 0.0467 -> 0.216  Inexact Rounded
-sqtx3843 squareroot 0.468 -> 0.684  Inexact Rounded
-sqtx3844 squareroot 0.0468 -> 0.216  Inexact Rounded
-sqtx3845 squareroot 0.469 -> 0.685  Inexact Rounded
-sqtx3846 squareroot 0.0469 -> 0.217  Inexact Rounded
-sqtx3847 squareroot 0.471 -> 0.686  Inexact Rounded
-sqtx3848 squareroot 0.0471 -> 0.217  Inexact Rounded
-sqtx3849 squareroot 0.472 -> 0.687  Inexact Rounded
-sqtx3850 squareroot 0.0472 -> 0.217  Inexact Rounded
-sqtx3851 squareroot 0.473 -> 0.688  Inexact Rounded
-sqtx3852 squareroot 0.0473 -> 0.217  Inexact Rounded
-sqtx3853 squareroot 0.474 -> 0.688  Inexact Rounded
-sqtx3854 squareroot 0.0474 -> 0.218  Inexact Rounded
-sqtx3855 squareroot 0.475 -> 0.689  Inexact Rounded
-sqtx3856 squareroot 0.0475 -> 0.218  Inexact Rounded
-sqtx3857 squareroot 0.476 -> 0.690  Inexact Rounded
-sqtx3858 squareroot 0.0476 -> 0.218  Inexact Rounded
-sqtx3859 squareroot 0.477 -> 0.691  Inexact Rounded
-sqtx3860 squareroot 0.0477 -> 0.218  Inexact Rounded
-sqtx3861 squareroot 0.478 -> 0.691  Inexact Rounded
-sqtx3862 squareroot 0.0478 -> 0.219  Inexact Rounded
-sqtx3863 squareroot 0.479 -> 0.692  Inexact Rounded
-sqtx3864 squareroot 0.0479 -> 0.219  Inexact Rounded
-sqtx3865 squareroot 0.481 -> 0.694  Inexact Rounded
-sqtx3866 squareroot 0.0481 -> 0.219  Inexact Rounded
-sqtx3867 squareroot 0.482 -> 0.694  Inexact Rounded
-sqtx3868 squareroot 0.0482 -> 0.220  Inexact Rounded
-sqtx3869 squareroot 0.483 -> 0.695  Inexact Rounded
-sqtx3870 squareroot 0.0483 -> 0.220  Inexact Rounded
-sqtx3871 squareroot 0.484 -> 0.696  Inexact Rounded
-sqtx3872 squareroot 0.0484 -> 0.22
-sqtx3873 squareroot 0.485 -> 0.696  Inexact Rounded
-sqtx3874 squareroot 0.0485 -> 0.220  Inexact Rounded
-sqtx3875 squareroot 0.486 -> 0.697  Inexact Rounded
-sqtx3876 squareroot 0.0486 -> 0.220  Inexact Rounded
-sqtx3877 squareroot 0.487 -> 0.698  Inexact Rounded
-sqtx3878 squareroot 0.0487 -> 0.221  Inexact Rounded
-sqtx3879 squareroot 0.488 -> 0.699  Inexact Rounded
-sqtx3880 squareroot 0.0488 -> 0.221  Inexact Rounded
-sqtx3881 squareroot 0.489 -> 0.699  Inexact Rounded
-sqtx3882 squareroot 0.0489 -> 0.221  Inexact Rounded
-sqtx3883 squareroot 0.491 -> 0.701  Inexact Rounded
-sqtx3884 squareroot 0.0491 -> 0.222  Inexact Rounded
-sqtx3885 squareroot 0.492 -> 0.701  Inexact Rounded
-sqtx3886 squareroot 0.0492 -> 0.222  Inexact Rounded
-sqtx3887 squareroot 0.493 -> 0.702  Inexact Rounded
-sqtx3888 squareroot 0.0493 -> 0.222  Inexact Rounded
-sqtx3889 squareroot 0.494 -> 0.703  Inexact Rounded
-sqtx3890 squareroot 0.0494 -> 0.222  Inexact Rounded
-sqtx3891 squareroot 0.495 -> 0.704  Inexact Rounded
-sqtx3892 squareroot 0.0495 -> 0.222  Inexact Rounded
-sqtx3893 squareroot 0.496 -> 0.704  Inexact Rounded
-sqtx3894 squareroot 0.0496 -> 0.223  Inexact Rounded
-sqtx3895 squareroot 0.497 -> 0.705  Inexact Rounded
-sqtx3896 squareroot 0.0497 -> 0.223  Inexact Rounded
-sqtx3897 squareroot 0.498 -> 0.706  Inexact Rounded
-sqtx3898 squareroot 0.0498 -> 0.223  Inexact Rounded
-sqtx3899 squareroot 0.499 -> 0.706  Inexact Rounded
-sqtx3900 squareroot 0.0499 -> 0.223  Inexact Rounded
-sqtx3901 squareroot 0.501 -> 0.708  Inexact Rounded
-sqtx3902 squareroot 0.0501 -> 0.224  Inexact Rounded
-sqtx3903 squareroot 0.502 -> 0.709  Inexact Rounded
-sqtx3904 squareroot 0.0502 -> 0.224  Inexact Rounded
-sqtx3905 squareroot 0.503 -> 0.709  Inexact Rounded
-sqtx3906 squareroot 0.0503 -> 0.224  Inexact Rounded
-sqtx3907 squareroot 0.504 -> 0.710  Inexact Rounded
-sqtx3908 squareroot 0.0504 -> 0.224  Inexact Rounded
-sqtx3909 squareroot 0.505 -> 0.711  Inexact Rounded
-sqtx3910 squareroot 0.0505 -> 0.225  Inexact Rounded
-sqtx3911 squareroot 0.506 -> 0.711  Inexact Rounded
-sqtx3912 squareroot 0.0506 -> 0.225  Inexact Rounded
-sqtx3913 squareroot 0.507 -> 0.712  Inexact Rounded
-sqtx3914 squareroot 0.0507 -> 0.225  Inexact Rounded
-sqtx3915 squareroot 0.508 -> 0.713  Inexact Rounded
-sqtx3916 squareroot 0.0508 -> 0.225  Inexact Rounded
-sqtx3917 squareroot 0.509 -> 0.713  Inexact Rounded
-sqtx3918 squareroot 0.0509 -> 0.226  Inexact Rounded
-sqtx3919 squareroot 0.511 -> 0.715  Inexact Rounded
-sqtx3920 squareroot 0.0511 -> 0.226  Inexact Rounded
-sqtx3921 squareroot 0.512 -> 0.716  Inexact Rounded
-sqtx3922 squareroot 0.0512 -> 0.226  Inexact Rounded
-sqtx3923 squareroot 0.513 -> 0.716  Inexact Rounded
-sqtx3924 squareroot 0.0513 -> 0.226  Inexact Rounded
-sqtx3925 squareroot 0.514 -> 0.717  Inexact Rounded
-sqtx3926 squareroot 0.0514 -> 0.227  Inexact Rounded
-sqtx3927 squareroot 0.515 -> 0.718  Inexact Rounded
-sqtx3928 squareroot 0.0515 -> 0.227  Inexact Rounded
-sqtx3929 squareroot 0.516 -> 0.718  Inexact Rounded
-sqtx3930 squareroot 0.0516 -> 0.227  Inexact Rounded
-sqtx3931 squareroot 0.517 -> 0.719  Inexact Rounded
-sqtx3932 squareroot 0.0517 -> 0.227  Inexact Rounded
-sqtx3933 squareroot 0.518 -> 0.720  Inexact Rounded
-sqtx3934 squareroot 0.0518 -> 0.228  Inexact Rounded
-sqtx3935 squareroot 0.519 -> 0.720  Inexact Rounded
-sqtx3936 squareroot 0.0519 -> 0.228  Inexact Rounded
-sqtx3937 squareroot 0.521 -> 0.722  Inexact Rounded
-sqtx3938 squareroot 0.0521 -> 0.228  Inexact Rounded
-sqtx3939 squareroot 0.522 -> 0.722  Inexact Rounded
-sqtx3940 squareroot 0.0522 -> 0.228  Inexact Rounded
-sqtx3941 squareroot 0.523 -> 0.723  Inexact Rounded
-sqtx3942 squareroot 0.0523 -> 0.229  Inexact Rounded
-sqtx3943 squareroot 0.524 -> 0.724  Inexact Rounded
-sqtx3944 squareroot 0.0524 -> 0.229  Inexact Rounded
-sqtx3945 squareroot 0.525 -> 0.725  Inexact Rounded
-sqtx3946 squareroot 0.0525 -> 0.229  Inexact Rounded
-sqtx3947 squareroot 0.526 -> 0.725  Inexact Rounded
-sqtx3948 squareroot 0.0526 -> 0.229  Inexact Rounded
-sqtx3949 squareroot 0.527 -> 0.726  Inexact Rounded
-sqtx3950 squareroot 0.0527 -> 0.230  Inexact Rounded
-sqtx3951 squareroot 0.528 -> 0.727  Inexact Rounded
-sqtx3952 squareroot 0.0528 -> 0.230  Inexact Rounded
-sqtx3953 squareroot 0.529 -> 0.727  Inexact Rounded
-sqtx3954 squareroot 0.0529 -> 0.23
-sqtx3955 squareroot 0.531 -> 0.729  Inexact Rounded
-sqtx3956 squareroot 0.0531 -> 0.230  Inexact Rounded
-sqtx3957 squareroot 0.532 -> 0.729  Inexact Rounded
-sqtx3958 squareroot 0.0532 -> 0.231  Inexact Rounded
-sqtx3959 squareroot 0.533 -> 0.730  Inexact Rounded
-sqtx3960 squareroot 0.0533 -> 0.231  Inexact Rounded
-sqtx3961 squareroot 0.534 -> 0.731  Inexact Rounded
-sqtx3962 squareroot 0.0534 -> 0.231  Inexact Rounded
-sqtx3963 squareroot 0.535 -> 0.731  Inexact Rounded
-sqtx3964 squareroot 0.0535 -> 0.231  Inexact Rounded
-sqtx3965 squareroot 0.536 -> 0.732  Inexact Rounded
-sqtx3966 squareroot 0.0536 -> 0.232  Inexact Rounded
-sqtx3967 squareroot 0.537 -> 0.733  Inexact Rounded
-sqtx3968 squareroot 0.0537 -> 0.232  Inexact Rounded
-sqtx3969 squareroot 0.538 -> 0.733  Inexact Rounded
-sqtx3970 squareroot 0.0538 -> 0.232  Inexact Rounded
-sqtx3971 squareroot 0.539 -> 0.734  Inexact Rounded
-sqtx3972 squareroot 0.0539 -> 0.232  Inexact Rounded
-sqtx3973 squareroot 0.541 -> 0.736  Inexact Rounded
-sqtx3974 squareroot 0.0541 -> 0.233  Inexact Rounded
-sqtx3975 squareroot 0.542 -> 0.736  Inexact Rounded
-sqtx3976 squareroot 0.0542 -> 0.233  Inexact Rounded
-sqtx3977 squareroot 0.543 -> 0.737  Inexact Rounded
-sqtx3978 squareroot 0.0543 -> 0.233  Inexact Rounded
-sqtx3979 squareroot 0.544 -> 0.738  Inexact Rounded
-sqtx3980 squareroot 0.0544 -> 0.233  Inexact Rounded
-sqtx3981 squareroot 0.545 -> 0.738  Inexact Rounded
-sqtx3982 squareroot 0.0545 -> 0.233  Inexact Rounded
-sqtx3983 squareroot 0.546 -> 0.739  Inexact Rounded
-sqtx3984 squareroot 0.0546 -> 0.234  Inexact Rounded
-sqtx3985 squareroot 0.547 -> 0.740  Inexact Rounded
-sqtx3986 squareroot 0.0547 -> 0.234  Inexact Rounded
-sqtx3987 squareroot 0.548 -> 0.740  Inexact Rounded
-sqtx3988 squareroot 0.0548 -> 0.234  Inexact Rounded
-sqtx3989 squareroot 0.549 -> 0.741  Inexact Rounded
-sqtx3990 squareroot 0.0549 -> 0.234  Inexact Rounded
-sqtx3991 squareroot 0.551 -> 0.742  Inexact Rounded
-sqtx3992 squareroot 0.0551 -> 0.235  Inexact Rounded
-sqtx3993 squareroot 0.552 -> 0.743  Inexact Rounded
-sqtx3994 squareroot 0.0552 -> 0.235  Inexact Rounded
-sqtx3995 squareroot 0.553 -> 0.744  Inexact Rounded
-sqtx3996 squareroot 0.0553 -> 0.235  Inexact Rounded
-sqtx3997 squareroot 0.554 -> 0.744  Inexact Rounded
-sqtx3998 squareroot 0.0554 -> 0.235  Inexact Rounded
-sqtx3999 squareroot 0.555 -> 0.745  Inexact Rounded
-sqtx4000 squareroot 0.0555 -> 0.236  Inexact Rounded
-sqtx4001 squareroot 0.556 -> 0.746  Inexact Rounded
-sqtx4002 squareroot 0.0556 -> 0.236  Inexact Rounded
-sqtx4003 squareroot 0.557 -> 0.746  Inexact Rounded
-sqtx4004 squareroot 0.0557 -> 0.236  Inexact Rounded
-sqtx4005 squareroot 0.558 -> 0.747  Inexact Rounded
-sqtx4006 squareroot 0.0558 -> 0.236  Inexact Rounded
-sqtx4007 squareroot 0.559 -> 0.748  Inexact Rounded
-sqtx4008 squareroot 0.0559 -> 0.236  Inexact Rounded
-sqtx4009 squareroot 0.561 -> 0.749  Inexact Rounded
-sqtx4010 squareroot 0.0561 -> 0.237  Inexact Rounded
-sqtx4011 squareroot 0.562 -> 0.750  Inexact Rounded
-sqtx4012 squareroot 0.0562 -> 0.237  Inexact Rounded
-sqtx4013 squareroot 0.563 -> 0.750  Inexact Rounded
-sqtx4014 squareroot 0.0563 -> 0.237  Inexact Rounded
-sqtx4015 squareroot 0.564 -> 0.751  Inexact Rounded
-sqtx4016 squareroot 0.0564 -> 0.237  Inexact Rounded
-sqtx4017 squareroot 0.565 -> 0.752  Inexact Rounded
-sqtx4018 squareroot 0.0565 -> 0.238  Inexact Rounded
-sqtx4019 squareroot 0.566 -> 0.752  Inexact Rounded
-sqtx4020 squareroot 0.0566 -> 0.238  Inexact Rounded
-sqtx4021 squareroot 0.567 -> 0.753  Inexact Rounded
-sqtx4022 squareroot 0.0567 -> 0.238  Inexact Rounded
-sqtx4023 squareroot 0.568 -> 0.754  Inexact Rounded
-sqtx4024 squareroot 0.0568 -> 0.238  Inexact Rounded
-sqtx4025 squareroot 0.569 -> 0.754  Inexact Rounded
-sqtx4026 squareroot 0.0569 -> 0.239  Inexact Rounded
-sqtx4027 squareroot 0.571 -> 0.756  Inexact Rounded
-sqtx4028 squareroot 0.0571 -> 0.239  Inexact Rounded
-sqtx4029 squareroot 0.572 -> 0.756  Inexact Rounded
-sqtx4030 squareroot 0.0572 -> 0.239  Inexact Rounded
-sqtx4031 squareroot 0.573 -> 0.757  Inexact Rounded
-sqtx4032 squareroot 0.0573 -> 0.239  Inexact Rounded
-sqtx4033 squareroot 0.574 -> 0.758  Inexact Rounded
-sqtx4034 squareroot 0.0574 -> 0.240  Inexact Rounded
-sqtx4035 squareroot 0.575 -> 0.758  Inexact Rounded
-sqtx4036 squareroot 0.0575 -> 0.240  Inexact Rounded
-sqtx4037 squareroot 0.576 -> 0.759  Inexact Rounded
-sqtx4038 squareroot 0.0576 -> 0.24
-sqtx4039 squareroot 0.577 -> 0.760  Inexact Rounded
-sqtx4040 squareroot 0.0577 -> 0.240  Inexact Rounded
-sqtx4041 squareroot 0.578 -> 0.760  Inexact Rounded
-sqtx4042 squareroot 0.0578 -> 0.240  Inexact Rounded
-sqtx4043 squareroot 0.579 -> 0.761  Inexact Rounded
-sqtx4044 squareroot 0.0579 -> 0.241  Inexact Rounded
-sqtx4045 squareroot 0.581 -> 0.762  Inexact Rounded
-sqtx4046 squareroot 0.0581 -> 0.241  Inexact Rounded
-sqtx4047 squareroot 0.582 -> 0.763  Inexact Rounded
-sqtx4048 squareroot 0.0582 -> 0.241  Inexact Rounded
-sqtx4049 squareroot 0.583 -> 0.764  Inexact Rounded
-sqtx4050 squareroot 0.0583 -> 0.241  Inexact Rounded
-sqtx4051 squareroot 0.584 -> 0.764  Inexact Rounded
-sqtx4052 squareroot 0.0584 -> 0.242  Inexact Rounded
-sqtx4053 squareroot 0.585 -> 0.765  Inexact Rounded
-sqtx4054 squareroot 0.0585 -> 0.242  Inexact Rounded
-sqtx4055 squareroot 0.586 -> 0.766  Inexact Rounded
-sqtx4056 squareroot 0.0586 -> 0.242  Inexact Rounded
-sqtx4057 squareroot 0.587 -> 0.766  Inexact Rounded
-sqtx4058 squareroot 0.0587 -> 0.242  Inexact Rounded
-sqtx4059 squareroot 0.588 -> 0.767  Inexact Rounded
-sqtx4060 squareroot 0.0588 -> 0.242  Inexact Rounded
-sqtx4061 squareroot 0.589 -> 0.767  Inexact Rounded
-sqtx4062 squareroot 0.0589 -> 0.243  Inexact Rounded
-sqtx4063 squareroot 0.591 -> 0.769  Inexact Rounded
-sqtx4064 squareroot 0.0591 -> 0.243  Inexact Rounded
-sqtx4065 squareroot 0.592 -> 0.769  Inexact Rounded
-sqtx4066 squareroot 0.0592 -> 0.243  Inexact Rounded
-sqtx4067 squareroot 0.593 -> 0.770  Inexact Rounded
-sqtx4068 squareroot 0.0593 -> 0.244  Inexact Rounded
-sqtx4069 squareroot 0.594 -> 0.771  Inexact Rounded
-sqtx4070 squareroot 0.0594 -> 0.244  Inexact Rounded
-sqtx4071 squareroot 0.595 -> 0.771  Inexact Rounded
-sqtx4072 squareroot 0.0595 -> 0.244  Inexact Rounded
-sqtx4073 squareroot 0.596 -> 0.772  Inexact Rounded
-sqtx4074 squareroot 0.0596 -> 0.244  Inexact Rounded
-sqtx4075 squareroot 0.597 -> 0.773  Inexact Rounded
-sqtx4076 squareroot 0.0597 -> 0.244  Inexact Rounded
-sqtx4077 squareroot 0.598 -> 0.773  Inexact Rounded
-sqtx4078 squareroot 0.0598 -> 0.245  Inexact Rounded
-sqtx4079 squareroot 0.599 -> 0.774  Inexact Rounded
-sqtx4080 squareroot 0.0599 -> 0.245  Inexact Rounded
-sqtx4081 squareroot 0.601 -> 0.775  Inexact Rounded
-sqtx4082 squareroot 0.0601 -> 0.245  Inexact Rounded
-sqtx4083 squareroot 0.602 -> 0.776  Inexact Rounded
-sqtx4084 squareroot 0.0602 -> 0.245  Inexact Rounded
-sqtx4085 squareroot 0.603 -> 0.777  Inexact Rounded
-sqtx4086 squareroot 0.0603 -> 0.246  Inexact Rounded
-sqtx4087 squareroot 0.604 -> 0.777  Inexact Rounded
-sqtx4088 squareroot 0.0604 -> 0.246  Inexact Rounded
-sqtx4089 squareroot 0.605 -> 0.778  Inexact Rounded
-sqtx4090 squareroot 0.0605 -> 0.246  Inexact Rounded
-sqtx4091 squareroot 0.606 -> 0.778  Inexact Rounded
-sqtx4092 squareroot 0.0606 -> 0.246  Inexact Rounded
-sqtx4093 squareroot 0.607 -> 0.779  Inexact Rounded
-sqtx4094 squareroot 0.0607 -> 0.246  Inexact Rounded
-sqtx4095 squareroot 0.608 -> 0.780  Inexact Rounded
-sqtx4096 squareroot 0.0608 -> 0.247  Inexact Rounded
-sqtx4097 squareroot 0.609 -> 0.780  Inexact Rounded
-sqtx4098 squareroot 0.0609 -> 0.247  Inexact Rounded
-sqtx4099 squareroot 0.611 -> 0.782  Inexact Rounded
-sqtx4100 squareroot 0.0611 -> 0.247  Inexact Rounded
-sqtx4101 squareroot 0.612 -> 0.782  Inexact Rounded
-sqtx4102 squareroot 0.0612 -> 0.247  Inexact Rounded
-sqtx4103 squareroot 0.613 -> 0.783  Inexact Rounded
-sqtx4104 squareroot 0.0613 -> 0.248  Inexact Rounded
-sqtx4105 squareroot 0.614 -> 0.784  Inexact Rounded
-sqtx4106 squareroot 0.0614 -> 0.248  Inexact Rounded
-sqtx4107 squareroot 0.615 -> 0.784  Inexact Rounded
-sqtx4108 squareroot 0.0615 -> 0.248  Inexact Rounded
-sqtx4109 squareroot 0.616 -> 0.785  Inexact Rounded
-sqtx4110 squareroot 0.0616 -> 0.248  Inexact Rounded
-sqtx4111 squareroot 0.617 -> 0.785  Inexact Rounded
-sqtx4112 squareroot 0.0617 -> 0.248  Inexact Rounded
-sqtx4113 squareroot 0.618 -> 0.786  Inexact Rounded
-sqtx4114 squareroot 0.0618 -> 0.249  Inexact Rounded
-sqtx4115 squareroot 0.619 -> 0.787  Inexact Rounded
-sqtx4116 squareroot 0.0619 -> 0.249  Inexact Rounded
-sqtx4117 squareroot 0.621 -> 0.788  Inexact Rounded
-sqtx4118 squareroot 0.0621 -> 0.249  Inexact Rounded
-sqtx4119 squareroot 0.622 -> 0.789  Inexact Rounded
-sqtx4120 squareroot 0.0622 -> 0.249  Inexact Rounded
-sqtx4121 squareroot 0.623 -> 0.789  Inexact Rounded
-sqtx4122 squareroot 0.0623 -> 0.250  Inexact Rounded
-sqtx4123 squareroot 0.624 -> 0.790  Inexact Rounded
-sqtx4124 squareroot 0.0624 -> 0.250  Inexact Rounded
-sqtx4125 squareroot 0.625 -> 0.791  Inexact Rounded
-sqtx4126 squareroot 0.0625 -> 0.25
-sqtx4127 squareroot 0.626 -> 0.791  Inexact Rounded
-sqtx4128 squareroot 0.0626 -> 0.250  Inexact Rounded
-sqtx4129 squareroot 0.627 -> 0.792  Inexact Rounded
-sqtx4130 squareroot 0.0627 -> 0.250  Inexact Rounded
-sqtx4131 squareroot 0.628 -> 0.792  Inexact Rounded
-sqtx4132 squareroot 0.0628 -> 0.251  Inexact Rounded
-sqtx4133 squareroot 0.629 -> 0.793  Inexact Rounded
-sqtx4134 squareroot 0.0629 -> 0.251  Inexact Rounded
-sqtx4135 squareroot 0.631 -> 0.794  Inexact Rounded
-sqtx4136 squareroot 0.0631 -> 0.251  Inexact Rounded
-sqtx4137 squareroot 0.632 -> 0.795  Inexact Rounded
-sqtx4138 squareroot 0.0632 -> 0.251  Inexact Rounded
-sqtx4139 squareroot 0.633 -> 0.796  Inexact Rounded
-sqtx4140 squareroot 0.0633 -> 0.252  Inexact Rounded
-sqtx4141 squareroot 0.634 -> 0.796  Inexact Rounded
-sqtx4142 squareroot 0.0634 -> 0.252  Inexact Rounded
-sqtx4143 squareroot 0.635 -> 0.797  Inexact Rounded
-sqtx4144 squareroot 0.0635 -> 0.252  Inexact Rounded
-sqtx4145 squareroot 0.636 -> 0.797  Inexact Rounded
-sqtx4146 squareroot 0.0636 -> 0.252  Inexact Rounded
-sqtx4147 squareroot 0.637 -> 0.798  Inexact Rounded
-sqtx4148 squareroot 0.0637 -> 0.252  Inexact Rounded
-sqtx4149 squareroot 0.638 -> 0.799  Inexact Rounded
-sqtx4150 squareroot 0.0638 -> 0.253  Inexact Rounded
-sqtx4151 squareroot 0.639 -> 0.799  Inexact Rounded
-sqtx4152 squareroot 0.0639 -> 0.253  Inexact Rounded
-sqtx4153 squareroot 0.641 -> 0.801  Inexact Rounded
-sqtx4154 squareroot 0.0641 -> 0.253  Inexact Rounded
-sqtx4155 squareroot 0.642 -> 0.801  Inexact Rounded
-sqtx4156 squareroot 0.0642 -> 0.253  Inexact Rounded
-sqtx4157 squareroot 0.643 -> 0.802  Inexact Rounded
-sqtx4158 squareroot 0.0643 -> 0.254  Inexact Rounded
-sqtx4159 squareroot 0.644 -> 0.802  Inexact Rounded
-sqtx4160 squareroot 0.0644 -> 0.254  Inexact Rounded
-sqtx4161 squareroot 0.645 -> 0.803  Inexact Rounded
-sqtx4162 squareroot 0.0645 -> 0.254  Inexact Rounded
-sqtx4163 squareroot 0.646 -> 0.804  Inexact Rounded
-sqtx4164 squareroot 0.0646 -> 0.254  Inexact Rounded
-sqtx4165 squareroot 0.647 -> 0.804  Inexact Rounded
-sqtx4166 squareroot 0.0647 -> 0.254  Inexact Rounded
-sqtx4167 squareroot 0.648 -> 0.805  Inexact Rounded
-sqtx4168 squareroot 0.0648 -> 0.255  Inexact Rounded
-sqtx4169 squareroot 0.649 -> 0.806  Inexact Rounded
-sqtx4170 squareroot 0.0649 -> 0.255  Inexact Rounded
-sqtx4171 squareroot 0.651 -> 0.807  Inexact Rounded
-sqtx4172 squareroot 0.0651 -> 0.255  Inexact Rounded
-sqtx4173 squareroot 0.652 -> 0.807  Inexact Rounded
-sqtx4174 squareroot 0.0652 -> 0.255  Inexact Rounded
-sqtx4175 squareroot 0.653 -> 0.808  Inexact Rounded
-sqtx4176 squareroot 0.0653 -> 0.256  Inexact Rounded
-sqtx4177 squareroot 0.654 -> 0.809  Inexact Rounded
-sqtx4178 squareroot 0.0654 -> 0.256  Inexact Rounded
-sqtx4179 squareroot 0.655 -> 0.809  Inexact Rounded
-sqtx4180 squareroot 0.0655 -> 0.256  Inexact Rounded
-sqtx4181 squareroot 0.656 -> 0.810  Inexact Rounded
-sqtx4182 squareroot 0.0656 -> 0.256  Inexact Rounded
-sqtx4183 squareroot 0.657 -> 0.811  Inexact Rounded
-sqtx4184 squareroot 0.0657 -> 0.256  Inexact Rounded
-sqtx4185 squareroot 0.658 -> 0.811  Inexact Rounded
-sqtx4186 squareroot 0.0658 -> 0.257  Inexact Rounded
-sqtx4187 squareroot 0.659 -> 0.812  Inexact Rounded
-sqtx4188 squareroot 0.0659 -> 0.257  Inexact Rounded
-sqtx4189 squareroot 0.661 -> 0.813  Inexact Rounded
-sqtx4190 squareroot 0.0661 -> 0.257  Inexact Rounded
-sqtx4191 squareroot 0.662 -> 0.814  Inexact Rounded
-sqtx4192 squareroot 0.0662 -> 0.257  Inexact Rounded
-sqtx4193 squareroot 0.663 -> 0.814  Inexact Rounded
-sqtx4194 squareroot 0.0663 -> 0.257  Inexact Rounded
-sqtx4195 squareroot 0.664 -> 0.815  Inexact Rounded
-sqtx4196 squareroot 0.0664 -> 0.258  Inexact Rounded
-sqtx4197 squareroot 0.665 -> 0.815  Inexact Rounded
-sqtx4198 squareroot 0.0665 -> 0.258  Inexact Rounded
-sqtx4199 squareroot 0.666 -> 0.816  Inexact Rounded
-sqtx4200 squareroot 0.0666 -> 0.258  Inexact Rounded
-sqtx4201 squareroot 0.667 -> 0.817  Inexact Rounded
-sqtx4202 squareroot 0.0667 -> 0.258  Inexact Rounded
-sqtx4203 squareroot 0.668 -> 0.817  Inexact Rounded
-sqtx4204 squareroot 0.0668 -> 0.258  Inexact Rounded
-sqtx4205 squareroot 0.669 -> 0.818  Inexact Rounded
-sqtx4206 squareroot 0.0669 -> 0.259  Inexact Rounded
-sqtx4207 squareroot 0.671 -> 0.819  Inexact Rounded
-sqtx4208 squareroot 0.0671 -> 0.259  Inexact Rounded
-sqtx4209 squareroot 0.672 -> 0.820  Inexact Rounded
-sqtx4210 squareroot 0.0672 -> 0.259  Inexact Rounded
-sqtx4211 squareroot 0.673 -> 0.820  Inexact Rounded
-sqtx4212 squareroot 0.0673 -> 0.259  Inexact Rounded
-sqtx4213 squareroot 0.674 -> 0.821  Inexact Rounded
-sqtx4214 squareroot 0.0674 -> 0.260  Inexact Rounded
-sqtx4215 squareroot 0.675 -> 0.822  Inexact Rounded
-sqtx4216 squareroot 0.0675 -> 0.260  Inexact Rounded
-sqtx4217 squareroot 0.676 -> 0.822  Inexact Rounded
-sqtx4218 squareroot 0.0676 -> 0.26
-sqtx4219 squareroot 0.677 -> 0.823  Inexact Rounded
-sqtx4220 squareroot 0.0677 -> 0.260  Inexact Rounded
-sqtx4221 squareroot 0.678 -> 0.823  Inexact Rounded
-sqtx4222 squareroot 0.0678 -> 0.260  Inexact Rounded
-sqtx4223 squareroot 0.679 -> 0.824  Inexact Rounded
-sqtx4224 squareroot 0.0679 -> 0.261  Inexact Rounded
-sqtx4225 squareroot 0.681 -> 0.825  Inexact Rounded
-sqtx4226 squareroot 0.0681 -> 0.261  Inexact Rounded
-sqtx4227 squareroot 0.682 -> 0.826  Inexact Rounded
-sqtx4228 squareroot 0.0682 -> 0.261  Inexact Rounded
-sqtx4229 squareroot 0.683 -> 0.826  Inexact Rounded
-sqtx4230 squareroot 0.0683 -> 0.261  Inexact Rounded
-sqtx4231 squareroot 0.684 -> 0.827  Inexact Rounded
-sqtx4232 squareroot 0.0684 -> 0.262  Inexact Rounded
-sqtx4233 squareroot 0.685 -> 0.828  Inexact Rounded
-sqtx4234 squareroot 0.0685 -> 0.262  Inexact Rounded
-sqtx4235 squareroot 0.686 -> 0.828  Inexact Rounded
-sqtx4236 squareroot 0.0686 -> 0.262  Inexact Rounded
-sqtx4237 squareroot 0.687 -> 0.829  Inexact Rounded
-sqtx4238 squareroot 0.0687 -> 0.262  Inexact Rounded
-sqtx4239 squareroot 0.688 -> 0.829  Inexact Rounded
-sqtx4240 squareroot 0.0688 -> 0.262  Inexact Rounded
-sqtx4241 squareroot 0.689 -> 0.830  Inexact Rounded
-sqtx4242 squareroot 0.0689 -> 0.262  Inexact Rounded
-sqtx4243 squareroot 0.691 -> 0.831  Inexact Rounded
-sqtx4244 squareroot 0.0691 -> 0.263  Inexact Rounded
-sqtx4245 squareroot 0.692 -> 0.832  Inexact Rounded
-sqtx4246 squareroot 0.0692 -> 0.263  Inexact Rounded
-sqtx4247 squareroot 0.693 -> 0.832  Inexact Rounded
-sqtx4248 squareroot 0.0693 -> 0.263  Inexact Rounded
-sqtx4249 squareroot 0.694 -> 0.833  Inexact Rounded
-sqtx4250 squareroot 0.0694 -> 0.263  Inexact Rounded
-sqtx4251 squareroot 0.695 -> 0.834  Inexact Rounded
-sqtx4252 squareroot 0.0695 -> 0.264  Inexact Rounded
-sqtx4253 squareroot 0.696 -> 0.834  Inexact Rounded
-sqtx4254 squareroot 0.0696 -> 0.264  Inexact Rounded
-sqtx4255 squareroot 0.697 -> 0.835  Inexact Rounded
-sqtx4256 squareroot 0.0697 -> 0.264  Inexact Rounded
-sqtx4257 squareroot 0.698 -> 0.835  Inexact Rounded
-sqtx4258 squareroot 0.0698 -> 0.264  Inexact Rounded
-sqtx4259 squareroot 0.699 -> 0.836  Inexact Rounded
-sqtx4260 squareroot 0.0699 -> 0.264  Inexact Rounded
-sqtx4261 squareroot 0.701 -> 0.837  Inexact Rounded
-sqtx4262 squareroot 0.0701 -> 0.265  Inexact Rounded
-sqtx4263 squareroot 0.702 -> 0.838  Inexact Rounded
-sqtx4264 squareroot 0.0702 -> 0.265  Inexact Rounded
-sqtx4265 squareroot 0.703 -> 0.838  Inexact Rounded
-sqtx4266 squareroot 0.0703 -> 0.265  Inexact Rounded
-sqtx4267 squareroot 0.704 -> 0.839  Inexact Rounded
-sqtx4268 squareroot 0.0704 -> 0.265  Inexact Rounded
-sqtx4269 squareroot 0.705 -> 0.840  Inexact Rounded
-sqtx4270 squareroot 0.0705 -> 0.266  Inexact Rounded
-sqtx4271 squareroot 0.706 -> 0.840  Inexact Rounded
-sqtx4272 squareroot 0.0706 -> 0.266  Inexact Rounded
-sqtx4273 squareroot 0.707 -> 0.841  Inexact Rounded
-sqtx4274 squareroot 0.0707 -> 0.266  Inexact Rounded
-sqtx4275 squareroot 0.708 -> 0.841  Inexact Rounded
-sqtx4276 squareroot 0.0708 -> 0.266  Inexact Rounded
-sqtx4277 squareroot 0.709 -> 0.842  Inexact Rounded
-sqtx4278 squareroot 0.0709 -> 0.266  Inexact Rounded
-sqtx4279 squareroot 0.711 -> 0.843  Inexact Rounded
-sqtx4280 squareroot 0.0711 -> 0.267  Inexact Rounded
-sqtx4281 squareroot 0.712 -> 0.844  Inexact Rounded
-sqtx4282 squareroot 0.0712 -> 0.267  Inexact Rounded
-sqtx4283 squareroot 0.713 -> 0.844  Inexact Rounded
-sqtx4284 squareroot 0.0713 -> 0.267  Inexact Rounded
-sqtx4285 squareroot 0.714 -> 0.845  Inexact Rounded
-sqtx4286 squareroot 0.0714 -> 0.267  Inexact Rounded
-sqtx4287 squareroot 0.715 -> 0.846  Inexact Rounded
-sqtx4288 squareroot 0.0715 -> 0.267  Inexact Rounded
-sqtx4289 squareroot 0.716 -> 0.846  Inexact Rounded
-sqtx4290 squareroot 0.0716 -> 0.268  Inexact Rounded
-sqtx4291 squareroot 0.717 -> 0.847  Inexact Rounded
-sqtx4292 squareroot 0.0717 -> 0.268  Inexact Rounded
-sqtx4293 squareroot 0.718 -> 0.847  Inexact Rounded
-sqtx4294 squareroot 0.0718 -> 0.268  Inexact Rounded
-sqtx4295 squareroot 0.719 -> 0.848  Inexact Rounded
-sqtx4296 squareroot 0.0719 -> 0.268  Inexact Rounded
-sqtx4297 squareroot 0.721 -> 0.849  Inexact Rounded
-sqtx4298 squareroot 0.0721 -> 0.269  Inexact Rounded
-sqtx4299 squareroot 0.722 -> 0.850  Inexact Rounded
-sqtx4300 squareroot 0.0722 -> 0.269  Inexact Rounded
-sqtx4301 squareroot 0.723 -> 0.850  Inexact Rounded
-sqtx4302 squareroot 0.0723 -> 0.269  Inexact Rounded
-sqtx4303 squareroot 0.724 -> 0.851  Inexact Rounded
-sqtx4304 squareroot 0.0724 -> 0.269  Inexact Rounded
-sqtx4305 squareroot 0.725 -> 0.851  Inexact Rounded
-sqtx4306 squareroot 0.0725 -> 0.269  Inexact Rounded
-sqtx4307 squareroot 0.726 -> 0.852  Inexact Rounded
-sqtx4308 squareroot 0.0726 -> 0.269  Inexact Rounded
-sqtx4309 squareroot 0.727 -> 0.853  Inexact Rounded
-sqtx4310 squareroot 0.0727 -> 0.270  Inexact Rounded
-sqtx4311 squareroot 0.728 -> 0.853  Inexact Rounded
-sqtx4312 squareroot 0.0728 -> 0.270  Inexact Rounded
-sqtx4313 squareroot 0.729 -> 0.854  Inexact Rounded
-sqtx4314 squareroot 0.0729 -> 0.27
-sqtx4315 squareroot 0.731 -> 0.855  Inexact Rounded
-sqtx4316 squareroot 0.0731 -> 0.270  Inexact Rounded
-sqtx4317 squareroot 0.732 -> 0.856  Inexact Rounded
-sqtx4318 squareroot 0.0732 -> 0.271  Inexact Rounded
-sqtx4319 squareroot 0.733 -> 0.856  Inexact Rounded
-sqtx4320 squareroot 0.0733 -> 0.271  Inexact Rounded
-sqtx4321 squareroot 0.734 -> 0.857  Inexact Rounded
-sqtx4322 squareroot 0.0734 -> 0.271  Inexact Rounded
-sqtx4323 squareroot 0.735 -> 0.857  Inexact Rounded
-sqtx4324 squareroot 0.0735 -> 0.271  Inexact Rounded
-sqtx4325 squareroot 0.736 -> 0.858  Inexact Rounded
-sqtx4326 squareroot 0.0736 -> 0.271  Inexact Rounded
-sqtx4327 squareroot 0.737 -> 0.858  Inexact Rounded
-sqtx4328 squareroot 0.0737 -> 0.271  Inexact Rounded
-sqtx4329 squareroot 0.738 -> 0.859  Inexact Rounded
-sqtx4330 squareroot 0.0738 -> 0.272  Inexact Rounded
-sqtx4331 squareroot 0.739 -> 0.860  Inexact Rounded
-sqtx4332 squareroot 0.0739 -> 0.272  Inexact Rounded
-sqtx4333 squareroot 0.741 -> 0.861  Inexact Rounded
-sqtx4334 squareroot 0.0741 -> 0.272  Inexact Rounded
-sqtx4335 squareroot 0.742 -> 0.861  Inexact Rounded
-sqtx4336 squareroot 0.0742 -> 0.272  Inexact Rounded
-sqtx4337 squareroot 0.743 -> 0.862  Inexact Rounded
-sqtx4338 squareroot 0.0743 -> 0.273  Inexact Rounded
-sqtx4339 squareroot 0.744 -> 0.863  Inexact Rounded
-sqtx4340 squareroot 0.0744 -> 0.273  Inexact Rounded
-sqtx4341 squareroot 0.745 -> 0.863  Inexact Rounded
-sqtx4342 squareroot 0.0745 -> 0.273  Inexact Rounded
-sqtx4343 squareroot 0.746 -> 0.864  Inexact Rounded
-sqtx4344 squareroot 0.0746 -> 0.273  Inexact Rounded
-sqtx4345 squareroot 0.747 -> 0.864  Inexact Rounded
-sqtx4346 squareroot 0.0747 -> 0.273  Inexact Rounded
-sqtx4347 squareroot 0.748 -> 0.865  Inexact Rounded
-sqtx4348 squareroot 0.0748 -> 0.273  Inexact Rounded
-sqtx4349 squareroot 0.749 -> 0.865  Inexact Rounded
-sqtx4350 squareroot 0.0749 -> 0.274  Inexact Rounded
-sqtx4351 squareroot 0.751 -> 0.867  Inexact Rounded
-sqtx4352 squareroot 0.0751 -> 0.274  Inexact Rounded
-sqtx4353 squareroot 0.752 -> 0.867  Inexact Rounded
-sqtx4354 squareroot 0.0752 -> 0.274  Inexact Rounded
-sqtx4355 squareroot 0.753 -> 0.868  Inexact Rounded
-sqtx4356 squareroot 0.0753 -> 0.274  Inexact Rounded
-sqtx4357 squareroot 0.754 -> 0.868  Inexact Rounded
-sqtx4358 squareroot 0.0754 -> 0.275  Inexact Rounded
-sqtx4359 squareroot 0.755 -> 0.869  Inexact Rounded
-sqtx4360 squareroot 0.0755 -> 0.275  Inexact Rounded
-sqtx4361 squareroot 0.756 -> 0.869  Inexact Rounded
-sqtx4362 squareroot 0.0756 -> 0.275  Inexact Rounded
-sqtx4363 squareroot 0.757 -> 0.870  Inexact Rounded
-sqtx4364 squareroot 0.0757 -> 0.275  Inexact Rounded
-sqtx4365 squareroot 0.758 -> 0.871  Inexact Rounded
-sqtx4366 squareroot 0.0758 -> 0.275  Inexact Rounded
-sqtx4367 squareroot 0.759 -> 0.871  Inexact Rounded
-sqtx4368 squareroot 0.0759 -> 0.275  Inexact Rounded
-sqtx4369 squareroot 0.761 -> 0.872  Inexact Rounded
-sqtx4370 squareroot 0.0761 -> 0.276  Inexact Rounded
-sqtx4371 squareroot 0.762 -> 0.873  Inexact Rounded
-sqtx4372 squareroot 0.0762 -> 0.276  Inexact Rounded
-sqtx4373 squareroot 0.763 -> 0.873  Inexact Rounded
-sqtx4374 squareroot 0.0763 -> 0.276  Inexact Rounded
-sqtx4375 squareroot 0.764 -> 0.874  Inexact Rounded
-sqtx4376 squareroot 0.0764 -> 0.276  Inexact Rounded
-sqtx4377 squareroot 0.765 -> 0.875  Inexact Rounded
-sqtx4378 squareroot 0.0765 -> 0.277  Inexact Rounded
-sqtx4379 squareroot 0.766 -> 0.875  Inexact Rounded
-sqtx4380 squareroot 0.0766 -> 0.277  Inexact Rounded
-sqtx4381 squareroot 0.767 -> 0.876  Inexact Rounded
-sqtx4382 squareroot 0.0767 -> 0.277  Inexact Rounded
-sqtx4383 squareroot 0.768 -> 0.876  Inexact Rounded
-sqtx4384 squareroot 0.0768 -> 0.277  Inexact Rounded
-sqtx4385 squareroot 0.769 -> 0.877  Inexact Rounded
-sqtx4386 squareroot 0.0769 -> 0.277  Inexact Rounded
-sqtx4387 squareroot 0.771 -> 0.878  Inexact Rounded
-sqtx4388 squareroot 0.0771 -> 0.278  Inexact Rounded
-sqtx4389 squareroot 0.772 -> 0.879  Inexact Rounded
-sqtx4390 squareroot 0.0772 -> 0.278  Inexact Rounded
-sqtx4391 squareroot 0.773 -> 0.879  Inexact Rounded
-sqtx4392 squareroot 0.0773 -> 0.278  Inexact Rounded
-sqtx4393 squareroot 0.774 -> 0.880  Inexact Rounded
-sqtx4394 squareroot 0.0774 -> 0.278  Inexact Rounded
-sqtx4395 squareroot 0.775 -> 0.880  Inexact Rounded
-sqtx4396 squareroot 0.0775 -> 0.278  Inexact Rounded
-sqtx4397 squareroot 0.776 -> 0.881  Inexact Rounded
-sqtx4398 squareroot 0.0776 -> 0.279  Inexact Rounded
-sqtx4399 squareroot 0.777 -> 0.881  Inexact Rounded
-sqtx4400 squareroot 0.0777 -> 0.279  Inexact Rounded
-sqtx4401 squareroot 0.778 -> 0.882  Inexact Rounded
-sqtx4402 squareroot 0.0778 -> 0.279  Inexact Rounded
-sqtx4403 squareroot 0.779 -> 0.883  Inexact Rounded
-sqtx4404 squareroot 0.0779 -> 0.279  Inexact Rounded
-sqtx4405 squareroot 0.781 -> 0.884  Inexact Rounded
-sqtx4406 squareroot 0.0781 -> 0.279  Inexact Rounded
-sqtx4407 squareroot 0.782 -> 0.884  Inexact Rounded
-sqtx4408 squareroot 0.0782 -> 0.280  Inexact Rounded
-sqtx4409 squareroot 0.783 -> 0.885  Inexact Rounded
-sqtx4410 squareroot 0.0783 -> 0.280  Inexact Rounded
-sqtx4411 squareroot 0.784 -> 0.885  Inexact Rounded
-sqtx4412 squareroot 0.0784 -> 0.28
-sqtx4413 squareroot 0.785 -> 0.886  Inexact Rounded
-sqtx4414 squareroot 0.0785 -> 0.280  Inexact Rounded
-sqtx4415 squareroot 0.786 -> 0.887  Inexact Rounded
-sqtx4416 squareroot 0.0786 -> 0.280  Inexact Rounded
-sqtx4417 squareroot 0.787 -> 0.887  Inexact Rounded
-sqtx4418 squareroot 0.0787 -> 0.281  Inexact Rounded
-sqtx4419 squareroot 0.788 -> 0.888  Inexact Rounded
-sqtx4420 squareroot 0.0788 -> 0.281  Inexact Rounded
-sqtx4421 squareroot 0.789 -> 0.888  Inexact Rounded
-sqtx4422 squareroot 0.0789 -> 0.281  Inexact Rounded
-sqtx4423 squareroot 0.791 -> 0.889  Inexact Rounded
-sqtx4424 squareroot 0.0791 -> 0.281  Inexact Rounded
-sqtx4425 squareroot 0.792 -> 0.890  Inexact Rounded
-sqtx4426 squareroot 0.0792 -> 0.281  Inexact Rounded
-sqtx4427 squareroot 0.793 -> 0.891  Inexact Rounded
-sqtx4428 squareroot 0.0793 -> 0.282  Inexact Rounded
-sqtx4429 squareroot 0.794 -> 0.891  Inexact Rounded
-sqtx4430 squareroot 0.0794 -> 0.282  Inexact Rounded
-sqtx4431 squareroot 0.795 -> 0.892  Inexact Rounded
-sqtx4432 squareroot 0.0795 -> 0.282  Inexact Rounded
-sqtx4433 squareroot 0.796 -> 0.892  Inexact Rounded
-sqtx4434 squareroot 0.0796 -> 0.282  Inexact Rounded
-sqtx4435 squareroot 0.797 -> 0.893  Inexact Rounded
-sqtx4436 squareroot 0.0797 -> 0.282  Inexact Rounded
-sqtx4437 squareroot 0.798 -> 0.893  Inexact Rounded
-sqtx4438 squareroot 0.0798 -> 0.282  Inexact Rounded
-sqtx4439 squareroot 0.799 -> 0.894  Inexact Rounded
-sqtx4440 squareroot 0.0799 -> 0.283  Inexact Rounded
-sqtx4441 squareroot 0.801 -> 0.895  Inexact Rounded
-sqtx4442 squareroot 0.0801 -> 0.283  Inexact Rounded
-sqtx4443 squareroot 0.802 -> 0.896  Inexact Rounded
-sqtx4444 squareroot 0.0802 -> 0.283  Inexact Rounded
-sqtx4445 squareroot 0.803 -> 0.896  Inexact Rounded
-sqtx4446 squareroot 0.0803 -> 0.283  Inexact Rounded
-sqtx4447 squareroot 0.804 -> 0.897  Inexact Rounded
-sqtx4448 squareroot 0.0804 -> 0.284  Inexact Rounded
-sqtx4449 squareroot 0.805 -> 0.897  Inexact Rounded
-sqtx4450 squareroot 0.0805 -> 0.284  Inexact Rounded
-sqtx4451 squareroot 0.806 -> 0.898  Inexact Rounded
-sqtx4452 squareroot 0.0806 -> 0.284  Inexact Rounded
-sqtx4453 squareroot 0.807 -> 0.898  Inexact Rounded
-sqtx4454 squareroot 0.0807 -> 0.284  Inexact Rounded
-sqtx4455 squareroot 0.808 -> 0.899  Inexact Rounded
-sqtx4456 squareroot 0.0808 -> 0.284  Inexact Rounded
-sqtx4457 squareroot 0.809 -> 0.899  Inexact Rounded
-sqtx4458 squareroot 0.0809 -> 0.284  Inexact Rounded
-sqtx4459 squareroot 0.811 -> 0.901  Inexact Rounded
-sqtx4460 squareroot 0.0811 -> 0.285  Inexact Rounded
-sqtx4461 squareroot 0.812 -> 0.901  Inexact Rounded
-sqtx4462 squareroot 0.0812 -> 0.285  Inexact Rounded
-sqtx4463 squareroot 0.813 -> 0.902  Inexact Rounded
-sqtx4464 squareroot 0.0813 -> 0.285  Inexact Rounded
-sqtx4465 squareroot 0.814 -> 0.902  Inexact Rounded
-sqtx4466 squareroot 0.0814 -> 0.285  Inexact Rounded
-sqtx4467 squareroot 0.815 -> 0.903  Inexact Rounded
-sqtx4468 squareroot 0.0815 -> 0.285  Inexact Rounded
-sqtx4469 squareroot 0.816 -> 0.903  Inexact Rounded
-sqtx4470 squareroot 0.0816 -> 0.286  Inexact Rounded
-sqtx4471 squareroot 0.817 -> 0.904  Inexact Rounded
-sqtx4472 squareroot 0.0817 -> 0.286  Inexact Rounded
-sqtx4473 squareroot 0.818 -> 0.904  Inexact Rounded
-sqtx4474 squareroot 0.0818 -> 0.286  Inexact Rounded
-sqtx4475 squareroot 0.819 -> 0.905  Inexact Rounded
-sqtx4476 squareroot 0.0819 -> 0.286  Inexact Rounded
-sqtx4477 squareroot 0.821 -> 0.906  Inexact Rounded
-sqtx4478 squareroot 0.0821 -> 0.287  Inexact Rounded
-sqtx4479 squareroot 0.822 -> 0.907  Inexact Rounded
-sqtx4480 squareroot 0.0822 -> 0.287  Inexact Rounded
-sqtx4481 squareroot 0.823 -> 0.907  Inexact Rounded
-sqtx4482 squareroot 0.0823 -> 0.287  Inexact Rounded
-sqtx4483 squareroot 0.824 -> 0.908  Inexact Rounded
-sqtx4484 squareroot 0.0824 -> 0.287  Inexact Rounded
-sqtx4485 squareroot 0.825 -> 0.908  Inexact Rounded
-sqtx4486 squareroot 0.0825 -> 0.287  Inexact Rounded
-sqtx4487 squareroot 0.826 -> 0.909  Inexact Rounded
-sqtx4488 squareroot 0.0826 -> 0.287  Inexact Rounded
-sqtx4489 squareroot 0.827 -> 0.909  Inexact Rounded
-sqtx4490 squareroot 0.0827 -> 0.288  Inexact Rounded
-sqtx4491 squareroot 0.828 -> 0.910  Inexact Rounded
-sqtx4492 squareroot 0.0828 -> 0.288  Inexact Rounded
-sqtx4493 squareroot 0.829 -> 0.910  Inexact Rounded
-sqtx4494 squareroot 0.0829 -> 0.288  Inexact Rounded
-sqtx4495 squareroot 0.831 -> 0.912  Inexact Rounded
-sqtx4496 squareroot 0.0831 -> 0.288  Inexact Rounded
-sqtx4497 squareroot 0.832 -> 0.912  Inexact Rounded
-sqtx4498 squareroot 0.0832 -> 0.288  Inexact Rounded
-sqtx4499 squareroot 0.833 -> 0.913  Inexact Rounded
-sqtx4500 squareroot 0.0833 -> 0.289  Inexact Rounded
-sqtx4501 squareroot 0.834 -> 0.913  Inexact Rounded
-sqtx4502 squareroot 0.0834 -> 0.289  Inexact Rounded
-sqtx4503 squareroot 0.835 -> 0.914  Inexact Rounded
-sqtx4504 squareroot 0.0835 -> 0.289  Inexact Rounded
-sqtx4505 squareroot 0.836 -> 0.914  Inexact Rounded
-sqtx4506 squareroot 0.0836 -> 0.289  Inexact Rounded
-sqtx4507 squareroot 0.837 -> 0.915  Inexact Rounded
-sqtx4508 squareroot 0.0837 -> 0.289  Inexact Rounded
-sqtx4509 squareroot 0.838 -> 0.915  Inexact Rounded
-sqtx4510 squareroot 0.0838 -> 0.289  Inexact Rounded
-sqtx4511 squareroot 0.839 -> 0.916  Inexact Rounded
-sqtx4512 squareroot 0.0839 -> 0.290  Inexact Rounded
-sqtx4513 squareroot 0.841 -> 0.917  Inexact Rounded
-sqtx4514 squareroot 0.0841 -> 0.29
-sqtx4515 squareroot 0.842 -> 0.918  Inexact Rounded
-sqtx4516 squareroot 0.0842 -> 0.290  Inexact Rounded
-sqtx4517 squareroot 0.843 -> 0.918  Inexact Rounded
-sqtx4518 squareroot 0.0843 -> 0.290  Inexact Rounded
-sqtx4519 squareroot 0.844 -> 0.919  Inexact Rounded
-sqtx4520 squareroot 0.0844 -> 0.291  Inexact Rounded
-sqtx4521 squareroot 0.845 -> 0.919  Inexact Rounded
-sqtx4522 squareroot 0.0845 -> 0.291  Inexact Rounded
-sqtx4523 squareroot 0.846 -> 0.920  Inexact Rounded
-sqtx4524 squareroot 0.0846 -> 0.291  Inexact Rounded
-sqtx4525 squareroot 0.847 -> 0.920  Inexact Rounded
-sqtx4526 squareroot 0.0847 -> 0.291  Inexact Rounded
-sqtx4527 squareroot 0.848 -> 0.921  Inexact Rounded
-sqtx4528 squareroot 0.0848 -> 0.291  Inexact Rounded
-sqtx4529 squareroot 0.849 -> 0.921  Inexact Rounded
-sqtx4530 squareroot 0.0849 -> 0.291  Inexact Rounded
-sqtx4531 squareroot 0.851 -> 0.922  Inexact Rounded
-sqtx4532 squareroot 0.0851 -> 0.292  Inexact Rounded
-sqtx4533 squareroot 0.852 -> 0.923  Inexact Rounded
-sqtx4534 squareroot 0.0852 -> 0.292  Inexact Rounded
-sqtx4535 squareroot 0.853 -> 0.924  Inexact Rounded
-sqtx4536 squareroot 0.0853 -> 0.292  Inexact Rounded
-sqtx4537 squareroot 0.854 -> 0.924  Inexact Rounded
-sqtx4538 squareroot 0.0854 -> 0.292  Inexact Rounded
-sqtx4539 squareroot 0.855 -> 0.925  Inexact Rounded
-sqtx4540 squareroot 0.0855 -> 0.292  Inexact Rounded
-sqtx4541 squareroot 0.856 -> 0.925  Inexact Rounded
-sqtx4542 squareroot 0.0856 -> 0.293  Inexact Rounded
-sqtx4543 squareroot 0.857 -> 0.926  Inexact Rounded
-sqtx4544 squareroot 0.0857 -> 0.293  Inexact Rounded
-sqtx4545 squareroot 0.858 -> 0.926  Inexact Rounded
-sqtx4546 squareroot 0.0858 -> 0.293  Inexact Rounded
-sqtx4547 squareroot 0.859 -> 0.927  Inexact Rounded
-sqtx4548 squareroot 0.0859 -> 0.293  Inexact Rounded
-sqtx4549 squareroot 0.861 -> 0.928  Inexact Rounded
-sqtx4550 squareroot 0.0861 -> 0.293  Inexact Rounded
-sqtx4551 squareroot 0.862 -> 0.928  Inexact Rounded
-sqtx4552 squareroot 0.0862 -> 0.294  Inexact Rounded
-sqtx4553 squareroot 0.863 -> 0.929  Inexact Rounded
-sqtx4554 squareroot 0.0863 -> 0.294  Inexact Rounded
-sqtx4555 squareroot 0.864 -> 0.930  Inexact Rounded
-sqtx4556 squareroot 0.0864 -> 0.294  Inexact Rounded
-sqtx4557 squareroot 0.865 -> 0.930  Inexact Rounded
-sqtx4558 squareroot 0.0865 -> 0.294  Inexact Rounded
-sqtx4559 squareroot 0.866 -> 0.931  Inexact Rounded
-sqtx4560 squareroot 0.0866 -> 0.294  Inexact Rounded
-sqtx4561 squareroot 0.867 -> 0.931  Inexact Rounded
-sqtx4562 squareroot 0.0867 -> 0.294  Inexact Rounded
-sqtx4563 squareroot 0.868 -> 0.932  Inexact Rounded
-sqtx4564 squareroot 0.0868 -> 0.295  Inexact Rounded
-sqtx4565 squareroot 0.869 -> 0.932  Inexact Rounded
-sqtx4566 squareroot 0.0869 -> 0.295  Inexact Rounded
-sqtx4567 squareroot 0.871 -> 0.933  Inexact Rounded
-sqtx4568 squareroot 0.0871 -> 0.295  Inexact Rounded
-sqtx4569 squareroot 0.872 -> 0.934  Inexact Rounded
-sqtx4570 squareroot 0.0872 -> 0.295  Inexact Rounded
-sqtx4571 squareroot 0.873 -> 0.934  Inexact Rounded
-sqtx4572 squareroot 0.0873 -> 0.295  Inexact Rounded
-sqtx4573 squareroot 0.874 -> 0.935  Inexact Rounded
-sqtx4574 squareroot 0.0874 -> 0.296  Inexact Rounded
-sqtx4575 squareroot 0.875 -> 0.935  Inexact Rounded
-sqtx4576 squareroot 0.0875 -> 0.296  Inexact Rounded
-sqtx4577 squareroot 0.876 -> 0.936  Inexact Rounded
-sqtx4578 squareroot 0.0876 -> 0.296  Inexact Rounded
-sqtx4579 squareroot 0.877 -> 0.936  Inexact Rounded
-sqtx4580 squareroot 0.0877 -> 0.296  Inexact Rounded
-sqtx4581 squareroot 0.878 -> 0.937  Inexact Rounded
-sqtx4582 squareroot 0.0878 -> 0.296  Inexact Rounded
-sqtx4583 squareroot 0.879 -> 0.938  Inexact Rounded
-sqtx4584 squareroot 0.0879 -> 0.296  Inexact Rounded
-sqtx4585 squareroot 0.881 -> 0.939  Inexact Rounded
-sqtx4586 squareroot 0.0881 -> 0.297  Inexact Rounded
-sqtx4587 squareroot 0.882 -> 0.939  Inexact Rounded
-sqtx4588 squareroot 0.0882 -> 0.297  Inexact Rounded
-sqtx4589 squareroot 0.883 -> 0.940  Inexact Rounded
-sqtx4590 squareroot 0.0883 -> 0.297  Inexact Rounded
-sqtx4591 squareroot 0.884 -> 0.940  Inexact Rounded
-sqtx4592 squareroot 0.0884 -> 0.297  Inexact Rounded
-sqtx4593 squareroot 0.885 -> 0.941  Inexact Rounded
-sqtx4594 squareroot 0.0885 -> 0.297  Inexact Rounded
-sqtx4595 squareroot 0.886 -> 0.941  Inexact Rounded
-sqtx4596 squareroot 0.0886 -> 0.298  Inexact Rounded
-sqtx4597 squareroot 0.887 -> 0.942  Inexact Rounded
-sqtx4598 squareroot 0.0887 -> 0.298  Inexact Rounded
-sqtx4599 squareroot 0.888 -> 0.942  Inexact Rounded
-sqtx4600 squareroot 0.0888 -> 0.298  Inexact Rounded
-sqtx4601 squareroot 0.889 -> 0.943  Inexact Rounded
-sqtx4602 squareroot 0.0889 -> 0.298  Inexact Rounded
-sqtx4603 squareroot 0.891 -> 0.944  Inexact Rounded
-sqtx4604 squareroot 0.0891 -> 0.298  Inexact Rounded
-sqtx4605 squareroot 0.892 -> 0.944  Inexact Rounded
-sqtx4606 squareroot 0.0892 -> 0.299  Inexact Rounded
-sqtx4607 squareroot 0.893 -> 0.945  Inexact Rounded
-sqtx4608 squareroot 0.0893 -> 0.299  Inexact Rounded
-sqtx4609 squareroot 0.894 -> 0.946  Inexact Rounded
-sqtx4610 squareroot 0.0894 -> 0.299  Inexact Rounded
-sqtx4611 squareroot 0.895 -> 0.946  Inexact Rounded
-sqtx4612 squareroot 0.0895 -> 0.299  Inexact Rounded
-sqtx4613 squareroot 0.896 -> 0.947  Inexact Rounded
-sqtx4614 squareroot 0.0896 -> 0.299  Inexact Rounded
-sqtx4615 squareroot 0.897 -> 0.947  Inexact Rounded
-sqtx4616 squareroot 0.0897 -> 0.299  Inexact Rounded
-sqtx4617 squareroot 0.898 -> 0.948  Inexact Rounded
-sqtx4618 squareroot 0.0898 -> 0.300  Inexact Rounded
-sqtx4619 squareroot 0.899 -> 0.948  Inexact Rounded
-sqtx4620 squareroot 0.0899 -> 0.300  Inexact Rounded
-sqtx4621 squareroot 0.901 -> 0.949  Inexact Rounded
-sqtx4622 squareroot 0.0901 -> 0.300  Inexact Rounded
-sqtx4623 squareroot 0.902 -> 0.950  Inexact Rounded
-sqtx4624 squareroot 0.0902 -> 0.300  Inexact Rounded
-sqtx4625 squareroot 0.903 -> 0.950  Inexact Rounded
-sqtx4626 squareroot 0.0903 -> 0.300  Inexact Rounded
-sqtx4627 squareroot 0.904 -> 0.951  Inexact Rounded
-sqtx4628 squareroot 0.0904 -> 0.301  Inexact Rounded
-sqtx4629 squareroot 0.905 -> 0.951  Inexact Rounded
-sqtx4630 squareroot 0.0905 -> 0.301  Inexact Rounded
-sqtx4631 squareroot 0.906 -> 0.952  Inexact Rounded
-sqtx4632 squareroot 0.0906 -> 0.301  Inexact Rounded
-sqtx4633 squareroot 0.907 -> 0.952  Inexact Rounded
-sqtx4634 squareroot 0.0907 -> 0.301  Inexact Rounded
-sqtx4635 squareroot 0.908 -> 0.953  Inexact Rounded
-sqtx4636 squareroot 0.0908 -> 0.301  Inexact Rounded
-sqtx4637 squareroot 0.909 -> 0.953  Inexact Rounded
-sqtx4638 squareroot 0.0909 -> 0.301  Inexact Rounded
-sqtx4639 squareroot 0.911 -> 0.954  Inexact Rounded
-sqtx4640 squareroot 0.0911 -> 0.302  Inexact Rounded
-sqtx4641 squareroot 0.912 -> 0.955  Inexact Rounded
-sqtx4642 squareroot 0.0912 -> 0.302  Inexact Rounded
-sqtx4643 squareroot 0.913 -> 0.956  Inexact Rounded
-sqtx4644 squareroot 0.0913 -> 0.302  Inexact Rounded
-sqtx4645 squareroot 0.914 -> 0.956  Inexact Rounded
-sqtx4646 squareroot 0.0914 -> 0.302  Inexact Rounded
-sqtx4647 squareroot 0.915 -> 0.957  Inexact Rounded
-sqtx4648 squareroot 0.0915 -> 0.302  Inexact Rounded
-sqtx4649 squareroot 0.916 -> 0.957  Inexact Rounded
-sqtx4650 squareroot 0.0916 -> 0.303  Inexact Rounded
-sqtx4651 squareroot 0.917 -> 0.958  Inexact Rounded
-sqtx4652 squareroot 0.0917 -> 0.303  Inexact Rounded
-sqtx4653 squareroot 0.918 -> 0.958  Inexact Rounded
-sqtx4654 squareroot 0.0918 -> 0.303  Inexact Rounded
-sqtx4655 squareroot 0.919 -> 0.959  Inexact Rounded
-sqtx4656 squareroot 0.0919 -> 0.303  Inexact Rounded
-sqtx4657 squareroot 0.921 -> 0.960  Inexact Rounded
-sqtx4658 squareroot 0.0921 -> 0.303  Inexact Rounded
-sqtx4659 squareroot 0.922 -> 0.960  Inexact Rounded
-sqtx4660 squareroot 0.0922 -> 0.304  Inexact Rounded
-sqtx4661 squareroot 0.923 -> 0.961  Inexact Rounded
-sqtx4662 squareroot 0.0923 -> 0.304  Inexact Rounded
-sqtx4663 squareroot 0.924 -> 0.961  Inexact Rounded
-sqtx4664 squareroot 0.0924 -> 0.304  Inexact Rounded
-sqtx4665 squareroot 0.925 -> 0.962  Inexact Rounded
-sqtx4666 squareroot 0.0925 -> 0.304  Inexact Rounded
-sqtx4667 squareroot 0.926 -> 0.962  Inexact Rounded
-sqtx4668 squareroot 0.0926 -> 0.304  Inexact Rounded
-sqtx4669 squareroot 0.927 -> 0.963  Inexact Rounded
-sqtx4670 squareroot 0.0927 -> 0.304  Inexact Rounded
-sqtx4671 squareroot 0.928 -> 0.963  Inexact Rounded
-sqtx4672 squareroot 0.0928 -> 0.305  Inexact Rounded
-sqtx4673 squareroot 0.929 -> 0.964  Inexact Rounded
-sqtx4674 squareroot 0.0929 -> 0.305  Inexact Rounded
-sqtx4675 squareroot 0.931 -> 0.965  Inexact Rounded
-sqtx4676 squareroot 0.0931 -> 0.305  Inexact Rounded
-sqtx4677 squareroot 0.932 -> 0.965  Inexact Rounded
-sqtx4678 squareroot 0.0932 -> 0.305  Inexact Rounded
-sqtx4679 squareroot 0.933 -> 0.966  Inexact Rounded
-sqtx4680 squareroot 0.0933 -> 0.305  Inexact Rounded
-sqtx4681 squareroot 0.934 -> 0.966  Inexact Rounded
-sqtx4682 squareroot 0.0934 -> 0.306  Inexact Rounded
-sqtx4683 squareroot 0.935 -> 0.967  Inexact Rounded
-sqtx4684 squareroot 0.0935 -> 0.306  Inexact Rounded
-sqtx4685 squareroot 0.936 -> 0.967  Inexact Rounded
-sqtx4686 squareroot 0.0936 -> 0.306  Inexact Rounded
-sqtx4687 squareroot 0.937 -> 0.968  Inexact Rounded
-sqtx4688 squareroot 0.0937 -> 0.306  Inexact Rounded
-sqtx4689 squareroot 0.938 -> 0.969  Inexact Rounded
-sqtx4690 squareroot 0.0938 -> 0.306  Inexact Rounded
-sqtx4691 squareroot 0.939 -> 0.969  Inexact Rounded
-sqtx4692 squareroot 0.0939 -> 0.306  Inexact Rounded
-sqtx4693 squareroot 0.941 -> 0.970  Inexact Rounded
-sqtx4694 squareroot 0.0941 -> 0.307  Inexact Rounded
-sqtx4695 squareroot 0.942 -> 0.971  Inexact Rounded
-sqtx4696 squareroot 0.0942 -> 0.307  Inexact Rounded
-sqtx4697 squareroot 0.943 -> 0.971  Inexact Rounded
-sqtx4698 squareroot 0.0943 -> 0.307  Inexact Rounded
-sqtx4699 squareroot 0.944 -> 0.972  Inexact Rounded
-sqtx4700 squareroot 0.0944 -> 0.307  Inexact Rounded
-sqtx4701 squareroot 0.945 -> 0.972  Inexact Rounded
-sqtx4702 squareroot 0.0945 -> 0.307  Inexact Rounded
-sqtx4703 squareroot 0.946 -> 0.973  Inexact Rounded
-sqtx4704 squareroot 0.0946 -> 0.308  Inexact Rounded
-sqtx4705 squareroot 0.947 -> 0.973  Inexact Rounded
-sqtx4706 squareroot 0.0947 -> 0.308  Inexact Rounded
-sqtx4707 squareroot 0.948 -> 0.974  Inexact Rounded
-sqtx4708 squareroot 0.0948 -> 0.308  Inexact Rounded
-sqtx4709 squareroot 0.949 -> 0.974  Inexact Rounded
-sqtx4710 squareroot 0.0949 -> 0.308  Inexact Rounded
-sqtx4711 squareroot 0.951 -> 0.975  Inexact Rounded
-sqtx4712 squareroot 0.0951 -> 0.308  Inexact Rounded
-sqtx4713 squareroot 0.952 -> 0.976  Inexact Rounded
-sqtx4714 squareroot 0.0952 -> 0.309  Inexact Rounded
-sqtx4715 squareroot 0.953 -> 0.976  Inexact Rounded
-sqtx4716 squareroot 0.0953 -> 0.309  Inexact Rounded
-sqtx4717 squareroot 0.954 -> 0.977  Inexact Rounded
-sqtx4718 squareroot 0.0954 -> 0.309  Inexact Rounded
-sqtx4719 squareroot 0.955 -> 0.977  Inexact Rounded
-sqtx4720 squareroot 0.0955 -> 0.309  Inexact Rounded
-sqtx4721 squareroot 0.956 -> 0.978  Inexact Rounded
-sqtx4722 squareroot 0.0956 -> 0.309  Inexact Rounded
-sqtx4723 squareroot 0.957 -> 0.978  Inexact Rounded
-sqtx4724 squareroot 0.0957 -> 0.309  Inexact Rounded
-sqtx4725 squareroot 0.958 -> 0.979  Inexact Rounded
-sqtx4726 squareroot 0.0958 -> 0.310  Inexact Rounded
-sqtx4727 squareroot 0.959 -> 0.979  Inexact Rounded
-sqtx4728 squareroot 0.0959 -> 0.310  Inexact Rounded
-sqtx4729 squareroot 0.961 -> 0.980  Inexact Rounded
-sqtx4730 squareroot 0.0961 -> 0.31
-sqtx4731 squareroot 0.962 -> 0.981  Inexact Rounded
-sqtx4732 squareroot 0.0962 -> 0.310  Inexact Rounded
-sqtx4733 squareroot 0.963 -> 0.981  Inexact Rounded
-sqtx4734 squareroot 0.0963 -> 0.310  Inexact Rounded
-sqtx4735 squareroot 0.964 -> 0.982  Inexact Rounded
-sqtx4736 squareroot 0.0964 -> 0.310  Inexact Rounded
-sqtx4737 squareroot 0.965 -> 0.982  Inexact Rounded
-sqtx4738 squareroot 0.0965 -> 0.311  Inexact Rounded
-sqtx4739 squareroot 0.966 -> 0.983  Inexact Rounded
-sqtx4740 squareroot 0.0966 -> 0.311  Inexact Rounded
-sqtx4741 squareroot 0.967 -> 0.983  Inexact Rounded
-sqtx4742 squareroot 0.0967 -> 0.311  Inexact Rounded
-sqtx4743 squareroot 0.968 -> 0.984  Inexact Rounded
-sqtx4744 squareroot 0.0968 -> 0.311  Inexact Rounded
-sqtx4745 squareroot 0.969 -> 0.984  Inexact Rounded
-sqtx4746 squareroot 0.0969 -> 0.311  Inexact Rounded
-sqtx4747 squareroot 0.971 -> 0.985  Inexact Rounded
-sqtx4748 squareroot 0.0971 -> 0.312  Inexact Rounded
-sqtx4749 squareroot 0.972 -> 0.986  Inexact Rounded
-sqtx4750 squareroot 0.0972 -> 0.312  Inexact Rounded
-sqtx4751 squareroot 0.973 -> 0.986  Inexact Rounded
-sqtx4752 squareroot 0.0973 -> 0.312  Inexact Rounded
-sqtx4753 squareroot 0.974 -> 0.987  Inexact Rounded
-sqtx4754 squareroot 0.0974 -> 0.312  Inexact Rounded
-sqtx4755 squareroot 0.975 -> 0.987  Inexact Rounded
-sqtx4756 squareroot 0.0975 -> 0.312  Inexact Rounded
-sqtx4757 squareroot 0.976 -> 0.988  Inexact Rounded
-sqtx4758 squareroot 0.0976 -> 0.312  Inexact Rounded
-sqtx4759 squareroot 0.977 -> 0.988  Inexact Rounded
-sqtx4760 squareroot 0.0977 -> 0.313  Inexact Rounded
-sqtx4761 squareroot 0.978 -> 0.989  Inexact Rounded
-sqtx4762 squareroot 0.0978 -> 0.313  Inexact Rounded
-sqtx4763 squareroot 0.979 -> 0.989  Inexact Rounded
-sqtx4764 squareroot 0.0979 -> 0.313  Inexact Rounded
-sqtx4765 squareroot 0.981 -> 0.990  Inexact Rounded
-sqtx4766 squareroot 0.0981 -> 0.313  Inexact Rounded
-sqtx4767 squareroot 0.982 -> 0.991  Inexact Rounded
-sqtx4768 squareroot 0.0982 -> 0.313  Inexact Rounded
-sqtx4769 squareroot 0.983 -> 0.991  Inexact Rounded
-sqtx4770 squareroot 0.0983 -> 0.314  Inexact Rounded
-sqtx4771 squareroot 0.984 -> 0.992  Inexact Rounded
-sqtx4772 squareroot 0.0984 -> 0.314  Inexact Rounded
-sqtx4773 squareroot 0.985 -> 0.992  Inexact Rounded
-sqtx4774 squareroot 0.0985 -> 0.314  Inexact Rounded
-sqtx4775 squareroot 0.986 -> 0.993  Inexact Rounded
-sqtx4776 squareroot 0.0986 -> 0.314  Inexact Rounded
-sqtx4777 squareroot 0.987 -> 0.993  Inexact Rounded
-sqtx4778 squareroot 0.0987 -> 0.314  Inexact Rounded
-sqtx4779 squareroot 0.988 -> 0.994  Inexact Rounded
-sqtx4780 squareroot 0.0988 -> 0.314  Inexact Rounded
-sqtx4781 squareroot 0.989 -> 0.994  Inexact Rounded
-sqtx4782 squareroot 0.0989 -> 0.314  Inexact Rounded
-sqtx4783 squareroot 0.991 -> 0.995  Inexact Rounded
-sqtx4784 squareroot 0.0991 -> 0.315  Inexact Rounded
-sqtx4785 squareroot 0.992 -> 0.996  Inexact Rounded
-sqtx4786 squareroot 0.0992 -> 0.315  Inexact Rounded
-sqtx4787 squareroot 0.993 -> 0.996  Inexact Rounded
-sqtx4788 squareroot 0.0993 -> 0.315  Inexact Rounded
-sqtx4789 squareroot 0.994 -> 0.997  Inexact Rounded
-sqtx4790 squareroot 0.0994 -> 0.315  Inexact Rounded
-sqtx4791 squareroot 0.995 -> 0.997  Inexact Rounded
-sqtx4792 squareroot 0.0995 -> 0.315  Inexact Rounded
-sqtx4793 squareroot 0.996 -> 0.998  Inexact Rounded
-sqtx4794 squareroot 0.0996 -> 0.316  Inexact Rounded
-sqtx4795 squareroot 0.997 -> 0.998  Inexact Rounded
-sqtx4796 squareroot 0.0997 -> 0.316  Inexact Rounded
-sqtx4797 squareroot 0.998 -> 0.999  Inexact Rounded
-sqtx4798 squareroot 0.0998 -> 0.316  Inexact Rounded
-sqtx4799 squareroot 0.999 -> 0.999  Inexact Rounded
-sqtx4800 squareroot 0.0999 -> 0.316  Inexact Rounded
-
--- A group of precision 4 tests where Hull & Abrham adjustments are
--- needed in some cases (both up and down) [see Hull1985b]
-rounding:    half_even
-maxExponent: 999
-minexponent: -999
-precision:   4
-sqtx5001 squareroot 0.0118  -> 0.1086  Inexact Rounded
-sqtx5002 squareroot 0.119   -> 0.3450  Inexact Rounded
-sqtx5003 squareroot 0.0119  -> 0.1091  Inexact Rounded
-sqtx5004 squareroot 0.121   -> 0.3479  Inexact Rounded
-sqtx5005 squareroot 0.0121  -> 0.11
-sqtx5006 squareroot 0.122   -> 0.3493  Inexact Rounded
-sqtx5007 squareroot 0.0122  -> 0.1105  Inexact Rounded
-sqtx5008 squareroot 0.123   -> 0.3507  Inexact Rounded
-sqtx5009 squareroot 0.494   -> 0.7029  Inexact Rounded
-sqtx5010 squareroot 0.0669  -> 0.2587  Inexact Rounded
-sqtx5011 squareroot 0.9558  -> 0.9777  Inexact Rounded
-sqtx5012 squareroot 0.9348  -> 0.9669  Inexact Rounded
-sqtx5013 squareroot 0.9345  -> 0.9667  Inexact Rounded
-sqtx5014 squareroot 0.09345 -> 0.3057  Inexact Rounded
-sqtx5015 squareroot 0.9346  -> 0.9667  Inexact Rounded
-sqtx5016 squareroot 0.09346 -> 0.3057  Inexact Rounded
-sqtx5017 squareroot 0.9347  -> 0.9668  Inexact Rounded
-
--- examples from decArith
-precision: 9
-sqtx700 squareroot  0       -> '0'
-sqtx701 squareroot  -0      -> '-0'
-sqtx702 squareroot  0.39    -> 0.624499800    Inexact Rounded
-sqtx703 squareroot  100     -> '10'
-sqtx704 squareroot  1.00    -> '1.0'
-sqtx705 squareroot  7       -> '2.64575131'   Inexact Rounded
-sqtx706 squareroot  10      -> 3.16227766     Inexact Rounded
-
--- some one-offs
-precision: 9
-sqtx711 squareroot  0.1     -> 0.316227766    Inexact Rounded
-sqtx712 squareroot  0.2     -> 0.447213595    Inexact Rounded
-sqtx713 squareroot  0.3     -> 0.547722558    Inexact Rounded
-sqtx714 squareroot  0.4     -> 0.632455532    Inexact Rounded
-sqtx715 squareroot  0.5     -> 0.707106781    Inexact Rounded
-sqtx716 squareroot  0.6     -> 0.774596669    Inexact Rounded
-sqtx717 squareroot  0.7     -> 0.836660027    Inexact Rounded
-sqtx718 squareroot  0.8     -> 0.894427191    Inexact Rounded
-sqtx719 squareroot  0.9     -> 0.948683298    Inexact Rounded
-precision: 10               -- note no normalizatoin here
-sqtx720 squareroot +0.1     -> 0.3162277660   Inexact Rounded
-precision: 11
-sqtx721 squareroot +0.1     -> 0.31622776602  Inexact Rounded
-precision: 12
-sqtx722 squareroot +0.1     -> 0.316227766017 Inexact Rounded
-precision: 9
-sqtx723 squareroot  0.39    -> 0.624499800    Inexact Rounded
-precision: 15
-sqtx724 squareroot  0.39    -> 0.624499799839840 Inexact Rounded
-
--- discussion cases
-precision: 7
-sqtx731 squareroot     9   ->   3
-sqtx732 squareroot   100   ->  10
-sqtx733 squareroot   123   ->  11.09054  Inexact Rounded
-sqtx734 squareroot   144   ->  12
-sqtx735 squareroot   156   ->  12.49000  Inexact Rounded
-sqtx736 squareroot 10000   -> 100
-
--- values close to overflow (if there were input rounding)
-maxexponent: 99
-minexponent: -99
-precision: 5
-sqtx760 squareroot  9.9997E+99   -> 9.9998E+49 Inexact Rounded
-sqtx761 squareroot  9.9998E+99   -> 9.9999E+49 Inexact Rounded
-sqtx762 squareroot  9.9999E+99   -> 9.9999E+49 Inexact Rounded
-sqtx763 squareroot  9.99991E+99  -> 1.0000E+50 Inexact Rounded
-sqtx764 squareroot  9.99994E+99  -> 1.0000E+50 Inexact Rounded
-sqtx765 squareroot  9.99995E+99  -> 1.0000E+50 Inexact Rounded
-sqtx766 squareroot  9.99999E+99  -> 1.0000E+50 Inexact Rounded
-precision: 9
-sqtx770 squareroot  9.9997E+99   -> 9.99985000E+49  Inexact Rounded
-sqtx771 squareroot  9.9998E+99   -> 9.99990000E+49  Inexact Rounded
-sqtx772 squareroot  9.9999E+99   -> 9.99995000E+49  Inexact Rounded
-sqtx773 squareroot  9.99991E+99  -> 9.99995500E+49  Inexact Rounded
-sqtx774 squareroot  9.99994E+99  -> 9.99997000E+49  Inexact Rounded
-sqtx775 squareroot  9.99995E+99  -> 9.99997500E+49  Inexact Rounded
-sqtx776 squareroot  9.99999E+99  -> 9.99999500E+49  Inexact Rounded
-precision: 20
-sqtx780 squareroot  9.9997E+99   -> '9.9998499988749831247E+49' Inexact Rounded
-sqtx781 squareroot  9.9998E+99   -> '9.9998999994999949999E+49' Inexact Rounded
-sqtx782 squareroot  9.9999E+99   -> '9.9999499998749993750E+49' Inexact Rounded
-sqtx783 squareroot  9.99991E+99  -> '9.9999549998987495444E+49' Inexact Rounded
-sqtx784 squareroot  9.99994E+99  -> '9.9999699999549998650E+49' Inexact Rounded
-sqtx785 squareroot  9.99995E+99  -> '9.9999749999687499219E+49' Inexact Rounded
-sqtx786 squareroot  9.99999E+99  -> '9.9999949999987499994E+49' Inexact Rounded
-
--- subnormals and underflows [these can only result when eMax is < digits+1]
--- Etiny = -(Emax + (precision-1))
--- start with subnormal operands and normal results
-maxexponent: 9
-minexponent: -9
-precision: 9                -- Etiny=-17
-sqtx800 squareroot  1E-17   -> 3.16227766E-9 Inexact Rounded
-sqtx801 squareroot 10E-17   -> 1.0E-8
-precision: 10               -- Etiny=-18
-sqtx802 squareroot 10E-18   -> 3.162277660E-9 Inexact Rounded
-sqtx803 squareroot  1E-18   -> 1E-9
-
-precision: 11               -- Etiny=-19
-sqtx804 squareroot  1E-19   -> 3.162277660E-10 Underflow Subnormal Inexact Rounded
-sqtx805 squareroot 10E-19   -> 1.0E-9            -- exact
-precision: 12               -- Etiny=-20
-sqtx806 squareroot 10E-20   -> 3.1622776602E-10 Underflow Subnormal Inexact Rounded
-sqtx807 squareroot  1E-20   -> 1E-10 Subnormal   -- exact Subnormal case
-
-precision: 13               -- Etiny=-21
-sqtx808 squareroot  1E-21   -> 3.1622776602E-11 Underflow Subnormal Inexact Rounded
-sqtx809 squareroot 10E-21   -> 1.0E-10 Subnormal -- exact Subnormal case
-precision: 14               -- Etiny=-22
-sqtx810 squareroot  1E-21   -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded
-sqtx811 squareroot 10E-22   -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded
-sqtx812 squareroot  1E-22   -> 1E-11 Subnormal   -- exact Subnormal case
-
--- Not enough digits?
-precision:   16
-maxExponent: 384
-minExponent: -383
-rounding:    half_even
-sqtx815 squareroot 1.0000000001000000E-78  -> 1.000000000050000E-39 Inexact Rounded
---                                            1 234567890123456
-
--- special values
-maxexponent: 999
-minexponent: -999
-sqtx820 squareroot   Inf    -> Infinity
-sqtx821 squareroot  -Inf    -> NaN Invalid_operation
-sqtx822 squareroot   NaN    -> NaN
-sqtx823 squareroot  sNaN    -> NaN Invalid_operation
--- propagating NaNs
-sqtx824 squareroot  sNaN123 ->  NaN123 Invalid_operation
-sqtx825 squareroot -sNaN321 -> -NaN321 Invalid_operation
-sqtx826 squareroot   NaN456 ->  NaN456
-sqtx827 squareroot  -NaN654 -> -NaN654
-sqtx828 squareroot   NaN1   ->  NaN1
-
--- payload decapitate
-precision: 5
-sqtx840 squareroot -sNaN1234567890 -> -NaN67890  Invalid_operation
-
-------------------------------------------------------------------------
---
--- Special thanks to Mark Dickinson for tests in the range 8000-8999.
---
--- Extra tests for the square root function, dealing with a variety of
--- corner cases.  In particular, these tests concentrate on
---   (1) cases where the input precision exceeds the context precision, and
---   (2) cases where the input exponent is outside the current context,
---       and in particular when the result is subnormal
---
--- maxexponent and minexponent are set to 9 and -9 for most of these
--- cases; only the precision changes.  The rounding also does not
--- change, because it is ignored for this operation.
-maxexponent: 9
-minexponent: -9
-
--- exact results, input precision > context precision
-precision: 1
-sqtx8000 squareroot 0 -> 0
-sqtx8001 squareroot 1 -> 1
-sqtx8002 squareroot 4 -> 2
-sqtx8003 squareroot 9 -> 3
-sqtx8004 squareroot 16 -> 4
-sqtx8005 squareroot 25 -> 5
-sqtx8006 squareroot 36 -> 6
-sqtx8007 squareroot 49 -> 7
-sqtx8008 squareroot 64 -> 8
-sqtx8009 squareroot 81 -> 9
-sqtx8010 squareroot 100 -> 1E+1 Rounded
-sqtx8011 squareroot 121 -> 1E+1 Inexact Rounded
-
-precision: 2
-sqtx8012 squareroot 0 -> 0
-sqtx8013 squareroot 1 -> 1
-sqtx8014 squareroot 4 -> 2
-sqtx8015 squareroot 9 -> 3
-sqtx8016 squareroot 16 -> 4
-sqtx8017 squareroot 25 -> 5
-sqtx8018 squareroot 36 -> 6
-sqtx8019 squareroot 49 -> 7
-sqtx8020 squareroot 64 -> 8
-sqtx8021 squareroot 81 -> 9
-sqtx8022 squareroot 100 -> 10
-sqtx8023 squareroot 121 -> 11
-sqtx8024 squareroot 144 -> 12
-sqtx8025 squareroot 169 -> 13
-sqtx8026 squareroot 196 -> 14
-sqtx8027 squareroot 225 -> 15
-sqtx8028 squareroot 256 -> 16
-sqtx8029 squareroot 289 -> 17
-sqtx8030 squareroot 324 -> 18
-sqtx8031 squareroot 361 -> 19
-sqtx8032 squareroot 400 -> 20
-sqtx8033 squareroot 441 -> 21
-sqtx8034 squareroot 484 -> 22
-sqtx8035 squareroot 529 -> 23
-sqtx8036 squareroot 576 -> 24
-sqtx8037 squareroot 625 -> 25
-sqtx8038 squareroot 676 -> 26
-sqtx8039 squareroot 729 -> 27
-sqtx8040 squareroot 784 -> 28
-sqtx8041 squareroot 841 -> 29
-sqtx8042 squareroot 900 -> 30
-sqtx8043 squareroot 961 -> 31
-sqtx8044 squareroot 1024 -> 32
-sqtx8045 squareroot 1089 -> 33
-sqtx8046 squareroot 1156 -> 34
-sqtx8047 squareroot 1225 -> 35
-sqtx8048 squareroot 1296 -> 36
-sqtx8049 squareroot 1369 -> 37
-sqtx8050 squareroot 1444 -> 38
-sqtx8051 squareroot 1521 -> 39
-sqtx8052 squareroot 1600 -> 40
-sqtx8053 squareroot 1681 -> 41
-sqtx8054 squareroot 1764 -> 42
-sqtx8055 squareroot 1849 -> 43
-sqtx8056 squareroot 1936 -> 44
-sqtx8057 squareroot 2025 -> 45
-sqtx8058 squareroot 2116 -> 46
-sqtx8059 squareroot 2209 -> 47
-sqtx8060 squareroot 2304 -> 48
-sqtx8061 squareroot 2401 -> 49
-sqtx8062 squareroot 2500 -> 50
-sqtx8063 squareroot 2601 -> 51
-sqtx8064 squareroot 2704 -> 52
-sqtx8065 squareroot 2809 -> 53
-sqtx8066 squareroot 2916 -> 54
-sqtx8067 squareroot 3025 -> 55
-sqtx8068 squareroot 3136 -> 56
-sqtx8069 squareroot 3249 -> 57
-sqtx8070 squareroot 3364 -> 58
-sqtx8071 squareroot 3481 -> 59
-sqtx8072 squareroot 3600 -> 60
-sqtx8073 squareroot 3721 -> 61
-sqtx8074 squareroot 3844 -> 62
-sqtx8075 squareroot 3969 -> 63
-sqtx8076 squareroot 4096 -> 64
-sqtx8077 squareroot 4225 -> 65
-sqtx8078 squareroot 4356 -> 66
-sqtx8079 squareroot 4489 -> 67
-sqtx8080 squareroot 4624 -> 68
-sqtx8081 squareroot 4761 -> 69
-sqtx8082 squareroot 4900 -> 70
-sqtx8083 squareroot 5041 -> 71
-sqtx8084 squareroot 5184 -> 72
-sqtx8085 squareroot 5329 -> 73
-sqtx8086 squareroot 5476 -> 74
-sqtx8087 squareroot 5625 -> 75
-sqtx8088 squareroot 5776 -> 76
-sqtx8089 squareroot 5929 -> 77
-sqtx8090 squareroot 6084 -> 78
-sqtx8091 squareroot 6241 -> 79
-sqtx8092 squareroot 6400 -> 80
-sqtx8093 squareroot 6561 -> 81
-sqtx8094 squareroot 6724 -> 82
-sqtx8095 squareroot 6889 -> 83
-sqtx8096 squareroot 7056 -> 84
-sqtx8097 squareroot 7225 -> 85
-sqtx8098 squareroot 7396 -> 86
-sqtx8099 squareroot 7569 -> 87
-sqtx8100 squareroot 7744 -> 88
-sqtx8101 squareroot 7921 -> 89
-sqtx8102 squareroot 8100 -> 90
-sqtx8103 squareroot 8281 -> 91
-sqtx8104 squareroot 8464 -> 92
-sqtx8105 squareroot 8649 -> 93
-sqtx8106 squareroot 8836 -> 94
-sqtx8107 squareroot 9025 -> 95
-sqtx8108 squareroot 9216 -> 96
-sqtx8109 squareroot 9409 -> 97
-sqtx8110 squareroot 9604 -> 98
-sqtx8111 squareroot 9801 -> 99
-sqtx8112 squareroot 10000 -> 1.0E+2 Rounded
-sqtx8113 squareroot 10201 -> 1.0E+2 Inexact Rounded
-
-precision: 3
-sqtx8114 squareroot 841 -> 29
-sqtx8115 squareroot 1600 -> 40
-sqtx8116 squareroot 2209 -> 47
-sqtx8117 squareroot 9604 -> 98
-sqtx8118 squareroot 21316 -> 146
-sqtx8119 squareroot 52441 -> 229
-sqtx8120 squareroot 68644 -> 262
-sqtx8121 squareroot 69696 -> 264
-sqtx8122 squareroot 70225 -> 265
-sqtx8123 squareroot 76729 -> 277
-sqtx8124 squareroot 130321 -> 361
-sqtx8125 squareroot 171396 -> 414
-sqtx8126 squareroot 270400 -> 520
-sqtx8127 squareroot 279841 -> 529
-sqtx8128 squareroot 407044 -> 638
-sqtx8129 squareroot 408321 -> 639
-sqtx8130 squareroot 480249 -> 693
-sqtx8131 squareroot 516961 -> 719
-sqtx8132 squareroot 692224 -> 832
-sqtx8133 squareroot 829921 -> 911
-
--- selection of random exact results
-precision: 6
-sqtx8134 squareroot 2.25E-12 -> 0.0000015
-sqtx8135 squareroot 8.41E-14 -> 2.9E-7
-sqtx8136 squareroot 6.241E-15 -> 7.9E-8
-sqtx8137 squareroot 5.041E+13 -> 7.1E+6
-sqtx8138 squareroot 4761 -> 69
-sqtx8139 squareroot 1.369E+17 -> 3.7E+8
-sqtx8140 squareroot 0.00002116 -> 0.0046
-sqtx8141 squareroot 7.29E+4 -> 2.7E+2
-sqtx8142 squareroot 4.624E-13 -> 6.8E-7
-sqtx8143 squareroot 3.969E+5 -> 6.3E+2
-sqtx8144 squareroot 3.73321E-11 -> 0.00000611
-sqtx8145 squareroot 5.61001E+17 -> 7.49E+8
-sqtx8146 squareroot 2.30400E-11 -> 0.00000480
-sqtx8147 squareroot 4.30336E+17 -> 6.56E+8
-sqtx8148 squareroot 0.057121 -> 0.239
-sqtx8149 squareroot 7.225E+17 -> 8.5E+8
-sqtx8150 squareroot 3.14721E+13 -> 5.61E+6
-sqtx8151 squareroot 4.61041E+17 -> 6.79E+8
-sqtx8152 squareroot 1.39876E-15 -> 3.74E-8
-sqtx8153 squareroot 6.19369E-9 -> 0.0000787
-sqtx8154 squareroot 1.620529E-10 -> 0.00001273
-sqtx8155 squareroot 1177.1761 -> 34.31
-sqtx8156 squareroot 67043344 -> 8188
-sqtx8157 squareroot 4.84E+6 -> 2.2E+3
-sqtx8158 squareroot 1.23904E+11 -> 3.52E+5
-sqtx8159 squareroot 32604100 -> 5710
-sqtx8160 squareroot 2.9757025E-11 -> 0.000005455
-sqtx8161 squareroot 6.3760225E-9 -> 0.00007985
-sqtx8162 squareroot 4.5198729E-11 -> 0.000006723
-sqtx8163 squareroot 1.4745600E-11 -> 0.000003840
-sqtx8164 squareroot 18964283.04 -> 4354.8
-sqtx8165 squareroot 3.308895529E+13 -> 5.7523E+6
-sqtx8166 squareroot 0.0028590409 -> 0.05347
-sqtx8167 squareroot 3572.213824 -> 59.768
-sqtx8168 squareroot 4.274021376E+15 -> 6.5376E+7
-sqtx8169 squareroot 4455476.64 -> 2110.8
-sqtx8170 squareroot 38.44 -> 6.2
-sqtx8171 squareroot 68.558400 -> 8.280
-sqtx8172 squareroot 715402009 -> 26747
-sqtx8173 squareroot 93.373569 -> 9.663
-sqtx8174 squareroot 2.62144000000E+15 -> 5.12000E+7
-sqtx8175 squareroot 7.48225000000E+15 -> 8.65000E+7
-sqtx8176 squareroot 3.38724000000E-9 -> 0.0000582000
-sqtx8177 squareroot 5.64001000000E-13 -> 7.51000E-7
-sqtx8178 squareroot 5.06944000000E-15 -> 7.12000E-8
-sqtx8179 squareroot 4.95616000000E+17 -> 7.04000E+8
-sqtx8180 squareroot 0.0000242064000000 -> 0.00492000
-sqtx8181 squareroot 1.48996000000E-15 -> 3.86000E-8
-sqtx8182 squareroot 9.37024000000E+17 -> 9.68000E+8
-sqtx8183 squareroot 7128900.0000 -> 2670.00
-sqtx8184 squareroot 8.2311610000E-10 -> 0.0000286900
-sqtx8185 squareroot 482747040000 -> 694800
-sqtx8186 squareroot 4.14478440000E+17 -> 6.43800E+8
-sqtx8187 squareroot 5.10510250000E-7 -> 0.000714500
-sqtx8188 squareroot 355096.810000 -> 595.900
-sqtx8189 squareroot 14288400.0000 -> 3780.00
-sqtx8190 squareroot 3.36168040000E-15 -> 5.79800E-8
-sqtx8191 squareroot 1.70899560000E-13 -> 4.13400E-7
-sqtx8192 squareroot 0.0000378348010000 -> 0.00615100
-sqtx8193 squareroot 2.00972890000E-13 -> 4.48300E-7
-sqtx8194 squareroot 4.07222659600E-13 -> 6.38140E-7
-sqtx8195 squareroot 131486012100 -> 362610
-sqtx8196 squareroot 818192611600 -> 904540
-sqtx8197 squareroot 9.8558323600E+16 -> 3.13940E+8
-sqtx8198 squareroot 5641.06144900 -> 75.1070
-sqtx8199 squareroot 4.58789475600E+17 -> 6.77340E+8
-sqtx8200 squareroot 3.21386948100E-9 -> 0.0000566910
-sqtx8201 squareroot 3.9441960000E-8 -> 0.000198600
-sqtx8202 squareroot 242723.728900 -> 492.670
-sqtx8203 squareroot 1874.89000000 -> 43.3000
-sqtx8204 squareroot 2.56722595684E+15 -> 5.06678E+7
-sqtx8205 squareroot 3.96437714689E-17 -> 6.29633E-9
-sqtx8206 squareroot 3.80106774784E-17 -> 6.16528E-9
-sqtx8207 squareroot 1.42403588496E-13 -> 3.77364E-7
-sqtx8208 squareroot 4604.84388100 -> 67.8590
-sqtx8209 squareroot 2157100869.16 -> 46444.6
-sqtx8210 squareroot 355288570.81 -> 18849.1
-sqtx8211 squareroot 4.69775901604E-11 -> 0.00000685402
-sqtx8212 squareroot 8.22115770436E+17 -> 9.06706E+8
-sqtx8213 squareroot 7.16443744900E+15 -> 8.46430E+7
-sqtx8214 squareroot 9.48995498896E+15 -> 9.74164E+7
-sqtx8215 squareroot 0.0000419091801129 -> 0.00647373
-sqtx8216 squareroot 5862627996.84 -> 76567.8
-sqtx8217 squareroot 9369537.3409 -> 3060.97
-sqtx8218 squareroot 7.74792529729E+17 -> 8.80223E+8
-sqtx8219 squareroot 1.08626931396E+17 -> 3.29586E+8
-sqtx8220 squareroot 8.89584739684E-7 -> 0.000943178
-sqtx8221 squareroot 4.0266040896E-18 -> 2.00664E-9
-sqtx8222 squareroot 9.27669480336E-7 -> 0.000963156
-sqtx8223 squareroot 0.00225497717956 -> 0.0474866
-
--- test use of round-half-even for ties
-precision: 1
-sqtx8224 squareroot 225 -> 2E+1 Inexact Rounded
-sqtx8225 squareroot 625 -> 2E+1 Inexact Rounded
-sqtx8226 squareroot 1225 -> 4E+1 Inexact Rounded
-sqtx8227 squareroot 2025 -> 4E+1 Inexact Rounded
-sqtx8228 squareroot 3025 -> 6E+1 Inexact Rounded
-sqtx8229 squareroot 4225 -> 6E+1 Inexact Rounded
-sqtx8230 squareroot 5625 -> 8E+1 Inexact Rounded
-sqtx8231 squareroot 7225 -> 8E+1 Inexact Rounded
-sqtx8232 squareroot 9025 -> 1E+2 Inexact Rounded
-
-precision: 2
-sqtx8233 squareroot 11025 -> 1.0E+2 Inexact Rounded
-sqtx8234 squareroot 13225 -> 1.2E+2 Inexact Rounded
-sqtx8235 squareroot 15625 -> 1.2E+2 Inexact Rounded
-sqtx8236 squareroot 18225 -> 1.4E+2 Inexact Rounded
-sqtx8237 squareroot 21025 -> 1.4E+2 Inexact Rounded
-sqtx8238 squareroot 24025 -> 1.6E+2 Inexact Rounded
-sqtx8239 squareroot 27225 -> 1.6E+2 Inexact Rounded
-sqtx8240 squareroot 30625 -> 1.8E+2 Inexact Rounded
-sqtx8241 squareroot 34225 -> 1.8E+2 Inexact Rounded
-sqtx8242 squareroot 38025 -> 2.0E+2 Inexact Rounded
-sqtx8243 squareroot 42025 -> 2.0E+2 Inexact Rounded
-sqtx8244 squareroot 46225 -> 2.2E+2 Inexact Rounded
-sqtx8245 squareroot 50625 -> 2.2E+2 Inexact Rounded
-sqtx8246 squareroot 55225 -> 2.4E+2 Inexact Rounded
-sqtx8247 squareroot 60025 -> 2.4E+2 Inexact Rounded
-sqtx8248 squareroot 65025 -> 2.6E+2 Inexact Rounded
-sqtx8249 squareroot 70225 -> 2.6E+2 Inexact Rounded
-sqtx8250 squareroot 75625 -> 2.8E+2 Inexact Rounded
-sqtx8251 squareroot 81225 -> 2.8E+2 Inexact Rounded
-sqtx8252 squareroot 87025 -> 3.0E+2 Inexact Rounded
-sqtx8253 squareroot 93025 -> 3.0E+2 Inexact Rounded
-sqtx8254 squareroot 99225 -> 3.2E+2 Inexact Rounded
-sqtx8255 squareroot 105625 -> 3.2E+2 Inexact Rounded
-sqtx8256 squareroot 112225 -> 3.4E+2 Inexact Rounded
-sqtx8257 squareroot 119025 -> 3.4E+2 Inexact Rounded
-sqtx8258 squareroot 126025 -> 3.6E+2 Inexact Rounded
-sqtx8259 squareroot 133225 -> 3.6E+2 Inexact Rounded
-sqtx8260 squareroot 140625 -> 3.8E+2 Inexact Rounded
-sqtx8261 squareroot 148225 -> 3.8E+2 Inexact Rounded
-sqtx8262 squareroot 156025 -> 4.0E+2 Inexact Rounded
-sqtx8263 squareroot 164025 -> 4.0E+2 Inexact Rounded
-sqtx8264 squareroot 172225 -> 4.2E+2 Inexact Rounded
-sqtx8265 squareroot 180625 -> 4.2E+2 Inexact Rounded
-sqtx8266 squareroot 189225 -> 4.4E+2 Inexact Rounded
-sqtx8267 squareroot 198025 -> 4.4E+2 Inexact Rounded
-sqtx8268 squareroot 207025 -> 4.6E+2 Inexact Rounded
-sqtx8269 squareroot 216225 -> 4.6E+2 Inexact Rounded
-sqtx8270 squareroot 225625 -> 4.8E+2 Inexact Rounded
-sqtx8271 squareroot 235225 -> 4.8E+2 Inexact Rounded
-sqtx8272 squareroot 245025 -> 5.0E+2 Inexact Rounded
-sqtx8273 squareroot 255025 -> 5.0E+2 Inexact Rounded
-sqtx8274 squareroot 265225 -> 5.2E+2 Inexact Rounded
-sqtx8275 squareroot 275625 -> 5.2E+2 Inexact Rounded
-sqtx8276 squareroot 286225 -> 5.4E+2 Inexact Rounded
-sqtx8277 squareroot 297025 -> 5.4E+2 Inexact Rounded
-sqtx8278 squareroot 308025 -> 5.6E+2 Inexact Rounded
-sqtx8279 squareroot 319225 -> 5.6E+2 Inexact Rounded
-sqtx8280 squareroot 330625 -> 5.8E+2 Inexact Rounded
-sqtx8281 squareroot 342225 -> 5.8E+2 Inexact Rounded
-sqtx8282 squareroot 354025 -> 6.0E+2 Inexact Rounded
-sqtx8283 squareroot 366025 -> 6.0E+2 Inexact Rounded
-sqtx8284 squareroot 378225 -> 6.2E+2 Inexact Rounded
-sqtx8285 squareroot 390625 -> 6.2E+2 Inexact Rounded
-sqtx8286 squareroot 403225 -> 6.4E+2 Inexact Rounded
-sqtx8287 squareroot 416025 -> 6.4E+2 Inexact Rounded
-sqtx8288 squareroot 429025 -> 6.6E+2 Inexact Rounded
-sqtx8289 squareroot 442225 -> 6.6E+2 Inexact Rounded
-sqtx8290 squareroot 455625 -> 6.8E+2 Inexact Rounded
-sqtx8291 squareroot 469225 -> 6.8E+2 Inexact Rounded
-sqtx8292 squareroot 483025 -> 7.0E+2 Inexact Rounded
-sqtx8293 squareroot 497025 -> 7.0E+2 Inexact Rounded
-sqtx8294 squareroot 511225 -> 7.2E+2 Inexact Rounded
-sqtx8295 squareroot 525625 -> 7.2E+2 Inexact Rounded
-sqtx8296 squareroot 540225 -> 7.4E+2 Inexact Rounded
-sqtx8297 squareroot 555025 -> 7.4E+2 Inexact Rounded
-sqtx8298 squareroot 570025 -> 7.6E+2 Inexact Rounded
-sqtx8299 squareroot 585225 -> 7.6E+2 Inexact Rounded
-sqtx8300 squareroot 600625 -> 7.8E+2 Inexact Rounded
-sqtx8301 squareroot 616225 -> 7.8E+2 Inexact Rounded
-sqtx8302 squareroot 632025 -> 8.0E+2 Inexact Rounded
-sqtx8303 squareroot 648025 -> 8.0E+2 Inexact Rounded
-sqtx8304 squareroot 664225 -> 8.2E+2 Inexact Rounded
-sqtx8305 squareroot 680625 -> 8.2E+2 Inexact Rounded
-sqtx8306 squareroot 697225 -> 8.4E+2 Inexact Rounded
-sqtx8307 squareroot 714025 -> 8.4E+2 Inexact Rounded
-sqtx8308 squareroot 731025 -> 8.6E+2 Inexact Rounded
-sqtx8309 squareroot 748225 -> 8.6E+2 Inexact Rounded
-sqtx8310 squareroot 765625 -> 8.8E+2 Inexact Rounded
-sqtx8311 squareroot 783225 -> 8.8E+2 Inexact Rounded
-sqtx8312 squareroot 801025 -> 9.0E+2 Inexact Rounded
-sqtx8313 squareroot 819025 -> 9.0E+2 Inexact Rounded
-sqtx8314 squareroot 837225 -> 9.2E+2 Inexact Rounded
-sqtx8315 squareroot 855625 -> 9.2E+2 Inexact Rounded
-sqtx8316 squareroot 874225 -> 9.4E+2 Inexact Rounded
-sqtx8317 squareroot 893025 -> 9.4E+2 Inexact Rounded
-sqtx8318 squareroot 912025 -> 9.6E+2 Inexact Rounded
-sqtx8319 squareroot 931225 -> 9.6E+2 Inexact Rounded
-sqtx8320 squareroot 950625 -> 9.8E+2 Inexact Rounded
-sqtx8321 squareroot 970225 -> 9.8E+2 Inexact Rounded
-sqtx8322 squareroot 990025 -> 1.0E+3 Inexact Rounded
-
-precision: 6
-sqtx8323 squareroot 88975734963025 -> 9.43270E+6 Inexact Rounded
-sqtx8324 squareroot 71085555000625 -> 8.43122E+6 Inexact Rounded
-sqtx8325 squareroot 39994304.051025 -> 6324.10 Inexact Rounded
-sqtx8326 squareroot 0.000007327172265625 -> 0.00270688 Inexact Rounded
-sqtx8327 squareroot 1.0258600439025E-13 -> 3.20290E-7 Inexact Rounded
-sqtx8328 squareroot 0.0034580574275625 -> 0.0588052 Inexact Rounded
-sqtx8329 squareroot 7.6842317700625E-7 -> 0.000876598 Inexact Rounded
-sqtx8330 squareroot 1263834495.2025 -> 35550.4 Inexact Rounded
-sqtx8331 squareroot 433970666460.25 -> 658764 Inexact Rounded
-sqtx8332 squareroot 4.5879286230625E-7 -> 0.000677342 Inexact Rounded
-sqtx8333 squareroot 0.0029305603306225 -> 0.0541346 Inexact Rounded
-sqtx8334 squareroot 70218282.733225 -> 8379.64 Inexact Rounded
-sqtx8335 squareroot 11942519.082025 -> 3455.80 Inexact Rounded
-sqtx8336 squareroot 0.0021230668905625 -> 0.0460768 Inexact Rounded
-sqtx8337 squareroot 0.90081833411025 -> 0.949114 Inexact Rounded
-sqtx8338 squareroot 5.5104120936225E-17 -> 7.42322E-9 Inexact Rounded
-sqtx8339 squareroot 0.10530446854225 -> 0.324506 Inexact Rounded
-sqtx8340 squareroot 8.706069866025E-14 -> 2.95060E-7 Inexact Rounded
-sqtx8341 squareroot 23838.58800625 -> 154.398 Inexact Rounded
-sqtx8342 squareroot 0.0013426911275625 -> 0.0366428 Inexact Rounded
-
--- test use of round-half-even in underflow situations
-
--- precisions 2; all cases where result is both subnormal and a tie
-precision: 2
-sqtx8343 squareroot 2.5E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped
-sqtx8344 squareroot 2.25E-20 -> 2E-10 Underflow Subnormal Inexact Rounded
-sqtx8345 squareroot 6.25E-20 -> 2E-10 Underflow Subnormal Inexact Rounded
-sqtx8346 squareroot 1.225E-19 -> 4E-10 Underflow Subnormal Inexact Rounded
-sqtx8347 squareroot 2.025E-19 -> 4E-10 Underflow Subnormal Inexact Rounded
-sqtx8348 squareroot 3.025E-19 -> 6E-10 Underflow Subnormal Inexact Rounded
-sqtx8349 squareroot 4.225E-19 -> 6E-10 Underflow Subnormal Inexact Rounded
-sqtx8350 squareroot 5.625E-19 -> 8E-10 Underflow Subnormal Inexact Rounded
-sqtx8351 squareroot 7.225E-19 -> 8E-10 Underflow Subnormal Inexact Rounded
-sqtx8352 squareroot 9.025E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
-
--- precision 3, input precision <= 5
-precision: 3
-sqtx8353 squareroot 2.5E-23 -> 0E-11 Underflow Subnormal Inexact Rounded Clamped
-sqtx8354 squareroot 2.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded
-sqtx8355 squareroot 6.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded
-sqtx8356 squareroot 1.225E-21 -> 4E-11 Underflow Subnormal Inexact Rounded
-sqtx8357 squareroot 2.025E-21 -> 4E-11 Underflow Subnormal Inexact Rounded
-sqtx8358 squareroot 3.025E-21 -> 6E-11 Underflow Subnormal Inexact Rounded
-sqtx8359 squareroot 4.225E-21 -> 6E-11 Underflow Subnormal Inexact Rounded
-sqtx8360 squareroot 5.625E-21 -> 8E-11 Underflow Subnormal Inexact Rounded
-sqtx8361 squareroot 7.225E-21 -> 8E-11 Underflow Subnormal Inexact Rounded
-sqtx8362 squareroot 9.025E-21 -> 1.0E-10 Underflow Subnormal Inexact Rounded
-sqtx8363 squareroot 1.1025E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded
-sqtx8364 squareroot 1.3225E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded
-sqtx8365 squareroot 1.5625E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded
-sqtx8366 squareroot 1.8225E-20 -> 1.4E-10 Underflow Subnormal Inexact Rounded
-sqtx8367 squareroot 2.1025E-20 -> 1.4E-10 Underflow Subnormal Inexact Rounded
-sqtx8368 squareroot 2.4025E-20 -> 1.6E-10 Underflow Subnormal Inexact Rounded
-sqtx8369 squareroot 2.7225E-20 -> 1.6E-10 Underflow Subnormal Inexact Rounded
-sqtx8370 squareroot 3.0625E-20 -> 1.8E-10 Underflow Subnormal Inexact Rounded
-sqtx8371 squareroot 3.4225E-20 -> 1.8E-10 Underflow Subnormal Inexact Rounded
-sqtx8372 squareroot 3.8025E-20 -> 2.0E-10 Underflow Subnormal Inexact Rounded
-sqtx8373 squareroot 4.2025E-20 -> 2.0E-10 Underflow Subnormal Inexact Rounded
-sqtx8374 squareroot 4.6225E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded
-sqtx8375 squareroot 5.0625E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded
-sqtx8376 squareroot 5.5225E-20 -> 2.4E-10 Underflow Subnormal Inexact Rounded
-sqtx8377 squareroot 6.0025E-20 -> 2.4E-10 Underflow Subnormal Inexact Rounded
-sqtx8378 squareroot 6.5025E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded
-sqtx8379 squareroot 7.0225E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded
-sqtx8380 squareroot 7.5625E-20 -> 2.8E-10 Underflow Subnormal Inexact Rounded
-sqtx8381 squareroot 8.1225E-20 -> 2.8E-10 Underflow Subnormal Inexact Rounded
-sqtx8382 squareroot 8.7025E-20 -> 3.0E-10 Underflow Subnormal Inexact Rounded
-sqtx8383 squareroot 9.3025E-20 -> 3.0E-10 Underflow Subnormal Inexact Rounded
-sqtx8384 squareroot 9.9225E-20 -> 3.2E-10 Underflow Subnormal Inexact Rounded
-
---precision 4, input precision <= 4
-precision: 4
-sqtx8385 squareroot 2.5E-25 -> 0E-12 Underflow Subnormal Inexact Rounded Clamped
-sqtx8386 squareroot 2.25E-24 -> 2E-12 Underflow Subnormal Inexact Rounded
-sqtx8387 squareroot 6.25E-24 -> 2E-12 Underflow Subnormal Inexact Rounded
-sqtx8388 squareroot 1.225E-23 -> 4E-12 Underflow Subnormal Inexact Rounded
-sqtx8389 squareroot 2.025E-23 -> 4E-12 Underflow Subnormal Inexact Rounded
-sqtx8390 squareroot 3.025E-23 -> 6E-12 Underflow Subnormal Inexact Rounded
-sqtx8391 squareroot 4.225E-23 -> 6E-12 Underflow Subnormal Inexact Rounded
-sqtx8392 squareroot 5.625E-23 -> 8E-12 Underflow Subnormal Inexact Rounded
-sqtx8393 squareroot 7.225E-23 -> 8E-12 Underflow Subnormal Inexact Rounded
-sqtx8394 squareroot 9.025E-23 -> 1.0E-11 Underflow Subnormal Inexact Rounded
-
---precision 5, input precision <= 5
-precision: 5
-sqtx8395 squareroot 2.5E-27 -> 0E-13 Underflow Subnormal Inexact Rounded  Clamped
-sqtx8396 squareroot 2.25E-26 -> 2E-13 Underflow Subnormal Inexact Rounded
-sqtx8397 squareroot 6.25E-26 -> 2E-13 Underflow Subnormal Inexact Rounded
-sqtx8398 squareroot 1.225E-25 -> 4E-13 Underflow Subnormal Inexact Rounded
-sqtx8399 squareroot 2.025E-25 -> 4E-13 Underflow Subnormal Inexact Rounded
-sqtx8400 squareroot 3.025E-25 -> 6E-13 Underflow Subnormal Inexact Rounded
-sqtx8401 squareroot 4.225E-25 -> 6E-13 Underflow Subnormal Inexact Rounded
-sqtx8402 squareroot 5.625E-25 -> 8E-13 Underflow Subnormal Inexact Rounded
-sqtx8403 squareroot 7.225E-25 -> 8E-13 Underflow Subnormal Inexact Rounded
-sqtx8404 squareroot 9.025E-25 -> 1.0E-12 Underflow Subnormal Inexact Rounded
-sqtx8405 squareroot 1.1025E-24 -> 1.0E-12 Underflow Subnormal Inexact Rounded
-sqtx8406 squareroot 1.3225E-24 -> 1.2E-12 Underflow Subnormal Inexact Rounded
-sqtx8407 squareroot 1.5625E-24 -> 1.2E-12 Underflow Subnormal Inexact Rounded
-sqtx8408 squareroot 1.8225E-24 -> 1.4E-12 Underflow Subnormal Inexact Rounded
-sqtx8409 squareroot 2.1025E-24 -> 1.4E-12 Underflow Subnormal Inexact Rounded
-sqtx8410 squareroot 2.4025E-24 -> 1.6E-12 Underflow Subnormal Inexact Rounded
-sqtx8411 squareroot 2.7225E-24 -> 1.6E-12 Underflow Subnormal Inexact Rounded
-sqtx8412 squareroot 3.0625E-24 -> 1.8E-12 Underflow Subnormal Inexact Rounded
-sqtx8413 squareroot 3.4225E-24 -> 1.8E-12 Underflow Subnormal Inexact Rounded
-sqtx8414 squareroot 3.8025E-24 -> 2.0E-12 Underflow Subnormal Inexact Rounded
-sqtx8415 squareroot 4.2025E-24 -> 2.0E-12 Underflow Subnormal Inexact Rounded
-sqtx8416 squareroot 4.6225E-24 -> 2.2E-12 Underflow Subnormal Inexact Rounded
-sqtx8417 squareroot 5.0625E-24 -> 2.2E-12 Underflow Subnormal Inexact Rounded
-sqtx8418 squareroot 5.5225E-24 -> 2.4E-12 Underflow Subnormal Inexact Rounded
-sqtx8419 squareroot 6.0025E-24 -> 2.4E-12 Underflow Subnormal Inexact Rounded
-sqtx8420 squareroot 6.5025E-24 -> 2.6E-12 Underflow Subnormal Inexact Rounded
-sqtx8421 squareroot 7.0225E-24 -> 2.6E-12 Underflow Subnormal Inexact Rounded
-sqtx8422 squareroot 7.5625E-24 -> 2.8E-12 Underflow Subnormal Inexact Rounded
-sqtx8423 squareroot 8.1225E-24 -> 2.8E-12 Underflow Subnormal Inexact Rounded
-sqtx8424 squareroot 8.7025E-24 -> 3.0E-12 Underflow Subnormal Inexact Rounded
-sqtx8425 squareroot 9.3025E-24 -> 3.0E-12 Underflow Subnormal Inexact Rounded
-sqtx8426 squareroot 9.9225E-24 -> 3.2E-12 Underflow Subnormal Inexact Rounded
-
--- a random selection of values that Python2.5.1 rounds incorrectly
-precision: 1
-sqtx8427 squareroot 227 -> 2E+1 Inexact Rounded
-sqtx8428 squareroot 625 -> 2E+1 Inexact Rounded
-sqtx8429 squareroot 1215 -> 3E+1 Inexact Rounded
-sqtx8430 squareroot 2008 -> 4E+1 Inexact Rounded
-sqtx8431 squareroot 2020 -> 4E+1 Inexact Rounded
-sqtx8432 squareroot 2026 -> 5E+1 Inexact Rounded
-sqtx8433 squareroot 2027 -> 5E+1 Inexact Rounded
-sqtx8434 squareroot 2065 -> 5E+1 Inexact Rounded
-sqtx8435 squareroot 2075 -> 5E+1 Inexact Rounded
-sqtx8436 squareroot 2088 -> 5E+1 Inexact Rounded
-sqtx8437 squareroot 3049 -> 6E+1 Inexact Rounded
-sqtx8438 squareroot 3057 -> 6E+1 Inexact Rounded
-sqtx8439 squareroot 3061 -> 6E+1 Inexact Rounded
-sqtx8440 squareroot 3092 -> 6E+1 Inexact Rounded
-sqtx8441 squareroot 4222 -> 6E+1 Inexact Rounded
-sqtx8442 squareroot 5676 -> 8E+1 Inexact Rounded
-sqtx8443 squareroot 5686 -> 8E+1 Inexact Rounded
-sqtx8444 squareroot 7215 -> 8E+1 Inexact Rounded
-sqtx8445 squareroot 9086 -> 1E+2 Inexact Rounded
-sqtx8446 squareroot 9095 -> 1E+2 Inexact Rounded
-
-precision: 2
-sqtx8447 squareroot 1266 -> 36 Inexact Rounded
-sqtx8448 squareroot 2552 -> 51 Inexact Rounded
-sqtx8449 squareroot 5554 -> 75 Inexact Rounded
-sqtx8450 squareroot 7832 -> 88 Inexact Rounded
-sqtx8451 squareroot 13201 -> 1.1E+2 Inexact Rounded
-sqtx8452 squareroot 15695 -> 1.3E+2 Inexact Rounded
-sqtx8453 squareroot 18272 -> 1.4E+2 Inexact Rounded
-sqtx8454 squareroot 21026 -> 1.5E+2 Inexact Rounded
-sqtx8455 squareroot 24069 -> 1.6E+2 Inexact Rounded
-sqtx8456 squareroot 34277 -> 1.9E+2 Inexact Rounded
-sqtx8457 squareroot 46233 -> 2.2E+2 Inexact Rounded
-sqtx8458 squareroot 46251 -> 2.2E+2 Inexact Rounded
-sqtx8459 squareroot 46276 -> 2.2E+2 Inexact Rounded
-sqtx8460 squareroot 70214 -> 2.6E+2 Inexact Rounded
-sqtx8461 squareroot 81249 -> 2.9E+2 Inexact Rounded
-sqtx8462 squareroot 81266 -> 2.9E+2 Inexact Rounded
-sqtx8463 squareroot 93065 -> 3.1E+2 Inexact Rounded
-sqtx8464 squareroot 93083 -> 3.1E+2 Inexact Rounded
-sqtx8465 squareroot 99230 -> 3.2E+2 Inexact Rounded
-sqtx8466 squareroot 99271 -> 3.2E+2 Inexact Rounded
-
-precision: 3
-sqtx8467 squareroot 11349 -> 107 Inexact Rounded
-sqtx8468 squareroot 26738 -> 164 Inexact Rounded
-sqtx8469 squareroot 31508 -> 178 Inexact Rounded
-sqtx8470 squareroot 44734 -> 212 Inexact Rounded
-sqtx8471 squareroot 44738 -> 212 Inexact Rounded
-sqtx8472 squareroot 51307 -> 227 Inexact Rounded
-sqtx8473 squareroot 62259 -> 250 Inexact Rounded
-sqtx8474 squareroot 75901 -> 276 Inexact Rounded
-sqtx8475 squareroot 76457 -> 277 Inexact Rounded
-sqtx8476 squareroot 180287 -> 425 Inexact Rounded
-sqtx8477 squareroot 202053 -> 450 Inexact Rounded
-sqtx8478 squareroot 235747 -> 486 Inexact Rounded
-sqtx8479 squareroot 256537 -> 506 Inexact Rounded
-sqtx8480 squareroot 299772 -> 548 Inexact Rounded
-sqtx8481 squareroot 415337 -> 644 Inexact Rounded
-sqtx8482 squareroot 617067 -> 786 Inexact Rounded
-sqtx8483 squareroot 628022 -> 792 Inexact Rounded
-sqtx8484 squareroot 645629 -> 804 Inexact Rounded
-sqtx8485 squareroot 785836 -> 886 Inexact Rounded
-sqtx8486 squareroot 993066 -> 997 Inexact Rounded
-
-precision: 6
-sqtx8487 squareroot 14917781 -> 3862.35 Inexact Rounded
-sqtx8488 squareroot 17237238 -> 4151.78 Inexact Rounded
-sqtx8489 squareroot 18054463 -> 4249.05 Inexact Rounded
-sqtx8490 squareroot 19990694 -> 4471.10 Inexact Rounded
-sqtx8491 squareroot 29061855 -> 5390.90 Inexact Rounded
-sqtx8492 squareroot 49166257 -> 7011.87 Inexact Rounded
-sqtx8493 squareroot 53082086 -> 7285.75 Inexact Rounded
-sqtx8494 squareroot 56787909 -> 7535.78 Inexact Rounded
-sqtx8495 squareroot 81140019 -> 9007.78 Inexact Rounded
-sqtx8496 squareroot 87977554 -> 9379.64 Inexact Rounded
-sqtx8497 squareroot 93624683 -> 9675.98 Inexact Rounded
-sqtx8498 squareroot 98732747 -> 9936.44 Inexact Rounded
-sqtx8499 squareroot 99222813 -> 9961.06 Inexact Rounded
-sqtx8500 squareroot 143883626 -> 11995.2 Inexact Rounded
-sqtx8501 squareroot 180433301 -> 13432.5 Inexact Rounded
-sqtx8502 squareroot 227034020 -> 15067.6 Inexact Rounded
-sqtx8503 squareroot 283253992 -> 16830.2 Inexact Rounded
-sqtx8504 squareroot 617047954 -> 24840.4 Inexact Rounded
-sqtx8505 squareroot 736870094 -> 27145.4 Inexact Rounded
-sqtx8506 squareroot 897322915 -> 29955.3 Inexact Rounded
-
--- results close to minimum normal
-precision: 1
-sqtx8507 squareroot 1E-20 -> 0E-9 Underflow Subnormal Inexact Rounded Clamped
-sqtx8508 squareroot 1E-19 -> 0E-9 Underflow Subnormal Inexact Rounded Clamped
-sqtx8509 squareroot 1E-18 -> 1E-9
-
-precision: 2
-sqtx8510 squareroot 8.1E-19 -> 9E-10 Subnormal
-sqtx8511 squareroot 8.10E-19 -> 9E-10 Subnormal Rounded
-sqtx8512 squareroot 9.0E-19 -> 9E-10 Underflow Subnormal Inexact Rounded
-sqtx8513 squareroot 9.02E-19 -> 9E-10 Underflow Subnormal Inexact Rounded
-sqtx8514 squareroot 9.03E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
-sqtx8515 squareroot 9.1E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
-sqtx8516 squareroot 9.9E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
-sqtx8517 squareroot 9.91E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
-sqtx8518 squareroot 9.92E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
-sqtx8519 squareroot 9.95E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
-sqtx8520 squareroot 9.98E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
-sqtx8521 squareroot 9.99E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
-sqtx8522 squareroot 1E-18 -> 1E-9
-sqtx8523 squareroot 1.0E-18 -> 1.0E-9
-sqtx8524 squareroot 1.00E-18 -> 1.0E-9
-sqtx8525 squareroot 1.000E-18 -> 1.0E-9 Rounded
-sqtx8526 squareroot 1.0000E-18 -> 1.0E-9 Rounded
-sqtx8527 squareroot 1.01E-18 -> 1.0E-9 Inexact Rounded
-sqtx8528 squareroot 1.02E-18 -> 1.0E-9 Inexact Rounded
-sqtx8529 squareroot 1.1E-18 -> 1.0E-9 Inexact Rounded
-
-precision: 3
-sqtx8530 squareroot 8.1E-19 -> 9E-10 Subnormal
-sqtx8531 squareroot 8.10E-19 -> 9.0E-10 Subnormal
-sqtx8532 squareroot 8.100E-19 -> 9.0E-10 Subnormal
-sqtx8533 squareroot 8.1000E-19 -> 9.0E-10 Subnormal Rounded
-sqtx8534 squareroot 9.9E-19 -> 9.9E-10 Underflow Subnormal Inexact Rounded
-sqtx8535 squareroot 9.91E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded
-sqtx8536 squareroot 9.99E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded
-sqtx8537 squareroot 9.998E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded
-sqtx8538 squareroot 1E-18 -> 1E-9
-sqtx8539 squareroot 1.0E-18 -> 1.0E-9
-sqtx8540 squareroot 1.00E-18 -> 1.0E-9
-sqtx8541 squareroot 1.000E-18 -> 1.00E-9
-sqtx8542 squareroot 1.0000E-18 -> 1.00E-9
-sqtx8543 squareroot 1.00000E-18 -> 1.00E-9 Rounded
-sqtx8544 squareroot 1.000000E-18 -> 1.00E-9 Rounded
-sqtx8545 squareroot 1.01E-18 -> 1.00E-9 Inexact Rounded
-sqtx8546 squareroot 1.02E-18 -> 1.01E-9 Inexact Rounded
-
--- result exactly representable with precision p, but not necessarily
--- exactly representable as a subnormal;  check the correct flags are raised
-precision: 2
-sqtx8547 squareroot 1.21E-20 -> 1E-10 Underflow Subnormal Inexact Rounded
-sqtx8548 squareroot 1.44E-20 -> 1E-10 Underflow Subnormal Inexact Rounded
-sqtx8549 squareroot 9.61E-20 -> 3E-10 Underflow Subnormal Inexact Rounded
-sqtx8550 squareroot 8.836E-19 -> 9E-10 Underflow Subnormal Inexact Rounded
-sqtx8551 squareroot 9.216E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
-
-precision: 3
-sqtx8552 squareroot 1.21E-22 -> 1E-11 Underflow Subnormal Inexact Rounded
-sqtx8553 squareroot 1.21E-20 -> 1.1E-10 Subnormal
-sqtx8554 squareroot 1.96E-22 -> 1E-11 Underflow Subnormal Inexact Rounded
-sqtx8555 squareroot 1.96E-20 -> 1.4E-10 Subnormal
-sqtx8556 squareroot 2.56E-22 -> 2E-11 Underflow Subnormal Inexact Rounded
-sqtx8557 squareroot 4.00E-22 -> 2E-11 Subnormal Rounded
-sqtx8558 squareroot 7.84E-22 -> 3E-11 Underflow Subnormal Inexact Rounded
-sqtx8559 squareroot 9.801E-21 -> 1.0E-10 Underflow Subnormal Inexact Rounded
-sqtx8560 squareroot 9.801E-19 -> 9.9E-10 Subnormal
-sqtx8561 squareroot 1.0201E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded
-sqtx8562 squareroot 1.1025E-20 -> 1.0E-10 Underflow Subnormal Inexact Rounded
-sqtx8563 squareroot 1.1236E-20 -> 1.1E-10 Underflow Subnormal Inexact Rounded
-sqtx8564 squareroot 1.2996E-20 -> 1.1E-10 Underflow Subnormal Inexact Rounded
-sqtx8565 squareroot 1.3225E-20 -> 1.2E-10 Underflow Subnormal Inexact Rounded
-
--- A selection of subnormal results prone to double rounding errors
-precision: 2
-sqtx8566 squareroot 2.3E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped
-sqtx8567 squareroot 2.4E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped
-sqtx8568 squareroot 2.5E-21 -> 0E-10 Underflow Subnormal Inexact Rounded Clamped
-sqtx8569 squareroot 2.6E-21 -> 1E-10 Underflow Subnormal Inexact Rounded
-sqtx8570 squareroot 2.7E-21 -> 1E-10 Underflow Subnormal Inexact Rounded
-sqtx8571 squareroot 2.8E-21 -> 1E-10 Underflow Subnormal Inexact Rounded
-sqtx8572 squareroot 2.2E-20 -> 1E-10 Underflow Subnormal Inexact Rounded
-sqtx8573 squareroot 2.3E-20 -> 2E-10 Underflow Subnormal Inexact Rounded
-sqtx8574 squareroot 2.4E-20 -> 2E-10 Underflow Subnormal Inexact Rounded
-sqtx8575 squareroot 6.2E-20 -> 2E-10 Underflow Subnormal Inexact Rounded
-sqtx8576 squareroot 6.3E-20 -> 3E-10 Underflow Subnormal Inexact Rounded
-sqtx8577 squareroot 6.4E-20 -> 3E-10 Underflow Subnormal Inexact Rounded
-sqtx8578 squareroot 6.5E-20 -> 3E-10 Underflow Subnormal Inexact Rounded
-sqtx8579 squareroot 1.2E-19 -> 3E-10 Underflow Subnormal Inexact Rounded
-sqtx8580 squareroot 2.0E-19 -> 4E-10 Underflow Subnormal Inexact Rounded
-sqtx8581 squareroot 4.2E-19 -> 6E-10 Underflow Subnormal Inexact Rounded
-sqtx8582 squareroot 5.6E-19 -> 7E-10 Underflow Subnormal Inexact Rounded
-sqtx8583 squareroot 5.7E-19 -> 8E-10 Underflow Subnormal Inexact Rounded
-sqtx8584 squareroot 9.0E-19 -> 9E-10 Underflow Subnormal Inexact Rounded
-sqtx8585 squareroot 9.1E-19 -> 1.0E-9 Underflow Subnormal Inexact Rounded
-precision: 3
-sqtx8586 squareroot 2.6E-23 -> 1E-11 Underflow Subnormal Inexact Rounded
-sqtx8587 squareroot 2.22E-22 -> 1E-11 Underflow Subnormal Inexact Rounded
-sqtx8588 squareroot 6.07E-22 -> 2E-11 Underflow Subnormal Inexact Rounded
-sqtx8589 squareroot 6.25E-22 -> 2E-11 Underflow Subnormal Inexact Rounded
-sqtx8590 squareroot 6.45E-22 -> 3E-11 Underflow Subnormal Inexact Rounded
-sqtx8591 squareroot 6.50E-22 -> 3E-11 Underflow Subnormal Inexact Rounded
-sqtx8592 squareroot 1.22E-21 -> 3E-11 Underflow Subnormal Inexact Rounded
-sqtx8593 squareroot 1.24E-21 -> 4E-11 Underflow Subnormal Inexact Rounded
-sqtx8594 squareroot 4.18E-21 -> 6E-11 Underflow Subnormal Inexact Rounded
-sqtx8595 squareroot 7.19E-21 -> 8E-11 Underflow Subnormal Inexact Rounded
-sqtx8596 squareroot 8.94E-21 -> 9E-11 Underflow Subnormal Inexact Rounded
-sqtx8597 squareroot 1.81E-20 -> 1.3E-10 Underflow Subnormal Inexact Rounded
-sqtx8598 squareroot 4.64E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded
-sqtx8599 squareroot 5.06E-20 -> 2.2E-10 Underflow Subnormal Inexact Rounded
-sqtx8600 squareroot 5.08E-20 -> 2.3E-10 Underflow Subnormal Inexact Rounded
-sqtx8601 squareroot 7.00E-20 -> 2.6E-10 Underflow Subnormal Inexact Rounded
-sqtx8602 squareroot 1.81E-19 -> 4.3E-10 Underflow Subnormal Inexact Rounded
-sqtx8603 squareroot 6.64E-19 -> 8.1E-10 Underflow Subnormal Inexact Rounded
-sqtx8604 squareroot 7.48E-19 -> 8.6E-10 Underflow Subnormal Inexact Rounded
-sqtx8605 squareroot 9.91E-19 -> 1.00E-9 Underflow Subnormal Inexact Rounded
-precision: 4
-sqtx8606 squareroot 6.24E-24 -> 2E-12 Underflow Subnormal Inexact Rounded
-sqtx8607 squareroot 7.162E-23 -> 8E-12 Underflow Subnormal Inexact Rounded
-sqtx8608 squareroot 7.243E-23 -> 9E-12 Underflow Subnormal Inexact Rounded
-sqtx8609 squareroot 8.961E-23 -> 9E-12 Underflow Subnormal Inexact Rounded
-sqtx8610 squareroot 9.029E-23 -> 1.0E-11 Underflow Subnormal Inexact Rounded
-sqtx8611 squareroot 4.624E-22 -> 2.2E-11 Underflow Subnormal Inexact Rounded
-sqtx8612 squareroot 5.980E-22 -> 2.4E-11 Underflow Subnormal Inexact Rounded
-sqtx8613 squareroot 6.507E-22 -> 2.6E-11 Underflow Subnormal Inexact Rounded
-sqtx8614 squareroot 1.483E-21 -> 3.9E-11 Underflow Subnormal Inexact Rounded
-sqtx8615 squareroot 3.903E-21 -> 6.2E-11 Underflow Subnormal Inexact Rounded
-sqtx8616 squareroot 8.733E-21 -> 9.3E-11 Underflow Subnormal Inexact Rounded
-sqtx8617 squareroot 1.781E-20 -> 1.33E-10 Underflow Subnormal Inexact Rounded
-sqtx8618 squareroot 6.426E-20 -> 2.53E-10 Underflow Subnormal Inexact Rounded
-sqtx8619 squareroot 7.102E-20 -> 2.66E-10 Underflow Subnormal Inexact Rounded
-sqtx8620 squareroot 7.535E-20 -> 2.74E-10 Underflow Subnormal Inexact Rounded
-sqtx8621 squareroot 9.892E-20 -> 3.15E-10 Underflow Subnormal Inexact Rounded
-sqtx8622 squareroot 1.612E-19 -> 4.01E-10 Underflow Subnormal Inexact Rounded
-sqtx8623 squareroot 1.726E-19 -> 4.15E-10 Underflow Subnormal Inexact Rounded
-sqtx8624 squareroot 1.853E-19 -> 4.30E-10 Underflow Subnormal Inexact Rounded
-sqtx8625 squareroot 4.245E-19 -> 6.52E-10 Underflow Subnormal Inexact Rounded
-
--- clamping and overflow for large exponents
-precision: 1
-sqtx8626 squareroot 1E+18 -> 1E+9
-sqtx8627 squareroot 1E+19 -> 3E+9 Inexact Rounded
--- in this next one, intermediate result is 9486832980.505137996...
--- so rounds down to 9 (not up to 10 which would cause Infinity overflow)
-sqtx8628 squareroot 9E+19 -> 9E+9 Inexact Rounded
-sqtx8629 squareroot 9.1E+19 -> Infinity Overflow Inexact Rounded
-sqtx8630 squareroot 1E+20 -> Infinity Overflow Inexact Rounded
-
-precision: 2
-sqtx8631 squareroot 1E+18 -> 1E+9
-sqtx8632 squareroot 1.0E+18 -> 1.0E+9
-sqtx8633 squareroot 1.00E+18 -> 1.0E+9
-sqtx8634 squareroot 1.000E+18 -> 1.0E+9 Rounded
-sqtx8635 squareroot 1E+20 -> Infinity Overflow Inexact Rounded
-clamp: 1
-sqtx8636 squareroot 1E+18 -> 1.0E+9 Clamped
-sqtx8637 squareroot 1.0E+18 -> 1.0E+9
-sqtx8638 squareroot 1E+20 -> Infinity Overflow Inexact Rounded
-clamp: 0
-
-precision: 6
-sqtx8639 squareroot 1E+18 -> 1E+9
-sqtx8640 squareroot 1.0000000000E+18 -> 1.00000E+9
-sqtx8641 squareroot 1.00000000000E+18 -> 1.00000E+9 Rounded
-sqtx8642 squareroot 1E+20 -> Infinity Overflow Inexact Rounded
-clamp: 1
-sqtx8643 squareroot 1E+8 -> 1E+4
-sqtx8644 squareroot 1E+10 -> 1.0E+5 Clamped
-sqtx8645 squareroot 1.0E+10 -> 1.0E+5
-sqtx8646 squareroot 1E+12 -> 1.00E+6 Clamped
-sqtx8647 squareroot 1.0E+12 -> 1.00E+6 Clamped
-sqtx8648 squareroot 1.00E+12 -> 1.00E+6 Clamped
-sqtx8649 squareroot 1.000E+12 -> 1.00E+6
-sqtx8650 squareroot 1E+18 -> 1.00000E+9 Clamped
-sqtx8651 squareroot 1.00000000E+18 -> 1.00000E+9 Clamped
-sqtx8652 squareroot 1.000000000E+18 -> 1.00000E+9
-sqtx8653 squareroot 1E+20 -> Infinity Overflow Inexact Rounded
-clamp: 0
-
--- The following example causes a TypeError in Python 2.5.1
-precision: 3
-maxexponent: 9
-minexponent: -9
-sqtx8654 squareroot 10000000000 -> 1.00E+5 Rounded
-
--- Additional tricky cases of underflown subnormals
-rounding: half_even
-precision: 5
-maxexponent: 999
-minexponent: -999
-sqtx8700 squareroot 2.8073E-2000 -> 1.675E-1000 Underflow Subnormal Inexact Rounded
-sqtx8701 squareroot 2.8883E-2000 -> 1.699E-1000 Underflow Subnormal Inexact Rounded
-sqtx8702 squareroot 3.1524E-2000 -> 1.775E-1000 Underflow Subnormal Inexact Rounded
-sqtx8703 squareroot 3.2382E-2000 -> 1.799E-1000 Underflow Subnormal Inexact Rounded
-sqtx8704 squareroot 3.5175E-2000 -> 1.875E-1000 Underflow Subnormal Inexact Rounded
-sqtx8705 squareroot 3.6081E-2000 -> 1.899E-1000 Underflow Subnormal Inexact Rounded
-sqtx8706 squareroot 3.9026E-2000 -> 1.975E-1000 Underflow Subnormal Inexact Rounded
-sqtx8707 squareroot 3.9980E-2000 -> 1.999E-1000 Underflow Subnormal Inexact Rounded
-sqtx8708 squareroot 4.3077E-2000 -> 2.075E-1000 Underflow Subnormal Inexact Rounded
-sqtx8709 squareroot 4.4079E-2000 -> 2.099E-1000 Underflow Subnormal Inexact Rounded
-sqtx8710 squareroot 4.7328E-2000 -> 2.175E-1000 Underflow Subnormal Inexact Rounded
-sqtx8711 squareroot 4.8378E-2000 -> 2.199E-1000 Underflow Subnormal Inexact Rounded
-sqtx8712 squareroot 5.1779E-2000 -> 2.275E-1000 Underflow Subnormal Inexact Rounded
-sqtx8713 squareroot 5.2877E-2000 -> 2.299E-1000 Underflow Subnormal Inexact Rounded
-sqtx8714 squareroot 5.6430E-2000 -> 2.375E-1000 Underflow Subnormal Inexact Rounded
-sqtx8715 squareroot 5.7576E-2000 -> 2.399E-1000 Underflow Subnormal Inexact Rounded
-sqtx8716 squareroot 6.1281E-2000 -> 2.475E-1000 Underflow Subnormal Inexact Rounded
-sqtx8717 squareroot 6.2475E-2000 -> 2.499E-1000 Underflow Subnormal Inexact Rounded
-sqtx8718 squareroot 6.6332E-2000 -> 2.575E-1000 Underflow Subnormal Inexact Rounded
-sqtx8719 squareroot 6.7574E-2000 -> 2.599E-1000 Underflow Subnormal Inexact Rounded
-sqtx8720 squareroot 7.1583E-2000 -> 2.675E-1000 Underflow Subnormal Inexact Rounded
-sqtx8721 squareroot 7.2873E-2000 -> 2.699E-1000 Underflow Subnormal Inexact Rounded
-sqtx8722 squareroot 7.7034E-2000 -> 2.775E-1000 Underflow Subnormal Inexact Rounded
-sqtx8723 squareroot 7.8372E-2000 -> 2.799E-1000 Underflow Subnormal Inexact Rounded
-sqtx8724 squareroot 8.2685E-2000 -> 2.875E-1000 Underflow Subnormal Inexact Rounded
-sqtx8725 squareroot 8.4071E-2000 -> 2.899E-1000 Underflow Subnormal Inexact Rounded
-sqtx8726 squareroot 8.8536E-2000 -> 2.975E-1000 Underflow Subnormal Inexact Rounded
-sqtx8727 squareroot 8.9970E-2000 -> 2.999E-1000 Underflow Subnormal Inexact Rounded
-sqtx8728 squareroot 9.4587E-2000 -> 3.075E-1000 Underflow Subnormal Inexact Rounded
-sqtx8729 squareroot 9.6069E-2000 -> 3.099E-1000 Underflow Subnormal Inexact Rounded
--- (End of Mark Dickinson's testcases.)
-
-
--- Some additional edge cases
-maxexponent: 9
-minexponent: -9
-precision: 2
-sqtx9000 squareroot 9980.01 -> 1.0E+2 Inexact Rounded
-precision: 3
-sqtx9001 squareroot 9980.01 -> 99.9
-precision: 4
-sqtx9002 squareroot 9980.01 -> 99.9
-
--- Exact from over-precise
-precision: 4
-sqtx9003 squareroot 11025   -> 105
-precision: 3
-sqtx9004 squareroot 11025   -> 105
-precision: 2
-sqtx9005 squareroot 11025   -> 1.0E+2  Inexact Rounded
-precision: 1
-sqtx9006 squareroot 11025   -> 1E+2    Inexact Rounded
-
--- an interesting case
-precision:   7
-sqtx9007 squareroot 1600000e1 -> 4000
-
--- Out-of-bounds zeros
-precision: 4
-sqtx9010 squareroot 0E-9  -> 0.00000
-sqtx9011 squareroot 0E-10 -> 0.00000
-sqtx9012 squareroot 0E-11 -> 0.000000
-sqtx9013 squareroot 0E-12 -> 0.000000
-sqtx9014 squareroot 0E-13 -> 0E-7
-sqtx9015 squareroot 0E-14 -> 0E-7
-sqtx9020 squareroot 0E-17 -> 0E-9
-sqtx9021 squareroot 0E-20 -> 0E-10
-sqtx9022 squareroot 0E-22 -> 0E-11
-sqtx9023 squareroot 0E-24 -> 0E-12
-sqtx9024 squareroot 0E-25 -> 0E-12 Clamped
-sqtx9025 squareroot 0E-26 -> 0E-12 Clamped
-sqtx9026 squareroot 0E-27 -> 0E-12 Clamped
-sqtx9027 squareroot 0E-28 -> 0E-12 Clamped
-
-sqtx9030 squareroot 0E+8  -> 0E+4
-sqtx9031 squareroot 0E+10 -> 0E+5
-sqtx9032 squareroot 0E+12 -> 0E+6
-sqtx9033 squareroot 0E+14 -> 0E+7
-sqtx9034 squareroot 0E+15 -> 0E+7
-sqtx9035 squareroot 0E+16 -> 0E+8
-sqtx9036 squareroot 0E+18 -> 0E+9
-sqtx9037 squareroot 0E+19 -> 0E+9
-sqtx9038 squareroot 0E+20 -> 0E+9 Clamped
-sqtx9039 squareroot 0E+21 -> 0E+9 Clamped
-sqtx9040 squareroot 0E+22 -> 0E+9 Clamped
-
--- if digits > emax maximum real exponent is negative
-maxexponent: 9
-minexponent: -9
-precision: 15
-clamp: 1
-sqtx9045 squareroot  1 -> 1.00000  Clamped
-
--- other
-maxexponent: 999
-minexponent: -999
-precision: 16
-sqtx9046 squareroot  10    -> 3.162277660168379          inexact rounded
-sqtx9047 squareroot  10E-1 -> 1.0
-sqtx9048 squareroot  10E-2 -> 0.3162277660168379         inexact rounded
-sqtx9049 squareroot  10E-3 -> 0.10
-
-
--- High-precision exact and inexact
-maxexponent: 999
-minexponent: -999
-precision: 400
-sqtx9050 squareroot 2 -> 1.414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641572735013846230912297024924836055850737212644121497099935831413222665927505592755799950501152782060571470109559971605970274534596862014728517418640889198609552329230484308714321450839762603627995251407989687253396546331808829640620615258352395054745750287759961729835575220337531857011354374603408498847 Inexact Rounded
-sqtx9051 squareroot 1089 -> 33
-sqtx9052 squareroot 10.89 -> 3.3
-
--- Null test
-sqtx9900 squareroot  # -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/subtract.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/subtract.decTest
deleted file mode 100644
index eaf9ab8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/subtract.decTest
+++ /dev/null
@@ -1,873 +0,0 @@
-------------------------------------------------------------------------
--- subtract.decTest -- decimal subtraction                            --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 384
-minexponent: -383
-
--- [first group are 'quick confidence check']
-subx001 subtract  0   0  -> '0'
-subx002 subtract  1   1  -> '0'
-subx003 subtract  1   2  -> '-1'
-subx004 subtract  2   1  -> '1'
-subx005 subtract  2   2  -> '0'
-subx006 subtract  3   2  -> '1'
-subx007 subtract  2   3  -> '-1'
-
-subx011 subtract -0   0  -> '-0'
-subx012 subtract -1   1  -> '-2'
-subx013 subtract -1   2  -> '-3'
-subx014 subtract -2   1  -> '-3'
-subx015 subtract -2   2  -> '-4'
-subx016 subtract -3   2  -> '-5'
-subx017 subtract -2   3  -> '-5'
-
-subx021 subtract  0  -0  -> '0'
-subx022 subtract  1  -1  -> '2'
-subx023 subtract  1  -2  -> '3'
-subx024 subtract  2  -1  -> '3'
-subx025 subtract  2  -2  -> '4'
-subx026 subtract  3  -2  -> '5'
-subx027 subtract  2  -3  -> '5'
-
-subx030 subtract  11  1  -> 10
-subx031 subtract  10  1  ->  9
-subx032 subtract  9   1  ->  8
-subx033 subtract  1   1  ->  0
-subx034 subtract  0   1  -> -1
-subx035 subtract -1   1  -> -2
-subx036 subtract -9   1  -> -10
-subx037 subtract -10  1  -> -11
-subx038 subtract -11  1  -> -12
-
-subx040 subtract '5.75' '3.3'  -> '2.45'
-subx041 subtract '5'    '-3'   -> '8'
-subx042 subtract '-5'   '-3'   -> '-2'
-subx043 subtract '-7'   '2.5'  -> '-9.5'
-subx044 subtract '0.7'  '0.3'  -> '0.4'
-subx045 subtract '1.3'  '0.3'  -> '1.0'
-subx046 subtract '1.25' '1.25' -> '0.00'
-
-subx050 subtract '1.23456789'    '1.00000000' -> '0.23456789'
-subx051 subtract '1.23456789'    '1.00000089' -> '0.23456700'
-subx052 subtract '0.5555555559'    '0.0000000001' -> '0.555555556' Inexact Rounded
-subx053 subtract '0.5555555559'    '0.0000000005' -> '0.555555555' Inexact Rounded
-subx054 subtract '0.4444444444'    '0.1111111111' -> '0.333333333' Inexact Rounded
-subx055 subtract '1.0000000000'    '0.00000001' -> '0.999999990' Rounded
-subx056 subtract '0.4444444444999'    '0' -> '0.444444444' Inexact Rounded
-subx057 subtract '0.4444444445000'    '0' -> '0.444444445' Inexact Rounded
-
-subx060 subtract '70'    '10000e+9' -> '-1.00000000E+13' Inexact Rounded
-subx061 subtract '700'    '10000e+9' -> '-1.00000000E+13' Inexact Rounded
-subx062 subtract '7000'    '10000e+9' -> '-9.99999999E+12' Inexact Rounded
-subx063 subtract '70000'    '10000e+9' -> '-9.99999993E+12' Rounded
-subx064 subtract '700000'    '10000e+9' -> '-9.99999930E+12' Rounded
-  -- symmetry:
-subx065 subtract '10000e+9'    '70' -> '1.00000000E+13' Inexact Rounded
-subx066 subtract '10000e+9'    '700' -> '1.00000000E+13' Inexact Rounded
-subx067 subtract '10000e+9'    '7000' -> '9.99999999E+12' Inexact Rounded
-subx068 subtract '10000e+9'    '70000' -> '9.99999993E+12' Rounded
-subx069 subtract '10000e+9'    '700000' -> '9.99999930E+12' Rounded
-
-  -- change precision
-subx080 subtract '10000e+9'    '70000' -> '9.99999993E+12' Rounded
-precision: 6
-subx081 subtract '10000e+9'    '70000' -> '1.00000E+13' Inexact Rounded
-precision: 9
-
-  -- some of the next group are really constructor tests
-subx090 subtract '00.0'    '0.0'  -> '0.0'
-subx091 subtract '00.0'    '0.00' -> '0.00'
-subx092 subtract '0.00'    '00.0' -> '0.00'
-subx093 subtract '00.0'    '0.00' -> '0.00'
-subx094 subtract '0.00'    '00.0' -> '0.00'
-subx095 subtract '3'    '.3'   -> '2.7'
-subx096 subtract '3.'   '.3'   -> '2.7'
-subx097 subtract '3.0'  '.3'   -> '2.7'
-subx098 subtract '3.00' '.3'   -> '2.70'
-subx099 subtract '3'    '3'    -> '0'
-subx100 subtract '3'    '+3'   -> '0'
-subx101 subtract '3'    '-3'   -> '6'
-subx102 subtract '3'    '0.3'  -> '2.7'
-subx103 subtract '3.'   '0.3'  -> '2.7'
-subx104 subtract '3.0'  '0.3'  -> '2.7'
-subx105 subtract '3.00' '0.3'  -> '2.70'
-subx106 subtract '3'    '3.0'  -> '0.0'
-subx107 subtract '3'    '+3.0' -> '0.0'
-subx108 subtract '3'    '-3.0' -> '6.0'
-
--- the above all from add; massaged and extended.  Now some new ones...
--- [particularly important for comparisons]
--- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7
--- with input rounding.
-subx120 subtract  '10.23456784'    '10.23456789'  -> '-5E-8'
-subx121 subtract  '10.23456785'    '10.23456789'  -> '-4E-8'
-subx122 subtract  '10.23456786'    '10.23456789'  -> '-3E-8'
-subx123 subtract  '10.23456787'    '10.23456789'  -> '-2E-8'
-subx124 subtract  '10.23456788'    '10.23456789'  -> '-1E-8'
-subx125 subtract  '10.23456789'    '10.23456789'  -> '0E-8'
-subx126 subtract  '10.23456790'    '10.23456789'  -> '1E-8'
-subx127 subtract  '10.23456791'    '10.23456789'  -> '2E-8'
-subx128 subtract  '10.23456792'    '10.23456789'  -> '3E-8'
-subx129 subtract  '10.23456793'    '10.23456789'  -> '4E-8'
-subx130 subtract  '10.23456794'    '10.23456789'  -> '5E-8'
-subx131 subtract  '10.23456781'    '10.23456786'  -> '-5E-8'
-subx132 subtract  '10.23456782'    '10.23456786'  -> '-4E-8'
-subx133 subtract  '10.23456783'    '10.23456786'  -> '-3E-8'
-subx134 subtract  '10.23456784'    '10.23456786'  -> '-2E-8'
-subx135 subtract  '10.23456785'    '10.23456786'  -> '-1E-8'
-subx136 subtract  '10.23456786'    '10.23456786'  -> '0E-8'
-subx137 subtract  '10.23456787'    '10.23456786'  -> '1E-8'
-subx138 subtract  '10.23456788'    '10.23456786'  -> '2E-8'
-subx139 subtract  '10.23456789'    '10.23456786'  -> '3E-8'
-subx140 subtract  '10.23456790'    '10.23456786'  -> '4E-8'
-subx141 subtract  '10.23456791'    '10.23456786'  -> '5E-8'
-subx142 subtract  '1'              '0.999999999'  -> '1E-9'
-subx143 subtract  '0.999999999'    '1'            -> '-1E-9'
-subx144 subtract  '-10.23456780'   '-10.23456786' -> '6E-8'
-subx145 subtract  '-10.23456790'   '-10.23456786' -> '-4E-8'
-subx146 subtract  '-10.23456791'   '-10.23456786' -> '-5E-8'
-
-precision: 3
-subx150 subtract '12345678900000' '9999999999999'  -> 2.35E+12 Inexact Rounded
-subx151 subtract '9999999999999'  '12345678900000' -> -2.35E+12 Inexact Rounded
-precision: 6
-subx152 subtract '12345678900000' '9999999999999'  -> 2.34568E+12 Inexact Rounded
-subx153 subtract '9999999999999'  '12345678900000' -> -2.34568E+12 Inexact Rounded
-precision: 9
-subx154 subtract '12345678900000' '9999999999999'  -> 2.34567890E+12 Inexact Rounded
-subx155 subtract '9999999999999'  '12345678900000' -> -2.34567890E+12 Inexact Rounded
-precision: 12
-subx156 subtract '12345678900000' '9999999999999'  -> 2.34567890000E+12 Inexact Rounded
-subx157 subtract '9999999999999'  '12345678900000' -> -2.34567890000E+12 Inexact Rounded
-precision: 15
-subx158 subtract '12345678900000' '9999999999999'  -> 2345678900001
-subx159 subtract '9999999999999'  '12345678900000' -> -2345678900001
-precision: 9
-
--- additional scaled arithmetic tests [0.97 problem]
-subx160 subtract '0'     '.1'      -> '-0.1'
-subx161 subtract '00'    '.97983'  -> '-0.97983'
-subx162 subtract '0'     '.9'      -> '-0.9'
-subx163 subtract '0'     '0.102'   -> '-0.102'
-subx164 subtract '0'     '.4'      -> '-0.4'
-subx165 subtract '0'     '.307'    -> '-0.307'
-subx166 subtract '0'     '.43822'  -> '-0.43822'
-subx167 subtract '0'     '.911'    -> '-0.911'
-subx168 subtract '.0'    '.02'     -> '-0.02'
-subx169 subtract '00'    '.392'    -> '-0.392'
-subx170 subtract '0'     '.26'     -> '-0.26'
-subx171 subtract '0'     '0.51'    -> '-0.51'
-subx172 subtract '0'     '.2234'   -> '-0.2234'
-subx173 subtract '0'     '.2'      -> '-0.2'
-subx174 subtract '.0'    '.0008'   -> '-0.0008'
--- 0. on left
-subx180 subtract '0.0'     '-.1'      -> '0.1'
-subx181 subtract '0.00'    '-.97983'  -> '0.97983'
-subx182 subtract '0.0'     '-.9'      -> '0.9'
-subx183 subtract '0.0'     '-0.102'   -> '0.102'
-subx184 subtract '0.0'     '-.4'      -> '0.4'
-subx185 subtract '0.0'     '-.307'    -> '0.307'
-subx186 subtract '0.0'     '-.43822'  -> '0.43822'
-subx187 subtract '0.0'     '-.911'    -> '0.911'
-subx188 subtract '0.0'     '-.02'     -> '0.02'
-subx189 subtract '0.00'    '-.392'    -> '0.392'
-subx190 subtract '0.0'     '-.26'     -> '0.26'
-subx191 subtract '0.0'     '-0.51'    -> '0.51'
-subx192 subtract '0.0'     '-.2234'   -> '0.2234'
-subx193 subtract '0.0'     '-.2'      -> '0.2'
-subx194 subtract '0.0'     '-.0008'   -> '0.0008'
--- negatives of same
-subx200 subtract '0'     '-.1'      -> '0.1'
-subx201 subtract '00'    '-.97983'  -> '0.97983'
-subx202 subtract '0'     '-.9'      -> '0.9'
-subx203 subtract '0'     '-0.102'   -> '0.102'
-subx204 subtract '0'     '-.4'      -> '0.4'
-subx205 subtract '0'     '-.307'    -> '0.307'
-subx206 subtract '0'     '-.43822'  -> '0.43822'
-subx207 subtract '0'     '-.911'    -> '0.911'
-subx208 subtract '.0'    '-.02'     -> '0.02'
-subx209 subtract '00'    '-.392'    -> '0.392'
-subx210 subtract '0'     '-.26'     -> '0.26'
-subx211 subtract '0'     '-0.51'    -> '0.51'
-subx212 subtract '0'     '-.2234'   -> '0.2234'
-subx213 subtract '0'     '-.2'      -> '0.2'
-subx214 subtract '.0'    '-.0008'   -> '0.0008'
-
--- more fixed, LHS swaps [really the same as testcases under add]
-subx220 subtract '-56267E-12' 0  -> '-5.6267E-8'
-subx221 subtract '-56267E-11' 0  -> '-5.6267E-7'
-subx222 subtract '-56267E-10' 0  -> '-0.0000056267'
-subx223 subtract '-56267E-9'  0  -> '-0.000056267'
-subx224 subtract '-56267E-8'  0  -> '-0.00056267'
-subx225 subtract '-56267E-7'  0  -> '-0.0056267'
-subx226 subtract '-56267E-6'  0  -> '-0.056267'
-subx227 subtract '-56267E-5'  0  -> '-0.56267'
-subx228 subtract '-56267E-2'  0  -> '-562.67'
-subx229 subtract '-56267E-1'  0  -> '-5626.7'
-subx230 subtract '-56267E-0'  0  -> '-56267'
--- symmetry ...
-subx240 subtract 0 '-56267E-12'  -> '5.6267E-8'
-subx241 subtract 0 '-56267E-11'  -> '5.6267E-7'
-subx242 subtract 0 '-56267E-10'  -> '0.0000056267'
-subx243 subtract 0 '-56267E-9'   -> '0.000056267'
-subx244 subtract 0 '-56267E-8'   -> '0.00056267'
-subx245 subtract 0 '-56267E-7'   -> '0.0056267'
-subx246 subtract 0 '-56267E-6'   -> '0.056267'
-subx247 subtract 0 '-56267E-5'   -> '0.56267'
-subx248 subtract 0 '-56267E-2'   -> '562.67'
-subx249 subtract 0 '-56267E-1'   -> '5626.7'
-subx250 subtract 0 '-56267E-0'   -> '56267'
-
--- now some more from the 'new' add
-precision: 9
-subx301 subtract '1.23456789'  '1.00000000' -> '0.23456789'
-subx302 subtract '1.23456789'  '1.00000011' -> '0.23456778'
-
-subx311 subtract '0.4444444444'  '0.5555555555' -> '-0.111111111' Inexact Rounded
-subx312 subtract '0.4444444440'  '0.5555555555' -> '-0.111111112' Inexact Rounded
-subx313 subtract '0.4444444444'  '0.5555555550' -> '-0.111111111' Inexact Rounded
-subx314 subtract '0.44444444449'    '0' -> '0.444444444' Inexact Rounded
-subx315 subtract '0.444444444499'   '0' -> '0.444444444' Inexact Rounded
-subx316 subtract '0.4444444444999'  '0' -> '0.444444444' Inexact Rounded
-subx317 subtract '0.4444444445000'  '0' -> '0.444444445' Inexact Rounded
-subx318 subtract '0.4444444445001'  '0' -> '0.444444445' Inexact Rounded
-subx319 subtract '0.444444444501'   '0' -> '0.444444445' Inexact Rounded
-subx320 subtract '0.44444444451'    '0' -> '0.444444445' Inexact Rounded
-
--- some carrying effects
-subx321 subtract '0.9998'  '0.0000' -> '0.9998'
-subx322 subtract '0.9998'  '0.0001' -> '0.9997'
-subx323 subtract '0.9998'  '0.0002' -> '0.9996'
-subx324 subtract '0.9998'  '0.0003' -> '0.9995'
-subx325 subtract '0.9998'  '-0.0000' -> '0.9998'
-subx326 subtract '0.9998'  '-0.0001' -> '0.9999'
-subx327 subtract '0.9998'  '-0.0002' -> '1.0000'
-subx328 subtract '0.9998'  '-0.0003' -> '1.0001'
-
-subx330 subtract '70'  '10000e+9' -> '-1.00000000E+13' Inexact Rounded
-subx331 subtract '700'  '10000e+9' -> '-1.00000000E+13' Inexact Rounded
-subx332 subtract '7000'  '10000e+9' -> '-9.99999999E+12' Inexact Rounded
-subx333 subtract '70000'  '10000e+9' -> '-9.99999993E+12' Rounded
-subx334 subtract '700000'  '10000e+9' -> '-9.99999930E+12' Rounded
-subx335 subtract '7000000'  '10000e+9' -> '-9.99999300E+12' Rounded
--- symmetry:
-subx340 subtract '10000e+9'  '70' -> '1.00000000E+13' Inexact Rounded
-subx341 subtract '10000e+9'  '700' -> '1.00000000E+13' Inexact Rounded
-subx342 subtract '10000e+9'  '7000' -> '9.99999999E+12' Inexact Rounded
-subx343 subtract '10000e+9'  '70000' -> '9.99999993E+12' Rounded
-subx344 subtract '10000e+9'  '700000' -> '9.99999930E+12' Rounded
-subx345 subtract '10000e+9'  '7000000' -> '9.99999300E+12' Rounded
-
--- same, higher precision
-precision: 15
-subx346 subtract '10000e+9'  '7'   -> '9999999999993'
-subx347 subtract '10000e+9'  '70'   -> '9999999999930'
-subx348 subtract '10000e+9'  '700'   -> '9999999999300'
-subx349 subtract '10000e+9'  '7000'   -> '9999999993000'
-subx350 subtract '10000e+9'  '70000'   -> '9999999930000'
-subx351 subtract '10000e+9'  '700000'   -> '9999999300000'
-subx352 subtract '7' '10000e+9'   -> '-9999999999993'
-subx353 subtract '70' '10000e+9'   -> '-9999999999930'
-subx354 subtract '700' '10000e+9'   -> '-9999999999300'
-subx355 subtract '7000' '10000e+9'   -> '-9999999993000'
-subx356 subtract '70000' '10000e+9'   -> '-9999999930000'
-subx357 subtract '700000' '10000e+9'   -> '-9999999300000'
-
--- zero preservation
-precision: 6
-subx360 subtract '10000e+9'  '70000' -> '1.00000E+13' Inexact Rounded
-subx361 subtract 1 '0.0001' -> '0.9999'
-subx362 subtract 1 '0.00001' -> '0.99999'
-subx363 subtract 1 '0.000001' -> '0.999999'
-subx364 subtract 1 '0.0000001' -> '1.00000' Inexact Rounded
-subx365 subtract 1 '0.00000001' -> '1.00000' Inexact Rounded
-
--- some funny zeros [in case of bad signum]
-subx370 subtract 1  0  -> 1
-subx371 subtract 1 0.  -> 1
-subx372 subtract 1  .0 -> 1.0
-subx373 subtract 1 0.0 -> 1.0
-subx374 subtract  0  1 -> -1
-subx375 subtract 0.  1 -> -1
-subx376 subtract  .0 1 -> -1.0
-subx377 subtract 0.0 1 -> -1.0
-
-precision: 9
-
--- leading 0 digit before round
-subx910 subtract -103519362 -51897955.3 -> -51621406.7
-subx911 subtract 159579.444 89827.5229 -> 69751.9211
-
-subx920 subtract 333.123456 33.1234566 -> 299.999999 Inexact Rounded
-subx921 subtract 333.123456 33.1234565 -> 300.000000 Inexact Rounded
-subx922 subtract 133.123456 33.1234565 ->  99.9999995
-subx923 subtract 133.123456 33.1234564 ->  99.9999996
-subx924 subtract 133.123456 33.1234540 -> 100.000002 Rounded
-subx925 subtract 133.123456 43.1234560 ->  90.0000000
-subx926 subtract 133.123456 43.1234561 ->  89.9999999
-subx927 subtract 133.123456 43.1234566 ->  89.9999994
-subx928 subtract 101.123456 91.1234566 ->   9.9999994
-subx929 subtract 101.123456 99.1234566 ->   1.9999994
-
--- more of the same; probe for cluster boundary problems
-precision: 1
-subx930 subtract  11 2           -> 9
-precision: 2
-subx932 subtract 101 2           -> 99
-precision: 3
-subx934 subtract 101 2.1         -> 98.9
-subx935 subtract 101 92.01       ->  8.99
-precision: 4
-subx936 subtract 101 2.01        -> 98.99
-subx937 subtract 101 92.01       ->  8.99
-subx938 subtract 101 92.006      ->  8.994
-precision: 5
-subx939 subtract 101 2.001       -> 98.999
-subx940 subtract 101 92.001      ->  8.999
-subx941 subtract 101 92.0006     ->  8.9994
-precision: 6
-subx942 subtract 101 2.0001      -> 98.9999
-subx943 subtract 101 92.0001     ->  8.9999
-subx944 subtract 101 92.00006    ->  8.99994
-precision: 7
-subx945 subtract 101 2.00001     -> 98.99999
-subx946 subtract 101 92.00001    ->  8.99999
-subx947 subtract 101 92.000006   ->  8.999994
-precision: 8
-subx948 subtract 101 2.000001    -> 98.999999
-subx949 subtract 101 92.000001   ->  8.999999
-subx950 subtract 101 92.0000006  ->  8.9999994
-precision: 9
-subx951 subtract 101 2.0000001   -> 98.9999999
-subx952 subtract 101 92.0000001  ->  8.9999999
-subx953 subtract 101 92.00000006 ->  8.99999994
-
-precision: 9
-
--- more LHS swaps [were fixed]
-subx390 subtract '-56267E-10'   0 ->  '-0.0000056267'
-subx391 subtract '-56267E-6'    0 ->  '-0.056267'
-subx392 subtract '-56267E-5'    0 ->  '-0.56267'
-subx393 subtract '-56267E-4'    0 ->  '-5.6267'
-subx394 subtract '-56267E-3'    0 ->  '-56.267'
-subx395 subtract '-56267E-2'    0 ->  '-562.67'
-subx396 subtract '-56267E-1'    0 ->  '-5626.7'
-subx397 subtract '-56267E-0'    0 ->  '-56267'
-subx398 subtract '-5E-10'       0 ->  '-5E-10'
-subx399 subtract '-5E-7'        0 ->  '-5E-7'
-subx400 subtract '-5E-6'        0 ->  '-0.000005'
-subx401 subtract '-5E-5'        0 ->  '-0.00005'
-subx402 subtract '-5E-4'        0 ->  '-0.0005'
-subx403 subtract '-5E-1'        0 ->  '-0.5'
-subx404 subtract '-5E0'         0 ->  '-5'
-subx405 subtract '-5E1'         0 ->  '-50'
-subx406 subtract '-5E5'         0 ->  '-500000'
-subx407 subtract '-5E8'         0 ->  '-500000000'
-subx408 subtract '-5E9'         0 ->  '-5.00000000E+9'   Rounded
-subx409 subtract '-5E10'        0 ->  '-5.00000000E+10'  Rounded
-subx410 subtract '-5E11'        0 ->  '-5.00000000E+11'  Rounded
-subx411 subtract '-5E100'       0 ->  '-5.00000000E+100' Rounded
-
--- more RHS swaps [were fixed]
-subx420 subtract 0  '-56267E-10' ->  '0.0000056267'
-subx421 subtract 0  '-56267E-6'  ->  '0.056267'
-subx422 subtract 0  '-56267E-5'  ->  '0.56267'
-subx423 subtract 0  '-56267E-4'  ->  '5.6267'
-subx424 subtract 0  '-56267E-3'  ->  '56.267'
-subx425 subtract 0  '-56267E-2'  ->  '562.67'
-subx426 subtract 0  '-56267E-1'  ->  '5626.7'
-subx427 subtract 0  '-56267E-0'  ->  '56267'
-subx428 subtract 0  '-5E-10'     ->  '5E-10'
-subx429 subtract 0  '-5E-7'      ->  '5E-7'
-subx430 subtract 0  '-5E-6'      ->  '0.000005'
-subx431 subtract 0  '-5E-5'      ->  '0.00005'
-subx432 subtract 0  '-5E-4'      ->  '0.0005'
-subx433 subtract 0  '-5E-1'      ->  '0.5'
-subx434 subtract 0  '-5E0'       ->  '5'
-subx435 subtract 0  '-5E1'       ->  '50'
-subx436 subtract 0  '-5E5'       ->  '500000'
-subx437 subtract 0  '-5E8'       ->  '500000000'
-subx438 subtract 0  '-5E9'       ->  '5.00000000E+9'    Rounded
-subx439 subtract 0  '-5E10'      ->  '5.00000000E+10'   Rounded
-subx440 subtract 0  '-5E11'      ->  '5.00000000E+11'   Rounded
-subx441 subtract 0  '-5E100'     ->  '5.00000000E+100'  Rounded
-
-
--- try borderline precision, with carries, etc.
-precision: 15
-subx461 subtract '1E+12' '1'       -> '999999999999'
-subx462 subtract '1E+12' '-1.11'   -> '1000000000001.11'
-subx463 subtract '1.11'  '-1E+12'  -> '1000000000001.11'
-subx464 subtract '-1'    '-1E+12'  -> '999999999999'
-subx465 subtract '7E+12' '1'       -> '6999999999999'
-subx466 subtract '7E+12' '-1.11'   -> '7000000000001.11'
-subx467 subtract '1.11'  '-7E+12'  -> '7000000000001.11'
-subx468 subtract '-1'    '-7E+12'  -> '6999999999999'
-
---                 123456789012345       123456789012345      1 23456789012345
-subx470 subtract '0.444444444444444'  '-0.555555555555563' -> '1.00000000000001' Inexact Rounded
-subx471 subtract '0.444444444444444'  '-0.555555555555562' -> '1.00000000000001' Inexact Rounded
-subx472 subtract '0.444444444444444'  '-0.555555555555561' -> '1.00000000000001' Inexact Rounded
-subx473 subtract '0.444444444444444'  '-0.555555555555560' -> '1.00000000000000' Inexact Rounded
-subx474 subtract '0.444444444444444'  '-0.555555555555559' -> '1.00000000000000' Inexact Rounded
-subx475 subtract '0.444444444444444'  '-0.555555555555558' -> '1.00000000000000' Inexact Rounded
-subx476 subtract '0.444444444444444'  '-0.555555555555557' -> '1.00000000000000' Inexact Rounded
-subx477 subtract '0.444444444444444'  '-0.555555555555556' -> '1.00000000000000' Rounded
-subx478 subtract '0.444444444444444'  '-0.555555555555555' -> '0.999999999999999'
-subx479 subtract '0.444444444444444'  '-0.555555555555554' -> '0.999999999999998'
-subx480 subtract '0.444444444444444'  '-0.555555555555553' -> '0.999999999999997'
-subx481 subtract '0.444444444444444'  '-0.555555555555552' -> '0.999999999999996'
-subx482 subtract '0.444444444444444'  '-0.555555555555551' -> '0.999999999999995'
-subx483 subtract '0.444444444444444'  '-0.555555555555550' -> '0.999999999999994'
-
--- and some more, including residue effects and different roundings
-precision: 9
-rounding: half_up
-subx500 subtract '123456789' 0             -> '123456789'
-subx501 subtract '123456789' 0.000000001   -> '123456789' Inexact Rounded
-subx502 subtract '123456789' 0.000001      -> '123456789' Inexact Rounded
-subx503 subtract '123456789' 0.1           -> '123456789' Inexact Rounded
-subx504 subtract '123456789' 0.4           -> '123456789' Inexact Rounded
-subx505 subtract '123456789' 0.49          -> '123456789' Inexact Rounded
-subx506 subtract '123456789' 0.499999      -> '123456789' Inexact Rounded
-subx507 subtract '123456789' 0.499999999   -> '123456789' Inexact Rounded
-subx508 subtract '123456789' 0.5           -> '123456789' Inexact Rounded
-subx509 subtract '123456789' 0.500000001   -> '123456788' Inexact Rounded
-subx510 subtract '123456789' 0.500001      -> '123456788' Inexact Rounded
-subx511 subtract '123456789' 0.51          -> '123456788' Inexact Rounded
-subx512 subtract '123456789' 0.6           -> '123456788' Inexact Rounded
-subx513 subtract '123456789' 0.9           -> '123456788' Inexact Rounded
-subx514 subtract '123456789' 0.99999       -> '123456788' Inexact Rounded
-subx515 subtract '123456789' 0.999999999   -> '123456788' Inexact Rounded
-subx516 subtract '123456789' 1             -> '123456788'
-subx517 subtract '123456789' 1.000000001   -> '123456788' Inexact Rounded
-subx518 subtract '123456789' 1.00001       -> '123456788' Inexact Rounded
-subx519 subtract '123456789' 1.1           -> '123456788' Inexact Rounded
-
-rounding: half_even
-subx520 subtract '123456789' 0             -> '123456789'
-subx521 subtract '123456789' 0.000000001   -> '123456789' Inexact Rounded
-subx522 subtract '123456789' 0.000001      -> '123456789' Inexact Rounded
-subx523 subtract '123456789' 0.1           -> '123456789' Inexact Rounded
-subx524 subtract '123456789' 0.4           -> '123456789' Inexact Rounded
-subx525 subtract '123456789' 0.49          -> '123456789' Inexact Rounded
-subx526 subtract '123456789' 0.499999      -> '123456789' Inexact Rounded
-subx527 subtract '123456789' 0.499999999   -> '123456789' Inexact Rounded
-subx528 subtract '123456789' 0.5           -> '123456788' Inexact Rounded
-subx529 subtract '123456789' 0.500000001   -> '123456788' Inexact Rounded
-subx530 subtract '123456789' 0.500001      -> '123456788' Inexact Rounded
-subx531 subtract '123456789' 0.51          -> '123456788' Inexact Rounded
-subx532 subtract '123456789' 0.6           -> '123456788' Inexact Rounded
-subx533 subtract '123456789' 0.9           -> '123456788' Inexact Rounded
-subx534 subtract '123456789' 0.99999       -> '123456788' Inexact Rounded
-subx535 subtract '123456789' 0.999999999   -> '123456788' Inexact Rounded
-subx536 subtract '123456789' 1             -> '123456788'
-subx537 subtract '123456789' 1.00000001    -> '123456788' Inexact Rounded
-subx538 subtract '123456789' 1.00001       -> '123456788' Inexact Rounded
-subx539 subtract '123456789' 1.1           -> '123456788' Inexact Rounded
--- critical few with even bottom digit...
-subx540 subtract '123456788' 0.499999999   -> '123456788' Inexact Rounded
-subx541 subtract '123456788' 0.5           -> '123456788' Inexact Rounded
-subx542 subtract '123456788' 0.500000001   -> '123456787' Inexact Rounded
-
-rounding: down
-subx550 subtract '123456789' 0             -> '123456789'
-subx551 subtract '123456789' 0.000000001   -> '123456788' Inexact Rounded
-subx552 subtract '123456789' 0.000001      -> '123456788' Inexact Rounded
-subx553 subtract '123456789' 0.1           -> '123456788' Inexact Rounded
-subx554 subtract '123456789' 0.4           -> '123456788' Inexact Rounded
-subx555 subtract '123456789' 0.49          -> '123456788' Inexact Rounded
-subx556 subtract '123456789' 0.499999      -> '123456788' Inexact Rounded
-subx557 subtract '123456789' 0.499999999   -> '123456788' Inexact Rounded
-subx558 subtract '123456789' 0.5           -> '123456788' Inexact Rounded
-subx559 subtract '123456789' 0.500000001   -> '123456788' Inexact Rounded
-subx560 subtract '123456789' 0.500001      -> '123456788' Inexact Rounded
-subx561 subtract '123456789' 0.51          -> '123456788' Inexact Rounded
-subx562 subtract '123456789' 0.6           -> '123456788' Inexact Rounded
-subx563 subtract '123456789' 0.9           -> '123456788' Inexact Rounded
-subx564 subtract '123456789' 0.99999       -> '123456788' Inexact Rounded
-subx565 subtract '123456789' 0.999999999   -> '123456788' Inexact Rounded
-subx566 subtract '123456789' 1             -> '123456788'
-subx567 subtract '123456789' 1.00000001    -> '123456787' Inexact Rounded
-subx568 subtract '123456789' 1.00001       -> '123456787' Inexact Rounded
-subx569 subtract '123456789' 1.1           -> '123456787' Inexact Rounded
-
--- symmetry...
-rounding: half_up
-subx600 subtract 0             '123456789' -> '-123456789'
-subx601 subtract 0.000000001   '123456789' -> '-123456789' Inexact Rounded
-subx602 subtract 0.000001      '123456789' -> '-123456789' Inexact Rounded
-subx603 subtract 0.1           '123456789' -> '-123456789' Inexact Rounded
-subx604 subtract 0.4           '123456789' -> '-123456789' Inexact Rounded
-subx605 subtract 0.49          '123456789' -> '-123456789' Inexact Rounded
-subx606 subtract 0.499999      '123456789' -> '-123456789' Inexact Rounded
-subx607 subtract 0.499999999   '123456789' -> '-123456789' Inexact Rounded
-subx608 subtract 0.5           '123456789' -> '-123456789' Inexact Rounded
-subx609 subtract 0.500000001   '123456789' -> '-123456788' Inexact Rounded
-subx610 subtract 0.500001      '123456789' -> '-123456788' Inexact Rounded
-subx611 subtract 0.51          '123456789' -> '-123456788' Inexact Rounded
-subx612 subtract 0.6           '123456789' -> '-123456788' Inexact Rounded
-subx613 subtract 0.9           '123456789' -> '-123456788' Inexact Rounded
-subx614 subtract 0.99999       '123456789' -> '-123456788' Inexact Rounded
-subx615 subtract 0.999999999   '123456789' -> '-123456788' Inexact Rounded
-subx616 subtract 1             '123456789' -> '-123456788'
-subx617 subtract 1.000000001   '123456789' -> '-123456788' Inexact Rounded
-subx618 subtract 1.00001       '123456789' -> '-123456788' Inexact Rounded
-subx619 subtract 1.1           '123456789' -> '-123456788' Inexact Rounded
-
-rounding: half_even
-subx620 subtract 0             '123456789' -> '-123456789'
-subx621 subtract 0.000000001   '123456789' -> '-123456789' Inexact Rounded
-subx622 subtract 0.000001      '123456789' -> '-123456789' Inexact Rounded
-subx623 subtract 0.1           '123456789' -> '-123456789' Inexact Rounded
-subx624 subtract 0.4           '123456789' -> '-123456789' Inexact Rounded
-subx625 subtract 0.49          '123456789' -> '-123456789' Inexact Rounded
-subx626 subtract 0.499999      '123456789' -> '-123456789' Inexact Rounded
-subx627 subtract 0.499999999   '123456789' -> '-123456789' Inexact Rounded
-subx628 subtract 0.5           '123456789' -> '-123456788' Inexact Rounded
-subx629 subtract 0.500000001   '123456789' -> '-123456788' Inexact Rounded
-subx630 subtract 0.500001      '123456789' -> '-123456788' Inexact Rounded
-subx631 subtract 0.51          '123456789' -> '-123456788' Inexact Rounded
-subx632 subtract 0.6           '123456789' -> '-123456788' Inexact Rounded
-subx633 subtract 0.9           '123456789' -> '-123456788' Inexact Rounded
-subx634 subtract 0.99999       '123456789' -> '-123456788' Inexact Rounded
-subx635 subtract 0.999999999   '123456789' -> '-123456788' Inexact Rounded
-subx636 subtract 1             '123456789' -> '-123456788'
-subx637 subtract 1.00000001    '123456789' -> '-123456788' Inexact Rounded
-subx638 subtract 1.00001       '123456789' -> '-123456788' Inexact Rounded
-subx639 subtract 1.1           '123456789' -> '-123456788' Inexact Rounded
--- critical few with even bottom digit...
-subx640 subtract 0.499999999   '123456788' -> '-123456788' Inexact Rounded
-subx641 subtract 0.5           '123456788' -> '-123456788' Inexact Rounded
-subx642 subtract 0.500000001   '123456788' -> '-123456787' Inexact Rounded
-
-rounding: down
-subx650 subtract 0             '123456789' -> '-123456789'
-subx651 subtract 0.000000001   '123456789' -> '-123456788' Inexact Rounded
-subx652 subtract 0.000001      '123456789' -> '-123456788' Inexact Rounded
-subx653 subtract 0.1           '123456789' -> '-123456788' Inexact Rounded
-subx654 subtract 0.4           '123456789' -> '-123456788' Inexact Rounded
-subx655 subtract 0.49          '123456789' -> '-123456788' Inexact Rounded
-subx656 subtract 0.499999      '123456789' -> '-123456788' Inexact Rounded
-subx657 subtract 0.499999999   '123456789' -> '-123456788' Inexact Rounded
-subx658 subtract 0.5           '123456789' -> '-123456788' Inexact Rounded
-subx659 subtract 0.500000001   '123456789' -> '-123456788' Inexact Rounded
-subx660 subtract 0.500001      '123456789' -> '-123456788' Inexact Rounded
-subx661 subtract 0.51          '123456789' -> '-123456788' Inexact Rounded
-subx662 subtract 0.6           '123456789' -> '-123456788' Inexact Rounded
-subx663 subtract 0.9           '123456789' -> '-123456788' Inexact Rounded
-subx664 subtract 0.99999       '123456789' -> '-123456788' Inexact Rounded
-subx665 subtract 0.999999999   '123456789' -> '-123456788' Inexact Rounded
-subx666 subtract 1             '123456789' -> '-123456788'
-subx667 subtract 1.00000001    '123456789' -> '-123456787' Inexact Rounded
-subx668 subtract 1.00001       '123456789' -> '-123456787' Inexact Rounded
-subx669 subtract 1.1           '123456789' -> '-123456787' Inexact Rounded
-
-
--- lots of leading zeros in intermediate result, and showing effects of
--- input rounding would have affected the following
-precision: 9
-rounding: half_up
-subx670 subtract '123456789' '123456788.1' -> 0.9
-subx671 subtract '123456789' '123456788.9' -> 0.1
-subx672 subtract '123456789' '123456789.1' -> -0.1
-subx673 subtract '123456789' '123456789.5' -> -0.5
-subx674 subtract '123456789' '123456789.9' -> -0.9
-
-rounding: half_even
-subx680 subtract '123456789' '123456788.1' -> 0.9
-subx681 subtract '123456789' '123456788.9' -> 0.1
-subx682 subtract '123456789' '123456789.1' -> -0.1
-subx683 subtract '123456789' '123456789.5' -> -0.5
-subx684 subtract '123456789' '123456789.9' -> -0.9
-
-subx685 subtract '123456788' '123456787.1' -> 0.9
-subx686 subtract '123456788' '123456787.9' -> 0.1
-subx687 subtract '123456788' '123456788.1' -> -0.1
-subx688 subtract '123456788' '123456788.5' -> -0.5
-subx689 subtract '123456788' '123456788.9' -> -0.9
-
-rounding: down
-subx690 subtract '123456789' '123456788.1' -> 0.9
-subx691 subtract '123456789' '123456788.9' -> 0.1
-subx692 subtract '123456789' '123456789.1' -> -0.1
-subx693 subtract '123456789' '123456789.5' -> -0.5
-subx694 subtract '123456789' '123456789.9' -> -0.9
-
--- input preparation tests
-rounding: half_up
-precision: 3
-
-subx700 subtract '12345678900000'  -9999999999999 ->  '2.23E+13' Inexact Rounded
-subx701 subtract  '9999999999999' -12345678900000 ->  '2.23E+13' Inexact Rounded
-subx702 subtract '12E+3'  '-3456' ->  '1.55E+4' Inexact Rounded
-subx703 subtract '12E+3'  '-3446' ->  '1.54E+4' Inexact Rounded
-subx704 subtract '12E+3'  '-3454' ->  '1.55E+4' Inexact Rounded
-subx705 subtract '12E+3'  '-3444' ->  '1.54E+4' Inexact Rounded
-
-subx706 subtract '3456'  '-12E+3' ->  '1.55E+4' Inexact Rounded
-subx707 subtract '3446'  '-12E+3' ->  '1.54E+4' Inexact Rounded
-subx708 subtract '3454'  '-12E+3' ->  '1.55E+4' Inexact Rounded
-subx709 subtract '3444'  '-12E+3' ->  '1.54E+4' Inexact Rounded
-
--- overflow and underflow tests [subnormals now possible]
-maxexponent: 999999999
-minexponent: -999999999
-precision: 9
-rounding: down
-subx710 subtract 1E+999999999    -9E+999999999   -> 9.99999999E+999999999 Overflow Inexact Rounded
-subx711 subtract 9E+999999999    -1E+999999999   -> 9.99999999E+999999999 Overflow Inexact Rounded
-rounding: half_up
-subx712 subtract 1E+999999999    -9E+999999999   -> Infinity Overflow Inexact Rounded
-subx713 subtract 9E+999999999    -1E+999999999   -> Infinity Overflow Inexact Rounded
-subx714 subtract -1.1E-999999999 -1E-999999999   -> -1E-1000000000 Subnormal
-subx715 subtract 1E-999999999    +1.1e-999999999 -> -1E-1000000000 Subnormal
-subx716 subtract -1E+999999999   +9E+999999999   -> -Infinity Overflow Inexact Rounded
-subx717 subtract -9E+999999999   +1E+999999999   -> -Infinity Overflow Inexact Rounded
-subx718 subtract +1.1E-999999999 +1E-999999999   -> 1E-1000000000 Subnormal
-subx719 subtract -1E-999999999   -1.1e-999999999 -> 1E-1000000000 Subnormal
-
-precision: 3
-subx720 subtract 1  9.999E+999999999   -> -Infinity Inexact Overflow Rounded
-subx721 subtract 1 -9.999E+999999999   ->  Infinity Inexact Overflow Rounded
-subx722 subtract    9.999E+999999999 1 ->  Infinity Inexact Overflow Rounded
-subx723 subtract   -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded
-subx724 subtract 1  9.999E+999999999   -> -Infinity Inexact Overflow Rounded
-subx725 subtract 1 -9.999E+999999999   ->  Infinity Inexact Overflow Rounded
-subx726 subtract    9.999E+999999999 1 ->  Infinity Inexact Overflow Rounded
-subx727 subtract   -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded
-
--- [more below]
-
--- long operand checks
-maxexponent: 999
-minexponent: -999
-precision: 9
-sub731 subtract 12345678000 0 ->  1.23456780E+10 Rounded
-sub732 subtract 0 12345678000 -> -1.23456780E+10 Rounded
-sub733 subtract 1234567800  0 ->  1.23456780E+9 Rounded
-sub734 subtract 0 1234567800  -> -1.23456780E+9 Rounded
-sub735 subtract 1234567890  0 ->  1.23456789E+9 Rounded
-sub736 subtract 0 1234567890  -> -1.23456789E+9 Rounded
-sub737 subtract 1234567891  0 ->  1.23456789E+9 Inexact Rounded
-sub738 subtract 0 1234567891  -> -1.23456789E+9 Inexact Rounded
-sub739 subtract 12345678901 0 ->  1.23456789E+10 Inexact Rounded
-sub740 subtract 0 12345678901 -> -1.23456789E+10 Inexact Rounded
-sub741 subtract 1234567896  0 ->  1.23456790E+9 Inexact Rounded
-sub742 subtract 0 1234567896  -> -1.23456790E+9 Inexact Rounded
-
-precision: 15
-sub751 subtract 12345678000 0 ->  12345678000
-sub752 subtract 0 12345678000 -> -12345678000
-sub753 subtract 1234567800  0 ->  1234567800
-sub754 subtract 0 1234567800  -> -1234567800
-sub755 subtract 1234567890  0 ->  1234567890
-sub756 subtract 0 1234567890  -> -1234567890
-sub757 subtract 1234567891  0 ->  1234567891
-sub758 subtract 0 1234567891  -> -1234567891
-sub759 subtract 12345678901 0 ->  12345678901
-sub760 subtract 0 12345678901 -> -12345678901
-sub761 subtract 1234567896  0 ->  1234567896
-sub762 subtract 0 1234567896  -> -1234567896
-
--- Specials
-subx780 subtract -Inf   Inf   -> -Infinity
-subx781 subtract -Inf   1000  -> -Infinity
-subx782 subtract -Inf   1     -> -Infinity
-subx783 subtract -Inf  -0     -> -Infinity
-subx784 subtract -Inf  -1     -> -Infinity
-subx785 subtract -Inf  -1000  -> -Infinity
-subx787 subtract -1000  Inf   -> -Infinity
-subx788 subtract -Inf   Inf   -> -Infinity
-subx789 subtract -1     Inf   -> -Infinity
-subx790 subtract  0     Inf   -> -Infinity
-subx791 subtract  1     Inf   -> -Infinity
-subx792 subtract  1000  Inf   -> -Infinity
-
-subx800 subtract  Inf   Inf   ->  NaN  Invalid_operation
-subx801 subtract  Inf   1000  ->  Infinity
-subx802 subtract  Inf   1     ->  Infinity
-subx803 subtract  Inf   0     ->  Infinity
-subx804 subtract  Inf  -0     ->  Infinity
-subx805 subtract  Inf  -1     ->  Infinity
-subx806 subtract  Inf  -1000  ->  Infinity
-subx807 subtract  Inf  -Inf   ->  Infinity
-subx808 subtract -1000 -Inf   ->  Infinity
-subx809 subtract -Inf  -Inf   ->  NaN  Invalid_operation
-subx810 subtract -1    -Inf   ->  Infinity
-subx811 subtract -0    -Inf   ->  Infinity
-subx812 subtract  0    -Inf   ->  Infinity
-subx813 subtract  1    -Inf   ->  Infinity
-subx814 subtract  1000 -Inf   ->  Infinity
-subx815 subtract  Inf  -Inf   ->  Infinity
-
-subx821 subtract  NaN   Inf   ->  NaN
-subx822 subtract -NaN   1000  -> -NaN
-subx823 subtract  NaN   1     ->  NaN
-subx824 subtract  NaN   0     ->  NaN
-subx825 subtract  NaN  -0     ->  NaN
-subx826 subtract  NaN  -1     ->  NaN
-subx827 subtract  NaN  -1000  ->  NaN
-subx828 subtract  NaN  -Inf   ->  NaN
-subx829 subtract -NaN   NaN   -> -NaN
-subx830 subtract -Inf   NaN   ->  NaN
-subx831 subtract -1000  NaN   ->  NaN
-subx832 subtract -1     NaN   ->  NaN
-subx833 subtract -0     NaN   ->  NaN
-subx834 subtract  0     NaN   ->  NaN
-subx835 subtract  1     NaN   ->  NaN
-subx836 subtract  1000 -NaN   -> -NaN
-subx837 subtract  Inf   NaN   ->  NaN
-
-subx841 subtract  sNaN  Inf   ->  NaN  Invalid_operation
-subx842 subtract -sNaN  1000  -> -NaN  Invalid_operation
-subx843 subtract  sNaN  1     ->  NaN  Invalid_operation
-subx844 subtract  sNaN  0     ->  NaN  Invalid_operation
-subx845 subtract  sNaN -0     ->  NaN  Invalid_operation
-subx846 subtract  sNaN -1     ->  NaN  Invalid_operation
-subx847 subtract  sNaN -1000  ->  NaN  Invalid_operation
-subx848 subtract  sNaN  NaN   ->  NaN  Invalid_operation
-subx849 subtract  sNaN sNaN   ->  NaN  Invalid_operation
-subx850 subtract  NaN  sNaN   ->  NaN  Invalid_operation
-subx851 subtract -Inf -sNaN   -> -NaN  Invalid_operation
-subx852 subtract -1000 sNaN   ->  NaN  Invalid_operation
-subx853 subtract -1    sNaN   ->  NaN  Invalid_operation
-subx854 subtract -0    sNaN   ->  NaN  Invalid_operation
-subx855 subtract  0    sNaN   ->  NaN  Invalid_operation
-subx856 subtract  1    sNaN   ->  NaN  Invalid_operation
-subx857 subtract  1000 sNaN   ->  NaN  Invalid_operation
-subx858 subtract  Inf  sNaN   ->  NaN  Invalid_operation
-subx859 subtract  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-subx861 subtract  NaN01   -Inf     ->  NaN1
-subx862 subtract -NaN02   -1000    -> -NaN2
-subx863 subtract  NaN03    1000    ->  NaN3
-subx864 subtract  NaN04    Inf     ->  NaN4
-subx865 subtract  NaN05    NaN61   ->  NaN5
-subx866 subtract -Inf     -NaN71   -> -NaN71
-subx867 subtract -1000     NaN81   ->  NaN81
-subx868 subtract  1000     NaN91   ->  NaN91
-subx869 subtract  Inf      NaN101  ->  NaN101
-subx871 subtract  sNaN011  -Inf    ->  NaN11  Invalid_operation
-subx872 subtract  sNaN012  -1000   ->  NaN12  Invalid_operation
-subx873 subtract -sNaN013   1000   -> -NaN13  Invalid_operation
-subx874 subtract  sNaN014   NaN171 ->  NaN14  Invalid_operation
-subx875 subtract  sNaN015  sNaN181 ->  NaN15  Invalid_operation
-subx876 subtract  NaN016   sNaN191 ->  NaN191 Invalid_operation
-subx877 subtract -Inf      sNaN201 ->  NaN201 Invalid_operation
-subx878 subtract -1000     sNaN211 ->  NaN211 Invalid_operation
-subx879 subtract  1000    -sNaN221 -> -NaN221 Invalid_operation
-subx880 subtract  Inf      sNaN231 ->  NaN231 Invalid_operation
-subx881 subtract  NaN025   sNaN241 ->  NaN241 Invalid_operation
-
--- edge case spills
-subx901 subtract  2.E-3  1.002  -> -1.000
-subx902 subtract  2.0E-3  1.002  -> -1.0000
-subx903 subtract  2.00E-3  1.0020  -> -1.00000
-subx904 subtract  2.000E-3  1.00200  -> -1.000000
-subx905 subtract  2.0000E-3  1.002000  -> -1.0000000
-subx906 subtract  2.00000E-3  1.0020000  -> -1.00000000
-subx907 subtract  2.000000E-3  1.00200000  -> -1.000000000
-subx908 subtract  2.0000000E-3  1.002000000  -> -1.0000000000
-
--- subnormals and underflows
-precision: 3
-maxexponent: 999
-minexponent: -999
-subx1010 subtract  0  1.00E-999       ->  -1.00E-999
-subx1011 subtract  0  0.1E-999        ->  -1E-1000   Subnormal
-subx1012 subtract  0  0.10E-999       ->  -1.0E-1000 Subnormal
-subx1013 subtract  0  0.100E-999      ->  -1.0E-1000 Subnormal Rounded
-subx1014 subtract  0  0.01E-999       ->  -1E-1001   Subnormal
--- next is rounded to Emin
-subx1015 subtract  0  0.999E-999      ->  -1.00E-999 Inexact Rounded Subnormal Underflow
-subx1016 subtract  0  0.099E-999      ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
-subx1017 subtract  0  0.009E-999      ->  -1E-1001   Inexact Rounded Subnormal Underflow
-subx1018 subtract  0  0.001E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-subx1019 subtract  0  0.0009E-999     ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-subx1020 subtract  0  0.0001E-999     ->  -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
-subx1030 subtract  0 -1.00E-999       ->   1.00E-999
-subx1031 subtract  0 -0.1E-999        ->   1E-1000   Subnormal
-subx1032 subtract  0 -0.10E-999       ->   1.0E-1000 Subnormal
-subx1033 subtract  0 -0.100E-999      ->   1.0E-1000 Subnormal Rounded
-subx1034 subtract  0 -0.01E-999       ->   1E-1001   Subnormal
--- next is rounded to Emin
-subx1035 subtract  0 -0.999E-999      ->   1.00E-999 Inexact Rounded Subnormal Underflow
-subx1036 subtract  0 -0.099E-999      ->   1.0E-1000 Inexact Rounded Subnormal Underflow
-subx1037 subtract  0 -0.009E-999      ->   1E-1001   Inexact Rounded Subnormal Underflow
-subx1038 subtract  0 -0.001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-subx1039 subtract  0 -0.0009E-999     ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-subx1040 subtract  0 -0.0001E-999     ->   0E-1001   Inexact Rounded Subnormal Underflow Clamped
-
--- some non-zero subnormal subtracts
--- subx1056 is a tricky case
-rounding: half_up
-subx1050 subtract  1.00E-999   0.1E-999  ->   9.0E-1000  Subnormal
-subx1051 subtract  0.1E-999    0.1E-999  ->   0E-1000
-subx1052 subtract  0.10E-999   0.1E-999  ->   0E-1001
-subx1053 subtract  0.100E-999  0.1E-999  ->   0E-1001    Clamped
-subx1054 subtract  0.01E-999   0.1E-999  ->   -9E-1001   Subnormal
-subx1055 subtract  0.999E-999  0.1E-999  ->   9.0E-1000  Inexact Rounded Subnormal Underflow
-subx1056 subtract  0.099E-999  0.1E-999  ->   -0E-1001   Inexact Rounded Subnormal Underflow Clamped
-subx1057 subtract  0.009E-999  0.1E-999  ->   -9E-1001   Inexact Rounded Subnormal Underflow
-subx1058 subtract  0.001E-999  0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
-subx1059 subtract  0.0009E-999 0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
-subx1060 subtract  0.0001E-999 0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
-
-
--- check for double-rounded subnormals
-precision:   5
-maxexponent: 79
-minexponent: -79
-subx1101 subtract  0 1.52444E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
-subx1102 subtract  0 1.52445E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
-subx1103 subtract  0 1.52446E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
-subx1104 subtract  1.52444E-80 0 ->  1.524E-80 Inexact Rounded Subnormal Underflow
-subx1105 subtract  1.52445E-80 0 ->  1.524E-80 Inexact Rounded Subnormal Underflow
-subx1106 subtract  1.52446E-80 0 ->  1.524E-80 Inexact Rounded Subnormal Underflow
-
-subx1111 subtract  1.2345678E-80  1.2345671E-80 ->  0E-83 Inexact Rounded Subnormal Underflow Clamped
-subx1112 subtract  1.2345678E-80  1.2345618E-80 ->  0E-83 Inexact Rounded Subnormal Underflow Clamped
-subx1113 subtract  1.2345678E-80  1.2345178E-80 ->  0E-83 Inexact Rounded Subnormal Underflow Clamped
-subx1114 subtract  1.2345678E-80  1.2341678E-80 ->  0E-83 Inexact Rounded Subnormal Underflow Clamped
-subx1115 subtract  1.2345678E-80  1.2315678E-80 ->  3E-83         Rounded Subnormal
-subx1116 subtract  1.2345678E-80  1.2145678E-80 ->  2.0E-82       Rounded Subnormal
-subx1117 subtract  1.2345678E-80  1.1345678E-80 ->  1.00E-81      Rounded Subnormal
-subx1118 subtract  1.2345678E-80  0.2345678E-80 ->  1.000E-80     Rounded Subnormal
-
-precision:   34
-rounding:    half_up
-maxExponent: 6144
-minExponent: -6143
--- Examples from SQL proposal (Krishna Kulkarni)
-subx1125  subtract 130E-2  120E-2 -> 0.10
-subx1126  subtract 130E-2  12E-1  -> 0.10
-subx1127  subtract 130E-2  1E0    -> 0.30
-subx1128  subtract 1E2     1E4    -> -9.9E+3
-
--- Null tests
-subx9990 subtract 10  # -> NaN Invalid_operation
-subx9991 subtract  # 10 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/testall.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/testall.decTest
deleted file mode 100644
index 3bb48d2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/testall.decTest
+++ /dev/null
@@ -1,87 +0,0 @@
-------------------------------------------------------------------------
--- testall.decTest -- run all general decimal arithmetic testcases    --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- core tests (using Extended: 1) --------------------------------------
-dectest: base
-
-dectest: abs
-dectest: add
-dectest: and
-dectest: clamp
-dectest: class
-dectest: compare
-dectest: comparesig
-dectest: comparetotal
-dectest: comparetotmag
-dectest: copy
-dectest: copyabs
-dectest: copynegate
-dectest: copysign
-dectest: divide
-dectest: divideint
-dectest: exp
-dectest: fma
-dectest: inexact
-dectest: invert
-dectest: ln
-dectest: logb
-dectest: log10
-dectest: max
-dectest: maxmag
-dectest: min
-dectest: minmag
-dectest: minus
-dectest: multiply
-dectest: nextminus
-dectest: nextplus
-dectest: nexttoward
-dectest: or
-dectest: plus
-dectest: power
-dectest: powersqrt
-dectest: quantize
-dectest: randoms
-dectest: reduce               -- [was called normalize]
-dectest: remainder
-dectest: remaindernear
-dectest: rescale              -- [obsolete]
-dectest: rotate
-dectest: rounding
-dectest: samequantum
-dectest: scaleb
-dectest: shift
-dectest: squareroot
-dectest: subtract
-dectest: tointegral
-dectest: tointegralx
-dectest: trim
-dectest: xor
-
--- The next are for the Strawman 4d concrete representations and
--- tests at those sizes [including dsEncode, ddEncode, and dqEncode,
--- which replace decimal32, decimal64, and decimal128]
-dectest: decSingle
-dectest: decDouble
-dectest: decQuad
-
--- General 31->33-digit boundary tests
-dectest: randombound32
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/tointegral.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/tointegral.decTest
deleted file mode 100644
index ddbbd21..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/tointegral.decTest
+++ /dev/null
@@ -1,241 +0,0 @@
-------------------------------------------------------------------------
--- tointegral.decTest -- round decimal to integral value              --
--- Copyright (c) IBM Corporation, 2001, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This set of tests tests the extended specification 'round-to-integral
--- value' operation (from IEEE 854, later modified in 754r).
--- All non-zero results are defined as being those from either copy or
--- quantize, so those are assumed to have been tested.
--- Note that 754r requires that Inexact not be set, and we similarly
--- assume Rounded is not set.
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minExponent: -999
-
-intx001 tointegral      0     ->  0
-intx002 tointegral      0.0   ->  0
-intx003 tointegral      0.1   ->  0
-intx004 tointegral      0.2   ->  0
-intx005 tointegral      0.3   ->  0
-intx006 tointegral      0.4   ->  0
-intx007 tointegral      0.5   ->  1
-intx008 tointegral      0.6   ->  1
-intx009 tointegral      0.7   ->  1
-intx010 tointegral      0.8   ->  1
-intx011 tointegral      0.9   ->  1
-intx012 tointegral      1     ->  1
-intx013 tointegral      1.0   ->  1
-intx014 tointegral      1.1   ->  1
-intx015 tointegral      1.2   ->  1
-intx016 tointegral      1.3   ->  1
-intx017 tointegral      1.4   ->  1
-intx018 tointegral      1.5   ->  2
-intx019 tointegral      1.6   ->  2
-intx020 tointegral      1.7   ->  2
-intx021 tointegral      1.8   ->  2
-intx022 tointegral      1.9   ->  2
--- negatives
-intx031 tointegral     -0     -> -0
-intx032 tointegral     -0.0   -> -0
-intx033 tointegral     -0.1   -> -0
-intx034 tointegral     -0.2   -> -0
-intx035 tointegral     -0.3   -> -0
-intx036 tointegral     -0.4   -> -0
-intx037 tointegral     -0.5   -> -1
-intx038 tointegral     -0.6   -> -1
-intx039 tointegral     -0.7   -> -1
-intx040 tointegral     -0.8   -> -1
-intx041 tointegral     -0.9   -> -1
-intx042 tointegral     -1     -> -1
-intx043 tointegral     -1.0   -> -1
-intx044 tointegral     -1.1   -> -1
-intx045 tointegral     -1.2   -> -1
-intx046 tointegral     -1.3   -> -1
-intx047 tointegral     -1.4   -> -1
-intx048 tointegral     -1.5   -> -2
-intx049 tointegral     -1.6   -> -2
-intx050 tointegral     -1.7   -> -2
-intx051 tointegral     -1.8   -> -2
-intx052 tointegral     -1.9   -> -2
--- next two would be NaN using quantize(x, 0)
-intx053 tointegral    10E+30  -> 1.0E+31
-intx054 tointegral   -10E+30  -> -1.0E+31
-
--- numbers around precision
-precision: 9
-intx060 tointegral '56267E-10'   -> '0'
-intx061 tointegral '56267E-5'    -> '1'
-intx062 tointegral '56267E-2'    -> '563'
-intx063 tointegral '56267E-1'    -> '5627'
-intx065 tointegral '56267E-0'    -> '56267'
-intx066 tointegral '56267E+0'    -> '56267'
-intx067 tointegral '56267E+1'    -> '5.6267E+5'
-intx068 tointegral '56267E+2'    -> '5.6267E+6'
-intx069 tointegral '56267E+3'    -> '5.6267E+7'
-intx070 tointegral '56267E+4'    -> '5.6267E+8'
-intx071 tointegral '56267E+5'    -> '5.6267E+9'
-intx072 tointegral '56267E+6'    -> '5.6267E+10'
-intx073 tointegral '1.23E+96'    -> '1.23E+96'
-intx074 tointegral '1.23E+384'   -> '1.23E+384'
-intx075 tointegral '1.23E+999'   -> '1.23E+999'
-
-intx080 tointegral '-56267E-10'  -> '-0'
-intx081 tointegral '-56267E-5'   -> '-1'
-intx082 tointegral '-56267E-2'   -> '-563'
-intx083 tointegral '-56267E-1'   -> '-5627'
-intx085 tointegral '-56267E-0'   -> '-56267'
-intx086 tointegral '-56267E+0'   -> '-56267'
-intx087 tointegral '-56267E+1'   -> '-5.6267E+5'
-intx088 tointegral '-56267E+2'   -> '-5.6267E+6'
-intx089 tointegral '-56267E+3'   -> '-5.6267E+7'
-intx090 tointegral '-56267E+4'   -> '-5.6267E+8'
-intx091 tointegral '-56267E+5'   -> '-5.6267E+9'
-intx092 tointegral '-56267E+6'   -> '-5.6267E+10'
-intx093 tointegral '-1.23E+96'   -> '-1.23E+96'
-intx094 tointegral '-1.23E+384'  -> '-1.23E+384'
-intx095 tointegral '-1.23E+999'  -> '-1.23E+999'
-
--- subnormal inputs
-intx100 tointegral        1E-999 -> 0
-intx101 tointegral      0.1E-999 -> 0
-intx102 tointegral     0.01E-999 -> 0
-intx103 tointegral        0E-999 -> 0
-
--- specials and zeros
-intx120 tointegral 'Inf'       ->  Infinity
-intx121 tointegral '-Inf'      -> -Infinity
-intx122 tointegral   NaN       ->  NaN
-intx123 tointegral  sNaN       ->  NaN  Invalid_operation
-intx124 tointegral     0       ->  0
-intx125 tointegral    -0       -> -0
-intx126 tointegral     0.000   ->  0
-intx127 tointegral     0.00    ->  0
-intx128 tointegral     0.0     ->  0
-intx129 tointegral     0       ->  0
-intx130 tointegral     0E-3    ->  0
-intx131 tointegral     0E-2    ->  0
-intx132 tointegral     0E-1    ->  0
-intx133 tointegral     0E-0    ->  0
-intx134 tointegral     0E+1    ->  0E+1
-intx135 tointegral     0E+2    ->  0E+2
-intx136 tointegral     0E+3    ->  0E+3
-intx137 tointegral     0E+4    ->  0E+4
-intx138 tointegral     0E+5    ->  0E+5
-intx139 tointegral    -0.000   -> -0
-intx140 tointegral    -0.00    -> -0
-intx141 tointegral    -0.0     -> -0
-intx142 tointegral    -0       -> -0
-intx143 tointegral    -0E-3    -> -0
-intx144 tointegral    -0E-2    -> -0
-intx145 tointegral    -0E-1    -> -0
-intx146 tointegral    -0E-0    -> -0
-intx147 tointegral    -0E+1    -> -0E+1
-intx148 tointegral    -0E+2    -> -0E+2
-intx149 tointegral    -0E+3    -> -0E+3
-intx150 tointegral    -0E+4    -> -0E+4
-intx151 tointegral    -0E+5    -> -0E+5
--- propagating NaNs
-intx152 tointegral   NaN808    ->  NaN808
-intx153 tointegral  sNaN080    ->  NaN80  Invalid_operation
-intx154 tointegral  -NaN808    -> -NaN808
-intx155 tointegral -sNaN080    -> -NaN80  Invalid_operation
-intx156 tointegral  -NaN       -> -NaN
-intx157 tointegral -sNaN       -> -NaN    Invalid_operation
-
--- examples
-rounding:    half_up
-precision:   9
-intx200 tointegral     2.1    -> 2
-intx201 tointegral   100      -> 100
-intx202 tointegral   100.0    -> 100
-intx203 tointegral   101.5    -> 102
-intx204 tointegral  -101.5    -> -102
-intx205 tointegral   10E+5    -> 1.0E+6
-intx206 tointegral  7.89E+77  -> 7.89E+77
-intx207 tointegral   -Inf     -> -Infinity
-
-
--- all rounding modes
-rounding:    half_even
-
-intx210 tointegral     55.5   ->  56
-intx211 tointegral     56.5   ->  56
-intx212 tointegral     57.5   ->  58
-intx213 tointegral    -55.5   -> -56
-intx214 tointegral    -56.5   -> -56
-intx215 tointegral    -57.5   -> -58
-
-rounding:    half_up
-
-intx220 tointegral     55.5   ->  56
-intx221 tointegral     56.5   ->  57
-intx222 tointegral     57.5   ->  58
-intx223 tointegral    -55.5   -> -56
-intx224 tointegral    -56.5   -> -57
-intx225 tointegral    -57.5   -> -58
-
-rounding:    half_down
-
-intx230 tointegral     55.5   ->  55
-intx231 tointegral     56.5   ->  56
-intx232 tointegral     57.5   ->  57
-intx233 tointegral    -55.5   -> -55
-intx234 tointegral    -56.5   -> -56
-intx235 tointegral    -57.5   -> -57
-
-rounding:    up
-
-intx240 tointegral     55.3   ->  56
-intx241 tointegral     56.3   ->  57
-intx242 tointegral     57.3   ->  58
-intx243 tointegral    -55.3   -> -56
-intx244 tointegral    -56.3   -> -57
-intx245 tointegral    -57.3   -> -58
-
-rounding:    down
-
-intx250 tointegral     55.7   ->  55
-intx251 tointegral     56.7   ->  56
-intx252 tointegral     57.7   ->  57
-intx253 tointegral    -55.7   -> -55
-intx254 tointegral    -56.7   -> -56
-intx255 tointegral    -57.7   -> -57
-
-rounding:    ceiling
-
-intx260 tointegral     55.3   ->  56
-intx261 tointegral     56.3   ->  57
-intx262 tointegral     57.3   ->  58
-intx263 tointegral    -55.3   -> -55
-intx264 tointegral    -56.3   -> -56
-intx265 tointegral    -57.3   -> -57
-
-rounding:    floor
-
-intx270 tointegral     55.7   ->  55
-intx271 tointegral     56.7   ->  56
-intx272 tointegral     57.7   ->  57
-intx273 tointegral    -55.7   -> -56
-intx274 tointegral    -56.7   -> -57
-intx275 tointegral    -57.7   -> -58
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/tointegralx.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/tointegralx.decTest
deleted file mode 100644
index 0ce0d09..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/tointegralx.decTest
+++ /dev/null
@@ -1,255 +0,0 @@
-------------------------------------------------------------------------
--- tointegralx.decTest -- round decimal to integral value, exact      --
--- Copyright (c) IBM Corporation, 2001, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
--- This set of tests tests the extended specification 'round-to-integral
--- value' operation (from IEEE 854, later modified in 754r).
--- All non-zero results are defined as being those from either copy or
--- quantize, so those are assumed to have been tested.
-
--- This tests toIntegraExact, which may set Inexact
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minExponent: -999
-
-intxx001 tointegralx      0     ->  0
-intxx002 tointegralx      0.0   ->  0
-intxx003 tointegralx      0.1   ->  0 Inexact Rounded
-intxx004 tointegralx      0.2   ->  0 Inexact Rounded
-intxx005 tointegralx      0.3   ->  0 Inexact Rounded
-intxx006 tointegralx      0.4   ->  0 Inexact Rounded
-intxx007 tointegralx      0.5   ->  1 Inexact Rounded
-intxx008 tointegralx      0.6   ->  1 Inexact Rounded
-intxx009 tointegralx      0.7   ->  1 Inexact Rounded
-intxx010 tointegralx      0.8   ->  1 Inexact Rounded
-intxx011 tointegralx      0.9   ->  1 Inexact Rounded
-intxx012 tointegralx      1     ->  1
-intxx013 tointegralx      1.0   ->  1 Rounded
-intxx014 tointegralx      1.1   ->  1 Inexact Rounded
-intxx015 tointegralx      1.2   ->  1 Inexact Rounded
-intxx016 tointegralx      1.3   ->  1 Inexact Rounded
-intxx017 tointegralx      1.4   ->  1 Inexact Rounded
-intxx018 tointegralx      1.5   ->  2 Inexact Rounded
-intxx019 tointegralx      1.6   ->  2 Inexact Rounded
-intxx020 tointegralx      1.7   ->  2 Inexact Rounded
-intxx021 tointegralx      1.8   ->  2 Inexact Rounded
-intxx022 tointegralx      1.9   ->  2 Inexact Rounded
--- negatives
-intxx031 tointegralx     -0     -> -0
-intxx032 tointegralx     -0.0   -> -0
-intxx033 tointegralx     -0.1   -> -0 Inexact Rounded
-intxx034 tointegralx     -0.2   -> -0 Inexact Rounded
-intxx035 tointegralx     -0.3   -> -0 Inexact Rounded
-intxx036 tointegralx     -0.4   -> -0 Inexact Rounded
-intxx037 tointegralx     -0.5   -> -1 Inexact Rounded
-intxx038 tointegralx     -0.6   -> -1 Inexact Rounded
-intxx039 tointegralx     -0.7   -> -1 Inexact Rounded
-intxx040 tointegralx     -0.8   -> -1 Inexact Rounded
-intxx041 tointegralx     -0.9   -> -1 Inexact Rounded
-intxx042 tointegralx     -1     -> -1
-intxx043 tointegralx     -1.0   -> -1 Rounded
-intxx044 tointegralx     -1.1   -> -1 Inexact Rounded
-intxx045 tointegralx     -1.2   -> -1 Inexact Rounded
-intxx046 tointegralx     -1.3   -> -1 Inexact Rounded
-intxx047 tointegralx     -1.4   -> -1 Inexact Rounded
-intxx048 tointegralx     -1.5   -> -2 Inexact Rounded
-intxx049 tointegralx     -1.6   -> -2 Inexact Rounded
-intxx050 tointegralx     -1.7   -> -2 Inexact Rounded
-intxx051 tointegralx     -1.8   -> -2 Inexact Rounded
-intxx052 tointegralx     -1.9   -> -2 Inexact Rounded
--- next two would be NaN using quantize(x, 0)
-intxx053 tointegralx    10E+30  -> 1.0E+31
-intxx054 tointegralx   -10E+30  -> -1.0E+31
-
--- numbers around precision
-precision: 9
-intxx060 tointegralx '56267E-10'   -> '0'               Inexact Rounded
-intxx061 tointegralx '56267E-5'    -> '1'               Inexact Rounded
-intxx062 tointegralx '56267E-2'    -> '563'             Inexact Rounded
-intxx063 tointegralx '56267E-1'    -> '5627'            Inexact Rounded
-intxx065 tointegralx '56267E-0'    -> '56267'
-intxx066 tointegralx '56267E+0'    -> '56267'
-intxx067 tointegralx '56267E+1'    -> '5.6267E+5'
-intxx068 tointegralx '56267E+2'    -> '5.6267E+6'
-intxx069 tointegralx '56267E+3'    -> '5.6267E+7'
-intxx070 tointegralx '56267E+4'    -> '5.6267E+8'
-intxx071 tointegralx '56267E+5'    -> '5.6267E+9'
-intxx072 tointegralx '56267E+6'    -> '5.6267E+10'
-intxx073 tointegralx '1.23E+96'    -> '1.23E+96'
-intxx074 tointegralx '1.23E+384'   -> '1.23E+384'
-intxx075 tointegralx '1.23E+999'   -> '1.23E+999'
-
-intxx080 tointegralx '-56267E-10'  -> '-0'              Inexact Rounded
-intxx081 tointegralx '-56267E-5'   -> '-1'              Inexact Rounded
-intxx082 tointegralx '-56267E-2'   -> '-563'            Inexact Rounded
-intxx083 tointegralx '-56267E-1'   -> '-5627'           Inexact Rounded
-intxx085 tointegralx '-56267E-0'   -> '-56267'
-intxx086 tointegralx '-56267E+0'   -> '-56267'
-intxx087 tointegralx '-56267E+1'   -> '-5.6267E+5'
-intxx088 tointegralx '-56267E+2'   -> '-5.6267E+6'
-intxx089 tointegralx '-56267E+3'   -> '-5.6267E+7'
-intxx090 tointegralx '-56267E+4'   -> '-5.6267E+8'
-intxx091 tointegralx '-56267E+5'   -> '-5.6267E+9'
-intxx092 tointegralx '-56267E+6'   -> '-5.6267E+10'
-intxx093 tointegralx '-1.23E+96'   -> '-1.23E+96'
-intxx094 tointegralx '-1.23E+384'  -> '-1.23E+384'
-intxx095 tointegralx '-1.23E+999'  -> '-1.23E+999'
-
--- subnormal inputs
-intxx100 tointegralx        1E-999 -> 0                 Inexact Rounded
-intxx101 tointegralx      0.1E-999 -> 0                 Inexact Rounded
-intxx102 tointegralx     0.01E-999 -> 0                 Inexact Rounded
-intxx103 tointegralx        0E-999 -> 0
-
--- specials and zeros
-intxx120 tointegralx 'Inf'       ->  Infinity
-intxx121 tointegralx '-Inf'      -> -Infinity
-intxx122 tointegralx   NaN       ->  NaN
-intxx123 tointegralx  sNaN       ->  NaN  Invalid_operation
-intxx124 tointegralx     0       ->  0
-intxx125 tointegralx    -0       -> -0
-intxx126 tointegralx     0.000   ->  0
-intxx127 tointegralx     0.00    ->  0
-intxx128 tointegralx     0.0     ->  0
-intxx129 tointegralx     0       ->  0
-intxx130 tointegralx     0E-3    ->  0
-intxx131 tointegralx     0E-2    ->  0
-intxx132 tointegralx     0E-1    ->  0
-intxx133 tointegralx     0E-0    ->  0
-intxx134 tointegralx     0E+1    ->  0E+1
-intxx135 tointegralx     0E+2    ->  0E+2
-intxx136 tointegralx     0E+3    ->  0E+3
-intxx137 tointegralx     0E+4    ->  0E+4
-intxx138 tointegralx     0E+5    ->  0E+5
-intxx139 tointegralx    -0.000   -> -0
-intxx140 tointegralx    -0.00    -> -0
-intxx141 tointegralx    -0.0     -> -0
-intxx142 tointegralx    -0       -> -0
-intxx143 tointegralx    -0E-3    -> -0
-intxx144 tointegralx    -0E-2    -> -0
-intxx145 tointegralx    -0E-1    -> -0
-intxx146 tointegralx    -0E-0    -> -0
-intxx147 tointegralx    -0E+1    -> -0E+1
-intxx148 tointegralx    -0E+2    -> -0E+2
-intxx149 tointegralx    -0E+3    -> -0E+3
-intxx150 tointegralx    -0E+4    -> -0E+4
-intxx151 tointegralx    -0E+5    -> -0E+5
--- propagating NaNs
-intxx152 tointegralx   NaN808    ->  NaN808
-intxx153 tointegralx  sNaN080    ->  NaN80  Invalid_operation
-intxx154 tointegralx  -NaN808    -> -NaN808
-intxx155 tointegralx -sNaN080    -> -NaN80  Invalid_operation
-intxx156 tointegralx  -NaN       -> -NaN
-intxx157 tointegralx -sNaN       -> -NaN    Invalid_operation
-
--- examples
-rounding:    half_up
-precision:   9
-intxx200 tointegralx     2.1    -> 2                    Inexact Rounded
-intxx201 tointegralx   100      -> 100
-intxx202 tointegralx   100.0    -> 100                  Rounded
-intxx203 tointegralx   101.5    -> 102                  Inexact Rounded
-intxx204 tointegralx  -101.5    -> -102                 Inexact Rounded
-intxx205 tointegralx   10E+5    -> 1.0E+6
-intxx206 tointegralx  7.89E+77  -> 7.89E+77
-intxx207 tointegralx   -Inf     -> -Infinity
-
-
--- all rounding modes
-rounding:    half_even
-
-intxx210 tointegralx     55.5   ->  56   Inexact Rounded
-intxx211 tointegralx     56.5   ->  56   Inexact Rounded
-intxx212 tointegralx     57.5   ->  58   Inexact Rounded
-intxx213 tointegralx    -55.5   -> -56   Inexact Rounded
-intxx214 tointegralx    -56.5   -> -56   Inexact Rounded
-intxx215 tointegralx    -57.5   -> -58   Inexact Rounded
-
-rounding:    half_up
-
-intxx220 tointegralx     55.5   ->  56   Inexact Rounded
-intxx221 tointegralx     56.5   ->  57   Inexact Rounded
-intxx222 tointegralx     57.5   ->  58   Inexact Rounded
-intxx223 tointegralx    -55.5   -> -56   Inexact Rounded
-intxx224 tointegralx    -56.5   -> -57   Inexact Rounded
-intxx225 tointegralx    -57.5   -> -58   Inexact Rounded
-
-rounding:    half_down
-
-intxx230 tointegralx     55.5   ->  55   Inexact Rounded
-intxx231 tointegralx     56.5   ->  56   Inexact Rounded
-intxx232 tointegralx     57.5   ->  57   Inexact Rounded
-intxx233 tointegralx    -55.5   -> -55   Inexact Rounded
-intxx234 tointegralx    -56.5   -> -56   Inexact Rounded
-intxx235 tointegralx    -57.5   -> -57   Inexact Rounded
-
-rounding:    up
-
-intxx240 tointegralx     55.3   ->  56   Inexact Rounded
-intxx241 tointegralx     56.3   ->  57   Inexact Rounded
-intxx242 tointegralx     57.3   ->  58   Inexact Rounded
-intxx243 tointegralx    -55.3   -> -56   Inexact Rounded
-intxx244 tointegralx    -56.3   -> -57   Inexact Rounded
-intxx245 tointegralx    -57.3   -> -58   Inexact Rounded
-
-rounding:    down
-
-intxx250 tointegralx     55.7   ->  55   Inexact Rounded
-intxx251 tointegralx     56.7   ->  56   Inexact Rounded
-intxx252 tointegralx     57.7   ->  57   Inexact Rounded
-intxx253 tointegralx    -55.7   -> -55   Inexact Rounded
-intxx254 tointegralx    -56.7   -> -56   Inexact Rounded
-intxx255 tointegralx    -57.7   -> -57   Inexact Rounded
-
-rounding:    ceiling
-
-intxx260 tointegralx     55.3   ->  56   Inexact Rounded
-intxx261 tointegralx     56.3   ->  57   Inexact Rounded
-intxx262 tointegralx     57.3   ->  58   Inexact Rounded
-intxx263 tointegralx    -55.3   -> -55   Inexact Rounded
-intxx264 tointegralx    -56.3   -> -56   Inexact Rounded
-intxx265 tointegralx    -57.3   -> -57   Inexact Rounded
-
-rounding:    floor
-
-intxx270 tointegralx     55.7   ->  55   Inexact Rounded
-intxx271 tointegralx     56.7   ->  56   Inexact Rounded
-intxx272 tointegralx     57.7   ->  57   Inexact Rounded
-intxx273 tointegralx    -55.7   -> -56   Inexact Rounded
-intxx274 tointegralx    -56.7   -> -57   Inexact Rounded
-intxx275 tointegralx    -57.7   -> -58   Inexact Rounded
-
--- Int and uInt32 edge values for testing conversions
-precision: 16
-intxx300 tointegralx -2147483646  -> -2147483646
-intxx301 tointegralx -2147483647  -> -2147483647
-intxx302 tointegralx -2147483648  -> -2147483648
-intxx303 tointegralx -2147483649  -> -2147483649
-intxx304 tointegralx  2147483646  ->  2147483646
-intxx305 tointegralx  2147483647  ->  2147483647
-intxx306 tointegralx  2147483648  ->  2147483648
-intxx307 tointegralx  2147483649  ->  2147483649
-intxx308 tointegralx  4294967294  ->  4294967294
-intxx309 tointegralx  4294967295  ->  4294967295
-intxx310 tointegralx  4294967296  ->  4294967296
-intxx311 tointegralx  4294967297  ->  4294967297
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/xor.decTest b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/xor.decTest
deleted file mode 100644
index cd71bbc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/decimaltestdata/xor.decTest
+++ /dev/null
@@ -1,335 +0,0 @@
-------------------------------------------------------------------------
--- xor.decTest -- digitwise logical XOR                               --
--- Copyright (c) IBM Corporation, 1981, 2008.  All rights reserved.   --
-------------------------------------------------------------------------
--- Please see the document "General Decimal Arithmetic Testcases"     --
--- at http://www2.hursley.ibm.com/decimal for the description of      --
--- these testcases.                                                   --
---                                                                    --
--- These testcases are experimental ('beta' versions), and they       --
--- may contain errors.  They are offered on an as-is basis.  In       --
--- particular, achieving the same results as the tests here is not    --
--- a guarantee that an implementation complies with any Standard      --
--- or specification.  The tests are not exhaustive.                   --
---                                                                    --
--- Please send comments, suggestions, and corrections to the author:  --
---   Mike Cowlishaw, IBM Fellow                                       --
---   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
---   mfc@uk.ibm.com                                                   --
-------------------------------------------------------------------------
-version: 2.59
-
-extended:    1
-precision:   9
-rounding:    half_up
-maxExponent: 999
-minExponent: -999
-
--- Sanity check (truth table)
-xorx001 xor             0    0 ->    0
-xorx002 xor             0    1 ->    1
-xorx003 xor             1    0 ->    1
-xorx004 xor             1    1 ->    0
-xorx005 xor          1100 1010 ->  110
-xorx006 xor          1111   10 -> 1101
--- and at msd and msd-1
-xorx010 xor 000000000 000000000 ->           0
-xorx011 xor 000000000 100000000 ->   100000000
-xorx012 xor 100000000 000000000 ->   100000000
-xorx013 xor 100000000 100000000 ->           0
-xorx014 xor 000000000 000000000 ->           0
-xorx015 xor 000000000 010000000 ->    10000000
-xorx016 xor 010000000 000000000 ->    10000000
-xorx017 xor 010000000 010000000 ->           0
-
--- Various lengths
---        123456789     123456789      123456789
-xorx021 xor 111111111     111111111  ->  0
-xorx022 xor 111111111111  111111111  ->  0
-xorx023 xor  11111111      11111111  ->  0
-xorx025 xor   1111111       1111111  ->  0
-xorx026 xor    111111        111111  ->  0
-xorx027 xor     11111         11111  ->  0
-xorx028 xor      1111          1111  ->  0
-xorx029 xor       111           111  ->  0
-xorx031 xor        11            11  ->  0
-xorx032 xor         1             1  ->  0
-xorx033 xor 111111111111 1111111111  ->  0
-xorx034 xor 11111111111 11111111111  ->  0
-xorx035 xor 1111111111 111111111111  ->  0
-xorx036 xor 111111111 1111111111111  ->  0
-
-xorx040 xor 111111111  111111111111  ->  0
-xorx041 xor  11111111  111111111111  ->  100000000
-xorx042 xor  11111111     111111111  ->  100000000
-xorx043 xor   1111111     100000010  ->  101111101
-xorx044 xor    111111     100000100  ->  100111011
-xorx045 xor     11111     100001000  ->  100010111
-xorx046 xor      1111     100010000  ->  100011111
-xorx047 xor       111     100100000  ->  100100111
-xorx048 xor        11     101000000  ->  101000011
-xorx049 xor         1     110000000  ->  110000001
-
-xorx050 xor 1111111111  1  ->  111111110
-xorx051 xor  111111111  1  ->  111111110
-xorx052 xor   11111111  1  ->  11111110
-xorx053 xor    1111111  1  ->  1111110
-xorx054 xor     111111  1  ->  111110
-xorx055 xor      11111  1  ->  11110
-xorx056 xor       1111  1  ->  1110
-xorx057 xor        111  1  ->  110
-xorx058 xor         11  1  ->  10
-xorx059 xor          1  1  ->  0
-
-xorx060 xor 1111111111  0  ->  111111111
-xorx061 xor  111111111  0  ->  111111111
-xorx062 xor   11111111  0  ->  11111111
-xorx063 xor    1111111  0  ->  1111111
-xorx064 xor     111111  0  ->  111111
-xorx065 xor      11111  0  ->  11111
-xorx066 xor       1111  0  ->  1111
-xorx067 xor        111  0  ->  111
-xorx068 xor         11  0  ->  11
-xorx069 xor          1  0  ->  1
-
-xorx070 xor 1  1111111111  ->  111111110
-xorx071 xor 1   111111111  ->  111111110
-xorx072 xor 1    11111111  ->  11111110
-xorx073 xor 1     1111111  ->  1111110
-xorx074 xor 1      111111  ->  111110
-xorx075 xor 1       11111  ->  11110
-xorx076 xor 1        1111  ->  1110
-xorx077 xor 1         111  ->  110
-xorx078 xor 1          11  ->  10
-xorx079 xor 1           1  ->  0
-
-xorx080 xor 0  1111111111  ->  111111111
-xorx081 xor 0   111111111  ->  111111111
-xorx082 xor 0    11111111  ->  11111111
-xorx083 xor 0     1111111  ->  1111111
-xorx084 xor 0      111111  ->  111111
-xorx085 xor 0       11111  ->  11111
-xorx086 xor 0        1111  ->  1111
-xorx087 xor 0         111  ->  111
-xorx088 xor 0          11  ->  11
-xorx089 xor 0           1  ->  1
-
-xorx090 xor 011111111  111101111  ->  100010000
-xorx091 xor 101111111  111101111  ->   10010000
-xorx092 xor 110111111  111101111  ->    1010000
-xorx093 xor 111011111  111101111  ->     110000
-xorx094 xor 111101111  111101111  ->          0
-xorx095 xor 111110111  111101111  ->      11000
-xorx096 xor 111111011  111101111  ->      10100
-xorx097 xor 111111101  111101111  ->      10010
-xorx098 xor 111111110  111101111  ->      10001
-
-xorx100 xor 111101111  011111111  ->  100010000
-xorx101 xor 111101111  101111111  ->   10010000
-xorx102 xor 111101111  110111111  ->    1010000
-xorx103 xor 111101111  111011111  ->     110000
-xorx104 xor 111101111  111101111  ->          0
-xorx105 xor 111101111  111110111  ->      11000
-xorx106 xor 111101111  111111011  ->      10100
-xorx107 xor 111101111  111111101  ->      10010
-xorx108 xor 111101111  111111110  ->      10001
-
--- non-0/1 should not be accepted, nor should signs
-xorx220 xor 111111112  111111111  ->  NaN Invalid_operation
-xorx221 xor 333333333  333333333  ->  NaN Invalid_operation
-xorx222 xor 555555555  555555555  ->  NaN Invalid_operation
-xorx223 xor 777777777  777777777  ->  NaN Invalid_operation
-xorx224 xor 999999999  999999999  ->  NaN Invalid_operation
-xorx225 xor 222222222  999999999  ->  NaN Invalid_operation
-xorx226 xor 444444444  999999999  ->  NaN Invalid_operation
-xorx227 xor 666666666  999999999  ->  NaN Invalid_operation
-xorx228 xor 888888888  999999999  ->  NaN Invalid_operation
-xorx229 xor 999999999  222222222  ->  NaN Invalid_operation
-xorx230 xor 999999999  444444444  ->  NaN Invalid_operation
-xorx231 xor 999999999  666666666  ->  NaN Invalid_operation
-xorx232 xor 999999999  888888888  ->  NaN Invalid_operation
--- a few randoms
-xorx240 xor  567468689 -934981942 ->  NaN Invalid_operation
-xorx241 xor  567367689  934981942 ->  NaN Invalid_operation
-xorx242 xor -631917772 -706014634 ->  NaN Invalid_operation
-xorx243 xor -756253257  138579234 ->  NaN Invalid_operation
-xorx244 xor  835590149  567435400 ->  NaN Invalid_operation
--- test MSD
-xorx250 xor  200000000 100000000 ->  NaN Invalid_operation
-xorx251 xor  700000000 100000000 ->  NaN Invalid_operation
-xorx252 xor  800000000 100000000 ->  NaN Invalid_operation
-xorx253 xor  900000000 100000000 ->  NaN Invalid_operation
-xorx254 xor  200000000 000000000 ->  NaN Invalid_operation
-xorx255 xor  700000000 000000000 ->  NaN Invalid_operation
-xorx256 xor  800000000 000000000 ->  NaN Invalid_operation
-xorx257 xor  900000000 000000000 ->  NaN Invalid_operation
-xorx258 xor  100000000 200000000 ->  NaN Invalid_operation
-xorx259 xor  100000000 700000000 ->  NaN Invalid_operation
-xorx260 xor  100000000 800000000 ->  NaN Invalid_operation
-xorx261 xor  100000000 900000000 ->  NaN Invalid_operation
-xorx262 xor  000000000 200000000 ->  NaN Invalid_operation
-xorx263 xor  000000000 700000000 ->  NaN Invalid_operation
-xorx264 xor  000000000 800000000 ->  NaN Invalid_operation
-xorx265 xor  000000000 900000000 ->  NaN Invalid_operation
--- test MSD-1
-xorx270 xor  020000000 100000000 ->  NaN Invalid_operation
-xorx271 xor  070100000 100000000 ->  NaN Invalid_operation
-xorx272 xor  080010000 100000001 ->  NaN Invalid_operation
-xorx273 xor  090001000 100000010 ->  NaN Invalid_operation
-xorx274 xor  100000100 020010100 ->  NaN Invalid_operation
-xorx275 xor  100000000 070001000 ->  NaN Invalid_operation
-xorx276 xor  100000010 080010100 ->  NaN Invalid_operation
-xorx277 xor  100000000 090000010 ->  NaN Invalid_operation
--- test LSD
-xorx280 xor  001000002 100000000 ->  NaN Invalid_operation
-xorx281 xor  000000007 100000000 ->  NaN Invalid_operation
-xorx282 xor  000000008 100000000 ->  NaN Invalid_operation
-xorx283 xor  000000009 100000000 ->  NaN Invalid_operation
-xorx284 xor  100000000 000100002 ->  NaN Invalid_operation
-xorx285 xor  100100000 001000007 ->  NaN Invalid_operation
-xorx286 xor  100010000 010000008 ->  NaN Invalid_operation
-xorx287 xor  100001000 100000009 ->  NaN Invalid_operation
--- test Middie
-xorx288 xor  001020000 100000000 ->  NaN Invalid_operation
-xorx289 xor  000070001 100000000 ->  NaN Invalid_operation
-xorx290 xor  000080000 100010000 ->  NaN Invalid_operation
-xorx291 xor  000090000 100001000 ->  NaN Invalid_operation
-xorx292 xor  100000010 000020100 ->  NaN Invalid_operation
-xorx293 xor  100100000 000070010 ->  NaN Invalid_operation
-xorx294 xor  100010100 000080001 ->  NaN Invalid_operation
-xorx295 xor  100001000 000090000 ->  NaN Invalid_operation
--- signs
-xorx296 xor -100001000 -000000000 ->  NaN Invalid_operation
-xorx297 xor -100001000  000010000 ->  NaN Invalid_operation
-xorx298 xor  100001000 -000000000 ->  NaN Invalid_operation
-xorx299 xor  100001000  000011000 ->  100010000
-
--- Nmax, Nmin, Ntiny
-xorx331 xor  2   9.99999999E+999     -> NaN Invalid_operation
-xorx332 xor  3   1E-999              -> NaN Invalid_operation
-xorx333 xor  4   1.00000000E-999     -> NaN Invalid_operation
-xorx334 xor  5   1E-1007             -> NaN Invalid_operation
-xorx335 xor  6   -1E-1007            -> NaN Invalid_operation
-xorx336 xor  7   -1.00000000E-999    -> NaN Invalid_operation
-xorx337 xor  8   -1E-999             -> NaN Invalid_operation
-xorx338 xor  9   -9.99999999E+999    -> NaN Invalid_operation
-xorx341 xor  9.99999999E+999     -18 -> NaN Invalid_operation
-xorx342 xor  1E-999               01 -> NaN Invalid_operation
-xorx343 xor  1.00000000E-999     -18 -> NaN Invalid_operation
-xorx344 xor  1E-1007              18 -> NaN Invalid_operation
-xorx345 xor  -1E-1007            -10 -> NaN Invalid_operation
-xorx346 xor  -1.00000000E-999     18 -> NaN Invalid_operation
-xorx347 xor  -1E-999              10 -> NaN Invalid_operation
-xorx348 xor  -9.99999999E+999    -18 -> NaN Invalid_operation
-
--- A few other non-integers
-xorx361 xor  1.0                  1  -> NaN Invalid_operation
-xorx362 xor  1E+1                 1  -> NaN Invalid_operation
-xorx363 xor  0.0                  1  -> NaN Invalid_operation
-xorx364 xor  0E+1                 1  -> NaN Invalid_operation
-xorx365 xor  9.9                  1  -> NaN Invalid_operation
-xorx366 xor  9E+1                 1  -> NaN Invalid_operation
-xorx371 xor  0 1.0                   -> NaN Invalid_operation
-xorx372 xor  0 1E+1                  -> NaN Invalid_operation
-xorx373 xor  0 0.0                   -> NaN Invalid_operation
-xorx374 xor  0 0E+1                  -> NaN Invalid_operation
-xorx375 xor  0 9.9                   -> NaN Invalid_operation
-xorx376 xor  0 9E+1                  -> NaN Invalid_operation
-
--- All Specials are in error
-xorx780 xor -Inf  -Inf   -> NaN Invalid_operation
-xorx781 xor -Inf  -1000  -> NaN Invalid_operation
-xorx782 xor -Inf  -1     -> NaN Invalid_operation
-xorx783 xor -Inf  -0     -> NaN Invalid_operation
-xorx784 xor -Inf   0     -> NaN Invalid_operation
-xorx785 xor -Inf   1     -> NaN Invalid_operation
-xorx786 xor -Inf   1000  -> NaN Invalid_operation
-xorx787 xor -1000 -Inf   -> NaN Invalid_operation
-xorx788 xor -Inf  -Inf   -> NaN Invalid_operation
-xorx789 xor -1    -Inf   -> NaN Invalid_operation
-xorx790 xor -0    -Inf   -> NaN Invalid_operation
-xorx791 xor  0    -Inf   -> NaN Invalid_operation
-xorx792 xor  1    -Inf   -> NaN Invalid_operation
-xorx793 xor  1000 -Inf   -> NaN Invalid_operation
-xorx794 xor  Inf  -Inf   -> NaN Invalid_operation
-
-xorx800 xor  Inf  -Inf   -> NaN Invalid_operation
-xorx801 xor  Inf  -1000  -> NaN Invalid_operation
-xorx802 xor  Inf  -1     -> NaN Invalid_operation
-xorx803 xor  Inf  -0     -> NaN Invalid_operation
-xorx804 xor  Inf   0     -> NaN Invalid_operation
-xorx805 xor  Inf   1     -> NaN Invalid_operation
-xorx806 xor  Inf   1000  -> NaN Invalid_operation
-xorx807 xor  Inf   Inf   -> NaN Invalid_operation
-xorx808 xor -1000  Inf   -> NaN Invalid_operation
-xorx809 xor -Inf   Inf   -> NaN Invalid_operation
-xorx810 xor -1     Inf   -> NaN Invalid_operation
-xorx811 xor -0     Inf   -> NaN Invalid_operation
-xorx812 xor  0     Inf   -> NaN Invalid_operation
-xorx813 xor  1     Inf   -> NaN Invalid_operation
-xorx814 xor  1000  Inf   -> NaN Invalid_operation
-xorx815 xor  Inf   Inf   -> NaN Invalid_operation
-
-xorx821 xor  NaN -Inf    -> NaN Invalid_operation
-xorx822 xor  NaN -1000   -> NaN Invalid_operation
-xorx823 xor  NaN -1      -> NaN Invalid_operation
-xorx824 xor  NaN -0      -> NaN Invalid_operation
-xorx825 xor  NaN  0      -> NaN Invalid_operation
-xorx826 xor  NaN  1      -> NaN Invalid_operation
-xorx827 xor  NaN  1000   -> NaN Invalid_operation
-xorx828 xor  NaN  Inf    -> NaN Invalid_operation
-xorx829 xor  NaN  NaN    -> NaN Invalid_operation
-xorx830 xor -Inf  NaN    -> NaN Invalid_operation
-xorx831 xor -1000 NaN    -> NaN Invalid_operation
-xorx832 xor -1    NaN    -> NaN Invalid_operation
-xorx833 xor -0    NaN    -> NaN Invalid_operation
-xorx834 xor  0    NaN    -> NaN Invalid_operation
-xorx835 xor  1    NaN    -> NaN Invalid_operation
-xorx836 xor  1000 NaN    -> NaN Invalid_operation
-xorx837 xor  Inf  NaN    -> NaN Invalid_operation
-
-xorx841 xor  sNaN -Inf   ->  NaN  Invalid_operation
-xorx842 xor  sNaN -1000  ->  NaN  Invalid_operation
-xorx843 xor  sNaN -1     ->  NaN  Invalid_operation
-xorx844 xor  sNaN -0     ->  NaN  Invalid_operation
-xorx845 xor  sNaN  0     ->  NaN  Invalid_operation
-xorx846 xor  sNaN  1     ->  NaN  Invalid_operation
-xorx847 xor  sNaN  1000  ->  NaN  Invalid_operation
-xorx848 xor  sNaN  NaN   ->  NaN  Invalid_operation
-xorx849 xor  sNaN sNaN   ->  NaN  Invalid_operation
-xorx850 xor  NaN  sNaN   ->  NaN  Invalid_operation
-xorx851 xor -Inf  sNaN   ->  NaN  Invalid_operation
-xorx852 xor -1000 sNaN   ->  NaN  Invalid_operation
-xorx853 xor -1    sNaN   ->  NaN  Invalid_operation
-xorx854 xor -0    sNaN   ->  NaN  Invalid_operation
-xorx855 xor  0    sNaN   ->  NaN  Invalid_operation
-xorx856 xor  1    sNaN   ->  NaN  Invalid_operation
-xorx857 xor  1000 sNaN   ->  NaN  Invalid_operation
-xorx858 xor  Inf  sNaN   ->  NaN  Invalid_operation
-xorx859 xor  NaN  sNaN   ->  NaN  Invalid_operation
-
--- propagating NaNs
-xorx861 xor  NaN1   -Inf    -> NaN Invalid_operation
-xorx862 xor +NaN2   -1000   -> NaN Invalid_operation
-xorx863 xor  NaN3    1000   -> NaN Invalid_operation
-xorx864 xor  NaN4    Inf    -> NaN Invalid_operation
-xorx865 xor  NaN5   +NaN6   -> NaN Invalid_operation
-xorx866 xor -Inf     NaN7   -> NaN Invalid_operation
-xorx867 xor -1000    NaN8   -> NaN Invalid_operation
-xorx868 xor  1000    NaN9   -> NaN Invalid_operation
-xorx869 xor  Inf    +NaN10  -> NaN Invalid_operation
-xorx871 xor  sNaN11  -Inf   -> NaN Invalid_operation
-xorx872 xor  sNaN12  -1000  -> NaN Invalid_operation
-xorx873 xor  sNaN13   1000  -> NaN Invalid_operation
-xorx874 xor  sNaN14   NaN17 -> NaN Invalid_operation
-xorx875 xor  sNaN15  sNaN18 -> NaN Invalid_operation
-xorx876 xor  NaN16   sNaN19 -> NaN Invalid_operation
-xorx877 xor -Inf    +sNaN20 -> NaN Invalid_operation
-xorx878 xor -1000    sNaN21 -> NaN Invalid_operation
-xorx879 xor  1000    sNaN22 -> NaN Invalid_operation
-xorx880 xor  Inf     sNaN23 -> NaN Invalid_operation
-xorx881 xor +NaN25  +sNaN24 -> NaN Invalid_operation
-xorx882 xor -NaN26    NaN28 -> NaN Invalid_operation
-xorx883 xor -sNaN27  sNaN29 -> NaN Invalid_operation
-xorx884 xor  1000    -NaN30 -> NaN Invalid_operation
-xorx885 xor  1000   -sNaN31 -> NaN Invalid_operation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/doctest_aliases.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/doctest_aliases.py
deleted file mode 100644
index 80fa2a0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/doctest_aliases.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# Used by test_doctest.py.
-
-class TwoNames:
-    '''f() and g() are two names for the same method'''
-
-    def f(self):
-        '''
-        >>> print TwoNames().f()
-        f
-        '''
-        return 'f'
-
-    g = f # define an alias for f
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/double_const.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/double_const.py
deleted file mode 100644
index 0128866..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/double_const.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from test.test_support import TestFailed
-
-# A test for SF bug 422177:  manifest float constants varied way too much in
-# precision depending on whether Python was loading a module for the first
-# time, or reloading it from a precompiled .pyc.  The "expected" failure
-# mode is that when test_import imports this after all .pyc files have been
-# erased, it passes, but when test_import imports this from
-# double_const.pyc, it fails.  This indicates a woeful loss of precision in
-# the marshal format for doubles.  It's also possible that repr() doesn't
-# produce enough digits to get reasonable precision for this box.
-
-PI    = 3.14159265358979324
-TWOPI = 6.28318530717958648
-
-PI_str    = "3.14159265358979324"
-TWOPI_str = "6.28318530717958648"
-
-# Verify that the double x is within a few bits of eval(x_str).
-def check_ok(x, x_str):
-    assert x > 0.0
-    x2 = eval(x_str)
-    assert x2 > 0.0
-    diff = abs(x - x2)
-    # If diff is no larger than 3 ULP (wrt x2), then diff/8 is no larger
-    # than 0.375 ULP, so adding diff/8 to x2 should have no effect.
-    if x2 + (diff / 8.) != x2:
-        raise TestFailed("Manifest const %s lost too much precision " % x_str)
-
-check_ok(PI, PI_str)
-check_ok(TWOPI, TWOPI_str)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/empty.vbs b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/empty.vbs
deleted file mode 100644
index f35f076..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/empty.vbs
+++ /dev/null
@@ -1 +0,0 @@
-'Empty VBS file, does nothing.  Helper for Lib\test\test_startfile.py.
\ No newline at end of file
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/exception_hierarchy.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/exception_hierarchy.txt
deleted file mode 100644
index f4dd735..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/exception_hierarchy.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-BaseException
- +-- SystemExit
- +-- KeyboardInterrupt
- +-- GeneratorExit
- +-- Exception
-      +-- StopIteration
-      +-- StandardError
-      |    +-- BufferError
-      |    +-- ArithmeticError
-      |    |    +-- FloatingPointError
-      |    |    +-- OverflowError
-      |    |    +-- ZeroDivisionError
-      |    +-- AssertionError
-      |    +-- AttributeError
-      |    +-- EnvironmentError
-      |    |    +-- IOError
-      |    |    +-- OSError
-      |    |         +-- WindowsError (Windows)
-      |    |         +-- VMSError (VMS)
-      |    +-- EOFError
-      |    +-- ImportError
-      |    +-- LookupError
-      |    |    +-- IndexError
-      |    |    +-- KeyError
-      |    +-- MemoryError
-      |    +-- NameError
-      |    |    +-- UnboundLocalError
-      |    +-- ReferenceError
-      |    +-- RuntimeError
-      |    |    +-- NotImplementedError
-      |    +-- SyntaxError
-      |    |    +-- IndentationError
-      |    |         +-- TabError
-      |    +-- SystemError
-      |    +-- TypeError
-      |    +-- ValueError
-      |         +-- UnicodeError
-      |              +-- UnicodeDecodeError
-      |              +-- UnicodeEncodeError
-      |              +-- UnicodeTranslateError
-      +-- Warning
-           +-- DeprecationWarning
-           +-- PendingDeprecationWarning
-           +-- RuntimeWarning
-           +-- SyntaxWarning
-           +-- UserWarning
-           +-- FutureWarning
-	   +-- ImportWarning
-	   +-- UnicodeWarning
-	   +-- BytesWarning
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/floating_points.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/floating_points.txt
deleted file mode 100644
index 5dd436c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/floating_points.txt
+++ /dev/null
@@ -1,1028 +0,0 @@
-# These numbers are used to test floating point binary-to-decimal conversion.
-# They are based on the TCL test suite (tests/expr.test), which is based on
-# test data from:
-# Brigitte Verdonk, Annie Cuyt, Dennis Verschaeren, A precision and range
-# independent tool for testing floating-point arithmetic II: Conversions,
-# ACM Transactions on Mathematical Software 27:2 (March 2001), pp. 119-140.
-
-0E0
--0E0
-1E0
-15E-1
-125E-2
-1125E-3
-10625E-4
-103125E-5
-1015625E-6
-10078125E-7
-100390625E-8
-1001953125E-9
-10009765625E-10
-100048828125E-11
-1000244140625E-12
-10001220703125E-13
-100006103515625E-14
-1000030517578125E-15
-10000152587890625E-16
-+8E153
--1E153
-+9E306
--2E153
-+7E-304
--3E-49
-+7E-303
--6E-49
-+9E43
--9E44
-+8E303
--1E303
-+7E-287
--2E-204
-+2E-205
--9E-47
-+34E195
--68E195
-+85E194
--67E97
-+93E-234
--19E-87
-+38E-87
--38E-88
--69E220
-+18E43
--36E43
-+61E-99
--43E-92
-+86E-92
--51E-74
-+283E85
--566E85
-+589E187
--839E143
--744E-234
-+930E-235
--186E-234
-+604E175
--302E175
-+755E174
--151E175
-+662E-213
--408E-74
-+510E-75
-+6782E55
--2309E92
-+7963E34
--3391E55
-+7903E-96
--7611E-226
-+4907E-196
--5547E-311
-+5311E241
--5311E243
-+5311E242
-+9269E-45
--8559E-289
-+8699E-276
--8085E-64
-+74819E201
--82081E41
-+51881E37
--55061E157
-+77402E-215
--33891E-92
-+38701E-215
--82139E-76
-+75859E25
-+89509E140
--57533E287
-+46073E-32
--92146E-32
-+83771E-74
--34796E-276
-+584169E229
-+164162E41
--328324E41
-+209901E-11
--419802E-11
-+940189E-112
--892771E-213
-+757803E120
--252601E120
-+252601E121
--505202E120
-+970811E-264
--654839E-60
-+289767E-178
--579534E-178
--8823691E130
-+9346704E229
--1168338E229
--6063369E-136
-+3865421E-225
--5783893E-127
-+2572231E223
--5144462E223
-+1817623E109
-+6431543E-97
--5444097E-21
-+8076999E-121
--9997649E-270
-+50609263E157
-+70589528E130
--88236910E129
-+87575437E-310
--23135572E-127
-+85900881E177
--84863171E113
-+68761586E232
--50464069E286
-+27869147E-248
--55738294E-248
-+70176353E-53
--80555086E-32
--491080654E121
-+526250918E287
--245540327E121
--175150874E-310
-+350301748E-310
--437877185E-311
-+458117166E52
--916234332E52
-+229058583E52
--525789935E98
-+282926897E-227
--565853794E-227
-+667284113E-240
--971212611E-126
-+9981396317E-182
--5035231965E-156
-+8336960483E-153
--8056371144E-155
-+6418488827E79
--3981006983E252
-+7962013966E252
--4713898551E261
-+8715380633E-58
--9078555839E-109
-+9712126110E-127
-+42333842451E201
--84667684902E201
-+23792120709E-315
--78564021519E-227
-+71812054883E-188
--30311163631E-116
-+71803914657E292
-+36314223356E-109
-+18157111678E-109
--45392779195E-110
-+778380362293E218
--685763015669E280
-+952918668151E70
--548357443505E32
-+384865004907E-285
--769730009814E-285
-+697015418417E-93
--915654049301E-28
-+178548656339E169
--742522891517E259
-+742522891517E258
--357097312678E169
--3113521449172E218
-+3891901811465E217
--1556760724586E218
-+9997878507563E-195
--7247563029154E-319
-+3623781514577E-319
--3092446298323E-200
-+6363857920591E145
--8233559360849E94
-+2689845954547E49
--5379691909094E49
-+5560322501926E-301
--7812878489261E-179
-+8439398533053E-256
--2780161250963E-301
--87605699161665E155
--17521139832333E156
--88218101363513E-170
-+38639244311627E-115
-+35593959807306E261
--53390939710959E260
-+71187919614612E261
--88984899518265E260
-+77003665618895E-73
--15400733123779E-72
-+61602932495116E-72
--30801466247558E-72
-+834735494917063E-300
--589795149206434E-151
-+475603213226859E-42
--294897574603217E-151
-+850813008001913E93
--203449172043339E185
-+406898344086678E185
--813796688173356E185
-+6045338514609393E244
--5145963778954906E142
-+2572981889477453E142
--6965949469487146E74
-+6182410494241627E-119
--8510309498186985E-277
-+6647704637273331E-212
--2215901545757777E-212
-+3771476185376383E276
--3729901848043846E212
-+3771476185376383E277
--9977830465649166E119
-+8439928496349319E-142
--8204230082070882E-59
-+8853686434843997E-244
--5553274272288559E-104
-+36149023611096162E144
--36149023611096162E147
-+18074511805548081E146
--18074511805548081E147
-+97338774138954421E-290
--88133809804950961E-308
-+94080055902682397E-243
--24691002732654881E-115
-+52306490527514614E49
--26153245263757307E49
-+55188692254193604E165
--68985865317742005E164
-+27176258005319167E-261
--73169230107256116E-248
-+91461537634070145E-249
--54352516010638334E-261
-+586144289638535878E280
--601117006785295431E245
-+293072144819267939E280
--953184713238516652E272
-+902042358290366539E-281
--557035730189854663E-294
-+902042358290366539E-280
--354944100507554393E-238
-+272104041512242479E199
--816312124536727437E199
-+544208083024484958E199
--792644927852378159E78
--679406450132979175E-263
-+543525160106383340E-262
-+7400253695682920196E215
--1850063423920730049E215
-+3700126847841460098E215
--9250317119603650245E214
-+8396094300569779681E-252
--3507665085003296281E-75
-+7015330170006592562E-75
--7015330170006592562E-74
-+7185620434951919351E205
--1360520207561212395E198
-+2178999185345151731E-184
--8691089486201567102E-218
-+4345544743100783551E-218
--4357998370690303462E-184
-+59825267349106892461E177
--62259110684423957791E47
-+58380168477038565599E265
--62259110684423957791E48
--33584377202279118724E-252
--57484963479615354808E205
-+71856204349519193510E204
--14371240869903838702E205
-+36992084760177624177E-318
--73984169520355248354E-318
-+99257763227713890244E-115
--87336362425182547697E-280
-+7E289
--3E153
-+6E153
--5E243
-+7E-161
--7E-172
-+8E-63
--7E-113
-+8E126
--4E126
-+5E125
--1E126
-+8E-163
--1E-163
-+2E-163
--4E-163
-+51E195
--37E46
-+74E46
--56E289
-+69E-145
--70E-162
-+56E-161
--21E-303
-+34E-276
--68E-276
-+85E-277
--87E-274
-+829E102
--623E100
-+723E-162
--457E-102
-+914E-102
--323E-135
-+151E176
--302E176
-+921E90
--604E176
-+823E-206
--463E-114
-+348E-274
-+9968E100
--6230E99
-+1246E100
-+6676E-296
--8345E-297
-+1669E-296
--3338E-296
-+3257E58
--6514E58
-+2416E176
-+8085E-63
--3234E-62
-+1617E-62
--6468E-62
-+53418E111
--60513E160
-+26709E111
--99447E166
-+12549E48
--25098E48
-+50196E48
--62745E47
-+83771E-73
--97451E-167
-+86637E-203
--75569E-254
-+473806E83
--947612E83
-+292369E76
--584738E76
-+933587E-140
--720919E-14
-+535001E-149
--890521E-235
-+548057E81
--706181E88
-+820997E106
--320681E63
-+928609E-261
--302276E-254
-+151138E-254
-+4691773E45
--9383546E45
-+3059949E-243
--6119898E-243
-+5356626E-213
--4877378E-199
-+7716693E223
--5452869E109
-+4590831E156
--9181662E156
--3714436E-261
-+4643045E-262
--7428872E-261
-+52942146E130
--27966061E145
-+26471073E130
--55932122E145
-+95412548E-99
--47706274E-99
-+23853137E-99
--78493654E-301
-+65346417E29
--51083099E167
-+89396333E264
--84863171E114
-+59540836E-251
--74426045E-252
-+14885209E-251
--29770418E-251
-+982161308E122
--245540327E122
-+491080654E122
-+525452622E-310
--771837113E-134
-+820858081E-150
--262726311E-310
-+923091487E209
--653777767E273
-+842116236E-53
--741111169E-202
-+839507247E-284
--951487269E-264
--9821613080E121
-+6677856011E-31
--3573796826E-266
-+7147593652E-266
--9981396317E-181
-+3268888835E272
--2615111068E273
-+1307555534E273
-+2990671154E-190
--1495335577E-190
-+5981342308E-190
--7476677885E-191
-+82259684194E-202
--93227267727E-49
-+41129842097E-202
--47584241418E-314
--79360293406E92
-+57332259349E225
--57202326162E111
-+86860597053E-206
--53827010643E-200
-+53587107423E-61
-+635007636765E200
-+508006109412E201
--254003054706E201
-+561029718715E-72
--897647549944E-71
-+112205943743E-71
--873947086081E-236
-+809184709177E116
--573112917422E81
-+286556458711E81
-+952805821491E-259
--132189992873E-44
--173696038493E-144
-+1831132757599E-107
--9155663787995E-108
-+7324531030396E-107
--9277338894969E-200
-+8188292423973E287
--5672557437938E59
-+2836278718969E59
--9995153153494E54
-+9224786422069E-291
--3142213164987E-294
-+6284426329974E-294
--8340483752889E-301
-+67039371486466E89
--62150786615239E197
-+33519685743233E89
--52563419496999E156
-+32599460466991E-65
--41010988798007E-133
-+65198920933982E-65
--82021977596014E-133
-+80527976643809E61
--74712611505209E158
-+53390939710959E261
--69277302659155E225
-+46202199371337E-72
--23438635467783E-179
-+41921560615349E-67
--92404398742674E-72
-+738545606647197E124
--972708181182949E117
--837992143580825E87
-+609610927149051E-255
--475603213226859E-41
-+563002800671023E-177
--951206426453718E-41
-+805416432656519E202
--530658674694337E159
-+946574173863918E208
--318329953318553E113
--462021993713370E-73
-+369617594970696E-72
-+3666156212014994E233
--1833078106007497E233
-+8301790508624232E174
--1037723813578029E174
-+7297662880581139E-286
--5106185698912191E-276
-+7487252720986826E-165
--3743626360493413E-165
-+3773057430100257E230
--7546114860200514E230
-+4321222892463822E58
--7793560217139653E51
-+26525993941010681E112
--53051987882021362E112
-+72844871414247907E77
--88839359596763261E105
-+18718131802467065E-166
--14974505441973652E-165
-+73429396004640239E106
--58483921078398283E57
-+41391519190645203E165
--82783038381290406E165
-+58767043776702677E-163
--90506231831231999E-129
-+64409240769861689E-159
--77305427432277771E-190
-+476592356619258326E273
--953184713238516652E273
-+899810892172646163E283
--929167076892018333E187
-+647761278967534239E-312
--644290479820542942E-180
-+926145344610700019E-225
--958507931896511964E-246
-+272104041512242479E200
--792644927852378159E79
-+544208083024484958E200
--929963218616126365E290
-+305574339166810102E-219
--152787169583405051E-219
-+611148678333620204E-219
--763935847917025255E-220
-+7439550220920798612E158
--3719775110460399306E158
-+9299437776150998265E157
--7120190517612959703E120
-+3507665085003296281E-73
--7015330170006592562E-73
--6684428762278255956E-294
--1088416166048969916E200
--8707329328391759328E200
-+4439021781608558002E-65
--8878043563217116004E-65
-+2219510890804279001E-65
-+33051223951904955802E55
--56961524140903677624E120
-+71201905176129597030E119
-+14030660340013185124E-73
--17538325425016481405E-74
-+67536228609141569109E-133
--35620497849450218807E-306
-+66550376797582521751E-126
--71240995698900437614E-306
-+3E24
--6E24
-+6E26
--7E25
-+1E-14
--2E-14
-+4E-14
--8E-14
-+5E26
--8E27
-+1E27
--4E27
-+9E-13
--7E-20
-+56E25
--70E24
-+51E26
-+71E-17
--31E-5
-+62E-5
--94E-8
-+67E27
--81E24
-+54E23
--54E25
-+63E-22
--63E-23
-+43E-4
--86E-4
-+942E26
--471E25
-+803E24
--471E26
--409E-21
-+818E-21
--867E-8
-+538E27
--857E24
-+269E27
--403E26
-+959E-7
--959E-6
-+373E-27
--746E-27
-+4069E24
--4069E23
--8138E24
-+8294E-15
--4147E-14
-+4147E-15
--8294E-14
-+538E27
--2690E26
-+269E27
--2152E27
-+1721E-17
--7979E-27
-+6884E-17
--8605E-18
-+82854E27
--55684E24
-+27842E24
--48959E25
-+81921E-17
--76207E-8
-+4147E-15
--41470E-16
-+89309E24
-+75859E26
--75859E25
-+14257E-23
--28514E-23
-+57028E-23
--71285E-24
-+344863E27
--951735E27
-+200677E23
--401354E24
-+839604E-11
--209901E-11
-+419802E-11
--537734E-24
-+910308E26
--227577E26
-+455154E26
--531013E25
-+963019E-21
--519827E-13
-+623402E-27
--311701E-27
-+9613651E26
--9191316E23
-+4595658E23
--2297829E23
--1679208E-11
-+3379223E27
--6758446E27
-+5444097E-21
--8399969E-27
-+8366487E-16
--8366487E-15
-+65060671E25
-+65212389E23
-+55544957E-13
--51040905E-20
-+99585767E-22
--99585767E-23
-+40978393E26
--67488159E24
-+69005339E23
--81956786E26
--87105552E-21
-+10888194E-21
--21776388E-21
-+635806667E27
--670026614E25
-+335013307E26
--335013307E25
-+371790617E-24
--371790617E-25
-+743581234E-24
--743581234E-25
-+202464477E24
--404928954E24
-+997853758E27
--997853758E26
-+405498418E-17
--582579084E-14
-+608247627E-18
--291289542E-14
--9537100005E26
-+6358066670E27
--1271613334E27
-+5229646999E-16
-+5229646999E-17
-+4429943614E24
--8859887228E24
-+2214971807E24
--4176887093E26
-+4003495257E-20
--4361901637E-23
-+8723803274E-23
--8006990514E-20
-+72835110098E27
--36417555049E27
-+84279630104E25
--84279630104E24
-+21206176437E-27
--66461566917E-22
-+64808355539E-16
--84932679673E-19
-+65205430094E26
--68384463429E25
-+32602715047E26
--62662203426E27
-+58784444678E-18
--50980203373E-21
-+29392222339E-18
--75529940323E-27
--937495906299E26
-+842642485799E-20
--387824150699E-23
-+924948814726E-27
--775648301398E-23
-+547075707432E25
-+683844634290E24
--136768926858E25
-+509802033730E-22
-+101960406746E-21
--815683253968E-21
-+7344124123524E24
--9180155154405E23
-+6479463327323E27
--1836031030881E24
-+4337269293039E-19
--4599163554373E-23
-+9198327108746E-23
-+4812803938347E27
--8412030890011E23
-+9625607876694E27
--4739968828249E24
-+9697183891673E-23
--7368108517543E-20
-+51461358161422E25
--77192037242133E26
-+77192037242133E25
--51461358161422E27
-+43999661561541E-21
--87999323123082E-21
-+48374886826137E-26
--57684246567111E-23
-+87192805957686E23
--75108713005913E24
-+64233110587487E27
--77577471133384E-23
-+48485919458365E-24
--56908598265713E-26
-+589722294620133E23
-+652835804449289E-22
--656415363936202E-23
-+579336749585745E-25
--381292764980839E-26
-+965265859649698E23
--848925235434882E27
-+536177612222491E23
--424462617717441E27
-+276009279888989E-27
--608927158043691E-26
-+552018559777978E-27
--425678377667758E-22
-+8013702726927119E26
-+8862627962362001E27
--5068007907757162E26
--7379714799828406E-23
-+4114538064016107E-27
--3689857399914203E-23
-+5575954851815478E23
-+3395700941739528E27
-+4115535777581961E-23
--8231071555163922E-23
-+6550246696190871E-26
--68083046403986701E27
-+43566388595783643E27
--87132777191567286E27
-+59644881059342141E25
--83852770718576667E23
-+99482967418206961E-25
--99482967418206961E-26
-+87446669969994614E-27
--43723334984997307E-27
-+5E24
--8E25
-+1E25
--4E25
-+2E-5
--5E-6
-+4E-5
--3E-20
-+3E27
--9E26
-+7E25
--6E27
-+2E-21
--5E-22
--4E-21
-+87E25
--97E24
-+82E-24
--41E-24
-+76E-23
-+83E25
--50E27
-+25E27
--99E27
-+97E-10
--57E-20
-+997E23
-+776E24
--388E24
-+521E-10
--506E-26
-+739E-10
--867E-7
--415E24
-+332E25
--664E25
-+291E-13
--982E-8
-+582E-13
--491E-8
-+4574E26
--8609E26
-+2287E26
--4818E24
-+6529E-8
--8151E-21
-+1557E-12
--2573E-18
-+4929E-16
--3053E-22
-+9858E-16
--7767E-11
-+54339E26
--62409E25
-+32819E27
--89849E27
-+63876E-20
--15969E-20
-+31938E-20
--79845E-21
-+89306E27
--25487E24
-+79889E24
--97379E26
-+81002E-8
--43149E-25
-+40501E-8
--60318E-10
--648299E27
-+780649E24
-+720919E-14
--629703E-11
-+557913E24
--847899E23
-+565445E27
--736531E24
-+680013E-19
--529981E-10
-+382923E-23
--633614E-18
-+2165479E27
--8661916E27
-+4330958E27
--9391993E22
--5767352E-14
-+7209190E-15
--1441838E-14
-+8478990E22
-+1473062E24
-+8366487E-14
--8399969E-25
-+9366737E-12
--9406141E-13
-+65970979E24
--65060671E26
-+54923002E27
--63846927E25
-+99585767E-21
-+67488159E25
--69005339E24
-+81956786E27
--40978393E27
-+77505754E-12
--38752877E-12
-+82772981E-15
--95593517E-25
-+200036989E25
--772686455E27
-+859139907E23
--400073978E25
-+569014327E-14
--794263862E-15
-+397131931E-15
--380398957E-16
-+567366773E27
--337440795E24
-+134976318E25
--269952636E25
-+932080597E-20
--331091924E-15
--413864905E-16
-+8539246247E26
--5859139791E26
-+6105010149E24
--3090745820E27
-+3470877773E-20
--6136309089E-27
-+8917758713E-19
--6941755546E-20
-+9194900535E25
--1838980107E26
-+7355920428E26
--3677960214E26
-+8473634343E-17
--8870766274E-16
-+4435383137E-16
--9598990129E-15
-+71563496764E26
--89454370955E25
-+17890874191E26
--35781748382E26
-+57973447842E-19
--28986723921E-19
-+76822711313E-19
--97699466874E-20
-+67748656762E27
--19394840991E24
-+38789681982E24
--33874328381E27
-+54323763886E-27
--58987193887E-20
-+27161881943E-27
--93042648033E-19
-+520831059055E27
--768124264394E25
-+384062132197E25
-+765337749889E-25
-+794368912771E25
--994162090146E23
-+781652779431E26
-+910077190046E-26
--455038595023E-26
-+471897551096E-20
--906698409911E-21
-+8854128003935E25
--8146122716299E27
-+7083302403148E26
--3541651201574E26
-+8394920649291E-25
--7657975756753E-22
-+5473834002228E-20
--6842292502785E-21
--2109568884597E25
-+8438275538388E25
--4219137769194E25
-+3200141789841E-25
--8655689322607E-22
-+6400283579682E-25
--8837719634493E-21
-+19428217075297E24
--38856434150594E24
-+77712868301188E24
--77192037242133E27
-+76579757567530E-23
-+15315951513506E-22
--38289878783765E-23
-+49378033925202E25
--50940527102367E24
-+98756067850404E25
--99589397544892E26
--56908598265713E-25
-+97470695699657E-22
--35851901247343E-25
-+154384074484266E27
--308768148968532E27
-+910990389005985E23
-+271742424169201E-27
--543484848338402E-27
-+162192083357563E-26
--869254552770081E-23
-+664831007626046E24
--332415503813023E24
-+943701829041427E24
--101881054204734E24
-+828027839666967E-27
--280276135608777E-27
-+212839188833879E-21
--113817196531426E-25
-+9711553197796883E27
--2739849386524269E26
-+5479698773048538E26
-+6124568318523113E-25
--1139777988171071E-24
-+6322612303128019E-27
--2955864564844617E-25
--9994029144998961E25
--2971238324022087E27
--1656055679333934E-27
--1445488709150234E-26
-+55824717499885172E27
--69780896874856465E26
-+84161538867545199E25
--27912358749942586E27
-+24711112462926331E-25
--12645224606256038E-27
--12249136637046226E-25
-+74874448287465757E27
--35642836832753303E24
--71285673665506606E24
-+43723334984997307E-26
-+10182419849537963E-24
--93501703572661982E-26
-
-# A value that caused a crash in debug builds for Python >= 2.7, 3.1
-# See http://bugs.python.org/issue7632
-2183167012312112312312.23538020374420446192e-370
-
-# Another value designed to test a corner case of Python's strtod code.
-0.99999999999999999999999999999999999999999e+23
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/fork_wait.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/fork_wait.py
deleted file mode 100644
index d69403e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/fork_wait.py
+++ /dev/null
@@ -1,79 +0,0 @@
-"""This test case provides support for checking forking and wait behavior.
-
-To test different wait behavior, override the wait_impl method.
-
-We want fork1() semantics -- only the forking thread survives in the
-child after a fork().
-
-On some systems (e.g. Solaris without posix threads) we find that all
-active threads survive in the child after a fork(); this is an error.
-
-While BeOS doesn't officially support fork and native threading in
-the same application, the present example should work just fine.  DC
-"""
-
-import os, sys, time, unittest
-import test.test_support as test_support
-thread = test_support.import_module('thread')
-
-LONGSLEEP = 2
-SHORTSLEEP = 0.5
-NUM_THREADS = 4
-
-class ForkWait(unittest.TestCase):
-
-    def setUp(self):
-        self.alive = {}
-        self.stop = 0
-
-    def f(self, id):
-        while not self.stop:
-            self.alive[id] = os.getpid()
-            try:
-                time.sleep(SHORTSLEEP)
-            except IOError:
-                pass
-
-    def wait_impl(self, cpid):
-        for i in range(10):
-            # waitpid() shouldn't hang, but some of the buildbots seem to hang
-            # in the forking tests.  This is an attempt to fix the problem.
-            spid, status = os.waitpid(cpid, os.WNOHANG)
-            if spid == cpid:
-                break
-            time.sleep(2 * SHORTSLEEP)
-
-        self.assertEqual(spid, cpid)
-        self.assertEqual(status, 0, "cause = %d, exit = %d" % (status&0xff, status>>8))
-
-    def test_wait(self):
-        for i in range(NUM_THREADS):
-            thread.start_new(self.f, (i,))
-
-        time.sleep(LONGSLEEP)
-
-        a = self.alive.keys()
-        a.sort()
-        self.assertEqual(a, range(NUM_THREADS))
-
-        prefork_lives = self.alive.copy()
-
-        if sys.platform in ['unixware7']:
-            cpid = os.fork1()
-        else:
-            cpid = os.fork()
-
-        if cpid == 0:
-            # Child
-            time.sleep(LONGSLEEP)
-            n = 0
-            for key in self.alive:
-                if self.alive[key] != prefork_lives[key]:
-                    n += 1
-            os._exit(n)
-        else:
-            # Parent
-            self.wait_impl(cpid)
-            # Tell threads to die
-            self.stop = 1
-            time.sleep(2*SHORTSLEEP) # Wait for threads to die
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/formatfloat_testcases.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/formatfloat_testcases.txt
deleted file mode 100644
index 2df9d0c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/formatfloat_testcases.txt
+++ /dev/null
@@ -1,380 +0,0 @@
--- 'f' code formatting, with explicit precision (>= 0).  Output always
--- has the given number of places after the point;  zeros are added if
--- necessary to make this true.
-
--- zeros
-%.0f 0 -> 0
-%.1f 0 -> 0.0
-%.2f 0 -> 0.00
-%.3f 0 -> 0.000
-%.50f 0 -> 0.00000000000000000000000000000000000000000000000000
-
--- precision 0;  result should never include a .
-%.0f 1.5 -> 2
-%.0f 2.5 -> 2
-%.0f 3.5 -> 4
-%.0f 0.0 -> 0
-%.0f 0.1 -> 0
-%.0f 0.001 -> 0
-%.0f 10.0 -> 10
-%.0f 10.1 -> 10
-%.0f 10.01 -> 10
-%.0f 123.456 -> 123
-%.0f 1234.56 -> 1235
-%.0f 1e49 -> 9999999999999999464902769475481793196872414789632
-%.0f 9.9999999999999987e+49 -> 99999999999999986860582406952576489172979654066176
-%.0f 1e50 -> 100000000000000007629769841091887003294964970946560
-
--- precision 1
-%.1f 0.0001 -> 0.0
-%.1f 0.001 -> 0.0
-%.1f 0.01 -> 0.0
-%.1f 0.04 -> 0.0
-%.1f 0.06 -> 0.1
-%.1f 0.25 -> 0.2
-%.1f 0.75 -> 0.8
-%.1f 1.4 -> 1.4
-%.1f 1.5 -> 1.5
-%.1f 10.0 -> 10.0
-%.1f 1000.03 -> 1000.0
-%.1f 1234.5678 -> 1234.6
-%.1f 1234.7499 -> 1234.7
-%.1f 1234.75 -> 1234.8
-
--- precision 2
-%.2f 0.0001 -> 0.00
-%.2f 0.001 -> 0.00
-%.2f 0.004999 -> 0.00
-%.2f 0.005001 -> 0.01
-%.2f 0.01 -> 0.01
-%.2f 0.125 -> 0.12
-%.2f 0.375 -> 0.38
-%.2f 1234500 -> 1234500.00
-%.2f 1234560 -> 1234560.00
-%.2f 1234567 -> 1234567.00
-%.2f 1234567.8 -> 1234567.80
-%.2f 1234567.89 -> 1234567.89
-%.2f 1234567.891 -> 1234567.89
-%.2f 1234567.8912 -> 1234567.89
-
--- alternate form always includes a decimal point.  This only
--- makes a difference when the precision is 0.
-%#.0f 0 -> 0.
-%#.1f 0 -> 0.0
-%#.0f 1.5 -> 2.
-%#.0f 2.5 -> 2.
-%#.0f 10.1 -> 10.
-%#.0f 1234.56 -> 1235.
-%#.1f 1.4 -> 1.4
-%#.2f 0.375 -> 0.38
-
--- if precision is omitted it defaults to 6
-%f 0 -> 0.000000
-%f 1230000 -> 1230000.000000
-%f 1234567 -> 1234567.000000
-%f 123.4567 -> 123.456700
-%f 1.23456789 -> 1.234568
-%f 0.00012 -> 0.000120
-%f 0.000123 -> 0.000123
-%f 0.00012345 -> 0.000123
-%f 0.000001 -> 0.000001
-%f 0.0000005001 -> 0.000001
-%f 0.0000004999 -> 0.000000
-
--- nans and infinities
-%f nan -> nan
-%f inf -> inf
-%f -infinity -> -inf
-%F nan -> NAN
-%F infinity -> INF
-%F -inf -> -INF
-
--- 'e' code formatting with explicit precision (>= 0). Output should
--- always have exactly the number of places after the point that were
--- requested.
-
--- zeros
-%.0e 0 -> 0e+00
-%.1e 0 -> 0.0e+00
-%.2e 0 -> 0.00e+00
-%.10e 0 -> 0.0000000000e+00
-%.50e 0 -> 0.00000000000000000000000000000000000000000000000000e+00
-
--- precision 0.  no decimal point in the output
-%.0e 0.01 -> 1e-02
-%.0e 0.1 -> 1e-01
-%.0e 1 -> 1e+00
-%.0e 10 -> 1e+01
-%.0e 100 -> 1e+02
-%.0e 0.012 -> 1e-02
-%.0e 0.12 -> 1e-01
-%.0e 1.2 -> 1e+00
-%.0e 12 -> 1e+01
-%.0e 120 -> 1e+02
-%.0e 123.456 -> 1e+02
-%.0e 0.000123456 -> 1e-04
-%.0e 123456000 -> 1e+08
-%.0e 0.5 -> 5e-01
-%.0e 1.4 -> 1e+00
-%.0e 1.5 -> 2e+00
-%.0e 1.6 -> 2e+00
-%.0e 2.4999999 -> 2e+00
-%.0e 2.5 -> 2e+00
-%.0e 2.5000001 -> 3e+00
-%.0e 3.499999999999 -> 3e+00
-%.0e 3.5 -> 4e+00
-%.0e 4.5 -> 4e+00
-%.0e 5.5 -> 6e+00
-%.0e 6.5 -> 6e+00
-%.0e 7.5 -> 8e+00
-%.0e 8.5 -> 8e+00
-%.0e 9.4999 -> 9e+00
-%.0e 9.5 -> 1e+01
-%.0e 10.5 -> 1e+01
-%.0e 14.999 -> 1e+01
-%.0e 15 -> 2e+01
-
--- precision 1
-%.1e 0.0001 -> 1.0e-04
-%.1e 0.001 -> 1.0e-03
-%.1e 0.01 -> 1.0e-02
-%.1e 0.1 -> 1.0e-01
-%.1e 1 -> 1.0e+00
-%.1e 10 -> 1.0e+01
-%.1e 100 -> 1.0e+02
-%.1e 120 -> 1.2e+02
-%.1e 123 -> 1.2e+02
-%.1e 123.4 -> 1.2e+02
-
--- precision 2
-%.2e 0.00013 -> 1.30e-04
-%.2e 0.000135 -> 1.35e-04
-%.2e 0.0001357 -> 1.36e-04
-%.2e 0.0001 -> 1.00e-04
-%.2e 0.001 -> 1.00e-03
-%.2e 0.01 -> 1.00e-02
-%.2e 0.1 -> 1.00e-01
-%.2e 1 -> 1.00e+00
-%.2e 10 -> 1.00e+01
-%.2e 100 -> 1.00e+02
-%.2e 1000 -> 1.00e+03
-%.2e 1500 -> 1.50e+03
-%.2e 1590 -> 1.59e+03
-%.2e 1598 -> 1.60e+03
-%.2e 1598.7 -> 1.60e+03
-%.2e 1598.76 -> 1.60e+03
-%.2e 9999 -> 1.00e+04
-
--- omitted precision defaults to 6
-%e 0 -> 0.000000e+00
-%e 165 -> 1.650000e+02
-%e 1234567 -> 1.234567e+06
-%e 12345678 -> 1.234568e+07
-%e 1.1 -> 1.100000e+00
-
--- alternate form always contains a decimal point.  This only makes
--- a difference when precision is 0.
-
-%#.0e 0.01 -> 1.e-02
-%#.0e 0.1 -> 1.e-01
-%#.0e 1 -> 1.e+00
-%#.0e 10 -> 1.e+01
-%#.0e 100 -> 1.e+02
-%#.0e 0.012 -> 1.e-02
-%#.0e 0.12 -> 1.e-01
-%#.0e 1.2 -> 1.e+00
-%#.0e 12 -> 1.e+01
-%#.0e 120 -> 1.e+02
-%#.0e 123.456 -> 1.e+02
-%#.0e 0.000123456 -> 1.e-04
-%#.0e 123456000 -> 1.e+08
-%#.0e 0.5 -> 5.e-01
-%#.0e 1.4 -> 1.e+00
-%#.0e 1.5 -> 2.e+00
-%#.0e 1.6 -> 2.e+00
-%#.0e 2.4999999 -> 2.e+00
-%#.0e 2.5 -> 2.e+00
-%#.0e 2.5000001 -> 3.e+00
-%#.0e 3.499999999999 -> 3.e+00
-%#.0e 3.5 -> 4.e+00
-%#.0e 4.5 -> 4.e+00
-%#.0e 5.5 -> 6.e+00
-%#.0e 6.5 -> 6.e+00
-%#.0e 7.5 -> 8.e+00
-%#.0e 8.5 -> 8.e+00
-%#.0e 9.4999 -> 9.e+00
-%#.0e 9.5 -> 1.e+01
-%#.0e 10.5 -> 1.e+01
-%#.0e 14.999 -> 1.e+01
-%#.0e 15 -> 2.e+01
-%#.1e 123.4 -> 1.2e+02
-%#.2e 0.0001357 -> 1.36e-04
-
--- nans and infinities
-%e nan -> nan
-%e inf -> inf
-%e -infinity -> -inf
-%E nan -> NAN
-%E infinity -> INF
-%E -inf -> -INF
-
--- 'g' code formatting.
-
--- zeros
-%.0g 0 -> 0
-%.1g 0 -> 0
-%.2g 0 -> 0
-%.3g 0 -> 0
-%.4g 0 -> 0
-%.10g 0 -> 0
-%.50g 0 -> 0
-%.100g 0 -> 0
-
--- precision 0 doesn't make a lot of sense for the 'g' code (what does
--- it mean to have no significant digits?); in practice, it's interpreted
--- as identical to precision 1
-%.0g 1000 -> 1e+03
-%.0g 100 -> 1e+02
-%.0g 10 -> 1e+01
-%.0g 1 -> 1
-%.0g 0.1 -> 0.1
-%.0g 0.01 -> 0.01
-%.0g 1e-3 -> 0.001
-%.0g 1e-4 -> 0.0001
-%.0g 1e-5 -> 1e-05
-%.0g 1e-6 -> 1e-06
-%.0g 12 -> 1e+01
-%.0g 120 -> 1e+02
-%.0g 1.2 -> 1
-%.0g 0.12 -> 0.1
-%.0g 0.012 -> 0.01
-%.0g 0.0012 -> 0.001
-%.0g 0.00012 -> 0.0001
-%.0g 0.000012 -> 1e-05
-%.0g 0.0000012 -> 1e-06
-
--- precision 1 identical to precision 0
-%.1g 1000 -> 1e+03
-%.1g 100 -> 1e+02
-%.1g 10 -> 1e+01
-%.1g 1 -> 1
-%.1g 0.1 -> 0.1
-%.1g 0.01 -> 0.01
-%.1g 1e-3 -> 0.001
-%.1g 1e-4 -> 0.0001
-%.1g 1e-5 -> 1e-05
-%.1g 1e-6 -> 1e-06
-%.1g 12 -> 1e+01
-%.1g 120 -> 1e+02
-%.1g 1.2 -> 1
-%.1g 0.12 -> 0.1
-%.1g 0.012 -> 0.01
-%.1g 0.0012 -> 0.001
-%.1g 0.00012 -> 0.0001
-%.1g 0.000012 -> 1e-05
-%.1g 0.0000012 -> 1e-06
-
--- precision 2
-%.2g 1000 -> 1e+03
-%.2g 100 -> 1e+02
-%.2g 10 -> 10
-%.2g 1 -> 1
-%.2g 0.1 -> 0.1
-%.2g 0.01 -> 0.01
-%.2g 0.001 -> 0.001
-%.2g 1e-4 -> 0.0001
-%.2g 1e-5 -> 1e-05
-%.2g 1e-6 -> 1e-06
-%.2g 1234 -> 1.2e+03
-%.2g 123 -> 1.2e+02
-%.2g 12.3 -> 12
-%.2g 1.23 -> 1.2
-%.2g 0.123 -> 0.12
-%.2g 0.0123 -> 0.012
-%.2g 0.00123 -> 0.0012
-%.2g 0.000123 -> 0.00012
-%.2g 0.0000123 -> 1.2e-05
-
--- alternate g formatting:  always include decimal point and
--- exactly <precision> significant digits.
-%#.0g 0 -> 0.
-%#.1g 0 -> 0.
-%#.2g 0 -> 0.0
-%#.3g 0 -> 0.00
-%#.4g 0 -> 0.000
-
-%#.0g 0.2 -> 0.2
-%#.1g 0.2 -> 0.2
-%#.2g 0.2 -> 0.20
-%#.3g 0.2 -> 0.200
-%#.4g 0.2 -> 0.2000
-%#.10g 0.2 -> 0.2000000000
-
-%#.0g 2 -> 2.
-%#.1g 2 -> 2.
-%#.2g 2 -> 2.0
-%#.3g 2 -> 2.00
-%#.4g 2 -> 2.000
-
-%#.0g 20 -> 2.e+01
-%#.1g 20 -> 2.e+01
-%#.2g 20 -> 20.
-%#.3g 20 -> 20.0
-%#.4g 20 -> 20.00
-
-%#.0g 234.56 -> 2.e+02
-%#.1g 234.56 -> 2.e+02
-%#.2g 234.56 -> 2.3e+02
-%#.3g 234.56 -> 235.
-%#.4g 234.56 -> 234.6
-%#.5g 234.56 -> 234.56
-%#.6g 234.56 -> 234.560
-
--- nans and infinities
-%g nan -> nan
-%g inf -> inf
-%g -infinity -> -inf
-%G nan -> NAN
-%G infinity -> INF
-%G -inf -> -INF
-
--- for repr formatting see the separate test_short_repr test in
--- test_float.py.  Not all platforms use short repr for floats.
-
--- str formatting.  Result always includes decimal point and at
--- least one digit after the point, or an exponent.
-%s 0 -> 0.0
-%s 1 -> 1.0
-
-%s 0.01 -> 0.01
-%s 0.02 -> 0.02
-%s 0.03 -> 0.03
-%s 0.04 -> 0.04
-%s 0.05 -> 0.05
-
--- str truncates to 12 significant digits
-%s 1.234123412341 -> 1.23412341234
-%s 1.23412341234 -> 1.23412341234
-%s 1.2341234123 -> 1.2341234123
-
--- values >= 1e11 get an exponent
-%s 10 -> 10.0
-%s 100 -> 100.0
-%s 1e10 -> 10000000000.0
-%s 9.999e10 -> 99990000000.0
-%s 99999999999 -> 99999999999.0
-%s 99999999999.9 -> 99999999999.9
-%s 99999999999.99 -> 1e+11
-%s 1e11 -> 1e+11
-%s 1e12 -> 1e+12
-
--- as do values < 1e-4
-%s 1e-3 -> 0.001
-%s 1.001e-4 -> 0.0001001
-%s 1.000000000001e-4 -> 0.0001
-%s 1.00000000001e-4 -> 0.000100000000001
-%s 1.0000000001e-4 -> 0.00010000000001
-%s 1e-4 -> 0.0001
-%s 0.999999999999e-4 -> 9.99999999999e-05
-%s 0.999e-4 -> 9.99e-05
-%s 1e-5 -> 1e-05
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/gdb_sample.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/gdb_sample.py
deleted file mode 100644
index 15ed560..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/gdb_sample.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Sample script for use by test_gdb.py
-
-def foo(a, b, c):
-    bar(a, b, c)
-
-def bar(a, b, c):
-    baz(a, b, c)
-
-def baz(*args):
-    print(42)
-
-foo(1, 2, 3)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/greyrgb.uue b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/greyrgb.uue
deleted file mode 100644
index 912532e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/greyrgb.uue
+++ /dev/null
@@ -1,1547 +0,0 @@
-begin 644 greytest.rgb
-M =H! 0 " 0 !   !    "0   )(     ;F\@;F%M90                  
-M                                                            
-M                            !  "      #_                $ %-
-M\        0]<$ %%Z! !2>P                                     
-M                                                            
-M                                                            
-M                                                            
-M                                                            
-M                                                            
-M                                                            
-M                                                            
-M                          H    +!@  # L   T1   .%@  #QH  ! >
-M   1(P  $BD  !,O   4-   %3H  !8_   710  &$H  !E0   :50  &UD 
-M !Q?   =90  'FH  !]P   @=@  (7D  ")^   CA   )(D  "6/   FE   
-M)YH  "B>   II   *JH  "NP   LM0  +;D  "Z_   OQ   ,,@  #',   R
-MT   ,]4  #39   UWP  -N4  #?J   X\   .?0  #KX   [_   /0(  #X'
-M   _"@  0!   $$5  !"&P  0R$  $0G  !%+0  1C(  $<X  !(/@  24( 
-M $I(  !+3@  3%(  $U8  !.7@  3V0  %!J  !1<   4G4  %-Z  !4@   
-M588  %:,  !7D0  6)8  %F;  !:H   6Z0  %RH  !=K0  7K(  %^X  !@
-MO@  8<0  &+*  !CS0  9-(  &77  !FW   9^(  &CH  !I[@  :O0  &OZ
-M  !L_P  ;@,  &\)  !P#@  <1(  '(8  !S'@  =",  '4I  !V+P  =S, 
-M '@Y  !Y/P  >D0  'M*  !\4   ?58  'Y:  !_8   @&0  (%I  "";P  
-M@W4  (1[  "%?P  AH4  (>*  "(D   B98  (J<  "+H@  C*@  (VN  ".
-ML@  C[8  )"Z  "1OP  DL0  )/*  "4T   E=8  );<  "7X@  F.@  )GM
-M  ":\@  F_@  )S\  "> @  GP@  * .  "A$P  HA<  *,<  "D(0  I28 
-M *8K  "G,   J#8  *D[  "J00  JT<  *Q-  "M4P  KED  *]>  "P9   
-ML6H  +)P  "S=   M'H  +6   "VA@  MXL  +B/  "YDP  NI<  +N=  "\
-MHP  O:D  +ZN  "_M   P+H  ,'   #"Q@  P\P  ,31  #%UP  QMT  ,?C
-M  #(Z   R>T  ,KS  #+]P  S/P  ,X"  #/"   T T  -$2  #2&   TQX 
-M -0D  #5*@  UB\  -<U  #8.@  V3X  -I#  #;2   W$T  -U3  #>60  
-MWU\  .!E  #A:P  XG   .-T  #D>0  Y7T  .:#  #GB0  Z(\  .F4  #J
-MF0  ZY\  .RD  #MJ   [JX  .^T  #PN0  \;\  /+%  #SR@  ]-   /76
-M  #VVP  ]^   /CF  #YZP  ^O   /OU  #\^P  _@$  /\'  $ #  ! 1( 
-M 0(6  $#&P !!"$  04G  $&+  !!S(  0@X  $)/  !"D(  0M'  $,3  !
-M#5$  0Y6   !!@   04   $&   !!0   00   $$   !!0   08   $&   !
-M!0   08   $%   !!@   04   $&   !!0   00   $&   !!@   04   $&
-M   !!@   0,   $%   !!@   04   $&   !!0   08   $$   !!@   08 
-M  $&   !!0   00   $&   !!0   00   $$   !!    04   $$   !!@  
-M 08   $%   !!@   00   $$   !!    08   $%   ! P   08   $%   !
-M!@   08   $&   !!@   04   $&   !!@   00   $&   !!@   00   $&
-M   !!@   08   $&   !!@   04   $%   !!@   08   $&   !!0   04 
-M  $%   !!0   00   $$   !!0   04   $&   !!@   08   $&   ! P  
-M 04   $%   !!0   08   $&   !!@   08   $&   !!0   00   $&   !
-M!0   00   $&   !!@   04   $&   !!@   00   $&   !!@   04   $&
-M   !!@   08   $$   !!@   00   $%   !!@   08   $&   !!    08 
-M  $%   !!@   08   $&   !!@   08   $&   !!    00   $$   !!0  
-M 04   $&   !!@   08   $&   !!@   08   $%   !!0   08   $$   !
-M!@   08   $&   !!0   00   $%   !!0   04   $%   !!0   08   $%
-M   !!@   08   $&   !!@   08   $%   !!@   08   $&   !!    08 
-M  $&   !!@   04   $$   !!    00   $&   !!@   08   $%   !!@  
-M 08   $&   !!@   08   $%   !!@   08   $&   !!0   04   $&   !
-M!    04   $&   !!@   04   $%   !!@   08   $&   !!@   04   $&
-M   !!0   00   $%   !!0   04   $&   !!@   08   $&   !!@   04 
-M  $$   !!0   00   $&   !!@   08   $%   !!0   08   $%   !!   
-M 08   $&   !!0   08   $&   !!0   08   $&   !!0   04   $&   !
-M!0   04   $%   !!@   08   $&   !!0   08   $$   !!0   08   $&
-M   !!0   08   $&   !!    08   $%   !!0   04   $%   !!OZ*@EA6
-M*3156$5:6TUF<DE8/R4M,C ^16:"=7UP2S]I<FM;6&-B13EO:$]$+59<<G=%
-M1%IR?7IQ:F%C6EIH245?9UA/<GT^65IB:G)N=HIM6C])6&]B:# .-GV&<F)A
-M9()@,B4M%3EZ8FAB8F!"24UC8VM8+2 =&SEU@WIMBDS^$@D5+6EJ6UHM)3(^
-M16)R<FE:8F=J<FM/6%QB8F-;6E9)6E9B:G-K6V-I8UA)/F%J9F)B;G5U?7IH
-M/SQ?8W-S:4E@?'-J8F E&$R(844^:6]B:%0I$E@I#A(M259?:'-Z;TAH8$1$
-M/F)O6%A%6V$_3X"*8"<V:VIT?'U@+3\Y@DQ6 44!:@"(>HII,#9$6%D#.?Y$
-M=W5H8%D_*1@@+3!0<F9K8E@_8W=B:V-B5BTE16%H7D4M,&]W2$Q:6W)\;5MR
-M:UI:8#!%:W=G16-Z*5A666QZ;FZ!8F-8'3!B8EH;#A5-;EI/8UQF=SXM/#(V
-M6C)H@FMK<FQ;8V)K:TE5.Q4@8HJ*=85R/!@.(FAN8F [$BOU6%5$:GUZ8TUC
-M:VMC7F)J;VM@3V!J65E-1$AJ8S]87&A-/CY;8&!H8F)Z>7)U:EA%:5MK@4\Y
-M8H-V>VE8-CQ;@W V+4QO3#=64!U)1# 5&#M$8'!C<G!83#Y$:%A-;EA8+39+
-M6%IZC'I+/FEJ;GV">$DV.TE@ 3D!1 #^<8)P-EAA8FI?+1LE<()F8V-?22DM
-M.RU-:F)B3#8M3W!B;W)8.3DG&SE@6%@I'6)[:F-@36IR6T]R:EII/B=8<GIK
-M6$]G/U9$6G)R;7)R4')H,BU8<E8M*SE5:&!'6FEB>U@V<&!:/QM)<G)Z@W):
-M9EMB<E9A1!(51'J*=75]_G0R#AA):FIW:" ;26AB<75N8D5$8G)J8E]0>G)@
-M17=[8FIH23Y@9T5%8FE-.3Q-7V)K5B=B@')Z:FE;;$UF@TLV:H-N?7-825IW
-M>W!)24]K224V5D16:6$@&#(\16E-6SDM7VI:=WIZ:FM@-ALE+39F?'I836M:
-M9GV"@FI%/X)%:P$V 5@ \')M>F-;6V)V=RT.)6.(8F-P<F$V-F ^6FI?36X[
-M&RU;6H"":3XV/" R23961#9;<WAI7%]G8UE%<$U%:#XI16)R=VA)1U9,+UAG
-M:EM<:V-R9E@Y18!J5DEH:G!C8$E1;WIB25A))VY@-C)8=VMJ374#8OY)22T5
-M$BUB<FIJ=6U@,B V36)\=R4.&S9B>7)K9DU%3&MJ8FA%9GI,+6]W:G)K6C]9
-M:$U5:G)H8$0Y25M<224E8&MR9EM;<'-Z=TE9>H)N?'9@7EEJ<FY0>H* :D5;
-M23E):&\P)RE86%I@8Q42,&A%<'IU>GIJ7"T@%25-:ER-339A:FIZ?()Z6UA@
-M<P%8 6D R')1:F)88UIM?EP;)59S1$UW?7 V.6A-3$Q627)H-C(V1'J"<E]5
-M53Y452 _8%A)6&-96F]R6DD_:$DY8VE>6F)M>F]),$PM(@-)Z5A)6')R9FE-
-M5G*#6DUB:FI$6E8M3'UZ24UN7EI--BU;?V)K6G)R:V))6#\R+39@6FAC9F9J
-M7#8V/V)U=RT@&!56<FUJ:E]8.5IA8F](2'4V&SE,:GMM:$E%8%8V37-J:6!)
-M6&IH/B 5+0-$QTU-;WI_8"T[7H)];FMB6UY::FQ;?8F*<EIC838P:5DB*1M)
-M8$56:R(I1#DV8VYRAX-]=U\V,CYJ>DPY(#9L<FU]=7=@36][ 7H!< "B@6YB
-M44A@66-R=S\T.5\M.6]]@&):<&]:14D^>7)@.RU?>@-R_G!F3&!N("5)8EI%
-M/S9%:H!B3#Y)6$E;>GIL<GIZ<E4V8$E$24D_/C8Y8%MB:E!B8H)Z7EEJ=3XY
-M61LI=GI%15Y[>G$_&S9Z8VMB=75R8D]/8VE63&);8V]F<F9914E86FIW7U4[
-M,F-R<F9Q:F-/6"]%;V)B:U0@(#9;>G)Q8:0M24DG16M<8VAB8WMR9S(8.UA$
-M-EA$871L/B4I,'6"8&-H168$:YMN@(9]9F-A/R5?7"4K("TY54UJ26QI+2U:
-M6EX#>HU]:UI)26*#83(8(EQZ V:%:F!-:W(!>@%W /Y[AG=@6#E-6F)S:%A5
-M16EO<GAY@GN"BG!)-!)B9F)0+5IS7E!M>V],67-5("U)8%@K%39@>G-R8#]8
-M36N";D1/<H)Z:UA-25I)+2TV6# V/TUJ8FMH:H)J6EMC8$E5,#QR:TU9/UIZ
-M@FT@2'-F=FIB8FUS8DUC<X-U:W!R646K>GIB44UG:%EJ@G)B6FIJ:VZ >VYK
-M:#LV7EEJ=V-$$B5J>G5N=TD@&RU?:@-:N45(>WMK+1A)<FI8:V-)84L;&"D_
-M>&U:9FDV37-S;&E;=7A]=G)K6UA-7#9$/S0;/V!B16IH+45;6@-CEFMK=6M:
-M259B7C\M-F!L/TQK8UIB:FH!8@%$ /YG@GUS6#!$8&!:6#E$+6!K:VIR>G=D
-M?7=M3R5823DR+5EB:$UB>G!)37IO/S(R.TLE&"UA:G)W33YM36J":S8V46YU
-M>F],1%Q6,B4R7D0R-C!61%!@36IR:VEB8UMA259J64UB/S9K>FLE)5IK:V(Y
-M/F)R<EM:4'V*;6AJ6DG^<GMJ:V)Z<DQ$=7!F:%!;8F9V?7UU<F<^231C<F)$
-M%2EB=7)0>H [&SQ83%IH8#8G:GI@&PXM8FIK>W=I8#\8%14M<5I,8W!)/FEZ
-M<F]F4UR">'IL;G):6DE,65XE+55-=VIF>FI;:&!%/S\V/V ^)3Y,8VMB8E@R
-M+3EK;VAH@G)Z 7<!60#^:W5V?$T_24UA/S8V.QLV359:7&IR669B36AF6$D[
-M("4V/V!88G=O6DUR<FA$13P\*PX;26]B:DDV:%IC?EHP26U;4WUZ6D169$T\
-M+5A:26 ^/V9H:%E;8FMC14UJ:F-B:$186UA::G)A031%36)6+24O6FMR8D1B
-MA6)%3%I?_EQM:FUK;G=G67%Y<FLY5EQ<8F9Z=7QZ64(M6W):8#8M3&)H*5"#
-M:"TY138W8FH_*6AZ6B48)4U::G5Z:V=9*Q@.(%MP:%AK83]-<7IZ9F!-=75S
-M6WJ#8UMA6&!I/"DV57!<2')K<&MC6#]$/DEC6DD^+6-R:VE-*2TE17!C6X)B
-M=@&" 6D BF)B9GLV-EAJ:%H#2?X_25986%9:<G)O:41@<V-852DK-#9)6%EC
-M:F=R:VIK8%4^-C .#BUH:F)%3W)J<G\^&"5?84QR<EY)-CY663P^3&!R:"=@
-M>G)Z64QB:EX_5F]J:V=>24EB<G5Z=GIR8F!8650I&R4Y<F]G;X)H/C98=V)'
-M7U!:<F9P:F9R>FKS5$QB:V)<9EN"@G!:26]O3&A>259)6CY,>GII7UE%-CEC
-M23YB>F<[.T1965I636)J:$DE& D;2UA,6ED^/RU%:UMR>G9U:DQNBG=C6TQH
-M:U4[+5AN<UI:8W)N;G=C34UH:VMJ5B4Y:V-K6T1).RU?6DQ':P%] 6L _E]%
-M8( V+3EJ;4QA24E>8&-J:&!6<(!Z=T]8:WIJ8#8[,BU)9U],3&)[<6)G:5@M
-M.SD@&!(_;VU)37)W@H)4(!@E25MF:F)9-CLP6$4Y15MV<B(P:G)O-BE/>GIJ
-M6$1B:%MC8%9<=7U]>W)S:F-I36A5.Q@;6FIU@H)J/BU>??YR658^+6I:7&Y;
-M3W%W:$1C=6YL63]R<F]B9')G.5IB;&]H3$1C@FYS>VA64TMC9UI?9F(P26%-
-M8UI:8&IR>FT\*Q@I5DU-25M%/DE83%9J>GIF/AU:DH)P84E:8DL^66EF?6XY
-M8')K4'MR6#9::X!]8S8P8VMF84Q(:&!?3T6"6EP!:@%P /YH/TU[-"4=4SXP
-M:#8V6FIJ8EM)+UN':G)R34V":F)@7#P@+6AW8DE:=WI;8&!8-D0_.S(I+6!J
-M6%1::H)]=U4T*S98:VIC<$DP26%))S]-<GH_)5IO7R(2/WI_<E8@+41:8EIB
-M6G5]?7IJ7%IQ=DU,.3LG&#M9<H-\8BTE8FVN9FIB2#9:65EJ64E:<EPY3')P
-M<FH^6F)@6F)J21MA3%%K:F@Y-VUK9GIW;V!?6P-KSV!%&SM?/T5B8FIR?8EZ
-M8U @+6A8+2U@24E%26!86FMK1"TE5I**@FA823\M-G!P6GIZ,#!0:D5:7&8E
-M+3EZBG)9.5!B65M--FER<$DP8F\!: %O /Y)25EI6%0[.QL;6#()3&IJ:V$V
-M&TU_:FU[8F)K33]J:T08%4AZ<%E:<GMJ;V-)-DQD/BTR-DA:35]83VIJ8F!%
-M.RTY66MB<F(M/V9@-C9:>GMB,$E:/A@2*6B":T4E"2U-641-8W6&?6YB.2E;
-M;EI8/BD8#A@@1'IZ5B([<G+^:7)J63]>7V)B3%QC:T\^27)Z<F@V.5M;7&IJ
-M6A5?6C]G8F-@.6!H66YU;FAC34U<<F@^&RU(/CY/8VYR<HEM8EDE&U9M("UM
-M138_-CY)6EAF*2!58GJ%DGI)-B 8)7)W:VIN8$M8:F-O:F@[*259=7IR6%9B
-M8EM%+4QO;68Y@FAQ 7<!20#S6$5@1&IW8&%%+3])-%]K:VA%1#!H:V-Z>FIK
-M:U]):&L[&!@^<FL_-DQR>W)O6C8R;V%%.SY66E9$6F)J;V!:6E9)238_<G5W
-M.39@63\_:'5R>F%0638K,#9(:'<M.Q@I8&A;/T1,;7IJ3242-F=-35DM*0,)
-M_AL^64DE3()R8G)H8%MB8%I;8G)Z<D0E27!R=G)>3UI;9WML:T1-9TQJ8UIJ
-M8W!H36J":F)W:4E/=V]:2U4[(C]836ER=81U<EM$-$EI("UH6DD[*PY-8E9)
-M$B!-8V)N@HIG*0X.%5""?6I9:&!-:F9U>FM@255@65EZ:FAC<(I@-C9)7V)J
-M8FYT 7H!< #^6#Y)16=O3%EP83])-F)Z=V@P1$E)-C!Q@FIK:V-K@'=)("56
-M8EH_+2=CBFIJ6D0_36)/1#9-:&]%8&EJ<FA;:')R8S\M8G9Z6#E?.2U%8G)D
-M>H*"8CLR25A@:FIH,@D@6&IJ:4PY37)R9U4@+6!@9UI852D.#B R,#PM3'5J
-M_D<Y2$5@<&I:35YU=7)-+3]K<G5J:V]V9UQR;UM816!B<FM964Q@6EINBG)9
-M<GI-8'IZ8%AQ2!(E5C!):FEUAH)J64M$8#L\:6IB8#(.&UEB138_858V-EAN
-M8DP_.QT_=8)W6F-6-V)U;FYF;U]-8VQ/56IO6F-B-D15+2=@>H)Z@@%U 7  
-M_E8Y6556:$DP8G=I9S96<G)C25AC624@3'5R:&)J;GIM<$0E.3XY/T4M.7)>
-M8TD^245-1#DV/UEB9EA;<'=B35Z"BGIK/DE::FM$8#8;-DUB9VUXA6M$0C])
-M8&=:;QL)"45536]O6$5K<G)W2S9F7'IL8$E402 K,ALI*3]O:^I)+24V36MJ
-M8%IP?7!F8U168G)R8EIJ=W%;<')J14EC9G)R9TE$14U:9H)W6F-B1&)Z<EE8
-M<F E+3L_24U0:WU]7%E?6FAD26!;8F]4*39O>F)8/C8_4"T_<F<[+3M426IU
-M<F-@14E:=75Z W*31%AP:2(Y8TE9:UI%1!L2,&)PB@%M 78 _F ^8%XG.50E
-M,$QF>E9::VM:36EL9BT;-G!R7%IF>G9K:VY+1"4@-EA)36=6:4U6:&!/6F!)
-M6$U$:$E/8VI@+3EK=H6"84E-:F]'-TDI&S9)1W-R?7)98$D^1$E89S05#BU)
-M36MW;UIG66:"8S!@.69Z:D4P840M/#(V.S99<KE@/R V3V)B2$ARB'5F8F)@
-M6F)J6UA?;VI<<FMJ6DEK=W)B8$D_/DE:8FMO8FA-1%IR:456:W)H64D$6,-;
-M:VYB66IO;7IC85E-:G]?3VZ*>F]8(AM)6$EU<DDE-F!'8FM/9TDP:6MF<GI]
-M?69A6W)[)4%)'3EM:UX_,!@8+5EZ 6X!=0#^8E]K:"4E7%4G+41B;UQW<VM0
-M:6MK6" M8VPY33]<<&-;8%I8.14M13!C6"M@8F)R@%!B;V-L83Y%8&E:16 ^
-M+38Y;H)B3%EK=V =2U@E*3\Y6G-U=5IB6D1)/U9@540@-DU98G)R9G)),&I@
-M'4@V5GIZ8"U%841)6EI835EF_ED\,C]%6&M@8G)V;G)N:W)K239@8V!88&%;
-M6E]C<G]Q:5@V-CY;:V-C;GIJ2458:FM;:G)R:$1$:&MK8U@_66%@8G!C9FYR
-M85A98VM:6V9K8UMH+1@B239F>G)/:&I,1%I$6E@M6&IJ9&UUBEQC9G*"14A8
-M*2)8:F):8$DI*8(^:P%F 6H _EIH<& M(#]N23\^1&IR>FMR6D]9:F0I)5I:
-M+5A%1%E?/S!(24DR.S8;.3X;/F)-<G])36]R=V$M)5A_;SE:;6$V)4]W:$18
-M:W)@)419,BD^24]K9F968F=)35A)6EA9/UE@6$Q/:F9S8#!,8"5)/T50;G)8
-M16%M/F)K8U\Y3?YP6#8_.T5@9G)U=6-K8UYF<%026'!A15EA65A@:')]?8EA
-M.RDM16MJ8W)Z:T586E!P8%IP<F@_.6J&A7))/UYI3TAR<GI_>G)P8'!C23Y@
-M8DU/=UDK*38[6W.$=WIZ:$187#YG8E]B:F)3>H9:/V)Z=58P/BD8275B7&9@
-M/TN"/D4!<@%B ,PV6%@;/C\_8%I823Y8:GIR<6(_.5MI/C996"U89EA-6$DI
-M'39)6$DV+40[)2T_1&]V2S9:>HI>&!@P<H%+.5MR8UAC>G\G87)F:#8[ S^+
-M,#];6U8O1&!Q:%8#2?Y-36!P8VA96F]M;6M,5F(_26 R'4]W7SY-<D1>;G%;
-M+3ES<4LV-CYA:WQN<FAL<&EK=UX8.7]P/TEA:&!J;6I[=8IW5!LK+3E8<7J#
-M8D5/13]::$E-8VE9.6"#BFL_+5EK8$UB7&U\?7J#>&I9.3YA8TU-:F!)*24_
-M3%Z#>GJC@G)'5DDP8FUB65YK7&9U<U9%:WUJ150E#C9R8B(^1%IN@V$!- $@
-M /XR6&9;15A8259:6$DY6&IZ=5XV,$E666=K83M)5DU-6V!4+2U)6EA67$DV
-M-E4^6'=K63XP:HI)#@D517IP1#E::W=Z=7\P5G=Q:E8M)55H24EH338V3$1B
-M>FE)3T1%.5B$>G);:H*"9G)J65MC6V\[&SYB5DE)6CEQ<VQA1$O^=X)N/!LV
-M8&Z"=FYL9GJ =H!C&!M8:38P6H!O6FA:;V9]@W \+2T;)6."B%I'6V%%8&M)
-M,$5I83];>GYW7BU)8FAA6TQ?<FIJBHIO6DUF>G=-6G-H3SD5+5L_8F-;:W)B
-M8$DV6FIJ6EAN=5I9:&))6X)R:FA/%1):32DV.3]9@GIR 8 !50#^2T]K<%AG
-M63X_6&)?23]-<G-K/C8_241;;FI8:&A)/EIK;TM8:$PY8%\P*2(V.7* 6T]5
-M*3]U8"<8("U,=VD_/UMZ>W)Z8#EJBG59( D@,#968DD=/F]R=6A-:W)N3S9-
-M>GYH+TQZ@FI:=W),9FUI7C]@34UN238Y>GIF6T]I_G-]>V$8%3=R>G-C34]]
-MAG9]<#PI.5]0)2]Z@&-C8FA@<G9V:%XV&!@_>H):/U!T6W=[8"TP85LV16MN
-M>G@_/TEI6DU).6)837:&;V-$4')U8VMR:T1L241U63Y$/CEC=WIR6&AJ8V9S
-M>GIB35A-.6.'9EQ98#8@.4U$2T5)3()C9@&& 7( _FE%:WI;:F,^.6-B7U]8
-M36IU<6!)26!@6FMK:'-O54EA8F-)8')@+6!G-C(G$AM:@FA%/S]9;VM84%!)
-M6EQ?/C94:FYN>W)-1'UV3R 8#A@T8&]),#E,<F@Y25IR8S8V6$A:82U$>GUN
-M46IR7&)M6T]:<%DY9E\M&VMK8VE%6^=R:7IJ*QTM:FYK22<P=XI]?7MI7C9%
-M6"TG:FM@<%!$67AC5CE9;C0@/VMR.38Y:&B"BFTI-F9:/R5/6W)X238V84DY
-M.QTV-C!C@&UL1$UF:F-[>V-A<&YW?7(^+2DM6')Z<FIO<F-B W*6:V!)-BDY
-M>F)B6EA$.TEB.3]9<$0^3 *# /YR.4UZ;VIG.2M;8%]B<FIJ=75O5E9O:EM;
-M6DQF;TQ:8V-@7UIN8CE?9T55+14;17EO-BU+8'=K25A@6V-;64D_26-D:X%J
-M8D5R@GAG.Q@@1'=R8&EM3V9:&QLP<F(=+5]%-D])16^"=6A1:G)R6TLV/U]F
-M5DQ8-CE-8$Q8+3#G6V-W=BTT15MJ:T08*6N"=7U[9F@V/FE)26E-1'5I/D=K
-M;C0;/G]F/TUJ:#\V+3Y(>H=R/TMI8D4@+45CA'!5-D4_2U4R-C!:<GV#9F-A
-M7T11>GUF7&-R@GIP2S8\,DEK:SDM:XAO30-;ED]9854V+4UZ7DE)1#Q$5CXM
-M/GQ?)24!<@&# /YK24UZ:G!,/CY@85!:?V9J:W)O36)W:VEH9UH_66%:66)J
-M:V]P8UAB65A-7UY$3')W238V.6MH24E:8%]<8F]B1$U-7GIB:EQF=8)Z6QL2
-M+6]$1&J(>F9?*0X;66 ;+6A%7V@^&T2"B')B2&V*6EQ)0D1B:EI).SY/8%I,
-M+27^16-J:C<_9F-C:TL@+6MZ=G!W;%@I+V]P6FDV(F)Z;F];6"4K:(5W86!P
-M:F=5*S8_:G)<14UO:ELR&Q@Y?(1W/S _6& _+2D^669Z,CEB<4E%=GUU8&AZ
-M?()P1#Q926%R;%D^9WUZ;%I-23\_:68\&R)B;CM58&%I6DD\26M@@B4. 4P!
-M=0#*3#E:>DUW8#Y(6G!B37%M=VIJ8CE%<GMQ<W=K/C]66$U;:U%I6UM>:T]6
-M3&-O;VAF<F)51#9;:5EH8DT_15IZ=TDV)TUW<FI036(#<OY?.S]<)2UC?7UN
-M7U5!-F9B-C9H,%!R/A(E:()F3#Y:BFH^1&A08V];-C8_8&MS:4E)65YN>UI@
-M:VMQ8#8E+4]K>V-(:ED8%4R"<UDE&U9V<H)_51(E:W5S6TUL<FMB83YO;UY/
-M655;>&$R&!4[8GB*:3]/:6-)-#Q866-K-BFS/F9:1&IZ;F)K<GIZ8S\Y8%II
-M>&!/;G)U=GUR8%A$-G-X22DK24TP:6IJ>G(Y66-S:2T. 38!< #^)1U@>FER
-M9EI-6&]W26)RBH%Z<$4V6G)B:G-K34M81#Y$9SD_13]-;$U61$E;=WMH7&)@
-M63Y::5I_;T0M-D1J>FE$(#EJ@GMF6F-,6G%W:F-I)39B>G)J3&)J4')[8&!V
-M.5IH6#0K27)B241B@GI/26A68')8)25$<HAZ8EAI_FE13V)::FEC=W ^)398
-M37)Q3&)%'1@V<FI)*39:6U%RBF88&#EB:6)C:VIC36DV7&I-8V8Y-EYI,A4E
-M6%!Z?7)C;'IJ<BT^:6]B:&%$.6]D34]O8D1@8EQF63PM5C]:=V%B<G9N<G5R
-M>G=)&V]W8#Y@838E5F-;>H))/V)[=X)>( $; 3\ UQ@5-EJ <F-$+V1O6B=:
-M<GR"@G-M35AB34AJ=T5)6$U@8&))1#\V16AI:%@P+5ER=F!:6E@V16=9AWI8
-M+3]@8F9W839)8'5]<EMC23]9<F1B=S8V8GIR6@-C_F)J=7IQ:2U)24UA25MF
-M3456:X6"9E]9+S9A52LE,FZ%=S\_36YQ22]%:EI;>WIO3V%A16-W7F@V(" _
-M<6M6-$EI-C!9>G=%(!LV3UIR<EY:3V]85FA87G-97EIO/Q@V:%IO4%QW;G=K
-M=3XV36],-UI-.6MJ3$1H<"U-33E-<*98+3\R,&)F<G5V8VEC6EQZ5!)9?5M%
-M6W%926MH2')S22 Y@HUZ7@$R 2  _BDK,CY]B&]$'3=@/" ^8G6"@&-:7')K
-M5CLY<&-86EAK<5@W66 [-F)R>G=)+3E9<FM$138E/V!%>GUH26)Z=VMK=V)%
-M26MR<F)B8TDV8FM99F]-:W5<1&!18WMP3WJ";3\V-CE:6G=K1"U)8VEZ=7)B
-M," V.3Y5/W)]<DE86_Y<=7=8.6 P/G)M;6IZ:SE:=V--/RDI/F-:5"TY9D0I
-M16IJ=#0@)2TV:WM;1&MR<DQB<&%K<7!B<F<M/W=R8S8T:W-L<G)@6%MI225/
-M/TEC8D4E16 V5DD^.7-Q1"TV/F%K?&YR:&QP:6MW7A@Y?W _27%I3&IM16I:
-M-A(G8H*"BG<!20$R /Y97D5/:()];U9)/RDI8%IJ?()J6%IR:F)$,%IC8&EK
-M:W)@/UAH/B V;WIZ;UA836]P6#88%24_,'!R8D5<?7):6GJ 6D5C8FER:G)H
-M1%9J9F)H8EIN:4Q)+TU[<F)]DGH_.RT^36)R:#X;+4DR6X)R<E@@)R M7DES
-M?690<GO18EQK;TU8)2U%15!M@&\Y37)L6UD_+39$/S\M/FM8/TEP8FM>,B K
-M-FJ":4EK>G598'-L8VMI35!H3UES@&M$+4UR:VIR;W)Z>V)%6TDY26AO!#:K
-M5DUB2W>";CP;-F!N@G9N;&9Z@': 8Q@;6&DV,%J ;UIH35I9;C0;)V:"?0%H
-M 5D _H!B65Y88VY[>F))(!AJ<69N>F)K<%QJ:FE5.4U)6FIJ<F]925I$*1M,
-M<G5R8%A)<'IW1!@8&R ;;%])/UJ"<#0_<H)R6F)C6DA<<GI@5F)K6TUH6$5-
-M/CPB-F]07GV,@E8^+41;;W)O12TR.R4V>FUK:"D5&" [6&AR1$%UBOZ 6S]:
-M8G!%-CPT26)F<EAL;FMA8&%+84E)5" =16)),')_:VE5*RU)8WIZ>'M[<$E-
-M<VMI44U9,#!8;W9[<FA5-T]A1&)D>H6#<EIC838P:5DB*39)341H:7-]>V$8
-M%3=R>G-C34]]AG9]<#PI.5]0)2]Z@&-C6V)A?8!>-D6"=W4!; %K /Z"33E@
-M15A,<'MK5" 28WIK:W=B:FE,6')Z:#XM)24^8G)W:F%//D0[25IJ<FH^,&*"
-M>F@_.24@(&AG1#]:>G(^.6-N<F!B:V V/UEK:$U9>F=%8EH^+1L@%39-+2=J
-M@GQ--BT[.6MK<G)624DI)7IR9FM5%14@,DE@6C9A@X#^DG<P,#]K639%/UIO
-M3%EB>FY0:G%;8GIB8V0T'39O339O@&YC:4E$/U!C<G6"<EA)36M[:U@_53 E
-M6&YV<FIK6EAA12=84&Z AGUF8V$_)5]<)1LM=VA-6UMR:7IJ*QTM:FYK22<P
-M=XI]?7MI7C9%6"TG:FM@<&=0:WI]@&E/@EIB 7(!>@#^@TDG639).6EP8E4@
-M)5IZ>F)J:F)8+39B9'Y;-"D8($5C<F];2RU):6A@:7IZ1"=:@H)Z:$DE+45H
-M650V26AK35EB<G)H:69J6$E$14TY7W)Z.5E;8#(.#A@T22T;37J"62T[.QLY
-M36* :EE@+1MR<FMO:385&"U)6$DB8HAN_G2#8SLE8#\V56!I<F8_1'=K1%QI
-M+3!W?%M8-BM+=U@Y<WI>6EIH<4E%:7)N?7-%63E(?7-P83X@&TEZ@W);7T5;
-M>& Y6&);=7A]=G)K6UA-7#8;)5IR9EHP6V-W=BTT15MJ:T08*6N"=7U[9F@V
-M/FE)26E-1'6(:7=K<G)I/((;)P%F 8, PGM))4D\+1M-8#DV("58<H)O:F)6
-M.38V/C=R8U1$," M1&-H5BT8-F]P86-T@E@I1'*)@GMR+3!F<%I-54E)84]@
-M6@-R_FE;:G)B7SXV+4]N@F)R:F->,A@R86A5*45K?&LP.3<I)2=->FMM;S\@
-M17!R:W)<*2 T56$V$CEJ>GV&<E@R8#\\7V-S<VE)8'QS:F)@)1A,B&%%(!LY
-MAV P:G)A6D5;@4\Y:W)SAX-B7S=)<&9P82D.#BUB>GIC8$5C@FM/8[MR9E-<
-M@GAZ;&YR6EI)54E88F]I)45C:FHW/V9C8VM+("UK>G9P=VQ8*2]O<%II-B)B
-MBGIK8&EK8#8.#@$P 6( _C9Z@&!9+2<V840I("E8<GIZ<D\_.5AF7D]U8E]8
-M1#(R,%9B8C\@+6AO659J>FHY+4UZ?7IZ/RU:>FM:8E@_241-/V)K<FAH8W)D
-M6V0_/$EF?$=K=69R21LR:H)O/C9B9(!F8$0_52)%<EQF@F,[+4EF<FMH-B5>
-M?6-9*SYCBOZ-BGML36)816E;:X%/.6*#=GMI6#8\6X-P-A@8-H)K/V%H6DQ?
-M8VM8/VMJ9HJ/<FD_8&%(<6$I%1@M36IK:V@Y37MP6$UJ9F!-=75S6WJ#8UMA
-M6VMS6F-I25E>;GM:8&MK<6 V)2U/:WMC2&I9&!5,@G-9)1M6=79G,B4@)3Z"
-M=U4"%0#^26I[@&YR:$5@1#LR+59B<G* 6U]H86QW:6=%:G=86$E$3V)J:%X_
-M8&E96FIZ=6A$/V)U:F9A15EV=FMC8V%-1#8M3V)N15MR@&)B3U9)6&MJ1$U-
-M7&HV%25,9&(V)6."@GU];6I5%39R9U!Z<EH_5F!J;U82%5J':'!926*#_H6&
-M?8%A6VE;;$UF@TLV:H-N?7-825IW>W!)*RE):VM;84U@16)J:DDT8VA/>HUV
-M:#E,1#!I8T0@(#]I<TU(<V9%8W=),$Q;<GIV=6I,;HIW8UMB:W)@6F)I:5%/
-M8EIJ:6-W<#XE-EA-<G%,8D4=&#9R:DDI-EI<6V]).2<8+8)O;0$. 2D _DE9
-M9'=09H!B6$0R,D1)36]K:D10;V)9;W)@+6AR8U8_1%E:6598/T4_16!K<G=B
-M14]O<W!:64E-<G=B7FIO:$TV)4EO83DP:'MR7%]H6&M[>G)P36)J524M6%]$
-M&QM9>GV%?&IK/Q@I<'IF<W=B3VA?7&<Y& DG<FIN:6!-9H%Z WW\<F%;6W!S
-M>G=)67J";GQV8%Y9:G)N4%@\26):6E@Y6&%B9G!+'4UH.6:1@F M+55)86MF
-M-B V8W<V)5IO6UMP6# ^5FIZ>F8^'5J2@G!A5G!I245%36YQ22]%:EI;>WIO
-M3V%A16-W7F@V(" _<6M6-$EI3S9K,$1:)39W@P$M 2< L4E-6FE$2'IR:TDM
-M+4E>1&-W34E-6F)96W)P+5EW:U\V+4E?/SY)6%@R(E]C:WI;-DD#<LMH23XV
-M:W)G6F)R<F M&#=H24@;/FIB/V)J67*%?7:!:V)B:4E89W!)&!@V:69]@FI/
-M&PX;8()U=W)O6EI/8E@M.RD;16-B6U@_47,#?;!Z:D],;WI_8"T[7H)];FMB
-M6UY::FQ;8%I/6$E-8#X^6W)L9E45+5PY6H.*<"4;2W #=\EC/#=C>EDT/DU;
-M:6]A23966FMK1"TE5I**@FA)7&-)/DE;7'5W6#E@,#YR;6UJ>FLY6G=C33\I
-M*3YC6E0M.69A1&]%-CL;&TR" 6@!/@#^:$UC<$E%:W6'9R4I5%A%6G1$2&A;
-M7F!%7GU)37]R:EE$5DU).SY)8#\E86QZ>F(V/UQ[<FI8+1MC<G)K<GIU<$0M
-M/UP[5#8M23DM36);9(J$5'5R8FMK6F=W;TDE("U8669U>EDI#@X^@GUZ<E!,
-M.3!H8#(_5CXV6EDM-EA@EDU>=7V#=5M$871L/B4I,'6"8&-I168$:YEQ<FLY
-M/UAN/BT_6FM(530T/S9%9G!W)1M+ W+*:6%6.6.#@7!?/DUU>FI;*4E:6&8I
-M(%EJ?862>FEG9F)%6GMB7&MO35@E+45%4&V ;SE-<FQ;63\M-D0_/RT^:W=8
-M9&=8.R ;+6@!=P%< +E:,#EH/CEG>H-W24E@7T5-:%E9:&AC8$E/<FI,:VMC
-M8VAG7TT^/E9@/S!I<')J6$D^17)U<E@E&%@#:O=Z>G:#<E]?24E:;5\^+2U%
-M6D=B?8E:4&IR<FI,67)K6#8I-DE9:69J:3P8&"5B<G)K6E@M)5A?1#]F7C9$
-M+0X@15@M,%MK?8)[8TEA2QL8*3]X;5IF;2U)<W-L:6MN;#8V27!8/S9%6D58
-M9FE$-D5B8TTE&S]S7@-;R& V-F:$>W=A6W5[8UHM36)621(837)F=9**<FMN
-M>V%%BH!;/UIB<$4V/#1)8F9R6&QN:V%@84MA24E4(!U%>&)B7UA)-BDI.0%H
-M 5H W%8V+4DM+4ER@WI086%B8%E@8&-R8FA@+2U;?W)H8$]88VIH6DE)6&]-
-M+45B<FA-24E-8VIH5"T.259B:W)Z>X*":V!)25IJ>E8V/TE%35IR>F ^5FIT
-M<DU8:FM: TG^7$];6EQH6#8R/CYB:F!)240^6%8^-E966%4T#ALM6$$E+3!K
-MBI)[86 _&!45+7%:3&9W23YI>G)O<EQC.RTV8VEN86-:/SE::ED_:7IW-B4I
-M/U$Y)S9C<$D@,')B9F]C;GI[=SYB;U8I%2!$<EE:>GUR:FZ%=S^ DG<P-DE@
-MH5@V13]:;TQ98GIN4&IQ6V)Z8F-D-!TV=V]:34E%1#\V+0$_ 5@ _B='4$16
-M34U::GUZ:CE88FI:.6IU;E@I("UGBG9L:3XE/F]B5FAK<FI@6%MM<FM;5EAA
-M=VM@/S8_8&!W>G5R<FE@36!:6%IJ<FIO8$]-6VMR<EA-53]@<FYS6TD_8')O
-M62TI.5IU<FE;8VQK6#\V/TU;<%DK)6EA66A+-"M+:?YI/!@./X*-@G)G62L8
-M#B!;<&A8:V$_37%Z>H)[6T0R-EAJ;W!R<&%$8W)83W*&@#\V27%A-A@;8&Q$
-M(#)I8#]:3411;H,Y8G)C,B Y37IF86EN9T=RBG)5;G2#8S\Y6$D\56!I:V$_
-M36MK3%QI+3!H<&!8-BM):VD^-C(M/FJ";S8"/P#^6%A)-D1-36ER=7IK-CY8
-M45@^:GIF330\-T5Z>FYC,AL@8UM%8FIJ;FQC;VUN;%E);W)J;EI)/SY)6G*"
-M@G5K<VM@6F!B8&AM8W)R6T5C>WIR63E>56!S<G);)25@=G)C1" E26MZ=U!C
-M?75I1"D;-FAP:3\E16!8:V V+45R_H!5#@X_=7UU<6AF/RL8*4EF;UDY15@^
-M6F9R=HIP7C\V26)J<G-Z=UAJ:UIH8W6#3UE?>W1$*2U;:#\@,EIW6UM>-C!(
-M9EA::FQ/-D1)<W-B6FP^&T1]:EAZ?89R6#]82SQ?86EI63]8:6-B8F E+4UK
-M84L@-DUK:#\E*2DM3()C30%/ 6$ _F-C1#8V/TMH<F9H@%4M/C9$:&9U8B<E
-M86E86G5Z:#8@)SM8;G!J3UIB:WIN:FD^-G)R64<_6#LE*39:>GUU:FYK8EI@
-M8VIK:F)1>G0;27)R:G5%15IP<W9W8#0@6FY;3U@E&S]A6ULG1'IV<FD_&"EA
-M:%YG1#\_+8-L224P:_Y[/ X.5G5[;FQH<69$*2M88V-P)1U$24EB:%!N;&%)
-M/UE:8GAN>H=P;&Q/:&QW?EMA.5MW:4MA<'=9*39%<G)C:5Y526!P;UI-35IJ
-M6FIJ139//SM)8V=;<G)K3$]6:&YR;UA5-B ;/UA:8FA6/CY)25MJ<&M;6V R
-M)3M)8VB"9D\!5@%I +=C8EH^+2([<%YC6W9C,#8@&UAZ:SD5)6EM:D]/@&Y8
-M.S(M,&^">F)-24AZ>V!;)2!9:UA)/C\V R"(+5QR;FIJ;FH#8OYF>FUK8W)W
-M+4M:3U%V<&%@3VIF<F->/V%K14]I1#]B<G)F-CM0<G. ;#(E8%I8:&EI6#^#
-M:TD;/GAZ21@81&IZ:UA%8GA:.S]88V%K7E5+8&!(;U@_36$\*6EF7EIF@WUN
-M8W=J8EEK@F-F,C96:6F!<G)I25A+8H!L8V)I8W&[:VYS22=6>FI66T0E-F!I
-M:5]B8G)R;UE-6W)F9F],8#P8#BE)6&)O6V!)/SY-<G9R8D]K6B V36QR:F@!
-M:P%R /YK3&)M$A(V5DAA6V9W/BTI&"UN:24.)6AN7&MK>G)B22TM1%E]@G)?
-M6%9J>VM6.T19:%I-6%E)-CP\,CYB;UE<>FIK:V!-:DQ9>W=Z36!A345:;W)W
-M86E:6F)B;&MH6%EP84]B>G6 <FE%8EYN:F8_6F-I:VYS<&"":T0828/^BG%8
-M14E?>VQ$&S!S<%E+,%MW:VEQ8$UF24UH/S9$)2U965@_6W)K:&%J>G P.7-W
-M<$LM.5A;9W)C3UMI/V)Z<EH^3%YR35""9R55=W!%65@\25AI<F)08FIR;UA-
-M:G)R:G!6:FT_'2!)6VYZ<F]I2418=W)R:UIC:$M51%MC@D50 7H!=0"T9T1J
-M@QL21$U$8FM<:V-85#0M8%\M(#9L<F)O=GIM8DDK(E8_8F)C65]U=G5J5CY)
-M/FEG301@_FAI=5]/838R=V)/3%A%6#8^;G)R9FIW:DTV,&*"@G-915A><G):
-M24UR;%EC<F-R;75R=V-/6F9K<%M>:VMJ7F9_6T0I)V*(@X* 3TAR<#(2'5EJ
-M8UY$/F)B=V]625I8.4E@83(@+5E8/S]88#9%9UIR<#PE1X-R<$LV6'!C8<AA
-M25!F/UIB5CDI*4];35MZ=S8G8&,P2U]96C9/<F=%/T=B;VA::W)Z<FMJ;W)@
-M/RU$6'%Z;UYK34EB6VYK:EIB4&)W8F%)&QT!: %F ,!B3&Z1)1A56UIH<F-1
-M8F):6$M$/S8Y3W)U<G)J;6I)+2L826!8.38P6G)]@VA%,"TM8W=I65M@:G*!
-M>VM/6#(M W+384U-6#X_:&-B;6MU>F(R%2]WB'I/.5I,;VMA13YI8UAH>FM:
-M2&IZ@W%%66MM<D]/6F]C3U%J6#9$*2=-<HJ*;%%J:RTG)38P25I$)24M;G)C
-M86,#6>5H=S(@-&!H8$E8/Q@E2UEP:U@E-G-S>W _5G)\:4U:344_:6 ^)14I
-M25@^1&IZ<D1).398:%I8/TEJ8TE$.41G:F-G:FMR<FMK<F)6/EA@:G)G35I@
-M36%)6G)G3VE)479]<F$I&P%9 6H B%HP6HI8,%AC!&O^85A035AH*1LI1&!J
-M;H)U<F-P1!LR)3YM6#0I*3Y99GI?/D0I(#YC>E!96UIN@G5B35@_27IZ@W!-
-M85M%/V!8.6)F>XAC)0D26H-W8#D^.V):84U/3T4^6GML8V-H>HIL,$AZ=7)%
-M/TEC8F-C:6$M1#8I-DUUBGI/4'-87EY5]"DM5#L8&RU9<FMZ@6$_.6)0.RDV
-M26IR8V!$+3Q5:'=R7B4W:W)]<F%C6V9[8EL_+3!O;4DI&"5$22T;/FZ"?U0=
-M/$EB7&$\-C]:6F!H<69N@G!)17> <D]%35AB:W=W:EHP+V!;6C8Y6EHY<4]-
-M8GIU<F$V 6$!<@#^:#];;G)A36)R:E!C<G);24]?.1(2)4EC<HJ">FMH7CLV
-M86!H230T/%A98VM)+39;(!(V:%I86EMN>W);35@V6&YUB&(T8W!824\^)3 _
-M@)%P*0X827)F:V$^/VA98VQA2T0V-V=A8&MZ=8-C-D5[@G=@/SE)87)Z6FDV
-M/SXM_C9-8G:"6TUL<%MA:5Q)83\R+39)6F-Z@G!826U-+3M$15IK<W)9/UA8
-M8W!S8S957GJ":UMQ6T1RB'IA/S9I:4DR*2T_82L@)6*%?6@M-EMJ<DLW/$M9
-M1$1K<V)>>W=A6'*#=6$^/EA:;G=R:F I$C]/6#X_240G8VE86%!F>H)W30%:
-M 7, _FM;8VIZ:U9B>FM:8W)V>&!-3%48#@XI27J2A'5R:EA)28B#<DTR+3YI
-M;V)H5"D26"D.$BU)5E]H<WIR:&)B-CE%9H-@,&)R:VQH23()&VJ)>DDT+5AK
-M7G)S/DEP8F-K83]97CY915AB=UQZ<458<GMZ<T0M1%ER?75F8VA%19]@:V)>
-M11U,:G)P1!LE8GIB45A8/AU8844_,&-0.2U) V"K6V)R<FYK;&E5/"U-=7US
-M8VQS8UMB:6QV=6UC6CXV6&A@35]J6ELY27R";0-RL'M$+55@7C\^8WIP6W)R
-M8V-K>W)B/UAA36IP<E!8,A@E26-H9U9$.UMF:F-$4')U8P%K 7( _F-06EY\
-M=T=B>FM88G)U>F]-8%@;"0X8-FN*BFU>338V1(J%@F]4+2U,;TPW5E =240P
-M%1@[1&!P8W)R;VMK6"T;/WAP.6)U9')R3#()&%F"=UM>6$5),&!O.5AA:6EB
-M6#!::#]A24U97$UR>%M98VQZ:D0I-C9C?7%;3V V/Z!Z;FAC624M25Z(;CLR
-M6W5R:V-O-BU)6$54/E@V(!M%6P-8PDQ-6V-C:6-926!Q:WIR7G)K6TE/86=R
-M=69A8#])=X-J9G!R6#8E/WN";G5R:F!>)4)@6$D_3'5N6F-@1&MC<FIO8 -C
-MF'IS>FA@230I6%IR;V!-:&EC:FQ$369J8P)[ /YF33M-=GU$35I,-&!J;7-U
-M4&IP,A4.'3QO@HUZ12TI+4EZ>()U<EY)3VM))3961%9I82 8,CQ%:4U;<F)B
-M7F @&"5-8UAN:D]F@ELV&"!@>G=$.7!I-A(V8#9/15AI340;/UXG/T1,9T1)
-M;')C22<_<FLP+40V/W=R6EMF+4G^=U1W>F8M("5:>WMH25IR:7> =V!%3UI)
-M8FAF+0X8/TU%/DU)-C]88%I:6$E@>F)K<G)N8DE%241)8V)-8V-88H*1<FR!
-M?&$I("UJ>G=Z6SXP8"DK/SX_-CEJ<TQ8:$]@86EI8F)H.4V">FIB8E8^1$DY
-M:6]$16)K6EQF8V%?@D11 7H!?0#^=7)816IZ:$E)+1@^54U[@%!,<D4P%2 R
-M3'IV>F$R(!LV:W9V:F9R>H* :D5;23E):&\P)RE86%I@8VUJ6%M;1&YF)25B
-MBG(_:H5Z<#8M67I[8"4P<&T;-FA@839/<F)>*3YQ52DM27!;64]B:FD\,DQB
-M239$2S9)8V-B<$D^]&E(<H)X7C E8VUK:#E-:4A9?8)R;EE/3VAK8S0.($E-
-M24E865IB6#8E/EI@6V ^,&:#;G%I245$-EMF.4]I85IB@G)4;FYB+1LB36IJ
-M?&]F6T\R*T1+539)8W)%/F9W85A;<FMB/Q@E;W)H6$Q8/D1)(F!K UB)7&)(
-M,CEB<4E% 78!?0#^;GIZ:%MF;S V13DV1#ERBGI::E95+3QA8W)J;F V*2D\
-M3W!N;&)D?8F*<EIC838P:5DB*1M)8$56:VUB7UXV.7MB&Q4W=6]':&AU?4DM
-M35QV@2T2+5@I&U9C9B=9>&IP/S!S;24V640P8G%F;GIJ6TE':&%82TE/245$
-M<F]/_F!H:VYS6SL^8W)K8SPY86%::WJ#>&A1<'=R9U45)4U:.4E;6V)V=RT@
-M-EA@6E@^&T1K37* :6%@15AP64UB8UL_9H-K8V)P7C(R=$Q$8GMZ@&-5-D5A
-M85AA:7!5-EIK8UA%8W-O-A@E86]J8%I935]))6ES<6)89G%/-BD^9H):1 %J
-M 7H _F1F;FUR6U@E%2T\/SXY<(:(:UI:9CY$;GIJ:7)A/RT_845I7&IK4&Z 
-MAGUF8V$_)5]<)2L@+3E536IR:UY)&RUC-@D.'6IZ8W!$68A+/%M:<()A.2 E
-M/!@E6&85/G-'7UE)<G(M/VD[%2MP;G6*;F-P:VQO:$U'64DV,&MW6OY-:FQC
-M65XP-D=F<G!),%IC:6-K@H1N36)K<FMF1$EP:C(V6&-:;7Y<*3))6$U)9BTE
-M/SYC<W-L8DUH8UA8:F9@+6J&<V-%:F)).VI,6&F">H->8FT^-D596VEK8$]C
-M:F)I/TEC<VE%1&-P:&]R:%IG6E5B<GIJ1&:"8V%$.6^"9$T!3P%O /YZ8EQ;
-M:VE6/A4@)54V/&A]?6I%2UA@15F(6UEW:3\M6'!-8TQB@&);=7A]=G)K6UA-
-M7#9$/S0;/V!B<F]@2QL_:$0G'1MBBGU[85B"/S9A<'J*>F M+44@%2TV"25@
-M/C Y8&YZ6W!K530_6T]F@VM/>HA[;G)925E4)15-<F/^86MC:V-K64LV16)Z
-M6R4_:VMI8W.*?6M:3%MP8TQ6<FM81$Q@66-R=S\_158_/F]M,B4_66-F<UQC
-M:#E$6&)N:"U,<G=J+4E65DE:7VAK<GJ(04UZ;BTM-D5I:4U8:6MS<DE46UYS
-M:U9(<$UP=W)K:F9C.3]N>UQB=5Q:33EK@FI, 40!:P#^@W)'6G%C8F$R%1@V
-M/CYF?75K+2TV<&A-=UMI=V$_-DQB6E@P,G=R9E-<@GAZ;&YR6EI)3%E>)2U5
-M36!W6TP^8(" :R4)-GI]=G)B@UDP.6IZ?8IK/EEA-"DK%0X;8%@V+6!W=UIR
-M:&!@86M;6FYI,&.*AGIJ8#Y%/A@.+5]0_E!J9GAR<7=S8%59:U\M/V-<;W!F
-M?8)U<EI)8FL_1&QK6%A-.4U:8G-H3TE)6FB#AVDM/T5:9GIB8F<M(C8_=W)+
-M16)N<E@V1$1)16-O:DE>>UEM>FU;1#8_:%@M+3E<@H-,16%%8VE85EE)8&IR
-M=7)O8AL2.7IW;G)B3S])8X)B10$E 44 _GI[159C15IR;S\Y)2U$8W5H<BD5
-M&UAK;W)(9VQ%/F-I6CE)-D5J:F9@375U<UMZ@V-;85A@:3PI-E5$8EL^86QN
-M?'<\("U:>GIF8G=Q351L>W*">V-F:5Y)4$$@,EA@1#9-9G)B35E96$UZ<EI:
-M82=:?8=Z9F-823\5"1@_2ZDV-UIZ7&-[;F]@8%I-66%C6V-L:WUR>G9P6V)J
-M7E]Z:T]833E$8&!:6 ,_U&-RBGUR:5L_36-Z>EQ853(;)VMR7CE$8FMC2SY4
-M/R<V4&Q536(Y<HIF6UDV:8!5&Q@I-F:(:$]:15E@14PY5E9;9GIZ<F ;%1M;
-M;F9M:EM):W!J/@$; 2< _H"*:F-96FER9EA@+2U%:WMR<C\I&#)(>G5B<F,Y
-M56:!=S8V8'=P3%MR>G9U:DQNBG=C6TQH:U4[+5AA34DB/V]R9G=/-DM-;8-R
-M9FUW33EI<FMC9G=O8F-96V8E55M)26!O<'=H-C\V+2=K<FQT<$1K?8I[8UMI
-M84DI"0XM1?X@&U9J/UJ!<FAB8%M)6F%C<5MA9G)R=G5R<F]D26^"<FA-23])
-M36$_-C8[+6IF@GIC:F-56UYNB6A86V8I&T5B<4E)2&A;8#DE+3P;-FEI:E@B
-M6H-L338E8H-O/" R539KB&]A25]H6DU%259(6G5Z=TE$,AM)<&-R9C]->H*"
-M:UX!1 %4 /Y]BGUL4&=R<EY9.39$-CEP;FMH:4LM,&N!8V9@)TE)2'(M'5IZ
-M6#E6:GIZ9CX=6I*"<&%)6F)+/EEI6G)R1"5B>W)R338_+2]J<EQ@<FQ@:%IC
-M6#E::5@_/EII*4E4(")H>G)[<F-H51@826),8UQ:<X*%?6MH:G!B7C 8("G^
-M("!)8RTP=V):34E915IQ<EYC8%IK8DA]>VI_=S9K?75Z9C8V6&IH6DE)6#9J
-M;75[;T\V6&%P;'):/TEI:4L^6FM@8%MA/VA4*2U@,B5M669Q26.#:UDV/%MZ
-M<V8\25@V/WIN6V%H<&]H6%9@6$UJ?7!486DG+VA;7G-;3W*'@G!, 6@!:@#^
-M:X)\:F%::GIR:"<V=$0;-F-:<VYH/R5:>VMK9R4V5#]6&Q@P7T(M6%IK:T0M
-M)5:2BH)H6$D_+39P<#EHBF@5/FI<;U@^52 @1%@Y6')Z>W)B;&)@7V-:-BU)
-M83])-@X5,$5,4&1U=7<I#B(^5#\G)UIZ=75F:VMN>FM>.R E_CPV6W$\)5A-
-M:$E$/"5+@W]/.4UB<& G<G-C<G-%;'5R;V@V+3EJ;4Q>24EF8UQ0:F<^)3Y/
-M;&QC238V379W34UJ6G!@8U5B5C8M340R:$M%>W%L@W):24D^6G5Z<G%@1#]F
-M9D]A8W-S;&E68V Y4&IH7EA8539@345R<F)F=8*"8P)- /Y%:WIU:UM89()O
-M)2UQ:3LE245K:FM@,E9R8EMK24EA3TD^1#XY-AU)6EAF*2!9:GV%DGI)-B 8
-M)7)W6%N*=RD_84QK;5AA/#Q86#8P7'J*>GIW:W)W;V)+/"U%25A5.3(V*2(^
-M1%IN@V$T("5821L817=N:EY/:&9U;VE4.S;^23YA>F@[-DEW8#L@%2UO>UD@
-M+6!S:#]H:V)J:V%J7U!G5C0E'5,^/DD^-F!H5C1-23 \1%IS<F)653Y%:X-K
-M5F!%:VM/=6I5.R5%,#]Z2S]R>G)]<V-A.QLE:H)]@F-F;VM:7F%C<W5K8T1B
-M<$Q%6UE>/RT_-RTY:W!5.T]F@GR# 5L!.0#^+5AN>FUK8D]M<#\M8H!P/CY)
-M7UI9639-<V]<8DQC=$Q$8FM9+3PM36)621(837)F=9**9RD.#A50@G)B=8!A
-M8ULO3VIK8SE8;& \&S!S@VYV>FQR>GIR:44E+41@<7!A/RTI-CD_67IR@%4R
-M6&9;1%EZ<FI9-EAO9&9O7E]+_E@Y37ER225$>V@R%1@M86\\#AL^:W)W>W)J
-M8EYA:DDP:UA85#L[)2U$.S9-:U]%63\G,$E/;'-@-TE)2V.#@FIC86Y[6W)K
-M6D0@23(V=6);:6!J>GUQ:44K)4UR>G)C;'-C6V)I;'9U;6,G1')?6F%6338E
-M-S8K+4]Z=5HY8H)0>@%H 38 M1L_<&YF=7IB4& M%3!J@%])5$5%5CX^16)R
-M<E@P37),6&EZ9SLV/F)O5BD5($1R65IZ?7<T PZY-G)Q<GIK8G-C/CE:@&@M
-M3'=B1!@517-R64];<G5U@GA4)3(_86-O8%A$1$M%24QC9H9R2T]K<&IB W*R
-M838P:FA/:W-K85@V1&MI11LM85A5/#1);V<I#A4R36)ZB7)J8EE>8DLP8$1J
-M=V!A1#8#/]588V=)2U0V-#9%6%!)&R4M/TQQ@FU<;&Y]<H!:860V83X_4&MG
-M=UQ,>FYK:6%$8&EJ;F-><FM;24]A9W)U9F%)8&)-36M@6TLV7EY$+3EJ@VHE
-M6DEB 6,!+0#^(#!>:$UN@FIB6" .*4EN9$UH138^)TE81%QR8C9)8EIH:W)F
-M84DY8G)C,B Y37IF86EN<V8P#@XM:VUU@G)9:FI8-F%]:T1$@&])'14E3'IL
-M65E;:V9V=TD;("=@6FQ@6$DV1%EP1#Y,@X-I16MZ<FMK9G=I539C8TMC>WIR
-M_FQ@6&MP9C0I)2=8:4EC>FD@"1@I/T1F?7I;34U@3UA:245G;TQ9<%X_23]:
-M:6!664D_7DE88%]$+3(I-C9$;FI:<W)F=8!/86)6/EA61$E@<6A624E$8%IJ
-M359B6C\M6&AJ:$U%;WIJ=VE8:%])26):6EE):'!8,B58>G<R6();:P%/ 38 
-M_C]+8&Y;3WUR46 \%2U69FI;;F [(!4W7S]);' _1$5C;VI;4&-@6%IJ;$\V
-M1$ES<V):;'IJ9BL2+6)Z;7EZ:VIO/R)@>EQ>,')J5C)!/"=J<F]H6EM19V(M
-M(" I/DQQ=VE)-BT^?%\E)7*#<CE->G5R:FV"<%XP6%A+:W)M??Z)<EEB>WMF
-M6!@8+4]A<'YP-BDM-EA@8%!O:UA%6CE/;(-R6D5B:&MH64E,6EM)35HV+5IK
-M<&)B6#!$6%Y56&)98(" 6VIR16]J64E95F!-1&)Z:4E/1$U$<H!J65@V(#Y8
-M8F]6.6ER8W)Z8EE:23E)/S=89FAR6"48/'-]83Z"3( !6P$V /XY.5EN>VIZ
-M<F)C6C8W/D5R?79K6"LM6&)626IP23<G-E!L6$588G!O6DU-6FI::FI%-D]Z
-M>FI5)3(Y:G]B8GIF;T0I/VIB5C]K>F$M1%8V8'-Z;6)-:')8*2]8;CLP8()Z
-M8$D\.7)C)0Y,=6M)37IZ<F9M@G-K/R4M8'-K6WK^DG=/8WJ"=6Y!&#(M2WIR
-M34E-6&!@8FM@-GIJ36$M-F-Z8TU88F)M>G-Z<&!8/DUF-A@V:WIR8U\^.6!X
-M<'1@-BUU@G-K<&)R=V):23E6<$DT:G)R:E@M)VJ)@F)654$V/CEC<$U(:UMF
-M>FI6:&@[+4DE16%R>F@E#AUB;GLI@C!R 6,!/P#^*1L^;WR"@GIF:UMA64E%
-M8G6&=4\G/FMS:W!R<F-+/!LV:4TV2W!K;G-))U9Z:E9;1"4V<GU:5"TV6&J 
-M8EMN3UMB7DEK<EE/<GIK7B<P-D]Z@FY@16IZ:"DE19!6&RUR@DPY86A[:24.
-M-G!,.5IZ>W)C7&YL<F$@%3EC:T]J_HJ"6%9J@X-U<$M?7DEH:UA88&MK:&EF
-M:EAR=6MJ.R)%9U9;8FMJ:VMN?8)W:3\_8EX;-F!K=7=L83]/:DU%)3(I375[
-M;V)R@GIN<EXM,&AH-D59;8=6&Q4^@HIZ8F%?8#8B/EIC-%I@:')J66IF23)I
-M/"U)<GUP-!@;/EIN/X(_:P%K 58 _B4K66M]>WUM:&!$6EAC8FERAGU-("U;
-M=6YZ@H)S:F R)6TY%2UA35""9R55=W!%65@\27![;UXR)3EB@G!J9F)07FM)
-M6G5C8GIN8W<V/#(Y@'IC-C9:9G=5)3^";B ;28)P23]BBH%>(!L_)1U@>G=R
-M:V]U=G5F-"LM3VE%1/YZBFDP17Q[=G)I3&)R26%/6UIN<G)I6VIR<WMN8U4;
-M+5E/<GIC8UQ;:WN#?7!86&IF+2U836)X:6)-6FM@)1LV6%I<:F-6:GIR<GIJ
-M8E]B:T0I)4>"5B .&UEZ;6IH47=A/D1):%A63%!B8VEJ3UA8:V$E,&-U<FE5
-M/$UP>UF"87(!:@%$ .X@/VA;@G5]9EQ;3#XV3VE99GUZ6B(5.6)?;H.&@FM-
-M1#)H1!LM/D59>G<V)V!C,$M?65IS=6I:12TE+V9]<FUK3V)B8%IK<'=S7&MU
-M1%Y$,G*":"4;+3)J:5E);'-F)2EK;4D@.8*->EXI&Q45-@-:_F)K>G5Z<DM$
-M24MA65AQ@G V/F-F=6)@)T5P/TE$33]B:W)H:&-R>WUS8S\8&"TP8G)%34U/
-M8W)Z>W=J:G=>,CQ+.45P:UM@:7)P63]/>'-R:F)-7V]J:FM09']Z<E@V-DQN
-M8D(I("U@3UEM1&-P6U@_67=I239)6&!@,"=A:8]I-"E/8V-K:%E$8W9K<'H!
-M<@%) *0I/VM/;GJ"<F-)/TP^,&-B:FYN3U @.SXV3WJ"AFM%,#]Z;S\#-LTW
-M:GIR1$DY-EAH6F-R<G=N63\M+6-N;F)C6VA:8W!J:G5K3UIH/FEX6F]Z5A@.
-M&#QC:VQ@6VIW6#9@:C82)V*&C8(\(!TI,CY$/S\T:P-Z_E@P85E)26ER;7IC
-M:6E(9G-9-EEI84U$-BU/8FY%6V]Z=G5U<C88#A@V8W-6/T1::V]B36IW<G!$
-M/U]I-C9<:F)H:V)K=VA18W6$>F(_5FIB65],1W&">GIO:5MF:VA>/"U$.415
-M(C]P8E@V3WQZ<%A98EI@/S)8:W-5*2TY;8EL338;+69P=W0!<@%@ /XM)V)C
-M6FMU?(-K/EA6'3E,<X)N6V%)5DDI-F=UBG)),C9U>F])+1L2/FZ"?U0=/$UB
-M7G)K9GIZ<FQ+-F)N<DQ$-FE@1&AN@GI064DM)VF(;G6":308&TMK;G)-14QR
-M:%9O=VXT&R=FA85I55]>14]>141$6VYZ@&(E3%I%27#^<E%J8FIX145R:V)K
-M=V]H338E26]A.3!H<FMJ8F)5(!4;26MZ:UD_16N!62DY7')H/S]9=UDV-EY%
-M34DM1&QR82M:?8)K*3]J:%9)245$:GI\@GIK:FIR=$LV-DE@5!LE6%D^66-\
-M=6MB66]@6F%@:7)[:40@&V!P/Q4."2U;@D5' 7(!8@#^+41O<EE,6VV*<D5)
-M8#8V.6F">G=S<&I@6%5;9GU[83X^4'I\<%0I&"5BA7UH+39,66-L=VQO<75Z
-M8EAH9F-@/R!%:#E%6H*"1#X\& E$>GI]@WIA)1@^8W)P/C!$<G=:3V)]@%XV
-M17=U;&N 8EE>7CM):&]F:WIR2V!%+3YW_H%N8E%:=V-86GIZ<G]R<F M&#=H
-M24@;/FII:$U%:6,@)6AZ?6L_-C):@F]$-D]O8$E))U]L/"T[254M&!TY:W E
-M-F9_<BTG36]A24E$(DAQ;8)Y;FIJ=WMP5"T_;VT_-DU@-C]C=75B14AC2$UI
-M6G)B8UI>-"!-;U42#A@M38(^)P%, 40 _BD^66MO8G)R>G)H5DU>7#!$@7UN
-M<G5R35MW<&)R=6I:1#]:9&1X83(E36U39VE)8%QK7&MS<G)N;EI0:EI)85XE
-M-FA@15A[@F@V&R K,&)K>H)Z8S(@)3!@:V8V-FAR9CE$>GV :4]:8G)Z@DTY
-M8$DE&T5R<F9N9FMP11LE1/Y[AG=@6FMH242 @WJ&>G5P1"T_7#M4-BU-:&MA
-M2UIC.2UB@GUK,ALE6()Z:%A;=W-B52 V8$DR+6%U53PM-UMQ7C98:F-),CD^
-M23X^238Y7UEJ;F]H8G)]@&<[-F!G/S9?;U0P:G5R6C ^6$1,7SEH36%%8FE+
-M<7M@*2DR25B"6& !:0%> /Y</S8P.3]R@G)K6TDY8V])+5EZ9EYF:#8Y=8)C
-M36]H6VEA6$4_@'(V-G!C)TAO26MR8UQC7FYR:UI)66-I2V)O0BD^5C9$>H1R
-M1!M862<Y36:"?7)C7D$@/EM@+2)$23\E-FMN<FL\&R=F@X-))UE)*0XE9W)R
-M<&!K>&8[.UGH9X)]<V-:8"4;8']K<GIZ@W)?8$D_6FU?36-O8V%P61T;27)V
-M:3P5%3]W>FI816)P6FEF-EM6/" Y;UM%25AA<6@^-C!::&!4+39%.SE86&!B
-M9FI@7EEM>H)B84E65BTM6'9G/G&">F(#/HE)8V V5F-?:T<#8HEA6$]@35IB
-M7VL!> &  /YW6TDR$AM@>FQC8#8E6W)P246 :$U08" ;6H)K3U9,37!_<$U/
-M?W<^-FAB25A@16-K8EI;6VYZ<FI)/DQI8&E[:#LG/BTM<(J"22)-624M26%R
-M=7-R:V$_26%F-BT_/RD5+6)Z>V\M#@XP8GM))4E<,A4@6&ER=V-C:VE)3VGV
-M:W5V?'!?52 .+6)H8W-Z>H)R8TD_3VIZ7VMH36%K82D@6')R:UDR&S9J>FUA
-M6&%;15ES65MH53L\340P+3YC<&M?/S9>8H!O,BDV/TE665IB<G%H6EEB9'EB
-M3$1)1#(M16=,6'*"@FM6+24V8FI:6F):<F-:6@-BAVAF7$]I:V(!9@%U /Y[
-M<FE$"14V6F)<6CPM26MR<F*"<$Q:8"L2+6-W:& V.5N#>SDV:H!K36!(8&1,
-M8')<:FMC7F9Z<VI$(#EA.6)Z<F-)-B 83(^*<%E+84D_36-H7')Z<F=;66)K
-M6$M96#8I*45R?7<_(" M1&M>+3!>1"DO15M;>G)C8DE%6FOM8F)F>WAK7B 5
-M(%EO8G)R:6!-8%M86FIR:G):/DE18$1):VYK<4]$*39K>G%B8VYA/UAF:5YK
-M6DM88$DV(" _5F-R6V!H36IJ23(V24U624E-9W%Q<FAB6EIR9SDV23PV/TDV
-M36IZ?7)J/R V5@-:D&)B:FI-6F),3']W:$588VH!8@%F /YR<FM>(!@R/D5:
-M6CXM6&-B:W*#>F%::%DI&#EO7%@[/TUK<BT;-F)R:F ^5F Y6H)J<VQF:T1C
-M;&$^&S]8)4QD;7)I22 .+7EU=G$Y17-P8F)G36)N<FYP;&-C6F%;:'!>,#9B
-M;G)H2UA9:&QH22TR.SQ)6UM,9G5O6$4^6'"\7T5@@()V9U@T,EER:W5K;&A@
-M6EA-3VAM8V-:-BTM-C)6@&)>=T0M("5@<FYI6F%A6%MC8W)Z8#8Y:6$_ R"7
-M,%I@1&=K8"T8&#M;;G)L85A)245B<$D#/Z=%66A;6%AA85QZ<$]$:W5;3&-8
-M6"TI/EIC7T1$8$PV)UI><&E64&T!<@%B *]Q8EIB.Q@[6#!$22TE7FE/3'N"
-M>FI::W))("UO6C8^6&!03#LR)2]-6DUA8VE:3 1R_EQK36-K8%4R-EXM8%MB
-M:FQ)& XB6DU;51T_>GQF6FU@8%QB<'A[8U])86%B>W)</TE-8V=H<F-R<FIB
-M52 5+6AI:%@_<FI+63\P;V@_37M]?7IR7D5+241B:UY::V8V)2E)<F)K:%0[
-M*14@17IF9HA@*Q@@6GI[<%M%245:<<U(:GIO+1L^6$LM*2LG640P6G)A-Q@8
-M+6%]=FYP:5Y)-D5R<$LV/DDV-CX_6GAX8VMK7BTY;GMP8UE)/#1$86=8+3EB
-M240V+1U-?V)-9@&" 68 IH%H4&%$-DE8.3LR&"!)6CDG<(I\8EAR>FDV.6A:
-M+39C=V8^,$D[ R74+6%J<'MI36)N>W)L6FIZ:V _/UE)8&-K:VI)& DR7BTM
-M( D_<FU6.6)C8EPY:7=Z:UE5:7!P:EQZ:$0[2UIC>F9>>FIN<#D.)6)O:%D_
-M:V P22T2 TG^66EK=G)[=V)A/QLV36!?67<\(!@B8F)R>FA>*0X@26QC:GIO
-M-B V:7N">FA:23\Y6V-A=W-5-#E8638V539+,A)%:V-%,!TE16MR8EA@8F)R
-M<6UW8S8V52T5("4P:GUZ=6YW/AM,BHI[<%I865IN<F ^/F!-87!+("5B:#8Y
-M 7L!=@#)@G)B/UA;:&MI62T8-#E;5B)@B8IO6G*(=F!:6UDR+6F#>F _-DDT
-M'0X;24Q:>H5:/UZ#>G)B:WIU:TQ%541836!R>FA>,C]H)0,)_B)B?V Y7V)H
-M:$E89G)?,$EI8&-O4&]O/S1+6F^#:%MR:W)K.Q@@1&-I3UYC6# V(!@E&R(^
-M8VQH3W6)>UE$(!4M;FE;8EPG#@Y636=J4&M5&"!88%I-<F,M)55R<G5Z>W!A
-M84E%:G![B&]@6&!?-BU<6E@8#B5@8FEA1#0G1(]J34U@9FIR;VAN<UE>63D#
-M&*(I1&)B7&MS5!4G9&UV>W)K;VMN=FIB6D5$38!K5#)$7R(M 6(!;0#):V-R
-M7S]->GQS8EA$6#!$;"(P;8)Z8&-]9D5K>E@M($F"<G)P63XR#@D@0B=);H6*
-M:W)]>F9B;'IF>GI@,"=;4QU->F!R;H!H( ,5_B V:X!C8$5%;G!%8'%8,DEC
-M6$QWB'IK1" M/V-[8#E::WIO/"D^6$589&-P6F!85#(T*2D2,&-,/DV"?VE5
-M( XE<(5P6V!>.Q@M66--,%A>&Q@\66)@=TLE(#MC8V)R>VM><FDP8F)R@GIR
-M9EIM,C9F85E$1#Q$6G)K:54E+9M-,#YB8VUR9F)8:VMP;$DG%0XT8$TY.5IB
-M530#+99%=W9N:6M><FY_<D14.VMW6V%R:T0V 4D!6P#^33Y'8SXY<G)C<&)@
-M:$U5:#]$6V):6WN"8SE@>EHV-DER;FYJ:50K"14G+15)6V: =85]<69F>W)9
-M:8)W/B!62"5):DAC6WIP,C \.RLE37MB63\^9F\^6'!H1%E@8VAF@X):/CDE
-M.UAF6"TM17)S52 Y;T4_:FYZ36-P3SX__C\[*RU).S(\;FUP62<8+6:#=UI;
-M6&!!%3Y925EA:%4\1$UJ8F Y6#PT.45:<G-B37J 6$]:6EQ;;U\_6"TG6FMH
-M8%A>7DQS8W-4&Q@M239-:FYN8F958VAR<VDV(!(T;%L^6F-98V-5*Q@;5G)L
-M4&)L:VU]<DQC6$UJ6EQZ=H)I10$P 5L _EXM&UAB6W!-,&!J8EI,;')-3'I-
-M)S9K=6-$:')B6%E<<GIJ8EIF/!@G," .*38^35N(>F)<:W)R;VYR:V!83UMH
-M8FIB<&IJ7&T_/U@R($V :DU:36MI.S]@=5@V,$UP2')[-B(V)2U)8$DT+55L
-M@6]$27)9+4ELBD5%;5HV1?Y-3%Y$/TE$.6](:&!$1#YJ@X)L8F)R;#Q+6$1-
-M6UIO:FE::&@V&TE>+2 V6')P6SEF@VM@7&A%/UAH65A",C]C=T@Y3W M8F-O
-M51@2*5HM-F)Y;UYK3TU9:7-[6#0G-&%;.6J!;'-R9CP@%39R<UI<<G5[?6([
-M644[6UMC9G6"=7,!8 %9 /Y8.Q)$>F9B/C]$8&!,16-R3"EZ83(W26-/2W!K
-M8FIK:F]Z;6I/:$D8&" 8%2 V1!LM>WI96G!/9GQU63]B>UA-<UI::G*$>EIJ
-M53Y:/!LP<FIJ9TQ:8SXE.7=P/BU$8V. @U4I+3(B.6\^(!LY:X!B8GAZ9RTE
-M285?.6))*4G^6T=B9E5964]P6$P^1&A836YZ=VMJ<W=H35M)56!%8WIZ9F9I
-M-BE)6$0R.UAW8V%H<GMN<FIJ6$U:8FQC8#X_66I8-DE924]C6D4T("U:-B5%
-M@GIB8E5$.4]N@W!+23E8239BC8.#@G-A3R4V:W)G8FY[:X-G16D_/V)K9EY<
-M@E%R 7(!30#^/QL.+7)R6D1@669@2S9$<F])>FI%24E9-C!<:F-R:UIJ>GIK
-M8VU9/#)$1#0T25P2(&IW2&)]6F)Z<F@^068^1']H/TU9;8*";UQ)540K*6!:
-M9F]@:6A4,#):8E5886!>@HER/B4\*25C10X.%4E-+41Z>F<M%2=J:UIO824V
-M_F!@65I-24U+:G=@23EC=TDR/VMR9EYN=TA-63YA26%N@G!:63]A?4E+7C]H
-M=V)@9G*#>G: <V!@7TQF<G!?66%J85A+6%E96TDV-"4_8#8;+6I]<F)%6#LP
-M6GIZ:T\P23LE18R,AGUS8UHT,EA<9F)<:%9U9S]B.3E6=VIL:8)%6@%J 5L 
-MZE@I&"5B7&)-66-Q;'!--EJ"@WUK23\V23DI.6)C<W-K:GJ#8V)P8UE@:F]I
-M7VI6#B5?<DM'<F-C:FUS=UM8&RUW>F):7V)LC'I:6%A)1$EC<&]K8G!P8%59
-M9D1@:G);3'J2BF\\1$0P6C0##OX5%0XV>GIB1#1$:%E88W%)/D]I5EIO6$5)
-M1VYR6#]:>F\I%2U96#D_=E8^6"TV3VQJ>GIM/REB?TT_:3Y$<F)-6VZ#<F-Z
-M@&=-1"E,<WIK8&%;:6-@6UA@6$D\+2U)6C8E*4QJ@VM%/C8@,&MV;FD_1"D@
-M+8*-A8-S8UI864^36FIF35IF:FIC9CX=)6MK<W=-3 )K *EB7C(R6#=913E8
-M6V!R<S\G8HI];EM/1#]$.S=A;FQR;69Z>F)%6DE%<@."GVMR;1L_3&)I.5@Y
-M3V!B=8-S7@D816YW8V-H3WIS14P#6/Y@67)R7UER<F);:6@V7WJ":4UZDI)Z
-M645927 V,#D@#@D.-H*":DE+<8-96&-J;V](83DY>'!%16A9:VEH:FUZ5"<@
-M+5I3/F)-154M%2U,6G)S;S8I8FDM,'%8+4D^-%]F<EM)46UW8S\E.6QZ>FM@
-M8%]O<&!88UDV-C(V8&*R/D1$-C)J8U@R,BLI369N<G!)$A(I;85U?7Y@36MQ
-M2$U>8UI8:G5F@G5<+1LP47IS33D!:P%R (1U<FA$ UK^545$&RU:<F$B.7I\
-M;G=P8U4M)2 ^;UI@9F:#9FA8+14E67IZ?7)D<B4M/UAB23LE)3M$6X)N7SDI
-M-G=N<EE)650E%4UK8F%K8VMC:UER6DD^85DR376%<EYNBH9U8%A827=:6GA5
-M(!4.*7!Z8T5)<H9H,#)@9GIK9RDE3%\G^2!W1#EGB8I]>W!F-C9;:T5H8EI@
-M-BLT+3Y68F \26!@)25B9BTG1$]F>H!R8$UB<G!9/$MB;7MR:EMA8F)C6&MA
-M,A@@-FAK8%MH2S(^6V<R-#PV/UA)16MN01T;3VM1>XIC16:">FMC8S P<GID
-M<F9I850V7V]:25@!8P%V +)Z>W=H9FI985@M$B V26-$,&)M<GIN<& T%3))
-M6$U)67)U35A8%0X5,%A>9EH_7V8^-@-:_DDI%24M27IR6$L_6')Z:F ^13X8
-M#BU?4%!J9GAR<7=O:%XV-CPI-EMU;F-D?8)R:VMI16MM<G)Q64$P+6!F6TE;
-M=WUW239;8G5K;%A635@M(%PV&SEZA7Q]>G=886QJ/V)O4&-%25LV24DW/S8V
-M3VE5-EA-+25):6YVB8)P3,M-8VA)/DUI:G=R8T]W:4]C:7IL11@5+6!B:')P
-M<%8^3&I/568\+3\W+3EL=U4[3TU9>HIP35QVA7UZ;#PE;()U=7-O8DE):G!)
-M/DT!7 %R /Y9=VIF>FI;:& M("D@-F ^)3Y,<WUN<F R%3Y@/DE826MJ2454
-M%0X@+4598F)6175S25AI8UE)-C9$6'=W6TE)6FYU:F-823\5"1@_2S8W6GI<
-M8WMF:W=>-D0\)4QJ1UIJ;6)><G)H36MU=V-P<%A>7V!-6SY/>GUR<%A;;'K^
-M<F9R<FE:53)551LE6G5T;F9Z;&MR:D0W=W)C8VM86&!8-BTV+2U-:5EA-BU5
-M86IB4'J%>U8^65A)56%B66I_8TUP:V)B:X*#21@.+5MC6V%KA7Y]@V9-24PV
-M)3<V*25/>WA:.2]B@WYU6EIJ<(9];6E)9W5M;7UZ63)I>FHV@C9? 6(!9P#^
-M17!<2')K<&MC5CY)-DEC6DD^+6-[;7!-*2!)9#X_7EIL3TE)8#\R4%Q;86)J
-M=TURBF)'<&YC:%9)6$QO=V)824]R=FM;:6%)*0D.+44@&U9J/UJ!:6)R6#!;
-M:#9$6D1$65L^-&MJ8&-[<6):;'!,6F-@8%L[6'5[8')C15J!_G)13&U[:U@;
-M-E4[-DEH:FMC<VMD=6\^'5]R8VIS6EIR:TDE*3(;-E@_3S(V6X%_:UIF@X!-
-M-DE8/TU@838R:EM$<&]B6V-Z>E@E'3Q@8%I96WN&AXIW8V!;2S9>7D0M.6Z#
-M:B4;,GIR:V-H6UQ]?5QB6'=F:VY]>DPK8WEG+8(G60%J 5\ _DUN<UI:8W)N
-M;G=I359H:VMJ5B4Y:V-K6T0V5F]<26%I<FI@6GIP3$EO7&-:87(^48)R2&IL
-M8VMF8G!:67IO6EA;=GIK:&IP8EXP&" I("!)8RTP=UA68U@M26IP8VAH8%E8
-M/C!;8T]C?6!%36)K8DE)/UIJ3%IM>6-B8#E9>_YK.2E%<G]F,C8^14DV.5M9
-M8W=B8G)J8#8V1$Q:8F-K=7)O53(I(#QF138E-C]H@()B6GJ"5ATP7&!).5E5
-M/UA5+7)R6DU1;61O83P^7T]-/CE-=8V*<EM96EE):'!8,B58>G<R&"EB3#E+
-M6F!;<H-Z6T58-V)S;G5J36)D83:"+4T!6@%$ /XV9GUN.6!R:U![<E@V6FN 
-M?6,V,&-K9F%,/TEB;VMB<FMM<EIR?6(P3TU88&MK-B=F<F!B8UYR>F)W6#!B
-M:%E:6FYU9FMK;GIK7CL@)3PV6W$\)5A)6&%C24EKBGIK>G]N:TDE2&-:8G5I
-M/SE,:FI6/RE$<EM88G)O8U@Y6H#^:SLE+5E[<EMB7F!@.R<[-CEJ:UIH/V)P
-M1"U)245;=W5C=WQ@/C(G6V!$)3(M+5QZ8TU/<E8;(%9K:# V6$M@859Z<T5/
-M6FA$67-X85M8:%@T+5IZAGII/S=89FAR6"48/'-]84E5440E+3])3U!Z@EI5
-M-B4^7$=F>GAR5EA$@BUF 5@!'0#^+5IZ>C P4&I%6EQF)2TY>HIR63E08EE;
-M34L_1&)P7&=13W)B3VYR23\^/UER;UM)35QJ8$E(:G)N@&$V25M-5EIN:EY/
-M:&9U;VE4.S9)/F%Z:#LV6V-:8&!8:HAS3&*"@GII.S!89W)U:4DV,&!H:%4M
-M+V!;15MK:6);8W)Z_G)@/#Q/9W)J;FEI<F9$-B4E36QC24EP9SXV9EA$3VMS
-M8FYW3&%K,#EA6#]!("4^8&]I35E)(!4^=W=$+3 V6&-H<FD_26%825IM?7)R
-M87!C53=/:WUR:4DE16%R>F@E#AUB;GMZ>V-)/#9).6EI;'HY+3(R25I)16:"
-M@G=H-H(=6 %A 24 FEAK:FY@2UAJ8V]J:#LI)5EU>G)85F)B6T5- V#^8F)K
-M3UAJ<F)J;DU6224P:'IO<FM9:FI-/T1$7'MZ:6MB23E)<FI9-EAO9&9O7E]+
-M6#E->7)))4UB7T])37*(<# Y<WJ"@VDV.6:"=7=)+3)834U@6#XY345J:E9$
-M6FI_;75J84U86EMB<&-F=W=K1" 8*4]?1%A_<D0M8$DPXTLY8G)R8RD^=TDG
-M35@_53(T1#Y:<&)H5BL.+7" :38E-#EB<&)?/S]824]C;FUQ<FEC8T]+66-N
-M8EQI/"U)<GUP-!@;/EIN?8IX8#]+/R);<VIK)0XM+4507SEB@H5]<C\@/P%J
-M 6$ \X)]:EEH8$UJ9G5Z:V!)56!967IJ:&-P8#8M8G)U9F)R:$E9;G)K:F)A
-M-A451')N=7I:8G> <$D\/W)U=7)D23\_<G)A-C!J:$]K<VMA6#9$:VE%&V)H
-M8%@_.5QZ<F!+8&)Z@VL_)3]U<GEH/BU8/RT_6TD#+==B@"TG7V!-3X!R6TUK
-M=V$Y:&]J<GIW6T0@'2U66FM_=FE8:44V53(V=W]9)QM@;4186T5F1$EH35!L
-M;VYB1"LT3'!P1"4T/%!W;FI$/TD_15IK:G)[>F,#6ZYI8FM836MA)3!C=7)I
-M53Q-<'N%C7AC145>/%MJ2"T.#CX\/SDM,&*"A7%R8U4_ 3D!:P#^=8)W6F-6
-M-V)U;FYF;U]-8VQ/56IO6F-B-AM$:FUK669Q5E]P:VA/:G [#@XE245G=TQ)
-M9H:(:%8Y:'IR>G(V/UYF=VE5-F-C2V-[>G)L8%AK<&8T1$U-26!@3&M9<GQG
-M36MK9&E:/TQF=75J6%M82UEH840E$CEJ/R Y1!LG_F]R.3!?@W _/UMB=7IZ
-M:F$T&" V36N <FMC:TDV/"DE:HIO.Q@P8&E]:3EJ;VEP6$]:6H)K13<V1&AW
-M82DM14ES>GII8TE$,"]65EQVBG)C:VMR;FI836EI-"E/8V-K:%E$8W:-DH!O
-M33E-6&-0.3D=#CY@=38)%3E[A6YB38)).P$= 3\ BVIU<F-@14E:=75Z W+^
-M1%AP:2(Y8TE9:UH[6%EJ?V)J<E9'6VIP145K9RD=.SLE/U\G-FIZ>FD^&T5K
-M6W)M/C8_;8)P7C!86$MK<FU]B7)98GM[9DDY+25);UIP8FV(>F-K6C]R>FDV
-M/TUR@V]A8%MA8V]@/" M,F)$.3PK+5MW+1@P<G5>,$E:<GIZ\G)R52 @&RU6
-M:VYM<W!9/SP;&T>%>EHT)2U);G V1&UO8#E)5B]R:UDT&RU$8F]5)2TG8G)U
-M?7I@638@+3(V:XV#8F9N<FYZ8V%K<U4I+3EM;$TV&RUFAI*-@VH_-EIS84EA
-M00X;.6I<(!L_<H-U9S8E.P%4 4D WF)K3V=),&EK9G)Z?7UF85MR>R5!21TY
-M;6MH3T1/>GIY>FIF5FI[:3!;<DDM.4DR($DR&V%O6CXR($1@15IB340M;8)S
-M:S\E+6!S:UMZDG=/8WJ"=5H^( XE7U9-8&($<OYA.5MR:DDR(DAZ:V)K8DA:
-M<G=;3S\Y8& _3UXV7X!N1#9C<G M15EU<F):;FY$/#(K16!18W)O.2U>,CQB
-M?8)P/CD@)4UW23!?8CX;.6D_6V _-"<I-C9%9C08)4E?:GI]6V-8.RTE,F)U
-M@UQ9>W5N<T5;<GMI1" ;8' _%0Z>"2UL?'!]@F,V17AR34AF("4I,G1>&S!9
-M;75W21LV 6 !1P#^1%I$6E@M36IJ9&AUBEQC9G*"14A8*2)8:FA8.4UZ?'5]
-M@G);6X*(7UEC8F!68VXE/CP;.6I9/#(V9F))/DEB23]<;FQR82 5.6-K3VJ*
-M@EA6:H.#82TG%2UM/C!).2<^;WIP25A::F$_*39F8FMK:4U;<GIJ:FAC8UHB
-M,$0P_DUZ>F Y66MP-#]B=6MA6$]C8%9A-#9-24UH6"T8:5]I:VIR@T0R&Q@^
-M:EA6:&([&S9P6%A>-BT\1%4^.6%$)41$8&IR;EIP6S8I&S9@7&Y,2&YN:W M
-M.6)C6EXT($UO51()#B!,6T]4>G(Y+6M]6TUR1#8M-FAR62M86F9Z<H)/: %J
-M 4P _D187"]W8E]B:V)3>H9:/V)Z=58P/BD8275:/CE%>GM(4'MR8EIU@G)C
-M3V%B6&IR-DA$.SY9:F0I-G=R6TD^6#D_:W)S<F8T*RU/:45$>HII,$5\>U@;
-M*1@E9#X^6#P8&V!Z>G!H6F)I2V9@7EIA8FEJ<GMZ<G)Q@&M)&!@;&_XY<F(Y
-M,#E?<%A):7]R:VMI8D5-<EXI.5A8:$DE(')Z<FA,4(AW1"D;26A?:H-J23Q@
-M<FIQ83\\.T]I23]-1!LM56AR<EHY:T\M&!4M341:15EL8V-P23]-845B:4MQ
-M>V @%2!5:5I8.6)R5#9C?6Q%:V$Y*5A6<G))6%E;<X2"=WH!>@%H /)'5DD;
-M<G5B65YK7&9U<U9%:WUJ150E#C9R=SDE,&M_23!B8F-R=7IR:DU-14EC8S9:
-M:&EI3V)W6#!J:UA%23XV/V)R=75P2T1)2V%96'&"<#8^8V9)*2 8*58V:6I)
-M("UG=7IN8VEA8#9@:F!,23E)66T#>OYM<H6"8S(=#A@_:V)$/CDY7V);9GIK
-M67&(=UI;:G!>2TE)84D@#FF$@G))-VN*:#LM26!@9GIJ3%MP>FZ!<TD[/T5I
-M2S!+/RLM6&EW@$U+84LT("M$2SDV.6!N:F-R:4]>84E:<&9Z?6@\-%B#>V-C
-M7E%R9SE1<G=;44TY)SZ+.4QH6&)H3%Z#>GH!@@%R /YB8$DE6FIJ6EAK<F)9
-M:&))6X)R:FA$&QM:>E\R&SEB/BU88&IM>G5F=7))16EP6S9$<FUW5C=K8V-R
-M:DD^/S995D5F<GIZ6#!A64E):7)M>F-I:4@_9FLV-E@V8&!)+45R>H)G26-J
-M8SY$;TTM25XM+45N=6Y9;GB*<U@K("#^5G=B:&);65A-6V=K8DQF@H)U<G)F
-M9F)?6&-5& Y-@HIU7BU)@F\Y,C9)7W=R8$QJ<VYF:7)A-CPM6%@E,BTV7F8V
-M6GIP<FI9/C]>:6E>-C]C8D0Y=7=)6%I)6%IF@GUN6S9/BGM1;&M16V)>25MR
-M:U@_3$M97E8_.6N"6S]B@F-; 6L!<@#^<G)H6FAJ8V9R<G5F6%A-.6.'9EQ0
-M:#(@.6)17"4R/B451&IB47IZ8FQJ3$EP<&I$,F)N=U\^33]B<GIB6%A%:6-)
-M6VYZ@&(E3%I%27!R46IB:GA%*6* :#X_24U)/E1H<FUR5CQB<G)B35I$&RU8
-M1#8P6G%B3&!NB7MI238M_C]H8V-H359:-DAK<F%97FY]=6Z%>V9B6UM9/!@.
-M-GI]:FE83X)R138E.59J:U]6:FMC;UA9:$E$-EA@.RDR.TE?+39H;UMN:V!9
-M8VMR:5E)8$\;&V)R2$DW+3E%6FUP:U _17U[2&-R:V!<:&EH<G!-8#8Y;7)H
-M(B5CBG59/H)$/@$P 6, VW)Z:F)K<F-B;G)R:V!)+14Y>F)H8F)).S]-3VE)
-M/CPI(#9O:$5R@H)U:$E):VIJ:39$<H9R:V@P25YJ:V-82UMB:&]F:WIR2V!%
-M+3YW@6YB45IW8S1A>H!J34T#28M8>GIR8S8I6&IR8P-8S40M+38V1&-C:EI:
-M8W5R:&!825Y:8&)K23 ^.RU$:FE866)Z:UQ]>F-@6$D_+2 5(FMZ;VM)*7* 
-M:E\_/DU:6EA@8V-I<E9,<&E886Q@ S_"24U8/$E96%EH<FYW:F)J:W!A32T=
-M&TUR13LK*S=88F-C6S\_36Y\6$5O6DEC:&)G;G%97!L;26%(#A)%@GUR/BTE
-M 24!5@#^:VM)-FN(;TU86UA+66E>-B56>EXV/SP[.S8V;G=C7FY5-DU@:G)<
-M3%AS6"TW65MJ8!LM:FYB:E!)/T]K:V _/V!%<G)F;F9K<$4;)41[AG=@6FMH
-M9FMP7S\I+45B:E]).4E:<W)H8%A)24UC>VM:36IK4&E:8V):65A:8V-8_F)0
-M8()K1%!88SL@-C(Y8G!K65IF855+23\V/T0K&!M?<3])2%A0>FMC9F-8:&-A
-M8%@_+5IR:W!J:5D_8%M:6EMC>FEA34Q;9FIR;FQ%46]H23M$8V-S:54M04E)
-M1&EL:3\V36-P22=-/S!::VIK8TU::6$V16M8+6!]>GIP2X(V/ $K 3\ _G)L
-M63YG?7IL6DE%-C]K:388(F)N.UE@86%5)3YH141C;V=+36IZ8TU:>FDE+59A
-M:5@@)6N#BG=8*2U9=W)@24EH)6=R<G!@:WAF.SM99X)]<V-:8#E$:VDM#A@V
-M9G)C32U%64EB;7II23])8W5Z8F)J:DQI8EI/6F%)35IC;/YB23]J<F9O>')9
-M,BT\-C!R?6MJ9F-B6S\[/T]C1 X.-F-)/TM8369K:W)K8V-R:6-8,A@M3V-R
-M:V-/26MN8UYC9FYN:U@V+4QB:F!I/SYH:5@V/X"">WMI-CEI22=%:VE)/T^#
-M=V%9:5D_36-G:T4G36Q[8V9J6UEL>GV"<$2"/%D!20%A /YX8$]N<G5V?7)@
-M6$0V<WA)*2M)33!I:F9[=#Q$/RT_9VYS:UIR@VLY.69]/T1>:VMA,"E?@HV 
-M51@@67)C:5E;:2!8:7)W8V-K:4E/:6MU=GQP7U5+/EIH/SE$25IC9F(I+38;
-M/FM]<UL_/V)]>EI,<FYC<GII145P83E)37KK@&,Y6F9>;7UZ:D<_52(;6G9R
-M<G-[>EL^2UM@:EDG#B!)23];:6%:9FYU<FMB9G)S;DDK&"5+;&-92UE\>F-/
-M6V)J;GIO/R4^6&)/144_86E%-D1ZAV]Z=ED^=W T/VE;15DY=7)86FMC:5 #
-M8)([&"U(?8!S=GIG8UIR>F,_.6 !6@%I /YW86)R=FYR=7)Z=TD;;W=@/F!A
-M-B568UMZ?W%C/QLE26MR9EMRAG V-EMR:UMJ<G)H1$1K@XZ#82M%7V)B:6-K
-M:S=%6UMZ<F-B245::V)B9GMX:UYI6&!S:W-K8$]L<V)91" .-G-V<F(Y/FA^
-M@DDP8WIS8V)T.R5H=TU/26G^A',_16->6VUZ6UM)3#=$8VYN=75]BF]%26-K
-M8UIN/!LR+3Q96VA@:7-F>H)K7&=R>VDY&!(\;&A86V%[@F,V5&%-8GM[8#))
-M65E$/$4_258I%2]Z?%MF<&-8>GMA66M/16M93TPY/F!:7U5-14EC*Q@E3WUM
-M;8)N8&!99ED\@BU6 3\!6@#^8F9R=79C:6-:7'I4$EE]6T5;<5E):VA(<GU]
-MB5DK%2E%:VIB=8-O1%I:4'!@6G!R:#\Y:H:&<D4W:6E/2')O<GI)6UM,9G5O
-M6$4^6'!?36)Z@G9G8V-K:F9R<F-)4&-$>W B#BUK<FYJ/BU,>H)-+41Z=UY:
-M9S8@16-'65AK_G)V:45,9FM:83),6$L_6FQJ;G5V=8)Z8UE;8V-8>F\M*1@E
-M/SE-37!R6FMU=6MF:X!R+0X.+5I:16MK=7I:/EEA2TU]?5II<G!I/#99:6A$
-M& X237-%25E%8'9N<VMH6UER@W Y-C!86UDE+3P^8UY!*REB:F)H=69?.4UP
-M6((M/P$R 3  _F%K?&YR:&QP:6MW7A@Y?W _27%I3&IM16I[<))Z5!LK+3E8
-M<7J#8D5/13]::$E-8VE9.6"#BF,V)UEK8$UB7&U\:&EH6#]R:DM9/S!O9TE8
-M>GI]>DQ(:V]B7&IS8S8P)WMU/!@M;'IU9DT[.6=Z1#9)8FMC:V]<545835MG
-M>OYN:W!:24QW;&%+6&->*3E>:V-N=7)]@F]A/EI;8'*#63LE*2DM/DEJ:V-C
-M9G)K<W)Z<RD.%1@V.RU;4%!K345C:6%9?75%:FYR:#8R6'J)51@5&TUS23 V
-M)59[<F-C<&MK;7V$638_65H_("4T15M0;V8T.6AK7FYQ6RTY<W&"1"T!-@$^
-M ,Q@;H)V;FQF>H!V@&,8&UAI-C!:@&]::$U:=U&&BG@\+2T;)6."B%I'6V%%
-M8&M),$5I83];>GYW7BU)8FAA6TQ?<F)O:%D_:V P22T2 TGB66EK=G)C6UYK
-M:$U0<G Y-S9R;FDM)5AZ@W-A3SE:>DP^54Q:;')F66$Y85I(:WIN<FM-/SEA
-M8W!J;VI,,B4Y;VMN<FY]BG)@-D5/37)U7EE)12LK/TM@6G)Q3UIR@WMQ<#P#
-M(,HO-RU8,")$24U:8W%R?79;:VIJ8"TE.76*<#PT,DUW:308&#YR;F!B;VIR
-M:FV&=$M8:6$V-#0K+4DY3'-5-DQB<7-L841+=X)N/ $; 38 _C=R>G-C34]]
-MAG9]<#PI.5]0)2]Z@&-C6V)H6'IZ=FA>-A@8/WJ"6C]0=%MW>V M,&%;-D5K
-M;GIX/S]):5I-23EB1&-I3UYC6# V+24I)24^8VQH3W5Z:U%B:%AI8CYA;VYF
-M:DDE/VN*@F-B3%YZ:EA)25YJ;G)>12)>8$QJ<OYF;7=;240V.6Q@:VI-52 ;
-M3&)B<VY\AW)6/S])16)U6VEC63P\65Y).7)W63]K@H9U7%98/RLR559-*1(I
-M-EE915IN?7MK<G)C6B .&TAZ=VEA84UR;%4@(#]B:VAC8F9W<W)U@%M:>W<^
-M/EE%-CX_26YX84E0>GIF6T]I<WV">V$!& $5 ,LM:FYK22<P=XI]?7MI7C9%
-M6"TG:FM@<&=01%EX8U8Y66XT(#]K<CDV.6AH@HIM*39F6C\E3UMR>$DV-F%)
-M.3L=-EA%6&1C<%I@340$-OXE.6-,/FUU>DU%6T]A33E@<GIJ:F$_.4EU@F99
-M8WN#<DTO.V%T>H-[6"T_6$UR;EI9<FI(22TR86)B3TUP)0XB+31J>G5]>EI;
-M85@V86M@:V-%239%83\;3&IH-DQR>'5;4&MF/"U/=4\M&!@W9E5%1%!U=FMR
-M<F)@,B K3V^Q:W)R;5M<:TU$/$E:66)H6UQK9V]K<DU%<H%86&QP6DEA:6I]
-M<3Y-<G)F:45;<FEZ:@$K 1T VD5;:FM$&"EK@G5]>V9H-CYI24EI341UB&D^
-M1VMN-!L^?V8_36IH/S8M/DAZAW(_2VEB12 M16.$<%4V13]57BTV,%9N<DUC
-M;T166T]%3&MB3')[359K3U@R+0-R_F%-35@^/VAC8FUK<G=B6'N*;DDE&S!B
-M?8:*:V%8141N>F<_6GI9.2T_5%MB6#EZ12L5%1M$;5Q;>F)>=V V8F!C:V))
-M5#\[65D@(DEI239;<G):36MP239%@$D=("E+;4]524QB<GIN<EY18%Y@:G!B
-M9G)Z8V%C.55@2U@^1*-66EEC3&)R:SDM8G-/8GN#:$5F@G)N<CY,8U]$8"TP
-M6V-W=@$M 30 _F9C8VM+("UK>G9P=VQ8*2]O<%II-B)BBGIN;UM8)2MHA7=A
-M8'!J9U4K-C]J<EQ%36]J6S(;&#E\A'<_,#=/838I+41:9CEC9V)J:V,V-EQB
-M26MR:UIB35@_27IZ@W!-85M%/V!8.6)F>GIH27**=5I$)1LY9'6&>EIA845B
-MAOYZ341J:54V2U1-8&D[<GAF.R Y25M$)V)B47-O-F)P:6)::6E/2V-L-B!8
-M:FE)3V)T345>;D\_6H)6%14M8%8P26%;8%QF;'M-.5!F9FQR:EQ::FMI8#9-
-M=6--/SE%/DE@/TUN:$D[.T@P4'V#<T5:=7)V>V$_6V _3"TE16.":FH!-P$_
-M /YK:W%@-B4M3VM[8TAJ61@53()S624;5G5V<H)_51(E:W5S6TUL<FMB83YO
-M;UY/655;>&$R&!4[8GB*:3]/;&E%-#Q68&-I6F)G:G)K3UA<8EMK6EA86TU8
-M-EAN=8AB-&-P6$E//B4P1'J :TE:@G5523Y86%%F;V=%37=6*WW^?')O6D5A
-M84U:3'-R24QK<V-$6F--6%]:8FQJ:B=:;GI).6MS8UYS=$4;3()R3$5::DE+
-M<&Y@65I]8!(.&#\[("5,:&-@8%YZ:T\[16-R>G5C7UIC6TL_.75[:UI+6EE+
-M34],:6-I9BT@($5J=GMS8UI(>GUW36-R<VE)25E>@FY[ 5H!8 #^:6-W<#XE
-M-EA-<G%,8D4=&#9R:DDI-EI<6U%UC6X8&#EB:6)C:VIC36DV7&I-8V8Y-EYI
-M,A4E6%!Z?7)C;'IJ<BT^:6]B>F--8VMK8UYB:G)I8SD_6VAB8C8Y16:#8#!B
-M<FML:$DR"1MJB7)).75J/S!A8EE@>W)C3T]J21M<_G5T>V)A:&,_64AN=U@G
-M369@6&-;,#!C:G)Z=U8R16)W22U-:VYC;&L\#C9U:CE%6%\P.7)C66QJ<V,T
-M%25)254T26)A1%AL;6YZ8DE-:H:";%M;8TTP+2)B@G)F6%IC:5MA66!A;&(M
-M("!)35MF>W183':"@&-RB'IB6&EI48)/8@%: 6H _EI;>WIO3V%A16-W7F@V
-M(" _<6M6-$EI3S8G67UX12 ;-D]:<G)>6D]O6%9H6%YS65Y:;S\8-FA:;U!<
-M=VYW:W4^-DUO3&YB141B<FIB7U!Z>F ^/W=O:VM8+1L_>' Y8G5D<G),,@D8
-M68)W6SEC8CXV6G!:37IR345K>G!)1.I<=7A,35!P7UI;:W5:-D5@6%IJ8S8V
-M3VMU?7=)-C];<EE)25IJ9FI-&S!)<V@Y6&-C53]C13!:<H-S<3PV6#M+86)B
-M6"4B3&MZ@G)I.4A]?6]/6&M:,BTV8WUZ:$0Y8G%L8V9L:G)B+2TT!#^2;GI;
-M8X)V=F-NA7<_/TUN<4DO 44!:@#^,#YR;6UJ>FLY6G=C33\I*3YC6E0M.69A
-M1"DY:F9T-" E+39K>UM$:W)R3&)P86MQ<&)R9RT_=W)C-C1K<VQR<F!86VE)
-M:V9-14QK:F)H169Z3"TM;V)B7F @&"5-8UAN:D]F@ELV&"!@>G=$/UI/,$UI
-M;&A::$PG'5J"<VM)_EER;E@V-F-J8VAR@G _7EI$36MO/BU/=W)N>U@M-EMR
-M4%EC8V)C8408+5MZ=UE:6V-Q8V,_("=0?8-\8U9:.3]S:UI9, X;7'I]@&,_
-M.4AB>EI98&%)+3E1:G)L)QM$>H%J:VQJ=6@_1%98,"TE16);9WMS9EYR?7))
-M6%M<=8)W6 $Y 6  _B4M1450;8!O.4UR;%M9/RTV1#\_+3YK=U@_27!B:UXR
-M("LV:H)I26MZ=5E@<VQC:VE-4&A/67. :T0M37)K:G)O<GI[8FIJ7U@Y6F%B
-M;TA(=38.&SEJ6%M;1&YF)25BBG(_:H5Z<#8M67I[8$5;8#8V1&)W<EXM%1@Y
-M:UIC6^QR;FMB53]-:VIB<GIZ26-C1$]B324E27-R:WMP.R!):4188V1K8F%I
-M/"E-<WMP:V%B:W-S63PI+6N">VA18DLY8V%%3S<.#C9PBH9J6UXP57IK:&-P
-M83LP24106AL.'6*#>FI<:G5<26%I:40#/Y$Y.7!R>EM(<WUF4')[8EQK;P%-
-M 5@ _D4V/#1)8F9R6&QN:V%@84MA24E4(!U%>&)),')_:VE5*RU)8WIZ>'M[
-M<$E-<VMI44U9,#!8;W9[<FA5-T]A1&)D>H6#<F9Q:F-/6"]%;V)B:U0P("!B
-M7UXV.7MB&Q4W=6]':&AU?4DM35QV@3E;:V-5+3=R@V,_1$196V!C:OYU:F);
-M8FM19FI:7G)]<G-C36QA'1@8-G%<4'IV4$EO=UA-86I<67)S8RU$9FYJ>X!R
-M8V9[<EA$15AN>UM/:&):8UI83S0@)R\Y=HEP<&D_3&M;:VM[@6D_24E+/A@.
-M&S]N<G)/8W9@26!K8F%A8VDR'45F=TU-<G)$076*@%N"/UH!8@%P /Y9-D4_
-M6F],66)Z;E!J<5MB>F)C9#0=-G=O339O@&YC:4E$/U!C<G6"<EA)36M[:U@_
-M53 E6&YV<FIK6EAA12=84&Z AGUN@'MN:V@[-EY9:G=C8402:UY)&RUC-@D.
-M'6IZ8W!$68A+/%M:<()93&Z"=U@R3'ER<&E)/CEA<&;^<$=B<5M<8V];1#]>
-M=89Z:S]F6 X5*S]J6D1K:UQ(>H)R8&]P.3)K<FI$,%AB6G:#>V-:>GIK85A8
-M7F(Y1&-J:F%6:VD^*418-DQK8VMO:6IA86Q1<H)Z:$UB:5@T-#)):%I:6U%N
-M<&%:6$1-6VN!9C(I8W(Y17IH-F&#@))W@C P 3\!:P#^/S958&ER9C]$=VM$
-M7&DM,'=\6U@V*TN#=U@Y<WI>6EIH<4E%:7)N?7-%63E(?7-P83X@&TEZ@W);
-M7T5;>& Y6&);=7A]9G9]?75R9SY)-&-R8F%$%6]@2QL_:$0G'1MBBGU[85B"
-M/S9A<'J#22<R>HIN845<<G5W6CLE1'):_F,O3(!S8V)K6D0R,&9\;FIB8UDK
-M*4EP:VE98$EK6W9U>FMZ>TDY8UM)-BU)6$US?7UR:FIB7&E>?&Q9.45-67)6
-M.6)022U9:V9-3$5C8UXV:&M6159)+T5K:FM;655)3VMP.3\_2&ML6UD_+2(P
-M<GMA-CE)*3!R22)BB&YT@X)C.P$E 6  _C\\7V-S<VE)8'QS:F)@)1A,B&%%
-M(!LY>H=@,&IR85I%6X%/.6MR<X>#8E\W27!F<&$I#@XM8GIZ8V!%8X)K3V-R
-M9E-<@EQB9GIU?'I90BU;<EIH8#9W6TP^8(" :R4)-GI]=G)B@UDP.6IZ:S8;
-M)5YZ:F(V27MZ<DU+16!J1?Y8.3EZ?7)B33E)52U-=6IC6UE-+2U%6V-O8TDM
-M8VMV>GIJ;GM:67)C-BDP,D0_8W)]@G9S:UA@47)R6#9$545R:$5-/CDM37)S
-M8T5$6TTP-EQP;%H_.39%<F]N6UM925A0=3XE-C9C:UI89BD.$CER=G%)/" M
-M:382.6IZ?8:"<E@!,@%@ /Y816E;:X%/.6*#=GMI6#8\6X-P-A@8-GN-;#]A
-M:%I,7V-K6#]K:F:*CW)I/V!A2'%A*148+4UJ:VMH.4U[<%A-:F9@375K8EQF
-M6X*"<%I);V],36A>8EL^86QN?'<\("U:>GIF8G=Q351L<V@M&"!)66-)&RUI
-M=FM-6&-R:DW^;3D=4&UR<$D@+5@M-FIN<UM@8#E>85I-7&A>+5AR;FV"9&9Z
-M8#EF<CXM,BTM.SE1>X9R<GIB8VEB8TDI67%/9W)L:TD_/SEB<FM-5F Y(#Y$
-M8UYB124_169U>F);639)6VMA-TMA<W=K7&D[&!4E6X.1;%88+6%9*SYCBHV*
-M@GML 4T!8@#^:5ML36:#2S9J@VY]<UA)6G=[<$DK*3]Z?6M;84U@16)J:DDT
-M8VA/>HUV:#E,1#!I8T0@(#]I<TU(<V9%8W=),$Q;<GIV=6YK6DUR<F]B9')G
-M.5A:8DU)(C]O<F9W3S9+36V#<F9M=TTY:7)H/"D8,C]-/QLE66-;84UK<FI-
-M_F98-%919W-I54M-+25B;GIL8EHY:V-?241@824Y8G)U@EY0;F,M16))2S8T
-M("D;)V)]<F)U<VMR:T4V)6B"4$UB@W)A86-<6G)R6F-R7C]?6&MC6S\@+3];
-MAH9R3&-)16]R8S]/:V)K;FMK83P8&T5ZDH)A)2UH<%E)8H.%AH)]@0%A 5L 
-M_EM;<'-Z=TE9>H)N?'9@7EEJ<FY06#Q%8VM-6EHY6&%B9G!+'4UH.6:1@F M
-M+55)86MF-B V8W<V)5IO6UMP6# ^5FIZ>G)F:F)-8F)@6F)J21M)84QR<D0E
-M8GMR<DTV/RTO:G)<8')L8&A:8V9F1"U)85\\+4E)15A(:V9>8_UB6EEK8&-F
-M<W)T:#8@3VQ[=6M-.6ID3S8M.6$_-#!9?8)N:W!C2TE;36%+1"TI("!-8&MH
-M:FQS>FLM%25C>FI)17-R8V-J:EEH9FMK<FI@8EIK<VQ).RT=.8:"@EM;.2UG
-M;%D_3ULY.4UB:VM>&!(M7&YZ;#]):FYI8$UF>@-] 7(!80"O3TQO>G]@+3M>
-M@GUN:V);7EIJ;%M@6D]86DE,8#X^6W)L9E45+5PY6H.*<"4;2W #=_YC/#=C
-M>EDT/DU;:6]A23966FMK1"TY6H**@FA823\M-G!P.6B*:!4^:EQO6#Y5("!$
-M6#E8<GI[<F)L:6II-CE-3S\[.3 V/D1L:UQW=FI;4$AH8F-L?6Y+("U@>GIJ
-M34]R<F@\("E86UDR.7*">G)P9F!-7UIK:4DM,CD_:6++8G)I6G)U:"TE16-F
-M>V%)36--6'!M6UI$:GMP3TUB:UMB<F!5630M?69J<G [&SYJ:UAB6S(R-CEB
-M:44@&"5)6')J14UC8EM8/U%S WT!>@%J )!;1&%T;#XE*3!U@F!C:45F!&N:
-M<7)K7#D_6&X^+3]::TA5-#0_-D5F<'<E&TL#<OYI858Y8X.!<%\^375Z:ELI
-M25I89BD@66I]A9)Z238@&"5R=UA;BG<I/V%,:VU883P\6%@V,%QZBGIZ<F-K
-M:F-C6UDV/DD[-BT^8FM9@(:#=%@^6%I:<H)N8T0;28"";$5;;FYH12DI25YR
-M2S]P=G)N;&M:2$Q$8FM@/S9)6FN$8U!B; -BR&-4/FAB7GIW6#\[+4UW9G-K
-M3V=V@&!/9G)K6G)R36!A7X)8,EIB22 M:X)P9F<^+38=254E.40_64]P8C8P
-M6EDM-EA@35YU?0&# 74 L'MC26%+&Q@I/WAM6F9M+4ES<VQI:VYL6C8V27!8
-M/S9%6D589FE$-D5B8U8@&S]S7@-;_F V-F:$>W=A6W5[8UHM36)621(837)F
-M=9**9RD.#A50@G)B=8!A8ULO3VIK8SE8;& \&S!S@VYV>FIK:V-J:V-8/UA8
-M53]5:$TO<H6&>F%913E$;'IU8DD2+6:":C]B<FY@.S(T/TA<33!C9FI:4&]%
-M-DE+84]:6#];8&!A5LU9:EM)35AB8VA:85IM=TD@%3EO.6)R9FEF<F-I;&MK
-M:G)S33]%<(IK-S8I(!4@37*"<FIF3U0[1$LW/TMA8UEB83\G1"T.($58+3!;
-M:P%] 8( SY)[86 _&!45+7%:3&9W23YI>G)O<EQC33LM-F-I;F%C6C\Y6FI9
-M/VV ARD8)3]1.2<V8W!)(#!R8F9O8VYZ>W<^8F]6*14@1')96GI]=S0##OXV
-M<G%R>FMB<V,^.5J :"U,=V)$&!5%<W)96UEK:U%$:U!)/CY58UI0;ELM:HA\
-M7EMJ6!LB7V!J8E@K($1Y;EM>>FMI23([.T1:6EA>6FI:,%@V*39%;U]$2TE-
-M34E,34]Q2RTV84UK8V-P/U%P+0X.+6 V.4QB:6E-16MH16VN;6IZ:SE:=V--
-M/RDI/F-:5"TY<FQR=8-X3TE823E;:5AA84E)7BL.&RU8024M, %K 8H _HV"
-M<F=9*Q@.(%MP:%AK83]-<7IZ@GM;6D0R-EAJ;W!R<&%$8W)83W**D#8T27%A
-M-A@;8&Q$(#)I8#]:3411;H,Y8G)C,B Y37IF86EN<V8P#@XM:VUU@G)9:FI8
-M-F%]:T1$@&])'14E3'IK6DUB:TTY;TPP)S)):VA(:FLV3?Z#=4U)6VLV-E]B
-M6TAC;38V:69K;GIB7&Y+/C9%8V9S;U" >F-N9BDV17)825MQ:$D^23XG7T0M
-M+4E%8FQC6EAP<40@'31>8%M;8EII-BU68#9%4&V ;SE-<FQ;63\M-D0_/RT^
-M8EYN=9"";G!I6#E/6$E;8#E)=U@K*TMI:3R"& X!/P&" /Y]=7%H9C\K&"E)
-M9F]9.458/EIF<G:*<&!>/S9)8FIR<WIW6&IK6FAC=8-/65][=$0I+5MH/R R
-M6G=;6UXV,$AF6%IJ;$\V1$ES<V):;'IJ9BL2+6)Z;7EZ:VIO/R)@>EQ>,')J
-M5C)!/"=B:V!-8&]:16I:+2 V3W=[:&!:)S#^<G!$25AC6EIR<FLW6WLV)U4Y
-M4%!J:UMK8DTV15I<<H!:9GUG;F@_-D5Z6C8W;H!P25E$,EA$-UE)1%EZ=T5%
-M8G):1#L_6%M:8W-:3#]$6&8M-$EB9FI;8VYK86!A2V%)250@'5A/:G"&A&MV
-MA&Q)65@_14T_27IH-BU%<H!5@@X. 3\!=0#^>VYL:'%F1"DK6&-C<"4=1$E)
-M8FA0;FQJ84D_65IB>&YZAW!L;$]H;'=^6V$Y6W=I2V%P=UDI-D5R<F-I7E5)
-M8'!O6DU-6FI::FI%-D]Z>FI5)3(Y:G]B8GIF;T0I/VIB5C]K>F$M1%8^6FEC
-M35AZ8$UC32TI/TAQ@G=F8395_G)N/T1@6UA08F9R:&.#7BU)2UL_.7%R:UI9
-M6$U-.4V";EIF;EYC6$0G;F V,EAW:V)B6V!H3#YI83XT8FI:3TQJ345)/TU%
-M36!S<DQ6/DE;5C]:;UE:8G)K4&IQ6V)Z8F-D-!TY)TE>>H--4XJ"8F-@23L_
-M26F#;$DE,&M[/((.#@%6 74 _GIK6$5B>%H[/UAC86M>54M@8$AO6#]-<&$\
-M*6EF7EIF@WUN8W=J8EEK@F-F,C96:6F!<G)I25A+8H!L8V)I8W%K;G-))U9Z
-M:E9;1"4V<GU:5"TV6&J 8EMN3UMB7DEK<EE/<GIK7B<P-D]H8TE)>G)R:C8;
-M&S8V8HIZ7FEA8_Y_=T]@6F%835I>:G)DA75:6VEO1")$<7-:15E-839$>H)B
-M4$U@6TUN7EI--BU;?V);645%6EDP2VQ>-CE$86A-35A+6$E8-C!):GIR:DL_
-M6%A@:7)A35IR:T1<:2TP=WQ;6#8K52 @5GIZ14U]>G)R;6DM545K@VM)&SYX
-M>DF"&!@!1 %J /Y[;$0;,'-P64LP6W=K:7%@369)36@_-F%$)2U965@_6W)K
-M:&%J>G P.7-W<$LM.5A;9W)C3UMI/V)Z<EH^3%YR35""9R55=W!%65@\27![
-M;UXR)3EB@G!J9F)07FM)6G5C8GIN8W<V/#9)<FM-5G)Z?7I>*R M.UIV@F9K
-M;E[^8D@P8TUC8%M/6F)J<FYZ;F)S<VQ)169[6DE$16I/:6IZ;F,Y26A%7GMZ
-M<3\;-GIC8%@[)3!H23!R>FE++3Y86#Y$538P<CXR-F%B;(!81#])8W-S:4M@
-M>'-J8EDM)4R(844@*40I&#ER<F9R>FM-7G-P&RTP8X)K1!A)@XIQ@EA% 4D!
-M7P#^<G R$AU9:F-A1#EB8G=O5DE:6#E)8&%>,A@M8%@^/UA@-D5G6G)P/"5'
-M@W)P2S98<&-A84E09C]:8E8Y*2E/6TU;>G<V)V!C,$M?65IS=6I:12TE+V9]
-M<FUK3V)B8%IK<'=S7&MU1%Y$16MR1$1F=76&8S\_.UEK<GUR;GUI_D0V-D]5
-M14U:8V)B:&!K<FI(<FYJ8$U:;FIP5CE)6W)R>G)A.4EO63]:>H)M($AS9D5B
-M<$4Y6%@[>XIZ:UY51$LM)2T2&V)@-AM$23]W8UE)/UMK@5@^8H-V>VE8-CQA
-M=VD\("E4,B4M3VIF@8-P.3YR>BL8&UM_6T0I)V*(@X*"@ %/ 4@ DFIK+2<E
-M-C!%8$D;&QUU=6-A8P-9_FAW:"D@-&-O8$18/!@E2UEP:U@E-G-S>W _5G)\
-M:4U:344_:6 ^)14I25@^1&IZ<D1).398:%IC<G)W;ED_+2UC;FYB8UMH6F-P
-M:FIU:T]::#YI>%IO>CXM8FI1=4PV6#8_8&YZ?6YX<D5+:6YA,$5/25]M>FMJ
-M<FIA:W)J8NM@6"]$=8=8+4]U@GUZ6CY-<F(_-FMZ:R4E6F];6VM8.4E%67V-
-M>F)W<&)I1"D2(#Q9;U0;-FE;:VQC6#E-9H-+-FJ#;GUS64E8<'-K23(T854W
-M/$U96GJ$<S8@4'5$& XY:E@V1"DG4'*2D@%L 5$ BE!S6%Y>52DM6#L##OYJ
-M<FYZ@6$_.6)08#LI+41J=V-@1"T\56AW<EXE-VMR?7)A8UMF>V);/RTP<'55
-M& X;1$DM&SYN@G]4'3Q-8EYR:V9Z>G)L2S9B;G),1#9I8$1H;H)Z4%E)+2=I
-MB&YU@DD26G)>3"<E23LR14UF>VUN<CDM8G=8*2TV&SYK?7KS17-K8EQN<FAC
-M5BDM1WIR+4QM?7IR345;>F-+/V-U84$T/DU;:6]A23DG3W6*=EQV<F-S:54K
-M,E9B;V%$6'IR:5M-+1MS>G=)67)];GQV8%Y9:FYK6E@\<G=>16-B66Y[<$DI
-M.6A))PXV:6$M1#P5&T1]D@%[ 4\ _DUL<%MA:5Q)83\@'15C8F-Z@G!826U-
-M/RT\1"U(:W-R63]86%YS>V,V55YZ@FM;<5M$<HAZ83\M<H%8$@X5/F$K("5B
-MA7UH+39,66-L=VQO<75Z8EAH9F-@/R!%:#E%6H*"1#X\& E$>GI]@S8E6WIR
-M6"4@1%A6/CM:=5Q9?_Y+*45P+5E$( XV<W9R/VAP8EIK;F-96EY>36IB+6=W
-M>G5B1$UH:DU$86]R6E9P7SY-=7IJ6S8R/VI]?6MM<F)[<F8\-DE9:3\V6F)R
-M>G!)*R!Z?V P/UYU=6YK8EM>6FIL6V!:.6AN26)Z:V9Z>FA)/UE)*0XE6FDV
-M-CX5&"6"67T!@@%; /YC>G=A3V-O8VE%+3(8/SY0<H!S:VER:T0E/V8_.6!R
-M=G!96DU-8W)I87$_7'J 47)N/TAZA'!-176"81T.&"U)2S8V36U39VE)8%QK
-M7&MS<G)N;EI0:EI)85XE-FA@15A[@F@V&R K,&)K>H(V-FN">F,[%399<%I)
-M87)C1'+>8S8^:#)[<"(.+6MR;F!H:UMC:VUI2#YC>G)@/B5B=7UR33)%<&L^
-M-F)Z>V!)>W=A6W5[8UHY9DE,;H)U:F)(:VY;65E;8%@V+3DP3&MR8UY5=&P^
-M)2U):G)J8VA%9@1KGG%R&T5H,#EZ=5QN?7)B24]))0X826$M(AL;.458;@&#
-M 7, _G)Z@GAH8W-S?&A81"D@/DU-;7IR>GIR6#=)<V$V6')V>G!@255%3$U-
-M<E@Y7(!W<G=))5!\<#D_=8-X1#1$-C]@/SYH8R=(;TEK<F-<8UYN<FM:25EC
-M:4MB;T(I/E8V1'J$<D0;6%DG.4UF@E4P8X)]:DD2&SY[;V%C<F]-6_Y;/DEH
-M9GMU/!@M;'IU:FQK8VAR9F)))TQ]>W V+6)V@GM6.T1B;T0V3')R:%AB9F]C
-M;GI[=R)86"U9=72!:UIK8C):8VIK6$E<6$M88$Q9<'AA2QL8*3]C:&)F;2U)
-M<W-L:6M@-C)F+1U9:EIB=G-I6%E4*1@K87)A1" ;/VF"<FL!=@%W /YR=GI[
-M<F9R=H-R<G0[&#9)35MK<GJ#<F!+6&-9-CMB<GU[85E9-BTM,&);/SEB=UEI
-M5"!$<G-,/VJ">F%9>&99:$E%:&))6&!%8VMB6EM;;GIR:DD^3&E@:7MH.R<^
-M+2UPBH))(DU9)2U)87)B/F-]>FYH*14T8F9K;G5U:%O^8%98:7-R;FDM)5AZ
-M?5Q-:V: ?6I:239-:W)R251B:WV";VAK8VM-241K8EI)8#]:3411;H,[26$V
-M2V]J<F)8;&(P16)F<F--84U::5DG)UE[8#\8%14V86!-9G=)/FEZ<G)O6C8[
-M<%D_6'!H:7!K:UMI83PR/VAW:V-;&RUC@G)S 6P!8P#^67)J<W);:W=[9FV(
-M62 [-DU,36MN=FYL85M;3S\W16J*>D]-8E4R+55Q3S<I.6]@84L;)VM[<$EO
-M@FQ6-&-Q:W)H6%I(8&1,8')<:FMC7F9Z<VI$(#EA.6)Z<F-)-B 83(^*<%E+
-M84D_36-H6C]-<FIR<$DG.V9'66]Z=G5L_F-A9FEK;F9J225):W9:-D10=8)R
-M6TU98&-G<EMI8F!B?&EMB'IR6F-S:6%)-G=;6UXV,$AF:6AI;&IR;&M-3&)P
-M644Y1')W8F-%.5@^& X=1&=9*Q@.(%AO:%AK83]-:G9V<F,M*6MC3U%U=GM\
-M=W)K=V!%6&!98FA<;2T;28)J>@%O 4@ F4MB34QR8DAG<G![>FM5/!L@(#]A
-M2#E%<F,#6/X_,ATY:X!8,#]N83=C>D]$/TEC>WU9(!M:>G=-<HES8#8Y8VMB
-M;V):159@.5J":G-L9FM$8VQA/AL_6"5,9&UR:4D@#BUY=79Q.45S<&)B9T5G
-M3UEB;7)926!R7CQ)6#E'>G)K<FQC<FIF841%6FMC/C ^8G%U8EE;3U9-8FSD
-M8F-:<'MK6VYP=3E,@F%8.5AR<F-I7E5-6UI%;GIV;G)B/RU)@')8.QLY?7)L
-M6DE9+2 G%1MH9C\K&"E)8FM@2458/EIF<G)P*QM66"4;.5]R?(!K;G,_,&-R
-M6TL^,%@^+2T^:@%W 5@ R6]J245K<$U/:VMN:6!B9CPP&S]W32TP8$LV16MI
-M/R4E16]I2S!F>&EL=FE815MG>F]%.T1I<FM-<HI[8E@_/U@O35I-86-I6DP$
-M<OY<:TUC:V!5,C9>+6!;8FIL21@.(EI-6U4=/WI\9EI@6& Y+5IZ<EMA=WIC
-M6UY$(BE'8UIJ8TU85E9C8$U:8FM;.41H<G)J<&)91#Y9:V-:3&YU<FM%6G5N
-M8'5%-D5;8H!L8V)A8VE+/UI]>F-I6CLE27=U;VXV+6]K;%M0;42S)T0P&VAQ
-M9D0I*TEA8V!)/D5)26)C8F-$.UAC& D8+4UN?WIN8TE+9VI><%@\1$M5/"5%
-M 7(!8@#!<VM,87=L86%X<45%34]C2UM537IA-DE9+2 V@X%M530V6%E96')X
-M=VYK<%H_6UMM9RTM5G!R32=X>G=:3&AA338#+?YA:G![:4UB;GMR;%IJ>FM@
-M/S]926!C:VMJ21@),EXM+2 )/W)M6DU:6%@M&T5R9DUC<H)<2&@^("TY245/
-M3"U%8FYF6#8M-F)C238_3&-Z=7=C+1LV:&(E37=:8'<Y1&"#B6XV+6%C8GIR
-M6CY,6VI-/V.$@FM/138V6F9K=W*\.39P<F]I67IU2UY>.T5B>%H[/UA@8V->
-M6$M@8$AI6TU915EP.QT=(#),<HA\3TEW>G)R>FE5/SYI:#Y8 5@!4 #C<$4P
-M8X!B6GN*@UD^25AA15AA3&MI6%A$%0X;@8J"=V$_-BDV88B"=7)F:T\^83]-
-M<$DM/VIO-AMP@WA-.6ER6#8@&RE)3%IZA5H_7H-Z<F)K>G5K3$551%A-8')Z
-M:%XR/V@E PG^(F)_8$5835@R*41J2%A:8H)O6EH^-C])24U/22DR3VMO8$0R
-M-$U-13P;&S]Z=7IR1!@@6V @17)@6F@Y16!V>V(E+6A96F)6.2DI3ULY6'"#
-MA8);26!88&!><V@^.6MK6UIP<GI\<G!?&S!S<%E+.5MK:VEQ8$UF24UH/VM)
-MFD5K7BDK)RTP6X-Z5EES;G)N@WM@/R=J<TE% 44!80#C<40;.7)I37*-BF]6
-M7$E::5E,6&!L<5M5)PX@>H:*@W=9*0X5.8*,A'UK8$M9639);&A987%O2R5O
-M>G-96&-F8#8@&"!")TENA8IK<GUZ9F)L>F9Z>F P)UM3'4UZ8')N@&@@ Q7^
-M(#9K@&-@25E)-DE?1$M,68-P;&M)56%C8TD_:5P\1&-Z<F!)/S8R)2D.#B)0
-M>H)Z8$$[4& V8'=C6F V)UIU<ED;*59):6 ^)14I25@M37=;9(A,/G-Z:&%1
-M:FE86FZ"8#E:;FMS9E\Y$AU9:F-A1#]/8')O5DE:6#E)8')LFF%J<3(I*38\
-M6WIR3&ER<&AB=HIZ6#9C=V _ 2T!7@#^<5@;(&)P.4^&CG),14M:=VE+14]I
-M:U9-/!@86G)U?8%F( D)(FN,A8-R8%EA8F!;8TU-;(*"8T5H8F)I<VMC6#08
-M%2<M%4E;9H!UA7UQ9F9[<EEI@G<^(%9()4EJ2&-;>G R,#P[*R5->V)86$E@
-M241-15E%18B*;F-(25MRX')@.5!I345H<G)B8ED^(!@5%1TR1%IZB%DV8&M-
-M6&N">FI98#9,;FMI/UYH37!U51@.&T1)/EEJ,#=O/B)CBGQU8&-K13M$>G(V
-M27-K:UH_+2LE-C!%8$0E)39J=6-A8P-9G6AJ<G!S?6E!)2TY8WMR8&%9445%
-M6GV#:EAB<G!+ 2T!3P#^<VT;&$5H85ERBGI8/$E$:X)C,$]Q8TU)/S0R.5A>
-M9G-@& D))7"*?'UZ245C9FIJ:38M7H*&:T5)/TMF>FM:6#P8)S @#BDV/DU;
-MB'IB7&MR<F]N<FM@6$];:&)J8G!J:EQM/S]8,B!-@&I-/S!85C8M/V Y)W**
-M>G)8.3]L]&UR;DE;645::FM[<FE)-#DP(#150D5RAT0B6'I%6FAN<GIM:FAC
-M8DAO15AT8'*!6!(.%3YA/V)F53E>1!4Y>H""<6-8+14;36\^88*"<V [*T19
-M52DM6#L@("U:<FYZ@6$_.6);8V)R?75>,B =2'*">G-F S:)1')[:V-B8VQ%
-M 3P!3P#^:VI>03]97V. ?6YI85M84&II-DUI6DU$2UE925E:8G)N-C0@)6*#
-M@G)W6#Y/345:<"T;67U];TTR)39J@W=),DD8&" 8%2 V1!LM>WI96G!/9GQU
-M63]B>UA-<UI::G*$>EIJ53Y:/!LP<FIJ.R5$6"T;-FAA/EIR7'IH/C9-_D]J
-M<FMI6C\Y35Q[A7IB5EE$&R5).4MZB#D;26M-6DQ-3&I;<G:$:C]B/RU,<G6"
-M81T.&"U)-FUW:UI)6#8_8VU]?8-K*148-D158GQ]>V]$+5EA:%Q)83\I("E)
-M6V-Z@G!826UP33ENAVUB/SP@+41NAH-W8&$^-EEB15IO8X)@-@%) 6D _DUB
-M=W%)13YB>G5K<G=C:V)O:%E@6SXM/%E-6C V8&%F<#]+1"5$<G)F=&EI6#\G
-M/EX;&#EJ<G!>540V8XB 83]9/#)$1#0T25P2(&IW2&)]6F)Z<F@^068^1']H
-M/TU9;8*";UQ)6$4@*6!:9CXI25@@$BE(;'!><DAQ<D5)6-0_3%EJ=V(_-CE-
-M9G5U9W!O:#0;-BU)=H9A*3Y;5F-;85MB3'=]AGM;6E@[.6IU@WA$-$0V/QM,
-M>G5O1%9%6'!H4%R*BF9%,B4E6&=M9G=V6#9;6V,#:*E)-#(I/CY0<H!S:VER
-M;V _7G]:6F!8654^36Z$<V=W8$MA6T]><FI-&P$^ 5H _CE%<G];/B))8E!:
-M<GIW<F9S8UIH8"T;+5E@83XM.6EK;$M87C9):V$Y7'IU8EDV/E@\-C]-6EY9
-M8& P2&YR8G=C66!J;VE?:E8.)5]R2T=R8V-J;7-W6U@;+7=Z8EIB9FJ,>EI8
-M7DE526-P;S8\7F$T&"4B2&I-:U!G<E]B8OYA6#Y9<VD^-DEG3TAB7F]B:4DK
-M)2 V:G5R84E@8&-;6UA,.7*"@G);8V-F6&E;:5]6854\*RDM3'IZ6E@M1')R
-M,#!R?')K8"4@6&IO4'*#<UAS:6EL<G-H6$0I(#Y-36UZ<GIZ8F-C;&]%.596
-M8VE;6$Q[<V. @5M98UIK>G*"62 !+0$^ /Y$-TQR840@)TDY.5IR:FUV>W)>
-M:VA5,BT_6FIA,B5-<VMA86E@:'A@(#")>F))6&!@:7%I24M;2V-H,$ER63)R
-M<EYJ:6-[8#9((B),<G):25MP.45;6FM:36-I8G)K<FI%.45B9W5;8H:":S\M
-M-F!;238[/$]:6FM$26)C:F+^:G)/16)C/R4V8T\V-D5?6F--1"D5,F)J7&A$
-M6G)J8D1823!J=7I[4%!C:&MK:FI?;W->/UYM.QU@?7<_&S9B9C8V<&9B6' V
-M(#E?9S9-<GYZ>W)F:W-[<G)T.Q@V24U;:W)Z@V)K;'-I538M6'!W<V%-<G-6
-M<H5K6V!,:VQG@FE5 38!.P#^;V),8V]@7CXV2UA96TUK=7Q[:VEJ<&E>26)<
-M8S8I-F!:8FAQ9FZ"<3LM@8-R3T5,8&IZ=TU-;UMJ:4]:>F8M3&MC8G)R=6MA
-M7C0T-D]O:EI,=TPM36)B6E%B<TU%2&IR8#];6TUB1#EMBH!--RU/6$D^25MP
-M8V: :#\Y8X)8_EIF:VMJ8E$E-F)I22TV6&%H6%@T$BU86E9,-C!M<V\V-EA@
-M:F)R?69::$Q;8F9N:%MR:#!%<F88+6J(/Q4I25E98X%S:$A9/BDR25@P16)F
-M;G-R7&MW>V9MB%D@.S9-3$UK;G9P:W)R8V$[(CEB=8-R6%A[:6]R:G=J:W!;
-M8()B8@%9 5H _G5Z:%QR7FA>,%N!>V$P6FYZ?6)/36N"=UMJ<DLW/%5>.41K
-M<V)>>W=A17*#=6$^/EA:;G=-36);9UM)269Q7D5(8EIB<FMB8%%?6$DY7')R
-M6FI8)3!B:&-I8VQ913!-7()N<D\V6$U$:W6":#<[65M)/CE)<&='>G-)'5N*
-M8OY$1V9Z;6MC+3]B<7)8-E5(6FMK5B R9FMH6"TI6WMW22U%:VA$8GIN;&)@
-M35I-8V]$4&\V-F]M&Q)$=4DR56!H5F-R>H)R6$DM/TU8-D5;3%!9<F-/9W)P
-M>WIK53P;(" _84@Y8UMW>F)A52DM-F*%@VEB>G5V:UIC9G-P6VR":$0!80%C
-M /YB9FYR<EI821LY@X9K6&%J;FYB23Y:=WIR<GM$+55@7C\^8WIP6W)R8V-K
-M>W)B/UAA36IP36!;8&E;8&%>:V-A16!).4]R8U8^6&!%+45J=7)G6S\R1&MF
-M8F9N8E8^-D5]?79H14]C:WAR?7A)-FAP34E)1&EO.6IZ-QM)@EO^6D]-:DQ9
-M>S _:WQZ:S!>/B=:;7(M-FEM;VA)/$UZ@&D\/&%C24AK8UY$:6%)*V-G/D5O
-M24EK9AL8/W5;36EP;TA%.4=ZA7IO/TE6/S(Y6EMI36ML34]K:VYI8&)F/# ;
-M/W=-+3\V8W)-15E%*1@P;H)L:WIN>G);6$QH:6%K@G V 3X!30"O6F-!8WQ-
-M-BD8,'* 9FMK=7)B9V%)65E<<FI@7B5"8%A)/TQU;EIC8$1K8W)J;V #8_YZ
-M<V!C8VAC8W)[;FE-8FEA22TE<FM-)S]U6"TM3&YZ8EI-3S]96D5$;&)9/S8V
-M6FYF8EM,8FYN@GV":TUB<F):8%EB:#]/>U\G8')':F)%6#8^;CLP7(*";#!H
-M1!@E38!),&IR8EQ@33]B<G!8/T1H8U!B:V@V26E>.5E;24G.:%IG<FM$-EIK
-M:6QC:G)B9BTB6FQ]>F!B6"TI-EIF>F-Q:V%A>'%%14U/8TM;54UZ838M)4E;
-M/S<_2S8.&$5B15MR9GIR:&);66%A8W)H 3X!- #^,#X8*W=C/" 8&U![8V)B
-M=7IK;VM-/S]86SXP8"DK/SX_-CEJ<TQ8:$]@86EI8F)H.4V">EE(8V]R<GIV
-M;7A:45E/640\@GI@)2=G8"T;-GJ"/SE)6%A::%8Y34QA6$1)1%A/1TDR3TQB
-M>F1N<EEC7&MC3&N#7"=)<G);<&A)_F)<35@^/V@[)41V?6-6=UD2&$1Z<EEB
-M;V-%658^.4QA8# =1&-J8G)W-CEC>&A)-DM@6EIR>FQR84U83&=937)R<V0V
-M6$U0=75Z;SPR+45N<VAW8F)[BH-9/DE8845884QK:5@V("U923]%13L8&$M:
-M+3!(15!K:UY;2&!N:X)R<P%W 3\ _C\@%2UK=UA$'0XG:W)I6F=W=75Z6CY)
-M:F]F6T\R*T1+539)8W)%/F9W85A;<FMB/Q@E;W(_)4UK:WR$<V!Z<EI)14E)
-M1&YZ;SDM1388%2E<?4DM25E?8V9C8UDP:7I:34UB:5M@/S\V3'-07%Q-13!-
-M.2=BBF(;-DQ-:VY-5OY-1V%;13]@/C);=6T^;WIJ*1(E4'J 8F-I/SE-8%E9
-M8FM$.S]::V)B<C\V2'MR21M$<%E%<GIF<FI/6$E56#E0>GIR:6):669Z>FI8
-M1"\V8W)@:&-1<HV*;U9<25II64Q88&QQ22 @/V!:8&8_&QM9:4D[24D^6V-:
-M6T5'9UR"<6<!>@%\ /YI/"LV86M95C(8)4]K:V%:8FY^@%I)2VY[>H!C539%
-M86%886EP539::V-816-S;S88)6%O/!4I/SEF@H-]<G-F6%A-3UAJ>GIK85@;
-M#B=<:W5H/EYB;W)K7F96&T1U=69/4%M%.4E-,$1J:4\Y22T5*1@5.75W-C\^
-M)T=01%;^34UC<%A)3SE88G);'6M];E@I("UGBG9L:38E-FA::')Z;V=86VUW
-M<F,_66%W<EXE-F-C8'J":V9H:6!-8&E/2')Z:WIR25MS>W5R6$E)-EMI6%MC
-M35F&CG),14M:=VE+14]I:VL[("5%6&)]62LE:7!+6#\V.6EH14Q%1$Q8@FE;
-M 6,!@@"]>F@R+4U:6T]5-#0^:6]B6DU9<GM9,BUB@GJ#7F)M/C9%65MI:V!/
-M8VIB:3])8W-I141C<%XR&R4E.5IF>P-C UO^66!K?7UZ<V(I&"E::FI:1$5,
-M;H-Z:EM-1$]R?6YR83DP-CY6/E9::FA8654;'1T@+4QH24]A6%A)-D1-36)R
-M:VQH-CY845DM:GIF33]$/T5R<FMH)1@E6$UB:F9R<F-O;7)R63]W<FIN8U4\
-M/DEB>HZ*=6MS<%M):'1,:&UCO7)[6REC@WIR63E>56!H6UM@65ARBGI8/$E$
-M:X)C,$]Q8WII1"D;-FEW:3\E16!%:5D\-FAK5D5622]%:UH!1 %J /YJ;T5$
-M8%IB6&$\*R4V:&E;84]C:DD;$CER>HA!37IN+2TV16EI35AI:W-R251;7G-K
-M5DAP<6!!-#])3V)Q;%YC85M;8%ERA(1U<F(V+51P>G-B6EH^4(6*:D5;:F9N
-M=FZ#<F-)+2U+86QK<G!;2&DM(#M)8VAF3U9I8V-$-C;^/TMH<F9H@%4M/C9$
-M:&9U6F)K:V-;8%@_8"48'3MQ<FA/6F)K>FYJ:SXM<G)91S]8.QLE+6**AGUJ
-M<GIB+41R:VMJ8E%Z=!M)<G)J=45%6F]K:VE@/R!:;EM/6"4;/V%;6R=$>G9R
-M:3\8*6%H7F=$/S\M85M$-EQP;%H_.39%@G*  3D!/P#^:6M96VAL<6EO62TE
-M($5?8&-96F\V#@DE25Y[66UZ;5M$-C]H6"TM.5R"@TQ%845C:5A667=R6E19
-M65MR>GIP8V-;3UA/>HR$=6YC239@=7MZ6&-L:45J?6(Y3&IL9FMT:6"*>DLM
-M-D1N>G9R8$UH52DV36QR:FAK<F-B6CXM_B([<%YC6W9C,#8@&UAZ:VAI<G!K
-M6VEA26Y9/#(M;X)Z8DU)2'I[8%LE(%EK6$DR/C(.&!@M6W5U:FIS;U]A8F9Z
-M;6MC<G<M2UI/479P86!/:FIK8UX_86M%3VE$/V)R<F8V.U!R<X!L,B5@6EAH
-M:6E8/SE@;CY$8UYB124_18)F@@%9 4D _F!96F-/<HER=W)@-"5+16%L7T]P
-M6RDP/%5-8CERBF9;639I@%4;&"DV9HAH3UI%66!%3#E:;VM;6F%C:UY[<W)S
-M:%M826I]A'IF84LV3')Z;4]:9H!B8FM@/CY<;FMB<V9GA8!I/C8;27=U=6M9
-M6UA+541;8T50>G5K3&)M$OX2-E9(85MF=SXM*1@M;FEV>WQW<FMW8$5R8DDM
-M+5E]@G)?6%9J>VM6.T19:%I-9F%+*30\,CYB;UE<>FIK:V!-:DQ9>W=Z36!A
-M345:;W)W86E:6F)B;&MH6%EP84]B>G6 <FE%8EYN:F8_6F-I:VYS<& ;/X!?
-M6&MC6S\@+3^"6X(!8@%; /X\'3EH6&.'>FYZ=6M88T5-:$U@:F(V54MI:E@B
-M6H-L338E8H-O/" R539KB&]A25]H6DU%/TUJ;TEC:V T8W)S@&];6%AB<G5Z
-M:UD_1#!$8D=I64=[<F-:7U0^,%MB2&IU?8: >F!)*3!;;FMJ8EM;8&-B84D;
-M'6AF9T1J@QNN$D1-1&)K7&MC6%0T+6!?7W)\@&MN<S\P;6))*R(_8F);65]U
-M=G5J5CY)/FEG.0-CSVEJ<75?3V$V,G=B3TQ815@V/FYR<F9J=VI--C!B@H)S
-M64587G)R6DE-<FQ98W)C<FUU<G=C3UIF:W!;7FMK:EYF*3EK8EIK<VQ).RT=
-M.7 !8P%6 .T\(#9965MW>W)R=WIK:F-P:3]%6E@P/T199G%)8X-K638\6WIS
-M9CQ)6#8_>FY;86AP;VA8.3]<<FAJ;V G,$5C>FM@6EA:6EQ]@VDY53\=+1MB
-M8CE>8UA:6$Q6-CY-+TUN?8J&?'=8-"4_4')C UO(7G9]<F$I&UEJ8DQND248
-M55M::')C46)B6EA+1#\M36Y_>FYC24MJ22TK&%Q8.38P6G)]@VA%,"TM8W=I
-M65M::GJ!>VM/6#(M W+#84U-6#X_:&-B;6MU>F(R%2]WB'I/.5I,;VMA13YI
-M8UAH>FM:2&IZ@W%%66MM<D]/6F]C3U%I8VIB:UMB<F!5630M8 %J 6  _DLP
-M7G!B3%QR:%MB>G):3'-Z8TM)6%E824M%>W%L@W):24D^6G5Z<G%@1#]F9D]A
-M8W-S;&E82V%X9UYC<%4T+4UP3UM@6EI%,FN*=S8V+1@K*T5O8$0^25I;6$DY
-M/TDM.6!J?8:#<EM5*24M6EI-6UM/8GIU<F$V87):,%J*6(,P6&,$:_EA6%!-
-M6&@I&R R3'*(?$])=W!$&S(E;5@V*2D^669Z7SY$*2 ^8WI065M:;H)U8DU8
-M/TEZ>H-P36%;13]@6#EB9GN(8R4)$EJ#=V Y/CMB6F%-3T]%/EI[;&-C:'J*
-M;#!(>G5R13])8V)C8WJ#<V9R:UIR<DU@85]I 5H!40#"/RE->G=,3'!@/SEO
-M<DDV6GIN6$5%8&]+2S]R>G)]<V-A.QLE:H)]@F-F;VM:7F%C<W5K8V$Y,&]W
-M6DAJ:$DV26E;!&"E22T_=8IQ2388.V%%;'-9-CE64&!924E8.SEA6V."@G-:
-M8$LR.P-)_EMC6%A09GIW35IS:#];;G)A36)R:E!C<G);24]?.1(G+3!;@WI6
-M67-H7CLV86A)-#0\6%EC:TDM-EL@$C9H6EA:6VY[<EM-6#98;G6(8C1C<%A)
-M3SXE,#^ D7 I#AA)<F9K83X_:%EC;&%+1#8W9V%@:WIU@V,V17N"=V _.9))
-M87)Z?7UN;&MK:G)S33]%<'<!;0%- /Y$&R5B>F)18VDM'5AA13\P8U M-C]A
-M=V9B6VE@:GI]<6E%*R5-=7US8VQS8UMB:6QV=6UC7RT;6H)H15],.3]%:6!C
-M:6!R;V Y6H*$:T@I/W!$37)P.3(O.5A@6F%I23YB8VM[=69B6V%H9U9)15MB
-M:F-$4')U8VMR:UMC:GK^:U9B>FM:8W)V>&!-340@*38\6WIR3&ER:EA)5G)O
-M33(M/FEO8FA4*1)8*0X2+4E67VAS>G)H8F(V.45F@V P8G)K;&A),@D;:HEZ
-M230M6&M><G,^27!B8VMA/UE>/EE%6&)W7'IQ15AR>WIS1"U$67)]=69C:$5'
-M=W):7D4=@DQJ 7(!< #^;CLR6W5R:V-O-BU)6$54/E@V+4188VYR<F=W7$QZ
-M;FMI841@<6MZ<EYR:UM)3V%G<G5F86 _27>#:F9P22T[16%;6VMO;FMO:5!R
-M@VU8/SE:-CYK<DDV+39,8$E/>UY%14US=G)B8$E-<F]@36)C8VIL1$UF:F-[
-M>V-06EY\_G='8GIK6&)R=7IO6F!4*2DM.6-[<F!A64TV/DUW>FM4+2U,;TPW
-M5E =240P%1@[1&!P8W)R;VMK6"T;/WAP.6)U9')R3#()&%F"=UM>6$5),&!O
-M.5AA:6EB6#!::#]A24U97$UR>%M98VQZ:D0I-C9C?7%;3V V/WIN:&-9)8(M
-M20%> 8@ _GMH25IR:7> =V!%3UI)8FAF+2 V15IB9FYK<#XP8EIB8EDV6WIB
-M:W)R;F))14E$26-B36-C6&*"D7)L@6@_1$5A9CE%=TA(:WIC8GYM3$DP-B4^
-M7')C6#8M.58G.7IN138I45I>:F V+6EO1$E@8V)<9F-A7T11>GUF33M-=OY]
-M1$U:3#1@:FUS=5!B8SLR(!U(<H)Z<V8M*2U)<GIU<EY)3VM))3961%9I82 8
-M,CQ%:4U;<F)B7F @&"5-8UAN:D]F@ELV&"!@>G=$.7!I-A(V8#9/15AI340;
-M/UXG/T1,9T1);')C22<_<FLP+40V/W=R6EMF+4EW5'=Z9BV"("4!6@%[ .MK
-M:#E-:4A9?8)R;EE/3VAK8S0.#B4^34U<:G)955M865IA24QC/C!F@VYQ:4E%
-M1#9;9CE/:6%:8H)R5&YB:VE93UPE(&M)15IR65M[<UQ@538\14QB8V-)-C8E
-M#B=B:DEB7C8=-EM>+1M@:P-:_F)B33(Y8G%)179]=7)816IZ:$E)+1@^54U[
-M@%!,<D4_/" M1&Z&@W<R(!LV:W9J9G)Z@H!J15M).4EH;S G*5A86F!C;6I8
-M6UM$;F8E)6**<C]JA7IP-BU9>GM@)3!P;1LV:&!9/UAR8EXI/G%5*2U)<%M9
-M3V)J:3PR3&))-I)$2S9)8V-B<$D^:4AR@GA>,"4!8P%M /YK8SPY86%::WJ#
-M>&A1<'=R9U50(!@V24]98F)-8VA923!9:%9@-AM$:TUR@&EA8$58<%E-8F-;
-M/V:#:V-;:W-P83XE+6-H;VMN6EIZBG)K;%A@:6)B66IJ3&9%(")9839W>V$Y
-M/F!8/TEI<W%B6F)K3S8I/F9:1&IZ;GIZ:%O^9F\P-D4Y-D0Y<HIZ6FI68%A9
-M53Y-;H1S-BDI/$]N;&)D?8F*<EIC838P:5DB*1M)8$56:VUB7UXV.7MB&Q4W
-M=6]':&AU?4DM35QV@2T2+5@I&U9B83Y9:VIP/S!S;24V640P8G%F;GIJ6TE'
-M:&%82TE/245$<F]/8&AK;G-;@CL^ 6,!<@#^<G!),%IC:6-K@H1N36)K<FMF
-M<D0I-DU/3'!O6%AF:UX\8& T168M)3\^8W-S;&)-:&-86&IF8"UJAG-C6G)Z
-M;&%+/#Q/<'* >F-:;HEZ7F-::')F8T]<:C!@8U@V.5@^7GIR6DE:/CE:8G)Z
-M:D1F@F-A1#EO9$U/;V1F;FUR_EM8)14M/#\^.7"&B&M:6F8^1&YZ:FER83\M
-M/V%%7&IK4&Z AGUF8V$_)5]<)2L@+3E536IR:UY)&RUC-@D.'6IZ8W!$68A+
-M/%M:<()A.2 E/!@E6'IZ231)<6$V&!M@;$0[%2MP;G6*;F-P:VQO:$U'64DV
-M,&MW6DUJ;&-97H(P-@%' 68 _F)Z6R4_:VMI8W.*?6M:3%MP8VI65#D_64U:
-M=W Y6G)A:7UP-C9O;3(E/UEC9G-<8V@Y1%AB;F@M3')W:E!R>F-/6&%527)J
-M=75N6UZ&@V)08F9J9G)K8W!)25!;/QM%84EC<UHP2RT_:#D_;GM<8G5<6DTY
-M:VI,1&MZ8EQ;:_YI5CX5("55-CQH?7UJ14M88$59B%M9=VD_+5AP34QB@&);
-M=7A]=G)K6UA-7#9$/S0;/V!B<F]@2QL_:$0G'1MBBGU[85B"/S9A<'J*>F M
-M+44@%2UU@T]97WMT1"DM6V@_530_6T]F@VM/>HA[;G)925E4)15-<F-A:V-K
-M8VN"64L!-@%% /Y9:U\M/V-<;W!F?8)U<EI)8FM@66A@15E96FMP)TQN/V*"
-M@F)C@X=I+3]%6F9Z8F)G+2(V/W=R2T5B;G)C:G)K6$E%6&%R<VUJ;6I;=GUM
-M6UIN<F)R<FEL=VQA6#L2+3Y+8698,#(5,&$;$CEZ=VYR8D\_26-B125%@W)'
-M6G'^8V)A,A48-CX^9GUU:RTM-G!H37)B/S9K>C9,8EHP,G=R9E-<@GAZ;&YR
-M6EI)3%E>)2U536!W6TP^8(" :R4)-GI]=G)B@UDP.6IZ?8IK/EEA-"DK=WY;
-M83E;=VE+87!W66!@86M;6FYI,&.*AGIJ8#Y%/A@.+5]04&IF>')Q@G=S 6 !
-M50#^8%I-66%C6V-L:WUR>G9P6V)J6F%L:455/T]B:S]/7$1:<GIU;8I]<FE;
-M/TUC>GI<6%4R&R=K<EXY1&)K8DQB:VT[("U/369[=6MK9FYU;FM/<GUZ;FYK
-M9FII>&A+-RD;26]@/S [*S9$&Q4;6VYF;6I;26MP:CX;)WI[159C_D5:<F\_
-M.24M1&-U:'(I%1M8:UMZ8TL_8W5C:5HY-D5J:F9@375U<UMZ@V-;85A@:3PI
-M-E5$8EL^86QN?'<\("U:>GIF8G=Q351L>W*">V-F:5Y)4&N"8V8R-E9I:8%R
-M<FE96$UZ<EI:82=:?8=Z9F-823\5"1@_2S8W6GI<8X)[;@%O 6  U6!;25IA
-M8W%;869R<G9U<G)O9&E;:F]-241%7VIB8%E>8FJ"<F:">F-J8U5;7FZ):%A;
-M9BD;16)Q24E(:%0G.5MI/"LK)1TV;W5R8VMP:FMC26)U?6<#:H%N W+^:V@\
-M$EE[8E@M)SEH8$0R&TEP8W)F/TUZ@FM>1%2 BFIC65II<F988"TM16M[<G(_
-M*1@R2&AJ341A;W)J@7<V8'=P3%MR>G9U:DQNBG=C6TQH:U4[+5AA34DB/V]R
-M9G=/-DM-;8-R9FUW33EI<FMC9G=O8F-96SES=W!++3E8I%MG<F-/-BTG:W)L
-M='!$:WV*>V-;:6%)*0D.+44@&U9J/UJ!<@%H 6( _DE915IQ<EYC8%IK8E!Z
-M>VI_=W!L<FI9-BTM/W!933E@8$5K:FUU>V]/-EAA<&QR6C]):6E+/EIK8&!;
-M850M+4U82UE0+2DB-U%B3%!C<G)C35IK;F)945IF;G)Z>F@W%4UR6E!C84U1
-M8FMI)R]H6UYS6T]RAW!,:&I]BGUL4/YG<G)>63DV1#8Y<&YK:&E++3!P:TU%
-M8')R35I@/UIZ6#E6:GIZ9CX=6I*"<&%)6F)+/EEI6G)R1"5B>W)R338_+2]J
-M<EQ@<FQ@:%IC6#E::5@_/EHE1X-R<$LV6'!C86%)51@826),8UQ:<X*%?6MH
-M:G!B7C 8("D@($EC+3""=V(!6@%- /Y$/"5+@W]/.4UB:V P:W)B<GAR<HV*
-M;U9<25II64PM6&!86V-<4&IG/B4^3VQL8TDV-DUV=TU-:EIP8&-F6#]8.41@
-M85E)25\P24PO.6-R<F)B:&I:1#E%6G)B<F@_-FMZ6UH_9GQS8DU:8E4V8$U%
-M<G)B9G6"8TU-:X)\:F'^6FIZ<F@G-G1$&S9C6G-N:#\E6G)J8V ^/DE-238^
-M64(M6%IK:T0M)5:2BH)H6$D_+39P<#EHBF@5/FI<;U@^52 @1%@Y6')Z>W)B
-M;&)@7V-:-BU))39S<WMP/U9R?&E-6G<I#B(^5#\G)UIZ=75F:VMN>FM>.R E
-M/#9;<3PE@EA- 6@!20#^.R 5+6][62 M8'-H2VAK7&9K:UR&CG),14M:=VE+
-M/TMC8VAI5C1-23 \1%IS<F)653Y%:X-K5F!%:VM/8VE;838G/T]/1V-R239)
-M)RU)6W)R:FMJ9U@_.4EP6WIC2T1C;EA:6W)U>G)@3UA)+59$.6AN:VMF?(-;
-M.45K>G5K_EM89()O)2UQ:3LE245K:FM@,E9N9F)J24EA5DD_/CDV'4E:6&8I
-M(%EJ?862>DDV(!@E<G=86XIW*3]A3&MM6&$\/%A8-C!<>HIZ>G=K<G=O8DL\
-M+24W:W)]<F%C6V9[8EN#830@)5A)&QA%=VYJ7D]H9G5O:50[-DD^87IH.X(V
-M20%W 6  O3(5&"UA;SP.&SYK<G=[<FIB8EM;<HIZ6#Q)1&N"8S8_6VMC:U]%
-M63\G,$E/;'-@-TE)2V.#@FIC86Y[6U #:?YA1#=%/TQF?7 Y1#8M/R]B>U!/
-M:FMQ9DE%;&AJ34Q@:&A)37*"?7IM8DU8.2U5/D5@9UIJ8E!Z:#8M6&YZ;6MB
-M3VUP/RUB@' ^/DE?6EE9-DUS;UQB3&-T3$1B62T\+4UB5DD2&$UR9G62BF<I
-M#@X54()R8G6 86-;+T]J:V/ .5AL8#P;,'.#;G9Z;')Z>G)I124V55YZ@FM;
-M<5M$<HAZ>G* 53)89EM$67IR:EDV6&]D9F]>7TM8.4UY<DDE1 %[ 6@ _E4\
-M-$EO9RD.%3)-8GJ)<FIB65HV6FY;3U@E&S]A6S(V16UI9F=)2U0V-#9%6%!)
-M&R4M/TQQ@FU<;&Y]<FMB8VQO<6-I1$Q->X):1#8M/"4Y9T0P1&-K;TTY8W!K
-M6$Q:8%@E17)@=8)F45A8/B=$,#Y@:$5$6DEB8RT;/W!N9J]U>F)08"T5,&J 
-M7TE41456/CY%8G)R6#!-<DQ8:6<[-CYB;U8I%2!$<EE:>GUW- ,.N39R<7)Z
-M:V)S8SXY6H!H+4QW8D08%45S<EE/6W)U=8)X5"5A<3]<>H!1<FX_2'J$8V:&
-M<DM/:W!J8@-RDF$V,&IH3VMS:V%8-D1K:44;+0%A 5@ _EAI26-Z:2 )#B _
-M.6)]>EM-36!$86M%3VE$/V)R<C\R+5EK;&)664D_7DE88%]$+3(I-C9$;FI:
-M<W)F=7U@1&-O9FYW6#\P:X)Z:#\M55Y$6U4V-DU;:D0V6GI]=6I))2 E56(O
-M67IB5EA<5BTV-D5:<%E)6%MK3S8@,%YH3?YN@FIB6" .*4EN9$UH138^)TE8
-M1%QR8C9)8EIH:V9A23EB<F,R(#E->F9A:6YS9C .#BUK;76"<EEJ:E@V87UK
-M1$2 ;TD=%25,>FQ965MK9G9W21M-<E@Y7(!W<G=))5!\/DR#@VE%:WIR:VMF
-M=VE5-F-C2V-[>G)L8%AK<&:"-"D!)0$G /XM3V%P?G R%0XE66!@4&]K6$5:
-M;&MH6%EP84]B>G5H64E$7UM)35HV+5IK<&)B6#!$6%Y56&)98(" 6VI]:CY,
-M6EYK;&%:14UR>G!A16)O6DUC63]-8FM%-D5:>GUK1" 8(%A:2W!R1TE816 M
-M*RTV3%MB2SY,@%LV/TM@;EO^3WUR46 \%2U69FI;;F [(!4W7S]);' _1$5C
-M;VI08V!86FIL3S9$27-S8EIL>FIF*Q(M8GIM>7IK:F\_(F!Z7%XP<FI6,D$\
-M)VIR;VA:6U%G8BT@,&);/SEB=UEI5"!$<B4E<H-R.4UZ=7)J;8)P7C!86$MK
-M<FU]B7)98GM[@F98 A@ Z#(M2W"">DDR(#9I>W<P3'IJ36%R<EI)37)L6V-R
-M8WIS>G!@6#Y-9C88-FMZ<F-?/CE@>'!T8#8M=8)S:VIB6EE:8VM:6G!)/V-F
-M8F-C<GM@-F-J6FEV>FD_.3E-<FDV&" R/S!(@'-8 TG^838B-B=)36%8*3!R
-M8S\Y.5EN>VIZ<F)C6C8W/D5R?79K6"LM6&)626IP23<V/EAG15AB<&]:34U:
-M:EIJ:D4V3WIZ:E4E,CEJ?V)B>F9O1"D_:F)6/VMZ82U$5C9@<WIM8DUH<E@I
-M+U5Q3S<I.6]H84D;+6,I#DQU:TE->GIRE69M@G-K/R4M8'-K6WJ2=T]C>H)U
-M;@%! 1@ _E]>24%<@#DV,CYR@W)96G)U:VIO:V%%/FEC6&-S:VMN?8)W:3\_
-M8EX;)6EK=7=L83]/:DU%)3(I375[;TU%6F-;:'IB6FYC54E%8V9::G)B/TUI
-M8W**AH)K:4D_6V _,D1>8#XM8X%R:5I-8&E<8$1%6%I8/S]K:U8I&SYO?/Z"
-M@GIF:UMA64E%8G6&=4\G/FMS:W!R<F-+/S8_23]+<&MN<TDG5GIJ5EM$)39R
-M?5I4+398:H!B6VY/6V)>26MR64]R>FM>)S V3WJ";F!%:GIH*25C>D]$/TEC
-M=W!5/SE/*1@V<$PY6GI[<F-<;FQR82 5.6-K3VJ*@EA6:H."@W4!< %+ /Y,
-M8G(M-W G3&YR>G)>:W)S>VYC8EIA34]/145:<&Q;:WN#?7!86&IF(!MI.5IX
-M:6)-6FM@)1LV6%I<:FA)+3Y@6VMZ<FIR<F-)17%S1TUB8UE-3U9;?7QU=H)O
-M5D589D5;:VI@/SEP;7)B5C]P:GIK5F!L85EA<FI$)2M9:WW^>WUM:&!$6EAC
-M8FERAGU-("U;=6YZ@H)S:E@[/U4M+6%-4()G)55W<$596#Q)<'MO7C(E.6*"
-M<&IF8E!>:TE:=6-B>FYC=S8\,CF >F,V-EIF=U4E/X)N(!M)@G!825IR<%@@
-M&S\E'6!Z=W)K;W5V=68T*RU/:45$>HII,$5\@GMV 7(!:0#^)T5P5#=K/T]<
-M<HI[8FIZ@X-Z:VA96V%92T0[/F)A3V-R>GMW:FIW7C(K625%<&M;8&ER<%D_
-M3WAS=VIH538M1&EL;FIB:G)B.3YL>D0G/V--6&%@669R=&YZ9E@^-D5A6F9N
-M9TD^7UEK;UM%8%!U:DQ%9F9K<'IR22 _:%N"Z'5]9EQ;3#XV3VE99GUZ6B(5
-M.6)?;H.&@FM-/SQ8&RT^15EZ=S8G8&,P2U]96G-U:EI%+24O9GUR;6M/8F)@
-M6FMP=W-<:W5$7D0R<H)H)1LM,FII64EL<V8E*6MM22!$=8-Z7BD;%14V UJ5
-M8FMZ=7IR2T1)2V%96'&"<#8^8V9U 6(!8 #^-EEI22UJ8F!9=86"8E!F=GU\
-M@X V&Q@@.V-L5D5$6FMO8DUJ=W)P1#]?:38V7&IB:&MB:W=H46-UA'IK6U@T
-M+6)Z>F]%6F90.6%S<TD;+40P36MR:E%B;75U7F!8.S]@6DUB8D1-:6MF8EI@
-M8T]K7EA:8F-P=W1R8"D_:T]NGGJ"<F-)/TP^,&-B:FYN3U @.SXV3WJ"AFM%
-M,#]Z/P,VS3=J>G)$23DV6&A:8W)R=VY9/RTM8VYN8F-;:%IC<&IJ=6M/6F@^
-M:7A:;WI6& X8/&-K;&!;:G=8-F!J-A(G8H:-@CP@'2DR/D0_/S1K WJ/6#!A
-M64E):7)M>F-I:4AF 7,!60#^8FMW/B!P64TY:WUZ<F ^8VM;:8!;*1@@26MZ
-M:UD_16N!62DY7')H/S]9=UDV-EY%34DM1&QR82M:A()N8EH_)TAU?7=9<ED^
-M*VR#?6@^550E3')[=F!;6VIU8E!I6%EB8D],34E8:W)F:TU68EIL8%A:3&-;
-M14=R8BTG8F-:_FMU?(-K/EA6'3E,<X)N6V%)5DDI-F=UBG)),C9U;TDM&Q(^
-M;H)_5!T\36)><FMF>GIR;$LV8FYR3$0V:6!$:&Z">E!922TG:8AN=8)I-!@;
-M2VMN<DU%3')H5F]W;C0;)V:%A6E57UY%3UY%1$1;;GJ 8B5,6D5)<')1:F)J
-M>()%10%R 6L _GIR?TD217!)+4QR>G%P-FEO/C!8<&,@)6AZ?6L_-C):@F]$
-M-D]O8$E))U]L/"T[254M&!TY:W E+6J"=FMC8#9%<H)]:HIC+2U@>H)O3&%)
-M&W!Z@X-R:V!98FA(6V-K<V))6$E)6FUZ<G)::5I,3$UF3T5:7SXG3$0M1&]R
-M6?Y,6VV*<D5)8#8V.6F">G=S<&I@6%5;9GU[83X^4'QP5"D8)6*%?6@M-DQ9
-M8VQW;&]Q=7IB6&AF8V _($5H.45:@H)$/CP8"41Z>GV#>F$E&#YC<G ^,$1R
-M=UI/8GV 7C9%=W5L:X!B65Y>.TEH;V9K>G)+8$4M/G>!;F)16G>"8U@!6@%Z
-M /Z#>H9P,#EO:#]%8WIF8C]H=V$\-EIC.2UB@GUK,ALE6()Z:%A;=W-B52 V
-M8$DR+6%U53PM-UMQ7C98:VMF8W!I8FU\@W-R8"D@/W)Z:C8V+0Y:<FEU>G)J
-M66)R6TU;9G5F.38V,%9R=7QR47!B23XI6%A$8UI:8&E>*3Y9:V_^8G)R>G)H
-M5DU>7#!$@7UN<G5R35MW<&)R=6I:1#]D9'AA,B5-;5-G:4E@7&M<:W-R<FYN
-M6E!J6DEA7B4V:&!%6'N":#8;("LP8FMZ@GIC,B E,&!K9C8V:')F.41Z?8!I
-M3UIB<GJ"33E@224;17)R9FYF:W!%&R5$>X9W8%IK@FA) 40!@ #^?VMN@V!;
-M<FI-6&IZ8DQ8:W=C:6EP61T;27)V:3P5%3]W>FI816)P6FEF-EM6/" Y;UM%
-M25AA<6@^-C!::%E/;W=F>GIR6C\8#BE::FI5&Q4526)/8FIM;4=,<GI087)P
-M;CDM*1LY<G)Z:T=B8V)@6$]C6F-J7VMX@%P_-C Y_C]R@G)K6TDY8V])+5EZ
-M9EYF:#8Y=8)C36]H6VEA13^ <C8V<&,G2&]):W)C7&->;G)K6DE98VE+8F]"
-M*3Y6-D1ZA')$&UA9)SE-9H)]<F->02 ^6V M(D1)/R4V:VYR:SP;)V:#@TDG
-M64DI#B5G<G)P8&MX9CL[66>"?7-C6H)@)0$; 6  [6)I7GII8H)R5FIZ>FM$
-M8W-K3&-W:V$I(%AR<FM9,ALV:GIM85AA6T59<UE;:%4[/$U$,"T^8W!K7S\V
-M7FA>-D=K7'I\<F,[#@X;6&IJ;3P@06-I3&)B<G=81&):1%N =7)8-CPM/W-]
-M>G)C6ED#8OYH9EQ/:6MB9G5W6TDR$AM@>FQC8#8E6W)P246 :$U08" ;6H)K
-M3U9,37!W6%IK=SXV:&))6&!%8VMB6EM;;GIR:DD^3&E@:7MH.R<^+2UPBH))
-M(DU9)2U)87)U<W)K83])868V+3\_*14M8GI[;RT.#C!B>TDE25PR%2!8:7*0
-M=V-C:VE)3VEK=79\<%]5( $. 2T _EEO7G)B8WUS35QR<W))6G)?)T1C46!$
-M26MN:W%/1"DV:WIQ8F-N83]89FE>:UI+6&!)-B @/U9C<EM@:F)%+4EI8G)V
-M=W=I.RDV8&-::TDV27MR34U9>W5<:6,V+V-V@G5C/U5)6G5\9FMJ35MC24Q_
-M=VA%6&-J8F9[<FE$"?X5-EIB7%H\+4EK<G)B@G!,6F K$BUC=VA@-CY;8%A-
-M8F]K36!(8&1,8')<:FMC7F9Z<VI$(#EA.6)Z<F-)-B 83(^*<%E+84D_36-H
-M7')Z<F=;66)K6$M96#8I*45R?7<_(" M1&M>+3!>1"DO15M;>G)C8DE%6FMB
-M8F9[>&N"7B !%0$@ +-9<FMS;%MH=V V*45K:$QC7QL;,BTV,E: 8EYW1"T@
-M)6!R;FE:86%86V-C<GI@-CEI83\#(/XP6F _;WIK1#1):6IR=7)R@')98'=F
-M1%A)/TEO>DD^37)J6FMJ1#LY8H-M8D])36IL=5Q?1$1@3#8G6EYP:590;7)B
-M<G)K7B 8,CY%6EH^+5AC8FMR@WIA6FA9*1@Y;UQ8/S]86DD^16)R:F ^5F Y
-M6H)J<VQF:T1C;&$^&S_*6"5,9&UR:4D@#BUY=79Q.45S<&)B9TUB;G)N<&QC
-M8UIA6VAP7C V8FYR:$M866AL:$DM,CL\25M;3&9U;UA%/EAP7T5@@()V9U@!
-M- $R /Y+241J<%I9<G I&"5-<EML<$DI)2D5($5Z:FJ 8"L8(%IZ>W!;14E%
-M6G%(:GIO+1L^6$LM*2LG640B8HIR6$188%EJ:VMB@WUC<H-R2$E%/T5Z>TE$
-M:&9C:EQC14DB6'IF65E%3&IF:VM8+3EB240V+1U-?V)-9H)F<6):8CNI&#M8
-M,$1)+25>:4],>X)Z:EIK<DD@+6]:-CY88%@_-B4O35I-86-I6DP$<M-<:TUC
-M:V!5,C9>+6!;8FIL21@.(EI-6U4=/WI\9EIM8&!<8G!X>V-?26%A8GMR7#])
-M36-G:')C<G)J8E4@%2UH:6A8/W)J2UD_,&]H/TU[?7UZ<@%> 44 _F$_&S98
-M8EA9=SL.#B)B8G> :5Y5*0X@26EC:G9I-B V:7N">FA:23\Y6V-A=W-5-#E8
-M638V539+,A)$?W);:'-K6EI;8SYS>F-F>G5C6E9)+7F*:UIB7&MK6EM).QM8
-M=7)-13]8;FEF<V ^/F!-87!+("5B:#8Y>W:!:%!A1* V25@Y.S(8($E:.2=P
-MBGQB6')Z:38Y:%HM-F-P83Y).P,EU"UA:G![:4UB;GMR;%IJ>FM@/S]926!C
-M:VMJ21@),EXM+2 )/W)M5CEB8V)<.6EW>FM956EP<&I<>FA$.TM:8WIF7GIJ
-M;G Y#B5B;VA9/VM@,$DM$@-)AEEI:W9R>P%W 6( _EE$(!4M;FE;8EPG#@Y6
-M36=J4&MW51@@6&!:6G)C+255<G)U>GMP86%)16IP>XAO8%A@7S8M7%I8& XE
-M8$E8:WI[:UI86$EC9VMN9D]G6F-)%5E\@G)<8V)J8F!)/C1);G9-)TEB:V=F
-M>FIB6D5$38!K5#)$7R(M8FV"<F(_6,-;:&MI62T8-#E;5B)@B8IO6G*(=F!:
-M6UDR+6%Z<DD^230=#AM)3%IZA5H_7H-Z<F)K>G5K3$551%A-8')Z:%XR/V@E
-M PFZ(F)_8#E?8FAH25AF<E\P26E@8V]0;V\_-$M:;X-H6W)K<FL[&"!$8VE/
-M7F-8,#8@&"4;(CYC;&A/=0&) 7L _FE5( XE<(5P6V!>.Q@M66--,%AP7AL8
-M/%EB8'=+)2 [8V-B<GMK7G)I,&)B<H)Z<F9:;3(V9F%91$0\1!LP8FZ <EI6
-M24U;6F)U:FM$1&(P"3),9'%<8EQR<FM8)S9C:VY6)39$8%!9@&Y_<D14.VMW
-M6V%R:T0V25MK8W)?/\-->GQS8EA$6#!$;"(P;8)Z8&-]9D5K>E@M($EZ<FM9
-M/C(."2!")TENA8IK<GUZ9F)L>F9Z>F P)UM3'4UZ8')N@&@@ Q6Z(#9K@&-@
-M145N<$5@<5@R26-83'>(>FM$("T_8WM@.5IK>F\\*3Y815AD8W!:8%A4,C0I
-M*1(P8TP^30&" 7\ _G!9)Q@M9H-W6EM88$$5/EE)66%A:%4\1$UJ8F Y6#PT
-M.45:<G-B37J 6$]:6EQ;;U\_6"TG6FMH8%A>7CP_8W)Z<EA83T]86VA91W=J
-M6F%5-$MK<FYB.45RBGU9+2)B:FMO7DE)6$QB<FU]<DQC6$UJ6EQZ=FE%,%M-
-M/D=C/OXY<G)C<&)@:$U5:#]$6V):6WN"8SE@>EHV-DER;FII5"L)%2<M%4E;
-M9H!UA7UQ9F9[<EEI@G<^(%9()4EJ2&-;>G R,#P[*R5->V)9/SYF;SY8<&A$
-M66!C:&:#@EH^.24[6&)8-BU%<G-5(#EO13]J;GI-8W!//C\_.RLM23N",CP!
-M;@%M /YH8$1$/FJ#@FQB8G)L/$M81$U;85IO:FE::&@V&TE>+2 V6')P6SEF
-M@VM@7&A%/UAH65A",C]C=T@Y3W!>16-K;G!)6%A)6%A@33!><FQR<$1;<X*#
-M:!T;6HV*:C88)TU(:6);641-;V9[?6([644[6UMC9G5U<V!97BT;6&+^6W!-
-M,&!J8EI,;')-3'I-)S9K=6-$:')B6%E<<GIB6F8\&"<P( XI-CY-6XAZ8EQK
-M<G)O;G)K8%A/6VAB:F)P:FI<;3\_6#(@38!J35I-:VD[/V!U6#8P37!(<GLV
-M(C8E+4E:238M56R!;T1)<EDM26R*145M6C9%34Q>1#])@D0Y 6\!2 #^3#Y$
-M:%A-;GIW:VIS=VA-6TE58$U%8WIZ9F9I-BE)6$0R.UAW8V%H<GMN<FIJ6$U:
-M8FQC8#X_66I8+3!P83];<FMK3UI83UA-6& ^2%I(<GI66&9]A%\2#C9]DHI9
-M)2D_14U$65HP/T4W:X-G16D_/V)K9EY<47)R35@[$D1Z_F9B/C]$8&!,16-R
-M3"EZ83(W26-/2W!K8FIK:F]Z:D]H21@8(!@5(#9$&RU[>EE:<$]F?'59/V)[
-M6$US6EIJ<H1Z6FI5/EH\&S!R:FIG3%IC/B4Y=W ^+41C8X"#52DM,B(Y6#\E
-M&SEK@&)B>'IG+25)A5\Y8DDI25M'8F9568)93P%P 5@ _F!).6-W23(_:W)F
-M7FYW2$U9/F%)26%N@G!:63]A?4E+7C]H=V)@9G*#>G: <V!@7TQF<G!?66%J
-M9D0_8V!%87AQ:VE;84E95EEC:5D_)UAB5CE;@H)X01@R:X:*=U@_66)@+3]A
-M23LB(E9U9S]B.3E6=VIL:45::EL_&PXM<OYR6D1@669@2S9$<F])>FI%24E9
-M-C!<:F-R:UIJ>FMC;5D\,D1$-#1)7!(@:G=(8GU:8GIR:#Y!9CY$?V@_35EM
-M@H)O7$E812 I8%IF;V!I:%0P,EIB55AA8%Z"B7(^)3PI-EA$%0X524TM1'IZ
-M9RT5)VIK6F]A)39@8%E:34F"34L!:@%W /YR6#]:>F\I%2U96#D_=E8^6"TV
-M-D]L:GIZ;3\I8G]-/VD^1')B35MN@W)C>H!G340I3'-Z:V!A6VEC:&->/UAO
-M:F-C65@^245837!P6UEH65@E.6U]A' V2V-N@GIR3TQB6"=8<H!O23]F:FIC
-M9CX=)6MK<W=-3&MK6"D8)6+^7&)-66-Q;'!--EJ"@WUK23\V23DI.6)C<W-K
-M:GIF8G!C66!J;VE?:E8.)5]R2T=R8V-J;7-W6U@;+7=Z8EI?8FR,>EI87DE5
-M26-P;VMB<'!@55EF1&!J<EM,>I**;SP_1#]).Q@.#A45#C9Z>F)$-$1H65AC
-M<4D^3VE66F]8@D5) 4<!;@#^:VEH:FUZ5"<@+5I3/F)-154M%1(M3%IR<V\V
-M*6)I+3!Q6"U)/C1?9G);25%M=V,_)3EL>GIK8&!?;W!?845:;FI@6$D_35D_
-M2$E@>V=P;V9G13EH;7IR145-8G)U>G):;%@I16Z*@G5K:G5F@G5<+1LP47IS
-M33EK<F)>,C)8HS=913E86V!R<S\G8HI];EM/1#]$.S=A;FQR;6YR8DU8245R
-M X+::W)M&S],8FDY6#E/8&)U@W->"1A%;G=C8VA/>G-%3%A)5F!9<G)?67)R
-M8EMI:#9?>H)I37J2DGI;15A88#\T.2 ."0XV@H)J24MQ@UE88VIO;TAA.3EX
-M<$5% 6@!60#].6>)BGU[<&8V-EMK16AB6F V*RLT+3Y68F \26!@)25B9BTG
-M1$]F>H!R8$UB<G!9/$MB;7MR:EMA8F)I64U::W=L8%Y)8VEA/C9%6%IJ8DQ8
-M:4UI8EEB9F!)6$U;>X)::FA)5G*)>'5N<GID<F9I850V7V]:25AC=G5R:$0#
-M6OY5140;+5IR82(Y>GQN=W!C52TE(#YO6F!F:W)H22T5(%F">GUR9'(E+3]8
-M8DD[)24[1%N";E\Y*2U$5F!B:V)W<D1)/TMC:%M@<EE:<EI)/F%9,DUUA7)>
-M;HJ&=6!;6%AP6EIX52 5#BEP>F-%27*&:# R8&9Z:V<I)4Q?)R !=P%$ /X;
-M.7J%?'UZ=UAA;&H_8F]08T5)6%LV24DW/S8V3VE5-EA-+25):6YVB8)P3$UC
-M:$D^36EJ=W)C3W=K16-@.3!:>G!S<6%I<G);/UA,.4U%-C9@8&IK23E<8%E@
-M/CES<S]B8C Y<H5\<F)L@G5U<V]B24EJ<$D^35QR>GMW:&:L:EEA6"T2(#9)
-M8T0P8FUR>FYP8#05,DE834E9;G):6!4)"2=:669:/U]F/C8#6M$Y6G)J6"=9
-M86AK8VM-241K8EI)8#\_-DEK:#X_<&IB;VA>-C8\*39;=6YC9'V"<FMK:45K
-M;7)R<5E!,"U@9EM)6W=]=TDV6V)U:VQ85DU8+2 !7 $V /X;)5IU=&YF>FQK
-M<FI$-W=R8V-K;UA88%@V+38M+4UI66$V+55A:F)0>H5[5CY96$E586)9:G]C
-M38%W36%C-A@G5DUR<E%W?79;66MP33E)23DP1%IK6CEB:%IC7S]@6C9P6"4E
-M375U;6AG=6UM?7I9,FEZ:C8V7V)G67=J9GK^:EMH8"T@*2 V8#XE/DQS?6YR
-M8#(5/F ^25A):VI%5!4.%2 ^66=B5D5U<TE8:&)-375S6S Y36J(>G):8W-I
-M84DV=UM8-CEK7QTE8FYJ9FMW7C9$/"5,:D=::FUB7G)R:$UK=7=C<'!87E]@
-M35L^3WI]<G!86VQZ<F9R<FE:@E4R E4 _CLV26AJ:V-S:V1U;SX=7W)C:G-[
-M6EIR:TDE*3(;-E@_3S(V6X%_:UIF@X!--DE8/TU@838R:ELR@7I,7V]5*1LM
-M.5QB37*%=5I;:VYH+4EH:3\_+45916)R:V-J8%\^'6A@-C8^66)'8W=F:VYU
-M<E K8WEG+2=9:E]%:V):<OYK:VAB6#Y)-DEC6DD^+6-[;7!-*2!)9#X_7EIC
-M7%9@/S)07F!C8FIW36MZ8EEK:F-C;G5R8%9,8FIN=3E,@F%8.5AR<G!9+6)@
-M*39J:F%I8G)8,%MH-D1:1$196SXT:VI@8WMQ8EIL<$Q:8V!@6SM8=7M@<F-%
-M6H%R44QM>VN"6!L!-@%5 /Y%238Y6UEC=V)B<FI@-C9$3%IB<F-K=7)O53(I
-M(#QF138E-C]H@()B6GJ"5ATP7&!).5E5/UA5+7IZ1$UW<%X@+61B5DEF@G5:
-M6G-R6BT_:W)U9B4R6%]J;G)K9G)H/AMC8T5-340Y)3!8-V)N:FYH6F)D838M
-M35I$36-L6UO^8FIJ8VM@24E8:FMJ5B4Y:V-K6T0V5F]<26%C:F)::W!,26]<
-M8UIA<DE;=V]:8FMB6FMK:FUR8F)-7')N8'5%-D5;8H!N<UA823Q)6DTP6%9C
-M6"U):G!C:&A@65@^,%MC3V-]8$5-8FMB24D_6FI,6FUY8V)@.5E[:SDI17)_
-M@F8R 38!/@#^:7)F1#8E)4UL8TE)<&<^/V%81$U/:W-B;G=,86LP.6%8/T$@
-M)3Y@;VE-64DI(&!J:VIB47IT8VAR:3])>H!9-D1)/R4M8GV%:SE,:38;7GIR
-M:TTM1#Y:8EIQ@H)R4#XM<H**>F9I7S0@,C))6D]-9H*"=V@V'59@,BU:<G(P
-M_D5:8UIB8F ^-D5ZBG)9.5!B65M-2S]$8G!<8UM<8D]N<DD_/C]9<F];6%MB
-M:F!)+2E86$1$?8)C145@=GMB)2UH65IB169Z;V!+36!9-EMC6F!@6&J(<TQB
-M@H)Z:3LP6&=R=6E)-C!@:&A5+2]@6T5;:VEB6V-R>G)@/#Q/9X)R:@%N 6D 
-M_F9W=VM$(!@I3U]$6']P53Y823!)2SEB<G)C*3]O22=-6#]5,C1$/EIP8FA6
-M,B!89GIM:V-R=V)P8E\V+6J":DE)62T.$E9N?7I,/S\E&UB"=4U))38M24T^
-M66Z">TD;&UIMBGUR<G=I/RTM15!?.6*"A7UR/RD_8V%;:VIN8)5+6&IC;VIB
-M/S(E675Z<EA68F);14T#8+%B8FM/6')B:FY-5DDE,&AZ;W)K66IJ32 @7&%-
-M6W6%8#8G6G5R61LI5DEI8$EB;FMH V.T:TE-8E]/24URB' P.7-Z@H-I-CEF
-M@G5W22TR6$U-8%@^.4U%:FI61%IJ?VUU:F%-6%I;8@%P 6, _FIR>G=;1" =
-M+59::W]V:5MA13)%7C(V=W]9*2589DE86T5F1$EH35!L;VY@1"U836I,67MW
-M>E!W;FI$-F. 9FA863PP)6-]A8EJ2S8@(#9R:C!-53L[8%M92T51>E@5%3EK
-M>F9:3&)[:SX\/SDM,&*"A7%R8U4_/F>"?6I9:.U@36IF=7IK8$E58%E9>FIH
-M8W!@-BUB<G5F8G)H26YR:VIB8385%41R;G5Z6F)W@"4@8VQF676*66 V3&YK
-M:3]>:$UP=7![6V)H1&)J:VEB:&!8/SE<>G)@2V!B>H-K/R4_=7)Y:#XM6#\M
-M/UM) RV08H M)U]@34^ <EM-:W=A.0%H 6\ _F)U>GIJ8308(#9-:X!R:6-L
-M224M/S(P:HIO.R P6FE]:3EJ;VEP6$]:6H)K23Q615@V/FYR:UIK>GII8W)[
-M:& ^.6AM2X"*A'QR8U9454MJ8S\^6D]$8&)R:UDO658R,"=J=5Q$+3!P8CY@
-M=38)%3E[A6YB34D['3]U@G=:8_Y6-V)U;FYF;U]-8VQ/56IO6F-B-AM$:FUK
-M669Q5G!K:$]J<#L.#B5)16=W3$EFABT\8VMO1&J&;6IH8V)(;T58=&!R@6]U
-M:%IG+3E::W!$34U)8&!,:UER?&=-:VMD:5H_3&9U=6I86UA+66AA1"42.6H_
-M(#E$&R=O<CDP7X."<#\!/P%; /Y:<GIZ<G)5(" ;+59K5C]+8UI)/C!;<FIP
-M35HT)2U);G V1&UO8#E)5D1R:UDT34U8/C]H8EHY7VMU?7I\=VA@/S9::V%F
-M?6YF:EIK:G)Z?6],7E9@24Q/?8-W7E98-UA)8GIW6C]58S ;.6I<(!L_<H-U
-M9S8E.U1):G5R8V"&14E:=75Z W+W1%AP:2(Y8TE9:UH[6%EJ?V)J<E9;:G!%
-M16MG*1T[.R4_7R<V:GHV5&MC63=,6UMR=H1J/V(_+4QR=8)O:VIK<E0M/FAX
-M23DM)4EH6G!B;8AZ8VM:/W)Z:38_37*#;V%@6V%C;V \("TR8D0Y/"LM6W<M
-M&#!R=5X!, %) /Y9=7)B6FYN1#PR*T5834U@:VMJ5BT_:V-K8V@^.2 E37=)
-M,%]B/BT^8$E:8#\T36%;13]@6#DR25IF?8*%@&),:'!I8F@Y241$3$1O:EQN
-M=7)(:')O:%A$:7AU8EIA2$5[@H9Z6T];<#LE*3)T7ALP66UU=TD;-F!'8FM/
-M9TG8,&EK9G)Z?7UF85MR>R5!21TY;6MH3T1/>GIY>FI6:GMI,%MR22TY23(@
-M23(;86]:5FIJ34E%)TQW?89[6UI8.SEJ=8-Z9EIK>F<V+5]X6CX@%2U?5DU@
-M8@1RI&$Y6W)J23(B2'IK8FMB2%IR=UM//SE@8#]/7C9?@&Y$-F-R< $M 44 
-M_F)U:V%83V-@5F$T-DU)/D]K@'UC-C!C:V-C<DTR&Q@^:EA6:&([&S]H8%A>
-M-BTT8W!824\^)41$:&-U=7=[:UIK>FIB8CDB+4E%-FA?6UI::TU;:D]J:TQJ
-M?75L8F-:.5YT?75L8UMC6#8M-FAR62M86F9Z<D]H:DQ$6D1:6/XM36IJ9&AU
-MBEQC9G*"14A8*2)8:FA8.4UZ?'5]@EM;@HA?66-B8%9C;B4^/!LY:G!B6VI;
-M6V V.7*"@G);8V-F6&E;:5E6/V-Z=UD_8'=A+2<5,F8_,$DY)SYO>G!)6%IJ
-M83\I-F9B:VMI35MR>FIJ:&-C6B(P1#!->GI@.5F":W !- $_ /YI?W)K:VEB
-M14UR7BDY82TM.7J*<EDY4&):8WIW1"D;26A?:H-J23Q@<FIQ83\\.5IK:VQH
-M23(R56ER=UI;<G!K;7IK65I)&QM<9UAI6FAH1%!J8F)%35HY7(IR;G)S8C]%
-M1T]R<FE>4$TY*5A6<G))6%E;<X1W>GIH1%A<+W?^8E]B:V)3>H9:/V)Z=58P
-M/BD8275:/CE%>GM(4'MB6G6"<F-/86)8:G(V2$0[/EF!<E!B:&!I6#!J=7I[
-M4%!C:&MK:FI$24E89X!8241B6!LI&"5D/CY8/!@;8'IZ<&A:8FE+9F!>6F%@
-M:&AR>WIR<G& :TD8&!L;.7)B.3 Y@E]P 5@!20##9GIK67&(=UI;:G!>2V@[
-M*259=7IR6%9B8EMKBF@[+4E@8&9Z:DQ;<'IN@7-)/S])8%@P23\M-EAI=X!-
-M1%EB:5!R;P-)_BTE+4UK;UI-8V!-:G!C65E)(D>";6YU9FI$/E9:8G5]<FA-
-M.2<^.4QH6&)H3%Z#>GJ"<D=621MR=6)97FM<9G5S5D5K?6I%5"4.-G)W.24P
-M:W]),&)C<G5Z<FI-345)8V,V6FAI:4^#?4Q::V-B<&!J8G)]9EIH3%MB9FY$
-M-J988$1H3UE96DDI(!@I5C9I:DD@+6=U>FYC:6%@-F!J8$Q)/DE9:@-ZD6UR
-MA8)C,AT.&#]K8D0^.3E? 6(!6P#^9VMB3&:"@G5R<F9F8FM@255@65EZ:FAC
-M:V!8>F\Y,C9)7W=R8$QJ<VYF:7)A-CPY358M,BTV668V4()P33 P8$5(:$U-
-M6#LI)39I<EI:8V!86FIB6FEI*2=C>GUV8EY8*59K6V9]?6YB3$M97E8_.6N"
-M6S]B8UMK<F)@225:_FIJ6EAN=5I9:&))6X)R:FA/%1):>E\R&SEB/BU8:FUZ
-M=69U<DE%:7!;-D1R;7=6@GPY25I?1W-K:$1B>FYL8F!-6DUC/R4Y84];:&MH
-M13]F:S8V6#9@8TDM17)Z@F=)8VIC/D1O32U)7#8P16YU;EEN>(IS7"D8(%9W
-M8FAB6X)96 %- 5L _FMR85E>;GUU;H5[9EYF;U]-8VE/5FIO8&-@6X)R138E
-M.59J:U]-:FMC;UA9:$E$-EA8-B ;&U9?)2UK<G!5+45936MH6&!%)14E87!:
-M6&M964]J8UAJ<TDB.6N%@V]96#8^4&E;;H-B638Y;7)H(B5CBG59/D0^,&IZ
-M>G)8:/YJ8V9S>WI;35A-.6.'9EQ/;2T5.6)17"4R/B451&)1>GIB;&I,27!P
-M:D0R8FYW7WV%.24B/CEB86-)2&MC7D1I84DK8V!526%;6V->:38I8H!H/C])
-M544^5&AR;7)6/&)R>F@Y8C\;+5A$-C!:<6),8&Z)@&U0-BD_:&-C:$V"5EH!
-M-@%( (U$:FE866)Z:UQ]>F)J W+^1%MK8S8Y8TU:8BER@&I?.S!)6EI-:'!K
-M;VM83'!I6&%L8#L@%2 V53Q$64U;=V9)65MC:UAF21@.%4E987%X6CER<EIC
-M>GUA&QM,=75J63D[*2=,6D=R8CD;&TEA2 X218)]<CXM)25-=8IU:F]R8V)U
-M?8=S8$DM%3EZ8FAB\&)@0DE-3VE)/CPI(#9H17*"@G5H24EK:FII-D1RAG)M
-MBDP2"14M:6I;6BTE,CY%8G)R:5IO:UIJ:W)K6V(V-&%Z@&IC8$@M+5AZ>G)C
-M-BE8;H6#6F!-/"TM-C9$8V-J6EIC>GQW:%Q)7EI@8FM),#X!.P$M /X;/F=O
-M6EMF;V)M;F)B?7UF86!K;S8_22DY6C!;<G)W;C8P2S8V8FIB<G ^,%]U46MN
-M8D08)3PM-FY@1"4Y:VA-85M$145J/R4K*40P.6N 1R>!:DQB;8)I*R5-<FIB
-M338I1$0M/DUI6TDI(#<V/AL8179M=CX;)3Q$37UZ66K^>W9N<F)M@W)H238_
-M6C)H@FMK<FQ;8W=P:$0V5#YJ25E\BG5@14EA8V9I,B)B?75UA7(\& XB:&YB
-M8#L2*UA51&I]>F-J<EIK;'MZ8TU526EW>W)R<#X;&$EZ?VY?)1@E1X*":FA%
-M22TM-C]A=V9B6VE@:GI]<E@Y6F$_8W)9@BTE 54!,@#^(!LY<G=;8GIR<FUI
-M:76"8F-F<GI)2%@M+44E/DQF>H-@+41+/%!P3&)H*14O:5IB:VM$($1N.QMP
-M;T0M/FEC3%]8238^8EA5-C9F+14^8AT.;V1;65%N339)<G5Z:E@\(&%K6#9@
-M=VE@7DM$-DDW.UIM8F(M#B4M+1UB>41;_GUF7GIF66)F:VE86$4;27)R>H-R
-M6DUN>G5<.5I94$DO9X!:.5AI87!K6"TM6G)J=75]=#(.&$EJ:G=H(!M):&)Q
-M=6YB:FI%8&J"@F(^6%EK<FMK>H)8&!4R7G=B13 .%2UQ=7IP36 _+3]8:75]
-M<F=W7$QZ;G)?-C!)'3EO38(M-@%- 40 TRT8&TUJ6FEZ:F)J;&)H238V26EC
-M8G)O23E%-CLI8(*#<#<V2556:VAB:" @.UE96F)H,A@R8U4E:F])/DUK:$]8
-M8$E8240Y7S(;6DD;,C\M*5I0 W+^:SDB/WM\=6I,-"!I>FH_27IZ;V)A24MI
-M.4EJ>FY@*1TT/#(I7V(M7VQ:8GIZ9FY>8V!816Y@-C)8=VMJ34UK;75K36!J
-M7U@M27)?+4UP8V9X23(_8V-K:FIR;5\R(#9-8GQW)0X;-F)Y<FMF:&\V-EEU
-M@F))25A@8TU9:W)BJD4T-DQB:4PT&#Q@<G)Z<F)@-ALV25IB9GIK<#XP8EI<
-M:V _.R4^8DDM, %; 68 _E4M-EY816)Z:$UB<FIW324@-F!06G*(;UA)/S\E
-M27J":C\V.41C<'IR:$])7EI9:')I/" @241)=W!-/TUJ:UE)6$1-6TPV23XM
-M.6@[.4E98%A$<GR!>E4R+6MU=7)-(A5-;F@^+VN"<DQ))TEW,#9%>H9K23)%
-M:5Y)8#DE;^%J65IZ@U!-8%M-;EY:338M6W]B:TQ8:V)C:F9K:VIC539,6#Y%
-M<FI<>U@_16E:36)J9F9J5C8V/V)R;S8@&!56<FUJ:GJ&6C]B>G56,#XR*4EJ
-M7TE%6&%A64E-:&X[&TEB W*<9EQG.R 5)3E%1%QJ<EE56UA,7&MI6"U<:%A4
-M-@%% 6\ _E])6VYI86AR6D5J>G)_>#P5-&%>-C)J@F))+4EI6&Z#>G!A/CM@
-M46-C36)K=VI66G!W:$0M+2 ^@GIP8V-S:UM)2S\^8FIW8E@Y-EA8+45J8EE+
-M;H-]?4PV56IQ>GIB,#E64%DV%3YZ@FHM("UA1#85,GIK.4DP,$1H:#8;.?Y:
-M6$1:>F,Y26A%7GMZ<3\;-GIC;EI-3$U@:UQR<F)B.2 R)1@M9DPT8FI@-UI<
-M-EIC9G)F645)6%IJ;UA$.S)C<G)F<69U<U9%:WUJ150M(#9R=TD^26)@63\V
-M6FM>/S]$6F-B7TUH9D0@(#9)3UEB8DUC:%E,6FIR6#!;33F"23X!+0%6 /Y9
-M6$5-8GI[=SX=27IF>H!$%1M$<#L2.7]W-A(G8F)L@WIR<%AA?6%6/RE/:WN(
-M;4E;<FMB840I+7)Z@G)F?8)H/S\V/V!:<FIH:%M;5ATE6EI%8&IQ=7UB,%9L
-M>G9V<DEB:$TW238Y9H6#8%5%66IH,BE-7S!$9CXM6FY@,BG6/UA)6G)A.4EO
-M63]:>H)M($AS9G9K238B.7!F>H-J;3XR,A4.$D1F14QR;T5);C\M/G)Z<F-?
-M239+8F)6)5IJ:EI8;G5:66AB25N"<FIH3R E5G5O:58#2:<_66MH1#Y):& _
-M*1LV:VM8/RDV5EA'<&]86&9K;VA>:V@V34DY.S\!50%/ /Y@:UDT1&]Z>DD[
-M-DQK;&M9,C)C>E4@)6)W/R!$2$UC>GIB8E@_:G)A52LE16:">W=?7&MC<&D_
-M+6)Z@GIF=HIW230M/V)B:V)J:F)Q:"(5,BT^:F)$8W-C/T1-<FYZ<V-U=6H^
-M22T^:X:)<F)56&)S8#P^8%IH>FA66G-K6BWH-F!B1%M:/DUR8C\V:WIK)25:
-M;W)R;UXM+4E';7AN?V P1$$8#BUH5DEM<FA)8G!4/V9<;8!K8#])>GIR6&AJ
-M8V9S=G5F35A-.6.'9EQ07S8E/F1F:V)<2U8Y37ER22U$>V$V&Q@M8&@#294Y
-M/UE-6G=P.5IR>W=H7G!@5EI5)S\!=0%; /Y/:FQ>26%<<E!I22E;<#\_/D]Z
-M>ED[,D]R;45H8$5/<GI,1V Y6F)?:F @)3EW?7IJ1UEB9FM)*4UM?7IR>GU[
-M:30T16)G;VIB;F]U>E\[/"5%<EE$:6%/6&!;:V9<8VYU@GI8+1(I:'V%@F))
-M16QK6U0Y33]B=6)0:'IK:27+)5AK.3]-15MZ8TL_8W5A030^35Q9;UQ%/U99
-M=VYB;7 P268I&"U,:%E::V--66IP3&)07'IU6CE6=8IU:F]R8V)N<GIK8$DM
-M%3EZ V*R6DD[/VA/:W-K8U@V1&MI11LM85A5/#1);V [5FA@15E96FMP)TQN
-M?8)J7FMK8F!+)2<!@0%I /Y61&ML8VMI:%MC8#Y9<"T;+45W<EI6/S99:UMH
-M:%E8:GIF14P^23]$<(%<)2=B<EQB8#E0<&D_)4EH<G9N<GIZ<E@V26)J:VYF
-M9G**C()C:#]:@FM68TL_3W=N:F V26I]A85P*0X@3&IUD'=$)6IB1&E88"\Y
-M2# G37=<83G^&S96.45$36AJ341A;W):5G!?/F),8F)814AK@W!B9G),36]+
-M-DAS9D5B<$4Y7UEH6FIO;6UZ:#!):VLY+6N(;TU86UA+66E>-B56<EY%240[
-M.V-+8WIV<FM@6&MP9C0I)2=8:4EC>FD@86QI154_3V)K/T]<<HI[8FIW;&-$
-M@AL; 6L!:@#^9#E-<5IBA7=O:G):8G<[&"5);VI:65Y$14U@2%A)1&)M;V _
-M/#(@)6!U=U9"5EI%36@Y.6):/!@R2VEO:VIN=7AB-C988&-N<EQJ?86"<EIH
-M4W5V<#XB("]J<FI$+55R<'J#?UX@.VE:/WJ/3!LE239,8G)J9%DE%25-6$18
-M_E0Y+256,D5P:SXV8GI[8$E[=V%R;V)06TD_:GQU:V)R;F)K;%XE6F];6VM8
-M.59@:VMR<G%B:G)9+7)L63YG?7IL6DE%-C]K:388(F)F/U5@8&%82VMR;7N#
-M<EEB>WMF6!@8+4]A<'YP,EMJ;TU)1$5?:F)@676%@F)0:F)B88(R)0%8 6@ 
-M_FM).6MG8(%N8FIR:U!K6#(M8VIC34UO;UMA:UI-/SE:8V)@/S8R$C)63W)R
-M:FM9/V%K63E)-CLR-D5C8VIF9G5W:#8V3TE;;X)-/W)R9G(_7&9B<H(^&!@M
-M6VI8+2)8?VYJ;7IW-C9@:"]-@G<\*4E),#]LB8-X64\_1%M84/YK6S9$6#M$
-M8F]$-DQR<FA88F9O:H)V8&!%/FMZ=&U;:G)Z>GMW-#Y-6VEO84E)36MW;FUR
-M6FMR?S]X8$]N<G5V?7)@6$0V<WA)*2M)33!C:FIP-F!S:UMZDG=/8WJ"=6Y!
-M&#(M2W"">DEL<FI9-BTM/W!933EK?7IR8$E$9W>":%4!+0%- +IA6#!6<GJ"
-M<FIK;G)C7TQ516)@6F!-<6U-37MZ:4(V8%Y?7UI>,A@I23Y::W)Z;TDY3&E@
-M63\R)4M: V+^:FYR>F(^/U@V-DU[:DUJ;U!S8F)R:FJ#<$E51#Y812TE17)]
-M:EE::TU).5E$)UEZ6C!-:F P1'J">FIK<&$Y6G)J6"=986AK8VM-241K8EI)
-M8#]:6X)R=8AK15IR<FQ8-C)B@GUZ<%\^375Z:EL[,&F(<F9O1$]B<FAW86)R
-MPW9N<G5R>G=)&V]W8#Y@838E5F)B:RT^8VM/:HJ"6%9J@X-U<$M?7DE!8F],
-M:7IP8S\I,B5%<$DM3')Z<7 \)4QZ>G@!( $E /Y6.2T^:G5V<G=O6FQP6DU8
-M16EF14E;;VH^/W9U;U4V6FI02#E8,C(K+3984&)U>G!$/F)C:4\R&S]@:G)K
-M8FMN?W)A6EL_-C9J>F)N:C]J@FIZ<FIU<E!K6# [/C8I26Z"A6-::EI:24Q@
-M56%R6B(V66)?-EAZ=61F<G!$377^>ULG.4UMB'IR6F-S:6%)-G=;6SEK3V:%
-M<D]@>FYZ8" 2)UMR8GMW85MU>V-:&QM;@GUR<EE:;V9J8F9R=79C:6-:7'I4
-M$EE]6T5;<5E):V-:8C8T3VE%1'J*:3!%?'MV<FE,8G(_1%H^6E%C;V V1$0Y
-M;V@_16-Z9F)5+2UC@H)Z 38!,@#^:38M26-K7E-M8C!-8TT^245I8T5%7FQH
-M6$V#;EI8&SEK8TDV/BDM+1@M8#Y%:WIR:%I?85%%22DV6&IN=6I>7FMR>V]B
-M:$DP3&)<8F1;:W5J<FYJ<FE-:V-)+2TI$B5-=(9U:V)(259$3$E(:F\V25A9
-M8D1$<FY>3UQN:V-U_GUZ8$\Y6VYP=3E,@F%8.5AR<F,P341J<DTP17=M?6L\
-M*RDY7SEB9F]C;GI[=PD2,&IZ=7IF8FIB8F%K?&YR:&QP:6MW7A@Y?W _27%I
-M3&IM36)$24MA65AQ@G V/F-F=6)@)T5P5#\\/%DP*V!H-C]I6W)J35AJ>F),
-M6#\M38)Z>@(^ --F5"5):&!,35Q@+3!,,B4[26-8/UAB:U]86GI]8E@I+6!P
-M65IF.3(@%2EB-CY?:'%O8FMI23 [*3!-6EMK?V]:3&)R:F)B53\V.TU$8G)R
-M9FIZ;P-K_F)B7E\R.R )"2UF<G6">C9%;UI$+2=/8D5K<F)K8D1K9F!-,$1B
-M6G=Z;'6 66M%6G5N8'5%-D5;8H!L23]$:VM$(")@;'IU<FA@6$DV6#]:3411
-M;H,P("U6<G5U;7J :EA@;H)V;FQF>H!V@&,8&UAI-C!:@&]::$U:,&%92:I)
-M:7)M>F-I:4AF<UDV66E)+2D\:3XE6%HM+4UB@G)6:GIZ:T0Y24]B<G(!,@$M
-M /X^/AU%;VMC:&-I7D5F+2DR-DTM+6]_:$U,8GJ%>VA85EIJ65ER8$0T*TM@
-M-CY/87!P8G)_:#8E,#!I6SE:>G5J5EIB9G),6$DM)S8Y8&I:8EIR<EQ1:FYK
-M7E\V-CL."1LG-TA3@$4P66]A/BT^.3MS>F9C:EIP:FI,)38V,&+^6SEDC7]W
-M.41@@XEN-BUA8V)Z<EI))SY0;4LV7UE/<H)J;UH_-FA@6UXV,$AF:&!@6FIB
-M3&2!BGI--W)Z<V--3WV&=GUP/"DY7U E+WJ 8V-;8B5,6D5)<')1:F)J>$5%
-M<FMB:W<^(!LV8E8_35@R+3!C?7--9'V#<DD[37)O@F); 2D!&P#^/S(8-G=U
-M8VA;<F@_:"TM53LM$AM:BF]).5IK?8)Q9G1K<FI><FMI239M3S9%6VMJ;UI1
-M@'=8+3DI8V8V67IZ<F]B36N"3%@Y+3\_/EEB6%M-7&I),$1M;F)B24D^(# [
-M(!L;,')I2T1B6EM813(E8'IV:V),8X*":E9)*2!9_DDG1'V*:#E%8'9[8B4M
-M:%E:8E9-21L5/H%R:W)5(EEW4%EA-C9H<F-I7E5/6EIK<G!C.25,>H9[12UJ
-M;FM))S!WBGU]>VE>-D58+2=J:V!P9U!+8$4M/G>!;F)16G=C6%IZ>G)_21(.
-M&UII;G!?.QLB86YJ.T5U?7)).5AR@H)J3P%5 40 _F<V&!M9<DU)37%R7V([
-M)UA4)0D5,'IZ:$D^17)Z<F9R;&UN;FI/8V _<%0E+4EJ<FI6169B3S9$-V%?
-M.5ER9FYR8#EC>FEG*25)9EM;:DU::VIK5C8G8G)R:EIC8$EJ=V _1%]U>W!C
-M8TA-<DPI,$59;G]B+39W@FU_6" 58)EF35MUA6 V)UIU<ED;*59):6 ^630.
-M#B)B VKD21(M7T1,:$0;8H!L8V);8%LP16N :"4827)Z>F)%6VIK1!@I:X)U
-M?7MF:#8^:4E):4U$=8AI:W!%&R5$>X9W8%IK:$E$@(-ZAG P#A5$6WJ0;RT;
-M,DEW;S8P8%YB8$D^8(!J/P%; 7< _H!)*25)8DD_.4]Z@&9A14E?52 8(%9T
-M>FM$)4QL8EQ08V-F>FA$3UE-:%@I%1L_>G)F1$TY138V.TE8,%AB/UIJ7S9:
-M<EEL)0XE1%EB:CY-@GUW8D(I6&)R<DQ,2#!>?7IF:G)F:VIM=T0Y:EH@*41%
-M3'5C/REAAVUZ8"4@8_YL9EEUBEE@-DQN:VD_7FA-<'552QL)#B!)34P_7T19
-M7C8P6FTM8GIR6CY,6EHE%39J9QL88'I:6G)F8V-K2R M:WIV<'=L6"DO;W!:
-M:38B8HIZ:WAF.SM99X)]<V-:8"4;8']K;H-@(" V,FV2>C\I5$1:=SXM6#8P
-M65@V,'*"<#X!+P%J /Y_<G1D:&)8-B4I:Y!R8V!)6FA6.Q@;/VUM7SPY8DP^
-M+4E82')I/S998&A8/"D@-FAR;&AH25]$)2DM1"TV238Y8&!B;VM)8$0@*TM-
-M8E8;+7J*>FI,+3LV8H!C2S V-D^&>F-U:59%6WI;36IP4 XM6&IJ7%I)6GIU
-M:U@M/&/^:V]$:H9M:FAC8DAO15AT8'*!6&8M&!A$<&]?8&MK>GI:.T5H5EIB
-M5CDI*4];.1LM6F@I(FN -B=Z:VMQ8#8E+4]K>V-(:ED8%4R"<UDE&U9U=F-K
-M:4E/:6MU=GMP7U4@#BUB:5YZ:3P\-C9K@G):.S8_.6E--EA$&SY?21L_@F%>
-M 14!.0#^6EIW>G]R:#8;-%AU:UIW7TMH6TDI$BU:8E]F25]8-BU886)R;S8;
-M/VAP/S9>7D0Y6FMR=V!A6#PI(C8G*SPM-EA1:WIR<&E@,BE$8$PP#AMKC&UJ
-M8EA5-F"":TU-7B4=>FUQ>FU6-DUZ6T1F:V@@&$EZ<D\P6F)M<G!A-E1K_F-9
-M-TQ;6W)VA&H_8C\M3')U@F&(;SXE/VEH6FAK:G5Z<E],:&%H8#XE%2E)6& M
-M/FIB.R5R@S8.:VEC=W ^)39837)Q3&)%'1@V<FI)*39:7%MC8DE%6FMB8F9S
-M<&A>(!4@66]><F),8#!><'MW8F=98&AK7SE$4S9):&@R+8(V80(M /XM-FEN
-M@GUO025$6$Q--G):/FAO669$/UMO:F-B8V \+5AC>X-Q5"LV8'$_.6)_:$59
-M469U>6M;8$M>6#\T*QLV6$QC>G5W8ED_/#=H1"TP(%B*;6)-8V=-8G)B/UI:
-M.RER=&UZ<%A%2']B/VIJ;S8;-GIZ6"U86V)06V%:5FK^:DU)12=,=WV&>UM:
-M6#LY:G6#>'5\8UE4/D5866I@:V=R8F)J;W!U51@.&T1)8C\Y7S @&UIZ21M@
-M6EM[>F]/86%%8W=>:#8@(#]Q:U9-24AZ>V!;)2!9:UA)/D4[#A@8-#)9<FMS
-M;%MH-F!O>GIK:$UA=7)R=%@M,%9R@F$_@BM+ 4D!+0#^,BE):G6">E4M7FA$
-M33YB3S9:<$]B;TU-<H!K9F]J5C8Y37J%<FA95&AP24EC?'-8/SE(9GIR8F-:
-M:&M:9#P;+4E)3')W;6)$+T0Y:CXE,AL^<'-B16%L<'IU33!;6DL@3'IU?7UP
-M3$EK;V-H6V@\)4EU=6A-7V)H13E(<&);HVI;6V V.7*"@G);8V-F6&E;:5]'
-M<FMF=TTB6$QB.5E-5D5: W+:@5@2#A4^8&]?24DE%1M8;UHV:C ^<FUM:GIK
-M.5IW8TT_*2D^8UI47UA6:GMK5CM$66A:369A2RDT/%Y%2TE$:G!:65568WUZ
-M:EI9/S]W=8J%22DV6GIO7CM6 5@!.P#^1!LT26-R<E@M66):7V-H-B5)8$Q/
-M8E@Y8H)Z:G!P7%LV,'*"<4UB6F)R63Y$=X%J6#LM8'!C:%I:2&-<<%0M+3Y)
-M269J:EI?/EE$6%8@%1M)/V-@+45B<GA]:TU?8V [,EER;GR'8$U96VMP3$PI
-M)6*#:V9B8FIJ33!9@7)0VF)H8&E8,&IU>GM04&-H:VMJ:E\P8G=B<$0V25I6
-M+3])+25):V-R>F$=#A@M27)R:V$_-%AK:U@E1"4M1450;8!O.4UR;%M9/RTV
-M1#\_65]U=G5J5CY)/FEG.0-CHVEJ<7=B83\;-EAB6$DV.7)Z8D4_)1M;?(:*
-M:$1$16EC8$E6 5\!60#8:6!8:TUK<$D=16A966-W6B _8$587T]+6GUZ9TUK
-M8V9$/UQU:CE%.5IK83\\37!P:%\_35M)869%7V!,6DT_-EAF3VEB;%!;6FJ 
-M>F=8,BU824U?-C]$9P-R_F-D<FI:23EA8VZ"<E5$16-S6C<I)4E]:F-B8G)Z
-M21U:@WU,6FMC8G!@:F)R?69::$Q;8F9N:#Y,9&IR7UE?6F!%1#L8#CYJ8&IK
-M9D$T1#8_>H6"<EE);WIJ52 ;138\-$EB9G)8;&YK86!A2V%)250P6G)]@VA%
-M,"TM8W=I6:5;6FIZ@8E[640@%2UN:4D^,&)J:5XY(#!$:G6";EE-25MB8U9?
-M 4T!:P"O@&]98C]@:5HV16A98S]B:$E):6!86UAI7G)U6SE,8V),245J<F!$
-M/U9;5DEI:6,#8OYH;V!-6V I26]@23Y$&SEI4&-B=4]C15&*C()W239)6V-B
-M25Y916J">F)9<GI/22T_8DE;@G)J:$\5(DUO+4EF34E$.6^)8"U,@GPY25I?
-M1W-K:$1B>FYL8F!-6DUC;T1-6UM-4'!B6F--5C8@($5H:%8T,C(;*U1,:GA]
-M>EG.3'*"<F,_,EDV13]:;TQ98GIN4&IQ6V)Z8F-D*3Y99GI?/D0I(#YC>E!9
-M6UIN@H)_:54@#B5A<$E$25A$8&QI.RU6:&9]>V)).3E8:$U8 5D!=@#^BG=/
-M8R4V5E]%8&I,:U@V6$DY8&!8/T]R>GV":#\_8VI@23];:F!6:&!8/S]K>G)K
-M3TUR@GIJ:VL_6FMK:$D\*3];8')R:E!B24EU?7V*;D])35IB3&%)&U"*BF9(
-M6GIW.2TV33ECAV9<3VTM%3Y?6%AB.2 8%3EP>F]F?84Y_B4B/CEB86-)2&MC
-M7D1I84DK8V=B:FMC+2UB8D]C8U@W24U:;W)H7E561#9)+3YJ;G):4&YZ=7IK
-M63\V56!I<F8_1'=K1%QI+3!W?%M8/%A98VM)+39;(!(V:%I86EMN>VYM<%DG
-A&#9B<$M)66 _,%I[<"TV6F)R@GIP5#!)6H)@6 %9 74 
- 
-end
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/https_svn_python_org_root.pem b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/https_svn_python_org_root.pem
deleted file mode 100644
index e073961..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/https_svn_python_org_root.pem
+++ /dev/null
@@ -1,41 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290
-IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB
-IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA
-Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO
-BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi
-MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ
-ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
-CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ
-8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6
-zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y
-fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7
-w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc
-G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k
-epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q
-laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ
-QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU
-fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826
-YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w
-ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY
-gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe
-MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0
-IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy
-dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw
-czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0
-dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl
-aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC
-AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg
-b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB
-ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc
-nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg
-18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c
-gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl
-Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY
-sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T
-SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF
-CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum
-GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk
-zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW
-omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD
------END CERTIFICATE-----
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/ieee754.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/ieee754.txt
deleted file mode 100644
index 1822dcf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/ieee754.txt
+++ /dev/null
@@ -1,185 +0,0 @@
-======================================
-Python IEEE 754 floating point support
-======================================
-
->>> from sys import float_info as FI
->>> from math import *
->>> PI = pi
->>> E = e
-
-You must never compare two floats with == because you are not going to get
-what you expect. We treat two floats as equal if the difference between them
-is small than epsilon.
->>> EPS = 1E-15
->>> def equal(x, y):
-...     """Almost equal helper for floats"""
-...     return abs(x - y) < EPS
-
-
-NaNs and INFs
-=============
-
-In Python 2.6 and newer NaNs (not a number) and infinity can be constructed
-from the strings 'inf' and 'nan'.
-
->>> INF = float('inf')
->>> NINF = float('-inf')
->>> NAN = float('nan')
-
->>> INF
-inf
->>> NINF
--inf
->>> NAN
-nan
-
-The math module's ``isnan`` and ``isinf`` functions can be used to detect INF
-and NAN:
->>> isinf(INF), isinf(NINF), isnan(NAN)
-(True, True, True)
->>> INF == -NINF
-True
-
-Infinity
---------
-
-Ambiguous operations like ``0 * inf`` or ``inf - inf`` result in NaN.
->>> INF * 0
-nan
->>> INF - INF
-nan
->>> INF / INF
-nan
-
-However unambigous operations with inf return inf:
->>> INF * INF
-inf
->>> 1.5 * INF
-inf
->>> 0.5 * INF
-inf
->>> INF / 1000
-inf
-
-Not a Number
-------------
-
-NaNs are never equal to another number, even itself
->>> NAN == NAN
-False
->>> NAN < 0
-False
->>> NAN >= 0
-False
-
-All operations involving a NaN return a NaN except for nan**0 and 1**nan.
->>> 1 + NAN
-nan
->>> 1 * NAN
-nan
->>> 0 * NAN
-nan
->>> 1 ** NAN
-1.0
->>> NAN ** 0
-1.0
->>> 0 ** NAN
-nan
->>> (1.0 + FI.epsilon) * NAN
-nan
-
-Misc Functions
-==============
-
-The power of 1 raised to x is always 1.0, even for special values like 0,
-infinity and NaN.
-
->>> pow(1, 0)
-1.0
->>> pow(1, INF)
-1.0
->>> pow(1, -INF)
-1.0
->>> pow(1, NAN)
-1.0
-
-The power of 0 raised to x is defined as 0, if x is positive. Negative
-values are a domain error or zero division error and NaN result in a
-silent NaN.
-
->>> pow(0, 0)
-1.0
->>> pow(0, INF)
-0.0
->>> pow(0, -INF)
-Traceback (most recent call last):
-...
-ValueError: math domain error
->>> 0 ** -1
-Traceback (most recent call last):
-...
-ZeroDivisionError: 0.0 cannot be raised to a negative power
->>> pow(0, NAN)
-nan
-
-
-Trigonometric Functions
-=======================
-
->>> sin(INF)
-Traceback (most recent call last):
-...
-ValueError: math domain error
->>> sin(NINF)
-Traceback (most recent call last):
-...
-ValueError: math domain error
->>> sin(NAN)
-nan
->>> cos(INF)
-Traceback (most recent call last):
-...
-ValueError: math domain error
->>> cos(NINF)
-Traceback (most recent call last):
-...
-ValueError: math domain error
->>> cos(NAN)
-nan
->>> tan(INF)
-Traceback (most recent call last):
-...
-ValueError: math domain error
->>> tan(NINF)
-Traceback (most recent call last):
-...
-ValueError: math domain error
->>> tan(NAN)
-nan
-
-Neither pi nor tan are exact, but you can assume that tan(pi/2) is a large value
-and tan(pi) is a very small value:
->>> tan(PI/2) > 1E10
-True
->>> -tan(-PI/2) > 1E10
-True
->>> tan(PI) < 1E-15
-True
-
->>> asin(NAN), acos(NAN), atan(NAN)
-(nan, nan, nan)
->>> asin(INF), asin(NINF)
-Traceback (most recent call last):
-...
-ValueError: math domain error
->>> acos(INF), acos(NINF)
-Traceback (most recent call last):
-...
-ValueError: math domain error
->>> equal(atan(INF), PI/2), equal(atan(NINF), -PI/2)
-(True, True)
-
-
-Hyberbolic Functions
-====================
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/infinite_reload.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/infinite_reload.py
deleted file mode 100644
index 7943cd0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/infinite_reload.py
+++ /dev/null
@@ -1,8 +0,0 @@
-# For testing http://python.org/sf/742342, which reports that Python
-#  segfaults (infinite recursion in C) in the presence of infinite
-#  reload()ing. This module is imported by test_import.py:test_infinite_reload
-#  to make sure this doesn't happen any more.
-
-import imp
-import infinite_reload
-imp.reload(infinite_reload)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/inspect_fodder.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/inspect_fodder.py
deleted file mode 100644
index 6223315..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/inspect_fodder.py
+++ /dev/null
@@ -1,56 +0,0 @@
-# line 1
-'A module docstring.'
-
-import sys, inspect
-# line 5
-
-# line 7
-def spam(a, b, c, d=3, (e, (f,))=(4, (5,)), *g, **h):
-    eggs(b + d, c + f)
-
-# line 11
-def eggs(x, y):
-    "A docstring."
-    global fr, st
-    fr = inspect.currentframe()
-    st = inspect.stack()
-    p = x
-    q = y // 0
-
-# line 20
-class StupidGit:
-    """A longer,
-
-    indented
-
-    docstring."""
-# line 27
-
-    def abuse(self, a, b, c):
-        """Another
-
-\tdocstring
-
-        containing
-
-\ttabs
-\t
-        """
-        self.argue(a, b, c)
-# line 40
-    def argue(self, a, b, c):
-        try:
-            spam(a, b, c)
-        except:
-            self.ex = sys.exc_info()
-            self.tr = inspect.trace()
-
-# line 48
-class MalodorousPervert(StupidGit):
-    pass
-
-class ParrotDroppings:
-    pass
-
-class FesteringGob(MalodorousPervert, ParrotDroppings):
-    pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/inspect_fodder2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/inspect_fodder2.py
deleted file mode 100644
index db06abb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/inspect_fodder2.py
+++ /dev/null
@@ -1,99 +0,0 @@
-# line 1
-def wrap(foo=None):
-    def wrapper(func):
-        return func
-    return wrapper
-
-# line 7
-def replace(func):
-    def insteadfunc():
-        print 'hello'
-    return insteadfunc
-
-# line 13
-@wrap()
-@wrap(wrap)
-def wrapped():
-    pass
-
-# line 19
-@replace
-def gone():
-    pass
-
-# line 24
-oll = lambda m: m
-
-# line 27
-tll = lambda g: g and \
-g and \
-g
-
-# line 32
-tlli = lambda d: d and \
-    d
-
-# line 36
-def onelinefunc(): pass
-
-# line 39
-def manyargs(arg1, arg2,
-arg3, arg4): pass
-
-# line 43
-def twolinefunc(m): return m and \
-m
-
-# line 47
-a = [None,
-     lambda x: x,
-     None]
-
-# line 52
-def setfunc(func):
-    globals()["anonymous"] = func
-setfunc(lambda x, y: x*y)
-
-# line 57
-def with_comment():  # hello
-    world
-
-# line 61
-multiline_sig = [
-    lambda (x,
-            y): x+y,
-    None,
-    ]
-
-# line 68
-def func69():
-    class cls70:
-        def func71():
-            pass
-    return cls70
-extra74 = 74
-
-# line 76
-def func77(): pass
-(extra78, stuff78) = 'xy'
-extra79 = 'stop'
-
-# line 81
-class cls82:
-    def func83(): pass
-(extra84, stuff84) = 'xy'
-extra85 = 'stop'
-
-# line 87
-def func88():
-    # comment
-    return 90
-
-# line 92
-def f():
-    class X:
-        def g():
-            "doc"
-            return 42
-    return X
-method_in_dynamic_class = f().g.im_func
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/keycert.pem b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/keycert.pem
deleted file mode 100644
index bfa28de..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/keycert.pem
+++ /dev/null
@@ -1,32 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXwIBAAKBgQC8ddrhm+LutBvjYcQlnH21PPIseJ1JVG2HMmN2CmZk2YukO+9L
-opdJhTvbGfEj0DQs1IE8M+kTUyOmuKfVrFMKwtVeCJphrAnhoz7TYOuLBSqt7lVH
-fhi/VwovESJlaBOp+WMnfhcduPEYHYx/6cnVapIkZnLt30zu2um+DzA9jQIDAQAB
-AoGBAK0FZpaKj6WnJZN0RqhhK+ggtBWwBnc0U/ozgKz2j1s3fsShYeiGtW6CK5nU
-D1dZ5wzhbGThI7LiOXDvRucc9n7vUgi0alqPQ/PFodPxAN/eEYkmXQ7W2k7zwsDA
-IUK0KUhktQbLu8qF/m8qM86ba9y9/9YkXuQbZ3COl5ahTZrhAkEA301P08RKv3KM
-oXnGU2UHTuJ1MAD2hOrPxjD4/wxA/39EWG9bZczbJyggB4RHu0I3NOSFjAm3HQm0
-ANOu5QK9owJBANgOeLfNNcF4pp+UikRFqxk5hULqRAWzVxVrWe85FlPm0VVmHbb/
-loif7mqjU8o1jTd/LM7RD9f2usZyE2psaw8CQQCNLhkpX3KO5kKJmS9N7JMZSc4j
-oog58yeYO8BBqKKzpug0LXuQultYv2K4veaIO04iL9VLe5z9S/Q1jaCHBBuXAkEA
-z8gjGoi1AOp6PBBLZNsncCvcV/0aC+1se4HxTNo2+duKSDnbq+ljqOM+E7odU+Nq
-ewvIWOG//e8fssd0mq3HywJBAJ8l/c8GVmrpFTx8r/nZ2Pyyjt3dH1widooDXYSV
-q6Gbf41Llo5sYAtmxdndTLASuHKecacTgZVhy0FryZpLKrU=
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIICpzCCAhCgAwIBAgIJAP+qStv1cIGNMA0GCSqGSIb3DQEBBQUAMIGJMQswCQYD
-VQQGEwJVUzERMA8GA1UECBMIRGVsYXdhcmUxEzARBgNVBAcTCldpbG1pbmd0b24x
-IzAhBgNVBAoTGlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uMQwwCgYDVQQLEwNT
-U0wxHzAdBgNVBAMTFnNvbWVtYWNoaW5lLnB5dGhvbi5vcmcwHhcNMDcwODI3MTY1
-NDUwWhcNMTMwMjE2MTY1NDUwWjCBiTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCERl
-bGF3YXJlMRMwEQYDVQQHEwpXaWxtaW5ndG9uMSMwIQYDVQQKExpQeXRob24gU29m
-dHdhcmUgRm91bmRhdGlvbjEMMAoGA1UECxMDU1NMMR8wHQYDVQQDExZzb21lbWFj
-aGluZS5weXRob24ub3JnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8ddrh
-m+LutBvjYcQlnH21PPIseJ1JVG2HMmN2CmZk2YukO+9LopdJhTvbGfEj0DQs1IE8
-M+kTUyOmuKfVrFMKwtVeCJphrAnhoz7TYOuLBSqt7lVHfhi/VwovESJlaBOp+WMn
-fhcduPEYHYx/6cnVapIkZnLt30zu2um+DzA9jQIDAQABoxUwEzARBglghkgBhvhC
-AQEEBAMCBkAwDQYJKoZIhvcNAQEFBQADgYEAF4Q5BVqmCOLv1n8je/Jw9K669VXb
-08hyGzQhkemEBYQd6fzQ9A/1ZzHkJKb1P6yreOLSEh4KcxYPyrLRC1ll8nr5OlCx
-CMhKkTnR6qBsdNV0XtdU2+N25hqW+Ma4ZeqsN/iiJVCGNOZGnvQuvCAGWF8+J/f/
-iHkC6gGdBJhogs4=
------END CERTIFICATE-----
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/README.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/README.txt
deleted file mode 100644
index 0662e0f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/README.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-This directory contains test cases that are known to leak references.
-The idea is that you can import these modules while in the interpreter
-and call the leak function repeatedly.  This will only be helpful if
-the interpreter was built in debug mode.  If the total ref count
-doesn't increase, the bug has been fixed and the file should be removed
-from the repository.
-
-Note:  be careful to check for cyclic garbage.  Sometimes it may be helpful
-to define the leak function like:
-
-def leak():
-    def inner_leak():
-        # this is the function that leaks, but also creates cycles
-    inner_leak()
-    gc.collect() ; gc.collect() ; gc.collect()
-
-Here's an example interpreter session for test_gestalt which still leaks:
-
->>> from test.leakers.test_gestalt import leak
-[24275 refs]
->>> leak()
-[28936 refs]
->>> leak()
-[28938 refs]
->>> leak()
-[28940 refs]
->>> 
-
-Once the leak is fixed, the test case should be moved into an appropriate
-test (even if it was originally from the test suite).  This ensures the
-regression doesn't happen again.  And if it does, it should be easier
-to track down.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_ctypes.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_ctypes.py
deleted file mode 100644
index db37d25..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_ctypes.py
+++ /dev/null
@@ -1,16 +0,0 @@
-
-# Taken from Lib/ctypes/test/test_keeprefs.py, PointerToStructure.test().
-# When this leak is fixed, remember to remove from Misc/build.sh LEAKY_TESTS.
-
-from ctypes import Structure, c_int, POINTER
-import gc
-
-def leak_inner():
-    class POINT(Structure):
-        _fields_ = [("x", c_int)]
-    class RECT(Structure):
-        _fields_ = [("a", POINTER(POINT))]
-
-def leak():
-    leak_inner()
-    gc.collect()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_dictself.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_dictself.py
deleted file mode 100644
index 354b242..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_dictself.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''Test case for "self.__dict__ = self" circular reference bug (#1469629)'''
-
-import gc
-
-class LeakyDict(dict):
-    pass
-
-def leak():
-    ld = LeakyDict()
-    ld.__dict__ = ld
-    del ld
-    gc.collect(); gc.collect(); gc.collect()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_gestalt.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_gestalt.py
deleted file mode 100644
index ac6522b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_gestalt.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import sys
-
-if sys.platform != 'darwin':
-    raise ValueError, "This test only leaks on Mac OS X"
-
-def leak():
-    # taken from platform._mac_ver_lookup()
-    from gestalt import gestalt
-    import MacOS
-
-    try:
-        gestalt('sysu')
-    except MacOS.Error:
-        pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_selftype.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_selftype.py
deleted file mode 100644
index 2d63ec6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/leakers/test_selftype.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# Reference cycles involving only the ob_type field are rather uncommon
-# but possible.  Inspired by SF bug 1469629.
-
-import gc
-
-def leak():
-    class T(type):
-        pass
-    class U(type):
-        __metaclass__ = T
-    U.__class__ = U
-    del U
-    gc.collect(); gc.collect(); gc.collect()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/list_tests.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/list_tests.py
deleted file mode 100644
index 6c97a9d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/list_tests.py
+++ /dev/null
@@ -1,534 +0,0 @@
-"""
-Tests common to list and UserList.UserList
-"""
-
-import sys
-import os
-
-from test import test_support, seq_tests
-
-class CommonTest(seq_tests.CommonTest):
-
-    def test_init(self):
-        # Iterable arg is optional
-        self.assertEqual(self.type2test([]), self.type2test())
-
-        # Init clears previous values
-        a = self.type2test([1, 2, 3])
-        a.__init__()
-        self.assertEqual(a, self.type2test([]))
-
-        # Init overwrites previous values
-        a = self.type2test([1, 2, 3])
-        a.__init__([4, 5, 6])
-        self.assertEqual(a, self.type2test([4, 5, 6]))
-
-        # Mutables always return a new object
-        b = self.type2test(a)
-        self.assertNotEqual(id(a), id(b))
-        self.assertEqual(a, b)
-
-    def test_repr(self):
-        l0 = []
-        l2 = [0, 1, 2]
-        a0 = self.type2test(l0)
-        a2 = self.type2test(l2)
-
-        self.assertEqual(str(a0), str(l0))
-        self.assertEqual(repr(a0), repr(l0))
-        self.assertEqual(repr(a2), repr(l2))
-        self.assertEqual(str(a2), "[0, 1, 2]")
-        self.assertEqual(repr(a2), "[0, 1, 2]")
-
-        a2.append(a2)
-        a2.append(3)
-        self.assertEqual(str(a2), "[0, 1, 2, [...], 3]")
-        self.assertEqual(repr(a2), "[0, 1, 2, [...], 3]")
-
-        l0 = []
-        for i in xrange(sys.getrecursionlimit() + 100):
-            l0 = [l0]
-        self.assertRaises(RuntimeError, repr, l0)
-
-    def test_print(self):
-        d = self.type2test(xrange(200))
-        d.append(d)
-        d.extend(xrange(200,400))
-        d.append(d)
-        d.append(400)
-        try:
-            with open(test_support.TESTFN, "wb") as fo:
-                print >> fo, d,
-            with open(test_support.TESTFN, "rb") as fo:
-                self.assertEqual(fo.read(), repr(d))
-        finally:
-            os.remove(test_support.TESTFN)
-
-    def test_set_subscript(self):
-        a = self.type2test(range(20))
-        self.assertRaises(ValueError, a.__setitem__, slice(0, 10, 0), [1,2,3])
-        self.assertRaises(TypeError, a.__setitem__, slice(0, 10), 1)
-        self.assertRaises(ValueError, a.__setitem__, slice(0, 10, 2), [1,2])
-        self.assertRaises(TypeError, a.__getitem__, 'x', 1)
-        a[slice(2,10,3)] = [1,2,3]
-        self.assertEqual(a, self.type2test([0, 1, 1, 3, 4, 2, 6, 7, 3,
-                                            9, 10, 11, 12, 13, 14, 15,
-                                            16, 17, 18, 19]))
-
-    def test_reversed(self):
-        a = self.type2test(range(20))
-        r = reversed(a)
-        self.assertEqual(list(r), self.type2test(range(19, -1, -1)))
-        self.assertRaises(StopIteration, r.next)
-        self.assertEqual(list(reversed(self.type2test())),
-                         self.type2test())
-        # Bug 3689: make sure list-reversed-iterator doesn't have __len__
-        self.assertRaises(TypeError, len, reversed([1,2,3]))
-
-    def test_setitem(self):
-        a = self.type2test([0, 1])
-        a[0] = 0
-        a[1] = 100
-        self.assertEqual(a, self.type2test([0, 100]))
-        a[-1] = 200
-        self.assertEqual(a, self.type2test([0, 200]))
-        a[-2] = 100
-        self.assertEqual(a, self.type2test([100, 200]))
-        self.assertRaises(IndexError, a.__setitem__, -3, 200)
-        self.assertRaises(IndexError, a.__setitem__, 2, 200)
-
-        a = self.type2test([])
-        self.assertRaises(IndexError, a.__setitem__, 0, 200)
-        self.assertRaises(IndexError, a.__setitem__, -1, 200)
-        self.assertRaises(TypeError, a.__setitem__)
-
-        a = self.type2test([0,1,2,3,4])
-        a[0L] = 1
-        a[1L] = 2
-        a[2L] = 3
-        self.assertEqual(a, self.type2test([1,2,3,3,4]))
-        a[0] = 5
-        a[1] = 6
-        a[2] = 7
-        self.assertEqual(a, self.type2test([5,6,7,3,4]))
-        a[-2L] = 88
-        a[-1L] = 99
-        self.assertEqual(a, self.type2test([5,6,7,88,99]))
-        a[-2] = 8
-        a[-1] = 9
-        self.assertEqual(a, self.type2test([5,6,7,8,9]))
-
-    def test_delitem(self):
-        a = self.type2test([0, 1])
-        del a[1]
-        self.assertEqual(a, [0])
-        del a[0]
-        self.assertEqual(a, [])
-
-        a = self.type2test([0, 1])
-        del a[-2]
-        self.assertEqual(a, [1])
-        del a[-1]
-        self.assertEqual(a, [])
-
-        a = self.type2test([0, 1])
-        self.assertRaises(IndexError, a.__delitem__, -3)
-        self.assertRaises(IndexError, a.__delitem__, 2)
-
-        a = self.type2test([])
-        self.assertRaises(IndexError, a.__delitem__, 0)
-
-        self.assertRaises(TypeError, a.__delitem__)
-
-    def test_setslice(self):
-        l = [0, 1]
-        a = self.type2test(l)
-
-        for i in range(-3, 4):
-            a[:i] = l[:i]
-            self.assertEqual(a, l)
-            a2 = a[:]
-            a2[:i] = a[:i]
-            self.assertEqual(a2, a)
-            a[i:] = l[i:]
-            self.assertEqual(a, l)
-            a2 = a[:]
-            a2[i:] = a[i:]
-            self.assertEqual(a2, a)
-            for j in range(-3, 4):
-                a[i:j] = l[i:j]
-                self.assertEqual(a, l)
-                a2 = a[:]
-                a2[i:j] = a[i:j]
-                self.assertEqual(a2, a)
-
-        aa2 = a2[:]
-        aa2[:0] = [-2, -1]
-        self.assertEqual(aa2, [-2, -1, 0, 1])
-        aa2[0:] = []
-        self.assertEqual(aa2, [])
-
-        a = self.type2test([1, 2, 3, 4, 5])
-        a[:-1] = a
-        self.assertEqual(a, self.type2test([1, 2, 3, 4, 5, 5]))
-        a = self.type2test([1, 2, 3, 4, 5])
-        a[1:] = a
-        self.assertEqual(a, self.type2test([1, 1, 2, 3, 4, 5]))
-        a = self.type2test([1, 2, 3, 4, 5])
-        a[1:-1] = a
-        self.assertEqual(a, self.type2test([1, 1, 2, 3, 4, 5, 5]))
-
-        a = self.type2test([])
-        a[:] = tuple(range(10))
-        self.assertEqual(a, self.type2test(range(10)))
-
-        self.assertRaises(TypeError, a.__setslice__, 0, 1, 5)
-        self.assertRaises(TypeError, a.__setitem__, slice(0, 1, 5))
-
-        self.assertRaises(TypeError, a.__setslice__)
-        self.assertRaises(TypeError, a.__setitem__)
-
-    def test_delslice(self):
-        a = self.type2test([0, 1])
-        del a[1:2]
-        del a[0:1]
-        self.assertEqual(a, self.type2test([]))
-
-        a = self.type2test([0, 1])
-        del a[1L:2L]
-        del a[0L:1L]
-        self.assertEqual(a, self.type2test([]))
-
-        a = self.type2test([0, 1])
-        del a[-2:-1]
-        self.assertEqual(a, self.type2test([1]))
-
-        a = self.type2test([0, 1])
-        del a[-2L:-1L]
-        self.assertEqual(a, self.type2test([1]))
-
-        a = self.type2test([0, 1])
-        del a[1:]
-        del a[:1]
-        self.assertEqual(a, self.type2test([]))
-
-        a = self.type2test([0, 1])
-        del a[1L:]
-        del a[:1L]
-        self.assertEqual(a, self.type2test([]))
-
-        a = self.type2test([0, 1])
-        del a[-1:]
-        self.assertEqual(a, self.type2test([0]))
-
-        a = self.type2test([0, 1])
-        del a[-1L:]
-        self.assertEqual(a, self.type2test([0]))
-
-        a = self.type2test([0, 1])
-        del a[:]
-        self.assertEqual(a, self.type2test([]))
-
-    def test_append(self):
-        a = self.type2test([])
-        a.append(0)
-        a.append(1)
-        a.append(2)
-        self.assertEqual(a, self.type2test([0, 1, 2]))
-
-        self.assertRaises(TypeError, a.append)
-
-    def test_extend(self):
-        a1 = self.type2test([0])
-        a2 = self.type2test((0, 1))
-        a = a1[:]
-        a.extend(a2)
-        self.assertEqual(a, a1 + a2)
-
-        a.extend(self.type2test([]))
-        self.assertEqual(a, a1 + a2)
-
-        a.extend(a)
-        self.assertEqual(a, self.type2test([0, 0, 1, 0, 0, 1]))
-
-        a = self.type2test("spam")
-        a.extend("eggs")
-        self.assertEqual(a, list("spameggs"))
-
-        self.assertRaises(TypeError, a.extend, None)
-
-        self.assertRaises(TypeError, a.extend)
-
-    def test_insert(self):
-        a = self.type2test([0, 1, 2])
-        a.insert(0, -2)
-        a.insert(1, -1)
-        a.insert(2, 0)
-        self.assertEqual(a, [-2, -1, 0, 0, 1, 2])
-
-        b = a[:]
-        b.insert(-2, "foo")
-        b.insert(-200, "left")
-        b.insert(200, "right")
-        self.assertEqual(b, self.type2test(["left",-2,-1,0,0,"foo",1,2,"right"]))
-
-        self.assertRaises(TypeError, a.insert)
-
-    def test_pop(self):
-        a = self.type2test([-1, 0, 1])
-        a.pop()
-        self.assertEqual(a, [-1, 0])
-        a.pop(0)
-        self.assertEqual(a, [0])
-        self.assertRaises(IndexError, a.pop, 5)
-        a.pop(0)
-        self.assertEqual(a, [])
-        self.assertRaises(IndexError, a.pop)
-        self.assertRaises(TypeError, a.pop, 42, 42)
-        a = self.type2test([0, 10, 20, 30, 40])
-
-    def test_remove(self):
-        a = self.type2test([0, 0, 1])
-        a.remove(1)
-        self.assertEqual(a, [0, 0])
-        a.remove(0)
-        self.assertEqual(a, [0])
-        a.remove(0)
-        self.assertEqual(a, [])
-
-        self.assertRaises(ValueError, a.remove, 0)
-
-        self.assertRaises(TypeError, a.remove)
-
-        class BadExc(Exception):
-            pass
-
-        class BadCmp:
-            def __eq__(self, other):
-                if other == 2:
-                    raise BadExc()
-                return False
-
-        a = self.type2test([0, 1, 2, 3])
-        self.assertRaises(BadExc, a.remove, BadCmp())
-
-        class BadCmp2:
-            def __eq__(self, other):
-                raise BadExc()
-
-        d = self.type2test('abcdefghcij')
-        d.remove('c')
-        self.assertEqual(d, self.type2test('abdefghcij'))
-        d.remove('c')
-        self.assertEqual(d, self.type2test('abdefghij'))
-        self.assertRaises(ValueError, d.remove, 'c')
-        self.assertEqual(d, self.type2test('abdefghij'))
-
-        # Handle comparison errors
-        d = self.type2test(['a', 'b', BadCmp2(), 'c'])
-        e = self.type2test(d)
-        self.assertRaises(BadExc, d.remove, 'c')
-        for x, y in zip(d, e):
-            # verify that original order and values are retained.
-            self.assertIs(x, y)
-
-    def test_count(self):
-        a = self.type2test([0, 1, 2])*3
-        self.assertEqual(a.count(0), 3)
-        self.assertEqual(a.count(1), 3)
-        self.assertEqual(a.count(3), 0)
-
-        self.assertRaises(TypeError, a.count)
-
-        class BadExc(Exception):
-            pass
-
-        class BadCmp:
-            def __eq__(self, other):
-                if other == 2:
-                    raise BadExc()
-                return False
-
-        self.assertRaises(BadExc, a.count, BadCmp())
-
-    def test_index(self):
-        u = self.type2test([0, 1])
-        self.assertEqual(u.index(0), 0)
-        self.assertEqual(u.index(1), 1)
-        self.assertRaises(ValueError, u.index, 2)
-
-        u = self.type2test([-2, -1, 0, 0, 1, 2])
-        self.assertEqual(u.count(0), 2)
-        self.assertEqual(u.index(0), 2)
-        self.assertEqual(u.index(0, 2), 2)
-        self.assertEqual(u.index(-2, -10), 0)
-        self.assertEqual(u.index(0, 3), 3)
-        self.assertEqual(u.index(0, 3, 4), 3)
-        self.assertRaises(ValueError, u.index, 2, 0, -10)
-
-        self.assertRaises(TypeError, u.index)
-
-        class BadExc(Exception):
-            pass
-
-        class BadCmp:
-            def __eq__(self, other):
-                if other == 2:
-                    raise BadExc()
-                return False
-
-        a = self.type2test([0, 1, 2, 3])
-        self.assertRaises(BadExc, a.index, BadCmp())
-
-        a = self.type2test([-2, -1, 0, 0, 1, 2])
-        self.assertEqual(a.index(0), 2)
-        self.assertEqual(a.index(0, 2), 2)
-        self.assertEqual(a.index(0, -4), 2)
-        self.assertEqual(a.index(-2, -10), 0)
-        self.assertEqual(a.index(0, 3), 3)
-        self.assertEqual(a.index(0, -3), 3)
-        self.assertEqual(a.index(0, 3, 4), 3)
-        self.assertEqual(a.index(0, -3, -2), 3)
-        self.assertEqual(a.index(0, -4*sys.maxint, 4*sys.maxint), 2)
-        self.assertRaises(ValueError, a.index, 0, 4*sys.maxint,-4*sys.maxint)
-        self.assertRaises(ValueError, a.index, 2, 0, -10)
-        a.remove(0)
-        self.assertRaises(ValueError, a.index, 2, 0, 4)
-        self.assertEqual(a, self.type2test([-2, -1, 0, 1, 2]))
-
-        # Test modifying the list during index's iteration
-        class EvilCmp:
-            def __init__(self, victim):
-                self.victim = victim
-            def __eq__(self, other):
-                del self.victim[:]
-                return False
-        a = self.type2test()
-        a[:] = [EvilCmp(a) for _ in xrange(100)]
-        # This used to seg fault before patch #1005778
-        self.assertRaises(ValueError, a.index, None)
-
-    def test_reverse(self):
-        u = self.type2test([-2, -1, 0, 1, 2])
-        u2 = u[:]
-        u.reverse()
-        self.assertEqual(u, [2, 1, 0, -1, -2])
-        u.reverse()
-        self.assertEqual(u, u2)
-
-        self.assertRaises(TypeError, u.reverse, 42)
-
-    def test_sort(self):
-        with test_support.check_py3k_warnings(
-                ("the cmp argument is not supported", DeprecationWarning)):
-            self._test_sort()
-
-    def _test_sort(self):
-        u = self.type2test([1, 0])
-        u.sort()
-        self.assertEqual(u, [0, 1])
-
-        u = self.type2test([2,1,0,-1,-2])
-        u.sort()
-        self.assertEqual(u, self.type2test([-2,-1,0,1,2]))
-
-        self.assertRaises(TypeError, u.sort, 42, 42)
-
-        def revcmp(a, b):
-            return cmp(b, a)
-        u.sort(revcmp)
-        self.assertEqual(u, self.type2test([2,1,0,-1,-2]))
-
-        # The following dumps core in unpatched Python 1.5:
-        def myComparison(x,y):
-            return cmp(x%3, y%7)
-        z = self.type2test(range(12))
-        z.sort(myComparison)
-
-        self.assertRaises(TypeError, z.sort, 2)
-
-        def selfmodifyingComparison(x,y):
-            z.append(1)
-            return cmp(x, y)
-        self.assertRaises(ValueError, z.sort, selfmodifyingComparison)
-
-        self.assertRaises(TypeError, z.sort, lambda x, y: 's')
-
-        self.assertRaises(TypeError, z.sort, 42, 42, 42, 42)
-
-    def test_slice(self):
-        u = self.type2test("spam")
-        u[:2] = "h"
-        self.assertEqual(u, list("ham"))
-
-    def test_iadd(self):
-        super(CommonTest, self).test_iadd()
-        u = self.type2test([0, 1])
-        u2 = u
-        u += [2, 3]
-        self.assertIs(u, u2)
-
-        u = self.type2test("spam")
-        u += "eggs"
-        self.assertEqual(u, self.type2test("spameggs"))
-
-        self.assertRaises(TypeError, u.__iadd__, None)
-
-    def test_imul(self):
-        u = self.type2test([0, 1])
-        u *= 3
-        self.assertEqual(u, self.type2test([0, 1, 0, 1, 0, 1]))
-        u *= 0
-        self.assertEqual(u, self.type2test([]))
-        s = self.type2test([])
-        oldid = id(s)
-        s *= 10
-        self.assertEqual(id(s), oldid)
-
-    def test_extendedslicing(self):
-        #  subscript
-        a = self.type2test([0,1,2,3,4])
-
-        #  deletion
-        del a[::2]
-        self.assertEqual(a, self.type2test([1,3]))
-        a = self.type2test(range(5))
-        del a[1::2]
-        self.assertEqual(a, self.type2test([0,2,4]))
-        a = self.type2test(range(5))
-        del a[1::-2]
-        self.assertEqual(a, self.type2test([0,2,3,4]))
-        a = self.type2test(range(10))
-        del a[::1000]
-        self.assertEqual(a, self.type2test([1, 2, 3, 4, 5, 6, 7, 8, 9]))
-        #  assignment
-        a = self.type2test(range(10))
-        a[::2] = [-1]*5
-        self.assertEqual(a, self.type2test([-1, 1, -1, 3, -1, 5, -1, 7, -1, 9]))
-        a = self.type2test(range(10))
-        a[::-4] = [10]*3
-        self.assertEqual(a, self.type2test([0, 10, 2, 3, 4, 10, 6, 7, 8 ,10]))
-        a = self.type2test(range(4))
-        a[::-1] = a
-        self.assertEqual(a, self.type2test([3, 2, 1, 0]))
-        a = self.type2test(range(10))
-        b = a[:]
-        c = a[:]
-        a[2:3] = self.type2test(["two", "elements"])
-        b[slice(2,3)] = self.type2test(["two", "elements"])
-        c[2:3:] = self.type2test(["two", "elements"])
-        self.assertEqual(a, b)
-        self.assertEqual(a, c)
-        a = self.type2test(range(10))
-        a[::2] = tuple(range(5))
-        self.assertEqual(a, self.type2test([0, 1, 1, 3, 2, 5, 3, 7, 4, 9]))
-        # test issue7788
-        a = self.type2test(range(10))
-        del a[9::1<<333]
-
-    def test_constructor_exception_handling(self):
-        # Bug #1242657
-        class F(object):
-            def __iter__(self):
-                raise KeyboardInterrupt
-        self.assertRaises(KeyboardInterrupt, list, F())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/lock_tests.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/lock_tests.py
deleted file mode 100644
index 69272f7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/lock_tests.py
+++ /dev/null
@@ -1,546 +0,0 @@
-"""
-Various tests for synchronization primitives.
-"""
-
-import sys
-import time
-from thread import start_new_thread, get_ident
-import threading
-import unittest
-
-from test import test_support as support
-
-
-def _wait():
-    # A crude wait/yield function not relying on synchronization primitives.
-    time.sleep(0.01)
-
-class Bunch(object):
-    """
-    A bunch of threads.
-    """
-    def __init__(self, f, n, wait_before_exit=False):
-        """
-        Construct a bunch of `n` threads running the same function `f`.
-        If `wait_before_exit` is True, the threads won't terminate until
-        do_finish() is called.
-        """
-        self.f = f
-        self.n = n
-        self.started = []
-        self.finished = []
-        self._can_exit = not wait_before_exit
-        def task():
-            tid = get_ident()
-            self.started.append(tid)
-            try:
-                f()
-            finally:
-                self.finished.append(tid)
-                while not self._can_exit:
-                    _wait()
-        for i in range(n):
-            start_new_thread(task, ())
-
-    def wait_for_started(self):
-        while len(self.started) < self.n:
-            _wait()
-
-    def wait_for_finished(self):
-        while len(self.finished) < self.n:
-            _wait()
-
-    def do_finish(self):
-        self._can_exit = True
-
-
-class BaseTestCase(unittest.TestCase):
-    def setUp(self):
-        self._threads = support.threading_setup()
-
-    def tearDown(self):
-        support.threading_cleanup(*self._threads)
-        support.reap_children()
-
-
-class BaseLockTests(BaseTestCase):
-    """
-    Tests for both recursive and non-recursive locks.
-    """
-
-    def test_constructor(self):
-        lock = self.locktype()
-        del lock
-
-    def test_acquire_destroy(self):
-        lock = self.locktype()
-        lock.acquire()
-        del lock
-
-    def test_acquire_release(self):
-        lock = self.locktype()
-        lock.acquire()
-        lock.release()
-        del lock
-
-    def test_try_acquire(self):
-        lock = self.locktype()
-        self.assertTrue(lock.acquire(False))
-        lock.release()
-
-    def test_try_acquire_contended(self):
-        lock = self.locktype()
-        lock.acquire()
-        result = []
-        def f():
-            result.append(lock.acquire(False))
-        Bunch(f, 1).wait_for_finished()
-        self.assertFalse(result[0])
-        lock.release()
-
-    def test_acquire_contended(self):
-        lock = self.locktype()
-        lock.acquire()
-        N = 5
-        def f():
-            lock.acquire()
-            lock.release()
-
-        b = Bunch(f, N)
-        b.wait_for_started()
-        _wait()
-        self.assertEqual(len(b.finished), 0)
-        lock.release()
-        b.wait_for_finished()
-        self.assertEqual(len(b.finished), N)
-
-    def test_with(self):
-        lock = self.locktype()
-        def f():
-            lock.acquire()
-            lock.release()
-        def _with(err=None):
-            with lock:
-                if err is not None:
-                    raise err
-        _with()
-        # Check the lock is unacquired
-        Bunch(f, 1).wait_for_finished()
-        self.assertRaises(TypeError, _with, TypeError)
-        # Check the lock is unacquired
-        Bunch(f, 1).wait_for_finished()
-
-    def test_thread_leak(self):
-        # The lock shouldn't leak a Thread instance when used from a foreign
-        # (non-threading) thread.
-        lock = self.locktype()
-        def f():
-            lock.acquire()
-            lock.release()
-        n = len(threading.enumerate())
-        # We run many threads in the hope that existing threads ids won't
-        # be recycled.
-        Bunch(f, 15).wait_for_finished()
-        self.assertEqual(n, len(threading.enumerate()))
-
-
-class LockTests(BaseLockTests):
-    """
-    Tests for non-recursive, weak locks
-    (which can be acquired and released from different threads).
-    """
-    def test_reacquire(self):
-        # Lock needs to be released before re-acquiring.
-        lock = self.locktype()
-        phase = []
-        def f():
-            lock.acquire()
-            phase.append(None)
-            lock.acquire()
-            phase.append(None)
-        start_new_thread(f, ())
-        while len(phase) == 0:
-            _wait()
-        _wait()
-        self.assertEqual(len(phase), 1)
-        lock.release()
-        while len(phase) == 1:
-            _wait()
-        self.assertEqual(len(phase), 2)
-
-    def test_different_thread(self):
-        # Lock can be released from a different thread.
-        lock = self.locktype()
-        lock.acquire()
-        def f():
-            lock.release()
-        b = Bunch(f, 1)
-        b.wait_for_finished()
-        lock.acquire()
-        lock.release()
-
-
-class RLockTests(BaseLockTests):
-    """
-    Tests for recursive locks.
-    """
-    def test_reacquire(self):
-        lock = self.locktype()
-        lock.acquire()
-        lock.acquire()
-        lock.release()
-        lock.acquire()
-        lock.release()
-        lock.release()
-
-    def test_release_unacquired(self):
-        # Cannot release an unacquired lock
-        lock = self.locktype()
-        self.assertRaises(RuntimeError, lock.release)
-        lock.acquire()
-        lock.acquire()
-        lock.release()
-        lock.acquire()
-        lock.release()
-        lock.release()
-        self.assertRaises(RuntimeError, lock.release)
-
-    def test_different_thread(self):
-        # Cannot release from a different thread
-        lock = self.locktype()
-        def f():
-            lock.acquire()
-        b = Bunch(f, 1, True)
-        try:
-            self.assertRaises(RuntimeError, lock.release)
-        finally:
-            b.do_finish()
-
-    def test__is_owned(self):
-        lock = self.locktype()
-        self.assertFalse(lock._is_owned())
-        lock.acquire()
-        self.assertTrue(lock._is_owned())
-        lock.acquire()
-        self.assertTrue(lock._is_owned())
-        result = []
-        def f():
-            result.append(lock._is_owned())
-        Bunch(f, 1).wait_for_finished()
-        self.assertFalse(result[0])
-        lock.release()
-        self.assertTrue(lock._is_owned())
-        lock.release()
-        self.assertFalse(lock._is_owned())
-
-
-class EventTests(BaseTestCase):
-    """
-    Tests for Event objects.
-    """
-
-    def test_is_set(self):
-        evt = self.eventtype()
-        self.assertFalse(evt.is_set())
-        evt.set()
-        self.assertTrue(evt.is_set())
-        evt.set()
-        self.assertTrue(evt.is_set())
-        evt.clear()
-        self.assertFalse(evt.is_set())
-        evt.clear()
-        self.assertFalse(evt.is_set())
-
-    def _check_notify(self, evt):
-        # All threads get notified
-        N = 5
-        results1 = []
-        results2 = []
-        def f():
-            results1.append(evt.wait())
-            results2.append(evt.wait())
-        b = Bunch(f, N)
-        b.wait_for_started()
-        _wait()
-        self.assertEqual(len(results1), 0)
-        evt.set()
-        b.wait_for_finished()
-        self.assertEqual(results1, [True] * N)
-        self.assertEqual(results2, [True] * N)
-
-    def test_notify(self):
-        evt = self.eventtype()
-        self._check_notify(evt)
-        # Another time, after an explicit clear()
-        evt.set()
-        evt.clear()
-        self._check_notify(evt)
-
-    def test_timeout(self):
-        evt = self.eventtype()
-        results1 = []
-        results2 = []
-        N = 5
-        def f():
-            results1.append(evt.wait(0.0))
-            t1 = time.time()
-            r = evt.wait(0.2)
-            t2 = time.time()
-            results2.append((r, t2 - t1))
-        Bunch(f, N).wait_for_finished()
-        self.assertEqual(results1, [False] * N)
-        for r, dt in results2:
-            self.assertFalse(r)
-            self.assertTrue(dt >= 0.2, dt)
-        # The event is set
-        results1 = []
-        results2 = []
-        evt.set()
-        Bunch(f, N).wait_for_finished()
-        self.assertEqual(results1, [True] * N)
-        for r, dt in results2:
-            self.assertTrue(r)
-
-
-class ConditionTests(BaseTestCase):
-    """
-    Tests for condition variables.
-    """
-
-    def test_acquire(self):
-        cond = self.condtype()
-        # Be default we have an RLock: the condition can be acquired multiple
-        # times.
-        cond.acquire()
-        cond.acquire()
-        cond.release()
-        cond.release()
-        lock = threading.Lock()
-        cond = self.condtype(lock)
-        cond.acquire()
-        self.assertFalse(lock.acquire(False))
-        cond.release()
-        self.assertTrue(lock.acquire(False))
-        self.assertFalse(cond.acquire(False))
-        lock.release()
-        with cond:
-            self.assertFalse(lock.acquire(False))
-
-    def test_unacquired_wait(self):
-        cond = self.condtype()
-        self.assertRaises(RuntimeError, cond.wait)
-
-    def test_unacquired_notify(self):
-        cond = self.condtype()
-        self.assertRaises(RuntimeError, cond.notify)
-
-    def _check_notify(self, cond):
-        N = 5
-        results1 = []
-        results2 = []
-        phase_num = 0
-        def f():
-            cond.acquire()
-            cond.wait()
-            cond.release()
-            results1.append(phase_num)
-            cond.acquire()
-            cond.wait()
-            cond.release()
-            results2.append(phase_num)
-        b = Bunch(f, N)
-        b.wait_for_started()
-        _wait()
-        self.assertEqual(results1, [])
-        # Notify 3 threads at first
-        cond.acquire()
-        cond.notify(3)
-        _wait()
-        phase_num = 1
-        cond.release()
-        while len(results1) < 3:
-            _wait()
-        self.assertEqual(results1, [1] * 3)
-        self.assertEqual(results2, [])
-        # Notify 5 threads: they might be in their first or second wait
-        cond.acquire()
-        cond.notify(5)
-        _wait()
-        phase_num = 2
-        cond.release()
-        while len(results1) + len(results2) < 8:
-            _wait()
-        self.assertEqual(results1, [1] * 3 + [2] * 2)
-        self.assertEqual(results2, [2] * 3)
-        # Notify all threads: they are all in their second wait
-        cond.acquire()
-        cond.notify_all()
-        _wait()
-        phase_num = 3
-        cond.release()
-        while len(results2) < 5:
-            _wait()
-        self.assertEqual(results1, [1] * 3 + [2] * 2)
-        self.assertEqual(results2, [2] * 3 + [3] * 2)
-        b.wait_for_finished()
-
-    def test_notify(self):
-        cond = self.condtype()
-        self._check_notify(cond)
-        # A second time, to check internal state is still ok.
-        self._check_notify(cond)
-
-    def test_timeout(self):
-        cond = self.condtype()
-        results = []
-        N = 5
-        def f():
-            cond.acquire()
-            t1 = time.time()
-            cond.wait(0.2)
-            t2 = time.time()
-            cond.release()
-            results.append(t2 - t1)
-        Bunch(f, N).wait_for_finished()
-        self.assertEqual(len(results), 5)
-        for dt in results:
-            self.assertTrue(dt >= 0.2, dt)
-
-
-class BaseSemaphoreTests(BaseTestCase):
-    """
-    Common tests for {bounded, unbounded} semaphore objects.
-    """
-
-    def test_constructor(self):
-        self.assertRaises(ValueError, self.semtype, value = -1)
-        self.assertRaises(ValueError, self.semtype, value = -sys.maxint)
-
-    def test_acquire(self):
-        sem = self.semtype(1)
-        sem.acquire()
-        sem.release()
-        sem = self.semtype(2)
-        sem.acquire()
-        sem.acquire()
-        sem.release()
-        sem.release()
-
-    def test_acquire_destroy(self):
-        sem = self.semtype()
-        sem.acquire()
-        del sem
-
-    def test_acquire_contended(self):
-        sem = self.semtype(7)
-        sem.acquire()
-        N = 10
-        results1 = []
-        results2 = []
-        phase_num = 0
-        def f():
-            sem.acquire()
-            results1.append(phase_num)
-            sem.acquire()
-            results2.append(phase_num)
-        b = Bunch(f, 10)
-        b.wait_for_started()
-        while len(results1) + len(results2) < 6:
-            _wait()
-        self.assertEqual(results1 + results2, [0] * 6)
-        phase_num = 1
-        for i in range(7):
-            sem.release()
-        while len(results1) + len(results2) < 13:
-            _wait()
-        self.assertEqual(sorted(results1 + results2), [0] * 6 + [1] * 7)
-        phase_num = 2
-        for i in range(6):
-            sem.release()
-        while len(results1) + len(results2) < 19:
-            _wait()
-        self.assertEqual(sorted(results1 + results2), [0] * 6 + [1] * 7 + [2] * 6)
-        # The semaphore is still locked
-        self.assertFalse(sem.acquire(False))
-        # Final release, to let the last thread finish
-        sem.release()
-        b.wait_for_finished()
-
-    def test_try_acquire(self):
-        sem = self.semtype(2)
-        self.assertTrue(sem.acquire(False))
-        self.assertTrue(sem.acquire(False))
-        self.assertFalse(sem.acquire(False))
-        sem.release()
-        self.assertTrue(sem.acquire(False))
-
-    def test_try_acquire_contended(self):
-        sem = self.semtype(4)
-        sem.acquire()
-        results = []
-        def f():
-            results.append(sem.acquire(False))
-            results.append(sem.acquire(False))
-        Bunch(f, 5).wait_for_finished()
-        # There can be a thread switch between acquiring the semaphore and
-        # appending the result, therefore results will not necessarily be
-        # ordered.
-        self.assertEqual(sorted(results), [False] * 7 + [True] *  3 )
-
-    def test_default_value(self):
-        # The default initial value is 1.
-        sem = self.semtype()
-        sem.acquire()
-        def f():
-            sem.acquire()
-            sem.release()
-        b = Bunch(f, 1)
-        b.wait_for_started()
-        _wait()
-        self.assertFalse(b.finished)
-        sem.release()
-        b.wait_for_finished()
-
-    def test_with(self):
-        sem = self.semtype(2)
-        def _with(err=None):
-            with sem:
-                self.assertTrue(sem.acquire(False))
-                sem.release()
-                with sem:
-                    self.assertFalse(sem.acquire(False))
-                    if err:
-                        raise err
-        _with()
-        self.assertTrue(sem.acquire(False))
-        sem.release()
-        self.assertRaises(TypeError, _with, TypeError)
-        self.assertTrue(sem.acquire(False))
-        sem.release()
-
-class SemaphoreTests(BaseSemaphoreTests):
-    """
-    Tests for unbounded semaphores.
-    """
-
-    def test_release_unacquired(self):
-        # Unbounded releases are allowed and increment the semaphore's value
-        sem = self.semtype(1)
-        sem.release()
-        sem.acquire()
-        sem.acquire()
-        sem.release()
-
-
-class BoundedSemaphoreTests(BaseSemaphoreTests):
-    """
-    Tests for bounded semaphores.
-    """
-
-    def test_release_unacquired(self):
-        # Cannot go past the initial value
-        sem = self.semtype()
-        self.assertRaises(ValueError, sem.release)
-        sem.acquire()
-        sem.release()
-        self.assertRaises(ValueError, sem.release)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/mapping_tests.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/mapping_tests.py
deleted file mode 100644
index f8354ad..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/mapping_tests.py
+++ /dev/null
@@ -1,682 +0,0 @@
-# tests common to dict and UserDict
-import unittest
-import UserDict
-import test_support
-
-
-class BasicTestMappingProtocol(unittest.TestCase):
-    # This base class can be used to check that an object conforms to the
-    # mapping protocol
-
-    # Functions that can be useful to override to adapt to dictionary
-    # semantics
-    type2test = None # which class is being tested (overwrite in subclasses)
-
-    def _reference(self):
-        """Return a dictionary of values which are invariant by storage
-        in the object under test."""
-        return {1:2, "key1":"value1", "key2":(1,2,3)}
-    def _empty_mapping(self):
-        """Return an empty mapping object"""
-        return self.type2test()
-    def _full_mapping(self, data):
-        """Return a mapping object with the value contained in data
-        dictionary"""
-        x = self._empty_mapping()
-        for key, value in data.items():
-            x[key] = value
-        return x
-
-    def __init__(self, *args, **kw):
-        unittest.TestCase.__init__(self, *args, **kw)
-        self.reference = self._reference().copy()
-
-        # A (key, value) pair not in the mapping
-        key, value = self.reference.popitem()
-        self.other = {key:value}
-
-        # A (key, value) pair in the mapping
-        key, value = self.reference.popitem()
-        self.inmapping = {key:value}
-        self.reference[key] = value
-
-    def test_read(self):
-        # Test for read only operations on mapping
-        p = self._empty_mapping()
-        p1 = dict(p) #workaround for singleton objects
-        d = self._full_mapping(self.reference)
-        if d is p:
-            p = p1
-        #Indexing
-        for key, value in self.reference.items():
-            self.assertEqual(d[key], value)
-        knownkey = self.other.keys()[0]
-        self.assertRaises(KeyError, lambda:d[knownkey])
-        #len
-        self.assertEqual(len(p), 0)
-        self.assertEqual(len(d), len(self.reference))
-        #in
-        for k in self.reference:
-            self.assertIn(k, d)
-        for k in self.other:
-            self.assertNotIn(k, d)
-        #has_key
-        with test_support.check_py3k_warnings(quiet=True):
-            for k in self.reference:
-                self.assertTrue(d.has_key(k))
-            for k in self.other:
-                self.assertFalse(d.has_key(k))
-        #cmp
-        self.assertEqual(cmp(p,p), 0)
-        self.assertEqual(cmp(d,d), 0)
-        self.assertEqual(cmp(p,d), -1)
-        self.assertEqual(cmp(d,p), 1)
-        #__non__zero__
-        if p: self.fail("Empty mapping must compare to False")
-        if not d: self.fail("Full mapping must compare to True")
-        # keys(), items(), iterkeys() ...
-        def check_iterandlist(iter, lst, ref):
-            self.assertTrue(hasattr(iter, 'next'))
-            self.assertTrue(hasattr(iter, '__iter__'))
-            x = list(iter)
-            self.assertTrue(set(x)==set(lst)==set(ref))
-        check_iterandlist(d.iterkeys(), d.keys(), self.reference.keys())
-        check_iterandlist(iter(d), d.keys(), self.reference.keys())
-        check_iterandlist(d.itervalues(), d.values(), self.reference.values())
-        check_iterandlist(d.iteritems(), d.items(), self.reference.items())
-        #get
-        key, value = d.iteritems().next()
-        knownkey, knownvalue = self.other.iteritems().next()
-        self.assertEqual(d.get(key, knownvalue), value)
-        self.assertEqual(d.get(knownkey, knownvalue), knownvalue)
-        self.assertNotIn(knownkey, d)
-
-    def test_write(self):
-        # Test for write operations on mapping
-        p = self._empty_mapping()
-        #Indexing
-        for key, value in self.reference.items():
-            p[key] = value
-            self.assertEqual(p[key], value)
-        for key in self.reference.keys():
-            del p[key]
-            self.assertRaises(KeyError, lambda:p[key])
-        p = self._empty_mapping()
-        #update
-        p.update(self.reference)
-        self.assertEqual(dict(p), self.reference)
-        items = p.items()
-        p = self._empty_mapping()
-        p.update(items)
-        self.assertEqual(dict(p), self.reference)
-        d = self._full_mapping(self.reference)
-        #setdefault
-        key, value = d.iteritems().next()
-        knownkey, knownvalue = self.other.iteritems().next()
-        self.assertEqual(d.setdefault(key, knownvalue), value)
-        self.assertEqual(d[key], value)
-        self.assertEqual(d.setdefault(knownkey, knownvalue), knownvalue)
-        self.assertEqual(d[knownkey], knownvalue)
-        #pop
-        self.assertEqual(d.pop(knownkey), knownvalue)
-        self.assertNotIn(knownkey, d)
-        self.assertRaises(KeyError, d.pop, knownkey)
-        default = 909
-        d[knownkey] = knownvalue
-        self.assertEqual(d.pop(knownkey, default), knownvalue)
-        self.assertNotIn(knownkey, d)
-        self.assertEqual(d.pop(knownkey, default), default)
-        #popitem
-        key, value = d.popitem()
-        self.assertNotIn(key, d)
-        self.assertEqual(value, self.reference[key])
-        p=self._empty_mapping()
-        self.assertRaises(KeyError, p.popitem)
-
-    def test_constructor(self):
-        self.assertEqual(self._empty_mapping(), self._empty_mapping())
-
-    def test_bool(self):
-        self.assertTrue(not self._empty_mapping())
-        self.assertTrue(self.reference)
-        self.assertTrue(bool(self._empty_mapping()) is False)
-        self.assertTrue(bool(self.reference) is True)
-
-    def test_keys(self):
-        d = self._empty_mapping()
-        self.assertEqual(d.keys(), [])
-        d = self.reference
-        self.assertIn(self.inmapping.keys()[0], d.keys())
-        self.assertNotIn(self.other.keys()[0], d.keys())
-        self.assertRaises(TypeError, d.keys, None)
-
-    def test_values(self):
-        d = self._empty_mapping()
-        self.assertEqual(d.values(), [])
-
-        self.assertRaises(TypeError, d.values, None)
-
-    def test_items(self):
-        d = self._empty_mapping()
-        self.assertEqual(d.items(), [])
-
-        self.assertRaises(TypeError, d.items, None)
-
-    def test_len(self):
-        d = self._empty_mapping()
-        self.assertEqual(len(d), 0)
-
-    def test_getitem(self):
-        d = self.reference
-        self.assertEqual(d[self.inmapping.keys()[0]], self.inmapping.values()[0])
-
-        self.assertRaises(TypeError, d.__getitem__)
-
-    def test_update(self):
-        # mapping argument
-        d = self._empty_mapping()
-        d.update(self.other)
-        self.assertEqual(d.items(), self.other.items())
-
-        # No argument
-        d = self._empty_mapping()
-        d.update()
-        self.assertEqual(d, self._empty_mapping())
-
-        # item sequence
-        d = self._empty_mapping()
-        d.update(self.other.items())
-        self.assertEqual(d.items(), self.other.items())
-
-        # Iterator
-        d = self._empty_mapping()
-        d.update(self.other.iteritems())
-        self.assertEqual(d.items(), self.other.items())
-
-        # FIXME: Doesn't work with UserDict
-        # self.assertRaises((TypeError, AttributeError), d.update, None)
-        self.assertRaises((TypeError, AttributeError), d.update, 42)
-
-        outerself = self
-        class SimpleUserDict:
-            def __init__(self):
-                self.d = outerself.reference
-            def keys(self):
-                return self.d.keys()
-            def __getitem__(self, i):
-                return self.d[i]
-        d.clear()
-        d.update(SimpleUserDict())
-        i1 = d.items()
-        i2 = self.reference.items()
-        i1.sort()
-        i2.sort()
-        self.assertEqual(i1, i2)
-
-        class Exc(Exception): pass
-
-        d = self._empty_mapping()
-        class FailingUserDict:
-            def keys(self):
-                raise Exc
-        self.assertRaises(Exc, d.update, FailingUserDict())
-
-        d.clear()
-
-        class FailingUserDict:
-            def keys(self):
-                class BogonIter:
-                    def __init__(self):
-                        self.i = 1
-                    def __iter__(self):
-                        return self
-                    def next(self):
-                        if self.i:
-                            self.i = 0
-                            return 'a'
-                        raise Exc
-                return BogonIter()
-            def __getitem__(self, key):
-                return key
-        self.assertRaises(Exc, d.update, FailingUserDict())
-
-        class FailingUserDict:
-            def keys(self):
-                class BogonIter:
-                    def __init__(self):
-                        self.i = ord('a')
-                    def __iter__(self):
-                        return self
-                    def next(self):
-                        if self.i <= ord('z'):
-                            rtn = chr(self.i)
-                            self.i += 1
-                            return rtn
-                        raise StopIteration
-                return BogonIter()
-            def __getitem__(self, key):
-                raise Exc
-        self.assertRaises(Exc, d.update, FailingUserDict())
-
-        d = self._empty_mapping()
-        class badseq(object):
-            def __iter__(self):
-                return self
-            def next(self):
-                raise Exc()
-
-        self.assertRaises(Exc, d.update, badseq())
-
-        self.assertRaises(ValueError, d.update, [(1, 2, 3)])
-
-    # no test_fromkeys or test_copy as both os.environ and selves don't support it
-
-    def test_get(self):
-        d = self._empty_mapping()
-        self.assertTrue(d.get(self.other.keys()[0]) is None)
-        self.assertEqual(d.get(self.other.keys()[0], 3), 3)
-        d = self.reference
-        self.assertTrue(d.get(self.other.keys()[0]) is None)
-        self.assertEqual(d.get(self.other.keys()[0], 3), 3)
-        self.assertEqual(d.get(self.inmapping.keys()[0]), self.inmapping.values()[0])
-        self.assertEqual(d.get(self.inmapping.keys()[0], 3), self.inmapping.values()[0])
-        self.assertRaises(TypeError, d.get)
-        self.assertRaises(TypeError, d.get, None, None, None)
-
-    def test_setdefault(self):
-        d = self._empty_mapping()
-        self.assertRaises(TypeError, d.setdefault)
-
-    def test_popitem(self):
-        d = self._empty_mapping()
-        self.assertRaises(KeyError, d.popitem)
-        self.assertRaises(TypeError, d.popitem, 42)
-
-    def test_pop(self):
-        d = self._empty_mapping()
-        k, v = self.inmapping.items()[0]
-        d[k] = v
-        self.assertRaises(KeyError, d.pop, self.other.keys()[0])
-
-        self.assertEqual(d.pop(k), v)
-        self.assertEqual(len(d), 0)
-
-        self.assertRaises(KeyError, d.pop, k)
-
-
-class TestMappingProtocol(BasicTestMappingProtocol):
-    def test_constructor(self):
-        BasicTestMappingProtocol.test_constructor(self)
-        self.assertTrue(self._empty_mapping() is not self._empty_mapping())
-        self.assertEqual(self.type2test(x=1, y=2), {"x": 1, "y": 2})
-
-    def test_bool(self):
-        BasicTestMappingProtocol.test_bool(self)
-        self.assertTrue(not self._empty_mapping())
-        self.assertTrue(self._full_mapping({"x": "y"}))
-        self.assertTrue(bool(self._empty_mapping()) is False)
-        self.assertTrue(bool(self._full_mapping({"x": "y"})) is True)
-
-    def test_keys(self):
-        BasicTestMappingProtocol.test_keys(self)
-        d = self._empty_mapping()
-        self.assertEqual(d.keys(), [])
-        d = self._full_mapping({'a': 1, 'b': 2})
-        k = d.keys()
-        self.assertIn('a', k)
-        self.assertIn('b', k)
-        self.assertNotIn('c', k)
-
-    def test_values(self):
-        BasicTestMappingProtocol.test_values(self)
-        d = self._full_mapping({1:2})
-        self.assertEqual(d.values(), [2])
-
-    def test_items(self):
-        BasicTestMappingProtocol.test_items(self)
-
-        d = self._full_mapping({1:2})
-        self.assertEqual(d.items(), [(1, 2)])
-
-    def test_has_key(self):
-        d = self._empty_mapping()
-        self.assertTrue(not d.has_key('a'))
-        d = self._full_mapping({'a': 1, 'b': 2})
-        k = d.keys()
-        k.sort()
-        self.assertEqual(k, ['a', 'b'])
-
-        self.assertRaises(TypeError, d.has_key)
-
-    def test_contains(self):
-        d = self._empty_mapping()
-        self.assertNotIn('a', d)
-        self.assertTrue(not ('a' in d))
-        self.assertTrue('a' not in d)
-        d = self._full_mapping({'a': 1, 'b': 2})
-        self.assertIn('a', d)
-        self.assertIn('b', d)
-        self.assertNotIn('c', d)
-
-        self.assertRaises(TypeError, d.__contains__)
-
-    def test_len(self):
-        BasicTestMappingProtocol.test_len(self)
-        d = self._full_mapping({'a': 1, 'b': 2})
-        self.assertEqual(len(d), 2)
-
-    def test_getitem(self):
-        BasicTestMappingProtocol.test_getitem(self)
-        d = self._full_mapping({'a': 1, 'b': 2})
-        self.assertEqual(d['a'], 1)
-        self.assertEqual(d['b'], 2)
-        d['c'] = 3
-        d['a'] = 4
-        self.assertEqual(d['c'], 3)
-        self.assertEqual(d['a'], 4)
-        del d['b']
-        self.assertEqual(d, {'a': 4, 'c': 3})
-
-        self.assertRaises(TypeError, d.__getitem__)
-
-    def test_clear(self):
-        d = self._full_mapping({1:1, 2:2, 3:3})
-        d.clear()
-        self.assertEqual(d, {})
-
-        self.assertRaises(TypeError, d.clear, None)
-
-    def test_update(self):
-        BasicTestMappingProtocol.test_update(self)
-        # mapping argument
-        d = self._empty_mapping()
-        d.update({1:100})
-        d.update({2:20})
-        d.update({1:1, 2:2, 3:3})
-        self.assertEqual(d, {1:1, 2:2, 3:3})
-
-        # no argument
-        d.update()
-        self.assertEqual(d, {1:1, 2:2, 3:3})
-
-        # keyword arguments
-        d = self._empty_mapping()
-        d.update(x=100)
-        d.update(y=20)
-        d.update(x=1, y=2, z=3)
-        self.assertEqual(d, {"x":1, "y":2, "z":3})
-
-        # item sequence
-        d = self._empty_mapping()
-        d.update([("x", 100), ("y", 20)])
-        self.assertEqual(d, {"x":100, "y":20})
-
-        # Both item sequence and keyword arguments
-        d = self._empty_mapping()
-        d.update([("x", 100), ("y", 20)], x=1, y=2)
-        self.assertEqual(d, {"x":1, "y":2})
-
-        # iterator
-        d = self._full_mapping({1:3, 2:4})
-        d.update(self._full_mapping({1:2, 3:4, 5:6}).iteritems())
-        self.assertEqual(d, {1:2, 2:4, 3:4, 5:6})
-
-        class SimpleUserDict:
-            def __init__(self):
-                self.d = {1:1, 2:2, 3:3}
-            def keys(self):
-                return self.d.keys()
-            def __getitem__(self, i):
-                return self.d[i]
-        d.clear()
-        d.update(SimpleUserDict())
-        self.assertEqual(d, {1:1, 2:2, 3:3})
-
-    def test_fromkeys(self):
-        self.assertEqual(self.type2test.fromkeys('abc'), {'a':None, 'b':None, 'c':None})
-        d = self._empty_mapping()
-        self.assertTrue(not(d.fromkeys('abc') is d))
-        self.assertEqual(d.fromkeys('abc'), {'a':None, 'b':None, 'c':None})
-        self.assertEqual(d.fromkeys((4,5),0), {4:0, 5:0})
-        self.assertEqual(d.fromkeys([]), {})
-        def g():
-            yield 1
-        self.assertEqual(d.fromkeys(g()), {1:None})
-        self.assertRaises(TypeError, {}.fromkeys, 3)
-        class dictlike(self.type2test): pass
-        self.assertEqual(dictlike.fromkeys('a'), {'a':None})
-        self.assertEqual(dictlike().fromkeys('a'), {'a':None})
-        self.assertTrue(dictlike.fromkeys('a').__class__ is dictlike)
-        self.assertTrue(dictlike().fromkeys('a').__class__ is dictlike)
-        # FIXME: the following won't work with UserDict, because it's an old style class
-        # self.assertTrue(type(dictlike.fromkeys('a')) is dictlike)
-        class mydict(self.type2test):
-            def __new__(cls):
-                return UserDict.UserDict()
-        ud = mydict.fromkeys('ab')
-        self.assertEqual(ud, {'a':None, 'b':None})
-        # FIXME: the following won't work with UserDict, because it's an old style class
-        # self.assertIsInstance(ud, UserDict.UserDict)
-        self.assertRaises(TypeError, dict.fromkeys)
-
-        class Exc(Exception): pass
-
-        class baddict1(self.type2test):
-            def __init__(self):
-                raise Exc()
-
-        self.assertRaises(Exc, baddict1.fromkeys, [1])
-
-        class BadSeq(object):
-            def __iter__(self):
-                return self
-            def next(self):
-                raise Exc()
-
-        self.assertRaises(Exc, self.type2test.fromkeys, BadSeq())
-
-        class baddict2(self.type2test):
-            def __setitem__(self, key, value):
-                raise Exc()
-
-        self.assertRaises(Exc, baddict2.fromkeys, [1])
-
-    def test_copy(self):
-        d = self._full_mapping({1:1, 2:2, 3:3})
-        self.assertEqual(d.copy(), {1:1, 2:2, 3:3})
-        d = self._empty_mapping()
-        self.assertEqual(d.copy(), d)
-        self.assertIsInstance(d.copy(), d.__class__)
-        self.assertRaises(TypeError, d.copy, None)
-
-    def test_get(self):
-        BasicTestMappingProtocol.test_get(self)
-        d = self._empty_mapping()
-        self.assertTrue(d.get('c') is None)
-        self.assertEqual(d.get('c', 3), 3)
-        d = self._full_mapping({'a' : 1, 'b' : 2})
-        self.assertTrue(d.get('c') is None)
-        self.assertEqual(d.get('c', 3), 3)
-        self.assertEqual(d.get('a'), 1)
-        self.assertEqual(d.get('a', 3), 1)
-
-    def test_setdefault(self):
-        BasicTestMappingProtocol.test_setdefault(self)
-        d = self._empty_mapping()
-        self.assertTrue(d.setdefault('key0') is None)
-        d.setdefault('key0', [])
-        self.assertTrue(d.setdefault('key0') is None)
-        d.setdefault('key', []).append(3)
-        self.assertEqual(d['key'][0], 3)
-        d.setdefault('key', []).append(4)
-        self.assertEqual(len(d['key']), 2)
-
-    def test_popitem(self):
-        BasicTestMappingProtocol.test_popitem(self)
-        for copymode in -1, +1:
-            # -1: b has same structure as a
-            # +1: b is a.copy()
-            for log2size in range(12):
-                size = 2**log2size
-                a = self._empty_mapping()
-                b = self._empty_mapping()
-                for i in range(size):
-                    a[repr(i)] = i
-                    if copymode < 0:
-                        b[repr(i)] = i
-                if copymode > 0:
-                    b = a.copy()
-                for i in range(size):
-                    ka, va = ta = a.popitem()
-                    self.assertEqual(va, int(ka))
-                    kb, vb = tb = b.popitem()
-                    self.assertEqual(vb, int(kb))
-                    self.assertTrue(not(copymode < 0 and ta != tb))
-                self.assertTrue(not a)
-                self.assertTrue(not b)
-
-    def test_pop(self):
-        BasicTestMappingProtocol.test_pop(self)
-
-        # Tests for pop with specified key
-        d = self._empty_mapping()
-        k, v = 'abc', 'def'
-
-        # verify longs/ints get same value when key > 32 bits (for 64-bit archs)
-        # see SF bug #689659
-        x = 4503599627370496L
-        y = 4503599627370496
-        h = self._full_mapping({x: 'anything', y: 'something else'})
-        self.assertEqual(h[x], h[y])
-
-        self.assertEqual(d.pop(k, v), v)
-        d[k] = v
-        self.assertEqual(d.pop(k, 1), v)
-
-
-class TestHashMappingProtocol(TestMappingProtocol):
-
-    def test_getitem(self):
-        TestMappingProtocol.test_getitem(self)
-        class Exc(Exception): pass
-
-        class BadEq(object):
-            def __eq__(self, other):
-                raise Exc()
-            def __hash__(self):
-                return 24
-
-        d = self._empty_mapping()
-        d[BadEq()] = 42
-        self.assertRaises(KeyError, d.__getitem__, 23)
-
-        class BadHash(object):
-            fail = False
-            def __hash__(self):
-                if self.fail:
-                    raise Exc()
-                else:
-                    return 42
-
-        d = self._empty_mapping()
-        x = BadHash()
-        d[x] = 42
-        x.fail = True
-        self.assertRaises(Exc, d.__getitem__, x)
-
-    def test_fromkeys(self):
-        TestMappingProtocol.test_fromkeys(self)
-        class mydict(self.type2test):
-            def __new__(cls):
-                return UserDict.UserDict()
-        ud = mydict.fromkeys('ab')
-        self.assertEqual(ud, {'a':None, 'b':None})
-        self.assertIsInstance(ud, UserDict.UserDict)
-
-    def test_pop(self):
-        TestMappingProtocol.test_pop(self)
-
-        class Exc(Exception): pass
-
-        class BadHash(object):
-            fail = False
-            def __hash__(self):
-                if self.fail:
-                    raise Exc()
-                else:
-                    return 42
-
-        d = self._empty_mapping()
-        x = BadHash()
-        d[x] = 42
-        x.fail = True
-        self.assertRaises(Exc, d.pop, x)
-
-    def test_mutatingiteration(self):
-        d = self._empty_mapping()
-        d[1] = 1
-        try:
-            for i in d:
-                d[i+1] = 1
-        except RuntimeError:
-            pass
-        else:
-            self.fail("changing dict size during iteration doesn't raise Error")
-
-    def test_repr(self):
-        d = self._empty_mapping()
-        self.assertEqual(repr(d), '{}')
-        d[1] = 2
-        self.assertEqual(repr(d), '{1: 2}')
-        d = self._empty_mapping()
-        d[1] = d
-        self.assertEqual(repr(d), '{1: {...}}')
-
-        class Exc(Exception): pass
-
-        class BadRepr(object):
-            def __repr__(self):
-                raise Exc()
-
-        d = self._full_mapping({1: BadRepr()})
-        self.assertRaises(Exc, repr, d)
-
-    def test_le(self):
-        self.assertTrue(not (self._empty_mapping() < self._empty_mapping()))
-        self.assertTrue(not (self._full_mapping({1: 2}) < self._full_mapping({1L: 2L})))
-
-        class Exc(Exception): pass
-
-        class BadCmp(object):
-            def __eq__(self, other):
-                raise Exc()
-            def __hash__(self):
-                return 42
-
-        d1 = self._full_mapping({BadCmp(): 1})
-        d2 = self._full_mapping({1: 1})
-        try:
-            d1 < d2
-        except Exc:
-            pass
-        else:
-            self.fail("< didn't raise Exc")
-
-    def test_setdefault(self):
-        TestMappingProtocol.test_setdefault(self)
-
-        class Exc(Exception): pass
-
-        class BadHash(object):
-            fail = False
-            def __hash__(self):
-                if self.fail:
-                    raise Exc()
-                else:
-                    return 42
-
-        d = self._empty_mapping()
-        x = BadHash()
-        d[x] = 42
-        x.fail = True
-        self.assertRaises(Exc, d.setdefault, x, [])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/math_testcases.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/math_testcases.txt
deleted file mode 100644
index c462c2a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/math_testcases.txt
+++ /dev/null
@@ -1,447 +0,0 @@
--- Testcases for functions in math.
---
--- Each line takes the form:
---
--- <testid> <function> <input_value> -> <output_value> <flags>
---
--- where:
---
---   <testid> is a short name identifying the test,
---
---   <function> is the function to be tested (exp, cos, asinh, ...),
---
---   <input_value> is a string representing a floating-point value
---
---   <output_value> is the expected (ideal) output value, again
---     represented as a string.
---
---   <flags> is a list of the floating-point flags required by C99
---
--- The possible flags are:
---
---   divide-by-zero : raised when a finite input gives a
---     mathematically infinite result.
---
---   overflow : raised when a finite input gives a finite result that
---     is too large to fit in the usual range of an IEEE 754 double.
---
---   invalid : raised for invalid inputs (e.g., sqrt(-1))
---
---   ignore-sign : indicates that the sign of the result is
---     unspecified; e.g., if the result is given as inf,
---     then both -inf and inf should be accepted as correct.
---
--- Flags may appear in any order.
---
--- Lines beginning with '--' (like this one) start a comment, and are
--- ignored.  Blank lines, or lines containing only whitespace, are also
--- ignored.
-
--- Many of the values below were computed with the help of
--- version 2.4 of the MPFR library for multiple-precision
--- floating-point computations with correct rounding.  All output
--- values in this file are (modulo yet-to-be-discovered bugs)
--- correctly rounded, provided that each input and output decimal
--- floating-point value below is interpreted as a representation of
--- the corresponding nearest IEEE 754 double-precision value.  See the
--- MPFR homepage at http://www.mpfr.org for more information about the
--- MPFR project.
-
-
--------------------------
--- erf: error function --
--------------------------
-
-erf0000 erf 0.0 -> 0.0
-erf0001 erf -0.0 -> -0.0
-erf0002 erf inf -> 1.0
-erf0003 erf -inf -> -1.0
-erf0004 erf nan -> nan
-
--- tiny values
-erf0010 erf 1e-308 -> 1.1283791670955125e-308
-erf0011 erf 5e-324 -> 4.9406564584124654e-324
-erf0012 erf 1e-10 -> 1.1283791670955126e-10
-
--- small integers
-erf0020 erf 1 -> 0.84270079294971489
-erf0021 erf 2 -> 0.99532226501895271
-erf0022 erf 3 -> 0.99997790950300136
-erf0023 erf 4 -> 0.99999998458274209
-erf0024 erf 5 -> 0.99999999999846256
-erf0025 erf 6 -> 1.0
-
-erf0030 erf -1 -> -0.84270079294971489
-erf0031 erf -2 -> -0.99532226501895271
-erf0032 erf -3 -> -0.99997790950300136
-erf0033 erf -4 -> -0.99999998458274209
-erf0034 erf -5 -> -0.99999999999846256
-erf0035 erf -6 -> -1.0
-
--- huge values should all go to +/-1, depending on sign
-erf0040 erf -40 -> -1.0
-erf0041 erf 1e16 -> 1.0
-erf0042 erf -1e150 -> -1.0
-erf0043 erf 1.7e308 -> 1.0
-
--- Issue 8986: inputs x with exp(-x*x) near the underflow threshold
--- incorrectly signalled overflow on some platforms.
-erf0100 erf 26.2 -> 1.0
-erf0101 erf 26.4 -> 1.0
-erf0102 erf 26.6 -> 1.0
-erf0103 erf 26.8 -> 1.0
-erf0104 erf 27.0 -> 1.0
-erf0105 erf 27.2 -> 1.0
-erf0106 erf 27.4 -> 1.0
-erf0107 erf 27.6 -> 1.0
-
-erf0110 erf -26.2 -> -1.0
-erf0111 erf -26.4 -> -1.0
-erf0112 erf -26.6 -> -1.0
-erf0113 erf -26.8 -> -1.0
-erf0114 erf -27.0 -> -1.0
-erf0115 erf -27.2 -> -1.0
-erf0116 erf -27.4 -> -1.0
-erf0117 erf -27.6 -> -1.0
-
-----------------------------------------
--- erfc: complementary error function --
-----------------------------------------
-
-erfc0000 erfc 0.0 -> 1.0
-erfc0001 erfc -0.0 -> 1.0
-erfc0002 erfc inf -> 0.0
-erfc0003 erfc -inf -> 2.0
-erfc0004 erfc nan -> nan
-
--- tiny values
-erfc0010 erfc 1e-308 -> 1.0
-erfc0011 erfc 5e-324 -> 1.0
-erfc0012 erfc 1e-10 -> 0.99999999988716204
-
--- small integers
-erfc0020 erfc 1 -> 0.15729920705028513
-erfc0021 erfc 2 -> 0.0046777349810472662
-erfc0022 erfc 3 -> 2.2090496998585441e-05
-erfc0023 erfc 4 -> 1.541725790028002e-08
-erfc0024 erfc 5 -> 1.5374597944280349e-12
-erfc0025 erfc 6 -> 2.1519736712498913e-17
-
-erfc0030 erfc -1 -> 1.8427007929497148
-erfc0031 erfc -2 -> 1.9953222650189528
-erfc0032 erfc -3 -> 1.9999779095030015
-erfc0033 erfc -4 -> 1.9999999845827421
-erfc0034 erfc -5 -> 1.9999999999984626
-erfc0035 erfc -6 -> 2.0
-
--- as x -> infinity, erfc(x) behaves like exp(-x*x)/x/sqrt(pi)
-erfc0040 erfc 20 -> 5.3958656116079012e-176
-erfc0041 erfc 25 -> 8.3001725711965228e-274
-erfc0042 erfc 27 -> 5.2370464393526292e-319
-erfc0043 erfc 28 -> 0.0
-
--- huge values
-erfc0050 erfc -40 -> 2.0
-erfc0051 erfc 1e16 -> 0.0
-erfc0052 erfc -1e150 -> 2.0
-erfc0053 erfc 1.7e308 -> 0.0
-
--- Issue 8986: inputs x with exp(-x*x) near the underflow threshold
--- incorrectly signalled overflow on some platforms.
-erfc0100 erfc 26.2 -> 1.6432507924389461e-300
-erfc0101 erfc 26.4 -> 4.4017768588035426e-305
-erfc0102 erfc 26.6 -> 1.0885125885442269e-309
-erfc0103 erfc 26.8 -> 2.4849621571966629e-314
-erfc0104 erfc 27.0 -> 5.2370464393526292e-319
-erfc0105 erfc 27.2 -> 9.8813129168249309e-324
-erfc0106 erfc 27.4 -> 0.0
-erfc0107 erfc 27.6 -> 0.0
-
-erfc0110 erfc -26.2 -> 2.0
-erfc0111 erfc -26.4 -> 2.0
-erfc0112 erfc -26.6 -> 2.0
-erfc0113 erfc -26.8 -> 2.0
-erfc0114 erfc -27.0 -> 2.0
-erfc0115 erfc -27.2 -> 2.0
-erfc0116 erfc -27.4 -> 2.0
-erfc0117 erfc -27.6 -> 2.0
-
----------------------------------------------------------
--- lgamma: log of absolute value of the gamma function --
----------------------------------------------------------
-
--- special values
-lgam0000 lgamma 0.0 -> inf      divide-by-zero
-lgam0001 lgamma -0.0 -> inf     divide-by-zero
-lgam0002 lgamma inf -> inf
-lgam0003 lgamma -inf -> inf
-lgam0004 lgamma nan -> nan
-
--- negative integers
-lgam0010 lgamma -1 -> inf       divide-by-zero
-lgam0011 lgamma -2 -> inf       divide-by-zero
-lgam0012 lgamma -1e16 -> inf    divide-by-zero
-lgam0013 lgamma -1e300 -> inf   divide-by-zero
-lgam0014 lgamma -1.79e308 -> inf divide-by-zero
-
--- small positive integers give factorials
-lgam0020 lgamma 1 -> 0.0
-lgam0021 lgamma 2 -> 0.0
-lgam0022 lgamma 3 -> 0.69314718055994529
-lgam0023 lgamma 4 -> 1.791759469228055
-lgam0024 lgamma 5 -> 3.1780538303479458
-lgam0025 lgamma 6 -> 4.7874917427820458
-
--- half integers
-lgam0030 lgamma 0.5 -> 0.57236494292470008
-lgam0031 lgamma 1.5 -> -0.12078223763524522
-lgam0032 lgamma 2.5 -> 0.28468287047291918
-lgam0033 lgamma 3.5 -> 1.2009736023470743
-lgam0034 lgamma -0.5 -> 1.2655121234846454
-lgam0035 lgamma -1.5 -> 0.86004701537648098
-lgam0036 lgamma -2.5 -> -0.056243716497674054
-lgam0037 lgamma -3.5 -> -1.309006684993042
-
--- values near 0
-lgam0040 lgamma 0.1 -> 2.252712651734206
-lgam0041 lgamma 0.01 -> 4.5994798780420219
-lgam0042 lgamma 1e-8 -> 18.420680738180209
-lgam0043 lgamma 1e-16 -> 36.841361487904734
-lgam0044 lgamma 1e-30 -> 69.077552789821368
-lgam0045 lgamma 1e-160 -> 368.41361487904732
-lgam0046 lgamma 1e-308 -> 709.19620864216608
-lgam0047 lgamma 5.6e-309 -> 709.77602713741896
-lgam0048 lgamma 5.5e-309 -> 709.79404564292167
-lgam0049 lgamma 1e-309 -> 711.49879373516012
-lgam0050 lgamma 1e-323 -> 743.74692474082133
-lgam0051 lgamma 5e-324 -> 744.44007192138122
-lgam0060 lgamma -0.1 -> 2.3689613327287886
-lgam0061 lgamma -0.01 -> 4.6110249927528013
-lgam0062 lgamma -1e-8 -> 18.420680749724522
-lgam0063 lgamma -1e-16 -> 36.841361487904734
-lgam0064 lgamma -1e-30 -> 69.077552789821368
-lgam0065 lgamma -1e-160 -> 368.41361487904732
-lgam0066 lgamma -1e-308 -> 709.19620864216608
-lgam0067 lgamma -5.6e-309 -> 709.77602713741896
-lgam0068 lgamma -5.5e-309 -> 709.79404564292167
-lgam0069 lgamma -1e-309 -> 711.49879373516012
-lgam0070 lgamma -1e-323 -> 743.74692474082133
-lgam0071 lgamma -5e-324 -> 744.44007192138122
-
--- values near negative integers
-lgam0080 lgamma -0.99999999999999989 -> 36.736800569677101
-lgam0081 lgamma -1.0000000000000002 -> 36.043653389117154
-lgam0082 lgamma -1.9999999999999998 -> 35.350506208557213
-lgam0083 lgamma -2.0000000000000004 -> 34.657359027997266
-lgam0084 lgamma -100.00000000000001 -> -331.85460524980607
-lgam0085 lgamma -99.999999999999986 -> -331.85460524980596
-
--- large inputs
-lgam0100 lgamma 170 -> 701.43726380873704
-lgam0101 lgamma 171 -> 706.57306224578736
-lgam0102 lgamma 171.624 -> 709.78077443669895
-lgam0103 lgamma 171.625 -> 709.78591682948365
-lgam0104 lgamma 172 -> 711.71472580228999
-lgam0105 lgamma 2000 -> 13198.923448054265
-lgam0106 lgamma 2.55998332785163e305 -> 1.7976931348623099e+308
-lgam0107 lgamma 2.55998332785164e305 -> inf overflow
-lgam0108 lgamma 1.7e308 -> inf overflow
-
--- inputs for which gamma(x) is tiny
-lgam0120 lgamma -100.5 -> -364.90096830942736
-lgam0121 lgamma -160.5 -> -656.88005261126432
-lgam0122 lgamma -170.5 -> -707.99843314507882
-lgam0123 lgamma -171.5 -> -713.14301641168481
-lgam0124 lgamma -176.5 -> -738.95247590846486
-lgam0125 lgamma -177.5 -> -744.13144651738037
-lgam0126 lgamma -178.5 -> -749.3160351186001
-
-lgam0130 lgamma -1000.5 -> -5914.4377011168517
-lgam0131 lgamma -30000.5 -> -279278.6629959144
-lgam0132 lgamma -4503599627370495.5 -> -1.5782258434492883e+17
-
--- results close to 0:  positive argument ...
-lgam0150 lgamma 0.99999999999999989 -> 6.4083812134800075e-17
-lgam0151 lgamma 1.0000000000000002 -> -1.2816762426960008e-16
-lgam0152 lgamma 1.9999999999999998 -> -9.3876980655431170e-17
-lgam0153 lgamma 2.0000000000000004 -> 1.8775396131086244e-16
-
--- ... and negative argument
-lgam0160 lgamma -2.7476826467 -> -5.2477408147689136e-11
-lgam0161 lgamma -2.457024738 -> 3.3464637541912932e-10
-
-
----------------------------
--- gamma: Gamma function --
----------------------------
-
--- special values
-gam0000 gamma 0.0 -> inf        divide-by-zero
-gam0001 gamma -0.0 -> -inf      divide-by-zero
-gam0002 gamma inf -> inf
-gam0003 gamma -inf -> nan       invalid
-gam0004 gamma nan -> nan
-
--- negative integers inputs are invalid
-gam0010 gamma -1 -> nan         invalid
-gam0011 gamma -2 -> nan         invalid
-gam0012 gamma -1e16 -> nan      invalid
-gam0013 gamma -1e300 -> nan     invalid
-
--- small positive integers give factorials
-gam0020 gamma 1 -> 1
-gam0021 gamma 2 -> 1
-gam0022 gamma 3 -> 2
-gam0023 gamma 4 -> 6
-gam0024 gamma 5 -> 24
-gam0025 gamma 6 -> 120
-
--- half integers
-gam0030 gamma 0.5 -> 1.7724538509055161
-gam0031 gamma 1.5 -> 0.88622692545275805
-gam0032 gamma 2.5 -> 1.3293403881791370
-gam0033 gamma 3.5 -> 3.3233509704478426
-gam0034 gamma -0.5 -> -3.5449077018110322
-gam0035 gamma -1.5 -> 2.3632718012073548
-gam0036 gamma -2.5 -> -0.94530872048294190
-gam0037 gamma -3.5 -> 0.27008820585226911
-
--- values near 0
-gam0040 gamma 0.1 -> 9.5135076986687306
-gam0041 gamma 0.01 -> 99.432585119150602
-gam0042 gamma 1e-8 -> 99999999.422784343
-gam0043 gamma 1e-16 -> 10000000000000000
-gam0044 gamma 1e-30 -> 9.9999999999999988e+29
-gam0045 gamma 1e-160 -> 1.0000000000000000e+160
-gam0046 gamma 1e-308 -> 1.0000000000000000e+308
-gam0047 gamma 5.6e-309 -> 1.7857142857142848e+308
-gam0048 gamma 5.5e-309 -> inf   overflow
-gam0049 gamma 1e-309 -> inf     overflow
-gam0050 gamma 1e-323 -> inf     overflow
-gam0051 gamma 5e-324 -> inf     overflow
-gam0060 gamma -0.1 -> -10.686287021193193
-gam0061 gamma -0.01 -> -100.58719796441078
-gam0062 gamma -1e-8 -> -100000000.57721567
-gam0063 gamma -1e-16 -> -10000000000000000
-gam0064 gamma -1e-30 -> -9.9999999999999988e+29
-gam0065 gamma -1e-160 -> -1.0000000000000000e+160
-gam0066 gamma -1e-308 -> -1.0000000000000000e+308
-gam0067 gamma -5.6e-309 -> -1.7857142857142848e+308
-gam0068 gamma -5.5e-309 -> -inf overflow
-gam0069 gamma -1e-309 -> -inf   overflow
-gam0070 gamma -1e-323 -> -inf   overflow
-gam0071 gamma -5e-324 -> -inf   overflow
-
--- values near negative integers
-gam0080 gamma -0.99999999999999989 -> -9007199254740992.0
-gam0081 gamma -1.0000000000000002 -> 4503599627370495.5
-gam0082 gamma -1.9999999999999998 -> 2251799813685248.5
-gam0083 gamma -2.0000000000000004 -> -1125899906842623.5
-gam0084 gamma -100.00000000000001 -> -7.5400833348831090e-145
-gam0085 gamma -99.999999999999986 -> 7.5400833348840962e-145
-
--- large inputs
-gam0100 gamma 170 -> 4.2690680090047051e+304
-gam0101 gamma 171 -> 7.2574156153079990e+306
-gam0102 gamma 171.624 -> 1.7942117599248104e+308
-gam0103 gamma 171.625 -> inf    overflow
-gam0104 gamma 172 -> inf        overflow
-gam0105 gamma 2000 -> inf       overflow
-gam0106 gamma 1.7e308 -> inf    overflow
-
--- inputs for which gamma(x) is tiny
-gam0120 gamma -100.5 -> -3.3536908198076787e-159
-gam0121 gamma -160.5 -> -5.2555464470078293e-286
-gam0122 gamma -170.5 -> -3.3127395215386074e-308
-gam0123 gamma -171.5 -> 1.9316265431711902e-310
-gam0124 gamma -176.5 -> -1.1956388629358166e-321
-gam0125 gamma -177.5 -> 4.9406564584124654e-324
-gam0126 gamma -178.5 -> -0.0
-gam0127 gamma -179.5 -> 0.0
-gam0128 gamma -201.0001 -> 0.0
-gam0129 gamma -202.9999 -> -0.0
-gam0130 gamma -1000.5 -> -0.0
-gam0131 gamma -1000000000.3 -> -0.0
-gam0132 gamma -4503599627370495.5 -> 0.0
-
--- inputs that cause problems for the standard reflection formula,
--- thanks to loss of accuracy in 1-x
-gam0140 gamma -63.349078729022985 -> 4.1777971677761880e-88
-gam0141 gamma -127.45117632943295 -> 1.1831110896236810e-214
-
-
------------------------------------------------------------
--- expm1: exp(x) - 1, without precision loss for small x --
------------------------------------------------------------
-
--- special values
-expm10000 expm1 0.0 -> 0.0
-expm10001 expm1 -0.0 -> -0.0
-expm10002 expm1 inf -> inf
-expm10003 expm1 -inf -> -1.0
-expm10004 expm1 nan -> nan
-
--- expm1(x) ~ x for tiny x
-expm10010 expm1 5e-324 -> 5e-324
-expm10011 expm1 1e-320 -> 1e-320
-expm10012 expm1 1e-300 -> 1e-300
-expm10013 expm1 1e-150 -> 1e-150
-expm10014 expm1 1e-20 -> 1e-20
-
-expm10020 expm1 -5e-324 -> -5e-324
-expm10021 expm1 -1e-320 -> -1e-320
-expm10022 expm1 -1e-300 -> -1e-300
-expm10023 expm1 -1e-150 -> -1e-150
-expm10024 expm1 -1e-20 -> -1e-20
-
--- moderate sized values, where direct evaluation runs into trouble
-expm10100 expm1 1e-10 -> 1.0000000000500000e-10
-expm10101 expm1 -9.9999999999999995e-08 -> -9.9999995000000163e-8
-expm10102 expm1 3.0000000000000001e-05 -> 3.0000450004500034e-5
-expm10103 expm1 -0.0070000000000000001 -> -0.0069755570667648951
-expm10104 expm1 -0.071499208740094633 -> -0.069002985744820250
-expm10105 expm1 -0.063296004180116799 -> -0.061334416373633009
-expm10106 expm1 0.02390954035597756 -> 0.024197665143819942
-expm10107 expm1 0.085637352649044901 -> 0.089411184580357767
-expm10108 expm1 0.5966174947411006 -> 0.81596588596501485
-expm10109 expm1 0.30247206212075139 -> 0.35319987035848677
-expm10110 expm1 0.74574727375889516 -> 1.1080161116737459
-expm10111 expm1 0.97767512926555711 -> 1.6582689207372185
-expm10112 expm1 0.8450154566787712 -> 1.3280137976535897
-expm10113 expm1 -0.13979260323125264 -> -0.13046144381396060
-expm10114 expm1 -0.52899322039643271 -> -0.41080213643695923
-expm10115 expm1 -0.74083261478900631 -> -0.52328317124797097
-expm10116 expm1 -0.93847766984546055 -> -0.60877704724085946
-expm10117 expm1 10.0 -> 22025.465794806718
-expm10118 expm1 27.0 -> 532048240600.79865
-expm10119 expm1 123 -> 2.6195173187490626e+53
-expm10120 expm1 -12.0 -> -0.99999385578764666
-expm10121 expm1 -35.100000000000001 -> -0.99999999999999944
-
--- extreme negative values
-expm10201 expm1 -37.0 -> -0.99999999999999989
-expm10200 expm1 -38.0 -> -1.0
-expm10210 expm1 -710.0 -> -1.0
--- the formula expm1(x) = 2 * sinh(x/2) * exp(x/2) doesn't work so
--- well when exp(x/2) is subnormal or underflows to zero; check we're
--- not using it!
-expm10211 expm1 -1420.0 -> -1.0
-expm10212 expm1 -1450.0 -> -1.0
-expm10213 expm1 -1500.0 -> -1.0
-expm10214 expm1 -1e50 -> -1.0
-expm10215 expm1 -1.79e308 -> -1.0
-
--- extreme positive values
-expm10300 expm1 300 -> 1.9424263952412558e+130
-expm10301 expm1 700 -> 1.0142320547350045e+304
--- the next test (expm10302) is disabled because it causes failure on
--- OS X 10.4/Intel: apparently all values over 709.78 produce an
--- overflow on that platform.  See issue #7575.
--- expm10302 expm1 709.78271289328393 -> 1.7976931346824240e+308
-expm10303 expm1 709.78271289348402 -> inf overflow
-expm10304 expm1 1000 -> inf overflow
-expm10305 expm1 1e50 -> inf overflow
-expm10306 expm1 1.79e308 -> inf overflow
-
--- weaker version of expm10302
-expm10307 expm1 709.5 -> 1.3549863193146328e+308
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/nullcert.pem b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/nullcert.pem
deleted file mode 100644
index e69de29..0000000
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/outstanding_bugs.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/outstanding_bugs.py
deleted file mode 100644
index d7be346..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/outstanding_bugs.py
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# This file is for everybody to add tests for bugs that aren't
-# fixed yet. Please add a test case and appropriate bug description.
-#
-# When you fix one of the bugs, please move the test to the correct
-# test_ module.
-#
-
-import unittest
-from test import test_support
-
-#
-# No test cases for outstanding bugs at the moment.
-#
-
-
-def test_main():
-    #test_support.run_unittest()
-    pass
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pickletester.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pickletester.py
deleted file mode 100644
index e45b09c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pickletester.py
+++ /dev/null
@@ -1,1259 +0,0 @@
-import unittest
-import pickle
-import cPickle
-import StringIO
-import cStringIO
-import pickletools
-import copy_reg
-
-from test.test_support import TestFailed, have_unicode, TESTFN
-
-# Tests that try a number of pickle protocols should have a
-#     for proto in protocols:
-# kind of outer loop.
-assert pickle.HIGHEST_PROTOCOL == cPickle.HIGHEST_PROTOCOL == 2
-protocols = range(pickle.HIGHEST_PROTOCOL + 1)
-
-# Copy of test.test_support.run_with_locale. This is needed to support Python
-# 2.4, which didn't include it. This is all to support test_xpickle, which
-# bounces pickled objects through older Python versions to test backwards
-# compatibility.
-def run_with_locale(catstr, *locales):
-    def decorator(func):
-        def inner(*args, **kwds):
-            try:
-                import locale
-                category = getattr(locale, catstr)
-                orig_locale = locale.setlocale(category)
-            except AttributeError:
-                # if the test author gives us an invalid category string
-                raise
-            except:
-                # cannot retrieve original locale, so do nothing
-                locale = orig_locale = None
-            else:
-                for loc in locales:
-                    try:
-                        locale.setlocale(category, loc)
-                        break
-                    except:
-                        pass
-
-            # now run the function, resetting the locale on exceptions
-            try:
-                return func(*args, **kwds)
-            finally:
-                if locale and orig_locale:
-                    locale.setlocale(category, orig_locale)
-        inner.func_name = func.func_name
-        inner.__doc__ = func.__doc__
-        return inner
-    return decorator
-
-
-# Return True if opcode code appears in the pickle, else False.
-def opcode_in_pickle(code, pickle):
-    for op, dummy, dummy in pickletools.genops(pickle):
-        if op.code == code:
-            return True
-    return False
-
-# Return the number of times opcode code appears in pickle.
-def count_opcode(code, pickle):
-    n = 0
-    for op, dummy, dummy in pickletools.genops(pickle):
-        if op.code == code:
-            n += 1
-    return n
-
-# We can't very well test the extension registry without putting known stuff
-# in it, but we have to be careful to restore its original state.  Code
-# should do this:
-#
-#     e = ExtensionSaver(extension_code)
-#     try:
-#         fiddle w/ the extension registry's stuff for extension_code
-#     finally:
-#         e.restore()
-
-class ExtensionSaver:
-    # Remember current registration for code (if any), and remove it (if
-    # there is one).
-    def __init__(self, code):
-        self.code = code
-        if code in copy_reg._inverted_registry:
-            self.pair = copy_reg._inverted_registry[code]
-            copy_reg.remove_extension(self.pair[0], self.pair[1], code)
-        else:
-            self.pair = None
-
-    # Restore previous registration for code.
-    def restore(self):
-        code = self.code
-        curpair = copy_reg._inverted_registry.get(code)
-        if curpair is not None:
-            copy_reg.remove_extension(curpair[0], curpair[1], code)
-        pair = self.pair
-        if pair is not None:
-            copy_reg.add_extension(pair[0], pair[1], code)
-
-class C:
-    def __cmp__(self, other):
-        return cmp(self.__dict__, other.__dict__)
-
-import __main__
-__main__.C = C
-C.__module__ = "__main__"
-
-class myint(int):
-    def __init__(self, x):
-        self.str = str(x)
-
-class initarg(C):
-
-    def __init__(self, a, b):
-        self.a = a
-        self.b = b
-
-    def __getinitargs__(self):
-        return self.a, self.b
-
-class metaclass(type):
-    pass
-
-class use_metaclass(object):
-    __metaclass__ = metaclass
-
-# DATA0 .. DATA2 are the pickles we expect under the various protocols, for
-# the object returned by create_data().
-
-# break into multiple strings to avoid confusing font-lock-mode
-DATA0 = """(lp1
-I0
-aL1L
-aF2
-ac__builtin__
-complex
-p2
-""" + \
-"""(F3
-F0
-tRp3
-aI1
-aI-1
-aI255
-aI-255
-aI-256
-aI65535
-aI-65535
-aI-65536
-aI2147483647
-aI-2147483647
-aI-2147483648
-a""" + \
-"""(S'abc'
-p4
-g4
-""" + \
-"""(i__main__
-C
-p5
-""" + \
-"""(dp6
-S'foo'
-p7
-I1
-sS'bar'
-p8
-I2
-sbg5
-tp9
-ag9
-aI5
-a.
-"""
-
-# Disassembly of DATA0.
-DATA0_DIS = """\
-    0: (    MARK
-    1: l        LIST       (MARK at 0)
-    2: p    PUT        1
-    5: I    INT        0
-    8: a    APPEND
-    9: L    LONG       1L
-   13: a    APPEND
-   14: F    FLOAT      2.0
-   17: a    APPEND
-   18: c    GLOBAL     '__builtin__ complex'
-   39: p    PUT        2
-   42: (    MARK
-   43: F        FLOAT      3.0
-   46: F        FLOAT      0.0
-   49: t        TUPLE      (MARK at 42)
-   50: R    REDUCE
-   51: p    PUT        3
-   54: a    APPEND
-   55: I    INT        1
-   58: a    APPEND
-   59: I    INT        -1
-   63: a    APPEND
-   64: I    INT        255
-   69: a    APPEND
-   70: I    INT        -255
-   76: a    APPEND
-   77: I    INT        -256
-   83: a    APPEND
-   84: I    INT        65535
-   91: a    APPEND
-   92: I    INT        -65535
-  100: a    APPEND
-  101: I    INT        -65536
-  109: a    APPEND
-  110: I    INT        2147483647
-  122: a    APPEND
-  123: I    INT        -2147483647
-  136: a    APPEND
-  137: I    INT        -2147483648
-  150: a    APPEND
-  151: (    MARK
-  152: S        STRING     'abc'
-  159: p        PUT        4
-  162: g        GET        4
-  165: (        MARK
-  166: i            INST       '__main__ C' (MARK at 165)
-  178: p        PUT        5
-  181: (        MARK
-  182: d            DICT       (MARK at 181)
-  183: p        PUT        6
-  186: S        STRING     'foo'
-  193: p        PUT        7
-  196: I        INT        1
-  199: s        SETITEM
-  200: S        STRING     'bar'
-  207: p        PUT        8
-  210: I        INT        2
-  213: s        SETITEM
-  214: b        BUILD
-  215: g        GET        5
-  218: t        TUPLE      (MARK at 151)
-  219: p    PUT        9
-  222: a    APPEND
-  223: g    GET        9
-  226: a    APPEND
-  227: I    INT        5
-  230: a    APPEND
-  231: .    STOP
-highest protocol among opcodes = 0
-"""
-
-DATA1 = (']q\x01(K\x00L1L\nG@\x00\x00\x00\x00\x00\x00\x00'
-         'c__builtin__\ncomplex\nq\x02(G@\x08\x00\x00\x00\x00\x00'
-         '\x00G\x00\x00\x00\x00\x00\x00\x00\x00tRq\x03K\x01J\xff\xff'
-         '\xff\xffK\xffJ\x01\xff\xff\xffJ\x00\xff\xff\xffM\xff\xff'
-         'J\x01\x00\xff\xffJ\x00\x00\xff\xffJ\xff\xff\xff\x7fJ\x01\x00'
-         '\x00\x80J\x00\x00\x00\x80(U\x03abcq\x04h\x04(c__main__\n'
-         'C\nq\x05oq\x06}q\x07(U\x03fooq\x08K\x01U\x03barq\tK\x02ubh'
-         '\x06tq\nh\nK\x05e.'
-        )
-
-# Disassembly of DATA1.
-DATA1_DIS = """\
-    0: ]    EMPTY_LIST
-    1: q    BINPUT     1
-    3: (    MARK
-    4: K        BININT1    0
-    6: L        LONG       1L
-   10: G        BINFLOAT   2.0
-   19: c        GLOBAL     '__builtin__ complex'
-   40: q        BINPUT     2
-   42: (        MARK
-   43: G            BINFLOAT   3.0
-   52: G            BINFLOAT   0.0
-   61: t            TUPLE      (MARK at 42)
-   62: R        REDUCE
-   63: q        BINPUT     3
-   65: K        BININT1    1
-   67: J        BININT     -1
-   72: K        BININT1    255
-   74: J        BININT     -255
-   79: J        BININT     -256
-   84: M        BININT2    65535
-   87: J        BININT     -65535
-   92: J        BININT     -65536
-   97: J        BININT     2147483647
-  102: J        BININT     -2147483647
-  107: J        BININT     -2147483648
-  112: (        MARK
-  113: U            SHORT_BINSTRING 'abc'
-  118: q            BINPUT     4
-  120: h            BINGET     4
-  122: (            MARK
-  123: c                GLOBAL     '__main__ C'
-  135: q                BINPUT     5
-  137: o                OBJ        (MARK at 122)
-  138: q            BINPUT     6
-  140: }            EMPTY_DICT
-  141: q            BINPUT     7
-  143: (            MARK
-  144: U                SHORT_BINSTRING 'foo'
-  149: q                BINPUT     8
-  151: K                BININT1    1
-  153: U                SHORT_BINSTRING 'bar'
-  158: q                BINPUT     9
-  160: K                BININT1    2
-  162: u                SETITEMS   (MARK at 143)
-  163: b            BUILD
-  164: h            BINGET     6
-  166: t            TUPLE      (MARK at 112)
-  167: q        BINPUT     10
-  169: h        BINGET     10
-  171: K        BININT1    5
-  173: e        APPENDS    (MARK at 3)
-  174: .    STOP
-highest protocol among opcodes = 1
-"""
-
-DATA2 = ('\x80\x02]q\x01(K\x00\x8a\x01\x01G@\x00\x00\x00\x00\x00\x00\x00'
-         'c__builtin__\ncomplex\nq\x02G@\x08\x00\x00\x00\x00\x00\x00G\x00'
-         '\x00\x00\x00\x00\x00\x00\x00\x86Rq\x03K\x01J\xff\xff\xff\xffK'
-         '\xffJ\x01\xff\xff\xffJ\x00\xff\xff\xffM\xff\xffJ\x01\x00\xff\xff'
-         'J\x00\x00\xff\xffJ\xff\xff\xff\x7fJ\x01\x00\x00\x80J\x00\x00\x00'
-         '\x80(U\x03abcq\x04h\x04(c__main__\nC\nq\x05oq\x06}q\x07(U\x03foo'
-         'q\x08K\x01U\x03barq\tK\x02ubh\x06tq\nh\nK\x05e.')
-
-# Disassembly of DATA2.
-DATA2_DIS = """\
-    0: \x80 PROTO      2
-    2: ]    EMPTY_LIST
-    3: q    BINPUT     1
-    5: (    MARK
-    6: K        BININT1    0
-    8: \x8a     LONG1      1L
-   11: G        BINFLOAT   2.0
-   20: c        GLOBAL     '__builtin__ complex'
-   41: q        BINPUT     2
-   43: G        BINFLOAT   3.0
-   52: G        BINFLOAT   0.0
-   61: \x86     TUPLE2
-   62: R        REDUCE
-   63: q        BINPUT     3
-   65: K        BININT1    1
-   67: J        BININT     -1
-   72: K        BININT1    255
-   74: J        BININT     -255
-   79: J        BININT     -256
-   84: M        BININT2    65535
-   87: J        BININT     -65535
-   92: J        BININT     -65536
-   97: J        BININT     2147483647
-  102: J        BININT     -2147483647
-  107: J        BININT     -2147483648
-  112: (        MARK
-  113: U            SHORT_BINSTRING 'abc'
-  118: q            BINPUT     4
-  120: h            BINGET     4
-  122: (            MARK
-  123: c                GLOBAL     '__main__ C'
-  135: q                BINPUT     5
-  137: o                OBJ        (MARK at 122)
-  138: q            BINPUT     6
-  140: }            EMPTY_DICT
-  141: q            BINPUT     7
-  143: (            MARK
-  144: U                SHORT_BINSTRING 'foo'
-  149: q                BINPUT     8
-  151: K                BININT1    1
-  153: U                SHORT_BINSTRING 'bar'
-  158: q                BINPUT     9
-  160: K                BININT1    2
-  162: u                SETITEMS   (MARK at 143)
-  163: b            BUILD
-  164: h            BINGET     6
-  166: t            TUPLE      (MARK at 112)
-  167: q        BINPUT     10
-  169: h        BINGET     10
-  171: K        BININT1    5
-  173: e        APPENDS    (MARK at 5)
-  174: .    STOP
-highest protocol among opcodes = 2
-"""
-
-def create_data():
-    c = C()
-    c.foo = 1
-    c.bar = 2
-    x = [0, 1L, 2.0, 3.0+0j]
-    # Append some integer test cases at cPickle.c's internal size
-    # cutoffs.
-    uint1max = 0xff
-    uint2max = 0xffff
-    int4max = 0x7fffffff
-    x.extend([1, -1,
-              uint1max, -uint1max, -uint1max-1,
-              uint2max, -uint2max, -uint2max-1,
-               int4max,  -int4max,  -int4max-1])
-    y = ('abc', 'abc', c, c)
-    x.append(y)
-    x.append(y)
-    x.append(5)
-    return x
-
-class AbstractPickleTests(unittest.TestCase):
-    # Subclass must define self.dumps, self.loads, self.error.
-
-    _testdata = create_data()
-
-    def setUp(self):
-        pass
-
-    def test_misc(self):
-        # test various datatypes not tested by testdata
-        for proto in protocols:
-            x = myint(4)
-            s = self.dumps(x, proto)
-            y = self.loads(s)
-            self.assertEqual(x, y)
-
-            x = (1, ())
-            s = self.dumps(x, proto)
-            y = self.loads(s)
-            self.assertEqual(x, y)
-
-            x = initarg(1, x)
-            s = self.dumps(x, proto)
-            y = self.loads(s)
-            self.assertEqual(x, y)
-
-        # XXX test __reduce__ protocol?
-
-    def test_roundtrip_equality(self):
-        expected = self._testdata
-        for proto in protocols:
-            s = self.dumps(expected, proto)
-            got = self.loads(s)
-            self.assertEqual(expected, got)
-
-    def test_load_from_canned_string(self):
-        expected = self._testdata
-        for canned in DATA0, DATA1, DATA2:
-            got = self.loads(canned)
-            self.assertEqual(expected, got)
-
-    # There are gratuitous differences between pickles produced by
-    # pickle and cPickle, largely because cPickle starts PUT indices at
-    # 1 and pickle starts them at 0.  See XXX comment in cPickle's put2() --
-    # there's a comment with an exclamation point there whose meaning
-    # is a mystery.  cPickle also suppresses PUT for objects with a refcount
-    # of 1.
-    def dont_test_disassembly(self):
-        from pickletools import dis
-
-        for proto, expected in (0, DATA0_DIS), (1, DATA1_DIS):
-            s = self.dumps(self._testdata, proto)
-            filelike = cStringIO.StringIO()
-            dis(s, out=filelike)
-            got = filelike.getvalue()
-            self.assertEqual(expected, got)
-
-    def test_recursive_list(self):
-        l = []
-        l.append(l)
-        for proto in protocols:
-            s = self.dumps(l, proto)
-            x = self.loads(s)
-            self.assertEqual(len(x), 1)
-            self.assertTrue(x is x[0])
-
-    def test_recursive_tuple(self):
-        t = ([],)
-        t[0].append(t)
-        for proto in protocols:
-            s = self.dumps(t, proto)
-            x = self.loads(s)
-            self.assertEqual(len(x), 1)
-            self.assertEqual(len(x[0]), 1)
-            self.assertTrue(x is x[0][0])
-
-    def test_recursive_dict(self):
-        d = {}
-        d[1] = d
-        for proto in protocols:
-            s = self.dumps(d, proto)
-            x = self.loads(s)
-            self.assertEqual(x.keys(), [1])
-            self.assertTrue(x[1] is x)
-
-    def test_recursive_inst(self):
-        i = C()
-        i.attr = i
-        for proto in protocols:
-            s = self.dumps(i, 2)
-            x = self.loads(s)
-            self.assertEqual(dir(x), dir(i))
-            self.assertTrue(x.attr is x)
-
-    def test_recursive_multi(self):
-        l = []
-        d = {1:l}
-        i = C()
-        i.attr = d
-        l.append(i)
-        for proto in protocols:
-            s = self.dumps(l, proto)
-            x = self.loads(s)
-            self.assertEqual(len(x), 1)
-            self.assertEqual(dir(x[0]), dir(i))
-            self.assertEqual(x[0].attr.keys(), [1])
-            self.assertTrue(x[0].attr[1] is x)
-
-    def test_garyp(self):
-        self.assertRaises(self.error, self.loads, 'garyp')
-
-    def test_insecure_strings(self):
-        insecure = ["abc", "2 + 2", # not quoted
-                    #"'abc' + 'def'", # not a single quoted string
-                    "'abc", # quote is not closed
-                    "'abc\"", # open quote and close quote don't match
-                    "'abc'   ?", # junk after close quote
-                    "'\\'", # trailing backslash
-                    # some tests of the quoting rules
-                    #"'abc\"\''",
-                    #"'\\\\a\'\'\'\\\'\\\\\''",
-                    ]
-        for s in insecure:
-            buf = "S" + s + "\012p0\012."
-            self.assertRaises(ValueError, self.loads, buf)
-
-    if have_unicode:
-        def test_unicode(self):
-            endcases = [u'', u'<\\u>', u'<\\\u1234>', u'<\n>',
-                        u'<\\>', u'<\\\U00012345>']
-            for proto in protocols:
-                for u in endcases:
-                    p = self.dumps(u, proto)
-                    u2 = self.loads(p)
-                    self.assertEqual(u2, u)
-
-        def test_unicode_high_plane(self):
-            t = u'\U00012345'
-            for proto in protocols:
-                p = self.dumps(t, proto)
-                t2 = self.loads(p)
-                self.assertEqual(t2, t)
-
-    def test_ints(self):
-        import sys
-        for proto in protocols:
-            n = sys.maxint
-            while n:
-                for expected in (-n, n):
-                    s = self.dumps(expected, proto)
-                    n2 = self.loads(s)
-                    self.assertEqual(expected, n2)
-                n = n >> 1
-
-    def test_maxint64(self):
-        maxint64 = (1L << 63) - 1
-        data = 'I' + str(maxint64) + '\n.'
-        got = self.loads(data)
-        self.assertEqual(got, maxint64)
-
-        # Try too with a bogus literal.
-        data = 'I' + str(maxint64) + 'JUNK\n.'
-        self.assertRaises(ValueError, self.loads, data)
-
-    def test_long(self):
-        for proto in protocols:
-            # 256 bytes is where LONG4 begins.
-            for nbits in 1, 8, 8*254, 8*255, 8*256, 8*257:
-                nbase = 1L << nbits
-                for npos in nbase-1, nbase, nbase+1:
-                    for n in npos, -npos:
-                        pickle = self.dumps(n, proto)
-                        got = self.loads(pickle)
-                        self.assertEqual(n, got)
-        # Try a monster.  This is quadratic-time in protos 0 & 1, so don't
-        # bother with those.
-        nbase = long("deadbeeffeedface", 16)
-        nbase += nbase << 1000000
-        for n in nbase, -nbase:
-            p = self.dumps(n, 2)
-            got = self.loads(p)
-            self.assertEqual(n, got)
-
-    def test_float(self):
-        test_values = [0.0, 4.94e-324, 1e-310, 7e-308, 6.626e-34, 0.1, 0.5,
-                       3.14, 263.44582062374053, 6.022e23, 1e30]
-        test_values = test_values + [-x for x in test_values]
-        for proto in protocols:
-            for value in test_values:
-                pickle = self.dumps(value, proto)
-                got = self.loads(pickle)
-                self.assertEqual(value, got)
-
-    @run_with_locale('LC_ALL', 'de_DE', 'fr_FR')
-    def test_float_format(self):
-        # make sure that floats are formatted locale independent
-        self.assertEqual(self.dumps(1.2)[0:3], 'F1.')
-
-    def test_reduce(self):
-        pass
-
-    def test_getinitargs(self):
-        pass
-
-    def test_metaclass(self):
-        a = use_metaclass()
-        for proto in protocols:
-            s = self.dumps(a, proto)
-            b = self.loads(s)
-            self.assertEqual(a.__class__, b.__class__)
-
-    def test_structseq(self):
-        import time
-        import os
-
-        t = time.localtime()
-        for proto in protocols:
-            s = self.dumps(t, proto)
-            u = self.loads(s)
-            self.assertEqual(t, u)
-            if hasattr(os, "stat"):
-                t = os.stat(os.curdir)
-                s = self.dumps(t, proto)
-                u = self.loads(s)
-                self.assertEqual(t, u)
-            if hasattr(os, "statvfs"):
-                t = os.statvfs(os.curdir)
-                s = self.dumps(t, proto)
-                u = self.loads(s)
-                self.assertEqual(t, u)
-
-    # Tests for protocol 2
-
-    def test_proto(self):
-        build_none = pickle.NONE + pickle.STOP
-        for proto in protocols:
-            expected = build_none
-            if proto >= 2:
-                expected = pickle.PROTO + chr(proto) + expected
-            p = self.dumps(None, proto)
-            self.assertEqual(p, expected)
-
-        oob = protocols[-1] + 1     # a future protocol
-        badpickle = pickle.PROTO + chr(oob) + build_none
-        try:
-            self.loads(badpickle)
-        except ValueError, detail:
-            self.assertTrue(str(detail).startswith(
-                                            "unsupported pickle protocol"))
-        else:
-            self.fail("expected bad protocol number to raise ValueError")
-
-    def test_long1(self):
-        x = 12345678910111213141516178920L
-        for proto in protocols:
-            s = self.dumps(x, proto)
-            y = self.loads(s)
-            self.assertEqual(x, y)
-            self.assertEqual(opcode_in_pickle(pickle.LONG1, s), proto >= 2)
-
-    def test_long4(self):
-        x = 12345678910111213141516178920L << (256*8)
-        for proto in protocols:
-            s = self.dumps(x, proto)
-            y = self.loads(s)
-            self.assertEqual(x, y)
-            self.assertEqual(opcode_in_pickle(pickle.LONG4, s), proto >= 2)
-
-    def test_short_tuples(self):
-        # Map (proto, len(tuple)) to expected opcode.
-        expected_opcode = {(0, 0): pickle.TUPLE,
-                           (0, 1): pickle.TUPLE,
-                           (0, 2): pickle.TUPLE,
-                           (0, 3): pickle.TUPLE,
-                           (0, 4): pickle.TUPLE,
-
-                           (1, 0): pickle.EMPTY_TUPLE,
-                           (1, 1): pickle.TUPLE,
-                           (1, 2): pickle.TUPLE,
-                           (1, 3): pickle.TUPLE,
-                           (1, 4): pickle.TUPLE,
-
-                           (2, 0): pickle.EMPTY_TUPLE,
-                           (2, 1): pickle.TUPLE1,
-                           (2, 2): pickle.TUPLE2,
-                           (2, 3): pickle.TUPLE3,
-                           (2, 4): pickle.TUPLE,
-                          }
-        a = ()
-        b = (1,)
-        c = (1, 2)
-        d = (1, 2, 3)
-        e = (1, 2, 3, 4)
-        for proto in protocols:
-            for x in a, b, c, d, e:
-                s = self.dumps(x, proto)
-                y = self.loads(s)
-                self.assertEqual(x, y, (proto, x, s, y))
-                expected = expected_opcode[proto, len(x)]
-                self.assertEqual(opcode_in_pickle(expected, s), True)
-
-    def test_singletons(self):
-        # Map (proto, singleton) to expected opcode.
-        expected_opcode = {(0, None): pickle.NONE,
-                           (1, None): pickle.NONE,
-                           (2, None): pickle.NONE,
-
-                           (0, True): pickle.INT,
-                           (1, True): pickle.INT,
-                           (2, True): pickle.NEWTRUE,
-
-                           (0, False): pickle.INT,
-                           (1, False): pickle.INT,
-                           (2, False): pickle.NEWFALSE,
-                          }
-        for proto in protocols:
-            for x in None, False, True:
-                s = self.dumps(x, proto)
-                y = self.loads(s)
-                self.assertTrue(x is y, (proto, x, s, y))
-                expected = expected_opcode[proto, x]
-                self.assertEqual(opcode_in_pickle(expected, s), True)
-
-    def test_newobj_tuple(self):
-        x = MyTuple([1, 2, 3])
-        x.foo = 42
-        x.bar = "hello"
-        for proto in protocols:
-            s = self.dumps(x, proto)
-            y = self.loads(s)
-            self.assertEqual(tuple(x), tuple(y))
-            self.assertEqual(x.__dict__, y.__dict__)
-
-    def test_newobj_list(self):
-        x = MyList([1, 2, 3])
-        x.foo = 42
-        x.bar = "hello"
-        for proto in protocols:
-            s = self.dumps(x, proto)
-            y = self.loads(s)
-            self.assertEqual(list(x), list(y))
-            self.assertEqual(x.__dict__, y.__dict__)
-
-    def test_newobj_generic(self):
-        for proto in protocols:
-            for C in myclasses:
-                B = C.__base__
-                x = C(C.sample)
-                x.foo = 42
-                s = self.dumps(x, proto)
-                y = self.loads(s)
-                detail = (proto, C, B, x, y, type(y))
-                self.assertEqual(B(x), B(y), detail)
-                self.assertEqual(x.__dict__, y.__dict__, detail)
-
-    # Register a type with copy_reg, with extension code extcode.  Pickle
-    # an object of that type.  Check that the resulting pickle uses opcode
-    # (EXT[124]) under proto 2, and not in proto 1.
-
-    def produce_global_ext(self, extcode, opcode):
-        e = ExtensionSaver(extcode)
-        try:
-            copy_reg.add_extension(__name__, "MyList", extcode)
-            x = MyList([1, 2, 3])
-            x.foo = 42
-            x.bar = "hello"
-
-            # Dump using protocol 1 for comparison.
-            s1 = self.dumps(x, 1)
-            self.assertIn(__name__, s1)
-            self.assertIn("MyList", s1)
-            self.assertEqual(opcode_in_pickle(opcode, s1), False)
-
-            y = self.loads(s1)
-            self.assertEqual(list(x), list(y))
-            self.assertEqual(x.__dict__, y.__dict__)
-
-            # Dump using protocol 2 for test.
-            s2 = self.dumps(x, 2)
-            self.assertNotIn(__name__, s2)
-            self.assertNotIn("MyList", s2)
-            self.assertEqual(opcode_in_pickle(opcode, s2), True)
-
-            y = self.loads(s2)
-            self.assertEqual(list(x), list(y))
-            self.assertEqual(x.__dict__, y.__dict__)
-
-        finally:
-            e.restore()
-
-    def test_global_ext1(self):
-        self.produce_global_ext(0x00000001, pickle.EXT1)  # smallest EXT1 code
-        self.produce_global_ext(0x000000ff, pickle.EXT1)  # largest EXT1 code
-
-    def test_global_ext2(self):
-        self.produce_global_ext(0x00000100, pickle.EXT2)  # smallest EXT2 code
-        self.produce_global_ext(0x0000ffff, pickle.EXT2)  # largest EXT2 code
-        self.produce_global_ext(0x0000abcd, pickle.EXT2)  # check endianness
-
-    def test_global_ext4(self):
-        self.produce_global_ext(0x00010000, pickle.EXT4)  # smallest EXT4 code
-        self.produce_global_ext(0x7fffffff, pickle.EXT4)  # largest EXT4 code
-        self.produce_global_ext(0x12abcdef, pickle.EXT4)  # check endianness
-
-    def test_list_chunking(self):
-        n = 10  # too small to chunk
-        x = range(n)
-        for proto in protocols:
-            s = self.dumps(x, proto)
-            y = self.loads(s)
-            self.assertEqual(x, y)
-            num_appends = count_opcode(pickle.APPENDS, s)
-            self.assertEqual(num_appends, proto > 0)
-
-        n = 2500  # expect at least two chunks when proto > 0
-        x = range(n)
-        for proto in protocols:
-            s = self.dumps(x, proto)
-            y = self.loads(s)
-            self.assertEqual(x, y)
-            num_appends = count_opcode(pickle.APPENDS, s)
-            if proto == 0:
-                self.assertEqual(num_appends, 0)
-            else:
-                self.assertTrue(num_appends >= 2)
-
-    def test_dict_chunking(self):
-        n = 10  # too small to chunk
-        x = dict.fromkeys(range(n))
-        for proto in protocols:
-            s = self.dumps(x, proto)
-            y = self.loads(s)
-            self.assertEqual(x, y)
-            num_setitems = count_opcode(pickle.SETITEMS, s)
-            self.assertEqual(num_setitems, proto > 0)
-
-        n = 2500  # expect at least two chunks when proto > 0
-        x = dict.fromkeys(range(n))
-        for proto in protocols:
-            s = self.dumps(x, proto)
-            y = self.loads(s)
-            self.assertEqual(x, y)
-            num_setitems = count_opcode(pickle.SETITEMS, s)
-            if proto == 0:
-                self.assertEqual(num_setitems, 0)
-            else:
-                self.assertTrue(num_setitems >= 2)
-
-    def test_simple_newobj(self):
-        x = object.__new__(SimpleNewObj)  # avoid __init__
-        x.abc = 666
-        for proto in protocols:
-            s = self.dumps(x, proto)
-            self.assertEqual(opcode_in_pickle(pickle.NEWOBJ, s), proto >= 2)
-            y = self.loads(s)   # will raise TypeError if __init__ called
-            self.assertEqual(y.abc, 666)
-            self.assertEqual(x.__dict__, y.__dict__)
-
-    def test_newobj_list_slots(self):
-        x = SlotList([1, 2, 3])
-        x.foo = 42
-        x.bar = "hello"
-        s = self.dumps(x, 2)
-        y = self.loads(s)
-        self.assertEqual(list(x), list(y))
-        self.assertEqual(x.__dict__, y.__dict__)
-        self.assertEqual(x.foo, y.foo)
-        self.assertEqual(x.bar, y.bar)
-
-    def test_reduce_overrides_default_reduce_ex(self):
-        for proto in protocols:
-            x = REX_one()
-            self.assertEqual(x._reduce_called, 0)
-            s = self.dumps(x, proto)
-            self.assertEqual(x._reduce_called, 1)
-            y = self.loads(s)
-            self.assertEqual(y._reduce_called, 0)
-
-    def test_reduce_ex_called(self):
-        for proto in protocols:
-            x = REX_two()
-            self.assertEqual(x._proto, None)
-            s = self.dumps(x, proto)
-            self.assertEqual(x._proto, proto)
-            y = self.loads(s)
-            self.assertEqual(y._proto, None)
-
-    def test_reduce_ex_overrides_reduce(self):
-        for proto in protocols:
-            x = REX_three()
-            self.assertEqual(x._proto, None)
-            s = self.dumps(x, proto)
-            self.assertEqual(x._proto, proto)
-            y = self.loads(s)
-            self.assertEqual(y._proto, None)
-
-    def test_reduce_ex_calls_base(self):
-        for proto in protocols:
-            x = REX_four()
-            self.assertEqual(x._proto, None)
-            s = self.dumps(x, proto)
-            self.assertEqual(x._proto, proto)
-            y = self.loads(s)
-            self.assertEqual(y._proto, proto)
-
-    def test_reduce_calls_base(self):
-        for proto in protocols:
-            x = REX_five()
-            self.assertEqual(x._reduce_called, 0)
-            s = self.dumps(x, proto)
-            self.assertEqual(x._reduce_called, 1)
-            y = self.loads(s)
-            self.assertEqual(y._reduce_called, 1)
-
-    def test_reduce_bad_iterator(self):
-        # Issue4176: crash when 4th and 5th items of __reduce__()
-        # are not iterators
-        class C(object):
-            def __reduce__(self):
-                # 4th item is not an iterator
-                return list, (), None, [], None
-        class D(object):
-            def __reduce__(self):
-                # 5th item is not an iterator
-                return dict, (), None, None, []
-
-        # Protocol 0 is less strict and also accept iterables.
-        for proto in protocols:
-            try:
-                self.dumps(C(), proto)
-            except (AttributeError, pickle.PickleError, cPickle.PickleError):
-                pass
-            try:
-                self.dumps(D(), proto)
-            except (AttributeError, pickle.PickleError, cPickle.PickleError):
-                pass
-
-    def test_many_puts_and_gets(self):
-        # Test that internal data structures correctly deal with lots of
-        # puts/gets.
-        keys = ("aaa" + str(i) for i in xrange(100))
-        large_dict = dict((k, [4, 5, 6]) for k in keys)
-        obj = [dict(large_dict), dict(large_dict), dict(large_dict)]
-
-        for proto in protocols:
-            dumped = self.dumps(obj, proto)
-            loaded = self.loads(dumped)
-            self.assertEqual(loaded, obj,
-                             "Failed protocol %d: %r != %r"
-                             % (proto, obj, loaded))
-
-    def test_attribute_name_interning(self):
-        # Test that attribute names of pickled objects are interned when
-        # unpickling.
-        for proto in protocols:
-            x = C()
-            x.foo = 42
-            x.bar = "hello"
-            s = self.dumps(x, proto)
-            y = self.loads(s)
-            x_keys = sorted(x.__dict__)
-            y_keys = sorted(y.__dict__)
-            for x_key, y_key in zip(x_keys, y_keys):
-                self.assertIs(x_key, y_key)
-
-
-# Test classes for reduce_ex
-
-class REX_one(object):
-    _reduce_called = 0
-    def __reduce__(self):
-        self._reduce_called = 1
-        return REX_one, ()
-    # No __reduce_ex__ here, but inheriting it from object
-
-class REX_two(object):
-    _proto = None
-    def __reduce_ex__(self, proto):
-        self._proto = proto
-        return REX_two, ()
-    # No __reduce__ here, but inheriting it from object
-
-class REX_three(object):
-    _proto = None
-    def __reduce_ex__(self, proto):
-        self._proto = proto
-        return REX_two, ()
-    def __reduce__(self):
-        raise TestFailed, "This __reduce__ shouldn't be called"
-
-class REX_four(object):
-    _proto = None
-    def __reduce_ex__(self, proto):
-        self._proto = proto
-        return object.__reduce_ex__(self, proto)
-    # Calling base class method should succeed
-
-class REX_five(object):
-    _reduce_called = 0
-    def __reduce__(self):
-        self._reduce_called = 1
-        return object.__reduce__(self)
-    # This one used to fail with infinite recursion
-
-# Test classes for newobj
-
-class MyInt(int):
-    sample = 1
-
-class MyLong(long):
-    sample = 1L
-
-class MyFloat(float):
-    sample = 1.0
-
-class MyComplex(complex):
-    sample = 1.0 + 0.0j
-
-class MyStr(str):
-    sample = "hello"
-
-class MyUnicode(unicode):
-    sample = u"hello \u1234"
-
-class MyTuple(tuple):
-    sample = (1, 2, 3)
-
-class MyList(list):
-    sample = [1, 2, 3]
-
-class MyDict(dict):
-    sample = {"a": 1, "b": 2}
-
-myclasses = [MyInt, MyLong, MyFloat,
-             MyComplex,
-             MyStr, MyUnicode,
-             MyTuple, MyList, MyDict]
-
-
-class SlotList(MyList):
-    __slots__ = ["foo"]
-
-class SimpleNewObj(object):
-    def __init__(self, a, b, c):
-        # raise an error, to make sure this isn't called
-        raise TypeError("SimpleNewObj.__init__() didn't expect to get called")
-
-class AbstractPickleModuleTests(unittest.TestCase):
-
-    def test_dump_closed_file(self):
-        import os
-        f = open(TESTFN, "w")
-        try:
-            f.close()
-            self.assertRaises(ValueError, self.module.dump, 123, f)
-        finally:
-            os.remove(TESTFN)
-
-    def test_load_closed_file(self):
-        import os
-        f = open(TESTFN, "w")
-        try:
-            f.close()
-            self.assertRaises(ValueError, self.module.dump, 123, f)
-        finally:
-            os.remove(TESTFN)
-
-    def test_load_from_and_dump_to_file(self):
-        stream = cStringIO.StringIO()
-        data = [123, {}, 124]
-        self.module.dump(data, stream)
-        stream.seek(0)
-        unpickled = self.module.load(stream)
-        self.assertEqual(unpickled, data)
-
-    def test_highest_protocol(self):
-        # Of course this needs to be changed when HIGHEST_PROTOCOL changes.
-        self.assertEqual(self.module.HIGHEST_PROTOCOL, 2)
-
-    def test_callapi(self):
-        f = cStringIO.StringIO()
-        # With and without keyword arguments
-        self.module.dump(123, f, -1)
-        self.module.dump(123, file=f, protocol=-1)
-        self.module.dumps(123, -1)
-        self.module.dumps(123, protocol=-1)
-        self.module.Pickler(f, -1)
-        self.module.Pickler(f, protocol=-1)
-
-    def test_incomplete_input(self):
-        s = StringIO.StringIO("X''.")
-        self.assertRaises(EOFError, self.module.load, s)
-
-    def test_restricted(self):
-        # issue7128: cPickle failed in restricted mode
-        builtins = {self.module.__name__: self.module,
-                    '__import__': __import__}
-        d = {}
-        teststr = "def f(): {0}.dumps(0)".format(self.module.__name__)
-        exec teststr in {'__builtins__': builtins}, d
-        d['f']()
-
-    def test_bad_input(self):
-        # Test issue4298
-        s = '\x58\0\0\0\x54'
-        self.assertRaises(EOFError, self.module.loads, s)
-        # Test issue7455
-        s = '0'
-        # XXX Why doesn't pickle raise UnpicklingError?
-        self.assertRaises((IndexError, cPickle.UnpicklingError),
-                          self.module.loads, s)
-
-class AbstractPersistentPicklerTests(unittest.TestCase):
-
-    # This class defines persistent_id() and persistent_load()
-    # functions that should be used by the pickler.  All even integers
-    # are pickled using persistent ids.
-
-    def persistent_id(self, object):
-        if isinstance(object, int) and object % 2 == 0:
-            self.id_count += 1
-            return str(object)
-        else:
-            return None
-
-    def persistent_load(self, oid):
-        self.load_count += 1
-        object = int(oid)
-        assert object % 2 == 0
-        return object
-
-    def test_persistence(self):
-        self.id_count = 0
-        self.load_count = 0
-        L = range(10)
-        self.assertEqual(self.loads(self.dumps(L)), L)
-        self.assertEqual(self.id_count, 5)
-        self.assertEqual(self.load_count, 5)
-
-    def test_bin_persistence(self):
-        self.id_count = 0
-        self.load_count = 0
-        L = range(10)
-        self.assertEqual(self.loads(self.dumps(L, 1)), L)
-        self.assertEqual(self.id_count, 5)
-        self.assertEqual(self.load_count, 5)
-
-class AbstractPicklerUnpicklerObjectTests(unittest.TestCase):
-
-    pickler_class = None
-    unpickler_class = None
-
-    def setUp(self):
-        assert self.pickler_class
-        assert self.unpickler_class
-
-    def test_clear_pickler_memo(self):
-        # To test whether clear_memo() has any effect, we pickle an object,
-        # then pickle it again without clearing the memo; the two serialized
-        # forms should be different. If we clear_memo() and then pickle the
-        # object again, the third serialized form should be identical to the
-        # first one we obtained.
-        data = ["abcdefg", "abcdefg", 44]
-        f = cStringIO.StringIO()
-        pickler = self.pickler_class(f)
-
-        pickler.dump(data)
-        first_pickled = f.getvalue()
-
-        # Reset StringIO object.
-        f.seek(0)
-        f.truncate()
-
-        pickler.dump(data)
-        second_pickled = f.getvalue()
-
-        # Reset the Pickler and StringIO objects.
-        pickler.clear_memo()
-        f.seek(0)
-        f.truncate()
-
-        pickler.dump(data)
-        third_pickled = f.getvalue()
-
-        self.assertNotEqual(first_pickled, second_pickled)
-        self.assertEqual(first_pickled, third_pickled)
-
-    def test_priming_pickler_memo(self):
-        # Verify that we can set the Pickler's memo attribute.
-        data = ["abcdefg", "abcdefg", 44]
-        f = cStringIO.StringIO()
-        pickler = self.pickler_class(f)
-
-        pickler.dump(data)
-        first_pickled = f.getvalue()
-
-        f = cStringIO.StringIO()
-        primed = self.pickler_class(f)
-        primed.memo = pickler.memo
-
-        primed.dump(data)
-        primed_pickled = f.getvalue()
-
-        self.assertNotEqual(first_pickled, primed_pickled)
-
-    def test_priming_unpickler_memo(self):
-        # Verify that we can set the Unpickler's memo attribute.
-        data = ["abcdefg", "abcdefg", 44]
-        f = cStringIO.StringIO()
-        pickler = self.pickler_class(f)
-
-        pickler.dump(data)
-        first_pickled = f.getvalue()
-
-        f = cStringIO.StringIO()
-        primed = self.pickler_class(f)
-        primed.memo = pickler.memo
-
-        primed.dump(data)
-        primed_pickled = f.getvalue()
-
-        unpickler = self.unpickler_class(cStringIO.StringIO(first_pickled))
-        unpickled_data1 = unpickler.load()
-
-        self.assertEqual(unpickled_data1, data)
-
-        primed = self.unpickler_class(cStringIO.StringIO(primed_pickled))
-        primed.memo = unpickler.memo
-        unpickled_data2 = primed.load()
-
-        primed.memo.clear()
-
-        self.assertEqual(unpickled_data2, data)
-        self.assertTrue(unpickled_data2 is unpickled_data1)
-
-    def test_reusing_unpickler_objects(self):
-        data1 = ["abcdefg", "abcdefg", 44]
-        f = cStringIO.StringIO()
-        pickler = self.pickler_class(f)
-        pickler.dump(data1)
-        pickled1 = f.getvalue()
-
-        data2 = ["abcdefg", 44, 44]
-        f = cStringIO.StringIO()
-        pickler = self.pickler_class(f)
-        pickler.dump(data2)
-        pickled2 = f.getvalue()
-
-        f = cStringIO.StringIO()
-        f.write(pickled1)
-        f.seek(0)
-        unpickler = self.unpickler_class(f)
-        self.assertEqual(unpickler.load(), data1)
-
-        f.seek(0)
-        f.truncate()
-        f.write(pickled2)
-        f.seek(0)
-        self.assertEqual(unpickler.load(), data2)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/profilee.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/profilee.py
deleted file mode 100644
index 329479f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/profilee.py
+++ /dev/null
@@ -1,115 +0,0 @@
-"""
-Input for test_profile.py and test_cprofile.py.
-
-IMPORTANT: This stuff is touchy. If you modify anything above the
-test class you'll have to regenerate the stats by running the two
-test files.
-
-*ALL* NUMBERS in the expected output are relevant.  If you change
-the formatting of pstats, please don't just regenerate the expected
-output without checking very carefully that not a single number has
-changed.
-"""
-
-import sys
-
-# In order to have reproducible time, we simulate a timer in the global
-# variable 'TICKS', which represents simulated time in milliseconds.
-# (We can't use a helper function increment the timer since it would be
-# included in the profile and would appear to consume all the time.)
-TICKS = 42000
-
-def timer():
-    return TICKS
-
-def testfunc():
-    # 1 call
-    # 1000 ticks total: 270 ticks local, 730 ticks in subfunctions
-    global TICKS
-    TICKS += 99
-    helper()                            # 300
-    helper()                            # 300
-    TICKS += 171
-    factorial(14)                       # 130
-
-def factorial(n):
-    # 23 calls total
-    # 170 ticks total, 150 ticks local
-    # 3 primitive calls, 130, 20 and 20 ticks total
-    # including 116, 17, 17 ticks local
-    global TICKS
-    if n > 0:
-        TICKS += n
-        return mul(n, factorial(n-1))
-    else:
-        TICKS += 11
-        return 1
-
-def mul(a, b):
-    # 20 calls
-    # 1 tick, local
-    global TICKS
-    TICKS += 1
-    return a * b
-
-def helper():
-    # 2 calls
-    # 300 ticks total: 20 ticks local, 260 ticks in subfunctions
-    global TICKS
-    TICKS += 1
-    helper1()                           # 30
-    TICKS += 2
-    helper1()                           # 30
-    TICKS += 6
-    helper2()                           # 50
-    TICKS += 3
-    helper2()                           # 50
-    TICKS += 2
-    helper2()                           # 50
-    TICKS += 5
-    helper2_indirect()                  # 70
-    TICKS += 1
-
-def helper1():
-    # 4 calls
-    # 30 ticks total: 29 ticks local, 1 tick in subfunctions
-    global TICKS
-    TICKS += 10
-    hasattr(C(), "foo")                 # 1
-    TICKS += 19
-    lst = []
-    lst.append(42)                      # 0
-    sys.exc_info()                      # 0
-
-def helper2_indirect():
-    helper2()                           # 50
-    factorial(3)                        # 20
-
-def helper2():
-    # 8 calls
-    # 50 ticks local: 39 ticks local, 11 ticks in subfunctions
-    global TICKS
-    TICKS += 11
-    hasattr(C(), "bar")                 # 1
-    TICKS += 13
-    subhelper()                         # 10
-    TICKS += 15
-
-def subhelper():
-    # 8 calls
-    # 10 ticks total: 8 ticks local, 2 ticks in subfunctions
-    global TICKS
-    TICKS += 2
-    for i in range(2):                  # 0
-        try:
-            C().foo                     # 1 x 2
-        except AttributeError:
-            TICKS += 3                  # 3 x 2
-
-class C:
-    def __getattr__(self, name):
-        # 28 calls
-        # 1 tick, local
-        global TICKS
-        TICKS += 1
-        raise AttributeError
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pyclbr_input.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pyclbr_input.py
deleted file mode 100644
index 07a3556..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pyclbr_input.py
+++ /dev/null
@@ -1,33 +0,0 @@
-"""Test cases for test_pyclbr.py"""
-
-def f(): pass
-
-class Other(object):
-    @classmethod
-    def foo(c): pass
-
-    def om(self): pass
-
-class B (object):
-    def bm(self): pass
-
-class C (B):
-    foo = Other().foo
-    om = Other.om
-
-    d = 10
-
-    # XXX: This causes test_pyclbr.py to fail, but only because the
-    #      introspection-based is_method() code in the test can't
-    #      distinguish between this and a genuine method function like m().
-    #      The pyclbr.py module gets this right as it parses the text.
-    #
-    #f = f
-
-    def m(self): pass
-
-    @staticmethod
-    def sm(self): pass
-
-    @classmethod
-    def cm(self): pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pydoc_mod.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pydoc_mod.py
deleted file mode 100644
index 4fb76e8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pydoc_mod.py
+++ /dev/null
@@ -1,27 +0,0 @@
-"""This is a test module for test_pydoc"""
-
-__author__ = "Benjamin Peterson"
-__credits__ = "Nobody"
-__version__ = "1.2.3.4"
-
-
-class A:
-    """Hello and goodbye"""
-    def __init__():
-        """Wow, I have no function!"""
-        pass
-
-class B(object):
-    NO_MEANING = "eggs"
-    pass
-
-def doc_func():
-    """
-    This function solves all of the world's problems:
-    hunger
-    lack of Python
-    war
-    """
-
-def nodoc_func():
-    pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pydocfodder.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pydocfodder.py
deleted file mode 100644
index 7e3f884..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pydocfodder.py
+++ /dev/null
@@ -1,216 +0,0 @@
-"""Something just to look at via pydoc."""
-
-import types
-
-class A_classic:
-    "A classic class."
-    def A_method(self):
-        "Method defined in A."
-    def AB_method(self):
-        "Method defined in A and B."
-    def AC_method(self):
-        "Method defined in A and C."
-    def AD_method(self):
-        "Method defined in A and D."
-    def ABC_method(self):
-        "Method defined in A, B and C."
-    def ABD_method(self):
-        "Method defined in A, B and D."
-    def ACD_method(self):
-        "Method defined in A, C and D."
-    def ABCD_method(self):
-        "Method defined in A, B, C and D."
-
-
-class B_classic(A_classic):
-    "A classic class, derived from A_classic."
-    def AB_method(self):
-        "Method defined in A and B."
-    def ABC_method(self):
-        "Method defined in A, B and C."
-    def ABD_method(self):
-        "Method defined in A, B and D."
-    def ABCD_method(self):
-        "Method defined in A, B, C and D."
-    def B_method(self):
-        "Method defined in B."
-    def BC_method(self):
-        "Method defined in B and C."
-    def BD_method(self):
-        "Method defined in B and D."
-    def BCD_method(self):
-        "Method defined in B, C and D."
-
-class C_classic(A_classic):
-    "A classic class, derived from A_classic."
-    def AC_method(self):
-        "Method defined in A and C."
-    def ABC_method(self):
-        "Method defined in A, B and C."
-    def ACD_method(self):
-        "Method defined in A, C and D."
-    def ABCD_method(self):
-        "Method defined in A, B, C and D."
-    def BC_method(self):
-        "Method defined in B and C."
-    def BCD_method(self):
-        "Method defined in B, C and D."
-    def C_method(self):
-        "Method defined in C."
-    def CD_method(self):
-        "Method defined in C and D."
-
-class D_classic(B_classic, C_classic):
-    "A classic class, derived from B_classic and C_classic."
-    def AD_method(self):
-        "Method defined in A and D."
-    def ABD_method(self):
-        "Method defined in A, B and D."
-    def ACD_method(self):
-        "Method defined in A, C and D."
-    def ABCD_method(self):
-        "Method defined in A, B, C and D."
-    def BD_method(self):
-        "Method defined in B and D."
-    def BCD_method(self):
-        "Method defined in B, C and D."
-    def CD_method(self):
-        "Method defined in C and D."
-    def D_method(self):
-        "Method defined in D."
-
-
-class A_new(object):
-    "A new-style class."
-
-    def A_method(self):
-        "Method defined in A."
-    def AB_method(self):
-        "Method defined in A and B."
-    def AC_method(self):
-        "Method defined in A and C."
-    def AD_method(self):
-        "Method defined in A and D."
-    def ABC_method(self):
-        "Method defined in A, B and C."
-    def ABD_method(self):
-        "Method defined in A, B and D."
-    def ACD_method(self):
-        "Method defined in A, C and D."
-    def ABCD_method(self):
-        "Method defined in A, B, C and D."
-
-    def A_classmethod(cls, x):
-        "A class method defined in A."
-    A_classmethod = classmethod(A_classmethod)
-
-    def A_staticmethod():
-        "A static method defined in A."
-    A_staticmethod = staticmethod(A_staticmethod)
-
-    def _getx(self):
-        "A property getter function."
-    def _setx(self, value):
-        "A property setter function."
-    def _delx(self):
-        "A property deleter function."
-    A_property = property(fdel=_delx, fget=_getx, fset=_setx,
-                          doc="A sample property defined in A.")
-
-    A_int_alias = int
-
-class B_new(A_new):
-    "A new-style class, derived from A_new."
-
-    def AB_method(self):
-        "Method defined in A and B."
-    def ABC_method(self):
-        "Method defined in A, B and C."
-    def ABD_method(self):
-        "Method defined in A, B and D."
-    def ABCD_method(self):
-        "Method defined in A, B, C and D."
-    def B_method(self):
-        "Method defined in B."
-    def BC_method(self):
-        "Method defined in B and C."
-    def BD_method(self):
-        "Method defined in B and D."
-    def BCD_method(self):
-        "Method defined in B, C and D."
-
-class C_new(A_new):
-    "A new-style class, derived from A_new."
-
-    def AC_method(self):
-        "Method defined in A and C."
-    def ABC_method(self):
-        "Method defined in A, B and C."
-    def ACD_method(self):
-        "Method defined in A, C and D."
-    def ABCD_method(self):
-        "Method defined in A, B, C and D."
-    def BC_method(self):
-        "Method defined in B and C."
-    def BCD_method(self):
-        "Method defined in B, C and D."
-    def C_method(self):
-        "Method defined in C."
-    def CD_method(self):
-        "Method defined in C and D."
-
-class D_new(B_new, C_new):
-    """A new-style class, derived from B_new and C_new.
-    """
-
-    def AD_method(self):
-        "Method defined in A and D."
-    def ABD_method(self):
-        "Method defined in A, B and D."
-    def ACD_method(self):
-        "Method defined in A, C and D."
-    def ABCD_method(self):
-        "Method defined in A, B, C and D."
-    def BD_method(self):
-        "Method defined in B and D."
-    def BCD_method(self):
-        "Method defined in B, C and D."
-    def CD_method(self):
-        "Method defined in C and D."
-    def D_method(self):
-        "Method defined in D."
-
-class FunkyProperties(object):
-    """From SF bug 472347, by Roeland Rengelink.
-
-    Property getters etc may not be vanilla functions or methods,
-    and this used to make GUI pydoc blow up.
-    """
-
-    def __init__(self):
-        self.desc = {'x':0}
-
-    class get_desc:
-        def __init__(self, attr):
-            self.attr = attr
-        def __call__(self, inst):
-            print 'Get called', self, inst
-            return inst.desc[self.attr]
-    class set_desc:
-        def __init__(self, attr):
-            self.attr = attr
-        def __call__(self, inst, val):
-            print 'Set called', self, inst, val
-            inst.desc[self.attr] = val
-    class del_desc:
-        def __init__(self, attr):
-            self.attr = attr
-        def __call__(self, inst):
-            print 'Del called', self, inst
-            del inst.desc[self.attr]
-
-    x = property(get_desc('x'), set_desc('x'), del_desc('x'), 'prop x')
-
-
-submodule = types.ModuleType(__name__ + '.submodule',
-    """A submodule, which should appear in its parent's summary""")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pystone.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pystone.py
deleted file mode 100644
index 5de9eab..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/pystone.py
+++ /dev/null
@@ -1,270 +0,0 @@
-#! /usr/bin/env python
-
-"""
-"PYSTONE" Benchmark Program
-
-Version:        Python/1.1 (corresponds to C/1.1 plus 2 Pystone fixes)
-
-Author:         Reinhold P. Weicker,  CACM Vol 27, No 10, 10/84 pg. 1013.
-
-                Translated from ADA to C by Rick Richardson.
-                Every method to preserve ADA-likeness has been used,
-                at the expense of C-ness.
-
-                Translated from C to Python by Guido van Rossum.
-
-Version History:
-
-                Version 1.1 corrects two bugs in version 1.0:
-
-                First, it leaked memory: in Proc1(), NextRecord ends
-                up having a pointer to itself.  I have corrected this
-                by zapping NextRecord.PtrComp at the end of Proc1().
-
-                Second, Proc3() used the operator != to compare a
-                record to None.  This is rather inefficient and not
-                true to the intention of the original benchmark (where
-                a pointer comparison to None is intended; the !=
-                operator attempts to find a method __cmp__ to do value
-                comparison of the record).  Version 1.1 runs 5-10
-                percent faster than version 1.0, so benchmark figures
-                of different versions can't be compared directly.
-
-"""
-
-LOOPS = 50000
-
-from time import clock
-
-__version__ = "1.1"
-
-[Ident1, Ident2, Ident3, Ident4, Ident5] = range(1, 6)
-
-class Record:
-
-    def __init__(self, PtrComp = None, Discr = 0, EnumComp = 0,
-                       IntComp = 0, StringComp = 0):
-        self.PtrComp = PtrComp
-        self.Discr = Discr
-        self.EnumComp = EnumComp
-        self.IntComp = IntComp
-        self.StringComp = StringComp
-
-    def copy(self):
-        return Record(self.PtrComp, self.Discr, self.EnumComp,
-                      self.IntComp, self.StringComp)
-
-TRUE = 1
-FALSE = 0
-
-def main(loops=LOOPS):
-    benchtime, stones = pystones(loops)
-    print "Pystone(%s) time for %d passes = %g" % \
-          (__version__, loops, benchtime)
-    print "This machine benchmarks at %g pystones/second" % stones
-
-
-def pystones(loops=LOOPS):
-    return Proc0(loops)
-
-IntGlob = 0
-BoolGlob = FALSE
-Char1Glob = '\0'
-Char2Glob = '\0'
-Array1Glob = [0]*51
-Array2Glob = map(lambda x: x[:], [Array1Glob]*51)
-PtrGlb = None
-PtrGlbNext = None
-
-def Proc0(loops=LOOPS):
-    global IntGlob
-    global BoolGlob
-    global Char1Glob
-    global Char2Glob
-    global Array1Glob
-    global Array2Glob
-    global PtrGlb
-    global PtrGlbNext
-
-    starttime = clock()
-    for i in range(loops):
-        pass
-    nulltime = clock() - starttime
-
-    PtrGlbNext = Record()
-    PtrGlb = Record()
-    PtrGlb.PtrComp = PtrGlbNext
-    PtrGlb.Discr = Ident1
-    PtrGlb.EnumComp = Ident3
-    PtrGlb.IntComp = 40
-    PtrGlb.StringComp = "DHRYSTONE PROGRAM, SOME STRING"
-    String1Loc = "DHRYSTONE PROGRAM, 1'ST STRING"
-    Array2Glob[8][7] = 10
-
-    starttime = clock()
-
-    for i in range(loops):
-        Proc5()
-        Proc4()
-        IntLoc1 = 2
-        IntLoc2 = 3
-        String2Loc = "DHRYSTONE PROGRAM, 2'ND STRING"
-        EnumLoc = Ident2
-        BoolGlob = not Func2(String1Loc, String2Loc)
-        while IntLoc1 < IntLoc2:
-            IntLoc3 = 5 * IntLoc1 - IntLoc2
-            IntLoc3 = Proc7(IntLoc1, IntLoc2)
-            IntLoc1 = IntLoc1 + 1
-        Proc8(Array1Glob, Array2Glob, IntLoc1, IntLoc3)
-        PtrGlb = Proc1(PtrGlb)
-        CharIndex = 'A'
-        while CharIndex <= Char2Glob:
-            if EnumLoc == Func1(CharIndex, 'C'):
-                EnumLoc = Proc6(Ident1)
-            CharIndex = chr(ord(CharIndex)+1)
-        IntLoc3 = IntLoc2 * IntLoc1
-        IntLoc2 = IntLoc3 / IntLoc1
-        IntLoc2 = 7 * (IntLoc3 - IntLoc2) - IntLoc1
-        IntLoc1 = Proc2(IntLoc1)
-
-    benchtime = clock() - starttime - nulltime
-    if benchtime == 0.0:
-        loopsPerBenchtime = 0.0
-    else:
-        loopsPerBenchtime = (loops / benchtime)
-    return benchtime, loopsPerBenchtime
-
-def Proc1(PtrParIn):
-    PtrParIn.PtrComp = NextRecord = PtrGlb.copy()
-    PtrParIn.IntComp = 5
-    NextRecord.IntComp = PtrParIn.IntComp
-    NextRecord.PtrComp = PtrParIn.PtrComp
-    NextRecord.PtrComp = Proc3(NextRecord.PtrComp)
-    if NextRecord.Discr == Ident1:
-        NextRecord.IntComp = 6
-        NextRecord.EnumComp = Proc6(PtrParIn.EnumComp)
-        NextRecord.PtrComp = PtrGlb.PtrComp
-        NextRecord.IntComp = Proc7(NextRecord.IntComp, 10)
-    else:
-        PtrParIn = NextRecord.copy()
-    NextRecord.PtrComp = None
-    return PtrParIn
-
-def Proc2(IntParIO):
-    IntLoc = IntParIO + 10
-    while 1:
-        if Char1Glob == 'A':
-            IntLoc = IntLoc - 1
-            IntParIO = IntLoc - IntGlob
-            EnumLoc = Ident1
-        if EnumLoc == Ident1:
-            break
-    return IntParIO
-
-def Proc3(PtrParOut):
-    global IntGlob
-
-    if PtrGlb is not None:
-        PtrParOut = PtrGlb.PtrComp
-    else:
-        IntGlob = 100
-    PtrGlb.IntComp = Proc7(10, IntGlob)
-    return PtrParOut
-
-def Proc4():
-    global Char2Glob
-
-    BoolLoc = Char1Glob == 'A'
-    BoolLoc = BoolLoc or BoolGlob
-    Char2Glob = 'B'
-
-def Proc5():
-    global Char1Glob
-    global BoolGlob
-
-    Char1Glob = 'A'
-    BoolGlob = FALSE
-
-def Proc6(EnumParIn):
-    EnumParOut = EnumParIn
-    if not Func3(EnumParIn):
-        EnumParOut = Ident4
-    if EnumParIn == Ident1:
-        EnumParOut = Ident1
-    elif EnumParIn == Ident2:
-        if IntGlob > 100:
-            EnumParOut = Ident1
-        else:
-            EnumParOut = Ident4
-    elif EnumParIn == Ident3:
-        EnumParOut = Ident2
-    elif EnumParIn == Ident4:
-        pass
-    elif EnumParIn == Ident5:
-        EnumParOut = Ident3
-    return EnumParOut
-
-def Proc7(IntParI1, IntParI2):
-    IntLoc = IntParI1 + 2
-    IntParOut = IntParI2 + IntLoc
-    return IntParOut
-
-def Proc8(Array1Par, Array2Par, IntParI1, IntParI2):
-    global IntGlob
-
-    IntLoc = IntParI1 + 5
-    Array1Par[IntLoc] = IntParI2
-    Array1Par[IntLoc+1] = Array1Par[IntLoc]
-    Array1Par[IntLoc+30] = IntLoc
-    for IntIndex in range(IntLoc, IntLoc+2):
-        Array2Par[IntLoc][IntIndex] = IntLoc
-    Array2Par[IntLoc][IntLoc-1] = Array2Par[IntLoc][IntLoc-1] + 1
-    Array2Par[IntLoc+20][IntLoc] = Array1Par[IntLoc]
-    IntGlob = 5
-
-def Func1(CharPar1, CharPar2):
-    CharLoc1 = CharPar1
-    CharLoc2 = CharLoc1
-    if CharLoc2 != CharPar2:
-        return Ident1
-    else:
-        return Ident2
-
-def Func2(StrParI1, StrParI2):
-    IntLoc = 1
-    while IntLoc <= 1:
-        if Func1(StrParI1[IntLoc], StrParI2[IntLoc+1]) == Ident1:
-            CharLoc = 'A'
-            IntLoc = IntLoc + 1
-    if CharLoc >= 'W' and CharLoc <= 'Z':
-        IntLoc = 7
-    if CharLoc == 'X':
-        return TRUE
-    else:
-        if StrParI1 > StrParI2:
-            IntLoc = IntLoc + 7
-            return TRUE
-        else:
-            return FALSE
-
-def Func3(EnumParIn):
-    EnumLoc = EnumParIn
-    if EnumLoc == Ident3: return TRUE
-    return FALSE
-
-if __name__ == '__main__':
-    import sys
-    def error(msg):
-        print >>sys.stderr, msg,
-        print >>sys.stderr, "usage: %s [number_of_loops]" % sys.argv[0]
-        sys.exit(100)
-    nargs = len(sys.argv) - 1
-    if nargs > 1:
-        error("%d arguments are too many;" % nargs)
-    elif nargs == 1:
-        try: loops = int(sys.argv[1])
-        except ValueError:
-            error("Invalid argument %r;" % sys.argv[1])
-    else:
-        loops = LOOPS
-    main(loops)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv2_32.pck b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv2_32.pck
deleted file mode 100644
index b291c29..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv2_32.pck
+++ /dev/null
@@ -1,633 +0,0 @@
-crandom
-Random
-p0
-(tRp1
-(I2
-(I-2147483648
-I-845974985
-I-1294090086
-I1193659239
-I-1849481736
-I-946579732
-I-34406770
-I1749049471
-I1997774682
-I1432026457
-I1288127073
-I-943175655
-I-1718073964
-I339993548
-I-1045260575
-I582505037
-I-1555108250
-I-1114765620
-I1578648750
-I-350384412
-I-20845848
-I-288255314
-I738790953
-I1901249641
-I1999324672
-I-277361068
-I-1515885839
-I2061761596
-I-809068089
-I1287981136
-I258129492
-I-6303745
-I-765148337
-I1090344911
-I1653434703
-I-1242923628
-I1639171313
-I-1870042660
-I-1655014050
-I345609048
-I2093410138
-I1963263374
-I-2122098342
-I1336859961
-I-810942729
-I945857753
-I2103049942
-I623922684
-I1418349549
-I690877342
-I754973107
-I-1605111847
-I1607137813
-I-1704917131
-I1317536428
-I1714882872
-I-1665385120
-I1823694397
-I-1790836866
-I-1696724812
-I-603979847
-I-498599394
-I-341265291
-I927388804
-I1778562135
-I1716895781
-I1023198122
-I1726145967
-I941955525
-I1240148950
-I-1929634545
-I-1288147083
-I-519318335
-I754559777
-I-707571958
-I374604022
-I420424061
-I-1095443486
-I1621934944
-I-1220502522
-I-140049608
-I-918917122
-I304341024
-I-1637446057
-I-353934485
-I1973436235
-I433380241
-I-686759465
-I-2111563154
-I-573422032
-I804304541
-I1513063483
-I1417381689
-I-804778729
-I211756408
-I544537322
-I890881641
-I150378374
-I1765739392
-I1011604116
-I584889095
-I1400520554
-I413747808
-I-1741992587
-I-1882421574
-I-1373001903
-I-1885348538
-I903819480
-I1083220038
-I-1318105424
-I1740421404
-I1693089625
-I775965557
-I1319608037
-I-2127475785
-I-367562895
-I-1416273451
-I1693000327
-I-1217438421
-I834405522
-I-128287275
-I864057548
-I-973917356
-I7304111
-I1712253182
-I1353897741
-I672982288
-I1778575559
-I-403058377
-I-38540378
-I-1393713496
-I13193171
-I1127196200
-I205176472
-I-2104790506
-I299985416
-I1403541685
-I-1018270667
-I-1980677490
-I-1182625797
-I1637015181
-I-1795357414
-I1514413405
-I-924516237
-I-1841873650
-I-1014591269
-I1576616065
-I-1319103135
-I-120847840
-I2062259778
-I-9285070
-I1160890300
-I-575137313
-I-1509108275
-I46701926
-I-287560914
-I-256824960
-I577558250
-I900598310
-I944607867
-I2121154920
-I-1170505192
-I-1347170575
-I77247778
-I-1899015765
-I1234103327
-I1027053658
-I1934632322
-I-792031234
-I1147322536
-I1290655117
-I1002059715
-I1325898538
-I896029793
-I-790940694
-I-980470721
-I-1922648255
-I-951672814
-I291543943
-I1158740218
-I-1959023736
-I-1977185236
-I1527900076
-I514104195
-I-814154113
-I-593157883
-I-1023704660
-I1285688377
-I-2117525386
-I768954360
-I-38676846
-I-799848659
-I-1305517259
-I-1938213641
-I-462146758
-I-1663302892
-I1899591069
-I-22935388
-I-275856976
-I-443736893
-I-739441156
-I93862068
-I-838105669
-I1735629845
-I-817484206
-I280814555
-I1753547179
-I1811123479
-I1974543632
-I-48447465
-I-642694345
-I-531149613
-I518698953
-I-221642627
-I-686519187
-I776644303
-I257774400
-I-1499134857
-I-1055273455
-I-237023943
-I1981752330
-I-917671662
-I-372905983
-I1588058420
-I1171936660
-I-1730977121
-I1360028989
-I1769469287
-I1910709542
-I-852692959
-I1396944667
-I-1723999155
-I-310975435
-I-1965453954
-I-1636858570
-I2005650794
-I680293715
-I1355629386
-I844514684
-I-1909152807
-I-808646074
-I1936510018
-I1134413810
-I-143411047
-I-1478436304
-I1394969244
-I-1170110660
-I1963112086
-I-1518351049
-I-1506287443
-I-455023090
-I-855366028
-I-1746785568
-I933990882
-I-703625141
-I-285036872
-I188277905
-I1471578620
-I-981382835
-I-586974220
-I945619758
-I1608778444
-I-1708548066
-I-1897629320
-I-42617810
-I-836840790
-I539154487
-I-235706962
-I332074418
-I-575700589
-I1534608003
-I632116560
-I-1819760653
-I642052958
-I-722391771
-I-1104719475
-I-1196847084
-I582413973
-I1563394876
-I642007944
-I108989456
-I361625014
-I677308625
-I-1806529496
-I-959050708
-I-1858251070
-I-216069832
-I701624579
-I501238033
-I12287030
-I1895107107
-I2089098638
-I-874806230
-I1236279203
-I563718890
-I-544352489
-I-1879707498
-I1767583393
-I-1776604656
-I-693294301
-I-88882831
-I169303357
-I1299196152
-I-1122791089
-I-379157172
-I1934671851
-I1575736961
-I-19573174
-I-1401511009
-I9305167
-I-1115174467
-I1670735537
-I1226436501
-I-2004524535
-I1767463878
-I-1722855079
-I-559413926
-I1529810851
-I1201272087
-I-1297130971
-I-1188149982
-I1396557188
-I-370358342
-I-1006619702
-I1600942463
-I906087130
-I-76991909
-I2069580179
-I-1674195181
-I-2098404729
-I-940972459
-I-573399187
-I-1930386277
-I-721311199
-I-647834744
-I1452181671
-I688681916
-I1812793731
-I1704380620
-I-1389615179
-I866287837
-I-1435265007
-I388400782
-I-147986600
-I-1613598851
-I-1040347408
-I782063323
-I-239282031
-I-575966722
-I-1865208174
-I-481365146
-I579572803
-I-1239481494
-I335361280
-I-429722947
-I1881772789
-I1908103808
-I1653690013
-I-1668588344
-I1933787953
-I-2033480609
-I22162797
-I-1516527040
-I-461232482
-I-16201372
-I-2043092030
-I114990337
-I-1524090084
-I1456374020
-I458606440
-I-1928083218
-I227773125
-I-1129028159
-I1678689
-I1575896907
-I-1792935220
-I-151387575
-I64084088
-I-95737215
-I1337335688
-I-1963466345
-I1243315130
-I-1798518411
-I-546013212
-I-607065396
-I1219824160
-I1715218469
-I-1368163783
-I1701552913
-I-381114888
-I1068821717
-I266062971
-I-2066513172
-I1767407229
-I-780936414
-I-705413443
-I-1256268847
-I1646874149
-I1107690353
-I839133072
-I67001749
-I860763503
-I884880613
-I91977084
-I755371933
-I420745153
-I-578480690
-I-1520193551
-I1011369331
-I-99754575
-I-733141064
-I-500598588
-I1081124271
-I-1341266575
-I921002612
-I-848852487
-I-1904467341
-I-1294256973
-I-94074714
-I-1778758498
-I-1401188547
-I2101830578
-I2058864877
-I-272875991
-I-1375854779
-I-1332937870
-I619425525
-I-1034529639
-I-36454393
-I-2030499985
-I-1637127500
-I-1408110287
-I-2108625749
-I-961007436
-I1475654951
-I-791946251
-I1667792115
-I1818978830
-I1897980514
-I1959546477
-I-74478911
-I-508643347
-I461594399
-I538802715
-I-2094970071
-I-2076660253
-I1091358944
-I1944029246
-I-343957436
-I-1915845022
-I1237620188
-I1144125174
-I1522190520
-I-670252952
-I-19469226
-I675626510
-I758750096
-I909724354
-I-1846259652
-I544669343
-I445182495
-I-821519930
-I-1124279685
-I-1668995122
-I1653284793
-I-678555151
-I-687513207
-I1558259445
-I-1978866839
-I1558835601
-I1732138472
-I-1904793363
-I620020296
-I1562597874
-I1942617227
-I-549632552
-I721603795
-I417978456
-I-1355281522
-I-538065208
-I-1079523196
-I187375699
-I449064972
-I1018083947
-I1632388882
-I-493269866
-I92769041
-I1477146750
-I1782708404
-I444873376
-I1085851104
-I-6823272
-I-1302251853
-I1602050688
-I-1042187824
-I287161745
-I-1972094479
-I103271491
-I2131619773
-I-2064115870
-I766815498
-I990861458
-I-1664407378
-I1083746756
-I-1018331904
-I-677315687
-I-951670647
-I-952356874
-I451460609
-I-818615564
-I851439508
-I656362634
-I-1351240485
-I823378078
-I1985597385
-I597757740
-I-1512303057
-I1590872798
-I1108424213
-I818850898
-I-1368594306
-I-201107761
-I1793370378
-I1247597611
-I-1594326264
-I-601653890
-I427642759
-I248322113
-I-292545338
-I1708985870
-I1917042771
-I429354503
-I-478470329
-I793960014
-I369939133
-I1728189157
-I-518963626
-I-278523974
-I-1877289696
-I-2088617658
-I-1367940049
-I-62295925
-I197975119
-I-252900777
-I803430539
-I485759441
-I-528283480
-I-1287443963
-I-478617444
-I-861906946
-I-649095555
-I-893184337
-I2050571322
-I803433133
-I1629574571
-I1649720417
-I-2050225209
-I1208598977
-I720314344
-I-615166251
-I-835077127
-I-1405372429
-I995698064
-I148123240
-I-943016676
-I-594609622
-I-1381596711
-I1017195301
-I-1268893013
-I-1815985179
-I-1393570351
-I-870027364
-I-476064472
-I185582645
-I569863326
-I1098584267
-I-1599147006
-I-485054391
-I-852098365
-I1477320135
-I222316762
-I-1515583064
-I-935051367
-I393383063
-I819617226
-I722921837
-I-1241806499
-I-1358566385
-I1666813591
-I1333875114
-I-1663688317
-I-47254623
-I-885800726
-I307388991
-I-1219459496
-I1374870300
-I2132047877
-I-1385624198
-I-245139206
-I1015139214
-I-926198559
-I1969798868
-I-1950480619
-I-559193432
-I-1256446518
-I-1983476981
-I790179655
-I1004289659
-I1541827617
-I1555805575
-I501127333
-I-1123446797
-I-453230915
-I2035104883
-I1296122398
-I-1843698604
-I-715464588
-I337143971
-I-1972119192
-I606777909
-I726977302
-I-1149501872
-I-1963733522
-I-1797504644
-I624
-tp2
-Ntp3
-b.
\ No newline at end of file
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv2_64.pck b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv2_64.pck
deleted file mode 100644
index a63ac31..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv2_64.pck
+++ /dev/null
@@ -1,633 +0,0 @@
-crandom
-Random
-p0
-(tRp1
-(I2
-(I2147483648
-I1812115682
-I2741755497
-I1028055730
-I809166036
-I2773628650
-I62321950
-I535290043
-I349877800
-I976167039
-I2490696940
-I3631326955
-I2107991114
-I2941205793
-I3199611605
-I1871971556
-I1456108540
-I2984591044
-I140836801
-I4203227310
-I3652722980
-I4031971234
-I555769760
-I697301296
-I2347638880
-I3302335858
-I320255162
-I2553586608
-I1570224361
-I2838780912
-I2315834918
-I2351348158
-I3545433015
-I2292018579
-I1177569331
-I758497559
-I2913311175
-I1014948880
-I1793619243
-I3982451053
-I3850988342
-I2393984324
-I1583100093
-I3144742543
-I3655047493
-I3507532385
-I3094515442
-I350042434
-I2455294844
-I1038739312
-I313809152
-I189433072
-I1653165452
-I4186650593
-I19281455
-I2589680619
-I4145931590
-I4283266118
-I636283172
-I943618337
-I3170184633
-I2308766231
-I634615159
-I538152647
-I2079576891
-I1029442616
-I3410689412
-I1370292761
-I1071718978
-I2139496322
-I1876699543
-I3485866187
-I3157490130
-I1633105386
-I1453253160
-I3841322080
-I3789608924
-I4110770792
-I95083673
-I931354627
-I2065389591
-I3448339827
-I3348204577
-I3263528560
-I2411324590
-I4003055026
-I1869670093
-I2737231843
-I4150701155
-I2689667621
-I2993263224
-I3239890140
-I1191430483
-I1214399779
-I3623428533
-I1817058866
-I3052274451
-I326030082
-I1505129312
-I2306812262
-I1349150363
-I1099127895
-I2543465574
-I2396380193
-I503926466
-I1607109730
-I3451716817
-I58037114
-I4290081119
-I947517597
-I3083440186
-I520522630
-I2948962496
-I4184319574
-I2957636335
-I668374201
-I2325446473
-I472785314
-I3791932366
-I573017189
-I2185725379
-I1262251492
-I3525089379
-I2951262653
-I1305347305
-I940958122
-I3343754566
-I359371744
-I3874044973
-I396897232
-I147188248
-I716683703
-I4013880315
-I1133359586
-I1794612249
-I3480815192
-I3988787804
-I1729355809
-I573408542
-I1419310934
-I1770030447
-I3552845567
-I1693976502
-I1271189893
-I2298236738
-I2049219027
-I3464198070
-I1233574082
-I1007451781
-I1838253750
-I687096593
-I1131375603
-I1223013895
-I1490478435
-I339265439
-I4232792659
-I491538536
-I2816256769
-I1044097522
-I2566227049
-I748762793
-I1511830494
-I3593259822
-I4121279213
-I3735541309
-I3609794797
-I1939942331
-I377570434
-I1437957554
-I1831285696
-I55062811
-I2046783110
-I1303902283
-I1838349877
-I420993556
-I1256392560
-I2795216506
-I2783687924
-I3322303169
-I512794749
-I308405826
-I517164429
-I3320436022
-I1328403632
-I2269184746
-I3729522810
-I3304314450
-I2238756124
-I1690581361
-I3813277532
-I4119706879
-I2659447875
-I388818978
-I2064580814
-I1586227676
-I2627522685
-I2017792269
-I547928109
-I859107450
-I1062238929
-I858886237
-I3795783146
-I4173914756
-I3835915965
-I3329504821
-I3494579904
-I838863205
-I3399734724
-I4247387481
-I3618414834
-I2984433798
-I2165205561
-I4260685684
-I3045904244
-I3450093836
-I3597307595
-I3215851166
-I3162801328
-I2558283799
-I950068105
-I1829664117
-I3108542987
-I2378860527
-I790023460
-I280087750
-I1171478018
-I2333653728
-I3976932140
-I896746152
-I1802494195
-I1232873794
-I2749440836
-I2032037296
-I2012091682
-I1296131034
-I3892133385
-I908161334
-I2296791795
-I548169794
-I696265
-I893156828
-I426904709
-I3565374535
-I2655906825
-I2792178515
-I2406814632
-I4038847579
-I3123934642
-I2197503004
-I3535032597
-I2266216689
-I2117613462
-I1787448518
-I1875089416
-I2037165384
-I1140676321
-I3606296464
-I3229138231
-I2458267132
-I1874651171
-I3331900867
-I1000557654
-I1432861701
-I473636323
-I2691783927
-I1871437447
-I1328016401
-I4118690062
-I449467602
-I681789035
-I864889442
-I1200888928
-I75769445
-I4008690037
-I2464577667
-I4167795823
-I3070097648
-I2579174882
-I1216886568
-I3810116343
-I2249507485
-I3266903480
-I3671233480
-I100191658
-I3087121334
-I365063087
-I3821275176
-I2165052848
-I1282465245
-I3601570637
-I3132413236
-I2780570459
-I3222142917
-I3129794692
-I2611590811
-I947031677
-I2991908938
-I750997949
-I3632575131
-I1632014461
-I2846484755
-I2347261779
-I2903959448
-I1397316686
-I1904578392
-I774649578
-I3164598558
-I2429587609
-I738244516
-I1563304975
-I1399317414
-I1021316297
-I3187933234
-I2126780757
-I4011907847
-I4095169219
-I3358010054
-I2729978247
-I3736811646
-I3009656410
-I2893043637
-I4027447385
-I1239610110
-I1488806900
-I2674866844
-I442876374
-I2853687260
-I2785921005
-I3151378528
-I1180567
-I2803146964
-I982221759
-I2192919417
-I3087026181
-I2480838002
-I738452921
-I687986185
-I3049371676
-I3636492954
-I3468311299
-I2379621102
-I788988633
-I1643210601
-I2983998168
-I2492730801
-I2586048705
-I604073029
-I4121082815
-I1496476928
-I2972357110
-I2663116968
-I2642628592
-I2116052039
-I487186279
-I2577680328
-I3974766614
-I730776636
-I3842528855
-I1929093695
-I44626622
-I3989908833
-I1695426222
-I3675479382
-I3051784964
-I1514876613
-I1254036595
-I2420450649
-I3034377361
-I2332990590
-I1535175126
-I185834384
-I1107372900
-I1707278185
-I1286285295
-I3332574225
-I2785672437
-I883170645
-I2005666473
-I3403131327
-I4122021352
-I1464032858
-I3702576112
-I260554598
-I1837731650
-I2594435345
-I75771049
-I2012484289
-I3058649775
-I29979703
-I3861335335
-I2506495152
-I3786448704
-I442947790
-I2582724774
-I4291336243
-I2568189843
-I1923072690
-I1121589611
-I837696302
-I3284631720
-I3865021324
-I3576453165
-I2559531629
-I1459231762
-I3506550036
-I3754420159
-I2622000757
-I124228596
-I1084328605
-I1692830753
-I547273558
-I674282621
-I655259103
-I3188629610
-I490502174
-I2081001293
-I3191330704
-I4109943593
-I1859948504
-I3163806460
-I508833168
-I1256371033
-I2709253790
-I2068956572
-I3092842814
-I3913926529
-I2039638759
-I981982529
-I536094190
-I368855295
-I51993975
-I1597480732
-I4058175522
-I2155896702
-I3196251991
-I1081913893
-I3952353788
-I3545548108
-I2370669647
-I2206572308
-I2576392991
-I1732303374
-I1153136290
-I537641955
-I1738691747
-I3232854186
-I2539632206
-I2829760278
-I3058187853
-I1202425792
-I3762361970
-I2863949342
-I2640635867
-I376638744
-I1857679757
-I330798087
-I1457400505
-I1135610046
-I606400715
-I1859536026
-I509811335
-I529772308
-I2579273244
-I1890382004
-I3959908876
-I2612335971
-I2834052227
-I1434475986
-I3684202717
-I4015011345
-I582567852
-I3689969571
-I3934753460
-I3034960691
-I208573292
-I4004113742
-I3992904842
-I2587153719
-I3529179079
-I1565424987
-I779130678
-I1048582935
-I3213591622
-I3607793434
-I3951254937
-I2047811901
-I7508850
-I248544605
-I4210090324
-I2331490884
-I70057213
-I776474945
-I1345528889
-I3290403612
-I1664955269
-I1533143116
-I545003424
-I4141564478
-I1257326139
-I868843601
-I2337603029
-I1918131449
-I1843439523
-I1125519035
-I673340118
-I421408852
-I1520454906
-I1804722630
-I3621254196
-I2329968000
-I39464672
-I430583134
-I294026512
-I53978525
-I2892276105
-I1418863764
-I3419054451
-I1391595797
-I3544981798
-I4191780858
-I825672357
-I2972000844
-I1571305069
-I4231982845
-I3611916419
-I3045163168
-I2982349733
-I278572141
-I4215338078
-I839860504
-I1819151779
-I1412347479
-I1386770353
-I3914589491
-I3783104977
-I4124296733
-I830546258
-I89825624
-I4110601328
-I2545483429
-I300600527
-I516641158
-I3693021034
-I2852912854
-I3240039868
-I4167407959
-I1479557946
-I3621188804
-I1391590944
-I3578441128
-I1227055556
-I406898396
-I3064054983
-I25835338
-I402664165
-I4097682779
-I2106728012
-I203613622
-I3045467686
-I1381726438
-I3798670110
-I1342314961
-I3552497361
-I535913619
-I2625787583
-I1606574307
-I1101269630
-I1950513752
-I1121355862
-I3586816903
-I438529984
-I2473182121
-I1229997203
-I405445940
-I1695535315
-I427014336
-I3916768430
-I392298359
-I1884642868
-I1244730821
-I741058080
-I567479957
-I3527621168
-I3191971011
-I3267069104
-I4108668146
-I1520795587
-I166581006
-I473794477
-I1562126550
-I929843010
-I889533294
-I1266556608
-I874518650
-I3520162092
-I3013765049
-I4220231414
-I547246449
-I3998093769
-I3737193746
-I3872944207
-I793651876
-I2606384318
-I875991012
-I1394836334
-I4102011644
-I854380426
-I2618666767
-I2568302000
-I1995512132
-I229491093
-I2673500286
-I3364550739
-I3836923416
-I243656987
-I3944388983
-I4064949677
-I1416956378
-I1703244487
-I3990798829
-I2023425781
-I3926702214
-I1229015501
-I3174247824
-I624
-tp2
-Ntp3
-b.
\ No newline at end of file
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv3.pck b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv3.pck
deleted file mode 100644
index d5da21c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/randv3.pck
+++ /dev/null
@@ -1,633 +0,0 @@
-crandom
-Random
-p0
-(tRp1
-(I3
-(L2147483648L
-L994081831L
-L2806287265L
-L2228999830L
-L3396498069L
-L2956805457L
-L3273927761L
-L920726507L
-L1862624492L
-L2921292485L
-L1779526843L
-L2469105503L
-L251696293L
-L1254390717L
-L779197080L
-L3165356830L
-L2007365218L
-L1870028812L
-L2896519363L
-L1855578438L
-L979518416L
-L3481710246L
-L3191861507L
-L3993006593L
-L2967971479L
-L3353342753L
-L3576782572L
-L339685558L
-L2367675732L
-L116208555L
-L1220054437L
-L486597056L
-L1912115141L
-L1037044792L
-L4096904723L
-L3409146175L
-L3701651227L
-L315824610L
-L4138604583L
-L1385764892L
-L191878900L
-L2320582219L
-L3420677494L
-L2776503169L
-L1148247403L
-L829555069L
-L902064012L
-L2934642741L
-L2477108577L
-L2583928217L
-L1658612579L
-L2865447913L
-L129147346L
-L3691171887L
-L1569328110L
-L1372860143L
-L1054139183L
-L1617707080L
-L69020592L
-L3810271603L
-L1853953416L
-L3499803073L
-L1027545027L
-L3229043605L
-L250848720L
-L3324932626L
-L3537002962L
-L2494323345L
-L3238103962L
-L4147541579L
-L3636348186L
-L3025455083L
-L2678771977L
-L584700256L
-L3461826909L
-L854511420L
-L943463552L
-L3609239025L
-L3977577989L
-L253070090L
-L777394544L
-L2144086567L
-L1092947992L
-L854327284L
-L2222750082L
-L360183510L
-L1312466483L
-L3227531091L
-L2235022500L
-L3013060530L
-L2541091298L
-L3480126342L
-L1839762775L
-L2632608190L
-L1108889403L
-L3045050923L
-L731513126L
-L3505436788L
-L3062762017L
-L1667392680L
-L1354126500L
-L1143573930L
-L2816645702L
-L2100356873L
-L2817679106L
-L1210746010L
-L2409915248L
-L2910119964L
-L2309001420L
-L220351824L
-L3667352871L
-L3993148590L
-L2886160232L
-L4239393701L
-L1189270581L
-L3067985541L
-L147374573L
-L2355164869L
-L3696013550L
-L4227037846L
-L1905112743L
-L3312843689L
-L2930678266L
-L1828795355L
-L76933594L
-L3987100796L
-L1288361435L
-L3464529151L
-L965498079L
-L1444623093L
-L1372893415L
-L1536235597L
-L1341994850L
-L963594758L
-L2115295754L
-L982098685L
-L1053433904L
-L2078469844L
-L3059765792L
-L1753606181L
-L2130171254L
-L567588194L
-L529629426L
-L3621523534L
-L3027576564L
-L1176438083L
-L4096287858L
-L1168574683L
-L1425058962L
-L1429631655L
-L2902106759L
-L761900641L
-L1329183956L
-L1947050932L
-L447490289L
-L3282516276L
-L200037389L
-L921868197L
-L3331403999L
-L4088760249L
-L2188326318L
-L288401961L
-L1360802675L
-L314302808L
-L3314639210L
-L3749821203L
-L2286081570L
-L2768939062L
-L3200541016L
-L2133495482L
-L385029880L
-L4217232202L
-L3171617231L
-L1660846653L
-L2459987621L
-L2691776124L
-L4225030408L
-L3595396773L
-L1103680661L
-L539064057L
-L1492841101L
-L166195394L
-L757973658L
-L533893054L
-L2784879594L
-L1021821883L
-L2350548162L
-L176852116L
-L3503166025L
-L148079914L
-L1633466236L
-L2773090165L
-L1162846701L
-L3575737795L
-L1624178239L
-L2454894710L
-L3014691938L
-L526355679L
-L1870824081L
-L3362425857L
-L3907566665L
-L3462563184L
-L2229112004L
-L4203735748L
-L1557442481L
-L924133999L
-L1906634214L
-L880459727L
-L4065895870L
-L141426254L
-L1258450159L
-L3243115027L
-L1574958840L
-L313939294L
-L3055664260L
-L3459714255L
-L531778790L
-L509505506L
-L1620227491L
-L2675554942L
-L2516509560L
-L3797299887L
-L237135890L
-L3203142213L
-L1087745310L
-L1897151854L
-L3936590041L
-L132765167L
-L2385908063L
-L1360600289L
-L3574567769L
-L2752788114L
-L2644228966L
-L2377705183L
-L601277909L
-L4046480498L
-L324401408L
-L3279931760L
-L2227059377L
-L1538827493L
-L4220532064L
-L478044564L
-L2917117761L
-L635492832L
-L2319763261L
-L795944206L
-L1820473234L
-L1673151409L
-L1404095402L
-L1661067505L
-L3217106938L
-L2406310683L
-L1931309248L
-L2458622868L
-L3323670524L
-L3266852755L
-L240083943L
-L3168387397L
-L607722198L
-L1256837690L
-L3608124913L
-L4244969357L
-L1289959293L
-L519750328L
-L3229482463L
-L1105196988L
-L1832684479L
-L3761037224L
-L2363631822L
-L3297957711L
-L572766355L
-L1195822137L
-L2239207981L
-L2034241203L
-L163540514L
-L288160255L
-L716403680L
-L4019439143L
-L1536281935L
-L2345100458L
-L2786059178L
-L2822232109L
-L987025395L
-L3061166559L
-L490422513L
-L2551030115L
-L2638707620L
-L1344728502L
-L714108911L
-L2831719700L
-L2188615369L
-L373509061L
-L1351077504L
-L3136217056L
-L783521095L
-L2554949468L
-L2662499550L
-L1203826951L
-L1379632388L
-L1918858985L
-L607465976L
-L1980450237L
-L3540079211L
-L3397813410L
-L2913309266L
-L2289572621L
-L4133935327L
-L4166227663L
-L3371801704L
-L3065474909L
-L3580562343L
-L3832172378L
-L2556130719L
-L310473705L
-L3734014346L
-L2490413810L
-L347233056L
-L526668037L
-L1158393656L
-L544329703L
-L2150085419L
-L3914038146L
-L1060237586L
-L4159394837L
-L113205121L
-L309966775L
-L4098784465L
-L3635222960L
-L2417516569L
-L2089579233L
-L1725807541L
-L2728122526L
-L2365836523L
-L2504078522L
-L1443946869L
-L2384171411L
-L997046534L
-L3249131657L
-L1699875986L
-L3618097146L
-L1716038224L
-L2629818607L
-L2929217876L
-L1367250314L
-L1726434951L
-L1388496325L
-L2107602181L
-L2822366842L
-L3052979190L
-L3796798633L
-L1543813381L
-L959000121L
-L1363845999L
-L2952528150L
-L874184932L
-L1888387194L
-L2328695295L
-L3442959855L
-L841805947L
-L1087739275L
-L3230005434L
-L3045399265L
-L1161817318L
-L2898673139L
-L860011094L
-L940539782L
-L1297818080L
-L4243941623L
-L1577613033L
-L4204131887L
-L3819057225L
-L1969439558L
-L3297963932L
-L241874069L
-L3517033453L
-L2295345664L
-L1098911422L
-L886955008L
-L1477397621L
-L4279347332L
-L3616558791L
-L2384411957L
-L742537731L
-L764221540L
-L2871698900L
-L3530636393L
-L691256644L
-L758730966L
-L1717773090L
-L2751856377L
-L3188484000L
-L3767469670L
-L1623863053L
-L3533236793L
-L4099284176L
-L723921107L
-L310594036L
-L223978745L
-L2266565776L
-L201843303L
-L2969968546L
-L3351170888L
-L3465113624L
-L2712246712L
-L1521383057L
-L2384461798L
-L216357551L
-L2167301975L
-L3144653194L
-L2781220155L
-L3620747666L
-L95971265L
-L4255400243L
-L59999757L
-L4174273472L
-L3974511524L
-L1007123950L
-L3112477628L
-L806461512L
-L3148074008L
-L528352882L
-L2545979588L
-L2562281969L
-L3010249477L
-L1886331611L
-L3210656433L
-L1034099976L
-L2906893579L
-L1197048779L
-L1870004401L
-L3898300490L
-L2686856402L
-L3975723478L
-L613043532L
-L2565674353L
-L3760045310L
-L3468984376L
-L4126258L
-L303855424L
-L3988963552L
-L276256796L
-L544071807L
-L1023872062L
-L1747461519L
-L1975571260L
-L4033766958L
-L2946555557L
-L1492957796L
-L958271685L
-L46480515L
-L907760635L
-L1306626357L
-L819652378L
-L1172300279L
-L1116851319L
-L495601075L
-L1157715330L
-L534220108L
-L377320028L
-L1672286106L
-L2066219284L
-L1842386355L
-L2546059464L
-L1839457336L
-L3476194446L
-L3050550028L
-L594705582L
-L1905813535L
-L1813033412L
-L2700858157L
-L169067972L
-L4252889045L
-L1921944555L
-L497671474L
-L210143935L
-L2688398489L
-L325158375L
-L3450846447L
-L891760597L
-L712802536L
-L1132557436L
-L1417044075L
-L1639889660L
-L1746379970L
-L1478741647L
-L2817563486L
-L2573612532L
-L4266444457L
-L2911601615L
-L804745411L
-L2207254652L
-L1189140646L
-L3829725111L
-L3637367348L
-L1944731747L
-L2193440343L
-L1430195413L
-L1173515229L
-L1582618217L
-L2070767037L
-L247908936L
-L1460675439L
-L556001596L
-L327629335L
-L1036133876L
-L4228129605L
-L999174048L
-L3635804039L
-L1416550481L
-L1270540269L
-L4280743815L
-L39607659L
-L1552540623L
-L2762294062L
-L504137289L
-L4117044239L
-L1417130225L
-L1342970056L
-L1755716449L
-L1169447322L
-L2731401356L
-L2319976745L
-L2869221479L
-L23972655L
-L2251495389L
-L1429860878L
-L3728135992L
-L4241432973L
-L3698275076L
-L216416432L
-L4040046960L
-L246077176L
-L894675685L
-L3932282259L
-L3097205100L
-L2128818650L
-L1319010656L
-L1601974009L
-L2552960957L
-L3554016055L
-L4209395641L
-L2013340102L
-L3370447801L
-L2307272002L
-L1795091354L
-L202109401L
-L988345070L
-L2514870758L
-L1132726850L
-L582746224L
-L3112305421L
-L1843020683L
-L3600189223L
-L1101349165L
-L4211905855L
-L2866677581L
-L2881621130L
-L4165324109L
-L4238773191L
-L3635649550L
-L2670481044L
-L2996248219L
-L1676992480L
-L3473067050L
-L4205793699L
-L4019490897L
-L1579990481L
-L1899617990L
-L1136347713L
-L1802842268L
-L3591752960L
-L1197308739L
-L433629786L
-L4032142790L
-L3148041979L
-L3312138845L
-L3896860449L
-L3298182567L
-L907605170L
-L1658664067L
-L2682980313L
-L2523523173L
-L1208722103L
-L3808530363L
-L1079003946L
-L4282402864L
-L2041010073L
-L2667555071L
-L688018180L
-L1405121012L
-L4167994076L
-L3504695336L
-L1923944749L
-L1143598790L
-L3936268898L
-L3606243846L
-L1017420080L
-L4026211169L
-L596529763L
-L1844259624L
-L2840216282L
-L2673807759L
-L3407202575L
-L2737971083L
-L4075423068L
-L3684057432L
-L3146627241L
-L599650513L
-L69773114L
-L1257035919L
-L807485291L
-L2376230687L
-L3036593147L
-L2642411658L
-L106080044L
-L2199622729L
-L291834511L
-L2697611361L
-L11689733L
-L625123952L
-L3226023062L
-L3229663265L
-L753059444L
-L2843610189L
-L624L
-tp2
-Ntp3
-b.
\ No newline at end of file
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/re_tests.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/re_tests.py
deleted file mode 100644
index 8ce4f61..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/re_tests.py
+++ /dev/null
@@ -1,674 +0,0 @@
-#!/usr/bin/env python
-# -*- mode: python -*-
-
-# Re test suite and benchmark suite v1.5
-
-# The 3 possible outcomes for each pattern
-[SUCCEED, FAIL, SYNTAX_ERROR] = range(3)
-
-# Benchmark suite (needs expansion)
-#
-# The benchmark suite does not test correctness, just speed.  The
-# first element of each tuple is the regex pattern; the second is a
-# string to match it against.  The benchmarking code will embed the
-# second string inside several sizes of padding, to test how regex
-# matching performs on large strings.
-
-benchmarks = [
-
-    # test common prefix
-    ('Python|Perl', 'Perl'),    # Alternation
-    ('(Python|Perl)', 'Perl'),  # Grouped alternation
-
-    ('Python|Perl|Tcl', 'Perl'),        # Alternation
-    ('(Python|Perl|Tcl)', 'Perl'),      # Grouped alternation
-
-    ('(Python)\\1', 'PythonPython'),    # Backreference
-    ('([0a-z][a-z0-9]*,)+', 'a5,b7,c9,'), # Disable the fastmap optimization
-    ('([a-z][a-z0-9]*,)+', 'a5,b7,c9,'), # A few sets
-
-    ('Python', 'Python'),               # Simple text literal
-    ('.*Python', 'Python'),             # Bad text literal
-    ('.*Python.*', 'Python'),           # Worse text literal
-    ('.*(Python)', 'Python'),           # Bad text literal with grouping
-
-]
-
-# Test suite (for verifying correctness)
-#
-# The test suite is a list of 5- or 3-tuples.  The 5 parts of a
-# complete tuple are:
-# element 0: a string containing the pattern
-#         1: the string to match against the pattern
-#         2: the expected result (SUCCEED, FAIL, SYNTAX_ERROR)
-#         3: a string that will be eval()'ed to produce a test string.
-#            This is an arbitrary Python expression; the available
-#            variables are "found" (the whole match), and "g1", "g2", ...
-#            up to "g99" contain the contents of each group, or the
-#            string 'None' if the group wasn't given a value, or the
-#            string 'Error' if the group index was out of range;
-#            also "groups", the return value of m.group() (a tuple).
-#         4: The expected result of evaluating the expression.
-#            If the two don't match, an error is reported.
-#
-# If the regex isn't expected to work, the latter two elements can be omitted.
-
-tests = [
-    # Test ?P< and ?P= extensions
-    ('(?P<foo_123', '', SYNTAX_ERROR),      # Unterminated group identifier
-    ('(?P<1>a)', '', SYNTAX_ERROR),         # Begins with a digit
-    ('(?P<!>a)', '', SYNTAX_ERROR),         # Begins with an illegal char
-    ('(?P<foo!>a)', '', SYNTAX_ERROR),      # Begins with an illegal char
-
-    # Same tests, for the ?P= form
-    ('(?P<foo_123>a)(?P=foo_123', 'aa', SYNTAX_ERROR),
-    ('(?P<foo_123>a)(?P=1)', 'aa', SYNTAX_ERROR),
-    ('(?P<foo_123>a)(?P=!)', 'aa', SYNTAX_ERROR),
-    ('(?P<foo_123>a)(?P=foo_124', 'aa', SYNTAX_ERROR),  # Backref to undefined group
-
-    ('(?P<foo_123>a)', 'a', SUCCEED, 'g1', 'a'),
-    ('(?P<foo_123>a)(?P=foo_123)', 'aa', SUCCEED, 'g1', 'a'),
-
-    # Test octal escapes
-    ('\\1', 'a', SYNTAX_ERROR),    # Backreference
-    ('[\\1]', '\1', SUCCEED, 'found', '\1'),  # Character
-    ('\\09', chr(0) + '9', SUCCEED, 'found', chr(0) + '9'),
-    ('\\141', 'a', SUCCEED, 'found', 'a'),
-    ('(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\\119', 'abcdefghijklk9', SUCCEED, 'found+"-"+g11', 'abcdefghijklk9-k'),
-
-    # Test \0 is handled everywhere
-    (r'\0', '\0', SUCCEED, 'found', '\0'),
-    (r'[\0a]', '\0', SUCCEED, 'found', '\0'),
-    (r'[a\0]', '\0', SUCCEED, 'found', '\0'),
-    (r'[^a\0]', '\0', FAIL),
-
-    # Test various letter escapes
-    (r'\a[\b]\f\n\r\t\v', '\a\b\f\n\r\t\v', SUCCEED, 'found', '\a\b\f\n\r\t\v'),
-    (r'[\a][\b][\f][\n][\r][\t][\v]', '\a\b\f\n\r\t\v', SUCCEED, 'found', '\a\b\f\n\r\t\v'),
-    # NOTE: not an error under PCRE/PRE:
-    # (r'\u', '', SYNTAX_ERROR),    # A Perl escape
-    (r'\c\e\g\h\i\j\k\m\o\p\q\y\z', 'ceghijkmopqyz', SUCCEED, 'found', 'ceghijkmopqyz'),
-    (r'\xff', '\377', SUCCEED, 'found', chr(255)),
-    # new \x semantics
-    (r'\x00ffffffffffffff', '\377', FAIL, 'found', chr(255)),
-    (r'\x00f', '\017', FAIL, 'found', chr(15)),
-    (r'\x00fe', '\376', FAIL, 'found', chr(254)),
-    # (r'\x00ffffffffffffff', '\377', SUCCEED, 'found', chr(255)),
-    # (r'\x00f', '\017', SUCCEED, 'found', chr(15)),
-    # (r'\x00fe', '\376', SUCCEED, 'found', chr(254)),
-
-    (r"^\w+=(\\[\000-\277]|[^\n\\])*", "SRC=eval.c g.c blah blah blah \\\\\n\tapes.c",
-     SUCCEED, 'found', "SRC=eval.c g.c blah blah blah \\\\"),
-
-    # Test that . only matches \n in DOTALL mode
-    ('a.b', 'acb', SUCCEED, 'found', 'acb'),
-    ('a.b', 'a\nb', FAIL),
-    ('a.*b', 'acc\nccb', FAIL),
-    ('a.{4,5}b', 'acc\nccb', FAIL),
-    ('a.b', 'a\rb', SUCCEED, 'found', 'a\rb'),
-    ('a.b(?s)', 'a\nb', SUCCEED, 'found', 'a\nb'),
-    ('a.*(?s)b', 'acc\nccb', SUCCEED, 'found', 'acc\nccb'),
-    ('(?s)a.{4,5}b', 'acc\nccb', SUCCEED, 'found', 'acc\nccb'),
-    ('(?s)a.b', 'a\nb', SUCCEED, 'found', 'a\nb'),
-
-    (')', '', SYNTAX_ERROR),           # Unmatched right bracket
-    ('', '', SUCCEED, 'found', ''),    # Empty pattern
-    ('abc', 'abc', SUCCEED, 'found', 'abc'),
-    ('abc', 'xbc', FAIL),
-    ('abc', 'axc', FAIL),
-    ('abc', 'abx', FAIL),
-    ('abc', 'xabcy', SUCCEED, 'found', 'abc'),
-    ('abc', 'ababc', SUCCEED, 'found', 'abc'),
-    ('ab*c', 'abc', SUCCEED, 'found', 'abc'),
-    ('ab*bc', 'abc', SUCCEED, 'found', 'abc'),
-    ('ab*bc', 'abbc', SUCCEED, 'found', 'abbc'),
-    ('ab*bc', 'abbbbc', SUCCEED, 'found', 'abbbbc'),
-    ('ab+bc', 'abbc', SUCCEED, 'found', 'abbc'),
-    ('ab+bc', 'abc', FAIL),
-    ('ab+bc', 'abq', FAIL),
-    ('ab+bc', 'abbbbc', SUCCEED, 'found', 'abbbbc'),
-    ('ab?bc', 'abbc', SUCCEED, 'found', 'abbc'),
-    ('ab?bc', 'abc', SUCCEED, 'found', 'abc'),
-    ('ab?bc', 'abbbbc', FAIL),
-    ('ab?c', 'abc', SUCCEED, 'found', 'abc'),
-    ('^abc$', 'abc', SUCCEED, 'found', 'abc'),
-    ('^abc$', 'abcc', FAIL),
-    ('^abc', 'abcc', SUCCEED, 'found', 'abc'),
-    ('^abc$', 'aabc', FAIL),
-    ('abc$', 'aabc', SUCCEED, 'found', 'abc'),
-    ('^', 'abc', SUCCEED, 'found+"-"', '-'),
-    ('$', 'abc', SUCCEED, 'found+"-"', '-'),
-    ('a.c', 'abc', SUCCEED, 'found', 'abc'),
-    ('a.c', 'axc', SUCCEED, 'found', 'axc'),
-    ('a.*c', 'axyzc', SUCCEED, 'found', 'axyzc'),
-    ('a.*c', 'axyzd', FAIL),
-    ('a[bc]d', 'abc', FAIL),
-    ('a[bc]d', 'abd', SUCCEED, 'found', 'abd'),
-    ('a[b-d]e', 'abd', FAIL),
-    ('a[b-d]e', 'ace', SUCCEED, 'found', 'ace'),
-    ('a[b-d]', 'aac', SUCCEED, 'found', 'ac'),
-    ('a[-b]', 'a-', SUCCEED, 'found', 'a-'),
-    ('a[\\-b]', 'a-', SUCCEED, 'found', 'a-'),
-    # NOTE: not an error under PCRE/PRE:
-    # ('a[b-]', 'a-', SYNTAX_ERROR),
-    ('a[]b', '-', SYNTAX_ERROR),
-    ('a[', '-', SYNTAX_ERROR),
-    ('a\\', '-', SYNTAX_ERROR),
-    ('abc)', '-', SYNTAX_ERROR),
-    ('(abc', '-', SYNTAX_ERROR),
-    ('a]', 'a]', SUCCEED, 'found', 'a]'),
-    ('a[]]b', 'a]b', SUCCEED, 'found', 'a]b'),
-    ('a[\]]b', 'a]b', SUCCEED, 'found', 'a]b'),
-    ('a[^bc]d', 'aed', SUCCEED, 'found', 'aed'),
-    ('a[^bc]d', 'abd', FAIL),
-    ('a[^-b]c', 'adc', SUCCEED, 'found', 'adc'),
-    ('a[^-b]c', 'a-c', FAIL),
-    ('a[^]b]c', 'a]c', FAIL),
-    ('a[^]b]c', 'adc', SUCCEED, 'found', 'adc'),
-    ('\\ba\\b', 'a-', SUCCEED, '"-"', '-'),
-    ('\\ba\\b', '-a', SUCCEED, '"-"', '-'),
-    ('\\ba\\b', '-a-', SUCCEED, '"-"', '-'),
-    ('\\by\\b', 'xy', FAIL),
-    ('\\by\\b', 'yz', FAIL),
-    ('\\by\\b', 'xyz', FAIL),
-    ('x\\b', 'xyz', FAIL),
-    ('x\\B', 'xyz', SUCCEED, '"-"', '-'),
-    ('\\Bz', 'xyz', SUCCEED, '"-"', '-'),
-    ('z\\B', 'xyz', FAIL),
-    ('\\Bx', 'xyz', FAIL),
-    ('\\Ba\\B', 'a-', FAIL, '"-"', '-'),
-    ('\\Ba\\B', '-a', FAIL, '"-"', '-'),
-    ('\\Ba\\B', '-a-', FAIL, '"-"', '-'),
-    ('\\By\\B', 'xy', FAIL),
-    ('\\By\\B', 'yz', FAIL),
-    ('\\By\\b', 'xy', SUCCEED, '"-"', '-'),
-    ('\\by\\B', 'yz', SUCCEED, '"-"', '-'),
-    ('\\By\\B', 'xyz', SUCCEED, '"-"', '-'),
-    ('ab|cd', 'abc', SUCCEED, 'found', 'ab'),
-    ('ab|cd', 'abcd', SUCCEED, 'found', 'ab'),
-    ('()ef', 'def', SUCCEED, 'found+"-"+g1', 'ef-'),
-    ('$b', 'b', FAIL),
-    ('a\\(b', 'a(b', SUCCEED, 'found+"-"+g1', 'a(b-Error'),
-    ('a\\(*b', 'ab', SUCCEED, 'found', 'ab'),
-    ('a\\(*b', 'a((b', SUCCEED, 'found', 'a((b'),
-    ('a\\\\b', 'a\\b', SUCCEED, 'found', 'a\\b'),
-    ('((a))', 'abc', SUCCEED, 'found+"-"+g1+"-"+g2', 'a-a-a'),
-    ('(a)b(c)', 'abc', SUCCEED, 'found+"-"+g1+"-"+g2', 'abc-a-c'),
-    ('a+b+c', 'aabbabc', SUCCEED, 'found', 'abc'),
-    ('(a+|b)*', 'ab', SUCCEED, 'found+"-"+g1', 'ab-b'),
-    ('(a+|b)+', 'ab', SUCCEED, 'found+"-"+g1', 'ab-b'),
-    ('(a+|b)?', 'ab', SUCCEED, 'found+"-"+g1', 'a-a'),
-    (')(', '-', SYNTAX_ERROR),
-    ('[^ab]*', 'cde', SUCCEED, 'found', 'cde'),
-    ('abc', '', FAIL),
-    ('a*', '', SUCCEED, 'found', ''),
-    ('a|b|c|d|e', 'e', SUCCEED, 'found', 'e'),
-    ('(a|b|c|d|e)f', 'ef', SUCCEED, 'found+"-"+g1', 'ef-e'),
-    ('abcd*efg', 'abcdefg', SUCCEED, 'found', 'abcdefg'),
-    ('ab*', 'xabyabbbz', SUCCEED, 'found', 'ab'),
-    ('ab*', 'xayabbbz', SUCCEED, 'found', 'a'),
-    ('(ab|cd)e', 'abcde', SUCCEED, 'found+"-"+g1', 'cde-cd'),
-    ('[abhgefdc]ij', 'hij', SUCCEED, 'found', 'hij'),
-    ('^(ab|cd)e', 'abcde', FAIL, 'xg1y', 'xy'),
-    ('(abc|)ef', 'abcdef', SUCCEED, 'found+"-"+g1', 'ef-'),
-    ('(a|b)c*d', 'abcd', SUCCEED, 'found+"-"+g1', 'bcd-b'),
-    ('(ab|ab*)bc', 'abc', SUCCEED, 'found+"-"+g1', 'abc-a'),
-    ('a([bc]*)c*', 'abc', SUCCEED, 'found+"-"+g1', 'abc-bc'),
-    ('a([bc]*)(c*d)', 'abcd', SUCCEED, 'found+"-"+g1+"-"+g2', 'abcd-bc-d'),
-    ('a([bc]+)(c*d)', 'abcd', SUCCEED, 'found+"-"+g1+"-"+g2', 'abcd-bc-d'),
-    ('a([bc]*)(c+d)', 'abcd', SUCCEED, 'found+"-"+g1+"-"+g2', 'abcd-b-cd'),
-    ('a[bcd]*dcdcde', 'adcdcde', SUCCEED, 'found', 'adcdcde'),
-    ('a[bcd]+dcdcde', 'adcdcde', FAIL),
-    ('(ab|a)b*c', 'abc', SUCCEED, 'found+"-"+g1', 'abc-ab'),
-    ('((a)(b)c)(d)', 'abcd', SUCCEED, 'g1+"-"+g2+"-"+g3+"-"+g4', 'abc-a-b-d'),
-    ('[a-zA-Z_][a-zA-Z0-9_]*', 'alpha', SUCCEED, 'found', 'alpha'),
-    ('^a(bc+|b[eh])g|.h$', 'abh', SUCCEED, 'found+"-"+g1', 'bh-None'),
-    ('(bc+d$|ef*g.|h?i(j|k))', 'effgz', SUCCEED, 'found+"-"+g1+"-"+g2', 'effgz-effgz-None'),
-    ('(bc+d$|ef*g.|h?i(j|k))', 'ij', SUCCEED, 'found+"-"+g1+"-"+g2', 'ij-ij-j'),
-    ('(bc+d$|ef*g.|h?i(j|k))', 'effg', FAIL),
-    ('(bc+d$|ef*g.|h?i(j|k))', 'bcdd', FAIL),
-    ('(bc+d$|ef*g.|h?i(j|k))', 'reffgz', SUCCEED, 'found+"-"+g1+"-"+g2', 'effgz-effgz-None'),
-    ('(((((((((a)))))))))', 'a', SUCCEED, 'found', 'a'),
-    ('multiple words of text', 'uh-uh', FAIL),
-    ('multiple words', 'multiple words, yeah', SUCCEED, 'found', 'multiple words'),
-    ('(.*)c(.*)', 'abcde', SUCCEED, 'found+"-"+g1+"-"+g2', 'abcde-ab-de'),
-    ('\\((.*), (.*)\\)', '(a, b)', SUCCEED, 'g2+"-"+g1', 'b-a'),
-    ('[k]', 'ab', FAIL),
-    ('a[-]?c', 'ac', SUCCEED, 'found', 'ac'),
-    ('(abc)\\1', 'abcabc', SUCCEED, 'g1', 'abc'),
-    ('([a-c]*)\\1', 'abcabc', SUCCEED, 'g1', 'abc'),
-    ('^(.+)?B', 'AB', SUCCEED, 'g1', 'A'),
-    ('(a+).\\1$', 'aaaaa', SUCCEED, 'found+"-"+g1', 'aaaaa-aa'),
-    ('^(a+).\\1$', 'aaaa', FAIL),
-    ('(abc)\\1', 'abcabc', SUCCEED, 'found+"-"+g1', 'abcabc-abc'),
-    ('([a-c]+)\\1', 'abcabc', SUCCEED, 'found+"-"+g1', 'abcabc-abc'),
-    ('(a)\\1', 'aa', SUCCEED, 'found+"-"+g1', 'aa-a'),
-    ('(a+)\\1', 'aa', SUCCEED, 'found+"-"+g1', 'aa-a'),
-    ('(a+)+\\1', 'aa', SUCCEED, 'found+"-"+g1', 'aa-a'),
-    ('(a).+\\1', 'aba', SUCCEED, 'found+"-"+g1', 'aba-a'),
-    ('(a)ba*\\1', 'aba', SUCCEED, 'found+"-"+g1', 'aba-a'),
-    ('(aa|a)a\\1$', 'aaa', SUCCEED, 'found+"-"+g1', 'aaa-a'),
-    ('(a|aa)a\\1$', 'aaa', SUCCEED, 'found+"-"+g1', 'aaa-a'),
-    ('(a+)a\\1$', 'aaa', SUCCEED, 'found+"-"+g1', 'aaa-a'),
-    ('([abc]*)\\1', 'abcabc', SUCCEED, 'found+"-"+g1', 'abcabc-abc'),
-    ('(a)(b)c|ab', 'ab', SUCCEED, 'found+"-"+g1+"-"+g2', 'ab-None-None'),
-    ('(a)+x', 'aaax', SUCCEED, 'found+"-"+g1', 'aaax-a'),
-    ('([ac])+x', 'aacx', SUCCEED, 'found+"-"+g1', 'aacx-c'),
-    ('([^/]*/)*sub1/', 'd:msgs/tdir/sub1/trial/away.cpp', SUCCEED, 'found+"-"+g1', 'd:msgs/tdir/sub1/-tdir/'),
-    ('([^.]*)\\.([^:]*):[T ]+(.*)', 'track1.title:TBlah blah blah', SUCCEED, 'found+"-"+g1+"-"+g2+"-"+g3', 'track1.title:TBlah blah blah-track1-title-Blah blah blah'),
-    ('([^N]*N)+', 'abNNxyzN', SUCCEED, 'found+"-"+g1', 'abNNxyzN-xyzN'),
-    ('([^N]*N)+', 'abNNxyz', SUCCEED, 'found+"-"+g1', 'abNN-N'),
-    ('([abc]*)x', 'abcx', SUCCEED, 'found+"-"+g1', 'abcx-abc'),
-    ('([abc]*)x', 'abc', FAIL),
-    ('([xyz]*)x', 'abcx', SUCCEED, 'found+"-"+g1', 'x-'),
-    ('(a)+b|aac', 'aac', SUCCEED, 'found+"-"+g1', 'aac-None'),
-
-    # Test symbolic groups
-
-    ('(?P<i d>aaa)a', 'aaaa', SYNTAX_ERROR),
-    ('(?P<id>aaa)a', 'aaaa', SUCCEED, 'found+"-"+id', 'aaaa-aaa'),
-    ('(?P<id>aa)(?P=id)', 'aaaa', SUCCEED, 'found+"-"+id', 'aaaa-aa'),
-    ('(?P<id>aa)(?P=xd)', 'aaaa', SYNTAX_ERROR),
-
-    # Test octal escapes/memory references
-
-    ('\\1', 'a', SYNTAX_ERROR),
-    ('\\09', chr(0) + '9', SUCCEED, 'found', chr(0) + '9'),
-    ('\\141', 'a', SUCCEED, 'found', 'a'),
-    ('(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\\119', 'abcdefghijklk9', SUCCEED, 'found+"-"+g11', 'abcdefghijklk9-k'),
-
-    # All tests from Perl
-
-    ('abc', 'abc', SUCCEED, 'found', 'abc'),
-    ('abc', 'xbc', FAIL),
-    ('abc', 'axc', FAIL),
-    ('abc', 'abx', FAIL),
-    ('abc', 'xabcy', SUCCEED, 'found', 'abc'),
-    ('abc', 'ababc', SUCCEED, 'found', 'abc'),
-    ('ab*c', 'abc', SUCCEED, 'found', 'abc'),
-    ('ab*bc', 'abc', SUCCEED, 'found', 'abc'),
-    ('ab*bc', 'abbc', SUCCEED, 'found', 'abbc'),
-    ('ab*bc', 'abbbbc', SUCCEED, 'found', 'abbbbc'),
-    ('ab{0,}bc', 'abbbbc', SUCCEED, 'found', 'abbbbc'),
-    ('ab+bc', 'abbc', SUCCEED, 'found', 'abbc'),
-    ('ab+bc', 'abc', FAIL),
-    ('ab+bc', 'abq', FAIL),
-    ('ab{1,}bc', 'abq', FAIL),
-    ('ab+bc', 'abbbbc', SUCCEED, 'found', 'abbbbc'),
-    ('ab{1,}bc', 'abbbbc', SUCCEED, 'found', 'abbbbc'),
-    ('ab{1,3}bc', 'abbbbc', SUCCEED, 'found', 'abbbbc'),
-    ('ab{3,4}bc', 'abbbbc', SUCCEED, 'found', 'abbbbc'),
-    ('ab{4,5}bc', 'abbbbc', FAIL),
-    ('ab?bc', 'abbc', SUCCEED, 'found', 'abbc'),
-    ('ab?bc', 'abc', SUCCEED, 'found', 'abc'),
-    ('ab{0,1}bc', 'abc', SUCCEED, 'found', 'abc'),
-    ('ab?bc', 'abbbbc', FAIL),
-    ('ab?c', 'abc', SUCCEED, 'found', 'abc'),
-    ('ab{0,1}c', 'abc', SUCCEED, 'found', 'abc'),
-    ('^abc$', 'abc', SUCCEED, 'found', 'abc'),
-    ('^abc$', 'abcc', FAIL),
-    ('^abc', 'abcc', SUCCEED, 'found', 'abc'),
-    ('^abc$', 'aabc', FAIL),
-    ('abc$', 'aabc', SUCCEED, 'found', 'abc'),
-    ('^', 'abc', SUCCEED, 'found', ''),
-    ('$', 'abc', SUCCEED, 'found', ''),
-    ('a.c', 'abc', SUCCEED, 'found', 'abc'),
-    ('a.c', 'axc', SUCCEED, 'found', 'axc'),
-    ('a.*c', 'axyzc', SUCCEED, 'found', 'axyzc'),
-    ('a.*c', 'axyzd', FAIL),
-    ('a[bc]d', 'abc', FAIL),
-    ('a[bc]d', 'abd', SUCCEED, 'found', 'abd'),
-    ('a[b-d]e', 'abd', FAIL),
-    ('a[b-d]e', 'ace', SUCCEED, 'found', 'ace'),
-    ('a[b-d]', 'aac', SUCCEED, 'found', 'ac'),
-    ('a[-b]', 'a-', SUCCEED, 'found', 'a-'),
-    ('a[b-]', 'a-', SUCCEED, 'found', 'a-'),
-    ('a[b-a]', '-', SYNTAX_ERROR),
-    ('a[]b', '-', SYNTAX_ERROR),
-    ('a[', '-', SYNTAX_ERROR),
-    ('a]', 'a]', SUCCEED, 'found', 'a]'),
-    ('a[]]b', 'a]b', SUCCEED, 'found', 'a]b'),
-    ('a[^bc]d', 'aed', SUCCEED, 'found', 'aed'),
-    ('a[^bc]d', 'abd', FAIL),
-    ('a[^-b]c', 'adc', SUCCEED, 'found', 'adc'),
-    ('a[^-b]c', 'a-c', FAIL),
-    ('a[^]b]c', 'a]c', FAIL),
-    ('a[^]b]c', 'adc', SUCCEED, 'found', 'adc'),
-    ('ab|cd', 'abc', SUCCEED, 'found', 'ab'),
-    ('ab|cd', 'abcd', SUCCEED, 'found', 'ab'),
-    ('()ef', 'def', SUCCEED, 'found+"-"+g1', 'ef-'),
-    ('*a', '-', SYNTAX_ERROR),
-    ('(*)b', '-', SYNTAX_ERROR),
-    ('$b', 'b', FAIL),
-    ('a\\', '-', SYNTAX_ERROR),
-    ('a\\(b', 'a(b', SUCCEED, 'found+"-"+g1', 'a(b-Error'),
-    ('a\\(*b', 'ab', SUCCEED, 'found', 'ab'),
-    ('a\\(*b', 'a((b', SUCCEED, 'found', 'a((b'),
-    ('a\\\\b', 'a\\b', SUCCEED, 'found', 'a\\b'),
-    ('abc)', '-', SYNTAX_ERROR),
-    ('(abc', '-', SYNTAX_ERROR),
-    ('((a))', 'abc', SUCCEED, 'found+"-"+g1+"-"+g2', 'a-a-a'),
-    ('(a)b(c)', 'abc', SUCCEED, 'found+"-"+g1+"-"+g2', 'abc-a-c'),
-    ('a+b+c', 'aabbabc', SUCCEED, 'found', 'abc'),
-    ('a{1,}b{1,}c', 'aabbabc', SUCCEED, 'found', 'abc'),
-    ('a**', '-', SYNTAX_ERROR),
-    ('a.+?c', 'abcabc', SUCCEED, 'found', 'abc'),
-    ('(a+|b)*', 'ab', SUCCEED, 'found+"-"+g1', 'ab-b'),
-    ('(a+|b){0,}', 'ab', SUCCEED, 'found+"-"+g1', 'ab-b'),
-    ('(a+|b)+', 'ab', SUCCEED, 'found+"-"+g1', 'ab-b'),
-    ('(a+|b){1,}', 'ab', SUCCEED, 'found+"-"+g1', 'ab-b'),
-    ('(a+|b)?', 'ab', SUCCEED, 'found+"-"+g1', 'a-a'),
-    ('(a+|b){0,1}', 'ab', SUCCEED, 'found+"-"+g1', 'a-a'),
-    (')(', '-', SYNTAX_ERROR),
-    ('[^ab]*', 'cde', SUCCEED, 'found', 'cde'),
-    ('abc', '', FAIL),
-    ('a*', '', SUCCEED, 'found', ''),
-    ('([abc])*d', 'abbbcd', SUCCEED, 'found+"-"+g1', 'abbbcd-c'),
-    ('([abc])*bcd', 'abcd', SUCCEED, 'found+"-"+g1', 'abcd-a'),
-    ('a|b|c|d|e', 'e', SUCCEED, 'found', 'e'),
-    ('(a|b|c|d|e)f', 'ef', SUCCEED, 'found+"-"+g1', 'ef-e'),
-    ('abcd*efg', 'abcdefg', SUCCEED, 'found', 'abcdefg'),
-    ('ab*', 'xabyabbbz', SUCCEED, 'found', 'ab'),
-    ('ab*', 'xayabbbz', SUCCEED, 'found', 'a'),
-    ('(ab|cd)e', 'abcde', SUCCEED, 'found+"-"+g1', 'cde-cd'),
-    ('[abhgefdc]ij', 'hij', SUCCEED, 'found', 'hij'),
-    ('^(ab|cd)e', 'abcde', FAIL),
-    ('(abc|)ef', 'abcdef', SUCCEED, 'found+"-"+g1', 'ef-'),
-    ('(a|b)c*d', 'abcd', SUCCEED, 'found+"-"+g1', 'bcd-b'),
-    ('(ab|ab*)bc', 'abc', SUCCEED, 'found+"-"+g1', 'abc-a'),
-    ('a([bc]*)c*', 'abc', SUCCEED, 'found+"-"+g1', 'abc-bc'),
-    ('a([bc]*)(c*d)', 'abcd', SUCCEED, 'found+"-"+g1+"-"+g2', 'abcd-bc-d'),
-    ('a([bc]+)(c*d)', 'abcd', SUCCEED, 'found+"-"+g1+"-"+g2', 'abcd-bc-d'),
-    ('a([bc]*)(c+d)', 'abcd', SUCCEED, 'found+"-"+g1+"-"+g2', 'abcd-b-cd'),
-    ('a[bcd]*dcdcde', 'adcdcde', SUCCEED, 'found', 'adcdcde'),
-    ('a[bcd]+dcdcde', 'adcdcde', FAIL),
-    ('(ab|a)b*c', 'abc', SUCCEED, 'found+"-"+g1', 'abc-ab'),
-    ('((a)(b)c)(d)', 'abcd', SUCCEED, 'g1+"-"+g2+"-"+g3+"-"+g4', 'abc-a-b-d'),
-    ('[a-zA-Z_][a-zA-Z0-9_]*', 'alpha', SUCCEED, 'found', 'alpha'),
-    ('^a(bc+|b[eh])g|.h$', 'abh', SUCCEED, 'found+"-"+g1', 'bh-None'),
-    ('(bc+d$|ef*g.|h?i(j|k))', 'effgz', SUCCEED, 'found+"-"+g1+"-"+g2', 'effgz-effgz-None'),
-    ('(bc+d$|ef*g.|h?i(j|k))', 'ij', SUCCEED, 'found+"-"+g1+"-"+g2', 'ij-ij-j'),
-    ('(bc+d$|ef*g.|h?i(j|k))', 'effg', FAIL),
-    ('(bc+d$|ef*g.|h?i(j|k))', 'bcdd', FAIL),
-    ('(bc+d$|ef*g.|h?i(j|k))', 'reffgz', SUCCEED, 'found+"-"+g1+"-"+g2', 'effgz-effgz-None'),
-    ('((((((((((a))))))))))', 'a', SUCCEED, 'g10', 'a'),
-    ('((((((((((a))))))))))\\10', 'aa', SUCCEED, 'found', 'aa'),
-# Python does not have the same rules for \\41 so this is a syntax error
-#    ('((((((((((a))))))))))\\41', 'aa', FAIL),
-#    ('((((((((((a))))))))))\\41', 'a!', SUCCEED, 'found', 'a!'),
-    ('((((((((((a))))))))))\\41', '', SYNTAX_ERROR),
-    ('(?i)((((((((((a))))))))))\\41', '', SYNTAX_ERROR),
-    ('(((((((((a)))))))))', 'a', SUCCEED, 'found', 'a'),
-    ('multiple words of text', 'uh-uh', FAIL),
-    ('multiple words', 'multiple words, yeah', SUCCEED, 'found', 'multiple words'),
-    ('(.*)c(.*)', 'abcde', SUCCEED, 'found+"-"+g1+"-"+g2', 'abcde-ab-de'),
-    ('\\((.*), (.*)\\)', '(a, b)', SUCCEED, 'g2+"-"+g1', 'b-a'),
-    ('[k]', 'ab', FAIL),
-    ('a[-]?c', 'ac', SUCCEED, 'found', 'ac'),
-    ('(abc)\\1', 'abcabc', SUCCEED, 'g1', 'abc'),
-    ('([a-c]*)\\1', 'abcabc', SUCCEED, 'g1', 'abc'),
-    ('(?i)abc', 'ABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)abc', 'XBC', FAIL),
-    ('(?i)abc', 'AXC', FAIL),
-    ('(?i)abc', 'ABX', FAIL),
-    ('(?i)abc', 'XABCY', SUCCEED, 'found', 'ABC'),
-    ('(?i)abc', 'ABABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)ab*c', 'ABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)ab*bc', 'ABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)ab*bc', 'ABBC', SUCCEED, 'found', 'ABBC'),
-    ('(?i)ab*?bc', 'ABBBBC', SUCCEED, 'found', 'ABBBBC'),
-    ('(?i)ab{0,}?bc', 'ABBBBC', SUCCEED, 'found', 'ABBBBC'),
-    ('(?i)ab+?bc', 'ABBC', SUCCEED, 'found', 'ABBC'),
-    ('(?i)ab+bc', 'ABC', FAIL),
-    ('(?i)ab+bc', 'ABQ', FAIL),
-    ('(?i)ab{1,}bc', 'ABQ', FAIL),
-    ('(?i)ab+bc', 'ABBBBC', SUCCEED, 'found', 'ABBBBC'),
-    ('(?i)ab{1,}?bc', 'ABBBBC', SUCCEED, 'found', 'ABBBBC'),
-    ('(?i)ab{1,3}?bc', 'ABBBBC', SUCCEED, 'found', 'ABBBBC'),
-    ('(?i)ab{3,4}?bc', 'ABBBBC', SUCCEED, 'found', 'ABBBBC'),
-    ('(?i)ab{4,5}?bc', 'ABBBBC', FAIL),
-    ('(?i)ab??bc', 'ABBC', SUCCEED, 'found', 'ABBC'),
-    ('(?i)ab??bc', 'ABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)ab{0,1}?bc', 'ABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)ab??bc', 'ABBBBC', FAIL),
-    ('(?i)ab??c', 'ABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)ab{0,1}?c', 'ABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)^abc$', 'ABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)^abc$', 'ABCC', FAIL),
-    ('(?i)^abc', 'ABCC', SUCCEED, 'found', 'ABC'),
-    ('(?i)^abc$', 'AABC', FAIL),
-    ('(?i)abc$', 'AABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)^', 'ABC', SUCCEED, 'found', ''),
-    ('(?i)$', 'ABC', SUCCEED, 'found', ''),
-    ('(?i)a.c', 'ABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)a.c', 'AXC', SUCCEED, 'found', 'AXC'),
-    ('(?i)a.*?c', 'AXYZC', SUCCEED, 'found', 'AXYZC'),
-    ('(?i)a.*c', 'AXYZD', FAIL),
-    ('(?i)a[bc]d', 'ABC', FAIL),
-    ('(?i)a[bc]d', 'ABD', SUCCEED, 'found', 'ABD'),
-    ('(?i)a[b-d]e', 'ABD', FAIL),
-    ('(?i)a[b-d]e', 'ACE', SUCCEED, 'found', 'ACE'),
-    ('(?i)a[b-d]', 'AAC', SUCCEED, 'found', 'AC'),
-    ('(?i)a[-b]', 'A-', SUCCEED, 'found', 'A-'),
-    ('(?i)a[b-]', 'A-', SUCCEED, 'found', 'A-'),
-    ('(?i)a[b-a]', '-', SYNTAX_ERROR),
-    ('(?i)a[]b', '-', SYNTAX_ERROR),
-    ('(?i)a[', '-', SYNTAX_ERROR),
-    ('(?i)a]', 'A]', SUCCEED, 'found', 'A]'),
-    ('(?i)a[]]b', 'A]B', SUCCEED, 'found', 'A]B'),
-    ('(?i)a[^bc]d', 'AED', SUCCEED, 'found', 'AED'),
-    ('(?i)a[^bc]d', 'ABD', FAIL),
-    ('(?i)a[^-b]c', 'ADC', SUCCEED, 'found', 'ADC'),
-    ('(?i)a[^-b]c', 'A-C', FAIL),
-    ('(?i)a[^]b]c', 'A]C', FAIL),
-    ('(?i)a[^]b]c', 'ADC', SUCCEED, 'found', 'ADC'),
-    ('(?i)ab|cd', 'ABC', SUCCEED, 'found', 'AB'),
-    ('(?i)ab|cd', 'ABCD', SUCCEED, 'found', 'AB'),
-    ('(?i)()ef', 'DEF', SUCCEED, 'found+"-"+g1', 'EF-'),
-    ('(?i)*a', '-', SYNTAX_ERROR),
-    ('(?i)(*)b', '-', SYNTAX_ERROR),
-    ('(?i)$b', 'B', FAIL),
-    ('(?i)a\\', '-', SYNTAX_ERROR),
-    ('(?i)a\\(b', 'A(B', SUCCEED, 'found+"-"+g1', 'A(B-Error'),
-    ('(?i)a\\(*b', 'AB', SUCCEED, 'found', 'AB'),
-    ('(?i)a\\(*b', 'A((B', SUCCEED, 'found', 'A((B'),
-    ('(?i)a\\\\b', 'A\\B', SUCCEED, 'found', 'A\\B'),
-    ('(?i)abc)', '-', SYNTAX_ERROR),
-    ('(?i)(abc', '-', SYNTAX_ERROR),
-    ('(?i)((a))', 'ABC', SUCCEED, 'found+"-"+g1+"-"+g2', 'A-A-A'),
-    ('(?i)(a)b(c)', 'ABC', SUCCEED, 'found+"-"+g1+"-"+g2', 'ABC-A-C'),
-    ('(?i)a+b+c', 'AABBABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)a{1,}b{1,}c', 'AABBABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)a**', '-', SYNTAX_ERROR),
-    ('(?i)a.+?c', 'ABCABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)a.*?c', 'ABCABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)a.{0,5}?c', 'ABCABC', SUCCEED, 'found', 'ABC'),
-    ('(?i)(a+|b)*', 'AB', SUCCEED, 'found+"-"+g1', 'AB-B'),
-    ('(?i)(a+|b){0,}', 'AB', SUCCEED, 'found+"-"+g1', 'AB-B'),
-    ('(?i)(a+|b)+', 'AB', SUCCEED, 'found+"-"+g1', 'AB-B'),
-    ('(?i)(a+|b){1,}', 'AB', SUCCEED, 'found+"-"+g1', 'AB-B'),
-    ('(?i)(a+|b)?', 'AB', SUCCEED, 'found+"-"+g1', 'A-A'),
-    ('(?i)(a+|b){0,1}', 'AB', SUCCEED, 'found+"-"+g1', 'A-A'),
-    ('(?i)(a+|b){0,1}?', 'AB', SUCCEED, 'found+"-"+g1', '-None'),
-    ('(?i))(', '-', SYNTAX_ERROR),
-    ('(?i)[^ab]*', 'CDE', SUCCEED, 'found', 'CDE'),
-    ('(?i)abc', '', FAIL),
-    ('(?i)a*', '', SUCCEED, 'found', ''),
-    ('(?i)([abc])*d', 'ABBBCD', SUCCEED, 'found+"-"+g1', 'ABBBCD-C'),
-    ('(?i)([abc])*bcd', 'ABCD', SUCCEED, 'found+"-"+g1', 'ABCD-A'),
-    ('(?i)a|b|c|d|e', 'E', SUCCEED, 'found', 'E'),
-    ('(?i)(a|b|c|d|e)f', 'EF', SUCCEED, 'found+"-"+g1', 'EF-E'),
-    ('(?i)abcd*efg', 'ABCDEFG', SUCCEED, 'found', 'ABCDEFG'),
-    ('(?i)ab*', 'XABYABBBZ', SUCCEED, 'found', 'AB'),
-    ('(?i)ab*', 'XAYABBBZ', SUCCEED, 'found', 'A'),
-    ('(?i)(ab|cd)e', 'ABCDE', SUCCEED, 'found+"-"+g1', 'CDE-CD'),
-    ('(?i)[abhgefdc]ij', 'HIJ', SUCCEED, 'found', 'HIJ'),
-    ('(?i)^(ab|cd)e', 'ABCDE', FAIL),
-    ('(?i)(abc|)ef', 'ABCDEF', SUCCEED, 'found+"-"+g1', 'EF-'),
-    ('(?i)(a|b)c*d', 'ABCD', SUCCEED, 'found+"-"+g1', 'BCD-B'),
-    ('(?i)(ab|ab*)bc', 'ABC', SUCCEED, 'found+"-"+g1', 'ABC-A'),
-    ('(?i)a([bc]*)c*', 'ABC', SUCCEED, 'found+"-"+g1', 'ABC-BC'),
-    ('(?i)a([bc]*)(c*d)', 'ABCD', SUCCEED, 'found+"-"+g1+"-"+g2', 'ABCD-BC-D'),
-    ('(?i)a([bc]+)(c*d)', 'ABCD', SUCCEED, 'found+"-"+g1+"-"+g2', 'ABCD-BC-D'),
-    ('(?i)a([bc]*)(c+d)', 'ABCD', SUCCEED, 'found+"-"+g1+"-"+g2', 'ABCD-B-CD'),
-    ('(?i)a[bcd]*dcdcde', 'ADCDCDE', SUCCEED, 'found', 'ADCDCDE'),
-    ('(?i)a[bcd]+dcdcde', 'ADCDCDE', FAIL),
-    ('(?i)(ab|a)b*c', 'ABC', SUCCEED, 'found+"-"+g1', 'ABC-AB'),
-    ('(?i)((a)(b)c)(d)', 'ABCD', SUCCEED, 'g1+"-"+g2+"-"+g3+"-"+g4', 'ABC-A-B-D'),
-    ('(?i)[a-zA-Z_][a-zA-Z0-9_]*', 'ALPHA', SUCCEED, 'found', 'ALPHA'),
-    ('(?i)^a(bc+|b[eh])g|.h$', 'ABH', SUCCEED, 'found+"-"+g1', 'BH-None'),
-    ('(?i)(bc+d$|ef*g.|h?i(j|k))', 'EFFGZ', SUCCEED, 'found+"-"+g1+"-"+g2', 'EFFGZ-EFFGZ-None'),
-    ('(?i)(bc+d$|ef*g.|h?i(j|k))', 'IJ', SUCCEED, 'found+"-"+g1+"-"+g2', 'IJ-IJ-J'),
-    ('(?i)(bc+d$|ef*g.|h?i(j|k))', 'EFFG', FAIL),
-    ('(?i)(bc+d$|ef*g.|h?i(j|k))', 'BCDD', FAIL),
-    ('(?i)(bc+d$|ef*g.|h?i(j|k))', 'REFFGZ', SUCCEED, 'found+"-"+g1+"-"+g2', 'EFFGZ-EFFGZ-None'),
-    ('(?i)((((((((((a))))))))))', 'A', SUCCEED, 'g10', 'A'),
-    ('(?i)((((((((((a))))))))))\\10', 'AA', SUCCEED, 'found', 'AA'),
-    #('(?i)((((((((((a))))))))))\\41', 'AA', FAIL),
-    #('(?i)((((((((((a))))))))))\\41', 'A!', SUCCEED, 'found', 'A!'),
-    ('(?i)(((((((((a)))))))))', 'A', SUCCEED, 'found', 'A'),
-    ('(?i)(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))', 'A', SUCCEED, 'g1', 'A'),
-    ('(?i)(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))', 'C', SUCCEED, 'g1', 'C'),
-    ('(?i)multiple words of text', 'UH-UH', FAIL),
-    ('(?i)multiple words', 'MULTIPLE WORDS, YEAH', SUCCEED, 'found', 'MULTIPLE WORDS'),
-    ('(?i)(.*)c(.*)', 'ABCDE', SUCCEED, 'found+"-"+g1+"-"+g2', 'ABCDE-AB-DE'),
-    ('(?i)\\((.*), (.*)\\)', '(A, B)', SUCCEED, 'g2+"-"+g1', 'B-A'),
-    ('(?i)[k]', 'AB', FAIL),
-#    ('(?i)abcd', 'ABCD', SUCCEED, 'found+"-"+\\found+"-"+\\\\found', 'ABCD-$&-\\ABCD'),
-#    ('(?i)a(bc)d', 'ABCD', SUCCEED, 'g1+"-"+\\g1+"-"+\\\\g1', 'BC-$1-\\BC'),
-    ('(?i)a[-]?c', 'AC', SUCCEED, 'found', 'AC'),
-    ('(?i)(abc)\\1', 'ABCABC', SUCCEED, 'g1', 'ABC'),
-    ('(?i)([a-c]*)\\1', 'ABCABC', SUCCEED, 'g1', 'ABC'),
-    ('a(?!b).', 'abad', SUCCEED, 'found', 'ad'),
-    ('a(?=d).', 'abad', SUCCEED, 'found', 'ad'),
-    ('a(?=c|d).', 'abad', SUCCEED, 'found', 'ad'),
-    ('a(?:b|c|d)(.)', 'ace', SUCCEED, 'g1', 'e'),
-    ('a(?:b|c|d)*(.)', 'ace', SUCCEED, 'g1', 'e'),
-    ('a(?:b|c|d)+?(.)', 'ace', SUCCEED, 'g1', 'e'),
-    ('a(?:b|(c|e){1,2}?|d)+?(.)', 'ace', SUCCEED, 'g1 + g2', 'ce'),
-    ('^(.+)?B', 'AB', SUCCEED, 'g1', 'A'),
-
-    # lookbehind: split by : but not if it is escaped by -.
-    ('(?<!-):(.*?)(?<!-):', 'a:bc-:de:f', SUCCEED, 'g1', 'bc-:de' ),
-    # escaping with \ as we know it
-    ('(?<!\\\):(.*?)(?<!\\\):', 'a:bc\\:de:f', SUCCEED, 'g1', 'bc\\:de' ),
-    # terminating with ' and escaping with ? as in edifact
-    ("(?<!\\?)'(.*?)(?<!\\?)'", "a'bc?'de'f", SUCCEED, 'g1', "bc?'de" ),
-
-    # Comments using the (?#...) syntax
-
-    ('w(?# comment', 'w', SYNTAX_ERROR),
-    ('w(?# comment 1)xy(?# comment 2)z', 'wxyz', SUCCEED, 'found', 'wxyz'),
-
-    # Check odd placement of embedded pattern modifiers
-
-    # not an error under PCRE/PRE:
-    ('w(?i)', 'W', SUCCEED, 'found', 'W'),
-    # ('w(?i)', 'W', SYNTAX_ERROR),
-
-    # Comments using the x embedded pattern modifier
-
-    ("""(?x)w# comment 1
-        x y
-        # comment 2
-        z""", 'wxyz', SUCCEED, 'found', 'wxyz'),
-
-    # using the m embedded pattern modifier
-
-    ('^abc', """jkl
-abc
-xyz""", FAIL),
-    ('(?m)^abc', """jkl
-abc
-xyz""", SUCCEED, 'found', 'abc'),
-
-    ('(?m)abc$', """jkl
-xyzabc
-123""", SUCCEED, 'found', 'abc'),
-
-    # using the s embedded pattern modifier
-
-    ('a.b', 'a\nb', FAIL),
-    ('(?s)a.b', 'a\nb', SUCCEED, 'found', 'a\nb'),
-
-    # test \w, etc. both inside and outside character classes
-
-    ('\\w+', '--ab_cd0123--', SUCCEED, 'found', 'ab_cd0123'),
-    ('[\\w]+', '--ab_cd0123--', SUCCEED, 'found', 'ab_cd0123'),
-    ('\\D+', '1234abc5678', SUCCEED, 'found', 'abc'),
-    ('[\\D]+', '1234abc5678', SUCCEED, 'found', 'abc'),
-    ('[\\da-fA-F]+', '123abc', SUCCEED, 'found', '123abc'),
-    # not an error under PCRE/PRE:
-    # ('[\\d-x]', '-', SYNTAX_ERROR),
-    (r'([\s]*)([\S]*)([\s]*)', ' testing!1972', SUCCEED, 'g3+g2+g1', 'testing!1972 '),
-    (r'(\s*)(\S*)(\s*)', ' testing!1972', SUCCEED, 'g3+g2+g1', 'testing!1972 '),
-
-    (r'\xff', '\377', SUCCEED, 'found', chr(255)),
-    # new \x semantics
-    (r'\x00ff', '\377', FAIL),
-    # (r'\x00ff', '\377', SUCCEED, 'found', chr(255)),
-    (r'\t\n\v\r\f\a\g', '\t\n\v\r\f\ag', SUCCEED, 'found', '\t\n\v\r\f\ag'),
-    ('\t\n\v\r\f\a\g', '\t\n\v\r\f\ag', SUCCEED, 'found', '\t\n\v\r\f\ag'),
-    (r'\t\n\v\r\f\a', '\t\n\v\r\f\a', SUCCEED, 'found', chr(9)+chr(10)+chr(11)+chr(13)+chr(12)+chr(7)),
-    (r'[\t][\n][\v][\r][\f][\b]', '\t\n\v\r\f\b', SUCCEED, 'found', '\t\n\v\r\f\b'),
-
-    #
-    # post-1.5.2 additions
-
-    # xmllib problem
-    (r'(([a-z]+):)?([a-z]+)$', 'smil', SUCCEED, 'g1+"-"+g2+"-"+g3', 'None-None-smil'),
-    # bug 110866: reference to undefined group
-    (r'((.)\1+)', '', SYNTAX_ERROR),
-    # bug 111869: search (PRE/PCRE fails on this one, SRE doesn't)
-    (r'.*d', 'abc\nabd', SUCCEED, 'found', 'abd'),
-    # bug 112468: various expected syntax errors
-    (r'(', '', SYNTAX_ERROR),
-    (r'[\41]', '!', SUCCEED, 'found', '!'),
-    # bug 114033: nothing to repeat
-    (r'(x?)?', 'x', SUCCEED, 'found', 'x'),
-    # bug 115040: rescan if flags are modified inside pattern
-    (r' (?x)foo ', 'foo', SUCCEED, 'found', 'foo'),
-    # bug 115618: negative lookahead
-    (r'(?<!abc)(d.f)', 'abcdefdof', SUCCEED, 'found', 'dof'),
-    # bug 116251: character class bug
-    (r'[\w-]+', 'laser_beam', SUCCEED, 'found', 'laser_beam'),
-    # bug 123769+127259: non-greedy backtracking bug
-    (r'.*?\S *:', 'xx:', SUCCEED, 'found', 'xx:'),
-    (r'a[ ]*?\ (\d+).*', 'a   10', SUCCEED, 'found', 'a   10'),
-    (r'a[ ]*?\ (\d+).*', 'a    10', SUCCEED, 'found', 'a    10'),
-    # bug 127259: \Z shouldn't depend on multiline mode
-    (r'(?ms).*?x\s*\Z(.*)','xx\nx\n', SUCCEED, 'g1', ''),
-    # bug 128899: uppercase literals under the ignorecase flag
-    (r'(?i)M+', 'MMM', SUCCEED, 'found', 'MMM'),
-    (r'(?i)m+', 'MMM', SUCCEED, 'found', 'MMM'),
-    (r'(?i)[M]+', 'MMM', SUCCEED, 'found', 'MMM'),
-    (r'(?i)[m]+', 'MMM', SUCCEED, 'found', 'MMM'),
-    # bug 130748: ^* should be an error (nothing to repeat)
-    (r'^*', '', SYNTAX_ERROR),
-    # bug 133283: minimizing repeat problem
-    (r'"(?:\\"|[^"])*?"', r'"\""', SUCCEED, 'found', r'"\""'),
-    # bug 477728: minimizing repeat problem
-    (r'^.*?$', 'one\ntwo\nthree\n', FAIL),
-    # bug 483789: minimizing repeat problem
-    (r'a[^>]*?b', 'a>b', FAIL),
-    # bug 490573: minimizing repeat problem
-    (r'^a*?$', 'foo', FAIL),
-    # bug 470582: nested groups problem
-    (r'^((a)c)?(ab)$', 'ab', SUCCEED, 'g1+"-"+g2+"-"+g3', 'None-None-ab'),
-    # another minimizing repeat problem (capturing groups in assertions)
-    ('^([ab]*?)(?=(b)?)c', 'abc', SUCCEED, 'g1+"-"+g2', 'ab-None'),
-    ('^([ab]*?)(?!(b))c', 'abc', SUCCEED, 'g1+"-"+g2', 'ab-None'),
-    ('^([ab]*?)(?<!(a))c', 'abc', SUCCEED, 'g1+"-"+g2', 'ab-None'),
-]
-
-try:
-    u = eval("u'\N{LATIN CAPITAL LETTER A WITH DIAERESIS}'")
-except SyntaxError:
-    pass
-else:
-    tests.extend([
-    # bug 410271: \b broken under locales
-    (r'\b.\b', 'a', SUCCEED, 'found', 'a'),
-    (r'(?u)\b.\b', u, SUCCEED, 'found', u),
-    (r'(?u)\w', u, SUCCEED, 'found', u),
-    ])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/regex_tests.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/regex_tests.py
deleted file mode 100644
index c00b4f7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/regex_tests.py
+++ /dev/null
@@ -1,287 +0,0 @@
-# Regex test suite and benchmark suite v1.5a2
-# Due to the use of r"aw" strings, this file will
-# only work with Python 1.5 or higher.
-
-# The 3 possible outcomes for each pattern
-[SUCCEED, FAIL, SYNTAX_ERROR] = range(3)
-
-# Benchmark suite (needs expansion)
-#
-# The benchmark suite does not test correctness, just speed.  The
-# first element of each tuple is the regex pattern; the second is a
-# string to match it against.  The benchmarking code will embed the
-# second string inside several sizes of padding, to test how regex
-# matching performs on large strings.
-
-benchmarks = [
-        ('Python', 'Python'),                     # Simple text literal
-        ('.*Python', 'Python'),                   # Bad text literal
-        ('.*Python.*', 'Python'),                 # Worse text literal
-        ('.*\\(Python\\)', 'Python'),             # Bad text literal with grouping
-
-        ('(Python\\|Perl\\|Tcl', 'Perl'),          # Alternation
-        ('\\(Python\\|Perl\\|Tcl\\)', 'Perl'),     # Grouped alternation
-        ('\\(Python\\)\\1', 'PythonPython'),       # Backreference
-#       ('\\([0a-z][a-z]*,\\)+', 'a5,b7,c9,'),     # Disable the fastmap optimization
-        ('\\([a-z][a-z0-9]*,\\)+', 'a5,b7,c9,')    # A few sets
-]
-
-# Test suite (for verifying correctness)
-#
-# The test suite is a list of 5- or 3-tuples.  The 5 parts of a
-# complete tuple are:
-# element 0: a string containing the pattern
-#         1: the string to match against the pattern
-#         2: the expected result (SUCCEED, FAIL, SYNTAX_ERROR)
-#         3: a string that will be eval()'ed to produce a test string.
-#            This is an arbitrary Python expression; the available
-#            variables are "found" (the whole match), and "g1", "g2", ...
-#            up to "g10" contain the contents of each group, or the
-#            string 'None' if the group wasn't given a value.
-#         4: The expected result of evaluating the expression.
-#            If the two don't match, an error is reported.
-#
-# If the regex isn't expected to work, the latter two elements can be omitted.
-
-tests = [
-('abc', 'abc', SUCCEED,
- 'found', 'abc'),
-('abc', 'xbc', FAIL),
-('abc', 'axc', FAIL),
-('abc', 'abx', FAIL),
-('abc', 'xabcy', SUCCEED,
- 'found', 'abc'),
-('abc', 'ababc', SUCCEED,
- 'found', 'abc'),
-('ab*c', 'abc', SUCCEED,
- 'found', 'abc'),
-('ab*bc', 'abc', SUCCEED,
- 'found', 'abc'),
-('ab*bc', 'abbc', SUCCEED,
- 'found', 'abbc'),
-('ab*bc', 'abbbbc', SUCCEED,
- 'found', 'abbbbc'),
-('ab+bc', 'abbc', SUCCEED,
- 'found', 'abbc'),
-('ab+bc', 'abc', FAIL),
-('ab+bc', 'abq', FAIL),
-('ab+bc', 'abbbbc', SUCCEED,
- 'found', 'abbbbc'),
-('ab?bc', 'abbc', SUCCEED,
- 'found', 'abbc'),
-('ab?bc', 'abc', SUCCEED,
- 'found', 'abc'),
-('ab?bc', 'abbbbc', FAIL),
-('ab?c', 'abc', SUCCEED,
- 'found', 'abc'),
-('^abc$', 'abc', SUCCEED,
- 'found', 'abc'),
-('^abc$', 'abcc', FAIL),
-('^abc', 'abcc', SUCCEED,
- 'found', 'abc'),
-('^abc$', 'aabc', FAIL),
-('abc$', 'aabc', SUCCEED,
- 'found', 'abc'),
-('^', 'abc', SUCCEED,
- 'found+"-"', '-'),
-('$', 'abc', SUCCEED,
- 'found+"-"', '-'),
-('a.c', 'abc', SUCCEED,
- 'found', 'abc'),
-('a.c', 'axc', SUCCEED,
- 'found', 'axc'),
-('a.*c', 'axyzc', SUCCEED,
- 'found', 'axyzc'),
-('a.*c', 'axyzd', FAIL),
-('a[bc]d', 'abc', FAIL),
-('a[bc]d', 'abd', SUCCEED,
- 'found', 'abd'),
-('a[b-d]e', 'abd', FAIL),
-('a[b-d]e', 'ace', SUCCEED,
- 'found', 'ace'),
-('a[b-d]', 'aac', SUCCEED,
- 'found', 'ac'),
-('a[-b]', 'a-', SUCCEED,
- 'found', 'a-'),
-('a[b-]', 'a-', SUCCEED,
- 'found', 'a-'),
-('a[]b', '-', SYNTAX_ERROR),
-('a[', '-', SYNTAX_ERROR),
-('a\\', '-', SYNTAX_ERROR),
-('abc\\)', '-', SYNTAX_ERROR),
-('\\(abc', '-', SYNTAX_ERROR),
-('a]', 'a]', SUCCEED,
- 'found', 'a]'),
-('a[]]b', 'a]b', SUCCEED,
- 'found', 'a]b'),
-('a[^bc]d', 'aed', SUCCEED,
- 'found', 'aed'),
-('a[^bc]d', 'abd', FAIL),
-('a[^-b]c', 'adc', SUCCEED,
- 'found', 'adc'),
-('a[^-b]c', 'a-c', FAIL),
-('a[^]b]c', 'a]c', FAIL),
-('a[^]b]c', 'adc', SUCCEED,
- 'found', 'adc'),
-('\\ba\\b', 'a-', SUCCEED,
- '"-"', '-'),
-('\\ba\\b', '-a', SUCCEED,
- '"-"', '-'),
-('\\ba\\b', '-a-', SUCCEED,
- '"-"', '-'),
-('\\by\\b', 'xy', FAIL),
-('\\by\\b', 'yz', FAIL),
-('\\by\\b', 'xyz', FAIL),
-('ab\\|cd', 'abc', SUCCEED,
- 'found', 'ab'),
-('ab\\|cd', 'abcd', SUCCEED,
- 'found', 'ab'),
-('\\(\\)ef', 'def', SUCCEED,
- 'found+"-"+g1', 'ef-'),
-('$b', 'b', FAIL),
-('a(b', 'a(b', SUCCEED,
- 'found+"-"+g1', 'a(b-None'),
-('a(*b', 'ab', SUCCEED,
- 'found', 'ab'),
-('a(*b', 'a((b', SUCCEED,
- 'found', 'a((b'),
-('a\\\\b', 'a\\b', SUCCEED,
- 'found', 'a\\b'),
-('\\(\\(a\\)\\)', 'abc', SUCCEED,
- 'found+"-"+g1+"-"+g2', 'a-a-a'),
-('\\(a\\)b\\(c\\)', 'abc', SUCCEED,
- 'found+"-"+g1+"-"+g2', 'abc-a-c'),
-('a+b+c', 'aabbabc', SUCCEED,
- 'found', 'abc'),
-('\\(a+\\|b\\)*', 'ab', SUCCEED,
- 'found+"-"+g1', 'ab-b'),
-('\\(a+\\|b\\)+', 'ab', SUCCEED,
- 'found+"-"+g1', 'ab-b'),
-('\\(a+\\|b\\)?', 'ab', SUCCEED,
- 'found+"-"+g1', 'a-a'),
-('\\)\\(', '-', SYNTAX_ERROR),
-('[^ab]*', 'cde', SUCCEED,
- 'found', 'cde'),
-('abc', '', FAIL),
-('a*', '', SUCCEED,
- 'found', ''),
-('a\\|b\\|c\\|d\\|e', 'e', SUCCEED,
- 'found', 'e'),
-('\\(a\\|b\\|c\\|d\\|e\\)f', 'ef', SUCCEED,
- 'found+"-"+g1', 'ef-e'),
-('abcd*efg', 'abcdefg', SUCCEED,
- 'found', 'abcdefg'),
-('ab*', 'xabyabbbz', SUCCEED,
- 'found', 'ab'),
-('ab*', 'xayabbbz', SUCCEED,
- 'found', 'a'),
-('\\(ab\\|cd\\)e', 'abcde', SUCCEED,
- 'found+"-"+g1', 'cde-cd'),
-('[abhgefdc]ij', 'hij', SUCCEED,
- 'found', 'hij'),
-('^\\(ab\\|cd\\)e', 'abcde', FAIL,
- 'xg1y', 'xy'),
-('\\(abc\\|\\)ef', 'abcdef', SUCCEED,
- 'found+"-"+g1', 'ef-'),
-('\\(a\\|b\\)c*d', 'abcd', SUCCEED,
- 'found+"-"+g1', 'bcd-b'),
-('\\(ab\\|ab*\\)bc', 'abc', SUCCEED,
- 'found+"-"+g1', 'abc-a'),
-('a\\([bc]*\\)c*', 'abc', SUCCEED,
- 'found+"-"+g1', 'abc-bc'),
-('a\\([bc]*\\)\\(c*d\\)', 'abcd', SUCCEED,
- 'found+"-"+g1+"-"+g2', 'abcd-bc-d'),
-('a\\([bc]+\\)\\(c*d\\)', 'abcd', SUCCEED,
- 'found+"-"+g1+"-"+g2', 'abcd-bc-d'),
-('a\\([bc]*\\)\\(c+d\\)', 'abcd', SUCCEED,
- 'found+"-"+g1+"-"+g2', 'abcd-b-cd'),
-('a[bcd]*dcdcde', 'adcdcde', SUCCEED,
- 'found', 'adcdcde'),
-('a[bcd]+dcdcde', 'adcdcde', FAIL),
-('\\(ab\\|a\\)b*c', 'abc', SUCCEED,
- 'found+"-"+g1', 'abc-ab'),
-('\\(\\(a\\)\\(b\\)c\\)\\(d\\)', 'abcd', SUCCEED,
- 'g1+"-"+g2+"-"+g3+"-"+g4', 'abc-a-b-d'),
-('[a-zA-Z_][a-zA-Z0-9_]*', 'alpha', SUCCEED,
- 'found', 'alpha'),
-('^a\\(bc+\\|b[eh]\\)g\\|.h$', 'abh', SUCCEED,
- 'found+"-"+g1', 'bh-None'),
-('\\(bc+d$\\|ef*g.\\|h?i\\(j\\|k\\)\\)', 'effgz', SUCCEED,
- 'found+"-"+g1+"-"+g2', 'effgz-effgz-None'),
-('\\(bc+d$\\|ef*g.\\|h?i\\(j\\|k\\)\\)', 'ij', SUCCEED,
- 'found+"-"+g1+"-"+g2', 'ij-ij-j'),
-('\\(bc+d$\\|ef*g.\\|h?i\\(j\\|k\\)\\)', 'effg', FAIL),
-('\\(bc+d$\\|ef*g.\\|h?i\\(j\\|k\\)\\)', 'bcdd', FAIL),
-('\\(bc+d$\\|ef*g.\\|h?i\\(j\\|k\\)\\)', 'reffgz', SUCCEED,
- 'found+"-"+g1+"-"+g2', 'effgz-effgz-None'),
-('\\(\\(\\(\\(\\(\\(\\(\\(\\(a\\)\\)\\)\\)\\)\\)\\)\\)\\)', 'a', SUCCEED,
- 'found', 'a'),
-('multiple words of text', 'uh-uh', FAIL),
-('multiple words', 'multiple words, yeah', SUCCEED,
- 'found', 'multiple words'),
-('\\(.*\\)c\\(.*\\)', 'abcde', SUCCEED,
- 'found+"-"+g1+"-"+g2', 'abcde-ab-de'),
-('(\\(.*\\), \\(.*\\))', '(a, b)', SUCCEED,
- 'g2+"-"+g1', 'b-a'),
-('[k]', 'ab', FAIL),
-('a[-]?c', 'ac', SUCCEED,
- 'found', 'ac'),
-('\\(abc\\)\\1', 'abcabc', SUCCEED,
- 'g1', 'abc'),
-('\\([a-c]*\\)\\1', 'abcabc', SUCCEED,
- 'g1', 'abc'),
-('^\\(.+\\)?B', 'AB', SUCCEED,
- 'g1', 'A'),
-('\\(a+\\).\\1$', 'aaaaa', SUCCEED,
- 'found+"-"+g1', 'aaaaa-aa'),
-('^\\(a+\\).\\1$', 'aaaa', FAIL),
-('\\(abc\\)\\1', 'abcabc', SUCCEED,
- 'found+"-"+g1', 'abcabc-abc'),
-('\\([a-c]+\\)\\1', 'abcabc', SUCCEED,
- 'found+"-"+g1', 'abcabc-abc'),
-('\\(a\\)\\1', 'aa', SUCCEED,
- 'found+"-"+g1', 'aa-a'),
-('\\(a+\\)\\1', 'aa', SUCCEED,
- 'found+"-"+g1', 'aa-a'),
-('\\(a+\\)+\\1', 'aa', SUCCEED,
- 'found+"-"+g1', 'aa-a'),
-('\\(a\\).+\\1', 'aba', SUCCEED,
- 'found+"-"+g1', 'aba-a'),
-('\\(a\\)ba*\\1', 'aba', SUCCEED,
- 'found+"-"+g1', 'aba-a'),
-('\\(aa\\|a\\)a\\1$', 'aaa', SUCCEED,
- 'found+"-"+g1', 'aaa-a'),
-('\\(a\\|aa\\)a\\1$', 'aaa', SUCCEED,
- 'found+"-"+g1', 'aaa-a'),
-('\\(a+\\)a\\1$', 'aaa', SUCCEED,
- 'found+"-"+g1', 'aaa-a'),
-('\\([abc]*\\)\\1', 'abcabc', SUCCEED,
- 'found+"-"+g1', 'abcabc-abc'),
-('\\(a\\)\\(b\\)c\\|ab', 'ab', SUCCEED,
- 'found+"-"+g1+"-"+g2', 'ab-None-None'),
-('\\(a\\)+x', 'aaax', SUCCEED,
- 'found+"-"+g1', 'aaax-a'),
-('\\([ac]\\)+x', 'aacx', SUCCEED,
- 'found+"-"+g1', 'aacx-c'),
-('\\([^/]*/\\)*sub1/', 'd:msgs/tdir/sub1/trial/away.cpp', SUCCEED,
- 'found+"-"+g1', 'd:msgs/tdir/sub1/-tdir/'),
-('\\([^.]*\\)\\.\\([^:]*\\):[T ]+\\(.*\\)', 'track1.title:TBlah blah blah', SUCCEED,
- 'found+"-"+g1+"-"+g2+"-"+g3', 'track1.title:TBlah blah blah-track1-title-Blah blah blah'),
-('\\([^N]*N\\)+', 'abNNxyzN', SUCCEED,
- 'found+"-"+g1', 'abNNxyzN-xyzN'),
-('\\([^N]*N\\)+', 'abNNxyz', SUCCEED,
- 'found+"-"+g1', 'abNN-N'),
-('\\([abc]*\\)x', 'abcx', SUCCEED,
- 'found+"-"+g1', 'abcx-abc'),
-('\\([abc]*\\)x', 'abc', FAIL),
-('\\([xyz]*\\)x', 'abcx', SUCCEED,
- 'found+"-"+g1', 'x-'),
-('\\(a\\)+b\\|aac', 'aac', SUCCEED,
- 'found+"-"+g1', 'aac-None'),
-('\<a', 'a', SUCCEED, 'found', 'a'),
-('\<a', '!', FAIL),
-('a\<b', 'ab', FAIL),
-('a\>', 'ab', FAIL),
-('a\>', 'a!', SUCCEED, 'found', 'a'),
-('a\>', 'a', SUCCEED, 'found', 'a'),
-]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/regrtest.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/regrtest.py
deleted file mode 100644
index 4add34d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/regrtest.py
+++ /dev/null
@@ -1,1536 +0,0 @@
-#! /usr/bin/env python
-
-"""
-Usage:
-
-python -m test.regrtest [options] [test_name1 [test_name2 ...]]
-python path/to/Lib/test/regrtest.py [options] [test_name1 [test_name2 ...]]
-
-
-If no arguments or options are provided, finds all files matching
-the pattern "test_*" in the Lib/test subdirectory and runs
-them in alphabetical order (but see -M and -u, below, for exceptions).
-
-For more rigorous testing, it is useful to use the following
-command line:
-
-python -E -tt -Wd -3 -m test.regrtest [options] [test_name1 ...]
-
-
-Options:
-
--h/--help       -- print this text and exit
-
-Verbosity
-
--v/--verbose    -- run tests in verbose mode with output to stdout
--w/--verbose2   -- re-run failed tests in verbose mode
--W/--verbose3   -- re-run failed tests in verbose mode immediately
--q/--quiet      -- no output unless one or more tests fail
--S/--slow       -- print the slowest 10 tests
-   --header     -- print header with interpreter info
-
-Selecting tests
-
--r/--random     -- randomize test execution order (see below)
-   --randseed   -- pass a random seed to reproduce a previous random run
--f/--fromfile   -- read names of tests to run from a file (see below)
--x/--exclude    -- arguments are tests to *exclude*
--s/--single     -- single step through a set of tests (see below)
--u/--use RES1,RES2,...
-                -- specify which special resource intensive tests to run
--M/--memlimit LIMIT
-                -- run very large memory-consuming tests
-
-Special runs
-
--l/--findleaks  -- if GC is available detect tests that leak memory
--L/--runleaks   -- run the leaks(1) command just before exit
--R/--huntrleaks RUNCOUNTS
-                -- search for reference leaks (needs debug build, v. slow)
--j/--multiprocess PROCESSES
-                -- run PROCESSES processes at once
--T/--coverage   -- turn on code coverage tracing using the trace module
--D/--coverdir DIRECTORY
-                -- Directory where coverage files are put
--N/--nocoverdir -- Put coverage files alongside modules
--t/--threshold THRESHOLD
-                -- call gc.set_threshold(THRESHOLD)
--F/--forever    -- run the specified tests in a loop, until an error happens
-
-
-Additional Option Details:
-
--r randomizes test execution order. You can use --randseed=int to provide a
-int seed value for the randomizer; this is useful for reproducing troublesome
-test orders.
-
--s On the first invocation of regrtest using -s, the first test file found
-or the first test file given on the command line is run, and the name of
-the next test is recorded in a file named pynexttest.  If run from the
-Python build directory, pynexttest is located in the 'build' subdirectory,
-otherwise it is located in tempfile.gettempdir().  On subsequent runs,
-the test in pynexttest is run, and the next test is written to pynexttest.
-When the last test has been run, pynexttest is deleted.  In this way it
-is possible to single step through the test files.  This is useful when
-doing memory analysis on the Python interpreter, which process tends to
-consume too many resources to run the full regression test non-stop.
-
--f reads the names of tests from the file given as f's argument, one
-or more test names per line.  Whitespace is ignored.  Blank lines and
-lines beginning with '#' are ignored.  This is especially useful for
-whittling down failures involving interactions among tests.
-
--L causes the leaks(1) command to be run just before exit if it exists.
-leaks(1) is available on Mac OS X and presumably on some other
-FreeBSD-derived systems.
-
--R runs each test several times and examines sys.gettotalrefcount() to
-see if the test appears to be leaking references.  The argument should
-be of the form stab:run:fname where 'stab' is the number of times the
-test is run to let gettotalrefcount settle down, 'run' is the number
-of times further it is run and 'fname' is the name of the file the
-reports are written to.  These parameters all have defaults (5, 4 and
-"reflog.txt" respectively), and the minimal invocation is '-R :'.
-
--M runs tests that require an exorbitant amount of memory. These tests
-typically try to ascertain containers keep working when containing more than
-2 billion objects, which only works on 64-bit systems. There are also some
-tests that try to exhaust the address space of the process, which only makes
-sense on 32-bit systems with at least 2Gb of memory. The passed-in memlimit,
-which is a string in the form of '2.5Gb', determines howmuch memory the
-tests will limit themselves to (but they may go slightly over.) The number
-shouldn't be more memory than the machine has (including swap memory). You
-should also keep in mind that swap memory is generally much, much slower
-than RAM, and setting memlimit to all available RAM or higher will heavily
-tax the machine. On the other hand, it is no use running these tests with a
-limit of less than 2.5Gb, and many require more than 20Gb. Tests that expect
-to use more than memlimit memory will be skipped. The big-memory tests
-generally run very, very long.
-
--u is used to specify which special resource intensive tests to run,
-such as those requiring large file support or network connectivity.
-The argument is a comma-separated list of words indicating the
-resources to test.  Currently only the following are defined:
-
-    all -       Enable all special resources.
-
-    audio -     Tests that use the audio device.  (There are known
-                cases of broken audio drivers that can crash Python or
-                even the Linux kernel.)
-
-    curses -    Tests that use curses and will modify the terminal's
-                state and output modes.
-
-    largefile - It is okay to run some test that may create huge
-                files.  These tests can take a long time and may
-                consume >2GB of disk space temporarily.
-
-    network -   It is okay to run tests that use external network
-                resource, e.g. testing SSL support for sockets.
-
-    bsddb -     It is okay to run the bsddb testsuite, which takes
-                a long time to complete.
-
-    decimal -   Test the decimal module against a large suite that
-                verifies compliance with standards.
-
-    cpu -       Used for certain CPU-heavy tests.
-
-    subprocess  Run all tests for the subprocess module.
-
-    urlfetch -  It is okay to download files required on testing.
-
-    gui -       Run tests that require a running GUI.
-
-    xpickle -   Test pickle and cPickle against Python 2.4, 2.5 and 2.6 to
-                test backwards compatibility. These tests take a long time
-                to run.
-
-To enable all resources except one, use '-uall,-<resource>'.  For
-example, to run all the tests except for the bsddb tests, give the
-option '-uall,-bsddb'.
-"""
-
-import StringIO
-import getopt
-import json
-import os
-import random
-import re
-import sys
-import time
-import traceback
-import warnings
-import unittest
-import tempfile
-import imp
-import platform
-import sysconfig
-
-
-# Some times __path__ and __file__ are not absolute (e.g. while running from
-# Lib/) and, if we change the CWD to run the tests in a temporary dir, some
-# imports might fail.  This affects only the modules imported before os.chdir().
-# These modules are searched first in sys.path[0] (so '' -- the CWD) and if
-# they are found in the CWD their __file__ and __path__ will be relative (this
-# happens before the chdir).  All the modules imported after the chdir, are
-# not found in the CWD, and since the other paths in sys.path[1:] are absolute
-# (site.py absolutize them), the __file__ and __path__ will be absolute too.
-# Therefore it is necessary to absolutize manually the __file__ and __path__ of
-# the packages to prevent later imports to fail when the CWD is different.
-for module in sys.modules.itervalues():
-    if hasattr(module, '__path__'):
-        module.__path__ = [os.path.abspath(path) for path in module.__path__]
-    if hasattr(module, '__file__'):
-        module.__file__ = os.path.abspath(module.__file__)
-
-
-# MacOSX (a.k.a. Darwin) has a default stack size that is too small
-# for deeply recursive regular expressions.  We see this as crashes in
-# the Python test suite when running test_re.py and test_sre.py.  The
-# fix is to set the stack limit to 2048.
-# This approach may also be useful for other Unixy platforms that
-# suffer from small default stack limits.
-if sys.platform == 'darwin':
-    try:
-        import resource
-    except ImportError:
-        pass
-    else:
-        soft, hard = resource.getrlimit(resource.RLIMIT_STACK)
-        newsoft = min(hard, max(soft, 1024*2048))
-        resource.setrlimit(resource.RLIMIT_STACK, (newsoft, hard))
-
-# Test result constants.
-PASSED = 1
-FAILED = 0
-ENV_CHANGED = -1
-SKIPPED = -2
-RESOURCE_DENIED = -3
-INTERRUPTED = -4
-
-from test import test_support
-
-RESOURCE_NAMES = ('audio', 'curses', 'largefile', 'network', 'bsddb',
-                  'decimal', 'cpu', 'subprocess', 'urlfetch', 'gui',
-                  'xpickle')
-
-TEMPDIR = os.path.abspath(tempfile.gettempdir())
-
-
-def usage(code, msg=''):
-    print __doc__
-    if msg: print msg
-    sys.exit(code)
-
-
-def main(tests=None, testdir=None, verbose=0, quiet=False,
-         exclude=False, single=False, randomize=False, fromfile=None,
-         findleaks=False, use_resources=None, trace=False, coverdir='coverage',
-         runleaks=False, huntrleaks=False, verbose2=False, print_slow=False,
-         random_seed=None, use_mp=None, verbose3=False, forever=False,
-         header=False):
-    """Execute a test suite.
-
-    This also parses command-line options and modifies its behavior
-    accordingly.
-
-    tests -- a list of strings containing test names (optional)
-    testdir -- the directory in which to look for tests (optional)
-
-    Users other than the Python test suite will certainly want to
-    specify testdir; if it's omitted, the directory containing the
-    Python test suite is searched for.
-
-    If the tests argument is omitted, the tests listed on the
-    command-line will be used.  If that's empty, too, then all *.py
-    files beginning with test_ will be used.
-
-    The other default arguments (verbose, quiet, exclude,
-    single, randomize, findleaks, use_resources, trace, coverdir,
-    print_slow, and random_seed) allow programmers calling main()
-    directly to set the values that would normally be set by flags
-    on the command line.
-    """
-
-    test_support.record_original_stdout(sys.stdout)
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'hvqxsSrf:lu:t:TD:NLR:FwWM:j:',
-            ['help', 'verbose', 'verbose2', 'verbose3', 'quiet',
-             'exclude', 'single', 'slow', 'random', 'fromfile', 'findleaks',
-             'use=', 'threshold=', 'trace', 'coverdir=', 'nocoverdir',
-             'runleaks', 'huntrleaks=', 'memlimit=', 'randseed=',
-             'multiprocess=', 'slaveargs=', 'forever', 'header'])
-    except getopt.error, msg:
-        usage(2, msg)
-
-    # Defaults
-    if random_seed is None:
-        random_seed = random.randrange(10000000)
-    if use_resources is None:
-        use_resources = []
-    for o, a in opts:
-        if o in ('-h', '--help'):
-            usage(0)
-        elif o in ('-v', '--verbose'):
-            verbose += 1
-        elif o in ('-w', '--verbose2'):
-            verbose2 = True
-        elif o in ('-W', '--verbose3'):
-            verbose3 = True
-        elif o in ('-q', '--quiet'):
-            quiet = True;
-            verbose = 0
-        elif o in ('-x', '--exclude'):
-            exclude = True
-        elif o in ('-s', '--single'):
-            single = True
-        elif o in ('-S', '--slow'):
-            print_slow = True
-        elif o in ('-r', '--randomize'):
-            randomize = True
-        elif o == '--randseed':
-            random_seed = int(a)
-        elif o in ('-f', '--fromfile'):
-            fromfile = a
-        elif o in ('-l', '--findleaks'):
-            findleaks = True
-        elif o in ('-L', '--runleaks'):
-            runleaks = True
-        elif o in ('-t', '--threshold'):
-            import gc
-            gc.set_threshold(int(a))
-        elif o in ('-T', '--coverage'):
-            trace = True
-        elif o in ('-D', '--coverdir'):
-            coverdir = os.path.join(os.getcwd(), a)
-        elif o in ('-N', '--nocoverdir'):
-            coverdir = None
-        elif o in ('-R', '--huntrleaks'):
-            huntrleaks = a.split(':')
-            if len(huntrleaks) not in (2, 3):
-                print a, huntrleaks
-                usage(2, '-R takes 2 or 3 colon-separated arguments')
-            if not huntrleaks[0]:
-                huntrleaks[0] = 5
-            else:
-                huntrleaks[0] = int(huntrleaks[0])
-            if not huntrleaks[1]:
-                huntrleaks[1] = 4
-            else:
-                huntrleaks[1] = int(huntrleaks[1])
-            if len(huntrleaks) == 2 or not huntrleaks[2]:
-                huntrleaks[2:] = ["reflog.txt"]
-        elif o in ('-M', '--memlimit'):
-            test_support.set_memlimit(a)
-        elif o in ('-u', '--use'):
-            u = [x.lower() for x in a.split(',')]
-            for r in u:
-                if r == 'all':
-                    use_resources[:] = RESOURCE_NAMES
-                    continue
-                remove = False
-                if r[0] == '-':
-                    remove = True
-                    r = r[1:]
-                if r not in RESOURCE_NAMES:
-                    usage(1, 'Invalid -u/--use option: ' + a)
-                if remove:
-                    if r in use_resources:
-                        use_resources.remove(r)
-                elif r not in use_resources:
-                    use_resources.append(r)
-        elif o in ('-F', '--forever'):
-            forever = True
-        elif o in ('-j', '--multiprocess'):
-            use_mp = int(a)
-        elif o == '--header':
-            header = True
-        elif o == '--slaveargs':
-            args, kwargs = json.loads(a)
-            try:
-                result = runtest(*args, **kwargs)
-            except BaseException, e:
-                result = INTERRUPTED, e.__class__.__name__
-            print   # Force a newline (just in case)
-            print json.dumps(result)
-            sys.exit(0)
-        else:
-            print >>sys.stderr, ("No handler for option {}.  Please "
-                "report this as a bug at http://bugs.python.org.").format(o)
-            sys.exit(1)
-    if single and fromfile:
-        usage(2, "-s and -f don't go together!")
-    if use_mp and trace:
-        usage(2, "-T and -j don't go together!")
-    if use_mp and findleaks:
-        usage(2, "-l and -j don't go together!")
-
-    good = []
-    bad = []
-    skipped = []
-    resource_denieds = []
-    environment_changed = []
-    interrupted = False
-
-    if findleaks:
-        try:
-            import gc
-        except ImportError:
-            print 'No GC available, disabling findleaks.'
-            findleaks = False
-        else:
-            # Uncomment the line below to report garbage that is not
-            # freeable by reference counting alone.  By default only
-            # garbage that is not collectable by the GC is reported.
-            #gc.set_debug(gc.DEBUG_SAVEALL)
-            found_garbage = []
-
-    if single:
-        filename = os.path.join(TEMPDIR, 'pynexttest')
-        try:
-            fp = open(filename, 'r')
-            next_test = fp.read().strip()
-            tests = [next_test]
-            fp.close()
-        except IOError:
-            pass
-
-    if fromfile:
-        tests = []
-        fp = open(os.path.join(test_support.SAVEDCWD, fromfile))
-        for line in fp:
-            guts = line.split() # assuming no test has whitespace in its name
-            if guts and not guts[0].startswith('#'):
-                tests.extend(guts)
-        fp.close()
-
-    # Strip .py extensions.
-    removepy(args)
-    removepy(tests)
-
-    stdtests = STDTESTS[:]
-    nottests = NOTTESTS.copy()
-    if exclude:
-        for arg in args:
-            if arg in stdtests:
-                stdtests.remove(arg)
-            nottests.add(arg)
-        args = []
-
-    # For a partial run, we do not need to clutter the output.
-    if verbose or header or not (quiet or single or tests or args):
-        # Print basic platform information
-        print "==", platform.python_implementation(), \
-                    " ".join(sys.version.split())
-        print "==  ", platform.platform(aliased=True), \
-                      "%s-endian" % sys.byteorder
-        print "==  ", os.getcwd()
-        print "Testing with flags:", sys.flags
-
-    alltests = findtests(testdir, stdtests, nottests)
-    selected = tests or args or alltests
-    if single:
-        selected = selected[:1]
-        try:
-            next_single_test = alltests[alltests.index(selected[0])+1]
-        except IndexError:
-            next_single_test = None
-    if randomize:
-        random.seed(random_seed)
-        print "Using random seed", random_seed
-        random.shuffle(selected)
-    if trace:
-        import trace
-        tracer = trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix],
-                             trace=False, count=True)
-
-    test_times = []
-    test_support.use_resources = use_resources
-    save_modules = sys.modules.keys()
-
-    def accumulate_result(test, result):
-        ok, test_time = result
-        test_times.append((test_time, test))
-        if ok == PASSED:
-            good.append(test)
-        elif ok == FAILED:
-            bad.append(test)
-        elif ok == ENV_CHANGED:
-            bad.append(test)
-            environment_changed.append(test)
-        elif ok == SKIPPED:
-            skipped.append(test)
-        elif ok == RESOURCE_DENIED:
-            skipped.append(test)
-            resource_denieds.append(test)
-
-    if forever:
-        def test_forever(tests=list(selected)):
-            while True:
-                for test in tests:
-                    yield test
-                    if bad:
-                        return
-        tests = test_forever()
-    else:
-        tests = iter(selected)
-
-    if use_mp:
-        try:
-            from threading import Thread
-        except ImportError:
-            print "Multiprocess option requires thread support"
-            sys.exit(2)
-        from Queue import Queue
-        from subprocess import Popen, PIPE
-        debug_output_pat = re.compile(r"\[\d+ refs\]$")
-        output = Queue()
-        def tests_and_args():
-            for test in tests:
-                args_tuple = (
-                    (test, verbose, quiet),
-                    dict(huntrleaks=huntrleaks, use_resources=use_resources)
-                )
-                yield (test, args_tuple)
-        pending = tests_and_args()
-        opt_args = test_support.args_from_interpreter_flags()
-        base_cmd = [sys.executable] + opt_args + ['-m', 'test.regrtest']
-        def work():
-            # A worker thread.
-            try:
-                while True:
-                    try:
-                        test, args_tuple = next(pending)
-                    except StopIteration:
-                        output.put((None, None, None, None))
-                        return
-                    # -E is needed by some tests, e.g. test_import
-                    popen = Popen(base_cmd + ['--slaveargs', json.dumps(args_tuple)],
-                                   stdout=PIPE, stderr=PIPE,
-                                   universal_newlines=True,
-                                   close_fds=(os.name != 'nt'))
-                    stdout, stderr = popen.communicate()
-                    # Strip last refcount output line if it exists, since it
-                    # comes from the shutdown of the interpreter in the subcommand.
-                    stderr = debug_output_pat.sub("", stderr)
-                    stdout, _, result = stdout.strip().rpartition("\n")
-                    if not result:
-                        output.put((None, None, None, None))
-                        return
-                    result = json.loads(result)
-                    if not quiet:
-                        stdout = test+'\n'+stdout
-                    output.put((test, stdout.rstrip(), stderr.rstrip(), result))
-            except BaseException:
-                output.put((None, None, None, None))
-                raise
-        workers = [Thread(target=work) for i in range(use_mp)]
-        for worker in workers:
-            worker.start()
-        finished = 0
-        try:
-            while finished < use_mp:
-                test, stdout, stderr, result = output.get()
-                if test is None:
-                    finished += 1
-                    continue
-                if stdout:
-                    print stdout
-                if stderr:
-                    print >>sys.stderr, stderr
-                if result[0] == INTERRUPTED:
-                    assert result[1] == 'KeyboardInterrupt'
-                    raise KeyboardInterrupt   # What else?
-                accumulate_result(test, result)
-        except KeyboardInterrupt:
-            interrupted = True
-            pending.close()
-        for worker in workers:
-            worker.join()
-    else:
-        for test in tests:
-            if not quiet:
-                print test
-                sys.stdout.flush()
-            if trace:
-                # If we're tracing code coverage, then we don't exit with status
-                # if on a false return value from main.
-                tracer.runctx('runtest(test, verbose, quiet)',
-                              globals=globals(), locals=vars())
-            else:
-                try:
-                    result = runtest(test, verbose, quiet, huntrleaks)
-                    accumulate_result(test, result)
-                    if verbose3 and result[0] == FAILED:
-                        print "Re-running test %r in verbose mode" % test
-                        runtest(test, True, quiet, huntrleaks)
-                except KeyboardInterrupt:
-                    interrupted = True
-                    break
-                except:
-                    raise
-            if findleaks:
-                gc.collect()
-                if gc.garbage:
-                    print "Warning: test created", len(gc.garbage),
-                    print "uncollectable object(s)."
-                    # move the uncollectable objects somewhere so we don't see
-                    # them again
-                    found_garbage.extend(gc.garbage)
-                    del gc.garbage[:]
-            # Unload the newly imported modules (best effort finalization)
-            for module in sys.modules.keys():
-                if module not in save_modules and module.startswith("test."):
-                    test_support.unload(module)
-
-    if interrupted:
-        # print a newline after ^C
-        print
-        print "Test suite interrupted by signal SIGINT."
-        omitted = set(selected) - set(good) - set(bad) - set(skipped)
-        print count(len(omitted), "test"), "omitted:"
-        printlist(omitted)
-    if good and not quiet:
-        if not bad and not skipped and not interrupted and len(good) > 1:
-            print "All",
-        print count(len(good), "test"), "OK."
-    if print_slow:
-        test_times.sort(reverse=True)
-        print "10 slowest tests:"
-        for time, test in test_times[:10]:
-            print "%s: %.1fs" % (test, time)
-    if bad:
-        bad = set(bad) - set(environment_changed)
-        if bad:
-            print count(len(bad), "test"), "failed:"
-            printlist(bad)
-        if environment_changed:
-            print "{} altered the execution environment:".format(
-                count(len(environment_changed), "test"))
-            printlist(environment_changed)
-    if skipped and not quiet:
-        print count(len(skipped), "test"), "skipped:"
-        printlist(skipped)
-
-        e = _ExpectedSkips()
-        plat = sys.platform
-        if e.isvalid():
-            surprise = set(skipped) - e.getexpected() - set(resource_denieds)
-            if surprise:
-                print count(len(surprise), "skip"), \
-                      "unexpected on", plat + ":"
-                printlist(surprise)
-            else:
-                print "Those skips are all expected on", plat + "."
-        else:
-            print "Ask someone to teach regrtest.py about which tests are"
-            print "expected to get skipped on", plat + "."
-
-    if verbose2 and bad:
-        print "Re-running failed tests in verbose mode"
-        for test in bad:
-            print "Re-running test %r in verbose mode" % test
-            sys.stdout.flush()
-            try:
-                test_support.verbose = True
-                ok = runtest(test, True, quiet, huntrleaks)
-            except KeyboardInterrupt:
-                # print a newline separate from the ^C
-                print
-                break
-            except:
-                raise
-
-    if single:
-        if next_single_test:
-            with open(filename, 'w') as fp:
-                fp.write(next_single_test + '\n')
-        else:
-            os.unlink(filename)
-
-    if trace:
-        r = tracer.results()
-        r.write_results(show_missing=True, summary=True, coverdir=coverdir)
-
-    if runleaks:
-        os.system("leaks %d" % os.getpid())
-
-    sys.exit(len(bad) > 0 or interrupted)
-
-
-STDTESTS = [
-    'test_grammar',
-    'test_opcodes',
-    'test_dict',
-    'test_builtin',
-    'test_exceptions',
-    'test_types',
-    'test_unittest',
-    'test_doctest',
-    'test_doctest2',
-]
-
-NOTTESTS = {
-    'test_support',
-    'test_future1',
-    'test_future2',
-}
-
-def findtests(testdir=None, stdtests=STDTESTS, nottests=NOTTESTS):
-    """Return a list of all applicable test modules."""
-    testdir = findtestdir(testdir)
-    names = os.listdir(testdir)
-    tests = []
-    others = set(stdtests) | nottests
-    for name in names:
-        modname, ext = os.path.splitext(name)
-        if modname[:5] == "test_" and ext == ".py" and modname not in others:
-            tests.append(modname)
-    return stdtests + sorted(tests)
-
-def runtest(test, verbose, quiet,
-            huntrleaks=False, use_resources=None):
-    """Run a single test.
-
-    test -- the name of the test
-    verbose -- if true, print more messages
-    quiet -- if true, don't print 'skipped' messages (probably redundant)
-    test_times -- a list of (time, test_name) pairs
-    huntrleaks -- run multiple times to test for leaks; requires a debug
-                  build; a triple corresponding to -R's three arguments
-    Returns one of the test result constants:
-        INTERRUPTED      KeyboardInterrupt when run under -j
-        RESOURCE_DENIED  test skipped because resource denied
-        SKIPPED          test skipped for some other reason
-        ENV_CHANGED      test failed because it changed the execution environment
-        FAILED           test failed
-        PASSED           test passed
-    """
-
-    test_support.verbose = verbose  # Tell tests to be moderately quiet
-    if use_resources is not None:
-        test_support.use_resources = use_resources
-    try:
-        return runtest_inner(test, verbose, quiet, huntrleaks)
-    finally:
-        cleanup_test_droppings(test, verbose)
-
-
-# Unit tests are supposed to leave the execution environment unchanged
-# once they complete.  But sometimes tests have bugs, especially when
-# tests fail, and the changes to environment go on to mess up other
-# tests.  This can cause issues with buildbot stability, since tests
-# are run in random order and so problems may appear to come and go.
-# There are a few things we can save and restore to mitigate this, and
-# the following context manager handles this task.
-
-class saved_test_environment:
-    """Save bits of the test environment and restore them at block exit.
-
-        with saved_test_environment(testname, verbose, quiet):
-            #stuff
-
-    Unless quiet is True, a warning is printed to stderr if any of
-    the saved items was changed by the test.  The attribute 'changed'
-    is initially False, but is set to True if a change is detected.
-
-    If verbose is more than 1, the before and after state of changed
-    items is also printed.
-    """
-
-    changed = False
-
-    def __init__(self, testname, verbose=0, quiet=False):
-        self.testname = testname
-        self.verbose = verbose
-        self.quiet = quiet
-
-    # To add things to save and restore, add a name XXX to the resources list
-    # and add corresponding get_XXX/restore_XXX functions.  get_XXX should
-    # return the value to be saved and compared against a second call to the
-    # get function when test execution completes.  restore_XXX should accept
-    # the saved value and restore the resource using it.  It will be called if
-    # and only if a change in the value is detected.
-    #
-    # Note: XXX will have any '.' replaced with '_' characters when determining
-    # the corresponding method names.
-
-    resources = ('sys.argv', 'cwd', 'sys.stdin', 'sys.stdout', 'sys.stderr',
-                 'os.environ', 'sys.path', 'asyncore.socket_map')
-
-    def get_sys_argv(self):
-        return id(sys.argv), sys.argv, sys.argv[:]
-    def restore_sys_argv(self, saved_argv):
-        sys.argv = saved_argv[1]
-        sys.argv[:] = saved_argv[2]
-
-    def get_cwd(self):
-        return os.getcwd()
-    def restore_cwd(self, saved_cwd):
-        os.chdir(saved_cwd)
-
-    def get_sys_stdout(self):
-        return sys.stdout
-    def restore_sys_stdout(self, saved_stdout):
-        sys.stdout = saved_stdout
-
-    def get_sys_stderr(self):
-        return sys.stderr
-    def restore_sys_stderr(self, saved_stderr):
-        sys.stderr = saved_stderr
-
-    def get_sys_stdin(self):
-        return sys.stdin
-    def restore_sys_stdin(self, saved_stdin):
-        sys.stdin = saved_stdin
-
-    def get_os_environ(self):
-        return id(os.environ), os.environ, dict(os.environ)
-    def restore_os_environ(self, saved_environ):
-        os.environ = saved_environ[1]
-        os.environ.clear()
-        os.environ.update(saved_environ[2])
-
-    def get_sys_path(self):
-        return id(sys.path), sys.path, sys.path[:]
-    def restore_sys_path(self, saved_path):
-        sys.path = saved_path[1]
-        sys.path[:] = saved_path[2]
-
-    def get_asyncore_socket_map(self):
-        asyncore = sys.modules.get('asyncore')
-        # XXX Making a copy keeps objects alive until __exit__ gets called.
-        return asyncore and asyncore.socket_map.copy() or {}
-    def restore_asyncore_socket_map(self, saved_map):
-        asyncore = sys.modules.get('asyncore')
-        if asyncore is not None:
-            asyncore.close_all(ignore_all=True)
-            asyncore.socket_map.update(saved_map)
-
-    def resource_info(self):
-        for name in self.resources:
-            method_suffix = name.replace('.', '_')
-            get_name = 'get_' + method_suffix
-            restore_name = 'restore_' + method_suffix
-            yield name, getattr(self, get_name), getattr(self, restore_name)
-
-    def __enter__(self):
-        self.saved_values = dict((name, get()) for name, get, restore
-                                                   in self.resource_info())
-        return self
-
-    def __exit__(self, exc_type, exc_val, exc_tb):
-        saved_values = self.saved_values
-        del self.saved_values
-        for name, get, restore in self.resource_info():
-            current = get()
-            original = saved_values.pop(name)
-            # Check for changes to the resource's value
-            if current != original:
-                self.changed = True
-                restore(original)
-                if not self.quiet:
-                    print >>sys.stderr, (
-                          "Warning -- {} was modified by {}".format(
-                                                 name, self.testname))
-                    if self.verbose > 1:
-                        print >>sys.stderr, (
-                              "  Before: {}\n  After:  {} ".format(
-                                                  original, current))
-            # XXX (ncoghlan): for most resources (e.g. sys.path) identity
-            # matters at least as much as value. For others (e.g. cwd),
-            # identity is irrelevant. Should we add a mechanism to check
-            # for substitution in the cases where it matters?
-        return False
-
-
-def runtest_inner(test, verbose, quiet, huntrleaks=False):
-    test_support.unload(test)
-    if verbose:
-        capture_stdout = None
-    else:
-        capture_stdout = StringIO.StringIO()
-
-    test_time = 0.0
-    refleak = False  # True if the test leaked references.
-    try:
-        save_stdout = sys.stdout
-        try:
-            if capture_stdout:
-                sys.stdout = capture_stdout
-            if test.startswith('test.'):
-                abstest = test
-            else:
-                # Always import it from the test package
-                abstest = 'test.' + test
-            with saved_test_environment(test, verbose, quiet) as environment:
-                start_time = time.time()
-                the_package = __import__(abstest, globals(), locals(), [])
-                the_module = getattr(the_package, test)
-                # Old tests run to completion simply as a side-effect of
-                # being imported.  For tests based on unittest or doctest,
-                # explicitly invoke their test_main() function (if it exists).
-                indirect_test = getattr(the_module, "test_main", None)
-                if indirect_test is not None:
-                    indirect_test()
-                if huntrleaks:
-                    refleak = dash_R(the_module, test, indirect_test,
-                        huntrleaks)
-                test_time = time.time() - start_time
-        finally:
-            sys.stdout = save_stdout
-    except test_support.ResourceDenied, msg:
-        if not quiet:
-            print test, "skipped --", msg
-            sys.stdout.flush()
-        return RESOURCE_DENIED, test_time
-    except unittest.SkipTest, msg:
-        if not quiet:
-            print test, "skipped --", msg
-            sys.stdout.flush()
-        return SKIPPED, test_time
-    except KeyboardInterrupt:
-        raise
-    except test_support.TestFailed, msg:
-        print >>sys.stderr, "test", test, "failed --", msg
-        sys.stderr.flush()
-        return FAILED, test_time
-    except:
-        type, value = sys.exc_info()[:2]
-        print >>sys.stderr, "test", test, "crashed --", str(type) + ":", value
-        sys.stderr.flush()
-        if verbose:
-            traceback.print_exc(file=sys.stderr)
-            sys.stderr.flush()
-        return FAILED, test_time
-    else:
-        if refleak:
-            return FAILED, test_time
-        if environment.changed:
-            return ENV_CHANGED, test_time
-        # Except in verbose mode, tests should not print anything
-        if verbose or huntrleaks:
-            return PASSED, test_time
-        output = capture_stdout.getvalue()
-        if not output:
-            return PASSED, test_time
-        print "test", test, "produced unexpected output:"
-        print "*" * 70
-        print output
-        print "*" * 70
-        sys.stdout.flush()
-        return FAILED, test_time
-
-def cleanup_test_droppings(testname, verbose):
-    import shutil
-    import stat
-    import gc
-
-    # First kill any dangling references to open files etc.
-    gc.collect()
-
-    # Try to clean up junk commonly left behind.  While tests shouldn't leave
-    # any files or directories behind, when a test fails that can be tedious
-    # for it to arrange.  The consequences can be especially nasty on Windows,
-    # since if a test leaves a file open, it cannot be deleted by name (while
-    # there's nothing we can do about that here either, we can display the
-    # name of the offending test, which is a real help).
-    for name in (test_support.TESTFN,
-                 "db_home",
-                ):
-        if not os.path.exists(name):
-            continue
-
-        if os.path.isdir(name):
-            kind, nuker = "directory", shutil.rmtree
-        elif os.path.isfile(name):
-            kind, nuker = "file", os.unlink
-        else:
-            raise SystemError("os.path says %r exists but is neither "
-                              "directory nor file" % name)
-
-        if verbose:
-            print "%r left behind %s %r" % (testname, kind, name)
-        try:
-            # if we have chmod, fix possible permissions problems
-            # that might prevent cleanup
-            if (hasattr(os, 'chmod')):
-                os.chmod(name, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
-            nuker(name)
-        except Exception, msg:
-            print >> sys.stderr, ("%r left behind %s %r and it couldn't be "
-                "removed: %s" % (testname, kind, name, msg))
-
-def dash_R(the_module, test, indirect_test, huntrleaks):
-    """Run a test multiple times, looking for reference leaks.
-
-    Returns:
-        False if the test didn't leak references; True if we detected refleaks.
-    """
-    # This code is hackish and inelegant, but it seems to do the job.
-    import copy_reg, _abcoll, _pyio
-
-    if not hasattr(sys, 'gettotalrefcount'):
-        raise Exception("Tracking reference leaks requires a debug build "
-                        "of Python")
-
-    # Save current values for dash_R_cleanup() to restore.
-    fs = warnings.filters[:]
-    ps = copy_reg.dispatch_table.copy()
-    pic = sys.path_importer_cache.copy()
-    try:
-        import zipimport
-    except ImportError:
-        zdc = None # Run unmodified on platforms without zipimport support
-    else:
-        zdc = zipimport._zip_directory_cache.copy()
-    abcs = {}
-    modules = _abcoll, _pyio
-    for abc in [getattr(mod, a) for mod in modules for a in mod.__all__]:
-        # XXX isinstance(abc, ABCMeta) leads to infinite recursion
-        if not hasattr(abc, '_abc_registry'):
-            continue
-        for obj in abc.__subclasses__() + [abc]:
-            abcs[obj] = obj._abc_registry.copy()
-
-    if indirect_test:
-        def run_the_test():
-            indirect_test()
-    else:
-        def run_the_test():
-            imp.reload(the_module)
-
-    deltas = []
-    nwarmup, ntracked, fname = huntrleaks
-    fname = os.path.join(test_support.SAVEDCWD, fname)
-    repcount = nwarmup + ntracked
-    print >> sys.stderr, "beginning", repcount, "repetitions"
-    print >> sys.stderr, ("1234567890"*(repcount//10 + 1))[:repcount]
-    dash_R_cleanup(fs, ps, pic, zdc, abcs)
-    for i in range(repcount):
-        rc_before = sys.gettotalrefcount()
-        run_the_test()
-        sys.stderr.write('.')
-        dash_R_cleanup(fs, ps, pic, zdc, abcs)
-        rc_after = sys.gettotalrefcount()
-        if i >= nwarmup:
-            deltas.append(rc_after - rc_before)
-    print >> sys.stderr
-    if any(deltas):
-        msg = '%s leaked %s references, sum=%s' % (test, deltas, sum(deltas))
-        print >> sys.stderr, msg
-        with open(fname, "a") as refrep:
-            print >> refrep, msg
-            refrep.flush()
-        return True
-    return False
-
-def dash_R_cleanup(fs, ps, pic, zdc, abcs):
-    import gc, copy_reg
-    import _strptime, linecache
-    dircache = test_support.import_module('dircache', deprecated=True)
-    import urlparse, urllib, urllib2, mimetypes, doctest
-    import struct, filecmp
-    from distutils.dir_util import _path_created
-
-    # Clear the warnings registry, so they can be displayed again
-    for mod in sys.modules.values():
-        if hasattr(mod, '__warningregistry__'):
-            del mod.__warningregistry__
-
-    # Restore some original values.
-    warnings.filters[:] = fs
-    copy_reg.dispatch_table.clear()
-    copy_reg.dispatch_table.update(ps)
-    sys.path_importer_cache.clear()
-    sys.path_importer_cache.update(pic)
-    try:
-        import zipimport
-    except ImportError:
-        pass # Run unmodified on platforms without zipimport support
-    else:
-        zipimport._zip_directory_cache.clear()
-        zipimport._zip_directory_cache.update(zdc)
-
-    # clear type cache
-    sys._clear_type_cache()
-
-    # Clear ABC registries, restoring previously saved ABC registries.
-    for abc, registry in abcs.items():
-        abc._abc_registry = registry.copy()
-        abc._abc_cache.clear()
-        abc._abc_negative_cache.clear()
-
-    # Clear assorted module caches.
-    _path_created.clear()
-    re.purge()
-    _strptime._regex_cache.clear()
-    urlparse.clear_cache()
-    urllib.urlcleanup()
-    urllib2.install_opener(None)
-    dircache.reset()
-    linecache.clearcache()
-    mimetypes._default_mime_types()
-    filecmp._cache.clear()
-    struct._clearcache()
-    doctest.master = None
-
-    # Collect cyclic trash.
-    gc.collect()
-
-def findtestdir(path=None):
-    return path or os.path.dirname(__file__) or os.curdir
-
-def removepy(names):
-    if not names:
-        return
-    for idx, name in enumerate(names):
-        basename, ext = os.path.splitext(name)
-        if ext == '.py':
-            names[idx] = basename
-
-def count(n, word):
-    if n == 1:
-        return "%d %s" % (n, word)
-    else:
-        return "%d %ss" % (n, word)
-
-def printlist(x, width=70, indent=4):
-    """Print the elements of iterable x to stdout.
-
-    Optional arg width (default 70) is the maximum line length.
-    Optional arg indent (default 4) is the number of blanks with which to
-    begin each line.
-    """
-
-    from textwrap import fill
-    blanks = ' ' * indent
-    # Print the sorted list: 'x' may be a '--random' list or a set()
-    print fill(' '.join(str(elt) for elt in sorted(x)), width,
-               initial_indent=blanks, subsequent_indent=blanks)
-
-# Map sys.platform to a string containing the basenames of tests
-# expected to be skipped on that platform.
-#
-# Special cases:
-#     test_pep277
-#         The _ExpectedSkips constructor adds this to the set of expected
-#         skips if not os.path.supports_unicode_filenames.
-#     test_timeout
-#         Controlled by test_timeout.skip_expected.  Requires the network
-#         resource and a socket module.
-#
-# Tests that are expected to be skipped everywhere except on one platform
-# are also handled separately.
-
-_expectations = {
-    'win32':
-        """
-        test__locale
-        test_bsddb185
-        test_bsddb3
-        test_commands
-        test_crypt
-        test_curses
-        test_dbm
-        test_dl
-        test_fcntl
-        test_fork1
-        test_epoll
-        test_gdbm
-        test_grp
-        test_ioctl
-        test_largefile
-        test_kqueue
-        test_mhlib
-        test_openpty
-        test_ossaudiodev
-        test_pipes
-        test_poll
-        test_posix
-        test_pty
-        test_pwd
-        test_resource
-        test_signal
-        test_threadsignals
-        test_timing
-        test_wait3
-        test_wait4
-        """,
-    'linux2':
-        """
-        test_bsddb185
-        test_curses
-        test_dl
-        test_largefile
-        test_kqueue
-        test_ossaudiodev
-        """,
-    'unixware7':
-        """
-        test_bsddb
-        test_bsddb185
-        test_dl
-        test_epoll
-        test_largefile
-        test_kqueue
-        test_minidom
-        test_openpty
-        test_pyexpat
-        test_sax
-        test_sundry
-        """,
-    'openunix8':
-        """
-        test_bsddb
-        test_bsddb185
-        test_dl
-        test_epoll
-        test_largefile
-        test_kqueue
-        test_minidom
-        test_openpty
-        test_pyexpat
-        test_sax
-        test_sundry
-        """,
-    'sco_sv3':
-        """
-        test_asynchat
-        test_bsddb
-        test_bsddb185
-        test_dl
-        test_fork1
-        test_epoll
-        test_gettext
-        test_largefile
-        test_locale
-        test_kqueue
-        test_minidom
-        test_openpty
-        test_pyexpat
-        test_queue
-        test_sax
-        test_sundry
-        test_thread
-        test_threaded_import
-        test_threadedtempfile
-        test_threading
-        """,
-    'riscos':
-        """
-        test_asynchat
-        test_atexit
-        test_bsddb
-        test_bsddb185
-        test_bsddb3
-        test_commands
-        test_crypt
-        test_dbm
-        test_dl
-        test_fcntl
-        test_fork1
-        test_epoll
-        test_gdbm
-        test_grp
-        test_largefile
-        test_locale
-        test_kqueue
-        test_mmap
-        test_openpty
-        test_poll
-        test_popen2
-        test_pty
-        test_pwd
-        test_strop
-        test_sundry
-        test_thread
-        test_threaded_import
-        test_threadedtempfile
-        test_threading
-        test_timing
-        """,
-    'darwin':
-        """
-        test__locale
-        test_bsddb
-        test_bsddb3
-        test_curses
-        test_epoll
-        test_gdb
-        test_gdbm
-        test_largefile
-        test_locale
-        test_kqueue
-        test_minidom
-        test_ossaudiodev
-        test_poll
-        """,
-    'sunos5':
-        """
-        test_bsddb
-        test_bsddb185
-        test_curses
-        test_dbm
-        test_epoll
-        test_kqueue
-        test_gdbm
-        test_gzip
-        test_openpty
-        test_zipfile
-        test_zlib
-        """,
-    'hp-ux11':
-        """
-        test_bsddb
-        test_bsddb185
-        test_curses
-        test_dl
-        test_epoll
-        test_gdbm
-        test_gzip
-        test_largefile
-        test_locale
-        test_kqueue
-        test_minidom
-        test_openpty
-        test_pyexpat
-        test_sax
-        test_zipfile
-        test_zlib
-        """,
-    'atheos':
-        """
-        test_bsddb185
-        test_curses
-        test_dl
-        test_gdbm
-        test_epoll
-        test_largefile
-        test_locale
-        test_kqueue
-        test_mhlib
-        test_mmap
-        test_poll
-        test_popen2
-        test_resource
-        """,
-    'cygwin':
-        """
-        test_bsddb185
-        test_bsddb3
-        test_curses
-        test_dbm
-        test_epoll
-        test_ioctl
-        test_kqueue
-        test_largefile
-        test_locale
-        test_ossaudiodev
-        test_socketserver
-        """,
-    'os2emx':
-        """
-        test_audioop
-        test_bsddb185
-        test_bsddb3
-        test_commands
-        test_curses
-        test_dl
-        test_epoll
-        test_kqueue
-        test_largefile
-        test_mhlib
-        test_mmap
-        test_openpty
-        test_ossaudiodev
-        test_pty
-        test_resource
-        test_signal
-        """,
-    'freebsd4':
-        """
-        test_bsddb
-        test_bsddb3
-        test_epoll
-        test_gdbm
-        test_locale
-        test_ossaudiodev
-        test_pep277
-        test_pty
-        test_socketserver
-        test_tcl
-        test_tk
-        test_ttk_guionly
-        test_ttk_textonly
-        test_timeout
-        test_urllibnet
-        test_multiprocessing
-        """,
-    'aix5':
-        """
-        test_bsddb
-        test_bsddb185
-        test_bsddb3
-        test_bz2
-        test_dl
-        test_epoll
-        test_gdbm
-        test_gzip
-        test_kqueue
-        test_ossaudiodev
-        test_tcl
-        test_tk
-        test_ttk_guionly
-        test_ttk_textonly
-        test_zipimport
-        test_zlib
-        """,
-    'openbsd3':
-        """
-        test_ascii_formatd
-        test_bsddb
-        test_bsddb3
-        test_ctypes
-        test_dl
-        test_epoll
-        test_gdbm
-        test_locale
-        test_normalization
-        test_ossaudiodev
-        test_pep277
-        test_tcl
-        test_tk
-        test_ttk_guionly
-        test_ttk_textonly
-        test_multiprocessing
-        """,
-    'netbsd3':
-        """
-        test_ascii_formatd
-        test_bsddb
-        test_bsddb185
-        test_bsddb3
-        test_ctypes
-        test_curses
-        test_dl
-        test_epoll
-        test_gdbm
-        test_locale
-        test_ossaudiodev
-        test_pep277
-        test_tcl
-        test_tk
-        test_ttk_guionly
-        test_ttk_textonly
-        test_multiprocessing
-        """,
-}
-_expectations['freebsd5'] = _expectations['freebsd4']
-_expectations['freebsd6'] = _expectations['freebsd4']
-_expectations['freebsd7'] = _expectations['freebsd4']
-_expectations['freebsd8'] = _expectations['freebsd4']
-
-class _ExpectedSkips:
-    def __init__(self):
-        import os.path
-        from test import test_timeout
-
-        self.valid = False
-        if sys.platform in _expectations:
-            s = _expectations[sys.platform]
-            self.expected = set(s.split())
-
-            # expected to be skipped on every platform, even Linux
-            self.expected.add('test_linuxaudiodev')
-
-            if not os.path.supports_unicode_filenames:
-                self.expected.add('test_pep277')
-
-            if test_timeout.skip_expected:
-                self.expected.add('test_timeout')
-
-            if sys.maxint == 9223372036854775807L:
-                self.expected.add('test_imageop')
-
-            if sys.platform != "darwin":
-                MAC_ONLY = ["test_macos", "test_macostools", "test_aepack",
-                            "test_plistlib", "test_scriptpackages",
-                            "test_applesingle"]
-                for skip in MAC_ONLY:
-                    self.expected.add(skip)
-            elif len(u'\0'.encode('unicode-internal')) == 4:
-                self.expected.add("test_macostools")
-
-
-            if sys.platform != "win32":
-                # test_sqlite is only reliable on Windows where the library
-                # is distributed with Python
-                WIN_ONLY = ["test_unicode_file", "test_winreg",
-                            "test_winsound", "test_startfile",
-                            "test_sqlite", "test_msilib"]
-                for skip in WIN_ONLY:
-                    self.expected.add(skip)
-
-            if sys.platform != 'irix':
-                IRIX_ONLY = ["test_imageop", "test_al", "test_cd", "test_cl",
-                             "test_gl", "test_imgfile"]
-                for skip in IRIX_ONLY:
-                    self.expected.add(skip)
-
-            if sys.platform != 'sunos5':
-                self.expected.add('test_sunaudiodev')
-                self.expected.add('test_nis')
-
-            if not sys.py3kwarning:
-                self.expected.add('test_py3kwarn')
-
-            self.valid = True
-
-    def isvalid(self):
-        "Return true iff _ExpectedSkips knows about the current platform."
-        return self.valid
-
-    def getexpected(self):
-        """Return set of test names we expect to skip on current platform.
-
-        self.isvalid() must be true.
-        """
-
-        assert self.isvalid()
-        return self.expected
-
-if __name__ == '__main__':
-    # findtestdir() gets the dirname out of __file__, so we have to make it
-    # absolute before changing the working directory.
-    # For example __file__ may be relative when running trace or profile.
-    # See issue #9323.
-    __file__ = os.path.abspath(__file__)
-
-    # sanity check
-    assert __file__ == os.path.abspath(sys.argv[0])
-
-    # When tests are run from the Python build directory, it is best practice
-    # to keep the test files in a subfolder.  It eases the cleanup of leftover
-    # files using command "make distclean".
-    if sysconfig.is_python_build():
-        TEMPDIR = os.path.join(sysconfig.get_config_var('srcdir'), 'build')
-        TEMPDIR = os.path.abspath(TEMPDIR)
-        if not os.path.exists(TEMPDIR):
-            os.mkdir(TEMPDIR)
-
-    # Define a writable temp dir that will be used as cwd while running
-    # the tests. The name of the dir includes the pid to allow parallel
-    # testing (see the -j option).
-    TESTCWD = 'test_python_{}'.format(os.getpid())
-
-    TESTCWD = os.path.join(TEMPDIR, TESTCWD)
-
-    # Run the tests in a context manager that temporary changes the CWD to a
-    # temporary and writable directory. If it's not possible to create or
-    # change the CWD, the original CWD will be used. The original CWD is
-    # available from test_support.SAVEDCWD.
-    with test_support.temp_cwd(TESTCWD, quiet=True):
-        main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/relimport.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/relimport.py
deleted file mode 100644
index bb54b93..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/relimport.py
+++ /dev/null
@@ -1 +0,0 @@
-from .test_import import *
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/reperf.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/reperf.py
deleted file mode 100644
index 194a21c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/reperf.py
+++ /dev/null
@@ -1,23 +0,0 @@
-import re
-import time
-
-def main():
-    s = "\13hello\14 \13world\14 " * 1000
-    p = re.compile(r"([\13\14])")
-    timefunc(10, p.sub, "", s)
-    timefunc(10, p.split, s)
-    timefunc(10, p.findall, s)
-
-def timefunc(n, func, *args, **kw):
-    t0 = time.clock()
-    try:
-        for i in range(n):
-            result = func(*args, **kw)
-        return result
-    finally:
-        t1 = time.clock()
-        if n > 1:
-            print n, "times",
-        print func.__name__, "%.3f" % (t1-t0), "CPU seconds"
-
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/sample_doctest.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/sample_doctest.py
deleted file mode 100644
index 2424891..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/sample_doctest.py
+++ /dev/null
@@ -1,76 +0,0 @@
-"""This is a sample module that doesn't really test anything all that
-   interesting.
-
-It simply has a few tests, some of which succeed and some of which fail.
-
-It's important that the numbers remain constant as another test is
-testing the running of these tests.
-
-
->>> 2+2
-4
-"""
-
-
-def foo():
-    """
-
-    >>> 2+2
-    5
-
-    >>> 2+2
-    4
-    """
-
-def bar():
-    """
-
-    >>> 2+2
-    4
-    """
-
-def test_silly_setup():
-    """
-
-    >>> import test.test_doctest
-    >>> test.test_doctest.sillySetup
-    True
-    """
-
-def w_blank():
-    """
-    >>> if 1:
-    ...    print 'a'
-    ...    print
-    ...    print 'b'
-    a
-    <BLANKLINE>
-    b
-    """
-
-x = 1
-def x_is_one():
-    """
-    >>> x
-    1
-    """
-
-def y_is_one():
-    """
-    >>> y
-    1
-    """
-
-__test__ = {'good': """
-                    >>> 42
-                    42
-                    """,
-            'bad':  """
-                    >>> 42
-                    666
-                    """,
-           }
-
-def test_suite():
-    import doctest
-    return doctest.DocTestSuite()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/script_helper.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/script_helper.py
deleted file mode 100644
index 2495643..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/script_helper.py
+++ /dev/null
@@ -1,164 +0,0 @@
-# Common utility functions used by various script execution tests
-#  e.g. test_cmd_line, test_cmd_line_script and test_runpy
-
-import sys
-import os
-import re
-import os.path
-import tempfile
-import subprocess
-import py_compile
-import contextlib
-import shutil
-import zipfile
-
-from test.test_support import strip_python_stderr
-
-# Executing the interpreter in a subprocess
-def _assert_python(expected_success, *args, **env_vars):
-    cmd_line = [sys.executable]
-    if not env_vars:
-        cmd_line.append('-E')
-    cmd_line.extend(args)
-    # Need to preserve the original environment, for in-place testing of
-    # shared library builds.
-    env = os.environ.copy()
-    env.update(env_vars)
-    p = subprocess.Popen(cmd_line, stdin=subprocess.PIPE,
-                         stdout=subprocess.PIPE, stderr=subprocess.PIPE,
-                         env=env)
-    try:
-        out, err = p.communicate()
-    finally:
-        subprocess._cleanup()
-        p.stdout.close()
-        p.stderr.close()
-    rc = p.returncode
-    err =  strip_python_stderr(err)
-    if (rc and expected_success) or (not rc and not expected_success):
-        raise AssertionError(
-            "Process return code is %d, "
-            "stderr follows:\n%s" % (rc, err.decode('ascii', 'ignore')))
-    return rc, out, err
-
-def assert_python_ok(*args, **env_vars):
-    """
-    Assert that running the interpreter with `args` and optional environment
-    variables `env_vars` is ok and return a (return code, stdout, stderr) tuple.
-    """
-    return _assert_python(True, *args, **env_vars)
-
-def assert_python_failure(*args, **env_vars):
-    """
-    Assert that running the interpreter with `args` and optional environment
-    variables `env_vars` fails and return a (return code, stdout, stderr) tuple.
-    """
-    return _assert_python(False, *args, **env_vars)
-
-def python_exit_code(*args):
-    cmd_line = [sys.executable, '-E']
-    cmd_line.extend(args)
-    with open(os.devnull, 'w') as devnull:
-        return subprocess.call(cmd_line, stdout=devnull,
-                                stderr=subprocess.STDOUT)
-
-def spawn_python(*args, **kwargs):
-    cmd_line = [sys.executable, '-E']
-    cmd_line.extend(args)
-    return subprocess.Popen(cmd_line, stdin=subprocess.PIPE,
-                            stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
-                            **kwargs)
-
-def kill_python(p):
-    p.stdin.close()
-    data = p.stdout.read()
-    p.stdout.close()
-    # try to cleanup the child so we don't appear to leak when running
-    # with regrtest -R.
-    p.wait()
-    subprocess._cleanup()
-    return data
-
-def run_python(*args, **kwargs):
-    if __debug__:
-        p = spawn_python(*args, **kwargs)
-    else:
-        p = spawn_python('-O', *args, **kwargs)
-    stdout_data = kill_python(p)
-    return p.wait(), stdout_data
-
-# Script creation utilities
-@contextlib.contextmanager
-def temp_dir():
-    dirname = tempfile.mkdtemp()
-    dirname = os.path.realpath(dirname)
-    try:
-        yield dirname
-    finally:
-        shutil.rmtree(dirname)
-
-def make_script(script_dir, script_basename, source):
-    script_filename = script_basename+os.extsep+'py'
-    script_name = os.path.join(script_dir, script_filename)
-    script_file = open(script_name, 'w')
-    script_file.write(source)
-    script_file.close()
-    return script_name
-
-def compile_script(script_name):
-    py_compile.compile(script_name, doraise=True)
-    if __debug__:
-        compiled_name = script_name + 'c'
-    else:
-        compiled_name = script_name + 'o'
-    return compiled_name
-
-def make_zip_script(zip_dir, zip_basename, script_name, name_in_zip=None):
-    zip_filename = zip_basename+os.extsep+'zip'
-    zip_name = os.path.join(zip_dir, zip_filename)
-    zip_file = zipfile.ZipFile(zip_name, 'w')
-    if name_in_zip is None:
-        name_in_zip = os.path.basename(script_name)
-    zip_file.write(script_name, name_in_zip)
-    zip_file.close()
-    #if test.test_support.verbose:
-    #    zip_file = zipfile.ZipFile(zip_name, 'r')
-    #    print 'Contents of %r:' % zip_name
-    #    zip_file.printdir()
-    #    zip_file.close()
-    return zip_name, os.path.join(zip_name, name_in_zip)
-
-def make_pkg(pkg_dir):
-    os.mkdir(pkg_dir)
-    make_script(pkg_dir, '__init__', '')
-
-def make_zip_pkg(zip_dir, zip_basename, pkg_name, script_basename,
-                 source, depth=1, compiled=False):
-    unlink = []
-    init_name = make_script(zip_dir, '__init__', '')
-    unlink.append(init_name)
-    init_basename = os.path.basename(init_name)
-    script_name = make_script(zip_dir, script_basename, source)
-    unlink.append(script_name)
-    if compiled:
-        init_name = compile_script(init_name)
-        script_name = compile_script(script_name)
-        unlink.extend((init_name, script_name))
-    pkg_names = [os.sep.join([pkg_name]*i) for i in range(1, depth+1)]
-    script_name_in_zip = os.path.join(pkg_names[-1], os.path.basename(script_name))
-    zip_filename = zip_basename+os.extsep+'zip'
-    zip_name = os.path.join(zip_dir, zip_filename)
-    zip_file = zipfile.ZipFile(zip_name, 'w')
-    for name in pkg_names:
-        init_name_in_zip = os.path.join(name, init_basename)
-        zip_file.write(init_name, init_name_in_zip)
-    zip_file.write(script_name, script_name_in_zip)
-    zip_file.close()
-    for name in unlink:
-        os.unlink(name)
-    #if test.test_support.verbose:
-    #    zip_file = zipfile.ZipFile(zip_name, 'r')
-    #    print 'Contents of %r:' % zip_name
-    #    zip_file.printdir()
-    #    zip_file.close()
-    return zip_name, os.path.join(zip_name, script_name_in_zip)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/seq_tests.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/seq_tests.py
deleted file mode 100644
index eba5ec7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/seq_tests.py
+++ /dev/null
@@ -1,392 +0,0 @@
-"""
-Tests common to tuple, list and UserList.UserList
-"""
-
-import unittest
-import sys
-
-# Various iterables
-# This is used for checking the constructor (here and in test_deque.py)
-def iterfunc(seqn):
-    'Regular generator'
-    for i in seqn:
-        yield i
-
-class Sequence:
-    'Sequence using __getitem__'
-    def __init__(self, seqn):
-        self.seqn = seqn
-    def __getitem__(self, i):
-        return self.seqn[i]
-
-class IterFunc:
-    'Sequence using iterator protocol'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-    def next(self):
-        if self.i >= len(self.seqn): raise StopIteration
-        v = self.seqn[self.i]
-        self.i += 1
-        return v
-
-class IterGen:
-    'Sequence using iterator protocol defined with a generator'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        for val in self.seqn:
-            yield val
-
-class IterNextOnly:
-    'Missing __getitem__ and __iter__'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def next(self):
-        if self.i >= len(self.seqn): raise StopIteration
-        v = self.seqn[self.i]
-        self.i += 1
-        return v
-
-class IterNoNext:
-    'Iterator missing next()'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-
-class IterGenExc:
-    'Test propagation of exceptions'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-    def next(self):
-        3 // 0
-
-class IterFuncStop:
-    'Test immediate stop'
-    def __init__(self, seqn):
-        pass
-    def __iter__(self):
-        return self
-    def next(self):
-        raise StopIteration
-
-from itertools import chain, imap
-def itermulti(seqn):
-    'Test multiple tiers of iterators'
-    return chain(imap(lambda x:x, iterfunc(IterGen(Sequence(seqn)))))
-
-class CommonTest(unittest.TestCase):
-    # The type to be tested
-    type2test = None
-
-    def test_constructors(self):
-        l0 = []
-        l1 = [0]
-        l2 = [0, 1]
-
-        u = self.type2test()
-        u0 = self.type2test(l0)
-        u1 = self.type2test(l1)
-        u2 = self.type2test(l2)
-
-        uu = self.type2test(u)
-        uu0 = self.type2test(u0)
-        uu1 = self.type2test(u1)
-        uu2 = self.type2test(u2)
-
-        v = self.type2test(tuple(u))
-        class OtherSeq:
-            def __init__(self, initseq):
-                self.__data = initseq
-            def __len__(self):
-                return len(self.__data)
-            def __getitem__(self, i):
-                return self.__data[i]
-        s = OtherSeq(u0)
-        v0 = self.type2test(s)
-        self.assertEqual(len(v0), len(s))
-
-        s = "this is also a sequence"
-        vv = self.type2test(s)
-        self.assertEqual(len(vv), len(s))
-
-        # Create from various iteratables
-        for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
-            for g in (Sequence, IterFunc, IterGen,
-                      itermulti, iterfunc):
-                self.assertEqual(self.type2test(g(s)), self.type2test(s))
-            self.assertEqual(self.type2test(IterFuncStop(s)), self.type2test())
-            self.assertEqual(self.type2test(c for c in "123"), self.type2test("123"))
-            self.assertRaises(TypeError, self.type2test, IterNextOnly(s))
-            self.assertRaises(TypeError, self.type2test, IterNoNext(s))
-            self.assertRaises(ZeroDivisionError, self.type2test, IterGenExc(s))
-
-    def test_truth(self):
-        self.assertFalse(self.type2test())
-        self.assertTrue(self.type2test([42]))
-
-    def test_getitem(self):
-        u = self.type2test([0, 1, 2, 3, 4])
-        for i in xrange(len(u)):
-            self.assertEqual(u[i], i)
-            self.assertEqual(u[long(i)], i)
-        for i in xrange(-len(u), -1):
-            self.assertEqual(u[i], len(u)+i)
-            self.assertEqual(u[long(i)], len(u)+i)
-        self.assertRaises(IndexError, u.__getitem__, -len(u)-1)
-        self.assertRaises(IndexError, u.__getitem__, len(u))
-        self.assertRaises(ValueError, u.__getitem__, slice(0,10,0))
-
-        u = self.type2test()
-        self.assertRaises(IndexError, u.__getitem__, 0)
-        self.assertRaises(IndexError, u.__getitem__, -1)
-
-        self.assertRaises(TypeError, u.__getitem__)
-
-        a = self.type2test([10, 11])
-        self.assertEqual(a[0], 10)
-        self.assertEqual(a[1], 11)
-        self.assertEqual(a[-2], 10)
-        self.assertEqual(a[-1], 11)
-        self.assertRaises(IndexError, a.__getitem__, -3)
-        self.assertRaises(IndexError, a.__getitem__, 3)
-
-    def test_getslice(self):
-        l = [0, 1, 2, 3, 4]
-        u = self.type2test(l)
-
-        self.assertEqual(u[0:0], self.type2test())
-        self.assertEqual(u[1:2], self.type2test([1]))
-        self.assertEqual(u[-2:-1], self.type2test([3]))
-        self.assertEqual(u[-1000:1000], u)
-        self.assertEqual(u[1000:-1000], self.type2test([]))
-        self.assertEqual(u[:], u)
-        self.assertEqual(u[1:None], self.type2test([1, 2, 3, 4]))
-        self.assertEqual(u[None:3], self.type2test([0, 1, 2]))
-
-        # Extended slices
-        self.assertEqual(u[::], u)
-        self.assertEqual(u[::2], self.type2test([0, 2, 4]))
-        self.assertEqual(u[1::2], self.type2test([1, 3]))
-        self.assertEqual(u[::-1], self.type2test([4, 3, 2, 1, 0]))
-        self.assertEqual(u[::-2], self.type2test([4, 2, 0]))
-        self.assertEqual(u[3::-2], self.type2test([3, 1]))
-        self.assertEqual(u[3:3:-2], self.type2test([]))
-        self.assertEqual(u[3:2:-2], self.type2test([3]))
-        self.assertEqual(u[3:1:-2], self.type2test([3]))
-        self.assertEqual(u[3:0:-2], self.type2test([3, 1]))
-        self.assertEqual(u[::-100], self.type2test([4]))
-        self.assertEqual(u[100:-100:], self.type2test([]))
-        self.assertEqual(u[-100:100:], u)
-        self.assertEqual(u[100:-100:-1], u[::-1])
-        self.assertEqual(u[-100:100:-1], self.type2test([]))
-        self.assertEqual(u[-100L:100L:2L], self.type2test([0, 2, 4]))
-
-        # Test extreme cases with long ints
-        a = self.type2test([0,1,2,3,4])
-        self.assertEqual(a[ -pow(2,128L): 3 ], self.type2test([0,1,2]))
-        self.assertEqual(a[ 3: pow(2,145L) ], self.type2test([3,4]))
-
-        self.assertRaises(TypeError, u.__getslice__)
-
-    def test_contains(self):
-        u = self.type2test([0, 1, 2])
-        for i in u:
-            self.assertIn(i, u)
-        for i in min(u)-1, max(u)+1:
-            self.assertNotIn(i, u)
-
-        self.assertRaises(TypeError, u.__contains__)
-
-    def test_contains_fake(self):
-        class AllEq:
-            # Sequences must use rich comparison against each item
-            # (unless "is" is true, or an earlier item answered)
-            # So instances of AllEq must be found in all non-empty sequences.
-            def __eq__(self, other):
-                return True
-            __hash__ = None # Can't meet hash invariant requirements
-        self.assertNotIn(AllEq(), self.type2test([]))
-        self.assertIn(AllEq(), self.type2test([1]))
-
-    def test_contains_order(self):
-        # Sequences must test in-order.  If a rich comparison has side
-        # effects, these will be visible to tests against later members.
-        # In this test, the "side effect" is a short-circuiting raise.
-        class DoNotTestEq(Exception):
-            pass
-        class StopCompares:
-            def __eq__(self, other):
-                raise DoNotTestEq
-
-        checkfirst = self.type2test([1, StopCompares()])
-        self.assertIn(1, checkfirst)
-        checklast = self.type2test([StopCompares(), 1])
-        self.assertRaises(DoNotTestEq, checklast.__contains__, 1)
-
-    def test_len(self):
-        self.assertEqual(len(self.type2test()), 0)
-        self.assertEqual(len(self.type2test([])), 0)
-        self.assertEqual(len(self.type2test([0])), 1)
-        self.assertEqual(len(self.type2test([0, 1, 2])), 3)
-
-    def test_minmax(self):
-        u = self.type2test([0, 1, 2])
-        self.assertEqual(min(u), 0)
-        self.assertEqual(max(u), 2)
-
-    def test_addmul(self):
-        u1 = self.type2test([0])
-        u2 = self.type2test([0, 1])
-        self.assertEqual(u1, u1 + self.type2test())
-        self.assertEqual(u1, self.type2test() + u1)
-        self.assertEqual(u1 + self.type2test([1]), u2)
-        self.assertEqual(self.type2test([-1]) + u1, self.type2test([-1, 0]))
-        self.assertEqual(self.type2test(), u2*0)
-        self.assertEqual(self.type2test(), 0*u2)
-        self.assertEqual(self.type2test(), u2*0L)
-        self.assertEqual(self.type2test(), 0L*u2)
-        self.assertEqual(u2, u2*1)
-        self.assertEqual(u2, 1*u2)
-        self.assertEqual(u2, u2*1L)
-        self.assertEqual(u2, 1L*u2)
-        self.assertEqual(u2+u2, u2*2)
-        self.assertEqual(u2+u2, 2*u2)
-        self.assertEqual(u2+u2, u2*2L)
-        self.assertEqual(u2+u2, 2L*u2)
-        self.assertEqual(u2+u2+u2, u2*3)
-        self.assertEqual(u2+u2+u2, 3*u2)
-
-        class subclass(self.type2test):
-            pass
-        u3 = subclass([0, 1])
-        self.assertEqual(u3, u3*1)
-        self.assertIsNot(u3, u3*1)
-
-    def test_iadd(self):
-        u = self.type2test([0, 1])
-        u += self.type2test()
-        self.assertEqual(u, self.type2test([0, 1]))
-        u += self.type2test([2, 3])
-        self.assertEqual(u, self.type2test([0, 1, 2, 3]))
-        u += self.type2test([4, 5])
-        self.assertEqual(u, self.type2test([0, 1, 2, 3, 4, 5]))
-
-        u = self.type2test("spam")
-        u += self.type2test("eggs")
-        self.assertEqual(u, self.type2test("spameggs"))
-
-    def test_imul(self):
-        u = self.type2test([0, 1])
-        u *= 3
-        self.assertEqual(u, self.type2test([0, 1, 0, 1, 0, 1]))
-
-    def test_getitemoverwriteiter(self):
-        # Verify that __getitem__ overrides are not recognized by __iter__
-        class T(self.type2test):
-            def __getitem__(self, key):
-                return str(key) + '!!!'
-        self.assertEqual(iter(T((1,2))).next(), 1)
-
-    def test_repeat(self):
-        for m in xrange(4):
-            s = tuple(range(m))
-            for n in xrange(-3, 5):
-                self.assertEqual(self.type2test(s*n), self.type2test(s)*n)
-            self.assertEqual(self.type2test(s)*(-4), self.type2test([]))
-            self.assertEqual(id(s), id(s*1))
-
-    def test_bigrepeat(self):
-        import sys
-        if sys.maxint <= 2147483647:
-            x = self.type2test([0])
-            x *= 2**16
-            self.assertRaises(MemoryError, x.__mul__, 2**16)
-            if hasattr(x, '__imul__'):
-                self.assertRaises(MemoryError, x.__imul__, 2**16)
-
-    def test_subscript(self):
-        a = self.type2test([10, 11])
-        self.assertEqual(a.__getitem__(0L), 10)
-        self.assertEqual(a.__getitem__(1L), 11)
-        self.assertEqual(a.__getitem__(-2L), 10)
-        self.assertEqual(a.__getitem__(-1L), 11)
-        self.assertRaises(IndexError, a.__getitem__, -3)
-        self.assertRaises(IndexError, a.__getitem__, 3)
-        self.assertEqual(a.__getitem__(slice(0,1)), self.type2test([10]))
-        self.assertEqual(a.__getitem__(slice(1,2)), self.type2test([11]))
-        self.assertEqual(a.__getitem__(slice(0,2)), self.type2test([10, 11]))
-        self.assertEqual(a.__getitem__(slice(0,3)), self.type2test([10, 11]))
-        self.assertEqual(a.__getitem__(slice(3,5)), self.type2test([]))
-        self.assertRaises(ValueError, a.__getitem__, slice(0, 10, 0))
-        self.assertRaises(TypeError, a.__getitem__, 'x')
-
-    def test_count(self):
-        a = self.type2test([0, 1, 2])*3
-        self.assertEqual(a.count(0), 3)
-        self.assertEqual(a.count(1), 3)
-        self.assertEqual(a.count(3), 0)
-
-        self.assertRaises(TypeError, a.count)
-
-        class BadExc(Exception):
-            pass
-
-        class BadCmp:
-            def __eq__(self, other):
-                if other == 2:
-                    raise BadExc()
-                return False
-
-        self.assertRaises(BadExc, a.count, BadCmp())
-
-    def test_index(self):
-        u = self.type2test([0, 1])
-        self.assertEqual(u.index(0), 0)
-        self.assertEqual(u.index(1), 1)
-        self.assertRaises(ValueError, u.index, 2)
-
-        u = self.type2test([-2, -1, 0, 0, 1, 2])
-        self.assertEqual(u.count(0), 2)
-        self.assertEqual(u.index(0), 2)
-        self.assertEqual(u.index(0, 2), 2)
-        self.assertEqual(u.index(-2, -10), 0)
-        self.assertEqual(u.index(0, 3), 3)
-        self.assertEqual(u.index(0, 3, 4), 3)
-        self.assertRaises(ValueError, u.index, 2, 0, -10)
-
-        self.assertRaises(TypeError, u.index)
-
-        class BadExc(Exception):
-            pass
-
-        class BadCmp:
-            def __eq__(self, other):
-                if other == 2:
-                    raise BadExc()
-                return False
-
-        a = self.type2test([0, 1, 2, 3])
-        self.assertRaises(BadExc, a.index, BadCmp())
-
-        a = self.type2test([-2, -1, 0, 0, 1, 2])
-        self.assertEqual(a.index(0), 2)
-        self.assertEqual(a.index(0, 2), 2)
-        self.assertEqual(a.index(0, -4), 2)
-        self.assertEqual(a.index(-2, -10), 0)
-        self.assertEqual(a.index(0, 3), 3)
-        self.assertEqual(a.index(0, -3), 3)
-        self.assertEqual(a.index(0, 3, 4), 3)
-        self.assertEqual(a.index(0, -3, -2), 3)
-        self.assertEqual(a.index(0, -4*sys.maxint, 4*sys.maxint), 2)
-        self.assertRaises(ValueError, a.index, 0, 4*sys.maxint,-4*sys.maxint)
-        self.assertRaises(ValueError, a.index, 2, 0, -10)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/sgml_input.html b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/sgml_input.html
deleted file mode 100644
index 97c0113..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/sgml_input.html
+++ /dev/null
@@ -1,212 +0,0 @@
-<html>
- <head>
-  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
-  <link rel="stylesheet" type="text/css" href="http://ogame182.de/epicblue/formate.css">
-  <script language="JavaScript" src="js/flotten.js"></script>
- </head>
- <body>
-    <script language=JavaScript> if (parent.frames.length == 0) { top.location.href = "http://es.ogame.org/"; } </script> <script language="JavaScript">
-function haha(z1) {
-  eval("location='"+z1.options[z1.selectedIndex].value+"'");
-}
-</script>
-<center>
-<table>
- <tr>
-  <td></td>
-  <td>
-   <center>
-   <table>
-    <tr>
-     <td><img src="http://ogame182.de/epicblue/planeten/small/s_dschjungelplanet04.jpg" width="50" height="50"></td>
-     <td>
-      <table border="1">
-       <select size="1" onchange="haha(this)">
-                                   <option value="/game/flotten1.php?session=8912ae912fec&cp=33875341&mode=Flotte&gid=&messageziel=&re=0" selected>Alien sex friend    [2:250:6]</option> 
-                                   <option value="/game/flotten1.php?session=8912ae912fec&cp=33905100&mode=Flotte&gid=&messageziel=&re=0" >1989    [2:248:14]</option> 
-                                   <option value="/game/flotten1.php?session=8912ae912fec&cp=34570808&mode=Flotte&gid=&messageziel=&re=0" >1990    [2:248:6]</option> 
-                                   <option value="/game/flotten1.php?session=8912ae912fec&cp=34570858&mode=Flotte&gid=&messageziel=&re=0" >1991    [2:254:6]</option> 
-                                   <option value="/game/flotten1.php?session=8912ae912fec&cp=34572929&mode=Flotte&gid=&messageziel=&re=0" >Colonia    [2:253:12]</option> 
-               </select>
-      </table>
-     </td>
-    </tr>
-  </table>
-  </center>
-  </td>
-  <td>
-   <table border="0" width="100%" cellspacing="0" cellpadding="0">
-    <tr>
-     <td align="center"></td>
-     <td align="center" width="85">
-      <img border="0" src="http://ogame182.de/epicblue/images/metall.gif" width="42" height="22">
-     </td>
-     <td align="center" width="85">
-      <img border="0" src="http://ogame182.de/epicblue/images/kristall.gif" width="42" height="22">
-     </td>
-     <td align="center" width="85">
-      <img border="0" src="http://ogame182.de/epicblue/images/deuterium.gif" width="42" height="22">
-     </td>
-     <td align="center" width="85">
-      <img border="0" src="http://ogame182.de/epicblue/images/energie.gif" width="42" height="22">
-     </td>
-     <td align="center"></td>
-    </tr>
-    <tr>
-     <td align="center"><i><b>&nbsp;&nbsp;</b></i></td>
-     <td align="center" width="85"><i><b><font color="#ffffff">Metal</font></b></i></td>
-     <td align="center" width="85"><i><b><font color="#ffffff">Cristal</font></b></i></td>
-     <td align="center" width="85"><i><b><font color="#ffffff">Deuterio</font></b></i></td>
-     <td align="center" width="85"><i><b><font color="#ffffff">Energía</font></b></i></td>
-     <td align="center"><i><b>&nbsp;&nbsp;</b></i></td>
-    </tr>
-    <tr>
-     <td align="center"></td>
-     <td align="center" width="85">160.636</td>
-     <td align="center" width="85">3.406</td>
-     <td align="center" width="85">39.230</td>
-     <td align="center" width="85"><font color=#ff0000>-80</font>/3.965</td>
-     <td align="center"></td>
-    </tr>
-   </table>
-  </tr>
- </table>
-  </center>
-<br />
-  <script language="JavaScript">
-  <!--
-     function link_to_gamepay() {
-    self.location = "https://www.gamepay.de/?lang=es&serverID=8&userID=129360&gameID=ogame&gui=v2&chksum=a9751afa9e37e6b1b826356bcca45675";
-  }
-//-->
-  </script>
-<center>
-  <table width="519" border="0" cellpadding="0" cellspacing="1">
-   <tr height="20">
-  <td colspan="8" class="c">Flotas (max. 9)</td>
-   </tr>
-     <tr height="20">
-    <th>Num.</th>
-    <th>Misión</th>
-    <th>Cantidad</th>
-    <th>Comienzo</th>
-    <th>Salida</th>
-    <th>Objetivo</th>
-    <th>Llegada</th>
-    <th>Orden</th>   
-   </tr>
-     <tr height="20">
-    <th>1</th>
-    <th>  
-      <a title="">Espionaje</a>
-      <a title="Flota en el planeta">(F)</a>
-    </th>
-    <th> <a title="Sonda de espionaje: 3 
-">3</a></th>
-    <th>[2:250:6]</th>
-    <th>Wed Aug 9 18:00:02</th>
-    <th>[2:242:5]</th>
-    <th>Wed Aug 9 18:01:02</th>
-    <th>
-         <form action="flotten1.php?session=8912ae912fec" method="POST">
-	<input type="hidden" name="order_return" value="25054490" />
-        <input type="submit" value="Enviar de regreso" />
-     </form>
-            </th>
-   </tr>
-   <tr height="20">
-    <th>2</th>
-    <th>  
-      <a title="">Espionaje</a>
-      <a title="Volver al planeta">(V)</a>
-    </th>
-    <th> <a title="Sonda de espionaje: 3 
-">3</a></th>
-    <th>[2:250:6]</th>
-    <th>Wed Aug 9 17:59:55</th>
-    <th>[2:242:1]</th>
-    <th>Wed Aug 9 18:01:55</th>
-    <th>
-            </th>
-   </tr>
-  </table>
-
-
-  
-<form action="flotten2.php?session=8912ae912fec" method="POST">
-  <table width="519" border="0" cellpadding="0" cellspacing="1">
-       <tr height="20">
-  <td colspan="4" class="c">Nueva misión: elegir naves</td>
-   </tr>
-   <tr height="20">
-  <th>Naves</th>
-  <th>Disponibles</th>
-<!--    <th>Gesch.</th> -->
-    <th>-</th>
-    <th>-</th>
-   </tr>
-   <tr height="20">
-    <th><a title="Velocidad: 8500">Nave pequeña de carga</a></th> 
-    <th>10<input type="hidden" name="maxship202" value="10"/></th>
-<!--    <th>8500 -->
-     <input type="hidden" name="consumption202" value="10"/>
-     <input type="hidden" name="speed202" value="8500" /></th>
-     <input type="hidden" name="capacity202" value="5000" /></th>
-     <th><a href="javascript:maxShip('ship202');" >máx</a> </th>
-     <th><input name="ship202" size="10" value="0" alt="Nave pequeña de carga 10"/></th>
-   </tr>
-   <tr height="20">
-    <th><a title="Velocidad: 12750">Nave grande de carga</a></th> 
-    <th>19<input type="hidden" name="maxship203" value="19"/></th>
-<!--    <th>12750 -->
-     <input type="hidden" name="consumption203" value="50"/>
-     <input type="hidden" name="speed203" value="12750" /></th>
-     <input type="hidden" name="capacity203" value="25000" /></th>
-     <th><a href="javascript:maxShip('ship203');" >máx</a> </th>
-     <th><input name="ship203" size="10" value="0" alt="Nave grande de carga 19"/></th>
-   </tr>
-   <tr height="20">
-    <th><a title="Velocidad: 27000">Crucero</a></th> 
-    <th>6<input type="hidden" name="maxship206" value="6"/></th>
-<!--    <th>27000 -->
-     <input type="hidden" name="consumption206" value="300"/>
-     <input type="hidden" name="speed206" value="27000" /></th>
-     <input type="hidden" name="capacity206" value="800" /></th>
-     <th><a href="javascript:maxShip('ship206');" >máx</a> </th>
-     <th><input name="ship206" size="10" value="0" alt="Crucero 6"/></th>
-   </tr>
-   <tr height="20">
-    <th><a title="Velocidad: 3400">Reciclador</a></th> 
-    <th>1<input type="hidden" name="maxship209" value="1"/></th>
-<!--    <th>3400 -->
-     <input type="hidden" name="consumption209" value="300"/>
-     <input type="hidden" name="speed209" value="3400" /></th>
-     <input type="hidden" name="capacity209" value="20000" /></th>
-     <th><a href="javascript:maxShip('ship209');" >máx</a> </th>
-     <th><input name="ship209" size="10" value="0" alt="Reciclador 1"/></th>
-   </tr>
-   <tr height="20">
-    <th><a title="Velocidad: 170000000">Sonda de espionaje</a></th> 
-    <th>139<input type="hidden" name="maxship210" value="139"/></th>
-<!--    <th>170000000 -->
-     <input type="hidden" name="consumption210" value="1"/>
-     <input type="hidden" name="speed210" value="170000000" /></th>
-     <input type="hidden" name="capacity210" value="5" /></th>
-     <th><a href="javascript:maxShip('ship210');" >máx</a> </th>
-     <th><input name="ship210" size="10" value="0" alt="Sonda de espionaje 139"/></th>
-   </tr>
-   <tr height="20">
-  <th colspan="2"><a href="javascript:noShips();" >Ninguna nave</a></th>
-  <th colspan="2"><a href="javascript:maxShips();" >Todas las naves</a></th>
-   </tr>
-    <tr height="20">
-    <th colspan="4"><input type="submit" value="Continuar" /></th>
-   </tr>
-<tr><th colspan=4>
-<iframe id='a44fb522' name='a44fb522' src='http://ads.gameforgeads.de/adframe.php?n=a44fb522&amp;what=zone:578' framespacing='0' frameborder='no' scrolling='no' width='468' height='60'></iframe>
-<br><center></center></br>
-</th></tr>
-</form>
-</table>
- </body>
-</html>
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/sha256.pem b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/sha256.pem
deleted file mode 100644
index 7f8210c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/sha256.pem
+++ /dev/null
@@ -1,129 +0,0 @@
-# Certificate chain for https://sha256.tbs-internet.com
- 0 s:/C=FR/postalCode=14000/ST=Calvados/L=CAEN/street=22 rue de Bretagne/O=TBS INTERNET/OU=0002 440443810/OU=sha-256 production/CN=sha256.tbs-internet.com
-   i:/C=FR/ST=Calvados/L=Caen/O=TBS INTERNET/OU=Terms and Conditions: http://www.tbs-internet.com/CA/repository/OU=TBS INTERNET CA/CN=TBS X509 CA SGC
------BEGIN CERTIFICATE-----
-MIIGXTCCBUWgAwIBAgIRAMmag+ygSAdxZsbyzYjhuW0wDQYJKoZIhvcNAQELBQAw
-gcQxCzAJBgNVBAYTAkZSMREwDwYDVQQIEwhDYWx2YWRvczENMAsGA1UEBxMEQ2Fl
-bjEVMBMGA1UEChMMVEJTIElOVEVSTkVUMUgwRgYDVQQLEz9UZXJtcyBhbmQgQ29u
-ZGl0aW9uczogaHR0cDovL3d3dy50YnMtaW50ZXJuZXQuY29tL0NBL3JlcG9zaXRv
-cnkxGDAWBgNVBAsTD1RCUyBJTlRFUk5FVCBDQTEYMBYGA1UEAxMPVEJTIFg1MDkg
-Q0EgU0dDMB4XDTEwMDIxODAwMDAwMFoXDTEyMDIxOTIzNTk1OVowgcsxCzAJBgNV
-BAYTAkZSMQ4wDAYDVQQREwUxNDAwMDERMA8GA1UECBMIQ2FsdmFkb3MxDTALBgNV
-BAcTBENBRU4xGzAZBgNVBAkTEjIyIHJ1ZSBkZSBCcmV0YWduZTEVMBMGA1UEChMM
-VEJTIElOVEVSTkVUMRcwFQYDVQQLEw4wMDAyIDQ0MDQ0MzgxMDEbMBkGA1UECxMS
-c2hhLTI1NiBwcm9kdWN0aW9uMSAwHgYDVQQDExdzaGEyNTYudGJzLWludGVybmV0
-LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbuM8VT7f0nntwu
-N3F7v9KIBlhKNAxqCrziOXU5iqUt8HrQB3DtHbdmII+CpVUlwlmepsx6G+srEZ9a
-MIGAy0nxi5aLb7watkyIdPjJTMvTUBQ/+RPWzt5JtYbbY9BlJ+yci0dctP74f4NU
-ISLtlrEjUbf2gTohLrcE01TfmOF6PDEbB5PKDi38cB3NzKfizWfrOaJW6Q1C1qOJ
-y4/4jkUREX1UFUIxzx7v62VfjXSGlcjGpBX1fvtABQOSLeE0a6gciDZs1REqroFf
-5eXtqYphpTa14Z83ITXMfgg5Nze1VtMnzI9Qx4blYBw4dgQVEuIsYr7FDBOITDzc
-VEVXZx0CAwEAAaOCAj8wggI7MB8GA1UdIwQYMBaAFAdEdoWTKLx/bXjSCuv6TEvf
-2YIfMB0GA1UdDgQWBBSJKI/AYVI9RQNY0QPIqc8ej2QivTAOBgNVHQ8BAf8EBAMC
-BaAwDAYDVR0TAQH/BAIwADA0BgNVHSUELTArBggrBgEFBQcDAQYIKwYBBQUHAwIG
-CisGAQQBgjcKAwMGCWCGSAGG+EIEATBMBgNVHSAERTBDMEEGCysGAQQBgOU3AgQB
-MDIwMAYIKwYBBQUHAgEWJGh0dHBzOi8vd3d3LnRicy1pbnRlcm5ldC5jb20vQ0Ev
-Q1BTNDBtBgNVHR8EZjBkMDKgMKAuhixodHRwOi8vY3JsLnRicy1pbnRlcm5ldC5j
-b20vVEJTWDUwOUNBU0dDLmNybDAuoCygKoYoaHR0cDovL2NybC50YnMteDUwOS5j
-b20vVEJTWDUwOUNBU0dDLmNybDCBpgYIKwYBBQUHAQEEgZkwgZYwOAYIKwYBBQUH
-MAKGLGh0dHA6Ly9jcnQudGJzLWludGVybmV0LmNvbS9UQlNYNTA5Q0FTR0MuY3J0
-MDQGCCsGAQUFBzAChihodHRwOi8vY3J0LnRicy14NTA5LmNvbS9UQlNYNTA5Q0FT
-R0MuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC50YnMteDUwOS5jb20wPwYD
-VR0RBDgwNoIXc2hhMjU2LnRicy1pbnRlcm5ldC5jb22CG3d3dy5zaGEyNTYudGJz
-LWludGVybmV0LmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAA5NL0D4QSqhErhlkdPmz
-XtiMvdGL+ZehM4coTRIpasM/Agt36Rc0NzCvnQwKE+wkngg1Gy2qe7Q0E/ziqBtB
-fZYzdVgu1zdiL4kTaf+wFKYAFGsFbyeEmXysy+CMwaNoF2vpSjCU1UD56bEnTX/W
-fxVZYxtBQUpnu2wOsm8cDZuZRv9XrYgAhGj9Tt6F0aVHSDGn59uwShG1+BVF/uju
-SCyPTTjL1oc7YElJUzR/x4mQJYvtQI8gDIDAGEOs7v3R/gKa5EMfbUQUI4C84UbI
-Yz09Jdnws/MkC/Hm1BZEqk89u7Hvfv+oHqEb0XaUo0TDfsxE0M1sMdnLb91QNQBm
-UQ==
------END CERTIFICATE-----
- 1 s:/C=FR/ST=Calvados/L=Caen/O=TBS INTERNET/OU=Terms and Conditions: http://www.tbs-internet.com/CA/repository/OU=TBS INTERNET CA/CN=TBS X509 CA SGC
-   i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
------BEGIN CERTIFICATE-----
-MIIFVjCCBD6gAwIBAgIQXpDZ0ETJMV02WTx3GTnhhTANBgkqhkiG9w0BAQUFADBv
-MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk
-ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF
-eHRlcm5hbCBDQSBSb290MB4XDTA1MTIwMTAwMDAwMFoXDTE5MDYyNDE5MDYzMFow
-gcQxCzAJBgNVBAYTAkZSMREwDwYDVQQIEwhDYWx2YWRvczENMAsGA1UEBxMEQ2Fl
-bjEVMBMGA1UEChMMVEJTIElOVEVSTkVUMUgwRgYDVQQLEz9UZXJtcyBhbmQgQ29u
-ZGl0aW9uczogaHR0cDovL3d3dy50YnMtaW50ZXJuZXQuY29tL0NBL3JlcG9zaXRv
-cnkxGDAWBgNVBAsTD1RCUyBJTlRFUk5FVCBDQTEYMBYGA1UEAxMPVEJTIFg1MDkg
-Q0EgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsgOkO3f7wzN6
-rOjg45tR5vjBfzK7qmV9IBxb/QW9EEXxG+E7FNhZqQLtwGBKoSsHTnQqV75wWMk0
-9tinWvftBkSpj5sTi/8cbzJfUvTSVYh3Qxv6AVVjMMH/ruLjE6y+4PoaPs8WoYAQ
-ts5R4Z1g8c/WnTepLst2x0/Wv7GmuoQi+gXvHU6YrBiu7XkeYhzc95QdviWSJRDk
-owhb5K43qhcvjRmBfO/paGlCliDGZp8mHwrI21mwobWpVjTxZRwYO3bd4+TGcI4G
-Ie5wmHwE8F7SK1tgSqbBacKjDa93j7txKkfz/Yd2n7TGqOXiHPsJpG655vrKtnXk
-9vs1zoDeJQIDAQABo4IBljCCAZIwHQYDVR0OBBYEFAdEdoWTKLx/bXjSCuv6TEvf
-2YIfMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMCAGA1UdJQQZ
-MBcGCisGAQQBgjcKAwMGCWCGSAGG+EIEATAYBgNVHSAEETAPMA0GCysGAQQBgOU3
-AgQBMHsGA1UdHwR0MHIwOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL0Fk
-ZFRydXN0RXh0ZXJuYWxDQVJvb3QuY3JsMDagNKAyhjBodHRwOi8vY3JsLmNvbW9k
-by5uZXQvQWRkVHJ1c3RFeHRlcm5hbENBUm9vdC5jcmwwgYAGCCsGAQUFBwEBBHQw
-cjA4BggrBgEFBQcwAoYsaHR0cDovL2NydC5jb21vZG9jYS5jb20vQWRkVHJ1c3RV
-VE5TR0NDQS5jcnQwNgYIKwYBBQUHMAKGKmh0dHA6Ly9jcnQuY29tb2RvLm5ldC9B
-ZGRUcnVzdFVUTlNHQ0NBLmNydDARBglghkgBhvhCAQEEBAMCAgQwDQYJKoZIhvcN
-AQEFBQADggEBAK2zEzs+jcIrVK9oDkdDZNvhuBYTdCfpxfFs+OAujW0bIfJAy232
-euVsnJm6u/+OrqKudD2tad2BbejLLXhMZViaCmK7D9nrXHx4te5EP8rL19SUVqLY
-1pTnv5dhNgEgvA7n5lIzDSYs7yRLsr7HJsYPr6SeYSuZizyX1SNz7ooJ32/F3X98
-RB0Mlc/E0OyOrkQ9/y5IrnpnaSora8CnUrV5XNOg+kyCz9edCyx4D5wXYcwZPVWz
-8aDqquESrezPyjtfi4WRO4s/VD3HLZvOxzMrWAVYCDG9FxaOhF0QGuuG1F7F3GKV
-v6prNyCl016kRl2j1UT+a7gLd8fA25A4C9E=
------END CERTIFICATE-----
- 2 s:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root
-   i:/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN - DATACorp SGC
------BEGIN CERTIFICATE-----
-MIIEZjCCA06gAwIBAgIQUSYKkxzif5zDpV954HKugjANBgkqhkiG9w0BAQUFADCB
-kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
-Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
-dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw
-IFNHQzAeFw0wNTA2MDcwODA5MTBaFw0xOTA2MjQxOTA2MzBaMG8xCzAJBgNVBAYT
-AlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0
-ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
-IFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC39xoz5vIABC05
-4E5b7R+8bA/Ntfojts7emxEzl6QpTH2Tn71KvJPtAxrjj8/lbVBa1pcplFqAsEl6
-2y6V/bjKvzc4LR4+kUGtcFbH8E8/6DKedMrIkFTpxl8PeJ2aQDwOrGGqXhSPnoeh
-alDc15pOrwWzpnGUnHGzUGAKxxOdOAeGAqjpqGkmGJCrTLBPI6s6T4TY386f4Wlv
-u9dC12tE5Met7m1BX3JacQg3s3llpFmglDf3AC8NwpJy2tA4ctsUqEXEXSp9t7TW
-xO6szRNEt8kr3UMAJfphuWlqWCMRt6czj1Z1WfXNKddGtworZbbTQm8Vsrh7++/p
-XVPVNFonAgMBAAGjgdgwgdUwHwYDVR0jBBgwFoAUUzLRs89/+uDxoF2FTpLSnkUd
-tE8wHQYDVR0OBBYEFK29mHo0tCb3+sQmVO8DveAky1QaMA4GA1UdDwEB/wQEAwIB
-BjAPBgNVHRMBAf8EBTADAQH/MBEGCWCGSAGG+EIBAQQEAwIBAjAgBgNVHSUEGTAX
-BgorBgEEAYI3CgMDBglghkgBhvhCBAEwPQYDVR0fBDYwNDAyoDCgLoYsaHR0cDov
-L2NybC51c2VydHJ1c3QuY29tL1VUTi1EQVRBQ29ycFNHQy5jcmwwDQYJKoZIhvcN
-AQEFBQADggEBAMbuUxdoFLJRIh6QWA2U/b3xcOWGLcM2MY9USEbnLQg3vGwKYOEO
-rVE04BKT6b64q7gmtOmWPSiPrmQH/uAB7MXjkesYoPF1ftsK5p+R26+udd8jkWjd
-FwBaS/9kbHDrARrQkNnHptZt9hPk/7XJ0h4qy7ElQyZ42TCbTg0evmnv3+r+LbPM
-+bDdtRTKkdSytaX7ARmjR3mfnYyVhzT4HziS2jamEfpr62vp3EV4FTkG101B5CHI
-3C+H0be/SGB1pWLLJN47YaApIKa+xWycxOkKaSLvkTr6Jq/RW0GnOuL4OAdCq8Fb
-+M5tug8EPzI0rNwEKNdwMBQmBsTkm5jVz3g=
------END CERTIFICATE-----
- 3 s:/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN - DATACorp SGC
-   i:/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN - DATACorp SGC
------BEGIN CERTIFICATE-----
-MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB
-kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
-Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
-dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw
-IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG
-EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD
-VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu
-dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN
-BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6
-E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ
-D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK
-4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq
-lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW
-bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB
-o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT
-MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js
-LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr
-BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB
-AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
-Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj
-j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH
-KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv
-2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3
-mfnGV/TJVTl4uix5yaaIK/QI
------END CERTIFICATE-----
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/sortperf.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/sortperf.py
deleted file mode 100644
index f26606e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/sortperf.py
+++ /dev/null
@@ -1,169 +0,0 @@
-"""Sort performance test.
-
-See main() for command line syntax.
-See tabulate() for output format.
-
-"""
-
-import sys
-import time
-import random
-import marshal
-import tempfile
-import os
-
-td = tempfile.gettempdir()
-
-def randfloats(n):
-    """Return a list of n random floats in [0, 1)."""
-    # Generating floats is expensive, so this writes them out to a file in
-    # a temp directory.  If the file already exists, it just reads them
-    # back in and shuffles them a bit.
-    fn = os.path.join(td, "rr%06d" % n)
-    try:
-        fp = open(fn, "rb")
-    except IOError:
-        r = random.random
-        result = [r() for i in xrange(n)]
-        try:
-            try:
-                fp = open(fn, "wb")
-                marshal.dump(result, fp)
-                fp.close()
-                fp = None
-            finally:
-                if fp:
-                    try:
-                        os.unlink(fn)
-                    except os.error:
-                        pass
-        except IOError, msg:
-            print "can't write", fn, ":", msg
-    else:
-        result = marshal.load(fp)
-        fp.close()
-        # Shuffle it a bit...
-        for i in range(10):
-            i = random.randrange(n)
-            temp = result[:i]
-            del result[:i]
-            temp.reverse()
-            result.extend(temp)
-            del temp
-    assert len(result) == n
-    return result
-
-def flush():
-    sys.stdout.flush()
-
-def doit(L):
-    t0 = time.clock()
-    L.sort()
-    t1 = time.clock()
-    print "%6.2f" % (t1-t0),
-    flush()
-
-def tabulate(r):
-    """Tabulate sort speed for lists of various sizes.
-
-    The sizes are 2**i for i in r (the argument, a list).
-
-    The output displays i, 2**i, and the time to sort arrays of 2**i
-    floating point numbers with the following properties:
-
-    *sort: random data
-    \sort: descending data
-    /sort: ascending data
-    3sort: ascending, then 3 random exchanges
-    +sort: ascending, then 10 random at the end
-    %sort: ascending, then randomly replace 1% of the elements w/ random values
-    ~sort: many duplicates
-    =sort: all equal
-    !sort: worst case scenario
-
-    """
-    cases = tuple([ch + "sort" for ch in r"*\/3+%~=!"])
-    fmt = ("%2s %7s" + " %6s"*len(cases))
-    print fmt % (("i", "2**i") + cases)
-    for i in r:
-        n = 1 << i
-        L = randfloats(n)
-        print "%2d %7d" % (i, n),
-        flush()
-        doit(L) # *sort
-        L.reverse()
-        doit(L) # \sort
-        doit(L) # /sort
-
-        # Do 3 random exchanges.
-        for dummy in range(3):
-            i1 = random.randrange(n)
-            i2 = random.randrange(n)
-            L[i1], L[i2] = L[i2], L[i1]
-        doit(L) # 3sort
-
-        # Replace the last 10 with random floats.
-        if n >= 10:
-            L[-10:] = [random.random() for dummy in range(10)]
-        doit(L) # +sort
-
-        # Replace 1% of the elements at random.
-        for dummy in xrange(n // 100):
-            L[random.randrange(n)] = random.random()
-        doit(L) # %sort
-
-        # Arrange for lots of duplicates.
-        if n > 4:
-            del L[4:]
-            L = L * (n // 4)
-            # Force the elements to be distinct objects, else timings can be
-            # artificially low.
-            L = map(lambda x: --x, L)
-        doit(L) # ~sort
-        del L
-
-        # All equal.  Again, force the elements to be distinct objects.
-        L = map(abs, [-0.5] * n)
-        doit(L) # =sort
-        del L
-
-        # This one looks like [3, 2, 1, 0, 0, 1, 2, 3].  It was a bad case
-        # for an older implementation of quicksort, which used the median
-        # of the first, last and middle elements as the pivot.
-        half = n // 2
-        L = range(half - 1, -1, -1)
-        L.extend(range(half))
-        # Force to float, so that the timings are comparable.  This is
-        # significantly faster if we leave tham as ints.
-        L = map(float, L)
-        doit(L) # !sort
-        print
-
-def main():
-    """Main program when invoked as a script.
-
-    One argument: tabulate a single row.
-    Two arguments: tabulate a range (inclusive).
-    Extra arguments are used to seed the random generator.
-
-    """
-    # default range (inclusive)
-    k1 = 15
-    k2 = 20
-    if sys.argv[1:]:
-        # one argument: single point
-        k1 = k2 = int(sys.argv[1])
-        if sys.argv[2:]:
-            # two arguments: specify range
-            k2 = int(sys.argv[2])
-            if sys.argv[3:]:
-                # derive random seed from remaining arguments
-                x = 1
-                for a in sys.argv[3:]:
-                    x = 69069 * x + hash(a)
-                random.seed(x)
-    r = range(k1, k2+1)                 # include the end point
-    tabulate(r)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/ssl_cert.pem b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/ssl_cert.pem
deleted file mode 100644
index 631e893..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/ssl_cert.pem
+++ /dev/null
@@ -1,14 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICLDCCAdYCAQAwDQYJKoZIhvcNAQEEBQAwgaAxCzAJBgNVBAYTAlBUMRMwEQYD
-VQQIEwpRdWVlbnNsYW5kMQ8wDQYDVQQHEwZMaXNib2ExFzAVBgNVBAoTDk5ldXJv
-bmlvLCBMZGEuMRgwFgYDVQQLEw9EZXNlbnZvbHZpbWVudG8xGzAZBgNVBAMTEmJy
-dXR1cy5uZXVyb25pby5wdDEbMBkGCSqGSIb3DQEJARYMc2FtcG9AaWtpLmZpMB4X
-DTk2MDkwNTAzNDI0M1oXDTk2MTAwNTAzNDI0M1owgaAxCzAJBgNVBAYTAlBUMRMw
-EQYDVQQIEwpRdWVlbnNsYW5kMQ8wDQYDVQQHEwZMaXNib2ExFzAVBgNVBAoTDk5l
-dXJvbmlvLCBMZGEuMRgwFgYDVQQLEw9EZXNlbnZvbHZpbWVudG8xGzAZBgNVBAMT
-EmJydXR1cy5uZXVyb25pby5wdDEbMBkGCSqGSIb3DQEJARYMc2FtcG9AaWtpLmZp
-MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAL7+aty3S1iBA/+yxjxv4q1MUTd1kjNw
-L4lYKbpzzlmC5beaQXeQ2RmGMTXU+mDvuqItjVHOK3DvPK7lTcSGftUCAwEAATAN
-BgkqhkiG9w0BAQQFAANBAFqPEKFjk6T6CKTHvaQeEAsX0/8YHPHqH/9AnhSjrwuX
-9EBc0n6bVGhN7XaXd6sJ7dym9sbsWxb+pJdurnkxjx4=
------END CERTIFICATE-----
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/ssl_key.pem b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/ssl_key.pem
deleted file mode 100644
index e62b8b2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/ssl_key.pem
+++ /dev/null
@@ -1,9 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIBPAIBAAJBAL7+aty3S1iBA/+yxjxv4q1MUTd1kjNwL4lYKbpzzlmC5beaQXeQ
-2RmGMTXU+mDvuqItjVHOK3DvPK7lTcSGftUCAwEAAQJBALjkK+jc2+iihI98riEF
-oudmkNziSRTYjnwjx8mCoAjPWviB3c742eO3FG4/soi1jD9A5alihEOXfUzloenr
-8IECIQD3B5+0l+68BA/6d76iUNqAAV8djGTzvxnCxycnxPQydQIhAMXt4trUI3nc
-a+U8YL2HPFA3gmhBsSICbq2OptOCnM7hAiEA6Xi3JIQECob8YwkRj29DU3/4WYD7
-WLPgsQpwo1GuSpECICGsnWH5oaeD9t9jbFoSfhJvv0IZmxdcLpRcpslpeWBBAiEA
-6/5B8J0GHdJq89FHwEG/H2eVVUYu5y/aD6sgcm+0Avg=
------END RSA PRIVATE KEY-----
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/string_tests.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/string_tests.py
deleted file mode 100644
index ad1a913..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/string_tests.py
+++ /dev/null
@@ -1,1333 +0,0 @@
-"""
-Common tests shared by test_str, test_unicode, test_userstring and test_string.
-"""
-
-import unittest, string, sys, struct
-from test import test_support
-from UserList import UserList
-
-class Sequence:
-    def __init__(self, seq='wxyz'): self.seq = seq
-    def __len__(self): return len(self.seq)
-    def __getitem__(self, i): return self.seq[i]
-
-class BadSeq1(Sequence):
-    def __init__(self): self.seq = [7, 'hello', 123L]
-
-class BadSeq2(Sequence):
-    def __init__(self): self.seq = ['a', 'b', 'c']
-    def __len__(self): return 8
-
-class CommonTest(unittest.TestCase):
-    # This testcase contains test that can be used in all
-    # stringlike classes. Currently this is str, unicode
-    # UserString and the string module.
-
-    # The type to be tested
-    # Change in subclasses to change the behaviour of fixtesttype()
-    type2test = None
-
-    # All tests pass their arguments to the testing methods
-    # as str objects. fixtesttype() can be used to propagate
-    # these arguments to the appropriate type
-    def fixtype(self, obj):
-        if isinstance(obj, str):
-            return self.__class__.type2test(obj)
-        elif isinstance(obj, list):
-            return [self.fixtype(x) for x in obj]
-        elif isinstance(obj, tuple):
-            return tuple([self.fixtype(x) for x in obj])
-        elif isinstance(obj, dict):
-            return dict([
-               (self.fixtype(key), self.fixtype(value))
-               for (key, value) in obj.iteritems()
-            ])
-        else:
-            return obj
-
-    # check that object.method(*args) returns result
-    def checkequal(self, result, object, methodname, *args):
-        result = self.fixtype(result)
-        object = self.fixtype(object)
-        args = self.fixtype(args)
-        realresult = getattr(object, methodname)(*args)
-        self.assertEqual(
-            result,
-            realresult
-        )
-        # if the original is returned make sure that
-        # this doesn't happen with subclasses
-        if object == realresult:
-            class subtype(self.__class__.type2test):
-                pass
-            object = subtype(object)
-            realresult = getattr(object, methodname)(*args)
-            self.assertTrue(object is not realresult)
-
-    # check that object.method(*args) raises exc
-    def checkraises(self, exc, object, methodname, *args):
-        object = self.fixtype(object)
-        args = self.fixtype(args)
-        self.assertRaises(
-            exc,
-            getattr(object, methodname),
-            *args
-        )
-
-    # call object.method(*args) without any checks
-    def checkcall(self, object, methodname, *args):
-        object = self.fixtype(object)
-        args = self.fixtype(args)
-        getattr(object, methodname)(*args)
-
-    def test_hash(self):
-        # SF bug 1054139:  += optimization was not invalidating cached hash value
-        a = self.type2test('DNSSEC')
-        b = self.type2test('')
-        for c in a:
-            b += c
-            hash(b)
-        self.assertEqual(hash(a), hash(b))
-
-    def test_capitalize(self):
-        self.checkequal(' hello ', ' hello ', 'capitalize')
-        self.checkequal('Hello ', 'Hello ','capitalize')
-        self.checkequal('Hello ', 'hello ','capitalize')
-        self.checkequal('Aaaa', 'aaaa', 'capitalize')
-        self.checkequal('Aaaa', 'AaAa', 'capitalize')
-
-        self.checkraises(TypeError, 'hello', 'capitalize', 42)
-
-    def test_count(self):
-        self.checkequal(3, 'aaa', 'count', 'a')
-        self.checkequal(0, 'aaa', 'count', 'b')
-        self.checkequal(3, 'aaa', 'count', 'a')
-        self.checkequal(0, 'aaa', 'count', 'b')
-        self.checkequal(3, 'aaa', 'count', 'a')
-        self.checkequal(0, 'aaa', 'count', 'b')
-        self.checkequal(0, 'aaa', 'count', 'b')
-        self.checkequal(2, 'aaa', 'count', 'a', 1)
-        self.checkequal(0, 'aaa', 'count', 'a', 10)
-        self.checkequal(1, 'aaa', 'count', 'a', -1)
-        self.checkequal(3, 'aaa', 'count', 'a', -10)
-        self.checkequal(1, 'aaa', 'count', 'a', 0, 1)
-        self.checkequal(3, 'aaa', 'count', 'a', 0, 10)
-        self.checkequal(2, 'aaa', 'count', 'a', 0, -1)
-        self.checkequal(0, 'aaa', 'count', 'a', 0, -10)
-        self.checkequal(3, 'aaa', 'count', '', 1)
-        self.checkequal(1, 'aaa', 'count', '', 3)
-        self.checkequal(0, 'aaa', 'count', '', 10)
-        self.checkequal(2, 'aaa', 'count', '', -1)
-        self.checkequal(4, 'aaa', 'count', '', -10)
-
-        self.checkequal(1, '', 'count', '')
-        self.checkequal(0, '', 'count', '', 1, 1)
-        self.checkequal(0, '', 'count', '', sys.maxint, 0)
-
-        self.checkequal(0, '', 'count', 'xx')
-        self.checkequal(0, '', 'count', 'xx', 1, 1)
-        self.checkequal(0, '', 'count', 'xx', sys.maxint, 0)
-
-        self.checkraises(TypeError, 'hello', 'count')
-        self.checkraises(TypeError, 'hello', 'count', 42)
-
-        # For a variety of combinations,
-        #    verify that str.count() matches an equivalent function
-        #    replacing all occurrences and then differencing the string lengths
-        charset = ['', 'a', 'b']
-        digits = 7
-        base = len(charset)
-        teststrings = set()
-        for i in xrange(base ** digits):
-            entry = []
-            for j in xrange(digits):
-                i, m = divmod(i, base)
-                entry.append(charset[m])
-            teststrings.add(''.join(entry))
-        teststrings = list(teststrings)
-        for i in teststrings:
-            i = self.fixtype(i)
-            n = len(i)
-            for j in teststrings:
-                r1 = i.count(j)
-                if j:
-                    r2, rem = divmod(n - len(i.replace(j, '')), len(j))
-                else:
-                    r2, rem = len(i)+1, 0
-                if rem or r1 != r2:
-                    self.assertEqual(rem, 0, '%s != 0 for %s' % (rem, i))
-                    self.assertEqual(r1, r2, '%s != %s for %s' % (r1, r2, i))
-
-    def test_find(self):
-        self.checkequal(0, 'abcdefghiabc', 'find', 'abc')
-        self.checkequal(9, 'abcdefghiabc', 'find', 'abc', 1)
-        self.checkequal(-1, 'abcdefghiabc', 'find', 'def', 4)
-
-        self.checkequal(0, 'abc', 'find', '', 0)
-        self.checkequal(3, 'abc', 'find', '', 3)
-        self.checkequal(-1, 'abc', 'find', '', 4)
-
-        # to check the ability to pass None as defaults
-        self.checkequal( 2, 'rrarrrrrrrrra', 'find', 'a')
-        self.checkequal(12, 'rrarrrrrrrrra', 'find', 'a', 4)
-        self.checkequal(-1, 'rrarrrrrrrrra', 'find', 'a', 4, 6)
-        self.checkequal(12, 'rrarrrrrrrrra', 'find', 'a', 4, None)
-        self.checkequal( 2, 'rrarrrrrrrrra', 'find', 'a', None, 6)
-
-        self.checkraises(TypeError, 'hello', 'find')
-        self.checkraises(TypeError, 'hello', 'find', 42)
-
-        self.checkequal(0, '', 'find', '')
-        self.checkequal(-1, '', 'find', '', 1, 1)
-        self.checkequal(-1, '', 'find', '', sys.maxint, 0)
-
-        self.checkequal(-1, '', 'find', 'xx')
-        self.checkequal(-1, '', 'find', 'xx', 1, 1)
-        self.checkequal(-1, '', 'find', 'xx', sys.maxint, 0)
-
-        # issue 7458
-        self.checkequal(-1, 'ab', 'find', 'xxx', sys.maxsize + 1, 0)
-
-        # For a variety of combinations,
-        #    verify that str.find() matches __contains__
-        #    and that the found substring is really at that location
-        charset = ['', 'a', 'b', 'c']
-        digits = 5
-        base = len(charset)
-        teststrings = set()
-        for i in xrange(base ** digits):
-            entry = []
-            for j in xrange(digits):
-                i, m = divmod(i, base)
-                entry.append(charset[m])
-            teststrings.add(''.join(entry))
-        teststrings = list(teststrings)
-        for i in teststrings:
-            i = self.fixtype(i)
-            for j in teststrings:
-                loc = i.find(j)
-                r1 = (loc != -1)
-                r2 = j in i
-                self.assertEqual(r1, r2)
-                if loc != -1:
-                    self.assertEqual(i[loc:loc+len(j)], j)
-
-    def test_rfind(self):
-        self.checkequal(9,  'abcdefghiabc', 'rfind', 'abc')
-        self.checkequal(12, 'abcdefghiabc', 'rfind', '')
-        self.checkequal(0, 'abcdefghiabc', 'rfind', 'abcd')
-        self.checkequal(-1, 'abcdefghiabc', 'rfind', 'abcz')
-
-        self.checkequal(3, 'abc', 'rfind', '', 0)
-        self.checkequal(3, 'abc', 'rfind', '', 3)
-        self.checkequal(-1, 'abc', 'rfind', '', 4)
-
-        # to check the ability to pass None as defaults
-        self.checkequal(12, 'rrarrrrrrrrra', 'rfind', 'a')
-        self.checkequal(12, 'rrarrrrrrrrra', 'rfind', 'a', 4)
-        self.checkequal(-1, 'rrarrrrrrrrra', 'rfind', 'a', 4, 6)
-        self.checkequal(12, 'rrarrrrrrrrra', 'rfind', 'a', 4, None)
-        self.checkequal( 2, 'rrarrrrrrrrra', 'rfind', 'a', None, 6)
-
-        self.checkraises(TypeError, 'hello', 'rfind')
-        self.checkraises(TypeError, 'hello', 'rfind', 42)
-
-        # For a variety of combinations,
-        #    verify that str.rfind() matches __contains__
-        #    and that the found substring is really at that location
-        charset = ['', 'a', 'b', 'c']
-        digits = 5
-        base = len(charset)
-        teststrings = set()
-        for i in xrange(base ** digits):
-            entry = []
-            for j in xrange(digits):
-                i, m = divmod(i, base)
-                entry.append(charset[m])
-            teststrings.add(''.join(entry))
-        teststrings = list(teststrings)
-        for i in teststrings:
-            i = self.fixtype(i)
-            for j in teststrings:
-                loc = i.rfind(j)
-                r1 = (loc != -1)
-                r2 = j in i
-                self.assertEqual(r1, r2)
-                if loc != -1:
-                    self.assertEqual(i[loc:loc+len(j)], self.fixtype(j))
-
-        # issue 7458
-        self.checkequal(-1, 'ab', 'rfind', 'xxx', sys.maxsize + 1, 0)
-
-    def test_index(self):
-        self.checkequal(0, 'abcdefghiabc', 'index', '')
-        self.checkequal(3, 'abcdefghiabc', 'index', 'def')
-        self.checkequal(0, 'abcdefghiabc', 'index', 'abc')
-        self.checkequal(9, 'abcdefghiabc', 'index', 'abc', 1)
-
-        self.checkraises(ValueError, 'abcdefghiabc', 'index', 'hib')
-        self.checkraises(ValueError, 'abcdefghiab', 'index', 'abc', 1)
-        self.checkraises(ValueError, 'abcdefghi', 'index', 'ghi', 8)
-        self.checkraises(ValueError, 'abcdefghi', 'index', 'ghi', -1)
-
-        # to check the ability to pass None as defaults
-        self.checkequal( 2, 'rrarrrrrrrrra', 'index', 'a')
-        self.checkequal(12, 'rrarrrrrrrrra', 'index', 'a', 4)
-        self.checkraises(ValueError, 'rrarrrrrrrrra', 'index', 'a', 4, 6)
-        self.checkequal(12, 'rrarrrrrrrrra', 'index', 'a', 4, None)
-        self.checkequal( 2, 'rrarrrrrrrrra', 'index', 'a', None, 6)
-
-        self.checkraises(TypeError, 'hello', 'index')
-        self.checkraises(TypeError, 'hello', 'index', 42)
-
-    def test_rindex(self):
-        self.checkequal(12, 'abcdefghiabc', 'rindex', '')
-        self.checkequal(3,  'abcdefghiabc', 'rindex', 'def')
-        self.checkequal(9,  'abcdefghiabc', 'rindex', 'abc')
-        self.checkequal(0,  'abcdefghiabc', 'rindex', 'abc', 0, -1)
-
-        self.checkraises(ValueError, 'abcdefghiabc', 'rindex', 'hib')
-        self.checkraises(ValueError, 'defghiabc', 'rindex', 'def', 1)
-        self.checkraises(ValueError, 'defghiabc', 'rindex', 'abc', 0, -1)
-        self.checkraises(ValueError, 'abcdefghi', 'rindex', 'ghi', 0, 8)
-        self.checkraises(ValueError, 'abcdefghi', 'rindex', 'ghi', 0, -1)
-
-        # to check the ability to pass None as defaults
-        self.checkequal(12, 'rrarrrrrrrrra', 'rindex', 'a')
-        self.checkequal(12, 'rrarrrrrrrrra', 'rindex', 'a', 4)
-        self.checkraises(ValueError, 'rrarrrrrrrrra', 'rindex', 'a', 4, 6)
-        self.checkequal(12, 'rrarrrrrrrrra', 'rindex', 'a', 4, None)
-        self.checkequal( 2, 'rrarrrrrrrrra', 'rindex', 'a', None, 6)
-
-        self.checkraises(TypeError, 'hello', 'rindex')
-        self.checkraises(TypeError, 'hello', 'rindex', 42)
-
-    def test_lower(self):
-        self.checkequal('hello', 'HeLLo', 'lower')
-        self.checkequal('hello', 'hello', 'lower')
-        self.checkraises(TypeError, 'hello', 'lower', 42)
-
-    def test_upper(self):
-        self.checkequal('HELLO', 'HeLLo', 'upper')
-        self.checkequal('HELLO', 'HELLO', 'upper')
-        self.checkraises(TypeError, 'hello', 'upper', 42)
-
-    def test_expandtabs(self):
-        self.checkequal('abc\rab      def\ng       hi', 'abc\rab\tdef\ng\thi', 'expandtabs')
-        self.checkequal('abc\rab      def\ng       hi', 'abc\rab\tdef\ng\thi', 'expandtabs', 8)
-        self.checkequal('abc\rab  def\ng   hi', 'abc\rab\tdef\ng\thi', 'expandtabs', 4)
-        self.checkequal('abc\r\nab  def\ng   hi', 'abc\r\nab\tdef\ng\thi', 'expandtabs', 4)
-        self.checkequal('abc\rab      def\ng       hi', 'abc\rab\tdef\ng\thi', 'expandtabs')
-        self.checkequal('abc\rab      def\ng       hi', 'abc\rab\tdef\ng\thi', 'expandtabs', 8)
-        self.checkequal('abc\r\nab\r\ndef\ng\r\nhi', 'abc\r\nab\r\ndef\ng\r\nhi', 'expandtabs', 4)
-        self.checkequal('  a\n b', ' \ta\n\tb', 'expandtabs', 1)
-
-        self.checkraises(TypeError, 'hello', 'expandtabs', 42, 42)
-        # This test is only valid when sizeof(int) == sizeof(void*) == 4.
-        if sys.maxint < (1 << 32) and struct.calcsize('P') == 4:
-            self.checkraises(OverflowError,
-                             '\ta\n\tb', 'expandtabs', sys.maxint)
-
-    def test_split(self):
-        self.checkequal(['this', 'is', 'the', 'split', 'function'],
-            'this is the split function', 'split')
-
-        # by whitespace
-        self.checkequal(['a', 'b', 'c', 'd'], 'a b c d ', 'split')
-        self.checkequal(['a', 'b c d'], 'a b c d', 'split', None, 1)
-        self.checkequal(['a', 'b', 'c d'], 'a b c d', 'split', None, 2)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a b c d', 'split', None, 3)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a b c d', 'split', None, 4)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a b c d', 'split', None,
-                        sys.maxint-1)
-        self.checkequal(['a b c d'], 'a b c d', 'split', None, 0)
-        self.checkequal(['a b c d'], '  a b c d', 'split', None, 0)
-        self.checkequal(['a', 'b', 'c  d'], 'a  b  c  d', 'split', None, 2)
-
-        self.checkequal([], '         ', 'split')
-        self.checkequal(['a'], '  a    ', 'split')
-        self.checkequal(['a', 'b'], '  a    b   ', 'split')
-        self.checkequal(['a', 'b   '], '  a    b   ', 'split', None, 1)
-        self.checkequal(['a', 'b   c   '], '  a    b   c   ', 'split', None, 1)
-        self.checkequal(['a', 'b', 'c   '], '  a    b   c   ', 'split', None, 2)
-        self.checkequal(['a', 'b'], '\n\ta \t\r b \v ', 'split')
-        aaa = ' a '*20
-        self.checkequal(['a']*20, aaa, 'split')
-        self.checkequal(['a'] + [aaa[4:]], aaa, 'split', None, 1)
-        self.checkequal(['a']*19 + ['a '], aaa, 'split', None, 19)
-
-        # by a char
-        self.checkequal(['a', 'b', 'c', 'd'], 'a|b|c|d', 'split', '|')
-        self.checkequal(['a|b|c|d'], 'a|b|c|d', 'split', '|', 0)
-        self.checkequal(['a', 'b|c|d'], 'a|b|c|d', 'split', '|', 1)
-        self.checkequal(['a', 'b', 'c|d'], 'a|b|c|d', 'split', '|', 2)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a|b|c|d', 'split', '|', 3)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a|b|c|d', 'split', '|', 4)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a|b|c|d', 'split', '|',
-                        sys.maxint-2)
-        self.checkequal(['a|b|c|d'], 'a|b|c|d', 'split', '|', 0)
-        self.checkequal(['a', '', 'b||c||d'], 'a||b||c||d', 'split', '|', 2)
-        self.checkequal(['endcase ', ''], 'endcase |', 'split', '|')
-        self.checkequal(['', ' startcase'], '| startcase', 'split', '|')
-        self.checkequal(['', 'bothcase', ''], '|bothcase|', 'split', '|')
-        self.checkequal(['a', '', 'b\x00c\x00d'], 'a\x00\x00b\x00c\x00d', 'split', '\x00', 2)
-
-        self.checkequal(['a']*20, ('a|'*20)[:-1], 'split', '|')
-        self.checkequal(['a']*15 +['a|a|a|a|a'],
-                                   ('a|'*20)[:-1], 'split', '|', 15)
-
-        # by string
-        self.checkequal(['a', 'b', 'c', 'd'], 'a//b//c//d', 'split', '//')
-        self.checkequal(['a', 'b//c//d'], 'a//b//c//d', 'split', '//', 1)
-        self.checkequal(['a', 'b', 'c//d'], 'a//b//c//d', 'split', '//', 2)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a//b//c//d', 'split', '//', 3)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a//b//c//d', 'split', '//', 4)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a//b//c//d', 'split', '//',
-                        sys.maxint-10)
-        self.checkequal(['a//b//c//d'], 'a//b//c//d', 'split', '//', 0)
-        self.checkequal(['a', '', 'b////c////d'], 'a////b////c////d', 'split', '//', 2)
-        self.checkequal(['endcase ', ''], 'endcase test', 'split', 'test')
-        self.checkequal(['', ' begincase'], 'test begincase', 'split', 'test')
-        self.checkequal(['', ' bothcase ', ''], 'test bothcase test',
-                        'split', 'test')
-        self.checkequal(['a', 'bc'], 'abbbc', 'split', 'bb')
-        self.checkequal(['', ''], 'aaa', 'split', 'aaa')
-        self.checkequal(['aaa'], 'aaa', 'split', 'aaa', 0)
-        self.checkequal(['ab', 'ab'], 'abbaab', 'split', 'ba')
-        self.checkequal(['aaaa'], 'aaaa', 'split', 'aab')
-        self.checkequal([''], '', 'split', 'aaa')
-        self.checkequal(['aa'], 'aa', 'split', 'aaa')
-        self.checkequal(['A', 'bobb'], 'Abbobbbobb', 'split', 'bbobb')
-        self.checkequal(['A', 'B', ''], 'AbbobbBbbobb', 'split', 'bbobb')
-
-        self.checkequal(['a']*20, ('aBLAH'*20)[:-4], 'split', 'BLAH')
-        self.checkequal(['a']*20, ('aBLAH'*20)[:-4], 'split', 'BLAH', 19)
-        self.checkequal(['a']*18 + ['aBLAHa'], ('aBLAH'*20)[:-4],
-                        'split', 'BLAH', 18)
-
-        # mixed use of str and unicode
-        self.checkequal([u'a', u'b', u'c d'], 'a b c d', 'split', u' ', 2)
-
-        # argument type
-        self.checkraises(TypeError, 'hello', 'split', 42, 42, 42)
-
-        # null case
-        self.checkraises(ValueError, 'hello', 'split', '')
-        self.checkraises(ValueError, 'hello', 'split', '', 0)
-
-    def test_rsplit(self):
-        self.checkequal(['this', 'is', 'the', 'rsplit', 'function'],
-                         'this is the rsplit function', 'rsplit')
-
-        # by whitespace
-        self.checkequal(['a', 'b', 'c', 'd'], 'a b c d ', 'rsplit')
-        self.checkequal(['a b c', 'd'], 'a b c d', 'rsplit', None, 1)
-        self.checkequal(['a b', 'c', 'd'], 'a b c d', 'rsplit', None, 2)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a b c d', 'rsplit', None, 3)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a b c d', 'rsplit', None, 4)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a b c d', 'rsplit', None,
-                        sys.maxint-20)
-        self.checkequal(['a b c d'], 'a b c d', 'rsplit', None, 0)
-        self.checkequal(['a b c d'], 'a b c d  ', 'rsplit', None, 0)
-        self.checkequal(['a  b', 'c', 'd'], 'a  b  c  d', 'rsplit', None, 2)
-
-        self.checkequal([], '         ', 'rsplit')
-        self.checkequal(['a'], '  a    ', 'rsplit')
-        self.checkequal(['a', 'b'], '  a    b   ', 'rsplit')
-        self.checkequal(['  a', 'b'], '  a    b   ', 'rsplit', None, 1)
-        self.checkequal(['  a    b','c'], '  a    b   c   ', 'rsplit',
-                        None, 1)
-        self.checkequal(['  a', 'b', 'c'], '  a    b   c   ', 'rsplit',
-                        None, 2)
-        self.checkequal(['a', 'b'], '\n\ta \t\r b \v ', 'rsplit', None, 88)
-        aaa = ' a '*20
-        self.checkequal(['a']*20, aaa, 'rsplit')
-        self.checkequal([aaa[:-4]] + ['a'], aaa, 'rsplit', None, 1)
-        self.checkequal([' a  a'] + ['a']*18, aaa, 'rsplit', None, 18)
-
-
-        # by a char
-        self.checkequal(['a', 'b', 'c', 'd'], 'a|b|c|d', 'rsplit', '|')
-        self.checkequal(['a|b|c', 'd'], 'a|b|c|d', 'rsplit', '|', 1)
-        self.checkequal(['a|b', 'c', 'd'], 'a|b|c|d', 'rsplit', '|', 2)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a|b|c|d', 'rsplit', '|', 3)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a|b|c|d', 'rsplit', '|', 4)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a|b|c|d', 'rsplit', '|',
-                        sys.maxint-100)
-        self.checkequal(['a|b|c|d'], 'a|b|c|d', 'rsplit', '|', 0)
-        self.checkequal(['a||b||c', '', 'd'], 'a||b||c||d', 'rsplit', '|', 2)
-        self.checkequal(['', ' begincase'], '| begincase', 'rsplit', '|')
-        self.checkequal(['endcase ', ''], 'endcase |', 'rsplit', '|')
-        self.checkequal(['', 'bothcase', ''], '|bothcase|', 'rsplit', '|')
-
-        self.checkequal(['a\x00\x00b', 'c', 'd'], 'a\x00\x00b\x00c\x00d', 'rsplit', '\x00', 2)
-
-        self.checkequal(['a']*20, ('a|'*20)[:-1], 'rsplit', '|')
-        self.checkequal(['a|a|a|a|a']+['a']*15,
-                        ('a|'*20)[:-1], 'rsplit', '|', 15)
-
-        # by string
-        self.checkequal(['a', 'b', 'c', 'd'], 'a//b//c//d', 'rsplit', '//')
-        self.checkequal(['a//b//c', 'd'], 'a//b//c//d', 'rsplit', '//', 1)
-        self.checkequal(['a//b', 'c', 'd'], 'a//b//c//d', 'rsplit', '//', 2)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a//b//c//d', 'rsplit', '//', 3)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a//b//c//d', 'rsplit', '//', 4)
-        self.checkequal(['a', 'b', 'c', 'd'], 'a//b//c//d', 'rsplit', '//',
-                        sys.maxint-5)
-        self.checkequal(['a//b//c//d'], 'a//b//c//d', 'rsplit', '//', 0)
-        self.checkequal(['a////b////c', '', 'd'], 'a////b////c////d', 'rsplit', '//', 2)
-        self.checkequal(['', ' begincase'], 'test begincase', 'rsplit', 'test')
-        self.checkequal(['endcase ', ''], 'endcase test', 'rsplit', 'test')
-        self.checkequal(['', ' bothcase ', ''], 'test bothcase test',
-                        'rsplit', 'test')
-        self.checkequal(['ab', 'c'], 'abbbc', 'rsplit', 'bb')
-        self.checkequal(['', ''], 'aaa', 'rsplit', 'aaa')
-        self.checkequal(['aaa'], 'aaa', 'rsplit', 'aaa', 0)
-        self.checkequal(['ab', 'ab'], 'abbaab', 'rsplit', 'ba')
-        self.checkequal(['aaaa'], 'aaaa', 'rsplit', 'aab')
-        self.checkequal([''], '', 'rsplit', 'aaa')
-        self.checkequal(['aa'], 'aa', 'rsplit', 'aaa')
-        self.checkequal(['bbob', 'A'], 'bbobbbobbA', 'rsplit', 'bbobb')
-        self.checkequal(['', 'B', 'A'], 'bbobbBbbobbA', 'rsplit', 'bbobb')
-
-        self.checkequal(['a']*20, ('aBLAH'*20)[:-4], 'rsplit', 'BLAH')
-        self.checkequal(['a']*20, ('aBLAH'*20)[:-4], 'rsplit', 'BLAH', 19)
-        self.checkequal(['aBLAHa'] + ['a']*18, ('aBLAH'*20)[:-4],
-                        'rsplit', 'BLAH', 18)
-
-        # mixed use of str and unicode
-        self.checkequal([u'a b', u'c', u'd'], 'a b c d', 'rsplit', u' ', 2)
-
-        # argument type
-        self.checkraises(TypeError, 'hello', 'rsplit', 42, 42, 42)
-
-        # null case
-        self.checkraises(ValueError, 'hello', 'rsplit', '')
-        self.checkraises(ValueError, 'hello', 'rsplit', '', 0)
-
-    def test_strip(self):
-        self.checkequal('hello', '   hello   ', 'strip')
-        self.checkequal('hello   ', '   hello   ', 'lstrip')
-        self.checkequal('   hello', '   hello   ', 'rstrip')
-        self.checkequal('hello', 'hello', 'strip')
-
-        # strip/lstrip/rstrip with None arg
-        self.checkequal('hello', '   hello   ', 'strip', None)
-        self.checkequal('hello   ', '   hello   ', 'lstrip', None)
-        self.checkequal('   hello', '   hello   ', 'rstrip', None)
-        self.checkequal('hello', 'hello', 'strip', None)
-
-        # strip/lstrip/rstrip with str arg
-        self.checkequal('hello', 'xyzzyhelloxyzzy', 'strip', 'xyz')
-        self.checkequal('helloxyzzy', 'xyzzyhelloxyzzy', 'lstrip', 'xyz')
-        self.checkequal('xyzzyhello', 'xyzzyhelloxyzzy', 'rstrip', 'xyz')
-        self.checkequal('hello', 'hello', 'strip', 'xyz')
-
-        # strip/lstrip/rstrip with unicode arg
-        if test_support.have_unicode:
-            self.checkequal(unicode('hello', 'ascii'), 'xyzzyhelloxyzzy',
-                 'strip', unicode('xyz', 'ascii'))
-            self.checkequal(unicode('helloxyzzy', 'ascii'), 'xyzzyhelloxyzzy',
-                 'lstrip', unicode('xyz', 'ascii'))
-            self.checkequal(unicode('xyzzyhello', 'ascii'), 'xyzzyhelloxyzzy',
-                 'rstrip', unicode('xyz', 'ascii'))
-            # XXX
-            #self.checkequal(unicode('hello', 'ascii'), 'hello',
-            #     'strip', unicode('xyz', 'ascii'))
-
-        self.checkraises(TypeError, 'hello', 'strip', 42, 42)
-        self.checkraises(TypeError, 'hello', 'lstrip', 42, 42)
-        self.checkraises(TypeError, 'hello', 'rstrip', 42, 42)
-
-    def test_ljust(self):
-        self.checkequal('abc       ', 'abc', 'ljust', 10)
-        self.checkequal('abc   ', 'abc', 'ljust', 6)
-        self.checkequal('abc', 'abc', 'ljust', 3)
-        self.checkequal('abc', 'abc', 'ljust', 2)
-        self.checkequal('abc*******', 'abc', 'ljust', 10, '*')
-        self.checkraises(TypeError, 'abc', 'ljust')
-
-    def test_rjust(self):
-        self.checkequal('       abc', 'abc', 'rjust', 10)
-        self.checkequal('   abc', 'abc', 'rjust', 6)
-        self.checkequal('abc', 'abc', 'rjust', 3)
-        self.checkequal('abc', 'abc', 'rjust', 2)
-        self.checkequal('*******abc', 'abc', 'rjust', 10, '*')
-        self.checkraises(TypeError, 'abc', 'rjust')
-
-    def test_center(self):
-        self.checkequal('   abc    ', 'abc', 'center', 10)
-        self.checkequal(' abc  ', 'abc', 'center', 6)
-        self.checkequal('abc', 'abc', 'center', 3)
-        self.checkequal('abc', 'abc', 'center', 2)
-        self.checkequal('***abc****', 'abc', 'center', 10, '*')
-        self.checkraises(TypeError, 'abc', 'center')
-
-    def test_swapcase(self):
-        self.checkequal('hEllO CoMPuTErS', 'HeLLo cOmpUteRs', 'swapcase')
-
-        self.checkraises(TypeError, 'hello', 'swapcase', 42)
-
-    def test_replace(self):
-        EQ = self.checkequal
-
-        # Operations on the empty string
-        EQ("", "", "replace", "", "")
-        EQ("A", "", "replace", "", "A")
-        EQ("", "", "replace", "A", "")
-        EQ("", "", "replace", "A", "A")
-        EQ("", "", "replace", "", "", 100)
-        EQ("", "", "replace", "", "", sys.maxint)
-
-        # interleave (from=="", 'to' gets inserted everywhere)
-        EQ("A", "A", "replace", "", "")
-        EQ("*A*", "A", "replace", "", "*")
-        EQ("*1A*1", "A", "replace", "", "*1")
-        EQ("*-#A*-#", "A", "replace", "", "*-#")
-        EQ("*-A*-A*-", "AA", "replace", "", "*-")
-        EQ("*-A*-A*-", "AA", "replace", "", "*-", -1)
-        EQ("*-A*-A*-", "AA", "replace", "", "*-", sys.maxint)
-        EQ("*-A*-A*-", "AA", "replace", "", "*-", 4)
-        EQ("*-A*-A*-", "AA", "replace", "", "*-", 3)
-        EQ("*-A*-A", "AA", "replace", "", "*-", 2)
-        EQ("*-AA", "AA", "replace", "", "*-", 1)
-        EQ("AA", "AA", "replace", "", "*-", 0)
-
-        # single character deletion (from=="A", to=="")
-        EQ("", "A", "replace", "A", "")
-        EQ("", "AAA", "replace", "A", "")
-        EQ("", "AAA", "replace", "A", "", -1)
-        EQ("", "AAA", "replace", "A", "", sys.maxint)
-        EQ("", "AAA", "replace", "A", "", 4)
-        EQ("", "AAA", "replace", "A", "", 3)
-        EQ("A", "AAA", "replace", "A", "", 2)
-        EQ("AA", "AAA", "replace", "A", "", 1)
-        EQ("AAA", "AAA", "replace", "A", "", 0)
-        EQ("", "AAAAAAAAAA", "replace", "A", "")
-        EQ("BCD", "ABACADA", "replace", "A", "")
-        EQ("BCD", "ABACADA", "replace", "A", "", -1)
-        EQ("BCD", "ABACADA", "replace", "A", "", sys.maxint)
-        EQ("BCD", "ABACADA", "replace", "A", "", 5)
-        EQ("BCD", "ABACADA", "replace", "A", "", 4)
-        EQ("BCDA", "ABACADA", "replace", "A", "", 3)
-        EQ("BCADA", "ABACADA", "replace", "A", "", 2)
-        EQ("BACADA", "ABACADA", "replace", "A", "", 1)
-        EQ("ABACADA", "ABACADA", "replace", "A", "", 0)
-        EQ("BCD", "ABCAD", "replace", "A", "")
-        EQ("BCD", "ABCADAA", "replace", "A", "")
-        EQ("BCD", "BCD", "replace", "A", "")
-        EQ("*************", "*************", "replace", "A", "")
-        EQ("^A^", "^"+"A"*1000+"^", "replace", "A", "", 999)
-
-        # substring deletion (from=="the", to=="")
-        EQ("", "the", "replace", "the", "")
-        EQ("ater", "theater", "replace", "the", "")
-        EQ("", "thethe", "replace", "the", "")
-        EQ("", "thethethethe", "replace", "the", "")
-        EQ("aaaa", "theatheatheathea", "replace", "the", "")
-        EQ("that", "that", "replace", "the", "")
-        EQ("thaet", "thaet", "replace", "the", "")
-        EQ("here and re", "here and there", "replace", "the", "")
-        EQ("here and re and re", "here and there and there",
-           "replace", "the", "", sys.maxint)
-        EQ("here and re and re", "here and there and there",
-           "replace", "the", "", -1)
-        EQ("here and re and re", "here and there and there",
-           "replace", "the", "", 3)
-        EQ("here and re and re", "here and there and there",
-           "replace", "the", "", 2)
-        EQ("here and re and there", "here and there and there",
-           "replace", "the", "", 1)
-        EQ("here and there and there", "here and there and there",
-           "replace", "the", "", 0)
-        EQ("here and re and re", "here and there and there", "replace", "the", "")
-
-        EQ("abc", "abc", "replace", "the", "")
-        EQ("abcdefg", "abcdefg", "replace", "the", "")
-
-        # substring deletion (from=="bob", to=="")
-        EQ("bob", "bbobob", "replace", "bob", "")
-        EQ("bobXbob", "bbobobXbbobob", "replace", "bob", "")
-        EQ("aaaaaaa", "aaaaaaabob", "replace", "bob", "")
-        EQ("aaaaaaa", "aaaaaaa", "replace", "bob", "")
-
-        # single character replace in place (len(from)==len(to)==1)
-        EQ("Who goes there?", "Who goes there?", "replace", "o", "o")
-        EQ("WhO gOes there?", "Who goes there?", "replace", "o", "O")
-        EQ("WhO gOes there?", "Who goes there?", "replace", "o", "O", sys.maxint)
-        EQ("WhO gOes there?", "Who goes there?", "replace", "o", "O", -1)
-        EQ("WhO gOes there?", "Who goes there?", "replace", "o", "O", 3)
-        EQ("WhO gOes there?", "Who goes there?", "replace", "o", "O", 2)
-        EQ("WhO goes there?", "Who goes there?", "replace", "o", "O", 1)
-        EQ("Who goes there?", "Who goes there?", "replace", "o", "O", 0)
-
-        EQ("Who goes there?", "Who goes there?", "replace", "a", "q")
-        EQ("who goes there?", "Who goes there?", "replace", "W", "w")
-        EQ("wwho goes there?ww", "WWho goes there?WW", "replace", "W", "w")
-        EQ("Who goes there!", "Who goes there?", "replace", "?", "!")
-        EQ("Who goes there!!", "Who goes there??", "replace", "?", "!")
-
-        EQ("Who goes there?", "Who goes there?", "replace", ".", "!")
-
-        # substring replace in place (len(from)==len(to) > 1)
-        EQ("Th** ** a t**sue", "This is a tissue", "replace", "is", "**")
-        EQ("Th** ** a t**sue", "This is a tissue", "replace", "is", "**", sys.maxint)
-        EQ("Th** ** a t**sue", "This is a tissue", "replace", "is", "**", -1)
-        EQ("Th** ** a t**sue", "This is a tissue", "replace", "is", "**", 4)
-        EQ("Th** ** a t**sue", "This is a tissue", "replace", "is", "**", 3)
-        EQ("Th** ** a tissue", "This is a tissue", "replace", "is", "**", 2)
-        EQ("Th** is a tissue", "This is a tissue", "replace", "is", "**", 1)
-        EQ("This is a tissue", "This is a tissue", "replace", "is", "**", 0)
-        EQ("cobob", "bobob", "replace", "bob", "cob")
-        EQ("cobobXcobocob", "bobobXbobobob", "replace", "bob", "cob")
-        EQ("bobob", "bobob", "replace", "bot", "bot")
-
-        # replace single character (len(from)==1, len(to)>1)
-        EQ("ReyKKjaviKK", "Reykjavik", "replace", "k", "KK")
-        EQ("ReyKKjaviKK", "Reykjavik", "replace", "k", "KK", -1)
-        EQ("ReyKKjaviKK", "Reykjavik", "replace", "k", "KK", sys.maxint)
-        EQ("ReyKKjaviKK", "Reykjavik", "replace", "k", "KK", 2)
-        EQ("ReyKKjavik", "Reykjavik", "replace", "k", "KK", 1)
-        EQ("Reykjavik", "Reykjavik", "replace", "k", "KK", 0)
-        EQ("A----B----C----", "A.B.C.", "replace", ".", "----")
-
-        EQ("Reykjavik", "Reykjavik", "replace", "q", "KK")
-
-        # replace substring (len(from)>1, len(to)!=len(from))
-        EQ("ham, ham, eggs and ham", "spam, spam, eggs and spam",
-           "replace", "spam", "ham")
-        EQ("ham, ham, eggs and ham", "spam, spam, eggs and spam",
-           "replace", "spam", "ham", sys.maxint)
-        EQ("ham, ham, eggs and ham", "spam, spam, eggs and spam",
-           "replace", "spam", "ham", -1)
-        EQ("ham, ham, eggs and ham", "spam, spam, eggs and spam",
-           "replace", "spam", "ham", 4)
-        EQ("ham, ham, eggs and ham", "spam, spam, eggs and spam",
-           "replace", "spam", "ham", 3)
-        EQ("ham, ham, eggs and spam", "spam, spam, eggs and spam",
-           "replace", "spam", "ham", 2)
-        EQ("ham, spam, eggs and spam", "spam, spam, eggs and spam",
-           "replace", "spam", "ham", 1)
-        EQ("spam, spam, eggs and spam", "spam, spam, eggs and spam",
-           "replace", "spam", "ham", 0)
-
-        EQ("bobob", "bobobob", "replace", "bobob", "bob")
-        EQ("bobobXbobob", "bobobobXbobobob", "replace", "bobob", "bob")
-        EQ("BOBOBOB", "BOBOBOB", "replace", "bob", "bobby")
-
-        with test_support.check_py3k_warnings():
-            ba = buffer('a')
-            bb = buffer('b')
-        EQ("bbc", "abc", "replace", ba, bb)
-        EQ("aac", "abc", "replace", bb, ba)
-
-        #
-        self.checkequal('one@two!three!', 'one!two!three!', 'replace', '!', '@', 1)
-        self.checkequal('onetwothree', 'one!two!three!', 'replace', '!', '')
-        self.checkequal('one@two@three!', 'one!two!three!', 'replace', '!', '@', 2)
-        self.checkequal('one@two@three@', 'one!two!three!', 'replace', '!', '@', 3)
-        self.checkequal('one@two@three@', 'one!two!three!', 'replace', '!', '@', 4)
-        self.checkequal('one!two!three!', 'one!two!three!', 'replace', '!', '@', 0)
-        self.checkequal('one@two@three@', 'one!two!three!', 'replace', '!', '@')
-        self.checkequal('one!two!three!', 'one!two!three!', 'replace', 'x', '@')
-        self.checkequal('one!two!three!', 'one!two!three!', 'replace', 'x', '@', 2)
-        self.checkequal('-a-b-c-', 'abc', 'replace', '', '-')
-        self.checkequal('-a-b-c', 'abc', 'replace', '', '-', 3)
-        self.checkequal('abc', 'abc', 'replace', '', '-', 0)
-        self.checkequal('', '', 'replace', '', '')
-        self.checkequal('abc', 'abc', 'replace', 'ab', '--', 0)
-        self.checkequal('abc', 'abc', 'replace', 'xy', '--')
-        # Next three for SF bug 422088: [OSF1 alpha] string.replace(); died with
-        # MemoryError due to empty result (platform malloc issue when requesting
-        # 0 bytes).
-        self.checkequal('', '123', 'replace', '123', '')
-        self.checkequal('', '123123', 'replace', '123', '')
-        self.checkequal('x', '123x123', 'replace', '123', '')
-
-        self.checkraises(TypeError, 'hello', 'replace')
-        self.checkraises(TypeError, 'hello', 'replace', 42)
-        self.checkraises(TypeError, 'hello', 'replace', 42, 'h')
-        self.checkraises(TypeError, 'hello', 'replace', 'h', 42)
-
-    def test_replace_overflow(self):
-        # Check for overflow checking on 32 bit machines
-        if sys.maxint != 2147483647 or struct.calcsize("P") > 4:
-            return
-        A2_16 = "A" * (2**16)
-        self.checkraises(OverflowError, A2_16, "replace", "", A2_16)
-        self.checkraises(OverflowError, A2_16, "replace", "A", A2_16)
-        self.checkraises(OverflowError, A2_16, "replace", "AA", A2_16+A2_16)
-
-    def test_zfill(self):
-        self.checkequal('123', '123', 'zfill', 2)
-        self.checkequal('123', '123', 'zfill', 3)
-        self.checkequal('0123', '123', 'zfill', 4)
-        self.checkequal('+123', '+123', 'zfill', 3)
-        self.checkequal('+123', '+123', 'zfill', 4)
-        self.checkequal('+0123', '+123', 'zfill', 5)
-        self.checkequal('-123', '-123', 'zfill', 3)
-        self.checkequal('-123', '-123', 'zfill', 4)
-        self.checkequal('-0123', '-123', 'zfill', 5)
-        self.checkequal('000', '', 'zfill', 3)
-        self.checkequal('34', '34', 'zfill', 1)
-        self.checkequal('0034', '34', 'zfill', 4)
-
-        self.checkraises(TypeError, '123', 'zfill')
-
-# XXX alias for py3k forward compatibility
-BaseTest = CommonTest
-
-class MixinStrUnicodeUserStringTest:
-    # additional tests that only work for
-    # stringlike objects, i.e. str, unicode, UserString
-    # (but not the string module)
-
-    def test_islower(self):
-        self.checkequal(False, '', 'islower')
-        self.checkequal(True, 'a', 'islower')
-        self.checkequal(False, 'A', 'islower')
-        self.checkequal(False, '\n', 'islower')
-        self.checkequal(True, 'abc', 'islower')
-        self.checkequal(False, 'aBc', 'islower')
-        self.checkequal(True, 'abc\n', 'islower')
-        self.checkraises(TypeError, 'abc', 'islower', 42)
-
-    def test_isupper(self):
-        self.checkequal(False, '', 'isupper')
-        self.checkequal(False, 'a', 'isupper')
-        self.checkequal(True, 'A', 'isupper')
-        self.checkequal(False, '\n', 'isupper')
-        self.checkequal(True, 'ABC', 'isupper')
-        self.checkequal(False, 'AbC', 'isupper')
-        self.checkequal(True, 'ABC\n', 'isupper')
-        self.checkraises(TypeError, 'abc', 'isupper', 42)
-
-    def test_istitle(self):
-        self.checkequal(False, '', 'istitle')
-        self.checkequal(False, 'a', 'istitle')
-        self.checkequal(True, 'A', 'istitle')
-        self.checkequal(False, '\n', 'istitle')
-        self.checkequal(True, 'A Titlecased Line', 'istitle')
-        self.checkequal(True, 'A\nTitlecased Line', 'istitle')
-        self.checkequal(True, 'A Titlecased, Line', 'istitle')
-        self.checkequal(False, 'Not a capitalized String', 'istitle')
-        self.checkequal(False, 'Not\ta Titlecase String', 'istitle')
-        self.checkequal(False, 'Not--a Titlecase String', 'istitle')
-        self.checkequal(False, 'NOT', 'istitle')
-        self.checkraises(TypeError, 'abc', 'istitle', 42)
-
-    def test_isspace(self):
-        self.checkequal(False, '', 'isspace')
-        self.checkequal(False, 'a', 'isspace')
-        self.checkequal(True, ' ', 'isspace')
-        self.checkequal(True, '\t', 'isspace')
-        self.checkequal(True, '\r', 'isspace')
-        self.checkequal(True, '\n', 'isspace')
-        self.checkequal(True, ' \t\r\n', 'isspace')
-        self.checkequal(False, ' \t\r\na', 'isspace')
-        self.checkraises(TypeError, 'abc', 'isspace', 42)
-
-    def test_isalpha(self):
-        self.checkequal(False, '', 'isalpha')
-        self.checkequal(True, 'a', 'isalpha')
-        self.checkequal(True, 'A', 'isalpha')
-        self.checkequal(False, '\n', 'isalpha')
-        self.checkequal(True, 'abc', 'isalpha')
-        self.checkequal(False, 'aBc123', 'isalpha')
-        self.checkequal(False, 'abc\n', 'isalpha')
-        self.checkraises(TypeError, 'abc', 'isalpha', 42)
-
-    def test_isalnum(self):
-        self.checkequal(False, '', 'isalnum')
-        self.checkequal(True, 'a', 'isalnum')
-        self.checkequal(True, 'A', 'isalnum')
-        self.checkequal(False, '\n', 'isalnum')
-        self.checkequal(True, '123abc456', 'isalnum')
-        self.checkequal(True, 'a1b3c', 'isalnum')
-        self.checkequal(False, 'aBc000 ', 'isalnum')
-        self.checkequal(False, 'abc\n', 'isalnum')
-        self.checkraises(TypeError, 'abc', 'isalnum', 42)
-
-    def test_isdigit(self):
-        self.checkequal(False, '', 'isdigit')
-        self.checkequal(False, 'a', 'isdigit')
-        self.checkequal(True, '0', 'isdigit')
-        self.checkequal(True, '0123456789', 'isdigit')
-        self.checkequal(False, '0123456789a', 'isdigit')
-
-        self.checkraises(TypeError, 'abc', 'isdigit', 42)
-
-    def test_title(self):
-        self.checkequal(' Hello ', ' hello ', 'title')
-        self.checkequal('Hello ', 'hello ', 'title')
-        self.checkequal('Hello ', 'Hello ', 'title')
-        self.checkequal('Format This As Title String', "fOrMaT thIs aS titLe String", 'title')
-        self.checkequal('Format,This-As*Title;String', "fOrMaT,thIs-aS*titLe;String", 'title', )
-        self.checkequal('Getint', "getInt", 'title')
-        self.checkraises(TypeError, 'hello', 'title', 42)
-
-    def test_splitlines(self):
-        self.checkequal(['abc', 'def', '', 'ghi'], "abc\ndef\n\rghi", 'splitlines')
-        self.checkequal(['abc', 'def', '', 'ghi'], "abc\ndef\n\r\nghi", 'splitlines')
-        self.checkequal(['abc', 'def', 'ghi'], "abc\ndef\r\nghi", 'splitlines')
-        self.checkequal(['abc', 'def', 'ghi'], "abc\ndef\r\nghi\n", 'splitlines')
-        self.checkequal(['abc', 'def', 'ghi', ''], "abc\ndef\r\nghi\n\r", 'splitlines')
-        self.checkequal(['', 'abc', 'def', 'ghi', ''], "\nabc\ndef\r\nghi\n\r", 'splitlines')
-        self.checkequal(['\n', 'abc\n', 'def\r\n', 'ghi\n', '\r'], "\nabc\ndef\r\nghi\n\r", 'splitlines', 1)
-
-        self.checkraises(TypeError, 'abc', 'splitlines', 42, 42)
-
-    def test_startswith(self):
-        self.checkequal(True, 'hello', 'startswith', 'he')
-        self.checkequal(True, 'hello', 'startswith', 'hello')
-        self.checkequal(False, 'hello', 'startswith', 'hello world')
-        self.checkequal(True, 'hello', 'startswith', '')
-        self.checkequal(False, 'hello', 'startswith', 'ello')
-        self.checkequal(True, 'hello', 'startswith', 'ello', 1)
-        self.checkequal(True, 'hello', 'startswith', 'o', 4)
-        self.checkequal(False, 'hello', 'startswith', 'o', 5)
-        self.checkequal(True, 'hello', 'startswith', '', 5)
-        self.checkequal(False, 'hello', 'startswith', 'lo', 6)
-        self.checkequal(True, 'helloworld', 'startswith', 'lowo', 3)
-        self.checkequal(True, 'helloworld', 'startswith', 'lowo', 3, 7)
-        self.checkequal(False, 'helloworld', 'startswith', 'lowo', 3, 6)
-
-        # test negative indices
-        self.checkequal(True, 'hello', 'startswith', 'he', 0, -1)
-        self.checkequal(True, 'hello', 'startswith', 'he', -53, -1)
-        self.checkequal(False, 'hello', 'startswith', 'hello', 0, -1)
-        self.checkequal(False, 'hello', 'startswith', 'hello world', -1, -10)
-        self.checkequal(False, 'hello', 'startswith', 'ello', -5)
-        self.checkequal(True, 'hello', 'startswith', 'ello', -4)
-        self.checkequal(False, 'hello', 'startswith', 'o', -2)
-        self.checkequal(True, 'hello', 'startswith', 'o', -1)
-        self.checkequal(True, 'hello', 'startswith', '', -3, -3)
-        self.checkequal(False, 'hello', 'startswith', 'lo', -9)
-
-        self.checkraises(TypeError, 'hello', 'startswith')
-        self.checkraises(TypeError, 'hello', 'startswith', 42)
-
-        # test tuple arguments
-        self.checkequal(True, 'hello', 'startswith', ('he', 'ha'))
-        self.checkequal(False, 'hello', 'startswith', ('lo', 'llo'))
-        self.checkequal(True, 'hello', 'startswith', ('hellox', 'hello'))
-        self.checkequal(False, 'hello', 'startswith', ())
-        self.checkequal(True, 'helloworld', 'startswith', ('hellowo',
-                                                           'rld', 'lowo'), 3)
-        self.checkequal(False, 'helloworld', 'startswith', ('hellowo', 'ello',
-                                                            'rld'), 3)
-        self.checkequal(True, 'hello', 'startswith', ('lo', 'he'), 0, -1)
-        self.checkequal(False, 'hello', 'startswith', ('he', 'hel'), 0, 1)
-        self.checkequal(True, 'hello', 'startswith', ('he', 'hel'), 0, 2)
-
-        self.checkraises(TypeError, 'hello', 'startswith', (42,))
-
-    def test_endswith(self):
-        self.checkequal(True, 'hello', 'endswith', 'lo')
-        self.checkequal(False, 'hello', 'endswith', 'he')
-        self.checkequal(True, 'hello', 'endswith', '')
-        self.checkequal(False, 'hello', 'endswith', 'hello world')
-        self.checkequal(False, 'helloworld', 'endswith', 'worl')
-        self.checkequal(True, 'helloworld', 'endswith', 'worl', 3, 9)
-        self.checkequal(True, 'helloworld', 'endswith', 'world', 3, 12)
-        self.checkequal(True, 'helloworld', 'endswith', 'lowo', 1, 7)
-        self.checkequal(True, 'helloworld', 'endswith', 'lowo', 2, 7)
-        self.checkequal(True, 'helloworld', 'endswith', 'lowo', 3, 7)
-        self.checkequal(False, 'helloworld', 'endswith', 'lowo', 4, 7)
-        self.checkequal(False, 'helloworld', 'endswith', 'lowo', 3, 8)
-        self.checkequal(False, 'ab', 'endswith', 'ab', 0, 1)
-        self.checkequal(False, 'ab', 'endswith', 'ab', 0, 0)
-
-        # test negative indices
-        self.checkequal(True, 'hello', 'endswith', 'lo', -2)
-        self.checkequal(False, 'hello', 'endswith', 'he', -2)
-        self.checkequal(True, 'hello', 'endswith', '', -3, -3)
-        self.checkequal(False, 'hello', 'endswith', 'hello world', -10, -2)
-        self.checkequal(False, 'helloworld', 'endswith', 'worl', -6)
-        self.checkequal(True, 'helloworld', 'endswith', 'worl', -5, -1)
-        self.checkequal(True, 'helloworld', 'endswith', 'worl', -5, 9)
-        self.checkequal(True, 'helloworld', 'endswith', 'world', -7, 12)
-        self.checkequal(True, 'helloworld', 'endswith', 'lowo', -99, -3)
-        self.checkequal(True, 'helloworld', 'endswith', 'lowo', -8, -3)
-        self.checkequal(True, 'helloworld', 'endswith', 'lowo', -7, -3)
-        self.checkequal(False, 'helloworld', 'endswith', 'lowo', 3, -4)
-        self.checkequal(False, 'helloworld', 'endswith', 'lowo', -8, -2)
-
-        self.checkraises(TypeError, 'hello', 'endswith')
-        self.checkraises(TypeError, 'hello', 'endswith', 42)
-
-        # test tuple arguments
-        self.checkequal(False, 'hello', 'endswith', ('he', 'ha'))
-        self.checkequal(True, 'hello', 'endswith', ('lo', 'llo'))
-        self.checkequal(True, 'hello', 'endswith', ('hellox', 'hello'))
-        self.checkequal(False, 'hello', 'endswith', ())
-        self.checkequal(True, 'helloworld', 'endswith', ('hellowo',
-                                                           'rld', 'lowo'), 3)
-        self.checkequal(False, 'helloworld', 'endswith', ('hellowo', 'ello',
-                                                            'rld'), 3, -1)
-        self.checkequal(True, 'hello', 'endswith', ('hell', 'ell'), 0, -1)
-        self.checkequal(False, 'hello', 'endswith', ('he', 'hel'), 0, 1)
-        self.checkequal(True, 'hello', 'endswith', ('he', 'hell'), 0, 4)
-
-        self.checkraises(TypeError, 'hello', 'endswith', (42,))
-
-    def test___contains__(self):
-        self.checkequal(True, '', '__contains__', '')
-        self.checkequal(True, 'abc', '__contains__', '')
-        self.checkequal(False, 'abc', '__contains__', '\0')
-        self.checkequal(True, '\0abc', '__contains__', '\0')
-        self.checkequal(True, 'abc\0', '__contains__', '\0')
-        self.checkequal(True, '\0abc', '__contains__', 'a')
-        self.checkequal(True, 'asdf', '__contains__', 'asdf')
-        self.checkequal(False, 'asd', '__contains__', 'asdf')
-        self.checkequal(False, '', '__contains__', 'asdf')
-
-    def test_subscript(self):
-        self.checkequal(u'a', 'abc', '__getitem__', 0)
-        self.checkequal(u'c', 'abc', '__getitem__', -1)
-        self.checkequal(u'a', 'abc', '__getitem__', 0L)
-        self.checkequal(u'abc', 'abc', '__getitem__', slice(0, 3))
-        self.checkequal(u'abc', 'abc', '__getitem__', slice(0, 1000))
-        self.checkequal(u'a', 'abc', '__getitem__', slice(0, 1))
-        self.checkequal(u'', 'abc', '__getitem__', slice(0, 0))
-
-        self.checkraises(TypeError, 'abc', '__getitem__', 'def')
-
-    def test_slice(self):
-        self.checkequal('abc', 'abc', '__getslice__', 0, 1000)
-        self.checkequal('abc', 'abc', '__getslice__', 0, 3)
-        self.checkequal('ab', 'abc', '__getslice__', 0, 2)
-        self.checkequal('bc', 'abc', '__getslice__', 1, 3)
-        self.checkequal('b', 'abc', '__getslice__', 1, 2)
-        self.checkequal('', 'abc', '__getslice__', 2, 2)
-        self.checkequal('', 'abc', '__getslice__', 1000, 1000)
-        self.checkequal('', 'abc', '__getslice__', 2000, 1000)
-        self.checkequal('', 'abc', '__getslice__', 2, 1)
-
-        self.checkraises(TypeError, 'abc', '__getslice__', 'def')
-
-    def test_extended_getslice(self):
-        # Test extended slicing by comparing with list slicing.
-        s = string.ascii_letters + string.digits
-        indices = (0, None, 1, 3, 41, -1, -2, -37)
-        for start in indices:
-            for stop in indices:
-                # Skip step 0 (invalid)
-                for step in indices[1:]:
-                    L = list(s)[start:stop:step]
-                    self.checkequal(u"".join(L), s, '__getitem__',
-                                    slice(start, stop, step))
-
-    def test_mul(self):
-        self.checkequal('', 'abc', '__mul__', -1)
-        self.checkequal('', 'abc', '__mul__', 0)
-        self.checkequal('abc', 'abc', '__mul__', 1)
-        self.checkequal('abcabcabc', 'abc', '__mul__', 3)
-        self.checkraises(TypeError, 'abc', '__mul__')
-        self.checkraises(TypeError, 'abc', '__mul__', '')
-        # XXX: on a 64-bit system, this doesn't raise an overflow error,
-        # but either raises a MemoryError, or succeeds (if you have 54TiB)
-        #self.checkraises(OverflowError, 10000*'abc', '__mul__', 2000000000)
-
-    def test_join(self):
-        # join now works with any sequence type
-        # moved here, because the argument order is
-        # different in string.join (see the test in
-        # test.test_string.StringTest.test_join)
-        self.checkequal('a b c d', ' ', 'join', ['a', 'b', 'c', 'd'])
-        self.checkequal('abcd', '', 'join', ('a', 'b', 'c', 'd'))
-        self.checkequal('bd', '', 'join', ('', 'b', '', 'd'))
-        self.checkequal('ac', '', 'join', ('a', '', 'c', ''))
-        self.checkequal('w x y z', ' ', 'join', Sequence())
-        self.checkequal('abc', 'a', 'join', ('abc',))
-        self.checkequal('z', 'a', 'join', UserList(['z']))
-        if test_support.have_unicode:
-            self.checkequal(unicode('a.b.c'), unicode('.'), 'join', ['a', 'b', 'c'])
-            self.checkequal(unicode('a.b.c'), '.', 'join', [unicode('a'), 'b', 'c'])
-            self.checkequal(unicode('a.b.c'), '.', 'join', ['a', unicode('b'), 'c'])
-            self.checkequal(unicode('a.b.c'), '.', 'join', ['a', 'b', unicode('c')])
-            self.checkraises(TypeError, '.', 'join', ['a', unicode('b'), 3])
-        for i in [5, 25, 125]:
-            self.checkequal(((('a' * i) + '-') * i)[:-1], '-', 'join',
-                 ['a' * i] * i)
-            self.checkequal(((('a' * i) + '-') * i)[:-1], '-', 'join',
-                 ('a' * i,) * i)
-
-        self.checkraises(TypeError, ' ', 'join', BadSeq1())
-        self.checkequal('a b c', ' ', 'join', BadSeq2())
-
-        self.checkraises(TypeError, ' ', 'join')
-        self.checkraises(TypeError, ' ', 'join', 7)
-        self.checkraises(TypeError, ' ', 'join', Sequence([7, 'hello', 123L]))
-        try:
-            def f():
-                yield 4 + ""
-            self.fixtype(' ').join(f())
-        except TypeError, e:
-            if '+' not in str(e):
-                self.fail('join() ate exception message')
-        else:
-            self.fail('exception not raised')
-
-    def test_formatting(self):
-        self.checkequal('+hello+', '+%s+', '__mod__', 'hello')
-        self.checkequal('+10+', '+%d+', '__mod__', 10)
-        self.checkequal('a', "%c", '__mod__', "a")
-        self.checkequal('a', "%c", '__mod__', "a")
-        self.checkequal('"', "%c", '__mod__', 34)
-        self.checkequal('$', "%c", '__mod__', 36)
-        self.checkequal('10', "%d", '__mod__', 10)
-        self.checkequal('\x7f', "%c", '__mod__', 0x7f)
-
-        for ordinal in (-100, 0x200000):
-            # unicode raises ValueError, str raises OverflowError
-            self.checkraises((ValueError, OverflowError), '%c', '__mod__', ordinal)
-
-        longvalue = sys.maxint + 10L
-        slongvalue = str(longvalue)
-        if slongvalue[-1] in ("L","l"): slongvalue = slongvalue[:-1]
-        self.checkequal(' 42', '%3ld', '__mod__', 42)
-        self.checkequal('42', '%d', '__mod__', 42L)
-        self.checkequal('42', '%d', '__mod__', 42.0)
-        self.checkequal(slongvalue, '%d', '__mod__', longvalue)
-        self.checkcall('%d', '__mod__', float(longvalue))
-        self.checkequal('0042.00', '%07.2f', '__mod__', 42)
-        self.checkequal('0042.00', '%07.2F', '__mod__', 42)
-
-        self.checkraises(TypeError, 'abc', '__mod__')
-        self.checkraises(TypeError, '%(foo)s', '__mod__', 42)
-        self.checkraises(TypeError, '%s%s', '__mod__', (42,))
-        self.checkraises(TypeError, '%c', '__mod__', (None,))
-        self.checkraises(ValueError, '%(foo', '__mod__', {})
-        self.checkraises(TypeError, '%(foo)s %(bar)s', '__mod__', ('foo', 42))
-        self.checkraises(TypeError, '%d', '__mod__', "42") # not numeric
-        self.checkraises(TypeError, '%d', '__mod__', (42+0j)) # no int/long conversion provided
-
-        # argument names with properly nested brackets are supported
-        self.checkequal('bar', '%((foo))s', '__mod__', {'(foo)': 'bar'})
-
-        # 100 is a magic number in PyUnicode_Format, this forces a resize
-        self.checkequal(103*'a'+'x', '%sx', '__mod__', 103*'a')
-
-        self.checkraises(TypeError, '%*s', '__mod__', ('foo', 'bar'))
-        self.checkraises(TypeError, '%10.*f', '__mod__', ('foo', 42.))
-        self.checkraises(ValueError, '%10', '__mod__', (42,))
-
-    def test_floatformatting(self):
-        # float formatting
-        for prec in xrange(100):
-            format = '%%.%if' % prec
-            value = 0.01
-            for x in xrange(60):
-                value = value * 3.14159265359 / 3.0 * 10.0
-                self.checkcall(format, "__mod__", value)
-
-    def test_inplace_rewrites(self):
-        # Check that strings don't copy and modify cached single-character strings
-        self.checkequal('a', 'A', 'lower')
-        self.checkequal(True, 'A', 'isupper')
-        self.checkequal('A', 'a', 'upper')
-        self.checkequal(True, 'a', 'islower')
-
-        self.checkequal('a', 'A', 'replace', 'A', 'a')
-        self.checkequal(True, 'A', 'isupper')
-
-        self.checkequal('A', 'a', 'capitalize')
-        self.checkequal(True, 'a', 'islower')
-
-        self.checkequal('A', 'a', 'swapcase')
-        self.checkequal(True, 'a', 'islower')
-
-        self.checkequal('A', 'a', 'title')
-        self.checkequal(True, 'a', 'islower')
-
-    def test_partition(self):
-
-        self.checkequal(('this is the par', 'ti', 'tion method'),
-            'this is the partition method', 'partition', 'ti')
-
-        # from raymond's original specification
-        S = 'http://www.python.org'
-        self.checkequal(('http', '://', 'www.python.org'), S, 'partition', '://')
-        self.checkequal(('http://www.python.org', '', ''), S, 'partition', '?')
-        self.checkequal(('', 'http://', 'www.python.org'), S, 'partition', 'http://')
-        self.checkequal(('http://www.python.', 'org', ''), S, 'partition', 'org')
-
-        self.checkraises(ValueError, S, 'partition', '')
-        self.checkraises(TypeError, S, 'partition', None)
-
-        # mixed use of str and unicode
-        self.assertEqual('a/b/c'.partition(u'/'), ('a', '/', 'b/c'))
-
-    def test_rpartition(self):
-
-        self.checkequal(('this is the rparti', 'ti', 'on method'),
-            'this is the rpartition method', 'rpartition', 'ti')
-
-        # from raymond's original specification
-        S = 'http://www.python.org'
-        self.checkequal(('http', '://', 'www.python.org'), S, 'rpartition', '://')
-        self.checkequal(('', '', 'http://www.python.org'), S, 'rpartition', '?')
-        self.checkequal(('', 'http://', 'www.python.org'), S, 'rpartition', 'http://')
-        self.checkequal(('http://www.python.', 'org', ''), S, 'rpartition', 'org')
-
-        self.checkraises(ValueError, S, 'rpartition', '')
-        self.checkraises(TypeError, S, 'rpartition', None)
-
-        # mixed use of str and unicode
-        self.assertEqual('a/b/c'.rpartition(u'/'), ('a/b', '/', 'c'))
-
-    def test_none_arguments(self):
-        # issue 11828
-        s = 'hello'
-        self.checkequal(2, s, 'find', 'l', None)
-        self.checkequal(3, s, 'find', 'l', -2, None)
-        self.checkequal(2, s, 'find', 'l', None, -2)
-        self.checkequal(0, s, 'find', 'h', None, None)
-
-        self.checkequal(3, s, 'rfind', 'l', None)
-        self.checkequal(3, s, 'rfind', 'l', -2, None)
-        self.checkequal(2, s, 'rfind', 'l', None, -2)
-        self.checkequal(0, s, 'rfind', 'h', None, None)
-
-        self.checkequal(2, s, 'index', 'l', None)
-        self.checkequal(3, s, 'index', 'l', -2, None)
-        self.checkequal(2, s, 'index', 'l', None, -2)
-        self.checkequal(0, s, 'index', 'h', None, None)
-
-        self.checkequal(3, s, 'rindex', 'l', None)
-        self.checkequal(3, s, 'rindex', 'l', -2, None)
-        self.checkequal(2, s, 'rindex', 'l', None, -2)
-        self.checkequal(0, s, 'rindex', 'h', None, None)
-
-        self.checkequal(2, s, 'count', 'l', None)
-        self.checkequal(1, s, 'count', 'l', -2, None)
-        self.checkequal(1, s, 'count', 'l', None, -2)
-        self.checkequal(0, s, 'count', 'x', None, None)
-
-        self.checkequal(True, s, 'endswith', 'o', None)
-        self.checkequal(True, s, 'endswith', 'lo', -2, None)
-        self.checkequal(True, s, 'endswith', 'l', None, -2)
-        self.checkequal(False, s, 'endswith', 'x', None, None)
-
-        self.checkequal(True, s, 'startswith', 'h', None)
-        self.checkequal(True, s, 'startswith', 'l', -2, None)
-        self.checkequal(True, s, 'startswith', 'h', None, -2)
-        self.checkequal(False, s, 'startswith', 'x', None, None)
-
-    def test_find_etc_raise_correct_error_messages(self):
-        # issue 11828
-        s = 'hello'
-        x = 'x'
-        self.assertRaisesRegexp(TypeError, r'\bfind\b', s.find,
-                                x, None, None, None)
-        self.assertRaisesRegexp(TypeError, r'\brfind\b', s.rfind,
-                                x, None, None, None)
-        self.assertRaisesRegexp(TypeError, r'\bindex\b', s.index,
-                                x, None, None, None)
-        self.assertRaisesRegexp(TypeError, r'\brindex\b', s.rindex,
-                                x, None, None, None)
-        self.assertRaisesRegexp(TypeError, r'^count\(', s.count,
-                                x, None, None, None)
-        self.assertRaisesRegexp(TypeError, r'^startswith\(', s.startswith,
-                                x, None, None, None)
-        self.assertRaisesRegexp(TypeError, r'^endswith\(', s.endswith,
-                                x, None, None, None)
-
-class MixinStrStringUserStringTest:
-    # Additional tests for 8bit strings, i.e. str, UserString and
-    # the string module
-
-    def test_maketrans(self):
-        self.assertEqual(
-           ''.join(map(chr, xrange(256))).replace('abc', 'xyz'),
-           string.maketrans('abc', 'xyz')
-        )
-        self.assertRaises(ValueError, string.maketrans, 'abc', 'xyzw')
-
-    def test_translate(self):
-        table = string.maketrans('abc', 'xyz')
-        self.checkequal('xyzxyz', 'xyzabcdef', 'translate', table, 'def')
-
-        table = string.maketrans('a', 'A')
-        self.checkequal('Abc', 'abc', 'translate', table)
-        self.checkequal('xyz', 'xyz', 'translate', table)
-        self.checkequal('yz', 'xyz', 'translate', table, 'x')
-        self.checkequal('yx', 'zyzzx', 'translate', None, 'z')
-        self.checkequal('zyzzx', 'zyzzx', 'translate', None, '')
-        self.checkequal('zyzzx', 'zyzzx', 'translate', None)
-        self.checkraises(ValueError, 'xyz', 'translate', 'too short', 'strip')
-        self.checkraises(ValueError, 'xyz', 'translate', 'too short')
-
-
-class MixinStrUserStringTest:
-    # Additional tests that only work with
-    # 8bit compatible object, i.e. str and UserString
-
-    if test_support.have_unicode:
-        def test_encoding_decoding(self):
-            codecs = [('rot13', 'uryyb jbeyq'),
-                      ('base64', 'aGVsbG8gd29ybGQ=\n'),
-                      ('hex', '68656c6c6f20776f726c64'),
-                      ('uu', 'begin 666 <data>\n+:&5L;&\\@=V]R;&0 \n \nend\n')]
-            for encoding, data in codecs:
-                self.checkequal(data, 'hello world', 'encode', encoding)
-                self.checkequal('hello world', data, 'decode', encoding)
-            # zlib is optional, so we make the test optional too...
-            try:
-                import zlib
-            except ImportError:
-                pass
-            else:
-                data = 'x\x9c\xcbH\xcd\xc9\xc9W(\xcf/\xcaI\x01\x00\x1a\x0b\x04]'
-                self.checkequal(data, 'hello world', 'encode', 'zlib')
-                self.checkequal('hello world', data, 'decode', 'zlib')
-
-            self.checkraises(TypeError, 'xyz', 'decode', 42)
-            self.checkraises(TypeError, 'xyz', 'encode', 42)
-
-
-class MixinStrUnicodeTest:
-    # Additional tests that only work with str and unicode.
-
-    def test_bug1001011(self):
-        # Make sure join returns a NEW object for single item sequences
-        # involving a subclass.
-        # Make sure that it is of the appropriate type.
-        # Check the optimisation still occurs for standard objects.
-        t = self.type2test
-        class subclass(t):
-            pass
-        s1 = subclass("abcd")
-        s2 = t().join([s1])
-        self.assertTrue(s1 is not s2)
-        self.assertTrue(type(s2) is t)
-
-        s1 = t("abcd")
-        s2 = t().join([s1])
-        self.assertTrue(s1 is s2)
-
-        # Should also test mixed-type join.
-        if t is unicode:
-            s1 = subclass("abcd")
-            s2 = "".join([s1])
-            self.assertTrue(s1 is not s2)
-            self.assertTrue(type(s2) is t)
-
-            s1 = t("abcd")
-            s2 = "".join([s1])
-            self.assertTrue(s1 is s2)
-
-        elif t is str:
-            s1 = subclass("abcd")
-            s2 = u"".join([s1])
-            self.assertTrue(s1 is not s2)
-            self.assertTrue(type(s2) is unicode) # promotes!
-
-            s1 = t("abcd")
-            s2 = u"".join([s1])
-            self.assertTrue(s1 is not s2)
-            self.assertTrue(type(s2) is unicode) # promotes!
-
-        else:
-            self.fail("unexpected type for MixinStrUnicodeTest %r" % t)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/subprocessdata/sigchild_ignore.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/subprocessdata/sigchild_ignore.py
deleted file mode 100644
index 1a9dcfe..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/subprocessdata/sigchild_ignore.py
+++ /dev/null
@@ -1,6 +0,0 @@
-import signal, subprocess, sys
-# On Linux this causes os.waitpid to fail with OSError as the OS has already
-# reaped our child process.  The wait() passing the OSError on to the caller
-# and causing us to exit with an error is what we are testing against.
-signal.signal(signal.SIGCHLD, signal.SIG_IGN)
-subprocess.Popen([sys.executable, '-c', 'print("albatross")']).wait()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/svn_python_org_https_cert.pem b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/svn_python_org_https_cert.pem
deleted file mode 100644
index c4f0e6d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/svn_python_org_https_cert.pem
+++ /dev/null
@@ -1,31 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIFQTCCBCmgAwIBAgIQL2qw7lpsHqTLcBh1PVjsaTANBgkqhkiG9w0BAQUFADCB
-lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
-Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
-dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt
-SGFyZHdhcmUwHhcNMDcwNDEwMDAwMDAwWhcNMTAwNDA5MjM1OTU5WjCBvjELMAkG
-A1UEBhMCVVMxDjAMBgNVBBETBTAxOTM4MRYwFAYDVQQIEw1NYXNzYWNodXNldHRz
-MREwDwYDVQQHEwhJcHN3aXRjaDEMMAoGA1UECRMDbi9hMQwwCgYDVQQSEwM2NTMx
-IzAhBgNVBAoTGlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uMRowGAYDVQQLExFD
-b21vZG8gSW5zdGFudFNTTDEXMBUGA1UEAxMOc3ZuLnB5dGhvbi5vcmcwgZ8wDQYJ
-KoZIhvcNAQEBBQADgY0AMIGJAoGBAMFOfFeLpiIN9UzTCehCgQ4W3ufaq524qPoX
-00iNDiI/ehd6kC0BXIP5/y9lPoMn7nRsjdjczUaVmlPWG8BhvADK3ZZIm7m/3mZW
-O/+C5vGE9YuOqIKe0VoNz/cZaYkz+C2xmOwDTp6a+ls29jjUfoxMd9gtGtuOp7s+
-IouVD3wZAgMBAAGjggHiMIIB3jAfBgNVHSMEGDAWgBShcl8mGyiYQ5VdBzfVhZad
-S9LDRTAdBgNVHQ4EFgQUkeNAqLbnKq86W/ghBV9xfC+7h9swDgYDVR0PAQH/BAQD
-AgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
-MBEGCWCGSAGG+EIBAQQEAwIGwDBGBgNVHSAEPzA9MDsGDCsGAQQBsjEBAgEDBDAr
-MCkGCCsGAQUFBwIBFh1odHRwczovL3NlY3VyZS5jb21vZG8ubmV0L0NQUzB7BgNV
-HR8EdDByMDigNqA0hjJodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9VVE4tVVNFUkZp
-cnN0LUhhcmR3YXJlLmNybDA2oDSgMoYwaHR0cDovL2NybC5jb21vZG8ubmV0L1VU
-Ti1VU0VSRmlyc3QtSGFyZHdhcmUuY3JsMIGGBggrBgEFBQcBAQR6MHgwOwYIKwYB
-BQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL1VUTkFkZFRydXN0U2VydmVy
-Q0EuY3J0MDkGCCsGAQUFBzAChi1odHRwOi8vY3J0LmNvbW9kby5uZXQvVVROQWRk
-VHJ1c3RTZXJ2ZXJDQS5jcnQwDQYJKoZIhvcNAQEFBQADggEBAFBxEOeKr5+vurzE
-6DiP4THhQsp+LA0+tnZ5rkV7RODAmF6strjONl3FKWGSqrucWNnFTo/HMgrgZJHQ
-CunxrJf4J5CVz/CvGlfdBDmCpYz5agc8b7EJhmM2WoWSqC+5CYIXuRzUuYcKWjPt
-3LV312Zil4BaeZ+wv4SKR8cL8jsB/sj8QxLxrZjOGXtVX3J95AnrY7BMDjuCBDxx
-dUUOUJpdJ4undAG1of0ZsPOGJ5viSJYNeJ9iOjSua24mfZ2aQ/mULirnqF8Gkr38
-CMlC8io5ct5NnLgkWmPr0FS5UyalLeWXiopS6hMofvu952VGLyacLgMl7d9S5AaL
-mxMHHeo=
------END CERTIFICATE-----
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_MimeWriter.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_MimeWriter.py
deleted file mode 100644
index db29bc0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_MimeWriter.py
+++ /dev/null
@@ -1,292 +0,0 @@
-"""Test program for MimeWriter module.
-
-The test program was too big to comfortably fit in the MimeWriter
-class, so it's here in its own file.
-
-This should generate Barry's example, modulo some quotes and newlines.
-
-"""
-
-import unittest, StringIO
-from test.test_support import run_unittest, import_module
-
-import_module("MimeWriter", deprecated=True)
-from MimeWriter import MimeWriter
-
-SELLER = '''\
-INTERFACE Seller-1;
-
-TYPE Seller = OBJECT
-    DOCUMENTATION "A simple Seller interface to test ILU"
-    METHODS
-            price():INTEGER,
-    END;
-'''
-
-BUYER = '''\
-class Buyer:
-    def __setup__(self, maxprice):
-        self._maxprice = maxprice
-
-    def __main__(self, kos):
-        """Entry point upon arrival at a new KOS."""
-        broker = kos.broker()
-        # B4 == Barry's Big Bass Business :-)
-        seller = broker.lookup('Seller_1.Seller', 'B4')
-        if seller:
-            price = seller.price()
-            print 'Seller wants $', price, '... '
-            if price > self._maxprice:
-                print 'too much!'
-            else:
-                print "I'll take it!"
-        else:
-            print 'no seller found here'
-'''                                     # Don't ask why this comment is here
-
-STATE = '''\
-# instantiate a buyer instance and put it in a magic place for the KOS
-# to find.
-__kp__ = Buyer()
-__kp__.__setup__(500)
-'''
-
-SIMPLE_METADATA = [
-        ("Interpreter", "python"),
-        ("Interpreter-Version", "1.3"),
-        ("Owner-Name", "Barry Warsaw"),
-        ("Owner-Rendezvous", "bwarsaw@cnri.reston.va.us"),
-        ("Home-KSS", "kss.cnri.reston.va.us"),
-        ("Identifier", "hdl://cnri.kss/my_first_knowbot"),
-        ("Launch-Date", "Mon Feb 12 16:39:03 EST 1996"),
-        ]
-
-COMPLEX_METADATA = [
-        ("Metadata-Type", "complex"),
-        ("Metadata-Key", "connection"),
-        ("Access", "read-only"),
-        ("Connection-Description", "Barry's Big Bass Business"),
-        ("Connection-Id", "B4"),
-        ("Connection-Direction", "client"),
-        ]
-
-EXTERNAL_METADATA = [
-        ("Metadata-Type", "complex"),
-        ("Metadata-Key", "generic-interface"),
-        ("Access", "read-only"),
-        ("Connection-Description", "Generic Interface for All Knowbots"),
-        ("Connection-Id", "generic-kp"),
-        ("Connection-Direction", "client"),
-        ]
-
-
-OUTPUT = '''\
-From: bwarsaw@cnri.reston.va.us
-Date: Mon Feb 12 17:21:48 EST 1996
-To: kss-submit@cnri.reston.va.us
-MIME-Version: 1.0
-Content-Type: multipart/knowbot;
-    boundary="801spam999";
-    version="0.1"
-
-This is a multi-part message in MIME format.
-
---801spam999
-Content-Type: multipart/knowbot-metadata;
-    boundary="802spam999"
-
-
---802spam999
-Content-Type: message/rfc822
-KP-Metadata-Type: simple
-KP-Access: read-only
-
-KPMD-Interpreter: python
-KPMD-Interpreter-Version: 1.3
-KPMD-Owner-Name: Barry Warsaw
-KPMD-Owner-Rendezvous: bwarsaw@cnri.reston.va.us
-KPMD-Home-KSS: kss.cnri.reston.va.us
-KPMD-Identifier: hdl://cnri.kss/my_first_knowbot
-KPMD-Launch-Date: Mon Feb 12 16:39:03 EST 1996
-
---802spam999
-Content-Type: text/isl
-KP-Metadata-Type: complex
-KP-Metadata-Key: connection
-KP-Access: read-only
-KP-Connection-Description: Barry's Big Bass Business
-KP-Connection-Id: B4
-KP-Connection-Direction: client
-
-INTERFACE Seller-1;
-
-TYPE Seller = OBJECT
-    DOCUMENTATION "A simple Seller interface to test ILU"
-    METHODS
-            price():INTEGER,
-    END;
-
---802spam999
-Content-Type: message/external-body;
-    access-type="URL";
-    URL="hdl://cnri.kss/generic-knowbot"
-
-Content-Type: text/isl
-KP-Metadata-Type: complex
-KP-Metadata-Key: generic-interface
-KP-Access: read-only
-KP-Connection-Description: Generic Interface for All Knowbots
-KP-Connection-Id: generic-kp
-KP-Connection-Direction: client
-
-
---802spam999--
-
---801spam999
-Content-Type: multipart/knowbot-code;
-    boundary="803spam999"
-
-
---803spam999
-Content-Type: text/plain
-KP-Module-Name: BuyerKP
-
-class Buyer:
-    def __setup__(self, maxprice):
-        self._maxprice = maxprice
-
-    def __main__(self, kos):
-        """Entry point upon arrival at a new KOS."""
-        broker = kos.broker()
-        # B4 == Barry's Big Bass Business :-)
-        seller = broker.lookup('Seller_1.Seller', 'B4')
-        if seller:
-            price = seller.price()
-            print 'Seller wants $', price, '... '
-            if price > self._maxprice:
-                print 'too much!'
-            else:
-                print "I'll take it!"
-        else:
-            print 'no seller found here'
-
---803spam999--
-
---801spam999
-Content-Type: multipart/knowbot-state;
-    boundary="804spam999"
-KP-Main-Module: main
-
-
---804spam999
-Content-Type: text/plain
-KP-Module-Name: main
-
-# instantiate a buyer instance and put it in a magic place for the KOS
-# to find.
-__kp__ = Buyer()
-__kp__.__setup__(500)
-
---804spam999--
-
---801spam999--
-'''
-
-class MimewriterTest(unittest.TestCase):
-
-    def test(self):
-        buf = StringIO.StringIO()
-
-        # Toplevel headers
-
-        toplevel = MimeWriter(buf)
-        toplevel.addheader("From", "bwarsaw@cnri.reston.va.us")
-        toplevel.addheader("Date", "Mon Feb 12 17:21:48 EST 1996")
-        toplevel.addheader("To", "kss-submit@cnri.reston.va.us")
-        toplevel.addheader("MIME-Version", "1.0")
-
-        # Toplevel body parts
-
-        f = toplevel.startmultipartbody("knowbot", "801spam999",
-                                        [("version", "0.1")], prefix=0)
-        f.write("This is a multi-part message in MIME format.\n")
-
-        # First toplevel body part: metadata
-
-        md = toplevel.nextpart()
-        md.startmultipartbody("knowbot-metadata", "802spam999")
-
-        # Metadata part 1
-
-        md1 = md.nextpart()
-        md1.addheader("KP-Metadata-Type", "simple")
-        md1.addheader("KP-Access", "read-only")
-        m = MimeWriter(md1.startbody("message/rfc822"))
-        for key, value in SIMPLE_METADATA:
-            m.addheader("KPMD-" + key, value)
-        m.flushheaders()
-        del md1
-
-        # Metadata part 2
-
-        md2 = md.nextpart()
-        for key, value in COMPLEX_METADATA:
-            md2.addheader("KP-" + key, value)
-        f = md2.startbody("text/isl")
-        f.write(SELLER)
-        del md2
-
-        # Metadata part 3
-
-        md3 = md.nextpart()
-        f = md3.startbody("message/external-body",
-                          [("access-type", "URL"),
-                           ("URL", "hdl://cnri.kss/generic-knowbot")])
-        m = MimeWriter(f)
-        for key, value in EXTERNAL_METADATA:
-            md3.addheader("KP-" + key, value)
-        md3.startbody("text/isl")
-        # Phantom body doesn't need to be written
-
-        md.lastpart()
-
-        # Second toplevel body part: code
-
-        code = toplevel.nextpart()
-        code.startmultipartbody("knowbot-code", "803spam999")
-
-        # Code: buyer program source
-
-        buyer = code.nextpart()
-        buyer.addheader("KP-Module-Name", "BuyerKP")
-        f = buyer.startbody("text/plain")
-        f.write(BUYER)
-
-        code.lastpart()
-
-        # Third toplevel body part: state
-
-        state = toplevel.nextpart()
-        state.addheader("KP-Main-Module", "main")
-        state.startmultipartbody("knowbot-state", "804spam999")
-
-        # State: a bunch of assignments
-
-        st = state.nextpart()
-        st.addheader("KP-Module-Name", "main")
-        f = st.startbody("text/plain")
-        f.write(STATE)
-
-        state.lastpart()
-
-        # End toplevel body parts
-
-        toplevel.lastpart()
-
-        self.assertEqual(buf.getvalue(), OUTPUT)
-
-def test_main():
-    run_unittest(MimewriterTest)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_SimpleHTTPServer.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_SimpleHTTPServer.py
deleted file mode 100644
index bc0fe07..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_SimpleHTTPServer.py
+++ /dev/null
@@ -1,41 +0,0 @@
-"""
-These tests only check url parsing for now.
-We don't want to require the 'network' resource.
-"""
-
-import os, unittest
-from SimpleHTTPServer import SimpleHTTPRequestHandler
-from test import test_support
-
-
-class SocketlessRequestHandler (SimpleHTTPRequestHandler):
-    def __init__(self):
-        pass
-
-class SimpleHTTPRequestHandlerTestCase(unittest.TestCase):
-    """ Test url parsing """
-    def setUp (self):
-        self.translated = os.getcwd()
-        self.translated = os.path.join(self.translated, 'filename')
-        self.handler = SocketlessRequestHandler ()
-
-    def test_queryArguments (self):
-        path = self.handler.translate_path ('/filename')
-        self.assertEqual (path, self.translated)
-        path = self.handler.translate_path ('/filename?foo=bar')
-        self.assertEqual (path, self.translated)
-        path = self.handler.translate_path ('/filename?a=b&spam=eggs#zot')
-        self.assertEqual (path, self.translated)
-
-    def test_startWithDoubleSlash (self):
-        path = self.handler.translate_path ('//filename')
-        self.assertEqual (path, self.translated)
-        path = self.handler.translate_path ('//filename?foo=bar')
-        self.assertEqual (path, self.translated)
-
-
-def test_main():
-    test_support.run_unittest(SimpleHTTPRequestHandlerTestCase)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_StringIO.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_StringIO.py
deleted file mode 100644
index 0b50a10..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_StringIO.py
+++ /dev/null
@@ -1,150 +0,0 @@
-# Tests StringIO and cStringIO
-
-import unittest
-import StringIO
-import cStringIO
-import types
-from test import test_support
-
-
-class TestGenericStringIO(unittest.TestCase):
-    # use a class variable MODULE to define which module is being tested
-
-    # Line of data to test as string
-    _line = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!'
-
-    # Constructor to use for the test data (._line is passed to this
-    # constructor)
-    constructor = str
-
-    def setUp(self):
-        self._line = self.constructor(self._line)
-        self._lines = self.constructor((self._line + '\n') * 5)
-        self._fp = self.MODULE.StringIO(self._lines)
-
-    def test_reads(self):
-        eq = self.assertEqual
-        self.assertRaises(TypeError, self._fp.seek)
-        eq(self._fp.read(10), self._line[:10])
-        eq(self._fp.readline(), self._line[10:] + '\n')
-        eq(len(self._fp.readlines(60)), 2)
-        self._fp.seek(0)
-        eq(self._fp.readline(-1), self._line + '\n')
-
-    def test_writes(self):
-        f = self.MODULE.StringIO()
-        self.assertRaises(TypeError, f.seek)
-        f.write(self._line[:6])
-        f.seek(3)
-        f.write(self._line[20:26])
-        f.write(self._line[52])
-        self.assertEqual(f.getvalue(), 'abcuvwxyz!')
-
-    def test_writelines(self):
-        f = self.MODULE.StringIO()
-        f.writelines([self._line[0], self._line[1], self._line[2]])
-        f.seek(0)
-        self.assertEqual(f.getvalue(), 'abc')
-
-    def test_writelines_error(self):
-        def errorGen():
-            yield 'a'
-            raise KeyboardInterrupt()
-        f = self.MODULE.StringIO()
-        self.assertRaises(KeyboardInterrupt, f.writelines, errorGen())
-
-    def test_truncate(self):
-        eq = self.assertEqual
-        f = self.MODULE.StringIO()
-        f.write(self._lines)
-        f.seek(10)
-        f.truncate()
-        eq(f.getvalue(), 'abcdefghij')
-        f.truncate(5)
-        eq(f.getvalue(), 'abcde')
-        f.write('xyz')
-        eq(f.getvalue(), 'abcdexyz')
-        self.assertRaises(IOError, f.truncate, -1)
-        f.close()
-        self.assertRaises(ValueError, f.write, 'frobnitz')
-
-    def test_closed_flag(self):
-        f = self.MODULE.StringIO()
-        self.assertEqual(f.closed, False)
-        f.close()
-        self.assertEqual(f.closed, True)
-        f = self.MODULE.StringIO("abc")
-        self.assertEqual(f.closed, False)
-        f.close()
-        self.assertEqual(f.closed, True)
-
-    def test_isatty(self):
-        f = self.MODULE.StringIO()
-        self.assertRaises(TypeError, f.isatty, None)
-        self.assertEqual(f.isatty(), False)
-        f.close()
-        self.assertRaises(ValueError, f.isatty)
-
-    def test_iterator(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        eq(iter(self._fp), self._fp)
-        # Does this object support the iteration protocol?
-        unless(hasattr(self._fp, '__iter__'))
-        unless(hasattr(self._fp, 'next'))
-        i = 0
-        for line in self._fp:
-            eq(line, self._line + '\n')
-            i += 1
-        eq(i, 5)
-        self._fp.close()
-        self.assertRaises(ValueError, self._fp.next)
-
-    def test_getvalue(self):
-        self._fp.close()
-        self.assertRaises(ValueError, self._fp.getvalue)
-
-class TestStringIO(TestGenericStringIO):
-    MODULE = StringIO
-
-    def test_unicode(self):
-
-        if not test_support.have_unicode: return
-
-        # The StringIO module also supports concatenating Unicode
-        # snippets to larger Unicode strings. This is tested by this
-        # method. Note that cStringIO does not support this extension.
-
-        f = self.MODULE.StringIO()
-        f.write(self._line[:6])
-        f.seek(3)
-        f.write(unicode(self._line[20:26]))
-        f.write(unicode(self._line[52]))
-        s = f.getvalue()
-        self.assertEqual(s, unicode('abcuvwxyz!'))
-        self.assertEqual(type(s), types.UnicodeType)
-
-class TestcStringIO(TestGenericStringIO):
-    MODULE = cStringIO
-
-import sys
-if sys.platform.startswith('java'):
-    # Jython doesn't have a buffer object, so we just do a useless
-    # fake of the buffer tests.
-    buffer = str
-
-class TestBufferStringIO(TestStringIO):
-    constructor = buffer
-
-class TestBuffercStringIO(TestcStringIO):
-    constructor = buffer
-
-
-def test_main():
-    test_support.run_unittest(TestStringIO, TestcStringIO)
-    with test_support.check_py3k_warnings(("buffer.. not supported",
-                                             DeprecationWarning)):
-        test_support.run_unittest(TestBufferStringIO, TestBuffercStringIO)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test___all__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test___all__.py
deleted file mode 100644
index 27ce69f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test___all__.py
+++ /dev/null
@@ -1,123 +0,0 @@
-from __future__ import print_function
-
-import unittest
-from test import test_support as support
-import os
-import sys
-
-# Setup bsddb warnings
-try:
-    bsddb = support.import_module('bsddb', deprecated=True)
-except unittest.SkipTest:
-    pass
-
-
-class NoAll(RuntimeError):
-    pass
-
-class FailedImport(RuntimeError):
-    pass
-
-
-class AllTest(unittest.TestCase):
-
-    def check_all(self, modname):
-        names = {}
-        with support.check_warnings((".* (module|package)",
-                                     DeprecationWarning), quiet=True):
-            try:
-                exec "import %s" % modname in names
-            except:
-                # Silent fail here seems the best route since some modules
-                # may not be available or not initialize properly in all
-                # environments.
-                raise FailedImport(modname)
-        if not hasattr(sys.modules[modname], "__all__"):
-            raise NoAll(modname)
-        names = {}
-        try:
-            exec "from %s import *" % modname in names
-        except Exception as e:
-            # Include the module name in the exception string
-            self.fail("__all__ failure in {}: {}: {}".format(
-                      modname, e.__class__.__name__, e))
-        if "__builtins__" in names:
-            del names["__builtins__"]
-        keys = set(names)
-        all = set(sys.modules[modname].__all__)
-        self.assertEqual(keys, all)
-
-    def walk_modules(self, basedir, modpath):
-        for fn in sorted(os.listdir(basedir)):
-            path = os.path.join(basedir, fn)
-            if os.path.isdir(path):
-                pkg_init = os.path.join(path, '__init__.py')
-                if os.path.exists(pkg_init):
-                    yield pkg_init, modpath + fn
-                    for p, m in self.walk_modules(path, modpath + fn + "."):
-                        yield p, m
-                continue
-            if not fn.endswith('.py') or fn == '__init__.py':
-                continue
-            yield path, modpath + fn[:-3]
-
-    def test_all(self):
-        # Blacklisted modules and packages
-        blacklist = set([
-            # Will raise a SyntaxError when compiling the exec statement
-            '__future__',
-        ])
-
-        if not sys.platform.startswith('java'):
-            # In case _socket fails to build, make this test fail more gracefully
-            # than an AttributeError somewhere deep in CGIHTTPServer.
-            import _socket
-
-        # rlcompleter needs special consideration; it import readline which
-        # initializes GNU readline which calls setlocale(LC_CTYPE, "")... :-(
-        try:
-            import rlcompleter
-            import locale
-        except ImportError:
-            pass
-        else:
-            locale.setlocale(locale.LC_CTYPE, 'C')
-
-        ignored = []
-        failed_imports = []
-        lib_dir = os.path.dirname(os.path.dirname(__file__))
-        for path, modname in self.walk_modules(lib_dir, ""):
-            m = modname
-            blacklisted = False
-            while m:
-                if m in blacklist:
-                    blacklisted = True
-                    break
-                m = m.rpartition('.')[0]
-            if blacklisted:
-                continue
-            if support.verbose:
-                print(modname)
-            try:
-                # This heuristic speeds up the process by removing, de facto,
-                # most test modules (and avoiding the auto-executing ones).
-                with open(path, "rb") as f:
-                    if "__all__" not in f.read():
-                        raise NoAll(modname)
-                    self.check_all(modname)
-            except NoAll:
-                ignored.append(modname)
-            except FailedImport:
-                failed_imports.append(modname)
-
-        if support.verbose:
-            print('Following modules have no __all__ and have been ignored:',
-                  ignored)
-            print('Following modules failed to be imported:', failed_imports)
-
-
-def test_main():
-    support.run_unittest(AllTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test___future__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test___future__.py
deleted file mode 100644
index 39b43ae..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test___future__.py
+++ /dev/null
@@ -1,66 +0,0 @@
-#! /usr/bin/env python
-import unittest
-from test import test_support
-import __future__
-
-GOOD_SERIALS = ("alpha", "beta", "candidate", "final")
-
-features = __future__.all_feature_names
-
-class FutureTest(unittest.TestCase):
-
-    def test_names(self):
-        # Verify that all_feature_names appears correct.
-        given_feature_names = features[:]
-        for name in dir(__future__):
-            obj = getattr(__future__, name, None)
-            if obj is not None and isinstance(obj, __future__._Feature):
-                self.assertTrue(
-                    name in given_feature_names,
-                    "%r should have been in all_feature_names" % name
-                )
-                given_feature_names.remove(name)
-        self.assertEqual(len(given_feature_names), 0,
-               "all_feature_names has too much: %r" % given_feature_names)
-
-    def test_attributes(self):
-        for feature in features:
-            value = getattr(__future__, feature)
-
-            optional = value.getOptionalRelease()
-            mandatory = value.getMandatoryRelease()
-
-            a = self.assertTrue
-            e = self.assertEqual
-            def check(t, name):
-                a(isinstance(t, tuple), "%s isn't tuple" % name)
-                e(len(t), 5, "%s isn't 5-tuple" % name)
-                (major, minor, micro, level, serial) = t
-                a(isinstance(major, int), "%s major isn't int"  % name)
-                a(isinstance(minor, int), "%s minor isn't int" % name)
-                a(isinstance(micro, int), "%s micro isn't int" % name)
-                a(isinstance(level, basestring),
-                    "%s level isn't string" % name)
-                a(level in GOOD_SERIALS,
-                       "%s level string has unknown value" % name)
-                a(isinstance(serial, int), "%s serial isn't int" % name)
-
-            check(optional, "optional")
-            if mandatory is not None:
-                check(mandatory, "mandatory")
-                a(optional < mandatory,
-                       "optional not less than mandatory, and mandatory not None")
-
-            a(hasattr(value, "compiler_flag"),
-                   "feature is missing a .compiler_flag attr")
-            # Make sure the compile accepts the flag.
-            compile("", "<test>", "exec", value.compiler_flag)
-            a(isinstance(getattr(value, "compiler_flag"), int),
-                   ".compiler_flag isn't int")
-
-
-def test_main():
-    test_support.run_unittest(FutureTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test__locale.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test__locale.py
deleted file mode 100644
index 0e236ad..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test__locale.py
+++ /dev/null
@@ -1,137 +0,0 @@
-from test.test_support import run_unittest
-from _locale import (setlocale, LC_NUMERIC, localeconv, Error)
-try:
-    from _locale import (RADIXCHAR, THOUSEP, nl_langinfo)
-except ImportError:
-    nl_langinfo = None
-
-import unittest
-import sys
-from platform import uname
-
-if uname()[0] == "Darwin":
-    maj, min, mic = [int(part) for part in uname()[2].split(".")]
-    if (maj, min, mic) < (8, 0, 0):
-        raise unittest.SkipTest("locale support broken for OS X < 10.4")
-
-candidate_locales = ['es_UY', 'fr_FR', 'fi_FI', 'es_CO', 'pt_PT', 'it_IT',
-    'et_EE', 'es_PY', 'no_NO', 'nl_NL', 'lv_LV', 'el_GR', 'be_BY', 'fr_BE',
-    'ro_RO', 'ru_UA', 'ru_RU', 'es_VE', 'ca_ES', 'se_NO', 'es_EC', 'id_ID',
-    'ka_GE', 'es_CL', 'hu_HU', 'wa_BE', 'lt_LT', 'sl_SI', 'hr_HR', 'es_AR',
-    'es_ES', 'oc_FR', 'gl_ES', 'bg_BG', 'is_IS', 'mk_MK', 'de_AT', 'pt_BR',
-    'da_DK', 'nn_NO', 'cs_CZ', 'de_LU', 'es_BO', 'sq_AL', 'sk_SK', 'fr_CH',
-    'de_DE', 'sr_YU', 'br_FR', 'nl_BE', 'sv_FI', 'pl_PL', 'fr_CA', 'fo_FO',
-    'bs_BA', 'fr_LU', 'kl_GL', 'fa_IR', 'de_BE', 'sv_SE', 'it_CH', 'uk_UA',
-    'eu_ES', 'vi_VN', 'af_ZA', 'nb_NO', 'en_DK', 'tg_TJ', 'en_US',
-    'es_ES.ISO8859-1', 'fr_FR.ISO8859-15', 'ru_RU.KOI8-R', 'ko_KR.eucKR']
-
-# Workaround for MSVC6(debug) crash bug
-if "MSC v.1200" in sys.version:
-    def accept(loc):
-        a = loc.split(".")
-        return not(len(a) == 2 and len(a[-1]) >= 9)
-    candidate_locales = [loc for loc in candidate_locales if accept(loc)]
-
-# List known locale values to test against when available.
-# Dict formatted as ``<locale> : (<decimal_point>, <thousands_sep>)``.  If a
-# value is not known, use '' .
-known_numerics = {'fr_FR' : (',', ''), 'en_US':('.', ',')}
-
-class _LocaleTests(unittest.TestCase):
-
-    def setUp(self):
-        self.oldlocale = setlocale(LC_NUMERIC)
-
-    def tearDown(self):
-        setlocale(LC_NUMERIC, self.oldlocale)
-
-    # Want to know what value was calculated, what it was compared against,
-    # what function was used for the calculation, what type of data was used,
-    # the locale that was supposedly set, and the actual locale that is set.
-    lc_numeric_err_msg = "%s != %s (%s for %s; set to %s, using %s)"
-
-    def numeric_tester(self, calc_type, calc_value, data_type, used_locale):
-        """Compare calculation against known value, if available"""
-        try:
-            set_locale = setlocale(LC_NUMERIC)
-        except Error:
-            set_locale = "<not able to determine>"
-        known_value = known_numerics.get(used_locale,
-                                    ('', ''))[data_type == 'thousands_sep']
-        if known_value and calc_value:
-            self.assertEqual(calc_value, known_value,
-                                self.lc_numeric_err_msg % (
-                                    calc_value, known_value,
-                                    calc_type, data_type, set_locale,
-                                    used_locale))
-
-    @unittest.skipUnless(nl_langinfo, "nl_langinfo is not available")
-    def test_lc_numeric_nl_langinfo(self):
-        # Test nl_langinfo against known values
-        for loc in candidate_locales:
-            try:
-                setlocale(LC_NUMERIC, loc)
-            except Error:
-                continue
-            for li, lc in ((RADIXCHAR, "decimal_point"),
-                            (THOUSEP, "thousands_sep")):
-                self.numeric_tester('nl_langinfo', nl_langinfo(li), lc, loc)
-
-    def test_lc_numeric_localeconv(self):
-        # Test localeconv against known values
-        for loc in candidate_locales:
-            try:
-                setlocale(LC_NUMERIC, loc)
-            except Error:
-                continue
-            for lc in ("decimal_point", "thousands_sep"):
-                self.numeric_tester('localeconv', localeconv()[lc], lc, loc)
-
-    @unittest.skipUnless(nl_langinfo, "nl_langinfo is not available")
-    def test_lc_numeric_basic(self):
-        # Test nl_langinfo against localeconv
-        for loc in candidate_locales:
-            try:
-                setlocale(LC_NUMERIC, loc)
-            except Error:
-                continue
-            for li, lc in ((RADIXCHAR, "decimal_point"),
-                            (THOUSEP, "thousands_sep")):
-                nl_radixchar = nl_langinfo(li)
-                li_radixchar = localeconv()[lc]
-                try:
-                    set_locale = setlocale(LC_NUMERIC)
-                except Error:
-                    set_locale = "<not able to determine>"
-                self.assertEqual(nl_radixchar, li_radixchar,
-                                "%s (nl_langinfo) != %s (localeconv) "
-                                "(set to %s, using %s)" % (
-                                                nl_radixchar, li_radixchar,
-                                                loc, set_locale))
-
-    def test_float_parsing(self):
-        # Bug #1391872: Test whether float parsing is okay on European
-        # locales.
-        for loc in candidate_locales:
-            try:
-                setlocale(LC_NUMERIC, loc)
-            except Error:
-                continue
-
-            # Ignore buggy locale databases. (Mac OS 10.4 and some other BSDs)
-            if loc == 'eu_ES' and localeconv()['decimal_point'] == "' ":
-                continue
-
-            self.assertEqual(int(eval('3.14') * 100), 314,
-                                "using eval('3.14') failed for %s" % loc)
-            self.assertEqual(int(float('3.14') * 100), 314,
-                                "using float('3.14') failed for %s" % loc)
-            if localeconv()['decimal_point'] != '.':
-                self.assertRaises(ValueError, float,
-                                  localeconv()['decimal_point'].join(['1', '23']))
-
-def test_main():
-    run_unittest(_LocaleTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_abc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_abc.py
deleted file mode 100644
index ca6171e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_abc.py
+++ /dev/null
@@ -1,233 +0,0 @@
-# Copyright 2007 Google, Inc. All Rights Reserved.
-# Licensed to PSF under a Contributor Agreement.
-
-"""Unit tests for abc.py."""
-
-import unittest, weakref
-from test import test_support
-
-import abc
-from inspect import isabstract
-
-
-class TestABC(unittest.TestCase):
-
-    def test_abstractmethod_basics(self):
-        @abc.abstractmethod
-        def foo(self): pass
-        self.assertTrue(foo.__isabstractmethod__)
-        def bar(self): pass
-        self.assertFalse(hasattr(bar, "__isabstractmethod__"))
-
-    def test_abstractproperty_basics(self):
-        @abc.abstractproperty
-        def foo(self): pass
-        self.assertTrue(foo.__isabstractmethod__)
-        def bar(self): pass
-        self.assertFalse(hasattr(bar, "__isabstractmethod__"))
-
-        class C:
-            __metaclass__ = abc.ABCMeta
-            @abc.abstractproperty
-            def foo(self): return 3
-        class D(C):
-            @property
-            def foo(self): return super(D, self).foo
-        self.assertEqual(D().foo, 3)
-
-    def test_abstractmethod_integration(self):
-        for abstractthing in [abc.abstractmethod, abc.abstractproperty]:
-            class C:
-                __metaclass__ = abc.ABCMeta
-                @abstractthing
-                def foo(self): pass  # abstract
-                def bar(self): pass  # concrete
-            self.assertEqual(C.__abstractmethods__, set(["foo"]))
-            self.assertRaises(TypeError, C)  # because foo is abstract
-            self.assertTrue(isabstract(C))
-            class D(C):
-                def bar(self): pass  # concrete override of concrete
-            self.assertEqual(D.__abstractmethods__, set(["foo"]))
-            self.assertRaises(TypeError, D)  # because foo is still abstract
-            self.assertTrue(isabstract(D))
-            class E(D):
-                def foo(self): pass
-            self.assertEqual(E.__abstractmethods__, set())
-            E()  # now foo is concrete, too
-            self.assertFalse(isabstract(E))
-            class F(E):
-                @abstractthing
-                def bar(self): pass  # abstract override of concrete
-            self.assertEqual(F.__abstractmethods__, set(["bar"]))
-            self.assertRaises(TypeError, F)  # because bar is abstract now
-            self.assertTrue(isabstract(F))
-
-    def test_subclass_oldstyle_class(self):
-        class A:
-            __metaclass__ = abc.ABCMeta
-        class OldstyleClass:
-            pass
-        self.assertFalse(issubclass(OldstyleClass, A))
-        self.assertFalse(issubclass(A, OldstyleClass))
-
-    def test_isinstance_class(self):
-        class A:
-            __metaclass__ = abc.ABCMeta
-        class OldstyleClass:
-            pass
-        self.assertFalse(isinstance(OldstyleClass, A))
-        self.assertTrue(isinstance(OldstyleClass, type(OldstyleClass)))
-        self.assertFalse(isinstance(A, OldstyleClass))
-        # This raises a recursion depth error, but is low-priority:
-        # self.assertTrue(isinstance(A, abc.ABCMeta))
-
-    def test_registration_basics(self):
-        class A:
-            __metaclass__ = abc.ABCMeta
-        class B(object):
-            pass
-        b = B()
-        self.assertFalse(issubclass(B, A))
-        self.assertFalse(issubclass(B, (A,)))
-        self.assertNotIsInstance(b, A)
-        self.assertNotIsInstance(b, (A,))
-        A.register(B)
-        self.assertTrue(issubclass(B, A))
-        self.assertTrue(issubclass(B, (A,)))
-        self.assertIsInstance(b, A)
-        self.assertIsInstance(b, (A,))
-        class C(B):
-            pass
-        c = C()
-        self.assertTrue(issubclass(C, A))
-        self.assertTrue(issubclass(C, (A,)))
-        self.assertIsInstance(c, A)
-        self.assertIsInstance(c, (A,))
-
-    def test_isinstance_invalidation(self):
-        class A:
-            __metaclass__ = abc.ABCMeta
-        class B(object):
-            pass
-        b = B()
-        self.assertFalse(isinstance(b, A))
-        self.assertFalse(isinstance(b, (A,)))
-        A.register(B)
-        self.assertTrue(isinstance(b, A))
-        self.assertTrue(isinstance(b, (A,)))
-
-    def test_registration_builtins(self):
-        class A:
-            __metaclass__ = abc.ABCMeta
-        A.register(int)
-        self.assertIsInstance(42, A)
-        self.assertIsInstance(42, (A,))
-        self.assertTrue(issubclass(int, A))
-        self.assertTrue(issubclass(int, (A,)))
-        class B(A):
-            pass
-        B.register(basestring)
-        self.assertIsInstance("", A)
-        self.assertIsInstance("", (A,))
-        self.assertTrue(issubclass(str, A))
-        self.assertTrue(issubclass(str, (A,)))
-
-    def test_registration_edge_cases(self):
-        class A:
-            __metaclass__ = abc.ABCMeta
-        A.register(A)  # should pass silently
-        class A1(A):
-            pass
-        self.assertRaises(RuntimeError, A1.register, A)  # cycles not allowed
-        class B(object):
-            pass
-        A1.register(B)  # ok
-        A1.register(B)  # should pass silently
-        class C(A):
-            pass
-        A.register(C)  # should pass silently
-        self.assertRaises(RuntimeError, C.register, A)  # cycles not allowed
-        C.register(B)  # ok
-
-    def test_register_non_class(self):
-        class A(object):
-            __metaclass__ = abc.ABCMeta
-        self.assertRaisesRegexp(TypeError, "Can only register classes",
-                                A.register, 4)
-
-    def test_registration_transitiveness(self):
-        class A:
-            __metaclass__ = abc.ABCMeta
-        self.assertTrue(issubclass(A, A))
-        self.assertTrue(issubclass(A, (A,)))
-        class B:
-            __metaclass__ = abc.ABCMeta
-        self.assertFalse(issubclass(A, B))
-        self.assertFalse(issubclass(A, (B,)))
-        self.assertFalse(issubclass(B, A))
-        self.assertFalse(issubclass(B, (A,)))
-        class C:
-            __metaclass__ = abc.ABCMeta
-        A.register(B)
-        class B1(B):
-            pass
-        self.assertTrue(issubclass(B1, A))
-        self.assertTrue(issubclass(B1, (A,)))
-        class C1(C):
-            pass
-        B1.register(C1)
-        self.assertFalse(issubclass(C, B))
-        self.assertFalse(issubclass(C, (B,)))
-        self.assertFalse(issubclass(C, B1))
-        self.assertFalse(issubclass(C, (B1,)))
-        self.assertTrue(issubclass(C1, A))
-        self.assertTrue(issubclass(C1, (A,)))
-        self.assertTrue(issubclass(C1, B))
-        self.assertTrue(issubclass(C1, (B,)))
-        self.assertTrue(issubclass(C1, B1))
-        self.assertTrue(issubclass(C1, (B1,)))
-        C1.register(int)
-        class MyInt(int):
-            pass
-        self.assertTrue(issubclass(MyInt, A))
-        self.assertTrue(issubclass(MyInt, (A,)))
-        self.assertIsInstance(42, A)
-        self.assertIsInstance(42, (A,))
-
-    def test_all_new_methods_are_called(self):
-        class A:
-            __metaclass__ = abc.ABCMeta
-        class B(object):
-            counter = 0
-            def __new__(cls):
-                B.counter += 1
-                return super(B, cls).__new__(cls)
-        class C(A, B):
-            pass
-        self.assertEqual(B.counter, 0)
-        C()
-        self.assertEqual(B.counter, 1)
-
-    def test_cache_leak(self):
-        # See issue #2521.
-        class A(object):
-            __metaclass__ = abc.ABCMeta
-            @abc.abstractmethod
-            def f(self):
-                pass
-        class C(A):
-            def f(self):
-                A.f(self)
-        r = weakref.ref(C)
-        # Trigger cache.
-        C().f()
-        del C
-        test_support.gc_collect()
-        self.assertEqual(r(), None)
-
-def test_main():
-    test_support.run_unittest(TestABC)
-
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_abstract_numbers.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_abstract_numbers.py
deleted file mode 100644
index f728521..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_abstract_numbers.py
+++ /dev/null
@@ -1,52 +0,0 @@
-"""Unit tests for numbers.py."""
-
-import math
-import unittest
-from numbers import Complex, Real, Rational, Integral
-from test import test_support
-
-class TestNumbers(unittest.TestCase):
-    def test_int(self):
-        self.assertTrue(issubclass(int, Integral))
-        self.assertTrue(issubclass(int, Complex))
-
-        self.assertEqual(7, int(7).real)
-        self.assertEqual(0, int(7).imag)
-        self.assertEqual(7, int(7).conjugate())
-        self.assertEqual(7, int(7).numerator)
-        self.assertEqual(1, int(7).denominator)
-
-    def test_long(self):
-        self.assertTrue(issubclass(long, Integral))
-        self.assertTrue(issubclass(long, Complex))
-
-        self.assertEqual(7, long(7).real)
-        self.assertEqual(0, long(7).imag)
-        self.assertEqual(7, long(7).conjugate())
-        self.assertEqual(7, long(7).numerator)
-        self.assertEqual(1, long(7).denominator)
-
-    def test_float(self):
-        self.assertFalse(issubclass(float, Rational))
-        self.assertTrue(issubclass(float, Real))
-
-        self.assertEqual(7.3, float(7.3).real)
-        self.assertEqual(0, float(7.3).imag)
-        self.assertEqual(7.3, float(7.3).conjugate())
-
-    def test_complex(self):
-        self.assertFalse(issubclass(complex, Real))
-        self.assertTrue(issubclass(complex, Complex))
-
-        c1, c2 = complex(3, 2), complex(4,1)
-        # XXX: This is not ideal, but see the comment in math_trunc().
-        self.assertRaises(AttributeError, math.trunc, c1)
-        self.assertRaises(TypeError, float, c1)
-        self.assertRaises(TypeError, int, c1)
-
-def test_main():
-    test_support.run_unittest(TestNumbers)
-
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_aepack.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_aepack.py
deleted file mode 100644
index 8eeba5d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_aepack.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright (C) 2003 Python Software Foundation
-
-import unittest
-import os
-from test import test_support
-
-aetypes = test_support.import_module('aetypes')
-aepack = test_support.import_module('aepack')
-
-class TestAepack(unittest.TestCase):
-    OBJECTS = [
-        aetypes.Enum('enum'),
-        aetypes.Type('type'),
-        aetypes.Keyword('kwrd'),
-        aetypes.Range(1, 10),
-        aetypes.Comparison(1, '<   ', 10),
-        aetypes.Logical('not ', 1),
-        aetypes.IntlText(0, 0, 'international text'),
-        aetypes.IntlWritingCode(0,0),
-        aetypes.QDPoint(50,100),
-        aetypes.QDRectangle(50,100,150,200),
-        aetypes.RGBColor(0x7000, 0x6000, 0x5000),
-        aetypes.Unknown('xxxx', 'unknown type data'),
-        aetypes.Character(1),
-        aetypes.Character(2, aetypes.Line(2)),
-    ]
-
-    def test_roundtrip_string(self):
-        o = 'a string'
-        packed = aepack.pack(o)
-        unpacked = aepack.unpack(packed)
-        self.assertEqual(o, unpacked)
-
-    def test_roundtrip_int(self):
-        o = 12
-        packed = aepack.pack(o)
-        unpacked = aepack.unpack(packed)
-        self.assertEqual(o, unpacked)
-
-    def test_roundtrip_float(self):
-        o = 12.1
-        packed = aepack.pack(o)
-        unpacked = aepack.unpack(packed)
-        self.assertEqual(o, unpacked)
-
-    def test_roundtrip_None(self):
-        o = None
-        packed = aepack.pack(o)
-        unpacked = aepack.unpack(packed)
-        self.assertEqual(o, unpacked)
-
-    def test_roundtrip_aeobjects(self):
-        for o in self.OBJECTS:
-            packed = aepack.pack(o)
-            unpacked = aepack.unpack(packed)
-            self.assertEqual(repr(o), repr(unpacked))
-
-    def test_roundtrip_FSSpec(self):
-        try:
-            import Carbon.File
-        except:
-            return
-
-        if not hasattr(Carbon.File, "FSSpec"):
-            return
-        o = Carbon.File.FSSpec(os.curdir)
-        packed = aepack.pack(o)
-        unpacked = aepack.unpack(packed)
-        self.assertEqual(o.as_pathname(), unpacked.as_pathname())
-
-    def test_roundtrip_Alias(self):
-        try:
-            import Carbon.File
-        except:
-            return
-        if not hasattr(Carbon.File, "FSSpec"):
-            return
-        o = Carbon.File.FSSpec(os.curdir).NewAliasMinimal()
-        packed = aepack.pack(o)
-        unpacked = aepack.unpack(packed)
-        self.assertEqual(o.FSResolveAlias(None)[0].as_pathname(),
-            unpacked.FSResolveAlias(None)[0].as_pathname())
-
-
-def test_main():
-    test_support.run_unittest(TestAepack)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_aifc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_aifc.py
deleted file mode 100644
index 302d9af..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_aifc.py
+++ /dev/null
@@ -1,115 +0,0 @@
-from test.test_support import findfile, run_unittest, TESTFN
-import unittest
-import os
-
-import aifc
-
-
-class AIFCTest(unittest.TestCase):
-
-    def setUp(self):
-        self.f = self.fout = None
-        self.sndfilepath = findfile('Sine-1000Hz-300ms.aif')
-
-    def tearDown(self):
-        if self.f is not None:
-            self.f.close()
-        if self.fout is not None:
-            try:
-                self.fout.close()
-            except (aifc.Error, AttributeError):
-                pass
-        try:
-            os.remove(TESTFN)
-        except OSError:
-            pass
-
-    def test_skipunknown(self):
-        #Issue 2245
-        #This file contains chunk types aifc doesn't recognize.
-        self.f = aifc.open(self.sndfilepath)
-
-    def test_params(self):
-        f = self.f = aifc.open(self.sndfilepath)
-        self.assertEqual(f.getnchannels(), 2)
-        self.assertEqual(f.getsampwidth(), 2)
-        self.assertEqual(f.getframerate(), 48000)
-        self.assertEqual(f.getnframes(), 14400)
-        self.assertEqual(f.getcomptype(), 'NONE')
-        self.assertEqual(f.getcompname(), 'not compressed')
-        self.assertEqual(f.getparams(), (2, 2, 48000, 14400, 'NONE', 'not compressed'))
-
-    def test_read(self):
-        f = self.f = aifc.open(self.sndfilepath)
-        self.assertEqual(f.tell(), 0)
-        self.assertEqual(f.readframes(2), '\x00\x00\x00\x00\x0b\xd4\x0b\xd4')
-        f.rewind()
-        pos0 = f.tell()
-        self.assertEqual(pos0, 0)
-        self.assertEqual(f.readframes(2), '\x00\x00\x00\x00\x0b\xd4\x0b\xd4')
-        pos2 = f.tell()
-        self.assertEqual(pos2, 2)
-        self.assertEqual(f.readframes(2), '\x17t\x17t"\xad"\xad')
-        f.setpos(pos2)
-        self.assertEqual(f.readframes(2), '\x17t\x17t"\xad"\xad')
-        f.setpos(pos0)
-        self.assertEqual(f.readframes(2), '\x00\x00\x00\x00\x0b\xd4\x0b\xd4')
-
-    def test_write(self):
-        f = self.f = aifc.open(self.sndfilepath)
-        fout = self.fout = aifc.open(TESTFN, 'wb')
-        fout.aifc()
-        fout.setparams(f.getparams())
-        for frame in range(f.getnframes()):
-            fout.writeframes(f.readframes(1))
-        fout.close()
-        fout = self.fout = aifc.open(TESTFN, 'rb')
-        f.rewind()
-        self.assertEqual(f.getparams(), fout.getparams())
-        self.assertEqual(f.readframes(5), fout.readframes(5))
-
-    def test_compress(self):
-        f = self.f = aifc.open(self.sndfilepath)
-        fout = self.fout = aifc.open(TESTFN, 'wb')
-        fout.aifc()
-        fout.setnchannels(f.getnchannels())
-        fout.setsampwidth(f.getsampwidth())
-        fout.setframerate(f.getframerate())
-        fout.setcomptype('ULAW', 'foo')
-        for frame in range(f.getnframes()):
-            fout.writeframes(f.readframes(1))
-        fout.close()
-        self.assertLess(
-            os.stat(TESTFN).st_size,
-            os.stat(self.sndfilepath).st_size*0.75,
-            )
-        fout = self.fout = aifc.open(TESTFN, 'rb')
-        f.rewind()
-        self.assertEqual(f.getparams()[0:3], fout.getparams()[0:3])
-        self.assertEqual(fout.getcomptype(), 'ULAW')
-        self.assertEqual(fout.getcompname(), 'foo')
-        # XXX: this test fails, not sure if it should succeed or not
-        # self.assertEqual(f.readframes(5), fout.readframes(5))
-
-    def test_close(self):
-        class Wrapfile(object):
-            def __init__(self, file):
-                self.file = open(file, 'rb')
-                self.closed = False
-            def close(self):
-                self.file.close()
-                self.closed = True
-            def __getattr__(self, attr): return getattr(self.file, attr)
-        testfile = Wrapfile(self.sndfilepath)
-        f = self.f = aifc.open(testfile)
-        self.assertEqual(testfile.closed, False)
-        f.close()
-        self.assertEqual(testfile.closed, True)
-
-
-def test_main():
-    run_unittest(AIFCTest)
-
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_al.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_al.py
deleted file mode 100644
index aa6a8a3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_al.py
+++ /dev/null
@@ -1,25 +0,0 @@
-#! /usr/bin/env python
-"""Whimpy test script for the al module
-   Roger E. Masse
-"""
-from test.test_support import verbose, import_module
-al = import_module('al', deprecated=True)
-
-alattrs = ['__doc__', '__name__', 'getdefault', 'getminmax', 'getname', 'getparams',
-           'newconfig', 'openport', 'queryparams', 'setparams']
-
-# This is a very unobtrusive test for the existence of the al module and all its
-# attributes.  More comprehensive examples can be found in Demo/al
-
-def test_main():
-    # touch all the attributes of al without doing anything
-    if verbose:
-        print 'Touching al module attributes...'
-    for attr in alattrs:
-        if verbose:
-            print 'touching: ', attr
-        getattr(al, attr)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_anydbm.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_anydbm.py
deleted file mode 100644
index 750a69e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_anydbm.py
+++ /dev/null
@@ -1,97 +0,0 @@
-#! /usr/bin/env python
-"""Test script for the anydbm module
-   based on testdumbdbm.py
-"""
-
-import os
-import unittest
-import glob
-from test import test_support
-
-_fname = test_support.TESTFN
-
-# Silence Py3k warning
-anydbm = test_support.import_module('anydbm', deprecated=True)
-
-def _delete_files():
-    # we don't know the precise name the underlying database uses
-    # so we use glob to locate all names
-    for f in glob.glob(_fname + "*"):
-        try:
-            os.unlink(f)
-        except OSError:
-            pass
-
-class AnyDBMTestCase(unittest.TestCase):
-    _dict = {'0': '',
-             'a': 'Python:',
-             'b': 'Programming',
-             'c': 'the',
-             'd': 'way',
-             'f': 'Guido',
-             'g': 'intended'
-             }
-
-    def __init__(self, *args):
-        unittest.TestCase.__init__(self, *args)
-
-    def test_anydbm_creation(self):
-        f = anydbm.open(_fname, 'c')
-        self.assertEqual(f.keys(), [])
-        for key in self._dict:
-            f[key] = self._dict[key]
-        self.read_helper(f)
-        f.close()
-
-    def test_anydbm_modification(self):
-        self.init_db()
-        f = anydbm.open(_fname, 'c')
-        self._dict['g'] = f['g'] = "indented"
-        self.read_helper(f)
-        f.close()
-
-    def test_anydbm_read(self):
-        self.init_db()
-        f = anydbm.open(_fname, 'r')
-        self.read_helper(f)
-        f.close()
-
-    def test_anydbm_keys(self):
-        self.init_db()
-        f = anydbm.open(_fname, 'r')
-        keys = self.keys_helper(f)
-        f.close()
-
-    def read_helper(self, f):
-        keys = self.keys_helper(f)
-        for key in self._dict:
-            self.assertEqual(self._dict[key], f[key])
-
-    def init_db(self):
-        f = anydbm.open(_fname, 'n')
-        for k in self._dict:
-            f[k] = self._dict[k]
-        f.close()
-
-    def keys_helper(self, f):
-        keys = f.keys()
-        keys.sort()
-        dkeys = self._dict.keys()
-        dkeys.sort()
-        self.assertEqual(keys, dkeys)
-        return keys
-
-    def tearDown(self):
-        _delete_files()
-
-    def setUp(self):
-        _delete_files()
-
-def test_main():
-    try:
-        test_support.run_unittest(AnyDBMTestCase)
-    finally:
-        _delete_files()
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_applesingle.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_applesingle.py
deleted file mode 100644
index eb25de2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_applesingle.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright (C) 2003 Python Software Foundation
-
-import unittest
-import os
-from test import test_support
-import struct
-
-MacOS = test_support.import_module('MacOS')
-# The following should exist if MacOS does.
-import applesingle
-
-AS_MAGIC=0x00051600
-AS_VERSION=0x00020000
-dataforkdata = 'hello\r\0world\n'
-resourceforkdata = 'goodbye\ncruel\0world\r'
-
-applesingledata = struct.pack(">ll16sh", AS_MAGIC, AS_VERSION, "foo", 2) + \
-    struct.pack(">llllll", 1, 50, len(dataforkdata),
-        2, 50+len(dataforkdata), len(resourceforkdata)) + \
-    dataforkdata + \
-    resourceforkdata
-TESTFN2 = test_support.TESTFN + '2'
-
-class TestApplesingle(unittest.TestCase):
-
-    def setUp(self):
-        fp = open(test_support.TESTFN, 'w')
-        fp.write(applesingledata)
-        fp.close()
-
-    def tearDown(self):
-        try:
-            os.unlink(test_support.TESTFN)
-        except:
-            pass
-        try:
-            os.unlink(TESTFN2)
-        except:
-            pass
-
-    def compareData(self, isrf, data):
-        if isrf:
-            fp = MacOS.openrf(TESTFN2, '*rb')
-        else:
-            fp = open(TESTFN2, 'rb')
-        filedata = fp.read(1000)
-        self.assertEqual(data, filedata)
-
-    def test_applesingle(self):
-        try:
-            os.unlink(TESTFN2)
-        except:
-            pass
-        applesingle.decode(test_support.TESTFN, TESTFN2)
-        self.compareData(False, dataforkdata)
-        self.compareData(True, resourceforkdata)
-
-    def test_applesingle_resonly(self):
-        try:
-            os.unlink(TESTFN2)
-        except:
-            pass
-        applesingle.decode(test_support.TESTFN, TESTFN2, resonly=True)
-        self.compareData(False, resourceforkdata)
-
-def test_main():
-    test_support.run_unittest(TestApplesingle)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_argparse.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_argparse.py
deleted file mode 100644
index 76edc8a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_argparse.py
+++ /dev/null
@@ -1,4646 +0,0 @@
-# Author: Steven J. Bethard <steven.bethard@gmail.com>.
-
-import codecs
-import inspect
-import os
-import shutil
-import stat
-import sys
-import textwrap
-import tempfile
-import unittest
-import argparse
-
-from StringIO import StringIO
-
-class StdIOBuffer(StringIO):
-    pass
-
-from test import test_support
-
-class TestCase(unittest.TestCase):
-
-    def assertEqual(self, obj1, obj2):
-        if obj1 != obj2:
-            print('')
-            print(repr(obj1))
-            print(repr(obj2))
-            print(obj1)
-            print(obj2)
-        super(TestCase, self).assertEqual(obj1, obj2)
-
-    def setUp(self):
-        # The tests assume that line wrapping occurs at 80 columns, but this
-        # behaviour can be overridden by setting the COLUMNS environment
-        # variable.  To ensure that this assumption is true, unset COLUMNS.
-        env = test_support.EnvironmentVarGuard()
-        env.unset("COLUMNS")
-        self.addCleanup(env.__exit__)
-
-
-class TempDirMixin(object):
-
-    def setUp(self):
-        self.temp_dir = tempfile.mkdtemp()
-        self.old_dir = os.getcwd()
-        os.chdir(self.temp_dir)
-
-    def tearDown(self):
-        os.chdir(self.old_dir)
-        shutil.rmtree(self.temp_dir, True)
-
-    def create_readonly_file(self, filename):
-        file_path = os.path.join(self.temp_dir, filename)
-        with open(file_path, 'w') as file:
-            file.write(filename)
-        os.chmod(file_path, stat.S_IREAD)
-
-class Sig(object):
-
-    def __init__(self, *args, **kwargs):
-        self.args = args
-        self.kwargs = kwargs
-
-
-class NS(object):
-
-    def __init__(self, **kwargs):
-        self.__dict__.update(kwargs)
-
-    def __repr__(self):
-        sorted_items = sorted(self.__dict__.items())
-        kwarg_str = ', '.join(['%s=%r' % tup for tup in sorted_items])
-        return '%s(%s)' % (type(self).__name__, kwarg_str)
-
-    __hash__ = None
-
-    def __eq__(self, other):
-        return vars(self) == vars(other)
-
-    def __ne__(self, other):
-        return not (self == other)
-
-
-class ArgumentParserError(Exception):
-
-    def __init__(self, message, stdout=None, stderr=None, error_code=None):
-        Exception.__init__(self, message, stdout, stderr)
-        self.message = message
-        self.stdout = stdout
-        self.stderr = stderr
-        self.error_code = error_code
-
-
-def stderr_to_parser_error(parse_args, *args, **kwargs):
-    # if this is being called recursively and stderr or stdout is already being
-    # redirected, simply call the function and let the enclosing function
-    # catch the exception
-    if isinstance(sys.stderr, StdIOBuffer) or isinstance(sys.stdout, StdIOBuffer):
-        return parse_args(*args, **kwargs)
-
-    # if this is not being called recursively, redirect stderr and
-    # use it as the ArgumentParserError message
-    old_stdout = sys.stdout
-    old_stderr = sys.stderr
-    sys.stdout = StdIOBuffer()
-    sys.stderr = StdIOBuffer()
-    try:
-        try:
-            result = parse_args(*args, **kwargs)
-            for key in list(vars(result)):
-                if getattr(result, key) is sys.stdout:
-                    setattr(result, key, old_stdout)
-                if getattr(result, key) is sys.stderr:
-                    setattr(result, key, old_stderr)
-            return result
-        except SystemExit:
-            code = sys.exc_info()[1].code
-            stdout = sys.stdout.getvalue()
-            stderr = sys.stderr.getvalue()
-            raise ArgumentParserError("SystemExit", stdout, stderr, code)
-    finally:
-        sys.stdout = old_stdout
-        sys.stderr = old_stderr
-
-
-class ErrorRaisingArgumentParser(argparse.ArgumentParser):
-
-    def parse_args(self, *args, **kwargs):
-        parse_args = super(ErrorRaisingArgumentParser, self).parse_args
-        return stderr_to_parser_error(parse_args, *args, **kwargs)
-
-    def exit(self, *args, **kwargs):
-        exit = super(ErrorRaisingArgumentParser, self).exit
-        return stderr_to_parser_error(exit, *args, **kwargs)
-
-    def error(self, *args, **kwargs):
-        error = super(ErrorRaisingArgumentParser, self).error
-        return stderr_to_parser_error(error, *args, **kwargs)
-
-
-class ParserTesterMetaclass(type):
-    """Adds parser tests using the class attributes.
-
-    Classes of this type should specify the following attributes:
-
-    argument_signatures -- a list of Sig objects which specify
-        the signatures of Argument objects to be created
-    failures -- a list of args lists that should cause the parser
-        to fail
-    successes -- a list of (initial_args, options, remaining_args) tuples
-        where initial_args specifies the string args to be parsed,
-        options is a dict that should match the vars() of the options
-        parsed out of initial_args, and remaining_args should be any
-        remaining unparsed arguments
-    """
-
-    def __init__(cls, name, bases, bodydict):
-        if name == 'ParserTestCase':
-            return
-
-        # default parser signature is empty
-        if not hasattr(cls, 'parser_signature'):
-            cls.parser_signature = Sig()
-        if not hasattr(cls, 'parser_class'):
-            cls.parser_class = ErrorRaisingArgumentParser
-
-        # ---------------------------------------
-        # functions for adding optional arguments
-        # ---------------------------------------
-        def no_groups(parser, argument_signatures):
-            """Add all arguments directly to the parser"""
-            for sig in argument_signatures:
-                parser.add_argument(*sig.args, **sig.kwargs)
-
-        def one_group(parser, argument_signatures):
-            """Add all arguments under a single group in the parser"""
-            group = parser.add_argument_group('foo')
-            for sig in argument_signatures:
-                group.add_argument(*sig.args, **sig.kwargs)
-
-        def many_groups(parser, argument_signatures):
-            """Add each argument in its own group to the parser"""
-            for i, sig in enumerate(argument_signatures):
-                group = parser.add_argument_group('foo:%i' % i)
-                group.add_argument(*sig.args, **sig.kwargs)
-
-        # --------------------------
-        # functions for parsing args
-        # --------------------------
-        def listargs(parser, args):
-            """Parse the args by passing in a list"""
-            return parser.parse_args(args)
-
-        def sysargs(parser, args):
-            """Parse the args by defaulting to sys.argv"""
-            old_sys_argv = sys.argv
-            sys.argv = [old_sys_argv[0]] + args
-            try:
-                return parser.parse_args()
-            finally:
-                sys.argv = old_sys_argv
-
-        # class that holds the combination of one optional argument
-        # addition method and one arg parsing method
-        class AddTests(object):
-
-            def __init__(self, tester_cls, add_arguments, parse_args):
-                self._add_arguments = add_arguments
-                self._parse_args = parse_args
-
-                add_arguments_name = self._add_arguments.__name__
-                parse_args_name = self._parse_args.__name__
-                for test_func in [self.test_failures, self.test_successes]:
-                    func_name = test_func.__name__
-                    names = func_name, add_arguments_name, parse_args_name
-                    test_name = '_'.join(names)
-
-                    def wrapper(self, test_func=test_func):
-                        test_func(self)
-                    try:
-                        wrapper.__name__ = test_name
-                    except TypeError:
-                        pass
-                    setattr(tester_cls, test_name, wrapper)
-
-            def _get_parser(self, tester):
-                args = tester.parser_signature.args
-                kwargs = tester.parser_signature.kwargs
-                parser = tester.parser_class(*args, **kwargs)
-                self._add_arguments(parser, tester.argument_signatures)
-                return parser
-
-            def test_failures(self, tester):
-                parser = self._get_parser(tester)
-                for args_str in tester.failures:
-                    args = args_str.split()
-                    raises = tester.assertRaises
-                    raises(ArgumentParserError, parser.parse_args, args)
-
-            def test_successes(self, tester):
-                parser = self._get_parser(tester)
-                for args, expected_ns in tester.successes:
-                    if isinstance(args, str):
-                        args = args.split()
-                    result_ns = self._parse_args(parser, args)
-                    tester.assertEqual(expected_ns, result_ns)
-
-        # add tests for each combination of an optionals adding method
-        # and an arg parsing method
-        for add_arguments in [no_groups, one_group, many_groups]:
-            for parse_args in [listargs, sysargs]:
-                AddTests(cls, add_arguments, parse_args)
-
-bases = TestCase,
-ParserTestCase = ParserTesterMetaclass('ParserTestCase', bases, {})
-
-# ===============
-# Optionals tests
-# ===============
-
-class TestOptionalsSingleDash(ParserTestCase):
-    """Test an Optional with a single-dash option string"""
-
-    argument_signatures = [Sig('-x')]
-    failures = ['-x', 'a', '--foo', '-x --foo', '-x -y']
-    successes = [
-        ('', NS(x=None)),
-        ('-x a', NS(x='a')),
-        ('-xa', NS(x='a')),
-        ('-x -1', NS(x='-1')),
-        ('-x-1', NS(x='-1')),
-    ]
-
-
-class TestOptionalsSingleDashCombined(ParserTestCase):
-    """Test an Optional with a single-dash option string"""
-
-    argument_signatures = [
-        Sig('-x', action='store_true'),
-        Sig('-yyy', action='store_const', const=42),
-        Sig('-z'),
-    ]
-    failures = ['a', '--foo', '-xa', '-x --foo', '-x -z', '-z -x',
-                '-yx', '-yz a', '-yyyx', '-yyyza', '-xyza']
-    successes = [
-        ('', NS(x=False, yyy=None, z=None)),
-        ('-x', NS(x=True, yyy=None, z=None)),
-        ('-za', NS(x=False, yyy=None, z='a')),
-        ('-z a', NS(x=False, yyy=None, z='a')),
-        ('-xza', NS(x=True, yyy=None, z='a')),
-        ('-xz a', NS(x=True, yyy=None, z='a')),
-        ('-x -za', NS(x=True, yyy=None, z='a')),
-        ('-x -z a', NS(x=True, yyy=None, z='a')),
-        ('-y', NS(x=False, yyy=42, z=None)),
-        ('-yyy', NS(x=False, yyy=42, z=None)),
-        ('-x -yyy -za', NS(x=True, yyy=42, z='a')),
-        ('-x -yyy -z a', NS(x=True, yyy=42, z='a')),
-    ]
-
-
-class TestOptionalsSingleDashLong(ParserTestCase):
-    """Test an Optional with a multi-character single-dash option string"""
-
-    argument_signatures = [Sig('-foo')]
-    failures = ['-foo', 'a', '--foo', '-foo --foo', '-foo -y', '-fooa']
-    successes = [
-        ('', NS(foo=None)),
-        ('-foo a', NS(foo='a')),
-        ('-foo -1', NS(foo='-1')),
-        ('-fo a', NS(foo='a')),
-        ('-f a', NS(foo='a')),
-    ]
-
-
-class TestOptionalsSingleDashSubsetAmbiguous(ParserTestCase):
-    """Test Optionals where option strings are subsets of each other"""
-
-    argument_signatures = [Sig('-f'), Sig('-foobar'), Sig('-foorab')]
-    failures = ['-f', '-foo', '-fo', '-foo b', '-foob', '-fooba', '-foora']
-    successes = [
-        ('', NS(f=None, foobar=None, foorab=None)),
-        ('-f a', NS(f='a', foobar=None, foorab=None)),
-        ('-fa', NS(f='a', foobar=None, foorab=None)),
-        ('-foa', NS(f='oa', foobar=None, foorab=None)),
-        ('-fooa', NS(f='ooa', foobar=None, foorab=None)),
-        ('-foobar a', NS(f=None, foobar='a', foorab=None)),
-        ('-foorab a', NS(f=None, foobar=None, foorab='a')),
-    ]
-
-
-class TestOptionalsSingleDashAmbiguous(ParserTestCase):
-    """Test Optionals that partially match but are not subsets"""
-
-    argument_signatures = [Sig('-foobar'), Sig('-foorab')]
-    failures = ['-f', '-f a', '-fa', '-foa', '-foo', '-fo', '-foo b']
-    successes = [
-        ('', NS(foobar=None, foorab=None)),
-        ('-foob a', NS(foobar='a', foorab=None)),
-        ('-foor a', NS(foobar=None, foorab='a')),
-        ('-fooba a', NS(foobar='a', foorab=None)),
-        ('-foora a', NS(foobar=None, foorab='a')),
-        ('-foobar a', NS(foobar='a', foorab=None)),
-        ('-foorab a', NS(foobar=None, foorab='a')),
-    ]
-
-
-class TestOptionalsNumeric(ParserTestCase):
-    """Test an Optional with a short opt string"""
-
-    argument_signatures = [Sig('-1', dest='one')]
-    failures = ['-1', 'a', '-1 --foo', '-1 -y', '-1 -1', '-1 -2']
-    successes = [
-        ('', NS(one=None)),
-        ('-1 a', NS(one='a')),
-        ('-1a', NS(one='a')),
-        ('-1-2', NS(one='-2')),
-    ]
-
-
-class TestOptionalsDoubleDash(ParserTestCase):
-    """Test an Optional with a double-dash option string"""
-
-    argument_signatures = [Sig('--foo')]
-    failures = ['--foo', '-f', '-f a', 'a', '--foo -x', '--foo --bar']
-    successes = [
-        ('', NS(foo=None)),
-        ('--foo a', NS(foo='a')),
-        ('--foo=a', NS(foo='a')),
-        ('--foo -2.5', NS(foo='-2.5')),
-        ('--foo=-2.5', NS(foo='-2.5')),
-    ]
-
-
-class TestOptionalsDoubleDashPartialMatch(ParserTestCase):
-    """Tests partial matching with a double-dash option string"""
-
-    argument_signatures = [
-        Sig('--badger', action='store_true'),
-        Sig('--bat'),
-    ]
-    failures = ['--bar', '--b', '--ba', '--b=2', '--ba=4', '--badge 5']
-    successes = [
-        ('', NS(badger=False, bat=None)),
-        ('--bat X', NS(badger=False, bat='X')),
-        ('--bad', NS(badger=True, bat=None)),
-        ('--badg', NS(badger=True, bat=None)),
-        ('--badge', NS(badger=True, bat=None)),
-        ('--badger', NS(badger=True, bat=None)),
-    ]
-
-
-class TestOptionalsDoubleDashPrefixMatch(ParserTestCase):
-    """Tests when one double-dash option string is a prefix of another"""
-
-    argument_signatures = [
-        Sig('--badger', action='store_true'),
-        Sig('--ba'),
-    ]
-    failures = ['--bar', '--b', '--ba', '--b=2', '--badge 5']
-    successes = [
-        ('', NS(badger=False, ba=None)),
-        ('--ba X', NS(badger=False, ba='X')),
-        ('--ba=X', NS(badger=False, ba='X')),
-        ('--bad', NS(badger=True, ba=None)),
-        ('--badg', NS(badger=True, ba=None)),
-        ('--badge', NS(badger=True, ba=None)),
-        ('--badger', NS(badger=True, ba=None)),
-    ]
-
-
-class TestOptionalsSingleDoubleDash(ParserTestCase):
-    """Test an Optional with single- and double-dash option strings"""
-
-    argument_signatures = [
-        Sig('-f', action='store_true'),
-        Sig('--bar'),
-        Sig('-baz', action='store_const', const=42),
-    ]
-    failures = ['--bar', '-fbar', '-fbaz', '-bazf', '-b B', 'B']
-    successes = [
-        ('', NS(f=False, bar=None, baz=None)),
-        ('-f', NS(f=True, bar=None, baz=None)),
-        ('--ba B', NS(f=False, bar='B', baz=None)),
-        ('-f --bar B', NS(f=True, bar='B', baz=None)),
-        ('-f -b', NS(f=True, bar=None, baz=42)),
-        ('-ba -f', NS(f=True, bar=None, baz=42)),
-    ]
-
-
-class TestOptionalsAlternatePrefixChars(ParserTestCase):
-    """Test an Optional with option strings with custom prefixes"""
-
-    parser_signature = Sig(prefix_chars='+:/', add_help=False)
-    argument_signatures = [
-        Sig('+f', action='store_true'),
-        Sig('::bar'),
-        Sig('/baz', action='store_const', const=42),
-    ]
-    failures = ['--bar', '-fbar', '-b B', 'B', '-f', '--bar B', '-baz', '-h', '--help', '+h', '::help', '/help']
-    successes = [
-        ('', NS(f=False, bar=None, baz=None)),
-        ('+f', NS(f=True, bar=None, baz=None)),
-        ('::ba B', NS(f=False, bar='B', baz=None)),
-        ('+f ::bar B', NS(f=True, bar='B', baz=None)),
-        ('+f /b', NS(f=True, bar=None, baz=42)),
-        ('/ba +f', NS(f=True, bar=None, baz=42)),
-    ]
-
-
-class TestOptionalsAlternatePrefixCharsAddedHelp(ParserTestCase):
-    """When ``-`` not in prefix_chars, default operators created for help
-       should use the prefix_chars in use rather than - or --
-       http://bugs.python.org/issue9444"""
-
-    parser_signature = Sig(prefix_chars='+:/', add_help=True)
-    argument_signatures = [
-        Sig('+f', action='store_true'),
-        Sig('::bar'),
-        Sig('/baz', action='store_const', const=42),
-    ]
-    failures = ['--bar', '-fbar', '-b B', 'B', '-f', '--bar B', '-baz']
-    successes = [
-        ('', NS(f=False, bar=None, baz=None)),
-        ('+f', NS(f=True, bar=None, baz=None)),
-        ('::ba B', NS(f=False, bar='B', baz=None)),
-        ('+f ::bar B', NS(f=True, bar='B', baz=None)),
-        ('+f /b', NS(f=True, bar=None, baz=42)),
-        ('/ba +f', NS(f=True, bar=None, baz=42))
-    ]
-
-
-class TestOptionalsAlternatePrefixCharsMultipleShortArgs(ParserTestCase):
-    """Verify that Optionals must be called with their defined prefixes"""
-
-    parser_signature = Sig(prefix_chars='+-', add_help=False)
-    argument_signatures = [
-        Sig('-x', action='store_true'),
-        Sig('+y', action='store_true'),
-        Sig('+z', action='store_true'),
-    ]
-    failures = ['-w',
-                '-xyz',
-                '+x',
-                '-y',
-                '+xyz',
-    ]
-    successes = [
-        ('', NS(x=False, y=False, z=False)),
-        ('-x', NS(x=True, y=False, z=False)),
-        ('+y -x', NS(x=True, y=True, z=False)),
-        ('+yz -x', NS(x=True, y=True, z=True)),
-    ]
-
-
-class TestOptionalsShortLong(ParserTestCase):
-    """Test a combination of single- and double-dash option strings"""
-
-    argument_signatures = [
-        Sig('-v', '--verbose', '-n', '--noisy', action='store_true'),
-    ]
-    failures = ['--x --verbose', '-N', 'a', '-v x']
-    successes = [
-        ('', NS(verbose=False)),
-        ('-v', NS(verbose=True)),
-        ('--verbose', NS(verbose=True)),
-        ('-n', NS(verbose=True)),
-        ('--noisy', NS(verbose=True)),
-    ]
-
-
-class TestOptionalsDest(ParserTestCase):
-    """Tests various means of setting destination"""
-
-    argument_signatures = [Sig('--foo-bar'), Sig('--baz', dest='zabbaz')]
-    failures = ['a']
-    successes = [
-        ('--foo-bar f', NS(foo_bar='f', zabbaz=None)),
-        ('--baz g', NS(foo_bar=None, zabbaz='g')),
-        ('--foo-bar h --baz i', NS(foo_bar='h', zabbaz='i')),
-        ('--baz j --foo-bar k', NS(foo_bar='k', zabbaz='j')),
-    ]
-
-
-class TestOptionalsDefault(ParserTestCase):
-    """Tests specifying a default for an Optional"""
-
-    argument_signatures = [Sig('-x'), Sig('-y', default=42)]
-    failures = ['a']
-    successes = [
-        ('', NS(x=None, y=42)),
-        ('-xx', NS(x='x', y=42)),
-        ('-yy', NS(x=None, y='y')),
-    ]
-
-
-class TestOptionalsNargsDefault(ParserTestCase):
-    """Tests not specifying the number of args for an Optional"""
-
-    argument_signatures = [Sig('-x')]
-    failures = ['a', '-x']
-    successes = [
-        ('', NS(x=None)),
-        ('-x a', NS(x='a')),
-    ]
-
-
-class TestOptionalsNargs1(ParserTestCase):
-    """Tests specifying the 1 arg for an Optional"""
-
-    argument_signatures = [Sig('-x', nargs=1)]
-    failures = ['a', '-x']
-    successes = [
-        ('', NS(x=None)),
-        ('-x a', NS(x=['a'])),
-    ]
-
-
-class TestOptionalsNargs3(ParserTestCase):
-    """Tests specifying the 3 args for an Optional"""
-
-    argument_signatures = [Sig('-x', nargs=3)]
-    failures = ['a', '-x', '-x a', '-x a b', 'a -x', 'a -x b']
-    successes = [
-        ('', NS(x=None)),
-        ('-x a b c', NS(x=['a', 'b', 'c'])),
-    ]
-
-
-class TestOptionalsNargsOptional(ParserTestCase):
-    """Tests specifying an Optional arg for an Optional"""
-
-    argument_signatures = [
-        Sig('-w', nargs='?'),
-        Sig('-x', nargs='?', const=42),
-        Sig('-y', nargs='?', default='spam'),
-        Sig('-z', nargs='?', type=int, const='42', default='84'),
-    ]
-    failures = ['2']
-    successes = [
-        ('', NS(w=None, x=None, y='spam', z=84)),
-        ('-w', NS(w=None, x=None, y='spam', z=84)),
-        ('-w 2', NS(w='2', x=None, y='spam', z=84)),
-        ('-x', NS(w=None, x=42, y='spam', z=84)),
-        ('-x 2', NS(w=None, x='2', y='spam', z=84)),
-        ('-y', NS(w=None, x=None, y=None, z=84)),
-        ('-y 2', NS(w=None, x=None, y='2', z=84)),
-        ('-z', NS(w=None, x=None, y='spam', z=42)),
-        ('-z 2', NS(w=None, x=None, y='spam', z=2)),
-    ]
-
-
-class TestOptionalsNargsZeroOrMore(ParserTestCase):
-    """Tests specifying an args for an Optional that accepts zero or more"""
-
-    argument_signatures = [
-        Sig('-x', nargs='*'),
-        Sig('-y', nargs='*', default='spam'),
-    ]
-    failures = ['a']
-    successes = [
-        ('', NS(x=None, y='spam')),
-        ('-x', NS(x=[], y='spam')),
-        ('-x a', NS(x=['a'], y='spam')),
-        ('-x a b', NS(x=['a', 'b'], y='spam')),
-        ('-y', NS(x=None, y=[])),
-        ('-y a', NS(x=None, y=['a'])),
-        ('-y a b', NS(x=None, y=['a', 'b'])),
-    ]
-
-
-class TestOptionalsNargsOneOrMore(ParserTestCase):
-    """Tests specifying an args for an Optional that accepts one or more"""
-
-    argument_signatures = [
-        Sig('-x', nargs='+'),
-        Sig('-y', nargs='+', default='spam'),
-    ]
-    failures = ['a', '-x', '-y', 'a -x', 'a -y b']
-    successes = [
-        ('', NS(x=None, y='spam')),
-        ('-x a', NS(x=['a'], y='spam')),
-        ('-x a b', NS(x=['a', 'b'], y='spam')),
-        ('-y a', NS(x=None, y=['a'])),
-        ('-y a b', NS(x=None, y=['a', 'b'])),
-    ]
-
-
-class TestOptionalsChoices(ParserTestCase):
-    """Tests specifying the choices for an Optional"""
-
-    argument_signatures = [
-        Sig('-f', choices='abc'),
-        Sig('-g', type=int, choices=range(5))]
-    failures = ['a', '-f d', '-fad', '-ga', '-g 6']
-    successes = [
-        ('', NS(f=None, g=None)),
-        ('-f a', NS(f='a', g=None)),
-        ('-f c', NS(f='c', g=None)),
-        ('-g 0', NS(f=None, g=0)),
-        ('-g 03', NS(f=None, g=3)),
-        ('-fb -g4', NS(f='b', g=4)),
-    ]
-
-
-class TestOptionalsRequired(ParserTestCase):
-    """Tests the an optional action that is required"""
-
-    argument_signatures = [
-        Sig('-x', type=int, required=True),
-    ]
-    failures = ['a', '']
-    successes = [
-        ('-x 1', NS(x=1)),
-        ('-x42', NS(x=42)),
-    ]
-
-
-class TestOptionalsActionStore(ParserTestCase):
-    """Tests the store action for an Optional"""
-
-    argument_signatures = [Sig('-x', action='store')]
-    failures = ['a', 'a -x']
-    successes = [
-        ('', NS(x=None)),
-        ('-xfoo', NS(x='foo')),
-    ]
-
-
-class TestOptionalsActionStoreConst(ParserTestCase):
-    """Tests the store_const action for an Optional"""
-
-    argument_signatures = [Sig('-y', action='store_const', const=object)]
-    failures = ['a']
-    successes = [
-        ('', NS(y=None)),
-        ('-y', NS(y=object)),
-    ]
-
-
-class TestOptionalsActionStoreFalse(ParserTestCase):
-    """Tests the store_false action for an Optional"""
-
-    argument_signatures = [Sig('-z', action='store_false')]
-    failures = ['a', '-za', '-z a']
-    successes = [
-        ('', NS(z=True)),
-        ('-z', NS(z=False)),
-    ]
-
-
-class TestOptionalsActionStoreTrue(ParserTestCase):
-    """Tests the store_true action for an Optional"""
-
-    argument_signatures = [Sig('--apple', action='store_true')]
-    failures = ['a', '--apple=b', '--apple b']
-    successes = [
-        ('', NS(apple=False)),
-        ('--apple', NS(apple=True)),
-    ]
-
-
-class TestOptionalsActionAppend(ParserTestCase):
-    """Tests the append action for an Optional"""
-
-    argument_signatures = [Sig('--baz', action='append')]
-    failures = ['a', '--baz', 'a --baz', '--baz a b']
-    successes = [
-        ('', NS(baz=None)),
-        ('--baz a', NS(baz=['a'])),
-        ('--baz a --baz b', NS(baz=['a', 'b'])),
-    ]
-
-
-class TestOptionalsActionAppendWithDefault(ParserTestCase):
-    """Tests the append action for an Optional"""
-
-    argument_signatures = [Sig('--baz', action='append', default=['X'])]
-    failures = ['a', '--baz', 'a --baz', '--baz a b']
-    successes = [
-        ('', NS(baz=['X'])),
-        ('--baz a', NS(baz=['X', 'a'])),
-        ('--baz a --baz b', NS(baz=['X', 'a', 'b'])),
-    ]
-
-
-class TestOptionalsActionAppendConst(ParserTestCase):
-    """Tests the append_const action for an Optional"""
-
-    argument_signatures = [
-        Sig('-b', action='append_const', const=Exception),
-        Sig('-c', action='append', dest='b'),
-    ]
-    failures = ['a', '-c', 'a -c', '-bx', '-b x']
-    successes = [
-        ('', NS(b=None)),
-        ('-b', NS(b=[Exception])),
-        ('-b -cx -b -cyz', NS(b=[Exception, 'x', Exception, 'yz'])),
-    ]
-
-
-class TestOptionalsActionAppendConstWithDefault(ParserTestCase):
-    """Tests the append_const action for an Optional"""
-
-    argument_signatures = [
-        Sig('-b', action='append_const', const=Exception, default=['X']),
-        Sig('-c', action='append', dest='b'),
-    ]
-    failures = ['a', '-c', 'a -c', '-bx', '-b x']
-    successes = [
-        ('', NS(b=['X'])),
-        ('-b', NS(b=['X', Exception])),
-        ('-b -cx -b -cyz', NS(b=['X', Exception, 'x', Exception, 'yz'])),
-    ]
-
-
-class TestOptionalsActionCount(ParserTestCase):
-    """Tests the count action for an Optional"""
-
-    argument_signatures = [Sig('-x', action='count')]
-    failures = ['a', '-x a', '-x b', '-x a -x b']
-    successes = [
-        ('', NS(x=None)),
-        ('-x', NS(x=1)),
-    ]
-
-
-# ================
-# Positional tests
-# ================
-
-class TestPositionalsNargsNone(ParserTestCase):
-    """Test a Positional that doesn't specify nargs"""
-
-    argument_signatures = [Sig('foo')]
-    failures = ['', '-x', 'a b']
-    successes = [
-        ('a', NS(foo='a')),
-    ]
-
-
-class TestPositionalsNargs1(ParserTestCase):
-    """Test a Positional that specifies an nargs of 1"""
-
-    argument_signatures = [Sig('foo', nargs=1)]
-    failures = ['', '-x', 'a b']
-    successes = [
-        ('a', NS(foo=['a'])),
-    ]
-
-
-class TestPositionalsNargs2(ParserTestCase):
-    """Test a Positional that specifies an nargs of 2"""
-
-    argument_signatures = [Sig('foo', nargs=2)]
-    failures = ['', 'a', '-x', 'a b c']
-    successes = [
-        ('a b', NS(foo=['a', 'b'])),
-    ]
-
-
-class TestPositionalsNargsZeroOrMore(ParserTestCase):
-    """Test a Positional that specifies unlimited nargs"""
-
-    argument_signatures = [Sig('foo', nargs='*')]
-    failures = ['-x']
-    successes = [
-        ('', NS(foo=[])),
-        ('a', NS(foo=['a'])),
-        ('a b', NS(foo=['a', 'b'])),
-    ]
-
-
-class TestPositionalsNargsZeroOrMoreDefault(ParserTestCase):
-    """Test a Positional that specifies unlimited nargs and a default"""
-
-    argument_signatures = [Sig('foo', nargs='*', default='bar')]
-    failures = ['-x']
-    successes = [
-        ('', NS(foo='bar')),
-        ('a', NS(foo=['a'])),
-        ('a b', NS(foo=['a', 'b'])),
-    ]
-
-
-class TestPositionalsNargsOneOrMore(ParserTestCase):
-    """Test a Positional that specifies one or more nargs"""
-
-    argument_signatures = [Sig('foo', nargs='+')]
-    failures = ['', '-x']
-    successes = [
-        ('a', NS(foo=['a'])),
-        ('a b', NS(foo=['a', 'b'])),
-    ]
-
-
-class TestPositionalsNargsOptional(ParserTestCase):
-    """Tests an Optional Positional"""
-
-    argument_signatures = [Sig('foo', nargs='?')]
-    failures = ['-x', 'a b']
-    successes = [
-        ('', NS(foo=None)),
-        ('a', NS(foo='a')),
-    ]
-
-
-class TestPositionalsNargsOptionalDefault(ParserTestCase):
-    """Tests an Optional Positional with a default value"""
-
-    argument_signatures = [Sig('foo', nargs='?', default=42)]
-    failures = ['-x', 'a b']
-    successes = [
-        ('', NS(foo=42)),
-        ('a', NS(foo='a')),
-    ]
-
-
-class TestPositionalsNargsOptionalConvertedDefault(ParserTestCase):
-    """Tests an Optional Positional with a default value
-    that needs to be converted to the appropriate type.
-    """
-
-    argument_signatures = [
-        Sig('foo', nargs='?', type=int, default='42'),
-    ]
-    failures = ['-x', 'a b', '1 2']
-    successes = [
-        ('', NS(foo=42)),
-        ('1', NS(foo=1)),
-    ]
-
-
-class TestPositionalsNargsNoneNone(ParserTestCase):
-    """Test two Positionals that don't specify nargs"""
-
-    argument_signatures = [Sig('foo'), Sig('bar')]
-    failures = ['', '-x', 'a', 'a b c']
-    successes = [
-        ('a b', NS(foo='a', bar='b')),
-    ]
-
-
-class TestPositionalsNargsNone1(ParserTestCase):
-    """Test a Positional with no nargs followed by one with 1"""
-
-    argument_signatures = [Sig('foo'), Sig('bar', nargs=1)]
-    failures = ['', '--foo', 'a', 'a b c']
-    successes = [
-        ('a b', NS(foo='a', bar=['b'])),
-    ]
-
-
-class TestPositionalsNargs2None(ParserTestCase):
-    """Test a Positional with 2 nargs followed by one with none"""
-
-    argument_signatures = [Sig('foo', nargs=2), Sig('bar')]
-    failures = ['', '--foo', 'a', 'a b', 'a b c d']
-    successes = [
-        ('a b c', NS(foo=['a', 'b'], bar='c')),
-    ]
-
-
-class TestPositionalsNargsNoneZeroOrMore(ParserTestCase):
-    """Test a Positional with no nargs followed by one with unlimited"""
-
-    argument_signatures = [Sig('foo'), Sig('bar', nargs='*')]
-    failures = ['', '--foo']
-    successes = [
-        ('a', NS(foo='a', bar=[])),
-        ('a b', NS(foo='a', bar=['b'])),
-        ('a b c', NS(foo='a', bar=['b', 'c'])),
-    ]
-
-
-class TestPositionalsNargsNoneOneOrMore(ParserTestCase):
-    """Test a Positional with no nargs followed by one with one or more"""
-
-    argument_signatures = [Sig('foo'), Sig('bar', nargs='+')]
-    failures = ['', '--foo', 'a']
-    successes = [
-        ('a b', NS(foo='a', bar=['b'])),
-        ('a b c', NS(foo='a', bar=['b', 'c'])),
-    ]
-
-
-class TestPositionalsNargsNoneOptional(ParserTestCase):
-    """Test a Positional with no nargs followed by one with an Optional"""
-
-    argument_signatures = [Sig('foo'), Sig('bar', nargs='?')]
-    failures = ['', '--foo', 'a b c']
-    successes = [
-        ('a', NS(foo='a', bar=None)),
-        ('a b', NS(foo='a', bar='b')),
-    ]
-
-
-class TestPositionalsNargsZeroOrMoreNone(ParserTestCase):
-    """Test a Positional with unlimited nargs followed by one with none"""
-
-    argument_signatures = [Sig('foo', nargs='*'), Sig('bar')]
-    failures = ['', '--foo']
-    successes = [
-        ('a', NS(foo=[], bar='a')),
-        ('a b', NS(foo=['a'], bar='b')),
-        ('a b c', NS(foo=['a', 'b'], bar='c')),
-    ]
-
-
-class TestPositionalsNargsOneOrMoreNone(ParserTestCase):
-    """Test a Positional with one or more nargs followed by one with none"""
-
-    argument_signatures = [Sig('foo', nargs='+'), Sig('bar')]
-    failures = ['', '--foo', 'a']
-    successes = [
-        ('a b', NS(foo=['a'], bar='b')),
-        ('a b c', NS(foo=['a', 'b'], bar='c')),
-    ]
-
-
-class TestPositionalsNargsOptionalNone(ParserTestCase):
-    """Test a Positional with an Optional nargs followed by one with none"""
-
-    argument_signatures = [Sig('foo', nargs='?', default=42), Sig('bar')]
-    failures = ['', '--foo', 'a b c']
-    successes = [
-        ('a', NS(foo=42, bar='a')),
-        ('a b', NS(foo='a', bar='b')),
-    ]
-
-
-class TestPositionalsNargs2ZeroOrMore(ParserTestCase):
-    """Test a Positional with 2 nargs followed by one with unlimited"""
-
-    argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='*')]
-    failures = ['', '--foo', 'a']
-    successes = [
-        ('a b', NS(foo=['a', 'b'], bar=[])),
-        ('a b c', NS(foo=['a', 'b'], bar=['c'])),
-    ]
-
-
-class TestPositionalsNargs2OneOrMore(ParserTestCase):
-    """Test a Positional with 2 nargs followed by one with one or more"""
-
-    argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='+')]
-    failures = ['', '--foo', 'a', 'a b']
-    successes = [
-        ('a b c', NS(foo=['a', 'b'], bar=['c'])),
-    ]
-
-
-class TestPositionalsNargs2Optional(ParserTestCase):
-    """Test a Positional with 2 nargs followed by one optional"""
-
-    argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='?')]
-    failures = ['', '--foo', 'a', 'a b c d']
-    successes = [
-        ('a b', NS(foo=['a', 'b'], bar=None)),
-        ('a b c', NS(foo=['a', 'b'], bar='c')),
-    ]
-
-
-class TestPositionalsNargsZeroOrMore1(ParserTestCase):
-    """Test a Positional with unlimited nargs followed by one with 1"""
-
-    argument_signatures = [Sig('foo', nargs='*'), Sig('bar', nargs=1)]
-    failures = ['', '--foo', ]
-    successes = [
-        ('a', NS(foo=[], bar=['a'])),
-        ('a b', NS(foo=['a'], bar=['b'])),
-        ('a b c', NS(foo=['a', 'b'], bar=['c'])),
-    ]
-
-
-class TestPositionalsNargsOneOrMore1(ParserTestCase):
-    """Test a Positional with one or more nargs followed by one with 1"""
-
-    argument_signatures = [Sig('foo', nargs='+'), Sig('bar', nargs=1)]
-    failures = ['', '--foo', 'a']
-    successes = [
-        ('a b', NS(foo=['a'], bar=['b'])),
-        ('a b c', NS(foo=['a', 'b'], bar=['c'])),
-    ]
-
-
-class TestPositionalsNargsOptional1(ParserTestCase):
-    """Test a Positional with an Optional nargs followed by one with 1"""
-
-    argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs=1)]
-    failures = ['', '--foo', 'a b c']
-    successes = [
-        ('a', NS(foo=None, bar=['a'])),
-        ('a b', NS(foo='a', bar=['b'])),
-    ]
-
-
-class TestPositionalsNargsNoneZeroOrMore1(ParserTestCase):
-    """Test three Positionals: no nargs, unlimited nargs and 1 nargs"""
-
-    argument_signatures = [
-        Sig('foo'),
-        Sig('bar', nargs='*'),
-        Sig('baz', nargs=1),
-    ]
-    failures = ['', '--foo', 'a']
-    successes = [
-        ('a b', NS(foo='a', bar=[], baz=['b'])),
-        ('a b c', NS(foo='a', bar=['b'], baz=['c'])),
-    ]
-
-
-class TestPositionalsNargsNoneOneOrMore1(ParserTestCase):
-    """Test three Positionals: no nargs, one or more nargs and 1 nargs"""
-
-    argument_signatures = [
-        Sig('foo'),
-        Sig('bar', nargs='+'),
-        Sig('baz', nargs=1),
-    ]
-    failures = ['', '--foo', 'a', 'b']
-    successes = [
-        ('a b c', NS(foo='a', bar=['b'], baz=['c'])),
-        ('a b c d', NS(foo='a', bar=['b', 'c'], baz=['d'])),
-    ]
-
-
-class TestPositionalsNargsNoneOptional1(ParserTestCase):
-    """Test three Positionals: no nargs, optional narg and 1 nargs"""
-
-    argument_signatures = [
-        Sig('foo'),
-        Sig('bar', nargs='?', default=0.625),
-        Sig('baz', nargs=1),
-    ]
-    failures = ['', '--foo', 'a']
-    successes = [
-        ('a b', NS(foo='a', bar=0.625, baz=['b'])),
-        ('a b c', NS(foo='a', bar='b', baz=['c'])),
-    ]
-
-
-class TestPositionalsNargsOptionalOptional(ParserTestCase):
-    """Test two optional nargs"""
-
-    argument_signatures = [
-        Sig('foo', nargs='?'),
-        Sig('bar', nargs='?', default=42),
-    ]
-    failures = ['--foo', 'a b c']
-    successes = [
-        ('', NS(foo=None, bar=42)),
-        ('a', NS(foo='a', bar=42)),
-        ('a b', NS(foo='a', bar='b')),
-    ]
-
-
-class TestPositionalsNargsOptionalZeroOrMore(ParserTestCase):
-    """Test an Optional narg followed by unlimited nargs"""
-
-    argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs='*')]
-    failures = ['--foo']
-    successes = [
-        ('', NS(foo=None, bar=[])),
-        ('a', NS(foo='a', bar=[])),
-        ('a b', NS(foo='a', bar=['b'])),
-        ('a b c', NS(foo='a', bar=['b', 'c'])),
-    ]
-
-
-class TestPositionalsNargsOptionalOneOrMore(ParserTestCase):
-    """Test an Optional narg followed by one or more nargs"""
-
-    argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs='+')]
-    failures = ['', '--foo']
-    successes = [
-        ('a', NS(foo=None, bar=['a'])),
-        ('a b', NS(foo='a', bar=['b'])),
-        ('a b c', NS(foo='a', bar=['b', 'c'])),
-    ]
-
-
-class TestPositionalsChoicesString(ParserTestCase):
-    """Test a set of single-character choices"""
-
-    argument_signatures = [Sig('spam', choices=set('abcdefg'))]
-    failures = ['', '--foo', 'h', '42', 'ef']
-    successes = [
-        ('a', NS(spam='a')),
-        ('g', NS(spam='g')),
-    ]
-
-
-class TestPositionalsChoicesInt(ParserTestCase):
-    """Test a set of integer choices"""
-
-    argument_signatures = [Sig('spam', type=int, choices=range(20))]
-    failures = ['', '--foo', 'h', '42', 'ef']
-    successes = [
-        ('4', NS(spam=4)),
-        ('15', NS(spam=15)),
-    ]
-
-
-class TestPositionalsActionAppend(ParserTestCase):
-    """Test the 'append' action"""
-
-    argument_signatures = [
-        Sig('spam', action='append'),
-        Sig('spam', action='append', nargs=2),
-    ]
-    failures = ['', '--foo', 'a', 'a b', 'a b c d']
-    successes = [
-        ('a b c', NS(spam=['a', ['b', 'c']])),
-    ]
-
-# ========================================
-# Combined optionals and positionals tests
-# ========================================
-
-class TestOptionalsNumericAndPositionals(ParserTestCase):
-    """Tests negative number args when numeric options are present"""
-
-    argument_signatures = [
-        Sig('x', nargs='?'),
-        Sig('-4', dest='y', action='store_true'),
-    ]
-    failures = ['-2', '-315']
-    successes = [
-        ('', NS(x=None, y=False)),
-        ('a', NS(x='a', y=False)),
-        ('-4', NS(x=None, y=True)),
-        ('-4 a', NS(x='a', y=True)),
-    ]
-
-
-class TestOptionalsAlmostNumericAndPositionals(ParserTestCase):
-    """Tests negative number args when almost numeric options are present"""
-
-    argument_signatures = [
-        Sig('x', nargs='?'),
-        Sig('-k4', dest='y', action='store_true'),
-    ]
-    failures = ['-k3']
-    successes = [
-        ('', NS(x=None, y=False)),
-        ('-2', NS(x='-2', y=False)),
-        ('a', NS(x='a', y=False)),
-        ('-k4', NS(x=None, y=True)),
-        ('-k4 a', NS(x='a', y=True)),
-    ]
-
-
-class TestEmptyAndSpaceContainingArguments(ParserTestCase):
-
-    argument_signatures = [
-        Sig('x', nargs='?'),
-        Sig('-y', '--yyy', dest='y'),
-    ]
-    failures = ['-y']
-    successes = [
-        ([''], NS(x='', y=None)),
-        (['a badger'], NS(x='a badger', y=None)),
-        (['-a badger'], NS(x='-a badger', y=None)),
-        (['-y', ''], NS(x=None, y='')),
-        (['-y', 'a badger'], NS(x=None, y='a badger')),
-        (['-y', '-a badger'], NS(x=None, y='-a badger')),
-        (['--yyy=a badger'], NS(x=None, y='a badger')),
-        (['--yyy=-a badger'], NS(x=None, y='-a badger')),
-    ]
-
-
-class TestPrefixCharacterOnlyArguments(ParserTestCase):
-
-    parser_signature = Sig(prefix_chars='-+')
-    argument_signatures = [
-        Sig('-', dest='x', nargs='?', const='badger'),
-        Sig('+', dest='y', type=int, default=42),
-        Sig('-+-', dest='z', action='store_true'),
-    ]
-    failures = ['-y', '+ -']
-    successes = [
-        ('', NS(x=None, y=42, z=False)),
-        ('-', NS(x='badger', y=42, z=False)),
-        ('- X', NS(x='X', y=42, z=False)),
-        ('+ -3', NS(x=None, y=-3, z=False)),
-        ('-+-', NS(x=None, y=42, z=True)),
-        ('- ===', NS(x='===', y=42, z=False)),
-    ]
-
-
-class TestNargsZeroOrMore(ParserTestCase):
-    """Tests specifying an args for an Optional that accepts zero or more"""
-
-    argument_signatures = [Sig('-x', nargs='*'), Sig('y', nargs='*')]
-    failures = []
-    successes = [
-        ('', NS(x=None, y=[])),
-        ('-x', NS(x=[], y=[])),
-        ('-x a', NS(x=['a'], y=[])),
-        ('-x a -- b', NS(x=['a'], y=['b'])),
-        ('a', NS(x=None, y=['a'])),
-        ('a -x', NS(x=[], y=['a'])),
-        ('a -x b', NS(x=['b'], y=['a'])),
-    ]
-
-
-class TestNargsRemainder(ParserTestCase):
-    """Tests specifying a positional with nargs=REMAINDER"""
-
-    argument_signatures = [Sig('x'), Sig('y', nargs='...'), Sig('-z')]
-    failures = ['', '-z', '-z Z']
-    successes = [
-        ('X', NS(x='X', y=[], z=None)),
-        ('-z Z X', NS(x='X', y=[], z='Z')),
-        ('X A B -z Z', NS(x='X', y=['A', 'B', '-z', 'Z'], z=None)),
-        ('X Y --foo', NS(x='X', y=['Y', '--foo'], z=None)),
-    ]
-
-
-class TestOptionLike(ParserTestCase):
-    """Tests options that may or may not be arguments"""
-
-    argument_signatures = [
-        Sig('-x', type=float),
-        Sig('-3', type=float, dest='y'),
-        Sig('z', nargs='*'),
-    ]
-    failures = ['-x', '-y2.5', '-xa', '-x -a',
-                '-x -3', '-x -3.5', '-3 -3.5',
-                '-x -2.5', '-x -2.5 a', '-3 -.5',
-                'a x -1', '-x -1 a', '-3 -1 a']
-    successes = [
-        ('', NS(x=None, y=None, z=[])),
-        ('-x 2.5', NS(x=2.5, y=None, z=[])),
-        ('-x 2.5 a', NS(x=2.5, y=None, z=['a'])),
-        ('-3.5', NS(x=None, y=0.5, z=[])),
-        ('-3-.5', NS(x=None, y=-0.5, z=[])),
-        ('-3 .5', NS(x=None, y=0.5, z=[])),
-        ('a -3.5', NS(x=None, y=0.5, z=['a'])),
-        ('a', NS(x=None, y=None, z=['a'])),
-        ('a -x 1', NS(x=1.0, y=None, z=['a'])),
-        ('-x 1 a', NS(x=1.0, y=None, z=['a'])),
-        ('-3 1 a', NS(x=None, y=1.0, z=['a'])),
-    ]
-
-
-class TestDefaultSuppress(ParserTestCase):
-    """Test actions with suppressed defaults"""
-
-    argument_signatures = [
-        Sig('foo', nargs='?', default=argparse.SUPPRESS),
-        Sig('bar', nargs='*', default=argparse.SUPPRESS),
-        Sig('--baz', action='store_true', default=argparse.SUPPRESS),
-    ]
-    failures = ['-x']
-    successes = [
-        ('', NS()),
-        ('a', NS(foo='a')),
-        ('a b', NS(foo='a', bar=['b'])),
-        ('--baz', NS(baz=True)),
-        ('a --baz', NS(foo='a', baz=True)),
-        ('--baz a b', NS(foo='a', bar=['b'], baz=True)),
-    ]
-
-
-class TestParserDefaultSuppress(ParserTestCase):
-    """Test actions with a parser-level default of SUPPRESS"""
-
-    parser_signature = Sig(argument_default=argparse.SUPPRESS)
-    argument_signatures = [
-        Sig('foo', nargs='?'),
-        Sig('bar', nargs='*'),
-        Sig('--baz', action='store_true'),
-    ]
-    failures = ['-x']
-    successes = [
-        ('', NS()),
-        ('a', NS(foo='a')),
-        ('a b', NS(foo='a', bar=['b'])),
-        ('--baz', NS(baz=True)),
-        ('a --baz', NS(foo='a', baz=True)),
-        ('--baz a b', NS(foo='a', bar=['b'], baz=True)),
-    ]
-
-
-class TestParserDefault42(ParserTestCase):
-    """Test actions with a parser-level default of 42"""
-
-    parser_signature = Sig(argument_default=42, version='1.0')
-    argument_signatures = [
-        Sig('foo', nargs='?'),
-        Sig('bar', nargs='*'),
-        Sig('--baz', action='store_true'),
-    ]
-    failures = ['-x']
-    successes = [
-        ('', NS(foo=42, bar=42, baz=42)),
-        ('a', NS(foo='a', bar=42, baz=42)),
-        ('a b', NS(foo='a', bar=['b'], baz=42)),
-        ('--baz', NS(foo=42, bar=42, baz=True)),
-        ('a --baz', NS(foo='a', bar=42, baz=True)),
-        ('--baz a b', NS(foo='a', bar=['b'], baz=True)),
-    ]
-
-
-class TestArgumentsFromFile(TempDirMixin, ParserTestCase):
-    """Test reading arguments from a file"""
-
-    def setUp(self):
-        super(TestArgumentsFromFile, self).setUp()
-        file_texts = [
-            ('hello', 'hello world!\n'),
-            ('recursive', '-a\n'
-                          'A\n'
-                          '@hello'),
-            ('invalid', '@no-such-path\n'),
-        ]
-        for path, text in file_texts:
-            file = open(path, 'w')
-            file.write(text)
-            file.close()
-
-    parser_signature = Sig(fromfile_prefix_chars='@')
-    argument_signatures = [
-        Sig('-a'),
-        Sig('x'),
-        Sig('y', nargs='+'),
-    ]
-    failures = ['', '-b', 'X', '@invalid', '@missing']
-    successes = [
-        ('X Y', NS(a=None, x='X', y=['Y'])),
-        ('X -a A Y Z', NS(a='A', x='X', y=['Y', 'Z'])),
-        ('@hello X', NS(a=None, x='hello world!', y=['X'])),
-        ('X @hello', NS(a=None, x='X', y=['hello world!'])),
-        ('-a B @recursive Y Z', NS(a='A', x='hello world!', y=['Y', 'Z'])),
-        ('X @recursive Z -a B', NS(a='B', x='X', y=['hello world!', 'Z'])),
-    ]
-
-
-class TestArgumentsFromFileConverter(TempDirMixin, ParserTestCase):
-    """Test reading arguments from a file"""
-
-    def setUp(self):
-        super(TestArgumentsFromFileConverter, self).setUp()
-        file_texts = [
-            ('hello', 'hello world!\n'),
-        ]
-        for path, text in file_texts:
-            file = open(path, 'w')
-            file.write(text)
-            file.close()
-
-    class FromFileConverterArgumentParser(ErrorRaisingArgumentParser):
-
-        def convert_arg_line_to_args(self, arg_line):
-            for arg in arg_line.split():
-                if not arg.strip():
-                    continue
-                yield arg
-    parser_class = FromFileConverterArgumentParser
-    parser_signature = Sig(fromfile_prefix_chars='@')
-    argument_signatures = [
-        Sig('y', nargs='+'),
-    ]
-    failures = []
-    successes = [
-        ('@hello X', NS(y=['hello', 'world!', 'X'])),
-    ]
-
-
-# =====================
-# Type conversion tests
-# =====================
-
-class TestFileTypeRepr(TestCase):
-
-    def test_r(self):
-        type = argparse.FileType('r')
-        self.assertEqual("FileType('r')", repr(type))
-
-    def test_wb_1(self):
-        type = argparse.FileType('wb', 1)
-        self.assertEqual("FileType('wb', 1)", repr(type))
-
-
-class RFile(object):
-    seen = {}
-
-    def __init__(self, name):
-        self.name = name
-
-    __hash__ = None
-
-    def __eq__(self, other):
-        if other in self.seen:
-            text = self.seen[other]
-        else:
-            text = self.seen[other] = other.read()
-            other.close()
-        if not isinstance(text, str):
-            text = text.decode('ascii')
-        return self.name == other.name == text
-
-
-class TestFileTypeR(TempDirMixin, ParserTestCase):
-    """Test the FileType option/argument type for reading files"""
-
-    def setUp(self):
-        super(TestFileTypeR, self).setUp()
-        for file_name in ['foo', 'bar']:
-            file = open(os.path.join(self.temp_dir, file_name), 'w')
-            file.write(file_name)
-            file.close()
-        self.create_readonly_file('readonly')
-
-    argument_signatures = [
-        Sig('-x', type=argparse.FileType()),
-        Sig('spam', type=argparse.FileType('r')),
-    ]
-    failures = ['-x', '-x bar', 'non-existent-file.txt']
-    successes = [
-        ('foo', NS(x=None, spam=RFile('foo'))),
-        ('-x foo bar', NS(x=RFile('foo'), spam=RFile('bar'))),
-        ('bar -x foo', NS(x=RFile('foo'), spam=RFile('bar'))),
-        ('-x - -', NS(x=sys.stdin, spam=sys.stdin)),
-        ('readonly', NS(x=None, spam=RFile('readonly'))),
-    ]
-
-
-class TestFileTypeRB(TempDirMixin, ParserTestCase):
-    """Test the FileType option/argument type for reading files"""
-
-    def setUp(self):
-        super(TestFileTypeRB, self).setUp()
-        for file_name in ['foo', 'bar']:
-            file = open(os.path.join(self.temp_dir, file_name), 'w')
-            file.write(file_name)
-            file.close()
-
-    argument_signatures = [
-        Sig('-x', type=argparse.FileType('rb')),
-        Sig('spam', type=argparse.FileType('rb')),
-    ]
-    failures = ['-x', '-x bar']
-    successes = [
-        ('foo', NS(x=None, spam=RFile('foo'))),
-        ('-x foo bar', NS(x=RFile('foo'), spam=RFile('bar'))),
-        ('bar -x foo', NS(x=RFile('foo'), spam=RFile('bar'))),
-        ('-x - -', NS(x=sys.stdin, spam=sys.stdin)),
-    ]
-
-
-class WFile(object):
-    seen = set()
-
-    def __init__(self, name):
-        self.name = name
-
-    __hash__ = None
-
-    def __eq__(self, other):
-        if other not in self.seen:
-            text = 'Check that file is writable.'
-            if 'b' in other.mode:
-                text = text.encode('ascii')
-            other.write(text)
-            other.close()
-            self.seen.add(other)
-        return self.name == other.name
-
-
-class TestFileTypeW(TempDirMixin, ParserTestCase):
-    """Test the FileType option/argument type for writing files"""
-
-    def setUp(self):
-        super(TestFileTypeW, self).setUp()
-        self.create_readonly_file('readonly')
-
-    argument_signatures = [
-        Sig('-x', type=argparse.FileType('w')),
-        Sig('spam', type=argparse.FileType('w')),
-    ]
-    failures = ['-x', '-x bar']
-    failures = ['-x', '-x bar', 'readonly']
-    successes = [
-        ('foo', NS(x=None, spam=WFile('foo'))),
-        ('-x foo bar', NS(x=WFile('foo'), spam=WFile('bar'))),
-        ('bar -x foo', NS(x=WFile('foo'), spam=WFile('bar'))),
-        ('-x - -', NS(x=sys.stdout, spam=sys.stdout)),
-    ]
-
-
-class TestFileTypeWB(TempDirMixin, ParserTestCase):
-
-    argument_signatures = [
-        Sig('-x', type=argparse.FileType('wb')),
-        Sig('spam', type=argparse.FileType('wb')),
-    ]
-    failures = ['-x', '-x bar']
-    successes = [
-        ('foo', NS(x=None, spam=WFile('foo'))),
-        ('-x foo bar', NS(x=WFile('foo'), spam=WFile('bar'))),
-        ('bar -x foo', NS(x=WFile('foo'), spam=WFile('bar'))),
-        ('-x - -', NS(x=sys.stdout, spam=sys.stdout)),
-    ]
-
-
-class TestTypeCallable(ParserTestCase):
-    """Test some callables as option/argument types"""
-
-    argument_signatures = [
-        Sig('--eggs', type=complex),
-        Sig('spam', type=float),
-    ]
-    failures = ['a', '42j', '--eggs a', '--eggs 2i']
-    successes = [
-        ('--eggs=42 42', NS(eggs=42, spam=42.0)),
-        ('--eggs 2j -- -1.5', NS(eggs=2j, spam=-1.5)),
-        ('1024.675', NS(eggs=None, spam=1024.675)),
-    ]
-
-
-class TestTypeUserDefined(ParserTestCase):
-    """Test a user-defined option/argument type"""
-
-    class MyType(TestCase):
-
-        def __init__(self, value):
-            self.value = value
-
-        __hash__ = None
-
-        def __eq__(self, other):
-            return (type(self), self.value) == (type(other), other.value)
-
-    argument_signatures = [
-        Sig('-x', type=MyType),
-        Sig('spam', type=MyType),
-    ]
-    failures = []
-    successes = [
-        ('a -x b', NS(x=MyType('b'), spam=MyType('a'))),
-        ('-xf g', NS(x=MyType('f'), spam=MyType('g'))),
-    ]
-
-
-class TestTypeClassicClass(ParserTestCase):
-    """Test a classic class type"""
-
-    class C:
-
-        def __init__(self, value):
-            self.value = value
-
-        __hash__ = None
-
-        def __eq__(self, other):
-            return (type(self), self.value) == (type(other), other.value)
-
-    argument_signatures = [
-        Sig('-x', type=C),
-        Sig('spam', type=C),
-    ]
-    failures = []
-    successes = [
-        ('a -x b', NS(x=C('b'), spam=C('a'))),
-        ('-xf g', NS(x=C('f'), spam=C('g'))),
-    ]
-
-
-class TestTypeRegistration(TestCase):
-    """Test a user-defined type by registering it"""
-
-    def test(self):
-
-        def get_my_type(string):
-            return 'my_type{%s}' % string
-
-        parser = argparse.ArgumentParser()
-        parser.register('type', 'my_type', get_my_type)
-        parser.add_argument('-x', type='my_type')
-        parser.add_argument('y', type='my_type')
-
-        self.assertEqual(parser.parse_args('1'.split()),
-                         NS(x=None, y='my_type{1}'))
-        self.assertEqual(parser.parse_args('-x 1 42'.split()),
-                         NS(x='my_type{1}', y='my_type{42}'))
-
-
-# ============
-# Action tests
-# ============
-
-class TestActionUserDefined(ParserTestCase):
-    """Test a user-defined option/argument action"""
-
-    class OptionalAction(argparse.Action):
-
-        def __call__(self, parser, namespace, value, option_string=None):
-            try:
-                # check destination and option string
-                assert self.dest == 'spam', 'dest: %s' % self.dest
-                assert option_string == '-s', 'flag: %s' % option_string
-                # when option is before argument, badger=2, and when
-                # option is after argument, badger=<whatever was set>
-                expected_ns = NS(spam=0.25)
-                if value in [0.125, 0.625]:
-                    expected_ns.badger = 2
-                elif value in [2.0]:
-                    expected_ns.badger = 84
-                else:
-                    raise AssertionError('value: %s' % value)
-                assert expected_ns == namespace, ('expected %s, got %s' %
-                                                  (expected_ns, namespace))
-            except AssertionError:
-                e = sys.exc_info()[1]
-                raise ArgumentParserError('opt_action failed: %s' % e)
-            setattr(namespace, 'spam', value)
-
-    class PositionalAction(argparse.Action):
-
-        def __call__(self, parser, namespace, value, option_string=None):
-            try:
-                assert option_string is None, ('option_string: %s' %
-                                               option_string)
-                # check destination
-                assert self.dest == 'badger', 'dest: %s' % self.dest
-                # when argument is before option, spam=0.25, and when
-                # option is after argument, spam=<whatever was set>
-                expected_ns = NS(badger=2)
-                if value in [42, 84]:
-                    expected_ns.spam = 0.25
-                elif value in [1]:
-                    expected_ns.spam = 0.625
-                elif value in [2]:
-                    expected_ns.spam = 0.125
-                else:
-                    raise AssertionError('value: %s' % value)
-                assert expected_ns == namespace, ('expected %s, got %s' %
-                                                  (expected_ns, namespace))
-            except AssertionError:
-                e = sys.exc_info()[1]
-                raise ArgumentParserError('arg_action failed: %s' % e)
-            setattr(namespace, 'badger', value)
-
-    argument_signatures = [
-        Sig('-s', dest='spam', action=OptionalAction,
-            type=float, default=0.25),
-        Sig('badger', action=PositionalAction,
-            type=int, nargs='?', default=2),
-    ]
-    failures = []
-    successes = [
-        ('-s0.125', NS(spam=0.125, badger=2)),
-        ('42', NS(spam=0.25, badger=42)),
-        ('-s 0.625 1', NS(spam=0.625, badger=1)),
-        ('84 -s2', NS(spam=2.0, badger=84)),
-    ]
-
-
-class TestActionRegistration(TestCase):
-    """Test a user-defined action supplied by registering it"""
-
-    class MyAction(argparse.Action):
-
-        def __call__(self, parser, namespace, values, option_string=None):
-            setattr(namespace, self.dest, 'foo[%s]' % values)
-
-    def test(self):
-
-        parser = argparse.ArgumentParser()
-        parser.register('action', 'my_action', self.MyAction)
-        parser.add_argument('badger', action='my_action')
-
-        self.assertEqual(parser.parse_args(['1']), NS(badger='foo[1]'))
-        self.assertEqual(parser.parse_args(['42']), NS(badger='foo[42]'))
-
-
-# ================
-# Subparsers tests
-# ================
-
-class TestAddSubparsers(TestCase):
-    """Test the add_subparsers method"""
-
-    def assertArgumentParserError(self, *args, **kwargs):
-        self.assertRaises(ArgumentParserError, *args, **kwargs)
-
-    def _get_parser(self, subparser_help=False, prefix_chars=None):
-        # create a parser with a subparsers argument
-        if prefix_chars:
-            parser = ErrorRaisingArgumentParser(
-                prog='PROG', description='main description', prefix_chars=prefix_chars)
-            parser.add_argument(
-                prefix_chars[0] * 2 + 'foo', action='store_true', help='foo help')
-        else:
-            parser = ErrorRaisingArgumentParser(
-                prog='PROG', description='main description')
-            parser.add_argument(
-                '--foo', action='store_true', help='foo help')
-        parser.add_argument(
-            'bar', type=float, help='bar help')
-
-        # check that only one subparsers argument can be added
-        subparsers = parser.add_subparsers(help='command help')
-        self.assertArgumentParserError(parser.add_subparsers)
-
-        # add first sub-parser
-        parser1_kwargs = dict(description='1 description')
-        if subparser_help:
-            parser1_kwargs['help'] = '1 help'
-        parser1 = subparsers.add_parser('1', **parser1_kwargs)
-        parser1.add_argument('-w', type=int, help='w help')
-        parser1.add_argument('x', choices='abc', help='x help')
-
-        # add second sub-parser
-        parser2_kwargs = dict(description='2 description')
-        if subparser_help:
-            parser2_kwargs['help'] = '2 help'
-        parser2 = subparsers.add_parser('2', **parser2_kwargs)
-        parser2.add_argument('-y', choices='123', help='y help')
-        parser2.add_argument('z', type=complex, nargs='*', help='z help')
-
-        # return the main parser
-        return parser
-
-    def setUp(self):
-        super(TestAddSubparsers, self).setUp()
-        self.parser = self._get_parser()
-        self.command_help_parser = self._get_parser(subparser_help=True)
-
-    def test_parse_args_failures(self):
-        # check some failure cases:
-        for args_str in ['', 'a', 'a a', '0.5 a', '0.5 1',
-                         '0.5 1 -y', '0.5 2 -w']:
-            args = args_str.split()
-            self.assertArgumentParserError(self.parser.parse_args, args)
-
-    def test_parse_args(self):
-        # check some non-failure cases:
-        self.assertEqual(
-            self.parser.parse_args('0.5 1 b -w 7'.split()),
-            NS(foo=False, bar=0.5, w=7, x='b'),
-        )
-        self.assertEqual(
-            self.parser.parse_args('0.25 --foo 2 -y 2 3j -- -1j'.split()),
-            NS(foo=True, bar=0.25, y='2', z=[3j, -1j]),
-        )
-        self.assertEqual(
-            self.parser.parse_args('--foo 0.125 1 c'.split()),
-            NS(foo=True, bar=0.125, w=None, x='c'),
-        )
-
-    def test_parse_known_args(self):
-        self.assertEqual(
-            self.parser.parse_known_args('0.5 1 b -w 7'.split()),
-            (NS(foo=False, bar=0.5, w=7, x='b'), []),
-        )
-        self.assertEqual(
-            self.parser.parse_known_args('0.5 -p 1 b -w 7'.split()),
-            (NS(foo=False, bar=0.5, w=7, x='b'), ['-p']),
-        )
-        self.assertEqual(
-            self.parser.parse_known_args('0.5 1 b -w 7 -p'.split()),
-            (NS(foo=False, bar=0.5, w=7, x='b'), ['-p']),
-        )
-        self.assertEqual(
-            self.parser.parse_known_args('0.5 1 b -q -rs -w 7'.split()),
-            (NS(foo=False, bar=0.5, w=7, x='b'), ['-q', '-rs']),
-        )
-        self.assertEqual(
-            self.parser.parse_known_args('0.5 -W 1 b -X Y -w 7 Z'.split()),
-            (NS(foo=False, bar=0.5, w=7, x='b'), ['-W', '-X', 'Y', 'Z']),
-        )
-
-    def test_dest(self):
-        parser = ErrorRaisingArgumentParser()
-        parser.add_argument('--foo', action='store_true')
-        subparsers = parser.add_subparsers(dest='bar')
-        parser1 = subparsers.add_parser('1')
-        parser1.add_argument('baz')
-        self.assertEqual(NS(foo=False, bar='1', baz='2'),
-                         parser.parse_args('1 2'.split()))
-
-    def test_help(self):
-        self.assertEqual(self.parser.format_usage(),
-                         'usage: PROG [-h] [--foo] bar {1,2} ...\n')
-        self.assertEqual(self.parser.format_help(), textwrap.dedent('''\
-            usage: PROG [-h] [--foo] bar {1,2} ...
-
-            main description
-
-            positional arguments:
-              bar         bar help
-              {1,2}       command help
-
-            optional arguments:
-              -h, --help  show this help message and exit
-              --foo       foo help
-            '''))
-
-    def test_help_extra_prefix_chars(self):
-        # Make sure - is still used for help if it is a non-first prefix char
-        parser = self._get_parser(prefix_chars='+:-')
-        self.assertEqual(parser.format_usage(),
-                         'usage: PROG [-h] [++foo] bar {1,2} ...\n')
-        self.assertEqual(parser.format_help(), textwrap.dedent('''\
-            usage: PROG [-h] [++foo] bar {1,2} ...
-
-            main description
-
-            positional arguments:
-              bar         bar help
-              {1,2}       command help
-
-            optional arguments:
-              -h, --help  show this help message and exit
-              ++foo       foo help
-            '''))
-
-
-    def test_help_alternate_prefix_chars(self):
-        parser = self._get_parser(prefix_chars='+:/')
-        self.assertEqual(parser.format_usage(),
-                         'usage: PROG [+h] [++foo] bar {1,2} ...\n')
-        self.assertEqual(parser.format_help(), textwrap.dedent('''\
-            usage: PROG [+h] [++foo] bar {1,2} ...
-
-            main description
-
-            positional arguments:
-              bar         bar help
-              {1,2}       command help
-
-            optional arguments:
-              +h, ++help  show this help message and exit
-              ++foo       foo help
-            '''))
-
-    def test_parser_command_help(self):
-        self.assertEqual(self.command_help_parser.format_usage(),
-                         'usage: PROG [-h] [--foo] bar {1,2} ...\n')
-        self.assertEqual(self.command_help_parser.format_help(),
-                         textwrap.dedent('''\
-            usage: PROG [-h] [--foo] bar {1,2} ...
-
-            main description
-
-            positional arguments:
-              bar         bar help
-              {1,2}       command help
-                1         1 help
-                2         2 help
-
-            optional arguments:
-              -h, --help  show this help message and exit
-              --foo       foo help
-            '''))
-
-    def test_subparser_title_help(self):
-        parser = ErrorRaisingArgumentParser(prog='PROG',
-                                            description='main description')
-        parser.add_argument('--foo', action='store_true', help='foo help')
-        parser.add_argument('bar', help='bar help')
-        subparsers = parser.add_subparsers(title='subcommands',
-                                           description='command help',
-                                           help='additional text')
-        parser1 = subparsers.add_parser('1')
-        parser2 = subparsers.add_parser('2')
-        self.assertEqual(parser.format_usage(),
-                         'usage: PROG [-h] [--foo] bar {1,2} ...\n')
-        self.assertEqual(parser.format_help(), textwrap.dedent('''\
-            usage: PROG [-h] [--foo] bar {1,2} ...
-
-            main description
-
-            positional arguments:
-              bar         bar help
-
-            optional arguments:
-              -h, --help  show this help message and exit
-              --foo       foo help
-
-            subcommands:
-              command help
-
-              {1,2}       additional text
-            '''))
-
-    def _test_subparser_help(self, args_str, expected_help):
-        try:
-            self.parser.parse_args(args_str.split())
-        except ArgumentParserError:
-            err = sys.exc_info()[1]
-            if err.stdout != expected_help:
-                print(repr(expected_help))
-                print(repr(err.stdout))
-            self.assertEqual(err.stdout, expected_help)
-
-    def test_subparser1_help(self):
-        self._test_subparser_help('5.0 1 -h', textwrap.dedent('''\
-            usage: PROG bar 1 [-h] [-w W] {a,b,c}
-
-            1 description
-
-            positional arguments:
-              {a,b,c}     x help
-
-            optional arguments:
-              -h, --help  show this help message and exit
-              -w W        w help
-            '''))
-
-    def test_subparser2_help(self):
-        self._test_subparser_help('5.0 2 -h', textwrap.dedent('''\
-            usage: PROG bar 2 [-h] [-y {1,2,3}] [z [z ...]]
-
-            2 description
-
-            positional arguments:
-              z           z help
-
-            optional arguments:
-              -h, --help  show this help message and exit
-              -y {1,2,3}  y help
-            '''))
-
-# ============
-# Groups tests
-# ============
-
-class TestPositionalsGroups(TestCase):
-    """Tests that order of group positionals matches construction order"""
-
-    def test_nongroup_first(self):
-        parser = ErrorRaisingArgumentParser()
-        parser.add_argument('foo')
-        group = parser.add_argument_group('g')
-        group.add_argument('bar')
-        parser.add_argument('baz')
-        expected = NS(foo='1', bar='2', baz='3')
-        result = parser.parse_args('1 2 3'.split())
-        self.assertEqual(expected, result)
-
-    def test_group_first(self):
-        parser = ErrorRaisingArgumentParser()
-        group = parser.add_argument_group('xxx')
-        group.add_argument('foo')
-        parser.add_argument('bar')
-        parser.add_argument('baz')
-        expected = NS(foo='1', bar='2', baz='3')
-        result = parser.parse_args('1 2 3'.split())
-        self.assertEqual(expected, result)
-
-    def test_interleaved_groups(self):
-        parser = ErrorRaisingArgumentParser()
-        group = parser.add_argument_group('xxx')
-        parser.add_argument('foo')
-        group.add_argument('bar')
-        parser.add_argument('baz')
-        group = parser.add_argument_group('yyy')
-        group.add_argument('frell')
-        expected = NS(foo='1', bar='2', baz='3', frell='4')
-        result = parser.parse_args('1 2 3 4'.split())
-        self.assertEqual(expected, result)
-
-# ===================
-# Parent parser tests
-# ===================
-
-class TestParentParsers(TestCase):
-    """Tests that parsers can be created with parent parsers"""
-
-    def assertArgumentParserError(self, *args, **kwargs):
-        self.assertRaises(ArgumentParserError, *args, **kwargs)
-
-    def setUp(self):
-        super(TestParentParsers, self).setUp()
-        self.wxyz_parent = ErrorRaisingArgumentParser(add_help=False)
-        self.wxyz_parent.add_argument('--w')
-        x_group = self.wxyz_parent.add_argument_group('x')
-        x_group.add_argument('-y')
-        self.wxyz_parent.add_argument('z')
-
-        self.abcd_parent = ErrorRaisingArgumentParser(add_help=False)
-        self.abcd_parent.add_argument('a')
-        self.abcd_parent.add_argument('-b')
-        c_group = self.abcd_parent.add_argument_group('c')
-        c_group.add_argument('--d')
-
-        self.w_parent = ErrorRaisingArgumentParser(add_help=False)
-        self.w_parent.add_argument('--w')
-
-        self.z_parent = ErrorRaisingArgumentParser(add_help=False)
-        self.z_parent.add_argument('z')
-
-        # parents with mutually exclusive groups
-        self.ab_mutex_parent = ErrorRaisingArgumentParser(add_help=False)
-        group = self.ab_mutex_parent.add_mutually_exclusive_group()
-        group.add_argument('-a', action='store_true')
-        group.add_argument('-b', action='store_true')
-
-        self.main_program = os.path.basename(sys.argv[0])
-
-    def test_single_parent(self):
-        parser = ErrorRaisingArgumentParser(parents=[self.wxyz_parent])
-        self.assertEqual(parser.parse_args('-y 1 2 --w 3'.split()),
-                         NS(w='3', y='1', z='2'))
-
-    def test_single_parent_mutex(self):
-        self._test_mutex_ab(self.ab_mutex_parent.parse_args)
-        parser = ErrorRaisingArgumentParser(parents=[self.ab_mutex_parent])
-        self._test_mutex_ab(parser.parse_args)
-
-    def test_single_granparent_mutex(self):
-        parents = [self.ab_mutex_parent]
-        parser = ErrorRaisingArgumentParser(add_help=False, parents=parents)
-        parser = ErrorRaisingArgumentParser(parents=[parser])
-        self._test_mutex_ab(parser.parse_args)
-
-    def _test_mutex_ab(self, parse_args):
-        self.assertEqual(parse_args([]), NS(a=False, b=False))
-        self.assertEqual(parse_args(['-a']), NS(a=True, b=False))
-        self.assertEqual(parse_args(['-b']), NS(a=False, b=True))
-        self.assertArgumentParserError(parse_args, ['-a', '-b'])
-        self.assertArgumentParserError(parse_args, ['-b', '-a'])
-        self.assertArgumentParserError(parse_args, ['-c'])
-        self.assertArgumentParserError(parse_args, ['-a', '-c'])
-        self.assertArgumentParserError(parse_args, ['-b', '-c'])
-
-    def test_multiple_parents(self):
-        parents = [self.abcd_parent, self.wxyz_parent]
-        parser = ErrorRaisingArgumentParser(parents=parents)
-        self.assertEqual(parser.parse_args('--d 1 --w 2 3 4'.split()),
-                         NS(a='3', b=None, d='1', w='2', y=None, z='4'))
-
-    def test_multiple_parents_mutex(self):
-        parents = [self.ab_mutex_parent, self.wxyz_parent]
-        parser = ErrorRaisingArgumentParser(parents=parents)
-        self.assertEqual(parser.parse_args('-a --w 2 3'.split()),
-                         NS(a=True, b=False, w='2', y=None, z='3'))
-        self.assertArgumentParserError(
-            parser.parse_args, '-a --w 2 3 -b'.split())
-        self.assertArgumentParserError(
-            parser.parse_args, '-a -b --w 2 3'.split())
-
-    def test_conflicting_parents(self):
-        self.assertRaises(
-            argparse.ArgumentError,
-            argparse.ArgumentParser,
-            parents=[self.w_parent, self.wxyz_parent])
-
-    def test_conflicting_parents_mutex(self):
-        self.assertRaises(
-            argparse.ArgumentError,
-            argparse.ArgumentParser,
-            parents=[self.abcd_parent, self.ab_mutex_parent])
-
-    def test_same_argument_name_parents(self):
-        parents = [self.wxyz_parent, self.z_parent]
-        parser = ErrorRaisingArgumentParser(parents=parents)
-        self.assertEqual(parser.parse_args('1 2'.split()),
-                         NS(w=None, y=None, z='2'))
-
-    def test_subparser_parents(self):
-        parser = ErrorRaisingArgumentParser()
-        subparsers = parser.add_subparsers()
-        abcde_parser = subparsers.add_parser('bar', parents=[self.abcd_parent])
-        abcde_parser.add_argument('e')
-        self.assertEqual(parser.parse_args('bar -b 1 --d 2 3 4'.split()),
-                         NS(a='3', b='1', d='2', e='4'))
-
-    def test_subparser_parents_mutex(self):
-        parser = ErrorRaisingArgumentParser()
-        subparsers = parser.add_subparsers()
-        parents = [self.ab_mutex_parent]
-        abc_parser = subparsers.add_parser('foo', parents=parents)
-        c_group = abc_parser.add_argument_group('c_group')
-        c_group.add_argument('c')
-        parents = [self.wxyz_parent, self.ab_mutex_parent]
-        wxyzabe_parser = subparsers.add_parser('bar', parents=parents)
-        wxyzabe_parser.add_argument('e')
-        self.assertEqual(parser.parse_args('foo -a 4'.split()),
-                         NS(a=True, b=False, c='4'))
-        self.assertEqual(parser.parse_args('bar -b  --w 2 3 4'.split()),
-                         NS(a=False, b=True, w='2', y=None, z='3', e='4'))
-        self.assertArgumentParserError(
-            parser.parse_args, 'foo -a -b 4'.split())
-        self.assertArgumentParserError(
-            parser.parse_args, 'bar -b -a 4'.split())
-
-    def test_parent_help(self):
-        parents = [self.abcd_parent, self.wxyz_parent]
-        parser = ErrorRaisingArgumentParser(parents=parents)
-        parser_help = parser.format_help()
-        self.assertEqual(parser_help, textwrap.dedent('''\
-            usage: {} [-h] [-b B] [--d D] [--w W] [-y Y] a z
-
-            positional arguments:
-              a
-              z
-
-            optional arguments:
-              -h, --help  show this help message and exit
-              -b B
-              --w W
-
-            c:
-              --d D
-
-            x:
-              -y Y
-        '''.format(self.main_program)))
-
-    def test_groups_parents(self):
-        parent = ErrorRaisingArgumentParser(add_help=False)
-        g = parent.add_argument_group(title='g', description='gd')
-        g.add_argument('-w')
-        g.add_argument('-x')
-        m = parent.add_mutually_exclusive_group()
-        m.add_argument('-y')
-        m.add_argument('-z')
-        parser = ErrorRaisingArgumentParser(parents=[parent])
-
-        self.assertRaises(ArgumentParserError, parser.parse_args,
-            ['-y', 'Y', '-z', 'Z'])
-
-        parser_help = parser.format_help()
-        self.assertEqual(parser_help, textwrap.dedent('''\
-            usage: {} [-h] [-w W] [-x X] [-y Y | -z Z]
-
-            optional arguments:
-              -h, --help  show this help message and exit
-              -y Y
-              -z Z
-
-            g:
-              gd
-
-              -w W
-              -x X
-        '''.format(self.main_program)))
-
-# ==============================
-# Mutually exclusive group tests
-# ==============================
-
-class TestMutuallyExclusiveGroupErrors(TestCase):
-
-    def test_invalid_add_argument_group(self):
-        parser = ErrorRaisingArgumentParser()
-        raises = self.assertRaises
-        raises(TypeError, parser.add_mutually_exclusive_group, title='foo')
-
-    def test_invalid_add_argument(self):
-        parser = ErrorRaisingArgumentParser()
-        group = parser.add_mutually_exclusive_group()
-        add_argument = group.add_argument
-        raises = self.assertRaises
-        raises(ValueError, add_argument, '--foo', required=True)
-        raises(ValueError, add_argument, 'bar')
-        raises(ValueError, add_argument, 'bar', nargs='+')
-        raises(ValueError, add_argument, 'bar', nargs=1)
-        raises(ValueError, add_argument, 'bar', nargs=argparse.PARSER)
-
-    def test_help(self):
-        parser = ErrorRaisingArgumentParser(prog='PROG')
-        group1 = parser.add_mutually_exclusive_group()
-        group1.add_argument('--foo', action='store_true')
-        group1.add_argument('--bar', action='store_false')
-        group2 = parser.add_mutually_exclusive_group()
-        group2.add_argument('--soup', action='store_true')
-        group2.add_argument('--nuts', action='store_false')
-        expected = '''\
-            usage: PROG [-h] [--foo | --bar] [--soup | --nuts]
-
-            optional arguments:
-              -h, --help  show this help message and exit
-              --foo
-              --bar
-              --soup
-              --nuts
-              '''
-        self.assertEqual(parser.format_help(), textwrap.dedent(expected))
-
-class MEMixin(object):
-
-    def test_failures_when_not_required(self):
-        parse_args = self.get_parser(required=False).parse_args
-        error = ArgumentParserError
-        for args_string in self.failures:
-            self.assertRaises(error, parse_args, args_string.split())
-
-    def test_failures_when_required(self):
-        parse_args = self.get_parser(required=True).parse_args
-        error = ArgumentParserError
-        for args_string in self.failures + ['']:
-            self.assertRaises(error, parse_args, args_string.split())
-
-    def test_successes_when_not_required(self):
-        parse_args = self.get_parser(required=False).parse_args
-        successes = self.successes + self.successes_when_not_required
-        for args_string, expected_ns in successes:
-            actual_ns = parse_args(args_string.split())
-            self.assertEqual(actual_ns, expected_ns)
-
-    def test_successes_when_required(self):
-        parse_args = self.get_parser(required=True).parse_args
-        for args_string, expected_ns in self.successes:
-            actual_ns = parse_args(args_string.split())
-            self.assertEqual(actual_ns, expected_ns)
-
-    def test_usage_when_not_required(self):
-        format_usage = self.get_parser(required=False).format_usage
-        expected_usage = self.usage_when_not_required
-        self.assertEqual(format_usage(), textwrap.dedent(expected_usage))
-
-    def test_usage_when_required(self):
-        format_usage = self.get_parser(required=True).format_usage
-        expected_usage = self.usage_when_required
-        self.assertEqual(format_usage(), textwrap.dedent(expected_usage))
-
-    def test_help_when_not_required(self):
-        format_help = self.get_parser(required=False).format_help
-        help = self.usage_when_not_required + self.help
-        self.assertEqual(format_help(), textwrap.dedent(help))
-
-    def test_help_when_required(self):
-        format_help = self.get_parser(required=True).format_help
-        help = self.usage_when_required + self.help
-        self.assertEqual(format_help(), textwrap.dedent(help))
-
-
-class TestMutuallyExclusiveSimple(MEMixin, TestCase):
-
-    def get_parser(self, required=None):
-        parser = ErrorRaisingArgumentParser(prog='PROG')
-        group = parser.add_mutually_exclusive_group(required=required)
-        group.add_argument('--bar', help='bar help')
-        group.add_argument('--baz', nargs='?', const='Z', help='baz help')
-        return parser
-
-    failures = ['--bar X --baz Y', '--bar X --baz']
-    successes = [
-        ('--bar X', NS(bar='X', baz=None)),
-        ('--bar X --bar Z', NS(bar='Z', baz=None)),
-        ('--baz Y', NS(bar=None, baz='Y')),
-        ('--baz', NS(bar=None, baz='Z')),
-    ]
-    successes_when_not_required = [
-        ('', NS(bar=None, baz=None)),
-    ]
-
-    usage_when_not_required = '''\
-        usage: PROG [-h] [--bar BAR | --baz [BAZ]]
-        '''
-    usage_when_required = '''\
-        usage: PROG [-h] (--bar BAR | --baz [BAZ])
-        '''
-    help = '''\
-
-        optional arguments:
-          -h, --help   show this help message and exit
-          --bar BAR    bar help
-          --baz [BAZ]  baz help
-        '''
-
-
-class TestMutuallyExclusiveLong(MEMixin, TestCase):
-
-    def get_parser(self, required=None):
-        parser = ErrorRaisingArgumentParser(prog='PROG')
-        parser.add_argument('--abcde', help='abcde help')
-        parser.add_argument('--fghij', help='fghij help')
-        group = parser.add_mutually_exclusive_group(required=required)
-        group.add_argument('--klmno', help='klmno help')
-        group.add_argument('--pqrst', help='pqrst help')
-        return parser
-
-    failures = ['--klmno X --pqrst Y']
-    successes = [
-        ('--klmno X', NS(abcde=None, fghij=None, klmno='X', pqrst=None)),
-        ('--abcde Y --klmno X',
-            NS(abcde='Y', fghij=None, klmno='X', pqrst=None)),
-        ('--pqrst X', NS(abcde=None, fghij=None, klmno=None, pqrst='X')),
-        ('--pqrst X --fghij Y',
-            NS(abcde=None, fghij='Y', klmno=None, pqrst='X')),
-    ]
-    successes_when_not_required = [
-        ('', NS(abcde=None, fghij=None, klmno=None, pqrst=None)),
-    ]
-
-    usage_when_not_required = '''\
-    usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
-                [--klmno KLMNO | --pqrst PQRST]
-    '''
-    usage_when_required = '''\
-    usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
-                (--klmno KLMNO | --pqrst PQRST)
-    '''
-    help = '''\
-
-    optional arguments:
-      -h, --help     show this help message and exit
-      --abcde ABCDE  abcde help
-      --fghij FGHIJ  fghij help
-      --klmno KLMNO  klmno help
-      --pqrst PQRST  pqrst help
-    '''
-
-
-class TestMutuallyExclusiveFirstSuppressed(MEMixin, TestCase):
-
-    def get_parser(self, required):
-        parser = ErrorRaisingArgumentParser(prog='PROG')
-        group = parser.add_mutually_exclusive_group(required=required)
-        group.add_argument('-x', help=argparse.SUPPRESS)
-        group.add_argument('-y', action='store_false', help='y help')
-        return parser
-
-    failures = ['-x X -y']
-    successes = [
-        ('-x X', NS(x='X', y=True)),
-        ('-x X -x Y', NS(x='Y', y=True)),
-        ('-y', NS(x=None, y=False)),
-    ]
-    successes_when_not_required = [
-        ('', NS(x=None, y=True)),
-    ]
-
-    usage_when_not_required = '''\
-        usage: PROG [-h] [-y]
-        '''
-    usage_when_required = '''\
-        usage: PROG [-h] -y
-        '''
-    help = '''\
-
-        optional arguments:
-          -h, --help  show this help message and exit
-          -y          y help
-        '''
-
-
-class TestMutuallyExclusiveManySuppressed(MEMixin, TestCase):
-
-    def get_parser(self, required):
-        parser = ErrorRaisingArgumentParser(prog='PROG')
-        group = parser.add_mutually_exclusive_group(required=required)
-        add = group.add_argument
-        add('--spam', action='store_true', help=argparse.SUPPRESS)
-        add('--badger', action='store_false', help=argparse.SUPPRESS)
-        add('--bladder', help=argparse.SUPPRESS)
-        return parser
-
-    failures = [
-        '--spam --badger',
-        '--badger --bladder B',
-        '--bladder B --spam',
-    ]
-    successes = [
-        ('--spam', NS(spam=True, badger=True, bladder=None)),
-        ('--badger', NS(spam=False, badger=False, bladder=None)),
-        ('--bladder B', NS(spam=False, badger=True, bladder='B')),
-        ('--spam --spam', NS(spam=True, badger=True, bladder=None)),
-    ]
-    successes_when_not_required = [
-        ('', NS(spam=False, badger=True, bladder=None)),
-    ]
-
-    usage_when_required = usage_when_not_required = '''\
-        usage: PROG [-h]
-        '''
-    help = '''\
-
-        optional arguments:
-          -h, --help  show this help message and exit
-        '''
-
-
-class TestMutuallyExclusiveOptionalAndPositional(MEMixin, TestCase):
-
-    def get_parser(self, required):
-        parser = ErrorRaisingArgumentParser(prog='PROG')
-        group = parser.add_mutually_exclusive_group(required=required)
-        group.add_argument('--foo', action='store_true', help='FOO')
-        group.add_argument('--spam', help='SPAM')
-        group.add_argument('badger', nargs='*', default='X', help='BADGER')
-        return parser
-
-    failures = [
-        '--foo --spam S',
-        '--spam S X',
-        'X --foo',
-        'X Y Z --spam S',
-        '--foo X Y',
-    ]
-    successes = [
-        ('--foo', NS(foo=True, spam=None, badger='X')),
-        ('--spam S', NS(foo=False, spam='S', badger='X')),
-        ('X', NS(foo=False, spam=None, badger=['X'])),
-        ('X Y Z', NS(foo=False, spam=None, badger=['X', 'Y', 'Z'])),
-    ]
-    successes_when_not_required = [
-        ('', NS(foo=False, spam=None, badger='X')),
-    ]
-
-    usage_when_not_required = '''\
-        usage: PROG [-h] [--foo | --spam SPAM | badger [badger ...]]
-        '''
-    usage_when_required = '''\
-        usage: PROG [-h] (--foo | --spam SPAM | badger [badger ...])
-        '''
-    help = '''\
-
-        positional arguments:
-          badger       BADGER
-
-        optional arguments:
-          -h, --help   show this help message and exit
-          --foo        FOO
-          --spam SPAM  SPAM
-        '''
-
-
-class TestMutuallyExclusiveOptionalsMixed(MEMixin, TestCase):
-
-    def get_parser(self, required):
-        parser = ErrorRaisingArgumentParser(prog='PROG')
-        parser.add_argument('-x', action='store_true', help='x help')
-        group = parser.add_mutually_exclusive_group(required=required)
-        group.add_argument('-a', action='store_true', help='a help')
-        group.add_argument('-b', action='store_true', help='b help')
-        parser.add_argument('-y', action='store_true', help='y help')
-        group.add_argument('-c', action='store_true', help='c help')
-        return parser
-
-    failures = ['-a -b', '-b -c', '-a -c', '-a -b -c']
-    successes = [
-        ('-a', NS(a=True, b=False, c=False, x=False, y=False)),
-        ('-b', NS(a=False, b=True, c=False, x=False, y=False)),
-        ('-c', NS(a=False, b=False, c=True, x=False, y=False)),
-        ('-a -x', NS(a=True, b=False, c=False, x=True, y=False)),
-        ('-y -b', NS(a=False, b=True, c=False, x=False, y=True)),
-        ('-x -y -c', NS(a=False, b=False, c=True, x=True, y=True)),
-    ]
-    successes_when_not_required = [
-        ('', NS(a=False, b=False, c=False, x=False, y=False)),
-        ('-x', NS(a=False, b=False, c=False, x=True, y=False)),
-        ('-y', NS(a=False, b=False, c=False, x=False, y=True)),
-    ]
-
-    usage_when_required = usage_when_not_required = '''\
-        usage: PROG [-h] [-x] [-a] [-b] [-y] [-c]
-        '''
-    help = '''\
-
-        optional arguments:
-          -h, --help  show this help message and exit
-          -x          x help
-          -a          a help
-          -b          b help
-          -y          y help
-          -c          c help
-        '''
-
-
-class TestMutuallyExclusiveInGroup(MEMixin, TestCase):
-
-    def get_parser(self, required=None):
-        parser = ErrorRaisingArgumentParser(prog='PROG')
-        titled_group = parser.add_argument_group(
-            title='Titled group', description='Group description')
-        mutex_group = \
-            titled_group.add_mutually_exclusive_group(required=required)
-        mutex_group.add_argument('--bar', help='bar help')
-        mutex_group.add_argument('--baz', help='baz help')
-        return parser
-
-    failures = ['--bar X --baz Y', '--baz X --bar Y']
-    successes = [
-        ('--bar X', NS(bar='X', baz=None)),
-        ('--baz Y', NS(bar=None, baz='Y')),
-    ]
-    successes_when_not_required = [
-        ('', NS(bar=None, baz=None)),
-    ]
-
-    usage_when_not_required = '''\
-        usage: PROG [-h] [--bar BAR | --baz BAZ]
-        '''
-    usage_when_required = '''\
-        usage: PROG [-h] (--bar BAR | --baz BAZ)
-        '''
-    help = '''\
-
-        optional arguments:
-          -h, --help  show this help message and exit
-
-        Titled group:
-          Group description
-
-          --bar BAR   bar help
-          --baz BAZ   baz help
-        '''
-
-
-class TestMutuallyExclusiveOptionalsAndPositionalsMixed(MEMixin, TestCase):
-
-    def get_parser(self, required):
-        parser = ErrorRaisingArgumentParser(prog='PROG')
-        parser.add_argument('x', help='x help')
-        parser.add_argument('-y', action='store_true', help='y help')
-        group = parser.add_mutually_exclusive_group(required=required)
-        group.add_argument('a', nargs='?', help='a help')
-        group.add_argument('-b', action='store_true', help='b help')
-        group.add_argument('-c', action='store_true', help='c help')
-        return parser
-
-    failures = ['X A -b', '-b -c', '-c X A']
-    successes = [
-        ('X A', NS(a='A', b=False, c=False, x='X', y=False)),
-        ('X -b', NS(a=None, b=True, c=False, x='X', y=False)),
-        ('X -c', NS(a=None, b=False, c=True, x='X', y=False)),
-        ('X A -y', NS(a='A', b=False, c=False, x='X', y=True)),
-        ('X -y -b', NS(a=None, b=True, c=False, x='X', y=True)),
-    ]
-    successes_when_not_required = [
-        ('X', NS(a=None, b=False, c=False, x='X', y=False)),
-        ('X -y', NS(a=None, b=False, c=False, x='X', y=True)),
-    ]
-
-    usage_when_required = usage_when_not_required = '''\
-        usage: PROG [-h] [-y] [-b] [-c] x [a]
-        '''
-    help = '''\
-
-        positional arguments:
-          x           x help
-          a           a help
-
-        optional arguments:
-          -h, --help  show this help message and exit
-          -y          y help
-          -b          b help
-          -c          c help
-        '''
-
-# =================================================
-# Mutually exclusive group in parent parser tests
-# =================================================
-
-class MEPBase(object):
-
-    def get_parser(self, required=None):
-        parent = super(MEPBase, self).get_parser(required=required)
-        parser = ErrorRaisingArgumentParser(
-            prog=parent.prog, add_help=False, parents=[parent])
-        return parser
-
-
-class TestMutuallyExclusiveGroupErrorsParent(
-    MEPBase, TestMutuallyExclusiveGroupErrors):
-    pass
-
-
-class TestMutuallyExclusiveSimpleParent(
-    MEPBase, TestMutuallyExclusiveSimple):
-    pass
-
-
-class TestMutuallyExclusiveLongParent(
-    MEPBase, TestMutuallyExclusiveLong):
-    pass
-
-
-class TestMutuallyExclusiveFirstSuppressedParent(
-    MEPBase, TestMutuallyExclusiveFirstSuppressed):
-    pass
-
-
-class TestMutuallyExclusiveManySuppressedParent(
-    MEPBase, TestMutuallyExclusiveManySuppressed):
-    pass
-
-
-class TestMutuallyExclusiveOptionalAndPositionalParent(
-    MEPBase, TestMutuallyExclusiveOptionalAndPositional):
-    pass
-
-
-class TestMutuallyExclusiveOptionalsMixedParent(
-    MEPBase, TestMutuallyExclusiveOptionalsMixed):
-    pass
-
-
-class TestMutuallyExclusiveOptionalsAndPositionalsMixedParent(
-    MEPBase, TestMutuallyExclusiveOptionalsAndPositionalsMixed):
-    pass
-
-# =================
-# Set default tests
-# =================
-
-class TestSetDefaults(TestCase):
-
-    def test_set_defaults_no_args(self):
-        parser = ErrorRaisingArgumentParser()
-        parser.set_defaults(x='foo')
-        parser.set_defaults(y='bar', z=1)
-        self.assertEqual(NS(x='foo', y='bar', z=1),
-                         parser.parse_args([]))
-        self.assertEqual(NS(x='foo', y='bar', z=1),
-                         parser.parse_args([], NS()))
-        self.assertEqual(NS(x='baz', y='bar', z=1),
-                         parser.parse_args([], NS(x='baz')))
-        self.assertEqual(NS(x='baz', y='bar', z=2),
-                         parser.parse_args([], NS(x='baz', z=2)))
-
-    def test_set_defaults_with_args(self):
-        parser = ErrorRaisingArgumentParser()
-        parser.set_defaults(x='foo', y='bar')
-        parser.add_argument('-x', default='xfoox')
-        self.assertEqual(NS(x='xfoox', y='bar'),
-                         parser.parse_args([]))
-        self.assertEqual(NS(x='xfoox', y='bar'),
-                         parser.parse_args([], NS()))
-        self.assertEqual(NS(x='baz', y='bar'),
-                         parser.parse_args([], NS(x='baz')))
-        self.assertEqual(NS(x='1', y='bar'),
-                         parser.parse_args('-x 1'.split()))
-        self.assertEqual(NS(x='1', y='bar'),
-                         parser.parse_args('-x 1'.split(), NS()))
-        self.assertEqual(NS(x='1', y='bar'),
-                         parser.parse_args('-x 1'.split(), NS(x='baz')))
-
-    def test_set_defaults_subparsers(self):
-        parser = ErrorRaisingArgumentParser()
-        parser.set_defaults(x='foo')
-        subparsers = parser.add_subparsers()
-        parser_a = subparsers.add_parser('a')
-        parser_a.set_defaults(y='bar')
-        self.assertEqual(NS(x='foo', y='bar'),
-                         parser.parse_args('a'.split()))
-
-    def test_set_defaults_parents(self):
-        parent = ErrorRaisingArgumentParser(add_help=False)
-        parent.set_defaults(x='foo')
-        parser = ErrorRaisingArgumentParser(parents=[parent])
-        self.assertEqual(NS(x='foo'), parser.parse_args([]))
-
-    def test_set_defaults_same_as_add_argument(self):
-        parser = ErrorRaisingArgumentParser()
-        parser.set_defaults(w='W', x='X', y='Y', z='Z')
-        parser.add_argument('-w')
-        parser.add_argument('-x', default='XX')
-        parser.add_argument('y', nargs='?')
-        parser.add_argument('z', nargs='?', default='ZZ')
-
-        # defaults set previously
-        self.assertEqual(NS(w='W', x='XX', y='Y', z='ZZ'),
-                         parser.parse_args([]))
-
-        # reset defaults
-        parser.set_defaults(w='WW', x='X', y='YY', z='Z')
-        self.assertEqual(NS(w='WW', x='X', y='YY', z='Z'),
-                         parser.parse_args([]))
-
-    def test_set_defaults_same_as_add_argument_group(self):
-        parser = ErrorRaisingArgumentParser()
-        parser.set_defaults(w='W', x='X', y='Y', z='Z')
-        group = parser.add_argument_group('foo')
-        group.add_argument('-w')
-        group.add_argument('-x', default='XX')
-        group.add_argument('y', nargs='?')
-        group.add_argument('z', nargs='?', default='ZZ')
-
-
-        # defaults set previously
-        self.assertEqual(NS(w='W', x='XX', y='Y', z='ZZ'),
-                         parser.parse_args([]))
-
-        # reset defaults
-        parser.set_defaults(w='WW', x='X', y='YY', z='Z')
-        self.assertEqual(NS(w='WW', x='X', y='YY', z='Z'),
-                         parser.parse_args([]))
-
-# =================
-# Get default tests
-# =================
-
-class TestGetDefault(TestCase):
-
-    def test_get_default(self):
-        parser = ErrorRaisingArgumentParser()
-        self.assertEqual(None, parser.get_default("foo"))
-        self.assertEqual(None, parser.get_default("bar"))
-
-        parser.add_argument("--foo")
-        self.assertEqual(None, parser.get_default("foo"))
-        self.assertEqual(None, parser.get_default("bar"))
-
-        parser.add_argument("--bar", type=int, default=42)
-        self.assertEqual(None, parser.get_default("foo"))
-        self.assertEqual(42, parser.get_default("bar"))
-
-        parser.set_defaults(foo="badger")
-        self.assertEqual("badger", parser.get_default("foo"))
-        self.assertEqual(42, parser.get_default("bar"))
-
-# ==========================
-# Namespace 'contains' tests
-# ==========================
-
-class TestNamespaceContainsSimple(TestCase):
-
-    def test_empty(self):
-        ns = argparse.Namespace()
-        self.assertEqual('' in ns, False)
-        self.assertEqual('' not in ns, True)
-        self.assertEqual('x' in ns, False)
-
-    def test_non_empty(self):
-        ns = argparse.Namespace(x=1, y=2)
-        self.assertEqual('x' in ns, True)
-        self.assertEqual('x' not in ns, False)
-        self.assertEqual('y' in ns, True)
-        self.assertEqual('' in ns, False)
-        self.assertEqual('xx' in ns, False)
-        self.assertEqual('z' in ns, False)
-
-# =====================
-# Help formatting tests
-# =====================
-
-class TestHelpFormattingMetaclass(type):
-
-    def __init__(cls, name, bases, bodydict):
-        if name == 'HelpTestCase':
-            return
-
-        class AddTests(object):
-
-            def __init__(self, test_class, func_suffix, std_name):
-                self.func_suffix = func_suffix
-                self.std_name = std_name
-
-                for test_func in [self.test_format,
-                                  self.test_print,
-                                  self.test_print_file]:
-                    test_name = '%s_%s' % (test_func.__name__, func_suffix)
-
-                    def test_wrapper(self, test_func=test_func):
-                        test_func(self)
-                    try:
-                        test_wrapper.__name__ = test_name
-                    except TypeError:
-                        pass
-                    setattr(test_class, test_name, test_wrapper)
-
-            def _get_parser(self, tester):
-                parser = argparse.ArgumentParser(
-                    *tester.parser_signature.args,
-                    **tester.parser_signature.kwargs)
-                for argument_sig in getattr(tester, 'argument_signatures', []):
-                    parser.add_argument(*argument_sig.args,
-                                        **argument_sig.kwargs)
-                group_sigs = getattr(tester, 'argument_group_signatures', [])
-                for group_sig, argument_sigs in group_sigs:
-                    group = parser.add_argument_group(*group_sig.args,
-                                                      **group_sig.kwargs)
-                    for argument_sig in argument_sigs:
-                        group.add_argument(*argument_sig.args,
-                                           **argument_sig.kwargs)
-                subparsers_sigs = getattr(tester, 'subparsers_signatures', [])
-                if subparsers_sigs:
-                    subparsers = parser.add_subparsers()
-                    for subparser_sig in subparsers_sigs:
-                        subparsers.add_parser(*subparser_sig.args,
-                                               **subparser_sig.kwargs)
-                return parser
-
-            def _test(self, tester, parser_text):
-                expected_text = getattr(tester, self.func_suffix)
-                expected_text = textwrap.dedent(expected_text)
-                if expected_text != parser_text:
-                    print(repr(expected_text))
-                    print(repr(parser_text))
-                    for char1, char2 in zip(expected_text, parser_text):
-                        if char1 != char2:
-                            print('first diff: %r %r' % (char1, char2))
-                            break
-                tester.assertEqual(expected_text, parser_text)
-
-            def test_format(self, tester):
-                parser = self._get_parser(tester)
-                format = getattr(parser, 'format_%s' % self.func_suffix)
-                self._test(tester, format())
-
-            def test_print(self, tester):
-                parser = self._get_parser(tester)
-                print_ = getattr(parser, 'print_%s' % self.func_suffix)
-                old_stream = getattr(sys, self.std_name)
-                setattr(sys, self.std_name, StdIOBuffer())
-                try:
-                    print_()
-                    parser_text = getattr(sys, self.std_name).getvalue()
-                finally:
-                    setattr(sys, self.std_name, old_stream)
-                self._test(tester, parser_text)
-
-            def test_print_file(self, tester):
-                parser = self._get_parser(tester)
-                print_ = getattr(parser, 'print_%s' % self.func_suffix)
-                sfile = StdIOBuffer()
-                print_(sfile)
-                parser_text = sfile.getvalue()
-                self._test(tester, parser_text)
-
-        # add tests for {format,print}_{usage,help,version}
-        for func_suffix, std_name in [('usage', 'stdout'),
-                                      ('help', 'stdout'),
-                                      ('version', 'stderr')]:
-            AddTests(cls, func_suffix, std_name)
-
-bases = TestCase,
-HelpTestCase = TestHelpFormattingMetaclass('HelpTestCase', bases, {})
-
-
-class TestHelpBiggerOptionals(HelpTestCase):
-    """Make sure that argument help aligns when options are longer"""
-
-    parser_signature = Sig(prog='PROG', description='DESCRIPTION',
-                           epilog='EPILOG', version='0.1')
-    argument_signatures = [
-        Sig('-x', action='store_true', help='X HELP'),
-        Sig('--y', help='Y HELP'),
-        Sig('foo', help='FOO HELP'),
-        Sig('bar', help='BAR HELP'),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG [-h] [-v] [-x] [--y Y] foo bar
-        '''
-    help = usage + '''\
-
-        DESCRIPTION
-
-        positional arguments:
-          foo            FOO HELP
-          bar            BAR HELP
-
-        optional arguments:
-          -h, --help     show this help message and exit
-          -v, --version  show program's version number and exit
-          -x             X HELP
-          --y Y          Y HELP
-
-        EPILOG
-    '''
-    version = '''\
-        0.1
-        '''
-
-
-class TestHelpBiggerOptionalGroups(HelpTestCase):
-    """Make sure that argument help aligns when options are longer"""
-
-    parser_signature = Sig(prog='PROG', description='DESCRIPTION',
-                           epilog='EPILOG', version='0.1')
-    argument_signatures = [
-        Sig('-x', action='store_true', help='X HELP'),
-        Sig('--y', help='Y HELP'),
-        Sig('foo', help='FOO HELP'),
-        Sig('bar', help='BAR HELP'),
-    ]
-    argument_group_signatures = [
-        (Sig('GROUP TITLE', description='GROUP DESCRIPTION'), [
-            Sig('baz', help='BAZ HELP'),
-            Sig('-z', nargs='+', help='Z HELP')]),
-    ]
-    usage = '''\
-        usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz
-        '''
-    help = usage + '''\
-
-        DESCRIPTION
-
-        positional arguments:
-          foo            FOO HELP
-          bar            BAR HELP
-
-        optional arguments:
-          -h, --help     show this help message and exit
-          -v, --version  show program's version number and exit
-          -x             X HELP
-          --y Y          Y HELP
-
-        GROUP TITLE:
-          GROUP DESCRIPTION
-
-          baz            BAZ HELP
-          -z Z [Z ...]   Z HELP
-
-        EPILOG
-    '''
-    version = '''\
-        0.1
-        '''
-
-
-class TestHelpBiggerPositionals(HelpTestCase):
-    """Make sure that help aligns when arguments are longer"""
-
-    parser_signature = Sig(usage='USAGE', description='DESCRIPTION')
-    argument_signatures = [
-        Sig('-x', action='store_true', help='X HELP'),
-        Sig('--y', help='Y HELP'),
-        Sig('ekiekiekifekang', help='EKI HELP'),
-        Sig('bar', help='BAR HELP'),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: USAGE
-        '''
-    help = usage + '''\
-
-        DESCRIPTION
-
-        positional arguments:
-          ekiekiekifekang  EKI HELP
-          bar              BAR HELP
-
-        optional arguments:
-          -h, --help       show this help message and exit
-          -x               X HELP
-          --y Y            Y HELP
-        '''
-
-    version = ''
-
-
-class TestHelpReformatting(HelpTestCase):
-    """Make sure that text after short names starts on the first line"""
-
-    parser_signature = Sig(
-        prog='PROG',
-        description='   oddly    formatted\n'
-                    'description\n'
-                    '\n'
-                    'that is so long that it should go onto multiple '
-                    'lines when wrapped')
-    argument_signatures = [
-        Sig('-x', metavar='XX', help='oddly\n'
-                                     '    formatted -x help'),
-        Sig('y', metavar='yyy', help='normal y help'),
-    ]
-    argument_group_signatures = [
-        (Sig('title', description='\n'
-                                  '    oddly formatted group\n'
-                                  '\n'
-                                  'description'),
-         [Sig('-a', action='store_true',
-              help=' oddly \n'
-                   'formatted    -a  help  \n'
-                   '    again, so long that it should be wrapped over '
-                   'multiple lines')]),
-    ]
-    usage = '''\
-        usage: PROG [-h] [-x XX] [-a] yyy
-        '''
-    help = usage + '''\
-
-        oddly formatted description that is so long that it should go onto \
-multiple
-        lines when wrapped
-
-        positional arguments:
-          yyy         normal y help
-
-        optional arguments:
-          -h, --help  show this help message and exit
-          -x XX       oddly formatted -x help
-
-        title:
-          oddly formatted group description
-
-          -a          oddly formatted -a help again, so long that it should \
-be wrapped
-                      over multiple lines
-        '''
-    version = ''
-
-
-class TestHelpWrappingShortNames(HelpTestCase):
-    """Make sure that text after short names starts on the first line"""
-
-    parser_signature = Sig(prog='PROG', description= 'D\nD' * 30)
-    argument_signatures = [
-        Sig('-x', metavar='XX', help='XHH HX' * 20),
-        Sig('y', metavar='yyy', help='YH YH' * 20),
-    ]
-    argument_group_signatures = [
-        (Sig('ALPHAS'), [
-            Sig('-a', action='store_true', help='AHHH HHA' * 10)]),
-    ]
-    usage = '''\
-        usage: PROG [-h] [-x XX] [-a] yyy
-        '''
-    help = usage + '''\
-
-        D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD \
-DD DD DD
-        DD DD DD DD D
-
-        positional arguments:
-          yyy         YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH \
-YHYH YHYH
-                      YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH
-
-        optional arguments:
-          -h, --help  show this help message and exit
-          -x XX       XHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH \
-HXXHH HXXHH
-                      HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HX
-
-        ALPHAS:
-          -a          AHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH \
-HHAAHHH
-                      HHAAHHH HHAAHHH HHA
-        '''
-    version = ''
-
-
-class TestHelpWrappingLongNames(HelpTestCase):
-    """Make sure that text after long names starts on the next line"""
-
-    parser_signature = Sig(usage='USAGE', description= 'D D' * 30,
-                           version='V V'*30)
-    argument_signatures = [
-        Sig('-x', metavar='X' * 25, help='XH XH' * 20),
-        Sig('y', metavar='y' * 25, help='YH YH' * 20),
-    ]
-    argument_group_signatures = [
-        (Sig('ALPHAS'), [
-            Sig('-a', metavar='A' * 25, help='AH AH' * 20),
-            Sig('z', metavar='z' * 25, help='ZH ZH' * 20)]),
-    ]
-    usage = '''\
-        usage: USAGE
-        '''
-    help = usage + '''\
-
-        D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD \
-DD DD DD
-        DD DD DD DD D
-
-        positional arguments:
-          yyyyyyyyyyyyyyyyyyyyyyyyy
-                                YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH \
-YHYH YHYH
-                                YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH
-
-        optional arguments:
-          -h, --help            show this help message and exit
-          -v, --version         show program's version number and exit
-          -x XXXXXXXXXXXXXXXXXXXXXXXXX
-                                XH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH \
-XHXH XHXH
-                                XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XH
-
-        ALPHAS:
-          -a AAAAAAAAAAAAAAAAAAAAAAAAA
-                                AH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH \
-AHAH AHAH
-                                AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AH
-          zzzzzzzzzzzzzzzzzzzzzzzzz
-                                ZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH \
-ZHZH ZHZH
-                                ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZH
-        '''
-    version = '''\
-        V VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV \
-VV VV VV
-        VV VV VV VV V
-        '''
-
-
-class TestHelpUsage(HelpTestCase):
-    """Test basic usage messages"""
-
-    parser_signature = Sig(prog='PROG')
-    argument_signatures = [
-        Sig('-w', nargs='+', help='w'),
-        Sig('-x', nargs='*', help='x'),
-        Sig('a', help='a'),
-        Sig('b', help='b', nargs=2),
-        Sig('c', help='c', nargs='?'),
-    ]
-    argument_group_signatures = [
-        (Sig('group'), [
-            Sig('-y', nargs='?', help='y'),
-            Sig('-z', nargs=3, help='z'),
-            Sig('d', help='d', nargs='*'),
-            Sig('e', help='e', nargs='+'),
-        ])
-    ]
-    usage = '''\
-        usage: PROG [-h] [-w W [W ...]] [-x [X [X ...]]] [-y [Y]] [-z Z Z Z]
-                    a b b [c] [d [d ...]] e [e ...]
-        '''
-    help = usage + '''\
-
-        positional arguments:
-          a               a
-          b               b
-          c               c
-
-        optional arguments:
-          -h, --help      show this help message and exit
-          -w W [W ...]    w
-          -x [X [X ...]]  x
-
-        group:
-          -y [Y]          y
-          -z Z Z Z        z
-          d               d
-          e               e
-        '''
-    version = ''
-
-
-class TestHelpOnlyUserGroups(HelpTestCase):
-    """Test basic usage messages"""
-
-    parser_signature = Sig(prog='PROG', add_help=False)
-    argument_signatures = []
-    argument_group_signatures = [
-        (Sig('xxxx'), [
-            Sig('-x', help='x'),
-            Sig('a', help='a'),
-        ]),
-        (Sig('yyyy'), [
-            Sig('b', help='b'),
-            Sig('-y', help='y'),
-        ]),
-    ]
-    usage = '''\
-        usage: PROG [-x X] [-y Y] a b
-        '''
-    help = usage + '''\
-
-        xxxx:
-          -x X  x
-          a     a
-
-        yyyy:
-          b     b
-          -y Y  y
-        '''
-    version = ''
-
-
-class TestHelpUsageLongProg(HelpTestCase):
-    """Test usage messages where the prog is long"""
-
-    parser_signature = Sig(prog='P' * 60)
-    argument_signatures = [
-        Sig('-w', metavar='W'),
-        Sig('-x', metavar='X'),
-        Sig('a'),
-        Sig('b'),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
-               [-h] [-w W] [-x X] a b
-        '''
-    help = usage + '''\
-
-        positional arguments:
-          a
-          b
-
-        optional arguments:
-          -h, --help  show this help message and exit
-          -w W
-          -x X
-        '''
-    version = ''
-
-
-class TestHelpUsageLongProgOptionsWrap(HelpTestCase):
-    """Test usage messages where the prog is long and the optionals wrap"""
-
-    parser_signature = Sig(prog='P' * 60)
-    argument_signatures = [
-        Sig('-w', metavar='W' * 25),
-        Sig('-x', metavar='X' * 25),
-        Sig('-y', metavar='Y' * 25),
-        Sig('-z', metavar='Z' * 25),
-        Sig('a'),
-        Sig('b'),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
-               [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \
-[-x XXXXXXXXXXXXXXXXXXXXXXXXX]
-               [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
-               a b
-        '''
-    help = usage + '''\
-
-        positional arguments:
-          a
-          b
-
-        optional arguments:
-          -h, --help            show this help message and exit
-          -w WWWWWWWWWWWWWWWWWWWWWWWWW
-          -x XXXXXXXXXXXXXXXXXXXXXXXXX
-          -y YYYYYYYYYYYYYYYYYYYYYYYYY
-          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
-        '''
-    version = ''
-
-
-class TestHelpUsageLongProgPositionalsWrap(HelpTestCase):
-    """Test usage messages where the prog is long and the positionals wrap"""
-
-    parser_signature = Sig(prog='P' * 60, add_help=False)
-    argument_signatures = [
-        Sig('a' * 25),
-        Sig('b' * 25),
-        Sig('c' * 25),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
-               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
-               ccccccccccccccccccccccccc
-        '''
-    help = usage + '''\
-
-        positional arguments:
-          aaaaaaaaaaaaaaaaaaaaaaaaa
-          bbbbbbbbbbbbbbbbbbbbbbbbb
-          ccccccccccccccccccccccccc
-        '''
-    version = ''
-
-
-class TestHelpUsageOptionalsWrap(HelpTestCase):
-    """Test usage messages where the optionals wrap"""
-
-    parser_signature = Sig(prog='PROG')
-    argument_signatures = [
-        Sig('-w', metavar='W' * 25),
-        Sig('-x', metavar='X' * 25),
-        Sig('-y', metavar='Y' * 25),
-        Sig('-z', metavar='Z' * 25),
-        Sig('a'),
-        Sig('b'),
-        Sig('c'),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \
-[-x XXXXXXXXXXXXXXXXXXXXXXXXX]
-                    [-y YYYYYYYYYYYYYYYYYYYYYYYYY] \
-[-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
-                    a b c
-        '''
-    help = usage + '''\
-
-        positional arguments:
-          a
-          b
-          c
-
-        optional arguments:
-          -h, --help            show this help message and exit
-          -w WWWWWWWWWWWWWWWWWWWWWWWWW
-          -x XXXXXXXXXXXXXXXXXXXXXXXXX
-          -y YYYYYYYYYYYYYYYYYYYYYYYYY
-          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
-        '''
-    version = ''
-
-
-class TestHelpUsagePositionalsWrap(HelpTestCase):
-    """Test usage messages where the positionals wrap"""
-
-    parser_signature = Sig(prog='PROG')
-    argument_signatures = [
-        Sig('-x'),
-        Sig('-y'),
-        Sig('-z'),
-        Sig('a' * 25),
-        Sig('b' * 25),
-        Sig('c' * 25),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG [-h] [-x X] [-y Y] [-z Z]
-                    aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
-                    ccccccccccccccccccccccccc
-        '''
-    help = usage + '''\
-
-        positional arguments:
-          aaaaaaaaaaaaaaaaaaaaaaaaa
-          bbbbbbbbbbbbbbbbbbbbbbbbb
-          ccccccccccccccccccccccccc
-
-        optional arguments:
-          -h, --help            show this help message and exit
-          -x X
-          -y Y
-          -z Z
-        '''
-    version = ''
-
-
-class TestHelpUsageOptionalsPositionalsWrap(HelpTestCase):
-    """Test usage messages where the optionals and positionals wrap"""
-
-    parser_signature = Sig(prog='PROG')
-    argument_signatures = [
-        Sig('-x', metavar='X' * 25),
-        Sig('-y', metavar='Y' * 25),
-        Sig('-z', metavar='Z' * 25),
-        Sig('a' * 25),
-        Sig('b' * 25),
-        Sig('c' * 25),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \
-[-y YYYYYYYYYYYYYYYYYYYYYYYYY]
-                    [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
-                    aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
-                    ccccccccccccccccccccccccc
-        '''
-    help = usage + '''\
-
-        positional arguments:
-          aaaaaaaaaaaaaaaaaaaaaaaaa
-          bbbbbbbbbbbbbbbbbbbbbbbbb
-          ccccccccccccccccccccccccc
-
-        optional arguments:
-          -h, --help            show this help message and exit
-          -x XXXXXXXXXXXXXXXXXXXXXXXXX
-          -y YYYYYYYYYYYYYYYYYYYYYYYYY
-          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
-        '''
-    version = ''
-
-
-class TestHelpUsageOptionalsOnlyWrap(HelpTestCase):
-    """Test usage messages where there are only optionals and they wrap"""
-
-    parser_signature = Sig(prog='PROG')
-    argument_signatures = [
-        Sig('-x', metavar='X' * 25),
-        Sig('-y', metavar='Y' * 25),
-        Sig('-z', metavar='Z' * 25),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \
-[-y YYYYYYYYYYYYYYYYYYYYYYYYY]
-                    [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
-        '''
-    help = usage + '''\
-
-        optional arguments:
-          -h, --help            show this help message and exit
-          -x XXXXXXXXXXXXXXXXXXXXXXXXX
-          -y YYYYYYYYYYYYYYYYYYYYYYYYY
-          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
-        '''
-    version = ''
-
-
-class TestHelpUsagePositionalsOnlyWrap(HelpTestCase):
-    """Test usage messages where there are only positionals and they wrap"""
-
-    parser_signature = Sig(prog='PROG', add_help=False)
-    argument_signatures = [
-        Sig('a' * 25),
-        Sig('b' * 25),
-        Sig('c' * 25),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
-                    ccccccccccccccccccccccccc
-        '''
-    help = usage + '''\
-
-        positional arguments:
-          aaaaaaaaaaaaaaaaaaaaaaaaa
-          bbbbbbbbbbbbbbbbbbbbbbbbb
-          ccccccccccccccccccccccccc
-        '''
-    version = ''
-
-
-class TestHelpVariableExpansion(HelpTestCase):
-    """Test that variables are expanded properly in help messages"""
-
-    parser_signature = Sig(prog='PROG')
-    argument_signatures = [
-        Sig('-x', type=int,
-            help='x %(prog)s %(default)s %(type)s %%'),
-        Sig('-y', action='store_const', default=42, const='XXX',
-            help='y %(prog)s %(default)s %(const)s'),
-        Sig('--foo', choices='abc',
-            help='foo %(prog)s %(default)s %(choices)s'),
-        Sig('--bar', default='baz', choices=[1, 2], metavar='BBB',
-            help='bar %(prog)s %(default)s %(dest)s'),
-        Sig('spam', help='spam %(prog)s %(default)s'),
-        Sig('badger', default=0.5, help='badger %(prog)s %(default)s'),
-    ]
-    argument_group_signatures = [
-        (Sig('group'), [
-            Sig('-a', help='a %(prog)s %(default)s'),
-            Sig('-b', default=-1, help='b %(prog)s %(default)s'),
-        ])
-    ]
-    usage = ('''\
-        usage: PROG [-h] [-x X] [-y] [--foo {a,b,c}] [--bar BBB] [-a A] [-b B]
-                    spam badger
-        ''')
-    help = usage + '''\
-
-        positional arguments:
-          spam           spam PROG None
-          badger         badger PROG 0.5
-
-        optional arguments:
-          -h, --help     show this help message and exit
-          -x X           x PROG None int %
-          -y             y PROG 42 XXX
-          --foo {a,b,c}  foo PROG None a, b, c
-          --bar BBB      bar PROG baz bar
-
-        group:
-          -a A           a PROG None
-          -b B           b PROG -1
-        '''
-    version = ''
-
-
-class TestHelpVariableExpansionUsageSupplied(HelpTestCase):
-    """Test that variables are expanded properly when usage= is present"""
-
-    parser_signature = Sig(prog='PROG', usage='%(prog)s FOO')
-    argument_signatures = []
-    argument_group_signatures = []
-    usage = ('''\
-        usage: PROG FOO
-        ''')
-    help = usage + '''\
-
-        optional arguments:
-          -h, --help  show this help message and exit
-        '''
-    version = ''
-
-
-class TestHelpVariableExpansionNoArguments(HelpTestCase):
-    """Test that variables are expanded properly with no arguments"""
-
-    parser_signature = Sig(prog='PROG', add_help=False)
-    argument_signatures = []
-    argument_group_signatures = []
-    usage = ('''\
-        usage: PROG
-        ''')
-    help = usage
-    version = ''
-
-
-class TestHelpSuppressUsage(HelpTestCase):
-    """Test that items can be suppressed in usage messages"""
-
-    parser_signature = Sig(prog='PROG', usage=argparse.SUPPRESS)
-    argument_signatures = [
-        Sig('--foo', help='foo help'),
-        Sig('spam', help='spam help'),
-    ]
-    argument_group_signatures = []
-    help = '''\
-        positional arguments:
-          spam        spam help
-
-        optional arguments:
-          -h, --help  show this help message and exit
-          --foo FOO   foo help
-        '''
-    usage = ''
-    version = ''
-
-
-class TestHelpSuppressOptional(HelpTestCase):
-    """Test that optional arguments can be suppressed in help messages"""
-
-    parser_signature = Sig(prog='PROG', add_help=False)
-    argument_signatures = [
-        Sig('--foo', help=argparse.SUPPRESS),
-        Sig('spam', help='spam help'),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG spam
-        '''
-    help = usage + '''\
-
-        positional arguments:
-          spam  spam help
-        '''
-    version = ''
-
-
-class TestHelpSuppressOptionalGroup(HelpTestCase):
-    """Test that optional groups can be suppressed in help messages"""
-
-    parser_signature = Sig(prog='PROG')
-    argument_signatures = [
-        Sig('--foo', help='foo help'),
-        Sig('spam', help='spam help'),
-    ]
-    argument_group_signatures = [
-        (Sig('group'), [Sig('--bar', help=argparse.SUPPRESS)]),
-    ]
-    usage = '''\
-        usage: PROG [-h] [--foo FOO] spam
-        '''
-    help = usage + '''\
-
-        positional arguments:
-          spam        spam help
-
-        optional arguments:
-          -h, --help  show this help message and exit
-          --foo FOO   foo help
-        '''
-    version = ''
-
-
-class TestHelpSuppressPositional(HelpTestCase):
-    """Test that positional arguments can be suppressed in help messages"""
-
-    parser_signature = Sig(prog='PROG')
-    argument_signatures = [
-        Sig('--foo', help='foo help'),
-        Sig('spam', help=argparse.SUPPRESS),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG [-h] [--foo FOO]
-        '''
-    help = usage + '''\
-
-        optional arguments:
-          -h, --help  show this help message and exit
-          --foo FOO   foo help
-        '''
-    version = ''
-
-
-class TestHelpRequiredOptional(HelpTestCase):
-    """Test that required options don't look optional"""
-
-    parser_signature = Sig(prog='PROG')
-    argument_signatures = [
-        Sig('--foo', required=True, help='foo help'),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG [-h] --foo FOO
-        '''
-    help = usage + '''\
-
-        optional arguments:
-          -h, --help  show this help message and exit
-          --foo FOO   foo help
-        '''
-    version = ''
-
-
-class TestHelpAlternatePrefixChars(HelpTestCase):
-    """Test that options display with different prefix characters"""
-
-    parser_signature = Sig(prog='PROG', prefix_chars='^;', add_help=False)
-    argument_signatures = [
-        Sig('^^foo', action='store_true', help='foo help'),
-        Sig(';b', ';;bar', help='bar help'),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG [^^foo] [;b BAR]
-        '''
-    help = usage + '''\
-
-        optional arguments:
-          ^^foo              foo help
-          ;b BAR, ;;bar BAR  bar help
-        '''
-    version = ''
-
-
-class TestHelpNoHelpOptional(HelpTestCase):
-    """Test that the --help argument can be suppressed help messages"""
-
-    parser_signature = Sig(prog='PROG', add_help=False)
-    argument_signatures = [
-        Sig('--foo', help='foo help'),
-        Sig('spam', help='spam help'),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG [--foo FOO] spam
-        '''
-    help = usage + '''\
-
-        positional arguments:
-          spam       spam help
-
-        optional arguments:
-          --foo FOO  foo help
-        '''
-    version = ''
-
-
-class TestHelpVersionOptional(HelpTestCase):
-    """Test that the --version argument can be suppressed help messages"""
-
-    parser_signature = Sig(prog='PROG', version='1.0')
-    argument_signatures = [
-        Sig('--foo', help='foo help'),
-        Sig('spam', help='spam help'),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG [-h] [-v] [--foo FOO] spam
-        '''
-    help = usage + '''\
-
-        positional arguments:
-          spam           spam help
-
-        optional arguments:
-          -h, --help     show this help message and exit
-          -v, --version  show program's version number and exit
-          --foo FOO      foo help
-        '''
-    version = '''\
-        1.0
-        '''
-
-
-class TestHelpNone(HelpTestCase):
-    """Test that no errors occur if no help is specified"""
-
-    parser_signature = Sig(prog='PROG')
-    argument_signatures = [
-        Sig('--foo'),
-        Sig('spam'),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG [-h] [--foo FOO] spam
-        '''
-    help = usage + '''\
-
-        positional arguments:
-          spam
-
-        optional arguments:
-          -h, --help  show this help message and exit
-          --foo FOO
-        '''
-    version = ''
-
-
-class TestHelpTupleMetavar(HelpTestCase):
-    """Test specifying metavar as a tuple"""
-
-    parser_signature = Sig(prog='PROG')
-    argument_signatures = [
-        Sig('-w', help='w', nargs='+', metavar=('W1', 'W2')),
-        Sig('-x', help='x', nargs='*', metavar=('X1', 'X2')),
-        Sig('-y', help='y', nargs=3, metavar=('Y1', 'Y2', 'Y3')),
-        Sig('-z', help='z', nargs='?', metavar=('Z1', )),
-    ]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG [-h] [-w W1 [W2 ...]] [-x [X1 [X2 ...]]] [-y Y1 Y2 Y3] \
-[-z [Z1]]
-        '''
-    help = usage + '''\
-
-        optional arguments:
-          -h, --help        show this help message and exit
-          -w W1 [W2 ...]    w
-          -x [X1 [X2 ...]]  x
-          -y Y1 Y2 Y3       y
-          -z [Z1]           z
-        '''
-    version = ''
-
-
-class TestHelpRawText(HelpTestCase):
-    """Test the RawTextHelpFormatter"""
-
-    parser_signature = Sig(
-        prog='PROG', formatter_class=argparse.RawTextHelpFormatter,
-        description='Keep the formatting\n'
-                    '    exactly as it is written\n'
-                    '\n'
-                    'here\n')
-
-    argument_signatures = [
-        Sig('--foo', help='    foo help should also\n'
-                          'appear as given here'),
-        Sig('spam', help='spam help'),
-    ]
-    argument_group_signatures = [
-        (Sig('title', description='    This text\n'
-                                  '  should be indented\n'
-                                  '    exactly like it is here\n'),
-         [Sig('--bar', help='bar help')]),
-    ]
-    usage = '''\
-        usage: PROG [-h] [--foo FOO] [--bar BAR] spam
-        '''
-    help = usage + '''\
-
-        Keep the formatting
-            exactly as it is written
-
-        here
-
-        positional arguments:
-          spam        spam help
-
-        optional arguments:
-          -h, --help  show this help message and exit
-          --foo FOO       foo help should also
-                      appear as given here
-
-        title:
-              This text
-            should be indented
-              exactly like it is here
-
-          --bar BAR   bar help
-        '''
-    version = ''
-
-
-class TestHelpRawDescription(HelpTestCase):
-    """Test the RawTextHelpFormatter"""
-
-    parser_signature = Sig(
-        prog='PROG', formatter_class=argparse.RawDescriptionHelpFormatter,
-        description='Keep the formatting\n'
-                    '    exactly as it is written\n'
-                    '\n'
-                    'here\n')
-
-    argument_signatures = [
-        Sig('--foo', help='  foo help should not\n'
-                          '    retain this odd formatting'),
-        Sig('spam', help='spam help'),
-    ]
-    argument_group_signatures = [
-        (Sig('title', description='    This text\n'
-                                  '  should be indented\n'
-                                  '    exactly like it is here\n'),
-         [Sig('--bar', help='bar help')]),
-    ]
-    usage = '''\
-        usage: PROG [-h] [--foo FOO] [--bar BAR] spam
-        '''
-    help = usage + '''\
-
-        Keep the formatting
-            exactly as it is written
-
-        here
-
-        positional arguments:
-          spam        spam help
-
-        optional arguments:
-          -h, --help  show this help message and exit
-          --foo FOO   foo help should not retain this odd formatting
-
-        title:
-              This text
-            should be indented
-              exactly like it is here
-
-          --bar BAR   bar help
-        '''
-    version = ''
-
-
-class TestHelpArgumentDefaults(HelpTestCase):
-    """Test the ArgumentDefaultsHelpFormatter"""
-
-    parser_signature = Sig(
-        prog='PROG', formatter_class=argparse.ArgumentDefaultsHelpFormatter,
-        description='description')
-
-    argument_signatures = [
-        Sig('--foo', help='foo help - oh and by the way, %(default)s'),
-        Sig('--bar', action='store_true', help='bar help'),
-        Sig('spam', help='spam help'),
-        Sig('badger', nargs='?', default='wooden', help='badger help'),
-    ]
-    argument_group_signatures = [
-        (Sig('title', description='description'),
-         [Sig('--baz', type=int, default=42, help='baz help')]),
-    ]
-    usage = '''\
-        usage: PROG [-h] [--foo FOO] [--bar] [--baz BAZ] spam [badger]
-        '''
-    help = usage + '''\
-
-        description
-
-        positional arguments:
-          spam        spam help
-          badger      badger help (default: wooden)
-
-        optional arguments:
-          -h, --help  show this help message and exit
-          --foo FOO   foo help - oh and by the way, None
-          --bar       bar help (default: False)
-
-        title:
-          description
-
-          --baz BAZ   baz help (default: 42)
-        '''
-    version = ''
-
-class TestHelpVersionAction(HelpTestCase):
-    """Test the default help for the version action"""
-
-    parser_signature = Sig(prog='PROG', description='description')
-    argument_signatures = [Sig('-V', '--version', action='version', version='3.6')]
-    argument_group_signatures = []
-    usage = '''\
-        usage: PROG [-h] [-V]
-        '''
-    help = usage + '''\
-
-        description
-
-        optional arguments:
-          -h, --help     show this help message and exit
-          -V, --version  show program's version number and exit
-        '''
-    version = ''
-
-class TestHelpSubparsersOrdering(HelpTestCase):
-    """Test ordering of subcommands in help matches the code"""
-    parser_signature = Sig(prog='PROG',
-                           description='display some subcommands',
-                           version='0.1')
-
-    subparsers_signatures = [Sig(name=name)
-                             for name in ('a', 'b', 'c', 'd', 'e')]
-
-    usage = '''\
-        usage: PROG [-h] [-v] {a,b,c,d,e} ...
-        '''
-
-    help = usage + '''\
-
-        display some subcommands
-
-        positional arguments:
-          {a,b,c,d,e}
-
-        optional arguments:
-          -h, --help     show this help message and exit
-          -v, --version  show program's version number and exit
-        '''
-
-    version = '''\
-        0.1
-        '''
-
-class TestHelpSubparsersWithHelpOrdering(HelpTestCase):
-    """Test ordering of subcommands in help matches the code"""
-    parser_signature = Sig(prog='PROG',
-                           description='display some subcommands',
-                           version='0.1')
-
-    subcommand_data = (('a', 'a subcommand help'),
-                       ('b', 'b subcommand help'),
-                       ('c', 'c subcommand help'),
-                       ('d', 'd subcommand help'),
-                       ('e', 'e subcommand help'),
-                       )
-
-    subparsers_signatures = [Sig(name=name, help=help)
-                             for name, help in subcommand_data]
-
-    usage = '''\
-        usage: PROG [-h] [-v] {a,b,c,d,e} ...
-        '''
-
-    help = usage + '''\
-
-        display some subcommands
-
-        positional arguments:
-          {a,b,c,d,e}
-            a            a subcommand help
-            b            b subcommand help
-            c            c subcommand help
-            d            d subcommand help
-            e            e subcommand help
-
-        optional arguments:
-          -h, --help     show this help message and exit
-          -v, --version  show program's version number and exit
-        '''
-
-    version = '''\
-        0.1
-        '''
-
-
-# =====================================
-# Optional/Positional constructor tests
-# =====================================
-
-class TestInvalidArgumentConstructors(TestCase):
-    """Test a bunch of invalid Argument constructors"""
-
-    def assertTypeError(self, *args, **kwargs):
-        parser = argparse.ArgumentParser()
-        self.assertRaises(TypeError, parser.add_argument,
-                          *args, **kwargs)
-
-    def assertValueError(self, *args, **kwargs):
-        parser = argparse.ArgumentParser()
-        self.assertRaises(ValueError, parser.add_argument,
-                          *args, **kwargs)
-
-    def test_invalid_keyword_arguments(self):
-        self.assertTypeError('-x', bar=None)
-        self.assertTypeError('-y', callback='foo')
-        self.assertTypeError('-y', callback_args=())
-        self.assertTypeError('-y', callback_kwargs={})
-
-    def test_missing_destination(self):
-        self.assertTypeError()
-        for action in ['append', 'store']:
-            self.assertTypeError(action=action)
-
-    def test_invalid_option_strings(self):
-        self.assertValueError('--')
-        self.assertValueError('---')
-
-    def test_invalid_type(self):
-        self.assertValueError('--foo', type='int')
-        self.assertValueError('--foo', type=(int, float))
-
-    def test_invalid_action(self):
-        self.assertValueError('-x', action='foo')
-        self.assertValueError('foo', action='baz')
-        self.assertValueError('--foo', action=('store', 'append'))
-        parser = argparse.ArgumentParser()
-        try:
-            parser.add_argument("--foo", action="store-true")
-        except ValueError:
-            e = sys.exc_info()[1]
-            expected = 'unknown action'
-            msg = 'expected %r, found %r' % (expected, e)
-            self.assertTrue(expected in str(e), msg)
-
-    def test_multiple_dest(self):
-        parser = argparse.ArgumentParser()
-        parser.add_argument(dest='foo')
-        try:
-            parser.add_argument('bar', dest='baz')
-        except ValueError:
-            e = sys.exc_info()[1]
-            expected = 'dest supplied twice for positional argument'
-            msg = 'expected %r, found %r' % (expected, e)
-            self.assertTrue(expected in str(e), msg)
-
-    def test_no_argument_actions(self):
-        for action in ['store_const', 'store_true', 'store_false',
-                       'append_const', 'count']:
-            for attrs in [dict(type=int), dict(nargs='+'),
-                          dict(choices='ab')]:
-                self.assertTypeError('-x', action=action, **attrs)
-
-    def test_no_argument_no_const_actions(self):
-        # options with zero arguments
-        for action in ['store_true', 'store_false', 'count']:
-
-            # const is always disallowed
-            self.assertTypeError('-x', const='foo', action=action)
-
-            # nargs is always disallowed
-            self.assertTypeError('-x', nargs='*', action=action)
-
-    def test_more_than_one_argument_actions(self):
-        for action in ['store', 'append']:
-
-            # nargs=0 is disallowed
-            self.assertValueError('-x', nargs=0, action=action)
-            self.assertValueError('spam', nargs=0, action=action)
-
-            # const is disallowed with non-optional arguments
-            for nargs in [1, '*', '+']:
-                self.assertValueError('-x', const='foo',
-                                      nargs=nargs, action=action)
-                self.assertValueError('spam', const='foo',
-                                      nargs=nargs, action=action)
-
-    def test_required_const_actions(self):
-        for action in ['store_const', 'append_const']:
-
-            # nargs is always disallowed
-            self.assertTypeError('-x', nargs='+', action=action)
-
-    def test_parsers_action_missing_params(self):
-        self.assertTypeError('command', action='parsers')
-        self.assertTypeError('command', action='parsers', prog='PROG')
-        self.assertTypeError('command', action='parsers',
-                             parser_class=argparse.ArgumentParser)
-
-    def test_required_positional(self):
-        self.assertTypeError('foo', required=True)
-
-    def test_user_defined_action(self):
-
-        class Success(Exception):
-            pass
-
-        class Action(object):
-
-            def __init__(self,
-                         option_strings,
-                         dest,
-                         const,
-                         default,
-                         required=False):
-                if dest == 'spam':
-                    if const is Success:
-                        if default is Success:
-                            raise Success()
-
-            def __call__(self, *args, **kwargs):
-                pass
-
-        parser = argparse.ArgumentParser()
-        self.assertRaises(Success, parser.add_argument, '--spam',
-                          action=Action, default=Success, const=Success)
-        self.assertRaises(Success, parser.add_argument, 'spam',
-                          action=Action, default=Success, const=Success)
-
-# ================================
-# Actions returned by add_argument
-# ================================
-
-class TestActionsReturned(TestCase):
-
-    def test_dest(self):
-        parser = argparse.ArgumentParser()
-        action = parser.add_argument('--foo')
-        self.assertEqual(action.dest, 'foo')
-        action = parser.add_argument('-b', '--bar')
-        self.assertEqual(action.dest, 'bar')
-        action = parser.add_argument('-x', '-y')
-        self.assertEqual(action.dest, 'x')
-
-    def test_misc(self):
-        parser = argparse.ArgumentParser()
-        action = parser.add_argument('--foo', nargs='?', const=42,
-                                     default=84, type=int, choices=[1, 2],
-                                     help='FOO', metavar='BAR', dest='baz')
-        self.assertEqual(action.nargs, '?')
-        self.assertEqual(action.const, 42)
-        self.assertEqual(action.default, 84)
-        self.assertEqual(action.type, int)
-        self.assertEqual(action.choices, [1, 2])
-        self.assertEqual(action.help, 'FOO')
-        self.assertEqual(action.metavar, 'BAR')
-        self.assertEqual(action.dest, 'baz')
-
-
-# ================================
-# Argument conflict handling tests
-# ================================
-
-class TestConflictHandling(TestCase):
-
-    def test_bad_type(self):
-        self.assertRaises(ValueError, argparse.ArgumentParser,
-                          conflict_handler='foo')
-
-    def test_conflict_error(self):
-        parser = argparse.ArgumentParser()
-        parser.add_argument('-x')
-        self.assertRaises(argparse.ArgumentError,
-                          parser.add_argument, '-x')
-        parser.add_argument('--spam')
-        self.assertRaises(argparse.ArgumentError,
-                          parser.add_argument, '--spam')
-
-    def test_resolve_error(self):
-        get_parser = argparse.ArgumentParser
-        parser = get_parser(prog='PROG', conflict_handler='resolve')
-
-        parser.add_argument('-x', help='OLD X')
-        parser.add_argument('-x', help='NEW X')
-        self.assertEqual(parser.format_help(), textwrap.dedent('''\
-            usage: PROG [-h] [-x X]
-
-            optional arguments:
-              -h, --help  show this help message and exit
-              -x X        NEW X
-            '''))
-
-        parser.add_argument('--spam', metavar='OLD_SPAM')
-        parser.add_argument('--spam', metavar='NEW_SPAM')
-        self.assertEqual(parser.format_help(), textwrap.dedent('''\
-            usage: PROG [-h] [-x X] [--spam NEW_SPAM]
-
-            optional arguments:
-              -h, --help       show this help message and exit
-              -x X             NEW X
-              --spam NEW_SPAM
-            '''))
-
-
-# =============================
-# Help and Version option tests
-# =============================
-
-class TestOptionalsHelpVersionActions(TestCase):
-    """Test the help and version actions"""
-
-    def _get_error(self, func, *args, **kwargs):
-        try:
-            func(*args, **kwargs)
-        except ArgumentParserError:
-            return sys.exc_info()[1]
-        else:
-            self.assertRaises(ArgumentParserError, func, *args, **kwargs)
-
-    def assertPrintHelpExit(self, parser, args_str):
-        self.assertEqual(
-            parser.format_help(),
-            self._get_error(parser.parse_args, args_str.split()).stdout)
-
-    def assertPrintVersionExit(self, parser, args_str):
-        self.assertEqual(
-            parser.format_version(),
-            self._get_error(parser.parse_args, args_str.split()).stderr)
-
-    def assertArgumentParserError(self, parser, *args):
-        self.assertRaises(ArgumentParserError, parser.parse_args, args)
-
-    def test_version(self):
-        parser = ErrorRaisingArgumentParser(version='1.0')
-        self.assertPrintHelpExit(parser, '-h')
-        self.assertPrintHelpExit(parser, '--help')
-        self.assertPrintVersionExit(parser, '-v')
-        self.assertPrintVersionExit(parser, '--version')
-
-    def test_version_format(self):
-        parser = ErrorRaisingArgumentParser(prog='PPP', version='%(prog)s 3.5')
-        msg = self._get_error(parser.parse_args, ['-v']).stderr
-        self.assertEqual('PPP 3.5\n', msg)
-
-    def test_version_no_help(self):
-        parser = ErrorRaisingArgumentParser(add_help=False, version='1.0')
-        self.assertArgumentParserError(parser, '-h')
-        self.assertArgumentParserError(parser, '--help')
-        self.assertPrintVersionExit(parser, '-v')
-        self.assertPrintVersionExit(parser, '--version')
-
-    def test_version_action(self):
-        parser = ErrorRaisingArgumentParser(prog='XXX')
-        parser.add_argument('-V', action='version', version='%(prog)s 3.7')
-        msg = self._get_error(parser.parse_args, ['-V']).stderr
-        self.assertEqual('XXX 3.7\n', msg)
-
-    def test_no_help(self):
-        parser = ErrorRaisingArgumentParser(add_help=False)
-        self.assertArgumentParserError(parser, '-h')
-        self.assertArgumentParserError(parser, '--help')
-        self.assertArgumentParserError(parser, '-v')
-        self.assertArgumentParserError(parser, '--version')
-
-    def test_alternate_help_version(self):
-        parser = ErrorRaisingArgumentParser()
-        parser.add_argument('-x', action='help')
-        parser.add_argument('-y', action='version')
-        self.assertPrintHelpExit(parser, '-x')
-        self.assertPrintVersionExit(parser, '-y')
-        self.assertArgumentParserError(parser, '-v')
-        self.assertArgumentParserError(parser, '--version')
-
-    def test_help_version_extra_arguments(self):
-        parser = ErrorRaisingArgumentParser(version='1.0')
-        parser.add_argument('-x', action='store_true')
-        parser.add_argument('y')
-
-        # try all combinations of valid prefixes and suffixes
-        valid_prefixes = ['', '-x', 'foo', '-x bar', 'baz -x']
-        valid_suffixes = valid_prefixes + ['--bad-option', 'foo bar baz']
-        for prefix in valid_prefixes:
-            for suffix in valid_suffixes:
-                format = '%s %%s %s' % (prefix, suffix)
-            self.assertPrintHelpExit(parser, format % '-h')
-            self.assertPrintHelpExit(parser, format % '--help')
-            self.assertPrintVersionExit(parser, format % '-v')
-            self.assertPrintVersionExit(parser, format % '--version')
-
-
-# ======================
-# str() and repr() tests
-# ======================
-
-class TestStrings(TestCase):
-    """Test str()  and repr() on Optionals and Positionals"""
-
-    def assertStringEqual(self, obj, result_string):
-        for func in [str, repr]:
-            self.assertEqual(func(obj), result_string)
-
-    def test_optional(self):
-        option = argparse.Action(
-            option_strings=['--foo', '-a', '-b'],
-            dest='b',
-            type='int',
-            nargs='+',
-            default=42,
-            choices=[1, 2, 3],
-            help='HELP',
-            metavar='METAVAR')
-        string = (
-            "Action(option_strings=['--foo', '-a', '-b'], dest='b', "
-            "nargs='+', const=None, default=42, type='int', "
-            "choices=[1, 2, 3], help='HELP', metavar='METAVAR')")
-        self.assertStringEqual(option, string)
-
-    def test_argument(self):
-        argument = argparse.Action(
-            option_strings=[],
-            dest='x',
-            type=float,
-            nargs='?',
-            default=2.5,
-            choices=[0.5, 1.5, 2.5],
-            help='H HH H',
-            metavar='MV MV MV')
-        string = (
-            "Action(option_strings=[], dest='x', nargs='?', "
-            "const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], "
-            "help='H HH H', metavar='MV MV MV')" % float)
-        self.assertStringEqual(argument, string)
-
-    def test_namespace(self):
-        ns = argparse.Namespace(foo=42, bar='spam')
-        string = "Namespace(bar='spam', foo=42)"
-        self.assertStringEqual(ns, string)
-
-    def test_parser(self):
-        parser = argparse.ArgumentParser(prog='PROG')
-        string = (
-            "ArgumentParser(prog='PROG', usage=None, description=None, "
-            "version=None, formatter_class=%r, conflict_handler='error', "
-            "add_help=True)" % argparse.HelpFormatter)
-        self.assertStringEqual(parser, string)
-
-# ===============
-# Namespace tests
-# ===============
-
-class TestNamespace(TestCase):
-
-    def test_constructor(self):
-        ns = argparse.Namespace()
-        self.assertRaises(AttributeError, getattr, ns, 'x')
-
-        ns = argparse.Namespace(a=42, b='spam')
-        self.assertEqual(ns.a, 42)
-        self.assertEqual(ns.b, 'spam')
-
-    def test_equality(self):
-        ns1 = argparse.Namespace(a=1, b=2)
-        ns2 = argparse.Namespace(b=2, a=1)
-        ns3 = argparse.Namespace(a=1)
-        ns4 = argparse.Namespace(b=2)
-
-        self.assertEqual(ns1, ns2)
-        self.assertNotEqual(ns1, ns3)
-        self.assertNotEqual(ns1, ns4)
-        self.assertNotEqual(ns2, ns3)
-        self.assertNotEqual(ns2, ns4)
-        self.assertTrue(ns1 != ns3)
-        self.assertTrue(ns1 != ns4)
-        self.assertTrue(ns2 != ns3)
-        self.assertTrue(ns2 != ns4)
-
-
-# ===================
-# File encoding tests
-# ===================
-
-class TestEncoding(TestCase):
-
-    def _test_module_encoding(self, path):
-        path, _ = os.path.splitext(path)
-        path += ".py"
-        with codecs.open(path, 'r', 'utf8') as f:
-            f.read()
-
-    def test_argparse_module_encoding(self):
-        self._test_module_encoding(argparse.__file__)
-
-    def test_test_argparse_module_encoding(self):
-        self._test_module_encoding(__file__)
-
-# ===================
-# ArgumentError tests
-# ===================
-
-class TestArgumentError(TestCase):
-
-    def test_argument_error(self):
-        msg = "my error here"
-        error = argparse.ArgumentError(None, msg)
-        self.assertEqual(str(error), msg)
-
-# =======================
-# ArgumentTypeError tests
-# =======================
-
-class TestArgumentTypeError(TestCase):
-
-    def test_argument_type_error(self):
-
-        def spam(string):
-            raise argparse.ArgumentTypeError('spam!')
-
-        parser = ErrorRaisingArgumentParser(prog='PROG', add_help=False)
-        parser.add_argument('x', type=spam)
-        try:
-            parser.parse_args(['XXX'])
-        except ArgumentParserError:
-            expected = 'usage: PROG x\nPROG: error: argument x: spam!\n'
-            msg = sys.exc_info()[1].stderr
-            self.assertEqual(expected, msg)
-        else:
-            self.fail()
-
-# ======================
-# parse_known_args tests
-# ======================
-
-class TestParseKnownArgs(TestCase):
-
-    def test_optionals(self):
-        parser = argparse.ArgumentParser()
-        parser.add_argument('--foo')
-        args, extras = parser.parse_known_args('--foo F --bar --baz'.split())
-        self.assertEqual(NS(foo='F'), args)
-        self.assertEqual(['--bar', '--baz'], extras)
-
-    def test_mixed(self):
-        parser = argparse.ArgumentParser()
-        parser.add_argument('-v', nargs='?', const=1, type=int)
-        parser.add_argument('--spam', action='store_false')
-        parser.add_argument('badger')
-
-        argv = ["B", "C", "--foo", "-v", "3", "4"]
-        args, extras = parser.parse_known_args(argv)
-        self.assertEqual(NS(v=3, spam=True, badger="B"), args)
-        self.assertEqual(["C", "--foo", "4"], extras)
-
-# ==========================
-# add_argument metavar tests
-# ==========================
-
-class TestAddArgumentMetavar(TestCase):
-
-    EXPECTED_MESSAGE = "length of metavar tuple does not match nargs"
-
-    def do_test_no_exception(self, nargs, metavar):
-        parser = argparse.ArgumentParser()
-        parser.add_argument("--foo", nargs=nargs, metavar=metavar)
-
-    def do_test_exception(self, nargs, metavar):
-        parser = argparse.ArgumentParser()
-        with self.assertRaises(ValueError) as cm:
-            parser.add_argument("--foo", nargs=nargs, metavar=metavar)
-        self.assertEqual(cm.exception.args[0], self.EXPECTED_MESSAGE)
-
-    # Unit tests for different values of metavar when nargs=None
-
-    def test_nargs_None_metavar_string(self):
-        self.do_test_no_exception(nargs=None, metavar="1")
-
-    def test_nargs_None_metavar_length0(self):
-        self.do_test_exception(nargs=None, metavar=tuple())
-
-    def test_nargs_None_metavar_length1(self):
-        self.do_test_no_exception(nargs=None, metavar=("1"))
-
-    def test_nargs_None_metavar_length2(self):
-        self.do_test_exception(nargs=None, metavar=("1", "2"))
-
-    def test_nargs_None_metavar_length3(self):
-        self.do_test_exception(nargs=None, metavar=("1", "2", "3"))
-
-    # Unit tests for different values of metavar when nargs=?
-
-    def test_nargs_optional_metavar_string(self):
-        self.do_test_no_exception(nargs="?", metavar="1")
-
-    def test_nargs_optional_metavar_length0(self):
-        self.do_test_exception(nargs="?", metavar=tuple())
-
-    def test_nargs_optional_metavar_length1(self):
-        self.do_test_no_exception(nargs="?", metavar=("1"))
-
-    def test_nargs_optional_metavar_length2(self):
-        self.do_test_exception(nargs="?", metavar=("1", "2"))
-
-    def test_nargs_optional_metavar_length3(self):
-        self.do_test_exception(nargs="?", metavar=("1", "2", "3"))
-
-    # Unit tests for different values of metavar when nargs=*
-
-    def test_nargs_zeroormore_metavar_string(self):
-        self.do_test_no_exception(nargs="*", metavar="1")
-
-    def test_nargs_zeroormore_metavar_length0(self):
-        self.do_test_exception(nargs="*", metavar=tuple())
-
-    def test_nargs_zeroormore_metavar_length1(self):
-        self.do_test_no_exception(nargs="*", metavar=("1"))
-
-    def test_nargs_zeroormore_metavar_length2(self):
-        self.do_test_no_exception(nargs="*", metavar=("1", "2"))
-
-    def test_nargs_zeroormore_metavar_length3(self):
-        self.do_test_exception(nargs="*", metavar=("1", "2", "3"))
-
-    # Unit tests for different values of metavar when nargs=+
-
-    def test_nargs_oneormore_metavar_string(self):
-        self.do_test_no_exception(nargs="+", metavar="1")
-
-    def test_nargs_oneormore_metavar_length0(self):
-        self.do_test_exception(nargs="+", metavar=tuple())
-
-    def test_nargs_oneormore_metavar_length1(self):
-        self.do_test_no_exception(nargs="+", metavar=("1"))
-
-    def test_nargs_oneormore_metavar_length2(self):
-        self.do_test_no_exception(nargs="+", metavar=("1", "2"))
-
-    def test_nargs_oneormore_metavar_length3(self):
-        self.do_test_exception(nargs="+", metavar=("1", "2", "3"))
-
-    # Unit tests for different values of metavar when nargs=...
-
-    def test_nargs_remainder_metavar_string(self):
-        self.do_test_no_exception(nargs="...", metavar="1")
-
-    def test_nargs_remainder_metavar_length0(self):
-        self.do_test_no_exception(nargs="...", metavar=tuple())
-
-    def test_nargs_remainder_metavar_length1(self):
-        self.do_test_no_exception(nargs="...", metavar=("1"))
-
-    def test_nargs_remainder_metavar_length2(self):
-        self.do_test_no_exception(nargs="...", metavar=("1", "2"))
-
-    def test_nargs_remainder_metavar_length3(self):
-        self.do_test_no_exception(nargs="...", metavar=("1", "2", "3"))
-
-    # Unit tests for different values of metavar when nargs=A...
-
-    def test_nargs_parser_metavar_string(self):
-        self.do_test_no_exception(nargs="A...", metavar="1")
-
-    def test_nargs_parser_metavar_length0(self):
-        self.do_test_exception(nargs="A...", metavar=tuple())
-
-    def test_nargs_parser_metavar_length1(self):
-        self.do_test_no_exception(nargs="A...", metavar=("1"))
-
-    def test_nargs_parser_metavar_length2(self):
-        self.do_test_exception(nargs="A...", metavar=("1", "2"))
-
-    def test_nargs_parser_metavar_length3(self):
-        self.do_test_exception(nargs="A...", metavar=("1", "2", "3"))
-
-    # Unit tests for different values of metavar when nargs=1
-
-    def test_nargs_1_metavar_string(self):
-        self.do_test_no_exception(nargs=1, metavar="1")
-
-    def test_nargs_1_metavar_length0(self):
-        self.do_test_exception(nargs=1, metavar=tuple())
-
-    def test_nargs_1_metavar_length1(self):
-        self.do_test_no_exception(nargs=1, metavar=("1"))
-
-    def test_nargs_1_metavar_length2(self):
-        self.do_test_exception(nargs=1, metavar=("1", "2"))
-
-    def test_nargs_1_metavar_length3(self):
-        self.do_test_exception(nargs=1, metavar=("1", "2", "3"))
-
-    # Unit tests for different values of metavar when nargs=2
-
-    def test_nargs_2_metavar_string(self):
-        self.do_test_no_exception(nargs=2, metavar="1")
-
-    def test_nargs_2_metavar_length0(self):
-        self.do_test_exception(nargs=2, metavar=tuple())
-
-    def test_nargs_2_metavar_length1(self):
-        self.do_test_no_exception(nargs=2, metavar=("1"))
-
-    def test_nargs_2_metavar_length2(self):
-        self.do_test_no_exception(nargs=2, metavar=("1", "2"))
-
-    def test_nargs_2_metavar_length3(self):
-        self.do_test_exception(nargs=2, metavar=("1", "2", "3"))
-
-    # Unit tests for different values of metavar when nargs=3
-
-    def test_nargs_3_metavar_string(self):
-        self.do_test_no_exception(nargs=3, metavar="1")
-
-    def test_nargs_3_metavar_length0(self):
-        self.do_test_exception(nargs=3, metavar=tuple())
-
-    def test_nargs_3_metavar_length1(self):
-        self.do_test_no_exception(nargs=3, metavar=("1"))
-
-    def test_nargs_3_metavar_length2(self):
-        self.do_test_exception(nargs=3, metavar=("1", "2"))
-
-    def test_nargs_3_metavar_length3(self):
-        self.do_test_no_exception(nargs=3, metavar=("1", "2", "3"))
-
-# ============================
-# from argparse import * tests
-# ============================
-
-class TestImportStar(TestCase):
-
-    def test(self):
-        for name in argparse.__all__:
-            self.assertTrue(hasattr(argparse, name))
-
-    def test_all_exports_everything_but_modules(self):
-        items = [
-            name
-            for name, value in vars(argparse).items()
-            if not name.startswith("_")
-            if not inspect.ismodule(value)
-        ]
-        self.assertEqual(sorted(items), sorted(argparse.__all__))
-
-def test_main():
-    # silence warnings about version argument - these are expected
-    with test_support.check_warnings(
-            ('The "version" argument to ArgumentParser is deprecated.',
-             DeprecationWarning),
-            ('The (format|print)_version method is deprecated',
-             DeprecationWarning)):
-        test_support.run_unittest(__name__)
-    # Remove global references to avoid looking like we have refleaks.
-    RFile.seen = {}
-    WFile.seen = set()
-
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_array.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_array.py
deleted file mode 100644
index e9adeb7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_array.py
+++ /dev/null
@@ -1,1095 +0,0 @@
-#! /usr/bin/env python
-"""Test the arraymodule.
-   Roger E. Masse
-"""
-
-import unittest
-from test import test_support
-from weakref import proxy
-import array, cStringIO
-from cPickle import loads, dumps, HIGHEST_PROTOCOL
-
-class ArraySubclass(array.array):
-    pass
-
-class ArraySubclassWithKwargs(array.array):
-    def __init__(self, typecode, newarg=None):
-        array.array.__init__(self, typecode)
-
-tests = [] # list to accumulate all tests
-typecodes = "cubBhHiIlLfd"
-
-class BadConstructorTest(unittest.TestCase):
-
-    def test_constructor(self):
-        self.assertRaises(TypeError, array.array)
-        self.assertRaises(TypeError, array.array, spam=42)
-        self.assertRaises(TypeError, array.array, 'xx')
-        self.assertRaises(ValueError, array.array, 'x')
-
-tests.append(BadConstructorTest)
-
-class BaseTest(unittest.TestCase):
-    # Required class attributes (provided by subclasses
-    # typecode: the typecode to test
-    # example: an initializer usable in the constructor for this type
-    # smallerexample: the same length as example, but smaller
-    # biggerexample: the same length as example, but bigger
-    # outside: An entry that is not in example
-    # minitemsize: the minimum guaranteed itemsize
-
-    def assertEntryEqual(self, entry1, entry2):
-        self.assertEqual(entry1, entry2)
-
-    def badtypecode(self):
-        # Return a typecode that is different from our own
-        return typecodes[(typecodes.index(self.typecode)+1) % len(typecodes)]
-
-    def test_constructor(self):
-        a = array.array(self.typecode)
-        self.assertEqual(a.typecode, self.typecode)
-        self.assertTrue(a.itemsize>=self.minitemsize)
-        self.assertRaises(TypeError, array.array, self.typecode, None)
-
-    def test_len(self):
-        a = array.array(self.typecode)
-        a.append(self.example[0])
-        self.assertEqual(len(a), 1)
-
-        a = array.array(self.typecode, self.example)
-        self.assertEqual(len(a), len(self.example))
-
-    def test_buffer_info(self):
-        a = array.array(self.typecode, self.example)
-        self.assertRaises(TypeError, a.buffer_info, 42)
-        bi = a.buffer_info()
-        self.assertIsInstance(bi, tuple)
-        self.assertEqual(len(bi), 2)
-        self.assertIsInstance(bi[0], (int, long))
-        self.assertIsInstance(bi[1], int)
-        self.assertEqual(bi[1], len(a))
-
-    def test_byteswap(self):
-        a = array.array(self.typecode, self.example)
-        self.assertRaises(TypeError, a.byteswap, 42)
-        if a.itemsize in (1, 2, 4, 8):
-            b = array.array(self.typecode, self.example)
-            b.byteswap()
-            if a.itemsize==1:
-                self.assertEqual(a, b)
-            else:
-                self.assertNotEqual(a, b)
-            b.byteswap()
-            self.assertEqual(a, b)
-
-    def test_copy(self):
-        import copy
-        a = array.array(self.typecode, self.example)
-        b = copy.copy(a)
-        self.assertNotEqual(id(a), id(b))
-        self.assertEqual(a, b)
-
-    def test_deepcopy(self):
-        import copy
-        a = array.array(self.typecode, self.example)
-        b = copy.deepcopy(a)
-        self.assertNotEqual(id(a), id(b))
-        self.assertEqual(a, b)
-
-    def test_pickle(self):
-        for protocol in range(HIGHEST_PROTOCOL + 1):
-            a = array.array(self.typecode, self.example)
-            b = loads(dumps(a, protocol))
-            self.assertNotEqual(id(a), id(b))
-            self.assertEqual(a, b)
-
-            a = ArraySubclass(self.typecode, self.example)
-            a.x = 10
-            b = loads(dumps(a, protocol))
-            self.assertNotEqual(id(a), id(b))
-            self.assertEqual(a, b)
-            self.assertEqual(a.x, b.x)
-            self.assertEqual(type(a), type(b))
-
-    def test_pickle_for_empty_array(self):
-        for protocol in range(HIGHEST_PROTOCOL + 1):
-            a = array.array(self.typecode)
-            b = loads(dumps(a, protocol))
-            self.assertNotEqual(id(a), id(b))
-            self.assertEqual(a, b)
-
-            a = ArraySubclass(self.typecode)
-            a.x = 10
-            b = loads(dumps(a, protocol))
-            self.assertNotEqual(id(a), id(b))
-            self.assertEqual(a, b)
-            self.assertEqual(a.x, b.x)
-            self.assertEqual(type(a), type(b))
-
-    def test_insert(self):
-        a = array.array(self.typecode, self.example)
-        a.insert(0, self.example[0])
-        self.assertEqual(len(a), 1+len(self.example))
-        self.assertEqual(a[0], a[1])
-        self.assertRaises(TypeError, a.insert)
-        self.assertRaises(TypeError, a.insert, None)
-        self.assertRaises(TypeError, a.insert, 0, None)
-
-        a = array.array(self.typecode, self.example)
-        a.insert(-1, self.example[0])
-        self.assertEqual(
-            a,
-            array.array(
-                self.typecode,
-                self.example[:-1] + self.example[:1] + self.example[-1:]
-            )
-        )
-
-        a = array.array(self.typecode, self.example)
-        a.insert(-1000, self.example[0])
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example[:1] + self.example)
-        )
-
-        a = array.array(self.typecode, self.example)
-        a.insert(1000, self.example[0])
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example + self.example[:1])
-        )
-
-    def test_tofromfile(self):
-        a = array.array(self.typecode, 2*self.example)
-        self.assertRaises(TypeError, a.tofile)
-        self.assertRaises(TypeError, a.tofile, cStringIO.StringIO())
-        test_support.unlink(test_support.TESTFN)
-        f = open(test_support.TESTFN, 'wb')
-        try:
-            a.tofile(f)
-            f.close()
-            b = array.array(self.typecode)
-            f = open(test_support.TESTFN, 'rb')
-            self.assertRaises(TypeError, b.fromfile)
-            self.assertRaises(
-                TypeError,
-                b.fromfile,
-                cStringIO.StringIO(), len(self.example)
-            )
-            b.fromfile(f, len(self.example))
-            self.assertEqual(b, array.array(self.typecode, self.example))
-            self.assertNotEqual(a, b)
-            b.fromfile(f, len(self.example))
-            self.assertEqual(a, b)
-            self.assertRaises(EOFError, b.fromfile, f, 1)
-            f.close()
-        finally:
-            if not f.closed:
-                f.close()
-            test_support.unlink(test_support.TESTFN)
-
-    def test_fromfile_ioerror(self):
-        # Issue #5395: Check if fromfile raises a proper IOError
-        # instead of EOFError.
-        a = array.array(self.typecode)
-        f = open(test_support.TESTFN, 'wb')
-        try:
-            self.assertRaises(IOError, a.fromfile, f, len(self.example))
-        finally:
-            f.close()
-            test_support.unlink(test_support.TESTFN)
-
-    def test_filewrite(self):
-        a = array.array(self.typecode, 2*self.example)
-        f = open(test_support.TESTFN, 'wb')
-        try:
-            f.write(a)
-            f.close()
-            b = array.array(self.typecode)
-            f = open(test_support.TESTFN, 'rb')
-            b.fromfile(f, len(self.example))
-            self.assertEqual(b, array.array(self.typecode, self.example))
-            self.assertNotEqual(a, b)
-            b.fromfile(f, len(self.example))
-            self.assertEqual(a, b)
-            f.close()
-        finally:
-            if not f.closed:
-                f.close()
-            test_support.unlink(test_support.TESTFN)
-
-    def test_tofromlist(self):
-        a = array.array(self.typecode, 2*self.example)
-        b = array.array(self.typecode)
-        self.assertRaises(TypeError, a.tolist, 42)
-        self.assertRaises(TypeError, b.fromlist)
-        self.assertRaises(TypeError, b.fromlist, 42)
-        self.assertRaises(TypeError, b.fromlist, [None])
-        b.fromlist(a.tolist())
-        self.assertEqual(a, b)
-
-    def test_tofromstring(self):
-        a = array.array(self.typecode, 2*self.example)
-        b = array.array(self.typecode)
-        self.assertRaises(TypeError, a.tostring, 42)
-        self.assertRaises(TypeError, b.fromstring)
-        self.assertRaises(TypeError, b.fromstring, 42)
-        b.fromstring(a.tostring())
-        self.assertEqual(a, b)
-        if a.itemsize>1:
-            self.assertRaises(ValueError, b.fromstring, "x")
-
-    def test_repr(self):
-        a = array.array(self.typecode, 2*self.example)
-        self.assertEqual(a, eval(repr(a), {"array": array.array}))
-
-        a = array.array(self.typecode)
-        self.assertEqual(repr(a), "array('%s')" % self.typecode)
-
-    def test_str(self):
-        a = array.array(self.typecode, 2*self.example)
-        str(a)
-
-    def test_cmp(self):
-        a = array.array(self.typecode, self.example)
-        self.assertTrue((a == 42) is False)
-        self.assertTrue((a != 42) is True)
-
-        self.assertTrue((a == a) is True)
-        self.assertTrue((a != a) is False)
-        self.assertTrue((a < a) is False)
-        self.assertTrue((a <= a) is True)
-        self.assertTrue((a > a) is False)
-        self.assertTrue((a >= a) is True)
-
-        al = array.array(self.typecode, self.smallerexample)
-        ab = array.array(self.typecode, self.biggerexample)
-
-        self.assertTrue((a == 2*a) is False)
-        self.assertTrue((a != 2*a) is True)
-        self.assertTrue((a < 2*a) is True)
-        self.assertTrue((a <= 2*a) is True)
-        self.assertTrue((a > 2*a) is False)
-        self.assertTrue((a >= 2*a) is False)
-
-        self.assertTrue((a == al) is False)
-        self.assertTrue((a != al) is True)
-        self.assertTrue((a < al) is False)
-        self.assertTrue((a <= al) is False)
-        self.assertTrue((a > al) is True)
-        self.assertTrue((a >= al) is True)
-
-        self.assertTrue((a == ab) is False)
-        self.assertTrue((a != ab) is True)
-        self.assertTrue((a < ab) is True)
-        self.assertTrue((a <= ab) is True)
-        self.assertTrue((a > ab) is False)
-        self.assertTrue((a >= ab) is False)
-
-    def test_add(self):
-        a = array.array(self.typecode, self.example) \
-            + array.array(self.typecode, self.example[::-1])
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example + self.example[::-1])
-        )
-
-        b = array.array(self.badtypecode())
-        self.assertRaises(TypeError, a.__add__, b)
-
-        self.assertRaises(TypeError, a.__add__, "bad")
-
-    def test_iadd(self):
-        a = array.array(self.typecode, self.example[::-1])
-        b = a
-        a += array.array(self.typecode, 2*self.example)
-        self.assertTrue(a is b)
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example[::-1]+2*self.example)
-        )
-        a = array.array(self.typecode, self.example)
-        a += a
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example + self.example)
-        )
-
-        b = array.array(self.badtypecode())
-        self.assertRaises(TypeError, a.__add__, b)
-
-        self.assertRaises(TypeError, a.__iadd__, "bad")
-
-    def test_mul(self):
-        a = 5*array.array(self.typecode, self.example)
-        self.assertEqual(
-            a,
-            array.array(self.typecode, 5*self.example)
-        )
-
-        a = array.array(self.typecode, self.example)*5
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example*5)
-        )
-
-        a = 0*array.array(self.typecode, self.example)
-        self.assertEqual(
-            a,
-            array.array(self.typecode)
-        )
-
-        a = (-1)*array.array(self.typecode, self.example)
-        self.assertEqual(
-            a,
-            array.array(self.typecode)
-        )
-
-        self.assertRaises(TypeError, a.__mul__, "bad")
-
-    def test_imul(self):
-        a = array.array(self.typecode, self.example)
-        b = a
-
-        a *= 5
-        self.assertTrue(a is b)
-        self.assertEqual(
-            a,
-            array.array(self.typecode, 5*self.example)
-        )
-
-        a *= 0
-        self.assertTrue(a is b)
-        self.assertEqual(a, array.array(self.typecode))
-
-        a *= 1000
-        self.assertTrue(a is b)
-        self.assertEqual(a, array.array(self.typecode))
-
-        a *= -1
-        self.assertTrue(a is b)
-        self.assertEqual(a, array.array(self.typecode))
-
-        a = array.array(self.typecode, self.example)
-        a *= -1
-        self.assertEqual(a, array.array(self.typecode))
-
-        self.assertRaises(TypeError, a.__imul__, "bad")
-
-    def test_getitem(self):
-        a = array.array(self.typecode, self.example)
-        self.assertEntryEqual(a[0], self.example[0])
-        self.assertEntryEqual(a[0L], self.example[0])
-        self.assertEntryEqual(a[-1], self.example[-1])
-        self.assertEntryEqual(a[-1L], self.example[-1])
-        self.assertEntryEqual(a[len(self.example)-1], self.example[-1])
-        self.assertEntryEqual(a[-len(self.example)], self.example[0])
-        self.assertRaises(TypeError, a.__getitem__)
-        self.assertRaises(IndexError, a.__getitem__, len(self.example))
-        self.assertRaises(IndexError, a.__getitem__, -len(self.example)-1)
-
-    def test_setitem(self):
-        a = array.array(self.typecode, self.example)
-        a[0] = a[-1]
-        self.assertEntryEqual(a[0], a[-1])
-
-        a = array.array(self.typecode, self.example)
-        a[0L] = a[-1]
-        self.assertEntryEqual(a[0], a[-1])
-
-        a = array.array(self.typecode, self.example)
-        a[-1] = a[0]
-        self.assertEntryEqual(a[0], a[-1])
-
-        a = array.array(self.typecode, self.example)
-        a[-1L] = a[0]
-        self.assertEntryEqual(a[0], a[-1])
-
-        a = array.array(self.typecode, self.example)
-        a[len(self.example)-1] = a[0]
-        self.assertEntryEqual(a[0], a[-1])
-
-        a = array.array(self.typecode, self.example)
-        a[-len(self.example)] = a[-1]
-        self.assertEntryEqual(a[0], a[-1])
-
-        self.assertRaises(TypeError, a.__setitem__)
-        self.assertRaises(TypeError, a.__setitem__, None)
-        self.assertRaises(TypeError, a.__setitem__, 0, None)
-        self.assertRaises(
-            IndexError,
-            a.__setitem__,
-            len(self.example), self.example[0]
-        )
-        self.assertRaises(
-            IndexError,
-            a.__setitem__,
-            -len(self.example)-1, self.example[0]
-        )
-
-    def test_delitem(self):
-        a = array.array(self.typecode, self.example)
-        del a[0]
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example[1:])
-        )
-
-        a = array.array(self.typecode, self.example)
-        del a[-1]
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example[:-1])
-        )
-
-        a = array.array(self.typecode, self.example)
-        del a[len(self.example)-1]
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example[:-1])
-        )
-
-        a = array.array(self.typecode, self.example)
-        del a[-len(self.example)]
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example[1:])
-        )
-
-        self.assertRaises(TypeError, a.__delitem__)
-        self.assertRaises(TypeError, a.__delitem__, None)
-        self.assertRaises(IndexError, a.__delitem__, len(self.example))
-        self.assertRaises(IndexError, a.__delitem__, -len(self.example)-1)
-
-    def test_getslice(self):
-        a = array.array(self.typecode, self.example)
-        self.assertEqual(a[:], a)
-
-        self.assertEqual(
-            a[1:],
-            array.array(self.typecode, self.example[1:])
-        )
-
-        self.assertEqual(
-            a[:1],
-            array.array(self.typecode, self.example[:1])
-        )
-
-        self.assertEqual(
-            a[:-1],
-            array.array(self.typecode, self.example[:-1])
-        )
-
-        self.assertEqual(
-            a[-1:],
-            array.array(self.typecode, self.example[-1:])
-        )
-
-        self.assertEqual(
-            a[-1:-1],
-            array.array(self.typecode)
-        )
-
-        self.assertEqual(
-            a[2:1],
-            array.array(self.typecode)
-        )
-
-        self.assertEqual(
-            a[1000:],
-            array.array(self.typecode)
-        )
-        self.assertEqual(a[-1000:], a)
-        self.assertEqual(a[:1000], a)
-        self.assertEqual(
-            a[:-1000],
-            array.array(self.typecode)
-        )
-        self.assertEqual(a[-1000:1000], a)
-        self.assertEqual(
-            a[2000:1000],
-            array.array(self.typecode)
-        )
-
-    def test_extended_getslice(self):
-        # Test extended slicing by comparing with list slicing
-        # (Assumes list conversion works correctly, too)
-        a = array.array(self.typecode, self.example)
-        indices = (0, None, 1, 3, 19, 100, -1, -2, -31, -100)
-        for start in indices:
-            for stop in indices:
-                # Everything except the initial 0 (invalid step)
-                for step in indices[1:]:
-                    self.assertEqual(list(a[start:stop:step]),
-                                     list(a)[start:stop:step])
-
-    def test_setslice(self):
-        a = array.array(self.typecode, self.example)
-        a[:1] = a
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example + self.example[1:])
-        )
-
-        a = array.array(self.typecode, self.example)
-        a[:-1] = a
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example + self.example[-1:])
-        )
-
-        a = array.array(self.typecode, self.example)
-        a[-1:] = a
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example[:-1] + self.example)
-        )
-
-        a = array.array(self.typecode, self.example)
-        a[1:] = a
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example[:1] + self.example)
-        )
-
-        a = array.array(self.typecode, self.example)
-        a[1:-1] = a
-        self.assertEqual(
-            a,
-            array.array(
-                self.typecode,
-                self.example[:1] + self.example + self.example[-1:]
-            )
-        )
-
-        a = array.array(self.typecode, self.example)
-        a[1000:] = a
-        self.assertEqual(
-            a,
-            array.array(self.typecode, 2*self.example)
-        )
-
-        a = array.array(self.typecode, self.example)
-        a[-1000:] = a
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example)
-        )
-
-        a = array.array(self.typecode, self.example)
-        a[:1000] = a
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example)
-        )
-
-        a = array.array(self.typecode, self.example)
-        a[:-1000] = a
-        self.assertEqual(
-            a,
-            array.array(self.typecode, 2*self.example)
-        )
-
-        a = array.array(self.typecode, self.example)
-        a[1:0] = a
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example[:1] + self.example + self.example[1:])
-        )
-
-        a = array.array(self.typecode, self.example)
-        a[2000:1000] = a
-        self.assertEqual(
-            a,
-            array.array(self.typecode, 2*self.example)
-        )
-
-        a = array.array(self.typecode, self.example)
-        self.assertRaises(TypeError, a.__setslice__, 0, 0, None)
-        self.assertRaises(TypeError, a.__setitem__, slice(0, 0), None)
-        self.assertRaises(TypeError, a.__setitem__, slice(0, 1), None)
-
-        b = array.array(self.badtypecode())
-        self.assertRaises(TypeError, a.__setslice__, 0, 0, b)
-        self.assertRaises(TypeError, a.__setitem__, slice(0, 0), b)
-        self.assertRaises(TypeError, a.__setitem__, slice(0, 1), b)
-
-    def test_extended_set_del_slice(self):
-        indices = (0, None, 1, 3, 19, 100, -1, -2, -31, -100)
-        for start in indices:
-            for stop in indices:
-                # Everything except the initial 0 (invalid step)
-                for step in indices[1:]:
-                    a = array.array(self.typecode, self.example)
-                    L = list(a)
-                    # Make sure we have a slice of exactly the right length,
-                    # but with (hopefully) different data.
-                    data = L[start:stop:step]
-                    data.reverse()
-                    L[start:stop:step] = data
-                    a[start:stop:step] = array.array(self.typecode, data)
-                    self.assertEqual(a, array.array(self.typecode, L))
-
-                    del L[start:stop:step]
-                    del a[start:stop:step]
-                    self.assertEqual(a, array.array(self.typecode, L))
-
-    def test_index(self):
-        example = 2*self.example
-        a = array.array(self.typecode, example)
-        self.assertRaises(TypeError, a.index)
-        for x in example:
-            self.assertEqual(a.index(x), example.index(x))
-        self.assertRaises(ValueError, a.index, None)
-        self.assertRaises(ValueError, a.index, self.outside)
-
-    def test_count(self):
-        example = 2*self.example
-        a = array.array(self.typecode, example)
-        self.assertRaises(TypeError, a.count)
-        for x in example:
-            self.assertEqual(a.count(x), example.count(x))
-        self.assertEqual(a.count(self.outside), 0)
-        self.assertEqual(a.count(None), 0)
-
-    def test_remove(self):
-        for x in self.example:
-            example = 2*self.example
-            a = array.array(self.typecode, example)
-            pos = example.index(x)
-            example2 = example[:pos] + example[pos+1:]
-            a.remove(x)
-            self.assertEqual(a, array.array(self.typecode, example2))
-
-        a = array.array(self.typecode, self.example)
-        self.assertRaises(ValueError, a.remove, self.outside)
-
-        self.assertRaises(ValueError, a.remove, None)
-
-    def test_pop(self):
-        a = array.array(self.typecode)
-        self.assertRaises(IndexError, a.pop)
-
-        a = array.array(self.typecode, 2*self.example)
-        self.assertRaises(TypeError, a.pop, 42, 42)
-        self.assertRaises(TypeError, a.pop, None)
-        self.assertRaises(IndexError, a.pop, len(a))
-        self.assertRaises(IndexError, a.pop, -len(a)-1)
-
-        self.assertEntryEqual(a.pop(0), self.example[0])
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example[1:]+self.example)
-        )
-        self.assertEntryEqual(a.pop(1), self.example[2])
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example[1:2]+self.example[3:]+self.example)
-        )
-        self.assertEntryEqual(a.pop(0), self.example[1])
-        self.assertEntryEqual(a.pop(), self.example[-1])
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example[3:]+self.example[:-1])
-        )
-
-    def test_reverse(self):
-        a = array.array(self.typecode, self.example)
-        self.assertRaises(TypeError, a.reverse, 42)
-        a.reverse()
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example[::-1])
-        )
-
-    def test_extend(self):
-        a = array.array(self.typecode, self.example)
-        self.assertRaises(TypeError, a.extend)
-        a.extend(array.array(self.typecode, self.example[::-1]))
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example+self.example[::-1])
-        )
-
-        a = array.array(self.typecode, self.example)
-        a.extend(a)
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example+self.example)
-        )
-
-        b = array.array(self.badtypecode())
-        self.assertRaises(TypeError, a.extend, b)
-
-        a = array.array(self.typecode, self.example)
-        a.extend(self.example[::-1])
-        self.assertEqual(
-            a,
-            array.array(self.typecode, self.example+self.example[::-1])
-        )
-
-    def test_constructor_with_iterable_argument(self):
-        a = array.array(self.typecode, iter(self.example))
-        b = array.array(self.typecode, self.example)
-        self.assertEqual(a, b)
-
-        # non-iterable argument
-        self.assertRaises(TypeError, array.array, self.typecode, 10)
-
-        # pass through errors raised in __iter__
-        class A:
-            def __iter__(self):
-                raise UnicodeError
-        self.assertRaises(UnicodeError, array.array, self.typecode, A())
-
-        # pass through errors raised in next()
-        def B():
-            raise UnicodeError
-            yield None
-        self.assertRaises(UnicodeError, array.array, self.typecode, B())
-
-    def test_coveritertraverse(self):
-        try:
-            import gc
-        except ImportError:
-            return
-        a = array.array(self.typecode)
-        l = [iter(a)]
-        l.append(l)
-        gc.collect()
-
-    def test_buffer(self):
-        a = array.array(self.typecode, self.example)
-        with test_support.check_py3k_warnings():
-            b = buffer(a)
-        self.assertEqual(b[0], a.tostring()[0])
-
-    def test_weakref(self):
-        s = array.array(self.typecode, self.example)
-        p = proxy(s)
-        self.assertEqual(p.tostring(), s.tostring())
-        s = None
-        self.assertRaises(ReferenceError, len, p)
-
-    def test_bug_782369(self):
-        import sys
-        if hasattr(sys, "getrefcount"):
-            for i in range(10):
-                b = array.array('B', range(64))
-            rc = sys.getrefcount(10)
-            for i in range(10):
-                b = array.array('B', range(64))
-            self.assertEqual(rc, sys.getrefcount(10))
-
-    def test_subclass_with_kwargs(self):
-        # SF bug #1486663 -- this used to erroneously raise a TypeError
-        ArraySubclassWithKwargs('b', newarg=1)
-
-
-class StringTest(BaseTest):
-
-    def test_setitem(self):
-        super(StringTest, self).test_setitem()
-        a = array.array(self.typecode, self.example)
-        self.assertRaises(TypeError, a.__setitem__, 0, self.example[:2])
-
-class CharacterTest(StringTest):
-    typecode = 'c'
-    example = '\x01azAZ\x00\xfe'
-    smallerexample = '\x01azAY\x00\xfe'
-    biggerexample = '\x01azAZ\x00\xff'
-    outside = '\x33'
-    minitemsize = 1
-
-    def test_subbclassing(self):
-        class EditableString(array.array):
-            def __new__(cls, s, *args, **kwargs):
-                return array.array.__new__(cls, 'c', s)
-
-            def __init__(self, s, color='blue'):
-                self.color = color
-
-            def strip(self):
-                self[:] = array.array('c', self.tostring().strip())
-
-            def __repr__(self):
-                return 'EditableString(%r)' % self.tostring()
-
-        s = EditableString("\ttest\r\n")
-        s.strip()
-        self.assertEqual(s.tostring(), "test")
-
-        self.assertEqual(s.color, "blue")
-        s.color = "red"
-        self.assertEqual(s.color, "red")
-        self.assertEqual(s.__dict__.keys(), ["color"])
-
-    def test_nounicode(self):
-        a = array.array(self.typecode, self.example)
-        self.assertRaises(ValueError, a.fromunicode, unicode(''))
-        self.assertRaises(ValueError, a.tounicode)
-
-tests.append(CharacterTest)
-
-if test_support.have_unicode:
-    class UnicodeTest(StringTest):
-        typecode = 'u'
-        example = unicode(r'\x01\u263a\x00\ufeff', 'unicode-escape')
-        smallerexample = unicode(r'\x01\u263a\x00\ufefe', 'unicode-escape')
-        biggerexample = unicode(r'\x01\u263a\x01\ufeff', 'unicode-escape')
-        outside = unicode('\x33')
-        minitemsize = 2
-
-        def test_unicode(self):
-            self.assertRaises(TypeError, array.array, 'b', unicode('foo', 'ascii'))
-
-            a = array.array('u', unicode(r'\xa0\xc2\u1234', 'unicode-escape'))
-            a.fromunicode(unicode(' ', 'ascii'))
-            a.fromunicode(unicode('', 'ascii'))
-            a.fromunicode(unicode('', 'ascii'))
-            a.fromunicode(unicode(r'\x11abc\xff\u1234', 'unicode-escape'))
-            s = a.tounicode()
-            self.assertEqual(
-                s,
-                unicode(r'\xa0\xc2\u1234 \x11abc\xff\u1234', 'unicode-escape')
-            )
-
-            s = unicode(r'\x00="\'a\\b\x80\xff\u0000\u0001\u1234', 'unicode-escape')
-            a = array.array('u', s)
-            self.assertEqual(
-                repr(a),
-                r"""array('u', u'\x00="\'a\\b\x80\xff\x00\x01\u1234')"""
-            )
-
-            self.assertRaises(TypeError, a.fromunicode)
-
-    tests.append(UnicodeTest)
-
-class NumberTest(BaseTest):
-
-    def test_extslice(self):
-        a = array.array(self.typecode, range(5))
-        self.assertEqual(a[::], a)
-        self.assertEqual(a[::2], array.array(self.typecode, [0,2,4]))
-        self.assertEqual(a[1::2], array.array(self.typecode, [1,3]))
-        self.assertEqual(a[::-1], array.array(self.typecode, [4,3,2,1,0]))
-        self.assertEqual(a[::-2], array.array(self.typecode, [4,2,0]))
-        self.assertEqual(a[3::-2], array.array(self.typecode, [3,1]))
-        self.assertEqual(a[-100:100:], a)
-        self.assertEqual(a[100:-100:-1], a[::-1])
-        self.assertEqual(a[-100L:100L:2L], array.array(self.typecode, [0,2,4]))
-        self.assertEqual(a[1000:2000:2], array.array(self.typecode, []))
-        self.assertEqual(a[-1000:-2000:-2], array.array(self.typecode, []))
-
-    def test_delslice(self):
-        a = array.array(self.typecode, range(5))
-        del a[::2]
-        self.assertEqual(a, array.array(self.typecode, [1,3]))
-        a = array.array(self.typecode, range(5))
-        del a[1::2]
-        self.assertEqual(a, array.array(self.typecode, [0,2,4]))
-        a = array.array(self.typecode, range(5))
-        del a[1::-2]
-        self.assertEqual(a, array.array(self.typecode, [0,2,3,4]))
-        a = array.array(self.typecode, range(10))
-        del a[::1000]
-        self.assertEqual(a, array.array(self.typecode, [1,2,3,4,5,6,7,8,9]))
-        # test issue7788
-        a = array.array(self.typecode, range(10))
-        del a[9::1<<333]
-
-    def test_assignment(self):
-        a = array.array(self.typecode, range(10))
-        a[::2] = array.array(self.typecode, [42]*5)
-        self.assertEqual(a, array.array(self.typecode, [42, 1, 42, 3, 42, 5, 42, 7, 42, 9]))
-        a = array.array(self.typecode, range(10))
-        a[::-4] = array.array(self.typecode, [10]*3)
-        self.assertEqual(a, array.array(self.typecode, [0, 10, 2, 3, 4, 10, 6, 7, 8 ,10]))
-        a = array.array(self.typecode, range(4))
-        a[::-1] = a
-        self.assertEqual(a, array.array(self.typecode, [3, 2, 1, 0]))
-        a = array.array(self.typecode, range(10))
-        b = a[:]
-        c = a[:]
-        ins = array.array(self.typecode, range(2))
-        a[2:3] = ins
-        b[slice(2,3)] = ins
-        c[2:3:] = ins
-
-    def test_iterationcontains(self):
-        a = array.array(self.typecode, range(10))
-        self.assertEqual(list(a), range(10))
-        b = array.array(self.typecode, [20])
-        self.assertEqual(a[-1] in a, True)
-        self.assertEqual(b[0] not in a, True)
-
-    def check_overflow(self, lower, upper):
-        # method to be used by subclasses
-
-        # should not overflow assigning lower limit
-        a = array.array(self.typecode, [lower])
-        a[0] = lower
-        # should overflow assigning less than lower limit
-        self.assertRaises(OverflowError, array.array, self.typecode, [lower-1])
-        self.assertRaises(OverflowError, a.__setitem__, 0, lower-1)
-        # should not overflow assigning upper limit
-        a = array.array(self.typecode, [upper])
-        a[0] = upper
-        # should overflow assigning more than upper limit
-        self.assertRaises(OverflowError, array.array, self.typecode, [upper+1])
-        self.assertRaises(OverflowError, a.__setitem__, 0, upper+1)
-
-    def test_subclassing(self):
-        typecode = self.typecode
-        class ExaggeratingArray(array.array):
-            __slots__ = ['offset']
-
-            def __new__(cls, typecode, data, offset):
-                return array.array.__new__(cls, typecode, data)
-
-            def __init__(self, typecode, data, offset):
-                self.offset = offset
-
-            def __getitem__(self, i):
-                return array.array.__getitem__(self, i) + self.offset
-
-        a = ExaggeratingArray(self.typecode, [3, 6, 7, 11], 4)
-        self.assertEntryEqual(a[0], 7)
-
-        self.assertRaises(AttributeError, setattr, a, "color", "blue")
-
-class SignedNumberTest(NumberTest):
-    example = [-1, 0, 1, 42, 0x7f]
-    smallerexample = [-1, 0, 1, 42, 0x7e]
-    biggerexample = [-1, 0, 1, 43, 0x7f]
-    outside = 23
-
-    def test_overflow(self):
-        a = array.array(self.typecode)
-        lower = -1 * long(pow(2, a.itemsize * 8 - 1))
-        upper = long(pow(2, a.itemsize * 8 - 1)) - 1L
-        self.check_overflow(lower, upper)
-
-class UnsignedNumberTest(NumberTest):
-    example = [0, 1, 17, 23, 42, 0xff]
-    smallerexample = [0, 1, 17, 23, 42, 0xfe]
-    biggerexample = [0, 1, 17, 23, 43, 0xff]
-    outside = 0xaa
-
-    def test_overflow(self):
-        a = array.array(self.typecode)
-        lower = 0
-        upper = long(pow(2, a.itemsize * 8)) - 1L
-        self.check_overflow(lower, upper)
-
-
-class ByteTest(SignedNumberTest):
-    typecode = 'b'
-    minitemsize = 1
-tests.append(ByteTest)
-
-class UnsignedByteTest(UnsignedNumberTest):
-    typecode = 'B'
-    minitemsize = 1
-tests.append(UnsignedByteTest)
-
-class ShortTest(SignedNumberTest):
-    typecode = 'h'
-    minitemsize = 2
-tests.append(ShortTest)
-
-class UnsignedShortTest(UnsignedNumberTest):
-    typecode = 'H'
-    minitemsize = 2
-tests.append(UnsignedShortTest)
-
-class IntTest(SignedNumberTest):
-    typecode = 'i'
-    minitemsize = 2
-tests.append(IntTest)
-
-class UnsignedIntTest(UnsignedNumberTest):
-    typecode = 'I'
-    minitemsize = 2
-tests.append(UnsignedIntTest)
-
-class LongTest(SignedNumberTest):
-    typecode = 'l'
-    minitemsize = 4
-tests.append(LongTest)
-
-class UnsignedLongTest(UnsignedNumberTest):
-    typecode = 'L'
-    minitemsize = 4
-tests.append(UnsignedLongTest)
-
-class FPTest(NumberTest):
-    example = [-42.0, 0, 42, 1e5, -1e10]
-    smallerexample = [-42.0, 0, 42, 1e5, -2e10]
-    biggerexample = [-42.0, 0, 42, 1e5, 1e10]
-    outside = 23
-
-    def assertEntryEqual(self, entry1, entry2):
-        self.assertAlmostEqual(entry1, entry2)
-
-    def test_byteswap(self):
-        a = array.array(self.typecode, self.example)
-        self.assertRaises(TypeError, a.byteswap, 42)
-        if a.itemsize in (1, 2, 4, 8):
-            b = array.array(self.typecode, self.example)
-            b.byteswap()
-            if a.itemsize==1:
-                self.assertEqual(a, b)
-            else:
-                # On alphas treating the byte swapped bit patters as
-                # floats/doubles results in floating point exceptions
-                # => compare the 8bit string values instead
-                self.assertNotEqual(a.tostring(), b.tostring())
-            b.byteswap()
-            self.assertEqual(a, b)
-
-class FloatTest(FPTest):
-    typecode = 'f'
-    minitemsize = 4
-tests.append(FloatTest)
-
-class DoubleTest(FPTest):
-    typecode = 'd'
-    minitemsize = 8
-
-    def test_alloc_overflow(self):
-        from sys import maxsize
-        a = array.array('d', [-1]*65536)
-        try:
-            a *= maxsize//65536 + 1
-        except MemoryError:
-            pass
-        else:
-            self.fail("Array of size > maxsize created - MemoryError expected")
-        b = array.array('d', [ 2.71828183, 3.14159265, -1])
-        try:
-            b * (maxsize//3 + 1)
-        except MemoryError:
-            pass
-        else:
-            self.fail("Array of size > maxsize created - MemoryError expected")
-
-tests.append(DoubleTest)
-
-def test_main(verbose=None):
-    import sys
-
-    test_support.run_unittest(*tests)
-
-    # verify reference counting
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        import gc
-        counts = [None] * 5
-        for i in xrange(len(counts)):
-            test_support.run_unittest(*tests)
-            gc.collect()
-            counts[i] = sys.gettotalrefcount()
-        print counts
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ascii_formatd.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ascii_formatd.py
deleted file mode 100644
index 3fa1001..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ascii_formatd.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# PyOS_ascii_formatd is deprecated and not called from anywhere in
-#  Python itself. So this module is the only place it gets tested.
-# Test that it works, and test that it's deprecated.
-
-import unittest
-from test.test_support import check_warnings, run_unittest, import_module
-
-# Skip tests if _ctypes module does not exist
-import_module('_ctypes')
-
-from ctypes import pythonapi, create_string_buffer, sizeof, byref, c_double
-PyOS_ascii_formatd = pythonapi.PyOS_ascii_formatd
-
-
-class FormatDeprecationTests(unittest.TestCase):
-
-    def test_format_deprecation(self):
-        buf = create_string_buffer(' ' * 100)
-
-        with check_warnings(('PyOS_ascii_formatd is deprecated',
-                             DeprecationWarning)):
-            PyOS_ascii_formatd(byref(buf), sizeof(buf), '%+.10f',
-                               c_double(10.0))
-            self.assertEqual(buf.value, '+10.0000000000')
-
-
-class FormatTests(unittest.TestCase):
-    # ensure that, for the restricted set of format codes,
-    # %-formatting returns the same values os PyOS_ascii_formatd
-    def test_format(self):
-        buf = create_string_buffer(' ' * 100)
-
-        tests = [
-            ('%f', 100.0),
-            ('%g', 100.0),
-            ('%#g', 100.0),
-            ('%#.2g', 100.0),
-            ('%#.2g', 123.4567),
-            ('%#.2g', 1.234567e200),
-            ('%e', 1.234567e200),
-            ('%e', 1.234),
-            ('%+e', 1.234),
-            ('%-e', 1.234),
-            ]
-
-        with check_warnings(('PyOS_ascii_formatd is deprecated',
-                             DeprecationWarning)):
-            for format, val in tests:
-                PyOS_ascii_formatd(byref(buf), sizeof(buf), format,
-                                   c_double(val))
-                self.assertEqual(buf.value, format % val)
-
-
-def test_main():
-    run_unittest(FormatDeprecationTests, FormatTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ast.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ast.py
deleted file mode 100644
index f01aff7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ast.py
+++ /dev/null
@@ -1,382 +0,0 @@
-import sys, itertools, unittest
-from test import test_support
-import ast
-
-def to_tuple(t):
-    if t is None or isinstance(t, (basestring, int, long, complex)):
-        return t
-    elif isinstance(t, list):
-        return [to_tuple(e) for e in t]
-    result = [t.__class__.__name__]
-    if hasattr(t, 'lineno') and hasattr(t, 'col_offset'):
-        result.append((t.lineno, t.col_offset))
-    if t._fields is None:
-        return tuple(result)
-    for f in t._fields:
-        result.append(to_tuple(getattr(t, f)))
-    return tuple(result)
-
-
-# These tests are compiled through "exec"
-# There should be atleast one test per statement
-exec_tests = [
-    # FunctionDef
-    "def f(): pass",
-    # ClassDef
-    "class C:pass",
-    # Return
-    "def f():return 1",
-    # Delete
-    "del v",
-    # Assign
-    "v = 1",
-    # AugAssign
-    "v += 1",
-    # Print
-    "print >>f, 1, ",
-    # For
-    "for v in v:pass",
-    # While
-    "while v:pass",
-    # If
-    "if v:pass",
-    # Raise
-    "raise Exception, 'string'",
-    # TryExcept
-    "try:\n  pass\nexcept Exception:\n  pass",
-    # TryFinally
-    "try:\n  pass\nfinally:\n  pass",
-    # Assert
-    "assert v",
-    # Import
-    "import sys",
-    # ImportFrom
-    "from sys import v",
-    # Exec
-    "exec 'v'",
-    # Global
-    "global v",
-    # Expr
-    "1",
-    # Pass,
-    "pass",
-    # Break
-    "break",
-    # Continue
-    "continue",
-    # for statements with naked tuples (see http://bugs.python.org/issue6704)
-    "for a,b in c: pass",
-    "[(a,b) for a,b in c]",
-    "((a,b) for a,b in c)",
-]
-
-# These are compiled through "single"
-# because of overlap with "eval", it just tests what
-# can't be tested with "eval"
-single_tests = [
-    "1+2"
-]
-
-# These are compiled through "eval"
-# It should test all expressions
-eval_tests = [
-  # BoolOp
-  "a and b",
-  # BinOp
-  "a + b",
-  # UnaryOp
-  "not v",
-  # Lambda
-  "lambda:None",
-  # Dict
-  "{ 1:2 }",
-  # ListComp
-  "[a for b in c if d]",
-  # GeneratorExp
-  "(a for b in c if d)",
-  # Yield - yield expressions can't work outside a function
-  #
-  # Compare
-  "1 < 2 < 3",
-  # Call
-  "f(1,2,c=3,*d,**e)",
-  # Repr
-  "`v`",
-  # Num
-  "10L",
-  # Str
-  "'string'",
-  # Attribute
-  "a.b",
-  # Subscript
-  "a[b:c]",
-  # Name
-  "v",
-  # List
-  "[1,2,3]",
-  # Tuple
-  "1,2,3",
-  # Combination
-  "a.b.c.d(a.b[1:2])",
-
-]
-
-# TODO: expr_context, slice, boolop, operator, unaryop, cmpop, comprehension
-# excepthandler, arguments, keywords, alias
-
-class AST_Tests(unittest.TestCase):
-
-    def _assertTrueorder(self, ast_node, parent_pos):
-        if not isinstance(ast_node, ast.AST) or ast_node._fields is None:
-            return
-        if isinstance(ast_node, (ast.expr, ast.stmt, ast.excepthandler)):
-            node_pos = (ast_node.lineno, ast_node.col_offset)
-            self.assertTrue(node_pos >= parent_pos)
-            parent_pos = (ast_node.lineno, ast_node.col_offset)
-        for name in ast_node._fields:
-            value = getattr(ast_node, name)
-            if isinstance(value, list):
-                for child in value:
-                    self._assertTrueorder(child, parent_pos)
-            elif value is not None:
-                self._assertTrueorder(value, parent_pos)
-
-    def test_snippets(self):
-        for input, output, kind in ((exec_tests, exec_results, "exec"),
-                                    (single_tests, single_results, "single"),
-                                    (eval_tests, eval_results, "eval")):
-            for i, o in itertools.izip(input, output):
-                ast_tree = compile(i, "?", kind, ast.PyCF_ONLY_AST)
-                self.assertEqual(to_tuple(ast_tree), o)
-                self._assertTrueorder(ast_tree, (0, 0))
-
-    def test_slice(self):
-        slc = ast.parse("x[::]").body[0].value.slice
-        self.assertIsNone(slc.upper)
-        self.assertIsNone(slc.lower)
-        self.assertIsInstance(slc.step, ast.Name)
-        self.assertEqual(slc.step.id, "None")
-
-    def test_from_import(self):
-        im = ast.parse("from . import y").body[0]
-        self.assertIsNone(im.module)
-
-    def test_base_classes(self):
-        self.assertTrue(issubclass(ast.For, ast.stmt))
-        self.assertTrue(issubclass(ast.Name, ast.expr))
-        self.assertTrue(issubclass(ast.stmt, ast.AST))
-        self.assertTrue(issubclass(ast.expr, ast.AST))
-        self.assertTrue(issubclass(ast.comprehension, ast.AST))
-        self.assertTrue(issubclass(ast.Gt, ast.AST))
-
-    def test_nodeclasses(self):
-        x = ast.BinOp(1, 2, 3, lineno=0)
-        self.assertEqual(x.left, 1)
-        self.assertEqual(x.op, 2)
-        self.assertEqual(x.right, 3)
-        self.assertEqual(x.lineno, 0)
-
-        # node raises exception when not given enough arguments
-        self.assertRaises(TypeError, ast.BinOp, 1, 2)
-
-        # can set attributes through kwargs too
-        x = ast.BinOp(left=1, op=2, right=3, lineno=0)
-        self.assertEqual(x.left, 1)
-        self.assertEqual(x.op, 2)
-        self.assertEqual(x.right, 3)
-        self.assertEqual(x.lineno, 0)
-
-        # this used to fail because Sub._fields was None
-        x = ast.Sub()
-
-    def test_pickling(self):
-        import pickle
-        mods = [pickle]
-        try:
-            import cPickle
-            mods.append(cPickle)
-        except ImportError:
-            pass
-        protocols = [0, 1, 2]
-        for mod in mods:
-            for protocol in protocols:
-                for ast in (compile(i, "?", "exec", 0x400) for i in exec_tests):
-                    ast2 = mod.loads(mod.dumps(ast, protocol))
-                    self.assertEqual(to_tuple(ast2), to_tuple(ast))
-
-
-class ASTHelpers_Test(unittest.TestCase):
-
-    def test_parse(self):
-        a = ast.parse('foo(1 + 1)')
-        b = compile('foo(1 + 1)', '<unknown>', 'exec', ast.PyCF_ONLY_AST)
-        self.assertEqual(ast.dump(a), ast.dump(b))
-
-    def test_dump(self):
-        node = ast.parse('spam(eggs, "and cheese")')
-        self.assertEqual(ast.dump(node),
-            "Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load()), "
-            "args=[Name(id='eggs', ctx=Load()), Str(s='and cheese')], "
-            "keywords=[], starargs=None, kwargs=None))])"
-        )
-        self.assertEqual(ast.dump(node, annotate_fields=False),
-            "Module([Expr(Call(Name('spam', Load()), [Name('eggs', Load()), "
-            "Str('and cheese')], [], None, None))])"
-        )
-        self.assertEqual(ast.dump(node, include_attributes=True),
-            "Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load(), "
-            "lineno=1, col_offset=0), args=[Name(id='eggs', ctx=Load(), "
-            "lineno=1, col_offset=5), Str(s='and cheese', lineno=1, "
-            "col_offset=11)], keywords=[], starargs=None, kwargs=None, "
-            "lineno=1, col_offset=0), lineno=1, col_offset=0)])"
-        )
-
-    def test_copy_location(self):
-        src = ast.parse('1 + 1', mode='eval')
-        src.body.right = ast.copy_location(ast.Num(2), src.body.right)
-        self.assertEqual(ast.dump(src, include_attributes=True),
-            'Expression(body=BinOp(left=Num(n=1, lineno=1, col_offset=0), '
-            'op=Add(), right=Num(n=2, lineno=1, col_offset=4), lineno=1, '
-            'col_offset=0))'
-        )
-
-    def test_fix_missing_locations(self):
-        src = ast.parse('write("spam")')
-        src.body.append(ast.Expr(ast.Call(ast.Name('spam', ast.Load()),
-                                          [ast.Str('eggs')], [], None, None)))
-        self.assertEqual(src, ast.fix_missing_locations(src))
-        self.assertEqual(ast.dump(src, include_attributes=True),
-            "Module(body=[Expr(value=Call(func=Name(id='write', ctx=Load(), "
-            "lineno=1, col_offset=0), args=[Str(s='spam', lineno=1, "
-            "col_offset=6)], keywords=[], starargs=None, kwargs=None, "
-            "lineno=1, col_offset=0), lineno=1, col_offset=0), "
-            "Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, "
-            "col_offset=0), args=[Str(s='eggs', lineno=1, col_offset=0)], "
-            "keywords=[], starargs=None, kwargs=None, lineno=1, "
-            "col_offset=0), lineno=1, col_offset=0)])"
-        )
-
-    def test_increment_lineno(self):
-        src = ast.parse('1 + 1', mode='eval')
-        self.assertEqual(ast.increment_lineno(src, n=3), src)
-        self.assertEqual(ast.dump(src, include_attributes=True),
-            'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), '
-            'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, '
-            'col_offset=0))'
-        )
-        # issue10869: do not increment lineno of root twice
-        src = ast.parse('1 + 1', mode='eval')
-        self.assertEqual(ast.increment_lineno(src.body, n=3), src.body)
-        self.assertEqual(ast.dump(src, include_attributes=True),
-            'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), '
-            'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, '
-            'col_offset=0))'
-        )
-
-    def test_iter_fields(self):
-        node = ast.parse('foo()', mode='eval')
-        d = dict(ast.iter_fields(node.body))
-        self.assertEqual(d.pop('func').id, 'foo')
-        self.assertEqual(d, {'keywords': [], 'kwargs': None,
-                             'args': [], 'starargs': None})
-
-    def test_iter_child_nodes(self):
-        node = ast.parse("spam(23, 42, eggs='leek')", mode='eval')
-        self.assertEqual(len(list(ast.iter_child_nodes(node.body))), 4)
-        iterator = ast.iter_child_nodes(node.body)
-        self.assertEqual(next(iterator).id, 'spam')
-        self.assertEqual(next(iterator).n, 23)
-        self.assertEqual(next(iterator).n, 42)
-        self.assertEqual(ast.dump(next(iterator)),
-            "keyword(arg='eggs', value=Str(s='leek'))"
-        )
-
-    def test_get_docstring(self):
-        node = ast.parse('def foo():\n  """line one\n  line two"""')
-        self.assertEqual(ast.get_docstring(node.body[0]),
-                         'line one\nline two')
-
-    def test_literal_eval(self):
-        self.assertEqual(ast.literal_eval('[1, 2, 3]'), [1, 2, 3])
-        self.assertEqual(ast.literal_eval('{"foo": 42}'), {"foo": 42})
-        self.assertEqual(ast.literal_eval('(True, False, None)'), (True, False, None))
-        self.assertRaises(ValueError, ast.literal_eval, 'foo()')
-
-    def test_literal_eval_issue4907(self):
-        self.assertEqual(ast.literal_eval('2j'), 2j)
-        self.assertEqual(ast.literal_eval('10 + 2j'), 10 + 2j)
-        self.assertEqual(ast.literal_eval('1.5 - 2j'), 1.5 - 2j)
-        self.assertRaises(ValueError, ast.literal_eval, '2 + (3 + 4j)')
-
-
-def test_main():
-    with test_support.check_py3k_warnings(("backquote not supported",
-                                             SyntaxWarning)):
-        test_support.run_unittest(AST_Tests, ASTHelpers_Test)
-
-def main():
-    if __name__ != '__main__':
-        return
-    if sys.argv[1:] == ['-g']:
-        for statements, kind in ((exec_tests, "exec"), (single_tests, "single"),
-                                 (eval_tests, "eval")):
-            print kind+"_results = ["
-            for s in statements:
-                print repr(to_tuple(compile(s, "?", kind, 0x400)))+","
-            print "]"
-        print "main()"
-        raise SystemExit
-    test_main()
-
-#### EVERYTHING BELOW IS GENERATED #####
-exec_results = [
-('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Pass', (1, 9))], [])]),
-('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))], [])]),
-('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Return', (1, 8), ('Num', (1, 15), 1))], [])]),
-('Module', [('Delete', (1, 0), [('Name', (1, 4), 'v', ('Del',))])]),
-('Module', [('Assign', (1, 0), [('Name', (1, 0), 'v', ('Store',))], ('Num', (1, 4), 1))]),
-('Module', [('AugAssign', (1, 0), ('Name', (1, 0), 'v', ('Store',)), ('Add',), ('Num', (1, 5), 1))]),
-('Module', [('Print', (1, 0), ('Name', (1, 8), 'f', ('Load',)), [('Num', (1, 11), 1)], False)]),
-('Module', [('For', (1, 0), ('Name', (1, 4), 'v', ('Store',)), ('Name', (1, 9), 'v', ('Load',)), [('Pass', (1, 11))], [])]),
-('Module', [('While', (1, 0), ('Name', (1, 6), 'v', ('Load',)), [('Pass', (1, 8))], [])]),
-('Module', [('If', (1, 0), ('Name', (1, 3), 'v', ('Load',)), [('Pass', (1, 5))], [])]),
-('Module', [('Raise', (1, 0), ('Name', (1, 6), 'Exception', ('Load',)), ('Str', (1, 17), 'string'), None)]),
-('Module', [('TryExcept', (1, 0), [('Pass', (2, 2))], [('ExceptHandler', (3, 0), ('Name', (3, 7), 'Exception', ('Load',)), None, [('Pass', (4, 2))])], [])]),
-('Module', [('TryFinally', (1, 0), [('Pass', (2, 2))], [('Pass', (4, 2))])]),
-('Module', [('Assert', (1, 0), ('Name', (1, 7), 'v', ('Load',)), None)]),
-('Module', [('Import', (1, 0), [('alias', 'sys', None)])]),
-('Module', [('ImportFrom', (1, 0), 'sys', [('alias', 'v', None)], 0)]),
-('Module', [('Exec', (1, 0), ('Str', (1, 5), 'v'), None, None)]),
-('Module', [('Global', (1, 0), ['v'])]),
-('Module', [('Expr', (1, 0), ('Num', (1, 0), 1))]),
-('Module', [('Pass', (1, 0))]),
-('Module', [('Break', (1, 0))]),
-('Module', [('Continue', (1, 0))]),
-('Module', [('For', (1, 0), ('Tuple', (1, 4), [('Name', (1, 4), 'a', ('Store',)), ('Name', (1, 6), 'b', ('Store',))], ('Store',)), ('Name', (1, 11), 'c', ('Load',)), [('Pass', (1, 14))], [])]),
-('Module', [('Expr', (1, 0), ('ListComp', (1, 1), ('Tuple', (1, 2), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'a', ('Store',)), ('Name', (1, 13), 'b', ('Store',))], ('Store',)), ('Name', (1, 18), 'c', ('Load',)), [])]))]),
-('Module', [('Expr', (1, 0), ('GeneratorExp', (1, 1), ('Tuple', (1, 2), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'a', ('Store',)), ('Name', (1, 13), 'b', ('Store',))], ('Store',)), ('Name', (1, 18), 'c', ('Load',)), [])]))]),
-]
-single_results = [
-('Interactive', [('Expr', (1, 0), ('BinOp', (1, 0), ('Num', (1, 0), 1), ('Add',), ('Num', (1, 2), 2)))]),
-]
-eval_results = [
-('Expression', ('BoolOp', (1, 0), ('And',), [('Name', (1, 0), 'a', ('Load',)), ('Name', (1, 6), 'b', ('Load',))])),
-('Expression', ('BinOp', (1, 0), ('Name', (1, 0), 'a', ('Load',)), ('Add',), ('Name', (1, 4), 'b', ('Load',)))),
-('Expression', ('UnaryOp', (1, 0), ('Not',), ('Name', (1, 4), 'v', ('Load',)))),
-('Expression', ('Lambda', (1, 0), ('arguments', [], None, None, []), ('Name', (1, 7), 'None', ('Load',)))),
-('Expression', ('Dict', (1, 0), [('Num', (1, 2), 1)], [('Num', (1, 4), 2)])),
-('Expression', ('ListComp', (1, 1), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))])])),
-('Expression', ('GeneratorExp', (1, 1), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))])])),
-('Expression', ('Compare', (1, 0), ('Num', (1, 0), 1), [('Lt',), ('Lt',)], [('Num', (1, 4), 2), ('Num', (1, 8), 3)])),
-('Expression', ('Call', (1, 0), ('Name', (1, 0), 'f', ('Load',)), [('Num', (1, 2), 1), ('Num', (1, 4), 2)], [('keyword', 'c', ('Num', (1, 8), 3))], ('Name', (1, 11), 'd', ('Load',)), ('Name', (1, 15), 'e', ('Load',)))),
-('Expression', ('Repr', (1, 0), ('Name', (1, 1), 'v', ('Load',)))),
-('Expression', ('Num', (1, 0), 10L)),
-('Expression', ('Str', (1, 0), 'string')),
-('Expression', ('Attribute', (1, 0), ('Name', (1, 0), 'a', ('Load',)), 'b', ('Load',))),
-('Expression', ('Subscript', (1, 0), ('Name', (1, 0), 'a', ('Load',)), ('Slice', ('Name', (1, 2), 'b', ('Load',)), ('Name', (1, 4), 'c', ('Load',)), None), ('Load',))),
-('Expression', ('Name', (1, 0), 'v', ('Load',))),
-('Expression', ('List', (1, 0), [('Num', (1, 1), 1), ('Num', (1, 3), 2), ('Num', (1, 5), 3)], ('Load',))),
-('Expression', ('Tuple', (1, 0), [('Num', (1, 0), 1), ('Num', (1, 2), 2), ('Num', (1, 4), 3)], ('Load',))),
-('Expression', ('Call', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Name', (1, 0), 'a', ('Load',)), 'b', ('Load',)), 'c', ('Load',)), 'd', ('Load',)), [('Subscript', (1, 8), ('Attribute', (1, 8), ('Name', (1, 8), 'a', ('Load',)), 'b', ('Load',)), ('Slice', ('Num', (1, 12), 1), ('Num', (1, 14), 2), None), ('Load',))], [], None, None)),
-]
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_asynchat.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_asynchat.py
deleted file mode 100644
index 59a6877..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_asynchat.py
+++ /dev/null
@@ -1,273 +0,0 @@
-# test asynchat
-
-import asyncore, asynchat, socket, time
-import unittest
-import sys
-from test import test_support
-try:
-    import threading
-except ImportError:
-    threading = None
-
-HOST = test_support.HOST
-SERVER_QUIT = 'QUIT\n'
-
-if threading:
-    class echo_server(threading.Thread):
-        # parameter to determine the number of bytes passed back to the
-        # client each send
-        chunk_size = 1
-
-        def __init__(self, event):
-            threading.Thread.__init__(self)
-            self.event = event
-            self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-            self.port = test_support.bind_port(self.sock)
-            # This will be set if the client wants us to wait before echoing data
-            # back.
-            self.start_resend_event = None
-
-        def run(self):
-            self.sock.listen(1)
-            self.event.set()
-            conn, client = self.sock.accept()
-            self.buffer = ""
-            # collect data until quit message is seen
-            while SERVER_QUIT not in self.buffer:
-                data = conn.recv(1)
-                if not data:
-                    break
-                self.buffer = self.buffer + data
-
-            # remove the SERVER_QUIT message
-            self.buffer = self.buffer.replace(SERVER_QUIT, '')
-
-            if self.start_resend_event:
-                self.start_resend_event.wait()
-
-            # re-send entire set of collected data
-            try:
-                # this may fail on some tests, such as test_close_when_done, since
-                # the client closes the channel when it's done sending
-                while self.buffer:
-                    n = conn.send(self.buffer[:self.chunk_size])
-                    time.sleep(0.001)
-                    self.buffer = self.buffer[n:]
-            except:
-                pass
-
-            conn.close()
-            self.sock.close()
-
-    class echo_client(asynchat.async_chat):
-
-        def __init__(self, terminator, server_port):
-            asynchat.async_chat.__init__(self)
-            self.contents = []
-            self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
-            self.connect((HOST, server_port))
-            self.set_terminator(terminator)
-            self.buffer = ''
-
-        def handle_connect(self):
-            pass
-
-        if sys.platform == 'darwin':
-            # select.poll returns a select.POLLHUP at the end of the tests
-            # on darwin, so just ignore it
-            def handle_expt(self):
-                pass
-
-        def collect_incoming_data(self, data):
-            self.buffer += data
-
-        def found_terminator(self):
-            self.contents.append(self.buffer)
-            self.buffer = ""
-
-
-    def start_echo_server():
-        event = threading.Event()
-        s = echo_server(event)
-        s.start()
-        event.wait()
-        event.clear()
-        time.sleep(0.01) # Give server time to start accepting.
-        return s, event
-
-
-@unittest.skipUnless(threading, 'Threading required for this test.')
-class TestAsynchat(unittest.TestCase):
-    usepoll = False
-
-    def setUp (self):
-        self._threads = test_support.threading_setup()
-
-    def tearDown (self):
-        test_support.threading_cleanup(*self._threads)
-
-    def line_terminator_check(self, term, server_chunk):
-        event = threading.Event()
-        s = echo_server(event)
-        s.chunk_size = server_chunk
-        s.start()
-        event.wait()
-        event.clear()
-        time.sleep(0.01) # Give server time to start accepting.
-        c = echo_client(term, s.port)
-        c.push("hello ")
-        c.push("world%s" % term)
-        c.push("I'm not dead yet!%s" % term)
-        c.push(SERVER_QUIT)
-        asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
-        s.join()
-
-        self.assertEqual(c.contents, ["hello world", "I'm not dead yet!"])
-
-    # the line terminator tests below check receiving variously-sized
-    # chunks back from the server in order to exercise all branches of
-    # async_chat.handle_read
-
-    def test_line_terminator1(self):
-        # test one-character terminator
-        for l in (1,2,3):
-            self.line_terminator_check('\n', l)
-
-    def test_line_terminator2(self):
-        # test two-character terminator
-        for l in (1,2,3):
-            self.line_terminator_check('\r\n', l)
-
-    def test_line_terminator3(self):
-        # test three-character terminator
-        for l in (1,2,3):
-            self.line_terminator_check('qqq', l)
-
-    def numeric_terminator_check(self, termlen):
-        # Try reading a fixed number of bytes
-        s, event = start_echo_server()
-        c = echo_client(termlen, s.port)
-        data = "hello world, I'm not dead yet!\n"
-        c.push(data)
-        c.push(SERVER_QUIT)
-        asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
-        s.join()
-
-        self.assertEqual(c.contents, [data[:termlen]])
-
-    def test_numeric_terminator1(self):
-        # check that ints & longs both work (since type is
-        # explicitly checked in async_chat.handle_read)
-        self.numeric_terminator_check(1)
-        self.numeric_terminator_check(1L)
-
-    def test_numeric_terminator2(self):
-        self.numeric_terminator_check(6L)
-
-    def test_none_terminator(self):
-        # Try reading a fixed number of bytes
-        s, event = start_echo_server()
-        c = echo_client(None, s.port)
-        data = "hello world, I'm not dead yet!\n"
-        c.push(data)
-        c.push(SERVER_QUIT)
-        asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
-        s.join()
-
-        self.assertEqual(c.contents, [])
-        self.assertEqual(c.buffer, data)
-
-    def test_simple_producer(self):
-        s, event = start_echo_server()
-        c = echo_client('\n', s.port)
-        data = "hello world\nI'm not dead yet!\n"
-        p = asynchat.simple_producer(data+SERVER_QUIT, buffer_size=8)
-        c.push_with_producer(p)
-        asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
-        s.join()
-
-        self.assertEqual(c.contents, ["hello world", "I'm not dead yet!"])
-
-    def test_string_producer(self):
-        s, event = start_echo_server()
-        c = echo_client('\n', s.port)
-        data = "hello world\nI'm not dead yet!\n"
-        c.push_with_producer(data+SERVER_QUIT)
-        asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
-        s.join()
-
-        self.assertEqual(c.contents, ["hello world", "I'm not dead yet!"])
-
-    def test_empty_line(self):
-        # checks that empty lines are handled correctly
-        s, event = start_echo_server()
-        c = echo_client('\n', s.port)
-        c.push("hello world\n\nI'm not dead yet!\n")
-        c.push(SERVER_QUIT)
-        asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
-        s.join()
-
-        self.assertEqual(c.contents, ["hello world", "", "I'm not dead yet!"])
-
-    def test_close_when_done(self):
-        s, event = start_echo_server()
-        s.start_resend_event = threading.Event()
-        c = echo_client('\n', s.port)
-        c.push("hello world\nI'm not dead yet!\n")
-        c.push(SERVER_QUIT)
-        c.close_when_done()
-        asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
-
-        # Only allow the server to start echoing data back to the client after
-        # the client has closed its connection.  This prevents a race condition
-        # where the server echoes all of its data before we can check that it
-        # got any down below.
-        s.start_resend_event.set()
-        s.join()
-
-        self.assertEqual(c.contents, [])
-        # the server might have been able to send a byte or two back, but this
-        # at least checks that it received something and didn't just fail
-        # (which could still result in the client not having received anything)
-        self.assertTrue(len(s.buffer) > 0)
-
-
-class TestAsynchat_WithPoll(TestAsynchat):
-    usepoll = True
-
-class TestHelperFunctions(unittest.TestCase):
-    def test_find_prefix_at_end(self):
-        self.assertEqual(asynchat.find_prefix_at_end("qwerty\r", "\r\n"), 1)
-        self.assertEqual(asynchat.find_prefix_at_end("qwertydkjf", "\r\n"), 0)
-
-class TestFifo(unittest.TestCase):
-    def test_basic(self):
-        f = asynchat.fifo()
-        f.push(7)
-        f.push('a')
-        self.assertEqual(len(f), 2)
-        self.assertEqual(f.first(), 7)
-        self.assertEqual(f.pop(), (1, 7))
-        self.assertEqual(len(f), 1)
-        self.assertEqual(f.first(), 'a')
-        self.assertEqual(f.is_empty(), False)
-        self.assertEqual(f.pop(), (1, 'a'))
-        self.assertEqual(len(f), 0)
-        self.assertEqual(f.is_empty(), True)
-        self.assertEqual(f.pop(), (0, None))
-
-    def test_given_list(self):
-        f = asynchat.fifo(['x', 17, 3])
-        self.assertEqual(len(f), 3)
-        self.assertEqual(f.pop(), (1, 'x'))
-        self.assertEqual(f.pop(), (1, 17))
-        self.assertEqual(f.pop(), (1, 3))
-        self.assertEqual(f.pop(), (0, None))
-
-
-def test_main(verbose=None):
-    test_support.run_unittest(TestAsynchat, TestAsynchat_WithPoll,
-                              TestHelperFunctions, TestFifo)
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_asyncore.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_asyncore.py
deleted file mode 100644
index c28bb7d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_asyncore.py
+++ /dev/null
@@ -1,722 +0,0 @@
-import asyncore
-import unittest
-import select
-import os
-import socket
-import sys
-import time
-import warnings
-import errno
-
-from test import test_support
-from test.test_support import TESTFN, run_unittest, unlink
-from StringIO import StringIO
-
-try:
-    import threading
-except ImportError:
-    threading = None
-
-HOST = test_support.HOST
-
-class dummysocket:
-    def __init__(self):
-        self.closed = False
-
-    def close(self):
-        self.closed = True
-
-    def fileno(self):
-        return 42
-
-class dummychannel:
-    def __init__(self):
-        self.socket = dummysocket()
-
-    def close(self):
-        self.socket.close()
-
-class exitingdummy:
-    def __init__(self):
-        pass
-
-    def handle_read_event(self):
-        raise asyncore.ExitNow()
-
-    handle_write_event = handle_read_event
-    handle_close = handle_read_event
-    handle_expt_event = handle_read_event
-
-class crashingdummy:
-    def __init__(self):
-        self.error_handled = False
-
-    def handle_read_event(self):
-        raise Exception()
-
-    handle_write_event = handle_read_event
-    handle_close = handle_read_event
-    handle_expt_event = handle_read_event
-
-    def handle_error(self):
-        self.error_handled = True
-
-# used when testing senders; just collects what it gets until newline is sent
-def capture_server(evt, buf, serv):
-    try:
-        serv.listen(5)
-        conn, addr = serv.accept()
-    except socket.timeout:
-        pass
-    else:
-        n = 200
-        while n > 0:
-            r, w, e = select.select([conn], [], [])
-            if r:
-                data = conn.recv(10)
-                # keep everything except for the newline terminator
-                buf.write(data.replace('\n', ''))
-                if '\n' in data:
-                    break
-            n -= 1
-            time.sleep(0.01)
-
-        conn.close()
-    finally:
-        serv.close()
-        evt.set()
-
-
-class HelperFunctionTests(unittest.TestCase):
-    def test_readwriteexc(self):
-        # Check exception handling behavior of read, write and _exception
-
-        # check that ExitNow exceptions in the object handler method
-        # bubbles all the way up through asyncore read/write/_exception calls
-        tr1 = exitingdummy()
-        self.assertRaises(asyncore.ExitNow, asyncore.read, tr1)
-        self.assertRaises(asyncore.ExitNow, asyncore.write, tr1)
-        self.assertRaises(asyncore.ExitNow, asyncore._exception, tr1)
-
-        # check that an exception other than ExitNow in the object handler
-        # method causes the handle_error method to get called
-        tr2 = crashingdummy()
-        asyncore.read(tr2)
-        self.assertEqual(tr2.error_handled, True)
-
-        tr2 = crashingdummy()
-        asyncore.write(tr2)
-        self.assertEqual(tr2.error_handled, True)
-
-        tr2 = crashingdummy()
-        asyncore._exception(tr2)
-        self.assertEqual(tr2.error_handled, True)
-
-    # asyncore.readwrite uses constants in the select module that
-    # are not present in Windows systems (see this thread:
-    # http://mail.python.org/pipermail/python-list/2001-October/109973.html)
-    # These constants should be present as long as poll is available
-
-    @unittest.skipUnless(hasattr(select, 'poll'), 'select.poll required')
-    def test_readwrite(self):
-        # Check that correct methods are called by readwrite()
-
-        attributes = ('read', 'expt', 'write', 'closed', 'error_handled')
-
-        expected = (
-            (select.POLLIN, 'read'),
-            (select.POLLPRI, 'expt'),
-            (select.POLLOUT, 'write'),
-            (select.POLLERR, 'closed'),
-            (select.POLLHUP, 'closed'),
-            (select.POLLNVAL, 'closed'),
-            )
-
-        class testobj:
-            def __init__(self):
-                self.read = False
-                self.write = False
-                self.closed = False
-                self.expt = False
-                self.error_handled = False
-
-            def handle_read_event(self):
-                self.read = True
-
-            def handle_write_event(self):
-                self.write = True
-
-            def handle_close(self):
-                self.closed = True
-
-            def handle_expt_event(self):
-                self.expt = True
-
-            def handle_error(self):
-                self.error_handled = True
-
-        for flag, expectedattr in expected:
-            tobj = testobj()
-            self.assertEqual(getattr(tobj, expectedattr), False)
-            asyncore.readwrite(tobj, flag)
-
-            # Only the attribute modified by the routine we expect to be
-            # called should be True.
-            for attr in attributes:
-                self.assertEqual(getattr(tobj, attr), attr==expectedattr)
-
-            # check that ExitNow exceptions in the object handler method
-            # bubbles all the way up through asyncore readwrite call
-            tr1 = exitingdummy()
-            self.assertRaises(asyncore.ExitNow, asyncore.readwrite, tr1, flag)
-
-            # check that an exception other than ExitNow in the object handler
-            # method causes the handle_error method to get called
-            tr2 = crashingdummy()
-            self.assertEqual(tr2.error_handled, False)
-            asyncore.readwrite(tr2, flag)
-            self.assertEqual(tr2.error_handled, True)
-
-    def test_closeall(self):
-        self.closeall_check(False)
-
-    def test_closeall_default(self):
-        self.closeall_check(True)
-
-    def closeall_check(self, usedefault):
-        # Check that close_all() closes everything in a given map
-
-        l = []
-        testmap = {}
-        for i in range(10):
-            c = dummychannel()
-            l.append(c)
-            self.assertEqual(c.socket.closed, False)
-            testmap[i] = c
-
-        if usedefault:
-            socketmap = asyncore.socket_map
-            try:
-                asyncore.socket_map = testmap
-                asyncore.close_all()
-            finally:
-                testmap, asyncore.socket_map = asyncore.socket_map, socketmap
-        else:
-            asyncore.close_all(testmap)
-
-        self.assertEqual(len(testmap), 0)
-
-        for c in l:
-            self.assertEqual(c.socket.closed, True)
-
-    def test_compact_traceback(self):
-        try:
-            raise Exception("I don't like spam!")
-        except:
-            real_t, real_v, real_tb = sys.exc_info()
-            r = asyncore.compact_traceback()
-        else:
-            self.fail("Expected exception")
-
-        (f, function, line), t, v, info = r
-        self.assertEqual(os.path.split(f)[-1], 'test_asyncore.py')
-        self.assertEqual(function, 'test_compact_traceback')
-        self.assertEqual(t, real_t)
-        self.assertEqual(v, real_v)
-        self.assertEqual(info, '[%s|%s|%s]' % (f, function, line))
-
-
-class DispatcherTests(unittest.TestCase):
-    def setUp(self):
-        pass
-
-    def tearDown(self):
-        asyncore.close_all()
-
-    def test_basic(self):
-        d = asyncore.dispatcher()
-        self.assertEqual(d.readable(), True)
-        self.assertEqual(d.writable(), True)
-
-    def test_repr(self):
-        d = asyncore.dispatcher()
-        self.assertEqual(repr(d), '<asyncore.dispatcher at %#x>' % id(d))
-
-    def test_log(self):
-        d = asyncore.dispatcher()
-
-        # capture output of dispatcher.log() (to stderr)
-        fp = StringIO()
-        stderr = sys.stderr
-        l1 = "Lovely spam! Wonderful spam!"
-        l2 = "I don't like spam!"
-        try:
-            sys.stderr = fp
-            d.log(l1)
-            d.log(l2)
-        finally:
-            sys.stderr = stderr
-
-        lines = fp.getvalue().splitlines()
-        self.assertEqual(lines, ['log: %s' % l1, 'log: %s' % l2])
-
-    def test_log_info(self):
-        d = asyncore.dispatcher()
-
-        # capture output of dispatcher.log_info() (to stdout via print)
-        fp = StringIO()
-        stdout = sys.stdout
-        l1 = "Have you got anything without spam?"
-        l2 = "Why can't she have egg bacon spam and sausage?"
-        l3 = "THAT'S got spam in it!"
-        try:
-            sys.stdout = fp
-            d.log_info(l1, 'EGGS')
-            d.log_info(l2)
-            d.log_info(l3, 'SPAM')
-        finally:
-            sys.stdout = stdout
-
-        lines = fp.getvalue().splitlines()
-        expected = ['EGGS: %s' % l1, 'info: %s' % l2, 'SPAM: %s' % l3]
-
-        self.assertEqual(lines, expected)
-
-    def test_unhandled(self):
-        d = asyncore.dispatcher()
-        d.ignore_log_types = ()
-
-        # capture output of dispatcher.log_info() (to stdout via print)
-        fp = StringIO()
-        stdout = sys.stdout
-        try:
-            sys.stdout = fp
-            d.handle_expt()
-            d.handle_read()
-            d.handle_write()
-            d.handle_connect()
-            d.handle_accept()
-        finally:
-            sys.stdout = stdout
-
-        lines = fp.getvalue().splitlines()
-        expected = ['warning: unhandled incoming priority event',
-                    'warning: unhandled read event',
-                    'warning: unhandled write event',
-                    'warning: unhandled connect event',
-                    'warning: unhandled accept event']
-        self.assertEqual(lines, expected)
-
-    def test_issue_8594(self):
-        # XXX - this test is supposed to be removed in next major Python
-        # version
-        d = asyncore.dispatcher(socket.socket())
-        # make sure the error message no longer refers to the socket
-        # object but the dispatcher instance instead
-        self.assertRaisesRegexp(AttributeError, 'dispatcher instance',
-                                getattr, d, 'foo')
-        # cheap inheritance with the underlying socket is supposed
-        # to still work but a DeprecationWarning is expected
-        with warnings.catch_warnings(record=True) as w:
-            warnings.simplefilter("always")
-            family = d.family
-            self.assertEqual(family, socket.AF_INET)
-            self.assertEqual(len(w), 1)
-            self.assertTrue(issubclass(w[0].category, DeprecationWarning))
-
-    def test_strerror(self):
-        # refers to bug #8573
-        err = asyncore._strerror(errno.EPERM)
-        if hasattr(os, 'strerror'):
-            self.assertEqual(err, os.strerror(errno.EPERM))
-        err = asyncore._strerror(-1)
-        self.assertTrue(err != "")
-
-
-class dispatcherwithsend_noread(asyncore.dispatcher_with_send):
-    def readable(self):
-        return False
-
-    def handle_connect(self):
-        pass
-
-class DispatcherWithSendTests(unittest.TestCase):
-    usepoll = False
-
-    def setUp(self):
-        pass
-
-    def tearDown(self):
-        asyncore.close_all()
-
-    @unittest.skipUnless(threading, 'Threading required for this test.')
-    @test_support.reap_threads
-    def test_send(self):
-        evt = threading.Event()
-        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        sock.settimeout(3)
-        port = test_support.bind_port(sock)
-
-        cap = StringIO()
-        args = (evt, cap, sock)
-        t = threading.Thread(target=capture_server, args=args)
-        t.start()
-        try:
-            # wait a little longer for the server to initialize (it sometimes
-            # refuses connections on slow machines without this wait)
-            time.sleep(0.2)
-
-            data = "Suppose there isn't a 16-ton weight?"
-            d = dispatcherwithsend_noread()
-            d.create_socket(socket.AF_INET, socket.SOCK_STREAM)
-            d.connect((HOST, port))
-
-            # give time for socket to connect
-            time.sleep(0.1)
-
-            d.send(data)
-            d.send(data)
-            d.send('\n')
-
-            n = 1000
-            while d.out_buffer and n > 0:
-                asyncore.poll()
-                n -= 1
-
-            evt.wait()
-
-            self.assertEqual(cap.getvalue(), data*2)
-        finally:
-            t.join()
-
-
-class DispatcherWithSendTests_UsePoll(DispatcherWithSendTests):
-    usepoll = True
-
-@unittest.skipUnless(hasattr(asyncore, 'file_wrapper'),
-                     'asyncore.file_wrapper required')
-class FileWrapperTest(unittest.TestCase):
-    def setUp(self):
-        self.d = "It's not dead, it's sleeping!"
-        with file(TESTFN, 'w') as h:
-            h.write(self.d)
-
-    def tearDown(self):
-        unlink(TESTFN)
-
-    def test_recv(self):
-        fd = os.open(TESTFN, os.O_RDONLY)
-        w = asyncore.file_wrapper(fd)
-        os.close(fd)
-
-        self.assertNotEqual(w.fd, fd)
-        self.assertNotEqual(w.fileno(), fd)
-        self.assertEqual(w.recv(13), "It's not dead")
-        self.assertEqual(w.read(6), ", it's")
-        w.close()
-        self.assertRaises(OSError, w.read, 1)
-
-
-    def test_send(self):
-        d1 = "Come again?"
-        d2 = "I want to buy some cheese."
-        fd = os.open(TESTFN, os.O_WRONLY | os.O_APPEND)
-        w = asyncore.file_wrapper(fd)
-        os.close(fd)
-
-        w.write(d1)
-        w.send(d2)
-        w.close()
-        self.assertEqual(file(TESTFN).read(), self.d + d1 + d2)
-
-    @unittest.skipUnless(hasattr(asyncore, 'file_dispatcher'),
-                         'asyncore.file_dispatcher required')
-    def test_dispatcher(self):
-        fd = os.open(TESTFN, os.O_RDONLY)
-        data = []
-        class FileDispatcher(asyncore.file_dispatcher):
-            def handle_read(self):
-                data.append(self.recv(29))
-        s = FileDispatcher(fd)
-        os.close(fd)
-        asyncore.loop(timeout=0.01, use_poll=True, count=2)
-        self.assertEqual(b"".join(data), self.d)
-
-
-class BaseTestHandler(asyncore.dispatcher):
-
-    def __init__(self, sock=None):
-        asyncore.dispatcher.__init__(self, sock)
-        self.flag = False
-
-    def handle_accept(self):
-        raise Exception("handle_accept not supposed to be called")
-
-    def handle_connect(self):
-        raise Exception("handle_connect not supposed to be called")
-
-    def handle_expt(self):
-        raise Exception("handle_expt not supposed to be called")
-
-    def handle_close(self):
-        raise Exception("handle_close not supposed to be called")
-
-    def handle_error(self):
-        raise
-
-
-class TCPServer(asyncore.dispatcher):
-    """A server which listens on an address and dispatches the
-    connection to a handler.
-    """
-
-    def __init__(self, handler=BaseTestHandler, host=HOST, port=0):
-        asyncore.dispatcher.__init__(self)
-        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.set_reuse_addr()
-        self.bind((host, port))
-        self.listen(5)
-        self.handler = handler
-
-    @property
-    def address(self):
-        return self.socket.getsockname()[:2]
-
-    def handle_accept(self):
-        sock, addr = self.accept()
-        self.handler(sock)
-
-    def handle_error(self):
-        raise
-
-
-class BaseClient(BaseTestHandler):
-
-    def __init__(self, address):
-        BaseTestHandler.__init__(self)
-        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.connect(address)
-
-    def handle_connect(self):
-        pass
-
-
-class BaseTestAPI(unittest.TestCase):
-
-    def tearDown(self):
-        asyncore.close_all()
-
-    def loop_waiting_for_flag(self, instance, timeout=5):
-        timeout = float(timeout) / 100
-        count = 100
-        while asyncore.socket_map and count > 0:
-            asyncore.loop(timeout=0.01, count=1, use_poll=self.use_poll)
-            if instance.flag:
-                return
-            count -= 1
-            time.sleep(timeout)
-        self.fail("flag not set")
-
-    def test_handle_connect(self):
-        # make sure handle_connect is called on connect()
-
-        class TestClient(BaseClient):
-            def handle_connect(self):
-                self.flag = True
-
-        server = TCPServer()
-        client = TestClient(server.address)
-        self.loop_waiting_for_flag(client)
-
-    def test_handle_accept(self):
-        # make sure handle_accept() is called when a client connects
-
-        class TestListener(BaseTestHandler):
-
-            def __init__(self):
-                BaseTestHandler.__init__(self)
-                self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
-                self.bind((HOST, 0))
-                self.listen(5)
-                self.address = self.socket.getsockname()[:2]
-
-            def handle_accept(self):
-                self.flag = True
-
-        server = TestListener()
-        client = BaseClient(server.address)
-        self.loop_waiting_for_flag(server)
-
-    def test_handle_read(self):
-        # make sure handle_read is called on data received
-
-        class TestClient(BaseClient):
-            def handle_read(self):
-                self.flag = True
-
-        class TestHandler(BaseTestHandler):
-            def __init__(self, conn):
-                BaseTestHandler.__init__(self, conn)
-                self.send('x' * 1024)
-
-        server = TCPServer(TestHandler)
-        client = TestClient(server.address)
-        self.loop_waiting_for_flag(client)
-
-    def test_handle_write(self):
-        # make sure handle_write is called
-
-        class TestClient(BaseClient):
-            def handle_write(self):
-                self.flag = True
-
-        server = TCPServer()
-        client = TestClient(server.address)
-        self.loop_waiting_for_flag(client)
-
-    def test_handle_close(self):
-        # make sure handle_close is called when the other end closes
-        # the connection
-
-        class TestClient(BaseClient):
-
-            def handle_read(self):
-                # in order to make handle_close be called we are supposed
-                # to make at least one recv() call
-                self.recv(1024)
-
-            def handle_close(self):
-                self.flag = True
-                self.close()
-
-        class TestHandler(BaseTestHandler):
-            def __init__(self, conn):
-                BaseTestHandler.__init__(self, conn)
-                self.close()
-
-        server = TCPServer(TestHandler)
-        client = TestClient(server.address)
-        self.loop_waiting_for_flag(client)
-
-    @unittest.skipIf(sys.platform.startswith("sunos"),
-                     "OOB support is broken on Solaris")
-    def test_handle_expt(self):
-        # Make sure handle_expt is called on OOB data received.
-        # Note: this might fail on some platforms as OOB data is
-        # tenuously supported and rarely used.
-
-        class TestClient(BaseClient):
-            def handle_expt(self):
-                self.flag = True
-
-        class TestHandler(BaseTestHandler):
-            def __init__(self, conn):
-                BaseTestHandler.__init__(self, conn)
-                self.socket.send(chr(244), socket.MSG_OOB)
-
-        server = TCPServer(TestHandler)
-        client = TestClient(server.address)
-        self.loop_waiting_for_flag(client)
-
-    def test_handle_error(self):
-
-        class TestClient(BaseClient):
-            def handle_write(self):
-                1.0 / 0
-            def handle_error(self):
-                self.flag = True
-                try:
-                    raise
-                except ZeroDivisionError:
-                    pass
-                else:
-                    raise Exception("exception not raised")
-
-        server = TCPServer()
-        client = TestClient(server.address)
-        self.loop_waiting_for_flag(client)
-
-    def test_connection_attributes(self):
-        server = TCPServer()
-        client = BaseClient(server.address)
-
-        # we start disconnected
-        self.assertFalse(server.connected)
-        self.assertTrue(server.accepting)
-        # this can't be taken for granted across all platforms
-        #self.assertFalse(client.connected)
-        self.assertFalse(client.accepting)
-
-        # execute some loops so that client connects to server
-        asyncore.loop(timeout=0.01, use_poll=self.use_poll, count=100)
-        self.assertFalse(server.connected)
-        self.assertTrue(server.accepting)
-        self.assertTrue(client.connected)
-        self.assertFalse(client.accepting)
-
-        # disconnect the client
-        client.close()
-        self.assertFalse(server.connected)
-        self.assertTrue(server.accepting)
-        self.assertFalse(client.connected)
-        self.assertFalse(client.accepting)
-
-        # stop serving
-        server.close()
-        self.assertFalse(server.connected)
-        self.assertFalse(server.accepting)
-
-    def test_create_socket(self):
-        s = asyncore.dispatcher()
-        s.create_socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.assertEqual(s.socket.family, socket.AF_INET)
-        self.assertEqual(s.socket.type, socket.SOCK_STREAM)
-
-    def test_bind(self):
-        s1 = asyncore.dispatcher()
-        s1.create_socket(socket.AF_INET, socket.SOCK_STREAM)
-        s1.bind((HOST, 0))
-        s1.listen(5)
-        port = s1.socket.getsockname()[1]
-
-        s2 = asyncore.dispatcher()
-        s2.create_socket(socket.AF_INET, socket.SOCK_STREAM)
-        # EADDRINUSE indicates the socket was correctly bound
-        self.assertRaises(socket.error, s2.bind, (HOST, port))
-
-    def test_set_reuse_addr(self):
-        sock = socket.socket()
-        try:
-            sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-        except socket.error:
-            unittest.skip("SO_REUSEADDR not supported on this platform")
-        else:
-            # if SO_REUSEADDR succeeded for sock we expect asyncore
-            # to do the same
-            s = asyncore.dispatcher(socket.socket())
-            self.assertFalse(s.socket.getsockopt(socket.SOL_SOCKET,
-                                                 socket.SO_REUSEADDR))
-            s.create_socket(socket.AF_INET, socket.SOCK_STREAM)
-            s.set_reuse_addr()
-            self.assertTrue(s.socket.getsockopt(socket.SOL_SOCKET,
-                                                 socket.SO_REUSEADDR))
-        finally:
-            sock.close()
-
-
-class TestAPI_UseSelect(BaseTestAPI):
-    use_poll = False
-
-@unittest.skipUnless(hasattr(select, 'poll'), 'select.poll required')
-class TestAPI_UsePoll(BaseTestAPI):
-    use_poll = True
-
-
-def test_main():
-    tests = [HelperFunctionTests, DispatcherTests, DispatcherWithSendTests,
-             DispatcherWithSendTests_UsePoll, TestAPI_UseSelect,
-             TestAPI_UsePoll, FileWrapperTest]
-    run_unittest(*tests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_atexit.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_atexit.py
deleted file mode 100644
index 402eb49..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_atexit.py
+++ /dev/null
@@ -1,82 +0,0 @@
-import sys
-import unittest
-import StringIO
-import atexit
-from imp import reload
-from test import test_support
-
-class TestCase(unittest.TestCase):
-    def setUp(self):
-        s = StringIO.StringIO()
-        self.save_stdout = sys.stdout
-        self.save_stderr = sys.stderr
-        sys.stdout = sys.stderr = self.subst_io = s
-        self.save_handlers = atexit._exithandlers
-        atexit._exithandlers = []
-
-    def tearDown(self):
-        sys.stdout = self.save_stdout
-        sys.stderr = self.save_stderr
-        atexit._exithandlers = self.save_handlers
-
-    def test_args(self):
-        atexit.register(self.h1)
-        atexit.register(self.h4)
-        atexit.register(self.h4, 4, kw="abc")
-        atexit._run_exitfuncs()
-        self.assertEqual(self.subst_io.getvalue(),
-                         "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n")
-
-    def test_badargs(self):
-        atexit.register(lambda: 1, 0, 0, (x for x in (1,2)), 0, 0)
-        self.assertRaises(TypeError, atexit._run_exitfuncs)
-
-    def test_order(self):
-        atexit.register(self.h1)
-        atexit.register(self.h2)
-        atexit.register(self.h3)
-        atexit._run_exitfuncs()
-        self.assertEqual(self.subst_io.getvalue(), "h3\nh2\nh1\n")
-
-    def test_sys_override(self):
-        # be sure a preset sys.exitfunc is handled properly
-        exfunc = sys.exitfunc
-        sys.exitfunc = self.h1
-        reload(atexit)
-        try:
-            atexit.register(self.h2)
-            atexit._run_exitfuncs()
-        finally:
-            sys.exitfunc = exfunc
-        self.assertEqual(self.subst_io.getvalue(), "h2\nh1\n")
-
-    def test_raise(self):
-        atexit.register(self.raise1)
-        atexit.register(self.raise2)
-        self.assertRaises(TypeError, atexit._run_exitfuncs)
-
-    ### helpers
-    def h1(self):
-        print "h1"
-
-    def h2(self):
-        print "h2"
-
-    def h3(self):
-        print "h3"
-
-    def h4(self, *args, **kwargs):
-        print "h4", args, kwargs
-
-    def raise1(self):
-        raise TypeError
-
-    def raise2(self):
-        raise SystemError
-
-def test_main():
-    test_support.run_unittest(TestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_audioop.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_audioop.py
deleted file mode 100644
index 593a293..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_audioop.py
+++ /dev/null
@@ -1,206 +0,0 @@
-import audioop
-import unittest
-from test.test_support import run_unittest
-
-
-def gendata1():
-    return '\0\1\2'
-
-def gendata2():
-    if audioop.getsample('\0\1', 2, 0) == 1:
-        return '\0\0\0\1\0\2'
-    else:
-        return '\0\0\1\0\2\0'
-
-def gendata4():
-    if audioop.getsample('\0\0\0\1', 4, 0) == 1:
-        return '\0\0\0\0\0\0\0\1\0\0\0\2'
-    else:
-        return '\0\0\0\0\1\0\0\0\2\0\0\0'
-
-data = [gendata1(), gendata2(), gendata4()]
-
-INVALID_DATA = [
-    ('abc', 0),
-    ('abc', 2),
-    ('abc', 4),
-]
-
-
-class TestAudioop(unittest.TestCase):
-
-    def test_max(self):
-        self.assertEqual(audioop.max(data[0], 1), 2)
-        self.assertEqual(audioop.max(data[1], 2), 2)
-        self.assertEqual(audioop.max(data[2], 4), 2)
-
-    def test_minmax(self):
-        self.assertEqual(audioop.minmax(data[0], 1), (0, 2))
-        self.assertEqual(audioop.minmax(data[1], 2), (0, 2))
-        self.assertEqual(audioop.minmax(data[2], 4), (0, 2))
-
-    def test_maxpp(self):
-        self.assertEqual(audioop.maxpp(data[0], 1), 0)
-        self.assertEqual(audioop.maxpp(data[1], 2), 0)
-        self.assertEqual(audioop.maxpp(data[2], 4), 0)
-
-    def test_avg(self):
-        self.assertEqual(audioop.avg(data[0], 1), 1)
-        self.assertEqual(audioop.avg(data[1], 2), 1)
-        self.assertEqual(audioop.avg(data[2], 4), 1)
-
-    def test_avgpp(self):
-        self.assertEqual(audioop.avgpp(data[0], 1), 0)
-        self.assertEqual(audioop.avgpp(data[1], 2), 0)
-        self.assertEqual(audioop.avgpp(data[2], 4), 0)
-
-    def test_rms(self):
-        self.assertEqual(audioop.rms(data[0], 1), 1)
-        self.assertEqual(audioop.rms(data[1], 2), 1)
-        self.assertEqual(audioop.rms(data[2], 4), 1)
-
-    def test_cross(self):
-        self.assertEqual(audioop.cross(data[0], 1), 0)
-        self.assertEqual(audioop.cross(data[1], 2), 0)
-        self.assertEqual(audioop.cross(data[2], 4), 0)
-
-    def test_add(self):
-        data2 = []
-        for d in data:
-            str = ''
-            for s in d:
-                str = str + chr(ord(s)*2)
-            data2.append(str)
-        self.assertEqual(audioop.add(data[0], data[0], 1), data2[0])
-        self.assertEqual(audioop.add(data[1], data[1], 2), data2[1])
-        self.assertEqual(audioop.add(data[2], data[2], 4), data2[2])
-
-    def test_bias(self):
-        # Note: this test assumes that avg() works
-        d1 = audioop.bias(data[0], 1, 100)
-        d2 = audioop.bias(data[1], 2, 100)
-        d4 = audioop.bias(data[2], 4, 100)
-        self.assertEqual(audioop.avg(d1, 1), 101)
-        self.assertEqual(audioop.avg(d2, 2), 101)
-        self.assertEqual(audioop.avg(d4, 4), 101)
-
-    def test_lin2lin(self):
-        # too simple: we test only the size
-        for d1 in data:
-            for d2 in data:
-                got = len(d1)//3
-                wtd = len(d2)//3
-                self.assertEqual(len(audioop.lin2lin(d1, got, wtd)), len(d2))
-
-    def test_adpcm2lin(self):
-        # Very cursory test
-        self.assertEqual(audioop.adpcm2lin('\0\0', 1, None), ('\0\0\0\0', (0,0)))
-
-    def test_lin2adpcm(self):
-        # Very cursory test
-        self.assertEqual(audioop.lin2adpcm('\0\0\0\0', 1, None), ('\0\0', (0,0)))
-
-    def test_lin2alaw(self):
-        self.assertEqual(audioop.lin2alaw(data[0], 1), '\xd5\xc5\xf5')
-        self.assertEqual(audioop.lin2alaw(data[1], 2), '\xd5\xd5\xd5')
-        self.assertEqual(audioop.lin2alaw(data[2], 4), '\xd5\xd5\xd5')
-
-    def test_alaw2lin(self):
-        # Cursory
-        d = audioop.lin2alaw(data[0], 1)
-        self.assertEqual(audioop.alaw2lin(d, 1), data[0])
-
-    def test_lin2ulaw(self):
-        self.assertEqual(audioop.lin2ulaw(data[0], 1), '\xff\xe7\xdb')
-        self.assertEqual(audioop.lin2ulaw(data[1], 2), '\xff\xff\xff')
-        self.assertEqual(audioop.lin2ulaw(data[2], 4), '\xff\xff\xff')
-
-    def test_ulaw2lin(self):
-        # Cursory
-        d = audioop.lin2ulaw(data[0], 1)
-        self.assertEqual(audioop.ulaw2lin(d, 1), data[0])
-
-    def test_mul(self):
-        data2 = []
-        for d in data:
-            str = ''
-            for s in d:
-                str = str + chr(ord(s)*2)
-            data2.append(str)
-        self.assertEqual(audioop.mul(data[0], 1, 2), data2[0])
-        self.assertEqual(audioop.mul(data[1],2, 2), data2[1])
-        self.assertEqual(audioop.mul(data[2], 4, 2), data2[2])
-
-    def test_ratecv(self):
-        state = None
-        d1, state = audioop.ratecv(data[0], 1, 1, 8000, 16000, state)
-        d2, state = audioop.ratecv(data[0], 1, 1, 8000, 16000, state)
-        self.assertEqual(d1 + d2, '\000\000\001\001\002\001\000\000\001\001\002')
-
-    def test_reverse(self):
-        self.assertEqual(audioop.reverse(data[0], 1), '\2\1\0')
-
-    def test_tomono(self):
-        data2 = ''
-        for d in data[0]:
-            data2 = data2 + d + d
-        self.assertEqual(audioop.tomono(data2, 1, 0.5, 0.5), data[0])
-
-    def test_tostereo(self):
-        data2 = ''
-        for d in data[0]:
-            data2 = data2 + d + d
-        self.assertEqual(audioop.tostereo(data[0], 1, 1, 1), data2)
-
-    def test_findfactor(self):
-        self.assertEqual(audioop.findfactor(data[1], data[1]), 1.0)
-
-    def test_findfit(self):
-        self.assertEqual(audioop.findfit(data[1], data[1]), (0, 1.0))
-
-    def test_findmax(self):
-        self.assertEqual(audioop.findmax(data[1], 1), 2)
-
-    def test_getsample(self):
-        for i in range(3):
-            self.assertEqual(audioop.getsample(data[0], 1, i), i)
-            self.assertEqual(audioop.getsample(data[1], 2, i), i)
-            self.assertEqual(audioop.getsample(data[2], 4, i), i)
-
-    def test_negativelen(self):
-        # from issue 3306, previously it segfaulted
-        self.assertRaises(audioop.error,
-            audioop.findmax, ''.join( chr(x) for x in xrange(256)), -2392392)
-
-    def test_issue7673(self):
-        state = None
-        for data, size in INVALID_DATA:
-            size2 = size
-            self.assertRaises(audioop.error, audioop.getsample, data, size, 0)
-            self.assertRaises(audioop.error, audioop.max, data, size)
-            self.assertRaises(audioop.error, audioop.minmax, data, size)
-            self.assertRaises(audioop.error, audioop.avg, data, size)
-            self.assertRaises(audioop.error, audioop.rms, data, size)
-            self.assertRaises(audioop.error, audioop.avgpp, data, size)
-            self.assertRaises(audioop.error, audioop.maxpp, data, size)
-            self.assertRaises(audioop.error, audioop.cross, data, size)
-            self.assertRaises(audioop.error, audioop.mul, data, size, 1.0)
-            self.assertRaises(audioop.error, audioop.tomono, data, size, 0.5, 0.5)
-            self.assertRaises(audioop.error, audioop.tostereo, data, size, 0.5, 0.5)
-            self.assertRaises(audioop.error, audioop.add, data, data, size)
-            self.assertRaises(audioop.error, audioop.bias, data, size, 0)
-            self.assertRaises(audioop.error, audioop.reverse, data, size)
-            self.assertRaises(audioop.error, audioop.lin2lin, data, size, size2)
-            self.assertRaises(audioop.error, audioop.ratecv, data, size, 1, 1, 1, state)
-            self.assertRaises(audioop.error, audioop.lin2ulaw, data, size)
-            self.assertRaises(audioop.error, audioop.ulaw2lin, data, size)
-            self.assertRaises(audioop.error, audioop.lin2alaw, data, size)
-            self.assertRaises(audioop.error, audioop.alaw2lin, data, size)
-            self.assertRaises(audioop.error, audioop.lin2adpcm, data, size, state)
-            self.assertRaises(audioop.error, audioop.adpcm2lin, data, size, state)
-
-def test_main():
-    run_unittest(TestAudioop)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_augassign.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_augassign.py
deleted file mode 100644
index f454036..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_augassign.py
+++ /dev/null
@@ -1,331 +0,0 @@
-# Augmented assignment test.
-
-from test.test_support import run_unittest, check_py3k_warnings
-import unittest
-
-
-class AugAssignTest(unittest.TestCase):
-    def testBasic(self):
-        x = 2
-        x += 1
-        x *= 2
-        x **= 2
-        x -= 8
-        x //= 5
-        x %= 3
-        x &= 2
-        x |= 5
-        x ^= 1
-        x /= 2
-        if 1/2 == 0:
-            # classic division
-            self.assertEqual(x, 3)
-        else:
-            # new-style division (with -Qnew)
-            self.assertEqual(x, 3.0)
-
-    def test_with_unpacking(self):
-        self.assertRaises(SyntaxError, compile, "x, b += 3", "<test>", "exec")
-
-    def testInList(self):
-        x = [2]
-        x[0] += 1
-        x[0] *= 2
-        x[0] **= 2
-        x[0] -= 8
-        x[0] //= 5
-        x[0] %= 3
-        x[0] &= 2
-        x[0] |= 5
-        x[0] ^= 1
-        x[0] /= 2
-        if 1/2 == 0:
-            self.assertEqual(x[0], 3)
-        else:
-            self.assertEqual(x[0], 3.0)
-
-    def testInDict(self):
-        x = {0: 2}
-        x[0] += 1
-        x[0] *= 2
-        x[0] **= 2
-        x[0] -= 8
-        x[0] //= 5
-        x[0] %= 3
-        x[0] &= 2
-        x[0] |= 5
-        x[0] ^= 1
-        x[0] /= 2
-        if 1/2 == 0:
-            self.assertEqual(x[0], 3)
-        else:
-            self.assertEqual(x[0], 3.0)
-
-    def testSequences(self):
-        x = [1,2]
-        x += [3,4]
-        x *= 2
-
-        self.assertEqual(x, [1, 2, 3, 4, 1, 2, 3, 4])
-
-        x = [1, 2, 3]
-        y = x
-        x[1:2] *= 2
-        y[1:2] += [1]
-
-        self.assertEqual(x, [1, 2, 1, 2, 3])
-        self.assertTrue(x is y)
-
-    def testCustomMethods1(self):
-
-        class aug_test:
-            def __init__(self, value):
-                self.val = value
-            def __radd__(self, val):
-                return self.val + val
-            def __add__(self, val):
-                return aug_test(self.val + val)
-
-        class aug_test2(aug_test):
-            def __iadd__(self, val):
-                self.val = self.val + val
-                return self
-
-        class aug_test3(aug_test):
-            def __iadd__(self, val):
-                return aug_test3(self.val + val)
-
-        x = aug_test(1)
-        y = x
-        x += 10
-
-        self.assertIsInstance(x, aug_test)
-        self.assertTrue(y is not x)
-        self.assertEqual(x.val, 11)
-
-        x = aug_test2(2)
-        y = x
-        x += 10
-
-        self.assertTrue(y is x)
-        self.assertEqual(x.val, 12)
-
-        x = aug_test3(3)
-        y = x
-        x += 10
-
-        self.assertIsInstance(x, aug_test3)
-        self.assertTrue(y is not x)
-        self.assertEqual(x.val, 13)
-
-
-    def testCustomMethods2(test_self):
-        output = []
-
-        class testall:
-            def __add__(self, val):
-                output.append("__add__ called")
-            def __radd__(self, val):
-                output.append("__radd__ called")
-            def __iadd__(self, val):
-                output.append("__iadd__ called")
-                return self
-
-            def __sub__(self, val):
-                output.append("__sub__ called")
-            def __rsub__(self, val):
-                output.append("__rsub__ called")
-            def __isub__(self, val):
-                output.append("__isub__ called")
-                return self
-
-            def __mul__(self, val):
-                output.append("__mul__ called")
-            def __rmul__(self, val):
-                output.append("__rmul__ called")
-            def __imul__(self, val):
-                output.append("__imul__ called")
-                return self
-
-            def __div__(self, val):
-                output.append("__div__ called")
-            def __rdiv__(self, val):
-                output.append("__rdiv__ called")
-            def __idiv__(self, val):
-                output.append("__idiv__ called")
-                return self
-
-            def __floordiv__(self, val):
-                output.append("__floordiv__ called")
-                return self
-            def __ifloordiv__(self, val):
-                output.append("__ifloordiv__ called")
-                return self
-            def __rfloordiv__(self, val):
-                output.append("__rfloordiv__ called")
-                return self
-
-            def __truediv__(self, val):
-                output.append("__truediv__ called")
-                return self
-            def __itruediv__(self, val):
-                output.append("__itruediv__ called")
-                return self
-
-            def __mod__(self, val):
-                output.append("__mod__ called")
-            def __rmod__(self, val):
-                output.append("__rmod__ called")
-            def __imod__(self, val):
-                output.append("__imod__ called")
-                return self
-
-            def __pow__(self, val):
-                output.append("__pow__ called")
-            def __rpow__(self, val):
-                output.append("__rpow__ called")
-            def __ipow__(self, val):
-                output.append("__ipow__ called")
-                return self
-
-            def __or__(self, val):
-                output.append("__or__ called")
-            def __ror__(self, val):
-                output.append("__ror__ called")
-            def __ior__(self, val):
-                output.append("__ior__ called")
-                return self
-
-            def __and__(self, val):
-                output.append("__and__ called")
-            def __rand__(self, val):
-                output.append("__rand__ called")
-            def __iand__(self, val):
-                output.append("__iand__ called")
-                return self
-
-            def __xor__(self, val):
-                output.append("__xor__ called")
-            def __rxor__(self, val):
-                output.append("__rxor__ called")
-            def __ixor__(self, val):
-                output.append("__ixor__ called")
-                return self
-
-            def __rshift__(self, val):
-                output.append("__rshift__ called")
-            def __rrshift__(self, val):
-                output.append("__rrshift__ called")
-            def __irshift__(self, val):
-                output.append("__irshift__ called")
-                return self
-
-            def __lshift__(self, val):
-                output.append("__lshift__ called")
-            def __rlshift__(self, val):
-                output.append("__rlshift__ called")
-            def __ilshift__(self, val):
-                output.append("__ilshift__ called")
-                return self
-
-        x = testall()
-        x + 1
-        1 + x
-        x += 1
-
-        x - 1
-        1 - x
-        x -= 1
-
-        x * 1
-        1 * x
-        x *= 1
-
-        if 1/2 == 0:
-            x / 1
-            1 / x
-            x /= 1
-        else:
-            # True division is in effect, so "/" doesn't map to __div__ etc;
-            # but the canned expected-output file requires that those get called.
-            x.__div__(1)
-            x.__rdiv__(1)
-            x.__idiv__(1)
-
-        x // 1
-        1 // x
-        x //= 1
-
-        x % 1
-        1 % x
-        x %= 1
-
-        x ** 1
-        1 ** x
-        x **= 1
-
-        x | 1
-        1 | x
-        x |= 1
-
-        x & 1
-        1 & x
-        x &= 1
-
-        x ^ 1
-        1 ^ x
-        x ^= 1
-
-        x >> 1
-        1 >> x
-        x >>= 1
-
-        x << 1
-        1 << x
-        x <<= 1
-
-        test_self.assertEqual(output, '''\
-__add__ called
-__radd__ called
-__iadd__ called
-__sub__ called
-__rsub__ called
-__isub__ called
-__mul__ called
-__rmul__ called
-__imul__ called
-__div__ called
-__rdiv__ called
-__idiv__ called
-__floordiv__ called
-__rfloordiv__ called
-__ifloordiv__ called
-__mod__ called
-__rmod__ called
-__imod__ called
-__pow__ called
-__rpow__ called
-__ipow__ called
-__or__ called
-__ror__ called
-__ior__ called
-__and__ called
-__rand__ called
-__iand__ called
-__xor__ called
-__rxor__ called
-__ixor__ called
-__rshift__ called
-__rrshift__ called
-__irshift__ called
-__lshift__ called
-__rlshift__ called
-__ilshift__ called
-'''.splitlines())
-
-def test_main():
-    with check_py3k_warnings(("classic int division", DeprecationWarning)):
-        run_unittest(AugAssignTest)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_base64.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_base64.py
deleted file mode 100644
index db34cd5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_base64.py
+++ /dev/null
@@ -1,190 +0,0 @@
-import unittest
-from test import test_support
-import base64
-
-
-\f
-class LegacyBase64TestCase(unittest.TestCase):
-    def test_encodestring(self):
-        eq = self.assertEqual
-        eq(base64.encodestring("www.python.org"), "d3d3LnB5dGhvbi5vcmc=\n")
-        eq(base64.encodestring("a"), "YQ==\n")
-        eq(base64.encodestring("ab"), "YWI=\n")
-        eq(base64.encodestring("abc"), "YWJj\n")
-        eq(base64.encodestring(""), "")
-        eq(base64.encodestring("abcdefghijklmnopqrstuvwxyz"
-                               "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-                               "0123456789!@#0^&*();:<>,. []{}"),
-           "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE"
-           "RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0\nNT"
-           "Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==\n")
-
-    def test_decodestring(self):
-        eq = self.assertEqual
-        eq(base64.decodestring("d3d3LnB5dGhvbi5vcmc=\n"), "www.python.org")
-        eq(base64.decodestring("YQ==\n"), "a")
-        eq(base64.decodestring("YWI=\n"), "ab")
-        eq(base64.decodestring("YWJj\n"), "abc")
-        eq(base64.decodestring("YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE"
-                               "RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0\nNT"
-                               "Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==\n"),
-           "abcdefghijklmnopqrstuvwxyz"
-           "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-           "0123456789!@#0^&*();:<>,. []{}")
-        eq(base64.decodestring(''), '')
-
-    def test_encode(self):
-        eq = self.assertEqual
-        from cStringIO import StringIO
-        infp = StringIO('abcdefghijklmnopqrstuvwxyz'
-                        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-                        '0123456789!@#0^&*();:<>,. []{}')
-        outfp = StringIO()
-        base64.encode(infp, outfp)
-        eq(outfp.getvalue(),
-           'YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE'
-           'RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0\nNT'
-           'Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==\n')
-
-    def test_decode(self):
-        from cStringIO import StringIO
-        infp = StringIO('d3d3LnB5dGhvbi5vcmc=')
-        outfp = StringIO()
-        base64.decode(infp, outfp)
-        self.assertEqual(outfp.getvalue(), 'www.python.org')
-
-
-\f
-class BaseXYTestCase(unittest.TestCase):
-    def test_b64encode(self):
-        eq = self.assertEqual
-        # Test default alphabet
-        eq(base64.b64encode("www.python.org"), "d3d3LnB5dGhvbi5vcmc=")
-        eq(base64.b64encode('\x00'), 'AA==')
-        eq(base64.b64encode("a"), "YQ==")
-        eq(base64.b64encode("ab"), "YWI=")
-        eq(base64.b64encode("abc"), "YWJj")
-        eq(base64.b64encode(""), "")
-        eq(base64.b64encode("abcdefghijklmnopqrstuvwxyz"
-                            "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-                            "0123456789!@#0^&*();:<>,. []{}"),
-           "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE"
-           "RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NT"
-           "Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==")
-        # Test with arbitrary alternative characters
-        eq(base64.b64encode('\xd3V\xbeo\xf7\x1d', altchars='*$'), '01a*b$cd')
-        # Test standard alphabet
-        eq(base64.standard_b64encode("www.python.org"), "d3d3LnB5dGhvbi5vcmc=")
-        eq(base64.standard_b64encode("a"), "YQ==")
-        eq(base64.standard_b64encode("ab"), "YWI=")
-        eq(base64.standard_b64encode("abc"), "YWJj")
-        eq(base64.standard_b64encode(""), "")
-        eq(base64.standard_b64encode("abcdefghijklmnopqrstuvwxyz"
-                                     "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-                                     "0123456789!@#0^&*();:<>,. []{}"),
-           "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE"
-           "RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NT"
-           "Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==")
-        # Test with 'URL safe' alternative characters
-        eq(base64.urlsafe_b64encode('\xd3V\xbeo\xf7\x1d'), '01a-b_cd')
-
-    def test_b64decode(self):
-        eq = self.assertEqual
-        eq(base64.b64decode("d3d3LnB5dGhvbi5vcmc="), "www.python.org")
-        eq(base64.b64decode('AA=='), '\x00')
-        eq(base64.b64decode("YQ=="), "a")
-        eq(base64.b64decode("YWI="), "ab")
-        eq(base64.b64decode("YWJj"), "abc")
-        eq(base64.b64decode("YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE"
-                            "RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0\nNT"
-                            "Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ=="),
-           "abcdefghijklmnopqrstuvwxyz"
-           "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-           "0123456789!@#0^&*();:<>,. []{}")
-        eq(base64.b64decode(''), '')
-        # Test with arbitrary alternative characters
-        eq(base64.b64decode('01a*b$cd', altchars='*$'), '\xd3V\xbeo\xf7\x1d')
-        # Test standard alphabet
-        eq(base64.standard_b64decode("d3d3LnB5dGhvbi5vcmc="), "www.python.org")
-        eq(base64.standard_b64decode("YQ=="), "a")
-        eq(base64.standard_b64decode("YWI="), "ab")
-        eq(base64.standard_b64decode("YWJj"), "abc")
-        eq(base64.standard_b64decode(""), "")
-        eq(base64.standard_b64decode("YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE"
-                                     "RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NT"
-                                     "Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ=="),
-           "abcdefghijklmnopqrstuvwxyz"
-           "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-           "0123456789!@#0^&*();:<>,. []{}")
-        # Test with 'URL safe' alternative characters
-        eq(base64.urlsafe_b64decode('01a-b_cd'), '\xd3V\xbeo\xf7\x1d')
-
-    def test_b64decode_error(self):
-        self.assertRaises(TypeError, base64.b64decode, 'abc')
-
-    def test_b32encode(self):
-        eq = self.assertEqual
-        eq(base64.b32encode(''), '')
-        eq(base64.b32encode('\x00'), 'AA======')
-        eq(base64.b32encode('a'), 'ME======')
-        eq(base64.b32encode('ab'), 'MFRA====')
-        eq(base64.b32encode('abc'), 'MFRGG===')
-        eq(base64.b32encode('abcd'), 'MFRGGZA=')
-        eq(base64.b32encode('abcde'), 'MFRGGZDF')
-
-    def test_b32decode(self):
-        eq = self.assertEqual
-        eq(base64.b32decode(''), '')
-        eq(base64.b32decode('AA======'), '\x00')
-        eq(base64.b32decode('ME======'), 'a')
-        eq(base64.b32decode('MFRA===='), 'ab')
-        eq(base64.b32decode('MFRGG==='), 'abc')
-        eq(base64.b32decode('MFRGGZA='), 'abcd')
-        eq(base64.b32decode('MFRGGZDF'), 'abcde')
-
-    def test_b32decode_casefold(self):
-        eq = self.assertEqual
-        eq(base64.b32decode('', True), '')
-        eq(base64.b32decode('ME======', True), 'a')
-        eq(base64.b32decode('MFRA====', True), 'ab')
-        eq(base64.b32decode('MFRGG===', True), 'abc')
-        eq(base64.b32decode('MFRGGZA=', True), 'abcd')
-        eq(base64.b32decode('MFRGGZDF', True), 'abcde')
-        # Lower cases
-        eq(base64.b32decode('me======', True), 'a')
-        eq(base64.b32decode('mfra====', True), 'ab')
-        eq(base64.b32decode('mfrgg===', True), 'abc')
-        eq(base64.b32decode('mfrggza=', True), 'abcd')
-        eq(base64.b32decode('mfrggzdf', True), 'abcde')
-        # Expected exceptions
-        self.assertRaises(TypeError, base64.b32decode, 'me======')
-        # Mapping zero and one
-        eq(base64.b32decode('MLO23456'), 'b\xdd\xad\xf3\xbe')
-        eq(base64.b32decode('M1023456', map01='L'), 'b\xdd\xad\xf3\xbe')
-        eq(base64.b32decode('M1023456', map01='I'), 'b\x1d\xad\xf3\xbe')
-
-    def test_b32decode_error(self):
-        self.assertRaises(TypeError, base64.b32decode, 'abc')
-        self.assertRaises(TypeError, base64.b32decode, 'ABCDEF==')
-
-    def test_b16encode(self):
-        eq = self.assertEqual
-        eq(base64.b16encode('\x01\x02\xab\xcd\xef'), '0102ABCDEF')
-        eq(base64.b16encode('\x00'), '00')
-
-    def test_b16decode(self):
-        eq = self.assertEqual
-        eq(base64.b16decode('0102ABCDEF'), '\x01\x02\xab\xcd\xef')
-        eq(base64.b16decode('00'), '\x00')
-        # Lower case is not allowed without a flag
-        self.assertRaises(TypeError, base64.b16decode, '0102abcdef')
-        # Case fold
-        eq(base64.b16decode('0102abcdef', True), '\x01\x02\xab\xcd\xef')
-
-
-\f
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bastion.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bastion.py
deleted file mode 100644
index bac880e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bastion.py
+++ /dev/null
@@ -1,3 +0,0 @@
-##import Bastion
-##
-##Bastion._test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bigaddrspace.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bigaddrspace.py
deleted file mode 100644
index 7015d73..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bigaddrspace.py
+++ /dev/null
@@ -1,46 +0,0 @@
-from test import test_support
-from test.test_support import bigaddrspacetest, MAX_Py_ssize_t
-
-import unittest
-import operator
-import sys
-
-
-class StrTest(unittest.TestCase):
-
-    @bigaddrspacetest
-    def test_concat(self):
-        s1 = 'x' * MAX_Py_ssize_t
-        self.assertRaises(OverflowError, operator.add, s1, '?')
-
-    @bigaddrspacetest
-    def test_optimized_concat(self):
-        x = 'x' * MAX_Py_ssize_t
-        try:
-            x = x + '?'     # this statement uses a fast path in ceval.c
-        except OverflowError:
-            pass
-        else:
-            self.fail("should have raised OverflowError")
-        try:
-            x += '?'        # this statement uses a fast path in ceval.c
-        except OverflowError:
-            pass
-        else:
-            self.fail("should have raised OverflowError")
-        self.assertEqual(len(x), MAX_Py_ssize_t)
-
-    ### the following test is pending a patch
-    #   (http://mail.python.org/pipermail/python-dev/2006-July/067774.html)
-    #@bigaddrspacetest
-    #def test_repeat(self):
-    #    self.assertRaises(OverflowError, operator.mul, 'x', MAX_Py_ssize_t + 1)
-
-
-def test_main():
-    test_support.run_unittest(StrTest)
-
-if __name__ == '__main__':
-    if len(sys.argv) > 1:
-        test_support.set_memlimit(sys.argv[1])
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bigmem.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bigmem.py
deleted file mode 100644
index 8783b46..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bigmem.py
+++ /dev/null
@@ -1,1073 +0,0 @@
-from test import test_support
-from test.test_support import bigmemtest, _1G, _2G, _4G, precisionbigmemtest
-
-import unittest
-import operator
-import string
-import sys
-
-# Bigmem testing houserules:
-#
-#  - Try not to allocate too many large objects. It's okay to rely on
-#    refcounting semantics, but don't forget that 's = create_largestring()'
-#    doesn't release the old 's' (if it exists) until well after its new
-#    value has been created. Use 'del s' before the create_largestring call.
-#
-#  - Do *not* compare large objects using assertEqual or similar. It's a
-#    lengty operation and the errormessage will be utterly useless due to
-#    its size. To make sure whether a result has the right contents, better
-#    to use the strip or count methods, or compare meaningful slices.
-#
-#  - Don't forget to test for large indices, offsets and results and such,
-#    in addition to large sizes.
-#
-#  - When repeating an object (say, a substring, or a small list) to create
-#    a large object, make the subobject of a length that is not a power of
-#    2. That way, int-wrapping problems are more easily detected.
-#
-#  - While the bigmemtest decorator speaks of 'minsize', all tests will
-#    actually be called with a much smaller number too, in the normal
-#    test run (5Kb currently.) This is so the tests themselves get frequent
-#    testing. Consequently, always make all large allocations based on the
-#    passed-in 'size', and don't rely on the size being very large. Also,
-#    memuse-per-size should remain sane (less than a few thousand); if your
-#    test uses more, adjust 'size' upward, instead.
-
-class StrTest(unittest.TestCase):
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_capitalize(self, size):
-        SUBSTR = ' abc def ghi'
-        s = '-' * size + SUBSTR
-        caps = s.capitalize()
-        self.assertEqual(caps[-len(SUBSTR):],
-                         SUBSTR.capitalize())
-        self.assertEqual(caps.lstrip('-'), SUBSTR)
-
-    @bigmemtest(minsize=_2G + 10, memuse=1)
-    def test_center(self, size):
-        SUBSTR = ' abc def ghi'
-        s = SUBSTR.center(size)
-        self.assertEqual(len(s), size)
-        lpadsize = rpadsize = (len(s) - len(SUBSTR)) // 2
-        if len(s) % 2:
-            lpadsize += 1
-        self.assertEqual(s[lpadsize:-rpadsize], SUBSTR)
-        self.assertEqual(s.strip(), SUBSTR.strip())
-
-    @precisionbigmemtest(size=_2G - 1, memuse=1)
-    def test_center_unicode(self, size):
-        SUBSTR = u' abc def ghi'
-        try:
-            s = SUBSTR.center(size)
-        except OverflowError:
-            pass # acceptable on 32-bit
-        else:
-            self.assertEqual(len(s), size)
-            lpadsize = rpadsize = (len(s) - len(SUBSTR)) // 2
-            if len(s) % 2:
-                lpadsize += 1
-            self.assertEqual(s[lpadsize:-rpadsize], SUBSTR)
-            self.assertEqual(s.strip(), SUBSTR.strip())
-            del s
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_count(self, size):
-        SUBSTR = ' abc def ghi'
-        s = '.' * size + SUBSTR
-        self.assertEqual(s.count('.'), size)
-        s += '.'
-        self.assertEqual(s.count('.'), size + 1)
-        self.assertEqual(s.count(' '), 3)
-        self.assertEqual(s.count('i'), 1)
-        self.assertEqual(s.count('j'), 0)
-
-    @bigmemtest(minsize=_2G + 2, memuse=3)
-    def test_decode(self, size):
-        s = '.' * size
-        self.assertEqual(len(s.decode('utf-8')), size)
-
-    def basic_encode_test(self, size, enc, c=u'.', expectedsize=None):
-        if expectedsize is None:
-            expectedsize = size
-
-        s = c * size
-        self.assertEqual(len(s.encode(enc)), expectedsize)
-
-    @bigmemtest(minsize=_2G + 2, memuse=3)
-    def test_encode(self, size):
-        return self.basic_encode_test(size, 'utf-8')
-
-    @precisionbigmemtest(size=_4G // 6 + 2, memuse=2)
-    def test_encode_raw_unicode_escape(self, size):
-        try:
-            return self.basic_encode_test(size, 'raw_unicode_escape')
-        except MemoryError:
-            pass # acceptable on 32-bit
-
-    @precisionbigmemtest(size=_4G // 5 + 70, memuse=3)
-    def test_encode_utf7(self, size):
-        try:
-            return self.basic_encode_test(size, 'utf7')
-        except MemoryError:
-            pass # acceptable on 32-bit
-
-    @precisionbigmemtest(size=_4G // 4 + 5, memuse=6)
-    def test_encode_utf32(self, size):
-        try:
-            return self.basic_encode_test(size, 'utf32', expectedsize=4*size+4)
-        except MemoryError:
-            pass # acceptable on 32-bit
-
-    @precisionbigmemtest(size=_2G-1, memuse=2)
-    def test_decodeascii(self, size):
-        return self.basic_encode_test(size, 'ascii', c='A')
-
-    @precisionbigmemtest(size=_4G // 5, memuse=6+2)
-    def test_unicode_repr_oflw(self, size):
-        try:
-            s = u"\uAAAA"*size
-            r = repr(s)
-        except MemoryError:
-            pass # acceptable on 32-bit
-        else:
-            self.assertTrue(s == eval(r))
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_endswith(self, size):
-        SUBSTR = ' abc def ghi'
-        s = '-' * size + SUBSTR
-        self.assertTrue(s.endswith(SUBSTR))
-        self.assertTrue(s.endswith(s))
-        s2 = '...' + s
-        self.assertTrue(s2.endswith(s))
-        self.assertFalse(s.endswith('a' + SUBSTR))
-        self.assertFalse(SUBSTR.endswith(s))
-
-    @bigmemtest(minsize=_2G + 10, memuse=2)
-    def test_expandtabs(self, size):
-        s = '-' * size
-        tabsize = 8
-        self.assertEqual(s.expandtabs(), s)
-        del s
-        slen, remainder = divmod(size, tabsize)
-        s = '       \t' * slen
-        s = s.expandtabs(tabsize)
-        self.assertEqual(len(s), size - remainder)
-        self.assertEqual(len(s.strip(' ')), 0)
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_find(self, size):
-        SUBSTR = ' abc def ghi'
-        sublen = len(SUBSTR)
-        s = ''.join([SUBSTR, '-' * size, SUBSTR])
-        self.assertEqual(s.find(' '), 0)
-        self.assertEqual(s.find(SUBSTR), 0)
-        self.assertEqual(s.find(' ', sublen), sublen + size)
-        self.assertEqual(s.find(SUBSTR, len(SUBSTR)), sublen + size)
-        self.assertEqual(s.find('i'), SUBSTR.find('i'))
-        self.assertEqual(s.find('i', sublen),
-                         sublen + size + SUBSTR.find('i'))
-        self.assertEqual(s.find('i', size),
-                         sublen + size + SUBSTR.find('i'))
-        self.assertEqual(s.find('j'), -1)
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_index(self, size):
-        SUBSTR = ' abc def ghi'
-        sublen = len(SUBSTR)
-        s = ''.join([SUBSTR, '-' * size, SUBSTR])
-        self.assertEqual(s.index(' '), 0)
-        self.assertEqual(s.index(SUBSTR), 0)
-        self.assertEqual(s.index(' ', sublen), sublen + size)
-        self.assertEqual(s.index(SUBSTR, sublen), sublen + size)
-        self.assertEqual(s.index('i'), SUBSTR.index('i'))
-        self.assertEqual(s.index('i', sublen),
-                         sublen + size + SUBSTR.index('i'))
-        self.assertEqual(s.index('i', size),
-                         sublen + size + SUBSTR.index('i'))
-        self.assertRaises(ValueError, s.index, 'j')
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_isalnum(self, size):
-        SUBSTR = '123456'
-        s = 'a' * size + SUBSTR
-        self.assertTrue(s.isalnum())
-        s += '.'
-        self.assertFalse(s.isalnum())
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_isalpha(self, size):
-        SUBSTR = 'zzzzzzz'
-        s = 'a' * size + SUBSTR
-        self.assertTrue(s.isalpha())
-        s += '.'
-        self.assertFalse(s.isalpha())
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_isdigit(self, size):
-        SUBSTR = '123456'
-        s = '9' * size + SUBSTR
-        self.assertTrue(s.isdigit())
-        s += 'z'
-        self.assertFalse(s.isdigit())
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_islower(self, size):
-        chars = ''.join([ chr(c) for c in range(255) if not chr(c).isupper() ])
-        repeats = size // len(chars) + 2
-        s = chars * repeats
-        self.assertTrue(s.islower())
-        s += 'A'
-        self.assertFalse(s.islower())
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_isspace(self, size):
-        whitespace = ' \f\n\r\t\v'
-        repeats = size // len(whitespace) + 2
-        s = whitespace * repeats
-        self.assertTrue(s.isspace())
-        s += 'j'
-        self.assertFalse(s.isspace())
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_istitle(self, size):
-        SUBSTR = '123456'
-        s = ''.join(['A', 'a' * size, SUBSTR])
-        self.assertTrue(s.istitle())
-        s += 'A'
-        self.assertTrue(s.istitle())
-        s += 'aA'
-        self.assertFalse(s.istitle())
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_isupper(self, size):
-        chars = ''.join([ chr(c) for c in range(255) if not chr(c).islower() ])
-        repeats = size // len(chars) + 2
-        s = chars * repeats
-        self.assertTrue(s.isupper())
-        s += 'a'
-        self.assertFalse(s.isupper())
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_join(self, size):
-        s = 'A' * size
-        x = s.join(['aaaaa', 'bbbbb'])
-        self.assertEqual(x.count('a'), 5)
-        self.assertEqual(x.count('b'), 5)
-        self.assertTrue(x.startswith('aaaaaA'))
-        self.assertTrue(x.endswith('Abbbbb'))
-
-    @bigmemtest(minsize=_2G + 10, memuse=1)
-    def test_ljust(self, size):
-        SUBSTR = ' abc def ghi'
-        s = SUBSTR.ljust(size)
-        self.assertTrue(s.startswith(SUBSTR + '  '))
-        self.assertEqual(len(s), size)
-        self.assertEqual(s.strip(), SUBSTR.strip())
-
-    @bigmemtest(minsize=_2G + 10, memuse=2)
-    def test_lower(self, size):
-        s = 'A' * size
-        s = s.lower()
-        self.assertEqual(len(s), size)
-        self.assertEqual(s.count('a'), size)
-
-    @bigmemtest(minsize=_2G + 10, memuse=1)
-    def test_lstrip(self, size):
-        SUBSTR = 'abc def ghi'
-        s = SUBSTR.rjust(size)
-        self.assertEqual(len(s), size)
-        self.assertEqual(s.lstrip(), SUBSTR.lstrip())
-        del s
-        s = SUBSTR.ljust(size)
-        self.assertEqual(len(s), size)
-        stripped = s.lstrip()
-        self.assertTrue(stripped is s)
-
-    @bigmemtest(minsize=_2G + 10, memuse=2)
-    def test_replace(self, size):
-        replacement = 'a'
-        s = ' ' * size
-        s = s.replace(' ', replacement)
-        self.assertEqual(len(s), size)
-        self.assertEqual(s.count(replacement), size)
-        s = s.replace(replacement, ' ', size - 4)
-        self.assertEqual(len(s), size)
-        self.assertEqual(s.count(replacement), 4)
-        self.assertEqual(s[-10:], '      aaaa')
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_rfind(self, size):
-        SUBSTR = ' abc def ghi'
-        sublen = len(SUBSTR)
-        s = ''.join([SUBSTR, '-' * size, SUBSTR])
-        self.assertEqual(s.rfind(' '), sublen + size + SUBSTR.rfind(' '))
-        self.assertEqual(s.rfind(SUBSTR), sublen + size)
-        self.assertEqual(s.rfind(' ', 0, size), SUBSTR.rfind(' '))
-        self.assertEqual(s.rfind(SUBSTR, 0, sublen + size), 0)
-        self.assertEqual(s.rfind('i'), sublen + size + SUBSTR.rfind('i'))
-        self.assertEqual(s.rfind('i', 0, sublen), SUBSTR.rfind('i'))
-        self.assertEqual(s.rfind('i', 0, sublen + size),
-                         SUBSTR.rfind('i'))
-        self.assertEqual(s.rfind('j'), -1)
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_rindex(self, size):
-        SUBSTR = ' abc def ghi'
-        sublen = len(SUBSTR)
-        s = ''.join([SUBSTR, '-' * size, SUBSTR])
-        self.assertEqual(s.rindex(' '),
-                          sublen + size + SUBSTR.rindex(' '))
-        self.assertEqual(s.rindex(SUBSTR), sublen + size)
-        self.assertEqual(s.rindex(' ', 0, sublen + size - 1),
-                         SUBSTR.rindex(' '))
-        self.assertEqual(s.rindex(SUBSTR, 0, sublen + size), 0)
-        self.assertEqual(s.rindex('i'),
-                         sublen + size + SUBSTR.rindex('i'))
-        self.assertEqual(s.rindex('i', 0, sublen), SUBSTR.rindex('i'))
-        self.assertEqual(s.rindex('i', 0, sublen + size),
-                         SUBSTR.rindex('i'))
-        self.assertRaises(ValueError, s.rindex, 'j')
-
-    @bigmemtest(minsize=_2G + 10, memuse=1)
-    def test_rjust(self, size):
-        SUBSTR = ' abc def ghi'
-        s = SUBSTR.ljust(size)
-        self.assertTrue(s.startswith(SUBSTR + '  '))
-        self.assertEqual(len(s), size)
-        self.assertEqual(s.strip(), SUBSTR.strip())
-
-    @bigmemtest(minsize=_2G + 10, memuse=1)
-    def test_rstrip(self, size):
-        SUBSTR = ' abc def ghi'
-        s = SUBSTR.ljust(size)
-        self.assertEqual(len(s), size)
-        self.assertEqual(s.rstrip(), SUBSTR.rstrip())
-        del s
-        s = SUBSTR.rjust(size)
-        self.assertEqual(len(s), size)
-        stripped = s.rstrip()
-        self.assertTrue(stripped is s)
-
-    # The test takes about size bytes to build a string, and then about
-    # sqrt(size) substrings of sqrt(size) in size and a list to
-    # hold sqrt(size) items. It's close but just over 2x size.
-    @bigmemtest(minsize=_2G, memuse=2.1)
-    def test_split_small(self, size):
-        # Crudely calculate an estimate so that the result of s.split won't
-        # take up an inordinate amount of memory
-        chunksize = int(size ** 0.5 + 2)
-        SUBSTR = 'a' + ' ' * chunksize
-        s = SUBSTR * chunksize
-        l = s.split()
-        self.assertEqual(len(l), chunksize)
-        self.assertEqual(set(l), set(['a']))
-        del l
-        l = s.split('a')
-        self.assertEqual(len(l), chunksize + 1)
-        self.assertEqual(set(l), set(['', ' ' * chunksize]))
-
-    # Allocates a string of twice size (and briefly two) and a list of
-    # size.  Because of internal affairs, the s.split() call produces a
-    # list of size times the same one-character string, so we only
-    # suffer for the list size. (Otherwise, it'd cost another 48 times
-    # size in bytes!) Nevertheless, a list of size takes
-    # 8*size bytes.
-    @bigmemtest(minsize=_2G + 5, memuse=10)
-    def test_split_large(self, size):
-        s = ' a' * size + ' '
-        l = s.split()
-        self.assertEqual(len(l), size)
-        self.assertEqual(set(l), set(['a']))
-        del l
-        l = s.split('a')
-        self.assertEqual(len(l), size + 1)
-        self.assertEqual(set(l), set([' ']))
-
-    @bigmemtest(minsize=_2G, memuse=2.1)
-    def test_splitlines(self, size):
-        # Crudely calculate an estimate so that the result of s.split won't
-        # take up an inordinate amount of memory
-        chunksize = int(size ** 0.5 + 2) // 2
-        SUBSTR = ' ' * chunksize + '\n' + ' ' * chunksize + '\r\n'
-        s = SUBSTR * chunksize
-        l = s.splitlines()
-        self.assertEqual(len(l), chunksize * 2)
-        self.assertEqual(set(l), set([' ' * chunksize]))
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_startswith(self, size):
-        SUBSTR = ' abc def ghi'
-        s = '-' * size + SUBSTR
-        self.assertTrue(s.startswith(s))
-        self.assertTrue(s.startswith('-' * size))
-        self.assertFalse(s.startswith(SUBSTR))
-
-    @bigmemtest(minsize=_2G, memuse=1)
-    def test_strip(self, size):
-        SUBSTR = '   abc def ghi   '
-        s = SUBSTR.rjust(size)
-        self.assertEqual(len(s), size)
-        self.assertEqual(s.strip(), SUBSTR.strip())
-        del s
-        s = SUBSTR.ljust(size)
-        self.assertEqual(len(s), size)
-        self.assertEqual(s.strip(), SUBSTR.strip())
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_swapcase(self, size):
-        SUBSTR = "aBcDeFG12.'\xa9\x00"
-        sublen = len(SUBSTR)
-        repeats = size // sublen + 2
-        s = SUBSTR * repeats
-        s = s.swapcase()
-        self.assertEqual(len(s), sublen * repeats)
-        self.assertEqual(s[:sublen * 3], SUBSTR.swapcase() * 3)
-        self.assertEqual(s[-sublen * 3:], SUBSTR.swapcase() * 3)
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_title(self, size):
-        SUBSTR = 'SpaaHAaaAaham'
-        s = SUBSTR * (size // len(SUBSTR) + 2)
-        s = s.title()
-        self.assertTrue(s.startswith((SUBSTR * 3).title()))
-        self.assertTrue(s.endswith(SUBSTR.lower() * 3))
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_translate(self, size):
-        trans = string.maketrans('.aZ', '-!$')
-        SUBSTR = 'aZz.z.Aaz.'
-        sublen = len(SUBSTR)
-        repeats = size // sublen + 2
-        s = SUBSTR * repeats
-        s = s.translate(trans)
-        self.assertEqual(len(s), repeats * sublen)
-        self.assertEqual(s[:sublen], SUBSTR.translate(trans))
-        self.assertEqual(s[-sublen:], SUBSTR.translate(trans))
-        self.assertEqual(s.count('.'), 0)
-        self.assertEqual(s.count('!'), repeats * 2)
-        self.assertEqual(s.count('z'), repeats * 3)
-
-    @bigmemtest(minsize=_2G + 5, memuse=2)
-    def test_upper(self, size):
-        s = 'a' * size
-        s = s.upper()
-        self.assertEqual(len(s), size)
-        self.assertEqual(s.count('A'), size)
-
-    @bigmemtest(minsize=_2G + 20, memuse=1)
-    def test_zfill(self, size):
-        SUBSTR = '-568324723598234'
-        s = SUBSTR.zfill(size)
-        self.assertTrue(s.endswith('0' + SUBSTR[1:]))
-        self.assertTrue(s.startswith('-0'))
-        self.assertEqual(len(s), size)
-        self.assertEqual(s.count('0'), size - len(SUBSTR))
-
-    @bigmemtest(minsize=_2G + 10, memuse=2)
-    def test_format(self, size):
-        s = '-' * size
-        sf = '%s' % (s,)
-        self.assertTrue(s == sf)
-        del sf
-        sf = '..%s..' % (s,)
-        self.assertEqual(len(sf), len(s) + 4)
-        self.assertTrue(sf.startswith('..-'))
-        self.assertTrue(sf.endswith('-..'))
-        del s, sf
-
-        size //= 2
-        edge = '-' * size
-        s = ''.join([edge, '%s', edge])
-        del edge
-        s = s % '...'
-        self.assertEqual(len(s), size * 2 + 3)
-        self.assertEqual(s.count('.'), 3)
-        self.assertEqual(s.count('-'), size * 2)
-
-    @bigmemtest(minsize=_2G + 10, memuse=2)
-    def test_repr_small(self, size):
-        s = '-' * size
-        s = repr(s)
-        self.assertEqual(len(s), size + 2)
-        self.assertEqual(s[0], "'")
-        self.assertEqual(s[-1], "'")
-        self.assertEqual(s.count('-'), size)
-        del s
-        # repr() will create a string four times as large as this 'binary
-        # string', but we don't want to allocate much more than twice
-        # size in total.  (We do extra testing in test_repr_large())
-        size = size // 5 * 2
-        s = '\x00' * size
-        s = repr(s)
-        self.assertEqual(len(s), size * 4 + 2)
-        self.assertEqual(s[0], "'")
-        self.assertEqual(s[-1], "'")
-        self.assertEqual(s.count('\\'), size)
-        self.assertEqual(s.count('0'), size * 2)
-
-    @bigmemtest(minsize=_2G + 10, memuse=5)
-    def test_repr_large(self, size):
-        s = '\x00' * size
-        s = repr(s)
-        self.assertEqual(len(s), size * 4 + 2)
-        self.assertEqual(s[0], "'")
-        self.assertEqual(s[-1], "'")
-        self.assertEqual(s.count('\\'), size)
-        self.assertEqual(s.count('0'), size * 2)
-
-    @bigmemtest(minsize=2**32 // 5, memuse=6+2)
-    def test_unicode_repr(self, size):
-        s = u"\uAAAA" * size
-        self.assertTrue(len(repr(s)) > size)
-
-    # This test is meaningful even with size < 2G, as long as the
-    # doubled string is > 2G (but it tests more if both are > 2G :)
-    @bigmemtest(minsize=_1G + 2, memuse=3)
-    def test_concat(self, size):
-        s = '.' * size
-        self.assertEqual(len(s), size)
-        s = s + s
-        self.assertEqual(len(s), size * 2)
-        self.assertEqual(s.count('.'), size * 2)
-
-    # This test is meaningful even with size < 2G, as long as the
-    # repeated string is > 2G (but it tests more if both are > 2G :)
-    @bigmemtest(minsize=_1G + 2, memuse=3)
-    def test_repeat(self, size):
-        s = '.' * size
-        self.assertEqual(len(s), size)
-        s = s * 2
-        self.assertEqual(len(s), size * 2)
-        self.assertEqual(s.count('.'), size * 2)
-
-    @bigmemtest(minsize=_2G + 20, memuse=1)
-    def test_slice_and_getitem(self, size):
-        SUBSTR = '0123456789'
-        sublen = len(SUBSTR)
-        s = SUBSTR * (size // sublen)
-        stepsize = len(s) // 100
-        stepsize = stepsize - (stepsize % sublen)
-        for i in range(0, len(s) - stepsize, stepsize):
-            self.assertEqual(s[i], SUBSTR[0])
-            self.assertEqual(s[i:i + sublen], SUBSTR)
-            self.assertEqual(s[i:i + sublen:2], SUBSTR[::2])
-            if i > 0:
-                self.assertEqual(s[i + sublen - 1:i - 1:-3],
-                                 SUBSTR[sublen::-3])
-        # Make sure we do some slicing and indexing near the end of the
-        # string, too.
-        self.assertEqual(s[len(s) - 1], SUBSTR[-1])
-        self.assertEqual(s[-1], SUBSTR[-1])
-        self.assertEqual(s[len(s) - 10], SUBSTR[0])
-        self.assertEqual(s[-sublen], SUBSTR[0])
-        self.assertEqual(s[len(s):], '')
-        self.assertEqual(s[len(s) - 1:], SUBSTR[-1])
-        self.assertEqual(s[-1:], SUBSTR[-1])
-        self.assertEqual(s[len(s) - sublen:], SUBSTR)
-        self.assertEqual(s[-sublen:], SUBSTR)
-        self.assertEqual(len(s[:]), len(s))
-        self.assertEqual(len(s[:len(s) - 5]), len(s) - 5)
-        self.assertEqual(len(s[5:-5]), len(s) - 10)
-
-        self.assertRaises(IndexError, operator.getitem, s, len(s))
-        self.assertRaises(IndexError, operator.getitem, s, len(s) + 1)
-        self.assertRaises(IndexError, operator.getitem, s, len(s) + 1<<31)
-
-    @bigmemtest(minsize=_2G, memuse=2)
-    def test_contains(self, size):
-        SUBSTR = '0123456789'
-        edge = '-' * (size // 2)
-        s = ''.join([edge, SUBSTR, edge])
-        del edge
-        self.assertIn(SUBSTR, s)
-        self.assertNotIn(SUBSTR * 2, s)
-        self.assertIn('-', s)
-        self.assertNotIn('a', s)
-        s += 'a'
-        self.assertIn('a', s)
-
-    @bigmemtest(minsize=_2G + 10, memuse=2)
-    def test_compare(self, size):
-        s1 = '-' * size
-        s2 = '-' * size
-        self.assertTrue(s1 == s2)
-        del s2
-        s2 = s1 + 'a'
-        self.assertFalse(s1 == s2)
-        del s2
-        s2 = '.' * size
-        self.assertFalse(s1 == s2)
-
-    @bigmemtest(minsize=_2G + 10, memuse=1)
-    def test_hash(self, size):
-        # Not sure if we can do any meaningful tests here...  Even if we
-        # start relying on the exact algorithm used, the result will be
-        # different depending on the size of the C 'long int'.  Even this
-        # test is dodgy (there's no *guarantee* that the two things should
-        # have a different hash, even if they, in the current
-        # implementation, almost always do.)
-        s = '\x00' * size
-        h1 = hash(s)
-        del s
-        s = '\x00' * (size + 1)
-        self.assertFalse(h1 == hash(s))
-
-class TupleTest(unittest.TestCase):
-
-    # Tuples have a small, fixed-sized head and an array of pointers to
-    # data.  Since we're testing 64-bit addressing, we can assume that the
-    # pointers are 8 bytes, and that thus that the tuples take up 8 bytes
-    # per size.
-
-    # As a side-effect of testing long tuples, these tests happen to test
-    # having more than 2<<31 references to any given object. Hence the
-    # use of different types of objects as contents in different tests.
-
-    @bigmemtest(minsize=_2G + 2, memuse=16)
-    def test_compare(self, size):
-        t1 = (u'',) * size
-        t2 = (u'',) * size
-        self.assertTrue(t1 == t2)
-        del t2
-        t2 = (u'',) * (size + 1)
-        self.assertFalse(t1 == t2)
-        del t2
-        t2 = (1,) * size
-        self.assertFalse(t1 == t2)
-
-    # Test concatenating into a single tuple of more than 2G in length,
-    # and concatenating a tuple of more than 2G in length separately, so
-    # the smaller test still gets run even if there isn't memory for the
-    # larger test (but we still let the tester know the larger test is
-    # skipped, in verbose mode.)
-    def basic_concat_test(self, size):
-        t = ((),) * size
-        self.assertEqual(len(t), size)
-        t = t + t
-        self.assertEqual(len(t), size * 2)
-
-    @bigmemtest(minsize=_2G // 2 + 2, memuse=24)
-    def test_concat_small(self, size):
-        return self.basic_concat_test(size)
-
-    @bigmemtest(minsize=_2G + 2, memuse=24)
-    def test_concat_large(self, size):
-        return self.basic_concat_test(size)
-
-    @bigmemtest(minsize=_2G // 5 + 10, memuse=8 * 5)
-    def test_contains(self, size):
-        t = (1, 2, 3, 4, 5) * size
-        self.assertEqual(len(t), size * 5)
-        self.assertIn(5, t)
-        self.assertNotIn((1, 2, 3, 4, 5), t)
-        self.assertNotIn(0, t)
-
-    @bigmemtest(minsize=_2G + 10, memuse=8)
-    def test_hash(self, size):
-        t1 = (0,) * size
-        h1 = hash(t1)
-        del t1
-        t2 = (0,) * (size + 1)
-        self.assertFalse(h1 == hash(t2))
-
-    @bigmemtest(minsize=_2G + 10, memuse=8)
-    def test_index_and_slice(self, size):
-        t = (None,) * size
-        self.assertEqual(len(t), size)
-        self.assertEqual(t[-1], None)
-        self.assertEqual(t[5], None)
-        self.assertEqual(t[size - 1], None)
-        self.assertRaises(IndexError, operator.getitem, t, size)
-        self.assertEqual(t[:5], (None,) * 5)
-        self.assertEqual(t[-5:], (None,) * 5)
-        self.assertEqual(t[20:25], (None,) * 5)
-        self.assertEqual(t[-25:-20], (None,) * 5)
-        self.assertEqual(t[size - 5:], (None,) * 5)
-        self.assertEqual(t[size - 5:size], (None,) * 5)
-        self.assertEqual(t[size - 6:size - 2], (None,) * 4)
-        self.assertEqual(t[size:size], ())
-        self.assertEqual(t[size:size+5], ())
-
-    # Like test_concat, split in two.
-    def basic_test_repeat(self, size):
-        t = ('',) * size
-        self.assertEqual(len(t), size)
-        t = t * 2
-        self.assertEqual(len(t), size * 2)
-
-    @bigmemtest(minsize=_2G // 2 + 2, memuse=24)
-    def test_repeat_small(self, size):
-        return self.basic_test_repeat(size)
-
-    @bigmemtest(minsize=_2G + 2, memuse=24)
-    def test_repeat_large(self, size):
-        return self.basic_test_repeat(size)
-
-    @bigmemtest(minsize=_1G - 1, memuse=12)
-    def test_repeat_large_2(self, size):
-        return self.basic_test_repeat(size)
-
-    @precisionbigmemtest(size=_1G - 1, memuse=9)
-    def test_from_2G_generator(self, size):
-        try:
-            t = tuple(xrange(size))
-        except MemoryError:
-            pass # acceptable on 32-bit
-        else:
-            count = 0
-            for item in t:
-                self.assertEqual(item, count)
-                count += 1
-            self.assertEqual(count, size)
-
-    @precisionbigmemtest(size=_1G - 25, memuse=9)
-    def test_from_almost_2G_generator(self, size):
-        try:
-            t = tuple(xrange(size))
-            count = 0
-            for item in t:
-                self.assertEqual(item, count)
-                count += 1
-            self.assertEqual(count, size)
-        except MemoryError:
-            pass # acceptable, expected on 32-bit
-
-    # Like test_concat, split in two.
-    def basic_test_repr(self, size):
-        t = (0,) * size
-        s = repr(t)
-        # The repr of a tuple of 0's is exactly three times the tuple length.
-        self.assertEqual(len(s), size * 3)
-        self.assertEqual(s[:5], '(0, 0')
-        self.assertEqual(s[-5:], '0, 0)')
-        self.assertEqual(s.count('0'), size)
-
-    @bigmemtest(minsize=_2G // 3 + 2, memuse=8 + 3)
-    def test_repr_small(self, size):
-        return self.basic_test_repr(size)
-
-    @bigmemtest(minsize=_2G + 2, memuse=8 + 3)
-    def test_repr_large(self, size):
-        return self.basic_test_repr(size)
-
-class ListTest(unittest.TestCase):
-
-    # Like tuples, lists have a small, fixed-sized head and an array of
-    # pointers to data, so 8 bytes per size. Also like tuples, we make the
-    # lists hold references to various objects to test their refcount
-    # limits.
-
-    @bigmemtest(minsize=_2G + 2, memuse=16)
-    def test_compare(self, size):
-        l1 = [u''] * size
-        l2 = [u''] * size
-        self.assertTrue(l1 == l2)
-        del l2
-        l2 = [u''] * (size + 1)
-        self.assertFalse(l1 == l2)
-        del l2
-        l2 = [2] * size
-        self.assertFalse(l1 == l2)
-
-    # Test concatenating into a single list of more than 2G in length,
-    # and concatenating a list of more than 2G in length separately, so
-    # the smaller test still gets run even if there isn't memory for the
-    # larger test (but we still let the tester know the larger test is
-    # skipped, in verbose mode.)
-    def basic_test_concat(self, size):
-        l = [[]] * size
-        self.assertEqual(len(l), size)
-        l = l + l
-        self.assertEqual(len(l), size * 2)
-
-    @bigmemtest(minsize=_2G // 2 + 2, memuse=24)
-    def test_concat_small(self, size):
-        return self.basic_test_concat(size)
-
-    @bigmemtest(minsize=_2G + 2, memuse=24)
-    def test_concat_large(self, size):
-        return self.basic_test_concat(size)
-
-    def basic_test_inplace_concat(self, size):
-        l = [sys.stdout] * size
-        l += l
-        self.assertEqual(len(l), size * 2)
-        self.assertTrue(l[0] is l[-1])
-        self.assertTrue(l[size - 1] is l[size + 1])
-
-    @bigmemtest(minsize=_2G // 2 + 2, memuse=24)
-    def test_inplace_concat_small(self, size):
-        return self.basic_test_inplace_concat(size)
-
-    @bigmemtest(minsize=_2G + 2, memuse=24)
-    def test_inplace_concat_large(self, size):
-        return self.basic_test_inplace_concat(size)
-
-    @bigmemtest(minsize=_2G // 5 + 10, memuse=8 * 5)
-    def test_contains(self, size):
-        l = [1, 2, 3, 4, 5] * size
-        self.assertEqual(len(l), size * 5)
-        self.assertIn(5, l)
-        self.assertNotIn([1, 2, 3, 4, 5], l)
-        self.assertNotIn(0, l)
-
-    @bigmemtest(minsize=_2G + 10, memuse=8)
-    def test_hash(self, size):
-        l = [0] * size
-        self.assertRaises(TypeError, hash, l)
-
-    @bigmemtest(minsize=_2G + 10, memuse=8)
-    def test_index_and_slice(self, size):
-        l = [None] * size
-        self.assertEqual(len(l), size)
-        self.assertEqual(l[-1], None)
-        self.assertEqual(l[5], None)
-        self.assertEqual(l[size - 1], None)
-        self.assertRaises(IndexError, operator.getitem, l, size)
-        self.assertEqual(l[:5], [None] * 5)
-        self.assertEqual(l[-5:], [None] * 5)
-        self.assertEqual(l[20:25], [None] * 5)
-        self.assertEqual(l[-25:-20], [None] * 5)
-        self.assertEqual(l[size - 5:], [None] * 5)
-        self.assertEqual(l[size - 5:size], [None] * 5)
-        self.assertEqual(l[size - 6:size - 2], [None] * 4)
-        self.assertEqual(l[size:size], [])
-        self.assertEqual(l[size:size+5], [])
-
-        l[size - 2] = 5
-        self.assertEqual(len(l), size)
-        self.assertEqual(l[-3:], [None, 5, None])
-        self.assertEqual(l.count(5), 1)
-        self.assertRaises(IndexError, operator.setitem, l, size, 6)
-        self.assertEqual(len(l), size)
-
-        l[size - 7:] = [1, 2, 3, 4, 5]
-        size -= 2
-        self.assertEqual(len(l), size)
-        self.assertEqual(l[-7:], [None, None, 1, 2, 3, 4, 5])
-
-        l[:7] = [1, 2, 3, 4, 5]
-        size -= 2
-        self.assertEqual(len(l), size)
-        self.assertEqual(l[:7], [1, 2, 3, 4, 5, None, None])
-
-        del l[size - 1]
-        size -= 1
-        self.assertEqual(len(l), size)
-        self.assertEqual(l[-1], 4)
-
-        del l[-2:]
-        size -= 2
-        self.assertEqual(len(l), size)
-        self.assertEqual(l[-1], 2)
-
-        del l[0]
-        size -= 1
-        self.assertEqual(len(l), size)
-        self.assertEqual(l[0], 2)
-
-        del l[:2]
-        size -= 2
-        self.assertEqual(len(l), size)
-        self.assertEqual(l[0], 4)
-
-    # Like test_concat, split in two.
-    def basic_test_repeat(self, size):
-        l = [] * size
-        self.assertFalse(l)
-        l = [''] * size
-        self.assertEqual(len(l), size)
-        l = l * 2
-        self.assertEqual(len(l), size * 2)
-
-    @bigmemtest(minsize=_2G // 2 + 2, memuse=24)
-    def test_repeat_small(self, size):
-        return self.basic_test_repeat(size)
-
-    @bigmemtest(minsize=_2G + 2, memuse=24)
-    def test_repeat_large(self, size):
-        return self.basic_test_repeat(size)
-
-    def basic_test_inplace_repeat(self, size):
-        l = ['']
-        l *= size
-        self.assertEqual(len(l), size)
-        self.assertTrue(l[0] is l[-1])
-        del l
-
-        l = [''] * size
-        l *= 2
-        self.assertEqual(len(l), size * 2)
-        self.assertTrue(l[size - 1] is l[-1])
-
-    @bigmemtest(minsize=_2G // 2 + 2, memuse=16)
-    def test_inplace_repeat_small(self, size):
-        return self.basic_test_inplace_repeat(size)
-
-    @bigmemtest(minsize=_2G + 2, memuse=16)
-    def test_inplace_repeat_large(self, size):
-        return self.basic_test_inplace_repeat(size)
-
-    def basic_test_repr(self, size):
-        l = [0] * size
-        s = repr(l)
-        # The repr of a list of 0's is exactly three times the list length.
-        self.assertEqual(len(s), size * 3)
-        self.assertEqual(s[:5], '[0, 0')
-        self.assertEqual(s[-5:], '0, 0]')
-        self.assertEqual(s.count('0'), size)
-
-    @bigmemtest(minsize=_2G // 3 + 2, memuse=8 + 3)
-    def test_repr_small(self, size):
-        return self.basic_test_repr(size)
-
-    @bigmemtest(minsize=_2G + 2, memuse=8 + 3)
-    def test_repr_large(self, size):
-        return self.basic_test_repr(size)
-
-    # list overallocates ~1/8th of the total size (on first expansion) so
-    # the single list.append call puts memuse at 9 bytes per size.
-    @bigmemtest(minsize=_2G, memuse=9)
-    def test_append(self, size):
-        l = [object()] * size
-        l.append(object())
-        self.assertEqual(len(l), size+1)
-        self.assertTrue(l[-3] is l[-2])
-        self.assertFalse(l[-2] is l[-1])
-
-    @bigmemtest(minsize=_2G // 5 + 2, memuse=8 * 5)
-    def test_count(self, size):
-        l = [1, 2, 3, 4, 5] * size
-        self.assertEqual(l.count(1), size)
-        self.assertEqual(l.count("1"), 0)
-
-    def basic_test_extend(self, size):
-        l = [file] * size
-        l.extend(l)
-        self.assertEqual(len(l), size * 2)
-        self.assertTrue(l[0] is l[-1])
-        self.assertTrue(l[size - 1] is l[size + 1])
-
-    @bigmemtest(minsize=_2G // 2 + 2, memuse=16)
-    def test_extend_small(self, size):
-        return self.basic_test_extend(size)
-
-    @bigmemtest(minsize=_2G + 2, memuse=16)
-    def test_extend_large(self, size):
-        return self.basic_test_extend(size)
-
-    @bigmemtest(minsize=_2G // 5 + 2, memuse=8 * 5)
-    def test_index(self, size):
-        l = [1L, 2L, 3L, 4L, 5L] * size
-        size *= 5
-        self.assertEqual(l.index(1), 0)
-        self.assertEqual(l.index(5, size - 5), size - 1)
-        self.assertEqual(l.index(5, size - 5, size), size - 1)
-        self.assertRaises(ValueError, l.index, 1, size - 4, size)
-        self.assertRaises(ValueError, l.index, 6L)
-
-    # This tests suffers from overallocation, just like test_append.
-    @bigmemtest(minsize=_2G + 10, memuse=9)
-    def test_insert(self, size):
-        l = [1.0] * size
-        l.insert(size - 1, "A")
-        size += 1
-        self.assertEqual(len(l), size)
-        self.assertEqual(l[-3:], [1.0, "A", 1.0])
-
-        l.insert(size + 1, "B")
-        size += 1
-        self.assertEqual(len(l), size)
-        self.assertEqual(l[-3:], ["A", 1.0, "B"])
-
-        l.insert(1, "C")
-        size += 1
-        self.assertEqual(len(l), size)
-        self.assertEqual(l[:3], [1.0, "C", 1.0])
-        self.assertEqual(l[size - 3:], ["A", 1.0, "B"])
-
-    @bigmemtest(minsize=_2G // 5 + 4, memuse=8 * 5)
-    def test_pop(self, size):
-        l = [u"a", u"b", u"c", u"d", u"e"] * size
-        size *= 5
-        self.assertEqual(len(l), size)
-
-        item = l.pop()
-        size -= 1
-        self.assertEqual(len(l), size)
-        self.assertEqual(item, u"e")
-        self.assertEqual(l[-2:], [u"c", u"d"])
-
-        item = l.pop(0)
-        size -= 1
-        self.assertEqual(len(l), size)
-        self.assertEqual(item, u"a")
-        self.assertEqual(l[:2], [u"b", u"c"])
-
-        item = l.pop(size - 2)
-        size -= 1
-        self.assertEqual(len(l), size)
-        self.assertEqual(item, u"c")
-        self.assertEqual(l[-2:], [u"b", u"d"])
-
-    @bigmemtest(minsize=_2G + 10, memuse=8)
-    def test_remove(self, size):
-        l = [10] * size
-        self.assertEqual(len(l), size)
-
-        l.remove(10)
-        size -= 1
-        self.assertEqual(len(l), size)
-
-        # Because of the earlier l.remove(), this append doesn't trigger
-        # a resize.
-        l.append(5)
-        size += 1
-        self.assertEqual(len(l), size)
-        self.assertEqual(l[-2:], [10, 5])
-        l.remove(5)
-        size -= 1
-        self.assertEqual(len(l), size)
-        self.assertEqual(l[-2:], [10, 10])
-
-    @bigmemtest(minsize=_2G // 5 + 2, memuse=8 * 5)
-    def test_reverse(self, size):
-        l = [1, 2, 3, 4, 5] * size
-        l.reverse()
-        self.assertEqual(len(l), size * 5)
-        self.assertEqual(l[-5:], [5, 4, 3, 2, 1])
-        self.assertEqual(l[:5], [5, 4, 3, 2, 1])
-
-    @bigmemtest(minsize=_2G // 5 + 2, memuse=8 * 5)
-    def test_sort(self, size):
-        l = [1, 2, 3, 4, 5] * size
-        l.sort()
-        self.assertEqual(len(l), size * 5)
-        self.assertEqual(l.count(1), size)
-        self.assertEqual(l[:10], [1] * 10)
-        self.assertEqual(l[-10:], [5] * 10)
-
-class BufferTest(unittest.TestCase):
-
-    @precisionbigmemtest(size=_1G, memuse=4)
-    def test_repeat(self, size):
-        try:
-            with test_support.check_py3k_warnings():
-                b = buffer("AAAA")*size
-        except MemoryError:
-            pass # acceptable on 32-bit
-        else:
-            count = 0
-            for c in b:
-                self.assertEqual(c, 'A')
-                count += 1
-            self.assertEqual(count, size*4)
-
-def test_main():
-    test_support.run_unittest(StrTest, TupleTest, ListTest, BufferTest)
-
-if __name__ == '__main__':
-    if len(sys.argv) > 1:
-        test_support.set_memlimit(sys.argv[1])
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binascii.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binascii.py
deleted file mode 100644
index 5b4721c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binascii.py
+++ /dev/null
@@ -1,236 +0,0 @@
-"""Test the binascii C module."""
-
-from test import test_support
-import unittest
-import binascii
-import array
-
-# Note: "*_hex" functions are aliases for "(un)hexlify"
-b2a_functions = ['b2a_base64', 'b2a_hex', 'b2a_hqx', 'b2a_qp', 'b2a_uu',
-                 'hexlify', 'rlecode_hqx']
-a2b_functions = ['a2b_base64', 'a2b_hex', 'a2b_hqx', 'a2b_qp', 'a2b_uu',
-                 'unhexlify', 'rledecode_hqx']
-all_functions = a2b_functions + b2a_functions + ['crc32', 'crc_hqx']
-
-
-class BinASCIITest(unittest.TestCase):
-
-    type2test = str
-    # Create binary test data
-    rawdata = "The quick brown fox jumps over the lazy dog.\r\n"
-    # Be slow so we don't depend on other modules
-    rawdata += "".join(map(chr, xrange(256)))
-    rawdata += "\r\nHello world.\n"
-
-    def setUp(self):
-        self.data = self.type2test(self.rawdata)
-
-    def test_exceptions(self):
-        # Check module exceptions
-        self.assertTrue(issubclass(binascii.Error, Exception))
-        self.assertTrue(issubclass(binascii.Incomplete, Exception))
-
-    def test_functions(self):
-        # Check presence of all functions
-        for name in all_functions:
-            self.assertTrue(hasattr(getattr(binascii, name), '__call__'))
-            self.assertRaises(TypeError, getattr(binascii, name))
-
-    def test_returned_value(self):
-        # Limit to the minimum of all limits (b2a_uu)
-        MAX_ALL = 45
-        raw = self.rawdata[:MAX_ALL]
-        for fa, fb in zip(a2b_functions, b2a_functions):
-            a2b = getattr(binascii, fa)
-            b2a = getattr(binascii, fb)
-            try:
-                a = b2a(self.type2test(raw))
-                res = a2b(self.type2test(a))
-            except Exception, err:
-                self.fail("{}/{} conversion raises {!r}".format(fb, fa, err))
-            if fb == 'b2a_hqx':
-                # b2a_hqx returns a tuple
-                res, _ = res
-            self.assertEqual(res, raw, "{}/{} conversion: "
-                             "{!r} != {!r}".format(fb, fa, res, raw))
-            self.assertIsInstance(res, str)
-            self.assertIsInstance(a, str)
-            self.assertLess(max(ord(c) for c in a), 128)
-        self.assertIsInstance(binascii.crc_hqx(raw, 0), int)
-        self.assertIsInstance(binascii.crc32(raw), int)
-
-    def test_base64valid(self):
-        # Test base64 with valid data
-        MAX_BASE64 = 57
-        lines = []
-        for i in range(0, len(self.rawdata), MAX_BASE64):
-            b = self.type2test(self.rawdata[i:i+MAX_BASE64])
-            a = binascii.b2a_base64(b)
-            lines.append(a)
-        res = ""
-        for line in lines:
-            a = self.type2test(line)
-            b = binascii.a2b_base64(a)
-            res = res + b
-        self.assertEqual(res, self.rawdata)
-
-    def test_base64invalid(self):
-        # Test base64 with random invalid characters sprinkled throughout
-        # (This requires a new version of binascii.)
-        MAX_BASE64 = 57
-        lines = []
-        for i in range(0, len(self.data), MAX_BASE64):
-            b = self.type2test(self.rawdata[i:i+MAX_BASE64])
-            a = binascii.b2a_base64(b)
-            lines.append(a)
-
-        fillers = ""
-        valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/"
-        for i in xrange(256):
-            c = chr(i)
-            if c not in valid:
-                fillers += c
-        def addnoise(line):
-            noise = fillers
-            ratio = len(line) // len(noise)
-            res = ""
-            while line and noise:
-                if len(line) // len(noise) > ratio:
-                    c, line = line[0], line[1:]
-                else:
-                    c, noise = noise[0], noise[1:]
-                res += c
-            return res + noise + line
-        res = ""
-        for line in map(addnoise, lines):
-            a = self.type2test(line)
-            b = binascii.a2b_base64(a)
-            res += b
-        self.assertEqual(res, self.rawdata)
-
-        # Test base64 with just invalid characters, which should return
-        # empty strings. TBD: shouldn't it raise an exception instead ?
-        self.assertEqual(binascii.a2b_base64(self.type2test(fillers)), '')
-
-    def test_uu(self):
-        MAX_UU = 45
-        lines = []
-        for i in range(0, len(self.data), MAX_UU):
-            b = self.type2test(self.rawdata[i:i+MAX_UU])
-            a = binascii.b2a_uu(b)
-            lines.append(a)
-        res = ""
-        for line in lines:
-            a = self.type2test(line)
-            b = binascii.a2b_uu(a)
-            res += b
-        self.assertEqual(res, self.rawdata)
-
-        self.assertEqual(binascii.a2b_uu("\x7f"), "\x00"*31)
-        self.assertEqual(binascii.a2b_uu("\x80"), "\x00"*32)
-        self.assertEqual(binascii.a2b_uu("\xff"), "\x00"*31)
-        self.assertRaises(binascii.Error, binascii.a2b_uu, "\xff\x00")
-        self.assertRaises(binascii.Error, binascii.a2b_uu, "!!!!")
-
-        self.assertRaises(binascii.Error, binascii.b2a_uu, 46*"!")
-
-        # Issue #7701 (crash on a pydebug build)
-        self.assertEqual(binascii.b2a_uu('x'), '!>   \n')
-
-    def test_crc32(self):
-        crc = binascii.crc32(self.type2test("Test the CRC-32 of"))
-        crc = binascii.crc32(self.type2test(" this string."), crc)
-        self.assertEqual(crc, 1571220330)
-
-        self.assertRaises(TypeError, binascii.crc32)
-
-    def test_hqx(self):
-        # Perform binhex4 style RLE-compression
-        # Then calculate the hexbin4 binary-to-ASCII translation
-        rle = binascii.rlecode_hqx(self.data)
-        a = binascii.b2a_hqx(self.type2test(rle))
-        b, _ = binascii.a2b_hqx(self.type2test(a))
-        res = binascii.rledecode_hqx(b)
-
-        self.assertEqual(res, self.rawdata)
-
-    def test_hex(self):
-        # test hexlification
-        s = '{s\005\000\000\000worldi\002\000\000\000s\005\000\000\000helloi\001\000\000\0000'
-        t = binascii.b2a_hex(self.type2test(s))
-        u = binascii.a2b_hex(self.type2test(t))
-        self.assertEqual(s, u)
-        self.assertRaises(TypeError, binascii.a2b_hex, t[:-1])
-        self.assertRaises(TypeError, binascii.a2b_hex, t[:-1] + 'q')
-
-        # Verify the treatment of Unicode strings
-        if test_support.have_unicode:
-            self.assertEqual(binascii.hexlify(unicode('a', 'ascii')), '61')
-
-    def test_qp(self):
-        # A test for SF bug 534347 (segfaults without the proper fix)
-        try:
-            binascii.a2b_qp("", **{1:1})
-        except TypeError:
-            pass
-        else:
-            self.fail("binascii.a2b_qp(**{1:1}) didn't raise TypeError")
-        self.assertEqual(binascii.a2b_qp("= "), "= ")
-        self.assertEqual(binascii.a2b_qp("=="), "=")
-        self.assertEqual(binascii.a2b_qp("=AX"), "=AX")
-        self.assertRaises(TypeError, binascii.b2a_qp, foo="bar")
-        self.assertEqual(binascii.a2b_qp("=00\r\n=00"), "\x00\r\n\x00")
-        self.assertEqual(
-            binascii.b2a_qp("\xff\r\n\xff\n\xff"),
-            "=FF\r\n=FF\r\n=FF"
-        )
-        self.assertEqual(
-            binascii.b2a_qp("0"*75+"\xff\r\n\xff\r\n\xff"),
-            "0"*75+"=\r\n=FF\r\n=FF\r\n=FF"
-        )
-
-        self.assertEqual(binascii.b2a_qp('\0\n'), '=00\n')
-        self.assertEqual(binascii.b2a_qp('\0\n', quotetabs=True), '=00\n')
-        self.assertEqual(binascii.b2a_qp('foo\tbar\t\n'), 'foo\tbar=09\n')
-        self.assertEqual(binascii.b2a_qp('foo\tbar\t\n', quotetabs=True), 'foo=09bar=09\n')
-
-        self.assertEqual(binascii.b2a_qp('.'), '=2E')
-        self.assertEqual(binascii.b2a_qp('.\n'), '=2E\n')
-        self.assertEqual(binascii.b2a_qp('a.\n'), 'a.\n')
-
-    def test_empty_string(self):
-        # A test for SF bug #1022953.  Make sure SystemError is not raised.
-        empty = self.type2test('')
-        for func in all_functions:
-            if func == 'crc_hqx':
-                # crc_hqx needs 2 arguments
-                binascii.crc_hqx(empty, 0)
-                continue
-            f = getattr(binascii, func)
-            try:
-                f(empty)
-            except Exception, err:
-                self.fail("{}({!r}) raises {!r}".format(func, empty, err))
-
-
-class ArrayBinASCIITest(BinASCIITest):
-    def type2test(self, s):
-        return array.array('c', s)
-
-
-class BytearrayBinASCIITest(BinASCIITest):
-    type2test = bytearray
-
-
-class MemoryviewBinASCIITest(BinASCIITest):
-    type2test = memoryview
-
-
-def test_main():
-    test_support.run_unittest(BinASCIITest,
-                              ArrayBinASCIITest,
-                              BytearrayBinASCIITest,
-                              MemoryviewBinASCIITest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binhex.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binhex.py
deleted file mode 100644
index f75b850..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binhex.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /usr/bin/env python
-"""Test script for the binhex C module
-
-   Uses the mechanism of the python binhex module
-   Based on an original test by Roger E. Masse.
-"""
-import binhex
-import os
-import unittest
-from test import test_support
-
-
-class BinHexTestCase(unittest.TestCase):
-
-    def setUp(self):
-        self.fname1 = test_support.TESTFN + "1"
-        self.fname2 = test_support.TESTFN + "2"
-
-    def tearDown(self):
-        try: os.unlink(self.fname1)
-        except OSError: pass
-
-        try: os.unlink(self.fname2)
-        except OSError: pass
-
-    DATA = 'Jack is my hero'
-
-    def test_binhex(self):
-        f = open(self.fname1, 'w')
-        f.write(self.DATA)
-        f.close()
-
-        binhex.binhex(self.fname1, self.fname2)
-
-        binhex.hexbin(self.fname2, self.fname1)
-
-        f = open(self.fname1, 'r')
-        finish = f.readline()
-        f.close()
-
-        self.assertEqual(self.DATA, finish)
-
-
-def test_main():
-    test_support.run_unittest(BinHexTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binop.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binop.py
deleted file mode 100644
index 2a051b4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_binop.py
+++ /dev/null
@@ -1,331 +0,0 @@
-"""Tests for binary operators on subtypes of built-in types."""
-
-import unittest
-from test import test_support
-
-def gcd(a, b):
-    """Greatest common divisor using Euclid's algorithm."""
-    while a:
-        a, b = b%a, a
-    return b
-
-def isint(x):
-    """Test whether an object is an instance of int or long."""
-    return isinstance(x, int) or isinstance(x, long)
-
-def isnum(x):
-    """Test whether an object is an instance of a built-in numeric type."""
-    for T in int, long, float, complex:
-        if isinstance(x, T):
-            return 1
-    return 0
-
-def isRat(x):
-    """Test wheter an object is an instance of the Rat class."""
-    return isinstance(x, Rat)
-
-class Rat(object):
-
-    """Rational number implemented as a normalized pair of longs."""
-
-    __slots__ = ['_Rat__num', '_Rat__den']
-
-    def __init__(self, num=0L, den=1L):
-        """Constructor: Rat([num[, den]]).
-
-        The arguments must be ints or longs, and default to (0, 1)."""
-        if not isint(num):
-            raise TypeError, "Rat numerator must be int or long (%r)" % num
-        if not isint(den):
-            raise TypeError, "Rat denominator must be int or long (%r)" % den
-        # But the zero is always on
-        if den == 0:
-            raise ZeroDivisionError, "zero denominator"
-        g = gcd(den, num)
-        self.__num = long(num//g)
-        self.__den = long(den//g)
-
-    def _get_num(self):
-        """Accessor function for read-only 'num' attribute of Rat."""
-        return self.__num
-    num = property(_get_num, None)
-
-    def _get_den(self):
-        """Accessor function for read-only 'den' attribute of Rat."""
-        return self.__den
-    den = property(_get_den, None)
-
-    def __repr__(self):
-        """Convert a Rat to an string resembling a Rat constructor call."""
-        return "Rat(%d, %d)" % (self.__num, self.__den)
-
-    def __str__(self):
-        """Convert a Rat to a string resembling a decimal numeric value."""
-        return str(float(self))
-
-    def __float__(self):
-        """Convert a Rat to a float."""
-        return self.__num*1.0/self.__den
-
-    def __int__(self):
-        """Convert a Rat to an int; self.den must be 1."""
-        if self.__den == 1:
-            try:
-                return int(self.__num)
-            except OverflowError:
-                raise OverflowError, ("%s too large to convert to int" %
-                                      repr(self))
-        raise ValueError, "can't convert %s to int" % repr(self)
-
-    def __long__(self):
-        """Convert a Rat to an long; self.den must be 1."""
-        if self.__den == 1:
-            return long(self.__num)
-        raise ValueError, "can't convert %s to long" % repr(self)
-
-    def __add__(self, other):
-        """Add two Rats, or a Rat and a number."""
-        if isint(other):
-            other = Rat(other)
-        if isRat(other):
-            return Rat(self.__num*other.__den + other.__num*self.__den,
-                       self.__den*other.__den)
-        if isnum(other):
-            return float(self) + other
-        return NotImplemented
-
-    __radd__ = __add__
-
-    def __sub__(self, other):
-        """Subtract two Rats, or a Rat and a number."""
-        if isint(other):
-            other = Rat(other)
-        if isRat(other):
-            return Rat(self.__num*other.__den - other.__num*self.__den,
-                       self.__den*other.__den)
-        if isnum(other):
-            return float(self) - other
-        return NotImplemented
-
-    def __rsub__(self, other):
-        """Subtract two Rats, or a Rat and a number (reversed args)."""
-        if isint(other):
-            other = Rat(other)
-        if isRat(other):
-            return Rat(other.__num*self.__den - self.__num*other.__den,
-                       self.__den*other.__den)
-        if isnum(other):
-            return other - float(self)
-        return NotImplemented
-
-    def __mul__(self, other):
-        """Multiply two Rats, or a Rat and a number."""
-        if isRat(other):
-            return Rat(self.__num*other.__num, self.__den*other.__den)
-        if isint(other):
-            return Rat(self.__num*other, self.__den)
-        if isnum(other):
-            return float(self)*other
-        return NotImplemented
-
-    __rmul__ = __mul__
-
-    def __truediv__(self, other):
-        """Divide two Rats, or a Rat and a number."""
-        if isRat(other):
-            return Rat(self.__num*other.__den, self.__den*other.__num)
-        if isint(other):
-            return Rat(self.__num, self.__den*other)
-        if isnum(other):
-            return float(self) / other
-        return NotImplemented
-
-    __div__ = __truediv__
-
-    def __rtruediv__(self, other):
-        """Divide two Rats, or a Rat and a number (reversed args)."""
-        if isRat(other):
-            return Rat(other.__num*self.__den, other.__den*self.__num)
-        if isint(other):
-            return Rat(other*self.__den, self.__num)
-        if isnum(other):
-            return other / float(self)
-        return NotImplemented
-
-    __rdiv__ = __rtruediv__
-
-    def __floordiv__(self, other):
-        """Divide two Rats, returning the floored result."""
-        if isint(other):
-            other = Rat(other)
-        elif not isRat(other):
-            return NotImplemented
-        x = self/other
-        return x.__num // x.__den
-
-    def __rfloordiv__(self, other):
-        """Divide two Rats, returning the floored result (reversed args)."""
-        x = other/self
-        return x.__num // x.__den
-
-    def __divmod__(self, other):
-        """Divide two Rats, returning quotient and remainder."""
-        if isint(other):
-            other = Rat(other)
-        elif not isRat(other):
-            return NotImplemented
-        x = self//other
-        return (x, self - other * x)
-
-    def __rdivmod__(self, other):
-        """Divide two Rats, returning quotient and remainder (reversed args)."""
-        if isint(other):
-            other = Rat(other)
-        elif not isRat(other):
-            return NotImplemented
-        return divmod(other, self)
-
-    def __mod__(self, other):
-        """Take one Rat modulo another."""
-        return divmod(self, other)[1]
-
-    def __rmod__(self, other):
-        """Take one Rat modulo another (reversed args)."""
-        return divmod(other, self)[1]
-
-    def __eq__(self, other):
-        """Compare two Rats for equality."""
-        if isint(other):
-            return self.__den == 1 and self.__num == other
-        if isRat(other):
-            return self.__num == other.__num and self.__den == other.__den
-        if isnum(other):
-            return float(self) == other
-        return NotImplemented
-
-    def __ne__(self, other):
-        """Compare two Rats for inequality."""
-        return not self == other
-
-    # Silence Py3k warning
-    __hash__ = None
-
-class RatTestCase(unittest.TestCase):
-    """Unit tests for Rat class and its support utilities."""
-
-    def test_gcd(self):
-        self.assertEqual(gcd(10, 12), 2)
-        self.assertEqual(gcd(10, 15), 5)
-        self.assertEqual(gcd(10, 11), 1)
-        self.assertEqual(gcd(100, 15), 5)
-        self.assertEqual(gcd(-10, 2), -2)
-        self.assertEqual(gcd(10, -2), 2)
-        self.assertEqual(gcd(-10, -2), -2)
-        for i in range(1, 20):
-            for j in range(1, 20):
-                self.assertTrue(gcd(i, j) > 0)
-                self.assertTrue(gcd(-i, j) < 0)
-                self.assertTrue(gcd(i, -j) > 0)
-                self.assertTrue(gcd(-i, -j) < 0)
-
-    def test_constructor(self):
-        a = Rat(10, 15)
-        self.assertEqual(a.num, 2)
-        self.assertEqual(a.den, 3)
-        a = Rat(10L, 15L)
-        self.assertEqual(a.num, 2)
-        self.assertEqual(a.den, 3)
-        a = Rat(10, -15)
-        self.assertEqual(a.num, -2)
-        self.assertEqual(a.den, 3)
-        a = Rat(-10, 15)
-        self.assertEqual(a.num, -2)
-        self.assertEqual(a.den, 3)
-        a = Rat(-10, -15)
-        self.assertEqual(a.num, 2)
-        self.assertEqual(a.den, 3)
-        a = Rat(7)
-        self.assertEqual(a.num, 7)
-        self.assertEqual(a.den, 1)
-        try:
-            a = Rat(1, 0)
-        except ZeroDivisionError:
-            pass
-        else:
-            self.fail("Rat(1, 0) didn't raise ZeroDivisionError")
-        for bad in "0", 0.0, 0j, (), [], {}, None, Rat, unittest:
-            try:
-                a = Rat(bad)
-            except TypeError:
-                pass
-            else:
-                self.fail("Rat(%r) didn't raise TypeError" % bad)
-            try:
-                a = Rat(1, bad)
-            except TypeError:
-                pass
-            else:
-                self.fail("Rat(1, %r) didn't raise TypeError" % bad)
-
-    def test_add(self):
-        self.assertEqual(Rat(2, 3) + Rat(1, 3), 1)
-        self.assertEqual(Rat(2, 3) + 1, Rat(5, 3))
-        self.assertEqual(1 + Rat(2, 3), Rat(5, 3))
-        self.assertEqual(1.0 + Rat(1, 2), 1.5)
-        self.assertEqual(Rat(1, 2) + 1.0, 1.5)
-
-    def test_sub(self):
-        self.assertEqual(Rat(7, 2) - Rat(7, 5), Rat(21, 10))
-        self.assertEqual(Rat(7, 5) - 1, Rat(2, 5))
-        self.assertEqual(1 - Rat(3, 5), Rat(2, 5))
-        self.assertEqual(Rat(3, 2) - 1.0, 0.5)
-        self.assertEqual(1.0 - Rat(1, 2), 0.5)
-
-    def test_mul(self):
-        self.assertEqual(Rat(2, 3) * Rat(5, 7), Rat(10, 21))
-        self.assertEqual(Rat(10, 3) * 3, 10)
-        self.assertEqual(3 * Rat(10, 3), 10)
-        self.assertEqual(Rat(10, 5) * 0.5, 1.0)
-        self.assertEqual(0.5 * Rat(10, 5), 1.0)
-
-    def test_div(self):
-        self.assertEqual(Rat(10, 3) / Rat(5, 7), Rat(14, 3))
-        self.assertEqual(Rat(10, 3) / 3, Rat(10, 9))
-        self.assertEqual(2 / Rat(5), Rat(2, 5))
-        self.assertEqual(3.0 * Rat(1, 2), 1.5)
-        self.assertEqual(Rat(1, 2) * 3.0, 1.5)
-
-    def test_floordiv(self):
-        self.assertEqual(Rat(10) // Rat(4), 2)
-        self.assertEqual(Rat(10, 3) // Rat(4, 3), 2)
-        self.assertEqual(Rat(10) // 4, 2)
-        self.assertEqual(10 // Rat(4), 2)
-
-    def test_eq(self):
-        self.assertEqual(Rat(10), Rat(20, 2))
-        self.assertEqual(Rat(10), 10)
-        self.assertEqual(10, Rat(10))
-        self.assertEqual(Rat(10), 10.0)
-        self.assertEqual(10.0, Rat(10))
-
-    def test_future_div(self):
-        exec future_test
-
-    # XXX Ran out of steam; TO DO: divmod, div, future division
-
-future_test = """
-from __future__ import division
-self.assertEqual(Rat(10, 3) / Rat(5, 7), Rat(14, 3))
-self.assertEqual(Rat(10, 3) / 3, Rat(10, 9))
-self.assertEqual(2 / Rat(5), Rat(2, 5))
-self.assertEqual(3.0 * Rat(1, 2), 1.5)
-self.assertEqual(Rat(1, 2) * 3.0, 1.5)
-self.assertEqual(eval('1/2'), 0.5)
-"""
-
-def test_main():
-    test_support.run_unittest(RatTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bisect.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bisect.py
deleted file mode 100644
index e3c7f70..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bisect.py
+++ /dev/null
@@ -1,317 +0,0 @@
-import sys
-import unittest
-from test import test_support
-from UserList import UserList
-
-# We do a bit of trickery here to be able to test both the C implementation
-# and the Python implementation of the module.
-
-# Make it impossible to import the C implementation anymore.
-sys.modules['_bisect'] = 0
-# We must also handle the case that bisect was imported before.
-if 'bisect' in sys.modules:
-    del sys.modules['bisect']
-
-# Now we can import the module and get the pure Python implementation.
-import bisect as py_bisect
-
-# Restore everything to normal.
-del sys.modules['_bisect']
-del sys.modules['bisect']
-
-# This is now the module with the C implementation.
-import bisect as c_bisect
-
-
-class TestBisect(unittest.TestCase):
-    module = None
-
-    def setUp(self):
-        self.precomputedCases = [
-            (self.module.bisect_right, [], 1, 0),
-            (self.module.bisect_right, [1], 0, 0),
-            (self.module.bisect_right, [1], 1, 1),
-            (self.module.bisect_right, [1], 2, 1),
-            (self.module.bisect_right, [1, 1], 0, 0),
-            (self.module.bisect_right, [1, 1], 1, 2),
-            (self.module.bisect_right, [1, 1], 2, 2),
-            (self.module.bisect_right, [1, 1, 1], 0, 0),
-            (self.module.bisect_right, [1, 1, 1], 1, 3),
-            (self.module.bisect_right, [1, 1, 1], 2, 3),
-            (self.module.bisect_right, [1, 1, 1, 1], 0, 0),
-            (self.module.bisect_right, [1, 1, 1, 1], 1, 4),
-            (self.module.bisect_right, [1, 1, 1, 1], 2, 4),
-            (self.module.bisect_right, [1, 2], 0, 0),
-            (self.module.bisect_right, [1, 2], 1, 1),
-            (self.module.bisect_right, [1, 2], 1.5, 1),
-            (self.module.bisect_right, [1, 2], 2, 2),
-            (self.module.bisect_right, [1, 2], 3, 2),
-            (self.module.bisect_right, [1, 1, 2, 2], 0, 0),
-            (self.module.bisect_right, [1, 1, 2, 2], 1, 2),
-            (self.module.bisect_right, [1, 1, 2, 2], 1.5, 2),
-            (self.module.bisect_right, [1, 1, 2, 2], 2, 4),
-            (self.module.bisect_right, [1, 1, 2, 2], 3, 4),
-            (self.module.bisect_right, [1, 2, 3], 0, 0),
-            (self.module.bisect_right, [1, 2, 3], 1, 1),
-            (self.module.bisect_right, [1, 2, 3], 1.5, 1),
-            (self.module.bisect_right, [1, 2, 3], 2, 2),
-            (self.module.bisect_right, [1, 2, 3], 2.5, 2),
-            (self.module.bisect_right, [1, 2, 3], 3, 3),
-            (self.module.bisect_right, [1, 2, 3], 4, 3),
-            (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0),
-            (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 1),
-            (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 1),
-            (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 3),
-            (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 3),
-            (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 6),
-            (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 6),
-            (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 10),
-            (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 10),
-
-            (self.module.bisect_left, [], 1, 0),
-            (self.module.bisect_left, [1], 0, 0),
-            (self.module.bisect_left, [1], 1, 0),
-            (self.module.bisect_left, [1], 2, 1),
-            (self.module.bisect_left, [1, 1], 0, 0),
-            (self.module.bisect_left, [1, 1], 1, 0),
-            (self.module.bisect_left, [1, 1], 2, 2),
-            (self.module.bisect_left, [1, 1, 1], 0, 0),
-            (self.module.bisect_left, [1, 1, 1], 1, 0),
-            (self.module.bisect_left, [1, 1, 1], 2, 3),
-            (self.module.bisect_left, [1, 1, 1, 1], 0, 0),
-            (self.module.bisect_left, [1, 1, 1, 1], 1, 0),
-            (self.module.bisect_left, [1, 1, 1, 1], 2, 4),
-            (self.module.bisect_left, [1, 2], 0, 0),
-            (self.module.bisect_left, [1, 2], 1, 0),
-            (self.module.bisect_left, [1, 2], 1.5, 1),
-            (self.module.bisect_left, [1, 2], 2, 1),
-            (self.module.bisect_left, [1, 2], 3, 2),
-            (self.module.bisect_left, [1, 1, 2, 2], 0, 0),
-            (self.module.bisect_left, [1, 1, 2, 2], 1, 0),
-            (self.module.bisect_left, [1, 1, 2, 2], 1.5, 2),
-            (self.module.bisect_left, [1, 1, 2, 2], 2, 2),
-            (self.module.bisect_left, [1, 1, 2, 2], 3, 4),
-            (self.module.bisect_left, [1, 2, 3], 0, 0),
-            (self.module.bisect_left, [1, 2, 3], 1, 0),
-            (self.module.bisect_left, [1, 2, 3], 1.5, 1),
-            (self.module.bisect_left, [1, 2, 3], 2, 1),
-            (self.module.bisect_left, [1, 2, 3], 2.5, 2),
-            (self.module.bisect_left, [1, 2, 3], 3, 2),
-            (self.module.bisect_left, [1, 2, 3], 4, 3),
-            (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0),
-            (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 0),
-            (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 1),
-            (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 1),
-            (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 3),
-            (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 3),
-            (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 6),
-            (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 6),
-            (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 10)
-        ]
-
-    def test_precomputed(self):
-        for func, data, elem, expected in self.precomputedCases:
-            self.assertEqual(func(data, elem), expected)
-            self.assertEqual(func(UserList(data), elem), expected)
-
-    def test_negative_lo(self):
-        # Issue 3301
-        mod = self.module
-        self.assertRaises(ValueError, mod.bisect_left, [1, 2, 3], 5, -1, 3),
-        self.assertRaises(ValueError, mod.bisect_right, [1, 2, 3], 5, -1, 3),
-        self.assertRaises(ValueError, mod.insort_left, [1, 2, 3], 5, -1, 3),
-        self.assertRaises(ValueError, mod.insort_right, [1, 2, 3], 5, -1, 3),
-
-    def test_random(self, n=25):
-        from random import randrange
-        for i in xrange(n):
-            data = [randrange(0, n, 2) for j in xrange(i)]
-            data.sort()
-            elem = randrange(-1, n+1)
-            ip = self.module.bisect_left(data, elem)
-            if ip < len(data):
-                self.assertTrue(elem <= data[ip])
-            if ip > 0:
-                self.assertTrue(data[ip-1] < elem)
-            ip = self.module.bisect_right(data, elem)
-            if ip < len(data):
-                self.assertTrue(elem < data[ip])
-            if ip > 0:
-                self.assertTrue(data[ip-1] <= elem)
-
-    def test_optionalSlicing(self):
-        for func, data, elem, expected in self.precomputedCases:
-            for lo in xrange(4):
-                lo = min(len(data), lo)
-                for hi in xrange(3,8):
-                    hi = min(len(data), hi)
-                    ip = func(data, elem, lo, hi)
-                    self.assertTrue(lo <= ip <= hi)
-                    if func is self.module.bisect_left and ip < hi:
-                        self.assertTrue(elem <= data[ip])
-                    if func is self.module.bisect_left and ip > lo:
-                        self.assertTrue(data[ip-1] < elem)
-                    if func is self.module.bisect_right and ip < hi:
-                        self.assertTrue(elem < data[ip])
-                    if func is self.module.bisect_right and ip > lo:
-                        self.assertTrue(data[ip-1] <= elem)
-                    self.assertEqual(ip, max(lo, min(hi, expected)))
-
-    def test_backcompatibility(self):
-        self.assertEqual(self.module.bisect, self.module.bisect_right)
-
-    def test_keyword_args(self):
-        data = [10, 20, 30, 40, 50]
-        self.assertEqual(self.module.bisect_left(a=data, x=25, lo=1, hi=3), 2)
-        self.assertEqual(self.module.bisect_right(a=data, x=25, lo=1, hi=3), 2)
-        self.assertEqual(self.module.bisect(a=data, x=25, lo=1, hi=3), 2)
-        self.module.insort_left(a=data, x=25, lo=1, hi=3)
-        self.module.insort_right(a=data, x=25, lo=1, hi=3)
-        self.module.insort(a=data, x=25, lo=1, hi=3)
-        self.assertEqual(data, [10, 20, 25, 25, 25, 30, 40, 50])
-
-class TestBisectPython(TestBisect):
-    module = py_bisect
-
-class TestBisectC(TestBisect):
-    module = c_bisect
-
-#==============================================================================
-
-class TestInsort(unittest.TestCase):
-    module = None
-
-    def test_vsBuiltinSort(self, n=500):
-        from random import choice
-        for insorted in (list(), UserList()):
-            for i in xrange(n):
-                digit = choice("0123456789")
-                if digit in "02468":
-                    f = self.module.insort_left
-                else:
-                    f = self.module.insort_right
-                f(insorted, digit)
-        self.assertEqual(sorted(insorted), insorted)
-
-    def test_backcompatibility(self):
-        self.assertEqual(self.module.insort, self.module.insort_right)
-
-    def test_listDerived(self):
-        class List(list):
-            data = []
-            def insert(self, index, item):
-                self.data.insert(index, item)
-
-        lst = List()
-        self.module.insort_left(lst, 10)
-        self.module.insort_right(lst, 5)
-        self.assertEqual([5, 10], lst.data)
-
-class TestInsortPython(TestInsort):
-    module = py_bisect
-
-class TestInsortC(TestInsort):
-    module = c_bisect
-
-#==============================================================================
-
-
-class LenOnly:
-    "Dummy sequence class defining __len__ but not __getitem__."
-    def __len__(self):
-        return 10
-
-class GetOnly:
-    "Dummy sequence class defining __getitem__ but not __len__."
-    def __getitem__(self, ndx):
-        return 10
-
-class CmpErr:
-    "Dummy element that always raises an error during comparison"
-    def __cmp__(self, other):
-        raise ZeroDivisionError
-
-class TestErrorHandling(unittest.TestCase):
-    module = None
-
-    def test_non_sequence(self):
-        for f in (self.module.bisect_left, self.module.bisect_right,
-                  self.module.insort_left, self.module.insort_right):
-            self.assertRaises(TypeError, f, 10, 10)
-
-    def test_len_only(self):
-        for f in (self.module.bisect_left, self.module.bisect_right,
-                  self.module.insort_left, self.module.insort_right):
-            self.assertRaises(AttributeError, f, LenOnly(), 10)
-
-    def test_get_only(self):
-        for f in (self.module.bisect_left, self.module.bisect_right,
-                  self.module.insort_left, self.module.insort_right):
-            self.assertRaises(AttributeError, f, GetOnly(), 10)
-
-    def test_cmp_err(self):
-        seq = [CmpErr(), CmpErr(), CmpErr()]
-        for f in (self.module.bisect_left, self.module.bisect_right,
-                  self.module.insort_left, self.module.insort_right):
-            self.assertRaises(ZeroDivisionError, f, seq, 10)
-
-    def test_arg_parsing(self):
-        for f in (self.module.bisect_left, self.module.bisect_right,
-                  self.module.insort_left, self.module.insort_right):
-            self.assertRaises(TypeError, f, 10)
-
-class TestErrorHandlingPython(TestErrorHandling):
-    module = py_bisect
-
-class TestErrorHandlingC(TestErrorHandling):
-    module = c_bisect
-
-#==============================================================================
-
-libreftest = """
-Example from the Library Reference:  Doc/library/bisect.rst
-
-The bisect() function is generally useful for categorizing numeric data.
-This example uses bisect() to look up a letter grade for an exam total
-(say) based on a set of ordered numeric breakpoints: 85 and up is an `A',
-75..84 is a `B', etc.
-
-    >>> grades = "FEDCBA"
-    >>> breakpoints = [30, 44, 66, 75, 85]
-    >>> from bisect import bisect
-    >>> def grade(total):
-    ...           return grades[bisect(breakpoints, total)]
-    ...
-    >>> grade(66)
-    'C'
-    >>> map(grade, [33, 99, 77, 44, 12, 88])
-    ['E', 'A', 'B', 'D', 'F', 'A']
-
-"""
-
-#------------------------------------------------------------------------------
-
-__test__ = {'libreftest' : libreftest}
-
-def test_main(verbose=None):
-    from test import test_bisect
-
-    test_classes = [TestBisectPython, TestBisectC,
-                    TestInsortPython, TestInsortC,
-                    TestErrorHandlingPython, TestErrorHandlingC]
-
-    test_support.run_unittest(*test_classes)
-    test_support.run_doctest(test_bisect, verbose)
-
-    # verify reference counting
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        import gc
-        counts = [None] * 5
-        for i in xrange(len(counts)):
-            test_support.run_unittest(*test_classes)
-            gc.collect()
-            counts[i] = sys.gettotalrefcount()
-        print counts
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bool.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bool.py
deleted file mode 100644
index e1d6c39..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bool.py
+++ /dev/null
@@ -1,371 +0,0 @@
-# Test properties of bool promised by PEP 285
-
-import unittest
-from test import test_support
-
-import os
-
-class BoolTest(unittest.TestCase):
-
-    def test_subclass(self):
-        try:
-            class C(bool):
-                pass
-        except TypeError:
-            pass
-        else:
-            self.fail("bool should not be subclassable")
-
-        self.assertRaises(TypeError, int.__new__, bool, 0)
-
-    def test_print(self):
-        try:
-            fo = open(test_support.TESTFN, "wb")
-            print >> fo, False, True
-            fo.close()
-            fo = open(test_support.TESTFN, "rb")
-            self.assertEqual(fo.read(), 'False True\n')
-        finally:
-            fo.close()
-            os.remove(test_support.TESTFN)
-
-    def test_repr(self):
-        self.assertEqual(repr(False), 'False')
-        self.assertEqual(repr(True), 'True')
-        self.assertEqual(eval(repr(False)), False)
-        self.assertEqual(eval(repr(True)), True)
-
-    def test_str(self):
-        self.assertEqual(str(False), 'False')
-        self.assertEqual(str(True), 'True')
-
-    def test_int(self):
-        self.assertEqual(int(False), 0)
-        self.assertIsNot(int(False), False)
-        self.assertEqual(int(True), 1)
-        self.assertIsNot(int(True), True)
-
-    def test_float(self):
-        self.assertEqual(float(False), 0.0)
-        self.assertIsNot(float(False), False)
-        self.assertEqual(float(True), 1.0)
-        self.assertIsNot(float(True), True)
-
-    def test_long(self):
-        self.assertEqual(long(False), 0L)
-        self.assertIsNot(long(False), False)
-        self.assertEqual(long(True), 1L)
-        self.assertIsNot(long(True), True)
-
-    def test_math(self):
-        self.assertEqual(+False, 0)
-        self.assertIsNot(+False, False)
-        self.assertEqual(-False, 0)
-        self.assertIsNot(-False, False)
-        self.assertEqual(abs(False), 0)
-        self.assertIsNot(abs(False), False)
-        self.assertEqual(+True, 1)
-        self.assertIsNot(+True, True)
-        self.assertEqual(-True, -1)
-        self.assertEqual(abs(True), 1)
-        self.assertIsNot(abs(True), True)
-        self.assertEqual(~False, -1)
-        self.assertEqual(~True, -2)
-
-        self.assertEqual(False+2, 2)
-        self.assertEqual(True+2, 3)
-        self.assertEqual(2+False, 2)
-        self.assertEqual(2+True, 3)
-
-        self.assertEqual(False+False, 0)
-        self.assertIsNot(False+False, False)
-        self.assertEqual(False+True, 1)
-        self.assertIsNot(False+True, True)
-        self.assertEqual(True+False, 1)
-        self.assertIsNot(True+False, True)
-        self.assertEqual(True+True, 2)
-
-        self.assertEqual(True-True, 0)
-        self.assertIsNot(True-True, False)
-        self.assertEqual(False-False, 0)
-        self.assertIsNot(False-False, False)
-        self.assertEqual(True-False, 1)
-        self.assertIsNot(True-False, True)
-        self.assertEqual(False-True, -1)
-
-        self.assertEqual(True*1, 1)
-        self.assertEqual(False*1, 0)
-        self.assertIsNot(False*1, False)
-
-        self.assertEqual(True//1, 1)
-        self.assertIsNot(True//1, True)
-        self.assertEqual(False//1, 0)
-        self.assertIsNot(False//1, False)
-
-        for b in False, True:
-            for i in 0, 1, 2:
-                self.assertEqual(b**i, int(b)**i)
-                self.assertIsNot(b**i, bool(int(b)**i))
-
-        for a in False, True:
-            for b in False, True:
-                self.assertIs(a&b, bool(int(a)&int(b)))
-                self.assertIs(a|b, bool(int(a)|int(b)))
-                self.assertIs(a^b, bool(int(a)^int(b)))
-                self.assertEqual(a&int(b), int(a)&int(b))
-                self.assertIsNot(a&int(b), bool(int(a)&int(b)))
-                self.assertEqual(a|int(b), int(a)|int(b))
-                self.assertIsNot(a|int(b), bool(int(a)|int(b)))
-                self.assertEqual(a^int(b), int(a)^int(b))
-                self.assertIsNot(a^int(b), bool(int(a)^int(b)))
-                self.assertEqual(int(a)&b, int(a)&int(b))
-                self.assertIsNot(int(a)&b, bool(int(a)&int(b)))
-                self.assertEqual(int(a)|b, int(a)|int(b))
-                self.assertIsNot(int(a)|b, bool(int(a)|int(b)))
-                self.assertEqual(int(a)^b, int(a)^int(b))
-                self.assertIsNot(int(a)^b, bool(int(a)^int(b)))
-
-        self.assertIs(1==1, True)
-        self.assertIs(1==0, False)
-        self.assertIs(0<1, True)
-        self.assertIs(1<0, False)
-        self.assertIs(0<=0, True)
-        self.assertIs(1<=0, False)
-        self.assertIs(1>0, True)
-        self.assertIs(1>1, False)
-        self.assertIs(1>=1, True)
-        self.assertIs(0>=1, False)
-        self.assertIs(0!=1, True)
-        self.assertIs(0!=0, False)
-
-        x = [1]
-        self.assertIs(x is x, True)
-        self.assertIs(x is not x, False)
-
-        self.assertIs(1 in x, True)
-        self.assertIs(0 in x, False)
-        self.assertIs(1 not in x, False)
-        self.assertIs(0 not in x, True)
-
-        x = {1: 2}
-        self.assertIs(x is x, True)
-        self.assertIs(x is not x, False)
-
-        self.assertIs(1 in x, True)
-        self.assertIs(0 in x, False)
-        self.assertIs(1 not in x, False)
-        self.assertIs(0 not in x, True)
-
-        self.assertIs(not True, False)
-        self.assertIs(not False, True)
-
-    def test_convert(self):
-        self.assertRaises(TypeError, bool, 42, 42)
-        self.assertIs(bool(10), True)
-        self.assertIs(bool(1), True)
-        self.assertIs(bool(-1), True)
-        self.assertIs(bool(0), False)
-        self.assertIs(bool("hello"), True)
-        self.assertIs(bool(""), False)
-        self.assertIs(bool(), False)
-
-    def test_format(self):
-        self.assertEqual("%d" % False, "0")
-        self.assertEqual("%d" % True, "1")
-        self.assertEqual("%x" % False, "0")
-        self.assertEqual("%x" % True, "1")
-
-    def test_hasattr(self):
-        self.assertIs(hasattr([], "append"), True)
-        self.assertIs(hasattr([], "wobble"), False)
-
-    def test_callable(self):
-        with test_support.check_py3k_warnings():
-            self.assertIs(callable(len), True)
-            self.assertIs(callable(1), False)
-
-    def test_isinstance(self):
-        self.assertIs(isinstance(True, bool), True)
-        self.assertIs(isinstance(False, bool), True)
-        self.assertIs(isinstance(True, int), True)
-        self.assertIs(isinstance(False, int), True)
-        self.assertIs(isinstance(1, bool), False)
-        self.assertIs(isinstance(0, bool), False)
-
-    def test_issubclass(self):
-        self.assertIs(issubclass(bool, int), True)
-        self.assertIs(issubclass(int, bool), False)
-
-    def test_haskey(self):
-        self.assertIs(1 in {}, False)
-        self.assertIs(1 in {1:1}, True)
-        with test_support.check_py3k_warnings():
-            self.assertIs({}.has_key(1), False)
-            self.assertIs({1:1}.has_key(1), True)
-
-    def test_string(self):
-        self.assertIs("xyz".endswith("z"), True)
-        self.assertIs("xyz".endswith("x"), False)
-        self.assertIs("xyz0123".isalnum(), True)
-        self.assertIs("@#$%".isalnum(), False)
-        self.assertIs("xyz".isalpha(), True)
-        self.assertIs("@#$%".isalpha(), False)
-        self.assertIs("0123".isdigit(), True)
-        self.assertIs("xyz".isdigit(), False)
-        self.assertIs("xyz".islower(), True)
-        self.assertIs("XYZ".islower(), False)
-        self.assertIs(" ".isspace(), True)
-        self.assertIs("XYZ".isspace(), False)
-        self.assertIs("X".istitle(), True)
-        self.assertIs("x".istitle(), False)
-        self.assertIs("XYZ".isupper(), True)
-        self.assertIs("xyz".isupper(), False)
-        self.assertIs("xyz".startswith("x"), True)
-        self.assertIs("xyz".startswith("z"), False)
-
-        if test_support.have_unicode:
-            self.assertIs(unicode("xyz", 'ascii').endswith(unicode("z", 'ascii')), True)
-            self.assertIs(unicode("xyz", 'ascii').endswith(unicode("x", 'ascii')), False)
-            self.assertIs(unicode("xyz0123", 'ascii').isalnum(), True)
-            self.assertIs(unicode("@#$%", 'ascii').isalnum(), False)
-            self.assertIs(unicode("xyz", 'ascii').isalpha(), True)
-            self.assertIs(unicode("@#$%", 'ascii').isalpha(), False)
-            self.assertIs(unicode("0123", 'ascii').isdecimal(), True)
-            self.assertIs(unicode("xyz", 'ascii').isdecimal(), False)
-            self.assertIs(unicode("0123", 'ascii').isdigit(), True)
-            self.assertIs(unicode("xyz", 'ascii').isdigit(), False)
-            self.assertIs(unicode("xyz", 'ascii').islower(), True)
-            self.assertIs(unicode("XYZ", 'ascii').islower(), False)
-            self.assertIs(unicode("0123", 'ascii').isnumeric(), True)
-            self.assertIs(unicode("xyz", 'ascii').isnumeric(), False)
-            self.assertIs(unicode(" ", 'ascii').isspace(), True)
-            self.assertIs(unicode("XYZ", 'ascii').isspace(), False)
-            self.assertIs(unicode("X", 'ascii').istitle(), True)
-            self.assertIs(unicode("x", 'ascii').istitle(), False)
-            self.assertIs(unicode("XYZ", 'ascii').isupper(), True)
-            self.assertIs(unicode("xyz", 'ascii').isupper(), False)
-            self.assertIs(unicode("xyz", 'ascii').startswith(unicode("x", 'ascii')), True)
-            self.assertIs(unicode("xyz", 'ascii').startswith(unicode("z", 'ascii')), False)
-
-    def test_boolean(self):
-        self.assertEqual(True & 1, 1)
-        self.assertNotIsInstance(True & 1, bool)
-        self.assertIs(True & True, True)
-
-        self.assertEqual(True | 1, 1)
-        self.assertNotIsInstance(True | 1, bool)
-        self.assertIs(True | True, True)
-
-        self.assertEqual(True ^ 1, 0)
-        self.assertNotIsInstance(True ^ 1, bool)
-        self.assertIs(True ^ True, False)
-
-    def test_fileclosed(self):
-        try:
-            f = file(test_support.TESTFN, "w")
-            self.assertIs(f.closed, False)
-            f.close()
-            self.assertIs(f.closed, True)
-        finally:
-            os.remove(test_support.TESTFN)
-
-    def test_types(self):
-        # types are always true.
-        for t in [bool, complex, dict, file, float, int, list, long, object,
-                  set, str, tuple, type]:
-            self.assertIs(bool(t), True)
-
-    def test_operator(self):
-        import operator
-        self.assertIs(operator.truth(0), False)
-        self.assertIs(operator.truth(1), True)
-        with test_support.check_py3k_warnings():
-            self.assertIs(operator.isCallable(0), False)
-            self.assertIs(operator.isCallable(len), True)
-        self.assertIs(operator.isNumberType(None), False)
-        self.assertIs(operator.isNumberType(0), True)
-        self.assertIs(operator.not_(1), False)
-        self.assertIs(operator.not_(0), True)
-        self.assertIs(operator.isSequenceType(0), False)
-        self.assertIs(operator.isSequenceType([]), True)
-        self.assertIs(operator.contains([], 1), False)
-        self.assertIs(operator.contains([1], 1), True)
-        self.assertIs(operator.isMappingType(1), False)
-        self.assertIs(operator.isMappingType({}), True)
-        self.assertIs(operator.lt(0, 0), False)
-        self.assertIs(operator.lt(0, 1), True)
-        self.assertIs(operator.is_(True, True), True)
-        self.assertIs(operator.is_(True, False), False)
-        self.assertIs(operator.is_not(True, True), False)
-        self.assertIs(operator.is_not(True, False), True)
-
-    def test_marshal(self):
-        import marshal
-        self.assertIs(marshal.loads(marshal.dumps(True)), True)
-        self.assertIs(marshal.loads(marshal.dumps(False)), False)
-
-    def test_pickle(self):
-        import pickle
-        self.assertIs(pickle.loads(pickle.dumps(True)), True)
-        self.assertIs(pickle.loads(pickle.dumps(False)), False)
-        self.assertIs(pickle.loads(pickle.dumps(True, True)), True)
-        self.assertIs(pickle.loads(pickle.dumps(False, True)), False)
-
-    def test_cpickle(self):
-        import cPickle
-        self.assertIs(cPickle.loads(cPickle.dumps(True)), True)
-        self.assertIs(cPickle.loads(cPickle.dumps(False)), False)
-        self.assertIs(cPickle.loads(cPickle.dumps(True, True)), True)
-        self.assertIs(cPickle.loads(cPickle.dumps(False, True)), False)
-
-    def test_mixedpickle(self):
-        import pickle, cPickle
-        self.assertIs(pickle.loads(cPickle.dumps(True)), True)
-        self.assertIs(pickle.loads(cPickle.dumps(False)), False)
-        self.assertIs(pickle.loads(cPickle.dumps(True, True)), True)
-        self.assertIs(pickle.loads(cPickle.dumps(False, True)), False)
-
-        self.assertIs(cPickle.loads(pickle.dumps(True)), True)
-        self.assertIs(cPickle.loads(pickle.dumps(False)), False)
-        self.assertIs(cPickle.loads(pickle.dumps(True, True)), True)
-        self.assertIs(cPickle.loads(pickle.dumps(False, True)), False)
-
-    def test_picklevalues(self):
-        import pickle, cPickle
-
-        # Test for specific backwards-compatible pickle values
-        self.assertEqual(pickle.dumps(True), "I01\n.")
-        self.assertEqual(pickle.dumps(False), "I00\n.")
-        self.assertEqual(cPickle.dumps(True), "I01\n.")
-        self.assertEqual(cPickle.dumps(False), "I00\n.")
-        self.assertEqual(pickle.dumps(True, True), "I01\n.")
-        self.assertEqual(pickle.dumps(False, True), "I00\n.")
-        self.assertEqual(cPickle.dumps(True, True), "I01\n.")
-        self.assertEqual(cPickle.dumps(False, True), "I00\n.")
-
-    def test_convert_to_bool(self):
-        # Verify that TypeError occurs when bad things are returned
-        # from __nonzero__().  This isn't really a bool test, but
-        # it's related.
-        check = lambda o: self.assertRaises(TypeError, bool, o)
-        class Foo(object):
-            def __nonzero__(self):
-                return self
-        check(Foo())
-
-        class Bar(object):
-            def __nonzero__(self):
-                return "Yes"
-        check(Bar())
-
-        class Baz(int):
-            def __nonzero__(self):
-                return self
-        check(Baz())
-
-
-def test_main():
-    test_support.run_unittest(BoolTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb.py
deleted file mode 100644
index c2dbbfa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb.py
+++ /dev/null
@@ -1,357 +0,0 @@
-#! /usr/bin/env python
-"""Test script for the bsddb C module by Roger E. Masse
-   Adapted to unittest format and expanded scope by Raymond Hettinger
-"""
-import os, sys
-import unittest
-from test import test_support
-
-# Skip test if _bsddb wasn't built.
-test_support.import_module('_bsddb')
-
-bsddb = test_support.import_module('bsddb', deprecated=True)
-# Just so we know it's imported:
-test_support.import_module('dbhash', deprecated=True)
-
-
-class TestBSDDB(unittest.TestCase):
-    openflag = 'c'
-
-    def setUp(self):
-        self.f = self.openmethod[0](self.fname, self.openflag, cachesize=32768)
-        self.d = dict(q='Guido', w='van', e='Rossum', r='invented', t='Python', y='')
-        for k, v in self.d.iteritems():
-            self.f[k] = v
-
-    def tearDown(self):
-        self.f.sync()
-        self.f.close()
-        if self.fname is None:
-            return
-        try:
-            os.remove(self.fname)
-        except os.error:
-            pass
-
-    def test_getitem(self):
-        for k, v in self.d.iteritems():
-            self.assertEqual(self.f[k], v)
-
-    def test_len(self):
-        self.assertEqual(len(self.f), len(self.d))
-
-    def test_change(self):
-        self.f['r'] = 'discovered'
-        self.assertEqual(self.f['r'], 'discovered')
-        self.assertIn('r', self.f.keys())
-        self.assertIn('discovered', self.f.values())
-
-    def test_close_and_reopen(self):
-        if self.fname is None:
-            # if we're using an in-memory only db, we can't reopen it
-            # so finish here.
-            return
-        self.f.close()
-        self.f = self.openmethod[0](self.fname, 'w')
-        for k, v in self.d.iteritems():
-            self.assertEqual(self.f[k], v)
-
-    def assertSetEquals(self, seqn1, seqn2):
-        self.assertEqual(set(seqn1), set(seqn2))
-
-    def test_mapping_iteration_methods(self):
-        f = self.f
-        d = self.d
-        self.assertSetEquals(d, f)
-        self.assertSetEquals(d.keys(), f.keys())
-        self.assertSetEquals(d.values(), f.values())
-        self.assertSetEquals(d.items(), f.items())
-        self.assertSetEquals(d.iterkeys(), f.iterkeys())
-        self.assertSetEquals(d.itervalues(), f.itervalues())
-        self.assertSetEquals(d.iteritems(), f.iteritems())
-
-    def test_iter_while_modifying_values(self):
-        di = iter(self.d)
-        while 1:
-            try:
-                key = di.next()
-                self.d[key] = 'modified '+key
-            except StopIteration:
-                break
-
-        # it should behave the same as a dict.  modifying values
-        # of existing keys should not break iteration.  (adding
-        # or removing keys should)
-        loops_left = len(self.f)
-        fi = iter(self.f)
-        while 1:
-            try:
-                key = fi.next()
-                self.f[key] = 'modified '+key
-                loops_left -= 1
-            except StopIteration:
-                break
-        self.assertEqual(loops_left, 0)
-
-        self.test_mapping_iteration_methods()
-
-    def test_iter_abort_on_changed_size(self):
-        def DictIterAbort():
-            di = iter(self.d)
-            while 1:
-                try:
-                    di.next()
-                    self.d['newkey'] = 'SPAM'
-                except StopIteration:
-                    break
-        self.assertRaises(RuntimeError, DictIterAbort)
-
-        def DbIterAbort():
-            fi = iter(self.f)
-            while 1:
-                try:
-                    fi.next()
-                    self.f['newkey'] = 'SPAM'
-                except StopIteration:
-                    break
-        self.assertRaises(RuntimeError, DbIterAbort)
-
-    def test_iteritems_abort_on_changed_size(self):
-        def DictIteritemsAbort():
-            di = self.d.iteritems()
-            while 1:
-                try:
-                    di.next()
-                    self.d['newkey'] = 'SPAM'
-                except StopIteration:
-                    break
-        self.assertRaises(RuntimeError, DictIteritemsAbort)
-
-        def DbIteritemsAbort():
-            fi = self.f.iteritems()
-            while 1:
-                try:
-                    key, value = fi.next()
-                    del self.f[key]
-                except StopIteration:
-                    break
-        self.assertRaises(RuntimeError, DbIteritemsAbort)
-
-    def test_iteritems_while_modifying_values(self):
-        di = self.d.iteritems()
-        while 1:
-            try:
-                k, v = di.next()
-                self.d[k] = 'modified '+v
-            except StopIteration:
-                break
-
-        # it should behave the same as a dict.  modifying values
-        # of existing keys should not break iteration.  (adding
-        # or removing keys should)
-        loops_left = len(self.f)
-        fi = self.f.iteritems()
-        while 1:
-            try:
-                k, v = fi.next()
-                self.f[k] = 'modified '+v
-                loops_left -= 1
-            except StopIteration:
-                break
-        self.assertEqual(loops_left, 0)
-
-        self.test_mapping_iteration_methods()
-
-    def test_first_next_looping(self):
-        items = [self.f.first()]
-        for i in xrange(1, len(self.f)):
-            items.append(self.f.next())
-        self.assertSetEquals(items, self.d.items())
-
-    def test_previous_last_looping(self):
-        items = [self.f.last()]
-        for i in xrange(1, len(self.f)):
-            items.append(self.f.previous())
-        self.assertSetEquals(items, self.d.items())
-
-    def test_first_while_deleting(self):
-        # Test for bug 1725856
-        self.assertTrue(len(self.d) >= 2, "test requires >=2 items")
-        for _ in self.d:
-            key = self.f.first()[0]
-            del self.f[key]
-        self.assertEqual([], self.f.items(), "expected empty db after test")
-
-    def test_last_while_deleting(self):
-        # Test for bug 1725856's evil twin
-        self.assertTrue(len(self.d) >= 2, "test requires >=2 items")
-        for _ in self.d:
-            key = self.f.last()[0]
-            del self.f[key]
-        self.assertEqual([], self.f.items(), "expected empty db after test")
-
-    def test_set_location(self):
-        self.assertEqual(self.f.set_location('e'), ('e', self.d['e']))
-
-    def test_contains(self):
-        for k in self.d:
-            self.assertIn(k, self.f)
-        self.assertNotIn('not here', self.f)
-
-    def test_has_key(self):
-        for k in self.d:
-            self.assertTrue(self.f.has_key(k))
-        self.assertTrue(not self.f.has_key('not here'))
-
-    def test_clear(self):
-        self.f.clear()
-        self.assertEqual(len(self.f), 0)
-
-    def test__no_deadlock_first(self, debug=0):
-        # do this so that testers can see what function we're in in
-        # verbose mode when we deadlock.
-        sys.stdout.flush()
-
-        # in pybsddb's _DBWithCursor this causes an internal DBCursor
-        # object is created.  Other test_ methods in this class could
-        # inadvertently cause the deadlock but an explicit test is needed.
-        if debug: print "A"
-        k,v = self.f.first()
-        if debug: print "B", k
-        self.f[k] = "deadlock.  do not pass go.  do not collect $200."
-        if debug: print "C"
-        # if the bsddb implementation leaves the DBCursor open during
-        # the database write and locking+threading support is enabled
-        # the cursor's read lock will deadlock the write lock request..
-
-        # test the iterator interface
-        if True:
-            if debug: print "D"
-            i = self.f.iteritems()
-            k,v = i.next()
-            if debug: print "E"
-            self.f[k] = "please don't deadlock"
-            if debug: print "F"
-            while 1:
-                try:
-                    k,v = i.next()
-                except StopIteration:
-                    break
-            if debug: print "F2"
-
-            i = iter(self.f)
-            if debug: print "G"
-            while i:
-                try:
-                    if debug: print "H"
-                    k = i.next()
-                    if debug: print "I"
-                    self.f[k] = "deadlocks-r-us"
-                    if debug: print "J"
-                except StopIteration:
-                    i = None
-            if debug: print "K"
-
-        # test the legacy cursor interface mixed with writes
-        self.assertIn(self.f.first()[0], self.d)
-        k = self.f.next()[0]
-        self.assertIn(k, self.d)
-        self.f[k] = "be gone with ye deadlocks"
-        self.assertTrue(self.f[k], "be gone with ye deadlocks")
-
-    def test_for_cursor_memleak(self):
-        # do the bsddb._DBWithCursor iterator internals leak cursors?
-        nc1 = len(self.f._cursor_refs)
-        # create iterator
-        i = self.f.iteritems()
-        nc2 = len(self.f._cursor_refs)
-        # use the iterator (should run to the first yield, creating the cursor)
-        k, v = i.next()
-        nc3 = len(self.f._cursor_refs)
-        # destroy the iterator; this should cause the weakref callback
-        # to remove the cursor object from self.f._cursor_refs
-        del i
-        nc4 = len(self.f._cursor_refs)
-
-        self.assertEqual(nc1, nc2)
-        self.assertEqual(nc1, nc4)
-        self.assertTrue(nc3 == nc1+1)
-
-    def test_popitem(self):
-        k, v = self.f.popitem()
-        self.assertIn(k, self.d)
-        self.assertIn(v, self.d.values())
-        self.assertNotIn(k, self.f)
-        self.assertEqual(len(self.d)-1, len(self.f))
-
-    def test_pop(self):
-        k = 'w'
-        v = self.f.pop(k)
-        self.assertEqual(v, self.d[k])
-        self.assertNotIn(k, self.f)
-        self.assertNotIn(v, self.f.values())
-        self.assertEqual(len(self.d)-1, len(self.f))
-
-    def test_get(self):
-        self.assertEqual(self.f.get('NotHere'), None)
-        self.assertEqual(self.f.get('NotHere', 'Default'), 'Default')
-        self.assertEqual(self.f.get('q', 'Default'), self.d['q'])
-
-    def test_setdefault(self):
-        self.assertEqual(self.f.setdefault('new', 'dog'), 'dog')
-        self.assertEqual(self.f.setdefault('r', 'cat'), self.d['r'])
-
-    def test_update(self):
-        new = dict(y='life', u='of', i='brian')
-        self.f.update(new)
-        self.d.update(new)
-        for k, v in self.d.iteritems():
-            self.assertEqual(self.f[k], v)
-
-    def test_keyordering(self):
-        if self.openmethod[0] is not bsddb.btopen:
-            return
-        keys = self.d.keys()
-        keys.sort()
-        self.assertEqual(self.f.first()[0], keys[0])
-        self.assertEqual(self.f.next()[0], keys[1])
-        self.assertEqual(self.f.last()[0], keys[-1])
-        self.assertEqual(self.f.previous()[0], keys[-2])
-        self.assertEqual(list(self.f), keys)
-
-class TestBTree(TestBSDDB):
-    fname = test_support.TESTFN
-    openmethod = [bsddb.btopen]
-
-class TestBTree_InMemory(TestBSDDB):
-    fname = None
-    openmethod = [bsddb.btopen]
-
-class TestBTree_InMemory_Truncate(TestBSDDB):
-    fname = None
-    openflag = 'n'
-    openmethod = [bsddb.btopen]
-
-class TestHashTable(TestBSDDB):
-    fname = test_support.TESTFN
-    openmethod = [bsddb.hashopen]
-
-class TestHashTable_InMemory(TestBSDDB):
-    fname = None
-    openmethod = [bsddb.hashopen]
-
-##         # (bsddb.rnopen,'Record Numbers'), 'put' for RECNO for bsddb 1.85
-##         #                                   appears broken... at least on
-##         #                                   Solaris Intel - rmasse 1/97
-
-def test_main(verbose=None):
-    test_support.run_unittest(
-        TestBTree,
-        TestHashTable,
-        TestBTree_InMemory,
-        TestHashTable_InMemory,
-        TestBTree_InMemory_Truncate,
-    )
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb185.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb185.py
deleted file mode 100644
index 330cd28..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb185.py
+++ /dev/null
@@ -1,43 +0,0 @@
-"""Tests for the bsddb185 module.
-
-The file 185test.db found in Lib/test/ is for testing purposes with this
-testing suite.
-
-"""
-from test.test_support import run_unittest, findfile, import_module
-import unittest
-bsddb185 = import_module('bsddb185', deprecated=True)
-import anydbm
-import whichdb
-import os
-import tempfile
-import shutil
-
-class Bsddb185Tests(unittest.TestCase):
-
-    def test_open_existing_hash(self):
-        # Verify we can open a file known to be a hash v2 file
-        db = bsddb185.hashopen(findfile("185test.db"))
-        self.assertEqual(db["1"], "1")
-        db.close()
-
-    def test_whichdb(self):
-        # Verify that whichdb correctly sniffs the known hash v2 file
-        self.assertEqual(whichdb.whichdb(findfile("185test.db")), "bsddb185")
-
-    def test_anydbm_create(self):
-        # Verify that anydbm.open does *not* create a bsddb185 file
-        tmpdir = tempfile.mkdtemp()
-        try:
-            dbfile = os.path.join(tmpdir, "foo.db")
-            anydbm.open(dbfile, "c").close()
-            ftype = whichdb.whichdb(dbfile)
-            self.assertNotEqual(ftype, "bsddb185")
-        finally:
-            shutil.rmtree(tmpdir)
-
-def test_main():
-    run_unittest(Bsddb185Tests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb3.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb3.py
deleted file mode 100644
index f756db7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bsddb3.py
+++ /dev/null
@@ -1,81 +0,0 @@
-# Test driver for bsddb package.
-"""
-Run all test cases.
-"""
-import os
-import sys
-import tempfile
-import time
-import unittest
-from test.test_support import requires, run_unittest, import_module
-
-# Skip test if _bsddb module was not built.
-import_module('_bsddb')
-# Silence Py3k warning
-import_module('bsddb', deprecated=True)
-
-# When running as a script instead of within the regrtest framework, skip the
-# requires test, since it's obvious we want to run them.
-if __name__ != '__main__':
-    requires('bsddb')
-
-verbose = False
-if 'verbose' in sys.argv:
-    verbose = True
-    sys.argv.remove('verbose')
-
-if 'silent' in sys.argv:  # take care of old flag, just in case
-    verbose = False
-    sys.argv.remove('silent')
-
-
-class TimingCheck(unittest.TestCase):
-
-    """This class is not a real test.  Its purpose is to print a message
-    periodically when the test runs slowly.  This will prevent the buildbots
-    from timing out on slow machines."""
-
-    # How much time in seconds before printing a 'Still working' message.
-    # Since this is run at most once between each test module, use a smaller
-    # interval than other tests.
-    _PRINT_WORKING_MSG_INTERVAL = 4 * 60
-
-    # next_time is used as a global variable that survives each instance.
-    # This is necessary since a new instance will be created for each test.
-    next_time = time.time() + _PRINT_WORKING_MSG_INTERVAL
-
-    def testCheckElapsedTime(self):
-        # Print still working message since these tests can be really slow.
-        now = time.time()
-        if self.next_time <= now:
-            TimingCheck.next_time = now + self._PRINT_WORKING_MSG_INTERVAL
-            sys.__stdout__.write('  test_bsddb3 still working, be patient...\n')
-            sys.__stdout__.flush()
-
-
-# For invocation through regrtest
-def test_main():
-    from bsddb import db
-    from bsddb.test import test_all
-    test_all.set_test_path_prefix(os.path.join(tempfile.gettempdir(),
-                                 'z-test_bsddb3-%s' %
-                                 os.getpid()))
-    # Please leave this print in, having this show up in the buildbots
-    # makes diagnosing problems a lot easier.
-    print >>sys.stderr, db.DB_VERSION_STRING
-    print >>sys.stderr, 'Test path prefix: ', test_all.get_test_path_prefix()
-    try:
-        run_unittest(test_all.suite(module_prefix='bsddb.test.',
-                                    timing_check=TimingCheck))
-    finally:
-        # The only reason to remove db_home is in case if there is an old
-        # one lying around.  This might be by a different user, so just
-        # ignore errors.  We should always make a unique name now.
-        try:
-            test_all.remove_test_path_directory()
-        except:
-            pass
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_buffer.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_buffer.py
deleted file mode 100644
index 9c9d868..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_buffer.py
+++ /dev/null
@@ -1,31 +0,0 @@
-"""Unit tests for buffer objects.
-
-For now, tests just new or changed functionality.
-
-"""
-
-import unittest
-from test import test_support
-
-class BufferTests(unittest.TestCase):
-
-    def test_extended_getslice(self):
-        # Test extended slicing by comparing with list slicing.
-        s = "".join(chr(c) for c in list(range(255, -1, -1)))
-        b = buffer(s)
-        indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300)
-        for start in indices:
-            for stop in indices:
-                # Skip step 0 (invalid)
-                for step in indices[1:]:
-                    self.assertEqual(b[start:stop:step],
-                                     s[start:stop:step])
-
-
-def test_main():
-    with test_support.check_py3k_warnings(("buffer.. not supported",
-                                           DeprecationWarning)):
-        test_support.run_unittest(BufferTests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bufio.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bufio.py
deleted file mode 100644
index 0581373..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bufio.py
+++ /dev/null
@@ -1,79 +0,0 @@
-import unittest
-from test import test_support as support
-
-import io # C implementation.
-import _pyio as pyio # Python implementation.
-
-# Simple test to ensure that optimizations in the IO library deliver the
-# expected results.  For best testing, run this under a debug-build Python too
-# (to exercise asserts in the C code).
-
-lengths = list(range(1, 257)) + [512, 1000, 1024, 2048, 4096, 8192, 10000,
-                                 16384, 32768, 65536, 1000000]
-
-class BufferSizeTest(unittest.TestCase):
-    def try_one(self, s):
-        # Write s + "\n" + s to file, then open it and ensure that successive
-        # .readline()s deliver what we wrote.
-
-        # Ensure we can open TESTFN for writing.
-        support.unlink(support.TESTFN)
-
-        # Since C doesn't guarantee we can write/read arbitrary bytes in text
-        # files, use binary mode.
-        f = self.open(support.TESTFN, "wb")
-        try:
-            # write once with \n and once without
-            f.write(s)
-            f.write(b"\n")
-            f.write(s)
-            f.close()
-            f = open(support.TESTFN, "rb")
-            line = f.readline()
-            self.assertEqual(line, s + b"\n")
-            line = f.readline()
-            self.assertEqual(line, s)
-            line = f.readline()
-            self.assertTrue(not line) # Must be at EOF
-            f.close()
-        finally:
-            support.unlink(support.TESTFN)
-
-    def drive_one(self, pattern):
-        for length in lengths:
-            # Repeat string 'pattern' as often as needed to reach total length
-            # 'length'.  Then call try_one with that string, a string one larger
-            # than that, and a string one smaller than that.  Try this with all
-            # small sizes and various powers of 2, so we exercise all likely
-            # stdio buffer sizes, and "off by one" errors on both sides.
-            q, r = divmod(length, len(pattern))
-            teststring = pattern * q + pattern[:r]
-            self.assertEqual(len(teststring), length)
-            self.try_one(teststring)
-            self.try_one(teststring + b"x")
-            self.try_one(teststring[:-1])
-
-    def test_primepat(self):
-        # A pattern with prime length, to avoid simple relationships with
-        # stdio buffer sizes.
-        self.drive_one(b"1234567890\00\01\02\03\04\05\06")
-
-    def test_nullpat(self):
-        self.drive_one(bytes(1000))
-
-
-class CBufferSizeTest(BufferSizeTest):
-    open = io.open
-
-class PyBufferSizeTest(BufferSizeTest):
-    open = staticmethod(pyio.open)
-
-class BuiltinBufferSizeTest(BufferSizeTest):
-    open = open
-
-
-def test_main():
-    support.run_unittest(CBufferSizeTest, PyBufferSizeTest, BuiltinBufferSizeTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_builtin.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_builtin.py
deleted file mode 100644
index 1cadefd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_builtin.py
+++ /dev/null
@@ -1,1708 +0,0 @@
-# Python test set -- built-in functions
-
-import platform
-import unittest
-from test.test_support import fcmp, have_unicode, TESTFN, unlink, \
-                              run_unittest, check_py3k_warnings
-import warnings
-from operator import neg
-
-import sys, cStringIO, random, UserDict
-
-# count the number of test runs.
-# used to skip running test_execfile() multiple times
-# and to create unique strings to intern in test_intern()
-numruns = 0
-
-class Squares:
-
-    def __init__(self, max):
-        self.max = max
-        self.sofar = []
-
-    def __len__(self): return len(self.sofar)
-
-    def __getitem__(self, i):
-        if not 0 <= i < self.max: raise IndexError
-        n = len(self.sofar)
-        while n <= i:
-            self.sofar.append(n*n)
-            n += 1
-        return self.sofar[i]
-
-class StrSquares:
-
-    def __init__(self, max):
-        self.max = max
-        self.sofar = []
-
-    def __len__(self):
-        return len(self.sofar)
-
-    def __getitem__(self, i):
-        if not 0 <= i < self.max:
-            raise IndexError
-        n = len(self.sofar)
-        while n <= i:
-            self.sofar.append(str(n*n))
-            n += 1
-        return self.sofar[i]
-
-class BitBucket:
-    def write(self, line):
-        pass
-
-
-class TestFailingBool:
-    def __nonzero__(self):
-        raise RuntimeError
-
-class TestFailingIter:
-    def __iter__(self):
-        raise RuntimeError
-
-class BuiltinTest(unittest.TestCase):
-
-    def test_import(self):
-        __import__('sys')
-        __import__('time')
-        __import__('string')
-        __import__(name='sys')
-        __import__(name='time', level=0)
-        self.assertRaises(ImportError, __import__, 'spamspam')
-        self.assertRaises(TypeError, __import__, 1, 2, 3, 4)
-        self.assertRaises(ValueError, __import__, '')
-        self.assertRaises(TypeError, __import__, 'sys', name='sys')
-
-    def test_abs(self):
-        # int
-        self.assertEqual(abs(0), 0)
-        self.assertEqual(abs(1234), 1234)
-        self.assertEqual(abs(-1234), 1234)
-        self.assertTrue(abs(-sys.maxint-1) > 0)
-        # float
-        self.assertEqual(abs(0.0), 0.0)
-        self.assertEqual(abs(3.14), 3.14)
-        self.assertEqual(abs(-3.14), 3.14)
-        # long
-        self.assertEqual(abs(0L), 0L)
-        self.assertEqual(abs(1234L), 1234L)
-        self.assertEqual(abs(-1234L), 1234L)
-        # str
-        self.assertRaises(TypeError, abs, 'a')
-        # bool
-        self.assertEqual(abs(True), 1)
-        self.assertEqual(abs(False), 0)
-        # other
-        self.assertRaises(TypeError, abs)
-        self.assertRaises(TypeError, abs, None)
-        class AbsClass(object):
-            def __abs__(self):
-                return -5
-        self.assertEqual(abs(AbsClass()), -5)
-
-    def test_all(self):
-        self.assertEqual(all([2, 4, 6]), True)
-        self.assertEqual(all([2, None, 6]), False)
-        self.assertRaises(RuntimeError, all, [2, TestFailingBool(), 6])
-        self.assertRaises(RuntimeError, all, TestFailingIter())
-        self.assertRaises(TypeError, all, 10)               # Non-iterable
-        self.assertRaises(TypeError, all)                   # No args
-        self.assertRaises(TypeError, all, [2, 4, 6], [])    # Too many args
-        self.assertEqual(all([]), True)                     # Empty iterator
-        S = [50, 60]
-        self.assertEqual(all(x > 42 for x in S), True)
-        S = [50, 40, 60]
-        self.assertEqual(all(x > 42 for x in S), False)
-
-    def test_any(self):
-        self.assertEqual(any([None, None, None]), False)
-        self.assertEqual(any([None, 4, None]), True)
-        self.assertRaises(RuntimeError, any, [None, TestFailingBool(), 6])
-        self.assertRaises(RuntimeError, all, TestFailingIter())
-        self.assertRaises(TypeError, any, 10)               # Non-iterable
-        self.assertRaises(TypeError, any)                   # No args
-        self.assertRaises(TypeError, any, [2, 4, 6], [])    # Too many args
-        self.assertEqual(any([]), False)                    # Empty iterator
-        S = [40, 60, 30]
-        self.assertEqual(any(x > 42 for x in S), True)
-        S = [10, 20, 30]
-        self.assertEqual(any(x > 42 for x in S), False)
-
-    def test_neg(self):
-        x = -sys.maxint-1
-        self.assertTrue(isinstance(x, int))
-        self.assertEqual(-x, sys.maxint+1)
-
-    def test_apply(self):
-        def f0(*args):
-            self.assertEqual(args, ())
-        def f1(a1):
-            self.assertEqual(a1, 1)
-        def f2(a1, a2):
-            self.assertEqual(a1, 1)
-            self.assertEqual(a2, 2)
-        def f3(a1, a2, a3):
-            self.assertEqual(a1, 1)
-            self.assertEqual(a2, 2)
-            self.assertEqual(a3, 3)
-        apply(f0, ())
-        apply(f1, (1,))
-        apply(f2, (1, 2))
-        apply(f3, (1, 2, 3))
-
-        # A PyCFunction that takes only positional parameters should allow an
-        # empty keyword dictionary to pass without a complaint, but raise a
-        # TypeError if the dictionary is non-empty.
-        apply(id, (1,), {})
-        self.assertRaises(TypeError, apply, id, (1,), {"foo": 1})
-        self.assertRaises(TypeError, apply)
-        self.assertRaises(TypeError, apply, id, 42)
-        self.assertRaises(TypeError, apply, id, (42,), 42)
-
-    def test_callable(self):
-        self.assertTrue(callable(len))
-        self.assertFalse(callable("a"))
-        self.assertTrue(callable(callable))
-        self.assertTrue(callable(lambda x, y: x + y))
-        self.assertFalse(callable(__builtins__))
-        def f(): pass
-        self.assertTrue(callable(f))
-
-        class Classic:
-            def meth(self): pass
-        self.assertTrue(callable(Classic))
-        c = Classic()
-        self.assertTrue(callable(c.meth))
-        self.assertFalse(callable(c))
-
-        class NewStyle(object):
-            def meth(self): pass
-        self.assertTrue(callable(NewStyle))
-        n = NewStyle()
-        self.assertTrue(callable(n.meth))
-        self.assertFalse(callable(n))
-
-        # Classic and new-style classes evaluate __call__() differently
-        c.__call__ = None
-        self.assertTrue(callable(c))
-        del c.__call__
-        self.assertFalse(callable(c))
-        n.__call__ = None
-        self.assertFalse(callable(n))
-        del n.__call__
-        self.assertFalse(callable(n))
-
-        class N2(object):
-            def __call__(self): pass
-        n2 = N2()
-        self.assertTrue(callable(n2))
-        class N3(N2): pass
-        n3 = N3()
-        self.assertTrue(callable(n3))
-
-    def test_chr(self):
-        self.assertEqual(chr(32), ' ')
-        self.assertEqual(chr(65), 'A')
-        self.assertEqual(chr(97), 'a')
-        self.assertEqual(chr(0xff), '\xff')
-        self.assertRaises(ValueError, chr, 256)
-        self.assertRaises(TypeError, chr)
-
-    def test_cmp(self):
-        self.assertEqual(cmp(-1, 1), -1)
-        self.assertEqual(cmp(1, -1), 1)
-        self.assertEqual(cmp(1, 1), 0)
-        # verify that circular objects are not handled
-        a = []; a.append(a)
-        b = []; b.append(b)
-        from UserList import UserList
-        c = UserList(); c.append(c)
-        self.assertRaises(RuntimeError, cmp, a, b)
-        self.assertRaises(RuntimeError, cmp, b, c)
-        self.assertRaises(RuntimeError, cmp, c, a)
-        self.assertRaises(RuntimeError, cmp, a, c)
-       # okay, now break the cycles
-        a.pop(); b.pop(); c.pop()
-        self.assertRaises(TypeError, cmp)
-
-    def test_coerce(self):
-        self.assertTrue(not fcmp(coerce(1, 1.1), (1.0, 1.1)))
-        self.assertEqual(coerce(1, 1L), (1L, 1L))
-        self.assertTrue(not fcmp(coerce(1L, 1.1), (1.0, 1.1)))
-        self.assertRaises(TypeError, coerce)
-        class BadNumber:
-            def __coerce__(self, other):
-                raise ValueError
-        self.assertRaises(ValueError, coerce, 42, BadNumber())
-        self.assertRaises(OverflowError, coerce, 0.5, int("12345" * 1000))
-
-    def test_compile(self):
-        compile('print 1\n', '', 'exec')
-        bom = '\xef\xbb\xbf'
-        compile(bom + 'print 1\n', '', 'exec')
-        compile(source='pass', filename='?', mode='exec')
-        compile(dont_inherit=0, filename='tmp', source='0', mode='eval')
-        compile('pass', '?', dont_inherit=1, mode='exec')
-        self.assertRaises(TypeError, compile)
-        self.assertRaises(ValueError, compile, 'print 42\n', '<string>', 'badmode')
-        self.assertRaises(ValueError, compile, 'print 42\n', '<string>', 'single', 0xff)
-        self.assertRaises(TypeError, compile, chr(0), 'f', 'exec')
-        self.assertRaises(TypeError, compile, 'pass', '?', 'exec',
-                          mode='eval', source='0', filename='tmp')
-        if have_unicode:
-            compile(unicode('print u"\xc3\xa5"\n', 'utf8'), '', 'exec')
-            self.assertRaises(TypeError, compile, unichr(0), 'f', 'exec')
-            self.assertRaises(ValueError, compile, unicode('a = 1'), 'f', 'bad')
-
-
-    def test_delattr(self):
-        import sys
-        sys.spam = 1
-        delattr(sys, 'spam')
-        self.assertRaises(TypeError, delattr)
-
-    def test_dir(self):
-        # dir(wrong number of arguments)
-        self.assertRaises(TypeError, dir, 42, 42)
-
-        # dir() - local scope
-        local_var = 1
-        self.assertIn('local_var', dir())
-
-        # dir(module)
-        import sys
-        self.assertIn('exit', dir(sys))
-
-        # dir(module_with_invalid__dict__)
-        import types
-        class Foo(types.ModuleType):
-            __dict__ = 8
-        f = Foo("foo")
-        self.assertRaises(TypeError, dir, f)
-
-        # dir(type)
-        self.assertIn("strip", dir(str))
-        self.assertNotIn("__mro__", dir(str))
-
-        # dir(obj)
-        class Foo(object):
-            def __init__(self):
-                self.x = 7
-                self.y = 8
-                self.z = 9
-        f = Foo()
-        self.assertIn("y", dir(f))
-
-        # dir(obj_no__dict__)
-        class Foo(object):
-            __slots__ = []
-        f = Foo()
-        self.assertIn("__repr__", dir(f))
-
-        # dir(obj_no__class__with__dict__)
-        # (an ugly trick to cause getattr(f, "__class__") to fail)
-        class Foo(object):
-            __slots__ = ["__class__", "__dict__"]
-            def __init__(self):
-                self.bar = "wow"
-        f = Foo()
-        self.assertNotIn("__repr__", dir(f))
-        self.assertIn("bar", dir(f))
-
-        # dir(obj_using __dir__)
-        class Foo(object):
-            def __dir__(self):
-                return ["kan", "ga", "roo"]
-        f = Foo()
-        self.assertTrue(dir(f) == ["ga", "kan", "roo"])
-
-        # dir(obj__dir__not_list)
-        class Foo(object):
-            def __dir__(self):
-                return 7
-        f = Foo()
-        self.assertRaises(TypeError, dir, f)
-
-    def test_divmod(self):
-        self.assertEqual(divmod(12, 7), (1, 5))
-        self.assertEqual(divmod(-12, 7), (-2, 2))
-        self.assertEqual(divmod(12, -7), (-2, -2))
-        self.assertEqual(divmod(-12, -7), (1, -5))
-
-        self.assertEqual(divmod(12L, 7L), (1L, 5L))
-        self.assertEqual(divmod(-12L, 7L), (-2L, 2L))
-        self.assertEqual(divmod(12L, -7L), (-2L, -2L))
-        self.assertEqual(divmod(-12L, -7L), (1L, -5L))
-
-        self.assertEqual(divmod(12, 7L), (1, 5L))
-        self.assertEqual(divmod(-12, 7L), (-2, 2L))
-        self.assertEqual(divmod(12L, -7), (-2L, -2))
-        self.assertEqual(divmod(-12L, -7), (1L, -5))
-
-        self.assertEqual(divmod(-sys.maxint-1, -1),
-                         (sys.maxint+1, 0))
-
-        self.assertTrue(not fcmp(divmod(3.25, 1.0), (3.0, 0.25)))
-        self.assertTrue(not fcmp(divmod(-3.25, 1.0), (-4.0, 0.75)))
-        self.assertTrue(not fcmp(divmod(3.25, -1.0), (-4.0, -0.75)))
-        self.assertTrue(not fcmp(divmod(-3.25, -1.0), (3.0, -0.25)))
-
-        self.assertRaises(TypeError, divmod)
-
-    def test_eval(self):
-        self.assertEqual(eval('1+1'), 2)
-        self.assertEqual(eval(' 1+1\n'), 2)
-        globals = {'a': 1, 'b': 2}
-        locals = {'b': 200, 'c': 300}
-        self.assertEqual(eval('a', globals) , 1)
-        self.assertEqual(eval('a', globals, locals), 1)
-        self.assertEqual(eval('b', globals, locals), 200)
-        self.assertEqual(eval('c', globals, locals), 300)
-        if have_unicode:
-            self.assertEqual(eval(unicode('1+1')), 2)
-            self.assertEqual(eval(unicode(' 1+1\n')), 2)
-        globals = {'a': 1, 'b': 2}
-        locals = {'b': 200, 'c': 300}
-        if have_unicode:
-            self.assertEqual(eval(unicode('a'), globals), 1)
-            self.assertEqual(eval(unicode('a'), globals, locals), 1)
-            self.assertEqual(eval(unicode('b'), globals, locals), 200)
-            self.assertEqual(eval(unicode('c'), globals, locals), 300)
-            bom = '\xef\xbb\xbf'
-            self.assertEqual(eval(bom + 'a', globals, locals), 1)
-            self.assertEqual(eval(unicode('u"\xc3\xa5"', 'utf8'), globals),
-                             unicode('\xc3\xa5', 'utf8'))
-        self.assertRaises(TypeError, eval)
-        self.assertRaises(TypeError, eval, ())
-
-    def test_general_eval(self):
-        # Tests that general mappings can be used for the locals argument
-
-        class M:
-            "Test mapping interface versus possible calls from eval()."
-            def __getitem__(self, key):
-                if key == 'a':
-                    return 12
-                raise KeyError
-            def keys(self):
-                return list('xyz')
-
-        m = M()
-        g = globals()
-        self.assertEqual(eval('a', g, m), 12)
-        self.assertRaises(NameError, eval, 'b', g, m)
-        self.assertEqual(eval('dir()', g, m), list('xyz'))
-        self.assertEqual(eval('globals()', g, m), g)
-        self.assertEqual(eval('locals()', g, m), m)
-        self.assertRaises(TypeError, eval, 'a', m)
-        class A:
-            "Non-mapping"
-            pass
-        m = A()
-        self.assertRaises(TypeError, eval, 'a', g, m)
-
-        # Verify that dict subclasses work as well
-        class D(dict):
-            def __getitem__(self, key):
-                if key == 'a':
-                    return 12
-                return dict.__getitem__(self, key)
-            def keys(self):
-                return list('xyz')
-
-        d = D()
-        self.assertEqual(eval('a', g, d), 12)
-        self.assertRaises(NameError, eval, 'b', g, d)
-        self.assertEqual(eval('dir()', g, d), list('xyz'))
-        self.assertEqual(eval('globals()', g, d), g)
-        self.assertEqual(eval('locals()', g, d), d)
-
-        # Verify locals stores (used by list comps)
-        eval('[locals() for i in (2,3)]', g, d)
-        eval('[locals() for i in (2,3)]', g, UserDict.UserDict())
-
-        class SpreadSheet:
-            "Sample application showing nested, calculated lookups."
-            _cells = {}
-            def __setitem__(self, key, formula):
-                self._cells[key] = formula
-            def __getitem__(self, key):
-                return eval(self._cells[key], globals(), self)
-
-        ss = SpreadSheet()
-        ss['a1'] = '5'
-        ss['a2'] = 'a1*6'
-        ss['a3'] = 'a2*7'
-        self.assertEqual(ss['a3'], 210)
-
-        # Verify that dir() catches a non-list returned by eval
-        # SF bug #1004669
-        class C:
-            def __getitem__(self, item):
-                raise KeyError(item)
-            def keys(self):
-                return 'a'
-        self.assertRaises(TypeError, eval, 'dir()', globals(), C())
-
-    # Done outside of the method test_z to get the correct scope
-    z = 0
-    f = open(TESTFN, 'w')
-    f.write('z = z+1\n')
-    f.write('z = z*2\n')
-    f.close()
-    with check_py3k_warnings(("execfile.. not supported in 3.x",
-                              DeprecationWarning)):
-        execfile(TESTFN)
-
-    def test_execfile(self):
-        global numruns
-        if numruns:
-            return
-        numruns += 1
-
-        globals = {'a': 1, 'b': 2}
-        locals = {'b': 200, 'c': 300}
-
-        self.assertEqual(self.__class__.z, 2)
-        globals['z'] = 0
-        execfile(TESTFN, globals)
-        self.assertEqual(globals['z'], 2)
-        locals['z'] = 0
-        execfile(TESTFN, globals, locals)
-        self.assertEqual(locals['z'], 2)
-
-        class M:
-            "Test mapping interface versus possible calls from execfile()."
-            def __init__(self):
-                self.z = 10
-            def __getitem__(self, key):
-                if key == 'z':
-                    return self.z
-                raise KeyError
-            def __setitem__(self, key, value):
-                if key == 'z':
-                    self.z = value
-                    return
-                raise KeyError
-
-        locals = M()
-        locals['z'] = 0
-        execfile(TESTFN, globals, locals)
-        self.assertEqual(locals['z'], 2)
-
-        unlink(TESTFN)
-        self.assertRaises(TypeError, execfile)
-        self.assertRaises(TypeError, execfile, TESTFN, {}, ())
-        import os
-        self.assertRaises(IOError, execfile, os.curdir)
-        self.assertRaises(IOError, execfile, "I_dont_exist")
-
-    def test_filter(self):
-        self.assertEqual(filter(lambda c: 'a' <= c <= 'z', 'Hello World'), 'elloorld')
-        self.assertEqual(filter(None, [1, 'hello', [], [3], '', None, 9, 0]), [1, 'hello', [3], 9])
-        self.assertEqual(filter(lambda x: x > 0, [1, -3, 9, 0, 2]), [1, 9, 2])
-        self.assertEqual(filter(None, Squares(10)), [1, 4, 9, 16, 25, 36, 49, 64, 81])
-        self.assertEqual(filter(lambda x: x%2, Squares(10)), [1, 9, 25, 49, 81])
-        def identity(item):
-            return 1
-        filter(identity, Squares(5))
-        self.assertRaises(TypeError, filter)
-        class BadSeq(object):
-            def __getitem__(self, index):
-                if index<4:
-                    return 42
-                raise ValueError
-        self.assertRaises(ValueError, filter, lambda x: x, BadSeq())
-        def badfunc():
-            pass
-        self.assertRaises(TypeError, filter, badfunc, range(5))
-
-        # test bltinmodule.c::filtertuple()
-        self.assertEqual(filter(None, (1, 2)), (1, 2))
-        self.assertEqual(filter(lambda x: x>=3, (1, 2, 3, 4)), (3, 4))
-        self.assertRaises(TypeError, filter, 42, (1, 2))
-
-        # test bltinmodule.c::filterstring()
-        self.assertEqual(filter(None, "12"), "12")
-        self.assertEqual(filter(lambda x: x>="3", "1234"), "34")
-        self.assertRaises(TypeError, filter, 42, "12")
-        class badstr(str):
-            def __getitem__(self, index):
-                raise ValueError
-        self.assertRaises(ValueError, filter, lambda x: x >="3", badstr("1234"))
-
-        class badstr2(str):
-            def __getitem__(self, index):
-                return 42
-        self.assertRaises(TypeError, filter, lambda x: x >=42, badstr2("1234"))
-
-        class weirdstr(str):
-            def __getitem__(self, index):
-                return weirdstr(2*str.__getitem__(self, index))
-        self.assertEqual(filter(lambda x: x>="33", weirdstr("1234")), "3344")
-
-        class shiftstr(str):
-            def __getitem__(self, index):
-                return chr(ord(str.__getitem__(self, index))+1)
-        self.assertEqual(filter(lambda x: x>="3", shiftstr("1234")), "345")
-
-        if have_unicode:
-            # test bltinmodule.c::filterunicode()
-            self.assertEqual(filter(None, unicode("12")), unicode("12"))
-            self.assertEqual(filter(lambda x: x>="3", unicode("1234")), unicode("34"))
-            self.assertRaises(TypeError, filter, 42, unicode("12"))
-            self.assertRaises(ValueError, filter, lambda x: x >="3", badstr(unicode("1234")))
-
-            class badunicode(unicode):
-                def __getitem__(self, index):
-                    return 42
-            self.assertRaises(TypeError, filter, lambda x: x >=42, badunicode("1234"))
-
-            class weirdunicode(unicode):
-                def __getitem__(self, index):
-                    return weirdunicode(2*unicode.__getitem__(self, index))
-            self.assertEqual(
-                filter(lambda x: x>=unicode("33"), weirdunicode("1234")), unicode("3344"))
-
-            class shiftunicode(unicode):
-                def __getitem__(self, index):
-                    return unichr(ord(unicode.__getitem__(self, index))+1)
-            self.assertEqual(
-                filter(lambda x: x>=unicode("3"), shiftunicode("1234")),
-                unicode("345")
-            )
-
-    def test_filter_subclasses(self):
-        # test that filter() never returns tuple, str or unicode subclasses
-        # and that the result always goes through __getitem__
-        funcs = (None, bool, lambda x: True)
-        class tuple2(tuple):
-            def __getitem__(self, index):
-                return 2*tuple.__getitem__(self, index)
-        class str2(str):
-            def __getitem__(self, index):
-                return 2*str.__getitem__(self, index)
-        inputs = {
-            tuple2: {(): (), (1, 2, 3): (2, 4, 6)},
-            str2:   {"": "", "123": "112233"}
-        }
-        if have_unicode:
-            class unicode2(unicode):
-                def __getitem__(self, index):
-                    return 2*unicode.__getitem__(self, index)
-            inputs[unicode2] = {
-                unicode(): unicode(),
-                unicode("123"): unicode("112233")
-            }
-
-        for (cls, inps) in inputs.iteritems():
-            for (inp, exp) in inps.iteritems():
-                # make sure the output goes through __getitem__
-                # even if func is None
-                self.assertEqual(
-                    filter(funcs[0], cls(inp)),
-                    filter(funcs[1], cls(inp))
-                )
-                for func in funcs:
-                    outp = filter(func, cls(inp))
-                    self.assertEqual(outp, exp)
-                    self.assertTrue(not isinstance(outp, cls))
-
-    def test_getattr(self):
-        import sys
-        self.assertTrue(getattr(sys, 'stdout') is sys.stdout)
-        self.assertRaises(TypeError, getattr, sys, 1)
-        self.assertRaises(TypeError, getattr, sys, 1, "foo")
-        self.assertRaises(TypeError, getattr)
-        if have_unicode:
-            self.assertRaises(UnicodeError, getattr, sys, unichr(sys.maxunicode))
-
-    def test_hasattr(self):
-        import sys
-        self.assertTrue(hasattr(sys, 'stdout'))
-        self.assertRaises(TypeError, hasattr, sys, 1)
-        self.assertRaises(TypeError, hasattr)
-        if have_unicode:
-            self.assertRaises(UnicodeError, hasattr, sys, unichr(sys.maxunicode))
-
-        # Check that hasattr allows SystemExit and KeyboardInterrupts by
-        class A:
-            def __getattr__(self, what):
-                raise KeyboardInterrupt
-        self.assertRaises(KeyboardInterrupt, hasattr, A(), "b")
-        class B:
-            def __getattr__(self, what):
-                raise SystemExit
-        self.assertRaises(SystemExit, hasattr, B(), "b")
-
-    def test_hash(self):
-        hash(None)
-        self.assertEqual(hash(1), hash(1L))
-        self.assertEqual(hash(1), hash(1.0))
-        hash('spam')
-        if have_unicode:
-            self.assertEqual(hash('spam'), hash(unicode('spam')))
-        hash((0,1,2,3))
-        def f(): pass
-        self.assertRaises(TypeError, hash, [])
-        self.assertRaises(TypeError, hash, {})
-        # Bug 1536021: Allow hash to return long objects
-        class X:
-            def __hash__(self):
-                return 2**100
-        self.assertEqual(type(hash(X())), int)
-        class Y(object):
-            def __hash__(self):
-                return 2**100
-        self.assertEqual(type(hash(Y())), int)
-        class Z(long):
-            def __hash__(self):
-                return self
-        self.assertEqual(hash(Z(42)), hash(42L))
-
-    def test_hex(self):
-        self.assertEqual(hex(16), '0x10')
-        self.assertEqual(hex(16L), '0x10L')
-        self.assertEqual(hex(-16), '-0x10')
-        self.assertEqual(hex(-16L), '-0x10L')
-        self.assertRaises(TypeError, hex, {})
-
-    def test_id(self):
-        id(None)
-        id(1)
-        id(1L)
-        id(1.0)
-        id('spam')
-        id((0,1,2,3))
-        id([0,1,2,3])
-        id({'spam': 1, 'eggs': 2, 'ham': 3})
-
-    # Test input() later, together with raw_input
-
-    def test_intern(self):
-        self.assertRaises(TypeError, intern)
-        # This fails if the test is run twice with a constant string,
-        # therefore append the run counter
-        s = "never interned before " + str(numruns)
-        self.assertTrue(intern(s) is s)
-        s2 = s.swapcase().swapcase()
-        self.assertTrue(intern(s2) is s)
-
-        # Subclasses of string can't be interned, because they
-        # provide too much opportunity for insane things to happen.
-        # We don't want them in the interned dict and if they aren't
-        # actually interned, we don't want to create the appearance
-        # that they are by allowing intern() to succeed.
-        class S(str):
-            def __hash__(self):
-                return 123
-
-        self.assertRaises(TypeError, intern, S("abc"))
-
-        # It's still safe to pass these strings to routines that
-        # call intern internally, e.g. PyObject_SetAttr().
-        s = S("abc")
-        setattr(s, s, s)
-        self.assertEqual(getattr(s, s), s)
-
-    def test_iter(self):
-        self.assertRaises(TypeError, iter)
-        self.assertRaises(TypeError, iter, 42, 42)
-        lists = [("1", "2"), ["1", "2"], "12"]
-        if have_unicode:
-            lists.append(unicode("12"))
-        for l in lists:
-            i = iter(l)
-            self.assertEqual(i.next(), '1')
-            self.assertEqual(i.next(), '2')
-            self.assertRaises(StopIteration, i.next)
-
-    def test_isinstance(self):
-        class C:
-            pass
-        class D(C):
-            pass
-        class E:
-            pass
-        c = C()
-        d = D()
-        e = E()
-        self.assertTrue(isinstance(c, C))
-        self.assertTrue(isinstance(d, C))
-        self.assertTrue(not isinstance(e, C))
-        self.assertTrue(not isinstance(c, D))
-        self.assertTrue(not isinstance('foo', E))
-        self.assertRaises(TypeError, isinstance, E, 'foo')
-        self.assertRaises(TypeError, isinstance)
-
-    def test_issubclass(self):
-        class C:
-            pass
-        class D(C):
-            pass
-        class E:
-            pass
-        c = C()
-        d = D()
-        e = E()
-        self.assertTrue(issubclass(D, C))
-        self.assertTrue(issubclass(C, C))
-        self.assertTrue(not issubclass(C, D))
-        self.assertRaises(TypeError, issubclass, 'foo', E)
-        self.assertRaises(TypeError, issubclass, E, 'foo')
-        self.assertRaises(TypeError, issubclass)
-
-    def test_len(self):
-        self.assertEqual(len('123'), 3)
-        self.assertEqual(len(()), 0)
-        self.assertEqual(len((1, 2, 3, 4)), 4)
-        self.assertEqual(len([1, 2, 3, 4]), 4)
-        self.assertEqual(len({}), 0)
-        self.assertEqual(len({'a':1, 'b': 2}), 2)
-        class BadSeq:
-            def __len__(self):
-                raise ValueError
-        self.assertRaises(ValueError, len, BadSeq())
-        self.assertRaises(TypeError, len, 2)
-        class ClassicStyle: pass
-        class NewStyle(object): pass
-        self.assertRaises(AttributeError, len, ClassicStyle())
-        self.assertRaises(TypeError, len, NewStyle())
-
-    def test_map(self):
-        self.assertEqual(
-            map(None, 'hello world'),
-            ['h','e','l','l','o',' ','w','o','r','l','d']
-        )
-        self.assertEqual(
-            map(None, 'abcd', 'efg'),
-            [('a', 'e'), ('b', 'f'), ('c', 'g'), ('d', None)]
-        )
-        self.assertEqual(
-            map(None, range(10)),
-            [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-        )
-        self.assertEqual(
-            map(lambda x: x*x, range(1,4)),
-            [1, 4, 9]
-        )
-        try:
-            from math import sqrt
-        except ImportError:
-            def sqrt(x):
-                return pow(x, 0.5)
-        self.assertEqual(
-            map(lambda x: map(sqrt,x), [[16, 4], [81, 9]]),
-            [[4.0, 2.0], [9.0, 3.0]]
-        )
-        self.assertEqual(
-            map(lambda x, y: x+y, [1,3,2], [9,1,4]),
-            [10, 4, 6]
-        )
-
-        def plus(*v):
-            accu = 0
-            for i in v: accu = accu + i
-            return accu
-        self.assertEqual(
-            map(plus, [1, 3, 7]),
-            [1, 3, 7]
-        )
-        self.assertEqual(
-            map(plus, [1, 3, 7], [4, 9, 2]),
-            [1+4, 3+9, 7+2]
-        )
-        self.assertEqual(
-            map(plus, [1, 3, 7], [4, 9, 2], [1, 1, 0]),
-            [1+4+1, 3+9+1, 7+2+0]
-        )
-        self.assertEqual(
-            map(None, Squares(10)),
-            [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
-        )
-        self.assertEqual(
-            map(int, Squares(10)),
-            [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
-        )
-        self.assertEqual(
-            map(None, Squares(3), Squares(2)),
-            [(0,0), (1,1), (4,None)]
-        )
-        self.assertEqual(
-            map(max, Squares(3), Squares(2)),
-            [0, 1, 4]
-        )
-        self.assertRaises(TypeError, map)
-        self.assertRaises(TypeError, map, lambda x: x, 42)
-        self.assertEqual(map(None, [42]), [42])
-        class BadSeq:
-            def __getitem__(self, index):
-                raise ValueError
-        self.assertRaises(ValueError, map, lambda x: x, BadSeq())
-        def badfunc(x):
-            raise RuntimeError
-        self.assertRaises(RuntimeError, map, badfunc, range(5))
-
-    def test_max(self):
-        self.assertEqual(max('123123'), '3')
-        self.assertEqual(max(1, 2, 3), 3)
-        self.assertEqual(max((1, 2, 3, 1, 2, 3)), 3)
-        self.assertEqual(max([1, 2, 3, 1, 2, 3]), 3)
-
-        self.assertEqual(max(1, 2L, 3.0), 3.0)
-        self.assertEqual(max(1L, 2.0, 3), 3)
-        self.assertEqual(max(1.0, 2, 3L), 3L)
-
-        for stmt in (
-            "max(key=int)",                 # no args
-            "max(1, key=int)",              # single arg not iterable
-            "max(1, 2, keystone=int)",      # wrong keyword
-            "max(1, 2, key=int, abc=int)",  # two many keywords
-            "max(1, 2, key=1)",             # keyfunc is not callable
-            ):
-            try:
-                exec(stmt) in globals()
-            except TypeError:
-                pass
-            else:
-                self.fail(stmt)
-
-        self.assertEqual(max((1,), key=neg), 1)     # one elem iterable
-        self.assertEqual(max((1,2), key=neg), 1)    # two elem iterable
-        self.assertEqual(max(1, 2, key=neg), 1)     # two elems
-
-        data = [random.randrange(200) for i in range(100)]
-        keys = dict((elem, random.randrange(50)) for elem in data)
-        f = keys.__getitem__
-        self.assertEqual(max(data, key=f),
-                         sorted(reversed(data), key=f)[-1])
-
-    def test_min(self):
-        self.assertEqual(min('123123'), '1')
-        self.assertEqual(min(1, 2, 3), 1)
-        self.assertEqual(min((1, 2, 3, 1, 2, 3)), 1)
-        self.assertEqual(min([1, 2, 3, 1, 2, 3]), 1)
-
-        self.assertEqual(min(1, 2L, 3.0), 1)
-        self.assertEqual(min(1L, 2.0, 3), 1L)
-        self.assertEqual(min(1.0, 2, 3L), 1.0)
-
-        self.assertRaises(TypeError, min)
-        self.assertRaises(TypeError, min, 42)
-        self.assertRaises(ValueError, min, ())
-        class BadSeq:
-            def __getitem__(self, index):
-                raise ValueError
-        self.assertRaises(ValueError, min, BadSeq())
-        class BadNumber:
-            def __cmp__(self, other):
-                raise ValueError
-        self.assertRaises(ValueError, min, (42, BadNumber()))
-
-        for stmt in (
-            "min(key=int)",                 # no args
-            "min(1, key=int)",              # single arg not iterable
-            "min(1, 2, keystone=int)",      # wrong keyword
-            "min(1, 2, key=int, abc=int)",  # two many keywords
-            "min(1, 2, key=1)",             # keyfunc is not callable
-            ):
-            try:
-                exec(stmt) in globals()
-            except TypeError:
-                pass
-            else:
-                self.fail(stmt)
-
-        self.assertEqual(min((1,), key=neg), 1)     # one elem iterable
-        self.assertEqual(min((1,2), key=neg), 2)    # two elem iterable
-        self.assertEqual(min(1, 2, key=neg), 2)     # two elems
-
-        data = [random.randrange(200) for i in range(100)]
-        keys = dict((elem, random.randrange(50)) for elem in data)
-        f = keys.__getitem__
-        self.assertEqual(min(data, key=f),
-                         sorted(data, key=f)[0])
-
-    def test_next(self):
-        it = iter(range(2))
-        self.assertEqual(next(it), 0)
-        self.assertEqual(next(it), 1)
-        self.assertRaises(StopIteration, next, it)
-        self.assertRaises(StopIteration, next, it)
-        self.assertEqual(next(it, 42), 42)
-
-        class Iter(object):
-            def __iter__(self):
-                return self
-            def next(self):
-                raise StopIteration
-
-        it = iter(Iter())
-        self.assertEqual(next(it, 42), 42)
-        self.assertRaises(StopIteration, next, it)
-
-        def gen():
-            yield 1
-            return
-
-        it = gen()
-        self.assertEqual(next(it), 1)
-        self.assertRaises(StopIteration, next, it)
-        self.assertEqual(next(it, 42), 42)
-
-    def test_oct(self):
-        self.assertEqual(oct(100), '0144')
-        self.assertEqual(oct(100L), '0144L')
-        self.assertEqual(oct(-100), '-0144')
-        self.assertEqual(oct(-100L), '-0144L')
-        self.assertRaises(TypeError, oct, ())
-
-    def write_testfile(self):
-        # NB the first 4 lines are also used to test input and raw_input, below
-        fp = open(TESTFN, 'w')
-        try:
-            fp.write('1+1\n')
-            fp.write('1+1\n')
-            fp.write('The quick brown fox jumps over the lazy dog')
-            fp.write('.\n')
-            fp.write('Dear John\n')
-            fp.write('XXX'*100)
-            fp.write('YYY'*100)
-        finally:
-            fp.close()
-
-    def test_open(self):
-        self.write_testfile()
-        fp = open(TESTFN, 'r')
-        try:
-            self.assertEqual(fp.readline(4), '1+1\n')
-            self.assertEqual(fp.readline(4), '1+1\n')
-            self.assertEqual(fp.readline(), 'The quick brown fox jumps over the lazy dog.\n')
-            self.assertEqual(fp.readline(4), 'Dear')
-            self.assertEqual(fp.readline(100), ' John\n')
-            self.assertEqual(fp.read(300), 'XXX'*100)
-            self.assertEqual(fp.read(1000), 'YYY'*100)
-        finally:
-            fp.close()
-        unlink(TESTFN)
-
-    def test_ord(self):
-        self.assertEqual(ord(' '), 32)
-        self.assertEqual(ord('A'), 65)
-        self.assertEqual(ord('a'), 97)
-        if have_unicode:
-            self.assertEqual(ord(unichr(sys.maxunicode)), sys.maxunicode)
-        self.assertRaises(TypeError, ord, 42)
-        if have_unicode:
-            self.assertRaises(TypeError, ord, unicode("12"))
-
-    def test_pow(self):
-        self.assertEqual(pow(0,0), 1)
-        self.assertEqual(pow(0,1), 0)
-        self.assertEqual(pow(1,0), 1)
-        self.assertEqual(pow(1,1), 1)
-
-        self.assertEqual(pow(2,0), 1)
-        self.assertEqual(pow(2,10), 1024)
-        self.assertEqual(pow(2,20), 1024*1024)
-        self.assertEqual(pow(2,30), 1024*1024*1024)
-
-        self.assertEqual(pow(-2,0), 1)
-        self.assertEqual(pow(-2,1), -2)
-        self.assertEqual(pow(-2,2), 4)
-        self.assertEqual(pow(-2,3), -8)
-
-        self.assertEqual(pow(0L,0), 1)
-        self.assertEqual(pow(0L,1), 0)
-        self.assertEqual(pow(1L,0), 1)
-        self.assertEqual(pow(1L,1), 1)
-
-        self.assertEqual(pow(2L,0), 1)
-        self.assertEqual(pow(2L,10), 1024)
-        self.assertEqual(pow(2L,20), 1024*1024)
-        self.assertEqual(pow(2L,30), 1024*1024*1024)
-
-        self.assertEqual(pow(-2L,0), 1)
-        self.assertEqual(pow(-2L,1), -2)
-        self.assertEqual(pow(-2L,2), 4)
-        self.assertEqual(pow(-2L,3), -8)
-
-        self.assertAlmostEqual(pow(0.,0), 1.)
-        self.assertAlmostEqual(pow(0.,1), 0.)
-        self.assertAlmostEqual(pow(1.,0), 1.)
-        self.assertAlmostEqual(pow(1.,1), 1.)
-
-        self.assertAlmostEqual(pow(2.,0), 1.)
-        self.assertAlmostEqual(pow(2.,10), 1024.)
-        self.assertAlmostEqual(pow(2.,20), 1024.*1024.)
-        self.assertAlmostEqual(pow(2.,30), 1024.*1024.*1024.)
-
-        self.assertAlmostEqual(pow(-2.,0), 1.)
-        self.assertAlmostEqual(pow(-2.,1), -2.)
-        self.assertAlmostEqual(pow(-2.,2), 4.)
-        self.assertAlmostEqual(pow(-2.,3), -8.)
-
-        for x in 2, 2L, 2.0:
-            for y in 10, 10L, 10.0:
-                for z in 1000, 1000L, 1000.0:
-                    if isinstance(x, float) or \
-                       isinstance(y, float) or \
-                       isinstance(z, float):
-                        self.assertRaises(TypeError, pow, x, y, z)
-                    else:
-                        self.assertAlmostEqual(pow(x, y, z), 24.0)
-
-        self.assertRaises(TypeError, pow, -1, -2, 3)
-        self.assertRaises(ValueError, pow, 1, 2, 0)
-        self.assertRaises(TypeError, pow, -1L, -2L, 3L)
-        self.assertRaises(ValueError, pow, 1L, 2L, 0L)
-        # Will return complex in 3.0:
-        self.assertRaises(ValueError, pow, -342.43, 0.234)
-
-        self.assertRaises(TypeError, pow)
-
-    def test_range(self):
-        self.assertEqual(range(3), [0, 1, 2])
-        self.assertEqual(range(1, 5), [1, 2, 3, 4])
-        self.assertEqual(range(0), [])
-        self.assertEqual(range(-3), [])
-        self.assertEqual(range(1, 10, 3), [1, 4, 7])
-        self.assertEqual(range(5, -5, -3), [5, 2, -1, -4])
-
-        # Now test range() with longs
-        self.assertEqual(range(-2**100), [])
-        self.assertEqual(range(0, -2**100), [])
-        self.assertEqual(range(0, 2**100, -1), [])
-        self.assertEqual(range(0, 2**100, -1), [])
-
-        a = long(10 * sys.maxint)
-        b = long(100 * sys.maxint)
-        c = long(50 * sys.maxint)
-
-        self.assertEqual(range(a, a+2), [a, a+1])
-        self.assertEqual(range(a+2, a, -1L), [a+2, a+1])
-        self.assertEqual(range(a+4, a, -2), [a+4, a+2])
-
-        seq = range(a, b, c)
-        self.assertIn(a, seq)
-        self.assertNotIn(b, seq)
-        self.assertEqual(len(seq), 2)
-
-        seq = range(b, a, -c)
-        self.assertIn(b, seq)
-        self.assertNotIn(a, seq)
-        self.assertEqual(len(seq), 2)
-
-        seq = range(-a, -b, -c)
-        self.assertIn(-a, seq)
-        self.assertNotIn(-b, seq)
-        self.assertEqual(len(seq), 2)
-
-        self.assertRaises(TypeError, range)
-        self.assertRaises(TypeError, range, 1, 2, 3, 4)
-        self.assertRaises(ValueError, range, 1, 2, 0)
-        self.assertRaises(ValueError, range, a, a + 1, long(0))
-
-        class badzero(int):
-            def __cmp__(self, other):
-                raise RuntimeError
-            __hash__ = None # Invalid cmp makes this unhashable
-        self.assertRaises(RuntimeError, range, a, a + 1, badzero(1))
-
-        # Reject floats.
-        self.assertRaises(TypeError, range, 1., 1., 1.)
-        self.assertRaises(TypeError, range, 1e100, 1e101, 1e101)
-
-        self.assertRaises(TypeError, range, 0, "spam")
-        self.assertRaises(TypeError, range, 0, 42, "spam")
-
-        self.assertRaises(OverflowError, range, -sys.maxint, sys.maxint)
-        self.assertRaises(OverflowError, range, 0, 2*sys.maxint)
-
-        bignum = 2*sys.maxint
-        smallnum = 42
-        # Old-style user-defined class with __int__ method
-        class I0:
-            def __init__(self, n):
-                self.n = int(n)
-            def __int__(self):
-                return self.n
-        self.assertEqual(range(I0(bignum), I0(bignum + 1)), [bignum])
-        self.assertEqual(range(I0(smallnum), I0(smallnum + 1)), [smallnum])
-
-        # New-style user-defined class with __int__ method
-        class I1(object):
-            def __init__(self, n):
-                self.n = int(n)
-            def __int__(self):
-                return self.n
-        self.assertEqual(range(I1(bignum), I1(bignum + 1)), [bignum])
-        self.assertEqual(range(I1(smallnum), I1(smallnum + 1)), [smallnum])
-
-        # New-style user-defined class with failing __int__ method
-        class IX(object):
-            def __int__(self):
-                raise RuntimeError
-        self.assertRaises(RuntimeError, range, IX())
-
-        # New-style user-defined class with invalid __int__ method
-        class IN(object):
-            def __int__(self):
-                return "not a number"
-        self.assertRaises(TypeError, range, IN())
-
-        # Exercise various combinations of bad arguments, to check
-        # refcounting logic
-        self.assertRaises(TypeError, range, 0.0)
-
-        self.assertRaises(TypeError, range, 0, 0.0)
-        self.assertRaises(TypeError, range, 0.0, 0)
-        self.assertRaises(TypeError, range, 0.0, 0.0)
-
-        self.assertRaises(TypeError, range, 0, 0, 1.0)
-        self.assertRaises(TypeError, range, 0, 0.0, 1)
-        self.assertRaises(TypeError, range, 0, 0.0, 1.0)
-        self.assertRaises(TypeError, range, 0.0, 0, 1)
-        self.assertRaises(TypeError, range, 0.0, 0, 1.0)
-        self.assertRaises(TypeError, range, 0.0, 0.0, 1)
-        self.assertRaises(TypeError, range, 0.0, 0.0, 1.0)
-
-
-
-    def test_input_and_raw_input(self):
-        self.write_testfile()
-        fp = open(TESTFN, 'r')
-        savestdin = sys.stdin
-        savestdout = sys.stdout # Eats the echo
-        try:
-            sys.stdin = fp
-            sys.stdout = BitBucket()
-            self.assertEqual(input(), 2)
-            self.assertEqual(input('testing\n'), 2)
-            self.assertEqual(raw_input(), 'The quick brown fox jumps over the lazy dog.')
-            self.assertEqual(raw_input('testing\n'), 'Dear John')
-
-            # SF 1535165: don't segfault on closed stdin
-            # sys.stdout must be a regular file for triggering
-            sys.stdout = savestdout
-            sys.stdin.close()
-            self.assertRaises(ValueError, input)
-
-            sys.stdout = BitBucket()
-            sys.stdin = cStringIO.StringIO("NULL\0")
-            self.assertRaises(TypeError, input, 42, 42)
-            sys.stdin = cStringIO.StringIO("    'whitespace'")
-            self.assertEqual(input(), 'whitespace')
-            sys.stdin = cStringIO.StringIO()
-            self.assertRaises(EOFError, input)
-
-            # SF 876178: make sure input() respect future options.
-            sys.stdin = cStringIO.StringIO('1/2')
-            sys.stdout = cStringIO.StringIO()
-            exec compile('print input()', 'test_builtin_tmp', 'exec')
-            sys.stdin.seek(0, 0)
-            exec compile('from __future__ import division;print input()',
-                         'test_builtin_tmp', 'exec')
-            sys.stdin.seek(0, 0)
-            exec compile('print input()', 'test_builtin_tmp', 'exec')
-            # The result we expect depends on whether new division semantics
-            # are already in effect.
-            if 1/2 == 0:
-                # This test was compiled with old semantics.
-                expected = ['0', '0.5', '0']
-            else:
-                # This test was compiled with new semantics (e.g., -Qnew
-                # was given on the command line.
-                expected = ['0.5', '0.5', '0.5']
-            self.assertEqual(sys.stdout.getvalue().splitlines(), expected)
-
-            del sys.stdout
-            self.assertRaises(RuntimeError, input, 'prompt')
-            del sys.stdin
-            self.assertRaises(RuntimeError, input, 'prompt')
-        finally:
-            sys.stdin = savestdin
-            sys.stdout = savestdout
-            fp.close()
-            unlink(TESTFN)
-
-    def test_reduce(self):
-        add = lambda x, y: x+y
-        self.assertEqual(reduce(add, ['a', 'b', 'c'], ''), 'abc')
-        self.assertEqual(
-            reduce(add, [['a', 'c'], [], ['d', 'w']], []),
-            ['a','c','d','w']
-        )
-        self.assertEqual(reduce(lambda x, y: x*y, range(2,8), 1), 5040)
-        self.assertEqual(
-            reduce(lambda x, y: x*y, range(2,21), 1L),
-            2432902008176640000L
-        )
-        self.assertEqual(reduce(add, Squares(10)), 285)
-        self.assertEqual(reduce(add, Squares(10), 0), 285)
-        self.assertEqual(reduce(add, Squares(0), 0), 0)
-        self.assertRaises(TypeError, reduce)
-        self.assertRaises(TypeError, reduce, 42)
-        self.assertRaises(TypeError, reduce, 42, 42)
-        self.assertRaises(TypeError, reduce, 42, 42, 42)
-        self.assertRaises(TypeError, reduce, None, range(5))
-        self.assertRaises(TypeError, reduce, add, 42)
-        self.assertEqual(reduce(42, "1"), "1") # func is never called with one item
-        self.assertEqual(reduce(42, "", "1"), "1") # func is never called with one item
-        self.assertRaises(TypeError, reduce, 42, (42, 42))
-        self.assertRaises(TypeError, reduce, add, []) # arg 2 must not be empty sequence with no initial value
-        self.assertRaises(TypeError, reduce, add, "")
-        self.assertRaises(TypeError, reduce, add, ())
-        self.assertEqual(reduce(add, [], None), None)
-        self.assertEqual(reduce(add, [], 42), 42)
-
-        class BadSeq:
-            def __getitem__(self, index):
-                raise ValueError
-        self.assertRaises(ValueError, reduce, 42, BadSeq())
-
-    def test_reload(self):
-        import marshal
-        reload(marshal)
-        import string
-        reload(string)
-        ## import sys
-        ## self.assertRaises(ImportError, reload, sys)
-
-    def test_repr(self):
-        self.assertEqual(repr(''), '\'\'')
-        self.assertEqual(repr(0), '0')
-        self.assertEqual(repr(0L), '0L')
-        self.assertEqual(repr(()), '()')
-        self.assertEqual(repr([]), '[]')
-        self.assertEqual(repr({}), '{}')
-        a = []
-        a.append(a)
-        self.assertEqual(repr(a), '[[...]]')
-        a = {}
-        a[0] = a
-        self.assertEqual(repr(a), '{0: {...}}')
-
-    def test_round(self):
-        self.assertEqual(round(0.0), 0.0)
-        self.assertEqual(type(round(0.0)), float)  # Will be int in 3.0.
-        self.assertEqual(round(1.0), 1.0)
-        self.assertEqual(round(10.0), 10.0)
-        self.assertEqual(round(1000000000.0), 1000000000.0)
-        self.assertEqual(round(1e20), 1e20)
-
-        self.assertEqual(round(-1.0), -1.0)
-        self.assertEqual(round(-10.0), -10.0)
-        self.assertEqual(round(-1000000000.0), -1000000000.0)
-        self.assertEqual(round(-1e20), -1e20)
-
-        self.assertEqual(round(0.1), 0.0)
-        self.assertEqual(round(1.1), 1.0)
-        self.assertEqual(round(10.1), 10.0)
-        self.assertEqual(round(1000000000.1), 1000000000.0)
-
-        self.assertEqual(round(-1.1), -1.0)
-        self.assertEqual(round(-10.1), -10.0)
-        self.assertEqual(round(-1000000000.1), -1000000000.0)
-
-        self.assertEqual(round(0.9), 1.0)
-        self.assertEqual(round(9.9), 10.0)
-        self.assertEqual(round(999999999.9), 1000000000.0)
-
-        self.assertEqual(round(-0.9), -1.0)
-        self.assertEqual(round(-9.9), -10.0)
-        self.assertEqual(round(-999999999.9), -1000000000.0)
-
-        self.assertEqual(round(-8.0, -1), -10.0)
-        self.assertEqual(type(round(-8.0, -1)), float)
-
-        self.assertEqual(type(round(-8.0, 0)), float)
-        self.assertEqual(type(round(-8.0, 1)), float)
-
-        # Check half rounding behaviour.
-        self.assertEqual(round(5.5), 6)
-        self.assertEqual(round(6.5), 7)
-        self.assertEqual(round(-5.5), -6)
-        self.assertEqual(round(-6.5), -7)
-
-        # Check behavior on ints
-        self.assertEqual(round(0), 0)
-        self.assertEqual(round(8), 8)
-        self.assertEqual(round(-8), -8)
-        self.assertEqual(type(round(0)), float)  # Will be int in 3.0.
-        self.assertEqual(type(round(-8, -1)), float)
-        self.assertEqual(type(round(-8, 0)), float)
-        self.assertEqual(type(round(-8, 1)), float)
-
-        # test new kwargs
-        self.assertEqual(round(number=-8.0, ndigits=-1), -10.0)
-
-        self.assertRaises(TypeError, round)
-
-        # test generic rounding delegation for reals
-        class TestRound(object):
-            def __float__(self):
-                return 23.0
-
-        class TestNoRound(object):
-            pass
-
-        self.assertEqual(round(TestRound()), 23)
-
-        self.assertRaises(TypeError, round, 1, 2, 3)
-        self.assertRaises(TypeError, round, TestNoRound())
-
-        t = TestNoRound()
-        t.__float__ = lambda *args: args
-        self.assertRaises(TypeError, round, t)
-        self.assertRaises(TypeError, round, t, 0)
-
-    # Some versions of glibc for alpha have a bug that affects
-    # float -> integer rounding (floor, ceil, rint, round) for
-    # values in the range [2**52, 2**53).  See:
-    #
-    #   http://sources.redhat.com/bugzilla/show_bug.cgi?id=5350
-    #
-    # We skip this test on Linux/alpha if it would fail.
-    linux_alpha = (platform.system().startswith('Linux') and
-                   platform.machine().startswith('alpha'))
-    system_round_bug = round(5e15+1) != 5e15+1
-    @unittest.skipIf(linux_alpha and system_round_bug,
-                     "test will fail;  failure is probably due to a "
-                     "buggy system round function")
-    def test_round_large(self):
-        # Issue #1869: integral floats should remain unchanged
-        self.assertEqual(round(5e15-1), 5e15-1)
-        self.assertEqual(round(5e15), 5e15)
-        self.assertEqual(round(5e15+1), 5e15+1)
-        self.assertEqual(round(5e15+2), 5e15+2)
-        self.assertEqual(round(5e15+3), 5e15+3)
-
-    def test_setattr(self):
-        setattr(sys, 'spam', 1)
-        self.assertEqual(sys.spam, 1)
-        self.assertRaises(TypeError, setattr, sys, 1, 'spam')
-        self.assertRaises(TypeError, setattr)
-
-    def test_sum(self):
-        self.assertEqual(sum([]), 0)
-        self.assertEqual(sum(range(2,8)), 27)
-        self.assertEqual(sum(iter(range(2,8))), 27)
-        self.assertEqual(sum(Squares(10)), 285)
-        self.assertEqual(sum(iter(Squares(10))), 285)
-        self.assertEqual(sum([[1], [2], [3]], []), [1, 2, 3])
-
-        self.assertRaises(TypeError, sum)
-        self.assertRaises(TypeError, sum, 42)
-        self.assertRaises(TypeError, sum, ['a', 'b', 'c'])
-        self.assertRaises(TypeError, sum, ['a', 'b', 'c'], '')
-        self.assertRaises(TypeError, sum, [[1], [2], [3]])
-        self.assertRaises(TypeError, sum, [{2:3}])
-        self.assertRaises(TypeError, sum, [{2:3}]*2, {2:3})
-
-        class BadSeq:
-            def __getitem__(self, index):
-                raise ValueError
-        self.assertRaises(ValueError, sum, BadSeq())
-
-        empty = []
-        sum(([x] for x in range(10)), empty)
-        self.assertEqual(empty, [])
-
-    def test_type(self):
-        self.assertEqual(type(''),  type('123'))
-        self.assertNotEqual(type(''), type(()))
-
-    def test_unichr(self):
-        if have_unicode:
-            self.assertEqual(unichr(32), unicode(' '))
-            self.assertEqual(unichr(65), unicode('A'))
-            self.assertEqual(unichr(97), unicode('a'))
-            self.assertEqual(
-                unichr(sys.maxunicode),
-                unicode('\\U%08x' % (sys.maxunicode), 'unicode-escape')
-            )
-            self.assertRaises(ValueError, unichr, sys.maxunicode+1)
-            self.assertRaises(TypeError, unichr)
-            self.assertRaises((OverflowError, ValueError), unichr, 2**32)
-
-    # We don't want self in vars(), so these are static methods
-
-    @staticmethod
-    def get_vars_f0():
-        return vars()
-
-    @staticmethod
-    def get_vars_f2():
-        BuiltinTest.get_vars_f0()
-        a = 1
-        b = 2
-        return vars()
-
-    class C_get_vars(object):
-        def getDict(self):
-            return {'a':2}
-        __dict__ = property(fget=getDict)
-
-    def test_vars(self):
-        self.assertEqual(set(vars()), set(dir()))
-        import sys
-        self.assertEqual(set(vars(sys)), set(dir(sys)))
-        self.assertEqual(self.get_vars_f0(), {})
-        self.assertEqual(self.get_vars_f2(), {'a': 1, 'b': 2})
-        self.assertRaises(TypeError, vars, 42, 42)
-        self.assertRaises(TypeError, vars, 42)
-        self.assertEqual(vars(self.C_get_vars()), {'a':2})
-
-    def test_zip(self):
-        a = (1, 2, 3)
-        b = (4, 5, 6)
-        t = [(1, 4), (2, 5), (3, 6)]
-        self.assertEqual(zip(a, b), t)
-        b = [4, 5, 6]
-        self.assertEqual(zip(a, b), t)
-        b = (4, 5, 6, 7)
-        self.assertEqual(zip(a, b), t)
-        class I:
-            def __getitem__(self, i):
-                if i < 0 or i > 2: raise IndexError
-                return i + 4
-        self.assertEqual(zip(a, I()), t)
-        self.assertEqual(zip(), [])
-        self.assertEqual(zip(*[]), [])
-        self.assertRaises(TypeError, zip, None)
-        class G:
-            pass
-        self.assertRaises(TypeError, zip, a, G())
-
-        # Make sure zip doesn't try to allocate a billion elements for the
-        # result list when one of its arguments doesn't say how long it is.
-        # A MemoryError is the most likely failure mode.
-        class SequenceWithoutALength:
-            def __getitem__(self, i):
-                if i == 5:
-                    raise IndexError
-                else:
-                    return i
-        self.assertEqual(
-            zip(SequenceWithoutALength(), xrange(2**30)),
-            list(enumerate(range(5)))
-        )
-
-        class BadSeq:
-            def __getitem__(self, i):
-                if i == 5:
-                    raise ValueError
-                else:
-                    return i
-        self.assertRaises(ValueError, zip, BadSeq(), BadSeq())
-
-    def test_format(self):
-        # Test the basic machinery of the format() builtin.  Don't test
-        #  the specifics of the various formatters
-        self.assertEqual(format(3, ''), '3')
-
-        # Returns some classes to use for various tests.  There's
-        #  an old-style version, and a new-style version
-        def classes_new():
-            class A(object):
-                def __init__(self, x):
-                    self.x = x
-                def __format__(self, format_spec):
-                    return str(self.x) + format_spec
-            class DerivedFromA(A):
-                pass
-
-            class Simple(object): pass
-            class DerivedFromSimple(Simple):
-                def __init__(self, x):
-                    self.x = x
-                def __format__(self, format_spec):
-                    return str(self.x) + format_spec
-            class DerivedFromSimple2(DerivedFromSimple): pass
-            return A, DerivedFromA, DerivedFromSimple, DerivedFromSimple2
-
-        # In 3.0, classes_classic has the same meaning as classes_new
-        def classes_classic():
-            class A:
-                def __init__(self, x):
-                    self.x = x
-                def __format__(self, format_spec):
-                    return str(self.x) + format_spec
-            class DerivedFromA(A):
-                pass
-
-            class Simple: pass
-            class DerivedFromSimple(Simple):
-                def __init__(self, x):
-                    self.x = x
-                def __format__(self, format_spec):
-                    return str(self.x) + format_spec
-            class DerivedFromSimple2(DerivedFromSimple): pass
-            return A, DerivedFromA, DerivedFromSimple, DerivedFromSimple2
-
-        def class_test(A, DerivedFromA, DerivedFromSimple, DerivedFromSimple2):
-            self.assertEqual(format(A(3), 'spec'), '3spec')
-            self.assertEqual(format(DerivedFromA(4), 'spec'), '4spec')
-            self.assertEqual(format(DerivedFromSimple(5), 'abc'), '5abc')
-            self.assertEqual(format(DerivedFromSimple2(10), 'abcdef'),
-                             '10abcdef')
-
-        class_test(*classes_new())
-        class_test(*classes_classic())
-
-        def empty_format_spec(value):
-            # test that:
-            #  format(x, '') == str(x)
-            #  format(x) == str(x)
-            self.assertEqual(format(value, ""), str(value))
-            self.assertEqual(format(value), str(value))
-
-        # for builtin types, format(x, "") == str(x)
-        empty_format_spec(17**13)
-        empty_format_spec(1.0)
-        empty_format_spec(3.1415e104)
-        empty_format_spec(-3.1415e104)
-        empty_format_spec(3.1415e-104)
-        empty_format_spec(-3.1415e-104)
-        empty_format_spec(object)
-        empty_format_spec(None)
-
-        # TypeError because self.__format__ returns the wrong type
-        class BadFormatResult:
-            def __format__(self, format_spec):
-                return 1.0
-        self.assertRaises(TypeError, format, BadFormatResult(), "")
-
-        # TypeError because format_spec is not unicode or str
-        self.assertRaises(TypeError, format, object(), 4)
-        self.assertRaises(TypeError, format, object(), object())
-
-        # tests for object.__format__ really belong elsewhere, but
-        #  there's no good place to put them
-        x = object().__format__('')
-        self.assertTrue(x.startswith('<object object at'))
-
-        # first argument to object.__format__ must be string
-        self.assertRaises(TypeError, object().__format__, 3)
-        self.assertRaises(TypeError, object().__format__, object())
-        self.assertRaises(TypeError, object().__format__, None)
-
-        # --------------------------------------------------------------------
-        # Issue #7994: object.__format__ with a non-empty format string is
-        #  pending deprecated
-        def test_deprecated_format_string(obj, fmt_str, should_raise_warning):
-            with warnings.catch_warnings(record=True) as w:
-                warnings.simplefilter("always", PendingDeprecationWarning)
-                format(obj, fmt_str)
-            if should_raise_warning:
-                self.assertEqual(len(w), 1)
-                self.assertIsInstance(w[0].message, PendingDeprecationWarning)
-                self.assertIn('object.__format__ with a non-empty format '
-                              'string', str(w[0].message))
-            else:
-                self.assertEqual(len(w), 0)
-
-        fmt_strs = ['', 's', u'', u's']
-
-        class A:
-            def __format__(self, fmt_str):
-                return format('', fmt_str)
-
-        for fmt_str in fmt_strs:
-            test_deprecated_format_string(A(), fmt_str, False)
-
-        class B:
-            pass
-
-        class C(object):
-            pass
-
-        for cls in [object, B, C]:
-            for fmt_str in fmt_strs:
-                test_deprecated_format_string(cls(), fmt_str, len(fmt_str) != 0)
-        # --------------------------------------------------------------------
-
-        # make sure we can take a subclass of str as a format spec
-        class DerivedFromStr(str): pass
-        self.assertEqual(format(0, DerivedFromStr('10')), '         0')
-
-    def test_bin(self):
-        self.assertEqual(bin(0), '0b0')
-        self.assertEqual(bin(1), '0b1')
-        self.assertEqual(bin(-1), '-0b1')
-        self.assertEqual(bin(2**65), '0b1' + '0' * 65)
-        self.assertEqual(bin(2**65-1), '0b' + '1' * 65)
-        self.assertEqual(bin(-(2**65)), '-0b1' + '0' * 65)
-        self.assertEqual(bin(-(2**65-1)), '-0b' + '1' * 65)
-
-    def test_bytearray_translate(self):
-        x = bytearray("abc")
-        self.assertRaises(ValueError, x.translate, "1", 1)
-        self.assertRaises(TypeError, x.translate, "1"*256, 1)
-
-class TestSorted(unittest.TestCase):
-
-    def test_basic(self):
-        data = range(100)
-        copy = data[:]
-        random.shuffle(copy)
-        self.assertEqual(data, sorted(copy))
-        self.assertNotEqual(data, copy)
-
-        data.reverse()
-        random.shuffle(copy)
-        self.assertEqual(data, sorted(copy, cmp=lambda x, y: cmp(y,x)))
-        self.assertNotEqual(data, copy)
-        random.shuffle(copy)
-        self.assertEqual(data, sorted(copy, key=lambda x: -x))
-        self.assertNotEqual(data, copy)
-        random.shuffle(copy)
-        self.assertEqual(data, sorted(copy, reverse=1))
-        self.assertNotEqual(data, copy)
-
-    def test_inputtypes(self):
-        s = 'abracadabra'
-        types = [list, tuple]
-        if have_unicode:
-            types.insert(0, unicode)
-        for T in types:
-            self.assertEqual(sorted(s), sorted(T(s)))
-
-        s = ''.join(dict.fromkeys(s).keys())  # unique letters only
-        types = [set, frozenset, list, tuple, dict.fromkeys]
-        if have_unicode:
-            types.insert(0, unicode)
-        for T in types:
-            self.assertEqual(sorted(s), sorted(T(s)))
-
-    def test_baddecorator(self):
-        data = 'The quick Brown fox Jumped over The lazy Dog'.split()
-        self.assertRaises(TypeError, sorted, data, None, lambda x,y: 0)
-
-def _run_unittest(*args):
-    with check_py3k_warnings(
-            (".+ not supported in 3.x", DeprecationWarning),
-            (".+ is renamed to imp.reload", DeprecationWarning),
-            ("classic int division", DeprecationWarning)):
-        run_unittest(*args)
-
-def test_main(verbose=None):
-    test_classes = (BuiltinTest, TestSorted)
-
-    _run_unittest(*test_classes)
-
-    # verify reference counting
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        import gc
-        counts = [None] * 5
-        for i in xrange(len(counts)):
-            _run_unittest(*test_classes)
-            gc.collect()
-            counts[i] = sys.gettotalrefcount()
-        print counts
-
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bytes.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bytes.py
deleted file mode 100644
index 617c4b3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bytes.py
+++ /dev/null
@@ -1,1119 +0,0 @@
-"""Unit tests for the bytes and bytearray types.
-
-XXX This is a mess.  Common tests should be moved to buffer_tests.py,
-which itself ought to be unified with string_tests.py (and the latter
-should be modernized).
-"""
-
-import os
-import re
-import sys
-import copy
-import functools
-import pickle
-import tempfile
-import unittest
-import test.test_support
-import test.string_tests
-import test.buffer_tests
-
-
-if sys.flags.bytes_warning:
-    def check_bytes_warnings(func):
-        @functools.wraps(func)
-        def wrapper(*args, **kw):
-            with test.test_support.check_warnings(('', BytesWarning)):
-                return func(*args, **kw)
-        return wrapper
-else:
-    # no-op
-    def check_bytes_warnings(func):
-        return func
-
-
-class Indexable:
-    def __init__(self, value=0):
-        self.value = value
-    def __index__(self):
-        return self.value
-
-
-class BaseBytesTest(unittest.TestCase):
-
-    def test_basics(self):
-        b = self.type2test()
-        self.assertEqual(type(b), self.type2test)
-        self.assertEqual(b.__class__, self.type2test)
-
-    def test_empty_sequence(self):
-        b = self.type2test()
-        self.assertEqual(len(b), 0)
-        self.assertRaises(IndexError, lambda: b[0])
-        self.assertRaises(IndexError, lambda: b[1])
-        self.assertRaises(IndexError, lambda: b[sys.maxint])
-        self.assertRaises(IndexError, lambda: b[sys.maxint+1])
-        self.assertRaises(IndexError, lambda: b[10**100])
-        self.assertRaises(IndexError, lambda: b[-1])
-        self.assertRaises(IndexError, lambda: b[-2])
-        self.assertRaises(IndexError, lambda: b[-sys.maxint])
-        self.assertRaises(IndexError, lambda: b[-sys.maxint-1])
-        self.assertRaises(IndexError, lambda: b[-sys.maxint-2])
-        self.assertRaises(IndexError, lambda: b[-10**100])
-
-    def test_from_list(self):
-        ints = list(range(256))
-        b = self.type2test(i for i in ints)
-        self.assertEqual(len(b), 256)
-        self.assertEqual(list(b), ints)
-
-    def test_from_index(self):
-        b = self.type2test([Indexable(), Indexable(1), Indexable(254),
-                            Indexable(255)])
-        self.assertEqual(list(b), [0, 1, 254, 255])
-        self.assertRaises(ValueError, self.type2test, [Indexable(-1)])
-        self.assertRaises(ValueError, self.type2test, [Indexable(256)])
-
-    def test_from_ssize(self):
-        self.assertEqual(self.type2test(0), b'')
-        self.assertEqual(self.type2test(1), b'\x00')
-        self.assertEqual(self.type2test(5), b'\x00\x00\x00\x00\x00')
-        self.assertRaises(ValueError, self.type2test, -1)
-
-        self.assertEqual(self.type2test('0', 'ascii'), b'0')
-        self.assertEqual(self.type2test(b'0'), b'0')
-        self.assertRaises(OverflowError, self.type2test, sys.maxsize + 1)
-
-    def test_constructor_type_errors(self):
-        self.assertRaises(TypeError, self.type2test, 0.0)
-        class C:
-            pass
-        # allowed in 2.x
-        #self.assertRaises(TypeError, self.type2test, ["0"])
-        self.assertRaises(TypeError, self.type2test, [0.0])
-        self.assertRaises(TypeError, self.type2test, [None])
-        self.assertRaises(TypeError, self.type2test, [C()])
-
-    def test_constructor_value_errors(self):
-        self.assertRaises(ValueError, self.type2test, [-1])
-        self.assertRaises(ValueError, self.type2test, [-sys.maxint])
-        self.assertRaises(ValueError, self.type2test, [-sys.maxint-1])
-        self.assertRaises(ValueError, self.type2test, [-sys.maxint-2])
-        self.assertRaises(ValueError, self.type2test, [-10**100])
-        self.assertRaises(ValueError, self.type2test, [256])
-        self.assertRaises(ValueError, self.type2test, [257])
-        self.assertRaises(ValueError, self.type2test, [sys.maxint])
-        self.assertRaises(ValueError, self.type2test, [sys.maxint+1])
-        self.assertRaises(ValueError, self.type2test, [10**100])
-
-    def test_compare(self):
-        b1 = self.type2test([1, 2, 3])
-        b2 = self.type2test([1, 2, 3])
-        b3 = self.type2test([1, 3])
-
-        self.assertEqual(b1, b2)
-        self.assertTrue(b2 != b3)
-        self.assertTrue(b1 <= b2)
-        self.assertTrue(b1 <= b3)
-        self.assertTrue(b1 <  b3)
-        self.assertTrue(b1 >= b2)
-        self.assertTrue(b3 >= b2)
-        self.assertTrue(b3 >  b2)
-
-        self.assertFalse(b1 != b2)
-        self.assertFalse(b2 == b3)
-        self.assertFalse(b1 >  b2)
-        self.assertFalse(b1 >  b3)
-        self.assertFalse(b1 >= b3)
-        self.assertFalse(b1 <  b2)
-        self.assertFalse(b3 <  b2)
-        self.assertFalse(b3 <= b2)
-
-    @check_bytes_warnings
-    def test_compare_to_str(self):
-        # Byte comparisons with unicode should always fail!
-        # Test this for all expected byte orders and Unicode character sizes
-        self.assertEqual(self.type2test(b"\0a\0b\0c") == u"abc", False)
-        self.assertEqual(self.type2test(b"\0\0\0a\0\0\0b\0\0\0c") == u"abc", False)
-        self.assertEqual(self.type2test(b"a\0b\0c\0") == u"abc", False)
-        self.assertEqual(self.type2test(b"a\0\0\0b\0\0\0c\0\0\0") == u"abc", False)
-        self.assertEqual(self.type2test() == unicode(), False)
-        self.assertEqual(self.type2test() != unicode(), True)
-
-    def test_reversed(self):
-        input = list(map(ord, "Hello"))
-        b = self.type2test(input)
-        output = list(reversed(b))
-        input.reverse()
-        self.assertEqual(output, input)
-
-    def test_getslice(self):
-        def by(s):
-            return self.type2test(map(ord, s))
-        b = by("Hello, world")
-
-        self.assertEqual(b[:5], by("Hello"))
-        self.assertEqual(b[1:5], by("ello"))
-        self.assertEqual(b[5:7], by(", "))
-        self.assertEqual(b[7:], by("world"))
-        self.assertEqual(b[7:12], by("world"))
-        self.assertEqual(b[7:100], by("world"))
-
-        self.assertEqual(b[:-7], by("Hello"))
-        self.assertEqual(b[-11:-7], by("ello"))
-        self.assertEqual(b[-7:-5], by(", "))
-        self.assertEqual(b[-5:], by("world"))
-        self.assertEqual(b[-5:12], by("world"))
-        self.assertEqual(b[-5:100], by("world"))
-        self.assertEqual(b[-100:5], by("Hello"))
-
-    def test_extended_getslice(self):
-        # Test extended slicing by comparing with list slicing.
-        L = list(range(255))
-        b = self.type2test(L)
-        indices = (0, None, 1, 3, 19, 100, -1, -2, -31, -100)
-        for start in indices:
-            for stop in indices:
-                # Skip step 0 (invalid)
-                for step in indices[1:]:
-                    self.assertEqual(b[start:stop:step], self.type2test(L[start:stop:step]))
-
-    def test_encoding(self):
-        sample = u"Hello world\n\u1234\u5678\u9abc\udef0"
-        for enc in ("utf8", "utf16"):
-            b = self.type2test(sample, enc)
-            self.assertEqual(b, self.type2test(sample.encode(enc)))
-        self.assertRaises(UnicodeEncodeError, self.type2test, sample, "latin1")
-        b = self.type2test(sample, "latin1", "ignore")
-        self.assertEqual(b, self.type2test(sample[:-4], "utf-8"))
-
-    def test_decode(self):
-        sample = u"Hello world\n\u1234\u5678\u9abc\def0\def0"
-        for enc in ("utf8", "utf16"):
-            b = self.type2test(sample, enc)
-            self.assertEqual(b.decode(enc), sample)
-        sample = u"Hello world\n\x80\x81\xfe\xff"
-        b = self.type2test(sample, "latin1")
-        self.assertRaises(UnicodeDecodeError, b.decode, "utf8")
-        self.assertEqual(b.decode("utf8", "ignore"), "Hello world\n")
-        self.assertEqual(b.decode(errors="ignore", encoding="utf8"),
-                         "Hello world\n")
-
-    def test_from_int(self):
-        b = self.type2test(0)
-        self.assertEqual(b, self.type2test())
-        b = self.type2test(10)
-        self.assertEqual(b, self.type2test([0]*10))
-        b = self.type2test(10000)
-        self.assertEqual(b, self.type2test([0]*10000))
-
-    def test_concat(self):
-        b1 = self.type2test(b"abc")
-        b2 = self.type2test(b"def")
-        self.assertEqual(b1 + b2, b"abcdef")
-        self.assertEqual(b1 + bytes(b"def"), b"abcdef")
-        self.assertEqual(bytes(b"def") + b1, b"defabc")
-        self.assertRaises(TypeError, lambda: b1 + u"def")
-        self.assertRaises(TypeError, lambda: u"abc" + b2)
-
-    def test_repeat(self):
-        for b in b"abc", self.type2test(b"abc"):
-            self.assertEqual(b * 3, b"abcabcabc")
-            self.assertEqual(b * 0, b"")
-            self.assertEqual(b * -1, b"")
-            self.assertRaises(TypeError, lambda: b * 3.14)
-            self.assertRaises(TypeError, lambda: 3.14 * b)
-            # XXX Shouldn't bytes and bytearray agree on what to raise?
-            self.assertRaises((OverflowError, MemoryError),
-                              lambda: b * sys.maxsize)
-
-    def test_repeat_1char(self):
-        self.assertEqual(self.type2test(b'x')*100, self.type2test([ord('x')]*100))
-
-    def test_contains(self):
-        b = self.type2test(b"abc")
-        self.assertIn(ord('a'), b)
-        self.assertIn(int(ord('a')), b)
-        self.assertNotIn(200, b)
-        self.assertRaises(ValueError, lambda: 300 in b)
-        self.assertRaises(ValueError, lambda: -1 in b)
-        self.assertRaises(TypeError, lambda: None in b)
-        self.assertRaises(TypeError, lambda: float(ord('a')) in b)
-        self.assertRaises(TypeError, lambda: u"a" in b)
-        for f in bytes, bytearray:
-            self.assertIn(f(b""), b)
-            self.assertIn(f(b"a"), b)
-            self.assertIn(f(b"b"), b)
-            self.assertIn(f(b"c"), b)
-            self.assertIn(f(b"ab"), b)
-            self.assertIn(f(b"bc"), b)
-            self.assertIn(f(b"abc"), b)
-            self.assertNotIn(f(b"ac"), b)
-            self.assertNotIn(f(b"d"), b)
-            self.assertNotIn(f(b"dab"), b)
-            self.assertNotIn(f(b"abd"), b)
-
-    def test_fromhex(self):
-        self.assertRaises(TypeError, self.type2test.fromhex)
-        self.assertRaises(TypeError, self.type2test.fromhex, 1)
-        self.assertEqual(self.type2test.fromhex(u''), self.type2test())
-        b = bytearray([0x1a, 0x2b, 0x30])
-        self.assertEqual(self.type2test.fromhex(u'1a2B30'), b)
-        self.assertEqual(self.type2test.fromhex(u'  1A 2B  30   '), b)
-        self.assertEqual(self.type2test.fromhex(u'0000'), b'\0\0')
-        self.assertRaises(ValueError, self.type2test.fromhex, u'a')
-        self.assertRaises(ValueError, self.type2test.fromhex, u'rt')
-        self.assertRaises(ValueError, self.type2test.fromhex, u'1a b cd')
-        self.assertRaises(ValueError, self.type2test.fromhex, u'\x00')
-        self.assertRaises(ValueError, self.type2test.fromhex, u'12   \x00   34')
-
-    def test_join(self):
-        self.assertEqual(self.type2test(b"").join([]), b"")
-        self.assertEqual(self.type2test(b"").join([b""]), b"")
-        for lst in [[b"abc"], [b"a", b"bc"], [b"ab", b"c"], [b"a", b"b", b"c"]]:
-            lst = list(map(self.type2test, lst))
-            self.assertEqual(self.type2test(b"").join(lst), b"abc")
-            self.assertEqual(self.type2test(b"").join(tuple(lst)), b"abc")
-            self.assertEqual(self.type2test(b"").join(iter(lst)), b"abc")
-        self.assertEqual(self.type2test(b".").join([b"ab", b"cd"]), b"ab.cd")
-        # XXX more...
-
-    def test_count(self):
-        b = self.type2test(b'mississippi')
-        self.assertEqual(b.count(b'i'), 4)
-        self.assertEqual(b.count(b'ss'), 2)
-        self.assertEqual(b.count(b'w'), 0)
-
-    def test_startswith(self):
-        b = self.type2test(b'hello')
-        self.assertFalse(self.type2test().startswith(b"anything"))
-        self.assertTrue(b.startswith(b"hello"))
-        self.assertTrue(b.startswith(b"hel"))
-        self.assertTrue(b.startswith(b"h"))
-        self.assertFalse(b.startswith(b"hellow"))
-        self.assertFalse(b.startswith(b"ha"))
-
-    def test_endswith(self):
-        b = self.type2test(b'hello')
-        self.assertFalse(bytearray().endswith(b"anything"))
-        self.assertTrue(b.endswith(b"hello"))
-        self.assertTrue(b.endswith(b"llo"))
-        self.assertTrue(b.endswith(b"o"))
-        self.assertFalse(b.endswith(b"whello"))
-        self.assertFalse(b.endswith(b"no"))
-
-    def test_find(self):
-        b = self.type2test(b'mississippi')
-        self.assertEqual(b.find(b'ss'), 2)
-        self.assertEqual(b.find(b'ss', 3), 5)
-        self.assertEqual(b.find(b'ss', 1, 7), 2)
-        self.assertEqual(b.find(b'ss', 1, 3), -1)
-        self.assertEqual(b.find(b'w'), -1)
-        self.assertEqual(b.find(b'mississippian'), -1)
-
-    def test_rfind(self):
-        b = self.type2test(b'mississippi')
-        self.assertEqual(b.rfind(b'ss'), 5)
-        self.assertEqual(b.rfind(b'ss', 3), 5)
-        self.assertEqual(b.rfind(b'ss', 0, 6), 2)
-        self.assertEqual(b.rfind(b'w'), -1)
-        self.assertEqual(b.rfind(b'mississippian'), -1)
-
-    def test_index(self):
-        b = self.type2test(b'world')
-        self.assertEqual(b.index(b'w'), 0)
-        self.assertEqual(b.index(b'orl'), 1)
-        self.assertRaises(ValueError, b.index, b'worm')
-        self.assertRaises(ValueError, b.index, b'ldo')
-
-    def test_rindex(self):
-        # XXX could be more rigorous
-        b = self.type2test(b'world')
-        self.assertEqual(b.rindex(b'w'), 0)
-        self.assertEqual(b.rindex(b'orl'), 1)
-        self.assertRaises(ValueError, b.rindex, b'worm')
-        self.assertRaises(ValueError, b.rindex, b'ldo')
-
-    def test_replace(self):
-        b = self.type2test(b'mississippi')
-        self.assertEqual(b.replace(b'i', b'a'), b'massassappa')
-        self.assertEqual(b.replace(b'ss', b'x'), b'mixixippi')
-
-    def test_split(self):
-        b = self.type2test(b'mississippi')
-        self.assertEqual(b.split(b'i'), [b'm', b'ss', b'ss', b'pp', b''])
-        self.assertEqual(b.split(b'ss'), [b'mi', b'i', b'ippi'])
-        self.assertEqual(b.split(b'w'), [b])
-
-    def test_split_whitespace(self):
-        for b in (b'  arf  barf  ', b'arf\tbarf', b'arf\nbarf', b'arf\rbarf',
-                  b'arf\fbarf', b'arf\vbarf'):
-            b = self.type2test(b)
-            self.assertEqual(b.split(), [b'arf', b'barf'])
-            self.assertEqual(b.split(None), [b'arf', b'barf'])
-            self.assertEqual(b.split(None, 2), [b'arf', b'barf'])
-        for b in (b'a\x1Cb', b'a\x1Db', b'a\x1Eb', b'a\x1Fb'):
-            b = self.type2test(b)
-            self.assertEqual(b.split(), [b])
-        self.assertEqual(self.type2test(b'  a  bb  c  ').split(None, 0), [b'a  bb  c  '])
-        self.assertEqual(self.type2test(b'  a  bb  c  ').split(None, 1), [b'a', b'bb  c  '])
-        self.assertEqual(self.type2test(b'  a  bb  c  ').split(None, 2), [b'a', b'bb', b'c  '])
-        self.assertEqual(self.type2test(b'  a  bb  c  ').split(None, 3), [b'a', b'bb', b'c'])
-
-    def test_split_string_error(self):
-        self.assertRaises(TypeError, self.type2test(b'a b').split, u' ')
-
-    def test_split_unicodewhitespace(self):
-        b = self.type2test(b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F")
-        self.assertEqual(b.split(), [b'\x1c\x1d\x1e\x1f'])
-
-    def test_rsplit(self):
-        b = self.type2test(b'mississippi')
-        self.assertEqual(b.rsplit(b'i'), [b'm', b'ss', b'ss', b'pp', b''])
-        self.assertEqual(b.rsplit(b'ss'), [b'mi', b'i', b'ippi'])
-        self.assertEqual(b.rsplit(b'w'), [b])
-
-    def test_rsplit_whitespace(self):
-        for b in (b'  arf  barf  ', b'arf\tbarf', b'arf\nbarf', b'arf\rbarf',
-                  b'arf\fbarf', b'arf\vbarf'):
-            b = self.type2test(b)
-            self.assertEqual(b.rsplit(), [b'arf', b'barf'])
-            self.assertEqual(b.rsplit(None), [b'arf', b'barf'])
-            self.assertEqual(b.rsplit(None, 2), [b'arf', b'barf'])
-        self.assertEqual(self.type2test(b'  a  bb  c  ').rsplit(None, 0), [b'  a  bb  c'])
-        self.assertEqual(self.type2test(b'  a  bb  c  ').rsplit(None, 1), [b'  a  bb', b'c'])
-        self.assertEqual(self.type2test(b'  a  bb  c  ').rsplit(None, 2), [b'  a', b'bb', b'c'])
-        self.assertEqual(self.type2test(b'  a  bb  c  ').rsplit(None, 3), [b'a', b'bb', b'c'])
-
-    def test_rsplit_string_error(self):
-        self.assertRaises(TypeError, self.type2test(b'a b').rsplit, u' ')
-
-    def test_rsplit_unicodewhitespace(self):
-        b = self.type2test(b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F")
-        self.assertEqual(b.rsplit(), [b'\x1c\x1d\x1e\x1f'])
-
-    def test_partition(self):
-        b = self.type2test(b'mississippi')
-        self.assertEqual(b.partition(b'ss'), (b'mi', b'ss', b'issippi'))
-        self.assertEqual(b.partition(b'w'), (b'mississippi', b'', b''))
-
-    def test_rpartition(self):
-        b = self.type2test(b'mississippi')
-        self.assertEqual(b.rpartition(b'ss'), (b'missi', b'ss', b'ippi'))
-        self.assertEqual(b.rpartition(b'i'), (b'mississipp', b'i', b''))
-        self.assertEqual(b.rpartition(b'w'), (b'', b'', b'mississippi'))
-
-    def test_pickling(self):
-        for proto in range(pickle.HIGHEST_PROTOCOL + 1):
-            for b in b"", b"a", b"abc", b"\xffab\x80", b"\0\0\377\0\0":
-                b = self.type2test(b)
-                ps = pickle.dumps(b, proto)
-                q = pickle.loads(ps)
-                self.assertEqual(b, q)
-
-    def test_strip(self):
-        b = self.type2test(b'mississippi')
-        self.assertEqual(b.strip(b'i'), b'mississipp')
-        self.assertEqual(b.strip(b'm'), b'ississippi')
-        self.assertEqual(b.strip(b'pi'), b'mississ')
-        self.assertEqual(b.strip(b'im'), b'ssissipp')
-        self.assertEqual(b.strip(b'pim'), b'ssiss')
-        self.assertEqual(b.strip(b), b'')
-
-    def test_lstrip(self):
-        b = self.type2test(b'mississippi')
-        self.assertEqual(b.lstrip(b'i'), b'mississippi')
-        self.assertEqual(b.lstrip(b'm'), b'ississippi')
-        self.assertEqual(b.lstrip(b'pi'), b'mississippi')
-        self.assertEqual(b.lstrip(b'im'), b'ssissippi')
-        self.assertEqual(b.lstrip(b'pim'), b'ssissippi')
-
-    def test_rstrip(self):
-        b = self.type2test(b'mississippi')
-        self.assertEqual(b.rstrip(b'i'), b'mississipp')
-        self.assertEqual(b.rstrip(b'm'), b'mississippi')
-        self.assertEqual(b.rstrip(b'pi'), b'mississ')
-        self.assertEqual(b.rstrip(b'im'), b'mississipp')
-        self.assertEqual(b.rstrip(b'pim'), b'mississ')
-
-    def test_strip_whitespace(self):
-        b = self.type2test(b' \t\n\r\f\vabc \t\n\r\f\v')
-        self.assertEqual(b.strip(), b'abc')
-        self.assertEqual(b.lstrip(), b'abc \t\n\r\f\v')
-        self.assertEqual(b.rstrip(), b' \t\n\r\f\vabc')
-
-    def test_strip_bytearray(self):
-        self.assertEqual(self.type2test(b'abc').strip(memoryview(b'ac')), b'b')
-        self.assertEqual(self.type2test(b'abc').lstrip(memoryview(b'ac')), b'bc')
-        self.assertEqual(self.type2test(b'abc').rstrip(memoryview(b'ac')), b'ab')
-
-    def test_strip_string_error(self):
-        self.assertRaises(TypeError, self.type2test(b'abc').strip, u'b')
-        self.assertRaises(TypeError, self.type2test(b'abc').lstrip, u'b')
-        self.assertRaises(TypeError, self.type2test(b'abc').rstrip, u'b')
-
-    def test_ord(self):
-        b = self.type2test(b'\0A\x7f\x80\xff')
-        self.assertEqual([ord(b[i:i+1]) for i in range(len(b))],
-                         [0, 65, 127, 128, 255])
-
-    def test_none_arguments(self):
-        # issue 11828
-        b = self.type2test(b'hello')
-        l = self.type2test(b'l')
-        h = self.type2test(b'h')
-        x = self.type2test(b'x')
-        o = self.type2test(b'o')
-
-        self.assertEqual(2, b.find(l, None))
-        self.assertEqual(3, b.find(l, -2, None))
-        self.assertEqual(2, b.find(l, None, -2))
-        self.assertEqual(0, b.find(h, None, None))
-
-        self.assertEqual(3, b.rfind(l, None))
-        self.assertEqual(3, b.rfind(l, -2, None))
-        self.assertEqual(2, b.rfind(l, None, -2))
-        self.assertEqual(0, b.rfind(h, None, None))
-
-        self.assertEqual(2, b.index(l, None))
-        self.assertEqual(3, b.index(l, -2, None))
-        self.assertEqual(2, b.index(l, None, -2))
-        self.assertEqual(0, b.index(h, None, None))
-
-        self.assertEqual(3, b.rindex(l, None))
-        self.assertEqual(3, b.rindex(l, -2, None))
-        self.assertEqual(2, b.rindex(l, None, -2))
-        self.assertEqual(0, b.rindex(h, None, None))
-
-        self.assertEqual(2, b.count(l, None))
-        self.assertEqual(1, b.count(l, -2, None))
-        self.assertEqual(1, b.count(l, None, -2))
-        self.assertEqual(0, b.count(x, None, None))
-
-        self.assertEqual(True, b.endswith(o, None))
-        self.assertEqual(True, b.endswith(o, -2, None))
-        self.assertEqual(True, b.endswith(l, None, -2))
-        self.assertEqual(False, b.endswith(x, None, None))
-
-        self.assertEqual(True, b.startswith(h, None))
-        self.assertEqual(True, b.startswith(l, -2, None))
-        self.assertEqual(True, b.startswith(h, None, -2))
-        self.assertEqual(False, b.startswith(x, None, None))
-
-    def test_find_etc_raise_correct_error_messages(self):
-        # issue 11828
-        b = self.type2test(b'hello')
-        x = self.type2test(b'x')
-        self.assertRaisesRegexp(TypeError, r'\bfind\b', b.find,
-                                x, None, None, None)
-        self.assertRaisesRegexp(TypeError, r'\brfind\b', b.rfind,
-                                x, None, None, None)
-        self.assertRaisesRegexp(TypeError, r'\bindex\b', b.index,
-                                x, None, None, None)
-        self.assertRaisesRegexp(TypeError, r'\brindex\b', b.rindex,
-                                x, None, None, None)
-        self.assertRaisesRegexp(TypeError, r'\bcount\b', b.count,
-                                x, None, None, None)
-        self.assertRaisesRegexp(TypeError, r'\bstartswith\b', b.startswith,
-                                x, None, None, None)
-        self.assertRaisesRegexp(TypeError, r'\bendswith\b', b.endswith,
-                                x, None, None, None)
-
-
-class ByteArrayTest(BaseBytesTest):
-    type2test = bytearray
-
-    def test_nohash(self):
-        self.assertRaises(TypeError, hash, bytearray())
-
-    def test_bytearray_api(self):
-        short_sample = b"Hello world\n"
-        sample = short_sample + b"\0"*(20 - len(short_sample))
-        tfn = tempfile.mktemp()
-        try:
-            # Prepare
-            with open(tfn, "wb") as f:
-                f.write(short_sample)
-            # Test readinto
-            with open(tfn, "rb") as f:
-                b = bytearray(20)
-                n = f.readinto(b)
-            self.assertEqual(n, len(short_sample))
-            # Python 2.x
-            b_sample = (ord(s) for s in sample)
-            self.assertEqual(list(b), list(b_sample))
-            # Test writing in binary mode
-            with open(tfn, "wb") as f:
-                f.write(b)
-            with open(tfn, "rb") as f:
-                self.assertEqual(f.read(), sample)
-            # Text mode is ambiguous; don't test
-        finally:
-            try:
-                os.remove(tfn)
-            except os.error:
-                pass
-
-    def test_reverse(self):
-        b = bytearray(b'hello')
-        self.assertEqual(b.reverse(), None)
-        self.assertEqual(b, b'olleh')
-        b = bytearray(b'hello1') # test even number of items
-        b.reverse()
-        self.assertEqual(b, b'1olleh')
-        b = bytearray()
-        b.reverse()
-        self.assertFalse(b)
-
-    def test_regexps(self):
-        def by(s):
-            return bytearray(map(ord, s))
-        b = by("Hello, world")
-        self.assertEqual(re.findall(r"\w+", b), [by("Hello"), by("world")])
-
-    def test_setitem(self):
-        b = bytearray([1, 2, 3])
-        b[1] = 100
-        self.assertEqual(b, bytearray([1, 100, 3]))
-        b[-1] = 200
-        self.assertEqual(b, bytearray([1, 100, 200]))
-        b[0] = Indexable(10)
-        self.assertEqual(b, bytearray([10, 100, 200]))
-        try:
-            b[3] = 0
-            self.fail("Didn't raise IndexError")
-        except IndexError:
-            pass
-        try:
-            b[-10] = 0
-            self.fail("Didn't raise IndexError")
-        except IndexError:
-            pass
-        try:
-            b[0] = 256
-            self.fail("Didn't raise ValueError")
-        except ValueError:
-            pass
-        try:
-            b[0] = Indexable(-1)
-            self.fail("Didn't raise ValueError")
-        except ValueError:
-            pass
-        try:
-            b[0] = None
-            self.fail("Didn't raise TypeError")
-        except TypeError:
-            pass
-
-    def test_delitem(self):
-        b = bytearray(range(10))
-        del b[0]
-        self.assertEqual(b, bytearray(range(1, 10)))
-        del b[-1]
-        self.assertEqual(b, bytearray(range(1, 9)))
-        del b[4]
-        self.assertEqual(b, bytearray([1, 2, 3, 4, 6, 7, 8]))
-
-    def test_setslice(self):
-        b = bytearray(range(10))
-        self.assertEqual(list(b), list(range(10)))
-
-        b[0:5] = bytearray([1, 1, 1, 1, 1])
-        self.assertEqual(b, bytearray([1, 1, 1, 1, 1, 5, 6, 7, 8, 9]))
-
-        del b[0:-5]
-        self.assertEqual(b, bytearray([5, 6, 7, 8, 9]))
-
-        b[0:0] = bytearray([0, 1, 2, 3, 4])
-        self.assertEqual(b, bytearray(range(10)))
-
-        b[-7:-3] = bytearray([100, 101])
-        self.assertEqual(b, bytearray([0, 1, 2, 100, 101, 7, 8, 9]))
-
-        b[3:5] = [3, 4, 5, 6]
-        self.assertEqual(b, bytearray(range(10)))
-
-        b[3:0] = [42, 42, 42]
-        self.assertEqual(b, bytearray([0, 1, 2, 42, 42, 42, 3, 4, 5, 6, 7, 8, 9]))
-
-    def test_extended_set_del_slice(self):
-        indices = (0, None, 1, 3, 19, 300, 1<<333, -1, -2, -31, -300)
-        for start in indices:
-            for stop in indices:
-                # Skip invalid step 0
-                for step in indices[1:]:
-                    L = list(range(255))
-                    b = bytearray(L)
-                    # Make sure we have a slice of exactly the right length,
-                    # but with different data.
-                    data = L[start:stop:step]
-                    data.reverse()
-                    L[start:stop:step] = data
-                    b[start:stop:step] = data
-                    self.assertEqual(b, bytearray(L))
-
-                    del L[start:stop:step]
-                    del b[start:stop:step]
-                    self.assertEqual(b, bytearray(L))
-
-    def test_setslice_trap(self):
-        # This test verifies that we correctly handle assigning self
-        # to a slice of self (the old Lambert Meertens trap).
-        b = bytearray(range(256))
-        b[8:] = b
-        self.assertEqual(b, bytearray(list(range(8)) + list(range(256))))
-
-    def test_iconcat(self):
-        b = bytearray(b"abc")
-        b1 = b
-        b += b"def"
-        self.assertEqual(b, b"abcdef")
-        self.assertEqual(b, b1)
-        self.assertTrue(b is b1)
-        b += b"xyz"
-        self.assertEqual(b, b"abcdefxyz")
-        try:
-            b += u""
-        except TypeError:
-            pass
-        else:
-            self.fail("bytes += unicode didn't raise TypeError")
-
-    def test_irepeat(self):
-        b = bytearray(b"abc")
-        b1 = b
-        b *= 3
-        self.assertEqual(b, b"abcabcabc")
-        self.assertEqual(b, b1)
-        self.assertTrue(b is b1)
-
-    def test_irepeat_1char(self):
-        b = bytearray(b"x")
-        b1 = b
-        b *= 100
-        self.assertEqual(b, b"x"*100)
-        self.assertEqual(b, b1)
-        self.assertTrue(b is b1)
-
-    def test_alloc(self):
-        b = bytearray()
-        alloc = b.__alloc__()
-        self.assertTrue(alloc >= 0)
-        seq = [alloc]
-        for i in range(100):
-            b += b"x"
-            alloc = b.__alloc__()
-            self.assertTrue(alloc >= len(b))
-            if alloc not in seq:
-                seq.append(alloc)
-
-    def test_extend(self):
-        orig = b'hello'
-        a = bytearray(orig)
-        a.extend(a)
-        self.assertEqual(a, orig + orig)
-        self.assertEqual(a[5:], orig)
-        a = bytearray(b'')
-        # Test iterators that don't have a __length_hint__
-        a.extend(map(ord, orig * 25))
-        a.extend(ord(x) for x in orig * 25)
-        self.assertEqual(a, orig * 50)
-        self.assertEqual(a[-5:], orig)
-        a = bytearray(b'')
-        a.extend(iter(map(ord, orig * 50)))
-        self.assertEqual(a, orig * 50)
-        self.assertEqual(a[-5:], orig)
-        a = bytearray(b'')
-        a.extend(list(map(ord, orig * 50)))
-        self.assertEqual(a, orig * 50)
-        self.assertEqual(a[-5:], orig)
-        a = bytearray(b'')
-        self.assertRaises(ValueError, a.extend, [0, 1, 2, 256])
-        self.assertRaises(ValueError, a.extend, [0, 1, 2, -1])
-        self.assertEqual(len(a), 0)
-        a = bytearray(b'')
-        a.extend([Indexable(ord('a'))])
-        self.assertEqual(a, b'a')
-
-    def test_remove(self):
-        b = bytearray(b'hello')
-        b.remove(ord('l'))
-        self.assertEqual(b, b'helo')
-        b.remove(ord('l'))
-        self.assertEqual(b, b'heo')
-        self.assertRaises(ValueError, lambda: b.remove(ord('l')))
-        self.assertRaises(ValueError, lambda: b.remove(400))
-        self.assertRaises(TypeError, lambda: b.remove(u'e'))
-        # remove first and last
-        b.remove(ord('o'))
-        b.remove(ord('h'))
-        self.assertEqual(b, b'e')
-        self.assertRaises(TypeError, lambda: b.remove(u'e'))
-        b.remove(Indexable(ord('e')))
-        self.assertEqual(b, b'')
-
-    def test_pop(self):
-        b = bytearray(b'world')
-        self.assertEqual(b.pop(), ord('d'))
-        self.assertEqual(b.pop(0), ord('w'))
-        self.assertEqual(b.pop(-2), ord('r'))
-        self.assertRaises(IndexError, lambda: b.pop(10))
-        self.assertRaises(IndexError, lambda: bytearray().pop())
-        # test for issue #6846
-        self.assertEqual(bytearray(b'\xff').pop(), 0xff)
-
-    def test_nosort(self):
-        self.assertRaises(AttributeError, lambda: bytearray().sort())
-
-    def test_append(self):
-        b = bytearray(b'hell')
-        b.append(ord('o'))
-        self.assertEqual(b, b'hello')
-        self.assertEqual(b.append(100), None)
-        b = bytearray()
-        b.append(ord('A'))
-        self.assertEqual(len(b), 1)
-        self.assertRaises(TypeError, lambda: b.append(u'o'))
-        b = bytearray()
-        b.append(Indexable(ord('A')))
-        self.assertEqual(b, b'A')
-
-    def test_insert(self):
-        b = bytearray(b'msssspp')
-        b.insert(1, ord('i'))
-        b.insert(4, ord('i'))
-        b.insert(-2, ord('i'))
-        b.insert(1000, ord('i'))
-        self.assertEqual(b, b'mississippi')
-        # allowed in 2.x
-        #self.assertRaises(TypeError, lambda: b.insert(0, b'1'))
-        b = bytearray()
-        b.insert(0, Indexable(ord('A')))
-        self.assertEqual(b, b'A')
-
-    def test_copied(self):
-        # Issue 4348.  Make sure that operations that don't mutate the array
-        # copy the bytes.
-        b = bytearray(b'abc')
-        self.assertFalse(b is b.replace(b'abc', b'cde', 0))
-
-        t = bytearray([i for i in range(256)])
-        x = bytearray(b'')
-        self.assertFalse(x is x.translate(t))
-
-    def test_partition_bytearray_doesnt_share_nullstring(self):
-        a, b, c = bytearray(b"x").partition(b"y")
-        self.assertEqual(b, b"")
-        self.assertEqual(c, b"")
-        self.assertTrue(b is not c)
-        b += b"!"
-        self.assertEqual(c, b"")
-        a, b, c = bytearray(b"x").partition(b"y")
-        self.assertEqual(b, b"")
-        self.assertEqual(c, b"")
-        # Same for rpartition
-        b, c, a = bytearray(b"x").rpartition(b"y")
-        self.assertEqual(b, b"")
-        self.assertEqual(c, b"")
-        self.assertTrue(b is not c)
-        b += b"!"
-        self.assertEqual(c, b"")
-        c, b, a = bytearray(b"x").rpartition(b"y")
-        self.assertEqual(b, b"")
-        self.assertEqual(c, b"")
-
-    def test_resize_forbidden(self):
-        # #4509: can't resize a bytearray when there are buffer exports, even
-        # if it wouldn't reallocate the underlying buffer.
-        # Furthermore, no destructive changes to the buffer may be applied
-        # before raising the error.
-        b = bytearray(range(10))
-        v = memoryview(b)
-        def resize(n):
-            b[1:-1] = range(n + 1, 2*n - 1)
-        resize(10)
-        orig = b[:]
-        self.assertRaises(BufferError, resize, 11)
-        self.assertEqual(b, orig)
-        self.assertRaises(BufferError, resize, 9)
-        self.assertEqual(b, orig)
-        self.assertRaises(BufferError, resize, 0)
-        self.assertEqual(b, orig)
-        # Other operations implying resize
-        self.assertRaises(BufferError, b.pop, 0)
-        self.assertEqual(b, orig)
-        self.assertRaises(BufferError, b.remove, b[1])
-        self.assertEqual(b, orig)
-        def delitem():
-            del b[1]
-        self.assertRaises(BufferError, delitem)
-        self.assertEqual(b, orig)
-        # deleting a non-contiguous slice
-        def delslice():
-            b[1:-1:2] = b""
-        self.assertRaises(BufferError, delslice)
-        self.assertEqual(b, orig)
-
-    def test_empty_bytearray(self):
-        # Issue #7561: operations on empty bytearrays could crash in many
-        # situations, due to a fragile implementation of the
-        # PyByteArray_AS_STRING() C macro.
-        self.assertRaises(ValueError, int, bytearray(b''))
-
-
-class AssortedBytesTest(unittest.TestCase):
-    #
-    # Test various combinations of bytes and bytearray
-    #
-
-    @check_bytes_warnings
-    def test_repr_str(self):
-        for f in str, repr:
-            self.assertEqual(f(bytearray()), "bytearray(b'')")
-            self.assertEqual(f(bytearray([0])), "bytearray(b'\\x00')")
-            self.assertEqual(f(bytearray([0, 1, 254, 255])),
-                             "bytearray(b'\\x00\\x01\\xfe\\xff')")
-            self.assertEqual(f(b"abc"), "b'abc'")
-            self.assertEqual(f(b"'"), '''b"'"''') # '''
-            self.assertEqual(f(b"'\""), r"""b'\'"'""") # '
-
-    def test_compare_bytes_to_bytearray(self):
-        self.assertEqual(b"abc" == bytes(b"abc"), True)
-        self.assertEqual(b"ab" != bytes(b"abc"), True)
-        self.assertEqual(b"ab" <= bytes(b"abc"), True)
-        self.assertEqual(b"ab" < bytes(b"abc"), True)
-        self.assertEqual(b"abc" >= bytes(b"ab"), True)
-        self.assertEqual(b"abc" > bytes(b"ab"), True)
-
-        self.assertEqual(b"abc" != bytes(b"abc"), False)
-        self.assertEqual(b"ab" == bytes(b"abc"), False)
-        self.assertEqual(b"ab" > bytes(b"abc"), False)
-        self.assertEqual(b"ab" >= bytes(b"abc"), False)
-        self.assertEqual(b"abc" < bytes(b"ab"), False)
-        self.assertEqual(b"abc" <= bytes(b"ab"), False)
-
-        self.assertEqual(bytes(b"abc") == b"abc", True)
-        self.assertEqual(bytes(b"ab") != b"abc", True)
-        self.assertEqual(bytes(b"ab") <= b"abc", True)
-        self.assertEqual(bytes(b"ab") < b"abc", True)
-        self.assertEqual(bytes(b"abc") >= b"ab", True)
-        self.assertEqual(bytes(b"abc") > b"ab", True)
-
-        self.assertEqual(bytes(b"abc") != b"abc", False)
-        self.assertEqual(bytes(b"ab") == b"abc", False)
-        self.assertEqual(bytes(b"ab") > b"abc", False)
-        self.assertEqual(bytes(b"ab") >= b"abc", False)
-        self.assertEqual(bytes(b"abc") < b"ab", False)
-        self.assertEqual(bytes(b"abc") <= b"ab", False)
-
-    def test_doc(self):
-        self.assertIsNotNone(bytearray.__doc__)
-        self.assertTrue(bytearray.__doc__.startswith("bytearray("), bytearray.__doc__)
-        self.assertIsNotNone(bytes.__doc__)
-        self.assertTrue(bytes.__doc__.startswith("bytes("), bytes.__doc__)
-
-    def test_from_bytearray(self):
-        sample = bytes(b"Hello world\n\x80\x81\xfe\xff")
-        buf = memoryview(sample)
-        b = bytearray(buf)
-        self.assertEqual(b, bytearray(sample))
-
-    @check_bytes_warnings
-    def test_to_str(self):
-        self.assertEqual(str(b''), "b''")
-        self.assertEqual(str(b'x'), "b'x'")
-        self.assertEqual(str(b'\x80'), "b'\\x80'")
-        self.assertEqual(str(bytearray(b'')), "bytearray(b'')")
-        self.assertEqual(str(bytearray(b'x')), "bytearray(b'x')")
-        self.assertEqual(str(bytearray(b'\x80')), "bytearray(b'\\x80')")
-
-    def test_literal(self):
-        tests =  [
-            (b"Wonderful spam", "Wonderful spam"),
-            (br"Wonderful spam too", "Wonderful spam too"),
-            (b"\xaa\x00\000\200", "\xaa\x00\000\200"),
-            (br"\xaa\x00\000\200", r"\xaa\x00\000\200"),
-        ]
-        for b, s in tests:
-            self.assertEqual(b, bytearray(s, 'latin-1'))
-        for c in range(128, 256):
-            self.assertRaises(SyntaxError, eval,
-                              'b"%s"' % chr(c))
-
-    def test_translate(self):
-        b = b'hello'
-        ba = bytearray(b)
-        rosetta = bytearray(range(0, 256))
-        rosetta[ord('o')] = ord('e')
-        c = b.translate(rosetta, b'l')
-        self.assertEqual(b, b'hello')
-        self.assertEqual(c, b'hee')
-        c = ba.translate(rosetta, b'l')
-        self.assertEqual(ba, b'hello')
-        self.assertEqual(c, b'hee')
-        c = b.translate(None, b'e')
-        self.assertEqual(c, b'hllo')
-        c = ba.translate(None, b'e')
-        self.assertEqual(c, b'hllo')
-        self.assertRaises(TypeError, b.translate, None, None)
-        self.assertRaises(TypeError, ba.translate, None, None)
-
-    def test_split_bytearray(self):
-        self.assertEqual(b'a b'.split(memoryview(b' ')), [b'a', b'b'])
-
-    def test_rsplit_bytearray(self):
-        self.assertEqual(b'a b'.rsplit(memoryview(b' ')), [b'a', b'b'])
-
-    # Optimizations:
-    # __iter__? (optimization)
-    # __reversed__? (optimization)
-
-    # XXX More string methods?  (Those that don't use character properties)
-
-    # There are tests in string_tests.py that are more
-    # comprehensive for things like split, partition, etc.
-    # Unfortunately they are all bundled with tests that
-    # are not appropriate for bytes
-
-    # I've started porting some of those into bytearray_tests.py, we should port
-    # the rest that make sense (the code can be cleaned up to use modern
-    # unittest methods at the same time).
-
-class BytearrayPEP3137Test(unittest.TestCase,
-                       test.buffer_tests.MixinBytesBufferCommonTests):
-    def marshal(self, x):
-        return bytearray(x)
-
-    def test_returns_new_copy(self):
-        val = self.marshal(b'1234')
-        # On immutable types these MAY return a reference to themselves
-        # but on mutable types like bytearray they MUST return a new copy.
-        for methname in ('zfill', 'rjust', 'ljust', 'center'):
-            method = getattr(val, methname)
-            newval = method(3)
-            self.assertEqual(val, newval)
-            self.assertTrue(val is not newval,
-                            methname+' returned self on a mutable object')
-        for expr in ('val.split()[0]', 'val.rsplit()[0]',
-                     'val.partition(".")[0]', 'val.rpartition(".")[2]',
-                     'val.splitlines()[0]', 'val.replace("", "")'):
-            newval = eval(expr)
-            self.assertEqual(val, newval)
-            self.assertTrue(val is not newval,
-                            expr+' returned val on a mutable object')
-
-class FixedStringTest(test.string_tests.BaseTest):
-
-    def fixtype(self, obj):
-        if isinstance(obj, str):
-            return obj.encode("utf-8")
-        return super(FixedStringTest, self).fixtype(obj)
-
-    # Currently the bytes containment testing uses a single integer
-    # value. This may not be the final design, but until then the
-    # bytes section with in a bytes containment not valid
-    def test_contains(self):
-        pass
-    def test_expandtabs(self):
-        pass
-    def test_upper(self):
-        pass
-    def test_lower(self):
-        pass
-    def test_hash(self):
-        # XXX check this out
-        pass
-
-
-class ByteArrayAsStringTest(FixedStringTest):
-    type2test = bytearray
-
-
-class ByteArraySubclass(bytearray):
-    pass
-
-class ByteArraySubclassTest(unittest.TestCase):
-
-    def test_basic(self):
-        self.assertTrue(issubclass(ByteArraySubclass, bytearray))
-        self.assertIsInstance(ByteArraySubclass(), bytearray)
-
-        a, b = b"abcd", b"efgh"
-        _a, _b = ByteArraySubclass(a), ByteArraySubclass(b)
-
-        # test comparison operators with subclass instances
-        self.assertTrue(_a == _a)
-        self.assertTrue(_a != _b)
-        self.assertTrue(_a < _b)
-        self.assertTrue(_a <= _b)
-        self.assertTrue(_b >= _a)
-        self.assertTrue(_b > _a)
-        self.assertTrue(_a is not a)
-
-        # test concat of subclass instances
-        self.assertEqual(a + b, _a + _b)
-        self.assertEqual(a + b, a + _b)
-        self.assertEqual(a + b, _a + b)
-
-        # test repeat
-        self.assertTrue(a*5 == _a*5)
-
-    def test_join(self):
-        # Make sure join returns a NEW object for single item sequences
-        # involving a subclass.
-        # Make sure that it is of the appropriate type.
-        s1 = ByteArraySubclass(b"abcd")
-        s2 = bytearray().join([s1])
-        self.assertTrue(s1 is not s2)
-        self.assertTrue(type(s2) is bytearray, type(s2))
-
-        # Test reverse, calling join on subclass
-        s3 = s1.join([b"abcd"])
-        self.assertTrue(type(s3) is bytearray)
-
-    def test_pickle(self):
-        a = ByteArraySubclass(b"abcd")
-        a.x = 10
-        a.y = ByteArraySubclass(b"efgh")
-        for proto in range(pickle.HIGHEST_PROTOCOL + 1):
-            b = pickle.loads(pickle.dumps(a, proto))
-            self.assertNotEqual(id(a), id(b))
-            self.assertEqual(a, b)
-            self.assertEqual(a.x, b.x)
-            self.assertEqual(a.y, b.y)
-            self.assertEqual(type(a), type(b))
-            self.assertEqual(type(a.y), type(b.y))
-
-    def test_copy(self):
-        a = ByteArraySubclass(b"abcd")
-        a.x = 10
-        a.y = ByteArraySubclass(b"efgh")
-        for copy_method in (copy.copy, copy.deepcopy):
-            b = copy_method(a)
-            self.assertNotEqual(id(a), id(b))
-            self.assertEqual(a, b)
-            self.assertEqual(a.x, b.x)
-            self.assertEqual(a.y, b.y)
-            self.assertEqual(type(a), type(b))
-            self.assertEqual(type(a.y), type(b.y))
-
-    def test_init_override(self):
-        class subclass(bytearray):
-            def __init__(self, newarg=1, *args, **kwargs):
-                bytearray.__init__(self, *args, **kwargs)
-        x = subclass(4, source=b"abcd")
-        self.assertEqual(x, b"abcd")
-        x = subclass(newarg=4, source=b"abcd")
-        self.assertEqual(x, b"abcd")
-
-def test_main():
-    #test.test_support.run_unittest(BytesTest)
-    #test.test_support.run_unittest(AssortedBytesTest)
-    #test.test_support.run_unittest(BytesAsStringTest)
-    test.test_support.run_unittest(
-        ByteArrayTest,
-        ByteArrayAsStringTest,
-        ByteArraySubclassTest,
-        BytearrayPEP3137Test)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bz2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bz2.py
deleted file mode 100644
index 3eaf655..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_bz2.py
+++ /dev/null
@@ -1,422 +0,0 @@
-#!/usr/bin/env python
-from test import test_support
-from test.test_support import TESTFN, import_module
-
-import unittest
-from cStringIO import StringIO
-import os
-import subprocess
-import sys
-
-try:
-    import threading
-except ImportError:
-    threading = None
-
-bz2 = import_module('bz2')
-from bz2 import BZ2File, BZ2Compressor, BZ2Decompressor
-
-has_cmdline_bunzip2 = sys.platform not in ("win32", "os2emx", "riscos")
-
-class BaseTest(unittest.TestCase):
-    "Base for other testcases."
-    TEXT = 'root:x:0:0:root:/root:/bin/bash\nbin:x:1:1:bin:/bin:\ndaemon:x:2:2:daemon:/sbin:\nadm:x:3:4:adm:/var/adm:\nlp:x:4:7:lp:/var/spool/lpd:\nsync:x:5:0:sync:/sbin:/bin/sync\nshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\nhalt:x:7:0:halt:/sbin:/sbin/halt\nmail:x:8:12:mail:/var/spool/mail:\nnews:x:9:13:news:/var/spool/news:\nuucp:x:10:14:uucp:/var/spool/uucp:\noperator:x:11:0:operator:/root:\ngames:x:12:100:games:/usr/games:\ngopher:x:13:30:gopher:/usr/lib/gopher-data:\nftp:x:14:50:FTP User:/var/ftp:/bin/bash\nnobody:x:65534:65534:Nobody:/home:\npostfix:x:100:101:postfix:/var/spool/postfix:\nniemeyer:x:500:500::/home/niemeyer:/bin/bash\npostgres:x:101:102:PostgreSQL Server:/var/lib/pgsql:/bin/bash\nmysql:x:102:103:MySQL server:/var/lib/mysql:/bin/bash\nwww:x:103:104::/var/www:/bin/false\n'
-    DATA = 'BZh91AY&SY.\xc8N\x18\x00\x01>_\x80\x00\x10@\x02\xff\xf0\x01\x07n\x00?\xe7\xff\xe00\x01\x99\xaa\x00\xc0\x03F\x86\x8c#&\x83F\x9a\x03\x06\xa6\xd0\xa6\x93M\x0fQ\xa7\xa8\x06\x804hh\x12$\x11\xa4i4\xf14S\xd2<Q\xb5\x0fH\xd3\xd4\xdd\xd5\x87\xbb\xf8\x94\r\x8f\xafI\x12\xe1\xc9\xf8/E\x00pu\x89\x12]\xc9\xbbDL\nQ\x0e\t1\x12\xdf\xa0\xc0\x97\xac2O9\x89\x13\x94\x0e\x1c7\x0ed\x95I\x0c\xaaJ\xa4\x18L\x10\x05#\x9c\xaf\xba\xbc/\x97\x8a#C\xc8\xe1\x8cW\xf9\xe2\xd0\xd6M\xa7\x8bXa<e\x84t\xcbL\xb3\xa7\xd9\xcd\xd1\xcb\x84.\xaf\xb3\xab\xab\xad`n}\xa0lh\tE,\x8eZ\x15\x17VH>\x88\xe5\xcd9gd6\x0b\n\xe9\x9b\xd5\x8a\x99\xf7\x08.K\x8ev\xfb\xf7xw\xbb\xdf\xa1\x92\xf1\xdd|/";\xa2\xba\x9f\xd5\xb1#A\xb6\xf6\xb3o\xc9\xc5y\\\xebO\xe7\x85\x9a\xbc\xb6f8\x952\xd5\xd7"%\x89>V,\xf7\xa6z\xe2\x9f\xa3\xdf\x11\x11"\xd6E)I\xa9\x13^\xca\xf3r\xd0\x03U\x922\xf26\xec\xb6\xed\x8b\xc3U\x13\x9d\xc5\x170\xa4\xfa^\x92\xacDF\x8a\x97\xd6\x19\xfe\xdd\xb8\xbd\x1a\x9a\x19\xa3\x80ankR\x8b\xe5\xd83]\xa9\xc6\x08\x82f\xf6\xb9"6l$\xb8j@\xc0\x8a\xb0l1..\xbak\x83ls\x15\xbc\xf4\xc1\x13\xbe\xf8E\xb8\x9d\r\xa8\x9dk\x84\xd3n\xfa\xacQ\x07\xb1%y\xaav\xb4\x08\xe0z\x1b\x16\xf5\x04\xe9\xcc\xb9\x08z\x1en7.G\xfc]\xc9\x14\xe1B@\xbb!8`'
-    DATA_CRLF = 'BZh91AY&SY\xaez\xbbN\x00\x01H\xdf\x80\x00\x12@\x02\xff\xf0\x01\x07n\x00?\xe7\xff\xe0@\x01\xbc\xc6`\x86*\x8d=M\xa9\x9a\x86\xd0L@\x0fI\xa6!\xa1\x13\xc8\x88jdi\x8d@\x03@\x1a\x1a\x0c\x0c\x83 \x00\xc4h2\x19\x01\x82D\x84e\t\xe8\x99\x89\x19\x1ah\x00\r\x1a\x11\xaf\x9b\x0fG\xf5(\x1b\x1f?\t\x12\xcf\xb5\xfc\x95E\x00ps\x89\x12^\xa4\xdd\xa2&\x05(\x87\x04\x98\x89u\xe40%\xb6\x19\'\x8c\xc4\x89\xca\x07\x0e\x1b!\x91UIFU%C\x994!DI\xd2\xfa\xf0\xf1N8W\xde\x13A\xf5\x9cr%?\x9f3;I45A\xd1\x8bT\xb1<l\xba\xcb_\xc00xY\x17r\x17\x88\x08\x08@\xa0\ry@\x10\x04$)`\xf2\xce\x89z\xb0s\xec\x9b.iW\x9d\x81\xb5-+t\x9f\x1a\'\x97dB\xf5x\xb5\xbe.[.\xd7\x0e\x81\xe7\x08\x1cN`\x88\x10\xca\x87\xc3!"\x80\x92R\xa1/\xd1\xc0\xe6mf\xac\xbd\x99\xcca\xb3\x8780>\xa4\xc7\x8d\x1a\\"\xad\xa1\xabyBg\x15\xb9l\x88\x88\x91k"\x94\xa4\xd4\x89\xae*\xa6\x0b\x10\x0c\xd6\xd4m\xe86\xec\xb5j\x8a\x86j\';\xca.\x01I\xf2\xaaJ\xe8\x88\x8cU+t3\xfb\x0c\n\xa33\x13r2\r\x16\xe0\xb3(\xbf\x1d\x83r\xe7M\xf0D\x1365\xd8\x88\xd3\xa4\x92\xcb2\x06\x04\\\xc1\xb0\xea//\xbek&\xd8\xe6+t\xe5\xa1\x13\xada\x16\xder5"w]\xa2i\xb7[\x97R \xe2IT\xcd;Z\x04dk4\xad\x8a\t\xd3\x81z\x10\xf1:^`\xab\x1f\xc5\xdc\x91N\x14$+\x9e\xae\xd3\x80'
-
-    if has_cmdline_bunzip2:
-        def decompress(self, data):
-            pop = subprocess.Popen("bunzip2", shell=True,
-                                   stdin=subprocess.PIPE,
-                                   stdout=subprocess.PIPE,
-                                   stderr=subprocess.STDOUT)
-            pop.stdin.write(data)
-            pop.stdin.close()
-            ret = pop.stdout.read()
-            pop.stdout.close()
-            if pop.wait() != 0:
-                ret = bz2.decompress(data)
-            return ret
-
-    else:
-        # bunzip2 isn't available to run on Windows.
-        def decompress(self, data):
-            return bz2.decompress(data)
-
-class BZ2FileTest(BaseTest):
-    "Test BZ2File type miscellaneous methods."
-
-    def setUp(self):
-        self.filename = TESTFN
-
-    def tearDown(self):
-        if os.path.isfile(self.filename):
-            os.unlink(self.filename)
-
-    def createTempFile(self, crlf=0):
-        with open(self.filename, "wb") as f:
-            if crlf:
-                data = self.DATA_CRLF
-            else:
-                data = self.DATA
-            f.write(data)
-
-    def testRead(self):
-        # "Test BZ2File.read()"
-        self.createTempFile()
-        with BZ2File(self.filename) as bz2f:
-            self.assertRaises(TypeError, bz2f.read, None)
-            self.assertEqual(bz2f.read(), self.TEXT)
-
-    def testRead0(self):
-        # Test BBZ2File.read(0)"
-        self.createTempFile()
-        with BZ2File(self.filename) as bz2f:
-            self.assertRaises(TypeError, bz2f.read, None)
-            self.assertEqual(bz2f.read(0), "")
-
-    def testReadChunk10(self):
-        # "Test BZ2File.read() in chunks of 10 bytes"
-        self.createTempFile()
-        with BZ2File(self.filename) as bz2f:
-            text = ''
-            while 1:
-                str = bz2f.read(10)
-                if not str:
-                    break
-                text += str
-            self.assertEqual(text, self.TEXT)
-
-    def testRead100(self):
-        # "Test BZ2File.read(100)"
-        self.createTempFile()
-        with BZ2File(self.filename) as bz2f:
-            self.assertEqual(bz2f.read(100), self.TEXT[:100])
-
-    def testReadLine(self):
-        # "Test BZ2File.readline()"
-        self.createTempFile()
-        with BZ2File(self.filename) as bz2f:
-            self.assertRaises(TypeError, bz2f.readline, None)
-            sio = StringIO(self.TEXT)
-            for line in sio.readlines():
-                self.assertEqual(bz2f.readline(), line)
-
-    def testReadLines(self):
-        # "Test BZ2File.readlines()"
-        self.createTempFile()
-        with BZ2File(self.filename) as bz2f:
-            self.assertRaises(TypeError, bz2f.readlines, None)
-            sio = StringIO(self.TEXT)
-            self.assertEqual(bz2f.readlines(), sio.readlines())
-
-    def testIterator(self):
-        # "Test iter(BZ2File)"
-        self.createTempFile()
-        with BZ2File(self.filename) as bz2f:
-            sio = StringIO(self.TEXT)
-            self.assertEqual(list(iter(bz2f)), sio.readlines())
-
-    def testClosedIteratorDeadlock(self):
-        # "Test that iteration on a closed bz2file releases the lock."
-        # http://bugs.python.org/issue3309
-        self.createTempFile()
-        bz2f = BZ2File(self.filename)
-        bz2f.close()
-        self.assertRaises(ValueError, bz2f.next)
-        # This call will deadlock of the above .next call failed to
-        # release the lock.
-        self.assertRaises(ValueError, bz2f.readlines)
-
-    def testXReadLines(self):
-        # "Test BZ2File.xreadlines()"
-        self.createTempFile()
-        bz2f = BZ2File(self.filename)
-        sio = StringIO(self.TEXT)
-        self.assertEqual(list(bz2f.xreadlines()), sio.readlines())
-        bz2f.close()
-
-    def testUniversalNewlinesLF(self):
-        # "Test BZ2File.read() with universal newlines (\\n)"
-        self.createTempFile()
-        bz2f = BZ2File(self.filename, "rU")
-        self.assertEqual(bz2f.read(), self.TEXT)
-        self.assertEqual(bz2f.newlines, "\n")
-        bz2f.close()
-
-    def testUniversalNewlinesCRLF(self):
-        # "Test BZ2File.read() with universal newlines (\\r\\n)"
-        self.createTempFile(crlf=1)
-        bz2f = BZ2File(self.filename, "rU")
-        self.assertEqual(bz2f.read(), self.TEXT)
-        self.assertEqual(bz2f.newlines, "\r\n")
-        bz2f.close()
-
-    def testWrite(self):
-        # "Test BZ2File.write()"
-        with BZ2File(self.filename, "w") as bz2f:
-            self.assertRaises(TypeError, bz2f.write)
-            bz2f.write(self.TEXT)
-        with open(self.filename, 'rb') as f:
-            self.assertEqual(self.decompress(f.read()), self.TEXT)
-
-    def testWriteChunks10(self):
-        # "Test BZ2File.write() with chunks of 10 bytes"
-        with BZ2File(self.filename, "w") as bz2f:
-            n = 0
-            while 1:
-                str = self.TEXT[n*10:(n+1)*10]
-                if not str:
-                    break
-                bz2f.write(str)
-                n += 1
-        with open(self.filename, 'rb') as f:
-            self.assertEqual(self.decompress(f.read()), self.TEXT)
-
-    def testWriteLines(self):
-        # "Test BZ2File.writelines()"
-        with BZ2File(self.filename, "w") as bz2f:
-            self.assertRaises(TypeError, bz2f.writelines)
-            sio = StringIO(self.TEXT)
-            bz2f.writelines(sio.readlines())
-        # patch #1535500
-        self.assertRaises(ValueError, bz2f.writelines, ["a"])
-        with open(self.filename, 'rb') as f:
-            self.assertEqual(self.decompress(f.read()), self.TEXT)
-
-    def testWriteMethodsOnReadOnlyFile(self):
-        with BZ2File(self.filename, "w") as bz2f:
-            bz2f.write("abc")
-
-        with BZ2File(self.filename, "r") as bz2f:
-            self.assertRaises(IOError, bz2f.write, "a")
-            self.assertRaises(IOError, bz2f.writelines, ["a"])
-
-    def testSeekForward(self):
-        # "Test BZ2File.seek(150, 0)"
-        self.createTempFile()
-        with BZ2File(self.filename) as bz2f:
-            self.assertRaises(TypeError, bz2f.seek)
-            bz2f.seek(150)
-            self.assertEqual(bz2f.read(), self.TEXT[150:])
-
-    def testSeekBackwards(self):
-        # "Test BZ2File.seek(-150, 1)"
-        self.createTempFile()
-        with BZ2File(self.filename) as bz2f:
-            bz2f.read(500)
-            bz2f.seek(-150, 1)
-            self.assertEqual(bz2f.read(), self.TEXT[500-150:])
-
-    def testSeekBackwardsFromEnd(self):
-        # "Test BZ2File.seek(-150, 2)"
-        self.createTempFile()
-        with BZ2File(self.filename) as bz2f:
-            bz2f.seek(-150, 2)
-            self.assertEqual(bz2f.read(), self.TEXT[len(self.TEXT)-150:])
-
-    def testSeekPostEnd(self):
-        # "Test BZ2File.seek(150000)"
-        self.createTempFile()
-        with BZ2File(self.filename) as bz2f:
-            bz2f.seek(150000)
-            self.assertEqual(bz2f.tell(), len(self.TEXT))
-            self.assertEqual(bz2f.read(), "")
-
-    def testSeekPostEndTwice(self):
-        # "Test BZ2File.seek(150000) twice"
-        self.createTempFile()
-        with BZ2File(self.filename) as bz2f:
-            bz2f.seek(150000)
-            bz2f.seek(150000)
-            self.assertEqual(bz2f.tell(), len(self.TEXT))
-            self.assertEqual(bz2f.read(), "")
-
-    def testSeekPreStart(self):
-        # "Test BZ2File.seek(-150, 0)"
-        self.createTempFile()
-        with BZ2File(self.filename) as bz2f:
-            bz2f.seek(-150)
-            self.assertEqual(bz2f.tell(), 0)
-            self.assertEqual(bz2f.read(), self.TEXT)
-
-    def testOpenDel(self):
-        # "Test opening and deleting a file many times"
-        self.createTempFile()
-        for i in xrange(10000):
-            o = BZ2File(self.filename)
-            del o
-
-    def testOpenNonexistent(self):
-        # "Test opening a nonexistent file"
-        self.assertRaises(IOError, BZ2File, "/non/existent")
-
-    def testModeU(self):
-        # Bug #1194181: bz2.BZ2File opened for write with mode "U"
-        self.createTempFile()
-        bz2f = BZ2File(self.filename, "U")
-        bz2f.close()
-        f = file(self.filename)
-        f.seek(0, 2)
-        self.assertEqual(f.tell(), len(self.DATA))
-        f.close()
-
-    def testBug1191043(self):
-        # readlines() for files containing no newline
-        data = 'BZh91AY&SY\xd9b\x89]\x00\x00\x00\x03\x80\x04\x00\x02\x00\x0c\x00 \x00!\x9ah3M\x13<]\xc9\x14\xe1BCe\x8a%t'
-        with open(self.filename, "wb") as f:
-            f.write(data)
-        with BZ2File(self.filename) as bz2f:
-            lines = bz2f.readlines()
-        self.assertEqual(lines, ['Test'])
-        with BZ2File(self.filename) as bz2f:
-            xlines = list(bz2f.readlines())
-        self.assertEqual(xlines, ['Test'])
-
-    def testContextProtocol(self):
-        # BZ2File supports the context management protocol
-        f = None
-        with BZ2File(self.filename, "wb") as f:
-            f.write(b"xxx")
-        f = BZ2File(self.filename, "rb")
-        f.close()
-        try:
-            with f:
-                pass
-        except ValueError:
-            pass
-        else:
-            self.fail("__enter__ on a closed file didn't raise an exception")
-        try:
-            with BZ2File(self.filename, "wb") as f:
-                1 // 0
-        except ZeroDivisionError:
-            pass
-        else:
-            self.fail("1 // 0 didn't raise an exception")
-
-    @unittest.skipUnless(threading, 'Threading required for this test.')
-    def testThreading(self):
-        # Using a BZ2File from several threads doesn't deadlock (issue #7205).
-        data = "1" * 2**20
-        nthreads = 10
-        with bz2.BZ2File(self.filename, 'wb') as f:
-            def comp():
-                for i in range(5):
-                    f.write(data)
-            threads = [threading.Thread(target=comp) for i in range(nthreads)]
-            for t in threads:
-                t.start()
-            for t in threads:
-                t.join()
-
-    def testMixedIterationReads(self):
-        # Issue #8397: mixed iteration and reads should be forbidden.
-        with bz2.BZ2File(self.filename, 'wb') as f:
-            # The internal buffer size is hard-wired to 8192 bytes, we must
-            # write out more than that for the test to stop half through
-            # the buffer.
-            f.write(self.TEXT * 100)
-        with bz2.BZ2File(self.filename, 'rb') as f:
-            next(f)
-            self.assertRaises(ValueError, f.read)
-            self.assertRaises(ValueError, f.readline)
-            self.assertRaises(ValueError, f.readlines)
-
-class BZ2CompressorTest(BaseTest):
-    def testCompress(self):
-        # "Test BZ2Compressor.compress()/flush()"
-        bz2c = BZ2Compressor()
-        self.assertRaises(TypeError, bz2c.compress)
-        data = bz2c.compress(self.TEXT)
-        data += bz2c.flush()
-        self.assertEqual(self.decompress(data), self.TEXT)
-
-    def testCompressChunks10(self):
-        # "Test BZ2Compressor.compress()/flush() with chunks of 10 bytes"
-        bz2c = BZ2Compressor()
-        n = 0
-        data = ''
-        while 1:
-            str = self.TEXT[n*10:(n+1)*10]
-            if not str:
-                break
-            data += bz2c.compress(str)
-            n += 1
-        data += bz2c.flush()
-        self.assertEqual(self.decompress(data), self.TEXT)
-
-class BZ2DecompressorTest(BaseTest):
-    def test_Constructor(self):
-        self.assertRaises(TypeError, BZ2Decompressor, 42)
-
-    def testDecompress(self):
-        # "Test BZ2Decompressor.decompress()"
-        bz2d = BZ2Decompressor()
-        self.assertRaises(TypeError, bz2d.decompress)
-        text = bz2d.decompress(self.DATA)
-        self.assertEqual(text, self.TEXT)
-
-    def testDecompressChunks10(self):
-        # "Test BZ2Decompressor.decompress() with chunks of 10 bytes"
-        bz2d = BZ2Decompressor()
-        text = ''
-        n = 0
-        while 1:
-            str = self.DATA[n*10:(n+1)*10]
-            if not str:
-                break
-            text += bz2d.decompress(str)
-            n += 1
-        self.assertEqual(text, self.TEXT)
-
-    def testDecompressUnusedData(self):
-        # "Test BZ2Decompressor.decompress() with unused data"
-        bz2d = BZ2Decompressor()
-        unused_data = "this is unused data"
-        text = bz2d.decompress(self.DATA+unused_data)
-        self.assertEqual(text, self.TEXT)
-        self.assertEqual(bz2d.unused_data, unused_data)
-
-    def testEOFError(self):
-        # "Calling BZ2Decompressor.decompress() after EOS must raise EOFError"
-        bz2d = BZ2Decompressor()
-        text = bz2d.decompress(self.DATA)
-        self.assertRaises(EOFError, bz2d.decompress, "anything")
-
-
-class FuncTest(BaseTest):
-    "Test module functions"
-
-    def testCompress(self):
-        # "Test compress() function"
-        data = bz2.compress(self.TEXT)
-        self.assertEqual(self.decompress(data), self.TEXT)
-
-    def testDecompress(self):
-        # "Test decompress() function"
-        text = bz2.decompress(self.DATA)
-        self.assertEqual(text, self.TEXT)
-
-    def testDecompressEmpty(self):
-        # "Test decompress() function with empty string"
-        text = bz2.decompress("")
-        self.assertEqual(text, "")
-
-    def testDecompressIncomplete(self):
-        # "Test decompress() function with incomplete data"
-        self.assertRaises(ValueError, bz2.decompress, self.DATA[:-10])
-
-def test_main():
-    test_support.run_unittest(
-        BZ2FileTest,
-        BZ2CompressorTest,
-        BZ2DecompressorTest,
-        FuncTest
-    )
-    test_support.reap_children()
-
-if __name__ == '__main__':
-    test_main()
-
-# vim:ts=4:sw=4
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_calendar.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_calendar.py
deleted file mode 100644
index 07db080..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_calendar.py
+++ /dev/null
@@ -1,457 +0,0 @@
-import calendar
-import unittest
-
-from test import test_support
-import locale
-
-
-result_2004_text = """
-                                  2004
-
-      January                   February                   March
-Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
-          1  2  3  4                         1       1  2  3  4  5  6  7
- 5  6  7  8  9 10 11       2  3  4  5  6  7  8       8  9 10 11 12 13 14
-12 13 14 15 16 17 18       9 10 11 12 13 14 15      15 16 17 18 19 20 21
-19 20 21 22 23 24 25      16 17 18 19 20 21 22      22 23 24 25 26 27 28
-26 27 28 29 30 31         23 24 25 26 27 28 29      29 30 31
-
-       April                      May                       June
-Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
-          1  2  3  4                      1  2          1  2  3  4  5  6
- 5  6  7  8  9 10 11       3  4  5  6  7  8  9       7  8  9 10 11 12 13
-12 13 14 15 16 17 18      10 11 12 13 14 15 16      14 15 16 17 18 19 20
-19 20 21 22 23 24 25      17 18 19 20 21 22 23      21 22 23 24 25 26 27
-26 27 28 29 30            24 25 26 27 28 29 30      28 29 30
-                          31
-
-        July                     August                  September
-Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
-          1  2  3  4                         1             1  2  3  4  5
- 5  6  7  8  9 10 11       2  3  4  5  6  7  8       6  7  8  9 10 11 12
-12 13 14 15 16 17 18       9 10 11 12 13 14 15      13 14 15 16 17 18 19
-19 20 21 22 23 24 25      16 17 18 19 20 21 22      20 21 22 23 24 25 26
-26 27 28 29 30 31         23 24 25 26 27 28 29      27 28 29 30
-                          30 31
-
-      October                   November                  December
-Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
-             1  2  3       1  2  3  4  5  6  7             1  2  3  4  5
- 4  5  6  7  8  9 10       8  9 10 11 12 13 14       6  7  8  9 10 11 12
-11 12 13 14 15 16 17      15 16 17 18 19 20 21      13 14 15 16 17 18 19
-18 19 20 21 22 23 24      22 23 24 25 26 27 28      20 21 22 23 24 25 26
-25 26 27 28 29 30 31      29 30                     27 28 29 30 31
-"""
-
-result_2004_html = """
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ascii" />
-<link rel="stylesheet" type="text/css" href="calendar.css" />
-<title>Calendar for 2004</title>
-</head>
-<body>
-<table border="0" cellpadding="0" cellspacing="0" class="year">
-<tr><th colspan="3" class="year">2004</th></tr><tr><td><table border="0" cellpadding="0" cellspacing="0" class="month">
-<tr><th colspan="7" class="month">January</th></tr>
-<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
-<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="thu">1</td><td class="fri">2</td><td class="sat">3</td><td class="sun">4</td></tr>
-<tr><td class="mon">5</td><td class="tue">6</td><td class="wed">7</td><td class="thu">8</td><td class="fri">9</td><td class="sat">10</td><td class="sun">11</td></tr>
-<tr><td class="mon">12</td><td class="tue">13</td><td class="wed">14</td><td class="thu">15</td><td class="fri">16</td><td class="sat">17</td><td class="sun">18</td></tr>
-<tr><td class="mon">19</td><td class="tue">20</td><td class="wed">21</td><td class="thu">22</td><td class="fri">23</td><td class="sat">24</td><td class="sun">25</td></tr>
-<tr><td class="mon">26</td><td class="tue">27</td><td class="wed">28</td><td class="thu">29</td><td class="fri">30</td><td class="sat">31</td><td class="noday">&nbsp;</td></tr>
-</table>
-</td><td><table border="0" cellpadding="0" cellspacing="0" class="month">
-<tr><th colspan="7" class="month">February</th></tr>
-<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
-<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="sun">1</td></tr>
-<tr><td class="mon">2</td><td class="tue">3</td><td class="wed">4</td><td class="thu">5</td><td class="fri">6</td><td class="sat">7</td><td class="sun">8</td></tr>
-<tr><td class="mon">9</td><td class="tue">10</td><td class="wed">11</td><td class="thu">12</td><td class="fri">13</td><td class="sat">14</td><td class="sun">15</td></tr>
-<tr><td class="mon">16</td><td class="tue">17</td><td class="wed">18</td><td class="thu">19</td><td class="fri">20</td><td class="sat">21</td><td class="sun">22</td></tr>
-<tr><td class="mon">23</td><td class="tue">24</td><td class="wed">25</td><td class="thu">26</td><td class="fri">27</td><td class="sat">28</td><td class="sun">29</td></tr>
-</table>
-</td><td><table border="0" cellpadding="0" cellspacing="0" class="month">
-<tr><th colspan="7" class="month">March</th></tr>
-<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
-<tr><td class="mon">1</td><td class="tue">2</td><td class="wed">3</td><td class="thu">4</td><td class="fri">5</td><td class="sat">6</td><td class="sun">7</td></tr>
-<tr><td class="mon">8</td><td class="tue">9</td><td class="wed">10</td><td class="thu">11</td><td class="fri">12</td><td class="sat">13</td><td class="sun">14</td></tr>
-<tr><td class="mon">15</td><td class="tue">16</td><td class="wed">17</td><td class="thu">18</td><td class="fri">19</td><td class="sat">20</td><td class="sun">21</td></tr>
-<tr><td class="mon">22</td><td class="tue">23</td><td class="wed">24</td><td class="thu">25</td><td class="fri">26</td><td class="sat">27</td><td class="sun">28</td></tr>
-<tr><td class="mon">29</td><td class="tue">30</td><td class="wed">31</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
-</table>
-</td></tr><tr><td><table border="0" cellpadding="0" cellspacing="0" class="month">
-<tr><th colspan="7" class="month">April</th></tr>
-<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
-<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="thu">1</td><td class="fri">2</td><td class="sat">3</td><td class="sun">4</td></tr>
-<tr><td class="mon">5</td><td class="tue">6</td><td class="wed">7</td><td class="thu">8</td><td class="fri">9</td><td class="sat">10</td><td class="sun">11</td></tr>
-<tr><td class="mon">12</td><td class="tue">13</td><td class="wed">14</td><td class="thu">15</td><td class="fri">16</td><td class="sat">17</td><td class="sun">18</td></tr>
-<tr><td class="mon">19</td><td class="tue">20</td><td class="wed">21</td><td class="thu">22</td><td class="fri">23</td><td class="sat">24</td><td class="sun">25</td></tr>
-<tr><td class="mon">26</td><td class="tue">27</td><td class="wed">28</td><td class="thu">29</td><td class="fri">30</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
-</table>
-</td><td><table border="0" cellpadding="0" cellspacing="0" class="month">
-<tr><th colspan="7" class="month">May</th></tr>
-<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
-<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="sat">1</td><td class="sun">2</td></tr>
-<tr><td class="mon">3</td><td class="tue">4</td><td class="wed">5</td><td class="thu">6</td><td class="fri">7</td><td class="sat">8</td><td class="sun">9</td></tr>
-<tr><td class="mon">10</td><td class="tue">11</td><td class="wed">12</td><td class="thu">13</td><td class="fri">14</td><td class="sat">15</td><td class="sun">16</td></tr>
-<tr><td class="mon">17</td><td class="tue">18</td><td class="wed">19</td><td class="thu">20</td><td class="fri">21</td><td class="sat">22</td><td class="sun">23</td></tr>
-<tr><td class="mon">24</td><td class="tue">25</td><td class="wed">26</td><td class="thu">27</td><td class="fri">28</td><td class="sat">29</td><td class="sun">30</td></tr>
-<tr><td class="mon">31</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
-</table>
-</td><td><table border="0" cellpadding="0" cellspacing="0" class="month">
-<tr><th colspan="7" class="month">June</th></tr>
-<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
-<tr><td class="noday">&nbsp;</td><td class="tue">1</td><td class="wed">2</td><td class="thu">3</td><td class="fri">4</td><td class="sat">5</td><td class="sun">6</td></tr>
-<tr><td class="mon">7</td><td class="tue">8</td><td class="wed">9</td><td class="thu">10</td><td class="fri">11</td><td class="sat">12</td><td class="sun">13</td></tr>
-<tr><td class="mon">14</td><td class="tue">15</td><td class="wed">16</td><td class="thu">17</td><td class="fri">18</td><td class="sat">19</td><td class="sun">20</td></tr>
-<tr><td class="mon">21</td><td class="tue">22</td><td class="wed">23</td><td class="thu">24</td><td class="fri">25</td><td class="sat">26</td><td class="sun">27</td></tr>
-<tr><td class="mon">28</td><td class="tue">29</td><td class="wed">30</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
-</table>
-</td></tr><tr><td><table border="0" cellpadding="0" cellspacing="0" class="month">
-<tr><th colspan="7" class="month">July</th></tr>
-<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
-<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="thu">1</td><td class="fri">2</td><td class="sat">3</td><td class="sun">4</td></tr>
-<tr><td class="mon">5</td><td class="tue">6</td><td class="wed">7</td><td class="thu">8</td><td class="fri">9</td><td class="sat">10</td><td class="sun">11</td></tr>
-<tr><td class="mon">12</td><td class="tue">13</td><td class="wed">14</td><td class="thu">15</td><td class="fri">16</td><td class="sat">17</td><td class="sun">18</td></tr>
-<tr><td class="mon">19</td><td class="tue">20</td><td class="wed">21</td><td class="thu">22</td><td class="fri">23</td><td class="sat">24</td><td class="sun">25</td></tr>
-<tr><td class="mon">26</td><td class="tue">27</td><td class="wed">28</td><td class="thu">29</td><td class="fri">30</td><td class="sat">31</td><td class="noday">&nbsp;</td></tr>
-</table>
-</td><td><table border="0" cellpadding="0" cellspacing="0" class="month">
-<tr><th colspan="7" class="month">August</th></tr>
-<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
-<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="sun">1</td></tr>
-<tr><td class="mon">2</td><td class="tue">3</td><td class="wed">4</td><td class="thu">5</td><td class="fri">6</td><td class="sat">7</td><td class="sun">8</td></tr>
-<tr><td class="mon">9</td><td class="tue">10</td><td class="wed">11</td><td class="thu">12</td><td class="fri">13</td><td class="sat">14</td><td class="sun">15</td></tr>
-<tr><td class="mon">16</td><td class="tue">17</td><td class="wed">18</td><td class="thu">19</td><td class="fri">20</td><td class="sat">21</td><td class="sun">22</td></tr>
-<tr><td class="mon">23</td><td class="tue">24</td><td class="wed">25</td><td class="thu">26</td><td class="fri">27</td><td class="sat">28</td><td class="sun">29</td></tr>
-<tr><td class="mon">30</td><td class="tue">31</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
-</table>
-</td><td><table border="0" cellpadding="0" cellspacing="0" class="month">
-<tr><th colspan="7" class="month">September</th></tr>
-<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
-<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="wed">1</td><td class="thu">2</td><td class="fri">3</td><td class="sat">4</td><td class="sun">5</td></tr>
-<tr><td class="mon">6</td><td class="tue">7</td><td class="wed">8</td><td class="thu">9</td><td class="fri">10</td><td class="sat">11</td><td class="sun">12</td></tr>
-<tr><td class="mon">13</td><td class="tue">14</td><td class="wed">15</td><td class="thu">16</td><td class="fri">17</td><td class="sat">18</td><td class="sun">19</td></tr>
-<tr><td class="mon">20</td><td class="tue">21</td><td class="wed">22</td><td class="thu">23</td><td class="fri">24</td><td class="sat">25</td><td class="sun">26</td></tr>
-<tr><td class="mon">27</td><td class="tue">28</td><td class="wed">29</td><td class="thu">30</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
-</table>
-</td></tr><tr><td><table border="0" cellpadding="0" cellspacing="0" class="month">
-<tr><th colspan="7" class="month">October</th></tr>
-<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
-<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="fri">1</td><td class="sat">2</td><td class="sun">3</td></tr>
-<tr><td class="mon">4</td><td class="tue">5</td><td class="wed">6</td><td class="thu">7</td><td class="fri">8</td><td class="sat">9</td><td class="sun">10</td></tr>
-<tr><td class="mon">11</td><td class="tue">12</td><td class="wed">13</td><td class="thu">14</td><td class="fri">15</td><td class="sat">16</td><td class="sun">17</td></tr>
-<tr><td class="mon">18</td><td class="tue">19</td><td class="wed">20</td><td class="thu">21</td><td class="fri">22</td><td class="sat">23</td><td class="sun">24</td></tr>
-<tr><td class="mon">25</td><td class="tue">26</td><td class="wed">27</td><td class="thu">28</td><td class="fri">29</td><td class="sat">30</td><td class="sun">31</td></tr>
-</table>
-</td><td><table border="0" cellpadding="0" cellspacing="0" class="month">
-<tr><th colspan="7" class="month">November</th></tr>
-<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
-<tr><td class="mon">1</td><td class="tue">2</td><td class="wed">3</td><td class="thu">4</td><td class="fri">5</td><td class="sat">6</td><td class="sun">7</td></tr>
-<tr><td class="mon">8</td><td class="tue">9</td><td class="wed">10</td><td class="thu">11</td><td class="fri">12</td><td class="sat">13</td><td class="sun">14</td></tr>
-<tr><td class="mon">15</td><td class="tue">16</td><td class="wed">17</td><td class="thu">18</td><td class="fri">19</td><td class="sat">20</td><td class="sun">21</td></tr>
-<tr><td class="mon">22</td><td class="tue">23</td><td class="wed">24</td><td class="thu">25</td><td class="fri">26</td><td class="sat">27</td><td class="sun">28</td></tr>
-<tr><td class="mon">29</td><td class="tue">30</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
-</table>
-</td><td><table border="0" cellpadding="0" cellspacing="0" class="month">
-<tr><th colspan="7" class="month">December</th></tr>
-<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>
-<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="wed">1</td><td class="thu">2</td><td class="fri">3</td><td class="sat">4</td><td class="sun">5</td></tr>
-<tr><td class="mon">6</td><td class="tue">7</td><td class="wed">8</td><td class="thu">9</td><td class="fri">10</td><td class="sat">11</td><td class="sun">12</td></tr>
-<tr><td class="mon">13</td><td class="tue">14</td><td class="wed">15</td><td class="thu">16</td><td class="fri">17</td><td class="sat">18</td><td class="sun">19</td></tr>
-<tr><td class="mon">20</td><td class="tue">21</td><td class="wed">22</td><td class="thu">23</td><td class="fri">24</td><td class="sat">25</td><td class="sun">26</td></tr>
-<tr><td class="mon">27</td><td class="tue">28</td><td class="wed">29</td><td class="thu">30</td><td class="fri">31</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>
-</table>
-</td></tr></table></body>
-</html>
-"""
-
-
-class OutputTestCase(unittest.TestCase):
-    def normalize_calendar(self, s):
-        # Filters out locale dependent strings
-        def neitherspacenordigit(c):
-            return not c.isspace() and not c.isdigit()
-
-        lines = []
-        for line in s.splitlines(False):
-            # Drop texts, as they are locale dependent
-            if line and not filter(neitherspacenordigit, line):
-                lines.append(line)
-        return lines
-
-    def test_output(self):
-        self.assertEqual(
-            self.normalize_calendar(calendar.calendar(2004)),
-            self.normalize_calendar(result_2004_text)
-        )
-
-    def test_output_textcalendar(self):
-        self.assertEqual(
-            calendar.TextCalendar().formatyear(2004).strip(),
-            result_2004_text.strip()
-        )
-
-    def test_output_htmlcalendar(self):
-        self.assertEqual(
-            calendar.HTMLCalendar().formatyearpage(2004).strip(),
-            result_2004_html.strip()
-        )
-
-
-class CalendarTestCase(unittest.TestCase):
-    def test_isleap(self):
-        # Make sure that the return is right for a few years, and
-        # ensure that the return values are 1 or 0, not just true or
-        # false (see SF bug #485794).  Specific additional tests may
-        # be appropriate; this tests a single "cycle".
-        self.assertEqual(calendar.isleap(2000), 1)
-        self.assertEqual(calendar.isleap(2001), 0)
-        self.assertEqual(calendar.isleap(2002), 0)
-        self.assertEqual(calendar.isleap(2003), 0)
-
-    def test_setfirstweekday(self):
-        self.assertRaises(ValueError, calendar.setfirstweekday, 'flabber')
-        self.assertRaises(ValueError, calendar.setfirstweekday, -1)
-        self.assertRaises(ValueError, calendar.setfirstweekday, 200)
-        orig = calendar.firstweekday()
-        calendar.setfirstweekday(calendar.SUNDAY)
-        self.assertEqual(calendar.firstweekday(), calendar.SUNDAY)
-        calendar.setfirstweekday(calendar.MONDAY)
-        self.assertEqual(calendar.firstweekday(), calendar.MONDAY)
-        calendar.setfirstweekday(orig)
-
-    def test_enumerateweekdays(self):
-        self.assertRaises(IndexError, calendar.day_abbr.__getitem__, -10)
-        self.assertRaises(IndexError, calendar.day_name.__getitem__, 10)
-        self.assertEqual(len([d for d in calendar.day_abbr]), 7)
-
-    def test_days(self):
-        for attr in "day_name", "day_abbr":
-            value = getattr(calendar, attr)
-            self.assertEqual(len(value), 7)
-            self.assertEqual(len(value[:]), 7)
-            # ensure they're all unique
-            self.assertEqual(len(set(value)), 7)
-            # verify it "acts like a sequence" in two forms of iteration
-            self.assertEqual(value[::-1], list(reversed(value)))
-
-    def test_months(self):
-        for attr in "month_name", "month_abbr":
-            value = getattr(calendar, attr)
-            self.assertEqual(len(value), 13)
-            self.assertEqual(len(value[:]), 13)
-            self.assertEqual(value[0], "")
-            # ensure they're all unique
-            self.assertEqual(len(set(value)), 13)
-            # verify it "acts like a sequence" in two forms of iteration
-            self.assertEqual(value[::-1], list(reversed(value)))
-
-    def test_localecalendars(self):
-        # ensure that Locale{Text,HTML}Calendar resets the locale properly
-        # (it is still not thread-safe though)
-        old_october = calendar.TextCalendar().formatmonthname(2010, 10, 10)
-        try:
-            calendar.LocaleTextCalendar(locale='').formatmonthname(2010, 10, 10)
-        except locale.Error:
-            # cannot set the system default locale -- skip rest of test
-            return
-        calendar.LocaleHTMLCalendar(locale='').formatmonthname(2010, 10)
-        new_october = calendar.TextCalendar().formatmonthname(2010, 10, 10)
-        self.assertEquals(old_october, new_october)
-
-
-class MonthCalendarTestCase(unittest.TestCase):
-    def setUp(self):
-        self.oldfirstweekday = calendar.firstweekday()
-        calendar.setfirstweekday(self.firstweekday)
-
-    def tearDown(self):
-        calendar.setfirstweekday(self.oldfirstweekday)
-
-    def check_weeks(self, year, month, weeks):
-        cal = calendar.monthcalendar(year, month)
-        self.assertEqual(len(cal), len(weeks))
-        for i in xrange(len(weeks)):
-            self.assertEqual(weeks[i], sum(day != 0 for day in cal[i]))
-
-
-class MondayTestCase(MonthCalendarTestCase):
-    firstweekday = calendar.MONDAY
-
-    def test_february(self):
-        # A 28-day february starting on monday (7+7+7+7 days)
-        self.check_weeks(1999, 2, (7, 7, 7, 7))
-
-        # A 28-day february starting on tuesday (6+7+7+7+1 days)
-        self.check_weeks(2005, 2, (6, 7, 7, 7, 1))
-
-        # A 28-day february starting on sunday (1+7+7+7+6 days)
-        self.check_weeks(1987, 2, (1, 7, 7, 7, 6))
-
-        # A 29-day february starting on monday (7+7+7+7+1 days)
-        self.check_weeks(1988, 2, (7, 7, 7, 7, 1))
-
-        # A 29-day february starting on tuesday (6+7+7+7+2 days)
-        self.check_weeks(1972, 2, (6, 7, 7, 7, 2))
-
-        # A 29-day february starting on sunday (1+7+7+7+7 days)
-        self.check_weeks(2004, 2, (1, 7, 7, 7, 7))
-
-    def test_april(self):
-        # A 30-day april starting on monday (7+7+7+7+2 days)
-        self.check_weeks(1935, 4, (7, 7, 7, 7, 2))
-
-        # A 30-day april starting on tuesday (6+7+7+7+3 days)
-        self.check_weeks(1975, 4, (6, 7, 7, 7, 3))
-
-        # A 30-day april starting on sunday (1+7+7+7+7+1 days)
-        self.check_weeks(1945, 4, (1, 7, 7, 7, 7, 1))
-
-        # A 30-day april starting on saturday (2+7+7+7+7 days)
-        self.check_weeks(1995, 4, (2, 7, 7, 7, 7))
-
-        # A 30-day april starting on friday (3+7+7+7+6 days)
-        self.check_weeks(1994, 4, (3, 7, 7, 7, 6))
-
-    def test_december(self):
-        # A 31-day december starting on monday (7+7+7+7+3 days)
-        self.check_weeks(1980, 12, (7, 7, 7, 7, 3))
-
-        # A 31-day december starting on tuesday (6+7+7+7+4 days)
-        self.check_weeks(1987, 12, (6, 7, 7, 7, 4))
-
-        # A 31-day december starting on sunday (1+7+7+7+7+2 days)
-        self.check_weeks(1968, 12, (1, 7, 7, 7, 7, 2))
-
-        # A 31-day december starting on thursday (4+7+7+7+6 days)
-        self.check_weeks(1988, 12, (4, 7, 7, 7, 6))
-
-        # A 31-day december starting on friday (3+7+7+7+7 days)
-        self.check_weeks(2017, 12, (3, 7, 7, 7, 7))
-
-        # A 31-day december starting on saturday (2+7+7+7+7+1 days)
-        self.check_weeks(2068, 12, (2, 7, 7, 7, 7, 1))
-
-
-class SundayTestCase(MonthCalendarTestCase):
-    firstweekday = calendar.SUNDAY
-
-    def test_february(self):
-        # A 28-day february starting on sunday (7+7+7+7 days)
-        self.check_weeks(2009, 2, (7, 7, 7, 7))
-
-        # A 28-day february starting on monday (6+7+7+7+1 days)
-        self.check_weeks(1999, 2, (6, 7, 7, 7, 1))
-
-        # A 28-day february starting on saturday (1+7+7+7+6 days)
-        self.check_weeks(1997, 2, (1, 7, 7, 7, 6))
-
-        # A 29-day february starting on sunday (7+7+7+7+1 days)
-        self.check_weeks(2004, 2, (7, 7, 7, 7, 1))
-
-        # A 29-day february starting on monday (6+7+7+7+2 days)
-        self.check_weeks(1960, 2, (6, 7, 7, 7, 2))
-
-        # A 29-day february starting on saturday (1+7+7+7+7 days)
-        self.check_weeks(1964, 2, (1, 7, 7, 7, 7))
-
-    def test_april(self):
-        # A 30-day april starting on sunday (7+7+7+7+2 days)
-        self.check_weeks(1923, 4, (7, 7, 7, 7, 2))
-
-        # A 30-day april starting on monday (6+7+7+7+3 days)
-        self.check_weeks(1918, 4, (6, 7, 7, 7, 3))
-
-        # A 30-day april starting on saturday (1+7+7+7+7+1 days)
-        self.check_weeks(1950, 4, (1, 7, 7, 7, 7, 1))
-
-        # A 30-day april starting on friday (2+7+7+7+7 days)
-        self.check_weeks(1960, 4, (2, 7, 7, 7, 7))
-
-        # A 30-day april starting on thursday (3+7+7+7+6 days)
-        self.check_weeks(1909, 4, (3, 7, 7, 7, 6))
-
-    def test_december(self):
-        # A 31-day december starting on sunday (7+7+7+7+3 days)
-        self.check_weeks(2080, 12, (7, 7, 7, 7, 3))
-
-        # A 31-day december starting on monday (6+7+7+7+4 days)
-        self.check_weeks(1941, 12, (6, 7, 7, 7, 4))
-
-        # A 31-day december starting on saturday (1+7+7+7+7+2 days)
-        self.check_weeks(1923, 12, (1, 7, 7, 7, 7, 2))
-
-        # A 31-day december starting on wednesday (4+7+7+7+6 days)
-        self.check_weeks(1948, 12, (4, 7, 7, 7, 6))
-
-        # A 31-day december starting on thursday (3+7+7+7+7 days)
-        self.check_weeks(1927, 12, (3, 7, 7, 7, 7))
-
-        # A 31-day december starting on friday (2+7+7+7+7+1 days)
-        self.check_weeks(1995, 12, (2, 7, 7, 7, 7, 1))
-
-
-class MonthRangeTestCase(unittest.TestCase):
-    def test_january(self):
-        # Tests valid lower boundary case.
-        self.assertEqual(calendar.monthrange(2004,1), (3,31))
-
-    def test_february_leap(self):
-        # Tests February during leap year.
-        self.assertEqual(calendar.monthrange(2004,2), (6,29))
-
-    def test_february_nonleap(self):
-        # Tests February in non-leap year.
-        self.assertEqual(calendar.monthrange(2010,2), (0,28))
-
-    def test_december(self):
-        # Tests valid upper boundary case.
-        self.assertEqual(calendar.monthrange(2004,12), (2,31))
-
-    def test_zeroth_month(self):
-        # Tests low invalid boundary case.
-        with self.assertRaises(calendar.IllegalMonthError):
-            calendar.monthrange(2004, 0)
-
-    def test_thirteenth_month(self):
-        # Tests high invalid boundary case.
-        with self.assertRaises(calendar.IllegalMonthError):
-            calendar.monthrange(2004, 13)
-
-class LeapdaysTestCase(unittest.TestCase):
-    def test_no_range(self):
-        # test when no range i.e. two identical years as args
-        self.assertEqual(calendar.leapdays(2010,2010), 0)
-
-    def test_no_leapdays(self):
-        # test when no leap years in range
-        self.assertEqual(calendar.leapdays(2010,2011), 0)
-
-    def test_no_leapdays_upper_boundary(self):
-        # test no leap years in range, when upper boundary is a leap year
-        self.assertEqual(calendar.leapdays(2010,2012), 0)
-
-    def test_one_leapday_lower_boundary(self):
-        # test when one leap year in range, lower boundary is leap year
-        self.assertEqual(calendar.leapdays(2012,2013), 1)
-
-    def test_several_leapyears_in_range(self):
-        self.assertEqual(calendar.leapdays(1997,2020), 5)
-
-
-def test_main():
-    test_support.run_unittest(
-        OutputTestCase,
-        CalendarTestCase,
-        MondayTestCase,
-        SundayTestCase,
-        MonthRangeTestCase,
-        LeapdaysTestCase,
-    )
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_call.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_call.py
deleted file mode 100644
index b21b448..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_call.py
+++ /dev/null
@@ -1,134 +0,0 @@
-import unittest
-from test import test_support
-
-# The test cases here cover several paths through the function calling
-# code.  They depend on the METH_XXX flag that is used to define a C
-# function, which can't be verified from Python.  If the METH_XXX decl
-# for a C function changes, these tests may not cover the right paths.
-
-class CFunctionCalls(unittest.TestCase):
-
-    def test_varargs0(self):
-        self.assertRaises(TypeError, {}.has_key)
-
-    def test_varargs1(self):
-        with test_support.check_py3k_warnings():
-            {}.has_key(0)
-
-    def test_varargs2(self):
-        self.assertRaises(TypeError, {}.has_key, 0, 1)
-
-    def test_varargs0_ext(self):
-        try:
-            {}.has_key(*())
-        except TypeError:
-            pass
-
-    def test_varargs1_ext(self):
-        with test_support.check_py3k_warnings():
-            {}.has_key(*(0,))
-
-    def test_varargs2_ext(self):
-        try:
-            with test_support.check_py3k_warnings():
-                {}.has_key(*(1, 2))
-        except TypeError:
-            pass
-        else:
-            raise RuntimeError
-
-    def test_varargs0_kw(self):
-        self.assertRaises(TypeError, {}.has_key, x=2)
-
-    def test_varargs1_kw(self):
-        self.assertRaises(TypeError, {}.has_key, x=2)
-
-    def test_varargs2_kw(self):
-        self.assertRaises(TypeError, {}.has_key, x=2, y=2)
-
-    def test_oldargs0_0(self):
-        {}.keys()
-
-    def test_oldargs0_1(self):
-        self.assertRaises(TypeError, {}.keys, 0)
-
-    def test_oldargs0_2(self):
-        self.assertRaises(TypeError, {}.keys, 0, 1)
-
-    def test_oldargs0_0_ext(self):
-        {}.keys(*())
-
-    def test_oldargs0_1_ext(self):
-        try:
-            {}.keys(*(0,))
-        except TypeError:
-            pass
-        else:
-            raise RuntimeError
-
-    def test_oldargs0_2_ext(self):
-        try:
-            {}.keys(*(1, 2))
-        except TypeError:
-            pass
-        else:
-            raise RuntimeError
-
-    def test_oldargs0_0_kw(self):
-        try:
-            {}.keys(x=2)
-        except TypeError:
-            pass
-        else:
-            raise RuntimeError
-
-    def test_oldargs0_1_kw(self):
-        self.assertRaises(TypeError, {}.keys, x=2)
-
-    def test_oldargs0_2_kw(self):
-        self.assertRaises(TypeError, {}.keys, x=2, y=2)
-
-    def test_oldargs1_0(self):
-        self.assertRaises(TypeError, [].count)
-
-    def test_oldargs1_1(self):
-        [].count(1)
-
-    def test_oldargs1_2(self):
-        self.assertRaises(TypeError, [].count, 1, 2)
-
-    def test_oldargs1_0_ext(self):
-        try:
-            [].count(*())
-        except TypeError:
-            pass
-        else:
-            raise RuntimeError
-
-    def test_oldargs1_1_ext(self):
-        [].count(*(1,))
-
-    def test_oldargs1_2_ext(self):
-        try:
-            [].count(*(1, 2))
-        except TypeError:
-            pass
-        else:
-            raise RuntimeError
-
-    def test_oldargs1_0_kw(self):
-        self.assertRaises(TypeError, [].count, x=2)
-
-    def test_oldargs1_1_kw(self):
-        self.assertRaises(TypeError, [].count, {}, x=2)
-
-    def test_oldargs1_2_kw(self):
-        self.assertRaises(TypeError, [].count, x=2, y=2)
-
-
-def test_main():
-    test_support.run_unittest(CFunctionCalls)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_capi.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_capi.py
deleted file mode 100644
index 5013d34..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_capi.py
+++ /dev/null
@@ -1,140 +0,0 @@
-# Run the _testcapi module tests (tests for the Python/C API):  by defn,
-# these are all functions _testcapi exports whose name begins with 'test_'.
-
-from __future__ import with_statement
-import sys
-import time
-import random
-import unittest
-from test import test_support
-try:
-    import threading
-except ImportError:
-    threading = None
-import _testcapi
-
-@unittest.skipUnless(threading, 'Threading required for this test.')
-class TestPendingCalls(unittest.TestCase):
-
-    def pendingcalls_submit(self, l, n):
-        def callback():
-            #this function can be interrupted by thread switching so let's
-            #use an atomic operation
-            l.append(None)
-
-        for i in range(n):
-            time.sleep(random.random()*0.02) #0.01 secs on average
-            #try submitting callback until successful.
-            #rely on regular interrupt to flush queue if we are
-            #unsuccessful.
-            while True:
-                if _testcapi._pending_threadfunc(callback):
-                    break;
-
-    def pendingcalls_wait(self, l, n, context = None):
-        #now, stick around until l[0] has grown to 10
-        count = 0;
-        while len(l) != n:
-            #this busy loop is where we expect to be interrupted to
-            #run our callbacks.  Note that callbacks are only run on the
-            #main thread
-            if False and test_support.verbose:
-                print "(%i)"%(len(l),),
-            for i in xrange(1000):
-                a = i*i
-            if context and not context.event.is_set():
-                continue
-            count += 1
-            self.assertTrue(count < 10000,
-                "timeout waiting for %i callbacks, got %i"%(n, len(l)))
-        if False and test_support.verbose:
-            print "(%i)"%(len(l),)
-
-    def test_pendingcalls_threaded(self):
-        #do every callback on a separate thread
-        n = 32 #total callbacks
-        threads = []
-        class foo(object):pass
-        context = foo()
-        context.l = []
-        context.n = 2 #submits per thread
-        context.nThreads = n // context.n
-        context.nFinished = 0
-        context.lock = threading.Lock()
-        context.event = threading.Event()
-
-        for i in range(context.nThreads):
-            t = threading.Thread(target=self.pendingcalls_thread, args = (context,))
-            t.start()
-            threads.append(t)
-
-        self.pendingcalls_wait(context.l, n, context)
-
-        for t in threads:
-            t.join()
-
-    def pendingcalls_thread(self, context):
-        try:
-            self.pendingcalls_submit(context.l, context.n)
-        finally:
-            with context.lock:
-                context.nFinished += 1
-                nFinished = context.nFinished
-                if False and test_support.verbose:
-                    print "finished threads: ", nFinished
-            if nFinished == context.nThreads:
-                context.event.set()
-
-    def test_pendingcalls_non_threaded(self):
-        #again, just using the main thread, likely they will all be dispatched at
-        #once.  It is ok to ask for too many, because we loop until we find a slot.
-        #the loop can be interrupted to dispatch.
-        #there are only 32 dispatch slots, so we go for twice that!
-        l = []
-        n = 64
-        self.pendingcalls_submit(l, n)
-        self.pendingcalls_wait(l, n)
-
-
-def test_main():
-
-    for name in dir(_testcapi):
-        if name.startswith('test_'):
-            test = getattr(_testcapi, name)
-            if test_support.verbose:
-                print "internal", name
-            try:
-                test()
-            except _testcapi.error:
-                raise test_support.TestFailed, sys.exc_info()[1]
-
-    # some extra thread-state tests driven via _testcapi
-    def TestThreadState():
-        if test_support.verbose:
-            print "auto-thread-state"
-
-        idents = []
-
-        def callback():
-            idents.append(thread.get_ident())
-
-        _testcapi._test_thread_state(callback)
-        a = b = callback
-        time.sleep(1)
-        # Check our main thread is in the list exactly 3 times.
-        if idents.count(thread.get_ident()) != 3:
-            raise test_support.TestFailed, \
-                  "Couldn't find main thread correctly in the list"
-
-    if threading:
-        import thread
-        import time
-        TestThreadState()
-        t=threading.Thread(target=TestThreadState)
-        t.start()
-        t.join()
-
-    test_support.run_unittest(TestPendingCalls)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cd.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cd.py
deleted file mode 100644
index fc591f4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cd.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /usr/bin/env python
-"""Whimpy test script for the cd module
-   Roger E. Masse
-"""
-from test.test_support import verbose, import_module
-
-cd = import_module('cd')
-
-cdattrs = ['BLOCKSIZE', 'CDROM', 'DATASIZE', 'ERROR', 'NODISC', 'PAUSED', 'PLAYING', 'READY',
-           'STILL', '__doc__', '__name__', 'atime', 'audio', 'catalog', 'control', 'createparser', 'error',
-           'ident', 'index', 'msftoframe', 'open', 'pnum', 'ptime']
-
-
-# This is a very inobtrusive test for the existence of the cd module and all its
-# attributes.  More comprehensive examples can be found in Demo/cd and
-# require that you have a CD and a CD ROM drive
-
-def test_main():
-    # touch all the attributes of cd without doing anything
-    if verbose:
-        print 'Touching cd module attributes...'
-    for attr in cdattrs:
-        if verbose:
-            print 'touching: ', attr
-        getattr(cd, attr)
-
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cfgparser.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cfgparser.py
deleted file mode 100644
index e3406ed..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cfgparser.py
+++ /dev/null
@@ -1,598 +0,0 @@
-import ConfigParser
-import StringIO
-import os
-import unittest
-import UserDict
-
-from test import test_support
-
-
-class SortedDict(UserDict.UserDict):
-    def items(self):
-        result = self.data.items()
-        result.sort()
-        return result
-
-    def keys(self):
-        result = self.data.keys()
-        result.sort()
-        return result
-
-    def values(self):
-        # XXX never used?
-        result = self.items()
-        return [i[1] for i in result]
-
-    def iteritems(self): return iter(self.items())
-    def iterkeys(self): return iter(self.keys())
-    __iter__ = iterkeys
-    def itervalues(self): return iter(self.values())
-
-
-class TestCaseBase(unittest.TestCase):
-    allow_no_value = False
-
-    def newconfig(self, defaults=None):
-        if defaults is None:
-            self.cf = self.config_class(allow_no_value=self.allow_no_value)
-        else:
-            self.cf = self.config_class(defaults,
-                                        allow_no_value=self.allow_no_value)
-        return self.cf
-
-    def fromstring(self, string, defaults=None):
-        cf = self.newconfig(defaults)
-        sio = StringIO.StringIO(string)
-        cf.readfp(sio)
-        return cf
-
-    def test_basic(self):
-        config_string = (
-            "[Foo Bar]\n"
-            "foo=bar\n"
-            "[Spacey Bar]\n"
-            "foo = bar\n"
-            "[Commented Bar]\n"
-            "foo: bar ; comment\n"
-            "[Long Line]\n"
-            "foo: this line is much, much longer than my editor\n"
-            "   likes it.\n"
-            "[Section\\with$weird%characters[\t]\n"
-            "[Internationalized Stuff]\n"
-            "foo[bg]: Bulgarian\n"
-            "foo=Default\n"
-            "foo[en]=English\n"
-            "foo[de]=Deutsch\n"
-            "[Spaces]\n"
-            "key with spaces : value\n"
-            "another with spaces = splat!\n"
-            )
-        if self.allow_no_value:
-            config_string += (
-                "[NoValue]\n"
-                "option-without-value\n"
-                )
-
-        cf = self.fromstring(config_string)
-        L = cf.sections()
-        L.sort()
-        E = [r'Commented Bar',
-             r'Foo Bar',
-             r'Internationalized Stuff',
-             r'Long Line',
-             r'Section\with$weird%characters[' '\t',
-             r'Spaces',
-             r'Spacey Bar',
-             ]
-        if self.allow_no_value:
-            E.append(r'NoValue')
-        E.sort()
-        eq = self.assertEqual
-        eq(L, E)
-
-        # The use of spaces in the section names serves as a
-        # regression test for SourceForge bug #583248:
-        # http://www.python.org/sf/583248
-        eq(cf.get('Foo Bar', 'foo'), 'bar')
-        eq(cf.get('Spacey Bar', 'foo'), 'bar')
-        eq(cf.get('Commented Bar', 'foo'), 'bar')
-        eq(cf.get('Spaces', 'key with spaces'), 'value')
-        eq(cf.get('Spaces', 'another with spaces'), 'splat!')
-        if self.allow_no_value:
-            eq(cf.get('NoValue', 'option-without-value'), None)
-
-        self.assertNotIn('__name__', cf.options("Foo Bar"),
-                         '__name__ "option" should not be exposed by the API!')
-
-        # Make sure the right things happen for remove_option();
-        # added to include check for SourceForge bug #123324:
-        self.assertTrue(cf.remove_option('Foo Bar', 'foo'),
-                        "remove_option() failed to report existence of option")
-        self.assertFalse(cf.has_option('Foo Bar', 'foo'),
-                    "remove_option() failed to remove option")
-        self.assertFalse(cf.remove_option('Foo Bar', 'foo'),
-                    "remove_option() failed to report non-existence of option"
-                    " that was removed")
-
-        self.assertRaises(ConfigParser.NoSectionError,
-                          cf.remove_option, 'No Such Section', 'foo')
-
-        eq(cf.get('Long Line', 'foo'),
-           'this line is much, much longer than my editor\nlikes it.')
-
-    def test_case_sensitivity(self):
-        cf = self.newconfig()
-        cf.add_section("A")
-        cf.add_section("a")
-        L = cf.sections()
-        L.sort()
-        eq = self.assertEqual
-        eq(L, ["A", "a"])
-        cf.set("a", "B", "value")
-        eq(cf.options("a"), ["b"])
-        eq(cf.get("a", "b"), "value",
-           "could not locate option, expecting case-insensitive option names")
-        self.assertTrue(cf.has_option("a", "b"))
-        cf.set("A", "A-B", "A-B value")
-        for opt in ("a-b", "A-b", "a-B", "A-B"):
-            self.assertTrue(
-                cf.has_option("A", opt),
-                "has_option() returned false for option which should exist")
-        eq(cf.options("A"), ["a-b"])
-        eq(cf.options("a"), ["b"])
-        cf.remove_option("a", "B")
-        eq(cf.options("a"), [])
-
-        # SF bug #432369:
-        cf = self.fromstring(
-            "[MySection]\nOption: first line\n\tsecond line\n")
-        eq(cf.options("MySection"), ["option"])
-        eq(cf.get("MySection", "Option"), "first line\nsecond line")
-
-        # SF bug #561822:
-        cf = self.fromstring("[section]\nnekey=nevalue\n",
-                             defaults={"key":"value"})
-        self.assertTrue(cf.has_option("section", "Key"))
-
-
-    def test_default_case_sensitivity(self):
-        cf = self.newconfig({"foo": "Bar"})
-        self.assertEqual(
-            cf.get("DEFAULT", "Foo"), "Bar",
-            "could not locate option, expecting case-insensitive option names")
-        cf = self.newconfig({"Foo": "Bar"})
-        self.assertEqual(
-            cf.get("DEFAULT", "Foo"), "Bar",
-            "could not locate option, expecting case-insensitive defaults")
-
-    def test_parse_errors(self):
-        self.newconfig()
-        self.parse_error(ConfigParser.ParsingError,
-                         "[Foo]\n  extra-spaces: splat\n")
-        self.parse_error(ConfigParser.ParsingError,
-                         "[Foo]\n  extra-spaces= splat\n")
-        self.parse_error(ConfigParser.ParsingError,
-                         "[Foo]\n:value-without-option-name\n")
-        self.parse_error(ConfigParser.ParsingError,
-                         "[Foo]\n=value-without-option-name\n")
-        self.parse_error(ConfigParser.MissingSectionHeaderError,
-                         "No Section!\n")
-
-    def parse_error(self, exc, src):
-        sio = StringIO.StringIO(src)
-        self.assertRaises(exc, self.cf.readfp, sio)
-
-    def test_query_errors(self):
-        cf = self.newconfig()
-        self.assertEqual(cf.sections(), [],
-                         "new ConfigParser should have no defined sections")
-        self.assertFalse(cf.has_section("Foo"),
-                         "new ConfigParser should have no acknowledged "
-                         "sections")
-        self.assertRaises(ConfigParser.NoSectionError,
-                          cf.options, "Foo")
-        self.assertRaises(ConfigParser.NoSectionError,
-                          cf.set, "foo", "bar", "value")
-        self.get_error(ConfigParser.NoSectionError, "foo", "bar")
-        cf.add_section("foo")
-        self.get_error(ConfigParser.NoOptionError, "foo", "bar")
-
-    def get_error(self, exc, section, option):
-        try:
-            self.cf.get(section, option)
-        except exc, e:
-            return e
-        else:
-            self.fail("expected exception type %s.%s"
-                      % (exc.__module__, exc.__name__))
-
-    def test_boolean(self):
-        cf = self.fromstring(
-            "[BOOLTEST]\n"
-            "T1=1\n"
-            "T2=TRUE\n"
-            "T3=True\n"
-            "T4=oN\n"
-            "T5=yes\n"
-            "F1=0\n"
-            "F2=FALSE\n"
-            "F3=False\n"
-            "F4=oFF\n"
-            "F5=nO\n"
-            "E1=2\n"
-            "E2=foo\n"
-            "E3=-1\n"
-            "E4=0.1\n"
-            "E5=FALSE AND MORE"
-            )
-        for x in range(1, 5):
-            self.assertTrue(cf.getboolean('BOOLTEST', 't%d' % x))
-            self.assertFalse(cf.getboolean('BOOLTEST', 'f%d' % x))
-            self.assertRaises(ValueError,
-                              cf.getboolean, 'BOOLTEST', 'e%d' % x)
-
-    def test_weird_errors(self):
-        cf = self.newconfig()
-        cf.add_section("Foo")
-        self.assertRaises(ConfigParser.DuplicateSectionError,
-                          cf.add_section, "Foo")
-
-    def test_write(self):
-        config_string = (
-            "[Long Line]\n"
-            "foo: this line is much, much longer than my editor\n"
-            "   likes it.\n"
-            "[DEFAULT]\n"
-            "foo: another very\n"
-            " long line\n"
-            )
-        if self.allow_no_value:
-            config_string += (
-            "[Valueless]\n"
-            "option-without-value\n"
-            )
-
-        cf = self.fromstring(config_string)
-        output = StringIO.StringIO()
-        cf.write(output)
-        expect_string = (
-            "[DEFAULT]\n"
-            "foo = another very\n"
-            "\tlong line\n"
-            "\n"
-            "[Long Line]\n"
-            "foo = this line is much, much longer than my editor\n"
-            "\tlikes it.\n"
-            "\n"
-            )
-        if self.allow_no_value:
-            expect_string += (
-                "[Valueless]\n"
-                "option-without-value\n"
-                "\n"
-                )
-        self.assertEqual(output.getvalue(), expect_string)
-
-    def test_set_string_types(self):
-        cf = self.fromstring("[sect]\n"
-                             "option1=foo\n")
-        # Check that we don't get an exception when setting values in
-        # an existing section using strings:
-        class mystr(str):
-            pass
-        cf.set("sect", "option1", "splat")
-        cf.set("sect", "option1", mystr("splat"))
-        cf.set("sect", "option2", "splat")
-        cf.set("sect", "option2", mystr("splat"))
-        try:
-            unicode
-        except NameError:
-            pass
-        else:
-            cf.set("sect", "option1", unicode("splat"))
-            cf.set("sect", "option2", unicode("splat"))
-
-    def test_read_returns_file_list(self):
-        file1 = test_support.findfile("cfgparser.1")
-        # check when we pass a mix of readable and non-readable files:
-        cf = self.newconfig()
-        parsed_files = cf.read([file1, "nonexistent-file"])
-        self.assertEqual(parsed_files, [file1])
-        self.assertEqual(cf.get("Foo Bar", "foo"), "newbar")
-        # check when we pass only a filename:
-        cf = self.newconfig()
-        parsed_files = cf.read(file1)
-        self.assertEqual(parsed_files, [file1])
-        self.assertEqual(cf.get("Foo Bar", "foo"), "newbar")
-        # check when we pass only missing files:
-        cf = self.newconfig()
-        parsed_files = cf.read(["nonexistent-file"])
-        self.assertEqual(parsed_files, [])
-        # check when we pass no files:
-        cf = self.newconfig()
-        parsed_files = cf.read([])
-        self.assertEqual(parsed_files, [])
-
-    # shared by subclasses
-    def get_interpolation_config(self):
-        return self.fromstring(
-            "[Foo]\n"
-            "bar=something %(with1)s interpolation (1 step)\n"
-            "bar9=something %(with9)s lots of interpolation (9 steps)\n"
-            "bar10=something %(with10)s lots of interpolation (10 steps)\n"
-            "bar11=something %(with11)s lots of interpolation (11 steps)\n"
-            "with11=%(with10)s\n"
-            "with10=%(with9)s\n"
-            "with9=%(with8)s\n"
-            "with8=%(With7)s\n"
-            "with7=%(WITH6)s\n"
-            "with6=%(with5)s\n"
-            "With5=%(with4)s\n"
-            "WITH4=%(with3)s\n"
-            "with3=%(with2)s\n"
-            "with2=%(with1)s\n"
-            "with1=with\n"
-            "\n"
-            "[Mutual Recursion]\n"
-            "foo=%(bar)s\n"
-            "bar=%(foo)s\n"
-            "\n"
-            "[Interpolation Error]\n"
-            "name=%(reference)s\n",
-            # no definition for 'reference'
-            defaults={"getname": "%(__name__)s"})
-
-    def check_items_config(self, expected):
-        cf = self.fromstring(
-            "[section]\n"
-            "name = value\n"
-            "key: |%(name)s| \n"
-            "getdefault: |%(default)s|\n"
-            "getname: |%(__name__)s|",
-            defaults={"default": "<default>"})
-        L = list(cf.items("section"))
-        L.sort()
-        self.assertEqual(L, expected)
-
-
-class ConfigParserTestCase(TestCaseBase):
-    config_class = ConfigParser.ConfigParser
-    allow_no_value = True
-
-    def test_interpolation(self):
-        rawval = {
-            ConfigParser.ConfigParser: ("something %(with11)s "
-                                        "lots of interpolation (11 steps)"),
-            ConfigParser.SafeConfigParser: "%(with1)s",
-        }
-        cf = self.get_interpolation_config()
-        eq = self.assertEqual
-        eq(cf.get("Foo", "getname"), "Foo")
-        eq(cf.get("Foo", "bar"), "something with interpolation (1 step)")
-        eq(cf.get("Foo", "bar9"),
-           "something with lots of interpolation (9 steps)")
-        eq(cf.get("Foo", "bar10"),
-           "something with lots of interpolation (10 steps)")
-        self.get_error(ConfigParser.InterpolationDepthError, "Foo", "bar11")
-
-    def test_interpolation_missing_value(self):
-        self.get_interpolation_config()
-        e = self.get_error(ConfigParser.InterpolationError,
-                           "Interpolation Error", "name")
-        self.assertEqual(e.reference, "reference")
-        self.assertEqual(e.section, "Interpolation Error")
-        self.assertEqual(e.option, "name")
-
-    def test_items(self):
-        self.check_items_config([('default', '<default>'),
-                                 ('getdefault', '|<default>|'),
-                                 ('getname', '|section|'),
-                                 ('key', '|value|'),
-                                 ('name', 'value')])
-
-    def test_set_nonstring_types(self):
-        cf = self.newconfig()
-        cf.add_section('non-string')
-        cf.set('non-string', 'int', 1)
-        cf.set('non-string', 'list', [0, 1, 1, 2, 3, 5, 8, 13, '%('])
-        cf.set('non-string', 'dict', {'pi': 3.14159, '%(': 1,
-                                      '%(list)': '%(list)'})
-        cf.set('non-string', 'string_with_interpolation', '%(list)s')
-        cf.set('non-string', 'no-value')
-        self.assertEqual(cf.get('non-string', 'int', raw=True), 1)
-        self.assertRaises(TypeError, cf.get, 'non-string', 'int')
-        self.assertEqual(cf.get('non-string', 'list', raw=True),
-                         [0, 1, 1, 2, 3, 5, 8, 13, '%('])
-        self.assertRaises(TypeError, cf.get, 'non-string', 'list')
-        self.assertEqual(cf.get('non-string', 'dict', raw=True),
-                         {'pi': 3.14159, '%(': 1, '%(list)': '%(list)'})
-        self.assertRaises(TypeError, cf.get, 'non-string', 'dict')
-        self.assertEqual(cf.get('non-string', 'string_with_interpolation',
-                                raw=True), '%(list)s')
-        self.assertRaises(ValueError, cf.get, 'non-string',
-                          'string_with_interpolation', raw=False)
-        self.assertEqual(cf.get('non-string', 'no-value'), None)
-
-class MultilineValuesTestCase(TestCaseBase):
-    config_class = ConfigParser.ConfigParser
-    wonderful_spam = ("I'm having spam spam spam spam "
-                      "spam spam spam beaked beans spam "
-                      "spam spam and spam!").replace(' ', '\t\n')
-
-    def setUp(self):
-        cf = self.newconfig()
-        for i in range(100):
-            s = 'section{}'.format(i)
-            cf.add_section(s)
-            for j in range(10):
-                cf.set(s, 'lovely_spam{}'.format(j), self.wonderful_spam)
-        with open(test_support.TESTFN, 'w') as f:
-            cf.write(f)
-
-    def tearDown(self):
-        os.unlink(test_support.TESTFN)
-
-    def test_dominating_multiline_values(self):
-        # we're reading from file because this is where the code changed
-        # during performance updates in Python 3.2
-        cf_from_file = self.newconfig()
-        with open(test_support.TESTFN) as f:
-            cf_from_file.readfp(f)
-        self.assertEqual(cf_from_file.get('section8', 'lovely_spam4'),
-                         self.wonderful_spam.replace('\t\n', '\n'))
-
-class RawConfigParserTestCase(TestCaseBase):
-    config_class = ConfigParser.RawConfigParser
-
-    def test_interpolation(self):
-        cf = self.get_interpolation_config()
-        eq = self.assertEqual
-        eq(cf.get("Foo", "getname"), "%(__name__)s")
-        eq(cf.get("Foo", "bar"),
-           "something %(with1)s interpolation (1 step)")
-        eq(cf.get("Foo", "bar9"),
-           "something %(with9)s lots of interpolation (9 steps)")
-        eq(cf.get("Foo", "bar10"),
-           "something %(with10)s lots of interpolation (10 steps)")
-        eq(cf.get("Foo", "bar11"),
-           "something %(with11)s lots of interpolation (11 steps)")
-
-    def test_items(self):
-        self.check_items_config([('default', '<default>'),
-                                 ('getdefault', '|%(default)s|'),
-                                 ('getname', '|%(__name__)s|'),
-                                 ('key', '|%(name)s|'),
-                                 ('name', 'value')])
-
-    def test_set_nonstring_types(self):
-        cf = self.newconfig()
-        cf.add_section('non-string')
-        cf.set('non-string', 'int', 1)
-        cf.set('non-string', 'list', [0, 1, 1, 2, 3, 5, 8, 13])
-        cf.set('non-string', 'dict', {'pi': 3.14159})
-        self.assertEqual(cf.get('non-string', 'int'), 1)
-        self.assertEqual(cf.get('non-string', 'list'),
-                         [0, 1, 1, 2, 3, 5, 8, 13])
-        self.assertEqual(cf.get('non-string', 'dict'), {'pi': 3.14159})
-
-
-class SafeConfigParserTestCase(ConfigParserTestCase):
-    config_class = ConfigParser.SafeConfigParser
-
-    def test_safe_interpolation(self):
-        # See http://www.python.org/sf/511737
-        cf = self.fromstring("[section]\n"
-                             "option1=xxx\n"
-                             "option2=%(option1)s/xxx\n"
-                             "ok=%(option1)s/%%s\n"
-                             "not_ok=%(option2)s/%%s")
-        self.assertEqual(cf.get("section", "ok"), "xxx/%s")
-        self.assertEqual(cf.get("section", "not_ok"), "xxx/xxx/%s")
-
-    def test_set_malformatted_interpolation(self):
-        cf = self.fromstring("[sect]\n"
-                             "option1=foo\n")
-
-        self.assertEqual(cf.get('sect', "option1"), "foo")
-
-        self.assertRaises(ValueError, cf.set, "sect", "option1", "%foo")
-        self.assertRaises(ValueError, cf.set, "sect", "option1", "foo%")
-        self.assertRaises(ValueError, cf.set, "sect", "option1", "f%oo")
-
-        self.assertEqual(cf.get('sect', "option1"), "foo")
-
-        # bug #5741: double percents are *not* malformed
-        cf.set("sect", "option2", "foo%%bar")
-        self.assertEqual(cf.get("sect", "option2"), "foo%bar")
-
-    def test_set_nonstring_types(self):
-        cf = self.fromstring("[sect]\n"
-                             "option1=foo\n")
-        # Check that we get a TypeError when setting non-string values
-        # in an existing section:
-        self.assertRaises(TypeError, cf.set, "sect", "option1", 1)
-        self.assertRaises(TypeError, cf.set, "sect", "option1", 1.0)
-        self.assertRaises(TypeError, cf.set, "sect", "option1", object())
-        self.assertRaises(TypeError, cf.set, "sect", "option2", 1)
-        self.assertRaises(TypeError, cf.set, "sect", "option2", 1.0)
-        self.assertRaises(TypeError, cf.set, "sect", "option2", object())
-
-    def test_add_section_default_1(self):
-        cf = self.newconfig()
-        self.assertRaises(ValueError, cf.add_section, "default")
-
-    def test_add_section_default_2(self):
-        cf = self.newconfig()
-        self.assertRaises(ValueError, cf.add_section, "DEFAULT")
-
-
-class SafeConfigParserTestCaseNoValue(SafeConfigParserTestCase):
-    allow_no_value = True
-
-
-class Issue7005TestCase(unittest.TestCase):
-    """Test output when None is set() as a value and allow_no_value == False.
-
-    http://bugs.python.org/issue7005
-
-    """
-
-    expected_output = "[section]\noption = None\n\n"
-
-    def prepare(self, config_class):
-        # This is the default, but that's the point.
-        cp = config_class(allow_no_value=False)
-        cp.add_section("section")
-        cp.set("section", "option", None)
-        sio = StringIO.StringIO()
-        cp.write(sio)
-        return sio.getvalue()
-
-    def test_none_as_value_stringified(self):
-        output = self.prepare(ConfigParser.ConfigParser)
-        self.assertEqual(output, self.expected_output)
-
-    def test_none_as_value_stringified_raw(self):
-        output = self.prepare(ConfigParser.RawConfigParser)
-        self.assertEqual(output, self.expected_output)
-
-
-class SortedTestCase(RawConfigParserTestCase):
-    def newconfig(self, defaults=None):
-        self.cf = self.config_class(defaults=defaults, dict_type=SortedDict)
-        return self.cf
-
-    def test_sorted(self):
-        self.fromstring("[b]\n"
-                        "o4=1\n"
-                        "o3=2\n"
-                        "o2=3\n"
-                        "o1=4\n"
-                        "[a]\n"
-                        "k=v\n")
-        output = StringIO.StringIO()
-        self.cf.write(output)
-        self.assertEqual(output.getvalue(),
-                         "[a]\n"
-                         "k = v\n\n"
-                         "[b]\n"
-                         "o1 = 4\n"
-                         "o2 = 3\n"
-                         "o3 = 2\n"
-                         "o4 = 1\n\n")
-
-
-def test_main():
-    test_support.run_unittest(
-        ConfigParserTestCase,
-        MultilineValuesTestCase,
-        RawConfigParserTestCase,
-        SafeConfigParserTestCase,
-        SafeConfigParserTestCaseNoValue,
-        SortedTestCase,
-        Issue7005TestCase,
-        )
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cgi.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cgi.py
deleted file mode 100644
index a2bc87e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cgi.py
+++ /dev/null
@@ -1,386 +0,0 @@
-from test.test_support import run_unittest, check_warnings
-import cgi
-import os
-import sys
-import tempfile
-import unittest
-
-class HackedSysModule:
-    # The regression test will have real values in sys.argv, which
-    # will completely confuse the test of the cgi module
-    argv = []
-    stdin = sys.stdin
-
-cgi.sys = HackedSysModule()
-
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-class ComparableException:
-    def __init__(self, err):
-        self.err = err
-
-    def __str__(self):
-        return str(self.err)
-
-    def __cmp__(self, anExc):
-        if not isinstance(anExc, Exception):
-            return -1
-        x = cmp(self.err.__class__, anExc.__class__)
-        if x != 0:
-            return x
-        return cmp(self.err.args, anExc.args)
-
-    def __getattr__(self, attr):
-        return getattr(self.err, attr)
-
-def do_test(buf, method):
-    env = {}
-    if method == "GET":
-        fp = None
-        env['REQUEST_METHOD'] = 'GET'
-        env['QUERY_STRING'] = buf
-    elif method == "POST":
-        fp = StringIO(buf)
-        env['REQUEST_METHOD'] = 'POST'
-        env['CONTENT_TYPE'] = 'application/x-www-form-urlencoded'
-        env['CONTENT_LENGTH'] = str(len(buf))
-    else:
-        raise ValueError, "unknown method: %s" % method
-    try:
-        return cgi.parse(fp, env, strict_parsing=1)
-    except StandardError, err:
-        return ComparableException(err)
-
-parse_strict_test_cases = [
-    ("", ValueError("bad query field: ''")),
-    ("&", ValueError("bad query field: ''")),
-    ("&&", ValueError("bad query field: ''")),
-    (";", ValueError("bad query field: ''")),
-    (";&;", ValueError("bad query field: ''")),
-    # Should the next few really be valid?
-    ("=", {}),
-    ("=&=", {}),
-    ("=;=", {}),
-    # This rest seem to make sense
-    ("=a", {'': ['a']}),
-    ("&=a", ValueError("bad query field: ''")),
-    ("=a&", ValueError("bad query field: ''")),
-    ("=&a", ValueError("bad query field: 'a'")),
-    ("b=a", {'b': ['a']}),
-    ("b+=a", {'b ': ['a']}),
-    ("a=b=a", {'a': ['b=a']}),
-    ("a=+b=a", {'a': [' b=a']}),
-    ("&b=a", ValueError("bad query field: ''")),
-    ("b&=a", ValueError("bad query field: 'b'")),
-    ("a=a+b&b=b+c", {'a': ['a b'], 'b': ['b c']}),
-    ("a=a+b&a=b+a", {'a': ['a b', 'b a']}),
-    ("x=1&y=2.0&z=2-3.%2b0", {'x': ['1'], 'y': ['2.0'], 'z': ['2-3.+0']}),
-    ("x=1;y=2.0&z=2-3.%2b0", {'x': ['1'], 'y': ['2.0'], 'z': ['2-3.+0']}),
-    ("x=1;y=2.0;z=2-3.%2b0", {'x': ['1'], 'y': ['2.0'], 'z': ['2-3.+0']}),
-    ("Hbc5161168c542333633315dee1182227:key_store_seqid=400006&cuyer=r&view=bustomer&order_id=0bb2e248638833d48cb7fed300000f1b&expire=964546263&lobale=en-US&kid=130003.300038&ss=env",
-     {'Hbc5161168c542333633315dee1182227:key_store_seqid': ['400006'],
-      'cuyer': ['r'],
-      'expire': ['964546263'],
-      'kid': ['130003.300038'],
-      'lobale': ['en-US'],
-      'order_id': ['0bb2e248638833d48cb7fed300000f1b'],
-      'ss': ['env'],
-      'view': ['bustomer'],
-      }),
-
-    ("group_id=5470&set=custom&_assigned_to=31392&_status=1&_category=100&SUBMIT=Browse",
-     {'SUBMIT': ['Browse'],
-      '_assigned_to': ['31392'],
-      '_category': ['100'],
-      '_status': ['1'],
-      'group_id': ['5470'],
-      'set': ['custom'],
-      })
-    ]
-
-def first_elts(list):
-    return map(lambda x:x[0], list)
-
-def first_second_elts(list):
-    return map(lambda p:(p[0], p[1][0]), list)
-
-def gen_result(data, environ):
-    fake_stdin = StringIO(data)
-    fake_stdin.seek(0)
-    form = cgi.FieldStorage(fp=fake_stdin, environ=environ)
-
-    result = {}
-    for k, v in dict(form).items():
-        result[k] = isinstance(v, list) and form.getlist(k) or v.value
-
-    return result
-
-class CgiTests(unittest.TestCase):
-
-    def test_strict(self):
-        for orig, expect in parse_strict_test_cases:
-            # Test basic parsing
-            d = do_test(orig, "GET")
-            self.assertEqual(d, expect, "Error parsing %s" % repr(orig))
-            d = do_test(orig, "POST")
-            self.assertEqual(d, expect, "Error parsing %s" % repr(orig))
-
-            env = {'QUERY_STRING': orig}
-            fcd = cgi.FormContentDict(env)
-            sd = cgi.SvFormContentDict(env)
-            fs = cgi.FieldStorage(environ=env)
-            if isinstance(expect, dict):
-                # test dict interface
-                self.assertEqual(len(expect), len(fcd))
-                self.assertItemsEqual(expect.keys(), fcd.keys())
-                self.assertItemsEqual(expect.values(), fcd.values())
-                self.assertItemsEqual(expect.items(), fcd.items())
-                self.assertEqual(fcd.get("nonexistent field", "default"), "default")
-                self.assertEqual(len(sd), len(fs))
-                self.assertItemsEqual(sd.keys(), fs.keys())
-                self.assertEqual(fs.getvalue("nonexistent field", "default"), "default")
-                # test individual fields
-                for key in expect.keys():
-                    expect_val = expect[key]
-                    self.assertTrue(fcd.has_key(key))
-                    self.assertItemsEqual(fcd[key], expect[key])
-                    self.assertEqual(fcd.get(key, "default"), fcd[key])
-                    self.assertTrue(fs.has_key(key))
-                    if len(expect_val) > 1:
-                        single_value = 0
-                    else:
-                        single_value = 1
-                    try:
-                        val = sd[key]
-                    except IndexError:
-                        self.assertFalse(single_value)
-                        self.assertEqual(fs.getvalue(key), expect_val)
-                    else:
-                        self.assertTrue(single_value)
-                        self.assertEqual(val, expect_val[0])
-                        self.assertEqual(fs.getvalue(key), expect_val[0])
-                    self.assertItemsEqual(sd.getlist(key), expect_val)
-                    if single_value:
-                        self.assertItemsEqual(sd.values(),
-                                                first_elts(expect.values()))
-                        self.assertItemsEqual(sd.items(),
-                                                first_second_elts(expect.items()))
-
-    def test_weird_formcontentdict(self):
-        # Test the weird FormContentDict classes
-        env = {'QUERY_STRING': "x=1&y=2.0&z=2-3.%2b0&1=1abc"}
-        expect = {'x': 1, 'y': 2.0, 'z': '2-3.+0', '1': '1abc'}
-        d = cgi.InterpFormContentDict(env)
-        for k, v in expect.items():
-            self.assertEqual(d[k], v)
-        for k, v in d.items():
-            self.assertEqual(expect[k], v)
-        self.assertItemsEqual(expect.values(), d.values())
-
-    def test_log(self):
-        cgi.log("Testing")
-
-        cgi.logfp = StringIO()
-        cgi.initlog("%s", "Testing initlog 1")
-        cgi.log("%s", "Testing log 2")
-        self.assertEqual(cgi.logfp.getvalue(), "Testing initlog 1\nTesting log 2\n")
-        if os.path.exists("/dev/null"):
-            cgi.logfp = None
-            cgi.logfile = "/dev/null"
-            cgi.initlog("%s", "Testing log 3")
-            cgi.log("Testing log 4")
-
-    def test_fieldstorage_readline(self):
-        # FieldStorage uses readline, which has the capacity to read all
-        # contents of the input file into memory; we use readline's size argument
-        # to prevent that for files that do not contain any newlines in
-        # non-GET/HEAD requests
-        class TestReadlineFile:
-            def __init__(self, file):
-                self.file = file
-                self.numcalls = 0
-
-            def readline(self, size=None):
-                self.numcalls += 1
-                if size:
-                    return self.file.readline(size)
-                else:
-                    return self.file.readline()
-
-            def __getattr__(self, name):
-                file = self.__dict__['file']
-                a = getattr(file, name)
-                if not isinstance(a, int):
-                    setattr(self, name, a)
-                return a
-
-        f = TestReadlineFile(tempfile.TemporaryFile())
-        f.write('x' * 256 * 1024)
-        f.seek(0)
-        env = {'REQUEST_METHOD':'PUT'}
-        fs = cgi.FieldStorage(fp=f, environ=env)
-        # if we're not chunking properly, readline is only called twice
-        # (by read_binary); if we are chunking properly, it will be called 5 times
-        # as long as the chunksize is 1 << 16.
-        self.assertTrue(f.numcalls > 2)
-
-    def test_fieldstorage_multipart(self):
-        #Test basic FieldStorage multipart parsing
-        env = {'REQUEST_METHOD':'POST', 'CONTENT_TYPE':'multipart/form-data; boundary=---------------------------721837373350705526688164684', 'CONTENT_LENGTH':'558'}
-        postdata = """-----------------------------721837373350705526688164684
-Content-Disposition: form-data; name="id"
-
-1234
------------------------------721837373350705526688164684
-Content-Disposition: form-data; name="title"
-
-
------------------------------721837373350705526688164684
-Content-Disposition: form-data; name="file"; filename="test.txt"
-Content-Type: text/plain
-
-Testing 123.
-
------------------------------721837373350705526688164684
-Content-Disposition: form-data; name="submit"
-
- Add\x20
------------------------------721837373350705526688164684--
-"""
-        fs = cgi.FieldStorage(fp=StringIO(postdata), environ=env)
-        self.assertEqual(len(fs.list), 4)
-        expect = [{'name':'id', 'filename':None, 'value':'1234'},
-                  {'name':'title', 'filename':None, 'value':''},
-                  {'name':'file', 'filename':'test.txt','value':'Testing 123.\n'},
-                  {'name':'submit', 'filename':None, 'value':' Add '}]
-        for x in range(len(fs.list)):
-            for k, exp in expect[x].items():
-                got = getattr(fs.list[x], k)
-                self.assertEqual(got, exp)
-
-    _qs_result = {
-        'key1': 'value1',
-        'key2': ['value2x', 'value2y'],
-        'key3': 'value3',
-        'key4': 'value4'
-    }
-    def testQSAndUrlEncode(self):
-        data = "key2=value2x&key3=value3&key4=value4"
-        environ = {
-            'CONTENT_LENGTH':   str(len(data)),
-            'CONTENT_TYPE':     'application/x-www-form-urlencoded',
-            'QUERY_STRING':     'key1=value1&key2=value2y',
-            'REQUEST_METHOD':   'POST',
-        }
-        v = gen_result(data, environ)
-        self.assertEqual(self._qs_result, v)
-
-    def testQSAndFormData(self):
-        data = """
----123
-Content-Disposition: form-data; name="key2"
-
-value2y
----123
-Content-Disposition: form-data; name="key3"
-
-value3
----123
-Content-Disposition: form-data; name="key4"
-
-value4
----123--
-"""
-        environ = {
-            'CONTENT_LENGTH':   str(len(data)),
-            'CONTENT_TYPE':     'multipart/form-data; boundary=-123',
-            'QUERY_STRING':     'key1=value1&key2=value2x',
-            'REQUEST_METHOD':   'POST',
-        }
-        v = gen_result(data, environ)
-        self.assertEqual(self._qs_result, v)
-
-    def testQSAndFormDataFile(self):
-        data = """
----123
-Content-Disposition: form-data; name="key2"
-
-value2y
----123
-Content-Disposition: form-data; name="key3"
-
-value3
----123
-Content-Disposition: form-data; name="key4"
-
-value4
----123
-Content-Disposition: form-data; name="upload"; filename="fake.txt"
-Content-Type: text/plain
-
-this is the content of the fake file
-
----123--
-"""
-        environ = {
-            'CONTENT_LENGTH':   str(len(data)),
-            'CONTENT_TYPE':     'multipart/form-data; boundary=-123',
-            'QUERY_STRING':     'key1=value1&key2=value2x',
-            'REQUEST_METHOD':   'POST',
-        }
-        result = self._qs_result.copy()
-        result.update({
-            'upload': 'this is the content of the fake file\n'
-        })
-        v = gen_result(data, environ)
-        self.assertEqual(result, v)
-
-    def test_deprecated_parse_qs(self):
-        # this func is moved to urlparse, this is just a sanity check
-        with check_warnings(('cgi.parse_qs is deprecated, use urlparse.'
-                             'parse_qs instead', PendingDeprecationWarning)):
-            self.assertEqual({'a': ['A1'], 'B': ['B3'], 'b': ['B2']},
-                             cgi.parse_qs('a=A1&b=B2&B=B3'))
-
-    def test_deprecated_parse_qsl(self):
-        # this func is moved to urlparse, this is just a sanity check
-        with check_warnings(('cgi.parse_qsl is deprecated, use urlparse.'
-                             'parse_qsl instead', PendingDeprecationWarning)):
-            self.assertEqual([('a', 'A1'), ('b', 'B2'), ('B', 'B3')],
-                             cgi.parse_qsl('a=A1&b=B2&B=B3'))
-
-    def test_parse_header(self):
-        self.assertEqual(
-            cgi.parse_header("text/plain"),
-            ("text/plain", {}))
-        self.assertEqual(
-            cgi.parse_header("text/vnd.just.made.this.up ; "),
-            ("text/vnd.just.made.this.up", {}))
-        self.assertEqual(
-            cgi.parse_header("text/plain;charset=us-ascii"),
-            ("text/plain", {"charset": "us-ascii"}))
-        self.assertEqual(
-            cgi.parse_header('text/plain ; charset="us-ascii"'),
-            ("text/plain", {"charset": "us-ascii"}))
-        self.assertEqual(
-            cgi.parse_header('text/plain ; charset="us-ascii"; another=opt'),
-            ("text/plain", {"charset": "us-ascii", "another": "opt"}))
-        self.assertEqual(
-            cgi.parse_header('attachment; filename="silly.txt"'),
-            ("attachment", {"filename": "silly.txt"}))
-        self.assertEqual(
-            cgi.parse_header('attachment; filename="strange;name"'),
-            ("attachment", {"filename": "strange;name"}))
-        self.assertEqual(
-            cgi.parse_header('attachment; filename="strange;name";size=123;'),
-            ("attachment", {"filename": "strange;name", "size": "123"}))
-
-
-def test_main():
-    run_unittest(CgiTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_charmapcodec.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_charmapcodec.py
deleted file mode 100644
index 1f0fa04..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_charmapcodec.py
+++ /dev/null
@@ -1,56 +0,0 @@
-""" Python character mapping codec test
-
-This uses the test codec in testcodec.py and thus also tests the
-encodings package lookup scheme.
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright 2000 Guido van Rossum.
-
-"""#"
-
-import test.test_support, unittest
-
-import codecs
-
-# Register a search function which knows about our codec
-def codec_search_function(encoding):
-    if encoding == 'testcodec':
-        from test import testcodec
-        return tuple(testcodec.getregentry())
-    return None
-
-codecs.register(codec_search_function)
-
-# test codec's name (see test/testcodec.py)
-codecname = 'testcodec'
-
-class CharmapCodecTest(unittest.TestCase):
-    def test_constructorx(self):
-        self.assertEqual(unicode('abc', codecname), u'abc')
-        self.assertEqual(unicode('xdef', codecname), u'abcdef')
-        self.assertEqual(unicode('defx', codecname), u'defabc')
-        self.assertEqual(unicode('dxf', codecname), u'dabcf')
-        self.assertEqual(unicode('dxfx', codecname), u'dabcfabc')
-
-    def test_encodex(self):
-        self.assertEqual(u'abc'.encode(codecname), 'abc')
-        self.assertEqual(u'xdef'.encode(codecname), 'abcdef')
-        self.assertEqual(u'defx'.encode(codecname), 'defabc')
-        self.assertEqual(u'dxf'.encode(codecname), 'dabcf')
-        self.assertEqual(u'dxfx'.encode(codecname), 'dabcfabc')
-
-    def test_constructory(self):
-        self.assertEqual(unicode('ydef', codecname), u'def')
-        self.assertEqual(unicode('defy', codecname), u'def')
-        self.assertEqual(unicode('dyf', codecname), u'df')
-        self.assertEqual(unicode('dyfy', codecname), u'df')
-
-    def test_maptoundefined(self):
-        self.assertRaises(UnicodeError, unicode, 'abc\001', codecname)
-
-def test_main():
-    test.test_support.run_unittest(CharmapCodecTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cl.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cl.py
deleted file mode 100644
index 5199600..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cl.py
+++ /dev/null
@@ -1,82 +0,0 @@
-#! /usr/bin/env python
-"""Whimpy test script for the cl module
-   Roger E. Masse
-"""
-from test.test_support import verbose, import_module
-
-cl = import_module('cl')
-
-clattrs = ['ADDED_ALGORITHM_ERROR', 'ALAW', 'ALGORITHM_ID',
-'ALGORITHM_VERSION', 'AUDIO', 'AWARE_ERROR', 'AWARE_MPEG_AUDIO',
-'AWARE_MULTIRATE', 'AWCMP_CONST_QUAL', 'AWCMP_FIXED_RATE',
-'AWCMP_INDEPENDENT', 'AWCMP_JOINT_STEREO', 'AWCMP_LOSSLESS',
-'AWCMP_MPEG_LAYER_I', 'AWCMP_MPEG_LAYER_II', 'AWCMP_STEREO',
-'Algorithm', 'AlgorithmNumber', 'AlgorithmType', 'AudioFormatName',
-'BAD_ALGORITHM_NAME', 'BAD_ALGORITHM_TYPE', 'BAD_BLOCK_SIZE',
-'BAD_BOARD', 'BAD_BUFFERING', 'BAD_BUFFERLENGTH_NEG',
-'BAD_BUFFERLENGTH_ODD', 'BAD_BUFFER_EXISTS', 'BAD_BUFFER_HANDLE',
-'BAD_BUFFER_POINTER', 'BAD_BUFFER_QUERY_SIZE', 'BAD_BUFFER_SIZE',
-'BAD_BUFFER_SIZE_POINTER', 'BAD_BUFFER_TYPE',
-'BAD_COMPRESSION_SCHEME', 'BAD_COMPRESSOR_HANDLE',
-'BAD_COMPRESSOR_HANDLE_POINTER', 'BAD_FRAME_SIZE',
-'BAD_FUNCTIONALITY', 'BAD_FUNCTION_POINTER', 'BAD_HEADER_SIZE',
-'BAD_INITIAL_VALUE', 'BAD_INTERNAL_FORMAT', 'BAD_LICENSE',
-'BAD_MIN_GT_MAX', 'BAD_NO_BUFFERSPACE', 'BAD_NUMBER_OF_BLOCKS',
-'BAD_PARAM', 'BAD_PARAM_ID_POINTER', 'BAD_PARAM_TYPE', 'BAD_POINTER',
-'BAD_PVBUFFER', 'BAD_SCHEME_POINTER', 'BAD_STREAM_HEADER',
-'BAD_STRING_POINTER', 'BAD_TEXT_STRING_PTR', 'BEST_FIT',
-'BIDIRECTIONAL', 'BITRATE_POLICY', 'BITRATE_TARGET',
-'BITS_PER_COMPONENT', 'BLENDING', 'BLOCK_SIZE', 'BOTTOM_UP',
-'BUFFER_NOT_CREATED', 'BUF_DATA', 'BUF_FRAME', 'BytesPerPixel',
-'BytesPerSample', 'CHANNEL_POLICY', 'CHROMA_THRESHOLD', 'CODEC',
-'COMPONENTS', 'COMPRESSED_BUFFER_SIZE', 'COMPRESSION_RATIO',
-'COMPRESSOR', 'CONTINUOUS_BLOCK', 'CONTINUOUS_NONBLOCK',
-'CompressImage', 'DATA', 'DECOMPRESSOR', 'DecompressImage',
-'EDGE_THRESHOLD', 'ENABLE_IMAGEINFO', 'END_OF_SEQUENCE', 'ENUM_VALUE',
-'EXACT_COMPRESSION_RATIO', 'EXTERNAL_DEVICE', 'FLOATING_ENUM_VALUE',
-'FLOATING_RANGE_VALUE', 'FRAME', 'FRAME_BUFFER_SIZE',
-'FRAME_BUFFER_SIZE_ZERO', 'FRAME_RATE', 'FRAME_TYPE', 'G711_ALAW',
-'G711_ULAW', 'GRAYSCALE', 'GetAlgorithmName', 'HDCC',
-'HDCC_SAMPLES_PER_TILE', 'HDCC_TILE_THRESHOLD', 'HEADER_START_CODE',
-'IMAGE_HEIGHT', 'IMAGE_WIDTH', 'INTERNAL_FORMAT',
-'INTERNAL_IMAGE_HEIGHT', 'INTERNAL_IMAGE_WIDTH', 'INTRA', 'JPEG',
-'JPEG_ERROR', 'JPEG_NUM_PARAMS', 'JPEG_QUALITY_FACTOR',
-'JPEG_QUANTIZATION_TABLES', 'JPEG_SOFTWARE', 'JPEG_STREAM_HEADERS',
-'KEYFRAME', 'LAST_FRAME_INDEX', 'LAYER', 'LUMA_THRESHOLD',
-'MAX_NUMBER_OF_AUDIO_ALGORITHMS', 'MAX_NUMBER_OF_ORIGINAL_FORMATS',
-'MAX_NUMBER_OF_PARAMS', 'MAX_NUMBER_OF_VIDEO_ALGORITHMS', 'MONO',
-'MPEG_VIDEO', 'MVC1', 'MVC2', 'MVC2_BLENDING', 'MVC2_BLENDING_OFF',
-'MVC2_BLENDING_ON', 'MVC2_CHROMA_THRESHOLD', 'MVC2_EDGE_THRESHOLD',
-'MVC2_ERROR', 'MVC2_LUMA_THRESHOLD', 'NEXT_NOT_AVAILABLE',
-'NOISE_MARGIN', 'NONE', 'NUMBER_OF_FRAMES', 'NUMBER_OF_PARAMS',
-'ORIENTATION', 'ORIGINAL_FORMAT', 'OpenCompressor',
-'OpenDecompressor', 'PARAM_OUT_OF_RANGE', 'PREDICTED', 'PREROLL',
-'ParamID', 'ParamNumber', 'ParamType', 'QUALITY_FACTOR',
-'QUALITY_LEVEL', 'QueryAlgorithms', 'QueryMaxHeaderSize',
-'QueryScheme', 'QuerySchemeFromName', 'RANGE_VALUE', 'RGB', 'RGB332',
-'RGB8', 'RGBA', 'RGBX', 'RLE', 'RLE24', 'RTR', 'RTR1',
-'RTR_QUALITY_LEVEL', 'SAMPLES_PER_TILE', 'SCHEME_BUSY',
-'SCHEME_NOT_AVAILABLE', 'SPEED', 'STEREO_INTERLEAVED',
-'STREAM_HEADERS', 'SetDefault', 'SetMax', 'SetMin', 'TILE_THRESHOLD',
-'TOP_DOWN', 'ULAW', 'UNCOMPRESSED', 'UNCOMPRESSED_AUDIO',
-'UNCOMPRESSED_VIDEO', 'UNKNOWN_SCHEME', 'VIDEO', 'VideoFormatName',
-'Y', 'YCbCr', 'YCbCr422', 'YCbCr422DC', 'YCbCr422HC', 'YUV', 'YUV422',
-'YUV422DC', 'YUV422HC', '__doc__', '__name__', 'cvt_type', 'error']
-
-
-# This is a very inobtrusive test for the existence of the cl
-# module and all its attributes.
-
-def test_main():
-    # touch all the attributes of al without doing anything
-    if verbose:
-        print 'Touching cl module attributes...'
-    for attr in clattrs:
-        if verbose:
-            print 'touching: ', attr
-        getattr(cl, attr)
-
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_class.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_class.py
deleted file mode 100644
index 629c24e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_class.py
+++ /dev/null
@@ -1,626 +0,0 @@
-"Test the functionality of Python classes implementing operators."
-
-import unittest
-
-from test import test_support
-
-testmeths = [
-
-# Binary operations
-    "add",
-    "radd",
-    "sub",
-    "rsub",
-    "mul",
-    "rmul",
-    "div",
-    "rdiv",
-    "mod",
-    "rmod",
-    "divmod",
-    "rdivmod",
-    "pow",
-    "rpow",
-    "rshift",
-    "rrshift",
-    "lshift",
-    "rlshift",
-    "and",
-    "rand",
-    "or",
-    "ror",
-    "xor",
-    "rxor",
-
-# List/dict operations
-    "contains",
-    "getitem",
-    "getslice",
-    "setitem",
-    "setslice",
-    "delitem",
-    "delslice",
-
-# Unary operations
-    "neg",
-    "pos",
-    "abs",
-
-# generic operations
-    "init",
-    ]
-
-# These need to return something other than None
-#    "coerce",
-#    "hash",
-#    "str",
-#    "repr",
-#    "int",
-#    "long",
-#    "float",
-#    "oct",
-#    "hex",
-
-# These are separate because they can influence the test of other methods.
-#    "getattr",
-#    "setattr",
-#    "delattr",
-
-callLst = []
-def trackCall(f):
-    def track(*args, **kwargs):
-        callLst.append((f.__name__, args))
-        return f(*args, **kwargs)
-    return track
-
-class AllTests:
-    trackCall = trackCall
-
-    @trackCall
-    def __coerce__(self, *args):
-        return (self,) + args
-
-    @trackCall
-    def __hash__(self, *args):
-        return hash(id(self))
-
-    @trackCall
-    def __str__(self, *args):
-        return "AllTests"
-
-    @trackCall
-    def __repr__(self, *args):
-        return "AllTests"
-
-    @trackCall
-    def __int__(self, *args):
-        return 1
-
-    @trackCall
-    def __float__(self, *args):
-        return 1.0
-
-    @trackCall
-    def __long__(self, *args):
-        return 1L
-
-    @trackCall
-    def __oct__(self, *args):
-        return '01'
-
-    @trackCall
-    def __hex__(self, *args):
-        return '0x1'
-
-    @trackCall
-    def __cmp__(self, *args):
-        return 0
-
-# Synthesize all the other AllTests methods from the names in testmeths.
-
-method_template = """\
-@trackCall
-def __%(method)s__(self, *args):
-    pass
-"""
-
-for method in testmeths:
-    exec method_template % locals() in AllTests.__dict__
-
-del method, method_template
-
-class ClassTests(unittest.TestCase):
-    def setUp(self):
-        callLst[:] = []
-
-    def assertCallStack(self, expected_calls):
-        actualCallList = callLst[:]  # need to copy because the comparison below will add
-                                     # additional calls to callLst
-        if expected_calls != actualCallList:
-            self.fail("Expected call list:\n  %s\ndoes not match actual call list\n  %s" %
-                      (expected_calls, actualCallList))
-
-    def testInit(self):
-        foo = AllTests()
-        self.assertCallStack([("__init__", (foo,))])
-
-    def testBinaryOps(self):
-        testme = AllTests()
-        # Binary operations
-
-        callLst[:] = []
-        testme + 1
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__add__", (testme, 1))])
-
-        callLst[:] = []
-        1 + testme
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__radd__", (testme, 1))])
-
-        callLst[:] = []
-        testme - 1
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__sub__", (testme, 1))])
-
-        callLst[:] = []
-        1 - testme
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__rsub__", (testme, 1))])
-
-        callLst[:] = []
-        testme * 1
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__mul__", (testme, 1))])
-
-        callLst[:] = []
-        1 * testme
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__rmul__", (testme, 1))])
-
-        if 1/2 == 0:
-            callLst[:] = []
-            testme / 1
-            self.assertCallStack([("__coerce__", (testme, 1)), ("__div__", (testme, 1))])
-
-
-            callLst[:] = []
-            1 / testme
-            self.assertCallStack([("__coerce__", (testme, 1)), ("__rdiv__", (testme, 1))])
-
-        callLst[:] = []
-        testme % 1
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__mod__", (testme, 1))])
-
-        callLst[:] = []
-        1 % testme
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__rmod__", (testme, 1))])
-
-
-        callLst[:] = []
-        divmod(testme,1)
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__divmod__", (testme, 1))])
-
-        callLst[:] = []
-        divmod(1, testme)
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__rdivmod__", (testme, 1))])
-
-        callLst[:] = []
-        testme ** 1
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__pow__", (testme, 1))])
-
-        callLst[:] = []
-        1 ** testme
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__rpow__", (testme, 1))])
-
-        callLst[:] = []
-        testme >> 1
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__rshift__", (testme, 1))])
-
-        callLst[:] = []
-        1 >> testme
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__rrshift__", (testme, 1))])
-
-        callLst[:] = []
-        testme << 1
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__lshift__", (testme, 1))])
-
-        callLst[:] = []
-        1 << testme
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__rlshift__", (testme, 1))])
-
-        callLst[:] = []
-        testme & 1
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__and__", (testme, 1))])
-
-        callLst[:] = []
-        1 & testme
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__rand__", (testme, 1))])
-
-        callLst[:] = []
-        testme | 1
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__or__", (testme, 1))])
-
-        callLst[:] = []
-        1 | testme
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__ror__", (testme, 1))])
-
-        callLst[:] = []
-        testme ^ 1
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__xor__", (testme, 1))])
-
-        callLst[:] = []
-        1 ^ testme
-        self.assertCallStack([("__coerce__", (testme, 1)), ("__rxor__", (testme, 1))])
-
-    def testListAndDictOps(self):
-        testme = AllTests()
-
-        # List/dict operations
-
-        class Empty: pass
-
-        try:
-            1 in Empty()
-            self.fail('failed, should have raised TypeError')
-        except TypeError:
-            pass
-
-        callLst[:] = []
-        1 in testme
-        self.assertCallStack([('__contains__', (testme, 1))])
-
-        callLst[:] = []
-        testme[1]
-        self.assertCallStack([('__getitem__', (testme, 1))])
-
-        callLst[:] = []
-        testme[1] = 1
-        self.assertCallStack([('__setitem__', (testme, 1, 1))])
-
-        callLst[:] = []
-        del testme[1]
-        self.assertCallStack([('__delitem__', (testme, 1))])
-
-        callLst[:] = []
-        testme[:42]
-        self.assertCallStack([('__getslice__', (testme, 0, 42))])
-
-        callLst[:] = []
-        testme[:42] = "The Answer"
-        self.assertCallStack([('__setslice__', (testme, 0, 42, "The Answer"))])
-
-        callLst[:] = []
-        del testme[:42]
-        self.assertCallStack([('__delslice__', (testme, 0, 42))])
-
-        callLst[:] = []
-        testme[2:1024:10]
-        self.assertCallStack([('__getitem__', (testme, slice(2, 1024, 10)))])
-
-        callLst[:] = []
-        testme[2:1024:10] = "A lot"
-        self.assertCallStack([('__setitem__', (testme, slice(2, 1024, 10),
-                                                                    "A lot"))])
-        callLst[:] = []
-        del testme[2:1024:10]
-        self.assertCallStack([('__delitem__', (testme, slice(2, 1024, 10)))])
-
-        callLst[:] = []
-        testme[:42, ..., :24:, 24, 100]
-        self.assertCallStack([('__getitem__', (testme, (slice(None, 42, None),
-                                                        Ellipsis,
-                                                        slice(None, 24, None),
-                                                        24, 100)))])
-        callLst[:] = []
-        testme[:42, ..., :24:, 24, 100] = "Strange"
-        self.assertCallStack([('__setitem__', (testme, (slice(None, 42, None),
-                                                        Ellipsis,
-                                                        slice(None, 24, None),
-                                                        24, 100), "Strange"))])
-        callLst[:] = []
-        del testme[:42, ..., :24:, 24, 100]
-        self.assertCallStack([('__delitem__', (testme, (slice(None, 42, None),
-                                                        Ellipsis,
-                                                        slice(None, 24, None),
-                                                        24, 100)))])
-
-        # Now remove the slice hooks to see if converting normal slices to
-        #  slice object works.
-
-        getslice = AllTests.__getslice__
-        del AllTests.__getslice__
-        setslice = AllTests.__setslice__
-        del AllTests.__setslice__
-        delslice = AllTests.__delslice__
-        del AllTests.__delslice__
-
-        # XXX when using new-style classes the slice testme[:42] produces
-        #  slice(None, 42, None) instead of slice(0, 42, None). py3k will have
-        #  to change this test.
-        callLst[:] = []
-        testme[:42]
-        self.assertCallStack([('__getitem__', (testme, slice(0, 42, None)))])
-
-        callLst[:] = []
-        testme[:42] = "The Answer"
-        self.assertCallStack([('__setitem__', (testme, slice(0, 42, None),
-                                                                "The Answer"))])
-        callLst[:] = []
-        del testme[:42]
-        self.assertCallStack([('__delitem__', (testme, slice(0, 42, None)))])
-
-        # Restore the slice methods, or the tests will fail with regrtest -R.
-        AllTests.__getslice__ = getslice
-        AllTests.__setslice__ = setslice
-        AllTests.__delslice__ = delslice
-
-
-    def testUnaryOps(self):
-        testme = AllTests()
-
-        callLst[:] = []
-        -testme
-        self.assertCallStack([('__neg__', (testme,))])
-        callLst[:] = []
-        +testme
-        self.assertCallStack([('__pos__', (testme,))])
-        callLst[:] = []
-        abs(testme)
-        self.assertCallStack([('__abs__', (testme,))])
-        callLst[:] = []
-        int(testme)
-        self.assertCallStack([('__int__', (testme,))])
-        callLst[:] = []
-        long(testme)
-        self.assertCallStack([('__long__', (testme,))])
-        callLst[:] = []
-        float(testme)
-        self.assertCallStack([('__float__', (testme,))])
-        callLst[:] = []
-        oct(testme)
-        self.assertCallStack([('__oct__', (testme,))])
-        callLst[:] = []
-        hex(testme)
-        self.assertCallStack([('__hex__', (testme,))])
-
-
-    def testMisc(self):
-        testme = AllTests()
-
-        callLst[:] = []
-        hash(testme)
-        self.assertCallStack([('__hash__', (testme,))])
-
-        callLst[:] = []
-        repr(testme)
-        self.assertCallStack([('__repr__', (testme,))])
-
-        callLst[:] = []
-        str(testme)
-        self.assertCallStack([('__str__', (testme,))])
-
-        callLst[:] = []
-        testme == 1
-        self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (testme, 1))])
-
-        callLst[:] = []
-        testme < 1
-        self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (testme, 1))])
-
-        callLst[:] = []
-        testme > 1
-        self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (testme, 1))])
-
-        callLst[:] = []
-        eval('testme <> 1')  # XXX kill this in py3k
-        self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (testme, 1))])
-
-        callLst[:] = []
-        testme != 1
-        self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (testme, 1))])
-
-        callLst[:] = []
-        1 == testme
-        self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (1, testme))])
-
-        callLst[:] = []
-        1 < testme
-        self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (1, testme))])
-
-        callLst[:] = []
-        1 > testme
-        self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (1, testme))])
-
-        callLst[:] = []
-        eval('1 <> testme')
-        self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (1, testme))])
-
-        callLst[:] = []
-        1 != testme
-        self.assertCallStack([("__coerce__", (testme, 1)), ('__cmp__', (1, testme))])
-
-
-    def testGetSetAndDel(self):
-        # Interfering tests
-        class ExtraTests(AllTests):
-            @trackCall
-            def __getattr__(self, *args):
-                return "SomeVal"
-
-            @trackCall
-            def __setattr__(self, *args):
-                pass
-
-            @trackCall
-            def __delattr__(self, *args):
-                pass
-
-        testme = ExtraTests()
-
-        callLst[:] = []
-        testme.spam
-        self.assertCallStack([('__getattr__', (testme, "spam"))])
-
-        callLst[:] = []
-        testme.eggs = "spam, spam, spam and ham"
-        self.assertCallStack([('__setattr__', (testme, "eggs",
-                                               "spam, spam, spam and ham"))])
-
-        callLst[:] = []
-        del testme.cardinal
-        self.assertCallStack([('__delattr__', (testme, "cardinal"))])
-
-    def testDel(self):
-        x = []
-
-        class DelTest:
-            def __del__(self):
-                x.append("crab people, crab people")
-        testme = DelTest()
-        del testme
-        import gc
-        gc.collect()
-        self.assertEqual(["crab people, crab people"], x)
-
-    def testBadTypeReturned(self):
-        # return values of some method are type-checked
-        class BadTypeClass:
-            def __int__(self):
-                return None
-            __float__ = __int__
-            __long__ = __int__
-            __str__ = __int__
-            __repr__ = __int__
-            __oct__ = __int__
-            __hex__ = __int__
-
-        for f in [int, float, long, str, repr, oct, hex]:
-            self.assertRaises(TypeError, f, BadTypeClass())
-
-    def testMixIntsAndLongs(self):
-        # mixing up ints and longs is okay
-        class IntLongMixClass:
-            @trackCall
-            def __int__(self):
-                return 42L
-
-            @trackCall
-            def __long__(self):
-                return 64
-
-        mixIntAndLong = IntLongMixClass()
-
-        callLst[:] = []
-        as_int = int(mixIntAndLong)
-        self.assertEqual(type(as_int), long)
-        self.assertEqual(as_int, 42L)
-        self.assertCallStack([('__int__', (mixIntAndLong,))])
-
-        callLst[:] = []
-        as_long = long(mixIntAndLong)
-        self.assertEqual(type(as_long), long)
-        self.assertEqual(as_long, 64)
-        self.assertCallStack([('__long__', (mixIntAndLong,))])
-
-    def testHashStuff(self):
-        # Test correct errors from hash() on objects with comparisons but
-        #  no __hash__
-
-        class C0:
-            pass
-
-        hash(C0()) # This should work; the next two should raise TypeError
-
-        class C1:
-            def __cmp__(self, other): return 0
-
-        self.assertRaises(TypeError, hash, C1())
-
-        class C2:
-            def __eq__(self, other): return 1
-
-        self.assertRaises(TypeError, hash, C2())
-
-
-    def testSFBug532646(self):
-        # Test for SF bug 532646
-
-        class A:
-            pass
-        A.__call__ = A()
-        a = A()
-
-        try:
-            a() # This should not segfault
-        except RuntimeError:
-            pass
-        else:
-            self.fail("Failed to raise RuntimeError")
-
-    def testForExceptionsRaisedInInstanceGetattr2(self):
-        # Tests for exceptions raised in instance_getattr2().
-
-        def booh(self):
-            raise AttributeError("booh")
-
-        class A:
-            a = property(booh)
-        try:
-            A().a # Raised AttributeError: A instance has no attribute 'a'
-        except AttributeError, x:
-            if str(x) != "booh":
-                self.fail("attribute error for A().a got masked: %s" % x)
-
-        class E:
-            __eq__ = property(booh)
-        E() == E() # In debug mode, caused a C-level assert() to fail
-
-        class I:
-            __init__ = property(booh)
-        try:
-            # In debug mode, printed XXX undetected error and
-            #  raises AttributeError
-            I()
-        except AttributeError, x:
-            pass
-        else:
-            self.fail("attribute error for I.__init__ got masked")
-
-    def testHashComparisonOfMethods(self):
-        # Test comparison and hash of methods
-        class A:
-            def __init__(self, x):
-                self.x = x
-            def f(self):
-                pass
-            def g(self):
-                pass
-            def __eq__(self, other):
-                return self.x == other.x
-            def __hash__(self):
-                return self.x
-        class B(A):
-            pass
-
-        a1 = A(1)
-        a2 = A(2)
-        self.assertEqual(a1.f, a1.f)
-        self.assertNotEqual(a1.f, a2.f)
-        self.assertNotEqual(a1.f, a1.g)
-        self.assertEqual(a1.f, A(1).f)
-        self.assertEqual(hash(a1.f), hash(a1.f))
-        self.assertEqual(hash(a1.f), hash(A(1).f))
-
-        self.assertNotEqual(A.f, a1.f)
-        self.assertNotEqual(A.f, A.g)
-        self.assertEqual(B.f, A.f)
-        self.assertEqual(hash(B.f), hash(A.f))
-
-        # the following triggers a SystemError in 2.4
-        a = A(hash(A.f.im_func)^(-1))
-        hash(a.f)
-
-def test_main():
-    with test_support.check_py3k_warnings(
-            (".+__(get|set|del)slice__ has been removed", DeprecationWarning),
-            ("classic int division", DeprecationWarning),
-            ("<> not supported", DeprecationWarning)):
-        test_support.run_unittest(ClassTests)
-
-if __name__=='__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmath.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmath.py
deleted file mode 100644
index dfefeb5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmath.py
+++ /dev/null
@@ -1,474 +0,0 @@
-from test.test_support import run_unittest
-from test.test_math import parse_testfile, test_file
-import unittest
-import cmath, math
-from cmath import phase, polar, rect, pi
-
-INF = float('inf')
-NAN = float('nan')
-
-complex_zeros = [complex(x, y) for x in [0.0, -0.0] for y in [0.0, -0.0]]
-complex_infinities = [complex(x, y) for x, y in [
-        (INF, 0.0),  # 1st quadrant
-        (INF, 2.3),
-        (INF, INF),
-        (2.3, INF),
-        (0.0, INF),
-        (-0.0, INF), # 2nd quadrant
-        (-2.3, INF),
-        (-INF, INF),
-        (-INF, 2.3),
-        (-INF, 0.0),
-        (-INF, -0.0), # 3rd quadrant
-        (-INF, -2.3),
-        (-INF, -INF),
-        (-2.3, -INF),
-        (-0.0, -INF),
-        (0.0, -INF), # 4th quadrant
-        (2.3, -INF),
-        (INF, -INF),
-        (INF, -2.3),
-        (INF, -0.0)
-        ]]
-complex_nans = [complex(x, y) for x, y in [
-        (NAN, -INF),
-        (NAN, -2.3),
-        (NAN, -0.0),
-        (NAN, 0.0),
-        (NAN, 2.3),
-        (NAN, INF),
-        (-INF, NAN),
-        (-2.3, NAN),
-        (-0.0, NAN),
-        (0.0, NAN),
-        (2.3, NAN),
-        (INF, NAN)
-        ]]
-
-class CMathTests(unittest.TestCase):
-    # list of all functions in cmath
-    test_functions = [getattr(cmath, fname) for fname in [
-            'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh',
-            'cos', 'cosh', 'exp', 'log', 'log10', 'sin', 'sinh',
-            'sqrt', 'tan', 'tanh']]
-    # test first and second arguments independently for 2-argument log
-    test_functions.append(lambda x : cmath.log(x, 1729. + 0j))
-    test_functions.append(lambda x : cmath.log(14.-27j, x))
-
-    def setUp(self):
-        self.test_values = open(test_file)
-
-    def tearDown(self):
-        self.test_values.close()
-
-    def rAssertAlmostEqual(self, a, b, rel_err = 2e-15, abs_err = 5e-323,
-                           msg=None):
-        """Fail if the two floating-point numbers are not almost equal.
-
-        Determine whether floating-point values a and b are equal to within
-        a (small) rounding error.  The default values for rel_err and
-        abs_err are chosen to be suitable for platforms where a float is
-        represented by an IEEE 754 double.  They allow an error of between
-        9 and 19 ulps.
-        """
-
-        # special values testing
-        if math.isnan(a):
-            if math.isnan(b):
-                return
-            self.fail(msg or '{!r} should be nan'.format(b))
-
-        if math.isinf(a):
-            if a == b:
-                return
-            self.fail(msg or 'finite result where infinity expected: '
-                      'expected {!r}, got {!r}'.format(a, b))
-
-        # if both a and b are zero, check whether they have the same sign
-        # (in theory there are examples where it would be legitimate for a
-        # and b to have opposite signs; in practice these hardly ever
-        # occur).
-        if not a and not b:
-            if math.copysign(1., a) != math.copysign(1., b):
-                self.fail(msg or 'zero has wrong sign: expected {!r}, '
-                          'got {!r}'.format(a, b))
-
-        # if a-b overflows, or b is infinite, return False.  Again, in
-        # theory there are examples where a is within a few ulps of the
-        # max representable float, and then b could legitimately be
-        # infinite.  In practice these examples are rare.
-        try:
-            absolute_error = abs(b-a)
-        except OverflowError:
-            pass
-        else:
-            # test passes if either the absolute error or the relative
-            # error is sufficiently small.  The defaults amount to an
-            # error of between 9 ulps and 19 ulps on an IEEE-754 compliant
-            # machine.
-            if absolute_error <= max(abs_err, rel_err * abs(a)):
-                return
-        self.fail(msg or
-                  '{!r} and {!r} are not sufficiently close'.format(a, b))
-
-    def test_constants(self):
-        e_expected = 2.71828182845904523536
-        pi_expected = 3.14159265358979323846
-        self.assertAlmostEqual(cmath.pi, pi_expected, places=9,
-            msg="cmath.pi is {}; should be {}".format(cmath.pi, pi_expected))
-        self.assertAlmostEqual(cmath.e, e_expected, places=9,
-            msg="cmath.e is {}; should be {}".format(cmath.e, e_expected))
-
-    def test_user_object(self):
-        # Test automatic calling of __complex__ and __float__ by cmath
-        # functions
-
-        # some random values to use as test values; we avoid values
-        # for which any of the functions in cmath is undefined
-        # (i.e. 0., 1., -1., 1j, -1j) or would cause overflow
-        cx_arg = 4.419414439 + 1.497100113j
-        flt_arg = -6.131677725
-
-        # a variety of non-complex numbers, used to check that
-        # non-complex return values from __complex__ give an error
-        non_complexes = ["not complex", 1, 5L, 2., None,
-                         object(), NotImplemented]
-
-        # Now we introduce a variety of classes whose instances might
-        # end up being passed to the cmath functions
-
-        # usual case: new-style class implementing __complex__
-        class MyComplex(object):
-            def __init__(self, value):
-                self.value = value
-            def __complex__(self):
-                return self.value
-
-        # old-style class implementing __complex__
-        class MyComplexOS:
-            def __init__(self, value):
-                self.value = value
-            def __complex__(self):
-                return self.value
-
-        # classes for which __complex__ raises an exception
-        class SomeException(Exception):
-            pass
-        class MyComplexException(object):
-            def __complex__(self):
-                raise SomeException
-        class MyComplexExceptionOS:
-            def __complex__(self):
-                raise SomeException
-
-        # some classes not providing __float__ or __complex__
-        class NeitherComplexNorFloat(object):
-            pass
-        class NeitherComplexNorFloatOS:
-            pass
-        class MyInt(object):
-            def __int__(self): return 2
-            def __long__(self): return 2L
-            def __index__(self): return 2
-        class MyIntOS:
-            def __int__(self): return 2
-            def __long__(self): return 2L
-            def __index__(self): return 2
-
-        # other possible combinations of __float__ and __complex__
-        # that should work
-        class FloatAndComplex(object):
-            def __float__(self):
-                return flt_arg
-            def __complex__(self):
-                return cx_arg
-        class FloatAndComplexOS:
-            def __float__(self):
-                return flt_arg
-            def __complex__(self):
-                return cx_arg
-        class JustFloat(object):
-            def __float__(self):
-                return flt_arg
-        class JustFloatOS:
-            def __float__(self):
-                return flt_arg
-
-        for f in self.test_functions:
-            # usual usage
-            self.assertEqual(f(MyComplex(cx_arg)), f(cx_arg))
-            self.assertEqual(f(MyComplexOS(cx_arg)), f(cx_arg))
-            # other combinations of __float__ and __complex__
-            self.assertEqual(f(FloatAndComplex()), f(cx_arg))
-            self.assertEqual(f(FloatAndComplexOS()), f(cx_arg))
-            self.assertEqual(f(JustFloat()), f(flt_arg))
-            self.assertEqual(f(JustFloatOS()), f(flt_arg))
-            # TypeError should be raised for classes not providing
-            # either __complex__ or __float__, even if they provide
-            # __int__, __long__ or __index__.  An old-style class
-            # currently raises AttributeError instead of a TypeError;
-            # this could be considered a bug.
-            self.assertRaises(TypeError, f, NeitherComplexNorFloat())
-            self.assertRaises(TypeError, f, MyInt())
-            self.assertRaises(Exception, f, NeitherComplexNorFloatOS())
-            self.assertRaises(Exception, f, MyIntOS())
-            # non-complex return value from __complex__ -> TypeError
-            for bad_complex in non_complexes:
-                self.assertRaises(TypeError, f, MyComplex(bad_complex))
-                self.assertRaises(TypeError, f, MyComplexOS(bad_complex))
-            # exceptions in __complex__ should be propagated correctly
-            self.assertRaises(SomeException, f, MyComplexException())
-            self.assertRaises(SomeException, f, MyComplexExceptionOS())
-
-    def test_input_type(self):
-        # ints and longs should be acceptable inputs to all cmath
-        # functions, by virtue of providing a __float__ method
-        for f in self.test_functions:
-            for arg in [2, 2L, 2.]:
-                self.assertEqual(f(arg), f(arg.__float__()))
-
-        # but strings should give a TypeError
-        for f in self.test_functions:
-            for arg in ["a", "long_string", "0", "1j", ""]:
-                self.assertRaises(TypeError, f, arg)
-
-    def test_cmath_matches_math(self):
-        # check that corresponding cmath and math functions are equal
-        # for floats in the appropriate range
-
-        # test_values in (0, 1)
-        test_values = [0.01, 0.1, 0.2, 0.5, 0.9, 0.99]
-
-        # test_values for functions defined on [-1., 1.]
-        unit_interval = test_values + [-x for x in test_values] + \
-            [0., 1., -1.]
-
-        # test_values for log, log10, sqrt
-        positive = test_values + [1.] + [1./x for x in test_values]
-        nonnegative = [0.] + positive
-
-        # test_values for functions defined on the whole real line
-        real_line = [0.] + positive + [-x for x in positive]
-
-        test_functions = {
-            'acos' : unit_interval,
-            'asin' : unit_interval,
-            'atan' : real_line,
-            'cos' : real_line,
-            'cosh' : real_line,
-            'exp' : real_line,
-            'log' : positive,
-            'log10' : positive,
-            'sin' : real_line,
-            'sinh' : real_line,
-            'sqrt' : nonnegative,
-            'tan' : real_line,
-            'tanh' : real_line}
-
-        for fn, values in test_functions.items():
-            float_fn = getattr(math, fn)
-            complex_fn = getattr(cmath, fn)
-            for v in values:
-                z = complex_fn(v)
-                self.rAssertAlmostEqual(float_fn(v), z.real)
-                self.assertEqual(0., z.imag)
-
-        # test two-argument version of log with various bases
-        for base in [0.5, 2., 10.]:
-            for v in positive:
-                z = cmath.log(v, base)
-                self.rAssertAlmostEqual(math.log(v, base), z.real)
-                self.assertEqual(0., z.imag)
-
-    def test_specific_values(self):
-        if not float.__getformat__("double").startswith("IEEE"):
-            return
-
-        def rect_complex(z):
-            """Wrapped version of rect that accepts a complex number instead of
-            two float arguments."""
-            return cmath.rect(z.real, z.imag)
-
-        def polar_complex(z):
-            """Wrapped version of polar that returns a complex number instead of
-            two floats."""
-            return complex(*polar(z))
-
-        for id, fn, ar, ai, er, ei, flags in parse_testfile(test_file):
-            arg = complex(ar, ai)
-            expected = complex(er, ei)
-            if fn == 'rect':
-                function = rect_complex
-            elif fn == 'polar':
-                function = polar_complex
-            else:
-                function = getattr(cmath, fn)
-            if 'divide-by-zero' in flags or 'invalid' in flags:
-                try:
-                    actual = function(arg)
-                except ValueError:
-                    continue
-                else:
-                    self.fail('ValueError not raised in test '
-                          '{}: {}(complex({!r}, {!r}))'.format(id, fn, ar, ai))
-
-            if 'overflow' in flags:
-                try:
-                    actual = function(arg)
-                except OverflowError:
-                    continue
-                else:
-                    self.fail('OverflowError not raised in test '
-                          '{}: {}(complex({!r}, {!r}))'.format(id, fn, ar, ai))
-
-            actual = function(arg)
-
-            if 'ignore-real-sign' in flags:
-                actual = complex(abs(actual.real), actual.imag)
-                expected = complex(abs(expected.real), expected.imag)
-            if 'ignore-imag-sign' in flags:
-                actual = complex(actual.real, abs(actual.imag))
-                expected = complex(expected.real, abs(expected.imag))
-
-            # for the real part of the log function, we allow an
-            # absolute error of up to 2e-15.
-            if fn in ('log', 'log10'):
-                real_abs_err = 2e-15
-            else:
-                real_abs_err = 5e-323
-
-            error_message = (
-                '{}: {}(complex({!r}, {!r}))\n'
-                'Expected: complex({!r}, {!r})\n'
-                'Received: complex({!r}, {!r})\n'
-                'Received value insufficiently close to expected value.'
-                ).format(id, fn, ar, ai,
-                     expected.real, expected.imag,
-                     actual.real, actual.imag)
-            self.rAssertAlmostEqual(expected.real, actual.real,
-                                        abs_err=real_abs_err,
-                                        msg=error_message)
-            self.rAssertAlmostEqual(expected.imag, actual.imag,
-                                        msg=error_message)
-
-    def assertCISEqual(self, a, b):
-        eps = 1E-7
-        if abs(a[0] - b[0]) > eps or abs(a[1] - b[1]) > eps:
-            self.fail((a ,b))
-
-    def test_polar(self):
-        self.assertCISEqual(polar(0), (0., 0.))
-        self.assertCISEqual(polar(1.), (1., 0.))
-        self.assertCISEqual(polar(-1.), (1., pi))
-        self.assertCISEqual(polar(1j), (1., pi/2))
-        self.assertCISEqual(polar(-1j), (1., -pi/2))
-
-    def test_phase(self):
-        self.assertAlmostEqual(phase(0), 0.)
-        self.assertAlmostEqual(phase(1.), 0.)
-        self.assertAlmostEqual(phase(-1.), pi)
-        self.assertAlmostEqual(phase(-1.+1E-300j), pi)
-        self.assertAlmostEqual(phase(-1.-1E-300j), -pi)
-        self.assertAlmostEqual(phase(1j), pi/2)
-        self.assertAlmostEqual(phase(-1j), -pi/2)
-
-        # zeros
-        self.assertEqual(phase(complex(0.0, 0.0)), 0.0)
-        self.assertEqual(phase(complex(0.0, -0.0)), -0.0)
-        self.assertEqual(phase(complex(-0.0, 0.0)), pi)
-        self.assertEqual(phase(complex(-0.0, -0.0)), -pi)
-
-        # infinities
-        self.assertAlmostEqual(phase(complex(-INF, -0.0)), -pi)
-        self.assertAlmostEqual(phase(complex(-INF, -2.3)), -pi)
-        self.assertAlmostEqual(phase(complex(-INF, -INF)), -0.75*pi)
-        self.assertAlmostEqual(phase(complex(-2.3, -INF)), -pi/2)
-        self.assertAlmostEqual(phase(complex(-0.0, -INF)), -pi/2)
-        self.assertAlmostEqual(phase(complex(0.0, -INF)), -pi/2)
-        self.assertAlmostEqual(phase(complex(2.3, -INF)), -pi/2)
-        self.assertAlmostEqual(phase(complex(INF, -INF)), -pi/4)
-        self.assertEqual(phase(complex(INF, -2.3)), -0.0)
-        self.assertEqual(phase(complex(INF, -0.0)), -0.0)
-        self.assertEqual(phase(complex(INF, 0.0)), 0.0)
-        self.assertEqual(phase(complex(INF, 2.3)), 0.0)
-        self.assertAlmostEqual(phase(complex(INF, INF)), pi/4)
-        self.assertAlmostEqual(phase(complex(2.3, INF)), pi/2)
-        self.assertAlmostEqual(phase(complex(0.0, INF)), pi/2)
-        self.assertAlmostEqual(phase(complex(-0.0, INF)), pi/2)
-        self.assertAlmostEqual(phase(complex(-2.3, INF)), pi/2)
-        self.assertAlmostEqual(phase(complex(-INF, INF)), 0.75*pi)
-        self.assertAlmostEqual(phase(complex(-INF, 2.3)), pi)
-        self.assertAlmostEqual(phase(complex(-INF, 0.0)), pi)
-
-        # real or imaginary part NaN
-        for z in complex_nans:
-            self.assertTrue(math.isnan(phase(z)))
-
-    def test_abs(self):
-        # zeros
-        for z in complex_zeros:
-            self.assertEqual(abs(z), 0.0)
-
-        # infinities
-        for z in complex_infinities:
-            self.assertEqual(abs(z), INF)
-
-        # real or imaginary part NaN
-        self.assertEqual(abs(complex(NAN, -INF)), INF)
-        self.assertTrue(math.isnan(abs(complex(NAN, -2.3))))
-        self.assertTrue(math.isnan(abs(complex(NAN, -0.0))))
-        self.assertTrue(math.isnan(abs(complex(NAN, 0.0))))
-        self.assertTrue(math.isnan(abs(complex(NAN, 2.3))))
-        self.assertEqual(abs(complex(NAN, INF)), INF)
-        self.assertEqual(abs(complex(-INF, NAN)), INF)
-        self.assertTrue(math.isnan(abs(complex(-2.3, NAN))))
-        self.assertTrue(math.isnan(abs(complex(-0.0, NAN))))
-        self.assertTrue(math.isnan(abs(complex(0.0, NAN))))
-        self.assertTrue(math.isnan(abs(complex(2.3, NAN))))
-        self.assertEqual(abs(complex(INF, NAN)), INF)
-        self.assertTrue(math.isnan(abs(complex(NAN, NAN))))
-
-        # result overflows
-        if float.__getformat__("double").startswith("IEEE"):
-            self.assertRaises(OverflowError, abs, complex(1.4e308, 1.4e308))
-
-    def assertCEqual(self, a, b):
-        eps = 1E-7
-        if abs(a.real - b[0]) > eps or abs(a.imag - b[1]) > eps:
-            self.fail((a ,b))
-
-    def test_rect(self):
-        self.assertCEqual(rect(0, 0), (0, 0))
-        self.assertCEqual(rect(1, 0), (1., 0))
-        self.assertCEqual(rect(1, -pi), (-1., 0))
-        self.assertCEqual(rect(1, pi/2), (0, 1.))
-        self.assertCEqual(rect(1, -pi/2), (0, -1.))
-
-    def test_isnan(self):
-        self.assertFalse(cmath.isnan(1))
-        self.assertFalse(cmath.isnan(1j))
-        self.assertFalse(cmath.isnan(INF))
-        self.assertTrue(cmath.isnan(NAN))
-        self.assertTrue(cmath.isnan(complex(NAN, 0)))
-        self.assertTrue(cmath.isnan(complex(0, NAN)))
-        self.assertTrue(cmath.isnan(complex(NAN, NAN)))
-        self.assertTrue(cmath.isnan(complex(NAN, INF)))
-        self.assertTrue(cmath.isnan(complex(INF, NAN)))
-
-    def test_isinf(self):
-        self.assertFalse(cmath.isinf(1))
-        self.assertFalse(cmath.isinf(1j))
-        self.assertFalse(cmath.isinf(NAN))
-        self.assertTrue(cmath.isinf(INF))
-        self.assertTrue(cmath.isinf(complex(INF, 0)))
-        self.assertTrue(cmath.isinf(complex(0, INF)))
-        self.assertTrue(cmath.isinf(complex(INF, INF)))
-        self.assertTrue(cmath.isinf(complex(NAN, INF)))
-        self.assertTrue(cmath.isinf(complex(INF, NAN)))
-
-
-def test_main():
-    run_unittest(CMathTests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd.py
deleted file mode 100644
index 8660a55..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd.py
+++ /dev/null
@@ -1,217 +0,0 @@
-#!/usr/bin/env python
-"""
-Test script for the 'cmd' module
-Original by Michael Schneider
-"""
-
-
-import cmd
-import sys
-from test import test_support
-import re
-import unittest
-import StringIO
-
-class samplecmdclass(cmd.Cmd):
-    """
-    Instance the sampleclass:
-    >>> mycmd = samplecmdclass()
-
-    Test for the function parseline():
-    >>> mycmd.parseline("")
-    (None, None, '')
-    >>> mycmd.parseline("?")
-    ('help', '', 'help ')
-    >>> mycmd.parseline("?help")
-    ('help', 'help', 'help help')
-    >>> mycmd.parseline("!")
-    ('shell', '', 'shell ')
-    >>> mycmd.parseline("!command")
-    ('shell', 'command', 'shell command')
-    >>> mycmd.parseline("func")
-    ('func', '', 'func')
-    >>> mycmd.parseline("func arg1")
-    ('func', 'arg1', 'func arg1')
-
-
-    Test for the function onecmd():
-    >>> mycmd.onecmd("")
-    >>> mycmd.onecmd("add 4 5")
-    9
-    >>> mycmd.onecmd("")
-    9
-    >>> mycmd.onecmd("test")
-    *** Unknown syntax: test
-
-    Test for the function emptyline():
-    >>> mycmd.emptyline()
-    *** Unknown syntax: test
-
-    Test for the function default():
-    >>> mycmd.default("default")
-    *** Unknown syntax: default
-
-    Test for the function completedefault():
-    >>> mycmd.completedefault()
-    This is the completedefault methode
-    >>> mycmd.completenames("a")
-    ['add']
-
-    Test for the function completenames():
-    >>> mycmd.completenames("12")
-    []
-    >>> mycmd.completenames("help")
-    ['help']
-
-    Test for the function complete_help():
-    >>> mycmd.complete_help("a")
-    ['add']
-    >>> mycmd.complete_help("he")
-    ['help']
-    >>> mycmd.complete_help("12")
-    []
-    >>> sorted(mycmd.complete_help(""))
-    ['add', 'exit', 'help', 'shell']
-
-    Test for the function do_help():
-    >>> mycmd.do_help("testet")
-    *** No help on testet
-    >>> mycmd.do_help("add")
-    help text for add
-    >>> mycmd.onecmd("help add")
-    help text for add
-    >>> mycmd.do_help("")
-    <BLANKLINE>
-    Documented commands (type help <topic>):
-    ========================================
-    add
-    <BLANKLINE>
-    Undocumented commands:
-    ======================
-    exit  help  shell
-    <BLANKLINE>
-
-    Test for the function print_topics():
-    >>> mycmd.print_topics("header", ["command1", "command2"], 2 ,10)
-    header
-    ======
-    command1
-    command2
-    <BLANKLINE>
-
-    Test for the function columnize():
-    >>> mycmd.columnize([str(i) for i in xrange(20)])
-    0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19
-    >>> mycmd.columnize([str(i) for i in xrange(20)], 10)
-    0  7   14
-    1  8   15
-    2  9   16
-    3  10  17
-    4  11  18
-    5  12  19
-    6  13
-
-    This is a interactive test, put some commands in the cmdqueue attribute
-    and let it execute
-    This test includes the preloop(), postloop(), default(), emptyline(),
-    parseline(), do_help() functions
-    >>> mycmd.use_rawinput=0
-    >>> mycmd.cmdqueue=["", "add", "add 4 5", "help", "help add","exit"]
-    >>> mycmd.cmdloop()
-    Hello from preloop
-    help text for add
-    *** invalid number of arguments
-    9
-    <BLANKLINE>
-    Documented commands (type help <topic>):
-    ========================================
-    add
-    <BLANKLINE>
-    Undocumented commands:
-    ======================
-    exit  help  shell
-    <BLANKLINE>
-    help text for add
-    Hello from postloop
-    """
-
-    def preloop(self):
-        print "Hello from preloop"
-
-    def postloop(self):
-        print "Hello from postloop"
-
-    def completedefault(self, *ignored):
-        print "This is the completedefault methode"
-        return
-
-    def complete_command(self):
-        print "complete command"
-        return
-
-    def do_shell(self, s):
-        pass
-
-    def do_add(self, s):
-        l = s.split()
-        if len(l) != 2:
-            print "*** invalid number of arguments"
-            return
-        try:
-            l = [int(i) for i in l]
-        except ValueError:
-            print "*** arguments should be numbers"
-            return
-        print l[0]+l[1]
-
-    def help_add(self):
-        print "help text for add"
-        return
-
-    def do_exit(self, arg):
-        return True
-
-
-class TestAlternateInput(unittest.TestCase):
-
-    class simplecmd(cmd.Cmd):
-
-        def do_print(self, args):
-            print >>self.stdout, args
-
-        def do_EOF(self, args):
-            return True
-
-    def test_file_with_missing_final_nl(self):
-        input = StringIO.StringIO("print test\nprint test2")
-        output = StringIO.StringIO()
-        cmd = self.simplecmd(stdin=input, stdout=output)
-        cmd.use_rawinput = False
-        cmd.cmdloop()
-        self.assertMultiLineEqual(output.getvalue(),
-            ("(Cmd) test\n"
-             "(Cmd) test2\n"
-             "(Cmd) "))
-
-
-def test_main(verbose=None):
-    from test import test_cmd
-    test_support.run_doctest(test_cmd, verbose)
-    test_support.run_unittest(TestAlternateInput)
-
-def test_coverage(coverdir):
-    trace = test_support.import_module('trace')
-    tracer=trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix,],
-                        trace=0, count=1)
-    tracer.run('reload(cmd);test_main()')
-    r=tracer.results()
-    print "Writing coverage results..."
-    r.write_results(show_missing=True, summary=True, coverdir=coverdir)
-
-if __name__ == "__main__":
-    if "-c" in sys.argv:
-        test_coverage('/tmp/cmd.cover')
-    elif "-i" in sys.argv:
-        samplecmdclass().cmdloop()
-    else:
-        test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd_line.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd_line.py
deleted file mode 100644
index 8e25e9a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd_line.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Tests invocation of the interpreter with various command line arguments
-# All tests are executed with environment variables ignored
-# See test_cmd_line_script.py for testing of script execution
-
-import test.test_support, unittest
-import sys
-from test.script_helper import spawn_python, kill_python, python_exit_code
-
-
-class CmdLineTest(unittest.TestCase):
-    def start_python(self, *args):
-        p = spawn_python(*args)
-        return kill_python(p)
-
-    def exit_code(self, *args):
-        return python_exit_code(*args)
-
-    def test_directories(self):
-        self.assertNotEqual(self.exit_code('.'), 0)
-        self.assertNotEqual(self.exit_code('< .'), 0)
-
-    def verify_valid_flag(self, cmd_line):
-        data = self.start_python(cmd_line)
-        self.assertTrue(data == '' or data.endswith('\n'))
-        self.assertNotIn('Traceback', data)
-
-    def test_optimize(self):
-        self.verify_valid_flag('-O')
-        self.verify_valid_flag('-OO')
-
-    def test_q(self):
-        self.verify_valid_flag('-Qold')
-        self.verify_valid_flag('-Qnew')
-        self.verify_valid_flag('-Qwarn')
-        self.verify_valid_flag('-Qwarnall')
-
-    def test_site_flag(self):
-        self.verify_valid_flag('-S')
-
-    def test_usage(self):
-        self.assertIn('usage', self.start_python('-h'))
-
-    def test_version(self):
-        version = 'Python %d.%d' % sys.version_info[:2]
-        self.assertTrue(self.start_python('-V').startswith(version))
-
-    def test_run_module(self):
-        # Test expected operation of the '-m' switch
-        # Switch needs an argument
-        self.assertNotEqual(self.exit_code('-m'), 0)
-        # Check we get an error for a nonexistent module
-        self.assertNotEqual(
-            self.exit_code('-m', 'fnord43520xyz'),
-            0)
-        # Check the runpy module also gives an error for
-        # a nonexistent module
-        self.assertNotEqual(
-            self.exit_code('-m', 'runpy', 'fnord43520xyz'),
-            0)
-        # All good if module is located and run successfully
-        self.assertEqual(
-            self.exit_code('-m', 'timeit', '-n', '1'),
-            0)
-
-    def test_run_module_bug1764407(self):
-        # -m and -i need to play well together
-        # Runs the timeit module and checks the __main__
-        # namespace has been populated appropriately
-        p = spawn_python('-i', '-m', 'timeit', '-n', '1')
-        p.stdin.write('Timer\n')
-        p.stdin.write('exit()\n')
-        data = kill_python(p)
-        self.assertTrue(data.startswith('1 loop'))
-        self.assertIn('__main__.Timer', data)
-
-    def test_run_code(self):
-        # Test expected operation of the '-c' switch
-        # Switch needs an argument
-        self.assertNotEqual(self.exit_code('-c'), 0)
-        # Check we get an error for an uncaught exception
-        self.assertNotEqual(
-            self.exit_code('-c', 'raise Exception'),
-            0)
-        # All good if execution is successful
-        self.assertEqual(
-            self.exit_code('-c', 'pass'),
-            0)
-
-
-def test_main():
-    test.test_support.run_unittest(CmdLineTest)
-    test.test_support.reap_children()
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd_line_script.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd_line_script.py
deleted file mode 100644
index 8352e51..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cmd_line_script.py
+++ /dev/null
@@ -1,213 +0,0 @@
-# Tests command line execution of scripts
-
-import unittest
-import os
-import os.path
-import test.test_support
-from test.script_helper import (run_python,
-                                temp_dir, make_script, compile_script,
-                                make_pkg, make_zip_script, make_zip_pkg)
-
-verbose = test.test_support.verbose
-
-
-test_source = """\
-# Script may be run with optimisation enabled, so don't rely on assert
-# statements being executed
-def assertEqual(lhs, rhs):
-    if lhs != rhs:
-        raise AssertionError('%r != %r' % (lhs, rhs))
-def assertIdentical(lhs, rhs):
-    if lhs is not rhs:
-        raise AssertionError('%r is not %r' % (lhs, rhs))
-# Check basic code execution
-result = ['Top level assignment']
-def f():
-    result.append('Lower level reference')
-f()
-assertEqual(result, ['Top level assignment', 'Lower level reference'])
-# Check population of magic variables
-assertEqual(__name__, '__main__')
-print '__file__==%r' % __file__
-print '__package__==%r' % __package__
-# Check the sys module
-import sys
-assertIdentical(globals(), sys.modules[__name__].__dict__)
-print 'sys.argv[0]==%r' % sys.argv[0]
-"""
-
-def _make_test_script(script_dir, script_basename, source=test_source):
-    return make_script(script_dir, script_basename, source)
-
-def _make_test_zip_pkg(zip_dir, zip_basename, pkg_name, script_basename,
-                       source=test_source, depth=1):
-    return make_zip_pkg(zip_dir, zip_basename, pkg_name, script_basename,
-                        source, depth)
-
-# There's no easy way to pass the script directory in to get
-# -m to work (avoiding that is the whole point of making
-# directories and zipfiles executable!)
-# So we fake it for testing purposes with a custom launch script
-launch_source = """\
-import sys, os.path, runpy
-sys.path.insert(0, %s)
-runpy._run_module_as_main(%r)
-"""
-
-def _make_launch_script(script_dir, script_basename, module_name, path=None):
-    if path is None:
-        path = "os.path.dirname(__file__)"
-    else:
-        path = repr(path)
-    source = launch_source % (path, module_name)
-    return make_script(script_dir, script_basename, source)
-
-class CmdLineTest(unittest.TestCase):
-    def _check_script(self, script_name, expected_file,
-                            expected_argv0, expected_package,
-                            *cmd_line_switches):
-        run_args = cmd_line_switches + (script_name,)
-        exit_code, data = run_python(*run_args)
-        if verbose:
-            print 'Output from test script %r:' % script_name
-            print data
-        self.assertEqual(exit_code, 0)
-        printed_file = '__file__==%r' % expected_file
-        printed_argv0 = 'sys.argv[0]==%r' % expected_argv0
-        printed_package = '__package__==%r' % expected_package
-        if verbose:
-            print 'Expected output:'
-            print printed_file
-            print printed_package
-            print printed_argv0
-        self.assertIn(printed_file, data)
-        self.assertIn(printed_package, data)
-        self.assertIn(printed_argv0, data)
-
-    def _check_import_error(self, script_name, expected_msg,
-                            *cmd_line_switches):
-        run_args = cmd_line_switches + (script_name,)
-        exit_code, data = run_python(*run_args)
-        if verbose:
-            print 'Output from test script %r:' % script_name
-            print data
-            print 'Expected output: %r' % expected_msg
-        self.assertIn(expected_msg, data)
-
-    def test_basic_script(self):
-        with temp_dir() as script_dir:
-            script_name = _make_test_script(script_dir, 'script')
-            self._check_script(script_name, script_name, script_name, None)
-
-    def test_script_compiled(self):
-        with temp_dir() as script_dir:
-            script_name = _make_test_script(script_dir, 'script')
-            compiled_name = compile_script(script_name)
-            os.remove(script_name)
-            self._check_script(compiled_name, compiled_name, compiled_name, None)
-
-    def test_directory(self):
-        with temp_dir() as script_dir:
-            script_name = _make_test_script(script_dir, '__main__')
-            self._check_script(script_dir, script_name, script_dir, '')
-
-    def test_directory_compiled(self):
-        with temp_dir() as script_dir:
-            script_name = _make_test_script(script_dir, '__main__')
-            compiled_name = compile_script(script_name)
-            os.remove(script_name)
-            self._check_script(script_dir, compiled_name, script_dir, '')
-
-    def test_directory_error(self):
-        with temp_dir() as script_dir:
-            msg = "can't find '__main__' module in %r" % script_dir
-            self._check_import_error(script_dir, msg)
-
-    def test_zipfile(self):
-        with temp_dir() as script_dir:
-            script_name = _make_test_script(script_dir, '__main__')
-            zip_name, run_name = make_zip_script(script_dir, 'test_zip', script_name)
-            self._check_script(zip_name, run_name, zip_name, '')
-
-    def test_zipfile_compiled(self):
-        with temp_dir() as script_dir:
-            script_name = _make_test_script(script_dir, '__main__')
-            compiled_name = compile_script(script_name)
-            zip_name, run_name = make_zip_script(script_dir, 'test_zip', compiled_name)
-            self._check_script(zip_name, run_name, zip_name, '')
-
-    def test_zipfile_error(self):
-        with temp_dir() as script_dir:
-            script_name = _make_test_script(script_dir, 'not_main')
-            zip_name, run_name = make_zip_script(script_dir, 'test_zip', script_name)
-            msg = "can't find '__main__' module in %r" % zip_name
-            self._check_import_error(zip_name, msg)
-
-    def test_module_in_package(self):
-        with temp_dir() as script_dir:
-            pkg_dir = os.path.join(script_dir, 'test_pkg')
-            make_pkg(pkg_dir)
-            script_name = _make_test_script(pkg_dir, 'script')
-            launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg.script')
-            self._check_script(launch_name, script_name, script_name, 'test_pkg')
-
-    def test_module_in_package_in_zipfile(self):
-        with temp_dir() as script_dir:
-            zip_name, run_name = _make_test_zip_pkg(script_dir, 'test_zip', 'test_pkg', 'script')
-            launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg.script', zip_name)
-            self._check_script(launch_name, run_name, run_name, 'test_pkg')
-
-    def test_module_in_subpackage_in_zipfile(self):
-        with temp_dir() as script_dir:
-            zip_name, run_name = _make_test_zip_pkg(script_dir, 'test_zip', 'test_pkg', 'script', depth=2)
-            launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg.test_pkg.script', zip_name)
-            self._check_script(launch_name, run_name, run_name, 'test_pkg.test_pkg')
-
-    def test_package(self):
-        with temp_dir() as script_dir:
-            pkg_dir = os.path.join(script_dir, 'test_pkg')
-            make_pkg(pkg_dir)
-            script_name = _make_test_script(pkg_dir, '__main__')
-            launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg')
-            self._check_script(launch_name, script_name,
-                               script_name, 'test_pkg')
-
-    def test_package_compiled(self):
-        with temp_dir() as script_dir:
-            pkg_dir = os.path.join(script_dir, 'test_pkg')
-            make_pkg(pkg_dir)
-            script_name = _make_test_script(pkg_dir, '__main__')
-            compiled_name = compile_script(script_name)
-            os.remove(script_name)
-            launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg')
-            self._check_script(launch_name, compiled_name,
-                               compiled_name, 'test_pkg')
-
-    def test_package_error(self):
-        with temp_dir() as script_dir:
-            pkg_dir = os.path.join(script_dir, 'test_pkg')
-            make_pkg(pkg_dir)
-            msg = ("'test_pkg' is a package and cannot "
-                   "be directly executed")
-            launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg')
-            self._check_import_error(launch_name, msg)
-
-    def test_package_recursion(self):
-        with temp_dir() as script_dir:
-            pkg_dir = os.path.join(script_dir, 'test_pkg')
-            make_pkg(pkg_dir)
-            main_dir = os.path.join(pkg_dir, '__main__')
-            make_pkg(main_dir)
-            msg = ("Cannot use package as __main__ module; "
-                   "'test_pkg' is a package and cannot "
-                   "be directly executed")
-            launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg')
-            self._check_import_error(launch_name, msg)
-
-
-def test_main():
-    test.test_support.run_unittest(CmdLineTest)
-    test.test_support.reap_children()
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_code.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_code.py
deleted file mode 100644
index fe7e979..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_code.py
+++ /dev/null
@@ -1,147 +0,0 @@
-"""This module includes tests of the code object representation.
-
->>> def f(x):
-...     def g(y):
-...         return x + y
-...     return g
-...
-
->>> dump(f.func_code)
-name: f
-argcount: 1
-names: ()
-varnames: ('x', 'g')
-cellvars: ('x',)
-freevars: ()
-nlocals: 2
-flags: 3
-consts: ('None', '<code object g>')
-
->>> dump(f(4).func_code)
-name: g
-argcount: 1
-names: ()
-varnames: ('y',)
-cellvars: ()
-freevars: ('x',)
-nlocals: 1
-flags: 19
-consts: ('None',)
-
->>> def h(x, y):
-...     a = x + y
-...     b = x - y
-...     c = a * b
-...     return c
-...
->>> dump(h.func_code)
-name: h
-argcount: 2
-names: ()
-varnames: ('x', 'y', 'a', 'b', 'c')
-cellvars: ()
-freevars: ()
-nlocals: 5
-flags: 67
-consts: ('None',)
-
->>> def attrs(obj):
-...     print obj.attr1
-...     print obj.attr2
-...     print obj.attr3
-
->>> dump(attrs.func_code)
-name: attrs
-argcount: 1
-names: ('attr1', 'attr2', 'attr3')
-varnames: ('obj',)
-cellvars: ()
-freevars: ()
-nlocals: 1
-flags: 67
-consts: ('None',)
-
->>> def optimize_away():
-...     'doc string'
-...     'not a docstring'
-...     53
-...     53L
-
->>> dump(optimize_away.func_code)
-name: optimize_away
-argcount: 0
-names: ()
-varnames: ()
-cellvars: ()
-freevars: ()
-nlocals: 0
-flags: 67
-consts: ("'doc string'", 'None')
-
-"""
-
-import unittest
-import weakref
-import _testcapi
-
-
-def consts(t):
-    """Yield a doctest-safe sequence of object reprs."""
-    for elt in t:
-        r = repr(elt)
-        if r.startswith("<code object"):
-            yield "<code object %s>" % elt.co_name
-        else:
-            yield r
-
-def dump(co):
-    """Print out a text representation of a code object."""
-    for attr in ["name", "argcount", "names", "varnames", "cellvars",
-                 "freevars", "nlocals", "flags"]:
-        print "%s: %s" % (attr, getattr(co, "co_" + attr))
-    print "consts:", tuple(consts(co.co_consts))
-
-
-class CodeTest(unittest.TestCase):
-
-    def test_newempty(self):
-        co = _testcapi.code_newempty("filename", "funcname", 15)
-        self.assertEqual(co.co_filename, "filename")
-        self.assertEqual(co.co_name, "funcname")
-        self.assertEqual(co.co_firstlineno, 15)
-
-
-class CodeWeakRefTest(unittest.TestCase):
-
-    def test_basic(self):
-        # Create a code object in a clean environment so that we know we have
-        # the only reference to it left.
-        namespace = {}
-        exec "def f(): pass" in globals(), namespace
-        f = namespace["f"]
-        del namespace
-
-        self.called = False
-        def callback(code):
-            self.called = True
-
-        # f is now the last reference to the function, and through it, the code
-        # object.  While we hold it, check that we can create a weakref and
-        # deref it.  Then delete it, and check that the callback gets called and
-        # the reference dies.
-        coderef = weakref.ref(f.__code__, callback)
-        self.assertTrue(bool(coderef()))
-        del f
-        self.assertFalse(bool(coderef()))
-        self.assertTrue(self.called)
-
-
-def test_main(verbose=None):
-    from test.test_support import run_doctest, run_unittest
-    from test import test_code
-    run_doctest(test_code, verbose)
-    run_unittest(CodeTest, CodeWeakRefTest)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codeccallbacks.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codeccallbacks.py
deleted file mode 100644
index abac017..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codeccallbacks.py
+++ /dev/null
@@ -1,804 +0,0 @@
-import test.test_support, unittest
-import sys, codecs, htmlentitydefs, unicodedata
-
-class PosReturn:
-    # this can be used for configurable callbacks
-
-    def __init__(self):
-        self.pos = 0
-
-    def handle(self, exc):
-        oldpos = self.pos
-        realpos = oldpos
-        if realpos<0:
-            realpos = len(exc.object) + realpos
-        # if we don't advance this time, terminate on the next call
-        # otherwise we'd get an endless loop
-        if realpos <= exc.start:
-            self.pos = len(exc.object)
-        return (u"<?>", oldpos)
-
-# A UnicodeEncodeError object with a bad start attribute
-class BadStartUnicodeEncodeError(UnicodeEncodeError):
-    def __init__(self):
-        UnicodeEncodeError.__init__(self, "ascii", u"", 0, 1, "bad")
-        self.start = []
-
-# A UnicodeEncodeError object with a bad object attribute
-class BadObjectUnicodeEncodeError(UnicodeEncodeError):
-    def __init__(self):
-        UnicodeEncodeError.__init__(self, "ascii", u"", 0, 1, "bad")
-        self.object = []
-
-# A UnicodeDecodeError object without an end attribute
-class NoEndUnicodeDecodeError(UnicodeDecodeError):
-    def __init__(self):
-        UnicodeDecodeError.__init__(self, "ascii", "", 0, 1, "bad")
-        del self.end
-
-# A UnicodeDecodeError object with a bad object attribute
-class BadObjectUnicodeDecodeError(UnicodeDecodeError):
-    def __init__(self):
-        UnicodeDecodeError.__init__(self, "ascii", "", 0, 1, "bad")
-        self.object = []
-
-# A UnicodeTranslateError object without a start attribute
-class NoStartUnicodeTranslateError(UnicodeTranslateError):
-    def __init__(self):
-        UnicodeTranslateError.__init__(self, u"", 0, 1, "bad")
-        del self.start
-
-# A UnicodeTranslateError object without an end attribute
-class NoEndUnicodeTranslateError(UnicodeTranslateError):
-    def __init__(self):
-        UnicodeTranslateError.__init__(self,  u"", 0, 1, "bad")
-        del self.end
-
-# A UnicodeTranslateError object without an object attribute
-class NoObjectUnicodeTranslateError(UnicodeTranslateError):
-    def __init__(self):
-        UnicodeTranslateError.__init__(self, u"", 0, 1, "bad")
-        del self.object
-
-class CodecCallbackTest(unittest.TestCase):
-
-    def test_xmlcharrefreplace(self):
-        # replace unencodable characters which numeric character entities.
-        # For ascii, latin-1 and charmaps this is completely implemented
-        # in C and should be reasonably fast.
-        s = u"\u30b9\u30d1\u30e2 \xe4nd eggs"
-        self.assertEqual(
-            s.encode("ascii", "xmlcharrefreplace"),
-            "&#12473;&#12497;&#12514; &#228;nd eggs"
-        )
-        self.assertEqual(
-            s.encode("latin-1", "xmlcharrefreplace"),
-            "&#12473;&#12497;&#12514; \xe4nd eggs"
-        )
-
-    def test_xmlcharnamereplace(self):
-        # This time use a named character entity for unencodable
-        # characters, if one is available.
-
-        def xmlcharnamereplace(exc):
-            if not isinstance(exc, UnicodeEncodeError):
-                raise TypeError("don't know how to handle %r" % exc)
-            l = []
-            for c in exc.object[exc.start:exc.end]:
-                try:
-                    l.append(u"&%s;" % htmlentitydefs.codepoint2name[ord(c)])
-                except KeyError:
-                    l.append(u"&#%d;" % ord(c))
-            return (u"".join(l), exc.end)
-
-        codecs.register_error(
-            "test.xmlcharnamereplace", xmlcharnamereplace)
-
-        sin = u"\xab\u211c\xbb = \u2329\u1234\u20ac\u232a"
-        sout = "&laquo;&real;&raquo; = &lang;&#4660;&euro;&rang;"
-        self.assertEqual(sin.encode("ascii", "test.xmlcharnamereplace"), sout)
-        sout = "\xab&real;\xbb = &lang;&#4660;&euro;&rang;"
-        self.assertEqual(sin.encode("latin-1", "test.xmlcharnamereplace"), sout)
-        sout = "\xab&real;\xbb = &lang;&#4660;\xa4&rang;"
-        self.assertEqual(sin.encode("iso-8859-15", "test.xmlcharnamereplace"), sout)
-
-    def test_uninamereplace(self):
-        # We're using the names from the unicode database this time,
-        # and we're doing "syntax highlighting" here, i.e. we include
-        # the replaced text in ANSI escape sequences. For this it is
-        # useful that the error handler is not called for every single
-        # unencodable character, but for a complete sequence of
-        # unencodable characters, otherwise we would output many
-        # unnecessary escape sequences.
-
-        def uninamereplace(exc):
-            if not isinstance(exc, UnicodeEncodeError):
-                raise TypeError("don't know how to handle %r" % exc)
-            l = []
-            for c in exc.object[exc.start:exc.end]:
-                l.append(unicodedata.name(c, u"0x%x" % ord(c)))
-            return (u"\033[1m%s\033[0m" % u", ".join(l), exc.end)
-
-        codecs.register_error(
-            "test.uninamereplace", uninamereplace)
-
-        sin = u"\xac\u1234\u20ac\u8000"
-        sout = "\033[1mNOT SIGN, ETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000\033[0m"
-        self.assertEqual(sin.encode("ascii", "test.uninamereplace"), sout)
-
-        sout = "\xac\033[1mETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000\033[0m"
-        self.assertEqual(sin.encode("latin-1", "test.uninamereplace"), sout)
-
-        sout = "\xac\033[1mETHIOPIC SYLLABLE SEE\033[0m\xa4\033[1mCJK UNIFIED IDEOGRAPH-8000\033[0m"
-        self.assertEqual(sin.encode("iso-8859-15", "test.uninamereplace"), sout)
-
-    def test_backslashescape(self):
-        # Does the same as the "unicode-escape" encoding, but with different
-        # base encodings.
-        sin = u"a\xac\u1234\u20ac\u8000"
-        if sys.maxunicode > 0xffff:
-            sin += unichr(sys.maxunicode)
-        sout = "a\\xac\\u1234\\u20ac\\u8000"
-        if sys.maxunicode > 0xffff:
-            sout += "\\U%08x" % sys.maxunicode
-        self.assertEqual(sin.encode("ascii", "backslashreplace"), sout)
-
-        sout = "a\xac\\u1234\\u20ac\\u8000"
-        if sys.maxunicode > 0xffff:
-            sout += "\\U%08x" % sys.maxunicode
-        self.assertEqual(sin.encode("latin-1", "backslashreplace"), sout)
-
-        sout = "a\xac\\u1234\xa4\\u8000"
-        if sys.maxunicode > 0xffff:
-            sout += "\\U%08x" % sys.maxunicode
-        self.assertEqual(sin.encode("iso-8859-15", "backslashreplace"), sout)
-
-    def test_decoding_callbacks(self):
-        # This is a test for a decoding callback handler
-        # that allows the decoding of the invalid sequence
-        # "\xc0\x80" and returns "\x00" instead of raising an error.
-        # All other illegal sequences will be handled strictly.
-        def relaxedutf8(exc):
-            if not isinstance(exc, UnicodeDecodeError):
-                raise TypeError("don't know how to handle %r" % exc)
-            if exc.object[exc.start:exc.start+2] == "\xc0\x80":
-                return (u"\x00", exc.start+2) # retry after two bytes
-            else:
-                raise exc
-
-        codecs.register_error("test.relaxedutf8", relaxedutf8)
-
-        # all the "\xc0\x80" will be decoded to "\x00"
-        sin = "a\x00b\xc0\x80c\xc3\xbc\xc0\x80\xc0\x80"
-        sout = u"a\x00b\x00c\xfc\x00\x00"
-        self.assertEqual(sin.decode("utf-8", "test.relaxedutf8"), sout)
-
-        # "\xc0\x81" is not valid and a UnicodeDecodeError will be raised
-        sin = "\xc0\x80\xc0\x81"
-        self.assertRaises(UnicodeDecodeError, sin.decode,
-                          "utf-8", "test.relaxedutf8")
-
-    def test_charmapencode(self):
-        # For charmap encodings the replacement string will be
-        # mapped through the encoding again. This means, that
-        # to be able to use e.g. the "replace" handler, the
-        # charmap has to have a mapping for "?".
-        charmap = dict([ (ord(c), 2*c.upper()) for c in "abcdefgh"])
-        sin = u"abc"
-        sout = "AABBCC"
-        self.assertEqual(codecs.charmap_encode(sin, "strict", charmap)[0], sout)
-
-        sin = u"abcA"
-        self.assertRaises(UnicodeError, codecs.charmap_encode, sin, "strict", charmap)
-
-        charmap[ord("?")] = "XYZ"
-        sin = u"abcDEF"
-        sout = "AABBCCXYZXYZXYZ"
-        self.assertEqual(codecs.charmap_encode(sin, "replace", charmap)[0], sout)
-
-        charmap[ord("?")] = u"XYZ"
-        self.assertRaises(TypeError, codecs.charmap_encode, sin, "replace", charmap)
-
-        charmap[ord("?")] = u"XYZ"
-        self.assertRaises(TypeError, codecs.charmap_encode, sin, "replace", charmap)
-
-    def test_decodeunicodeinternal(self):
-        self.assertRaises(
-            UnicodeDecodeError,
-            "\x00\x00\x00\x00\x00".decode,
-            "unicode-internal",
-        )
-        if sys.maxunicode > 0xffff:
-            def handler_unicodeinternal(exc):
-                if not isinstance(exc, UnicodeDecodeError):
-                    raise TypeError("don't know how to handle %r" % exc)
-                return (u"\x01", 1)
-
-            self.assertEqual(
-                "\x00\x00\x00\x00\x00".decode("unicode-internal", "ignore"),
-                u"\u0000"
-            )
-
-            self.assertEqual(
-                "\x00\x00\x00\x00\x00".decode("unicode-internal", "replace"),
-                u"\u0000\ufffd"
-            )
-
-            codecs.register_error("test.hui", handler_unicodeinternal)
-
-            self.assertEqual(
-                "\x00\x00\x00\x00\x00".decode("unicode-internal", "test.hui"),
-                u"\u0000\u0001\u0000"
-            )
-
-    def test_callbacks(self):
-        def handler1(exc):
-            if not isinstance(exc, UnicodeEncodeError) \
-               and not isinstance(exc, UnicodeDecodeError):
-                raise TypeError("don't know how to handle %r" % exc)
-            l = [u"<%d>" % ord(exc.object[pos]) for pos in xrange(exc.start, exc.end)]
-            return (u"[%s]" % u"".join(l), exc.end)
-
-        codecs.register_error("test.handler1", handler1)
-
-        def handler2(exc):
-            if not isinstance(exc, UnicodeDecodeError):
-                raise TypeError("don't know how to handle %r" % exc)
-            l = [u"<%d>" % ord(exc.object[pos]) for pos in xrange(exc.start, exc.end)]
-            return (u"[%s]" % u"".join(l), exc.end+1) # skip one character
-
-        codecs.register_error("test.handler2", handler2)
-
-        s = "\x00\x81\x7f\x80\xff"
-
-        self.assertEqual(
-            s.decode("ascii", "test.handler1"),
-            u"\x00[<129>]\x7f[<128>][<255>]"
-        )
-        self.assertEqual(
-            s.decode("ascii", "test.handler2"),
-            u"\x00[<129>][<128>]"
-        )
-
-        self.assertEqual(
-            "\\u3042\u3xxx".decode("unicode-escape", "test.handler1"),
-            u"\u3042[<92><117><51><120>]xx"
-        )
-
-        self.assertEqual(
-            "\\u3042\u3xx".decode("unicode-escape", "test.handler1"),
-            u"\u3042[<92><117><51><120><120>]"
-        )
-
-        self.assertEqual(
-            codecs.charmap_decode("abc", "test.handler1", {ord("a"): u"z"})[0],
-            u"z[<98>][<99>]"
-        )
-
-        self.assertEqual(
-            u"g\xfc\xdfrk".encode("ascii", "test.handler1"),
-            u"g[<252><223>]rk"
-        )
-
-        self.assertEqual(
-            u"g\xfc\xdf".encode("ascii", "test.handler1"),
-            u"g[<252><223>]"
-        )
-
-    def test_longstrings(self):
-        # test long strings to check for memory overflow problems
-        errors = [ "strict", "ignore", "replace", "xmlcharrefreplace",
-                   "backslashreplace"]
-        # register the handlers under different names,
-        # to prevent the codec from recognizing the name
-        for err in errors:
-            codecs.register_error("test." + err, codecs.lookup_error(err))
-        l = 1000
-        errors += [ "test." + err for err in errors ]
-        for uni in [ s*l for s in (u"x", u"\u3042", u"a\xe4") ]:
-            for enc in ("ascii", "latin-1", "iso-8859-1", "iso-8859-15",
-                        "utf-8", "utf-7", "utf-16", "utf-32"):
-                for err in errors:
-                    try:
-                        uni.encode(enc, err)
-                    except UnicodeError:
-                        pass
-
-    def check_exceptionobjectargs(self, exctype, args, msg):
-        # Test UnicodeError subclasses: construction, attribute assignment and __str__ conversion
-        # check with one missing argument
-        self.assertRaises(TypeError, exctype, *args[:-1])
-        # check with one argument too much
-        self.assertRaises(TypeError, exctype, *(args + ["too much"]))
-        # check with one argument of the wrong type
-        wrongargs = [ "spam", u"eggs", 42, 1.0, None ]
-        for i in xrange(len(args)):
-            for wrongarg in wrongargs:
-                if type(wrongarg) is type(args[i]):
-                    continue
-                # build argument array
-                callargs = []
-                for j in xrange(len(args)):
-                    if i==j:
-                        callargs.append(wrongarg)
-                    else:
-                        callargs.append(args[i])
-                self.assertRaises(TypeError, exctype, *callargs)
-
-        # check with the correct number and type of arguments
-        exc = exctype(*args)
-        self.assertEqual(str(exc), msg)
-
-    def test_unicodeencodeerror(self):
-        self.check_exceptionobjectargs(
-            UnicodeEncodeError,
-            ["ascii", u"g\xfcrk", 1, 2, "ouch"],
-            "'ascii' codec can't encode character u'\\xfc' in position 1: ouch"
-        )
-        self.check_exceptionobjectargs(
-            UnicodeEncodeError,
-            ["ascii", u"g\xfcrk", 1, 4, "ouch"],
-            "'ascii' codec can't encode characters in position 1-3: ouch"
-        )
-        self.check_exceptionobjectargs(
-            UnicodeEncodeError,
-            ["ascii", u"\xfcx", 0, 1, "ouch"],
-            "'ascii' codec can't encode character u'\\xfc' in position 0: ouch"
-        )
-        self.check_exceptionobjectargs(
-            UnicodeEncodeError,
-            ["ascii", u"\u0100x", 0, 1, "ouch"],
-            "'ascii' codec can't encode character u'\\u0100' in position 0: ouch"
-        )
-        self.check_exceptionobjectargs(
-            UnicodeEncodeError,
-            ["ascii", u"\uffffx", 0, 1, "ouch"],
-            "'ascii' codec can't encode character u'\\uffff' in position 0: ouch"
-        )
-        if sys.maxunicode > 0xffff:
-            self.check_exceptionobjectargs(
-                UnicodeEncodeError,
-                ["ascii", u"\U00010000x", 0, 1, "ouch"],
-                "'ascii' codec can't encode character u'\\U00010000' in position 0: ouch"
-            )
-
-    def test_unicodedecodeerror(self):
-        self.check_exceptionobjectargs(
-            UnicodeDecodeError,
-            ["ascii", "g\xfcrk", 1, 2, "ouch"],
-            "'ascii' codec can't decode byte 0xfc in position 1: ouch"
-        )
-        self.check_exceptionobjectargs(
-            UnicodeDecodeError,
-            ["ascii", "g\xfcrk", 1, 3, "ouch"],
-            "'ascii' codec can't decode bytes in position 1-2: ouch"
-        )
-
-    def test_unicodetranslateerror(self):
-        self.check_exceptionobjectargs(
-            UnicodeTranslateError,
-            [u"g\xfcrk", 1, 2, "ouch"],
-            "can't translate character u'\\xfc' in position 1: ouch"
-        )
-        self.check_exceptionobjectargs(
-            UnicodeTranslateError,
-            [u"g\u0100rk", 1, 2, "ouch"],
-            "can't translate character u'\\u0100' in position 1: ouch"
-        )
-        self.check_exceptionobjectargs(
-            UnicodeTranslateError,
-            [u"g\uffffrk", 1, 2, "ouch"],
-            "can't translate character u'\\uffff' in position 1: ouch"
-        )
-        if sys.maxunicode > 0xffff:
-            self.check_exceptionobjectargs(
-                UnicodeTranslateError,
-                [u"g\U00010000rk", 1, 2, "ouch"],
-                "can't translate character u'\\U00010000' in position 1: ouch"
-            )
-        self.check_exceptionobjectargs(
-            UnicodeTranslateError,
-            [u"g\xfcrk", 1, 3, "ouch"],
-            "can't translate characters in position 1-2: ouch"
-        )
-
-    def test_badandgoodstrictexceptions(self):
-        # "strict" complains about a non-exception passed in
-        self.assertRaises(
-            TypeError,
-            codecs.strict_errors,
-            42
-        )
-        # "strict" complains about the wrong exception type
-        self.assertRaises(
-            Exception,
-            codecs.strict_errors,
-            Exception("ouch")
-        )
-
-        # If the correct exception is passed in, "strict" raises it
-        self.assertRaises(
-            UnicodeEncodeError,
-            codecs.strict_errors,
-            UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch")
-        )
-
-    def test_badandgoodignoreexceptions(self):
-        # "ignore" complains about a non-exception passed in
-        self.assertRaises(
-           TypeError,
-           codecs.ignore_errors,
-           42
-        )
-        # "ignore" complains about the wrong exception type
-        self.assertRaises(
-           TypeError,
-           codecs.ignore_errors,
-           UnicodeError("ouch")
-        )
-        # If the correct exception is passed in, "ignore" returns an empty replacement
-        self.assertEqual(
-            codecs.ignore_errors(UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch")),
-            (u"", 1)
-        )
-        self.assertEqual(
-            codecs.ignore_errors(UnicodeDecodeError("ascii", "\xff", 0, 1, "ouch")),
-            (u"", 1)
-        )
-        self.assertEqual(
-            codecs.ignore_errors(UnicodeTranslateError(u"\u3042", 0, 1, "ouch")),
-            (u"", 1)
-        )
-
-    def test_badandgoodreplaceexceptions(self):
-        # "replace" complains about a non-exception passed in
-        self.assertRaises(
-           TypeError,
-           codecs.replace_errors,
-           42
-        )
-        # "replace" complains about the wrong exception type
-        self.assertRaises(
-           TypeError,
-           codecs.replace_errors,
-           UnicodeError("ouch")
-        )
-        self.assertRaises(
-            TypeError,
-            codecs.replace_errors,
-            BadObjectUnicodeEncodeError()
-        )
-        self.assertRaises(
-            TypeError,
-            codecs.replace_errors,
-            BadObjectUnicodeDecodeError()
-        )
-        # With the correct exception, "replace" returns an "?" or u"\ufffd" replacement
-        self.assertEqual(
-            codecs.replace_errors(UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch")),
-            (u"?", 1)
-        )
-        self.assertEqual(
-            codecs.replace_errors(UnicodeDecodeError("ascii", "\xff", 0, 1, "ouch")),
-            (u"\ufffd", 1)
-        )
-        self.assertEqual(
-            codecs.replace_errors(UnicodeTranslateError(u"\u3042", 0, 1, "ouch")),
-            (u"\ufffd", 1)
-        )
-
-    def test_badandgoodxmlcharrefreplaceexceptions(self):
-        # "xmlcharrefreplace" complains about a non-exception passed in
-        self.assertRaises(
-           TypeError,
-           codecs.xmlcharrefreplace_errors,
-           42
-        )
-        # "xmlcharrefreplace" complains about the wrong exception types
-        self.assertRaises(
-           TypeError,
-           codecs.xmlcharrefreplace_errors,
-           UnicodeError("ouch")
-        )
-        # "xmlcharrefreplace" can only be used for encoding
-        self.assertRaises(
-            TypeError,
-            codecs.xmlcharrefreplace_errors,
-            UnicodeDecodeError("ascii", "\xff", 0, 1, "ouch")
-        )
-        self.assertRaises(
-            TypeError,
-            codecs.xmlcharrefreplace_errors,
-            UnicodeTranslateError(u"\u3042", 0, 1, "ouch")
-        )
-        # Use the correct exception
-        cs = (0, 1, 9, 10, 99, 100, 999, 1000, 9999, 10000, 0x3042)
-        s = "".join(unichr(c) for c in cs)
-        self.assertEqual(
-            codecs.xmlcharrefreplace_errors(
-                UnicodeEncodeError("ascii", s, 0, len(s), "ouch")
-            ),
-            (u"".join(u"&#%d;" % ord(c) for c in s), len(s))
-        )
-
-    def test_badandgoodbackslashreplaceexceptions(self):
-        # "backslashreplace" complains about a non-exception passed in
-        self.assertRaises(
-           TypeError,
-           codecs.backslashreplace_errors,
-           42
-        )
-        # "backslashreplace" complains about the wrong exception types
-        self.assertRaises(
-           TypeError,
-           codecs.backslashreplace_errors,
-           UnicodeError("ouch")
-        )
-        # "backslashreplace" can only be used for encoding
-        self.assertRaises(
-            TypeError,
-            codecs.backslashreplace_errors,
-            UnicodeDecodeError("ascii", "\xff", 0, 1, "ouch")
-        )
-        self.assertRaises(
-            TypeError,
-            codecs.backslashreplace_errors,
-            UnicodeTranslateError(u"\u3042", 0, 1, "ouch")
-        )
-        # Use the correct exception
-        self.assertEqual(
-            codecs.backslashreplace_errors(UnicodeEncodeError("ascii", u"\u3042", 0, 1, "ouch")),
-            (u"\\u3042", 1)
-        )
-        self.assertEqual(
-            codecs.backslashreplace_errors(UnicodeEncodeError("ascii", u"\x00", 0, 1, "ouch")),
-            (u"\\x00", 1)
-        )
-        self.assertEqual(
-            codecs.backslashreplace_errors(UnicodeEncodeError("ascii", u"\xff", 0, 1, "ouch")),
-            (u"\\xff", 1)
-        )
-        self.assertEqual(
-            codecs.backslashreplace_errors(UnicodeEncodeError("ascii", u"\u0100", 0, 1, "ouch")),
-            (u"\\u0100", 1)
-        )
-        self.assertEqual(
-            codecs.backslashreplace_errors(UnicodeEncodeError("ascii", u"\uffff", 0, 1, "ouch")),
-            (u"\\uffff", 1)
-        )
-        if sys.maxunicode>0xffff:
-            self.assertEqual(
-                codecs.backslashreplace_errors(UnicodeEncodeError("ascii", u"\U00010000", 0, 1, "ouch")),
-                (u"\\U00010000", 1)
-            )
-            self.assertEqual(
-                codecs.backslashreplace_errors(UnicodeEncodeError("ascii", u"\U0010ffff", 0, 1, "ouch")),
-                (u"\\U0010ffff", 1)
-            )
-
-    def test_badhandlerresults(self):
-        results = ( 42, u"foo", (1,2,3), (u"foo", 1, 3), (u"foo", None), (u"foo",), ("foo", 1, 3), ("foo", None), ("foo",) )
-        encs = ("ascii", "latin-1", "iso-8859-1", "iso-8859-15")
-
-        for res in results:
-            codecs.register_error("test.badhandler", lambda x: res)
-            for enc in encs:
-                self.assertRaises(
-                    TypeError,
-                    u"\u3042".encode,
-                    enc,
-                    "test.badhandler"
-                )
-            for (enc, bytes) in (
-                ("ascii", "\xff"),
-                ("utf-8", "\xff"),
-                ("utf-7", "+x-"),
-                ("unicode-internal", "\x00"),
-            ):
-                self.assertRaises(
-                    TypeError,
-                    bytes.decode,
-                    enc,
-                    "test.badhandler"
-                )
-
-    def test_lookup(self):
-        self.assertEqual(codecs.strict_errors, codecs.lookup_error("strict"))
-        self.assertEqual(codecs.ignore_errors, codecs.lookup_error("ignore"))
-        self.assertEqual(codecs.strict_errors, codecs.lookup_error("strict"))
-        self.assertEqual(
-            codecs.xmlcharrefreplace_errors,
-            codecs.lookup_error("xmlcharrefreplace")
-        )
-        self.assertEqual(
-            codecs.backslashreplace_errors,
-            codecs.lookup_error("backslashreplace")
-        )
-
-    def test_unencodablereplacement(self):
-        def unencrepl(exc):
-            if isinstance(exc, UnicodeEncodeError):
-                return (u"\u4242", exc.end)
-            else:
-                raise TypeError("don't know how to handle %r" % exc)
-        codecs.register_error("test.unencreplhandler", unencrepl)
-        for enc in ("ascii", "iso-8859-1", "iso-8859-15"):
-            self.assertRaises(
-                UnicodeEncodeError,
-                u"\u4242".encode,
-                enc,
-                "test.unencreplhandler"
-            )
-
-    def test_badregistercall(self):
-        # enhance coverage of:
-        # Modules/_codecsmodule.c::register_error()
-        # Python/codecs.c::PyCodec_RegisterError()
-        self.assertRaises(TypeError, codecs.register_error, 42)
-        self.assertRaises(TypeError, codecs.register_error, "test.dummy", 42)
-
-    def test_badlookupcall(self):
-        # enhance coverage of:
-        # Modules/_codecsmodule.c::lookup_error()
-        self.assertRaises(TypeError, codecs.lookup_error)
-
-    def test_unknownhandler(self):
-        # enhance coverage of:
-        # Modules/_codecsmodule.c::lookup_error()
-        self.assertRaises(LookupError, codecs.lookup_error, "test.unknown")
-
-    def test_xmlcharrefvalues(self):
-        # enhance coverage of:
-        # Python/codecs.c::PyCodec_XMLCharRefReplaceErrors()
-        # and inline implementations
-        v = (1, 5, 10, 50, 100, 500, 1000, 5000, 10000, 50000)
-        if sys.maxunicode>=100000:
-            v += (100000, 500000, 1000000)
-        s = u"".join([unichr(x) for x in v])
-        codecs.register_error("test.xmlcharrefreplace", codecs.xmlcharrefreplace_errors)
-        for enc in ("ascii", "iso-8859-15"):
-            for err in ("xmlcharrefreplace", "test.xmlcharrefreplace"):
-                s.encode(enc, err)
-
-    def test_decodehelper(self):
-        # enhance coverage of:
-        # Objects/unicodeobject.c::unicode_decode_call_errorhandler()
-        # and callers
-        self.assertRaises(LookupError, "\xff".decode, "ascii", "test.unknown")
-
-        def baddecodereturn1(exc):
-            return 42
-        codecs.register_error("test.baddecodereturn1", baddecodereturn1)
-        self.assertRaises(TypeError, "\xff".decode, "ascii", "test.baddecodereturn1")
-        self.assertRaises(TypeError, "\\".decode, "unicode-escape", "test.baddecodereturn1")
-        self.assertRaises(TypeError, "\\x0".decode, "unicode-escape", "test.baddecodereturn1")
-        self.assertRaises(TypeError, "\\x0y".decode, "unicode-escape", "test.baddecodereturn1")
-        self.assertRaises(TypeError, "\\Uffffeeee".decode, "unicode-escape", "test.baddecodereturn1")
-        self.assertRaises(TypeError, "\\uyyyy".decode, "raw-unicode-escape", "test.baddecodereturn1")
-
-        def baddecodereturn2(exc):
-            return (u"?", None)
-        codecs.register_error("test.baddecodereturn2", baddecodereturn2)
-        self.assertRaises(TypeError, "\xff".decode, "ascii", "test.baddecodereturn2")
-
-        handler = PosReturn()
-        codecs.register_error("test.posreturn", handler.handle)
-
-        # Valid negative position
-        handler.pos = -1
-        self.assertEqual("\xff0".decode("ascii", "test.posreturn"), u"<?>0")
-
-        # Valid negative position
-        handler.pos = -2
-        self.assertEqual("\xff0".decode("ascii", "test.posreturn"), u"<?><?>")
-
-        # Negative position out of bounds
-        handler.pos = -3
-        self.assertRaises(IndexError, "\xff0".decode, "ascii", "test.posreturn")
-
-        # Valid positive position
-        handler.pos = 1
-        self.assertEqual("\xff0".decode("ascii", "test.posreturn"), u"<?>0")
-
-        # Largest valid positive position (one beyond end of input)
-        handler.pos = 2
-        self.assertEqual("\xff0".decode("ascii", "test.posreturn"), u"<?>")
-
-        # Invalid positive position
-        handler.pos = 3
-        self.assertRaises(IndexError, "\xff0".decode, "ascii", "test.posreturn")
-
-        # Restart at the "0"
-        handler.pos = 6
-        self.assertEqual("\\uyyyy0".decode("raw-unicode-escape", "test.posreturn"), u"<?>0")
-
-        class D(dict):
-            def __getitem__(self, key):
-                raise ValueError
-        self.assertRaises(UnicodeError, codecs.charmap_decode, "\xff", "strict", {0xff: None})
-        self.assertRaises(ValueError, codecs.charmap_decode, "\xff", "strict", D())
-        self.assertRaises(TypeError, codecs.charmap_decode, "\xff", "strict", {0xff: sys.maxunicode+1})
-
-    def test_encodehelper(self):
-        # enhance coverage of:
-        # Objects/unicodeobject.c::unicode_encode_call_errorhandler()
-        # and callers
-        self.assertRaises(LookupError, u"\xff".encode, "ascii", "test.unknown")
-
-        def badencodereturn1(exc):
-            return 42
-        codecs.register_error("test.badencodereturn1", badencodereturn1)
-        self.assertRaises(TypeError, u"\xff".encode, "ascii", "test.badencodereturn1")
-
-        def badencodereturn2(exc):
-            return (u"?", None)
-        codecs.register_error("test.badencodereturn2", badencodereturn2)
-        self.assertRaises(TypeError, u"\xff".encode, "ascii", "test.badencodereturn2")
-
-        handler = PosReturn()
-        codecs.register_error("test.posreturn", handler.handle)
-
-        # Valid negative position
-        handler.pos = -1
-        self.assertEqual(u"\xff0".encode("ascii", "test.posreturn"), "<?>0")
-
-        # Valid negative position
-        handler.pos = -2
-        self.assertEqual(u"\xff0".encode("ascii", "test.posreturn"), "<?><?>")
-
-        # Negative position out of bounds
-        handler.pos = -3
-        self.assertRaises(IndexError, u"\xff0".encode, "ascii", "test.posreturn")
-
-        # Valid positive position
-        handler.pos = 1
-        self.assertEqual(u"\xff0".encode("ascii", "test.posreturn"), "<?>0")
-
-        # Largest valid positive position (one beyond end of input
-        handler.pos = 2
-        self.assertEqual(u"\xff0".encode("ascii", "test.posreturn"), "<?>")
-
-        # Invalid positive position
-        handler.pos = 3
-        self.assertRaises(IndexError, u"\xff0".encode, "ascii", "test.posreturn")
-
-        handler.pos = 0
-
-        class D(dict):
-            def __getitem__(self, key):
-                raise ValueError
-        for err in ("strict", "replace", "xmlcharrefreplace", "backslashreplace", "test.posreturn"):
-            self.assertRaises(UnicodeError, codecs.charmap_encode, u"\xff", err, {0xff: None})
-            self.assertRaises(ValueError, codecs.charmap_encode, u"\xff", err, D())
-            self.assertRaises(TypeError, codecs.charmap_encode, u"\xff", err, {0xff: 300})
-
-    def test_translatehelper(self):
-        # enhance coverage of:
-        # Objects/unicodeobject.c::unicode_encode_call_errorhandler()
-        # and callers
-        # (Unfortunately the errors argument is not directly accessible
-        # from Python, so we can't test that much)
-        class D(dict):
-            def __getitem__(self, key):
-                raise ValueError
-        self.assertRaises(ValueError, u"\xff".translate, D())
-        self.assertRaises(TypeError, u"\xff".translate, {0xff: sys.maxunicode+1})
-        self.assertRaises(TypeError, u"\xff".translate, {0xff: ()})
-
-    def test_bug828737(self):
-        charmap = {
-            ord("&"): u"&amp;",
-            ord("<"): u"&lt;",
-            ord(">"): u"&gt;",
-            ord('"'): u"&quot;",
-        }
-
-        for n in (1, 10, 100, 1000):
-            text = u'abc<def>ghi'*n
-            text.translate(charmap)
-
-def test_main():
-    test.test_support.run_unittest(CodecCallbackTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_cn.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_cn.py
deleted file mode 100644
index f83ae54..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_cn.py
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/usr/bin/env python
-#
-# test_codecencodings_cn.py
-#   Codec encoding tests for PRC encodings.
-#
-
-from test import test_support
-from test import test_multibytecodec_support
-import unittest
-
-class Test_GB2312(test_multibytecodec_support.TestBase, unittest.TestCase):
-    encoding = 'gb2312'
-    tstring = test_multibytecodec_support.load_teststring('gb2312')
-    codectests = (
-        # invalid bytes
-        ("abc\x81\x81\xc1\xc4", "strict",  None),
-        ("abc\xc8", "strict",  None),
-        ("abc\x81\x81\xc1\xc4", "replace", u"abc\ufffd\u804a"),
-        ("abc\x81\x81\xc1\xc4\xc8", "replace", u"abc\ufffd\u804a\ufffd"),
-        ("abc\x81\x81\xc1\xc4", "ignore",  u"abc\u804a"),
-        ("\xc1\x64", "strict", None),
-    )
-
-class Test_GBK(test_multibytecodec_support.TestBase, unittest.TestCase):
-    encoding = 'gbk'
-    tstring = test_multibytecodec_support.load_teststring('gbk')
-    codectests = (
-        # invalid bytes
-        ("abc\x80\x80\xc1\xc4", "strict",  None),
-        ("abc\xc8", "strict",  None),
-        ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u804a"),
-        ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u804a\ufffd"),
-        ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\u804a"),
-        ("\x83\x34\x83\x31", "strict", None),
-        (u"\u30fb", "strict", None),
-    )
-
-class Test_GB18030(test_multibytecodec_support.TestBase, unittest.TestCase):
-    encoding = 'gb18030'
-    tstring = test_multibytecodec_support.load_teststring('gb18030')
-    codectests = (
-        # invalid bytes
-        ("abc\x80\x80\xc1\xc4", "strict",  None),
-        ("abc\xc8", "strict",  None),
-        ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u804a"),
-        ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u804a\ufffd"),
-        ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\u804a"),
-        ("abc\x84\x39\x84\x39\xc1\xc4", "replace", u"abc\ufffd\u804a"),
-        (u"\u30fb", "strict", "\x819\xa79"),
-    )
-    has_iso10646 = True
-
-class Test_HZ(test_multibytecodec_support.TestBase, unittest.TestCase):
-    encoding = 'hz'
-    tstring = test_multibytecodec_support.load_teststring('hz')
-    codectests = (
-        # test '~\n' (3 lines)
-        (b'This sentence is in ASCII.\n'
-         b'The next sentence is in GB.~{<:Ky2;S{#,~}~\n'
-         b'~{NpJ)l6HK!#~}Bye.\n',
-         'strict',
-         u'This sentence is in ASCII.\n'
-         u'The next sentence is in GB.'
-         u'\u5df1\u6240\u4e0d\u6b32\uff0c\u52ff\u65bd\u65bc\u4eba\u3002'
-         u'Bye.\n'),
-        # test '~\n' (4 lines)
-        (b'This sentence is in ASCII.\n'
-         b'The next sentence is in GB.~\n'
-         b'~{<:Ky2;S{#,NpJ)l6HK!#~}~\n'
-         b'Bye.\n',
-         'strict',
-         u'This sentence is in ASCII.\n'
-         u'The next sentence is in GB.'
-         u'\u5df1\u6240\u4e0d\u6b32\uff0c\u52ff\u65bd\u65bc\u4eba\u3002'
-         u'Bye.\n'),
-        # invalid bytes
-        (b'ab~cd', 'replace', u'ab\uFFFDd'),
-        (b'ab\xffcd', 'replace', u'ab\uFFFDcd'),
-        (b'ab~{\x81\x81\x41\x44~}cd', 'replace', u'ab\uFFFD\uFFFD\u804Acd'),
-    )
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_hk.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_hk.py
deleted file mode 100644
index 53f3dd3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_hk.py
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env python
-#
-# test_codecencodings_hk.py
-#   Codec encoding tests for HongKong encodings.
-#
-
-from test import test_support
-from test import test_multibytecodec_support
-import unittest
-
-class Test_Big5HKSCS(test_multibytecodec_support.TestBase, unittest.TestCase):
-    encoding = 'big5hkscs'
-    tstring = test_multibytecodec_support.load_teststring('big5hkscs')
-    codectests = (
-        # invalid bytes
-        ("abc\x80\x80\xc1\xc4", "strict",  None),
-        ("abc\xc8", "strict",  None),
-        ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u8b10"),
-        ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u8b10\ufffd"),
-        ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\u8b10"),
-    )
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_jp.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_jp.py
deleted file mode 100644
index f662fde..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_jp.py
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/usr/bin/env python
-#
-# test_codecencodings_jp.py
-#   Codec encoding tests for Japanese encodings.
-#
-
-from test import test_support
-from test import test_multibytecodec_support
-import unittest
-
-class Test_CP932(test_multibytecodec_support.TestBase, unittest.TestCase):
-    encoding = 'cp932'
-    tstring = test_multibytecodec_support.load_teststring('shift_jis')
-    codectests = (
-        # invalid bytes
-        ("abc\x81\x00\x81\x00\x82\x84", "strict",  None),
-        ("abc\xf8", "strict",  None),
-        ("abc\x81\x00\x82\x84", "replace", u"abc\ufffd\uff44"),
-        ("abc\x81\x00\x82\x84\x88", "replace", u"abc\ufffd\uff44\ufffd"),
-        ("abc\x81\x00\x82\x84", "ignore",  u"abc\uff44"),
-        # sjis vs cp932
-        ("\\\x7e", "replace", u"\\\x7e"),
-        ("\x81\x5f\x81\x61\x81\x7c", "replace", u"\uff3c\u2225\uff0d"),
-    )
-
-class Test_EUC_JISX0213(test_multibytecodec_support.TestBase,
-                        unittest.TestCase):
-    encoding = 'euc_jisx0213'
-    tstring = test_multibytecodec_support.load_teststring('euc_jisx0213')
-    codectests = (
-        # invalid bytes
-        ("abc\x80\x80\xc1\xc4", "strict",  None),
-        ("abc\xc8", "strict",  None),
-        ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u7956"),
-        ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u7956\ufffd"),
-        ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\u7956"),
-        ("abc\x8f\x83\x83", "replace", u"abc\ufffd"),
-        ("\xc1\x64", "strict", None),
-        ("\xa1\xc0", "strict", u"\uff3c"),
-    )
-    xmlcharnametest = (
-        u"\xab\u211c\xbb = \u2329\u1234\u232a",
-        "\xa9\xa8&real;\xa9\xb2 = &lang;&#4660;&rang;"
-    )
-
-eucjp_commontests = (
-    ("abc\x80\x80\xc1\xc4", "strict",  None),
-    ("abc\xc8", "strict",  None),
-    ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u7956"),
-    ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u7956\ufffd"),
-    ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\u7956"),
-    ("abc\x8f\x83\x83", "replace", u"abc\ufffd"),
-    ("\xc1\x64", "strict", None),
-)
-
-class Test_EUC_JP_COMPAT(test_multibytecodec_support.TestBase,
-                         unittest.TestCase):
-    encoding = 'euc_jp'
-    tstring = test_multibytecodec_support.load_teststring('euc_jp')
-    codectests = eucjp_commontests + (
-        ("\xa1\xc0\\", "strict", u"\uff3c\\"),
-        (u"\xa5", "strict", "\x5c"),
-        (u"\u203e", "strict", "\x7e"),
-    )
-
-shiftjis_commonenctests = (
-    ("abc\x80\x80\x82\x84", "strict",  None),
-    ("abc\xf8", "strict",  None),
-    ("abc\x80\x80\x82\x84", "replace", u"abc\ufffd\uff44"),
-    ("abc\x80\x80\x82\x84\x88", "replace", u"abc\ufffd\uff44\ufffd"),
-    ("abc\x80\x80\x82\x84def", "ignore",  u"abc\uff44def"),
-)
-
-class Test_SJIS_COMPAT(test_multibytecodec_support.TestBase, unittest.TestCase):
-    encoding = 'shift_jis'
-    tstring = test_multibytecodec_support.load_teststring('shift_jis')
-    codectests = shiftjis_commonenctests + (
-        ("\\\x7e", "strict", u"\\\x7e"),
-        ("\x81\x5f\x81\x61\x81\x7c", "strict", u"\uff3c\u2016\u2212"),
-    )
-
-class Test_SJISX0213(test_multibytecodec_support.TestBase, unittest.TestCase):
-    encoding = 'shift_jisx0213'
-    tstring = test_multibytecodec_support.load_teststring('shift_jisx0213')
-    codectests = (
-        # invalid bytes
-        ("abc\x80\x80\x82\x84", "strict",  None),
-        ("abc\xf8", "strict",  None),
-        ("abc\x80\x80\x82\x84", "replace", u"abc\ufffd\uff44"),
-        ("abc\x80\x80\x82\x84\x88", "replace", u"abc\ufffd\uff44\ufffd"),
-        ("abc\x80\x80\x82\x84def", "ignore",  u"abc\uff44def"),
-        # sjis vs cp932
-        ("\\\x7e", "replace", u"\xa5\u203e"),
-        ("\x81\x5f\x81\x61\x81\x7c", "replace", u"\x5c\u2016\u2212"),
-    )
-    xmlcharnametest = (
-        u"\xab\u211c\xbb = \u2329\u1234\u232a",
-        "\x85G&real;\x85Q = &lang;&#4660;&rang;"
-    )
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_kr.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_kr.py
deleted file mode 100644
index f64f90e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_kr.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env python
-#
-# test_codecencodings_kr.py
-#   Codec encoding tests for ROK encodings.
-#
-
-from test import test_support
-from test import test_multibytecodec_support
-import unittest
-
-class Test_CP949(test_multibytecodec_support.TestBase, unittest.TestCase):
-    encoding = 'cp949'
-    tstring = test_multibytecodec_support.load_teststring('cp949')
-    codectests = (
-        # invalid bytes
-        ("abc\x80\x80\xc1\xc4", "strict",  None),
-        ("abc\xc8", "strict",  None),
-        ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\uc894"),
-        ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\uc894\ufffd"),
-        ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\uc894"),
-    )
-
-class Test_EUCKR(test_multibytecodec_support.TestBase, unittest.TestCase):
-    encoding = 'euc_kr'
-    tstring = test_multibytecodec_support.load_teststring('euc_kr')
-    codectests = (
-        # invalid bytes
-        ("abc\x80\x80\xc1\xc4", "strict",  None),
-        ("abc\xc8", "strict",  None),
-        ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\uc894"),
-        ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\uc894\ufffd"),
-        ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\uc894"),
-
-        # composed make-up sequence errors
-        ("\xa4\xd4", "strict", None),
-        ("\xa4\xd4\xa4", "strict", None),
-        ("\xa4\xd4\xa4\xb6", "strict", None),
-        ("\xa4\xd4\xa4\xb6\xa4", "strict", None),
-        ("\xa4\xd4\xa4\xb6\xa4\xd0", "strict", None),
-        ("\xa4\xd4\xa4\xb6\xa4\xd0\xa4", "strict", None),
-        ("\xa4\xd4\xa4\xb6\xa4\xd0\xa4\xd4", "strict", u"\uc4d4"),
-        ("\xa4\xd4\xa4\xb6\xa4\xd0\xa4\xd4x", "strict", u"\uc4d4x"),
-        ("a\xa4\xd4\xa4\xb6\xa4", "replace", u"a\ufffd"),
-        ("\xa4\xd4\xa3\xb6\xa4\xd0\xa4\xd4", "strict", None),
-        ("\xa4\xd4\xa4\xb6\xa3\xd0\xa4\xd4", "strict", None),
-        ("\xa4\xd4\xa4\xb6\xa4\xd0\xa3\xd4", "strict", None),
-        ("\xa4\xd4\xa4\xff\xa4\xd0\xa4\xd4", "replace", u"\ufffd"),
-        ("\xa4\xd4\xa4\xb6\xa4\xff\xa4\xd4", "replace", u"\ufffd"),
-        ("\xa4\xd4\xa4\xb6\xa4\xd0\xa4\xff", "replace", u"\ufffd"),
-        ("\xc1\xc4", "strict", u"\uc894"),
-    )
-
-class Test_JOHAB(test_multibytecodec_support.TestBase, unittest.TestCase):
-    encoding = 'johab'
-    tstring = test_multibytecodec_support.load_teststring('johab')
-    codectests = (
-        # invalid bytes
-        ("abc\x80\x80\xc1\xc4", "strict",  None),
-        ("abc\xc8", "strict",  None),
-        ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\ucd27"),
-        ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\ucd27\ufffd"),
-        ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\ucd27"),
-    )
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_tw.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_tw.py
deleted file mode 100644
index 45bf42d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecencodings_tw.py
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env python
-#
-# test_codecencodings_tw.py
-#   Codec encoding tests for ROC encodings.
-#
-
-from test import test_support
-from test import test_multibytecodec_support
-import unittest
-
-class Test_Big5(test_multibytecodec_support.TestBase, unittest.TestCase):
-    encoding = 'big5'
-    tstring = test_multibytecodec_support.load_teststring('big5')
-    codectests = (
-        # invalid bytes
-        ("abc\x80\x80\xc1\xc4", "strict",  None),
-        ("abc\xc8", "strict",  None),
-        ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u8b10"),
-        ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u8b10\ufffd"),
-        ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\u8b10"),
-    )
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_cn.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_cn.py
deleted file mode 100644
index 4ad0ba4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_cn.py
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env python
-#
-# test_codecmaps_cn.py
-#   Codec mapping tests for PRC encodings
-#
-
-from test import test_support
-from test import test_multibytecodec_support
-import unittest
-
-class TestGB2312Map(test_multibytecodec_support.TestBase_Mapping,
-                   unittest.TestCase):
-    encoding = 'gb2312'
-    mapfileurl = 'http://people.freebsd.org/~perky/i18n/EUC-CN.TXT'
-
-class TestGBKMap(test_multibytecodec_support.TestBase_Mapping,
-                   unittest.TestCase):
-    encoding = 'gbk'
-    mapfileurl = 'http://www.unicode.org/Public/MAPPINGS/VENDORS/' \
-                 'MICSFT/WINDOWS/CP936.TXT'
-
-class TestGB18030Map(test_multibytecodec_support.TestBase_Mapping,
-                     unittest.TestCase):
-    encoding = 'gb18030'
-    mapfileurl = 'http://source.icu-project.org/repos/icu/data/' \
-                 'trunk/charset/data/xml/gb-18030-2000.xml'
-
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_hk.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_hk.py
deleted file mode 100644
index 0c7f573..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_hk.py
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/env python
-#
-# test_codecmaps_hk.py
-#   Codec mapping tests for HongKong encodings
-#
-
-from test import test_support
-from test import test_multibytecodec_support
-import unittest
-
-class TestBig5HKSCSMap(test_multibytecodec_support.TestBase_Mapping,
-                       unittest.TestCase):
-    encoding = 'big5hkscs'
-    mapfileurl = 'http://people.freebsd.org/~perky/i18n/BIG5HKSCS-2004.TXT'
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_support.use_resources = ['urlfetch']
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_jp.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_jp.py
deleted file mode 100644
index 13564c6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_jp.py
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env python
-#
-# test_codecmaps_jp.py
-#   Codec mapping tests for Japanese encodings
-#
-
-from test import test_support
-from test import test_multibytecodec_support
-import unittest
-
-class TestCP932Map(test_multibytecodec_support.TestBase_Mapping,
-                   unittest.TestCase):
-    encoding = 'cp932'
-    mapfileurl = 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/' \
-                 'WINDOWS/CP932.TXT'
-    supmaps = [
-        ('\x80', u'\u0080'),
-        ('\xa0', u'\uf8f0'),
-        ('\xfd', u'\uf8f1'),
-        ('\xfe', u'\uf8f2'),
-        ('\xff', u'\uf8f3'),
-    ]
-    for i in range(0xa1, 0xe0):
-        supmaps.append((chr(i), unichr(i+0xfec0)))
-
-
-class TestEUCJPCOMPATMap(test_multibytecodec_support.TestBase_Mapping,
-                         unittest.TestCase):
-    encoding = 'euc_jp'
-    mapfilename = 'EUC-JP.TXT'
-    mapfileurl = 'http://people.freebsd.org/~perky/i18n/EUC-JP.TXT'
-
-
-class TestSJISCOMPATMap(test_multibytecodec_support.TestBase_Mapping,
-                        unittest.TestCase):
-    encoding = 'shift_jis'
-    mapfilename = 'SHIFTJIS.TXT'
-    mapfileurl = 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE' \
-                 '/EASTASIA/JIS/SHIFTJIS.TXT'
-    pass_enctest = [
-        ('\x81_', u'\\'),
-    ]
-    pass_dectest = [
-        ('\\', u'\xa5'),
-        ('~', u'\u203e'),
-        ('\x81_', u'\\'),
-    ]
-
-class TestEUCJISX0213Map(test_multibytecodec_support.TestBase_Mapping,
-                         unittest.TestCase):
-    encoding = 'euc_jisx0213'
-    mapfilename = 'EUC-JISX0213.TXT'
-    mapfileurl = 'http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT'
-
-
-class TestSJISX0213Map(test_multibytecodec_support.TestBase_Mapping,
-                       unittest.TestCase):
-    encoding = 'shift_jisx0213'
-    mapfilename = 'SHIFT_JISX0213.TXT'
-    mapfileurl = 'http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT'
-
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_kr.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_kr.py
deleted file mode 100644
index d490227..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_kr.py
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env python
-#
-# test_codecmaps_kr.py
-#   Codec mapping tests for ROK encodings
-#
-
-from test import test_support
-from test import test_multibytecodec_support
-import unittest
-
-class TestCP949Map(test_multibytecodec_support.TestBase_Mapping,
-                   unittest.TestCase):
-    encoding = 'cp949'
-    mapfileurl = 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT' \
-                 '/WINDOWS/CP949.TXT'
-
-
-class TestEUCKRMap(test_multibytecodec_support.TestBase_Mapping,
-                   unittest.TestCase):
-    encoding = 'euc_kr'
-    mapfileurl = 'http://people.freebsd.org/~perky/i18n/EUC-KR.TXT'
-
-    # A4D4 HANGUL FILLER indicates the begin of 8-bytes make-up sequence.
-    pass_enctest = [('\xa4\xd4', u'\u3164')]
-    pass_dectest = [('\xa4\xd4', u'\u3164')]
-
-
-class TestJOHABMap(test_multibytecodec_support.TestBase_Mapping,
-                   unittest.TestCase):
-    encoding = 'johab'
-    mapfileurl = 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/' \
-                 'KSC/JOHAB.TXT'
-    # KS X 1001 standard assigned 0x5c as WON SIGN.
-    # but, in early 90s that is the only era used johab widely,
-    # the most softwares implements it as REVERSE SOLIDUS.
-    # So, we ignore the standard here.
-    pass_enctest = [('\\', u'\u20a9')]
-    pass_dectest = [('\\', u'\u20a9')]
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_tw.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_tw.py
deleted file mode 100644
index a986bfe..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecmaps_tw.py
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env python
-#
-# test_codecmaps_tw.py
-#   Codec mapping tests for ROC encodings
-#
-
-from test import test_support
-from test import test_multibytecodec_support
-import unittest
-
-class TestBIG5Map(test_multibytecodec_support.TestBase_Mapping,
-                  unittest.TestCase):
-    encoding = 'big5'
-    mapfileurl = 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE/' \
-                 'EASTASIA/OTHER/BIG5.TXT'
-
-class TestCP950Map(test_multibytecodec_support.TestBase_Mapping,
-                   unittest.TestCase):
-    encoding = 'cp950'
-    mapfileurl = 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/' \
-                 'WINDOWS/CP950.TXT'
-    pass_enctest = [
-        ('\xa2\xcc', u'\u5341'),
-        ('\xa2\xce', u'\u5345'),
-    ]
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecs.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecs.py
deleted file mode 100644
index ef65d9b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codecs.py
+++ /dev/null
@@ -1,1614 +0,0 @@
-from test import test_support
-import unittest
-import codecs
-import sys, StringIO, _testcapi
-
-class Queue(object):
-    """
-    queue: write bytes at one end, read bytes from the other end
-    """
-    def __init__(self):
-        self._buffer = ""
-
-    def write(self, chars):
-        self._buffer += chars
-
-    def read(self, size=-1):
-        if size<0:
-            s = self._buffer
-            self._buffer = ""
-            return s
-        else:
-            s = self._buffer[:size]
-            self._buffer = self._buffer[size:]
-            return s
-
-class ReadTest(unittest.TestCase):
-    def check_partial(self, input, partialresults):
-        # get a StreamReader for the encoding and feed the bytestring version
-        # of input to the reader byte by byte. Read everything available from
-        # the StreamReader and check that the results equal the appropriate
-        # entries from partialresults.
-        q = Queue()
-        r = codecs.getreader(self.encoding)(q)
-        result = u""
-        for (c, partialresult) in zip(input.encode(self.encoding), partialresults):
-            q.write(c)
-            result += r.read()
-            self.assertEqual(result, partialresult)
-        # check that there's nothing left in the buffers
-        self.assertEqual(r.read(), u"")
-        self.assertEqual(r.bytebuffer, "")
-        self.assertEqual(r.charbuffer, u"")
-
-        # do the check again, this time using a incremental decoder
-        d = codecs.getincrementaldecoder(self.encoding)()
-        result = u""
-        for (c, partialresult) in zip(input.encode(self.encoding), partialresults):
-            result += d.decode(c)
-            self.assertEqual(result, partialresult)
-        # check that there's nothing left in the buffers
-        self.assertEqual(d.decode("", True), u"")
-        self.assertEqual(d.buffer, "")
-
-        # Check whether the reset method works properly
-        d.reset()
-        result = u""
-        for (c, partialresult) in zip(input.encode(self.encoding), partialresults):
-            result += d.decode(c)
-            self.assertEqual(result, partialresult)
-        # check that there's nothing left in the buffers
-        self.assertEqual(d.decode("", True), u"")
-        self.assertEqual(d.buffer, "")
-
-        # check iterdecode()
-        encoded = input.encode(self.encoding)
-        self.assertEqual(
-            input,
-            u"".join(codecs.iterdecode(encoded, self.encoding))
-        )
-
-    def test_readline(self):
-        def getreader(input):
-            stream = StringIO.StringIO(input.encode(self.encoding))
-            return codecs.getreader(self.encoding)(stream)
-
-        def readalllines(input, keepends=True, size=None):
-            reader = getreader(input)
-            lines = []
-            while True:
-                line = reader.readline(size=size, keepends=keepends)
-                if not line:
-                    break
-                lines.append(line)
-            return "|".join(lines)
-
-        s = u"foo\nbar\r\nbaz\rspam\u2028eggs"
-        sexpected = u"foo\n|bar\r\n|baz\r|spam\u2028|eggs"
-        sexpectednoends = u"foo|bar|baz|spam|eggs"
-        self.assertEqual(readalllines(s, True), sexpected)
-        self.assertEqual(readalllines(s, False), sexpectednoends)
-        self.assertEqual(readalllines(s, True, 10), sexpected)
-        self.assertEqual(readalllines(s, False, 10), sexpectednoends)
-
-        # Test long lines (multiple calls to read() in readline())
-        vw = []
-        vwo = []
-        for (i, lineend) in enumerate(u"\n \r\n \r \u2028".split()):
-            vw.append((i*200)*u"\3042" + lineend)
-            vwo.append((i*200)*u"\3042")
-        self.assertEqual(readalllines("".join(vw), True), "".join(vw))
-        self.assertEqual(readalllines("".join(vw), False),"".join(vwo))
-
-        # Test lines where the first read might end with \r, so the
-        # reader has to look ahead whether this is a lone \r or a \r\n
-        for size in xrange(80):
-            for lineend in u"\n \r\n \r \u2028".split():
-                s = 10*(size*u"a" + lineend + u"xxx\n")
-                reader = getreader(s)
-                for i in xrange(10):
-                    self.assertEqual(
-                        reader.readline(keepends=True),
-                        size*u"a" + lineend,
-                    )
-                reader = getreader(s)
-                for i in xrange(10):
-                    self.assertEqual(
-                        reader.readline(keepends=False),
-                        size*u"a",
-                    )
-
-    def test_bug1175396(self):
-        s = [
-            '<%!--===================================================\r\n',
-            '    BLOG index page: show recent articles,\r\n',
-            '    today\'s articles, or articles of a specific date.\r\n',
-            '========================================================--%>\r\n',
-            '<%@inputencoding="ISO-8859-1"%>\r\n',
-            '<%@pagetemplate=TEMPLATE.y%>\r\n',
-            '<%@import=import frog.util, frog%>\r\n',
-            '<%@import=import frog.objects%>\r\n',
-            '<%@import=from frog.storageerrors import StorageError%>\r\n',
-            '<%\r\n',
-            '\r\n',
-            'import logging\r\n',
-            'log=logging.getLogger("Snakelets.logger")\r\n',
-            '\r\n',
-            '\r\n',
-            'user=self.SessionCtx.user\r\n',
-            'storageEngine=self.SessionCtx.storageEngine\r\n',
-            '\r\n',
-            '\r\n',
-            'def readArticlesFromDate(date, count=None):\r\n',
-            '    entryids=storageEngine.listBlogEntries(date)\r\n',
-            '    entryids.reverse() # descending\r\n',
-            '    if count:\r\n',
-            '        entryids=entryids[:count]\r\n',
-            '    try:\r\n',
-            '        return [ frog.objects.BlogEntry.load(storageEngine, date, Id) for Id in entryids ]\r\n',
-            '    except StorageError,x:\r\n',
-            '        log.error("Error loading articles: "+str(x))\r\n',
-            '        self.abort("cannot load articles")\r\n',
-            '\r\n',
-            'showdate=None\r\n',
-            '\r\n',
-            'arg=self.Request.getArg()\r\n',
-            'if arg=="today":\r\n',
-            '    #-------------------- TODAY\'S ARTICLES\r\n',
-            '    self.write("<h2>Today\'s articles</h2>")\r\n',
-            '    showdate = frog.util.isodatestr() \r\n',
-            '    entries = readArticlesFromDate(showdate)\r\n',
-            'elif arg=="active":\r\n',
-            '    #-------------------- ACTIVE ARTICLES redirect\r\n',
-            '    self.Yredirect("active.y")\r\n',
-            'elif arg=="login":\r\n',
-            '    #-------------------- LOGIN PAGE redirect\r\n',
-            '    self.Yredirect("login.y")\r\n',
-            'elif arg=="date":\r\n',
-            '    #-------------------- ARTICLES OF A SPECIFIC DATE\r\n',
-            '    showdate = self.Request.getParameter("date")\r\n',
-            '    self.write("<h2>Articles written on %s</h2>"% frog.util.mediumdatestr(showdate))\r\n',
-            '    entries = readArticlesFromDate(showdate)\r\n',
-            'else:\r\n',
-            '    #-------------------- RECENT ARTICLES\r\n',
-            '    self.write("<h2>Recent articles</h2>")\r\n',
-            '    dates=storageEngine.listBlogEntryDates()\r\n',
-            '    if dates:\r\n',
-            '        entries=[]\r\n',
-            '        SHOWAMOUNT=10\r\n',
-            '        for showdate in dates:\r\n',
-            '            entries.extend( readArticlesFromDate(showdate, SHOWAMOUNT-len(entries)) )\r\n',
-            '            if len(entries)>=SHOWAMOUNT:\r\n',
-            '                break\r\n',
-            '                \r\n',
-        ]
-        stream = StringIO.StringIO("".join(s).encode(self.encoding))
-        reader = codecs.getreader(self.encoding)(stream)
-        for (i, line) in enumerate(reader):
-            self.assertEqual(line, s[i])
-
-    def test_readlinequeue(self):
-        q = Queue()
-        writer = codecs.getwriter(self.encoding)(q)
-        reader = codecs.getreader(self.encoding)(q)
-
-        # No lineends
-        writer.write(u"foo\r")
-        self.assertEqual(reader.readline(keepends=False), u"foo")
-        writer.write(u"\nbar\r")
-        self.assertEqual(reader.readline(keepends=False), u"")
-        self.assertEqual(reader.readline(keepends=False), u"bar")
-        writer.write(u"baz")
-        self.assertEqual(reader.readline(keepends=False), u"baz")
-        self.assertEqual(reader.readline(keepends=False), u"")
-
-        # Lineends
-        writer.write(u"foo\r")
-        self.assertEqual(reader.readline(keepends=True), u"foo\r")
-        writer.write(u"\nbar\r")
-        self.assertEqual(reader.readline(keepends=True), u"\n")
-        self.assertEqual(reader.readline(keepends=True), u"bar\r")
-        writer.write(u"baz")
-        self.assertEqual(reader.readline(keepends=True), u"baz")
-        self.assertEqual(reader.readline(keepends=True), u"")
-        writer.write(u"foo\r\n")
-        self.assertEqual(reader.readline(keepends=True), u"foo\r\n")
-
-    def test_bug1098990_a(self):
-        s1 = u"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy\r\n"
-        s2 = u"offending line: ladfj askldfj klasdj fskla dfzaskdj fasklfj laskd fjasklfzzzzaa%whereisthis!!!\r\n"
-        s3 = u"next line.\r\n"
-
-        s = (s1+s2+s3).encode(self.encoding)
-        stream = StringIO.StringIO(s)
-        reader = codecs.getreader(self.encoding)(stream)
-        self.assertEqual(reader.readline(), s1)
-        self.assertEqual(reader.readline(), s2)
-        self.assertEqual(reader.readline(), s3)
-        self.assertEqual(reader.readline(), u"")
-
-    def test_bug1098990_b(self):
-        s1 = u"aaaaaaaaaaaaaaaaaaaaaaaa\r\n"
-        s2 = u"bbbbbbbbbbbbbbbbbbbbbbbb\r\n"
-        s3 = u"stillokay:bbbbxx\r\n"
-        s4 = u"broken!!!!badbad\r\n"
-        s5 = u"againokay.\r\n"
-
-        s = (s1+s2+s3+s4+s5).encode(self.encoding)
-        stream = StringIO.StringIO(s)
-        reader = codecs.getreader(self.encoding)(stream)
-        self.assertEqual(reader.readline(), s1)
-        self.assertEqual(reader.readline(), s2)
-        self.assertEqual(reader.readline(), s3)
-        self.assertEqual(reader.readline(), s4)
-        self.assertEqual(reader.readline(), s5)
-        self.assertEqual(reader.readline(), u"")
-
-class UTF32Test(ReadTest):
-    encoding = "utf-32"
-
-    spamle = ('\xff\xfe\x00\x00'
-              's\x00\x00\x00p\x00\x00\x00a\x00\x00\x00m\x00\x00\x00'
-              's\x00\x00\x00p\x00\x00\x00a\x00\x00\x00m\x00\x00\x00')
-    spambe = ('\x00\x00\xfe\xff'
-              '\x00\x00\x00s\x00\x00\x00p\x00\x00\x00a\x00\x00\x00m'
-              '\x00\x00\x00s\x00\x00\x00p\x00\x00\x00a\x00\x00\x00m')
-
-    def test_only_one_bom(self):
-        _,_,reader,writer = codecs.lookup(self.encoding)
-        # encode some stream
-        s = StringIO.StringIO()
-        f = writer(s)
-        f.write(u"spam")
-        f.write(u"spam")
-        d = s.getvalue()
-        # check whether there is exactly one BOM in it
-        self.assertTrue(d == self.spamle or d == self.spambe)
-        # try to read it back
-        s = StringIO.StringIO(d)
-        f = reader(s)
-        self.assertEqual(f.read(), u"spamspam")
-
-    def test_badbom(self):
-        s = StringIO.StringIO(4*"\xff")
-        f = codecs.getreader(self.encoding)(s)
-        self.assertRaises(UnicodeError, f.read)
-
-        s = StringIO.StringIO(8*"\xff")
-        f = codecs.getreader(self.encoding)(s)
-        self.assertRaises(UnicodeError, f.read)
-
-    def test_partial(self):
-        self.check_partial(
-            u"\x00\xff\u0100\uffff",
-            [
-                u"", # first byte of BOM read
-                u"", # second byte of BOM read
-                u"", # third byte of BOM read
-                u"", # fourth byte of BOM read => byteorder known
-                u"",
-                u"",
-                u"",
-                u"\x00",
-                u"\x00",
-                u"\x00",
-                u"\x00",
-                u"\x00\xff",
-                u"\x00\xff",
-                u"\x00\xff",
-                u"\x00\xff",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100\uffff",
-            ]
-        )
-
-    def test_handlers(self):
-        self.assertEqual((u'\ufffd', 1),
-                         codecs.utf_32_decode('\x01', 'replace', True))
-        self.assertEqual((u'', 1),
-                         codecs.utf_32_decode('\x01', 'ignore', True))
-
-    def test_errors(self):
-        self.assertRaises(UnicodeDecodeError, codecs.utf_32_decode,
-                          "\xff", "strict", True)
-
-    def test_issue8941(self):
-        # Issue #8941: insufficient result allocation when decoding into
-        # surrogate pairs on UCS-2 builds.
-        encoded_le = '\xff\xfe\x00\x00' + '\x00\x00\x01\x00' * 1024
-        self.assertEqual(u'\U00010000' * 1024,
-                         codecs.utf_32_decode(encoded_le)[0])
-        encoded_be = '\x00\x00\xfe\xff' + '\x00\x01\x00\x00' * 1024
-        self.assertEqual(u'\U00010000' * 1024,
-                         codecs.utf_32_decode(encoded_be)[0])
-
-class UTF32LETest(ReadTest):
-    encoding = "utf-32-le"
-
-    def test_partial(self):
-        self.check_partial(
-            u"\x00\xff\u0100\uffff",
-            [
-                u"",
-                u"",
-                u"",
-                u"\x00",
-                u"\x00",
-                u"\x00",
-                u"\x00",
-                u"\x00\xff",
-                u"\x00\xff",
-                u"\x00\xff",
-                u"\x00\xff",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100\uffff",
-            ]
-        )
-
-    def test_simple(self):
-        self.assertEqual(u"\U00010203".encode(self.encoding), "\x03\x02\x01\x00")
-
-    def test_errors(self):
-        self.assertRaises(UnicodeDecodeError, codecs.utf_32_le_decode,
-                          "\xff", "strict", True)
-
-    def test_issue8941(self):
-        # Issue #8941: insufficient result allocation when decoding into
-        # surrogate pairs on UCS-2 builds.
-        encoded = '\x00\x00\x01\x00' * 1024
-        self.assertEqual(u'\U00010000' * 1024,
-                         codecs.utf_32_le_decode(encoded)[0])
-
-class UTF32BETest(ReadTest):
-    encoding = "utf-32-be"
-
-    def test_partial(self):
-        self.check_partial(
-            u"\x00\xff\u0100\uffff",
-            [
-                u"",
-                u"",
-                u"",
-                u"\x00",
-                u"\x00",
-                u"\x00",
-                u"\x00",
-                u"\x00\xff",
-                u"\x00\xff",
-                u"\x00\xff",
-                u"\x00\xff",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100\uffff",
-            ]
-        )
-
-    def test_simple(self):
-        self.assertEqual(u"\U00010203".encode(self.encoding), "\x00\x01\x02\x03")
-
-    def test_errors(self):
-        self.assertRaises(UnicodeDecodeError, codecs.utf_32_be_decode,
-                          "\xff", "strict", True)
-
-    def test_issue8941(self):
-        # Issue #8941: insufficient result allocation when decoding into
-        # surrogate pairs on UCS-2 builds.
-        encoded = '\x00\x01\x00\x00' * 1024
-        self.assertEqual(u'\U00010000' * 1024,
-                         codecs.utf_32_be_decode(encoded)[0])
-
-
-class UTF16Test(ReadTest):
-    encoding = "utf-16"
-
-    spamle = '\xff\xfes\x00p\x00a\x00m\x00s\x00p\x00a\x00m\x00'
-    spambe = '\xfe\xff\x00s\x00p\x00a\x00m\x00s\x00p\x00a\x00m'
-
-    def test_only_one_bom(self):
-        _,_,reader,writer = codecs.lookup(self.encoding)
-        # encode some stream
-        s = StringIO.StringIO()
-        f = writer(s)
-        f.write(u"spam")
-        f.write(u"spam")
-        d = s.getvalue()
-        # check whether there is exactly one BOM in it
-        self.assertTrue(d == self.spamle or d == self.spambe)
-        # try to read it back
-        s = StringIO.StringIO(d)
-        f = reader(s)
-        self.assertEqual(f.read(), u"spamspam")
-
-    def test_badbom(self):
-        s = StringIO.StringIO("\xff\xff")
-        f = codecs.getreader(self.encoding)(s)
-        self.assertRaises(UnicodeError, f.read)
-
-        s = StringIO.StringIO("\xff\xff\xff\xff")
-        f = codecs.getreader(self.encoding)(s)
-        self.assertRaises(UnicodeError, f.read)
-
-    def test_partial(self):
-        self.check_partial(
-            u"\x00\xff\u0100\uffff",
-            [
-                u"", # first byte of BOM read
-                u"", # second byte of BOM read => byteorder known
-                u"",
-                u"\x00",
-                u"\x00",
-                u"\x00\xff",
-                u"\x00\xff",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100\uffff",
-            ]
-        )
-
-    def test_handlers(self):
-        self.assertEqual((u'\ufffd', 1),
-                         codecs.utf_16_decode('\x01', 'replace', True))
-        self.assertEqual((u'', 1),
-                         codecs.utf_16_decode('\x01', 'ignore', True))
-
-    def test_errors(self):
-        self.assertRaises(UnicodeDecodeError, codecs.utf_16_decode, "\xff", "strict", True)
-
-    def test_bug691291(self):
-        # Files are always opened in binary mode, even if no binary mode was
-        # specified.  This means that no automatic conversion of '\n' is done
-        # on reading and writing.
-        s1 = u'Hello\r\nworld\r\n'
-
-        s = s1.encode(self.encoding)
-        self.addCleanup(test_support.unlink, test_support.TESTFN)
-        with open(test_support.TESTFN, 'wb') as fp:
-            fp.write(s)
-        with codecs.open(test_support.TESTFN, 'U', encoding=self.encoding) as reader:
-            self.assertEqual(reader.read(), s1)
-
-class UTF16LETest(ReadTest):
-    encoding = "utf-16-le"
-
-    def test_partial(self):
-        self.check_partial(
-            u"\x00\xff\u0100\uffff",
-            [
-                u"",
-                u"\x00",
-                u"\x00",
-                u"\x00\xff",
-                u"\x00\xff",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100\uffff",
-            ]
-        )
-
-    def test_errors(self):
-        self.assertRaises(UnicodeDecodeError, codecs.utf_16_le_decode, "\xff", "strict", True)
-
-class UTF16BETest(ReadTest):
-    encoding = "utf-16-be"
-
-    def test_partial(self):
-        self.check_partial(
-            u"\x00\xff\u0100\uffff",
-            [
-                u"",
-                u"\x00",
-                u"\x00",
-                u"\x00\xff",
-                u"\x00\xff",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100",
-                u"\x00\xff\u0100\uffff",
-            ]
-        )
-
-    def test_errors(self):
-        self.assertRaises(UnicodeDecodeError, codecs.utf_16_be_decode, "\xff", "strict", True)
-
-class UTF8Test(ReadTest):
-    encoding = "utf-8"
-
-    def test_partial(self):
-        self.check_partial(
-            u"\x00\xff\u07ff\u0800\uffff",
-            [
-                u"\x00",
-                u"\x00",
-                u"\x00\xff",
-                u"\x00\xff",
-                u"\x00\xff\u07ff",
-                u"\x00\xff\u07ff",
-                u"\x00\xff\u07ff",
-                u"\x00\xff\u07ff\u0800",
-                u"\x00\xff\u07ff\u0800",
-                u"\x00\xff\u07ff\u0800",
-                u"\x00\xff\u07ff\u0800\uffff",
-            ]
-        )
-
-class UTF7Test(ReadTest):
-    encoding = "utf-7"
-
-    def test_partial(self):
-        self.check_partial(
-            u"a+-b",
-            [
-                u"a",
-                u"a",
-                u"a+",
-                u"a+-",
-                u"a+-b",
-            ]
-        )
-
-class UTF16ExTest(unittest.TestCase):
-
-    def test_errors(self):
-        self.assertRaises(UnicodeDecodeError, codecs.utf_16_ex_decode, "\xff", "strict", 0, True)
-
-    def test_bad_args(self):
-        self.assertRaises(TypeError, codecs.utf_16_ex_decode)
-
-class ReadBufferTest(unittest.TestCase):
-
-    def test_array(self):
-        import array
-        self.assertEqual(
-            codecs.readbuffer_encode(array.array("c", "spam")),
-            ("spam", 4)
-        )
-
-    def test_empty(self):
-        self.assertEqual(codecs.readbuffer_encode(""), ("", 0))
-
-    def test_bad_args(self):
-        self.assertRaises(TypeError, codecs.readbuffer_encode)
-        self.assertRaises(TypeError, codecs.readbuffer_encode, 42)
-
-class CharBufferTest(unittest.TestCase):
-
-    def test_string(self):
-        self.assertEqual(codecs.charbuffer_encode("spam"), ("spam", 4))
-
-    def test_empty(self):
-        self.assertEqual(codecs.charbuffer_encode(""), ("", 0))
-
-    def test_bad_args(self):
-        self.assertRaises(TypeError, codecs.charbuffer_encode)
-        self.assertRaises(TypeError, codecs.charbuffer_encode, 42)
-
-class UTF8SigTest(ReadTest):
-    encoding = "utf-8-sig"
-
-    def test_partial(self):
-        self.check_partial(
-            u"\ufeff\x00\xff\u07ff\u0800\uffff",
-            [
-                u"",
-                u"",
-                u"", # First BOM has been read and skipped
-                u"",
-                u"",
-                u"\ufeff", # Second BOM has been read and emitted
-                u"\ufeff\x00", # "\x00" read and emitted
-                u"\ufeff\x00", # First byte of encoded u"\xff" read
-                u"\ufeff\x00\xff", # Second byte of encoded u"\xff" read
-                u"\ufeff\x00\xff", # First byte of encoded u"\u07ff" read
-                u"\ufeff\x00\xff\u07ff", # Second byte of encoded u"\u07ff" read
-                u"\ufeff\x00\xff\u07ff",
-                u"\ufeff\x00\xff\u07ff",
-                u"\ufeff\x00\xff\u07ff\u0800",
-                u"\ufeff\x00\xff\u07ff\u0800",
-                u"\ufeff\x00\xff\u07ff\u0800",
-                u"\ufeff\x00\xff\u07ff\u0800\uffff",
-            ]
-        )
-
-    def test_bug1601501(self):
-        # SF bug #1601501: check that the codec works with a buffer
-        unicode("\xef\xbb\xbf", "utf-8-sig")
-
-    def test_bom(self):
-        d = codecs.getincrementaldecoder("utf-8-sig")()
-        s = u"spam"
-        self.assertEqual(d.decode(s.encode("utf-8-sig")), s)
-
-    def test_stream_bom(self):
-        unistring = u"ABC\u00A1\u2200XYZ"
-        bytestring = codecs.BOM_UTF8 + "ABC\xC2\xA1\xE2\x88\x80XYZ"
-
-        reader = codecs.getreader("utf-8-sig")
-        for sizehint in [None] + range(1, 11) + \
-                        [64, 128, 256, 512, 1024]:
-            istream = reader(StringIO.StringIO(bytestring))
-            ostream = StringIO.StringIO()
-            while 1:
-                if sizehint is not None:
-                    data = istream.read(sizehint)
-                else:
-                    data = istream.read()
-
-                if not data:
-                    break
-                ostream.write(data)
-
-            got = ostream.getvalue()
-            self.assertEqual(got, unistring)
-
-    def test_stream_bare(self):
-        unistring = u"ABC\u00A1\u2200XYZ"
-        bytestring = "ABC\xC2\xA1\xE2\x88\x80XYZ"
-
-        reader = codecs.getreader("utf-8-sig")
-        for sizehint in [None] + range(1, 11) + \
-                        [64, 128, 256, 512, 1024]:
-            istream = reader(StringIO.StringIO(bytestring))
-            ostream = StringIO.StringIO()
-            while 1:
-                if sizehint is not None:
-                    data = istream.read(sizehint)
-                else:
-                    data = istream.read()
-
-                if not data:
-                    break
-                ostream.write(data)
-
-            got = ostream.getvalue()
-            self.assertEqual(got, unistring)
-
-class EscapeDecodeTest(unittest.TestCase):
-    def test_empty(self):
-        self.assertEqual(codecs.escape_decode(""), ("", 0))
-
-class RecodingTest(unittest.TestCase):
-    def test_recoding(self):
-        f = StringIO.StringIO()
-        f2 = codecs.EncodedFile(f, "unicode_internal", "utf-8")
-        f2.write(u"a")
-        f2.close()
-        # Python used to crash on this at exit because of a refcount
-        # bug in _codecsmodule.c
-
-# From RFC 3492
-punycode_testcases = [
-    # A Arabic (Egyptian):
-    (u"\u0644\u064A\u0647\u0645\u0627\u0628\u062A\u0643\u0644"
-     u"\u0645\u0648\u0634\u0639\u0631\u0628\u064A\u061F",
-     "egbpdaj6bu4bxfgehfvwxn"),
-    # B Chinese (simplified):
-    (u"\u4ED6\u4EEC\u4E3A\u4EC0\u4E48\u4E0D\u8BF4\u4E2D\u6587",
-     "ihqwcrb4cv8a8dqg056pqjye"),
-    # C Chinese (traditional):
-    (u"\u4ED6\u5011\u7232\u4EC0\u9EBD\u4E0D\u8AAA\u4E2D\u6587",
-     "ihqwctvzc91f659drss3x8bo0yb"),
-    # D Czech: Pro<ccaron>prost<ecaron>nemluv<iacute><ccaron>esky
-    (u"\u0050\u0072\u006F\u010D\u0070\u0072\u006F\u0073\u0074"
-     u"\u011B\u006E\u0065\u006D\u006C\u0075\u0076\u00ED\u010D"
-     u"\u0065\u0073\u006B\u0079",
-     "Proprostnemluvesky-uyb24dma41a"),
-    # E Hebrew:
-    (u"\u05DC\u05DE\u05D4\u05D4\u05DD\u05E4\u05E9\u05D5\u05D8"
-     u"\u05DC\u05D0\u05DE\u05D3\u05D1\u05E8\u05D9\u05DD\u05E2"
-     u"\u05D1\u05E8\u05D9\u05EA",
-     "4dbcagdahymbxekheh6e0a7fei0b"),
-    # F Hindi (Devanagari):
-    (u"\u092F\u0939\u0932\u094B\u0917\u0939\u093F\u0928\u094D"
-    u"\u0926\u0940\u0915\u094D\u092F\u094B\u0902\u0928\u0939"
-    u"\u0940\u0902\u092C\u094B\u0932\u0938\u0915\u0924\u0947"
-    u"\u0939\u0948\u0902",
-    "i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd"),
-
-    #(G) Japanese (kanji and hiragana):
-    (u"\u306A\u305C\u307F\u3093\u306A\u65E5\u672C\u8A9E\u3092"
-    u"\u8A71\u3057\u3066\u304F\u308C\u306A\u3044\u306E\u304B",
-     "n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa"),
-
-    # (H) Korean (Hangul syllables):
-    (u"\uC138\uACC4\uC758\uBAA8\uB4E0\uC0AC\uB78C\uB4E4\uC774"
-     u"\uD55C\uAD6D\uC5B4\uB97C\uC774\uD574\uD55C\uB2E4\uBA74"
-     u"\uC5BC\uB9C8\uB098\uC88B\uC744\uAE4C",
-     "989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5j"
-     "psd879ccm6fea98c"),
-
-    # (I) Russian (Cyrillic):
-    (u"\u043F\u043E\u0447\u0435\u043C\u0443\u0436\u0435\u043E"
-     u"\u043D\u0438\u043D\u0435\u0433\u043E\u0432\u043E\u0440"
-     u"\u044F\u0442\u043F\u043E\u0440\u0443\u0441\u0441\u043A"
-     u"\u0438",
-     "b1abfaaepdrnnbgefbaDotcwatmq2g4l"),
-
-    # (J) Spanish: Porqu<eacute>nopuedensimplementehablarenEspa<ntilde>ol
-    (u"\u0050\u006F\u0072\u0071\u0075\u00E9\u006E\u006F\u0070"
-     u"\u0075\u0065\u0064\u0065\u006E\u0073\u0069\u006D\u0070"
-     u"\u006C\u0065\u006D\u0065\u006E\u0074\u0065\u0068\u0061"
-     u"\u0062\u006C\u0061\u0072\u0065\u006E\u0045\u0073\u0070"
-     u"\u0061\u00F1\u006F\u006C",
-     "PorqunopuedensimplementehablarenEspaol-fmd56a"),
-
-    # (K) Vietnamese:
-    #  T<adotbelow>isaoh<odotbelow>kh<ocirc>ngth<ecirchookabove>ch\
-    #   <ihookabove>n<oacute>iti<ecircacute>ngVi<ecircdotbelow>t
-    (u"\u0054\u1EA1\u0069\u0073\u0061\u006F\u0068\u1ECD\u006B"
-     u"\u0068\u00F4\u006E\u0067\u0074\u0068\u1EC3\u0063\u0068"
-     u"\u1EC9\u006E\u00F3\u0069\u0074\u0069\u1EBF\u006E\u0067"
-     u"\u0056\u0069\u1EC7\u0074",
-     "TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g"),
-
-    #(L) 3<nen>B<gumi><kinpachi><sensei>
-    (u"\u0033\u5E74\u0042\u7D44\u91D1\u516B\u5148\u751F",
-     "3B-ww4c5e180e575a65lsy2b"),
-
-    # (M) <amuro><namie>-with-SUPER-MONKEYS
-    (u"\u5B89\u5BA4\u5948\u7F8E\u6075\u002D\u0077\u0069\u0074"
-     u"\u0068\u002D\u0053\u0055\u0050\u0045\u0052\u002D\u004D"
-     u"\u004F\u004E\u004B\u0045\u0059\u0053",
-     "-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n"),
-
-    # (N) Hello-Another-Way-<sorezore><no><basho>
-    (u"\u0048\u0065\u006C\u006C\u006F\u002D\u0041\u006E\u006F"
-     u"\u0074\u0068\u0065\u0072\u002D\u0057\u0061\u0079\u002D"
-     u"\u305D\u308C\u305E\u308C\u306E\u5834\u6240",
-     "Hello-Another-Way--fc4qua05auwb3674vfr0b"),
-
-    # (O) <hitotsu><yane><no><shita>2
-    (u"\u3072\u3068\u3064\u5C4B\u6839\u306E\u4E0B\u0032",
-     "2-u9tlzr9756bt3uc0v"),
-
-    # (P) Maji<de>Koi<suru>5<byou><mae>
-    (u"\u004D\u0061\u006A\u0069\u3067\u004B\u006F\u0069\u3059"
-     u"\u308B\u0035\u79D2\u524D",
-     "MajiKoi5-783gue6qz075azm5e"),
-
-     # (Q) <pafii>de<runba>
-    (u"\u30D1\u30D5\u30A3\u30FC\u0064\u0065\u30EB\u30F3\u30D0",
-     "de-jg4avhby1noc0d"),
-
-    # (R) <sono><supiido><de>
-    (u"\u305D\u306E\u30B9\u30D4\u30FC\u30C9\u3067",
-     "d9juau41awczczp"),
-
-    # (S) -> $1.00 <-
-    (u"\u002D\u003E\u0020\u0024\u0031\u002E\u0030\u0030\u0020"
-     u"\u003C\u002D",
-     "-> $1.00 <--")
-    ]
-
-for i in punycode_testcases:
-    if len(i)!=2:
-        print repr(i)
-
-class PunycodeTest(unittest.TestCase):
-    def test_encode(self):
-        for uni, puny in punycode_testcases:
-            # Need to convert both strings to lower case, since
-            # some of the extended encodings use upper case, but our
-            # code produces only lower case. Converting just puny to
-            # lower is also insufficient, since some of the input characters
-            # are upper case.
-            self.assertEqual(uni.encode("punycode").lower(), puny.lower())
-
-    def test_decode(self):
-        for uni, puny in punycode_testcases:
-            self.assertEqual(uni, puny.decode("punycode"))
-
-class UnicodeInternalTest(unittest.TestCase):
-    def test_bug1251300(self):
-        # Decoding with unicode_internal used to not correctly handle "code
-        # points" above 0x10ffff on UCS-4 builds.
-        if sys.maxunicode > 0xffff:
-            ok = [
-                ("\x00\x10\xff\xff", u"\U0010ffff"),
-                ("\x00\x00\x01\x01", u"\U00000101"),
-                ("", u""),
-            ]
-            not_ok = [
-                "\x7f\xff\xff\xff",
-                "\x80\x00\x00\x00",
-                "\x81\x00\x00\x00",
-                "\x00",
-                "\x00\x00\x00\x00\x00",
-            ]
-            for internal, uni in ok:
-                if sys.byteorder == "little":
-                    internal = "".join(reversed(internal))
-                self.assertEqual(uni, internal.decode("unicode_internal"))
-            for internal in not_ok:
-                if sys.byteorder == "little":
-                    internal = "".join(reversed(internal))
-                self.assertRaises(UnicodeDecodeError, internal.decode,
-                    "unicode_internal")
-
-    def test_decode_error_attributes(self):
-        if sys.maxunicode > 0xffff:
-            try:
-                "\x00\x00\x00\x00\x00\x11\x11\x00".decode("unicode_internal")
-            except UnicodeDecodeError, ex:
-                self.assertEqual("unicode_internal", ex.encoding)
-                self.assertEqual("\x00\x00\x00\x00\x00\x11\x11\x00", ex.object)
-                self.assertEqual(4, ex.start)
-                self.assertEqual(8, ex.end)
-            else:
-                self.fail()
-
-    def test_decode_callback(self):
-        if sys.maxunicode > 0xffff:
-            codecs.register_error("UnicodeInternalTest", codecs.ignore_errors)
-            decoder = codecs.getdecoder("unicode_internal")
-            ab = u"ab".encode("unicode_internal")
-            ignored = decoder("%s\x22\x22\x22\x22%s" % (ab[:4], ab[4:]),
-                "UnicodeInternalTest")
-            self.assertEqual((u"ab", 12), ignored)
-
-    def test_encode_length(self):
-        # Issue 3739
-        encoder = codecs.getencoder("unicode_internal")
-        self.assertEqual(encoder(u"a")[1], 1)
-        self.assertEqual(encoder(u"\xe9\u0142")[1], 2)
-
-        encoder = codecs.getencoder("string-escape")
-        self.assertEqual(encoder(r'\x00')[1], 4)
-
-# From http://www.gnu.org/software/libidn/draft-josefsson-idn-test-vectors.html
-nameprep_tests = [
-    # 3.1 Map to nothing.
-    ('foo\xc2\xad\xcd\x8f\xe1\xa0\x86\xe1\xa0\x8bbar'
-     '\xe2\x80\x8b\xe2\x81\xa0baz\xef\xb8\x80\xef\xb8\x88\xef'
-     '\xb8\x8f\xef\xbb\xbf',
-     'foobarbaz'),
-    # 3.2 Case folding ASCII U+0043 U+0041 U+0046 U+0045.
-    ('CAFE',
-     'cafe'),
-    # 3.3 Case folding 8bit U+00DF (german sharp s).
-    # The original test case is bogus; it says \xc3\xdf
-    ('\xc3\x9f',
-     'ss'),
-    # 3.4 Case folding U+0130 (turkish capital I with dot).
-    ('\xc4\xb0',
-     'i\xcc\x87'),
-    # 3.5 Case folding multibyte U+0143 U+037A.
-    ('\xc5\x83\xcd\xba',
-     '\xc5\x84 \xce\xb9'),
-    # 3.6 Case folding U+2121 U+33C6 U+1D7BB.
-    # XXX: skip this as it fails in UCS-2 mode
-    #('\xe2\x84\xa1\xe3\x8f\x86\xf0\x9d\x9e\xbb',
-    # 'telc\xe2\x88\x95kg\xcf\x83'),
-    (None, None),
-    # 3.7 Normalization of U+006a U+030c U+00A0 U+00AA.
-    ('j\xcc\x8c\xc2\xa0\xc2\xaa',
-     '\xc7\xb0 a'),
-    # 3.8 Case folding U+1FB7 and normalization.
-    ('\xe1\xbe\xb7',
-     '\xe1\xbe\xb6\xce\xb9'),
-    # 3.9 Self-reverting case folding U+01F0 and normalization.
-    # The original test case is bogus, it says `\xc7\xf0'
-    ('\xc7\xb0',
-     '\xc7\xb0'),
-    # 3.10 Self-reverting case folding U+0390 and normalization.
-    ('\xce\x90',
-     '\xce\x90'),
-    # 3.11 Self-reverting case folding U+03B0 and normalization.
-    ('\xce\xb0',
-     '\xce\xb0'),
-    # 3.12 Self-reverting case folding U+1E96 and normalization.
-    ('\xe1\xba\x96',
-     '\xe1\xba\x96'),
-    # 3.13 Self-reverting case folding U+1F56 and normalization.
-    ('\xe1\xbd\x96',
-     '\xe1\xbd\x96'),
-    # 3.14 ASCII space character U+0020.
-    (' ',
-     ' '),
-    # 3.15 Non-ASCII 8bit space character U+00A0.
-    ('\xc2\xa0',
-     ' '),
-    # 3.16 Non-ASCII multibyte space character U+1680.
-    ('\xe1\x9a\x80',
-     None),
-    # 3.17 Non-ASCII multibyte space character U+2000.
-    ('\xe2\x80\x80',
-     ' '),
-    # 3.18 Zero Width Space U+200b.
-    ('\xe2\x80\x8b',
-     ''),
-    # 3.19 Non-ASCII multibyte space character U+3000.
-    ('\xe3\x80\x80',
-     ' '),
-    # 3.20 ASCII control characters U+0010 U+007F.
-    ('\x10\x7f',
-     '\x10\x7f'),
-    # 3.21 Non-ASCII 8bit control character U+0085.
-    ('\xc2\x85',
-     None),
-    # 3.22 Non-ASCII multibyte control character U+180E.
-    ('\xe1\xa0\x8e',
-     None),
-    # 3.23 Zero Width No-Break Space U+FEFF.
-    ('\xef\xbb\xbf',
-     ''),
-    # 3.24 Non-ASCII control character U+1D175.
-    ('\xf0\x9d\x85\xb5',
-     None),
-    # 3.25 Plane 0 private use character U+F123.
-    ('\xef\x84\xa3',
-     None),
-    # 3.26 Plane 15 private use character U+F1234.
-    ('\xf3\xb1\x88\xb4',
-     None),
-    # 3.27 Plane 16 private use character U+10F234.
-    ('\xf4\x8f\x88\xb4',
-     None),
-    # 3.28 Non-character code point U+8FFFE.
-    ('\xf2\x8f\xbf\xbe',
-     None),
-    # 3.29 Non-character code point U+10FFFF.
-    ('\xf4\x8f\xbf\xbf',
-     None),
-    # 3.30 Surrogate code U+DF42.
-    ('\xed\xbd\x82',
-     None),
-    # 3.31 Non-plain text character U+FFFD.
-    ('\xef\xbf\xbd',
-     None),
-    # 3.32 Ideographic description character U+2FF5.
-    ('\xe2\xbf\xb5',
-     None),
-    # 3.33 Display property character U+0341.
-    ('\xcd\x81',
-     '\xcc\x81'),
-    # 3.34 Left-to-right mark U+200E.
-    ('\xe2\x80\x8e',
-     None),
-    # 3.35 Deprecated U+202A.
-    ('\xe2\x80\xaa',
-     None),
-    # 3.36 Language tagging character U+E0001.
-    ('\xf3\xa0\x80\x81',
-     None),
-    # 3.37 Language tagging character U+E0042.
-    ('\xf3\xa0\x81\x82',
-     None),
-    # 3.38 Bidi: RandALCat character U+05BE and LCat characters.
-    ('foo\xd6\xbebar',
-     None),
-    # 3.39 Bidi: RandALCat character U+FD50 and LCat characters.
-    ('foo\xef\xb5\x90bar',
-     None),
-    # 3.40 Bidi: RandALCat character U+FB38 and LCat characters.
-    ('foo\xef\xb9\xb6bar',
-     'foo \xd9\x8ebar'),
-    # 3.41 Bidi: RandALCat without trailing RandALCat U+0627 U+0031.
-    ('\xd8\xa71',
-     None),
-    # 3.42 Bidi: RandALCat character U+0627 U+0031 U+0628.
-    ('\xd8\xa71\xd8\xa8',
-     '\xd8\xa71\xd8\xa8'),
-    # 3.43 Unassigned code point U+E0002.
-    # Skip this test as we allow unassigned
-    #('\xf3\xa0\x80\x82',
-    # None),
-    (None, None),
-    # 3.44 Larger test (shrinking).
-    # Original test case reads \xc3\xdf
-    ('X\xc2\xad\xc3\x9f\xc4\xb0\xe2\x84\xa1j\xcc\x8c\xc2\xa0\xc2'
-     '\xaa\xce\xb0\xe2\x80\x80',
-     'xssi\xcc\x87tel\xc7\xb0 a\xce\xb0 '),
-    # 3.45 Larger test (expanding).
-    # Original test case reads \xc3\x9f
-    ('X\xc3\x9f\xe3\x8c\x96\xc4\xb0\xe2\x84\xa1\xe2\x92\x9f\xe3\x8c'
-     '\x80',
-     'xss\xe3\x82\xad\xe3\x83\xad\xe3\x83\xa1\xe3\x83\xbc\xe3'
-     '\x83\x88\xe3\x83\xabi\xcc\x87tel\x28d\x29\xe3\x82'
-     '\xa2\xe3\x83\x91\xe3\x83\xbc\xe3\x83\x88')
-    ]
-
-
-class NameprepTest(unittest.TestCase):
-    def test_nameprep(self):
-        from encodings.idna import nameprep
-        for pos, (orig, prepped) in enumerate(nameprep_tests):
-            if orig is None:
-                # Skipped
-                continue
-            # The Unicode strings are given in UTF-8
-            orig = unicode(orig, "utf-8")
-            if prepped is None:
-                # Input contains prohibited characters
-                self.assertRaises(UnicodeError, nameprep, orig)
-            else:
-                prepped = unicode(prepped, "utf-8")
-                try:
-                    self.assertEqual(nameprep(orig), prepped)
-                except Exception,e:
-                    raise test_support.TestFailed("Test 3.%d: %s" % (pos+1, str(e)))
-
-class IDNACodecTest(unittest.TestCase):
-    def test_builtin_decode(self):
-        self.assertEqual(unicode("python.org", "idna"), u"python.org")
-        self.assertEqual(unicode("python.org.", "idna"), u"python.org.")
-        self.assertEqual(unicode("xn--pythn-mua.org", "idna"), u"pyth\xf6n.org")
-        self.assertEqual(unicode("xn--pythn-mua.org.", "idna"), u"pyth\xf6n.org.")
-
-    def test_builtin_encode(self):
-        self.assertEqual(u"python.org".encode("idna"), "python.org")
-        self.assertEqual("python.org.".encode("idna"), "python.org.")
-        self.assertEqual(u"pyth\xf6n.org".encode("idna"), "xn--pythn-mua.org")
-        self.assertEqual(u"pyth\xf6n.org.".encode("idna"), "xn--pythn-mua.org.")
-
-    def test_stream(self):
-        import StringIO
-        r = codecs.getreader("idna")(StringIO.StringIO("abc"))
-        r.read(3)
-        self.assertEqual(r.read(), u"")
-
-    def test_incremental_decode(self):
-        self.assertEqual(
-            "".join(codecs.iterdecode("python.org", "idna")),
-            u"python.org"
-        )
-        self.assertEqual(
-            "".join(codecs.iterdecode("python.org.", "idna")),
-            u"python.org."
-        )
-        self.assertEqual(
-            "".join(codecs.iterdecode("xn--pythn-mua.org.", "idna")),
-            u"pyth\xf6n.org."
-        )
-        self.assertEqual(
-            "".join(codecs.iterdecode("xn--pythn-mua.org.", "idna")),
-            u"pyth\xf6n.org."
-        )
-
-        decoder = codecs.getincrementaldecoder("idna")()
-        self.assertEqual(decoder.decode("xn--xam", ), u"")
-        self.assertEqual(decoder.decode("ple-9ta.o", ), u"\xe4xample.")
-        self.assertEqual(decoder.decode(u"rg"), u"")
-        self.assertEqual(decoder.decode(u"", True), u"org")
-
-        decoder.reset()
-        self.assertEqual(decoder.decode("xn--xam", ), u"")
-        self.assertEqual(decoder.decode("ple-9ta.o", ), u"\xe4xample.")
-        self.assertEqual(decoder.decode("rg."), u"org.")
-        self.assertEqual(decoder.decode("", True), u"")
-
-    def test_incremental_encode(self):
-        self.assertEqual(
-            "".join(codecs.iterencode(u"python.org", "idna")),
-            "python.org"
-        )
-        self.assertEqual(
-            "".join(codecs.iterencode(u"python.org.", "idna")),
-            "python.org."
-        )
-        self.assertEqual(
-            "".join(codecs.iterencode(u"pyth\xf6n.org.", "idna")),
-            "xn--pythn-mua.org."
-        )
-        self.assertEqual(
-            "".join(codecs.iterencode(u"pyth\xf6n.org.", "idna")),
-            "xn--pythn-mua.org."
-        )
-
-        encoder = codecs.getincrementalencoder("idna")()
-        self.assertEqual(encoder.encode(u"\xe4x"), "")
-        self.assertEqual(encoder.encode(u"ample.org"), "xn--xample-9ta.")
-        self.assertEqual(encoder.encode(u"", True), "org")
-
-        encoder.reset()
-        self.assertEqual(encoder.encode(u"\xe4x"), "")
-        self.assertEqual(encoder.encode(u"ample.org."), "xn--xample-9ta.org.")
-        self.assertEqual(encoder.encode(u"", True), "")
-
-class CodecsModuleTest(unittest.TestCase):
-
-    def test_decode(self):
-        self.assertEqual(codecs.decode('\xe4\xf6\xfc', 'latin-1'),
-                          u'\xe4\xf6\xfc')
-        self.assertRaises(TypeError, codecs.decode)
-        self.assertEqual(codecs.decode('abc'), u'abc')
-        self.assertRaises(UnicodeDecodeError, codecs.decode, '\xff', 'ascii')
-
-    def test_encode(self):
-        self.assertEqual(codecs.encode(u'\xe4\xf6\xfc', 'latin-1'),
-                          '\xe4\xf6\xfc')
-        self.assertRaises(TypeError, codecs.encode)
-        self.assertRaises(LookupError, codecs.encode, "foo", "__spam__")
-        self.assertEqual(codecs.encode(u'abc'), 'abc')
-        self.assertRaises(UnicodeEncodeError, codecs.encode, u'\xffff', 'ascii')
-
-    def test_register(self):
-        self.assertRaises(TypeError, codecs.register)
-        self.assertRaises(TypeError, codecs.register, 42)
-
-    def test_lookup(self):
-        self.assertRaises(TypeError, codecs.lookup)
-        self.assertRaises(LookupError, codecs.lookup, "__spam__")
-        self.assertRaises(LookupError, codecs.lookup, " ")
-
-    def test_getencoder(self):
-        self.assertRaises(TypeError, codecs.getencoder)
-        self.assertRaises(LookupError, codecs.getencoder, "__spam__")
-
-    def test_getdecoder(self):
-        self.assertRaises(TypeError, codecs.getdecoder)
-        self.assertRaises(LookupError, codecs.getdecoder, "__spam__")
-
-    def test_getreader(self):
-        self.assertRaises(TypeError, codecs.getreader)
-        self.assertRaises(LookupError, codecs.getreader, "__spam__")
-
-    def test_getwriter(self):
-        self.assertRaises(TypeError, codecs.getwriter)
-        self.assertRaises(LookupError, codecs.getwriter, "__spam__")
-
-class StreamReaderTest(unittest.TestCase):
-
-    def setUp(self):
-        self.reader = codecs.getreader('utf-8')
-        self.stream = StringIO.StringIO('\xed\x95\x9c\n\xea\xb8\x80')
-
-    def test_readlines(self):
-        f = self.reader(self.stream)
-        self.assertEqual(f.readlines(), [u'\ud55c\n', u'\uae00'])
-
-class EncodedFileTest(unittest.TestCase):
-
-    def test_basic(self):
-        f = StringIO.StringIO('\xed\x95\x9c\n\xea\xb8\x80')
-        ef = codecs.EncodedFile(f, 'utf-16-le', 'utf-8')
-        self.assertEqual(ef.read(), '\\\xd5\n\x00\x00\xae')
-
-        f = StringIO.StringIO()
-        ef = codecs.EncodedFile(f, 'utf-8', 'latin1')
-        ef.write('\xc3\xbc')
-        self.assertEqual(f.getvalue(), '\xfc')
-
-class Str2StrTest(unittest.TestCase):
-
-    def test_read(self):
-        sin = "\x80".encode("base64_codec")
-        reader = codecs.getreader("base64_codec")(StringIO.StringIO(sin))
-        sout = reader.read()
-        self.assertEqual(sout, "\x80")
-        self.assertIsInstance(sout, str)
-
-    def test_readline(self):
-        sin = "\x80".encode("base64_codec")
-        reader = codecs.getreader("base64_codec")(StringIO.StringIO(sin))
-        sout = reader.readline()
-        self.assertEqual(sout, "\x80")
-        self.assertIsInstance(sout, str)
-
-all_unicode_encodings = [
-    "ascii",
-    "base64_codec",
-    "big5",
-    "big5hkscs",
-    "charmap",
-    "cp037",
-    "cp1006",
-    "cp1026",
-    "cp1140",
-    "cp1250",
-    "cp1251",
-    "cp1252",
-    "cp1253",
-    "cp1254",
-    "cp1255",
-    "cp1256",
-    "cp1257",
-    "cp1258",
-    "cp424",
-    "cp437",
-    "cp500",
-    "cp720",
-    "cp737",
-    "cp775",
-    "cp850",
-    "cp852",
-    "cp855",
-    "cp856",
-    "cp857",
-    "cp858",
-    "cp860",
-    "cp861",
-    "cp862",
-    "cp863",
-    "cp864",
-    "cp865",
-    "cp866",
-    "cp869",
-    "cp874",
-    "cp875",
-    "cp932",
-    "cp949",
-    "cp950",
-    "euc_jis_2004",
-    "euc_jisx0213",
-    "euc_jp",
-    "euc_kr",
-    "gb18030",
-    "gb2312",
-    "gbk",
-    "hex_codec",
-    "hp_roman8",
-    "hz",
-    "idna",
-    "iso2022_jp",
-    "iso2022_jp_1",
-    "iso2022_jp_2",
-    "iso2022_jp_2004",
-    "iso2022_jp_3",
-    "iso2022_jp_ext",
-    "iso2022_kr",
-    "iso8859_1",
-    "iso8859_10",
-    "iso8859_11",
-    "iso8859_13",
-    "iso8859_14",
-    "iso8859_15",
-    "iso8859_16",
-    "iso8859_2",
-    "iso8859_3",
-    "iso8859_4",
-    "iso8859_5",
-    "iso8859_6",
-    "iso8859_7",
-    "iso8859_8",
-    "iso8859_9",
-    "johab",
-    "koi8_r",
-    "koi8_u",
-    "latin_1",
-    "mac_cyrillic",
-    "mac_greek",
-    "mac_iceland",
-    "mac_latin2",
-    "mac_roman",
-    "mac_turkish",
-    "palmos",
-    "ptcp154",
-    "punycode",
-    "raw_unicode_escape",
-    "rot_13",
-    "shift_jis",
-    "shift_jis_2004",
-    "shift_jisx0213",
-    "tis_620",
-    "unicode_escape",
-    "unicode_internal",
-    "utf_16",
-    "utf_16_be",
-    "utf_16_le",
-    "utf_7",
-    "utf_8",
-]
-
-if hasattr(codecs, "mbcs_encode"):
-    all_unicode_encodings.append("mbcs")
-
-# The following encodings work only with str, not unicode
-all_string_encodings = [
-    "quopri_codec",
-    "string_escape",
-    "uu_codec",
-]
-
-# The following encoding is not tested, because it's not supposed
-# to work:
-#    "undefined"
-
-# The following encodings don't work in stateful mode
-broken_unicode_with_streams = [
-    "base64_codec",
-    "hex_codec",
-    "punycode",
-    "unicode_internal"
-]
-broken_incremental_coders = broken_unicode_with_streams[:]
-
-# The following encodings only support "strict" mode
-only_strict_mode = [
-    "idna",
-    "zlib_codec",
-    "bz2_codec",
-]
-
-try:
-    import bz2
-except ImportError:
-    pass
-else:
-    all_unicode_encodings.append("bz2_codec")
-    broken_unicode_with_streams.append("bz2_codec")
-
-try:
-    import zlib
-except ImportError:
-    pass
-else:
-    all_unicode_encodings.append("zlib_codec")
-    broken_unicode_with_streams.append("zlib_codec")
-
-class BasicUnicodeTest(unittest.TestCase):
-    def test_basics(self):
-        s = u"abc123" # all codecs should be able to encode these
-        for encoding in all_unicode_encodings:
-            name = codecs.lookup(encoding).name
-            if encoding.endswith("_codec"):
-                name += "_codec"
-            elif encoding == "latin_1":
-                name = "latin_1"
-            self.assertEqual(encoding.replace("_", "-"), name.replace("_", "-"))
-            (bytes, size) = codecs.getencoder(encoding)(s)
-            self.assertEqual(size, len(s), "%r != %r (encoding=%r)" % (size, len(s), encoding))
-            (chars, size) = codecs.getdecoder(encoding)(bytes)
-            self.assertEqual(chars, s, "%r != %r (encoding=%r)" % (chars, s, encoding))
-
-            if encoding not in broken_unicode_with_streams:
-                # check stream reader/writer
-                q = Queue()
-                writer = codecs.getwriter(encoding)(q)
-                encodedresult = ""
-                for c in s:
-                    writer.write(c)
-                    encodedresult += q.read()
-                q = Queue()
-                reader = codecs.getreader(encoding)(q)
-                decodedresult = u""
-                for c in encodedresult:
-                    q.write(c)
-                    decodedresult += reader.read()
-                self.assertEqual(decodedresult, s, "%r != %r (encoding=%r)" % (decodedresult, s, encoding))
-
-            if encoding not in broken_incremental_coders:
-                # check incremental decoder/encoder (fetched via the Python
-                # and C API) and iterencode()/iterdecode()
-                try:
-                    encoder = codecs.getincrementalencoder(encoding)()
-                    cencoder = _testcapi.codec_incrementalencoder(encoding)
-                except LookupError: # no IncrementalEncoder
-                    pass
-                else:
-                    # check incremental decoder/encoder
-                    encodedresult = ""
-                    for c in s:
-                        encodedresult += encoder.encode(c)
-                    encodedresult += encoder.encode(u"", True)
-                    decoder = codecs.getincrementaldecoder(encoding)()
-                    decodedresult = u""
-                    for c in encodedresult:
-                        decodedresult += decoder.decode(c)
-                    decodedresult += decoder.decode("", True)
-                    self.assertEqual(decodedresult, s, "%r != %r (encoding=%r)" % (decodedresult, s, encoding))
-
-                    # check C API
-                    encodedresult = ""
-                    for c in s:
-                        encodedresult += cencoder.encode(c)
-                    encodedresult += cencoder.encode(u"", True)
-                    cdecoder = _testcapi.codec_incrementaldecoder(encoding)
-                    decodedresult = u""
-                    for c in encodedresult:
-                        decodedresult += cdecoder.decode(c)
-                    decodedresult += cdecoder.decode("", True)
-                    self.assertEqual(decodedresult, s, "%r != %r (encoding=%r)" % (decodedresult, s, encoding))
-
-                    # check iterencode()/iterdecode()
-                    result = u"".join(codecs.iterdecode(codecs.iterencode(s, encoding), encoding))
-                    self.assertEqual(result, s, "%r != %r (encoding=%r)" % (result, s, encoding))
-
-                    # check iterencode()/iterdecode() with empty string
-                    result = u"".join(codecs.iterdecode(codecs.iterencode(u"", encoding), encoding))
-                    self.assertEqual(result, u"")
-
-                if encoding not in only_strict_mode:
-                    # check incremental decoder/encoder with errors argument
-                    try:
-                        encoder = codecs.getincrementalencoder(encoding)("ignore")
-                        cencoder = _testcapi.codec_incrementalencoder(encoding, "ignore")
-                    except LookupError: # no IncrementalEncoder
-                        pass
-                    else:
-                        encodedresult = "".join(encoder.encode(c) for c in s)
-                        decoder = codecs.getincrementaldecoder(encoding)("ignore")
-                        decodedresult = u"".join(decoder.decode(c) for c in encodedresult)
-                        self.assertEqual(decodedresult, s, "%r != %r (encoding=%r)" % (decodedresult, s, encoding))
-
-                        encodedresult = "".join(cencoder.encode(c) for c in s)
-                        cdecoder = _testcapi.codec_incrementaldecoder(encoding, "ignore")
-                        decodedresult = u"".join(cdecoder.decode(c) for c in encodedresult)
-                        self.assertEqual(decodedresult, s, "%r != %r (encoding=%r)" % (decodedresult, s, encoding))
-
-    def test_seek(self):
-        # all codecs should be able to encode these
-        s = u"%s\n%s\n" % (100*u"abc123", 100*u"def456")
-        for encoding in all_unicode_encodings:
-            if encoding == "idna": # FIXME: See SF bug #1163178
-                continue
-            if encoding in broken_unicode_with_streams:
-                continue
-            reader = codecs.getreader(encoding)(StringIO.StringIO(s.encode(encoding)))
-            for t in xrange(5):
-                # Test that calling seek resets the internal codec state and buffers
-                reader.seek(0, 0)
-                line = reader.readline()
-                self.assertEqual(s[:len(line)], line)
-
-    def test_bad_decode_args(self):
-        for encoding in all_unicode_encodings:
-            decoder = codecs.getdecoder(encoding)
-            self.assertRaises(TypeError, decoder)
-            if encoding not in ("idna", "punycode"):
-                self.assertRaises(TypeError, decoder, 42)
-
-    def test_bad_encode_args(self):
-        for encoding in all_unicode_encodings:
-            encoder = codecs.getencoder(encoding)
-            self.assertRaises(TypeError, encoder)
-
-    def test_encoding_map_type_initialized(self):
-        from encodings import cp1140
-        # This used to crash, we are only verifying there's no crash.
-        table_type = type(cp1140.encoding_table)
-        self.assertEqual(table_type, table_type)
-
-class BasicStrTest(unittest.TestCase):
-    def test_basics(self):
-        s = "abc123"
-        for encoding in all_string_encodings:
-            (bytes, size) = codecs.getencoder(encoding)(s)
-            self.assertEqual(size, len(s))
-            (chars, size) = codecs.getdecoder(encoding)(bytes)
-            self.assertEqual(chars, s, "%r != %r (encoding=%r)" % (chars, s, encoding))
-
-class CharmapTest(unittest.TestCase):
-    def test_decode_with_string_map(self):
-        self.assertEqual(
-            codecs.charmap_decode("\x00\x01\x02", "strict", u"abc"),
-            (u"abc", 3)
-        )
-
-        self.assertEqual(
-            codecs.charmap_decode("\x00\x01\x02", "replace", u"ab"),
-            (u"ab\ufffd", 3)
-        )
-
-        self.assertEqual(
-            codecs.charmap_decode("\x00\x01\x02", "replace", u"ab\ufffe"),
-            (u"ab\ufffd", 3)
-        )
-
-        self.assertEqual(
-            codecs.charmap_decode("\x00\x01\x02", "ignore", u"ab"),
-            (u"ab", 3)
-        )
-
-        self.assertEqual(
-            codecs.charmap_decode("\x00\x01\x02", "ignore", u"ab\ufffe"),
-            (u"ab", 3)
-        )
-
-        allbytes = "".join(chr(i) for i in xrange(256))
-        self.assertEqual(
-            codecs.charmap_decode(allbytes, "ignore", u""),
-            (u"", len(allbytes))
-        )
-
-class WithStmtTest(unittest.TestCase):
-    def test_encodedfile(self):
-        f = StringIO.StringIO("\xc3\xbc")
-        with codecs.EncodedFile(f, "latin-1", "utf-8") as ef:
-            self.assertEqual(ef.read(), "\xfc")
-
-    def test_streamreaderwriter(self):
-        f = StringIO.StringIO("\xc3\xbc")
-        info = codecs.lookup("utf-8")
-        with codecs.StreamReaderWriter(f, info.streamreader,
-                                       info.streamwriter, 'strict') as srw:
-            self.assertEqual(srw.read(), u"\xfc")
-
-
-class BomTest(unittest.TestCase):
-    def test_seek0(self):
-        data = u"1234567890"
-        tests = ("utf-16",
-                 "utf-16-le",
-                 "utf-16-be",
-                 "utf-32",
-                 "utf-32-le",
-                 "utf-32-be")
-        self.addCleanup(test_support.unlink, test_support.TESTFN)
-        for encoding in tests:
-            # Check if the BOM is written only once
-            with codecs.open(test_support.TESTFN, 'w+', encoding=encoding) as f:
-                f.write(data)
-                f.write(data)
-                f.seek(0)
-                self.assertEqual(f.read(), data * 2)
-                f.seek(0)
-                self.assertEqual(f.read(), data * 2)
-
-            # Check that the BOM is written after a seek(0)
-            with codecs.open(test_support.TESTFN, 'w+', encoding=encoding) as f:
-                f.write(data[0])
-                self.assertNotEqual(f.tell(), 0)
-                f.seek(0)
-                f.write(data)
-                f.seek(0)
-                self.assertEqual(f.read(), data)
-
-            # (StreamWriter) Check that the BOM is written after a seek(0)
-            with codecs.open(test_support.TESTFN, 'w+', encoding=encoding) as f:
-                f.writer.write(data[0])
-                self.assertNotEqual(f.writer.tell(), 0)
-                f.writer.seek(0)
-                f.writer.write(data)
-                f.seek(0)
-                self.assertEqual(f.read(), data)
-
-            # Check that the BOM is not written after a seek() at a position
-            # different than the start
-            with codecs.open(test_support.TESTFN, 'w+', encoding=encoding) as f:
-                f.write(data)
-                f.seek(f.tell())
-                f.write(data)
-                f.seek(0)
-                self.assertEqual(f.read(), data * 2)
-
-            # (StreamWriter) Check that the BOM is not written after a seek()
-            # at a position different than the start
-            with codecs.open(test_support.TESTFN, 'w+', encoding=encoding) as f:
-                f.writer.write(data)
-                f.writer.seek(f.writer.tell())
-                f.writer.write(data)
-                f.seek(0)
-                self.assertEqual(f.read(), data * 2)
-
-
-def test_main():
-    test_support.run_unittest(
-        UTF32Test,
-        UTF32LETest,
-        UTF32BETest,
-        UTF16Test,
-        UTF16LETest,
-        UTF16BETest,
-        UTF8Test,
-        UTF8SigTest,
-        UTF7Test,
-        UTF16ExTest,
-        ReadBufferTest,
-        CharBufferTest,
-        EscapeDecodeTest,
-        RecodingTest,
-        PunycodeTest,
-        UnicodeInternalTest,
-        NameprepTest,
-        IDNACodecTest,
-        CodecsModuleTest,
-        StreamReaderTest,
-        EncodedFileTest,
-        Str2StrTest,
-        BasicUnicodeTest,
-        BasicStrTest,
-        CharmapTest,
-        WithStmtTest,
-        BomTest,
-    )
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codeop.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codeop.py
deleted file mode 100644
index d24f32c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_codeop.py
+++ /dev/null
@@ -1,304 +0,0 @@
-"""
-   Test cases for codeop.py
-   Nick Mathewson
-"""
-import unittest
-from test.test_support import run_unittest, is_jython
-
-from codeop import compile_command, PyCF_DONT_IMPLY_DEDENT
-
-if is_jython:
-    import sys
-    import cStringIO
-
-    def unify_callables(d):
-        for n,v in d.items():
-            if callable(v):
-                d[n] = callable
-        return d
-
-class CodeopTests(unittest.TestCase):
-
-    def assertValid(self, str, symbol='single'):
-        '''succeed iff str is a valid piece of code'''
-        if is_jython:
-            code = compile_command(str, "<input>", symbol)
-            self.assertTrue(code)
-            if symbol == "single":
-                d,r = {},{}
-                saved_stdout = sys.stdout
-                sys.stdout = cStringIO.StringIO()
-                try:
-                    exec code in d
-                    exec compile(str,"<input>","single") in r
-                finally:
-                    sys.stdout = saved_stdout
-            elif symbol == 'eval':
-                ctx = {'a': 2}
-                d = { 'value': eval(code,ctx) }
-                r = { 'value': eval(str,ctx) }
-            self.assertEqual(unify_callables(r),unify_callables(d))
-        else:
-            expected = compile(str, "<input>", symbol, PyCF_DONT_IMPLY_DEDENT)
-            self.assertEqual(compile_command(str, "<input>", symbol), expected)
-
-    def assertIncomplete(self, str, symbol='single'):
-        '''succeed iff str is the start of a valid piece of code'''
-        self.assertEqual(compile_command(str, symbol=symbol), None)
-
-    def assertInvalid(self, str, symbol='single', is_syntax=1):
-        '''succeed iff str is the start of an invalid piece of code'''
-        try:
-            compile_command(str,symbol=symbol)
-            self.fail("No exception thrown for invalid code")
-        except SyntaxError:
-            self.assertTrue(is_syntax)
-        except OverflowError:
-            self.assertTrue(not is_syntax)
-
-    def test_valid(self):
-        av = self.assertValid
-
-        # special case
-        if not is_jython:
-            self.assertEqual(compile_command(""),
-                             compile("pass", "<input>", 'single',
-                                     PyCF_DONT_IMPLY_DEDENT))
-            self.assertEqual(compile_command("\n"),
-                             compile("pass", "<input>", 'single',
-                                     PyCF_DONT_IMPLY_DEDENT))
-        else:
-            av("")
-            av("\n")
-
-        av("a = 1")
-        av("\na = 1")
-        av("a = 1\n")
-        av("a = 1\n\n")
-        av("\n\na = 1\n\n")
-
-        av("def x():\n  pass\n")
-        av("if 1:\n pass\n")
-
-        av("\n\nif 1: pass\n")
-        av("\n\nif 1: pass\n\n")
-
-        av("def x():\n\n pass\n")
-        av("def x():\n  pass\n  \n")
-        av("def x():\n  pass\n \n")
-
-        av("pass\n")
-        av("3**3\n")
-
-        av("if 9==3:\n   pass\nelse:\n   pass\n")
-        av("if 1:\n pass\n if 1:\n  pass\n else:\n  pass\n")
-
-        av("#a\n#b\na = 3\n")
-        av("#a\n\n   \na=3\n")
-        av("a=3\n\n")
-        av("a = 9+ \\\n3")
-
-        av("3**3","eval")
-        av("(lambda z: \n z**3)","eval")
-
-        av("9+ \\\n3","eval")
-        av("9+ \\\n3\n","eval")
-
-        av("\n\na**3","eval")
-        av("\n \na**3","eval")
-        av("#a\n#b\na**3","eval")
-
-        av("\n\na = 1\n\n")
-        av("\n\nif 1: a=1\n\n")
-
-        av("if 1:\n pass\n if 1:\n  pass\n else:\n  pass\n")
-        av("#a\n\n   \na=3\n\n")
-
-        av("\n\na**3","eval")
-        av("\n \na**3","eval")
-        av("#a\n#b\na**3","eval")
-
-        av("def f():\n try: pass\n finally: [x for x in (1,2)]\n")
-        av("def f():\n pass\n#foo\n")
-        av("@a.b.c\ndef f():\n pass\n")
-
-    def test_incomplete(self):
-        ai = self.assertIncomplete
-
-        ai("(a **")
-        ai("(a,b,")
-        ai("(a,b,(")
-        ai("(a,b,(")
-        ai("a = (")
-        ai("a = {")
-        ai("b + {")
-
-        ai("if 9==3:\n   pass\nelse:")
-        ai("if 9==3:\n   pass\nelse:\n")
-        ai("if 9==3:\n   pass\nelse:\n   pass")
-        ai("if 1:")
-        ai("if 1:\n")
-        ai("if 1:\n pass\n if 1:\n  pass\n else:")
-        ai("if 1:\n pass\n if 1:\n  pass\n else:\n")
-        ai("if 1:\n pass\n if 1:\n  pass\n else:\n  pass")
-
-        ai("def x():")
-        ai("def x():\n")
-        ai("def x():\n\n")
-
-        ai("def x():\n  pass")
-        ai("def x():\n  pass\n ")
-        ai("def x():\n  pass\n  ")
-        ai("\n\ndef x():\n  pass")
-
-        ai("a = 9+ \\")
-        ai("a = 'a\\")
-        ai("a = '''xy")
-
-        ai("","eval")
-        ai("\n","eval")
-        ai("(","eval")
-        ai("(\n\n\n","eval")
-        ai("(9+","eval")
-        ai("9+ \\","eval")
-        ai("lambda z: \\","eval")
-
-        ai("if True:\n if True:\n  if True:   \n")
-
-        ai("@a(")
-        ai("@a(b")
-        ai("@a(b,")
-        ai("@a(b,c")
-        ai("@a(b,c,")
-
-        ai("from a import (")
-        ai("from a import (b")
-        ai("from a import (b,")
-        ai("from a import (b,c")
-        ai("from a import (b,c,")
-
-        ai("[");
-        ai("[a");
-        ai("[a,");
-        ai("[a,b");
-        ai("[a,b,");
-
-        ai("{");
-        ai("{a");
-        ai("{a:");
-        ai("{a:b");
-        ai("{a:b,");
-        ai("{a:b,c");
-        ai("{a:b,c:");
-        ai("{a:b,c:d");
-        ai("{a:b,c:d,");
-
-        ai("a(")
-        ai("a(b")
-        ai("a(b,")
-        ai("a(b,c")
-        ai("a(b,c,")
-
-        ai("a[")
-        ai("a[b")
-        ai("a[b,")
-        ai("a[b:")
-        ai("a[b:c")
-        ai("a[b:c:")
-        ai("a[b:c:d")
-
-        ai("def a(")
-        ai("def a(b")
-        ai("def a(b,")
-        ai("def a(b,c")
-        ai("def a(b,c,")
-
-        ai("(")
-        ai("(a")
-        ai("(a,")
-        ai("(a,b")
-        ai("(a,b,")
-
-        ai("if a:\n pass\nelif b:")
-        ai("if a:\n pass\nelif b:\n pass\nelse:")
-
-        ai("while a:")
-        ai("while a:\n pass\nelse:")
-
-        ai("for a in b:")
-        ai("for a in b:\n pass\nelse:")
-
-        ai("try:")
-        ai("try:\n pass\nexcept:")
-        ai("try:\n pass\nfinally:")
-        ai("try:\n pass\nexcept:\n pass\nfinally:")
-
-        ai("with a:")
-        ai("with a as b:")
-
-        ai("class a:")
-        ai("class a(")
-        ai("class a(b")
-        ai("class a(b,")
-        ai("class a():")
-
-        ai("[x for")
-        ai("[x for x in")
-        ai("[x for x in (")
-
-        ai("(x for")
-        ai("(x for x in")
-        ai("(x for x in (")
-
-    def test_invalid(self):
-        ai = self.assertInvalid
-        ai("a b")
-
-        ai("a @")
-        ai("a b @")
-        ai("a ** @")
-
-        ai("a = ")
-        ai("a = 9 +")
-
-        ai("def x():\n\npass\n")
-
-        ai("\n\n if 1: pass\n\npass")
-
-        ai("a = 9+ \\\n")
-        ai("a = 'a\\ ")
-        ai("a = 'a\\\n")
-
-        ai("a = 1","eval")
-        ai("a = (","eval")
-        ai("]","eval")
-        ai("())","eval")
-        ai("[}","eval")
-        ai("9+","eval")
-        ai("lambda z:","eval")
-        ai("a b","eval")
-
-        ai("return 2.3")
-        ai("if (a == 1 and b = 2): pass")
-
-        ai("del 1")
-        ai("del ()")
-        ai("del (1,)")
-        ai("del [1]")
-        ai("del '1'")
-
-        ai("[i for i in range(10)] = (1, 2, 3)")
-
-    def test_filename(self):
-        self.assertEqual(compile_command("a = 1\n", "abc").co_filename,
-                         compile("a = 1\n", "abc", 'single').co_filename)
-        self.assertNotEqual(compile_command("a = 1\n", "abc").co_filename,
-                            compile("a = 1\n", "def", 'single').co_filename)
-
-
-def test_main():
-    run_unittest(CodeopTests)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_coding.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_coding.py
deleted file mode 100644
index c4545ba..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_coding.py
+++ /dev/null
@@ -1,37 +0,0 @@
-
-import test.test_support, unittest
-import os
-
-class CodingTest(unittest.TestCase):
-    def test_bad_coding(self):
-        module_name = 'bad_coding'
-        self.verify_bad_module(module_name)
-
-    def test_bad_coding2(self):
-        module_name = 'bad_coding2'
-        self.verify_bad_module(module_name)
-
-    def verify_bad_module(self, module_name):
-        self.assertRaises(SyntaxError, __import__, 'test.' + module_name)
-
-        path = os.path.dirname(__file__)
-        filename = os.path.join(path, module_name + '.py')
-        with open(filename) as fp:
-            text = fp.read()
-        self.assertRaises(SyntaxError, compile, text, filename, 'exec')
-
-    def test_error_from_string(self):
-        # See http://bugs.python.org/issue6289
-        input = u"# coding: ascii\n\N{SNOWMAN}".encode('utf-8')
-        with self.assertRaises(SyntaxError) as c:
-            compile(input, "<string>", "exec")
-        expected = "'ascii' codec can't decode byte 0xe2 in position 16: " \
-                   "ordinal not in range(128)"
-        self.assertTrue(c.exception.args[0].startswith(expected))
-
-
-def test_main():
-    test.test_support.run_unittest(CodingTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_coercion.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_coercion.py
deleted file mode 100644
index a57a1b9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_coercion.py
+++ /dev/null
@@ -1,348 +0,0 @@
-import copy
-import unittest
-from test.test_support import run_unittest, TestFailed, check_warnings
-
-
-# Fake a number that implements numeric methods through __coerce__
-class CoerceNumber:
-    def __init__(self, arg):
-        self.arg = arg
-
-    def __repr__(self):
-        return '<CoerceNumber %s>' % repr(self.arg)
-
-    def __coerce__(self, other):
-        if isinstance(other, CoerceNumber):
-            return self.arg, other.arg
-        else:
-            return (self.arg, other)
-
-# New-style class version of CoerceNumber
-class CoerceTo(object):
-    def __init__(self, arg):
-        self.arg = arg
-    def __coerce__(self, other):
-        if isinstance(other, CoerceTo):
-            return self.arg, other.arg
-        else:
-            return self.arg, other
-
-
-# Fake a number that implements numeric ops through methods.
-class MethodNumber:
-    def __init__(self,arg):
-        self.arg = arg
-
-    def __repr__(self):
-        return '<MethodNumber %s>' % repr(self.arg)
-
-    def __add__(self,other):
-        return self.arg + other
-
-    def __radd__(self,other):
-        return other + self.arg
-
-    def __sub__(self,other):
-        return self.arg - other
-
-    def __rsub__(self,other):
-        return other - self.arg
-
-    def __mul__(self,other):
-        return self.arg * other
-
-    def __rmul__(self,other):
-        return other * self.arg
-
-    def __div__(self,other):
-        return self.arg / other
-
-    def __rdiv__(self,other):
-        return other / self.arg
-
-    def __truediv__(self,other):
-        return self.arg / other
-
-    def __rtruediv__(self,other):
-        return other / self.arg
-
-    def __floordiv__(self,other):
-        return self.arg // other
-
-    def __rfloordiv__(self,other):
-        return other // self.arg
-
-    def __pow__(self,other):
-        return self.arg ** other
-
-    def __rpow__(self,other):
-        return other ** self.arg
-
-    def __mod__(self,other):
-        return self.arg % other
-
-    def __rmod__(self,other):
-        return other % self.arg
-
-    def __cmp__(self, other):
-        return cmp(self.arg, other)
-
-
-candidates = [2, 2L, 4.0, 2+0j, [1], (2,), None,
-              MethodNumber(2), CoerceNumber(2)]
-
-infix_binops = [ '+', '-', '*', '**', '%', '//', '/' ]
-
-TE = TypeError
-# b = both normal and augmented give same result list
-# s = single result lists for normal and augmented
-# e = equals other results
-# result lists: ['+', '-', '*', '**', '%', '//', ('classic /', 'new /')]
-#                                                ^^^^^^^^^^^^^^^^^^^^^^
-#                                               2-tuple if results differ
-#                                                 else only one value
-infix_results = {
-    # 2
-    (0,0): ('b', [4, 0, 4, 4, 0, 1, (1, 1.0)]),
-    (0,1): ('e', (0,0)),
-    (0,2): ('b', [6.0, -2.0, 8.0, 16.0, 2.0, 0.0, 0.5]),
-    (0,3): ('b', [4+0j, 0+0j, 4+0j, 4+0j, 0+0j, 1+0j, 1+0j]),
-    (0,4): ('b', [TE, TE, [1, 1], TE, TE, TE, TE]),
-    (0,5): ('b', [TE, TE, (2, 2), TE, TE, TE, TE]),
-    (0,6): ('b', [TE, TE, TE, TE, TE, TE, TE]),
-    (0,7): ('e', (0,0)),
-    (0,8): ('e', (0,0)),
-
-    # 2L
-    (1,0): ('e', (0,0)),
-    (1,1): ('e', (0,1)),
-    (1,2): ('e', (0,2)),
-    (1,3): ('e', (0,3)),
-    (1,4): ('e', (0,4)),
-    (1,5): ('e', (0,5)),
-    (1,6): ('e', (0,6)),
-    (1,7): ('e', (0,7)),
-    (1,8): ('e', (0,8)),
-
-    # 4.0
-    (2,0): ('b', [6.0, 2.0, 8.0, 16.0, 0.0, 2.0, 2.0]),
-    (2,1): ('e', (2,0)),
-    (2,2): ('b', [8.0, 0.0, 16.0, 256.0, 0.0, 1.0, 1.0]),
-    (2,3): ('b', [6+0j, 2+0j, 8+0j, 16+0j, 0+0j, 2+0j, 2+0j]),
-    (2,4): ('b', [TE, TE, TE, TE, TE, TE, TE]),
-    (2,5): ('e', (2,4)),
-    (2,6): ('e', (2,4)),
-    (2,7): ('e', (2,0)),
-    (2,8): ('e', (2,0)),
-
-    # (2+0j)
-    (3,0): ('b', [4+0j, 0+0j, 4+0j, 4+0j, 0+0j, 1+0j, 1+0j]),
-    (3,1): ('e', (3,0)),
-    (3,2): ('b', [6+0j, -2+0j, 8+0j, 16+0j, 2+0j, 0+0j, 0.5+0j]),
-    (3,3): ('b', [4+0j, 0+0j, 4+0j, 4+0j, 0+0j, 1+0j, 1+0j]),
-    (3,4): ('b', [TE, TE, TE, TE, TE, TE, TE]),
-    (3,5): ('e', (3,4)),
-    (3,6): ('e', (3,4)),
-    (3,7): ('e', (3,0)),
-    (3,8): ('e', (3,0)),
-
-    # [1]
-    (4,0): ('b', [TE, TE, [1, 1], TE, TE, TE, TE]),
-    (4,1): ('e', (4,0)),
-    (4,2): ('b', [TE, TE, TE, TE, TE, TE, TE]),
-    (4,3): ('b', [TE, TE, TE, TE, TE, TE, TE]),
-    (4,4): ('b', [[1, 1], TE, TE, TE, TE, TE, TE]),
-    (4,5): ('s', [TE, TE, TE, TE, TE, TE, TE], [[1, 2], TE, TE, TE, TE, TE, TE]),
-    (4,6): ('b', [TE, TE, TE, TE, TE, TE, TE]),
-    (4,7): ('e', (4,0)),
-    (4,8): ('e', (4,0)),
-
-    # (2,)
-    (5,0): ('b', [TE, TE, (2, 2), TE, TE, TE, TE]),
-    (5,1): ('e', (5,0)),
-    (5,2): ('b', [TE, TE, TE, TE, TE, TE, TE]),
-    (5,3): ('e', (5,2)),
-    (5,4): ('e', (5,2)),
-    (5,5): ('b', [(2, 2), TE, TE, TE, TE, TE, TE]),
-    (5,6): ('b', [TE, TE, TE, TE, TE, TE, TE]),
-    (5,7): ('e', (5,0)),
-    (5,8): ('e', (5,0)),
-
-    # None
-    (6,0): ('b', [TE, TE, TE, TE, TE, TE, TE]),
-    (6,1): ('e', (6,0)),
-    (6,2): ('e', (6,0)),
-    (6,3): ('e', (6,0)),
-    (6,4): ('e', (6,0)),
-    (6,5): ('e', (6,0)),
-    (6,6): ('e', (6,0)),
-    (6,7): ('e', (6,0)),
-    (6,8): ('e', (6,0)),
-
-    # MethodNumber(2)
-    (7,0): ('e', (0,0)),
-    (7,1): ('e', (0,1)),
-    (7,2): ('e', (0,2)),
-    (7,3): ('e', (0,3)),
-    (7,4): ('e', (0,4)),
-    (7,5): ('e', (0,5)),
-    (7,6): ('e', (0,6)),
-    (7,7): ('e', (0,7)),
-    (7,8): ('e', (0,8)),
-
-    # CoerceNumber(2)
-    (8,0): ('e', (0,0)),
-    (8,1): ('e', (0,1)),
-    (8,2): ('e', (0,2)),
-    (8,3): ('e', (0,3)),
-    (8,4): ('e', (0,4)),
-    (8,5): ('e', (0,5)),
-    (8,6): ('e', (0,6)),
-    (8,7): ('e', (0,7)),
-    (8,8): ('e', (0,8)),
-}
-
-def process_infix_results():
-    for key in sorted(infix_results):
-        val = infix_results[key]
-        if val[0] == 'e':
-            infix_results[key] = infix_results[val[1]]
-        else:
-            if val[0] == 's':
-                res = (val[1], val[2])
-            elif val[0] == 'b':
-                res = (val[1], val[1])
-            for i in range(1):
-                if isinstance(res[i][6], tuple):
-                    if 1/2 == 0:
-                        # testing with classic (floor) division
-                        res[i][6] = res[i][6][0]
-                    else:
-                        # testing with -Qnew
-                        res[i][6] = res[i][6][1]
-            infix_results[key] = res
-
-
-with check_warnings(("classic (int|long) division", DeprecationWarning),
-                    quiet=True):
-    process_infix_results()
-    # now infix_results has two lists of results for every pairing.
-
-prefix_binops = [ 'divmod' ]
-prefix_results = [
-    [(1,0), (1L,0L), (0.0,2.0), ((1+0j),0j), TE, TE, TE, TE, (1,0)],
-    [(1L,0L), (1L,0L), (0.0,2.0), ((1+0j),0j), TE, TE, TE, TE, (1L,0L)],
-    [(2.0,0.0), (2.0,0.0), (1.0,0.0), ((2+0j),0j), TE, TE, TE, TE, (2.0,0.0)],
-    [((1+0j),0j), ((1+0j),0j), (0j,(2+0j)), ((1+0j),0j), TE, TE, TE, TE, ((1+0j),0j)],
-    [TE, TE, TE, TE, TE, TE, TE, TE, TE],
-    [TE, TE, TE, TE, TE, TE, TE, TE, TE],
-    [TE, TE, TE, TE, TE, TE, TE, TE, TE],
-    [TE, TE, TE, TE, TE, TE, TE, TE, TE],
-    [(1,0), (1L,0L), (0.0,2.0), ((1+0j),0j), TE, TE, TE, TE, (1,0)]
-]
-
-def format_float(value):
-    if abs(value) < 0.01:
-        return '0.0'
-    else:
-        return '%.1f' % value
-
-# avoid testing platform fp quirks
-def format_result(value):
-    if isinstance(value, complex):
-        return '(%s + %sj)' % (format_float(value.real),
-                               format_float(value.imag))
-    elif isinstance(value, float):
-        return format_float(value)
-    return str(value)
-
-class CoercionTest(unittest.TestCase):
-    def test_infix_binops(self):
-        for ia, a in enumerate(candidates):
-            for ib, b in enumerate(candidates):
-                results = infix_results[(ia, ib)]
-                for op, res, ires in zip(infix_binops, results[0], results[1]):
-                    if res is TE:
-                        self.assertRaises(TypeError, eval,
-                                          'a %s b' % op, {'a': a, 'b': b})
-                    else:
-                        self.assertEqual(format_result(res),
-                                         format_result(eval('a %s b' % op)),
-                                         '%s %s %s == %s failed' % (a, op, b, res))
-                    try:
-                        z = copy.copy(a)
-                    except copy.Error:
-                        z = a # assume it has no inplace ops
-                    if ires is TE:
-                        try:
-                            exec 'z %s= b' % op
-                        except TypeError:
-                            pass
-                        else:
-                            self.fail("TypeError not raised")
-                    else:
-                        exec('z %s= b' % op)
-                        self.assertEqual(ires, z)
-
-    def test_prefix_binops(self):
-        for ia, a in enumerate(candidates):
-            for ib, b in enumerate(candidates):
-                for op in prefix_binops:
-                    res = prefix_results[ia][ib]
-                    if res is TE:
-                        self.assertRaises(TypeError, eval,
-                                          '%s(a, b)' % op, {'a': a, 'b': b})
-                    else:
-                        self.assertEqual(format_result(res),
-                                         format_result(eval('%s(a, b)' % op)),
-                                         '%s(%s, %s) == %s failed' % (op, a, b, res))
-
-    def test_cmptypes(self):
-        # Built-in tp_compare slots expect their arguments to have the
-        # same type, but a user-defined __coerce__ doesn't have to obey.
-        # SF #980352
-        evil_coercer = CoerceTo(42)
-        # Make sure these don't crash any more
-        self.assertNotEqual(cmp(u'fish', evil_coercer), 0)
-        self.assertNotEqual(cmp(slice(1), evil_coercer), 0)
-        # ...but that this still works
-        class WackyComparer(object):
-            def __cmp__(slf, other):
-                self.assertTrue(other == 42, 'expected evil_coercer, got %r' % other)
-                return 0
-            __hash__ = None # Invalid cmp makes this unhashable
-        self.assertEqual(cmp(WackyComparer(), evil_coercer), 0)
-        # ...and classic classes too, since that code path is a little different
-        class ClassicWackyComparer:
-            def __cmp__(slf, other):
-                self.assertTrue(other == 42, 'expected evil_coercer, got %r' % other)
-                return 0
-        self.assertEqual(cmp(ClassicWackyComparer(), evil_coercer), 0)
-
-    def test_infinite_rec_classic_classes(self):
-        # if __coerce__() returns its arguments reversed it causes an infinite
-        # recursion for classic classes.
-        class Tester:
-            def __coerce__(self, other):
-                return other, self
-
-        exc = TestFailed("__coerce__() returning its arguments reverse "
-                                "should raise RuntimeError")
-        try:
-            Tester() + 1
-        except (RuntimeError, TypeError):
-            return
-        except:
-            raise exc
-        else:
-            raise exc
-
-def test_main():
-    with check_warnings(("complex divmod.., // and % are deprecated",
-                         DeprecationWarning),
-                        ("classic (int|long) division", DeprecationWarning),
-                        quiet=True):
-        run_unittest(CoercionTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_collections.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_collections.py
deleted file mode 100644
index 08157b9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_collections.py
+++ /dev/null
@@ -1,1042 +0,0 @@
-
-import unittest, doctest, operator
-import inspect
-from test import test_support
-from collections import namedtuple, Counter, OrderedDict
-from test import mapping_tests
-import pickle, cPickle, copy
-from random import randrange, shuffle
-import keyword
-import re
-import sys
-from collections import Hashable, Iterable, Iterator
-from collections import Sized, Container, Callable
-from collections import Set, MutableSet
-from collections import Mapping, MutableMapping
-from collections import Sequence, MutableSequence
-
-TestNT = namedtuple('TestNT', 'x y z')    # type used for pickle tests
-
-class TestNamedTuple(unittest.TestCase):
-
-    def test_factory(self):
-        Point = namedtuple('Point', 'x y')
-        self.assertEqual(Point.__name__, 'Point')
-        self.assertEqual(Point.__slots__, ())
-        self.assertEqual(Point.__module__, __name__)
-        self.assertEqual(Point.__getitem__, tuple.__getitem__)
-        self.assertEqual(Point._fields, ('x', 'y'))
-
-        self.assertRaises(ValueError, namedtuple, 'abc%', 'efg ghi')       # type has non-alpha char
-        self.assertRaises(ValueError, namedtuple, 'class', 'efg ghi')      # type has keyword
-        self.assertRaises(ValueError, namedtuple, '9abc', 'efg ghi')       # type starts with digit
-
-        self.assertRaises(ValueError, namedtuple, 'abc', 'efg g%hi')       # field with non-alpha char
-        self.assertRaises(ValueError, namedtuple, 'abc', 'abc class')      # field has keyword
-        self.assertRaises(ValueError, namedtuple, 'abc', '8efg 9ghi')      # field starts with digit
-        self.assertRaises(ValueError, namedtuple, 'abc', '_efg ghi')       # field with leading underscore
-        self.assertRaises(ValueError, namedtuple, 'abc', 'efg efg ghi')    # duplicate field
-
-        namedtuple('Point0', 'x1 y2')   # Verify that numbers are allowed in names
-        namedtuple('_', 'a b c')        # Test leading underscores in a typename
-
-        nt = namedtuple('nt', u'the quick brown fox')                       # check unicode input
-        self.assertNotIn("u'", repr(nt._fields))
-        nt = namedtuple('nt', (u'the', u'quick'))                           # check unicode input
-        self.assertNotIn("u'", repr(nt._fields))
-
-        self.assertRaises(TypeError, Point._make, [11])                     # catch too few args
-        self.assertRaises(TypeError, Point._make, [11, 22, 33])             # catch too many args
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_factory_doc_attr(self):
-        Point = namedtuple('Point', 'x y')
-        self.assertEqual(Point.__doc__, 'Point(x, y)')
-
-    def test_name_fixer(self):
-        for spec, renamed in [
-            [('efg', 'g%hi'),  ('efg', '_1')],                              # field with non-alpha char
-            [('abc', 'class'), ('abc', '_1')],                              # field has keyword
-            [('8efg', '9ghi'), ('_0', '_1')],                               # field starts with digit
-            [('abc', '_efg'), ('abc', '_1')],                               # field with leading underscore
-            [('abc', 'efg', 'efg', 'ghi'), ('abc', 'efg', '_2', 'ghi')],    # duplicate field
-            [('abc', '', 'x'), ('abc', '_1', 'x')],                         # fieldname is a space
-        ]:
-            self.assertEqual(namedtuple('NT', spec, rename=True)._fields, renamed)
-
-    def test_instance(self):
-        Point = namedtuple('Point', 'x y')
-        p = Point(11, 22)
-        self.assertEqual(p, Point(x=11, y=22))
-        self.assertEqual(p, Point(11, y=22))
-        self.assertEqual(p, Point(y=22, x=11))
-        self.assertEqual(p, Point(*(11, 22)))
-        self.assertEqual(p, Point(**dict(x=11, y=22)))
-        self.assertRaises(TypeError, Point, 1)                              # too few args
-        self.assertRaises(TypeError, Point, 1, 2, 3)                        # too many args
-        self.assertRaises(TypeError, eval, 'Point(XXX=1, y=2)', locals())   # wrong keyword argument
-        self.assertRaises(TypeError, eval, 'Point(x=1)', locals())          # missing keyword argument
-        self.assertEqual(repr(p), 'Point(x=11, y=22)')
-        self.assertNotIn('__dict__', dir(p))                              # verify instance has no dict
-        self.assertNotIn('__weakref__', dir(p))
-        self.assertEqual(p, Point._make([11, 22]))                          # test _make classmethod
-        self.assertEqual(p._fields, ('x', 'y'))                             # test _fields attribute
-        self.assertEqual(p._replace(x=1), (1, 22))                          # test _replace method
-        self.assertEqual(p._asdict(), dict(x=11, y=22))                     # test _asdict method
-
-        try:
-            p._replace(x=1, error=2)
-        except ValueError:
-            pass
-        else:
-            self._fail('Did not detect an incorrect fieldname')
-
-        # verify that field string can have commas
-        Point = namedtuple('Point', 'x, y')
-        p = Point(x=11, y=22)
-        self.assertEqual(repr(p), 'Point(x=11, y=22)')
-
-        # verify that fieldspec can be a non-string sequence
-        Point = namedtuple('Point', ('x', 'y'))
-        p = Point(x=11, y=22)
-        self.assertEqual(repr(p), 'Point(x=11, y=22)')
-
-    def test_tupleness(self):
-        Point = namedtuple('Point', 'x y')
-        p = Point(11, 22)
-
-        self.assertIsInstance(p, tuple)
-        self.assertEqual(p, (11, 22))                                       # matches a real tuple
-        self.assertEqual(tuple(p), (11, 22))                                # coercable to a real tuple
-        self.assertEqual(list(p), [11, 22])                                 # coercable to a list
-        self.assertEqual(max(p), 22)                                        # iterable
-        self.assertEqual(max(*p), 22)                                       # star-able
-        x, y = p
-        self.assertEqual(p, (x, y))                                         # unpacks like a tuple
-        self.assertEqual((p[0], p[1]), (11, 22))                            # indexable like a tuple
-        self.assertRaises(IndexError, p.__getitem__, 3)
-
-        self.assertEqual(p.x, x)
-        self.assertEqual(p.y, y)
-        self.assertRaises(AttributeError, eval, 'p.z', locals())
-
-    def test_odd_sizes(self):
-        Zero = namedtuple('Zero', '')
-        self.assertEqual(Zero(), ())
-        self.assertEqual(Zero._make([]), ())
-        self.assertEqual(repr(Zero()), 'Zero()')
-        self.assertEqual(Zero()._asdict(), {})
-        self.assertEqual(Zero()._fields, ())
-
-        Dot = namedtuple('Dot', 'd')
-        self.assertEqual(Dot(1), (1,))
-        self.assertEqual(Dot._make([1]), (1,))
-        self.assertEqual(Dot(1).d, 1)
-        self.assertEqual(repr(Dot(1)), 'Dot(d=1)')
-        self.assertEqual(Dot(1)._asdict(), {'d':1})
-        self.assertEqual(Dot(1)._replace(d=999), (999,))
-        self.assertEqual(Dot(1)._fields, ('d',))
-
-        n = 5000
-        import string, random
-        names = list(set(''.join([random.choice(string.ascii_letters)
-                                  for j in range(10)]) for i in range(n)))
-        n = len(names)
-        Big = namedtuple('Big', names)
-        b = Big(*range(n))
-        self.assertEqual(b, tuple(range(n)))
-        self.assertEqual(Big._make(range(n)), tuple(range(n)))
-        for pos, name in enumerate(names):
-            self.assertEqual(getattr(b, name), pos)
-        repr(b)                                 # make sure repr() doesn't blow-up
-        d = b._asdict()
-        d_expected = dict(zip(names, range(n)))
-        self.assertEqual(d, d_expected)
-        b2 = b._replace(**dict([(names[1], 999),(names[-5], 42)]))
-        b2_expected = range(n)
-        b2_expected[1] = 999
-        b2_expected[-5] = 42
-        self.assertEqual(b2, tuple(b2_expected))
-        self.assertEqual(b._fields, tuple(names))
-
-    def test_pickle(self):
-        p = TestNT(x=10, y=20, z=30)
-        for module in pickle, cPickle:
-            loads = getattr(module, 'loads')
-            dumps = getattr(module, 'dumps')
-            for protocol in -1, 0, 1, 2:
-                q = loads(dumps(p, protocol))
-                self.assertEqual(p, q)
-                self.assertEqual(p._fields, q._fields)
-
-    def test_copy(self):
-        p = TestNT(x=10, y=20, z=30)
-        for copier in copy.copy, copy.deepcopy:
-            q = copier(p)
-            self.assertEqual(p, q)
-            self.assertEqual(p._fields, q._fields)
-
-    def test_name_conflicts(self):
-        # Some names like "self", "cls", "tuple", "itemgetter", and "property"
-        # failed when used as field names.  Test to make sure these now work.
-        T = namedtuple('T', 'itemgetter property self cls tuple')
-        t = T(1, 2, 3, 4, 5)
-        self.assertEqual(t, (1,2,3,4,5))
-        newt = t._replace(itemgetter=10, property=20, self=30, cls=40, tuple=50)
-        self.assertEqual(newt, (10,20,30,40,50))
-
-        # Broader test of all interesting names in a template
-        with test_support.captured_stdout() as template:
-            T = namedtuple('T', 'x', verbose=True)
-        words = set(re.findall('[A-Za-z]+', template.getvalue()))
-        words -= set(keyword.kwlist)
-        T = namedtuple('T', words)
-        # test __new__
-        values = tuple(range(len(words)))
-        t = T(*values)
-        self.assertEqual(t, values)
-        t = T(**dict(zip(T._fields, values)))
-        self.assertEqual(t, values)
-        # test _make
-        t = T._make(values)
-        self.assertEqual(t, values)
-        # exercise __repr__
-        repr(t)
-        # test _asdict
-        self.assertEqual(t._asdict(), dict(zip(T._fields, values)))
-        # test _replace
-        t = T._make(values)
-        newvalues = tuple(v*10 for v in values)
-        newt = t._replace(**dict(zip(T._fields, newvalues)))
-        self.assertEqual(newt, newvalues)
-        # test _fields
-        self.assertEqual(T._fields, tuple(words))
-        # test __getnewargs__
-        self.assertEqual(t.__getnewargs__(), values)
-
-class ABCTestCase(unittest.TestCase):
-
-    def validate_abstract_methods(self, abc, *names):
-        methodstubs = dict.fromkeys(names, lambda s, *args: 0)
-
-        # everything should work will all required methods are present
-        C = type('C', (abc,), methodstubs)
-        C()
-
-        # instantiation should fail if a required method is missing
-        for name in names:
-            stubs = methodstubs.copy()
-            del stubs[name]
-            C = type('C', (abc,), stubs)
-            self.assertRaises(TypeError, C, name)
-
-    def validate_isinstance(self, abc, name):
-        stub = lambda s, *args: 0
-
-        # new-style class
-        C = type('C', (object,), {name: stub})
-        self.assertIsInstance(C(), abc)
-        self.assertTrue(issubclass(C, abc))
-        # old-style class
-        class C: pass
-        setattr(C, name, stub)
-        self.assertIsInstance(C(), abc)
-        self.assertTrue(issubclass(C, abc))
-
-        # new-style class
-        C = type('C', (object,), {'__hash__': None})
-        self.assertNotIsInstance(C(), abc)
-        self.assertFalse(issubclass(C, abc))
-        # old-style class
-        class C: pass
-        self.assertNotIsInstance(C(), abc)
-        self.assertFalse(issubclass(C, abc))
-
-    def validate_comparison(self, instance):
-        ops = ['lt', 'gt', 'le', 'ge', 'ne', 'or', 'and', 'xor', 'sub']
-        operators = {}
-        for op in ops:
-            name = '__' + op + '__'
-            operators[name] = getattr(operator, name)
-
-        class Other:
-            def __init__(self):
-                self.right_side = False
-            def __eq__(self, other):
-                self.right_side = True
-                return True
-            __lt__ = __eq__
-            __gt__ = __eq__
-            __le__ = __eq__
-            __ge__ = __eq__
-            __ne__ = __eq__
-            __ror__ = __eq__
-            __rand__ = __eq__
-            __rxor__ = __eq__
-            __rsub__ = __eq__
-
-        for name, op in operators.items():
-            if not hasattr(instance, name):
-                continue
-            other = Other()
-            op(instance, other)
-            self.assertTrue(other.right_side,'Right side not called for %s.%s'
-                            % (type(instance), name))
-
-class TestOneTrickPonyABCs(ABCTestCase):
-
-    def test_Hashable(self):
-        # Check some non-hashables
-        non_samples = [list(), set(), dict()]
-        for x in non_samples:
-            self.assertNotIsInstance(x, Hashable)
-            self.assertFalse(issubclass(type(x), Hashable), repr(type(x)))
-        # Check some hashables
-        samples = [None,
-                   int(), float(), complex(),
-                   str(),
-                   tuple(), frozenset(),
-                   int, list, object, type,
-                   ]
-        for x in samples:
-            self.assertIsInstance(x, Hashable)
-            self.assertTrue(issubclass(type(x), Hashable), repr(type(x)))
-        self.assertRaises(TypeError, Hashable)
-        # Check direct subclassing
-        class H(Hashable):
-            def __hash__(self):
-                return super(H, self).__hash__()
-            __eq__ = Hashable.__eq__ # Silence Py3k warning
-        self.assertEqual(hash(H()), 0)
-        self.assertFalse(issubclass(int, H))
-        self.validate_abstract_methods(Hashable, '__hash__')
-        self.validate_isinstance(Hashable, '__hash__')
-
-    def test_Iterable(self):
-        # Check some non-iterables
-        non_samples = [None, 42, 3.14, 1j]
-        for x in non_samples:
-            self.assertNotIsInstance(x, Iterable)
-            self.assertFalse(issubclass(type(x), Iterable), repr(type(x)))
-        # Check some iterables
-        samples = [str(),
-                   tuple(), list(), set(), frozenset(), dict(),
-                   dict().keys(), dict().items(), dict().values(),
-                   (lambda: (yield))(),
-                   (x for x in []),
-                   ]
-        for x in samples:
-            self.assertIsInstance(x, Iterable)
-            self.assertTrue(issubclass(type(x), Iterable), repr(type(x)))
-        # Check direct subclassing
-        class I(Iterable):
-            def __iter__(self):
-                return super(I, self).__iter__()
-        self.assertEqual(list(I()), [])
-        self.assertFalse(issubclass(str, I))
-        self.validate_abstract_methods(Iterable, '__iter__')
-        self.validate_isinstance(Iterable, '__iter__')
-
-    def test_Iterator(self):
-        non_samples = [None, 42, 3.14, 1j, "".encode('ascii'), "", (), [],
-            {}, set()]
-        for x in non_samples:
-            self.assertNotIsInstance(x, Iterator)
-            self.assertFalse(issubclass(type(x), Iterator), repr(type(x)))
-        samples = [iter(str()),
-                   iter(tuple()), iter(list()), iter(dict()),
-                   iter(set()), iter(frozenset()),
-                   iter(dict().keys()), iter(dict().items()),
-                   iter(dict().values()),
-                   (lambda: (yield))(),
-                   (x for x in []),
-                   ]
-        for x in samples:
-            self.assertIsInstance(x, Iterator)
-            self.assertTrue(issubclass(type(x), Iterator), repr(type(x)))
-        self.validate_abstract_methods(Iterator, 'next', '__iter__')
-
-        # Issue 10565
-        class NextOnly:
-            def __next__(self):
-                yield 1
-                raise StopIteration
-        self.assertNotIsInstance(NextOnly(), Iterator)
-        class NextOnlyNew(object):
-            def __next__(self):
-                yield 1
-                raise StopIteration
-        self.assertNotIsInstance(NextOnlyNew(), Iterator)
-
-    def test_Sized(self):
-        non_samples = [None, 42, 3.14, 1j,
-                       (lambda: (yield))(),
-                       (x for x in []),
-                       ]
-        for x in non_samples:
-            self.assertNotIsInstance(x, Sized)
-            self.assertFalse(issubclass(type(x), Sized), repr(type(x)))
-        samples = [str(),
-                   tuple(), list(), set(), frozenset(), dict(),
-                   dict().keys(), dict().items(), dict().values(),
-                   ]
-        for x in samples:
-            self.assertIsInstance(x, Sized)
-            self.assertTrue(issubclass(type(x), Sized), repr(type(x)))
-        self.validate_abstract_methods(Sized, '__len__')
-        self.validate_isinstance(Sized, '__len__')
-
-    def test_Container(self):
-        non_samples = [None, 42, 3.14, 1j,
-                       (lambda: (yield))(),
-                       (x for x in []),
-                       ]
-        for x in non_samples:
-            self.assertNotIsInstance(x, Container)
-            self.assertFalse(issubclass(type(x), Container), repr(type(x)))
-        samples = [str(),
-                   tuple(), list(), set(), frozenset(), dict(),
-                   dict().keys(), dict().items(),
-                   ]
-        for x in samples:
-            self.assertIsInstance(x, Container)
-            self.assertTrue(issubclass(type(x), Container), repr(type(x)))
-        self.validate_abstract_methods(Container, '__contains__')
-        self.validate_isinstance(Container, '__contains__')
-
-    def test_Callable(self):
-        non_samples = [None, 42, 3.14, 1j,
-                       "", "".encode('ascii'), (), [], {}, set(),
-                       (lambda: (yield))(),
-                       (x for x in []),
-                       ]
-        for x in non_samples:
-            self.assertNotIsInstance(x, Callable)
-            self.assertFalse(issubclass(type(x), Callable), repr(type(x)))
-        samples = [lambda: None,
-                   type, int, object,
-                   len,
-                   list.append, [].append,
-                   ]
-        for x in samples:
-            self.assertIsInstance(x, Callable)
-            self.assertTrue(issubclass(type(x), Callable), repr(type(x)))
-        self.validate_abstract_methods(Callable, '__call__')
-        self.validate_isinstance(Callable, '__call__')
-
-    def test_direct_subclassing(self):
-        for B in Hashable, Iterable, Iterator, Sized, Container, Callable:
-            class C(B):
-                pass
-            self.assertTrue(issubclass(C, B))
-            self.assertFalse(issubclass(int, C))
-
-    def test_registration(self):
-        for B in Hashable, Iterable, Iterator, Sized, Container, Callable:
-            class C:
-                __metaclass__ = type
-                __hash__ = None  # Make sure it isn't hashable by default
-            self.assertFalse(issubclass(C, B), B.__name__)
-            B.register(C)
-            self.assertTrue(issubclass(C, B))
-
-class WithSet(MutableSet):
-
-    def __init__(self, it=()):
-        self.data = set(it)
-
-    def __len__(self):
-        return len(self.data)
-
-    def __iter__(self):
-        return iter(self.data)
-
-    def __contains__(self, item):
-        return item in self.data
-
-    def add(self, item):
-        self.data.add(item)
-
-    def discard(self, item):
-        self.data.discard(item)
-
-class TestCollectionABCs(ABCTestCase):
-
-    # XXX For now, we only test some virtual inheritance properties.
-    # We should also test the proper behavior of the collection ABCs
-    # as real base classes or mix-in classes.
-
-    def test_Set(self):
-        for sample in [set, frozenset]:
-            self.assertIsInstance(sample(), Set)
-            self.assertTrue(issubclass(sample, Set))
-        self.validate_abstract_methods(Set, '__contains__', '__iter__', '__len__')
-        class MySet(Set):
-            def __contains__(self, x):
-                return False
-            def __len__(self):
-                return 0
-            def __iter__(self):
-                return iter([])
-        self.validate_comparison(MySet())
-
-    def test_hash_Set(self):
-        class OneTwoThreeSet(Set):
-            def __init__(self):
-                self.contents = [1, 2, 3]
-            def __contains__(self, x):
-                return x in self.contents
-            def __len__(self):
-                return len(self.contents)
-            def __iter__(self):
-                return iter(self.contents)
-            def __hash__(self):
-                return self._hash()
-        a, b = OneTwoThreeSet(), OneTwoThreeSet()
-        self.assertTrue(hash(a) == hash(b))
-
-    def test_MutableSet(self):
-        self.assertIsInstance(set(), MutableSet)
-        self.assertTrue(issubclass(set, MutableSet))
-        self.assertNotIsInstance(frozenset(), MutableSet)
-        self.assertFalse(issubclass(frozenset, MutableSet))
-        self.validate_abstract_methods(MutableSet, '__contains__', '__iter__', '__len__',
-            'add', 'discard')
-
-    def test_issue_5647(self):
-        # MutableSet.__iand__ mutated the set during iteration
-        s = WithSet('abcd')
-        s &= WithSet('cdef')            # This used to fail
-        self.assertEqual(set(s), set('cd'))
-
-    def test_issue_4920(self):
-        # MutableSet.pop() method did not work
-        class MySet(collections.MutableSet):
-            __slots__=['__s']
-            def __init__(self,items=None):
-                if items is None:
-                    items=[]
-                self.__s=set(items)
-            def __contains__(self,v):
-                return v in self.__s
-            def __iter__(self):
-                return iter(self.__s)
-            def __len__(self):
-                return len(self.__s)
-            def add(self,v):
-                result=v not in self.__s
-                self.__s.add(v)
-                return result
-            def discard(self,v):
-                result=v in self.__s
-                self.__s.discard(v)
-                return result
-            def __repr__(self):
-                return "MySet(%s)" % repr(list(self))
-        s = MySet([5,43,2,1])
-        self.assertEqual(s.pop(), 1)
-
-    def test_issue8750(self):
-        empty = WithSet()
-        full = WithSet(range(10))
-        s = WithSet(full)
-        s -= s
-        self.assertEqual(s, empty)
-        s = WithSet(full)
-        s ^= s
-        self.assertEqual(s, empty)
-        s = WithSet(full)
-        s &= s
-        self.assertEqual(s, full)
-        s |= s
-        self.assertEqual(s, full)
-
-    def test_Mapping(self):
-        for sample in [dict]:
-            self.assertIsInstance(sample(), Mapping)
-            self.assertTrue(issubclass(sample, Mapping))
-        self.validate_abstract_methods(Mapping, '__contains__', '__iter__', '__len__',
-            '__getitem__')
-        class MyMapping(collections.Mapping):
-            def __len__(self):
-                return 0
-            def __getitem__(self, i):
-                raise IndexError
-            def __iter__(self):
-                return iter(())
-        self.validate_comparison(MyMapping())
-
-    def test_MutableMapping(self):
-        for sample in [dict]:
-            self.assertIsInstance(sample(), MutableMapping)
-            self.assertTrue(issubclass(sample, MutableMapping))
-        self.validate_abstract_methods(MutableMapping, '__contains__', '__iter__', '__len__',
-            '__getitem__', '__setitem__', '__delitem__')
-
-    def test_Sequence(self):
-        for sample in [tuple, list, str]:
-            self.assertIsInstance(sample(), Sequence)
-            self.assertTrue(issubclass(sample, Sequence))
-        self.assertTrue(issubclass(basestring, Sequence))
-        self.assertIsInstance(range(10), Sequence)
-        self.assertTrue(issubclass(xrange, Sequence))
-        self.assertTrue(issubclass(str, Sequence))
-        self.validate_abstract_methods(Sequence, '__contains__', '__iter__', '__len__',
-            '__getitem__')
-
-    def test_MutableSequence(self):
-        for sample in [tuple, str]:
-            self.assertNotIsInstance(sample(), MutableSequence)
-            self.assertFalse(issubclass(sample, MutableSequence))
-        for sample in [list]:
-            self.assertIsInstance(sample(), MutableSequence)
-            self.assertTrue(issubclass(sample, MutableSequence))
-        self.assertFalse(issubclass(basestring, MutableSequence))
-        self.validate_abstract_methods(MutableSequence, '__contains__', '__iter__',
-            '__len__', '__getitem__', '__setitem__', '__delitem__', 'insert')
-
-class TestCounter(unittest.TestCase):
-
-    def test_basics(self):
-        c = Counter('abcaba')
-        self.assertEqual(c, Counter({'a':3 , 'b': 2, 'c': 1}))
-        self.assertEqual(c, Counter(a=3, b=2, c=1))
-        self.assertIsInstance(c, dict)
-        self.assertIsInstance(c, Mapping)
-        self.assertTrue(issubclass(Counter, dict))
-        self.assertTrue(issubclass(Counter, Mapping))
-        self.assertEqual(len(c), 3)
-        self.assertEqual(sum(c.values()), 6)
-        self.assertEqual(sorted(c.values()), [1, 2, 3])
-        self.assertEqual(sorted(c.keys()), ['a', 'b', 'c'])
-        self.assertEqual(sorted(c), ['a', 'b', 'c'])
-        self.assertEqual(sorted(c.items()),
-                         [('a', 3), ('b', 2), ('c', 1)])
-        self.assertEqual(c['b'], 2)
-        self.assertEqual(c['z'], 0)
-        with test_support.check_py3k_warnings():
-            self.assertEqual(c.has_key('c'), True)
-            self.assertEqual(c.has_key('z'), False)
-        self.assertEqual(c.__contains__('c'), True)
-        self.assertEqual(c.__contains__('z'), False)
-        self.assertEqual(c.get('b', 10), 2)
-        self.assertEqual(c.get('z', 10), 10)
-        self.assertEqual(c, dict(a=3, b=2, c=1))
-        self.assertEqual(repr(c), "Counter({'a': 3, 'b': 2, 'c': 1})")
-        self.assertEqual(c.most_common(), [('a', 3), ('b', 2), ('c', 1)])
-        for i in range(5):
-            self.assertEqual(c.most_common(i),
-                             [('a', 3), ('b', 2), ('c', 1)][:i])
-        self.assertEqual(''.join(sorted(c.elements())), 'aaabbc')
-        c['a'] += 1         # increment an existing value
-        c['b'] -= 2         # sub existing value to zero
-        del c['c']          # remove an entry
-        del c['c']          # make sure that del doesn't raise KeyError
-        c['d'] -= 2         # sub from a missing value
-        c['e'] = -5         # directly assign a missing value
-        c['f'] += 4         # add to a missing value
-        self.assertEqual(c, dict(a=4, b=0, d=-2, e=-5, f=4))
-        self.assertEqual(''.join(sorted(c.elements())), 'aaaaffff')
-        self.assertEqual(c.pop('f'), 4)
-        self.assertNotIn('f', c)
-        for i in range(3):
-            elem, cnt = c.popitem()
-            self.assertNotIn(elem, c)
-        c.clear()
-        self.assertEqual(c, {})
-        self.assertEqual(repr(c), 'Counter()')
-        self.assertRaises(NotImplementedError, Counter.fromkeys, 'abc')
-        self.assertRaises(TypeError, hash, c)
-        c.update(dict(a=5, b=3))
-        c.update(c=1)
-        c.update(Counter('a' * 50 + 'b' * 30))
-        c.update()          # test case with no args
-        c.__init__('a' * 500 + 'b' * 300)
-        c.__init__('cdc')
-        c.__init__()
-        self.assertEqual(c, dict(a=555, b=333, c=3, d=1))
-        self.assertEqual(c.setdefault('d', 5), 1)
-        self.assertEqual(c['d'], 1)
-        self.assertEqual(c.setdefault('e', 5), 5)
-        self.assertEqual(c['e'], 5)
-
-    def test_copying(self):
-        # Check that counters are copyable, deepcopyable, picklable, and
-        #have a repr/eval round-trip
-        words = Counter('which witch had which witches wrist watch'.split())
-        update_test = Counter()
-        update_test.update(words)
-        for i, dup in enumerate([
-                    words.copy(),
-                    copy.copy(words),
-                    copy.deepcopy(words),
-                    pickle.loads(pickle.dumps(words, 0)),
-                    pickle.loads(pickle.dumps(words, 1)),
-                    pickle.loads(pickle.dumps(words, 2)),
-                    pickle.loads(pickle.dumps(words, -1)),
-                    cPickle.loads(cPickle.dumps(words, 0)),
-                    cPickle.loads(cPickle.dumps(words, 1)),
-                    cPickle.loads(cPickle.dumps(words, 2)),
-                    cPickle.loads(cPickle.dumps(words, -1)),
-                    eval(repr(words)),
-                    update_test,
-                    Counter(words),
-                    ]):
-            msg = (i, dup, words)
-            self.assertTrue(dup is not words)
-            self.assertEqual(dup, words)
-            self.assertEqual(len(dup), len(words))
-            self.assertEqual(type(dup), type(words))
-
-    def test_copy_subclass(self):
-        class MyCounter(Counter):
-            pass
-        c = MyCounter('slartibartfast')
-        d = c.copy()
-        self.assertEqual(d, c)
-        self.assertEqual(len(d), len(c))
-        self.assertEqual(type(d), type(c))
-
-    def test_conversions(self):
-        # Convert to: set, list, dict
-        s = 'she sells sea shells by the sea shore'
-        self.assertEqual(sorted(Counter(s).elements()), sorted(s))
-        self.assertEqual(sorted(Counter(s)), sorted(set(s)))
-        self.assertEqual(dict(Counter(s)), dict(Counter(s).items()))
-        self.assertEqual(set(Counter(s)), set(s))
-
-    def test_invariant_for_the_in_operator(self):
-        c = Counter(a=10, b=-2, c=0)
-        for elem in c:
-            self.assertTrue(elem in c)
-            self.assertIn(elem, c)
-
-    def test_multiset_operations(self):
-        # Verify that adding a zero counter will strip zeros and negatives
-        c = Counter(a=10, b=-2, c=0) + Counter()
-        self.assertEqual(dict(c), dict(a=10))
-
-        elements = 'abcd'
-        for i in range(1000):
-            # test random pairs of multisets
-            p = Counter(dict((elem, randrange(-2,4)) for elem in elements))
-            p.update(e=1, f=-1, g=0)
-            q = Counter(dict((elem, randrange(-2,4)) for elem in elements))
-            q.update(h=1, i=-1, j=0)
-            for counterop, numberop in [
-                (Counter.__add__, lambda x, y: max(0, x+y)),
-                (Counter.__sub__, lambda x, y: max(0, x-y)),
-                (Counter.__or__, lambda x, y: max(0,x,y)),
-                (Counter.__and__, lambda x, y: max(0, min(x,y))),
-            ]:
-                result = counterop(p, q)
-                for x in elements:
-                    self.assertEqual(numberop(p[x], q[x]), result[x],
-                                     (counterop, x, p, q))
-                # verify that results exclude non-positive counts
-                self.assertTrue(x>0 for x in result.values())
-
-        elements = 'abcdef'
-        for i in range(100):
-            # verify that random multisets with no repeats are exactly like sets
-            p = Counter(dict((elem, randrange(0, 2)) for elem in elements))
-            q = Counter(dict((elem, randrange(0, 2)) for elem in elements))
-            for counterop, setop in [
-                (Counter.__sub__, set.__sub__),
-                (Counter.__or__, set.__or__),
-                (Counter.__and__, set.__and__),
-            ]:
-                counter_result = counterop(p, q)
-                set_result = setop(set(p.elements()), set(q.elements()))
-                self.assertEqual(counter_result, dict.fromkeys(set_result, 1))
-
-    def test_subtract(self):
-        c = Counter(a=-5, b=0, c=5, d=10, e=15,g=40)
-        c.subtract(a=1, b=2, c=-3, d=10, e=20, f=30, h=-50)
-        self.assertEqual(c, Counter(a=-6, b=-2, c=8, d=0, e=-5, f=-30, g=40, h=50))
-        c = Counter(a=-5, b=0, c=5, d=10, e=15,g=40)
-        c.subtract(Counter(a=1, b=2, c=-3, d=10, e=20, f=30, h=-50))
-        self.assertEqual(c, Counter(a=-6, b=-2, c=8, d=0, e=-5, f=-30, g=40, h=50))
-        c = Counter('aaabbcd')
-        c.subtract('aaaabbcce')
-        self.assertEqual(c, Counter(a=-1, b=0, c=-1, d=1, e=-1))
-
-class TestOrderedDict(unittest.TestCase):
-
-    def test_init(self):
-        with self.assertRaises(TypeError):
-            OrderedDict([('a', 1), ('b', 2)], None)                                 # too many args
-        pairs = [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]
-        self.assertEqual(sorted(OrderedDict(dict(pairs)).items()), pairs)           # dict input
-        self.assertEqual(sorted(OrderedDict(**dict(pairs)).items()), pairs)         # kwds input
-        self.assertEqual(list(OrderedDict(pairs).items()), pairs)                   # pairs input
-        self.assertEqual(list(OrderedDict([('a', 1), ('b', 2), ('c', 9), ('d', 4)],
-                                          c=3, e=5).items()), pairs)                # mixed input
-
-        # make sure no positional args conflict with possible kwdargs
-        self.assertEqual(inspect.getargspec(OrderedDict.__dict__['__init__']).args,
-                         ['self'])
-
-        # Make sure that direct calls to __init__ do not clear previous contents
-        d = OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 44), ('e', 55)])
-        d.__init__([('e', 5), ('f', 6)], g=7, d=4)
-        self.assertEqual(list(d.items()),
-            [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5), ('f', 6), ('g', 7)])
-
-    def test_update(self):
-        with self.assertRaises(TypeError):
-            OrderedDict().update([('a', 1), ('b', 2)], None)                        # too many args
-        pairs = [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]
-        od = OrderedDict()
-        od.update(dict(pairs))
-        self.assertEqual(sorted(od.items()), pairs)                                 # dict input
-        od = OrderedDict()
-        od.update(**dict(pairs))
-        self.assertEqual(sorted(od.items()), pairs)                                 # kwds input
-        od = OrderedDict()
-        od.update(pairs)
-        self.assertEqual(list(od.items()), pairs)                                   # pairs input
-        od = OrderedDict()
-        od.update([('a', 1), ('b', 2), ('c', 9), ('d', 4)], c=3, e=5)
-        self.assertEqual(list(od.items()), pairs)                                   # mixed input
-
-        # Issue 9137: Named argument called 'other' or 'self'
-        # shouldn't be treated specially.
-        od = OrderedDict()
-        od.update(self=23)
-        self.assertEqual(list(od.items()), [('self', 23)])
-        od = OrderedDict()
-        od.update(other={})
-        self.assertEqual(list(od.items()), [('other', {})])
-        od = OrderedDict()
-        od.update(red=5, blue=6, other=7, self=8)
-        self.assertEqual(sorted(list(od.items())),
-                         [('blue', 6), ('other', 7), ('red', 5), ('self', 8)])
-
-        # Make sure that direct calls to update do not clear previous contents
-        # add that updates items are not moved to the end
-        d = OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 44), ('e', 55)])
-        d.update([('e', 5), ('f', 6)], g=7, d=4)
-        self.assertEqual(list(d.items()),
-            [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5), ('f', 6), ('g', 7)])
-
-    def test_abc(self):
-        self.assertIsInstance(OrderedDict(), MutableMapping)
-        self.assertTrue(issubclass(OrderedDict, MutableMapping))
-
-    def test_clear(self):
-        pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
-        shuffle(pairs)
-        od = OrderedDict(pairs)
-        self.assertEqual(len(od), len(pairs))
-        od.clear()
-        self.assertEqual(len(od), 0)
-
-    def test_delitem(self):
-        pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
-        od = OrderedDict(pairs)
-        del od['a']
-        self.assertNotIn('a', od)
-        with self.assertRaises(KeyError):
-            del od['a']
-        self.assertEqual(list(od.items()), pairs[:2] + pairs[3:])
-
-    def test_setitem(self):
-        od = OrderedDict([('d', 1), ('b', 2), ('c', 3), ('a', 4), ('e', 5)])
-        od['c'] = 10           # existing element
-        od['f'] = 20           # new element
-        self.assertEqual(list(od.items()),
-                         [('d', 1), ('b', 2), ('c', 10), ('a', 4), ('e', 5), ('f', 20)])
-
-    def test_iterators(self):
-        pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
-        shuffle(pairs)
-        od = OrderedDict(pairs)
-        self.assertEqual(list(od), [t[0] for t in pairs])
-        self.assertEqual(od.keys()[:], [t[0] for t in pairs])
-        self.assertEqual(od.values()[:], [t[1] for t in pairs])
-        self.assertEqual(od.items()[:], pairs)
-        self.assertEqual(list(od.iterkeys()), [t[0] for t in pairs])
-        self.assertEqual(list(od.itervalues()), [t[1] for t in pairs])
-        self.assertEqual(list(od.iteritems()), pairs)
-        self.assertEqual(list(reversed(od)),
-                         [t[0] for t in reversed(pairs)])
-
-    def test_popitem(self):
-        pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
-        shuffle(pairs)
-        od = OrderedDict(pairs)
-        while pairs:
-            self.assertEqual(od.popitem(), pairs.pop())
-        with self.assertRaises(KeyError):
-            od.popitem()
-        self.assertEqual(len(od), 0)
-
-    def test_pop(self):
-        pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
-        shuffle(pairs)
-        od = OrderedDict(pairs)
-        shuffle(pairs)
-        while pairs:
-            k, v = pairs.pop()
-            self.assertEqual(od.pop(k), v)
-        with self.assertRaises(KeyError):
-            od.pop('xyz')
-        self.assertEqual(len(od), 0)
-        self.assertEqual(od.pop(k, 12345), 12345)
-
-        # make sure pop still works when __missing__ is defined
-        class Missing(OrderedDict):
-            def __missing__(self, key):
-                return 0
-        m = Missing(a=1)
-        self.assertEqual(m.pop('b', 5), 5)
-        self.assertEqual(m.pop('a', 6), 1)
-        self.assertEqual(m.pop('a', 6), 6)
-        with self.assertRaises(KeyError):
-            m.pop('a')
-
-    def test_equality(self):
-        pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
-        shuffle(pairs)
-        od1 = OrderedDict(pairs)
-        od2 = OrderedDict(pairs)
-        self.assertEqual(od1, od2)          # same order implies equality
-        pairs = pairs[2:] + pairs[:2]
-        od2 = OrderedDict(pairs)
-        self.assertNotEqual(od1, od2)       # different order implies inequality
-        # comparison to regular dict is not order sensitive
-        self.assertEqual(od1, dict(od2))
-        self.assertEqual(dict(od2), od1)
-        # different length implied inequality
-        self.assertNotEqual(od1, OrderedDict(pairs[:-1]))
-
-    def test_copying(self):
-        # Check that ordered dicts are copyable, deepcopyable, picklable,
-        # and have a repr/eval round-trip
-        pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
-        od = OrderedDict(pairs)
-        update_test = OrderedDict()
-        update_test.update(od)
-        for i, dup in enumerate([
-                    od.copy(),
-                    copy.copy(od),
-                    copy.deepcopy(od),
-                    pickle.loads(pickle.dumps(od, 0)),
-                    pickle.loads(pickle.dumps(od, 1)),
-                    pickle.loads(pickle.dumps(od, 2)),
-                    pickle.loads(pickle.dumps(od, -1)),
-                    eval(repr(od)),
-                    update_test,
-                    OrderedDict(od),
-                    ]):
-            self.assertTrue(dup is not od)
-            self.assertEqual(dup, od)
-            self.assertEqual(list(dup.items()), list(od.items()))
-            self.assertEqual(len(dup), len(od))
-            self.assertEqual(type(dup), type(od))
-
-    def test_yaml_linkage(self):
-        # Verify that __reduce__ is setup in a way that supports PyYAML's dump() feature.
-        # In yaml, lists are native but tuples are not.
-        pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
-        od = OrderedDict(pairs)
-        # yaml.dump(od) -->
-        # '!!python/object/apply:__main__.OrderedDict\n- - [a, 1]\n  - [b, 2]\n'
-        self.assertTrue(all(type(pair)==list for pair in od.__reduce__()[1]))
-
-    def test_reduce_not_too_fat(self):
-        # do not save instance dictionary if not needed
-        pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
-        od = OrderedDict(pairs)
-        self.assertEqual(len(od.__reduce__()), 2)
-        od.x = 10
-        self.assertEqual(len(od.__reduce__()), 3)
-
-    def test_repr(self):
-        od = OrderedDict([('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)])
-        self.assertEqual(repr(od),
-            "OrderedDict([('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)])")
-        self.assertEqual(eval(repr(od)), od)
-        self.assertEqual(repr(OrderedDict()), "OrderedDict()")
-
-    def test_repr_recursive(self):
-        # See issue #9826
-        od = OrderedDict.fromkeys('abc')
-        od['x'] = od
-        self.assertEqual(repr(od),
-            "OrderedDict([('a', None), ('b', None), ('c', None), ('x', ...)])")
-
-    def test_setdefault(self):
-        pairs = [('c', 1), ('b', 2), ('a', 3), ('d', 4), ('e', 5), ('f', 6)]
-        shuffle(pairs)
-        od = OrderedDict(pairs)
-        pair_order = list(od.items())
-        self.assertEqual(od.setdefault('a', 10), 3)
-        # make sure order didn't change
-        self.assertEqual(list(od.items()), pair_order)
-        self.assertEqual(od.setdefault('x', 10), 10)
-        # make sure 'x' is added to the end
-        self.assertEqual(list(od.items())[-1], ('x', 10))
-
-        # make sure setdefault still works when __missing__ is defined
-        class Missing(OrderedDict):
-            def __missing__(self, key):
-                return 0
-        self.assertEqual(Missing().setdefault(5, 9), 9)
-
-    def test_reinsert(self):
-        # Given insert a, insert b, delete a, re-insert a,
-        # verify that a is now later than b.
-        od = OrderedDict()
-        od['a'] = 1
-        od['b'] = 2
-        del od['a']
-        od['a'] = 1
-        self.assertEqual(list(od.items()), [('b', 2), ('a', 1)])
-
-    def test_views(self):
-        s = 'the quick brown fox jumped over a lazy dog yesterday before dawn'.split()
-        od = OrderedDict.fromkeys(s)
-        self.assertEqual(list(od.viewkeys()),  s)
-        self.assertEqual(list(od.viewvalues()),  [None for k in s])
-        self.assertEqual(list(od.viewitems()),  [(k, None) for k in s])
-
-    def test_override_update(self):
-        # Verify that subclasses can override update() without breaking __init__()
-        class MyOD(OrderedDict):
-            def update(self, *args, **kwds):
-                raise Exception()
-        items = [('a', 1), ('c', 3), ('b', 2)]
-        self.assertEqual(list(MyOD(items).items()), items)
-
-class GeneralMappingTests(mapping_tests.BasicTestMappingProtocol):
-    type2test = OrderedDict
-
-    def test_popitem(self):
-        d = self._empty_mapping()
-        self.assertRaises(KeyError, d.popitem)
-
-class MyOrderedDict(OrderedDict):
-    pass
-
-class SubclassMappingTests(mapping_tests.BasicTestMappingProtocol):
-    type2test = MyOrderedDict
-
-    def test_popitem(self):
-        d = self._empty_mapping()
-        self.assertRaises(KeyError, d.popitem)
-
-import collections
-
-def test_main(verbose=None):
-    NamedTupleDocs = doctest.DocTestSuite(module=collections)
-    test_classes = [TestNamedTuple, NamedTupleDocs, TestOneTrickPonyABCs,
-                    TestCollectionABCs, TestCounter,
-                    TestOrderedDict, GeneralMappingTests, SubclassMappingTests]
-    test_support.run_unittest(*test_classes)
-    test_support.run_doctest(collections, verbose)
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_colorsys.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_colorsys.py
deleted file mode 100644
index f3caef5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_colorsys.py
+++ /dev/null
@@ -1,76 +0,0 @@
-import unittest, test.test_support
-import colorsys
-
-def frange(start, stop, step):
-    while start <= stop:
-        yield start
-        start += step
-
-class ColorsysTest(unittest.TestCase):
-
-    def assertTripleEqual(self, tr1, tr2):
-        self.assertEqual(len(tr1), 3)
-        self.assertEqual(len(tr2), 3)
-        self.assertAlmostEqual(tr1[0], tr2[0])
-        self.assertAlmostEqual(tr1[1], tr2[1])
-        self.assertAlmostEqual(tr1[2], tr2[2])
-
-    def test_hsv_roundtrip(self):
-        for r in frange(0.0, 1.0, 0.2):
-            for g in frange(0.0, 1.0, 0.2):
-                for b in frange(0.0, 1.0, 0.2):
-                    rgb = (r, g, b)
-                    self.assertTripleEqual(
-                        rgb,
-                        colorsys.hsv_to_rgb(*colorsys.rgb_to_hsv(*rgb))
-                    )
-
-    def test_hsv_values(self):
-        values = [
-            # rgb, hsv
-            ((0.0, 0.0, 0.0), (  0  , 0.0, 0.0)), # black
-            ((0.0, 0.0, 1.0), (4./6., 1.0, 1.0)), # blue
-            ((0.0, 1.0, 0.0), (2./6., 1.0, 1.0)), # green
-            ((0.0, 1.0, 1.0), (3./6., 1.0, 1.0)), # cyan
-            ((1.0, 0.0, 0.0), (  0  , 1.0, 1.0)), # red
-            ((1.0, 0.0, 1.0), (5./6., 1.0, 1.0)), # purple
-            ((1.0, 1.0, 0.0), (1./6., 1.0, 1.0)), # yellow
-            ((1.0, 1.0, 1.0), (  0  , 0.0, 1.0)), # white
-            ((0.5, 0.5, 0.5), (  0  , 0.0, 0.5)), # grey
-        ]
-        for (rgb, hsv) in values:
-            self.assertTripleEqual(hsv, colorsys.rgb_to_hsv(*rgb))
-            self.assertTripleEqual(rgb, colorsys.hsv_to_rgb(*hsv))
-
-    def test_hls_roundtrip(self):
-        for r in frange(0.0, 1.0, 0.2):
-            for g in frange(0.0, 1.0, 0.2):
-                for b in frange(0.0, 1.0, 0.2):
-                    rgb = (r, g, b)
-                    self.assertTripleEqual(
-                        rgb,
-                        colorsys.hls_to_rgb(*colorsys.rgb_to_hls(*rgb))
-                    )
-
-    def test_hls_values(self):
-        values = [
-            # rgb, hls
-            ((0.0, 0.0, 0.0), (  0  , 0.0, 0.0)), # black
-            ((0.0, 0.0, 1.0), (4./6., 0.5, 1.0)), # blue
-            ((0.0, 1.0, 0.0), (2./6., 0.5, 1.0)), # green
-            ((0.0, 1.0, 1.0), (3./6., 0.5, 1.0)), # cyan
-            ((1.0, 0.0, 0.0), (  0  , 0.5, 1.0)), # red
-            ((1.0, 0.0, 1.0), (5./6., 0.5, 1.0)), # purple
-            ((1.0, 1.0, 0.0), (1./6., 0.5, 1.0)), # yellow
-            ((1.0, 1.0, 1.0), (  0  , 1.0, 0.0)), # white
-            ((0.5, 0.5, 0.5), (  0  , 0.5, 0.0)), # grey
-        ]
-        for (rgb, hls) in values:
-            self.assertTripleEqual(hls, colorsys.rgb_to_hls(*rgb))
-            self.assertTripleEqual(rgb, colorsys.hls_to_rgb(*hls))
-
-def test_main():
-    test.test_support.run_unittest(ColorsysTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_commands.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_commands.py
deleted file mode 100644
index f78f05e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_commands.py
+++ /dev/null
@@ -1,74 +0,0 @@
-'''
-   Tests for commands module
-   Nick Mathewson
-'''
-import unittest
-import os, tempfile, re
-
-from test.test_support import run_unittest, reap_children, import_module, \
-                              check_warnings
-
-# Silence Py3k warning
-commands = import_module('commands', deprecated=True)
-
-# The module says:
-#   "NB This only works (and is only relevant) for UNIX."
-#
-# Actually, getoutput should work on any platform with an os.popen, but
-# I'll take the comment as given, and skip this suite.
-
-if os.name != 'posix':
-    raise unittest.SkipTest('Not posix; skipping test_commands')
-
-
-class CommandTests(unittest.TestCase):
-
-    def test_getoutput(self):
-        self.assertEqual(commands.getoutput('echo xyzzy'), 'xyzzy')
-        self.assertEqual(commands.getstatusoutput('echo xyzzy'), (0, 'xyzzy'))
-
-        # we use mkdtemp in the next line to create an empty directory
-        # under our exclusive control; from that, we can invent a pathname
-        # that we _know_ won't exist.  This is guaranteed to fail.
-        dir = None
-        try:
-            dir = tempfile.mkdtemp()
-            name = os.path.join(dir, "foo")
-
-            status, output = commands.getstatusoutput('cat ' + name)
-            self.assertNotEqual(status, 0)
-        finally:
-            if dir is not None:
-                os.rmdir(dir)
-
-    def test_getstatus(self):
-        # This pattern should match 'ls -ld /.' on any posix
-        # system, however perversely configured.  Even on systems
-        # (e.g., Cygwin) where user and group names can have spaces:
-        #     drwxr-xr-x   15 Administ Domain U     4096 Aug 12 12:50 /
-        #     drwxr-xr-x   15 Joe User My Group     4096 Aug 12 12:50 /
-        # Note that the first case above has a space in the group name
-        # while the second one has a space in both names.
-        # Special attributes supported:
-        #   + = has ACLs
-        #   @ = has Mac OS X extended attributes
-        #   . = has a SELinux security context
-        pat = r'''d.........   # It is a directory.
-                  [.+@]?       # It may have special attributes.
-                  \s+\d+       # It has some number of links.
-                  [^/]*        # Skip user, group, size, and date.
-                  /\.          # and end with the name of the file.
-               '''
-
-        with check_warnings((".*commands.getstatus.. is deprecated",
-                             DeprecationWarning)):
-            self.assertTrue(re.match(pat, commands.getstatus("/."), re.VERBOSE))
-
-
-def test_main():
-    run_unittest(CommandTests)
-    reap_children()
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compare.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compare.py
deleted file mode 100644
index 7263d29..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compare.py
+++ /dev/null
@@ -1,58 +0,0 @@
-import unittest
-from test import test_support
-
-class Empty:
-    def __repr__(self):
-        return '<Empty>'
-
-class Coerce:
-    def __init__(self, arg):
-        self.arg = arg
-
-    def __repr__(self):
-        return '<Coerce %s>' % self.arg
-
-    def __coerce__(self, other):
-        if isinstance(other, Coerce):
-            return self.arg, other.arg
-        else:
-            return self.arg, other
-
-class Cmp:
-    def __init__(self,arg):
-        self.arg = arg
-
-    def __repr__(self):
-        return '<Cmp %s>' % self.arg
-
-    def __cmp__(self, other):
-        return cmp(self.arg, other)
-
-class ComparisonTest(unittest.TestCase):
-    set1 = [2, 2.0, 2L, 2+0j, Coerce(2), Cmp(2.0)]
-    set2 = [[1], (3,), None, Empty()]
-    candidates = set1 + set2
-
-    def test_comparisons(self):
-        for a in self.candidates:
-            for b in self.candidates:
-                if ((a in self.set1) and (b in self.set1)) or a is b:
-                    self.assertEqual(a, b)
-                else:
-                    self.assertNotEqual(a, b)
-
-    def test_id_comparisons(self):
-        # Ensure default comparison compares id() of args
-        L = []
-        for i in range(10):
-            L.insert(len(L)//2, Empty())
-        for a in L:
-            for b in L:
-                self.assertEqual(cmp(a, b), cmp(id(a), id(b)),
-                                 'a=%r, b=%r' % (a, b))
-
-def test_main():
-    test_support.run_unittest(ComparisonTest)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compile.py
deleted file mode 100644
index 4ce3226..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compile.py
+++ /dev/null
@@ -1,498 +0,0 @@
-import unittest
-import sys
-import _ast
-from test import test_support
-import textwrap
-
-class TestSpecifics(unittest.TestCase):
-
-    def test_no_ending_newline(self):
-        compile("hi", "<test>", "exec")
-        compile("hi\r", "<test>", "exec")
-
-    def test_empty(self):
-        compile("", "<test>", "exec")
-
-    def test_other_newlines(self):
-        compile("\r\n", "<test>", "exec")
-        compile("\r", "<test>", "exec")
-        compile("hi\r\nstuff\r\ndef f():\n    pass\r", "<test>", "exec")
-        compile("this_is\rreally_old_mac\rdef f():\n    pass", "<test>", "exec")
-
-    def test_debug_assignment(self):
-        # catch assignments to __debug__
-        self.assertRaises(SyntaxError, compile, '__debug__ = 1', '?', 'single')
-        import __builtin__
-        prev = __builtin__.__debug__
-        setattr(__builtin__, '__debug__', 'sure')
-        setattr(__builtin__, '__debug__', prev)
-
-    def test_argument_handling(self):
-        # detect duplicate positional and keyword arguments
-        self.assertRaises(SyntaxError, eval, 'lambda a,a:0')
-        self.assertRaises(SyntaxError, eval, 'lambda a,a=1:0')
-        self.assertRaises(SyntaxError, eval, 'lambda a=1,a=1:0')
-        try:
-            exec 'def f(a, a): pass'
-            self.fail("duplicate arguments")
-        except SyntaxError:
-            pass
-        try:
-            exec 'def f(a = 0, a = 1): pass'
-            self.fail("duplicate keyword arguments")
-        except SyntaxError:
-            pass
-        try:
-            exec 'def f(a): global a; a = 1'
-            self.fail("variable is global and local")
-        except SyntaxError:
-            pass
-
-    def test_syntax_error(self):
-        self.assertRaises(SyntaxError, compile, "1+*3", "filename", "exec")
-
-    def test_none_keyword_arg(self):
-        self.assertRaises(SyntaxError, compile, "f(None=1)", "<string>", "exec")
-
-    def test_duplicate_global_local(self):
-        try:
-            exec 'def f(a): global a; a = 1'
-            self.fail("variable is global and local")
-        except SyntaxError:
-            pass
-
-    def test_exec_with_general_mapping_for_locals(self):
-
-        class M:
-            "Test mapping interface versus possible calls from eval()."
-            def __getitem__(self, key):
-                if key == 'a':
-                    return 12
-                raise KeyError
-            def __setitem__(self, key, value):
-                self.results = (key, value)
-            def keys(self):
-                return list('xyz')
-
-        m = M()
-        g = globals()
-        exec 'z = a' in g, m
-        self.assertEqual(m.results, ('z', 12))
-        try:
-            exec 'z = b' in g, m
-        except NameError:
-            pass
-        else:
-            self.fail('Did not detect a KeyError')
-        exec 'z = dir()' in g, m
-        self.assertEqual(m.results, ('z', list('xyz')))
-        exec 'z = globals()' in g, m
-        self.assertEqual(m.results, ('z', g))
-        exec 'z = locals()' in g, m
-        self.assertEqual(m.results, ('z', m))
-        try:
-            exec 'z = b' in m
-        except TypeError:
-            pass
-        else:
-            self.fail('Did not validate globals as a real dict')
-
-        class A:
-            "Non-mapping"
-            pass
-        m = A()
-        try:
-            exec 'z = a' in g, m
-        except TypeError:
-            pass
-        else:
-            self.fail('Did not validate locals as a mapping')
-
-        # Verify that dict subclasses work as well
-        class D(dict):
-            def __getitem__(self, key):
-                if key == 'a':
-                    return 12
-                return dict.__getitem__(self, key)
-        d = D()
-        exec 'z = a' in g, d
-        self.assertEqual(d['z'], 12)
-
-    def test_extended_arg(self):
-        longexpr = 'x = x or ' + '-x' * 2500
-        code = '''
-def f(x):
-    %s
-    %s
-    %s
-    %s
-    %s
-    %s
-    %s
-    %s
-    %s
-    %s
-    # the expressions above have no effect, x == argument
-    while x:
-        x -= 1
-        # EXTENDED_ARG/JUMP_ABSOLUTE here
-    return x
-''' % ((longexpr,)*10)
-        exec code
-        self.assertEqual(f(5), 0)
-
-    def test_complex_args(self):
-
-        with test_support.check_py3k_warnings(
-                ("tuple parameter unpacking has been removed", SyntaxWarning)):
-            exec textwrap.dedent('''
-        def comp_args((a, b)):
-            return a,b
-        self.assertEqual(comp_args((1, 2)), (1, 2))
-
-        def comp_args((a, b)=(3, 4)):
-            return a, b
-        self.assertEqual(comp_args((1, 2)), (1, 2))
-        self.assertEqual(comp_args(), (3, 4))
-
-        def comp_args(a, (b, c)):
-            return a, b, c
-        self.assertEqual(comp_args(1, (2, 3)), (1, 2, 3))
-
-        def comp_args(a=2, (b, c)=(3, 4)):
-            return a, b, c
-        self.assertEqual(comp_args(1, (2, 3)), (1, 2, 3))
-        self.assertEqual(comp_args(), (2, 3, 4))
-        ''')
-
-    def test_argument_order(self):
-        try:
-            exec 'def f(a=1, (b, c)): pass'
-            self.fail("non-default args after default")
-        except SyntaxError:
-            pass
-
-    def test_float_literals(self):
-        # testing bad float literals
-        self.assertRaises(SyntaxError, eval, "2e")
-        self.assertRaises(SyntaxError, eval, "2.0e+")
-        self.assertRaises(SyntaxError, eval, "1e-")
-        self.assertRaises(SyntaxError, eval, "3-4e/21")
-
-    def test_indentation(self):
-        # testing compile() of indented block w/o trailing newline"
-        s = """
-if 1:
-    if 2:
-        pass"""
-        compile(s, "<string>", "exec")
-
-    # This test is probably specific to CPython and may not generalize
-    # to other implementations.  We are trying to ensure that when
-    # the first line of code starts after 256, correct line numbers
-    # in tracebacks are still produced.
-    def test_leading_newlines(self):
-        s256 = "".join(["\n"] * 256 + ["spam"])
-        co = compile(s256, 'fn', 'exec')
-        self.assertEqual(co.co_firstlineno, 257)
-        self.assertEqual(co.co_lnotab, '')
-
-    def test_literals_with_leading_zeroes(self):
-        for arg in ["077787", "0xj", "0x.", "0e",  "090000000000000",
-                    "080000000000000", "000000000000009", "000000000000008",
-                    "0b42", "0BADCAFE", "0o123456789", "0b1.1", "0o4.2",
-                    "0b101j2", "0o153j2", "0b100e1", "0o777e1", "0o8", "0o78"]:
-            self.assertRaises(SyntaxError, eval, arg)
-
-        self.assertEqual(eval("0777"), 511)
-        self.assertEqual(eval("0777L"), 511)
-        self.assertEqual(eval("000777"), 511)
-        self.assertEqual(eval("0xff"), 255)
-        self.assertEqual(eval("0xffL"), 255)
-        self.assertEqual(eval("0XfF"), 255)
-        self.assertEqual(eval("0777."), 777)
-        self.assertEqual(eval("0777.0"), 777)
-        self.assertEqual(eval("000000000000000000000000000000000000000000000000000777e0"), 777)
-        self.assertEqual(eval("0777e1"), 7770)
-        self.assertEqual(eval("0e0"), 0)
-        self.assertEqual(eval("0000E-012"), 0)
-        self.assertEqual(eval("09.5"), 9.5)
-        self.assertEqual(eval("0777j"), 777j)
-        self.assertEqual(eval("00j"), 0j)
-        self.assertEqual(eval("00.0"), 0)
-        self.assertEqual(eval("0e3"), 0)
-        self.assertEqual(eval("090000000000000."), 90000000000000.)
-        self.assertEqual(eval("090000000000000.0000000000000000000000"), 90000000000000.)
-        self.assertEqual(eval("090000000000000e0"), 90000000000000.)
-        self.assertEqual(eval("090000000000000e-0"), 90000000000000.)
-        self.assertEqual(eval("090000000000000j"), 90000000000000j)
-        self.assertEqual(eval("000000000000007"), 7)
-        self.assertEqual(eval("000000000000008."), 8.)
-        self.assertEqual(eval("000000000000009."), 9.)
-        self.assertEqual(eval("0b101010"), 42)
-        self.assertEqual(eval("-0b000000000010"), -2)
-        self.assertEqual(eval("0o777"), 511)
-        self.assertEqual(eval("-0o0000010"), -8)
-        self.assertEqual(eval("020000000000.0"), 20000000000.0)
-        self.assertEqual(eval("037777777777e0"), 37777777777.0)
-        self.assertEqual(eval("01000000000000000000000.0"),
-                         1000000000000000000000.0)
-
-    def test_unary_minus(self):
-        # Verify treatment of unary minus on negative numbers SF bug #660455
-        if sys.maxint == 2147483647:
-            # 32-bit machine
-            all_one_bits = '0xffffffff'
-            self.assertEqual(eval(all_one_bits), 4294967295L)
-            self.assertEqual(eval("-" + all_one_bits), -4294967295L)
-        elif sys.maxint == 9223372036854775807:
-            # 64-bit machine
-            all_one_bits = '0xffffffffffffffff'
-            self.assertEqual(eval(all_one_bits), 18446744073709551615L)
-            self.assertEqual(eval("-" + all_one_bits), -18446744073709551615L)
-        else:
-            self.fail("How many bits *does* this machine have???")
-        # Verify treatment of constant folding on -(sys.maxint+1)
-        # i.e. -2147483648 on 32 bit platforms.  Should return int, not long.
-        self.assertIsInstance(eval("%s" % (-sys.maxint - 1)), int)
-        self.assertIsInstance(eval("%s" % (-sys.maxint - 2)), long)
-
-    if sys.maxint == 9223372036854775807:
-        def test_32_63_bit_values(self):
-            a = +4294967296  # 1 << 32
-            b = -4294967296  # 1 << 32
-            c = +281474976710656  # 1 << 48
-            d = -281474976710656  # 1 << 48
-            e = +4611686018427387904  # 1 << 62
-            f = -4611686018427387904  # 1 << 62
-            g = +9223372036854775807  # 1 << 63 - 1
-            h = -9223372036854775807  # 1 << 63 - 1
-
-            for variable in self.test_32_63_bit_values.func_code.co_consts:
-                if variable is not None:
-                    self.assertIsInstance(variable, int)
-
-    def test_sequence_unpacking_error(self):
-        # Verify sequence packing/unpacking with "or".  SF bug #757818
-        i,j = (1, -1) or (-1, 1)
-        self.assertEqual(i, 1)
-        self.assertEqual(j, -1)
-
-    def test_none_assignment(self):
-        stmts = [
-            'None = 0',
-            'None += 0',
-            '__builtins__.None = 0',
-            'def None(): pass',
-            'class None: pass',
-            '(a, None) = 0, 0',
-            'for None in range(10): pass',
-            'def f(None): pass',
-            'import None',
-            'import x as None',
-            'from x import None',
-            'from x import y as None'
-        ]
-        for stmt in stmts:
-            stmt += "\n"
-            self.assertRaises(SyntaxError, compile, stmt, 'tmp', 'single')
-            self.assertRaises(SyntaxError, compile, stmt, 'tmp', 'exec')
-        # This is ok.
-        compile("from None import x", "tmp", "exec")
-        compile("from x import None as y", "tmp", "exec")
-        compile("import None as x", "tmp", "exec")
-
-    def test_import(self):
-        succeed = [
-            'import sys',
-            'import os, sys',
-            'import os as bar',
-            'import os.path as bar',
-            'from __future__ import nested_scopes, generators',
-            'from __future__ import (nested_scopes,\ngenerators)',
-            'from __future__ import (nested_scopes,\ngenerators,)',
-            'from sys import stdin, stderr, stdout',
-            'from sys import (stdin, stderr,\nstdout)',
-            'from sys import (stdin, stderr,\nstdout,)',
-            'from sys import (stdin\n, stderr, stdout)',
-            'from sys import (stdin\n, stderr, stdout,)',
-            'from sys import stdin as si, stdout as so, stderr as se',
-            'from sys import (stdin as si, stdout as so, stderr as se)',
-            'from sys import (stdin as si, stdout as so, stderr as se,)',
-            ]
-        fail = [
-            'import (os, sys)',
-            'import (os), (sys)',
-            'import ((os), (sys))',
-            'import (sys',
-            'import sys)',
-            'import (os,)',
-            'import os As bar',
-            'import os.path a bar',
-            'from sys import stdin As stdout',
-            'from sys import stdin a stdout',
-            'from (sys) import stdin',
-            'from __future__ import (nested_scopes',
-            'from __future__ import nested_scopes)',
-            'from __future__ import nested_scopes,\ngenerators',
-            'from sys import (stdin',
-            'from sys import stdin)',
-            'from sys import stdin, stdout,\nstderr',
-            'from sys import stdin si',
-            'from sys import stdin,'
-            'from sys import (*)',
-            'from sys import (stdin,, stdout, stderr)',
-            'from sys import (stdin, stdout),',
-            ]
-        for stmt in succeed:
-            compile(stmt, 'tmp', 'exec')
-        for stmt in fail:
-            self.assertRaises(SyntaxError, compile, stmt, 'tmp', 'exec')
-
-    def test_for_distinct_code_objects(self):
-        # SF bug 1048870
-        def f():
-            f1 = lambda x=1: x
-            f2 = lambda x=2: x
-            return f1, f2
-        f1, f2 = f()
-        self.assertNotEqual(id(f1.func_code), id(f2.func_code))
-
-    def test_lambda_doc(self):
-        l = lambda: "foo"
-        self.assertIsNone(l.__doc__)
-
-    def test_unicode_encoding(self):
-        code = u"# -*- coding: utf-8 -*-\npass\n"
-        self.assertRaises(SyntaxError, compile, code, "tmp", "exec")
-
-    def test_subscripts(self):
-        # SF bug 1448804
-        # Class to make testing subscript results easy
-        class str_map(object):
-            def __init__(self):
-                self.data = {}
-            def __getitem__(self, key):
-                return self.data[str(key)]
-            def __setitem__(self, key, value):
-                self.data[str(key)] = value
-            def __delitem__(self, key):
-                del self.data[str(key)]
-            def __contains__(self, key):
-                return str(key) in self.data
-        d = str_map()
-        # Index
-        d[1] = 1
-        self.assertEqual(d[1], 1)
-        d[1] += 1
-        self.assertEqual(d[1], 2)
-        del d[1]
-        self.assertNotIn(1, d)
-        # Tuple of indices
-        d[1, 1] = 1
-        self.assertEqual(d[1, 1], 1)
-        d[1, 1] += 1
-        self.assertEqual(d[1, 1], 2)
-        del d[1, 1]
-        self.assertNotIn((1, 1), d)
-        # Simple slice
-        d[1:2] = 1
-        self.assertEqual(d[1:2], 1)
-        d[1:2] += 1
-        self.assertEqual(d[1:2], 2)
-        del d[1:2]
-        self.assertNotIn(slice(1, 2), d)
-        # Tuple of simple slices
-        d[1:2, 1:2] = 1
-        self.assertEqual(d[1:2, 1:2], 1)
-        d[1:2, 1:2] += 1
-        self.assertEqual(d[1:2, 1:2], 2)
-        del d[1:2, 1:2]
-        self.assertNotIn((slice(1, 2), slice(1, 2)), d)
-        # Extended slice
-        d[1:2:3] = 1
-        self.assertEqual(d[1:2:3], 1)
-        d[1:2:3] += 1
-        self.assertEqual(d[1:2:3], 2)
-        del d[1:2:3]
-        self.assertNotIn(slice(1, 2, 3), d)
-        # Tuple of extended slices
-        d[1:2:3, 1:2:3] = 1
-        self.assertEqual(d[1:2:3, 1:2:3], 1)
-        d[1:2:3, 1:2:3] += 1
-        self.assertEqual(d[1:2:3, 1:2:3], 2)
-        del d[1:2:3, 1:2:3]
-        self.assertNotIn((slice(1, 2, 3), slice(1, 2, 3)), d)
-        # Ellipsis
-        d[...] = 1
-        self.assertEqual(d[...], 1)
-        d[...] += 1
-        self.assertEqual(d[...], 2)
-        del d[...]
-        self.assertNotIn(Ellipsis, d)
-        # Tuple of Ellipses
-        d[..., ...] = 1
-        self.assertEqual(d[..., ...], 1)
-        d[..., ...] += 1
-        self.assertEqual(d[..., ...], 2)
-        del d[..., ...]
-        self.assertNotIn((Ellipsis, Ellipsis), d)
-
-    def test_mangling(self):
-        class A:
-            def f():
-                __mangled = 1
-                __not_mangled__ = 2
-                import __mangled_mod
-                import __package__.module
-
-        self.assertIn("_A__mangled", A.f.func_code.co_varnames)
-        self.assertIn("__not_mangled__", A.f.func_code.co_varnames)
-        self.assertIn("_A__mangled_mod", A.f.func_code.co_varnames)
-        self.assertIn("__package__", A.f.func_code.co_varnames)
-
-    def test_compile_ast(self):
-        fname = __file__
-        if fname.lower().endswith(('pyc', 'pyo')):
-            fname = fname[:-1]
-        with open(fname, 'r') as f:
-            fcontents = f.read()
-        sample_code = [
-            ['<assign>', 'x = 5'],
-            ['<print1>', 'print 1'],
-            ['<printv>', 'print v'],
-            ['<printTrue>', 'print True'],
-            ['<printList>', 'print []'],
-            ['<ifblock>', """if True:\n    pass\n"""],
-            ['<forblock>', """for n in [1, 2, 3]:\n    print n\n"""],
-            ['<deffunc>', """def foo():\n    pass\nfoo()\n"""],
-            [fname, fcontents],
-        ]
-
-        for fname, code in sample_code:
-            co1 = compile(code, '%s1' % fname, 'exec')
-            ast = compile(code, '%s2' % fname, 'exec', _ast.PyCF_ONLY_AST)
-            self.assertTrue(type(ast) == _ast.Module)
-            co2 = compile(ast, '%s3' % fname, 'exec')
-            self.assertEqual(co1, co2)
-            # the code object's filename comes from the second compilation step
-            self.assertEqual(co2.co_filename, '%s3' % fname)
-
-        # raise exception when node type doesn't match with compile mode
-        co1 = compile('print 1', '<string>', 'exec', _ast.PyCF_ONLY_AST)
-        self.assertRaises(TypeError, compile, co1, '<ast>', 'eval')
-
-        # raise exception when node type is no start node
-        self.assertRaises(TypeError, compile, _ast.If(), '<ast>', 'exec')
-
-        # raise exception when node has invalid children
-        ast = _ast.Module()
-        ast.body = [_ast.BoolOp()]
-        self.assertRaises(TypeError, compile, ast, '<ast>', 'exec')
-
-
-def test_main():
-    test_support.run_unittest(TestSpecifics)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compileall.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compileall.py
deleted file mode 100644
index 5979477..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compileall.py
+++ /dev/null
@@ -1,80 +0,0 @@
-import compileall
-import imp
-import os
-import py_compile
-import shutil
-import struct
-import tempfile
-from test import test_support
-import unittest
-
-
-class CompileallTests(unittest.TestCase):
-
-    def setUp(self):
-        self.directory = tempfile.mkdtemp()
-        self.source_path = os.path.join(self.directory, '_test.py')
-        self.bc_path = self.source_path + ('c' if __debug__ else 'o')
-        with open(self.source_path, 'w') as file:
-            file.write('x = 123\n')
-        self.source_path2 = os.path.join(self.directory, '_test2.py')
-        self.bc_path2 = self.source_path2 + ('c' if __debug__ else 'o')
-        shutil.copyfile(self.source_path, self.source_path2)
-
-    def tearDown(self):
-        shutil.rmtree(self.directory)
-
-    def data(self):
-        with open(self.bc_path, 'rb') as file:
-            data = file.read(8)
-        mtime = int(os.stat(self.source_path).st_mtime)
-        compare = struct.pack('<4sl', imp.get_magic(), mtime)
-        return data, compare
-
-    def recreation_check(self, metadata):
-        """Check that compileall recreates bytecode when the new metadata is
-        used."""
-        if not hasattr(os, 'stat'):
-            return
-        py_compile.compile(self.source_path)
-        self.assertEqual(*self.data())
-        with open(self.bc_path, 'rb') as file:
-            bc = file.read()[len(metadata):]
-        with open(self.bc_path, 'wb') as file:
-            file.write(metadata)
-            file.write(bc)
-        self.assertNotEqual(*self.data())
-        compileall.compile_dir(self.directory, force=False, quiet=True)
-        self.assertTrue(*self.data())
-
-    def test_mtime(self):
-        # Test a change in mtime leads to a new .pyc.
-        self.recreation_check(struct.pack('<4sl', imp.get_magic(), 1))
-
-    def test_magic_number(self):
-        # Test a change in mtime leads to a new .pyc.
-        self.recreation_check(b'\0\0\0\0')
-
-    def test_compile_files(self):
-        # Test compiling a single file, and complete directory
-        for fn in (self.bc_path, self.bc_path2):
-            try:
-                os.unlink(fn)
-            except:
-                pass
-        compileall.compile_file(self.source_path, force=False, quiet=True)
-        self.assertTrue(os.path.isfile(self.bc_path) \
-                        and not os.path.isfile(self.bc_path2))
-        os.unlink(self.bc_path)
-        compileall.compile_dir(self.directory, force=False, quiet=True)
-        self.assertTrue(os.path.isfile(self.bc_path) \
-                        and os.path.isfile(self.bc_path2))
-        os.unlink(self.bc_path)
-        os.unlink(self.bc_path2)
-
-def test_main():
-    test_support.run_unittest(CompileallTests)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compiler.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compiler.py
deleted file mode 100644
index d7051d3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compiler.py
+++ /dev/null
@@ -1,317 +0,0 @@
-import test.test_support
-compiler = test.test_support.import_module('compiler', deprecated=True)
-from compiler.ast import flatten
-import os, sys, time, unittest
-from random import random
-from StringIO import StringIO
-
-# How much time in seconds can pass before we print a 'Still working' message.
-_PRINT_WORKING_MSG_INTERVAL = 5 * 60
-
-class TrivialContext(object):
-    def __enter__(self):
-        return self
-    def __exit__(self, *exc_info):
-        pass
-
-class CompilerTest(unittest.TestCase):
-
-    def testCompileLibrary(self):
-        # A simple but large test.  Compile all the code in the
-        # standard library and its test suite.  This doesn't verify
-        # that any of the code is correct, merely the compiler is able
-        # to generate some kind of code for it.
-
-        next_time = time.time() + _PRINT_WORKING_MSG_INTERVAL
-        # warning: if 'os' or 'test_support' are moved in some other dir,
-        # they should be changed here.
-        libdir = os.path.dirname(os.__file__)
-        testdir = os.path.dirname(test.test_support.__file__)
-
-        for dir in [libdir, testdir]:
-            for basename in os.listdir(dir):
-                # Print still working message since this test can be really slow
-                if next_time <= time.time():
-                    next_time = time.time() + _PRINT_WORKING_MSG_INTERVAL
-                    print >>sys.__stdout__, \
-                       '  testCompileLibrary still working, be patient...'
-                    sys.__stdout__.flush()
-
-                if not basename.endswith(".py"):
-                    continue
-                if not TEST_ALL and random() < 0.98:
-                    continue
-                path = os.path.join(dir, basename)
-                if test.test_support.verbose:
-                    print "compiling", path
-                f = open(path, "U")
-                buf = f.read()
-                f.close()
-                if "badsyntax" in basename or "bad_coding" in basename:
-                    self.assertRaises(SyntaxError, compiler.compile,
-                                      buf, basename, "exec")
-                else:
-                    try:
-                        compiler.compile(buf, basename, "exec")
-                    except Exception, e:
-                        args = list(e.args)
-                        args.append("in file %s]" % basename)
-                        #args[0] += "[in file %s]" % basename
-                        e.args = tuple(args)
-                        raise
-
-    def testNewClassSyntax(self):
-        compiler.compile("class foo():pass\n\n","<string>","exec")
-
-    def testYieldExpr(self):
-        compiler.compile("def g(): yield\n\n", "<string>", "exec")
-
-    def testKeywordAfterStarargs(self):
-        def f(*args, **kwargs):
-            self.assertEqual((args, kwargs), ((2,3), {'x': 1, 'y': 4}))
-        c = compiler.compile('f(x=1, *(2, 3), y=4)', '<string>', 'exec')
-        exec c in {'f': f}
-
-        self.assertRaises(SyntaxError, compiler.parse, "foo(a=1, b)")
-        self.assertRaises(SyntaxError, compiler.parse, "foo(1, *args, 3)")
-
-    def testTryExceptFinally(self):
-        # Test that except and finally clauses in one try stmt are recognized
-        c = compiler.compile("try:\n 1//0\nexcept:\n e = 1\nfinally:\n f = 1",
-                             "<string>", "exec")
-        dct = {}
-        exec c in dct
-        self.assertEqual(dct.get('e'), 1)
-        self.assertEqual(dct.get('f'), 1)
-
-    def testDefaultArgs(self):
-        self.assertRaises(SyntaxError, compiler.parse, "def foo(a=1, b): pass")
-
-    def testDocstrings(self):
-        c = compiler.compile('"doc"', '<string>', 'exec')
-        self.assertIn('__doc__', c.co_names)
-        c = compiler.compile('def f():\n "doc"', '<string>', 'exec')
-        g = {}
-        exec c in g
-        self.assertEqual(g['f'].__doc__, "doc")
-
-    def testLineNo(self):
-        # Test that all nodes except Module have a correct lineno attribute.
-        filename = __file__
-        if filename.endswith((".pyc", ".pyo")):
-            filename = filename[:-1]
-        tree = compiler.parseFile(filename)
-        self.check_lineno(tree)
-
-    def check_lineno(self, node):
-        try:
-            self._check_lineno(node)
-        except AssertionError:
-            print node.__class__, node.lineno
-            raise
-
-    def _check_lineno(self, node):
-        if not node.__class__ in NOLINENO:
-            self.assertIsInstance(node.lineno, int,
-                "lineno=%s on %s" % (node.lineno, node.__class__))
-            self.assertTrue(node.lineno > 0,
-                "lineno=%s on %s" % (node.lineno, node.__class__))
-        for child in node.getChildNodes():
-            self.check_lineno(child)
-
-    def testFlatten(self):
-        self.assertEqual(flatten([1, [2]]), [1, 2])
-        self.assertEqual(flatten((1, (2,))), [1, 2])
-
-    def testNestedScope(self):
-        c = compiler.compile('def g():\n'
-                             '    a = 1\n'
-                             '    def f(): return a + 2\n'
-                             '    return f()\n'
-                             'result = g()',
-                             '<string>',
-                             'exec')
-        dct = {}
-        exec c in dct
-        self.assertEqual(dct.get('result'), 3)
-
-    def testGenExp(self):
-        c = compiler.compile('list((i,j) for i in range(3) if i < 3'
-                             '           for j in range(4) if j > 2)',
-                             '<string>',
-                             'eval')
-        self.assertEqual(eval(c), [(0, 3), (1, 3), (2, 3)])
-
-    def testSetLiteral(self):
-        c = compiler.compile('{1, 2, 3}', '<string>', 'eval')
-        self.assertEqual(eval(c), {1,2,3})
-        c = compiler.compile('{1, 2, 3,}', '<string>', 'eval')
-        self.assertEqual(eval(c), {1,2,3})
-
-    def testDictLiteral(self):
-        c = compiler.compile('{1:2, 2:3, 3:4}', '<string>', 'eval')
-        self.assertEqual(eval(c), {1:2, 2:3, 3:4})
-        c = compiler.compile('{1:2, 2:3, 3:4,}', '<string>', 'eval')
-        self.assertEqual(eval(c), {1:2, 2:3, 3:4})
-
-    def testSetComp(self):
-        c = compiler.compile('{x for x in range(1, 4)}', '<string>', 'eval')
-        self.assertEqual(eval(c), {1, 2, 3})
-        c = compiler.compile('{x * y for x in range(3) if x != 0'
-                             '       for y in range(4) if y != 0}',
-                             '<string>',
-                             'eval')
-        self.assertEqual(eval(c), {1, 2, 3, 4, 6})
-
-    def testDictComp(self):
-        c = compiler.compile('{x:x+1 for x in range(1, 4)}', '<string>', 'eval')
-        self.assertEqual(eval(c), {1:2, 2:3, 3:4})
-        c = compiler.compile('{(x, y) : y for x in range(2) if x != 0'
-                             '            for y in range(3) if y != 0}',
-                             '<string>',
-                             'eval')
-        self.assertEqual(eval(c), {(1, 2): 2, (1, 1): 1})
-
-    def testWith(self):
-        # SF bug 1638243
-        c = compiler.compile('from __future__ import with_statement\n'
-                             'def f():\n'
-                             '    with TrivialContext():\n'
-                             '        return 1\n'
-                             'result = f()',
-                             '<string>',
-                             'exec' )
-        dct = {'TrivialContext': TrivialContext}
-        exec c in dct
-        self.assertEqual(dct.get('result'), 1)
-
-    def testWithAss(self):
-        c = compiler.compile('from __future__ import with_statement\n'
-                             'def f():\n'
-                             '    with TrivialContext() as tc:\n'
-                             '        return 1\n'
-                             'result = f()',
-                             '<string>',
-                             'exec' )
-        dct = {'TrivialContext': TrivialContext}
-        exec c in dct
-        self.assertEqual(dct.get('result'), 1)
-
-    def testWithMult(self):
-        events = []
-        class Ctx:
-            def __init__(self, n):
-                self.n = n
-            def __enter__(self):
-                events.append(self.n)
-            def __exit__(self, *args):
-                pass
-        c = compiler.compile('from __future__ import with_statement\n'
-                             'def f():\n'
-                             '    with Ctx(1) as tc, Ctx(2) as tc2:\n'
-                             '        return 1\n'
-                             'result = f()',
-                             '<string>',
-                             'exec' )
-        dct = {'Ctx': Ctx}
-        exec c in dct
-        self.assertEqual(dct.get('result'), 1)
-        self.assertEqual(events, [1, 2])
-
-    def testGlobal(self):
-        code = compiler.compile('global x\nx=1', '<string>', 'exec')
-        d1 = {'__builtins__': {}}
-        d2 = {}
-        exec code in d1, d2
-        # x should be in the globals dict
-        self.assertEqual(d1.get('x'), 1)
-
-    def testPrintFunction(self):
-        c = compiler.compile('from __future__ import print_function\n'
-                             'print("a", "b", sep="**", end="++", '
-                                    'file=output)',
-                             '<string>',
-                             'exec' )
-        dct = {'output': StringIO()}
-        exec c in dct
-        self.assertEqual(dct['output'].getvalue(), 'a**b++')
-
-    def _testErrEnc(self, src, text, offset):
-        try:
-            compile(src, "", "exec")
-        except SyntaxError, e:
-            self.assertEqual(e.offset, offset)
-            self.assertEqual(e.text, text)
-
-    def testSourceCodeEncodingsError(self):
-        # Test SyntaxError with encoding definition
-        sjis = "print '\x83\x70\x83\x43\x83\x5c\x83\x93', '\n"
-        ascii = "print '12345678', '\n"
-        encdef = "#! -*- coding: ShiftJIS -*-\n"
-
-        # ascii source without encdef
-        self._testErrEnc(ascii, ascii, 19)
-
-        # ascii source with encdef
-        self._testErrEnc(encdef+ascii, ascii, 19)
-
-        # non-ascii source with encdef
-        self._testErrEnc(encdef+sjis, sjis, 19)
-
-        # ShiftJIS source without encdef
-        self._testErrEnc(sjis, sjis, 19)
-
-
-NOLINENO = (compiler.ast.Module, compiler.ast.Stmt, compiler.ast.Discard)
-
-###############################################################################
-# code below is just used to trigger some possible errors, for the benefit of
-# testLineNo
-###############################################################################
-
-class Toto:
-    """docstring"""
-    pass
-
-a, b = 2, 3
-[c, d] = 5, 6
-l = [(x, y) for x, y in zip(range(5), range(5,10))]
-l[0]
-l[3:4]
-d = {'a': 2}
-d = {}
-d = {x: y for x, y in zip(range(5), range(5,10))}
-s = {x for x in range(10)}
-s = {1}
-t = ()
-t = (1, 2)
-l = []
-l = [1, 2]
-if l:
-    pass
-else:
-    a, b = b, a
-
-try:
-    print yo
-except:
-    yo = 3
-else:
-    yo += 3
-
-try:
-    a += b
-finally:
-    b = 0
-
-from math import *
-
-###############################################################################
-
-def test_main():
-    global TEST_ALL
-    TEST_ALL = test.test_support.is_resource_enabled("cpu")
-    test.test_support.run_unittest(CompilerTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_complex.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_complex.py
deleted file mode 100644
index 8863cd3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_complex.py
+++ /dev/null
@@ -1,651 +0,0 @@
-import unittest
-from test import test_support
-
-from random import random
-from math import atan2, isnan, copysign
-
-INF = float("inf")
-NAN = float("nan")
-# These tests ensure that complex math does the right thing
-
-class ComplexTest(unittest.TestCase):
-
-    def assertAlmostEqual(self, a, b):
-        if isinstance(a, complex):
-            if isinstance(b, complex):
-                unittest.TestCase.assertAlmostEqual(self, a.real, b.real)
-                unittest.TestCase.assertAlmostEqual(self, a.imag, b.imag)
-            else:
-                unittest.TestCase.assertAlmostEqual(self, a.real, b)
-                unittest.TestCase.assertAlmostEqual(self, a.imag, 0.)
-        else:
-            if isinstance(b, complex):
-                unittest.TestCase.assertAlmostEqual(self, a, b.real)
-                unittest.TestCase.assertAlmostEqual(self, 0., b.imag)
-            else:
-                unittest.TestCase.assertAlmostEqual(self, a, b)
-
-    def assertCloseAbs(self, x, y, eps=1e-9):
-        """Return true iff floats x and y "are close\""""
-        # put the one with larger magnitude second
-        if abs(x) > abs(y):
-            x, y = y, x
-        if y == 0:
-            return abs(x) < eps
-        if x == 0:
-            return abs(y) < eps
-        # check that relative difference < eps
-        self.assertTrue(abs((x-y)/y) < eps)
-
-    def assertFloatsAreIdentical(self, x, y):
-        """assert that floats x and y are identical, in the sense that:
-        (1) both x and y are nans, or
-        (2) both x and y are infinities, with the same sign, or
-        (3) both x and y are zeros, with the same sign, or
-        (4) x and y are both finite and nonzero, and x == y
-
-        """
-        msg = 'floats {!r} and {!r} are not identical'
-
-        if isnan(x) or isnan(y):
-            if isnan(x) and isnan(y):
-                return
-        elif x == y:
-            if x != 0.0:
-                return
-            # both zero; check that signs match
-            elif copysign(1.0, x) == copysign(1.0, y):
-                return
-            else:
-                msg += ': zeros have different signs'
-        self.fail(msg.format(x, y))
-
-    def assertClose(self, x, y, eps=1e-9):
-        """Return true iff complexes x and y "are close\""""
-        self.assertCloseAbs(x.real, y.real, eps)
-        self.assertCloseAbs(x.imag, y.imag, eps)
-
-    def check_div(self, x, y):
-        """Compute complex z=x*y, and check that z/x==y and z/y==x."""
-        z = x * y
-        if x != 0:
-            q = z / x
-            self.assertClose(q, y)
-            q = z.__div__(x)
-            self.assertClose(q, y)
-            q = z.__truediv__(x)
-            self.assertClose(q, y)
-        if y != 0:
-            q = z / y
-            self.assertClose(q, x)
-            q = z.__div__(y)
-            self.assertClose(q, x)
-            q = z.__truediv__(y)
-            self.assertClose(q, x)
-
-    def test_div(self):
-        simple_real = [float(i) for i in xrange(-5, 6)]
-        simple_complex = [complex(x, y) for x in simple_real for y in simple_real]
-        for x in simple_complex:
-            for y in simple_complex:
-                self.check_div(x, y)
-
-        # A naive complex division algorithm (such as in 2.0) is very prone to
-        # nonsense errors for these (overflows and underflows).
-        self.check_div(complex(1e200, 1e200), 1+0j)
-        self.check_div(complex(1e-200, 1e-200), 1+0j)
-
-        # Just for fun.
-        for i in xrange(100):
-            self.check_div(complex(random(), random()),
-                           complex(random(), random()))
-
-        self.assertRaises(ZeroDivisionError, complex.__div__, 1+1j, 0+0j)
-        # FIXME: The following currently crashes on Alpha
-        # self.assertRaises(OverflowError, pow, 1e200+1j, 1e200+1j)
-
-    def test_truediv(self):
-        self.assertAlmostEqual(complex.__truediv__(2+0j, 1+1j), 1-1j)
-        self.assertRaises(ZeroDivisionError, complex.__truediv__, 1+1j, 0+0j)
-
-    def test_floordiv(self):
-        self.assertAlmostEqual(complex.__floordiv__(3+0j, 1.5+0j), 2)
-        self.assertRaises(ZeroDivisionError, complex.__floordiv__, 3+0j, 0+0j)
-
-    def test_coerce(self):
-        self.assertRaises(OverflowError, complex.__coerce__, 1+1j, 1L<<10000)
-
-    def test_no_implicit_coerce(self):
-        # Python 2.7 removed implicit coercion from the complex type
-        class A(object):
-            def __coerce__(self, other):
-                raise RuntimeError
-            __hash__ = None
-            def __cmp__(self, other):
-                return -1
-
-        a = A()
-        self.assertRaises(TypeError, lambda: a + 2.0j)
-        self.assertTrue(a < 2.0j)
-
-    def test_richcompare(self):
-        self.assertEqual(complex.__eq__(1+1j, 1L<<10000), False)
-        self.assertEqual(complex.__lt__(1+1j, None), NotImplemented)
-        self.assertIs(complex.__eq__(1+1j, 1+1j), True)
-        self.assertIs(complex.__eq__(1+1j, 2+2j), False)
-        self.assertIs(complex.__ne__(1+1j, 1+1j), False)
-        self.assertIs(complex.__ne__(1+1j, 2+2j), True)
-        self.assertRaises(TypeError, complex.__lt__, 1+1j, 2+2j)
-        self.assertRaises(TypeError, complex.__le__, 1+1j, 2+2j)
-        self.assertRaises(TypeError, complex.__gt__, 1+1j, 2+2j)
-        self.assertRaises(TypeError, complex.__ge__, 1+1j, 2+2j)
-
-    def test_richcompare_boundaries(self):
-        def check(n, deltas, is_equal, imag = 0.0):
-            for delta in deltas:
-                i = n + delta
-                z = complex(i, imag)
-                self.assertIs(complex.__eq__(z, i), is_equal(delta))
-                self.assertIs(complex.__ne__(z, i), not is_equal(delta))
-        # For IEEE-754 doubles the following should hold:
-        #    x in [2 ** (52 + i), 2 ** (53 + i + 1)] -> x mod 2 ** i == 0
-        # where the interval is representable, of course.
-        for i in range(1, 10):
-            pow = 52 + i
-            mult = 2 ** i
-            check(2 ** pow, range(1, 101), lambda delta: delta % mult == 0)
-            check(2 ** pow, range(1, 101), lambda delta: False, float(i))
-        check(2 ** 53, range(-100, 0), lambda delta: True)
-
-    def test_mod(self):
-        self.assertRaises(ZeroDivisionError, (1+1j).__mod__, 0+0j)
-
-        a = 3.33+4.43j
-        try:
-            a % 0
-        except ZeroDivisionError:
-            pass
-        else:
-            self.fail("modulo parama can't be 0")
-
-    def test_divmod(self):
-        self.assertRaises(ZeroDivisionError, divmod, 1+1j, 0+0j)
-
-    def test_pow(self):
-        self.assertAlmostEqual(pow(1+1j, 0+0j), 1.0)
-        self.assertAlmostEqual(pow(0+0j, 2+0j), 0.0)
-        self.assertRaises(ZeroDivisionError, pow, 0+0j, 1j)
-        self.assertAlmostEqual(pow(1j, -1), 1/1j)
-        self.assertAlmostEqual(pow(1j, 200), 1)
-        self.assertRaises(ValueError, pow, 1+1j, 1+1j, 1+1j)
-
-        a = 3.33+4.43j
-        self.assertEqual(a ** 0j, 1)
-        self.assertEqual(a ** 0.+0.j, 1)
-
-        self.assertEqual(3j ** 0j, 1)
-        self.assertEqual(3j ** 0, 1)
-
-        try:
-            0j ** a
-        except ZeroDivisionError:
-            pass
-        else:
-            self.fail("should fail 0.0 to negative or complex power")
-
-        try:
-            0j ** (3-2j)
-        except ZeroDivisionError:
-            pass
-        else:
-            self.fail("should fail 0.0 to negative or complex power")
-
-        # The following is used to exercise certain code paths
-        self.assertEqual(a ** 105, a ** 105)
-        self.assertEqual(a ** -105, a ** -105)
-        self.assertEqual(a ** -30, a ** -30)
-
-        self.assertEqual(0.0j ** 0, 1)
-
-        b = 5.1+2.3j
-        self.assertRaises(ValueError, pow, a, b, 0)
-
-    def test_boolcontext(self):
-        for i in xrange(100):
-            self.assertTrue(complex(random() + 1e-6, random() + 1e-6))
-        self.assertTrue(not complex(0.0, 0.0))
-
-    def test_conjugate(self):
-        self.assertClose(complex(5.3, 9.8).conjugate(), 5.3-9.8j)
-
-    def test_constructor(self):
-        class OS:
-            def __init__(self, value): self.value = value
-            def __complex__(self): return self.value
-        class NS(object):
-            def __init__(self, value): self.value = value
-            def __complex__(self): return self.value
-        self.assertEqual(complex(OS(1+10j)), 1+10j)
-        self.assertEqual(complex(NS(1+10j)), 1+10j)
-        self.assertRaises(TypeError, complex, OS(None))
-        self.assertRaises(TypeError, complex, NS(None))
-
-        self.assertAlmostEqual(complex("1+10j"), 1+10j)
-        self.assertAlmostEqual(complex(10), 10+0j)
-        self.assertAlmostEqual(complex(10.0), 10+0j)
-        self.assertAlmostEqual(complex(10L), 10+0j)
-        self.assertAlmostEqual(complex(10+0j), 10+0j)
-        self.assertAlmostEqual(complex(1,10), 1+10j)
-        self.assertAlmostEqual(complex(1,10L), 1+10j)
-        self.assertAlmostEqual(complex(1,10.0), 1+10j)
-        self.assertAlmostEqual(complex(1L,10), 1+10j)
-        self.assertAlmostEqual(complex(1L,10L), 1+10j)
-        self.assertAlmostEqual(complex(1L,10.0), 1+10j)
-        self.assertAlmostEqual(complex(1.0,10), 1+10j)
-        self.assertAlmostEqual(complex(1.0,10L), 1+10j)
-        self.assertAlmostEqual(complex(1.0,10.0), 1+10j)
-        self.assertAlmostEqual(complex(3.14+0j), 3.14+0j)
-        self.assertAlmostEqual(complex(3.14), 3.14+0j)
-        self.assertAlmostEqual(complex(314), 314.0+0j)
-        self.assertAlmostEqual(complex(314L), 314.0+0j)
-        self.assertAlmostEqual(complex(3.14+0j, 0j), 3.14+0j)
-        self.assertAlmostEqual(complex(3.14, 0.0), 3.14+0j)
-        self.assertAlmostEqual(complex(314, 0), 314.0+0j)
-        self.assertAlmostEqual(complex(314L, 0L), 314.0+0j)
-        self.assertAlmostEqual(complex(0j, 3.14j), -3.14+0j)
-        self.assertAlmostEqual(complex(0.0, 3.14j), -3.14+0j)
-        self.assertAlmostEqual(complex(0j, 3.14), 3.14j)
-        self.assertAlmostEqual(complex(0.0, 3.14), 3.14j)
-        self.assertAlmostEqual(complex("1"), 1+0j)
-        self.assertAlmostEqual(complex("1j"), 1j)
-        self.assertAlmostEqual(complex(),  0)
-        self.assertAlmostEqual(complex("-1"), -1)
-        self.assertAlmostEqual(complex("+1"), +1)
-        self.assertAlmostEqual(complex("(1+2j)"), 1+2j)
-        self.assertAlmostEqual(complex("(1.3+2.2j)"), 1.3+2.2j)
-        self.assertAlmostEqual(complex("3.14+1J"), 3.14+1j)
-        self.assertAlmostEqual(complex(" ( +3.14-6J )"), 3.14-6j)
-        self.assertAlmostEqual(complex(" ( +3.14-J )"), 3.14-1j)
-        self.assertAlmostEqual(complex(" ( +3.14+j )"), 3.14+1j)
-        self.assertAlmostEqual(complex("J"), 1j)
-        self.assertAlmostEqual(complex("( j )"), 1j)
-        self.assertAlmostEqual(complex("+J"), 1j)
-        self.assertAlmostEqual(complex("( -j)"), -1j)
-        self.assertAlmostEqual(complex('1e-500'), 0.0 + 0.0j)
-        self.assertAlmostEqual(complex('-1e-500j'), 0.0 - 0.0j)
-        self.assertAlmostEqual(complex('-1e-500+1e-500j'), -0.0 + 0.0j)
-
-        class complex2(complex): pass
-        self.assertAlmostEqual(complex(complex2(1+1j)), 1+1j)
-        self.assertAlmostEqual(complex(real=17, imag=23), 17+23j)
-        self.assertAlmostEqual(complex(real=17+23j), 17+23j)
-        self.assertAlmostEqual(complex(real=17+23j, imag=23), 17+46j)
-        self.assertAlmostEqual(complex(real=1+2j, imag=3+4j), -3+5j)
-
-        # check that the sign of a zero in the real or imaginary part
-        # is preserved when constructing from two floats.  (These checks
-        # are harmless on systems without support for signed zeros.)
-        def split_zeros(x):
-            """Function that produces different results for 0. and -0."""
-            return atan2(x, -1.)
-
-        self.assertEqual(split_zeros(complex(1., 0.).imag), split_zeros(0.))
-        self.assertEqual(split_zeros(complex(1., -0.).imag), split_zeros(-0.))
-        self.assertEqual(split_zeros(complex(0., 1.).real), split_zeros(0.))
-        self.assertEqual(split_zeros(complex(-0., 1.).real), split_zeros(-0.))
-
-        c = 3.14 + 1j
-        self.assertTrue(complex(c) is c)
-        del c
-
-        self.assertRaises(TypeError, complex, "1", "1")
-        self.assertRaises(TypeError, complex, 1, "1")
-
-        if test_support.have_unicode:
-            self.assertEqual(complex(unicode("  3.14+J  ")), 3.14+1j)
-
-        # SF bug 543840:  complex(string) accepts strings with \0
-        # Fixed in 2.3.
-        self.assertRaises(ValueError, complex, '1+1j\0j')
-
-        self.assertRaises(TypeError, int, 5+3j)
-        self.assertRaises(TypeError, long, 5+3j)
-        self.assertRaises(TypeError, float, 5+3j)
-        self.assertRaises(ValueError, complex, "")
-        self.assertRaises(TypeError, complex, None)
-        self.assertRaises(ValueError, complex, "\0")
-        self.assertRaises(ValueError, complex, "3\09")
-        self.assertRaises(TypeError, complex, "1", "2")
-        self.assertRaises(TypeError, complex, "1", 42)
-        self.assertRaises(TypeError, complex, 1, "2")
-        self.assertRaises(ValueError, complex, "1+")
-        self.assertRaises(ValueError, complex, "1+1j+1j")
-        self.assertRaises(ValueError, complex, "--")
-        self.assertRaises(ValueError, complex, "(1+2j")
-        self.assertRaises(ValueError, complex, "1+2j)")
-        self.assertRaises(ValueError, complex, "1+(2j)")
-        self.assertRaises(ValueError, complex, "(1+2j)123")
-        if test_support.have_unicode:
-            self.assertRaises(ValueError, complex, unicode("x"))
-        self.assertRaises(ValueError, complex, "1j+2")
-        self.assertRaises(ValueError, complex, "1e1ej")
-        self.assertRaises(ValueError, complex, "1e++1ej")
-        self.assertRaises(ValueError, complex, ")1+2j(")
-        # the following three are accepted by Python 2.6
-        self.assertRaises(ValueError, complex, "1..1j")
-        self.assertRaises(ValueError, complex, "1.11.1j")
-        self.assertRaises(ValueError, complex, "1e1.1j")
-
-        if test_support.have_unicode:
-            # check that complex accepts long unicode strings
-            self.assertEqual(type(complex(unicode("1"*500))), complex)
-
-        class EvilExc(Exception):
-            pass
-
-        class evilcomplex:
-            def __complex__(self):
-                raise EvilExc
-
-        self.assertRaises(EvilExc, complex, evilcomplex())
-
-        class float2:
-            def __init__(self, value):
-                self.value = value
-            def __float__(self):
-                return self.value
-
-        self.assertAlmostEqual(complex(float2(42.)), 42)
-        self.assertAlmostEqual(complex(real=float2(17.), imag=float2(23.)), 17+23j)
-        self.assertRaises(TypeError, complex, float2(None))
-
-        class complex0(complex):
-            """Test usage of __complex__() when inheriting from 'complex'"""
-            def __complex__(self):
-                return 42j
-
-        class complex1(complex):
-            """Test usage of __complex__() with a __new__() method"""
-            def __new__(self, value=0j):
-                return complex.__new__(self, 2*value)
-            def __complex__(self):
-                return self
-
-        class complex2(complex):
-            """Make sure that __complex__() calls fail if anything other than a
-            complex is returned"""
-            def __complex__(self):
-                return None
-
-        self.assertAlmostEqual(complex(complex0(1j)), 42j)
-        self.assertAlmostEqual(complex(complex1(1j)), 2j)
-        self.assertRaises(TypeError, complex, complex2(1j))
-
-    def test_subclass(self):
-        class xcomplex(complex):
-            def __add__(self,other):
-                return xcomplex(complex(self) + other)
-            __radd__ = __add__
-
-            def __sub__(self,other):
-                return xcomplex(complex(self) + other)
-            __rsub__ = __sub__
-
-            def __mul__(self,other):
-                return xcomplex(complex(self) * other)
-            __rmul__ = __mul__
-
-            def __div__(self,other):
-                return xcomplex(complex(self) / other)
-
-            def __rdiv__(self,other):
-                return xcomplex(other / complex(self))
-
-            __truediv__ = __div__
-            __rtruediv__ = __rdiv__
-
-            def __floordiv__(self,other):
-                return xcomplex(complex(self) // other)
-
-            def __rfloordiv__(self,other):
-                return xcomplex(other // complex(self))
-
-            def __pow__(self,other):
-                return xcomplex(complex(self) ** other)
-
-            def __rpow__(self,other):
-                return xcomplex(other ** complex(self) )
-
-            def __mod__(self,other):
-                return xcomplex(complex(self) % other)
-
-            def __rmod__(self,other):
-                return xcomplex(other % complex(self))
-
-        infix_binops = ('+', '-', '*', '**', '%', '//', '/')
-        xcomplex_values = (xcomplex(1), xcomplex(123.0),
-                           xcomplex(-10+2j), xcomplex(3+187j),
-                           xcomplex(3-78j))
-        test_values = (1, 123.0, 10-19j, xcomplex(1+2j),
-                       xcomplex(1+87j), xcomplex(10+90j))
-
-        for op in infix_binops:
-            for x in xcomplex_values:
-                for y in test_values:
-                    a = 'x %s y' % op
-                    b = 'y %s x' % op
-                    self.assertTrue(type(eval(a)) is type(eval(b)) is xcomplex)
-
-    def test_hash(self):
-        for x in xrange(-30, 30):
-            self.assertEqual(hash(x), hash(complex(x, 0)))
-            x /= 3.0    # now check against floating point
-            self.assertEqual(hash(x), hash(complex(x, 0.)))
-
-    def test_abs(self):
-        nums = [complex(x/3., y/7.) for x in xrange(-9,9) for y in xrange(-9,9)]
-        for num in nums:
-            self.assertAlmostEqual((num.real**2 + num.imag**2)  ** 0.5, abs(num))
-
-    def test_repr(self):
-        self.assertEqual(repr(1+6j), '(1+6j)')
-        self.assertEqual(repr(1-6j), '(1-6j)')
-
-        self.assertNotEqual(repr(-(1+0j)), '(-1+-0j)')
-
-        self.assertEqual(1-6j,complex(repr(1-6j)))
-        self.assertEqual(1+6j,complex(repr(1+6j)))
-        self.assertEqual(-6j,complex(repr(-6j)))
-        self.assertEqual(6j,complex(repr(6j)))
-
-        self.assertEqual(repr(complex(1., INF)), "(1+infj)")
-        self.assertEqual(repr(complex(1., -INF)), "(1-infj)")
-        self.assertEqual(repr(complex(INF, 1)), "(inf+1j)")
-        self.assertEqual(repr(complex(-INF, INF)), "(-inf+infj)")
-        self.assertEqual(repr(complex(NAN, 1)), "(nan+1j)")
-        self.assertEqual(repr(complex(1, NAN)), "(1+nanj)")
-        self.assertEqual(repr(complex(NAN, NAN)), "(nan+nanj)")
-
-        self.assertEqual(repr(complex(0, INF)), "infj")
-        self.assertEqual(repr(complex(0, -INF)), "-infj")
-        self.assertEqual(repr(complex(0, NAN)), "nanj")
-
-    def test_neg(self):
-        self.assertEqual(-(1+6j), -1-6j)
-
-    def test_file(self):
-        a = 3.33+4.43j
-        b = 5.1+2.3j
-
-        fo = None
-        try:
-            fo = open(test_support.TESTFN, "wb")
-            print >>fo, a, b
-            fo.close()
-            fo = open(test_support.TESTFN, "rb")
-            self.assertEqual(fo.read(), "%s %s\n" % (a, b))
-        finally:
-            if (fo is not None) and (not fo.closed):
-                fo.close()
-            test_support.unlink(test_support.TESTFN)
-
-    def test_getnewargs(self):
-        self.assertEqual((1+2j).__getnewargs__(), (1.0, 2.0))
-        self.assertEqual((1-2j).__getnewargs__(), (1.0, -2.0))
-        self.assertEqual((2j).__getnewargs__(), (0.0, 2.0))
-        self.assertEqual((-0j).__getnewargs__(), (0.0, -0.0))
-        self.assertEqual(complex(0, INF).__getnewargs__(), (0.0, INF))
-        self.assertEqual(complex(INF, 0).__getnewargs__(), (INF, 0.0))
-
-    if float.__getformat__("double").startswith("IEEE"):
-        def test_plus_minus_0j(self):
-            # test that -0j and 0j literals are not identified
-            z1, z2 = 0j, -0j
-            self.assertEqual(atan2(z1.imag, -1.), atan2(0., -1.))
-            self.assertEqual(atan2(z2.imag, -1.), atan2(-0., -1.))
-
-    @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"),
-                         "test requires IEEE 754 doubles")
-    def test_overflow(self):
-        self.assertEqual(complex("1e500"), complex(INF, 0.0))
-        self.assertEqual(complex("-1e500j"), complex(0.0, -INF))
-        self.assertEqual(complex("-1e500+1.8e308j"), complex(-INF, INF))
-
-    @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"),
-                         "test requires IEEE 754 doubles")
-    def test_repr_roundtrip(self):
-        vals = [0.0, 1e-500, 1e-315, 1e-200, 0.0123, 3.1415, 1e50, INF, NAN]
-        vals += [-v for v in vals]
-
-        # complex(repr(z)) should recover z exactly, even for complex
-        # numbers involving an infinity, nan, or negative zero
-        for x in vals:
-            for y in vals:
-                z = complex(x, y)
-                roundtrip = complex(repr(z))
-                self.assertFloatsAreIdentical(z.real, roundtrip.real)
-                self.assertFloatsAreIdentical(z.imag, roundtrip.imag)
-
-        # if we predefine some constants, then eval(repr(z)) should
-        # also work, except that it might change the sign of zeros
-        inf, nan = float('inf'), float('nan')
-        infj, nanj = complex(0.0, inf), complex(0.0, nan)
-        for x in vals:
-            for y in vals:
-                z = complex(x, y)
-                roundtrip = eval(repr(z))
-                # adding 0.0 has no effect beside changing -0.0 to 0.0
-                self.assertFloatsAreIdentical(0.0 + z.real,
-                                              0.0 + roundtrip.real)
-                self.assertFloatsAreIdentical(0.0 + z.imag,
-                                              0.0 + roundtrip.imag)
-
-    def test_format(self):
-        # empty format string is same as str()
-        self.assertEqual(format(1+3j, ''), str(1+3j))
-        self.assertEqual(format(1.5+3.5j, ''), str(1.5+3.5j))
-        self.assertEqual(format(3j, ''), str(3j))
-        self.assertEqual(format(3.2j, ''), str(3.2j))
-        self.assertEqual(format(3+0j, ''), str(3+0j))
-        self.assertEqual(format(3.2+0j, ''), str(3.2+0j))
-
-        # empty presentation type should still be analogous to str,
-        # even when format string is nonempty (issue #5920).
-        self.assertEqual(format(3.2+0j, '-'), str(3.2+0j))
-        self.assertEqual(format(3.2+0j, '<'), str(3.2+0j))
-        z = 4/7. - 100j/7.
-        self.assertEqual(format(z, ''), str(z))
-        self.assertEqual(format(z, '-'), str(z))
-        self.assertEqual(format(z, '<'), str(z))
-        self.assertEqual(format(z, '10'), str(z))
-        z = complex(0.0, 3.0)
-        self.assertEqual(format(z, ''), str(z))
-        self.assertEqual(format(z, '-'), str(z))
-        self.assertEqual(format(z, '<'), str(z))
-        self.assertEqual(format(z, '2'), str(z))
-        z = complex(-0.0, 2.0)
-        self.assertEqual(format(z, ''), str(z))
-        self.assertEqual(format(z, '-'), str(z))
-        self.assertEqual(format(z, '<'), str(z))
-        self.assertEqual(format(z, '3'), str(z))
-
-        self.assertEqual(format(1+3j, 'g'), '1+3j')
-        self.assertEqual(format(3j, 'g'), '0+3j')
-        self.assertEqual(format(1.5+3.5j, 'g'), '1.5+3.5j')
-
-        self.assertEqual(format(1.5+3.5j, '+g'), '+1.5+3.5j')
-        self.assertEqual(format(1.5-3.5j, '+g'), '+1.5-3.5j')
-        self.assertEqual(format(1.5-3.5j, '-g'), '1.5-3.5j')
-        self.assertEqual(format(1.5+3.5j, ' g'), ' 1.5+3.5j')
-        self.assertEqual(format(1.5-3.5j, ' g'), ' 1.5-3.5j')
-        self.assertEqual(format(-1.5+3.5j, ' g'), '-1.5+3.5j')
-        self.assertEqual(format(-1.5-3.5j, ' g'), '-1.5-3.5j')
-
-        self.assertEqual(format(-1.5-3.5e-20j, 'g'), '-1.5-3.5e-20j')
-        self.assertEqual(format(-1.5-3.5j, 'f'), '-1.500000-3.500000j')
-        self.assertEqual(format(-1.5-3.5j, 'F'), '-1.500000-3.500000j')
-        self.assertEqual(format(-1.5-3.5j, 'e'), '-1.500000e+00-3.500000e+00j')
-        self.assertEqual(format(-1.5-3.5j, '.2e'), '-1.50e+00-3.50e+00j')
-        self.assertEqual(format(-1.5-3.5j, '.2E'), '-1.50E+00-3.50E+00j')
-        self.assertEqual(format(-1.5e10-3.5e5j, '.2G'), '-1.5E+10-3.5E+05j')
-
-        self.assertEqual(format(1.5+3j, '<20g'),  '1.5+3j              ')
-        self.assertEqual(format(1.5+3j, '*<20g'), '1.5+3j**************')
-        self.assertEqual(format(1.5+3j, '>20g'),  '              1.5+3j')
-        self.assertEqual(format(1.5+3j, '^20g'),  '       1.5+3j       ')
-        self.assertEqual(format(1.5+3j, '<20'),   '(1.5+3j)            ')
-        self.assertEqual(format(1.5+3j, '>20'),   '            (1.5+3j)')
-        self.assertEqual(format(1.5+3j, '^20'),   '      (1.5+3j)      ')
-        self.assertEqual(format(1.123-3.123j, '^20.2'), '     (1.1-3.1j)     ')
-
-        self.assertEqual(format(1.5+3j, '20.2f'), '          1.50+3.00j')
-        self.assertEqual(format(1.5+3j, '>20.2f'), '          1.50+3.00j')
-        self.assertEqual(format(1.5+3j, '<20.2f'), '1.50+3.00j          ')
-        self.assertEqual(format(1.5e20+3j, '<20.2f'), '150000000000000000000.00+3.00j')
-        self.assertEqual(format(1.5e20+3j, '>40.2f'), '          150000000000000000000.00+3.00j')
-        self.assertEqual(format(1.5e20+3j, '^40,.2f'), '  150,000,000,000,000,000,000.00+3.00j  ')
-        self.assertEqual(format(1.5e21+3j, '^40,.2f'), ' 1,500,000,000,000,000,000,000.00+3.00j ')
-        self.assertEqual(format(1.5e21+3000j, ',.2f'), '1,500,000,000,000,000,000,000.00+3,000.00j')
-
-        # alternate is invalid
-        self.assertRaises(ValueError, (1.5+0.5j).__format__, '#f')
-
-        # zero padding is invalid
-        self.assertRaises(ValueError, (1.5+0.5j).__format__, '010f')
-
-        # '=' alignment is invalid
-        self.assertRaises(ValueError, (1.5+3j).__format__, '=20')
-
-        # integer presentation types are an error
-        for t in 'bcdoxX':
-            self.assertRaises(ValueError, (1.5+0.5j).__format__, t)
-
-        # make sure everything works in ''.format()
-        self.assertEqual('*{0:.3f}*'.format(3.14159+2.71828j), '*3.142+2.718j*')
-
-        # issue 3382: 'f' and 'F' with inf's and nan's
-        self.assertEqual('{0:f}'.format(INF+0j), 'inf+0.000000j')
-        self.assertEqual('{0:F}'.format(INF+0j), 'INF+0.000000j')
-        self.assertEqual('{0:f}'.format(-INF+0j), '-inf+0.000000j')
-        self.assertEqual('{0:F}'.format(-INF+0j), '-INF+0.000000j')
-        self.assertEqual('{0:f}'.format(complex(INF, INF)), 'inf+infj')
-        self.assertEqual('{0:F}'.format(complex(INF, INF)), 'INF+INFj')
-        self.assertEqual('{0:f}'.format(complex(INF, -INF)), 'inf-infj')
-        self.assertEqual('{0:F}'.format(complex(INF, -INF)), 'INF-INFj')
-        self.assertEqual('{0:f}'.format(complex(-INF, INF)), '-inf+infj')
-        self.assertEqual('{0:F}'.format(complex(-INF, INF)), '-INF+INFj')
-        self.assertEqual('{0:f}'.format(complex(-INF, -INF)), '-inf-infj')
-        self.assertEqual('{0:F}'.format(complex(-INF, -INF)), '-INF-INFj')
-
-        self.assertEqual('{0:f}'.format(complex(NAN, 0)), 'nan+0.000000j')
-        self.assertEqual('{0:F}'.format(complex(NAN, 0)), 'NAN+0.000000j')
-        self.assertEqual('{0:f}'.format(complex(NAN, NAN)), 'nan+nanj')
-        self.assertEqual('{0:F}'.format(complex(NAN, NAN)), 'NAN+NANj')
-
-def test_main():
-    with test_support.check_warnings(("complex divmod.., // and % are "
-                                      "deprecated", DeprecationWarning)):
-        test_support.run_unittest(ComplexTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_complex_args.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_complex_args.py
deleted file mode 100644
index 6c232be..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_complex_args.py
+++ /dev/null
@@ -1,118 +0,0 @@
-
-import unittest
-from test import test_support
-import textwrap
-
-class ComplexArgsTestCase(unittest.TestCase):
-
-    def check(self, func, expected, *args):
-        self.assertEqual(func(*args), expected)
-
-    # These functions are tested below as lambdas too.  If you add a
-    # function test, also add a similar lambda test.
-
-    # Functions are wrapped in "exec" statements in order to
-    # silence Py3k warnings.
-
-    def test_func_parens_no_unpacking(self):
-        exec textwrap.dedent("""
-        def f(((((x))))): return x
-        self.check(f, 1, 1)
-        # Inner parens are elided, same as: f(x,)
-        def f(((x)),): return x
-        self.check(f, 2, 2)
-        """)
-
-    def test_func_1(self):
-        exec textwrap.dedent("""
-        def f(((((x),)))): return x
-        self.check(f, 3, (3,))
-        def f(((((x)),))): return x
-        self.check(f, 4, (4,))
-        def f(((((x))),)): return x
-        self.check(f, 5, (5,))
-        def f(((x),)): return x
-        self.check(f, 6, (6,))
-        """)
-
-    def test_func_2(self):
-        exec textwrap.dedent("""
-        def f(((((x)),),)): return x
-        self.check(f, 2, ((2,),))
-        """)
-
-    def test_func_3(self):
-        exec textwrap.dedent("""
-        def f((((((x)),),),)): return x
-        self.check(f, 3, (((3,),),))
-        """)
-
-    def test_func_complex(self):
-        exec textwrap.dedent("""
-        def f((((((x)),),),), a, b, c): return x, a, b, c
-        self.check(f, (3, 9, 8, 7), (((3,),),), 9, 8, 7)
-
-        def f(((((((x)),)),),), a, b, c): return x, a, b, c
-        self.check(f, (3, 9, 8, 7), (((3,),),), 9, 8, 7)
-
-        def f(a, b, c, ((((((x)),)),),)): return a, b, c, x
-        self.check(f, (9, 8, 7, 3), 9, 8, 7, (((3,),),))
-        """)
-
-    # Duplicate the tests above, but for lambda.  If you add a lambda test,
-    # also add a similar function test above.
-
-    def test_lambda_parens_no_unpacking(self):
-        exec textwrap.dedent("""
-        f = lambda (((((x))))): x
-        self.check(f, 1, 1)
-        # Inner parens are elided, same as: f(x,)
-        f = lambda ((x)),: x
-        self.check(f, 2, 2)
-        """)
-
-    def test_lambda_1(self):
-        exec textwrap.dedent("""
-        f = lambda (((((x),)))): x
-        self.check(f, 3, (3,))
-        f = lambda (((((x)),))): x
-        self.check(f, 4, (4,))
-        f = lambda (((((x))),)): x
-        self.check(f, 5, (5,))
-        f = lambda (((x),)): x
-        self.check(f, 6, (6,))
-        """)
-
-    def test_lambda_2(self):
-        exec textwrap.dedent("""
-        f = lambda (((((x)),),)): x
-        self.check(f, 2, ((2,),))
-        """)
-
-    def test_lambda_3(self):
-        exec textwrap.dedent("""
-        f = lambda ((((((x)),),),)): x
-        self.check(f, 3, (((3,),),))
-        """)
-
-    def test_lambda_complex(self):
-        exec textwrap.dedent("""
-        f = lambda (((((x)),),),), a, b, c: (x, a, b, c)
-        self.check(f, (3, 9, 8, 7), (((3,),),), 9, 8, 7)
-
-        f = lambda ((((((x)),)),),), a, b, c: (x, a, b, c)
-        self.check(f, (3, 9, 8, 7), (((3,),),), 9, 8, 7)
-
-        f = lambda a, b, c, ((((((x)),)),),): (a, b, c, x)
-        self.check(f, (9, 8, 7, 3), 9, 8, 7, (((3,),),))
-        """)
-
-
-def test_main():
-    with test_support.check_py3k_warnings(
-            ("tuple parameter unpacking has been removed", SyntaxWarning),
-            ("parenthesized argument names are invalid", SyntaxWarning)):
-        test_support.run_unittest(ComplexArgsTestCase)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_contains.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_contains.py
deleted file mode 100644
index 960b6c2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_contains.py
+++ /dev/null
@@ -1,111 +0,0 @@
-from test.test_support import have_unicode, run_unittest
-import unittest
-
-
-class base_set:
-    def __init__(self, el):
-        self.el = el
-
-class set(base_set):
-    def __contains__(self, el):
-        return self.el == el
-
-class seq(base_set):
-    def __getitem__(self, n):
-        return [self.el][n]
-
-
-class TestContains(unittest.TestCase):
-    def test_common_tests(self):
-        a = base_set(1)
-        b = set(1)
-        c = seq(1)
-        self.assertIn(1, b)
-        self.assertNotIn(0, b)
-        self.assertIn(1, c)
-        self.assertNotIn(0, c)
-        self.assertRaises(TypeError, lambda: 1 in a)
-        self.assertRaises(TypeError, lambda: 1 not in a)
-
-        # test char in string
-        self.assertIn('c', 'abc')
-        self.assertNotIn('d', 'abc')
-
-        self.assertIn('', '')
-        self.assertIn('', 'abc')
-
-        self.assertRaises(TypeError, lambda: None in 'abc')
-
-    if have_unicode:
-        def test_char_in_unicode(self):
-            self.assertIn('c', unicode('abc'))
-            self.assertNotIn('d', unicode('abc'))
-
-            self.assertIn('', unicode(''))
-            self.assertIn(unicode(''), '')
-            self.assertIn(unicode(''), unicode(''))
-            self.assertIn('', unicode('abc'))
-            self.assertIn(unicode(''), 'abc')
-            self.assertIn(unicode(''), unicode('abc'))
-
-            self.assertRaises(TypeError, lambda: None in unicode('abc'))
-
-            # test Unicode char in Unicode
-            self.assertIn(unicode('c'), unicode('abc'))
-            self.assertNotIn(unicode('d'), unicode('abc'))
-
-            # test Unicode char in string
-            self.assertIn(unicode('c'), 'abc')
-            self.assertNotIn(unicode('d'), 'abc')
-
-    def test_builtin_sequence_types(self):
-        # a collection of tests on builtin sequence types
-        a = range(10)
-        for i in a:
-            self.assertIn(i, a)
-        self.assertNotIn(16, a)
-        self.assertNotIn(a, a)
-
-        a = tuple(a)
-        for i in a:
-            self.assertIn(i, a)
-        self.assertNotIn(16, a)
-        self.assertNotIn(a, a)
-
-        class Deviant1:
-            """Behaves strangely when compared
-
-            This class is designed to make sure that the contains code
-            works when the list is modified during the check.
-            """
-            aList = range(15)
-            def __cmp__(self, other):
-                if other == 12:
-                    self.aList.remove(12)
-                    self.aList.remove(13)
-                    self.aList.remove(14)
-                return 1
-
-        self.assertNotIn(Deviant1(), Deviant1.aList)
-
-        class Deviant2:
-            """Behaves strangely when compared
-
-            This class raises an exception during comparison.  That in
-            turn causes the comparison to fail with a TypeError.
-            """
-            def __cmp__(self, other):
-                if other == 4:
-                    raise RuntimeError, "gotcha"
-
-        try:
-            self.assertNotIn(Deviant2(), a)
-        except TypeError:
-            pass
-
-
-def test_main():
-    run_unittest(TestContains)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_contextlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_contextlib.py
deleted file mode 100644
index bd94486..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_contextlib.py
+++ /dev/null
@@ -1,326 +0,0 @@
-"""Unit tests for contextlib.py, and other context managers."""
-
-import sys
-import tempfile
-import unittest
-from contextlib import *  # Tests __all__
-from test import test_support
-try:
-    import threading
-except ImportError:
-    threading = None
-
-
-class ContextManagerTestCase(unittest.TestCase):
-
-    def test_contextmanager_plain(self):
-        state = []
-        @contextmanager
-        def woohoo():
-            state.append(1)
-            yield 42
-            state.append(999)
-        with woohoo() as x:
-            self.assertEqual(state, [1])
-            self.assertEqual(x, 42)
-            state.append(x)
-        self.assertEqual(state, [1, 42, 999])
-
-    def test_contextmanager_finally(self):
-        state = []
-        @contextmanager
-        def woohoo():
-            state.append(1)
-            try:
-                yield 42
-            finally:
-                state.append(999)
-        with self.assertRaises(ZeroDivisionError):
-            with woohoo() as x:
-                self.assertEqual(state, [1])
-                self.assertEqual(x, 42)
-                state.append(x)
-                raise ZeroDivisionError()
-        self.assertEqual(state, [1, 42, 999])
-
-    def test_contextmanager_no_reraise(self):
-        @contextmanager
-        def whee():
-            yield
-        ctx = whee()
-        ctx.__enter__()
-        # Calling __exit__ should not result in an exception
-        self.assertFalse(ctx.__exit__(TypeError, TypeError("foo"), None))
-
-    def test_contextmanager_trap_yield_after_throw(self):
-        @contextmanager
-        def whoo():
-            try:
-                yield
-            except:
-                yield
-        ctx = whoo()
-        ctx.__enter__()
-        self.assertRaises(
-            RuntimeError, ctx.__exit__, TypeError, TypeError("foo"), None
-        )
-
-    def test_contextmanager_except(self):
-        state = []
-        @contextmanager
-        def woohoo():
-            state.append(1)
-            try:
-                yield 42
-            except ZeroDivisionError, e:
-                state.append(e.args[0])
-                self.assertEqual(state, [1, 42, 999])
-        with woohoo() as x:
-            self.assertEqual(state, [1])
-            self.assertEqual(x, 42)
-            state.append(x)
-            raise ZeroDivisionError(999)
-        self.assertEqual(state, [1, 42, 999])
-
-    def _create_contextmanager_attribs(self):
-        def attribs(**kw):
-            def decorate(func):
-                for k,v in kw.items():
-                    setattr(func,k,v)
-                return func
-            return decorate
-        @contextmanager
-        @attribs(foo='bar')
-        def baz(spam):
-            """Whee!"""
-        return baz
-
-    def test_contextmanager_attribs(self):
-        baz = self._create_contextmanager_attribs()
-        self.assertEqual(baz.__name__,'baz')
-        self.assertEqual(baz.foo, 'bar')
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_contextmanager_doc_attrib(self):
-        baz = self._create_contextmanager_attribs()
-        self.assertEqual(baz.__doc__, "Whee!")
-
-class NestedTestCase(unittest.TestCase):
-
-    # XXX This needs more work
-
-    def test_nested(self):
-        @contextmanager
-        def a():
-            yield 1
-        @contextmanager
-        def b():
-            yield 2
-        @contextmanager
-        def c():
-            yield 3
-        with nested(a(), b(), c()) as (x, y, z):
-            self.assertEqual(x, 1)
-            self.assertEqual(y, 2)
-            self.assertEqual(z, 3)
-
-    def test_nested_cleanup(self):
-        state = []
-        @contextmanager
-        def a():
-            state.append(1)
-            try:
-                yield 2
-            finally:
-                state.append(3)
-        @contextmanager
-        def b():
-            state.append(4)
-            try:
-                yield 5
-            finally:
-                state.append(6)
-        with self.assertRaises(ZeroDivisionError):
-            with nested(a(), b()) as (x, y):
-                state.append(x)
-                state.append(y)
-                1 // 0
-        self.assertEqual(state, [1, 4, 2, 5, 6, 3])
-
-    def test_nested_right_exception(self):
-        @contextmanager
-        def a():
-            yield 1
-        class b(object):
-            def __enter__(self):
-                return 2
-            def __exit__(self, *exc_info):
-                try:
-                    raise Exception()
-                except:
-                    pass
-        with self.assertRaises(ZeroDivisionError):
-            with nested(a(), b()) as (x, y):
-                1 // 0
-        self.assertEqual((x, y), (1, 2))
-
-    def test_nested_b_swallows(self):
-        @contextmanager
-        def a():
-            yield
-        @contextmanager
-        def b():
-            try:
-                yield
-            except:
-                # Swallow the exception
-                pass
-        try:
-            with nested(a(), b()):
-                1 // 0
-        except ZeroDivisionError:
-            self.fail("Didn't swallow ZeroDivisionError")
-
-    def test_nested_break(self):
-        @contextmanager
-        def a():
-            yield
-        state = 0
-        while True:
-            state += 1
-            with nested(a(), a()):
-                break
-            state += 10
-        self.assertEqual(state, 1)
-
-    def test_nested_continue(self):
-        @contextmanager
-        def a():
-            yield
-        state = 0
-        while state < 3:
-            state += 1
-            with nested(a(), a()):
-                continue
-            state += 10
-        self.assertEqual(state, 3)
-
-    def test_nested_return(self):
-        @contextmanager
-        def a():
-            try:
-                yield
-            except:
-                pass
-        def foo():
-            with nested(a(), a()):
-                return 1
-            return 10
-        self.assertEqual(foo(), 1)
-
-class ClosingTestCase(unittest.TestCase):
-
-    # XXX This needs more work
-
-    def test_closing(self):
-        state = []
-        class C:
-            def close(self):
-                state.append(1)
-        x = C()
-        self.assertEqual(state, [])
-        with closing(x) as y:
-            self.assertEqual(x, y)
-        self.assertEqual(state, [1])
-
-    def test_closing_error(self):
-        state = []
-        class C:
-            def close(self):
-                state.append(1)
-        x = C()
-        self.assertEqual(state, [])
-        with self.assertRaises(ZeroDivisionError):
-            with closing(x) as y:
-                self.assertEqual(x, y)
-                1 // 0
-        self.assertEqual(state, [1])
-
-class FileContextTestCase(unittest.TestCase):
-
-    def testWithOpen(self):
-        tfn = tempfile.mktemp()
-        try:
-            f = None
-            with open(tfn, "w") as f:
-                self.assertFalse(f.closed)
-                f.write("Booh\n")
-            self.assertTrue(f.closed)
-            f = None
-            with self.assertRaises(ZeroDivisionError):
-                with open(tfn, "r") as f:
-                    self.assertFalse(f.closed)
-                    self.assertEqual(f.read(), "Booh\n")
-                    1 // 0
-            self.assertTrue(f.closed)
-        finally:
-            test_support.unlink(tfn)
-
-@unittest.skipUnless(threading, 'Threading required for this test.')
-class LockContextTestCase(unittest.TestCase):
-
-    def boilerPlate(self, lock, locked):
-        self.assertFalse(locked())
-        with lock:
-            self.assertTrue(locked())
-        self.assertFalse(locked())
-        with self.assertRaises(ZeroDivisionError):
-            with lock:
-                self.assertTrue(locked())
-                1 // 0
-        self.assertFalse(locked())
-
-    def testWithLock(self):
-        lock = threading.Lock()
-        self.boilerPlate(lock, lock.locked)
-
-    def testWithRLock(self):
-        lock = threading.RLock()
-        self.boilerPlate(lock, lock._is_owned)
-
-    def testWithCondition(self):
-        lock = threading.Condition()
-        def locked():
-            return lock._is_owned()
-        self.boilerPlate(lock, locked)
-
-    def testWithSemaphore(self):
-        lock = threading.Semaphore()
-        def locked():
-            if lock.acquire(False):
-                lock.release()
-                return False
-            else:
-                return True
-        self.boilerPlate(lock, locked)
-
-    def testWithBoundedSemaphore(self):
-        lock = threading.BoundedSemaphore()
-        def locked():
-            if lock.acquire(False):
-                lock.release()
-                return False
-            else:
-                return True
-        self.boilerPlate(lock, locked)
-
-# This is needed to make the test actually run under regrtest.py!
-def test_main():
-    with test_support.check_warnings(("With-statements now directly support "
-                                      "multiple context managers",
-                                      DeprecationWarning)):
-        test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cookie.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cookie.py
deleted file mode 100644
index 4a09f7d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cookie.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# Simple test suite for Cookie.py
-
-from test.test_support import run_unittest, run_doctest, check_warnings
-import unittest
-import Cookie
-
-
-class CookieTests(unittest.TestCase):
-    # Currently this only tests SimpleCookie
-    def test_basic(self):
-        cases = [
-            { 'data': 'chips=ahoy; vienna=finger',
-              'dict': {'chips':'ahoy', 'vienna':'finger'},
-              'repr': "<SimpleCookie: chips='ahoy' vienna='finger'>",
-              'output': 'Set-Cookie: chips=ahoy\nSet-Cookie: vienna=finger',
-            },
-
-            { 'data': 'keebler="E=mc2; L=\\"Loves\\"; fudge=\\012;"',
-              'dict': {'keebler' : 'E=mc2; L="Loves"; fudge=\012;'},
-              'repr': '''<SimpleCookie: keebler='E=mc2; L="Loves"; fudge=\\n;'>''',
-              'output': 'Set-Cookie: keebler="E=mc2; L=\\"Loves\\"; fudge=\\012;"',
-            },
-
-            # Check illegal cookies that have an '=' char in an unquoted value
-            { 'data': 'keebler=E=mc2',
-              'dict': {'keebler' : 'E=mc2'},
-              'repr': "<SimpleCookie: keebler='E=mc2'>",
-              'output': 'Set-Cookie: keebler=E=mc2',
-            }
-        ]
-
-        for case in cases:
-            C = Cookie.SimpleCookie()
-            C.load(case['data'])
-            self.assertEqual(repr(C), case['repr'])
-            self.assertEqual(C.output(sep='\n'), case['output'])
-            for k, v in sorted(case['dict'].iteritems()):
-                self.assertEqual(C[k].value, v)
-
-    def test_load(self):
-        C = Cookie.SimpleCookie()
-        C.load('Customer="WILE_E_COYOTE"; Version=1; Path=/acme')
-
-        self.assertEqual(C['Customer'].value, 'WILE_E_COYOTE')
-        self.assertEqual(C['Customer']['version'], '1')
-        self.assertEqual(C['Customer']['path'], '/acme')
-
-        self.assertEqual(C.output(['path']),
-            'Set-Cookie: Customer="WILE_E_COYOTE"; Path=/acme')
-        self.assertEqual(C.js_output(), r"""
-        <script type="text/javascript">
-        <!-- begin hiding
-        document.cookie = "Customer=\"WILE_E_COYOTE\"; Path=/acme; Version=1";
-        // end hiding -->
-        </script>
-        """)
-        self.assertEqual(C.js_output(['path']), r"""
-        <script type="text/javascript">
-        <!-- begin hiding
-        document.cookie = "Customer=\"WILE_E_COYOTE\"; Path=/acme";
-        // end hiding -->
-        </script>
-        """)
-
-        # loading 'expires'
-        C = Cookie.SimpleCookie()
-        C.load('Customer="W"; expires=Wed, 01-Jan-2010 00:00:00 GMT')
-        self.assertEqual(C['Customer']['expires'],
-                         'Wed, 01-Jan-2010 00:00:00 GMT')
-        C = Cookie.SimpleCookie()
-        C.load('Customer="W"; expires=Wed, 01-Jan-98 00:00:00 GMT')
-        self.assertEqual(C['Customer']['expires'],
-                         'Wed, 01-Jan-98 00:00:00 GMT')
-
-    def test_extended_encode(self):
-        # Issue 9824: some browsers don't follow the standard; we now
-        # encode , and ; to keep them from tripping up.
-        C = Cookie.SimpleCookie()
-        C['val'] = "some,funky;stuff"
-        self.assertEqual(C.output(['val']),
-            'Set-Cookie: val="some\\054funky\\073stuff"')
-
-    def test_quoted_meta(self):
-        # Try cookie with quoted meta-data
-        C = Cookie.SimpleCookie()
-        C.load('Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"')
-        self.assertEqual(C['Customer'].value, 'WILE_E_COYOTE')
-        self.assertEqual(C['Customer']['version'], '1')
-        self.assertEqual(C['Customer']['path'], '/acme')
-
-def test_main():
-    run_unittest(CookieTests)
-    with check_warnings(('.+Cookie class is insecure; do not use it',
-                         DeprecationWarning)):
-        run_doctest(Cookie)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cookielib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cookielib.py
deleted file mode 100644
index 319e9e8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cookielib.py
+++ /dev/null
@@ -1,1762 +0,0 @@
-# -*- coding: latin-1 -*-
-"""Tests for cookielib.py."""
-
-import cookielib
-import os
-import re
-import time
-
-from unittest import TestCase
-
-from test import test_support
-
-
-class DateTimeTests(TestCase):
-
-    def test_time2isoz(self):
-        from cookielib import time2isoz
-
-        base = 1019227000
-        day = 24*3600
-        self.assertEqual(time2isoz(base), "2002-04-19 14:36:40Z")
-        self.assertEqual(time2isoz(base+day), "2002-04-20 14:36:40Z")
-        self.assertEqual(time2isoz(base+2*day), "2002-04-21 14:36:40Z")
-        self.assertEqual(time2isoz(base+3*day), "2002-04-22 14:36:40Z")
-
-        az = time2isoz()
-        bz = time2isoz(500000)
-        for text in (az, bz):
-            self.assertTrue(re.search(r"^\d{4}-\d\d-\d\d \d\d:\d\d:\d\dZ$", text),
-                         "bad time2isoz format: %s %s" % (az, bz))
-
-    def test_http2time(self):
-        from cookielib import http2time
-
-        def parse_date(text):
-            return time.gmtime(http2time(text))[:6]
-
-        self.assertEqual(parse_date("01 Jan 2001"), (2001, 1, 1, 0, 0, 0.0))
-
-        # this test will break around year 2070
-        self.assertEqual(parse_date("03-Feb-20"), (2020, 2, 3, 0, 0, 0.0))
-
-        # this test will break around year 2048
-        self.assertEqual(parse_date("03-Feb-98"), (1998, 2, 3, 0, 0, 0.0))
-
-    def test_http2time_formats(self):
-        from cookielib import http2time, time2isoz
-
-        # test http2time for supported dates.  Test cases with 2 digit year
-        # will probably break in year 2044.
-        tests = [
-         'Thu, 03 Feb 1994 00:00:00 GMT',  # proposed new HTTP format
-         'Thursday, 03-Feb-94 00:00:00 GMT',  # old rfc850 HTTP format
-         'Thursday, 03-Feb-1994 00:00:00 GMT',  # broken rfc850 HTTP format
-
-         '03 Feb 1994 00:00:00 GMT',  # HTTP format (no weekday)
-         '03-Feb-94 00:00:00 GMT',  # old rfc850 (no weekday)
-         '03-Feb-1994 00:00:00 GMT',  # broken rfc850 (no weekday)
-         '03-Feb-1994 00:00 GMT',  # broken rfc850 (no weekday, no seconds)
-         '03-Feb-1994 00:00',  # broken rfc850 (no weekday, no seconds, no tz)
-
-         '03-Feb-94',  # old rfc850 HTTP format (no weekday, no time)
-         '03-Feb-1994',  # broken rfc850 HTTP format (no weekday, no time)
-         '03 Feb 1994',  # proposed new HTTP format (no weekday, no time)
-
-         # A few tests with extra space at various places
-         '  03   Feb   1994  0:00  ',
-         '  03-Feb-1994  ',
-        ]
-
-        test_t = 760233600  # assume broken POSIX counting of seconds
-        result = time2isoz(test_t)
-        expected = "1994-02-03 00:00:00Z"
-        self.assertEqual(result, expected,
-                         "%s  =>  '%s' (%s)" % (test_t, result, expected))
-
-        for s in tests:
-            t = http2time(s)
-            t2 = http2time(s.lower())
-            t3 = http2time(s.upper())
-
-            self.assertTrue(t == t2 == t3 == test_t,
-                         "'%s'  =>  %s, %s, %s (%s)" % (s, t, t2, t3, test_t))
-
-    def test_http2time_garbage(self):
-        from cookielib import http2time
-
-        for test in [
-            '',
-            'Garbage',
-            'Mandag 16. September 1996',
-            '01-00-1980',
-            '01-13-1980',
-            '00-01-1980',
-            '32-01-1980',
-            '01-01-1980 25:00:00',
-            '01-01-1980 00:61:00',
-            '01-01-1980 00:00:62',
-            ]:
-            self.assertTrue(http2time(test) is None,
-                         "http2time(%s) is not None\n"
-                         "http2time(test) %s" % (test, http2time(test))
-                         )
-
-
-class HeaderTests(TestCase):
-
-    def test_parse_ns_headers_expires(self):
-        from cookielib import parse_ns_headers
-
-        # quotes should be stripped
-        expected = [[('foo', 'bar'), ('expires', 2209069412L), ('version', '0')]]
-        for hdr in [
-            'foo=bar; expires=01 Jan 2040 22:23:32 GMT',
-            'foo=bar; expires="01 Jan 2040 22:23:32 GMT"',
-            ]:
-            self.assertEqual(parse_ns_headers([hdr]), expected)
-
-    def test_parse_ns_headers_version(self):
-        from cookielib import parse_ns_headers
-
-        # quotes should be stripped
-        expected = [[('foo', 'bar'), ('version', '1')]]
-        for hdr in [
-            'foo=bar; version="1"',
-            'foo=bar; Version="1"',
-            ]:
-            self.assertEqual(parse_ns_headers([hdr]), expected)
-
-    def test_parse_ns_headers_special_names(self):
-        # names such as 'expires' are not special in first name=value pair
-        # of Set-Cookie: header
-        from cookielib import parse_ns_headers
-
-        # Cookie with name 'expires'
-        hdr = 'expires=01 Jan 2040 22:23:32 GMT'
-        expected = [[("expires", "01 Jan 2040 22:23:32 GMT"), ("version", "0")]]
-        self.assertEqual(parse_ns_headers([hdr]), expected)
-
-    def test_join_header_words(self):
-        from cookielib import join_header_words
-
-        joined = join_header_words([[("foo", None), ("bar", "baz")]])
-        self.assertEqual(joined, "foo; bar=baz")
-
-        self.assertEqual(join_header_words([[]]), "")
-
-    def test_split_header_words(self):
-        from cookielib import split_header_words
-
-        tests = [
-            ("foo", [[("foo", None)]]),
-            ("foo=bar", [[("foo", "bar")]]),
-            ("   foo   ", [[("foo", None)]]),
-            ("   foo=   ", [[("foo", "")]]),
-            ("   foo=", [[("foo", "")]]),
-            ("   foo=   ; ", [[("foo", "")]]),
-            ("   foo=   ; bar= baz ", [[("foo", ""), ("bar", "baz")]]),
-            ("foo=bar bar=baz", [[("foo", "bar"), ("bar", "baz")]]),
-            # doesn't really matter if this next fails, but it works ATM
-            ("foo= bar=baz", [[("foo", "bar=baz")]]),
-            ("foo=bar;bar=baz", [[("foo", "bar"), ("bar", "baz")]]),
-            ('foo bar baz', [[("foo", None), ("bar", None), ("baz", None)]]),
-            ("a, b, c", [[("a", None)], [("b", None)], [("c", None)]]),
-            (r'foo; bar=baz, spam=, foo="\,\;\"", bar= ',
-             [[("foo", None), ("bar", "baz")],
-              [("spam", "")], [("foo", ',;"')], [("bar", "")]]),
-            ]
-
-        for arg, expect in tests:
-            try:
-                result = split_header_words([arg])
-            except:
-                import traceback, StringIO
-                f = StringIO.StringIO()
-                traceback.print_exc(None, f)
-                result = "(error -- traceback follows)\n\n%s" % f.getvalue()
-            self.assertEqual(result,  expect, """
-When parsing: '%s'
-Expected:     '%s'
-Got:          '%s'
-""" % (arg, expect, result))
-
-    def test_roundtrip(self):
-        from cookielib import split_header_words, join_header_words
-
-        tests = [
-            ("foo", "foo"),
-            ("foo=bar", "foo=bar"),
-            ("   foo   ", "foo"),
-            ("foo=", 'foo=""'),
-            ("foo=bar bar=baz", "foo=bar; bar=baz"),
-            ("foo=bar;bar=baz", "foo=bar; bar=baz"),
-            ('foo bar baz', "foo; bar; baz"),
-            (r'foo="\"" bar="\\"', r'foo="\""; bar="\\"'),
-            ('foo,,,bar', 'foo, bar'),
-            ('foo=bar,bar=baz', 'foo=bar, bar=baz'),
-
-            ('text/html; charset=iso-8859-1',
-             'text/html; charset="iso-8859-1"'),
-
-            ('foo="bar"; port="80,81"; discard, bar=baz',
-             'foo=bar; port="80,81"; discard, bar=baz'),
-
-            (r'Basic realm="\"foo\\\\bar\""',
-             r'Basic; realm="\"foo\\\\bar\""')
-            ]
-
-        for arg, expect in tests:
-            input = split_header_words([arg])
-            res = join_header_words(input)
-            self.assertEqual(res, expect, """
-When parsing: '%s'
-Expected:     '%s'
-Got:          '%s'
-Input was:    '%s'
-""" % (arg, expect, res, input))
-
-
-class FakeResponse:
-    def __init__(self, headers=[], url=None):
-        """
-        headers: list of RFC822-style 'Key: value' strings
-        """
-        import mimetools, StringIO
-        f = StringIO.StringIO("\n".join(headers))
-        self._headers = mimetools.Message(f)
-        self._url = url
-    def info(self): return self._headers
-
-def interact_2965(cookiejar, url, *set_cookie_hdrs):
-    return _interact(cookiejar, url, set_cookie_hdrs, "Set-Cookie2")
-
-def interact_netscape(cookiejar, url, *set_cookie_hdrs):
-    return _interact(cookiejar, url, set_cookie_hdrs, "Set-Cookie")
-
-def _interact(cookiejar, url, set_cookie_hdrs, hdr_name):
-    """Perform a single request / response cycle, returning Cookie: header."""
-    from urllib2 import Request
-    req = Request(url)
-    cookiejar.add_cookie_header(req)
-    cookie_hdr = req.get_header("Cookie", "")
-    headers = []
-    for hdr in set_cookie_hdrs:
-        headers.append("%s: %s" % (hdr_name, hdr))
-    res = FakeResponse(headers, url)
-    cookiejar.extract_cookies(res, req)
-    return cookie_hdr
-
-
-class FileCookieJarTests(TestCase):
-    def test_lwp_valueless_cookie(self):
-        # cookies with no value should be saved and loaded consistently
-        from cookielib import LWPCookieJar
-        filename = test_support.TESTFN
-        c = LWPCookieJar()
-        interact_netscape(c, "http://www.acme.com/", 'boo')
-        self.assertEqual(c._cookies["www.acme.com"]["/"]["boo"].value, None)
-        try:
-            c.save(filename, ignore_discard=True)
-            c = LWPCookieJar()
-            c.load(filename, ignore_discard=True)
-        finally:
-            try: os.unlink(filename)
-            except OSError: pass
-        self.assertEqual(c._cookies["www.acme.com"]["/"]["boo"].value, None)
-
-    def test_bad_magic(self):
-        from cookielib import LWPCookieJar, MozillaCookieJar, LoadError
-        # IOErrors (eg. file doesn't exist) are allowed to propagate
-        filename = test_support.TESTFN
-        for cookiejar_class in LWPCookieJar, MozillaCookieJar:
-            c = cookiejar_class()
-            try:
-                c.load(filename="for this test to work, a file with this "
-                                "filename should not exist")
-            except IOError, exc:
-                # exactly IOError, not LoadError
-                self.assertEqual(exc.__class__, IOError)
-            else:
-                self.fail("expected IOError for invalid filename")
-        # Invalid contents of cookies file (eg. bad magic string)
-        # causes a LoadError.
-        try:
-            f = open(filename, "w")
-            f.write("oops\n")
-            for cookiejar_class in LWPCookieJar, MozillaCookieJar:
-                c = cookiejar_class()
-                self.assertRaises(LoadError, c.load, filename)
-        finally:
-            try: os.unlink(filename)
-            except OSError: pass
-
-class CookieTests(TestCase):
-    # XXX
-    # Get rid of string comparisons where not actually testing str / repr.
-    # .clear() etc.
-    # IP addresses like 50 (single number, no dot) and domain-matching
-    #  functions (and is_HDN)?  See draft RFC 2965 errata.
-    # Strictness switches
-    # is_third_party()
-    # unverifiability / third-party blocking
-    # Netscape cookies work the same as RFC 2965 with regard to port.
-    # Set-Cookie with negative max age.
-    # If turn RFC 2965 handling off, Set-Cookie2 cookies should not clobber
-    #  Set-Cookie cookies.
-    # Cookie2 should be sent if *any* cookies are not V1 (ie. V0 OR V2 etc.).
-    # Cookies (V1 and V0) with no expiry date should be set to be discarded.
-    # RFC 2965 Quoting:
-    #  Should accept unquoted cookie-attribute values?  check errata draft.
-    #   Which are required on the way in and out?
-    #  Should always return quoted cookie-attribute values?
-    # Proper testing of when RFC 2965 clobbers Netscape (waiting for errata).
-    # Path-match on return (same for V0 and V1).
-    # RFC 2965 acceptance and returning rules
-    #  Set-Cookie2 without version attribute is rejected.
-
-    # Netscape peculiarities list from Ronald Tschalar.
-    # The first two still need tests, the rest are covered.
-## - Quoting: only quotes around the expires value are recognized as such
-##   (and yes, some folks quote the expires value); quotes around any other
-##   value are treated as part of the value.
-## - White space: white space around names and values is ignored
-## - Default path: if no path parameter is given, the path defaults to the
-##   path in the request-uri up to, but not including, the last '/'. Note
-##   that this is entirely different from what the spec says.
-## - Commas and other delimiters: Netscape just parses until the next ';'.
-##   This means it will allow commas etc inside values (and yes, both
-##   commas and equals are commonly appear in the cookie value). This also
-##   means that if you fold multiple Set-Cookie header fields into one,
-##   comma-separated list, it'll be a headache to parse (at least my head
-##   starts hurting everytime I think of that code).
-## - Expires: You'll get all sorts of date formats in the expires,
-##   including emtpy expires attributes ("expires="). Be as flexible as you
-##   can, and certainly don't expect the weekday to be there; if you can't
-##   parse it, just ignore it and pretend it's a session cookie.
-## - Domain-matching: Netscape uses the 2-dot rule for _all_ domains, not
-##   just the 7 special TLD's listed in their spec. And folks rely on
-##   that...
-
-    def test_domain_return_ok(self):
-        # test optimization: .domain_return_ok() should filter out most
-        # domains in the CookieJar before we try to access them (because that
-        # may require disk access -- in particular, with MSIECookieJar)
-        # This is only a rough check for performance reasons, so it's not too
-        # critical as long as it's sufficiently liberal.
-        import cookielib, urllib2
-        pol = cookielib.DefaultCookiePolicy()
-        for url, domain, ok in [
-            ("http://foo.bar.com/", "blah.com", False),
-            ("http://foo.bar.com/", "rhubarb.blah.com", False),
-            ("http://foo.bar.com/", "rhubarb.foo.bar.com", False),
-            ("http://foo.bar.com/", ".foo.bar.com", True),
-            ("http://foo.bar.com/", "foo.bar.com", True),
-            ("http://foo.bar.com/", ".bar.com", True),
-            ("http://foo.bar.com/", "com", True),
-            ("http://foo.com/", "rhubarb.foo.com", False),
-            ("http://foo.com/", ".foo.com", True),
-            ("http://foo.com/", "foo.com", True),
-            ("http://foo.com/", "com", True),
-            ("http://foo/", "rhubarb.foo", False),
-            ("http://foo/", ".foo", True),
-            ("http://foo/", "foo", True),
-            ("http://foo/", "foo.local", True),
-            ("http://foo/", ".local", True),
-            ]:
-            request = urllib2.Request(url)
-            r = pol.domain_return_ok(domain, request)
-            if ok: self.assertTrue(r)
-            else: self.assertTrue(not r)
-
-    def test_missing_value(self):
-        from cookielib import MozillaCookieJar, lwp_cookie_str
-
-        # missing = sign in Cookie: header is regarded by Mozilla as a missing
-        # name, and by cookielib as a missing value
-        filename = test_support.TESTFN
-        c = MozillaCookieJar(filename)
-        interact_netscape(c, "http://www.acme.com/", 'eggs')
-        interact_netscape(c, "http://www.acme.com/", '"spam"; path=/foo/')
-        cookie = c._cookies["www.acme.com"]["/"]["eggs"]
-        self.assertTrue(cookie.value is None)
-        self.assertEqual(cookie.name, "eggs")
-        cookie = c._cookies["www.acme.com"]['/foo/']['"spam"']
-        self.assertTrue(cookie.value is None)
-        self.assertEqual(cookie.name, '"spam"')
-        self.assertEqual(lwp_cookie_str(cookie), (
-            r'"spam"; path="/foo/"; domain="www.acme.com"; '
-            'path_spec; discard; version=0'))
-        old_str = repr(c)
-        c.save(ignore_expires=True, ignore_discard=True)
-        try:
-            c = MozillaCookieJar(filename)
-            c.revert(ignore_expires=True, ignore_discard=True)
-        finally:
-            os.unlink(c.filename)
-        # cookies unchanged apart from lost info re. whether path was specified
-        self.assertEqual(
-            repr(c),
-            re.sub("path_specified=%s" % True, "path_specified=%s" % False,
-                   old_str)
-            )
-        self.assertEqual(interact_netscape(c, "http://www.acme.com/foo/"),
-                         '"spam"; eggs')
-
-    def test_rfc2109_handling(self):
-        # RFC 2109 cookies are handled as RFC 2965 or Netscape cookies,
-        # dependent on policy settings
-        from cookielib import CookieJar, DefaultCookiePolicy
-
-        for rfc2109_as_netscape, rfc2965, version in [
-            # default according to rfc2965 if not explicitly specified
-            (None, False, 0),
-            (None, True, 1),
-            # explicit rfc2109_as_netscape
-            (False, False, None),  # version None here means no cookie stored
-            (False, True, 1),
-            (True, False, 0),
-            (True, True, 0),
-            ]:
-            policy = DefaultCookiePolicy(
-                rfc2109_as_netscape=rfc2109_as_netscape,
-                rfc2965=rfc2965)
-            c = CookieJar(policy)
-            interact_netscape(c, "http://www.example.com/", "ni=ni; Version=1")
-            try:
-                cookie = c._cookies["www.example.com"]["/"]["ni"]
-            except KeyError:
-                self.assertTrue(version is None)  # didn't expect a stored cookie
-            else:
-                self.assertEqual(cookie.version, version)
-                # 2965 cookies are unaffected
-                interact_2965(c, "http://www.example.com/",
-                              "foo=bar; Version=1")
-                if rfc2965:
-                    cookie2965 = c._cookies["www.example.com"]["/"]["foo"]
-                    self.assertEqual(cookie2965.version, 1)
-
-    def test_ns_parser(self):
-        from cookielib import CookieJar, DEFAULT_HTTP_PORT
-
-        c = CookieJar()
-        interact_netscape(c, "http://www.acme.com/",
-                          'spam=eggs; DoMain=.acme.com; port; blArgh="feep"')
-        interact_netscape(c, "http://www.acme.com/", 'ni=ni; port=80,8080')
-        interact_netscape(c, "http://www.acme.com:80/", 'nini=ni')
-        interact_netscape(c, "http://www.acme.com:80/", 'foo=bar; expires=')
-        interact_netscape(c, "http://www.acme.com:80/", 'spam=eggs; '
-                          'expires="Foo Bar 25 33:22:11 3022"')
-
-        cookie = c._cookies[".acme.com"]["/"]["spam"]
-        self.assertEqual(cookie.domain, ".acme.com")
-        self.assertTrue(cookie.domain_specified)
-        self.assertEqual(cookie.port, DEFAULT_HTTP_PORT)
-        self.assertTrue(not cookie.port_specified)
-        # case is preserved
-        self.assertTrue(cookie.has_nonstandard_attr("blArgh") and
-                     not cookie.has_nonstandard_attr("blargh"))
-
-        cookie = c._cookies["www.acme.com"]["/"]["ni"]
-        self.assertEqual(cookie.domain, "www.acme.com")
-        self.assertTrue(not cookie.domain_specified)
-        self.assertEqual(cookie.port, "80,8080")
-        self.assertTrue(cookie.port_specified)
-
-        cookie = c._cookies["www.acme.com"]["/"]["nini"]
-        self.assertTrue(cookie.port is None)
-        self.assertTrue(not cookie.port_specified)
-
-        # invalid expires should not cause cookie to be dropped
-        foo = c._cookies["www.acme.com"]["/"]["foo"]
-        spam = c._cookies["www.acme.com"]["/"]["foo"]
-        self.assertTrue(foo.expires is None)
-        self.assertTrue(spam.expires is None)
-
-    def test_ns_parser_special_names(self):
-        # names such as 'expires' are not special in first name=value pair
-        # of Set-Cookie: header
-        from cookielib import CookieJar
-
-        c = CookieJar()
-        interact_netscape(c, "http://www.acme.com/", 'expires=eggs')
-        interact_netscape(c, "http://www.acme.com/", 'version=eggs; spam=eggs')
-
-        cookies = c._cookies["www.acme.com"]["/"]
-        self.assertTrue('expires' in cookies)
-        self.assertTrue('version' in cookies)
-
-    def test_expires(self):
-        from cookielib import time2netscape, CookieJar
-
-        # if expires is in future, keep cookie...
-        c = CookieJar()
-        future = time2netscape(time.time()+3600)
-        interact_netscape(c, "http://www.acme.com/", 'spam="bar"; expires=%s' %
-                          future)
-        self.assertEqual(len(c), 1)
-        now = time2netscape(time.time()-1)
-        # ... and if in past or present, discard it
-        interact_netscape(c, "http://www.acme.com/", 'foo="eggs"; expires=%s' %
-                          now)
-        h = interact_netscape(c, "http://www.acme.com/")
-        self.assertEqual(len(c), 1)
-        self.assertTrue('spam="bar"' in h and "foo" not in h)
-
-        # max-age takes precedence over expires, and zero max-age is request to
-        # delete both new cookie and any old matching cookie
-        interact_netscape(c, "http://www.acme.com/", 'eggs="bar"; expires=%s' %
-                          future)
-        interact_netscape(c, "http://www.acme.com/", 'bar="bar"; expires=%s' %
-                          future)
-        self.assertEqual(len(c), 3)
-        interact_netscape(c, "http://www.acme.com/", 'eggs="bar"; '
-                          'expires=%s; max-age=0' % future)
-        interact_netscape(c, "http://www.acme.com/", 'bar="bar"; '
-                          'max-age=0; expires=%s' % future)
-        h = interact_netscape(c, "http://www.acme.com/")
-        self.assertEqual(len(c), 1)
-
-        # test expiry at end of session for cookies with no expires attribute
-        interact_netscape(c, "http://www.rhubarb.net/", 'whum="fizz"')
-        self.assertEqual(len(c), 2)
-        c.clear_session_cookies()
-        self.assertEqual(len(c), 1)
-        self.assertIn('spam="bar"', h)
-
-        # XXX RFC 2965 expiry rules (some apply to V0 too)
-
-    def test_default_path(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-
-        # RFC 2965
-        pol = DefaultCookiePolicy(rfc2965=True)
-
-        c = CookieJar(pol)
-        interact_2965(c, "http://www.acme.com/", 'spam="bar"; Version="1"')
-        self.assertIn("/", c._cookies["www.acme.com"])
-
-        c = CookieJar(pol)
-        interact_2965(c, "http://www.acme.com/blah", 'eggs="bar"; Version="1"')
-        self.assertIn("/", c._cookies["www.acme.com"])
-
-        c = CookieJar(pol)
-        interact_2965(c, "http://www.acme.com/blah/rhubarb",
-                      'eggs="bar"; Version="1"')
-        self.assertIn("/blah/", c._cookies["www.acme.com"])
-
-        c = CookieJar(pol)
-        interact_2965(c, "http://www.acme.com/blah/rhubarb/",
-                      'eggs="bar"; Version="1"')
-        self.assertIn("/blah/rhubarb/", c._cookies["www.acme.com"])
-
-        # Netscape
-
-        c = CookieJar()
-        interact_netscape(c, "http://www.acme.com/", 'spam="bar"')
-        self.assertIn("/", c._cookies["www.acme.com"])
-
-        c = CookieJar()
-        interact_netscape(c, "http://www.acme.com/blah", 'eggs="bar"')
-        self.assertIn("/", c._cookies["www.acme.com"])
-
-        c = CookieJar()
-        interact_netscape(c, "http://www.acme.com/blah/rhubarb", 'eggs="bar"')
-        self.assertIn("/blah", c._cookies["www.acme.com"])
-
-        c = CookieJar()
-        interact_netscape(c, "http://www.acme.com/blah/rhubarb/", 'eggs="bar"')
-        self.assertIn("/blah/rhubarb", c._cookies["www.acme.com"])
-
-    def test_default_path_with_query(self):
-        cj = cookielib.CookieJar()
-        uri = "http://example.com/?spam/eggs"
-        value = 'eggs="bar"'
-        interact_netscape(cj, uri, value)
-        # default path does not include query, so is "/", not "/?spam"
-        self.assertIn("/", cj._cookies["example.com"])
-        # cookie is sent back to the same URI
-        self.assertEqual(interact_netscape(cj, uri), value)
-
-    def test_escape_path(self):
-        from cookielib import escape_path
-        cases = [
-            # quoted safe
-            ("/foo%2f/bar", "/foo%2F/bar"),
-            ("/foo%2F/bar", "/foo%2F/bar"),
-            # quoted %
-            ("/foo%%/bar", "/foo%%/bar"),
-            # quoted unsafe
-            ("/fo%19o/bar", "/fo%19o/bar"),
-            ("/fo%7do/bar", "/fo%7Do/bar"),
-            # unquoted safe
-            ("/foo/bar&", "/foo/bar&"),
-            ("/foo//bar", "/foo//bar"),
-            ("\176/foo/bar", "\176/foo/bar"),
-            # unquoted unsafe
-            ("/foo\031/bar", "/foo%19/bar"),
-            ("/\175foo/bar", "/%7Dfoo/bar"),
-            # unicode
-            (u"/foo/bar\uabcd", "/foo/bar%EA%AF%8D"),  # UTF-8 encoded
-            ]
-        for arg, result in cases:
-            self.assertEqual(escape_path(arg), result)
-
-    def test_request_path(self):
-        from urllib2 import Request
-        from cookielib import request_path
-        # with parameters
-        req = Request("http://www.example.com/rheum/rhaponticum;"
-                      "foo=bar;sing=song?apples=pears&spam=eggs#ni")
-        self.assertEqual(request_path(req),
-                         "/rheum/rhaponticum;foo=bar;sing=song")
-        # without parameters
-        req = Request("http://www.example.com/rheum/rhaponticum?"
-                      "apples=pears&spam=eggs#ni")
-        self.assertEqual(request_path(req), "/rheum/rhaponticum")
-        # missing final slash
-        req = Request("http://www.example.com")
-        self.assertEqual(request_path(req), "/")
-
-    def test_request_port(self):
-        from urllib2 import Request
-        from cookielib import request_port, DEFAULT_HTTP_PORT
-        req = Request("http://www.acme.com:1234/",
-                      headers={"Host": "www.acme.com:4321"})
-        self.assertEqual(request_port(req), "1234")
-        req = Request("http://www.acme.com/",
-                      headers={"Host": "www.acme.com:4321"})
-        self.assertEqual(request_port(req), DEFAULT_HTTP_PORT)
-
-    def test_request_host(self):
-        from urllib2 import Request
-        from cookielib import request_host
-        # this request is illegal (RFC2616, 14.2.3)
-        req = Request("http://1.1.1.1/",
-                      headers={"Host": "www.acme.com:80"})
-        # libwww-perl wants this response, but that seems wrong (RFC 2616,
-        # section 5.2, point 1., and RFC 2965 section 1, paragraph 3)
-        #self.assertEqual(request_host(req), "www.acme.com")
-        self.assertEqual(request_host(req), "1.1.1.1")
-        req = Request("http://www.acme.com/",
-                      headers={"Host": "irrelevant.com"})
-        self.assertEqual(request_host(req), "www.acme.com")
-        # not actually sure this one is valid Request object, so maybe should
-        # remove test for no host in url in request_host function?
-        req = Request("/resource.html",
-                      headers={"Host": "www.acme.com"})
-        self.assertEqual(request_host(req), "www.acme.com")
-        # port shouldn't be in request-host
-        req = Request("http://www.acme.com:2345/resource.html",
-                      headers={"Host": "www.acme.com:5432"})
-        self.assertEqual(request_host(req), "www.acme.com")
-
-    def test_is_HDN(self):
-        from cookielib import is_HDN
-        self.assertTrue(is_HDN("foo.bar.com"))
-        self.assertTrue(is_HDN("1foo2.3bar4.5com"))
-        self.assertTrue(not is_HDN("192.168.1.1"))
-        self.assertTrue(not is_HDN(""))
-        self.assertTrue(not is_HDN("."))
-        self.assertTrue(not is_HDN(".foo.bar.com"))
-        self.assertTrue(not is_HDN("..foo"))
-        self.assertTrue(not is_HDN("foo."))
-
-    def test_reach(self):
-        from cookielib import reach
-        self.assertEqual(reach("www.acme.com"), ".acme.com")
-        self.assertEqual(reach("acme.com"), "acme.com")
-        self.assertEqual(reach("acme.local"), ".local")
-        self.assertEqual(reach(".local"), ".local")
-        self.assertEqual(reach(".com"), ".com")
-        self.assertEqual(reach("."), ".")
-        self.assertEqual(reach(""), "")
-        self.assertEqual(reach("192.168.0.1"), "192.168.0.1")
-
-    def test_domain_match(self):
-        from cookielib import domain_match, user_domain_match
-        self.assertTrue(domain_match("192.168.1.1", "192.168.1.1"))
-        self.assertTrue(not domain_match("192.168.1.1", ".168.1.1"))
-        self.assertTrue(domain_match("x.y.com", "x.Y.com"))
-        self.assertTrue(domain_match("x.y.com", ".Y.com"))
-        self.assertTrue(not domain_match("x.y.com", "Y.com"))
-        self.assertTrue(domain_match("a.b.c.com", ".c.com"))
-        self.assertTrue(not domain_match(".c.com", "a.b.c.com"))
-        self.assertTrue(domain_match("example.local", ".local"))
-        self.assertTrue(not domain_match("blah.blah", ""))
-        self.assertTrue(not domain_match("", ".rhubarb.rhubarb"))
-        self.assertTrue(domain_match("", ""))
-
-        self.assertTrue(user_domain_match("acme.com", "acme.com"))
-        self.assertTrue(not user_domain_match("acme.com", ".acme.com"))
-        self.assertTrue(user_domain_match("rhubarb.acme.com", ".acme.com"))
-        self.assertTrue(user_domain_match("www.rhubarb.acme.com", ".acme.com"))
-        self.assertTrue(user_domain_match("x.y.com", "x.Y.com"))
-        self.assertTrue(user_domain_match("x.y.com", ".Y.com"))
-        self.assertTrue(not user_domain_match("x.y.com", "Y.com"))
-        self.assertTrue(user_domain_match("y.com", "Y.com"))
-        self.assertTrue(not user_domain_match(".y.com", "Y.com"))
-        self.assertTrue(user_domain_match(".y.com", ".Y.com"))
-        self.assertTrue(user_domain_match("x.y.com", ".com"))
-        self.assertTrue(not user_domain_match("x.y.com", "com"))
-        self.assertTrue(not user_domain_match("x.y.com", "m"))
-        self.assertTrue(not user_domain_match("x.y.com", ".m"))
-        self.assertTrue(not user_domain_match("x.y.com", ""))
-        self.assertTrue(not user_domain_match("x.y.com", "."))
-        self.assertTrue(user_domain_match("192.168.1.1", "192.168.1.1"))
-        # not both HDNs, so must string-compare equal to match
-        self.assertTrue(not user_domain_match("192.168.1.1", ".168.1.1"))
-        self.assertTrue(not user_domain_match("192.168.1.1", "."))
-        # empty string is a special case
-        self.assertTrue(not user_domain_match("192.168.1.1", ""))
-
-    def test_wrong_domain(self):
-        # Cookies whose effective request-host name does not domain-match the
-        # domain are rejected.
-
-        # XXX far from complete
-        from cookielib import CookieJar
-        c = CookieJar()
-        interact_2965(c, "http://www.nasty.com/",
-                      'foo=bar; domain=friendly.org; Version="1"')
-        self.assertEqual(len(c), 0)
-
-    def test_strict_domain(self):
-        # Cookies whose domain is a country-code tld like .co.uk should
-        # not be set if CookiePolicy.strict_domain is true.
-        from cookielib import CookieJar, DefaultCookiePolicy
-
-        cp = DefaultCookiePolicy(strict_domain=True)
-        cj = CookieJar(policy=cp)
-        interact_netscape(cj, "http://example.co.uk/", 'no=problemo')
-        interact_netscape(cj, "http://example.co.uk/",
-                          'okey=dokey; Domain=.example.co.uk')
-        self.assertEqual(len(cj), 2)
-        for pseudo_tld in [".co.uk", ".org.za", ".tx.us", ".name.us"]:
-            interact_netscape(cj, "http://example.%s/" % pseudo_tld,
-                              'spam=eggs; Domain=.co.uk')
-            self.assertEqual(len(cj), 2)
-
-    def test_two_component_domain_ns(self):
-        # Netscape: .www.bar.com, www.bar.com, .bar.com, bar.com, no domain
-        # should all get accepted, as should .acme.com, acme.com and no domain
-        # for 2-component domains like acme.com.
-        from cookielib import CookieJar, DefaultCookiePolicy
-
-        c = CookieJar()
-
-        # two-component V0 domain is OK
-        interact_netscape(c, "http://foo.net/", 'ns=bar')
-        self.assertEqual(len(c), 1)
-        self.assertEqual(c._cookies["foo.net"]["/"]["ns"].value, "bar")
-        self.assertEqual(interact_netscape(c, "http://foo.net/"), "ns=bar")
-        # *will* be returned to any other domain (unlike RFC 2965)...
-        self.assertEqual(interact_netscape(c, "http://www.foo.net/"),
-                         "ns=bar")
-        # ...unless requested otherwise
-        pol = DefaultCookiePolicy(
-            strict_ns_domain=DefaultCookiePolicy.DomainStrictNonDomain)
-        c.set_policy(pol)
-        self.assertEqual(interact_netscape(c, "http://www.foo.net/"), "")
-
-        # unlike RFC 2965, even explicit two-component domain is OK,
-        # because .foo.net matches foo.net
-        interact_netscape(c, "http://foo.net/foo/",
-                          'spam1=eggs; domain=foo.net')
-        # even if starts with a dot -- in NS rules, .foo.net matches foo.net!
-        interact_netscape(c, "http://foo.net/foo/bar/",
-                          'spam2=eggs; domain=.foo.net')
-        self.assertEqual(len(c), 3)
-        self.assertEqual(c._cookies[".foo.net"]["/foo"]["spam1"].value,
-                         "eggs")
-        self.assertEqual(c._cookies[".foo.net"]["/foo/bar"]["spam2"].value,
-                         "eggs")
-        self.assertEqual(interact_netscape(c, "http://foo.net/foo/bar/"),
-                         "spam2=eggs; spam1=eggs; ns=bar")
-
-        # top-level domain is too general
-        interact_netscape(c, "http://foo.net/", 'nini="ni"; domain=.net')
-        self.assertEqual(len(c), 3)
-
-##         # Netscape protocol doesn't allow non-special top level domains (such
-##         # as co.uk) in the domain attribute unless there are at least three
-##         # dots in it.
-        # Oh yes it does!  Real implementations don't check this, and real
-        # cookies (of course) rely on that behaviour.
-        interact_netscape(c, "http://foo.co.uk", 'nasty=trick; domain=.co.uk')
-##         self.assertEqual(len(c), 2)
-        self.assertEqual(len(c), 4)
-
-    def test_two_component_domain_rfc2965(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-
-        pol = DefaultCookiePolicy(rfc2965=True)
-        c = CookieJar(pol)
-
-        # two-component V1 domain is OK
-        interact_2965(c, "http://foo.net/", 'foo=bar; Version="1"')
-        self.assertEqual(len(c), 1)
-        self.assertEqual(c._cookies["foo.net"]["/"]["foo"].value, "bar")
-        self.assertEqual(interact_2965(c, "http://foo.net/"),
-                         "$Version=1; foo=bar")
-        # won't be returned to any other domain (because domain was implied)
-        self.assertEqual(interact_2965(c, "http://www.foo.net/"), "")
-
-        # unless domain is given explicitly, because then it must be
-        # rewritten to start with a dot: foo.net --> .foo.net, which does
-        # not domain-match foo.net
-        interact_2965(c, "http://foo.net/foo",
-                      'spam=eggs; domain=foo.net; path=/foo; Version="1"')
-        self.assertEqual(len(c), 1)
-        self.assertEqual(interact_2965(c, "http://foo.net/foo"),
-                         "$Version=1; foo=bar")
-
-        # explicit foo.net from three-component domain www.foo.net *does* get
-        # set, because .foo.net domain-matches .foo.net
-        interact_2965(c, "http://www.foo.net/foo/",
-                      'spam=eggs; domain=foo.net; Version="1"')
-        self.assertEqual(c._cookies[".foo.net"]["/foo/"]["spam"].value,
-                         "eggs")
-        self.assertEqual(len(c), 2)
-        self.assertEqual(interact_2965(c, "http://foo.net/foo/"),
-                         "$Version=1; foo=bar")
-        self.assertEqual(interact_2965(c, "http://www.foo.net/foo/"),
-                         '$Version=1; spam=eggs; $Domain="foo.net"')
-
-        # top-level domain is too general
-        interact_2965(c, "http://foo.net/",
-                      'ni="ni"; domain=".net"; Version="1"')
-        self.assertEqual(len(c), 2)
-
-        # RFC 2965 doesn't require blocking this
-        interact_2965(c, "http://foo.co.uk/",
-                      'nasty=trick; domain=.co.uk; Version="1"')
-        self.assertEqual(len(c), 3)
-
-    def test_domain_allow(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-        from urllib2 import Request
-
-        c = CookieJar(policy=DefaultCookiePolicy(
-            blocked_domains=["acme.com"],
-            allowed_domains=["www.acme.com"]))
-
-        req = Request("http://acme.com/")
-        headers = ["Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/"]
-        res = FakeResponse(headers, "http://acme.com/")
-        c.extract_cookies(res, req)
-        self.assertEqual(len(c), 0)
-
-        req = Request("http://www.acme.com/")
-        res = FakeResponse(headers, "http://www.acme.com/")
-        c.extract_cookies(res, req)
-        self.assertEqual(len(c), 1)
-
-        req = Request("http://www.coyote.com/")
-        res = FakeResponse(headers, "http://www.coyote.com/")
-        c.extract_cookies(res, req)
-        self.assertEqual(len(c), 1)
-
-        # set a cookie with non-allowed domain...
-        req = Request("http://www.coyote.com/")
-        res = FakeResponse(headers, "http://www.coyote.com/")
-        cookies = c.make_cookies(res, req)
-        c.set_cookie(cookies[0])
-        self.assertEqual(len(c), 2)
-        # ... and check is doesn't get returned
-        c.add_cookie_header(req)
-        self.assertTrue(not req.has_header("Cookie"))
-
-    def test_domain_block(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-        from urllib2 import Request
-
-        pol = DefaultCookiePolicy(
-            rfc2965=True, blocked_domains=[".acme.com"])
-        c = CookieJar(policy=pol)
-        headers = ["Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/"]
-
-        req = Request("http://www.acme.com/")
-        res = FakeResponse(headers, "http://www.acme.com/")
-        c.extract_cookies(res, req)
-        self.assertEqual(len(c), 0)
-
-        p = pol.set_blocked_domains(["acme.com"])
-        c.extract_cookies(res, req)
-        self.assertEqual(len(c), 1)
-
-        c.clear()
-        req = Request("http://www.roadrunner.net/")
-        res = FakeResponse(headers, "http://www.roadrunner.net/")
-        c.extract_cookies(res, req)
-        self.assertEqual(len(c), 1)
-        req = Request("http://www.roadrunner.net/")
-        c.add_cookie_header(req)
-        self.assertTrue((req.has_header("Cookie") and
-                      req.has_header("Cookie2")))
-
-        c.clear()
-        pol.set_blocked_domains([".acme.com"])
-        c.extract_cookies(res, req)
-        self.assertEqual(len(c), 1)
-
-        # set a cookie with blocked domain...
-        req = Request("http://www.acme.com/")
-        res = FakeResponse(headers, "http://www.acme.com/")
-        cookies = c.make_cookies(res, req)
-        c.set_cookie(cookies[0])
-        self.assertEqual(len(c), 2)
-        # ... and check is doesn't get returned
-        c.add_cookie_header(req)
-        self.assertTrue(not req.has_header("Cookie"))
-
-    def test_secure(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-
-        for ns in True, False:
-            for whitespace in " ", "":
-                c = CookieJar()
-                if ns:
-                    pol = DefaultCookiePolicy(rfc2965=False)
-                    int = interact_netscape
-                    vs = ""
-                else:
-                    pol = DefaultCookiePolicy(rfc2965=True)
-                    int = interact_2965
-                    vs = "; Version=1"
-                c.set_policy(pol)
-                url = "http://www.acme.com/"
-                int(c, url, "foo1=bar%s%s" % (vs, whitespace))
-                int(c, url, "foo2=bar%s; secure%s" %  (vs, whitespace))
-                self.assertTrue(
-                    not c._cookies["www.acme.com"]["/"]["foo1"].secure,
-                    "non-secure cookie registered secure")
-                self.assertTrue(
-                    c._cookies["www.acme.com"]["/"]["foo2"].secure,
-                    "secure cookie registered non-secure")
-
-    def test_quote_cookie_value(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-        c = CookieJar(policy=DefaultCookiePolicy(rfc2965=True))
-        interact_2965(c, "http://www.acme.com/", r'foo=\b"a"r; Version=1')
-        h = interact_2965(c, "http://www.acme.com/")
-        self.assertEqual(h, r'$Version=1; foo=\\b\"a\"r')
-
-    def test_missing_final_slash(self):
-        # Missing slash from request URL's abs_path should be assumed present.
-        from cookielib import CookieJar, DefaultCookiePolicy
-        from urllib2 import Request
-        url = "http://www.acme.com"
-        c = CookieJar(DefaultCookiePolicy(rfc2965=True))
-        interact_2965(c, url, "foo=bar; Version=1")
-        req = Request(url)
-        self.assertEqual(len(c), 1)
-        c.add_cookie_header(req)
-        self.assertTrue(req.has_header("Cookie"))
-
-    def test_domain_mirror(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-
-        pol = DefaultCookiePolicy(rfc2965=True)
-
-        c = CookieJar(pol)
-        url = "http://foo.bar.com/"
-        interact_2965(c, url, "spam=eggs; Version=1")
-        h = interact_2965(c, url)
-        self.assertNotIn("Domain", h,
-                         "absent domain returned with domain present")
-
-        c = CookieJar(pol)
-        url = "http://foo.bar.com/"
-        interact_2965(c, url, 'spam=eggs; Version=1; Domain=.bar.com')
-        h = interact_2965(c, url)
-        self.assertIn('$Domain=".bar.com"', h, "domain not returned")
-
-        c = CookieJar(pol)
-        url = "http://foo.bar.com/"
-        # note missing initial dot in Domain
-        interact_2965(c, url, 'spam=eggs; Version=1; Domain=bar.com')
-        h = interact_2965(c, url)
-        self.assertIn('$Domain="bar.com"', h, "domain not returned")
-
-    def test_path_mirror(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-
-        pol = DefaultCookiePolicy(rfc2965=True)
-
-        c = CookieJar(pol)
-        url = "http://foo.bar.com/"
-        interact_2965(c, url, "spam=eggs; Version=1")
-        h = interact_2965(c, url)
-        self.assertNotIn("Path", h, "absent path returned with path present")
-
-        c = CookieJar(pol)
-        url = "http://foo.bar.com/"
-        interact_2965(c, url, 'spam=eggs; Version=1; Path=/')
-        h = interact_2965(c, url)
-        self.assertIn('$Path="/"', h, "path not returned")
-
-    def test_port_mirror(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-
-        pol = DefaultCookiePolicy(rfc2965=True)
-
-        c = CookieJar(pol)
-        url = "http://foo.bar.com/"
-        interact_2965(c, url, "spam=eggs; Version=1")
-        h = interact_2965(c, url)
-        self.assertNotIn("Port", h, "absent port returned with port present")
-
-        c = CookieJar(pol)
-        url = "http://foo.bar.com/"
-        interact_2965(c, url, "spam=eggs; Version=1; Port")
-        h = interact_2965(c, url)
-        self.assertTrue(re.search("\$Port([^=]|$)", h),
-                     "port with no value not returned with no value")
-
-        c = CookieJar(pol)
-        url = "http://foo.bar.com/"
-        interact_2965(c, url, 'spam=eggs; Version=1; Port="80"')
-        h = interact_2965(c, url)
-        self.assertIn('$Port="80"', h,
-                      "port with single value not returned with single value")
-
-        c = CookieJar(pol)
-        url = "http://foo.bar.com/"
-        interact_2965(c, url, 'spam=eggs; Version=1; Port="80,8080"')
-        h = interact_2965(c, url)
-        self.assertIn('$Port="80,8080"', h,
-                      "port with multiple values not returned with multiple "
-                      "values")
-
-    def test_no_return_comment(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-
-        c = CookieJar(DefaultCookiePolicy(rfc2965=True))
-        url = "http://foo.bar.com/"
-        interact_2965(c, url, 'spam=eggs; Version=1; '
-                      'Comment="does anybody read these?"; '
-                      'CommentURL="http://foo.bar.net/comment.html"')
-        h = interact_2965(c, url)
-        self.assertTrue(
-            "Comment" not in h,
-            "Comment or CommentURL cookie-attributes returned to server")
-
-    def test_Cookie_iterator(self):
-        from cookielib import CookieJar, Cookie, DefaultCookiePolicy
-
-        cs = CookieJar(DefaultCookiePolicy(rfc2965=True))
-        # add some random cookies
-        interact_2965(cs, "http://blah.spam.org/", 'foo=eggs; Version=1; '
-                      'Comment="does anybody read these?"; '
-                      'CommentURL="http://foo.bar.net/comment.html"')
-        interact_netscape(cs, "http://www.acme.com/blah/", "spam=bar; secure")
-        interact_2965(cs, "http://www.acme.com/blah/",
-                      "foo=bar; secure; Version=1")
-        interact_2965(cs, "http://www.acme.com/blah/",
-                      "foo=bar; path=/; Version=1")
-        interact_2965(cs, "http://www.sol.no",
-                      r'bang=wallop; version=1; domain=".sol.no"; '
-                      r'port="90,100, 80,8080"; '
-                      r'max-age=100; Comment = "Just kidding! (\"|\\\\) "')
-
-        versions = [1, 1, 1, 0, 1]
-        names = ["bang", "foo", "foo", "spam", "foo"]
-        domains = [".sol.no", "blah.spam.org", "www.acme.com",
-                   "www.acme.com", "www.acme.com"]
-        paths = ["/", "/", "/", "/blah", "/blah/"]
-
-        for i in range(4):
-            i = 0
-            for c in cs:
-                self.assertIsInstance(c, Cookie)
-                self.assertEqual(c.version, versions[i])
-                self.assertEqual(c.name, names[i])
-                self.assertEqual(c.domain, domains[i])
-                self.assertEqual(c.path, paths[i])
-                i = i + 1
-
-    def test_parse_ns_headers(self):
-        from cookielib import parse_ns_headers
-
-        # missing domain value (invalid cookie)
-        self.assertEqual(
-            parse_ns_headers(["foo=bar; path=/; domain"]),
-            [[("foo", "bar"),
-              ("path", "/"), ("domain", None), ("version", "0")]]
-            )
-        # invalid expires value
-        self.assertEqual(
-            parse_ns_headers(["foo=bar; expires=Foo Bar 12 33:22:11 2000"]),
-            [[("foo", "bar"), ("expires", None), ("version", "0")]]
-            )
-        # missing cookie value (valid cookie)
-        self.assertEqual(
-            parse_ns_headers(["foo"]),
-            [[("foo", None), ("version", "0")]]
-            )
-        # shouldn't add version if header is empty
-        self.assertEqual(parse_ns_headers([""]), [])
-
-    def test_bad_cookie_header(self):
-
-        def cookiejar_from_cookie_headers(headers):
-            from cookielib import CookieJar
-            from urllib2 import Request
-            c = CookieJar()
-            req = Request("http://www.example.com/")
-            r = FakeResponse(headers, "http://www.example.com/")
-            c.extract_cookies(r, req)
-            return c
-
-        # none of these bad headers should cause an exception to be raised
-        for headers in [
-            ["Set-Cookie: "],  # actually, nothing wrong with this
-            ["Set-Cookie2: "],  # ditto
-            # missing domain value
-            ["Set-Cookie2: a=foo; path=/; Version=1; domain"],
-            # bad max-age
-            ["Set-Cookie: b=foo; max-age=oops"],
-            # bad version
-            ["Set-Cookie: b=foo; version=spam"],
-            ]:
-            c = cookiejar_from_cookie_headers(headers)
-            # these bad cookies shouldn't be set
-            self.assertEqual(len(c), 0)
-
-        # cookie with invalid expires is treated as session cookie
-        headers = ["Set-Cookie: c=foo; expires=Foo Bar 12 33:22:11 2000"]
-        c = cookiejar_from_cookie_headers(headers)
-        cookie = c._cookies["www.example.com"]["/"]["c"]
-        self.assertTrue(cookie.expires is None)
-
-
-class LWPCookieTests(TestCase):
-    # Tests taken from libwww-perl, with a few modifications and additions.
-
-    def test_netscape_example_1(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-        from urllib2 import Request
-
-        #-------------------------------------------------------------------
-        # First we check that it works for the original example at
-        # http://www.netscape.com/newsref/std/cookie_spec.html
-
-        # Client requests a document, and receives in the response:
-        #
-        #       Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT
-        #
-        # When client requests a URL in path "/" on this server, it sends:
-        #
-        #       Cookie: CUSTOMER=WILE_E_COYOTE
-        #
-        # Client requests a document, and receives in the response:
-        #
-        #       Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/
-        #
-        # When client requests a URL in path "/" on this server, it sends:
-        #
-        #       Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001
-        #
-        # Client receives:
-        #
-        #       Set-Cookie: SHIPPING=FEDEX; path=/fo
-        #
-        # When client requests a URL in path "/" on this server, it sends:
-        #
-        #       Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001
-        #
-        # When client requests a URL in path "/foo" on this server, it sends:
-        #
-        #       Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001; SHIPPING=FEDEX
-        #
-        # The last Cookie is buggy, because both specifications say that the
-        # most specific cookie must be sent first.  SHIPPING=FEDEX is the
-        # most specific and should thus be first.
-
-        year_plus_one = time.localtime()[0] + 1
-
-        headers = []
-
-        c = CookieJar(DefaultCookiePolicy(rfc2965 = True))
-
-        #req = Request("http://1.1.1.1/",
-        #              headers={"Host": "www.acme.com:80"})
-        req = Request("http://www.acme.com:80/",
-                      headers={"Host": "www.acme.com:80"})
-
-        headers.append(
-            "Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/ ; "
-            "expires=Wednesday, 09-Nov-%d 23:12:40 GMT" % year_plus_one)
-        res = FakeResponse(headers, "http://www.acme.com/")
-        c.extract_cookies(res, req)
-
-        req = Request("http://www.acme.com/")
-        c.add_cookie_header(req)
-
-        self.assertEqual(req.get_header("Cookie"), "CUSTOMER=WILE_E_COYOTE")
-        self.assertEqual(req.get_header("Cookie2"), '$Version="1"')
-
-        headers.append("Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/")
-        res = FakeResponse(headers, "http://www.acme.com/")
-        c.extract_cookies(res, req)
-
-        req = Request("http://www.acme.com/foo/bar")
-        c.add_cookie_header(req)
-
-        h = req.get_header("Cookie")
-        self.assertIn("PART_NUMBER=ROCKET_LAUNCHER_0001", h)
-        self.assertIn("CUSTOMER=WILE_E_COYOTE", h)
-
-        headers.append('Set-Cookie: SHIPPING=FEDEX; path=/foo')
-        res = FakeResponse(headers, "http://www.acme.com")
-        c.extract_cookies(res, req)
-
-        req = Request("http://www.acme.com/")
-        c.add_cookie_header(req)
-
-        h = req.get_header("Cookie")
-        self.assertIn("PART_NUMBER=ROCKET_LAUNCHER_0001", h)
-        self.assertIn("CUSTOMER=WILE_E_COYOTE", h)
-        self.assertNotIn("SHIPPING=FEDEX", h)
-
-        req = Request("http://www.acme.com/foo/")
-        c.add_cookie_header(req)
-
-        h = req.get_header("Cookie")
-        self.assertIn("PART_NUMBER=ROCKET_LAUNCHER_0001", h)
-        self.assertIn("CUSTOMER=WILE_E_COYOTE", h)
-        self.assertTrue(h.startswith("SHIPPING=FEDEX;"))
-
-    def test_netscape_example_2(self):
-        from cookielib import CookieJar
-        from urllib2 import Request
-
-        # Second Example transaction sequence:
-        #
-        # Assume all mappings from above have been cleared.
-        #
-        # Client receives:
-        #
-        #       Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/
-        #
-        # When client requests a URL in path "/" on this server, it sends:
-        #
-        #       Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001
-        #
-        # Client receives:
-        #
-        #       Set-Cookie: PART_NUMBER=RIDING_ROCKET_0023; path=/ammo
-        #
-        # When client requests a URL in path "/ammo" on this server, it sends:
-        #
-        #       Cookie: PART_NUMBER=RIDING_ROCKET_0023; PART_NUMBER=ROCKET_LAUNCHER_0001
-        #
-        #       NOTE: There are two name/value pairs named "PART_NUMBER" due to
-        #       the inheritance of the "/" mapping in addition to the "/ammo" mapping.
-
-        c = CookieJar()
-        headers = []
-
-        req = Request("http://www.acme.com/")
-        headers.append("Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/")
-        res = FakeResponse(headers, "http://www.acme.com/")
-
-        c.extract_cookies(res, req)
-
-        req = Request("http://www.acme.com/")
-        c.add_cookie_header(req)
-
-        self.assertEqual(req.get_header("Cookie"),
-                          "PART_NUMBER=ROCKET_LAUNCHER_0001")
-
-        headers.append(
-            "Set-Cookie: PART_NUMBER=RIDING_ROCKET_0023; path=/ammo")
-        res = FakeResponse(headers, "http://www.acme.com/")
-        c.extract_cookies(res, req)
-
-        req = Request("http://www.acme.com/ammo")
-        c.add_cookie_header(req)
-
-        self.assertTrue(re.search(r"PART_NUMBER=RIDING_ROCKET_0023;\s*"
-                               "PART_NUMBER=ROCKET_LAUNCHER_0001",
-                               req.get_header("Cookie")))
-
-    def test_ietf_example_1(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-        #-------------------------------------------------------------------
-        # Then we test with the examples from draft-ietf-http-state-man-mec-03.txt
-        #
-        # 5.  EXAMPLES
-
-        c = CookieJar(DefaultCookiePolicy(rfc2965=True))
-
-        #
-        # 5.1  Example 1
-        #
-        # Most detail of request and response headers has been omitted.  Assume
-        # the user agent has no stored cookies.
-        #
-        #   1.  User Agent -> Server
-        #
-        #       POST /acme/login HTTP/1.1
-        #       [form data]
-        #
-        #       User identifies self via a form.
-        #
-        #   2.  Server -> User Agent
-        #
-        #       HTTP/1.1 200 OK
-        #       Set-Cookie2: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"
-        #
-        #       Cookie reflects user's identity.
-
-        cookie = interact_2965(
-            c, 'http://www.acme.com/acme/login',
-            'Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"')
-        self.assertTrue(not cookie)
-
-        #
-        #   3.  User Agent -> Server
-        #
-        #       POST /acme/pickitem HTTP/1.1
-        #       Cookie: $Version="1"; Customer="WILE_E_COYOTE"; $Path="/acme"
-        #       [form data]
-        #
-        #       User selects an item for ``shopping basket.''
-        #
-        #   4.  Server -> User Agent
-        #
-        #       HTTP/1.1 200 OK
-        #       Set-Cookie2: Part_Number="Rocket_Launcher_0001"; Version="1";
-        #               Path="/acme"
-        #
-        #       Shopping basket contains an item.
-
-        cookie = interact_2965(c, 'http://www.acme.com/acme/pickitem',
-                               'Part_Number="Rocket_Launcher_0001"; '
-                               'Version="1"; Path="/acme"');
-        self.assertTrue(re.search(
-            r'^\$Version="?1"?; Customer="?WILE_E_COYOTE"?; \$Path="/acme"$',
-            cookie))
-
-        #
-        #   5.  User Agent -> Server
-        #
-        #       POST /acme/shipping HTTP/1.1
-        #       Cookie: $Version="1";
-        #               Customer="WILE_E_COYOTE"; $Path="/acme";
-        #               Part_Number="Rocket_Launcher_0001"; $Path="/acme"
-        #       [form data]
-        #
-        #       User selects shipping method from form.
-        #
-        #   6.  Server -> User Agent
-        #
-        #       HTTP/1.1 200 OK
-        #       Set-Cookie2: Shipping="FedEx"; Version="1"; Path="/acme"
-        #
-        #       New cookie reflects shipping method.
-
-        cookie = interact_2965(c, "http://www.acme.com/acme/shipping",
-                               'Shipping="FedEx"; Version="1"; Path="/acme"')
-
-        self.assertTrue(re.search(r'^\$Version="?1"?;', cookie))
-        self.assertTrue(re.search(r'Part_Number="?Rocket_Launcher_0001"?;'
-                               '\s*\$Path="\/acme"', cookie))
-        self.assertTrue(re.search(r'Customer="?WILE_E_COYOTE"?;\s*\$Path="\/acme"',
-                               cookie))
-
-        #
-        #   7.  User Agent -> Server
-        #
-        #       POST /acme/process HTTP/1.1
-        #       Cookie: $Version="1";
-        #               Customer="WILE_E_COYOTE"; $Path="/acme";
-        #               Part_Number="Rocket_Launcher_0001"; $Path="/acme";
-        #               Shipping="FedEx"; $Path="/acme"
-        #       [form data]
-        #
-        #       User chooses to process order.
-        #
-        #   8.  Server -> User Agent
-        #
-        #       HTTP/1.1 200 OK
-        #
-        #       Transaction is complete.
-
-        cookie = interact_2965(c, "http://www.acme.com/acme/process")
-        self.assertTrue(
-            re.search(r'Shipping="?FedEx"?;\s*\$Path="\/acme"', cookie) and
-            "WILE_E_COYOTE" in cookie)
-
-        #
-        # The user agent makes a series of requests on the origin server, after
-        # each of which it receives a new cookie.  All the cookies have the same
-        # Path attribute and (default) domain.  Because the request URLs all have
-        # /acme as a prefix, and that matches the Path attribute, each request
-        # contains all the cookies received so far.
-
-    def test_ietf_example_2(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-
-        # 5.2  Example 2
-        #
-        # This example illustrates the effect of the Path attribute.  All detail
-        # of request and response headers has been omitted.  Assume the user agent
-        # has no stored cookies.
-
-        c = CookieJar(DefaultCookiePolicy(rfc2965=True))
-
-        # Imagine the user agent has received, in response to earlier requests,
-        # the response headers
-        #
-        # Set-Cookie2: Part_Number="Rocket_Launcher_0001"; Version="1";
-        #         Path="/acme"
-        #
-        # and
-        #
-        # Set-Cookie2: Part_Number="Riding_Rocket_0023"; Version="1";
-        #         Path="/acme/ammo"
-
-        interact_2965(
-            c, "http://www.acme.com/acme/ammo/specific",
-            'Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"',
-            'Part_Number="Riding_Rocket_0023"; Version="1"; Path="/acme/ammo"')
-
-        # A subsequent request by the user agent to the (same) server for URLs of
-        # the form /acme/ammo/...  would include the following request header:
-        #
-        # Cookie: $Version="1";
-        #         Part_Number="Riding_Rocket_0023"; $Path="/acme/ammo";
-        #         Part_Number="Rocket_Launcher_0001"; $Path="/acme"
-        #
-        # Note that the NAME=VALUE pair for the cookie with the more specific Path
-        # attribute, /acme/ammo, comes before the one with the less specific Path
-        # attribute, /acme.  Further note that the same cookie name appears more
-        # than once.
-
-        cookie = interact_2965(c, "http://www.acme.com/acme/ammo/...")
-        self.assertTrue(
-            re.search(r"Riding_Rocket_0023.*Rocket_Launcher_0001", cookie))
-
-        # A subsequent request by the user agent to the (same) server for a URL of
-        # the form /acme/parts/ would include the following request header:
-        #
-        # Cookie: $Version="1"; Part_Number="Rocket_Launcher_0001"; $Path="/acme"
-        #
-        # Here, the second cookie's Path attribute /acme/ammo is not a prefix of
-        # the request URL, /acme/parts/, so the cookie does not get forwarded to
-        # the server.
-
-        cookie = interact_2965(c, "http://www.acme.com/acme/parts/")
-        self.assertIn("Rocket_Launcher_0001", cookie)
-        self.assertNotIn("Riding_Rocket_0023", cookie)
-
-    def test_rejection(self):
-        # Test rejection of Set-Cookie2 responses based on domain, path, port.
-        from cookielib import DefaultCookiePolicy, LWPCookieJar
-
-        pol = DefaultCookiePolicy(rfc2965=True)
-
-        c = LWPCookieJar(policy=pol)
-
-        max_age = "max-age=3600"
-
-        # illegal domain (no embedded dots)
-        cookie = interact_2965(c, "http://www.acme.com",
-                               'foo=bar; domain=".com"; version=1')
-        self.assertTrue(not c)
-
-        # legal domain
-        cookie = interact_2965(c, "http://www.acme.com",
-                               'ping=pong; domain="acme.com"; version=1')
-        self.assertEqual(len(c), 1)
-
-        # illegal domain (host prefix "www.a" contains a dot)
-        cookie = interact_2965(c, "http://www.a.acme.com",
-                               'whiz=bang; domain="acme.com"; version=1')
-        self.assertEqual(len(c), 1)
-
-        # legal domain
-        cookie = interact_2965(c, "http://www.a.acme.com",
-                               'wow=flutter; domain=".a.acme.com"; version=1')
-        self.assertEqual(len(c), 2)
-
-        # can't partially match an IP-address
-        cookie = interact_2965(c, "http://125.125.125.125",
-                               'zzzz=ping; domain="125.125.125"; version=1')
-        self.assertEqual(len(c), 2)
-
-        # illegal path (must be prefix of request path)
-        cookie = interact_2965(c, "http://www.sol.no",
-                               'blah=rhubarb; domain=".sol.no"; path="/foo"; '
-                               'version=1')
-        self.assertEqual(len(c), 2)
-
-        # legal path
-        cookie = interact_2965(c, "http://www.sol.no/foo/bar",
-                               'bing=bong; domain=".sol.no"; path="/foo"; '
-                               'version=1')
-        self.assertEqual(len(c), 3)
-
-        # illegal port (request-port not in list)
-        cookie = interact_2965(c, "http://www.sol.no",
-                               'whiz=ffft; domain=".sol.no"; port="90,100"; '
-                               'version=1')
-        self.assertEqual(len(c), 3)
-
-        # legal port
-        cookie = interact_2965(
-            c, "http://www.sol.no",
-            r'bang=wallop; version=1; domain=".sol.no"; '
-            r'port="90,100, 80,8080"; '
-            r'max-age=100; Comment = "Just kidding! (\"|\\\\) "')
-        self.assertEqual(len(c), 4)
-
-        # port attribute without any value (current port)
-        cookie = interact_2965(c, "http://www.sol.no",
-                               'foo9=bar; version=1; domain=".sol.no"; port; '
-                               'max-age=100;')
-        self.assertEqual(len(c), 5)
-
-        # encoded path
-        # LWP has this test, but unescaping allowed path characters seems
-        # like a bad idea, so I think this should fail:
-##         cookie = interact_2965(c, "http://www.sol.no/foo/",
-##                           r'foo8=bar; version=1; path="/%66oo"')
-        # but this is OK, because '<' is not an allowed HTTP URL path
-        # character:
-        cookie = interact_2965(c, "http://www.sol.no/<oo/",
-                               r'foo8=bar; version=1; path="/%3coo"')
-        self.assertEqual(len(c), 6)
-
-        # save and restore
-        filename = test_support.TESTFN
-
-        try:
-            c.save(filename, ignore_discard=True)
-            old = repr(c)
-
-            c = LWPCookieJar(policy=pol)
-            c.load(filename, ignore_discard=True)
-        finally:
-            try: os.unlink(filename)
-            except OSError: pass
-
-        self.assertEqual(old, repr(c))
-
-    def test_url_encoding(self):
-        # Try some URL encodings of the PATHs.
-        # (the behaviour here has changed from libwww-perl)
-        from cookielib import CookieJar, DefaultCookiePolicy
-
-        c = CookieJar(DefaultCookiePolicy(rfc2965=True))
-        interact_2965(c, "http://www.acme.com/foo%2f%25/%3c%3c%0Anew%E5/%E5",
-                      "foo  =   bar; version    =   1")
-
-        cookie = interact_2965(
-            c, "http://www.acme.com/foo%2f%25/<<%0anewå/æøå",
-            'bar=baz; path="/foo/"; version=1');
-        version_re = re.compile(r'^\$version=\"?1\"?', re.I)
-        self.assertTrue("foo=bar" in cookie and version_re.search(cookie))
-
-        cookie = interact_2965(
-            c, "http://www.acme.com/foo/%25/<<%0anewå/æøå")
-        self.assertTrue(not cookie)
-
-        # unicode URL doesn't raise exception
-        cookie = interact_2965(c, u"http://www.acme.com/\xfc")
-
-    def test_mozilla(self):
-        # Save / load Mozilla/Netscape cookie file format.
-        from cookielib import MozillaCookieJar, DefaultCookiePolicy
-
-        year_plus_one = time.localtime()[0] + 1
-
-        filename = test_support.TESTFN
-
-        c = MozillaCookieJar(filename,
-                             policy=DefaultCookiePolicy(rfc2965=True))
-        interact_2965(c, "http://www.acme.com/",
-                      "foo1=bar; max-age=100; Version=1")
-        interact_2965(c, "http://www.acme.com/",
-                      'foo2=bar; port="80"; max-age=100; Discard; Version=1')
-        interact_2965(c, "http://www.acme.com/", "foo3=bar; secure; Version=1")
-
-        expires = "expires=09-Nov-%d 23:12:40 GMT" % (year_plus_one,)
-        interact_netscape(c, "http://www.foo.com/",
-                          "fooa=bar; %s" % expires)
-        interact_netscape(c, "http://www.foo.com/",
-                          "foob=bar; Domain=.foo.com; %s" % expires)
-        interact_netscape(c, "http://www.foo.com/",
-                          "fooc=bar; Domain=www.foo.com; %s" % expires)
-
-        def save_and_restore(cj, ignore_discard):
-            try:
-                cj.save(ignore_discard=ignore_discard)
-                new_c = MozillaCookieJar(filename,
-                                         DefaultCookiePolicy(rfc2965=True))
-                new_c.load(ignore_discard=ignore_discard)
-            finally:
-                try: os.unlink(filename)
-                except OSError: pass
-            return new_c
-
-        new_c = save_and_restore(c, True)
-        self.assertEqual(len(new_c), 6)  # none discarded
-        self.assertIn("name='foo1', value='bar'", repr(new_c))
-
-        new_c = save_and_restore(c, False)
-        self.assertEqual(len(new_c), 4)  # 2 of them discarded on save
-        self.assertIn("name='foo1', value='bar'", repr(new_c))
-
-    def test_netscape_misc(self):
-        # Some additional Netscape cookies tests.
-        from cookielib import CookieJar
-        from urllib2 import Request
-
-        c = CookieJar()
-        headers = []
-        req = Request("http://foo.bar.acme.com/foo")
-
-        # Netscape allows a host part that contains dots
-        headers.append("Set-Cookie: Customer=WILE_E_COYOTE; domain=.acme.com")
-        res = FakeResponse(headers, "http://www.acme.com/foo")
-        c.extract_cookies(res, req)
-
-        # and that the domain is the same as the host without adding a leading
-        # dot to the domain.  Should not quote even if strange chars are used
-        # in the cookie value.
-        headers.append("Set-Cookie: PART_NUMBER=3,4; domain=foo.bar.acme.com")
-        res = FakeResponse(headers, "http://www.acme.com/foo")
-        c.extract_cookies(res, req)
-
-        req = Request("http://foo.bar.acme.com/foo")
-        c.add_cookie_header(req)
-        self.assertTrue(
-            "PART_NUMBER=3,4" in req.get_header("Cookie") and
-            "Customer=WILE_E_COYOTE" in req.get_header("Cookie"))
-
-    def test_intranet_domains_2965(self):
-        # Test handling of local intranet hostnames without a dot.
-        from cookielib import CookieJar, DefaultCookiePolicy
-
-        c = CookieJar(DefaultCookiePolicy(rfc2965=True))
-        interact_2965(c, "http://example/",
-                      "foo1=bar; PORT; Discard; Version=1;")
-        cookie = interact_2965(c, "http://example/",
-                               'foo2=bar; domain=".local"; Version=1')
-        self.assertIn("foo1=bar", cookie)
-
-        interact_2965(c, "http://example/", 'foo3=bar; Version=1')
-        cookie = interact_2965(c, "http://example/")
-        self.assertIn("foo2=bar", cookie)
-        self.assertEqual(len(c), 3)
-
-    def test_intranet_domains_ns(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-
-        c = CookieJar(DefaultCookiePolicy(rfc2965 = False))
-        interact_netscape(c, "http://example/", "foo1=bar")
-        cookie = interact_netscape(c, "http://example/",
-                                   'foo2=bar; domain=.local')
-        self.assertEqual(len(c), 2)
-        self.assertIn("foo1=bar", cookie)
-
-        cookie = interact_netscape(c, "http://example/")
-        self.assertIn("foo2=bar", cookie)
-        self.assertEqual(len(c), 2)
-
-    def test_empty_path(self):
-        from cookielib import CookieJar, DefaultCookiePolicy
-        from urllib2 import Request
-
-        # Test for empty path
-        # Broken web-server ORION/1.3.38 returns to the client response like
-        #
-        #       Set-Cookie: JSESSIONID=ABCDERANDOM123; Path=
-        #
-        # ie. with Path set to nothing.
-        # In this case, extract_cookies() must set cookie to / (root)
-        c = CookieJar(DefaultCookiePolicy(rfc2965 = True))
-        headers = []
-
-        req = Request("http://www.ants.com/")
-        headers.append("Set-Cookie: JSESSIONID=ABCDERANDOM123; Path=")
-        res = FakeResponse(headers, "http://www.ants.com/")
-        c.extract_cookies(res, req)
-
-        req = Request("http://www.ants.com/")
-        c.add_cookie_header(req)
-
-        self.assertEqual(req.get_header("Cookie"),
-                         "JSESSIONID=ABCDERANDOM123")
-        self.assertEqual(req.get_header("Cookie2"), '$Version="1"')
-
-        # missing path in the request URI
-        req = Request("http://www.ants.com:8080")
-        c.add_cookie_header(req)
-
-        self.assertEqual(req.get_header("Cookie"),
-                         "JSESSIONID=ABCDERANDOM123")
-        self.assertEqual(req.get_header("Cookie2"), '$Version="1"')
-
-    def test_session_cookies(self):
-        from cookielib import CookieJar
-        from urllib2 import Request
-
-        year_plus_one = time.localtime()[0] + 1
-
-        # Check session cookies are deleted properly by
-        # CookieJar.clear_session_cookies method
-
-        req = Request('http://www.perlmeister.com/scripts')
-        headers = []
-        headers.append("Set-Cookie: s1=session;Path=/scripts")
-        headers.append("Set-Cookie: p1=perm; Domain=.perlmeister.com;"
-                       "Path=/;expires=Fri, 02-Feb-%d 23:24:20 GMT" %
-                       year_plus_one)
-        headers.append("Set-Cookie: p2=perm;Path=/;expires=Fri, "
-                       "02-Feb-%d 23:24:20 GMT" % year_plus_one)
-        headers.append("Set-Cookie: s2=session;Path=/scripts;"
-                       "Domain=.perlmeister.com")
-        headers.append('Set-Cookie2: s3=session;Version=1;Discard;Path="/"')
-        res = FakeResponse(headers, 'http://www.perlmeister.com/scripts')
-
-        c = CookieJar()
-        c.extract_cookies(res, req)
-        # How many session/permanent cookies do we have?
-        counter = {"session_after": 0,
-                   "perm_after": 0,
-                   "session_before": 0,
-                   "perm_before": 0}
-        for cookie in c:
-            key = "%s_before" % cookie.value
-            counter[key] = counter[key] + 1
-        c.clear_session_cookies()
-        # How many now?
-        for cookie in c:
-            key = "%s_after" % cookie.value
-            counter[key] = counter[key] + 1
-
-        self.assertTrue(not (
-            # a permanent cookie got lost accidentally
-            counter["perm_after"] != counter["perm_before"] or
-            # a session cookie hasn't been cleared
-            counter["session_after"] != 0 or
-            # we didn't have session cookies in the first place
-            counter["session_before"] == 0))
-
-
-def test_main(verbose=None):
-    test_support.run_unittest(
-        DateTimeTests,
-        HeaderTests,
-        CookieTests,
-        FileCookieJarTests,
-        LWPCookieTests,
-        )
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_copy.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_copy.py
deleted file mode 100644
index c5bffa2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_copy.py
+++ /dev/null
@@ -1,712 +0,0 @@
-"""Unit tests for the copy module."""
-
-import copy
-import copy_reg
-import weakref
-
-import unittest
-from test import test_support
-
-class TestCopy(unittest.TestCase):
-
-    # Attempt full line coverage of copy.py from top to bottom
-
-    def test_exceptions(self):
-        self.assertTrue(copy.Error is copy.error)
-        self.assertTrue(issubclass(copy.Error, Exception))
-
-    # The copy() method
-
-    def test_copy_basic(self):
-        x = 42
-        y = copy.copy(x)
-        self.assertEqual(x, y)
-
-    def test_copy_copy(self):
-        class C(object):
-            def __init__(self, foo):
-                self.foo = foo
-            def __copy__(self):
-                return C(self.foo)
-        x = C(42)
-        y = copy.copy(x)
-        self.assertEqual(y.__class__, x.__class__)
-        self.assertEqual(y.foo, x.foo)
-
-    def test_copy_registry(self):
-        class C(object):
-            def __new__(cls, foo):
-                obj = object.__new__(cls)
-                obj.foo = foo
-                return obj
-        def pickle_C(obj):
-            return (C, (obj.foo,))
-        x = C(42)
-        self.assertRaises(TypeError, copy.copy, x)
-        copy_reg.pickle(C, pickle_C, C)
-        y = copy.copy(x)
-
-    def test_copy_reduce_ex(self):
-        class C(object):
-            def __reduce_ex__(self, proto):
-                return ""
-            def __reduce__(self):
-                raise test_support.TestFailed, "shouldn't call this"
-        x = C()
-        y = copy.copy(x)
-        self.assertTrue(y is x)
-
-    def test_copy_reduce(self):
-        class C(object):
-            def __reduce__(self):
-                return ""
-        x = C()
-        y = copy.copy(x)
-        self.assertTrue(y is x)
-
-    def test_copy_cant(self):
-        class C(object):
-            def __getattribute__(self, name):
-                if name.startswith("__reduce"):
-                    raise AttributeError, name
-                return object.__getattribute__(self, name)
-        x = C()
-        self.assertRaises(copy.Error, copy.copy, x)
-
-    # Type-specific _copy_xxx() methods
-
-    def test_copy_atomic(self):
-        class Classic:
-            pass
-        class NewStyle(object):
-            pass
-        def f():
-            pass
-        tests = [None, 42, 2L**100, 3.14, True, False, 1j,
-                 "hello", u"hello\u1234", f.func_code,
-                 NewStyle, xrange(10), Classic, max]
-        for x in tests:
-            self.assertTrue(copy.copy(x) is x, repr(x))
-
-    def test_copy_list(self):
-        x = [1, 2, 3]
-        self.assertEqual(copy.copy(x), x)
-
-    def test_copy_tuple(self):
-        x = (1, 2, 3)
-        self.assertEqual(copy.copy(x), x)
-
-    def test_copy_dict(self):
-        x = {"foo": 1, "bar": 2}
-        self.assertEqual(copy.copy(x), x)
-
-    def test_copy_inst_vanilla(self):
-        class C:
-            def __init__(self, foo):
-                self.foo = foo
-            def __cmp__(self, other):
-                return cmp(self.foo, other.foo)
-        x = C(42)
-        self.assertEqual(copy.copy(x), x)
-
-    def test_copy_inst_copy(self):
-        class C:
-            def __init__(self, foo):
-                self.foo = foo
-            def __copy__(self):
-                return C(self.foo)
-            def __cmp__(self, other):
-                return cmp(self.foo, other.foo)
-        x = C(42)
-        self.assertEqual(copy.copy(x), x)
-
-    def test_copy_inst_getinitargs(self):
-        class C:
-            def __init__(self, foo):
-                self.foo = foo
-            def __getinitargs__(self):
-                return (self.foo,)
-            def __cmp__(self, other):
-                return cmp(self.foo, other.foo)
-        x = C(42)
-        self.assertEqual(copy.copy(x), x)
-
-    def test_copy_inst_getstate(self):
-        class C:
-            def __init__(self, foo):
-                self.foo = foo
-            def __getstate__(self):
-                return {"foo": self.foo}
-            def __cmp__(self, other):
-                return cmp(self.foo, other.foo)
-        x = C(42)
-        self.assertEqual(copy.copy(x), x)
-
-    def test_copy_inst_setstate(self):
-        class C:
-            def __init__(self, foo):
-                self.foo = foo
-            def __setstate__(self, state):
-                self.foo = state["foo"]
-            def __cmp__(self, other):
-                return cmp(self.foo, other.foo)
-        x = C(42)
-        self.assertEqual(copy.copy(x), x)
-
-    def test_copy_inst_getstate_setstate(self):
-        class C:
-            def __init__(self, foo):
-                self.foo = foo
-            def __getstate__(self):
-                return self.foo
-            def __setstate__(self, state):
-                self.foo = state
-            def __cmp__(self, other):
-                return cmp(self.foo, other.foo)
-        x = C(42)
-        self.assertEqual(copy.copy(x), x)
-
-    # The deepcopy() method
-
-    def test_deepcopy_basic(self):
-        x = 42
-        y = copy.deepcopy(x)
-        self.assertEqual(y, x)
-
-    def test_deepcopy_memo(self):
-        # Tests of reflexive objects are under type-specific sections below.
-        # This tests only repetitions of objects.
-        x = []
-        x = [x, x]
-        y = copy.deepcopy(x)
-        self.assertEqual(y, x)
-        self.assertTrue(y is not x)
-        self.assertTrue(y[0] is not x[0])
-        self.assertTrue(y[0] is y[1])
-
-    def test_deepcopy_issubclass(self):
-        # XXX Note: there's no way to test the TypeError coming out of
-        # issubclass() -- this can only happen when an extension
-        # module defines a "type" that doesn't formally inherit from
-        # type.
-        class Meta(type):
-            pass
-        class C:
-            __metaclass__ = Meta
-        self.assertEqual(copy.deepcopy(C), C)
-
-    def test_deepcopy_deepcopy(self):
-        class C(object):
-            def __init__(self, foo):
-                self.foo = foo
-            def __deepcopy__(self, memo=None):
-                return C(self.foo)
-        x = C(42)
-        y = copy.deepcopy(x)
-        self.assertEqual(y.__class__, x.__class__)
-        self.assertEqual(y.foo, x.foo)
-
-    def test_deepcopy_registry(self):
-        class C(object):
-            def __new__(cls, foo):
-                obj = object.__new__(cls)
-                obj.foo = foo
-                return obj
-        def pickle_C(obj):
-            return (C, (obj.foo,))
-        x = C(42)
-        self.assertRaises(TypeError, copy.deepcopy, x)
-        copy_reg.pickle(C, pickle_C, C)
-        y = copy.deepcopy(x)
-
-    def test_deepcopy_reduce_ex(self):
-        class C(object):
-            def __reduce_ex__(self, proto):
-                return ""
-            def __reduce__(self):
-                raise test_support.TestFailed, "shouldn't call this"
-        x = C()
-        y = copy.deepcopy(x)
-        self.assertTrue(y is x)
-
-    def test_deepcopy_reduce(self):
-        class C(object):
-            def __reduce__(self):
-                return ""
-        x = C()
-        y = copy.deepcopy(x)
-        self.assertTrue(y is x)
-
-    def test_deepcopy_cant(self):
-        class C(object):
-            def __getattribute__(self, name):
-                if name.startswith("__reduce"):
-                    raise AttributeError, name
-                return object.__getattribute__(self, name)
-        x = C()
-        self.assertRaises(copy.Error, copy.deepcopy, x)
-
-    # Type-specific _deepcopy_xxx() methods
-
-    def test_deepcopy_atomic(self):
-        class Classic:
-            pass
-        class NewStyle(object):
-            pass
-        def f():
-            pass
-        tests = [None, 42, 2L**100, 3.14, True, False, 1j,
-                 "hello", u"hello\u1234", f.func_code,
-                 NewStyle, xrange(10), Classic, max]
-        for x in tests:
-            self.assertTrue(copy.deepcopy(x) is x, repr(x))
-
-    def test_deepcopy_list(self):
-        x = [[1, 2], 3]
-        y = copy.deepcopy(x)
-        self.assertEqual(y, x)
-        self.assertTrue(x is not y)
-        self.assertTrue(x[0] is not y[0])
-
-    def test_deepcopy_reflexive_list(self):
-        x = []
-        x.append(x)
-        y = copy.deepcopy(x)
-        self.assertRaises(RuntimeError, cmp, y, x)
-        self.assertTrue(y is not x)
-        self.assertTrue(y[0] is y)
-        self.assertEqual(len(y), 1)
-
-    def test_deepcopy_tuple(self):
-        x = ([1, 2], 3)
-        y = copy.deepcopy(x)
-        self.assertEqual(y, x)
-        self.assertTrue(x is not y)
-        self.assertTrue(x[0] is not y[0])
-
-    def test_deepcopy_reflexive_tuple(self):
-        x = ([],)
-        x[0].append(x)
-        y = copy.deepcopy(x)
-        self.assertRaises(RuntimeError, cmp, y, x)
-        self.assertTrue(y is not x)
-        self.assertTrue(y[0] is not x[0])
-        self.assertTrue(y[0][0] is y)
-
-    def test_deepcopy_dict(self):
-        x = {"foo": [1, 2], "bar": 3}
-        y = copy.deepcopy(x)
-        self.assertEqual(y, x)
-        self.assertTrue(x is not y)
-        self.assertTrue(x["foo"] is not y["foo"])
-
-    def test_deepcopy_reflexive_dict(self):
-        x = {}
-        x['foo'] = x
-        y = copy.deepcopy(x)
-        self.assertRaises(RuntimeError, cmp, y, x)
-        self.assertTrue(y is not x)
-        self.assertTrue(y['foo'] is y)
-        self.assertEqual(len(y), 1)
-
-    def test_deepcopy_keepalive(self):
-        memo = {}
-        x = 42
-        y = copy.deepcopy(x, memo)
-        self.assertTrue(memo[id(x)] is x)
-
-    def test_deepcopy_inst_vanilla(self):
-        class C:
-            def __init__(self, foo):
-                self.foo = foo
-            def __cmp__(self, other):
-                return cmp(self.foo, other.foo)
-        x = C([42])
-        y = copy.deepcopy(x)
-        self.assertEqual(y, x)
-        self.assertTrue(y.foo is not x.foo)
-
-    def test_deepcopy_inst_deepcopy(self):
-        class C:
-            def __init__(self, foo):
-                self.foo = foo
-            def __deepcopy__(self, memo):
-                return C(copy.deepcopy(self.foo, memo))
-            def __cmp__(self, other):
-                return cmp(self.foo, other.foo)
-        x = C([42])
-        y = copy.deepcopy(x)
-        self.assertEqual(y, x)
-        self.assertTrue(y is not x)
-        self.assertTrue(y.foo is not x.foo)
-
-    def test_deepcopy_inst_getinitargs(self):
-        class C:
-            def __init__(self, foo):
-                self.foo = foo
-            def __getinitargs__(self):
-                return (self.foo,)
-            def __cmp__(self, other):
-                return cmp(self.foo, other.foo)
-        x = C([42])
-        y = copy.deepcopy(x)
-        self.assertEqual(y, x)
-        self.assertTrue(y is not x)
-        self.assertTrue(y.foo is not x.foo)
-
-    def test_deepcopy_inst_getstate(self):
-        class C:
-            def __init__(self, foo):
-                self.foo = foo
-            def __getstate__(self):
-                return {"foo": self.foo}
-            def __cmp__(self, other):
-                return cmp(self.foo, other.foo)
-        x = C([42])
-        y = copy.deepcopy(x)
-        self.assertEqual(y, x)
-        self.assertTrue(y is not x)
-        self.assertTrue(y.foo is not x.foo)
-
-    def test_deepcopy_inst_setstate(self):
-        class C:
-            def __init__(self, foo):
-                self.foo = foo
-            def __setstate__(self, state):
-                self.foo = state["foo"]
-            def __cmp__(self, other):
-                return cmp(self.foo, other.foo)
-        x = C([42])
-        y = copy.deepcopy(x)
-        self.assertEqual(y, x)
-        self.assertTrue(y is not x)
-        self.assertTrue(y.foo is not x.foo)
-
-    def test_deepcopy_inst_getstate_setstate(self):
-        class C:
-            def __init__(self, foo):
-                self.foo = foo
-            def __getstate__(self):
-                return self.foo
-            def __setstate__(self, state):
-                self.foo = state
-            def __cmp__(self, other):
-                return cmp(self.foo, other.foo)
-        x = C([42])
-        y = copy.deepcopy(x)
-        self.assertEqual(y, x)
-        self.assertTrue(y is not x)
-        self.assertTrue(y.foo is not x.foo)
-
-    def test_deepcopy_reflexive_inst(self):
-        class C:
-            pass
-        x = C()
-        x.foo = x
-        y = copy.deepcopy(x)
-        self.assertTrue(y is not x)
-        self.assertTrue(y.foo is y)
-
-    # _reconstruct()
-
-    def test_reconstruct_string(self):
-        class C(object):
-            def __reduce__(self):
-                return ""
-        x = C()
-        y = copy.copy(x)
-        self.assertTrue(y is x)
-        y = copy.deepcopy(x)
-        self.assertTrue(y is x)
-
-    def test_reconstruct_nostate(self):
-        class C(object):
-            def __reduce__(self):
-                return (C, ())
-        x = C()
-        x.foo = 42
-        y = copy.copy(x)
-        self.assertTrue(y.__class__ is x.__class__)
-        y = copy.deepcopy(x)
-        self.assertTrue(y.__class__ is x.__class__)
-
-    def test_reconstruct_state(self):
-        class C(object):
-            def __reduce__(self):
-                return (C, (), self.__dict__)
-            def __cmp__(self, other):
-                return cmp(self.__dict__, other.__dict__)
-            __hash__ = None # Silence Py3k warning
-        x = C()
-        x.foo = [42]
-        y = copy.copy(x)
-        self.assertEqual(y, x)
-        y = copy.deepcopy(x)
-        self.assertEqual(y, x)
-        self.assertTrue(y.foo is not x.foo)
-
-    def test_reconstruct_state_setstate(self):
-        class C(object):
-            def __reduce__(self):
-                return (C, (), self.__dict__)
-            def __setstate__(self, state):
-                self.__dict__.update(state)
-            def __cmp__(self, other):
-                return cmp(self.__dict__, other.__dict__)
-            __hash__ = None # Silence Py3k warning
-        x = C()
-        x.foo = [42]
-        y = copy.copy(x)
-        self.assertEqual(y, x)
-        y = copy.deepcopy(x)
-        self.assertEqual(y, x)
-        self.assertTrue(y.foo is not x.foo)
-
-    def test_reconstruct_reflexive(self):
-        class C(object):
-            pass
-        x = C()
-        x.foo = x
-        y = copy.deepcopy(x)
-        self.assertTrue(y is not x)
-        self.assertTrue(y.foo is y)
-
-    # Additions for Python 2.3 and pickle protocol 2
-
-    def test_reduce_4tuple(self):
-        class C(list):
-            def __reduce__(self):
-                return (C, (), self.__dict__, iter(self))
-            def __cmp__(self, other):
-                return (cmp(list(self), list(other)) or
-                        cmp(self.__dict__, other.__dict__))
-            __hash__ = None # Silence Py3k warning
-        x = C([[1, 2], 3])
-        y = copy.copy(x)
-        self.assertEqual(x, y)
-        self.assertTrue(x is not y)
-        self.assertTrue(x[0] is y[0])
-        y = copy.deepcopy(x)
-        self.assertEqual(x, y)
-        self.assertTrue(x is not y)
-        self.assertTrue(x[0] is not y[0])
-
-    def test_reduce_5tuple(self):
-        class C(dict):
-            def __reduce__(self):
-                return (C, (), self.__dict__, None, self.iteritems())
-            def __cmp__(self, other):
-                return (cmp(dict(self), list(dict)) or
-                        cmp(self.__dict__, other.__dict__))
-            __hash__ = None # Silence Py3k warning
-        x = C([("foo", [1, 2]), ("bar", 3)])
-        y = copy.copy(x)
-        self.assertEqual(x, y)
-        self.assertTrue(x is not y)
-        self.assertTrue(x["foo"] is y["foo"])
-        y = copy.deepcopy(x)
-        self.assertEqual(x, y)
-        self.assertTrue(x is not y)
-        self.assertTrue(x["foo"] is not y["foo"])
-
-    def test_copy_slots(self):
-        class C(object):
-            __slots__ = ["foo"]
-        x = C()
-        x.foo = [42]
-        y = copy.copy(x)
-        self.assertTrue(x.foo is y.foo)
-
-    def test_deepcopy_slots(self):
-        class C(object):
-            __slots__ = ["foo"]
-        x = C()
-        x.foo = [42]
-        y = copy.deepcopy(x)
-        self.assertEqual(x.foo, y.foo)
-        self.assertTrue(x.foo is not y.foo)
-
-    def test_deepcopy_dict_subclass(self):
-        class C(dict):
-            def __init__(self, d=None):
-                if not d:
-                    d = {}
-                self._keys = list(d.keys())
-                dict.__init__(self, d)
-            def __setitem__(self, key, item):
-                dict.__setitem__(self, key, item)
-                if key not in self._keys:
-                    self._keys.append(key)
-        x = C(d={'foo':0})
-        y = copy.deepcopy(x)
-        self.assertEqual(x, y)
-        self.assertEqual(x._keys, y._keys)
-        self.assertTrue(x is not y)
-        x['bar'] = 1
-        self.assertNotEqual(x, y)
-        self.assertNotEqual(x._keys, y._keys)
-
-    def test_copy_list_subclass(self):
-        class C(list):
-            pass
-        x = C([[1, 2], 3])
-        x.foo = [4, 5]
-        y = copy.copy(x)
-        self.assertEqual(list(x), list(y))
-        self.assertEqual(x.foo, y.foo)
-        self.assertTrue(x[0] is y[0])
-        self.assertTrue(x.foo is y.foo)
-
-    def test_deepcopy_list_subclass(self):
-        class C(list):
-            pass
-        x = C([[1, 2], 3])
-        x.foo = [4, 5]
-        y = copy.deepcopy(x)
-        self.assertEqual(list(x), list(y))
-        self.assertEqual(x.foo, y.foo)
-        self.assertTrue(x[0] is not y[0])
-        self.assertTrue(x.foo is not y.foo)
-
-    def test_copy_tuple_subclass(self):
-        class C(tuple):
-            pass
-        x = C([1, 2, 3])
-        self.assertEqual(tuple(x), (1, 2, 3))
-        y = copy.copy(x)
-        self.assertEqual(tuple(y), (1, 2, 3))
-
-    def test_deepcopy_tuple_subclass(self):
-        class C(tuple):
-            pass
-        x = C([[1, 2], 3])
-        self.assertEqual(tuple(x), ([1, 2], 3))
-        y = copy.deepcopy(x)
-        self.assertEqual(tuple(y), ([1, 2], 3))
-        self.assertTrue(x is not y)
-        self.assertTrue(x[0] is not y[0])
-
-    def test_getstate_exc(self):
-        class EvilState(object):
-            def __getstate__(self):
-                raise ValueError, "ain't got no stickin' state"
-        self.assertRaises(ValueError, copy.copy, EvilState())
-
-    def test_copy_function(self):
-        self.assertEqual(copy.copy(global_foo), global_foo)
-        def foo(x, y): return x+y
-        self.assertEqual(copy.copy(foo), foo)
-        bar = lambda: None
-        self.assertEqual(copy.copy(bar), bar)
-
-    def test_deepcopy_function(self):
-        self.assertEqual(copy.deepcopy(global_foo), global_foo)
-        def foo(x, y): return x+y
-        self.assertEqual(copy.deepcopy(foo), foo)
-        bar = lambda: None
-        self.assertEqual(copy.deepcopy(bar), bar)
-
-    def _check_weakref(self, _copy):
-        class C(object):
-            pass
-        obj = C()
-        x = weakref.ref(obj)
-        y = _copy(x)
-        self.assertTrue(y is x)
-        del obj
-        y = _copy(x)
-        self.assertTrue(y is x)
-
-    def test_copy_weakref(self):
-        self._check_weakref(copy.copy)
-
-    def test_deepcopy_weakref(self):
-        self._check_weakref(copy.deepcopy)
-
-    def _check_copy_weakdict(self, _dicttype):
-        class C(object):
-            pass
-        a, b, c, d = [C() for i in xrange(4)]
-        u = _dicttype()
-        u[a] = b
-        u[c] = d
-        v = copy.copy(u)
-        self.assertFalse(v is u)
-        self.assertEqual(v, u)
-        self.assertEqual(v[a], b)
-        self.assertEqual(v[c], d)
-        self.assertEqual(len(v), 2)
-        del c, d
-        self.assertEqual(len(v), 1)
-        x, y = C(), C()
-        # The underlying containers are decoupled
-        v[x] = y
-        self.assertNotIn(x, u)
-
-    def test_copy_weakkeydict(self):
-        self._check_copy_weakdict(weakref.WeakKeyDictionary)
-
-    def test_copy_weakvaluedict(self):
-        self._check_copy_weakdict(weakref.WeakValueDictionary)
-
-    def test_deepcopy_weakkeydict(self):
-        class C(object):
-            def __init__(self, i):
-                self.i = i
-        a, b, c, d = [C(i) for i in xrange(4)]
-        u = weakref.WeakKeyDictionary()
-        u[a] = b
-        u[c] = d
-        # Keys aren't copied, values are
-        v = copy.deepcopy(u)
-        self.assertNotEqual(v, u)
-        self.assertEqual(len(v), 2)
-        self.assertFalse(v[a] is b)
-        self.assertFalse(v[c] is d)
-        self.assertEqual(v[a].i, b.i)
-        self.assertEqual(v[c].i, d.i)
-        del c
-        self.assertEqual(len(v), 1)
-
-    def test_deepcopy_weakvaluedict(self):
-        class C(object):
-            def __init__(self, i):
-                self.i = i
-        a, b, c, d = [C(i) for i in xrange(4)]
-        u = weakref.WeakValueDictionary()
-        u[a] = b
-        u[c] = d
-        # Keys are copied, values aren't
-        v = copy.deepcopy(u)
-        self.assertNotEqual(v, u)
-        self.assertEqual(len(v), 2)
-        (x, y), (z, t) = sorted(v.items(), key=lambda pair: pair[0].i)
-        self.assertFalse(x is a)
-        self.assertEqual(x.i, a.i)
-        self.assertTrue(y is b)
-        self.assertFalse(z is c)
-        self.assertEqual(z.i, c.i)
-        self.assertTrue(t is d)
-        del x, y, z, t
-        del d
-        self.assertEqual(len(v), 1)
-
-    def test_deepcopy_bound_method(self):
-        class Foo(object):
-            def m(self):
-                pass
-        f = Foo()
-        f.b = f.m
-        g = copy.deepcopy(f)
-        self.assertEqual(g.m, g.b)
-        self.assertTrue(g.b.im_self is g)
-        g.b()
-
-
-def global_foo(x, y): return x+y
-
-def test_main():
-    test_support.run_unittest(TestCopy)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_copy_reg.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_copy_reg.py
deleted file mode 100644
index 1a56ac9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_copy_reg.py
+++ /dev/null
@@ -1,121 +0,0 @@
-import copy_reg
-import unittest
-
-from test import test_support
-from test.pickletester import ExtensionSaver
-
-class C:
-    pass
-
-
-class WithoutSlots(object):
-    pass
-
-class WithWeakref(object):
-    __slots__ = ('__weakref__',)
-
-class WithPrivate(object):
-    __slots__ = ('__spam',)
-
-class WithSingleString(object):
-    __slots__ = 'spam'
-
-class WithInherited(WithSingleString):
-    __slots__ = ('eggs',)
-
-
-class CopyRegTestCase(unittest.TestCase):
-
-    def test_class(self):
-        self.assertRaises(TypeError, copy_reg.pickle,
-                          C, None, None)
-
-    def test_noncallable_reduce(self):
-        self.assertRaises(TypeError, copy_reg.pickle,
-                          type(1), "not a callable")
-
-    def test_noncallable_constructor(self):
-        self.assertRaises(TypeError, copy_reg.pickle,
-                          type(1), int, "not a callable")
-
-    def test_bool(self):
-        import copy
-        self.assertEqual(True, copy.copy(True))
-
-    def test_extension_registry(self):
-        mod, func, code = 'junk1 ', ' junk2', 0xabcd
-        e = ExtensionSaver(code)
-        try:
-            # Shouldn't be in registry now.
-            self.assertRaises(ValueError, copy_reg.remove_extension,
-                              mod, func, code)
-            copy_reg.add_extension(mod, func, code)
-            # Should be in the registry.
-            self.assertTrue(copy_reg._extension_registry[mod, func] == code)
-            self.assertTrue(copy_reg._inverted_registry[code] == (mod, func))
-            # Shouldn't be in the cache.
-            self.assertNotIn(code, copy_reg._extension_cache)
-            # Redundant registration should be OK.
-            copy_reg.add_extension(mod, func, code)  # shouldn't blow up
-            # Conflicting code.
-            self.assertRaises(ValueError, copy_reg.add_extension,
-                              mod, func, code + 1)
-            self.assertRaises(ValueError, copy_reg.remove_extension,
-                              mod, func, code + 1)
-            # Conflicting module name.
-            self.assertRaises(ValueError, copy_reg.add_extension,
-                              mod[1:], func, code )
-            self.assertRaises(ValueError, copy_reg.remove_extension,
-                              mod[1:], func, code )
-            # Conflicting function name.
-            self.assertRaises(ValueError, copy_reg.add_extension,
-                              mod, func[1:], code)
-            self.assertRaises(ValueError, copy_reg.remove_extension,
-                              mod, func[1:], code)
-            # Can't remove one that isn't registered at all.
-            if code + 1 not in copy_reg._inverted_registry:
-                self.assertRaises(ValueError, copy_reg.remove_extension,
-                                  mod[1:], func[1:], code + 1)
-
-        finally:
-            e.restore()
-
-        # Shouldn't be there anymore.
-        self.assertNotIn((mod, func), copy_reg._extension_registry)
-        # The code *may* be in copy_reg._extension_registry, though, if
-        # we happened to pick on a registered code.  So don't check for
-        # that.
-
-        # Check valid codes at the limits.
-        for code in 1, 0x7fffffff:
-            e = ExtensionSaver(code)
-            try:
-                copy_reg.add_extension(mod, func, code)
-                copy_reg.remove_extension(mod, func, code)
-            finally:
-                e.restore()
-
-        # Ensure invalid codes blow up.
-        for code in -1, 0, 0x80000000L:
-            self.assertRaises(ValueError, copy_reg.add_extension,
-                              mod, func, code)
-
-    def test_slotnames(self):
-        self.assertEqual(copy_reg._slotnames(WithoutSlots), [])
-        self.assertEqual(copy_reg._slotnames(WithWeakref), [])
-        expected = ['_WithPrivate__spam']
-        self.assertEqual(copy_reg._slotnames(WithPrivate), expected)
-        self.assertEqual(copy_reg._slotnames(WithSingleString), ['spam'])
-        expected = ['eggs', 'spam']
-        expected.sort()
-        result = copy_reg._slotnames(WithInherited)
-        result.sort()
-        self.assertEqual(result, expected)
-
-
-def test_main():
-    test_support.run_unittest(CopyRegTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cpickle.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cpickle.py
deleted file mode 100644
index 4e34874..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cpickle.py
+++ /dev/null
@@ -1,139 +0,0 @@
-import cPickle, unittest
-from cStringIO import StringIO
-from test.pickletester import AbstractPickleTests, AbstractPickleModuleTests
-from test.pickletester import AbstractPicklerUnpicklerObjectTests
-from test import test_support
-
-class cPickleTests(AbstractPickleTests, AbstractPickleModuleTests):
-
-    def setUp(self):
-        self.dumps = cPickle.dumps
-        self.loads = cPickle.loads
-
-    error = cPickle.BadPickleGet
-    module = cPickle
-
-class cPicklePicklerTests(AbstractPickleTests):
-
-    def dumps(self, arg, proto=0):
-        f = StringIO()
-        p = cPickle.Pickler(f, proto)
-        p.dump(arg)
-        f.seek(0)
-        return f.read()
-
-    def loads(self, buf):
-        f = StringIO(buf)
-        p = cPickle.Unpickler(f)
-        return p.load()
-
-    error = cPickle.BadPickleGet
-
-class cPickleListPicklerTests(AbstractPickleTests):
-
-    def dumps(self, arg, proto=0):
-        p = cPickle.Pickler(proto)
-        p.dump(arg)
-        return p.getvalue()
-
-    def loads(self, *args):
-        f = StringIO(args[0])
-        p = cPickle.Unpickler(f)
-        return p.load()
-
-    error = cPickle.BadPickleGet
-
-class cPickleFastPicklerTests(AbstractPickleTests):
-
-    def dumps(self, arg, proto=0):
-        f = StringIO()
-        p = cPickle.Pickler(f, proto)
-        p.fast = 1
-        p.dump(arg)
-        f.seek(0)
-        return f.read()
-
-    def loads(self, *args):
-        f = StringIO(args[0])
-        p = cPickle.Unpickler(f)
-        return p.load()
-
-    error = cPickle.BadPickleGet
-
-    def test_recursive_list(self):
-        self.assertRaises(ValueError,
-                          AbstractPickleTests.test_recursive_list,
-                          self)
-
-    def test_recursive_tuple(self):
-        self.assertRaises(ValueError,
-                          AbstractPickleTests.test_recursive_tuple,
-                          self)
-
-    def test_recursive_inst(self):
-        self.assertRaises(ValueError,
-                          AbstractPickleTests.test_recursive_inst,
-                          self)
-
-    def test_recursive_dict(self):
-        self.assertRaises(ValueError,
-                          AbstractPickleTests.test_recursive_dict,
-                          self)
-
-    def test_recursive_multi(self):
-        self.assertRaises(ValueError,
-                          AbstractPickleTests.test_recursive_multi,
-                          self)
-
-    def test_nonrecursive_deep(self):
-        # If it's not cyclic, it should pickle OK even if the nesting
-        # depth exceeds PY_CPICKLE_FAST_LIMIT.  That happens to be
-        # 50 today.  Jack Jansen reported stack overflow on Mac OS 9
-        # at 64.
-        a = []
-        for i in range(60):
-            a = [a]
-        b = self.loads(self.dumps(a))
-        self.assertEqual(a, b)
-
-class cPicklePicklerUnpicklerObjectTests(AbstractPicklerUnpicklerObjectTests):
-
-    pickler_class = cPickle.Pickler
-    unpickler_class = cPickle.Unpickler
-
-
-class Node(object):
-    pass
-
-class cPickleDeepRecursive(unittest.TestCase):
-    def test_issue2702(self):
-        # This should raise a RecursionLimit but in some
-        # platforms (FreeBSD, win32) sometimes raises KeyError instead,
-        # or just silently terminates the interpreter (=crashes).
-        nodes = [Node() for i in range(500)]
-        for n in nodes:
-            n.connections = list(nodes)
-            n.connections.remove(n)
-        self.assertRaises((AttributeError, RuntimeError), cPickle.dumps, n)
-
-    def test_issue3179(self):
-        # Safe test, because I broke this case when fixing the
-        # behaviour for the previous test.
-        res=[]
-        for x in range(1,2000):
-            res.append(dict(doc=x, similar=[]))
-        cPickle.dumps(res)
-
-
-def test_main():
-    test_support.run_unittest(
-        cPickleTests,
-        cPicklePicklerTests,
-        cPickleListPicklerTests,
-        cPickleFastPicklerTests,
-        cPickleDeepRecursive,
-        cPicklePicklerUnpicklerObjectTests,
-    )
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cprofile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cprofile.py
deleted file mode 100644
index fb428b4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_cprofile.py
+++ /dev/null
@@ -1,127 +0,0 @@
-"""Test suite for the cProfile module."""
-
-import sys
-from test.test_support import run_unittest, TESTFN, unlink
-
-# rip off all interesting stuff from test_profile
-import cProfile
-from test.test_profile import ProfileTest, regenerate_expected_output
-
-class CProfileTest(ProfileTest):
-    profilerclass = cProfile.Profile
-    expected_list_sort_output = "{method 'sort' of 'list' objects}"
-
-    # Issue 3895.
-    def test_bad_counter_during_dealloc(self):
-        import _lsprof
-        # Must use a file as StringIO doesn't trigger the bug.
-        sys.stderr = open(TESTFN, 'w')
-        try:
-            obj = _lsprof.Profiler(lambda: int)
-            obj.enable()
-            obj = _lsprof.Profiler(1)
-            obj.disable()
-        finally:
-            sys.stderr = sys.__stderr__
-            unlink(TESTFN)
-
-
-def test_main():
-    run_unittest(CProfileTest)
-
-def main():
-    if '-r' not in sys.argv:
-        test_main()
-    else:
-        regenerate_expected_output(__file__, CProfileTest)
-
-
-# Don't remove this comment. Everything below it is auto-generated.
-#--cut--------------------------------------------------------------------------
-CProfileTest.expected_output['print_stats'] = """\
-         126 function calls (106 primitive calls) in 1.000 seconds
-
-   Ordered by: standard name
-
-   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
-        1    0.000    0.000    1.000    1.000 <string>:1(<module>)
-       28    0.028    0.001    0.028    0.001 profilee.py:110(__getattr__)
-        1    0.270    0.270    1.000    1.000 profilee.py:25(testfunc)
-     23/3    0.150    0.007    0.170    0.057 profilee.py:35(factorial)
-       20    0.020    0.001    0.020    0.001 profilee.py:48(mul)
-        2    0.040    0.020    0.600    0.300 profilee.py:55(helper)
-        4    0.116    0.029    0.120    0.030 profilee.py:73(helper1)
-        2    0.000    0.000    0.140    0.070 profilee.py:84(helper2_indirect)
-        8    0.312    0.039    0.400    0.050 profilee.py:88(helper2)
-        8    0.064    0.008    0.080    0.010 profilee.py:98(subhelper)
-       12    0.000    0.000    0.012    0.001 {hasattr}
-        4    0.000    0.000    0.000    0.000 {method 'append' of 'list' objects}
-        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
-        8    0.000    0.000    0.000    0.000 {range}
-        4    0.000    0.000    0.000    0.000 {sys.exc_info}
-
-
-"""
-CProfileTest.expected_output['print_callers'] = """\
-   Ordered by: standard name
-
-Function                                          was called by...
-                                                      ncalls  tottime  cumtime
-<string>:1(<module>)                              <-
-profilee.py:110(__getattr__)                      <-      16    0.016    0.016  profilee.py:98(subhelper)
-                                                          12    0.012    0.012  {hasattr}
-profilee.py:25(testfunc)                          <-       1    0.270    1.000  <string>:1(<module>)
-profilee.py:35(factorial)                         <-       1    0.014    0.130  profilee.py:25(testfunc)
-                                                        20/3    0.130    0.147  profilee.py:35(factorial)
-                                                           2    0.006    0.040  profilee.py:84(helper2_indirect)
-profilee.py:48(mul)                               <-      20    0.020    0.020  profilee.py:35(factorial)
-profilee.py:55(helper)                            <-       2    0.040    0.600  profilee.py:25(testfunc)
-profilee.py:73(helper1)                           <-       4    0.116    0.120  profilee.py:55(helper)
-profilee.py:84(helper2_indirect)                  <-       2    0.000    0.140  profilee.py:55(helper)
-profilee.py:88(helper2)                           <-       6    0.234    0.300  profilee.py:55(helper)
-                                                           2    0.078    0.100  profilee.py:84(helper2_indirect)
-profilee.py:98(subhelper)                         <-       8    0.064    0.080  profilee.py:88(helper2)
-{hasattr}                                         <-       4    0.000    0.004  profilee.py:73(helper1)
-                                                           8    0.000    0.008  profilee.py:88(helper2)
-{method 'append' of 'list' objects}               <-       4    0.000    0.000  profilee.py:73(helper1)
-{method 'disable' of '_lsprof.Profiler' objects}  <-
-{range}                                           <-       8    0.000    0.000  profilee.py:98(subhelper)
-{sys.exc_info}                                    <-       4    0.000    0.000  profilee.py:73(helper1)
-
-
-"""
-CProfileTest.expected_output['print_callees'] = """\
-   Ordered by: standard name
-
-Function                                          called...
-                                                      ncalls  tottime  cumtime
-<string>:1(<module>)                              ->       1    0.270    1.000  profilee.py:25(testfunc)
-profilee.py:110(__getattr__)                      ->
-profilee.py:25(testfunc)                          ->       1    0.014    0.130  profilee.py:35(factorial)
-                                                           2    0.040    0.600  profilee.py:55(helper)
-profilee.py:35(factorial)                         ->    20/3    0.130    0.147  profilee.py:35(factorial)
-                                                          20    0.020    0.020  profilee.py:48(mul)
-profilee.py:48(mul)                               ->
-profilee.py:55(helper)                            ->       4    0.116    0.120  profilee.py:73(helper1)
-                                                           2    0.000    0.140  profilee.py:84(helper2_indirect)
-                                                           6    0.234    0.300  profilee.py:88(helper2)
-profilee.py:73(helper1)                           ->       4    0.000    0.004  {hasattr}
-                                                           4    0.000    0.000  {method 'append' of 'list' objects}
-                                                           4    0.000    0.000  {sys.exc_info}
-profilee.py:84(helper2_indirect)                  ->       2    0.006    0.040  profilee.py:35(factorial)
-                                                           2    0.078    0.100  profilee.py:88(helper2)
-profilee.py:88(helper2)                           ->       8    0.064    0.080  profilee.py:98(subhelper)
-                                                           8    0.000    0.008  {hasattr}
-profilee.py:98(subhelper)                         ->      16    0.016    0.016  profilee.py:110(__getattr__)
-                                                           8    0.000    0.000  {range}
-{hasattr}                                         ->      12    0.012    0.012  profilee.py:110(__getattr__)
-{method 'append' of 'list' objects}               ->
-{method 'disable' of '_lsprof.Profiler' objects}  ->
-{range}                                           ->
-{sys.exc_info}                                    ->
-
-
-"""
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_crypt.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_crypt.py
deleted file mode 100644
index 9ad5dff..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_crypt.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from test import test_support
-import unittest
-
-crypt = test_support.import_module('crypt')
-
-class CryptTestCase(unittest.TestCase):
-
-    def test_crypt(self):
-        c = crypt.crypt('mypassword', 'ab')
-        if test_support.verbose:
-            print 'Test encryption: ', c
-
-def test_main():
-    test_support.run_unittest(CryptTestCase)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_csv.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_csv.py
deleted file mode 100644
index 647d1d6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_csv.py
+++ /dev/null
@@ -1,1055 +0,0 @@
-# -*- coding: iso-8859-1 -*-
-# Copyright (C) 2001,2002 Python Software Foundation
-# csv package unit tests
-
-import sys
-import os
-import unittest
-from StringIO import StringIO
-import tempfile
-import csv
-import gc
-import io
-from test import test_support
-
-class Test_Csv(unittest.TestCase):
-    """
-    Test the underlying C csv parser in ways that are not appropriate
-    from the high level interface. Further tests of this nature are done
-    in TestDialectRegistry.
-    """
-    def _test_arg_valid(self, ctor, arg):
-        self.assertRaises(TypeError, ctor)
-        self.assertRaises(TypeError, ctor, None)
-        self.assertRaises(TypeError, ctor, arg, bad_attr = 0)
-        self.assertRaises(TypeError, ctor, arg, delimiter = 0)
-        self.assertRaises(TypeError, ctor, arg, delimiter = 'XX')
-        self.assertRaises(csv.Error, ctor, arg, 'foo')
-        self.assertRaises(TypeError, ctor, arg, delimiter=None)
-        self.assertRaises(TypeError, ctor, arg, delimiter=1)
-        self.assertRaises(TypeError, ctor, arg, quotechar=1)
-        self.assertRaises(TypeError, ctor, arg, lineterminator=None)
-        self.assertRaises(TypeError, ctor, arg, lineterminator=1)
-        self.assertRaises(TypeError, ctor, arg, quoting=None)
-        self.assertRaises(TypeError, ctor, arg,
-                          quoting=csv.QUOTE_ALL, quotechar='')
-        self.assertRaises(TypeError, ctor, arg,
-                          quoting=csv.QUOTE_ALL, quotechar=None)
-
-    def test_reader_arg_valid(self):
-        self._test_arg_valid(csv.reader, [])
-
-    def test_writer_arg_valid(self):
-        self._test_arg_valid(csv.writer, StringIO())
-
-    def _test_default_attrs(self, ctor, *args):
-        obj = ctor(*args)
-        # Check defaults
-        self.assertEqual(obj.dialect.delimiter, ',')
-        self.assertEqual(obj.dialect.doublequote, True)
-        self.assertEqual(obj.dialect.escapechar, None)
-        self.assertEqual(obj.dialect.lineterminator, "\r\n")
-        self.assertEqual(obj.dialect.quotechar, '"')
-        self.assertEqual(obj.dialect.quoting, csv.QUOTE_MINIMAL)
-        self.assertEqual(obj.dialect.skipinitialspace, False)
-        self.assertEqual(obj.dialect.strict, False)
-        # Try deleting or changing attributes (they are read-only)
-        self.assertRaises(TypeError, delattr, obj.dialect, 'delimiter')
-        self.assertRaises(TypeError, setattr, obj.dialect, 'delimiter', ':')
-        self.assertRaises(AttributeError, delattr, obj.dialect, 'quoting')
-        self.assertRaises(AttributeError, setattr, obj.dialect,
-                          'quoting', None)
-
-    def test_reader_attrs(self):
-        self._test_default_attrs(csv.reader, [])
-
-    def test_writer_attrs(self):
-        self._test_default_attrs(csv.writer, StringIO())
-
-    def _test_kw_attrs(self, ctor, *args):
-        # Now try with alternate options
-        kwargs = dict(delimiter=':', doublequote=False, escapechar='\\',
-                      lineterminator='\r', quotechar='*',
-                      quoting=csv.QUOTE_NONE, skipinitialspace=True,
-                      strict=True)
-        obj = ctor(*args, **kwargs)
-        self.assertEqual(obj.dialect.delimiter, ':')
-        self.assertEqual(obj.dialect.doublequote, False)
-        self.assertEqual(obj.dialect.escapechar, '\\')
-        self.assertEqual(obj.dialect.lineterminator, "\r")
-        self.assertEqual(obj.dialect.quotechar, '*')
-        self.assertEqual(obj.dialect.quoting, csv.QUOTE_NONE)
-        self.assertEqual(obj.dialect.skipinitialspace, True)
-        self.assertEqual(obj.dialect.strict, True)
-
-    def test_reader_kw_attrs(self):
-        self._test_kw_attrs(csv.reader, [])
-
-    def test_writer_kw_attrs(self):
-        self._test_kw_attrs(csv.writer, StringIO())
-
-    def _test_dialect_attrs(self, ctor, *args):
-        # Now try with dialect-derived options
-        class dialect:
-            delimiter='-'
-            doublequote=False
-            escapechar='^'
-            lineterminator='$'
-            quotechar='#'
-            quoting=csv.QUOTE_ALL
-            skipinitialspace=True
-            strict=False
-        args = args + (dialect,)
-        obj = ctor(*args)
-        self.assertEqual(obj.dialect.delimiter, '-')
-        self.assertEqual(obj.dialect.doublequote, False)
-        self.assertEqual(obj.dialect.escapechar, '^')
-        self.assertEqual(obj.dialect.lineterminator, "$")
-        self.assertEqual(obj.dialect.quotechar, '#')
-        self.assertEqual(obj.dialect.quoting, csv.QUOTE_ALL)
-        self.assertEqual(obj.dialect.skipinitialspace, True)
-        self.assertEqual(obj.dialect.strict, False)
-
-    def test_reader_dialect_attrs(self):
-        self._test_dialect_attrs(csv.reader, [])
-
-    def test_writer_dialect_attrs(self):
-        self._test_dialect_attrs(csv.writer, StringIO())
-
-
-    def _write_test(self, fields, expect, **kwargs):
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            writer = csv.writer(fileobj, **kwargs)
-            writer.writerow(fields)
-            fileobj.seek(0)
-            self.assertEqual(fileobj.read(),
-                             expect + writer.dialect.lineterminator)
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-    def test_write_arg_valid(self):
-        self.assertRaises(csv.Error, self._write_test, None, '')
-        self._write_test((), '')
-        self._write_test([None], '""')
-        self.assertRaises(csv.Error, self._write_test,
-                          [None], None, quoting = csv.QUOTE_NONE)
-        # Check that exceptions are passed up the chain
-        class BadList:
-            def __len__(self):
-                return 10;
-            def __getitem__(self, i):
-                if i > 2:
-                    raise IOError
-        self.assertRaises(IOError, self._write_test, BadList(), '')
-        class BadItem:
-            def __str__(self):
-                raise IOError
-        self.assertRaises(IOError, self._write_test, [BadItem()], '')
-
-    def test_write_bigfield(self):
-        # This exercises the buffer realloc functionality
-        bigstring = 'X' * 50000
-        self._write_test([bigstring,bigstring], '%s,%s' % \
-                         (bigstring, bigstring))
-
-    def test_write_quoting(self):
-        self._write_test(['a',1,'p,q'], 'a,1,"p,q"')
-        self.assertRaises(csv.Error,
-                          self._write_test,
-                          ['a',1,'p,q'], 'a,1,p,q',
-                          quoting = csv.QUOTE_NONE)
-        self._write_test(['a',1,'p,q'], 'a,1,"p,q"',
-                         quoting = csv.QUOTE_MINIMAL)
-        self._write_test(['a',1,'p,q'], '"a",1,"p,q"',
-                         quoting = csv.QUOTE_NONNUMERIC)
-        self._write_test(['a',1,'p,q'], '"a","1","p,q"',
-                         quoting = csv.QUOTE_ALL)
-        self._write_test(['a\nb',1], '"a\nb","1"',
-                         quoting = csv.QUOTE_ALL)
-
-    def test_write_escape(self):
-        self._write_test(['a',1,'p,q'], 'a,1,"p,q"',
-                         escapechar='\\')
-        self.assertRaises(csv.Error,
-                          self._write_test,
-                          ['a',1,'p,"q"'], 'a,1,"p,\\"q\\""',
-                          escapechar=None, doublequote=False)
-        self._write_test(['a',1,'p,"q"'], 'a,1,"p,\\"q\\""',
-                         escapechar='\\', doublequote = False)
-        self._write_test(['"'], '""""',
-                         escapechar='\\', quoting = csv.QUOTE_MINIMAL)
-        self._write_test(['"'], '\\"',
-                         escapechar='\\', quoting = csv.QUOTE_MINIMAL,
-                         doublequote = False)
-        self._write_test(['"'], '\\"',
-                         escapechar='\\', quoting = csv.QUOTE_NONE)
-        self._write_test(['a',1,'p,q'], 'a,1,p\\,q',
-                         escapechar='\\', quoting = csv.QUOTE_NONE)
-
-    def test_writerows(self):
-        class BrokenFile:
-            def write(self, buf):
-                raise IOError
-        writer = csv.writer(BrokenFile())
-        self.assertRaises(IOError, writer.writerows, [['a']])
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            writer = csv.writer(fileobj)
-            self.assertRaises(TypeError, writer.writerows, None)
-            writer.writerows([['a','b'],['c','d']])
-            fileobj.seek(0)
-            self.assertEqual(fileobj.read(), "a,b\r\nc,d\r\n")
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-    def _read_test(self, input, expect, **kwargs):
-        reader = csv.reader(input, **kwargs)
-        result = list(reader)
-        self.assertEqual(result, expect)
-
-    def test_read_oddinputs(self):
-        self._read_test([], [])
-        self._read_test([''], [[]])
-        self.assertRaises(csv.Error, self._read_test,
-                          ['"ab"c'], None, strict = 1)
-        # cannot handle null bytes for the moment
-        self.assertRaises(csv.Error, self._read_test,
-                          ['ab\0c'], None, strict = 1)
-        self._read_test(['"ab"c'], [['abc']], doublequote = 0)
-
-    def test_read_eol(self):
-        self._read_test(['a,b'], [['a','b']])
-        self._read_test(['a,b\n'], [['a','b']])
-        self._read_test(['a,b\r\n'], [['a','b']])
-        self._read_test(['a,b\r'], [['a','b']])
-        self.assertRaises(csv.Error, self._read_test, ['a,b\rc,d'], [])
-        self.assertRaises(csv.Error, self._read_test, ['a,b\nc,d'], [])
-        self.assertRaises(csv.Error, self._read_test, ['a,b\r\nc,d'], [])
-
-    def test_read_escape(self):
-        self._read_test(['a,\\b,c'], [['a', 'b', 'c']], escapechar='\\')
-        self._read_test(['a,b\\,c'], [['a', 'b,c']], escapechar='\\')
-        self._read_test(['a,"b\\,c"'], [['a', 'b,c']], escapechar='\\')
-        self._read_test(['a,"b,\\c"'], [['a', 'b,c']], escapechar='\\')
-        self._read_test(['a,"b,c\\""'], [['a', 'b,c"']], escapechar='\\')
-        self._read_test(['a,"b,c"\\'], [['a', 'b,c\\']], escapechar='\\')
-
-    def test_read_quoting(self):
-        self._read_test(['1,",3,",5'], [['1', ',3,', '5']])
-        self._read_test(['1,",3,",5'], [['1', '"', '3', '"', '5']],
-                        quotechar=None, escapechar='\\')
-        self._read_test(['1,",3,",5'], [['1', '"', '3', '"', '5']],
-                        quoting=csv.QUOTE_NONE, escapechar='\\')
-        # will this fail where locale uses comma for decimals?
-        self._read_test([',3,"5",7.3, 9'], [['', 3, '5', 7.3, 9]],
-                        quoting=csv.QUOTE_NONNUMERIC)
-        self._read_test(['"a\nb", 7'], [['a\nb', ' 7']])
-        self.assertRaises(ValueError, self._read_test,
-                          ['abc,3'], [[]],
-                          quoting=csv.QUOTE_NONNUMERIC)
-
-    def test_read_bigfield(self):
-        # This exercises the buffer realloc functionality and field size
-        # limits.
-        limit = csv.field_size_limit()
-        try:
-            size = 50000
-            bigstring = 'X' * size
-            bigline = '%s,%s' % (bigstring, bigstring)
-            self._read_test([bigline], [[bigstring, bigstring]])
-            csv.field_size_limit(size)
-            self._read_test([bigline], [[bigstring, bigstring]])
-            self.assertEqual(csv.field_size_limit(), size)
-            csv.field_size_limit(size-1)
-            self.assertRaises(csv.Error, self._read_test, [bigline], [])
-            self.assertRaises(TypeError, csv.field_size_limit, None)
-            self.assertRaises(TypeError, csv.field_size_limit, 1, None)
-        finally:
-            csv.field_size_limit(limit)
-
-    def test_read_linenum(self):
-        for r in (csv.reader(['line,1', 'line,2', 'line,3']),
-                  csv.DictReader(['line,1', 'line,2', 'line,3'],
-                                 fieldnames=['a', 'b', 'c'])):
-            self.assertEqual(r.line_num, 0)
-            r.next()
-            self.assertEqual(r.line_num, 1)
-            r.next()
-            self.assertEqual(r.line_num, 2)
-            r.next()
-            self.assertEqual(r.line_num, 3)
-            self.assertRaises(StopIteration, r.next)
-            self.assertEqual(r.line_num, 3)
-
-    def test_roundtrip_quoteed_newlines(self):
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            writer = csv.writer(fileobj)
-            self.assertRaises(TypeError, writer.writerows, None)
-            rows = [['a\nb','b'],['c','x\r\nd']]
-            writer.writerows(rows)
-            fileobj.seek(0)
-            for i, row in enumerate(csv.reader(fileobj)):
-                self.assertEqual(row, rows[i])
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-class TestDialectRegistry(unittest.TestCase):
-    def test_registry_badargs(self):
-        self.assertRaises(TypeError, csv.list_dialects, None)
-        self.assertRaises(TypeError, csv.get_dialect)
-        self.assertRaises(csv.Error, csv.get_dialect, None)
-        self.assertRaises(csv.Error, csv.get_dialect, "nonesuch")
-        self.assertRaises(TypeError, csv.unregister_dialect)
-        self.assertRaises(csv.Error, csv.unregister_dialect, None)
-        self.assertRaises(csv.Error, csv.unregister_dialect, "nonesuch")
-        self.assertRaises(TypeError, csv.register_dialect, None)
-        self.assertRaises(TypeError, csv.register_dialect, None, None)
-        self.assertRaises(TypeError, csv.register_dialect, "nonesuch", 0, 0)
-        self.assertRaises(TypeError, csv.register_dialect, "nonesuch",
-                          badargument=None)
-        self.assertRaises(TypeError, csv.register_dialect, "nonesuch",
-                          quoting=None)
-        self.assertRaises(TypeError, csv.register_dialect, [])
-
-    def test_registry(self):
-        class myexceltsv(csv.excel):
-            delimiter = "\t"
-        name = "myexceltsv"
-        expected_dialects = csv.list_dialects() + [name]
-        expected_dialects.sort()
-        csv.register_dialect(name, myexceltsv)
-        self.addCleanup(csv.unregister_dialect, name)
-        self.assertEqual(csv.get_dialect(name).delimiter, '\t')
-        got_dialects = sorted(csv.list_dialects())
-        self.assertEqual(expected_dialects, got_dialects)
-
-    def test_register_kwargs(self):
-        name = 'fedcba'
-        csv.register_dialect(name, delimiter=';')
-        self.addCleanup(csv.unregister_dialect, name)
-        self.assertEqual(csv.get_dialect(name).delimiter, ';')
-        self.assertEqual([['X', 'Y', 'Z']], list(csv.reader(['X;Y;Z'], name)))
-
-    def test_incomplete_dialect(self):
-        class myexceltsv(csv.Dialect):
-            delimiter = "\t"
-        self.assertRaises(csv.Error, myexceltsv)
-
-    def test_space_dialect(self):
-        class space(csv.excel):
-            delimiter = " "
-            quoting = csv.QUOTE_NONE
-            escapechar = "\\"
-
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            fileobj.write("abc def\nc1ccccc1 benzene\n")
-            fileobj.seek(0)
-            rdr = csv.reader(fileobj, dialect=space())
-            self.assertEqual(rdr.next(), ["abc", "def"])
-            self.assertEqual(rdr.next(), ["c1ccccc1", "benzene"])
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-    def test_dialect_apply(self):
-        class testA(csv.excel):
-            delimiter = "\t"
-        class testB(csv.excel):
-            delimiter = ":"
-        class testC(csv.excel):
-            delimiter = "|"
-
-        csv.register_dialect('testC', testC)
-        try:
-            fd, name = tempfile.mkstemp()
-            fileobj = os.fdopen(fd, "w+b")
-            try:
-                writer = csv.writer(fileobj)
-                writer.writerow([1,2,3])
-                fileobj.seek(0)
-                self.assertEqual(fileobj.read(), "1,2,3\r\n")
-            finally:
-                fileobj.close()
-                os.unlink(name)
-
-            fd, name = tempfile.mkstemp()
-            fileobj = os.fdopen(fd, "w+b")
-            try:
-                writer = csv.writer(fileobj, testA)
-                writer.writerow([1,2,3])
-                fileobj.seek(0)
-                self.assertEqual(fileobj.read(), "1\t2\t3\r\n")
-            finally:
-                fileobj.close()
-                os.unlink(name)
-
-            fd, name = tempfile.mkstemp()
-            fileobj = os.fdopen(fd, "w+b")
-            try:
-                writer = csv.writer(fileobj, dialect=testB())
-                writer.writerow([1,2,3])
-                fileobj.seek(0)
-                self.assertEqual(fileobj.read(), "1:2:3\r\n")
-            finally:
-                fileobj.close()
-                os.unlink(name)
-
-            fd, name = tempfile.mkstemp()
-            fileobj = os.fdopen(fd, "w+b")
-            try:
-                writer = csv.writer(fileobj, dialect='testC')
-                writer.writerow([1,2,3])
-                fileobj.seek(0)
-                self.assertEqual(fileobj.read(), "1|2|3\r\n")
-            finally:
-                fileobj.close()
-                os.unlink(name)
-
-            fd, name = tempfile.mkstemp()
-            fileobj = os.fdopen(fd, "w+b")
-            try:
-                writer = csv.writer(fileobj, dialect=testA, delimiter=';')
-                writer.writerow([1,2,3])
-                fileobj.seek(0)
-                self.assertEqual(fileobj.read(), "1;2;3\r\n")
-            finally:
-                fileobj.close()
-                os.unlink(name)
-
-        finally:
-            csv.unregister_dialect('testC')
-
-    def test_bad_dialect(self):
-        # Unknown parameter
-        self.assertRaises(TypeError, csv.reader, [], bad_attr = 0)
-        # Bad values
-        self.assertRaises(TypeError, csv.reader, [], delimiter = None)
-        self.assertRaises(TypeError, csv.reader, [], quoting = -1)
-        self.assertRaises(TypeError, csv.reader, [], quoting = 100)
-
-class TestCsvBase(unittest.TestCase):
-    def readerAssertEqual(self, input, expected_result):
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            fileobj.write(input)
-            fileobj.seek(0)
-            reader = csv.reader(fileobj, dialect = self.dialect)
-            fields = list(reader)
-            self.assertEqual(fields, expected_result)
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-    def writerAssertEqual(self, input, expected_result):
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            writer = csv.writer(fileobj, dialect = self.dialect)
-            writer.writerows(input)
-            fileobj.seek(0)
-            self.assertEqual(fileobj.read(), expected_result)
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-class TestDialectExcel(TestCsvBase):
-    dialect = 'excel'
-
-    def test_single(self):
-        self.readerAssertEqual('abc', [['abc']])
-
-    def test_simple(self):
-        self.readerAssertEqual('1,2,3,4,5', [['1','2','3','4','5']])
-
-    def test_blankline(self):
-        self.readerAssertEqual('', [])
-
-    def test_empty_fields(self):
-        self.readerAssertEqual(',', [['', '']])
-
-    def test_singlequoted(self):
-        self.readerAssertEqual('""', [['']])
-
-    def test_singlequoted_left_empty(self):
-        self.readerAssertEqual('"",', [['','']])
-
-    def test_singlequoted_right_empty(self):
-        self.readerAssertEqual(',""', [['','']])
-
-    def test_single_quoted_quote(self):
-        self.readerAssertEqual('""""', [['"']])
-
-    def test_quoted_quotes(self):
-        self.readerAssertEqual('""""""', [['""']])
-
-    def test_inline_quote(self):
-        self.readerAssertEqual('a""b', [['a""b']])
-
-    def test_inline_quotes(self):
-        self.readerAssertEqual('a"b"c', [['a"b"c']])
-
-    def test_quotes_and_more(self):
-        # Excel would never write a field containing '"a"b', but when
-        # reading one, it will return 'ab'.
-        self.readerAssertEqual('"a"b', [['ab']])
-
-    def test_lone_quote(self):
-        self.readerAssertEqual('a"b', [['a"b']])
-
-    def test_quote_and_quote(self):
-        # Excel would never write a field containing '"a" "b"', but when
-        # reading one, it will return 'a "b"'.
-        self.readerAssertEqual('"a" "b"', [['a "b"']])
-
-    def test_space_and_quote(self):
-        self.readerAssertEqual(' "a"', [[' "a"']])
-
-    def test_quoted(self):
-        self.readerAssertEqual('1,2,3,"I think, therefore I am",5,6',
-                               [['1', '2', '3',
-                                 'I think, therefore I am',
-                                 '5', '6']])
-
-    def test_quoted_quote(self):
-        self.readerAssertEqual('1,2,3,"""I see,"" said the blind man","as he picked up his hammer and saw"',
-                               [['1', '2', '3',
-                                 '"I see," said the blind man',
-                                 'as he picked up his hammer and saw']])
-
-    def test_quoted_nl(self):
-        input = '''\
-1,2,3,"""I see,""
-said the blind man","as he picked up his
-hammer and saw"
-9,8,7,6'''
-        self.readerAssertEqual(input,
-                               [['1', '2', '3',
-                                   '"I see,"\nsaid the blind man',
-                                   'as he picked up his\nhammer and saw'],
-                                ['9','8','7','6']])
-
-    def test_dubious_quote(self):
-        self.readerAssertEqual('12,12,1",', [['12', '12', '1"', '']])
-
-    def test_null(self):
-        self.writerAssertEqual([], '')
-
-    def test_single_writer(self):
-        self.writerAssertEqual([['abc']], 'abc\r\n')
-
-    def test_simple_writer(self):
-        self.writerAssertEqual([[1, 2, 'abc', 3, 4]], '1,2,abc,3,4\r\n')
-
-    def test_quotes(self):
-        self.writerAssertEqual([[1, 2, 'a"bc"', 3, 4]], '1,2,"a""bc""",3,4\r\n')
-
-    def test_quote_fieldsep(self):
-        self.writerAssertEqual([['abc,def']], '"abc,def"\r\n')
-
-    def test_newlines(self):
-        self.writerAssertEqual([[1, 2, 'a\nbc', 3, 4]], '1,2,"a\nbc",3,4\r\n')
-
-class EscapedExcel(csv.excel):
-    quoting = csv.QUOTE_NONE
-    escapechar = '\\'
-
-class TestEscapedExcel(TestCsvBase):
-    dialect = EscapedExcel()
-
-    def test_escape_fieldsep(self):
-        self.writerAssertEqual([['abc,def']], 'abc\\,def\r\n')
-
-    def test_read_escape_fieldsep(self):
-        self.readerAssertEqual('abc\\,def\r\n', [['abc,def']])
-
-class QuotedEscapedExcel(csv.excel):
-    quoting = csv.QUOTE_NONNUMERIC
-    escapechar = '\\'
-
-class TestQuotedEscapedExcel(TestCsvBase):
-    dialect = QuotedEscapedExcel()
-
-    def test_write_escape_fieldsep(self):
-        self.writerAssertEqual([['abc,def']], '"abc,def"\r\n')
-
-    def test_read_escape_fieldsep(self):
-        self.readerAssertEqual('"abc\\,def"\r\n', [['abc,def']])
-
-class TestDictFields(unittest.TestCase):
-    ### "long" means the row is longer than the number of fieldnames
-    ### "short" means there are fewer elements in the row than fieldnames
-    def test_write_simple_dict(self):
-        fd, name = tempfile.mkstemp()
-        fileobj = io.open(fd, 'w+b')
-        try:
-            writer = csv.DictWriter(fileobj, fieldnames = ["f1", "f2", "f3"])
-            writer.writeheader()
-            fileobj.seek(0)
-            self.assertEqual(fileobj.readline(), "f1,f2,f3\r\n")
-            writer.writerow({"f1": 10, "f3": "abc"})
-            fileobj.seek(0)
-            fileobj.readline() # header
-            self.assertEqual(fileobj.read(), "10,,abc\r\n")
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-    def test_write_no_fields(self):
-        fileobj = StringIO()
-        self.assertRaises(TypeError, csv.DictWriter, fileobj)
-
-    def test_read_dict_fields(self):
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            fileobj.write("1,2,abc\r\n")
-            fileobj.seek(0)
-            reader = csv.DictReader(fileobj,
-                                    fieldnames=["f1", "f2", "f3"])
-            self.assertEqual(reader.next(), {"f1": '1', "f2": '2', "f3": 'abc'})
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-    def test_read_dict_no_fieldnames(self):
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            fileobj.write("f1,f2,f3\r\n1,2,abc\r\n")
-            fileobj.seek(0)
-            reader = csv.DictReader(fileobj)
-            self.assertEqual(reader.fieldnames, ["f1", "f2", "f3"])
-            self.assertEqual(reader.next(), {"f1": '1', "f2": '2', "f3": 'abc'})
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-    # Two test cases to make sure existing ways of implicitly setting
-    # fieldnames continue to work.  Both arise from discussion in issue3436.
-    def test_read_dict_fieldnames_from_file(self):
-        fd, name = tempfile.mkstemp()
-        f = os.fdopen(fd, "w+b")
-        try:
-            f.write("f1,f2,f3\r\n1,2,abc\r\n")
-            f.seek(0)
-            reader = csv.DictReader(f, fieldnames=csv.reader(f).next())
-            self.assertEqual(reader.fieldnames, ["f1", "f2", "f3"])
-            self.assertEqual(reader.next(), {"f1": '1', "f2": '2', "f3": 'abc'})
-        finally:
-            f.close()
-            os.unlink(name)
-
-    def test_read_dict_fieldnames_chain(self):
-        import itertools
-        fd, name = tempfile.mkstemp()
-        f = os.fdopen(fd, "w+b")
-        try:
-            f.write("f1,f2,f3\r\n1,2,abc\r\n")
-            f.seek(0)
-            reader = csv.DictReader(f)
-            first = next(reader)
-            for row in itertools.chain([first], reader):
-                self.assertEqual(reader.fieldnames, ["f1", "f2", "f3"])
-                self.assertEqual(row, {"f1": '1', "f2": '2', "f3": 'abc'})
-        finally:
-            f.close()
-            os.unlink(name)
-
-    def test_read_long(self):
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            fileobj.write("1,2,abc,4,5,6\r\n")
-            fileobj.seek(0)
-            reader = csv.DictReader(fileobj,
-                                    fieldnames=["f1", "f2"])
-            self.assertEqual(reader.next(), {"f1": '1', "f2": '2',
-                                             None: ["abc", "4", "5", "6"]})
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-    def test_read_long_with_rest(self):
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            fileobj.write("1,2,abc,4,5,6\r\n")
-            fileobj.seek(0)
-            reader = csv.DictReader(fileobj,
-                                    fieldnames=["f1", "f2"], restkey="_rest")
-            self.assertEqual(reader.next(), {"f1": '1', "f2": '2',
-                                             "_rest": ["abc", "4", "5", "6"]})
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-    def test_read_long_with_rest_no_fieldnames(self):
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            fileobj.write("f1,f2\r\n1,2,abc,4,5,6\r\n")
-            fileobj.seek(0)
-            reader = csv.DictReader(fileobj, restkey="_rest")
-            self.assertEqual(reader.fieldnames, ["f1", "f2"])
-            self.assertEqual(reader.next(), {"f1": '1', "f2": '2',
-                                             "_rest": ["abc", "4", "5", "6"]})
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-    def test_read_short(self):
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            fileobj.write("1,2,abc,4,5,6\r\n1,2,abc\r\n")
-            fileobj.seek(0)
-            reader = csv.DictReader(fileobj,
-                                    fieldnames="1 2 3 4 5 6".split(),
-                                    restval="DEFAULT")
-            self.assertEqual(reader.next(), {"1": '1', "2": '2', "3": 'abc',
-                                             "4": '4', "5": '5', "6": '6'})
-            self.assertEqual(reader.next(), {"1": '1', "2": '2', "3": 'abc',
-                                             "4": 'DEFAULT', "5": 'DEFAULT',
-                                             "6": 'DEFAULT'})
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-    def test_read_multi(self):
-        sample = [
-            '2147483648,43.0e12,17,abc,def\r\n',
-            '147483648,43.0e2,17,abc,def\r\n',
-            '47483648,43.0,170,abc,def\r\n'
-            ]
-
-        reader = csv.DictReader(sample,
-                                fieldnames="i1 float i2 s1 s2".split())
-        self.assertEqual(reader.next(), {"i1": '2147483648',
-                                         "float": '43.0e12',
-                                         "i2": '17',
-                                         "s1": 'abc',
-                                         "s2": 'def'})
-
-    def test_read_with_blanks(self):
-        reader = csv.DictReader(["1,2,abc,4,5,6\r\n","\r\n",
-                                 "1,2,abc,4,5,6\r\n"],
-                                fieldnames="1 2 3 4 5 6".split())
-        self.assertEqual(reader.next(), {"1": '1', "2": '2', "3": 'abc',
-                                         "4": '4', "5": '5', "6": '6'})
-        self.assertEqual(reader.next(), {"1": '1', "2": '2', "3": 'abc',
-                                         "4": '4', "5": '5', "6": '6'})
-
-    def test_read_semi_sep(self):
-        reader = csv.DictReader(["1;2;abc;4;5;6\r\n"],
-                                fieldnames="1 2 3 4 5 6".split(),
-                                delimiter=';')
-        self.assertEqual(reader.next(), {"1": '1', "2": '2', "3": 'abc',
-                                         "4": '4', "5": '5', "6": '6'})
-
-class TestArrayWrites(unittest.TestCase):
-    def test_int_write(self):
-        import array
-        contents = [(20-i) for i in range(20)]
-        a = array.array('i', contents)
-
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            writer = csv.writer(fileobj, dialect="excel")
-            writer.writerow(a)
-            expected = ",".join([str(i) for i in a])+"\r\n"
-            fileobj.seek(0)
-            self.assertEqual(fileobj.read(), expected)
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-    def test_double_write(self):
-        import array
-        contents = [(20-i)*0.1 for i in range(20)]
-        a = array.array('d', contents)
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            writer = csv.writer(fileobj, dialect="excel")
-            writer.writerow(a)
-            expected = ",".join([str(i) for i in a])+"\r\n"
-            fileobj.seek(0)
-            self.assertEqual(fileobj.read(), expected)
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-    def test_float_write(self):
-        import array
-        contents = [(20-i)*0.1 for i in range(20)]
-        a = array.array('f', contents)
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            writer = csv.writer(fileobj, dialect="excel")
-            writer.writerow(a)
-            expected = ",".join([str(i) for i in a])+"\r\n"
-            fileobj.seek(0)
-            self.assertEqual(fileobj.read(), expected)
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-    def test_char_write(self):
-        import array, string
-        a = array.array('c', string.letters)
-        fd, name = tempfile.mkstemp()
-        fileobj = os.fdopen(fd, "w+b")
-        try:
-            writer = csv.writer(fileobj, dialect="excel")
-            writer.writerow(a)
-            expected = ",".join(a)+"\r\n"
-            fileobj.seek(0)
-            self.assertEqual(fileobj.read(), expected)
-        finally:
-            fileobj.close()
-            os.unlink(name)
-
-class TestDialectValidity(unittest.TestCase):
-    def test_quoting(self):
-        class mydialect(csv.Dialect):
-            delimiter = ";"
-            escapechar = '\\'
-            doublequote = False
-            skipinitialspace = True
-            lineterminator = '\r\n'
-            quoting = csv.QUOTE_NONE
-        d = mydialect()
-
-        mydialect.quoting = None
-        self.assertRaises(csv.Error, mydialect)
-
-        mydialect.doublequote = True
-        mydialect.quoting = csv.QUOTE_ALL
-        mydialect.quotechar = '"'
-        d = mydialect()
-
-        mydialect.quotechar = "''"
-        self.assertRaises(csv.Error, mydialect)
-
-        mydialect.quotechar = 4
-        self.assertRaises(csv.Error, mydialect)
-
-    def test_delimiter(self):
-        class mydialect(csv.Dialect):
-            delimiter = ";"
-            escapechar = '\\'
-            doublequote = False
-            skipinitialspace = True
-            lineterminator = '\r\n'
-            quoting = csv.QUOTE_NONE
-        d = mydialect()
-
-        mydialect.delimiter = ":::"
-        self.assertRaises(csv.Error, mydialect)
-
-        mydialect.delimiter = 4
-        self.assertRaises(csv.Error, mydialect)
-
-    def test_lineterminator(self):
-        class mydialect(csv.Dialect):
-            delimiter = ";"
-            escapechar = '\\'
-            doublequote = False
-            skipinitialspace = True
-            lineterminator = '\r\n'
-            quoting = csv.QUOTE_NONE
-        d = mydialect()
-
-        mydialect.lineterminator = ":::"
-        d = mydialect()
-
-        mydialect.lineterminator = 4
-        self.assertRaises(csv.Error, mydialect)
-
-
-class TestSniffer(unittest.TestCase):
-    sample1 = """\
-Harry's, Arlington Heights, IL, 2/1/03, Kimi Hayes
-Shark City, Glendale Heights, IL, 12/28/02, Prezence
-Tommy's Place, Blue Island, IL, 12/28/02, Blue Sunday/White Crow
-Stonecutters Seafood and Chop House, Lemont, IL, 12/19/02, Week Back
-"""
-    sample2 = """\
-'Harry''s':'Arlington Heights':'IL':'2/1/03':'Kimi Hayes'
-'Shark City':'Glendale Heights':'IL':'12/28/02':'Prezence'
-'Tommy''s Place':'Blue Island':'IL':'12/28/02':'Blue Sunday/White Crow'
-'Stonecutters ''Seafood'' and Chop House':'Lemont':'IL':'12/19/02':'Week Back'
-"""
-    header = '''\
-"venue","city","state","date","performers"
-'''
-    sample3 = '''\
-05/05/03?05/05/03?05/05/03?05/05/03?05/05/03?05/05/03
-05/05/03?05/05/03?05/05/03?05/05/03?05/05/03?05/05/03
-05/05/03?05/05/03?05/05/03?05/05/03?05/05/03?05/05/03
-'''
-
-    sample4 = '''\
-2147483648;43.0e12;17;abc;def
-147483648;43.0e2;17;abc;def
-47483648;43.0;170;abc;def
-'''
-
-    sample5 = "aaa\tbbb\r\nAAA\t\r\nBBB\t\r\n"
-    sample6 = "a|b|c\r\nd|e|f\r\n"
-    sample7 = "'a'|'b'|'c'\r\n'd'|e|f\r\n"
-
-    def test_has_header(self):
-        sniffer = csv.Sniffer()
-        self.assertEqual(sniffer.has_header(self.sample1), False)
-        self.assertEqual(sniffer.has_header(self.header+self.sample1), True)
-
-    def test_sniff(self):
-        sniffer = csv.Sniffer()
-        dialect = sniffer.sniff(self.sample1)
-        self.assertEqual(dialect.delimiter, ",")
-        self.assertEqual(dialect.quotechar, '"')
-        self.assertEqual(dialect.skipinitialspace, True)
-
-        dialect = sniffer.sniff(self.sample2)
-        self.assertEqual(dialect.delimiter, ":")
-        self.assertEqual(dialect.quotechar, "'")
-        self.assertEqual(dialect.skipinitialspace, False)
-
-    def test_delimiters(self):
-        sniffer = csv.Sniffer()
-        dialect = sniffer.sniff(self.sample3)
-        # given that all three lines in sample3 are equal,
-        # I think that any character could have been 'guessed' as the
-        # delimiter, depending on dictionary order
-        self.assertIn(dialect.delimiter, self.sample3)
-        dialect = sniffer.sniff(self.sample3, delimiters="?,")
-        self.assertEqual(dialect.delimiter, "?")
-        dialect = sniffer.sniff(self.sample3, delimiters="/,")
-        self.assertEqual(dialect.delimiter, "/")
-        dialect = sniffer.sniff(self.sample4)
-        self.assertEqual(dialect.delimiter, ";")
-        dialect = sniffer.sniff(self.sample5)
-        self.assertEqual(dialect.delimiter, "\t")
-        dialect = sniffer.sniff(self.sample6)
-        self.assertEqual(dialect.delimiter, "|")
-        dialect = sniffer.sniff(self.sample7)
-        self.assertEqual(dialect.delimiter, "|")
-        self.assertEqual(dialect.quotechar, "'")
-
-    def test_doublequote(self):
-        sniffer = csv.Sniffer()
-        dialect = sniffer.sniff(self.header)
-        self.assertFalse(dialect.doublequote)
-        dialect = sniffer.sniff(self.sample2)
-        self.assertTrue(dialect.doublequote)
-
-if not hasattr(sys, "gettotalrefcount"):
-    if test_support.verbose: print "*** skipping leakage tests ***"
-else:
-    class NUL:
-        def write(s, *args):
-            pass
-        writelines = write
-
-    class TestLeaks(unittest.TestCase):
-        def test_create_read(self):
-            delta = 0
-            lastrc = sys.gettotalrefcount()
-            for i in xrange(20):
-                gc.collect()
-                self.assertEqual(gc.garbage, [])
-                rc = sys.gettotalrefcount()
-                csv.reader(["a,b,c\r\n"])
-                csv.reader(["a,b,c\r\n"])
-                csv.reader(["a,b,c\r\n"])
-                delta = rc-lastrc
-                lastrc = rc
-            # if csv.reader() leaks, last delta should be 3 or more
-            self.assertEqual(delta < 3, True)
-
-        def test_create_write(self):
-            delta = 0
-            lastrc = sys.gettotalrefcount()
-            s = NUL()
-            for i in xrange(20):
-                gc.collect()
-                self.assertEqual(gc.garbage, [])
-                rc = sys.gettotalrefcount()
-                csv.writer(s)
-                csv.writer(s)
-                csv.writer(s)
-                delta = rc-lastrc
-                lastrc = rc
-            # if csv.writer() leaks, last delta should be 3 or more
-            self.assertEqual(delta < 3, True)
-
-        def test_read(self):
-            delta = 0
-            rows = ["a,b,c\r\n"]*5
-            lastrc = sys.gettotalrefcount()
-            for i in xrange(20):
-                gc.collect()
-                self.assertEqual(gc.garbage, [])
-                rc = sys.gettotalrefcount()
-                rdr = csv.reader(rows)
-                for row in rdr:
-                    pass
-                delta = rc-lastrc
-                lastrc = rc
-            # if reader leaks during read, delta should be 5 or more
-            self.assertEqual(delta < 5, True)
-
-        def test_write(self):
-            delta = 0
-            rows = [[1,2,3]]*5
-            s = NUL()
-            lastrc = sys.gettotalrefcount()
-            for i in xrange(20):
-                gc.collect()
-                self.assertEqual(gc.garbage, [])
-                rc = sys.gettotalrefcount()
-                writer = csv.writer(s)
-                for row in rows:
-                    writer.writerow(row)
-                delta = rc-lastrc
-                lastrc = rc
-            # if writer leaks during write, last delta should be 5 or more
-            self.assertEqual(delta < 5, True)
-
-# commented out for now - csv module doesn't yet support Unicode
-## class TestUnicode(unittest.TestCase):
-##     def test_unicode_read(self):
-##         import codecs
-##         f = codecs.EncodedFile(StringIO("Martin von Löwis,"
-##                                         "Marc André Lemburg,"
-##                                         "Guido van Rossum,"
-##                                         "François Pinard\r\n"),
-##                                data_encoding='iso-8859-1')
-##         reader = csv.reader(f)
-##         self.assertEqual(list(reader), [[u"Martin von Löwis",
-##                                          u"Marc André Lemburg",
-##                                          u"Guido van Rossum",
-##                                          u"François Pinardn"]])
-
-def test_main():
-    mod = sys.modules[__name__]
-    test_support.run_unittest(
-        *[getattr(mod, name) for name in dir(mod) if name.startswith('Test')]
-    )
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ctypes.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ctypes.py
deleted file mode 100644
index c0780af..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ctypes.py
+++ /dev/null
@@ -1,15 +0,0 @@
-import unittest
-
-from test.test_support import run_unittest, import_module
-#Skip tests if _ctypes module does not exist
-import_module('_ctypes')
-
-
-def test_main():
-    import ctypes.test
-    skipped, testcases = ctypes.test.get_tests(ctypes.test, "test_*.py", verbosity=0)
-    suites = [unittest.makeSuite(t) for t in testcases]
-    run_unittest(unittest.TestSuite(suites))
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_curses.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_curses.py
deleted file mode 100644
index 2d91429..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_curses.py
+++ /dev/null
@@ -1,290 +0,0 @@
-#
-# Test script for the curses module
-#
-# This script doesn't actually display anything very coherent. but it
-# does call every method and function.
-#
-# Functions not tested: {def,reset}_{shell,prog}_mode, getch(), getstr(),
-# init_color()
-# Only called, not tested: getmouse(), ungetmouse()
-#
-
-import sys, tempfile, os
-
-# Optionally test curses module.  This currently requires that the
-# 'curses' resource be given on the regrtest command line using the -u
-# option.  If not available, nothing after this line will be executed.
-
-import unittest
-from test.test_support import requires, import_module
-requires('curses')
-curses = import_module('curses')
-curses.panel = import_module('curses.panel')
-
-
-# XXX: if newterm was supported we could use it instead of initscr and not exit
-term = os.environ.get('TERM')
-if not term or term == 'unknown':
-    raise unittest.SkipTest, "$TERM=%r, calling initscr() may cause exit" % term
-
-if sys.platform == "cygwin":
-    raise unittest.SkipTest("cygwin's curses mostly just hangs")
-
-def window_funcs(stdscr):
-    "Test the methods of windows"
-    win = curses.newwin(10,10)
-    win = curses.newwin(5,5, 5,5)
-    win2 = curses.newwin(15,15, 5,5)
-
-    for meth in [stdscr.addch, stdscr.addstr]:
-        for args in [('a'), ('a', curses.A_BOLD),
-                     (4,4, 'a'), (5,5, 'a', curses.A_BOLD)]:
-            meth(*args)
-
-    for meth in [stdscr.box, stdscr.clear, stdscr.clrtobot,
-                 stdscr.clrtoeol, stdscr.cursyncup, stdscr.delch,
-                 stdscr.deleteln, stdscr.erase, stdscr.getbegyx,
-                 stdscr.getbkgd, stdscr.getkey, stdscr.getmaxyx,
-                 stdscr.getparyx, stdscr.getyx, stdscr.inch,
-                 stdscr.insertln, stdscr.instr, stdscr.is_wintouched,
-                 win.noutrefresh, stdscr.redrawwin, stdscr.refresh,
-                 stdscr.standout, stdscr.standend, stdscr.syncdown,
-                 stdscr.syncup, stdscr.touchwin, stdscr.untouchwin]:
-        meth()
-
-    stdscr.addnstr('1234', 3)
-    stdscr.addnstr('1234', 3, curses.A_BOLD)
-    stdscr.addnstr(4,4, '1234', 3)
-    stdscr.addnstr(5,5, '1234', 3, curses.A_BOLD)
-
-    stdscr.attron(curses.A_BOLD)
-    stdscr.attroff(curses.A_BOLD)
-    stdscr.attrset(curses.A_BOLD)
-    stdscr.bkgd(' ')
-    stdscr.bkgd(' ', curses.A_REVERSE)
-    stdscr.bkgdset(' ')
-    stdscr.bkgdset(' ', curses.A_REVERSE)
-
-    win.border(65, 66, 67, 68,
-               69, 70, 71, 72)
-    win.border('|', '!', '-', '_',
-               '+', '\\', '#', '/')
-    try:
-        win.border(65, 66, 67, 68,
-                   69, [], 71, 72)
-    except TypeError:
-        pass
-    else:
-        raise RuntimeError, "Expected win.border() to raise TypeError"
-
-    stdscr.clearok(1)
-
-    win4 = stdscr.derwin(2,2)
-    win4 = stdscr.derwin(1,1, 5,5)
-    win4.mvderwin(9,9)
-
-    stdscr.echochar('a')
-    stdscr.echochar('a', curses.A_BOLD)
-    stdscr.hline('-', 5)
-    stdscr.hline('-', 5, curses.A_BOLD)
-    stdscr.hline(1,1,'-', 5)
-    stdscr.hline(1,1,'-', 5, curses.A_BOLD)
-
-    stdscr.idcok(1)
-    stdscr.idlok(1)
-    stdscr.immedok(1)
-    stdscr.insch('c')
-    stdscr.insdelln(1)
-    stdscr.insnstr('abc', 3)
-    stdscr.insnstr('abc', 3, curses.A_BOLD)
-    stdscr.insnstr(5, 5, 'abc', 3)
-    stdscr.insnstr(5, 5, 'abc', 3, curses.A_BOLD)
-
-    stdscr.insstr('def')
-    stdscr.insstr('def', curses.A_BOLD)
-    stdscr.insstr(5, 5, 'def')
-    stdscr.insstr(5, 5, 'def', curses.A_BOLD)
-    stdscr.is_linetouched(0)
-    stdscr.keypad(1)
-    stdscr.leaveok(1)
-    stdscr.move(3,3)
-    win.mvwin(2,2)
-    stdscr.nodelay(1)
-    stdscr.notimeout(1)
-    win2.overlay(win)
-    win2.overwrite(win)
-    win2.overlay(win, 1, 2, 3, 3, 2, 1)
-    win2.overwrite(win, 1, 2, 3, 3, 2, 1)
-    stdscr.redrawln(1,2)
-
-    stdscr.scrollok(1)
-    stdscr.scroll()
-    stdscr.scroll(2)
-    stdscr.scroll(-3)
-
-    stdscr.move(12, 2)
-    stdscr.setscrreg(10,15)
-    win3 = stdscr.subwin(10,10)
-    win3 = stdscr.subwin(10,10, 5,5)
-    stdscr.syncok(1)
-    stdscr.timeout(5)
-    stdscr.touchline(5,5)
-    stdscr.touchline(5,5,0)
-    stdscr.vline('a', 3)
-    stdscr.vline('a', 3, curses.A_STANDOUT)
-    stdscr.chgat(5, 2, 3, curses.A_BLINK)
-    stdscr.chgat(3, curses.A_BOLD)
-    stdscr.chgat(5, 8, curses.A_UNDERLINE)
-    stdscr.chgat(curses.A_BLINK)
-    stdscr.refresh()
-
-    stdscr.vline(1,1, 'a', 3)
-    stdscr.vline(1,1, 'a', 3, curses.A_STANDOUT)
-
-    if hasattr(curses, 'resize'):
-        stdscr.resize()
-    if hasattr(curses, 'enclose'):
-        stdscr.enclose()
-
-
-def module_funcs(stdscr):
-    "Test module-level functions"
-
-    for func in [curses.baudrate, curses.beep, curses.can_change_color,
-                 curses.cbreak, curses.def_prog_mode, curses.doupdate,
-                 curses.filter, curses.flash, curses.flushinp,
-                 curses.has_colors, curses.has_ic, curses.has_il,
-                 curses.isendwin, curses.killchar, curses.longname,
-                 curses.nocbreak, curses.noecho, curses.nonl,
-                 curses.noqiflush, curses.noraw,
-                 curses.reset_prog_mode, curses.termattrs,
-                 curses.termname, curses.erasechar, curses.getsyx]:
-        func()
-
-    # Functions that actually need arguments
-    if curses.tigetstr("cnorm"):
-        curses.curs_set(1)
-    curses.delay_output(1)
-    curses.echo() ; curses.echo(1)
-
-    f = tempfile.TemporaryFile()
-    stdscr.putwin(f)
-    f.seek(0)
-    curses.getwin(f)
-    f.close()
-
-    curses.halfdelay(1)
-    curses.intrflush(1)
-    curses.meta(1)
-    curses.napms(100)
-    curses.newpad(50,50)
-    win = curses.newwin(5,5)
-    win = curses.newwin(5,5, 1,1)
-    curses.nl() ; curses.nl(1)
-    curses.putp('abc')
-    curses.qiflush()
-    curses.raw() ; curses.raw(1)
-    curses.setsyx(5,5)
-    curses.tigetflag('hc')
-    curses.tigetnum('co')
-    curses.tigetstr('cr')
-    curses.tparm('cr')
-    curses.typeahead(sys.__stdin__.fileno())
-    curses.unctrl('a')
-    curses.ungetch('a')
-    curses.use_env(1)
-
-    # Functions only available on a few platforms
-    if curses.has_colors():
-        curses.start_color()
-        curses.init_pair(2, 1,1)
-        curses.color_content(1)
-        curses.color_pair(2)
-        curses.pair_content(curses.COLOR_PAIRS - 1)
-        curses.pair_number(0)
-
-        if hasattr(curses, 'use_default_colors'):
-            curses.use_default_colors()
-
-    if hasattr(curses, 'keyname'):
-        curses.keyname(13)
-
-    if hasattr(curses, 'has_key'):
-        curses.has_key(13)
-
-    if hasattr(curses, 'getmouse'):
-        (availmask, oldmask) = curses.mousemask(curses.BUTTON1_PRESSED)
-        # availmask indicates that mouse stuff not available.
-        if availmask != 0:
-            curses.mouseinterval(10)
-            # just verify these don't cause errors
-            curses.ungetmouse(0, 0, 0, 0, curses.BUTTON1_PRESSED)
-            m = curses.getmouse()
-
-    if hasattr(curses, 'is_term_resized'):
-        curses.is_term_resized(*stdscr.getmaxyx())
-    if hasattr(curses, 'resizeterm'):
-        curses.resizeterm(*stdscr.getmaxyx())
-    if hasattr(curses, 'resize_term'):
-        curses.resize_term(*stdscr.getmaxyx())
-
-def unit_tests():
-    from curses import ascii
-    for ch, expected in [('a', 'a'), ('A', 'A'),
-                         (';', ';'), (' ', ' '),
-                         ('\x7f', '^?'), ('\n', '^J'), ('\0', '^@'),
-                         # Meta-bit characters
-                         ('\x8a', '!^J'), ('\xc1', '!A'),
-                         ]:
-        if ascii.unctrl(ch) != expected:
-            print 'curses.unctrl fails on character', repr(ch)
-
-
-def test_userptr_without_set(stdscr):
-    w = curses.newwin(10, 10)
-    p = curses.panel.new_panel(w)
-    # try to access userptr() before calling set_userptr() -- segfaults
-    try:
-        p.userptr()
-        raise RuntimeError, 'userptr should fail since not set'
-    except curses.panel.error:
-        pass
-
-def test_resize_term(stdscr):
-    if hasattr(curses, 'resizeterm'):
-        lines, cols = curses.LINES, curses.COLS
-        curses.resizeterm(lines - 1, cols + 1)
-
-        if curses.LINES != lines - 1 or curses.COLS != cols + 1:
-            raise RuntimeError, "Expected resizeterm to update LINES and COLS"
-
-def test_issue6243(stdscr):
-    curses.ungetch(1025)
-    stdscr.getkey()
-
-def main(stdscr):
-    curses.savetty()
-    try:
-        module_funcs(stdscr)
-        window_funcs(stdscr)
-        test_userptr_without_set(stdscr)
-        test_resize_term(stdscr)
-        test_issue6243(stdscr)
-    finally:
-        curses.resetty()
-
-if __name__ == '__main__':
-    curses.wrapper(main)
-    unit_tests()
-else:
-    if not sys.__stdout__.isatty():
-        raise unittest.SkipTest("sys.__stdout__ is not a tty")
-    # testing setupterm() inside initscr/endwin
-    # causes terminal breakage
-    curses.setupterm(fd=sys.__stdout__.fileno())
-    try:
-        stdscr = curses.initscr()
-        main(stdscr)
-    finally:
-        curses.endwin()
-    unit_tests()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_datetime.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_datetime.py
deleted file mode 100644
index d53d8e9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_datetime.py
+++ /dev/null
@@ -1,3367 +0,0 @@
-"""Test date/time type.
-
-See http://www.zope.org/Members/fdrake/DateTimeWiki/TestCases
-"""
-from __future__ import division
-import sys
-import pickle
-import cPickle
-import unittest
-
-from test import test_support
-
-from datetime import MINYEAR, MAXYEAR
-from datetime import timedelta
-from datetime import tzinfo
-from datetime import time
-from datetime import date, datetime
-
-pickle_choices = [(pickler, unpickler, proto)
-                  for pickler in pickle, cPickle
-                  for unpickler in pickle, cPickle
-                  for proto in range(3)]
-assert len(pickle_choices) == 2*2*3
-
-# An arbitrary collection of objects of non-datetime types, for testing
-# mixed-type comparisons.
-OTHERSTUFF = (10, 10L, 34.5, "abc", {}, [], ())
-
-
-#############################################################################
-# module tests
-
-class TestModule(unittest.TestCase):
-
-    def test_constants(self):
-        import datetime
-        self.assertEqual(datetime.MINYEAR, 1)
-        self.assertEqual(datetime.MAXYEAR, 9999)
-
-#############################################################################
-# tzinfo tests
-
-class FixedOffset(tzinfo):
-    def __init__(self, offset, name, dstoffset=42):
-        if isinstance(offset, int):
-            offset = timedelta(minutes=offset)
-        if isinstance(dstoffset, int):
-            dstoffset = timedelta(minutes=dstoffset)
-        self.__offset = offset
-        self.__name = name
-        self.__dstoffset = dstoffset
-    def __repr__(self):
-        return self.__name.lower()
-    def utcoffset(self, dt):
-        return self.__offset
-    def tzname(self, dt):
-        return self.__name
-    def dst(self, dt):
-        return self.__dstoffset
-
-class PicklableFixedOffset(FixedOffset):
-    def __init__(self, offset=None, name=None, dstoffset=None):
-        FixedOffset.__init__(self, offset, name, dstoffset)
-
-class TestTZInfo(unittest.TestCase):
-
-    def test_non_abstractness(self):
-        # In order to allow subclasses to get pickled, the C implementation
-        # wasn't able to get away with having __init__ raise
-        # NotImplementedError.
-        useless = tzinfo()
-        dt = datetime.max
-        self.assertRaises(NotImplementedError, useless.tzname, dt)
-        self.assertRaises(NotImplementedError, useless.utcoffset, dt)
-        self.assertRaises(NotImplementedError, useless.dst, dt)
-
-    def test_subclass_must_override(self):
-        class NotEnough(tzinfo):
-            def __init__(self, offset, name):
-                self.__offset = offset
-                self.__name = name
-        self.assertTrue(issubclass(NotEnough, tzinfo))
-        ne = NotEnough(3, "NotByALongShot")
-        self.assertIsInstance(ne, tzinfo)
-
-        dt = datetime.now()
-        self.assertRaises(NotImplementedError, ne.tzname, dt)
-        self.assertRaises(NotImplementedError, ne.utcoffset, dt)
-        self.assertRaises(NotImplementedError, ne.dst, dt)
-
-    def test_normal(self):
-        fo = FixedOffset(3, "Three")
-        self.assertIsInstance(fo, tzinfo)
-        for dt in datetime.now(), None:
-            self.assertEqual(fo.utcoffset(dt), timedelta(minutes=3))
-            self.assertEqual(fo.tzname(dt), "Three")
-            self.assertEqual(fo.dst(dt), timedelta(minutes=42))
-
-    def test_pickling_base(self):
-        # There's no point to pickling tzinfo objects on their own (they
-        # carry no data), but they need to be picklable anyway else
-        # concrete subclasses can't be pickled.
-        orig = tzinfo.__new__(tzinfo)
-        self.assertTrue(type(orig) is tzinfo)
-        for pickler, unpickler, proto in pickle_choices:
-            green = pickler.dumps(orig, proto)
-            derived = unpickler.loads(green)
-            self.assertTrue(type(derived) is tzinfo)
-
-    def test_pickling_subclass(self):
-        # Make sure we can pickle/unpickle an instance of a subclass.
-        offset = timedelta(minutes=-300)
-        orig = PicklableFixedOffset(offset, 'cookie')
-        self.assertIsInstance(orig, tzinfo)
-        self.assertTrue(type(orig) is PicklableFixedOffset)
-        self.assertEqual(orig.utcoffset(None), offset)
-        self.assertEqual(orig.tzname(None), 'cookie')
-        for pickler, unpickler, proto in pickle_choices:
-            green = pickler.dumps(orig, proto)
-            derived = unpickler.loads(green)
-            self.assertIsInstance(derived, tzinfo)
-            self.assertTrue(type(derived) is PicklableFixedOffset)
-            self.assertEqual(derived.utcoffset(None), offset)
-            self.assertEqual(derived.tzname(None), 'cookie')
-
-#############################################################################
-# Base clase for testing a particular aspect of timedelta, time, date and
-# datetime comparisons.
-
-class HarmlessMixedComparison:
-    # Test that __eq__ and __ne__ don't complain for mixed-type comparisons.
-
-    # Subclasses must define 'theclass', and theclass(1, 1, 1) must be a
-    # legit constructor.
-
-    def test_harmless_mixed_comparison(self):
-        me = self.theclass(1, 1, 1)
-
-        self.assertFalse(me == ())
-        self.assertTrue(me != ())
-        self.assertFalse(() == me)
-        self.assertTrue(() != me)
-
-        self.assertIn(me, [1, 20L, [], me])
-        self.assertIn([], [me, 1, 20L, []])
-
-    def test_harmful_mixed_comparison(self):
-        me = self.theclass(1, 1, 1)
-
-        self.assertRaises(TypeError, lambda: me < ())
-        self.assertRaises(TypeError, lambda: me <= ())
-        self.assertRaises(TypeError, lambda: me > ())
-        self.assertRaises(TypeError, lambda: me >= ())
-
-        self.assertRaises(TypeError, lambda: () < me)
-        self.assertRaises(TypeError, lambda: () <= me)
-        self.assertRaises(TypeError, lambda: () > me)
-        self.assertRaises(TypeError, lambda: () >= me)
-
-        self.assertRaises(TypeError, cmp, (), me)
-        self.assertRaises(TypeError, cmp, me, ())
-
-#############################################################################
-# timedelta tests
-
-class TestTimeDelta(HarmlessMixedComparison, unittest.TestCase):
-
-    theclass = timedelta
-
-    def test_constructor(self):
-        eq = self.assertEqual
-        td = timedelta
-
-        # Check keyword args to constructor
-        eq(td(), td(weeks=0, days=0, hours=0, minutes=0, seconds=0,
-                    milliseconds=0, microseconds=0))
-        eq(td(1), td(days=1))
-        eq(td(0, 1), td(seconds=1))
-        eq(td(0, 0, 1), td(microseconds=1))
-        eq(td(weeks=1), td(days=7))
-        eq(td(days=1), td(hours=24))
-        eq(td(hours=1), td(minutes=60))
-        eq(td(minutes=1), td(seconds=60))
-        eq(td(seconds=1), td(milliseconds=1000))
-        eq(td(milliseconds=1), td(microseconds=1000))
-
-        # Check float args to constructor
-        eq(td(weeks=1.0/7), td(days=1))
-        eq(td(days=1.0/24), td(hours=1))
-        eq(td(hours=1.0/60), td(minutes=1))
-        eq(td(minutes=1.0/60), td(seconds=1))
-        eq(td(seconds=0.001), td(milliseconds=1))
-        eq(td(milliseconds=0.001), td(microseconds=1))
-
-    def test_computations(self):
-        eq = self.assertEqual
-        td = timedelta
-
-        a = td(7) # One week
-        b = td(0, 60) # One minute
-        c = td(0, 0, 1000) # One millisecond
-        eq(a+b+c, td(7, 60, 1000))
-        eq(a-b, td(6, 24*3600 - 60))
-        eq(-a, td(-7))
-        eq(+a, td(7))
-        eq(-b, td(-1, 24*3600 - 60))
-        eq(-c, td(-1, 24*3600 - 1, 999000))
-        eq(abs(a), a)
-        eq(abs(-a), a)
-        eq(td(6, 24*3600), a)
-        eq(td(0, 0, 60*1000000), b)
-        eq(a*10, td(70))
-        eq(a*10, 10*a)
-        eq(a*10L, 10*a)
-        eq(b*10, td(0, 600))
-        eq(10*b, td(0, 600))
-        eq(b*10L, td(0, 600))
-        eq(c*10, td(0, 0, 10000))
-        eq(10*c, td(0, 0, 10000))
-        eq(c*10L, td(0, 0, 10000))
-        eq(a*-1, -a)
-        eq(b*-2, -b-b)
-        eq(c*-2, -c+-c)
-        eq(b*(60*24), (b*60)*24)
-        eq(b*(60*24), (60*b)*24)
-        eq(c*1000, td(0, 1))
-        eq(1000*c, td(0, 1))
-        eq(a//7, td(1))
-        eq(b//10, td(0, 6))
-        eq(c//1000, td(0, 0, 1))
-        eq(a//10, td(0, 7*24*360))
-        eq(a//3600000, td(0, 0, 7*24*1000))
-
-        # Issue #11576
-        eq(td(999999999, 86399, 999999) - td(999999999, 86399, 999998),
-           td(0, 0, 1))
-        eq(td(999999999, 1, 1) - td(999999999, 1, 0),
-           td(0, 0, 1))
-
-
-    def test_disallowed_computations(self):
-        a = timedelta(42)
-
-        # Add/sub ints, longs, floats should be illegal
-        for i in 1, 1L, 1.0:
-            self.assertRaises(TypeError, lambda: a+i)
-            self.assertRaises(TypeError, lambda: a-i)
-            self.assertRaises(TypeError, lambda: i+a)
-            self.assertRaises(TypeError, lambda: i-a)
-
-        # Mul/div by float isn't supported.
-        x = 2.3
-        self.assertRaises(TypeError, lambda: a*x)
-        self.assertRaises(TypeError, lambda: x*a)
-        self.assertRaises(TypeError, lambda: a/x)
-        self.assertRaises(TypeError, lambda: x/a)
-        self.assertRaises(TypeError, lambda: a // x)
-        self.assertRaises(TypeError, lambda: x // a)
-
-        # Division of int by timedelta doesn't make sense.
-        # Division by zero doesn't make sense.
-        for zero in 0, 0L:
-            self.assertRaises(TypeError, lambda: zero // a)
-            self.assertRaises(ZeroDivisionError, lambda: a // zero)
-
-    def test_basic_attributes(self):
-        days, seconds, us = 1, 7, 31
-        td = timedelta(days, seconds, us)
-        self.assertEqual(td.days, days)
-        self.assertEqual(td.seconds, seconds)
-        self.assertEqual(td.microseconds, us)
-
-    def test_total_seconds(self):
-        td = timedelta(days=365)
-        self.assertEqual(td.total_seconds(), 31536000.0)
-        for total_seconds in [123456.789012, -123456.789012, 0.123456, 0, 1e6]:
-            td = timedelta(seconds=total_seconds)
-            self.assertEqual(td.total_seconds(), total_seconds)
-        # Issue8644: Test that td.total_seconds() has the same
-        # accuracy as td / timedelta(seconds=1).
-        for ms in [-1, -2, -123]:
-            td = timedelta(microseconds=ms)
-            self.assertEqual(td.total_seconds(),
-                             ((24*3600*td.days + td.seconds)*10**6
-                              + td.microseconds)/10**6)
-
-    def test_carries(self):
-        t1 = timedelta(days=100,
-                       weeks=-7,
-                       hours=-24*(100-49),
-                       minutes=-3,
-                       seconds=12,
-                       microseconds=(3*60 - 12) * 1e6 + 1)
-        t2 = timedelta(microseconds=1)
-        self.assertEqual(t1, t2)
-
-    def test_hash_equality(self):
-        t1 = timedelta(days=100,
-                       weeks=-7,
-                       hours=-24*(100-49),
-                       minutes=-3,
-                       seconds=12,
-                       microseconds=(3*60 - 12) * 1000000)
-        t2 = timedelta()
-        self.assertEqual(hash(t1), hash(t2))
-
-        t1 += timedelta(weeks=7)
-        t2 += timedelta(days=7*7)
-        self.assertEqual(t1, t2)
-        self.assertEqual(hash(t1), hash(t2))
-
-        d = {t1: 1}
-        d[t2] = 2
-        self.assertEqual(len(d), 1)
-        self.assertEqual(d[t1], 2)
-
-    def test_pickling(self):
-        args = 12, 34, 56
-        orig = timedelta(*args)
-        for pickler, unpickler, proto in pickle_choices:
-            green = pickler.dumps(orig, proto)
-            derived = unpickler.loads(green)
-            self.assertEqual(orig, derived)
-
-    def test_compare(self):
-        t1 = timedelta(2, 3, 4)
-        t2 = timedelta(2, 3, 4)
-        self.assertTrue(t1 == t2)
-        self.assertTrue(t1 <= t2)
-        self.assertTrue(t1 >= t2)
-        self.assertTrue(not t1 != t2)
-        self.assertTrue(not t1 < t2)
-        self.assertTrue(not t1 > t2)
-        self.assertEqual(cmp(t1, t2), 0)
-        self.assertEqual(cmp(t2, t1), 0)
-
-        for args in (3, 3, 3), (2, 4, 4), (2, 3, 5):
-            t2 = timedelta(*args)   # this is larger than t1
-            self.assertTrue(t1 < t2)
-            self.assertTrue(t2 > t1)
-            self.assertTrue(t1 <= t2)
-            self.assertTrue(t2 >= t1)
-            self.assertTrue(t1 != t2)
-            self.assertTrue(t2 != t1)
-            self.assertTrue(not t1 == t2)
-            self.assertTrue(not t2 == t1)
-            self.assertTrue(not t1 > t2)
-            self.assertTrue(not t2 < t1)
-            self.assertTrue(not t1 >= t2)
-            self.assertTrue(not t2 <= t1)
-            self.assertEqual(cmp(t1, t2), -1)
-            self.assertEqual(cmp(t2, t1), 1)
-
-        for badarg in OTHERSTUFF:
-            self.assertEqual(t1 == badarg, False)
-            self.assertEqual(t1 != badarg, True)
-            self.assertEqual(badarg == t1, False)
-            self.assertEqual(badarg != t1, True)
-
-            self.assertRaises(TypeError, lambda: t1 <= badarg)
-            self.assertRaises(TypeError, lambda: t1 < badarg)
-            self.assertRaises(TypeError, lambda: t1 > badarg)
-            self.assertRaises(TypeError, lambda: t1 >= badarg)
-            self.assertRaises(TypeError, lambda: badarg <= t1)
-            self.assertRaises(TypeError, lambda: badarg < t1)
-            self.assertRaises(TypeError, lambda: badarg > t1)
-            self.assertRaises(TypeError, lambda: badarg >= t1)
-
-    def test_str(self):
-        td = timedelta
-        eq = self.assertEqual
-
-        eq(str(td(1)), "1 day, 0:00:00")
-        eq(str(td(-1)), "-1 day, 0:00:00")
-        eq(str(td(2)), "2 days, 0:00:00")
-        eq(str(td(-2)), "-2 days, 0:00:00")
-
-        eq(str(td(hours=12, minutes=58, seconds=59)), "12:58:59")
-        eq(str(td(hours=2, minutes=3, seconds=4)), "2:03:04")
-        eq(str(td(weeks=-30, hours=23, minutes=12, seconds=34)),
-           "-210 days, 23:12:34")
-
-        eq(str(td(milliseconds=1)), "0:00:00.001000")
-        eq(str(td(microseconds=3)), "0:00:00.000003")
-
-        eq(str(td(days=999999999, hours=23, minutes=59, seconds=59,
-                   microseconds=999999)),
-           "999999999 days, 23:59:59.999999")
-
-    def test_roundtrip(self):
-        for td in (timedelta(days=999999999, hours=23, minutes=59,
-                             seconds=59, microseconds=999999),
-                   timedelta(days=-999999999),
-                   timedelta(days=1, seconds=2, microseconds=3)):
-
-            # Verify td -> string -> td identity.
-            s = repr(td)
-            self.assertTrue(s.startswith('datetime.'))
-            s = s[9:]
-            td2 = eval(s)
-            self.assertEqual(td, td2)
-
-            # Verify identity via reconstructing from pieces.
-            td2 = timedelta(td.days, td.seconds, td.microseconds)
-            self.assertEqual(td, td2)
-
-    def test_resolution_info(self):
-        self.assertIsInstance(timedelta.min, timedelta)
-        self.assertIsInstance(timedelta.max, timedelta)
-        self.assertIsInstance(timedelta.resolution, timedelta)
-        self.assertTrue(timedelta.max > timedelta.min)
-        self.assertEqual(timedelta.min, timedelta(-999999999))
-        self.assertEqual(timedelta.max, timedelta(999999999, 24*3600-1, 1e6-1))
-        self.assertEqual(timedelta.resolution, timedelta(0, 0, 1))
-
-    def test_overflow(self):
-        tiny = timedelta.resolution
-
-        td = timedelta.min + tiny
-        td -= tiny  # no problem
-        self.assertRaises(OverflowError, td.__sub__, tiny)
-        self.assertRaises(OverflowError, td.__add__, -tiny)
-
-        td = timedelta.max - tiny
-        td += tiny  # no problem
-        self.assertRaises(OverflowError, td.__add__, tiny)
-        self.assertRaises(OverflowError, td.__sub__, -tiny)
-
-        self.assertRaises(OverflowError, lambda: -timedelta.max)
-
-    def test_microsecond_rounding(self):
-        td = timedelta
-        eq = self.assertEqual
-
-        # Single-field rounding.
-        eq(td(milliseconds=0.4/1000), td(0))    # rounds to 0
-        eq(td(milliseconds=-0.4/1000), td(0))    # rounds to 0
-        eq(td(milliseconds=0.6/1000), td(microseconds=1))
-        eq(td(milliseconds=-0.6/1000), td(microseconds=-1))
-
-        # Rounding due to contributions from more than one field.
-        us_per_hour = 3600e6
-        us_per_day = us_per_hour * 24
-        eq(td(days=.4/us_per_day), td(0))
-        eq(td(hours=.2/us_per_hour), td(0))
-        eq(td(days=.4/us_per_day, hours=.2/us_per_hour), td(microseconds=1))
-
-        eq(td(days=-.4/us_per_day), td(0))
-        eq(td(hours=-.2/us_per_hour), td(0))
-        eq(td(days=-.4/us_per_day, hours=-.2/us_per_hour), td(microseconds=-1))
-
-    def test_massive_normalization(self):
-        td = timedelta(microseconds=-1)
-        self.assertEqual((td.days, td.seconds, td.microseconds),
-                         (-1, 24*3600-1, 999999))
-
-    def test_bool(self):
-        self.assertTrue(timedelta(1))
-        self.assertTrue(timedelta(0, 1))
-        self.assertTrue(timedelta(0, 0, 1))
-        self.assertTrue(timedelta(microseconds=1))
-        self.assertTrue(not timedelta(0))
-
-    def test_subclass_timedelta(self):
-
-        class T(timedelta):
-            @staticmethod
-            def from_td(td):
-                return T(td.days, td.seconds, td.microseconds)
-
-            def as_hours(self):
-                sum = (self.days * 24 +
-                       self.seconds / 3600.0 +
-                       self.microseconds / 3600e6)
-                return round(sum)
-
-        t1 = T(days=1)
-        self.assertTrue(type(t1) is T)
-        self.assertEqual(t1.as_hours(), 24)
-
-        t2 = T(days=-1, seconds=-3600)
-        self.assertTrue(type(t2) is T)
-        self.assertEqual(t2.as_hours(), -25)
-
-        t3 = t1 + t2
-        self.assertTrue(type(t3) is timedelta)
-        t4 = T.from_td(t3)
-        self.assertTrue(type(t4) is T)
-        self.assertEqual(t3.days, t4.days)
-        self.assertEqual(t3.seconds, t4.seconds)
-        self.assertEqual(t3.microseconds, t4.microseconds)
-        self.assertEqual(str(t3), str(t4))
-        self.assertEqual(t4.as_hours(), -1)
-
-#############################################################################
-# date tests
-
-class TestDateOnly(unittest.TestCase):
-    # Tests here won't pass if also run on datetime objects, so don't
-    # subclass this to test datetimes too.
-
-    def test_delta_non_days_ignored(self):
-        dt = date(2000, 1, 2)
-        delta = timedelta(days=1, hours=2, minutes=3, seconds=4,
-                          microseconds=5)
-        days = timedelta(delta.days)
-        self.assertEqual(days, timedelta(1))
-
-        dt2 = dt + delta
-        self.assertEqual(dt2, dt + days)
-
-        dt2 = delta + dt
-        self.assertEqual(dt2, dt + days)
-
-        dt2 = dt - delta
-        self.assertEqual(dt2, dt - days)
-
-        delta = -delta
-        days = timedelta(delta.days)
-        self.assertEqual(days, timedelta(-2))
-
-        dt2 = dt + delta
-        self.assertEqual(dt2, dt + days)
-
-        dt2 = delta + dt
-        self.assertEqual(dt2, dt + days)
-
-        dt2 = dt - delta
-        self.assertEqual(dt2, dt - days)
-
-class SubclassDate(date):
-    sub_var = 1
-
-class TestDate(HarmlessMixedComparison, unittest.TestCase):
-    # Tests here should pass for both dates and datetimes, except for a
-    # few tests that TestDateTime overrides.
-
-    theclass = date
-
-    def test_basic_attributes(self):
-        dt = self.theclass(2002, 3, 1)
-        self.assertEqual(dt.year, 2002)
-        self.assertEqual(dt.month, 3)
-        self.assertEqual(dt.day, 1)
-
-    def test_roundtrip(self):
-        for dt in (self.theclass(1, 2, 3),
-                   self.theclass.today()):
-            # Verify dt -> string -> date identity.
-            s = repr(dt)
-            self.assertTrue(s.startswith('datetime.'))
-            s = s[9:]
-            dt2 = eval(s)
-            self.assertEqual(dt, dt2)
-
-            # Verify identity via reconstructing from pieces.
-            dt2 = self.theclass(dt.year, dt.month, dt.day)
-            self.assertEqual(dt, dt2)
-
-    def test_ordinal_conversions(self):
-        # Check some fixed values.
-        for y, m, d, n in [(1, 1, 1, 1),      # calendar origin
-                           (1, 12, 31, 365),
-                           (2, 1, 1, 366),
-                           # first example from "Calendrical Calculations"
-                           (1945, 11, 12, 710347)]:
-            d = self.theclass(y, m, d)
-            self.assertEqual(n, d.toordinal())
-            fromord = self.theclass.fromordinal(n)
-            self.assertEqual(d, fromord)
-            if hasattr(fromord, "hour"):
-            # if we're checking something fancier than a date, verify
-            # the extra fields have been zeroed out
-                self.assertEqual(fromord.hour, 0)
-                self.assertEqual(fromord.minute, 0)
-                self.assertEqual(fromord.second, 0)
-                self.assertEqual(fromord.microsecond, 0)
-
-        # Check first and last days of year spottily across the whole
-        # range of years supported.
-        for year in xrange(MINYEAR, MAXYEAR+1, 7):
-            # Verify (year, 1, 1) -> ordinal -> y, m, d is identity.
-            d = self.theclass(year, 1, 1)
-            n = d.toordinal()
-            d2 = self.theclass.fromordinal(n)
-            self.assertEqual(d, d2)
-            # Verify that moving back a day gets to the end of year-1.
-            if year > 1:
-                d = self.theclass.fromordinal(n-1)
-                d2 = self.theclass(year-1, 12, 31)
-                self.assertEqual(d, d2)
-                self.assertEqual(d2.toordinal(), n-1)
-
-        # Test every day in a leap-year and a non-leap year.
-        dim = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
-        for year, isleap in (2000, True), (2002, False):
-            n = self.theclass(year, 1, 1).toordinal()
-            for month, maxday in zip(range(1, 13), dim):
-                if month == 2 and isleap:
-                    maxday += 1
-                for day in range(1, maxday+1):
-                    d = self.theclass(year, month, day)
-                    self.assertEqual(d.toordinal(), n)
-                    self.assertEqual(d, self.theclass.fromordinal(n))
-                    n += 1
-
-    def test_extreme_ordinals(self):
-        a = self.theclass.min
-        a = self.theclass(a.year, a.month, a.day)  # get rid of time parts
-        aord = a.toordinal()
-        b = a.fromordinal(aord)
-        self.assertEqual(a, b)
-
-        self.assertRaises(ValueError, lambda: a.fromordinal(aord - 1))
-
-        b = a + timedelta(days=1)
-        self.assertEqual(b.toordinal(), aord + 1)
-        self.assertEqual(b, self.theclass.fromordinal(aord + 1))
-
-        a = self.theclass.max
-        a = self.theclass(a.year, a.month, a.day)  # get rid of time parts
-        aord = a.toordinal()
-        b = a.fromordinal(aord)
-        self.assertEqual(a, b)
-
-        self.assertRaises(ValueError, lambda: a.fromordinal(aord + 1))
-
-        b = a - timedelta(days=1)
-        self.assertEqual(b.toordinal(), aord - 1)
-        self.assertEqual(b, self.theclass.fromordinal(aord - 1))
-
-    def test_bad_constructor_arguments(self):
-        # bad years
-        self.theclass(MINYEAR, 1, 1)  # no exception
-        self.theclass(MAXYEAR, 1, 1)  # no exception
-        self.assertRaises(ValueError, self.theclass, MINYEAR-1, 1, 1)
-        self.assertRaises(ValueError, self.theclass, MAXYEAR+1, 1, 1)
-        # bad months
-        self.theclass(2000, 1, 1)    # no exception
-        self.theclass(2000, 12, 1)   # no exception
-        self.assertRaises(ValueError, self.theclass, 2000, 0, 1)
-        self.assertRaises(ValueError, self.theclass, 2000, 13, 1)
-        # bad days
-        self.theclass(2000, 2, 29)   # no exception
-        self.theclass(2004, 2, 29)   # no exception
-        self.theclass(2400, 2, 29)   # no exception
-        self.assertRaises(ValueError, self.theclass, 2000, 2, 30)
-        self.assertRaises(ValueError, self.theclass, 2001, 2, 29)
-        self.assertRaises(ValueError, self.theclass, 2100, 2, 29)
-        self.assertRaises(ValueError, self.theclass, 1900, 2, 29)
-        self.assertRaises(ValueError, self.theclass, 2000, 1, 0)
-        self.assertRaises(ValueError, self.theclass, 2000, 1, 32)
-
-    def test_hash_equality(self):
-        d = self.theclass(2000, 12, 31)
-        # same thing
-        e = self.theclass(2000, 12, 31)
-        self.assertEqual(d, e)
-        self.assertEqual(hash(d), hash(e))
-
-        dic = {d: 1}
-        dic[e] = 2
-        self.assertEqual(len(dic), 1)
-        self.assertEqual(dic[d], 2)
-        self.assertEqual(dic[e], 2)
-
-        d = self.theclass(2001,  1,  1)
-        # same thing
-        e = self.theclass(2001,  1,  1)
-        self.assertEqual(d, e)
-        self.assertEqual(hash(d), hash(e))
-
-        dic = {d: 1}
-        dic[e] = 2
-        self.assertEqual(len(dic), 1)
-        self.assertEqual(dic[d], 2)
-        self.assertEqual(dic[e], 2)
-
-    def test_computations(self):
-        a = self.theclass(2002, 1, 31)
-        b = self.theclass(1956, 1, 31)
-
-        diff = a-b
-        self.assertEqual(diff.days, 46*365 + len(range(1956, 2002, 4)))
-        self.assertEqual(diff.seconds, 0)
-        self.assertEqual(diff.microseconds, 0)
-
-        day = timedelta(1)
-        week = timedelta(7)
-        a = self.theclass(2002, 3, 2)
-        self.assertEqual(a + day, self.theclass(2002, 3, 3))
-        self.assertEqual(day + a, self.theclass(2002, 3, 3))
-        self.assertEqual(a - day, self.theclass(2002, 3, 1))
-        self.assertEqual(-day + a, self.theclass(2002, 3, 1))
-        self.assertEqual(a + week, self.theclass(2002, 3, 9))
-        self.assertEqual(a - week, self.theclass(2002, 2, 23))
-        self.assertEqual(a + 52*week, self.theclass(2003, 3, 1))
-        self.assertEqual(a - 52*week, self.theclass(2001, 3, 3))
-        self.assertEqual((a + week) - a, week)
-        self.assertEqual((a + day) - a, day)
-        self.assertEqual((a - week) - a, -week)
-        self.assertEqual((a - day) - a, -day)
-        self.assertEqual(a - (a + week), -week)
-        self.assertEqual(a - (a + day), -day)
-        self.assertEqual(a - (a - week), week)
-        self.assertEqual(a - (a - day), day)
-
-        # Add/sub ints, longs, floats should be illegal
-        for i in 1, 1L, 1.0:
-            self.assertRaises(TypeError, lambda: a+i)
-            self.assertRaises(TypeError, lambda: a-i)
-            self.assertRaises(TypeError, lambda: i+a)
-            self.assertRaises(TypeError, lambda: i-a)
-
-        # delta - date is senseless.
-        self.assertRaises(TypeError, lambda: day - a)
-        # mixing date and (delta or date) via * or // is senseless
-        self.assertRaises(TypeError, lambda: day * a)
-        self.assertRaises(TypeError, lambda: a * day)
-        self.assertRaises(TypeError, lambda: day // a)
-        self.assertRaises(TypeError, lambda: a // day)
-        self.assertRaises(TypeError, lambda: a * a)
-        self.assertRaises(TypeError, lambda: a // a)
-        # date + date is senseless
-        self.assertRaises(TypeError, lambda: a + a)
-
-    def test_overflow(self):
-        tiny = self.theclass.resolution
-
-        for delta in [tiny, timedelta(1), timedelta(2)]:
-            dt = self.theclass.min + delta
-            dt -= delta  # no problem
-            self.assertRaises(OverflowError, dt.__sub__, delta)
-            self.assertRaises(OverflowError, dt.__add__, -delta)
-
-            dt = self.theclass.max - delta
-            dt += delta  # no problem
-            self.assertRaises(OverflowError, dt.__add__, delta)
-            self.assertRaises(OverflowError, dt.__sub__, -delta)
-
-    def test_fromtimestamp(self):
-        import time
-
-        # Try an arbitrary fixed value.
-        year, month, day = 1999, 9, 19
-        ts = time.mktime((year, month, day, 0, 0, 0, 0, 0, -1))
-        d = self.theclass.fromtimestamp(ts)
-        self.assertEqual(d.year, year)
-        self.assertEqual(d.month, month)
-        self.assertEqual(d.day, day)
-
-    def test_insane_fromtimestamp(self):
-        # It's possible that some platform maps time_t to double,
-        # and that this test will fail there.  This test should
-        # exempt such platforms (provided they return reasonable
-        # results!).
-        for insane in -1e200, 1e200:
-            self.assertRaises(ValueError, self.theclass.fromtimestamp,
-                              insane)
-
-    def test_today(self):
-        import time
-
-        # We claim that today() is like fromtimestamp(time.time()), so
-        # prove it.
-        for dummy in range(3):
-            today = self.theclass.today()
-            ts = time.time()
-            todayagain = self.theclass.fromtimestamp(ts)
-            if today == todayagain:
-                break
-            # There are several legit reasons that could fail:
-            # 1. It recently became midnight, between the today() and the
-            #    time() calls.
-            # 2. The platform time() has such fine resolution that we'll
-            #    never get the same value twice.
-            # 3. The platform time() has poor resolution, and we just
-            #    happened to call today() right before a resolution quantum
-            #    boundary.
-            # 4. The system clock got fiddled between calls.
-            # In any case, wait a little while and try again.
-            time.sleep(0.1)
-
-        # It worked or it didn't.  If it didn't, assume it's reason #2, and
-        # let the test pass if they're within half a second of each other.
-        self.assertTrue(today == todayagain or
-                        abs(todayagain - today) < timedelta(seconds=0.5))
-
-    def test_weekday(self):
-        for i in range(7):
-            # March 4, 2002 is a Monday
-            self.assertEqual(self.theclass(2002, 3, 4+i).weekday(), i)
-            self.assertEqual(self.theclass(2002, 3, 4+i).isoweekday(), i+1)
-            # January 2, 1956 is a Monday
-            self.assertEqual(self.theclass(1956, 1, 2+i).weekday(), i)
-            self.assertEqual(self.theclass(1956, 1, 2+i).isoweekday(), i+1)
-
-    def test_isocalendar(self):
-        # Check examples from
-        # http://www.phys.uu.nl/~vgent/calendar/isocalendar.htm
-        for i in range(7):
-            d = self.theclass(2003, 12, 22+i)
-            self.assertEqual(d.isocalendar(), (2003, 52, i+1))
-            d = self.theclass(2003, 12, 29) + timedelta(i)
-            self.assertEqual(d.isocalendar(), (2004, 1, i+1))
-            d = self.theclass(2004, 1, 5+i)
-            self.assertEqual(d.isocalendar(), (2004, 2, i+1))
-            d = self.theclass(2009, 12, 21+i)
-            self.assertEqual(d.isocalendar(), (2009, 52, i+1))
-            d = self.theclass(2009, 12, 28) + timedelta(i)
-            self.assertEqual(d.isocalendar(), (2009, 53, i+1))
-            d = self.theclass(2010, 1, 4+i)
-            self.assertEqual(d.isocalendar(), (2010, 1, i+1))
-
-    def test_iso_long_years(self):
-        # Calculate long ISO years and compare to table from
-        # http://www.phys.uu.nl/~vgent/calendar/isocalendar.htm
-        ISO_LONG_YEARS_TABLE = """
-              4   32   60   88
-              9   37   65   93
-             15   43   71   99
-             20   48   76
-             26   54   82
-
-            105  133  161  189
-            111  139  167  195
-            116  144  172
-            122  150  178
-            128  156  184
-
-            201  229  257  285
-            207  235  263  291
-            212  240  268  296
-            218  246  274
-            224  252  280
-
-            303  331  359  387
-            308  336  364  392
-            314  342  370  398
-            320  348  376
-            325  353  381
-        """
-        iso_long_years = map(int, ISO_LONG_YEARS_TABLE.split())
-        iso_long_years.sort()
-        L = []
-        for i in range(400):
-            d = self.theclass(2000+i, 12, 31)
-            d1 = self.theclass(1600+i, 12, 31)
-            self.assertEqual(d.isocalendar()[1:], d1.isocalendar()[1:])
-            if d.isocalendar()[1] == 53:
-                L.append(i)
-        self.assertEqual(L, iso_long_years)
-
-    def test_isoformat(self):
-        t = self.theclass(2, 3, 2)
-        self.assertEqual(t.isoformat(), "0002-03-02")
-
-    def test_ctime(self):
-        t = self.theclass(2002, 3, 2)
-        self.assertEqual(t.ctime(), "Sat Mar  2 00:00:00 2002")
-
-    def test_strftime(self):
-        t = self.theclass(2005, 3, 2)
-        self.assertEqual(t.strftime("m:%m d:%d y:%y"), "m:03 d:02 y:05")
-        self.assertEqual(t.strftime(""), "") # SF bug #761337
-        self.assertEqual(t.strftime('x'*1000), 'x'*1000) # SF bug #1556784
-
-        self.assertRaises(TypeError, t.strftime) # needs an arg
-        self.assertRaises(TypeError, t.strftime, "one", "two") # too many args
-        self.assertRaises(TypeError, t.strftime, 42) # arg wrong type
-
-        # test that unicode input is allowed (issue 2782)
-        self.assertEqual(t.strftime(u"%m"), "03")
-
-        # A naive object replaces %z and %Z w/ empty strings.
-        self.assertEqual(t.strftime("'%z' '%Z'"), "'' ''")
-
-        #make sure that invalid format specifiers are handled correctly
-        #self.assertRaises(ValueError, t.strftime, "%e")
-        #self.assertRaises(ValueError, t.strftime, "%")
-        #self.assertRaises(ValueError, t.strftime, "%#")
-
-        #oh well, some systems just ignore those invalid ones.
-        #at least, excercise them to make sure that no crashes
-        #are generated
-        for f in ["%e", "%", "%#"]:
-            try:
-                t.strftime(f)
-            except ValueError:
-                pass
-
-        #check that this standard extension works
-        t.strftime("%f")
-
-
-    def test_format(self):
-        dt = self.theclass(2007, 9, 10)
-        self.assertEqual(dt.__format__(''), str(dt))
-
-        # check that a derived class's __str__() gets called
-        class A(self.theclass):
-            def __str__(self):
-                return 'A'
-        a = A(2007, 9, 10)
-        self.assertEqual(a.__format__(''), 'A')
-
-        # check that a derived class's strftime gets called
-        class B(self.theclass):
-            def strftime(self, format_spec):
-                return 'B'
-        b = B(2007, 9, 10)
-        self.assertEqual(b.__format__(''), str(dt))
-
-        for fmt in ["m:%m d:%d y:%y",
-                    "m:%m d:%d y:%y H:%H M:%M S:%S",
-                    "%z %Z",
-                    ]:
-            self.assertEqual(dt.__format__(fmt), dt.strftime(fmt))
-            self.assertEqual(a.__format__(fmt), dt.strftime(fmt))
-            self.assertEqual(b.__format__(fmt), 'B')
-
-    def test_resolution_info(self):
-        self.assertIsInstance(self.theclass.min, self.theclass)
-        self.assertIsInstance(self.theclass.max, self.theclass)
-        self.assertIsInstance(self.theclass.resolution, timedelta)
-        self.assertTrue(self.theclass.max > self.theclass.min)
-
-    def test_extreme_timedelta(self):
-        big = self.theclass.max - self.theclass.min
-        # 3652058 days, 23 hours, 59 minutes, 59 seconds, 999999 microseconds
-        n = (big.days*24*3600 + big.seconds)*1000000 + big.microseconds
-        # n == 315537897599999999 ~= 2**58.13
-        justasbig = timedelta(0, 0, n)
-        self.assertEqual(big, justasbig)
-        self.assertEqual(self.theclass.min + big, self.theclass.max)
-        self.assertEqual(self.theclass.max - big, self.theclass.min)
-
-    def test_timetuple(self):
-        for i in range(7):
-            # January 2, 1956 is a Monday (0)
-            d = self.theclass(1956, 1, 2+i)
-            t = d.timetuple()
-            self.assertEqual(t, (1956, 1, 2+i, 0, 0, 0, i, 2+i, -1))
-            # February 1, 1956 is a Wednesday (2)
-            d = self.theclass(1956, 2, 1+i)
-            t = d.timetuple()
-            self.assertEqual(t, (1956, 2, 1+i, 0, 0, 0, (2+i)%7, 32+i, -1))
-            # March 1, 1956 is a Thursday (3), and is the 31+29+1 = 61st day
-            # of the year.
-            d = self.theclass(1956, 3, 1+i)
-            t = d.timetuple()
-            self.assertEqual(t, (1956, 3, 1+i, 0, 0, 0, (3+i)%7, 61+i, -1))
-            self.assertEqual(t.tm_year, 1956)
-            self.assertEqual(t.tm_mon, 3)
-            self.assertEqual(t.tm_mday, 1+i)
-            self.assertEqual(t.tm_hour, 0)
-            self.assertEqual(t.tm_min, 0)
-            self.assertEqual(t.tm_sec, 0)
-            self.assertEqual(t.tm_wday, (3+i)%7)
-            self.assertEqual(t.tm_yday, 61+i)
-            self.assertEqual(t.tm_isdst, -1)
-
-    def test_pickling(self):
-        args = 6, 7, 23
-        orig = self.theclass(*args)
-        for pickler, unpickler, proto in pickle_choices:
-            green = pickler.dumps(orig, proto)
-            derived = unpickler.loads(green)
-            self.assertEqual(orig, derived)
-
-    def test_compare(self):
-        t1 = self.theclass(2, 3, 4)
-        t2 = self.theclass(2, 3, 4)
-        self.assertTrue(t1 == t2)
-        self.assertTrue(t1 <= t2)
-        self.assertTrue(t1 >= t2)
-        self.assertTrue(not t1 != t2)
-        self.assertTrue(not t1 < t2)
-        self.assertTrue(not t1 > t2)
-        self.assertEqual(cmp(t1, t2), 0)
-        self.assertEqual(cmp(t2, t1), 0)
-
-        for args in (3, 3, 3), (2, 4, 4), (2, 3, 5):
-            t2 = self.theclass(*args)   # this is larger than t1
-            self.assertTrue(t1 < t2)
-            self.assertTrue(t2 > t1)
-            self.assertTrue(t1 <= t2)
-            self.assertTrue(t2 >= t1)
-            self.assertTrue(t1 != t2)
-            self.assertTrue(t2 != t1)
-            self.assertTrue(not t1 == t2)
-            self.assertTrue(not t2 == t1)
-            self.assertTrue(not t1 > t2)
-            self.assertTrue(not t2 < t1)
-            self.assertTrue(not t1 >= t2)
-            self.assertTrue(not t2 <= t1)
-            self.assertEqual(cmp(t1, t2), -1)
-            self.assertEqual(cmp(t2, t1), 1)
-
-        for badarg in OTHERSTUFF:
-            self.assertEqual(t1 == badarg, False)
-            self.assertEqual(t1 != badarg, True)
-            self.assertEqual(badarg == t1, False)
-            self.assertEqual(badarg != t1, True)
-
-            self.assertRaises(TypeError, lambda: t1 < badarg)
-            self.assertRaises(TypeError, lambda: t1 > badarg)
-            self.assertRaises(TypeError, lambda: t1 >= badarg)
-            self.assertRaises(TypeError, lambda: badarg <= t1)
-            self.assertRaises(TypeError, lambda: badarg < t1)
-            self.assertRaises(TypeError, lambda: badarg > t1)
-            self.assertRaises(TypeError, lambda: badarg >= t1)
-
-    def test_mixed_compare(self):
-        our = self.theclass(2000, 4, 5)
-        self.assertRaises(TypeError, cmp, our, 1)
-        self.assertRaises(TypeError, cmp, 1, our)
-
-        class AnotherDateTimeClass(object):
-            def __cmp__(self, other):
-                # Return "equal" so calling this can't be confused with
-                # compare-by-address (which never says "equal" for distinct
-                # objects).
-                return 0
-            __hash__ = None # Silence Py3k warning
-
-        # This still errors, because date and datetime comparison raise
-        # TypeError instead of NotImplemented when they don't know what to
-        # do, in order to stop comparison from falling back to the default
-        # compare-by-address.
-        their = AnotherDateTimeClass()
-        self.assertRaises(TypeError, cmp, our, their)
-        # Oops:  The next stab raises TypeError in the C implementation,
-        # but not in the Python implementation of datetime.  The difference
-        # is due to that the Python implementation defines __cmp__ but
-        # the C implementation defines tp_richcompare.  This is more pain
-        # to fix than it's worth, so commenting out the test.
-        # self.assertEqual(cmp(their, our), 0)
-
-        # But date and datetime comparison return NotImplemented instead if the
-        # other object has a timetuple attr.  This gives the other object a
-        # chance to do the comparison.
-        class Comparable(AnotherDateTimeClass):
-            def timetuple(self):
-                return ()
-
-        their = Comparable()
-        self.assertEqual(cmp(our, their), 0)
-        self.assertEqual(cmp(their, our), 0)
-        self.assertTrue(our == their)
-        self.assertTrue(their == our)
-
-    def test_bool(self):
-        # All dates are considered true.
-        self.assertTrue(self.theclass.min)
-        self.assertTrue(self.theclass.max)
-
-    def test_strftime_out_of_range(self):
-        # For nasty technical reasons, we can't handle years before 1900.
-        cls = self.theclass
-        self.assertEqual(cls(1900, 1, 1).strftime("%Y"), "1900")
-        for y in 1, 49, 51, 99, 100, 1000, 1899:
-            self.assertRaises(ValueError, cls(y, 1, 1).strftime, "%Y")
-
-    def test_replace(self):
-        cls = self.theclass
-        args = [1, 2, 3]
-        base = cls(*args)
-        self.assertEqual(base, base.replace())
-
-        i = 0
-        for name, newval in (("year", 2),
-                             ("month", 3),
-                             ("day", 4)):
-            newargs = args[:]
-            newargs[i] = newval
-            expected = cls(*newargs)
-            got = base.replace(**{name: newval})
-            self.assertEqual(expected, got)
-            i += 1
-
-        # Out of bounds.
-        base = cls(2000, 2, 29)
-        self.assertRaises(ValueError, base.replace, year=2001)
-
-    def test_subclass_date(self):
-
-        class C(self.theclass):
-            theAnswer = 42
-
-            def __new__(cls, *args, **kws):
-                temp = kws.copy()
-                extra = temp.pop('extra')
-                result = self.theclass.__new__(cls, *args, **temp)
-                result.extra = extra
-                return result
-
-            def newmeth(self, start):
-                return start + self.year + self.month
-
-        args = 2003, 4, 14
-
-        dt1 = self.theclass(*args)
-        dt2 = C(*args, **{'extra': 7})
-
-        self.assertEqual(dt2.__class__, C)
-        self.assertEqual(dt2.theAnswer, 42)
-        self.assertEqual(dt2.extra, 7)
-        self.assertEqual(dt1.toordinal(), dt2.toordinal())
-        self.assertEqual(dt2.newmeth(-7), dt1.year + dt1.month - 7)
-
-    def test_pickling_subclass_date(self):
-
-        args = 6, 7, 23
-        orig = SubclassDate(*args)
-        for pickler, unpickler, proto in pickle_choices:
-            green = pickler.dumps(orig, proto)
-            derived = unpickler.loads(green)
-            self.assertEqual(orig, derived)
-
-    def test_backdoor_resistance(self):
-        # For fast unpickling, the constructor accepts a pickle string.
-        # This is a low-overhead backdoor.  A user can (by intent or
-        # mistake) pass a string directly, which (if it's the right length)
-        # will get treated like a pickle, and bypass the normal sanity
-        # checks in the constructor.  This can create insane objects.
-        # The constructor doesn't want to burn the time to validate all
-        # fields, but does check the month field.  This stops, e.g.,
-        # datetime.datetime('1995-03-25') from yielding an insane object.
-        base = '1995-03-25'
-        if not issubclass(self.theclass, datetime):
-            base = base[:4]
-        for month_byte in '9', chr(0), chr(13), '\xff':
-            self.assertRaises(TypeError, self.theclass,
-                                         base[:2] + month_byte + base[3:])
-        for ord_byte in range(1, 13):
-            # This shouldn't blow up because of the month byte alone.  If
-            # the implementation changes to do more-careful checking, it may
-            # blow up because other fields are insane.
-            self.theclass(base[:2] + chr(ord_byte) + base[3:])
-
-#############################################################################
-# datetime tests
-
-class SubclassDatetime(datetime):
-    sub_var = 1
-
-class TestDateTime(TestDate):
-
-    theclass = datetime
-
-    def test_basic_attributes(self):
-        dt = self.theclass(2002, 3, 1, 12, 0)
-        self.assertEqual(dt.year, 2002)
-        self.assertEqual(dt.month, 3)
-        self.assertEqual(dt.day, 1)
-        self.assertEqual(dt.hour, 12)
-        self.assertEqual(dt.minute, 0)
-        self.assertEqual(dt.second, 0)
-        self.assertEqual(dt.microsecond, 0)
-
-    def test_basic_attributes_nonzero(self):
-        # Make sure all attributes are non-zero so bugs in
-        # bit-shifting access show up.
-        dt = self.theclass(2002, 3, 1, 12, 59, 59, 8000)
-        self.assertEqual(dt.year, 2002)
-        self.assertEqual(dt.month, 3)
-        self.assertEqual(dt.day, 1)
-        self.assertEqual(dt.hour, 12)
-        self.assertEqual(dt.minute, 59)
-        self.assertEqual(dt.second, 59)
-        self.assertEqual(dt.microsecond, 8000)
-
-    def test_roundtrip(self):
-        for dt in (self.theclass(1, 2, 3, 4, 5, 6, 7),
-                   self.theclass.now()):
-            # Verify dt -> string -> datetime identity.
-            s = repr(dt)
-            self.assertTrue(s.startswith('datetime.'))
-            s = s[9:]
-            dt2 = eval(s)
-            self.assertEqual(dt, dt2)
-
-            # Verify identity via reconstructing from pieces.
-            dt2 = self.theclass(dt.year, dt.month, dt.day,
-                                dt.hour, dt.minute, dt.second,
-                                dt.microsecond)
-            self.assertEqual(dt, dt2)
-
-    def test_isoformat(self):
-        t = self.theclass(2, 3, 2, 4, 5, 1, 123)
-        self.assertEqual(t.isoformat(),    "0002-03-02T04:05:01.000123")
-        self.assertEqual(t.isoformat('T'), "0002-03-02T04:05:01.000123")
-        self.assertEqual(t.isoformat(' '), "0002-03-02 04:05:01.000123")
-        self.assertEqual(t.isoformat('\x00'), "0002-03-02\x0004:05:01.000123")
-        # str is ISO format with the separator forced to a blank.
-        self.assertEqual(str(t), "0002-03-02 04:05:01.000123")
-
-        t = self.theclass(2, 3, 2)
-        self.assertEqual(t.isoformat(),    "0002-03-02T00:00:00")
-        self.assertEqual(t.isoformat('T'), "0002-03-02T00:00:00")
-        self.assertEqual(t.isoformat(' '), "0002-03-02 00:00:00")
-        # str is ISO format with the separator forced to a blank.
-        self.assertEqual(str(t), "0002-03-02 00:00:00")
-
-    def test_format(self):
-        dt = self.theclass(2007, 9, 10, 4, 5, 1, 123)
-        self.assertEqual(dt.__format__(''), str(dt))
-
-        # check that a derived class's __str__() gets called
-        class A(self.theclass):
-            def __str__(self):
-                return 'A'
-        a = A(2007, 9, 10, 4, 5, 1, 123)
-        self.assertEqual(a.__format__(''), 'A')
-
-        # check that a derived class's strftime gets called
-        class B(self.theclass):
-            def strftime(self, format_spec):
-                return 'B'
-        b = B(2007, 9, 10, 4, 5, 1, 123)
-        self.assertEqual(b.__format__(''), str(dt))
-
-        for fmt in ["m:%m d:%d y:%y",
-                    "m:%m d:%d y:%y H:%H M:%M S:%S",
-                    "%z %Z",
-                    ]:
-            self.assertEqual(dt.__format__(fmt), dt.strftime(fmt))
-            self.assertEqual(a.__format__(fmt), dt.strftime(fmt))
-            self.assertEqual(b.__format__(fmt), 'B')
-
-    def test_more_ctime(self):
-        # Test fields that TestDate doesn't touch.
-        import time
-
-        t = self.theclass(2002, 3, 2, 18, 3, 5, 123)
-        self.assertEqual(t.ctime(), "Sat Mar  2 18:03:05 2002")
-        # Oops!  The next line fails on Win2K under MSVC 6, so it's commented
-        # out.  The difference is that t.ctime() produces " 2" for the day,
-        # but platform ctime() produces "02" for the day.  According to
-        # C99, t.ctime() is correct here.
-        # self.assertEqual(t.ctime(), time.ctime(time.mktime(t.timetuple())))
-
-        # So test a case where that difference doesn't matter.
-        t = self.theclass(2002, 3, 22, 18, 3, 5, 123)
-        self.assertEqual(t.ctime(), time.ctime(time.mktime(t.timetuple())))
-
-    def test_tz_independent_comparing(self):
-        dt1 = self.theclass(2002, 3, 1, 9, 0, 0)
-        dt2 = self.theclass(2002, 3, 1, 10, 0, 0)
-        dt3 = self.theclass(2002, 3, 1, 9, 0, 0)
-        self.assertEqual(dt1, dt3)
-        self.assertTrue(dt2 > dt3)
-
-        # Make sure comparison doesn't forget microseconds, and isn't done
-        # via comparing a float timestamp (an IEEE double doesn't have enough
-        # precision to span microsecond resolution across years 1 thru 9999,
-        # so comparing via timestamp necessarily calls some distinct values
-        # equal).
-        dt1 = self.theclass(MAXYEAR, 12, 31, 23, 59, 59, 999998)
-        us = timedelta(microseconds=1)
-        dt2 = dt1 + us
-        self.assertEqual(dt2 - dt1, us)
-        self.assertTrue(dt1 < dt2)
-
-    def test_strftime_with_bad_tzname_replace(self):
-        # verify ok if tzinfo.tzname().replace() returns a non-string
-        class MyTzInfo(FixedOffset):
-            def tzname(self, dt):
-                class MyStr(str):
-                    def replace(self, *args):
-                        return None
-                return MyStr('name')
-        t = self.theclass(2005, 3, 2, 0, 0, 0, 0, MyTzInfo(3, 'name'))
-        self.assertRaises(TypeError, t.strftime, '%Z')
-
-    def test_bad_constructor_arguments(self):
-        # bad years
-        self.theclass(MINYEAR, 1, 1)  # no exception
-        self.theclass(MAXYEAR, 1, 1)  # no exception
-        self.assertRaises(ValueError, self.theclass, MINYEAR-1, 1, 1)
-        self.assertRaises(ValueError, self.theclass, MAXYEAR+1, 1, 1)
-        # bad months
-        self.theclass(2000, 1, 1)    # no exception
-        self.theclass(2000, 12, 1)   # no exception
-        self.assertRaises(ValueError, self.theclass, 2000, 0, 1)
-        self.assertRaises(ValueError, self.theclass, 2000, 13, 1)
-        # bad days
-        self.theclass(2000, 2, 29)   # no exception
-        self.theclass(2004, 2, 29)   # no exception
-        self.theclass(2400, 2, 29)   # no exception
-        self.assertRaises(ValueError, self.theclass, 2000, 2, 30)
-        self.assertRaises(ValueError, self.theclass, 2001, 2, 29)
-        self.assertRaises(ValueError, self.theclass, 2100, 2, 29)
-        self.assertRaises(ValueError, self.theclass, 1900, 2, 29)
-        self.assertRaises(ValueError, self.theclass, 2000, 1, 0)
-        self.assertRaises(ValueError, self.theclass, 2000, 1, 32)
-        # bad hours
-        self.theclass(2000, 1, 31, 0)    # no exception
-        self.theclass(2000, 1, 31, 23)   # no exception
-        self.assertRaises(ValueError, self.theclass, 2000, 1, 31, -1)
-        self.assertRaises(ValueError, self.theclass, 2000, 1, 31, 24)
-        # bad minutes
-        self.theclass(2000, 1, 31, 23, 0)    # no exception
-        self.theclass(2000, 1, 31, 23, 59)   # no exception
-        self.assertRaises(ValueError, self.theclass, 2000, 1, 31, 23, -1)
-        self.assertRaises(ValueError, self.theclass, 2000, 1, 31, 23, 60)
-        # bad seconds
-        self.theclass(2000, 1, 31, 23, 59, 0)    # no exception
-        self.theclass(2000, 1, 31, 23, 59, 59)   # no exception
-        self.assertRaises(ValueError, self.theclass, 2000, 1, 31, 23, 59, -1)
-        self.assertRaises(ValueError, self.theclass, 2000, 1, 31, 23, 59, 60)
-        # bad microseconds
-        self.theclass(2000, 1, 31, 23, 59, 59, 0)    # no exception
-        self.theclass(2000, 1, 31, 23, 59, 59, 999999)   # no exception
-        self.assertRaises(ValueError, self.theclass,
-                          2000, 1, 31, 23, 59, 59, -1)
-        self.assertRaises(ValueError, self.theclass,
-                          2000, 1, 31, 23, 59, 59,
-                          1000000)
-
-    def test_hash_equality(self):
-        d = self.theclass(2000, 12, 31, 23, 30, 17)
-        e = self.theclass(2000, 12, 31, 23, 30, 17)
-        self.assertEqual(d, e)
-        self.assertEqual(hash(d), hash(e))
-
-        dic = {d: 1}
-        dic[e] = 2
-        self.assertEqual(len(dic), 1)
-        self.assertEqual(dic[d], 2)
-        self.assertEqual(dic[e], 2)
-
-        d = self.theclass(2001,  1,  1,  0,  5, 17)
-        e = self.theclass(2001,  1,  1,  0,  5, 17)
-        self.assertEqual(d, e)
-        self.assertEqual(hash(d), hash(e))
-
-        dic = {d: 1}
-        dic[e] = 2
-        self.assertEqual(len(dic), 1)
-        self.assertEqual(dic[d], 2)
-        self.assertEqual(dic[e], 2)
-
-    def test_computations(self):
-        a = self.theclass(2002, 1, 31)
-        b = self.theclass(1956, 1, 31)
-        diff = a-b
-        self.assertEqual(diff.days, 46*365 + len(range(1956, 2002, 4)))
-        self.assertEqual(diff.seconds, 0)
-        self.assertEqual(diff.microseconds, 0)
-        a = self.theclass(2002, 3, 2, 17, 6)
-        millisec = timedelta(0, 0, 1000)
-        hour = timedelta(0, 3600)
-        day = timedelta(1)
-        week = timedelta(7)
-        self.assertEqual(a + hour, self.theclass(2002, 3, 2, 18, 6))
-        self.assertEqual(hour + a, self.theclass(2002, 3, 2, 18, 6))
-        self.assertEqual(a + 10*hour, self.theclass(2002, 3, 3, 3, 6))
-        self.assertEqual(a - hour, self.theclass(2002, 3, 2, 16, 6))
-        self.assertEqual(-hour + a, self.theclass(2002, 3, 2, 16, 6))
-        self.assertEqual(a - hour, a + -hour)
-        self.assertEqual(a - 20*hour, self.theclass(2002, 3, 1, 21, 6))
-        self.assertEqual(a + day, self.theclass(2002, 3, 3, 17, 6))
-        self.assertEqual(a - day, self.theclass(2002, 3, 1, 17, 6))
-        self.assertEqual(a + week, self.theclass(2002, 3, 9, 17, 6))
-        self.assertEqual(a - week, self.theclass(2002, 2, 23, 17, 6))
-        self.assertEqual(a + 52*week, self.theclass(2003, 3, 1, 17, 6))
-        self.assertEqual(a - 52*week, self.theclass(2001, 3, 3, 17, 6))
-        self.assertEqual((a + week) - a, week)
-        self.assertEqual((a + day) - a, day)
-        self.assertEqual((a + hour) - a, hour)
-        self.assertEqual((a + millisec) - a, millisec)
-        self.assertEqual((a - week) - a, -week)
-        self.assertEqual((a - day) - a, -day)
-        self.assertEqual((a - hour) - a, -hour)
-        self.assertEqual((a - millisec) - a, -millisec)
-        self.assertEqual(a - (a + week), -week)
-        self.assertEqual(a - (a + day), -day)
-        self.assertEqual(a - (a + hour), -hour)
-        self.assertEqual(a - (a + millisec), -millisec)
-        self.assertEqual(a - (a - week), week)
-        self.assertEqual(a - (a - day), day)
-        self.assertEqual(a - (a - hour), hour)
-        self.assertEqual(a - (a - millisec), millisec)
-        self.assertEqual(a + (week + day + hour + millisec),
-                         self.theclass(2002, 3, 10, 18, 6, 0, 1000))
-        self.assertEqual(a + (week + day + hour + millisec),
-                         (((a + week) + day) + hour) + millisec)
-        self.assertEqual(a - (week + day + hour + millisec),
-                         self.theclass(2002, 2, 22, 16, 5, 59, 999000))
-        self.assertEqual(a - (week + day + hour + millisec),
-                         (((a - week) - day) - hour) - millisec)
-        # Add/sub ints, longs, floats should be illegal
-        for i in 1, 1L, 1.0:
-            self.assertRaises(TypeError, lambda: a+i)
-            self.assertRaises(TypeError, lambda: a-i)
-            self.assertRaises(TypeError, lambda: i+a)
-            self.assertRaises(TypeError, lambda: i-a)
-
-        # delta - datetime is senseless.
-        self.assertRaises(TypeError, lambda: day - a)
-        # mixing datetime and (delta or datetime) via * or // is senseless
-        self.assertRaises(TypeError, lambda: day * a)
-        self.assertRaises(TypeError, lambda: a * day)
-        self.assertRaises(TypeError, lambda: day // a)
-        self.assertRaises(TypeError, lambda: a // day)
-        self.assertRaises(TypeError, lambda: a * a)
-        self.assertRaises(TypeError, lambda: a // a)
-        # datetime + datetime is senseless
-        self.assertRaises(TypeError, lambda: a + a)
-
-    def test_pickling(self):
-        args = 6, 7, 23, 20, 59, 1, 64**2
-        orig = self.theclass(*args)
-        for pickler, unpickler, proto in pickle_choices:
-            green = pickler.dumps(orig, proto)
-            derived = unpickler.loads(green)
-            self.assertEqual(orig, derived)
-
-    def test_more_pickling(self):
-        a = self.theclass(2003, 2, 7, 16, 48, 37, 444116)
-        s = pickle.dumps(a)
-        b = pickle.loads(s)
-        self.assertEqual(b.year, 2003)
-        self.assertEqual(b.month, 2)
-        self.assertEqual(b.day, 7)
-
-    def test_pickling_subclass_datetime(self):
-        args = 6, 7, 23, 20, 59, 1, 64**2
-        orig = SubclassDatetime(*args)
-        for pickler, unpickler, proto in pickle_choices:
-            green = pickler.dumps(orig, proto)
-            derived = unpickler.loads(green)
-            self.assertEqual(orig, derived)
-
-    def test_more_compare(self):
-        # The test_compare() inherited from TestDate covers the error cases.
-        # We just want to test lexicographic ordering on the members datetime
-        # has that date lacks.
-        args = [2000, 11, 29, 20, 58, 16, 999998]
-        t1 = self.theclass(*args)
-        t2 = self.theclass(*args)
-        self.assertTrue(t1 == t2)
-        self.assertTrue(t1 <= t2)
-        self.assertTrue(t1 >= t2)
-        self.assertTrue(not t1 != t2)
-        self.assertTrue(not t1 < t2)
-        self.assertTrue(not t1 > t2)
-        self.assertEqual(cmp(t1, t2), 0)
-        self.assertEqual(cmp(t2, t1), 0)
-
-        for i in range(len(args)):
-            newargs = args[:]
-            newargs[i] = args[i] + 1
-            t2 = self.theclass(*newargs)   # this is larger than t1
-            self.assertTrue(t1 < t2)
-            self.assertTrue(t2 > t1)
-            self.assertTrue(t1 <= t2)
-            self.assertTrue(t2 >= t1)
-            self.assertTrue(t1 != t2)
-            self.assertTrue(t2 != t1)
-            self.assertTrue(not t1 == t2)
-            self.assertTrue(not t2 == t1)
-            self.assertTrue(not t1 > t2)
-            self.assertTrue(not t2 < t1)
-            self.assertTrue(not t1 >= t2)
-            self.assertTrue(not t2 <= t1)
-            self.assertEqual(cmp(t1, t2), -1)
-            self.assertEqual(cmp(t2, t1), 1)
-
-
-    # A helper for timestamp constructor tests.
-    def verify_field_equality(self, expected, got):
-        self.assertEqual(expected.tm_year, got.year)
-        self.assertEqual(expected.tm_mon, got.month)
-        self.assertEqual(expected.tm_mday, got.day)
-        self.assertEqual(expected.tm_hour, got.hour)
-        self.assertEqual(expected.tm_min, got.minute)
-        self.assertEqual(expected.tm_sec, got.second)
-
-    def test_fromtimestamp(self):
-        import time
-
-        ts = time.time()
-        expected = time.localtime(ts)
-        got = self.theclass.fromtimestamp(ts)
-        self.verify_field_equality(expected, got)
-
-    def test_utcfromtimestamp(self):
-        import time
-
-        ts = time.time()
-        expected = time.gmtime(ts)
-        got = self.theclass.utcfromtimestamp(ts)
-        self.verify_field_equality(expected, got)
-
-    def test_microsecond_rounding(self):
-        # Test whether fromtimestamp "rounds up" floats that are less
-        # than one microsecond smaller than an integer.
-        self.assertEqual(self.theclass.fromtimestamp(0.9999999),
-                         self.theclass.fromtimestamp(1))
-
-    def test_insane_fromtimestamp(self):
-        # It's possible that some platform maps time_t to double,
-        # and that this test will fail there.  This test should
-        # exempt such platforms (provided they return reasonable
-        # results!).
-        for insane in -1e200, 1e200:
-            self.assertRaises(ValueError, self.theclass.fromtimestamp,
-                              insane)
-
-    def test_insane_utcfromtimestamp(self):
-        # It's possible that some platform maps time_t to double,
-        # and that this test will fail there.  This test should
-        # exempt such platforms (provided they return reasonable
-        # results!).
-        for insane in -1e200, 1e200:
-            self.assertRaises(ValueError, self.theclass.utcfromtimestamp,
-                              insane)
-    @unittest.skipIf(sys.platform == "win32", "Windows doesn't accept negative timestamps")
-    def test_negative_float_fromtimestamp(self):
-        # The result is tz-dependent; at least test that this doesn't
-        # fail (like it did before bug 1646728 was fixed).
-        self.theclass.fromtimestamp(-1.05)
-
-    @unittest.skipIf(sys.platform == "win32", "Windows doesn't accept negative timestamps")
-    def test_negative_float_utcfromtimestamp(self):
-        d = self.theclass.utcfromtimestamp(-1.05)
-        self.assertEqual(d, self.theclass(1969, 12, 31, 23, 59, 58, 950000))
-
-    def test_utcnow(self):
-        import time
-
-        # Call it a success if utcnow() and utcfromtimestamp() are within
-        # a second of each other.
-        tolerance = timedelta(seconds=1)
-        for dummy in range(3):
-            from_now = self.theclass.utcnow()
-            from_timestamp = self.theclass.utcfromtimestamp(time.time())
-            if abs(from_timestamp - from_now) <= tolerance:
-                break
-            # Else try again a few times.
-        self.assertTrue(abs(from_timestamp - from_now) <= tolerance)
-
-    def test_strptime(self):
-        import _strptime
-
-        string = '2004-12-01 13:02:47.197'
-        format = '%Y-%m-%d %H:%M:%S.%f'
-        result, frac = _strptime._strptime(string, format)
-        expected = self.theclass(*(result[0:6]+(frac,)))
-        got = self.theclass.strptime(string, format)
-        self.assertEqual(expected, got)
-
-    def test_more_timetuple(self):
-        # This tests fields beyond those tested by the TestDate.test_timetuple.
-        t = self.theclass(2004, 12, 31, 6, 22, 33)
-        self.assertEqual(t.timetuple(), (2004, 12, 31, 6, 22, 33, 4, 366, -1))
-        self.assertEqual(t.timetuple(),
-                         (t.year, t.month, t.day,
-                          t.hour, t.minute, t.second,
-                          t.weekday(),
-                          t.toordinal() - date(t.year, 1, 1).toordinal() + 1,
-                          -1))
-        tt = t.timetuple()
-        self.assertEqual(tt.tm_year, t.year)
-        self.assertEqual(tt.tm_mon, t.month)
-        self.assertEqual(tt.tm_mday, t.day)
-        self.assertEqual(tt.tm_hour, t.hour)
-        self.assertEqual(tt.tm_min, t.minute)
-        self.assertEqual(tt.tm_sec, t.second)
-        self.assertEqual(tt.tm_wday, t.weekday())
-        self.assertEqual(tt.tm_yday, t.toordinal() -
-                                     date(t.year, 1, 1).toordinal() + 1)
-        self.assertEqual(tt.tm_isdst, -1)
-
-    def test_more_strftime(self):
-        # This tests fields beyond those tested by the TestDate.test_strftime.
-        t = self.theclass(2004, 12, 31, 6, 22, 33, 47)
-        self.assertEqual(t.strftime("%m %d %y %f %S %M %H %j"),
-                                    "12 31 04 000047 33 22 06 366")
-
-    def test_extract(self):
-        dt = self.theclass(2002, 3, 4, 18, 45, 3, 1234)
-        self.assertEqual(dt.date(), date(2002, 3, 4))
-        self.assertEqual(dt.time(), time(18, 45, 3, 1234))
-
-    def test_combine(self):
-        d = date(2002, 3, 4)
-        t = time(18, 45, 3, 1234)
-        expected = self.theclass(2002, 3, 4, 18, 45, 3, 1234)
-        combine = self.theclass.combine
-        dt = combine(d, t)
-        self.assertEqual(dt, expected)
-
-        dt = combine(time=t, date=d)
-        self.assertEqual(dt, expected)
-
-        self.assertEqual(d, dt.date())
-        self.assertEqual(t, dt.time())
-        self.assertEqual(dt, combine(dt.date(), dt.time()))
-
-        self.assertRaises(TypeError, combine) # need an arg
-        self.assertRaises(TypeError, combine, d) # need two args
-        self.assertRaises(TypeError, combine, t, d) # args reversed
-        self.assertRaises(TypeError, combine, d, t, 1) # too many args
-        self.assertRaises(TypeError, combine, "date", "time") # wrong types
-
-    def test_replace(self):
-        cls = self.theclass
-        args = [1, 2, 3, 4, 5, 6, 7]
-        base = cls(*args)
-        self.assertEqual(base, base.replace())
-
-        i = 0
-        for name, newval in (("year", 2),
-                             ("month", 3),
-                             ("day", 4),
-                             ("hour", 5),
-                             ("minute", 6),
-                             ("second", 7),
-                             ("microsecond", 8)):
-            newargs = args[:]
-            newargs[i] = newval
-            expected = cls(*newargs)
-            got = base.replace(**{name: newval})
-            self.assertEqual(expected, got)
-            i += 1
-
-        # Out of bounds.
-        base = cls(2000, 2, 29)
-        self.assertRaises(ValueError, base.replace, year=2001)
-
-    def test_astimezone(self):
-        # Pretty boring!  The TZ test is more interesting here.  astimezone()
-        # simply can't be applied to a naive object.
-        dt = self.theclass.now()
-        f = FixedOffset(44, "")
-        self.assertRaises(TypeError, dt.astimezone) # not enough args
-        self.assertRaises(TypeError, dt.astimezone, f, f) # too many args
-        self.assertRaises(TypeError, dt.astimezone, dt) # arg wrong type
-        self.assertRaises(ValueError, dt.astimezone, f) # naive
-        self.assertRaises(ValueError, dt.astimezone, tz=f)  # naive
-
-        class Bogus(tzinfo):
-            def utcoffset(self, dt): return None
-            def dst(self, dt): return timedelta(0)
-        bog = Bogus()
-        self.assertRaises(ValueError, dt.astimezone, bog)   # naive
-
-        class AlsoBogus(tzinfo):
-            def utcoffset(self, dt): return timedelta(0)
-            def dst(self, dt): return None
-        alsobog = AlsoBogus()
-        self.assertRaises(ValueError, dt.astimezone, alsobog) # also naive
-
-    def test_subclass_datetime(self):
-
-        class C(self.theclass):
-            theAnswer = 42
-
-            def __new__(cls, *args, **kws):
-                temp = kws.copy()
-                extra = temp.pop('extra')
-                result = self.theclass.__new__(cls, *args, **temp)
-                result.extra = extra
-                return result
-
-            def newmeth(self, start):
-                return start + self.year + self.month + self.second
-
-        args = 2003, 4, 14, 12, 13, 41
-
-        dt1 = self.theclass(*args)
-        dt2 = C(*args, **{'extra': 7})
-
-        self.assertEqual(dt2.__class__, C)
-        self.assertEqual(dt2.theAnswer, 42)
-        self.assertEqual(dt2.extra, 7)
-        self.assertEqual(dt1.toordinal(), dt2.toordinal())
-        self.assertEqual(dt2.newmeth(-7), dt1.year + dt1.month +
-                                          dt1.second - 7)
-
-class SubclassTime(time):
-    sub_var = 1
-
-class TestTime(HarmlessMixedComparison, unittest.TestCase):
-
-    theclass = time
-
-    def test_basic_attributes(self):
-        t = self.theclass(12, 0)
-        self.assertEqual(t.hour, 12)
-        self.assertEqual(t.minute, 0)
-        self.assertEqual(t.second, 0)
-        self.assertEqual(t.microsecond, 0)
-
-    def test_basic_attributes_nonzero(self):
-        # Make sure all attributes are non-zero so bugs in
-        # bit-shifting access show up.
-        t = self.theclass(12, 59, 59, 8000)
-        self.assertEqual(t.hour, 12)
-        self.assertEqual(t.minute, 59)
-        self.assertEqual(t.second, 59)
-        self.assertEqual(t.microsecond, 8000)
-
-    def test_roundtrip(self):
-        t = self.theclass(1, 2, 3, 4)
-
-        # Verify t -> string -> time identity.
-        s = repr(t)
-        self.assertTrue(s.startswith('datetime.'))
-        s = s[9:]
-        t2 = eval(s)
-        self.assertEqual(t, t2)
-
-        # Verify identity via reconstructing from pieces.
-        t2 = self.theclass(t.hour, t.minute, t.second,
-                           t.microsecond)
-        self.assertEqual(t, t2)
-
-    def test_comparing(self):
-        args = [1, 2, 3, 4]
-        t1 = self.theclass(*args)
-        t2 = self.theclass(*args)
-        self.assertTrue(t1 == t2)
-        self.assertTrue(t1 <= t2)
-        self.assertTrue(t1 >= t2)
-        self.assertTrue(not t1 != t2)
-        self.assertTrue(not t1 < t2)
-        self.assertTrue(not t1 > t2)
-        self.assertEqual(cmp(t1, t2), 0)
-        self.assertEqual(cmp(t2, t1), 0)
-
-        for i in range(len(args)):
-            newargs = args[:]
-            newargs[i] = args[i] + 1
-            t2 = self.theclass(*newargs)   # this is larger than t1
-            self.assertTrue(t1 < t2)
-            self.assertTrue(t2 > t1)
-            self.assertTrue(t1 <= t2)
-            self.assertTrue(t2 >= t1)
-            self.assertTrue(t1 != t2)
-            self.assertTrue(t2 != t1)
-            self.assertTrue(not t1 == t2)
-            self.assertTrue(not t2 == t1)
-            self.assertTrue(not t1 > t2)
-            self.assertTrue(not t2 < t1)
-            self.assertTrue(not t1 >= t2)
-            self.assertTrue(not t2 <= t1)
-            self.assertEqual(cmp(t1, t2), -1)
-            self.assertEqual(cmp(t2, t1), 1)
-
-        for badarg in OTHERSTUFF:
-            self.assertEqual(t1 == badarg, False)
-            self.assertEqual(t1 != badarg, True)
-            self.assertEqual(badarg == t1, False)
-            self.assertEqual(badarg != t1, True)
-
-            self.assertRaises(TypeError, lambda: t1 <= badarg)
-            self.assertRaises(TypeError, lambda: t1 < badarg)
-            self.assertRaises(TypeError, lambda: t1 > badarg)
-            self.assertRaises(TypeError, lambda: t1 >= badarg)
-            self.assertRaises(TypeError, lambda: badarg <= t1)
-            self.assertRaises(TypeError, lambda: badarg < t1)
-            self.assertRaises(TypeError, lambda: badarg > t1)
-            self.assertRaises(TypeError, lambda: badarg >= t1)
-
-    def test_bad_constructor_arguments(self):
-        # bad hours
-        self.theclass(0, 0)    # no exception
-        self.theclass(23, 0)   # no exception
-        self.assertRaises(ValueError, self.theclass, -1, 0)
-        self.assertRaises(ValueError, self.theclass, 24, 0)
-        # bad minutes
-        self.theclass(23, 0)    # no exception
-        self.theclass(23, 59)   # no exception
-        self.assertRaises(ValueError, self.theclass, 23, -1)
-        self.assertRaises(ValueError, self.theclass, 23, 60)
-        # bad seconds
-        self.theclass(23, 59, 0)    # no exception
-        self.theclass(23, 59, 59)   # no exception
-        self.assertRaises(ValueError, self.theclass, 23, 59, -1)
-        self.assertRaises(ValueError, self.theclass, 23, 59, 60)
-        # bad microseconds
-        self.theclass(23, 59, 59, 0)        # no exception
-        self.theclass(23, 59, 59, 999999)   # no exception
-        self.assertRaises(ValueError, self.theclass, 23, 59, 59, -1)
-        self.assertRaises(ValueError, self.theclass, 23, 59, 59, 1000000)
-
-    def test_hash_equality(self):
-        d = self.theclass(23, 30, 17)
-        e = self.theclass(23, 30, 17)
-        self.assertEqual(d, e)
-        self.assertEqual(hash(d), hash(e))
-
-        dic = {d: 1}
-        dic[e] = 2
-        self.assertEqual(len(dic), 1)
-        self.assertEqual(dic[d], 2)
-        self.assertEqual(dic[e], 2)
-
-        d = self.theclass(0,  5, 17)
-        e = self.theclass(0,  5, 17)
-        self.assertEqual(d, e)
-        self.assertEqual(hash(d), hash(e))
-
-        dic = {d: 1}
-        dic[e] = 2
-        self.assertEqual(len(dic), 1)
-        self.assertEqual(dic[d], 2)
-        self.assertEqual(dic[e], 2)
-
-    def test_isoformat(self):
-        t = self.theclass(4, 5, 1, 123)
-        self.assertEqual(t.isoformat(), "04:05:01.000123")
-        self.assertEqual(t.isoformat(), str(t))
-
-        t = self.theclass()
-        self.assertEqual(t.isoformat(), "00:00:00")
-        self.assertEqual(t.isoformat(), str(t))
-
-        t = self.theclass(microsecond=1)
-        self.assertEqual(t.isoformat(), "00:00:00.000001")
-        self.assertEqual(t.isoformat(), str(t))
-
-        t = self.theclass(microsecond=10)
-        self.assertEqual(t.isoformat(), "00:00:00.000010")
-        self.assertEqual(t.isoformat(), str(t))
-
-        t = self.theclass(microsecond=100)
-        self.assertEqual(t.isoformat(), "00:00:00.000100")
-        self.assertEqual(t.isoformat(), str(t))
-
-        t = self.theclass(microsecond=1000)
-        self.assertEqual(t.isoformat(), "00:00:00.001000")
-        self.assertEqual(t.isoformat(), str(t))
-
-        t = self.theclass(microsecond=10000)
-        self.assertEqual(t.isoformat(), "00:00:00.010000")
-        self.assertEqual(t.isoformat(), str(t))
-
-        t = self.theclass(microsecond=100000)
-        self.assertEqual(t.isoformat(), "00:00:00.100000")
-        self.assertEqual(t.isoformat(), str(t))
-
-    def test_1653736(self):
-        # verify it doesn't accept extra keyword arguments
-        t = self.theclass(second=1)
-        self.assertRaises(TypeError, t.isoformat, foo=3)
-
-    def test_strftime(self):
-        t = self.theclass(1, 2, 3, 4)
-        self.assertEqual(t.strftime('%H %M %S %f'), "01 02 03 000004")
-        # A naive object replaces %z and %Z with empty strings.
-        self.assertEqual(t.strftime("'%z' '%Z'"), "'' ''")
-
-    def test_format(self):
-        t = self.theclass(1, 2, 3, 4)
-        self.assertEqual(t.__format__(''), str(t))
-
-        # check that a derived class's __str__() gets called
-        class A(self.theclass):
-            def __str__(self):
-                return 'A'
-        a = A(1, 2, 3, 4)
-        self.assertEqual(a.__format__(''), 'A')
-
-        # check that a derived class's strftime gets called
-        class B(self.theclass):
-            def strftime(self, format_spec):
-                return 'B'
-        b = B(1, 2, 3, 4)
-        self.assertEqual(b.__format__(''), str(t))
-
-        for fmt in ['%H %M %S',
-                    ]:
-            self.assertEqual(t.__format__(fmt), t.strftime(fmt))
-            self.assertEqual(a.__format__(fmt), t.strftime(fmt))
-            self.assertEqual(b.__format__(fmt), 'B')
-
-    def test_str(self):
-        self.assertEqual(str(self.theclass(1, 2, 3, 4)), "01:02:03.000004")
-        self.assertEqual(str(self.theclass(10, 2, 3, 4000)), "10:02:03.004000")
-        self.assertEqual(str(self.theclass(0, 2, 3, 400000)), "00:02:03.400000")
-        self.assertEqual(str(self.theclass(12, 2, 3, 0)), "12:02:03")
-        self.assertEqual(str(self.theclass(23, 15, 0, 0)), "23:15:00")
-
-    def test_repr(self):
-        name = 'datetime.' + self.theclass.__name__
-        self.assertEqual(repr(self.theclass(1, 2, 3, 4)),
-                         "%s(1, 2, 3, 4)" % name)
-        self.assertEqual(repr(self.theclass(10, 2, 3, 4000)),
-                         "%s(10, 2, 3, 4000)" % name)
-        self.assertEqual(repr(self.theclass(0, 2, 3, 400000)),
-                         "%s(0, 2, 3, 400000)" % name)
-        self.assertEqual(repr(self.theclass(12, 2, 3, 0)),
-                         "%s(12, 2, 3)" % name)
-        self.assertEqual(repr(self.theclass(23, 15, 0, 0)),
-                         "%s(23, 15)" % name)
-
-    def test_resolution_info(self):
-        self.assertIsInstance(self.theclass.min, self.theclass)
-        self.assertIsInstance(self.theclass.max, self.theclass)
-        self.assertIsInstance(self.theclass.resolution, timedelta)
-        self.assertTrue(self.theclass.max > self.theclass.min)
-
-    def test_pickling(self):
-        args = 20, 59, 16, 64**2
-        orig = self.theclass(*args)
-        for pickler, unpickler, proto in pickle_choices:
-            green = pickler.dumps(orig, proto)
-            derived = unpickler.loads(green)
-            self.assertEqual(orig, derived)
-
-    def test_pickling_subclass_time(self):
-        args = 20, 59, 16, 64**2
-        orig = SubclassTime(*args)
-        for pickler, unpickler, proto in pickle_choices:
-            green = pickler.dumps(orig, proto)
-            derived = unpickler.loads(green)
-            self.assertEqual(orig, derived)
-
-    def test_bool(self):
-        cls = self.theclass
-        self.assertTrue(cls(1))
-        self.assertTrue(cls(0, 1))
-        self.assertTrue(cls(0, 0, 1))
-        self.assertTrue(cls(0, 0, 0, 1))
-        self.assertTrue(not cls(0))
-        self.assertTrue(not cls())
-
-    def test_replace(self):
-        cls = self.theclass
-        args = [1, 2, 3, 4]
-        base = cls(*args)
-        self.assertEqual(base, base.replace())
-
-        i = 0
-        for name, newval in (("hour", 5),
-                             ("minute", 6),
-                             ("second", 7),
-                             ("microsecond", 8)):
-            newargs = args[:]
-            newargs[i] = newval
-            expected = cls(*newargs)
-            got = base.replace(**{name: newval})
-            self.assertEqual(expected, got)
-            i += 1
-
-        # Out of bounds.
-        base = cls(1)
-        self.assertRaises(ValueError, base.replace, hour=24)
-        self.assertRaises(ValueError, base.replace, minute=-1)
-        self.assertRaises(ValueError, base.replace, second=100)
-        self.assertRaises(ValueError, base.replace, microsecond=1000000)
-
-    def test_subclass_time(self):
-
-        class C(self.theclass):
-            theAnswer = 42
-
-            def __new__(cls, *args, **kws):
-                temp = kws.copy()
-                extra = temp.pop('extra')
-                result = self.theclass.__new__(cls, *args, **temp)
-                result.extra = extra
-                return result
-
-            def newmeth(self, start):
-                return start + self.hour + self.second
-
-        args = 4, 5, 6
-
-        dt1 = self.theclass(*args)
-        dt2 = C(*args, **{'extra': 7})
-
-        self.assertEqual(dt2.__class__, C)
-        self.assertEqual(dt2.theAnswer, 42)
-        self.assertEqual(dt2.extra, 7)
-        self.assertEqual(dt1.isoformat(), dt2.isoformat())
-        self.assertEqual(dt2.newmeth(-7), dt1.hour + dt1.second - 7)
-
-    def test_backdoor_resistance(self):
-        # see TestDate.test_backdoor_resistance().
-        base = '2:59.0'
-        for hour_byte in ' ', '9', chr(24), '\xff':
-            self.assertRaises(TypeError, self.theclass,
-                                         hour_byte + base[1:])
-
-# A mixin for classes with a tzinfo= argument.  Subclasses must define
-# theclass as a class atribute, and theclass(1, 1, 1, tzinfo=whatever)
-# must be legit (which is true for time and datetime).
-class TZInfoBase:
-
-    def test_argument_passing(self):
-        cls = self.theclass
-        # A datetime passes itself on, a time passes None.
-        class introspective(tzinfo):
-            def tzname(self, dt):    return dt and "real" or "none"
-            def utcoffset(self, dt):
-                return timedelta(minutes = dt and 42 or -42)
-            dst = utcoffset
-
-        obj = cls(1, 2, 3, tzinfo=introspective())
-
-        expected = cls is time and "none" or "real"
-        self.assertEqual(obj.tzname(), expected)
-
-        expected = timedelta(minutes=(cls is time and -42 or 42))
-        self.assertEqual(obj.utcoffset(), expected)
-        self.assertEqual(obj.dst(), expected)
-
-    def test_bad_tzinfo_classes(self):
-        cls = self.theclass
-        self.assertRaises(TypeError, cls, 1, 1, 1, tzinfo=12)
-
-        class NiceTry(object):
-            def __init__(self): pass
-            def utcoffset(self, dt): pass
-        self.assertRaises(TypeError, cls, 1, 1, 1, tzinfo=NiceTry)
-
-        class BetterTry(tzinfo):
-            def __init__(self): pass
-            def utcoffset(self, dt): pass
-        b = BetterTry()
-        t = cls(1, 1, 1, tzinfo=b)
-        self.assertTrue(t.tzinfo is b)
-
-    def test_utc_offset_out_of_bounds(self):
-        class Edgy(tzinfo):
-            def __init__(self, offset):
-                self.offset = timedelta(minutes=offset)
-            def utcoffset(self, dt):
-                return self.offset
-
-        cls = self.theclass
-        for offset, legit in ((-1440, False),
-                              (-1439, True),
-                              (1439, True),
-                              (1440, False)):
-            if cls is time:
-                t = cls(1, 2, 3, tzinfo=Edgy(offset))
-            elif cls is datetime:
-                t = cls(6, 6, 6, 1, 2, 3, tzinfo=Edgy(offset))
-            else:
-                assert 0, "impossible"
-            if legit:
-                aofs = abs(offset)
-                h, m = divmod(aofs, 60)
-                tag = "%c%02d:%02d" % (offset < 0 and '-' or '+', h, m)
-                if isinstance(t, datetime):
-                    t = t.timetz()
-                self.assertEqual(str(t), "01:02:03" + tag)
-            else:
-                self.assertRaises(ValueError, str, t)
-
-    def test_tzinfo_classes(self):
-        cls = self.theclass
-        class C1(tzinfo):
-            def utcoffset(self, dt): return None
-            def dst(self, dt): return None
-            def tzname(self, dt): return None
-        for t in (cls(1, 1, 1),
-                  cls(1, 1, 1, tzinfo=None),
-                  cls(1, 1, 1, tzinfo=C1())):
-            self.assertTrue(t.utcoffset() is None)
-            self.assertTrue(t.dst() is None)
-            self.assertTrue(t.tzname() is None)
-
-        class C3(tzinfo):
-            def utcoffset(self, dt): return timedelta(minutes=-1439)
-            def dst(self, dt): return timedelta(minutes=1439)
-            def tzname(self, dt): return "aname"
-        t = cls(1, 1, 1, tzinfo=C3())
-        self.assertEqual(t.utcoffset(), timedelta(minutes=-1439))
-        self.assertEqual(t.dst(), timedelta(minutes=1439))
-        self.assertEqual(t.tzname(), "aname")
-
-        # Wrong types.
-        class C4(tzinfo):
-            def utcoffset(self, dt): return "aname"
-            def dst(self, dt): return 7
-            def tzname(self, dt): return 0
-        t = cls(1, 1, 1, tzinfo=C4())
-        self.assertRaises(TypeError, t.utcoffset)
-        self.assertRaises(TypeError, t.dst)
-        self.assertRaises(TypeError, t.tzname)
-
-        # Offset out of range.
-        class C6(tzinfo):
-            def utcoffset(self, dt): return timedelta(hours=-24)
-            def dst(self, dt): return timedelta(hours=24)
-        t = cls(1, 1, 1, tzinfo=C6())
-        self.assertRaises(ValueError, t.utcoffset)
-        self.assertRaises(ValueError, t.dst)
-
-        # Not a whole number of minutes.
-        class C7(tzinfo):
-            def utcoffset(self, dt): return timedelta(seconds=61)
-            def dst(self, dt): return timedelta(microseconds=-81)
-        t = cls(1, 1, 1, tzinfo=C7())
-        self.assertRaises(ValueError, t.utcoffset)
-        self.assertRaises(ValueError, t.dst)
-
-    def test_aware_compare(self):
-        cls = self.theclass
-
-        # Ensure that utcoffset() gets ignored if the comparands have
-        # the same tzinfo member.
-        class OperandDependentOffset(tzinfo):
-            def utcoffset(self, t):
-                if t.minute < 10:
-                    # d0 and d1 equal after adjustment
-                    return timedelta(minutes=t.minute)
-                else:
-                    # d2 off in the weeds
-                    return timedelta(minutes=59)
-
-        base = cls(8, 9, 10, tzinfo=OperandDependentOffset())
-        d0 = base.replace(minute=3)
-        d1 = base.replace(minute=9)
-        d2 = base.replace(minute=11)
-        for x in d0, d1, d2:
-            for y in d0, d1, d2:
-                got = cmp(x, y)
-                expected = cmp(x.minute, y.minute)
-                self.assertEqual(got, expected)
-
-        # However, if they're different members, uctoffset is not ignored.
-        # Note that a time can't actually have an operand-depedent offset,
-        # though (and time.utcoffset() passes None to tzinfo.utcoffset()),
-        # so skip this test for time.
-        if cls is not time:
-            d0 = base.replace(minute=3, tzinfo=OperandDependentOffset())
-            d1 = base.replace(minute=9, tzinfo=OperandDependentOffset())
-            d2 = base.replace(minute=11, tzinfo=OperandDependentOffset())
-            for x in d0, d1, d2:
-                for y in d0, d1, d2:
-                    got = cmp(x, y)
-                    if (x is d0 or x is d1) and (y is d0 or y is d1):
-                        expected = 0
-                    elif x is y is d2:
-                        expected = 0
-                    elif x is d2:
-                        expected = -1
-                    else:
-                        assert y is d2
-                        expected = 1
-                    self.assertEqual(got, expected)
-
-
-# Testing time objects with a non-None tzinfo.
-class TestTimeTZ(TestTime, TZInfoBase, unittest.TestCase):
-    theclass = time
-
-    def test_empty(self):
-        t = self.theclass()
-        self.assertEqual(t.hour, 0)
-        self.assertEqual(t.minute, 0)
-        self.assertEqual(t.second, 0)
-        self.assertEqual(t.microsecond, 0)
-        self.assertTrue(t.tzinfo is None)
-
-    def test_zones(self):
-        est = FixedOffset(-300, "EST", 1)
-        utc = FixedOffset(0, "UTC", -2)
-        met = FixedOffset(60, "MET", 3)
-        t1 = time( 7, 47, tzinfo=est)
-        t2 = time(12, 47, tzinfo=utc)
-        t3 = time(13, 47, tzinfo=met)
-        t4 = time(microsecond=40)
-        t5 = time(microsecond=40, tzinfo=utc)
-
-        self.assertEqual(t1.tzinfo, est)
-        self.assertEqual(t2.tzinfo, utc)
-        self.assertEqual(t3.tzinfo, met)
-        self.assertTrue(t4.tzinfo is None)
-        self.assertEqual(t5.tzinfo, utc)
-
-        self.assertEqual(t1.utcoffset(), timedelta(minutes=-300))
-        self.assertEqual(t2.utcoffset(), timedelta(minutes=0))
-        self.assertEqual(t3.utcoffset(), timedelta(minutes=60))
-        self.assertTrue(t4.utcoffset() is None)
-        self.assertRaises(TypeError, t1.utcoffset, "no args")
-
-        self.assertEqual(t1.tzname(), "EST")
-        self.assertEqual(t2.tzname(), "UTC")
-        self.assertEqual(t3.tzname(), "MET")
-        self.assertTrue(t4.tzname() is None)
-        self.assertRaises(TypeError, t1.tzname, "no args")
-
-        self.assertEqual(t1.dst(), timedelta(minutes=1))
-        self.assertEqual(t2.dst(), timedelta(minutes=-2))
-        self.assertEqual(t3.dst(), timedelta(minutes=3))
-        self.assertTrue(t4.dst() is None)
-        self.assertRaises(TypeError, t1.dst, "no args")
-
-        self.assertEqual(hash(t1), hash(t2))
-        self.assertEqual(hash(t1), hash(t3))
-        self.assertEqual(hash(t2), hash(t3))
-
-        self.assertEqual(t1, t2)
-        self.assertEqual(t1, t3)
-        self.assertEqual(t2, t3)
-        self.assertRaises(TypeError, lambda: t4 == t5) # mixed tz-aware & naive
-        self.assertRaises(TypeError, lambda: t4 < t5) # mixed tz-aware & naive
-        self.assertRaises(TypeError, lambda: t5 < t4) # mixed tz-aware & naive
-
-        self.assertEqual(str(t1), "07:47:00-05:00")
-        self.assertEqual(str(t2), "12:47:00+00:00")
-        self.assertEqual(str(t3), "13:47:00+01:00")
-        self.assertEqual(str(t4), "00:00:00.000040")
-        self.assertEqual(str(t5), "00:00:00.000040+00:00")
-
-        self.assertEqual(t1.isoformat(), "07:47:00-05:00")
-        self.assertEqual(t2.isoformat(), "12:47:00+00:00")
-        self.assertEqual(t3.isoformat(), "13:47:00+01:00")
-        self.assertEqual(t4.isoformat(), "00:00:00.000040")
-        self.assertEqual(t5.isoformat(), "00:00:00.000040+00:00")
-
-        d = 'datetime.time'
-        self.assertEqual(repr(t1), d + "(7, 47, tzinfo=est)")
-        self.assertEqual(repr(t2), d + "(12, 47, tzinfo=utc)")
-        self.assertEqual(repr(t3), d + "(13, 47, tzinfo=met)")
-        self.assertEqual(repr(t4), d + "(0, 0, 0, 40)")
-        self.assertEqual(repr(t5), d + "(0, 0, 0, 40, tzinfo=utc)")
-
-        self.assertEqual(t1.strftime("%H:%M:%S %%Z=%Z %%z=%z"),
-                                     "07:47:00 %Z=EST %z=-0500")
-        self.assertEqual(t2.strftime("%H:%M:%S %Z %z"), "12:47:00 UTC +0000")
-        self.assertEqual(t3.strftime("%H:%M:%S %Z %z"), "13:47:00 MET +0100")
-
-        yuck = FixedOffset(-1439, "%z %Z %%z%%Z")
-        t1 = time(23, 59, tzinfo=yuck)
-        self.assertEqual(t1.strftime("%H:%M %%Z='%Z' %%z='%z'"),
-                                     "23:59 %Z='%z %Z %%z%%Z' %z='-2359'")
-
-        # Check that an invalid tzname result raises an exception.
-        class Badtzname(tzinfo):
-            def tzname(self, dt): return 42
-        t = time(2, 3, 4, tzinfo=Badtzname())
-        self.assertEqual(t.strftime("%H:%M:%S"), "02:03:04")
-        self.assertRaises(TypeError, t.strftime, "%Z")
-
-    def test_hash_edge_cases(self):
-        # Offsets that overflow a basic time.
-        t1 = self.theclass(0, 1, 2, 3, tzinfo=FixedOffset(1439, ""))
-        t2 = self.theclass(0, 0, 2, 3, tzinfo=FixedOffset(1438, ""))
-        self.assertEqual(hash(t1), hash(t2))
-
-        t1 = self.theclass(23, 58, 6, 100, tzinfo=FixedOffset(-1000, ""))
-        t2 = self.theclass(23, 48, 6, 100, tzinfo=FixedOffset(-1010, ""))
-        self.assertEqual(hash(t1), hash(t2))
-
-    def test_pickling(self):
-        # Try one without a tzinfo.
-        args = 20, 59, 16, 64**2
-        orig = self.theclass(*args)
-        for pickler, unpickler, proto in pickle_choices:
-            green = pickler.dumps(orig, proto)
-            derived = unpickler.loads(green)
-            self.assertEqual(orig, derived)
-
-        # Try one with a tzinfo.
-        tinfo = PicklableFixedOffset(-300, 'cookie')
-        orig = self.theclass(5, 6, 7, tzinfo=tinfo)
-        for pickler, unpickler, proto in pickle_choices:
-            green = pickler.dumps(orig, proto)
-            derived = unpickler.loads(green)
-            self.assertEqual(orig, derived)
-            self.assertIsInstance(derived.tzinfo, PicklableFixedOffset)
-            self.assertEqual(derived.utcoffset(), timedelta(minutes=-300))
-            self.assertEqual(derived.tzname(), 'cookie')
-
-    def test_more_bool(self):
-        # Test cases with non-None tzinfo.
-        cls = self.theclass
-
-        t = cls(0, tzinfo=FixedOffset(-300, ""))
-        self.assertTrue(t)
-
-        t = cls(5, tzinfo=FixedOffset(-300, ""))
-        self.assertTrue(t)
-
-        t = cls(5, tzinfo=FixedOffset(300, ""))
-        self.assertTrue(not t)
-
-        t = cls(23, 59, tzinfo=FixedOffset(23*60 + 59, ""))
-        self.assertTrue(not t)
-
-        # Mostly ensuring this doesn't overflow internally.
-        t = cls(0, tzinfo=FixedOffset(23*60 + 59, ""))
-        self.assertTrue(t)
-
-        # But this should yield a value error -- the utcoffset is bogus.
-        t = cls(0, tzinfo=FixedOffset(24*60, ""))
-        self.assertRaises(ValueError, lambda: bool(t))
-
-        # Likewise.
-        t = cls(0, tzinfo=FixedOffset(-24*60, ""))
-        self.assertRaises(ValueError, lambda: bool(t))
-
-    def test_replace(self):
-        cls = self.theclass
-        z100 = FixedOffset(100, "+100")
-        zm200 = FixedOffset(timedelta(minutes=-200), "-200")
-        args = [1, 2, 3, 4, z100]
-        base = cls(*args)
-        self.assertEqual(base, base.replace())
-
-        i = 0
-        for name, newval in (("hour", 5),
-                             ("minute", 6),
-                             ("second", 7),
-                             ("microsecond", 8),
-                             ("tzinfo", zm200)):
-            newargs = args[:]
-            newargs[i] = newval
-            expected = cls(*newargs)
-            got = base.replace(**{name: newval})
-            self.assertEqual(expected, got)
-            i += 1
-
-        # Ensure we can get rid of a tzinfo.
-        self.assertEqual(base.tzname(), "+100")
-        base2 = base.replace(tzinfo=None)
-        self.assertTrue(base2.tzinfo is None)
-        self.assertTrue(base2.tzname() is None)
-
-        # Ensure we can add one.
-        base3 = base2.replace(tzinfo=z100)
-        self.assertEqual(base, base3)
-        self.assertTrue(base.tzinfo is base3.tzinfo)
-
-        # Out of bounds.
-        base = cls(1)
-        self.assertRaises(ValueError, base.replace, hour=24)
-        self.assertRaises(ValueError, base.replace, minute=-1)
-        self.assertRaises(ValueError, base.replace, second=100)
-        self.assertRaises(ValueError, base.replace, microsecond=1000000)
-
-    def test_mixed_compare(self):
-        t1 = time(1, 2, 3)
-        t2 = time(1, 2, 3)
-        self.assertEqual(t1, t2)
-        t2 = t2.replace(tzinfo=None)
-        self.assertEqual(t1, t2)
-        t2 = t2.replace(tzinfo=FixedOffset(None, ""))
-        self.assertEqual(t1, t2)
-        t2 = t2.replace(tzinfo=FixedOffset(0, ""))
-        self.assertRaises(TypeError, lambda: t1 == t2)
-
-        # In time w/ identical tzinfo objects, utcoffset is ignored.
-        class Varies(tzinfo):
-            def __init__(self):
-                self.offset = timedelta(minutes=22)
-            def utcoffset(self, t):
-                self.offset += timedelta(minutes=1)
-                return self.offset
-
-        v = Varies()
-        t1 = t2.replace(tzinfo=v)
-        t2 = t2.replace(tzinfo=v)
-        self.assertEqual(t1.utcoffset(), timedelta(minutes=23))
-        self.assertEqual(t2.utcoffset(), timedelta(minutes=24))
-        self.assertEqual(t1, t2)
-
-        # But if they're not identical, it isn't ignored.
-        t2 = t2.replace(tzinfo=Varies())
-        self.assertTrue(t1 < t2)  # t1's offset counter still going up
-
-    def test_subclass_timetz(self):
-
-        class C(self.theclass):
-            theAnswer = 42
-
-            def __new__(cls, *args, **kws):
-                temp = kws.copy()
-                extra = temp.pop('extra')
-                result = self.theclass.__new__(cls, *args, **temp)
-                result.extra = extra
-                return result
-
-            def newmeth(self, start):
-                return start + self.hour + self.second
-
-        args = 4, 5, 6, 500, FixedOffset(-300, "EST", 1)
-
-        dt1 = self.theclass(*args)
-        dt2 = C(*args, **{'extra': 7})
-
-        self.assertEqual(dt2.__class__, C)
-        self.assertEqual(dt2.theAnswer, 42)
-        self.assertEqual(dt2.extra, 7)
-        self.assertEqual(dt1.utcoffset(), dt2.utcoffset())
-        self.assertEqual(dt2.newmeth(-7), dt1.hour + dt1.second - 7)
-
-
-# Testing datetime objects with a non-None tzinfo.
-
-class TestDateTimeTZ(TestDateTime, TZInfoBase, unittest.TestCase):
-    theclass = datetime
-
-    def test_trivial(self):
-        dt = self.theclass(1, 2, 3, 4, 5, 6, 7)
-        self.assertEqual(dt.year, 1)
-        self.assertEqual(dt.month, 2)
-        self.assertEqual(dt.day, 3)
-        self.assertEqual(dt.hour, 4)
-        self.assertEqual(dt.minute, 5)
-        self.assertEqual(dt.second, 6)
-        self.assertEqual(dt.microsecond, 7)
-        self.assertEqual(dt.tzinfo, None)
-
-    def test_even_more_compare(self):
-        # The test_compare() and test_more_compare() inherited from TestDate
-        # and TestDateTime covered non-tzinfo cases.
-
-        # Smallest possible after UTC adjustment.
-        t1 = self.theclass(1, 1, 1, tzinfo=FixedOffset(1439, ""))
-        # Largest possible after UTC adjustment.
-        t2 = self.theclass(MAXYEAR, 12, 31, 23, 59, 59, 999999,
-                           tzinfo=FixedOffset(-1439, ""))
-
-        # Make sure those compare correctly, and w/o overflow.
-        self.assertTrue(t1 < t2)
-        self.assertTrue(t1 != t2)
-        self.assertTrue(t2 > t1)
-
-        self.assertTrue(t1 == t1)
-        self.assertTrue(t2 == t2)
-
-        # Equal afer adjustment.
-        t1 = self.theclass(1, 12, 31, 23, 59, tzinfo=FixedOffset(1, ""))
-        t2 = self.theclass(2, 1, 1, 3, 13, tzinfo=FixedOffset(3*60+13+2, ""))
-        self.assertEqual(t1, t2)
-
-        # Change t1 not to subtract a minute, and t1 should be larger.
-        t1 = self.theclass(1, 12, 31, 23, 59, tzinfo=FixedOffset(0, ""))
-        self.assertTrue(t1 > t2)
-
-        # Change t1 to subtract 2 minutes, and t1 should be smaller.
-        t1 = self.theclass(1, 12, 31, 23, 59, tzinfo=FixedOffset(2, ""))
-        self.assertTrue(t1 < t2)
-
-        # Back to the original t1, but make seconds resolve it.
-        t1 = self.theclass(1, 12, 31, 23, 59, tzinfo=FixedOffset(1, ""),
-                           second=1)
-        self.assertTrue(t1 > t2)
-
-        # Likewise, but make microseconds resolve it.
-        t1 = self.theclass(1, 12, 31, 23, 59, tzinfo=FixedOffset(1, ""),
-                           microsecond=1)
-        self.assertTrue(t1 > t2)
-
-        # Make t2 naive and it should fail.
-        t2 = self.theclass.min
-        self.assertRaises(TypeError, lambda: t1 == t2)
-        self.assertEqual(t2, t2)
-
-        # It's also naive if it has tzinfo but tzinfo.utcoffset() is None.
-        class Naive(tzinfo):
-            def utcoffset(self, dt): return None
-        t2 = self.theclass(5, 6, 7, tzinfo=Naive())
-        self.assertRaises(TypeError, lambda: t1 == t2)
-        self.assertEqual(t2, t2)
-
-        # OTOH, it's OK to compare two of these mixing the two ways of being
-        # naive.
-        t1 = self.theclass(5, 6, 7)
-        self.assertEqual(t1, t2)
-
-        # Try a bogus uctoffset.
-        class Bogus(tzinfo):
-            def utcoffset(self, dt):
-                return timedelta(minutes=1440) # out of bounds
-        t1 = self.theclass(2, 2, 2, tzinfo=Bogus())
-        t2 = self.theclass(2, 2, 2, tzinfo=FixedOffset(0, ""))
-        self.assertRaises(ValueError, lambda: t1 == t2)
-
-    def test_pickling(self):
-        # Try one without a tzinfo.
-        args = 6, 7, 23, 20, 59, 1, 64**2
-        orig = self.theclass(*args)
-        for pickler, unpickler, proto in pickle_choices:
-            green = pickler.dumps(orig, proto)
-            derived = unpickler.loads(green)
-            self.assertEqual(orig, derived)
-
-        # Try one with a tzinfo.
-        tinfo = PicklableFixedOffset(-300, 'cookie')
-        orig = self.theclass(*args, **{'tzinfo': tinfo})
-        derived = self.theclass(1, 1, 1, tzinfo=FixedOffset(0, "", 0))
-        for pickler, unpickler, proto in pickle_choices:
-            green = pickler.dumps(orig, proto)
-            derived = unpickler.loads(green)
-            self.assertEqual(orig, derived)
-            self.assertIsInstance(derived.tzinfo, PicklableFixedOffset)
-            self.assertEqual(derived.utcoffset(), timedelta(minutes=-300))
-            self.assertEqual(derived.tzname(), 'cookie')
-
-    def test_extreme_hashes(self):
-        # If an attempt is made to hash these via subtracting the offset
-        # then hashing a datetime object, OverflowError results.  The
-        # Python implementation used to blow up here.
-        t = self.theclass(1, 1, 1, tzinfo=FixedOffset(1439, ""))
-        hash(t)
-        t = self.theclass(MAXYEAR, 12, 31, 23, 59, 59, 999999,
-                          tzinfo=FixedOffset(-1439, ""))
-        hash(t)
-
-        # OTOH, an OOB offset should blow up.
-        t = self.theclass(5, 5, 5, tzinfo=FixedOffset(-1440, ""))
-        self.assertRaises(ValueError, hash, t)
-
-    def test_zones(self):
-        est = FixedOffset(-300, "EST")
-        utc = FixedOffset(0, "UTC")
-        met = FixedOffset(60, "MET")
-        t1 = datetime(2002, 3, 19,  7, 47, tzinfo=est)
-        t2 = datetime(2002, 3, 19, 12, 47, tzinfo=utc)
-        t3 = datetime(2002, 3, 19, 13, 47, tzinfo=met)
-        self.assertEqual(t1.tzinfo, est)
-        self.assertEqual(t2.tzinfo, utc)
-        self.assertEqual(t3.tzinfo, met)
-        self.assertEqual(t1.utcoffset(), timedelta(minutes=-300))
-        self.assertEqual(t2.utcoffset(), timedelta(minutes=0))
-        self.assertEqual(t3.utcoffset(), timedelta(minutes=60))
-        self.assertEqual(t1.tzname(), "EST")
-        self.assertEqual(t2.tzname(), "UTC")
-        self.assertEqual(t3.tzname(), "MET")
-        self.assertEqual(hash(t1), hash(t2))
-        self.assertEqual(hash(t1), hash(t3))
-        self.assertEqual(hash(t2), hash(t3))
-        self.assertEqual(t1, t2)
-        self.assertEqual(t1, t3)
-        self.assertEqual(t2, t3)
-        self.assertEqual(str(t1), "2002-03-19 07:47:00-05:00")
-        self.assertEqual(str(t2), "2002-03-19 12:47:00+00:00")
-        self.assertEqual(str(t3), "2002-03-19 13:47:00+01:00")
-        d = 'datetime.datetime(2002, 3, 19, '
-        self.assertEqual(repr(t1), d + "7, 47, tzinfo=est)")
-        self.assertEqual(repr(t2), d + "12, 47, tzinfo=utc)")
-        self.assertEqual(repr(t3), d + "13, 47, tzinfo=met)")
-
-    def test_combine(self):
-        met = FixedOffset(60, "MET")
-        d = date(2002, 3, 4)
-        tz = time(18, 45, 3, 1234, tzinfo=met)
-        dt = datetime.combine(d, tz)
-        self.assertEqual(dt, datetime(2002, 3, 4, 18, 45, 3, 1234,
-                                        tzinfo=met))
-
-    def test_extract(self):
-        met = FixedOffset(60, "MET")
-        dt = self.theclass(2002, 3, 4, 18, 45, 3, 1234, tzinfo=met)
-        self.assertEqual(dt.date(), date(2002, 3, 4))
-        self.assertEqual(dt.time(), time(18, 45, 3, 1234))
-        self.assertEqual(dt.timetz(), time(18, 45, 3, 1234, tzinfo=met))
-
-    def test_tz_aware_arithmetic(self):
-        import random
-
-        now = self.theclass.now()
-        tz55 = FixedOffset(-330, "west 5:30")
-        timeaware = now.time().replace(tzinfo=tz55)
-        nowaware = self.theclass.combine(now.date(), timeaware)
-        self.assertTrue(nowaware.tzinfo is tz55)
-        self.assertEqual(nowaware.timetz(), timeaware)
-
-        # Can't mix aware and non-aware.
-        self.assertRaises(TypeError, lambda: now - nowaware)
-        self.assertRaises(TypeError, lambda: nowaware - now)
-
-        # And adding datetime's doesn't make sense, aware or not.
-        self.assertRaises(TypeError, lambda: now + nowaware)
-        self.assertRaises(TypeError, lambda: nowaware + now)
-        self.assertRaises(TypeError, lambda: nowaware + nowaware)
-
-        # Subtracting should yield 0.
-        self.assertEqual(now - now, timedelta(0))
-        self.assertEqual(nowaware - nowaware, timedelta(0))
-
-        # Adding a delta should preserve tzinfo.
-        delta = timedelta(weeks=1, minutes=12, microseconds=5678)
-        nowawareplus = nowaware + delta
-        self.assertTrue(nowaware.tzinfo is tz55)
-        nowawareplus2 = delta + nowaware
-        self.assertTrue(nowawareplus2.tzinfo is tz55)
-        self.assertEqual(nowawareplus, nowawareplus2)
-
-        # that - delta should be what we started with, and that - what we
-        # started with should be delta.
-        diff = nowawareplus - delta
-        self.assertTrue(diff.tzinfo is tz55)
-        self.assertEqual(nowaware, diff)
-        self.assertRaises(TypeError, lambda: delta - nowawareplus)
-        self.assertEqual(nowawareplus - nowaware, delta)
-
-        # Make up a random timezone.
-        tzr = FixedOffset(random.randrange(-1439, 1440), "randomtimezone")
-        # Attach it to nowawareplus.
-        nowawareplus = nowawareplus.replace(tzinfo=tzr)
-        self.assertTrue(nowawareplus.tzinfo is tzr)
-        # Make sure the difference takes the timezone adjustments into account.
-        got = nowaware - nowawareplus
-        # Expected:  (nowaware base - nowaware offset) -
-        #            (nowawareplus base - nowawareplus offset) =
-        #            (nowaware base - nowawareplus base) +
-        #            (nowawareplus offset - nowaware offset) =
-        #            -delta + nowawareplus offset - nowaware offset
-        expected = nowawareplus.utcoffset() - nowaware.utcoffset() - delta
-        self.assertEqual(got, expected)
-
-        # Try max possible difference.
-        min = self.theclass(1, 1, 1, tzinfo=FixedOffset(1439, "min"))
-        max = self.theclass(MAXYEAR, 12, 31, 23, 59, 59, 999999,
-                            tzinfo=FixedOffset(-1439, "max"))
-        maxdiff = max - min
-        self.assertEqual(maxdiff, self.theclass.max - self.theclass.min +
-                                  timedelta(minutes=2*1439))
-
-    def test_tzinfo_now(self):
-        meth = self.theclass.now
-        # Ensure it doesn't require tzinfo (i.e., that this doesn't blow up).
-        base = meth()
-        # Try with and without naming the keyword.
-        off42 = FixedOffset(42, "42")
-        another = meth(off42)
-        again = meth(tz=off42)
-        self.assertTrue(another.tzinfo is again.tzinfo)
-        self.assertEqual(another.utcoffset(), timedelta(minutes=42))
-        # Bad argument with and w/o naming the keyword.
-        self.assertRaises(TypeError, meth, 16)
-        self.assertRaises(TypeError, meth, tzinfo=16)
-        # Bad keyword name.
-        self.assertRaises(TypeError, meth, tinfo=off42)
-        # Too many args.
-        self.assertRaises(TypeError, meth, off42, off42)
-
-        # We don't know which time zone we're in, and don't have a tzinfo
-        # class to represent it, so seeing whether a tz argument actually
-        # does a conversion is tricky.
-        weirdtz = FixedOffset(timedelta(hours=15, minutes=58), "weirdtz", 0)
-        utc = FixedOffset(0, "utc", 0)
-        for dummy in range(3):
-            now = datetime.now(weirdtz)
-            self.assertTrue(now.tzinfo is weirdtz)
-            utcnow = datetime.utcnow().replace(tzinfo=utc)
-            now2 = utcnow.astimezone(weirdtz)
-            if abs(now - now2) < timedelta(seconds=30):
-                break
-            # Else the code is broken, or more than 30 seconds passed between
-            # calls; assuming the latter, just try again.
-        else:
-            # Three strikes and we're out.
-            self.fail("utcnow(), now(tz), or astimezone() may be broken")
-
-    def test_tzinfo_fromtimestamp(self):
-        import time
-        meth = self.theclass.fromtimestamp
-        ts = time.time()
-        # Ensure it doesn't require tzinfo (i.e., that this doesn't blow up).
-        base = meth(ts)
-        # Try with and without naming the keyword.
-        off42 = FixedOffset(42, "42")
-        another = meth(ts, off42)
-        again = meth(ts, tz=off42)
-        self.assertTrue(another.tzinfo is again.tzinfo)
-        self.assertEqual(another.utcoffset(), timedelta(minutes=42))
-        # Bad argument with and w/o naming the keyword.
-        self.assertRaises(TypeError, meth, ts, 16)
-        self.assertRaises(TypeError, meth, ts, tzinfo=16)
-        # Bad keyword name.
-        self.assertRaises(TypeError, meth, ts, tinfo=off42)
-        # Too many args.
-        self.assertRaises(TypeError, meth, ts, off42, off42)
-        # Too few args.
-        self.assertRaises(TypeError, meth)
-
-        # Try to make sure tz= actually does some conversion.
-        timestamp = 1000000000
-        utcdatetime = datetime.utcfromtimestamp(timestamp)
-        # In POSIX (epoch 1970), that's 2001-09-09 01:46:40 UTC, give or take.
-        # But on some flavor of Mac, it's nowhere near that.  So we can't have
-        # any idea here what time that actually is, we can only test that
-        # relative changes match.
-        utcoffset = timedelta(hours=-15, minutes=39) # arbitrary, but not zero
-        tz = FixedOffset(utcoffset, "tz", 0)
-        expected = utcdatetime + utcoffset
-        got = datetime.fromtimestamp(timestamp, tz)
-        self.assertEqual(expected, got.replace(tzinfo=None))
-
-    def test_tzinfo_utcnow(self):
-        meth = self.theclass.utcnow
-        # Ensure it doesn't require tzinfo (i.e., that this doesn't blow up).
-        base = meth()
-        # Try with and without naming the keyword; for whatever reason,
-        # utcnow() doesn't accept a tzinfo argument.
-        off42 = FixedOffset(42, "42")
-        self.assertRaises(TypeError, meth, off42)
-        self.assertRaises(TypeError, meth, tzinfo=off42)
-
-    def test_tzinfo_utcfromtimestamp(self):
-        import time
-        meth = self.theclass.utcfromtimestamp
-        ts = time.time()
-        # Ensure it doesn't require tzinfo (i.e., that this doesn't blow up).
-        base = meth(ts)
-        # Try with and without naming the keyword; for whatever reason,
-        # utcfromtimestamp() doesn't accept a tzinfo argument.
-        off42 = FixedOffset(42, "42")
-        self.assertRaises(TypeError, meth, ts, off42)
-        self.assertRaises(TypeError, meth, ts, tzinfo=off42)
-
-    def test_tzinfo_timetuple(self):
-        # TestDateTime tested most of this.  datetime adds a twist to the
-        # DST flag.
-        class DST(tzinfo):
-            def __init__(self, dstvalue):
-                if isinstance(dstvalue, int):
-                    dstvalue = timedelta(minutes=dstvalue)
-                self.dstvalue = dstvalue
-            def dst(self, dt):
-                return self.dstvalue
-
-        cls = self.theclass
-        for dstvalue, flag in (-33, 1), (33, 1), (0, 0), (None, -1):
-            d = cls(1, 1, 1, 10, 20, 30, 40, tzinfo=DST(dstvalue))
-            t = d.timetuple()
-            self.assertEqual(1, t.tm_year)
-            self.assertEqual(1, t.tm_mon)
-            self.assertEqual(1, t.tm_mday)
-            self.assertEqual(10, t.tm_hour)
-            self.assertEqual(20, t.tm_min)
-            self.assertEqual(30, t.tm_sec)
-            self.assertEqual(0, t.tm_wday)
-            self.assertEqual(1, t.tm_yday)
-            self.assertEqual(flag, t.tm_isdst)
-
-        # dst() returns wrong type.
-        self.assertRaises(TypeError, cls(1, 1, 1, tzinfo=DST("x")).timetuple)
-
-        # dst() at the edge.
-        self.assertEqual(cls(1,1,1, tzinfo=DST(1439)).timetuple().tm_isdst, 1)
-        self.assertEqual(cls(1,1,1, tzinfo=DST(-1439)).timetuple().tm_isdst, 1)
-
-        # dst() out of range.
-        self.assertRaises(ValueError, cls(1,1,1, tzinfo=DST(1440)).timetuple)
-        self.assertRaises(ValueError, cls(1,1,1, tzinfo=DST(-1440)).timetuple)
-
-    def test_utctimetuple(self):
-        class DST(tzinfo):
-            def __init__(self, dstvalue):
-                if isinstance(dstvalue, int):
-                    dstvalue = timedelta(minutes=dstvalue)
-                self.dstvalue = dstvalue
-            def dst(self, dt):
-                return self.dstvalue
-
-        cls = self.theclass
-        # This can't work:  DST didn't implement utcoffset.
-        self.assertRaises(NotImplementedError,
-                          cls(1, 1, 1, tzinfo=DST(0)).utcoffset)
-
-        class UOFS(DST):
-            def __init__(self, uofs, dofs=None):
-                DST.__init__(self, dofs)
-                self.uofs = timedelta(minutes=uofs)
-            def utcoffset(self, dt):
-                return self.uofs
-
-        # Ensure tm_isdst is 0 regardless of what dst() says:  DST is never
-        # in effect for a UTC time.
-        for dstvalue in -33, 33, 0, None:
-            d = cls(1, 2, 3, 10, 20, 30, 40, tzinfo=UOFS(-53, dstvalue))
-            t = d.utctimetuple()
-            self.assertEqual(d.year, t.tm_year)
-            self.assertEqual(d.month, t.tm_mon)
-            self.assertEqual(d.day, t.tm_mday)
-            self.assertEqual(11, t.tm_hour) # 20mm + 53mm = 1hn + 13mm
-            self.assertEqual(13, t.tm_min)
-            self.assertEqual(d.second, t.tm_sec)
-            self.assertEqual(d.weekday(), t.tm_wday)
-            self.assertEqual(d.toordinal() - date(1, 1, 1).toordinal() + 1,
-                             t.tm_yday)
-            self.assertEqual(0, t.tm_isdst)
-
-        # At the edges, UTC adjustment can normalize into years out-of-range
-        # for a datetime object.  Ensure that a correct timetuple is
-        # created anyway.
-        tiny = cls(MINYEAR, 1, 1, 0, 0, 37, tzinfo=UOFS(1439))
-        # That goes back 1 minute less than a full day.
-        t = tiny.utctimetuple()
-        self.assertEqual(t.tm_year, MINYEAR-1)
-        self.assertEqual(t.tm_mon, 12)
-        self.assertEqual(t.tm_mday, 31)
-        self.assertEqual(t.tm_hour, 0)
-        self.assertEqual(t.tm_min, 1)
-        self.assertEqual(t.tm_sec, 37)
-        self.assertEqual(t.tm_yday, 366)    # "year 0" is a leap year
-        self.assertEqual(t.tm_isdst, 0)
-
-        huge = cls(MAXYEAR, 12, 31, 23, 59, 37, 999999, tzinfo=UOFS(-1439))
-        # That goes forward 1 minute less than a full day.
-        t = huge.utctimetuple()
-        self.assertEqual(t.tm_year, MAXYEAR+1)
-        self.assertEqual(t.tm_mon, 1)
-        self.assertEqual(t.tm_mday, 1)
-        self.assertEqual(t.tm_hour, 23)
-        self.assertEqual(t.tm_min, 58)
-        self.assertEqual(t.tm_sec, 37)
-        self.assertEqual(t.tm_yday, 1)
-        self.assertEqual(t.tm_isdst, 0)
-
-    def test_tzinfo_isoformat(self):
-        zero = FixedOffset(0, "+00:00")
-        plus = FixedOffset(220, "+03:40")
-        minus = FixedOffset(-231, "-03:51")
-        unknown = FixedOffset(None, "")
-
-        cls = self.theclass
-        datestr = '0001-02-03'
-        for ofs in None, zero, plus, minus, unknown:
-            for us in 0, 987001:
-                d = cls(1, 2, 3, 4, 5, 59, us, tzinfo=ofs)
-                timestr = '04:05:59' + (us and '.987001' or '')
-                ofsstr = ofs is not None and d.tzname() or ''
-                tailstr = timestr + ofsstr
-                iso = d.isoformat()
-                self.assertEqual(iso, datestr + 'T' + tailstr)
-                self.assertEqual(iso, d.isoformat('T'))
-                self.assertEqual(d.isoformat('k'), datestr + 'k' + tailstr)
-                self.assertEqual(str(d), datestr + ' ' + tailstr)
-
-    def test_replace(self):
-        cls = self.theclass
-        z100 = FixedOffset(100, "+100")
-        zm200 = FixedOffset(timedelta(minutes=-200), "-200")
-        args = [1, 2, 3, 4, 5, 6, 7, z100]
-        base = cls(*args)
-        self.assertEqual(base, base.replace())
-
-        i = 0
-        for name, newval in (("year", 2),
-                             ("month", 3),
-                             ("day", 4),
-                             ("hour", 5),
-                             ("minute", 6),
-                             ("second", 7),
-                             ("microsecond", 8),
-                             ("tzinfo", zm200)):
-            newargs = args[:]
-            newargs[i] = newval
-            expected = cls(*newargs)
-            got = base.replace(**{name: newval})
-            self.assertEqual(expected, got)
-            i += 1
-
-        # Ensure we can get rid of a tzinfo.
-        self.assertEqual(base.tzname(), "+100")
-        base2 = base.replace(tzinfo=None)
-        self.assertTrue(base2.tzinfo is None)
-        self.assertTrue(base2.tzname() is None)
-
-        # Ensure we can add one.
-        base3 = base2.replace(tzinfo=z100)
-        self.assertEqual(base, base3)
-        self.assertTrue(base.tzinfo is base3.tzinfo)
-
-        # Out of bounds.
-        base = cls(2000, 2, 29)
-        self.assertRaises(ValueError, base.replace, year=2001)
-
-    def test_more_astimezone(self):
-        # The inherited test_astimezone covered some trivial and error cases.
-        fnone = FixedOffset(None, "None")
-        f44m = FixedOffset(44, "44")
-        fm5h = FixedOffset(-timedelta(hours=5), "m300")
-
-        dt = self.theclass.now(tz=f44m)
-        self.assertTrue(dt.tzinfo is f44m)
-        # Replacing with degenerate tzinfo raises an exception.
-        self.assertRaises(ValueError, dt.astimezone, fnone)
-        # Ditto with None tz.
-        self.assertRaises(TypeError, dt.astimezone, None)
-        # Replacing with same tzinfo makes no change.
-        x = dt.astimezone(dt.tzinfo)
-        self.assertTrue(x.tzinfo is f44m)
-        self.assertEqual(x.date(), dt.date())
-        self.assertEqual(x.time(), dt.time())
-
-        # Replacing with different tzinfo does adjust.
-        got = dt.astimezone(fm5h)
-        self.assertTrue(got.tzinfo is fm5h)
-        self.assertEqual(got.utcoffset(), timedelta(hours=-5))
-        expected = dt - dt.utcoffset()  # in effect, convert to UTC
-        expected += fm5h.utcoffset(dt)  # and from there to local time
-        expected = expected.replace(tzinfo=fm5h) # and attach new tzinfo
-        self.assertEqual(got.date(), expected.date())
-        self.assertEqual(got.time(), expected.time())
-        self.assertEqual(got.timetz(), expected.timetz())
-        self.assertTrue(got.tzinfo is expected.tzinfo)
-        self.assertEqual(got, expected)
-
-    def test_aware_subtract(self):
-        cls = self.theclass
-
-        # Ensure that utcoffset() is ignored when the operands have the
-        # same tzinfo member.
-        class OperandDependentOffset(tzinfo):
-            def utcoffset(self, t):
-                if t.minute < 10:
-                    # d0 and d1 equal after adjustment
-                    return timedelta(minutes=t.minute)
-                else:
-                    # d2 off in the weeds
-                    return timedelta(minutes=59)
-
-        base = cls(8, 9, 10, 11, 12, 13, 14, tzinfo=OperandDependentOffset())
-        d0 = base.replace(minute=3)
-        d1 = base.replace(minute=9)
-        d2 = base.replace(minute=11)
-        for x in d0, d1, d2:
-            for y in d0, d1, d2:
-                got = x - y
-                expected = timedelta(minutes=x.minute - y.minute)
-                self.assertEqual(got, expected)
-
-        # OTOH, if the tzinfo members are distinct, utcoffsets aren't
-        # ignored.
-        base = cls(8, 9, 10, 11, 12, 13, 14)
-        d0 = base.replace(minute=3, tzinfo=OperandDependentOffset())
-        d1 = base.replace(minute=9, tzinfo=OperandDependentOffset())
-        d2 = base.replace(minute=11, tzinfo=OperandDependentOffset())
-        for x in d0, d1, d2:
-            for y in d0, d1, d2:
-                got = x - y
-                if (x is d0 or x is d1) and (y is d0 or y is d1):
-                    expected = timedelta(0)
-                elif x is y is d2:
-                    expected = timedelta(0)
-                elif x is d2:
-                    expected = timedelta(minutes=(11-59)-0)
-                else:
-                    assert y is d2
-                    expected = timedelta(minutes=0-(11-59))
-                self.assertEqual(got, expected)
-
-    def test_mixed_compare(self):
-        t1 = datetime(1, 2, 3, 4, 5, 6, 7)
-        t2 = datetime(1, 2, 3, 4, 5, 6, 7)
-        self.assertEqual(t1, t2)
-        t2 = t2.replace(tzinfo=None)
-        self.assertEqual(t1, t2)
-        t2 = t2.replace(tzinfo=FixedOffset(None, ""))
-        self.assertEqual(t1, t2)
-        t2 = t2.replace(tzinfo=FixedOffset(0, ""))
-        self.assertRaises(TypeError, lambda: t1 == t2)
-
-        # In datetime w/ identical tzinfo objects, utcoffset is ignored.
-        class Varies(tzinfo):
-            def __init__(self):
-                self.offset = timedelta(minutes=22)
-            def utcoffset(self, t):
-                self.offset += timedelta(minutes=1)
-                return self.offset
-
-        v = Varies()
-        t1 = t2.replace(tzinfo=v)
-        t2 = t2.replace(tzinfo=v)
-        self.assertEqual(t1.utcoffset(), timedelta(minutes=23))
-        self.assertEqual(t2.utcoffset(), timedelta(minutes=24))
-        self.assertEqual(t1, t2)
-
-        # But if they're not identical, it isn't ignored.
-        t2 = t2.replace(tzinfo=Varies())
-        self.assertTrue(t1 < t2)  # t1's offset counter still going up
-
-    def test_subclass_datetimetz(self):
-
-        class C(self.theclass):
-            theAnswer = 42
-
-            def __new__(cls, *args, **kws):
-                temp = kws.copy()
-                extra = temp.pop('extra')
-                result = self.theclass.__new__(cls, *args, **temp)
-                result.extra = extra
-                return result
-
-            def newmeth(self, start):
-                return start + self.hour + self.year
-
-        args = 2002, 12, 31, 4, 5, 6, 500, FixedOffset(-300, "EST", 1)
-
-        dt1 = self.theclass(*args)
-        dt2 = C(*args, **{'extra': 7})
-
-        self.assertEqual(dt2.__class__, C)
-        self.assertEqual(dt2.theAnswer, 42)
-        self.assertEqual(dt2.extra, 7)
-        self.assertEqual(dt1.utcoffset(), dt2.utcoffset())
-        self.assertEqual(dt2.newmeth(-7), dt1.hour + dt1.year - 7)
-
-# Pain to set up DST-aware tzinfo classes.
-
-def first_sunday_on_or_after(dt):
-    days_to_go = 6 - dt.weekday()
-    if days_to_go:
-        dt += timedelta(days_to_go)
-    return dt
-
-ZERO = timedelta(0)
-HOUR = timedelta(hours=1)
-DAY = timedelta(days=1)
-# In the US, DST starts at 2am (standard time) on the first Sunday in April.
-DSTSTART = datetime(1, 4, 1, 2)
-# and ends at 2am (DST time; 1am standard time) on the last Sunday of Oct,
-# which is the first Sunday on or after Oct 25.  Because we view 1:MM as
-# being standard time on that day, there is no spelling in local time of
-# the last hour of DST (that's 1:MM DST, but 1:MM is taken as standard time).
-DSTEND = datetime(1, 10, 25, 1)
-
-class USTimeZone(tzinfo):
-
-    def __init__(self, hours, reprname, stdname, dstname):
-        self.stdoffset = timedelta(hours=hours)
-        self.reprname = reprname
-        self.stdname = stdname
-        self.dstname = dstname
-
-    def __repr__(self):
-        return self.reprname
-
-    def tzname(self, dt):
-        if self.dst(dt):
-            return self.dstname
-        else:
-            return self.stdname
-
-    def utcoffset(self, dt):
-        return self.stdoffset + self.dst(dt)
-
-    def dst(self, dt):
-        if dt is None or dt.tzinfo is None:
-            # An exception instead may be sensible here, in one or more of
-            # the cases.
-            return ZERO
-        assert dt.tzinfo is self
-
-        # Find first Sunday in April.
-        start = first_sunday_on_or_after(DSTSTART.replace(year=dt.year))
-        assert start.weekday() == 6 and start.month == 4 and start.day <= 7
-
-        # Find last Sunday in October.
-        end = first_sunday_on_or_after(DSTEND.replace(year=dt.year))
-        assert end.weekday() == 6 and end.month == 10 and end.day >= 25
-
-        # Can't compare naive to aware objects, so strip the timezone from
-        # dt first.
-        if start <= dt.replace(tzinfo=None) < end:
-            return HOUR
-        else:
-            return ZERO
-
-Eastern  = USTimeZone(-5, "Eastern",  "EST", "EDT")
-Central  = USTimeZone(-6, "Central",  "CST", "CDT")
-Mountain = USTimeZone(-7, "Mountain", "MST", "MDT")
-Pacific  = USTimeZone(-8, "Pacific",  "PST", "PDT")
-utc_real = FixedOffset(0, "UTC", 0)
-# For better test coverage, we want another flavor of UTC that's west of
-# the Eastern and Pacific timezones.
-utc_fake = FixedOffset(-12*60, "UTCfake", 0)
-
-class TestTimezoneConversions(unittest.TestCase):
-    # The DST switch times for 2002, in std time.
-    dston = datetime(2002, 4, 7, 2)
-    dstoff = datetime(2002, 10, 27, 1)
-
-    theclass = datetime
-
-    # Check a time that's inside DST.
-    def checkinside(self, dt, tz, utc, dston, dstoff):
-        self.assertEqual(dt.dst(), HOUR)
-
-        # Conversion to our own timezone is always an identity.
-        self.assertEqual(dt.astimezone(tz), dt)
-
-        asutc = dt.astimezone(utc)
-        there_and_back = asutc.astimezone(tz)
-
-        # Conversion to UTC and back isn't always an identity here,
-        # because there are redundant spellings (in local time) of
-        # UTC time when DST begins:  the clock jumps from 1:59:59
-        # to 3:00:00, and a local time of 2:MM:SS doesn't really
-        # make sense then.  The classes above treat 2:MM:SS as
-        # daylight time then (it's "after 2am"), really an alias
-        # for 1:MM:SS standard time.  The latter form is what
-        # conversion back from UTC produces.
-        if dt.date() == dston.date() and dt.hour == 2:
-            # We're in the redundant hour, and coming back from
-            # UTC gives the 1:MM:SS standard-time spelling.
-            self.assertEqual(there_and_back + HOUR, dt)
-            # Although during was considered to be in daylight
-            # time, there_and_back is not.
-            self.assertEqual(there_and_back.dst(), ZERO)
-            # They're the same times in UTC.
-            self.assertEqual(there_and_back.astimezone(utc),
-                             dt.astimezone(utc))
-        else:
-            # We're not in the redundant hour.
-            self.assertEqual(dt, there_and_back)
-
-        # Because we have a redundant spelling when DST begins, there is
-        # (unfortunately) an hour when DST ends that can't be spelled at all in
-        # local time.  When DST ends, the clock jumps from 1:59 back to 1:00
-        # again.  The hour 1:MM DST has no spelling then:  1:MM is taken to be
-        # standard time.  1:MM DST == 0:MM EST, but 0:MM is taken to be
-        # daylight time.  The hour 1:MM daylight == 0:MM standard can't be
-        # expressed in local time.  Nevertheless, we want conversion back
-        # from UTC to mimic the local clock's "repeat an hour" behavior.
-        nexthour_utc = asutc + HOUR
-        nexthour_tz = nexthour_utc.astimezone(tz)
-        if dt.date() == dstoff.date() and dt.hour == 0:
-            # We're in the hour before the last DST hour.  The last DST hour
-            # is ineffable.  We want the conversion back to repeat 1:MM.
-            self.assertEqual(nexthour_tz, dt.replace(hour=1))
-            nexthour_utc += HOUR
-            nexthour_tz = nexthour_utc.astimezone(tz)
-            self.assertEqual(nexthour_tz, dt.replace(hour=1))
-        else:
-            self.assertEqual(nexthour_tz - dt, HOUR)
-
-    # Check a time that's outside DST.
-    def checkoutside(self, dt, tz, utc):
-        self.assertEqual(dt.dst(), ZERO)
-
-        # Conversion to our own timezone is always an identity.
-        self.assertEqual(dt.astimezone(tz), dt)
-
-        # Converting to UTC and back is an identity too.
-        asutc = dt.astimezone(utc)
-        there_and_back = asutc.astimezone(tz)
-        self.assertEqual(dt, there_and_back)
-
-    def convert_between_tz_and_utc(self, tz, utc):
-        dston = self.dston.replace(tzinfo=tz)
-        # Because 1:MM on the day DST ends is taken as being standard time,
-        # there is no spelling in tz for the last hour of daylight time.
-        # For purposes of the test, the last hour of DST is 0:MM, which is
-        # taken as being daylight time (and 1:MM is taken as being standard
-        # time).
-        dstoff = self.dstoff.replace(tzinfo=tz)
-        for delta in (timedelta(weeks=13),
-                      DAY,
-                      HOUR,
-                      timedelta(minutes=1),
-                      timedelta(microseconds=1)):
-
-            self.checkinside(dston, tz, utc, dston, dstoff)
-            for during in dston + delta, dstoff - delta:
-                self.checkinside(during, tz, utc, dston, dstoff)
-
-            self.checkoutside(dstoff, tz, utc)
-            for outside in dston - delta, dstoff + delta:
-                self.checkoutside(outside, tz, utc)
-
-    def test_easy(self):
-        # Despite the name of this test, the endcases are excruciating.
-        self.convert_between_tz_and_utc(Eastern, utc_real)
-        self.convert_between_tz_and_utc(Pacific, utc_real)
-        self.convert_between_tz_and_utc(Eastern, utc_fake)
-        self.convert_between_tz_and_utc(Pacific, utc_fake)
-        # The next is really dancing near the edge.  It works because
-        # Pacific and Eastern are far enough apart that their "problem
-        # hours" don't overlap.
-        self.convert_between_tz_and_utc(Eastern, Pacific)
-        self.convert_between_tz_and_utc(Pacific, Eastern)
-        # OTOH, these fail!  Don't enable them.  The difficulty is that
-        # the edge case tests assume that every hour is representable in
-        # the "utc" class.  This is always true for a fixed-offset tzinfo
-        # class (lke utc_real and utc_fake), but not for Eastern or Central.
-        # For these adjacent DST-aware time zones, the range of time offsets
-        # tested ends up creating hours in the one that aren't representable
-        # in the other.  For the same reason, we would see failures in the
-        # Eastern vs Pacific tests too if we added 3*HOUR to the list of
-        # offset deltas in convert_between_tz_and_utc().
-        #
-        # self.convert_between_tz_and_utc(Eastern, Central)  # can't work
-        # self.convert_between_tz_and_utc(Central, Eastern)  # can't work
-
-    def test_tricky(self):
-        # 22:00 on day before daylight starts.
-        fourback = self.dston - timedelta(hours=4)
-        ninewest = FixedOffset(-9*60, "-0900", 0)
-        fourback = fourback.replace(tzinfo=ninewest)
-        # 22:00-0900 is 7:00 UTC == 2:00 EST == 3:00 DST.  Since it's "after
-        # 2", we should get the 3 spelling.
-        # If we plug 22:00 the day before into Eastern, it "looks like std
-        # time", so its offset is returned as -5, and -5 - -9 = 4.  Adding 4
-        # to 22:00 lands on 2:00, which makes no sense in local time (the
-        # local clock jumps from 1 to 3).  The point here is to make sure we
-        # get the 3 spelling.
-        expected = self.dston.replace(hour=3)
-        got = fourback.astimezone(Eastern).replace(tzinfo=None)
-        self.assertEqual(expected, got)
-
-        # Similar, but map to 6:00 UTC == 1:00 EST == 2:00 DST.  In that
-        # case we want the 1:00 spelling.
-        sixutc = self.dston.replace(hour=6, tzinfo=utc_real)
-        # Now 6:00 "looks like daylight", so the offset wrt Eastern is -4,
-        # and adding -4-0 == -4 gives the 2:00 spelling.  We want the 1:00 EST
-        # spelling.
-        expected = self.dston.replace(hour=1)
-        got = sixutc.astimezone(Eastern).replace(tzinfo=None)
-        self.assertEqual(expected, got)
-
-        # Now on the day DST ends, we want "repeat an hour" behavior.
-        #  UTC  4:MM  5:MM  6:MM  7:MM  checking these
-        #  EST 23:MM  0:MM  1:MM  2:MM
-        #  EDT  0:MM  1:MM  2:MM  3:MM
-        # wall  0:MM  1:MM  1:MM  2:MM  against these
-        for utc in utc_real, utc_fake:
-            for tz in Eastern, Pacific:
-                first_std_hour = self.dstoff - timedelta(hours=2) # 23:MM
-                # Convert that to UTC.
-                first_std_hour -= tz.utcoffset(None)
-                # Adjust for possibly fake UTC.
-                asutc = first_std_hour + utc.utcoffset(None)
-                # First UTC hour to convert; this is 4:00 when utc=utc_real &
-                # tz=Eastern.
-                asutcbase = asutc.replace(tzinfo=utc)
-                for tzhour in (0, 1, 1, 2):
-                    expectedbase = self.dstoff.replace(hour=tzhour)
-                    for minute in 0, 30, 59:
-                        expected = expectedbase.replace(minute=minute)
-                        asutc = asutcbase.replace(minute=minute)
-                        astz = asutc.astimezone(tz)
-                        self.assertEqual(astz.replace(tzinfo=None), expected)
-                    asutcbase += HOUR
-
-
-    def test_bogus_dst(self):
-        class ok(tzinfo):
-            def utcoffset(self, dt): return HOUR
-            def dst(self, dt): return HOUR
-
-        now = self.theclass.now().replace(tzinfo=utc_real)
-        # Doesn't blow up.
-        now.astimezone(ok())
-
-        # Does blow up.
-        class notok(ok):
-            def dst(self, dt): return None
-        self.assertRaises(ValueError, now.astimezone, notok())
-
-    def test_fromutc(self):
-        self.assertRaises(TypeError, Eastern.fromutc)   # not enough args
-        now = datetime.utcnow().replace(tzinfo=utc_real)
-        self.assertRaises(ValueError, Eastern.fromutc, now) # wrong tzinfo
-        now = now.replace(tzinfo=Eastern)   # insert correct tzinfo
-        enow = Eastern.fromutc(now)         # doesn't blow up
-        self.assertEqual(enow.tzinfo, Eastern) # has right tzinfo member
-        self.assertRaises(TypeError, Eastern.fromutc, now, now) # too many args
-        self.assertRaises(TypeError, Eastern.fromutc, date.today()) # wrong type
-
-        # Always converts UTC to standard time.
-        class FauxUSTimeZone(USTimeZone):
-            def fromutc(self, dt):
-                return dt + self.stdoffset
-        FEastern  = FauxUSTimeZone(-5, "FEastern",  "FEST", "FEDT")
-
-        #  UTC  4:MM  5:MM  6:MM  7:MM  8:MM  9:MM
-        #  EST 23:MM  0:MM  1:MM  2:MM  3:MM  4:MM
-        #  EDT  0:MM  1:MM  2:MM  3:MM  4:MM  5:MM
-
-        # Check around DST start.
-        start = self.dston.replace(hour=4, tzinfo=Eastern)
-        fstart = start.replace(tzinfo=FEastern)
-        for wall in 23, 0, 1, 3, 4, 5:
-            expected = start.replace(hour=wall)
-            if wall == 23:
-                expected -= timedelta(days=1)
-            got = Eastern.fromutc(start)
-            self.assertEqual(expected, got)
-
-            expected = fstart + FEastern.stdoffset
-            got = FEastern.fromutc(fstart)
-            self.assertEqual(expected, got)
-
-            # Ensure astimezone() calls fromutc() too.
-            got = fstart.replace(tzinfo=utc_real).astimezone(FEastern)
-            self.assertEqual(expected, got)
-
-            start += HOUR
-            fstart += HOUR
-
-        # Check around DST end.
-        start = self.dstoff.replace(hour=4, tzinfo=Eastern)
-        fstart = start.replace(tzinfo=FEastern)
-        for wall in 0, 1, 1, 2, 3, 4:
-            expected = start.replace(hour=wall)
-            got = Eastern.fromutc(start)
-            self.assertEqual(expected, got)
-
-            expected = fstart + FEastern.stdoffset
-            got = FEastern.fromutc(fstart)
-            self.assertEqual(expected, got)
-
-            # Ensure astimezone() calls fromutc() too.
-            got = fstart.replace(tzinfo=utc_real).astimezone(FEastern)
-            self.assertEqual(expected, got)
-
-            start += HOUR
-            fstart += HOUR
-
-
-#############################################################################
-# oddballs
-
-class Oddballs(unittest.TestCase):
-
-    def test_bug_1028306(self):
-        # Trying to compare a date to a datetime should act like a mixed-
-        # type comparison, despite that datetime is a subclass of date.
-        as_date = date.today()
-        as_datetime = datetime.combine(as_date, time())
-        self.assertTrue(as_date != as_datetime)
-        self.assertTrue(as_datetime != as_date)
-        self.assertTrue(not as_date == as_datetime)
-        self.assertTrue(not as_datetime == as_date)
-        self.assertRaises(TypeError, lambda: as_date < as_datetime)
-        self.assertRaises(TypeError, lambda: as_datetime < as_date)
-        self.assertRaises(TypeError, lambda: as_date <= as_datetime)
-        self.assertRaises(TypeError, lambda: as_datetime <= as_date)
-        self.assertRaises(TypeError, lambda: as_date > as_datetime)
-        self.assertRaises(TypeError, lambda: as_datetime > as_date)
-        self.assertRaises(TypeError, lambda: as_date >= as_datetime)
-        self.assertRaises(TypeError, lambda: as_datetime >= as_date)
-
-        # Neverthelss, comparison should work with the base-class (date)
-        # projection if use of a date method is forced.
-        self.assertTrue(as_date.__eq__(as_datetime))
-        different_day = (as_date.day + 1) % 20 + 1
-        self.assertTrue(not as_date.__eq__(as_datetime.replace(day=
-                                                     different_day)))
-
-        # And date should compare with other subclasses of date.  If a
-        # subclass wants to stop this, it's up to the subclass to do so.
-        date_sc = SubclassDate(as_date.year, as_date.month, as_date.day)
-        self.assertEqual(as_date, date_sc)
-        self.assertEqual(date_sc, as_date)
-
-        # Ditto for datetimes.
-        datetime_sc = SubclassDatetime(as_datetime.year, as_datetime.month,
-                                       as_date.day, 0, 0, 0)
-        self.assertEqual(as_datetime, datetime_sc)
-        self.assertEqual(datetime_sc, as_datetime)
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dbm.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dbm.py
deleted file mode 100644
index adfb171..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dbm.py
+++ /dev/null
@@ -1,42 +0,0 @@
-from test import test_support
-import unittest
-dbm = test_support.import_module('dbm')
-
-class DbmTestCase(unittest.TestCase):
-
-    def setUp(self):
-        self.filename = test_support.TESTFN
-        self.d = dbm.open(self.filename, 'c')
-        self.d.close()
-
-    def tearDown(self):
-        for suffix in ['', '.pag', '.dir', '.db']:
-            test_support.unlink(self.filename + suffix)
-
-    def test_keys(self):
-        self.d = dbm.open(self.filename, 'c')
-        self.assertEqual(self.d.keys(), [])
-        a = [('a', 'b'), ('12345678910', '019237410982340912840198242')]
-        for k, v in a:
-            self.d[k] = v
-        self.assertEqual(sorted(self.d.keys()), sorted(k for (k, v) in a))
-        for k, v in a:
-            self.assertIn(k, self.d)
-            self.assertEqual(self.d[k], v)
-        self.assertNotIn('xxx', self.d)
-        self.assertRaises(KeyError, lambda: self.d['xxx'])
-        self.d.close()
-
-    def test_modes(self):
-        for mode in ['r', 'rw', 'w', 'n']:
-            try:
-                self.d = dbm.open(self.filename, mode)
-                self.d.close()
-            except dbm.error:
-                self.fail()
-
-def test_main():
-    test_support.run_unittest(DbmTestCase)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_decimal.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_decimal.py
deleted file mode 100644
index 1d500ea..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_decimal.py
+++ /dev/null
@@ -1,2339 +0,0 @@
-# Copyright (c) 2004 Python Software Foundation.
-# All rights reserved.
-
-# Written by Eric Price <eprice at tjhsst.edu>
-#    and Facundo Batista <facundo at taniquetil.com.ar>
-#    and Raymond Hettinger <python at rcn.com>
-#    and Aahz (aahz at pobox.com)
-#    and Tim Peters
-
-"""
-These are the test cases for the Decimal module.
-
-There are two groups of tests, Arithmetic and Behaviour. The former test
-the Decimal arithmetic using the tests provided by Mike Cowlishaw. The latter
-test the pythonic behaviour according to PEP 327.
-
-Cowlishaw's tests can be downloaded from:
-
-   www2.hursley.ibm.com/decimal/dectest.zip
-
-This test module can be called from command line with one parameter (Arithmetic
-or Behaviour) to test each part, or without parameter to test both parts. If
-you're working through IDLE, you can import this test module and call test_main()
-with the corresponding argument.
-"""
-
-import math
-import os, sys
-import operator
-import pickle, copy
-import unittest
-from decimal import *
-import numbers
-from test.test_support import (run_unittest, run_doctest,
-                               is_resource_enabled, check_py3k_warnings)
-import random
-try:
-    import threading
-except ImportError:
-    threading = None
-
-# Useful Test Constant
-Signals = tuple(getcontext().flags.keys())
-
-# Signals ordered with respect to precedence: when an operation
-# produces multiple signals, signals occurring later in the list
-# should be handled before those occurring earlier in the list.
-OrderedSignals = (Clamped, Rounded, Inexact, Subnormal,
-                  Underflow, Overflow, DivisionByZero, InvalidOperation)
-
-# Tests are built around these assumed context defaults.
-# test_main() restores the original context.
-def init():
-    global ORIGINAL_CONTEXT
-    ORIGINAL_CONTEXT = getcontext().copy()
-    DefaultTestContext = Context(
-        prec = 9,
-        rounding = ROUND_HALF_EVEN,
-        traps = dict.fromkeys(Signals, 0)
-        )
-    setcontext(DefaultTestContext)
-
-# decorator for skipping tests on non-IEEE 754 platforms
-requires_IEEE_754 = unittest.skipUnless(
-    float.__getformat__("double").startswith("IEEE"),
-    "test requires IEEE 754 doubles")
-
-TESTDATADIR = 'decimaltestdata'
-if __name__ == '__main__':
-    file = sys.argv[0]
-else:
-    file = __file__
-testdir = os.path.dirname(file) or os.curdir
-directory = testdir + os.sep + TESTDATADIR + os.sep
-
-skip_expected = not os.path.isdir(directory)
-
-# list of individual .decTest test ids that correspond to tests that
-# we're skipping for one reason or another.
-skipped_test_ids = set([
-    # Skip implementation-specific scaleb tests.
-    'scbx164',
-    'scbx165',
-
-    # For some operations (currently exp, ln, log10, power), the decNumber
-    # reference implementation imposes additional restrictions on the context
-    # and operands.  These restrictions are not part of the specification;
-    # however, the effect of these restrictions does show up in some of the
-    # testcases.  We skip testcases that violate these restrictions, since
-    # Decimal behaves differently from decNumber for these testcases so these
-    # testcases would otherwise fail.
-    'expx901',
-    'expx902',
-    'expx903',
-    'expx905',
-    'lnx901',
-    'lnx902',
-    'lnx903',
-    'lnx905',
-    'logx901',
-    'logx902',
-    'logx903',
-    'logx905',
-    'powx1183',
-    'powx1184',
-    'powx4001',
-    'powx4002',
-    'powx4003',
-    'powx4005',
-    'powx4008',
-    'powx4010',
-    'powx4012',
-    'powx4014',
-    ])
-
-# Make sure it actually raises errors when not expected and caught in flags
-# Slower, since it runs some things several times.
-EXTENDEDERRORTEST = False
-
-#Map the test cases' error names to the actual errors
-ErrorNames = {'clamped' : Clamped,
-              'conversion_syntax' : InvalidOperation,
-              'division_by_zero' : DivisionByZero,
-              'division_impossible' : InvalidOperation,
-              'division_undefined' : InvalidOperation,
-              'inexact' : Inexact,
-              'invalid_context' : InvalidOperation,
-              'invalid_operation' : InvalidOperation,
-              'overflow' : Overflow,
-              'rounded' : Rounded,
-              'subnormal' : Subnormal,
-              'underflow' : Underflow}
-
-
-def Nonfunction(*args):
-    """Doesn't do anything."""
-    return None
-
-RoundingDict = {'ceiling' : ROUND_CEILING, #Maps test-case names to roundings.
-                'down' : ROUND_DOWN,
-                'floor' : ROUND_FLOOR,
-                'half_down' : ROUND_HALF_DOWN,
-                'half_even' : ROUND_HALF_EVEN,
-                'half_up' : ROUND_HALF_UP,
-                'up' : ROUND_UP,
-                '05up' : ROUND_05UP}
-
-# Name adapter to be able to change the Decimal and Context
-# interface without changing the test files from Cowlishaw
-nameAdapter = {'and':'logical_and',
-               'apply':'_apply',
-               'class':'number_class',
-               'comparesig':'compare_signal',
-               'comparetotal':'compare_total',
-               'comparetotmag':'compare_total_mag',
-               'copy':'copy_decimal',
-               'copyabs':'copy_abs',
-               'copynegate':'copy_negate',
-               'copysign':'copy_sign',
-               'divideint':'divide_int',
-               'invert':'logical_invert',
-               'iscanonical':'is_canonical',
-               'isfinite':'is_finite',
-               'isinfinite':'is_infinite',
-               'isnan':'is_nan',
-               'isnormal':'is_normal',
-               'isqnan':'is_qnan',
-               'issigned':'is_signed',
-               'issnan':'is_snan',
-               'issubnormal':'is_subnormal',
-               'iszero':'is_zero',
-               'maxmag':'max_mag',
-               'minmag':'min_mag',
-               'nextminus':'next_minus',
-               'nextplus':'next_plus',
-               'nexttoward':'next_toward',
-               'or':'logical_or',
-               'reduce':'normalize',
-               'remaindernear':'remainder_near',
-               'samequantum':'same_quantum',
-               'squareroot':'sqrt',
-               'toeng':'to_eng_string',
-               'tointegral':'to_integral_value',
-               'tointegralx':'to_integral_exact',
-               'tosci':'to_sci_string',
-               'xor':'logical_xor',
-              }
-
-# The following functions return True/False rather than a Decimal instance
-
-LOGICAL_FUNCTIONS = (
-    'is_canonical',
-    'is_finite',
-    'is_infinite',
-    'is_nan',
-    'is_normal',
-    'is_qnan',
-    'is_signed',
-    'is_snan',
-    'is_subnormal',
-    'is_zero',
-    'same_quantum',
-    )
-
-class DecimalTest(unittest.TestCase):
-    """Class which tests the Decimal class against the test cases.
-
-    Changed for unittest.
-    """
-    def setUp(self):
-        self.context = Context()
-        self.ignore_list = ['#']
-        # Basically, a # means return NaN InvalidOperation.
-        # Different from a sNaN in trim
-
-        self.ChangeDict = {'precision' : self.change_precision,
-                      'rounding' : self.change_rounding_method,
-                      'maxexponent' : self.change_max_exponent,
-                      'minexponent' : self.change_min_exponent,
-                      'clamp' : self.change_clamp}
-
-    def eval_file(self, file):
-        global skip_expected
-        if skip_expected:
-            raise unittest.SkipTest
-            return
-        with open(file) as f:
-            for line in f:
-                line = line.replace('\r\n', '').replace('\n', '')
-                #print line
-                try:
-                    t = self.eval_line(line)
-                except DecimalException as exception:
-                    #Exception raised where there shouldn't have been one.
-                    self.fail('Exception "'+exception.__class__.__name__ + '" raised on line '+line)
-
-        return
-
-    def eval_line(self, s):
-        if s.find(' -> ') >= 0 and s[:2] != '--' and not s.startswith('  --'):
-            s = (s.split('->')[0] + '->' +
-                 s.split('->')[1].split('--')[0]).strip()
-        else:
-            s = s.split('--')[0].strip()
-
-        for ignore in self.ignore_list:
-            if s.find(ignore) >= 0:
-                #print s.split()[0], 'NotImplemented--', ignore
-                return
-        if not s:
-            return
-        elif ':' in s:
-            return self.eval_directive(s)
-        else:
-            return self.eval_equation(s)
-
-    def eval_directive(self, s):
-        funct, value = map(lambda x: x.strip().lower(), s.split(':'))
-        if funct == 'rounding':
-            value = RoundingDict[value]
-        else:
-            try:
-                value = int(value)
-            except ValueError:
-                pass
-
-        funct = self.ChangeDict.get(funct, Nonfunction)
-        funct(value)
-
-    def eval_equation(self, s):
-        #global DEFAULT_PRECISION
-        #print DEFAULT_PRECISION
-
-        if not TEST_ALL and random.random() < 0.90:
-            return
-
-        try:
-            Sides = s.split('->')
-            L = Sides[0].strip().split()
-            id = L[0]
-            if DEBUG:
-                print "Test ", id,
-            funct = L[1].lower()
-            valstemp = L[2:]
-            L = Sides[1].strip().split()
-            ans = L[0]
-            exceptions = L[1:]
-        except (TypeError, AttributeError, IndexError):
-            raise InvalidOperation
-        def FixQuotes(val):
-            val = val.replace("''", 'SingleQuote').replace('""', 'DoubleQuote')
-            val = val.replace("'", '').replace('"', '')
-            val = val.replace('SingleQuote', "'").replace('DoubleQuote', '"')
-            return val
-
-        if id in skipped_test_ids:
-            return
-
-        fname = nameAdapter.get(funct, funct)
-        if fname == 'rescale':
-            return
-        funct = getattr(self.context, fname)
-        vals = []
-        conglomerate = ''
-        quote = 0
-        theirexceptions = [ErrorNames[x.lower()] for x in exceptions]
-
-        for exception in Signals:
-            self.context.traps[exception] = 1 #Catch these bugs...
-        for exception in theirexceptions:
-            self.context.traps[exception] = 0
-        for i, val in enumerate(valstemp):
-            if val.count("'") % 2 == 1:
-                quote = 1 - quote
-            if quote:
-                conglomerate = conglomerate + ' ' + val
-                continue
-            else:
-                val = conglomerate + val
-                conglomerate = ''
-            v = FixQuotes(val)
-            if fname in ('to_sci_string', 'to_eng_string'):
-                if EXTENDEDERRORTEST:
-                    for error in theirexceptions:
-                        self.context.traps[error] = 1
-                        try:
-                            funct(self.context.create_decimal(v))
-                        except error:
-                            pass
-                        except Signals, e:
-                            self.fail("Raised %s in %s when %s disabled" % \
-                                      (e, s, error))
-                        else:
-                            self.fail("Did not raise %s in %s" % (error, s))
-                        self.context.traps[error] = 0
-                v = self.context.create_decimal(v)
-            else:
-                v = Decimal(v, self.context)
-            vals.append(v)
-
-        ans = FixQuotes(ans)
-
-        if EXTENDEDERRORTEST and fname not in ('to_sci_string', 'to_eng_string'):
-            for error in theirexceptions:
-                self.context.traps[error] = 1
-                try:
-                    funct(*vals)
-                except error:
-                    pass
-                except Signals, e:
-                    self.fail("Raised %s in %s when %s disabled" % \
-                              (e, s, error))
-                else:
-                    self.fail("Did not raise %s in %s" % (error, s))
-                self.context.traps[error] = 0
-
-            # as above, but add traps cumulatively, to check precedence
-            ordered_errors = [e for e in OrderedSignals if e in theirexceptions]
-            for error in ordered_errors:
-                self.context.traps[error] = 1
-                try:
-                    funct(*vals)
-                except error:
-                    pass
-                except Signals, e:
-                    self.fail("Raised %s in %s; expected %s" %
-                              (type(e), s, error))
-                else:
-                    self.fail("Did not raise %s in %s" % (error, s))
-            # reset traps
-            for error in ordered_errors:
-                self.context.traps[error] = 0
-
-
-        if DEBUG:
-            print "--", self.context
-        try:
-            result = str(funct(*vals))
-            if fname in LOGICAL_FUNCTIONS:
-                result = str(int(eval(result))) # 'True', 'False' -> '1', '0'
-        except Signals, error:
-            self.fail("Raised %s in %s" % (error, s))
-        except: #Catch any error long enough to state the test case.
-            print "ERROR:", s
-            raise
-
-        myexceptions = self.getexceptions()
-        self.context.clear_flags()
-
-        self.assertEqual(result, ans,
-                         'Incorrect answer for ' + s + ' -- got ' + result)
-        self.assertItemsEqual(myexceptions, theirexceptions,
-              'Incorrect flags set in ' + s + ' -- got ' + str(myexceptions))
-        return
-
-    def getexceptions(self):
-        return [e for e in Signals if self.context.flags[e]]
-
-    def change_precision(self, prec):
-        self.context.prec = prec
-    def change_rounding_method(self, rounding):
-        self.context.rounding = rounding
-    def change_min_exponent(self, exp):
-        self.context.Emin = exp
-    def change_max_exponent(self, exp):
-        self.context.Emax = exp
-    def change_clamp(self, clamp):
-        self.context._clamp = clamp
-
-
-
-# The following classes test the behaviour of Decimal according to PEP 327
-
-class DecimalExplicitConstructionTest(unittest.TestCase):
-    '''Unit tests for Explicit Construction cases of Decimal.'''
-
-    def test_explicit_empty(self):
-        self.assertEqual(Decimal(), Decimal("0"))
-
-    def test_explicit_from_None(self):
-        self.assertRaises(TypeError, Decimal, None)
-
-    def test_explicit_from_int(self):
-
-        #positive
-        d = Decimal(45)
-        self.assertEqual(str(d), '45')
-
-        #very large positive
-        d = Decimal(500000123)
-        self.assertEqual(str(d), '500000123')
-
-        #negative
-        d = Decimal(-45)
-        self.assertEqual(str(d), '-45')
-
-        #zero
-        d = Decimal(0)
-        self.assertEqual(str(d), '0')
-
-    def test_explicit_from_string(self):
-
-        #empty
-        self.assertEqual(str(Decimal('')), 'NaN')
-
-        #int
-        self.assertEqual(str(Decimal('45')), '45')
-
-        #float
-        self.assertEqual(str(Decimal('45.34')), '45.34')
-
-        #engineer notation
-        self.assertEqual(str(Decimal('45e2')), '4.5E+3')
-
-        #just not a number
-        self.assertEqual(str(Decimal('ugly')), 'NaN')
-
-        #leading and trailing whitespace permitted
-        self.assertEqual(str(Decimal('1.3E4 \n')), '1.3E+4')
-        self.assertEqual(str(Decimal('  -7.89')), '-7.89')
-
-        #unicode strings should be permitted
-        self.assertEqual(str(Decimal(u'0E-017')), '0E-17')
-        self.assertEqual(str(Decimal(u'45')), '45')
-        self.assertEqual(str(Decimal(u'-Inf')), '-Infinity')
-        self.assertEqual(str(Decimal(u'NaN123')), 'NaN123')
-
-    def test_explicit_from_tuples(self):
-
-        #zero
-        d = Decimal( (0, (0,), 0) )
-        self.assertEqual(str(d), '0')
-
-        #int
-        d = Decimal( (1, (4, 5), 0) )
-        self.assertEqual(str(d), '-45')
-
-        #float
-        d = Decimal( (0, (4, 5, 3, 4), -2) )
-        self.assertEqual(str(d), '45.34')
-
-        #weird
-        d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) )
-        self.assertEqual(str(d), '-4.34913534E-17')
-
-        #wrong number of items
-        self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1)) )
-
-        #bad sign
-        self.assertRaises(ValueError, Decimal, (8, (4, 3, 4, 9, 1), 2) )
-        self.assertRaises(ValueError, Decimal, (0., (4, 3, 4, 9, 1), 2) )
-        self.assertRaises(ValueError, Decimal, (Decimal(1), (4, 3, 4, 9, 1), 2))
-
-        #bad exp
-        self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1), 'wrong!') )
-        self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1), 0.) )
-        self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 9, 1), '1') )
-
-        #bad coefficients
-        self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, None, 1), 2) )
-        self.assertRaises(ValueError, Decimal, (1, (4, -3, 4, 9, 1), 2) )
-        self.assertRaises(ValueError, Decimal, (1, (4, 10, 4, 9, 1), 2) )
-        self.assertRaises(ValueError, Decimal, (1, (4, 3, 4, 'a', 1), 2) )
-
-    def test_explicit_from_bool(self):
-        self.assertIs(bool(Decimal(0)), False)
-        self.assertIs(bool(Decimal(1)), True)
-        self.assertEqual(Decimal(False), Decimal(0))
-        self.assertEqual(Decimal(True), Decimal(1))
-
-    def test_explicit_from_Decimal(self):
-
-        #positive
-        d = Decimal(45)
-        e = Decimal(d)
-        self.assertEqual(str(e), '45')
-        self.assertNotEqual(id(d), id(e))
-
-        #very large positive
-        d = Decimal(500000123)
-        e = Decimal(d)
-        self.assertEqual(str(e), '500000123')
-        self.assertNotEqual(id(d), id(e))
-
-        #negative
-        d = Decimal(-45)
-        e = Decimal(d)
-        self.assertEqual(str(e), '-45')
-        self.assertNotEqual(id(d), id(e))
-
-        #zero
-        d = Decimal(0)
-        e = Decimal(d)
-        self.assertEqual(str(e), '0')
-        self.assertNotEqual(id(d), id(e))
-
-    @requires_IEEE_754
-    def test_explicit_from_float(self):
-        r = Decimal(0.1)
-        self.assertEqual(type(r), Decimal)
-        self.assertEqual(str(r),
-                '0.1000000000000000055511151231257827021181583404541015625')
-        self.assertTrue(Decimal(float('nan')).is_qnan())
-        self.assertTrue(Decimal(float('inf')).is_infinite())
-        self.assertTrue(Decimal(float('-inf')).is_infinite())
-        self.assertEqual(str(Decimal(float('nan'))),
-                         str(Decimal('NaN')))
-        self.assertEqual(str(Decimal(float('inf'))),
-                         str(Decimal('Infinity')))
-        self.assertEqual(str(Decimal(float('-inf'))),
-                         str(Decimal('-Infinity')))
-        self.assertEqual(str(Decimal(float('-0.0'))),
-                         str(Decimal('-0')))
-        for i in range(200):
-            x = random.expovariate(0.01) * (random.random() * 2.0 - 1.0)
-            self.assertEqual(x, float(Decimal(x))) # roundtrip
-
-    def test_explicit_context_create_decimal(self):
-
-        nc = copy.copy(getcontext())
-        nc.prec = 3
-
-        # empty
-        d = Decimal()
-        self.assertEqual(str(d), '0')
-        d = nc.create_decimal()
-        self.assertEqual(str(d), '0')
-
-        # from None
-        self.assertRaises(TypeError, nc.create_decimal, None)
-
-        # from int
-        d = nc.create_decimal(456)
-        self.assertIsInstance(d, Decimal)
-        self.assertEqual(nc.create_decimal(45678),
-                         nc.create_decimal('457E+2'))
-
-        # from string
-        d = Decimal('456789')
-        self.assertEqual(str(d), '456789')
-        d = nc.create_decimal('456789')
-        self.assertEqual(str(d), '4.57E+5')
-        # leading and trailing whitespace should result in a NaN;
-        # spaces are already checked in Cowlishaw's test-suite, so
-        # here we just check that a trailing newline results in a NaN
-        self.assertEqual(str(nc.create_decimal('3.14\n')), 'NaN')
-
-        # from tuples
-        d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) )
-        self.assertEqual(str(d), '-4.34913534E-17')
-        d = nc.create_decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) )
-        self.assertEqual(str(d), '-4.35E-17')
-
-        # from Decimal
-        prevdec = Decimal(500000123)
-        d = Decimal(prevdec)
-        self.assertEqual(str(d), '500000123')
-        d = nc.create_decimal(prevdec)
-        self.assertEqual(str(d), '5.00E+8')
-
-    def test_unicode_digits(self):
-        test_values = {
-            u'\uff11': '1',
-            u'\u0660.\u0660\u0663\u0667\u0662e-\u0663' : '0.0000372',
-            u'-nan\u0c68\u0c6a\u0c66\u0c66' : '-NaN2400',
-            }
-        for input, expected in test_values.items():
-            self.assertEqual(str(Decimal(input)), expected)
-
-
-class DecimalImplicitConstructionTest(unittest.TestCase):
-    '''Unit tests for Implicit Construction cases of Decimal.'''
-
-    def test_implicit_from_None(self):
-        self.assertRaises(TypeError, eval, 'Decimal(5) + None', globals())
-
-    def test_implicit_from_int(self):
-        #normal
-        self.assertEqual(str(Decimal(5) + 45), '50')
-        #exceeding precision
-        self.assertEqual(Decimal(5) + 123456789000, Decimal(123456789000))
-
-    def test_implicit_from_string(self):
-        self.assertRaises(TypeError, eval, 'Decimal(5) + "3"', globals())
-
-    def test_implicit_from_float(self):
-        self.assertRaises(TypeError, eval, 'Decimal(5) + 2.2', globals())
-
-    def test_implicit_from_Decimal(self):
-        self.assertEqual(Decimal(5) + Decimal(45), Decimal(50))
-
-    def test_rop(self):
-        # Allow other classes to be trained to interact with Decimals
-        class E:
-            def __divmod__(self, other):
-                return 'divmod ' + str(other)
-            def __rdivmod__(self, other):
-                return str(other) + ' rdivmod'
-            def __lt__(self, other):
-                return 'lt ' + str(other)
-            def __gt__(self, other):
-                return 'gt ' + str(other)
-            def __le__(self, other):
-                return 'le ' + str(other)
-            def __ge__(self, other):
-                return 'ge ' + str(other)
-            def __eq__(self, other):
-                return 'eq ' + str(other)
-            def __ne__(self, other):
-                return 'ne ' + str(other)
-
-        self.assertEqual(divmod(E(), Decimal(10)), 'divmod 10')
-        self.assertEqual(divmod(Decimal(10), E()), '10 rdivmod')
-        self.assertEqual(eval('Decimal(10) < E()'), 'gt 10')
-        self.assertEqual(eval('Decimal(10) > E()'), 'lt 10')
-        self.assertEqual(eval('Decimal(10) <= E()'), 'ge 10')
-        self.assertEqual(eval('Decimal(10) >= E()'), 'le 10')
-        self.assertEqual(eval('Decimal(10) == E()'), 'eq 10')
-        self.assertEqual(eval('Decimal(10) != E()'), 'ne 10')
-
-        # insert operator methods and then exercise them
-        oplist = [
-            ('+', '__add__', '__radd__'),
-            ('-', '__sub__', '__rsub__'),
-            ('*', '__mul__', '__rmul__'),
-            ('%', '__mod__', '__rmod__'),
-            ('//', '__floordiv__', '__rfloordiv__'),
-            ('**', '__pow__', '__rpow__')
-        ]
-        with check_py3k_warnings():
-            if 1 / 2 == 0:
-                # testing with classic division, so add __div__
-                oplist.append(('/', '__div__', '__rdiv__'))
-            else:
-                # testing with -Qnew, so add __truediv__
-                oplist.append(('/', '__truediv__', '__rtruediv__'))
-
-        for sym, lop, rop in oplist:
-            setattr(E, lop, lambda self, other: 'str' + lop + str(other))
-            setattr(E, rop, lambda self, other: str(other) + rop + 'str')
-            self.assertEqual(eval('E()' + sym + 'Decimal(10)'),
-                             'str' + lop + '10')
-            self.assertEqual(eval('Decimal(10)' + sym + 'E()'),
-                             '10' + rop + 'str')
-
-
-class DecimalFormatTest(unittest.TestCase):
-    '''Unit tests for the format function.'''
-    def test_formatting(self):
-        # triples giving a format, a Decimal, and the expected result
-        test_values = [
-            ('e', '0E-15', '0e-15'),
-            ('e', '2.3E-15', '2.3e-15'),
-            ('e', '2.30E+2', '2.30e+2'), # preserve significant zeros
-            ('e', '2.30000E-15', '2.30000e-15'),
-            ('e', '1.23456789123456789e40', '1.23456789123456789e+40'),
-            ('e', '1.5', '1.5e+0'),
-            ('e', '0.15', '1.5e-1'),
-            ('e', '0.015', '1.5e-2'),
-            ('e', '0.0000000000015', '1.5e-12'),
-            ('e', '15.0', '1.50e+1'),
-            ('e', '-15', '-1.5e+1'),
-            ('e', '0', '0e+0'),
-            ('e', '0E1', '0e+1'),
-            ('e', '0.0', '0e-1'),
-            ('e', '0.00', '0e-2'),
-            ('.6e', '0E-15', '0.000000e-9'),
-            ('.6e', '0', '0.000000e+6'),
-            ('.6e', '9.999999', '9.999999e+0'),
-            ('.6e', '9.9999999', '1.000000e+1'),
-            ('.6e', '-1.23e5', '-1.230000e+5'),
-            ('.6e', '1.23456789e-3', '1.234568e-3'),
-            ('f', '0', '0'),
-            ('f', '0.0', '0.0'),
-            ('f', '0E-2', '0.00'),
-            ('f', '0.00E-8', '0.0000000000'),
-            ('f', '0E1', '0'), # loses exponent information
-            ('f', '3.2E1', '32'),
-            ('f', '3.2E2', '320'),
-            ('f', '3.20E2', '320'),
-            ('f', '3.200E2', '320.0'),
-            ('f', '3.2E-6', '0.0000032'),
-            ('.6f', '0E-15', '0.000000'), # all zeros treated equally
-            ('.6f', '0E1', '0.000000'),
-            ('.6f', '0', '0.000000'),
-            ('.0f', '0', '0'), # no decimal point
-            ('.0f', '0e-2', '0'),
-            ('.0f', '3.14159265', '3'),
-            ('.1f', '3.14159265', '3.1'),
-            ('.4f', '3.14159265', '3.1416'),
-            ('.6f', '3.14159265', '3.141593'),
-            ('.7f', '3.14159265', '3.1415926'), # round-half-even!
-            ('.8f', '3.14159265', '3.14159265'),
-            ('.9f', '3.14159265', '3.141592650'),
-
-            ('g', '0', '0'),
-            ('g', '0.0', '0.0'),
-            ('g', '0E1', '0e+1'),
-            ('G', '0E1', '0E+1'),
-            ('g', '0E-5', '0.00000'),
-            ('g', '0E-6', '0.000000'),
-            ('g', '0E-7', '0e-7'),
-            ('g', '-0E2', '-0e+2'),
-            ('.0g', '3.14159265', '3'),  # 0 sig fig -> 1 sig fig
-            ('.1g', '3.14159265', '3'),
-            ('.2g', '3.14159265', '3.1'),
-            ('.5g', '3.14159265', '3.1416'),
-            ('.7g', '3.14159265', '3.141593'),
-            ('.8g', '3.14159265', '3.1415926'), # round-half-even!
-            ('.9g', '3.14159265', '3.14159265'),
-            ('.10g', '3.14159265', '3.14159265'), # don't pad
-
-            ('%', '0E1', '0%'),
-            ('%', '0E0', '0%'),
-            ('%', '0E-1', '0%'),
-            ('%', '0E-2', '0%'),
-            ('%', '0E-3', '0.0%'),
-            ('%', '0E-4', '0.00%'),
-
-            ('.3%', '0', '0.000%'), # all zeros treated equally
-            ('.3%', '0E10', '0.000%'),
-            ('.3%', '0E-10', '0.000%'),
-            ('.3%', '2.34', '234.000%'),
-            ('.3%', '1.234567', '123.457%'),
-            ('.0%', '1.23', '123%'),
-
-            ('e', 'NaN', 'NaN'),
-            ('f', '-NaN123', '-NaN123'),
-            ('+g', 'NaN456', '+NaN456'),
-            ('.3e', 'Inf', 'Infinity'),
-            ('.16f', '-Inf', '-Infinity'),
-            ('.0g', '-sNaN', '-sNaN'),
-
-            ('', '1.00', '1.00'),
-
-            # test alignment and padding
-            ('6', '123', '   123'),
-            ('<6', '123', '123   '),
-            ('>6', '123', '   123'),
-            ('^6', '123', ' 123  '),
-            ('=+6', '123', '+  123'),
-            ('#<10', 'NaN', 'NaN#######'),
-            ('#<10', '-4.3', '-4.3######'),
-            ('#<+10', '0.0130', '+0.0130###'),
-            ('#< 10', '0.0130', ' 0.0130###'),
-            ('@>10', '-Inf', '@-Infinity'),
-            ('#>5', '-Inf', '-Infinity'),
-            ('?^5', '123', '?123?'),
-            ('%^6', '123', '%123%%'),
-            (' ^6', '-45.6', '-45.6 '),
-            ('/=10', '-45.6', '-/////45.6'),
-            ('/=+10', '45.6', '+/////45.6'),
-            ('/= 10', '45.6', ' /////45.6'),
-
-            # thousands separator
-            (',', '1234567', '1,234,567'),
-            (',', '123456', '123,456'),
-            (',', '12345', '12,345'),
-            (',', '1234', '1,234'),
-            (',', '123', '123'),
-            (',', '12', '12'),
-            (',', '1', '1'),
-            (',', '0', '0'),
-            (',', '-1234567', '-1,234,567'),
-            (',', '-123456', '-123,456'),
-            ('7,', '123456', '123,456'),
-            ('8,', '123456', ' 123,456'),
-            ('08,', '123456', '0,123,456'), # special case: extra 0 needed
-            ('+08,', '123456', '+123,456'), # but not if there's a sign
-            (' 08,', '123456', ' 123,456'),
-            ('08,', '-123456', '-123,456'),
-            ('+09,', '123456', '+0,123,456'),
-            # ... with fractional part...
-            ('07,', '1234.56', '1,234.56'),
-            ('08,', '1234.56', '1,234.56'),
-            ('09,', '1234.56', '01,234.56'),
-            ('010,', '1234.56', '001,234.56'),
-            ('011,', '1234.56', '0,001,234.56'),
-            ('012,', '1234.56', '0,001,234.56'),
-            ('08,.1f', '1234.5', '01,234.5'),
-            # no thousands separators in fraction part
-            (',', '1.23456789', '1.23456789'),
-            (',%', '123.456789', '12,345.6789%'),
-            (',e', '123456', '1.23456e+5'),
-            (',E', '123456', '1.23456E+5'),
-
-            # issue 6850
-            ('a=-7.0', '0.12345', 'aaaa0.1'),
-            ]
-        for fmt, d, result in test_values:
-            self.assertEqual(format(Decimal(d), fmt), result)
-
-    def test_n_format(self):
-        try:
-            from locale import CHAR_MAX
-        except ImportError:
-            return
-
-        # Set up some localeconv-like dictionaries
-        en_US = {
-            'decimal_point' : '.',
-            'grouping' : [3, 3, 0],
-            'thousands_sep': ','
-            }
-
-        fr_FR = {
-            'decimal_point' : ',',
-            'grouping' : [CHAR_MAX],
-            'thousands_sep' : ''
-            }
-
-        ru_RU = {
-            'decimal_point' : ',',
-            'grouping' : [3, 3, 0],
-            'thousands_sep' : ' '
-            }
-
-        crazy = {
-            'decimal_point' : '&',
-            'grouping' : [1, 4, 2, CHAR_MAX],
-            'thousands_sep' : '-'
-            }
-
-
-        def get_fmt(x, locale, fmt='n'):
-            return Decimal.__format__(Decimal(x), fmt, _localeconv=locale)
-
-        self.assertEqual(get_fmt(Decimal('12.7'), en_US), '12.7')
-        self.assertEqual(get_fmt(Decimal('12.7'), fr_FR), '12,7')
-        self.assertEqual(get_fmt(Decimal('12.7'), ru_RU), '12,7')
-        self.assertEqual(get_fmt(Decimal('12.7'), crazy), '1-2&7')
-
-        self.assertEqual(get_fmt(123456789, en_US), '123,456,789')
-        self.assertEqual(get_fmt(123456789, fr_FR), '123456789')
-        self.assertEqual(get_fmt(123456789, ru_RU), '123 456 789')
-        self.assertEqual(get_fmt(1234567890123, crazy), '123456-78-9012-3')
-
-        self.assertEqual(get_fmt(123456789, en_US, '.6n'), '1.23457e+8')
-        self.assertEqual(get_fmt(123456789, fr_FR, '.6n'), '1,23457e+8')
-        self.assertEqual(get_fmt(123456789, ru_RU, '.6n'), '1,23457e+8')
-        self.assertEqual(get_fmt(123456789, crazy, '.6n'), '1&23457e+8')
-
-        # zero padding
-        self.assertEqual(get_fmt(1234, fr_FR, '03n'), '1234')
-        self.assertEqual(get_fmt(1234, fr_FR, '04n'), '1234')
-        self.assertEqual(get_fmt(1234, fr_FR, '05n'), '01234')
-        self.assertEqual(get_fmt(1234, fr_FR, '06n'), '001234')
-
-        self.assertEqual(get_fmt(12345, en_US, '05n'), '12,345')
-        self.assertEqual(get_fmt(12345, en_US, '06n'), '12,345')
-        self.assertEqual(get_fmt(12345, en_US, '07n'), '012,345')
-        self.assertEqual(get_fmt(12345, en_US, '08n'), '0,012,345')
-        self.assertEqual(get_fmt(12345, en_US, '09n'), '0,012,345')
-        self.assertEqual(get_fmt(12345, en_US, '010n'), '00,012,345')
-
-        self.assertEqual(get_fmt(123456, crazy, '06n'), '1-2345-6')
-        self.assertEqual(get_fmt(123456, crazy, '07n'), '1-2345-6')
-        self.assertEqual(get_fmt(123456, crazy, '08n'), '1-2345-6')
-        self.assertEqual(get_fmt(123456, crazy, '09n'), '01-2345-6')
-        self.assertEqual(get_fmt(123456, crazy, '010n'), '0-01-2345-6')
-        self.assertEqual(get_fmt(123456, crazy, '011n'), '0-01-2345-6')
-        self.assertEqual(get_fmt(123456, crazy, '012n'), '00-01-2345-6')
-        self.assertEqual(get_fmt(123456, crazy, '013n'), '000-01-2345-6')
-
-
-class DecimalArithmeticOperatorsTest(unittest.TestCase):
-    '''Unit tests for all arithmetic operators, binary and unary.'''
-
-    def test_addition(self):
-
-        d1 = Decimal('-11.1')
-        d2 = Decimal('22.2')
-
-        #two Decimals
-        self.assertEqual(d1+d2, Decimal('11.1'))
-        self.assertEqual(d2+d1, Decimal('11.1'))
-
-        #with other type, left
-        c = d1 + 5
-        self.assertEqual(c, Decimal('-6.1'))
-        self.assertEqual(type(c), type(d1))
-
-        #with other type, right
-        c = 5 + d1
-        self.assertEqual(c, Decimal('-6.1'))
-        self.assertEqual(type(c), type(d1))
-
-        #inline with decimal
-        d1 += d2
-        self.assertEqual(d1, Decimal('11.1'))
-
-        #inline with other type
-        d1 += 5
-        self.assertEqual(d1, Decimal('16.1'))
-
-    def test_subtraction(self):
-
-        d1 = Decimal('-11.1')
-        d2 = Decimal('22.2')
-
-        #two Decimals
-        self.assertEqual(d1-d2, Decimal('-33.3'))
-        self.assertEqual(d2-d1, Decimal('33.3'))
-
-        #with other type, left
-        c = d1 - 5
-        self.assertEqual(c, Decimal('-16.1'))
-        self.assertEqual(type(c), type(d1))
-
-        #with other type, right
-        c = 5 - d1
-        self.assertEqual(c, Decimal('16.1'))
-        self.assertEqual(type(c), type(d1))
-
-        #inline with decimal
-        d1 -= d2
-        self.assertEqual(d1, Decimal('-33.3'))
-
-        #inline with other type
-        d1 -= 5
-        self.assertEqual(d1, Decimal('-38.3'))
-
-    def test_multiplication(self):
-
-        d1 = Decimal('-5')
-        d2 = Decimal('3')
-
-        #two Decimals
-        self.assertEqual(d1*d2, Decimal('-15'))
-        self.assertEqual(d2*d1, Decimal('-15'))
-
-        #with other type, left
-        c = d1 * 5
-        self.assertEqual(c, Decimal('-25'))
-        self.assertEqual(type(c), type(d1))
-
-        #with other type, right
-        c = 5 * d1
-        self.assertEqual(c, Decimal('-25'))
-        self.assertEqual(type(c), type(d1))
-
-        #inline with decimal
-        d1 *= d2
-        self.assertEqual(d1, Decimal('-15'))
-
-        #inline with other type
-        d1 *= 5
-        self.assertEqual(d1, Decimal('-75'))
-
-    def test_division(self):
-
-        d1 = Decimal('-5')
-        d2 = Decimal('2')
-
-        #two Decimals
-        self.assertEqual(d1/d2, Decimal('-2.5'))
-        self.assertEqual(d2/d1, Decimal('-0.4'))
-
-        #with other type, left
-        c = d1 / 4
-        self.assertEqual(c, Decimal('-1.25'))
-        self.assertEqual(type(c), type(d1))
-
-        #with other type, right
-        c = 4 / d1
-        self.assertEqual(c, Decimal('-0.8'))
-        self.assertEqual(type(c), type(d1))
-
-        #inline with decimal
-        d1 /= d2
-        self.assertEqual(d1, Decimal('-2.5'))
-
-        #inline with other type
-        d1 /= 4
-        self.assertEqual(d1, Decimal('-0.625'))
-
-    def test_floor_division(self):
-
-        d1 = Decimal('5')
-        d2 = Decimal('2')
-
-        #two Decimals
-        self.assertEqual(d1//d2, Decimal('2'))
-        self.assertEqual(d2//d1, Decimal('0'))
-
-        #with other type, left
-        c = d1 // 4
-        self.assertEqual(c, Decimal('1'))
-        self.assertEqual(type(c), type(d1))
-
-        #with other type, right
-        c = 7 // d1
-        self.assertEqual(c, Decimal('1'))
-        self.assertEqual(type(c), type(d1))
-
-        #inline with decimal
-        d1 //= d2
-        self.assertEqual(d1, Decimal('2'))
-
-        #inline with other type
-        d1 //= 2
-        self.assertEqual(d1, Decimal('1'))
-
-    def test_powering(self):
-
-        d1 = Decimal('5')
-        d2 = Decimal('2')
-
-        #two Decimals
-        self.assertEqual(d1**d2, Decimal('25'))
-        self.assertEqual(d2**d1, Decimal('32'))
-
-        #with other type, left
-        c = d1 ** 4
-        self.assertEqual(c, Decimal('625'))
-        self.assertEqual(type(c), type(d1))
-
-        #with other type, right
-        c = 7 ** d1
-        self.assertEqual(c, Decimal('16807'))
-        self.assertEqual(type(c), type(d1))
-
-        #inline with decimal
-        d1 **= d2
-        self.assertEqual(d1, Decimal('25'))
-
-        #inline with other type
-        d1 **= 4
-        self.assertEqual(d1, Decimal('390625'))
-
-    def test_module(self):
-
-        d1 = Decimal('5')
-        d2 = Decimal('2')
-
-        #two Decimals
-        self.assertEqual(d1%d2, Decimal('1'))
-        self.assertEqual(d2%d1, Decimal('2'))
-
-        #with other type, left
-        c = d1 % 4
-        self.assertEqual(c, Decimal('1'))
-        self.assertEqual(type(c), type(d1))
-
-        #with other type, right
-        c = 7 % d1
-        self.assertEqual(c, Decimal('2'))
-        self.assertEqual(type(c), type(d1))
-
-        #inline with decimal
-        d1 %= d2
-        self.assertEqual(d1, Decimal('1'))
-
-        #inline with other type
-        d1 %= 4
-        self.assertEqual(d1, Decimal('1'))
-
-    def test_floor_div_module(self):
-
-        d1 = Decimal('5')
-        d2 = Decimal('2')
-
-        #two Decimals
-        (p, q) = divmod(d1, d2)
-        self.assertEqual(p, Decimal('2'))
-        self.assertEqual(q, Decimal('1'))
-        self.assertEqual(type(p), type(d1))
-        self.assertEqual(type(q), type(d1))
-
-        #with other type, left
-        (p, q) = divmod(d1, 4)
-        self.assertEqual(p, Decimal('1'))
-        self.assertEqual(q, Decimal('1'))
-        self.assertEqual(type(p), type(d1))
-        self.assertEqual(type(q), type(d1))
-
-        #with other type, right
-        (p, q) = divmod(7, d1)
-        self.assertEqual(p, Decimal('1'))
-        self.assertEqual(q, Decimal('2'))
-        self.assertEqual(type(p), type(d1))
-        self.assertEqual(type(q), type(d1))
-
-    def test_unary_operators(self):
-        self.assertEqual(+Decimal(45), Decimal(+45))           #  +
-        self.assertEqual(-Decimal(45), Decimal(-45))           #  -
-        self.assertEqual(abs(Decimal(45)), abs(Decimal(-45)))  # abs
-
-    def test_nan_comparisons(self):
-        # comparisons involving signaling nans signal InvalidOperation
-
-        # order comparisons (<, <=, >, >=) involving only quiet nans
-        # also signal InvalidOperation
-
-        # equality comparisons (==, !=) involving only quiet nans
-        # don't signal, but return False or True respectively.
-
-        n = Decimal('NaN')
-        s = Decimal('sNaN')
-        i = Decimal('Inf')
-        f = Decimal('2')
-
-        qnan_pairs = (n, n), (n, i), (i, n), (n, f), (f, n)
-        snan_pairs = (s, n), (n, s), (s, i), (i, s), (s, f), (f, s), (s, s)
-        order_ops = operator.lt, operator.le, operator.gt, operator.ge
-        equality_ops = operator.eq, operator.ne
-
-        # results when InvalidOperation is not trapped
-        for x, y in qnan_pairs + snan_pairs:
-            for op in order_ops + equality_ops:
-                got = op(x, y)
-                expected = True if op is operator.ne else False
-                self.assertIs(expected, got,
-                              "expected {0!r} for operator.{1}({2!r}, {3!r}); "
-                              "got {4!r}".format(
-                        expected, op.__name__, x, y, got))
-
-        # repeat the above, but this time trap the InvalidOperation
-        with localcontext() as ctx:
-            ctx.traps[InvalidOperation] = 1
-
-            for x, y in qnan_pairs:
-                for op in equality_ops:
-                    got = op(x, y)
-                    expected = True if op is operator.ne else False
-                    self.assertIs(expected, got,
-                                  "expected {0!r} for "
-                                  "operator.{1}({2!r}, {3!r}); "
-                                  "got {4!r}".format(
-                            expected, op.__name__, x, y, got))
-
-            for x, y in snan_pairs:
-                for op in equality_ops:
-                    self.assertRaises(InvalidOperation, operator.eq, x, y)
-                    self.assertRaises(InvalidOperation, operator.ne, x, y)
-
-            for x, y in qnan_pairs + snan_pairs:
-                for op in order_ops:
-                    self.assertRaises(InvalidOperation, op, x, y)
-
-    def test_copy_sign(self):
-        d = Decimal(1).copy_sign(Decimal(-2))
-
-        self.assertEqual(Decimal(1).copy_sign(-2), d)
-        self.assertRaises(TypeError, Decimal(1).copy_sign, '-2')
-
-# The following are two functions used to test threading in the next class
-
-def thfunc1(cls):
-    d1 = Decimal(1)
-    d3 = Decimal(3)
-    test1 = d1/d3
-    cls.synchro.wait()
-    test2 = d1/d3
-    cls.finish1.set()
-
-    cls.assertEqual(test1, Decimal('0.3333333333333333333333333333'))
-    cls.assertEqual(test2, Decimal('0.3333333333333333333333333333'))
-    return
-
-def thfunc2(cls):
-    d1 = Decimal(1)
-    d3 = Decimal(3)
-    test1 = d1/d3
-    thiscontext = getcontext()
-    thiscontext.prec = 18
-    test2 = d1/d3
-    cls.synchro.set()
-    cls.finish2.set()
-
-    cls.assertEqual(test1, Decimal('0.3333333333333333333333333333'))
-    cls.assertEqual(test2, Decimal('0.333333333333333333'))
-    return
-
-
-class DecimalUseOfContextTest(unittest.TestCase):
-    '''Unit tests for Use of Context cases in Decimal.'''
-
-    try:
-        import threading
-    except ImportError:
-        threading = None
-
-    # Take care executing this test from IDLE, there's an issue in threading
-    # that hangs IDLE and I couldn't find it
-
-    def test_threading(self):
-        #Test the "threading isolation" of a Context.
-
-        self.synchro = threading.Event()
-        self.finish1 = threading.Event()
-        self.finish2 = threading.Event()
-
-        th1 = threading.Thread(target=thfunc1, args=(self,))
-        th2 = threading.Thread(target=thfunc2, args=(self,))
-
-        th1.start()
-        th2.start()
-
-        self.finish1.wait()
-        self.finish2.wait()
-        return
-
-    if threading is None:
-        del test_threading
-
-
-class DecimalUsabilityTest(unittest.TestCase):
-    '''Unit tests for Usability cases of Decimal.'''
-
-    def test_comparison_operators(self):
-
-        da = Decimal('23.42')
-        db = Decimal('23.42')
-        dc = Decimal('45')
-
-        #two Decimals
-        self.assertGreater(dc, da)
-        self.assertGreaterEqual(dc, da)
-        self.assertLess(da, dc)
-        self.assertLessEqual(da, dc)
-        self.assertEqual(da, db)
-        self.assertNotEqual(da, dc)
-        self.assertLessEqual(da, db)
-        self.assertGreaterEqual(da, db)
-        self.assertEqual(cmp(dc,da), 1)
-        self.assertEqual(cmp(da,dc), -1)
-        self.assertEqual(cmp(da,db), 0)
-
-        #a Decimal and an int
-        self.assertGreater(dc, 23)
-        self.assertLess(23, dc)
-        self.assertEqual(dc, 45)
-        self.assertEqual(cmp(dc,23), 1)
-        self.assertEqual(cmp(23,dc), -1)
-        self.assertEqual(cmp(dc,45), 0)
-
-        #a Decimal and uncomparable
-        self.assertNotEqual(da, 'ugly')
-        self.assertNotEqual(da, 32.7)
-        self.assertNotEqual(da, object())
-        self.assertNotEqual(da, object)
-
-        # sortable
-        a = map(Decimal, xrange(100))
-        b =  a[:]
-        random.shuffle(a)
-        a.sort()
-        self.assertEqual(a, b)
-
-        # with None
-        with check_py3k_warnings():
-            self.assertFalse(Decimal(1) < None)
-            self.assertTrue(Decimal(1) > None)
-
-    def test_decimal_float_comparison(self):
-        da = Decimal('0.25')
-        db = Decimal('3.0')
-        self.assertLess(da, 3.0)
-        self.assertLessEqual(da, 3.0)
-        self.assertGreater(db, 0.25)
-        self.assertGreaterEqual(db, 0.25)
-        self.assertNotEqual(da, 1.5)
-        self.assertEqual(da, 0.25)
-        self.assertGreater(3.0, da)
-        self.assertGreaterEqual(3.0, da)
-        self.assertLess(0.25, db)
-        self.assertLessEqual(0.25, db)
-        self.assertNotEqual(0.25, db)
-        self.assertEqual(3.0, db)
-        self.assertNotEqual(0.1, Decimal('0.1'))
-
-    def test_copy_and_deepcopy_methods(self):
-        d = Decimal('43.24')
-        c = copy.copy(d)
-        self.assertEqual(id(c), id(d))
-        dc = copy.deepcopy(d)
-        self.assertEqual(id(dc), id(d))
-
-    def test_hash_method(self):
-        #just that it's hashable
-        hash(Decimal(23))
-        hash(Decimal('Infinity'))
-        hash(Decimal('-Infinity'))
-        hash(Decimal('nan123'))
-        hash(Decimal('-NaN'))
-
-        test_values = [Decimal(sign*(2**m + n))
-                       for m in [0, 14, 15, 16, 17, 30, 31,
-                                 32, 33, 62, 63, 64, 65, 66]
-                       for n in range(-10, 10)
-                       for sign in [-1, 1]]
-        test_values.extend([
-                Decimal("-0"), # zeros
-                Decimal("0.00"),
-                Decimal("-0.000"),
-                Decimal("0E10"),
-                Decimal("-0E12"),
-                Decimal("10.0"), # negative exponent
-                Decimal("-23.00000"),
-                Decimal("1230E100"), # positive exponent
-                Decimal("-4.5678E50"),
-                # a value for which hash(n) != hash(n % (2**64-1))
-                # in Python pre-2.6
-                Decimal(2**64 + 2**32 - 1),
-                # selection of values which fail with the old (before
-                # version 2.6) long.__hash__
-                Decimal("1.634E100"),
-                Decimal("90.697E100"),
-                Decimal("188.83E100"),
-                Decimal("1652.9E100"),
-                Decimal("56531E100"),
-                ])
-
-        # check that hash(d) == hash(int(d)) for integral values
-        for value in test_values:
-            self.assertEqual(hash(value), hash(int(value)))
-
-        #the same hash that to an int
-        self.assertEqual(hash(Decimal(23)), hash(23))
-        self.assertRaises(TypeError, hash, Decimal('sNaN'))
-        self.assertTrue(hash(Decimal('Inf')))
-        self.assertTrue(hash(Decimal('-Inf')))
-
-        # check that the hashes of a Decimal float match when they
-        # represent exactly the same values
-        test_strings = ['inf', '-Inf', '0.0', '-.0e1',
-                        '34.0', '2.5', '112390.625', '-0.515625']
-        for s in test_strings:
-            f = float(s)
-            d = Decimal(s)
-            self.assertEqual(hash(f), hash(d))
-
-        # check that the value of the hash doesn't depend on the
-        # current context (issue #1757)
-        c = getcontext()
-        old_precision = c.prec
-        x = Decimal("123456789.1")
-
-        c.prec = 6
-        h1 = hash(x)
-        c.prec = 10
-        h2 = hash(x)
-        c.prec = 16
-        h3 = hash(x)
-
-        self.assertEqual(h1, h2)
-        self.assertEqual(h1, h3)
-        c.prec = old_precision
-
-    def test_min_and_max_methods(self):
-
-        d1 = Decimal('15.32')
-        d2 = Decimal('28.5')
-        l1 = 15
-        l2 = 28
-
-        #between Decimals
-        self.assertIs(min(d1,d2), d1)
-        self.assertIs(min(d2,d1), d1)
-        self.assertIs(max(d1,d2), d2)
-        self.assertIs(max(d2,d1), d2)
-
-        #between Decimal and long
-        self.assertIs(min(d1,l2), d1)
-        self.assertIs(min(l2,d1), d1)
-        self.assertIs(max(l1,d2), d2)
-        self.assertIs(max(d2,l1), d2)
-
-    def test_as_nonzero(self):
-        #as false
-        self.assertFalse(Decimal(0))
-        #as true
-        self.assertTrue(Decimal('0.372'))
-
-    def test_tostring_methods(self):
-        #Test str and repr methods.
-
-        d = Decimal('15.32')
-        self.assertEqual(str(d), '15.32')               # str
-        self.assertEqual(repr(d), "Decimal('15.32')")   # repr
-
-        # result type of string methods should be str, not unicode
-        unicode_inputs = [u'123.4', u'0.5E2', u'Infinity', u'sNaN',
-                          u'-0.0E100', u'-NaN001', u'-Inf']
-
-        for u in unicode_inputs:
-            d = Decimal(u)
-            self.assertEqual(type(str(d)), str)
-            self.assertEqual(type(repr(d)), str)
-            self.assertEqual(type(d.to_eng_string()), str)
-
-    def test_tonum_methods(self):
-        #Test float, int and long methods.
-
-        d1 = Decimal('66')
-        d2 = Decimal('15.32')
-
-        #int
-        self.assertEqual(int(d1), 66)
-        self.assertEqual(int(d2), 15)
-
-        #long
-        self.assertEqual(long(d1), 66)
-        self.assertEqual(long(d2), 15)
-
-        #float
-        self.assertEqual(float(d1), 66)
-        self.assertEqual(float(d2), 15.32)
-
-    def test_eval_round_trip(self):
-
-        #with zero
-        d = Decimal( (0, (0,), 0) )
-        self.assertEqual(d, eval(repr(d)))
-
-        #int
-        d = Decimal( (1, (4, 5), 0) )
-        self.assertEqual(d, eval(repr(d)))
-
-        #float
-        d = Decimal( (0, (4, 5, 3, 4), -2) )
-        self.assertEqual(d, eval(repr(d)))
-
-        #weird
-        d = Decimal( (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) )
-        self.assertEqual(d, eval(repr(d)))
-
-    def test_as_tuple(self):
-
-        #with zero
-        d = Decimal(0)
-        self.assertEqual(d.as_tuple(), (0, (0,), 0) )
-
-        #int
-        d = Decimal(-45)
-        self.assertEqual(d.as_tuple(), (1, (4, 5), 0) )
-
-        #complicated string
-        d = Decimal("-4.34913534E-17")
-        self.assertEqual(d.as_tuple(), (1, (4, 3, 4, 9, 1, 3, 5, 3, 4), -25) )
-
-        #inf
-        d = Decimal("Infinity")
-        self.assertEqual(d.as_tuple(), (0, (0,), 'F') )
-
-        #leading zeros in coefficient should be stripped
-        d = Decimal( (0, (0, 0, 4, 0, 5, 3, 4), -2) )
-        self.assertEqual(d.as_tuple(), (0, (4, 0, 5, 3, 4), -2) )
-        d = Decimal( (1, (0, 0, 0), 37) )
-        self.assertEqual(d.as_tuple(), (1, (0,), 37))
-        d = Decimal( (1, (), 37) )
-        self.assertEqual(d.as_tuple(), (1, (0,), 37))
-
-        #leading zeros in NaN diagnostic info should be stripped
-        d = Decimal( (0, (0, 0, 4, 0, 5, 3, 4), 'n') )
-        self.assertEqual(d.as_tuple(), (0, (4, 0, 5, 3, 4), 'n') )
-        d = Decimal( (1, (0, 0, 0), 'N') )
-        self.assertEqual(d.as_tuple(), (1, (), 'N') )
-        d = Decimal( (1, (), 'n') )
-        self.assertEqual(d.as_tuple(), (1, (), 'n') )
-
-        #coefficient in infinity should be ignored
-        d = Decimal( (0, (4, 5, 3, 4), 'F') )
-        self.assertEqual(d.as_tuple(), (0, (0,), 'F'))
-        d = Decimal( (1, (0, 2, 7, 1), 'F') )
-        self.assertEqual(d.as_tuple(), (1, (0,), 'F'))
-
-    def test_immutability_operations(self):
-        # Do operations and check that it didn't change change internal objects.
-
-        d1 = Decimal('-25e55')
-        b1 = Decimal('-25e55')
-        d2 = Decimal('33e+33')
-        b2 = Decimal('33e+33')
-
-        def checkSameDec(operation, useOther=False):
-            if useOther:
-                eval("d1." + operation + "(d2)")
-                self.assertEqual(d1._sign, b1._sign)
-                self.assertEqual(d1._int, b1._int)
-                self.assertEqual(d1._exp, b1._exp)
-                self.assertEqual(d2._sign, b2._sign)
-                self.assertEqual(d2._int, b2._int)
-                self.assertEqual(d2._exp, b2._exp)
-            else:
-                eval("d1." + operation + "()")
-                self.assertEqual(d1._sign, b1._sign)
-                self.assertEqual(d1._int, b1._int)
-                self.assertEqual(d1._exp, b1._exp)
-            return
-
-        Decimal(d1)
-        self.assertEqual(d1._sign, b1._sign)
-        self.assertEqual(d1._int, b1._int)
-        self.assertEqual(d1._exp, b1._exp)
-
-        checkSameDec("__abs__")
-        checkSameDec("__add__", True)
-        checkSameDec("__div__", True)
-        checkSameDec("__divmod__", True)
-        checkSameDec("__eq__", True)
-        checkSameDec("__ne__", True)
-        checkSameDec("__le__", True)
-        checkSameDec("__lt__", True)
-        checkSameDec("__ge__", True)
-        checkSameDec("__gt__", True)
-        checkSameDec("__float__")
-        checkSameDec("__floordiv__", True)
-        checkSameDec("__hash__")
-        checkSameDec("__int__")
-        checkSameDec("__trunc__")
-        checkSameDec("__long__")
-        checkSameDec("__mod__", True)
-        checkSameDec("__mul__", True)
-        checkSameDec("__neg__")
-        checkSameDec("__nonzero__")
-        checkSameDec("__pos__")
-        checkSameDec("__pow__", True)
-        checkSameDec("__radd__", True)
-        checkSameDec("__rdiv__", True)
-        checkSameDec("__rdivmod__", True)
-        checkSameDec("__repr__")
-        checkSameDec("__rfloordiv__", True)
-        checkSameDec("__rmod__", True)
-        checkSameDec("__rmul__", True)
-        checkSameDec("__rpow__", True)
-        checkSameDec("__rsub__", True)
-        checkSameDec("__str__")
-        checkSameDec("__sub__", True)
-        checkSameDec("__truediv__", True)
-        checkSameDec("adjusted")
-        checkSameDec("as_tuple")
-        checkSameDec("compare", True)
-        checkSameDec("max", True)
-        checkSameDec("min", True)
-        checkSameDec("normalize")
-        checkSameDec("quantize", True)
-        checkSameDec("remainder_near", True)
-        checkSameDec("same_quantum", True)
-        checkSameDec("sqrt")
-        checkSameDec("to_eng_string")
-        checkSameDec("to_integral")
-
-    def test_subclassing(self):
-        # Different behaviours when subclassing Decimal
-
-        class MyDecimal(Decimal):
-            pass
-
-        d1 = MyDecimal(1)
-        d2 = MyDecimal(2)
-        d = d1 + d2
-        self.assertIs(type(d), Decimal)
-
-        d = d1.max(d2)
-        self.assertIs(type(d), Decimal)
-
-    def test_implicit_context(self):
-        # Check results when context given implicitly.  (Issue 2478)
-        c = getcontext()
-        self.assertEqual(str(Decimal(0).sqrt()),
-                         str(c.sqrt(Decimal(0))))
-
-    def test_conversions_from_int(self):
-        # Check that methods taking a second Decimal argument will
-        # always accept an integer in place of a Decimal.
-        self.assertEqual(Decimal(4).compare(3),
-                         Decimal(4).compare(Decimal(3)))
-        self.assertEqual(Decimal(4).compare_signal(3),
-                         Decimal(4).compare_signal(Decimal(3)))
-        self.assertEqual(Decimal(4).compare_total(3),
-                         Decimal(4).compare_total(Decimal(3)))
-        self.assertEqual(Decimal(4).compare_total_mag(3),
-                         Decimal(4).compare_total_mag(Decimal(3)))
-        self.assertEqual(Decimal(10101).logical_and(1001),
-                         Decimal(10101).logical_and(Decimal(1001)))
-        self.assertEqual(Decimal(10101).logical_or(1001),
-                         Decimal(10101).logical_or(Decimal(1001)))
-        self.assertEqual(Decimal(10101).logical_xor(1001),
-                         Decimal(10101).logical_xor(Decimal(1001)))
-        self.assertEqual(Decimal(567).max(123),
-                         Decimal(567).max(Decimal(123)))
-        self.assertEqual(Decimal(567).max_mag(123),
-                         Decimal(567).max_mag(Decimal(123)))
-        self.assertEqual(Decimal(567).min(123),
-                         Decimal(567).min(Decimal(123)))
-        self.assertEqual(Decimal(567).min_mag(123),
-                         Decimal(567).min_mag(Decimal(123)))
-        self.assertEqual(Decimal(567).next_toward(123),
-                         Decimal(567).next_toward(Decimal(123)))
-        self.assertEqual(Decimal(1234).quantize(100),
-                         Decimal(1234).quantize(Decimal(100)))
-        self.assertEqual(Decimal(768).remainder_near(1234),
-                         Decimal(768).remainder_near(Decimal(1234)))
-        self.assertEqual(Decimal(123).rotate(1),
-                         Decimal(123).rotate(Decimal(1)))
-        self.assertEqual(Decimal(1234).same_quantum(1000),
-                         Decimal(1234).same_quantum(Decimal(1000)))
-        self.assertEqual(Decimal('9.123').scaleb(-100),
-                         Decimal('9.123').scaleb(Decimal(-100)))
-        self.assertEqual(Decimal(456).shift(-1),
-                         Decimal(456).shift(Decimal(-1)))
-
-        self.assertEqual(Decimal(-12).fma(Decimal(45), 67),
-                         Decimal(-12).fma(Decimal(45), Decimal(67)))
-        self.assertEqual(Decimal(-12).fma(45, 67),
-                         Decimal(-12).fma(Decimal(45), Decimal(67)))
-        self.assertEqual(Decimal(-12).fma(45, Decimal(67)),
-                         Decimal(-12).fma(Decimal(45), Decimal(67)))
-
-
-class DecimalPythonAPItests(unittest.TestCase):
-
-    def test_abc(self):
-        self.assertTrue(issubclass(Decimal, numbers.Number))
-        self.assertFalse(issubclass(Decimal, numbers.Real))
-        self.assertIsInstance(Decimal(0), numbers.Number)
-        self.assertNotIsInstance(Decimal(0), numbers.Real)
-
-    def test_pickle(self):
-        d = Decimal('-3.141590000')
-        p = pickle.dumps(d)
-        e = pickle.loads(p)
-        self.assertEqual(d, e)
-
-    def test_int(self):
-        for x in range(-250, 250):
-            s = '%0.2f' % (x / 100.0)
-            # should work the same as for floats
-            self.assertEqual(int(Decimal(s)), int(float(s)))
-            # should work the same as to_integral in the ROUND_DOWN mode
-            d = Decimal(s)
-            r = d.to_integral(ROUND_DOWN)
-            self.assertEqual(Decimal(int(d)), r)
-
-        self.assertRaises(ValueError, int, Decimal('-nan'))
-        self.assertRaises(ValueError, int, Decimal('snan'))
-        self.assertRaises(OverflowError, int, Decimal('inf'))
-        self.assertRaises(OverflowError, int, Decimal('-inf'))
-
-        self.assertRaises(ValueError, long, Decimal('-nan'))
-        self.assertRaises(ValueError, long, Decimal('snan'))
-        self.assertRaises(OverflowError, long, Decimal('inf'))
-        self.assertRaises(OverflowError, long, Decimal('-inf'))
-
-    def test_trunc(self):
-        for x in range(-250, 250):
-            s = '%0.2f' % (x / 100.0)
-            # should work the same as for floats
-            self.assertEqual(int(Decimal(s)), int(float(s)))
-            # should work the same as to_integral in the ROUND_DOWN mode
-            d = Decimal(s)
-            r = d.to_integral(ROUND_DOWN)
-            self.assertEqual(Decimal(math.trunc(d)), r)
-
-    def test_from_float(self):
-
-        class  MyDecimal(Decimal):
-            pass
-
-        r = MyDecimal.from_float(0.1)
-        self.assertEqual(type(r), MyDecimal)
-        self.assertEqual(str(r),
-                '0.1000000000000000055511151231257827021181583404541015625')
-        bigint = 12345678901234567890123456789
-        self.assertEqual(MyDecimal.from_float(bigint), MyDecimal(bigint))
-        self.assertTrue(MyDecimal.from_float(float('nan')).is_qnan())
-        self.assertTrue(MyDecimal.from_float(float('inf')).is_infinite())
-        self.assertTrue(MyDecimal.from_float(float('-inf')).is_infinite())
-        self.assertEqual(str(MyDecimal.from_float(float('nan'))),
-                         str(Decimal('NaN')))
-        self.assertEqual(str(MyDecimal.from_float(float('inf'))),
-                         str(Decimal('Infinity')))
-        self.assertEqual(str(MyDecimal.from_float(float('-inf'))),
-                         str(Decimal('-Infinity')))
-        self.assertRaises(TypeError, MyDecimal.from_float, 'abc')
-        for i in range(200):
-            x = random.expovariate(0.01) * (random.random() * 2.0 - 1.0)
-            self.assertEqual(x, float(MyDecimal.from_float(x))) # roundtrip
-
-    def test_create_decimal_from_float(self):
-        context = Context(prec=5, rounding=ROUND_DOWN)
-        self.assertEqual(
-            context.create_decimal_from_float(math.pi),
-            Decimal('3.1415')
-        )
-        context = Context(prec=5, rounding=ROUND_UP)
-        self.assertEqual(
-            context.create_decimal_from_float(math.pi),
-            Decimal('3.1416')
-        )
-        context = Context(prec=5, traps=[Inexact])
-        self.assertRaises(
-            Inexact,
-            context.create_decimal_from_float,
-            math.pi
-        )
-        self.assertEqual(repr(context.create_decimal_from_float(-0.0)),
-                         "Decimal('-0')")
-        self.assertEqual(repr(context.create_decimal_from_float(1.0)),
-                         "Decimal('1')")
-        self.assertEqual(repr(context.create_decimal_from_float(10)),
-                         "Decimal('10')")
-
-class ContextAPItests(unittest.TestCase):
-
-    def test_pickle(self):
-        c = Context()
-        e = pickle.loads(pickle.dumps(c))
-        for k in vars(c):
-            v1 = vars(c)[k]
-            v2 = vars(e)[k]
-            self.assertEqual(v1, v2)
-
-    def test_equality_with_other_types(self):
-        self.assertIn(Decimal(10), ['a', 1.0, Decimal(10), (1,2), {}])
-        self.assertNotIn(Decimal(10), ['a', 1.0, (1,2), {}])
-
-    def test_copy(self):
-        # All copies should be deep
-        c = Context()
-        d = c.copy()
-        self.assertNotEqual(id(c), id(d))
-        self.assertNotEqual(id(c.flags), id(d.flags))
-        self.assertNotEqual(id(c.traps), id(d.traps))
-
-    def test_abs(self):
-        c = Context()
-        d = c.abs(Decimal(-1))
-        self.assertEqual(c.abs(-1), d)
-        self.assertRaises(TypeError, c.abs, '-1')
-
-    def test_add(self):
-        c = Context()
-        d = c.add(Decimal(1), Decimal(1))
-        self.assertEqual(c.add(1, 1), d)
-        self.assertEqual(c.add(Decimal(1), 1), d)
-        self.assertEqual(c.add(1, Decimal(1)), d)
-        self.assertRaises(TypeError, c.add, '1', 1)
-        self.assertRaises(TypeError, c.add, 1, '1')
-
-    def test_compare(self):
-        c = Context()
-        d = c.compare(Decimal(1), Decimal(1))
-        self.assertEqual(c.compare(1, 1), d)
-        self.assertEqual(c.compare(Decimal(1), 1), d)
-        self.assertEqual(c.compare(1, Decimal(1)), d)
-        self.assertRaises(TypeError, c.compare, '1', 1)
-        self.assertRaises(TypeError, c.compare, 1, '1')
-
-    def test_compare_signal(self):
-        c = Context()
-        d = c.compare_signal(Decimal(1), Decimal(1))
-        self.assertEqual(c.compare_signal(1, 1), d)
-        self.assertEqual(c.compare_signal(Decimal(1), 1), d)
-        self.assertEqual(c.compare_signal(1, Decimal(1)), d)
-        self.assertRaises(TypeError, c.compare_signal, '1', 1)
-        self.assertRaises(TypeError, c.compare_signal, 1, '1')
-
-    def test_compare_total(self):
-        c = Context()
-        d = c.compare_total(Decimal(1), Decimal(1))
-        self.assertEqual(c.compare_total(1, 1), d)
-        self.assertEqual(c.compare_total(Decimal(1), 1), d)
-        self.assertEqual(c.compare_total(1, Decimal(1)), d)
-        self.assertRaises(TypeError, c.compare_total, '1', 1)
-        self.assertRaises(TypeError, c.compare_total, 1, '1')
-
-    def test_compare_total_mag(self):
-        c = Context()
-        d = c.compare_total_mag(Decimal(1), Decimal(1))
-        self.assertEqual(c.compare_total_mag(1, 1), d)
-        self.assertEqual(c.compare_total_mag(Decimal(1), 1), d)
-        self.assertEqual(c.compare_total_mag(1, Decimal(1)), d)
-        self.assertRaises(TypeError, c.compare_total_mag, '1', 1)
-        self.assertRaises(TypeError, c.compare_total_mag, 1, '1')
-
-    def test_copy_abs(self):
-        c = Context()
-        d = c.copy_abs(Decimal(-1))
-        self.assertEqual(c.copy_abs(-1), d)
-        self.assertRaises(TypeError, c.copy_abs, '-1')
-
-    def test_copy_decimal(self):
-        c = Context()
-        d = c.copy_decimal(Decimal(-1))
-        self.assertEqual(c.copy_decimal(-1), d)
-        self.assertRaises(TypeError, c.copy_decimal, '-1')
-
-    def test_copy_negate(self):
-        c = Context()
-        d = c.copy_negate(Decimal(-1))
-        self.assertEqual(c.copy_negate(-1), d)
-        self.assertRaises(TypeError, c.copy_negate, '-1')
-
-    def test_copy_sign(self):
-        c = Context()
-        d = c.copy_sign(Decimal(1), Decimal(-2))
-        self.assertEqual(c.copy_sign(1, -2), d)
-        self.assertEqual(c.copy_sign(Decimal(1), -2), d)
-        self.assertEqual(c.copy_sign(1, Decimal(-2)), d)
-        self.assertRaises(TypeError, c.copy_sign, '1', -2)
-        self.assertRaises(TypeError, c.copy_sign, 1, '-2')
-
-    def test_divide(self):
-        c = Context()
-        d = c.divide(Decimal(1), Decimal(2))
-        self.assertEqual(c.divide(1, 2), d)
-        self.assertEqual(c.divide(Decimal(1), 2), d)
-        self.assertEqual(c.divide(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.divide, '1', 2)
-        self.assertRaises(TypeError, c.divide, 1, '2')
-
-    def test_divide_int(self):
-        c = Context()
-        d = c.divide_int(Decimal(1), Decimal(2))
-        self.assertEqual(c.divide_int(1, 2), d)
-        self.assertEqual(c.divide_int(Decimal(1), 2), d)
-        self.assertEqual(c.divide_int(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.divide_int, '1', 2)
-        self.assertRaises(TypeError, c.divide_int, 1, '2')
-
-    def test_divmod(self):
-        c = Context()
-        d = c.divmod(Decimal(1), Decimal(2))
-        self.assertEqual(c.divmod(1, 2), d)
-        self.assertEqual(c.divmod(Decimal(1), 2), d)
-        self.assertEqual(c.divmod(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.divmod, '1', 2)
-        self.assertRaises(TypeError, c.divmod, 1, '2')
-
-    def test_exp(self):
-        c = Context()
-        d = c.exp(Decimal(10))
-        self.assertEqual(c.exp(10), d)
-        self.assertRaises(TypeError, c.exp, '10')
-
-    def test_fma(self):
-        c = Context()
-        d = c.fma(Decimal(2), Decimal(3), Decimal(4))
-        self.assertEqual(c.fma(2, 3, 4), d)
-        self.assertEqual(c.fma(Decimal(2), 3, 4), d)
-        self.assertEqual(c.fma(2, Decimal(3), 4), d)
-        self.assertEqual(c.fma(2, 3, Decimal(4)), d)
-        self.assertEqual(c.fma(Decimal(2), Decimal(3), 4), d)
-        self.assertRaises(TypeError, c.fma, '2', 3, 4)
-        self.assertRaises(TypeError, c.fma, 2, '3', 4)
-        self.assertRaises(TypeError, c.fma, 2, 3, '4')
-
-    def test_is_finite(self):
-        c = Context()
-        d = c.is_finite(Decimal(10))
-        self.assertEqual(c.is_finite(10), d)
-        self.assertRaises(TypeError, c.is_finite, '10')
-
-    def test_is_infinite(self):
-        c = Context()
-        d = c.is_infinite(Decimal(10))
-        self.assertEqual(c.is_infinite(10), d)
-        self.assertRaises(TypeError, c.is_infinite, '10')
-
-    def test_is_nan(self):
-        c = Context()
-        d = c.is_nan(Decimal(10))
-        self.assertEqual(c.is_nan(10), d)
-        self.assertRaises(TypeError, c.is_nan, '10')
-
-    def test_is_normal(self):
-        c = Context()
-        d = c.is_normal(Decimal(10))
-        self.assertEqual(c.is_normal(10), d)
-        self.assertRaises(TypeError, c.is_normal, '10')
-
-    def test_is_qnan(self):
-        c = Context()
-        d = c.is_qnan(Decimal(10))
-        self.assertEqual(c.is_qnan(10), d)
-        self.assertRaises(TypeError, c.is_qnan, '10')
-
-    def test_is_signed(self):
-        c = Context()
-        d = c.is_signed(Decimal(10))
-        self.assertEqual(c.is_signed(10), d)
-        self.assertRaises(TypeError, c.is_signed, '10')
-
-    def test_is_snan(self):
-        c = Context()
-        d = c.is_snan(Decimal(10))
-        self.assertEqual(c.is_snan(10), d)
-        self.assertRaises(TypeError, c.is_snan, '10')
-
-    def test_is_subnormal(self):
-        c = Context()
-        d = c.is_subnormal(Decimal(10))
-        self.assertEqual(c.is_subnormal(10), d)
-        self.assertRaises(TypeError, c.is_subnormal, '10')
-
-    def test_is_zero(self):
-        c = Context()
-        d = c.is_zero(Decimal(10))
-        self.assertEqual(c.is_zero(10), d)
-        self.assertRaises(TypeError, c.is_zero, '10')
-
-    def test_ln(self):
-        c = Context()
-        d = c.ln(Decimal(10))
-        self.assertEqual(c.ln(10), d)
-        self.assertRaises(TypeError, c.ln, '10')
-
-    def test_log10(self):
-        c = Context()
-        d = c.log10(Decimal(10))
-        self.assertEqual(c.log10(10), d)
-        self.assertRaises(TypeError, c.log10, '10')
-
-    def test_logb(self):
-        c = Context()
-        d = c.logb(Decimal(10))
-        self.assertEqual(c.logb(10), d)
-        self.assertRaises(TypeError, c.logb, '10')
-
-    def test_logical_and(self):
-        c = Context()
-        d = c.logical_and(Decimal(1), Decimal(1))
-        self.assertEqual(c.logical_and(1, 1), d)
-        self.assertEqual(c.logical_and(Decimal(1), 1), d)
-        self.assertEqual(c.logical_and(1, Decimal(1)), d)
-        self.assertRaises(TypeError, c.logical_and, '1', 1)
-        self.assertRaises(TypeError, c.logical_and, 1, '1')
-
-    def test_logical_invert(self):
-        c = Context()
-        d = c.logical_invert(Decimal(1000))
-        self.assertEqual(c.logical_invert(1000), d)
-        self.assertRaises(TypeError, c.logical_invert, '1000')
-
-    def test_logical_or(self):
-        c = Context()
-        d = c.logical_or(Decimal(1), Decimal(1))
-        self.assertEqual(c.logical_or(1, 1), d)
-        self.assertEqual(c.logical_or(Decimal(1), 1), d)
-        self.assertEqual(c.logical_or(1, Decimal(1)), d)
-        self.assertRaises(TypeError, c.logical_or, '1', 1)
-        self.assertRaises(TypeError, c.logical_or, 1, '1')
-
-    def test_logical_xor(self):
-        c = Context()
-        d = c.logical_xor(Decimal(1), Decimal(1))
-        self.assertEqual(c.logical_xor(1, 1), d)
-        self.assertEqual(c.logical_xor(Decimal(1), 1), d)
-        self.assertEqual(c.logical_xor(1, Decimal(1)), d)
-        self.assertRaises(TypeError, c.logical_xor, '1', 1)
-        self.assertRaises(TypeError, c.logical_xor, 1, '1')
-
-    def test_max(self):
-        c = Context()
-        d = c.max(Decimal(1), Decimal(2))
-        self.assertEqual(c.max(1, 2), d)
-        self.assertEqual(c.max(Decimal(1), 2), d)
-        self.assertEqual(c.max(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.max, '1', 2)
-        self.assertRaises(TypeError, c.max, 1, '2')
-
-    def test_max_mag(self):
-        c = Context()
-        d = c.max_mag(Decimal(1), Decimal(2))
-        self.assertEqual(c.max_mag(1, 2), d)
-        self.assertEqual(c.max_mag(Decimal(1), 2), d)
-        self.assertEqual(c.max_mag(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.max_mag, '1', 2)
-        self.assertRaises(TypeError, c.max_mag, 1, '2')
-
-    def test_min(self):
-        c = Context()
-        d = c.min(Decimal(1), Decimal(2))
-        self.assertEqual(c.min(1, 2), d)
-        self.assertEqual(c.min(Decimal(1), 2), d)
-        self.assertEqual(c.min(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.min, '1', 2)
-        self.assertRaises(TypeError, c.min, 1, '2')
-
-    def test_min_mag(self):
-        c = Context()
-        d = c.min_mag(Decimal(1), Decimal(2))
-        self.assertEqual(c.min_mag(1, 2), d)
-        self.assertEqual(c.min_mag(Decimal(1), 2), d)
-        self.assertEqual(c.min_mag(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.min_mag, '1', 2)
-        self.assertRaises(TypeError, c.min_mag, 1, '2')
-
-    def test_minus(self):
-        c = Context()
-        d = c.minus(Decimal(10))
-        self.assertEqual(c.minus(10), d)
-        self.assertRaises(TypeError, c.minus, '10')
-
-    def test_multiply(self):
-        c = Context()
-        d = c.multiply(Decimal(1), Decimal(2))
-        self.assertEqual(c.multiply(1, 2), d)
-        self.assertEqual(c.multiply(Decimal(1), 2), d)
-        self.assertEqual(c.multiply(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.multiply, '1', 2)
-        self.assertRaises(TypeError, c.multiply, 1, '2')
-
-    def test_next_minus(self):
-        c = Context()
-        d = c.next_minus(Decimal(10))
-        self.assertEqual(c.next_minus(10), d)
-        self.assertRaises(TypeError, c.next_minus, '10')
-
-    def test_next_plus(self):
-        c = Context()
-        d = c.next_plus(Decimal(10))
-        self.assertEqual(c.next_plus(10), d)
-        self.assertRaises(TypeError, c.next_plus, '10')
-
-    def test_next_toward(self):
-        c = Context()
-        d = c.next_toward(Decimal(1), Decimal(2))
-        self.assertEqual(c.next_toward(1, 2), d)
-        self.assertEqual(c.next_toward(Decimal(1), 2), d)
-        self.assertEqual(c.next_toward(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.next_toward, '1', 2)
-        self.assertRaises(TypeError, c.next_toward, 1, '2')
-
-    def test_normalize(self):
-        c = Context()
-        d = c.normalize(Decimal(10))
-        self.assertEqual(c.normalize(10), d)
-        self.assertRaises(TypeError, c.normalize, '10')
-
-    def test_number_class(self):
-        c = Context()
-        self.assertEqual(c.number_class(123), c.number_class(Decimal(123)))
-        self.assertEqual(c.number_class(0), c.number_class(Decimal(0)))
-        self.assertEqual(c.number_class(-45), c.number_class(Decimal(-45)))
-
-    def test_power(self):
-        c = Context()
-        d = c.power(Decimal(1), Decimal(4), Decimal(2))
-        self.assertEqual(c.power(1, 4, 2), d)
-        self.assertEqual(c.power(Decimal(1), 4, 2), d)
-        self.assertEqual(c.power(1, Decimal(4), 2), d)
-        self.assertEqual(c.power(1, 4, Decimal(2)), d)
-        self.assertEqual(c.power(Decimal(1), Decimal(4), 2), d)
-        self.assertRaises(TypeError, c.power, '1', 4, 2)
-        self.assertRaises(TypeError, c.power, 1, '4', 2)
-        self.assertRaises(TypeError, c.power, 1, 4, '2')
-
-    def test_plus(self):
-        c = Context()
-        d = c.plus(Decimal(10))
-        self.assertEqual(c.plus(10), d)
-        self.assertRaises(TypeError, c.plus, '10')
-
-    def test_quantize(self):
-        c = Context()
-        d = c.quantize(Decimal(1), Decimal(2))
-        self.assertEqual(c.quantize(1, 2), d)
-        self.assertEqual(c.quantize(Decimal(1), 2), d)
-        self.assertEqual(c.quantize(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.quantize, '1', 2)
-        self.assertRaises(TypeError, c.quantize, 1, '2')
-
-    def test_remainder(self):
-        c = Context()
-        d = c.remainder(Decimal(1), Decimal(2))
-        self.assertEqual(c.remainder(1, 2), d)
-        self.assertEqual(c.remainder(Decimal(1), 2), d)
-        self.assertEqual(c.remainder(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.remainder, '1', 2)
-        self.assertRaises(TypeError, c.remainder, 1, '2')
-
-    def test_remainder_near(self):
-        c = Context()
-        d = c.remainder_near(Decimal(1), Decimal(2))
-        self.assertEqual(c.remainder_near(1, 2), d)
-        self.assertEqual(c.remainder_near(Decimal(1), 2), d)
-        self.assertEqual(c.remainder_near(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.remainder_near, '1', 2)
-        self.assertRaises(TypeError, c.remainder_near, 1, '2')
-
-    def test_rotate(self):
-        c = Context()
-        d = c.rotate(Decimal(1), Decimal(2))
-        self.assertEqual(c.rotate(1, 2), d)
-        self.assertEqual(c.rotate(Decimal(1), 2), d)
-        self.assertEqual(c.rotate(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.rotate, '1', 2)
-        self.assertRaises(TypeError, c.rotate, 1, '2')
-
-    def test_sqrt(self):
-        c = Context()
-        d = c.sqrt(Decimal(10))
-        self.assertEqual(c.sqrt(10), d)
-        self.assertRaises(TypeError, c.sqrt, '10')
-
-    def test_same_quantum(self):
-        c = Context()
-        d = c.same_quantum(Decimal(1), Decimal(2))
-        self.assertEqual(c.same_quantum(1, 2), d)
-        self.assertEqual(c.same_quantum(Decimal(1), 2), d)
-        self.assertEqual(c.same_quantum(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.same_quantum, '1', 2)
-        self.assertRaises(TypeError, c.same_quantum, 1, '2')
-
-    def test_scaleb(self):
-        c = Context()
-        d = c.scaleb(Decimal(1), Decimal(2))
-        self.assertEqual(c.scaleb(1, 2), d)
-        self.assertEqual(c.scaleb(Decimal(1), 2), d)
-        self.assertEqual(c.scaleb(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.scaleb, '1', 2)
-        self.assertRaises(TypeError, c.scaleb, 1, '2')
-
-    def test_shift(self):
-        c = Context()
-        d = c.shift(Decimal(1), Decimal(2))
-        self.assertEqual(c.shift(1, 2), d)
-        self.assertEqual(c.shift(Decimal(1), 2), d)
-        self.assertEqual(c.shift(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.shift, '1', 2)
-        self.assertRaises(TypeError, c.shift, 1, '2')
-
-    def test_subtract(self):
-        c = Context()
-        d = c.subtract(Decimal(1), Decimal(2))
-        self.assertEqual(c.subtract(1, 2), d)
-        self.assertEqual(c.subtract(Decimal(1), 2), d)
-        self.assertEqual(c.subtract(1, Decimal(2)), d)
-        self.assertRaises(TypeError, c.subtract, '1', 2)
-        self.assertRaises(TypeError, c.subtract, 1, '2')
-
-    def test_to_eng_string(self):
-        c = Context()
-        d = c.to_eng_string(Decimal(10))
-        self.assertEqual(c.to_eng_string(10), d)
-        self.assertRaises(TypeError, c.to_eng_string, '10')
-
-    def test_to_sci_string(self):
-        c = Context()
-        d = c.to_sci_string(Decimal(10))
-        self.assertEqual(c.to_sci_string(10), d)
-        self.assertRaises(TypeError, c.to_sci_string, '10')
-
-    def test_to_integral_exact(self):
-        c = Context()
-        d = c.to_integral_exact(Decimal(10))
-        self.assertEqual(c.to_integral_exact(10), d)
-        self.assertRaises(TypeError, c.to_integral_exact, '10')
-
-    def test_to_integral_value(self):
-        c = Context()
-        d = c.to_integral_value(Decimal(10))
-        self.assertEqual(c.to_integral_value(10), d)
-        self.assertRaises(TypeError, c.to_integral_value, '10')
-
-class WithStatementTest(unittest.TestCase):
-    # Can't do these as docstrings until Python 2.6
-    # as doctest can't handle __future__ statements
-
-    def test_localcontext(self):
-        # Use a copy of the current context in the block
-        orig_ctx = getcontext()
-        with localcontext() as enter_ctx:
-            set_ctx = getcontext()
-        final_ctx = getcontext()
-        self.assertIs(orig_ctx, final_ctx, 'did not restore context correctly')
-        self.assertIsNot(orig_ctx, set_ctx, 'did not copy the context')
-        self.assertIs(set_ctx, enter_ctx, '__enter__ returned wrong context')
-
-    def test_localcontextarg(self):
-        # Use a copy of the supplied context in the block
-        orig_ctx = getcontext()
-        new_ctx = Context(prec=42)
-        with localcontext(new_ctx) as enter_ctx:
-            set_ctx = getcontext()
-        final_ctx = getcontext()
-        self.assertIs(orig_ctx, final_ctx, 'did not restore context correctly')
-        self.assertEqual(set_ctx.prec, new_ctx.prec, 'did not set correct context')
-        self.assertIsNot(new_ctx, set_ctx, 'did not copy the context')
-        self.assertIs(set_ctx, enter_ctx, '__enter__ returned wrong context')
-
-class ContextFlags(unittest.TestCase):
-    def test_flags_irrelevant(self):
-        # check that the result (numeric result + flags raised) of an
-        # arithmetic operation doesn't depend on the current flags
-
-        context = Context(prec=9, Emin = -999999999, Emax = 999999999,
-                    rounding=ROUND_HALF_EVEN, traps=[], flags=[])
-
-        # operations that raise various flags, in the form (function, arglist)
-        operations = [
-            (context._apply, [Decimal("100E-1000000009")]),
-            (context.sqrt, [Decimal(2)]),
-            (context.add, [Decimal("1.23456789"), Decimal("9.87654321")]),
-            (context.multiply, [Decimal("1.23456789"), Decimal("9.87654321")]),
-            (context.subtract, [Decimal("1.23456789"), Decimal("9.87654321")]),
-            ]
-
-        # try various flags individually, then a whole lot at once
-        flagsets = [[Inexact], [Rounded], [Underflow], [Clamped], [Subnormal],
-                    [Inexact, Rounded, Underflow, Clamped, Subnormal]]
-
-        for fn, args in operations:
-            # find answer and flags raised using a clean context
-            context.clear_flags()
-            ans = fn(*args)
-            flags = [k for k, v in context.flags.items() if v]
-
-            for extra_flags in flagsets:
-                # set flags, before calling operation
-                context.clear_flags()
-                for flag in extra_flags:
-                    context._raise_error(flag)
-                new_ans = fn(*args)
-
-                # flags that we expect to be set after the operation
-                expected_flags = list(flags)
-                for flag in extra_flags:
-                    if flag not in expected_flags:
-                        expected_flags.append(flag)
-
-                # flags we actually got
-                new_flags = [k for k,v in context.flags.items() if v]
-
-                self.assertEqual(ans, new_ans,
-                                 "operation produces different answers depending on flags set: " +
-                                 "expected %s, got %s." % (ans, new_ans))
-                self.assertItemsEqual(new_flags, expected_flags,
-                                  "operation raises different flags depending on flags set: " +
-                                  "expected %s, got %s" % (expected_flags, new_flags))
-
-def test_main(arith=False, verbose=None, todo_tests=None, debug=None):
-    """ Execute the tests.
-
-    Runs all arithmetic tests if arith is True or if the "decimal" resource
-    is enabled in regrtest.py
-    """
-
-    init()
-    global TEST_ALL, DEBUG
-    TEST_ALL = arith or is_resource_enabled('decimal')
-    DEBUG = debug
-
-    if todo_tests is None:
-        test_classes = [
-            DecimalExplicitConstructionTest,
-            DecimalImplicitConstructionTest,
-            DecimalArithmeticOperatorsTest,
-            DecimalFormatTest,
-            DecimalUseOfContextTest,
-            DecimalUsabilityTest,
-            DecimalPythonAPItests,
-            ContextAPItests,
-            DecimalTest,
-            WithStatementTest,
-            ContextFlags
-        ]
-    else:
-        test_classes = [DecimalTest]
-
-    # Dynamically build custom test definition for each file in the test
-    # directory and add the definitions to the DecimalTest class.  This
-    # procedure insures that new files do not get skipped.
-    for filename in os.listdir(directory):
-        if '.decTest' not in filename or filename.startswith("."):
-            continue
-        head, tail = filename.split('.')
-        if todo_tests is not None and head not in todo_tests:
-            continue
-        tester = lambda self, f=filename: self.eval_file(directory + f)
-        setattr(DecimalTest, 'test_' + head, tester)
-        del filename, head, tail, tester
-
-
-    try:
-        run_unittest(*test_classes)
-        if todo_tests is None:
-            import decimal as DecimalModule
-            run_doctest(DecimalModule, verbose)
-    finally:
-        setcontext(ORIGINAL_CONTEXT)
-
-if __name__ == '__main__':
-    import optparse
-    p = optparse.OptionParser("test_decimal.py [--debug] [{--skip | test1 [test2 [...]]}]")
-    p.add_option('--debug', '-d', action='store_true', help='shows the test number and context before each test')
-    p.add_option('--skip',  '-s', action='store_true', help='skip over 90% of the arithmetic tests')
-    (opt, args) = p.parse_args()
-
-    if opt.skip:
-        test_main(arith=False, verbose=True)
-    elif args:
-        test_main(arith=True, verbose=True, todo_tests=args, debug=opt.debug)
-    else:
-        test_main(arith=True, verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_decorators.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_decorators.py
deleted file mode 100644
index 8f7337a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_decorators.py
+++ /dev/null
@@ -1,309 +0,0 @@
-import unittest
-from test import test_support
-
-def funcattrs(**kwds):
-    def decorate(func):
-        func.__dict__.update(kwds)
-        return func
-    return decorate
-
-class MiscDecorators (object):
-    @staticmethod
-    def author(name):
-        def decorate(func):
-            func.__dict__['author'] = name
-            return func
-        return decorate
-
-# -----------------------------------------------
-
-class DbcheckError (Exception):
-    def __init__(self, exprstr, func, args, kwds):
-        # A real version of this would set attributes here
-        Exception.__init__(self, "dbcheck %r failed (func=%s args=%s kwds=%s)" %
-                           (exprstr, func, args, kwds))
-
-
-def dbcheck(exprstr, globals=None, locals=None):
-    "Decorator to implement debugging assertions"
-    def decorate(func):
-        expr = compile(exprstr, "dbcheck-%s" % func.func_name, "eval")
-        def check(*args, **kwds):
-            if not eval(expr, globals, locals):
-                raise DbcheckError(exprstr, func, args, kwds)
-            return func(*args, **kwds)
-        return check
-    return decorate
-
-# -----------------------------------------------
-
-def countcalls(counts):
-    "Decorator to count calls to a function"
-    def decorate(func):
-        func_name = func.func_name
-        counts[func_name] = 0
-        def call(*args, **kwds):
-            counts[func_name] += 1
-            return func(*args, **kwds)
-        call.func_name = func_name
-        return call
-    return decorate
-
-# -----------------------------------------------
-
-def memoize(func):
-    saved = {}
-    def call(*args):
-        try:
-            return saved[args]
-        except KeyError:
-            res = func(*args)
-            saved[args] = res
-            return res
-        except TypeError:
-            # Unhashable argument
-            return func(*args)
-    call.func_name = func.func_name
-    return call
-
-# -----------------------------------------------
-
-class TestDecorators(unittest.TestCase):
-
-    def test_single(self):
-        class C(object):
-            @staticmethod
-            def foo(): return 42
-        self.assertEqual(C.foo(), 42)
-        self.assertEqual(C().foo(), 42)
-
-    def test_staticmethod_function(self):
-        @staticmethod
-        def notamethod(x):
-            return x
-        self.assertRaises(TypeError, notamethod, 1)
-
-    def test_dotted(self):
-        decorators = MiscDecorators()
-        @decorators.author('Cleese')
-        def foo(): return 42
-        self.assertEqual(foo(), 42)
-        self.assertEqual(foo.author, 'Cleese')
-
-    def test_argforms(self):
-        # A few tests of argument passing, as we use restricted form
-        # of expressions for decorators.
-
-        def noteargs(*args, **kwds):
-            def decorate(func):
-                setattr(func, 'dbval', (args, kwds))
-                return func
-            return decorate
-
-        args = ( 'Now', 'is', 'the', 'time' )
-        kwds = dict(one=1, two=2)
-        @noteargs(*args, **kwds)
-        def f1(): return 42
-        self.assertEqual(f1(), 42)
-        self.assertEqual(f1.dbval, (args, kwds))
-
-        @noteargs('terry', 'gilliam', eric='idle', john='cleese')
-        def f2(): return 84
-        self.assertEqual(f2(), 84)
-        self.assertEqual(f2.dbval, (('terry', 'gilliam'),
-                                     dict(eric='idle', john='cleese')))
-
-        @noteargs(1, 2,)
-        def f3(): pass
-        self.assertEqual(f3.dbval, ((1, 2), {}))
-
-    def test_dbcheck(self):
-        @dbcheck('args[1] is not None')
-        def f(a, b):
-            return a + b
-        self.assertEqual(f(1, 2), 3)
-        self.assertRaises(DbcheckError, f, 1, None)
-
-    def test_memoize(self):
-        counts = {}
-
-        @memoize
-        @countcalls(counts)
-        def double(x):
-            return x * 2
-        self.assertEqual(double.func_name, 'double')
-
-        self.assertEqual(counts, dict(double=0))
-
-        # Only the first call with a given argument bumps the call count:
-        #
-        self.assertEqual(double(2), 4)
-        self.assertEqual(counts['double'], 1)
-        self.assertEqual(double(2), 4)
-        self.assertEqual(counts['double'], 1)
-        self.assertEqual(double(3), 6)
-        self.assertEqual(counts['double'], 2)
-
-        # Unhashable arguments do not get memoized:
-        #
-        self.assertEqual(double([10]), [10, 10])
-        self.assertEqual(counts['double'], 3)
-        self.assertEqual(double([10]), [10, 10])
-        self.assertEqual(counts['double'], 4)
-
-    def test_errors(self):
-        # Test syntax restrictions - these are all compile-time errors:
-        #
-        for expr in [ "1+2", "x[3]", "(1, 2)" ]:
-            # Sanity check: is expr is a valid expression by itself?
-            compile(expr, "testexpr", "exec")
-
-            codestr = "@%s\ndef f(): pass" % expr
-            self.assertRaises(SyntaxError, compile, codestr, "test", "exec")
-
-        # You can't put multiple decorators on a single line:
-        #
-        self.assertRaises(SyntaxError, compile,
-                          "@f1 @f2\ndef f(): pass", "test", "exec")
-
-        # Test runtime errors
-
-        def unimp(func):
-            raise NotImplementedError
-        context = dict(nullval=None, unimp=unimp)
-
-        for expr, exc in [ ("undef", NameError),
-                           ("nullval", TypeError),
-                           ("nullval.attr", AttributeError),
-                           ("unimp", NotImplementedError)]:
-            codestr = "@%s\ndef f(): pass\nassert f() is None" % expr
-            code = compile(codestr, "test", "exec")
-            self.assertRaises(exc, eval, code, context)
-
-    def test_double(self):
-        class C(object):
-            @funcattrs(abc=1, xyz="haha")
-            @funcattrs(booh=42)
-            def foo(self): return 42
-        self.assertEqual(C().foo(), 42)
-        self.assertEqual(C.foo.abc, 1)
-        self.assertEqual(C.foo.xyz, "haha")
-        self.assertEqual(C.foo.booh, 42)
-
-    def test_order(self):
-        # Test that decorators are applied in the proper order to the function
-        # they are decorating.
-        def callnum(num):
-            """Decorator factory that returns a decorator that replaces the
-            passed-in function with one that returns the value of 'num'"""
-            def deco(func):
-                return lambda: num
-            return deco
-        @callnum(2)
-        @callnum(1)
-        def foo(): return 42
-        self.assertEqual(foo(), 2,
-                            "Application order of decorators is incorrect")
-
-    def test_eval_order(self):
-        # Evaluating a decorated function involves four steps for each
-        # decorator-maker (the function that returns a decorator):
-        #
-        #    1: Evaluate the decorator-maker name
-        #    2: Evaluate the decorator-maker arguments (if any)
-        #    3: Call the decorator-maker to make a decorator
-        #    4: Call the decorator
-        #
-        # When there are multiple decorators, these steps should be
-        # performed in the above order for each decorator, but we should
-        # iterate through the decorators in the reverse of the order they
-        # appear in the source.
-
-        actions = []
-
-        def make_decorator(tag):
-            actions.append('makedec' + tag)
-            def decorate(func):
-                actions.append('calldec' + tag)
-                return func
-            return decorate
-
-        class NameLookupTracer (object):
-            def __init__(self, index):
-                self.index = index
-
-            def __getattr__(self, fname):
-                if fname == 'make_decorator':
-                    opname, res = ('evalname', make_decorator)
-                elif fname == 'arg':
-                    opname, res = ('evalargs', str(self.index))
-                else:
-                    assert False, "Unknown attrname %s" % fname
-                actions.append('%s%d' % (opname, self.index))
-                return res
-
-        c1, c2, c3 = map(NameLookupTracer, [ 1, 2, 3 ])
-
-        expected_actions = [ 'evalname1', 'evalargs1', 'makedec1',
-                             'evalname2', 'evalargs2', 'makedec2',
-                             'evalname3', 'evalargs3', 'makedec3',
-                             'calldec3', 'calldec2', 'calldec1' ]
-
-        actions = []
-        @c1.make_decorator(c1.arg)
-        @c2.make_decorator(c2.arg)
-        @c3.make_decorator(c3.arg)
-        def foo(): return 42
-        self.assertEqual(foo(), 42)
-
-        self.assertEqual(actions, expected_actions)
-
-        # Test the equivalence claim in chapter 7 of the reference manual.
-        #
-        actions = []
-        def bar(): return 42
-        bar = c1.make_decorator(c1.arg)(c2.make_decorator(c2.arg)(c3.make_decorator(c3.arg)(bar)))
-        self.assertEqual(bar(), 42)
-        self.assertEqual(actions, expected_actions)
-
-class TestClassDecorators(unittest.TestCase):
-
-    def test_simple(self):
-        def plain(x):
-            x.extra = 'Hello'
-            return x
-        @plain
-        class C(object): pass
-        self.assertEqual(C.extra, 'Hello')
-
-    def test_double(self):
-        def ten(x):
-            x.extra = 10
-            return x
-        def add_five(x):
-            x.extra += 5
-            return x
-
-        @add_five
-        @ten
-        class C(object): pass
-        self.assertEqual(C.extra, 15)
-
-    def test_order(self):
-        def applied_first(x):
-            x.extra = 'first'
-            return x
-        def applied_second(x):
-            x.extra = 'second'
-            return x
-        @applied_second
-        @applied_first
-        class C(object): pass
-        self.assertEqual(C.extra, 'second')
-
-def test_main():
-    test_support.run_unittest(TestDecorators)
-    test_support.run_unittest(TestClassDecorators)
-
-if __name__=="__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_defaultdict.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_defaultdict.py
deleted file mode 100644
index bd3a7f6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_defaultdict.py
+++ /dev/null
@@ -1,179 +0,0 @@
-"""Unit tests for collections.defaultdict."""
-
-import os
-import copy
-import tempfile
-import unittest
-from test import test_support
-
-from collections import defaultdict
-
-def foobar():
-    return list
-
-class TestDefaultDict(unittest.TestCase):
-
-    def test_basic(self):
-        d1 = defaultdict()
-        self.assertEqual(d1.default_factory, None)
-        d1.default_factory = list
-        d1[12].append(42)
-        self.assertEqual(d1, {12: [42]})
-        d1[12].append(24)
-        self.assertEqual(d1, {12: [42, 24]})
-        d1[13]
-        d1[14]
-        self.assertEqual(d1, {12: [42, 24], 13: [], 14: []})
-        self.assertTrue(d1[12] is not d1[13] is not d1[14])
-        d2 = defaultdict(list, foo=1, bar=2)
-        self.assertEqual(d2.default_factory, list)
-        self.assertEqual(d2, {"foo": 1, "bar": 2})
-        self.assertEqual(d2["foo"], 1)
-        self.assertEqual(d2["bar"], 2)
-        self.assertEqual(d2[42], [])
-        self.assertIn("foo", d2)
-        self.assertIn("foo", d2.keys())
-        self.assertIn("bar", d2)
-        self.assertIn("bar", d2.keys())
-        self.assertIn(42, d2)
-        self.assertIn(42, d2.keys())
-        self.assertNotIn(12, d2)
-        self.assertNotIn(12, d2.keys())
-        d2.default_factory = None
-        self.assertEqual(d2.default_factory, None)
-        try:
-            d2[15]
-        except KeyError, err:
-            self.assertEqual(err.args, (15,))
-        else:
-            self.fail("d2[15] didn't raise KeyError")
-        self.assertRaises(TypeError, defaultdict, 1)
-
-    def test_missing(self):
-        d1 = defaultdict()
-        self.assertRaises(KeyError, d1.__missing__, 42)
-        d1.default_factory = list
-        self.assertEqual(d1.__missing__(42), [])
-
-    def test_repr(self):
-        d1 = defaultdict()
-        self.assertEqual(d1.default_factory, None)
-        self.assertEqual(repr(d1), "defaultdict(None, {})")
-        self.assertEqual(eval(repr(d1)), d1)
-        d1[11] = 41
-        self.assertEqual(repr(d1), "defaultdict(None, {11: 41})")
-        d2 = defaultdict(int)
-        self.assertEqual(d2.default_factory, int)
-        d2[12] = 42
-        self.assertEqual(repr(d2), "defaultdict(<type 'int'>, {12: 42})")
-        def foo(): return 43
-        d3 = defaultdict(foo)
-        self.assertTrue(d3.default_factory is foo)
-        d3[13]
-        self.assertEqual(repr(d3), "defaultdict(%s, {13: 43})" % repr(foo))
-
-    def test_print(self):
-        d1 = defaultdict()
-        def foo(): return 42
-        d2 = defaultdict(foo, {1: 2})
-        # NOTE: We can't use tempfile.[Named]TemporaryFile since this
-        # code must exercise the tp_print C code, which only gets
-        # invoked for *real* files.
-        tfn = tempfile.mktemp()
-        try:
-            f = open(tfn, "w+")
-            try:
-                print >>f, d1
-                print >>f, d2
-                f.seek(0)
-                self.assertEqual(f.readline(), repr(d1) + "\n")
-                self.assertEqual(f.readline(), repr(d2) + "\n")
-            finally:
-                f.close()
-        finally:
-            os.remove(tfn)
-
-    def test_copy(self):
-        d1 = defaultdict()
-        d2 = d1.copy()
-        self.assertEqual(type(d2), defaultdict)
-        self.assertEqual(d2.default_factory, None)
-        self.assertEqual(d2, {})
-        d1.default_factory = list
-        d3 = d1.copy()
-        self.assertEqual(type(d3), defaultdict)
-        self.assertEqual(d3.default_factory, list)
-        self.assertEqual(d3, {})
-        d1[42]
-        d4 = d1.copy()
-        self.assertEqual(type(d4), defaultdict)
-        self.assertEqual(d4.default_factory, list)
-        self.assertEqual(d4, {42: []})
-        d4[12]
-        self.assertEqual(d4, {42: [], 12: []})
-
-        # Issue 6637: Copy fails for empty default dict
-        d = defaultdict()
-        d['a'] = 42
-        e = d.copy()
-        self.assertEqual(e['a'], 42)
-
-    def test_shallow_copy(self):
-        d1 = defaultdict(foobar, {1: 1})
-        d2 = copy.copy(d1)
-        self.assertEqual(d2.default_factory, foobar)
-        self.assertEqual(d2, d1)
-        d1.default_factory = list
-        d2 = copy.copy(d1)
-        self.assertEqual(d2.default_factory, list)
-        self.assertEqual(d2, d1)
-
-    def test_deep_copy(self):
-        d1 = defaultdict(foobar, {1: [1]})
-        d2 = copy.deepcopy(d1)
-        self.assertEqual(d2.default_factory, foobar)
-        self.assertEqual(d2, d1)
-        self.assertTrue(d1[1] is not d2[1])
-        d1.default_factory = list
-        d2 = copy.deepcopy(d1)
-        self.assertEqual(d2.default_factory, list)
-        self.assertEqual(d2, d1)
-
-    def test_keyerror_without_factory(self):
-        d1 = defaultdict()
-        try:
-            d1[(1,)]
-        except KeyError, err:
-            self.assertEqual(err.args[0], (1,))
-        else:
-            self.fail("expected KeyError")
-
-    def test_recursive_repr(self):
-        # Issue2045: stack overflow when default_factory is a bound method
-        class sub(defaultdict):
-            def __init__(self):
-                self.default_factory = self._factory
-            def _factory(self):
-                return []
-        d = sub()
-        self.assertTrue(repr(d).startswith(
-            "defaultdict(<bound method sub._factory of defaultdict(..."))
-
-        # NOTE: printing a subclass of a builtin type does not call its
-        # tp_print slot. So this part is essentially the same test as above.
-        tfn = tempfile.mktemp()
-        try:
-            f = open(tfn, "w+")
-            try:
-                print >>f, d
-            finally:
-                f.close()
-        finally:
-            os.remove(tfn)
-
-
-def test_main():
-    test_support.run_unittest(TestDefaultDict)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_deque.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_deque.py
deleted file mode 100644
index dfaf103..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_deque.py
+++ /dev/null
@@ -1,787 +0,0 @@
-from collections import deque
-import unittest
-from test import test_support, seq_tests
-import gc
-import weakref
-import copy
-import cPickle as pickle
-import random
-
-BIG = 100000
-
-def fail():
-    raise SyntaxError
-    yield 1
-
-class BadCmp:
-    def __eq__(self, other):
-        raise RuntimeError
-
-class MutateCmp:
-    def __init__(self, deque, result):
-        self.deque = deque
-        self.result = result
-    def __eq__(self, other):
-        self.deque.clear()
-        return self.result
-
-class TestBasic(unittest.TestCase):
-
-    def test_basics(self):
-        d = deque(xrange(-5125, -5000))
-        d.__init__(xrange(200))
-        for i in xrange(200, 400):
-            d.append(i)
-        for i in reversed(xrange(-200, 0)):
-            d.appendleft(i)
-        self.assertEqual(list(d), range(-200, 400))
-        self.assertEqual(len(d), 600)
-
-        left = [d.popleft() for i in xrange(250)]
-        self.assertEqual(left, range(-200, 50))
-        self.assertEqual(list(d), range(50, 400))
-
-        right = [d.pop() for i in xrange(250)]
-        right.reverse()
-        self.assertEqual(right, range(150, 400))
-        self.assertEqual(list(d), range(50, 150))
-
-    def test_maxlen(self):
-        self.assertRaises(ValueError, deque, 'abc', -1)
-        self.assertRaises(ValueError, deque, 'abc', -2)
-        it = iter(range(10))
-        d = deque(it, maxlen=3)
-        self.assertEqual(list(it), [])
-        self.assertEqual(repr(d), 'deque([7, 8, 9], maxlen=3)')
-        self.assertEqual(list(d), range(7, 10))
-        self.assertEqual(d, deque(range(10), 3))
-        d.append(10)
-        self.assertEqual(list(d), range(8, 11))
-        d.appendleft(7)
-        self.assertEqual(list(d), range(7, 10))
-        d.extend([10, 11])
-        self.assertEqual(list(d), range(9, 12))
-        d.extendleft([8, 7])
-        self.assertEqual(list(d), range(7, 10))
-        d = deque(xrange(200), maxlen=10)
-        d.append(d)
-        test_support.unlink(test_support.TESTFN)
-        fo = open(test_support.TESTFN, "wb")
-        try:
-            print >> fo, d,
-            fo.close()
-            fo = open(test_support.TESTFN, "rb")
-            self.assertEqual(fo.read(), repr(d))
-        finally:
-            fo.close()
-            test_support.unlink(test_support.TESTFN)
-
-        d = deque(range(10), maxlen=None)
-        self.assertEqual(repr(d), 'deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])')
-        fo = open(test_support.TESTFN, "wb")
-        try:
-            print >> fo, d,
-            fo.close()
-            fo = open(test_support.TESTFN, "rb")
-            self.assertEqual(fo.read(), repr(d))
-        finally:
-            fo.close()
-            test_support.unlink(test_support.TESTFN)
-
-    def test_maxlen_zero(self):
-        it = iter(range(100))
-        deque(it, maxlen=0)
-        self.assertEqual(list(it), [])
-
-        it = iter(range(100))
-        d = deque(maxlen=0)
-        d.extend(it)
-        self.assertEqual(list(it), [])
-
-        it = iter(range(100))
-        d = deque(maxlen=0)
-        d.extendleft(it)
-        self.assertEqual(list(it), [])
-
-    def test_maxlen_attribute(self):
-        self.assertEqual(deque().maxlen, None)
-        self.assertEqual(deque('abc').maxlen, None)
-        self.assertEqual(deque('abc', maxlen=4).maxlen, 4)
-        self.assertEqual(deque('abc', maxlen=2).maxlen, 2)
-        self.assertEqual(deque('abc', maxlen=0).maxlen, 0)
-        with self.assertRaises(AttributeError):
-            d = deque('abc')
-            d.maxlen = 10
-
-    def test_count(self):
-        for s in ('', 'abracadabra', 'simsalabim'*500+'abc'):
-            s = list(s)
-            d = deque(s)
-            for letter in 'abcdefghijklmnopqrstuvwxyz':
-                self.assertEqual(s.count(letter), d.count(letter), (s, d, letter))
-        self.assertRaises(TypeError, d.count)       # too few args
-        self.assertRaises(TypeError, d.count, 1, 2) # too many args
-        class BadCompare:
-            def __eq__(self, other):
-                raise ArithmeticError
-        d = deque([1, 2, BadCompare(), 3])
-        self.assertRaises(ArithmeticError, d.count, 2)
-        d = deque([1, 2, 3])
-        self.assertRaises(ArithmeticError, d.count, BadCompare())
-        class MutatingCompare:
-            def __eq__(self, other):
-                self.d.pop()
-                return True
-        m = MutatingCompare()
-        d = deque([1, 2, 3, m, 4, 5])
-        m.d = d
-        self.assertRaises(RuntimeError, d.count, 3)
-
-        # test issue11004
-        # block advance failed after rotation aligned elements on right side of block
-        d = deque([None]*16)
-        for i in range(len(d)):
-            d.rotate(-1)
-        d.rotate(1)
-        self.assertEqual(d.count(1), 0)
-        self.assertEqual(d.count(None), 16)
-
-    def test_comparisons(self):
-        d = deque('xabc'); d.popleft()
-        for e in [d, deque('abc'), deque('ab'), deque(), list(d)]:
-            self.assertEqual(d==e, type(d)==type(e) and list(d)==list(e))
-            self.assertEqual(d!=e, not(type(d)==type(e) and list(d)==list(e)))
-
-        args = map(deque, ('', 'a', 'b', 'ab', 'ba', 'abc', 'xba', 'xabc', 'cba'))
-        for x in args:
-            for y in args:
-                self.assertEqual(x == y, list(x) == list(y), (x,y))
-                self.assertEqual(x != y, list(x) != list(y), (x,y))
-                self.assertEqual(x <  y, list(x) <  list(y), (x,y))
-                self.assertEqual(x <= y, list(x) <= list(y), (x,y))
-                self.assertEqual(x >  y, list(x) >  list(y), (x,y))
-                self.assertEqual(x >= y, list(x) >= list(y), (x,y))
-                self.assertEqual(cmp(x,y), cmp(list(x),list(y)), (x,y))
-
-    def test_extend(self):
-        d = deque('a')
-        self.assertRaises(TypeError, d.extend, 1)
-        d.extend('bcd')
-        self.assertEqual(list(d), list('abcd'))
-        d.extend(d)
-        self.assertEqual(list(d), list('abcdabcd'))
-
-    def test_iadd(self):
-        d = deque('a')
-        d += 'bcd'
-        self.assertEqual(list(d), list('abcd'))
-        d += d
-        self.assertEqual(list(d), list('abcdabcd'))
-
-    def test_extendleft(self):
-        d = deque('a')
-        self.assertRaises(TypeError, d.extendleft, 1)
-        d.extendleft('bcd')
-        self.assertEqual(list(d), list(reversed('abcd')))
-        d.extendleft(d)
-        self.assertEqual(list(d), list('abcddcba'))
-        d = deque()
-        d.extendleft(range(1000))
-        self.assertEqual(list(d), list(reversed(range(1000))))
-        self.assertRaises(SyntaxError, d.extendleft, fail())
-
-    def test_getitem(self):
-        n = 200
-        d = deque(xrange(n))
-        l = range(n)
-        for i in xrange(n):
-            d.popleft()
-            l.pop(0)
-            if random.random() < 0.5:
-                d.append(i)
-                l.append(i)
-            for j in xrange(1-len(l), len(l)):
-                assert d[j] == l[j]
-
-        d = deque('superman')
-        self.assertEqual(d[0], 's')
-        self.assertEqual(d[-1], 'n')
-        d = deque()
-        self.assertRaises(IndexError, d.__getitem__, 0)
-        self.assertRaises(IndexError, d.__getitem__, -1)
-
-    def test_setitem(self):
-        n = 200
-        d = deque(xrange(n))
-        for i in xrange(n):
-            d[i] = 10 * i
-        self.assertEqual(list(d), [10*i for i in xrange(n)])
-        l = list(d)
-        for i in xrange(1-n, 0, -1):
-            d[i] = 7*i
-            l[i] = 7*i
-        self.assertEqual(list(d), l)
-
-    def test_delitem(self):
-        n = 500         # O(n**2) test, don't make this too big
-        d = deque(xrange(n))
-        self.assertRaises(IndexError, d.__delitem__, -n-1)
-        self.assertRaises(IndexError, d.__delitem__, n)
-        for i in xrange(n):
-            self.assertEqual(len(d), n-i)
-            j = random.randrange(-len(d), len(d))
-            val = d[j]
-            self.assertIn(val, d)
-            del d[j]
-            self.assertNotIn(val, d)
-        self.assertEqual(len(d), 0)
-
-    def test_reverse(self):
-        n = 500         # O(n**2) test, don't make this too big
-        data = [random.random() for i in range(n)]
-        for i in range(n):
-            d = deque(data[:i])
-            r = d.reverse()
-            self.assertEqual(list(d), list(reversed(data[:i])))
-            self.assertIs(r, None)
-            d.reverse()
-            self.assertEqual(list(d), data[:i])
-        self.assertRaises(TypeError, d.reverse, 1)          # Arity is zero
-
-    def test_rotate(self):
-        s = tuple('abcde')
-        n = len(s)
-
-        d = deque(s)
-        d.rotate(1)             # verify rot(1)
-        self.assertEqual(''.join(d), 'eabcd')
-
-        d = deque(s)
-        d.rotate(-1)            # verify rot(-1)
-        self.assertEqual(''.join(d), 'bcdea')
-        d.rotate()              # check default to 1
-        self.assertEqual(tuple(d), s)
-
-        for i in xrange(n*3):
-            d = deque(s)
-            e = deque(d)
-            d.rotate(i)         # check vs. rot(1) n times
-            for j in xrange(i):
-                e.rotate(1)
-            self.assertEqual(tuple(d), tuple(e))
-            d.rotate(-i)        # check that it works in reverse
-            self.assertEqual(tuple(d), s)
-            e.rotate(n-i)       # check that it wraps forward
-            self.assertEqual(tuple(e), s)
-
-        for i in xrange(n*3):
-            d = deque(s)
-            e = deque(d)
-            d.rotate(-i)
-            for j in xrange(i):
-                e.rotate(-1)    # check vs. rot(-1) n times
-            self.assertEqual(tuple(d), tuple(e))
-            d.rotate(i)         # check that it works in reverse
-            self.assertEqual(tuple(d), s)
-            e.rotate(i-n)       # check that it wraps backaround
-            self.assertEqual(tuple(e), s)
-
-        d = deque(s)
-        e = deque(s)
-        e.rotate(BIG+17)        # verify on long series of rotates
-        dr = d.rotate
-        for i in xrange(BIG+17):
-            dr()
-        self.assertEqual(tuple(d), tuple(e))
-
-        self.assertRaises(TypeError, d.rotate, 'x')   # Wrong arg type
-        self.assertRaises(TypeError, d.rotate, 1, 10) # Too many args
-
-        d = deque()
-        d.rotate()              # rotate an empty deque
-        self.assertEqual(d, deque())
-
-    def test_len(self):
-        d = deque('ab')
-        self.assertEqual(len(d), 2)
-        d.popleft()
-        self.assertEqual(len(d), 1)
-        d.pop()
-        self.assertEqual(len(d), 0)
-        self.assertRaises(IndexError, d.pop)
-        self.assertEqual(len(d), 0)
-        d.append('c')
-        self.assertEqual(len(d), 1)
-        d.appendleft('d')
-        self.assertEqual(len(d), 2)
-        d.clear()
-        self.assertEqual(len(d), 0)
-
-    def test_underflow(self):
-        d = deque()
-        self.assertRaises(IndexError, d.pop)
-        self.assertRaises(IndexError, d.popleft)
-
-    def test_clear(self):
-        d = deque(xrange(100))
-        self.assertEqual(len(d), 100)
-        d.clear()
-        self.assertEqual(len(d), 0)
-        self.assertEqual(list(d), [])
-        d.clear()               # clear an emtpy deque
-        self.assertEqual(list(d), [])
-
-    def test_remove(self):
-        d = deque('abcdefghcij')
-        d.remove('c')
-        self.assertEqual(d, deque('abdefghcij'))
-        d.remove('c')
-        self.assertEqual(d, deque('abdefghij'))
-        self.assertRaises(ValueError, d.remove, 'c')
-        self.assertEqual(d, deque('abdefghij'))
-
-        # Handle comparison errors
-        d = deque(['a', 'b', BadCmp(), 'c'])
-        e = deque(d)
-        self.assertRaises(RuntimeError, d.remove, 'c')
-        for x, y in zip(d, e):
-            # verify that original order and values are retained.
-            self.assertTrue(x is y)
-
-        # Handle evil mutator
-        for match in (True, False):
-            d = deque(['ab'])
-            d.extend([MutateCmp(d, match), 'c'])
-            self.assertRaises(IndexError, d.remove, 'c')
-            self.assertEqual(d, deque())
-
-    def test_repr(self):
-        d = deque(xrange(200))
-        e = eval(repr(d))
-        self.assertEqual(list(d), list(e))
-        d.append(d)
-        self.assertIn('...', repr(d))
-
-    def test_print(self):
-        d = deque(xrange(200))
-        d.append(d)
-        test_support.unlink(test_support.TESTFN)
-        fo = open(test_support.TESTFN, "wb")
-        try:
-            print >> fo, d,
-            fo.close()
-            fo = open(test_support.TESTFN, "rb")
-            self.assertEqual(fo.read(), repr(d))
-        finally:
-            fo.close()
-            test_support.unlink(test_support.TESTFN)
-
-    def test_init(self):
-        self.assertRaises(TypeError, deque, 'abc', 2, 3);
-        self.assertRaises(TypeError, deque, 1);
-
-    def test_hash(self):
-        self.assertRaises(TypeError, hash, deque('abc'))
-
-    def test_long_steadystate_queue_popleft(self):
-        for size in (0, 1, 2, 100, 1000):
-            d = deque(xrange(size))
-            append, pop = d.append, d.popleft
-            for i in xrange(size, BIG):
-                append(i)
-                x = pop()
-                if x != i - size:
-                    self.assertEqual(x, i-size)
-            self.assertEqual(list(d), range(BIG-size, BIG))
-
-    def test_long_steadystate_queue_popright(self):
-        for size in (0, 1, 2, 100, 1000):
-            d = deque(reversed(xrange(size)))
-            append, pop = d.appendleft, d.pop
-            for i in xrange(size, BIG):
-                append(i)
-                x = pop()
-                if x != i - size:
-                    self.assertEqual(x, i-size)
-            self.assertEqual(list(reversed(list(d))), range(BIG-size, BIG))
-
-    def test_big_queue_popleft(self):
-        pass
-        d = deque()
-        append, pop = d.append, d.popleft
-        for i in xrange(BIG):
-            append(i)
-        for i in xrange(BIG):
-            x = pop()
-            if x != i:
-                self.assertEqual(x, i)
-
-    def test_big_queue_popright(self):
-        d = deque()
-        append, pop = d.appendleft, d.pop
-        for i in xrange(BIG):
-            append(i)
-        for i in xrange(BIG):
-            x = pop()
-            if x != i:
-                self.assertEqual(x, i)
-
-    def test_big_stack_right(self):
-        d = deque()
-        append, pop = d.append, d.pop
-        for i in xrange(BIG):
-            append(i)
-        for i in reversed(xrange(BIG)):
-            x = pop()
-            if x != i:
-                self.assertEqual(x, i)
-        self.assertEqual(len(d), 0)
-
-    def test_big_stack_left(self):
-        d = deque()
-        append, pop = d.appendleft, d.popleft
-        for i in xrange(BIG):
-            append(i)
-        for i in reversed(xrange(BIG)):
-            x = pop()
-            if x != i:
-                self.assertEqual(x, i)
-        self.assertEqual(len(d), 0)
-
-    def test_roundtrip_iter_init(self):
-        d = deque(xrange(200))
-        e = deque(d)
-        self.assertNotEqual(id(d), id(e))
-        self.assertEqual(list(d), list(e))
-
-    def test_pickle(self):
-        d = deque(xrange(200))
-        for i in range(pickle.HIGHEST_PROTOCOL + 1):
-            s = pickle.dumps(d, i)
-            e = pickle.loads(s)
-            self.assertNotEqual(id(d), id(e))
-            self.assertEqual(list(d), list(e))
-
-##    def test_pickle_recursive(self):
-##        d = deque('abc')
-##        d.append(d)
-##        for i in range(pickle.HIGHEST_PROTOCOL + 1):
-##            e = pickle.loads(pickle.dumps(d, i))
-##            self.assertNotEqual(id(d), id(e))
-##            self.assertEqual(id(e), id(e[-1]))
-
-    def test_deepcopy(self):
-        mut = [10]
-        d = deque([mut])
-        e = copy.deepcopy(d)
-        self.assertEqual(list(d), list(e))
-        mut[0] = 11
-        self.assertNotEqual(id(d), id(e))
-        self.assertNotEqual(list(d), list(e))
-
-    def test_copy(self):
-        mut = [10]
-        d = deque([mut])
-        e = copy.copy(d)
-        self.assertEqual(list(d), list(e))
-        mut[0] = 11
-        self.assertNotEqual(id(d), id(e))
-        self.assertEqual(list(d), list(e))
-
-    def test_reversed(self):
-        for s in ('abcd', xrange(2000)):
-            self.assertEqual(list(reversed(deque(s))), list(reversed(s)))
-
-    def test_gc_doesnt_blowup(self):
-        import gc
-        # This used to assert-fail in deque_traverse() under a debug
-        # build, or run wild with a NULL pointer in a release build.
-        d = deque()
-        for i in xrange(100):
-            d.append(1)
-            gc.collect()
-
-    def test_container_iterator(self):
-        # Bug #3680: tp_traverse was not implemented for deque iterator objects
-        class C(object):
-            pass
-        for i in range(2):
-            obj = C()
-            ref = weakref.ref(obj)
-            if i == 0:
-                container = deque([obj, 1])
-            else:
-                container = reversed(deque([obj, 1]))
-            obj.x = iter(container)
-            del obj, container
-            gc.collect()
-            self.assertTrue(ref() is None, "Cycle was not collected")
-
-class TestVariousIteratorArgs(unittest.TestCase):
-
-    def test_constructor(self):
-        for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
-            for g in (seq_tests.Sequence, seq_tests.IterFunc,
-                      seq_tests.IterGen, seq_tests.IterFuncStop,
-                      seq_tests.itermulti, seq_tests.iterfunc):
-                self.assertEqual(list(deque(g(s))), list(g(s)))
-            self.assertRaises(TypeError, deque, seq_tests.IterNextOnly(s))
-            self.assertRaises(TypeError, deque, seq_tests.IterNoNext(s))
-            self.assertRaises(ZeroDivisionError, deque, seq_tests.IterGenExc(s))
-
-    def test_iter_with_altered_data(self):
-        d = deque('abcdefg')
-        it = iter(d)
-        d.pop()
-        self.assertRaises(RuntimeError, it.next)
-
-    def test_runtime_error_on_empty_deque(self):
-        d = deque()
-        it = iter(d)
-        d.append(10)
-        self.assertRaises(RuntimeError, it.next)
-
-class Deque(deque):
-    pass
-
-class DequeWithBadIter(deque):
-    def __iter__(self):
-        raise TypeError
-
-class TestSubclass(unittest.TestCase):
-
-    def test_basics(self):
-        d = Deque(xrange(25))
-        d.__init__(xrange(200))
-        for i in xrange(200, 400):
-            d.append(i)
-        for i in reversed(xrange(-200, 0)):
-            d.appendleft(i)
-        self.assertEqual(list(d), range(-200, 400))
-        self.assertEqual(len(d), 600)
-
-        left = [d.popleft() for i in xrange(250)]
-        self.assertEqual(left, range(-200, 50))
-        self.assertEqual(list(d), range(50, 400))
-
-        right = [d.pop() for i in xrange(250)]
-        right.reverse()
-        self.assertEqual(right, range(150, 400))
-        self.assertEqual(list(d), range(50, 150))
-
-        d.clear()
-        self.assertEqual(len(d), 0)
-
-    def test_copy_pickle(self):
-
-        d = Deque('abc')
-
-        e = d.__copy__()
-        self.assertEqual(type(d), type(e))
-        self.assertEqual(list(d), list(e))
-
-        e = Deque(d)
-        self.assertEqual(type(d), type(e))
-        self.assertEqual(list(d), list(e))
-
-        s = pickle.dumps(d)
-        e = pickle.loads(s)
-        self.assertNotEqual(id(d), id(e))
-        self.assertEqual(type(d), type(e))
-        self.assertEqual(list(d), list(e))
-
-        d = Deque('abcde', maxlen=4)
-
-        e = d.__copy__()
-        self.assertEqual(type(d), type(e))
-        self.assertEqual(list(d), list(e))
-
-        e = Deque(d)
-        self.assertEqual(type(d), type(e))
-        self.assertEqual(list(d), list(e))
-
-        s = pickle.dumps(d)
-        e = pickle.loads(s)
-        self.assertNotEqual(id(d), id(e))
-        self.assertEqual(type(d), type(e))
-        self.assertEqual(list(d), list(e))
-
-##    def test_pickle(self):
-##        d = Deque('abc')
-##        d.append(d)
-##
-##        e = pickle.loads(pickle.dumps(d))
-##        self.assertNotEqual(id(d), id(e))
-##        self.assertEqual(type(d), type(e))
-##        dd = d.pop()
-##        ee = e.pop()
-##        self.assertEqual(id(e), id(ee))
-##        self.assertEqual(d, e)
-##
-##        d.x = d
-##        e = pickle.loads(pickle.dumps(d))
-##        self.assertEqual(id(e), id(e.x))
-##
-##        d = DequeWithBadIter('abc')
-##        self.assertRaises(TypeError, pickle.dumps, d)
-
-    def test_weakref(self):
-        d = deque('gallahad')
-        p = weakref.proxy(d)
-        self.assertEqual(str(p), str(d))
-        d = None
-        self.assertRaises(ReferenceError, str, p)
-
-    def test_strange_subclass(self):
-        class X(deque):
-            def __iter__(self):
-                return iter([])
-        d1 = X([1,2,3])
-        d2 = X([4,5,6])
-        d1 == d2   # not clear if this is supposed to be True or False,
-                   # but it used to give a SystemError
-
-
-class SubclassWithKwargs(deque):
-    def __init__(self, newarg=1):
-        deque.__init__(self)
-
-class TestSubclassWithKwargs(unittest.TestCase):
-    def test_subclass_with_kwargs(self):
-        # SF bug #1486663 -- this used to erroneously raise a TypeError
-        SubclassWithKwargs(newarg=1)
-
-#==============================================================================
-
-libreftest = """
-Example from the Library Reference:  Doc/lib/libcollections.tex
-
->>> from collections import deque
->>> d = deque('ghi')                 # make a new deque with three items
->>> for elem in d:                   # iterate over the deque's elements
-...     print elem.upper()
-G
-H
-I
->>> d.append('j')                    # add a new entry to the right side
->>> d.appendleft('f')                # add a new entry to the left side
->>> d                                # show the representation of the deque
-deque(['f', 'g', 'h', 'i', 'j'])
->>> d.pop()                          # return and remove the rightmost item
-'j'
->>> d.popleft()                      # return and remove the leftmost item
-'f'
->>> list(d)                          # list the contents of the deque
-['g', 'h', 'i']
->>> d[0]                             # peek at leftmost item
-'g'
->>> d[-1]                            # peek at rightmost item
-'i'
->>> list(reversed(d))                # list the contents of a deque in reverse
-['i', 'h', 'g']
->>> 'h' in d                         # search the deque
-True
->>> d.extend('jkl')                  # add multiple elements at once
->>> d
-deque(['g', 'h', 'i', 'j', 'k', 'l'])
->>> d.rotate(1)                      # right rotation
->>> d
-deque(['l', 'g', 'h', 'i', 'j', 'k'])
->>> d.rotate(-1)                     # left rotation
->>> d
-deque(['g', 'h', 'i', 'j', 'k', 'l'])
->>> deque(reversed(d))               # make a new deque in reverse order
-deque(['l', 'k', 'j', 'i', 'h', 'g'])
->>> d.clear()                        # empty the deque
->>> d.pop()                          # cannot pop from an empty deque
-Traceback (most recent call last):
-  File "<pyshell#6>", line 1, in -toplevel-
-    d.pop()
-IndexError: pop from an empty deque
-
->>> d.extendleft('abc')              # extendleft() reverses the input order
->>> d
-deque(['c', 'b', 'a'])
-
-
-
->>> def delete_nth(d, n):
-...     d.rotate(-n)
-...     d.popleft()
-...     d.rotate(n)
-...
->>> d = deque('abcdef')
->>> delete_nth(d, 2)   # remove the entry at d[2]
->>> d
-deque(['a', 'b', 'd', 'e', 'f'])
-
-
-
->>> def roundrobin(*iterables):
-...     pending = deque(iter(i) for i in iterables)
-...     while pending:
-...         task = pending.popleft()
-...         try:
-...             yield task.next()
-...         except StopIteration:
-...             continue
-...         pending.append(task)
-...
-
->>> for value in roundrobin('abc', 'd', 'efgh'):
-...     print value
-...
-a
-d
-e
-b
-f
-c
-g
-h
-
-
->>> def maketree(iterable):
-...     d = deque(iterable)
-...     while len(d) > 1:
-...         pair = [d.popleft(), d.popleft()]
-...         d.append(pair)
-...     return list(d)
-...
->>> print maketree('abcdefgh')
-[[[['a', 'b'], ['c', 'd']], [['e', 'f'], ['g', 'h']]]]
-
-"""
-
-
-#==============================================================================
-
-__test__ = {'libreftest' : libreftest}
-
-def test_main(verbose=None):
-    import sys
-    test_classes = (
-        TestBasic,
-        TestVariousIteratorArgs,
-        TestSubclass,
-        TestSubclassWithKwargs,
-    )
-
-    test_support.run_unittest(*test_classes)
-
-    # verify reference counting
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        import gc
-        counts = [None] * 5
-        for i in xrange(len(counts)):
-            test_support.run_unittest(*test_classes)
-            gc.collect()
-            counts[i] = sys.gettotalrefcount()
-        print counts
-
-    # doctests
-    from test import test_deque
-    test_support.run_doctest(test_deque, verbose)
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_descr.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_descr.py
deleted file mode 100644
index 42face4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_descr.py
+++ /dev/null
@@ -1,4659 +0,0 @@
-import __builtin__
-import sys
-import types
-import unittest
-
-from copy import deepcopy
-from test import test_support
-
-
-class OperatorsTest(unittest.TestCase):
-
-    def __init__(self, *args, **kwargs):
-        unittest.TestCase.__init__(self, *args, **kwargs)
-        self.binops = {
-            'add': '+',
-            'sub': '-',
-            'mul': '*',
-            'div': '/',
-            'divmod': 'divmod',
-            'pow': '**',
-            'lshift': '<<',
-            'rshift': '>>',
-            'and': '&',
-            'xor': '^',
-            'or': '|',
-            'cmp': 'cmp',
-            'lt': '<',
-            'le': '<=',
-            'eq': '==',
-            'ne': '!=',
-            'gt': '>',
-            'ge': '>=',
-        }
-
-        for name, expr in self.binops.items():
-            if expr.islower():
-                expr = expr + "(a, b)"
-            else:
-                expr = 'a %s b' % expr
-            self.binops[name] = expr
-
-        self.unops = {
-            'pos': '+',
-            'neg': '-',
-            'abs': 'abs',
-            'invert': '~',
-            'int': 'int',
-            'long': 'long',
-            'float': 'float',
-            'oct': 'oct',
-            'hex': 'hex',
-        }
-
-        for name, expr in self.unops.items():
-            if expr.islower():
-                expr = expr + "(a)"
-            else:
-                expr = '%s a' % expr
-            self.unops[name] = expr
-
-    def unop_test(self, a, res, expr="len(a)", meth="__len__"):
-        d = {'a': a}
-        self.assertEqual(eval(expr, d), res)
-        t = type(a)
-        m = getattr(t, meth)
-
-        # Find method in parent class
-        while meth not in t.__dict__:
-            t = t.__bases__[0]
-        # in some implementations (e.g. PyPy), 'm' can be a regular unbound
-        # method object; the getattr() below obtains its underlying function.
-        self.assertEqual(getattr(m, 'im_func', m), t.__dict__[meth])
-        self.assertEqual(m(a), res)
-        bm = getattr(a, meth)
-        self.assertEqual(bm(), res)
-
-    def binop_test(self, a, b, res, expr="a+b", meth="__add__"):
-        d = {'a': a, 'b': b}
-
-        # XXX Hack so this passes before 2.3 when -Qnew is specified.
-        if meth == "__div__" and 1/2 == 0.5:
-            meth = "__truediv__"
-
-        if meth == '__divmod__': pass
-
-        self.assertEqual(eval(expr, d), res)
-        t = type(a)
-        m = getattr(t, meth)
-        while meth not in t.__dict__:
-            t = t.__bases__[0]
-        # in some implementations (e.g. PyPy), 'm' can be a regular unbound
-        # method object; the getattr() below obtains its underlying function.
-        self.assertEqual(getattr(m, 'im_func', m), t.__dict__[meth])
-        self.assertEqual(m(a, b), res)
-        bm = getattr(a, meth)
-        self.assertEqual(bm(b), res)
-
-    def ternop_test(self, a, b, c, res, expr="a[b:c]", meth="__getslice__"):
-        d = {'a': a, 'b': b, 'c': c}
-        self.assertEqual(eval(expr, d), res)
-        t = type(a)
-        m = getattr(t, meth)
-        while meth not in t.__dict__:
-            t = t.__bases__[0]
-        # in some implementations (e.g. PyPy), 'm' can be a regular unbound
-        # method object; the getattr() below obtains its underlying function.
-        self.assertEqual(getattr(m, 'im_func', m), t.__dict__[meth])
-        self.assertEqual(m(a, b, c), res)
-        bm = getattr(a, meth)
-        self.assertEqual(bm(b, c), res)
-
-    def setop_test(self, a, b, res, stmt="a+=b", meth="__iadd__"):
-        d = {'a': deepcopy(a), 'b': b}
-        exec stmt in d
-        self.assertEqual(d['a'], res)
-        t = type(a)
-        m = getattr(t, meth)
-        while meth not in t.__dict__:
-            t = t.__bases__[0]
-        # in some implementations (e.g. PyPy), 'm' can be a regular unbound
-        # method object; the getattr() below obtains its underlying function.
-        self.assertEqual(getattr(m, 'im_func', m), t.__dict__[meth])
-        d['a'] = deepcopy(a)
-        m(d['a'], b)
-        self.assertEqual(d['a'], res)
-        d['a'] = deepcopy(a)
-        bm = getattr(d['a'], meth)
-        bm(b)
-        self.assertEqual(d['a'], res)
-
-    def set2op_test(self, a, b, c, res, stmt="a[b]=c", meth="__setitem__"):
-        d = {'a': deepcopy(a), 'b': b, 'c': c}
-        exec stmt in d
-        self.assertEqual(d['a'], res)
-        t = type(a)
-        m = getattr(t, meth)
-        while meth not in t.__dict__:
-            t = t.__bases__[0]
-        # in some implementations (e.g. PyPy), 'm' can be a regular unbound
-        # method object; the getattr() below obtains its underlying function.
-        self.assertEqual(getattr(m, 'im_func', m), t.__dict__[meth])
-        d['a'] = deepcopy(a)
-        m(d['a'], b, c)
-        self.assertEqual(d['a'], res)
-        d['a'] = deepcopy(a)
-        bm = getattr(d['a'], meth)
-        bm(b, c)
-        self.assertEqual(d['a'], res)
-
-    def set3op_test(self, a, b, c, d, res, stmt="a[b:c]=d", meth="__setslice__"):
-        dictionary = {'a': deepcopy(a), 'b': b, 'c': c, 'd': d}
-        exec stmt in dictionary
-        self.assertEqual(dictionary['a'], res)
-        t = type(a)
-        while meth not in t.__dict__:
-            t = t.__bases__[0]
-        m = getattr(t, meth)
-        # in some implementations (e.g. PyPy), 'm' can be a regular unbound
-        # method object; the getattr() below obtains its underlying function.
-        self.assertEqual(getattr(m, 'im_func', m), t.__dict__[meth])
-        dictionary['a'] = deepcopy(a)
-        m(dictionary['a'], b, c, d)
-        self.assertEqual(dictionary['a'], res)
-        dictionary['a'] = deepcopy(a)
-        bm = getattr(dictionary['a'], meth)
-        bm(b, c, d)
-        self.assertEqual(dictionary['a'], res)
-
-    def test_lists(self):
-        # Testing list operations...
-        # Asserts are within individual test methods
-        self.binop_test([1], [2], [1,2], "a+b", "__add__")
-        self.binop_test([1,2,3], 2, 1, "b in a", "__contains__")
-        self.binop_test([1,2,3], 4, 0, "b in a", "__contains__")
-        self.binop_test([1,2,3], 1, 2, "a[b]", "__getitem__")
-        self.ternop_test([1,2,3], 0, 2, [1,2], "a[b:c]", "__getslice__")
-        self.setop_test([1], [2], [1,2], "a+=b", "__iadd__")
-        self.setop_test([1,2], 3, [1,2,1,2,1,2], "a*=b", "__imul__")
-        self.unop_test([1,2,3], 3, "len(a)", "__len__")
-        self.binop_test([1,2], 3, [1,2,1,2,1,2], "a*b", "__mul__")
-        self.binop_test([1,2], 3, [1,2,1,2,1,2], "b*a", "__rmul__")
-        self.set2op_test([1,2], 1, 3, [1,3], "a[b]=c", "__setitem__")
-        self.set3op_test([1,2,3,4], 1, 3, [5,6], [1,5,6,4], "a[b:c]=d",
-                        "__setslice__")
-
-    def test_dicts(self):
-        # Testing dict operations...
-        if hasattr(dict, '__cmp__'):   # PyPy has only rich comparison on dicts
-            self.binop_test({1:2}, {2:1}, -1, "cmp(a,b)", "__cmp__")
-        else:
-            self.binop_test({1:2}, {2:1}, True, "a < b", "__lt__")
-        self.binop_test({1:2,3:4}, 1, 1, "b in a", "__contains__")
-        self.binop_test({1:2,3:4}, 2, 0, "b in a", "__contains__")
-        self.binop_test({1:2,3:4}, 1, 2, "a[b]", "__getitem__")
-
-        d = {1:2, 3:4}
-        l1 = []
-        for i in d.keys():
-            l1.append(i)
-        l = []
-        for i in iter(d):
-            l.append(i)
-        self.assertEqual(l, l1)
-        l = []
-        for i in d.__iter__():
-            l.append(i)
-        self.assertEqual(l, l1)
-        l = []
-        for i in dict.__iter__(d):
-            l.append(i)
-        self.assertEqual(l, l1)
-        d = {1:2, 3:4}
-        self.unop_test(d, 2, "len(a)", "__len__")
-        self.assertEqual(eval(repr(d), {}), d)
-        self.assertEqual(eval(d.__repr__(), {}), d)
-        self.set2op_test({1:2,3:4}, 2, 3, {1:2,2:3,3:4}, "a[b]=c",
-                        "__setitem__")
-
-    # Tests for unary and binary operators
-    def number_operators(self, a, b, skip=[]):
-        dict = {'a': a, 'b': b}
-
-        for name, expr in self.binops.items():
-            if name not in skip:
-                name = "__%s__" % name
-                if hasattr(a, name):
-                    res = eval(expr, dict)
-                    self.binop_test(a, b, res, expr, name)
-
-        for name, expr in self.unops.items():
-            if name not in skip:
-                name = "__%s__" % name
-                if hasattr(a, name):
-                    res = eval(expr, dict)
-                    self.unop_test(a, res, expr, name)
-
-    def test_ints(self):
-        # Testing int operations...
-        self.number_operators(100, 3)
-        # The following crashes in Python 2.2
-        self.assertEqual((1).__nonzero__(), 1)
-        self.assertEqual((0).__nonzero__(), 0)
-        # This returns 'NotImplemented' in Python 2.2
-        class C(int):
-            def __add__(self, other):
-                return NotImplemented
-        self.assertEqual(C(5L), 5)
-        try:
-            C() + ""
-        except TypeError:
-            pass
-        else:
-            self.fail("NotImplemented should have caused TypeError")
-        try:
-            C(sys.maxint+1)
-        except OverflowError:
-            pass
-        else:
-            self.fail("should have raised OverflowError")
-
-    def test_longs(self):
-        # Testing long operations...
-        self.number_operators(100L, 3L)
-
-    def test_floats(self):
-        # Testing float operations...
-        self.number_operators(100.0, 3.0)
-
-    def test_complexes(self):
-        # Testing complex operations...
-        self.number_operators(100.0j, 3.0j, skip=['lt', 'le', 'gt', 'ge',
-                                                  'int', 'long', 'float'])
-
-        class Number(complex):
-            __slots__ = ['prec']
-            def __new__(cls, *args, **kwds):
-                result = complex.__new__(cls, *args)
-                result.prec = kwds.get('prec', 12)
-                return result
-            def __repr__(self):
-                prec = self.prec
-                if self.imag == 0.0:
-                    return "%.*g" % (prec, self.real)
-                if self.real == 0.0:
-                    return "%.*gj" % (prec, self.imag)
-                return "(%.*g+%.*gj)" % (prec, self.real, prec, self.imag)
-            __str__ = __repr__
-
-        a = Number(3.14, prec=6)
-        self.assertEqual(repr(a), "3.14")
-        self.assertEqual(a.prec, 6)
-
-        a = Number(a, prec=2)
-        self.assertEqual(repr(a), "3.1")
-        self.assertEqual(a.prec, 2)
-
-        a = Number(234.5)
-        self.assertEqual(repr(a), "234.5")
-        self.assertEqual(a.prec, 12)
-
-    @test_support.impl_detail("the module 'xxsubtype' is internal")
-    def test_spam_lists(self):
-        # Testing spamlist operations...
-        import copy, xxsubtype as spam
-
-        def spamlist(l, memo=None):
-            import xxsubtype as spam
-            return spam.spamlist(l)
-
-        # This is an ugly hack:
-        copy._deepcopy_dispatch[spam.spamlist] = spamlist
-
-        self.binop_test(spamlist([1]), spamlist([2]), spamlist([1,2]), "a+b",
-                       "__add__")
-        self.binop_test(spamlist([1,2,3]), 2, 1, "b in a", "__contains__")
-        self.binop_test(spamlist([1,2,3]), 4, 0, "b in a", "__contains__")
-        self.binop_test(spamlist([1,2,3]), 1, 2, "a[b]", "__getitem__")
-        self.ternop_test(spamlist([1,2,3]), 0, 2, spamlist([1,2]), "a[b:c]",
-                        "__getslice__")
-        self.setop_test(spamlist([1]), spamlist([2]), spamlist([1,2]), "a+=b",
-                       "__iadd__")
-        self.setop_test(spamlist([1,2]), 3, spamlist([1,2,1,2,1,2]), "a*=b",
-                       "__imul__")
-        self.unop_test(spamlist([1,2,3]), 3, "len(a)", "__len__")
-        self.binop_test(spamlist([1,2]), 3, spamlist([1,2,1,2,1,2]), "a*b",
-                       "__mul__")
-        self.binop_test(spamlist([1,2]), 3, spamlist([1,2,1,2,1,2]), "b*a",
-                       "__rmul__")
-        self.set2op_test(spamlist([1,2]), 1, 3, spamlist([1,3]), "a[b]=c",
-                        "__setitem__")
-        self.set3op_test(spamlist([1,2,3,4]), 1, 3, spamlist([5,6]),
-                   spamlist([1,5,6,4]), "a[b:c]=d", "__setslice__")
-        # Test subclassing
-        class C(spam.spamlist):
-            def foo(self): return 1
-        a = C()
-        self.assertEqual(a, [])
-        self.assertEqual(a.foo(), 1)
-        a.append(100)
-        self.assertEqual(a, [100])
-        self.assertEqual(a.getstate(), 0)
-        a.setstate(42)
-        self.assertEqual(a.getstate(), 42)
-
-    @test_support.impl_detail("the module 'xxsubtype' is internal")
-    def test_spam_dicts(self):
-        # Testing spamdict operations...
-        import copy, xxsubtype as spam
-        def spamdict(d, memo=None):
-            import xxsubtype as spam
-            sd = spam.spamdict()
-            for k, v in d.items():
-                sd[k] = v
-            return sd
-        # This is an ugly hack:
-        copy._deepcopy_dispatch[spam.spamdict] = spamdict
-
-        self.binop_test(spamdict({1:2}), spamdict({2:1}), -1, "cmp(a,b)",
-                       "__cmp__")
-        self.binop_test(spamdict({1:2,3:4}), 1, 1, "b in a", "__contains__")
-        self.binop_test(spamdict({1:2,3:4}), 2, 0, "b in a", "__contains__")
-        self.binop_test(spamdict({1:2,3:4}), 1, 2, "a[b]", "__getitem__")
-        d = spamdict({1:2,3:4})
-        l1 = []
-        for i in d.keys():
-            l1.append(i)
-        l = []
-        for i in iter(d):
-            l.append(i)
-        self.assertEqual(l, l1)
-        l = []
-        for i in d.__iter__():
-            l.append(i)
-        self.assertEqual(l, l1)
-        l = []
-        for i in type(spamdict({})).__iter__(d):
-            l.append(i)
-        self.assertEqual(l, l1)
-        straightd = {1:2, 3:4}
-        spamd = spamdict(straightd)
-        self.unop_test(spamd, 2, "len(a)", "__len__")
-        self.unop_test(spamd, repr(straightd), "repr(a)", "__repr__")
-        self.set2op_test(spamdict({1:2,3:4}), 2, 3, spamdict({1:2,2:3,3:4}),
-                   "a[b]=c", "__setitem__")
-        # Test subclassing
-        class C(spam.spamdict):
-            def foo(self): return 1
-        a = C()
-        self.assertEqual(a.items(), [])
-        self.assertEqual(a.foo(), 1)
-        a['foo'] = 'bar'
-        self.assertEqual(a.items(), [('foo', 'bar')])
-        self.assertEqual(a.getstate(), 0)
-        a.setstate(100)
-        self.assertEqual(a.getstate(), 100)
-
-class ClassPropertiesAndMethods(unittest.TestCase):
-
-    def test_python_dicts(self):
-        # Testing Python subclass of dict...
-        self.assertTrue(issubclass(dict, dict))
-        self.assertIsInstance({}, dict)
-        d = dict()
-        self.assertEqual(d, {})
-        self.assertTrue(d.__class__ is dict)
-        self.assertIsInstance(d, dict)
-        class C(dict):
-            state = -1
-            def __init__(self_local, *a, **kw):
-                if a:
-                    self.assertEqual(len(a), 1)
-                    self_local.state = a[0]
-                if kw:
-                    for k, v in kw.items():
-                        self_local[v] = k
-            def __getitem__(self, key):
-                return self.get(key, 0)
-            def __setitem__(self_local, key, value):
-                self.assertIsInstance(key, type(0))
-                dict.__setitem__(self_local, key, value)
-            def setstate(self, state):
-                self.state = state
-            def getstate(self):
-                return self.state
-        self.assertTrue(issubclass(C, dict))
-        a1 = C(12)
-        self.assertEqual(a1.state, 12)
-        a2 = C(foo=1, bar=2)
-        self.assertEqual(a2[1] == 'foo' and a2[2], 'bar')
-        a = C()
-        self.assertEqual(a.state, -1)
-        self.assertEqual(a.getstate(), -1)
-        a.setstate(0)
-        self.assertEqual(a.state, 0)
-        self.assertEqual(a.getstate(), 0)
-        a.setstate(10)
-        self.assertEqual(a.state, 10)
-        self.assertEqual(a.getstate(), 10)
-        self.assertEqual(a[42], 0)
-        a[42] = 24
-        self.assertEqual(a[42], 24)
-        N = 50
-        for i in range(N):
-            a[i] = C()
-            for j in range(N):
-                a[i][j] = i*j
-        for i in range(N):
-            for j in range(N):
-                self.assertEqual(a[i][j], i*j)
-
-    def test_python_lists(self):
-        # Testing Python subclass of list...
-        class C(list):
-            def __getitem__(self, i):
-                return list.__getitem__(self, i) + 100
-            def __getslice__(self, i, j):
-                return (i, j)
-        a = C()
-        a.extend([0,1,2])
-        self.assertEqual(a[0], 100)
-        self.assertEqual(a[1], 101)
-        self.assertEqual(a[2], 102)
-        self.assertEqual(a[100:200], (100,200))
-
-    def test_metaclass(self):
-        # Testing __metaclass__...
-        class C:
-            __metaclass__ = type
-            def __init__(self):
-                self.__state = 0
-            def getstate(self):
-                return self.__state
-            def setstate(self, state):
-                self.__state = state
-        a = C()
-        self.assertEqual(a.getstate(), 0)
-        a.setstate(10)
-        self.assertEqual(a.getstate(), 10)
-        class D:
-            class __metaclass__(type):
-                def myself(cls): return cls
-        self.assertEqual(D.myself(), D)
-        d = D()
-        self.assertEqual(d.__class__, D)
-        class M1(type):
-            def __new__(cls, name, bases, dict):
-                dict['__spam__'] = 1
-                return type.__new__(cls, name, bases, dict)
-        class C:
-            __metaclass__ = M1
-        self.assertEqual(C.__spam__, 1)
-        c = C()
-        self.assertEqual(c.__spam__, 1)
-
-        class _instance(object):
-            pass
-        class M2(object):
-            @staticmethod
-            def __new__(cls, name, bases, dict):
-                self = object.__new__(cls)
-                self.name = name
-                self.bases = bases
-                self.dict = dict
-                return self
-            def __call__(self):
-                it = _instance()
-                # Early binding of methods
-                for key in self.dict:
-                    if key.startswith("__"):
-                        continue
-                    setattr(it, key, self.dict[key].__get__(it, self))
-                return it
-        class C:
-            __metaclass__ = M2
-            def spam(self):
-                return 42
-        self.assertEqual(C.name, 'C')
-        self.assertEqual(C.bases, ())
-        self.assertIn('spam', C.dict)
-        c = C()
-        self.assertEqual(c.spam(), 42)
-
-        # More metaclass examples
-
-        class autosuper(type):
-            # Automatically add __super to the class
-            # This trick only works for dynamic classes
-            def __new__(metaclass, name, bases, dict):
-                cls = super(autosuper, metaclass).__new__(metaclass,
-                                                          name, bases, dict)
-                # Name mangling for __super removes leading underscores
-                while name[:1] == "_":
-                    name = name[1:]
-                if name:
-                    name = "_%s__super" % name
-                else:
-                    name = "__super"
-                setattr(cls, name, super(cls))
-                return cls
-        class A:
-            __metaclass__ = autosuper
-            def meth(self):
-                return "A"
-        class B(A):
-            def meth(self):
-                return "B" + self.__super.meth()
-        class C(A):
-            def meth(self):
-                return "C" + self.__super.meth()
-        class D(C, B):
-            def meth(self):
-                return "D" + self.__super.meth()
-        self.assertEqual(D().meth(), "DCBA")
-        class E(B, C):
-            def meth(self):
-                return "E" + self.__super.meth()
-        self.assertEqual(E().meth(), "EBCA")
-
-        class autoproperty(type):
-            # Automatically create property attributes when methods
-            # named _get_x and/or _set_x are found
-            def __new__(metaclass, name, bases, dict):
-                hits = {}
-                for key, val in dict.iteritems():
-                    if key.startswith("_get_"):
-                        key = key[5:]
-                        get, set = hits.get(key, (None, None))
-                        get = val
-                        hits[key] = get, set
-                    elif key.startswith("_set_"):
-                        key = key[5:]
-                        get, set = hits.get(key, (None, None))
-                        set = val
-                        hits[key] = get, set
-                for key, (get, set) in hits.iteritems():
-                    dict[key] = property(get, set)
-                return super(autoproperty, metaclass).__new__(metaclass,
-                                                            name, bases, dict)
-        class A:
-            __metaclass__ = autoproperty
-            def _get_x(self):
-                return -self.__x
-            def _set_x(self, x):
-                self.__x = -x
-        a = A()
-        self.assertTrue(not hasattr(a, "x"))
-        a.x = 12
-        self.assertEqual(a.x, 12)
-        self.assertEqual(a._A__x, -12)
-
-        class multimetaclass(autoproperty, autosuper):
-            # Merge of multiple cooperating metaclasses
-            pass
-        class A:
-            __metaclass__ = multimetaclass
-            def _get_x(self):
-                return "A"
-        class B(A):
-            def _get_x(self):
-                return "B" + self.__super._get_x()
-        class C(A):
-            def _get_x(self):
-                return "C" + self.__super._get_x()
-        class D(C, B):
-            def _get_x(self):
-                return "D" + self.__super._get_x()
-        self.assertEqual(D().x, "DCBA")
-
-        # Make sure type(x) doesn't call x.__class__.__init__
-        class T(type):
-            counter = 0
-            def __init__(self, *args):
-                T.counter += 1
-        class C:
-            __metaclass__ = T
-        self.assertEqual(T.counter, 1)
-        a = C()
-        self.assertEqual(type(a), C)
-        self.assertEqual(T.counter, 1)
-
-        class C(object): pass
-        c = C()
-        try: c()
-        except TypeError: pass
-        else: self.fail("calling object w/o call method should raise "
-                        "TypeError")
-
-        # Testing code to find most derived baseclass
-        class A(type):
-            def __new__(*args, **kwargs):
-                return type.__new__(*args, **kwargs)
-
-        class B(object):
-            pass
-
-        class C(object):
-            __metaclass__ = A
-
-        # The most derived metaclass of D is A rather than type.
-        class D(B, C):
-            pass
-
-    def test_module_subclasses(self):
-        # Testing Python subclass of module...
-        log = []
-        MT = type(sys)
-        class MM(MT):
-            def __init__(self, name):
-                MT.__init__(self, name)
-            def __getattribute__(self, name):
-                log.append(("getattr", name))
-                return MT.__getattribute__(self, name)
-            def __setattr__(self, name, value):
-                log.append(("setattr", name, value))
-                MT.__setattr__(self, name, value)
-            def __delattr__(self, name):
-                log.append(("delattr", name))
-                MT.__delattr__(self, name)
-        a = MM("a")
-        a.foo = 12
-        x = a.foo
-        del a.foo
-        self.assertEqual(log, [("setattr", "foo", 12),
-                               ("getattr", "foo"),
-                               ("delattr", "foo")])
-
-        # http://python.org/sf/1174712
-        try:
-            class Module(types.ModuleType, str):
-                pass
-        except TypeError:
-            pass
-        else:
-            self.fail("inheriting from ModuleType and str at the same time "
-                      "should fail")
-
-    def test_multiple_inheritence(self):
-        # Testing multiple inheritance...
-        class C(object):
-            def __init__(self):
-                self.__state = 0
-            def getstate(self):
-                return self.__state
-            def setstate(self, state):
-                self.__state = state
-        a = C()
-        self.assertEqual(a.getstate(), 0)
-        a.setstate(10)
-        self.assertEqual(a.getstate(), 10)
-        class D(dict, C):
-            def __init__(self):
-                type({}).__init__(self)
-                C.__init__(self)
-        d = D()
-        self.assertEqual(d.keys(), [])
-        d["hello"] = "world"
-        self.assertEqual(d.items(), [("hello", "world")])
-        self.assertEqual(d["hello"], "world")
-        self.assertEqual(d.getstate(), 0)
-        d.setstate(10)
-        self.assertEqual(d.getstate(), 10)
-        self.assertEqual(D.__mro__, (D, dict, C, object))
-
-        # SF bug #442833
-        class Node(object):
-            def __int__(self):
-                return int(self.foo())
-            def foo(self):
-                return "23"
-        class Frag(Node, list):
-            def foo(self):
-                return "42"
-        self.assertEqual(Node().__int__(), 23)
-        self.assertEqual(int(Node()), 23)
-        self.assertEqual(Frag().__int__(), 42)
-        self.assertEqual(int(Frag()), 42)
-
-        # MI mixing classic and new-style classes.
-
-        class A:
-            x = 1
-
-        class B(A):
-            pass
-
-        class C(A):
-            x = 2
-
-        class D(B, C):
-            pass
-        self.assertEqual(D.x, 1)
-
-        # Classic MRO is preserved for a classic base class.
-        class E(D, object):
-            pass
-        self.assertEqual(E.__mro__, (E, D, B, A, C, object))
-        self.assertEqual(E.x, 1)
-
-        # But with a mix of classic bases, their MROs are combined using
-        # new-style MRO.
-        class F(B, C, object):
-            pass
-        self.assertEqual(F.__mro__, (F, B, C, A, object))
-        self.assertEqual(F.x, 2)
-
-        # Try something else.
-        class C:
-            def cmethod(self):
-                return "C a"
-            def all_method(self):
-                return "C b"
-
-        class M1(C, object):
-            def m1method(self):
-                return "M1 a"
-            def all_method(self):
-                return "M1 b"
-
-        self.assertEqual(M1.__mro__, (M1, C, object))
-        m = M1()
-        self.assertEqual(m.cmethod(), "C a")
-        self.assertEqual(m.m1method(), "M1 a")
-        self.assertEqual(m.all_method(), "M1 b")
-
-        class D(C):
-            def dmethod(self):
-                return "D a"
-            def all_method(self):
-                return "D b"
-
-        class M2(D, object):
-            def m2method(self):
-                return "M2 a"
-            def all_method(self):
-                return "M2 b"
-
-        self.assertEqual(M2.__mro__, (M2, D, C, object))
-        m = M2()
-        self.assertEqual(m.cmethod(), "C a")
-        self.assertEqual(m.dmethod(), "D a")
-        self.assertEqual(m.m2method(), "M2 a")
-        self.assertEqual(m.all_method(), "M2 b")
-
-        class M3(M1, M2, object):
-            def m3method(self):
-                return "M3 a"
-            def all_method(self):
-                return "M3 b"
-        self.assertEqual(M3.__mro__, (M3, M1, M2, D, C, object))
-        m = M3()
-        self.assertEqual(m.cmethod(), "C a")
-        self.assertEqual(m.dmethod(), "D a")
-        self.assertEqual(m.m1method(), "M1 a")
-        self.assertEqual(m.m2method(), "M2 a")
-        self.assertEqual(m.m3method(), "M3 a")
-        self.assertEqual(m.all_method(), "M3 b")
-
-        class Classic:
-            pass
-        try:
-            class New(Classic):
-                __metaclass__ = type
-        except TypeError:
-            pass
-        else:
-            self.fail("new class with only classic bases - shouldn't be")
-
-    def test_diamond_inheritence(self):
-        # Testing multiple inheritance special cases...
-        class A(object):
-            def spam(self): return "A"
-        self.assertEqual(A().spam(), "A")
-        class B(A):
-            def boo(self): return "B"
-            def spam(self): return "B"
-        self.assertEqual(B().spam(), "B")
-        self.assertEqual(B().boo(), "B")
-        class C(A):
-            def boo(self): return "C"
-        self.assertEqual(C().spam(), "A")
-        self.assertEqual(C().boo(), "C")
-        class D(B, C): pass
-        self.assertEqual(D().spam(), "B")
-        self.assertEqual(D().boo(), "B")
-        self.assertEqual(D.__mro__, (D, B, C, A, object))
-        class E(C, B): pass
-        self.assertEqual(E().spam(), "B")
-        self.assertEqual(E().boo(), "C")
-        self.assertEqual(E.__mro__, (E, C, B, A, object))
-        # MRO order disagreement
-        try:
-            class F(D, E): pass
-        except TypeError:
-            pass
-        else:
-            self.fail("expected MRO order disagreement (F)")
-        try:
-            class G(E, D): pass
-        except TypeError:
-            pass
-        else:
-            self.fail("expected MRO order disagreement (G)")
-
-    # see thread python-dev/2002-October/029035.html
-    def test_ex5_from_c3_switch(self):
-        # Testing ex5 from C3 switch discussion...
-        class A(object): pass
-        class B(object): pass
-        class C(object): pass
-        class X(A): pass
-        class Y(A): pass
-        class Z(X,B,Y,C): pass
-        self.assertEqual(Z.__mro__, (Z, X, B, Y, A, C, object))
-
-    # see "A Monotonic Superclass Linearization for Dylan",
-    # by Kim Barrett et al. (OOPSLA 1996)
-    def test_monotonicity(self):
-        # Testing MRO monotonicity...
-        class Boat(object): pass
-        class DayBoat(Boat): pass
-        class WheelBoat(Boat): pass
-        class EngineLess(DayBoat): pass
-        class SmallMultihull(DayBoat): pass
-        class PedalWheelBoat(EngineLess,WheelBoat): pass
-        class SmallCatamaran(SmallMultihull): pass
-        class Pedalo(PedalWheelBoat,SmallCatamaran): pass
-
-        self.assertEqual(PedalWheelBoat.__mro__,
-              (PedalWheelBoat, EngineLess, DayBoat, WheelBoat, Boat, object))
-        self.assertEqual(SmallCatamaran.__mro__,
-              (SmallCatamaran, SmallMultihull, DayBoat, Boat, object))
-        self.assertEqual(Pedalo.__mro__,
-              (Pedalo, PedalWheelBoat, EngineLess, SmallCatamaran,
-               SmallMultihull, DayBoat, WheelBoat, Boat, object))
-
-    # see "A Monotonic Superclass Linearization for Dylan",
-    # by Kim Barrett et al. (OOPSLA 1996)
-    def test_consistency_with_epg(self):
-        # Testing consistency with EPG...
-        class Pane(object): pass
-        class ScrollingMixin(object): pass
-        class EditingMixin(object): pass
-        class ScrollablePane(Pane,ScrollingMixin): pass
-        class EditablePane(Pane,EditingMixin): pass
-        class EditableScrollablePane(ScrollablePane,EditablePane): pass
-
-        self.assertEqual(EditableScrollablePane.__mro__,
-              (EditableScrollablePane, ScrollablePane, EditablePane, Pane,
-                ScrollingMixin, EditingMixin, object))
-
-    def test_mro_disagreement(self):
-        # Testing error messages for MRO disagreement...
-        mro_err_msg = """Cannot create a consistent method resolution
-order (MRO) for bases """
-
-        def raises(exc, expected, callable, *args):
-            try:
-                callable(*args)
-            except exc, msg:
-                # the exact msg is generally considered an impl detail
-                if test_support.check_impl_detail():
-                    if not str(msg).startswith(expected):
-                        self.fail("Message %r, expected %r" %
-                                  (str(msg), expected))
-            else:
-                self.fail("Expected %s" % exc)
-
-        class A(object): pass
-        class B(A): pass
-        class C(object): pass
-
-        # Test some very simple errors
-        raises(TypeError, "duplicate base class A",
-               type, "X", (A, A), {})
-        raises(TypeError, mro_err_msg,
-               type, "X", (A, B), {})
-        raises(TypeError, mro_err_msg,
-               type, "X", (A, C, B), {})
-        # Test a slightly more complex error
-        class GridLayout(object): pass
-        class HorizontalGrid(GridLayout): pass
-        class VerticalGrid(GridLayout): pass
-        class HVGrid(HorizontalGrid, VerticalGrid): pass
-        class VHGrid(VerticalGrid, HorizontalGrid): pass
-        raises(TypeError, mro_err_msg,
-               type, "ConfusedGrid", (HVGrid, VHGrid), {})
-
-    def test_object_class(self):
-        # Testing object class...
-        a = object()
-        self.assertEqual(a.__class__, object)
-        self.assertEqual(type(a), object)
-        b = object()
-        self.assertNotEqual(a, b)
-        self.assertFalse(hasattr(a, "foo"))
-        try:
-            a.foo = 12
-        except (AttributeError, TypeError):
-            pass
-        else:
-            self.fail("object() should not allow setting a foo attribute")
-        self.assertFalse(hasattr(object(), "__dict__"))
-
-        class Cdict(object):
-            pass
-        x = Cdict()
-        self.assertEqual(x.__dict__, {})
-        x.foo = 1
-        self.assertEqual(x.foo, 1)
-        self.assertEqual(x.__dict__, {'foo': 1})
-
-    def test_slots(self):
-        # Testing __slots__...
-        class C0(object):
-            __slots__ = []
-        x = C0()
-        self.assertFalse(hasattr(x, "__dict__"))
-        self.assertFalse(hasattr(x, "foo"))
-
-        class C1(object):
-            __slots__ = ['a']
-        x = C1()
-        self.assertFalse(hasattr(x, "__dict__"))
-        self.assertFalse(hasattr(x, "a"))
-        x.a = 1
-        self.assertEqual(x.a, 1)
-        x.a = None
-        self.assertEqual(x.a, None)
-        del x.a
-        self.assertFalse(hasattr(x, "a"))
-
-        class C3(object):
-            __slots__ = ['a', 'b', 'c']
-        x = C3()
-        self.assertFalse(hasattr(x, "__dict__"))
-        self.assertFalse(hasattr(x, 'a'))
-        self.assertFalse(hasattr(x, 'b'))
-        self.assertFalse(hasattr(x, 'c'))
-        x.a = 1
-        x.b = 2
-        x.c = 3
-        self.assertEqual(x.a, 1)
-        self.assertEqual(x.b, 2)
-        self.assertEqual(x.c, 3)
-
-        class C4(object):
-            """Validate name mangling"""
-            __slots__ = ['__a']
-            def __init__(self, value):
-                self.__a = value
-            def get(self):
-                return self.__a
-        x = C4(5)
-        self.assertFalse(hasattr(x, '__dict__'))
-        self.assertFalse(hasattr(x, '__a'))
-        self.assertEqual(x.get(), 5)
-        try:
-            x.__a = 6
-        except AttributeError:
-            pass
-        else:
-            self.fail("Double underscored names not mangled")
-
-        # Make sure slot names are proper identifiers
-        try:
-            class C(object):
-                __slots__ = [None]
-        except TypeError:
-            pass
-        else:
-            self.fail("[None] slots not caught")
-        try:
-            class C(object):
-                __slots__ = ["foo bar"]
-        except TypeError:
-            pass
-        else:
-            self.fail("['foo bar'] slots not caught")
-        try:
-            class C(object):
-                __slots__ = ["foo\0bar"]
-        except TypeError:
-            pass
-        else:
-            self.fail("['foo\\0bar'] slots not caught")
-        try:
-            class C(object):
-                __slots__ = ["1"]
-        except TypeError:
-            pass
-        else:
-            self.fail("['1'] slots not caught")
-        try:
-            class C(object):
-                __slots__ = [""]
-        except TypeError:
-            pass
-        else:
-            self.fail("[''] slots not caught")
-        class C(object):
-            __slots__ = ["a", "a_b", "_a", "A0123456789Z"]
-        # XXX(nnorwitz): was there supposed to be something tested
-        # from the class above?
-
-        # Test a single string is not expanded as a sequence.
-        class C(object):
-            __slots__ = "abc"
-        c = C()
-        c.abc = 5
-        self.assertEqual(c.abc, 5)
-
-        # Test unicode slot names
-        try:
-            unicode
-        except NameError:
-            pass
-        else:
-            # Test a single unicode string is not expanded as a sequence.
-            class C(object):
-                __slots__ = unicode("abc")
-            c = C()
-            c.abc = 5
-            self.assertEqual(c.abc, 5)
-
-            # _unicode_to_string used to modify slots in certain circumstances
-            slots = (unicode("foo"), unicode("bar"))
-            class C(object):
-                __slots__ = slots
-            x = C()
-            x.foo = 5
-            self.assertEqual(x.foo, 5)
-            self.assertEqual(type(slots[0]), unicode)
-            # this used to leak references
-            try:
-                class C(object):
-                    __slots__ = [unichr(128)]
-            except (TypeError, UnicodeEncodeError):
-                pass
-            else:
-                self.fail("[unichr(128)] slots not caught")
-
-        # Test leaks
-        class Counted(object):
-            counter = 0    # counts the number of instances alive
-            def __init__(self):
-                Counted.counter += 1
-            def __del__(self):
-                Counted.counter -= 1
-        class C(object):
-            __slots__ = ['a', 'b', 'c']
-        x = C()
-        x.a = Counted()
-        x.b = Counted()
-        x.c = Counted()
-        self.assertEqual(Counted.counter, 3)
-        del x
-        test_support.gc_collect()
-        self.assertEqual(Counted.counter, 0)
-        class D(C):
-            pass
-        x = D()
-        x.a = Counted()
-        x.z = Counted()
-        self.assertEqual(Counted.counter, 2)
-        del x
-        test_support.gc_collect()
-        self.assertEqual(Counted.counter, 0)
-        class E(D):
-            __slots__ = ['e']
-        x = E()
-        x.a = Counted()
-        x.z = Counted()
-        x.e = Counted()
-        self.assertEqual(Counted.counter, 3)
-        del x
-        test_support.gc_collect()
-        self.assertEqual(Counted.counter, 0)
-
-        # Test cyclical leaks [SF bug 519621]
-        class F(object):
-            __slots__ = ['a', 'b']
-        s = F()
-        s.a = [Counted(), s]
-        self.assertEqual(Counted.counter, 1)
-        s = None
-        test_support.gc_collect()
-        self.assertEqual(Counted.counter, 0)
-
-        # Test lookup leaks [SF bug 572567]
-        import gc
-        if hasattr(gc, 'get_objects'):
-            class G(object):
-                def __cmp__(self, other):
-                    return 0
-                __hash__ = None # Silence Py3k warning
-            g = G()
-            orig_objects = len(gc.get_objects())
-            for i in xrange(10):
-                g==g
-            new_objects = len(gc.get_objects())
-            self.assertEqual(orig_objects, new_objects)
-
-        class H(object):
-            __slots__ = ['a', 'b']
-            def __init__(self):
-                self.a = 1
-                self.b = 2
-            def __del__(self_):
-                self.assertEqual(self_.a, 1)
-                self.assertEqual(self_.b, 2)
-        with test_support.captured_output('stderr') as s:
-            h = H()
-            del h
-        self.assertEqual(s.getvalue(), '')
-
-        class X(object):
-            __slots__ = "a"
-        with self.assertRaises(AttributeError):
-            del X().a
-
-    def test_slots_special(self):
-        # Testing __dict__ and __weakref__ in __slots__...
-        class D(object):
-            __slots__ = ["__dict__"]
-        a = D()
-        self.assertTrue(hasattr(a, "__dict__"))
-        self.assertFalse(hasattr(a, "__weakref__"))
-        a.foo = 42
-        self.assertEqual(a.__dict__, {"foo": 42})
-
-        class W(object):
-            __slots__ = ["__weakref__"]
-        a = W()
-        self.assertTrue(hasattr(a, "__weakref__"))
-        self.assertFalse(hasattr(a, "__dict__"))
-        try:
-            a.foo = 42
-        except AttributeError:
-            pass
-        else:
-            self.fail("shouldn't be allowed to set a.foo")
-
-        class C1(W, D):
-            __slots__ = []
-        a = C1()
-        self.assertTrue(hasattr(a, "__dict__"))
-        self.assertTrue(hasattr(a, "__weakref__"))
-        a.foo = 42
-        self.assertEqual(a.__dict__, {"foo": 42})
-
-        class C2(D, W):
-            __slots__ = []
-        a = C2()
-        self.assertTrue(hasattr(a, "__dict__"))
-        self.assertTrue(hasattr(a, "__weakref__"))
-        a.foo = 42
-        self.assertEqual(a.__dict__, {"foo": 42})
-
-    def test_slots_descriptor(self):
-        # Issue2115: slot descriptors did not correctly check
-        # the type of the given object
-        import abc
-        class MyABC:
-            __metaclass__ = abc.ABCMeta
-            __slots__ = "a"
-
-        class Unrelated(object):
-            pass
-        MyABC.register(Unrelated)
-
-        u = Unrelated()
-        self.assertIsInstance(u, MyABC)
-
-        # This used to crash
-        self.assertRaises(TypeError, MyABC.a.__set__, u, 3)
-
-    def test_metaclass_cmp(self):
-        # See bug 7491.
-        class M(type):
-            def __cmp__(self, other):
-                return -1
-        class X(object):
-            __metaclass__ = M
-        self.assertTrue(X < M)
-
-    def test_dynamics(self):
-        # Testing class attribute propagation...
-        class D(object):
-            pass
-        class E(D):
-            pass
-        class F(D):
-            pass
-        D.foo = 1
-        self.assertEqual(D.foo, 1)
-        # Test that dynamic attributes are inherited
-        self.assertEqual(E.foo, 1)
-        self.assertEqual(F.foo, 1)
-        # Test dynamic instances
-        class C(object):
-            pass
-        a = C()
-        self.assertFalse(hasattr(a, "foobar"))
-        C.foobar = 2
-        self.assertEqual(a.foobar, 2)
-        C.method = lambda self: 42
-        self.assertEqual(a.method(), 42)
-        C.__repr__ = lambda self: "C()"
-        self.assertEqual(repr(a), "C()")
-        C.__int__ = lambda self: 100
-        self.assertEqual(int(a), 100)
-        self.assertEqual(a.foobar, 2)
-        self.assertFalse(hasattr(a, "spam"))
-        def mygetattr(self, name):
-            if name == "spam":
-                return "spam"
-            raise AttributeError
-        C.__getattr__ = mygetattr
-        self.assertEqual(a.spam, "spam")
-        a.new = 12
-        self.assertEqual(a.new, 12)
-        def mysetattr(self, name, value):
-            if name == "spam":
-                raise AttributeError
-            return object.__setattr__(self, name, value)
-        C.__setattr__ = mysetattr
-        try:
-            a.spam = "not spam"
-        except AttributeError:
-            pass
-        else:
-            self.fail("expected AttributeError")
-        self.assertEqual(a.spam, "spam")
-        class D(C):
-            pass
-        d = D()
-        d.foo = 1
-        self.assertEqual(d.foo, 1)
-
-        # Test handling of int*seq and seq*int
-        class I(int):
-            pass
-        self.assertEqual("a"*I(2), "aa")
-        self.assertEqual(I(2)*"a", "aa")
-        self.assertEqual(2*I(3), 6)
-        self.assertEqual(I(3)*2, 6)
-        self.assertEqual(I(3)*I(2), 6)
-
-        # Test handling of long*seq and seq*long
-        class L(long):
-            pass
-        self.assertEqual("a"*L(2L), "aa")
-        self.assertEqual(L(2L)*"a", "aa")
-        self.assertEqual(2*L(3), 6)
-        self.assertEqual(L(3)*2, 6)
-        self.assertEqual(L(3)*L(2), 6)
-
-        # Test comparison of classes with dynamic metaclasses
-        class dynamicmetaclass(type):
-            pass
-        class someclass:
-            __metaclass__ = dynamicmetaclass
-        self.assertNotEqual(someclass, object)
-
-    def test_errors(self):
-        # Testing errors...
-        try:
-            class C(list, dict):
-                pass
-        except TypeError:
-            pass
-        else:
-            self.fail("inheritance from both list and dict should be illegal")
-
-        try:
-            class C(object, None):
-                pass
-        except TypeError:
-            pass
-        else:
-            self.fail("inheritance from non-type should be illegal")
-        class Classic:
-            pass
-
-        try:
-            class C(type(len)):
-                pass
-        except TypeError:
-            pass
-        else:
-            self.fail("inheritance from CFunction should be illegal")
-
-        try:
-            class C(object):
-                __slots__ = 1
-        except TypeError:
-            pass
-        else:
-            self.fail("__slots__ = 1 should be illegal")
-
-        try:
-            class C(object):
-                __slots__ = [1]
-        except TypeError:
-            pass
-        else:
-            self.fail("__slots__ = [1] should be illegal")
-
-        class M1(type):
-            pass
-        class M2(type):
-            pass
-        class A1(object):
-            __metaclass__ = M1
-        class A2(object):
-            __metaclass__ = M2
-        try:
-            class B(A1, A2):
-                pass
-        except TypeError:
-            pass
-        else:
-            self.fail("finding the most derived metaclass should have failed")
-
-    def test_classmethods(self):
-        # Testing class methods...
-        class C(object):
-            def foo(*a): return a
-            goo = classmethod(foo)
-        c = C()
-        self.assertEqual(C.goo(1), (C, 1))
-        self.assertEqual(c.goo(1), (C, 1))
-        self.assertEqual(c.foo(1), (c, 1))
-        class D(C):
-            pass
-        d = D()
-        self.assertEqual(D.goo(1), (D, 1))
-        self.assertEqual(d.goo(1), (D, 1))
-        self.assertEqual(d.foo(1), (d, 1))
-        self.assertEqual(D.foo(d, 1), (d, 1))
-        # Test for a specific crash (SF bug 528132)
-        def f(cls, arg): return (cls, arg)
-        ff = classmethod(f)
-        self.assertEqual(ff.__get__(0, int)(42), (int, 42))
-        self.assertEqual(ff.__get__(0)(42), (int, 42))
-
-        # Test super() with classmethods (SF bug 535444)
-        self.assertEqual(C.goo.im_self, C)
-        self.assertEqual(D.goo.im_self, D)
-        self.assertEqual(super(D,D).goo.im_self, D)
-        self.assertEqual(super(D,d).goo.im_self, D)
-        self.assertEqual(super(D,D).goo(), (D,))
-        self.assertEqual(super(D,d).goo(), (D,))
-
-        # Verify that a non-callable will raise
-        meth = classmethod(1).__get__(1)
-        self.assertRaises(TypeError, meth)
-
-        # Verify that classmethod() doesn't allow keyword args
-        try:
-            classmethod(f, kw=1)
-        except TypeError:
-            pass
-        else:
-            self.fail("classmethod shouldn't accept keyword args")
-
-    @test_support.impl_detail("the module 'xxsubtype' is internal")
-    def test_classmethods_in_c(self):
-        # Testing C-based class methods...
-        import xxsubtype as spam
-        a = (1, 2, 3)
-        d = {'abc': 123}
-        x, a1, d1 = spam.spamlist.classmeth(*a, **d)
-        self.assertEqual(x, spam.spamlist)
-        self.assertEqual(a, a1)
-        self.assertEqual(d, d1)
-        x, a1, d1 = spam.spamlist().classmeth(*a, **d)
-        self.assertEqual(x, spam.spamlist)
-        self.assertEqual(a, a1)
-        self.assertEqual(d, d1)
-
-    def test_staticmethods(self):
-        # Testing static methods...
-        class C(object):
-            def foo(*a): return a
-            goo = staticmethod(foo)
-        c = C()
-        self.assertEqual(C.goo(1), (1,))
-        self.assertEqual(c.goo(1), (1,))
-        self.assertEqual(c.foo(1), (c, 1,))
-        class D(C):
-            pass
-        d = D()
-        self.assertEqual(D.goo(1), (1,))
-        self.assertEqual(d.goo(1), (1,))
-        self.assertEqual(d.foo(1), (d, 1))
-        self.assertEqual(D.foo(d, 1), (d, 1))
-
-    @test_support.impl_detail("the module 'xxsubtype' is internal")
-    def test_staticmethods_in_c(self):
-        # Testing C-based static methods...
-        import xxsubtype as spam
-        a = (1, 2, 3)
-        d = {"abc": 123}
-        x, a1, d1 = spam.spamlist.staticmeth(*a, **d)
-        self.assertEqual(x, None)
-        self.assertEqual(a, a1)
-        self.assertEqual(d, d1)
-        x, a1, d2 = spam.spamlist().staticmeth(*a, **d)
-        self.assertEqual(x, None)
-        self.assertEqual(a, a1)
-        self.assertEqual(d, d1)
-
-    def test_classic(self):
-        # Testing classic classes...
-        class C:
-            def foo(*a): return a
-            goo = classmethod(foo)
-        c = C()
-        self.assertEqual(C.goo(1), (C, 1))
-        self.assertEqual(c.goo(1), (C, 1))
-        self.assertEqual(c.foo(1), (c, 1))
-        class D(C):
-            pass
-        d = D()
-        self.assertEqual(D.goo(1), (D, 1))
-        self.assertEqual(d.goo(1), (D, 1))
-        self.assertEqual(d.foo(1), (d, 1))
-        self.assertEqual(D.foo(d, 1), (d, 1))
-        class E: # *not* subclassing from C
-            foo = C.foo
-        self.assertEqual(E().foo, C.foo) # i.e., unbound
-        self.assertTrue(repr(C.foo.__get__(C())).startswith("<bound method "))
-
-    def test_compattr(self):
-        # Testing computed attributes...
-        class C(object):
-            class computed_attribute(object):
-                def __init__(self, get, set=None, delete=None):
-                    self.__get = get
-                    self.__set = set
-                    self.__delete = delete
-                def __get__(self, obj, type=None):
-                    return self.__get(obj)
-                def __set__(self, obj, value):
-                    return self.__set(obj, value)
-                def __delete__(self, obj):
-                    return self.__delete(obj)
-            def __init__(self):
-                self.__x = 0
-            def __get_x(self):
-                x = self.__x
-                self.__x = x+1
-                return x
-            def __set_x(self, x):
-                self.__x = x
-            def __delete_x(self):
-                del self.__x
-            x = computed_attribute(__get_x, __set_x, __delete_x)
-        a = C()
-        self.assertEqual(a.x, 0)
-        self.assertEqual(a.x, 1)
-        a.x = 10
-        self.assertEqual(a.x, 10)
-        self.assertEqual(a.x, 11)
-        del a.x
-        self.assertEqual(hasattr(a, 'x'), 0)
-
-    def test_newslots(self):
-        # Testing __new__ slot override...
-        class C(list):
-            def __new__(cls):
-                self = list.__new__(cls)
-                self.foo = 1
-                return self
-            def __init__(self):
-                self.foo = self.foo + 2
-        a = C()
-        self.assertEqual(a.foo, 3)
-        self.assertEqual(a.__class__, C)
-        class D(C):
-            pass
-        b = D()
-        self.assertEqual(b.foo, 3)
-        self.assertEqual(b.__class__, D)
-
-    def test_altmro(self):
-        # Testing mro() and overriding it...
-        class A(object):
-            def f(self): return "A"
-        class B(A):
-            pass
-        class C(A):
-            def f(self): return "C"
-        class D(B, C):
-            pass
-        self.assertEqual(D.mro(), [D, B, C, A, object])
-        self.assertEqual(D.__mro__, (D, B, C, A, object))
-        self.assertEqual(D().f(), "C")
-
-        class PerverseMetaType(type):
-            def mro(cls):
-                L = type.mro(cls)
-                L.reverse()
-                return L
-        class X(D,B,C,A):
-            __metaclass__ = PerverseMetaType
-        self.assertEqual(X.__mro__, (object, A, C, B, D, X))
-        self.assertEqual(X().f(), "A")
-
-        try:
-            class X(object):
-                class __metaclass__(type):
-                    def mro(self):
-                        return [self, dict, object]
-            # In CPython, the class creation above already raises
-            # TypeError, as a protection against the fact that
-            # instances of X would segfault it.  In other Python
-            # implementations it would be ok to let the class X
-            # be created, but instead get a clean TypeError on the
-            # __setitem__ below.
-            x = object.__new__(X)
-            x[5] = 6
-        except TypeError:
-            pass
-        else:
-            self.fail("devious mro() return not caught")
-
-        try:
-            class X(object):
-                class __metaclass__(type):
-                    def mro(self):
-                        return [1]
-        except TypeError:
-            pass
-        else:
-            self.fail("non-class mro() return not caught")
-
-        try:
-            class X(object):
-                class __metaclass__(type):
-                    def mro(self):
-                        return 1
-        except TypeError:
-            pass
-        else:
-            self.fail("non-sequence mro() return not caught")
-
-    def test_overloading(self):
-        # Testing operator overloading...
-
-        class B(object):
-            "Intermediate class because object doesn't have a __setattr__"
-
-        class C(B):
-            def __getattr__(self, name):
-                if name == "foo":
-                    return ("getattr", name)
-                else:
-                    raise AttributeError
-            def __setattr__(self, name, value):
-                if name == "foo":
-                    self.setattr = (name, value)
-                else:
-                    return B.__setattr__(self, name, value)
-            def __delattr__(self, name):
-                if name == "foo":
-                    self.delattr = name
-                else:
-                    return B.__delattr__(self, name)
-
-            def __getitem__(self, key):
-                return ("getitem", key)
-            def __setitem__(self, key, value):
-                self.setitem = (key, value)
-            def __delitem__(self, key):
-                self.delitem = key
-
-            def __getslice__(self, i, j):
-                return ("getslice", i, j)
-            def __setslice__(self, i, j, value):
-                self.setslice = (i, j, value)
-            def __delslice__(self, i, j):
-                self.delslice = (i, j)
-
-        a = C()
-        self.assertEqual(a.foo, ("getattr", "foo"))
-        a.foo = 12
-        self.assertEqual(a.setattr, ("foo", 12))
-        del a.foo
-        self.assertEqual(a.delattr, "foo")
-
-        self.assertEqual(a[12], ("getitem", 12))
-        a[12] = 21
-        self.assertEqual(a.setitem, (12, 21))
-        del a[12]
-        self.assertEqual(a.delitem, 12)
-
-        self.assertEqual(a[0:10], ("getslice", 0, 10))
-        a[0:10] = "foo"
-        self.assertEqual(a.setslice, (0, 10, "foo"))
-        del a[0:10]
-        self.assertEqual(a.delslice, (0, 10))
-
-    def test_methods(self):
-        # Testing methods...
-        class C(object):
-            def __init__(self, x):
-                self.x = x
-            def foo(self):
-                return self.x
-        c1 = C(1)
-        self.assertEqual(c1.foo(), 1)
-        class D(C):
-            boo = C.foo
-            goo = c1.foo
-        d2 = D(2)
-        self.assertEqual(d2.foo(), 2)
-        self.assertEqual(d2.boo(), 2)
-        self.assertEqual(d2.goo(), 1)
-        class E(object):
-            foo = C.foo
-        self.assertEqual(E().foo, C.foo) # i.e., unbound
-        self.assertTrue(repr(C.foo.__get__(C(1))).startswith("<bound method "))
-
-    def test_special_method_lookup(self):
-        # The lookup of special methods bypasses __getattr__ and
-        # __getattribute__, but they still can be descriptors.
-
-        def run_context(manager):
-            with manager:
-                pass
-        def iden(self):
-            return self
-        def hello(self):
-            return "hello"
-        def empty_seq(self):
-            return []
-        def zero(self):
-            return 0
-        def complex_num(self):
-            return 1j
-        def stop(self):
-            raise StopIteration
-        def return_true(self, thing=None):
-            return True
-        def do_isinstance(obj):
-            return isinstance(int, obj)
-        def do_issubclass(obj):
-            return issubclass(int, obj)
-        def swallow(*args):
-            pass
-        def do_dict_missing(checker):
-            class DictSub(checker.__class__, dict):
-                pass
-            self.assertEqual(DictSub()["hi"], 4)
-        def some_number(self_, key):
-            self.assertEqual(key, "hi")
-            return 4
-        def format_impl(self, spec):
-            return "hello"
-
-        # It would be nice to have every special method tested here, but I'm
-        # only listing the ones I can remember outside of typeobject.c, since it
-        # does it right.
-        specials = [
-            ("__unicode__", unicode, hello, set(), {}),
-            ("__reversed__", reversed, empty_seq, set(), {}),
-            ("__length_hint__", list, zero, set(),
-             {"__iter__" : iden, "next" : stop}),
-            ("__sizeof__", sys.getsizeof, zero, set(), {}),
-            ("__instancecheck__", do_isinstance, return_true, set(), {}),
-            ("__missing__", do_dict_missing, some_number,
-             set(("__class__",)), {}),
-            ("__subclasscheck__", do_issubclass, return_true,
-             set(("__bases__",)), {}),
-            ("__enter__", run_context, iden, set(), {"__exit__" : swallow}),
-            ("__exit__", run_context, swallow, set(), {"__enter__" : iden}),
-            ("__complex__", complex, complex_num, set(), {}),
-            ("__format__", format, format_impl, set(), {}),
-            ("__dir__", dir, empty_seq, set(), {}),
-            ]
-
-        class Checker(object):
-            def __getattr__(self, attr, test=self):
-                test.fail("__getattr__ called with {0}".format(attr))
-            def __getattribute__(self, attr, test=self):
-                if attr not in ok:
-                    test.fail("__getattribute__ called with {0}".format(attr))
-                return object.__getattribute__(self, attr)
-        class SpecialDescr(object):
-            def __init__(self, impl):
-                self.impl = impl
-            def __get__(self, obj, owner):
-                record.append(1)
-                return self.impl.__get__(obj, owner)
-        class MyException(Exception):
-            pass
-        class ErrDescr(object):
-            def __get__(self, obj, owner):
-                raise MyException
-
-        for name, runner, meth_impl, ok, env in specials:
-            class X(Checker):
-                pass
-            for attr, obj in env.iteritems():
-                setattr(X, attr, obj)
-            setattr(X, name, meth_impl)
-            runner(X())
-
-            record = []
-            class X(Checker):
-                pass
-            for attr, obj in env.iteritems():
-                setattr(X, attr, obj)
-            setattr(X, name, SpecialDescr(meth_impl))
-            runner(X())
-            self.assertEqual(record, [1], name)
-
-            class X(Checker):
-                pass
-            for attr, obj in env.iteritems():
-                setattr(X, attr, obj)
-            setattr(X, name, ErrDescr())
-            try:
-                runner(X())
-            except MyException:
-                pass
-            else:
-                self.fail("{0!r} didn't raise".format(name))
-
-    def test_specials(self):
-        # Testing special operators...
-        # Test operators like __hash__ for which a built-in default exists
-
-        # Test the default behavior for static classes
-        class C(object):
-            def __getitem__(self, i):
-                if 0 <= i < 10: return i
-                raise IndexError
-        c1 = C()
-        c2 = C()
-        self.assertTrue(not not c1) # What?
-        self.assertNotEqual(id(c1), id(c2))
-        hash(c1)
-        hash(c2)
-        self.assertEqual(cmp(c1, c2), cmp(id(c1), id(c2)))
-        self.assertEqual(c1, c1)
-        self.assertTrue(c1 != c2)
-        self.assertTrue(not c1 != c1)
-        self.assertTrue(not c1 == c2)
-        # Note that the module name appears in str/repr, and that varies
-        # depending on whether this test is run standalone or from a framework.
-        self.assertTrue(str(c1).find('C object at ') >= 0)
-        self.assertEqual(str(c1), repr(c1))
-        self.assertNotIn(-1, c1)
-        for i in range(10):
-            self.assertIn(i, c1)
-        self.assertNotIn(10, c1)
-        # Test the default behavior for dynamic classes
-        class D(object):
-            def __getitem__(self, i):
-                if 0 <= i < 10: return i
-                raise IndexError
-        d1 = D()
-        d2 = D()
-        self.assertTrue(not not d1)
-        self.assertNotEqual(id(d1), id(d2))
-        hash(d1)
-        hash(d2)
-        self.assertEqual(cmp(d1, d2), cmp(id(d1), id(d2)))
-        self.assertEqual(d1, d1)
-        self.assertNotEqual(d1, d2)
-        self.assertTrue(not d1 != d1)
-        self.assertTrue(not d1 == d2)
-        # Note that the module name appears in str/repr, and that varies
-        # depending on whether this test is run standalone or from a framework.
-        self.assertTrue(str(d1).find('D object at ') >= 0)
-        self.assertEqual(str(d1), repr(d1))
-        self.assertNotIn(-1, d1)
-        for i in range(10):
-            self.assertIn(i, d1)
-        self.assertNotIn(10, d1)
-        # Test overridden behavior for static classes
-        class Proxy(object):
-            def __init__(self, x):
-                self.x = x
-            def __nonzero__(self):
-                return not not self.x
-            def __hash__(self):
-                return hash(self.x)
-            def __eq__(self, other):
-                return self.x == other
-            def __ne__(self, other):
-                return self.x != other
-            def __cmp__(self, other):
-                return cmp(self.x, other.x)
-            def __str__(self):
-                return "Proxy:%s" % self.x
-            def __repr__(self):
-                return "Proxy(%r)" % self.x
-            def __contains__(self, value):
-                return value in self.x
-        p0 = Proxy(0)
-        p1 = Proxy(1)
-        p_1 = Proxy(-1)
-        self.assertFalse(p0)
-        self.assertTrue(not not p1)
-        self.assertEqual(hash(p0), hash(0))
-        self.assertEqual(p0, p0)
-        self.assertNotEqual(p0, p1)
-        self.assertTrue(not p0 != p0)
-        self.assertEqual(not p0, p1)
-        self.assertEqual(cmp(p0, p1), -1)
-        self.assertEqual(cmp(p0, p0), 0)
-        self.assertEqual(cmp(p0, p_1), 1)
-        self.assertEqual(str(p0), "Proxy:0")
-        self.assertEqual(repr(p0), "Proxy(0)")
-        p10 = Proxy(range(10))
-        self.assertNotIn(-1, p10)
-        for i in range(10):
-            self.assertIn(i, p10)
-        self.assertNotIn(10, p10)
-        # Test overridden behavior for dynamic classes
-        class DProxy(object):
-            def __init__(self, x):
-                self.x = x
-            def __nonzero__(self):
-                return not not self.x
-            def __hash__(self):
-                return hash(self.x)
-            def __eq__(self, other):
-                return self.x == other
-            def __ne__(self, other):
-                return self.x != other
-            def __cmp__(self, other):
-                return cmp(self.x, other.x)
-            def __str__(self):
-                return "DProxy:%s" % self.x
-            def __repr__(self):
-                return "DProxy(%r)" % self.x
-            def __contains__(self, value):
-                return value in self.x
-        p0 = DProxy(0)
-        p1 = DProxy(1)
-        p_1 = DProxy(-1)
-        self.assertFalse(p0)
-        self.assertTrue(not not p1)
-        self.assertEqual(hash(p0), hash(0))
-        self.assertEqual(p0, p0)
-        self.assertNotEqual(p0, p1)
-        self.assertNotEqual(not p0, p0)
-        self.assertEqual(not p0, p1)
-        self.assertEqual(cmp(p0, p1), -1)
-        self.assertEqual(cmp(p0, p0), 0)
-        self.assertEqual(cmp(p0, p_1), 1)
-        self.assertEqual(str(p0), "DProxy:0")
-        self.assertEqual(repr(p0), "DProxy(0)")
-        p10 = DProxy(range(10))
-        self.assertNotIn(-1, p10)
-        for i in range(10):
-            self.assertIn(i, p10)
-        self.assertNotIn(10, p10)
-
-        # Safety test for __cmp__
-        def unsafecmp(a, b):
-            if not hasattr(a, '__cmp__'):
-                return   # some types don't have a __cmp__ any more (so the
-                         # test doesn't make sense any more), or maybe they
-                         # never had a __cmp__ at all, e.g. in PyPy
-            try:
-                a.__class__.__cmp__(a, b)
-            except TypeError:
-                pass
-            else:
-                self.fail("shouldn't allow %s.__cmp__(%r, %r)" % (
-                    a.__class__, a, b))
-
-        unsafecmp(u"123", "123")
-        unsafecmp("123", u"123")
-        unsafecmp(1, 1.0)
-        unsafecmp(1.0, 1)
-        unsafecmp(1, 1L)
-        unsafecmp(1L, 1)
-
-    @test_support.impl_detail("custom logic for printing to real file objects")
-    def test_recursions_1(self):
-        # Testing recursion checks ...
-        class Letter(str):
-            def __new__(cls, letter):
-                if letter == 'EPS':
-                    return str.__new__(cls)
-                return str.__new__(cls, letter)
-            def __str__(self):
-                if not self:
-                    return 'EPS'
-                return self
-        # sys.stdout needs to be the original to trigger the recursion bug
-        test_stdout = sys.stdout
-        sys.stdout = test_support.get_original_stdout()
-        try:
-            # nothing should actually be printed, this should raise an exception
-            print Letter('w')
-        except RuntimeError:
-            pass
-        else:
-            self.fail("expected a RuntimeError for print recursion")
-        finally:
-            sys.stdout = test_stdout
-
-    def test_recursions_2(self):
-        # Bug #1202533.
-        class A(object):
-            pass
-        A.__mul__ = types.MethodType(lambda self, x: self * x, None, A)
-        try:
-            A()*2
-        except RuntimeError:
-            pass
-        else:
-            self.fail("expected a RuntimeError")
-
-    def test_weakrefs(self):
-        # Testing weak references...
-        import weakref
-        class C(object):
-            pass
-        c = C()
-        r = weakref.ref(c)
-        self.assertEqual(r(), c)
-        del c
-        test_support.gc_collect()
-        self.assertEqual(r(), None)
-        del r
-        class NoWeak(object):
-            __slots__ = ['foo']
-        no = NoWeak()
-        try:
-            weakref.ref(no)
-        except TypeError, msg:
-            self.assertTrue(str(msg).find("weak reference") >= 0)
-        else:
-            self.fail("weakref.ref(no) should be illegal")
-        class Weak(object):
-            __slots__ = ['foo', '__weakref__']
-        yes = Weak()
-        r = weakref.ref(yes)
-        self.assertEqual(r(), yes)
-        del yes
-        test_support.gc_collect()
-        self.assertEqual(r(), None)
-        del r
-
-    def test_properties(self):
-        # Testing property...
-        class C(object):
-            def getx(self):
-                return self.__x
-            def setx(self, value):
-                self.__x = value
-            def delx(self):
-                del self.__x
-            x = property(getx, setx, delx, doc="I'm the x property.")
-        a = C()
-        self.assertFalse(hasattr(a, "x"))
-        a.x = 42
-        self.assertEqual(a._C__x, 42)
-        self.assertEqual(a.x, 42)
-        del a.x
-        self.assertFalse(hasattr(a, "x"))
-        self.assertFalse(hasattr(a, "_C__x"))
-        C.x.__set__(a, 100)
-        self.assertEqual(C.x.__get__(a), 100)
-        C.x.__delete__(a)
-        self.assertFalse(hasattr(a, "x"))
-
-        raw = C.__dict__['x']
-        self.assertIsInstance(raw, property)
-
-        attrs = dir(raw)
-        self.assertIn("__doc__", attrs)
-        self.assertIn("fget", attrs)
-        self.assertIn("fset", attrs)
-        self.assertIn("fdel", attrs)
-
-        self.assertEqual(raw.__doc__, "I'm the x property.")
-        self.assertTrue(raw.fget is C.__dict__['getx'])
-        self.assertTrue(raw.fset is C.__dict__['setx'])
-        self.assertTrue(raw.fdel is C.__dict__['delx'])
-
-        for attr in "__doc__", "fget", "fset", "fdel":
-            try:
-                setattr(raw, attr, 42)
-            except TypeError, msg:
-                if str(msg).find('readonly') < 0:
-                    self.fail("when setting readonly attr %r on a property, "
-                                     "got unexpected TypeError msg %r" % (attr, str(msg)))
-            else:
-                self.fail("expected TypeError from trying to set readonly %r "
-                                 "attr on a property" % attr)
-
-        class D(object):
-            __getitem__ = property(lambda s: 1/0)
-
-        d = D()
-        try:
-            for i in d:
-                str(i)
-        except ZeroDivisionError:
-            pass
-        else:
-            self.fail("expected ZeroDivisionError from bad property")
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_properties_doc_attrib(self):
-        class E(object):
-            def getter(self):
-                "getter method"
-                return 0
-            def setter(self_, value):
-                "setter method"
-                pass
-            prop = property(getter)
-            self.assertEqual(prop.__doc__, "getter method")
-            prop2 = property(fset=setter)
-            self.assertEqual(prop2.__doc__, None)
-
-    def test_testcapi_no_segfault(self):
-        # this segfaulted in 2.5b2
-        try:
-            import _testcapi
-        except ImportError:
-            pass
-        else:
-            class X(object):
-                p = property(_testcapi.test_with_docstring)
-
-    def test_properties_plus(self):
-        class C(object):
-            foo = property(doc="hello")
-            @foo.getter
-            def foo(self):
-                return self._foo
-            @foo.setter
-            def foo(self, value):
-                self._foo = abs(value)
-            @foo.deleter
-            def foo(self):
-                del self._foo
-        c = C()
-        self.assertEqual(C.foo.__doc__, "hello")
-        self.assertFalse(hasattr(c, "foo"))
-        c.foo = -42
-        self.assertTrue(hasattr(c, '_foo'))
-        self.assertEqual(c._foo, 42)
-        self.assertEqual(c.foo, 42)
-        del c.foo
-        self.assertFalse(hasattr(c, '_foo'))
-        self.assertFalse(hasattr(c, "foo"))
-
-        class D(C):
-            @C.foo.deleter
-            def foo(self):
-                try:
-                    del self._foo
-                except AttributeError:
-                    pass
-        d = D()
-        d.foo = 24
-        self.assertEqual(d.foo, 24)
-        del d.foo
-        del d.foo
-
-        class E(object):
-            @property
-            def foo(self):
-                return self._foo
-            @foo.setter
-            def foo(self, value):
-                raise RuntimeError
-            @foo.setter
-            def foo(self, value):
-                self._foo = abs(value)
-            @foo.deleter
-            def foo(self, value=None):
-                del self._foo
-
-        e = E()
-        e.foo = -42
-        self.assertEqual(e.foo, 42)
-        del e.foo
-
-        class F(E):
-            @E.foo.deleter
-            def foo(self):
-                del self._foo
-            @foo.setter
-            def foo(self, value):
-                self._foo = max(0, value)
-        f = F()
-        f.foo = -10
-        self.assertEqual(f.foo, 0)
-        del f.foo
-
-    def test_dict_constructors(self):
-        # Testing dict constructor ...
-        d = dict()
-        self.assertEqual(d, {})
-        d = dict({})
-        self.assertEqual(d, {})
-        d = dict({1: 2, 'a': 'b'})
-        self.assertEqual(d, {1: 2, 'a': 'b'})
-        self.assertEqual(d, dict(d.items()))
-        self.assertEqual(d, dict(d.iteritems()))
-        d = dict({'one':1, 'two':2})
-        self.assertEqual(d, dict(one=1, two=2))
-        self.assertEqual(d, dict(**d))
-        self.assertEqual(d, dict({"one": 1}, two=2))
-        self.assertEqual(d, dict([("two", 2)], one=1))
-        self.assertEqual(d, dict([("one", 100), ("two", 200)], **d))
-        self.assertEqual(d, dict(**d))
-
-        for badarg in 0, 0L, 0j, "0", [0], (0,):
-            try:
-                dict(badarg)
-            except TypeError:
-                pass
-            except ValueError:
-                if badarg == "0":
-                    # It's a sequence, and its elements are also sequences (gotta
-                    # love strings <wink>), but they aren't of length 2, so this
-                    # one seemed better as a ValueError than a TypeError.
-                    pass
-                else:
-                    self.fail("no TypeError from dict(%r)" % badarg)
-            else:
-                self.fail("no TypeError from dict(%r)" % badarg)
-
-        try:
-            dict({}, {})
-        except TypeError:
-            pass
-        else:
-            self.fail("no TypeError from dict({}, {})")
-
-        class Mapping:
-            # Lacks a .keys() method; will be added later.
-            dict = {1:2, 3:4, 'a':1j}
-
-        try:
-            dict(Mapping())
-        except TypeError:
-            pass
-        else:
-            self.fail("no TypeError from dict(incomplete mapping)")
-
-        Mapping.keys = lambda self: self.dict.keys()
-        Mapping.__getitem__ = lambda self, i: self.dict[i]
-        d = dict(Mapping())
-        self.assertEqual(d, Mapping.dict)
-
-        # Init from sequence of iterable objects, each producing a 2-sequence.
-        class AddressBookEntry:
-            def __init__(self, first, last):
-                self.first = first
-                self.last = last
-            def __iter__(self):
-                return iter([self.first, self.last])
-
-        d = dict([AddressBookEntry('Tim', 'Warsaw'),
-                  AddressBookEntry('Barry', 'Peters'),
-                  AddressBookEntry('Tim', 'Peters'),
-                  AddressBookEntry('Barry', 'Warsaw')])
-        self.assertEqual(d, {'Barry': 'Warsaw', 'Tim': 'Peters'})
-
-        d = dict(zip(range(4), range(1, 5)))
-        self.assertEqual(d, dict([(i, i+1) for i in range(4)]))
-
-        # Bad sequence lengths.
-        for bad in [('tooshort',)], [('too', 'long', 'by 1')]:
-            try:
-                dict(bad)
-            except ValueError:
-                pass
-            else:
-                self.fail("no ValueError from dict(%r)" % bad)
-
-    def test_dir(self):
-        # Testing dir() ...
-        junk = 12
-        self.assertEqual(dir(), ['junk', 'self'])
-        del junk
-
-        # Just make sure these don't blow up!
-        for arg in 2, 2L, 2j, 2e0, [2], "2", u"2", (2,), {2:2}, type, self.test_dir:
-            dir(arg)
-
-        # Try classic classes.
-        class C:
-            Cdata = 1
-            def Cmethod(self): pass
-
-        cstuff = ['Cdata', 'Cmethod', '__doc__', '__module__']
-        self.assertEqual(dir(C), cstuff)
-        self.assertIn('im_self', dir(C.Cmethod))
-
-        c = C()  # c.__doc__ is an odd thing to see here; ditto c.__module__.
-        self.assertEqual(dir(c), cstuff)
-
-        c.cdata = 2
-        c.cmethod = lambda self: 0
-        self.assertEqual(dir(c), cstuff + ['cdata', 'cmethod'])
-        self.assertIn('im_self', dir(c.Cmethod))
-
-        class A(C):
-            Adata = 1
-            def Amethod(self): pass
-
-        astuff = ['Adata', 'Amethod'] + cstuff
-        self.assertEqual(dir(A), astuff)
-        self.assertIn('im_self', dir(A.Amethod))
-        a = A()
-        self.assertEqual(dir(a), astuff)
-        self.assertIn('im_self', dir(a.Amethod))
-        a.adata = 42
-        a.amethod = lambda self: 3
-        self.assertEqual(dir(a), astuff + ['adata', 'amethod'])
-
-        # The same, but with new-style classes.  Since these have object as a
-        # base class, a lot more gets sucked in.
-        def interesting(strings):
-            return [s for s in strings if not s.startswith('_')]
-
-        class C(object):
-            Cdata = 1
-            def Cmethod(self): pass
-
-        cstuff = ['Cdata', 'Cmethod']
-        self.assertEqual(interesting(dir(C)), cstuff)
-
-        c = C()
-        self.assertEqual(interesting(dir(c)), cstuff)
-        self.assertIn('im_self', dir(C.Cmethod))
-
-        c.cdata = 2
-        c.cmethod = lambda self: 0
-        self.assertEqual(interesting(dir(c)), cstuff + ['cdata', 'cmethod'])
-        self.assertIn('im_self', dir(c.Cmethod))
-
-        class A(C):
-            Adata = 1
-            def Amethod(self): pass
-
-        astuff = ['Adata', 'Amethod'] + cstuff
-        self.assertEqual(interesting(dir(A)), astuff)
-        self.assertIn('im_self', dir(A.Amethod))
-        a = A()
-        self.assertEqual(interesting(dir(a)), astuff)
-        a.adata = 42
-        a.amethod = lambda self: 3
-        self.assertEqual(interesting(dir(a)), astuff + ['adata', 'amethod'])
-        self.assertIn('im_self', dir(a.Amethod))
-
-        # Try a module subclass.
-        class M(type(sys)):
-            pass
-        minstance = M("m")
-        minstance.b = 2
-        minstance.a = 1
-        names = [x for x in dir(minstance) if x not in ["__name__", "__doc__"]]
-        self.assertEqual(names, ['a', 'b'])
-
-        class M2(M):
-            def getdict(self):
-                return "Not a dict!"
-            __dict__ = property(getdict)
-
-        m2instance = M2("m2")
-        m2instance.b = 2
-        m2instance.a = 1
-        self.assertEqual(m2instance.__dict__, "Not a dict!")
-        try:
-            dir(m2instance)
-        except TypeError:
-            pass
-
-        # Two essentially featureless objects, just inheriting stuff from
-        # object.
-        self.assertEqual(dir(NotImplemented), dir(Ellipsis))
-        if test_support.check_impl_detail():
-            # None differs in PyPy: it has a __nonzero__
-            self.assertEqual(dir(None), dir(Ellipsis))
-
-        # Nasty test case for proxied objects
-        class Wrapper(object):
-            def __init__(self, obj):
-                self.__obj = obj
-            def __repr__(self):
-                return "Wrapper(%s)" % repr(self.__obj)
-            def __getitem__(self, key):
-                return Wrapper(self.__obj[key])
-            def __len__(self):
-                return len(self.__obj)
-            def __getattr__(self, name):
-                return Wrapper(getattr(self.__obj, name))
-
-        class C(object):
-            def __getclass(self):
-                return Wrapper(type(self))
-            __class__ = property(__getclass)
-
-        dir(C()) # This used to segfault
-
-    def test_supers(self):
-        # Testing super...
-
-        class A(object):
-            def meth(self, a):
-                return "A(%r)" % a
-
-        self.assertEqual(A().meth(1), "A(1)")
-
-        class B(A):
-            def __init__(self):
-                self.__super = super(B, self)
-            def meth(self, a):
-                return "B(%r)" % a + self.__super.meth(a)
-
-        self.assertEqual(B().meth(2), "B(2)A(2)")
-
-        class C(A):
-            def meth(self, a):
-                return "C(%r)" % a + self.__super.meth(a)
-        C._C__super = super(C)
-
-        self.assertEqual(C().meth(3), "C(3)A(3)")
-
-        class D(C, B):
-            def meth(self, a):
-                return "D(%r)" % a + super(D, self).meth(a)
-
-        self.assertEqual(D().meth(4), "D(4)C(4)B(4)A(4)")
-
-        # Test for subclassing super
-
-        class mysuper(super):
-            def __init__(self, *args):
-                return super(mysuper, self).__init__(*args)
-
-        class E(D):
-            def meth(self, a):
-                return "E(%r)" % a + mysuper(E, self).meth(a)
-
-        self.assertEqual(E().meth(5), "E(5)D(5)C(5)B(5)A(5)")
-
-        class F(E):
-            def meth(self, a):
-                s = self.__super # == mysuper(F, self)
-                return "F(%r)[%s]" % (a, s.__class__.__name__) + s.meth(a)
-        F._F__super = mysuper(F)
-
-        self.assertEqual(F().meth(6), "F(6)[mysuper]E(6)D(6)C(6)B(6)A(6)")
-
-        # Make sure certain errors are raised
-
-        try:
-            super(D, 42)
-        except TypeError:
-            pass
-        else:
-            self.fail("shouldn't allow super(D, 42)")
-
-        try:
-            super(D, C())
-        except TypeError:
-            pass
-        else:
-            self.fail("shouldn't allow super(D, C())")
-
-        try:
-            super(D).__get__(12)
-        except TypeError:
-            pass
-        else:
-            self.fail("shouldn't allow super(D).__get__(12)")
-
-        try:
-            super(D).__get__(C())
-        except TypeError:
-            pass
-        else:
-            self.fail("shouldn't allow super(D).__get__(C())")
-
-        # Make sure data descriptors can be overridden and accessed via super
-        # (new feature in Python 2.3)
-
-        class DDbase(object):
-            def getx(self): return 42
-            x = property(getx)
-
-        class DDsub(DDbase):
-            def getx(self): return "hello"
-            x = property(getx)
-
-        dd = DDsub()
-        self.assertEqual(dd.x, "hello")
-        self.assertEqual(super(DDsub, dd).x, 42)
-
-        # Ensure that super() lookup of descriptor from classmethod
-        # works (SF ID# 743627)
-
-        class Base(object):
-            aProp = property(lambda self: "foo")
-
-        class Sub(Base):
-            @classmethod
-            def test(klass):
-                return super(Sub,klass).aProp
-
-        self.assertEqual(Sub.test(), Base.aProp)
-
-        # Verify that super() doesn't allow keyword args
-        try:
-            super(Base, kw=1)
-        except TypeError:
-            pass
-        else:
-            self.assertEqual("super shouldn't accept keyword args")
-
-    def test_basic_inheritance(self):
-        # Testing inheritance from basic types...
-
-        class hexint(int):
-            def __repr__(self):
-                return hex(self)
-            def __add__(self, other):
-                return hexint(int.__add__(self, other))
-            # (Note that overriding __radd__ doesn't work,
-            # because the int type gets first dibs.)
-        self.assertEqual(repr(hexint(7) + 9), "0x10")
-        self.assertEqual(repr(hexint(1000) + 7), "0x3ef")
-        a = hexint(12345)
-        self.assertEqual(a, 12345)
-        self.assertEqual(int(a), 12345)
-        self.assertTrue(int(a).__class__ is int)
-        self.assertEqual(hash(a), hash(12345))
-        self.assertTrue((+a).__class__ is int)
-        self.assertTrue((a >> 0).__class__ is int)
-        self.assertTrue((a << 0).__class__ is int)
-        self.assertTrue((hexint(0) << 12).__class__ is int)
-        self.assertTrue((hexint(0) >> 12).__class__ is int)
-
-        class octlong(long):
-            __slots__ = []
-            def __str__(self):
-                s = oct(self)
-                if s[-1] == 'L':
-                    s = s[:-1]
-                return s
-            def __add__(self, other):
-                return self.__class__(super(octlong, self).__add__(other))
-            __radd__ = __add__
-        self.assertEqual(str(octlong(3) + 5), "010")
-        # (Note that overriding __radd__ here only seems to work
-        # because the example uses a short int left argument.)
-        self.assertEqual(str(5 + octlong(3000)), "05675")
-        a = octlong(12345)
-        self.assertEqual(a, 12345L)
-        self.assertEqual(long(a), 12345L)
-        self.assertEqual(hash(a), hash(12345L))
-        self.assertTrue(long(a).__class__ is long)
-        self.assertTrue((+a).__class__ is long)
-        self.assertTrue((-a).__class__ is long)
-        self.assertTrue((-octlong(0)).__class__ is long)
-        self.assertTrue((a >> 0).__class__ is long)
-        self.assertTrue((a << 0).__class__ is long)
-        self.assertTrue((a - 0).__class__ is long)
-        self.assertTrue((a * 1).__class__ is long)
-        self.assertTrue((a ** 1).__class__ is long)
-        self.assertTrue((a // 1).__class__ is long)
-        self.assertTrue((1 * a).__class__ is long)
-        self.assertTrue((a | 0).__class__ is long)
-        self.assertTrue((a ^ 0).__class__ is long)
-        self.assertTrue((a & -1L).__class__ is long)
-        self.assertTrue((octlong(0) << 12).__class__ is long)
-        self.assertTrue((octlong(0) >> 12).__class__ is long)
-        self.assertTrue(abs(octlong(0)).__class__ is long)
-
-        # Because octlong overrides __add__, we can't check the absence of +0
-        # optimizations using octlong.
-        class longclone(long):
-            pass
-        a = longclone(1)
-        self.assertTrue((a + 0).__class__ is long)
-        self.assertTrue((0 + a).__class__ is long)
-
-        # Check that negative clones don't segfault
-        a = longclone(-1)
-        self.assertEqual(a.__dict__, {})
-        self.assertEqual(long(a), -1)  # self.assertTrue PyNumber_Long() copies the sign bit
-
-        class precfloat(float):
-            __slots__ = ['prec']
-            def __init__(self, value=0.0, prec=12):
-                self.prec = int(prec)
-            def __repr__(self):
-                return "%.*g" % (self.prec, self)
-        self.assertEqual(repr(precfloat(1.1)), "1.1")
-        a = precfloat(12345)
-        self.assertEqual(a, 12345.0)
-        self.assertEqual(float(a), 12345.0)
-        self.assertTrue(float(a).__class__ is float)
-        self.assertEqual(hash(a), hash(12345.0))
-        self.assertTrue((+a).__class__ is float)
-
-        class madcomplex(complex):
-            def __repr__(self):
-                return "%.17gj%+.17g" % (self.imag, self.real)
-        a = madcomplex(-3, 4)
-        self.assertEqual(repr(a), "4j-3")
-        base = complex(-3, 4)
-        self.assertEqual(base.__class__, complex)
-        self.assertEqual(a, base)
-        self.assertEqual(complex(a), base)
-        self.assertEqual(complex(a).__class__, complex)
-        a = madcomplex(a)  # just trying another form of the constructor
-        self.assertEqual(repr(a), "4j-3")
-        self.assertEqual(a, base)
-        self.assertEqual(complex(a), base)
-        self.assertEqual(complex(a).__class__, complex)
-        self.assertEqual(hash(a), hash(base))
-        self.assertEqual((+a).__class__, complex)
-        self.assertEqual((a + 0).__class__, complex)
-        self.assertEqual(a + 0, base)
-        self.assertEqual((a - 0).__class__, complex)
-        self.assertEqual(a - 0, base)
-        self.assertEqual((a * 1).__class__, complex)
-        self.assertEqual(a * 1, base)
-        self.assertEqual((a / 1).__class__, complex)
-        self.assertEqual(a / 1, base)
-
-        class madtuple(tuple):
-            _rev = None
-            def rev(self):
-                if self._rev is not None:
-                    return self._rev
-                L = list(self)
-                L.reverse()
-                self._rev = self.__class__(L)
-                return self._rev
-        a = madtuple((1,2,3,4,5,6,7,8,9,0))
-        self.assertEqual(a, (1,2,3,4,5,6,7,8,9,0))
-        self.assertEqual(a.rev(), madtuple((0,9,8,7,6,5,4,3,2,1)))
-        self.assertEqual(a.rev().rev(), madtuple((1,2,3,4,5,6,7,8,9,0)))
-        for i in range(512):
-            t = madtuple(range(i))
-            u = t.rev()
-            v = u.rev()
-            self.assertEqual(v, t)
-        a = madtuple((1,2,3,4,5))
-        self.assertEqual(tuple(a), (1,2,3,4,5))
-        self.assertTrue(tuple(a).__class__ is tuple)
-        self.assertEqual(hash(a), hash((1,2,3,4,5)))
-        self.assertTrue(a[:].__class__ is tuple)
-        self.assertTrue((a * 1).__class__ is tuple)
-        self.assertTrue((a * 0).__class__ is tuple)
-        self.assertTrue((a + ()).__class__ is tuple)
-        a = madtuple(())
-        self.assertEqual(tuple(a), ())
-        self.assertTrue(tuple(a).__class__ is tuple)
-        self.assertTrue((a + a).__class__ is tuple)
-        self.assertTrue((a * 0).__class__ is tuple)
-        self.assertTrue((a * 1).__class__ is tuple)
-        self.assertTrue((a * 2).__class__ is tuple)
-        self.assertTrue(a[:].__class__ is tuple)
-
-        class madstring(str):
-            _rev = None
-            def rev(self):
-                if self._rev is not None:
-                    return self._rev
-                L = list(self)
-                L.reverse()
-                self._rev = self.__class__("".join(L))
-                return self._rev
-        s = madstring("abcdefghijklmnopqrstuvwxyz")
-        self.assertEqual(s, "abcdefghijklmnopqrstuvwxyz")
-        self.assertEqual(s.rev(), madstring("zyxwvutsrqponmlkjihgfedcba"))
-        self.assertEqual(s.rev().rev(), madstring("abcdefghijklmnopqrstuvwxyz"))
-        for i in range(256):
-            s = madstring("".join(map(chr, range(i))))
-            t = s.rev()
-            u = t.rev()
-            self.assertEqual(u, s)
-        s = madstring("12345")
-        self.assertEqual(str(s), "12345")
-        self.assertTrue(str(s).__class__ is str)
-
-        base = "\x00" * 5
-        s = madstring(base)
-        self.assertEqual(s, base)
-        self.assertEqual(str(s), base)
-        self.assertTrue(str(s).__class__ is str)
-        self.assertEqual(hash(s), hash(base))
-        self.assertEqual({s: 1}[base], 1)
-        self.assertEqual({base: 1}[s], 1)
-        self.assertTrue((s + "").__class__ is str)
-        self.assertEqual(s + "", base)
-        self.assertTrue(("" + s).__class__ is str)
-        self.assertEqual("" + s, base)
-        self.assertTrue((s * 0).__class__ is str)
-        self.assertEqual(s * 0, "")
-        self.assertTrue((s * 1).__class__ is str)
-        self.assertEqual(s * 1, base)
-        self.assertTrue((s * 2).__class__ is str)
-        self.assertEqual(s * 2, base + base)
-        self.assertTrue(s[:].__class__ is str)
-        self.assertEqual(s[:], base)
-        self.assertTrue(s[0:0].__class__ is str)
-        self.assertEqual(s[0:0], "")
-        self.assertTrue(s.strip().__class__ is str)
-        self.assertEqual(s.strip(), base)
-        self.assertTrue(s.lstrip().__class__ is str)
-        self.assertEqual(s.lstrip(), base)
-        self.assertTrue(s.rstrip().__class__ is str)
-        self.assertEqual(s.rstrip(), base)
-        identitytab = ''.join([chr(i) for i in range(256)])
-        self.assertTrue(s.translate(identitytab).__class__ is str)
-        self.assertEqual(s.translate(identitytab), base)
-        self.assertTrue(s.translate(identitytab, "x").__class__ is str)
-        self.assertEqual(s.translate(identitytab, "x"), base)
-        self.assertEqual(s.translate(identitytab, "\x00"), "")
-        self.assertTrue(s.replace("x", "x").__class__ is str)
-        self.assertEqual(s.replace("x", "x"), base)
-        self.assertTrue(s.ljust(len(s)).__class__ is str)
-        self.assertEqual(s.ljust(len(s)), base)
-        self.assertTrue(s.rjust(len(s)).__class__ is str)
-        self.assertEqual(s.rjust(len(s)), base)
-        self.assertTrue(s.center(len(s)).__class__ is str)
-        self.assertEqual(s.center(len(s)), base)
-        self.assertTrue(s.lower().__class__ is str)
-        self.assertEqual(s.lower(), base)
-
-        class madunicode(unicode):
-            _rev = None
-            def rev(self):
-                if self._rev is not None:
-                    return self._rev
-                L = list(self)
-                L.reverse()
-                self._rev = self.__class__(u"".join(L))
-                return self._rev
-        u = madunicode("ABCDEF")
-        self.assertEqual(u, u"ABCDEF")
-        self.assertEqual(u.rev(), madunicode(u"FEDCBA"))
-        self.assertEqual(u.rev().rev(), madunicode(u"ABCDEF"))
-        base = u"12345"
-        u = madunicode(base)
-        self.assertEqual(unicode(u), base)
-        self.assertTrue(unicode(u).__class__ is unicode)
-        self.assertEqual(hash(u), hash(base))
-        self.assertEqual({u: 1}[base], 1)
-        self.assertEqual({base: 1}[u], 1)
-        self.assertTrue(u.strip().__class__ is unicode)
-        self.assertEqual(u.strip(), base)
-        self.assertTrue(u.lstrip().__class__ is unicode)
-        self.assertEqual(u.lstrip(), base)
-        self.assertTrue(u.rstrip().__class__ is unicode)
-        self.assertEqual(u.rstrip(), base)
-        self.assertTrue(u.replace(u"x", u"x").__class__ is unicode)
-        self.assertEqual(u.replace(u"x", u"x"), base)
-        self.assertTrue(u.replace(u"xy", u"xy").__class__ is unicode)
-        self.assertEqual(u.replace(u"xy", u"xy"), base)
-        self.assertTrue(u.center(len(u)).__class__ is unicode)
-        self.assertEqual(u.center(len(u)), base)
-        self.assertTrue(u.ljust(len(u)).__class__ is unicode)
-        self.assertEqual(u.ljust(len(u)), base)
-        self.assertTrue(u.rjust(len(u)).__class__ is unicode)
-        self.assertEqual(u.rjust(len(u)), base)
-        self.assertTrue(u.lower().__class__ is unicode)
-        self.assertEqual(u.lower(), base)
-        self.assertTrue(u.upper().__class__ is unicode)
-        self.assertEqual(u.upper(), base)
-        self.assertTrue(u.capitalize().__class__ is unicode)
-        self.assertEqual(u.capitalize(), base)
-        self.assertTrue(u.title().__class__ is unicode)
-        self.assertEqual(u.title(), base)
-        self.assertTrue((u + u"").__class__ is unicode)
-        self.assertEqual(u + u"", base)
-        self.assertTrue((u"" + u).__class__ is unicode)
-        self.assertEqual(u"" + u, base)
-        self.assertTrue((u * 0).__class__ is unicode)
-        self.assertEqual(u * 0, u"")
-        self.assertTrue((u * 1).__class__ is unicode)
-        self.assertEqual(u * 1, base)
-        self.assertTrue((u * 2).__class__ is unicode)
-        self.assertEqual(u * 2, base + base)
-        self.assertTrue(u[:].__class__ is unicode)
-        self.assertEqual(u[:], base)
-        self.assertTrue(u[0:0].__class__ is unicode)
-        self.assertEqual(u[0:0], u"")
-
-        class sublist(list):
-            pass
-        a = sublist(range(5))
-        self.assertEqual(a, range(5))
-        a.append("hello")
-        self.assertEqual(a, range(5) + ["hello"])
-        a[5] = 5
-        self.assertEqual(a, range(6))
-        a.extend(range(6, 20))
-        self.assertEqual(a, range(20))
-        a[-5:] = []
-        self.assertEqual(a, range(15))
-        del a[10:15]
-        self.assertEqual(len(a), 10)
-        self.assertEqual(a, range(10))
-        self.assertEqual(list(a), range(10))
-        self.assertEqual(a[0], 0)
-        self.assertEqual(a[9], 9)
-        self.assertEqual(a[-10], 0)
-        self.assertEqual(a[-1], 9)
-        self.assertEqual(a[:5], range(5))
-
-        class CountedInput(file):
-            """Counts lines read by self.readline().
-
-            self.lineno is the 0-based ordinal of the last line read, up to
-            a maximum of one greater than the number of lines in the file.
-
-            self.ateof is true if and only if the final "" line has been read,
-            at which point self.lineno stops incrementing, and further calls
-            to readline() continue to return "".
-            """
-
-            lineno = 0
-            ateof = 0
-            def readline(self):
-                if self.ateof:
-                    return ""
-                s = file.readline(self)
-                # Next line works too.
-                # s = super(CountedInput, self).readline()
-                self.lineno += 1
-                if s == "":
-                    self.ateof = 1
-                return s
-
-        f = file(name=test_support.TESTFN, mode='w')
-        lines = ['a\n', 'b\n', 'c\n']
-        try:
-            f.writelines(lines)
-            f.close()
-            f = CountedInput(test_support.TESTFN)
-            for (i, expected) in zip(range(1, 5) + [4], lines + 2 * [""]):
-                got = f.readline()
-                self.assertEqual(expected, got)
-                self.assertEqual(f.lineno, i)
-                self.assertEqual(f.ateof, (i > len(lines)))
-            f.close()
-        finally:
-            try:
-                f.close()
-            except:
-                pass
-            test_support.unlink(test_support.TESTFN)
-
-    def test_keywords(self):
-        # Testing keyword args to basic type constructors ...
-        self.assertEqual(int(x=1), 1)
-        self.assertEqual(float(x=2), 2.0)
-        self.assertEqual(long(x=3), 3L)
-        self.assertEqual(complex(imag=42, real=666), complex(666, 42))
-        self.assertEqual(str(object=500), '500')
-        self.assertEqual(unicode(string='abc', errors='strict'), u'abc')
-        self.assertEqual(tuple(sequence=range(3)), (0, 1, 2))
-        self.assertEqual(list(sequence=(0, 1, 2)), range(3))
-        # note: as of Python 2.3, dict() no longer has an "items" keyword arg
-
-        for constructor in (int, float, long, complex, str, unicode,
-                            tuple, list, file):
-            try:
-                constructor(bogus_keyword_arg=1)
-            except TypeError:
-                pass
-            else:
-                self.fail("expected TypeError from bogus keyword argument to %r"
-                            % constructor)
-
-    def test_str_subclass_as_dict_key(self):
-        # Testing a str subclass used as dict key ..
-
-        class cistr(str):
-            """Sublcass of str that computes __eq__ case-insensitively.
-
-            Also computes a hash code of the string in canonical form.
-            """
-
-            def __init__(self, value):
-                self.canonical = value.lower()
-                self.hashcode = hash(self.canonical)
-
-            def __eq__(self, other):
-                if not isinstance(other, cistr):
-                    other = cistr(other)
-                return self.canonical == other.canonical
-
-            def __hash__(self):
-                return self.hashcode
-
-        self.assertEqual(cistr('ABC'), 'abc')
-        self.assertEqual('aBc', cistr('ABC'))
-        self.assertEqual(str(cistr('ABC')), 'ABC')
-
-        d = {cistr('one'): 1, cistr('two'): 2, cistr('tHree'): 3}
-        self.assertEqual(d[cistr('one')], 1)
-        self.assertEqual(d[cistr('tWo')], 2)
-        self.assertEqual(d[cistr('THrEE')], 3)
-        self.assertIn(cistr('ONe'), d)
-        self.assertEqual(d.get(cistr('thrEE')), 3)
-
-    def test_classic_comparisons(self):
-        # Testing classic comparisons...
-        class classic:
-            pass
-
-        for base in (classic, int, object):
-            class C(base):
-                def __init__(self, value):
-                    self.value = int(value)
-                def __cmp__(self, other):
-                    if isinstance(other, C):
-                        return cmp(self.value, other.value)
-                    if isinstance(other, int) or isinstance(other, long):
-                        return cmp(self.value, other)
-                    return NotImplemented
-                __hash__ = None # Silence Py3k warning
-
-            c1 = C(1)
-            c2 = C(2)
-            c3 = C(3)
-            self.assertEqual(c1, 1)
-            c = {1: c1, 2: c2, 3: c3}
-            for x in 1, 2, 3:
-                for y in 1, 2, 3:
-                    self.assertTrue(cmp(c[x], c[y]) == cmp(x, y), "x=%d, y=%d" % (x, y))
-                    for op in "<", "<=", "==", "!=", ">", ">=":
-                        self.assertTrue(eval("c[x] %s c[y]" % op) == eval("x %s y" % op),
-                               "x=%d, y=%d" % (x, y))
-                    self.assertTrue(cmp(c[x], y) == cmp(x, y), "x=%d, y=%d" % (x, y))
-                    self.assertTrue(cmp(x, c[y]) == cmp(x, y), "x=%d, y=%d" % (x, y))
-
-    def test_rich_comparisons(self):
-        # Testing rich comparisons...
-        class Z(complex):
-            pass
-        z = Z(1)
-        self.assertEqual(z, 1+0j)
-        self.assertEqual(1+0j, z)
-        class ZZ(complex):
-            def __eq__(self, other):
-                try:
-                    return abs(self - other) <= 1e-6
-                except:
-                    return NotImplemented
-            __hash__ = None # Silence Py3k warning
-        zz = ZZ(1.0000003)
-        self.assertEqual(zz, 1+0j)
-        self.assertEqual(1+0j, zz)
-
-        class classic:
-            pass
-        for base in (classic, int, object, list):
-            class C(base):
-                def __init__(self, value):
-                    self.value = int(value)
-                def __cmp__(self_, other):
-                    self.fail("shouldn't call __cmp__")
-                __hash__ = None # Silence Py3k warning
-                def __eq__(self, other):
-                    if isinstance(other, C):
-                        return self.value == other.value
-                    if isinstance(other, int) or isinstance(other, long):
-                        return self.value == other
-                    return NotImplemented
-                def __ne__(self, other):
-                    if isinstance(other, C):
-                        return self.value != other.value
-                    if isinstance(other, int) or isinstance(other, long):
-                        return self.value != other
-                    return NotImplemented
-                def __lt__(self, other):
-                    if isinstance(other, C):
-                        return self.value < other.value
-                    if isinstance(other, int) or isinstance(other, long):
-                        return self.value < other
-                    return NotImplemented
-                def __le__(self, other):
-                    if isinstance(other, C):
-                        return self.value <= other.value
-                    if isinstance(other, int) or isinstance(other, long):
-                        return self.value <= other
-                    return NotImplemented
-                def __gt__(self, other):
-                    if isinstance(other, C):
-                        return self.value > other.value
-                    if isinstance(other, int) or isinstance(other, long):
-                        return self.value > other
-                    return NotImplemented
-                def __ge__(self, other):
-                    if isinstance(other, C):
-                        return self.value >= other.value
-                    if isinstance(other, int) or isinstance(other, long):
-                        return self.value >= other
-                    return NotImplemented
-            c1 = C(1)
-            c2 = C(2)
-            c3 = C(3)
-            self.assertEqual(c1, 1)
-            c = {1: c1, 2: c2, 3: c3}
-            for x in 1, 2, 3:
-                for y in 1, 2, 3:
-                    for op in "<", "<=", "==", "!=", ">", ">=":
-                        self.assertTrue(eval("c[x] %s c[y]" % op) == eval("x %s y" % op),
-                               "x=%d, y=%d" % (x, y))
-                        self.assertTrue(eval("c[x] %s y" % op) == eval("x %s y" % op),
-                               "x=%d, y=%d" % (x, y))
-                        self.assertTrue(eval("x %s c[y]" % op) == eval("x %s y" % op),
-                               "x=%d, y=%d" % (x, y))
-
-    def test_coercions(self):
-        # Testing coercions...
-        class I(int): pass
-        coerce(I(0), 0)
-        coerce(0, I(0))
-        class L(long): pass
-        coerce(L(0), 0)
-        coerce(L(0), 0L)
-        coerce(0, L(0))
-        coerce(0L, L(0))
-        class F(float): pass
-        coerce(F(0), 0)
-        coerce(F(0), 0L)
-        coerce(F(0), 0.)
-        coerce(0, F(0))
-        coerce(0L, F(0))
-        coerce(0., F(0))
-        class C(complex): pass
-        coerce(C(0), 0)
-        coerce(C(0), 0L)
-        coerce(C(0), 0.)
-        coerce(C(0), 0j)
-        coerce(0, C(0))
-        coerce(0L, C(0))
-        coerce(0., C(0))
-        coerce(0j, C(0))
-
-    def test_descrdoc(self):
-        # Testing descriptor doc strings...
-        def check(descr, what):
-            self.assertEqual(descr.__doc__, what)
-        check(file.closed, "True if the file is closed") # getset descriptor
-        check(file.name, "file name") # member descriptor
-
-    def test_doc_descriptor(self):
-        # Testing __doc__ descriptor...
-        # SF bug 542984
-        class DocDescr(object):
-            def __get__(self, object, otype):
-                if object:
-                    object = object.__class__.__name__ + ' instance'
-                if otype:
-                    otype = otype.__name__
-                return 'object=%s; type=%s' % (object, otype)
-        class OldClass:
-            __doc__ = DocDescr()
-        class NewClass(object):
-            __doc__ = DocDescr()
-        self.assertEqual(OldClass.__doc__, 'object=None; type=OldClass')
-        self.assertEqual(OldClass().__doc__, 'object=OldClass instance; type=OldClass')
-        self.assertEqual(NewClass.__doc__, 'object=None; type=NewClass')
-        self.assertEqual(NewClass().__doc__, 'object=NewClass instance; type=NewClass')
-
-    def test_set_class(self):
-        # Testing __class__ assignment...
-        class C(object): pass
-        class D(object): pass
-        class E(object): pass
-        class F(D, E): pass
-        for cls in C, D, E, F:
-            for cls2 in C, D, E, F:
-                x = cls()
-                x.__class__ = cls2
-                self.assertTrue(x.__class__ is cls2)
-                x.__class__ = cls
-                self.assertTrue(x.__class__ is cls)
-        def cant(x, C):
-            try:
-                x.__class__ = C
-            except TypeError:
-                pass
-            else:
-                self.fail("shouldn't allow %r.__class__ = %r" % (x, C))
-            try:
-                delattr(x, "__class__")
-            except (TypeError, AttributeError):
-                pass
-            else:
-                self.fail("shouldn't allow del %r.__class__" % x)
-        cant(C(), list)
-        cant(list(), C)
-        cant(C(), 1)
-        cant(C(), object)
-        cant(object(), list)
-        cant(list(), object)
-        class Int(int): __slots__ = []
-        cant(2, Int)
-        cant(Int(), int)
-        cant(True, int)
-        cant(2, bool)
-        o = object()
-        cant(o, type(1))
-        cant(o, type(None))
-        del o
-        class G(object):
-            __slots__ = ["a", "b"]
-        class H(object):
-            __slots__ = ["b", "a"]
-        try:
-            unicode
-        except NameError:
-            class I(object):
-                __slots__ = ["a", "b"]
-        else:
-            class I(object):
-                __slots__ = [unicode("a"), unicode("b")]
-        class J(object):
-            __slots__ = ["c", "b"]
-        class K(object):
-            __slots__ = ["a", "b", "d"]
-        class L(H):
-            __slots__ = ["e"]
-        class M(I):
-            __slots__ = ["e"]
-        class N(J):
-            __slots__ = ["__weakref__"]
-        class P(J):
-            __slots__ = ["__dict__"]
-        class Q(J):
-            pass
-        class R(J):
-            __slots__ = ["__dict__", "__weakref__"]
-
-        for cls, cls2 in ((G, H), (G, I), (I, H), (Q, R), (R, Q)):
-            x = cls()
-            x.a = 1
-            x.__class__ = cls2
-            self.assertTrue(x.__class__ is cls2,
-                   "assigning %r as __class__ for %r silently failed" % (cls2, x))
-            self.assertEqual(x.a, 1)
-            x.__class__ = cls
-            self.assertTrue(x.__class__ is cls,
-                   "assigning %r as __class__ for %r silently failed" % (cls, x))
-            self.assertEqual(x.a, 1)
-        for cls in G, J, K, L, M, N, P, R, list, Int:
-            for cls2 in G, J, K, L, M, N, P, R, list, Int:
-                if cls is cls2:
-                    continue
-                cant(cls(), cls2)
-
-        # Issue5283: when __class__ changes in __del__, the wrong
-        # type gets DECREF'd.
-        class O(object):
-            pass
-        class A(object):
-            def __del__(self):
-                self.__class__ = O
-        l = [A() for x in range(100)]
-        del l
-
-    def test_set_dict(self):
-        # Testing __dict__ assignment...
-        class C(object): pass
-        a = C()
-        a.__dict__ = {'b': 1}
-        self.assertEqual(a.b, 1)
-        def cant(x, dict):
-            try:
-                x.__dict__ = dict
-            except (AttributeError, TypeError):
-                pass
-            else:
-                self.fail("shouldn't allow %r.__dict__ = %r" % (x, dict))
-        cant(a, None)
-        cant(a, [])
-        cant(a, 1)
-        del a.__dict__ # Deleting __dict__ is allowed
-
-        class Base(object):
-            pass
-        def verify_dict_readonly(x):
-            """
-            x has to be an instance of a class inheriting from Base.
-            """
-            cant(x, {})
-            try:
-                del x.__dict__
-            except (AttributeError, TypeError):
-                pass
-            else:
-                self.fail("shouldn't allow del %r.__dict__" % x)
-            dict_descr = Base.__dict__["__dict__"]
-            try:
-                dict_descr.__set__(x, {})
-            except (AttributeError, TypeError):
-                pass
-            else:
-                self.fail("dict_descr allowed access to %r's dict" % x)
-
-        # Classes don't allow __dict__ assignment and have readonly dicts
-        class Meta1(type, Base):
-            pass
-        class Meta2(Base, type):
-            pass
-        class D(object):
-            __metaclass__ = Meta1
-        class E(object):
-            __metaclass__ = Meta2
-        for cls in C, D, E:
-            verify_dict_readonly(cls)
-            class_dict = cls.__dict__
-            try:
-                class_dict["spam"] = "eggs"
-            except TypeError:
-                pass
-            else:
-                self.fail("%r's __dict__ can be modified" % cls)
-
-        # Modules also disallow __dict__ assignment
-        class Module1(types.ModuleType, Base):
-            pass
-        class Module2(Base, types.ModuleType):
-            pass
-        for ModuleType in Module1, Module2:
-            mod = ModuleType("spam")
-            verify_dict_readonly(mod)
-            mod.__dict__["spam"] = "eggs"
-
-        # Exception's __dict__ can be replaced, but not deleted
-        # (at least not any more than regular exception's __dict__ can
-        # be deleted; on CPython it is not the case, whereas on PyPy they
-        # can, just like any other new-style instance's __dict__.)
-        def can_delete_dict(e):
-            try:
-                del e.__dict__
-            except (TypeError, AttributeError):
-                return False
-            else:
-                return True
-        class Exception1(Exception, Base):
-            pass
-        class Exception2(Base, Exception):
-            pass
-        for ExceptionType in Exception, Exception1, Exception2:
-            e = ExceptionType()
-            e.__dict__ = {"a": 1}
-            self.assertEqual(e.a, 1)
-            self.assertEqual(can_delete_dict(e), can_delete_dict(ValueError()))
-
-    def test_pickles(self):
-        # Testing pickling and copying new-style classes and objects...
-        import pickle, cPickle
-
-        def sorteditems(d):
-            L = d.items()
-            L.sort()
-            return L
-
-        global C
-        class C(object):
-            def __init__(self, a, b):
-                super(C, self).__init__()
-                self.a = a
-                self.b = b
-            def __repr__(self):
-                return "C(%r, %r)" % (self.a, self.b)
-
-        global C1
-        class C1(list):
-            def __new__(cls, a, b):
-                return super(C1, cls).__new__(cls)
-            def __getnewargs__(self):
-                return (self.a, self.b)
-            def __init__(self, a, b):
-                self.a = a
-                self.b = b
-            def __repr__(self):
-                return "C1(%r, %r)<%r>" % (self.a, self.b, list(self))
-
-        global C2
-        class C2(int):
-            def __new__(cls, a, b, val=0):
-                return super(C2, cls).__new__(cls, val)
-            def __getnewargs__(self):
-                return (self.a, self.b, int(self))
-            def __init__(self, a, b, val=0):
-                self.a = a
-                self.b = b
-            def __repr__(self):
-                return "C2(%r, %r)<%r>" % (self.a, self.b, int(self))
-
-        global C3
-        class C3(object):
-            def __init__(self, foo):
-                self.foo = foo
-            def __getstate__(self):
-                return self.foo
-            def __setstate__(self, foo):
-                self.foo = foo
-
-        global C4classic, C4
-        class C4classic: # classic
-            pass
-        class C4(C4classic, object): # mixed inheritance
-            pass
-
-        for p in pickle, cPickle:
-            for bin in 0, 1:
-                for cls in C, C1, C2:
-                    s = p.dumps(cls, bin)
-                    cls2 = p.loads(s)
-                    self.assertTrue(cls2 is cls)
-
-                a = C1(1, 2); a.append(42); a.append(24)
-                b = C2("hello", "world", 42)
-                s = p.dumps((a, b), bin)
-                x, y = p.loads(s)
-                self.assertEqual(x.__class__, a.__class__)
-                self.assertEqual(sorteditems(x.__dict__), sorteditems(a.__dict__))
-                self.assertEqual(y.__class__, b.__class__)
-                self.assertEqual(sorteditems(y.__dict__), sorteditems(b.__dict__))
-                self.assertEqual(repr(x), repr(a))
-                self.assertEqual(repr(y), repr(b))
-                # Test for __getstate__ and __setstate__ on new style class
-                u = C3(42)
-                s = p.dumps(u, bin)
-                v = p.loads(s)
-                self.assertEqual(u.__class__, v.__class__)
-                self.assertEqual(u.foo, v.foo)
-                # Test for picklability of hybrid class
-                u = C4()
-                u.foo = 42
-                s = p.dumps(u, bin)
-                v = p.loads(s)
-                self.assertEqual(u.__class__, v.__class__)
-                self.assertEqual(u.foo, v.foo)
-
-        # Testing copy.deepcopy()
-        import copy
-        for cls in C, C1, C2:
-            cls2 = copy.deepcopy(cls)
-            self.assertTrue(cls2 is cls)
-
-        a = C1(1, 2); a.append(42); a.append(24)
-        b = C2("hello", "world", 42)
-        x, y = copy.deepcopy((a, b))
-        self.assertEqual(x.__class__, a.__class__)
-        self.assertEqual(sorteditems(x.__dict__), sorteditems(a.__dict__))
-        self.assertEqual(y.__class__, b.__class__)
-        self.assertEqual(sorteditems(y.__dict__), sorteditems(b.__dict__))
-        self.assertEqual(repr(x), repr(a))
-        self.assertEqual(repr(y), repr(b))
-
-    def test_pickle_slots(self):
-        # Testing pickling of classes with __slots__ ...
-        import pickle, cPickle
-        # Pickling of classes with __slots__ but without __getstate__ should fail
-        global B, C, D, E
-        class B(object):
-            pass
-        for base in [object, B]:
-            class C(base):
-                __slots__ = ['a']
-            class D(C):
-                pass
-            try:
-                pickle.dumps(C())
-            except TypeError:
-                pass
-            else:
-                self.fail("should fail: pickle C instance - %s" % base)
-            try:
-                cPickle.dumps(C())
-            except TypeError:
-                pass
-            else:
-                self.fail("should fail: cPickle C instance - %s" % base)
-            try:
-                pickle.dumps(C())
-            except TypeError:
-                pass
-            else:
-                self.fail("should fail: pickle D instance - %s" % base)
-            try:
-                cPickle.dumps(D())
-            except TypeError:
-                pass
-            else:
-                self.fail("should fail: cPickle D instance - %s" % base)
-            # Give C a nice generic __getstate__ and __setstate__
-            class C(base):
-                __slots__ = ['a']
-                def __getstate__(self):
-                    try:
-                        d = self.__dict__.copy()
-                    except AttributeError:
-                        d = {}
-                    for cls in self.__class__.__mro__:
-                        for sn in cls.__dict__.get('__slots__', ()):
-                            try:
-                                d[sn] = getattr(self, sn)
-                            except AttributeError:
-                                pass
-                    return d
-                def __setstate__(self, d):
-                    for k, v in d.items():
-                        setattr(self, k, v)
-            class D(C):
-                pass
-            # Now it should work
-            x = C()
-            y = pickle.loads(pickle.dumps(x))
-            self.assertEqual(hasattr(y, 'a'), 0)
-            y = cPickle.loads(cPickle.dumps(x))
-            self.assertEqual(hasattr(y, 'a'), 0)
-            x.a = 42
-            y = pickle.loads(pickle.dumps(x))
-            self.assertEqual(y.a, 42)
-            y = cPickle.loads(cPickle.dumps(x))
-            self.assertEqual(y.a, 42)
-            x = D()
-            x.a = 42
-            x.b = 100
-            y = pickle.loads(pickle.dumps(x))
-            self.assertEqual(y.a + y.b, 142)
-            y = cPickle.loads(cPickle.dumps(x))
-            self.assertEqual(y.a + y.b, 142)
-            # A subclass that adds a slot should also work
-            class E(C):
-                __slots__ = ['b']
-            x = E()
-            x.a = 42
-            x.b = "foo"
-            y = pickle.loads(pickle.dumps(x))
-            self.assertEqual(y.a, x.a)
-            self.assertEqual(y.b, x.b)
-            y = cPickle.loads(cPickle.dumps(x))
-            self.assertEqual(y.a, x.a)
-            self.assertEqual(y.b, x.b)
-
-    def test_binary_operator_override(self):
-        # Testing overrides of binary operations...
-        class I(int):
-            def __repr__(self):
-                return "I(%r)" % int(self)
-            def __add__(self, other):
-                return I(int(self) + int(other))
-            __radd__ = __add__
-            def __pow__(self, other, mod=None):
-                if mod is None:
-                    return I(pow(int(self), int(other)))
-                else:
-                    return I(pow(int(self), int(other), int(mod)))
-            def __rpow__(self, other, mod=None):
-                if mod is None:
-                    return I(pow(int(other), int(self), mod))
-                else:
-                    return I(pow(int(other), int(self), int(mod)))
-
-        self.assertEqual(repr(I(1) + I(2)), "I(3)")
-        self.assertEqual(repr(I(1) + 2), "I(3)")
-        self.assertEqual(repr(1 + I(2)), "I(3)")
-        self.assertEqual(repr(I(2) ** I(3)), "I(8)")
-        self.assertEqual(repr(2 ** I(3)), "I(8)")
-        self.assertEqual(repr(I(2) ** 3), "I(8)")
-        self.assertEqual(repr(pow(I(2), I(3), I(5))), "I(3)")
-        class S(str):
-            def __eq__(self, other):
-                return self.lower() == other.lower()
-            __hash__ = None # Silence Py3k warning
-
-    def test_subclass_propagation(self):
-        # Testing propagation of slot functions to subclasses...
-        class A(object):
-            pass
-        class B(A):
-            pass
-        class C(A):
-            pass
-        class D(B, C):
-            pass
-        d = D()
-        orig_hash = hash(d) # related to id(d) in platform-dependent ways
-        A.__hash__ = lambda self: 42
-        self.assertEqual(hash(d), 42)
-        C.__hash__ = lambda self: 314
-        self.assertEqual(hash(d), 314)
-        B.__hash__ = lambda self: 144
-        self.assertEqual(hash(d), 144)
-        D.__hash__ = lambda self: 100
-        self.assertEqual(hash(d), 100)
-        D.__hash__ = None
-        self.assertRaises(TypeError, hash, d)
-        del D.__hash__
-        self.assertEqual(hash(d), 144)
-        B.__hash__ = None
-        self.assertRaises(TypeError, hash, d)
-        del B.__hash__
-        self.assertEqual(hash(d), 314)
-        C.__hash__ = None
-        self.assertRaises(TypeError, hash, d)
-        del C.__hash__
-        self.assertEqual(hash(d), 42)
-        A.__hash__ = None
-        self.assertRaises(TypeError, hash, d)
-        del A.__hash__
-        self.assertEqual(hash(d), orig_hash)
-        d.foo = 42
-        d.bar = 42
-        self.assertEqual(d.foo, 42)
-        self.assertEqual(d.bar, 42)
-        def __getattribute__(self, name):
-            if name == "foo":
-                return 24
-            return object.__getattribute__(self, name)
-        A.__getattribute__ = __getattribute__
-        self.assertEqual(d.foo, 24)
-        self.assertEqual(d.bar, 42)
-        def __getattr__(self, name):
-            if name in ("spam", "foo", "bar"):
-                return "hello"
-            raise AttributeError, name
-        B.__getattr__ = __getattr__
-        self.assertEqual(d.spam, "hello")
-        self.assertEqual(d.foo, 24)
-        self.assertEqual(d.bar, 42)
-        del A.__getattribute__
-        self.assertEqual(d.foo, 42)
-        del d.foo
-        self.assertEqual(d.foo, "hello")
-        self.assertEqual(d.bar, 42)
-        del B.__getattr__
-        try:
-            d.foo
-        except AttributeError:
-            pass
-        else:
-            self.fail("d.foo should be undefined now")
-
-        # Test a nasty bug in recurse_down_subclasses()
-        class A(object):
-            pass
-        class B(A):
-            pass
-        del B
-        test_support.gc_collect()
-        A.__setitem__ = lambda *a: None # crash
-
-    def test_buffer_inheritance(self):
-        # Testing that buffer interface is inherited ...
-
-        import binascii
-        # SF bug [#470040] ParseTuple t# vs subclasses.
-
-        class MyStr(str):
-            pass
-        base = 'abc'
-        m = MyStr(base)
-        # b2a_hex uses the buffer interface to get its argument's value, via
-        # PyArg_ParseTuple 't#' code.
-        self.assertEqual(binascii.b2a_hex(m), binascii.b2a_hex(base))
-
-        # It's not clear that unicode will continue to support the character
-        # buffer interface, and this test will fail if that's taken away.
-        class MyUni(unicode):
-            pass
-        base = u'abc'
-        m = MyUni(base)
-        self.assertEqual(binascii.b2a_hex(m), binascii.b2a_hex(base))
-
-        class MyInt(int):
-            pass
-        m = MyInt(42)
-        try:
-            binascii.b2a_hex(m)
-            self.fail('subclass of int should not have a buffer interface')
-        except TypeError:
-            pass
-
-    def test_str_of_str_subclass(self):
-        # Testing __str__ defined in subclass of str ...
-        import binascii
-        import cStringIO
-
-        class octetstring(str):
-            def __str__(self):
-                return binascii.b2a_hex(self)
-            def __repr__(self):
-                return self + " repr"
-
-        o = octetstring('A')
-        self.assertEqual(type(o), octetstring)
-        self.assertEqual(type(str(o)), str)
-        self.assertEqual(type(repr(o)), str)
-        self.assertEqual(ord(o), 0x41)
-        self.assertEqual(str(o), '41')
-        self.assertEqual(repr(o), 'A repr')
-        self.assertEqual(o.__str__(), '41')
-        self.assertEqual(o.__repr__(), 'A repr')
-
-        capture = cStringIO.StringIO()
-        # Calling str() or not exercises different internal paths.
-        print >> capture, o
-        print >> capture, str(o)
-        self.assertEqual(capture.getvalue(), '41\n41\n')
-        capture.close()
-
-    def test_keyword_arguments(self):
-        # Testing keyword arguments to __init__, __call__...
-        def f(a): return a
-        self.assertEqual(f.__call__(a=42), 42)
-        a = []
-        list.__init__(a, sequence=[0, 1, 2])
-        self.assertEqual(a, [0, 1, 2])
-
-    def test_recursive_call(self):
-        # Testing recursive __call__() by setting to instance of class...
-        class A(object):
-            pass
-
-        A.__call__ = A()
-        try:
-            A()()
-        except RuntimeError:
-            pass
-        else:
-            self.fail("Recursion limit should have been reached for __call__()")
-
-    def test_delete_hook(self):
-        # Testing __del__ hook...
-        log = []
-        class C(object):
-            def __del__(self):
-                log.append(1)
-        c = C()
-        self.assertEqual(log, [])
-        del c
-        test_support.gc_collect()
-        self.assertEqual(log, [1])
-
-        class D(object): pass
-        d = D()
-        try: del d[0]
-        except TypeError: pass
-        else: self.fail("invalid del() didn't raise TypeError")
-
-    def test_hash_inheritance(self):
-        # Testing hash of mutable subclasses...
-
-        class mydict(dict):
-            pass
-        d = mydict()
-        try:
-            hash(d)
-        except TypeError:
-            pass
-        else:
-            self.fail("hash() of dict subclass should fail")
-
-        class mylist(list):
-            pass
-        d = mylist()
-        try:
-            hash(d)
-        except TypeError:
-            pass
-        else:
-            self.fail("hash() of list subclass should fail")
-
-    def test_str_operations(self):
-        try: 'a' + 5
-        except TypeError: pass
-        else: self.fail("'' + 5 doesn't raise TypeError")
-
-        try: ''.split('')
-        except ValueError: pass
-        else: self.fail("''.split('') doesn't raise ValueError")
-
-        try: ''.join([0])
-        except TypeError: pass
-        else: self.fail("''.join([0]) doesn't raise TypeError")
-
-        try: ''.rindex('5')
-        except ValueError: pass
-        else: self.fail("''.rindex('5') doesn't raise ValueError")
-
-        try: '%(n)s' % None
-        except TypeError: pass
-        else: self.fail("'%(n)s' % None doesn't raise TypeError")
-
-        try: '%(n' % {}
-        except ValueError: pass
-        else: self.fail("'%(n' % {} '' doesn't raise ValueError")
-
-        try: '%*s' % ('abc')
-        except TypeError: pass
-        else: self.fail("'%*s' % ('abc') doesn't raise TypeError")
-
-        try: '%*.*s' % ('abc', 5)
-        except TypeError: pass
-        else: self.fail("'%*.*s' % ('abc', 5) doesn't raise TypeError")
-
-        try: '%s' % (1, 2)
-        except TypeError: pass
-        else: self.fail("'%s' % (1, 2) doesn't raise TypeError")
-
-        try: '%' % None
-        except ValueError: pass
-        else: self.fail("'%' % None doesn't raise ValueError")
-
-        self.assertEqual('534253'.isdigit(), 1)
-        self.assertEqual('534253x'.isdigit(), 0)
-        self.assertEqual('%c' % 5, '\x05')
-        self.assertEqual('%c' % '5', '5')
-
-    def test_deepcopy_recursive(self):
-        # Testing deepcopy of recursive objects...
-        class Node:
-            pass
-        a = Node()
-        b = Node()
-        a.b = b
-        b.a = a
-        z = deepcopy(a) # This blew up before
-
-    def test_unintialized_modules(self):
-        # Testing uninitialized module objects...
-        from types import ModuleType as M
-        m = M.__new__(M)
-        str(m)
-        self.assertEqual(hasattr(m, "__name__"), 0)
-        self.assertEqual(hasattr(m, "__file__"), 0)
-        self.assertEqual(hasattr(m, "foo"), 0)
-        self.assertFalse(m.__dict__)   # None or {} are both reasonable answers
-        m.foo = 1
-        self.assertEqual(m.__dict__, {"foo": 1})
-
-    def test_funny_new(self):
-        # Testing __new__ returning something unexpected...
-        class C(object):
-            def __new__(cls, arg):
-                if isinstance(arg, str): return [1, 2, 3]
-                elif isinstance(arg, int): return object.__new__(D)
-                else: return object.__new__(cls)
-        class D(C):
-            def __init__(self, arg):
-                self.foo = arg
-        self.assertEqual(C("1"), [1, 2, 3])
-        self.assertEqual(D("1"), [1, 2, 3])
-        d = D(None)
-        self.assertEqual(d.foo, None)
-        d = C(1)
-        self.assertEqual(isinstance(d, D), True)
-        self.assertEqual(d.foo, 1)
-        d = D(1)
-        self.assertEqual(isinstance(d, D), True)
-        self.assertEqual(d.foo, 1)
-
-    def test_imul_bug(self):
-        # Testing for __imul__ problems...
-        # SF bug 544647
-        class C(object):
-            def __imul__(self, other):
-                return (self, other)
-        x = C()
-        y = x
-        y *= 1.0
-        self.assertEqual(y, (x, 1.0))
-        y = x
-        y *= 2
-        self.assertEqual(y, (x, 2))
-        y = x
-        y *= 3L
-        self.assertEqual(y, (x, 3L))
-        y = x
-        y *= 1L<<100
-        self.assertEqual(y, (x, 1L<<100))
-        y = x
-        y *= None
-        self.assertEqual(y, (x, None))
-        y = x
-        y *= "foo"
-        self.assertEqual(y, (x, "foo"))
-
-    def test_copy_setstate(self):
-        # Testing that copy.*copy() correctly uses __setstate__...
-        import copy
-        class C(object):
-            def __init__(self, foo=None):
-                self.foo = foo
-                self.__foo = foo
-            def setfoo(self, foo=None):
-                self.foo = foo
-            def getfoo(self):
-                return self.__foo
-            def __getstate__(self):
-                return [self.foo]
-            def __setstate__(self_, lst):
-                self.assertEqual(len(lst), 1)
-                self_.__foo = self_.foo = lst[0]
-        a = C(42)
-        a.setfoo(24)
-        self.assertEqual(a.foo, 24)
-        self.assertEqual(a.getfoo(), 42)
-        b = copy.copy(a)
-        self.assertEqual(b.foo, 24)
-        self.assertEqual(b.getfoo(), 24)
-        b = copy.deepcopy(a)
-        self.assertEqual(b.foo, 24)
-        self.assertEqual(b.getfoo(), 24)
-
-    def test_slices(self):
-        # Testing cases with slices and overridden __getitem__ ...
-
-        # Strings
-        self.assertEqual("hello"[:4], "hell")
-        self.assertEqual("hello"[slice(4)], "hell")
-        self.assertEqual(str.__getitem__("hello", slice(4)), "hell")
-        class S(str):
-            def __getitem__(self, x):
-                return str.__getitem__(self, x)
-        self.assertEqual(S("hello")[:4], "hell")
-        self.assertEqual(S("hello")[slice(4)], "hell")
-        self.assertEqual(S("hello").__getitem__(slice(4)), "hell")
-        # Tuples
-        self.assertEqual((1,2,3)[:2], (1,2))
-        self.assertEqual((1,2,3)[slice(2)], (1,2))
-        self.assertEqual(tuple.__getitem__((1,2,3), slice(2)), (1,2))
-        class T(tuple):
-            def __getitem__(self, x):
-                return tuple.__getitem__(self, x)
-        self.assertEqual(T((1,2,3))[:2], (1,2))
-        self.assertEqual(T((1,2,3))[slice(2)], (1,2))
-        self.assertEqual(T((1,2,3)).__getitem__(slice(2)), (1,2))
-        # Lists
-        self.assertEqual([1,2,3][:2], [1,2])
-        self.assertEqual([1,2,3][slice(2)], [1,2])
-        self.assertEqual(list.__getitem__([1,2,3], slice(2)), [1,2])
-        class L(list):
-            def __getitem__(self, x):
-                return list.__getitem__(self, x)
-        self.assertEqual(L([1,2,3])[:2], [1,2])
-        self.assertEqual(L([1,2,3])[slice(2)], [1,2])
-        self.assertEqual(L([1,2,3]).__getitem__(slice(2)), [1,2])
-        # Now do lists and __setitem__
-        a = L([1,2,3])
-        a[slice(1, 3)] = [3,2]
-        self.assertEqual(a, [1,3,2])
-        a[slice(0, 2, 1)] = [3,1]
-        self.assertEqual(a, [3,1,2])
-        a.__setitem__(slice(1, 3), [2,1])
-        self.assertEqual(a, [3,2,1])
-        a.__setitem__(slice(0, 2, 1), [2,3])
-        self.assertEqual(a, [2,3,1])
-
-    def test_subtype_resurrection(self):
-        # Testing resurrection of new-style instance...
-
-        class C(object):
-            container = []
-
-            def __del__(self):
-                # resurrect the instance
-                C.container.append(self)
-
-        c = C()
-        c.attr = 42
-
-        # The most interesting thing here is whether this blows up, due to
-        # flawed GC tracking logic in typeobject.c's call_finalizer() (a 2.2.1
-        # bug).
-        del c
-
-        # If that didn't blow up, it's also interesting to see whether clearing
-        # the last container slot works: that will attempt to delete c again,
-        # which will cause c to get appended back to the container again
-        # "during" the del.  (On non-CPython implementations, however, __del__
-        # is typically not called again.)
-        test_support.gc_collect()
-        self.assertEqual(len(C.container), 1)
-        del C.container[-1]
-        if test_support.check_impl_detail():
-            test_support.gc_collect()
-            self.assertEqual(len(C.container), 1)
-            self.assertEqual(C.container[-1].attr, 42)
-
-        # Make c mortal again, so that the test framework with -l doesn't report
-        # it as a leak.
-        del C.__del__
-
-    def test_slots_trash(self):
-        # Testing slot trash...
-        # Deallocating deeply nested slotted trash caused stack overflows
-        class trash(object):
-            __slots__ = ['x']
-            def __init__(self, x):
-                self.x = x
-        o = None
-        for i in xrange(50000):
-            o = trash(o)
-        del o
-
-    def test_slots_multiple_inheritance(self):
-        # SF bug 575229, multiple inheritance w/ slots dumps core
-        class A(object):
-            __slots__=()
-        class B(object):
-            pass
-        class C(A,B) :
-            __slots__=()
-        if test_support.check_impl_detail():
-            self.assertEqual(C.__basicsize__, B.__basicsize__)
-        self.assertTrue(hasattr(C, '__dict__'))
-        self.assertTrue(hasattr(C, '__weakref__'))
-        C().x = 2
-
-    def test_rmul(self):
-        # Testing correct invocation of __rmul__...
-        # SF patch 592646
-        class C(object):
-            def __mul__(self, other):
-                return "mul"
-            def __rmul__(self, other):
-                return "rmul"
-        a = C()
-        self.assertEqual(a*2, "mul")
-        self.assertEqual(a*2.2, "mul")
-        self.assertEqual(2*a, "rmul")
-        self.assertEqual(2.2*a, "rmul")
-
-    def test_ipow(self):
-        # Testing correct invocation of __ipow__...
-        # [SF bug 620179]
-        class C(object):
-            def __ipow__(self, other):
-                pass
-        a = C()
-        a **= 2
-
-    def test_mutable_bases(self):
-        # Testing mutable bases...
-
-        # stuff that should work:
-        class C(object):
-            pass
-        class C2(object):
-            def __getattribute__(self, attr):
-                if attr == 'a':
-                    return 2
-                else:
-                    return super(C2, self).__getattribute__(attr)
-            def meth(self):
-                return 1
-        class D(C):
-            pass
-        class E(D):
-            pass
-        d = D()
-        e = E()
-        D.__bases__ = (C,)
-        D.__bases__ = (C2,)
-        self.assertEqual(d.meth(), 1)
-        self.assertEqual(e.meth(), 1)
-        self.assertEqual(d.a, 2)
-        self.assertEqual(e.a, 2)
-        self.assertEqual(C2.__subclasses__(), [D])
-
-        try:
-            del D.__bases__
-        except (TypeError, AttributeError):
-            pass
-        else:
-            self.fail("shouldn't be able to delete .__bases__")
-
-        try:
-            D.__bases__ = ()
-        except TypeError, msg:
-            if str(msg) == "a new-style class can't have only classic bases":
-                self.fail("wrong error message for .__bases__ = ()")
-        else:
-            self.fail("shouldn't be able to set .__bases__ to ()")
-
-        try:
-            D.__bases__ = (D,)
-        except TypeError:
-            pass
-        else:
-            # actually, we'll have crashed by here...
-            self.fail("shouldn't be able to create inheritance cycles")
-
-        try:
-            D.__bases__ = (C, C)
-        except TypeError:
-            pass
-        else:
-            self.fail("didn't detect repeated base classes")
-
-        try:
-            D.__bases__ = (E,)
-        except TypeError:
-            pass
-        else:
-            self.fail("shouldn't be able to create inheritance cycles")
-
-        # let's throw a classic class into the mix:
-        class Classic:
-            def meth2(self):
-                return 3
-
-        D.__bases__ = (C, Classic)
-
-        self.assertEqual(d.meth2(), 3)
-        self.assertEqual(e.meth2(), 3)
-        try:
-            d.a
-        except AttributeError:
-            pass
-        else:
-            self.fail("attribute should have vanished")
-
-        try:
-            D.__bases__ = (Classic,)
-        except TypeError:
-            pass
-        else:
-            self.fail("new-style class must have a new-style base")
-
-    def test_builtin_bases(self):
-        # Make sure all the builtin types can have their base queried without
-        # segfaulting. See issue #5787.
-        builtin_types = [tp for tp in __builtin__.__dict__.itervalues()
-                         if isinstance(tp, type)]
-        for tp in builtin_types:
-            object.__getattribute__(tp, "__bases__")
-            if tp is not object:
-                self.assertEqual(len(tp.__bases__), 1, tp)
-
-        class L(list):
-            pass
-
-        class C(object):
-            pass
-
-        class D(C):
-            pass
-
-        try:
-            L.__bases__ = (dict,)
-        except TypeError:
-            pass
-        else:
-            self.fail("shouldn't turn list subclass into dict subclass")
-
-        try:
-            list.__bases__ = (dict,)
-        except TypeError:
-            pass
-        else:
-            self.fail("shouldn't be able to assign to list.__bases__")
-
-        try:
-            D.__bases__ = (C, list)
-        except TypeError:
-            pass
-        else:
-            assert 0, "best_base calculation found wanting"
-
-
-    def test_mutable_bases_with_failing_mro(self):
-        # Testing mutable bases with failing mro...
-        class WorkOnce(type):
-            def __new__(self, name, bases, ns):
-                self.flag = 0
-                return super(WorkOnce, self).__new__(WorkOnce, name, bases, ns)
-            def mro(self):
-                if self.flag > 0:
-                    raise RuntimeError, "bozo"
-                else:
-                    self.flag += 1
-                    return type.mro(self)
-
-        class WorkAlways(type):
-            def mro(self):
-                # this is here to make sure that .mro()s aren't called
-                # with an exception set (which was possible at one point).
-                # An error message will be printed in a debug build.
-                # What's a good way to test for this?
-                return type.mro(self)
-
-        class C(object):
-            pass
-
-        class C2(object):
-            pass
-
-        class D(C):
-            pass
-
-        class E(D):
-            pass
-
-        class F(D):
-            __metaclass__ = WorkOnce
-
-        class G(D):
-            __metaclass__ = WorkAlways
-
-        # Immediate subclasses have their mro's adjusted in alphabetical
-        # order, so E's will get adjusted before adjusting F's fails.  We
-        # check here that E's gets restored.
-
-        E_mro_before = E.__mro__
-        D_mro_before = D.__mro__
-
-        try:
-            D.__bases__ = (C2,)
-        except RuntimeError:
-            self.assertEqual(E.__mro__, E_mro_before)
-            self.assertEqual(D.__mro__, D_mro_before)
-        else:
-            self.fail("exception not propagated")
-
-    def test_mutable_bases_catch_mro_conflict(self):
-        # Testing mutable bases catch mro conflict...
-        class A(object):
-            pass
-
-        class B(object):
-            pass
-
-        class C(A, B):
-            pass
-
-        class D(A, B):
-            pass
-
-        class E(C, D):
-            pass
-
-        try:
-            C.__bases__ = (B, A)
-        except TypeError:
-            pass
-        else:
-            self.fail("didn't catch MRO conflict")
-
-    def test_mutable_names(self):
-        # Testing mutable names...
-        class C(object):
-            pass
-
-        # C.__module__ could be 'test_descr' or '__main__'
-        mod = C.__module__
-
-        C.__name__ = 'D'
-        self.assertEqual((C.__module__, C.__name__), (mod, 'D'))
-
-        C.__name__ = 'D.E'
-        self.assertEqual((C.__module__, C.__name__), (mod, 'D.E'))
-
-    def test_subclass_right_op(self):
-        # Testing correct dispatch of subclass overloading __r<op>__...
-
-        # This code tests various cases where right-dispatch of a subclass
-        # should be preferred over left-dispatch of a base class.
-
-        # Case 1: subclass of int; this tests code in abstract.c::binary_op1()
-
-        class B(int):
-            def __floordiv__(self, other):
-                return "B.__floordiv__"
-            def __rfloordiv__(self, other):
-                return "B.__rfloordiv__"
-
-        self.assertEqual(B(1) // 1, "B.__floordiv__")
-        self.assertEqual(1 // B(1), "B.__rfloordiv__")
-
-        # Case 2: subclass of object; this is just the baseline for case 3
-
-        class C(object):
-            def __floordiv__(self, other):
-                return "C.__floordiv__"
-            def __rfloordiv__(self, other):
-                return "C.__rfloordiv__"
-
-        self.assertEqual(C() // 1, "C.__floordiv__")
-        self.assertEqual(1 // C(), "C.__rfloordiv__")
-
-        # Case 3: subclass of new-style class; here it gets interesting
-
-        class D(C):
-            def __floordiv__(self, other):
-                return "D.__floordiv__"
-            def __rfloordiv__(self, other):
-                return "D.__rfloordiv__"
-
-        self.assertEqual(D() // C(), "D.__floordiv__")
-        self.assertEqual(C() // D(), "D.__rfloordiv__")
-
-        # Case 4: this didn't work right in 2.2.2 and 2.3a1
-
-        class E(C):
-            pass
-
-        self.assertEqual(E.__rfloordiv__, C.__rfloordiv__)
-
-        self.assertEqual(E() // 1, "C.__floordiv__")
-        self.assertEqual(1 // E(), "C.__rfloordiv__")
-        self.assertEqual(E() // C(), "C.__floordiv__")
-        self.assertEqual(C() // E(), "C.__floordiv__") # This one would fail
-
-    @test_support.impl_detail("testing an internal kind of method object")
-    def test_meth_class_get(self):
-        # Testing __get__ method of METH_CLASS C methods...
-        # Full coverage of descrobject.c::classmethod_get()
-
-        # Baseline
-        arg = [1, 2, 3]
-        res = {1: None, 2: None, 3: None}
-        self.assertEqual(dict.fromkeys(arg), res)
-        self.assertEqual({}.fromkeys(arg), res)
-
-        # Now get the descriptor
-        descr = dict.__dict__["fromkeys"]
-
-        # More baseline using the descriptor directly
-        self.assertEqual(descr.__get__(None, dict)(arg), res)
-        self.assertEqual(descr.__get__({})(arg), res)
-
-        # Now check various error cases
-        try:
-            descr.__get__(None, None)
-        except TypeError:
-            pass
-        else:
-            self.fail("shouldn't have allowed descr.__get__(None, None)")
-        try:
-            descr.__get__(42)
-        except TypeError:
-            pass
-        else:
-            self.fail("shouldn't have allowed descr.__get__(42)")
-        try:
-            descr.__get__(None, 42)
-        except TypeError:
-            pass
-        else:
-            self.fail("shouldn't have allowed descr.__get__(None, 42)")
-        try:
-            descr.__get__(None, int)
-        except TypeError:
-            pass
-        else:
-            self.fail("shouldn't have allowed descr.__get__(None, int)")
-
-    def test_isinst_isclass(self):
-        # Testing proxy isinstance() and isclass()...
-        class Proxy(object):
-            def __init__(self, obj):
-                self.__obj = obj
-            def __getattribute__(self, name):
-                if name.startswith("_Proxy__"):
-                    return object.__getattribute__(self, name)
-                else:
-                    return getattr(self.__obj, name)
-        # Test with a classic class
-        class C:
-            pass
-        a = C()
-        pa = Proxy(a)
-        self.assertIsInstance(a, C)  # Baseline
-        self.assertIsInstance(pa, C) # Test
-        # Test with a classic subclass
-        class D(C):
-            pass
-        a = D()
-        pa = Proxy(a)
-        self.assertIsInstance(a, C)  # Baseline
-        self.assertIsInstance(pa, C) # Test
-        # Test with a new-style class
-        class C(object):
-            pass
-        a = C()
-        pa = Proxy(a)
-        self.assertIsInstance(a, C)  # Baseline
-        self.assertIsInstance(pa, C) # Test
-        # Test with a new-style subclass
-        class D(C):
-            pass
-        a = D()
-        pa = Proxy(a)
-        self.assertIsInstance(a, C)  # Baseline
-        self.assertIsInstance(pa, C) # Test
-
-    def test_proxy_super(self):
-        # Testing super() for a proxy object...
-        class Proxy(object):
-            def __init__(self, obj):
-                self.__obj = obj
-            def __getattribute__(self, name):
-                if name.startswith("_Proxy__"):
-                    return object.__getattribute__(self, name)
-                else:
-                    return getattr(self.__obj, name)
-
-        class B(object):
-            def f(self):
-                return "B.f"
-
-        class C(B):
-            def f(self):
-                return super(C, self).f() + "->C.f"
-
-        obj = C()
-        p = Proxy(obj)
-        self.assertEqual(C.__dict__["f"](p), "B.f->C.f")
-
-    def test_carloverre(self):
-        # Testing prohibition of Carlo Verre's hack...
-        try:
-            object.__setattr__(str, "foo", 42)
-        except TypeError:
-            pass
-        else:
-            self.fail("Carlo Verre __setattr__ succeeded!")
-        try:
-            object.__delattr__(str, "lower")
-        except TypeError:
-            pass
-        else:
-            self.fail("Carlo Verre __delattr__ succeeded!")
-
-    def test_weakref_segfault(self):
-        # Testing weakref segfault...
-        # SF 742911
-        import weakref
-
-        class Provoker:
-            def __init__(self, referrent):
-                self.ref = weakref.ref(referrent)
-
-            def __del__(self):
-                x = self.ref()
-
-        class Oops(object):
-            pass
-
-        o = Oops()
-        o.whatever = Provoker(o)
-        del o
-
-    def test_wrapper_segfault(self):
-        # SF 927248: deeply nested wrappers could cause stack overflow
-        f = lambda:None
-        for i in xrange(1000000):
-            f = f.__call__
-        f = None
-
-    def test_file_fault(self):
-        # Testing sys.stdout is changed in getattr...
-        test_stdout = sys.stdout
-        class StdoutGuard:
-            def __getattr__(self, attr):
-                sys.stdout = sys.__stdout__
-                raise RuntimeError("Premature access to sys.stdout.%s" % attr)
-        sys.stdout = StdoutGuard()
-        try:
-            print "Oops!"
-        except RuntimeError:
-            pass
-        finally:
-            sys.stdout = test_stdout
-
-    def test_vicious_descriptor_nonsense(self):
-        # Testing vicious_descriptor_nonsense...
-
-        # A potential segfault spotted by Thomas Wouters in mail to
-        # python-dev 2003-04-17, turned into an example & fixed by Michael
-        # Hudson just less than four months later...
-
-        class Evil(object):
-            def __hash__(self):
-                return hash('attr')
-            def __eq__(self, other):
-                del C.attr
-                return 0
-
-        class Descr(object):
-            def __get__(self, ob, type=None):
-                return 1
-
-        class C(object):
-            attr = Descr()
-
-        c = C()
-        c.__dict__[Evil()] = 0
-
-        self.assertEqual(c.attr, 1)
-        # this makes a crash more likely:
-        test_support.gc_collect()
-        self.assertEqual(hasattr(c, 'attr'), False)
-
-    def test_init(self):
-        # SF 1155938
-        class Foo(object):
-            def __init__(self):
-                return 10
-        try:
-            Foo()
-        except TypeError:
-            pass
-        else:
-            self.fail("did not test __init__() for None return")
-
-    def test_method_wrapper(self):
-        # Testing method-wrapper objects...
-        # <type 'method-wrapper'> did not support any reflection before 2.5
-
-        l = []
-        self.assertEqual(l.__add__, l.__add__)
-        self.assertEqual(l.__add__, [].__add__)
-        self.assertTrue(l.__add__ != [5].__add__)
-        self.assertTrue(l.__add__ != l.__mul__)
-        self.assertTrue(l.__add__.__name__ == '__add__')
-        if hasattr(l.__add__, '__self__'):
-            # CPython
-            self.assertTrue(l.__add__.__self__ is l)
-            self.assertTrue(l.__add__.__objclass__ is list)
-        else:
-            # Python implementations where [].__add__ is a normal bound method
-            self.assertTrue(l.__add__.im_self is l)
-            self.assertTrue(l.__add__.im_class is list)
-        self.assertEqual(l.__add__.__doc__, list.__add__.__doc__)
-        try:
-            hash(l.__add__)
-        except TypeError:
-            pass
-        else:
-            self.fail("no TypeError from hash([].__add__)")
-
-        t = ()
-        t += (7,)
-        self.assertEqual(t.__add__, (7,).__add__)
-        self.assertEqual(hash(t.__add__), hash((7,).__add__))
-
-    def test_not_implemented(self):
-        # Testing NotImplemented...
-        # all binary methods should be able to return a NotImplemented
-        import operator
-
-        def specialmethod(self, other):
-            return NotImplemented
-
-        def check(expr, x, y):
-            try:
-                exec expr in {'x': x, 'y': y, 'operator': operator}
-            except TypeError:
-                pass
-            else:
-                self.fail("no TypeError from %r" % (expr,))
-
-        N1 = sys.maxint + 1L    # might trigger OverflowErrors instead of
-                                # TypeErrors
-        N2 = sys.maxint         # if sizeof(int) < sizeof(long), might trigger
-                                #   ValueErrors instead of TypeErrors
-        for metaclass in [type, types.ClassType]:
-            for name, expr, iexpr in [
-                    ('__add__',      'x + y',                   'x += y'),
-                    ('__sub__',      'x - y',                   'x -= y'),
-                    ('__mul__',      'x * y',                   'x *= y'),
-                    ('__truediv__',  'operator.truediv(x, y)',  None),
-                    ('__floordiv__', 'operator.floordiv(x, y)', None),
-                    ('__div__',      'x / y',                   'x /= y'),
-                    ('__mod__',      'x % y',                   'x %= y'),
-                    ('__divmod__',   'divmod(x, y)',            None),
-                    ('__pow__',      'x ** y',                  'x **= y'),
-                    ('__lshift__',   'x << y',                  'x <<= y'),
-                    ('__rshift__',   'x >> y',                  'x >>= y'),
-                    ('__and__',      'x & y',                   'x &= y'),
-                    ('__or__',       'x | y',                   'x |= y'),
-                    ('__xor__',      'x ^ y',                   'x ^= y'),
-                    ('__coerce__',   'coerce(x, y)',            None)]:
-                if name == '__coerce__':
-                    rname = name
-                else:
-                    rname = '__r' + name[2:]
-                A = metaclass('A', (), {name: specialmethod})
-                B = metaclass('B', (), {rname: specialmethod})
-                a = A()
-                b = B()
-                check(expr, a, a)
-                check(expr, a, b)
-                check(expr, b, a)
-                check(expr, b, b)
-                check(expr, a, N1)
-                check(expr, a, N2)
-                check(expr, N1, b)
-                check(expr, N2, b)
-                if iexpr:
-                    check(iexpr, a, a)
-                    check(iexpr, a, b)
-                    check(iexpr, b, a)
-                    check(iexpr, b, b)
-                    check(iexpr, a, N1)
-                    check(iexpr, a, N2)
-                    iname = '__i' + name[2:]
-                    C = metaclass('C', (), {iname: specialmethod})
-                    c = C()
-                    check(iexpr, c, a)
-                    check(iexpr, c, b)
-                    check(iexpr, c, N1)
-                    check(iexpr, c, N2)
-
-    def test_assign_slice(self):
-        # ceval.c's assign_slice used to check for
-        # tp->tp_as_sequence->sq_slice instead of
-        # tp->tp_as_sequence->sq_ass_slice
-
-        class C(object):
-            def __setslice__(self, start, stop, value):
-                self.value = value
-
-        c = C()
-        c[1:2] = 3
-        self.assertEqual(c.value, 3)
-
-    def test_set_and_no_get(self):
-        # See
-        # http://mail.python.org/pipermail/python-dev/2010-January/095637.html
-        class Descr(object):
-
-            def __init__(self, name):
-                self.name = name
-
-            def __set__(self, obj, value):
-                obj.__dict__[self.name] = value
-        descr = Descr("a")
-
-        class X(object):
-            a = descr
-
-        x = X()
-        self.assertIs(x.a, descr)
-        x.a = 42
-        self.assertEqual(x.a, 42)
-
-        # Also check type_getattro for correctness.
-        class Meta(type):
-            pass
-        class X(object):
-            __metaclass__ = Meta
-        X.a = 42
-        Meta.a = Descr("a")
-        self.assertEqual(X.a, 42)
-
-    def test_getattr_hooks(self):
-        # issue 4230
-
-        class Descriptor(object):
-            counter = 0
-            def __get__(self, obj, objtype=None):
-                def getter(name):
-                    self.counter += 1
-                    raise AttributeError(name)
-                return getter
-
-        descr = Descriptor()
-        class A(object):
-            __getattribute__ = descr
-        class B(object):
-            __getattr__ = descr
-        class C(object):
-            __getattribute__ = descr
-            __getattr__ = descr
-
-        self.assertRaises(AttributeError, getattr, A(), "attr")
-        self.assertEqual(descr.counter, 1)
-        self.assertRaises(AttributeError, getattr, B(), "attr")
-        self.assertEqual(descr.counter, 2)
-        self.assertRaises(AttributeError, getattr, C(), "attr")
-        self.assertEqual(descr.counter, 4)
-
-        import gc
-        class EvilGetattribute(object):
-            # This used to segfault
-            def __getattr__(self, name):
-                raise AttributeError(name)
-            def __getattribute__(self, name):
-                del EvilGetattribute.__getattr__
-                for i in range(5):
-                    gc.collect()
-                raise AttributeError(name)
-
-        self.assertRaises(AttributeError, getattr, EvilGetattribute(), "attr")
-
-    def test_abstractmethods(self):
-        # type pretends not to have __abstractmethods__.
-        self.assertRaises(AttributeError, getattr, type, "__abstractmethods__")
-        class meta(type):
-            pass
-        self.assertRaises(AttributeError, getattr, meta, "__abstractmethods__")
-        class X(object):
-            pass
-        with self.assertRaises(AttributeError):
-            del X.__abstractmethods__
-
-    def test_proxy_call(self):
-        class FakeStr(object):
-            __class__ = str
-
-        fake_str = FakeStr()
-        # isinstance() reads __class__ on new style classes
-        self.assertTrue(isinstance(fake_str, str))
-
-        # call a method descriptor
-        with self.assertRaises(TypeError):
-            str.split(fake_str)
-
-        # call a slot wrapper descriptor
-        with self.assertRaises(TypeError):
-            str.__add__(fake_str, "abc")
-
-
-class DictProxyTests(unittest.TestCase):
-    def setUp(self):
-        class C(object):
-            def meth(self):
-                pass
-        self.C = C
-
-    def test_iter_keys(self):
-        # Testing dict-proxy iterkeys...
-        keys = [ key for key in self.C.__dict__.iterkeys() ]
-        keys.sort()
-        self.assertEqual(keys, ['__dict__', '__doc__', '__module__',
-            '__weakref__', 'meth'])
-
-    def test_iter_values(self):
-        # Testing dict-proxy itervalues...
-        values = [ values for values in self.C.__dict__.itervalues() ]
-        self.assertEqual(len(values), 5)
-
-    def test_iter_items(self):
-        # Testing dict-proxy iteritems...
-        keys = [ key for (key, value) in self.C.__dict__.iteritems() ]
-        keys.sort()
-        self.assertEqual(keys, ['__dict__', '__doc__', '__module__',
-            '__weakref__', 'meth'])
-
-    def test_dict_type_with_metaclass(self):
-        # Testing type of __dict__ when __metaclass__ set...
-        class B(object):
-            pass
-        class M(type):
-            pass
-        class C:
-            # In 2.3a1, C.__dict__ was a real dict rather than a dict proxy
-            __metaclass__ = M
-        self.assertEqual(type(C.__dict__), type(B.__dict__))
-
-
-class PTypesLongInitTest(unittest.TestCase):
-    # This is in its own TestCase so that it can be run before any other tests.
-    def test_pytype_long_ready(self):
-        # Testing SF bug 551412 ...
-
-        # This dumps core when SF bug 551412 isn't fixed --
-        # but only when test_descr.py is run separately.
-        # (That can't be helped -- as soon as PyType_Ready()
-        # is called for PyLong_Type, the bug is gone.)
-        class UserLong(object):
-            def __pow__(self, *args):
-                pass
-        try:
-            pow(0L, UserLong(), 0L)
-        except:
-            pass
-
-        # Another segfault only when run early
-        # (before PyType_Ready(tuple) is called)
-        type.mro(tuple)
-
-
-def test_main():
-    deprecations = [(r'complex divmod\(\), // and % are deprecated$',
-                     DeprecationWarning)]
-    if sys.py3kwarning:
-        deprecations += [
-            ("classic (int|long) division", DeprecationWarning),
-            ("coerce.. not supported", DeprecationWarning),
-            (".+__(get|set|del)slice__ has been removed", DeprecationWarning)]
-    with test_support.check_warnings(*deprecations):
-        # Run all local test cases, with PTypesLongInitTest first.
-        test_support.run_unittest(PTypesLongInitTest, OperatorsTest,
-                                  ClassPropertiesAndMethods, DictProxyTests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_descrtut.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_descrtut.py
deleted file mode 100644
index 2b77042..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_descrtut.py
+++ /dev/null
@@ -1,497 +0,0 @@
-# This contains most of the executable examples from Guido's descr
-# tutorial, once at
-#
-#     http://www.python.org/2.2/descrintro.html
-#
-# A few examples left implicit in the writeup were fleshed out, a few were
-# skipped due to lack of interest (e.g., faking super() by hand isn't
-# of much interest anymore), and a few were fiddled to make the output
-# deterministic.
-
-from test.test_support import sortdict
-import pprint
-
-class defaultdict(dict):
-    def __init__(self, default=None):
-        dict.__init__(self)
-        self.default = default
-
-    def __getitem__(self, key):
-        try:
-            return dict.__getitem__(self, key)
-        except KeyError:
-            return self.default
-
-    def get(self, key, *args):
-        if not args:
-            args = (self.default,)
-        return dict.get(self, key, *args)
-
-    def merge(self, other):
-        for key in other:
-            if key not in self:
-                self[key] = other[key]
-
-test_1 = """
-
-Here's the new type at work:
-
-    >>> print defaultdict               # show our type
-    <class 'test.test_descrtut.defaultdict'>
-    >>> print type(defaultdict)         # its metatype
-    <type 'type'>
-    >>> a = defaultdict(default=0.0)    # create an instance
-    >>> print a                         # show the instance
-    {}
-    >>> print type(a)                   # show its type
-    <class 'test.test_descrtut.defaultdict'>
-    >>> print a.__class__               # show its class
-    <class 'test.test_descrtut.defaultdict'>
-    >>> print type(a) is a.__class__    # its type is its class
-    True
-    >>> a[1] = 3.25                     # modify the instance
-    >>> print a                         # show the new value
-    {1: 3.25}
-    >>> print a[1]                      # show the new item
-    3.25
-    >>> print a[0]                      # a non-existent item
-    0.0
-    >>> a.merge({1:100, 2:200})         # use a dict method
-    >>> print sortdict(a)               # show the result
-    {1: 3.25, 2: 200}
-    >>>
-
-We can also use the new type in contexts where classic only allows "real"
-dictionaries, such as the locals/globals dictionaries for the exec
-statement or the built-in function eval():
-
-    >>> def sorted(seq):
-    ...     seq.sort(key=str)
-    ...     return seq
-    >>> print sorted(a.keys())
-    [1, 2]
-    >>> exec "x = 3; print x" in a
-    3
-    >>> print sorted(a.keys())
-    [1, 2, '__builtins__', 'x']
-    >>> print a['x']
-    3
-    >>>
-
-Now I'll show that defaultdict instances have dynamic instance variables,
-just like classic classes:
-
-    >>> a.default = -1
-    >>> print a["noway"]
-    -1
-    >>> a.default = -1000
-    >>> print a["noway"]
-    -1000
-    >>> 'default' in dir(a)
-    True
-    >>> a.x1 = 100
-    >>> a.x2 = 200
-    >>> print a.x1
-    100
-    >>> d = dir(a)
-    >>> 'default' in d and 'x1' in d and 'x2' in d
-    True
-    >>> print sortdict(a.__dict__)
-    {'default': -1000, 'x1': 100, 'x2': 200}
-    >>>
-"""
-
-class defaultdict2(dict):
-    __slots__ = ['default']
-
-    def __init__(self, default=None):
-        dict.__init__(self)
-        self.default = default
-
-    def __getitem__(self, key):
-        try:
-            return dict.__getitem__(self, key)
-        except KeyError:
-            return self.default
-
-    def get(self, key, *args):
-        if not args:
-            args = (self.default,)
-        return dict.get(self, key, *args)
-
-    def merge(self, other):
-        for key in other:
-            if key not in self:
-                self[key] = other[key]
-
-test_2 = """
-
-The __slots__ declaration takes a list of instance variables, and reserves
-space for exactly these in the instance. When __slots__ is used, other
-instance variables cannot be assigned to:
-
-    >>> a = defaultdict2(default=0.0)
-    >>> a[1]
-    0.0
-    >>> a.default = -1
-    >>> a[1]
-    -1
-    >>> a.x1 = 1
-    Traceback (most recent call last):
-      File "<stdin>", line 1, in ?
-    AttributeError: 'defaultdict2' object has no attribute 'x1'
-    >>>
-
-"""
-
-test_3 = """
-
-Introspecting instances of built-in types
-
-For instance of built-in types, x.__class__ is now the same as type(x):
-
-    >>> type([])
-    <type 'list'>
-    >>> [].__class__
-    <type 'list'>
-    >>> list
-    <type 'list'>
-    >>> isinstance([], list)
-    True
-    >>> isinstance([], dict)
-    False
-    >>> isinstance([], object)
-    True
-    >>>
-
-Under the new proposal, the __methods__ attribute no longer exists:
-
-    >>> [].__methods__
-    Traceback (most recent call last):
-      File "<stdin>", line 1, in ?
-    AttributeError: 'list' object has no attribute '__methods__'
-    >>>
-
-Instead, you can get the same information from the list type:
-
-    >>> pprint.pprint(dir(list))    # like list.__dict__.keys(), but sorted
-    ['__add__',
-     '__class__',
-     '__contains__',
-     '__delattr__',
-     '__delitem__',
-     '__delslice__',
-     '__doc__',
-     '__eq__',
-     '__format__',
-     '__ge__',
-     '__getattribute__',
-     '__getitem__',
-     '__getslice__',
-     '__gt__',
-     '__hash__',
-     '__iadd__',
-     '__imul__',
-     '__init__',
-     '__iter__',
-     '__le__',
-     '__len__',
-     '__lt__',
-     '__mul__',
-     '__ne__',
-     '__new__',
-     '__reduce__',
-     '__reduce_ex__',
-     '__repr__',
-     '__reversed__',
-     '__rmul__',
-     '__setattr__',
-     '__setitem__',
-     '__setslice__',
-     '__sizeof__',
-     '__str__',
-     '__subclasshook__',
-     'append',
-     'count',
-     'extend',
-     'index',
-     'insert',
-     'pop',
-     'remove',
-     'reverse',
-     'sort']
-
-The new introspection API gives more information than the old one:  in
-addition to the regular methods, it also shows the methods that are
-normally invoked through special notations, e.g. __iadd__ (+=), __len__
-(len), __ne__ (!=). You can invoke any method from this list directly:
-
-    >>> a = ['tic', 'tac']
-    >>> list.__len__(a)          # same as len(a)
-    2
-    >>> a.__len__()              # ditto
-    2
-    >>> list.append(a, 'toe')    # same as a.append('toe')
-    >>> a
-    ['tic', 'tac', 'toe']
-    >>>
-
-This is just like it is for user-defined classes.
-"""
-
-test_4 = """
-
-Static methods and class methods
-
-The new introspection API makes it possible to add static methods and class
-methods. Static methods are easy to describe: they behave pretty much like
-static methods in C++ or Java. Here's an example:
-
-    >>> class C:
-    ...
-    ...     @staticmethod
-    ...     def foo(x, y):
-    ...         print "staticmethod", x, y
-
-    >>> C.foo(1, 2)
-    staticmethod 1 2
-    >>> c = C()
-    >>> c.foo(1, 2)
-    staticmethod 1 2
-
-Class methods use a similar pattern to declare methods that receive an
-implicit first argument that is the *class* for which they are invoked.
-
-    >>> class C:
-    ...     @classmethod
-    ...     def foo(cls, y):
-    ...         print "classmethod", cls, y
-
-    >>> C.foo(1)
-    classmethod test.test_descrtut.C 1
-    >>> c = C()
-    >>> c.foo(1)
-    classmethod test.test_descrtut.C 1
-
-    >>> class D(C):
-    ...     pass
-
-    >>> D.foo(1)
-    classmethod test.test_descrtut.D 1
-    >>> d = D()
-    >>> d.foo(1)
-    classmethod test.test_descrtut.D 1
-
-This prints "classmethod __main__.D 1" both times; in other words, the
-class passed as the first argument of foo() is the class involved in the
-call, not the class involved in the definition of foo().
-
-But notice this:
-
-    >>> class E(C):
-    ...     @classmethod
-    ...     def foo(cls, y): # override C.foo
-    ...         print "E.foo() called"
-    ...         C.foo(y)
-
-    >>> E.foo(1)
-    E.foo() called
-    classmethod test.test_descrtut.C 1
-    >>> e = E()
-    >>> e.foo(1)
-    E.foo() called
-    classmethod test.test_descrtut.C 1
-
-In this example, the call to C.foo() from E.foo() will see class C as its
-first argument, not class E. This is to be expected, since the call
-specifies the class C. But it stresses the difference between these class
-methods and methods defined in metaclasses (where an upcall to a metamethod
-would pass the target class as an explicit first argument).
-"""
-
-test_5 = """
-
-Attributes defined by get/set methods
-
-
-    >>> class property(object):
-    ...
-    ...     def __init__(self, get, set=None):
-    ...         self.__get = get
-    ...         self.__set = set
-    ...
-    ...     def __get__(self, inst, type=None):
-    ...         return self.__get(inst)
-    ...
-    ...     def __set__(self, inst, value):
-    ...         if self.__set is None:
-    ...             raise AttributeError, "this attribute is read-only"
-    ...         return self.__set(inst, value)
-
-Now let's define a class with an attribute x defined by a pair of methods,
-getx() and and setx():
-
-    >>> class C(object):
-    ...
-    ...     def __init__(self):
-    ...         self.__x = 0
-    ...
-    ...     def getx(self):
-    ...         return self.__x
-    ...
-    ...     def setx(self, x):
-    ...         if x < 0: x = 0
-    ...         self.__x = x
-    ...
-    ...     x = property(getx, setx)
-
-Here's a small demonstration:
-
-    >>> a = C()
-    >>> a.x = 10
-    >>> print a.x
-    10
-    >>> a.x = -10
-    >>> print a.x
-    0
-    >>>
-
-Hmm -- property is builtin now, so let's try it that way too.
-
-    >>> del property  # unmask the builtin
-    >>> property
-    <type 'property'>
-
-    >>> class C(object):
-    ...     def __init__(self):
-    ...         self.__x = 0
-    ...     def getx(self):
-    ...         return self.__x
-    ...     def setx(self, x):
-    ...         if x < 0: x = 0
-    ...         self.__x = x
-    ...     x = property(getx, setx)
-
-
-    >>> a = C()
-    >>> a.x = 10
-    >>> print a.x
-    10
-    >>> a.x = -10
-    >>> print a.x
-    0
-    >>>
-"""
-
-test_6 = """
-
-Method resolution order
-
-This example is implicit in the writeup.
-
->>> class A:    # classic class
-...     def save(self):
-...         print "called A.save()"
->>> class B(A):
-...     pass
->>> class C(A):
-...     def save(self):
-...         print "called C.save()"
->>> class D(B, C):
-...     pass
-
->>> D().save()
-called A.save()
-
->>> class A(object):  # new class
-...     def save(self):
-...         print "called A.save()"
->>> class B(A):
-...     pass
->>> class C(A):
-...     def save(self):
-...         print "called C.save()"
->>> class D(B, C):
-...     pass
-
->>> D().save()
-called C.save()
-"""
-
-class A(object):
-    def m(self):
-        return "A"
-
-class B(A):
-    def m(self):
-        return "B" + super(B, self).m()
-
-class C(A):
-    def m(self):
-        return "C" + super(C, self).m()
-
-class D(C, B):
-    def m(self):
-        return "D" + super(D, self).m()
-
-
-test_7 = """
-
-Cooperative methods and "super"
-
->>> print D().m() # "DCBA"
-DCBA
-"""
-
-test_8 = """
-
-Backwards incompatibilities
-
->>> class A:
-...     def foo(self):
-...         print "called A.foo()"
-
->>> class B(A):
-...     pass
-
->>> class C(A):
-...     def foo(self):
-...         B.foo(self)
-
->>> C().foo()
-Traceback (most recent call last):
- ...
-TypeError: unbound method foo() must be called with B instance as first argument (got C instance instead)
-
->>> class C(A):
-...     def foo(self):
-...         A.foo(self)
->>> C().foo()
-called A.foo()
-"""
-
-__test__ = {"tut1": test_1,
-            "tut2": test_2,
-            "tut3": test_3,
-            "tut4": test_4,
-            "tut5": test_5,
-            "tut6": test_6,
-            "tut7": test_7,
-            "tut8": test_8}
-
-# Magic test name that regrtest.py invokes *after* importing this module.
-# This worms around a bootstrap problem.
-# Note that doctest and regrtest both look in sys.argv for a "-v" argument,
-# so this works as expected in both ways of running regrtest.
-def test_main(verbose=None):
-    # Obscure:  import this module as test.test_descrtut instead of as
-    # plain test_descrtut because the name of this module works its way
-    # into the doctest examples, and unless the full test.test_descrtut
-    # business is used the name can change depending on how the test is
-    # invoked.
-    from test import test_support, test_descrtut
-    test_support.run_doctest(test_descrtut, verbose)
-
-# This part isn't needed for regrtest, but for running the test directly.
-if __name__ == "__main__":
-    test_main(1)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dict.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dict.py
deleted file mode 100644
index 08dcea1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dict.py
+++ /dev/null
@@ -1,676 +0,0 @@
-import unittest
-from test import test_support
-
-import UserDict, random, string
-import gc, weakref
-
-
-class DictTest(unittest.TestCase):
-    def test_constructor(self):
-        # calling built-in types without argument must return empty
-        self.assertEqual(dict(), {})
-        self.assertIsNot(dict(), {})
-
-    def test_literal_constructor(self):
-        # check literal constructor for different sized dicts
-        # (to exercise the BUILD_MAP oparg).
-        for n in (0, 1, 6, 256, 400):
-            items = [(''.join(random.sample(string.letters, 8)), i)
-                     for i in range(n)]
-            random.shuffle(items)
-            formatted_items = ('{!r}: {:d}'.format(k, v) for k, v in items)
-            dictliteral = '{' + ', '.join(formatted_items) + '}'
-            self.assertEqual(eval(dictliteral), dict(items))
-
-    def test_bool(self):
-        self.assertIs(not {}, True)
-        self.assertTrue({1: 2})
-        self.assertIs(bool({}), False)
-        self.assertIs(bool({1: 2}), True)
-
-    def test_keys(self):
-        d = {}
-        self.assertEqual(d.keys(), [])
-        d = {'a': 1, 'b': 2}
-        k = d.keys()
-        self.assertTrue(d.has_key('a'))
-        self.assertTrue(d.has_key('b'))
-
-        self.assertRaises(TypeError, d.keys, None)
-
-    def test_values(self):
-        d = {}
-        self.assertEqual(d.values(), [])
-        d = {1:2}
-        self.assertEqual(d.values(), [2])
-
-        self.assertRaises(TypeError, d.values, None)
-
-    def test_items(self):
-        d = {}
-        self.assertEqual(d.items(), [])
-
-        d = {1:2}
-        self.assertEqual(d.items(), [(1, 2)])
-
-        self.assertRaises(TypeError, d.items, None)
-
-    def test_has_key(self):
-        d = {}
-        self.assertFalse(d.has_key('a'))
-        d = {'a': 1, 'b': 2}
-        k = d.keys()
-        k.sort()
-        self.assertEqual(k, ['a', 'b'])
-
-        self.assertRaises(TypeError, d.has_key)
-
-    def test_contains(self):
-        d = {}
-        self.assertNotIn('a', d)
-        self.assertFalse('a' in d)
-        self.assertTrue('a' not in d)
-        d = {'a': 1, 'b': 2}
-        self.assertIn('a', d)
-        self.assertIn('b', d)
-        self.assertNotIn('c', d)
-
-        self.assertRaises(TypeError, d.__contains__)
-
-    def test_len(self):
-        d = {}
-        self.assertEqual(len(d), 0)
-        d = {'a': 1, 'b': 2}
-        self.assertEqual(len(d), 2)
-
-    def test_getitem(self):
-        d = {'a': 1, 'b': 2}
-        self.assertEqual(d['a'], 1)
-        self.assertEqual(d['b'], 2)
-        d['c'] = 3
-        d['a'] = 4
-        self.assertEqual(d['c'], 3)
-        self.assertEqual(d['a'], 4)
-        del d['b']
-        self.assertEqual(d, {'a': 4, 'c': 3})
-
-        self.assertRaises(TypeError, d.__getitem__)
-
-        class BadEq(object):
-            def __eq__(self, other):
-                raise Exc()
-            def __hash__(self):
-                return 24
-
-        d = {}
-        d[BadEq()] = 42
-        self.assertRaises(KeyError, d.__getitem__, 23)
-
-        class Exc(Exception): pass
-
-        class BadHash(object):
-            fail = False
-            def __hash__(self):
-                if self.fail:
-                    raise Exc()
-                else:
-                    return 42
-
-        x = BadHash()
-        d[x] = 42
-        x.fail = True
-        self.assertRaises(Exc, d.__getitem__, x)
-
-    def test_clear(self):
-        d = {1:1, 2:2, 3:3}
-        d.clear()
-        self.assertEqual(d, {})
-
-        self.assertRaises(TypeError, d.clear, None)
-
-    def test_update(self):
-        d = {}
-        d.update({1:100})
-        d.update({2:20})
-        d.update({1:1, 2:2, 3:3})
-        self.assertEqual(d, {1:1, 2:2, 3:3})
-
-        d.update()
-        self.assertEqual(d, {1:1, 2:2, 3:3})
-
-        self.assertRaises((TypeError, AttributeError), d.update, None)
-
-        class SimpleUserDict:
-            def __init__(self):
-                self.d = {1:1, 2:2, 3:3}
-            def keys(self):
-                return self.d.keys()
-            def __getitem__(self, i):
-                return self.d[i]
-        d.clear()
-        d.update(SimpleUserDict())
-        self.assertEqual(d, {1:1, 2:2, 3:3})
-
-        class Exc(Exception): pass
-
-        d.clear()
-        class FailingUserDict:
-            def keys(self):
-                raise Exc
-        self.assertRaises(Exc, d.update, FailingUserDict())
-
-        class FailingUserDict:
-            def keys(self):
-                class BogonIter:
-                    def __init__(self):
-                        self.i = 1
-                    def __iter__(self):
-                        return self
-                    def next(self):
-                        if self.i:
-                            self.i = 0
-                            return 'a'
-                        raise Exc
-                return BogonIter()
-            def __getitem__(self, key):
-                return key
-        self.assertRaises(Exc, d.update, FailingUserDict())
-
-        class FailingUserDict:
-            def keys(self):
-                class BogonIter:
-                    def __init__(self):
-                        self.i = ord('a')
-                    def __iter__(self):
-                        return self
-                    def next(self):
-                        if self.i <= ord('z'):
-                            rtn = chr(self.i)
-                            self.i += 1
-                            return rtn
-                        raise StopIteration
-                return BogonIter()
-            def __getitem__(self, key):
-                raise Exc
-        self.assertRaises(Exc, d.update, FailingUserDict())
-
-        class badseq(object):
-            def __iter__(self):
-                return self
-            def next(self):
-                raise Exc()
-
-        self.assertRaises(Exc, {}.update, badseq())
-
-        self.assertRaises(ValueError, {}.update, [(1, 2, 3)])
-
-    def test_fromkeys(self):
-        self.assertEqual(dict.fromkeys('abc'), {'a':None, 'b':None, 'c':None})
-        d = {}
-        self.assertIsNot(d.fromkeys('abc'), d)
-        self.assertEqual(d.fromkeys('abc'), {'a':None, 'b':None, 'c':None})
-        self.assertEqual(d.fromkeys((4,5),0), {4:0, 5:0})
-        self.assertEqual(d.fromkeys([]), {})
-        def g():
-            yield 1
-        self.assertEqual(d.fromkeys(g()), {1:None})
-        self.assertRaises(TypeError, {}.fromkeys, 3)
-        class dictlike(dict): pass
-        self.assertEqual(dictlike.fromkeys('a'), {'a':None})
-        self.assertEqual(dictlike().fromkeys('a'), {'a':None})
-        self.assertIsInstance(dictlike.fromkeys('a'), dictlike)
-        self.assertIsInstance(dictlike().fromkeys('a'), dictlike)
-        class mydict(dict):
-            def __new__(cls):
-                return UserDict.UserDict()
-        ud = mydict.fromkeys('ab')
-        self.assertEqual(ud, {'a':None, 'b':None})
-        self.assertIsInstance(ud, UserDict.UserDict)
-        self.assertRaises(TypeError, dict.fromkeys)
-
-        class Exc(Exception): pass
-
-        class baddict1(dict):
-            def __init__(self):
-                raise Exc()
-
-        self.assertRaises(Exc, baddict1.fromkeys, [1])
-
-        class BadSeq(object):
-            def __iter__(self):
-                return self
-            def next(self):
-                raise Exc()
-
-        self.assertRaises(Exc, dict.fromkeys, BadSeq())
-
-        class baddict2(dict):
-            def __setitem__(self, key, value):
-                raise Exc()
-
-        self.assertRaises(Exc, baddict2.fromkeys, [1])
-
-        # test fast path for dictionary inputs
-        d = dict(zip(range(6), range(6)))
-        self.assertEqual(dict.fromkeys(d, 0), dict(zip(range(6), [0]*6)))
-
-    def test_copy(self):
-        d = {1:1, 2:2, 3:3}
-        self.assertEqual(d.copy(), {1:1, 2:2, 3:3})
-        self.assertEqual({}.copy(), {})
-        self.assertRaises(TypeError, d.copy, None)
-
-    def test_get(self):
-        d = {}
-        self.assertIs(d.get('c'), None)
-        self.assertEqual(d.get('c', 3), 3)
-        d = {'a': 1, 'b': 2}
-        self.assertIs(d.get('c'), None)
-        self.assertEqual(d.get('c', 3), 3)
-        self.assertEqual(d.get('a'), 1)
-        self.assertEqual(d.get('a', 3), 1)
-        self.assertRaises(TypeError, d.get)
-        self.assertRaises(TypeError, d.get, None, None, None)
-
-    def test_setdefault(self):
-        # dict.setdefault()
-        d = {}
-        self.assertIs(d.setdefault('key0'), None)
-        d.setdefault('key0', [])
-        self.assertIs(d.setdefault('key0'), None)
-        d.setdefault('key', []).append(3)
-        self.assertEqual(d['key'][0], 3)
-        d.setdefault('key', []).append(4)
-        self.assertEqual(len(d['key']), 2)
-        self.assertRaises(TypeError, d.setdefault)
-
-        class Exc(Exception): pass
-
-        class BadHash(object):
-            fail = False
-            def __hash__(self):
-                if self.fail:
-                    raise Exc()
-                else:
-                    return 42
-
-        x = BadHash()
-        d[x] = 42
-        x.fail = True
-        self.assertRaises(Exc, d.setdefault, x, [])
-
-    def test_popitem(self):
-        # dict.popitem()
-        for copymode in -1, +1:
-            # -1: b has same structure as a
-            # +1: b is a.copy()
-            for log2size in range(12):
-                size = 2**log2size
-                a = {}
-                b = {}
-                for i in range(size):
-                    a[repr(i)] = i
-                    if copymode < 0:
-                        b[repr(i)] = i
-                if copymode > 0:
-                    b = a.copy()
-                for i in range(size):
-                    ka, va = ta = a.popitem()
-                    self.assertEqual(va, int(ka))
-                    kb, vb = tb = b.popitem()
-                    self.assertEqual(vb, int(kb))
-                    self.assertFalse(copymode < 0 and ta != tb)
-                self.assertFalse(a)
-                self.assertFalse(b)
-
-        d = {}
-        self.assertRaises(KeyError, d.popitem)
-
-    def test_pop(self):
-        # Tests for pop with specified key
-        d = {}
-        k, v = 'abc', 'def'
-        d[k] = v
-        self.assertRaises(KeyError, d.pop, 'ghi')
-
-        self.assertEqual(d.pop(k), v)
-        self.assertEqual(len(d), 0)
-
-        self.assertRaises(KeyError, d.pop, k)
-
-        # verify longs/ints get same value when key > 32 bits
-        # (for 64-bit archs).  See SF bug #689659.
-        x = 4503599627370496L
-        y = 4503599627370496
-        h = {x: 'anything', y: 'something else'}
-        self.assertEqual(h[x], h[y])
-
-        self.assertEqual(d.pop(k, v), v)
-        d[k] = v
-        self.assertEqual(d.pop(k, 1), v)
-
-        self.assertRaises(TypeError, d.pop)
-
-        class Exc(Exception): pass
-
-        class BadHash(object):
-            fail = False
-            def __hash__(self):
-                if self.fail:
-                    raise Exc()
-                else:
-                    return 42
-
-        x = BadHash()
-        d[x] = 42
-        x.fail = True
-        self.assertRaises(Exc, d.pop, x)
-
-    def test_mutatingiteration(self):
-        # changing dict size during iteration
-        d = {}
-        d[1] = 1
-        with self.assertRaises(RuntimeError):
-            for i in d:
-                d[i+1] = 1
-
-    def test_repr(self):
-        d = {}
-        self.assertEqual(repr(d), '{}')
-        d[1] = 2
-        self.assertEqual(repr(d), '{1: 2}')
-        d = {}
-        d[1] = d
-        self.assertEqual(repr(d), '{1: {...}}')
-
-        class Exc(Exception): pass
-
-        class BadRepr(object):
-            def __repr__(self):
-                raise Exc()
-
-        d = {1: BadRepr()}
-        self.assertRaises(Exc, repr, d)
-
-    def test_le(self):
-        self.assertFalse({} < {})
-        self.assertFalse({1: 2} < {1L: 2L})
-
-        class Exc(Exception): pass
-
-        class BadCmp(object):
-            def __eq__(self, other):
-                raise Exc()
-            def __hash__(self):
-                return 42
-
-        d1 = {BadCmp(): 1}
-        d2 = {1: 1}
-
-        with self.assertRaises(Exc):
-            d1 < d2
-
-    def test_missing(self):
-        # Make sure dict doesn't have a __missing__ method
-        self.assertFalse(hasattr(dict, "__missing__"))
-        self.assertFalse(hasattr({}, "__missing__"))
-        # Test several cases:
-        # (D) subclass defines __missing__ method returning a value
-        # (E) subclass defines __missing__ method raising RuntimeError
-        # (F) subclass sets __missing__ instance variable (no effect)
-        # (G) subclass doesn't define __missing__ at a all
-        class D(dict):
-            def __missing__(self, key):
-                return 42
-        d = D({1: 2, 3: 4})
-        self.assertEqual(d[1], 2)
-        self.assertEqual(d[3], 4)
-        self.assertNotIn(2, d)
-        self.assertNotIn(2, d.keys())
-        self.assertEqual(d[2], 42)
-
-        class E(dict):
-            def __missing__(self, key):
-                raise RuntimeError(key)
-        e = E()
-        with self.assertRaises(RuntimeError) as c:
-            e[42]
-        self.assertEqual(c.exception.args, (42,))
-
-        class F(dict):
-            def __init__(self):
-                # An instance variable __missing__ should have no effect
-                self.__missing__ = lambda key: None
-        f = F()
-        with self.assertRaises(KeyError) as c:
-            f[42]
-        self.assertEqual(c.exception.args, (42,))
-
-        class G(dict):
-            pass
-        g = G()
-        with self.assertRaises(KeyError) as c:
-            g[42]
-        self.assertEqual(c.exception.args, (42,))
-
-    def test_tuple_keyerror(self):
-        # SF #1576657
-        d = {}
-        with self.assertRaises(KeyError) as c:
-            d[(1,)]
-        self.assertEqual(c.exception.args, ((1,),))
-
-    def test_bad_key(self):
-        # Dictionary lookups should fail if __cmp__() raises an exception.
-        class CustomException(Exception):
-            pass
-
-        class BadDictKey:
-            def __hash__(self):
-                return hash(self.__class__)
-
-            def __cmp__(self, other):
-                if isinstance(other, self.__class__):
-                    raise CustomException
-                return other
-
-        d = {}
-        x1 = BadDictKey()
-        x2 = BadDictKey()
-        d[x1] = 1
-        for stmt in ['d[x2] = 2',
-                     'z = d[x2]',
-                     'x2 in d',
-                     'd.has_key(x2)',
-                     'd.get(x2)',
-                     'd.setdefault(x2, 42)',
-                     'd.pop(x2)',
-                     'd.update({x2: 2})']:
-            with self.assertRaises(CustomException):
-                exec stmt in locals()
-
-    def test_resize1(self):
-        # Dict resizing bug, found by Jack Jansen in 2.2 CVS development.
-        # This version got an assert failure in debug build, infinite loop in
-        # release build.  Unfortunately, provoking this kind of stuff requires
-        # a mix of inserts and deletes hitting exactly the right hash codes in
-        # exactly the right order, and I can't think of a randomized approach
-        # that would be *likely* to hit a failing case in reasonable time.
-
-        d = {}
-        for i in range(5):
-            d[i] = i
-        for i in range(5):
-            del d[i]
-        for i in range(5, 9):  # i==8 was the problem
-            d[i] = i
-
-    def test_resize2(self):
-        # Another dict resizing bug (SF bug #1456209).
-        # This caused Segmentation faults or Illegal instructions.
-
-        class X(object):
-            def __hash__(self):
-                return 5
-            def __eq__(self, other):
-                if resizing:
-                    d.clear()
-                return False
-        d = {}
-        resizing = False
-        d[X()] = 1
-        d[X()] = 2
-        d[X()] = 3
-        d[X()] = 4
-        d[X()] = 5
-        # now trigger a resize
-        resizing = True
-        d[9] = 6
-
-    def test_empty_presized_dict_in_freelist(self):
-        # Bug #3537: if an empty but presized dict with a size larger
-        # than 7 was in the freelist, it triggered an assertion failure
-        with self.assertRaises(ZeroDivisionError):
-            d = {'a': 1 // 0, 'b': None, 'c': None, 'd': None, 'e': None,
-                 'f': None, 'g': None, 'h': None}
-        d = {}
-
-    def test_container_iterator(self):
-        # Bug #3680: tp_traverse was not implemented for dictiter objects
-        class C(object):
-            pass
-        iterators = (dict.iteritems, dict.itervalues, dict.iterkeys)
-        for i in iterators:
-            obj = C()
-            ref = weakref.ref(obj)
-            container = {obj: 1}
-            obj.x = i(container)
-            del obj, container
-            gc.collect()
-            self.assertIs(ref(), None, "Cycle was not collected")
-
-    def _not_tracked(self, t):
-        # Nested containers can take several collections to untrack
-        gc.collect()
-        gc.collect()
-        self.assertFalse(gc.is_tracked(t), t)
-
-    def _tracked(self, t):
-        self.assertTrue(gc.is_tracked(t), t)
-        gc.collect()
-        gc.collect()
-        self.assertTrue(gc.is_tracked(t), t)
-
-    @test_support.cpython_only
-    def test_track_literals(self):
-        # Test GC-optimization of dict literals
-        x, y, z, w = 1.5, "a", (1, None), []
-
-        self._not_tracked({})
-        self._not_tracked({x:(), y:x, z:1})
-        self._not_tracked({1: "a", "b": 2})
-        self._not_tracked({1: 2, (None, True, False, ()): int})
-        self._not_tracked({1: object()})
-
-        # Dicts with mutable elements are always tracked, even if those
-        # elements are not tracked right now.
-        self._tracked({1: []})
-        self._tracked({1: ([],)})
-        self._tracked({1: {}})
-        self._tracked({1: set()})
-
-    @test_support.cpython_only
-    def test_track_dynamic(self):
-        # Test GC-optimization of dynamically-created dicts
-        class MyObject(object):
-            pass
-        x, y, z, w, o = 1.5, "a", (1, object()), [], MyObject()
-
-        d = dict()
-        self._not_tracked(d)
-        d[1] = "a"
-        self._not_tracked(d)
-        d[y] = 2
-        self._not_tracked(d)
-        d[z] = 3
-        self._not_tracked(d)
-        self._not_tracked(d.copy())
-        d[4] = w
-        self._tracked(d)
-        self._tracked(d.copy())
-        d[4] = None
-        self._not_tracked(d)
-        self._not_tracked(d.copy())
-
-        # dd isn't tracked right now, but it may mutate and therefore d
-        # which contains it must be tracked.
-        d = dict()
-        dd = dict()
-        d[1] = dd
-        self._not_tracked(dd)
-        self._tracked(d)
-        dd[1] = d
-        self._tracked(dd)
-
-        d = dict.fromkeys([x, y, z])
-        self._not_tracked(d)
-        dd = dict()
-        dd.update(d)
-        self._not_tracked(dd)
-        d = dict.fromkeys([x, y, z, o])
-        self._tracked(d)
-        dd = dict()
-        dd.update(d)
-        self._tracked(dd)
-
-        d = dict(x=x, y=y, z=z)
-        self._not_tracked(d)
-        d = dict(x=x, y=y, z=z, w=w)
-        self._tracked(d)
-        d = dict()
-        d.update(x=x, y=y, z=z)
-        self._not_tracked(d)
-        d.update(w=w)
-        self._tracked(d)
-
-        d = dict([(x, y), (z, 1)])
-        self._not_tracked(d)
-        d = dict([(x, y), (z, w)])
-        self._tracked(d)
-        d = dict()
-        d.update([(x, y), (z, 1)])
-        self._not_tracked(d)
-        d.update([(x, y), (z, w)])
-        self._tracked(d)
-
-    @test_support.cpython_only
-    def test_track_subtypes(self):
-        # Dict subtypes are always tracked
-        class MyDict(dict):
-            pass
-        self._tracked(MyDict())
-
-
-from test import mapping_tests
-
-class GeneralMappingTests(mapping_tests.BasicTestMappingProtocol):
-    type2test = dict
-
-class Dict(dict):
-    pass
-
-class SubclassMappingTests(mapping_tests.BasicTestMappingProtocol):
-    type2test = Dict
-
-def test_main():
-    with test_support.check_py3k_warnings(
-        ('dict(.has_key..| inequality comparisons) not supported in 3.x',
-         DeprecationWarning)):
-        test_support.run_unittest(
-            DictTest,
-            GeneralMappingTests,
-            SubclassMappingTests,
-        )
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dictcomps.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dictcomps.py
deleted file mode 100644
index 2e41e43..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dictcomps.py
+++ /dev/null
@@ -1,54 +0,0 @@
-
-doctests = """
-
-    >>> k = "old value"
-    >>> { k: None for k in range(10) }
-    {0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None}
-    >>> k
-    'old value'
-
-    >>> { k: k+10 for k in range(10) }
-    {0: 10, 1: 11, 2: 12, 3: 13, 4: 14, 5: 15, 6: 16, 7: 17, 8: 18, 9: 19}
-
-    >>> g = "Global variable"
-    >>> { k: g for k in range(10) }
-    {0: 'Global variable', 1: 'Global variable', 2: 'Global variable', 3: 'Global variable', 4: 'Global variable', 5: 'Global variable', 6: 'Global variable', 7: 'Global variable', 8: 'Global variable', 9: 'Global variable'}
-
-    >>> { k: v for k in range(10) for v in range(10) if k == v }
-    {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}
-
-    >>> { k: v for v in range(10) for k in range(v*9, v*10) }
-    {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4, 38: 4, 39: 4, 45: 5, 46: 5, 47: 5, 48: 5, 49: 5, 54: 6, 55: 6, 56: 6, 57: 6, 58: 6, 59: 6, 63: 7, 64: 7, 65: 7, 66: 7, 67: 7, 68: 7, 69: 7, 72: 8, 73: 8, 74: 8, 75: 8, 76: 8, 77: 8, 78: 8, 79: 8, 81: 9, 82: 9, 83: 9, 84: 9, 85: 9, 86: 9, 87: 9, 88: 9, 89: 9}
-
-    >>> { x: y for y, x in ((1, 2), (3, 4)) } = 5 # doctest: +IGNORE_EXCEPTION_DETAIL
-    Traceback (most recent call last):
-       ...
-    SyntaxError: ...
-
-    >>> { x: y for y, x in ((1, 2), (3, 4)) } += 5 # doctest: +IGNORE_EXCEPTION_DETAIL
-    Traceback (most recent call last):
-       ...
-    SyntaxError: ...
-
-"""
-
-__test__ = {'doctests' : doctests}
-
-def test_main(verbose=None):
-    import sys
-    from test import test_support
-    from test import test_dictcomps
-    test_support.run_doctest(test_dictcomps, verbose)
-
-    # verify reference counting
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        import gc
-        counts = [None] * 5
-        for i in range(len(counts)):
-            test_support.run_doctest(test_dictcomps, verbose)
-            gc.collect()
-            counts[i] = sys.gettotalrefcount()
-        print(counts)
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dictviews.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dictviews.py
deleted file mode 100644
index de6997e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dictviews.py
+++ /dev/null
@@ -1,154 +0,0 @@
-import unittest
-from test import test_support
-
-class DictSetTest(unittest.TestCase):
-
-    def test_constructors_not_callable(self):
-        kt = type({}.viewkeys())
-        self.assertRaises(TypeError, kt, {})
-        self.assertRaises(TypeError, kt)
-        it = type({}.viewitems())
-        self.assertRaises(TypeError, it, {})
-        self.assertRaises(TypeError, it)
-        vt = type({}.viewvalues())
-        self.assertRaises(TypeError, vt, {})
-        self.assertRaises(TypeError, vt)
-
-    def test_dict_keys(self):
-        d = {1: 10, "a": "ABC"}
-        keys = d.viewkeys()
-        self.assertEqual(len(keys), 2)
-        self.assertEqual(set(keys), set([1, "a"]))
-        self.assertEqual(keys, set([1, "a"]))
-        self.assertNotEqual(keys, set([1, "a", "b"]))
-        self.assertNotEqual(keys, set([1, "b"]))
-        self.assertNotEqual(keys, set([1]))
-        self.assertNotEqual(keys, 42)
-        self.assertIn(1, keys)
-        self.assertIn("a", keys)
-        self.assertNotIn(10, keys)
-        self.assertNotIn("Z", keys)
-        self.assertEqual(d.viewkeys(), d.viewkeys())
-        e = {1: 11, "a": "def"}
-        self.assertEqual(d.viewkeys(), e.viewkeys())
-        del e["a"]
-        self.assertNotEqual(d.viewkeys(), e.viewkeys())
-
-    def test_dict_items(self):
-        d = {1: 10, "a": "ABC"}
-        items = d.viewitems()
-        self.assertEqual(len(items), 2)
-        self.assertEqual(set(items), set([(1, 10), ("a", "ABC")]))
-        self.assertEqual(items, set([(1, 10), ("a", "ABC")]))
-        self.assertNotEqual(items, set([(1, 10), ("a", "ABC"), "junk"]))
-        self.assertNotEqual(items, set([(1, 10), ("a", "def")]))
-        self.assertNotEqual(items, set([(1, 10)]))
-        self.assertNotEqual(items, 42)
-        self.assertIn((1, 10), items)
-        self.assertIn(("a", "ABC"), items)
-        self.assertNotIn((1, 11), items)
-        self.assertNotIn(1, items)
-        self.assertNotIn((), items)
-        self.assertNotIn((1,), items)
-        self.assertNotIn((1, 2, 3), items)
-        self.assertEqual(d.viewitems(), d.viewitems())
-        e = d.copy()
-        self.assertEqual(d.viewitems(), e.viewitems())
-        e["a"] = "def"
-        self.assertNotEqual(d.viewitems(), e.viewitems())
-
-    def test_dict_mixed_keys_items(self):
-        d = {(1, 1): 11, (2, 2): 22}
-        e = {1: 1, 2: 2}
-        self.assertEqual(d.viewkeys(), e.viewitems())
-        self.assertNotEqual(d.viewitems(), e.viewkeys())
-
-    def test_dict_values(self):
-        d = {1: 10, "a": "ABC"}
-        values = d.viewvalues()
-        self.assertEqual(set(values), set([10, "ABC"]))
-        self.assertEqual(len(values), 2)
-
-    def test_dict_repr(self):
-        d = {1: 10, "a": "ABC"}
-        self.assertIsInstance(repr(d), str)
-        r = repr(d.viewitems())
-        self.assertIsInstance(r, str)
-        self.assertTrue(r == "dict_items([('a', 'ABC'), (1, 10)])" or
-                        r == "dict_items([(1, 10), ('a', 'ABC')])")
-        r = repr(d.viewkeys())
-        self.assertIsInstance(r, str)
-        self.assertTrue(r == "dict_keys(['a', 1])" or
-                        r == "dict_keys([1, 'a'])")
-        r = repr(d.viewvalues())
-        self.assertIsInstance(r, str)
-        self.assertTrue(r == "dict_values(['ABC', 10])" or
-                        r == "dict_values([10, 'ABC'])")
-
-    def test_keys_set_operations(self):
-        d1 = {'a': 1, 'b': 2}
-        d2 = {'b': 3, 'c': 2}
-        d3 = {'d': 4, 'e': 5}
-        self.assertEqual(d1.viewkeys() & d1.viewkeys(), {'a', 'b'})
-        self.assertEqual(d1.viewkeys() & d2.viewkeys(), {'b'})
-        self.assertEqual(d1.viewkeys() & d3.viewkeys(), set())
-        self.assertEqual(d1.viewkeys() & set(d1.viewkeys()), {'a', 'b'})
-        self.assertEqual(d1.viewkeys() & set(d2.viewkeys()), {'b'})
-        self.assertEqual(d1.viewkeys() & set(d3.viewkeys()), set())
-
-        self.assertEqual(d1.viewkeys() | d1.viewkeys(), {'a', 'b'})
-        self.assertEqual(d1.viewkeys() | d2.viewkeys(), {'a', 'b', 'c'})
-        self.assertEqual(d1.viewkeys() | d3.viewkeys(), {'a', 'b', 'd', 'e'})
-        self.assertEqual(d1.viewkeys() | set(d1.viewkeys()), {'a', 'b'})
-        self.assertEqual(d1.viewkeys() | set(d2.viewkeys()), {'a', 'b', 'c'})
-        self.assertEqual(d1.viewkeys() | set(d3.viewkeys()),
-                         {'a', 'b', 'd', 'e'})
-
-        self.assertEqual(d1.viewkeys() ^ d1.viewkeys(), set())
-        self.assertEqual(d1.viewkeys() ^ d2.viewkeys(), {'a', 'c'})
-        self.assertEqual(d1.viewkeys() ^ d3.viewkeys(), {'a', 'b', 'd', 'e'})
-        self.assertEqual(d1.viewkeys() ^ set(d1.viewkeys()), set())
-        self.assertEqual(d1.viewkeys() ^ set(d2.viewkeys()), {'a', 'c'})
-        self.assertEqual(d1.viewkeys() ^ set(d3.viewkeys()),
-                         {'a', 'b', 'd', 'e'})
-
-    def test_items_set_operations(self):
-        d1 = {'a': 1, 'b': 2}
-        d2 = {'a': 2, 'b': 2}
-        d3 = {'d': 4, 'e': 5}
-        self.assertEqual(
-            d1.viewitems() & d1.viewitems(), {('a', 1), ('b', 2)})
-        self.assertEqual(d1.viewitems() & d2.viewitems(), {('b', 2)})
-        self.assertEqual(d1.viewitems() & d3.viewitems(), set())
-        self.assertEqual(d1.viewitems() & set(d1.viewitems()),
-                         {('a', 1), ('b', 2)})
-        self.assertEqual(d1.viewitems() & set(d2.viewitems()), {('b', 2)})
-        self.assertEqual(d1.viewitems() & set(d3.viewitems()), set())
-
-        self.assertEqual(d1.viewitems() | d1.viewitems(),
-                         {('a', 1), ('b', 2)})
-        self.assertEqual(d1.viewitems() | d2.viewitems(),
-                         {('a', 1), ('a', 2), ('b', 2)})
-        self.assertEqual(d1.viewitems() | d3.viewitems(),
-                         {('a', 1), ('b', 2), ('d', 4), ('e', 5)})
-        self.assertEqual(d1.viewitems() | set(d1.viewitems()),
-                         {('a', 1), ('b', 2)})
-        self.assertEqual(d1.viewitems() | set(d2.viewitems()),
-                         {('a', 1), ('a', 2), ('b', 2)})
-        self.assertEqual(d1.viewitems() | set(d3.viewitems()),
-                         {('a', 1), ('b', 2), ('d', 4), ('e', 5)})
-
-        self.assertEqual(d1.viewitems() ^ d1.viewitems(), set())
-        self.assertEqual(d1.viewitems() ^ d2.viewitems(),
-                         {('a', 1), ('a', 2)})
-        self.assertEqual(d1.viewitems() ^ d3.viewitems(),
-                         {('a', 1), ('b', 2), ('d', 4), ('e', 5)})
-
-
-
-
-def test_main():
-    test_support.run_unittest(DictSetTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_difflib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_difflib.py
deleted file mode 100644
index 2197505..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_difflib.py
+++ /dev/null
@@ -1,272 +0,0 @@
-import difflib
-from test.test_support import run_unittest, findfile
-import unittest
-import doctest
-import sys
-
-
-class TestWithAscii(unittest.TestCase):
-    def test_one_insert(self):
-        sm = difflib.SequenceMatcher(None, 'b' * 100, 'a' + 'b' * 100)
-        self.assertAlmostEqual(sm.ratio(), 0.995, places=3)
-        self.assertEqual(list(sm.get_opcodes()),
-            [   ('insert', 0, 0, 0, 1),
-                ('equal', 0, 100, 1, 101)])
-        sm = difflib.SequenceMatcher(None, 'b' * 100, 'b' * 50 + 'a' + 'b' * 50)
-        self.assertAlmostEqual(sm.ratio(), 0.995, places=3)
-        self.assertEqual(list(sm.get_opcodes()),
-            [   ('equal', 0, 50, 0, 50),
-                ('insert', 50, 50, 50, 51),
-                ('equal', 50, 100, 51, 101)])
-
-    def test_one_delete(self):
-        sm = difflib.SequenceMatcher(None, 'a' * 40 + 'c' + 'b' * 40, 'a' * 40 + 'b' * 40)
-        self.assertAlmostEqual(sm.ratio(), 0.994, places=3)
-        self.assertEqual(list(sm.get_opcodes()),
-            [   ('equal', 0, 40, 0, 40),
-                ('delete', 40, 41, 40, 40),
-                ('equal', 41, 81, 40, 80)])
-
-
-class TestAutojunk(unittest.TestCase):
-    """Tests for the autojunk parameter added in 2.7"""
-    def test_one_insert_homogenous_sequence(self):
-        # By default autojunk=True and the heuristic kicks in for a sequence
-        # of length 200+
-        seq1 = 'b' * 200
-        seq2 = 'a' + 'b' * 200
-
-        sm = difflib.SequenceMatcher(None, seq1, seq2)
-        self.assertAlmostEqual(sm.ratio(), 0, places=3)
-
-        # Now turn the heuristic off
-        sm = difflib.SequenceMatcher(None, seq1, seq2, autojunk=False)
-        self.assertAlmostEqual(sm.ratio(), 0.9975, places=3)
-
-
-class TestSFbugs(unittest.TestCase):
-    def test_ratio_for_null_seqn(self):
-        # Check clearing of SF bug 763023
-        s = difflib.SequenceMatcher(None, [], [])
-        self.assertEqual(s.ratio(), 1)
-        self.assertEqual(s.quick_ratio(), 1)
-        self.assertEqual(s.real_quick_ratio(), 1)
-
-    def test_comparing_empty_lists(self):
-        # Check fix for bug #979794
-        group_gen = difflib.SequenceMatcher(None, [], []).get_grouped_opcodes()
-        self.assertRaises(StopIteration, group_gen.next)
-        diff_gen = difflib.unified_diff([], [])
-        self.assertRaises(StopIteration, diff_gen.next)
-
-    def test_added_tab_hint(self):
-        # Check fix for bug #1488943
-        diff = list(difflib.Differ().compare(["\tI am a buggy"],["\t\tI am a bug"]))
-        self.assertEqual("- \tI am a buggy", diff[0])
-        self.assertEqual("?            --\n", diff[1])
-        self.assertEqual("+ \t\tI am a bug", diff[2])
-        self.assertEqual("? +\n", diff[3])
-
-patch914575_from1 = """
-   1. Beautiful is beTTer than ugly.
-   2. Explicit is better than implicit.
-   3. Simple is better than complex.
-   4. Complex is better than complicated.
-"""
-
-patch914575_to1 = """
-   1. Beautiful is better than ugly.
-   3.   Simple is better than complex.
-   4. Complicated is better than complex.
-   5. Flat is better than nested.
-"""
-
-patch914575_from2 = """
-\t\tLine 1: preceeded by from:[tt] to:[ssss]
-  \t\tLine 2: preceeded by from:[sstt] to:[sssst]
-  \t \tLine 3: preceeded by from:[sstst] to:[ssssss]
-Line 4:  \thas from:[sst] to:[sss] after :
-Line 5: has from:[t] to:[ss] at end\t
-"""
-
-patch914575_to2 = """
-    Line 1: preceeded by from:[tt] to:[ssss]
-    \tLine 2: preceeded by from:[sstt] to:[sssst]
-      Line 3: preceeded by from:[sstst] to:[ssssss]
-Line 4:   has from:[sst] to:[sss] after :
-Line 5: has from:[t] to:[ss] at end
-"""
-
-patch914575_from3 = """line 0
-1234567890123456789012345689012345
-line 1
-line 2
-line 3
-line 4   changed
-line 5   changed
-line 6   changed
-line 7
-line 8  subtracted
-line 9
-1234567890123456789012345689012345
-short line
-just fits in!!
-just fits in two lines yup!!
-the end"""
-
-patch914575_to3 = """line 0
-1234567890123456789012345689012345
-line 1
-line 2    added
-line 3
-line 4   chanGEd
-line 5a  chanGed
-line 6a  changEd
-line 7
-line 8
-line 9
-1234567890
-another long line that needs to be wrapped
-just fitS in!!
-just fits in two lineS yup!!
-the end"""
-
-class TestSFpatches(unittest.TestCase):
-
-    def test_html_diff(self):
-        # Check SF patch 914575 for generating HTML differences
-        f1a = ((patch914575_from1 + '123\n'*10)*3)
-        t1a = (patch914575_to1 + '123\n'*10)*3
-        f1b = '456\n'*10 + f1a
-        t1b = '456\n'*10 + t1a
-        f1a = f1a.splitlines()
-        t1a = t1a.splitlines()
-        f1b = f1b.splitlines()
-        t1b = t1b.splitlines()
-        f2 = patch914575_from2.splitlines()
-        t2 = patch914575_to2.splitlines()
-        f3 = patch914575_from3
-        t3 = patch914575_to3
-        i = difflib.HtmlDiff()
-        j = difflib.HtmlDiff(tabsize=2)
-        k = difflib.HtmlDiff(wrapcolumn=14)
-
-        full = i.make_file(f1a,t1a,'from','to',context=False,numlines=5)
-        tables = '\n'.join(
-            [
-             '<h2>Context (first diff within numlines=5(default))</h2>',
-             i.make_table(f1a,t1a,'from','to',context=True),
-             '<h2>Context (first diff after numlines=5(default))</h2>',
-             i.make_table(f1b,t1b,'from','to',context=True),
-             '<h2>Context (numlines=6)</h2>',
-             i.make_table(f1a,t1a,'from','to',context=True,numlines=6),
-             '<h2>Context (numlines=0)</h2>',
-             i.make_table(f1a,t1a,'from','to',context=True,numlines=0),
-             '<h2>Same Context</h2>',
-             i.make_table(f1a,f1a,'from','to',context=True),
-             '<h2>Same Full</h2>',
-             i.make_table(f1a,f1a,'from','to',context=False),
-             '<h2>Empty Context</h2>',
-             i.make_table([],[],'from','to',context=True),
-             '<h2>Empty Full</h2>',
-             i.make_table([],[],'from','to',context=False),
-             '<h2>tabsize=2</h2>',
-             j.make_table(f2,t2),
-             '<h2>tabsize=default</h2>',
-             i.make_table(f2,t2),
-             '<h2>Context (wrapcolumn=14,numlines=0)</h2>',
-             k.make_table(f3.splitlines(),t3.splitlines(),context=True,numlines=0),
-             '<h2>wrapcolumn=14,splitlines()</h2>',
-             k.make_table(f3.splitlines(),t3.splitlines()),
-             '<h2>wrapcolumn=14,splitlines(True)</h2>',
-             k.make_table(f3.splitlines(True),t3.splitlines(True)),
-             ])
-        actual = full.replace('</body>','\n%s\n</body>' % tables)
-
-        # temporarily uncomment next two lines to baseline this test
-        #with open('test_difflib_expect.html','w') as fp:
-        #    fp.write(actual)
-
-        with open(findfile('test_difflib_expect.html')) as fp:
-            self.assertEqual(actual, fp.read())
-
-    def test_recursion_limit(self):
-        # Check if the problem described in patch #1413711 exists.
-        limit = sys.getrecursionlimit()
-        old = [(i%2 and "K:%d" or "V:A:%d") % i for i in range(limit*2)]
-        new = [(i%2 and "K:%d" or "V:B:%d") % i for i in range(limit*2)]
-        difflib.SequenceMatcher(None, old, new).get_opcodes()
-
-
-class TestOutputFormat(unittest.TestCase):
-    def test_tab_delimiter(self):
-        args = ['one', 'two', 'Original', 'Current',
-            '2005-01-26 23:30:50', '2010-04-02 10:20:52']
-        ud = difflib.unified_diff(*args, lineterm='')
-        self.assertEqual(list(ud)[0:2], [
-                           "--- Original\t2005-01-26 23:30:50",
-                           "+++ Current\t2010-04-02 10:20:52"])
-        cd = difflib.context_diff(*args, lineterm='')
-        self.assertEqual(list(cd)[0:2], [
-                           "*** Original\t2005-01-26 23:30:50",
-                           "--- Current\t2010-04-02 10:20:52"])
-
-    def test_no_trailing_tab_on_empty_filedate(self):
-        args = ['one', 'two', 'Original', 'Current']
-        ud = difflib.unified_diff(*args, lineterm='')
-        self.assertEqual(list(ud)[0:2], ["--- Original", "+++ Current"])
-
-        cd = difflib.context_diff(*args, lineterm='')
-        self.assertEqual(list(cd)[0:2], ["*** Original", "--- Current"])
-
-    def test_range_format_unified(self):
-        # Per the diff spec at http://www.unix.org/single_unix_specification/
-        spec = '''\
-           Each <range> field shall be of the form:
-             %1d", <beginning line number>  if the range contains exactly one line,
-           and:
-            "%1d,%1d", <beginning line number>, <number of lines> otherwise.
-           If a range is empty, its beginning line number shall be the number of
-           the line just before the range, or 0 if the empty range starts the file.
-        '''
-        fmt = difflib._format_range_unified
-        self.assertEqual(fmt(3,3), '3,0')
-        self.assertEqual(fmt(3,4), '4')
-        self.assertEqual(fmt(3,5), '4,2')
-        self.assertEqual(fmt(3,6), '4,3')
-        self.assertEqual(fmt(0,0), '0,0')
-
-    def test_range_format_context(self):
-        # Per the diff spec at http://www.unix.org/single_unix_specification/
-        spec = '''\
-           The range of lines in file1 shall be written in the following format
-           if the range contains two or more lines:
-               "*** %d,%d ****\n", <beginning line number>, <ending line number>
-           and the following format otherwise:
-               "*** %d ****\n", <ending line number>
-           The ending line number of an empty range shall be the number of the preceding line,
-           or 0 if the range is at the start of the file.
-
-           Next, the range of lines in file2 shall be written in the following format
-           if the range contains two or more lines:
-               "--- %d,%d ----\n", <beginning line number>, <ending line number>
-           and the following format otherwise:
-               "--- %d ----\n", <ending line number>
-        '''
-        fmt = difflib._format_range_context
-        self.assertEqual(fmt(3,3), '3')
-        self.assertEqual(fmt(3,4), '4')
-        self.assertEqual(fmt(3,5), '4,5')
-        self.assertEqual(fmt(3,6), '4,6')
-        self.assertEqual(fmt(0,0), '0')
-
-
-def test_main():
-    difflib.HtmlDiff._default_prefix = 0
-    Doctests = doctest.DocTestSuite(difflib)
-    run_unittest(
-        TestWithAscii, TestAutojunk, TestSFpatches, TestSFbugs,
-        TestOutputFormat, Doctests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_difflib_expect.html b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_difflib_expect.html
deleted file mode 100644
index 98b5260..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_difflib_expect.html
+++ /dev/null
@@ -1,526 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html>
-
-<head>
-    <meta http-equiv="Content-Type"
-          content="text/html; charset=ISO-8859-1" />
-    <title></title>
-    <style type="text/css">
-        table.diff {font-family:Courier; border:medium;}
-        .diff_header {background-color:#e0e0e0}
-        td.diff_header {text-align:right}
-        .diff_next {background-color:#c0c0c0}
-        .diff_add {background-color:#aaffaa}
-        .diff_chg {background-color:#ffff77}
-        .diff_sub {background-color:#ffaaaa}
-    </style>
-</head>
-
-<body>
-    
-    <table class="diff" id="difflib_chg_to0__top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <thead><tr><th class="diff_next"><br /></th><th colspan="2" class="diff_header">from</th><th class="diff_next"><br /></th><th colspan="2" class="diff_header">to</th></tr></thead>
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to0__0"><a href="#difflib_chg_to0__0">f</a></td><td class="diff_header" id="from0_1">1</td><td nowrap="nowrap"></td><td class="diff_next"><a href="#difflib_chg_to0__0">f</a></td><td class="diff_header" id="to0_1">1</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to0__1">n</a></td><td class="diff_header" id="from0_2">2</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to0__1">n</a></td><td class="diff_header" id="to0_2">2</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_3">3</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_4">4</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to0_3">3</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_5">5</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to0_4">4</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to0_5">5</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_6">6</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_6">6</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_7">7</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_7">7</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_8">8</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_8">8</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_9">9</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_9">9</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_10">10</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_10">10</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_11">11</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_11">11</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next" id="difflib_chg_to0__1"></td><td class="diff_header" id="from0_12">12</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_12">12</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_13">13</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_13">13</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_14">14</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_14">14</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_15">15</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_15">15</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_16">16</td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to0_16">16</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to0__2">n</a></td><td class="diff_header" id="from0_17">17</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to0__2">n</a></td><td class="diff_header" id="to0_17">17</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_18">18</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_19">19</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to0_18">18</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_20">20</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to0_19">19</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to0_20">20</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_21">21</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_21">21</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_22">22</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_22">22</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_23">23</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_23">23</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_24">24</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_24">24</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_25">25</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_25">25</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_26">26</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_26">26</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next" id="difflib_chg_to0__2"></td><td class="diff_header" id="from0_27">27</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_27">27</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_28">28</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_28">28</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_29">29</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_29">29</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_30">30</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_30">30</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_31">31</td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to0_31">31</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to0__top">t</a></td><td class="diff_header" id="from0_32">32</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to0__top">t</a></td><td class="diff_header" id="to0_32">32</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_33">33</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_34">34</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to0_33">33</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_35">35</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to0_34">34</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to0_35">35</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_36">36</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_36">36</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_37">37</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_37">37</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_38">38</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_38">38</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_39">39</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_39">39</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_40">40</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_40">40</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_41">41</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_41">41</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_42">42</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_42">42</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_43">43</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_43">43</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_44">44</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_44">44</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from0_45">45</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to0_45">45</td><td nowrap="nowrap">123</td></tr>
-        </tbody>
-    </table>
-    <table class="diff" summary="Legends">
-        <tr> <th colspan="2"> Legends </th> </tr>
-        <tr> <td> <table border="" summary="Colors">
-                      <tr><th> Colors </th> </tr>
-                      <tr><td class="diff_add">&nbsp;Added&nbsp;</td></tr>
-                      <tr><td class="diff_chg">Changed</td> </tr>
-                      <tr><td class="diff_sub">Deleted</td> </tr>
-                  </table></td>
-             <td> <table border="" summary="Links">
-                      <tr><th colspan="2"> Links </th> </tr>
-                      <tr><td>(f)irst change</td> </tr>
-                      <tr><td>(n)ext change</td> </tr>
-                      <tr><td>(t)op</td> </tr>
-                  </table></td> </tr>
-    </table>
-
-<h2>Context (first diff within numlines=5(default))</h2>
-
-    <table class="diff" id="difflib_chg_to1__top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <thead><tr><th class="diff_next"><br /></th><th colspan="2" class="diff_header">from</th><th class="diff_next"><br /></th><th colspan="2" class="diff_header">to</th></tr></thead>
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to1__0"><a href="#difflib_chg_to1__0">f</a></td><td class="diff_header" id="from1_1">1</td><td nowrap="nowrap"></td><td class="diff_next"><a href="#difflib_chg_to1__0">f</a></td><td class="diff_header" id="to1_1">1</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to1__1">n</a></td><td class="diff_header" id="from1_2">2</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to1__1">n</a></td><td class="diff_header" id="to1_2">2</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_3">3</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_4">4</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to1_3">3</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_5">5</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to1_4">4</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to1_5">5</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_6">6</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_6">6</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_7">7</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_7">7</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_8">8</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_8">8</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_9">9</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_9">9</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_10">10</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_10">10</td><td nowrap="nowrap">123</td></tr>
-        </tbody>        
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to1__1"></td><td class="diff_header" id="from1_12">12</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_12">12</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_13">13</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_13">13</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_14">14</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_14">14</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_15">15</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_15">15</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_16">16</td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to1_16">16</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to1__2">n</a></td><td class="diff_header" id="from1_17">17</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to1__2">n</a></td><td class="diff_header" id="to1_17">17</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_18">18</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_19">19</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to1_18">18</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_20">20</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to1_19">19</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to1_20">20</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_21">21</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_21">21</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_22">22</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_22">22</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_23">23</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_23">23</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_24">24</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_24">24</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_25">25</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_25">25</td><td nowrap="nowrap">123</td></tr>
-        </tbody>        
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to1__2"></td><td class="diff_header" id="from1_27">27</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_27">27</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_28">28</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_28">28</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_29">29</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_29">29</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_30">30</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_30">30</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_31">31</td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to1_31">31</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to1__top">t</a></td><td class="diff_header" id="from1_32">32</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to1__top">t</a></td><td class="diff_header" id="to1_32">32</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_33">33</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_34">34</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to1_33">33</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_35">35</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to1_34">34</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to1_35">35</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_36">36</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_36">36</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_37">37</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_37">37</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_38">38</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_38">38</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_39">39</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_39">39</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from1_40">40</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to1_40">40</td><td nowrap="nowrap">123</td></tr>
-        </tbody>
-    </table>
-<h2>Context (first diff after numlines=5(default))</h2>
-
-    <table class="diff" id="difflib_chg_to2__top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <thead><tr><th class="diff_next"><br /></th><th colspan="2" class="diff_header">from</th><th class="diff_next"><br /></th><th colspan="2" class="diff_header">to</th></tr></thead>
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to2__0"></td><td class="diff_header" id="from2_7">7</td><td nowrap="nowrap">456</td><td class="diff_next"></td><td class="diff_header" id="to2_7">7</td><td nowrap="nowrap">456</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_8">8</td><td nowrap="nowrap">456</td><td class="diff_next"></td><td class="diff_header" id="to2_8">8</td><td nowrap="nowrap">456</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_9">9</td><td nowrap="nowrap">456</td><td class="diff_next"></td><td class="diff_header" id="to2_9">9</td><td nowrap="nowrap">456</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_10">10</td><td nowrap="nowrap">456</td><td class="diff_next"></td><td class="diff_header" id="to2_10">10</td><td nowrap="nowrap">456</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_11">11</td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to2_11">11</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to2__1">n</a></td><td class="diff_header" id="from2_12">12</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to2__1">n</a></td><td class="diff_header" id="to2_12">12</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_13">13</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_14">14</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to2_13">13</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_15">15</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to2_14">14</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to2_15">15</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_16">16</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_16">16</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_17">17</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_17">17</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_18">18</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_18">18</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_19">19</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_19">19</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_20">20</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_20">20</td><td nowrap="nowrap">123</td></tr>
-        </tbody>        
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to2__1"></td><td class="diff_header" id="from2_22">22</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_22">22</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_23">23</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_23">23</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_24">24</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_24">24</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_25">25</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_25">25</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_26">26</td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to2_26">26</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to2__2">n</a></td><td class="diff_header" id="from2_27">27</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to2__2">n</a></td><td class="diff_header" id="to2_27">27</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_28">28</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_29">29</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to2_28">28</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_30">30</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to2_29">29</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to2_30">30</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_31">31</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_31">31</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_32">32</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_32">32</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_33">33</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_33">33</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_34">34</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_34">34</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_35">35</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_35">35</td><td nowrap="nowrap">123</td></tr>
-        </tbody>        
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to2__2"></td><td class="diff_header" id="from2_37">37</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_37">37</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_38">38</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_38">38</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_39">39</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_39">39</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_40">40</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_40">40</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_41">41</td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to2_41">41</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to2__top">t</a></td><td class="diff_header" id="from2_42">42</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to2__top">t</a></td><td class="diff_header" id="to2_42">42</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_43">43</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_44">44</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to2_43">43</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_45">45</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to2_44">44</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to2_45">45</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_46">46</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_46">46</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_47">47</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_47">47</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_48">48</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_48">48</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_49">49</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_49">49</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from2_50">50</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to2_50">50</td><td nowrap="nowrap">123</td></tr>
-        </tbody>
-    </table>
-<h2>Context (numlines=6)</h2>
-
-    <table class="diff" id="difflib_chg_to3__top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <thead><tr><th class="diff_next"><br /></th><th colspan="2" class="diff_header">from</th><th class="diff_next"><br /></th><th colspan="2" class="diff_header">to</th></tr></thead>
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to3__0"><a href="#difflib_chg_to3__0">f</a></td><td class="diff_header" id="from3_1">1</td><td nowrap="nowrap"></td><td class="diff_next"><a href="#difflib_chg_to3__0">f</a></td><td class="diff_header" id="to3_1">1</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to3__1">n</a></td><td class="diff_header" id="from3_2">2</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to3__1">n</a></td><td class="diff_header" id="to3_2">2</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_3">3</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_4">4</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to3_3">3</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_5">5</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to3_4">4</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to3_5">5</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_6">6</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_6">6</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_7">7</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_7">7</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_8">8</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_8">8</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_9">9</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_9">9</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_10">10</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_10">10</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next" id="difflib_chg_to3__1"></td><td class="diff_header" id="from3_11">11</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_11">11</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_12">12</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_12">12</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_13">13</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_13">13</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_14">14</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_14">14</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_15">15</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_15">15</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_16">16</td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to3_16">16</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to3__2">n</a></td><td class="diff_header" id="from3_17">17</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to3__2">n</a></td><td class="diff_header" id="to3_17">17</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_18">18</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_19">19</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to3_18">18</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_20">20</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to3_19">19</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to3_20">20</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_21">21</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_21">21</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_22">22</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_22">22</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_23">23</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_23">23</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_24">24</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_24">24</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_25">25</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_25">25</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next" id="difflib_chg_to3__2"></td><td class="diff_header" id="from3_26">26</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_26">26</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_27">27</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_27">27</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_28">28</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_28">28</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_29">29</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_29">29</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_30">30</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_30">30</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_31">31</td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to3_31">31</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to3__top">t</a></td><td class="diff_header" id="from3_32">32</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to3__top">t</a></td><td class="diff_header" id="to3_32">32</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_33">33</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_34">34</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to3_33">33</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_35">35</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to3_34">34</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to3_35">35</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_36">36</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_36">36</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_37">37</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_37">37</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_38">38</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_38">38</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_39">39</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_39">39</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_40">40</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_40">40</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from3_41">41</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to3_41">41</td><td nowrap="nowrap">123</td></tr>
-        </tbody>
-    </table>
-<h2>Context (numlines=0)</h2>
-
-    <table class="diff" id="difflib_chg_to4__top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <thead><tr><th class="diff_next"><br /></th><th colspan="2" class="diff_header">from</th><th class="diff_next"><br /></th><th colspan="2" class="diff_header">to</th></tr></thead>
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to4__0"><a href="#difflib_chg_to4__1">n</a></td><td class="diff_header" id="from4_2">2</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to4__1">n</a></td><td class="diff_header" id="to4_2">2</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from4_3">3</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from4_4">4</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to4_3">3</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from4_5">5</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to4_4">4</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to4_5">5</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-        </tbody>        
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to4__1"><a href="#difflib_chg_to4__2">n</a></td><td class="diff_header" id="from4_17">17</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to4__2">n</a></td><td class="diff_header" id="to4_17">17</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from4_18">18</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from4_19">19</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to4_18">18</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from4_20">20</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to4_19">19</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to4_20">20</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-        </tbody>        
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to4__2"><a href="#difflib_chg_to4__top">t</a></td><td class="diff_header" id="from4_32">32</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">TT</span>er&nbsp;than&nbsp;ugly.</td><td class="diff_next"><a href="#difflib_chg_to4__top">t</a></td><td class="diff_header" id="to4_32">32</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;be<span class="diff_chg">tt</span>er&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from4_33">33</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from4_34">34</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to4_33">33</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.<span class="diff_add">&nbsp;&nbsp;</span>&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from4_35">35</td><td nowrap="nowrap"><span class="diff_sub">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</span></td><td class="diff_next"></td><td class="diff_header" id="to4_34">34</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;4.&nbsp;Complicated&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to4_35">35</td><td nowrap="nowrap"><span class="diff_add">&nbsp;&nbsp;&nbsp;5.&nbsp;Flat&nbsp;is&nbsp;better&nbsp;than&nbsp;nested.</span></td></tr>
-        </tbody>
-    </table>
-<h2>Same Context</h2>
-
-    <table class="diff" id="difflib_chg_to5__top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <thead><tr><th class="diff_next"><br /></th><th colspan="2" class="diff_header">from</th><th class="diff_next"><br /></th><th colspan="2" class="diff_header">to</th></tr></thead>
-        <tbody>
-            <tr><td class="diff_next"><a href="#difflib_chg_to5__top">t</a></td><td></td><td>&nbsp;No Differences Found&nbsp;</td><td class="diff_next"><a href="#difflib_chg_to5__top">t</a></td><td></td><td>&nbsp;No Differences Found&nbsp;</td></tr>
-        </tbody>
-    </table>
-<h2>Same Full</h2>
-
-    <table class="diff" id="difflib_chg_to6__top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <thead><tr><th class="diff_next"><br /></th><th colspan="2" class="diff_header">from</th><th class="diff_next"><br /></th><th colspan="2" class="diff_header">to</th></tr></thead>
-        <tbody>
-            <tr><td class="diff_next"><a href="#difflib_chg_to6__top">t</a></td><td class="diff_header" id="from6_1">1</td><td nowrap="nowrap"></td><td class="diff_next"><a href="#difflib_chg_to6__top">t</a></td><td class="diff_header" id="to6_1">1</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_2">2</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;beTTer&nbsp;than&nbsp;ugly.</td><td class="diff_next"></td><td class="diff_header" id="to6_2">2</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;beTTer&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_3">3</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</td><td class="diff_next"></td><td class="diff_header" id="to6_3">3</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_4">4</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to6_4">4</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_5">5</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</td><td class="diff_next"></td><td class="diff_header" id="to6_5">5</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_6">6</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_6">6</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_7">7</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_7">7</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_8">8</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_8">8</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_9">9</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_9">9</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_10">10</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_10">10</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_11">11</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_11">11</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_12">12</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_12">12</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_13">13</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_13">13</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_14">14</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_14">14</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_15">15</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_15">15</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_16">16</td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to6_16">16</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_17">17</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;beTTer&nbsp;than&nbsp;ugly.</td><td class="diff_next"></td><td class="diff_header" id="to6_17">17</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;beTTer&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_18">18</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</td><td class="diff_next"></td><td class="diff_header" id="to6_18">18</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_19">19</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to6_19">19</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_20">20</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</td><td class="diff_next"></td><td class="diff_header" id="to6_20">20</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_21">21</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_21">21</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_22">22</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_22">22</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_23">23</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_23">23</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_24">24</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_24">24</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_25">25</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_25">25</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_26">26</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_26">26</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_27">27</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_27">27</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_28">28</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_28">28</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_29">29</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_29">29</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_30">30</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_30">30</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_31">31</td><td nowrap="nowrap"></td><td class="diff_next"></td><td class="diff_header" id="to6_31">31</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_32">32</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;beTTer&nbsp;than&nbsp;ugly.</td><td class="diff_next"></td><td class="diff_header" id="to6_32">32</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;1.&nbsp;Beautiful&nbsp;is&nbsp;beTTer&nbsp;than&nbsp;ugly.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_33">33</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</td><td class="diff_next"></td><td class="diff_header" id="to6_33">33</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;2.&nbsp;Explicit&nbsp;is&nbsp;better&nbsp;than&nbsp;implicit.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_34">34</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td><td class="diff_next"></td><td class="diff_header" id="to6_34">34</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;3.&nbsp;Simple&nbsp;is&nbsp;better&nbsp;than&nbsp;complex.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_35">35</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</td><td class="diff_next"></td><td class="diff_header" id="to6_35">35</td><td nowrap="nowrap">&nbsp;&nbsp;&nbsp;4.&nbsp;Complex&nbsp;is&nbsp;better&nbsp;than&nbsp;complicated.</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_36">36</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_36">36</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_37">37</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_37">37</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_38">38</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_38">38</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_39">39</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_39">39</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_40">40</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_40">40</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_41">41</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_41">41</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_42">42</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_42">42</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_43">43</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_43">43</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_44">44</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_44">44</td><td nowrap="nowrap">123</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from6_45">45</td><td nowrap="nowrap">123</td><td class="diff_next"></td><td class="diff_header" id="to6_45">45</td><td nowrap="nowrap">123</td></tr>
-        </tbody>
-    </table>
-<h2>Empty Context</h2>
-
-    <table class="diff" id="difflib_chg_to7__top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <thead><tr><th class="diff_next"><br /></th><th colspan="2" class="diff_header">from</th><th class="diff_next"><br /></th><th colspan="2" class="diff_header">to</th></tr></thead>
-        <tbody>
-            <tr><td class="diff_next"><a href="#difflib_chg_to7__top">t</a></td><td></td><td>&nbsp;No Differences Found&nbsp;</td><td class="diff_next"><a href="#difflib_chg_to7__top">t</a></td><td></td><td>&nbsp;No Differences Found&nbsp;</td></tr>
-        </tbody>
-    </table>
-<h2>Empty Full</h2>
-
-    <table class="diff" id="difflib_chg_to8__top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <thead><tr><th class="diff_next"><br /></th><th colspan="2" class="diff_header">from</th><th class="diff_next"><br /></th><th colspan="2" class="diff_header">to</th></tr></thead>
-        <tbody>
-            <tr><td class="diff_next"><a href="#difflib_chg_to8__top">t</a></td><td></td><td>&nbsp;Empty File&nbsp;</td><td class="diff_next"><a href="#difflib_chg_to8__top">t</a></td><td></td><td>&nbsp;Empty File&nbsp;</td></tr>
-        </tbody>
-    </table>
-<h2>tabsize=2</h2>
-
-    <table class="diff" id="difflib_chg_to9__top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to9__0"><a href="#difflib_chg_to9__0">f</a></td><td class="diff_header" id="from9_1">1</td><td nowrap="nowrap"></td><td class="diff_next"><a href="#difflib_chg_to9__0">f</a></td><td class="diff_header" id="to9_1">1</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to9__top">t</a></td><td class="diff_header" id="from9_2">2</td><td nowrap="nowrap"><span class="diff_chg">&nbsp;&nbsp;&nbsp;&nbsp;</span>Line&nbsp;1:&nbsp;preceeded&nbsp;by&nbsp;from:[tt]&nbsp;to:[ssss]</td><td class="diff_next"><a href="#difflib_chg_to9__top">t</a></td><td class="diff_header" id="to9_2">2</td><td nowrap="nowrap"><span class="diff_chg">&nbsp;&nbsp;&nbsp;&nbsp;</span>Line&nbsp;1:&nbsp;preceeded&nbsp;by&nbsp;from:[tt]&nbsp;to:[ssss]</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from9_3">3</td><td nowrap="nowrap">&nbsp;&nbsp;<span class="diff_chg">&nbsp;&nbsp;</span>&nbsp;&nbsp;Line&nbsp;2:&nbsp;preceeded&nbsp;by&nbsp;from:[sstt]&nbsp;to:[sssst]</td><td class="diff_next"></td><td class="diff_header" id="to9_3">3</td><td nowrap="nowrap">&nbsp;&nbsp;<span class="diff_chg">&nbsp;&nbsp;</span>&nbsp;&nbsp;Line&nbsp;2:&nbsp;preceeded&nbsp;by&nbsp;from:[sstt]&nbsp;to:[sssst]</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from9_4">4</td><td nowrap="nowrap">&nbsp;&nbsp;<span class="diff_chg">&nbsp;&nbsp;&nbsp;&nbsp;</span>Line&nbsp;3:&nbsp;preceeded&nbsp;by&nbsp;from:[sstst]&nbsp;to:[ssssss]</td><td class="diff_next"></td><td class="diff_header" id="to9_4">4</td><td nowrap="nowrap">&nbsp;&nbsp;<span class="diff_chg">&nbsp;&nbsp;&nbsp;&nbsp;</span>Line&nbsp;3:&nbsp;preceeded&nbsp;by&nbsp;from:[sstst]&nbsp;to:[ssssss]</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from9_5">5</td><td nowrap="nowrap">Line&nbsp;4:&nbsp;&nbsp;<span class="diff_chg">&nbsp;</span>has&nbsp;from:[sst]&nbsp;to:[sss]&nbsp;after&nbsp;:</td><td class="diff_next"></td><td class="diff_header" id="to9_5">5</td><td nowrap="nowrap">Line&nbsp;4:&nbsp;&nbsp;<span class="diff_chg">&nbsp;</span>has&nbsp;from:[sst]&nbsp;to:[sss]&nbsp;after&nbsp;:</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from9_6">6</td><td nowrap="nowrap">Line&nbsp;5:&nbsp;has&nbsp;from:[t]&nbsp;to:[ss]&nbsp;at&nbsp;end<span class="diff_sub">&nbsp;</span></td><td class="diff_next"></td><td class="diff_header" id="to9_6">6</td><td nowrap="nowrap">Line&nbsp;5:&nbsp;has&nbsp;from:[t]&nbsp;to:[ss]&nbsp;at&nbsp;end</td></tr>
-        </tbody>
-    </table>
-<h2>tabsize=default</h2>
-
-    <table class="diff" id="difflib_chg_to10__top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to10__0"><a href="#difflib_chg_to10__0">f</a></td><td class="diff_header" id="from10_1">1</td><td nowrap="nowrap"></td><td class="diff_next"><a href="#difflib_chg_to10__0">f</a></td><td class="diff_header" id="to10_1">1</td><td nowrap="nowrap"></td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to10__top">t</a></td><td class="diff_header" id="from10_2">2</td><td nowrap="nowrap"><span class="diff_chg">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Line&nbsp;1:&nbsp;preceeded&nbsp;by&nbsp;from:[tt]&nbsp;to:[ssss]</td><td class="diff_next"><a href="#difflib_chg_to10__top">t</a></td><td class="diff_header" id="to10_2">2</td><td nowrap="nowrap"><span class="diff_chg">&nbsp;&nbsp;&nbsp;&nbsp;</span>Line&nbsp;1:&nbsp;preceeded&nbsp;by&nbsp;from:[tt]&nbsp;to:[ssss]</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from10_3">3</td><td nowrap="nowrap">&nbsp;&nbsp;<span class="diff_chg">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;Line&nbsp;2:&nbsp;preceeded&nbsp;by&nbsp;from:[sstt]&nbsp;to:[sssst]</td><td class="diff_next"></td><td class="diff_header" id="to10_3">3</td><td nowrap="nowrap">&nbsp;&nbsp;<span class="diff_chg">&nbsp;&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;Line&nbsp;2:&nbsp;preceeded&nbsp;by&nbsp;from:[sstt]&nbsp;to:[sssst]</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from10_4">4</td><td nowrap="nowrap">&nbsp;&nbsp;<span class="diff_chg">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Line&nbsp;3:&nbsp;preceeded&nbsp;by&nbsp;from:[sstst]&nbsp;to:[ssssss]</td><td class="diff_next"></td><td class="diff_header" id="to10_4">4</td><td nowrap="nowrap">&nbsp;&nbsp;<span class="diff_chg">&nbsp;&nbsp;&nbsp;&nbsp;</span>Line&nbsp;3:&nbsp;preceeded&nbsp;by&nbsp;from:[sstst]&nbsp;to:[ssssss]</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from10_5">5</td><td nowrap="nowrap">Line&nbsp;4:&nbsp;&nbsp;<span class="diff_chg">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>has&nbsp;from:[sst]&nbsp;to:[sss]&nbsp;after&nbsp;:</td><td class="diff_next"></td><td class="diff_header" id="to10_5">5</td><td nowrap="nowrap">Line&nbsp;4:&nbsp;&nbsp;<span class="diff_chg">&nbsp;</span>has&nbsp;from:[sst]&nbsp;to:[sss]&nbsp;after&nbsp;:</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from10_6">6</td><td nowrap="nowrap">Line&nbsp;5:&nbsp;has&nbsp;from:[t]&nbsp;to:[ss]&nbsp;at&nbsp;end<span class="diff_sub">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td><td class="diff_next"></td><td class="diff_header" id="to10_6">6</td><td nowrap="nowrap">Line&nbsp;5:&nbsp;has&nbsp;from:[t]&nbsp;to:[ss]&nbsp;at&nbsp;end</td></tr>
-        </tbody>
-    </table>
-<h2>Context (wrapcolumn=14,numlines=0)</h2>
-
-    <table class="diff" id="difflib_chg_to11__top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to11__0"><a href="#difflib_chg_to11__1">n</a></td><td class="diff_header" id="from11_4">4</td><td nowrap="nowrap"><span class="diff_sub">line&nbsp;2</span></td><td class="diff_next"><a href="#difflib_chg_to11__1">n</a></td><td class="diff_header" id="to11_4">4</td><td nowrap="nowrap"><span class="diff_add">line&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;adde</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_add">d</span></td></tr>
-        </tbody>        
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to11__1"><a href="#difflib_chg_to11__2">n</a></td><td class="diff_header" id="from11_6">6</td><td nowrap="nowrap">line&nbsp;4&nbsp;&nbsp;&nbsp;chan<span class="diff_chg">g</span></td><td class="diff_next"><a href="#difflib_chg_to11__2">n</a></td><td class="diff_header" id="to11_6">6</td><td nowrap="nowrap">line&nbsp;4&nbsp;&nbsp;&nbsp;chan<span class="diff_chg">G</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg">e</span>d</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg">E</span>d</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from11_7">7</td><td nowrap="nowrap">line&nbsp;5<span class="diff_chg">&nbsp;</span>&nbsp;&nbsp;chan<span class="diff_chg">g</span></td><td class="diff_next"></td><td class="diff_header" id="to11_7">7</td><td nowrap="nowrap">line&nbsp;5<span class="diff_chg">a</span>&nbsp;&nbsp;chan<span class="diff_chg">G</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg"></span>ed</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg"></span>ed</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from11_8">8</td><td nowrap="nowrap">line&nbsp;6<span class="diff_chg">&nbsp;</span>&nbsp;&nbsp;chang</td><td class="diff_next"></td><td class="diff_header" id="to11_8">8</td><td nowrap="nowrap">line&nbsp;6<span class="diff_chg">a</span>&nbsp;&nbsp;chang</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg">e</span>d</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg">E</span>d</td></tr>
-        </tbody>        
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to11__2"><a href="#difflib_chg_to11__3">n</a></td><td class="diff_header" id="from11_10">10</td><td nowrap="nowrap"><span class="diff_sub">line&nbsp;8&nbsp;&nbsp;subtra</span></td><td class="diff_next"><a href="#difflib_chg_to11__3">n</a></td><td class="diff_header" id="to11_10">10</td><td nowrap="nowrap"><span class="diff_add">line&nbsp;8</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_sub">cted</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td></tr>
-        </tbody>        
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to11__3"><a href="#difflib_chg_to11__top">t</a></td><td class="diff_header" id="from11_12">12</td><td nowrap="nowrap"><span class="diff_sub">12345678901234</span></td><td class="diff_next"><a href="#difflib_chg_to11__top">t</a></td><td class="diff_header" id="to11_12">12</td><td nowrap="nowrap"><span class="diff_add">1234567890</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_sub">56789012345689</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_sub">012345</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from11_13">13</td><td nowrap="nowrap"><span class="diff_sub">short&nbsp;line</span></td><td class="diff_next"></td><td class="diff_header" id="to11_13">13</td><td nowrap="nowrap"><span class="diff_add">another&nbsp;long&nbsp;l</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_add">ine&nbsp;that&nbsp;needs</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_add">&nbsp;to&nbsp;be&nbsp;wrapped</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from11_14">14</td><td nowrap="nowrap">just&nbsp;fit<span class="diff_chg">s</span>&nbsp;in!!</td><td class="diff_next"></td><td class="diff_header" id="to11_14">14</td><td nowrap="nowrap">just&nbsp;fit<span class="diff_chg">S</span>&nbsp;in!!</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from11_15">15</td><td nowrap="nowrap">just&nbsp;fits&nbsp;in&nbsp;t</td><td class="diff_next"></td><td class="diff_header" id="to11_15">15</td><td nowrap="nowrap">just&nbsp;fits&nbsp;in&nbsp;t</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap">wo&nbsp;line<span class="diff_chg">s</span>&nbsp;yup!!</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap">wo&nbsp;line<span class="diff_chg">S</span>&nbsp;yup!!</td></tr>
-        </tbody>
-    </table>
-<h2>wrapcolumn=14,splitlines()</h2>
-
-    <table class="diff" id="difflib_chg_to12__top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to12__0"><a href="#difflib_chg_to12__0">f</a></td><td class="diff_header" id="from12_1">1</td><td nowrap="nowrap">line&nbsp;0</td><td class="diff_next"><a href="#difflib_chg_to12__0">f</a></td><td class="diff_header" id="to12_1">1</td><td nowrap="nowrap">line&nbsp;0</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from12_2">2</td><td nowrap="nowrap">12345678901234</td><td class="diff_next"></td><td class="diff_header" id="to12_2">2</td><td nowrap="nowrap">12345678901234</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap">56789012345689</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap">56789012345689</td></tr>
-            <tr><td class="diff_next" id="difflib_chg_to12__1"></td><td class="diff_header">></td><td nowrap="nowrap">012345</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap">012345</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from12_3">3</td><td nowrap="nowrap">line&nbsp;1</td><td class="diff_next"></td><td class="diff_header" id="to12_3">3</td><td nowrap="nowrap">line&nbsp;1</td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to12__1">n</a></td><td class="diff_header" id="from12_4">4</td><td nowrap="nowrap"><span class="diff_sub">line&nbsp;2</span></td><td class="diff_next"><a href="#difflib_chg_to12__1">n</a></td><td class="diff_header" id="to12_4">4</td><td nowrap="nowrap"><span class="diff_add">line&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;adde</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_add">d</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from12_5">5</td><td nowrap="nowrap">line&nbsp;3</td><td class="diff_next"></td><td class="diff_header" id="to12_5">5</td><td nowrap="nowrap">line&nbsp;3</td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to12__2">n</a></td><td class="diff_header" id="from12_6">6</td><td nowrap="nowrap">line&nbsp;4&nbsp;&nbsp;&nbsp;chan<span class="diff_chg">g</span></td><td class="diff_next"><a href="#difflib_chg_to12__2">n</a></td><td class="diff_header" id="to12_6">6</td><td nowrap="nowrap">line&nbsp;4&nbsp;&nbsp;&nbsp;chan<span class="diff_chg">G</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg">e</span>d</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg">E</span>d</td></tr>
-            <tr><td class="diff_next" id="difflib_chg_to12__2"></td><td class="diff_header" id="from12_7">7</td><td nowrap="nowrap">line&nbsp;5<span class="diff_chg">&nbsp;</span>&nbsp;&nbsp;chan<span class="diff_chg">g</span></td><td class="diff_next"></td><td class="diff_header" id="to12_7">7</td><td nowrap="nowrap">line&nbsp;5<span class="diff_chg">a</span>&nbsp;&nbsp;chan<span class="diff_chg">G</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg"></span>ed</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg"></span>ed</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from12_8">8</td><td nowrap="nowrap">line&nbsp;6<span class="diff_chg">&nbsp;</span>&nbsp;&nbsp;chang</td><td class="diff_next"></td><td class="diff_header" id="to12_8">8</td><td nowrap="nowrap">line&nbsp;6<span class="diff_chg">a</span>&nbsp;&nbsp;chang</td></tr>
-            <tr><td class="diff_next" id="difflib_chg_to12__3"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg">e</span>d</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg">E</span>d</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from12_9">9</td><td nowrap="nowrap">line&nbsp;7</td><td class="diff_next"></td><td class="diff_header" id="to12_9">9</td><td nowrap="nowrap">line&nbsp;7</td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to12__3">n</a></td><td class="diff_header" id="from12_10">10</td><td nowrap="nowrap"><span class="diff_sub">line&nbsp;8&nbsp;&nbsp;subtra</span></td><td class="diff_next"><a href="#difflib_chg_to12__3">n</a></td><td class="diff_header" id="to12_10">10</td><td nowrap="nowrap"><span class="diff_add">line&nbsp;8</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_sub">cted</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from12_11">11</td><td nowrap="nowrap">line&nbsp;9</td><td class="diff_next"></td><td class="diff_header" id="to12_11">11</td><td nowrap="nowrap">line&nbsp;9</td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to12__top">t</a></td><td class="diff_header" id="from12_12">12</td><td nowrap="nowrap"><span class="diff_sub">12345678901234</span></td><td class="diff_next"><a href="#difflib_chg_to12__top">t</a></td><td class="diff_header" id="to12_12">12</td><td nowrap="nowrap"><span class="diff_add">1234567890</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_sub">56789012345689</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_sub">012345</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from12_13">13</td><td nowrap="nowrap"><span class="diff_sub">short&nbsp;line</span></td><td class="diff_next"></td><td class="diff_header" id="to12_13">13</td><td nowrap="nowrap"><span class="diff_add">another&nbsp;long&nbsp;l</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_add">ine&nbsp;that&nbsp;needs</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_add">&nbsp;to&nbsp;be&nbsp;wrapped</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from12_14">14</td><td nowrap="nowrap">just&nbsp;fit<span class="diff_chg">s</span>&nbsp;in!!</td><td class="diff_next"></td><td class="diff_header" id="to12_14">14</td><td nowrap="nowrap">just&nbsp;fit<span class="diff_chg">S</span>&nbsp;in!!</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from12_15">15</td><td nowrap="nowrap">just&nbsp;fits&nbsp;in&nbsp;t</td><td class="diff_next"></td><td class="diff_header" id="to12_15">15</td><td nowrap="nowrap">just&nbsp;fits&nbsp;in&nbsp;t</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap">wo&nbsp;line<span class="diff_chg">s</span>&nbsp;yup!!</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap">wo&nbsp;line<span class="diff_chg">S</span>&nbsp;yup!!</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from12_16">16</td><td nowrap="nowrap">the&nbsp;end</td><td class="diff_next"></td><td class="diff_header" id="to12_16">16</td><td nowrap="nowrap">the&nbsp;end</td></tr>
-        </tbody>
-    </table>
-<h2>wrapcolumn=14,splitlines(True)</h2>
-
-    <table class="diff" id="difflib_chg_to13__top"
-           cellspacing="0" cellpadding="0" rules="groups" >
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>
-        
-        <tbody>
-            <tr><td class="diff_next" id="difflib_chg_to13__0"><a href="#difflib_chg_to13__0">f</a></td><td class="diff_header" id="from13_1">1</td><td nowrap="nowrap">line&nbsp;0</td><td class="diff_next"><a href="#difflib_chg_to13__0">f</a></td><td class="diff_header" id="to13_1">1</td><td nowrap="nowrap">line&nbsp;0</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from13_2">2</td><td nowrap="nowrap">12345678901234</td><td class="diff_next"></td><td class="diff_header" id="to13_2">2</td><td nowrap="nowrap">12345678901234</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap">56789012345689</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap">56789012345689</td></tr>
-            <tr><td class="diff_next" id="difflib_chg_to13__1"></td><td class="diff_header">></td><td nowrap="nowrap">012345</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap">012345</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from13_3">3</td><td nowrap="nowrap">line&nbsp;1</td><td class="diff_next"></td><td class="diff_header" id="to13_3">3</td><td nowrap="nowrap">line&nbsp;1</td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to13__1">n</a></td><td class="diff_header" id="from13_4">4</td><td nowrap="nowrap"><span class="diff_sub">line&nbsp;2</span></td><td class="diff_next"><a href="#difflib_chg_to13__1">n</a></td><td class="diff_header" id="to13_4">4</td><td nowrap="nowrap"><span class="diff_add">line&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;adde</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_add">d</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from13_5">5</td><td nowrap="nowrap">line&nbsp;3</td><td class="diff_next"></td><td class="diff_header" id="to13_5">5</td><td nowrap="nowrap">line&nbsp;3</td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to13__2">n</a></td><td class="diff_header" id="from13_6">6</td><td nowrap="nowrap">line&nbsp;4&nbsp;&nbsp;&nbsp;chan<span class="diff_chg">g</span></td><td class="diff_next"><a href="#difflib_chg_to13__2">n</a></td><td class="diff_header" id="to13_6">6</td><td nowrap="nowrap">line&nbsp;4&nbsp;&nbsp;&nbsp;chan<span class="diff_chg">G</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg">e</span>d</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg">E</span>d</td></tr>
-            <tr><td class="diff_next" id="difflib_chg_to13__2"></td><td class="diff_header" id="from13_7">7</td><td nowrap="nowrap">line&nbsp;5<span class="diff_chg">&nbsp;</span>&nbsp;&nbsp;chan<span class="diff_chg">g</span></td><td class="diff_next"></td><td class="diff_header" id="to13_7">7</td><td nowrap="nowrap">line&nbsp;5<span class="diff_chg">a</span>&nbsp;&nbsp;chan<span class="diff_chg">G</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg"></span>ed</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg"></span>ed</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from13_8">8</td><td nowrap="nowrap">line&nbsp;6<span class="diff_chg">&nbsp;</span>&nbsp;&nbsp;chang</td><td class="diff_next"></td><td class="diff_header" id="to13_8">8</td><td nowrap="nowrap">line&nbsp;6<span class="diff_chg">a</span>&nbsp;&nbsp;chang</td></tr>
-            <tr><td class="diff_next" id="difflib_chg_to13__3"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg">e</span>d</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_chg">E</span>d</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from13_9">9</td><td nowrap="nowrap">line&nbsp;7</td><td class="diff_next"></td><td class="diff_header" id="to13_9">9</td><td nowrap="nowrap">line&nbsp;7</td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to13__3">n</a></td><td class="diff_header" id="from13_10">10</td><td nowrap="nowrap"><span class="diff_sub">line&nbsp;8&nbsp;&nbsp;subtra</span></td><td class="diff_next"><a href="#difflib_chg_to13__3">n</a></td><td class="diff_header" id="to13_10">10</td><td nowrap="nowrap"><span class="diff_add">line&nbsp;8</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_sub">cted</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from13_11">11</td><td nowrap="nowrap">line&nbsp;9</td><td class="diff_next"></td><td class="diff_header" id="to13_11">11</td><td nowrap="nowrap">line&nbsp;9</td></tr>
-            <tr><td class="diff_next"><a href="#difflib_chg_to13__top">t</a></td><td class="diff_header" id="from13_12">12</td><td nowrap="nowrap"><span class="diff_sub">12345678901234</span></td><td class="diff_next"><a href="#difflib_chg_to13__top">t</a></td><td class="diff_header" id="to13_12">12</td><td nowrap="nowrap"><span class="diff_add">1234567890</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_sub">56789012345689</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_sub">012345</span></td><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from13_13">13</td><td nowrap="nowrap"><span class="diff_sub">short&nbsp;line</span></td><td class="diff_next"></td><td class="diff_header" id="to13_13">13</td><td nowrap="nowrap"><span class="diff_add">another&nbsp;long&nbsp;l</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_add">ine&nbsp;that&nbsp;needs</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header"></td><td nowrap="nowrap">&nbsp;</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap"><span class="diff_add">&nbsp;to&nbsp;be&nbsp;wrapped</span></td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from13_14">14</td><td nowrap="nowrap">just&nbsp;fit<span class="diff_chg">s</span>&nbsp;in!!</td><td class="diff_next"></td><td class="diff_header" id="to13_14">14</td><td nowrap="nowrap">just&nbsp;fit<span class="diff_chg">S</span>&nbsp;in!!</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from13_15">15</td><td nowrap="nowrap">just&nbsp;fits&nbsp;in&nbsp;t</td><td class="diff_next"></td><td class="diff_header" id="to13_15">15</td><td nowrap="nowrap">just&nbsp;fits&nbsp;in&nbsp;t</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap">wo&nbsp;line<span class="diff_chg">s</span>&nbsp;yup!!</td><td class="diff_next"></td><td class="diff_header">></td><td nowrap="nowrap">wo&nbsp;line<span class="diff_chg">S</span>&nbsp;yup!!</td></tr>
-            <tr><td class="diff_next"></td><td class="diff_header" id="from13_16">16</td><td nowrap="nowrap">the&nbsp;end</td><td class="diff_next"></td><td class="diff_header" id="to13_16">16</td><td nowrap="nowrap">the&nbsp;end</td></tr>
-        </tbody>
-    </table>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dircache.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dircache.py
deleted file mode 100644
index 616e740..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dircache.py
+++ /dev/null
@@ -1,77 +0,0 @@
-"""
-  Test cases for the dircache module
-  Nick Mathewson
-"""
-
-import unittest
-from test.test_support import run_unittest, import_module
-dircache = import_module('dircache', deprecated=True)
-import os, time, sys, tempfile
-
-
-class DircacheTests(unittest.TestCase):
-    def setUp(self):
-        self.tempdir = tempfile.mkdtemp()
-
-    def tearDown(self):
-        for fname in os.listdir(self.tempdir):
-            self.delTemp(fname)
-        os.rmdir(self.tempdir)
-
-    def writeTemp(self, fname):
-        f = open(os.path.join(self.tempdir, fname), 'w')
-        f.close()
-
-    def mkdirTemp(self, fname):
-        os.mkdir(os.path.join(self.tempdir, fname))
-
-    def delTemp(self, fname):
-        fname = os.path.join(self.tempdir, fname)
-        if os.path.isdir(fname):
-            os.rmdir(fname)
-        else:
-            os.unlink(fname)
-
-    def test_listdir(self):
-        ## SUCCESSFUL CASES
-        entries = dircache.listdir(self.tempdir)
-        self.assertEqual(entries, [])
-
-        # Check that cache is actually caching, not just passing through.
-        self.assertTrue(dircache.listdir(self.tempdir) is entries)
-
-        # Directories aren't "files" on Windows, and directory mtime has
-        # nothing to do with when files under a directory get created.
-        # That is, this test can't possibly work under Windows -- dircache
-        # is only good for capturing a one-shot snapshot there.
-
-        if sys.platform[:3] not in ('win', 'os2'):
-            # Sadly, dircache has the same granularity as stat.mtime, and so
-            # can't notice any changes that occurred within 1 sec of the last
-            # time it examined a directory.
-            time.sleep(1)
-            self.writeTemp("test1")
-            entries = dircache.listdir(self.tempdir)
-            self.assertEqual(entries, ['test1'])
-            self.assertTrue(dircache.listdir(self.tempdir) is entries)
-
-        ## UNSUCCESSFUL CASES
-        self.assertRaises(OSError, dircache.listdir, self.tempdir+"_nonexistent")
-
-    def test_annotate(self):
-        self.writeTemp("test2")
-        self.mkdirTemp("A")
-        lst = ['A', 'test2', 'test_nonexistent']
-        dircache.annotate(self.tempdir, lst)
-        self.assertEqual(lst, ['A/', 'test2', 'test_nonexistent'])
-
-
-def test_main():
-    try:
-        run_unittest(DircacheTests)
-    finally:
-        dircache.reset()
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dis.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dis.py
deleted file mode 100644
index 93370d4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dis.py
+++ /dev/null
@@ -1,150 +0,0 @@
-# Minimal tests for dis module
-
-from test.test_support import run_unittest
-import unittest
-import sys
-import dis
-import StringIO
-
-
-def _f(a):
-    print a
-    return 1
-
-dis_f = """\
- %-4d         0 LOAD_FAST                0 (a)
-              3 PRINT_ITEM
-              4 PRINT_NEWLINE
-
- %-4d         5 LOAD_CONST               1 (1)
-              8 RETURN_VALUE
-"""%(_f.func_code.co_firstlineno + 1,
-     _f.func_code.co_firstlineno + 2)
-
-
-def bug708901():
-    for res in range(1,
-                     10):
-        pass
-
-dis_bug708901 = """\
- %-4d         0 SETUP_LOOP              23 (to 26)
-              3 LOAD_GLOBAL              0 (range)
-              6 LOAD_CONST               1 (1)
-
- %-4d         9 LOAD_CONST               2 (10)
-             12 CALL_FUNCTION            2
-             15 GET_ITER
-        >>   16 FOR_ITER                 6 (to 25)
-             19 STORE_FAST               0 (res)
-
- %-4d        22 JUMP_ABSOLUTE           16
-        >>   25 POP_BLOCK
-        >>   26 LOAD_CONST               0 (None)
-             29 RETURN_VALUE
-"""%(bug708901.func_code.co_firstlineno + 1,
-     bug708901.func_code.co_firstlineno + 2,
-     bug708901.func_code.co_firstlineno + 3)
-
-
-def bug1333982(x=[]):
-    assert 0, ([s for s in x] +
-              1)
-    pass
-
-dis_bug1333982 = """\
- %-4d         0 LOAD_CONST               1 (0)
-              3 POP_JUMP_IF_TRUE        38
-              6 LOAD_GLOBAL              0 (AssertionError)
-              9 BUILD_LIST               0
-             12 LOAD_FAST                0 (x)
-             15 GET_ITER
-        >>   16 FOR_ITER                12 (to 31)
-             19 STORE_FAST               1 (s)
-             22 LOAD_FAST                1 (s)
-             25 LIST_APPEND              2
-             28 JUMP_ABSOLUTE           16
-
- %-4d   >>   31 LOAD_CONST               2 (1)
-             34 BINARY_ADD
-             35 RAISE_VARARGS            2
-
- %-4d   >>   38 LOAD_CONST               0 (None)
-             41 RETURN_VALUE
-"""%(bug1333982.func_code.co_firstlineno + 1,
-     bug1333982.func_code.co_firstlineno + 2,
-     bug1333982.func_code.co_firstlineno + 3)
-
-_BIG_LINENO_FORMAT = """\
-%3d           0 LOAD_GLOBAL              0 (spam)
-              3 POP_TOP
-              4 LOAD_CONST               0 (None)
-              7 RETURN_VALUE
-"""
-
-class DisTests(unittest.TestCase):
-    def do_disassembly_test(self, func, expected):
-        s = StringIO.StringIO()
-        save_stdout = sys.stdout
-        sys.stdout = s
-        dis.dis(func)
-        sys.stdout = save_stdout
-        got = s.getvalue()
-        # Trim trailing blanks (if any).
-        lines = got.split('\n')
-        lines = [line.rstrip() for line in lines]
-        expected = expected.split("\n")
-        import difflib
-        if expected != lines:
-            self.fail(
-                "events did not match expectation:\n" +
-                "\n".join(difflib.ndiff(expected,
-                                        lines)))
-
-    def test_opmap(self):
-        self.assertEqual(dis.opmap["STOP_CODE"], 0)
-        self.assertIn(dis.opmap["LOAD_CONST"], dis.hasconst)
-        self.assertIn(dis.opmap["STORE_NAME"], dis.hasname)
-
-    def test_opname(self):
-        self.assertEqual(dis.opname[dis.opmap["LOAD_FAST"]], "LOAD_FAST")
-
-    def test_boundaries(self):
-        self.assertEqual(dis.opmap["EXTENDED_ARG"], dis.EXTENDED_ARG)
-        self.assertEqual(dis.opmap["STORE_NAME"], dis.HAVE_ARGUMENT)
-
-    def test_dis(self):
-        self.do_disassembly_test(_f, dis_f)
-
-    def test_bug_708901(self):
-        self.do_disassembly_test(bug708901, dis_bug708901)
-
-    def test_bug_1333982(self):
-        # This one is checking bytecodes generated for an `assert` statement,
-        # so fails if the tests are run with -O.  Skip this test then.
-        if __debug__:
-            self.do_disassembly_test(bug1333982, dis_bug1333982)
-
-    def test_big_linenos(self):
-        def func(count):
-            namespace = {}
-            func = "def foo():\n " + "".join(["\n "] * count + ["spam\n"])
-            exec func in namespace
-            return namespace['foo']
-
-        # Test all small ranges
-        for i in xrange(1, 300):
-            expected = _BIG_LINENO_FORMAT % (i + 2)
-            self.do_disassembly_test(func(i), expected)
-
-        # Test some larger ranges too
-        for i in xrange(300, 5000, 10):
-            expected = _BIG_LINENO_FORMAT % (i + 2)
-            self.do_disassembly_test(func(i), expected)
-
-def test_main():
-    run_unittest(DisTests)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_distutils.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_distutils.py
deleted file mode 100644
index 6f887be..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_distutils.py
+++ /dev/null
@@ -1,18 +0,0 @@
-"""Tests for distutils.
-
-The tests for distutils are defined in the distutils.tests package;
-the test_suite() function there returns a test suite that's ready to
-be run.
-"""
-
-from test import test_support
-import distutils.tests
-
-
-def test_main():
-    test_support.run_unittest(distutils.tests.test_suite())
-    test_support.reap_children()
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dl.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dl.py
deleted file mode 100644
index d3c5394..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dl.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /usr/bin/env python
-"""Test dlmodule.c
-   Roger E. Masse  revised strategy by Barry Warsaw
-"""
-import unittest
-from test.test_support import verbose, import_module
-dl = import_module('dl', deprecated=True)
-
-sharedlibs = [
-    ('/usr/lib/libc.so', 'getpid'),
-    ('/lib/libc.so.6', 'getpid'),
-    ('/usr/bin/cygwin1.dll', 'getpid'),
-    ('/usr/lib/libc.dylib', 'getpid'),
-    ]
-
-def test_main():
-    for s, func in sharedlibs:
-        try:
-            if verbose:
-                print 'trying to open:', s,
-            l = dl.open(s)
-        except dl.error, err:
-            if verbose:
-                print 'failed', repr(str(err))
-            pass
-        else:
-            if verbose:
-                print 'succeeded...',
-            l.call(func)
-            l.close()
-            if verbose:
-                print 'worked!'
-            break
-    else:
-        raise unittest.SkipTest, 'Could not open any shared libraries'
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest.py
deleted file mode 100644
index 6d017e8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest.py
+++ /dev/null
@@ -1,2615 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-Test script for doctest.
-"""
-
-import sys
-from test import test_support
-import doctest
-
-# NOTE: There are some additional tests relating to interaction with
-#       zipimport in the test_zipimport_support test module.
-
-######################################################################
-## Sample Objects (used by test cases)
-######################################################################
-
-def sample_func(v):
-    """
-    Blah blah
-
-    >>> print sample_func(22)
-    44
-
-    Yee ha!
-    """
-    return v+v
-
-class SampleClass:
-    """
-    >>> print 1
-    1
-
-    >>> # comments get ignored.  so are empty PS1 and PS2 prompts:
-    >>>
-    ...
-
-    Multiline example:
-    >>> sc = SampleClass(3)
-    >>> for i in range(10):
-    ...     sc = sc.double()
-    ...     print sc.get(),
-    6 12 24 48 96 192 384 768 1536 3072
-    """
-    def __init__(self, val):
-        """
-        >>> print SampleClass(12).get()
-        12
-        """
-        self.val = val
-
-    def double(self):
-        """
-        >>> print SampleClass(12).double().get()
-        24
-        """
-        return SampleClass(self.val + self.val)
-
-    def get(self):
-        """
-        >>> print SampleClass(-5).get()
-        -5
-        """
-        return self.val
-
-    def a_staticmethod(v):
-        """
-        >>> print SampleClass.a_staticmethod(10)
-        11
-        """
-        return v+1
-    a_staticmethod = staticmethod(a_staticmethod)
-
-    def a_classmethod(cls, v):
-        """
-        >>> print SampleClass.a_classmethod(10)
-        12
-        >>> print SampleClass(0).a_classmethod(10)
-        12
-        """
-        return v+2
-    a_classmethod = classmethod(a_classmethod)
-
-    a_property = property(get, doc="""
-        >>> print SampleClass(22).a_property
-        22
-        """)
-
-    class NestedClass:
-        """
-        >>> x = SampleClass.NestedClass(5)
-        >>> y = x.square()
-        >>> print y.get()
-        25
-        """
-        def __init__(self, val=0):
-            """
-            >>> print SampleClass.NestedClass().get()
-            0
-            """
-            self.val = val
-        def square(self):
-            return SampleClass.NestedClass(self.val*self.val)
-        def get(self):
-            return self.val
-
-class SampleNewStyleClass(object):
-    r"""
-    >>> print '1\n2\n3'
-    1
-    2
-    3
-    """
-    def __init__(self, val):
-        """
-        >>> print SampleNewStyleClass(12).get()
-        12
-        """
-        self.val = val
-
-    def double(self):
-        """
-        >>> print SampleNewStyleClass(12).double().get()
-        24
-        """
-        return SampleNewStyleClass(self.val + self.val)
-
-    def get(self):
-        """
-        >>> print SampleNewStyleClass(-5).get()
-        -5
-        """
-        return self.val
-
-######################################################################
-## Fake stdin (for testing interactive debugging)
-######################################################################
-
-class _FakeInput:
-    """
-    A fake input stream for pdb's interactive debugger.  Whenever a
-    line is read, print it (to simulate the user typing it), and then
-    return it.  The set of lines to return is specified in the
-    constructor; they should not have trailing newlines.
-    """
-    def __init__(self, lines):
-        self.lines = lines
-
-    def readline(self):
-        line = self.lines.pop(0)
-        print line
-        return line+'\n'
-
-######################################################################
-## Test Cases
-######################################################################
-
-def test_Example(): r"""
-Unit tests for the `Example` class.
-
-Example is a simple container class that holds:
-  - `source`: A source string.
-  - `want`: An expected output string.
-  - `exc_msg`: An expected exception message string (or None if no
-    exception is expected).
-  - `lineno`: A line number (within the docstring).
-  - `indent`: The example's indentation in the input string.
-  - `options`: An option dictionary, mapping option flags to True or
-    False.
-
-These attributes are set by the constructor.  `source` and `want` are
-required; the other attributes all have default values:
-
-    >>> example = doctest.Example('print 1', '1\n')
-    >>> (example.source, example.want, example.exc_msg,
-    ...  example.lineno, example.indent, example.options)
-    ('print 1\n', '1\n', None, 0, 0, {})
-
-The first three attributes (`source`, `want`, and `exc_msg`) may be
-specified positionally; the remaining arguments should be specified as
-keyword arguments:
-
-    >>> exc_msg = 'IndexError: pop from an empty list'
-    >>> example = doctest.Example('[].pop()', '', exc_msg,
-    ...                           lineno=5, indent=4,
-    ...                           options={doctest.ELLIPSIS: True})
-    >>> (example.source, example.want, example.exc_msg,
-    ...  example.lineno, example.indent, example.options)
-    ('[].pop()\n', '', 'IndexError: pop from an empty list\n', 5, 4, {8: True})
-
-The constructor normalizes the `source` string to end in a newline:
-
-    Source spans a single line: no terminating newline.
-    >>> e = doctest.Example('print 1', '1\n')
-    >>> e.source, e.want
-    ('print 1\n', '1\n')
-
-    >>> e = doctest.Example('print 1\n', '1\n')
-    >>> e.source, e.want
-    ('print 1\n', '1\n')
-
-    Source spans multiple lines: require terminating newline.
-    >>> e = doctest.Example('print 1;\nprint 2\n', '1\n2\n')
-    >>> e.source, e.want
-    ('print 1;\nprint 2\n', '1\n2\n')
-
-    >>> e = doctest.Example('print 1;\nprint 2', '1\n2\n')
-    >>> e.source, e.want
-    ('print 1;\nprint 2\n', '1\n2\n')
-
-    Empty source string (which should never appear in real examples)
-    >>> e = doctest.Example('', '')
-    >>> e.source, e.want
-    ('\n', '')
-
-The constructor normalizes the `want` string to end in a newline,
-unless it's the empty string:
-
-    >>> e = doctest.Example('print 1', '1\n')
-    >>> e.source, e.want
-    ('print 1\n', '1\n')
-
-    >>> e = doctest.Example('print 1', '1')
-    >>> e.source, e.want
-    ('print 1\n', '1\n')
-
-    >>> e = doctest.Example('print', '')
-    >>> e.source, e.want
-    ('print\n', '')
-
-The constructor normalizes the `exc_msg` string to end in a newline,
-unless it's `None`:
-
-    Message spans one line
-    >>> exc_msg = 'IndexError: pop from an empty list'
-    >>> e = doctest.Example('[].pop()', '', exc_msg)
-    >>> e.exc_msg
-    'IndexError: pop from an empty list\n'
-
-    >>> exc_msg = 'IndexError: pop from an empty list\n'
-    >>> e = doctest.Example('[].pop()', '', exc_msg)
-    >>> e.exc_msg
-    'IndexError: pop from an empty list\n'
-
-    Message spans multiple lines
-    >>> exc_msg = 'ValueError: 1\n  2'
-    >>> e = doctest.Example('raise ValueError("1\n  2")', '', exc_msg)
-    >>> e.exc_msg
-    'ValueError: 1\n  2\n'
-
-    >>> exc_msg = 'ValueError: 1\n  2\n'
-    >>> e = doctest.Example('raise ValueError("1\n  2")', '', exc_msg)
-    >>> e.exc_msg
-    'ValueError: 1\n  2\n'
-
-    Empty (but non-None) exception message (which should never appear
-    in real examples)
-    >>> exc_msg = ''
-    >>> e = doctest.Example('raise X()', '', exc_msg)
-    >>> e.exc_msg
-    '\n'
-"""
-
-def test_DocTest(): r"""
-Unit tests for the `DocTest` class.
-
-DocTest is a collection of examples, extracted from a docstring, along
-with information about where the docstring comes from (a name,
-filename, and line number).  The docstring is parsed by the `DocTest`
-constructor:
-
-    >>> docstring = '''
-    ...     >>> print 12
-    ...     12
-    ...
-    ... Non-example text.
-    ...
-    ...     >>> print 'another\example'
-    ...     another
-    ...     example
-    ... '''
-    >>> globs = {} # globals to run the test in.
-    >>> parser = doctest.DocTestParser()
-    >>> test = parser.get_doctest(docstring, globs, 'some_test',
-    ...                           'some_file', 20)
-    >>> print test
-    <DocTest some_test from some_file:20 (2 examples)>
-    >>> len(test.examples)
-    2
-    >>> e1, e2 = test.examples
-    >>> (e1.source, e1.want, e1.lineno)
-    ('print 12\n', '12\n', 1)
-    >>> (e2.source, e2.want, e2.lineno)
-    ("print 'another\\example'\n", 'another\nexample\n', 6)
-
-Source information (name, filename, and line number) is available as
-attributes on the doctest object:
-
-    >>> (test.name, test.filename, test.lineno)
-    ('some_test', 'some_file', 20)
-
-The line number of an example within its containing file is found by
-adding the line number of the example and the line number of its
-containing test:
-
-    >>> test.lineno + e1.lineno
-    21
-    >>> test.lineno + e2.lineno
-    26
-
-If the docstring contains inconsistant leading whitespace in the
-expected output of an example, then `DocTest` will raise a ValueError:
-
-    >>> docstring = r'''
-    ...       >>> print 'bad\nindentation'
-    ...       bad
-    ...     indentation
-    ...     '''
-    >>> parser.get_doctest(docstring, globs, 'some_test', 'filename', 0)
-    Traceback (most recent call last):
-    ValueError: line 4 of the docstring for some_test has inconsistent leading whitespace: 'indentation'
-
-If the docstring contains inconsistent leading whitespace on
-continuation lines, then `DocTest` will raise a ValueError:
-
-    >>> docstring = r'''
-    ...       >>> print ('bad indentation',
-    ...     ...          2)
-    ...       ('bad', 'indentation')
-    ...     '''
-    >>> parser.get_doctest(docstring, globs, 'some_test', 'filename', 0)
-    Traceback (most recent call last):
-    ValueError: line 2 of the docstring for some_test has inconsistent leading whitespace: '...          2)'
-
-If there's no blank space after a PS1 prompt ('>>>'), then `DocTest`
-will raise a ValueError:
-
-    >>> docstring = '>>>print 1\n1'
-    >>> parser.get_doctest(docstring, globs, 'some_test', 'filename', 0)
-    Traceback (most recent call last):
-    ValueError: line 1 of the docstring for some_test lacks blank after >>>: '>>>print 1'
-
-If there's no blank space after a PS2 prompt ('...'), then `DocTest`
-will raise a ValueError:
-
-    >>> docstring = '>>> if 1:\n...print 1\n1'
-    >>> parser.get_doctest(docstring, globs, 'some_test', 'filename', 0)
-    Traceback (most recent call last):
-    ValueError: line 2 of the docstring for some_test lacks blank after ...: '...print 1'
-
-"""
-
-def test_DocTestFinder(): r"""
-Unit tests for the `DocTestFinder` class.
-
-DocTestFinder is used to extract DocTests from an object's docstring
-and the docstrings of its contained objects.  It can be used with
-modules, functions, classes, methods, staticmethods, classmethods, and
-properties.
-
-Finding Tests in Functions
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-For a function whose docstring contains examples, DocTestFinder.find()
-will return a single test (for that function's docstring):
-
-    >>> finder = doctest.DocTestFinder()
-
-We'll simulate a __file__ attr that ends in pyc:
-
-    >>> import test.test_doctest
-    >>> old = test.test_doctest.__file__
-    >>> test.test_doctest.__file__ = 'test_doctest.pyc'
-
-    >>> tests = finder.find(sample_func)
-
-    >>> print tests  # doctest: +ELLIPSIS
-    [<DocTest sample_func from ...:17 (1 example)>]
-
-The exact name depends on how test_doctest was invoked, so allow for
-leading path components.
-
-    >>> tests[0].filename # doctest: +ELLIPSIS
-    '...test_doctest.py'
-
-    >>> test.test_doctest.__file__ = old
-
-
-    >>> e = tests[0].examples[0]
-    >>> (e.source, e.want, e.lineno)
-    ('print sample_func(22)\n', '44\n', 3)
-
-By default, tests are created for objects with no docstring:
-
-    >>> def no_docstring(v):
-    ...     pass
-    >>> finder.find(no_docstring)
-    []
-
-However, the optional argument `exclude_empty` to the DocTestFinder
-constructor can be used to exclude tests for objects with empty
-docstrings:
-
-    >>> def no_docstring(v):
-    ...     pass
-    >>> excl_empty_finder = doctest.DocTestFinder(exclude_empty=True)
-    >>> excl_empty_finder.find(no_docstring)
-    []
-
-If the function has a docstring with no examples, then a test with no
-examples is returned.  (This lets `DocTestRunner` collect statistics
-about which functions have no tests -- but is that useful?  And should
-an empty test also be created when there's no docstring?)
-
-    >>> def no_examples(v):
-    ...     ''' no doctest examples '''
-    >>> finder.find(no_examples) # doctest: +ELLIPSIS
-    [<DocTest no_examples from ...:1 (no examples)>]
-
-Finding Tests in Classes
-~~~~~~~~~~~~~~~~~~~~~~~~
-For a class, DocTestFinder will create a test for the class's
-docstring, and will recursively explore its contents, including
-methods, classmethods, staticmethods, properties, and nested classes.
-
-    >>> finder = doctest.DocTestFinder()
-    >>> tests = finder.find(SampleClass)
-    >>> for t in tests:
-    ...     print '%2s  %s' % (len(t.examples), t.name)
-     3  SampleClass
-     3  SampleClass.NestedClass
-     1  SampleClass.NestedClass.__init__
-     1  SampleClass.__init__
-     2  SampleClass.a_classmethod
-     1  SampleClass.a_property
-     1  SampleClass.a_staticmethod
-     1  SampleClass.double
-     1  SampleClass.get
-
-New-style classes are also supported:
-
-    >>> tests = finder.find(SampleNewStyleClass)
-    >>> for t in tests:
-    ...     print '%2s  %s' % (len(t.examples), t.name)
-     1  SampleNewStyleClass
-     1  SampleNewStyleClass.__init__
-     1  SampleNewStyleClass.double
-     1  SampleNewStyleClass.get
-
-Finding Tests in Modules
-~~~~~~~~~~~~~~~~~~~~~~~~
-For a module, DocTestFinder will create a test for the class's
-docstring, and will recursively explore its contents, including
-functions, classes, and the `__test__` dictionary, if it exists:
-
-    >>> # A module
-    >>> import types
-    >>> m = types.ModuleType('some_module')
-    >>> def triple(val):
-    ...     '''
-    ...     >>> print triple(11)
-    ...     33
-    ...     '''
-    ...     return val*3
-    >>> m.__dict__.update({
-    ...     'sample_func': sample_func,
-    ...     'SampleClass': SampleClass,
-    ...     '__doc__': '''
-    ...         Module docstring.
-    ...             >>> print 'module'
-    ...             module
-    ...         ''',
-    ...     '__test__': {
-    ...         'd': '>>> print 6\n6\n>>> print 7\n7\n',
-    ...         'c': triple}})
-
-    >>> finder = doctest.DocTestFinder()
-    >>> # Use module=test.test_doctest, to prevent doctest from
-    >>> # ignoring the objects since they weren't defined in m.
-    >>> import test.test_doctest
-    >>> tests = finder.find(m, module=test.test_doctest)
-    >>> for t in tests:
-    ...     print '%2s  %s' % (len(t.examples), t.name)
-     1  some_module
-     3  some_module.SampleClass
-     3  some_module.SampleClass.NestedClass
-     1  some_module.SampleClass.NestedClass.__init__
-     1  some_module.SampleClass.__init__
-     2  some_module.SampleClass.a_classmethod
-     1  some_module.SampleClass.a_property
-     1  some_module.SampleClass.a_staticmethod
-     1  some_module.SampleClass.double
-     1  some_module.SampleClass.get
-     1  some_module.__test__.c
-     2  some_module.__test__.d
-     1  some_module.sample_func
-
-Duplicate Removal
-~~~~~~~~~~~~~~~~~
-If a single object is listed twice (under different names), then tests
-will only be generated for it once:
-
-    >>> from test import doctest_aliases
-    >>> assert doctest_aliases.TwoNames.f
-    >>> assert doctest_aliases.TwoNames.g
-    >>> tests = excl_empty_finder.find(doctest_aliases)
-    >>> print len(tests)
-    2
-    >>> print tests[0].name
-    test.doctest_aliases.TwoNames
-
-    TwoNames.f and TwoNames.g are bound to the same object.
-    We can't guess which will be found in doctest's traversal of
-    TwoNames.__dict__ first, so we have to allow for either.
-
-    >>> tests[1].name.split('.')[-1] in ['f', 'g']
-    True
-
-Empty Tests
-~~~~~~~~~~~
-By default, an object with no doctests doesn't create any tests:
-
-    >>> tests = doctest.DocTestFinder().find(SampleClass)
-    >>> for t in tests:
-    ...     print '%2s  %s' % (len(t.examples), t.name)
-     3  SampleClass
-     3  SampleClass.NestedClass
-     1  SampleClass.NestedClass.__init__
-     1  SampleClass.__init__
-     2  SampleClass.a_classmethod
-     1  SampleClass.a_property
-     1  SampleClass.a_staticmethod
-     1  SampleClass.double
-     1  SampleClass.get
-
-By default, that excluded objects with no doctests.  exclude_empty=False
-tells it to include (empty) tests for objects with no doctests.  This feature
-is really to support backward compatibility in what doctest.master.summarize()
-displays.
-
-    >>> tests = doctest.DocTestFinder(exclude_empty=False).find(SampleClass)
-    >>> for t in tests:
-    ...     print '%2s  %s' % (len(t.examples), t.name)
-     3  SampleClass
-     3  SampleClass.NestedClass
-     1  SampleClass.NestedClass.__init__
-     0  SampleClass.NestedClass.get
-     0  SampleClass.NestedClass.square
-     1  SampleClass.__init__
-     2  SampleClass.a_classmethod
-     1  SampleClass.a_property
-     1  SampleClass.a_staticmethod
-     1  SampleClass.double
-     1  SampleClass.get
-
-Turning off Recursion
-~~~~~~~~~~~~~~~~~~~~~
-DocTestFinder can be told not to look for tests in contained objects
-using the `recurse` flag:
-
-    >>> tests = doctest.DocTestFinder(recurse=False).find(SampleClass)
-    >>> for t in tests:
-    ...     print '%2s  %s' % (len(t.examples), t.name)
-     3  SampleClass
-
-Line numbers
-~~~~~~~~~~~~
-DocTestFinder finds the line number of each example:
-
-    >>> def f(x):
-    ...     '''
-    ...     >>> x = 12
-    ...
-    ...     some text
-    ...
-    ...     >>> # examples are not created for comments & bare prompts.
-    ...     >>>
-    ...     ...
-    ...
-    ...     >>> for x in range(10):
-    ...     ...     print x,
-    ...     0 1 2 3 4 5 6 7 8 9
-    ...     >>> x//2
-    ...     6
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> [e.lineno for e in test.examples]
-    [1, 9, 12]
-"""
-
-def test_DocTestParser(): r"""
-Unit tests for the `DocTestParser` class.
-
-DocTestParser is used to parse docstrings containing doctest examples.
-
-The `parse` method divides a docstring into examples and intervening
-text:
-
-    >>> s = '''
-    ...     >>> x, y = 2, 3  # no output expected
-    ...     >>> if 1:
-    ...     ...     print x
-    ...     ...     print y
-    ...     2
-    ...     3
-    ...
-    ...     Some text.
-    ...     >>> x+y
-    ...     5
-    ...     '''
-    >>> parser = doctest.DocTestParser()
-    >>> for piece in parser.parse(s):
-    ...     if isinstance(piece, doctest.Example):
-    ...         print 'Example:', (piece.source, piece.want, piece.lineno)
-    ...     else:
-    ...         print '   Text:', `piece`
-       Text: '\n'
-    Example: ('x, y = 2, 3  # no output expected\n', '', 1)
-       Text: ''
-    Example: ('if 1:\n    print x\n    print y\n', '2\n3\n', 2)
-       Text: '\nSome text.\n'
-    Example: ('x+y\n', '5\n', 9)
-       Text: ''
-
-The `get_examples` method returns just the examples:
-
-    >>> for piece in parser.get_examples(s):
-    ...     print (piece.source, piece.want, piece.lineno)
-    ('x, y = 2, 3  # no output expected\n', '', 1)
-    ('if 1:\n    print x\n    print y\n', '2\n3\n', 2)
-    ('x+y\n', '5\n', 9)
-
-The `get_doctest` method creates a Test from the examples, along with the
-given arguments:
-
-    >>> test = parser.get_doctest(s, {}, 'name', 'filename', lineno=5)
-    >>> (test.name, test.filename, test.lineno)
-    ('name', 'filename', 5)
-    >>> for piece in test.examples:
-    ...     print (piece.source, piece.want, piece.lineno)
-    ('x, y = 2, 3  # no output expected\n', '', 1)
-    ('if 1:\n    print x\n    print y\n', '2\n3\n', 2)
-    ('x+y\n', '5\n', 9)
-"""
-
-class test_DocTestRunner:
-    def basics(): r"""
-Unit tests for the `DocTestRunner` class.
-
-DocTestRunner is used to run DocTest test cases, and to accumulate
-statistics.  Here's a simple DocTest case we can use:
-
-    >>> def f(x):
-    ...     '''
-    ...     >>> x = 12
-    ...     >>> print x
-    ...     12
-    ...     >>> x//2
-    ...     6
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-
-The main DocTestRunner interface is the `run` method, which runs a
-given DocTest case in a given namespace (globs).  It returns a tuple
-`(f,t)`, where `f` is the number of failed tests and `t` is the number
-of tried tests.
-
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    TestResults(failed=0, attempted=3)
-
-If any example produces incorrect output, then the test runner reports
-the failure and proceeds to the next example:
-
-    >>> def f(x):
-    ...     '''
-    ...     >>> x = 12
-    ...     >>> print x
-    ...     14
-    ...     >>> x//2
-    ...     6
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=True).run(test)
-    ... # doctest: +ELLIPSIS
-    Trying:
-        x = 12
-    Expecting nothing
-    ok
-    Trying:
-        print x
-    Expecting:
-        14
-    **********************************************************************
-    File ..., line 4, in f
-    Failed example:
-        print x
-    Expected:
-        14
-    Got:
-        12
-    Trying:
-        x//2
-    Expecting:
-        6
-    ok
-    TestResults(failed=1, attempted=3)
-"""
-    def verbose_flag(): r"""
-The `verbose` flag makes the test runner generate more detailed
-output:
-
-    >>> def f(x):
-    ...     '''
-    ...     >>> x = 12
-    ...     >>> print x
-    ...     12
-    ...     >>> x//2
-    ...     6
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-
-    >>> doctest.DocTestRunner(verbose=True).run(test)
-    Trying:
-        x = 12
-    Expecting nothing
-    ok
-    Trying:
-        print x
-    Expecting:
-        12
-    ok
-    Trying:
-        x//2
-    Expecting:
-        6
-    ok
-    TestResults(failed=0, attempted=3)
-
-If the `verbose` flag is unspecified, then the output will be verbose
-iff `-v` appears in sys.argv:
-
-    >>> # Save the real sys.argv list.
-    >>> old_argv = sys.argv
-
-    >>> # If -v does not appear in sys.argv, then output isn't verbose.
-    >>> sys.argv = ['test']
-    >>> doctest.DocTestRunner().run(test)
-    TestResults(failed=0, attempted=3)
-
-    >>> # If -v does appear in sys.argv, then output is verbose.
-    >>> sys.argv = ['test', '-v']
-    >>> doctest.DocTestRunner().run(test)
-    Trying:
-        x = 12
-    Expecting nothing
-    ok
-    Trying:
-        print x
-    Expecting:
-        12
-    ok
-    Trying:
-        x//2
-    Expecting:
-        6
-    ok
-    TestResults(failed=0, attempted=3)
-
-    >>> # Restore sys.argv
-    >>> sys.argv = old_argv
-
-In the remaining examples, the test runner's verbosity will be
-explicitly set, to ensure that the test behavior is consistent.
-    """
-    def exceptions(): r"""
-Tests of `DocTestRunner`'s exception handling.
-
-An expected exception is specified with a traceback message.  The
-lines between the first line and the type/value may be omitted or
-replaced with any other string:
-
-    >>> def f(x):
-    ...     '''
-    ...     >>> x = 12
-    ...     >>> print x//0
-    ...     Traceback (most recent call last):
-    ...     ZeroDivisionError: integer division or modulo by zero
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    TestResults(failed=0, attempted=2)
-
-An example may not generate output before it raises an exception; if
-it does, then the traceback message will not be recognized as
-signaling an expected exception, so the example will be reported as an
-unexpected exception:
-
-    >>> def f(x):
-    ...     '''
-    ...     >>> x = 12
-    ...     >>> print 'pre-exception output', x//0
-    ...     pre-exception output
-    ...     Traceback (most recent call last):
-    ...     ZeroDivisionError: integer division or modulo by zero
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 4, in f
-    Failed example:
-        print 'pre-exception output', x//0
-    Exception raised:
-        ...
-        ZeroDivisionError: integer division or modulo by zero
-    TestResults(failed=1, attempted=2)
-
-Exception messages may contain newlines:
-
-    >>> def f(x):
-    ...     r'''
-    ...     >>> raise ValueError, 'multi\nline\nmessage'
-    ...     Traceback (most recent call last):
-    ...     ValueError: multi
-    ...     line
-    ...     message
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    TestResults(failed=0, attempted=1)
-
-If an exception is expected, but an exception with the wrong type or
-message is raised, then it is reported as a failure:
-
-    >>> def f(x):
-    ...     r'''
-    ...     >>> raise ValueError, 'message'
-    ...     Traceback (most recent call last):
-    ...     ValueError: wrong message
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 3, in f
-    Failed example:
-        raise ValueError, 'message'
-    Expected:
-        Traceback (most recent call last):
-        ValueError: wrong message
-    Got:
-        Traceback (most recent call last):
-        ...
-        ValueError: message
-    TestResults(failed=1, attempted=1)
-
-However, IGNORE_EXCEPTION_DETAIL can be used to allow a mismatch in the
-detail:
-
-    >>> def f(x):
-    ...     r'''
-    ...     >>> raise ValueError, 'message' #doctest: +IGNORE_EXCEPTION_DETAIL
-    ...     Traceback (most recent call last):
-    ...     ValueError: wrong message
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    TestResults(failed=0, attempted=1)
-
-IGNORE_EXCEPTION_DETAIL also ignores difference in exception formatting
-between Python versions. For example, in Python 3.x, the module path of
-the exception is in the output, but this will fail under Python 2:
-
-    >>> def f(x):
-    ...     r'''
-    ...     >>> from httplib import HTTPException
-    ...     >>> raise HTTPException('message')
-    ...     Traceback (most recent call last):
-    ...     httplib.HTTPException: message
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 4, in f
-    Failed example:
-        raise HTTPException('message')
-    Expected:
-        Traceback (most recent call last):
-        httplib.HTTPException: message
-    Got:
-        Traceback (most recent call last):
-        ...
-        HTTPException: message
-    TestResults(failed=1, attempted=2)
-
-But in Python 2 the module path is not included, an therefore a test must look
-like the following test to succeed in Python 2. But that test will fail under
-Python 3.
-
-    >>> def f(x):
-    ...     r'''
-    ...     >>> from httplib import HTTPException
-    ...     >>> raise HTTPException('message')
-    ...     Traceback (most recent call last):
-    ...     HTTPException: message
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    TestResults(failed=0, attempted=2)
-
-However, with IGNORE_EXCEPTION_DETAIL, the module name of the exception
-(if any) will be ignored:
-
-    >>> def f(x):
-    ...     r'''
-    ...     >>> from httplib import HTTPException
-    ...     >>> raise HTTPException('message') #doctest: +IGNORE_EXCEPTION_DETAIL
-    ...     Traceback (most recent call last):
-    ...     HTTPException: message
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    TestResults(failed=0, attempted=2)
-
-The module path will be completely ignored, so two different module paths will
-still pass if IGNORE_EXCEPTION_DETAIL is given. This is intentional, so it can
-be used when exceptions have changed module.
-
-    >>> def f(x):
-    ...     r'''
-    ...     >>> from httplib import HTTPException
-    ...     >>> raise HTTPException('message') #doctest: +IGNORE_EXCEPTION_DETAIL
-    ...     Traceback (most recent call last):
-    ...     foo.bar.HTTPException: message
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    TestResults(failed=0, attempted=2)
-
-But IGNORE_EXCEPTION_DETAIL does not allow a mismatch in the exception type:
-
-    >>> def f(x):
-    ...     r'''
-    ...     >>> raise ValueError, 'message' #doctest: +IGNORE_EXCEPTION_DETAIL
-    ...     Traceback (most recent call last):
-    ...     TypeError: wrong type
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 3, in f
-    Failed example:
-        raise ValueError, 'message' #doctest: +IGNORE_EXCEPTION_DETAIL
-    Expected:
-        Traceback (most recent call last):
-        TypeError: wrong type
-    Got:
-        Traceback (most recent call last):
-        ...
-        ValueError: message
-    TestResults(failed=1, attempted=1)
-
-If an exception is raised but not expected, then it is reported as an
-unexpected exception:
-
-    >>> def f(x):
-    ...     r'''
-    ...     >>> 1//0
-    ...     0
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 3, in f
-    Failed example:
-        1//0
-    Exception raised:
-        Traceback (most recent call last):
-        ...
-        ZeroDivisionError: integer division or modulo by zero
-    TestResults(failed=1, attempted=1)
-"""
-    def displayhook(): r"""
-Test that changing sys.displayhook doesn't matter for doctest.
-
-    >>> import sys
-    >>> orig_displayhook = sys.displayhook
-    >>> def my_displayhook(x):
-    ...     print('hi!')
-    >>> sys.displayhook = my_displayhook
-    >>> def f():
-    ...     '''
-    ...     >>> 3
-    ...     3
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> r = doctest.DocTestRunner(verbose=False).run(test)
-    >>> post_displayhook = sys.displayhook
-
-    We need to restore sys.displayhook now, so that we'll be able to test
-    results.
-
-    >>> sys.displayhook = orig_displayhook
-
-    Ok, now we can check that everything is ok.
-
-    >>> r
-    TestResults(failed=0, attempted=1)
-    >>> post_displayhook is my_displayhook
-    True
-"""
-    def optionflags(): r"""
-Tests of `DocTestRunner`'s option flag handling.
-
-Several option flags can be used to customize the behavior of the test
-runner.  These are defined as module constants in doctest, and passed
-to the DocTestRunner constructor (multiple constants should be ORed
-together).
-
-The DONT_ACCEPT_TRUE_FOR_1 flag disables matches between True/False
-and 1/0:
-
-    >>> def f(x):
-    ...     '>>> True\n1\n'
-
-    >>> # Without the flag:
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    TestResults(failed=0, attempted=1)
-
-    >>> # With the flag:
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> flags = doctest.DONT_ACCEPT_TRUE_FOR_1
-    >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 2, in f
-    Failed example:
-        True
-    Expected:
-        1
-    Got:
-        True
-    TestResults(failed=1, attempted=1)
-
-The DONT_ACCEPT_BLANKLINE flag disables the match between blank lines
-and the '<BLANKLINE>' marker:
-
-    >>> def f(x):
-    ...     '>>> print "a\\n\\nb"\na\n<BLANKLINE>\nb\n'
-
-    >>> # Without the flag:
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    TestResults(failed=0, attempted=1)
-
-    >>> # With the flag:
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> flags = doctest.DONT_ACCEPT_BLANKLINE
-    >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 2, in f
-    Failed example:
-        print "a\n\nb"
-    Expected:
-        a
-        <BLANKLINE>
-        b
-    Got:
-        a
-    <BLANKLINE>
-        b
-    TestResults(failed=1, attempted=1)
-
-The NORMALIZE_WHITESPACE flag causes all sequences of whitespace to be
-treated as equal:
-
-    >>> def f(x):
-    ...     '>>> print 1, 2, 3\n  1   2\n 3'
-
-    >>> # Without the flag:
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 2, in f
-    Failed example:
-        print 1, 2, 3
-    Expected:
-          1   2
-         3
-    Got:
-        1 2 3
-    TestResults(failed=1, attempted=1)
-
-    >>> # With the flag:
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> flags = doctest.NORMALIZE_WHITESPACE
-    >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
-    TestResults(failed=0, attempted=1)
-
-    An example from the docs:
-    >>> print range(20) #doctest: +NORMALIZE_WHITESPACE
-    [0,   1,  2,  3,  4,  5,  6,  7,  8,  9,
-    10,  11, 12, 13, 14, 15, 16, 17, 18, 19]
-
-The ELLIPSIS flag causes ellipsis marker ("...") in the expected
-output to match any substring in the actual output:
-
-    >>> def f(x):
-    ...     '>>> print range(15)\n[0, 1, 2, ..., 14]\n'
-
-    >>> # Without the flag:
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 2, in f
-    Failed example:
-        print range(15)
-    Expected:
-        [0, 1, 2, ..., 14]
-    Got:
-        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
-    TestResults(failed=1, attempted=1)
-
-    >>> # With the flag:
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> flags = doctest.ELLIPSIS
-    >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
-    TestResults(failed=0, attempted=1)
-
-    ... also matches nothing:
-
-    >>> for i in range(100):
-    ...     print i**2, #doctest: +ELLIPSIS
-    0 1...4...9 16 ... 36 49 64 ... 9801
-
-    ... can be surprising; e.g., this test passes:
-
-    >>> for i in range(21): #doctest: +ELLIPSIS
-    ...     print i,
-    0 1 2 ...1...2...0
-
-    Examples from the docs:
-
-    >>> print range(20) # doctest:+ELLIPSIS
-    [0, 1, ..., 18, 19]
-
-    >>> print range(20) # doctest: +ELLIPSIS
-    ...                 # doctest: +NORMALIZE_WHITESPACE
-    [0,    1, ...,   18,    19]
-
-The SKIP flag causes an example to be skipped entirely.  I.e., the
-example is not run.  It can be useful in contexts where doctest
-examples serve as both documentation and test cases, and an example
-should be included for documentation purposes, but should not be
-checked (e.g., because its output is random, or depends on resources
-which would be unavailable.)  The SKIP flag can also be used for
-'commenting out' broken examples.
-
-    >>> import unavailable_resource           # doctest: +SKIP
-    >>> unavailable_resource.do_something()   # doctest: +SKIP
-    >>> unavailable_resource.blow_up()        # doctest: +SKIP
-    Traceback (most recent call last):
-        ...
-    UncheckedBlowUpError:  Nobody checks me.
-
-    >>> import random
-    >>> print random.random() # doctest: +SKIP
-    0.721216923889
-
-The REPORT_UDIFF flag causes failures that involve multi-line expected
-and actual outputs to be displayed using a unified diff:
-
-    >>> def f(x):
-    ...     r'''
-    ...     >>> print '\n'.join('abcdefg')
-    ...     a
-    ...     B
-    ...     c
-    ...     d
-    ...     f
-    ...     g
-    ...     h
-    ...     '''
-
-    >>> # Without the flag:
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 3, in f
-    Failed example:
-        print '\n'.join('abcdefg')
-    Expected:
-        a
-        B
-        c
-        d
-        f
-        g
-        h
-    Got:
-        a
-        b
-        c
-        d
-        e
-        f
-        g
-    TestResults(failed=1, attempted=1)
-
-    >>> # With the flag:
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> flags = doctest.REPORT_UDIFF
-    >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 3, in f
-    Failed example:
-        print '\n'.join('abcdefg')
-    Differences (unified diff with -expected +actual):
-        @@ -1,7 +1,7 @@
-         a
-        -B
-        +b
-         c
-         d
-        +e
-         f
-         g
-        -h
-    TestResults(failed=1, attempted=1)
-
-The REPORT_CDIFF flag causes failures that involve multi-line expected
-and actual outputs to be displayed using a context diff:
-
-    >>> # Reuse f() from the REPORT_UDIFF example, above.
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> flags = doctest.REPORT_CDIFF
-    >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 3, in f
-    Failed example:
-        print '\n'.join('abcdefg')
-    Differences (context diff with expected followed by actual):
-        ***************
-        *** 1,7 ****
-          a
-        ! B
-          c
-          d
-          f
-          g
-        - h
-        --- 1,7 ----
-          a
-        ! b
-          c
-          d
-        + e
-          f
-          g
-    TestResults(failed=1, attempted=1)
-
-
-The REPORT_NDIFF flag causes failures to use the difflib.Differ algorithm
-used by the popular ndiff.py utility.  This does intraline difference
-marking, as well as interline differences.
-
-    >>> def f(x):
-    ...     r'''
-    ...     >>> print "a b  c d e f g h i   j k l m"
-    ...     a b c d e f g h i j k 1 m
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> flags = doctest.REPORT_NDIFF
-    >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 3, in f
-    Failed example:
-        print "a b  c d e f g h i   j k l m"
-    Differences (ndiff with -expected +actual):
-        - a b c d e f g h i j k 1 m
-        ?                       ^
-        + a b  c d e f g h i   j k l m
-        ?     +              ++    ^
-    TestResults(failed=1, attempted=1)
-
-The REPORT_ONLY_FIRST_FAILURE suppresses result output after the first
-failing example:
-
-    >>> def f(x):
-    ...     r'''
-    ...     >>> print 1 # first success
-    ...     1
-    ...     >>> print 2 # first failure
-    ...     200
-    ...     >>> print 3 # second failure
-    ...     300
-    ...     >>> print 4 # second success
-    ...     4
-    ...     >>> print 5 # third failure
-    ...     500
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> flags = doctest.REPORT_ONLY_FIRST_FAILURE
-    >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 5, in f
-    Failed example:
-        print 2 # first failure
-    Expected:
-        200
-    Got:
-        2
-    TestResults(failed=3, attempted=5)
-
-However, output from `report_start` is not suppressed:
-
-    >>> doctest.DocTestRunner(verbose=True, optionflags=flags).run(test)
-    ... # doctest: +ELLIPSIS
-    Trying:
-        print 1 # first success
-    Expecting:
-        1
-    ok
-    Trying:
-        print 2 # first failure
-    Expecting:
-        200
-    **********************************************************************
-    File ..., line 5, in f
-    Failed example:
-        print 2 # first failure
-    Expected:
-        200
-    Got:
-        2
-    TestResults(failed=3, attempted=5)
-
-For the purposes of REPORT_ONLY_FIRST_FAILURE, unexpected exceptions
-count as failures:
-
-    >>> def f(x):
-    ...     r'''
-    ...     >>> print 1 # first success
-    ...     1
-    ...     >>> raise ValueError(2) # first failure
-    ...     200
-    ...     >>> print 3 # second failure
-    ...     300
-    ...     >>> print 4 # second success
-    ...     4
-    ...     >>> print 5 # third failure
-    ...     500
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> flags = doctest.REPORT_ONLY_FIRST_FAILURE
-    >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 5, in f
-    Failed example:
-        raise ValueError(2) # first failure
-    Exception raised:
-        ...
-        ValueError: 2
-    TestResults(failed=3, attempted=5)
-
-New option flags can also be registered, via register_optionflag().  Here
-we reach into doctest's internals a bit.
-
-    >>> unlikely = "UNLIKELY_OPTION_NAME"
-    >>> unlikely in doctest.OPTIONFLAGS_BY_NAME
-    False
-    >>> new_flag_value = doctest.register_optionflag(unlikely)
-    >>> unlikely in doctest.OPTIONFLAGS_BY_NAME
-    True
-
-Before 2.4.4/2.5, registering a name more than once erroneously created
-more than one flag value.  Here we verify that's fixed:
-
-    >>> redundant_flag_value = doctest.register_optionflag(unlikely)
-    >>> redundant_flag_value == new_flag_value
-    True
-
-Clean up.
-    >>> del doctest.OPTIONFLAGS_BY_NAME[unlikely]
-
-    """
-
-    def option_directives(): r"""
-Tests of `DocTestRunner`'s option directive mechanism.
-
-Option directives can be used to turn option flags on or off for a
-single example.  To turn an option on for an example, follow that
-example with a comment of the form ``# doctest: +OPTION``:
-
-    >>> def f(x): r'''
-    ...     >>> print range(10)       # should fail: no ellipsis
-    ...     [0, 1, ..., 9]
-    ...
-    ...     >>> print range(10)       # doctest: +ELLIPSIS
-    ...     [0, 1, ..., 9]
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 2, in f
-    Failed example:
-        print range(10)       # should fail: no ellipsis
-    Expected:
-        [0, 1, ..., 9]
-    Got:
-        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-    TestResults(failed=1, attempted=2)
-
-To turn an option off for an example, follow that example with a
-comment of the form ``# doctest: -OPTION``:
-
-    >>> def f(x): r'''
-    ...     >>> print range(10)
-    ...     [0, 1, ..., 9]
-    ...
-    ...     >>> # should fail: no ellipsis
-    ...     >>> print range(10)       # doctest: -ELLIPSIS
-    ...     [0, 1, ..., 9]
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False,
-    ...                       optionflags=doctest.ELLIPSIS).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 6, in f
-    Failed example:
-        print range(10)       # doctest: -ELLIPSIS
-    Expected:
-        [0, 1, ..., 9]
-    Got:
-        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-    TestResults(failed=1, attempted=2)
-
-Option directives affect only the example that they appear with; they
-do not change the options for surrounding examples:
-
-    >>> def f(x): r'''
-    ...     >>> print range(10)       # Should fail: no ellipsis
-    ...     [0, 1, ..., 9]
-    ...
-    ...     >>> print range(10)       # doctest: +ELLIPSIS
-    ...     [0, 1, ..., 9]
-    ...
-    ...     >>> print range(10)       # Should fail: no ellipsis
-    ...     [0, 1, ..., 9]
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 2, in f
-    Failed example:
-        print range(10)       # Should fail: no ellipsis
-    Expected:
-        [0, 1, ..., 9]
-    Got:
-        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-    **********************************************************************
-    File ..., line 8, in f
-    Failed example:
-        print range(10)       # Should fail: no ellipsis
-    Expected:
-        [0, 1, ..., 9]
-    Got:
-        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-    TestResults(failed=2, attempted=3)
-
-Multiple options may be modified by a single option directive.  They
-may be separated by whitespace, commas, or both:
-
-    >>> def f(x): r'''
-    ...     >>> print range(10)       # Should fail
-    ...     [0, 1,  ...,   9]
-    ...     >>> print range(10)       # Should succeed
-    ...     ... # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
-    ...     [0, 1,  ...,   9]
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 2, in f
-    Failed example:
-        print range(10)       # Should fail
-    Expected:
-        [0, 1,  ...,   9]
-    Got:
-        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-    TestResults(failed=1, attempted=2)
-
-    >>> def f(x): r'''
-    ...     >>> print range(10)       # Should fail
-    ...     [0, 1,  ...,   9]
-    ...     >>> print range(10)       # Should succeed
-    ...     ... # doctest: +ELLIPSIS,+NORMALIZE_WHITESPACE
-    ...     [0, 1,  ...,   9]
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 2, in f
-    Failed example:
-        print range(10)       # Should fail
-    Expected:
-        [0, 1,  ...,   9]
-    Got:
-        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-    TestResults(failed=1, attempted=2)
-
-    >>> def f(x): r'''
-    ...     >>> print range(10)       # Should fail
-    ...     [0, 1,  ...,   9]
-    ...     >>> print range(10)       # Should succeed
-    ...     ... # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE
-    ...     [0, 1,  ...,   9]
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File ..., line 2, in f
-    Failed example:
-        print range(10)       # Should fail
-    Expected:
-        [0, 1,  ...,   9]
-    Got:
-        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-    TestResults(failed=1, attempted=2)
-
-The option directive may be put on the line following the source, as
-long as a continuation prompt is used:
-
-    >>> def f(x): r'''
-    ...     >>> print range(10)
-    ...     ... # doctest: +ELLIPSIS
-    ...     [0, 1, ..., 9]
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    TestResults(failed=0, attempted=1)
-
-For examples with multi-line source, the option directive may appear
-at the end of any line:
-
-    >>> def f(x): r'''
-    ...     >>> for x in range(10): # doctest: +ELLIPSIS
-    ...     ...     print x,
-    ...     0 1 2 ... 9
-    ...
-    ...     >>> for x in range(10):
-    ...     ...     print x,        # doctest: +ELLIPSIS
-    ...     0 1 2 ... 9
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    TestResults(failed=0, attempted=2)
-
-If more than one line of an example with multi-line source has an
-option directive, then they are combined:
-
-    >>> def f(x): r'''
-    ...     Should fail (option directive not on the last line):
-    ...         >>> for x in range(10): # doctest: +ELLIPSIS
-    ...         ...     print x,        # doctest: +NORMALIZE_WHITESPACE
-    ...         0  1    2...9
-    ...     '''
-    >>> test = doctest.DocTestFinder().find(f)[0]
-    >>> doctest.DocTestRunner(verbose=False).run(test)
-    TestResults(failed=0, attempted=1)
-
-It is an error to have a comment of the form ``# doctest:`` that is
-*not* followed by words of the form ``+OPTION`` or ``-OPTION``, where
-``OPTION`` is an option that has been registered with
-`register_option`:
-
-    >>> # Error: Option not registered
-    >>> s = '>>> print 12   #doctest: +BADOPTION'
-    >>> test = doctest.DocTestParser().get_doctest(s, {}, 's', 's.py', 0)
-    Traceback (most recent call last):
-    ValueError: line 1 of the doctest for s has an invalid option: '+BADOPTION'
-
-    >>> # Error: No + or - prefix
-    >>> s = '>>> print 12   #doctest: ELLIPSIS'
-    >>> test = doctest.DocTestParser().get_doctest(s, {}, 's', 's.py', 0)
-    Traceback (most recent call last):
-    ValueError: line 1 of the doctest for s has an invalid option: 'ELLIPSIS'
-
-It is an error to use an option directive on a line that contains no
-source:
-
-    >>> s = '>>> # doctest: +ELLIPSIS'
-    >>> test = doctest.DocTestParser().get_doctest(s, {}, 's', 's.py', 0)
-    Traceback (most recent call last):
-    ValueError: line 0 of the doctest for s has an option directive on a line with no example: '# doctest: +ELLIPSIS'
-
-    """
-
-    def test_unicode_output(self): r"""
-
-Check that unicode output works:
-
-    >>> u'\xe9'
-    u'\xe9'
-
-If we return unicode, SpoofOut's buf variable becomes automagically
-converted to unicode. This means all subsequent output becomes converted
-to unicode, and if the output contains non-ascii characters that failed.
-It used to be that this state change carried on between tests, meaning
-tests would fail if unicode has been output previously in the testrun.
-This test tests that this is no longer so:
-
-    >>> print u'abc'
-    abc
-
-And then return a string with non-ascii characters:
-
-    >>> print u'\xe9'.encode('utf-8')
-    é
-
-    """
-
-
-def test_testsource(): r"""
-Unit tests for `testsource()`.
-
-The testsource() function takes a module and a name, finds the (first)
-test with that name in that module, and converts it to a script. The
-example code is converted to regular Python code.  The surrounding
-words and expected output are converted to comments:
-
-    >>> import test.test_doctest
-    >>> name = 'test.test_doctest.sample_func'
-    >>> print doctest.testsource(test.test_doctest, name)
-    # Blah blah
-    #
-    print sample_func(22)
-    # Expected:
-    ## 44
-    #
-    # Yee ha!
-    <BLANKLINE>
-
-    >>> name = 'test.test_doctest.SampleNewStyleClass'
-    >>> print doctest.testsource(test.test_doctest, name)
-    print '1\n2\n3'
-    # Expected:
-    ## 1
-    ## 2
-    ## 3
-    <BLANKLINE>
-
-    >>> name = 'test.test_doctest.SampleClass.a_classmethod'
-    >>> print doctest.testsource(test.test_doctest, name)
-    print SampleClass.a_classmethod(10)
-    # Expected:
-    ## 12
-    print SampleClass(0).a_classmethod(10)
-    # Expected:
-    ## 12
-    <BLANKLINE>
-"""
-
-def test_debug(): r"""
-
-Create a docstring that we want to debug:
-
-    >>> s = '''
-    ...     >>> x = 12
-    ...     >>> print x
-    ...     12
-    ...     '''
-
-Create some fake stdin input, to feed to the debugger:
-
-    >>> import tempfile
-    >>> real_stdin = sys.stdin
-    >>> sys.stdin = _FakeInput(['next', 'print x', 'continue'])
-
-Run the debugger on the docstring, and then restore sys.stdin.
-
-    >>> try: doctest.debug_src(s)
-    ... finally: sys.stdin = real_stdin
-    > <string>(1)<module>()
-    (Pdb) next
-    12
-    --Return--
-    > <string>(1)<module>()->None
-    (Pdb) print x
-    12
-    (Pdb) continue
-
-"""
-
-def test_pdb_set_trace():
-    """Using pdb.set_trace from a doctest.
-
-    You can use pdb.set_trace from a doctest.  To do so, you must
-    retrieve the set_trace function from the pdb module at the time
-    you use it.  The doctest module changes sys.stdout so that it can
-    capture program output.  It also temporarily replaces pdb.set_trace
-    with a version that restores stdout.  This is necessary for you to
-    see debugger output.
-
-      >>> doc = '''
-      ... >>> x = 42
-      ... >>> raise Exception('clé')
-      ... Traceback (most recent call last):
-      ... Exception: clé
-      ... >>> import pdb; pdb.set_trace()
-      ... '''
-      >>> parser = doctest.DocTestParser()
-      >>> test = parser.get_doctest(doc, {}, "foo-bär@baz", "foo-bär@baz.py", 0)
-      >>> runner = doctest.DocTestRunner(verbose=False)
-
-    To demonstrate this, we'll create a fake standard input that
-    captures our debugger input:
-
-      >>> import tempfile
-      >>> real_stdin = sys.stdin
-      >>> sys.stdin = _FakeInput([
-      ...    'print x',  # print data defined by the example
-      ...    'continue', # stop debugging
-      ...    ''])
-
-      >>> try: runner.run(test)
-      ... finally: sys.stdin = real_stdin
-      --Return--
-      > <doctest foo-bär@baz[2]>(1)<module>()->None
-      -> import pdb; pdb.set_trace()
-      (Pdb) print x
-      42
-      (Pdb) continue
-      TestResults(failed=0, attempted=3)
-
-      You can also put pdb.set_trace in a function called from a test:
-
-      >>> def calls_set_trace():
-      ...    y=2
-      ...    import pdb; pdb.set_trace()
-
-      >>> doc = '''
-      ... >>> x=1
-      ... >>> calls_set_trace()
-      ... '''
-      >>> test = parser.get_doctest(doc, globals(), "foo-bär@baz", "foo-bär@baz.py", 0)
-      >>> real_stdin = sys.stdin
-      >>> sys.stdin = _FakeInput([
-      ...    'print y',  # print data defined in the function
-      ...    'up',       # out of function
-      ...    'print x',  # print data defined by the example
-      ...    'continue', # stop debugging
-      ...    ''])
-
-      >>> try:
-      ...     runner.run(test)
-      ... finally:
-      ...     sys.stdin = real_stdin
-      --Return--
-      > <doctest test.test_doctest.test_pdb_set_trace[8]>(3)calls_set_trace()->None
-      -> import pdb; pdb.set_trace()
-      (Pdb) print y
-      2
-      (Pdb) up
-      > <doctest foo-bär@baz[1]>(1)<module>()
-      -> calls_set_trace()
-      (Pdb) print x
-      1
-      (Pdb) continue
-      TestResults(failed=0, attempted=2)
-
-    During interactive debugging, source code is shown, even for
-    doctest examples:
-
-      >>> doc = '''
-      ... >>> def f(x):
-      ... ...     g(x*2)
-      ... >>> def g(x):
-      ... ...     print x+3
-      ... ...     import pdb; pdb.set_trace()
-      ... >>> f(3)
-      ... '''
-      >>> test = parser.get_doctest(doc, globals(), "foo-bär@baz", "foo-bär@baz.py", 0)
-      >>> real_stdin = sys.stdin
-      >>> sys.stdin = _FakeInput([
-      ...    'list',     # list source from example 2
-      ...    'next',     # return from g()
-      ...    'list',     # list source from example 1
-      ...    'next',     # return from f()
-      ...    'list',     # list source from example 3
-      ...    'continue', # stop debugging
-      ...    ''])
-      >>> try: runner.run(test)
-      ... finally: sys.stdin = real_stdin
-      ... # doctest: +NORMALIZE_WHITESPACE
-      --Return--
-      > <doctest foo-bär@baz[1]>(3)g()->None
-      -> import pdb; pdb.set_trace()
-      (Pdb) list
-        1     def g(x):
-        2         print x+3
-        3  ->     import pdb; pdb.set_trace()
-      [EOF]
-      (Pdb) next
-      --Return--
-      > <doctest foo-bär@baz[0]>(2)f()->None
-      -> g(x*2)
-      (Pdb) list
-        1     def f(x):
-        2  ->     g(x*2)
-      [EOF]
-      (Pdb) next
-      --Return--
-      > <doctest foo-bär@baz[2]>(1)<module>()->None
-      -> f(3)
-      (Pdb) list
-        1  -> f(3)
-      [EOF]
-      (Pdb) continue
-      **********************************************************************
-      File "foo-bär@baz.py", line 7, in foo-bär@baz
-      Failed example:
-          f(3)
-      Expected nothing
-      Got:
-          9
-      TestResults(failed=1, attempted=3)
-      """
-
-def test_pdb_set_trace_nested():
-    """This illustrates more-demanding use of set_trace with nested functions.
-
-    >>> class C(object):
-    ...     def calls_set_trace(self):
-    ...         y = 1
-    ...         import pdb; pdb.set_trace()
-    ...         self.f1()
-    ...         y = 2
-    ...     def f1(self):
-    ...         x = 1
-    ...         self.f2()
-    ...         x = 2
-    ...     def f2(self):
-    ...         z = 1
-    ...         z = 2
-
-    >>> calls_set_trace = C().calls_set_trace
-
-    >>> doc = '''
-    ... >>> a = 1
-    ... >>> calls_set_trace()
-    ... '''
-    >>> parser = doctest.DocTestParser()
-    >>> runner = doctest.DocTestRunner(verbose=False)
-    >>> test = parser.get_doctest(doc, globals(), "foo-bär@baz", "foo-bär@baz.py", 0)
-    >>> real_stdin = sys.stdin
-    >>> sys.stdin = _FakeInput([
-    ...    'print y',  # print data defined in the function
-    ...    'step', 'step', 'step', 'step', 'step', 'step', 'print z',
-    ...    'up', 'print x',
-    ...    'up', 'print y',
-    ...    'up', 'print foo',
-    ...    'continue', # stop debugging
-    ...    ''])
-
-    >>> try:
-    ...     runner.run(test)
-    ... finally:
-    ...     sys.stdin = real_stdin
-    > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(5)calls_set_trace()
-    -> self.f1()
-    (Pdb) print y
-    1
-    (Pdb) step
-    --Call--
-    > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(7)f1()
-    -> def f1(self):
-    (Pdb) step
-    > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(8)f1()
-    -> x = 1
-    (Pdb) step
-    > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(9)f1()
-    -> self.f2()
-    (Pdb) step
-    --Call--
-    > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(11)f2()
-    -> def f2(self):
-    (Pdb) step
-    > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(12)f2()
-    -> z = 1
-    (Pdb) step
-    > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(13)f2()
-    -> z = 2
-    (Pdb) print z
-    1
-    (Pdb) up
-    > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(9)f1()
-    -> self.f2()
-    (Pdb) print x
-    1
-    (Pdb) up
-    > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(5)calls_set_trace()
-    -> self.f1()
-    (Pdb) print y
-    1
-    (Pdb) up
-    > <doctest foo-bär@baz[1]>(1)<module>()
-    -> calls_set_trace()
-    (Pdb) print foo
-    *** NameError: name 'foo' is not defined
-    (Pdb) continue
-    TestResults(failed=0, attempted=2)
-"""
-
-def test_DocTestSuite():
-    """DocTestSuite creates a unittest test suite from a doctest.
-
-       We create a Suite by providing a module.  A module can be provided
-       by passing a module object:
-
-         >>> import unittest
-         >>> import test.sample_doctest
-         >>> suite = doctest.DocTestSuite(test.sample_doctest)
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=9 errors=0 failures=4>
-
-       We can also supply the module by name:
-
-         >>> suite = doctest.DocTestSuite('test.sample_doctest')
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=9 errors=0 failures=4>
-
-       We can use the current module:
-
-         >>> suite = test.sample_doctest.test_suite()
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=9 errors=0 failures=4>
-
-       We can supply global variables.  If we pass globs, they will be
-       used instead of the module globals.  Here we'll pass an empty
-       globals, triggering an extra error:
-
-         >>> suite = doctest.DocTestSuite('test.sample_doctest', globs={})
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=9 errors=0 failures=5>
-
-       Alternatively, we can provide extra globals.  Here we'll make an
-       error go away by providing an extra global variable:
-
-         >>> suite = doctest.DocTestSuite('test.sample_doctest',
-         ...                              extraglobs={'y': 1})
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=9 errors=0 failures=3>
-
-       You can pass option flags.  Here we'll cause an extra error
-       by disabling the blank-line feature:
-
-         >>> suite = doctest.DocTestSuite('test.sample_doctest',
-         ...                      optionflags=doctest.DONT_ACCEPT_BLANKLINE)
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=9 errors=0 failures=5>
-
-       You can supply setUp and tearDown functions:
-
-         >>> def setUp(t):
-         ...     import test.test_doctest
-         ...     test.test_doctest.sillySetup = True
-
-         >>> def tearDown(t):
-         ...     import test.test_doctest
-         ...     del test.test_doctest.sillySetup
-
-       Here, we installed a silly variable that the test expects:
-
-         >>> suite = doctest.DocTestSuite('test.sample_doctest',
-         ...      setUp=setUp, tearDown=tearDown)
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=9 errors=0 failures=3>
-
-       But the tearDown restores sanity:
-
-         >>> import test.test_doctest
-         >>> test.test_doctest.sillySetup
-         Traceback (most recent call last):
-         ...
-         AttributeError: 'module' object has no attribute 'sillySetup'
-
-       The setUp and tearDown funtions are passed test objects. Here
-       we'll use the setUp function to supply the missing variable y:
-
-         >>> def setUp(test):
-         ...     test.globs['y'] = 1
-
-         >>> suite = doctest.DocTestSuite('test.sample_doctest', setUp=setUp)
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=9 errors=0 failures=3>
-
-       Here, we didn't need to use a tearDown function because we
-       modified the test globals, which are a copy of the
-       sample_doctest module dictionary.  The test globals are
-       automatically cleared for us after a test.
-       """
-
-def test_DocFileSuite():
-    """We can test tests found in text files using a DocFileSuite.
-
-       We create a suite by providing the names of one or more text
-       files that include examples:
-
-         >>> import unittest
-         >>> suite = doctest.DocFileSuite('test_doctest.txt',
-         ...                              'test_doctest2.txt',
-         ...                              'test_doctest4.txt')
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=3 errors=0 failures=3>
-
-       The test files are looked for in the directory containing the
-       calling module.  A package keyword argument can be provided to
-       specify a different relative location.
-
-         >>> import unittest
-         >>> suite = doctest.DocFileSuite('test_doctest.txt',
-         ...                              'test_doctest2.txt',
-         ...                              'test_doctest4.txt',
-         ...                              package='test')
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=3 errors=0 failures=3>
-
-       Support for using a package's __loader__.get_data() is also
-       provided.
-
-         >>> import unittest, pkgutil, test
-         >>> added_loader = False
-         >>> if not hasattr(test, '__loader__'):
-         ...     test.__loader__ = pkgutil.get_loader(test)
-         ...     added_loader = True
-         >>> try:
-         ...     suite = doctest.DocFileSuite('test_doctest.txt',
-         ...                                  'test_doctest2.txt',
-         ...                                  'test_doctest4.txt',
-         ...                                  package='test')
-         ...     suite.run(unittest.TestResult())
-         ... finally:
-         ...     if added_loader:
-         ...         del test.__loader__
-         <unittest.result.TestResult run=3 errors=0 failures=3>
-
-       '/' should be used as a path separator.  It will be converted
-       to a native separator at run time:
-
-         >>> suite = doctest.DocFileSuite('../test/test_doctest.txt')
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=1 errors=0 failures=1>
-
-       If DocFileSuite is used from an interactive session, then files
-       are resolved relative to the directory of sys.argv[0]:
-
-         >>> import types, os.path, test.test_doctest
-         >>> save_argv = sys.argv
-         >>> sys.argv = [test.test_doctest.__file__]
-         >>> suite = doctest.DocFileSuite('test_doctest.txt',
-         ...                              package=types.ModuleType('__main__'))
-         >>> sys.argv = save_argv
-
-       By setting `module_relative=False`, os-specific paths may be
-       used (including absolute paths and paths relative to the
-       working directory):
-
-         >>> # Get the absolute path of the test package.
-         >>> test_doctest_path = os.path.abspath(test.test_doctest.__file__)
-         >>> test_pkg_path = os.path.split(test_doctest_path)[0]
-
-         >>> # Use it to find the absolute path of test_doctest.txt.
-         >>> test_file = os.path.join(test_pkg_path, 'test_doctest.txt')
-
-         >>> suite = doctest.DocFileSuite(test_file, module_relative=False)
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=1 errors=0 failures=1>
-
-       It is an error to specify `package` when `module_relative=False`:
-
-         >>> suite = doctest.DocFileSuite(test_file, module_relative=False,
-         ...                              package='test')
-         Traceback (most recent call last):
-         ValueError: Package may only be specified for module-relative paths.
-
-       You can specify initial global variables:
-
-         >>> suite = doctest.DocFileSuite('test_doctest.txt',
-         ...                              'test_doctest2.txt',
-         ...                              'test_doctest4.txt',
-         ...                              globs={'favorite_color': 'blue'})
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=3 errors=0 failures=2>
-
-       In this case, we supplied a missing favorite color. You can
-       provide doctest options:
-
-         >>> suite = doctest.DocFileSuite('test_doctest.txt',
-         ...                              'test_doctest2.txt',
-         ...                              'test_doctest4.txt',
-         ...                         optionflags=doctest.DONT_ACCEPT_BLANKLINE,
-         ...                              globs={'favorite_color': 'blue'})
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=3 errors=0 failures=3>
-
-       And, you can provide setUp and tearDown functions:
-
-         >>> def setUp(t):
-         ...     import test.test_doctest
-         ...     test.test_doctest.sillySetup = True
-
-         >>> def tearDown(t):
-         ...     import test.test_doctest
-         ...     del test.test_doctest.sillySetup
-
-       Here, we installed a silly variable that the test expects:
-
-         >>> suite = doctest.DocFileSuite('test_doctest.txt',
-         ...                              'test_doctest2.txt',
-         ...                              'test_doctest4.txt',
-         ...                              setUp=setUp, tearDown=tearDown)
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=3 errors=0 failures=2>
-
-       But the tearDown restores sanity:
-
-         >>> import test.test_doctest
-         >>> test.test_doctest.sillySetup
-         Traceback (most recent call last):
-         ...
-         AttributeError: 'module' object has no attribute 'sillySetup'
-
-       The setUp and tearDown funtions are passed test objects.
-       Here, we'll use a setUp function to set the favorite color in
-       test_doctest.txt:
-
-         >>> def setUp(test):
-         ...     test.globs['favorite_color'] = 'blue'
-
-         >>> suite = doctest.DocFileSuite('test_doctest.txt', setUp=setUp)
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=1 errors=0 failures=0>
-
-       Here, we didn't need to use a tearDown function because we
-       modified the test globals.  The test globals are
-       automatically cleared for us after a test.
-
-       Tests in a file run using `DocFileSuite` can also access the
-       `__file__` global, which is set to the name of the file
-       containing the tests:
-
-         >>> suite = doctest.DocFileSuite('test_doctest3.txt')
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=1 errors=0 failures=0>
-
-       If the tests contain non-ASCII characters, we have to specify which
-       encoding the file is encoded with. We do so by using the `encoding`
-       parameter:
-
-         >>> suite = doctest.DocFileSuite('test_doctest.txt',
-         ...                              'test_doctest2.txt',
-         ...                              'test_doctest4.txt',
-         ...                              encoding='utf-8')
-         >>> suite.run(unittest.TestResult())
-         <unittest.result.TestResult run=3 errors=0 failures=2>
-
-       """
-
-def test_trailing_space_in_test():
-    """
-    Trailing spaces in expected output are significant:
-
-      >>> x, y = 'foo', ''
-      >>> print x, y
-      foo \n
-    """
-
-
-def test_unittest_reportflags():
-    """Default unittest reporting flags can be set to control reporting
-
-    Here, we'll set the REPORT_ONLY_FIRST_FAILURE option so we see
-    only the first failure of each test.  First, we'll look at the
-    output without the flag.  The file test_doctest.txt file has two
-    tests. They both fail if blank lines are disabled:
-
-      >>> suite = doctest.DocFileSuite('test_doctest.txt',
-      ...                          optionflags=doctest.DONT_ACCEPT_BLANKLINE)
-      >>> import unittest
-      >>> result = suite.run(unittest.TestResult())
-      >>> print result.failures[0][1] # doctest: +ELLIPSIS
-      Traceback ...
-      Failed example:
-          favorite_color
-      ...
-      Failed example:
-          if 1:
-      ...
-
-    Note that we see both failures displayed.
-
-      >>> old = doctest.set_unittest_reportflags(
-      ...    doctest.REPORT_ONLY_FIRST_FAILURE)
-
-    Now, when we run the test:
-
-      >>> result = suite.run(unittest.TestResult())
-      >>> print result.failures[0][1] # doctest: +ELLIPSIS
-      Traceback ...
-      Failed example:
-          favorite_color
-      Exception raised:
-          ...
-          NameError: name 'favorite_color' is not defined
-      <BLANKLINE>
-      <BLANKLINE>
-
-    We get only the first failure.
-
-    If we give any reporting options when we set up the tests,
-    however:
-
-      >>> suite = doctest.DocFileSuite('test_doctest.txt',
-      ...     optionflags=doctest.DONT_ACCEPT_BLANKLINE | doctest.REPORT_NDIFF)
-
-    Then the default eporting options are ignored:
-
-      >>> result = suite.run(unittest.TestResult())
-      >>> print result.failures[0][1] # doctest: +ELLIPSIS
-      Traceback ...
-      Failed example:
-          favorite_color
-      ...
-      Failed example:
-          if 1:
-             print 'a'
-             print
-             print 'b'
-      Differences (ndiff with -expected +actual):
-            a
-          - <BLANKLINE>
-          +
-            b
-      <BLANKLINE>
-      <BLANKLINE>
-
-
-    Test runners can restore the formatting flags after they run:
-
-      >>> ignored = doctest.set_unittest_reportflags(old)
-
-    """
-
-def test_testfile(): r"""
-Tests for the `testfile()` function.  This function runs all the
-doctest examples in a given file.  In its simple invokation, it is
-called with the name of a file, which is taken to be relative to the
-calling module.  The return value is (#failures, #tests).
-
-We don't want `-v` in sys.argv for these tests.
-
-    >>> save_argv = sys.argv
-    >>> if '-v' in sys.argv:
-    ...     sys.argv = [arg for arg in save_argv if arg != '-v']
-
-
-    >>> doctest.testfile('test_doctest.txt') # doctest: +ELLIPSIS
-    **********************************************************************
-    File "...", line 6, in test_doctest.txt
-    Failed example:
-        favorite_color
-    Exception raised:
-        ...
-        NameError: name 'favorite_color' is not defined
-    **********************************************************************
-    1 items had failures:
-       1 of   2 in test_doctest.txt
-    ***Test Failed*** 1 failures.
-    TestResults(failed=1, attempted=2)
-    >>> doctest.master = None  # Reset master.
-
-(Note: we'll be clearing doctest.master after each call to
-`doctest.testfile`, to suppress warnings about multiple tests with the
-same name.)
-
-Globals may be specified with the `globs` and `extraglobs` parameters:
-
-    >>> globs = {'favorite_color': 'blue'}
-    >>> doctest.testfile('test_doctest.txt', globs=globs)
-    TestResults(failed=0, attempted=2)
-    >>> doctest.master = None  # Reset master.
-
-    >>> extraglobs = {'favorite_color': 'red'}
-    >>> doctest.testfile('test_doctest.txt', globs=globs,
-    ...                  extraglobs=extraglobs) # doctest: +ELLIPSIS
-    **********************************************************************
-    File "...", line 6, in test_doctest.txt
-    Failed example:
-        favorite_color
-    Expected:
-        'blue'
-    Got:
-        'red'
-    **********************************************************************
-    1 items had failures:
-       1 of   2 in test_doctest.txt
-    ***Test Failed*** 1 failures.
-    TestResults(failed=1, attempted=2)
-    >>> doctest.master = None  # Reset master.
-
-The file may be made relative to a given module or package, using the
-optional `module_relative` parameter:
-
-    >>> doctest.testfile('test_doctest.txt', globs=globs,
-    ...                  module_relative='test')
-    TestResults(failed=0, attempted=2)
-    >>> doctest.master = None  # Reset master.
-
-Verbosity can be increased with the optional `verbose` parameter:
-
-    >>> doctest.testfile('test_doctest.txt', globs=globs, verbose=True)
-    Trying:
-        favorite_color
-    Expecting:
-        'blue'
-    ok
-    Trying:
-        if 1:
-           print 'a'
-           print
-           print 'b'
-    Expecting:
-        a
-        <BLANKLINE>
-        b
-    ok
-    1 items passed all tests:
-       2 tests in test_doctest.txt
-    2 tests in 1 items.
-    2 passed and 0 failed.
-    Test passed.
-    TestResults(failed=0, attempted=2)
-    >>> doctest.master = None  # Reset master.
-
-The name of the test may be specified with the optional `name`
-parameter:
-
-    >>> doctest.testfile('test_doctest.txt', name='newname')
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File "...", line 6, in newname
-    ...
-    TestResults(failed=1, attempted=2)
-    >>> doctest.master = None  # Reset master.
-
-The summary report may be suppressed with the optional `report`
-parameter:
-
-    >>> doctest.testfile('test_doctest.txt', report=False)
-    ... # doctest: +ELLIPSIS
-    **********************************************************************
-    File "...", line 6, in test_doctest.txt
-    Failed example:
-        favorite_color
-    Exception raised:
-        ...
-        NameError: name 'favorite_color' is not defined
-    TestResults(failed=1, attempted=2)
-    >>> doctest.master = None  # Reset master.
-
-The optional keyword argument `raise_on_error` can be used to raise an
-exception on the first error (which may be useful for postmortem
-debugging):
-
-    >>> doctest.testfile('test_doctest.txt', raise_on_error=True)
-    ... # doctest: +ELLIPSIS
-    Traceback (most recent call last):
-    UnexpectedException: ...
-    >>> doctest.master = None  # Reset master.
-
-If the tests contain non-ASCII characters, the tests might fail, since
-it's unknown which encoding is used. The encoding can be specified
-using the optional keyword argument `encoding`:
-
-    >>> doctest.testfile('test_doctest4.txt') # doctest: +ELLIPSIS
-    **********************************************************************
-    File "...", line 7, in test_doctest4.txt
-    Failed example:
-        u'...'
-    Expected:
-        u'f\xf6\xf6'
-    Got:
-        u'f\xc3\xb6\xc3\xb6'
-    **********************************************************************
-    ...
-    **********************************************************************
-    1 items had failures:
-       2 of   4 in test_doctest4.txt
-    ***Test Failed*** 2 failures.
-    TestResults(failed=2, attempted=4)
-    >>> doctest.master = None  # Reset master.
-
-    >>> doctest.testfile('test_doctest4.txt', encoding='utf-8')
-    TestResults(failed=0, attempted=4)
-    >>> doctest.master = None  # Reset master.
-
-Switch the module encoding to 'utf-8' to test the verbose output without
-bothering with the current sys.stdout encoding.
-
-    >>> doctest._encoding, saved_encoding = 'utf-8', doctest._encoding
-    >>> doctest.testfile('test_doctest4.txt', encoding='utf-8', verbose=True)
-    Trying:
-        u'föö'
-    Expecting:
-        u'f\xf6\xf6'
-    ok
-    Trying:
-        u'bÄ…r'
-    Expecting:
-        u'b\u0105r'
-    ok
-    Trying:
-        'föö'
-    Expecting:
-        'f\xc3\xb6\xc3\xb6'
-    ok
-    Trying:
-        'bÄ…r'
-    Expecting:
-        'b\xc4\x85r'
-    ok
-    1 items passed all tests:
-       4 tests in test_doctest4.txt
-    4 tests in 1 items.
-    4 passed and 0 failed.
-    Test passed.
-    TestResults(failed=0, attempted=4)
-    >>> doctest._encoding = saved_encoding
-    >>> doctest.master = None  # Reset master.
-    >>> sys.argv = save_argv
-"""
-
-# old_test1, ... used to live in doctest.py, but cluttered it.  Note
-# that these use the deprecated doctest.Tester, so should go away (or
-# be rewritten) someday.
-
-def old_test1(): r"""
->>> from doctest import Tester
->>> t = Tester(globs={'x': 42}, verbose=0)
->>> t.runstring(r'''
-...      >>> x = x * 2
-...      >>> print x
-...      42
-... ''', 'XYZ')
-**********************************************************************
-Line 3, in XYZ
-Failed example:
-    print x
-Expected:
-    42
-Got:
-    84
-TestResults(failed=1, attempted=2)
->>> t.runstring(">>> x = x * 2\n>>> print x\n84\n", 'example2')
-TestResults(failed=0, attempted=2)
->>> t.summarize()
-**********************************************************************
-1 items had failures:
-   1 of   2 in XYZ
-***Test Failed*** 1 failures.
-TestResults(failed=1, attempted=4)
->>> t.summarize(verbose=1)
-1 items passed all tests:
-   2 tests in example2
-**********************************************************************
-1 items had failures:
-   1 of   2 in XYZ
-4 tests in 2 items.
-3 passed and 1 failed.
-***Test Failed*** 1 failures.
-TestResults(failed=1, attempted=4)
-"""
-
-def old_test2(): r"""
-        >>> from doctest import Tester
-        >>> t = Tester(globs={}, verbose=1)
-        >>> test = r'''
-        ...    # just an example
-        ...    >>> x = 1 + 2
-        ...    >>> x
-        ...    3
-        ... '''
-        >>> t.runstring(test, "Example")
-        Running string Example
-        Trying:
-            x = 1 + 2
-        Expecting nothing
-        ok
-        Trying:
-            x
-        Expecting:
-            3
-        ok
-        0 of 2 examples failed in string Example
-        TestResults(failed=0, attempted=2)
-"""
-
-def old_test3(): r"""
-        >>> from doctest import Tester
-        >>> t = Tester(globs={}, verbose=0)
-        >>> def _f():
-        ...     '''Trivial docstring example.
-        ...     >>> assert 2 == 2
-        ...     '''
-        ...     return 32
-        ...
-        >>> t.rundoc(_f)  # expect 0 failures in 1 example
-        TestResults(failed=0, attempted=1)
-"""
-
-def old_test4(): """
-        >>> import types
-        >>> m1 = types.ModuleType('_m1')
-        >>> m2 = types.ModuleType('_m2')
-        >>> test_data = \"""
-        ... def _f():
-        ...     '''>>> assert 1 == 1
-        ...     '''
-        ... def g():
-        ...    '''>>> assert 2 != 1
-        ...    '''
-        ... class H:
-        ...    '''>>> assert 2 > 1
-        ...    '''
-        ...    def bar(self):
-        ...        '''>>> assert 1 < 2
-        ...        '''
-        ... \"""
-        >>> exec test_data in m1.__dict__
-        >>> exec test_data in m2.__dict__
-        >>> m1.__dict__.update({"f2": m2._f, "g2": m2.g, "h2": m2.H})
-
-        Tests that objects outside m1 are excluded:
-
-        >>> from doctest import Tester
-        >>> t = Tester(globs={}, verbose=0)
-        >>> t.rundict(m1.__dict__, "rundict_test", m1)  # f2 and g2 and h2 skipped
-        TestResults(failed=0, attempted=4)
-
-        Once more, not excluding stuff outside m1:
-
-        >>> t = Tester(globs={}, verbose=0)
-        >>> t.rundict(m1.__dict__, "rundict_test_pvt")  # None are skipped.
-        TestResults(failed=0, attempted=8)
-
-        The exclusion of objects from outside the designated module is
-        meant to be invoked automagically by testmod.
-
-        >>> doctest.testmod(m1, verbose=False)
-        TestResults(failed=0, attempted=4)
-"""
-
-######################################################################
-## Main
-######################################################################
-
-def test_main():
-    # Check the doctest cases in doctest itself:
-    test_support.run_doctest(doctest, verbosity=True)
-
-    from test import test_doctest
-
-    # Ignore all warnings about the use of class Tester in this module.
-    deprecations = [("class Tester is deprecated", DeprecationWarning)]
-    if sys.py3kwarning:
-        deprecations += [("backquote not supported", SyntaxWarning),
-                         ("execfile.. not supported", DeprecationWarning)]
-    with test_support.check_warnings(*deprecations):
-        # Check the doctest cases defined here:
-        test_support.run_doctest(test_doctest, verbosity=True)
-
-import sys
-def test_coverage(coverdir):
-    trace = test_support.import_module('trace')
-    tracer = trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix,],
-                         trace=0, count=1)
-    tracer.run('reload(doctest); test_main()')
-    r = tracer.results()
-    print 'Writing coverage results...'
-    r.write_results(show_missing=True, summary=True,
-                    coverdir=coverdir)
-
-if __name__ == '__main__':
-    if '-c' in sys.argv:
-        test_coverage('/tmp/doctest.cover')
-    else:
-        test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest.txt
deleted file mode 100644
index 8946dc4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-This is a sample doctest in a text file.
-
-In this example, we'll rely on a global variable being set for us
-already:
-
-  >>> favorite_color
-  'blue'
-
-We can make this fail by disabling the blank-line feature.
-
-  >>> if 1:
-  ...    print 'a'
-  ...    print
-  ...    print 'b'
-  a
-  <BLANKLINE>
-  b
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest2.py
deleted file mode 100644
index 70ff321..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest2.py
+++ /dev/null
@@ -1,124 +0,0 @@
-# -*- coding: utf-8 -*-
-u"""A module to test whether doctest recognizes some 2.2 features,
-like static and class methods.
-
->>> print 'yup'  # 1
-yup
-
-We include some (random) encoded (utf-8) text in the text surrounding
-the example.  It should be ignored:
-
-ЉЊЈЁЂ
-
-"""
-
-import sys
-import unittest
-from test import test_support
-if sys.flags.optimize >= 2:
-    raise unittest.SkipTest("Cannot test docstrings with -O2")
-
-class C(object):
-    u"""Class C.
-
-    >>> print C()  # 2
-    42
-
-
-    We include some (random) encoded (utf-8) text in the text surrounding
-    the example.  It should be ignored:
-
-        ЉЊЈЁЂ
-
-    """
-
-    def __init__(self):
-        """C.__init__.
-
-        >>> print C() # 3
-        42
-        """
-
-    def __str__(self):
-        """
-        >>> print C() # 4
-        42
-        """
-        return "42"
-
-    class D(object):
-        """A nested D class.
-
-        >>> print "In D!"   # 5
-        In D!
-        """
-
-        def nested(self):
-            """
-            >>> print 3 # 6
-            3
-            """
-
-    def getx(self):
-        """
-        >>> c = C()    # 7
-        >>> c.x = 12   # 8
-        >>> print c.x  # 9
-        -12
-        """
-        return -self._x
-
-    def setx(self, value):
-        """
-        >>> c = C()     # 10
-        >>> c.x = 12    # 11
-        >>> print c.x   # 12
-        -12
-        """
-        self._x = value
-
-    x = property(getx, setx, doc="""\
-        >>> c = C()    # 13
-        >>> c.x = 12   # 14
-        >>> print c.x  # 15
-        -12
-        """)
-
-    @staticmethod
-    def statm():
-        """
-        A static method.
-
-        >>> print C.statm()    # 16
-        666
-        >>> print C().statm()  # 17
-        666
-        """
-        return 666
-
-    @classmethod
-    def clsm(cls, val):
-        """
-        A class method.
-
-        >>> print C.clsm(22)    # 18
-        22
-        >>> print C().clsm(23)  # 19
-        23
-        """
-        return val
-
-def test_main():
-    from test import test_doctest2
-    EXPECTED = 19
-    f, t = test_support.run_doctest(test_doctest2)
-    if t != EXPECTED:
-        raise test_support.TestFailed("expected %d tests to run, not %d" %
-                                      (EXPECTED, t))
-
-# Pollute the namespace with a bunch of imported functions and classes,
-# to make sure they don't get tested.
-from doctest import *
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest2.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest2.txt
deleted file mode 100644
index 7e358cc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest2.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-This is a sample doctest in a text file.
-
-In this example, we'll rely on some silly setup:
-
-  >>> import test.test_doctest
-  >>> test.test_doctest.sillySetup
-  True
-
-This test also has some (random) encoded (utf-8) unicode text:
-
-  ЉЊЈЁЂ
-
-This doesn't cause a problem in the tect surrounding the examples, but
-we include it here (in this test text file) to make sure. :)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest3.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest3.txt
deleted file mode 100644
index 85c3978..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest3.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Here we check that `__file__` is provided:
-
-  >>> type(__file__)
-  <type 'str'>
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest4.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest4.txt
deleted file mode 100644
index c58db75..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_doctest4.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-This is a sample doctest in a text file that contains non-ASCII characters.
-This file is encoded using UTF-8.
-
-In order to get this test to pass, we have to manually specify the
-encoding.
-
-  >>> u'föö'
-  u'f\xf6\xf6'
-
-  >>> u'bÄ…r'
-  u'b\u0105r'
-
-  >>> 'föö'
-  'f\xc3\xb6\xc3\xb6'
-
-  >>> 'bÄ…r'
-  'b\xc4\x85r'
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_docxmlrpc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_docxmlrpc.py
deleted file mode 100644
index 4e595c5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_docxmlrpc.py
+++ /dev/null
@@ -1,201 +0,0 @@
-from DocXMLRPCServer import DocXMLRPCServer
-import httplib
-import sys
-from test import test_support
-threading = test_support.import_module('threading')
-import time
-import socket
-import unittest
-
-PORT = None
-
-def make_request_and_skipIf(condition, reason):
-    # If we skip the test, we have to make a request because the
-    # the server created in setUp blocks expecting one to come in.
-    if not condition:
-        return lambda func: func
-    def decorator(func):
-        def make_request_and_skip(self):
-            self.client.request("GET", "/")
-            self.client.getresponse()
-            raise unittest.SkipTest(reason)
-        return make_request_and_skip
-    return decorator
-
-
-def server(evt, numrequests):
-    serv = DocXMLRPCServer(("localhost", 0), logRequests=False)
-
-    try:
-        global PORT
-        PORT = serv.socket.getsockname()[1]
-
-        # Add some documentation
-        serv.set_server_title("DocXMLRPCServer Test Documentation")
-        serv.set_server_name("DocXMLRPCServer Test Docs")
-        serv.set_server_documentation(
-            "This is an XML-RPC server's documentation, but the server "
-            "can be used by POSTing to /RPC2. Try self.add, too.")
-
-        # Create and register classes and functions
-        class TestClass(object):
-            def test_method(self, arg):
-                """Test method's docs. This method truly does very little."""
-                self.arg = arg
-
-        serv.register_introspection_functions()
-        serv.register_instance(TestClass())
-
-        def add(x, y):
-            """Add two instances together. This follows PEP008, but has nothing
-            to do with RFC1952. Case should matter: pEp008 and rFC1952.  Things
-            that start with http and ftp should be auto-linked, too:
-            http://google.com.
-            """
-            return x + y
-
-        serv.register_function(add)
-        serv.register_function(lambda x, y: x-y)
-
-        while numrequests > 0:
-            serv.handle_request()
-            numrequests -= 1
-    except socket.timeout:
-        pass
-    finally:
-        serv.server_close()
-        PORT = None
-        evt.set()
-
-class DocXMLRPCHTTPGETServer(unittest.TestCase):
-    def setUp(self):
-        self._threads = test_support.threading_setup()
-        # Enable server feedback
-        DocXMLRPCServer._send_traceback_header = True
-
-        self.evt = threading.Event()
-        threading.Thread(target=server, args=(self.evt, 1)).start()
-
-        # wait for port to be assigned
-        n = 1000
-        while n > 0 and PORT is None:
-            time.sleep(0.001)
-            n -= 1
-
-        self.client = httplib.HTTPConnection("localhost:%d" % PORT)
-
-    def tearDown(self):
-        self.client.close()
-
-        self.evt.wait()
-
-        # Disable server feedback
-        DocXMLRPCServer._send_traceback_header = False
-        test_support.threading_cleanup(*self._threads)
-
-    def test_valid_get_response(self):
-        self.client.request("GET", "/")
-        response = self.client.getresponse()
-
-        self.assertEqual(response.status, 200)
-        self.assertEqual(response.getheader("Content-type"), "text/html")
-
-        # Server throws an exception if we don't start to read the data
-        response.read()
-
-    def test_invalid_get_response(self):
-        self.client.request("GET", "/spam")
-        response = self.client.getresponse()
-
-        self.assertEqual(response.status, 404)
-        self.assertEqual(response.getheader("Content-type"), "text/plain")
-
-        response.read()
-
-    def test_lambda(self):
-        """Test that lambda functionality stays the same.  The output produced
-        currently is, I suspect invalid because of the unencoded brackets in the
-        HTML, "<lambda>".
-
-        The subtraction lambda method is tested.
-        """
-        self.client.request("GET", "/")
-        response = self.client.getresponse()
-
-        self.assertIn('<dl><dt><a name="-&lt;lambda&gt;"><strong>'
-                      '&lt;lambda&gt;</strong></a>(x, y)</dt></dl>',
-                      response.read())
-
-    @make_request_and_skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_autolinking(self):
-        """Test that the server correctly automatically wraps references to
-        PEPS and RFCs with links, and that it linkifies text starting with
-        http or ftp protocol prefixes.
-
-        The documentation for the "add" method contains the test material.
-        """
-        self.client.request("GET", "/")
-        response = self.client.getresponse()
-
-        self.assertIn(
-            ('<dl><dt><a name="-add"><strong>add</strong></a>(x, y)</dt><dd>'
-             '<tt>Add&nbsp;two&nbsp;instances&nbsp;together.&nbsp;This&nbsp;'
-             'follows&nbsp;<a href="http://www.python.org/dev/peps/pep-0008/">'
-             'PEP008</a>,&nbsp;but&nbsp;has&nbsp;nothing<br>\nto&nbsp;do&nbsp;'
-             'with&nbsp;<a href="http://www.rfc-editor.org/rfc/rfc1952.txt">'
-             'RFC1952</a>.&nbsp;Case&nbsp;should&nbsp;matter:&nbsp;pEp008&nbsp;'
-             'and&nbsp;rFC1952.&nbsp;&nbsp;Things<br>\nthat&nbsp;start&nbsp;'
-             'with&nbsp;http&nbsp;and&nbsp;ftp&nbsp;should&nbsp;be&nbsp;'
-             'auto-linked,&nbsp;too:<br>\n<a href="http://google.com">'
-             'http://google.com</a>.</tt></dd></dl>'), response.read())
-
-    @make_request_and_skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_system_methods(self):
-        """Test the precense of three consecutive system.* methods.
-
-        This also tests their use of parameter type recognition and the
-        systems related to that process.
-        """
-        self.client.request("GET", "/")
-        response = self.client.getresponse()
-
-        self.assertIn(
-            ('<dl><dt><a name="-system.listMethods"><strong>system.listMethods'
-             '</strong></a>()</dt><dd><tt><a href="#-system.listMethods">system'
-             '.listMethods</a>()&nbsp;=&gt;&nbsp;[\'add\',&nbsp;\'subtract\','
-             '&nbsp;\'multiple\']<br>\n&nbsp;<br>\nReturns&nbsp;a&nbsp;list'
-             '&nbsp;of&nbsp;the&nbsp;methods&nbsp;supported&nbsp;by&nbsp;the'
-             '&nbsp;server.</tt></dd></dl>\n <dl><dt><a name="-system.methodHelp">'
-             '<strong>system.methodHelp</strong></a>(method_name)</dt><dd><tt>'
-             '<a href="#-system.methodHelp">system.methodHelp</a>(\'add\')&nbsp;'
-             '=&gt;&nbsp;"Adds&nbsp;two&nbsp;integers&nbsp;together"<br>\n&nbsp;'
-             '<br>\nReturns&nbsp;a&nbsp;string&nbsp;containing&nbsp;documentation'
-             '&nbsp;for&nbsp;the&nbsp;specified&nbsp;method.</tt></dd></dl>\n '
-             '<dl><dt><a name="-system.methodSignature"><strong>system.'
-             'methodSignature</strong></a>(method_name)</dt><dd><tt><a href="#-'
-             'system.methodSignature">system.methodSignature</a>(\'add\')&nbsp;'
-             '=&gt;&nbsp;[double,&nbsp;int,&nbsp;int]<br>\n&nbsp;<br>\nReturns'
-             '&nbsp;a&nbsp;list&nbsp;describing&nbsp;the&nbsp;signature&nbsp;of'
-             '&nbsp;the&nbsp;method.&nbsp;In&nbsp;the<br>\nabove&nbsp;example,'
-             '&nbsp;the&nbsp;add&nbsp;method&nbsp;takes&nbsp;two&nbsp;integers'
-             '&nbsp;as&nbsp;arguments<br>\nand&nbsp;returns&nbsp;a&nbsp;double'
-             '&nbsp;result.<br>\n&nbsp;<br>\nThis&nbsp;server&nbsp;does&nbsp;'
-             'NOT&nbsp;support&nbsp;system.methodSignature.</tt></dd></dl>'),
-            response.read())
-
-    def test_autolink_dotted_methods(self):
-        """Test that selfdot values are made strong automatically in the
-        documentation."""
-        self.client.request("GET", "/")
-        response = self.client.getresponse()
-
-        self.assertIn("""Try&nbsp;self.<strong>add</strong>,&nbsp;too.""",
-                      response.read())
-
-def test_main():
-    test_support.run_unittest(DocXMLRPCHTTPGETServer)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dumbdbm.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dumbdbm.py
deleted file mode 100644
index 142f778..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dumbdbm.py
+++ /dev/null
@@ -1,179 +0,0 @@
-#! /usr/bin/env python
-"""Test script for the dumbdbm module
-   Original by Roger E. Masse
-"""
-
-import os
-import unittest
-import dumbdbm
-from test import test_support
-
-_fname = test_support.TESTFN
-
-def _delete_files():
-    for ext in [".dir", ".dat", ".bak"]:
-        try:
-            os.unlink(_fname + ext)
-        except OSError:
-            pass
-
-class DumbDBMTestCase(unittest.TestCase):
-    _dict = {'0': '',
-             'a': 'Python:',
-             'b': 'Programming',
-             'c': 'the',
-             'd': 'way',
-             'f': 'Guido',
-             'g': 'intended'
-             }
-
-    def __init__(self, *args):
-        unittest.TestCase.__init__(self, *args)
-
-    def test_dumbdbm_creation(self):
-        f = dumbdbm.open(_fname, 'c')
-        self.assertEqual(f.keys(), [])
-        for key in self._dict:
-            f[key] = self._dict[key]
-        self.read_helper(f)
-        f.close()
-
-    def test_dumbdbm_creation_mode(self):
-        # On platforms without chmod, don't do anything.
-        if not (hasattr(os, 'chmod') and hasattr(os, 'umask')):
-            return
-
-        try:
-            old_umask = os.umask(0002)
-            f = dumbdbm.open(_fname, 'c', 0637)
-            f.close()
-        finally:
-            os.umask(old_umask)
-
-        expected_mode = 0635
-        if os.name != 'posix':
-            # Windows only supports setting the read-only attribute.
-            # This shouldn't fail, but doesn't work like Unix either.
-            expected_mode = 0666
-
-        import stat
-        st = os.stat(_fname + '.dat')
-        self.assertEqual(stat.S_IMODE(st.st_mode), expected_mode)
-        st = os.stat(_fname + '.dir')
-        self.assertEqual(stat.S_IMODE(st.st_mode), expected_mode)
-
-    def test_close_twice(self):
-        f = dumbdbm.open(_fname)
-        f['a'] = 'b'
-        self.assertEqual(f['a'], 'b')
-        f.close()
-        f.close()
-
-    def test_dumbdbm_modification(self):
-        self.init_db()
-        f = dumbdbm.open(_fname, 'w')
-        self._dict['g'] = f['g'] = "indented"
-        self.read_helper(f)
-        f.close()
-
-    def test_dumbdbm_read(self):
-        self.init_db()
-        f = dumbdbm.open(_fname, 'r')
-        self.read_helper(f)
-        f.close()
-
-    def test_dumbdbm_keys(self):
-        self.init_db()
-        f = dumbdbm.open(_fname)
-        keys = self.keys_helper(f)
-        f.close()
-
-    def test_write_write_read(self):
-        # test for bug #482460
-        f = dumbdbm.open(_fname)
-        f['1'] = 'hello'
-        f['1'] = 'hello2'
-        f.close()
-        f = dumbdbm.open(_fname)
-        self.assertEqual(f['1'], 'hello2')
-        f.close()
-
-    def test_line_endings(self):
-        # test for bug #1172763: dumbdbm would die if the line endings
-        # weren't what was expected.
-        f = dumbdbm.open(_fname)
-        f['1'] = 'hello'
-        f['2'] = 'hello2'
-        f.close()
-
-        # Mangle the file by adding \r before each newline
-        data = open(_fname + '.dir').read()
-        data = data.replace('\n', '\r\n')
-        open(_fname + '.dir', 'wb').write(data)
-
-        f = dumbdbm.open(_fname)
-        self.assertEqual(f['1'], 'hello')
-        self.assertEqual(f['2'], 'hello2')
-
-
-    def read_helper(self, f):
-        keys = self.keys_helper(f)
-        for key in self._dict:
-            self.assertEqual(self._dict[key], f[key])
-
-    def init_db(self):
-        f = dumbdbm.open(_fname, 'w')
-        for k in self._dict:
-            f[k] = self._dict[k]
-        f.close()
-
-    def keys_helper(self, f):
-        keys = f.keys()
-        keys.sort()
-        dkeys = self._dict.keys()
-        dkeys.sort()
-        self.assertEqual(keys, dkeys)
-        return keys
-
-    # Perform randomized operations.  This doesn't make assumptions about
-    # what *might* fail.
-    def test_random(self):
-        import random
-        d = {}  # mirror the database
-        for dummy in range(5):
-            f = dumbdbm.open(_fname)
-            for dummy in range(100):
-                k = random.choice('abcdefghijklm')
-                if random.random() < 0.2:
-                    if k in d:
-                        del d[k]
-                        del f[k]
-                else:
-                    v = random.choice('abc') * random.randrange(10000)
-                    d[k] = v
-                    f[k] = v
-                    self.assertEqual(f[k], v)
-            f.close()
-
-            f = dumbdbm.open(_fname)
-            expected = d.items()
-            expected.sort()
-            got = f.items()
-            got.sort()
-            self.assertEqual(expected, got)
-            f.close()
-
-    def tearDown(self):
-        _delete_files()
-
-    def setUp(self):
-        _delete_files()
-
-def test_main():
-    try:
-        test_support.run_unittest(DumbDBMTestCase)
-    finally:
-        _delete_files()
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dummy_thread.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dummy_thread.py
deleted file mode 100644
index 8f58e4c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dummy_thread.py
+++ /dev/null
@@ -1,182 +0,0 @@
-"""Generic thread tests.
-
-Meant to be used by dummy_thread and thread.  To allow for different modules
-to be used, test_main() can be called with the module to use as the thread
-implementation as its sole argument.
-
-"""
-import dummy_thread as _thread
-import time
-import Queue
-import random
-import unittest
-from test import test_support
-
-DELAY = 0 # Set > 0 when testing a module other than dummy_thread, such as
-          # the 'thread' module.
-
-class LockTests(unittest.TestCase):
-    """Test lock objects."""
-
-    def setUp(self):
-        # Create a lock
-        self.lock = _thread.allocate_lock()
-
-    def test_initlock(self):
-        #Make sure locks start locked
-        self.assertTrue(not self.lock.locked(),
-                        "Lock object is not initialized unlocked.")
-
-    def test_release(self):
-        # Test self.lock.release()
-        self.lock.acquire()
-        self.lock.release()
-        self.assertTrue(not self.lock.locked(),
-                        "Lock object did not release properly.")
-
-    def test_improper_release(self):
-        #Make sure release of an unlocked thread raises _thread.error
-        self.assertRaises(_thread.error, self.lock.release)
-
-    def test_cond_acquire_success(self):
-        #Make sure the conditional acquiring of the lock works.
-        self.assertTrue(self.lock.acquire(0),
-                        "Conditional acquiring of the lock failed.")
-
-    def test_cond_acquire_fail(self):
-        #Test acquiring locked lock returns False
-        self.lock.acquire(0)
-        self.assertTrue(not self.lock.acquire(0),
-                        "Conditional acquiring of a locked lock incorrectly "
-                         "succeeded.")
-
-    def test_uncond_acquire_success(self):
-        #Make sure unconditional acquiring of a lock works.
-        self.lock.acquire()
-        self.assertTrue(self.lock.locked(),
-                        "Uncondional locking failed.")
-
-    def test_uncond_acquire_return_val(self):
-        #Make sure that an unconditional locking returns True.
-        self.assertTrue(self.lock.acquire(1) is True,
-                        "Unconditional locking did not return True.")
-        self.assertTrue(self.lock.acquire() is True)
-
-    def test_uncond_acquire_blocking(self):
-        #Make sure that unconditional acquiring of a locked lock blocks.
-        def delay_unlock(to_unlock, delay):
-            """Hold on to lock for a set amount of time before unlocking."""
-            time.sleep(delay)
-            to_unlock.release()
-
-        self.lock.acquire()
-        start_time = int(time.time())
-        _thread.start_new_thread(delay_unlock,(self.lock, DELAY))
-        if test_support.verbose:
-            print
-            print "*** Waiting for thread to release the lock "\
-            "(approx. %s sec.) ***" % DELAY
-        self.lock.acquire()
-        end_time = int(time.time())
-        if test_support.verbose:
-            print "done"
-        self.assertTrue((end_time - start_time) >= DELAY,
-                        "Blocking by unconditional acquiring failed.")
-
-class MiscTests(unittest.TestCase):
-    """Miscellaneous tests."""
-
-    def test_exit(self):
-        #Make sure _thread.exit() raises SystemExit
-        self.assertRaises(SystemExit, _thread.exit)
-
-    def test_ident(self):
-        #Test sanity of _thread.get_ident()
-        self.assertIsInstance(_thread.get_ident(), int,
-                              "_thread.get_ident() returned a non-integer")
-        self.assertTrue(_thread.get_ident() != 0,
-                        "_thread.get_ident() returned 0")
-
-    def test_LockType(self):
-        #Make sure _thread.LockType is the same type as _thread.allocate_locke()
-        self.assertIsInstance(_thread.allocate_lock(), _thread.LockType,
-                              "_thread.LockType is not an instance of what "
-                              "is returned by _thread.allocate_lock()")
-
-    def test_interrupt_main(self):
-        #Calling start_new_thread with a function that executes interrupt_main
-        # should raise KeyboardInterrupt upon completion.
-        def call_interrupt():
-            _thread.interrupt_main()
-        self.assertRaises(KeyboardInterrupt, _thread.start_new_thread,
-                              call_interrupt, tuple())
-
-    def test_interrupt_in_main(self):
-        # Make sure that if interrupt_main is called in main threat that
-        # KeyboardInterrupt is raised instantly.
-        self.assertRaises(KeyboardInterrupt, _thread.interrupt_main)
-
-class ThreadTests(unittest.TestCase):
-    """Test thread creation."""
-
-    def test_arg_passing(self):
-        #Make sure that parameter passing works.
-        def arg_tester(queue, arg1=False, arg2=False):
-            """Use to test _thread.start_new_thread() passes args properly."""
-            queue.put((arg1, arg2))
-
-        testing_queue = Queue.Queue(1)
-        _thread.start_new_thread(arg_tester, (testing_queue, True, True))
-        result = testing_queue.get()
-        self.assertTrue(result[0] and result[1],
-                        "Argument passing for thread creation using tuple failed")
-        _thread.start_new_thread(arg_tester, tuple(), {'queue':testing_queue,
-                                                       'arg1':True, 'arg2':True})
-        result = testing_queue.get()
-        self.assertTrue(result[0] and result[1],
-                        "Argument passing for thread creation using kwargs failed")
-        _thread.start_new_thread(arg_tester, (testing_queue, True), {'arg2':True})
-        result = testing_queue.get()
-        self.assertTrue(result[0] and result[1],
-                        "Argument passing for thread creation using both tuple"
-                        " and kwargs failed")
-
-    def test_multi_creation(self):
-        #Make sure multiple threads can be created.
-        def queue_mark(queue, delay):
-            """Wait for ``delay`` seconds and then put something into ``queue``"""
-            time.sleep(delay)
-            queue.put(_thread.get_ident())
-
-        thread_count = 5
-        testing_queue = Queue.Queue(thread_count)
-        if test_support.verbose:
-            print
-            print "*** Testing multiple thread creation "\
-            "(will take approx. %s to %s sec.) ***" % (DELAY, thread_count)
-        for count in xrange(thread_count):
-            if DELAY:
-                local_delay = round(random.random(), 1)
-            else:
-                local_delay = 0
-            _thread.start_new_thread(queue_mark,
-                                     (testing_queue, local_delay))
-        time.sleep(DELAY)
-        if test_support.verbose:
-            print 'done'
-        self.assertTrue(testing_queue.qsize() == thread_count,
-                        "Not all %s threads executed properly after %s sec." %
-                        (thread_count, DELAY))
-
-def test_main(imported_module=None):
-    global _thread, DELAY
-    if imported_module:
-        _thread = imported_module
-        DELAY = 2
-    if test_support.verbose:
-        print
-        print "*** Using %s as _thread module ***" % _thread
-    test_support.run_unittest(LockTests, MiscTests, ThreadTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dummy_threading.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dummy_threading.py
deleted file mode 100644
index 2be0f43..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_dummy_threading.py
+++ /dev/null
@@ -1,63 +0,0 @@
-from test import test_support
-import unittest
-import dummy_threading as _threading
-import time
-
-class DummyThreadingTestCase(unittest.TestCase):
-
-    class TestThread(_threading.Thread):
-
-        def run(self):
-            global running
-            global sema
-            global mutex
-            # Uncomment if testing another module, such as the real 'threading'
-            # module.
-            #delay = random.random() * 2
-            delay = 0
-            if test_support.verbose:
-                print 'task', self.name, 'will run for', delay, 'sec'
-            sema.acquire()
-            mutex.acquire()
-            running += 1
-            if test_support.verbose:
-                print running, 'tasks are running'
-            mutex.release()
-            time.sleep(delay)
-            if test_support.verbose:
-                print 'task', self.name, 'done'
-            mutex.acquire()
-            running -= 1
-            if test_support.verbose:
-                print self.name, 'is finished.', running, 'tasks are running'
-            mutex.release()
-            sema.release()
-
-    def setUp(self):
-        self.numtasks = 10
-        global sema
-        sema = _threading.BoundedSemaphore(value=3)
-        global mutex
-        mutex = _threading.RLock()
-        global running
-        running = 0
-        self.threads = []
-
-    def test_tasks(self):
-        for i in range(self.numtasks):
-            t = self.TestThread(name="<thread %d>"%i)
-            self.threads.append(t)
-            t.start()
-
-        if test_support.verbose:
-            print 'waiting for all tasks to complete'
-        for t in self.threads:
-            t.join()
-        if test_support.verbose:
-            print 'all tasks done'
-
-def test_main():
-    test_support.run_unittest(DummyThreadingTestCase)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email.py
deleted file mode 100644
index 24a3607..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (C) 2001,2002 Python Software Foundation
-# email package unit tests
-
-# The specific tests now live in Lib/email/test
-from email.test.test_email import suite
-from test import test_support
-
-def test_main():
-    test_support.run_unittest(suite())
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email_codecs.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email_codecs.py
deleted file mode 100644
index 29bdfbc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email_codecs.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2002 Python Software Foundation
-# email package unit tests for (optional) Asian codecs
-
-# The specific tests now live in Lib/email/test
-from email.test import test_email_codecs
-from email.test import test_email_codecs_renamed
-from test import test_support
-
-def test_main():
-    suite = test_email_codecs.suite()
-    suite.addTest(test_email_codecs_renamed.suite())
-    test_support.run_unittest(suite)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email_renamed.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email_renamed.py
deleted file mode 100644
index add9e57..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_email_renamed.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (C) 2001-2006 Python Software Foundation
-# email package unit tests
-
-# The specific tests now live in Lib/email/test
-from email.test.test_email_renamed import suite
-from test import test_support
-
-def test_main():
-    test_support.run_unittest(suite())
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_enumerate.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_enumerate.py
deleted file mode 100644
index c9bc338..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_enumerate.py
+++ /dev/null
@@ -1,255 +0,0 @@
-import unittest
-import sys
-
-from test import test_support
-
-class G:
-    'Sequence using __getitem__'
-    def __init__(self, seqn):
-        self.seqn = seqn
-    def __getitem__(self, i):
-        return self.seqn[i]
-
-class I:
-    'Sequence using iterator protocol'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-    def next(self):
-        if self.i >= len(self.seqn): raise StopIteration
-        v = self.seqn[self.i]
-        self.i += 1
-        return v
-
-class Ig:
-    'Sequence using iterator protocol defined with a generator'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        for val in self.seqn:
-            yield val
-
-class X:
-    'Missing __getitem__ and __iter__'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def next(self):
-        if self.i >= len(self.seqn): raise StopIteration
-        v = self.seqn[self.i]
-        self.i += 1
-        return v
-
-class E:
-    'Test propagation of exceptions'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-    def next(self):
-        3 // 0
-
-class N:
-    'Iterator missing next()'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-
-class EnumerateTestCase(unittest.TestCase):
-
-    enum = enumerate
-    seq, res = 'abc', [(0,'a'), (1,'b'), (2,'c')]
-
-    def test_basicfunction(self):
-        self.assertEqual(type(self.enum(self.seq)), self.enum)
-        e = self.enum(self.seq)
-        self.assertEqual(iter(e), e)
-        self.assertEqual(list(self.enum(self.seq)), self.res)
-        self.enum.__doc__
-
-    def test_getitemseqn(self):
-        self.assertEqual(list(self.enum(G(self.seq))), self.res)
-        e = self.enum(G(''))
-        self.assertRaises(StopIteration, e.next)
-
-    def test_iteratorseqn(self):
-        self.assertEqual(list(self.enum(I(self.seq))), self.res)
-        e = self.enum(I(''))
-        self.assertRaises(StopIteration, e.next)
-
-    def test_iteratorgenerator(self):
-        self.assertEqual(list(self.enum(Ig(self.seq))), self.res)
-        e = self.enum(Ig(''))
-        self.assertRaises(StopIteration, e.next)
-
-    def test_noniterable(self):
-        self.assertRaises(TypeError, self.enum, X(self.seq))
-
-    def test_illformediterable(self):
-        self.assertRaises(TypeError, list, self.enum(N(self.seq)))
-
-    def test_exception_propagation(self):
-        self.assertRaises(ZeroDivisionError, list, self.enum(E(self.seq)))
-
-    def test_argumentcheck(self):
-        self.assertRaises(TypeError, self.enum) # no arguments
-        self.assertRaises(TypeError, self.enum, 1) # wrong type (not iterable)
-        self.assertRaises(TypeError, self.enum, 'abc', 'a') # wrong type
-        self.assertRaises(TypeError, self.enum, 'abc', 2, 3) # too many arguments
-
-    @test_support.cpython_only
-    def test_tuple_reuse(self):
-        # Tests an implementation detail where tuple is reused
-        # whenever nothing else holds a reference to it
-        self.assertEqual(len(set(map(id, list(enumerate(self.seq))))), len(self.seq))
-        self.assertEqual(len(set(map(id, enumerate(self.seq)))), min(1,len(self.seq)))
-
-class MyEnum(enumerate):
-    pass
-
-class SubclassTestCase(EnumerateTestCase):
-
-    enum = MyEnum
-
-class TestEmpty(EnumerateTestCase):
-
-    seq, res = '', []
-
-class TestBig(EnumerateTestCase):
-
-    seq = range(10,20000,2)
-    res = zip(range(20000), seq)
-
-class TestReversed(unittest.TestCase):
-
-    def test_simple(self):
-        class A:
-            def __getitem__(self, i):
-                if i < 5:
-                    return str(i)
-                raise StopIteration
-            def __len__(self):
-                return 5
-        for data in 'abc', range(5), tuple(enumerate('abc')), A(), xrange(1,17,5):
-            self.assertEqual(list(data)[::-1], list(reversed(data)))
-        self.assertRaises(TypeError, reversed, {})
-        # don't allow keyword arguments
-        self.assertRaises(TypeError, reversed, [], a=1)
-
-    def test_classic_class(self):
-        class A:
-            def __reversed__(self):
-                return [2, 1]
-        self.assertEqual(list(reversed(A())), [2, 1])
-
-    def test_xrange_optimization(self):
-        x = xrange(1)
-        self.assertEqual(type(reversed(x)), type(iter(x)))
-
-    @test_support.cpython_only
-    def test_len(self):
-        # This is an implementation detail, not an interface requirement
-        from test.test_iterlen import len
-        for s in ('hello', tuple('hello'), list('hello'), xrange(5)):
-            self.assertEqual(len(reversed(s)), len(s))
-            r = reversed(s)
-            list(r)
-            self.assertEqual(len(r), 0)
-        class SeqWithWeirdLen:
-            called = False
-            def __len__(self):
-                if not self.called:
-                    self.called = True
-                    return 10
-                raise ZeroDivisionError
-            def __getitem__(self, index):
-                return index
-        r = reversed(SeqWithWeirdLen())
-        self.assertRaises(ZeroDivisionError, len, r)
-
-
-    def test_gc(self):
-        class Seq:
-            def __len__(self):
-                return 10
-            def __getitem__(self, index):
-                return index
-        s = Seq()
-        r = reversed(s)
-        s.r = r
-
-    def test_args(self):
-        self.assertRaises(TypeError, reversed)
-        self.assertRaises(TypeError, reversed, [], 'extra')
-
-    def test_bug1229429(self):
-        # this bug was never in reversed, it was in
-        # PyObject_CallMethod, and reversed_new calls that sometimes.
-        if not hasattr(sys, "getrefcount"):
-            return
-        def f():
-            pass
-        r = f.__reversed__ = object()
-        rc = sys.getrefcount(r)
-        for i in range(10):
-            try:
-                reversed(f)
-            except TypeError:
-                pass
-            else:
-                self.fail("non-callable __reversed__ didn't raise!")
-        self.assertEqual(rc, sys.getrefcount(r))
-
-    def test_objmethods(self):
-        # Objects must have __len__() and __getitem__() implemented.
-        class NoLen(object):
-            def __getitem__(self): return 1
-        nl = NoLen()
-        self.assertRaises(TypeError, reversed, nl)
-
-        class NoGetItem(object):
-            def __len__(self): return 2
-        ngi = NoGetItem()
-        self.assertRaises(TypeError, reversed, ngi)
-
-
-class EnumerateStartTestCase(EnumerateTestCase):
-
-    def test_basicfunction(self):
-        e = self.enum(self.seq)
-        self.assertEqual(iter(e), e)
-        self.assertEqual(list(self.enum(self.seq)), self.res)
-
-
-class TestStart(EnumerateStartTestCase):
-
-    enum = lambda self, i: enumerate(i, start=11)
-    seq, res = 'abc', [(11, 'a'), (12, 'b'), (13, 'c')]
-
-
-class TestLongStart(EnumerateStartTestCase):
-
-    enum = lambda self, i: enumerate(i, start=sys.maxint+1)
-    seq, res = 'abc', [(sys.maxint+1,'a'), (sys.maxint+2,'b'),
-                       (sys.maxint+3,'c')]
-
-
-def test_main(verbose=None):
-    test_support.run_unittest(__name__)
-
-    # verify reference counting
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        counts = [None] * 5
-        for i in xrange(len(counts)):
-            test_support.run_unittest(__name__)
-            counts[i] = sys.gettotalrefcount()
-        print counts
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_eof.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_eof.py
deleted file mode 100644
index bb680c2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_eof.py
+++ /dev/null
@@ -1,32 +0,0 @@
-#! /usr/bin/env python
-"""test script for a few new invalid token catches"""
-
-import unittest
-from test import test_support
-
-class EOFTestCase(unittest.TestCase):
-    def test_EOFC(self):
-        expect = "EOL while scanning string literal (<string>, line 1)"
-        try:
-            eval("""'this is a test\
-            """)
-        except SyntaxError, msg:
-            self.assertEqual(str(msg), expect)
-        else:
-            raise test_support.TestFailed
-
-    def test_EOFS(self):
-        expect = ("EOF while scanning triple-quoted string literal "
-                  "(<string>, line 1)")
-        try:
-            eval("""'''this is a test""")
-        except SyntaxError, msg:
-            self.assertEqual(str(msg), expect)
-        else:
-            raise test_support.TestFailed
-
-def test_main():
-    test_support.run_unittest(EOFTestCase)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_epoll.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_epoll.py
deleted file mode 100644
index b128661..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_epoll.py
+++ /dev/null
@@ -1,221 +0,0 @@
-# Copyright (c) 2001-2006 Twisted Matrix Laboratories.
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-"""
-Tests for epoll wrapper.
-"""
-import socket
-import errno
-import time
-import select
-import unittest
-
-from test import test_support
-if not hasattr(select, "epoll"):
-    raise unittest.SkipTest("test works only on Linux 2.6")
-
-try:
-    select.epoll()
-except IOError, e:
-    if e.errno == errno.ENOSYS:
-        raise unittest.SkipTest("kernel doesn't support epoll()")
-
-class TestEPoll(unittest.TestCase):
-
-    def setUp(self):
-        self.serverSocket = socket.socket()
-        self.serverSocket.bind(('127.0.0.1', 0))
-        self.serverSocket.listen(1)
-        self.connections = [self.serverSocket]
-
-
-    def tearDown(self):
-        for skt in self.connections:
-            skt.close()
-
-    def _connected_pair(self):
-        client = socket.socket()
-        client.setblocking(False)
-        try:
-            client.connect(('127.0.0.1', self.serverSocket.getsockname()[1]))
-        except socket.error, e:
-            self.assertEqual(e.args[0], errno.EINPROGRESS)
-        else:
-            raise AssertionError("Connect should have raised EINPROGRESS")
-        server, addr = self.serverSocket.accept()
-
-        self.connections.extend((client, server))
-        return client, server
-
-    def test_create(self):
-        try:
-            ep = select.epoll(16)
-        except OSError, e:
-            raise AssertionError(str(e))
-        self.assertTrue(ep.fileno() > 0, ep.fileno())
-        self.assertTrue(not ep.closed)
-        ep.close()
-        self.assertTrue(ep.closed)
-        self.assertRaises(ValueError, ep.fileno)
-
-    def test_badcreate(self):
-        self.assertRaises(TypeError, select.epoll, 1, 2, 3)
-        self.assertRaises(TypeError, select.epoll, 'foo')
-        self.assertRaises(TypeError, select.epoll, None)
-        self.assertRaises(TypeError, select.epoll, ())
-        self.assertRaises(TypeError, select.epoll, ['foo'])
-        self.assertRaises(TypeError, select.epoll, {})
-
-    def test_add(self):
-        server, client = self._connected_pair()
-
-        ep = select.epoll(2)
-        try:
-            ep.register(server.fileno(), select.EPOLLIN | select.EPOLLOUT)
-            ep.register(client.fileno(), select.EPOLLIN | select.EPOLLOUT)
-        finally:
-            ep.close()
-
-        # adding by object w/ fileno works, too.
-        ep = select.epoll(2)
-        try:
-            ep.register(server, select.EPOLLIN | select.EPOLLOUT)
-            ep.register(client, select.EPOLLIN | select.EPOLLOUT)
-        finally:
-            ep.close()
-
-        ep = select.epoll(2)
-        try:
-            # TypeError: argument must be an int, or have a fileno() method.
-            self.assertRaises(TypeError, ep.register, object(),
-                select.EPOLLIN | select.EPOLLOUT)
-            self.assertRaises(TypeError, ep.register, None,
-                select.EPOLLIN | select.EPOLLOUT)
-            # ValueError: file descriptor cannot be a negative integer (-1)
-            self.assertRaises(ValueError, ep.register, -1,
-                select.EPOLLIN | select.EPOLLOUT)
-            # IOError: [Errno 9] Bad file descriptor
-            self.assertRaises(IOError, ep.register, 10000,
-                select.EPOLLIN | select.EPOLLOUT)
-            # registering twice also raises an exception
-            ep.register(server, select.EPOLLIN | select.EPOLLOUT)
-            self.assertRaises(IOError, ep.register, server,
-                select.EPOLLIN | select.EPOLLOUT)
-        finally:
-            ep.close()
-
-    def test_fromfd(self):
-        server, client = self._connected_pair()
-
-        ep = select.epoll(2)
-        ep2 = select.epoll.fromfd(ep.fileno())
-
-        ep2.register(server.fileno(), select.EPOLLIN | select.EPOLLOUT)
-        ep2.register(client.fileno(), select.EPOLLIN | select.EPOLLOUT)
-
-        events = ep.poll(1, 4)
-        events2 = ep2.poll(0.9, 4)
-        self.assertEqual(len(events), 2)
-        self.assertEqual(len(events2), 2)
-
-        ep.close()
-        try:
-            ep2.poll(1, 4)
-        except IOError, e:
-            self.assertEqual(e.args[0], errno.EBADF, e)
-        else:
-            self.fail("epoll on closed fd didn't raise EBADF")
-
-    def test_control_and_wait(self):
-        client, server = self._connected_pair()
-
-        ep = select.epoll(16)
-        ep.register(server.fileno(),
-                   select.EPOLLIN | select.EPOLLOUT | select.EPOLLET)
-        ep.register(client.fileno(),
-                   select.EPOLLIN | select.EPOLLOUT | select.EPOLLET)
-
-        now = time.time()
-        events = ep.poll(1, 4)
-        then = time.time()
-        self.assertFalse(then - now > 0.1, then - now)
-
-        events.sort()
-        expected = [(client.fileno(), select.EPOLLOUT),
-                    (server.fileno(), select.EPOLLOUT)]
-        expected.sort()
-
-        self.assertEqual(events, expected)
-        self.assertFalse(then - now > 0.01, then - now)
-
-        now = time.time()
-        events = ep.poll(timeout=2.1, maxevents=4)
-        then = time.time()
-        self.assertFalse(events)
-
-        client.send("Hello!")
-        server.send("world!!!")
-
-        now = time.time()
-        events = ep.poll(1, 4)
-        then = time.time()
-        self.assertFalse(then - now > 0.01)
-
-        events.sort()
-        expected = [(client.fileno(), select.EPOLLIN | select.EPOLLOUT),
-                    (server.fileno(), select.EPOLLIN | select.EPOLLOUT)]
-        expected.sort()
-
-        self.assertEqual(events, expected)
-
-        ep.unregister(client.fileno())
-        ep.modify(server.fileno(), select.EPOLLOUT)
-        now = time.time()
-        events = ep.poll(1, 4)
-        then = time.time()
-        self.assertFalse(then - now > 0.01)
-
-        expected = [(server.fileno(), select.EPOLLOUT)]
-        self.assertEqual(events, expected)
-
-    def test_errors(self):
-        self.assertRaises(ValueError, select.epoll, -2)
-        self.assertRaises(ValueError, select.epoll().register, -1,
-                          select.EPOLLIN)
-
-    def test_unregister_closed(self):
-        server, client = self._connected_pair()
-        fd = server.fileno()
-        ep = select.epoll(16)
-        ep.register(server)
-
-        now = time.time()
-        events = ep.poll(1, 4)
-        then = time.time()
-        self.assertFalse(then - now > 0.01)
-
-        server.close()
-        ep.unregister(fd)
-
-def test_main():
-    test_support.run_unittest(TestEPoll)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_errno.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_errno.py
deleted file mode 100644
index 57b225f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_errno.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#! /usr/bin/env python
-"""Test the errno module
-   Roger E. Masse
-"""
-
-import errno
-from test import test_support
-import unittest
-
-std_c_errors = frozenset(['EDOM', 'ERANGE'])
-
-class ErrnoAttributeTests(unittest.TestCase):
-
-    def test_for_improper_attributes(self):
-        # No unexpected attributes should be on the module.
-        for error_code in std_c_errors:
-            self.assertTrue(hasattr(errno, error_code),
-                            "errno is missing %s" % error_code)
-
-    def test_using_errorcode(self):
-        # Every key value in errno.errorcode should be on the module.
-        for value in errno.errorcode.itervalues():
-            self.assertTrue(hasattr(errno, value), 'no %s attr in errno' % value)
-
-
-class ErrorcodeTests(unittest.TestCase):
-
-    def test_attributes_in_errorcode(self):
-        for attribute in errno.__dict__.iterkeys():
-            if attribute.isupper():
-                self.assertIn(getattr(errno, attribute), errno.errorcode,
-                              'no %s attr in errno.errorcode' % attribute)
-
-
-def test_main():
-    test_support.run_unittest(ErrnoAttributeTests, ErrorcodeTests)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_exception_variations.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_exception_variations.py
deleted file mode 100644
index 754d452..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_exception_variations.py
+++ /dev/null
@@ -1,180 +0,0 @@
-
-from test.test_support import run_unittest
-import unittest
-
-class ExceptionTestCase(unittest.TestCase):
-    def test_try_except_else_finally(self):
-        hit_except = False
-        hit_else = False
-        hit_finally = False
-
-        try:
-            raise Exception, 'nyaa!'
-        except:
-            hit_except = True
-        else:
-            hit_else = True
-        finally:
-            hit_finally = True
-
-        self.assertTrue(hit_except)
-        self.assertTrue(hit_finally)
-        self.assertFalse(hit_else)
-
-    def test_try_except_else_finally_no_exception(self):
-        hit_except = False
-        hit_else = False
-        hit_finally = False
-
-        try:
-            pass
-        except:
-            hit_except = True
-        else:
-            hit_else = True
-        finally:
-            hit_finally = True
-
-        self.assertFalse(hit_except)
-        self.assertTrue(hit_finally)
-        self.assertTrue(hit_else)
-
-    def test_try_except_finally(self):
-        hit_except = False
-        hit_finally = False
-
-        try:
-            raise Exception, 'yarr!'
-        except:
-            hit_except = True
-        finally:
-            hit_finally = True
-
-        self.assertTrue(hit_except)
-        self.assertTrue(hit_finally)
-
-    def test_try_except_finally_no_exception(self):
-        hit_except = False
-        hit_finally = False
-
-        try:
-            pass
-        except:
-            hit_except = True
-        finally:
-            hit_finally = True
-
-        self.assertFalse(hit_except)
-        self.assertTrue(hit_finally)
-
-    def test_try_except(self):
-        hit_except = False
-
-        try:
-            raise Exception, 'ahoy!'
-        except:
-            hit_except = True
-
-        self.assertTrue(hit_except)
-
-    def test_try_except_no_exception(self):
-        hit_except = False
-
-        try:
-            pass
-        except:
-            hit_except = True
-
-        self.assertFalse(hit_except)
-
-    def test_try_except_else(self):
-        hit_except = False
-        hit_else = False
-
-        try:
-            raise Exception, 'foo!'
-        except:
-            hit_except = True
-        else:
-            hit_else = True
-
-        self.assertFalse(hit_else)
-        self.assertTrue(hit_except)
-
-    def test_try_except_else_no_exception(self):
-        hit_except = False
-        hit_else = False
-
-        try:
-            pass
-        except:
-            hit_except = True
-        else:
-            hit_else = True
-
-        self.assertFalse(hit_except)
-        self.assertTrue(hit_else)
-
-    def test_try_finally_no_exception(self):
-        hit_finally = False
-
-        try:
-            pass
-        finally:
-            hit_finally = True
-
-        self.assertTrue(hit_finally)
-
-    def test_nested(self):
-        hit_finally = False
-        hit_inner_except = False
-        hit_inner_finally = False
-
-        try:
-            try:
-                raise Exception, 'inner exception'
-            except:
-                hit_inner_except = True
-            finally:
-                hit_inner_finally = True
-        finally:
-            hit_finally = True
-
-        self.assertTrue(hit_inner_except)
-        self.assertTrue(hit_inner_finally)
-        self.assertTrue(hit_finally)
-
-    def test_nested_else(self):
-        hit_else = False
-        hit_finally = False
-        hit_except = False
-        hit_inner_except = False
-        hit_inner_else = False
-
-        try:
-            try:
-                pass
-            except:
-                hit_inner_except = True
-            else:
-                hit_inner_else = True
-
-            raise Exception, 'outer exception'
-        except:
-            hit_except = True
-        else:
-            hit_else = True
-        finally:
-            hit_finally = True
-
-        self.assertFalse(hit_inner_except)
-        self.assertTrue(hit_inner_else)
-        self.assertFalse(hit_else)
-        self.assertTrue(hit_finally)
-        self.assertTrue(hit_except)
-
-def test_main():
-    run_unittest(ExceptionTestCase)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_exceptions.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_exceptions.py
deleted file mode 100644
index e1de948..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_exceptions.py
+++ /dev/null
@@ -1,620 +0,0 @@
-# Python test set -- part 5, built-in exceptions
-
-import os
-import sys
-import unittest
-import pickle, cPickle
-
-from test.test_support import (TESTFN, unlink, run_unittest, captured_output,
-                               check_warnings, cpython_only)
-from test.test_pep352 import ignore_deprecation_warnings
-
-# XXX This is not really enough, each *operation* should be tested!
-
-class ExceptionTests(unittest.TestCase):
-
-    def testReload(self):
-        # Reloading the built-in exceptions module failed prior to Py2.2, while it
-        # should act the same as reloading built-in sys.
-        try:
-            from imp import reload
-            import exceptions
-            reload(exceptions)
-        except ImportError, e:
-            self.fail("reloading exceptions: %s" % e)
-
-    def raise_catch(self, exc, excname):
-        try:
-            raise exc, "spam"
-        except exc, err:
-            buf1 = str(err)
-        try:
-            raise exc("spam")
-        except exc, err:
-            buf2 = str(err)
-        self.assertEqual(buf1, buf2)
-        self.assertEqual(exc.__name__, excname)
-
-    def testRaising(self):
-        self.raise_catch(AttributeError, "AttributeError")
-        self.assertRaises(AttributeError, getattr, sys, "undefined_attribute")
-
-        self.raise_catch(EOFError, "EOFError")
-        fp = open(TESTFN, 'w')
-        fp.close()
-        fp = open(TESTFN, 'r')
-        savestdin = sys.stdin
-        try:
-            try:
-                sys.stdin = fp
-                x = raw_input()
-            except EOFError:
-                pass
-        finally:
-            sys.stdin = savestdin
-            fp.close()
-            unlink(TESTFN)
-
-        self.raise_catch(IOError, "IOError")
-        self.assertRaises(IOError, open, 'this file does not exist', 'r')
-
-        self.raise_catch(ImportError, "ImportError")
-        self.assertRaises(ImportError, __import__, "undefined_module")
-
-        self.raise_catch(IndexError, "IndexError")
-        x = []
-        self.assertRaises(IndexError, x.__getitem__, 10)
-
-        self.raise_catch(KeyError, "KeyError")
-        x = {}
-        self.assertRaises(KeyError, x.__getitem__, 'key')
-
-        self.raise_catch(KeyboardInterrupt, "KeyboardInterrupt")
-
-        self.raise_catch(MemoryError, "MemoryError")
-
-        self.raise_catch(NameError, "NameError")
-        try: x = undefined_variable
-        except NameError: pass
-
-        self.raise_catch(OverflowError, "OverflowError")
-        x = 1
-        for dummy in range(128):
-            x += x  # this simply shouldn't blow up
-
-        self.raise_catch(RuntimeError, "RuntimeError")
-
-        self.raise_catch(SyntaxError, "SyntaxError")
-        try: exec '/\n'
-        except SyntaxError: pass
-
-        self.raise_catch(IndentationError, "IndentationError")
-
-        self.raise_catch(TabError, "TabError")
-        # can only be tested under -tt, and is the only test for -tt
-        #try: compile("try:\n\t1/0\n    \t1/0\nfinally:\n pass\n", '<string>', 'exec')
-        #except TabError: pass
-        #else: self.fail("TabError not raised")
-
-        self.raise_catch(SystemError, "SystemError")
-
-        self.raise_catch(SystemExit, "SystemExit")
-        self.assertRaises(SystemExit, sys.exit, 0)
-
-        self.raise_catch(TypeError, "TypeError")
-        try: [] + ()
-        except TypeError: pass
-
-        self.raise_catch(ValueError, "ValueError")
-        self.assertRaises(ValueError, chr, 10000)
-
-        self.raise_catch(ZeroDivisionError, "ZeroDivisionError")
-        try: x = 1 // 0
-        except ZeroDivisionError: pass
-
-        self.raise_catch(Exception, "Exception")
-        try: x = 1 // 0
-        except Exception, e: pass
-
-    def testSyntaxErrorMessage(self):
-        # make sure the right exception message is raised for each of
-        # these code fragments
-
-        def ckmsg(src, msg):
-            try:
-                compile(src, '<fragment>', 'exec')
-            except SyntaxError, e:
-                if e.msg != msg:
-                    self.fail("expected %s, got %s" % (msg, e.msg))
-            else:
-                self.fail("failed to get expected SyntaxError")
-
-        s = '''while 1:
-            try:
-                pass
-            finally:
-                continue'''
-
-        if not sys.platform.startswith('java'):
-            ckmsg(s, "'continue' not supported inside 'finally' clause")
-
-        s = '''if 1:
-        try:
-            continue
-        except:
-            pass'''
-
-        ckmsg(s, "'continue' not properly in loop")
-        ckmsg("continue\n", "'continue' not properly in loop")
-
-    @cpython_only
-    def testSettingException(self):
-        # test that setting an exception at the C level works even if the
-        # exception object can't be constructed.
-
-        class BadException:
-            def __init__(self_):
-                raise RuntimeError, "can't instantiate BadException"
-
-        def test_capi1():
-            import _testcapi
-            try:
-                _testcapi.raise_exception(BadException, 1)
-            except TypeError, err:
-                exc, err, tb = sys.exc_info()
-                co = tb.tb_frame.f_code
-                self.assertEqual(co.co_name, "test_capi1")
-                self.assertTrue(co.co_filename.endswith('test_exceptions'+os.extsep+'py'))
-            else:
-                self.fail("Expected exception")
-
-        def test_capi2():
-            import _testcapi
-            try:
-                _testcapi.raise_exception(BadException, 0)
-            except RuntimeError, err:
-                exc, err, tb = sys.exc_info()
-                co = tb.tb_frame.f_code
-                self.assertEqual(co.co_name, "__init__")
-                self.assertTrue(co.co_filename.endswith('test_exceptions'+os.extsep+'py'))
-                co2 = tb.tb_frame.f_back.f_code
-                self.assertEqual(co2.co_name, "test_capi2")
-            else:
-                self.fail("Expected exception")
-
-        if not sys.platform.startswith('java'):
-            test_capi1()
-            test_capi2()
-
-    def test_WindowsError(self):
-        try:
-            WindowsError
-        except NameError:
-            pass
-        else:
-            self.assertEqual(str(WindowsError(1001)),
-                                 "1001")
-            self.assertEqual(str(WindowsError(1001, "message")),
-                                 "[Error 1001] message")
-            self.assertEqual(WindowsError(1001, "message").errno, 22)
-            self.assertEqual(WindowsError(1001, "message").winerror, 1001)
-
-    @ignore_deprecation_warnings
-    def testAttributes(self):
-        # test that exception attributes are happy
-
-        exceptionList = [
-            (BaseException, (), {'message' : '', 'args' : ()}),
-            (BaseException, (1, ), {'message' : 1, 'args' : (1,)}),
-            (BaseException, ('foo',),
-                {'message' : 'foo', 'args' : ('foo',)}),
-            (BaseException, ('foo', 1),
-                {'message' : '', 'args' : ('foo', 1)}),
-            (SystemExit, ('foo',),
-                {'message' : 'foo', 'args' : ('foo',), 'code' : 'foo'}),
-            (IOError, ('foo',),
-                {'message' : 'foo', 'args' : ('foo',), 'filename' : None,
-                 'errno' : None, 'strerror' : None}),
-            (IOError, ('foo', 'bar'),
-                {'message' : '', 'args' : ('foo', 'bar'), 'filename' : None,
-                 'errno' : 'foo', 'strerror' : 'bar'}),
-            (IOError, ('foo', 'bar', 'baz'),
-                {'message' : '', 'args' : ('foo', 'bar'), 'filename' : 'baz',
-                 'errno' : 'foo', 'strerror' : 'bar'}),
-            (IOError, ('foo', 'bar', 'baz', 'quux'),
-                {'message' : '', 'args' : ('foo', 'bar', 'baz', 'quux')}),
-            (EnvironmentError, ('errnoStr', 'strErrorStr', 'filenameStr'),
-                {'message' : '', 'args' : ('errnoStr', 'strErrorStr'),
-                 'strerror' : 'strErrorStr', 'errno' : 'errnoStr',
-                 'filename' : 'filenameStr'}),
-            (EnvironmentError, (1, 'strErrorStr', 'filenameStr'),
-                {'message' : '', 'args' : (1, 'strErrorStr'), 'errno' : 1,
-                 'strerror' : 'strErrorStr', 'filename' : 'filenameStr'}),
-            (SyntaxError, (), {'message' : '', 'msg' : None, 'text' : None,
-                'filename' : None, 'lineno' : None, 'offset' : None,
-                'print_file_and_line' : None}),
-            (SyntaxError, ('msgStr',),
-                {'message' : 'msgStr', 'args' : ('msgStr',), 'text' : None,
-                 'print_file_and_line' : None, 'msg' : 'msgStr',
-                 'filename' : None, 'lineno' : None, 'offset' : None}),
-            (SyntaxError, ('msgStr', ('filenameStr', 'linenoStr', 'offsetStr',
-                           'textStr')),
-                {'message' : '', 'offset' : 'offsetStr', 'text' : 'textStr',
-                 'args' : ('msgStr', ('filenameStr', 'linenoStr',
-                                      'offsetStr', 'textStr')),
-                 'print_file_and_line' : None, 'msg' : 'msgStr',
-                 'filename' : 'filenameStr', 'lineno' : 'linenoStr'}),
-            (SyntaxError, ('msgStr', 'filenameStr', 'linenoStr', 'offsetStr',
-                           'textStr', 'print_file_and_lineStr'),
-                {'message' : '', 'text' : None,
-                 'args' : ('msgStr', 'filenameStr', 'linenoStr', 'offsetStr',
-                           'textStr', 'print_file_and_lineStr'),
-                 'print_file_and_line' : None, 'msg' : 'msgStr',
-                 'filename' : None, 'lineno' : None, 'offset' : None}),
-            (UnicodeError, (), {'message' : '', 'args' : (),}),
-            (UnicodeEncodeError, ('ascii', u'a', 0, 1, 'ordinal not in range'),
-                {'message' : '', 'args' : ('ascii', u'a', 0, 1,
-                                           'ordinal not in range'),
-                 'encoding' : 'ascii', 'object' : u'a',
-                 'start' : 0, 'reason' : 'ordinal not in range'}),
-            (UnicodeDecodeError, ('ascii', '\xff', 0, 1, 'ordinal not in range'),
-                {'message' : '', 'args' : ('ascii', '\xff', 0, 1,
-                                           'ordinal not in range'),
-                 'encoding' : 'ascii', 'object' : '\xff',
-                 'start' : 0, 'reason' : 'ordinal not in range'}),
-            (UnicodeTranslateError, (u"\u3042", 0, 1, "ouch"),
-                {'message' : '', 'args' : (u'\u3042', 0, 1, 'ouch'),
-                 'object' : u'\u3042', 'reason' : 'ouch',
-                 'start' : 0, 'end' : 1}),
-        ]
-        try:
-            exceptionList.append(
-                (WindowsError, (1, 'strErrorStr', 'filenameStr'),
-                    {'message' : '', 'args' : (1, 'strErrorStr'),
-                     'strerror' : 'strErrorStr', 'winerror' : 1,
-                     'errno' : 22, 'filename' : 'filenameStr'})
-            )
-        except NameError:
-            pass
-
-        for exc, args, expected in exceptionList:
-            try:
-                raise exc(*args)
-            except BaseException, e:
-                if type(e) is not exc:
-                    raise
-                # Verify module name
-                self.assertEqual(type(e).__module__, 'exceptions')
-                # Verify no ref leaks in Exc_str()
-                s = str(e)
-                for checkArgName in expected:
-                    self.assertEqual(repr(getattr(e, checkArgName)),
-                                     repr(expected[checkArgName]),
-                                     'exception "%s", attribute "%s"' %
-                                      (repr(e), checkArgName))
-
-                # test for pickling support
-                for p in pickle, cPickle:
-                    for protocol in range(p.HIGHEST_PROTOCOL + 1):
-                        new = p.loads(p.dumps(e, protocol))
-                        for checkArgName in expected:
-                            got = repr(getattr(new, checkArgName))
-                            want = repr(expected[checkArgName])
-                            self.assertEqual(got, want,
-                                             'pickled "%r", attribute "%s"' %
-                                             (e, checkArgName))
-
-
-    def testDeprecatedMessageAttribute(self):
-        # Accessing BaseException.message and relying on its value set by
-        # BaseException.__init__ triggers a deprecation warning.
-        exc = BaseException("foo")
-        with check_warnings(("BaseException.message has been deprecated "
-                             "as of Python 2.6", DeprecationWarning)) as w:
-            self.assertEqual(exc.message, "foo")
-        self.assertEqual(len(w.warnings), 1)
-
-    def testRegularMessageAttribute(self):
-        # Accessing BaseException.message after explicitly setting a value
-        # for it does not trigger a deprecation warning.
-        exc = BaseException("foo")
-        exc.message = "bar"
-        with check_warnings(quiet=True) as w:
-            self.assertEqual(exc.message, "bar")
-        self.assertEqual(len(w.warnings), 0)
-        # Deleting the message is supported, too.
-        del exc.message
-        with self.assertRaises(AttributeError):
-            exc.message
-
-    @ignore_deprecation_warnings
-    def testPickleMessageAttribute(self):
-        # Pickling with message attribute must work, as well.
-        e = Exception("foo")
-        f = Exception("foo")
-        f.message = "bar"
-        for p in pickle, cPickle:
-            ep = p.loads(p.dumps(e))
-            self.assertEqual(ep.message, "foo")
-            fp = p.loads(p.dumps(f))
-            self.assertEqual(fp.message, "bar")
-
-    @ignore_deprecation_warnings
-    def testSlicing(self):
-        # Test that you can slice an exception directly instead of requiring
-        # going through the 'args' attribute.
-        args = (1, 2, 3)
-        exc = BaseException(*args)
-        self.assertEqual(exc[:], args)
-        self.assertEqual(exc.args[:], args)
-
-    def testKeywordArgs(self):
-        # test that builtin exception don't take keyword args,
-        # but user-defined subclasses can if they want
-        self.assertRaises(TypeError, BaseException, a=1)
-
-        class DerivedException(BaseException):
-            def __init__(self, fancy_arg):
-                BaseException.__init__(self)
-                self.fancy_arg = fancy_arg
-
-        x = DerivedException(fancy_arg=42)
-        self.assertEqual(x.fancy_arg, 42)
-
-    def testInfiniteRecursion(self):
-        def f():
-            return f()
-        self.assertRaises(RuntimeError, f)
-
-        def g():
-            try:
-                return g()
-            except ValueError:
-                return -1
-
-        # The test prints an unraisable recursion error when
-        # doing "except ValueError", this is because subclass
-        # checking has recursion checking too.
-        with captured_output("stderr"):
-            try:
-                g()
-            except RuntimeError:
-                pass
-            except:
-                self.fail("Should have raised KeyError")
-            else:
-                self.fail("Should have raised KeyError")
-
-    def testUnicodeStrUsage(self):
-        # Make sure both instances and classes have a str and unicode
-        # representation.
-        self.assertTrue(str(Exception))
-        self.assertTrue(unicode(Exception))
-        self.assertTrue(str(Exception('a')))
-        self.assertTrue(unicode(Exception(u'a')))
-        self.assertTrue(unicode(Exception(u'\xe1')))
-
-    def testUnicodeChangeAttributes(self):
-        # See issue 7309. This was a crasher.
-
-        u = UnicodeEncodeError('baz', u'xxxxx', 1, 5, 'foo')
-        self.assertEqual(str(u), "'baz' codec can't encode characters in position 1-4: foo")
-        u.end = 2
-        self.assertEqual(str(u), "'baz' codec can't encode character u'\\x78' in position 1: foo")
-        u.end = 5
-        u.reason = 0x345345345345345345
-        self.assertEqual(str(u), "'baz' codec can't encode characters in position 1-4: 965230951443685724997")
-        u.encoding = 4000
-        self.assertEqual(str(u), "'4000' codec can't encode characters in position 1-4: 965230951443685724997")
-        u.start = 1000
-        self.assertEqual(str(u), "'4000' codec can't encode characters in position 1000-4: 965230951443685724997")
-
-        u = UnicodeDecodeError('baz', 'xxxxx', 1, 5, 'foo')
-        self.assertEqual(str(u), "'baz' codec can't decode bytes in position 1-4: foo")
-        u.end = 2
-        self.assertEqual(str(u), "'baz' codec can't decode byte 0x78 in position 1: foo")
-        u.end = 5
-        u.reason = 0x345345345345345345
-        self.assertEqual(str(u), "'baz' codec can't decode bytes in position 1-4: 965230951443685724997")
-        u.encoding = 4000
-        self.assertEqual(str(u), "'4000' codec can't decode bytes in position 1-4: 965230951443685724997")
-        u.start = 1000
-        self.assertEqual(str(u), "'4000' codec can't decode bytes in position 1000-4: 965230951443685724997")
-
-        u = UnicodeTranslateError(u'xxxx', 1, 5, 'foo')
-        self.assertEqual(str(u), "can't translate characters in position 1-4: foo")
-        u.end = 2
-        self.assertEqual(str(u), "can't translate character u'\\x78' in position 1: foo")
-        u.end = 5
-        u.reason = 0x345345345345345345
-        self.assertEqual(str(u), "can't translate characters in position 1-4: 965230951443685724997")
-        u.start = 1000
-        self.assertEqual(str(u), "can't translate characters in position 1000-4: 965230951443685724997")
-
-    def test_badisinstance(self):
-        # Bug #2542: if issubclass(e, MyException) raises an exception,
-        # it should be ignored
-        class Meta(type):
-            def __subclasscheck__(cls, subclass):
-                raise ValueError()
-
-        class MyException(Exception):
-            __metaclass__ = Meta
-            pass
-
-        with captured_output("stderr") as stderr:
-            try:
-                raise KeyError()
-            except MyException, e:
-                self.fail("exception should not be a MyException")
-            except KeyError:
-                pass
-            except:
-                self.fail("Should have raised KeyError")
-            else:
-                self.fail("Should have raised KeyError")
-
-        with captured_output("stderr") as stderr:
-            def g():
-                try:
-                    return g()
-                except RuntimeError:
-                    return sys.exc_info()
-            e, v, tb = g()
-            self.assertTrue(e is RuntimeError, e)
-            self.assertIn("maximum recursion depth exceeded", str(v))
-
-
-
-# Helper class used by TestSameStrAndUnicodeMsg
-class ExcWithOverriddenStr(Exception):
-    """Subclass of Exception that accepts a keyword 'msg' arg that is
-    returned by __str__. 'msg' won't be included in self.args"""
-    def __init__(self, *args, **kwargs):
-        self.msg = kwargs.pop('msg') # msg should always be present
-        super(ExcWithOverriddenStr, self).__init__(*args, **kwargs)
-    def __str__(self):
-        return self.msg
-
-
-class TestSameStrAndUnicodeMsg(unittest.TestCase):
-    """unicode(err) should return the same message of str(err). See #6108"""
-
-    def check_same_msg(self, exc, msg):
-        """Helper function that checks if str(exc) == unicode(exc) == msg"""
-        self.assertEqual(str(exc), msg)
-        self.assertEqual(str(exc), unicode(exc))
-
-    def test_builtin_exceptions(self):
-        """Check same msg for built-in exceptions"""
-        # These exceptions implement a __str__ method that uses the args
-        # to create a better error message. unicode(e) should return the same
-        # message.
-        exceptions = [
-            SyntaxError('invalid syntax', ('<string>', 1, 3, '2+*3')),
-            IOError(2, 'No such file or directory'),
-            KeyError('both should have the same quotes'),
-            UnicodeDecodeError('ascii', '\xc3\xa0', 0, 1,
-                               'ordinal not in range(128)'),
-            UnicodeEncodeError('ascii', u'\u1234', 0, 1,
-                               'ordinal not in range(128)')
-        ]
-        for exception in exceptions:
-            self.assertEqual(str(exception), unicode(exception))
-
-    def test_0_args(self):
-        """Check same msg for Exception with 0 args"""
-        # str() and unicode() on an Exception with no args should return an
-        # empty string
-        self.check_same_msg(Exception(), '')
-
-    def test_0_args_with_overridden___str__(self):
-        """Check same msg for exceptions with 0 args and overridden __str__"""
-        # str() and unicode() on an exception with overridden __str__ that
-        # returns an ascii-only string should return the same string
-        for msg in ('foo', u'foo'):
-            self.check_same_msg(ExcWithOverriddenStr(msg=msg), msg)
-
-        # if __str__ returns a non-ascii unicode string str() should fail
-        # but unicode() should return the unicode string
-        e = ExcWithOverriddenStr(msg=u'f\xf6\xf6') # no args
-        self.assertRaises(UnicodeEncodeError, str, e)
-        self.assertEqual(unicode(e), u'f\xf6\xf6')
-
-    def test_1_arg(self):
-        """Check same msg for Exceptions with 1 arg"""
-        for arg in ('foo', u'foo'):
-            self.check_same_msg(Exception(arg), arg)
-
-        # if __str__ is not overridden and self.args[0] is a non-ascii unicode
-        # string, str() should try to return str(self.args[0]) and fail.
-        # unicode() should return unicode(self.args[0]) and succeed.
-        e = Exception(u'f\xf6\xf6')
-        self.assertRaises(UnicodeEncodeError, str, e)
-        self.assertEqual(unicode(e), u'f\xf6\xf6')
-
-    def test_1_arg_with_overridden___str__(self):
-        """Check same msg for exceptions with overridden __str__ and 1 arg"""
-        # when __str__ is overridden and __unicode__ is not implemented
-        # unicode(e) returns the same as unicode(e.__str__()).
-        for msg in ('foo', u'foo'):
-            self.check_same_msg(ExcWithOverriddenStr('arg', msg=msg), msg)
-
-        # if __str__ returns a non-ascii unicode string, str() should fail
-        # but unicode() should succeed.
-        e = ExcWithOverriddenStr('arg', msg=u'f\xf6\xf6') # 1 arg
-        self.assertRaises(UnicodeEncodeError, str, e)
-        self.assertEqual(unicode(e), u'f\xf6\xf6')
-
-    def test_many_args(self):
-        """Check same msg for Exceptions with many args"""
-        argslist = [
-            (3, 'foo'),
-            (1, u'foo', 'bar'),
-            (4, u'f\xf6\xf6', u'bar', 'baz')
-        ]
-        # both str() and unicode() should return a repr() of the args
-        for args in argslist:
-            self.check_same_msg(Exception(*args), repr(args))
-
-    def test_many_args_with_overridden___str__(self):
-        """Check same msg for exceptions with overridden __str__ and many args"""
-        # if __str__ returns an ascii string / ascii unicode string
-        # both str() and unicode() should succeed
-        for msg in ('foo', u'foo'):
-            e = ExcWithOverriddenStr('arg1', u'arg2', u'f\xf6\xf6', msg=msg)
-            self.check_same_msg(e, msg)
-
-        # if __str__ returns a non-ascii unicode string, str() should fail
-        # but unicode() should succeed
-        e = ExcWithOverriddenStr('arg1', u'f\xf6\xf6', u'arg3', # 3 args
-                                 msg=u'f\xf6\xf6')
-        self.assertRaises(UnicodeEncodeError, str, e)
-        self.assertEqual(unicode(e), u'f\xf6\xf6')
-
-    @cpython_only
-    def test_exception_with_doc(self):
-        import _testcapi
-        doc2 = "This is a test docstring."
-        doc4 = "This is another test docstring."
-
-        self.assertRaises(SystemError, _testcapi.make_exception_with_doc,
-                          "error1")
-
-        # test basic usage of PyErr_NewException
-        error1 = _testcapi.make_exception_with_doc("_testcapi.error1")
-        self.assertIs(type(error1), type)
-        self.assertTrue(issubclass(error1, Exception))
-        self.assertIsNone(error1.__doc__)
-
-        # test with given docstring
-        error2 = _testcapi.make_exception_with_doc("_testcapi.error2", doc2)
-        self.assertEqual(error2.__doc__, doc2)
-
-        # test with explicit base (without docstring)
-        error3 = _testcapi.make_exception_with_doc("_testcapi.error3",
-                                                   base=error2)
-        self.assertTrue(issubclass(error3, error2))
-
-        # test with explicit base tuple
-        class C(object):
-            pass
-        error4 = _testcapi.make_exception_with_doc("_testcapi.error4", doc4,
-                                                   (error3, C))
-        self.assertTrue(issubclass(error4, error3))
-        self.assertTrue(issubclass(error4, C))
-        self.assertEqual(error4.__doc__, doc4)
-
-        # test with explicit dictionary
-        error5 = _testcapi.make_exception_with_doc("_testcapi.error5", "",
-                                                   error4, {'a': 1})
-        self.assertTrue(issubclass(error5, error4))
-        self.assertEqual(error5.a, 1)
-        self.assertEqual(error5.__doc__, "")
-
-
-def test_main():
-    run_unittest(ExceptionTests, TestSameStrAndUnicodeMsg)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_extcall.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_extcall.py
deleted file mode 100644
index 20610b0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_extcall.py
+++ /dev/null
@@ -1,319 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""Doctest for method/function calls.
-
-We're going the use these types for extra testing
-
-    >>> from UserList import UserList
-    >>> from UserDict import UserDict
-
-We're defining four helper functions
-
-    >>> def e(a,b):
-    ...     print a, b
-
-    >>> def f(*a, **k):
-    ...     print a, test_support.sortdict(k)
-
-    >>> def g(x, *y, **z):
-    ...     print x, y, test_support.sortdict(z)
-
-    >>> def h(j=1, a=2, h=3):
-    ...     print j, a, h
-
-Argument list examples
-
-    >>> f()
-    () {}
-    >>> f(1)
-    (1,) {}
-    >>> f(1, 2)
-    (1, 2) {}
-    >>> f(1, 2, 3)
-    (1, 2, 3) {}
-    >>> f(1, 2, 3, *(4, 5))
-    (1, 2, 3, 4, 5) {}
-    >>> f(1, 2, 3, *[4, 5])
-    (1, 2, 3, 4, 5) {}
-    >>> f(1, 2, 3, *UserList([4, 5]))
-    (1, 2, 3, 4, 5) {}
-
-Here we add keyword arguments
-
-    >>> f(1, 2, 3, **{'a':4, 'b':5})
-    (1, 2, 3) {'a': 4, 'b': 5}
-    >>> f(1, 2, 3, *[4, 5], **{'a':6, 'b':7})
-    (1, 2, 3, 4, 5) {'a': 6, 'b': 7}
-    >>> f(1, 2, 3, x=4, y=5, *(6, 7), **{'a':8, 'b': 9})
-    (1, 2, 3, 6, 7) {'a': 8, 'b': 9, 'x': 4, 'y': 5}
-
-    >>> f(1, 2, 3, **UserDict(a=4, b=5))
-    (1, 2, 3) {'a': 4, 'b': 5}
-    >>> f(1, 2, 3, *(4, 5), **UserDict(a=6, b=7))
-    (1, 2, 3, 4, 5) {'a': 6, 'b': 7}
-    >>> f(1, 2, 3, x=4, y=5, *(6, 7), **UserDict(a=8, b=9))
-    (1, 2, 3, 6, 7) {'a': 8, 'b': 9, 'x': 4, 'y': 5}
-
-Examples with invalid arguments (TypeErrors). We're also testing the function
-names in the exception messages.
-
-Verify clearing of SF bug #733667
-
-    >>> e(c=4)
-    Traceback (most recent call last):
-      ...
-    TypeError: e() got an unexpected keyword argument 'c'
-
-    >>> g()
-    Traceback (most recent call last):
-      ...
-    TypeError: g() takes at least 1 argument (0 given)
-
-    >>> g(*())
-    Traceback (most recent call last):
-      ...
-    TypeError: g() takes at least 1 argument (0 given)
-
-    >>> g(*(), **{})
-    Traceback (most recent call last):
-      ...
-    TypeError: g() takes at least 1 argument (0 given)
-
-    >>> g(1)
-    1 () {}
-    >>> g(1, 2)
-    1 (2,) {}
-    >>> g(1, 2, 3)
-    1 (2, 3) {}
-    >>> g(1, 2, 3, *(4, 5))
-    1 (2, 3, 4, 5) {}
-
-    >>> class Nothing: pass
-    ...
-    >>> g(*Nothing())
-    Traceback (most recent call last):
-      ...
-    TypeError: g() argument after * must be a sequence, not instance
-
-    >>> class Nothing:
-    ...     def __len__(self): return 5
-    ...
-
-    >>> g(*Nothing())
-    Traceback (most recent call last):
-      ...
-    TypeError: g() argument after * must be a sequence, not instance
-
-    >>> class Nothing():
-    ...     def __len__(self): return 5
-    ...     def __getitem__(self, i):
-    ...         if i<3: return i
-    ...         else: raise IndexError(i)
-    ...
-
-    >>> g(*Nothing())
-    0 (1, 2) {}
-
-    >>> class Nothing:
-    ...     def __init__(self): self.c = 0
-    ...     def __iter__(self): return self
-    ...     def next(self):
-    ...         if self.c == 4:
-    ...             raise StopIteration
-    ...         c = self.c
-    ...         self.c += 1
-    ...         return c
-    ...
-
-    >>> g(*Nothing())
-    0 (1, 2, 3) {}
-
-Make sure that the function doesn't stomp the dictionary
-
-    >>> d = {'a': 1, 'b': 2, 'c': 3}
-    >>> d2 = d.copy()
-    >>> g(1, d=4, **d)
-    1 () {'a': 1, 'b': 2, 'c': 3, 'd': 4}
-    >>> d == d2
-    True
-
-What about willful misconduct?
-
-    >>> def saboteur(**kw):
-    ...     kw['x'] = 'm'
-    ...     return kw
-
-    >>> d = {}
-    >>> kw = saboteur(a=1, **d)
-    >>> d
-    {}
-
-
-    >>> g(1, 2, 3, **{'x': 4, 'y': 5})
-    Traceback (most recent call last):
-      ...
-    TypeError: g() got multiple values for keyword argument 'x'
-
-    >>> f(**{1:2})
-    Traceback (most recent call last):
-      ...
-    TypeError: f() keywords must be strings
-
-    >>> h(**{'e': 2})
-    Traceback (most recent call last):
-      ...
-    TypeError: h() got an unexpected keyword argument 'e'
-
-    >>> h(*h)
-    Traceback (most recent call last):
-      ...
-    TypeError: h() argument after * must be a sequence, not function
-
-    >>> dir(*h)
-    Traceback (most recent call last):
-      ...
-    TypeError: dir() argument after * must be a sequence, not function
-
-    >>> None(*h)
-    Traceback (most recent call last):
-      ...
-    TypeError: NoneType object argument after * must be a sequence, \
-not function
-
-    >>> h(**h)
-    Traceback (most recent call last):
-      ...
-    TypeError: h() argument after ** must be a mapping, not function
-
-    >>> dir(**h)
-    Traceback (most recent call last):
-      ...
-    TypeError: dir() argument after ** must be a mapping, not function
-
-    >>> None(**h)
-    Traceback (most recent call last):
-      ...
-    TypeError: NoneType object argument after ** must be a mapping, \
-not function
-
-    >>> dir(b=1, **{'b': 1})
-    Traceback (most recent call last):
-      ...
-    TypeError: dir() got multiple values for keyword argument 'b'
-
-Another helper function
-
-    >>> def f2(*a, **b):
-    ...     return a, b
-
-
-    >>> d = {}
-    >>> for i in xrange(512):
-    ...     key = 'k%d' % i
-    ...     d[key] = i
-    >>> a, b = f2(1, *(2,3), **d)
-    >>> len(a), len(b), b == d
-    (3, 512, True)
-
-    >>> class Foo:
-    ...     def method(self, arg1, arg2):
-    ...         return arg1+arg2
-
-    >>> x = Foo()
-    >>> Foo.method(*(x, 1, 2))
-    3
-    >>> Foo.method(x, *(1, 2))
-    3
-    >>> Foo.method(*(1, 2, 3))
-    Traceback (most recent call last):
-      ...
-    TypeError: unbound method method() must be called with Foo instance as \
-first argument (got int instance instead)
-
-    >>> Foo.method(1, *[2, 3])
-    Traceback (most recent call last):
-      ...
-    TypeError: unbound method method() must be called with Foo instance as \
-first argument (got int instance instead)
-
-A PyCFunction that takes only positional parameters should allow an
-empty keyword dictionary to pass without a complaint, but raise a
-TypeError if te dictionary is not empty
-
-    >>> try:
-    ...     silence = id(1, *{})
-    ...     True
-    ... except:
-    ...     False
-    True
-
-    >>> id(1, **{'foo': 1})
-    Traceback (most recent call last):
-      ...
-    TypeError: id() takes no keyword arguments
-
-A corner case of keyword dictionary items being deleted during
-the function call setup. See <http://bugs.python.org/issue2016>.
-
-    >>> class Name(str):
-    ...     def __eq__(self, other):
-    ...         try:
-    ...              del x[self]
-    ...         except KeyError:
-    ...              pass
-    ...         return str.__eq__(self, other)
-    ...     def __hash__(self):
-    ...         return str.__hash__(self)
-
-    >>> x = {Name("a"):1, Name("b"):2}
-    >>> def f(a, b):
-    ...     print a,b
-    >>> f(**x)
-    1 2
-
-A obscure message:
-
-    >>> def f(a, b):
-    ...    pass
-    >>> f(b=1)
-    Traceback (most recent call last):
-      ...
-    TypeError: f() takes exactly 2 arguments (1 given)
-
-The number of arguments passed in includes keywords:
-
-    >>> def f(a):
-    ...    pass
-    >>> f(6, a=4, *(1, 2, 3))
-    Traceback (most recent call last):
-      ...
-    TypeError: f() takes exactly 1 argument (5 given)
-"""
-
-import unittest
-import sys
-from test import test_support
-
-
-class ExtCallTest(unittest.TestCase):
-
-    def test_unicode_keywords(self):
-        def f(a):
-            return a
-        self.assertEqual(f(**{u'a': 4}), 4)
-        self.assertRaises(TypeError, f, **{u'stören': 4})
-        self.assertRaises(TypeError, f, **{u'someLongString':2})
-        try:
-            f(a=4, **{u'a': 4})
-        except TypeError:
-            pass
-        else:
-            self.fail("duplicate arguments didn't raise")
-
-
-def test_main():
-    test_support.run_doctest(sys.modules[__name__], True)
-    test_support.run_unittest(ExtCallTest)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fcntl.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fcntl.py
deleted file mode 100644
index b251601..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fcntl.py
+++ /dev/null
@@ -1,108 +0,0 @@
-"""Test program for the fcntl C module.
-
-OS/2+EMX doesn't support the file locking operations.
-
-"""
-import os
-import struct
-import sys
-import unittest
-from test.test_support import (verbose, TESTFN, unlink, run_unittest,
-    import_module)
-
-# Skip test if no fnctl module.
-fcntl = import_module('fcntl')
-
-
-# TODO - Write tests for flock() and lockf().
-
-def get_lockdata():
-    if sys.platform.startswith('atheos'):
-        start_len = "qq"
-    else:
-        try:
-            os.O_LARGEFILE
-        except AttributeError:
-            start_len = "ll"
-        else:
-            start_len = "qq"
-
-    if sys.platform in ('netbsd1', 'netbsd2', 'netbsd3',
-                        'Darwin1.2', 'darwin',
-                        'freebsd2', 'freebsd3', 'freebsd4', 'freebsd5',
-                        'freebsd6', 'freebsd7', 'freebsd8',
-                        'bsdos2', 'bsdos3', 'bsdos4',
-                        'openbsd', 'openbsd2', 'openbsd3', 'openbsd4'):
-        if struct.calcsize('l') == 8:
-            off_t = 'l'
-            pid_t = 'i'
-        else:
-            off_t = 'lxxxx'
-            pid_t = 'l'
-        lockdata = struct.pack(off_t + off_t + pid_t + 'hh', 0, 0, 0,
-                               fcntl.F_WRLCK, 0)
-    elif sys.platform in ['aix3', 'aix4', 'hp-uxB', 'unixware7']:
-        lockdata = struct.pack('hhlllii', fcntl.F_WRLCK, 0, 0, 0, 0, 0, 0)
-    elif sys.platform in ['os2emx']:
-        lockdata = None
-    else:
-        lockdata = struct.pack('hh'+start_len+'hh', fcntl.F_WRLCK, 0, 0, 0, 0, 0)
-    if lockdata:
-        if verbose:
-            print 'struct.pack: ', repr(lockdata)
-    return lockdata
-
-lockdata = get_lockdata()
-
-
-class TestFcntl(unittest.TestCase):
-
-    def setUp(self):
-        self.f = None
-
-    def tearDown(self):
-        if self.f and not self.f.closed:
-            self.f.close()
-        unlink(TESTFN)
-
-    def test_fcntl_fileno(self):
-        # the example from the library docs
-        self.f = open(TESTFN, 'w')
-        rv = fcntl.fcntl(self.f.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)
-        if verbose:
-            print 'Status from fcntl with O_NONBLOCK: ', rv
-        if sys.platform not in ['os2emx']:
-            rv = fcntl.fcntl(self.f.fileno(), fcntl.F_SETLKW, lockdata)
-            if verbose:
-                print 'String from fcntl with F_SETLKW: ', repr(rv)
-        self.f.close()
-
-    def test_fcntl_file_descriptor(self):
-        # again, but pass the file rather than numeric descriptor
-        self.f = open(TESTFN, 'w')
-        rv = fcntl.fcntl(self.f, fcntl.F_SETFL, os.O_NONBLOCK)
-        if sys.platform not in ['os2emx']:
-            rv = fcntl.fcntl(self.f, fcntl.F_SETLKW, lockdata)
-        self.f.close()
-
-    def test_fcntl_64_bit(self):
-        # Issue #1309352: fcntl shouldn't fail when the third arg fits in a
-        # C 'long' but not in a C 'int'.
-        try:
-            cmd = fcntl.F_NOTIFY
-            # This flag is larger than 2**31 in 64-bit builds
-            flags = fcntl.DN_MULTISHOT
-        except AttributeError:
-            self.skipTest("F_NOTIFY or DN_MULTISHOT unavailable")
-        fd = os.open(os.path.dirname(os.path.abspath(TESTFN)), os.O_RDONLY)
-        try:
-            fcntl.fcntl(fd, cmd, flags)
-        finally:
-            os.close(fd)
-
-
-def test_main():
-    run_unittest(TestFcntl)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_file.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_file.py
deleted file mode 100644
index 5d97761..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_file.py
+++ /dev/null
@@ -1,347 +0,0 @@
-# NOTE: this file tests the new `io` library backported from Python 3.x.
-# Similar tests for the builtin file object can be found in test_file2k.py.
-
-from __future__ import print_function
-
-import sys
-import os
-import unittest
-from array import array
-from weakref import proxy
-
-import io
-import _pyio as pyio
-
-from test.test_support import TESTFN, run_unittest
-from UserList import UserList
-
-class AutoFileTests(unittest.TestCase):
-    # file tests for which a test file is automatically set up
-
-    def setUp(self):
-        self.f = self.open(TESTFN, 'wb')
-
-    def tearDown(self):
-        if self.f:
-            self.f.close()
-        os.remove(TESTFN)
-
-    def testWeakRefs(self):
-        # verify weak references
-        p = proxy(self.f)
-        p.write(b'teststring')
-        self.assertEqual(self.f.tell(), p.tell())
-        self.f.close()
-        self.f = None
-        self.assertRaises(ReferenceError, getattr, p, 'tell')
-
-    def testAttributes(self):
-        # verify expected attributes exist
-        f = self.f
-        f.name     # merely shouldn't blow up
-        f.mode     # ditto
-        f.closed   # ditto
-
-    def testReadinto(self):
-        # verify readinto
-        self.f.write(b'12')
-        self.f.close()
-        a = array('b', b'x'*10)
-        self.f = self.open(TESTFN, 'rb')
-        n = self.f.readinto(a)
-        self.assertEqual(b'12', a.tostring()[:n])
-
-    def testReadinto_text(self):
-        # verify readinto refuses text files
-        a = array('b', b'x'*10)
-        self.f.close()
-        self.f = self.open(TESTFN, 'r')
-        if hasattr(self.f, "readinto"):
-            self.assertRaises(TypeError, self.f.readinto, a)
-
-    def testWritelinesUserList(self):
-        # verify writelines with instance sequence
-        l = UserList([b'1', b'2'])
-        self.f.writelines(l)
-        self.f.close()
-        self.f = self.open(TESTFN, 'rb')
-        buf = self.f.read()
-        self.assertEqual(buf, b'12')
-
-    def testWritelinesIntegers(self):
-        # verify writelines with integers
-        self.assertRaises(TypeError, self.f.writelines, [1, 2, 3])
-
-    def testWritelinesIntegersUserList(self):
-        # verify writelines with integers in UserList
-        l = UserList([1,2,3])
-        self.assertRaises(TypeError, self.f.writelines, l)
-
-    def testWritelinesNonString(self):
-        # verify writelines with non-string object
-        class NonString:
-            pass
-
-        self.assertRaises(TypeError, self.f.writelines,
-                          [NonString(), NonString()])
-
-    def testErrors(self):
-        f = self.f
-        self.assertEqual(f.name, TESTFN)
-        self.assertTrue(not f.isatty())
-        self.assertTrue(not f.closed)
-
-        if hasattr(f, "readinto"):
-            self.assertRaises((IOError, TypeError), f.readinto, "")
-        f.close()
-        self.assertTrue(f.closed)
-
-    def testMethods(self):
-        methods = [('fileno', ()),
-                   ('flush', ()),
-                   ('isatty', ()),
-                   ('next', ()),
-                   ('read', ()),
-                   ('write', (b"",)),
-                   ('readline', ()),
-                   ('readlines', ()),
-                   ('seek', (0,)),
-                   ('tell', ()),
-                   ('write', (b"",)),
-                   ('writelines', ([],)),
-                   ('__iter__', ()),
-                   ]
-        if not sys.platform.startswith('atheos'):
-            methods.append(('truncate', ()))
-
-        # __exit__ should close the file
-        self.f.__exit__(None, None, None)
-        self.assertTrue(self.f.closed)
-
-        for methodname, args in methods:
-            method = getattr(self.f, methodname)
-            # should raise on closed file
-            self.assertRaises(ValueError, method, *args)
-
-        # file is closed, __exit__ shouldn't do anything
-        self.assertEqual(self.f.__exit__(None, None, None), None)
-        # it must also return None if an exception was given
-        try:
-            1 // 0
-        except:
-            self.assertEqual(self.f.__exit__(*sys.exc_info()), None)
-
-    def testReadWhenWriting(self):
-        self.assertRaises(IOError, self.f.read)
-
-class CAutoFileTests(AutoFileTests):
-    open = io.open
-
-class PyAutoFileTests(AutoFileTests):
-    open = staticmethod(pyio.open)
-
-
-class OtherFileTests(unittest.TestCase):
-
-    def testModeStrings(self):
-        # check invalid mode strings
-        for mode in ("", "aU", "wU+"):
-            try:
-                f = self.open(TESTFN, mode)
-            except ValueError:
-                pass
-            else:
-                f.close()
-                self.fail('%r is an invalid file mode' % mode)
-
-    def testStdin(self):
-        # This causes the interpreter to exit on OSF1 v5.1.
-        if sys.platform != 'osf1V5':
-            self.assertRaises((IOError, ValueError), sys.stdin.seek, -1)
-        else:
-            print((
-                '  Skipping sys.stdin.seek(-1), it may crash the interpreter.'
-                ' Test manually.'), file=sys.__stdout__)
-        self.assertRaises((IOError, ValueError), sys.stdin.truncate)
-
-    def testBadModeArgument(self):
-        # verify that we get a sensible error message for bad mode argument
-        bad_mode = "qwerty"
-        try:
-            f = self.open(TESTFN, bad_mode)
-        except ValueError as msg:
-            if msg.args[0] != 0:
-                s = str(msg)
-                if TESTFN in s or bad_mode not in s:
-                    self.fail("bad error message for invalid mode: %s" % s)
-            # if msg.args[0] == 0, we're probably on Windows where there may be
-            # no obvious way to discover why open() failed.
-        else:
-            f.close()
-            self.fail("no error for invalid mode: %s" % bad_mode)
-
-    def testSetBufferSize(self):
-        # make sure that explicitly setting the buffer size doesn't cause
-        # misbehaviour especially with repeated close() calls
-        for s in (-1, 0, 1, 512):
-            try:
-                f = self.open(TESTFN, 'wb', s)
-                f.write(str(s).encode("ascii"))
-                f.close()
-                f.close()
-                f = self.open(TESTFN, 'rb', s)
-                d = int(f.read().decode("ascii"))
-                f.close()
-                f.close()
-            except IOError as msg:
-                self.fail('error setting buffer size %d: %s' % (s, str(msg)))
-            self.assertEqual(d, s)
-
-    def testTruncateOnWindows(self):
-        # SF bug <http://www.python.org/sf/801631>
-        # "file.truncate fault on windows"
-
-        os.unlink(TESTFN)
-        f = self.open(TESTFN, 'wb')
-
-        try:
-            f.write(b'12345678901')   # 11 bytes
-            f.close()
-
-            f = self.open(TESTFN,'rb+')
-            data = f.read(5)
-            if data != b'12345':
-                self.fail("Read on file opened for update failed %r" % data)
-            if f.tell() != 5:
-                self.fail("File pos after read wrong %d" % f.tell())
-
-            f.truncate()
-            if f.tell() != 5:
-                self.fail("File pos after ftruncate wrong %d" % f.tell())
-
-            f.close()
-            size = os.path.getsize(TESTFN)
-            if size != 5:
-                self.fail("File size after ftruncate wrong %d" % size)
-        finally:
-            f.close()
-            os.unlink(TESTFN)
-
-    def testIteration(self):
-        # Test the complex interaction when mixing file-iteration and the
-        # various read* methods.
-        dataoffset = 16384
-        filler = b"ham\n"
-        assert not dataoffset % len(filler), \
-            "dataoffset must be multiple of len(filler)"
-        nchunks = dataoffset // len(filler)
-        testlines = [
-            b"spam, spam and eggs\n",
-            b"eggs, spam, ham and spam\n",
-            b"saussages, spam, spam and eggs\n",
-            b"spam, ham, spam and eggs\n",
-            b"spam, spam, spam, spam, spam, ham, spam\n",
-            b"wonderful spaaaaaam.\n"
-        ]
-        methods = [("readline", ()), ("read", ()), ("readlines", ()),
-                   ("readinto", (array("b", b" "*100),))]
-
-        try:
-            # Prepare the testfile
-            bag = self.open(TESTFN, "wb")
-            bag.write(filler * nchunks)
-            bag.writelines(testlines)
-            bag.close()
-            # Test for appropriate errors mixing read* and iteration
-            for methodname, args in methods:
-                f = self.open(TESTFN, 'rb')
-                if next(f) != filler:
-                    self.fail, "Broken testfile"
-                meth = getattr(f, methodname)
-                meth(*args)  # This simply shouldn't fail
-                f.close()
-
-            # Test to see if harmless (by accident) mixing of read* and
-            # iteration still works. This depends on the size of the internal
-            # iteration buffer (currently 8192,) but we can test it in a
-            # flexible manner.  Each line in the bag o' ham is 4 bytes
-            # ("h", "a", "m", "\n"), so 4096 lines of that should get us
-            # exactly on the buffer boundary for any power-of-2 buffersize
-            # between 4 and 16384 (inclusive).
-            f = self.open(TESTFN, 'rb')
-            for i in range(nchunks):
-                next(f)
-            testline = testlines.pop(0)
-            try:
-                line = f.readline()
-            except ValueError:
-                self.fail("readline() after next() with supposedly empty "
-                          "iteration-buffer failed anyway")
-            if line != testline:
-                self.fail("readline() after next() with empty buffer "
-                          "failed. Got %r, expected %r" % (line, testline))
-            testline = testlines.pop(0)
-            buf = array("b", b"\x00" * len(testline))
-            try:
-                f.readinto(buf)
-            except ValueError:
-                self.fail("readinto() after next() with supposedly empty "
-                          "iteration-buffer failed anyway")
-            line = buf.tostring()
-            if line != testline:
-                self.fail("readinto() after next() with empty buffer "
-                          "failed. Got %r, expected %r" % (line, testline))
-
-            testline = testlines.pop(0)
-            try:
-                line = f.read(len(testline))
-            except ValueError:
-                self.fail("read() after next() with supposedly empty "
-                          "iteration-buffer failed anyway")
-            if line != testline:
-                self.fail("read() after next() with empty buffer "
-                          "failed. Got %r, expected %r" % (line, testline))
-            try:
-                lines = f.readlines()
-            except ValueError:
-                self.fail("readlines() after next() with supposedly empty "
-                          "iteration-buffer failed anyway")
-            if lines != testlines:
-                self.fail("readlines() after next() with empty buffer "
-                          "failed. Got %r, expected %r" % (line, testline))
-            # Reading after iteration hit EOF shouldn't hurt either
-            f = self.open(TESTFN, 'rb')
-            try:
-                for line in f:
-                    pass
-                try:
-                    f.readline()
-                    f.readinto(buf)
-                    f.read()
-                    f.readlines()
-                except ValueError:
-                    self.fail("read* failed after next() consumed file")
-            finally:
-                f.close()
-        finally:
-            os.unlink(TESTFN)
-
-class COtherFileTests(OtherFileTests):
-    open = io.open
-
-class PyOtherFileTests(OtherFileTests):
-    open = staticmethod(pyio.open)
-
-
-def test_main():
-    # Historically, these tests have been sloppy about removing TESTFN.
-    # So get rid of it no matter what.
-    try:
-        run_unittest(CAutoFileTests, PyAutoFileTests,
-                     COtherFileTests, PyOtherFileTests)
-    finally:
-        if os.path.exists(TESTFN):
-            os.unlink(TESTFN)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_file2k.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_file2k.py
deleted file mode 100644
index 58db65a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_file2k.py
+++ /dev/null
@@ -1,680 +0,0 @@
-import sys
-import os
-import unittest
-import itertools
-import time
-from array import array
-from weakref import proxy
-try:
-    import threading
-except ImportError:
-    threading = None
-
-from test import test_support
-from test.test_support import TESTFN, run_unittest
-from UserList import UserList
-
-class AutoFileTests(unittest.TestCase):
-    # file tests for which a test file is automatically set up
-
-    def setUp(self):
-        self.f = open(TESTFN, 'wb')
-
-    def tearDown(self):
-        if self.f:
-            self.f.close()
-        os.remove(TESTFN)
-
-    def testWeakRefs(self):
-        # verify weak references
-        p = proxy(self.f)
-        p.write('teststring')
-        self.assertEqual(self.f.tell(), p.tell())
-        self.f.close()
-        self.f = None
-        self.assertRaises(ReferenceError, getattr, p, 'tell')
-
-    def testAttributes(self):
-        # verify expected attributes exist
-        f = self.f
-        with test_support.check_py3k_warnings():
-            softspace = f.softspace
-        f.name     # merely shouldn't blow up
-        f.mode     # ditto
-        f.closed   # ditto
-
-        with test_support.check_py3k_warnings():
-            # verify softspace is writable
-            f.softspace = softspace    # merely shouldn't blow up
-
-        # verify the others aren't
-        for attr in 'name', 'mode', 'closed':
-            self.assertRaises((AttributeError, TypeError), setattr, f, attr, 'oops')
-
-    def testReadinto(self):
-        # verify readinto
-        self.f.write('12')
-        self.f.close()
-        a = array('c', 'x'*10)
-        self.f = open(TESTFN, 'rb')
-        n = self.f.readinto(a)
-        self.assertEqual('12', a.tostring()[:n])
-
-    def testWritelinesUserList(self):
-        # verify writelines with instance sequence
-        l = UserList(['1', '2'])
-        self.f.writelines(l)
-        self.f.close()
-        self.f = open(TESTFN, 'rb')
-        buf = self.f.read()
-        self.assertEqual(buf, '12')
-
-    def testWritelinesIntegers(self):
-        # verify writelines with integers
-        self.assertRaises(TypeError, self.f.writelines, [1, 2, 3])
-
-    def testWritelinesIntegersUserList(self):
-        # verify writelines with integers in UserList
-        l = UserList([1,2,3])
-        self.assertRaises(TypeError, self.f.writelines, l)
-
-    def testWritelinesNonString(self):
-        # verify writelines with non-string object
-        class NonString:
-            pass
-
-        self.assertRaises(TypeError, self.f.writelines,
-                          [NonString(), NonString()])
-
-    def testRepr(self):
-        # verify repr works
-        self.assertTrue(repr(self.f).startswith("<open file '" + TESTFN))
-
-    def testErrors(self):
-        self.f.close()
-        self.f = open(TESTFN, 'rb')
-        f = self.f
-        self.assertEqual(f.name, TESTFN)
-        self.assertTrue(not f.isatty())
-        self.assertTrue(not f.closed)
-
-        self.assertRaises(TypeError, f.readinto, "")
-        f.close()
-        self.assertTrue(f.closed)
-
-    def testMethods(self):
-        methods = ['fileno', 'flush', 'isatty', 'next', 'read', 'readinto',
-                   'readline', 'readlines', 'seek', 'tell', 'truncate',
-                   'write', '__iter__']
-        deprecated_methods = ['xreadlines']
-        if sys.platform.startswith('atheos'):
-            methods.remove('truncate')
-
-        # __exit__ should close the file
-        self.f.__exit__(None, None, None)
-        self.assertTrue(self.f.closed)
-
-        for methodname in methods:
-            method = getattr(self.f, methodname)
-            # should raise on closed file
-            self.assertRaises(ValueError, method)
-        with test_support.check_py3k_warnings():
-            for methodname in deprecated_methods:
-                method = getattr(self.f, methodname)
-                self.assertRaises(ValueError, method)
-        self.assertRaises(ValueError, self.f.writelines, [])
-
-        # file is closed, __exit__ shouldn't do anything
-        self.assertEqual(self.f.__exit__(None, None, None), None)
-        # it must also return None if an exception was given
-        try:
-            1 // 0
-        except:
-            self.assertEqual(self.f.__exit__(*sys.exc_info()), None)
-
-    def testReadWhenWriting(self):
-        self.assertRaises(IOError, self.f.read)
-
-    def testNastyWritelinesGenerator(self):
-        def nasty():
-            for i in range(5):
-                if i == 3:
-                    self.f.close()
-                yield str(i)
-        self.assertRaises(ValueError, self.f.writelines, nasty())
-
-    def testIssue5677(self):
-        # Remark: Do not perform more than one test per open file,
-        # since that does NOT catch the readline error on Windows.
-        data = 'xxx'
-        for mode in ['w', 'wb', 'a', 'ab']:
-            for attr in ['read', 'readline', 'readlines']:
-                self.f = open(TESTFN, mode)
-                self.f.write(data)
-                self.assertRaises(IOError, getattr(self.f, attr))
-                self.f.close()
-
-            self.f = open(TESTFN, mode)
-            self.f.write(data)
-            self.assertRaises(IOError, lambda: [line for line in self.f])
-            self.f.close()
-
-            self.f = open(TESTFN, mode)
-            self.f.write(data)
-            self.assertRaises(IOError, self.f.readinto, bytearray(len(data)))
-            self.f.close()
-
-        for mode in ['r', 'rb', 'U', 'Ub', 'Ur', 'rU', 'rbU', 'rUb']:
-            self.f = open(TESTFN, mode)
-            self.assertRaises(IOError, self.f.write, data)
-            self.f.close()
-
-            self.f = open(TESTFN, mode)
-            self.assertRaises(IOError, self.f.writelines, [data, data])
-            self.f.close()
-
-            self.f = open(TESTFN, mode)
-            self.assertRaises(IOError, self.f.truncate)
-            self.f.close()
-
-class OtherFileTests(unittest.TestCase):
-
-    def testOpenDir(self):
-        this_dir = os.path.dirname(__file__) or os.curdir
-        for mode in (None, "w"):
-            try:
-                if mode:
-                    f = open(this_dir, mode)
-                else:
-                    f = open(this_dir)
-            except IOError as e:
-                self.assertEqual(e.filename, this_dir)
-            else:
-                self.fail("opening a directory didn't raise an IOError")
-
-    def testModeStrings(self):
-        # check invalid mode strings
-        for mode in ("", "aU", "wU+"):
-            try:
-                f = open(TESTFN, mode)
-            except ValueError:
-                pass
-            else:
-                f.close()
-                self.fail('%r is an invalid file mode' % mode)
-
-        # Some invalid modes fail on Windows, but pass on Unix
-        # Issue3965: avoid a crash on Windows when filename is unicode
-        for name in (TESTFN, unicode(TESTFN), unicode(TESTFN + '\t')):
-            try:
-                f = open(name, "rr")
-            except (IOError, ValueError):
-                pass
-            else:
-                f.close()
-
-    def testStdin(self):
-        # This causes the interpreter to exit on OSF1 v5.1.
-        if sys.platform != 'osf1V5':
-            self.assertRaises(IOError, sys.stdin.seek, -1)
-        else:
-            print >>sys.__stdout__, (
-                '  Skipping sys.stdin.seek(-1), it may crash the interpreter.'
-                ' Test manually.')
-        self.assertRaises(IOError, sys.stdin.truncate)
-
-    def testUnicodeOpen(self):
-        # verify repr works for unicode too
-        f = open(unicode(TESTFN), "w")
-        self.assertTrue(repr(f).startswith("<open file u'" + TESTFN))
-        f.close()
-        os.unlink(TESTFN)
-
-    def testBadModeArgument(self):
-        # verify that we get a sensible error message for bad mode argument
-        bad_mode = "qwerty"
-        try:
-            f = open(TESTFN, bad_mode)
-        except ValueError, msg:
-            if msg.args[0] != 0:
-                s = str(msg)
-                if TESTFN in s or bad_mode not in s:
-                    self.fail("bad error message for invalid mode: %s" % s)
-            # if msg.args[0] == 0, we're probably on Windows where there may
-            # be no obvious way to discover why open() failed.
-        else:
-            f.close()
-            self.fail("no error for invalid mode: %s" % bad_mode)
-
-    def testSetBufferSize(self):
-        # make sure that explicitly setting the buffer size doesn't cause
-        # misbehaviour especially with repeated close() calls
-        for s in (-1, 0, 1, 512):
-            try:
-                f = open(TESTFN, 'w', s)
-                f.write(str(s))
-                f.close()
-                f.close()
-                f = open(TESTFN, 'r', s)
-                d = int(f.read())
-                f.close()
-                f.close()
-            except IOError, msg:
-                self.fail('error setting buffer size %d: %s' % (s, str(msg)))
-            self.assertEqual(d, s)
-
-    def testTruncateOnWindows(self):
-        os.unlink(TESTFN)
-
-        def bug801631():
-            # SF bug <http://www.python.org/sf/801631>
-            # "file.truncate fault on windows"
-            f = open(TESTFN, 'wb')
-            f.write('12345678901')   # 11 bytes
-            f.close()
-
-            f = open(TESTFN,'rb+')
-            data = f.read(5)
-            if data != '12345':
-                self.fail("Read on file opened for update failed %r" % data)
-            if f.tell() != 5:
-                self.fail("File pos after read wrong %d" % f.tell())
-
-            f.truncate()
-            if f.tell() != 5:
-                self.fail("File pos after ftruncate wrong %d" % f.tell())
-
-            f.close()
-            size = os.path.getsize(TESTFN)
-            if size != 5:
-                self.fail("File size after ftruncate wrong %d" % size)
-
-        try:
-            bug801631()
-        finally:
-            os.unlink(TESTFN)
-
-    def testIteration(self):
-        # Test the complex interaction when mixing file-iteration and the
-        # various read* methods. Ostensibly, the mixture could just be tested
-        # to work when it should work according to the Python language,
-        # instead of fail when it should fail according to the current CPython
-        # implementation.  People don't always program Python the way they
-        # should, though, and the implemenation might change in subtle ways,
-        # so we explicitly test for errors, too; the test will just have to
-        # be updated when the implementation changes.
-        dataoffset = 16384
-        filler = "ham\n"
-        assert not dataoffset % len(filler), \
-            "dataoffset must be multiple of len(filler)"
-        nchunks = dataoffset // len(filler)
-        testlines = [
-            "spam, spam and eggs\n",
-            "eggs, spam, ham and spam\n",
-            "saussages, spam, spam and eggs\n",
-            "spam, ham, spam and eggs\n",
-            "spam, spam, spam, spam, spam, ham, spam\n",
-            "wonderful spaaaaaam.\n"
-        ]
-        methods = [("readline", ()), ("read", ()), ("readlines", ()),
-                   ("readinto", (array("c", " "*100),))]
-
-        try:
-            # Prepare the testfile
-            bag = open(TESTFN, "w")
-            bag.write(filler * nchunks)
-            bag.writelines(testlines)
-            bag.close()
-            # Test for appropriate errors mixing read* and iteration
-            for methodname, args in methods:
-                f = open(TESTFN)
-                if f.next() != filler:
-                    self.fail, "Broken testfile"
-                meth = getattr(f, methodname)
-                try:
-                    meth(*args)
-                except ValueError:
-                    pass
-                else:
-                    self.fail("%s%r after next() didn't raise ValueError" %
-                                     (methodname, args))
-                f.close()
-
-            # Test to see if harmless (by accident) mixing of read* and
-            # iteration still works. This depends on the size of the internal
-            # iteration buffer (currently 8192,) but we can test it in a
-            # flexible manner.  Each line in the bag o' ham is 4 bytes
-            # ("h", "a", "m", "\n"), so 4096 lines of that should get us
-            # exactly on the buffer boundary for any power-of-2 buffersize
-            # between 4 and 16384 (inclusive).
-            f = open(TESTFN)
-            for i in range(nchunks):
-                f.next()
-            testline = testlines.pop(0)
-            try:
-                line = f.readline()
-            except ValueError:
-                self.fail("readline() after next() with supposedly empty "
-                          "iteration-buffer failed anyway")
-            if line != testline:
-                self.fail("readline() after next() with empty buffer "
-                          "failed. Got %r, expected %r" % (line, testline))
-            testline = testlines.pop(0)
-            buf = array("c", "\x00" * len(testline))
-            try:
-                f.readinto(buf)
-            except ValueError:
-                self.fail("readinto() after next() with supposedly empty "
-                          "iteration-buffer failed anyway")
-            line = buf.tostring()
-            if line != testline:
-                self.fail("readinto() after next() with empty buffer "
-                          "failed. Got %r, expected %r" % (line, testline))
-
-            testline = testlines.pop(0)
-            try:
-                line = f.read(len(testline))
-            except ValueError:
-                self.fail("read() after next() with supposedly empty "
-                          "iteration-buffer failed anyway")
-            if line != testline:
-                self.fail("read() after next() with empty buffer "
-                          "failed. Got %r, expected %r" % (line, testline))
-            try:
-                lines = f.readlines()
-            except ValueError:
-                self.fail("readlines() after next() with supposedly empty "
-                          "iteration-buffer failed anyway")
-            if lines != testlines:
-                self.fail("readlines() after next() with empty buffer "
-                          "failed. Got %r, expected %r" % (line, testline))
-            # Reading after iteration hit EOF shouldn't hurt either
-            f = open(TESTFN)
-            try:
-                for line in f:
-                    pass
-                try:
-                    f.readline()
-                    f.readinto(buf)
-                    f.read()
-                    f.readlines()
-                except ValueError:
-                    self.fail("read* failed after next() consumed file")
-            finally:
-                f.close()
-        finally:
-            os.unlink(TESTFN)
-
-class FileSubclassTests(unittest.TestCase):
-
-    def testExit(self):
-        # test that exiting with context calls subclass' close
-        class C(file):
-            def __init__(self, *args):
-                self.subclass_closed = False
-                file.__init__(self, *args)
-            def close(self):
-                self.subclass_closed = True
-                file.close(self)
-
-        with C(TESTFN, 'w') as f:
-            pass
-        self.assertTrue(f.subclass_closed)
-
-
-@unittest.skipUnless(threading, 'Threading required for this test.')
-class FileThreadingTests(unittest.TestCase):
-    # These tests check the ability to call various methods of file objects
-    # (including close()) concurrently without crashing the Python interpreter.
-    # See #815646, #595601
-
-    def setUp(self):
-        self._threads = test_support.threading_setup()
-        self.f = None
-        self.filename = TESTFN
-        with open(self.filename, "w") as f:
-            f.write("\n".join("0123456789"))
-        self._count_lock = threading.Lock()
-        self.close_count = 0
-        self.close_success_count = 0
-        self.use_buffering = False
-
-    def tearDown(self):
-        if self.f:
-            try:
-                self.f.close()
-            except (EnvironmentError, ValueError):
-                pass
-        try:
-            os.remove(self.filename)
-        except EnvironmentError:
-            pass
-        test_support.threading_cleanup(*self._threads)
-
-    def _create_file(self):
-        if self.use_buffering:
-            self.f = open(self.filename, "w+", buffering=1024*16)
-        else:
-            self.f = open(self.filename, "w+")
-
-    def _close_file(self):
-        with self._count_lock:
-            self.close_count += 1
-        self.f.close()
-        with self._count_lock:
-            self.close_success_count += 1
-
-    def _close_and_reopen_file(self):
-        self._close_file()
-        # if close raises an exception thats fine, self.f remains valid so
-        # we don't need to reopen.
-        self._create_file()
-
-    def _run_workers(self, func, nb_workers, duration=0.2):
-        with self._count_lock:
-            self.close_count = 0
-            self.close_success_count = 0
-        self.do_continue = True
-        threads = []
-        try:
-            for i in range(nb_workers):
-                t = threading.Thread(target=func)
-                t.start()
-                threads.append(t)
-            for _ in xrange(100):
-                time.sleep(duration/100)
-                with self._count_lock:
-                    if self.close_count-self.close_success_count > nb_workers+1:
-                        if test_support.verbose:
-                            print 'Q',
-                        break
-            time.sleep(duration)
-        finally:
-            self.do_continue = False
-            for t in threads:
-                t.join()
-
-    def _test_close_open_io(self, io_func, nb_workers=5):
-        def worker():
-            self._create_file()
-            funcs = itertools.cycle((
-                lambda: io_func(),
-                lambda: self._close_and_reopen_file(),
-            ))
-            for f in funcs:
-                if not self.do_continue:
-                    break
-                try:
-                    f()
-                except (IOError, ValueError):
-                    pass
-        self._run_workers(worker, nb_workers)
-        if test_support.verbose:
-            # Useful verbose statistics when tuning this test to take
-            # less time to run but still ensuring that its still useful.
-            #
-            # the percent of close calls that raised an error
-            percent = 100. - 100.*self.close_success_count/self.close_count
-            print self.close_count, ('%.4f ' % percent),
-
-    def test_close_open(self):
-        def io_func():
-            pass
-        self._test_close_open_io(io_func)
-
-    def test_close_open_flush(self):
-        def io_func():
-            self.f.flush()
-        self._test_close_open_io(io_func)
-
-    def test_close_open_iter(self):
-        def io_func():
-            list(iter(self.f))
-        self._test_close_open_io(io_func)
-
-    def test_close_open_isatty(self):
-        def io_func():
-            self.f.isatty()
-        self._test_close_open_io(io_func)
-
-    def test_close_open_print(self):
-        def io_func():
-            print >> self.f, ''
-        self._test_close_open_io(io_func)
-
-    def test_close_open_print_buffered(self):
-        self.use_buffering = True
-        def io_func():
-            print >> self.f, ''
-        self._test_close_open_io(io_func)
-
-    def test_close_open_read(self):
-        def io_func():
-            self.f.read(0)
-        self._test_close_open_io(io_func)
-
-    def test_close_open_readinto(self):
-        def io_func():
-            a = array('c', 'xxxxx')
-            self.f.readinto(a)
-        self._test_close_open_io(io_func)
-
-    def test_close_open_readline(self):
-        def io_func():
-            self.f.readline()
-        self._test_close_open_io(io_func)
-
-    def test_close_open_readlines(self):
-        def io_func():
-            self.f.readlines()
-        self._test_close_open_io(io_func)
-
-    def test_close_open_seek(self):
-        def io_func():
-            self.f.seek(0, 0)
-        self._test_close_open_io(io_func)
-
-    def test_close_open_tell(self):
-        def io_func():
-            self.f.tell()
-        self._test_close_open_io(io_func)
-
-    def test_close_open_truncate(self):
-        def io_func():
-            self.f.truncate()
-        self._test_close_open_io(io_func)
-
-    def test_close_open_write(self):
-        def io_func():
-            self.f.write('')
-        self._test_close_open_io(io_func)
-
-    def test_close_open_writelines(self):
-        def io_func():
-            self.f.writelines('')
-        self._test_close_open_io(io_func)
-
-
-class StdoutTests(unittest.TestCase):
-
-    def test_move_stdout_on_write(self):
-        # Issue 3242: sys.stdout can be replaced (and freed) during a
-        # print statement; prevent a segfault in this case
-        save_stdout = sys.stdout
-
-        class File:
-            def write(self, data):
-                if '\n' in data:
-                    sys.stdout = save_stdout
-
-        try:
-            sys.stdout = File()
-            print "some text"
-        finally:
-            sys.stdout = save_stdout
-
-    def test_del_stdout_before_print(self):
-        # Issue 4597: 'print' with no argument wasn't reporting when
-        # sys.stdout was deleted.
-        save_stdout = sys.stdout
-        del sys.stdout
-        try:
-            print
-        except RuntimeError as e:
-            self.assertEqual(str(e), "lost sys.stdout")
-        else:
-            self.fail("Expected RuntimeError")
-        finally:
-            sys.stdout = save_stdout
-
-    def test_unicode(self):
-        import subprocess
-
-        def get_message(encoding, *code):
-            code = '\n'.join(code)
-            env = os.environ.copy()
-            env['PYTHONIOENCODING'] = encoding
-            process = subprocess.Popen([sys.executable, "-c", code],
-                                       stdout=subprocess.PIPE, env=env)
-            stdout, stderr = process.communicate()
-            self.assertEqual(process.returncode, 0)
-            return stdout
-
-        def check_message(text, encoding, expected):
-            stdout = get_message(encoding,
-                "import sys",
-                "sys.stdout.write(%r)" % text,
-                "sys.stdout.flush()")
-            self.assertEqual(stdout, expected)
-
-        # test the encoding
-        check_message(u'15\u20ac', "iso-8859-15", "15\xa4")
-        check_message(u'15\u20ac', "utf-8", '15\xe2\x82\xac')
-        check_message(u'15\u20ac', "utf-16-le", '1\x005\x00\xac\x20')
-
-        # test the error handler
-        check_message(u'15\u20ac', "iso-8859-1:ignore", "15")
-        check_message(u'15\u20ac', "iso-8859-1:replace", "15?")
-        check_message(u'15\u20ac', "iso-8859-1:backslashreplace", "15\\u20ac")
-
-        # test the buffer API
-        for objtype in ('buffer', 'bytearray'):
-            stdout = get_message('ascii',
-                'import sys',
-                r'sys.stdout.write(%s("\xe9"))' % objtype,
-                'sys.stdout.flush()')
-            self.assertEqual(stdout, "\xe9")
-
-
-def test_main():
-    # Historically, these tests have been sloppy about removing TESTFN.
-    # So get rid of it no matter what.
-    try:
-        run_unittest(AutoFileTests, OtherFileTests, FileSubclassTests,
-            FileThreadingTests, StdoutTests)
-    finally:
-        if os.path.exists(TESTFN):
-            os.unlink(TESTFN)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_filecmp.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_filecmp.py
deleted file mode 100644
index b08c3d0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_filecmp.py
+++ /dev/null
@@ -1,134 +0,0 @@
-
-import os, filecmp, shutil, tempfile
-import unittest
-from test import test_support
-
-class FileCompareTestCase(unittest.TestCase):
-    def setUp(self):
-        self.name = test_support.TESTFN
-        self.name_same = test_support.TESTFN + '-same'
-        self.name_diff = test_support.TESTFN + '-diff'
-        data = 'Contents of file go here.\n'
-        for name in [self.name, self.name_same, self.name_diff]:
-            output = open(name, 'w')
-            output.write(data)
-            output.close()
-
-        output = open(self.name_diff, 'a+')
-        output.write('An extra line.\n')
-        output.close()
-        self.dir = tempfile.gettempdir()
-
-    def tearDown(self):
-        os.unlink(self.name)
-        os.unlink(self.name_same)
-        os.unlink(self.name_diff)
-
-    def test_matching(self):
-        self.assertTrue(filecmp.cmp(self.name, self.name_same),
-                        "Comparing file to itself fails")
-        self.assertTrue(filecmp.cmp(self.name, self.name_same, shallow=False),
-                        "Comparing file to itself fails")
-        self.assertTrue(filecmp.cmp(self.name, self.name, shallow=False),
-                        "Comparing file to identical file fails")
-        self.assertTrue(filecmp.cmp(self.name, self.name),
-                        "Comparing file to identical file fails")
-
-    def test_different(self):
-        self.assertFalse(filecmp.cmp(self.name, self.name_diff),
-                    "Mismatched files compare as equal")
-        self.assertFalse(filecmp.cmp(self.name, self.dir),
-                    "File and directory compare as equal")
-
-class DirCompareTestCase(unittest.TestCase):
-    def setUp(self):
-        tmpdir = tempfile.gettempdir()
-        self.dir = os.path.join(tmpdir, 'dir')
-        self.dir_same = os.path.join(tmpdir, 'dir-same')
-        self.dir_diff = os.path.join(tmpdir, 'dir-diff')
-        self.caseinsensitive = os.path.normcase('A') == os.path.normcase('a')
-        data = 'Contents of file go here.\n'
-        for dir in [self.dir, self.dir_same, self.dir_diff]:
-            shutil.rmtree(dir, True)
-            os.mkdir(dir)
-            if self.caseinsensitive and dir is self.dir_same:
-                fn = 'FiLe'     # Verify case-insensitive comparison
-            else:
-                fn = 'file'
-            output = open(os.path.join(dir, fn), 'w')
-            output.write(data)
-            output.close()
-
-        output = open(os.path.join(self.dir_diff, 'file2'), 'w')
-        output.write('An extra file.\n')
-        output.close()
-
-    def tearDown(self):
-        shutil.rmtree(self.dir)
-        shutil.rmtree(self.dir_same)
-        shutil.rmtree(self.dir_diff)
-
-    def test_cmpfiles(self):
-        self.assertTrue(filecmp.cmpfiles(self.dir, self.dir, ['file']) ==
-                        (['file'], [], []),
-                        "Comparing directory to itself fails")
-        self.assertTrue(filecmp.cmpfiles(self.dir, self.dir_same, ['file']) ==
-                        (['file'], [], []),
-                        "Comparing directory to same fails")
-
-        # Try it with shallow=False
-        self.assertTrue(filecmp.cmpfiles(self.dir, self.dir, ['file'],
-                                         shallow=False) ==
-                        (['file'], [], []),
-                        "Comparing directory to itself fails")
-        self.assertTrue(filecmp.cmpfiles(self.dir, self.dir_same, ['file'],
-                                         shallow=False),
-                        "Comparing directory to same fails")
-
-        # Add different file2
-        output = open(os.path.join(self.dir, 'file2'), 'w')
-        output.write('Different contents.\n')
-        output.close()
-
-        self.assertFalse(filecmp.cmpfiles(self.dir, self.dir_same,
-                                     ['file', 'file2']) ==
-                    (['file'], ['file2'], []),
-                    "Comparing mismatched directories fails")
-
-
-    def test_dircmp(self):
-        # Check attributes for comparison of two identical directories
-        d = filecmp.dircmp(self.dir, self.dir_same)
-        if self.caseinsensitive:
-            self.assertEqual([d.left_list, d.right_list],[['file'], ['FiLe']])
-        else:
-            self.assertEqual([d.left_list, d.right_list],[['file'], ['file']])
-        self.assertTrue(d.common == ['file'])
-        self.assertTrue(d.left_only == d.right_only == [])
-        self.assertTrue(d.same_files == ['file'])
-        self.assertTrue(d.diff_files == [])
-
-        # Check attributes for comparison of two different directories
-        d = filecmp.dircmp(self.dir, self.dir_diff)
-        self.assertTrue(d.left_list == ['file'])
-        self.assertTrue(d.right_list == ['file', 'file2'])
-        self.assertTrue(d.common == ['file'])
-        self.assertTrue(d.left_only == [])
-        self.assertTrue(d.right_only == ['file2'])
-        self.assertTrue(d.same_files == ['file'])
-        self.assertTrue(d.diff_files == [])
-
-        # Add different file2
-        output = open(os.path.join(self.dir, 'file2'), 'w')
-        output.write('Different contents.\n')
-        output.close()
-        d = filecmp.dircmp(self.dir, self.dir_diff)
-        self.assertTrue(d.same_files == ['file'])
-        self.assertTrue(d.diff_files == ['file2'])
-
-
-def test_main():
-    test_support.run_unittest(FileCompareTestCase, DirCompareTestCase)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fileinput.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fileinput.py
deleted file mode 100644
index 79997d3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fileinput.py
+++ /dev/null
@@ -1,225 +0,0 @@
-'''
-Tests for fileinput module.
-Nick Mathewson
-'''
-
-import unittest
-from test.test_support import verbose, TESTFN, run_unittest
-from test.test_support import unlink as safe_unlink
-import sys, re
-from StringIO import StringIO
-from fileinput import FileInput, hook_encoded
-
-# The fileinput module has 2 interfaces: the FileInput class which does
-# all the work, and a few functions (input, etc.) that use a global _state
-# variable.  We only test the FileInput class, since the other functions
-# only provide a thin facade over FileInput.
-
-# Write lines (a list of lines) to temp file number i, and return the
-# temp file's name.
-def writeTmp(i, lines, mode='w'):  # opening in text mode is the default
-    name = TESTFN + str(i)
-    f = open(name, mode)
-    f.writelines(lines)
-    f.close()
-    return name
-
-def remove_tempfiles(*names):
-    for name in names:
-        safe_unlink(name)
-
-class BufferSizesTests(unittest.TestCase):
-    def test_buffer_sizes(self):
-        # First, run the tests with default and teeny buffer size.
-        for round, bs in (0, 0), (1, 30):
-            try:
-                t1 = writeTmp(1, ["Line %s of file 1\n" % (i+1) for i in range(15)])
-                t2 = writeTmp(2, ["Line %s of file 2\n" % (i+1) for i in range(10)])
-                t3 = writeTmp(3, ["Line %s of file 3\n" % (i+1) for i in range(5)])
-                t4 = writeTmp(4, ["Line %s of file 4\n" % (i+1) for i in range(1)])
-                self.buffer_size_test(t1, t2, t3, t4, bs, round)
-            finally:
-                remove_tempfiles(t1, t2, t3, t4)
-
-    def buffer_size_test(self, t1, t2, t3, t4, bs=0, round=0):
-        pat = re.compile(r'LINE (\d+) OF FILE (\d+)')
-
-        start = 1 + round*6
-        if verbose:
-            print '%s. Simple iteration (bs=%s)' % (start+0, bs)
-        fi = FileInput(files=(t1, t2, t3, t4), bufsize=bs)
-        lines = list(fi)
-        fi.close()
-        self.assertEqual(len(lines), 31)
-        self.assertEqual(lines[4], 'Line 5 of file 1\n')
-        self.assertEqual(lines[30], 'Line 1 of file 4\n')
-        self.assertEqual(fi.lineno(), 31)
-        self.assertEqual(fi.filename(), t4)
-
-        if verbose:
-            print '%s. Status variables (bs=%s)' % (start+1, bs)
-        fi = FileInput(files=(t1, t2, t3, t4), bufsize=bs)
-        s = "x"
-        while s and s != 'Line 6 of file 2\n':
-            s = fi.readline()
-        self.assertEqual(fi.filename(), t2)
-        self.assertEqual(fi.lineno(), 21)
-        self.assertEqual(fi.filelineno(), 6)
-        self.assertFalse(fi.isfirstline())
-        self.assertFalse(fi.isstdin())
-
-        if verbose:
-            print '%s. Nextfile (bs=%s)' % (start+2, bs)
-        fi.nextfile()
-        self.assertEqual(fi.readline(), 'Line 1 of file 3\n')
-        self.assertEqual(fi.lineno(), 22)
-        fi.close()
-
-        if verbose:
-            print '%s. Stdin (bs=%s)' % (start+3, bs)
-        fi = FileInput(files=(t1, t2, t3, t4, '-'), bufsize=bs)
-        savestdin = sys.stdin
-        try:
-            sys.stdin = StringIO("Line 1 of stdin\nLine 2 of stdin\n")
-            lines = list(fi)
-            self.assertEqual(len(lines), 33)
-            self.assertEqual(lines[32], 'Line 2 of stdin\n')
-            self.assertEqual(fi.filename(), '<stdin>')
-            fi.nextfile()
-        finally:
-            sys.stdin = savestdin
-
-        if verbose:
-            print '%s. Boundary conditions (bs=%s)' % (start+4, bs)
-        fi = FileInput(files=(t1, t2, t3, t4), bufsize=bs)
-        self.assertEqual(fi.lineno(), 0)
-        self.assertEqual(fi.filename(), None)
-        fi.nextfile()
-        self.assertEqual(fi.lineno(), 0)
-        self.assertEqual(fi.filename(), None)
-
-        if verbose:
-            print '%s. Inplace (bs=%s)' % (start+5, bs)
-        savestdout = sys.stdout
-        try:
-            fi = FileInput(files=(t1, t2, t3, t4), inplace=1, bufsize=bs)
-            for line in fi:
-                line = line[:-1].upper()
-                print line
-            fi.close()
-        finally:
-            sys.stdout = savestdout
-
-        fi = FileInput(files=(t1, t2, t3, t4), bufsize=bs)
-        for line in fi:
-            self.assertEqual(line[-1], '\n')
-            m = pat.match(line[:-1])
-            self.assertNotEqual(m, None)
-            self.assertEqual(int(m.group(1)), fi.filelineno())
-        fi.close()
-
-class FileInputTests(unittest.TestCase):
-    def test_zero_byte_files(self):
-        try:
-            t1 = writeTmp(1, [""])
-            t2 = writeTmp(2, [""])
-            t3 = writeTmp(3, ["The only line there is.\n"])
-            t4 = writeTmp(4, [""])
-            fi = FileInput(files=(t1, t2, t3, t4))
-
-            line = fi.readline()
-            self.assertEqual(line, 'The only line there is.\n')
-            self.assertEqual(fi.lineno(), 1)
-            self.assertEqual(fi.filelineno(), 1)
-            self.assertEqual(fi.filename(), t3)
-
-            line = fi.readline()
-            self.assertFalse(line)
-            self.assertEqual(fi.lineno(), 1)
-            self.assertEqual(fi.filelineno(), 0)
-            self.assertEqual(fi.filename(), t4)
-            fi.close()
-        finally:
-            remove_tempfiles(t1, t2, t3, t4)
-
-    def test_files_that_dont_end_with_newline(self):
-        try:
-            t1 = writeTmp(1, ["A\nB\nC"])
-            t2 = writeTmp(2, ["D\nE\nF"])
-            fi = FileInput(files=(t1, t2))
-            lines = list(fi)
-            self.assertEqual(lines, ["A\n", "B\n", "C", "D\n", "E\n", "F"])
-            self.assertEqual(fi.filelineno(), 3)
-            self.assertEqual(fi.lineno(), 6)
-        finally:
-            remove_tempfiles(t1, t2)
-
-    def test_unicode_filenames(self):
-        try:
-            t1 = writeTmp(1, ["A\nB"])
-            encoding = sys.getfilesystemencoding()
-            if encoding is None:
-                encoding = 'ascii'
-            fi = FileInput(files=unicode(t1, encoding))
-            lines = list(fi)
-            self.assertEqual(lines, ["A\n", "B"])
-        finally:
-            remove_tempfiles(t1)
-
-    def test_fileno(self):
-        try:
-            t1 = writeTmp(1, ["A\nB"])
-            t2 = writeTmp(2, ["C\nD"])
-            fi = FileInput(files=(t1, t2))
-            self.assertEqual(fi.fileno(), -1)
-            line = fi.next()
-            self.assertNotEqual(fi.fileno(), -1)
-            fi.nextfile()
-            self.assertEqual(fi.fileno(), -1)
-            line = list(fi)
-            self.assertEqual(fi.fileno(), -1)
-        finally:
-            remove_tempfiles(t1, t2)
-
-    def test_opening_mode(self):
-        try:
-            # invalid mode, should raise ValueError
-            fi = FileInput(mode="w")
-            self.fail("FileInput should reject invalid mode argument")
-        except ValueError:
-            pass
-        try:
-            # try opening in universal newline mode
-            t1 = writeTmp(1, ["A\nB\r\nC\rD"], mode="wb")
-            fi = FileInput(files=t1, mode="U")
-            lines = list(fi)
-            self.assertEqual(lines, ["A\n", "B\n", "C\n", "D"])
-        finally:
-            remove_tempfiles(t1)
-
-    def test_file_opening_hook(self):
-        try:
-            # cannot use openhook and inplace mode
-            fi = FileInput(inplace=1, openhook=lambda f,m: None)
-            self.fail("FileInput should raise if both inplace "
-                             "and openhook arguments are given")
-        except ValueError:
-            pass
-        try:
-            fi = FileInput(openhook=1)
-            self.fail("FileInput should check openhook for being callable")
-        except ValueError:
-            pass
-        try:
-            t1 = writeTmp(1, ["A\nB"], mode="wb")
-            fi = FileInput(files=t1, openhook=hook_encoded("rot13"))
-            lines = list(fi)
-            self.assertEqual(lines, ["N\n", "O"])
-        finally:
-            remove_tempfiles(t1)
-
-def test_main():
-    run_unittest(BufferSizesTests, FileInputTests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fileio.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fileio.py
deleted file mode 100644
index 378952b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fileio.py
+++ /dev/null
@@ -1,434 +0,0 @@
-# Adapted from test_file.py by Daniel Stutzbach
-
-from __future__ import unicode_literals
-
-import sys
-import os
-import errno
-import unittest
-from array import array
-from weakref import proxy
-from functools import wraps
-
-from test.test_support import TESTFN, check_warnings, run_unittest, make_bad_fd
-from test.test_support import py3k_bytes as bytes
-from test.script_helper import run_python
-
-from _io import FileIO as _FileIO
-
-class AutoFileTests(unittest.TestCase):
-    # file tests for which a test file is automatically set up
-
-    def setUp(self):
-        self.f = _FileIO(TESTFN, 'w')
-
-    def tearDown(self):
-        if self.f:
-            self.f.close()
-        os.remove(TESTFN)
-
-    def testWeakRefs(self):
-        # verify weak references
-        p = proxy(self.f)
-        p.write(bytes(range(10)))
-        self.assertEqual(self.f.tell(), p.tell())
-        self.f.close()
-        self.f = None
-        self.assertRaises(ReferenceError, getattr, p, 'tell')
-
-    def testSeekTell(self):
-        self.f.write(bytes(range(20)))
-        self.assertEqual(self.f.tell(), 20)
-        self.f.seek(0)
-        self.assertEqual(self.f.tell(), 0)
-        self.f.seek(10)
-        self.assertEqual(self.f.tell(), 10)
-        self.f.seek(5, 1)
-        self.assertEqual(self.f.tell(), 15)
-        self.f.seek(-5, 1)
-        self.assertEqual(self.f.tell(), 10)
-        self.f.seek(-5, 2)
-        self.assertEqual(self.f.tell(), 15)
-
-    def testAttributes(self):
-        # verify expected attributes exist
-        f = self.f
-
-        self.assertEqual(f.mode, "wb")
-        self.assertEqual(f.closed, False)
-
-        # verify the attributes are readonly
-        for attr in 'mode', 'closed':
-            self.assertRaises((AttributeError, TypeError),
-                              setattr, f, attr, 'oops')
-
-    def testReadinto(self):
-        # verify readinto
-        self.f.write(b"\x01\x02")
-        self.f.close()
-        a = array(b'b', b'x'*10)
-        self.f = _FileIO(TESTFN, 'r')
-        n = self.f.readinto(a)
-        self.assertEqual(array(b'b', [1, 2]), a[:n])
-
-    def test_none_args(self):
-        self.f.write(b"hi\nbye\nabc")
-        self.f.close()
-        self.f = _FileIO(TESTFN, 'r')
-        self.assertEqual(self.f.read(None), b"hi\nbye\nabc")
-        self.f.seek(0)
-        self.assertEqual(self.f.readline(None), b"hi\n")
-        self.assertEqual(self.f.readlines(None), [b"bye\n", b"abc"])
-
-    def testRepr(self):
-        self.assertEqual(repr(self.f), "<_io.FileIO name=%r mode='%s'>"
-                                       % (self.f.name, self.f.mode))
-        del self.f.name
-        self.assertEqual(repr(self.f), "<_io.FileIO fd=%r mode='%s'>"
-                                       % (self.f.fileno(), self.f.mode))
-        self.f.close()
-        self.assertEqual(repr(self.f), "<_io.FileIO [closed]>")
-
-    def testErrors(self):
-        f = self.f
-        self.assertTrue(not f.isatty())
-        self.assertTrue(not f.closed)
-        #self.assertEqual(f.name, TESTFN)
-        self.assertRaises(ValueError, f.read, 10) # Open for reading
-        f.close()
-        self.assertTrue(f.closed)
-        f = _FileIO(TESTFN, 'r')
-        self.assertRaises(TypeError, f.readinto, "")
-        self.assertTrue(not f.closed)
-        f.close()
-        self.assertTrue(f.closed)
-
-    def testMethods(self):
-        methods = ['fileno', 'isatty', 'read', 'readinto',
-                   'seek', 'tell', 'truncate', 'write', 'seekable',
-                   'readable', 'writable']
-        if sys.platform.startswith('atheos'):
-            methods.remove('truncate')
-
-        self.f.close()
-        self.assertTrue(self.f.closed)
-
-        for methodname in methods:
-            method = getattr(self.f, methodname)
-            # should raise on closed file
-            self.assertRaises(ValueError, method)
-
-    def testOpendir(self):
-        # Issue 3703: opening a directory should fill the errno
-        # Windows always returns "[Errno 13]: Permission denied
-        # Unix calls dircheck() and returns "[Errno 21]: Is a directory"
-        try:
-            _FileIO('.', 'r')
-        except IOError as e:
-            self.assertNotEqual(e.errno, 0)
-            self.assertEqual(e.filename, ".")
-        else:
-            self.fail("Should have raised IOError")
-
-    #A set of functions testing that we get expected behaviour if someone has
-    #manually closed the internal file descriptor.  First, a decorator:
-    def ClosedFD(func):
-        @wraps(func)
-        def wrapper(self):
-            #forcibly close the fd before invoking the problem function
-            f = self.f
-            os.close(f.fileno())
-            try:
-                func(self, f)
-            finally:
-                try:
-                    self.f.close()
-                except IOError:
-                    pass
-        return wrapper
-
-    def ClosedFDRaises(func):
-        @wraps(func)
-        def wrapper(self):
-            #forcibly close the fd before invoking the problem function
-            f = self.f
-            os.close(f.fileno())
-            try:
-                func(self, f)
-            except IOError as e:
-                self.assertEqual(e.errno, errno.EBADF)
-            else:
-                self.fail("Should have raised IOError")
-            finally:
-                try:
-                    self.f.close()
-                except IOError:
-                    pass
-        return wrapper
-
-    @ClosedFDRaises
-    def testErrnoOnClose(self, f):
-        f.close()
-
-    @ClosedFDRaises
-    def testErrnoOnClosedWrite(self, f):
-        f.write('a')
-
-    @ClosedFDRaises
-    def testErrnoOnClosedSeek(self, f):
-        f.seek(0)
-
-    @ClosedFDRaises
-    def testErrnoOnClosedTell(self, f):
-        f.tell()
-
-    @ClosedFDRaises
-    def testErrnoOnClosedTruncate(self, f):
-        f.truncate(0)
-
-    @ClosedFD
-    def testErrnoOnClosedSeekable(self, f):
-        f.seekable()
-
-    @ClosedFD
-    def testErrnoOnClosedReadable(self, f):
-        f.readable()
-
-    @ClosedFD
-    def testErrnoOnClosedWritable(self, f):
-        f.writable()
-
-    @ClosedFD
-    def testErrnoOnClosedFileno(self, f):
-        f.fileno()
-
-    @ClosedFD
-    def testErrnoOnClosedIsatty(self, f):
-        self.assertEqual(f.isatty(), False)
-
-    def ReopenForRead(self):
-        try:
-            self.f.close()
-        except IOError:
-            pass
-        self.f = _FileIO(TESTFN, 'r')
-        os.close(self.f.fileno())
-        return self.f
-
-    @ClosedFDRaises
-    def testErrnoOnClosedRead(self, f):
-        f = self.ReopenForRead()
-        f.read(1)
-
-    @ClosedFDRaises
-    def testErrnoOnClosedReadall(self, f):
-        f = self.ReopenForRead()
-        f.readall()
-
-    @ClosedFDRaises
-    def testErrnoOnClosedReadinto(self, f):
-        f = self.ReopenForRead()
-        a = array(b'b', b'x'*10)
-        f.readinto(a)
-
-class OtherFileTests(unittest.TestCase):
-
-    def testAbles(self):
-        try:
-            f = _FileIO(TESTFN, "w")
-            self.assertEqual(f.readable(), False)
-            self.assertEqual(f.writable(), True)
-            self.assertEqual(f.seekable(), True)
-            f.close()
-
-            f = _FileIO(TESTFN, "r")
-            self.assertEqual(f.readable(), True)
-            self.assertEqual(f.writable(), False)
-            self.assertEqual(f.seekable(), True)
-            f.close()
-
-            f = _FileIO(TESTFN, "a+")
-            self.assertEqual(f.readable(), True)
-            self.assertEqual(f.writable(), True)
-            self.assertEqual(f.seekable(), True)
-            self.assertEqual(f.isatty(), False)
-            f.close()
-
-            if sys.platform != "win32":
-                try:
-                    f = _FileIO("/dev/tty", "a")
-                except EnvironmentError:
-                    # When run in a cron job there just aren't any
-                    # ttys, so skip the test.  This also handles other
-                    # OS'es that don't support /dev/tty.
-                    pass
-                else:
-                    self.assertEqual(f.readable(), False)
-                    self.assertEqual(f.writable(), True)
-                    if sys.platform != "darwin" and \
-                       'bsd' not in sys.platform and \
-                       not sys.platform.startswith('sunos'):
-                        # Somehow /dev/tty appears seekable on some BSDs
-                        self.assertEqual(f.seekable(), False)
-                    self.assertEqual(f.isatty(), True)
-                    f.close()
-        finally:
-            os.unlink(TESTFN)
-
-    def testModeStrings(self):
-        # check invalid mode strings
-        for mode in ("", "aU", "wU+", "rw", "rt"):
-            try:
-                f = _FileIO(TESTFN, mode)
-            except ValueError:
-                pass
-            else:
-                f.close()
-                self.fail('%r is an invalid file mode' % mode)
-
-    def testUnicodeOpen(self):
-        # verify repr works for unicode too
-        f = _FileIO(str(TESTFN), "w")
-        f.close()
-        os.unlink(TESTFN)
-
-    def testBytesOpen(self):
-        # Opening a bytes filename
-        try:
-            fn = TESTFN.encode("ascii")
-        except UnicodeEncodeError:
-            # Skip test
-            return
-        f = _FileIO(fn, "w")
-        try:
-            f.write(b"abc")
-            f.close()
-            with open(TESTFN, "rb") as f:
-                self.assertEqual(f.read(), b"abc")
-        finally:
-            os.unlink(TESTFN)
-
-    def testInvalidFd(self):
-        self.assertRaises(ValueError, _FileIO, -10)
-        self.assertRaises(OSError, _FileIO, make_bad_fd())
-        if sys.platform == 'win32':
-            import msvcrt
-            self.assertRaises(IOError, msvcrt.get_osfhandle, make_bad_fd())
-
-    def testBadModeArgument(self):
-        # verify that we get a sensible error message for bad mode argument
-        bad_mode = "qwerty"
-        try:
-            f = _FileIO(TESTFN, bad_mode)
-        except ValueError as msg:
-            if msg.args[0] != 0:
-                s = str(msg)
-                if TESTFN in s or bad_mode not in s:
-                    self.fail("bad error message for invalid mode: %s" % s)
-            # if msg.args[0] == 0, we're probably on Windows where there may be
-            # no obvious way to discover why open() failed.
-        else:
-            f.close()
-            self.fail("no error for invalid mode: %s" % bad_mode)
-
-    def testTruncate(self):
-        f = _FileIO(TESTFN, 'w')
-        f.write(bytes(bytearray(range(10))))
-        self.assertEqual(f.tell(), 10)
-        f.truncate(5)
-        self.assertEqual(f.tell(), 10)
-        self.assertEqual(f.seek(0, os.SEEK_END), 5)
-        f.truncate(15)
-        self.assertEqual(f.tell(), 5)
-        self.assertEqual(f.seek(0, os.SEEK_END), 15)
-        f.close()
-
-    def testTruncateOnWindows(self):
-        def bug801631():
-            # SF bug <http://www.python.org/sf/801631>
-            # "file.truncate fault on windows"
-            f = _FileIO(TESTFN, 'w')
-            f.write(bytes(range(11)))
-            f.close()
-
-            f = _FileIO(TESTFN,'r+')
-            data = f.read(5)
-            if data != bytes(range(5)):
-                self.fail("Read on file opened for update failed %r" % data)
-            if f.tell() != 5:
-                self.fail("File pos after read wrong %d" % f.tell())
-
-            f.truncate()
-            if f.tell() != 5:
-                self.fail("File pos after ftruncate wrong %d" % f.tell())
-
-            f.close()
-            size = os.path.getsize(TESTFN)
-            if size != 5:
-                self.fail("File size after ftruncate wrong %d" % size)
-
-        try:
-            bug801631()
-        finally:
-            os.unlink(TESTFN)
-
-    def testAppend(self):
-        try:
-            f = open(TESTFN, 'wb')
-            f.write(b'spam')
-            f.close()
-            f = open(TESTFN, 'ab')
-            f.write(b'eggs')
-            f.close()
-            f = open(TESTFN, 'rb')
-            d = f.read()
-            f.close()
-            self.assertEqual(d, b'spameggs')
-        finally:
-            try:
-                os.unlink(TESTFN)
-            except:
-                pass
-
-    def testInvalidInit(self):
-        self.assertRaises(TypeError, _FileIO, "1", 0, 0)
-
-    def testWarnings(self):
-        with check_warnings(quiet=True) as w:
-            self.assertEqual(w.warnings, [])
-            self.assertRaises(TypeError, _FileIO, [])
-            self.assertEqual(w.warnings, [])
-            self.assertRaises(ValueError, _FileIO, "/some/invalid/name", "rt")
-            self.assertEqual(w.warnings, [])
-
-    def test_surrogates(self):
-        # Issue #8438: try to open a filename containing surrogates.
-        # It should either fail because the file doesn't exist or the filename
-        # can't be represented using the filesystem encoding, but not because
-        # of a LookupError for the error handler "surrogateescape".
-        filename = u'\udc80.txt'
-        try:
-            with _FileIO(filename):
-                pass
-        except (UnicodeEncodeError, IOError):
-            pass
-        # Spawn a separate Python process with a different "file system
-        # default encoding", to exercise this further.
-        env = dict(os.environ)
-        env[b'LC_CTYPE'] = b'C'
-        _, out = run_python('-c', 'import _io; _io.FileIO(%r)' % filename, env=env)
-        if ('UnicodeEncodeError' not in out and
-            'IOError: [Errno 2] No such file or directory' not in out):
-            self.fail('Bad output: %r' % out)
-
-def test_main():
-    # Historically, these tests have been sloppy about removing TESTFN.
-    # So get rid of it no matter what.
-    try:
-        run_unittest(AutoFileTests, OtherFileTests)
-    finally:
-        if os.path.exists(TESTFN):
-            os.unlink(TESTFN)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_float.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_float.py
deleted file mode 100644
index 28b7a1b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_float.py
+++ /dev/null
@@ -1,1396 +0,0 @@
-
-import unittest, struct
-import os
-from test import test_support
-import math
-from math import isinf, isnan, copysign, ldexp
-import operator
-import random
-import fractions
-import sys
-
-INF = float("inf")
-NAN = float("nan")
-
-have_getformat = hasattr(float, "__getformat__")
-requires_getformat = unittest.skipUnless(have_getformat,
-                                         "requires __getformat__")
-requires_setformat = unittest.skipUnless(hasattr(float, "__setformat__"),
-                                         "requires __setformat__")
-# decorator for skipping tests on non-IEEE 754 platforms
-requires_IEEE_754 = unittest.skipUnless(have_getformat and
-    float.__getformat__("double").startswith("IEEE"),
-    "test requires IEEE 754 doubles")
-
-#locate file with float format test values
-test_dir = os.path.dirname(__file__) or os.curdir
-format_testfile = os.path.join(test_dir, 'formatfloat_testcases.txt')
-
-class GeneralFloatCases(unittest.TestCase):
-
-    def test_float(self):
-        self.assertEqual(float(3.14), 3.14)
-        self.assertEqual(float(314), 314.0)
-        self.assertEqual(float(314L), 314.0)
-        self.assertEqual(float("  3.14  "), 3.14)
-        self.assertRaises(ValueError, float, "  0x3.1  ")
-        self.assertRaises(ValueError, float, "  -0x3.p-1  ")
-        self.assertRaises(ValueError, float, "  +0x3.p-1  ")
-        self.assertRaises(ValueError, float, "++3.14")
-        self.assertRaises(ValueError, float, "+-3.14")
-        self.assertRaises(ValueError, float, "-+3.14")
-        self.assertRaises(ValueError, float, "--3.14")
-        # check that we don't accept alternate exponent markers
-        self.assertRaises(ValueError, float, "-1.7d29")
-        self.assertRaises(ValueError, float, "3D-14")
-        if test_support.have_unicode:
-            self.assertEqual(float(unicode("  3.14  ")), 3.14)
-            self.assertEqual(float(unicode("  \u0663.\u0661\u0664  ",'raw-unicode-escape')), 3.14)
-
-        # extra long strings should no longer be a problem
-        # (in 2.6, long unicode inputs to float raised ValueError)
-        float('.' + '1'*1000)
-        float(unicode('.' + '1'*1000))
-
-    def check_conversion_to_int(self, x):
-        """Check that int(x) has the correct value and type, for a float x."""
-        n = int(x)
-        if x >= 0.0:
-            # x >= 0 and n = int(x)  ==>  n <= x < n + 1
-            self.assertLessEqual(n, x)
-            self.assertLess(x, n + 1)
-        else:
-            # x < 0 and n = int(x)  ==>  n >= x > n - 1
-            self.assertGreaterEqual(n, x)
-            self.assertGreater(x, n - 1)
-
-        # Result should be an int if within range, else a long.
-        if -sys.maxint-1 <= n <= sys.maxint:
-            self.assertEqual(type(n), int)
-        else:
-            self.assertEqual(type(n), long)
-
-        # Double check.
-        self.assertEqual(type(int(n)), type(n))
-
-    def test_conversion_to_int(self):
-        # Check that floats within the range of an int convert to type
-        # int, not long.  (issue #11144.)
-        boundary = float(sys.maxint + 1)
-        epsilon = 2**-sys.float_info.mant_dig * boundary
-
-        # These 2 floats are either side of the positive int/long boundary on
-        # both 32-bit and 64-bit systems.
-        self.check_conversion_to_int(boundary - epsilon)
-        self.check_conversion_to_int(boundary)
-
-        # These floats are either side of the negative long/int boundary on
-        # 64-bit systems...
-        self.check_conversion_to_int(-boundary - 2*epsilon)
-        self.check_conversion_to_int(-boundary)
-
-        # ... and these ones are either side of the negative long/int
-        # boundary on 32-bit systems.
-        self.check_conversion_to_int(-boundary - 1.0)
-        self.check_conversion_to_int(-boundary - 1.0 + 2*epsilon)
-
-    @test_support.run_with_locale('LC_NUMERIC', 'fr_FR', 'de_DE')
-    def test_float_with_comma(self):
-        # set locale to something that doesn't use '.' for the decimal point
-        # float must not accept the locale specific decimal point but
-        # it still has to accept the normal python syntax
-        import locale
-        if not locale.localeconv()['decimal_point'] == ',':
-            return
-
-        self.assertEqual(float("  3.14  "), 3.14)
-        self.assertEqual(float("+3.14  "), 3.14)
-        self.assertEqual(float("-3.14  "), -3.14)
-        self.assertEqual(float(".14  "), .14)
-        self.assertEqual(float("3.  "), 3.0)
-        self.assertEqual(float("3.e3  "), 3000.0)
-        self.assertEqual(float("3.2e3  "), 3200.0)
-        self.assertEqual(float("2.5e-1  "), 0.25)
-        self.assertEqual(float("5e-1"), 0.5)
-        self.assertRaises(ValueError, float, "  3,14  ")
-        self.assertRaises(ValueError, float, "  +3,14  ")
-        self.assertRaises(ValueError, float, "  -3,14  ")
-        self.assertRaises(ValueError, float, "  0x3.1  ")
-        self.assertRaises(ValueError, float, "  -0x3.p-1  ")
-        self.assertRaises(ValueError, float, "  +0x3.p-1  ")
-        self.assertEqual(float("  25.e-1  "), 2.5)
-        self.assertEqual(test_support.fcmp(float("  .25e-1  "), .025), 0)
-
-    def test_floatconversion(self):
-        # Make sure that calls to __float__() work properly
-        class Foo0:
-            def __float__(self):
-                return 42.
-
-        class Foo1(object):
-            def __float__(self):
-                return 42.
-
-        class Foo2(float):
-            def __float__(self):
-                return 42.
-
-        class Foo3(float):
-            def __new__(cls, value=0.):
-                return float.__new__(cls, 2*value)
-
-            def __float__(self):
-                return self
-
-        class Foo4(float):
-            def __float__(self):
-                return 42
-
-        # Issue 5759: __float__ not called on str subclasses (though it is on
-        # unicode subclasses).
-        class FooStr(str):
-            def __float__(self):
-                return float(str(self)) + 1
-
-        class FooUnicode(unicode):
-            def __float__(self):
-                return float(unicode(self)) + 1
-
-        self.assertAlmostEqual(float(Foo0()), 42.)
-        self.assertAlmostEqual(float(Foo1()), 42.)
-        self.assertAlmostEqual(float(Foo2()), 42.)
-        self.assertAlmostEqual(float(Foo3(21)), 42.)
-        self.assertRaises(TypeError, float, Foo4(42))
-        self.assertAlmostEqual(float(FooUnicode('8')), 9.)
-        self.assertAlmostEqual(float(FooStr('8')), 9.)
-
-    def test_floatasratio(self):
-        for f, ratio in [
-                (0.875, (7, 8)),
-                (-0.875, (-7, 8)),
-                (0.0, (0, 1)),
-                (11.5, (23, 2)),
-            ]:
-            self.assertEqual(f.as_integer_ratio(), ratio)
-
-        for i in range(10000):
-            f = random.random()
-            f *= 10 ** random.randint(-100, 100)
-            n, d = f.as_integer_ratio()
-            self.assertEqual(float(n).__truediv__(d), f)
-
-        R = fractions.Fraction
-        self.assertEqual(R(0, 1),
-                         R(*float(0.0).as_integer_ratio()))
-        self.assertEqual(R(5, 2),
-                         R(*float(2.5).as_integer_ratio()))
-        self.assertEqual(R(1, 2),
-                         R(*float(0.5).as_integer_ratio()))
-        self.assertEqual(R(4728779608739021, 2251799813685248),
-                         R(*float(2.1).as_integer_ratio()))
-        self.assertEqual(R(-4728779608739021, 2251799813685248),
-                         R(*float(-2.1).as_integer_ratio()))
-        self.assertEqual(R(-2100, 1),
-                         R(*float(-2100.0).as_integer_ratio()))
-
-        self.assertRaises(OverflowError, float('inf').as_integer_ratio)
-        self.assertRaises(OverflowError, float('-inf').as_integer_ratio)
-        self.assertRaises(ValueError, float('nan').as_integer_ratio)
-
-    def assertEqualAndEqualSign(self, a, b):
-        # fail unless a == b and a and b have the same sign bit;
-        # the only difference from assertEqual is that this test
-        # distinguishes -0.0 and 0.0.
-        self.assertEqual((a, copysign(1.0, a)), (b, copysign(1.0, b)))
-
-    @requires_IEEE_754
-    def test_float_mod(self):
-        # Check behaviour of % operator for IEEE 754 special cases.
-        # In particular, check signs of zeros.
-        mod = operator.mod
-
-        self.assertEqualAndEqualSign(mod(-1.0, 1.0), 0.0)
-        self.assertEqualAndEqualSign(mod(-1e-100, 1.0), 1.0)
-        self.assertEqualAndEqualSign(mod(-0.0, 1.0), 0.0)
-        self.assertEqualAndEqualSign(mod(0.0, 1.0), 0.0)
-        self.assertEqualAndEqualSign(mod(1e-100, 1.0), 1e-100)
-        self.assertEqualAndEqualSign(mod(1.0, 1.0), 0.0)
-
-        self.assertEqualAndEqualSign(mod(-1.0, -1.0), -0.0)
-        self.assertEqualAndEqualSign(mod(-1e-100, -1.0), -1e-100)
-        self.assertEqualAndEqualSign(mod(-0.0, -1.0), -0.0)
-        self.assertEqualAndEqualSign(mod(0.0, -1.0), -0.0)
-        self.assertEqualAndEqualSign(mod(1e-100, -1.0), -1.0)
-        self.assertEqualAndEqualSign(mod(1.0, -1.0), -0.0)
-
-    @requires_IEEE_754
-    def test_float_pow(self):
-        # test builtin pow and ** operator for IEEE 754 special cases.
-        # Special cases taken from section F.9.4.4 of the C99 specification
-
-        for pow_op in pow, operator.pow:
-            # x**NAN is NAN for any x except 1
-            self.assertTrue(isnan(pow_op(-INF, NAN)))
-            self.assertTrue(isnan(pow_op(-2.0, NAN)))
-            self.assertTrue(isnan(pow_op(-1.0, NAN)))
-            self.assertTrue(isnan(pow_op(-0.5, NAN)))
-            self.assertTrue(isnan(pow_op(-0.0, NAN)))
-            self.assertTrue(isnan(pow_op(0.0, NAN)))
-            self.assertTrue(isnan(pow_op(0.5, NAN)))
-            self.assertTrue(isnan(pow_op(2.0, NAN)))
-            self.assertTrue(isnan(pow_op(INF, NAN)))
-            self.assertTrue(isnan(pow_op(NAN, NAN)))
-
-            # NAN**y is NAN for any y except +-0
-            self.assertTrue(isnan(pow_op(NAN, -INF)))
-            self.assertTrue(isnan(pow_op(NAN, -2.0)))
-            self.assertTrue(isnan(pow_op(NAN, -1.0)))
-            self.assertTrue(isnan(pow_op(NAN, -0.5)))
-            self.assertTrue(isnan(pow_op(NAN, 0.5)))
-            self.assertTrue(isnan(pow_op(NAN, 1.0)))
-            self.assertTrue(isnan(pow_op(NAN, 2.0)))
-            self.assertTrue(isnan(pow_op(NAN, INF)))
-
-            # (+-0)**y raises ZeroDivisionError for y a negative odd integer
-            self.assertRaises(ZeroDivisionError, pow_op, -0.0, -1.0)
-            self.assertRaises(ZeroDivisionError, pow_op, 0.0, -1.0)
-
-            # (+-0)**y raises ZeroDivisionError for y finite and negative
-            # but not an odd integer
-            self.assertRaises(ZeroDivisionError, pow_op, -0.0, -2.0)
-            self.assertRaises(ZeroDivisionError, pow_op, -0.0, -0.5)
-            self.assertRaises(ZeroDivisionError, pow_op, 0.0, -2.0)
-            self.assertRaises(ZeroDivisionError, pow_op, 0.0, -0.5)
-
-            # (+-0)**y is +-0 for y a positive odd integer
-            self.assertEqualAndEqualSign(pow_op(-0.0, 1.0), -0.0)
-            self.assertEqualAndEqualSign(pow_op(0.0, 1.0), 0.0)
-
-            # (+-0)**y is 0 for y finite and positive but not an odd integer
-            self.assertEqualAndEqualSign(pow_op(-0.0, 0.5), 0.0)
-            self.assertEqualAndEqualSign(pow_op(-0.0, 2.0), 0.0)
-            self.assertEqualAndEqualSign(pow_op(0.0, 0.5), 0.0)
-            self.assertEqualAndEqualSign(pow_op(0.0, 2.0), 0.0)
-
-            # (-1)**+-inf is 1
-            self.assertEqualAndEqualSign(pow_op(-1.0, -INF), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-1.0, INF), 1.0)
-
-            # 1**y is 1 for any y, even if y is an infinity or nan
-            self.assertEqualAndEqualSign(pow_op(1.0, -INF), 1.0)
-            self.assertEqualAndEqualSign(pow_op(1.0, -2.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(1.0, -1.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(1.0, -0.5), 1.0)
-            self.assertEqualAndEqualSign(pow_op(1.0, -0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(1.0, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(1.0, 0.5), 1.0)
-            self.assertEqualAndEqualSign(pow_op(1.0, 1.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(1.0, 2.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(1.0, INF), 1.0)
-            self.assertEqualAndEqualSign(pow_op(1.0, NAN), 1.0)
-
-            # x**+-0 is 1 for any x, even if x is a zero, infinity, or nan
-            self.assertEqualAndEqualSign(pow_op(-INF, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-2.0, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-1.0, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-0.5, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-0.0, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(0.0, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(0.5, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(1.0, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(2.0, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(INF, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(NAN, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-INF, -0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-2.0, -0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-1.0, -0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-0.5, -0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-0.0, -0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(0.0, -0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(0.5, -0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(1.0, -0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(2.0, -0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(INF, -0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(NAN, -0.0), 1.0)
-
-            # x**y raises ValueError for finite negative x and non-integral y
-            self.assertRaises(ValueError, pow_op, -2.0, -0.5)
-            self.assertRaises(ValueError, pow_op, -2.0, 0.5)
-            self.assertRaises(ValueError, pow_op, -1.0, -0.5)
-            self.assertRaises(ValueError, pow_op, -1.0, 0.5)
-            self.assertRaises(ValueError, pow_op, -0.5, -0.5)
-            self.assertRaises(ValueError, pow_op, -0.5, 0.5)
-
-            # x**-INF is INF for abs(x) < 1
-            self.assertEqualAndEqualSign(pow_op(-0.5, -INF), INF)
-            self.assertEqualAndEqualSign(pow_op(-0.0, -INF), INF)
-            self.assertEqualAndEqualSign(pow_op(0.0, -INF), INF)
-            self.assertEqualAndEqualSign(pow_op(0.5, -INF), INF)
-
-            # x**-INF is 0 for abs(x) > 1
-            self.assertEqualAndEqualSign(pow_op(-INF, -INF), 0.0)
-            self.assertEqualAndEqualSign(pow_op(-2.0, -INF), 0.0)
-            self.assertEqualAndEqualSign(pow_op(2.0, -INF), 0.0)
-            self.assertEqualAndEqualSign(pow_op(INF, -INF), 0.0)
-
-            # x**INF is 0 for abs(x) < 1
-            self.assertEqualAndEqualSign(pow_op(-0.5, INF), 0.0)
-            self.assertEqualAndEqualSign(pow_op(-0.0, INF), 0.0)
-            self.assertEqualAndEqualSign(pow_op(0.0, INF), 0.0)
-            self.assertEqualAndEqualSign(pow_op(0.5, INF), 0.0)
-
-            # x**INF is INF for abs(x) > 1
-            self.assertEqualAndEqualSign(pow_op(-INF, INF), INF)
-            self.assertEqualAndEqualSign(pow_op(-2.0, INF), INF)
-            self.assertEqualAndEqualSign(pow_op(2.0, INF), INF)
-            self.assertEqualAndEqualSign(pow_op(INF, INF), INF)
-
-            # (-INF)**y is -0.0 for y a negative odd integer
-            self.assertEqualAndEqualSign(pow_op(-INF, -1.0), -0.0)
-
-            # (-INF)**y is 0.0 for y negative but not an odd integer
-            self.assertEqualAndEqualSign(pow_op(-INF, -0.5), 0.0)
-            self.assertEqualAndEqualSign(pow_op(-INF, -2.0), 0.0)
-
-            # (-INF)**y is -INF for y a positive odd integer
-            self.assertEqualAndEqualSign(pow_op(-INF, 1.0), -INF)
-
-            # (-INF)**y is INF for y positive but not an odd integer
-            self.assertEqualAndEqualSign(pow_op(-INF, 0.5), INF)
-            self.assertEqualAndEqualSign(pow_op(-INF, 2.0), INF)
-
-            # INF**y is INF for y positive
-            self.assertEqualAndEqualSign(pow_op(INF, 0.5), INF)
-            self.assertEqualAndEqualSign(pow_op(INF, 1.0), INF)
-            self.assertEqualAndEqualSign(pow_op(INF, 2.0), INF)
-
-            # INF**y is 0.0 for y negative
-            self.assertEqualAndEqualSign(pow_op(INF, -2.0), 0.0)
-            self.assertEqualAndEqualSign(pow_op(INF, -1.0), 0.0)
-            self.assertEqualAndEqualSign(pow_op(INF, -0.5), 0.0)
-
-            # basic checks not covered by the special cases above
-            self.assertEqualAndEqualSign(pow_op(-2.0, -2.0), 0.25)
-            self.assertEqualAndEqualSign(pow_op(-2.0, -1.0), -0.5)
-            self.assertEqualAndEqualSign(pow_op(-2.0, -0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-2.0, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-2.0, 1.0), -2.0)
-            self.assertEqualAndEqualSign(pow_op(-2.0, 2.0), 4.0)
-            self.assertEqualAndEqualSign(pow_op(-1.0, -2.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-1.0, -1.0), -1.0)
-            self.assertEqualAndEqualSign(pow_op(-1.0, -0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-1.0, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-1.0, 1.0), -1.0)
-            self.assertEqualAndEqualSign(pow_op(-1.0, 2.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(2.0, -2.0), 0.25)
-            self.assertEqualAndEqualSign(pow_op(2.0, -1.0), 0.5)
-            self.assertEqualAndEqualSign(pow_op(2.0, -0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(2.0, 0.0), 1.0)
-            self.assertEqualAndEqualSign(pow_op(2.0, 1.0), 2.0)
-            self.assertEqualAndEqualSign(pow_op(2.0, 2.0), 4.0)
-
-            # 1 ** large and -1 ** large; some libms apparently
-            # have problems with these
-            self.assertEqualAndEqualSign(pow_op(1.0, -1e100), 1.0)
-            self.assertEqualAndEqualSign(pow_op(1.0, 1e100), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-1.0, -1e100), 1.0)
-            self.assertEqualAndEqualSign(pow_op(-1.0, 1e100), 1.0)
-
-            # check sign for results that underflow to 0
-            self.assertEqualAndEqualSign(pow_op(-2.0, -2000.0), 0.0)
-            self.assertRaises(ValueError, pow_op, -2.0, -2000.5)
-            self.assertEqualAndEqualSign(pow_op(-2.0, -2001.0), -0.0)
-            self.assertEqualAndEqualSign(pow_op(2.0, -2000.0), 0.0)
-            self.assertEqualAndEqualSign(pow_op(2.0, -2000.5), 0.0)
-            self.assertEqualAndEqualSign(pow_op(2.0, -2001.0), 0.0)
-            self.assertEqualAndEqualSign(pow_op(-0.5, 2000.0), 0.0)
-            self.assertRaises(ValueError, pow_op, -0.5, 2000.5)
-            self.assertEqualAndEqualSign(pow_op(-0.5, 2001.0), -0.0)
-            self.assertEqualAndEqualSign(pow_op(0.5, 2000.0), 0.0)
-            self.assertEqualAndEqualSign(pow_op(0.5, 2000.5), 0.0)
-            self.assertEqualAndEqualSign(pow_op(0.5, 2001.0), 0.0)
-
-            # check we don't raise an exception for subnormal results,
-            # and validate signs.  Tests currently disabled, since
-            # they fail on systems where a subnormal result from pow
-            # is flushed to zero (e.g. Debian/ia64.)
-            #self.assertTrue(0.0 < pow_op(0.5, 1048) < 1e-315)
-            #self.assertTrue(0.0 < pow_op(-0.5, 1048) < 1e-315)
-            #self.assertTrue(0.0 < pow_op(0.5, 1047) < 1e-315)
-            #self.assertTrue(0.0 > pow_op(-0.5, 1047) > -1e-315)
-            #self.assertTrue(0.0 < pow_op(2.0, -1048) < 1e-315)
-            #self.assertTrue(0.0 < pow_op(-2.0, -1048) < 1e-315)
-            #self.assertTrue(0.0 < pow_op(2.0, -1047) < 1e-315)
-            #self.assertTrue(0.0 > pow_op(-2.0, -1047) > -1e-315)
-
-
-@requires_setformat
-class FormatFunctionsTestCase(unittest.TestCase):
-
-    def setUp(self):
-        self.save_formats = {'double':float.__getformat__('double'),
-                             'float':float.__getformat__('float')}
-
-    def tearDown(self):
-        float.__setformat__('double', self.save_formats['double'])
-        float.__setformat__('float', self.save_formats['float'])
-
-    def test_getformat(self):
-        self.assertIn(float.__getformat__('double'),
-                      ['unknown', 'IEEE, big-endian', 'IEEE, little-endian'])
-        self.assertIn(float.__getformat__('float'),
-                      ['unknown', 'IEEE, big-endian', 'IEEE, little-endian'])
-        self.assertRaises(ValueError, float.__getformat__, 'chicken')
-        self.assertRaises(TypeError, float.__getformat__, 1)
-
-    def test_setformat(self):
-        for t in 'double', 'float':
-            float.__setformat__(t, 'unknown')
-            if self.save_formats[t] == 'IEEE, big-endian':
-                self.assertRaises(ValueError, float.__setformat__,
-                                  t, 'IEEE, little-endian')
-            elif self.save_formats[t] == 'IEEE, little-endian':
-                self.assertRaises(ValueError, float.__setformat__,
-                                  t, 'IEEE, big-endian')
-            else:
-                self.assertRaises(ValueError, float.__setformat__,
-                                  t, 'IEEE, big-endian')
-                self.assertRaises(ValueError, float.__setformat__,
-                                  t, 'IEEE, little-endian')
-            self.assertRaises(ValueError, float.__setformat__,
-                              t, 'chicken')
-        self.assertRaises(ValueError, float.__setformat__,
-                          'chicken', 'unknown')
-
-BE_DOUBLE_INF = '\x7f\xf0\x00\x00\x00\x00\x00\x00'
-LE_DOUBLE_INF = ''.join(reversed(BE_DOUBLE_INF))
-BE_DOUBLE_NAN = '\x7f\xf8\x00\x00\x00\x00\x00\x00'
-LE_DOUBLE_NAN = ''.join(reversed(BE_DOUBLE_NAN))
-
-BE_FLOAT_INF = '\x7f\x80\x00\x00'
-LE_FLOAT_INF = ''.join(reversed(BE_FLOAT_INF))
-BE_FLOAT_NAN = '\x7f\xc0\x00\x00'
-LE_FLOAT_NAN = ''.join(reversed(BE_FLOAT_NAN))
-
-# on non-IEEE platforms, attempting to unpack a bit pattern
-# representing an infinity or a NaN should raise an exception.
-
-@requires_setformat
-class UnknownFormatTestCase(unittest.TestCase):
-    def setUp(self):
-        self.save_formats = {'double':float.__getformat__('double'),
-                             'float':float.__getformat__('float')}
-        float.__setformat__('double', 'unknown')
-        float.__setformat__('float', 'unknown')
-
-    def tearDown(self):
-        float.__setformat__('double', self.save_formats['double'])
-        float.__setformat__('float', self.save_formats['float'])
-
-    def test_double_specials_dont_unpack(self):
-        for fmt, data in [('>d', BE_DOUBLE_INF),
-                          ('>d', BE_DOUBLE_NAN),
-                          ('<d', LE_DOUBLE_INF),
-                          ('<d', LE_DOUBLE_NAN)]:
-            self.assertRaises(ValueError, struct.unpack, fmt, data)
-
-    def test_float_specials_dont_unpack(self):
-        for fmt, data in [('>f', BE_FLOAT_INF),
-                          ('>f', BE_FLOAT_NAN),
-                          ('<f', LE_FLOAT_INF),
-                          ('<f', LE_FLOAT_NAN)]:
-            self.assertRaises(ValueError, struct.unpack, fmt, data)
-
-
-# on an IEEE platform, all we guarantee is that bit patterns
-# representing infinities or NaNs do not raise an exception; all else
-# is accident (today).
-# let's also try to guarantee that -0.0 and 0.0 don't get confused.
-
-class IEEEFormatTestCase(unittest.TestCase):
-
-    @requires_IEEE_754
-    def test_double_specials_do_unpack(self):
-        for fmt, data in [('>d', BE_DOUBLE_INF),
-                          ('>d', BE_DOUBLE_NAN),
-                          ('<d', LE_DOUBLE_INF),
-                          ('<d', LE_DOUBLE_NAN)]:
-            struct.unpack(fmt, data)
-
-    @requires_IEEE_754
-    def test_float_specials_do_unpack(self):
-        for fmt, data in [('>f', BE_FLOAT_INF),
-                          ('>f', BE_FLOAT_NAN),
-                          ('<f', LE_FLOAT_INF),
-                          ('<f', LE_FLOAT_NAN)]:
-            struct.unpack(fmt, data)
-
-    @requires_IEEE_754
-    def test_negative_zero(self):
-        def pos_pos():
-            return 0.0, math.atan2(0.0, -1)
-        def pos_neg():
-            return 0.0, math.atan2(-0.0, -1)
-        def neg_pos():
-            return -0.0, math.atan2(0.0, -1)
-        def neg_neg():
-            return -0.0, math.atan2(-0.0, -1)
-        self.assertEqual(pos_pos(), neg_pos())
-        self.assertEqual(pos_neg(), neg_neg())
-
-    @requires_IEEE_754
-    def test_underflow_sign(self):
-        # check that -1e-1000 gives -0.0, not 0.0
-        self.assertEqual(math.atan2(-1e-1000, -1), math.atan2(-0.0, -1))
-        self.assertEqual(math.atan2(float('-1e-1000'), -1),
-                         math.atan2(-0.0, -1))
-
-    def test_format(self):
-        # these should be rewritten to use both format(x, spec) and
-        # x.__format__(spec)
-
-        self.assertEqual(format(0.0, 'f'), '0.000000')
-
-        # the default is 'g', except for empty format spec
-        self.assertEqual(format(0.0, ''), '0.0')
-        self.assertEqual(format(0.01, ''), '0.01')
-        self.assertEqual(format(0.01, 'g'), '0.01')
-
-        # empty presentation type should format in the same way as str
-        # (issue 5920)
-        x = 100/7.
-        self.assertEqual(format(x, ''), str(x))
-        self.assertEqual(format(x, '-'), str(x))
-        self.assertEqual(format(x, '>'), str(x))
-        self.assertEqual(format(x, '2'), str(x))
-
-        self.assertEqual(format(1.0, 'f'), '1.000000')
-
-        self.assertEqual(format(-1.0, 'f'), '-1.000000')
-
-        self.assertEqual(format( 1.0, ' f'), ' 1.000000')
-        self.assertEqual(format(-1.0, ' f'), '-1.000000')
-        self.assertEqual(format( 1.0, '+f'), '+1.000000')
-        self.assertEqual(format(-1.0, '+f'), '-1.000000')
-
-        # % formatting
-        self.assertEqual(format(-1.0, '%'), '-100.000000%')
-
-        # conversion to string should fail
-        self.assertRaises(ValueError, format, 3.0, "s")
-
-        # other format specifiers shouldn't work on floats,
-        #  in particular int specifiers
-        for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] +
-                            [chr(x) for x in range(ord('A'), ord('Z')+1)]):
-            if not format_spec in 'eEfFgGn%':
-                self.assertRaises(ValueError, format, 0.0, format_spec)
-                self.assertRaises(ValueError, format, 1.0, format_spec)
-                self.assertRaises(ValueError, format, -1.0, format_spec)
-                self.assertRaises(ValueError, format, 1e100, format_spec)
-                self.assertRaises(ValueError, format, -1e100, format_spec)
-                self.assertRaises(ValueError, format, 1e-100, format_spec)
-                self.assertRaises(ValueError, format, -1e-100, format_spec)
-
-        # issue 3382: 'f' and 'F' with inf's and nan's
-        self.assertEqual('{0:f}'.format(INF), 'inf')
-        self.assertEqual('{0:F}'.format(INF), 'INF')
-        self.assertEqual('{0:f}'.format(-INF), '-inf')
-        self.assertEqual('{0:F}'.format(-INF), '-INF')
-        self.assertEqual('{0:f}'.format(NAN), 'nan')
-        self.assertEqual('{0:F}'.format(NAN), 'NAN')
-
-    @requires_IEEE_754
-    def test_format_testfile(self):
-        with open(format_testfile) as testfile:
-            for line in open(format_testfile):
-                if line.startswith('--'):
-                    continue
-                line = line.strip()
-                if not line:
-                    continue
-
-                lhs, rhs = map(str.strip, line.split('->'))
-                fmt, arg = lhs.split()
-                arg = float(arg)
-                self.assertEqual(fmt % arg, rhs)
-                if not math.isnan(arg) and copysign(1.0, arg) > 0.0:
-                    self.assertEqual(fmt % -arg, '-' + rhs)
-
-    def test_issue5864(self):
-        self.assertEqual(format(123.456, '.4'), '123.5')
-        self.assertEqual(format(1234.56, '.4'), '1.235e+03')
-        self.assertEqual(format(12345.6, '.4'), '1.235e+04')
-
-class ReprTestCase(unittest.TestCase):
-    def test_repr(self):
-        floats_file = open(os.path.join(os.path.split(__file__)[0],
-                           'floating_points.txt'))
-        for line in floats_file:
-            line = line.strip()
-            if not line or line.startswith('#'):
-                continue
-            v = eval(line)
-            self.assertEqual(v, eval(repr(v)))
-        floats_file.close()
-
-    @unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short',
-                         "applies only when using short float repr style")
-    def test_short_repr(self):
-        # test short float repr introduced in Python 3.1.  One aspect
-        # of this repr is that we get some degree of str -> float ->
-        # str roundtripping.  In particular, for any numeric string
-        # containing 15 or fewer significant digits, those exact same
-        # digits (modulo trailing zeros) should appear in the output.
-        # No more repr(0.03) -> "0.029999999999999999"!
-
-        test_strings = [
-            # output always includes *either* a decimal point and at
-            # least one digit after that point, or an exponent.
-            '0.0',
-            '1.0',
-            '0.01',
-            '0.02',
-            '0.03',
-            '0.04',
-            '0.05',
-            '1.23456789',
-            '10.0',
-            '100.0',
-            # values >= 1e16 get an exponent...
-            '1000000000000000.0',
-            '9999999999999990.0',
-            '1e+16',
-            '1e+17',
-            # ... and so do values < 1e-4
-            '0.001',
-            '0.001001',
-            '0.00010000000000001',
-            '0.0001',
-            '9.999999999999e-05',
-            '1e-05',
-            # values designed to provoke failure if the FPU rounding
-            # precision isn't set correctly
-            '8.72293771110361e+25',
-            '7.47005307342313e+26',
-            '2.86438000439698e+28',
-            '8.89142905246179e+28',
-            '3.08578087079232e+35',
-            ]
-
-        for s in test_strings:
-            negs = '-'+s
-            self.assertEqual(s, repr(float(s)))
-            self.assertEqual(negs, repr(float(negs)))
-
-
-@requires_IEEE_754
-class RoundTestCase(unittest.TestCase):
-    def test_second_argument_type(self):
-        # any type with an __index__ method should be permitted as
-        # a second argument
-        self.assertAlmostEqual(round(12.34, True), 12.3)
-
-        class MyIndex(object):
-            def __index__(self): return 4
-        self.assertAlmostEqual(round(-0.123456, MyIndex()), -0.1235)
-        # but floats should be illegal
-        self.assertRaises(TypeError, round, 3.14159, 2.0)
-
-    def test_inf_nan(self):
-        # rounding an infinity or nan returns the same number;
-        # (in py3k, rounding an infinity or nan raises an error,
-        #  since the result can't be represented as a long).
-        self.assertEqual(round(INF), INF)
-        self.assertEqual(round(-INF), -INF)
-        self.assertTrue(math.isnan(round(NAN)))
-        for n in range(-5, 5):
-            self.assertEqual(round(INF, n), INF)
-            self.assertEqual(round(-INF, n), -INF)
-            self.assertTrue(math.isnan(round(NAN, n)))
-
-        self.assertRaises(TypeError, round, INF, 0.0)
-        self.assertRaises(TypeError, round, -INF, 1.0)
-        self.assertRaises(TypeError, round, NAN, "ceci n'est pas un integer")
-        self.assertRaises(TypeError, round, -0.0, 1j)
-
-    def test_large_n(self):
-        for n in [324, 325, 400, 2**31-1, 2**31, 2**32, 2**100]:
-            self.assertEqual(round(123.456, n), 123.456)
-            self.assertEqual(round(-123.456, n), -123.456)
-            self.assertEqual(round(1e300, n), 1e300)
-            self.assertEqual(round(1e-320, n), 1e-320)
-        self.assertEqual(round(1e150, 300), 1e150)
-        self.assertEqual(round(1e300, 307), 1e300)
-        self.assertEqual(round(-3.1415, 308), -3.1415)
-        self.assertEqual(round(1e150, 309), 1e150)
-        self.assertEqual(round(1.4e-315, 315), 1e-315)
-
-    def test_small_n(self):
-        for n in [-308, -309, -400, 1-2**31, -2**31, -2**31-1, -2**100]:
-            self.assertEqual(round(123.456, n), 0.0)
-            self.assertEqual(round(-123.456, n), -0.0)
-            self.assertEqual(round(1e300, n), 0.0)
-            self.assertEqual(round(1e-320, n), 0.0)
-
-    def test_overflow(self):
-        self.assertRaises(OverflowError, round, 1.6e308, -308)
-        self.assertRaises(OverflowError, round, -1.7e308, -308)
-
-    @unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short',
-                         "test applies only when using short float repr style")
-    def test_previous_round_bugs(self):
-        # particular cases that have occurred in bug reports
-        self.assertEqual(round(562949953421312.5, 1),
-                          562949953421312.5)
-        self.assertEqual(round(56294995342131.5, 3),
-                         56294995342131.5)
-
-    @unittest.skipUnless(getattr(sys, 'float_repr_style', '') == 'short',
-                         "test applies only when using short float repr style")
-    def test_halfway_cases(self):
-        # Halfway cases need special attention, since the current
-        # implementation has to deal with them specially.  Note that
-        # 2.x rounds halfway values up (i.e., away from zero) while
-        # 3.x does round-half-to-even.
-        self.assertAlmostEqual(round(0.125, 2), 0.13)
-        self.assertAlmostEqual(round(0.375, 2), 0.38)
-        self.assertAlmostEqual(round(0.625, 2), 0.63)
-        self.assertAlmostEqual(round(0.875, 2), 0.88)
-        self.assertAlmostEqual(round(-0.125, 2), -0.13)
-        self.assertAlmostEqual(round(-0.375, 2), -0.38)
-        self.assertAlmostEqual(round(-0.625, 2), -0.63)
-        self.assertAlmostEqual(round(-0.875, 2), -0.88)
-
-        self.assertAlmostEqual(round(0.25, 1), 0.3)
-        self.assertAlmostEqual(round(0.75, 1), 0.8)
-        self.assertAlmostEqual(round(-0.25, 1), -0.3)
-        self.assertAlmostEqual(round(-0.75, 1), -0.8)
-
-        self.assertEqual(round(-6.5, 0), -7.0)
-        self.assertEqual(round(-5.5, 0), -6.0)
-        self.assertEqual(round(-1.5, 0), -2.0)
-        self.assertEqual(round(-0.5, 0), -1.0)
-        self.assertEqual(round(0.5, 0), 1.0)
-        self.assertEqual(round(1.5, 0), 2.0)
-        self.assertEqual(round(2.5, 0), 3.0)
-        self.assertEqual(round(3.5, 0), 4.0)
-        self.assertEqual(round(4.5, 0), 5.0)
-        self.assertEqual(round(5.5, 0), 6.0)
-        self.assertEqual(round(6.5, 0), 7.0)
-
-        # same but without an explicit second argument; in 3.x these
-        # will give integers
-        self.assertEqual(round(-6.5), -7.0)
-        self.assertEqual(round(-5.5), -6.0)
-        self.assertEqual(round(-1.5), -2.0)
-        self.assertEqual(round(-0.5), -1.0)
-        self.assertEqual(round(0.5), 1.0)
-        self.assertEqual(round(1.5), 2.0)
-        self.assertEqual(round(2.5), 3.0)
-        self.assertEqual(round(3.5), 4.0)
-        self.assertEqual(round(4.5), 5.0)
-        self.assertEqual(round(5.5), 6.0)
-        self.assertEqual(round(6.5), 7.0)
-
-        self.assertEqual(round(-25.0, -1), -30.0)
-        self.assertEqual(round(-15.0, -1), -20.0)
-        self.assertEqual(round(-5.0, -1), -10.0)
-        self.assertEqual(round(5.0, -1), 10.0)
-        self.assertEqual(round(15.0, -1), 20.0)
-        self.assertEqual(round(25.0, -1), 30.0)
-        self.assertEqual(round(35.0, -1), 40.0)
-        self.assertEqual(round(45.0, -1), 50.0)
-        self.assertEqual(round(55.0, -1), 60.0)
-        self.assertEqual(round(65.0, -1), 70.0)
-        self.assertEqual(round(75.0, -1), 80.0)
-        self.assertEqual(round(85.0, -1), 90.0)
-        self.assertEqual(round(95.0, -1), 100.0)
-        self.assertEqual(round(12325.0, -1), 12330.0)
-
-        self.assertEqual(round(350.0, -2), 400.0)
-        self.assertEqual(round(450.0, -2), 500.0)
-
-        self.assertAlmostEqual(round(0.5e21, -21), 1e21)
-        self.assertAlmostEqual(round(1.5e21, -21), 2e21)
-        self.assertAlmostEqual(round(2.5e21, -21), 3e21)
-        self.assertAlmostEqual(round(5.5e21, -21), 6e21)
-        self.assertAlmostEqual(round(8.5e21, -21), 9e21)
-
-        self.assertAlmostEqual(round(-1.5e22, -22), -2e22)
-        self.assertAlmostEqual(round(-0.5e22, -22), -1e22)
-        self.assertAlmostEqual(round(0.5e22, -22), 1e22)
-        self.assertAlmostEqual(round(1.5e22, -22), 2e22)
-
-
-    @requires_IEEE_754
-    def test_format_specials(self):
-        # Test formatting of nans and infs.
-
-        def test(fmt, value, expected):
-            # Test with both % and format().
-            self.assertEqual(fmt % value, expected, fmt)
-            if not '#' in fmt:
-                # Until issue 7094 is implemented, format() for floats doesn't
-                #  support '#' formatting
-                fmt = fmt[1:] # strip off the %
-                self.assertEqual(format(value, fmt), expected, fmt)
-
-        for fmt in ['%e', '%f', '%g', '%.0e', '%.6f', '%.20g',
-                    '%#e', '%#f', '%#g', '%#.20e', '%#.15f', '%#.3g']:
-            pfmt = '%+' + fmt[1:]
-            sfmt = '% ' + fmt[1:]
-            test(fmt, INF, 'inf')
-            test(fmt, -INF, '-inf')
-            test(fmt, NAN, 'nan')
-            test(fmt, -NAN, 'nan')
-            # When asking for a sign, it's always provided. nans are
-            #  always positive.
-            test(pfmt, INF, '+inf')
-            test(pfmt, -INF, '-inf')
-            test(pfmt, NAN, '+nan')
-            test(pfmt, -NAN, '+nan')
-            # When using ' ' for a sign code, only infs can be negative.
-            #  Others have a space.
-            test(sfmt, INF, ' inf')
-            test(sfmt, -INF, '-inf')
-            test(sfmt, NAN, ' nan')
-            test(sfmt, -NAN, ' nan')
-
-
-# Beginning with Python 2.6 float has cross platform compatible
-# ways to create and represent inf and nan
-class InfNanTest(unittest.TestCase):
-    def test_inf_from_str(self):
-        self.assertTrue(isinf(float("inf")))
-        self.assertTrue(isinf(float("+inf")))
-        self.assertTrue(isinf(float("-inf")))
-        self.assertTrue(isinf(float("infinity")))
-        self.assertTrue(isinf(float("+infinity")))
-        self.assertTrue(isinf(float("-infinity")))
-
-        self.assertEqual(repr(float("inf")), "inf")
-        self.assertEqual(repr(float("+inf")), "inf")
-        self.assertEqual(repr(float("-inf")), "-inf")
-        self.assertEqual(repr(float("infinity")), "inf")
-        self.assertEqual(repr(float("+infinity")), "inf")
-        self.assertEqual(repr(float("-infinity")), "-inf")
-
-        self.assertEqual(repr(float("INF")), "inf")
-        self.assertEqual(repr(float("+Inf")), "inf")
-        self.assertEqual(repr(float("-iNF")), "-inf")
-        self.assertEqual(repr(float("Infinity")), "inf")
-        self.assertEqual(repr(float("+iNfInItY")), "inf")
-        self.assertEqual(repr(float("-INFINITY")), "-inf")
-
-        self.assertEqual(str(float("inf")), "inf")
-        self.assertEqual(str(float("+inf")), "inf")
-        self.assertEqual(str(float("-inf")), "-inf")
-        self.assertEqual(str(float("infinity")), "inf")
-        self.assertEqual(str(float("+infinity")), "inf")
-        self.assertEqual(str(float("-infinity")), "-inf")
-
-        self.assertRaises(ValueError, float, "info")
-        self.assertRaises(ValueError, float, "+info")
-        self.assertRaises(ValueError, float, "-info")
-        self.assertRaises(ValueError, float, "in")
-        self.assertRaises(ValueError, float, "+in")
-        self.assertRaises(ValueError, float, "-in")
-        self.assertRaises(ValueError, float, "infinit")
-        self.assertRaises(ValueError, float, "+Infin")
-        self.assertRaises(ValueError, float, "-INFI")
-        self.assertRaises(ValueError, float, "infinitys")
-
-    def test_inf_as_str(self):
-        self.assertEqual(repr(1e300 * 1e300), "inf")
-        self.assertEqual(repr(-1e300 * 1e300), "-inf")
-
-        self.assertEqual(str(1e300 * 1e300), "inf")
-        self.assertEqual(str(-1e300 * 1e300), "-inf")
-
-    def test_nan_from_str(self):
-        self.assertTrue(isnan(float("nan")))
-        self.assertTrue(isnan(float("+nan")))
-        self.assertTrue(isnan(float("-nan")))
-
-        self.assertEqual(repr(float("nan")), "nan")
-        self.assertEqual(repr(float("+nan")), "nan")
-        self.assertEqual(repr(float("-nan")), "nan")
-
-        self.assertEqual(repr(float("NAN")), "nan")
-        self.assertEqual(repr(float("+NAn")), "nan")
-        self.assertEqual(repr(float("-NaN")), "nan")
-
-        self.assertEqual(str(float("nan")), "nan")
-        self.assertEqual(str(float("+nan")), "nan")
-        self.assertEqual(str(float("-nan")), "nan")
-
-        self.assertRaises(ValueError, float, "nana")
-        self.assertRaises(ValueError, float, "+nana")
-        self.assertRaises(ValueError, float, "-nana")
-        self.assertRaises(ValueError, float, "na")
-        self.assertRaises(ValueError, float, "+na")
-        self.assertRaises(ValueError, float, "-na")
-
-    def test_nan_as_str(self):
-        self.assertEqual(repr(1e300 * 1e300 * 0), "nan")
-        self.assertEqual(repr(-1e300 * 1e300 * 0), "nan")
-
-        self.assertEqual(str(1e300 * 1e300 * 0), "nan")
-        self.assertEqual(str(-1e300 * 1e300 * 0), "nan")
-
-    def notest_float_nan(self):
-        self.assertTrue(NAN.is_nan())
-        self.assertFalse(INF.is_nan())
-        self.assertFalse((0.).is_nan())
-
-    def notest_float_inf(self):
-        self.assertTrue(INF.is_inf())
-        self.assertFalse(NAN.is_inf())
-        self.assertFalse((0.).is_inf())
-
-    def test_hash_inf(self):
-        # the actual values here should be regarded as an
-        # implementation detail, but they need to be
-        # identical to those used in the Decimal module.
-        self.assertEqual(hash(float('inf')), 314159)
-        self.assertEqual(hash(float('-inf')), -271828)
-        self.assertEqual(hash(float('nan')), 0)
-
-
-fromHex = float.fromhex
-toHex = float.hex
-class HexFloatTestCase(unittest.TestCase):
-    MAX = fromHex('0x.fffffffffffff8p+1024')  # max normal
-    MIN = fromHex('0x1p-1022')                # min normal
-    TINY = fromHex('0x0.0000000000001p-1022') # min subnormal
-    EPS = fromHex('0x0.0000000000001p0') # diff between 1.0 and next float up
-
-    def identical(self, x, y):
-        # check that floats x and y are identical, or that both
-        # are NaNs
-        if isnan(x) or isnan(y):
-            if isnan(x) == isnan(y):
-                return
-        elif x == y and (x != 0.0 or copysign(1.0, x) == copysign(1.0, y)):
-            return
-        self.fail('%r not identical to %r' % (x, y))
-
-    def test_ends(self):
-        self.identical(self.MIN, ldexp(1.0, -1022))
-        self.identical(self.TINY, ldexp(1.0, -1074))
-        self.identical(self.EPS, ldexp(1.0, -52))
-        self.identical(self.MAX, 2.*(ldexp(1.0, 1023) - ldexp(1.0, 970)))
-
-    def test_invalid_inputs(self):
-        invalid_inputs = [
-            'infi',   # misspelt infinities and nans
-            '-Infinit',
-            '++inf',
-            '-+Inf',
-            '--nan',
-            '+-NaN',
-            'snan',
-            'NaNs',
-            'nna',
-            'an',
-            'nf',
-            'nfinity',
-            'inity',
-            'iinity',
-            '0xnan',
-            '',
-            ' ',
-            'x1.0p0',
-            '0xX1.0p0',
-            '+ 0x1.0p0', # internal whitespace
-            '- 0x1.0p0',
-            '0 x1.0p0',
-            '0x 1.0p0',
-            '0x1 2.0p0',
-            '+0x1 .0p0',
-            '0x1. 0p0',
-            '-0x1.0 1p0',
-            '-0x1.0 p0',
-            '+0x1.0p +0',
-            '0x1.0p -0',
-            '0x1.0p 0',
-            '+0x1.0p+ 0',
-            '-0x1.0p- 0',
-            '++0x1.0p-0', # double signs
-            '--0x1.0p0',
-            '+-0x1.0p+0',
-            '-+0x1.0p0',
-            '0x1.0p++0',
-            '+0x1.0p+-0',
-            '-0x1.0p-+0',
-            '0x1.0p--0',
-            '0x1.0.p0',
-            '0x.p0', # no hex digits before or after point
-            '0x1,p0', # wrong decimal point character
-            '0x1pa',
-            u'0x1p\uff10',  # fullwidth Unicode digits
-            u'\uff10x1p0',
-            u'0x\uff11p0',
-            u'0x1.\uff10p0',
-            '0x1p0 \n 0x2p0',
-            '0x1p0\0 0x1p0',  # embedded null byte is not end of string
-            ]
-        for x in invalid_inputs:
-            try:
-                result = fromHex(x)
-            except ValueError:
-                pass
-            else:
-                self.fail('Expected float.fromhex(%r) to raise ValueError; '
-                          'got %r instead' % (x, result))
-
-
-    def test_whitespace(self):
-        value_pairs = [
-            ('inf', INF),
-            ('-Infinity', -INF),
-            ('nan', NAN),
-            ('1.0', 1.0),
-            ('-0x.2', -0.125),
-            ('-0.0', -0.0)
-            ]
-        whitespace = [
-            '',
-            ' ',
-            '\t',
-            '\n',
-            '\n \t',
-            '\f',
-            '\v',
-            '\r'
-            ]
-        for inp, expected in value_pairs:
-            for lead in whitespace:
-                for trail in whitespace:
-                    got = fromHex(lead + inp + trail)
-                    self.identical(got, expected)
-
-
-    def test_from_hex(self):
-        MIN = self.MIN;
-        MAX = self.MAX;
-        TINY = self.TINY;
-        EPS = self.EPS;
-
-        # two spellings of infinity, with optional signs; case-insensitive
-        self.identical(fromHex('inf'), INF)
-        self.identical(fromHex('+Inf'), INF)
-        self.identical(fromHex('-INF'), -INF)
-        self.identical(fromHex('iNf'), INF)
-        self.identical(fromHex('Infinity'), INF)
-        self.identical(fromHex('+INFINITY'), INF)
-        self.identical(fromHex('-infinity'), -INF)
-        self.identical(fromHex('-iNFiNitY'), -INF)
-
-        # nans with optional sign; case insensitive
-        self.identical(fromHex('nan'), NAN)
-        self.identical(fromHex('+NaN'), NAN)
-        self.identical(fromHex('-NaN'), NAN)
-        self.identical(fromHex('-nAN'), NAN)
-
-        # variations in input format
-        self.identical(fromHex('1'), 1.0)
-        self.identical(fromHex('+1'), 1.0)
-        self.identical(fromHex('1.'), 1.0)
-        self.identical(fromHex('1.0'), 1.0)
-        self.identical(fromHex('1.0p0'), 1.0)
-        self.identical(fromHex('01'), 1.0)
-        self.identical(fromHex('01.'), 1.0)
-        self.identical(fromHex('0x1'), 1.0)
-        self.identical(fromHex('0x1.'), 1.0)
-        self.identical(fromHex('0x1.0'), 1.0)
-        self.identical(fromHex('+0x1.0'), 1.0)
-        self.identical(fromHex('0x1p0'), 1.0)
-        self.identical(fromHex('0X1p0'), 1.0)
-        self.identical(fromHex('0X1P0'), 1.0)
-        self.identical(fromHex('0x1P0'), 1.0)
-        self.identical(fromHex('0x1.p0'), 1.0)
-        self.identical(fromHex('0x1.0p0'), 1.0)
-        self.identical(fromHex('0x.1p4'), 1.0)
-        self.identical(fromHex('0x.1p04'), 1.0)
-        self.identical(fromHex('0x.1p004'), 1.0)
-        self.identical(fromHex('0x1p+0'), 1.0)
-        self.identical(fromHex('0x1P-0'), 1.0)
-        self.identical(fromHex('+0x1p0'), 1.0)
-        self.identical(fromHex('0x01p0'), 1.0)
-        self.identical(fromHex('0x1p00'), 1.0)
-        self.identical(fromHex(u'0x1p0'), 1.0)
-        self.identical(fromHex(' 0x1p0 '), 1.0)
-        self.identical(fromHex('\n 0x1p0'), 1.0)
-        self.identical(fromHex('0x1p0 \t'), 1.0)
-        self.identical(fromHex('0xap0'), 10.0)
-        self.identical(fromHex('0xAp0'), 10.0)
-        self.identical(fromHex('0xaP0'), 10.0)
-        self.identical(fromHex('0xAP0'), 10.0)
-        self.identical(fromHex('0xbep0'), 190.0)
-        self.identical(fromHex('0xBep0'), 190.0)
-        self.identical(fromHex('0xbEp0'), 190.0)
-        self.identical(fromHex('0XBE0P-4'), 190.0)
-        self.identical(fromHex('0xBEp0'), 190.0)
-        self.identical(fromHex('0xB.Ep4'), 190.0)
-        self.identical(fromHex('0x.BEp8'), 190.0)
-        self.identical(fromHex('0x.0BEp12'), 190.0)
-
-        # moving the point around
-        pi = fromHex('0x1.921fb54442d18p1')
-        self.identical(fromHex('0x.006487ed5110b46p11'), pi)
-        self.identical(fromHex('0x.00c90fdaa22168cp10'), pi)
-        self.identical(fromHex('0x.01921fb54442d18p9'), pi)
-        self.identical(fromHex('0x.03243f6a8885a3p8'), pi)
-        self.identical(fromHex('0x.06487ed5110b46p7'), pi)
-        self.identical(fromHex('0x.0c90fdaa22168cp6'), pi)
-        self.identical(fromHex('0x.1921fb54442d18p5'), pi)
-        self.identical(fromHex('0x.3243f6a8885a3p4'), pi)
-        self.identical(fromHex('0x.6487ed5110b46p3'), pi)
-        self.identical(fromHex('0x.c90fdaa22168cp2'), pi)
-        self.identical(fromHex('0x1.921fb54442d18p1'), pi)
-        self.identical(fromHex('0x3.243f6a8885a3p0'), pi)
-        self.identical(fromHex('0x6.487ed5110b46p-1'), pi)
-        self.identical(fromHex('0xc.90fdaa22168cp-2'), pi)
-        self.identical(fromHex('0x19.21fb54442d18p-3'), pi)
-        self.identical(fromHex('0x32.43f6a8885a3p-4'), pi)
-        self.identical(fromHex('0x64.87ed5110b46p-5'), pi)
-        self.identical(fromHex('0xc9.0fdaa22168cp-6'), pi)
-        self.identical(fromHex('0x192.1fb54442d18p-7'), pi)
-        self.identical(fromHex('0x324.3f6a8885a3p-8'), pi)
-        self.identical(fromHex('0x648.7ed5110b46p-9'), pi)
-        self.identical(fromHex('0xc90.fdaa22168cp-10'), pi)
-        self.identical(fromHex('0x1921.fb54442d18p-11'), pi)
-        # ...
-        self.identical(fromHex('0x1921fb54442d1.8p-47'), pi)
-        self.identical(fromHex('0x3243f6a8885a3p-48'), pi)
-        self.identical(fromHex('0x6487ed5110b46p-49'), pi)
-        self.identical(fromHex('0xc90fdaa22168cp-50'), pi)
-        self.identical(fromHex('0x1921fb54442d18p-51'), pi)
-        self.identical(fromHex('0x3243f6a8885a30p-52'), pi)
-        self.identical(fromHex('0x6487ed5110b460p-53'), pi)
-        self.identical(fromHex('0xc90fdaa22168c0p-54'), pi)
-        self.identical(fromHex('0x1921fb54442d180p-55'), pi)
-
-
-        # results that should overflow...
-        self.assertRaises(OverflowError, fromHex, '-0x1p1024')
-        self.assertRaises(OverflowError, fromHex, '0x1p+1025')
-        self.assertRaises(OverflowError, fromHex, '+0X1p1030')
-        self.assertRaises(OverflowError, fromHex, '-0x1p+1100')
-        self.assertRaises(OverflowError, fromHex, '0X1p123456789123456789')
-        self.assertRaises(OverflowError, fromHex, '+0X.8p+1025')
-        self.assertRaises(OverflowError, fromHex, '+0x0.8p1025')
-        self.assertRaises(OverflowError, fromHex, '-0x0.4p1026')
-        self.assertRaises(OverflowError, fromHex, '0X2p+1023')
-        self.assertRaises(OverflowError, fromHex, '0x2.p1023')
-        self.assertRaises(OverflowError, fromHex, '-0x2.0p+1023')
-        self.assertRaises(OverflowError, fromHex, '+0X4p+1022')
-        self.assertRaises(OverflowError, fromHex, '0x1.ffffffffffffffp+1023')
-        self.assertRaises(OverflowError, fromHex, '-0X1.fffffffffffff9p1023')
-        self.assertRaises(OverflowError, fromHex, '0X1.fffffffffffff8p1023')
-        self.assertRaises(OverflowError, fromHex, '+0x3.fffffffffffffp1022')
-        self.assertRaises(OverflowError, fromHex, '0x3fffffffffffffp+970')
-        self.assertRaises(OverflowError, fromHex, '0x10000000000000000p960')
-        self.assertRaises(OverflowError, fromHex, '-0Xffffffffffffffffp960')
-
-        # ...and those that round to +-max float
-        self.identical(fromHex('+0x1.fffffffffffffp+1023'), MAX)
-        self.identical(fromHex('-0X1.fffffffffffff7p1023'), -MAX)
-        self.identical(fromHex('0X1.fffffffffffff7fffffffffffffp1023'), MAX)
-
-        # zeros
-        self.identical(fromHex('0x0p0'), 0.0)
-        self.identical(fromHex('0x0p1000'), 0.0)
-        self.identical(fromHex('-0x0p1023'), -0.0)
-        self.identical(fromHex('0X0p1024'), 0.0)
-        self.identical(fromHex('-0x0p1025'), -0.0)
-        self.identical(fromHex('0X0p2000'), 0.0)
-        self.identical(fromHex('0x0p123456789123456789'), 0.0)
-        self.identical(fromHex('-0X0p-0'), -0.0)
-        self.identical(fromHex('-0X0p-1000'), -0.0)
-        self.identical(fromHex('0x0p-1023'), 0.0)
-        self.identical(fromHex('-0X0p-1024'), -0.0)
-        self.identical(fromHex('-0x0p-1025'), -0.0)
-        self.identical(fromHex('-0x0p-1072'), -0.0)
-        self.identical(fromHex('0X0p-1073'), 0.0)
-        self.identical(fromHex('-0x0p-1074'), -0.0)
-        self.identical(fromHex('0x0p-1075'), 0.0)
-        self.identical(fromHex('0X0p-1076'), 0.0)
-        self.identical(fromHex('-0X0p-2000'), -0.0)
-        self.identical(fromHex('-0x0p-123456789123456789'), -0.0)
-
-        # values that should underflow to 0
-        self.identical(fromHex('0X1p-1075'), 0.0)
-        self.identical(fromHex('-0X1p-1075'), -0.0)
-        self.identical(fromHex('-0x1p-123456789123456789'), -0.0)
-        self.identical(fromHex('0x1.00000000000000001p-1075'), TINY)
-        self.identical(fromHex('-0x1.1p-1075'), -TINY)
-        self.identical(fromHex('0x1.fffffffffffffffffp-1075'), TINY)
-
-        # check round-half-even is working correctly near 0 ...
-        self.identical(fromHex('0x1p-1076'), 0.0)
-        self.identical(fromHex('0X2p-1076'), 0.0)
-        self.identical(fromHex('0X3p-1076'), TINY)
-        self.identical(fromHex('0x4p-1076'), TINY)
-        self.identical(fromHex('0X5p-1076'), TINY)
-        self.identical(fromHex('0X6p-1076'), 2*TINY)
-        self.identical(fromHex('0x7p-1076'), 2*TINY)
-        self.identical(fromHex('0X8p-1076'), 2*TINY)
-        self.identical(fromHex('0X9p-1076'), 2*TINY)
-        self.identical(fromHex('0xap-1076'), 2*TINY)
-        self.identical(fromHex('0Xbp-1076'), 3*TINY)
-        self.identical(fromHex('0xcp-1076'), 3*TINY)
-        self.identical(fromHex('0Xdp-1076'), 3*TINY)
-        self.identical(fromHex('0Xep-1076'), 4*TINY)
-        self.identical(fromHex('0xfp-1076'), 4*TINY)
-        self.identical(fromHex('0x10p-1076'), 4*TINY)
-        self.identical(fromHex('-0x1p-1076'), -0.0)
-        self.identical(fromHex('-0X2p-1076'), -0.0)
-        self.identical(fromHex('-0x3p-1076'), -TINY)
-        self.identical(fromHex('-0X4p-1076'), -TINY)
-        self.identical(fromHex('-0x5p-1076'), -TINY)
-        self.identical(fromHex('-0x6p-1076'), -2*TINY)
-        self.identical(fromHex('-0X7p-1076'), -2*TINY)
-        self.identical(fromHex('-0X8p-1076'), -2*TINY)
-        self.identical(fromHex('-0X9p-1076'), -2*TINY)
-        self.identical(fromHex('-0Xap-1076'), -2*TINY)
-        self.identical(fromHex('-0xbp-1076'), -3*TINY)
-        self.identical(fromHex('-0xcp-1076'), -3*TINY)
-        self.identical(fromHex('-0Xdp-1076'), -3*TINY)
-        self.identical(fromHex('-0xep-1076'), -4*TINY)
-        self.identical(fromHex('-0Xfp-1076'), -4*TINY)
-        self.identical(fromHex('-0X10p-1076'), -4*TINY)
-
-        # ... and near MIN ...
-        self.identical(fromHex('0x0.ffffffffffffd6p-1022'), MIN-3*TINY)
-        self.identical(fromHex('0x0.ffffffffffffd8p-1022'), MIN-2*TINY)
-        self.identical(fromHex('0x0.ffffffffffffdap-1022'), MIN-2*TINY)
-        self.identical(fromHex('0x0.ffffffffffffdcp-1022'), MIN-2*TINY)
-        self.identical(fromHex('0x0.ffffffffffffdep-1022'), MIN-2*TINY)
-        self.identical(fromHex('0x0.ffffffffffffe0p-1022'), MIN-2*TINY)
-        self.identical(fromHex('0x0.ffffffffffffe2p-1022'), MIN-2*TINY)
-        self.identical(fromHex('0x0.ffffffffffffe4p-1022'), MIN-2*TINY)
-        self.identical(fromHex('0x0.ffffffffffffe6p-1022'), MIN-2*TINY)
-        self.identical(fromHex('0x0.ffffffffffffe8p-1022'), MIN-2*TINY)
-        self.identical(fromHex('0x0.ffffffffffffeap-1022'), MIN-TINY)
-        self.identical(fromHex('0x0.ffffffffffffecp-1022'), MIN-TINY)
-        self.identical(fromHex('0x0.ffffffffffffeep-1022'), MIN-TINY)
-        self.identical(fromHex('0x0.fffffffffffff0p-1022'), MIN-TINY)
-        self.identical(fromHex('0x0.fffffffffffff2p-1022'), MIN-TINY)
-        self.identical(fromHex('0x0.fffffffffffff4p-1022'), MIN-TINY)
-        self.identical(fromHex('0x0.fffffffffffff6p-1022'), MIN-TINY)
-        self.identical(fromHex('0x0.fffffffffffff8p-1022'), MIN)
-        self.identical(fromHex('0x0.fffffffffffffap-1022'), MIN)
-        self.identical(fromHex('0x0.fffffffffffffcp-1022'), MIN)
-        self.identical(fromHex('0x0.fffffffffffffep-1022'), MIN)
-        self.identical(fromHex('0x1.00000000000000p-1022'), MIN)
-        self.identical(fromHex('0x1.00000000000002p-1022'), MIN)
-        self.identical(fromHex('0x1.00000000000004p-1022'), MIN)
-        self.identical(fromHex('0x1.00000000000006p-1022'), MIN)
-        self.identical(fromHex('0x1.00000000000008p-1022'), MIN)
-        self.identical(fromHex('0x1.0000000000000ap-1022'), MIN+TINY)
-        self.identical(fromHex('0x1.0000000000000cp-1022'), MIN+TINY)
-        self.identical(fromHex('0x1.0000000000000ep-1022'), MIN+TINY)
-        self.identical(fromHex('0x1.00000000000010p-1022'), MIN+TINY)
-        self.identical(fromHex('0x1.00000000000012p-1022'), MIN+TINY)
-        self.identical(fromHex('0x1.00000000000014p-1022'), MIN+TINY)
-        self.identical(fromHex('0x1.00000000000016p-1022'), MIN+TINY)
-        self.identical(fromHex('0x1.00000000000018p-1022'), MIN+2*TINY)
-
-        # ... and near 1.0.
-        self.identical(fromHex('0x0.fffffffffffff0p0'), 1.0-EPS)
-        self.identical(fromHex('0x0.fffffffffffff1p0'), 1.0-EPS)
-        self.identical(fromHex('0X0.fffffffffffff2p0'), 1.0-EPS)
-        self.identical(fromHex('0x0.fffffffffffff3p0'), 1.0-EPS)
-        self.identical(fromHex('0X0.fffffffffffff4p0'), 1.0-EPS)
-        self.identical(fromHex('0X0.fffffffffffff5p0'), 1.0-EPS/2)
-        self.identical(fromHex('0X0.fffffffffffff6p0'), 1.0-EPS/2)
-        self.identical(fromHex('0x0.fffffffffffff7p0'), 1.0-EPS/2)
-        self.identical(fromHex('0x0.fffffffffffff8p0'), 1.0-EPS/2)
-        self.identical(fromHex('0X0.fffffffffffff9p0'), 1.0-EPS/2)
-        self.identical(fromHex('0X0.fffffffffffffap0'), 1.0-EPS/2)
-        self.identical(fromHex('0x0.fffffffffffffbp0'), 1.0-EPS/2)
-        self.identical(fromHex('0X0.fffffffffffffcp0'), 1.0)
-        self.identical(fromHex('0x0.fffffffffffffdp0'), 1.0)
-        self.identical(fromHex('0X0.fffffffffffffep0'), 1.0)
-        self.identical(fromHex('0x0.ffffffffffffffp0'), 1.0)
-        self.identical(fromHex('0X1.00000000000000p0'), 1.0)
-        self.identical(fromHex('0X1.00000000000001p0'), 1.0)
-        self.identical(fromHex('0x1.00000000000002p0'), 1.0)
-        self.identical(fromHex('0X1.00000000000003p0'), 1.0)
-        self.identical(fromHex('0x1.00000000000004p0'), 1.0)
-        self.identical(fromHex('0X1.00000000000005p0'), 1.0)
-        self.identical(fromHex('0X1.00000000000006p0'), 1.0)
-        self.identical(fromHex('0X1.00000000000007p0'), 1.0)
-        self.identical(fromHex('0x1.00000000000007ffffffffffffffffffffp0'),
-                       1.0)
-        self.identical(fromHex('0x1.00000000000008p0'), 1.0)
-        self.identical(fromHex('0x1.00000000000008000000000000000001p0'),
-                       1+EPS)
-        self.identical(fromHex('0X1.00000000000009p0'), 1.0+EPS)
-        self.identical(fromHex('0x1.0000000000000ap0'), 1.0+EPS)
-        self.identical(fromHex('0x1.0000000000000bp0'), 1.0+EPS)
-        self.identical(fromHex('0X1.0000000000000cp0'), 1.0+EPS)
-        self.identical(fromHex('0x1.0000000000000dp0'), 1.0+EPS)
-        self.identical(fromHex('0x1.0000000000000ep0'), 1.0+EPS)
-        self.identical(fromHex('0X1.0000000000000fp0'), 1.0+EPS)
-        self.identical(fromHex('0x1.00000000000010p0'), 1.0+EPS)
-        self.identical(fromHex('0X1.00000000000011p0'), 1.0+EPS)
-        self.identical(fromHex('0x1.00000000000012p0'), 1.0+EPS)
-        self.identical(fromHex('0X1.00000000000013p0'), 1.0+EPS)
-        self.identical(fromHex('0X1.00000000000014p0'), 1.0+EPS)
-        self.identical(fromHex('0x1.00000000000015p0'), 1.0+EPS)
-        self.identical(fromHex('0x1.00000000000016p0'), 1.0+EPS)
-        self.identical(fromHex('0X1.00000000000017p0'), 1.0+EPS)
-        self.identical(fromHex('0x1.00000000000017ffffffffffffffffffffp0'),
-                       1.0+EPS)
-        self.identical(fromHex('0x1.00000000000018p0'), 1.0+2*EPS)
-        self.identical(fromHex('0X1.00000000000018000000000000000001p0'),
-                       1.0+2*EPS)
-        self.identical(fromHex('0x1.00000000000019p0'), 1.0+2*EPS)
-        self.identical(fromHex('0X1.0000000000001ap0'), 1.0+2*EPS)
-        self.identical(fromHex('0X1.0000000000001bp0'), 1.0+2*EPS)
-        self.identical(fromHex('0x1.0000000000001cp0'), 1.0+2*EPS)
-        self.identical(fromHex('0x1.0000000000001dp0'), 1.0+2*EPS)
-        self.identical(fromHex('0x1.0000000000001ep0'), 1.0+2*EPS)
-        self.identical(fromHex('0X1.0000000000001fp0'), 1.0+2*EPS)
-        self.identical(fromHex('0x1.00000000000020p0'), 1.0+2*EPS)
-
-    def test_roundtrip(self):
-        def roundtrip(x):
-            return fromHex(toHex(x))
-
-        for x in [NAN, INF, self.MAX, self.MIN, self.MIN-self.TINY, self.TINY, 0.0]:
-            self.identical(x, roundtrip(x))
-            self.identical(-x, roundtrip(-x))
-
-        # fromHex(toHex(x)) should exactly recover x, for any non-NaN float x.
-        import random
-        for i in xrange(10000):
-            e = random.randrange(-1200, 1200)
-            m = random.random()
-            s = random.choice([1.0, -1.0])
-            try:
-                x = s*ldexp(m, e)
-            except OverflowError:
-                pass
-            else:
-                self.identical(x, fromHex(toHex(x)))
-
-
-def test_main():
-    test_support.run_unittest(
-        GeneralFloatCases,
-        FormatFunctionsTestCase,
-        UnknownFormatTestCase,
-        IEEEFormatTestCase,
-        ReprTestCase,
-        RoundTestCase,
-        InfNanTest,
-        HexFloatTestCase,
-        )
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fnmatch.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fnmatch.py
deleted file mode 100644
index 5d37777..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fnmatch.py
+++ /dev/null
@@ -1,72 +0,0 @@
-"""Test cases for the fnmatch module."""
-
-from test import test_support
-import unittest
-
-from fnmatch import fnmatch, fnmatchcase, _MAXCACHE, _cache
-from fnmatch import fnmatch, fnmatchcase, _MAXCACHE, _cache, _purge
-
-
-class FnmatchTestCase(unittest.TestCase):
-
-    def tearDown(self):
-        _purge()
-
-    def check_match(self, filename, pattern, should_match=1, fn=fnmatch):
-        if should_match:
-            self.assertTrue(fn(filename, pattern),
-                         "expected %r to match pattern %r"
-                         % (filename, pattern))
-        else:
-            self.assertTrue(not fn(filename, pattern),
-                         "expected %r not to match pattern %r"
-                         % (filename, pattern))
-
-    def test_fnmatch(self):
-        check = self.check_match
-        check('abc', 'abc')
-        check('abc', '?*?')
-        check('abc', '???*')
-        check('abc', '*???')
-        check('abc', '???')
-        check('abc', '*')
-        check('abc', 'ab[cd]')
-        check('abc', 'ab[!de]')
-        check('abc', 'ab[de]', 0)
-        check('a', '??', 0)
-        check('a', 'b', 0)
-
-        # these test that '\' is handled correctly in character sets;
-        # see SF bug #409651
-        check('\\', r'[\]')
-        check('a', r'[!\]')
-        check('\\', r'[!\]', 0)
-
-        # test that filenames with newlines in them are handled correctly.
-        # http://bugs.python.org/issue6665
-        check('foo\nbar', 'foo*')
-        check('foo\nbar\n', 'foo*')
-        check('\nfoo', 'foo*', False)
-        check('\n', '*')
-
-    def test_fnmatchcase(self):
-        check = self.check_match
-        check('AbC', 'abc', 0, fnmatchcase)
-        check('abc', 'AbC', 0, fnmatchcase)
-
-    def test_cache_clearing(self):
-        # check that caches do not grow too large
-        # http://bugs.python.org/issue7846
-
-        # string pattern cache
-        for i in range(_MAXCACHE + 1):
-            fnmatch('foo', '?' * i)
-
-        self.assertLessEqual(len(_cache), _MAXCACHE)
-
-def test_main():
-    test_support.run_unittest(FnmatchTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fork1.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fork1.py
deleted file mode 100644
index abf697b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fork1.py
+++ /dev/null
@@ -1,71 +0,0 @@
-"""This test checks for correct fork() behavior.
-"""
-
-import imp
-import os
-import signal
-import sys
-import time
-
-from test.fork_wait import ForkWait
-from test.test_support import run_unittest, reap_children, get_attribute, import_module
-threading = import_module('threading')
-
-#Skip test if fork does not exist.
-get_attribute(os, 'fork')
-
-
-class ForkTest(ForkWait):
-    def wait_impl(self, cpid):
-        for i in range(10):
-            # waitpid() shouldn't hang, but some of the buildbots seem to hang
-            # in the forking tests.  This is an attempt to fix the problem.
-            spid, status = os.waitpid(cpid, os.WNOHANG)
-            if spid == cpid:
-                break
-            time.sleep(1.0)
-
-        self.assertEqual(spid, cpid)
-        self.assertEqual(status, 0, "cause = %d, exit = %d" % (status&0xff, status>>8))
-
-    def test_import_lock_fork(self):
-        import_started = threading.Event()
-        fake_module_name = "fake test module"
-        partial_module = "partial"
-        complete_module = "complete"
-        def importer():
-            imp.acquire_lock()
-            sys.modules[fake_module_name] = partial_module
-            import_started.set()
-            time.sleep(0.01) # Give the other thread time to try and acquire.
-            sys.modules[fake_module_name] = complete_module
-            imp.release_lock()
-        t = threading.Thread(target=importer)
-        t.start()
-        import_started.wait()
-        pid = os.fork()
-        try:
-            if not pid:
-                m = __import__(fake_module_name)
-                if m == complete_module:
-                    os._exit(0)
-                else:
-                    os._exit(1)
-            else:
-                t.join()
-                # Exitcode 1 means the child got a partial module (bad.) No
-                # exitcode (but a hang, which manifests as 'got pid 0')
-                # means the child deadlocked (also bad.)
-                self.wait_impl(pid)
-        finally:
-            try:
-                os.kill(pid, signal.SIGKILL)
-            except OSError:
-                pass
-
-def test_main():
-    run_unittest(ForkTest)
-    reap_children()
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_format.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_format.py
deleted file mode 100644
index 0877f26..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_format.py
+++ /dev/null
@@ -1,297 +0,0 @@
-import sys
-from test.test_support import verbose, have_unicode, TestFailed
-import test.test_support as test_support
-import unittest
-
-maxsize = test_support.MAX_Py_ssize_t
-
-# test string formatting operator (I am not sure if this is being tested
-# elsewhere but, surely, some of the given cases are *not* tested because
-# they crash python)
-# test on unicode strings as well
-
-def testformat(formatstr, args, output=None, limit=None, overflowok=False):
-    if verbose:
-        if output:
-            print "%s %% %s =? %s ..." %\
-                (repr(formatstr), repr(args), repr(output)),
-        else:
-            print "%s %% %s works? ..." % (repr(formatstr), repr(args)),
-    try:
-        result = formatstr % args
-    except OverflowError:
-        if not overflowok:
-            raise
-        if verbose:
-            print 'overflow (this is fine)'
-    else:
-        if output and limit is None and result != output:
-            if verbose:
-                print 'no'
-            raise AssertionError("%r %% %r == %r != %r" %
-                                (formatstr, args, result, output))
-        # when 'limit' is specified, it determines how many characters
-        # must match exactly; lengths must always match.
-        # ex: limit=5, '12345678' matches '12345___'
-        # (mainly for floating point format tests for which an exact match
-        # can't be guaranteed due to rounding and representation errors)
-        elif output and limit is not None and (
-                len(result)!=len(output) or result[:limit]!=output[:limit]):
-            if verbose:
-                print 'no'
-            print "%s %% %s == %s != %s" % \
-                  (repr(formatstr), repr(args), repr(result), repr(output))
-        else:
-            if verbose:
-                print 'yes'
-
-
-def testboth(formatstr, *args, **kwargs):
-    testformat(formatstr, *args, **kwargs)
-    if have_unicode:
-        testformat(unicode(formatstr), *args, **kwargs)
-
-
-class FormatTest(unittest.TestCase):
-    def test_format(self):
-        testboth("%.1d", (1,), "1")
-        testboth("%.*d", (sys.maxint,1), overflowok=True)  # expect overflow
-        testboth("%.100d", (1,), '00000000000000000000000000000000000000'
-                 '000000000000000000000000000000000000000000000000000000'
-                 '00000001', overflowok=True)
-        testboth("%#.117x", (1,), '0x00000000000000000000000000000000000'
-                 '000000000000000000000000000000000000000000000000000000'
-                 '0000000000000000000000000001',
-                 overflowok=True)
-        testboth("%#.118x", (1,), '0x00000000000000000000000000000000000'
-                 '000000000000000000000000000000000000000000000000000000'
-                 '00000000000000000000000000001',
-                 overflowok=True)
-
-        testboth("%f", (1.0,), "1.000000")
-        # these are trying to test the limits of the internal magic-number-length
-        # formatting buffer, if that number changes then these tests are less
-        # effective
-        testboth("%#.*g", (109, -1.e+49/3.))
-        testboth("%#.*g", (110, -1.e+49/3.))
-        testboth("%#.*g", (110, -1.e+100/3.))
-
-        # test some ridiculously large precision, expect overflow
-        testboth('%12.*f', (123456, 1.0))
-
-        # check for internal overflow validation on length of precision
-        # these tests should no longer cause overflow in Python
-        # 2.7/3.1 and later.
-        testboth("%#.*g", (110, -1.e+100/3.))
-        testboth("%#.*G", (110, -1.e+100/3.))
-        testboth("%#.*f", (110, -1.e+100/3.))
-        testboth("%#.*F", (110, -1.e+100/3.))
-
-        # Formatting of long integers. Overflow is not ok
-        testboth("%x", 10L, "a")
-        testboth("%x", 100000000000L, "174876e800")
-        testboth("%o", 10L, "12")
-        testboth("%o", 100000000000L, "1351035564000")
-        testboth("%d", 10L, "10")
-        testboth("%d", 100000000000L, "100000000000")
-
-        big = 123456789012345678901234567890L
-        testboth("%d", big, "123456789012345678901234567890")
-        testboth("%d", -big, "-123456789012345678901234567890")
-        testboth("%5d", -big, "-123456789012345678901234567890")
-        testboth("%31d", -big, "-123456789012345678901234567890")
-        testboth("%32d", -big, " -123456789012345678901234567890")
-        testboth("%-32d", -big, "-123456789012345678901234567890 ")
-        testboth("%032d", -big, "-0123456789012345678901234567890")
-        testboth("%-032d", -big, "-123456789012345678901234567890 ")
-        testboth("%034d", -big, "-000123456789012345678901234567890")
-        testboth("%034d", big, "0000123456789012345678901234567890")
-        testboth("%0+34d", big, "+000123456789012345678901234567890")
-        testboth("%+34d", big, "   +123456789012345678901234567890")
-        testboth("%34d", big, "    123456789012345678901234567890")
-        testboth("%.2d", big, "123456789012345678901234567890")
-        testboth("%.30d", big, "123456789012345678901234567890")
-        testboth("%.31d", big, "0123456789012345678901234567890")
-        testboth("%32.31d", big, " 0123456789012345678901234567890")
-        testboth("%d", float(big), "123456________________________", 6)
-
-        big = 0x1234567890abcdef12345L  # 21 hex digits
-        testboth("%x", big, "1234567890abcdef12345")
-        testboth("%x", -big, "-1234567890abcdef12345")
-        testboth("%5x", -big, "-1234567890abcdef12345")
-        testboth("%22x", -big, "-1234567890abcdef12345")
-        testboth("%23x", -big, " -1234567890abcdef12345")
-        testboth("%-23x", -big, "-1234567890abcdef12345 ")
-        testboth("%023x", -big, "-01234567890abcdef12345")
-        testboth("%-023x", -big, "-1234567890abcdef12345 ")
-        testboth("%025x", -big, "-0001234567890abcdef12345")
-        testboth("%025x", big, "00001234567890abcdef12345")
-        testboth("%0+25x", big, "+0001234567890abcdef12345")
-        testboth("%+25x", big, "   +1234567890abcdef12345")
-        testboth("%25x", big, "    1234567890abcdef12345")
-        testboth("%.2x", big, "1234567890abcdef12345")
-        testboth("%.21x", big, "1234567890abcdef12345")
-        testboth("%.22x", big, "01234567890abcdef12345")
-        testboth("%23.22x", big, " 01234567890abcdef12345")
-        testboth("%-23.22x", big, "01234567890abcdef12345 ")
-        testboth("%X", big, "1234567890ABCDEF12345")
-        testboth("%#X", big, "0X1234567890ABCDEF12345")
-        testboth("%#x", big, "0x1234567890abcdef12345")
-        testboth("%#x", -big, "-0x1234567890abcdef12345")
-        testboth("%#.23x", -big, "-0x001234567890abcdef12345")
-        testboth("%#+.23x", big, "+0x001234567890abcdef12345")
-        testboth("%# .23x", big, " 0x001234567890abcdef12345")
-        testboth("%#+.23X", big, "+0X001234567890ABCDEF12345")
-        testboth("%#-+.23X", big, "+0X001234567890ABCDEF12345")
-        testboth("%#-+26.23X", big, "+0X001234567890ABCDEF12345")
-        testboth("%#-+27.23X", big, "+0X001234567890ABCDEF12345 ")
-        testboth("%#+27.23X", big, " +0X001234567890ABCDEF12345")
-        # next one gets two leading zeroes from precision, and another from the
-        # 0 flag and the width
-        testboth("%#+027.23X", big, "+0X0001234567890ABCDEF12345")
-        # same, except no 0 flag
-        testboth("%#+27.23X", big, " +0X001234567890ABCDEF12345")
-        testboth("%x", float(big), "123456_______________", 6)
-
-        big = 012345670123456701234567012345670L  # 32 octal digits
-        testboth("%o", big, "12345670123456701234567012345670")
-        testboth("%o", -big, "-12345670123456701234567012345670")
-        testboth("%5o", -big, "-12345670123456701234567012345670")
-        testboth("%33o", -big, "-12345670123456701234567012345670")
-        testboth("%34o", -big, " -12345670123456701234567012345670")
-        testboth("%-34o", -big, "-12345670123456701234567012345670 ")
-        testboth("%034o", -big, "-012345670123456701234567012345670")
-        testboth("%-034o", -big, "-12345670123456701234567012345670 ")
-        testboth("%036o", -big, "-00012345670123456701234567012345670")
-        testboth("%036o", big, "000012345670123456701234567012345670")
-        testboth("%0+36o", big, "+00012345670123456701234567012345670")
-        testboth("%+36o", big, "   +12345670123456701234567012345670")
-        testboth("%36o", big, "    12345670123456701234567012345670")
-        testboth("%.2o", big, "12345670123456701234567012345670")
-        testboth("%.32o", big, "12345670123456701234567012345670")
-        testboth("%.33o", big, "012345670123456701234567012345670")
-        testboth("%34.33o", big, " 012345670123456701234567012345670")
-        testboth("%-34.33o", big, "012345670123456701234567012345670 ")
-        testboth("%o", big, "12345670123456701234567012345670")
-        testboth("%#o", big, "012345670123456701234567012345670")
-        testboth("%#o", -big, "-012345670123456701234567012345670")
-        testboth("%#.34o", -big, "-0012345670123456701234567012345670")
-        testboth("%#+.34o", big, "+0012345670123456701234567012345670")
-        testboth("%# .34o", big, " 0012345670123456701234567012345670")
-        testboth("%#+.34o", big, "+0012345670123456701234567012345670")
-        testboth("%#-+.34o", big, "+0012345670123456701234567012345670")
-        testboth("%#-+37.34o", big, "+0012345670123456701234567012345670  ")
-        testboth("%#+37.34o", big, "  +0012345670123456701234567012345670")
-        # next one gets one leading zero from precision
-        testboth("%.33o", big, "012345670123456701234567012345670")
-        # base marker shouldn't change that, since "0" is redundant
-        testboth("%#.33o", big, "012345670123456701234567012345670")
-        # but reduce precision, and base marker should add a zero
-        testboth("%#.32o", big, "012345670123456701234567012345670")
-        # one leading zero from precision, and another from "0" flag & width
-        testboth("%034.33o", big, "0012345670123456701234567012345670")
-        # base marker shouldn't change that
-        testboth("%0#34.33o", big, "0012345670123456701234567012345670")
-        testboth("%o", float(big), "123456__________________________", 6)
-
-        # Some small ints, in both Python int and long flavors).
-        testboth("%d", 42, "42")
-        testboth("%d", -42, "-42")
-        testboth("%d", 42L, "42")
-        testboth("%d", -42L, "-42")
-        testboth("%d", 42.0, "42")
-        testboth("%#x", 1, "0x1")
-        testboth("%#x", 1L, "0x1")
-        testboth("%#X", 1, "0X1")
-        testboth("%#X", 1L, "0X1")
-        testboth("%#x", 1.0, "0x1")
-        testboth("%#o", 1, "01")
-        testboth("%#o", 1L, "01")
-        testboth("%#o", 0, "0")
-        testboth("%#o", 0L, "0")
-        testboth("%o", 0, "0")
-        testboth("%o", 0L, "0")
-        testboth("%d", 0, "0")
-        testboth("%d", 0L, "0")
-        testboth("%#x", 0, "0x0")
-        testboth("%#x", 0L, "0x0")
-        testboth("%#X", 0, "0X0")
-        testboth("%#X", 0L, "0X0")
-
-        testboth("%x", 0x42, "42")
-        testboth("%x", -0x42, "-42")
-        testboth("%x", 0x42L, "42")
-        testboth("%x", -0x42L, "-42")
-        testboth("%x", float(0x42), "42")
-
-        testboth("%o", 042, "42")
-        testboth("%o", -042, "-42")
-        testboth("%o", 042L, "42")
-        testboth("%o", -042L, "-42")
-        testboth("%o", float(042), "42")
-
-        # alternate float formatting
-        testformat('%g', 1.1, '1.1')
-        testformat('%#g', 1.1, '1.10000')
-
-        # Test exception for unknown format characters
-        if verbose:
-            print 'Testing exceptions'
-
-        def test_exc(formatstr, args, exception, excmsg):
-            try:
-                testformat(formatstr, args)
-            except exception, exc:
-                if str(exc) == excmsg:
-                    if verbose:
-                        print "yes"
-                else:
-                    if verbose: print 'no'
-                    print 'Unexpected ', exception, ':', repr(str(exc))
-            except:
-                if verbose: print 'no'
-                print 'Unexpected exception'
-                raise
-            else:
-                raise TestFailed, 'did not get expected exception: %s' % excmsg
-
-        test_exc('abc %a', 1, ValueError,
-                 "unsupported format character 'a' (0x61) at index 5")
-        if have_unicode:
-            test_exc(unicode('abc %\u3000','raw-unicode-escape'), 1, ValueError,
-                     "unsupported format character '?' (0x3000) at index 5")
-
-        test_exc('%d', '1', TypeError, "%d format: a number is required, not str")
-        test_exc('%g', '1', TypeError, "float argument required, not str")
-        test_exc('no format', '1', TypeError,
-                 "not all arguments converted during string formatting")
-        test_exc('no format', u'1', TypeError,
-                 "not all arguments converted during string formatting")
-        test_exc(u'no format', '1', TypeError,
-                 "not all arguments converted during string formatting")
-        test_exc(u'no format', u'1', TypeError,
-                 "not all arguments converted during string formatting")
-
-        class Foobar(long):
-            def __oct__(self):
-                # Returning a non-string should not blow up.
-                return self + 1
-
-        test_exc('%o', Foobar(), TypeError,
-                 "expected string or Unicode object, long found")
-
-        if maxsize == 2**31-1:
-            # crashes 2.2.1 and earlier:
-            try:
-                "%*d"%(maxsize, -127)
-            except MemoryError:
-                pass
-            else:
-                raise TestFailed, '"%*d"%(maxsize, -127) should fail'
-
-def test_main():
-    test_support.run_unittest(FormatTest)
-
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fpformat.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fpformat.py
deleted file mode 100644
index 9f6b156..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fpformat.py
+++ /dev/null
@@ -1,76 +0,0 @@
-'''
-   Tests for fpformat module
-   Nick Mathewson
-'''
-from test.test_support import run_unittest, import_module
-import unittest
-fpformat = import_module('fpformat', deprecated=True)
-fix, sci, NotANumber = fpformat.fix, fpformat.sci, fpformat.NotANumber
-
-StringType = type('')
-
-# Test the old and obsolescent fpformat module.
-#
-# (It's obsolescent because fix(n,d) == "%.*f"%(d,n) and
-#                           sci(n,d) == "%.*e"%(d,n)
-#  for all reasonable numeric n and d, except that sci gives 3 exponent
-#  digits instead of 2.
-#
-# Differences only occur for unreasonable n and d.    <.2 wink>)
-
-class FpformatTest(unittest.TestCase):
-
-    def checkFix(self, n, digits):
-        result = fix(n, digits)
-        if isinstance(n, StringType):
-            n = repr(n)
-        expected = "%.*f" % (digits, float(n))
-
-        self.assertEqual(result, expected)
-
-    def checkSci(self, n, digits):
-        result = sci(n, digits)
-        if isinstance(n, StringType):
-            n = repr(n)
-        expected = "%.*e" % (digits, float(n))
-        # add the extra 0 if needed
-        num, exp = expected.split("e")
-        if len(exp) < 4:
-            exp = exp[0] + "0" + exp[1:]
-        expected = "%se%s" % (num, exp)
-
-        self.assertEqual(result, expected)
-
-    def test_basic_cases(self):
-        self.assertEqual(fix(100.0/3, 3), '33.333')
-        self.assertEqual(sci(100.0/3, 3), '3.333e+001')
-
-    def test_reasonable_values(self):
-        for d in range(7):
-            for val in (1000.0/3, 1000, 1000.0, .002, 1.0/3, 1e10):
-                for realVal in (val, 1.0/val, -val, -1.0/val):
-                    self.checkFix(realVal, d)
-                    self.checkSci(realVal, d)
-
-    def test_failing_values(self):
-        # Now for 'unreasonable n and d'
-        self.assertEqual(fix(1.0, 1000), '1.'+('0'*1000))
-        self.assertEqual(sci("1"+('0'*1000), 0), '1e+1000')
-
-        # This behavior is inconsistent.  sci raises an exception; fix doesn't.
-        yacht = "Throatwobbler Mangrove"
-        self.assertEqual(fix(yacht, 10), yacht)
-        try:
-            sci(yacht, 10)
-        except NotANumber:
-            pass
-        else:
-            self.fail("No exception on non-numeric sci")
-
-
-def test_main():
-    run_unittest(FpformatTest)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fractions.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fractions.py
deleted file mode 100644
index f807244..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_fractions.py
+++ /dev/null
@@ -1,587 +0,0 @@
-"""Tests for Lib/fractions.py."""
-
-from decimal import Decimal
-from test.test_support import run_unittest
-import math
-import numbers
-import operator
-import fractions
-import unittest
-from copy import copy, deepcopy
-from cPickle import dumps, loads
-F = fractions.Fraction
-gcd = fractions.gcd
-
-# decorator for skipping tests on non-IEEE 754 platforms
-requires_IEEE_754 = unittest.skipUnless(
-    float.__getformat__("double").startswith("IEEE"),
-    "test requires IEEE 754 doubles")
-
-class DummyFloat(object):
-    """Dummy float class for testing comparisons with Fractions"""
-
-    def __init__(self, value):
-        if not isinstance(value, float):
-            raise TypeError("DummyFloat can only be initialized from float")
-        self.value = value
-
-    def _richcmp(self, other, op):
-        if isinstance(other, numbers.Rational):
-            return op(F.from_float(self.value), other)
-        elif isinstance(other, DummyFloat):
-            return op(self.value, other.value)
-        else:
-            return NotImplemented
-
-    def __eq__(self, other): return self._richcmp(other, operator.eq)
-    def __le__(self, other): return self._richcmp(other, operator.le)
-    def __lt__(self, other): return self._richcmp(other, operator.lt)
-    def __ge__(self, other): return self._richcmp(other, operator.ge)
-    def __gt__(self, other): return self._richcmp(other, operator.gt)
-
-    # shouldn't be calling __float__ at all when doing comparisons
-    def __float__(self):
-        assert False, "__float__ should not be invoked for comparisons"
-
-    # same goes for subtraction
-    def __sub__(self, other):
-        assert False, "__sub__ should not be invoked for comparisons"
-    __rsub__ = __sub__
-
-    # Silence Py3k warning
-    __hash__ = None
-
-
-class DummyRational(object):
-    """Test comparison of Fraction with a naive rational implementation."""
-
-    def __init__(self, num, den):
-        g = gcd(num, den)
-        self.num = num // g
-        self.den = den // g
-
-    def __eq__(self, other):
-        if isinstance(other, fractions.Fraction):
-            return (self.num == other._numerator and
-                    self.den == other._denominator)
-        else:
-            return NotImplemented
-
-    def __lt__(self, other):
-        return(self.num * other._denominator < self.den * other._numerator)
-
-    def __gt__(self, other):
-        return(self.num * other._denominator > self.den * other._numerator)
-
-    def __le__(self, other):
-        return(self.num * other._denominator <= self.den * other._numerator)
-
-    def __ge__(self, other):
-        return(self.num * other._denominator >= self.den * other._numerator)
-
-    # this class is for testing comparisons; conversion to float
-    # should never be used for a comparison, since it loses accuracy
-    def __float__(self):
-        assert False, "__float__ should not be invoked"
-
-    # Silence Py3k warning
-    __hash__ = None
-
-
-class GcdTest(unittest.TestCase):
-
-    def testMisc(self):
-        self.assertEqual(0, gcd(0, 0))
-        self.assertEqual(1, gcd(1, 0))
-        self.assertEqual(-1, gcd(-1, 0))
-        self.assertEqual(1, gcd(0, 1))
-        self.assertEqual(-1, gcd(0, -1))
-        self.assertEqual(1, gcd(7, 1))
-        self.assertEqual(-1, gcd(7, -1))
-        self.assertEqual(1, gcd(-23, 15))
-        self.assertEqual(12, gcd(120, 84))
-        self.assertEqual(-12, gcd(84, -120))
-
-
-def _components(r):
-    return (r.numerator, r.denominator)
-
-
-class FractionTest(unittest.TestCase):
-
-    def assertTypedEquals(self, expected, actual):
-        """Asserts that both the types and values are the same."""
-        self.assertEqual(type(expected), type(actual))
-        self.assertEqual(expected, actual)
-
-    def assertRaisesMessage(self, exc_type, message,
-                            callable, *args, **kwargs):
-        """Asserts that callable(*args, **kwargs) raises exc_type(message)."""
-        try:
-            callable(*args, **kwargs)
-        except exc_type, e:
-            self.assertEqual(message, str(e))
-        else:
-            self.fail("%s not raised" % exc_type.__name__)
-
-    def testInit(self):
-        self.assertEqual((0, 1), _components(F()))
-        self.assertEqual((7, 1), _components(F(7)))
-        self.assertEqual((7, 3), _components(F(F(7, 3))))
-
-        self.assertEqual((-1, 1), _components(F(-1, 1)))
-        self.assertEqual((-1, 1), _components(F(1, -1)))
-        self.assertEqual((1, 1), _components(F(-2, -2)))
-        self.assertEqual((1, 2), _components(F(5, 10)))
-        self.assertEqual((7, 15), _components(F(7, 15)))
-        self.assertEqual((10**23, 1), _components(F(10**23)))
-
-        self.assertEqual((3, 77), _components(F(F(3, 7), 11)))
-        self.assertEqual((-9, 5), _components(F(2, F(-10, 9))))
-        self.assertEqual((2486, 2485), _components(F(F(22, 7), F(355, 113))))
-
-        self.assertRaisesMessage(ZeroDivisionError, "Fraction(12, 0)",
-                                 F, 12, 0)
-        self.assertRaises(TypeError, F, 1.5 + 3j)
-
-        self.assertRaises(TypeError, F, "3/2", 3)
-        self.assertRaises(TypeError, F, 3, 0j)
-        self.assertRaises(TypeError, F, 3, 1j)
-
-    @requires_IEEE_754
-    def testInitFromFloat(self):
-        self.assertEqual((5, 2), _components(F(2.5)))
-        self.assertEqual((0, 1), _components(F(-0.0)))
-        self.assertEqual((3602879701896397, 36028797018963968),
-                         _components(F(0.1)))
-        self.assertRaises(TypeError, F, float('nan'))
-        self.assertRaises(TypeError, F, float('inf'))
-        self.assertRaises(TypeError, F, float('-inf'))
-
-    def testInitFromDecimal(self):
-        self.assertEqual((11, 10),
-                         _components(F(Decimal('1.1'))))
-        self.assertEqual((7, 200),
-                         _components(F(Decimal('3.5e-2'))))
-        self.assertEqual((0, 1),
-                         _components(F(Decimal('.000e20'))))
-        self.assertRaises(TypeError, F, Decimal('nan'))
-        self.assertRaises(TypeError, F, Decimal('snan'))
-        self.assertRaises(TypeError, F, Decimal('inf'))
-        self.assertRaises(TypeError, F, Decimal('-inf'))
-
-    def testFromString(self):
-        self.assertEqual((5, 1), _components(F("5")))
-        self.assertEqual((3, 2), _components(F("3/2")))
-        self.assertEqual((3, 2), _components(F(" \n  +3/2")))
-        self.assertEqual((-3, 2), _components(F("-3/2  ")))
-        self.assertEqual((13, 2), _components(F("    013/02 \n  ")))
-        self.assertEqual((13, 2), _components(F(u"    013/02 \n  ")))
-
-        self.assertEqual((16, 5), _components(F(" 3.2 ")))
-        self.assertEqual((-16, 5), _components(F(u" -3.2 ")))
-        self.assertEqual((-3, 1), _components(F(u" -3. ")))
-        self.assertEqual((3, 5), _components(F(u" .6 ")))
-        self.assertEqual((1, 3125), _components(F("32.e-5")))
-        self.assertEqual((1000000, 1), _components(F("1E+06")))
-        self.assertEqual((-12300, 1), _components(F("-1.23e4")))
-        self.assertEqual((0, 1), _components(F(" .0e+0\t")))
-        self.assertEqual((0, 1), _components(F("-0.000e0")))
-
-
-        self.assertRaisesMessage(
-            ZeroDivisionError, "Fraction(3, 0)",
-            F, "3/0")
-        self.assertRaisesMessage(
-            ValueError, "Invalid literal for Fraction: '3/'",
-            F, "3/")
-        self.assertRaisesMessage(
-            ValueError, "Invalid literal for Fraction: '/2'",
-            F, "/2")
-        self.assertRaisesMessage(
-            ValueError, "Invalid literal for Fraction: '3 /2'",
-            F, "3 /2")
-        self.assertRaisesMessage(
-            # Denominators don't need a sign.
-            ValueError, "Invalid literal for Fraction: '3/+2'",
-            F, "3/+2")
-        self.assertRaisesMessage(
-            # Imitate float's parsing.
-            ValueError, "Invalid literal for Fraction: '+ 3/2'",
-            F, "+ 3/2")
-        self.assertRaisesMessage(
-            # Avoid treating '.' as a regex special character.
-            ValueError, "Invalid literal for Fraction: '3a2'",
-            F, "3a2")
-        self.assertRaisesMessage(
-            # Don't accept combinations of decimals and fractions.
-            ValueError, "Invalid literal for Fraction: '3/7.2'",
-            F, "3/7.2")
-        self.assertRaisesMessage(
-            # Don't accept combinations of decimals and fractions.
-            ValueError, "Invalid literal for Fraction: '3.2/7'",
-            F, "3.2/7")
-        self.assertRaisesMessage(
-            # Allow 3. and .3, but not .
-            ValueError, "Invalid literal for Fraction: '.'",
-            F, ".")
-
-    def testImmutable(self):
-        r = F(7, 3)
-        r.__init__(2, 15)
-        self.assertEqual((7, 3), _components(r))
-
-        self.assertRaises(AttributeError, setattr, r, 'numerator', 12)
-        self.assertRaises(AttributeError, setattr, r, 'denominator', 6)
-        self.assertEqual((7, 3), _components(r))
-
-        # But if you _really_ need to:
-        r._numerator = 4
-        r._denominator = 2
-        self.assertEqual((4, 2), _components(r))
-        # Which breaks some important operations:
-        self.assertNotEqual(F(4, 2), r)
-
-    def testFromFloat(self):
-        self.assertRaises(TypeError, F.from_float, 3+4j)
-        self.assertEqual((10, 1), _components(F.from_float(10)))
-        bigint = 1234567890123456789
-        self.assertEqual((bigint, 1), _components(F.from_float(bigint)))
-        self.assertEqual((0, 1), _components(F.from_float(-0.0)))
-        self.assertEqual((10, 1), _components(F.from_float(10.0)))
-        self.assertEqual((-5, 2), _components(F.from_float(-2.5)))
-        self.assertEqual((99999999999999991611392, 1),
-                         _components(F.from_float(1e23)))
-        self.assertEqual(float(10**23), float(F.from_float(1e23)))
-        self.assertEqual((3602879701896397, 1125899906842624),
-                         _components(F.from_float(3.2)))
-        self.assertEqual(3.2, float(F.from_float(3.2)))
-
-        inf = 1e1000
-        nan = inf - inf
-        self.assertRaisesMessage(
-            TypeError, "Cannot convert inf to Fraction.",
-            F.from_float, inf)
-        self.assertRaisesMessage(
-            TypeError, "Cannot convert -inf to Fraction.",
-            F.from_float, -inf)
-        self.assertRaisesMessage(
-            TypeError, "Cannot convert nan to Fraction.",
-            F.from_float, nan)
-
-    def testFromDecimal(self):
-        self.assertRaises(TypeError, F.from_decimal, 3+4j)
-        self.assertEqual(F(10, 1), F.from_decimal(10))
-        self.assertEqual(F(0), F.from_decimal(Decimal("-0")))
-        self.assertEqual(F(5, 10), F.from_decimal(Decimal("0.5")))
-        self.assertEqual(F(5, 1000), F.from_decimal(Decimal("5e-3")))
-        self.assertEqual(F(5000), F.from_decimal(Decimal("5e3")))
-        self.assertEqual(1 - F(1, 10**30),
-                         F.from_decimal(Decimal("0." + "9" * 30)))
-
-        self.assertRaisesMessage(
-            TypeError, "Cannot convert Infinity to Fraction.",
-            F.from_decimal, Decimal("inf"))
-        self.assertRaisesMessage(
-            TypeError, "Cannot convert -Infinity to Fraction.",
-            F.from_decimal, Decimal("-inf"))
-        self.assertRaisesMessage(
-            TypeError, "Cannot convert NaN to Fraction.",
-            F.from_decimal, Decimal("nan"))
-        self.assertRaisesMessage(
-            TypeError, "Cannot convert sNaN to Fraction.",
-            F.from_decimal, Decimal("snan"))
-
-    def testLimitDenominator(self):
-        rpi = F('3.1415926535897932')
-        self.assertEqual(rpi.limit_denominator(10000), F(355, 113))
-        self.assertEqual(-rpi.limit_denominator(10000), F(-355, 113))
-        self.assertEqual(rpi.limit_denominator(113), F(355, 113))
-        self.assertEqual(rpi.limit_denominator(112), F(333, 106))
-        self.assertEqual(F(201, 200).limit_denominator(100), F(1))
-        self.assertEqual(F(201, 200).limit_denominator(101), F(102, 101))
-        self.assertEqual(F(0).limit_denominator(10000), F(0))
-
-    def testConversions(self):
-        self.assertTypedEquals(-1, math.trunc(F(-11, 10)))
-        self.assertTypedEquals(-1, int(F(-11, 10)))
-
-        self.assertEqual(False, bool(F(0, 1)))
-        self.assertEqual(True, bool(F(3, 2)))
-        self.assertTypedEquals(0.1, float(F(1, 10)))
-
-        # Check that __float__ isn't implemented by converting the
-        # numerator and denominator to float before dividing.
-        self.assertRaises(OverflowError, float, long('2'*400+'7'))
-        self.assertAlmostEqual(2.0/3,
-                                float(F(long('2'*400+'7'), long('3'*400+'1'))))
-
-        self.assertTypedEquals(0.1+0j, complex(F(1,10)))
-
-
-    def testArithmetic(self):
-        self.assertEqual(F(1, 2), F(1, 10) + F(2, 5))
-        self.assertEqual(F(-3, 10), F(1, 10) - F(2, 5))
-        self.assertEqual(F(1, 25), F(1, 10) * F(2, 5))
-        self.assertEqual(F(1, 4), F(1, 10) / F(2, 5))
-        self.assertTypedEquals(2, F(9, 10) // F(2, 5))
-        self.assertTypedEquals(10**23, F(10**23, 1) // F(1))
-        self.assertEqual(F(2, 3), F(-7, 3) % F(3, 2))
-        self.assertEqual(F(8, 27), F(2, 3) ** F(3))
-        self.assertEqual(F(27, 8), F(2, 3) ** F(-3))
-        self.assertTypedEquals(2.0, F(4) ** F(1, 2))
-        # Will return 1j in 3.0:
-        self.assertRaises(ValueError, pow, F(-1), F(1, 2))
-
-    def testMixedArithmetic(self):
-        self.assertTypedEquals(F(11, 10), F(1, 10) + 1)
-        self.assertTypedEquals(1.1, F(1, 10) + 1.0)
-        self.assertTypedEquals(1.1 + 0j, F(1, 10) + (1.0 + 0j))
-        self.assertTypedEquals(F(11, 10), 1 + F(1, 10))
-        self.assertTypedEquals(1.1, 1.0 + F(1, 10))
-        self.assertTypedEquals(1.1 + 0j, (1.0 + 0j) + F(1, 10))
-
-        self.assertTypedEquals(F(-9, 10), F(1, 10) - 1)
-        self.assertTypedEquals(-0.9, F(1, 10) - 1.0)
-        self.assertTypedEquals(-0.9 + 0j, F(1, 10) - (1.0 + 0j))
-        self.assertTypedEquals(F(9, 10), 1 - F(1, 10))
-        self.assertTypedEquals(0.9, 1.0 - F(1, 10))
-        self.assertTypedEquals(0.9 + 0j, (1.0 + 0j) - F(1, 10))
-
-        self.assertTypedEquals(F(1, 10), F(1, 10) * 1)
-        self.assertTypedEquals(0.1, F(1, 10) * 1.0)
-        self.assertTypedEquals(0.1 + 0j, F(1, 10) * (1.0 + 0j))
-        self.assertTypedEquals(F(1, 10), 1 * F(1, 10))
-        self.assertTypedEquals(0.1, 1.0 * F(1, 10))
-        self.assertTypedEquals(0.1 + 0j, (1.0 + 0j) * F(1, 10))
-
-        self.assertTypedEquals(F(1, 10), F(1, 10) / 1)
-        self.assertTypedEquals(0.1, F(1, 10) / 1.0)
-        self.assertTypedEquals(0.1 + 0j, F(1, 10) / (1.0 + 0j))
-        self.assertTypedEquals(F(10, 1), 1 / F(1, 10))
-        self.assertTypedEquals(10.0, 1.0 / F(1, 10))
-        self.assertTypedEquals(10.0 + 0j, (1.0 + 0j) / F(1, 10))
-
-        self.assertTypedEquals(0, F(1, 10) // 1)
-        self.assertTypedEquals(0.0, F(1, 10) // 1.0)
-        self.assertTypedEquals(10, 1 // F(1, 10))
-        self.assertTypedEquals(10**23, 10**22 // F(1, 10))
-        self.assertTypedEquals(10.0, 1.0 // F(1, 10))
-
-        self.assertTypedEquals(F(1, 10), F(1, 10) % 1)
-        self.assertTypedEquals(0.1, F(1, 10) % 1.0)
-        self.assertTypedEquals(F(0, 1), 1 % F(1, 10))
-        self.assertTypedEquals(0.0, 1.0 % F(1, 10))
-
-        # No need for divmod since we don't override it.
-
-        # ** has more interesting conversion rules.
-        self.assertTypedEquals(F(100, 1), F(1, 10) ** -2)
-        self.assertTypedEquals(F(100, 1), F(10, 1) ** 2)
-        self.assertTypedEquals(0.1, F(1, 10) ** 1.0)
-        self.assertTypedEquals(0.1 + 0j, F(1, 10) ** (1.0 + 0j))
-        self.assertTypedEquals(4 , 2 ** F(2, 1))
-        # Will return 1j in 3.0:
-        self.assertRaises(ValueError, pow, (-1), F(1, 2))
-        self.assertTypedEquals(F(1, 4) , 2 ** F(-2, 1))
-        self.assertTypedEquals(2.0 , 4 ** F(1, 2))
-        self.assertTypedEquals(0.25, 2.0 ** F(-2, 1))
-        self.assertTypedEquals(1.0 + 0j, (1.0 + 0j) ** F(1, 10))
-
-    def testMixingWithDecimal(self):
-        # Decimal refuses mixed comparisons.
-        self.assertRaisesMessage(
-            TypeError,
-            "unsupported operand type(s) for +: 'Fraction' and 'Decimal'",
-            operator.add, F(3,11), Decimal('3.1415926'))
-        self.assertNotEqual(F(5, 2), Decimal('2.5'))
-
-    def testComparisons(self):
-        self.assertTrue(F(1, 2) < F(2, 3))
-        self.assertFalse(F(1, 2) < F(1, 2))
-        self.assertTrue(F(1, 2) <= F(2, 3))
-        self.assertTrue(F(1, 2) <= F(1, 2))
-        self.assertFalse(F(2, 3) <= F(1, 2))
-        self.assertTrue(F(1, 2) == F(1, 2))
-        self.assertFalse(F(1, 2) == F(1, 3))
-        self.assertFalse(F(1, 2) != F(1, 2))
-        self.assertTrue(F(1, 2) != F(1, 3))
-
-    def testComparisonsDummyRational(self):
-        self.assertTrue(F(1, 2) == DummyRational(1, 2))
-        self.assertTrue(DummyRational(1, 2) == F(1, 2))
-        self.assertFalse(F(1, 2) == DummyRational(3, 4))
-        self.assertFalse(DummyRational(3, 4) == F(1, 2))
-
-        self.assertTrue(F(1, 2) < DummyRational(3, 4))
-        self.assertFalse(F(1, 2) < DummyRational(1, 2))
-        self.assertFalse(F(1, 2) < DummyRational(1, 7))
-        self.assertFalse(F(1, 2) > DummyRational(3, 4))
-        self.assertFalse(F(1, 2) > DummyRational(1, 2))
-        self.assertTrue(F(1, 2) > DummyRational(1, 7))
-        self.assertTrue(F(1, 2) <= DummyRational(3, 4))
-        self.assertTrue(F(1, 2) <= DummyRational(1, 2))
-        self.assertFalse(F(1, 2) <= DummyRational(1, 7))
-        self.assertFalse(F(1, 2) >= DummyRational(3, 4))
-        self.assertTrue(F(1, 2) >= DummyRational(1, 2))
-        self.assertTrue(F(1, 2) >= DummyRational(1, 7))
-
-        self.assertTrue(DummyRational(1, 2) < F(3, 4))
-        self.assertFalse(DummyRational(1, 2) < F(1, 2))
-        self.assertFalse(DummyRational(1, 2) < F(1, 7))
-        self.assertFalse(DummyRational(1, 2) > F(3, 4))
-        self.assertFalse(DummyRational(1, 2) > F(1, 2))
-        self.assertTrue(DummyRational(1, 2) > F(1, 7))
-        self.assertTrue(DummyRational(1, 2) <= F(3, 4))
-        self.assertTrue(DummyRational(1, 2) <= F(1, 2))
-        self.assertFalse(DummyRational(1, 2) <= F(1, 7))
-        self.assertFalse(DummyRational(1, 2) >= F(3, 4))
-        self.assertTrue(DummyRational(1, 2) >= F(1, 2))
-        self.assertTrue(DummyRational(1, 2) >= F(1, 7))
-
-    def testComparisonsDummyFloat(self):
-        x = DummyFloat(1./3.)
-        y = F(1, 3)
-        self.assertTrue(x != y)
-        self.assertTrue(x < y or x > y)
-        self.assertFalse(x == y)
-        self.assertFalse(x <= y and x >= y)
-        self.assertTrue(y != x)
-        self.assertTrue(y < x or y > x)
-        self.assertFalse(y == x)
-        self.assertFalse(y <= x and y >= x)
-
-    def testMixedLess(self):
-        self.assertTrue(2 < F(5, 2))
-        self.assertFalse(2 < F(4, 2))
-        self.assertTrue(F(5, 2) < 3)
-        self.assertFalse(F(4, 2) < 2)
-
-        self.assertTrue(F(1, 2) < 0.6)
-        self.assertFalse(F(1, 2) < 0.4)
-        self.assertTrue(0.4 < F(1, 2))
-        self.assertFalse(0.5 < F(1, 2))
-
-        self.assertFalse(float('inf') < F(1, 2))
-        self.assertTrue(float('-inf') < F(0, 10))
-        self.assertFalse(float('nan') < F(-3, 7))
-        self.assertTrue(F(1, 2) < float('inf'))
-        self.assertFalse(F(17, 12) < float('-inf'))
-        self.assertFalse(F(144, -89) < float('nan'))
-
-    def testMixedLessEqual(self):
-        self.assertTrue(0.5 <= F(1, 2))
-        self.assertFalse(0.6 <= F(1, 2))
-        self.assertTrue(F(1, 2) <= 0.5)
-        self.assertFalse(F(1, 2) <= 0.4)
-        self.assertTrue(2 <= F(4, 2))
-        self.assertFalse(2 <= F(3, 2))
-        self.assertTrue(F(4, 2) <= 2)
-        self.assertFalse(F(5, 2) <= 2)
-
-        self.assertFalse(float('inf') <= F(1, 2))
-        self.assertTrue(float('-inf') <= F(0, 10))
-        self.assertFalse(float('nan') <= F(-3, 7))
-        self.assertTrue(F(1, 2) <= float('inf'))
-        self.assertFalse(F(17, 12) <= float('-inf'))
-        self.assertFalse(F(144, -89) <= float('nan'))
-
-    def testBigFloatComparisons(self):
-        # Because 10**23 can't be represented exactly as a float:
-        self.assertFalse(F(10**23) == float(10**23))
-        # The first test demonstrates why these are important.
-        self.assertFalse(1e23 < float(F(math.trunc(1e23) + 1)))
-        self.assertTrue(1e23 < F(math.trunc(1e23) + 1))
-        self.assertFalse(1e23 <= F(math.trunc(1e23) - 1))
-        self.assertTrue(1e23 > F(math.trunc(1e23) - 1))
-        self.assertFalse(1e23 >= F(math.trunc(1e23) + 1))
-
-    def testBigComplexComparisons(self):
-        self.assertFalse(F(10**23) == complex(10**23))
-        self.assertRaises(TypeError, operator.gt, F(10**23), complex(10**23))
-        self.assertRaises(TypeError, operator.le, F(10**23), complex(10**23))
-
-        x = F(3, 8)
-        z = complex(0.375, 0.0)
-        w = complex(0.375, 0.2)
-        self.assertTrue(x == z)
-        self.assertFalse(x != z)
-        self.assertFalse(x == w)
-        self.assertTrue(x != w)
-        for op in operator.lt, operator.le, operator.gt, operator.ge:
-            self.assertRaises(TypeError, op, x, z)
-            self.assertRaises(TypeError, op, z, x)
-            self.assertRaises(TypeError, op, x, w)
-            self.assertRaises(TypeError, op, w, x)
-
-    def testMixedEqual(self):
-        self.assertTrue(0.5 == F(1, 2))
-        self.assertFalse(0.6 == F(1, 2))
-        self.assertTrue(F(1, 2) == 0.5)
-        self.assertFalse(F(1, 2) == 0.4)
-        self.assertTrue(2 == F(4, 2))
-        self.assertFalse(2 == F(3, 2))
-        self.assertTrue(F(4, 2) == 2)
-        self.assertFalse(F(5, 2) == 2)
-        self.assertFalse(F(5, 2) == float('nan'))
-        self.assertFalse(float('nan') == F(3, 7))
-        self.assertFalse(F(5, 2) == float('inf'))
-        self.assertFalse(float('-inf') == F(2, 5))
-
-    def testStringification(self):
-        self.assertEqual("Fraction(7, 3)", repr(F(7, 3)))
-        self.assertEqual("Fraction(6283185307, 2000000000)",
-                         repr(F('3.1415926535')))
-        self.assertEqual("Fraction(-1, 100000000000000000000)",
-                         repr(F(1, -10**20)))
-        self.assertEqual("7/3", str(F(7, 3)))
-        self.assertEqual("7", str(F(7, 1)))
-
-    def testHash(self):
-        self.assertEqual(hash(2.5), hash(F(5, 2)))
-        self.assertEqual(hash(10**50), hash(F(10**50)))
-        self.assertNotEqual(hash(float(10**23)), hash(F(10**23)))
-
-    def testApproximatePi(self):
-        # Algorithm borrowed from
-        # http://docs.python.org/lib/decimal-recipes.html
-        three = F(3)
-        lasts, t, s, n, na, d, da = 0, three, 3, 1, 0, 0, 24
-        while abs(s - lasts) > F(1, 10**9):
-            lasts = s
-            n, na = n+na, na+8
-            d, da = d+da, da+32
-            t = (t * n) / d
-            s += t
-        self.assertAlmostEqual(math.pi, s)
-
-    def testApproximateCos1(self):
-        # Algorithm borrowed from
-        # http://docs.python.org/lib/decimal-recipes.html
-        x = F(1)
-        i, lasts, s, fact, num, sign = 0, 0, F(1), 1, 1, 1
-        while abs(s - lasts) > F(1, 10**9):
-            lasts = s
-            i += 2
-            fact *= i * (i-1)
-            num *= x * x
-            sign *= -1
-            s += num / fact * sign
-        self.assertAlmostEqual(math.cos(1), s)
-
-    def test_copy_deepcopy_pickle(self):
-        r = F(13, 7)
-        self.assertEqual(r, loads(dumps(r)))
-        self.assertEqual(id(r), id(copy(r)))
-        self.assertEqual(id(r), id(deepcopy(r)))
-
-    def test_slots(self):
-        # Issue 4998
-        r = F(13, 7)
-        self.assertRaises(AttributeError, setattr, r, 'a', 10)
-
-def test_main():
-    run_unittest(FractionTest, GcdTest)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_frozen.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_frozen.py
deleted file mode 100644
index 4fa4fcd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_frozen.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Test the frozen module defined in frozen.c.
-
-from test.test_support import captured_stdout, run_unittest
-import unittest
-import sys
-
-class FrozenTests(unittest.TestCase):
-    def test_frozen(self):
-
-        with captured_stdout() as stdout:
-            try:
-                import __hello__
-            except ImportError, x:
-                self.fail("import __hello__ failed:" + str(x))
-
-            try:
-                import __phello__
-            except ImportError, x:
-                self.fail("import __phello__ failed:" + str(x))
-
-            try:
-                import __phello__.spam
-            except ImportError, x:
-                self.fail("import __phello__.spam failed:" + str(x))
-
-            try:
-                import __phello__.foo
-            except ImportError:
-                pass
-            else:
-                self.fail("import __phello__.foo should have failed")
-
-        self.assertEqual(stdout.getvalue(),
-                         'Hello world...\nHello world...\nHello world...\n')
-
-        del sys.modules['__hello__']
-        del sys.modules['__phello__']
-        del sys.modules['__phello__.spam']
-
-
-def test_main():
-    run_unittest(FrozenTests)
-
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ftplib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ftplib.py
deleted file mode 100644
index 99d34e5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ftplib.py
+++ /dev/null
@@ -1,778 +0,0 @@
-"""Test script for ftplib module."""
-
-# Modified by Giampaolo Rodola' to test FTP class, IPv6 and TLS
-# environment
-
-import ftplib
-import asyncore
-import asynchat
-import socket
-import StringIO
-import errno
-import os
-try:
-    import ssl
-except ImportError:
-    ssl = None
-
-from unittest import TestCase
-from test import test_support
-from test.test_support import HOST
-threading = test_support.import_module('threading')
-
-
-# the dummy data returned by server over the data channel when
-# RETR, LIST and NLST commands are issued
-RETR_DATA = 'abcde12345\r\n' * 1000
-LIST_DATA = 'foo\r\nbar\r\n'
-NLST_DATA = 'foo\r\nbar\r\n'
-
-
-class DummyDTPHandler(asynchat.async_chat):
-    dtp_conn_closed = False
-
-    def __init__(self, conn, baseclass):
-        asynchat.async_chat.__init__(self, conn)
-        self.baseclass = baseclass
-        self.baseclass.last_received_data = ''
-
-    def handle_read(self):
-        self.baseclass.last_received_data += self.recv(1024)
-
-    def handle_close(self):
-        # XXX: this method can be called many times in a row for a single
-        # connection, including in clear-text (non-TLS) mode.
-        # (behaviour witnessed with test_data_connection)
-        if not self.dtp_conn_closed:
-            self.baseclass.push('226 transfer complete')
-            self.close()
-            self.dtp_conn_closed = True
-
-    def handle_error(self):
-        raise
-
-
-class DummyFTPHandler(asynchat.async_chat):
-
-    dtp_handler = DummyDTPHandler
-
-    def __init__(self, conn):
-        asynchat.async_chat.__init__(self, conn)
-        self.set_terminator("\r\n")
-        self.in_buffer = []
-        self.dtp = None
-        self.last_received_cmd = None
-        self.last_received_data = ''
-        self.next_response = ''
-        self.rest = None
-        self.push('220 welcome')
-
-    def collect_incoming_data(self, data):
-        self.in_buffer.append(data)
-
-    def found_terminator(self):
-        line = ''.join(self.in_buffer)
-        self.in_buffer = []
-        if self.next_response:
-            self.push(self.next_response)
-            self.next_response = ''
-        cmd = line.split(' ')[0].lower()
-        self.last_received_cmd = cmd
-        space = line.find(' ')
-        if space != -1:
-            arg = line[space + 1:]
-        else:
-            arg = ""
-        if hasattr(self, 'cmd_' + cmd):
-            method = getattr(self, 'cmd_' + cmd)
-            method(arg)
-        else:
-            self.push('550 command "%s" not understood.' %cmd)
-
-    def handle_error(self):
-        raise
-
-    def push(self, data):
-        asynchat.async_chat.push(self, data + '\r\n')
-
-    def cmd_port(self, arg):
-        addr = map(int, arg.split(','))
-        ip = '%d.%d.%d.%d' %tuple(addr[:4])
-        port = (addr[4] * 256) + addr[5]
-        s = socket.create_connection((ip, port), timeout=10)
-        self.dtp = self.dtp_handler(s, baseclass=self)
-        self.push('200 active data connection established')
-
-    def cmd_pasv(self, arg):
-        sock = socket.socket()
-        sock.bind((self.socket.getsockname()[0], 0))
-        sock.listen(5)
-        sock.settimeout(10)
-        ip, port = sock.getsockname()[:2]
-        ip = ip.replace('.', ',')
-        p1, p2 = divmod(port, 256)
-        self.push('227 entering passive mode (%s,%d,%d)' %(ip, p1, p2))
-        conn, addr = sock.accept()
-        self.dtp = self.dtp_handler(conn, baseclass=self)
-
-    def cmd_eprt(self, arg):
-        af, ip, port = arg.split(arg[0])[1:-1]
-        port = int(port)
-        s = socket.create_connection((ip, port), timeout=10)
-        self.dtp = self.dtp_handler(s, baseclass=self)
-        self.push('200 active data connection established')
-
-    def cmd_epsv(self, arg):
-        sock = socket.socket(socket.AF_INET6)
-        sock.bind((self.socket.getsockname()[0], 0))
-        sock.listen(5)
-        sock.settimeout(10)
-        port = sock.getsockname()[1]
-        self.push('229 entering extended passive mode (|||%d|)' %port)
-        conn, addr = sock.accept()
-        self.dtp = self.dtp_handler(conn, baseclass=self)
-
-    def cmd_echo(self, arg):
-        # sends back the received string (used by the test suite)
-        self.push(arg)
-
-    def cmd_user(self, arg):
-        self.push('331 username ok')
-
-    def cmd_pass(self, arg):
-        self.push('230 password ok')
-
-    def cmd_acct(self, arg):
-        self.push('230 acct ok')
-
-    def cmd_rnfr(self, arg):
-        self.push('350 rnfr ok')
-
-    def cmd_rnto(self, arg):
-        self.push('250 rnto ok')
-
-    def cmd_dele(self, arg):
-        self.push('250 dele ok')
-
-    def cmd_cwd(self, arg):
-        self.push('250 cwd ok')
-
-    def cmd_size(self, arg):
-        self.push('250 1000')
-
-    def cmd_mkd(self, arg):
-        self.push('257 "%s"' %arg)
-
-    def cmd_rmd(self, arg):
-        self.push('250 rmd ok')
-
-    def cmd_pwd(self, arg):
-        self.push('257 "pwd ok"')
-
-    def cmd_type(self, arg):
-        self.push('200 type ok')
-
-    def cmd_quit(self, arg):
-        self.push('221 quit ok')
-        self.close()
-
-    def cmd_stor(self, arg):
-        self.push('125 stor ok')
-
-    def cmd_rest(self, arg):
-        self.rest = arg
-        self.push('350 rest ok')
-
-    def cmd_retr(self, arg):
-        self.push('125 retr ok')
-        if self.rest is not None:
-            offset = int(self.rest)
-        else:
-            offset = 0
-        self.dtp.push(RETR_DATA[offset:])
-        self.dtp.close_when_done()
-        self.rest = None
-
-    def cmd_list(self, arg):
-        self.push('125 list ok')
-        self.dtp.push(LIST_DATA)
-        self.dtp.close_when_done()
-
-    def cmd_nlst(self, arg):
-        self.push('125 nlst ok')
-        self.dtp.push(NLST_DATA)
-        self.dtp.close_when_done()
-
-
-class DummyFTPServer(asyncore.dispatcher, threading.Thread):
-
-    handler = DummyFTPHandler
-
-    def __init__(self, address, af=socket.AF_INET):
-        threading.Thread.__init__(self)
-        asyncore.dispatcher.__init__(self)
-        self.create_socket(af, socket.SOCK_STREAM)
-        self.bind(address)
-        self.listen(5)
-        self.active = False
-        self.active_lock = threading.Lock()
-        self.host, self.port = self.socket.getsockname()[:2]
-
-    def start(self):
-        assert not self.active
-        self.__flag = threading.Event()
-        threading.Thread.start(self)
-        self.__flag.wait()
-
-    def run(self):
-        self.active = True
-        self.__flag.set()
-        while self.active and asyncore.socket_map:
-            self.active_lock.acquire()
-            asyncore.loop(timeout=0.1, count=1)
-            self.active_lock.release()
-        asyncore.close_all(ignore_all=True)
-
-    def stop(self):
-        assert self.active
-        self.active = False
-        self.join()
-
-    def handle_accept(self):
-        conn, addr = self.accept()
-        self.handler = self.handler(conn)
-        self.close()
-
-    def handle_connect(self):
-        self.close()
-    handle_read = handle_connect
-
-    def writable(self):
-        return 0
-
-    def handle_error(self):
-        raise
-
-
-if ssl is not None:
-
-    CERTFILE = os.path.join(os.path.dirname(__file__), "keycert.pem")
-
-    class SSLConnection(object, asyncore.dispatcher):
-        """An asyncore.dispatcher subclass supporting TLS/SSL."""
-
-        _ssl_accepting = False
-        _ssl_closing = False
-
-        def secure_connection(self):
-            self.socket = ssl.wrap_socket(self.socket, suppress_ragged_eofs=False,
-                                          certfile=CERTFILE, server_side=True,
-                                          do_handshake_on_connect=False,
-                                          ssl_version=ssl.PROTOCOL_SSLv23)
-            self._ssl_accepting = True
-
-        def _do_ssl_handshake(self):
-            try:
-                self.socket.do_handshake()
-            except ssl.SSLError, err:
-                if err.args[0] in (ssl.SSL_ERROR_WANT_READ,
-                                   ssl.SSL_ERROR_WANT_WRITE):
-                    return
-                elif err.args[0] == ssl.SSL_ERROR_EOF:
-                    return self.handle_close()
-                raise
-            except socket.error, err:
-                if err.args[0] == errno.ECONNABORTED:
-                    return self.handle_close()
-            else:
-                self._ssl_accepting = False
-
-        def _do_ssl_shutdown(self):
-            self._ssl_closing = True
-            try:
-                self.socket = self.socket.unwrap()
-            except ssl.SSLError, err:
-                if err.args[0] in (ssl.SSL_ERROR_WANT_READ,
-                                   ssl.SSL_ERROR_WANT_WRITE):
-                    return
-            except socket.error, err:
-                # Any "socket error" corresponds to a SSL_ERROR_SYSCALL return
-                # from OpenSSL's SSL_shutdown(), corresponding to a
-                # closed socket condition. See also:
-                # http://www.mail-archive.com/openssl-users@openssl.org/msg60710.html
-                pass
-            self._ssl_closing = False
-            super(SSLConnection, self).close()
-
-        def handle_read_event(self):
-            if self._ssl_accepting:
-                self._do_ssl_handshake()
-            elif self._ssl_closing:
-                self._do_ssl_shutdown()
-            else:
-                super(SSLConnection, self).handle_read_event()
-
-        def handle_write_event(self):
-            if self._ssl_accepting:
-                self._do_ssl_handshake()
-            elif self._ssl_closing:
-                self._do_ssl_shutdown()
-            else:
-                super(SSLConnection, self).handle_write_event()
-
-        def send(self, data):
-            try:
-                return super(SSLConnection, self).send(data)
-            except ssl.SSLError, err:
-                if err.args[0] in (ssl.SSL_ERROR_EOF, ssl.SSL_ERROR_ZERO_RETURN,
-                                   ssl.SSL_ERROR_WANT_READ,
-                                   ssl.SSL_ERROR_WANT_WRITE):
-                    return 0
-                raise
-
-        def recv(self, buffer_size):
-            try:
-                return super(SSLConnection, self).recv(buffer_size)
-            except ssl.SSLError, err:
-                if err.args[0] in (ssl.SSL_ERROR_WANT_READ,
-                                   ssl.SSL_ERROR_WANT_WRITE):
-                    return ''
-                if err.args[0] in (ssl.SSL_ERROR_EOF, ssl.SSL_ERROR_ZERO_RETURN):
-                    self.handle_close()
-                    return ''
-                raise
-
-        def handle_error(self):
-            raise
-
-        def close(self):
-            if (isinstance(self.socket, ssl.SSLSocket) and
-                self.socket._sslobj is not None):
-                self._do_ssl_shutdown()
-
-
-    class DummyTLS_DTPHandler(SSLConnection, DummyDTPHandler):
-        """A DummyDTPHandler subclass supporting TLS/SSL."""
-
-        def __init__(self, conn, baseclass):
-            DummyDTPHandler.__init__(self, conn, baseclass)
-            if self.baseclass.secure_data_channel:
-                self.secure_connection()
-
-
-    class DummyTLS_FTPHandler(SSLConnection, DummyFTPHandler):
-        """A DummyFTPHandler subclass supporting TLS/SSL."""
-
-        dtp_handler = DummyTLS_DTPHandler
-
-        def __init__(self, conn):
-            DummyFTPHandler.__init__(self, conn)
-            self.secure_data_channel = False
-
-        def cmd_auth(self, line):
-            """Set up secure control channel."""
-            self.push('234 AUTH TLS successful')
-            self.secure_connection()
-
-        def cmd_pbsz(self, line):
-            """Negotiate size of buffer for secure data transfer.
-            For TLS/SSL the only valid value for the parameter is '0'.
-            Any other value is accepted but ignored.
-            """
-            self.push('200 PBSZ=0 successful.')
-
-        def cmd_prot(self, line):
-            """Setup un/secure data channel."""
-            arg = line.upper()
-            if arg == 'C':
-                self.push('200 Protection set to Clear')
-                self.secure_data_channel = False
-            elif arg == 'P':
-                self.push('200 Protection set to Private')
-                self.secure_data_channel = True
-            else:
-                self.push("502 Unrecognized PROT type (use C or P).")
-
-
-    class DummyTLS_FTPServer(DummyFTPServer):
-        handler = DummyTLS_FTPHandler
-
-
-class TestFTPClass(TestCase):
-
-    def setUp(self):
-        self.server = DummyFTPServer((HOST, 0))
-        self.server.start()
-        self.client = ftplib.FTP(timeout=10)
-        self.client.connect(self.server.host, self.server.port)
-
-    def tearDown(self):
-        self.client.close()
-        self.server.stop()
-
-    def test_getwelcome(self):
-        self.assertEqual(self.client.getwelcome(), '220 welcome')
-
-    def test_sanitize(self):
-        self.assertEqual(self.client.sanitize('foo'), repr('foo'))
-        self.assertEqual(self.client.sanitize('pass 12345'), repr('pass *****'))
-        self.assertEqual(self.client.sanitize('PASS 12345'), repr('PASS *****'))
-
-    def test_exceptions(self):
-        self.assertRaises(ftplib.error_temp, self.client.sendcmd, 'echo 400')
-        self.assertRaises(ftplib.error_temp, self.client.sendcmd, 'echo 499')
-        self.assertRaises(ftplib.error_perm, self.client.sendcmd, 'echo 500')
-        self.assertRaises(ftplib.error_perm, self.client.sendcmd, 'echo 599')
-        self.assertRaises(ftplib.error_proto, self.client.sendcmd, 'echo 999')
-
-    def test_all_errors(self):
-        exceptions = (ftplib.error_reply, ftplib.error_temp, ftplib.error_perm,
-                      ftplib.error_proto, ftplib.Error, IOError, EOFError)
-        for x in exceptions:
-            try:
-                raise x('exception not included in all_errors set')
-            except ftplib.all_errors:
-                pass
-
-    def test_set_pasv(self):
-        # passive mode is supposed to be enabled by default
-        self.assertTrue(self.client.passiveserver)
-        self.client.set_pasv(True)
-        self.assertTrue(self.client.passiveserver)
-        self.client.set_pasv(False)
-        self.assertFalse(self.client.passiveserver)
-
-    def test_voidcmd(self):
-        self.client.voidcmd('echo 200')
-        self.client.voidcmd('echo 299')
-        self.assertRaises(ftplib.error_reply, self.client.voidcmd, 'echo 199')
-        self.assertRaises(ftplib.error_reply, self.client.voidcmd, 'echo 300')
-
-    def test_login(self):
-        self.client.login()
-
-    def test_acct(self):
-        self.client.acct('passwd')
-
-    def test_rename(self):
-        self.client.rename('a', 'b')
-        self.server.handler.next_response = '200'
-        self.assertRaises(ftplib.error_reply, self.client.rename, 'a', 'b')
-
-    def test_delete(self):
-        self.client.delete('foo')
-        self.server.handler.next_response = '199'
-        self.assertRaises(ftplib.error_reply, self.client.delete, 'foo')
-
-    def test_size(self):
-        self.client.size('foo')
-
-    def test_mkd(self):
-        dir = self.client.mkd('/foo')
-        self.assertEqual(dir, '/foo')
-
-    def test_rmd(self):
-        self.client.rmd('foo')
-
-    def test_pwd(self):
-        dir = self.client.pwd()
-        self.assertEqual(dir, 'pwd ok')
-
-    def test_quit(self):
-        self.assertEqual(self.client.quit(), '221 quit ok')
-        # Ensure the connection gets closed; sock attribute should be None
-        self.assertEqual(self.client.sock, None)
-
-    def test_retrbinary(self):
-        received = []
-        self.client.retrbinary('retr', received.append)
-        self.assertEqual(''.join(received), RETR_DATA)
-
-    def test_retrbinary_rest(self):
-        for rest in (0, 10, 20):
-            received = []
-            self.client.retrbinary('retr', received.append, rest=rest)
-            self.assertEqual(''.join(received), RETR_DATA[rest:],
-                             msg='rest test case %d %d %d' % (rest,
-                                                              len(''.join(received)),
-                                                              len(RETR_DATA[rest:])))
-
-    def test_retrlines(self):
-        received = []
-        self.client.retrlines('retr', received.append)
-        self.assertEqual(''.join(received), RETR_DATA.replace('\r\n', ''))
-
-    def test_storbinary(self):
-        f = StringIO.StringIO(RETR_DATA)
-        self.client.storbinary('stor', f)
-        self.assertEqual(self.server.handler.last_received_data, RETR_DATA)
-        # test new callback arg
-        flag = []
-        f.seek(0)
-        self.client.storbinary('stor', f, callback=lambda x: flag.append(None))
-        self.assertTrue(flag)
-
-    def test_storbinary_rest(self):
-        f = StringIO.StringIO(RETR_DATA)
-        for r in (30, '30'):
-            f.seek(0)
-            self.client.storbinary('stor', f, rest=r)
-            self.assertEqual(self.server.handler.rest, str(r))
-
-    def test_storlines(self):
-        f = StringIO.StringIO(RETR_DATA.replace('\r\n', '\n'))
-        self.client.storlines('stor', f)
-        self.assertEqual(self.server.handler.last_received_data, RETR_DATA)
-        # test new callback arg
-        flag = []
-        f.seek(0)
-        self.client.storlines('stor foo', f, callback=lambda x: flag.append(None))
-        self.assertTrue(flag)
-
-    def test_nlst(self):
-        self.client.nlst()
-        self.assertEqual(self.client.nlst(), NLST_DATA.split('\r\n')[:-1])
-
-    def test_dir(self):
-        l = []
-        self.client.dir(lambda x: l.append(x))
-        self.assertEqual(''.join(l), LIST_DATA.replace('\r\n', ''))
-
-    def test_makeport(self):
-        self.client.makeport()
-        # IPv4 is in use, just make sure send_eprt has not been used
-        self.assertEqual(self.server.handler.last_received_cmd, 'port')
-
-    def test_makepasv(self):
-        host, port = self.client.makepasv()
-        conn = socket.create_connection((host, port), 10)
-        conn.close()
-        # IPv4 is in use, just make sure send_epsv has not been used
-        self.assertEqual(self.server.handler.last_received_cmd, 'pasv')
-
-
-class TestIPv6Environment(TestCase):
-
-    def setUp(self):
-        self.server = DummyFTPServer((HOST, 0), af=socket.AF_INET6)
-        self.server.start()
-        self.client = ftplib.FTP()
-        self.client.connect(self.server.host, self.server.port)
-
-    def tearDown(self):
-        self.client.close()
-        self.server.stop()
-
-    def test_af(self):
-        self.assertEqual(self.client.af, socket.AF_INET6)
-
-    def test_makeport(self):
-        self.client.makeport()
-        self.assertEqual(self.server.handler.last_received_cmd, 'eprt')
-
-    def test_makepasv(self):
-        host, port = self.client.makepasv()
-        conn = socket.create_connection((host, port), 10)
-        conn.close()
-        self.assertEqual(self.server.handler.last_received_cmd, 'epsv')
-
-    def test_transfer(self):
-        def retr():
-            received = []
-            self.client.retrbinary('retr', received.append)
-            self.assertEqual(''.join(received), RETR_DATA)
-        self.client.set_pasv(True)
-        retr()
-        self.client.set_pasv(False)
-        retr()
-
-
-class TestTLS_FTPClassMixin(TestFTPClass):
-    """Repeat TestFTPClass tests starting the TLS layer for both control
-    and data connections first.
-    """
-
-    def setUp(self):
-        self.server = DummyTLS_FTPServer((HOST, 0))
-        self.server.start()
-        self.client = ftplib.FTP_TLS(timeout=10)
-        self.client.connect(self.server.host, self.server.port)
-        # enable TLS
-        self.client.auth()
-        self.client.prot_p()
-
-
-class TestTLS_FTPClass(TestCase):
-    """Specific TLS_FTP class tests."""
-
-    def setUp(self):
-        self.server = DummyTLS_FTPServer((HOST, 0))
-        self.server.start()
-        self.client = ftplib.FTP_TLS(timeout=10)
-        self.client.connect(self.server.host, self.server.port)
-
-    def tearDown(self):
-        self.client.close()
-        self.server.stop()
-
-    def test_control_connection(self):
-        self.assertNotIsInstance(self.client.sock, ssl.SSLSocket)
-        self.client.auth()
-        self.assertIsInstance(self.client.sock, ssl.SSLSocket)
-
-    def test_data_connection(self):
-        # clear text
-        sock = self.client.transfercmd('list')
-        self.assertNotIsInstance(sock, ssl.SSLSocket)
-        sock.close()
-        self.assertEqual(self.client.voidresp(), "226 transfer complete")
-
-        # secured, after PROT P
-        self.client.prot_p()
-        sock = self.client.transfercmd('list')
-        self.assertIsInstance(sock, ssl.SSLSocket)
-        sock.close()
-        self.assertEqual(self.client.voidresp(), "226 transfer complete")
-
-        # PROT C is issued, the connection must be in cleartext again
-        self.client.prot_c()
-        sock = self.client.transfercmd('list')
-        self.assertNotIsInstance(sock, ssl.SSLSocket)
-        sock.close()
-        self.assertEqual(self.client.voidresp(), "226 transfer complete")
-
-    def test_login(self):
-        # login() is supposed to implicitly secure the control connection
-        self.assertNotIsInstance(self.client.sock, ssl.SSLSocket)
-        self.client.login()
-        self.assertIsInstance(self.client.sock, ssl.SSLSocket)
-        # make sure that AUTH TLS doesn't get issued again
-        self.client.login()
-
-    def test_auth_issued_twice(self):
-        self.client.auth()
-        self.assertRaises(ValueError, self.client.auth)
-
-    def test_auth_ssl(self):
-        try:
-            self.client.ssl_version = ssl.PROTOCOL_SSLv3
-            self.client.auth()
-            self.assertRaises(ValueError, self.client.auth)
-        finally:
-            self.client.ssl_version = ssl.PROTOCOL_TLSv1
-
-
-class TestTimeouts(TestCase):
-
-    def setUp(self):
-        self.evt = threading.Event()
-        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.sock.settimeout(3)
-        self.port = test_support.bind_port(self.sock)
-        threading.Thread(target=self.server, args=(self.evt,self.sock)).start()
-        # Wait for the server to be ready.
-        self.evt.wait()
-        self.evt.clear()
-        ftplib.FTP.port = self.port
-
-    def tearDown(self):
-        self.evt.wait()
-
-    def server(self, evt, serv):
-        # This method sets the evt 3 times:
-        #  1) when the connection is ready to be accepted.
-        #  2) when it is safe for the caller to close the connection
-        #  3) when we have closed the socket
-        serv.listen(5)
-        # (1) Signal the caller that we are ready to accept the connection.
-        evt.set()
-        try:
-            conn, addr = serv.accept()
-        except socket.timeout:
-            pass
-        else:
-            conn.send("1 Hola mundo\n")
-            # (2) Signal the caller that it is safe to close the socket.
-            evt.set()
-            conn.close()
-        finally:
-            serv.close()
-            # (3) Signal the caller that we are done.
-            evt.set()
-
-    def testTimeoutDefault(self):
-        # default -- use global socket timeout
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        socket.setdefaulttimeout(30)
-        try:
-            ftp = ftplib.FTP("localhost")
-        finally:
-            socket.setdefaulttimeout(None)
-        self.assertEqual(ftp.sock.gettimeout(), 30)
-        self.evt.wait()
-        ftp.close()
-
-    def testTimeoutNone(self):
-        # no timeout -- do not use global socket timeout
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        socket.setdefaulttimeout(30)
-        try:
-            ftp = ftplib.FTP("localhost", timeout=None)
-        finally:
-            socket.setdefaulttimeout(None)
-        self.assertTrue(ftp.sock.gettimeout() is None)
-        self.evt.wait()
-        ftp.close()
-
-    def testTimeoutValue(self):
-        # a value
-        ftp = ftplib.FTP(HOST, timeout=30)
-        self.assertEqual(ftp.sock.gettimeout(), 30)
-        self.evt.wait()
-        ftp.close()
-
-    def testTimeoutConnect(self):
-        ftp = ftplib.FTP()
-        ftp.connect(HOST, timeout=30)
-        self.assertEqual(ftp.sock.gettimeout(), 30)
-        self.evt.wait()
-        ftp.close()
-
-    def testTimeoutDifferentOrder(self):
-        ftp = ftplib.FTP(timeout=30)
-        ftp.connect(HOST)
-        self.assertEqual(ftp.sock.gettimeout(), 30)
-        self.evt.wait()
-        ftp.close()
-
-    def testTimeoutDirectAccess(self):
-        ftp = ftplib.FTP()
-        ftp.timeout = 30
-        ftp.connect(HOST)
-        self.assertEqual(ftp.sock.gettimeout(), 30)
-        self.evt.wait()
-        ftp.close()
-
-
-def test_main():
-    tests = [TestFTPClass, TestTimeouts]
-    if socket.has_ipv6:
-        try:
-            DummyFTPServer((HOST, 0), af=socket.AF_INET6)
-        except socket.error:
-            pass
-        else:
-            tests.append(TestIPv6Environment)
-
-    if ssl is not None:
-        tests.extend([TestTLS_FTPClassMixin, TestTLS_FTPClass])
-
-    thread_info = test_support.threading_setup()
-    try:
-        test_support.run_unittest(*tests)
-    finally:
-        test_support.threading_cleanup(*thread_info)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_funcattrs.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_funcattrs.py
deleted file mode 100644
index 4c3e93a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_funcattrs.py
+++ /dev/null
@@ -1,353 +0,0 @@
-from test import test_support
-import types
-import unittest
-
-class FuncAttrsTest(unittest.TestCase):
-    def setUp(self):
-        class F:
-            def a(self):
-                pass
-        def b():
-            return 3
-        self.f = F
-        self.fi = F()
-        self.b = b
-
-    def cannot_set_attr(self, obj, name, value, exceptions):
-        # Helper method for other tests.
-        try:
-            setattr(obj, name, value)
-        except exceptions:
-            pass
-        else:
-            self.fail("shouldn't be able to set %s to %r" % (name, value))
-        try:
-            delattr(obj, name)
-        except exceptions:
-            pass
-        else:
-            self.fail("shouldn't be able to del %s" % name)
-
-
-class FunctionPropertiesTest(FuncAttrsTest):
-    # Include the external setUp method that is common to all tests
-    def test_module(self):
-        self.assertEqual(self.b.__module__, __name__)
-
-    def test_dir_includes_correct_attrs(self):
-        self.b.known_attr = 7
-        self.assertIn('known_attr', dir(self.b),
-                        "set attributes not in dir listing of method")
-        # Test on underlying function object of method
-        self.f.a.im_func.known_attr = 7
-        self.assertIn('known_attr', dir(self.f.a),
-                        "set attribute on unbound method implementation in "
-                        "class not in dir")
-        self.assertIn('known_attr', dir(self.fi.a),
-                        "set attribute on unbound method implementations, "
-                        "should show up in next dir")
-
-    def test_duplicate_function_equality(self):
-        # Body of `duplicate' is the exact same as self.b
-        def duplicate():
-            'my docstring'
-            return 3
-        self.assertNotEqual(self.b, duplicate)
-
-    def test_copying_func_code(self):
-        def test(): pass
-        self.assertEqual(test(), None)
-        test.func_code = self.b.func_code
-        self.assertEqual(test(), 3) # self.b always returns 3, arbitrarily
-
-    def test_func_globals(self):
-        self.assertIs(self.b.func_globals, globals())
-        self.cannot_set_attr(self.b, 'func_globals', 2, TypeError)
-
-    def test_func_closure(self):
-        a = 12
-        def f(): print a
-        c = f.func_closure
-        self.assertIsInstance(c, tuple)
-        self.assertEqual(len(c), 1)
-        # don't have a type object handy
-        self.assertEqual(c[0].__class__.__name__, "cell")
-        self.cannot_set_attr(f, "func_closure", c, TypeError)
-
-    def test_empty_cell(self):
-        def f(): print a
-        try:
-            f.func_closure[0].cell_contents
-        except ValueError:
-            pass
-        else:
-            self.fail("shouldn't be able to read an empty cell")
-        a = 12
-
-    def test_func_name(self):
-        self.assertEqual(self.b.__name__, 'b')
-        self.assertEqual(self.b.func_name, 'b')
-        self.b.__name__ = 'c'
-        self.assertEqual(self.b.__name__, 'c')
-        self.assertEqual(self.b.func_name, 'c')
-        self.b.func_name = 'd'
-        self.assertEqual(self.b.__name__, 'd')
-        self.assertEqual(self.b.func_name, 'd')
-        # __name__ and func_name must be a string
-        self.cannot_set_attr(self.b, '__name__', 7, TypeError)
-        self.cannot_set_attr(self.b, 'func_name', 7, TypeError)
-        # __name__ must be available when in restricted mode. Exec will raise
-        # AttributeError if __name__ is not available on f.
-        s = """def f(): pass\nf.__name__"""
-        exec s in {'__builtins__': {}}
-        # Test on methods, too
-        self.assertEqual(self.f.a.__name__, 'a')
-        self.assertEqual(self.fi.a.__name__, 'a')
-        self.cannot_set_attr(self.f.a, "__name__", 'a', AttributeError)
-        self.cannot_set_attr(self.fi.a, "__name__", 'a', AttributeError)
-
-    def test_func_code(self):
-        num_one, num_two = 7, 8
-        def a(): pass
-        def b(): return 12
-        def c(): return num_one
-        def d(): return num_two
-        def e(): return num_one, num_two
-        for func in [a, b, c, d, e]:
-            self.assertEqual(type(func.func_code), types.CodeType)
-        self.assertEqual(c(), 7)
-        self.assertEqual(d(), 8)
-        d.func_code = c.func_code
-        self.assertEqual(c.func_code, d.func_code)
-        self.assertEqual(c(), 7)
-        # self.assertEqual(d(), 7)
-        try:
-            b.func_code = c.func_code
-        except ValueError:
-            pass
-        else:
-            self.fail("func_code with different numbers of free vars should "
-                      "not be possible")
-        try:
-            e.func_code = d.func_code
-        except ValueError:
-            pass
-        else:
-            self.fail("func_code with different numbers of free vars should "
-                      "not be possible")
-
-    def test_blank_func_defaults(self):
-        self.assertEqual(self.b.func_defaults, None)
-        del self.b.func_defaults
-        self.assertEqual(self.b.func_defaults, None)
-
-    def test_func_default_args(self):
-        def first_func(a, b):
-            return a+b
-        def second_func(a=1, b=2):
-            return a+b
-        self.assertEqual(first_func.func_defaults, None)
-        self.assertEqual(second_func.func_defaults, (1, 2))
-        first_func.func_defaults = (1, 2)
-        self.assertEqual(first_func.func_defaults, (1, 2))
-        self.assertEqual(first_func(), 3)
-        self.assertEqual(first_func(3), 5)
-        self.assertEqual(first_func(3, 5), 8)
-        del second_func.func_defaults
-        self.assertEqual(second_func.func_defaults, None)
-        try:
-            second_func()
-        except TypeError:
-            pass
-        else:
-            self.fail("func_defaults does not update; deleting it does not "
-                      "remove requirement")
-
-
-class InstancemethodAttrTest(FuncAttrsTest):
-    def test_im_class(self):
-        self.assertEqual(self.f.a.im_class, self.f)
-        self.assertEqual(self.fi.a.im_class, self.f)
-        self.cannot_set_attr(self.f.a, "im_class", self.f, TypeError)
-        self.cannot_set_attr(self.fi.a, "im_class", self.f, TypeError)
-
-    def test_im_func(self):
-        self.f.b = self.b
-        self.assertEqual(self.f.b.im_func, self.b)
-        self.assertEqual(self.fi.b.im_func, self.b)
-        self.cannot_set_attr(self.f.b, "im_func", self.b, TypeError)
-        self.cannot_set_attr(self.fi.b, "im_func", self.b, TypeError)
-
-    def test_im_self(self):
-        self.assertEqual(self.f.a.im_self, None)
-        self.assertEqual(self.fi.a.im_self, self.fi)
-        self.cannot_set_attr(self.f.a, "im_self", None, TypeError)
-        self.cannot_set_attr(self.fi.a, "im_self", self.fi, TypeError)
-
-    def test_im_func_non_method(self):
-        # Behavior should be the same when a method is added via an attr
-        # assignment
-        self.f.id = types.MethodType(id, None, self.f)
-        self.assertEqual(self.fi.id(), id(self.fi))
-        self.assertNotEqual(self.fi.id(), id(self.f))
-        # Test usage
-        try:
-            self.f.id.unknown_attr
-        except AttributeError:
-            pass
-        else:
-            self.fail("using unknown attributes should raise AttributeError")
-        # Test assignment and deletion
-        self.cannot_set_attr(self.f.id, 'unknown_attr', 2, AttributeError)
-        self.cannot_set_attr(self.fi.id, 'unknown_attr', 2, AttributeError)
-
-    def test_implicit_method_properties(self):
-        self.f.a.im_func.known_attr = 7
-        self.assertEqual(self.f.a.known_attr, 7)
-        self.assertEqual(self.fi.a.known_attr, 7)
-
-
-class ArbitraryFunctionAttrTest(FuncAttrsTest):
-    def test_set_attr(self):
-        # setting attributes only works on function objects
-        self.b.known_attr = 7
-        self.assertEqual(self.b.known_attr, 7)
-        for func in [self.f.a, self.fi.a]:
-            try:
-                func.known_attr = 7
-            except AttributeError:
-                pass
-            else:
-                self.fail("setting attributes on methods should raise error")
-
-    def test_delete_unknown_attr(self):
-        try:
-            del self.b.unknown_attr
-        except AttributeError:
-            pass
-        else:
-            self.fail("deleting unknown attribute should raise TypeError")
-
-    def test_setting_attrs_duplicates(self):
-        try:
-            self.f.a.klass = self.f
-        except AttributeError:
-            pass
-        else:
-            self.fail("setting arbitrary attribute in unbound function "
-                      " should raise AttributeError")
-        self.f.a.im_func.klass = self.f
-        for method in [self.f.a, self.fi.a, self.fi.a.im_func]:
-            self.assertEqual(method.klass, self.f)
-
-    def test_unset_attr(self):
-        for func in [self.b, self.f.a, self.fi.a]:
-            try:
-                func.non_existent_attr
-            except AttributeError:
-                pass
-            else:
-                self.fail("using unknown attributes should raise "
-                          "AttributeError")
-
-
-class FunctionDictsTest(FuncAttrsTest):
-    def test_setting_dict_to_invalid(self):
-        self.cannot_set_attr(self.b, '__dict__', None, TypeError)
-        self.cannot_set_attr(self.b, 'func_dict', None, TypeError)
-        from UserDict import UserDict
-        d = UserDict({'known_attr': 7})
-        self.cannot_set_attr(self.f.a.im_func, '__dict__', d, TypeError)
-        self.cannot_set_attr(self.fi.a.im_func, '__dict__', d, TypeError)
-
-    def test_setting_dict_to_valid(self):
-        d = {'known_attr': 7}
-        self.b.__dict__ = d
-        # Setting dict is only possible on the underlying function objects
-        self.f.a.im_func.__dict__ = d
-        # Test assignment
-        self.assertIs(d, self.b.__dict__)
-        self.assertIs(d, self.b.func_dict)
-        # ... and on all the different ways of referencing the method's func
-        self.assertIs(d, self.f.a.im_func.__dict__)
-        self.assertIs(d, self.f.a.__dict__)
-        self.assertIs(d, self.fi.a.im_func.__dict__)
-        self.assertIs(d, self.fi.a.__dict__)
-        # Test value
-        self.assertEqual(self.b.known_attr, 7)
-        self.assertEqual(self.b.__dict__['known_attr'], 7)
-        self.assertEqual(self.b.func_dict['known_attr'], 7)
-        # ... and again, on all the different method's names
-        self.assertEqual(self.f.a.im_func.known_attr, 7)
-        self.assertEqual(self.f.a.known_attr, 7)
-        self.assertEqual(self.fi.a.im_func.known_attr, 7)
-        self.assertEqual(self.fi.a.known_attr, 7)
-
-    def test_delete_func_dict(self):
-        try:
-            del self.b.__dict__
-        except TypeError:
-            pass
-        else:
-            self.fail("deleting function dictionary should raise TypeError")
-        try:
-            del self.b.func_dict
-        except TypeError:
-            pass
-        else:
-            self.fail("deleting function dictionary should raise TypeError")
-
-    def test_unassigned_dict(self):
-        self.assertEqual(self.b.__dict__, {})
-
-    def test_func_as_dict_key(self):
-        value = "Some string"
-        d = {}
-        d[self.b] = value
-        self.assertEqual(d[self.b], value)
-
-
-class FunctionDocstringTest(FuncAttrsTest):
-    def test_set_docstring_attr(self):
-        self.assertEqual(self.b.__doc__, None)
-        self.assertEqual(self.b.func_doc, None)
-        docstr = "A test method that does nothing"
-        self.b.__doc__ = self.f.a.im_func.__doc__ = docstr
-        self.assertEqual(self.b.__doc__, docstr)
-        self.assertEqual(self.b.func_doc, docstr)
-        self.assertEqual(self.f.a.__doc__, docstr)
-        self.assertEqual(self.fi.a.__doc__, docstr)
-        self.cannot_set_attr(self.f.a, "__doc__", docstr, AttributeError)
-        self.cannot_set_attr(self.fi.a, "__doc__", docstr, AttributeError)
-
-    def test_delete_docstring(self):
-        self.b.__doc__ = "The docstring"
-        del self.b.__doc__
-        self.assertEqual(self.b.__doc__, None)
-        self.assertEqual(self.b.func_doc, None)
-        self.b.func_doc = "The docstring"
-        del self.b.func_doc
-        self.assertEqual(self.b.__doc__, None)
-        self.assertEqual(self.b.func_doc, None)
-
-
-class StaticMethodAttrsTest(unittest.TestCase):
-    def test_func_attribute(self):
-        def f():
-            pass
-
-        c = classmethod(f)
-        self.assertTrue(c.__func__ is f)
-
-        s = staticmethod(f)
-        self.assertTrue(s.__func__ is f)
-
-
-def test_main():
-    test_support.run_unittest(FunctionPropertiesTest, InstancemethodAttrTest,
-                              ArbitraryFunctionAttrTest, FunctionDictsTest,
-                              FunctionDocstringTest,
-                              StaticMethodAttrsTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_functools.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_functools.py
deleted file mode 100644
index 8875940..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_functools.py
+++ /dev/null
@@ -1,478 +0,0 @@
-import functools
-import sys
-import unittest
-from test import test_support
-from weakref import proxy
-import pickle
-
-@staticmethod
-def PythonPartial(func, *args, **keywords):
-    'Pure Python approximation of partial()'
-    def newfunc(*fargs, **fkeywords):
-        newkeywords = keywords.copy()
-        newkeywords.update(fkeywords)
-        return func(*(args + fargs), **newkeywords)
-    newfunc.func = func
-    newfunc.args = args
-    newfunc.keywords = keywords
-    return newfunc
-
-def capture(*args, **kw):
-    """capture all positional and keyword arguments"""
-    return args, kw
-
-def signature(part):
-    """ return the signature of a partial object """
-    return (part.func, part.args, part.keywords, part.__dict__)
-
-class TestPartial(unittest.TestCase):
-
-    thetype = functools.partial
-
-    def test_basic_examples(self):
-        p = self.thetype(capture, 1, 2, a=10, b=20)
-        self.assertEqual(p(3, 4, b=30, c=40),
-                         ((1, 2, 3, 4), dict(a=10, b=30, c=40)))
-        p = self.thetype(map, lambda x: x*10)
-        self.assertEqual(p([1,2,3,4]), [10, 20, 30, 40])
-
-    def test_attributes(self):
-        p = self.thetype(capture, 1, 2, a=10, b=20)
-        # attributes should be readable
-        self.assertEqual(p.func, capture)
-        self.assertEqual(p.args, (1, 2))
-        self.assertEqual(p.keywords, dict(a=10, b=20))
-        # attributes should not be writable
-        if not isinstance(self.thetype, type):
-            return
-        self.assertRaises(TypeError, setattr, p, 'func', map)
-        self.assertRaises(TypeError, setattr, p, 'args', (1, 2))
-        self.assertRaises(TypeError, setattr, p, 'keywords', dict(a=1, b=2))
-
-        p = self.thetype(hex)
-        try:
-            del p.__dict__
-        except TypeError:
-            pass
-        else:
-            self.fail('partial object allowed __dict__ to be deleted')
-
-    def test_argument_checking(self):
-        self.assertRaises(TypeError, self.thetype)     # need at least a func arg
-        try:
-            self.thetype(2)()
-        except TypeError:
-            pass
-        else:
-            self.fail('First arg not checked for callability')
-
-    def test_protection_of_callers_dict_argument(self):
-        # a caller's dictionary should not be altered by partial
-        def func(a=10, b=20):
-            return a
-        d = {'a':3}
-        p = self.thetype(func, a=5)
-        self.assertEqual(p(**d), 3)
-        self.assertEqual(d, {'a':3})
-        p(b=7)
-        self.assertEqual(d, {'a':3})
-
-    def test_arg_combinations(self):
-        # exercise special code paths for zero args in either partial
-        # object or the caller
-        p = self.thetype(capture)
-        self.assertEqual(p(), ((), {}))
-        self.assertEqual(p(1,2), ((1,2), {}))
-        p = self.thetype(capture, 1, 2)
-        self.assertEqual(p(), ((1,2), {}))
-        self.assertEqual(p(3,4), ((1,2,3,4), {}))
-
-    def test_kw_combinations(self):
-        # exercise special code paths for no keyword args in
-        # either the partial object or the caller
-        p = self.thetype(capture)
-        self.assertEqual(p(), ((), {}))
-        self.assertEqual(p(a=1), ((), {'a':1}))
-        p = self.thetype(capture, a=1)
-        self.assertEqual(p(), ((), {'a':1}))
-        self.assertEqual(p(b=2), ((), {'a':1, 'b':2}))
-        # keyword args in the call override those in the partial object
-        self.assertEqual(p(a=3, b=2), ((), {'a':3, 'b':2}))
-
-    def test_positional(self):
-        # make sure positional arguments are captured correctly
-        for args in [(), (0,), (0,1), (0,1,2), (0,1,2,3)]:
-            p = self.thetype(capture, *args)
-            expected = args + ('x',)
-            got, empty = p('x')
-            self.assertTrue(expected == got and empty == {})
-
-    def test_keyword(self):
-        # make sure keyword arguments are captured correctly
-        for a in ['a', 0, None, 3.5]:
-            p = self.thetype(capture, a=a)
-            expected = {'a':a,'x':None}
-            empty, got = p(x=None)
-            self.assertTrue(expected == got and empty == ())
-
-    def test_no_side_effects(self):
-        # make sure there are no side effects that affect subsequent calls
-        p = self.thetype(capture, 0, a=1)
-        args1, kw1 = p(1, b=2)
-        self.assertTrue(args1 == (0,1) and kw1 == {'a':1,'b':2})
-        args2, kw2 = p()
-        self.assertTrue(args2 == (0,) and kw2 == {'a':1})
-
-    def test_error_propagation(self):
-        def f(x, y):
-            x // y
-        self.assertRaises(ZeroDivisionError, self.thetype(f, 1, 0))
-        self.assertRaises(ZeroDivisionError, self.thetype(f, 1), 0)
-        self.assertRaises(ZeroDivisionError, self.thetype(f), 1, 0)
-        self.assertRaises(ZeroDivisionError, self.thetype(f, y=0), 1)
-
-    def test_weakref(self):
-        f = self.thetype(int, base=16)
-        p = proxy(f)
-        self.assertEqual(f.func, p.func)
-        f = None
-        self.assertRaises(ReferenceError, getattr, p, 'func')
-
-    def test_with_bound_and_unbound_methods(self):
-        data = map(str, range(10))
-        join = self.thetype(str.join, '')
-        self.assertEqual(join(data), '0123456789')
-        join = self.thetype(''.join)
-        self.assertEqual(join(data), '0123456789')
-
-    def test_pickle(self):
-        f = self.thetype(signature, 'asdf', bar=True)
-        f.add_something_to__dict__ = True
-        f_copy = pickle.loads(pickle.dumps(f))
-        self.assertEqual(signature(f), signature(f_copy))
-
-class PartialSubclass(functools.partial):
-    pass
-
-class TestPartialSubclass(TestPartial):
-
-    thetype = PartialSubclass
-
-class TestPythonPartial(TestPartial):
-
-    thetype = PythonPartial
-
-    # the python version isn't picklable
-    def test_pickle(self): pass
-
-class TestUpdateWrapper(unittest.TestCase):
-
-    def check_wrapper(self, wrapper, wrapped,
-                      assigned=functools.WRAPPER_ASSIGNMENTS,
-                      updated=functools.WRAPPER_UPDATES):
-        # Check attributes were assigned
-        for name in assigned:
-            self.assertTrue(getattr(wrapper, name) is getattr(wrapped, name))
-        # Check attributes were updated
-        for name in updated:
-            wrapper_attr = getattr(wrapper, name)
-            wrapped_attr = getattr(wrapped, name)
-            for key in wrapped_attr:
-                self.assertTrue(wrapped_attr[key] is wrapper_attr[key])
-
-    def _default_update(self):
-        def f():
-            """This is a test"""
-            pass
-        f.attr = 'This is also a test'
-        def wrapper():
-            pass
-        functools.update_wrapper(wrapper, f)
-        return wrapper, f
-
-    def test_default_update(self):
-        wrapper, f = self._default_update()
-        self.check_wrapper(wrapper, f)
-        self.assertEqual(wrapper.__name__, 'f')
-        self.assertEqual(wrapper.attr, 'This is also a test')
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_default_update_doc(self):
-        wrapper, f = self._default_update()
-        self.assertEqual(wrapper.__doc__, 'This is a test')
-
-    def test_no_update(self):
-        def f():
-            """This is a test"""
-            pass
-        f.attr = 'This is also a test'
-        def wrapper():
-            pass
-        functools.update_wrapper(wrapper, f, (), ())
-        self.check_wrapper(wrapper, f, (), ())
-        self.assertEqual(wrapper.__name__, 'wrapper')
-        self.assertEqual(wrapper.__doc__, None)
-        self.assertFalse(hasattr(wrapper, 'attr'))
-
-    def test_selective_update(self):
-        def f():
-            pass
-        f.attr = 'This is a different test'
-        f.dict_attr = dict(a=1, b=2, c=3)
-        def wrapper():
-            pass
-        wrapper.dict_attr = {}
-        assign = ('attr',)
-        update = ('dict_attr',)
-        functools.update_wrapper(wrapper, f, assign, update)
-        self.check_wrapper(wrapper, f, assign, update)
-        self.assertEqual(wrapper.__name__, 'wrapper')
-        self.assertEqual(wrapper.__doc__, None)
-        self.assertEqual(wrapper.attr, 'This is a different test')
-        self.assertEqual(wrapper.dict_attr, f.dict_attr)
-
-    def test_builtin_update(self):
-        # Test for bug #1576241
-        def wrapper():
-            pass
-        functools.update_wrapper(wrapper, max)
-        self.assertEqual(wrapper.__name__, 'max')
-        self.assertTrue(wrapper.__doc__.startswith('max('))
-
-class TestWraps(TestUpdateWrapper):
-
-    def _default_update(self):
-        def f():
-            """This is a test"""
-            pass
-        f.attr = 'This is also a test'
-        @functools.wraps(f)
-        def wrapper():
-            pass
-        self.check_wrapper(wrapper, f)
-        return wrapper
-
-    def test_default_update(self):
-        wrapper = self._default_update()
-        self.assertEqual(wrapper.__name__, 'f')
-        self.assertEqual(wrapper.attr, 'This is also a test')
-
-    @unittest.skipIf(not sys.flags.optimize <= 1,
-                     "Docstrings are omitted with -O2 and above")
-    def test_default_update_doc(self):
-        wrapper = self._default_update()
-        self.assertEqual(wrapper.__doc__, 'This is a test')
-
-    def test_no_update(self):
-        def f():
-            """This is a test"""
-            pass
-        f.attr = 'This is also a test'
-        @functools.wraps(f, (), ())
-        def wrapper():
-            pass
-        self.check_wrapper(wrapper, f, (), ())
-        self.assertEqual(wrapper.__name__, 'wrapper')
-        self.assertEqual(wrapper.__doc__, None)
-        self.assertFalse(hasattr(wrapper, 'attr'))
-
-    def test_selective_update(self):
-        def f():
-            pass
-        f.attr = 'This is a different test'
-        f.dict_attr = dict(a=1, b=2, c=3)
-        def add_dict_attr(f):
-            f.dict_attr = {}
-            return f
-        assign = ('attr',)
-        update = ('dict_attr',)
-        @functools.wraps(f, assign, update)
-        @add_dict_attr
-        def wrapper():
-            pass
-        self.check_wrapper(wrapper, f, assign, update)
-        self.assertEqual(wrapper.__name__, 'wrapper')
-        self.assertEqual(wrapper.__doc__, None)
-        self.assertEqual(wrapper.attr, 'This is a different test')
-        self.assertEqual(wrapper.dict_attr, f.dict_attr)
-
-
-class TestReduce(unittest.TestCase):
-
-    def test_reduce(self):
-        class Squares:
-
-            def __init__(self, max):
-                self.max = max
-                self.sofar = []
-
-            def __len__(self): return len(self.sofar)
-
-            def __getitem__(self, i):
-                if not 0 <= i < self.max: raise IndexError
-                n = len(self.sofar)
-                while n <= i:
-                    self.sofar.append(n*n)
-                    n += 1
-                return self.sofar[i]
-
-        reduce = functools.reduce
-        self.assertEqual(reduce(lambda x, y: x+y, ['a', 'b', 'c'], ''), 'abc')
-        self.assertEqual(
-            reduce(lambda x, y: x+y, [['a', 'c'], [], ['d', 'w']], []),
-            ['a','c','d','w']
-        )
-        self.assertEqual(reduce(lambda x, y: x*y, range(2,8), 1), 5040)
-        self.assertEqual(
-            reduce(lambda x, y: x*y, range(2,21), 1L),
-            2432902008176640000L
-        )
-        self.assertEqual(reduce(lambda x, y: x+y, Squares(10)), 285)
-        self.assertEqual(reduce(lambda x, y: x+y, Squares(10), 0), 285)
-        self.assertEqual(reduce(lambda x, y: x+y, Squares(0), 0), 0)
-        self.assertRaises(TypeError, reduce)
-        self.assertRaises(TypeError, reduce, 42, 42)
-        self.assertRaises(TypeError, reduce, 42, 42, 42)
-        self.assertEqual(reduce(42, "1"), "1") # func is never called with one item
-        self.assertEqual(reduce(42, "", "1"), "1") # func is never called with one item
-        self.assertRaises(TypeError, reduce, 42, (42, 42))
-
-class TestCmpToKey(unittest.TestCase):
-    def test_cmp_to_key(self):
-        def mycmp(x, y):
-            return y - x
-        self.assertEqual(sorted(range(5), key=functools.cmp_to_key(mycmp)),
-                         [4, 3, 2, 1, 0])
-
-    def test_hash(self):
-        def mycmp(x, y):
-            return y - x
-        key = functools.cmp_to_key(mycmp)
-        k = key(10)
-        self.assertRaises(TypeError, hash(k))
-
-class TestTotalOrdering(unittest.TestCase):
-
-    def test_total_ordering_lt(self):
-        @functools.total_ordering
-        class A:
-            def __init__(self, value):
-                self.value = value
-            def __lt__(self, other):
-                return self.value < other.value
-            def __eq__(self, other):
-                return self.value == other.value
-        self.assertTrue(A(1) < A(2))
-        self.assertTrue(A(2) > A(1))
-        self.assertTrue(A(1) <= A(2))
-        self.assertTrue(A(2) >= A(1))
-        self.assertTrue(A(2) <= A(2))
-        self.assertTrue(A(2) >= A(2))
-
-    def test_total_ordering_le(self):
-        @functools.total_ordering
-        class A:
-            def __init__(self, value):
-                self.value = value
-            def __le__(self, other):
-                return self.value <= other.value
-            def __eq__(self, other):
-                return self.value == other.value
-        self.assertTrue(A(1) < A(2))
-        self.assertTrue(A(2) > A(1))
-        self.assertTrue(A(1) <= A(2))
-        self.assertTrue(A(2) >= A(1))
-        self.assertTrue(A(2) <= A(2))
-        self.assertTrue(A(2) >= A(2))
-
-    def test_total_ordering_gt(self):
-        @functools.total_ordering
-        class A:
-            def __init__(self, value):
-                self.value = value
-            def __gt__(self, other):
-                return self.value > other.value
-            def __eq__(self, other):
-                return self.value == other.value
-        self.assertTrue(A(1) < A(2))
-        self.assertTrue(A(2) > A(1))
-        self.assertTrue(A(1) <= A(2))
-        self.assertTrue(A(2) >= A(1))
-        self.assertTrue(A(2) <= A(2))
-        self.assertTrue(A(2) >= A(2))
-
-    def test_total_ordering_ge(self):
-        @functools.total_ordering
-        class A:
-            def __init__(self, value):
-                self.value = value
-            def __ge__(self, other):
-                return self.value >= other.value
-            def __eq__(self, other):
-                return self.value == other.value
-        self.assertTrue(A(1) < A(2))
-        self.assertTrue(A(2) > A(1))
-        self.assertTrue(A(1) <= A(2))
-        self.assertTrue(A(2) >= A(1))
-        self.assertTrue(A(2) <= A(2))
-        self.assertTrue(A(2) >= A(2))
-
-    def test_total_ordering_no_overwrite(self):
-        # new methods should not overwrite existing
-        @functools.total_ordering
-        class A(str):
-            pass
-        self.assertTrue(A("a") < A("b"))
-        self.assertTrue(A("b") > A("a"))
-        self.assertTrue(A("a") <= A("b"))
-        self.assertTrue(A("b") >= A("a"))
-        self.assertTrue(A("b") <= A("b"))
-        self.assertTrue(A("b") >= A("b"))
-
-    def test_no_operations_defined(self):
-        with self.assertRaises(ValueError):
-            @functools.total_ordering
-            class A:
-                pass
-
-    def test_bug_10042(self):
-        @functools.total_ordering
-        class TestTO:
-            def __init__(self, value):
-                self.value = value
-            def __eq__(self, other):
-                if isinstance(other, TestTO):
-                    return self.value == other.value
-                return False
-            def __lt__(self, other):
-                if isinstance(other, TestTO):
-                    return self.value < other.value
-                raise TypeError
-        with self.assertRaises(TypeError):
-            TestTO(8) <= ()
-
-def test_main(verbose=None):
-    test_classes = (
-        TestPartial,
-        TestPartialSubclass,
-        TestPythonPartial,
-        TestUpdateWrapper,
-        TestTotalOrdering,
-        TestWraps,
-        TestReduce,
-    )
-    test_support.run_unittest(*test_classes)
-
-    # verify reference counting
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        import gc
-        counts = [None] * 5
-        for i in xrange(len(counts)):
-            test_support.run_unittest(*test_classes)
-            gc.collect()
-            counts[i] = sys.gettotalrefcount()
-        print counts
-
-if __name__ == '__main__':
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future.py
deleted file mode 100644
index 3e9df04..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# Test various flavors of legal and illegal future statements
-
-import unittest
-from test import test_support
-import re
-
-rx = re.compile('\((\S+).py, line (\d+)')
-
-def get_error_location(msg):
-    mo = rx.search(str(msg))
-    return mo.group(1, 2)
-
-class FutureTest(unittest.TestCase):
-
-    def test_future1(self):
-        test_support.unload('test_future1')
-        from test import test_future1
-        self.assertEqual(test_future1.result, 6)
-
-    def test_future2(self):
-        test_support.unload('test_future2')
-        from test import test_future2
-        self.assertEqual(test_future2.result, 6)
-
-    def test_future3(self):
-        test_support.unload('test_future3')
-        from test import test_future3
-
-    def test_badfuture3(self):
-        try:
-            from test import badsyntax_future3
-        except SyntaxError, msg:
-            self.assertEqual(get_error_location(msg), ("badsyntax_future3", '3'))
-        else:
-            self.fail("expected exception didn't occur")
-
-    def test_badfuture4(self):
-        try:
-            from test import badsyntax_future4
-        except SyntaxError, msg:
-            self.assertEqual(get_error_location(msg), ("badsyntax_future4", '3'))
-        else:
-            self.fail("expected exception didn't occur")
-
-    def test_badfuture5(self):
-        try:
-            from test import badsyntax_future5
-        except SyntaxError, msg:
-            self.assertEqual(get_error_location(msg), ("badsyntax_future5", '4'))
-        else:
-            self.fail("expected exception didn't occur")
-
-    def test_badfuture6(self):
-        try:
-            from test import badsyntax_future6
-        except SyntaxError, msg:
-            self.assertEqual(get_error_location(msg), ("badsyntax_future6", '3'))
-        else:
-            self.fail("expected exception didn't occur")
-
-    def test_badfuture7(self):
-        try:
-            from test import badsyntax_future7
-        except SyntaxError, msg:
-            self.assertEqual(get_error_location(msg), ("badsyntax_future7", '3'))
-        else:
-            self.fail("expected exception didn't occur")
-
-    def test_badfuture8(self):
-        try:
-            from test import badsyntax_future8
-        except SyntaxError, msg:
-            self.assertEqual(get_error_location(msg), ("badsyntax_future8", '3'))
-        else:
-            self.fail("expected exception didn't occur")
-
-    def test_badfuture9(self):
-        try:
-            from test import badsyntax_future9
-        except SyntaxError, msg:
-            self.assertEqual(get_error_location(msg), ("badsyntax_future9", '3'))
-        else:
-            self.fail("expected exception didn't occur")
-
-    def test_parserhack(self):
-        # test that the parser.c::future_hack function works as expected
-        # Note: although this test must pass, it's not testing the original
-        #       bug as of 2.6 since the with statement is not optional and
-        #       the parser hack disabled. If a new keyword is introduced in
-        #       2.6, change this to refer to the new future import.
-        try:
-            exec "from __future__ import print_function; print 0"
-        except SyntaxError:
-            pass
-        else:
-            self.fail("syntax error didn't occur")
-
-        try:
-            exec "from __future__ import (print_function); print 0"
-        except SyntaxError:
-            pass
-        else:
-            self.fail("syntax error didn't occur")
-
-    def test_multiple_features(self):
-        test_support.unload("test.test_future5")
-        from test import test_future5
-
-    def test_unicode_literals_exec(self):
-        scope = {}
-        exec "from __future__ import unicode_literals; x = ''" in scope
-        self.assertIsInstance(scope["x"], unicode)
-
-
-def test_main():
-    test_support.run_unittest(FutureTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future1.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future1.py
deleted file mode 100644
index fb3cf81..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future1.py
+++ /dev/null
@@ -1,11 +0,0 @@
-"""This is a test"""
-
-# Import the name nested_scopes twice to trigger SF bug #407394 (regression).
-from __future__ import nested_scopes, nested_scopes
-
-def f(x):
-    def g(y):
-        return x + y
-    return g
-
-result = f(2)(4)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future2.py
deleted file mode 100644
index f4df243..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future2.py
+++ /dev/null
@@ -1,10 +0,0 @@
-"""This is a test"""
-
-from __future__ import nested_scopes; import string
-
-def f(x):
-    def g(y):
-        return x + y
-    return g
-
-result = f(2)(4)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future3.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future3.py
deleted file mode 100644
index 1baf975..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future3.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from __future__ import nested_scopes
-from __future__ import division
-
-import unittest
-from test import test_support
-
-x = 2
-def nester():
-    x = 3
-    def inner():
-        return x
-    return inner()
-
-
-class TestFuture(unittest.TestCase):
-
-    def test_floor_div_operator(self):
-        self.assertEqual(7 // 2, 3)
-
-    def test_true_div_as_default(self):
-        self.assertAlmostEqual(7 / 2, 3.5)
-
-    def test_nested_scopes(self):
-        self.assertEqual(nester(), 3)
-
-def test_main():
-    test_support.run_unittest(TestFuture)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future4.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future4.py
deleted file mode 100644
index acabb88..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future4.py
+++ /dev/null
@@ -1,47 +0,0 @@
-from __future__ import unicode_literals
-
-import unittest
-from test import test_support
-
-class TestFuture(unittest.TestCase):
-    def assertType(self, obj, typ):
-        self.assertTrue(type(obj) is typ,
-            "type(%r) is %r, not %r" % (obj, type(obj), typ))
-
-    def test_unicode_strings(self):
-        self.assertType("", unicode)
-        self.assertType('', unicode)
-        self.assertType(r"", unicode)
-        self.assertType(r'', unicode)
-        self.assertType(""" """, unicode)
-        self.assertType(''' ''', unicode)
-        self.assertType(r""" """, unicode)
-        self.assertType(r''' ''', unicode)
-        self.assertType(u"", unicode)
-        self.assertType(u'', unicode)
-        self.assertType(ur"", unicode)
-        self.assertType(ur'', unicode)
-        self.assertType(u""" """, unicode)
-        self.assertType(u''' ''', unicode)
-        self.assertType(ur""" """, unicode)
-        self.assertType(ur''' ''', unicode)
-
-        self.assertType(b"", str)
-        self.assertType(b'', str)
-        self.assertType(br"", str)
-        self.assertType(br'', str)
-        self.assertType(b""" """, str)
-        self.assertType(b''' ''', str)
-        self.assertType(br""" """, str)
-        self.assertType(br''' ''', str)
-
-        self.assertType('' '', unicode)
-        self.assertType('' u'', unicode)
-        self.assertType(u'' '', unicode)
-        self.assertType(u'' u'', unicode)
-
-def test_main():
-    test_support.run_unittest(TestFuture)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future5.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future5.py
deleted file mode 100644
index 2154a90..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future5.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Check that multiple features can be enabled.
-from __future__ import unicode_literals, print_function
-
-import sys
-import unittest
-from . import test_support
-
-
-class TestMultipleFeatures(unittest.TestCase):
-
-    def test_unicode_literals(self):
-        self.assertIsInstance("", unicode)
-
-    def test_print_function(self):
-        with test_support.captured_output("stderr") as s:
-            print("foo", file=sys.stderr)
-        self.assertEqual(s.getvalue(), "foo\n")
-
-
-def test_main():
-    test_support.run_unittest(TestMultipleFeatures)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future_builtins.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future_builtins.py
deleted file mode 100644
index 581260c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_future_builtins.py
+++ /dev/null
@@ -1,38 +0,0 @@
-import test.test_support, unittest
-
-# we're testing the behavior of these future builtins:
-from future_builtins import hex, oct, map, zip, filter
-
-class BuiltinTest(unittest.TestCase):
-    def test_hex(self):
-        self.assertEqual(hex(0), '0x0')
-        self.assertEqual(hex(16), '0x10')
-        self.assertEqual(hex(16L), '0x10')
-        self.assertEqual(hex(-16), '-0x10')
-        self.assertEqual(hex(-16L), '-0x10')
-        self.assertRaises(TypeError, hex, {})
-
-    def test_oct(self):
-        self.assertEqual(oct(0), '0o0')
-        self.assertEqual(oct(100), '0o144')
-        self.assertEqual(oct(100L), '0o144')
-        self.assertEqual(oct(-100), '-0o144')
-        self.assertEqual(oct(-100L), '-0o144')
-        self.assertRaises(TypeError, oct, ())
-
-    def test_itertools(self):
-        from itertools import imap, izip, ifilter
-        # We will assume that the itertools functions work, so provided
-        # that we've got identical coppies, we will work!
-        self.assertEqual(map, imap)
-        self.assertEqual(zip, izip)
-        self.assertEqual(filter, ifilter)
-        # Testing that filter(None, stuff) raises a warning lives in
-        # test_py3kwarn.py
-
-
-def test_main(verbose=None):
-    test.test_support.run_unittest(BuiltinTest)
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gc.py
deleted file mode 100644
index 4f5d61e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gc.py
+++ /dev/null
@@ -1,639 +0,0 @@
-import unittest
-from test.test_support import verbose, run_unittest
-import sys
-import gc
-import weakref
-
-### Support code
-###############################################################################
-
-# Bug 1055820 has several tests of longstanding bugs involving weakrefs and
-# cyclic gc.
-
-# An instance of C1055820 has a self-loop, so becomes cyclic trash when
-# unreachable.
-class C1055820(object):
-    def __init__(self, i):
-        self.i = i
-        self.loop = self
-
-class GC_Detector(object):
-    # Create an instance I.  Then gc hasn't happened again so long as
-    # I.gc_happened is false.
-
-    def __init__(self):
-        self.gc_happened = False
-
-        def it_happened(ignored):
-            self.gc_happened = True
-
-        # Create a piece of cyclic trash that triggers it_happened when
-        # gc collects it.
-        self.wr = weakref.ref(C1055820(666), it_happened)
-
-
-### Tests
-###############################################################################
-
-class GCTests(unittest.TestCase):
-    def test_list(self):
-        l = []
-        l.append(l)
-        gc.collect()
-        del l
-        self.assertEqual(gc.collect(), 1)
-
-    def test_dict(self):
-        d = {}
-        d[1] = d
-        gc.collect()
-        del d
-        self.assertEqual(gc.collect(), 1)
-
-    def test_tuple(self):
-        # since tuples are immutable we close the loop with a list
-        l = []
-        t = (l,)
-        l.append(t)
-        gc.collect()
-        del t
-        del l
-        self.assertEqual(gc.collect(), 2)
-
-    def test_class(self):
-        class A:
-            pass
-        A.a = A
-        gc.collect()
-        del A
-        self.assertNotEqual(gc.collect(), 0)
-
-    def test_newstyleclass(self):
-        class A(object):
-            pass
-        gc.collect()
-        del A
-        self.assertNotEqual(gc.collect(), 0)
-
-    def test_instance(self):
-        class A:
-            pass
-        a = A()
-        a.a = a
-        gc.collect()
-        del a
-        self.assertNotEqual(gc.collect(), 0)
-
-    def test_newinstance(self):
-        class A(object):
-            pass
-        a = A()
-        a.a = a
-        gc.collect()
-        del a
-        self.assertNotEqual(gc.collect(), 0)
-        class B(list):
-            pass
-        class C(B, A):
-            pass
-        a = C()
-        a.a = a
-        gc.collect()
-        del a
-        self.assertNotEqual(gc.collect(), 0)
-        del B, C
-        self.assertNotEqual(gc.collect(), 0)
-        A.a = A()
-        del A
-        self.assertNotEqual(gc.collect(), 0)
-        self.assertEqual(gc.collect(), 0)
-
-    def test_method(self):
-        # Tricky: self.__init__ is a bound method, it references the instance.
-        class A:
-            def __init__(self):
-                self.init = self.__init__
-        a = A()
-        gc.collect()
-        del a
-        self.assertNotEqual(gc.collect(), 0)
-
-    def test_finalizer(self):
-        # A() is uncollectable if it is part of a cycle, make sure it shows up
-        # in gc.garbage.
-        class A:
-            def __del__(self): pass
-        class B:
-            pass
-        a = A()
-        a.a = a
-        id_a = id(a)
-        b = B()
-        b.b = b
-        gc.collect()
-        del a
-        del b
-        self.assertNotEqual(gc.collect(), 0)
-        for obj in gc.garbage:
-            if id(obj) == id_a:
-                del obj.a
-                break
-        else:
-            self.fail("didn't find obj in garbage (finalizer)")
-        gc.garbage.remove(obj)
-
-    def test_finalizer_newclass(self):
-        # A() is uncollectable if it is part of a cycle, make sure it shows up
-        # in gc.garbage.
-        class A(object):
-            def __del__(self): pass
-        class B(object):
-            pass
-        a = A()
-        a.a = a
-        id_a = id(a)
-        b = B()
-        b.b = b
-        gc.collect()
-        del a
-        del b
-        self.assertNotEqual(gc.collect(), 0)
-        for obj in gc.garbage:
-            if id(obj) == id_a:
-                del obj.a
-                break
-        else:
-            self.fail("didn't find obj in garbage (finalizer)")
-        gc.garbage.remove(obj)
-
-    def test_function(self):
-        # Tricky: f -> d -> f, code should call d.clear() after the exec to
-        # break the cycle.
-        d = {}
-        exec("def f(): pass\n") in d
-        gc.collect()
-        del d
-        self.assertEqual(gc.collect(), 2)
-
-    def test_frame(self):
-        def f():
-            frame = sys._getframe()
-        gc.collect()
-        f()
-        self.assertEqual(gc.collect(), 1)
-
-    def test_saveall(self):
-        # Verify that cyclic garbage like lists show up in gc.garbage if the
-        # SAVEALL option is enabled.
-
-        # First make sure we don't save away other stuff that just happens to
-        # be waiting for collection.
-        gc.collect()
-        # if this fails, someone else created immortal trash
-        self.assertEqual(gc.garbage, [])
-
-        L = []
-        L.append(L)
-        id_L = id(L)
-
-        debug = gc.get_debug()
-        gc.set_debug(debug | gc.DEBUG_SAVEALL)
-        del L
-        gc.collect()
-        gc.set_debug(debug)
-
-        self.assertEqual(len(gc.garbage), 1)
-        obj = gc.garbage.pop()
-        self.assertEqual(id(obj), id_L)
-
-    def test_del(self):
-        # __del__ methods can trigger collection, make this to happen
-        thresholds = gc.get_threshold()
-        gc.enable()
-        gc.set_threshold(1)
-
-        class A:
-            def __del__(self):
-                dir(self)
-        a = A()
-        del a
-
-        gc.disable()
-        gc.set_threshold(*thresholds)
-
-    def test_del_newclass(self):
-        # __del__ methods can trigger collection, make this to happen
-        thresholds = gc.get_threshold()
-        gc.enable()
-        gc.set_threshold(1)
-
-        class A(object):
-            def __del__(self):
-                dir(self)
-        a = A()
-        del a
-
-        gc.disable()
-        gc.set_threshold(*thresholds)
-
-    # The following two tests are fragile:
-    # They precisely count the number of allocations,
-    # which is highly implementation-dependent.
-    # For example:
-    # - disposed tuples are not freed, but reused
-    # - the call to assertEqual somehow avoids building its args tuple
-    def test_get_count(self):
-        # Avoid future allocation of method object
-        assertEqual = self._baseAssertEqual
-        gc.collect()
-        assertEqual(gc.get_count(), (0, 0, 0))
-        a = dict()
-        # since gc.collect(), we created two objects:
-        # the dict, and the tuple returned by get_count()
-        assertEqual(gc.get_count(), (2, 0, 0))
-
-    def test_collect_generations(self):
-        # Avoid future allocation of method object
-        assertEqual = self.assertEqual
-        gc.collect()
-        a = dict()
-        gc.collect(0)
-        assertEqual(gc.get_count(), (0, 1, 0))
-        gc.collect(1)
-        assertEqual(gc.get_count(), (0, 0, 1))
-        gc.collect(2)
-        assertEqual(gc.get_count(), (0, 0, 0))
-
-    def test_trashcan(self):
-        class Ouch:
-            n = 0
-            def __del__(self):
-                Ouch.n = Ouch.n + 1
-                if Ouch.n % 17 == 0:
-                    gc.collect()
-
-        # "trashcan" is a hack to prevent stack overflow when deallocating
-        # very deeply nested tuples etc.  It works in part by abusing the
-        # type pointer and refcount fields, and that can yield horrible
-        # problems when gc tries to traverse the structures.
-        # If this test fails (as it does in 2.0, 2.1 and 2.2), it will
-        # most likely die via segfault.
-
-        # Note:  In 2.3 the possibility for compiling without cyclic gc was
-        # removed, and that in turn allows the trashcan mechanism to work
-        # via much simpler means (e.g., it never abuses the type pointer or
-        # refcount fields anymore).  Since it's much less likely to cause a
-        # problem now, the various constants in this expensive (we force a lot
-        # of full collections) test are cut back from the 2.2 version.
-        gc.enable()
-        N = 150
-        for count in range(2):
-            t = []
-            for i in range(N):
-                t = [t, Ouch()]
-            u = []
-            for i in range(N):
-                u = [u, Ouch()]
-            v = {}
-            for i in range(N):
-                v = {1: v, 2: Ouch()}
-        gc.disable()
-
-    def test_boom(self):
-        class Boom:
-            def __getattr__(self, someattribute):
-                del self.attr
-                raise AttributeError
-
-        a = Boom()
-        b = Boom()
-        a.attr = b
-        b.attr = a
-
-        gc.collect()
-        garbagelen = len(gc.garbage)
-        del a, b
-        # a<->b are in a trash cycle now.  Collection will invoke
-        # Boom.__getattr__ (to see whether a and b have __del__ methods), and
-        # __getattr__ deletes the internal "attr" attributes as a side effect.
-        # That causes the trash cycle to get reclaimed via refcounts falling to
-        # 0, thus mutating the trash graph as a side effect of merely asking
-        # whether __del__ exists.  This used to (before 2.3b1) crash Python.
-        # Now __getattr__ isn't called.
-        self.assertEqual(gc.collect(), 4)
-        self.assertEqual(len(gc.garbage), garbagelen)
-
-    def test_boom2(self):
-        class Boom2:
-            def __init__(self):
-                self.x = 0
-
-            def __getattr__(self, someattribute):
-                self.x += 1
-                if self.x > 1:
-                    del self.attr
-                raise AttributeError
-
-        a = Boom2()
-        b = Boom2()
-        a.attr = b
-        b.attr = a
-
-        gc.collect()
-        garbagelen = len(gc.garbage)
-        del a, b
-        # Much like test_boom(), except that __getattr__ doesn't break the
-        # cycle until the second time gc checks for __del__.  As of 2.3b1,
-        # there isn't a second time, so this simply cleans up the trash cycle.
-        # We expect a, b, a.__dict__ and b.__dict__ (4 objects) to get
-        # reclaimed this way.
-        self.assertEqual(gc.collect(), 4)
-        self.assertEqual(len(gc.garbage), garbagelen)
-
-    def test_boom_new(self):
-        # boom__new and boom2_new are exactly like boom and boom2, except use
-        # new-style classes.
-
-        class Boom_New(object):
-            def __getattr__(self, someattribute):
-                del self.attr
-                raise AttributeError
-
-        a = Boom_New()
-        b = Boom_New()
-        a.attr = b
-        b.attr = a
-
-        gc.collect()
-        garbagelen = len(gc.garbage)
-        del a, b
-        self.assertEqual(gc.collect(), 4)
-        self.assertEqual(len(gc.garbage), garbagelen)
-
-    def test_boom2_new(self):
-        class Boom2_New(object):
-            def __init__(self):
-                self.x = 0
-
-            def __getattr__(self, someattribute):
-                self.x += 1
-                if self.x > 1:
-                    del self.attr
-                raise AttributeError
-
-        a = Boom2_New()
-        b = Boom2_New()
-        a.attr = b
-        b.attr = a
-
-        gc.collect()
-        garbagelen = len(gc.garbage)
-        del a, b
-        self.assertEqual(gc.collect(), 4)
-        self.assertEqual(len(gc.garbage), garbagelen)
-
-    def test_get_referents(self):
-        alist = [1, 3, 5]
-        got = gc.get_referents(alist)
-        got.sort()
-        self.assertEqual(got, alist)
-
-        atuple = tuple(alist)
-        got = gc.get_referents(atuple)
-        got.sort()
-        self.assertEqual(got, alist)
-
-        adict = {1: 3, 5: 7}
-        expected = [1, 3, 5, 7]
-        got = gc.get_referents(adict)
-        got.sort()
-        self.assertEqual(got, expected)
-
-        got = gc.get_referents([1, 2], {3: 4}, (0, 0, 0))
-        got.sort()
-        self.assertEqual(got, [0, 0] + range(5))
-
-        self.assertEqual(gc.get_referents(1, 'a', 4j), [])
-
-    def test_is_tracked(self):
-        # Atomic built-in types are not tracked, user-defined objects and
-        # mutable containers are.
-        # NOTE: types with special optimizations (e.g. tuple) have tests
-        # in their own test files instead.
-        self.assertFalse(gc.is_tracked(None))
-        self.assertFalse(gc.is_tracked(1))
-        self.assertFalse(gc.is_tracked(1.0))
-        self.assertFalse(gc.is_tracked(1.0 + 5.0j))
-        self.assertFalse(gc.is_tracked(True))
-        self.assertFalse(gc.is_tracked(False))
-        self.assertFalse(gc.is_tracked("a"))
-        self.assertFalse(gc.is_tracked(u"a"))
-        self.assertFalse(gc.is_tracked(bytearray("a")))
-        self.assertFalse(gc.is_tracked(type))
-        self.assertFalse(gc.is_tracked(int))
-        self.assertFalse(gc.is_tracked(object))
-        self.assertFalse(gc.is_tracked(object()))
-
-        class OldStyle:
-            pass
-        class NewStyle(object):
-            pass
-        self.assertTrue(gc.is_tracked(gc))
-        self.assertTrue(gc.is_tracked(OldStyle))
-        self.assertTrue(gc.is_tracked(OldStyle()))
-        self.assertTrue(gc.is_tracked(NewStyle))
-        self.assertTrue(gc.is_tracked(NewStyle()))
-        self.assertTrue(gc.is_tracked([]))
-        self.assertTrue(gc.is_tracked(set()))
-
-    def test_bug1055820b(self):
-        # Corresponds to temp2b.py in the bug report.
-
-        ouch = []
-        def callback(ignored):
-            ouch[:] = [wr() for wr in WRs]
-
-        Cs = [C1055820(i) for i in range(2)]
-        WRs = [weakref.ref(c, callback) for c in Cs]
-        c = None
-
-        gc.collect()
-        self.assertEqual(len(ouch), 0)
-        # Make the two instances trash, and collect again.  The bug was that
-        # the callback materialized a strong reference to an instance, but gc
-        # cleared the instance's dict anyway.
-        Cs = None
-        gc.collect()
-        self.assertEqual(len(ouch), 2)  # else the callbacks didn't run
-        for x in ouch:
-            # If the callback resurrected one of these guys, the instance
-            # would be damaged, with an empty __dict__.
-            self.assertEqual(x, None)
-
-class GCTogglingTests(unittest.TestCase):
-    def setUp(self):
-        gc.enable()
-
-    def tearDown(self):
-        gc.disable()
-
-    def test_bug1055820c(self):
-        # Corresponds to temp2c.py in the bug report.  This is pretty
-        # elaborate.
-
-        c0 = C1055820(0)
-        # Move c0 into generation 2.
-        gc.collect()
-
-        c1 = C1055820(1)
-        c1.keep_c0_alive = c0
-        del c0.loop # now only c1 keeps c0 alive
-
-        c2 = C1055820(2)
-        c2wr = weakref.ref(c2) # no callback!
-
-        ouch = []
-        def callback(ignored):
-            ouch[:] = [c2wr()]
-
-        # The callback gets associated with a wr on an object in generation 2.
-        c0wr = weakref.ref(c0, callback)
-
-        c0 = c1 = c2 = None
-
-        # What we've set up:  c0, c1, and c2 are all trash now.  c0 is in
-        # generation 2.  The only thing keeping it alive is that c1 points to
-        # it. c1 and c2 are in generation 0, and are in self-loops.  There's a
-        # global weakref to c2 (c2wr), but that weakref has no callback.
-        # There's also a global weakref to c0 (c0wr), and that does have a
-        # callback, and that callback references c2 via c2wr().
-        #
-        #               c0 has a wr with callback, which references c2wr
-        #               ^
-        #               |
-        #               |     Generation 2 above dots
-        #. . . . . . . .|. . . . . . . . . . . . . . . . . . . . . . . .
-        #               |     Generation 0 below dots
-        #               |
-        #               |
-        #            ^->c1   ^->c2 has a wr but no callback
-        #            |  |    |  |
-        #            <--v    <--v
-        #
-        # So this is the nightmare:  when generation 0 gets collected, we see
-        # that c2 has a callback-free weakref, and c1 doesn't even have a
-        # weakref.  Collecting generation 0 doesn't see c0 at all, and c0 is
-        # the only object that has a weakref with a callback.  gc clears c1
-        # and c2.  Clearing c1 has the side effect of dropping the refcount on
-        # c0 to 0, so c0 goes away (despite that it's in an older generation)
-        # and c0's wr callback triggers.  That in turn materializes a reference
-        # to c2 via c2wr(), but c2 gets cleared anyway by gc.
-
-        # We want to let gc happen "naturally", to preserve the distinction
-        # between generations.
-        junk = []
-        i = 0
-        detector = GC_Detector()
-        while not detector.gc_happened:
-            i += 1
-            if i > 10000:
-                self.fail("gc didn't happen after 10000 iterations")
-            self.assertEqual(len(ouch), 0)
-            junk.append([])  # this will eventually trigger gc
-
-        self.assertEqual(len(ouch), 1)  # else the callback wasn't invoked
-        for x in ouch:
-            # If the callback resurrected c2, the instance would be damaged,
-            # with an empty __dict__.
-            self.assertEqual(x, None)
-
-    def test_bug1055820d(self):
-        # Corresponds to temp2d.py in the bug report.  This is very much like
-        # test_bug1055820c, but uses a __del__ method instead of a weakref
-        # callback to sneak in a resurrection of cyclic trash.
-
-        ouch = []
-        class D(C1055820):
-            def __del__(self):
-                ouch[:] = [c2wr()]
-
-        d0 = D(0)
-        # Move all the above into generation 2.
-        gc.collect()
-
-        c1 = C1055820(1)
-        c1.keep_d0_alive = d0
-        del d0.loop # now only c1 keeps d0 alive
-
-        c2 = C1055820(2)
-        c2wr = weakref.ref(c2) # no callback!
-
-        d0 = c1 = c2 = None
-
-        # What we've set up:  d0, c1, and c2 are all trash now.  d0 is in
-        # generation 2.  The only thing keeping it alive is that c1 points to
-        # it.  c1 and c2 are in generation 0, and are in self-loops.  There's
-        # a global weakref to c2 (c2wr), but that weakref has no callback.
-        # There are no other weakrefs.
-        #
-        #               d0 has a __del__ method that references c2wr
-        #               ^
-        #               |
-        #               |     Generation 2 above dots
-        #. . . . . . . .|. . . . . . . . . . . . . . . . . . . . . . . .
-        #               |     Generation 0 below dots
-        #               |
-        #               |
-        #            ^->c1   ^->c2 has a wr but no callback
-        #            |  |    |  |
-        #            <--v    <--v
-        #
-        # So this is the nightmare:  when generation 0 gets collected, we see
-        # that c2 has a callback-free weakref, and c1 doesn't even have a
-        # weakref.  Collecting generation 0 doesn't see d0 at all.  gc clears
-        # c1 and c2.  Clearing c1 has the side effect of dropping the refcount
-        # on d0 to 0, so d0 goes away (despite that it's in an older
-        # generation) and d0's __del__ triggers.  That in turn materializes
-        # a reference to c2 via c2wr(), but c2 gets cleared anyway by gc.
-
-        # We want to let gc happen "naturally", to preserve the distinction
-        # between generations.
-        detector = GC_Detector()
-        junk = []
-        i = 0
-        while not detector.gc_happened:
-            i += 1
-            if i > 10000:
-                self.fail("gc didn't happen after 10000 iterations")
-            self.assertEqual(len(ouch), 0)
-            junk.append([])  # this will eventually trigger gc
-
-        self.assertEqual(len(ouch), 1)  # else __del__ wasn't invoked
-        for x in ouch:
-            # If __del__ resurrected c2, the instance would be damaged, with an
-            # empty __dict__.
-            self.assertEqual(x, None)
-
-def test_main():
-    enabled = gc.isenabled()
-    gc.disable()
-    assert not gc.isenabled()
-    debug = gc.get_debug()
-    gc.set_debug(debug & ~gc.DEBUG_LEAK) # this test is supposed to leak
-
-    try:
-        gc.collect() # Delete 2nd generation garbage
-        run_unittest(GCTests, GCTogglingTests)
-    finally:
-        gc.set_debug(debug)
-        # test gc.enable() even if GC is disabled by default
-        if verbose:
-            print "restoring automatic collection"
-        # make sure to always test gc.enable()
-        gc.enable()
-        assert gc.isenabled()
-        if not enabled:
-            gc.disable()
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gdb.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gdb.py
deleted file mode 100644
index 250a861..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gdb.py
+++ /dev/null
@@ -1,702 +0,0 @@
-# Verify that gdb can pretty-print the various PyObject* types
-#
-# The code for testing gdb was adapted from similar work in Unladen Swallow's
-# Lib/test/test_jit_gdb.py
-
-import os
-import re
-import subprocess
-import sys
-import unittest
-import sysconfig
-
-from test.test_support import run_unittest, findfile
-
-try:
-    gdb_version, _ = subprocess.Popen(["gdb", "--version"],
-                                      stdout=subprocess.PIPE).communicate()
-except OSError:
-    # This is what "no gdb" looks like.  There may, however, be other
-    # errors that manifest this way too.
-    raise unittest.SkipTest("Couldn't find gdb on the path")
-gdb_version_number = re.search(r"^GNU gdb [^\d]*(\d+)\.", gdb_version)
-if int(gdb_version_number.group(1)) < 7:
-    raise unittest.SkipTest("gdb versions before 7.0 didn't support python embedding"
-                            " Saw:\n" + gdb_version)
-
-# Verify that "gdb" was built with the embedded python support enabled:
-cmd = "--eval-command=python import sys; print sys.version_info"
-p = subprocess.Popen(["gdb", "--batch", cmd],
-                     stdout=subprocess.PIPE)
-gdbpy_version, _ = p.communicate()
-if gdbpy_version == '':
-    raise unittest.SkipTest("gdb not built with embedded python support")
-
-def gdb_has_frame_select():
-    # Does this build of gdb have gdb.Frame.select ?
-    cmd = "--eval-command=python print(dir(gdb.Frame))"
-    p = subprocess.Popen(["gdb", "--batch", cmd],
-                         stdout=subprocess.PIPE)
-    stdout, _ = p.communicate()
-    m = re.match(r'.*\[(.*)\].*', stdout)
-    if not m:
-        raise unittest.SkipTest("Unable to parse output from gdb.Frame.select test")
-    gdb_frame_dir = m.group(1).split(', ')
-    return "'select'" in gdb_frame_dir
-
-HAS_PYUP_PYDOWN = gdb_has_frame_select()
-
-class DebuggerTests(unittest.TestCase):
-
-    """Test that the debugger can debug Python."""
-
-    def run_gdb(self, *args):
-        """Runs gdb with the command line given by *args.
-
-        Returns its stdout, stderr
-        """
-        out, err = subprocess.Popen(
-            args, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
-            ).communicate()
-        return out, err
-
-    def get_stack_trace(self, source=None, script=None,
-                        breakpoint='PyObject_Print',
-                        cmds_after_breakpoint=None,
-                        import_site=False):
-        '''
-        Run 'python -c SOURCE' under gdb with a breakpoint.
-
-        Support injecting commands after the breakpoint is reached
-
-        Returns the stdout from gdb
-
-        cmds_after_breakpoint: if provided, a list of strings: gdb commands
-        '''
-        # We use "set breakpoint pending yes" to avoid blocking with a:
-        #   Function "foo" not defined.
-        #   Make breakpoint pending on future shared library load? (y or [n])
-        # error, which typically happens python is dynamically linked (the
-        # breakpoints of interest are to be found in the shared library)
-        # When this happens, we still get:
-        #   Function "PyObject_Print" not defined.
-        # emitted to stderr each time, alas.
-
-        # Initially I had "--eval-command=continue" here, but removed it to
-        # avoid repeated print breakpoints when traversing hierarchical data
-        # structures
-
-        # Generate a list of commands in gdb's language:
-        commands = ['set breakpoint pending yes',
-                    'break %s' % breakpoint,
-                    'run']
-        if cmds_after_breakpoint:
-            commands += cmds_after_breakpoint
-        else:
-            commands += ['backtrace']
-
-        # print commands
-
-        # Use "commands" to generate the arguments with which to invoke "gdb":
-        args = ["gdb", "--batch"]
-        args += ['--eval-command=%s' % cmd for cmd in commands]
-        args += ["--args",
-                 sys.executable]
-
-        if not import_site:
-            # -S suppresses the default 'import site'
-            args += ["-S"]
-
-        if source:
-            args += ["-c", source]
-        elif script:
-            args += [script]
-
-        # print args
-        # print ' '.join(args)
-
-        # Use "args" to invoke gdb, capturing stdout, stderr:
-        out, err = self.run_gdb(*args)
-
-        # Ignore some noise on stderr due to the pending breakpoint:
-        err = err.replace('Function "%s" not defined.\n' % breakpoint, '')
-        # Ignore some other noise on stderr (http://bugs.python.org/issue8600)
-        err = err.replace("warning: Unable to find libthread_db matching"
-                          " inferior's thread library, thread debugging will"
-                          " not be available.\n",
-                          '')
-        err = err.replace("warning: Cannot initialize thread debugging"
-                          " library: Debugger service failed\n",
-                          '')
-
-        # Ensure no unexpected error messages:
-        self.assertEqual(err, '')
-
-        return out
-
-    def get_gdb_repr(self, source,
-                     cmds_after_breakpoint=None,
-                     import_site=False):
-        # Given an input python source representation of data,
-        # run "python -c'print DATA'" under gdb with a breakpoint on
-        # PyObject_Print and scrape out gdb's representation of the "op"
-        # parameter, and verify that the gdb displays the same string
-        #
-        # For a nested structure, the first time we hit the breakpoint will
-        # give us the top-level structure
-        gdb_output = self.get_stack_trace(source, breakpoint='PyObject_Print',
-                                          cmds_after_breakpoint=cmds_after_breakpoint,
-                                          import_site=import_site)
-        # gdb can insert additional '\n' and space characters in various places
-        # in its output, depending on the width of the terminal it's connected
-        # to (using its "wrap_here" function)
-        m = re.match('.*#0\s+PyObject_Print\s+\(\s*op\=\s*(.*?),\s+fp=.*\).*',
-                     gdb_output, re.DOTALL)
-        if not m:
-            self.fail('Unexpected gdb output: %r\n%s' % (gdb_output, gdb_output))
-        return m.group(1), gdb_output
-
-    def assertEndsWith(self, actual, exp_end):
-        '''Ensure that the given "actual" string ends with "exp_end"'''
-        self.assertTrue(actual.endswith(exp_end),
-                        msg='%r did not end with %r' % (actual, exp_end))
-
-    def assertMultilineMatches(self, actual, pattern):
-        m = re.match(pattern, actual, re.DOTALL)
-        self.assertTrue(m, msg='%r did not match %r' % (actual, pattern))
-
-    def get_sample_script(self):
-        return findfile('gdb_sample.py')
-
-class PrettyPrintTests(DebuggerTests):
-    def test_getting_backtrace(self):
-        gdb_output = self.get_stack_trace('print 42')
-        self.assertTrue('PyObject_Print' in gdb_output)
-
-    def assertGdbRepr(self, val, cmds_after_breakpoint=None):
-        # Ensure that gdb's rendering of the value in a debugged process
-        # matches repr(value) in this process:
-        gdb_repr, gdb_output = self.get_gdb_repr('print ' + repr(val),
-                                                 cmds_after_breakpoint)
-        self.assertEqual(gdb_repr, repr(val), gdb_output)
-
-    def test_int(self):
-        'Verify the pretty-printing of various "int" values'
-        self.assertGdbRepr(42)
-        self.assertGdbRepr(0)
-        self.assertGdbRepr(-7)
-        self.assertGdbRepr(sys.maxint)
-        self.assertGdbRepr(-sys.maxint)
-
-    def test_long(self):
-        'Verify the pretty-printing of various "long" values'
-        self.assertGdbRepr(0L)
-        self.assertGdbRepr(1000000000000L)
-        self.assertGdbRepr(-1L)
-        self.assertGdbRepr(-1000000000000000L)
-
-    def test_singletons(self):
-        'Verify the pretty-printing of True, False and None'
-        self.assertGdbRepr(True)
-        self.assertGdbRepr(False)
-        self.assertGdbRepr(None)
-
-    def test_dicts(self):
-        'Verify the pretty-printing of dictionaries'
-        self.assertGdbRepr({})
-        self.assertGdbRepr({'foo': 'bar'})
-        self.assertGdbRepr({'foo': 'bar', 'douglas':42})
-
-    def test_lists(self):
-        'Verify the pretty-printing of lists'
-        self.assertGdbRepr([])
-        self.assertGdbRepr(range(5))
-
-    def test_strings(self):
-        'Verify the pretty-printing of strings'
-        self.assertGdbRepr('')
-        self.assertGdbRepr('And now for something hopefully the same')
-        self.assertGdbRepr('string with embedded NUL here \0 and then some more text')
-        self.assertGdbRepr('this is byte 255:\xff and byte 128:\x80')
-
-    def test_tuples(self):
-        'Verify the pretty-printing of tuples'
-        self.assertGdbRepr(tuple())
-        self.assertGdbRepr((1,))
-        self.assertGdbRepr(('foo', 'bar', 'baz'))
-
-    def test_unicode(self):
-        'Verify the pretty-printing of unicode values'
-        # Test the empty unicode string:
-        self.assertGdbRepr(u'')
-
-        self.assertGdbRepr(u'hello world')
-
-        # Test printing a single character:
-        #    U+2620 SKULL AND CROSSBONES
-        self.assertGdbRepr(u'\u2620')
-
-        # Test printing a Japanese unicode string
-        # (I believe this reads "mojibake", using 3 characters from the CJK
-        # Unified Ideographs area, followed by U+3051 HIRAGANA LETTER KE)
-        self.assertGdbRepr(u'\u6587\u5b57\u5316\u3051')
-
-        # Test a character outside the BMP:
-        #    U+1D121 MUSICAL SYMBOL C CLEF
-        # This is:
-        # UTF-8: 0xF0 0x9D 0x84 0xA1
-        # UTF-16: 0xD834 0xDD21
-        # This will only work on wide-unicode builds:
-        self.assertGdbRepr(u"\U0001D121")
-
-    def test_sets(self):
-        'Verify the pretty-printing of sets'
-        self.assertGdbRepr(set())
-        self.assertGdbRepr(set(['a', 'b']))
-        self.assertGdbRepr(set([4, 5, 6]))
-
-        # Ensure that we handled sets containing the "dummy" key value,
-        # which happens on deletion:
-        gdb_repr, gdb_output = self.get_gdb_repr('''s = set(['a','b'])
-s.pop()
-print s''')
-        self.assertEqual(gdb_repr, "set(['b'])")
-
-    def test_frozensets(self):
-        'Verify the pretty-printing of frozensets'
-        self.assertGdbRepr(frozenset())
-        self.assertGdbRepr(frozenset(['a', 'b']))
-        self.assertGdbRepr(frozenset([4, 5, 6]))
-
-    def test_exceptions(self):
-        # Test a RuntimeError
-        gdb_repr, gdb_output = self.get_gdb_repr('''
-try:
-    raise RuntimeError("I am an error")
-except RuntimeError, e:
-    print e
-''')
-        self.assertEqual(gdb_repr,
-                         "exceptions.RuntimeError('I am an error',)")
-
-
-        # Test division by zero:
-        gdb_repr, gdb_output = self.get_gdb_repr('''
-try:
-    a = 1 / 0
-except ZeroDivisionError, e:
-    print e
-''')
-        self.assertEqual(gdb_repr,
-                         "exceptions.ZeroDivisionError('integer division or modulo by zero',)")
-
-    def test_classic_class(self):
-        'Verify the pretty-printing of classic class instances'
-        gdb_repr, gdb_output = self.get_gdb_repr('''
-class Foo:
-    pass
-foo = Foo()
-foo.an_int = 42
-print foo''')
-        m = re.match(r'<Foo\(an_int=42\) at remote 0x[0-9a-f]+>', gdb_repr)
-        self.assertTrue(m,
-                        msg='Unexpected classic-class rendering %r' % gdb_repr)
-
-    def test_modern_class(self):
-        'Verify the pretty-printing of new-style class instances'
-        gdb_repr, gdb_output = self.get_gdb_repr('''
-class Foo(object):
-    pass
-foo = Foo()
-foo.an_int = 42
-print foo''')
-        m = re.match(r'<Foo\(an_int=42\) at remote 0x[0-9a-f]+>', gdb_repr)
-        self.assertTrue(m,
-                        msg='Unexpected new-style class rendering %r' % gdb_repr)
-
-    def test_subclassing_list(self):
-        'Verify the pretty-printing of an instance of a list subclass'
-        gdb_repr, gdb_output = self.get_gdb_repr('''
-class Foo(list):
-    pass
-foo = Foo()
-foo += [1, 2, 3]
-foo.an_int = 42
-print foo''')
-        m = re.match(r'<Foo\(an_int=42\) at remote 0x[0-9a-f]+>', gdb_repr)
-        self.assertTrue(m,
-                        msg='Unexpected new-style class rendering %r' % gdb_repr)
-
-    def test_subclassing_tuple(self):
-        'Verify the pretty-printing of an instance of a tuple subclass'
-        # This should exercise the negative tp_dictoffset code in the
-        # new-style class support
-        gdb_repr, gdb_output = self.get_gdb_repr('''
-class Foo(tuple):
-    pass
-foo = Foo((1, 2, 3))
-foo.an_int = 42
-print foo''')
-        m = re.match(r'<Foo\(an_int=42\) at remote 0x[0-9a-f]+>', gdb_repr)
-        self.assertTrue(m,
-                        msg='Unexpected new-style class rendering %r' % gdb_repr)
-
-    def assertSane(self, source, corruption, expvalue=None, exptype=None):
-        '''Run Python under gdb, corrupting variables in the inferior process
-        immediately before taking a backtrace.
-
-        Verify that the variable's representation is the expected failsafe
-        representation'''
-        if corruption:
-            cmds_after_breakpoint=[corruption, 'backtrace']
-        else:
-            cmds_after_breakpoint=['backtrace']
-
-        gdb_repr, gdb_output = \
-            self.get_gdb_repr(source,
-                              cmds_after_breakpoint=cmds_after_breakpoint)
-
-        if expvalue:
-            if gdb_repr == repr(expvalue):
-                # gdb managed to print the value in spite of the corruption;
-                # this is good (see http://bugs.python.org/issue8330)
-                return
-
-        if exptype:
-            pattern = '<' + exptype + ' at remote 0x[0-9a-f]+>'
-        else:
-            # Match anything for the type name; 0xDEADBEEF could point to
-            # something arbitrary (see  http://bugs.python.org/issue8330)
-            pattern = '<.* at remote 0x[0-9a-f]+>'
-
-        m = re.match(pattern, gdb_repr)
-        if not m:
-            self.fail('Unexpected gdb representation: %r\n%s' % \
-                          (gdb_repr, gdb_output))
-
-    def test_NULL_ptr(self):
-        'Ensure that a NULL PyObject* is handled gracefully'
-        gdb_repr, gdb_output = (
-            self.get_gdb_repr('print 42',
-                              cmds_after_breakpoint=['set variable op=0',
-                                                     'backtrace'])
-            )
-
-        self.assertEqual(gdb_repr, '0x0')
-
-    def test_NULL_ob_type(self):
-        'Ensure that a PyObject* with NULL ob_type is handled gracefully'
-        self.assertSane('print 42',
-                        'set op->ob_type=0')
-
-    def test_corrupt_ob_type(self):
-        'Ensure that a PyObject* with a corrupt ob_type is handled gracefully'
-        self.assertSane('print 42',
-                        'set op->ob_type=0xDEADBEEF',
-                        expvalue=42)
-
-    def test_corrupt_tp_flags(self):
-        'Ensure that a PyObject* with a type with corrupt tp_flags is handled'
-        self.assertSane('print 42',
-                        'set op->ob_type->tp_flags=0x0',
-                        expvalue=42)
-
-    def test_corrupt_tp_name(self):
-        'Ensure that a PyObject* with a type with corrupt tp_name is handled'
-        self.assertSane('print 42',
-                        'set op->ob_type->tp_name=0xDEADBEEF',
-                        expvalue=42)
-
-    def test_NULL_instance_dict(self):
-        'Ensure that a PyInstanceObject with with a NULL in_dict is handled'
-        self.assertSane('''
-class Foo:
-    pass
-foo = Foo()
-foo.an_int = 42
-print foo''',
-                        'set ((PyInstanceObject*)op)->in_dict = 0',
-                        exptype='Foo')
-
-    def test_builtins_help(self):
-        'Ensure that the new-style class _Helper in site.py can be handled'
-        # (this was the issue causing tracebacks in
-        #  http://bugs.python.org/issue8032#msg100537 )
-
-        gdb_repr, gdb_output = self.get_gdb_repr('print __builtins__.help', import_site=True)
-        m = re.match(r'<_Helper at remote 0x[0-9a-f]+>', gdb_repr)
-        self.assertTrue(m,
-                        msg='Unexpected rendering %r' % gdb_repr)
-
-    def test_selfreferential_list(self):
-        '''Ensure that a reference loop involving a list doesn't lead proxyval
-        into an infinite loop:'''
-        gdb_repr, gdb_output = \
-            self.get_gdb_repr("a = [3, 4, 5] ; a.append(a) ; print a")
-
-        self.assertEqual(gdb_repr, '[3, 4, 5, [...]]')
-
-        gdb_repr, gdb_output = \
-            self.get_gdb_repr("a = [3, 4, 5] ; b = [a] ; a.append(b) ; print a")
-
-        self.assertEqual(gdb_repr, '[3, 4, 5, [[...]]]')
-
-    def test_selfreferential_dict(self):
-        '''Ensure that a reference loop involving a dict doesn't lead proxyval
-        into an infinite loop:'''
-        gdb_repr, gdb_output = \
-            self.get_gdb_repr("a = {} ; b = {'bar':a} ; a['foo'] = b ; print a")
-
-        self.assertEqual(gdb_repr, "{'foo': {'bar': {...}}}")
-
-    def test_selfreferential_old_style_instance(self):
-        gdb_repr, gdb_output = \
-            self.get_gdb_repr('''
-class Foo:
-    pass
-foo = Foo()
-foo.an_attr = foo
-print foo''')
-        self.assertTrue(re.match('<Foo\(an_attr=<\.\.\.>\) at remote 0x[0-9a-f]+>',
-                                 gdb_repr),
-                        'Unexpected gdb representation: %r\n%s' % \
-                            (gdb_repr, gdb_output))
-
-    def test_selfreferential_new_style_instance(self):
-        gdb_repr, gdb_output = \
-            self.get_gdb_repr('''
-class Foo(object):
-    pass
-foo = Foo()
-foo.an_attr = foo
-print foo''')
-        self.assertTrue(re.match('<Foo\(an_attr=<\.\.\.>\) at remote 0x[0-9a-f]+>',
-                                 gdb_repr),
-                        'Unexpected gdb representation: %r\n%s' % \
-                            (gdb_repr, gdb_output))
-
-        gdb_repr, gdb_output = \
-            self.get_gdb_repr('''
-class Foo(object):
-    pass
-a = Foo()
-b = Foo()
-a.an_attr = b
-b.an_attr = a
-print a''')
-        self.assertTrue(re.match('<Foo\(an_attr=<Foo\(an_attr=<\.\.\.>\) at remote 0x[0-9a-f]+>\) at remote 0x[0-9a-f]+>',
-                                 gdb_repr),
-                        'Unexpected gdb representation: %r\n%s' % \
-                            (gdb_repr, gdb_output))
-
-    def test_truncation(self):
-        'Verify that very long output is truncated'
-        gdb_repr, gdb_output = self.get_gdb_repr('print range(1000)')
-        self.assertEqual(gdb_repr,
-                         "[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, 128, 129, 130, 131, 132, 133, "
-                         "134, 135, 136, 137, 138, 139, 140, 141, 142, 143, "
-                         "144, 145, 146, 147, 148, 149, 150, 151, 152, 153, "
-                         "154, 155, 156, 157, 158, 159, 160, 161, 162, 163, "
-                         "164, 165, 166, 167, 168, 169, 170, 171, 172, 173, "
-                         "174, 175, 176, 177, 178, 179, 180, 181, 182, 183, "
-                         "184, 185, 186, 187, 188, 189, 190, 191, 192, 193, "
-                         "194, 195, 196, 197, 198, 199, 200, 201, 202, 203, "
-                         "204, 205, 206, 207, 208, 209, 210, 211, 212, 213, "
-                         "214, 215, 216, 217, 218, 219, 220, 221, 222, 223, "
-                         "224, 225, 226...(truncated)")
-        self.assertEqual(len(gdb_repr),
-                         1024 + len('...(truncated)'))
-
-    def test_builtin_function(self):
-        gdb_repr, gdb_output = self.get_gdb_repr('print len')
-        self.assertEqual(gdb_repr, '<built-in function len>')
-
-    def test_builtin_method(self):
-        gdb_repr, gdb_output = self.get_gdb_repr('import sys; print sys.stdout.readlines')
-        self.assertTrue(re.match('<built-in method readlines of file object at remote 0x[0-9a-f]+>',
-                                 gdb_repr),
-                        'Unexpected gdb representation: %r\n%s' % \
-                            (gdb_repr, gdb_output))
-
-    def test_frames(self):
-        gdb_output = self.get_stack_trace('''
-def foo(a, b, c):
-    pass
-
-foo(3, 4, 5)
-print foo.__code__''',
-                                          breakpoint='PyObject_Print',
-                                          cmds_after_breakpoint=['print (PyFrameObject*)(((PyCodeObject*)op)->co_zombieframe)']
-                                          )
-        self.assertTrue(re.match(r'.*\s+\$1 =\s+Frame 0x[0-9a-f]+, for file <string>, line 3, in foo \(\)\s+.*',
-                                 gdb_output,
-                                 re.DOTALL),
-                        'Unexpected gdb representation: %r\n%s' % (gdb_output, gdb_output))
-
-class PyListTests(DebuggerTests):
-    def assertListing(self, expected, actual):
-        self.assertEndsWith(actual, expected)
-
-    def test_basic_command(self):
-        'Verify that the "py-list" command works'
-        bt = self.get_stack_trace(script=self.get_sample_script(),
-                                  cmds_after_breakpoint=['py-list'])
-
-        self.assertListing('   5    \n'
-                           '   6    def bar(a, b, c):\n'
-                           '   7        baz(a, b, c)\n'
-                           '   8    \n'
-                           '   9    def baz(*args):\n'
-                           ' >10        print(42)\n'
-                           '  11    \n'
-                           '  12    foo(1, 2, 3)\n',
-                           bt)
-
-    def test_one_abs_arg(self):
-        'Verify the "py-list" command with one absolute argument'
-        bt = self.get_stack_trace(script=self.get_sample_script(),
-                                  cmds_after_breakpoint=['py-list 9'])
-
-        self.assertListing('   9    def baz(*args):\n'
-                           ' >10        print(42)\n'
-                           '  11    \n'
-                           '  12    foo(1, 2, 3)\n',
-                           bt)
-
-    def test_two_abs_args(self):
-        'Verify the "py-list" command with two absolute arguments'
-        bt = self.get_stack_trace(script=self.get_sample_script(),
-                                  cmds_after_breakpoint=['py-list 1,3'])
-
-        self.assertListing('   1    # Sample script for use by test_gdb.py\n'
-                           '   2    \n'
-                           '   3    def foo(a, b, c):\n',
-                           bt)
-
-class StackNavigationTests(DebuggerTests):
-    @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands")
-    def test_pyup_command(self):
-        'Verify that the "py-up" command works'
-        bt = self.get_stack_trace(script=self.get_sample_script(),
-                                  cmds_after_breakpoint=['py-up'])
-        self.assertMultilineMatches(bt,
-                                    r'''^.*
-#[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 7, in bar \(a=1, b=2, c=3\)
-    baz\(a, b, c\)
-$''')
-
-    @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands")
-    def test_down_at_bottom(self):
-        'Verify handling of "py-down" at the bottom of the stack'
-        bt = self.get_stack_trace(script=self.get_sample_script(),
-                                  cmds_after_breakpoint=['py-down'])
-        self.assertEndsWith(bt,
-                            'Unable to find a newer python frame\n')
-
-    @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands")
-    def test_up_at_top(self):
-        'Verify handling of "py-up" at the top of the stack'
-        bt = self.get_stack_trace(script=self.get_sample_script(),
-                                  cmds_after_breakpoint=['py-up'] * 4)
-        self.assertEndsWith(bt,
-                            'Unable to find an older python frame\n')
-
-    @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands")
-    def test_up_then_down(self):
-        'Verify "py-up" followed by "py-down"'
-        bt = self.get_stack_trace(script=self.get_sample_script(),
-                                  cmds_after_breakpoint=['py-up', 'py-down'])
-        self.assertMultilineMatches(bt,
-                                    r'''^.*
-#[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 7, in bar \(a=1, b=2, c=3\)
-    baz\(a, b, c\)
-#[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 10, in baz \(args=\(1, 2, 3\)\)
-    print\(42\)
-$''')
-
-class PyBtTests(DebuggerTests):
-    def test_basic_command(self):
-        'Verify that the "py-bt" command works'
-        bt = self.get_stack_trace(script=self.get_sample_script(),
-                                  cmds_after_breakpoint=['py-bt'])
-        self.assertMultilineMatches(bt,
-                                    r'''^.*
-#[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 7, in bar \(a=1, b=2, c=3\)
-    baz\(a, b, c\)
-#[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 4, in foo \(a=1, b=2, c=3\)
-    bar\(a, b, c\)
-#[0-9]+ Frame 0x[0-9a-f]+, for file .*gdb_sample.py, line 12, in <module> \(\)
-foo\(1, 2, 3\)
-''')
-
-class PyPrintTests(DebuggerTests):
-    def test_basic_command(self):
-        'Verify that the "py-print" command works'
-        bt = self.get_stack_trace(script=self.get_sample_script(),
-                                  cmds_after_breakpoint=['py-print args'])
-        self.assertMultilineMatches(bt,
-                                    r".*\nlocal 'args' = \(1, 2, 3\)\n.*")
-
-    @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands")
-    def test_print_after_up(self):
-        bt = self.get_stack_trace(script=self.get_sample_script(),
-                                  cmds_after_breakpoint=['py-up', 'py-print c', 'py-print b', 'py-print a'])
-        self.assertMultilineMatches(bt,
-                                    r".*\nlocal 'c' = 3\nlocal 'b' = 2\nlocal 'a' = 1\n.*")
-
-    def test_printing_global(self):
-        bt = self.get_stack_trace(script=self.get_sample_script(),
-                                  cmds_after_breakpoint=['py-print __name__'])
-        self.assertMultilineMatches(bt,
-                                    r".*\nglobal '__name__' = '__main__'\n.*")
-
-    def test_printing_builtin(self):
-        bt = self.get_stack_trace(script=self.get_sample_script(),
-                                  cmds_after_breakpoint=['py-print len'])
-        self.assertMultilineMatches(bt,
-                                    r".*\nbuiltin 'len' = <built-in function len>\n.*")
-
-class PyLocalsTests(DebuggerTests):
-    def test_basic_command(self):
-        bt = self.get_stack_trace(script=self.get_sample_script(),
-                                  cmds_after_breakpoint=['py-locals'])
-        self.assertMultilineMatches(bt,
-                                    r".*\nargs = \(1, 2, 3\)\n.*")
-
-    @unittest.skipUnless(HAS_PYUP_PYDOWN, "test requires py-up/py-down commands")
-    def test_locals_after_up(self):
-        bt = self.get_stack_trace(script=self.get_sample_script(),
-                                  cmds_after_breakpoint=['py-up', 'py-locals'])
-        self.assertMultilineMatches(bt,
-                                    r".*\na = 1\nb = 2\nc = 3\n.*")
-
-def test_main():
-    cflags = sysconfig.get_config_vars()['PY_CFLAGS']
-    final_opt = ""
-    for opt in cflags.split():
-        if opt.startswith('-O'):
-            final_opt = opt
-    if final_opt and final_opt != '-O0':
-        raise unittest.SkipTest("Python was built with compiler optimizations, "
-                                "tests can't reliably succeed")
-
-    run_unittest(PrettyPrintTests,
-                 PyListTests,
-                 StackNavigationTests,
-                 PyBtTests,
-                 PyPrintTests,
-                 PyLocalsTests
-                 )
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gdbm.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gdbm.py
deleted file mode 100644
index 16e8a2a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gdbm.py
+++ /dev/null
@@ -1,82 +0,0 @@
-import unittest
-import os
-from test.test_support import TESTFN, run_unittest, unlink, import_module
-gdbm = import_module('gdbm')
-
-
-filename = TESTFN
-
-class TestGdbm(unittest.TestCase):
-
-    def setUp(self):
-        self.g = None
-
-    def tearDown(self):
-        if self.g is not None:
-            self.g.close()
-        unlink(filename)
-
-    def test_key_methods(self):
-        self.g = gdbm.open(filename, 'c')
-        self.assertEqual(self.g.keys(), [])
-        self.g['a'] = 'b'
-        self.g['12345678910'] = '019237410982340912840198242'
-        key_set = set(self.g.keys())
-        self.assertEqual(key_set, frozenset(['a', '12345678910']))
-        self.assertTrue(self.g.has_key('a'))
-        key = self.g.firstkey()
-        while key:
-            self.assertIn(key, key_set)
-            key_set.remove(key)
-            key = self.g.nextkey(key)
-        self.assertRaises(KeyError, lambda: self.g['xxx'])
-
-    def test_error_conditions(self):
-        # Try to open a non-existent database.
-        unlink(filename)
-        self.assertRaises(gdbm.error, gdbm.open, filename, 'r')
-        # Try to access a closed database.
-        self.g = gdbm.open(filename, 'c')
-        self.g.close()
-        self.assertRaises(gdbm.error, lambda: self.g['a'])
-        # try pass an invalid open flag
-        self.assertRaises(gdbm.error, lambda: gdbm.open(filename, 'rx').close())
-
-    def test_flags(self):
-        # Test the flag parameter open() by trying all supported flag modes.
-        all = set(gdbm.open_flags)
-        # Test standard flags (presumably "crwn").
-        modes = all - set('fsu')
-        for mode in modes:
-            self.g = gdbm.open(filename, mode)
-            self.g.close()
-
-        # Test additional flags (presumably "fsu").
-        flags = all - set('crwn')
-        for mode in modes:
-            for flag in flags:
-                self.g = gdbm.open(filename, mode + flag)
-                self.g.close()
-
-    def test_reorganize(self):
-        self.g = gdbm.open(filename, 'c')
-        size0 = os.path.getsize(filename)
-
-        self.g['x'] = 'x' * 10000
-        size1 = os.path.getsize(filename)
-        self.assertTrue(size0 < size1)
-
-        del self.g['x']
-        # 'size' is supposed to be the same even after deleting an entry.
-        self.assertEqual(os.path.getsize(filename), size1)
-
-        self.g.reorganize()
-        size2 = os.path.getsize(filename)
-        self.assertTrue(size1 > size2 >= size0)
-
-
-def test_main():
-    run_unittest(TestGdbm)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_generators.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_generators.py
deleted file mode 100644
index e4ae996..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_generators.py
+++ /dev/null
@@ -1,1906 +0,0 @@
-tutorial_tests = """
-Let's try a simple generator:
-
-    >>> def f():
-    ...    yield 1
-    ...    yield 2
-
-    >>> for i in f():
-    ...     print i
-    1
-    2
-    >>> g = f()
-    >>> g.next()
-    1
-    >>> g.next()
-    2
-
-"Falling off the end" stops the generator:
-
-    >>> g.next()
-    Traceback (most recent call last):
-      File "<stdin>", line 1, in ?
-      File "<stdin>", line 2, in g
-    StopIteration
-
-"return" also stops the generator:
-
-    >>> def f():
-    ...     yield 1
-    ...     return
-    ...     yield 2 # never reached
-    ...
-    >>> g = f()
-    >>> g.next()
-    1
-    >>> g.next()
-    Traceback (most recent call last):
-      File "<stdin>", line 1, in ?
-      File "<stdin>", line 3, in f
-    StopIteration
-    >>> g.next() # once stopped, can't be resumed
-    Traceback (most recent call last):
-      File "<stdin>", line 1, in ?
-    StopIteration
-
-"raise StopIteration" stops the generator too:
-
-    >>> def f():
-    ...     yield 1
-    ...     raise StopIteration
-    ...     yield 2 # never reached
-    ...
-    >>> g = f()
-    >>> g.next()
-    1
-    >>> g.next()
-    Traceback (most recent call last):
-      File "<stdin>", line 1, in ?
-    StopIteration
-    >>> g.next()
-    Traceback (most recent call last):
-      File "<stdin>", line 1, in ?
-    StopIteration
-
-However, they are not exactly equivalent:
-
-    >>> def g1():
-    ...     try:
-    ...         return
-    ...     except:
-    ...         yield 1
-    ...
-    >>> list(g1())
-    []
-
-    >>> def g2():
-    ...     try:
-    ...         raise StopIteration
-    ...     except:
-    ...         yield 42
-    >>> print list(g2())
-    [42]
-
-This may be surprising at first:
-
-    >>> def g3():
-    ...     try:
-    ...         return
-    ...     finally:
-    ...         yield 1
-    ...
-    >>> list(g3())
-    [1]
-
-Let's create an alternate range() function implemented as a generator:
-
-    >>> def yrange(n):
-    ...     for i in range(n):
-    ...         yield i
-    ...
-    >>> list(yrange(5))
-    [0, 1, 2, 3, 4]
-
-Generators always return to the most recent caller:
-
-    >>> def creator():
-    ...     r = yrange(5)
-    ...     print "creator", r.next()
-    ...     return r
-    ...
-    >>> def caller():
-    ...     r = creator()
-    ...     for i in r:
-    ...             print "caller", i
-    ...
-    >>> caller()
-    creator 0
-    caller 1
-    caller 2
-    caller 3
-    caller 4
-
-Generators can call other generators:
-
-    >>> def zrange(n):
-    ...     for i in yrange(n):
-    ...         yield i
-    ...
-    >>> list(zrange(5))
-    [0, 1, 2, 3, 4]
-
-"""
-
-# The examples from PEP 255.
-
-pep_tests = """
-
-Specification:  Yield
-
-    Restriction:  A generator cannot be resumed while it is actively
-    running:
-
-    >>> def g():
-    ...     i = me.next()
-    ...     yield i
-    >>> me = g()
-    >>> me.next()
-    Traceback (most recent call last):
-     ...
-      File "<string>", line 2, in g
-    ValueError: generator already executing
-
-Specification: Return
-
-    Note that return isn't always equivalent to raising StopIteration:  the
-    difference lies in how enclosing try/except constructs are treated.
-    For example,
-
-        >>> def f1():
-        ...     try:
-        ...         return
-        ...     except:
-        ...        yield 1
-        >>> print list(f1())
-        []
-
-    because, as in any function, return simply exits, but
-
-        >>> def f2():
-        ...     try:
-        ...         raise StopIteration
-        ...     except:
-        ...         yield 42
-        >>> print list(f2())
-        [42]
-
-    because StopIteration is captured by a bare "except", as is any
-    exception.
-
-Specification: Generators and Exception Propagation
-
-    >>> def f():
-    ...     return 1//0
-    >>> def g():
-    ...     yield f()  # the zero division exception propagates
-    ...     yield 42   # and we'll never get here
-    >>> k = g()
-    >>> k.next()
-    Traceback (most recent call last):
-      File "<stdin>", line 1, in ?
-      File "<stdin>", line 2, in g
-      File "<stdin>", line 2, in f
-    ZeroDivisionError: integer division or modulo by zero
-    >>> k.next()  # and the generator cannot be resumed
-    Traceback (most recent call last):
-      File "<stdin>", line 1, in ?
-    StopIteration
-    >>>
-
-Specification: Try/Except/Finally
-
-    >>> def f():
-    ...     try:
-    ...         yield 1
-    ...         try:
-    ...             yield 2
-    ...             1//0
-    ...             yield 3  # never get here
-    ...         except ZeroDivisionError:
-    ...             yield 4
-    ...             yield 5
-    ...             raise
-    ...         except:
-    ...             yield 6
-    ...         yield 7     # the "raise" above stops this
-    ...     except:
-    ...         yield 8
-    ...     yield 9
-    ...     try:
-    ...         x = 12
-    ...     finally:
-    ...         yield 10
-    ...     yield 11
-    >>> print list(f())
-    [1, 2, 4, 5, 8, 9, 10, 11]
-    >>>
-
-Guido's binary tree example.
-
-    >>> # A binary tree class.
-    >>> class Tree:
-    ...
-    ...     def __init__(self, label, left=None, right=None):
-    ...         self.label = label
-    ...         self.left = left
-    ...         self.right = right
-    ...
-    ...     def __repr__(self, level=0, indent="    "):
-    ...         s = level*indent + repr(self.label)
-    ...         if self.left:
-    ...             s = s + "\\n" + self.left.__repr__(level+1, indent)
-    ...         if self.right:
-    ...             s = s + "\\n" + self.right.__repr__(level+1, indent)
-    ...         return s
-    ...
-    ...     def __iter__(self):
-    ...         return inorder(self)
-
-    >>> # Create a Tree from a list.
-    >>> def tree(list):
-    ...     n = len(list)
-    ...     if n == 0:
-    ...         return []
-    ...     i = n // 2
-    ...     return Tree(list[i], tree(list[:i]), tree(list[i+1:]))
-
-    >>> # Show it off: create a tree.
-    >>> t = tree("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
-
-    >>> # A recursive generator that generates Tree labels in in-order.
-    >>> def inorder(t):
-    ...     if t:
-    ...         for x in inorder(t.left):
-    ...             yield x
-    ...         yield t.label
-    ...         for x in inorder(t.right):
-    ...             yield x
-
-    >>> # Show it off: create a tree.
-    >>> t = tree("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
-    >>> # Print the nodes of the tree in in-order.
-    >>> for x in t:
-    ...     print x,
-    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
-
-    >>> # A non-recursive generator.
-    >>> def inorder(node):
-    ...     stack = []
-    ...     while node:
-    ...         while node.left:
-    ...             stack.append(node)
-    ...             node = node.left
-    ...         yield node.label
-    ...         while not node.right:
-    ...             try:
-    ...                 node = stack.pop()
-    ...             except IndexError:
-    ...                 return
-    ...             yield node.label
-    ...         node = node.right
-
-    >>> # Exercise the non-recursive generator.
-    >>> for x in t:
-    ...     print x,
-    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
-
-"""
-
-# Examples from Iterator-List and Python-Dev and c.l.py.
-
-email_tests = """
-
-The difference between yielding None and returning it.
-
->>> def g():
-...     for i in range(3):
-...         yield None
-...     yield None
-...     return
->>> list(g())
-[None, None, None, None]
-
-Ensure that explicitly raising StopIteration acts like any other exception
-in try/except, not like a return.
-
->>> def g():
-...     yield 1
-...     try:
-...         raise StopIteration
-...     except:
-...         yield 2
-...     yield 3
->>> list(g())
-[1, 2, 3]
-
-Next one was posted to c.l.py.
-
->>> def gcomb(x, k):
-...     "Generate all combinations of k elements from list x."
-...
-...     if k > len(x):
-...         return
-...     if k == 0:
-...         yield []
-...     else:
-...         first, rest = x[0], x[1:]
-...         # A combination does or doesn't contain first.
-...         # If it does, the remainder is a k-1 comb of rest.
-...         for c in gcomb(rest, k-1):
-...             c.insert(0, first)
-...             yield c
-...         # If it doesn't contain first, it's a k comb of rest.
-...         for c in gcomb(rest, k):
-...             yield c
-
->>> seq = range(1, 5)
->>> for k in range(len(seq) + 2):
-...     print "%d-combs of %s:" % (k, seq)
-...     for c in gcomb(seq, k):
-...         print "   ", c
-0-combs of [1, 2, 3, 4]:
-    []
-1-combs of [1, 2, 3, 4]:
-    [1]
-    [2]
-    [3]
-    [4]
-2-combs of [1, 2, 3, 4]:
-    [1, 2]
-    [1, 3]
-    [1, 4]
-    [2, 3]
-    [2, 4]
-    [3, 4]
-3-combs of [1, 2, 3, 4]:
-    [1, 2, 3]
-    [1, 2, 4]
-    [1, 3, 4]
-    [2, 3, 4]
-4-combs of [1, 2, 3, 4]:
-    [1, 2, 3, 4]
-5-combs of [1, 2, 3, 4]:
-
-From the Iterators list, about the types of these things.
-
->>> def g():
-...     yield 1
-...
->>> type(g)
-<type 'function'>
->>> i = g()
->>> type(i)
-<type 'generator'>
->>> [s for s in dir(i) if not s.startswith('_')]
-['close', 'gi_code', 'gi_frame', 'gi_running', 'next', 'send', 'throw']
->>> print i.next.__doc__
-x.next() -> the next value, or raise StopIteration
->>> iter(i) is i
-True
->>> import types
->>> isinstance(i, types.GeneratorType)
-True
-
-And more, added later.
-
->>> i.gi_running
-0
->>> type(i.gi_frame)
-<type 'frame'>
->>> i.gi_running = 42
-Traceback (most recent call last):
-  ...
-TypeError: readonly attribute
->>> def g():
-...     yield me.gi_running
->>> me = g()
->>> me.gi_running
-0
->>> me.next()
-1
->>> me.gi_running
-0
-
-A clever union-find implementation from c.l.py, due to David Eppstein.
-Sent: Friday, June 29, 2001 12:16 PM
-To: python-list@python.org
-Subject: Re: PEP 255: Simple Generators
-
->>> class disjointSet:
-...     def __init__(self, name):
-...         self.name = name
-...         self.parent = None
-...         self.generator = self.generate()
-...
-...     def generate(self):
-...         while not self.parent:
-...             yield self
-...         for x in self.parent.generator:
-...             yield x
-...
-...     def find(self):
-...         return self.generator.next()
-...
-...     def union(self, parent):
-...         if self.parent:
-...             raise ValueError("Sorry, I'm not a root!")
-...         self.parent = parent
-...
-...     def __str__(self):
-...         return self.name
-
->>> names = "ABCDEFGHIJKLM"
->>> sets = [disjointSet(name) for name in names]
->>> roots = sets[:]
-
->>> import random
->>> gen = random.WichmannHill(42)
->>> while 1:
-...     for s in sets:
-...         print "%s->%s" % (s, s.find()),
-...     print
-...     if len(roots) > 1:
-...         s1 = gen.choice(roots)
-...         roots.remove(s1)
-...         s2 = gen.choice(roots)
-...         s1.union(s2)
-...         print "merged", s1, "into", s2
-...     else:
-...         break
-A->A B->B C->C D->D E->E F->F G->G H->H I->I J->J K->K L->L M->M
-merged D into G
-A->A B->B C->C D->G E->E F->F G->G H->H I->I J->J K->K L->L M->M
-merged C into F
-A->A B->B C->F D->G E->E F->F G->G H->H I->I J->J K->K L->L M->M
-merged L into A
-A->A B->B C->F D->G E->E F->F G->G H->H I->I J->J K->K L->A M->M
-merged H into E
-A->A B->B C->F D->G E->E F->F G->G H->E I->I J->J K->K L->A M->M
-merged B into E
-A->A B->E C->F D->G E->E F->F G->G H->E I->I J->J K->K L->A M->M
-merged J into G
-A->A B->E C->F D->G E->E F->F G->G H->E I->I J->G K->K L->A M->M
-merged E into G
-A->A B->G C->F D->G E->G F->F G->G H->G I->I J->G K->K L->A M->M
-merged M into G
-A->A B->G C->F D->G E->G F->F G->G H->G I->I J->G K->K L->A M->G
-merged I into K
-A->A B->G C->F D->G E->G F->F G->G H->G I->K J->G K->K L->A M->G
-merged K into A
-A->A B->G C->F D->G E->G F->F G->G H->G I->A J->G K->A L->A M->G
-merged F into A
-A->A B->G C->A D->G E->G F->A G->G H->G I->A J->G K->A L->A M->G
-merged A into G
-A->G B->G C->G D->G E->G F->G G->G H->G I->G J->G K->G L->G M->G
-
-"""
-# Emacs turd '
-
-# Fun tests (for sufficiently warped notions of "fun").
-
-fun_tests = """
-
-Build up to a recursive Sieve of Eratosthenes generator.
-
->>> def firstn(g, n):
-...     return [g.next() for i in range(n)]
-
->>> def intsfrom(i):
-...     while 1:
-...         yield i
-...         i += 1
-
->>> firstn(intsfrom(5), 7)
-[5, 6, 7, 8, 9, 10, 11]
-
->>> def exclude_multiples(n, ints):
-...     for i in ints:
-...         if i % n:
-...             yield i
-
->>> firstn(exclude_multiples(3, intsfrom(1)), 6)
-[1, 2, 4, 5, 7, 8]
-
->>> def sieve(ints):
-...     prime = ints.next()
-...     yield prime
-...     not_divisible_by_prime = exclude_multiples(prime, ints)
-...     for p in sieve(not_divisible_by_prime):
-...         yield p
-
->>> primes = sieve(intsfrom(2))
->>> firstn(primes, 20)
-[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]
-
-
-Another famous problem:  generate all integers of the form
-    2**i * 3**j  * 5**k
-in increasing order, where i,j,k >= 0.  Trickier than it may look at first!
-Try writing it without generators, and correctly, and without generating
-3 internal results for each result output.
-
->>> def times(n, g):
-...     for i in g:
-...         yield n * i
->>> firstn(times(10, intsfrom(1)), 10)
-[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
-
->>> def merge(g, h):
-...     ng = g.next()
-...     nh = h.next()
-...     while 1:
-...         if ng < nh:
-...             yield ng
-...             ng = g.next()
-...         elif ng > nh:
-...             yield nh
-...             nh = h.next()
-...         else:
-...             yield ng
-...             ng = g.next()
-...             nh = h.next()
-
-The following works, but is doing a whale of a lot of redundant work --
-it's not clear how to get the internal uses of m235 to share a single
-generator.  Note that me_times2 (etc) each need to see every element in the
-result sequence.  So this is an example where lazy lists are more natural
-(you can look at the head of a lazy list any number of times).
-
->>> def m235():
-...     yield 1
-...     me_times2 = times(2, m235())
-...     me_times3 = times(3, m235())
-...     me_times5 = times(5, m235())
-...     for i in merge(merge(me_times2,
-...                          me_times3),
-...                    me_times5):
-...         yield i
-
-Don't print "too many" of these -- the implementation above is extremely
-inefficient:  each call of m235() leads to 3 recursive calls, and in
-turn each of those 3 more, and so on, and so on, until we've descended
-enough levels to satisfy the print stmts.  Very odd:  when I printed 5
-lines of results below, this managed to screw up Win98's malloc in "the
-usual" way, i.e. the heap grew over 4Mb so Win98 started fragmenting
-address space, and it *looked* like a very slow leak.
-
->>> result = m235()
->>> for i in range(3):
-...     print firstn(result, 15)
-[1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24]
-[25, 27, 30, 32, 36, 40, 45, 48, 50, 54, 60, 64, 72, 75, 80]
-[81, 90, 96, 100, 108, 120, 125, 128, 135, 144, 150, 160, 162, 180, 192]
-
-Heh.  Here's one way to get a shared list, complete with an excruciating
-namespace renaming trick.  The *pretty* part is that the times() and merge()
-functions can be reused as-is, because they only assume their stream
-arguments are iterable -- a LazyList is the same as a generator to times().
-
->>> class LazyList:
-...     def __init__(self, g):
-...         self.sofar = []
-...         self.fetch = g.next
-...
-...     def __getitem__(self, i):
-...         sofar, fetch = self.sofar, self.fetch
-...         while i >= len(sofar):
-...             sofar.append(fetch())
-...         return sofar[i]
-
->>> def m235():
-...     yield 1
-...     # Gack:  m235 below actually refers to a LazyList.
-...     me_times2 = times(2, m235)
-...     me_times3 = times(3, m235)
-...     me_times5 = times(5, m235)
-...     for i in merge(merge(me_times2,
-...                          me_times3),
-...                    me_times5):
-...         yield i
-
-Print as many of these as you like -- *this* implementation is memory-
-efficient.
-
->>> m235 = LazyList(m235())
->>> for i in range(5):
-...     print [m235[j] for j in range(15*i, 15*(i+1))]
-[1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24]
-[25, 27, 30, 32, 36, 40, 45, 48, 50, 54, 60, 64, 72, 75, 80]
-[81, 90, 96, 100, 108, 120, 125, 128, 135, 144, 150, 160, 162, 180, 192]
-[200, 216, 225, 240, 243, 250, 256, 270, 288, 300, 320, 324, 360, 375, 384]
-[400, 405, 432, 450, 480, 486, 500, 512, 540, 576, 600, 625, 640, 648, 675]
-
-Ye olde Fibonacci generator, LazyList style.
-
->>> def fibgen(a, b):
-...
-...     def sum(g, h):
-...         while 1:
-...             yield g.next() + h.next()
-...
-...     def tail(g):
-...         g.next()    # throw first away
-...         for x in g:
-...             yield x
-...
-...     yield a
-...     yield b
-...     for s in sum(iter(fib),
-...                  tail(iter(fib))):
-...         yield s
-
->>> fib = LazyList(fibgen(1, 2))
->>> firstn(iter(fib), 17)
-[1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584]
-
-
-Running after your tail with itertools.tee (new in version 2.4)
-
-The algorithms "m235" (Hamming) and Fibonacci presented above are both
-examples of a whole family of FP (functional programming) algorithms
-where a function produces and returns a list while the production algorithm
-suppose the list as already produced by recursively calling itself.
-For these algorithms to work, they must:
-
-- produce at least a first element without presupposing the existence of
-  the rest of the list
-- produce their elements in a lazy manner
-
-To work efficiently, the beginning of the list must not be recomputed over
-and over again. This is ensured in most FP languages as a built-in feature.
-In python, we have to explicitly maintain a list of already computed results
-and abandon genuine recursivity.
-
-This is what had been attempted above with the LazyList class. One problem
-with that class is that it keeps a list of all of the generated results and
-therefore continually grows. This partially defeats the goal of the generator
-concept, viz. produce the results only as needed instead of producing them
-all and thereby wasting memory.
-
-Thanks to itertools.tee, it is now clear "how to get the internal uses of
-m235 to share a single generator".
-
->>> from itertools import tee
->>> def m235():
-...     def _m235():
-...         yield 1
-...         for n in merge(times(2, m2),
-...                        merge(times(3, m3),
-...                              times(5, m5))):
-...             yield n
-...     m1 = _m235()
-...     m2, m3, m5, mRes = tee(m1, 4)
-...     return mRes
-
->>> it = m235()
->>> for i in range(5):
-...     print firstn(it, 15)
-[1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24]
-[25, 27, 30, 32, 36, 40, 45, 48, 50, 54, 60, 64, 72, 75, 80]
-[81, 90, 96, 100, 108, 120, 125, 128, 135, 144, 150, 160, 162, 180, 192]
-[200, 216, 225, 240, 243, 250, 256, 270, 288, 300, 320, 324, 360, 375, 384]
-[400, 405, 432, 450, 480, 486, 500, 512, 540, 576, 600, 625, 640, 648, 675]
-
-The "tee" function does just what we want. It internally keeps a generated
-result for as long as it has not been "consumed" from all of the duplicated
-iterators, whereupon it is deleted. You can therefore print the hamming
-sequence during hours without increasing memory usage, or very little.
-
-The beauty of it is that recursive running-after-their-tail FP algorithms
-are quite straightforwardly expressed with this Python idiom.
-
-Ye olde Fibonacci generator, tee style.
-
->>> def fib():
-...
-...     def _isum(g, h):
-...         while 1:
-...             yield g.next() + h.next()
-...
-...     def _fib():
-...         yield 1
-...         yield 2
-...         fibTail.next() # throw first away
-...         for res in _isum(fibHead, fibTail):
-...             yield res
-...
-...     realfib = _fib()
-...     fibHead, fibTail, fibRes = tee(realfib, 3)
-...     return fibRes
-
->>> firstn(fib(), 17)
-[1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584]
-
-"""
-
-# syntax_tests mostly provokes SyntaxErrors.  Also fiddling with #if 0
-# hackery.
-
-syntax_tests = """
-
->>> def f():
-...     return 22
-...     yield 1
-Traceback (most recent call last):
-  ..
-SyntaxError: 'return' with argument inside generator (<doctest test.test_generators.__test__.syntax[0]>, line 3)
-
->>> def f():
-...     yield 1
-...     return 22
-Traceback (most recent call last):
-  ..
-SyntaxError: 'return' with argument inside generator (<doctest test.test_generators.__test__.syntax[1]>, line 3)
-
-"return None" is not the same as "return" in a generator:
-
->>> def f():
-...     yield 1
-...     return None
-Traceback (most recent call last):
-  ..
-SyntaxError: 'return' with argument inside generator (<doctest test.test_generators.__test__.syntax[2]>, line 3)
-
-These are fine:
-
->>> def f():
-...     yield 1
-...     return
-
->>> def f():
-...     try:
-...         yield 1
-...     finally:
-...         pass
-
->>> def f():
-...     try:
-...         try:
-...             1//0
-...         except ZeroDivisionError:
-...             yield 666
-...         except:
-...             pass
-...     finally:
-...         pass
-
->>> def f():
-...     try:
-...         try:
-...             yield 12
-...             1//0
-...         except ZeroDivisionError:
-...             yield 666
-...         except:
-...             try:
-...                 x = 12
-...             finally:
-...                 yield 12
-...     except:
-...         return
->>> list(f())
-[12, 666]
-
->>> def f():
-...    yield
->>> type(f())
-<type 'generator'>
-
-
->>> def f():
-...    if 0:
-...        yield
->>> type(f())
-<type 'generator'>
-
-
->>> def f():
-...     if 0:
-...         yield 1
->>> type(f())
-<type 'generator'>
-
->>> def f():
-...    if "":
-...        yield None
->>> type(f())
-<type 'generator'>
-
->>> def f():
-...     return
-...     try:
-...         if x==4:
-...             pass
-...         elif 0:
-...             try:
-...                 1//0
-...             except SyntaxError:
-...                 pass
-...             else:
-...                 if 0:
-...                     while 12:
-...                         x += 1
-...                         yield 2 # don't blink
-...                         f(a, b, c, d, e)
-...         else:
-...             pass
-...     except:
-...         x = 1
-...     return
->>> type(f())
-<type 'generator'>
-
->>> def f():
-...     if 0:
-...         def g():
-...             yield 1
-...
->>> type(f())
-<type 'NoneType'>
-
->>> def f():
-...     if 0:
-...         class C:
-...             def __init__(self):
-...                 yield 1
-...             def f(self):
-...                 yield 2
->>> type(f())
-<type 'NoneType'>
-
->>> def f():
-...     if 0:
-...         return
-...     if 0:
-...         yield 2
->>> type(f())
-<type 'generator'>
-
-
->>> def f():
-...     if 0:
-...         lambda x:  x        # shouldn't trigger here
-...         return              # or here
-...         def f(i):
-...             return 2*i      # or here
-...         if 0:
-...             return 3        # but *this* sucks (line 8)
-...     if 0:
-...         yield 2             # because it's a generator (line 10)
-Traceback (most recent call last):
-SyntaxError: 'return' with argument inside generator (<doctest test.test_generators.__test__.syntax[24]>, line 10)
-
-This one caused a crash (see SF bug 567538):
-
->>> def f():
-...     for i in range(3):
-...         try:
-...             continue
-...         finally:
-...             yield i
-...
->>> g = f()
->>> print g.next()
-0
->>> print g.next()
-1
->>> print g.next()
-2
->>> print g.next()
-Traceback (most recent call last):
-StopIteration
-
-
-Test the gi_code attribute
-
->>> def f():
-...     yield 5
-...
->>> g = f()
->>> g.gi_code is f.func_code
-True
->>> g.next()
-5
->>> g.next()
-Traceback (most recent call last):
-StopIteration
->>> g.gi_code is f.func_code
-True
-
-
-Test the __name__ attribute and the repr()
-
->>> def f():
-...    yield 5
-...
->>> g = f()
->>> g.__name__
-'f'
->>> repr(g)  # doctest: +ELLIPSIS
-'<generator object f at ...>'
-
-Lambdas shouldn't have their usual return behavior.
-
->>> x = lambda: (yield 1)
->>> list(x())
-[1]
-
->>> x = lambda: ((yield 1), (yield 2))
->>> list(x())
-[1, 2]
-"""
-
-# conjoin is a simple backtracking generator, named in honor of Icon's
-# "conjunction" control structure.  Pass a list of no-argument functions
-# that return iterable objects.  Easiest to explain by example:  assume the
-# function list [x, y, z] is passed.  Then conjoin acts like:
-#
-# def g():
-#     values = [None] * 3
-#     for values[0] in x():
-#         for values[1] in y():
-#             for values[2] in z():
-#                 yield values
-#
-# So some 3-lists of values *may* be generated, each time we successfully
-# get into the innermost loop.  If an iterator fails (is exhausted) before
-# then, it "backtracks" to get the next value from the nearest enclosing
-# iterator (the one "to the left"), and starts all over again at the next
-# slot (pumps a fresh iterator).  Of course this is most useful when the
-# iterators have side-effects, so that which values *can* be generated at
-# each slot depend on the values iterated at previous slots.
-
-def simple_conjoin(gs):
-
-    values = [None] * len(gs)
-
-    def gen(i):
-        if i >= len(gs):
-            yield values
-        else:
-            for values[i] in gs[i]():
-                for x in gen(i+1):
-                    yield x
-
-    for x in gen(0):
-        yield x
-
-# That works fine, but recursing a level and checking i against len(gs) for
-# each item produced is inefficient.  By doing manual loop unrolling across
-# generator boundaries, it's possible to eliminate most of that overhead.
-# This isn't worth the bother *in general* for generators, but conjoin() is
-# a core building block for some CPU-intensive generator applications.
-
-def conjoin(gs):
-
-    n = len(gs)
-    values = [None] * n
-
-    # Do one loop nest at time recursively, until the # of loop nests
-    # remaining is divisible by 3.
-
-    def gen(i):
-        if i >= n:
-            yield values
-
-        elif (n-i) % 3:
-            ip1 = i+1
-            for values[i] in gs[i]():
-                for x in gen(ip1):
-                    yield x
-
-        else:
-            for x in _gen3(i):
-                yield x
-
-    # Do three loop nests at a time, recursing only if at least three more
-    # remain.  Don't call directly:  this is an internal optimization for
-    # gen's use.
-
-    def _gen3(i):
-        assert i < n and (n-i) % 3 == 0
-        ip1, ip2, ip3 = i+1, i+2, i+3
-        g, g1, g2 = gs[i : ip3]
-
-        if ip3 >= n:
-            # These are the last three, so we can yield values directly.
-            for values[i] in g():
-                for values[ip1] in g1():
-                    for values[ip2] in g2():
-                        yield values
-
-        else:
-            # At least 6 loop nests remain; peel off 3 and recurse for the
-            # rest.
-            for values[i] in g():
-                for values[ip1] in g1():
-                    for values[ip2] in g2():
-                        for x in _gen3(ip3):
-                            yield x
-
-    for x in gen(0):
-        yield x
-
-# And one more approach:  For backtracking apps like the Knight's Tour
-# solver below, the number of backtracking levels can be enormous (one
-# level per square, for the Knight's Tour, so that e.g. a 100x100 board
-# needs 10,000 levels).  In such cases Python is likely to run out of
-# stack space due to recursion.  So here's a recursion-free version of
-# conjoin too.
-# NOTE WELL:  This allows large problems to be solved with only trivial
-# demands on stack space.  Without explicitly resumable generators, this is
-# much harder to achieve.  OTOH, this is much slower (up to a factor of 2)
-# than the fancy unrolled recursive conjoin.
-
-def flat_conjoin(gs):  # rename to conjoin to run tests with this instead
-    n = len(gs)
-    values = [None] * n
-    iters  = [None] * n
-    _StopIteration = StopIteration  # make local because caught a *lot*
-    i = 0
-    while 1:
-        # Descend.
-        try:
-            while i < n:
-                it = iters[i] = gs[i]().next
-                values[i] = it()
-                i += 1
-        except _StopIteration:
-            pass
-        else:
-            assert i == n
-            yield values
-
-        # Backtrack until an older iterator can be resumed.
-        i -= 1
-        while i >= 0:
-            try:
-                values[i] = iters[i]()
-                # Success!  Start fresh at next level.
-                i += 1
-                break
-            except _StopIteration:
-                # Continue backtracking.
-                i -= 1
-        else:
-            assert i < 0
-            break
-
-# A conjoin-based N-Queens solver.
-
-class Queens:
-    def __init__(self, n):
-        self.n = n
-        rangen = range(n)
-
-        # Assign a unique int to each column and diagonal.
-        # columns:  n of those, range(n).
-        # NW-SE diagonals: 2n-1 of these, i-j unique and invariant along
-        # each, smallest i-j is 0-(n-1) = 1-n, so add n-1 to shift to 0-
-        # based.
-        # NE-SW diagonals: 2n-1 of these, i+j unique and invariant along
-        # each, smallest i+j is 0, largest is 2n-2.
-
-        # For each square, compute a bit vector of the columns and
-        # diagonals it covers, and for each row compute a function that
-        # generates the possiblities for the columns in that row.
-        self.rowgenerators = []
-        for i in rangen:
-            rowuses = [(1L << j) |                  # column ordinal
-                       (1L << (n + i-j + n-1)) |    # NW-SE ordinal
-                       (1L << (n + 2*n-1 + i+j))    # NE-SW ordinal
-                            for j in rangen]
-
-            def rowgen(rowuses=rowuses):
-                for j in rangen:
-                    uses = rowuses[j]
-                    if uses & self.used == 0:
-                        self.used |= uses
-                        yield j
-                        self.used &= ~uses
-
-            self.rowgenerators.append(rowgen)
-
-    # Generate solutions.
-    def solve(self):
-        self.used = 0
-        for row2col in conjoin(self.rowgenerators):
-            yield row2col
-
-    def printsolution(self, row2col):
-        n = self.n
-        assert n == len(row2col)
-        sep = "+" + "-+" * n
-        print sep
-        for i in range(n):
-            squares = [" " for j in range(n)]
-            squares[row2col[i]] = "Q"
-            print "|" + "|".join(squares) + "|"
-            print sep
-
-# A conjoin-based Knight's Tour solver.  This is pretty sophisticated
-# (e.g., when used with flat_conjoin above, and passing hard=1 to the
-# constructor, a 200x200 Knight's Tour was found quickly -- note that we're
-# creating 10s of thousands of generators then!), and is lengthy.
-
-class Knights:
-    def __init__(self, m, n, hard=0):
-        self.m, self.n = m, n
-
-        # solve() will set up succs[i] to be a list of square #i's
-        # successors.
-        succs = self.succs = []
-
-        # Remove i0 from each of its successor's successor lists, i.e.
-        # successors can't go back to i0 again.  Return 0 if we can
-        # detect this makes a solution impossible, else return 1.
-
-        def remove_from_successors(i0, len=len):
-            # If we remove all exits from a free square, we're dead:
-            # even if we move to it next, we can't leave it again.
-            # If we create a square with one exit, we must visit it next;
-            # else somebody else will have to visit it, and since there's
-            # only one adjacent, there won't be a way to leave it again.
-            # Finelly, if we create more than one free square with a
-            # single exit, we can only move to one of them next, leaving
-            # the other one a dead end.
-            ne0 = ne1 = 0
-            for i in succs[i0]:
-                s = succs[i]
-                s.remove(i0)
-                e = len(s)
-                if e == 0:
-                    ne0 += 1
-                elif e == 1:
-                    ne1 += 1
-            return ne0 == 0 and ne1 < 2
-
-        # Put i0 back in each of its successor's successor lists.
-
-        def add_to_successors(i0):
-            for i in succs[i0]:
-                succs[i].append(i0)
-
-        # Generate the first move.
-        def first():
-            if m < 1 or n < 1:
-                return
-
-            # Since we're looking for a cycle, it doesn't matter where we
-            # start.  Starting in a corner makes the 2nd move easy.
-            corner = self.coords2index(0, 0)
-            remove_from_successors(corner)
-            self.lastij = corner
-            yield corner
-            add_to_successors(corner)
-
-        # Generate the second moves.
-        def second():
-            corner = self.coords2index(0, 0)
-            assert self.lastij == corner  # i.e., we started in the corner
-            if m < 3 or n < 3:
-                return
-            assert len(succs[corner]) == 2
-            assert self.coords2index(1, 2) in succs[corner]
-            assert self.coords2index(2, 1) in succs[corner]
-            # Only two choices.  Whichever we pick, the other must be the
-            # square picked on move m*n, as it's the only way to get back
-            # to (0, 0).  Save its index in self.final so that moves before
-            # the last know it must be kept free.
-            for i, j in (1, 2), (2, 1):
-                this  = self.coords2index(i, j)
-                final = self.coords2index(3-i, 3-j)
-                self.final = final
-
-                remove_from_successors(this)
-                succs[final].append(corner)
-                self.lastij = this
-                yield this
-                succs[final].remove(corner)
-                add_to_successors(this)
-
-        # Generate moves 3 thru m*n-1.
-        def advance(len=len):
-            # If some successor has only one exit, must take it.
-            # Else favor successors with fewer exits.
-            candidates = []
-            for i in succs[self.lastij]:
-                e = len(succs[i])
-                assert e > 0, "else remove_from_successors() pruning flawed"
-                if e == 1:
-                    candidates = [(e, i)]
-                    break
-                candidates.append((e, i))
-            else:
-                candidates.sort()
-
-            for e, i in candidates:
-                if i != self.final:
-                    if remove_from_successors(i):
-                        self.lastij = i
-                        yield i
-                    add_to_successors(i)
-
-        # Generate moves 3 thru m*n-1.  Alternative version using a
-        # stronger (but more expensive) heuristic to order successors.
-        # Since the # of backtracking levels is m*n, a poor move early on
-        # can take eons to undo.  Smallest square board for which this
-        # matters a lot is 52x52.
-        def advance_hard(vmid=(m-1)/2.0, hmid=(n-1)/2.0, len=len):
-            # If some successor has only one exit, must take it.
-            # Else favor successors with fewer exits.
-            # Break ties via max distance from board centerpoint (favor
-            # corners and edges whenever possible).
-            candidates = []
-            for i in succs[self.lastij]:
-                e = len(succs[i])
-                assert e > 0, "else remove_from_successors() pruning flawed"
-                if e == 1:
-                    candidates = [(e, 0, i)]
-                    break
-                i1, j1 = self.index2coords(i)
-                d = (i1 - vmid)**2 + (j1 - hmid)**2
-                candidates.append((e, -d, i))
-            else:
-                candidates.sort()
-
-            for e, d, i in candidates:
-                if i != self.final:
-                    if remove_from_successors(i):
-                        self.lastij = i
-                        yield i
-                    add_to_successors(i)
-
-        # Generate the last move.
-        def last():
-            assert self.final in succs[self.lastij]
-            yield self.final
-
-        if m*n < 4:
-            self.squaregenerators = [first]
-        else:
-            self.squaregenerators = [first, second] + \
-                [hard and advance_hard or advance] * (m*n - 3) + \
-                [last]
-
-    def coords2index(self, i, j):
-        assert 0 <= i < self.m
-        assert 0 <= j < self.n
-        return i * self.n + j
-
-    def index2coords(self, index):
-        assert 0 <= index < self.m * self.n
-        return divmod(index, self.n)
-
-    def _init_board(self):
-        succs = self.succs
-        del succs[:]
-        m, n = self.m, self.n
-        c2i = self.coords2index
-
-        offsets = [( 1,  2), ( 2,  1), ( 2, -1), ( 1, -2),
-                   (-1, -2), (-2, -1), (-2,  1), (-1,  2)]
-        rangen = range(n)
-        for i in range(m):
-            for j in rangen:
-                s = [c2i(i+io, j+jo) for io, jo in offsets
-                                     if 0 <= i+io < m and
-                                        0 <= j+jo < n]
-                succs.append(s)
-
-    # Generate solutions.
-    def solve(self):
-        self._init_board()
-        for x in conjoin(self.squaregenerators):
-            yield x
-
-    def printsolution(self, x):
-        m, n = self.m, self.n
-        assert len(x) == m*n
-        w = len(str(m*n))
-        format = "%" + str(w) + "d"
-
-        squares = [[None] * n for i in range(m)]
-        k = 1
-        for i in x:
-            i1, j1 = self.index2coords(i)
-            squares[i1][j1] = format % k
-            k += 1
-
-        sep = "+" + ("-" * w + "+") * n
-        print sep
-        for i in range(m):
-            row = squares[i]
-            print "|" + "|".join(row) + "|"
-            print sep
-
-conjoin_tests = """
-
-Generate the 3-bit binary numbers in order.  This illustrates dumbest-
-possible use of conjoin, just to generate the full cross-product.
-
->>> for c in conjoin([lambda: iter((0, 1))] * 3):
-...     print c
-[0, 0, 0]
-[0, 0, 1]
-[0, 1, 0]
-[0, 1, 1]
-[1, 0, 0]
-[1, 0, 1]
-[1, 1, 0]
-[1, 1, 1]
-
-For efficiency in typical backtracking apps, conjoin() yields the same list
-object each time.  So if you want to save away a full account of its
-generated sequence, you need to copy its results.
-
->>> def gencopy(iterator):
-...     for x in iterator:
-...         yield x[:]
-
->>> for n in range(10):
-...     all = list(gencopy(conjoin([lambda: iter((0, 1))] * n)))
-...     print n, len(all), all[0] == [0] * n, all[-1] == [1] * n
-0 1 True True
-1 2 True True
-2 4 True True
-3 8 True True
-4 16 True True
-5 32 True True
-6 64 True True
-7 128 True True
-8 256 True True
-9 512 True True
-
-And run an 8-queens solver.
-
->>> q = Queens(8)
->>> LIMIT = 2
->>> count = 0
->>> for row2col in q.solve():
-...     count += 1
-...     if count <= LIMIT:
-...         print "Solution", count
-...         q.printsolution(row2col)
-Solution 1
-+-+-+-+-+-+-+-+-+
-|Q| | | | | | | |
-+-+-+-+-+-+-+-+-+
-| | | | |Q| | | |
-+-+-+-+-+-+-+-+-+
-| | | | | | | |Q|
-+-+-+-+-+-+-+-+-+
-| | | | | |Q| | |
-+-+-+-+-+-+-+-+-+
-| | |Q| | | | | |
-+-+-+-+-+-+-+-+-+
-| | | | | | |Q| |
-+-+-+-+-+-+-+-+-+
-| |Q| | | | | | |
-+-+-+-+-+-+-+-+-+
-| | | |Q| | | | |
-+-+-+-+-+-+-+-+-+
-Solution 2
-+-+-+-+-+-+-+-+-+
-|Q| | | | | | | |
-+-+-+-+-+-+-+-+-+
-| | | | | |Q| | |
-+-+-+-+-+-+-+-+-+
-| | | | | | | |Q|
-+-+-+-+-+-+-+-+-+
-| | |Q| | | | | |
-+-+-+-+-+-+-+-+-+
-| | | | | | |Q| |
-+-+-+-+-+-+-+-+-+
-| | | |Q| | | | |
-+-+-+-+-+-+-+-+-+
-| |Q| | | | | | |
-+-+-+-+-+-+-+-+-+
-| | | | |Q| | | |
-+-+-+-+-+-+-+-+-+
-
->>> print count, "solutions in all."
-92 solutions in all.
-
-And run a Knight's Tour on a 10x10 board.  Note that there are about
-20,000 solutions even on a 6x6 board, so don't dare run this to exhaustion.
-
->>> k = Knights(10, 10)
->>> LIMIT = 2
->>> count = 0
->>> for x in k.solve():
-...     count += 1
-...     if count <= LIMIT:
-...         print "Solution", count
-...         k.printsolution(x)
-...     else:
-...         break
-Solution 1
-+---+---+---+---+---+---+---+---+---+---+
-|  1| 58| 27| 34|  3| 40| 29| 10|  5|  8|
-+---+---+---+---+---+---+---+---+---+---+
-| 26| 35|  2| 57| 28| 33|  4|  7| 30| 11|
-+---+---+---+---+---+---+---+---+---+---+
-| 59|100| 73| 36| 41| 56| 39| 32|  9|  6|
-+---+---+---+---+---+---+---+---+---+---+
-| 74| 25| 60| 55| 72| 37| 42| 49| 12| 31|
-+---+---+---+---+---+---+---+---+---+---+
-| 61| 86| 99| 76| 63| 52| 47| 38| 43| 50|
-+---+---+---+---+---+---+---+---+---+---+
-| 24| 75| 62| 85| 54| 71| 64| 51| 48| 13|
-+---+---+---+---+---+---+---+---+---+---+
-| 87| 98| 91| 80| 77| 84| 53| 46| 65| 44|
-+---+---+---+---+---+---+---+---+---+---+
-| 90| 23| 88| 95| 70| 79| 68| 83| 14| 17|
-+---+---+---+---+---+---+---+---+---+---+
-| 97| 92| 21| 78| 81| 94| 19| 16| 45| 66|
-+---+---+---+---+---+---+---+---+---+---+
-| 22| 89| 96| 93| 20| 69| 82| 67| 18| 15|
-+---+---+---+---+---+---+---+---+---+---+
-Solution 2
-+---+---+---+---+---+---+---+---+---+---+
-|  1| 58| 27| 34|  3| 40| 29| 10|  5|  8|
-+---+---+---+---+---+---+---+---+---+---+
-| 26| 35|  2| 57| 28| 33|  4|  7| 30| 11|
-+---+---+---+---+---+---+---+---+---+---+
-| 59|100| 73| 36| 41| 56| 39| 32|  9|  6|
-+---+---+---+---+---+---+---+---+---+---+
-| 74| 25| 60| 55| 72| 37| 42| 49| 12| 31|
-+---+---+---+---+---+---+---+---+---+---+
-| 61| 86| 99| 76| 63| 52| 47| 38| 43| 50|
-+---+---+---+---+---+---+---+---+---+---+
-| 24| 75| 62| 85| 54| 71| 64| 51| 48| 13|
-+---+---+---+---+---+---+---+---+---+---+
-| 87| 98| 89| 80| 77| 84| 53| 46| 65| 44|
-+---+---+---+---+---+---+---+---+---+---+
-| 90| 23| 92| 95| 70| 79| 68| 83| 14| 17|
-+---+---+---+---+---+---+---+---+---+---+
-| 97| 88| 21| 78| 81| 94| 19| 16| 45| 66|
-+---+---+---+---+---+---+---+---+---+---+
-| 22| 91| 96| 93| 20| 69| 82| 67| 18| 15|
-+---+---+---+---+---+---+---+---+---+---+
-"""
-
-weakref_tests = """\
-Generators are weakly referencable:
-
->>> import weakref
->>> def gen():
-...     yield 'foo!'
-...
->>> wr = weakref.ref(gen)
->>> wr() is gen
-True
->>> p = weakref.proxy(gen)
-
-Generator-iterators are weakly referencable as well:
-
->>> gi = gen()
->>> wr = weakref.ref(gi)
->>> wr() is gi
-True
->>> p = weakref.proxy(gi)
->>> list(p)
-['foo!']
-
-"""
-
-coroutine_tests = """\
-Sending a value into a started generator:
-
->>> def f():
-...     print (yield 1)
-...     yield 2
->>> g = f()
->>> g.next()
-1
->>> g.send(42)
-42
-2
-
-Sending a value into a new generator produces a TypeError:
-
->>> f().send("foo")
-Traceback (most recent call last):
-...
-TypeError: can't send non-None value to a just-started generator
-
-
-Yield by itself yields None:
-
->>> def f(): yield
->>> list(f())
-[None]
-
-
-
-An obscene abuse of a yield expression within a generator expression:
-
->>> list((yield 21) for i in range(4))
-[21, None, 21, None, 21, None, 21, None]
-
-And a more sane, but still weird usage:
-
->>> def f(): list(i for i in [(yield 26)])
->>> type(f())
-<type 'generator'>
-
-
-A yield expression with augmented assignment.
-
->>> def coroutine(seq):
-...     count = 0
-...     while count < 200:
-...         count += yield
-...         seq.append(count)
->>> seq = []
->>> c = coroutine(seq)
->>> c.next()
->>> print seq
-[]
->>> c.send(10)
->>> print seq
-[10]
->>> c.send(10)
->>> print seq
-[10, 20]
->>> c.send(10)
->>> print seq
-[10, 20, 30]
-
-
-Check some syntax errors for yield expressions:
-
->>> f=lambda: (yield 1),(yield 2)
-Traceback (most recent call last):
-  ...
-  File "<doctest test.test_generators.__test__.coroutine[21]>", line 1
-SyntaxError: 'yield' outside function
-
->>> def f(): return lambda x=(yield): 1
-Traceback (most recent call last):
-  ...
-SyntaxError: 'return' with argument inside generator (<doctest test.test_generators.__test__.coroutine[22]>, line 1)
-
->>> def f(): x = yield = y
-Traceback (most recent call last):
-  ...
-  File "<doctest test.test_generators.__test__.coroutine[23]>", line 1
-SyntaxError: assignment to yield expression not possible
-
->>> def f(): (yield bar) = y
-Traceback (most recent call last):
-  ...
-  File "<doctest test.test_generators.__test__.coroutine[24]>", line 1
-SyntaxError: can't assign to yield expression
-
->>> def f(): (yield bar) += y
-Traceback (most recent call last):
-  ...
-  File "<doctest test.test_generators.__test__.coroutine[25]>", line 1
-SyntaxError: can't assign to yield expression
-
-
-Now check some throw() conditions:
-
->>> def f():
-...     while True:
-...         try:
-...             print (yield)
-...         except ValueError,v:
-...             print "caught ValueError (%s)" % (v),
->>> import sys
->>> g = f()
->>> g.next()
-
->>> g.throw(ValueError) # type only
-caught ValueError ()
-
->>> g.throw(ValueError("xyz"))  # value only
-caught ValueError (xyz)
-
->>> g.throw(ValueError, ValueError(1))   # value+matching type
-caught ValueError (1)
-
->>> g.throw(ValueError, TypeError(1))  # mismatched type, rewrapped
-caught ValueError (1)
-
->>> g.throw(ValueError, ValueError(1), None)   # explicit None traceback
-caught ValueError (1)
-
->>> g.throw(ValueError(1), "foo")       # bad args
-Traceback (most recent call last):
-  ...
-TypeError: instance exception may not have a separate value
-
->>> g.throw(ValueError, "foo", 23)      # bad args
-Traceback (most recent call last):
-  ...
-TypeError: throw() third argument must be a traceback object
-
->>> def throw(g,exc):
-...     try:
-...         raise exc
-...     except:
-...         g.throw(*sys.exc_info())
->>> throw(g,ValueError) # do it with traceback included
-caught ValueError ()
-
->>> g.send(1)
-1
-
->>> throw(g,TypeError)  # terminate the generator
-Traceback (most recent call last):
-  ...
-TypeError
-
->>> print g.gi_frame
-None
-
->>> g.send(2)
-Traceback (most recent call last):
-  ...
-StopIteration
-
->>> g.throw(ValueError,6)       # throw on closed generator
-Traceback (most recent call last):
-  ...
-ValueError: 6
-
->>> f().throw(ValueError,7)     # throw on just-opened generator
-Traceback (most recent call last):
-  ...
-ValueError: 7
-
->>> f().throw("abc")     # throw on just-opened generator
-Traceback (most recent call last):
-  ...
-TypeError: exceptions must be classes, or instances, not str
-
-Now let's try closing a generator:
-
->>> def f():
-...     try: yield
-...     except GeneratorExit:
-...         print "exiting"
-
->>> g = f()
->>> g.next()
->>> g.close()
-exiting
->>> g.close()  # should be no-op now
-
->>> f().close()  # close on just-opened generator should be fine
-
->>> def f(): yield      # an even simpler generator
->>> f().close()         # close before opening
->>> g = f()
->>> g.next()
->>> g.close()           # close normally
-
-And finalization:
-
->>> def f():
-...     try: yield
-...     finally:
-...         print "exiting"
-
->>> g = f()
->>> g.next()
->>> del g
-exiting
-
->>> class context(object):
-...    def __enter__(self): pass
-...    def __exit__(self, *args): print 'exiting'
->>> def f():
-...     with context():
-...          yield
->>> g = f()
->>> g.next()
->>> del g
-exiting
-
-
-GeneratorExit is not caught by except Exception:
-
->>> def f():
-...     try: yield
-...     except Exception: print 'except'
-...     finally: print 'finally'
-
->>> g = f()
->>> g.next()
->>> del g
-finally
-
-
-Now let's try some ill-behaved generators:
-
->>> def f():
-...     try: yield
-...     except GeneratorExit:
-...         yield "foo!"
->>> g = f()
->>> g.next()
->>> g.close()
-Traceback (most recent call last):
-  ...
-RuntimeError: generator ignored GeneratorExit
->>> g.close()
-
-
-Our ill-behaved code should be invoked during GC:
-
->>> import sys, StringIO
->>> old, sys.stderr = sys.stderr, StringIO.StringIO()
->>> g = f()
->>> g.next()
->>> del g
->>> sys.stderr.getvalue().startswith(
-...     "Exception RuntimeError: 'generator ignored GeneratorExit' in "
-... )
-True
->>> sys.stderr = old
-
-
-And errors thrown during closing should propagate:
-
->>> def f():
-...     try: yield
-...     except GeneratorExit:
-...         raise TypeError("fie!")
->>> g = f()
->>> g.next()
->>> g.close()
-Traceback (most recent call last):
-  ...
-TypeError: fie!
-
-
-Ensure that various yield expression constructs make their
-enclosing function a generator:
-
->>> def f(): x += yield
->>> type(f())
-<type 'generator'>
-
->>> def f(): x = yield
->>> type(f())
-<type 'generator'>
-
->>> def f(): lambda x=(yield): 1
->>> type(f())
-<type 'generator'>
-
->>> def f(): x=(i for i in (yield) if (yield))
->>> type(f())
-<type 'generator'>
-
->>> def f(d): d[(yield "a")] = d[(yield "b")] = 27
->>> data = [1,2]
->>> g = f(data)
->>> type(g)
-<type 'generator'>
->>> g.send(None)
-'a'
->>> data
-[1, 2]
->>> g.send(0)
-'b'
->>> data
-[27, 2]
->>> try: g.send(1)
-... except StopIteration: pass
->>> data
-[27, 27]
-
-"""
-
-refleaks_tests = """
-Prior to adding cycle-GC support to itertools.tee, this code would leak
-references. We add it to the standard suite so the routine refleak-tests
-would trigger if it starts being uncleanable again.
-
->>> import itertools
->>> def leak():
-...     class gen:
-...         def __iter__(self):
-...             return self
-...         def next(self):
-...             return self.item
-...     g = gen()
-...     head, tail = itertools.tee(g)
-...     g.item = head
-...     return head
->>> it = leak()
-
-Make sure to also test the involvement of the tee-internal teedataobject,
-which stores returned items.
-
->>> item = it.next()
-
-
-
-This test leaked at one point due to generator finalization/destruction.
-It was copied from Lib/test/leakers/test_generator_cycle.py before the file
-was removed.
-
->>> def leak():
-...    def gen():
-...        while True:
-...            yield g
-...    g = gen()
-
->>> leak()
-
-
-
-This test isn't really generator related, but rather exception-in-cleanup
-related. The coroutine tests (above) just happen to cause an exception in
-the generator's __del__ (tp_del) method. We can also test for this
-explicitly, without generators. We do have to redirect stderr to avoid
-printing warnings and to doublecheck that we actually tested what we wanted
-to test.
-
->>> import sys, StringIO
->>> old = sys.stderr
->>> try:
-...     sys.stderr = StringIO.StringIO()
-...     class Leaker:
-...         def __del__(self):
-...             raise RuntimeError
-...
-...     l = Leaker()
-...     del l
-...     err = sys.stderr.getvalue().strip()
-...     err.startswith(
-...         "Exception RuntimeError: RuntimeError() in <"
-...     )
-...     err.endswith("> ignored")
-...     len(err.splitlines())
-... finally:
-...     sys.stderr = old
-True
-True
-1
-
-
-
-These refleak tests should perhaps be in a testfile of their own,
-test_generators just happened to be the test that drew these out.
-
-"""
-
-__test__ = {"tut":      tutorial_tests,
-            "pep":      pep_tests,
-            "email":    email_tests,
-            "fun":      fun_tests,
-            "syntax":   syntax_tests,
-            "conjoin":  conjoin_tests,
-            "weakref":  weakref_tests,
-            "coroutine":  coroutine_tests,
-            "refleaks": refleaks_tests,
-            }
-
-# Magic test name that regrtest.py invokes *after* importing this module.
-# This worms around a bootstrap problem.
-# Note that doctest and regrtest both look in sys.argv for a "-v" argument,
-# so this works as expected in both ways of running regrtest.
-def test_main(verbose=None):
-    from test import test_support, test_generators
-    test_support.run_doctest(test_generators, verbose)
-
-# This part isn't needed for regrtest, but for running the test directly.
-if __name__ == "__main__":
-    test_main(1)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_genericpath.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_genericpath.py
deleted file mode 100644
index 88d8587..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_genericpath.py
+++ /dev/null
@@ -1,256 +0,0 @@
-"""
-Tests common to genericpath, macpath, ntpath and posixpath
-"""
-
-import unittest
-from test import test_support
-import os
-import genericpath
-import sys
-
-
-def safe_rmdir(dirname):
-    try:
-        os.rmdir(dirname)
-    except OSError:
-        pass
-
-
-class GenericTest(unittest.TestCase):
-    # The path module to be tested
-    pathmodule = genericpath
-    common_attributes = ['commonprefix', 'getsize', 'getatime', 'getctime',
-                         'getmtime', 'exists', 'isdir', 'isfile']
-    attributes = []
-
-    def test_no_argument(self):
-        for attr in self.common_attributes + self.attributes:
-            with self.assertRaises(TypeError):
-                getattr(self.pathmodule, attr)()
-                raise self.fail("{}.{}() did not raise a TypeError"
-                                .format(self.pathmodule.__name__, attr))
-
-    def test_commonprefix(self):
-        commonprefix = self.pathmodule.commonprefix
-        self.assertEqual(
-            commonprefix([]),
-            ""
-        )
-        self.assertEqual(
-            commonprefix(["/home/swenson/spam", "/home/swen/spam"]),
-            "/home/swen"
-        )
-        self.assertEqual(
-            commonprefix(["/home/swen/spam", "/home/swen/eggs"]),
-            "/home/swen/"
-        )
-        self.assertEqual(
-            commonprefix(["/home/swen/spam", "/home/swen/spam"]),
-            "/home/swen/spam"
-        )
-        self.assertEqual(
-            commonprefix(["home:swenson:spam", "home:swen:spam"]),
-            "home:swen"
-        )
-        self.assertEqual(
-            commonprefix([":home:swen:spam", ":home:swen:eggs"]),
-            ":home:swen:"
-        )
-        self.assertEqual(
-            commonprefix([":home:swen:spam", ":home:swen:spam"]),
-            ":home:swen:spam"
-        )
-
-        testlist = ['', 'abc', 'Xbcd', 'Xb', 'XY', 'abcd',
-                    'aXc', 'abd', 'ab', 'aX', 'abcX']
-        for s1 in testlist:
-            for s2 in testlist:
-                p = commonprefix([s1, s2])
-                self.assertTrue(s1.startswith(p))
-                self.assertTrue(s2.startswith(p))
-                if s1 != s2:
-                    n = len(p)
-                    self.assertNotEqual(s1[n:n+1], s2[n:n+1])
-
-    def test_getsize(self):
-        f = open(test_support.TESTFN, "wb")
-        try:
-            f.write("foo")
-            f.close()
-            self.assertEqual(self.pathmodule.getsize(test_support.TESTFN), 3)
-        finally:
-            if not f.closed:
-                f.close()
-            test_support.unlink(test_support.TESTFN)
-
-    def test_time(self):
-        f = open(test_support.TESTFN, "wb")
-        try:
-            f.write("foo")
-            f.close()
-            f = open(test_support.TESTFN, "ab")
-            f.write("bar")
-            f.close()
-            f = open(test_support.TESTFN, "rb")
-            d = f.read()
-            f.close()
-            self.assertEqual(d, "foobar")
-
-            self.assertLessEqual(
-                self.pathmodule.getctime(test_support.TESTFN),
-                self.pathmodule.getmtime(test_support.TESTFN)
-            )
-        finally:
-            if not f.closed:
-                f.close()
-            test_support.unlink(test_support.TESTFN)
-
-    def test_exists(self):
-        self.assertIs(self.pathmodule.exists(test_support.TESTFN), False)
-        f = open(test_support.TESTFN, "wb")
-        try:
-            f.write("foo")
-            f.close()
-            self.assertIs(self.pathmodule.exists(test_support.TESTFN), True)
-            if not self.pathmodule == genericpath:
-                self.assertIs(self.pathmodule.lexists(test_support.TESTFN),
-                              True)
-        finally:
-            if not f.close():
-                f.close()
-            test_support.unlink(test_support.TESTFN)
-
-    def test_isdir(self):
-        self.assertIs(self.pathmodule.isdir(test_support.TESTFN), False)
-        f = open(test_support.TESTFN, "wb")
-        try:
-            f.write("foo")
-            f.close()
-            self.assertIs(self.pathmodule.isdir(test_support.TESTFN), False)
-            os.remove(test_support.TESTFN)
-            os.mkdir(test_support.TESTFN)
-            self.assertIs(self.pathmodule.isdir(test_support.TESTFN), True)
-            os.rmdir(test_support.TESTFN)
-        finally:
-            if not f.close():
-                f.close()
-            test_support.unlink(test_support.TESTFN)
-            safe_rmdir(test_support.TESTFN)
-
-    def test_isfile(self):
-        self.assertIs(self.pathmodule.isfile(test_support.TESTFN), False)
-        f = open(test_support.TESTFN, "wb")
-        try:
-            f.write("foo")
-            f.close()
-            self.assertIs(self.pathmodule.isfile(test_support.TESTFN), True)
-            os.remove(test_support.TESTFN)
-            os.mkdir(test_support.TESTFN)
-            self.assertIs(self.pathmodule.isfile(test_support.TESTFN), False)
-            os.rmdir(test_support.TESTFN)
-        finally:
-            if not f.close():
-                f.close()
-            test_support.unlink(test_support.TESTFN)
-            safe_rmdir(test_support.TESTFN)
-
-
-# Following TestCase is not supposed to be run from test_genericpath.
-# It is inherited by other test modules (macpath, ntpath, posixpath).
-
-class CommonTest(GenericTest):
-    # The path module to be tested
-    pathmodule = None
-    common_attributes = GenericTest.common_attributes + [
-        # Properties
-        'curdir', 'pardir', 'extsep', 'sep',
-        'pathsep', 'defpath', 'altsep', 'devnull',
-        # Methods
-        'normcase', 'splitdrive', 'expandvars', 'normpath', 'abspath',
-        'join', 'split', 'splitext', 'isabs', 'basename', 'dirname',
-        'lexists', 'islink', 'ismount', 'expanduser', 'normpath', 'realpath',
-    ]
-
-    def test_normcase(self):
-        # Check that normcase() is idempotent
-        p = "FoO/./BaR"
-        p = self.pathmodule.normcase(p)
-        self.assertEqual(p, self.pathmodule.normcase(p))
-
-    def test_splitdrive(self):
-        # splitdrive for non-NT paths
-        splitdrive = self.pathmodule.splitdrive
-        self.assertEqual(splitdrive("/foo/bar"), ("", "/foo/bar"))
-        self.assertEqual(splitdrive("foo:bar"), ("", "foo:bar"))
-        self.assertEqual(splitdrive(":foo:bar"), ("", ":foo:bar"))
-
-    def test_expandvars(self):
-        if self.pathmodule.__name__ == 'macpath':
-            self.skipTest('macpath.expandvars is a stub')
-        expandvars = self.pathmodule.expandvars
-        with test_support.EnvironmentVarGuard() as env:
-            env.clear()
-            env["foo"] = "bar"
-            env["{foo"] = "baz1"
-            env["{foo}"] = "baz2"
-            self.assertEqual(expandvars("foo"), "foo")
-            self.assertEqual(expandvars("$foo bar"), "bar bar")
-            self.assertEqual(expandvars("${foo}bar"), "barbar")
-            self.assertEqual(expandvars("$[foo]bar"), "$[foo]bar")
-            self.assertEqual(expandvars("$bar bar"), "$bar bar")
-            self.assertEqual(expandvars("$?bar"), "$?bar")
-            self.assertEqual(expandvars("${foo}bar"), "barbar")
-            self.assertEqual(expandvars("$foo}bar"), "bar}bar")
-            self.assertEqual(expandvars("${foo"), "${foo")
-            self.assertEqual(expandvars("${{foo}}"), "baz1}")
-            self.assertEqual(expandvars("$foo$foo"), "barbar")
-            self.assertEqual(expandvars("$bar$bar"), "$bar$bar")
-
-    def test_abspath(self):
-        self.assertIn("foo", self.pathmodule.abspath("foo"))
-
-        # Abspath returns bytes when the arg is bytes
-        for path in ('', 'foo', 'f\xf2\xf2', '/foo', 'C:\\'):
-            self.assertIsInstance(self.pathmodule.abspath(path), str)
-
-    def test_realpath(self):
-        self.assertIn("foo", self.pathmodule.realpath("foo"))
-
-    def test_normpath_issue5827(self):
-        # Make sure normpath preserves unicode
-        for path in (u'', u'.', u'/', u'\\', u'///foo/.//bar//'):
-            self.assertIsInstance(self.pathmodule.normpath(path), unicode)
-
-    def test_abspath_issue3426(self):
-        # Check that abspath returns unicode when the arg is unicode
-        # with both ASCII and non-ASCII cwds.
-        abspath = self.pathmodule.abspath
-        for path in (u'', u'fuu', u'f\xf9\xf9', u'/fuu', u'U:\\'):
-            self.assertIsInstance(abspath(path), unicode)
-
-        unicwd = u'\xe7w\xf0'
-        try:
-            fsencoding = test_support.TESTFN_ENCODING or "ascii"
-            unicwd.encode(fsencoding)
-        except (AttributeError, UnicodeEncodeError):
-            # FS encoding is probably ASCII
-            pass
-        else:
-            with test_support.temp_cwd(unicwd):
-                for path in (u'', u'fuu', u'f\xf9\xf9', u'/fuu', u'U:\\'):
-                    self.assertIsInstance(abspath(path), unicode)
-
-    @unittest.skipIf(sys.platform == 'darwin',
-        "Mac OS X denies the creation of a directory with an invalid utf8 name")
-    def test_nonascii_abspath(self):
-        # Test non-ASCII, non-UTF8 bytes in the path.
-        with test_support.temp_cwd('\xe7w\xf0'):
-            self.test_abspath()
-
-
-def test_main():
-    test_support.run_unittest(GenericTest)
-
-
-if __name__=="__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_genexps.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_genexps.py
deleted file mode 100644
index 921af67..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_genexps.py
+++ /dev/null
@@ -1,282 +0,0 @@
-doctests = """
-
-Test simple loop with conditional
-
-    >>> sum(i*i for i in range(100) if i&1 == 1)
-    166650
-
-Test simple nesting
-
-    >>> list((i,j) for i in range(3) for j in range(4) )
-    [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)]
-
-Test nesting with the inner expression dependent on the outer
-
-    >>> list((i,j) for i in range(4) for j in range(i) )
-    [(1, 0), (2, 0), (2, 1), (3, 0), (3, 1), (3, 2)]
-
-Make sure the induction variable is not exposed
-
-    >>> i = 20
-    >>> sum(i*i for i in range(100))
-    328350
-    >>> i
-    20
-
-Test first class
-
-    >>> g = (i*i for i in range(4))
-    >>> type(g)
-    <type 'generator'>
-    >>> list(g)
-    [0, 1, 4, 9]
-
-Test direct calls to next()
-
-    >>> g = (i*i for i in range(3))
-    >>> g.next()
-    0
-    >>> g.next()
-    1
-    >>> g.next()
-    4
-    >>> g.next()
-    Traceback (most recent call last):
-      File "<pyshell#21>", line 1, in -toplevel-
-        g.next()
-    StopIteration
-
-Does it stay stopped?
-
-    >>> g.next()
-    Traceback (most recent call last):
-      File "<pyshell#21>", line 1, in -toplevel-
-        g.next()
-    StopIteration
-    >>> list(g)
-    []
-
-Test running gen when defining function is out of scope
-
-    >>> def f(n):
-    ...     return (i*i for i in xrange(n))
-    >>> list(f(10))
-    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
-
-    >>> def f(n):
-    ...     return ((i,j) for i in xrange(3) for j in xrange(n))
-    >>> list(f(4))
-    [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)]
-    >>> def f(n):
-    ...     return ((i,j) for i in xrange(3) for j in xrange(4) if j in xrange(n))
-    >>> list(f(4))
-    [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)]
-    >>> list(f(2))
-    [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]
-
-Verify that parenthesis are required in a statement
-
-    >>> def f(n):
-    ...     return i*i for i in xrange(n)
-    Traceback (most recent call last):
-       ...
-    SyntaxError: invalid syntax
-
-Verify that parenthesis are required when used as a keyword argument value
-
-    >>> dict(a = i for i in xrange(10))
-    Traceback (most recent call last):
-       ...
-    SyntaxError: invalid syntax
-
-Verify that parenthesis are required when used as a keyword argument value
-
-    >>> dict(a = (i for i in xrange(10))) #doctest: +ELLIPSIS
-    {'a': <generator object <genexpr> at ...>}
-
-Verify early binding for the outermost for-expression
-
-    >>> x=10
-    >>> g = (i*i for i in range(x))
-    >>> x = 5
-    >>> list(g)
-    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
-
-Verify that the outermost for-expression makes an immediate check
-for iterability
-
-    >>> (i for i in 6)
-    Traceback (most recent call last):
-      File "<pyshell#4>", line 1, in -toplevel-
-        (i for i in 6)
-    TypeError: 'int' object is not iterable
-
-Verify late binding for the outermost if-expression
-
-    >>> include = (2,4,6,8)
-    >>> g = (i*i for i in range(10) if i in include)
-    >>> include = (1,3,5,7,9)
-    >>> list(g)
-    [1, 9, 25, 49, 81]
-
-Verify late binding for the innermost for-expression
-
-    >>> g = ((i,j) for i in range(3) for j in range(x))
-    >>> x = 4
-    >>> list(g)
-    [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)]
-
-Verify re-use of tuples (a side benefit of using genexps over listcomps)
-
-    >>> tupleids = map(id, ((i,i) for i in xrange(10)))
-    >>> int(max(tupleids) - min(tupleids))
-    0
-
-Verify that syntax error's are raised for genexps used as lvalues
-
-    >>> (y for y in (1,2)) = 10
-    Traceback (most recent call last):
-       ...
-      File "<doctest test.test_genexps.__test__.doctests[40]>", line 1
-    SyntaxError: can't assign to generator expression
-
-    >>> (y for y in (1,2)) += 10
-    Traceback (most recent call last):
-       ...
-      File "<doctest test.test_genexps.__test__.doctests[41]>", line 1
-    SyntaxError: can't assign to generator expression
-
-
-########### Tests borrowed from or inspired by test_generators.py ############
-
-Make a generator that acts like range()
-
-    >>> yrange = lambda n:  (i for i in xrange(n))
-    >>> list(yrange(10))
-    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-
-Generators always return to the most recent caller:
-
-    >>> def creator():
-    ...     r = yrange(5)
-    ...     print "creator", r.next()
-    ...     return r
-    >>> def caller():
-    ...     r = creator()
-    ...     for i in r:
-    ...             print "caller", i
-    >>> caller()
-    creator 0
-    caller 1
-    caller 2
-    caller 3
-    caller 4
-
-Generators can call other generators:
-
-    >>> def zrange(n):
-    ...     for i in yrange(n):
-    ...         yield i
-    >>> list(zrange(5))
-    [0, 1, 2, 3, 4]
-
-
-Verify that a gen exp cannot be resumed while it is actively running:
-
-    >>> g = (me.next() for i in xrange(10))
-    >>> me = g
-    >>> me.next()
-    Traceback (most recent call last):
-      File "<pyshell#30>", line 1, in -toplevel-
-        me.next()
-      File "<pyshell#28>", line 1, in <generator expression>
-        g = (me.next() for i in xrange(10))
-    ValueError: generator already executing
-
-Verify exception propagation
-
-    >>> g = (10 // i for i in (5, 0, 2))
-    >>> g.next()
-    2
-    >>> g.next()
-    Traceback (most recent call last):
-      File "<pyshell#37>", line 1, in -toplevel-
-        g.next()
-      File "<pyshell#35>", line 1, in <generator expression>
-        g = (10 // i for i in (5, 0, 2))
-    ZeroDivisionError: integer division or modulo by zero
-    >>> g.next()
-    Traceback (most recent call last):
-      File "<pyshell#38>", line 1, in -toplevel-
-        g.next()
-    StopIteration
-
-Make sure that None is a valid return value
-
-    >>> list(None for i in xrange(10))
-    [None, None, None, None, None, None, None, None, None, None]
-
-Check that generator attributes are present
-
-    >>> g = (i*i for i in range(3))
-    >>> expected = set(['gi_frame', 'gi_running', 'next'])
-    >>> set(attr for attr in dir(g) if not attr.startswith('__')) >= expected
-    True
-
-    >>> print g.next.__doc__
-    x.next() -> the next value, or raise StopIteration
-    >>> import types
-    >>> isinstance(g, types.GeneratorType)
-    True
-
-Check the __iter__ slot is defined to return self
-
-    >>> iter(g) is g
-    True
-
-Verify that the running flag is set properly
-
-    >>> g = (me.gi_running for i in (0,1))
-    >>> me = g
-    >>> me.gi_running
-    0
-    >>> me.next()
-    1
-    >>> me.gi_running
-    0
-
-Verify that genexps are weakly referencable
-
-    >>> import weakref
-    >>> g = (i*i for i in range(4))
-    >>> wr = weakref.ref(g)
-    >>> wr() is g
-    True
-    >>> p = weakref.proxy(g)
-    >>> list(p)
-    [0, 1, 4, 9]
-
-
-"""
-
-
-__test__ = {'doctests' : doctests}
-
-def test_main(verbose=None):
-    import sys
-    from test import test_support
-    from test import test_genexps
-    test_support.run_doctest(test_genexps, verbose)
-
-    # verify reference counting
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        import gc
-        counts = [None] * 5
-        for i in xrange(len(counts)):
-            test_support.run_doctest(test_genexps, verbose)
-            gc.collect()
-            counts[i] = sys.gettotalrefcount()
-        print counts
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getargs.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getargs.py
deleted file mode 100644
index 2eebe19..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getargs.py
+++ /dev/null
@@ -1,31 +0,0 @@
-"""
-Test the internal getargs.c implementation
-
- PyArg_ParseTuple() is defined here.
-
-The test here is not intended to test all of the module, just the
-single case that failed between 2.1 and 2.2a2.
-"""
-
-# marshal.loads() uses PyArg_ParseTuple(args, "s#:loads")
-# The s code will cause a Unicode conversion to occur.  This test
-# verify that the error is propagated properly from the C code back to
-# Python.
-
-import marshal
-import unittest
-from test import test_support
-
-class GetArgsTest(unittest.TestCase):
-    # If the encoding succeeds using the current default encoding,
-    # this test will fail because it does not test the right part of the
-    # PyArg_ParseTuple() implementation.
-    def test_with_marshal(self):
-        arg = unicode(r'\222', 'unicode-escape')
-        self.assertRaises(UnicodeError, marshal.loads, arg)
-
-def test_main():
-    test_support.run_unittest(GetArgsTest)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getargs2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getargs2.py
deleted file mode 100644
index aa3d308..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getargs2.py
+++ /dev/null
@@ -1,335 +0,0 @@
-import unittest
-from test import test_support
-from _testcapi import getargs_keywords
-import warnings
-
-"""
-> How about the following counterproposal. This also changes some of
-> the other format codes to be a little more regular.
->
-> Code C type Range check
->
-> b unsigned char 0..UCHAR_MAX
-> h signed short SHRT_MIN..SHRT_MAX
-> B unsigned char none **
-> H unsigned short none **
-> k * unsigned long none
-> I * unsigned int 0..UINT_MAX
-
-
-> i int INT_MIN..INT_MAX
-> l long LONG_MIN..LONG_MAX
-
-> K * unsigned long long none
-> L long long LLONG_MIN..LLONG_MAX
-
-> Notes:
->
-> * New format codes.
->
-> ** Changed from previous "range-and-a-half" to "none"; the
-> range-and-a-half checking wasn't particularly useful.
-
-Plus a C API or two, e.g. PyInt_AsLongMask() ->
-unsigned long and PyInt_AsLongLongMask() -> unsigned
-long long (if that exists).
-"""
-
-LARGE = 0x7FFFFFFF
-VERY_LARGE = 0xFF0000121212121212121242L
-
-from _testcapi import UCHAR_MAX, USHRT_MAX, UINT_MAX, ULONG_MAX, INT_MAX, \
-     INT_MIN, LONG_MIN, LONG_MAX, PY_SSIZE_T_MIN, PY_SSIZE_T_MAX, \
-     SHRT_MIN, SHRT_MAX
-
-# fake, they are not defined in Python's header files
-LLONG_MAX = 2**63-1
-LLONG_MIN = -2**63
-ULLONG_MAX = 2**64-1
-
-class Long:
-    def __int__(self):
-        return 99L
-
-class Int:
-    def __int__(self):
-        return 99
-
-class Unsigned_TestCase(unittest.TestCase):
-    def test_b(self):
-        from _testcapi import getargs_b
-        # b returns 'unsigned char', and does range checking (0 ... UCHAR_MAX)
-        self.assertRaises(TypeError, getargs_b, 3.14)
-        self.assertEqual(99, getargs_b(Long()))
-        self.assertEqual(99, getargs_b(Int()))
-
-        self.assertRaises(OverflowError, getargs_b, -1)
-        self.assertEqual(0, getargs_b(0))
-        self.assertEqual(UCHAR_MAX, getargs_b(UCHAR_MAX))
-        self.assertRaises(OverflowError, getargs_b, UCHAR_MAX + 1)
-
-        self.assertEqual(42, getargs_b(42))
-        self.assertEqual(42, getargs_b(42L))
-        self.assertRaises(OverflowError, getargs_b, VERY_LARGE)
-
-    def test_B(self):
-        from _testcapi import getargs_B
-        # B returns 'unsigned char', no range checking
-        self.assertRaises(TypeError, getargs_B, 3.14)
-        self.assertEqual(99, getargs_B(Long()))
-        self.assertEqual(99, getargs_B(Int()))
-
-        self.assertEqual(UCHAR_MAX, getargs_B(-1))
-        self.assertEqual(UCHAR_MAX, getargs_B(-1L))
-        self.assertEqual(0, getargs_B(0))
-        self.assertEqual(UCHAR_MAX, getargs_B(UCHAR_MAX))
-        self.assertEqual(0, getargs_B(UCHAR_MAX+1))
-
-        self.assertEqual(42, getargs_B(42))
-        self.assertEqual(42, getargs_B(42L))
-        self.assertEqual(UCHAR_MAX & VERY_LARGE, getargs_B(VERY_LARGE))
-
-    def test_H(self):
-        from _testcapi import getargs_H
-        # H returns 'unsigned short', no range checking
-        self.assertRaises(TypeError, getargs_H, 3.14)
-        self.assertEqual(99, getargs_H(Long()))
-        self.assertEqual(99, getargs_H(Int()))
-
-        self.assertEqual(USHRT_MAX, getargs_H(-1))
-        self.assertEqual(0, getargs_H(0))
-        self.assertEqual(USHRT_MAX, getargs_H(USHRT_MAX))
-        self.assertEqual(0, getargs_H(USHRT_MAX+1))
-
-        self.assertEqual(42, getargs_H(42))
-        self.assertEqual(42, getargs_H(42L))
-
-        self.assertEqual(VERY_LARGE & USHRT_MAX, getargs_H(VERY_LARGE))
-
-    def test_I(self):
-        from _testcapi import getargs_I
-        # I returns 'unsigned int', no range checking
-        self.assertRaises(TypeError, getargs_I, 3.14)
-        self.assertEqual(99, getargs_I(Long()))
-        self.assertEqual(99, getargs_I(Int()))
-
-        self.assertEqual(UINT_MAX, getargs_I(-1))
-        self.assertEqual(0, getargs_I(0))
-        self.assertEqual(UINT_MAX, getargs_I(UINT_MAX))
-        self.assertEqual(0, getargs_I(UINT_MAX+1))
-
-        self.assertEqual(42, getargs_I(42))
-        self.assertEqual(42, getargs_I(42L))
-
-        self.assertEqual(VERY_LARGE & UINT_MAX, getargs_I(VERY_LARGE))
-
-    def test_k(self):
-        from _testcapi import getargs_k
-        # k returns 'unsigned long', no range checking
-        # it does not accept float, or instances with __int__
-        self.assertRaises(TypeError, getargs_k, 3.14)
-        self.assertRaises(TypeError, getargs_k, Long())
-        self.assertRaises(TypeError, getargs_k, Int())
-
-        self.assertEqual(ULONG_MAX, getargs_k(-1))
-        self.assertEqual(0, getargs_k(0))
-        self.assertEqual(ULONG_MAX, getargs_k(ULONG_MAX))
-        self.assertEqual(0, getargs_k(ULONG_MAX+1))
-
-        self.assertEqual(42, getargs_k(42))
-        self.assertEqual(42, getargs_k(42L))
-
-        self.assertEqual(VERY_LARGE & ULONG_MAX, getargs_k(VERY_LARGE))
-
-class Signed_TestCase(unittest.TestCase):
-    def test_h(self):
-        from _testcapi import getargs_h
-        # h returns 'short', and does range checking (SHRT_MIN ... SHRT_MAX)
-        self.assertRaises(TypeError, getargs_h, 3.14)
-        self.assertEqual(99, getargs_h(Long()))
-        self.assertEqual(99, getargs_h(Int()))
-
-        self.assertRaises(OverflowError, getargs_h, SHRT_MIN-1)
-        self.assertEqual(SHRT_MIN, getargs_h(SHRT_MIN))
-        self.assertEqual(SHRT_MAX, getargs_h(SHRT_MAX))
-        self.assertRaises(OverflowError, getargs_h, SHRT_MAX+1)
-
-        self.assertEqual(42, getargs_h(42))
-        self.assertEqual(42, getargs_h(42L))
-        self.assertRaises(OverflowError, getargs_h, VERY_LARGE)
-
-    def test_i(self):
-        from _testcapi import getargs_i
-        # i returns 'int', and does range checking (INT_MIN ... INT_MAX)
-        self.assertRaises(TypeError, getargs_i, 3.14)
-        self.assertEqual(99, getargs_i(Long()))
-        self.assertEqual(99, getargs_i(Int()))
-
-        self.assertRaises(OverflowError, getargs_i, INT_MIN-1)
-        self.assertEqual(INT_MIN, getargs_i(INT_MIN))
-        self.assertEqual(INT_MAX, getargs_i(INT_MAX))
-        self.assertRaises(OverflowError, getargs_i, INT_MAX+1)
-
-        self.assertEqual(42, getargs_i(42))
-        self.assertEqual(42, getargs_i(42L))
-        self.assertRaises(OverflowError, getargs_i, VERY_LARGE)
-
-    def test_l(self):
-        from _testcapi import getargs_l
-        # l returns 'long', and does range checking (LONG_MIN ... LONG_MAX)
-        self.assertRaises(TypeError, getargs_l, 3.14)
-        self.assertEqual(99, getargs_l(Long()))
-        self.assertEqual(99, getargs_l(Int()))
-
-        self.assertRaises(OverflowError, getargs_l, LONG_MIN-1)
-        self.assertEqual(LONG_MIN, getargs_l(LONG_MIN))
-        self.assertEqual(LONG_MAX, getargs_l(LONG_MAX))
-        self.assertRaises(OverflowError, getargs_l, LONG_MAX+1)
-
-        self.assertEqual(42, getargs_l(42))
-        self.assertEqual(42, getargs_l(42L))
-        self.assertRaises(OverflowError, getargs_l, VERY_LARGE)
-
-    def test_n(self):
-        from _testcapi import getargs_n
-        # n returns 'Py_ssize_t', and does range checking
-        # (PY_SSIZE_T_MIN ... PY_SSIZE_T_MAX)
-        self.assertRaises(TypeError, getargs_n, 3.14)
-        self.assertEqual(99, getargs_n(Long()))
-        self.assertEqual(99, getargs_n(Int()))
-
-        self.assertRaises(OverflowError, getargs_n, PY_SSIZE_T_MIN-1)
-        self.assertEqual(PY_SSIZE_T_MIN, getargs_n(PY_SSIZE_T_MIN))
-        self.assertEqual(PY_SSIZE_T_MAX, getargs_n(PY_SSIZE_T_MAX))
-        self.assertRaises(OverflowError, getargs_n, PY_SSIZE_T_MAX+1)
-
-        self.assertEqual(42, getargs_n(42))
-        self.assertEqual(42, getargs_n(42L))
-        self.assertRaises(OverflowError, getargs_n, VERY_LARGE)
-
-
-class LongLong_TestCase(unittest.TestCase):
-    def test_L(self):
-        from _testcapi import getargs_L
-        # L returns 'long long', and does range checking (LLONG_MIN
-        # ... LLONG_MAX)
-        with warnings.catch_warnings():
-            warnings.filterwarnings(
-                "ignore",
-                category=DeprecationWarning,
-                message=".*integer argument expected, got float",
-                module=__name__)
-            self.assertEqual(3, getargs_L(3.14))
-        with warnings.catch_warnings():
-            warnings.filterwarnings(
-                "error",
-                category=DeprecationWarning,
-                message=".*integer argument expected, got float",
-                module="unittest")
-            self.assertRaises(DeprecationWarning, getargs_L, 3.14)
-
-        self.assertRaises(TypeError, getargs_L, "Hello")
-        self.assertEqual(99, getargs_L(Long()))
-        self.assertEqual(99, getargs_L(Int()))
-
-        self.assertRaises(OverflowError, getargs_L, LLONG_MIN-1)
-        self.assertEqual(LLONG_MIN, getargs_L(LLONG_MIN))
-        self.assertEqual(LLONG_MAX, getargs_L(LLONG_MAX))
-        self.assertRaises(OverflowError, getargs_L, LLONG_MAX+1)
-
-        self.assertEqual(42, getargs_L(42))
-        self.assertEqual(42, getargs_L(42L))
-        self.assertRaises(OverflowError, getargs_L, VERY_LARGE)
-
-    def test_K(self):
-        from _testcapi import getargs_K
-        # K return 'unsigned long long', no range checking
-        self.assertRaises(TypeError, getargs_K, 3.14)
-        self.assertRaises(TypeError, getargs_K, Long())
-        self.assertRaises(TypeError, getargs_K, Int())
-        self.assertEqual(ULLONG_MAX, getargs_K(ULLONG_MAX))
-        self.assertEqual(0, getargs_K(0))
-        self.assertEqual(0, getargs_K(ULLONG_MAX+1))
-
-        self.assertEqual(42, getargs_K(42))
-        self.assertEqual(42, getargs_K(42L))
-
-        self.assertEqual(VERY_LARGE & ULLONG_MAX, getargs_K(VERY_LARGE))
-
-
-class Tuple_TestCase(unittest.TestCase):
-    def test_tuple(self):
-        from _testcapi import getargs_tuple
-
-        ret = getargs_tuple(1, (2, 3))
-        self.assertEqual(ret, (1,2,3))
-
-        # make sure invalid tuple arguments are handled correctly
-        class seq:
-            def __len__(self):
-                return 2
-            def __getitem__(self, n):
-                raise ValueError
-        self.assertRaises(TypeError, getargs_tuple, 1, seq())
-
-class Keywords_TestCase(unittest.TestCase):
-    def test_positional_args(self):
-        # using all positional args
-        self.assertEqual(
-            getargs_keywords((1,2), 3, (4,(5,6)), (7,8,9), 10),
-            (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
-            )
-    def test_mixed_args(self):
-        # positional and keyword args
-        self.assertEqual(
-            getargs_keywords((1,2), 3, (4,(5,6)), arg4=(7,8,9), arg5=10),
-            (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
-            )
-    def test_keyword_args(self):
-        # all keywords
-        self.assertEqual(
-            getargs_keywords(arg1=(1,2), arg2=3, arg3=(4,(5,6)), arg4=(7,8,9), arg5=10),
-            (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
-            )
-    def test_optional_args(self):
-        # missing optional keyword args, skipping tuples
-        self.assertEqual(
-            getargs_keywords(arg1=(1,2), arg2=3, arg5=10),
-            (1, 2, 3, -1, -1, -1, -1, -1, -1, 10)
-            )
-    def test_required_args(self):
-        # required arg missing
-        try:
-            getargs_keywords(arg1=(1,2))
-        except TypeError, err:
-            self.assertEqual(str(err), "Required argument 'arg2' (pos 2) not found")
-        else:
-            self.fail('TypeError should have been raised')
-    def test_too_many_args(self):
-        try:
-            getargs_keywords((1,2),3,(4,(5,6)),(7,8,9),10,111)
-        except TypeError, err:
-            self.assertEqual(str(err), "function takes at most 5 arguments (6 given)")
-        else:
-            self.fail('TypeError should have been raised')
-    def test_invalid_keyword(self):
-        # extraneous keyword arg
-        try:
-            getargs_keywords((1,2),3,arg5=10,arg666=666)
-        except TypeError, err:
-            self.assertEqual(str(err), "'arg666' is an invalid keyword argument for this function")
-        else:
-            self.fail('TypeError should have been raised')
-
-def test_main():
-    tests = [Signed_TestCase, Unsigned_TestCase, Tuple_TestCase, Keywords_TestCase]
-    try:
-        from _testcapi import getargs_L, getargs_K
-    except ImportError:
-        pass # PY_LONG_LONG not available
-    else:
-        tests.append(LongLong_TestCase)
-    test_support.run_unittest(*tests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getopt.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getopt.py
deleted file mode 100644
index bda1c78..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_getopt.py
+++ /dev/null
@@ -1,187 +0,0 @@
-# test_getopt.py
-# David Goodger <dgoodger@bigfoot.com> 2000-08-19
-
-from test.test_support import verbose, run_doctest, run_unittest, EnvironmentVarGuard
-import unittest
-
-import getopt
-
-sentinel = object()
-
-class GetoptTests(unittest.TestCase):
-    def setUp(self):
-        self.env = EnvironmentVarGuard()
-        if "POSIXLY_CORRECT" in self.env:
-            del self.env["POSIXLY_CORRECT"]
-
-    def tearDown(self):
-        self.env.__exit__()
-        del self.env
-
-    def assertError(self, *args, **kwargs):
-        self.assertRaises(getopt.GetoptError, *args, **kwargs)
-
-    def test_short_has_arg(self):
-        self.assertTrue(getopt.short_has_arg('a', 'a:'))
-        self.assertFalse(getopt.short_has_arg('a', 'a'))
-        self.assertError(getopt.short_has_arg, 'a', 'b')
-
-    def test_long_has_args(self):
-        has_arg, option = getopt.long_has_args('abc', ['abc='])
-        self.assertTrue(has_arg)
-        self.assertEqual(option, 'abc')
-
-        has_arg, option = getopt.long_has_args('abc', ['abc'])
-        self.assertFalse(has_arg)
-        self.assertEqual(option, 'abc')
-
-        has_arg, option = getopt.long_has_args('abc', ['abcd'])
-        self.assertFalse(has_arg)
-        self.assertEqual(option, 'abcd')
-
-        self.assertError(getopt.long_has_args, 'abc', ['def'])
-        self.assertError(getopt.long_has_args, 'abc', [])
-        self.assertError(getopt.long_has_args, 'abc', ['abcd','abcde'])
-
-    def test_do_shorts(self):
-        opts, args = getopt.do_shorts([], 'a', 'a', [])
-        self.assertEqual(opts, [('-a', '')])
-        self.assertEqual(args, [])
-
-        opts, args = getopt.do_shorts([], 'a1', 'a:', [])
-        self.assertEqual(opts, [('-a', '1')])
-        self.assertEqual(args, [])
-
-        #opts, args = getopt.do_shorts([], 'a=1', 'a:', [])
-        #self.assertEqual(opts, [('-a', '1')])
-        #self.assertEqual(args, [])
-
-        opts, args = getopt.do_shorts([], 'a', 'a:', ['1'])
-        self.assertEqual(opts, [('-a', '1')])
-        self.assertEqual(args, [])
-
-        opts, args = getopt.do_shorts([], 'a', 'a:', ['1', '2'])
-        self.assertEqual(opts, [('-a', '1')])
-        self.assertEqual(args, ['2'])
-
-        self.assertError(getopt.do_shorts, [], 'a1', 'a', [])
-        self.assertError(getopt.do_shorts, [], 'a', 'a:', [])
-
-    def test_do_longs(self):
-        opts, args = getopt.do_longs([], 'abc', ['abc'], [])
-        self.assertEqual(opts, [('--abc', '')])
-        self.assertEqual(args, [])
-
-        opts, args = getopt.do_longs([], 'abc=1', ['abc='], [])
-        self.assertEqual(opts, [('--abc', '1')])
-        self.assertEqual(args, [])
-
-        opts, args = getopt.do_longs([], 'abc=1', ['abcd='], [])
-        self.assertEqual(opts, [('--abcd', '1')])
-        self.assertEqual(args, [])
-
-        opts, args = getopt.do_longs([], 'abc', ['ab', 'abc', 'abcd'], [])
-        self.assertEqual(opts, [('--abc', '')])
-        self.assertEqual(args, [])
-
-        # Much like the preceding, except with a non-alpha character ("-") in
-        # option name that precedes "="; failed in
-        # http://python.org/sf/126863
-        opts, args = getopt.do_longs([], 'foo=42', ['foo-bar', 'foo=',], [])
-        self.assertEqual(opts, [('--foo', '42')])
-        self.assertEqual(args, [])
-
-        self.assertError(getopt.do_longs, [], 'abc=1', ['abc'], [])
-        self.assertError(getopt.do_longs, [], 'abc', ['abc='], [])
-
-    def test_getopt(self):
-        # note: the empty string between '-a' and '--beta' is significant:
-        # it simulates an empty string option argument ('-a ""') on the
-        # command line.
-        cmdline = ['-a', '1', '-b', '--alpha=2', '--beta', '-a', '3', '-a',
-                   '', '--beta', 'arg1', 'arg2']
-
-        opts, args = getopt.getopt(cmdline, 'a:b', ['alpha=', 'beta'])
-        self.assertEqual(opts, [('-a', '1'), ('-b', ''),
-                                ('--alpha', '2'), ('--beta', ''),
-                                ('-a', '3'), ('-a', ''), ('--beta', '')])
-        # Note ambiguity of ('-b', '') and ('-a', '') above. This must be
-        # accounted for in the code that calls getopt().
-        self.assertEqual(args, ['arg1', 'arg2'])
-
-        self.assertError(getopt.getopt, cmdline, 'a:b', ['alpha', 'beta'])
-
-    def test_gnu_getopt(self):
-        # Test handling of GNU style scanning mode.
-        cmdline = ['-a', 'arg1', '-b', '1', '--alpha', '--beta=2']
-
-        # GNU style
-        opts, args = getopt.gnu_getopt(cmdline, 'ab:', ['alpha', 'beta='])
-        self.assertEqual(args, ['arg1'])
-        self.assertEqual(opts, [('-a', ''), ('-b', '1'),
-                                ('--alpha', ''), ('--beta', '2')])
-
-        # recognize "-" as an argument
-        opts, args = getopt.gnu_getopt(['-a', '-', '-b', '-'], 'ab:', [])
-        self.assertEqual(args, ['-'])
-        self.assertEqual(opts, [('-a', ''), ('-b', '-')])
-
-        # Posix style via +
-        opts, args = getopt.gnu_getopt(cmdline, '+ab:', ['alpha', 'beta='])
-        self.assertEqual(opts, [('-a', '')])
-        self.assertEqual(args, ['arg1', '-b', '1', '--alpha', '--beta=2'])
-
-        # Posix style via POSIXLY_CORRECT
-        self.env["POSIXLY_CORRECT"] = "1"
-        opts, args = getopt.gnu_getopt(cmdline, 'ab:', ['alpha', 'beta='])
-        self.assertEqual(opts, [('-a', '')])
-        self.assertEqual(args, ['arg1', '-b', '1', '--alpha', '--beta=2'])
-
-    def test_libref_examples(self):
-        s = """
-        Examples from the Library Reference:  Doc/lib/libgetopt.tex
-
-        An example using only Unix style options:
-
-
-        >>> import getopt
-        >>> args = '-a -b -cfoo -d bar a1 a2'.split()
-        >>> args
-        ['-a', '-b', '-cfoo', '-d', 'bar', 'a1', 'a2']
-        >>> optlist, args = getopt.getopt(args, 'abc:d:')
-        >>> optlist
-        [('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', 'bar')]
-        >>> args
-        ['a1', 'a2']
-
-        Using long option names is equally easy:
-
-
-        >>> s = '--condition=foo --testing --output-file abc.def -x a1 a2'
-        >>> args = s.split()
-        >>> args
-        ['--condition=foo', '--testing', '--output-file', 'abc.def', '-x', 'a1', 'a2']
-        >>> optlist, args = getopt.getopt(args, 'x', [
-        ...     'condition=', 'output-file=', 'testing'])
-        >>> optlist
-        [('--condition', 'foo'), ('--testing', ''), ('--output-file', 'abc.def'), ('-x', '')]
-        >>> args
-        ['a1', 'a2']
-        """
-
-        import types
-        m = types.ModuleType("libreftest", s)
-        run_doctest(m, verbose)
-
-    def test_issue4629(self):
-        longopts, shortopts = getopt.getopt(['--help='], '', ['help='])
-        self.assertEqual(longopts, [('--help', '')])
-        longopts, shortopts = getopt.getopt(['--help=x'], '', ['help='])
-        self.assertEqual(longopts, [('--help', 'x')])
-        self.assertRaises(getopt.GetoptError, getopt.getopt, ['--help='], '', ['help'])
-
-def test_main():
-    run_unittest(GetoptTests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gettext.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gettext.py
deleted file mode 100644
index d45b618..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gettext.py
+++ /dev/null
@@ -1,467 +0,0 @@
-import os
-import base64
-import shutil
-import gettext
-import unittest
-
-from test import test_support
-
-
-# TODO:
-#  - Add new tests, for example for "dgettext"
-#  - Remove dummy tests, for example testing for single and double quotes
-#    has no sense, it would have if we were testing a parser (i.e. pygettext)
-#  - Tests should have only one assert.
-
-GNU_MO_DATA = '''\
-3hIElQAAAAAGAAAAHAAAAEwAAAALAAAAfAAAAAAAAACoAAAAFQAAAKkAAAAjAAAAvwAAAKEAAADj
-AAAABwAAAIUBAAALAAAAjQEAAEUBAACZAQAAFgAAAN8CAAAeAAAA9gIAAKEAAAAVAwAABQAAALcD
-AAAJAAAAvQMAAAEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABQAAAAYAAAACAAAAAFJh
-eW1vbmQgTHV4dXJ5IFlhY2gtdABUaGVyZSBpcyAlcyBmaWxlAFRoZXJlIGFyZSAlcyBmaWxlcwBU
-aGlzIG1vZHVsZSBwcm92aWRlcyBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgbG9jYWxpemF0aW9u
-CnN1cHBvcnQgZm9yIHlvdXIgUHl0aG9uIHByb2dyYW1zIGJ5IHByb3ZpZGluZyBhbiBpbnRlcmZh
-Y2UgdG8gdGhlIEdOVQpnZXR0ZXh0IG1lc3NhZ2UgY2F0YWxvZyBsaWJyYXJ5LgBtdWxsdXNrAG51
-ZGdlIG51ZGdlAFByb2plY3QtSWQtVmVyc2lvbjogMi4wClBPLVJldmlzaW9uLURhdGU6IDIwMDAt
-MDgtMjkgMTI6MTktMDQ6MDAKTGFzdC1UcmFuc2xhdG9yOiBKLiBEYXZpZCBJYsOhw7FleiA8ai1k
-YXZpZEBub29zLmZyPgpMYW5ndWFnZS1UZWFtOiBYWCA8cHl0aG9uLWRldkBweXRob24ub3JnPgpN
-SU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9aXNvLTg4
-NTktMQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBub25lCkdlbmVyYXRlZC1CeTogcHlnZXR0
-ZXh0LnB5IDEuMQpQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD1uIT0xOwoAVGhyb2F0
-d29iYmxlciBNYW5ncm92ZQBIYXkgJXMgZmljaGVybwBIYXkgJXMgZmljaGVyb3MAR3V2ZiB6YnFo
-eXIgY2ViaXZxcmYgdmFncmVhbmd2YmFueXZtbmd2YmEgbmFxIHlicG55dm1uZ3ZiYQpmaGNjYmVn
-IHNiZSBsYmhlIENsZ3ViYSBjZWJ0ZW56ZiBvbCBjZWJpdnF2YXQgbmEgdmFncmVzbnByIGdiIGd1
-ciBUQUgKdHJnZ3JrZyB6cmZmbnRyIHBuZ255YnQgeXZvZW5lbC4AYmFjb24Ad2luayB3aW5rAA==
-'''
-
-UMO_DATA = '''\
-3hIElQAAAAACAAAAHAAAACwAAAAFAAAAPAAAAAAAAABQAAAABAAAAFEAAAAPAQAAVgAAAAQAAABm
-AQAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAYWLDngBQcm9qZWN0LUlkLVZlcnNpb246IDIuMApQTy1S
-ZXZpc2lvbi1EYXRlOiAyMDAzLTA0LTExIDEyOjQyLTA0MDAKTGFzdC1UcmFuc2xhdG9yOiBCYXJy
-eSBBLiBXQXJzYXcgPGJhcnJ5QHB5dGhvbi5vcmc+Ckxhbmd1YWdlLVRlYW06IFhYIDxweXRob24t
-ZGV2QHB5dGhvbi5vcmc+Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFp
-bjsgY2hhcnNldD11dGYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CkdlbmVyYXRl
-ZC1CeTogbWFudWFsbHkKAMKkeXoA
-'''
-
-MMO_DATA = '''\
-3hIElQAAAAABAAAAHAAAACQAAAADAAAALAAAAAAAAAA4AAAAeAEAADkAAAABAAAAAAAAAAAAAAAA
-UHJvamVjdC1JZC1WZXJzaW9uOiBObyBQcm9qZWN0IDAuMApQT1QtQ3JlYXRpb24tRGF0ZTogV2Vk
-IERlYyAxMSAwNzo0NDoxNSAyMDAyClBPLVJldmlzaW9uLURhdGU6IDIwMDItMDgtMTQgMDE6MTg6
-NTgrMDA6MDAKTGFzdC1UcmFuc2xhdG9yOiBKb2huIERvZSA8amRvZUBleGFtcGxlLmNvbT4KSmFu
-ZSBGb29iYXIgPGpmb29iYXJAZXhhbXBsZS5jb20+Ckxhbmd1YWdlLVRlYW06IHh4IDx4eEBleGFt
-cGxlLmNvbT4KTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy
-c2V0PWlzby04ODU5LTE1CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFi
-bGUKR2VuZXJhdGVkLUJ5OiBweWdldHRleHQucHkgMS4zCgA=
-'''
-
-LOCALEDIR = os.path.join('xx', 'LC_MESSAGES')
-MOFILE = os.path.join(LOCALEDIR, 'gettext.mo')
-UMOFILE = os.path.join(LOCALEDIR, 'ugettext.mo')
-MMOFILE = os.path.join(LOCALEDIR, 'metadata.mo')
-
-
-class GettextBaseTest(unittest.TestCase):
-    def setUp(self):
-        if not os.path.isdir(LOCALEDIR):
-            os.makedirs(LOCALEDIR)
-        with open(MOFILE, 'wb') as fp:
-            fp.write(base64.decodestring(GNU_MO_DATA))
-        with open(UMOFILE, 'wb') as fp:
-            fp.write(base64.decodestring(UMO_DATA))
-        with open(MMOFILE, 'wb') as fp:
-            fp.write(base64.decodestring(MMO_DATA))
-
-        self.env = test_support.EnvironmentVarGuard()
-        self.env['LANGUAGE'] = 'xx'
-        gettext._translations.clear()
-
-    def tearDown(self):
-        self.env.__exit__()
-        del self.env
-        shutil.rmtree(os.path.split(LOCALEDIR)[0])
-
-
-class GettextTestCase1(GettextBaseTest):
-    def setUp(self):
-        GettextBaseTest.setUp(self)
-        self.localedir = os.curdir
-        self.mofile = MOFILE
-        gettext.install('gettext', self.localedir)
-
-    def test_some_translations(self):
-        eq = self.assertEqual
-        # test some translations
-        eq(_('albatross'), 'albatross')
-        eq(_(u'mullusk'), 'bacon')
-        eq(_(r'Raymond Luxury Yach-t'), 'Throatwobbler Mangrove')
-        eq(_(ur'nudge nudge'), 'wink wink')
-
-    def test_double_quotes(self):
-        eq = self.assertEqual
-        # double quotes
-        eq(_("albatross"), 'albatross')
-        eq(_(u"mullusk"), 'bacon')
-        eq(_(r"Raymond Luxury Yach-t"), 'Throatwobbler Mangrove')
-        eq(_(ur"nudge nudge"), 'wink wink')
-
-    def test_triple_single_quotes(self):
-        eq = self.assertEqual
-        # triple single quotes
-        eq(_('''albatross'''), 'albatross')
-        eq(_(u'''mullusk'''), 'bacon')
-        eq(_(r'''Raymond Luxury Yach-t'''), 'Throatwobbler Mangrove')
-        eq(_(ur'''nudge nudge'''), 'wink wink')
-
-    def test_triple_double_quotes(self):
-        eq = self.assertEqual
-        # triple double quotes
-        eq(_("""albatross"""), 'albatross')
-        eq(_(u"""mullusk"""), 'bacon')
-        eq(_(r"""Raymond Luxury Yach-t"""), 'Throatwobbler Mangrove')
-        eq(_(ur"""nudge nudge"""), 'wink wink')
-
-    def test_multiline_strings(self):
-        eq = self.assertEqual
-        # multiline strings
-        eq(_('''This module provides internationalization and localization
-support for your Python programs by providing an interface to the GNU
-gettext message catalog library.'''),
-           '''Guvf zbqhyr cebivqrf vagreangvbanyvmngvba naq ybpnyvmngvba
-fhccbeg sbe lbhe Clguba cebtenzf ol cebivqvat na vagresnpr gb gur TAH
-trggrkg zrffntr pngnybt yvoenel.''')
-
-    def test_the_alternative_interface(self):
-        eq = self.assertEqual
-        # test the alternative interface
-        with open(self.mofile, 'rb') as fp:
-            t = gettext.GNUTranslations(fp)
-        # Install the translation object
-        t.install()
-        eq(_('nudge nudge'), 'wink wink')
-        # Try unicode return type
-        t.install(unicode=True)
-        eq(_('mullusk'), 'bacon')
-        # Test installation of other methods
-        import __builtin__
-        t.install(unicode=True, names=["gettext", "lgettext"])
-        eq(_, t.ugettext)
-        eq(__builtin__.gettext, t.ugettext)
-        eq(lgettext, t.lgettext)
-        del __builtin__.gettext
-        del __builtin__.lgettext
-
-
-class GettextTestCase2(GettextBaseTest):
-    def setUp(self):
-        GettextBaseTest.setUp(self)
-        self.localedir = os.curdir
-        # Set up the bindings
-        gettext.bindtextdomain('gettext', self.localedir)
-        gettext.textdomain('gettext')
-        # For convenience
-        self._ = gettext.gettext
-
-    def test_bindtextdomain(self):
-        self.assertEqual(gettext.bindtextdomain('gettext'), self.localedir)
-
-    def test_textdomain(self):
-        self.assertEqual(gettext.textdomain(), 'gettext')
-
-    def test_some_translations(self):
-        eq = self.assertEqual
-        # test some translations
-        eq(self._('albatross'), 'albatross')
-        eq(self._(u'mullusk'), 'bacon')
-        eq(self._(r'Raymond Luxury Yach-t'), 'Throatwobbler Mangrove')
-        eq(self._(ur'nudge nudge'), 'wink wink')
-
-    def test_double_quotes(self):
-        eq = self.assertEqual
-        # double quotes
-        eq(self._("albatross"), 'albatross')
-        eq(self._(u"mullusk"), 'bacon')
-        eq(self._(r"Raymond Luxury Yach-t"), 'Throatwobbler Mangrove')
-        eq(self._(ur"nudge nudge"), 'wink wink')
-
-    def test_triple_single_quotes(self):
-        eq = self.assertEqual
-        # triple single quotes
-        eq(self._('''albatross'''), 'albatross')
-        eq(self._(u'''mullusk'''), 'bacon')
-        eq(self._(r'''Raymond Luxury Yach-t'''), 'Throatwobbler Mangrove')
-        eq(self._(ur'''nudge nudge'''), 'wink wink')
-
-    def test_triple_double_quotes(self):
-        eq = self.assertEqual
-        # triple double quotes
-        eq(self._("""albatross"""), 'albatross')
-        eq(self._(u"""mullusk"""), 'bacon')
-        eq(self._(r"""Raymond Luxury Yach-t"""), 'Throatwobbler Mangrove')
-        eq(self._(ur"""nudge nudge"""), 'wink wink')
-
-    def test_multiline_strings(self):
-        eq = self.assertEqual
-        # multiline strings
-        eq(self._('''This module provides internationalization and localization
-support for your Python programs by providing an interface to the GNU
-gettext message catalog library.'''),
-           '''Guvf zbqhyr cebivqrf vagreangvbanyvmngvba naq ybpnyvmngvba
-fhccbeg sbe lbhe Clguba cebtenzf ol cebivqvat na vagresnpr gb gur TAH
-trggrkg zrffntr pngnybt yvoenel.''')
-
-
-class PluralFormsTestCase(GettextBaseTest):
-    def setUp(self):
-        GettextBaseTest.setUp(self)
-        self.mofile = MOFILE
-
-    def test_plural_forms1(self):
-        eq = self.assertEqual
-        x = gettext.ngettext('There is %s file', 'There are %s files', 1)
-        eq(x, 'Hay %s fichero')
-        x = gettext.ngettext('There is %s file', 'There are %s files', 2)
-        eq(x, 'Hay %s ficheros')
-
-    def test_plural_forms2(self):
-        eq = self.assertEqual
-        with open(self.mofile, 'rb') as fp:
-            t = gettext.GNUTranslations(fp)
-        x = t.ngettext('There is %s file', 'There are %s files', 1)
-        eq(x, 'Hay %s fichero')
-        x = t.ngettext('There is %s file', 'There are %s files', 2)
-        eq(x, 'Hay %s ficheros')
-
-    def test_hu(self):
-        eq = self.assertEqual
-        f = gettext.c2py('0')
-        s = ''.join([ str(f(x)) for x in range(200) ])
-        eq(s, "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
-
-    def test_de(self):
-        eq = self.assertEqual
-        f = gettext.c2py('n != 1')
-        s = ''.join([ str(f(x)) for x in range(200) ])
-        eq(s, "10111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111")
-
-    def test_fr(self):
-        eq = self.assertEqual
-        f = gettext.c2py('n>1')
-        s = ''.join([ str(f(x)) for x in range(200) ])
-        eq(s, "00111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111")
-
-    def test_gd(self):
-        eq = self.assertEqual
-        f = gettext.c2py('n==1 ? 0 : n==2 ? 1 : 2')
-        s = ''.join([ str(f(x)) for x in range(200) ])
-        eq(s, "20122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222")
-
-    def test_gd2(self):
-        eq = self.assertEqual
-        # Tests the combination of parentheses and "?:"
-        f = gettext.c2py('n==1 ? 0 : (n==2 ? 1 : 2)')
-        s = ''.join([ str(f(x)) for x in range(200) ])
-        eq(s, "20122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222")
-
-    def test_lt(self):
-        eq = self.assertEqual
-        f = gettext.c2py('n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2')
-        s = ''.join([ str(f(x)) for x in range(200) ])
-        eq(s, "20111111112222222222201111111120111111112011111111201111111120111111112011111111201111111120111111112011111111222222222220111111112011111111201111111120111111112011111111201111111120111111112011111111")
-
-    def test_ru(self):
-        eq = self.assertEqual
-        f = gettext.c2py('n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2')
-        s = ''.join([ str(f(x)) for x in range(200) ])
-        eq(s, "20111222222222222222201112222220111222222011122222201112222220111222222011122222201112222220111222222011122222222222222220111222222011122222201112222220111222222011122222201112222220111222222011122222")
-
-    def test_pl(self):
-        eq = self.assertEqual
-        f = gettext.c2py('n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2')
-        s = ''.join([ str(f(x)) for x in range(200) ])
-        eq(s, "20111222222222222222221112222222111222222211122222221112222222111222222211122222221112222222111222222211122222222222222222111222222211122222221112222222111222222211122222221112222222111222222211122222")
-
-    def test_sl(self):
-        eq = self.assertEqual
-        f = gettext.c2py('n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3')
-        s = ''.join([ str(f(x)) for x in range(200) ])
-        eq(s, "30122333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333012233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333")
-
-    def test_security(self):
-        raises = self.assertRaises
-        # Test for a dangerous expression
-        raises(ValueError, gettext.c2py, "os.chmod('/etc/passwd',0777)")
-
-
-class UnicodeTranslationsTest(GettextBaseTest):
-    def setUp(self):
-        GettextBaseTest.setUp(self)
-        with open(UMOFILE, 'rb') as fp:
-            self.t = gettext.GNUTranslations(fp)
-        self._ = self.t.ugettext
-
-    def test_unicode_msgid(self):
-        unless = self.assertTrue
-        unless(isinstance(self._(''), unicode))
-        unless(isinstance(self._(u''), unicode))
-
-    def test_unicode_msgstr(self):
-        eq = self.assertEqual
-        eq(self._(u'ab\xde'), u'\xa4yz')
-
-
-class WeirdMetadataTest(GettextBaseTest):
-    def setUp(self):
-        GettextBaseTest.setUp(self)
-        with open(MMOFILE, 'rb') as fp:
-            try:
-                self.t = gettext.GNUTranslations(fp)
-            except:
-                self.tearDown()
-                raise
-
-    def test_weird_metadata(self):
-        info = self.t.info()
-        self.assertEqual(info['last-translator'],
-           'John Doe <jdoe@example.com>\nJane Foobar <jfoobar@example.com>')
-
-
-class DummyGNUTranslations(gettext.GNUTranslations):
-    def foo(self):
-        return 'foo'
-
-
-class GettextCacheTestCase(GettextBaseTest):
-    def test_cache(self):
-        self.localedir = os.curdir
-        self.mofile = MOFILE
-
-        self.assertEqual(len(gettext._translations), 0)
-
-        t = gettext.translation('gettext', self.localedir)
-
-        self.assertEqual(len(gettext._translations), 1)
-
-        t = gettext.translation('gettext', self.localedir,
-                                class_=DummyGNUTranslations)
-
-        self.assertEqual(len(gettext._translations), 2)
-        self.assertEqual(t.__class__, DummyGNUTranslations)
-
-        # Calling it again doesn't add to the cache
-
-        t = gettext.translation('gettext', self.localedir,
-                                class_=DummyGNUTranslations)
-
-        self.assertEqual(len(gettext._translations), 2)
-        self.assertEqual(t.__class__, DummyGNUTranslations)
-
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == '__main__':
-    test_main()
-
-
-# For reference, here's the .po file used to created the GNU_MO_DATA above.
-#
-# The original version was automatically generated from the sources with
-# pygettext. Later it was manually modified to add plural forms support.
-
-'''
-# Dummy translation for the Python test_gettext.py module.
-# Copyright (C) 2001 Python Software Foundation
-# Barry Warsaw <barry@python.org>, 2000.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: 2.0\n"
-"PO-Revision-Date: 2003-04-11 14:32-0400\n"
-"Last-Translator: J. David Ibanez <j-david@noos.fr>\n"
-"Language-Team: XX <python-dev@python.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: pygettext.py 1.1\n"
-"Plural-Forms: nplurals=2; plural=n!=1;\n"
-
-#: test_gettext.py:19 test_gettext.py:25 test_gettext.py:31 test_gettext.py:37
-#: test_gettext.py:51 test_gettext.py:80 test_gettext.py:86 test_gettext.py:92
-#: test_gettext.py:98
-msgid "nudge nudge"
-msgstr "wink wink"
-
-#: test_gettext.py:16 test_gettext.py:22 test_gettext.py:28 test_gettext.py:34
-#: test_gettext.py:77 test_gettext.py:83 test_gettext.py:89 test_gettext.py:95
-msgid "albatross"
-msgstr ""
-
-#: test_gettext.py:18 test_gettext.py:24 test_gettext.py:30 test_gettext.py:36
-#: test_gettext.py:79 test_gettext.py:85 test_gettext.py:91 test_gettext.py:97
-msgid "Raymond Luxury Yach-t"
-msgstr "Throatwobbler Mangrove"
-
-#: test_gettext.py:17 test_gettext.py:23 test_gettext.py:29 test_gettext.py:35
-#: test_gettext.py:56 test_gettext.py:78 test_gettext.py:84 test_gettext.py:90
-#: test_gettext.py:96
-msgid "mullusk"
-msgstr "bacon"
-
-#: test_gettext.py:40 test_gettext.py:101
-msgid ""
-"This module provides internationalization and localization\n"
-"support for your Python programs by providing an interface to the GNU\n"
-"gettext message catalog library."
-msgstr ""
-"Guvf zbqhyr cebivqrf vagreangvbanyvmngvba naq ybpnyvmngvba\n"
-"fhccbeg sbe lbhe Clguba cebtenzf ol cebivqvat na vagresnpr gb gur TAH\n"
-"trggrkg zrffntr pngnybt yvoenel."
-
-# Manually added, as neither pygettext nor xgettext support plural forms
-# in Python.
-msgid "There is %s file"
-msgid_plural "There are %s files"
-msgstr[0] "Hay %s fichero"
-msgstr[1] "Hay %s ficheros"
-'''
-
-# Here's the second example po file example, used to generate the UMO_DATA
-# containing utf-8 encoded Unicode strings
-
-'''
-# Dummy translation for the Python test_gettext.py module.
-# Copyright (C) 2001 Python Software Foundation
-# Barry Warsaw <barry@python.org>, 2000.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: 2.0\n"
-"PO-Revision-Date: 2003-04-11 12:42-0400\n"
-"Last-Translator: Barry A. WArsaw <barry@python.org>\n"
-"Language-Team: XX <python-dev@python.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 7bit\n"
-"Generated-By: manually\n"
-
-#: nofile:0
-msgid "ab\xc3\x9e"
-msgstr "\xc2\xa4yz"
-'''
-
-# Here's the third example po file, used to generate MMO_DATA
-
-'''
-msgid ""
-msgstr ""
-"Project-Id-Version: No Project 0.0\n"
-"POT-Creation-Date: Wed Dec 11 07:44:15 2002\n"
-"PO-Revision-Date: 2002-08-14 01:18:58+00:00\n"
-"Last-Translator: John Doe <jdoe@example.com>\n"
-"Jane Foobar <jfoobar@example.com>\n"
-"Language-Team: xx <xx@example.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-15\n"
-"Content-Transfer-Encoding: quoted-printable\n"
-"Generated-By: pygettext.py 1.3\n"
-'''
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gl.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gl.py
deleted file mode 100644
index 734b990..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gl.py
+++ /dev/null
@@ -1,155 +0,0 @@
-#! /usr/bin/env python
-"""Very simple test script for the SGI gl library extension module
-    taken mostly from the documentation.
-    Roger E. Masse
-"""
-import unittest
-from test.test_support import verbose, import_module
-import time
-gl = import_module('gl')
-GL = import_module('GL')
-
-glattrs = ['RGBcolor', 'RGBcursor', 'RGBmode', 'RGBrange', 'RGBwritemask',
-'__doc__', '__name__', 'addtopup', 'altgetmatrix', 'arc', 'arcf',
-'arcfi', 'arcfs', 'arci', 'arcs', 'attachcursor', 'backbuffer',
-'backface', 'bbox2', 'bbox2i', 'bbox2s', 'bgnclosedline', 'bgnline',
-'bgnpoint', 'bgnpolygon', 'bgnsurface', 'bgntmesh', 'bgntrim',
-'blankscreen', 'blanktime', 'blendfunction', 'blink', 'c3f', 'c3i',
-'c3s', 'c4f', 'c4i', 'c4s', 'callobj', 'charstr', 'chunksize', 'circ',
-'circf', 'circfi', 'circfs', 'circi', 'circs', 'clear',
-'clearhitcode', 'clkoff', 'clkon', 'closeobj', 'cmode', 'cmov',
-'cmov2', 'cmov2i', 'cmov2s', 'cmovi', 'cmovs', 'color', 'colorf',
-'compactify', 'concave', 'cpack', 'crv', 'crvn', 'curorigin',
-'cursoff', 'curson', 'curstype', 'curvebasis', 'curveit',
-'curveprecision', 'cyclemap', 'czclear', 'defbasis', 'defcursor',
-'deflinestyle', 'delobj', 'deltag', 'depthcue', 'devport', 'dglclose',
-'dglopen', 'dither', 'dopup', 'doublebuffer', 'draw', 'draw2',
-'draw2i', 'draw2s', 'drawi', 'drawmode', 'draws', 'editobj',
-'endclosedline', 'endfullscrn', 'endline', 'endpick', 'endpoint',
-'endpolygon', 'endpupmode', 'endselect', 'endsurface', 'endtmesh',
-'endtrim', 'finish', 'font', 'foreground', 'freepup', 'frontbuffer',
-'fudge', 'fullscrn', 'gRGBcolor', 'gRGBmask', 'gammaramp', 'gbegin',
-'gconfig', 'genobj', 'gentag', 'getbackface', 'getbuffer',
-'getbutton', 'getcmmode', 'getcolor', 'getcpos', 'getcursor',
-'getdcm', 'getdepth', 'getdescender', 'getdisplaymode', 'getdrawmode',
-'getfont', 'getgdesc', 'getgpos', 'getheight', 'gethitcode',
-'getlsbackup', 'getlsrepeat', 'getlstyle', 'getlwidth', 'getmap',
-'getmatrix', 'getmcolor', 'getmmode', 'getmonitor',
-'getnurbsproperty', 'getopenobj', 'getorigin', 'getothermonitor',
-'getpattern', 'getplanes', 'getport', 'getresetls', 'getscrmask',
-'getshade', 'getsize', 'getsm', 'gettp', 'getvaluator', 'getvideo',
-'getviewport', 'getwritemask', 'getzbuffer', 'gewrite', 'gflush',
-'ginit', 'glcompat', 'greset', 'gselect', 'gsync', 'gversion',
-'iconsize', 'icontitle', 'imakebackground', 'initnames', 'ismex',
-'isobj', 'isqueued', 'istag', 'keepaspect', 'lRGBrange', 'lampoff',
-'lampon', 'linesmooth', 'linewidth', 'lmbind', 'lmcolor', 'lmdef',
-'loadmatrix', 'loadname', 'logicop', 'lookat', 'lrectread',
-'lrectwrite', 'lsbackup', 'lsetdepth', 'lshaderange', 'lsrepeat',
-'makeobj', 'maketag', 'mapcolor', 'mapw', 'mapw2', 'maxsize',
-'minsize', 'mmode', 'move', 'move2', 'move2i', 'move2s', 'movei',
-'moves', 'multimap', 'multmatrix', 'n3f', 'newpup', 'newtag',
-'noborder', 'noise', 'noport', 'normal', 'nurbscurve', 'nurbssurface',
-'nvarray', 'objdelete', 'objinsert', 'objreplace', 'onemap', 'ortho',
-'ortho2', 'overlay', 'packrect', 'pagecolor', 'pagewritemask',
-'passthrough', 'patch', 'patchbasis', 'patchcurves', 'patchprecision',
-'pclos', 'pdr', 'pdr2', 'pdr2i', 'pdr2s', 'pdri', 'pdrs',
-'perspective', 'pick', 'picksize', 'pixmode', 'pmv', 'pmv2', 'pmv2i',
-'pmv2s', 'pmvi', 'pmvs', 'pnt', 'pnt2', 'pnt2i', 'pnt2s', 'pnti',
-'pnts', 'pntsmooth', 'polarview', 'polf', 'polf2', 'polf2i', 'polf2s',
-'polfi', 'polfs', 'poly', 'poly2', 'poly2i', 'poly2s', 'polyi',
-'polys', 'popattributes', 'popmatrix', 'popname', 'popviewport',
-'prefposition', 'prefsize', 'pupmode', 'pushattributes', 'pushmatrix',
-'pushname', 'pushviewport', 'pwlcurve', 'qdevice', 'qenter', 'qgetfd',
-'qread', 'qreset', 'qtest', 'rcrv', 'rcrvn', 'rdr', 'rdr2', 'rdr2i',
-'rdr2s', 'rdri', 'rdrs', 'readdisplay', 'readsource', 'rect',
-'rectcopy', 'rectf', 'rectfi', 'rectfs', 'recti', 'rects', 'rectzoom',
-'resetls', 'reshapeviewport', 'ringbell', 'rmv', 'rmv2', 'rmv2i',
-'rmv2s', 'rmvi', 'rmvs', 'rot', 'rotate', 'rpatch', 'rpdr', 'rpdr2',
-'rpdr2i', 'rpdr2s', 'rpdri', 'rpdrs', 'rpmv', 'rpmv2', 'rpmv2i',
-'rpmv2s', 'rpmvi', 'rpmvs', 'sbox', 'sboxf', 'sboxfi', 'sboxfs',
-'sboxi', 'sboxs', 'scale', 'screenspace', 'scrmask', 'setbell',
-'setcursor', 'setdepth', 'setlinestyle', 'setmap', 'setmonitor',
-'setnurbsproperty', 'setpattern', 'setpup', 'setshade', 'setvaluator',
-'setvideo', 'shademodel', 'shaderange', 'singlebuffer', 'smoothline',
-'spclos', 'splf', 'splf2', 'splf2i', 'splf2s', 'splfi', 'splfs',
-'stepunit', 'strwidth', 'subpixel', 'swapbuffers', 'swapinterval',
-'swaptmesh', 'swinopen', 'textcolor', 'textinit', 'textport',
-'textwritemask', 'tie', 'tpoff', 'tpon', 'translate', 'underlay',
-'unpackrect', 'unqdevice', 'v2d', 'v2f', 'v2i', 'v2s', 'v3d', 'v3f',
-'v3i', 'v3s', 'v4d', 'v4f', 'v4i', 'v4s', 'varray', 'videocmd',
-'viewport', 'vnarray', 'winattach', 'winclose', 'winconstraints',
-'windepth', 'window', 'winget', 'winmove', 'winopen', 'winpop',
-'winposition', 'winpush', 'winset', 'wintitle', 'wmpack', 'writemask',
-'writepixels', 'xfpt', 'xfpt2', 'xfpt2i', 'xfpt2s', 'xfpt4', 'xfpt4i',
-'xfpt4s', 'xfpti', 'xfpts', 'zbuffer', 'zclear', 'zdraw', 'zfunction',
-'zsource', 'zwritemask']
-
-def test_main():
-    # insure that we at least have an X display before continuing.
-    import os
-    try:
-        display = os.environ['DISPLAY']
-    except:
-        raise unittest.SkipTest, "No $DISPLAY -- skipping gl test"
-
-    # touch all the attributes of gl without doing anything
-    if verbose:
-        print 'Touching gl module attributes...'
-    for attr in glattrs:
-        if verbose:
-            print 'touching: ', attr
-        getattr(gl, attr)
-
-    # create a small 'Crisscross' window
-    if verbose:
-        print 'Creating a small "CrissCross" window...'
-        print 'foreground'
-    gl.foreground()
-    if verbose:
-        print 'prefposition'
-    gl.prefposition(500, 900, 500, 900)
-    if verbose:
-        print 'winopen "CrissCross"'
-    w = gl.winopen('CrissCross')
-    if verbose:
-        print 'clear'
-    gl.clear()
-    if verbose:
-        print 'ortho2'
-    gl.ortho2(0.0, 400.0, 0.0, 400.0)
-    if verbose:
-        print 'color WHITE'
-    gl.color(GL.WHITE)
-    if verbose:
-        print 'color RED'
-    gl.color(GL.RED)
-    if verbose:
-        print 'bgnline'
-    gl.bgnline()
-    if verbose:
-        print 'v2f'
-    gl.v2f(0.0, 0.0)
-    gl.v2f(400.0, 400.0)
-    if verbose:
-        print 'endline'
-    gl.endline()
-    if verbose:
-        print 'bgnline'
-    gl.bgnline()
-    if verbose:
-        print 'v2i'
-    gl.v2i(400, 0)
-    gl.v2i(0, 400)
-    if verbose:
-        print 'endline'
-    gl.endline()
-    if verbose:
-        print 'Displaying window for 2 seconds...'
-    time.sleep(2)
-    if verbose:
-        print 'winclose'
-    gl.winclose(w)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_glob.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_glob.py
deleted file mode 100644
index 9a984f2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_glob.py
+++ /dev/null
@@ -1,114 +0,0 @@
-import unittest
-from test.test_support import run_unittest, TESTFN
-import glob
-import os
-import shutil
-
-class GlobTests(unittest.TestCase):
-
-    def norm(self, *parts):
-        return os.path.normpath(os.path.join(self.tempdir, *parts))
-
-    def mktemp(self, *parts):
-        filename = self.norm(*parts)
-        base, file = os.path.split(filename)
-        if not os.path.exists(base):
-            os.makedirs(base)
-        f = open(filename, 'w')
-        f.close()
-
-    def setUp(self):
-        self.tempdir = TESTFN+"_dir"
-        self.mktemp('a', 'D')
-        self.mktemp('aab', 'F')
-        self.mktemp('aaa', 'zzzF')
-        self.mktemp('ZZZ')
-        self.mktemp('a', 'bcd', 'EF')
-        self.mktemp('a', 'bcd', 'efg', 'ha')
-        if hasattr(os, 'symlink'):
-            os.symlink(self.norm('broken'), self.norm('sym1'))
-            os.symlink(self.norm('broken'), self.norm('sym2'))
-
-    def tearDown(self):
-        shutil.rmtree(self.tempdir)
-
-    def glob(self, *parts):
-        if len(parts) == 1:
-            pattern = parts[0]
-        else:
-            pattern = os.path.join(*parts)
-        p = os.path.join(self.tempdir, pattern)
-        res = glob.glob(p)
-        self.assertEqual(list(glob.iglob(p)), res)
-        return res
-
-    def assertSequencesEqual_noorder(self, l1, l2):
-        self.assertEqual(set(l1), set(l2))
-
-    def test_glob_literal(self):
-        eq = self.assertSequencesEqual_noorder
-        eq(self.glob('a'), [self.norm('a')])
-        eq(self.glob('a', 'D'), [self.norm('a', 'D')])
-        eq(self.glob('aab'), [self.norm('aab')])
-        eq(self.glob('zymurgy'), [])
-
-        # test return types are unicode, but only if os.listdir
-        # returns unicode filenames
-        uniset = set([unicode])
-        tmp = os.listdir(u'.')
-        if set(type(x) for x in tmp) == uniset:
-            u1 = glob.glob(u'*')
-            u2 = glob.glob(u'./*')
-            self.assertEqual(set(type(r) for r in u1), uniset)
-            self.assertEqual(set(type(r) for r in u2), uniset)
-
-    def test_glob_one_directory(self):
-        eq = self.assertSequencesEqual_noorder
-        eq(self.glob('a*'), map(self.norm, ['a', 'aab', 'aaa']))
-        eq(self.glob('*a'), map(self.norm, ['a', 'aaa']))
-        eq(self.glob('aa?'), map(self.norm, ['aaa', 'aab']))
-        eq(self.glob('aa[ab]'), map(self.norm, ['aaa', 'aab']))
-        eq(self.glob('*q'), [])
-
-    def test_glob_nested_directory(self):
-        eq = self.assertSequencesEqual_noorder
-        if os.path.normcase("abCD") == "abCD":
-            # case-sensitive filesystem
-            eq(self.glob('a', 'bcd', 'E*'), [self.norm('a', 'bcd', 'EF')])
-        else:
-            # case insensitive filesystem
-            eq(self.glob('a', 'bcd', 'E*'), [self.norm('a', 'bcd', 'EF'),
-                                             self.norm('a', 'bcd', 'efg')])
-        eq(self.glob('a', 'bcd', '*g'), [self.norm('a', 'bcd', 'efg')])
-
-    def test_glob_directory_names(self):
-        eq = self.assertSequencesEqual_noorder
-        eq(self.glob('*', 'D'), [self.norm('a', 'D')])
-        eq(self.glob('*', '*a'), [])
-        eq(self.glob('a', '*', '*', '*a'),
-           [self.norm('a', 'bcd', 'efg', 'ha')])
-        eq(self.glob('?a?', '*F'), map(self.norm, [os.path.join('aaa', 'zzzF'),
-                                                   os.path.join('aab', 'F')]))
-
-    def test_glob_directory_with_trailing_slash(self):
-        # We are verifying that when there is wildcard pattern which
-        # ends with os.sep doesn't blow up.
-        res = glob.glob(self.tempdir + '*' + os.sep)
-        self.assertEqual(len(res), 1)
-        # either of these results are reasonable
-        self.assertIn(res[0], [self.tempdir, self.tempdir + os.sep])
-
-    def test_glob_broken_symlinks(self):
-        if hasattr(os, 'symlink'):
-            eq = self.assertSequencesEqual_noorder
-            eq(self.glob('sym*'), [self.norm('sym1'), self.norm('sym2')])
-            eq(self.glob('sym1'), [self.norm('sym1')])
-            eq(self.glob('sym2'), [self.norm('sym2')])
-
-
-def test_main():
-    run_unittest(GlobTests)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_global.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_global.py
deleted file mode 100644
index 63154e4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_global.py
+++ /dev/null
@@ -1,52 +0,0 @@
-"""Verify that warnings are issued for global statements following use."""
-
-from test.test_support import run_unittest, check_syntax_error
-import unittest
-import warnings
-
-
-class GlobalTests(unittest.TestCase):
-
-    def test1(self):
-        prog_text_1 = """\
-def wrong1():
-    a = 1
-    b = 2
-    global a
-    global b
-"""
-        check_syntax_error(self, prog_text_1)
-
-    def test2(self):
-        prog_text_2 = """\
-def wrong2():
-    print x
-    global x
-"""
-        check_syntax_error(self, prog_text_2)
-
-    def test3(self):
-        prog_text_3 = """\
-def wrong3():
-    print x
-    x = 2
-    global x
-"""
-        check_syntax_error(self, prog_text_3)
-
-    def test4(self):
-        prog_text_4 = """\
-global x
-x = 2
-"""
-        # this should work
-        compile(prog_text_4, "<test string>", "exec")
-
-
-def test_main():
-    with warnings.catch_warnings():
-        warnings.filterwarnings("error", module="<test string>")
-        run_unittest(GlobalTests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_grammar.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_grammar.py
deleted file mode 100644
index dd93f93..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_grammar.py
+++ /dev/null
@@ -1,999 +0,0 @@
-# Python test set -- part 1, grammar.
-# This just tests whether the parser accepts them all.
-
-from test.test_support import run_unittest, check_syntax_error, \
-                              check_py3k_warnings
-import unittest
-import sys
-# testing import *
-from sys import *
-
-
-class TokenTests(unittest.TestCase):
-
-    def testBackslash(self):
-        # Backslash means line continuation:
-        x = 1 \
-        + 1
-        self.assertEqual(x, 2, 'backslash for line continuation')
-
-        # Backslash does not means continuation in comments :\
-        x = 0
-        self.assertEqual(x, 0, 'backslash ending comment')
-
-    def testPlainIntegers(self):
-        self.assertEqual(0xff, 255)
-        self.assertEqual(0377, 255)
-        self.assertEqual(2147483647, 017777777777)
-        # "0x" is not a valid literal
-        self.assertRaises(SyntaxError, eval, "0x")
-        from sys import maxint
-        if maxint == 2147483647:
-            self.assertEqual(-2147483647-1, -020000000000)
-            # XXX -2147483648
-            self.assertTrue(037777777777 > 0)
-            self.assertTrue(0xffffffff > 0)
-            for s in '2147483648', '040000000000', '0x100000000':
-                try:
-                    x = eval(s)
-                except OverflowError:
-                    self.fail("OverflowError on huge integer literal %r" % s)
-        elif maxint == 9223372036854775807:
-            self.assertEqual(-9223372036854775807-1, -01000000000000000000000)
-            self.assertTrue(01777777777777777777777 > 0)
-            self.assertTrue(0xffffffffffffffff > 0)
-            for s in '9223372036854775808', '02000000000000000000000', \
-                     '0x10000000000000000':
-                try:
-                    x = eval(s)
-                except OverflowError:
-                    self.fail("OverflowError on huge integer literal %r" % s)
-        else:
-            self.fail('Weird maxint value %r' % maxint)
-
-    def testLongIntegers(self):
-        x = 0L
-        x = 0l
-        x = 0xffffffffffffffffL
-        x = 0xffffffffffffffffl
-        x = 077777777777777777L
-        x = 077777777777777777l
-        x = 123456789012345678901234567890L
-        x = 123456789012345678901234567890l
-
-    def testFloats(self):
-        x = 3.14
-        x = 314.
-        x = 0.314
-        # XXX x = 000.314
-        x = .314
-        x = 3e14
-        x = 3E14
-        x = 3e-14
-        x = 3e+14
-        x = 3.e14
-        x = .3e14
-        x = 3.1e4
-
-    def testStringLiterals(self):
-        x = ''; y = ""; self.assertTrue(len(x) == 0 and x == y)
-        x = '\''; y = "'"; self.assertTrue(len(x) == 1 and x == y and ord(x) == 39)
-        x = '"'; y = "\""; self.assertTrue(len(x) == 1 and x == y and ord(x) == 34)
-        x = "doesn't \"shrink\" does it"
-        y = 'doesn\'t "shrink" does it'
-        self.assertTrue(len(x) == 24 and x == y)
-        x = "does \"shrink\" doesn't it"
-        y = 'does "shrink" doesn\'t it'
-        self.assertTrue(len(x) == 24 and x == y)
-        x = """
-The "quick"
-brown fox
-jumps over
-the 'lazy' dog.
-"""
-        y = '\nThe "quick"\nbrown fox\njumps over\nthe \'lazy\' dog.\n'
-        self.assertEqual(x, y)
-        y = '''
-The "quick"
-brown fox
-jumps over
-the 'lazy' dog.
-'''
-        self.assertEqual(x, y)
-        y = "\n\
-The \"quick\"\n\
-brown fox\n\
-jumps over\n\
-the 'lazy' dog.\n\
-"
-        self.assertEqual(x, y)
-        y = '\n\
-The \"quick\"\n\
-brown fox\n\
-jumps over\n\
-the \'lazy\' dog.\n\
-'
-        self.assertEqual(x, y)
-
-
-class GrammarTests(unittest.TestCase):
-
-    # single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE
-    # XXX can't test in a script -- this rule is only used when interactive
-
-    # file_input: (NEWLINE | stmt)* ENDMARKER
-    # Being tested as this very moment this very module
-
-    # expr_input: testlist NEWLINE
-    # XXX Hard to test -- used only in calls to input()
-
-    def testEvalInput(self):
-        # testlist ENDMARKER
-        x = eval('1, 0 or 1')
-
-    def testFuncdef(self):
-        ### 'def' NAME parameters ':' suite
-        ### parameters: '(' [varargslist] ')'
-        ### varargslist: (fpdef ['=' test] ',')* ('*' NAME [',' ('**'|'*' '*') NAME]
-        ###            | ('**'|'*' '*') NAME)
-        ###            | fpdef ['=' test] (',' fpdef ['=' test])* [',']
-        ### fpdef: NAME | '(' fplist ')'
-        ### fplist: fpdef (',' fpdef)* [',']
-        ### arglist: (argument ',')* (argument | *' test [',' '**' test] | '**' test)
-        ### argument: [test '='] test   # Really [keyword '='] test
-        def f1(): pass
-        f1()
-        f1(*())
-        f1(*(), **{})
-        def f2(one_argument): pass
-        def f3(two, arguments): pass
-        # Silence Py3k warning
-        exec('def f4(two, (compound, (argument, list))): pass')
-        exec('def f5((compound, first), two): pass')
-        self.assertEqual(f2.func_code.co_varnames, ('one_argument',))
-        self.assertEqual(f3.func_code.co_varnames, ('two', 'arguments'))
-        if sys.platform.startswith('java'):
-            self.assertEqual(f4.func_code.co_varnames,
-                   ('two', '(compound, (argument, list))', 'compound', 'argument',
-                                'list',))
-            self.assertEqual(f5.func_code.co_varnames,
-                   ('(compound, first)', 'two', 'compound', 'first'))
-        else:
-            self.assertEqual(f4.func_code.co_varnames,
-                  ('two', '.1', 'compound', 'argument',  'list'))
-            self.assertEqual(f5.func_code.co_varnames,
-                  ('.0', 'two', 'compound', 'first'))
-        def a1(one_arg,): pass
-        def a2(two, args,): pass
-        def v0(*rest): pass
-        def v1(a, *rest): pass
-        def v2(a, b, *rest): pass
-        # Silence Py3k warning
-        exec('def v3(a, (b, c), *rest): return a, b, c, rest')
-
-        f1()
-        f2(1)
-        f2(1,)
-        f3(1, 2)
-        f3(1, 2,)
-        f4(1, (2, (3, 4)))
-        v0()
-        v0(1)
-        v0(1,)
-        v0(1,2)
-        v0(1,2,3,4,5,6,7,8,9,0)
-        v1(1)
-        v1(1,)
-        v1(1,2)
-        v1(1,2,3)
-        v1(1,2,3,4,5,6,7,8,9,0)
-        v2(1,2)
-        v2(1,2,3)
-        v2(1,2,3,4)
-        v2(1,2,3,4,5,6,7,8,9,0)
-        v3(1,(2,3))
-        v3(1,(2,3),4)
-        v3(1,(2,3),4,5,6,7,8,9,0)
-
-        # ceval unpacks the formal arguments into the first argcount names;
-        # thus, the names nested inside tuples must appear after these names.
-        if sys.platform.startswith('java'):
-            self.assertEqual(v3.func_code.co_varnames, ('a', '(b, c)', 'rest', 'b', 'c'))
-        else:
-            self.assertEqual(v3.func_code.co_varnames, ('a', '.1', 'rest', 'b', 'c'))
-        self.assertEqual(v3(1, (2, 3), 4), (1, 2, 3, (4,)))
-        def d01(a=1): pass
-        d01()
-        d01(1)
-        d01(*(1,))
-        d01(**{'a':2})
-        def d11(a, b=1): pass
-        d11(1)
-        d11(1, 2)
-        d11(1, **{'b':2})
-        def d21(a, b, c=1): pass
-        d21(1, 2)
-        d21(1, 2, 3)
-        d21(*(1, 2, 3))
-        d21(1, *(2, 3))
-        d21(1, 2, *(3,))
-        d21(1, 2, **{'c':3})
-        def d02(a=1, b=2): pass
-        d02()
-        d02(1)
-        d02(1, 2)
-        d02(*(1, 2))
-        d02(1, *(2,))
-        d02(1, **{'b':2})
-        d02(**{'a': 1, 'b': 2})
-        def d12(a, b=1, c=2): pass
-        d12(1)
-        d12(1, 2)
-        d12(1, 2, 3)
-        def d22(a, b, c=1, d=2): pass
-        d22(1, 2)
-        d22(1, 2, 3)
-        d22(1, 2, 3, 4)
-        def d01v(a=1, *rest): pass
-        d01v()
-        d01v(1)
-        d01v(1, 2)
-        d01v(*(1, 2, 3, 4))
-        d01v(*(1,))
-        d01v(**{'a':2})
-        def d11v(a, b=1, *rest): pass
-        d11v(1)
-        d11v(1, 2)
-        d11v(1, 2, 3)
-        def d21v(a, b, c=1, *rest): pass
-        d21v(1, 2)
-        d21v(1, 2, 3)
-        d21v(1, 2, 3, 4)
-        d21v(*(1, 2, 3, 4))
-        d21v(1, 2, **{'c': 3})
-        def d02v(a=1, b=2, *rest): pass
-        d02v()
-        d02v(1)
-        d02v(1, 2)
-        d02v(1, 2, 3)
-        d02v(1, *(2, 3, 4))
-        d02v(**{'a': 1, 'b': 2})
-        def d12v(a, b=1, c=2, *rest): pass
-        d12v(1)
-        d12v(1, 2)
-        d12v(1, 2, 3)
-        d12v(1, 2, 3, 4)
-        d12v(*(1, 2, 3, 4))
-        d12v(1, 2, *(3, 4, 5))
-        d12v(1, *(2,), **{'c': 3})
-        def d22v(a, b, c=1, d=2, *rest): pass
-        d22v(1, 2)
-        d22v(1, 2, 3)
-        d22v(1, 2, 3, 4)
-        d22v(1, 2, 3, 4, 5)
-        d22v(*(1, 2, 3, 4))
-        d22v(1, 2, *(3, 4, 5))
-        d22v(1, *(2, 3), **{'d': 4})
-        # Silence Py3k warning
-        exec('def d31v((x)): pass')
-        exec('def d32v((x,)): pass')
-        d31v(1)
-        d32v((1,))
-
-        # keyword arguments after *arglist
-        def f(*args, **kwargs):
-            return args, kwargs
-        self.assertEqual(f(1, x=2, *[3, 4], y=5), ((1, 3, 4),
-                                                    {'x':2, 'y':5}))
-        self.assertRaises(SyntaxError, eval, "f(1, *(2,3), 4)")
-        self.assertRaises(SyntaxError, eval, "f(1, x=2, *(3,4), x=5)")
-
-        # Check ast errors in *args and *kwargs
-        check_syntax_error(self, "f(*g(1=2))")
-        check_syntax_error(self, "f(**g(1=2))")
-
-    def testLambdef(self):
-        ### lambdef: 'lambda' [varargslist] ':' test
-        l1 = lambda : 0
-        self.assertEqual(l1(), 0)
-        l2 = lambda : a[d] # XXX just testing the expression
-        l3 = lambda : [2 < x for x in [-1, 3, 0L]]
-        self.assertEqual(l3(), [0, 1, 0])
-        l4 = lambda x = lambda y = lambda z=1 : z : y() : x()
-        self.assertEqual(l4(), 1)
-        l5 = lambda x, y, z=2: x + y + z
-        self.assertEqual(l5(1, 2), 5)
-        self.assertEqual(l5(1, 2, 3), 6)
-        check_syntax_error(self, "lambda x: x = 2")
-        check_syntax_error(self, "lambda (None,): None")
-
-    ### stmt: simple_stmt | compound_stmt
-    # Tested below
-
-    def testSimpleStmt(self):
-        ### simple_stmt: small_stmt (';' small_stmt)* [';']
-        x = 1; pass; del x
-        def foo():
-            # verify statements that end with semi-colons
-            x = 1; pass; del x;
-        foo()
-
-    ### small_stmt: expr_stmt | print_stmt  | pass_stmt | del_stmt | flow_stmt | import_stmt | global_stmt | access_stmt | exec_stmt
-    # Tested below
-
-    def testExprStmt(self):
-        # (exprlist '=')* exprlist
-        1
-        1, 2, 3
-        x = 1
-        x = 1, 2, 3
-        x = y = z = 1, 2, 3
-        x, y, z = 1, 2, 3
-        abc = a, b, c = x, y, z = xyz = 1, 2, (3, 4)
-
-        check_syntax_error(self, "x + 1 = 1")
-        check_syntax_error(self, "a + 1 = b + 2")
-
-    def testPrintStmt(self):
-        # 'print' (test ',')* [test]
-        import StringIO
-
-        # Can't test printing to real stdout without comparing output
-        # which is not available in unittest.
-        save_stdout = sys.stdout
-        sys.stdout = StringIO.StringIO()
-
-        print 1, 2, 3
-        print 1, 2, 3,
-        print
-        print 0 or 1, 0 or 1,
-        print 0 or 1
-
-        # 'print' '>>' test ','
-        print >> sys.stdout, 1, 2, 3
-        print >> sys.stdout, 1, 2, 3,
-        print >> sys.stdout
-        print >> sys.stdout, 0 or 1, 0 or 1,
-        print >> sys.stdout, 0 or 1
-
-        # test printing to an instance
-        class Gulp:
-            def write(self, msg): pass
-
-        gulp = Gulp()
-        print >> gulp, 1, 2, 3
-        print >> gulp, 1, 2, 3,
-        print >> gulp
-        print >> gulp, 0 or 1, 0 or 1,
-        print >> gulp, 0 or 1
-
-        # test print >> None
-        def driver():
-            oldstdout = sys.stdout
-            sys.stdout = Gulp()
-            try:
-                tellme(Gulp())
-                tellme()
-            finally:
-                sys.stdout = oldstdout
-
-        # we should see this once
-        def tellme(file=sys.stdout):
-            print >> file, 'hello world'
-
-        driver()
-
-        # we should not see this at all
-        def tellme(file=None):
-            print >> file, 'goodbye universe'
-
-        driver()
-
-        self.assertEqual(sys.stdout.getvalue(), '''\
-1 2 3
-1 2 3
-1 1 1
-1 2 3
-1 2 3
-1 1 1
-hello world
-''')
-        sys.stdout = save_stdout
-
-        # syntax errors
-        check_syntax_error(self, 'print ,')
-        check_syntax_error(self, 'print >> x,')
-
-    def testDelStmt(self):
-        # 'del' exprlist
-        abc = [1,2,3]
-        x, y, z = abc
-        xyz = x, y, z
-
-        del abc
-        del x, y, (z, xyz)
-
-    def testPassStmt(self):
-        # 'pass'
-        pass
-
-    # flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt
-    # Tested below
-
-    def testBreakStmt(self):
-        # 'break'
-        while 1: break
-
-    def testContinueStmt(self):
-        # 'continue'
-        i = 1
-        while i: i = 0; continue
-
-        msg = ""
-        while not msg:
-            msg = "ok"
-            try:
-                continue
-                msg = "continue failed to continue inside try"
-            except:
-                msg = "continue inside try called except block"
-        if msg != "ok":
-            self.fail(msg)
-
-        msg = ""
-        while not msg:
-            msg = "finally block not called"
-            try:
-                continue
-            finally:
-                msg = "ok"
-        if msg != "ok":
-            self.fail(msg)
-
-    def test_break_continue_loop(self):
-        # This test warrants an explanation. It is a test specifically for SF bugs
-        # #463359 and #462937. The bug is that a 'break' statement executed or
-        # exception raised inside a try/except inside a loop, *after* a continue
-        # statement has been executed in that loop, will cause the wrong number of
-        # arguments to be popped off the stack and the instruction pointer reset to
-        # a very small number (usually 0.) Because of this, the following test
-        # *must* written as a function, and the tracking vars *must* be function
-        # arguments with default values. Otherwise, the test will loop and loop.
-
-        def test_inner(extra_burning_oil = 1, count=0):
-            big_hippo = 2
-            while big_hippo:
-                count += 1
-                try:
-                    if extra_burning_oil and big_hippo == 1:
-                        extra_burning_oil -= 1
-                        break
-                    big_hippo -= 1
-                    continue
-                except:
-                    raise
-            if count > 2 or big_hippo != 1:
-                self.fail("continue then break in try/except in loop broken!")
-        test_inner()
-
-    def testReturn(self):
-        # 'return' [testlist]
-        def g1(): return
-        def g2(): return 1
-        g1()
-        x = g2()
-        check_syntax_error(self, "class foo:return 1")
-
-    def testYield(self):
-        check_syntax_error(self, "class foo:yield 1")
-
-    def testRaise(self):
-        # 'raise' test [',' test]
-        try: raise RuntimeError, 'just testing'
-        except RuntimeError: pass
-        try: raise KeyboardInterrupt
-        except KeyboardInterrupt: pass
-
-    def testImport(self):
-        # 'import' dotted_as_names
-        import sys
-        import time, sys
-        # 'from' dotted_name 'import' ('*' | '(' import_as_names ')' | import_as_names)
-        from time import time
-        from time import (time)
-        # not testable inside a function, but already done at top of the module
-        # from sys import *
-        from sys import path, argv
-        from sys import (path, argv)
-        from sys import (path, argv,)
-
-    def testGlobal(self):
-        # 'global' NAME (',' NAME)*
-        global a
-        global a, b
-        global one, two, three, four, five, six, seven, eight, nine, ten
-
-    def testExec(self):
-        # 'exec' expr ['in' expr [',' expr]]
-        z = None
-        del z
-        exec 'z=1+1\n'
-        if z != 2: self.fail('exec \'z=1+1\'\\n')
-        del z
-        exec 'z=1+1'
-        if z != 2: self.fail('exec \'z=1+1\'')
-        z = None
-        del z
-        import types
-        if hasattr(types, "UnicodeType"):
-            exec r"""if 1:
-            exec u'z=1+1\n'
-            if z != 2: self.fail('exec u\'z=1+1\'\\n')
-            del z
-            exec u'z=1+1'
-            if z != 2: self.fail('exec u\'z=1+1\'')"""
-        g = {}
-        exec 'z = 1' in g
-        if '__builtins__' in g: del g['__builtins__']
-        if g != {'z': 1}: self.fail('exec \'z = 1\' in g')
-        g = {}
-        l = {}
-
-        exec 'global a; a = 1; b = 2' in g, l
-        if '__builtins__' in g: del g['__builtins__']
-        if '__builtins__' in l: del l['__builtins__']
-        if (g, l) != ({'a':1}, {'b':2}):
-            self.fail('exec ... in g (%s), l (%s)' %(g,l))
-
-    def testAssert(self):
-        # assertTruestmt: 'assert' test [',' test]
-        assert 1
-        assert 1, 1
-        assert lambda x:x
-        assert 1, lambda x:x+1
-        try:
-            assert 0, "msg"
-        except AssertionError, e:
-            self.assertEqual(e.args[0], "msg")
-        else:
-            if __debug__:
-                self.fail("AssertionError not raised by assert 0")
-
-    ### compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef
-    # Tested below
-
-    def testIf(self):
-        # 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite]
-        if 1: pass
-        if 1: pass
-        else: pass
-        if 0: pass
-        elif 0: pass
-        if 0: pass
-        elif 0: pass
-        elif 0: pass
-        elif 0: pass
-        else: pass
-
-    def testWhile(self):
-        # 'while' test ':' suite ['else' ':' suite]
-        while 0: pass
-        while 0: pass
-        else: pass
-
-        # Issue1920: "while 0" is optimized away,
-        # ensure that the "else" clause is still present.
-        x = 0
-        while 0:
-            x = 1
-        else:
-            x = 2
-        self.assertEqual(x, 2)
-
-    def testFor(self):
-        # 'for' exprlist 'in' exprlist ':' suite ['else' ':' suite]
-        for i in 1, 2, 3: pass
-        for i, j, k in (): pass
-        else: pass
-        class Squares:
-            def __init__(self, max):
-                self.max = max
-                self.sofar = []
-            def __len__(self): return len(self.sofar)
-            def __getitem__(self, i):
-                if not 0 <= i < self.max: raise IndexError
-                n = len(self.sofar)
-                while n <= i:
-                    self.sofar.append(n*n)
-                    n = n+1
-                return self.sofar[i]
-        n = 0
-        for x in Squares(10): n = n+x
-        if n != 285:
-            self.fail('for over growing sequence')
-
-        result = []
-        for x, in [(1,), (2,), (3,)]:
-            result.append(x)
-        self.assertEqual(result, [1, 2, 3])
-
-    def testTry(self):
-        ### try_stmt: 'try' ':' suite (except_clause ':' suite)+ ['else' ':' suite]
-        ###         | 'try' ':' suite 'finally' ':' suite
-        ### except_clause: 'except' [expr [('as' | ',') expr]]
-        try:
-            1/0
-        except ZeroDivisionError:
-            pass
-        else:
-            pass
-        try: 1/0
-        except EOFError: pass
-        except TypeError as msg: pass
-        except RuntimeError, msg: pass
-        except: pass
-        else: pass
-        try: 1/0
-        except (EOFError, TypeError, ZeroDivisionError): pass
-        try: 1/0
-        except (EOFError, TypeError, ZeroDivisionError), msg: pass
-        try: pass
-        finally: pass
-
-    def testSuite(self):
-        # simple_stmt | NEWLINE INDENT NEWLINE* (stmt NEWLINE*)+ DEDENT
-        if 1: pass
-        if 1:
-            pass
-        if 1:
-            #
-            #
-            #
-            pass
-            pass
-            #
-            pass
-            #
-
-    def testTest(self):
-        ### and_test ('or' and_test)*
-        ### and_test: not_test ('and' not_test)*
-        ### not_test: 'not' not_test | comparison
-        if not 1: pass
-        if 1 and 1: pass
-        if 1 or 1: pass
-        if not not not 1: pass
-        if not 1 and 1 and 1: pass
-        if 1 and 1 or 1 and 1 and 1 or not 1 and 1: pass
-
-    def testComparison(self):
-        ### comparison: expr (comp_op expr)*
-        ### comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not'
-        if 1: pass
-        x = (1 == 1)
-        if 1 == 1: pass
-        if 1 != 1: pass
-        if 1 < 1: pass
-        if 1 > 1: pass
-        if 1 <= 1: pass
-        if 1 >= 1: pass
-        if 1 is 1: pass
-        if 1 is not 1: pass
-        if 1 in (): pass
-        if 1 not in (): pass
-        if 1 < 1 > 1 == 1 >= 1 <= 1 != 1 in 1 not in 1 is 1 is not 1: pass
-        # Silence Py3k warning
-        if eval('1 <> 1'): pass
-        if eval('1 < 1 > 1 == 1 >= 1 <= 1 <> 1 != 1 in 1 not in 1 is 1 is not 1'): pass
-
-    def testBinaryMaskOps(self):
-        x = 1 & 1
-        x = 1 ^ 1
-        x = 1 | 1
-
-    def testShiftOps(self):
-        x = 1 << 1
-        x = 1 >> 1
-        x = 1 << 1 >> 1
-
-    def testAdditiveOps(self):
-        x = 1
-        x = 1 + 1
-        x = 1 - 1 - 1
-        x = 1 - 1 + 1 - 1 + 1
-
-    def testMultiplicativeOps(self):
-        x = 1 * 1
-        x = 1 / 1
-        x = 1 % 1
-        x = 1 / 1 * 1 % 1
-
-    def testUnaryOps(self):
-        x = +1
-        x = -1
-        x = ~1
-        x = ~1 ^ 1 & 1 | 1 & 1 ^ -1
-        x = -1*1/1 + 1*1 - ---1*1
-
-    def testSelectors(self):
-        ### trailer: '(' [testlist] ')' | '[' subscript ']' | '.' NAME
-        ### subscript: expr | [expr] ':' [expr]
-
-        import sys, time
-        c = sys.path[0]
-        x = time.time()
-        x = sys.modules['time'].time()
-        a = '01234'
-        c = a[0]
-        c = a[-1]
-        s = a[0:5]
-        s = a[:5]
-        s = a[0:]
-        s = a[:]
-        s = a[-5:]
-        s = a[:-1]
-        s = a[-4:-3]
-        # A rough test of SF bug 1333982.  http://python.org/sf/1333982
-        # The testing here is fairly incomplete.
-        # Test cases should include: commas with 1 and 2 colons
-        d = {}
-        d[1] = 1
-        d[1,] = 2
-        d[1,2] = 3
-        d[1,2,3] = 4
-        L = list(d)
-        L.sort()
-        self.assertEqual(str(L), '[1, (1,), (1, 2), (1, 2, 3)]')
-
-    def testAtoms(self):
-        ### atom: '(' [testlist] ')' | '[' [testlist] ']' | '{' [dictmaker] '}' | '`' testlist '`' | NAME | NUMBER | STRING
-        ### dictorsetmaker: (test ':' test (',' test ':' test)* [',']) | (test (',' test)* [','])
-
-        x = (1)
-        x = (1 or 2 or 3)
-        x = (1 or 2 or 3, 2, 3)
-
-        x = []
-        x = [1]
-        x = [1 or 2 or 3]
-        x = [1 or 2 or 3, 2, 3]
-        x = []
-
-        x = {}
-        x = {'one': 1}
-        x = {'one': 1,}
-        x = {'one' or 'two': 1 or 2}
-        x = {'one': 1, 'two': 2}
-        x = {'one': 1, 'two': 2,}
-        x = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6}
-
-        x = {'one'}
-        x = {'one', 1,}
-        x = {'one', 'two', 'three'}
-        x = {2, 3, 4,}
-
-        # Silence Py3k warning
-        x = eval('`x`')
-        x = eval('`1 or 2 or 3`')
-        self.assertEqual(eval('`1,2`'), '(1, 2)')
-
-        x = x
-        x = 'x'
-        x = 123
-
-    ### exprlist: expr (',' expr)* [',']
-    ### testlist: test (',' test)* [',']
-    # These have been exercised enough above
-
-    def testClassdef(self):
-        # 'class' NAME ['(' [testlist] ')'] ':' suite
-        class B: pass
-        class B2(): pass
-        class C1(B): pass
-        class C2(B): pass
-        class D(C1, C2, B): pass
-        class C:
-            def meth1(self): pass
-            def meth2(self, arg): pass
-            def meth3(self, a1, a2): pass
-        # decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
-        # decorators: decorator+
-        # decorated: decorators (classdef | funcdef)
-        def class_decorator(x):
-            x.decorated = True
-            return x
-        @class_decorator
-        class G:
-            pass
-        self.assertEqual(G.decorated, True)
-
-    def testDictcomps(self):
-        # dictorsetmaker: ( (test ':' test (comp_for |
-        #                                   (',' test ':' test)* [','])) |
-        #                   (test (comp_for | (',' test)* [','])) )
-        nums = [1, 2, 3]
-        self.assertEqual({i:i+1 for i in nums}, {1: 2, 2: 3, 3: 4})
-
-    def testListcomps(self):
-        # list comprehension tests
-        nums = [1, 2, 3, 4, 5]
-        strs = ["Apple", "Banana", "Coconut"]
-        spcs = ["  Apple", " Banana ", "Coco  nut  "]
-
-        self.assertEqual([s.strip() for s in spcs], ['Apple', 'Banana', 'Coco  nut'])
-        self.assertEqual([3 * x for x in nums], [3, 6, 9, 12, 15])
-        self.assertEqual([x for x in nums if x > 2], [3, 4, 5])
-        self.assertEqual([(i, s) for i in nums for s in strs],
-                         [(1, 'Apple'), (1, 'Banana'), (1, 'Coconut'),
-                          (2, 'Apple'), (2, 'Banana'), (2, 'Coconut'),
-                          (3, 'Apple'), (3, 'Banana'), (3, 'Coconut'),
-                          (4, 'Apple'), (4, 'Banana'), (4, 'Coconut'),
-                          (5, 'Apple'), (5, 'Banana'), (5, 'Coconut')])
-        self.assertEqual([(i, s) for i in nums for s in [f for f in strs if "n" in f]],
-                         [(1, 'Banana'), (1, 'Coconut'), (2, 'Banana'), (2, 'Coconut'),
-                          (3, 'Banana'), (3, 'Coconut'), (4, 'Banana'), (4, 'Coconut'),
-                          (5, 'Banana'), (5, 'Coconut')])
-        self.assertEqual([(lambda a:[a**i for i in range(a+1)])(j) for j in range(5)],
-                         [[1], [1, 1], [1, 2, 4], [1, 3, 9, 27], [1, 4, 16, 64, 256]])
-
-        def test_in_func(l):
-            return [None < x < 3 for x in l if x > 2]
-
-        self.assertEqual(test_in_func(nums), [False, False, False])
-
-        def test_nested_front():
-            self.assertEqual([[y for y in [x, x + 1]] for x in [1,3,5]],
-                             [[1, 2], [3, 4], [5, 6]])
-
-        test_nested_front()
-
-        check_syntax_error(self, "[i, s for i in nums for s in strs]")
-        check_syntax_error(self, "[x if y]")
-
-        suppliers = [
-          (1, "Boeing"),
-          (2, "Ford"),
-          (3, "Macdonalds")
-        ]
-
-        parts = [
-          (10, "Airliner"),
-          (20, "Engine"),
-          (30, "Cheeseburger")
-        ]
-
-        suppart = [
-          (1, 10), (1, 20), (2, 20), (3, 30)
-        ]
-
-        x = [
-          (sname, pname)
-            for (sno, sname) in suppliers
-              for (pno, pname) in parts
-                for (sp_sno, sp_pno) in suppart
-                  if sno == sp_sno and pno == sp_pno
-        ]
-
-        self.assertEqual(x, [('Boeing', 'Airliner'), ('Boeing', 'Engine'), ('Ford', 'Engine'),
-                             ('Macdonalds', 'Cheeseburger')])
-
-    def testGenexps(self):
-        # generator expression tests
-        g = ([x for x in range(10)] for x in range(1))
-        self.assertEqual(g.next(), [x for x in range(10)])
-        try:
-            g.next()
-            self.fail('should produce StopIteration exception')
-        except StopIteration:
-            pass
-
-        a = 1
-        try:
-            g = (a for d in a)
-            g.next()
-            self.fail('should produce TypeError')
-        except TypeError:
-            pass
-
-        self.assertEqual(list((x, y) for x in 'abcd' for y in 'abcd'), [(x, y) for x in 'abcd' for y in 'abcd'])
-        self.assertEqual(list((x, y) for x in 'ab' for y in 'xy'), [(x, y) for x in 'ab' for y in 'xy'])
-
-        a = [x for x in range(10)]
-        b = (x for x in (y for y in a))
-        self.assertEqual(sum(b), sum([x for x in range(10)]))
-
-        self.assertEqual(sum(x**2 for x in range(10)), sum([x**2 for x in range(10)]))
-        self.assertEqual(sum(x*x for x in range(10) if x%2), sum([x*x for x in range(10) if x%2]))
-        self.assertEqual(sum(x for x in (y for y in range(10))), sum([x for x in range(10)]))
-        self.assertEqual(sum(x for x in (y for y in (z for z in range(10)))), sum([x for x in range(10)]))
-        self.assertEqual(sum(x for x in [y for y in (z for z in range(10))]), sum([x for x in range(10)]))
-        self.assertEqual(sum(x for x in (y for y in (z for z in range(10) if True)) if True), sum([x for x in range(10)]))
-        self.assertEqual(sum(x for x in (y for y in (z for z in range(10) if True) if False) if True), 0)
-        check_syntax_error(self, "foo(x for x in range(10), 100)")
-        check_syntax_error(self, "foo(100, x for x in range(10))")
-
-    def testComprehensionSpecials(self):
-        # test for outmost iterable precomputation
-        x = 10; g = (i for i in range(x)); x = 5
-        self.assertEqual(len(list(g)), 10)
-
-        # This should hold, since we're only precomputing outmost iterable.
-        x = 10; t = False; g = ((i,j) for i in range(x) if t for j in range(x))
-        x = 5; t = True;
-        self.assertEqual([(i,j) for i in range(10) for j in range(5)], list(g))
-
-        # Grammar allows multiple adjacent 'if's in listcomps and genexps,
-        # even though it's silly. Make sure it works (ifelse broke this.)
-        self.assertEqual([ x for x in range(10) if x % 2 if x % 3 ], [1, 5, 7])
-        self.assertEqual(list(x for x in range(10) if x % 2 if x % 3), [1, 5, 7])
-
-        # verify unpacking single element tuples in listcomp/genexp.
-        self.assertEqual([x for x, in [(4,), (5,), (6,)]], [4, 5, 6])
-        self.assertEqual(list(x for x, in [(7,), (8,), (9,)]), [7, 8, 9])
-
-    def test_with_statement(self):
-        class manager(object):
-            def __enter__(self):
-                return (1, 2)
-            def __exit__(self, *args):
-                pass
-
-        with manager():
-            pass
-        with manager() as x:
-            pass
-        with manager() as (x, y):
-            pass
-        with manager(), manager():
-            pass
-        with manager() as x, manager() as y:
-            pass
-        with manager() as x, manager():
-            pass
-
-    def testIfElseExpr(self):
-        # Test ifelse expressions in various cases
-        def _checkeval(msg, ret):
-            "helper to check that evaluation of expressions is done correctly"
-            print x
-            return ret
-
-        self.assertEqual([ x() for x in lambda: True, lambda: False if x() ], [True])
-        self.assertEqual([ x() for x in (lambda: True, lambda: False) if x() ], [True])
-        self.assertEqual([ x(False) for x in (lambda x: False if x else True, lambda x: True if x else False) if x(False) ], [True])
-        self.assertEqual((5 if 1 else _checkeval("check 1", 0)), 5)
-        self.assertEqual((_checkeval("check 2", 0) if 0 else 5), 5)
-        self.assertEqual((5 and 6 if 0 else 1), 1)
-        self.assertEqual(((5 and 6) if 0 else 1), 1)
-        self.assertEqual((5 and (6 if 1 else 1)), 6)
-        self.assertEqual((0 or _checkeval("check 3", 2) if 0 else 3), 3)
-        self.assertEqual((1 or _checkeval("check 4", 2) if 1 else _checkeval("check 5", 3)), 1)
-        self.assertEqual((0 or 5 if 1 else _checkeval("check 6", 3)), 5)
-        self.assertEqual((not 5 if 1 else 1), False)
-        self.assertEqual((not 5 if 0 else 1), 1)
-        self.assertEqual((6 + 1 if 1 else 2), 7)
-        self.assertEqual((6 - 1 if 1 else 2), 5)
-        self.assertEqual((6 * 2 if 1 else 4), 12)
-        self.assertEqual((6 / 2 if 1 else 3), 3)
-        self.assertEqual((6 < 4 if 0 else 2), 2)
-
-    def test_paren_evaluation(self):
-        self.assertEqual(16 // (4 // 2), 8)
-        self.assertEqual((16 // 4) // 2, 2)
-        self.assertEqual(16 // 4 // 2, 2)
-        self.assertTrue(False is (2 is 3))
-        self.assertFalse((False is 2) is 3)
-        self.assertFalse(False is 2 is 3)
-
-
-def test_main():
-    with check_py3k_warnings(
-            ("backquote not supported", SyntaxWarning),
-            ("tuple parameter unpacking has been removed", SyntaxWarning),
-            ("parenthesized argument names are invalid", SyntaxWarning),
-            ("classic int division", DeprecationWarning),
-            (".+ not supported in 3.x", DeprecationWarning)):
-        run_unittest(TokenTests, GrammarTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_grp.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_grp.py
deleted file mode 100644
index f1fa861..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_grp.py
+++ /dev/null
@@ -1,97 +0,0 @@
-"""Test script for the grp module."""
-
-import unittest
-from test import test_support
-
-grp = test_support.import_module('grp')
-
-class GroupDatabaseTestCase(unittest.TestCase):
-
-    def check_value(self, value):
-        # check that a grp tuple has the entries and
-        # attributes promised by the docs
-        self.assertEqual(len(value), 4)
-        self.assertEqual(value[0], value.gr_name)
-        self.assertIsInstance(value.gr_name, basestring)
-        self.assertEqual(value[1], value.gr_passwd)
-        self.assertIsInstance(value.gr_passwd, basestring)
-        self.assertEqual(value[2], value.gr_gid)
-        self.assertIsInstance(value.gr_gid, int)
-        self.assertEqual(value[3], value.gr_mem)
-        self.assertIsInstance(value.gr_mem, list)
-
-    def test_values(self):
-        entries = grp.getgrall()
-
-        for e in entries:
-            self.check_value(e)
-
-        if len(entries) > 1000:  # Huge group file (NIS?) -- skip the rest
-            return
-
-        for e in entries:
-            e2 = grp.getgrgid(e.gr_gid)
-            self.check_value(e2)
-            self.assertEqual(e2.gr_gid, e.gr_gid)
-            name = e.gr_name
-            if name.startswith('+') or name.startswith('-'):
-                # NIS-related entry
-                continue
-            e2 = grp.getgrnam(name)
-            self.check_value(e2)
-            # There are instances where getgrall() returns group names in
-            # lowercase while getgrgid() returns proper casing.
-            # Discovered on Ubuntu 5.04 (custom).
-            self.assertEqual(e2.gr_name.lower(), name.lower())
-
-    def test_errors(self):
-        self.assertRaises(TypeError, grp.getgrgid)
-        self.assertRaises(TypeError, grp.getgrnam)
-        self.assertRaises(TypeError, grp.getgrall, 42)
-
-        # try to get some errors
-        bynames = {}
-        bygids = {}
-        for (n, p, g, mem) in grp.getgrall():
-            if not n or n == '+':
-                continue # skip NIS entries etc.
-            bynames[n] = g
-            bygids[g] = n
-
-        allnames = bynames.keys()
-        namei = 0
-        fakename = allnames[namei]
-        while fakename in bynames:
-            chars = list(fakename)
-            for i in xrange(len(chars)):
-                if chars[i] == 'z':
-                    chars[i] = 'A'
-                    break
-                elif chars[i] == 'Z':
-                    continue
-                else:
-                    chars[i] = chr(ord(chars[i]) + 1)
-                    break
-            else:
-                namei = namei + 1
-                try:
-                    fakename = allnames[namei]
-                except IndexError:
-                    # should never happen... if so, just forget it
-                    break
-            fakename = ''.join(chars)
-
-        self.assertRaises(KeyError, grp.getgrnam, fakename)
-
-        # Choose a non-existent gid.
-        fakegid = 4127
-        while fakegid in bygids:
-            fakegid = (fakegid * 3) % 0x10000
-
-        self.assertRaises(KeyError, grp.getgrgid, fakegid)
-
-def test_main():
-    test_support.run_unittest(GroupDatabaseTestCase)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gzip.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gzip.py
deleted file mode 100644
index b2d2b23..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_gzip.py
+++ /dev/null
@@ -1,281 +0,0 @@
-#! /usr/bin/env python
-"""Test script for the gzip module.
-"""
-
-import unittest
-from test import test_support
-import os
-import io
-import struct
-gzip = test_support.import_module('gzip')
-
-data1 = """  int length=DEFAULTALLOC, err = Z_OK;
-  PyObject *RetVal;
-  int flushmode = Z_FINISH;
-  unsigned long start_total_out;
-
-"""
-
-data2 = """/* zlibmodule.c -- gzip-compatible data compression */
-/* See http://www.gzip.org/zlib/
-/* See http://www.winimage.com/zLibDll for Windows */
-"""
-
-
-class TestGzip(unittest.TestCase):
-    filename = test_support.TESTFN
-
-    def setUp(self):
-        test_support.unlink(self.filename)
-
-    def tearDown(self):
-        test_support.unlink(self.filename)
-
-
-    def test_write(self):
-        with gzip.GzipFile(self.filename, 'wb') as f:
-            f.write(data1 * 50)
-
-            # Try flush and fileno.
-            f.flush()
-            f.fileno()
-            if hasattr(os, 'fsync'):
-                os.fsync(f.fileno())
-            f.close()
-
-        # Test multiple close() calls.
-        f.close()
-
-    def test_read(self):
-        self.test_write()
-        # Try reading.
-        with gzip.GzipFile(self.filename, 'r') as f:
-            d = f.read()
-        self.assertEqual(d, data1*50)
-
-    def test_io_on_closed_object(self):
-        # Test that I/O operations on closed GzipFile objects raise a
-        # ValueError, just like the corresponding functions on file objects.
-
-        # Write to a file, open it for reading, then close it.
-        self.test_write()
-        f = gzip.GzipFile(self.filename, 'r')
-        f.close()
-        with self.assertRaises(ValueError):
-            f.read(1)
-        with self.assertRaises(ValueError):
-            f.seek(0)
-        with self.assertRaises(ValueError):
-            f.tell()
-        # Open the file for writing, then close it.
-        f = gzip.GzipFile(self.filename, 'w')
-        f.close()
-        with self.assertRaises(ValueError):
-            f.write('')
-        with self.assertRaises(ValueError):
-            f.flush()
-
-    def test_append(self):
-        self.test_write()
-        # Append to the previous file
-        with gzip.GzipFile(self.filename, 'ab') as f:
-            f.write(data2 * 15)
-
-        with gzip.GzipFile(self.filename, 'rb') as f:
-            d = f.read()
-        self.assertEqual(d, (data1*50) + (data2*15))
-
-    def test_many_append(self):
-        # Bug #1074261 was triggered when reading a file that contained
-        # many, many members.  Create such a file and verify that reading it
-        # works.
-        with gzip.open(self.filename, 'wb', 9) as f:
-            f.write('a')
-        for i in range(0, 200):
-            with gzip.open(self.filename, "ab", 9) as f: # append
-                f.write('a')
-
-        # Try reading the file
-        with gzip.open(self.filename, "rb") as zgfile:
-            contents = ""
-            while 1:
-                ztxt = zgfile.read(8192)
-                contents += ztxt
-                if not ztxt: break
-        self.assertEqual(contents, 'a'*201)
-
-    def test_buffered_reader(self):
-        # Issue #7471: a GzipFile can be wrapped in a BufferedReader for
-        # performance.
-        self.test_write()
-
-        with gzip.GzipFile(self.filename, 'rb') as f:
-            with io.BufferedReader(f) as r:
-                lines = [line for line in r]
-
-        self.assertEqual(lines, 50 * data1.splitlines(True))
-
-    def test_readline(self):
-        self.test_write()
-        # Try .readline() with varying line lengths
-
-        with gzip.GzipFile(self.filename, 'rb') as f:
-            line_length = 0
-            while 1:
-                L = f.readline(line_length)
-                if not L and line_length != 0: break
-                self.assertTrue(len(L) <= line_length)
-                line_length = (line_length + 1) % 50
-
-    def test_readlines(self):
-        self.test_write()
-        # Try .readlines()
-
-        with gzip.GzipFile(self.filename, 'rb') as f:
-            L = f.readlines()
-
-        with gzip.GzipFile(self.filename, 'rb') as f:
-            while 1:
-                L = f.readlines(150)
-                if L == []: break
-
-    def test_seek_read(self):
-        self.test_write()
-        # Try seek, read test
-
-        with gzip.GzipFile(self.filename) as f:
-            while 1:
-                oldpos = f.tell()
-                line1 = f.readline()
-                if not line1: break
-                newpos = f.tell()
-                f.seek(oldpos)  # negative seek
-                if len(line1)>10:
-                    amount = 10
-                else:
-                    amount = len(line1)
-                line2 = f.read(amount)
-                self.assertEqual(line1[:amount], line2)
-                f.seek(newpos)  # positive seek
-
-    def test_seek_whence(self):
-        self.test_write()
-        # Try seek(whence=1), read test
-
-        with gzip.GzipFile(self.filename) as f:
-            f.read(10)
-            f.seek(10, whence=1)
-            y = f.read(10)
-        self.assertEqual(y, data1[20:30])
-
-    def test_seek_write(self):
-        # Try seek, write test
-        with gzip.GzipFile(self.filename, 'w') as f:
-            for pos in range(0, 256, 16):
-                f.seek(pos)
-                f.write('GZ\n')
-
-    def test_mode(self):
-        self.test_write()
-        with gzip.GzipFile(self.filename, 'r') as f:
-            self.assertEqual(f.myfileobj.mode, 'rb')
-
-    def test_1647484(self):
-        for mode in ('wb', 'rb'):
-            with gzip.GzipFile(self.filename, mode) as f:
-                self.assertTrue(hasattr(f, "name"))
-                self.assertEqual(f.name, self.filename)
-
-    def test_mtime(self):
-        mtime = 123456789
-        with gzip.GzipFile(self.filename, 'w', mtime = mtime) as fWrite:
-            fWrite.write(data1)
-        with gzip.GzipFile(self.filename) as fRead:
-            dataRead = fRead.read()
-            self.assertEqual(dataRead, data1)
-            self.assertTrue(hasattr(fRead, 'mtime'))
-            self.assertEqual(fRead.mtime, mtime)
-
-    def test_metadata(self):
-        mtime = 123456789
-
-        with gzip.GzipFile(self.filename, 'w', mtime = mtime) as fWrite:
-            fWrite.write(data1)
-
-        with open(self.filename, 'rb') as fRead:
-            # see RFC 1952: http://www.faqs.org/rfcs/rfc1952.html
-
-            idBytes = fRead.read(2)
-            self.assertEqual(idBytes, '\x1f\x8b') # gzip ID
-
-            cmByte = fRead.read(1)
-            self.assertEqual(cmByte, '\x08') # deflate
-
-            flagsByte = fRead.read(1)
-            self.assertEqual(flagsByte, '\x08') # only the FNAME flag is set
-
-            mtimeBytes = fRead.read(4)
-            self.assertEqual(mtimeBytes, struct.pack('<i', mtime)) # little-endian
-
-            xflByte = fRead.read(1)
-            self.assertEqual(xflByte, '\x02') # maximum compression
-
-            osByte = fRead.read(1)
-            self.assertEqual(osByte, '\xff') # OS "unknown" (OS-independent)
-
-            # Since the FNAME flag is set, the zero-terminated filename follows.
-            # RFC 1952 specifies that this is the name of the input file, if any.
-            # However, the gzip module defaults to storing the name of the output
-            # file in this field.
-            expected = self.filename.encode('Latin-1') + '\x00'
-            nameBytes = fRead.read(len(expected))
-            self.assertEqual(nameBytes, expected)
-
-            # Since no other flags were set, the header ends here.
-            # Rather than process the compressed data, let's seek to the trailer.
-            fRead.seek(os.stat(self.filename).st_size - 8)
-
-            crc32Bytes = fRead.read(4) # CRC32 of uncompressed data [data1]
-            self.assertEqual(crc32Bytes, '\xaf\xd7d\x83')
-
-            isizeBytes = fRead.read(4)
-            self.assertEqual(isizeBytes, struct.pack('<i', len(data1)))
-
-    def test_with_open(self):
-        # GzipFile supports the context management protocol
-        with gzip.GzipFile(self.filename, "wb") as f:
-            f.write(b"xxx")
-        f = gzip.GzipFile(self.filename, "rb")
-        f.close()
-        try:
-            with f:
-                pass
-        except ValueError:
-            pass
-        else:
-            self.fail("__enter__ on a closed file didn't raise an exception")
-        try:
-            with gzip.GzipFile(self.filename, "wb") as f:
-                1 // 0
-        except ZeroDivisionError:
-            pass
-        else:
-            self.fail("1 // 0 didn't raise an exception")
-
-    def test_zero_padded_file(self):
-        with gzip.GzipFile(self.filename, "wb") as f:
-            f.write(data1 * 50)
-
-        # Pad the file with zeroes
-        with open(self.filename, "ab") as f:
-            f.write("\x00" * 50)
-
-        with gzip.GzipFile(self.filename, "rb") as f:
-            d = f.read()
-            self.assertEqual(d, data1 * 50, "Incorrect data in file")
-
-def test_main(verbose=None):
-    test_support.run_unittest(TestGzip)
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hash.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hash.py
deleted file mode 100644
index 4a12f14..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hash.py
+++ /dev/null
@@ -1,144 +0,0 @@
-# test the invariant that
-#   iff a==b then hash(a)==hash(b)
-#
-# Also test that hash implementations are inherited as expected
-
-import unittest
-from test import test_support
-from collections import Hashable
-
-
-class HashEqualityTestCase(unittest.TestCase):
-
-    def same_hash(self, *objlist):
-        # Hash each object given and fail if
-        # the hash values are not all the same.
-        hashed = map(hash, objlist)
-        for h in hashed[1:]:
-            if h != hashed[0]:
-                self.fail("hashed values differ: %r" % (objlist,))
-
-    def test_numeric_literals(self):
-        self.same_hash(1, 1L, 1.0, 1.0+0.0j)
-        self.same_hash(0, 0L, 0.0, 0.0+0.0j)
-        self.same_hash(-1, -1L, -1.0, -1.0+0.0j)
-        self.same_hash(-2, -2L, -2.0, -2.0+0.0j)
-
-    def test_coerced_integers(self):
-        self.same_hash(int(1), long(1), float(1), complex(1),
-                       int('1'), float('1.0'))
-        self.same_hash(int(-2**31), long(-2**31), float(-2**31))
-        self.same_hash(int(1-2**31), long(1-2**31), float(1-2**31))
-        self.same_hash(int(2**31-1), long(2**31-1), float(2**31-1))
-        # for 64-bit platforms
-        self.same_hash(int(2**31), long(2**31), float(2**31))
-        self.same_hash(int(-2**63), long(-2**63), float(-2**63))
-        self.same_hash(int(1-2**63), long(1-2**63))
-        self.same_hash(int(2**63-1), long(2**63-1))
-        self.same_hash(long(2**63), float(2**63))
-
-    def test_coerced_floats(self):
-        self.same_hash(long(1.23e300), float(1.23e300))
-        self.same_hash(float(0.5), complex(0.5, 0.0))
-
-
-_default_hash = object.__hash__
-class DefaultHash(object): pass
-
-_FIXED_HASH_VALUE = 42
-class FixedHash(object):
-    def __hash__(self):
-        return _FIXED_HASH_VALUE
-
-class OnlyEquality(object):
-    def __eq__(self, other):
-        return self is other
-    # Trick to suppress Py3k warning in 2.x
-    __hash__ = None
-del OnlyEquality.__hash__
-
-class OnlyInequality(object):
-    def __ne__(self, other):
-        return self is not other
-
-class OnlyCmp(object):
-    def __cmp__(self, other):
-        return cmp(id(self), id(other))
-    # Trick to suppress Py3k warning in 2.x
-    __hash__ = None
-del OnlyCmp.__hash__
-
-class InheritedHashWithEquality(FixedHash, OnlyEquality): pass
-class InheritedHashWithInequality(FixedHash, OnlyInequality): pass
-class InheritedHashWithCmp(FixedHash, OnlyCmp): pass
-
-class NoHash(object):
-    __hash__ = None
-
-class HashInheritanceTestCase(unittest.TestCase):
-    default_expected = [object(),
-                        DefaultHash(),
-                        OnlyEquality(),
-                        OnlyInequality(),
-                        OnlyCmp(),
-                       ]
-    fixed_expected = [FixedHash(),
-                      InheritedHashWithEquality(),
-                      InheritedHashWithInequality(),
-                      InheritedHashWithCmp(),
-                      ]
-    error_expected = [NoHash()]
-
-    def test_default_hash(self):
-        for obj in self.default_expected:
-            self.assertEqual(hash(obj), _default_hash(obj))
-
-    def test_fixed_hash(self):
-        for obj in self.fixed_expected:
-            self.assertEqual(hash(obj), _FIXED_HASH_VALUE)
-
-    def test_error_hash(self):
-        for obj in self.error_expected:
-            self.assertRaises(TypeError, hash, obj)
-
-    def test_hashable(self):
-        objects = (self.default_expected +
-                   self.fixed_expected)
-        for obj in objects:
-            self.assertIsInstance(obj, Hashable)
-
-    def test_not_hashable(self):
-        for obj in self.error_expected:
-            self.assertNotIsInstance(obj, Hashable)
-
-
-# Issue #4701: Check that some builtin types are correctly hashable
-#  (This test only used to fail in Python 3.0, but has been included
-#   in 2.x along with the lazy call to PyType_Ready in PyObject_Hash)
-class DefaultIterSeq(object):
-    seq = range(10)
-    def __len__(self):
-        return len(self.seq)
-    def __getitem__(self, index):
-        return self.seq[index]
-
-class HashBuiltinsTestCase(unittest.TestCase):
-    hashes_to_check = [xrange(10),
-                       enumerate(xrange(10)),
-                       iter(DefaultIterSeq()),
-                       iter(lambda: 0, 0),
-                      ]
-
-    def test_hashes(self):
-        _default_hash = object.__hash__
-        for obj in self.hashes_to_check:
-            self.assertEqual(hash(obj), _default_hash(obj))
-
-def test_main():
-    test_support.run_unittest(HashEqualityTestCase,
-                              HashInheritanceTestCase,
-                              HashBuiltinsTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hashlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hashlib.py
deleted file mode 100644
index bc78239..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hashlib.py
+++ /dev/null
@@ -1,361 +0,0 @@
-# Test hashlib module
-#
-# $Id$
-#
-#  Copyright (C) 2005-2010   Gregory P. Smith (greg@krypto.org)
-#  Licensed to PSF under a Contributor Agreement.
-#
-
-import array
-import hashlib
-import itertools
-import sys
-try:
-    import threading
-except ImportError:
-    threading = None
-import unittest
-import warnings
-from test import test_support
-from test.test_support import _4G, precisionbigmemtest
-
-# Were we compiled --with-pydebug or with #define Py_DEBUG?
-COMPILED_WITH_PYDEBUG = hasattr(sys, 'gettotalrefcount')
-
-
-def hexstr(s):
-    import string
-    h = string.hexdigits
-    r = ''
-    for c in s:
-        i = ord(c)
-        r = r + h[(i >> 4) & 0xF] + h[i & 0xF]
-    return r
-
-
-class HashLibTestCase(unittest.TestCase):
-    supported_hash_names = ( 'md5', 'MD5', 'sha1', 'SHA1',
-                             'sha224', 'SHA224', 'sha256', 'SHA256',
-                             'sha384', 'SHA384', 'sha512', 'SHA512' )
-
-    _warn_on_extension_import = COMPILED_WITH_PYDEBUG
-
-    def _conditional_import_module(self, module_name):
-        """Import a module and return a reference to it or None on failure."""
-        try:
-            exec('import '+module_name)
-        except ImportError, error:
-            if self._warn_on_extension_import:
-                warnings.warn('Did a C extension fail to compile? %s' % error)
-        return locals().get(module_name)
-
-    def __init__(self, *args, **kwargs):
-        algorithms = set()
-        for algorithm in self.supported_hash_names:
-            algorithms.add(algorithm.lower())
-        self.constructors_to_test = {}
-        for algorithm in algorithms:
-            self.constructors_to_test[algorithm] = set()
-
-        # For each algorithm, test the direct constructor and the use
-        # of hashlib.new given the algorithm name.
-        for algorithm, constructors in self.constructors_to_test.items():
-            constructors.add(getattr(hashlib, algorithm))
-            def _test_algorithm_via_hashlib_new(data=None, _alg=algorithm):
-                if data is None:
-                    return hashlib.new(_alg)
-                return hashlib.new(_alg, data)
-            constructors.add(_test_algorithm_via_hashlib_new)
-
-        _hashlib = self._conditional_import_module('_hashlib')
-        if _hashlib:
-            # These two algorithms should always be present when this module
-            # is compiled.  If not, something was compiled wrong.
-            assert hasattr(_hashlib, 'openssl_md5')
-            assert hasattr(_hashlib, 'openssl_sha1')
-            for algorithm, constructors in self.constructors_to_test.items():
-                constructor = getattr(_hashlib, 'openssl_'+algorithm, None)
-                if constructor:
-                    constructors.add(constructor)
-
-        _md5 = self._conditional_import_module('_md5')
-        if _md5:
-            self.constructors_to_test['md5'].add(_md5.new)
-        _sha = self._conditional_import_module('_sha')
-        if _sha:
-            self.constructors_to_test['sha1'].add(_sha.new)
-        _sha256 = self._conditional_import_module('_sha256')
-        if _sha256:
-            self.constructors_to_test['sha224'].add(_sha256.sha224)
-            self.constructors_to_test['sha256'].add(_sha256.sha256)
-        _sha512 = self._conditional_import_module('_sha512')
-        if _sha512:
-            self.constructors_to_test['sha384'].add(_sha512.sha384)
-            self.constructors_to_test['sha512'].add(_sha512.sha512)
-
-        super(HashLibTestCase, self).__init__(*args, **kwargs)
-
-    def test_hash_array(self):
-        a = array.array("b", range(10))
-        constructors = self.constructors_to_test.itervalues()
-        for cons in itertools.chain.from_iterable(constructors):
-            c = cons(a)
-            c.hexdigest()
-
-    def test_algorithms_attribute(self):
-        self.assertEqual(hashlib.algorithms,
-            tuple([_algo for _algo in self.supported_hash_names if
-                                                _algo.islower()]))
-
-    def test_unknown_hash(self):
-        try:
-            hashlib.new('spam spam spam spam spam')
-        except ValueError:
-            pass
-        else:
-            self.assertTrue(0 == "hashlib didn't reject bogus hash name")
-
-    def test_get_builtin_constructor(self):
-        get_builtin_constructor = hashlib.__dict__[
-                '__get_builtin_constructor']
-        self.assertRaises(ValueError, get_builtin_constructor, 'test')
-        try:
-            import _md5
-        except ImportError:
-            pass
-        # This forces an ImportError for "import _md5" statements
-        sys.modules['_md5'] = None
-        try:
-            self.assertRaises(ValueError, get_builtin_constructor, 'md5')
-        finally:
-            if '_md5' in locals():
-                sys.modules['_md5'] = _md5
-            else:
-                del sys.modules['_md5']
-
-    def test_hexdigest(self):
-        for name in self.supported_hash_names:
-            h = hashlib.new(name)
-            self.assertTrue(hexstr(h.digest()) == h.hexdigest())
-
-    def test_large_update(self):
-        aas = 'a' * 128
-        bees = 'b' * 127
-        cees = 'c' * 126
-        abcs = aas + bees + cees
-
-        for name in self.supported_hash_names:
-            m1 = hashlib.new(name)
-            m1.update(aas)
-            m1.update(bees)
-            m1.update(cees)
-
-            m2 = hashlib.new(name)
-            m2.update(abcs)
-            self.assertEqual(m1.digest(), m2.digest(), name+' update problem.')
-
-            m3 = hashlib.new(name, abcs)
-            self.assertEqual(m1.digest(), m3.digest(), name+' new problem.')
-
-    def check(self, name, data, digest):
-        constructors = self.constructors_to_test[name]
-        # 2 is for hashlib.name(...) and hashlib.new(name, ...)
-        self.assertGreaterEqual(len(constructors), 2)
-        for hash_object_constructor in constructors:
-            computed = hash_object_constructor(data).hexdigest()
-            self.assertEqual(
-                    computed, digest,
-                    "Hash algorithm %s constructed using %s returned hexdigest"
-                    " %r for %d byte input data that should have hashed to %r."
-                    % (name, hash_object_constructor,
-                       computed, len(data), digest))
-
-    def check_unicode(self, algorithm_name):
-        # Unicode objects are not allowed as input.
-        expected = hashlib.new(algorithm_name, str(u'spam')).hexdigest()
-        self.check(algorithm_name, u'spam', expected)
-
-    def test_unicode(self):
-        # In python 2.x unicode is auto-encoded to the system default encoding
-        # when passed to hashlib functions.
-        self.check_unicode('md5')
-        self.check_unicode('sha1')
-        self.check_unicode('sha224')
-        self.check_unicode('sha256')
-        self.check_unicode('sha384')
-        self.check_unicode('sha512')
-
-    def test_case_md5_0(self):
-        self.check('md5', '', 'd41d8cd98f00b204e9800998ecf8427e')
-
-    def test_case_md5_1(self):
-        self.check('md5', 'abc', '900150983cd24fb0d6963f7d28e17f72')
-
-    def test_case_md5_2(self):
-        self.check('md5', 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
-                   'd174ab98d277d9f5a5611c2c9f419d9f')
-
-    @precisionbigmemtest(size=_4G + 5, memuse=1)
-    def test_case_md5_huge(self, size):
-        if size == _4G + 5:
-            try:
-                self.check('md5', 'A'*size, 'c9af2dff37468ce5dfee8f2cfc0a9c6d')
-            except OverflowError:
-                pass # 32-bit arch
-
-    @precisionbigmemtest(size=_4G - 1, memuse=1)
-    def test_case_md5_uintmax(self, size):
-        if size == _4G - 1:
-            try:
-                self.check('md5', 'A'*size, '28138d306ff1b8281f1a9067e1a1a2b3')
-            except OverflowError:
-                pass # 32-bit arch
-
-    # use the three examples from Federal Information Processing Standards
-    # Publication 180-1, Secure Hash Standard,  1995 April 17
-    # http://www.itl.nist.gov/div897/pubs/fip180-1.htm
-
-    def test_case_sha1_0(self):
-        self.check('sha1', "",
-                   "da39a3ee5e6b4b0d3255bfef95601890afd80709")
-
-    def test_case_sha1_1(self):
-        self.check('sha1', "abc",
-                   "a9993e364706816aba3e25717850c26c9cd0d89d")
-
-    def test_case_sha1_2(self):
-        self.check('sha1', "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
-                   "84983e441c3bd26ebaae4aa1f95129e5e54670f1")
-
-    def test_case_sha1_3(self):
-        self.check('sha1', "a" * 1000000,
-                   "34aa973cd4c4daa4f61eeb2bdbad27316534016f")
-
-
-    # use the examples from Federal Information Processing Standards
-    # Publication 180-2, Secure Hash Standard,  2002 August 1
-    # http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf
-
-    def test_case_sha224_0(self):
-        self.check('sha224', "",
-          "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f")
-
-    def test_case_sha224_1(self):
-        self.check('sha224', "abc",
-          "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7")
-
-    def test_case_sha224_2(self):
-        self.check('sha224',
-          "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
-          "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525")
-
-    def test_case_sha224_3(self):
-        self.check('sha224', "a" * 1000000,
-          "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67")
-
-
-    def test_case_sha256_0(self):
-        self.check('sha256', "",
-          "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
-
-    def test_case_sha256_1(self):
-        self.check('sha256', "abc",
-          "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad")
-
-    def test_case_sha256_2(self):
-        self.check('sha256',
-          "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
-          "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1")
-
-    def test_case_sha256_3(self):
-        self.check('sha256', "a" * 1000000,
-          "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0")
-
-
-    def test_case_sha384_0(self):
-        self.check('sha384', "",
-          "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da"+
-          "274edebfe76f65fbd51ad2f14898b95b")
-
-    def test_case_sha384_1(self):
-        self.check('sha384', "abc",
-          "cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed"+
-          "8086072ba1e7cc2358baeca134c825a7")
-
-    def test_case_sha384_2(self):
-        self.check('sha384',
-                   "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"+
-                   "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
-          "09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712"+
-          "fcc7c71a557e2db966c3e9fa91746039")
-
-    def test_case_sha384_3(self):
-        self.check('sha384', "a" * 1000000,
-          "9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b"+
-          "07b8b3dc38ecc4ebae97ddd87f3d8985")
-
-
-    def test_case_sha512_0(self):
-        self.check('sha512', "",
-          "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce"+
-          "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")
-
-    def test_case_sha512_1(self):
-        self.check('sha512', "abc",
-          "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a"+
-          "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f")
-
-    def test_case_sha512_2(self):
-        self.check('sha512',
-                   "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"+
-                   "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
-          "8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018"+
-          "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909")
-
-    def test_case_sha512_3(self):
-        self.check('sha512', "a" * 1000000,
-          "e718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973eb"+
-          "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b")
-
-    @unittest.skipUnless(threading, 'Threading required for this test.')
-    @test_support.reap_threads
-    def test_threaded_hashing(self):
-        # Updating the same hash object from several threads at once
-        # using data chunk sizes containing the same byte sequences.
-        #
-        # If the internal locks are working to prevent multiple
-        # updates on the same object from running at once, the resulting
-        # hash will be the same as doing it single threaded upfront.
-        hasher = hashlib.sha1()
-        num_threads = 5
-        smallest_data = 'swineflu'
-        data = smallest_data*200000
-        expected_hash = hashlib.sha1(data*num_threads).hexdigest()
-
-        def hash_in_chunks(chunk_size, event):
-            index = 0
-            while index < len(data):
-                hasher.update(data[index:index+chunk_size])
-                index += chunk_size
-            event.set()
-
-        events = []
-        for threadnum in xrange(num_threads):
-            chunk_size = len(data) // (10**threadnum)
-            assert chunk_size > 0
-            assert chunk_size % len(smallest_data) == 0
-            event = threading.Event()
-            events.append(event)
-            threading.Thread(target=hash_in_chunks,
-                             args=(chunk_size, event)).start()
-
-        for event in events:
-            event.wait()
-
-        self.assertEqual(expected_hash, hasher.hexdigest())
-
-def test_main():
-    test_support.run_unittest(HashLibTestCase)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_heapq.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_heapq.py
deleted file mode 100644
index 2703136..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_heapq.py
+++ /dev/null
@@ -1,393 +0,0 @@
-"""Unittests for heapq."""
-
-import sys
-import random
-
-from test import test_support
-from unittest import TestCase, skipUnless
-
-py_heapq = test_support.import_fresh_module('heapq', blocked=['_heapq'])
-c_heapq = test_support.import_fresh_module('heapq', fresh=['_heapq'])
-
-# _heapq.nlargest/nsmallest are saved in heapq._nlargest/_smallest when
-# _heapq is imported, so check them there
-func_names = ['heapify', 'heappop', 'heappush', 'heappushpop',
-              'heapreplace', '_nlargest', '_nsmallest']
-
-class TestModules(TestCase):
-    def test_py_functions(self):
-        for fname in func_names:
-            self.assertEqual(getattr(py_heapq, fname).__module__, 'heapq')
-
-    @skipUnless(c_heapq, 'requires _heapq')
-    def test_c_functions(self):
-        for fname in func_names:
-            self.assertEqual(getattr(c_heapq, fname).__module__, '_heapq')
-
-
-class TestHeap(TestCase):
-    module = None
-
-    def test_push_pop(self):
-        # 1) Push 256 random numbers and pop them off, verifying all's OK.
-        heap = []
-        data = []
-        self.check_invariant(heap)
-        for i in range(256):
-            item = random.random()
-            data.append(item)
-            self.module.heappush(heap, item)
-            self.check_invariant(heap)
-        results = []
-        while heap:
-            item = self.module.heappop(heap)
-            self.check_invariant(heap)
-            results.append(item)
-        data_sorted = data[:]
-        data_sorted.sort()
-        self.assertEqual(data_sorted, results)
-        # 2) Check that the invariant holds for a sorted array
-        self.check_invariant(results)
-
-        self.assertRaises(TypeError, self.module.heappush, [])
-        try:
-            self.assertRaises(TypeError, self.module.heappush, None, None)
-            self.assertRaises(TypeError, self.module.heappop, None)
-        except AttributeError:
-            pass
-
-    def check_invariant(self, heap):
-        # Check the heap invariant.
-        for pos, item in enumerate(heap):
-            if pos: # pos 0 has no parent
-                parentpos = (pos-1) >> 1
-                self.assertTrue(heap[parentpos] <= item)
-
-    def test_heapify(self):
-        for size in range(30):
-            heap = [random.random() for dummy in range(size)]
-            self.module.heapify(heap)
-            self.check_invariant(heap)
-
-        self.assertRaises(TypeError, self.module.heapify, None)
-
-    def test_naive_nbest(self):
-        data = [random.randrange(2000) for i in range(1000)]
-        heap = []
-        for item in data:
-            self.module.heappush(heap, item)
-            if len(heap) > 10:
-                self.module.heappop(heap)
-        heap.sort()
-        self.assertEqual(heap, sorted(data)[-10:])
-
-    def heapiter(self, heap):
-        # An iterator returning a heap's elements, smallest-first.
-        try:
-            while 1:
-                yield self.module.heappop(heap)
-        except IndexError:
-            pass
-
-    def test_nbest(self):
-        # Less-naive "N-best" algorithm, much faster (if len(data) is big
-        # enough <wink>) than sorting all of data.  However, if we had a max
-        # heap instead of a min heap, it could go faster still via
-        # heapify'ing all of data (linear time), then doing 10 heappops
-        # (10 log-time steps).
-        data = [random.randrange(2000) for i in range(1000)]
-        heap = data[:10]
-        self.module.heapify(heap)
-        for item in data[10:]:
-            if item > heap[0]:  # this gets rarer the longer we run
-                self.module.heapreplace(heap, item)
-        self.assertEqual(list(self.heapiter(heap)), sorted(data)[-10:])
-
-        self.assertRaises(TypeError, self.module.heapreplace, None)
-        self.assertRaises(TypeError, self.module.heapreplace, None, None)
-        self.assertRaises(IndexError, self.module.heapreplace, [], None)
-
-    def test_nbest_with_pushpop(self):
-        data = [random.randrange(2000) for i in range(1000)]
-        heap = data[:10]
-        self.module.heapify(heap)
-        for item in data[10:]:
-            self.module.heappushpop(heap, item)
-        self.assertEqual(list(self.heapiter(heap)), sorted(data)[-10:])
-        self.assertEqual(self.module.heappushpop([], 'x'), 'x')
-
-    def test_heappushpop(self):
-        h = []
-        x = self.module.heappushpop(h, 10)
-        self.assertEqual((h, x), ([], 10))
-
-        h = [10]
-        x = self.module.heappushpop(h, 10.0)
-        self.assertEqual((h, x), ([10], 10.0))
-        self.assertEqual(type(h[0]), int)
-        self.assertEqual(type(x), float)
-
-        h = [10];
-        x = self.module.heappushpop(h, 9)
-        self.assertEqual((h, x), ([10], 9))
-
-        h = [10];
-        x = self.module.heappushpop(h, 11)
-        self.assertEqual((h, x), ([11], 10))
-
-    def test_heapsort(self):
-        # Exercise everything with repeated heapsort checks
-        for trial in xrange(100):
-            size = random.randrange(50)
-            data = [random.randrange(25) for i in range(size)]
-            if trial & 1:     # Half of the time, use heapify
-                heap = data[:]
-                self.module.heapify(heap)
-            else:             # The rest of the time, use heappush
-                heap = []
-                for item in data:
-                    self.module.heappush(heap, item)
-            heap_sorted = [self.module.heappop(heap) for i in range(size)]
-            self.assertEqual(heap_sorted, sorted(data))
-
-    def test_merge(self):
-        inputs = []
-        for i in xrange(random.randrange(5)):
-            row = sorted(random.randrange(1000) for j in range(random.randrange(10)))
-            inputs.append(row)
-        self.assertEqual(sorted(chain(*inputs)), list(self.module.merge(*inputs)))
-        self.assertEqual(list(self.module.merge()), [])
-
-    def test_merge_stability(self):
-        class Int(int):
-            pass
-        inputs = [[], [], [], []]
-        for i in range(20000):
-            stream = random.randrange(4)
-            x = random.randrange(500)
-            obj = Int(x)
-            obj.pair = (x, stream)
-            inputs[stream].append(obj)
-        for stream in inputs:
-            stream.sort()
-        result = [i.pair for i in self.module.merge(*inputs)]
-        self.assertEqual(result, sorted(result))
-
-    def test_nsmallest(self):
-        data = [(random.randrange(2000), i) for i in range(1000)]
-        for f in (None, lambda x:  x[0] * 547 % 2000):
-            for n in (0, 1, 2, 10, 100, 400, 999, 1000, 1100):
-                self.assertEqual(self.module.nsmallest(n, data), sorted(data)[:n])
-                self.assertEqual(self.module.nsmallest(n, data, key=f),
-                                 sorted(data, key=f)[:n])
-
-    def test_nlargest(self):
-        data = [(random.randrange(2000), i) for i in range(1000)]
-        for f in (None, lambda x:  x[0] * 547 % 2000):
-            for n in (0, 1, 2, 10, 100, 400, 999, 1000, 1100):
-                self.assertEqual(self.module.nlargest(n, data),
-                                 sorted(data, reverse=True)[:n])
-                self.assertEqual(self.module.nlargest(n, data, key=f),
-                                 sorted(data, key=f, reverse=True)[:n])
-
-    def test_comparison_operator(self):
-        # Issue 3051: Make sure heapq works with both __lt__ and __le__
-        def hsort(data, comp):
-            data = map(comp, data)
-            self.module.heapify(data)
-            return [self.module.heappop(data).x for i in range(len(data))]
-        class LT:
-            def __init__(self, x):
-                self.x = x
-            def __lt__(self, other):
-                return self.x > other.x
-        class LE:
-            def __init__(self, x):
-                self.x = x
-            def __le__(self, other):
-                return self.x >= other.x
-        data = [random.random() for i in range(100)]
-        target = sorted(data, reverse=True)
-        self.assertEqual(hsort(data, LT), target)
-        self.assertEqual(hsort(data, LE), target)
-
-
-class TestHeapPython(TestHeap):
-    module = py_heapq
-
-
-@skipUnless(c_heapq, 'requires _heapq')
-class TestHeapC(TestHeap):
-    module = c_heapq
-
-
-#==============================================================================
-
-class LenOnly:
-    "Dummy sequence class defining __len__ but not __getitem__."
-    def __len__(self):
-        return 10
-
-class GetOnly:
-    "Dummy sequence class defining __getitem__ but not __len__."
-    def __getitem__(self, ndx):
-        return 10
-
-class CmpErr:
-    "Dummy element that always raises an error during comparison"
-    def __cmp__(self, other):
-        raise ZeroDivisionError
-
-def R(seqn):
-    'Regular generator'
-    for i in seqn:
-        yield i
-
-class G:
-    'Sequence using __getitem__'
-    def __init__(self, seqn):
-        self.seqn = seqn
-    def __getitem__(self, i):
-        return self.seqn[i]
-
-class I:
-    'Sequence using iterator protocol'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-    def next(self):
-        if self.i >= len(self.seqn): raise StopIteration
-        v = self.seqn[self.i]
-        self.i += 1
-        return v
-
-class Ig:
-    'Sequence using iterator protocol defined with a generator'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        for val in self.seqn:
-            yield val
-
-class X:
-    'Missing __getitem__ and __iter__'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def next(self):
-        if self.i >= len(self.seqn): raise StopIteration
-        v = self.seqn[self.i]
-        self.i += 1
-        return v
-
-class N:
-    'Iterator missing next()'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-
-class E:
-    'Test propagation of exceptions'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-    def next(self):
-        3 // 0
-
-class S:
-    'Test immediate stop'
-    def __init__(self, seqn):
-        pass
-    def __iter__(self):
-        return self
-    def next(self):
-        raise StopIteration
-
-from itertools import chain, imap
-def L(seqn):
-    'Test multiple tiers of iterators'
-    return chain(imap(lambda x:x, R(Ig(G(seqn)))))
-
-class TestErrorHandling(TestCase):
-    module = None
-
-    def test_non_sequence(self):
-        for f in (self.module.heapify, self.module.heappop):
-            self.assertRaises((TypeError, AttributeError), f, 10)
-        for f in (self.module.heappush, self.module.heapreplace,
-                  self.module.nlargest, self.module.nsmallest):
-            self.assertRaises((TypeError, AttributeError), f, 10, 10)
-
-    def test_len_only(self):
-        for f in (self.module.heapify, self.module.heappop):
-            self.assertRaises((TypeError, AttributeError), f, LenOnly())
-        for f in (self.module.heappush, self.module.heapreplace):
-            self.assertRaises((TypeError, AttributeError), f, LenOnly(), 10)
-        for f in (self.module.nlargest, self.module.nsmallest):
-            self.assertRaises(TypeError, f, 2, LenOnly())
-
-    def test_get_only(self):
-        seq = [CmpErr(), CmpErr(), CmpErr()]
-        for f in (self.module.heapify, self.module.heappop):
-            self.assertRaises(ZeroDivisionError, f, seq)
-        for f in (self.module.heappush, self.module.heapreplace):
-            self.assertRaises(ZeroDivisionError, f, seq, 10)
-        for f in (self.module.nlargest, self.module.nsmallest):
-            self.assertRaises(ZeroDivisionError, f, 2, seq)
-
-    def test_arg_parsing(self):
-        for f in (self.module.heapify, self.module.heappop,
-                  self.module.heappush, self.module.heapreplace,
-                  self.module.nlargest, self.module.nsmallest):
-            self.assertRaises((TypeError, AttributeError), f, 10)
-
-    def test_iterable_args(self):
-        for f in (self.module.nlargest, self.module.nsmallest):
-            for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
-                for g in (G, I, Ig, L, R):
-                    with test_support.check_py3k_warnings(
-                            ("comparing unequal types not supported",
-                             DeprecationWarning), quiet=True):
-                        self.assertEqual(f(2, g(s)), f(2,s))
-                self.assertEqual(f(2, S(s)), [])
-                self.assertRaises(TypeError, f, 2, X(s))
-                self.assertRaises(TypeError, f, 2, N(s))
-                self.assertRaises(ZeroDivisionError, f, 2, E(s))
-
-
-class TestErrorHandlingPython(TestErrorHandling):
-    module = py_heapq
-
-
-@skipUnless(c_heapq, 'requires _heapq')
-class TestErrorHandlingC(TestErrorHandling):
-    module = c_heapq
-
-
-#==============================================================================
-
-
-def test_main(verbose=None):
-    test_classes = [TestModules, TestHeapPython, TestHeapC,
-                    TestErrorHandlingPython, TestErrorHandlingC]
-    test_support.run_unittest(*test_classes)
-
-    # verify reference counting
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        import gc
-        counts = [None] * 5
-        for i in xrange(len(counts)):
-            test_support.run_unittest(*test_classes)
-            gc.collect()
-            counts[i] = sys.gettotalrefcount()
-        print counts
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hmac.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hmac.py
deleted file mode 100644
index 539675f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hmac.py
+++ /dev/null
@@ -1,314 +0,0 @@
-import hmac
-import hashlib
-import unittest
-import warnings
-from test import test_support
-
-class TestVectorsTestCase(unittest.TestCase):
-
-    def test_md5_vectors(self):
-        # Test the HMAC module against test vectors from the RFC.
-
-        def md5test(key, data, digest):
-            h = hmac.HMAC(key, data)
-            self.assertEqual(h.hexdigest().upper(), digest.upper())
-
-        md5test(chr(0x0b) * 16,
-                "Hi There",
-                "9294727A3638BB1C13F48EF8158BFC9D")
-
-        md5test("Jefe",
-                "what do ya want for nothing?",
-                "750c783e6ab0b503eaa86e310a5db738")
-
-        md5test(chr(0xAA)*16,
-                chr(0xDD)*50,
-                "56be34521d144c88dbb8c733f0e8b3f6")
-
-        md5test("".join([chr(i) for i in range(1, 26)]),
-                chr(0xCD) * 50,
-                "697eaf0aca3a3aea3a75164746ffaa79")
-
-        md5test(chr(0x0C) * 16,
-                "Test With Truncation",
-                "56461ef2342edc00f9bab995690efd4c")
-
-        md5test(chr(0xAA) * 80,
-                "Test Using Larger Than Block-Size Key - Hash Key First",
-                "6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd")
-
-        md5test(chr(0xAA) * 80,
-                ("Test Using Larger Than Block-Size Key "
-                 "and Larger Than One Block-Size Data"),
-                "6f630fad67cda0ee1fb1f562db3aa53e")
-
-    def test_sha_vectors(self):
-        def shatest(key, data, digest):
-            h = hmac.HMAC(key, data, digestmod=hashlib.sha1)
-            self.assertEqual(h.hexdigest().upper(), digest.upper())
-
-        shatest(chr(0x0b) * 20,
-                "Hi There",
-                "b617318655057264e28bc0b6fb378c8ef146be00")
-
-        shatest("Jefe",
-                "what do ya want for nothing?",
-                "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79")
-
-        shatest(chr(0xAA)*20,
-                chr(0xDD)*50,
-                "125d7342b9ac11cd91a39af48aa17b4f63f175d3")
-
-        shatest("".join([chr(i) for i in range(1, 26)]),
-                chr(0xCD) * 50,
-                "4c9007f4026250c6bc8414f9bf50c86c2d7235da")
-
-        shatest(chr(0x0C) * 20,
-                "Test With Truncation",
-                "4c1a03424b55e07fe7f27be1d58bb9324a9a5a04")
-
-        shatest(chr(0xAA) * 80,
-                "Test Using Larger Than Block-Size Key - Hash Key First",
-                "aa4ae5e15272d00e95705637ce8a3b55ed402112")
-
-        shatest(chr(0xAA) * 80,
-                ("Test Using Larger Than Block-Size Key "
-                 "and Larger Than One Block-Size Data"),
-                "e8e99d0f45237d786d6bbaa7965c7808bbff1a91")
-
-    def _rfc4231_test_cases(self, hashfunc):
-        def hmactest(key, data, hexdigests):
-            h = hmac.HMAC(key, data, digestmod=hashfunc)
-            self.assertEqual(h.hexdigest().lower(), hexdigests[hashfunc])
-
-        # 4.2.  Test Case 1
-        hmactest(key = '\x0b'*20,
-                 data = 'Hi There',
-                 hexdigests = {
-                   hashlib.sha224: '896fb1128abbdf196832107cd49df33f'
-                                   '47b4b1169912ba4f53684b22',
-                   hashlib.sha256: 'b0344c61d8db38535ca8afceaf0bf12b'
-                                   '881dc200c9833da726e9376c2e32cff7',
-                   hashlib.sha384: 'afd03944d84895626b0825f4ab46907f'
-                                   '15f9dadbe4101ec682aa034c7cebc59c'
-                                   'faea9ea9076ede7f4af152e8b2fa9cb6',
-                   hashlib.sha512: '87aa7cdea5ef619d4ff0b4241a1d6cb0'
-                                   '2379f4e2ce4ec2787ad0b30545e17cde'
-                                   'daa833b7d6b8a702038b274eaea3f4e4'
-                                   'be9d914eeb61f1702e696c203a126854',
-                 })
-
-        # 4.3.  Test Case 2
-        hmactest(key = 'Jefe',
-                 data = 'what do ya want for nothing?',
-                 hexdigests = {
-                   hashlib.sha224: 'a30e01098bc6dbbf45690f3a7e9e6d0f'
-                                   '8bbea2a39e6148008fd05e44',
-                   hashlib.sha256: '5bdcc146bf60754e6a042426089575c7'
-                                   '5a003f089d2739839dec58b964ec3843',
-                   hashlib.sha384: 'af45d2e376484031617f78d2b58a6b1b'
-                                   '9c7ef464f5a01b47e42ec3736322445e'
-                                   '8e2240ca5e69e2c78b3239ecfab21649',
-                   hashlib.sha512: '164b7a7bfcf819e2e395fbe73b56e0a3'
-                                   '87bd64222e831fd610270cd7ea250554'
-                                   '9758bf75c05a994a6d034f65f8f0e6fd'
-                                   'caeab1a34d4a6b4b636e070a38bce737',
-                 })
-
-        # 4.4.  Test Case 3
-        hmactest(key = '\xaa'*20,
-                 data = '\xdd'*50,
-                 hexdigests = {
-                   hashlib.sha224: '7fb3cb3588c6c1f6ffa9694d7d6ad264'
-                                   '9365b0c1f65d69d1ec8333ea',
-                   hashlib.sha256: '773ea91e36800e46854db8ebd09181a7'
-                                   '2959098b3ef8c122d9635514ced565fe',
-                   hashlib.sha384: '88062608d3e6ad8a0aa2ace014c8a86f'
-                                   '0aa635d947ac9febe83ef4e55966144b'
-                                   '2a5ab39dc13814b94e3ab6e101a34f27',
-                   hashlib.sha512: 'fa73b0089d56a284efb0f0756c890be9'
-                                   'b1b5dbdd8ee81a3655f83e33b2279d39'
-                                   'bf3e848279a722c806b485a47e67c807'
-                                   'b946a337bee8942674278859e13292fb',
-                 })
-
-        # 4.5.  Test Case 4
-        hmactest(key = ''.join([chr(x) for x in xrange(0x01, 0x19+1)]),
-                 data = '\xcd'*50,
-                 hexdigests = {
-                   hashlib.sha224: '6c11506874013cac6a2abc1bb382627c'
-                                   'ec6a90d86efc012de7afec5a',
-                   hashlib.sha256: '82558a389a443c0ea4cc819899f2083a'
-                                   '85f0faa3e578f8077a2e3ff46729665b',
-                   hashlib.sha384: '3e8a69b7783c25851933ab6290af6ca7'
-                                   '7a9981480850009cc5577c6e1f573b4e'
-                                   '6801dd23c4a7d679ccf8a386c674cffb',
-                   hashlib.sha512: 'b0ba465637458c6990e5a8c5f61d4af7'
-                                   'e576d97ff94b872de76f8050361ee3db'
-                                   'a91ca5c11aa25eb4d679275cc5788063'
-                                   'a5f19741120c4f2de2adebeb10a298dd',
-                 })
-
-        # 4.7.  Test Case 6
-        hmactest(key = '\xaa'*131,
-                 data = 'Test Using Larger Than Block-Siz'
-                        'e Key - Hash Key First',
-                 hexdigests = {
-                   hashlib.sha224: '95e9a0db962095adaebe9b2d6f0dbce2'
-                                   'd499f112f2d2b7273fa6870e',
-                   hashlib.sha256: '60e431591ee0b67f0d8a26aacbf5b77f'
-                                   '8e0bc6213728c5140546040f0ee37f54',
-                   hashlib.sha384: '4ece084485813e9088d2c63a041bc5b4'
-                                   '4f9ef1012a2b588f3cd11f05033ac4c6'
-                                   '0c2ef6ab4030fe8296248df163f44952',
-                   hashlib.sha512: '80b24263c7c1a3ebb71493c1dd7be8b4'
-                                   '9b46d1f41b4aeec1121b013783f8f352'
-                                   '6b56d037e05f2598bd0fd2215d6a1e52'
-                                   '95e64f73f63f0aec8b915a985d786598',
-                 })
-
-        # 4.8.  Test Case 7
-        hmactest(key = '\xaa'*131,
-                 data = 'This is a test using a larger th'
-                        'an block-size key and a larger t'
-                        'han block-size data. The key nee'
-                        'ds to be hashed before being use'
-                        'd by the HMAC algorithm.',
-                 hexdigests = {
-                   hashlib.sha224: '3a854166ac5d9f023f54d517d0b39dbd'
-                                   '946770db9c2b95c9f6f565d1',
-                   hashlib.sha256: '9b09ffa71b942fcb27635fbcd5b0e944'
-                                   'bfdc63644f0713938a7f51535c3a35e2',
-                   hashlib.sha384: '6617178e941f020d351e2f254e8fd32c'
-                                   '602420feb0b8fb9adccebb82461e99c5'
-                                   'a678cc31e799176d3860e6110c46523e',
-                   hashlib.sha512: 'e37b6a775dc87dbaa4dfa9f96e5e3ffd'
-                                   'debd71f8867289865df5a32d20cdc944'
-                                   'b6022cac3c4982b10d5eeb55c3e4de15'
-                                   '134676fb6de0446065c97440fa8c6a58',
-                 })
-
-    def test_sha224_rfc4231(self):
-        self._rfc4231_test_cases(hashlib.sha224)
-
-    def test_sha256_rfc4231(self):
-        self._rfc4231_test_cases(hashlib.sha256)
-
-    def test_sha384_rfc4231(self):
-        self._rfc4231_test_cases(hashlib.sha384)
-
-    def test_sha512_rfc4231(self):
-        self._rfc4231_test_cases(hashlib.sha512)
-
-    def test_legacy_block_size_warnings(self):
-        class MockCrazyHash(object):
-            """Ain't no block_size attribute here."""
-            def __init__(self, *args):
-                self._x = hashlib.sha1(*args)
-                self.digest_size = self._x.digest_size
-            def update(self, v):
-                self._x.update(v)
-            def digest(self):
-                return self._x.digest()
-
-        with warnings.catch_warnings():
-            warnings.simplefilter('error', RuntimeWarning)
-            with self.assertRaises(RuntimeWarning):
-                hmac.HMAC('a', 'b', digestmod=MockCrazyHash)
-                self.fail('Expected warning about missing block_size')
-
-            MockCrazyHash.block_size = 1
-            with self.assertRaises(RuntimeWarning):
-                hmac.HMAC('a', 'b', digestmod=MockCrazyHash)
-                self.fail('Expected warning about small block_size')
-
-
-
-class ConstructorTestCase(unittest.TestCase):
-
-    def test_normal(self):
-        # Standard constructor call.
-        failed = 0
-        try:
-            h = hmac.HMAC("key")
-        except:
-            self.fail("Standard constructor call raised exception.")
-
-    def test_withtext(self):
-        # Constructor call with text.
-        try:
-            h = hmac.HMAC("key", "hash this!")
-        except:
-            self.fail("Constructor call with text argument raised exception.")
-
-    def test_withmodule(self):
-        # Constructor call with text and digest module.
-        try:
-            h = hmac.HMAC("key", "", hashlib.sha1)
-        except:
-            self.fail("Constructor call with hashlib.sha1 raised exception.")
-
-class SanityTestCase(unittest.TestCase):
-
-    def test_default_is_md5(self):
-        # Testing if HMAC defaults to MD5 algorithm.
-        # NOTE: this whitebox test depends on the hmac class internals
-        h = hmac.HMAC("key")
-        self.assertTrue(h.digest_cons == hashlib.md5)
-
-    def test_exercise_all_methods(self):
-        # Exercising all methods once.
-        # This must not raise any exceptions
-        try:
-            h = hmac.HMAC("my secret key")
-            h.update("compute the hash of this text!")
-            dig = h.digest()
-            dig = h.hexdigest()
-            h2 = h.copy()
-        except:
-            self.fail("Exception raised during normal usage of HMAC class.")
-
-class CopyTestCase(unittest.TestCase):
-
-    def test_attributes(self):
-        # Testing if attributes are of same type.
-        h1 = hmac.HMAC("key")
-        h2 = h1.copy()
-        self.assertTrue(h1.digest_cons == h2.digest_cons,
-            "digest constructors don't match.")
-        self.assertTrue(type(h1.inner) == type(h2.inner),
-            "Types of inner don't match.")
-        self.assertTrue(type(h1.outer) == type(h2.outer),
-            "Types of outer don't match.")
-
-    def test_realcopy(self):
-        # Testing if the copy method created a real copy.
-        h1 = hmac.HMAC("key")
-        h2 = h1.copy()
-        # Using id() in case somebody has overridden __cmp__.
-        self.assertTrue(id(h1) != id(h2), "No real copy of the HMAC instance.")
-        self.assertTrue(id(h1.inner) != id(h2.inner),
-            "No real copy of the attribute 'inner'.")
-        self.assertTrue(id(h1.outer) != id(h2.outer),
-            "No real copy of the attribute 'outer'.")
-
-    def test_equality(self):
-        # Testing if the copy has the same digests.
-        h1 = hmac.HMAC("key")
-        h1.update("some random text")
-        h2 = h1.copy()
-        self.assertTrue(h1.digest() == h2.digest(),
-            "Digest of copy doesn't match original digest.")
-        self.assertTrue(h1.hexdigest() == h2.hexdigest(),
-            "Hexdigest of copy doesn't match original hexdigest.")
-
-def test_main():
-    test_support.run_unittest(
-        TestVectorsTestCase,
-        ConstructorTestCase,
-        SanityTestCase,
-        CopyTestCase
-    )
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hotshot.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hotshot.py
deleted file mode 100644
index 3166f0a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_hotshot.py
+++ /dev/null
@@ -1,158 +0,0 @@
-import os
-import pprint
-import unittest
-import tempfile
-import _hotshot
-import gc
-
-from test import test_support
-
-# Silence Py3k warning
-hotshot = test_support.import_module('hotshot', deprecated=True)
-from hotshot.log import ENTER, EXIT, LINE
-from hotshot import stats
-
-
-def shortfilename(fn):
-    # We use a really shortened filename since an exact match is made,
-    # and the source may be either a Python source file or a
-    # pre-compiled bytecode file.
-    if fn:
-        return os.path.splitext(os.path.basename(fn))[0]
-    else:
-        return fn
-
-
-class UnlinkingLogReader(hotshot.log.LogReader):
-    """Extend the LogReader so the log file is unlinked when we're
-    done with it."""
-
-    def __init__(self, logfn):
-        self.__logfn = logfn
-        hotshot.log.LogReader.__init__(self, logfn)
-
-    def next(self, index=None):
-        try:
-            return hotshot.log.LogReader.next(self)
-        except StopIteration:
-            self.close()
-            os.unlink(self.__logfn)
-            raise
-
-
-class HotShotTestCase(unittest.TestCase):
-    def new_profiler(self, lineevents=0, linetimings=1):
-        self.logfn = test_support.TESTFN
-        return hotshot.Profile(self.logfn, lineevents, linetimings)
-
-    def get_logreader(self):
-        return UnlinkingLogReader(self.logfn)
-
-    def get_events_wotime(self):
-        L = []
-        for event in self.get_logreader():
-            what, (filename, lineno, funcname), tdelta = event
-            L.append((what, (shortfilename(filename), lineno, funcname)))
-        return L
-
-    def check_events(self, expected):
-        events = self.get_events_wotime()
-        if events != expected:
-            self.fail(
-                "events did not match expectation; got:\n%s\nexpected:\n%s"
-                % (pprint.pformat(events), pprint.pformat(expected)))
-
-    def run_test(self, callable, events, profiler=None):
-        if profiler is None:
-            profiler = self.new_profiler()
-        self.assertTrue(not profiler._prof.closed)
-        profiler.runcall(callable)
-        self.assertTrue(not profiler._prof.closed)
-        profiler.close()
-        self.assertTrue(profiler._prof.closed)
-        self.check_events(events)
-
-    def test_addinfo(self):
-        def f(p):
-            p.addinfo("test-key", "test-value")
-        profiler = self.new_profiler()
-        profiler.runcall(f, profiler)
-        profiler.close()
-        log = self.get_logreader()
-        info = log._info
-        list(log)
-        self.assertTrue(info["test-key"] == ["test-value"])
-
-    def test_line_numbers(self):
-        def f():
-            y = 2
-            x = 1
-        def g():
-            f()
-        f_lineno = f.func_code.co_firstlineno
-        g_lineno = g.func_code.co_firstlineno
-        events = [(ENTER, ("test_hotshot", g_lineno, "g")),
-                  (LINE,  ("test_hotshot", g_lineno+1, "g")),
-                  (ENTER, ("test_hotshot", f_lineno, "f")),
-                  (LINE,  ("test_hotshot", f_lineno+1, "f")),
-                  (LINE,  ("test_hotshot", f_lineno+2, "f")),
-                  (EXIT,  ("test_hotshot", f_lineno, "f")),
-                  (EXIT,  ("test_hotshot", g_lineno, "g")),
-                  ]
-        self.run_test(g, events, self.new_profiler(lineevents=1))
-
-    def test_start_stop(self):
-        # Make sure we don't return NULL in the start() and stop()
-        # methods when there isn't an error.  Bug in 2.2 noted by
-        # Anthony Baxter.
-        profiler = self.new_profiler()
-        profiler.start()
-        profiler.stop()
-        profiler.close()
-        os.unlink(self.logfn)
-
-    def test_bad_sys_path(self):
-        import sys
-        import os
-        orig_path = sys.path
-        coverage = hotshot._hotshot.coverage
-        try:
-            # verify we require a list for sys.path
-            sys.path = 'abc'
-            self.assertRaises(RuntimeError, coverage, test_support.TESTFN)
-            # verify that we require sys.path exists
-            del sys.path
-            self.assertRaises(RuntimeError, coverage, test_support.TESTFN)
-        finally:
-            sys.path = orig_path
-            if os.path.exists(test_support.TESTFN):
-                os.remove(test_support.TESTFN)
-
-    def test_logreader_eof_error(self):
-        emptyfile = tempfile.NamedTemporaryFile()
-        try:
-            self.assertRaises((IOError, EOFError), _hotshot.logreader,
-                              emptyfile.name)
-        finally:
-            emptyfile.close()
-        gc.collect()
-
-    def test_load_stats(self):
-        def start(prof):
-            prof.start()
-        # Make sure stats can be loaded when start and stop of profiler
-        # are not executed in the same stack frame.
-        profiler = self.new_profiler()
-        start(profiler)
-        profiler.stop()
-        profiler.close()
-        stats.load(self.logfn)
-        os.unlink(self.logfn)
-
-
-def test_main():
-    test_support.run_unittest(HotShotTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_htmllib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_htmllib.py
deleted file mode 100644
index f45e871..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_htmllib.py
+++ /dev/null
@@ -1,69 +0,0 @@
-import formatter
-import unittest
-
-from test import test_support
-htmllib = test_support.import_module('htmllib', deprecated=True)
-
-
-class AnchorCollector(htmllib.HTMLParser):
-    def __init__(self, *args, **kw):
-        self.__anchors = []
-        htmllib.HTMLParser.__init__(self, *args, **kw)
-
-    def get_anchor_info(self):
-        return self.__anchors
-
-    def anchor_bgn(self, *args):
-        self.__anchors.append(args)
-
-class DeclCollector(htmllib.HTMLParser):
-    def __init__(self, *args, **kw):
-        self.__decls = []
-        htmllib.HTMLParser.__init__(self, *args, **kw)
-
-    def get_decl_info(self):
-        return self.__decls
-
-    def unknown_decl(self, data):
-        self.__decls.append(data)
-
-
-class HTMLParserTestCase(unittest.TestCase):
-    def test_anchor_collection(self):
-        # See SF bug #467059.
-        parser = AnchorCollector(formatter.NullFormatter(), verbose=1)
-        parser.feed(
-            """<a href='http://foo.org/' name='splat'> </a>
-            <a href='http://www.python.org/'> </a>
-            <a name='frob'> </a>
-            """)
-        parser.close()
-        self.assertEqual(parser.get_anchor_info(),
-                         [('http://foo.org/', 'splat', ''),
-                          ('http://www.python.org/', '', ''),
-                          ('', 'frob', ''),
-                          ])
-
-    def test_decl_collection(self):
-        # See SF patch #545300
-        parser = DeclCollector(formatter.NullFormatter(), verbose=1)
-        parser.feed(
-            """<html>
-            <body>
-            hallo
-            <![if !supportEmptyParas]>&nbsp;<![endif]>
-            </body>
-            </html>
-            """)
-        parser.close()
-        self.assertEqual(parser.get_decl_info(),
-                         ["if !supportEmptyParas",
-                          "endif"
-                          ])
-
-def test_main():
-    test_support.run_unittest(HTMLParserTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_htmlparser.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_htmlparser.py
deleted file mode 100644
index 47512d4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_htmlparser.py
+++ /dev/null
@@ -1,351 +0,0 @@
-"""Tests for HTMLParser.py."""
-
-import HTMLParser
-import pprint
-import unittest
-from test import test_support
-
-
-class EventCollector(HTMLParser.HTMLParser):
-
-    def __init__(self):
-        self.events = []
-        self.append = self.events.append
-        HTMLParser.HTMLParser.__init__(self)
-
-    def get_events(self):
-        # Normalize the list of events so that buffer artefacts don't
-        # separate runs of contiguous characters.
-        L = []
-        prevtype = None
-        for event in self.events:
-            type = event[0]
-            if type == prevtype == "data":
-                L[-1] = ("data", L[-1][1] + event[1])
-            else:
-                L.append(event)
-            prevtype = type
-        self.events = L
-        return L
-
-    # structure markup
-
-    def handle_starttag(self, tag, attrs):
-        self.append(("starttag", tag, attrs))
-
-    def handle_startendtag(self, tag, attrs):
-        self.append(("startendtag", tag, attrs))
-
-    def handle_endtag(self, tag):
-        self.append(("endtag", tag))
-
-    # all other markup
-
-    def handle_comment(self, data):
-        self.append(("comment", data))
-
-    def handle_charref(self, data):
-        self.append(("charref", data))
-
-    def handle_data(self, data):
-        self.append(("data", data))
-
-    def handle_decl(self, data):
-        self.append(("decl", data))
-
-    def handle_entityref(self, data):
-        self.append(("entityref", data))
-
-    def handle_pi(self, data):
-        self.append(("pi", data))
-
-    def unknown_decl(self, decl):
-        self.append(("unknown decl", decl))
-
-
-class EventCollectorExtra(EventCollector):
-
-    def handle_starttag(self, tag, attrs):
-        EventCollector.handle_starttag(self, tag, attrs)
-        self.append(("starttag_text", self.get_starttag_text()))
-
-
-class TestCaseBase(unittest.TestCase):
-
-    def _run_check(self, source, expected_events, collector=EventCollector):
-        parser = collector()
-        for s in source:
-            parser.feed(s)
-        parser.close()
-        events = parser.get_events()
-        if events != expected_events:
-            self.fail("received events did not match expected events\n"
-                      "Expected:\n" + pprint.pformat(expected_events) +
-                      "\nReceived:\n" + pprint.pformat(events))
-
-    def _run_check_extra(self, source, events):
-        self._run_check(source, events, EventCollectorExtra)
-
-    def _parse_error(self, source):
-        def parse(source=source):
-            parser = HTMLParser.HTMLParser()
-            parser.feed(source)
-            parser.close()
-        self.assertRaises(HTMLParser.HTMLParseError, parse)
-
-
-class HTMLParserTestCase(TestCaseBase):
-
-    def test_processing_instruction_only(self):
-        self._run_check("<?processing instruction>", [
-            ("pi", "processing instruction"),
-            ])
-        self._run_check("<?processing instruction ?>", [
-            ("pi", "processing instruction ?"),
-            ])
-
-    def test_simple_html(self):
-        self._run_check("""
-<!DOCTYPE html PUBLIC 'foo'>
-<HTML>&entity;&#32;
-<!--comment1a
--></foo><bar>&lt;<?pi?></foo<bar
-comment1b-->
-<Img sRc='Bar' isMAP>sample
-text
-&#x201C;
-<!--comment2a-- --comment2b--><!>
-</Html>
-""", [
-    ("data", "\n"),
-    ("decl", "DOCTYPE html PUBLIC 'foo'"),
-    ("data", "\n"),
-    ("starttag", "html", []),
-    ("entityref", "entity"),
-    ("charref", "32"),
-    ("data", "\n"),
-    ("comment", "comment1a\n-></foo><bar>&lt;<?pi?></foo<bar\ncomment1b"),
-    ("data", "\n"),
-    ("starttag", "img", [("src", "Bar"), ("ismap", None)]),
-    ("data", "sample\ntext\n"),
-    ("charref", "x201C"),
-    ("data", "\n"),
-    ("comment", "comment2a-- --comment2b"),
-    ("data", "\n"),
-    ("endtag", "html"),
-    ("data", "\n"),
-    ])
-
-    def test_unclosed_entityref(self):
-        self._run_check("&entityref foo", [
-            ("entityref", "entityref"),
-            ("data", " foo"),
-            ])
-
-    def test_doctype_decl(self):
-        inside = """\
-DOCTYPE html [
-  <!ELEMENT html - O EMPTY>
-  <!ATTLIST html
-      version CDATA #IMPLIED
-      profile CDATA 'DublinCore'>
-  <!NOTATION datatype SYSTEM 'http://xml.python.org/notations/python-module'>
-  <!ENTITY myEntity 'internal parsed entity'>
-  <!ENTITY anEntity SYSTEM 'http://xml.python.org/entities/something.xml'>
-  <!ENTITY % paramEntity 'name|name|name'>
-  %paramEntity;
-  <!-- comment -->
-]"""
-        self._run_check("<!%s>" % inside, [
-            ("decl", inside),
-            ])
-
-    def test_bad_nesting(self):
-        # Strangely, this *is* supposed to test that overlapping
-        # elements are allowed.  HTMLParser is more geared toward
-        # lexing the input that parsing the structure.
-        self._run_check("<a><b></a></b>", [
-            ("starttag", "a", []),
-            ("starttag", "b", []),
-            ("endtag", "a"),
-            ("endtag", "b"),
-            ])
-
-    def test_bare_ampersands(self):
-        self._run_check("this text & contains & ampersands &", [
-            ("data", "this text & contains & ampersands &"),
-            ])
-
-    def test_bare_pointy_brackets(self):
-        self._run_check("this < text > contains < bare>pointy< brackets", [
-            ("data", "this < text > contains < bare>pointy< brackets"),
-            ])
-
-    def test_attr_syntax(self):
-        output = [
-          ("starttag", "a", [("b", "v"), ("c", "v"), ("d", "v"), ("e", None)])
-          ]
-        self._run_check("""<a b='v' c="v" d=v e>""", output)
-        self._run_check("""<a  b = 'v' c = "v" d = v e>""", output)
-        self._run_check("""<a\nb\n=\n'v'\nc\n=\n"v"\nd\n=\nv\ne>""", output)
-        self._run_check("""<a\tb\t=\t'v'\tc\t=\t"v"\td\t=\tv\te>""", output)
-
-    def test_attr_values(self):
-        self._run_check("""<a b='xxx\n\txxx' c="yyy\t\nyyy" d='\txyz\n'>""",
-                        [("starttag", "a", [("b", "xxx\n\txxx"),
-                                            ("c", "yyy\t\nyyy"),
-                                            ("d", "\txyz\n")])
-                         ])
-        self._run_check("""<a b='' c="">""", [
-            ("starttag", "a", [("b", ""), ("c", "")]),
-            ])
-        # Regression test for SF patch #669683.
-        self._run_check("<e a=rgb(1,2,3)>", [
-            ("starttag", "e", [("a", "rgb(1,2,3)")]),
-            ])
-        # Regression test for SF bug #921657.
-        self._run_check("<a href=mailto:xyz@example.com>", [
-            ("starttag", "a", [("href", "mailto:xyz@example.com")]),
-            ])
-
-    def test_attr_nonascii(self):
-        # see issue 7311
-        self._run_check(u"<img src=/foo/bar.png alt=\u4e2d\u6587>", [
-            ("starttag", "img", [("src", "/foo/bar.png"),
-                                 ("alt", u"\u4e2d\u6587")]),
-            ])
-        self._run_check(u"<a title='\u30c6\u30b9\u30c8' "
-                        u"href='\u30c6\u30b9\u30c8.html'>", [
-            ("starttag", "a", [("title", u"\u30c6\u30b9\u30c8"),
-                               ("href", u"\u30c6\u30b9\u30c8.html")]),
-            ])
-        self._run_check(u'<a title="\u30c6\u30b9\u30c8" '
-                        u'href="\u30c6\u30b9\u30c8.html">', [
-            ("starttag", "a", [("title", u"\u30c6\u30b9\u30c8"),
-                               ("href", u"\u30c6\u30b9\u30c8.html")]),
-            ])
-
-    def test_attr_entity_replacement(self):
-        self._run_check("""<a b='&amp;&gt;&lt;&quot;&apos;'>""", [
-            ("starttag", "a", [("b", "&><\"'")]),
-            ])
-
-    def test_attr_funky_names(self):
-        self._run_check("""<a a.b='v' c:d=v e-f=v>""", [
-            ("starttag", "a", [("a.b", "v"), ("c:d", "v"), ("e-f", "v")]),
-            ])
-
-    def test_illegal_declarations(self):
-        self._parse_error('<!spacer type="block" height="25">')
-
-    def test_starttag_end_boundary(self):
-        self._run_check("""<a b='<'>""", [("starttag", "a", [("b", "<")])])
-        self._run_check("""<a b='>'>""", [("starttag", "a", [("b", ">")])])
-
-    def test_buffer_artefacts(self):
-        output = [("starttag", "a", [("b", "<")])]
-        self._run_check(["<a b='<'>"], output)
-        self._run_check(["<a ", "b='<'>"], output)
-        self._run_check(["<a b", "='<'>"], output)
-        self._run_check(["<a b=", "'<'>"], output)
-        self._run_check(["<a b='<", "'>"], output)
-        self._run_check(["<a b='<'", ">"], output)
-
-        output = [("starttag", "a", [("b", ">")])]
-        self._run_check(["<a b='>'>"], output)
-        self._run_check(["<a ", "b='>'>"], output)
-        self._run_check(["<a b", "='>'>"], output)
-        self._run_check(["<a b=", "'>'>"], output)
-        self._run_check(["<a b='>", "'>"], output)
-        self._run_check(["<a b='>'", ">"], output)
-
-        output = [("comment", "abc")]
-        self._run_check(["", "<!--abc-->"], output)
-        self._run_check(["<", "!--abc-->"], output)
-        self._run_check(["<!", "--abc-->"], output)
-        self._run_check(["<!-", "-abc-->"], output)
-        self._run_check(["<!--", "abc-->"], output)
-        self._run_check(["<!--a", "bc-->"], output)
-        self._run_check(["<!--ab", "c-->"], output)
-        self._run_check(["<!--abc", "-->"], output)
-        self._run_check(["<!--abc-", "->"], output)
-        self._run_check(["<!--abc--", ">"], output)
-        self._run_check(["<!--abc-->", ""], output)
-
-    def test_starttag_junk_chars(self):
-        self._parse_error("</>")
-        self._parse_error("</$>")
-        self._parse_error("</")
-        self._parse_error("</a")
-        self._parse_error("<a<a>")
-        self._parse_error("</a<a>")
-        self._parse_error("<!")
-        self._parse_error("<a $>")
-        self._parse_error("<a")
-        self._parse_error("<a foo='bar'")
-        self._parse_error("<a foo='bar")
-        self._parse_error("<a foo='>'")
-        self._parse_error("<a foo='>")
-        self._parse_error("<a foo=>")
-
-    def test_declaration_junk_chars(self):
-        self._parse_error("<!DOCTYPE foo $ >")
-
-    def test_startendtag(self):
-        self._run_check("<p/>", [
-            ("startendtag", "p", []),
-            ])
-        self._run_check("<p></p>", [
-            ("starttag", "p", []),
-            ("endtag", "p"),
-            ])
-        self._run_check("<p><img src='foo' /></p>", [
-            ("starttag", "p", []),
-            ("startendtag", "img", [("src", "foo")]),
-            ("endtag", "p"),
-            ])
-
-    def test_get_starttag_text(self):
-        s = """<foo:bar   \n   one="1"\ttwo=2   >"""
-        self._run_check_extra(s, [
-            ("starttag", "foo:bar", [("one", "1"), ("two", "2")]),
-            ("starttag_text", s)])
-
-    def test_cdata_content(self):
-        s = """<script> <!-- not a comment --> &not-an-entity-ref; </script>"""
-        self._run_check(s, [
-            ("starttag", "script", []),
-            ("data", " <!-- not a comment --> &not-an-entity-ref; "),
-            ("endtag", "script"),
-            ])
-        s = """<script> <not a='start tag'> </script>"""
-        self._run_check(s, [
-            ("starttag", "script", []),
-            ("data", " <not a='start tag'> "),
-            ("endtag", "script"),
-            ])
-
-    def test_entityrefs_in_attributes(self):
-        self._run_check("<html foo='&euro;&amp;&#97;&#x61;&unsupported;'>", [
-                ("starttag", "html", [("foo", u"\u20AC&aa&unsupported;")])
-                ])
-
-    def test_malformatted_charref(self):
-        self._run_check("<p>&#bad;</p>", [
-            ("starttag", "p", []),
-            ("data", "&#bad;"),
-            ("endtag", "p"),
-        ])
-
-    def test_unescape_function(self):
-        parser = HTMLParser.HTMLParser()
-        self.assertEqual(parser.unescape('&#bad;'),'&#bad;')
-        self.assertEqual(parser.unescape('&#0038;'),'&')
-
-
-def test_main():
-    test_support.run_unittest(HTMLParserTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_httplib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_httplib.py
deleted file mode 100644
index ff4539e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_httplib.py
+++ /dev/null
@@ -1,447 +0,0 @@
-import httplib
-import array
-import httplib
-import StringIO
-import socket
-import errno
-
-import unittest
-TestCase = unittest.TestCase
-
-from test import test_support
-
-HOST = test_support.HOST
-
-class FakeSocket:
-    def __init__(self, text, fileclass=StringIO.StringIO):
-        self.text = text
-        self.fileclass = fileclass
-        self.data = ''
-
-    def sendall(self, data):
-        self.data += ''.join(data)
-
-    def makefile(self, mode, bufsize=None):
-        if mode != 'r' and mode != 'rb':
-            raise httplib.UnimplementedFileMode()
-        return self.fileclass(self.text)
-
-class EPipeSocket(FakeSocket):
-
-    def __init__(self, text, pipe_trigger):
-        # When sendall() is called with pipe_trigger, raise EPIPE.
-        FakeSocket.__init__(self, text)
-        self.pipe_trigger = pipe_trigger
-
-    def sendall(self, data):
-        if self.pipe_trigger in data:
-            raise socket.error(errno.EPIPE, "gotcha")
-        self.data += data
-
-    def close(self):
-        pass
-
-class NoEOFStringIO(StringIO.StringIO):
-    """Like StringIO, but raises AssertionError on EOF.
-
-    This is used below to test that httplib doesn't try to read
-    more from the underlying file than it should.
-    """
-    def read(self, n=-1):
-        data = StringIO.StringIO.read(self, n)
-        if data == '':
-            raise AssertionError('caller tried to read past EOF')
-        return data
-
-    def readline(self, length=None):
-        data = StringIO.StringIO.readline(self, length)
-        if data == '':
-            raise AssertionError('caller tried to read past EOF')
-        return data
-
-
-class HeaderTests(TestCase):
-    def test_auto_headers(self):
-        # Some headers are added automatically, but should not be added by
-        # .request() if they are explicitly set.
-
-        class HeaderCountingBuffer(list):
-            def __init__(self):
-                self.count = {}
-            def append(self, item):
-                kv = item.split(':')
-                if len(kv) > 1:
-                    # item is a 'Key: Value' header string
-                    lcKey = kv[0].lower()
-                    self.count.setdefault(lcKey, 0)
-                    self.count[lcKey] += 1
-                list.append(self, item)
-
-        for explicit_header in True, False:
-            for header in 'Content-length', 'Host', 'Accept-encoding':
-                conn = httplib.HTTPConnection('example.com')
-                conn.sock = FakeSocket('blahblahblah')
-                conn._buffer = HeaderCountingBuffer()
-
-                body = 'spamspamspam'
-                headers = {}
-                if explicit_header:
-                    headers[header] = str(len(body))
-                conn.request('POST', '/', body, headers)
-                self.assertEqual(conn._buffer.count[header.lower()], 1)
-
-    def test_putheader(self):
-        conn = httplib.HTTPConnection('example.com')
-        conn.sock = FakeSocket(None)
-        conn.putrequest('GET','/')
-        conn.putheader('Content-length',42)
-        self.assertTrue('Content-length: 42' in conn._buffer)
-
-    def test_ipv6host_header(self):
-        # Default host header on IPv6 transaction should wrapped by [] if
-        # its actual IPv6 address
-        expected = 'GET /foo HTTP/1.1\r\nHost: [2001::]:81\r\n' \
-                   'Accept-Encoding: identity\r\n\r\n'
-        conn = httplib.HTTPConnection('[2001::]:81')
-        sock = FakeSocket('')
-        conn.sock = sock
-        conn.request('GET', '/foo')
-        self.assertTrue(sock.data.startswith(expected))
-
-        expected = 'GET /foo HTTP/1.1\r\nHost: [2001:102A::]\r\n' \
-                   'Accept-Encoding: identity\r\n\r\n'
-        conn = httplib.HTTPConnection('[2001:102A::]')
-        sock = FakeSocket('')
-        conn.sock = sock
-        conn.request('GET', '/foo')
-        self.assertTrue(sock.data.startswith(expected))
-
-
-class BasicTest(TestCase):
-    def test_status_lines(self):
-        # Test HTTP status lines
-
-        body = "HTTP/1.1 200 Ok\r\n\r\nText"
-        sock = FakeSocket(body)
-        resp = httplib.HTTPResponse(sock)
-        resp.begin()
-        self.assertEqual(resp.read(), 'Text')
-        self.assertTrue(resp.isclosed())
-
-        body = "HTTP/1.1 400.100 Not Ok\r\n\r\nText"
-        sock = FakeSocket(body)
-        resp = httplib.HTTPResponse(sock)
-        self.assertRaises(httplib.BadStatusLine, resp.begin)
-
-    def test_bad_status_repr(self):
-        exc = httplib.BadStatusLine('')
-        self.assertEqual(repr(exc), '''BadStatusLine("\'\'",)''')
-
-    def test_partial_reads(self):
-        # if we have a lenght, the system knows when to close itself
-        # same behaviour than when we read the whole thing with read()
-        body = "HTTP/1.1 200 Ok\r\nContent-Length: 4\r\n\r\nText"
-        sock = FakeSocket(body)
-        resp = httplib.HTTPResponse(sock)
-        resp.begin()
-        self.assertEqual(resp.read(2), 'Te')
-        self.assertFalse(resp.isclosed())
-        self.assertEqual(resp.read(2), 'xt')
-        self.assertTrue(resp.isclosed())
-
-    def test_host_port(self):
-        # Check invalid host_port
-
-        for hp in ("www.python.org:abc", "www.python.org:"):
-            self.assertRaises(httplib.InvalidURL, httplib.HTTP, hp)
-
-        for hp, h, p in (("[fe80::207:e9ff:fe9b]:8000", "fe80::207:e9ff:fe9b",
-                          8000),
-                         ("www.python.org:80", "www.python.org", 80),
-                         ("www.python.org", "www.python.org", 80),
-                         ("[fe80::207:e9ff:fe9b]", "fe80::207:e9ff:fe9b", 80)):
-            http = httplib.HTTP(hp)
-            c = http._conn
-            if h != c.host:
-                self.fail("Host incorrectly parsed: %s != %s" % (h, c.host))
-            if p != c.port:
-                self.fail("Port incorrectly parsed: %s != %s" % (p, c.host))
-
-    def test_response_headers(self):
-        # test response with multiple message headers with the same field name.
-        text = ('HTTP/1.1 200 OK\r\n'
-                'Set-Cookie: Customer="WILE_E_COYOTE";'
-                ' Version="1"; Path="/acme"\r\n'
-                'Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1";'
-                ' Path="/acme"\r\n'
-                '\r\n'
-                'No body\r\n')
-        hdr = ('Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"'
-               ', '
-               'Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"')
-        s = FakeSocket(text)
-        r = httplib.HTTPResponse(s)
-        r.begin()
-        cookies = r.getheader("Set-Cookie")
-        if cookies != hdr:
-            self.fail("multiple headers not combined properly")
-
-    def test_read_head(self):
-        # Test that the library doesn't attempt to read any data
-        # from a HEAD request.  (Tickles SF bug #622042.)
-        sock = FakeSocket(
-            'HTTP/1.1 200 OK\r\n'
-            'Content-Length: 14432\r\n'
-            '\r\n',
-            NoEOFStringIO)
-        resp = httplib.HTTPResponse(sock, method="HEAD")
-        resp.begin()
-        if resp.read() != "":
-            self.fail("Did not expect response from HEAD request")
-
-    def test_send_file(self):
-        expected = 'GET /foo HTTP/1.1\r\nHost: example.com\r\n' \
-                   'Accept-Encoding: identity\r\nContent-Length:'
-
-        body = open(__file__, 'rb')
-        conn = httplib.HTTPConnection('example.com')
-        sock = FakeSocket(body)
-        conn.sock = sock
-        conn.request('GET', '/foo', body)
-        self.assertTrue(sock.data.startswith(expected))
-
-    def test_send(self):
-        expected = 'this is a test this is only a test'
-        conn = httplib.HTTPConnection('example.com')
-        sock = FakeSocket(None)
-        conn.sock = sock
-        conn.send(expected)
-        self.assertEqual(expected, sock.data)
-        sock.data = ''
-        conn.send(array.array('c', expected))
-        self.assertEqual(expected, sock.data)
-        sock.data = ''
-        conn.send(StringIO.StringIO(expected))
-        self.assertEqual(expected, sock.data)
-
-    def test_chunked(self):
-        chunked_start = (
-            'HTTP/1.1 200 OK\r\n'
-            'Transfer-Encoding: chunked\r\n\r\n'
-            'a\r\n'
-            'hello worl\r\n'
-            '1\r\n'
-            'd\r\n'
-        )
-        sock = FakeSocket(chunked_start + '0\r\n')
-        resp = httplib.HTTPResponse(sock, method="GET")
-        resp.begin()
-        self.assertEqual(resp.read(), 'hello world')
-        resp.close()
-
-        for x in ('', 'foo\r\n'):
-            sock = FakeSocket(chunked_start + x)
-            resp = httplib.HTTPResponse(sock, method="GET")
-            resp.begin()
-            try:
-                resp.read()
-            except httplib.IncompleteRead, i:
-                self.assertEqual(i.partial, 'hello world')
-                self.assertEqual(repr(i),'IncompleteRead(11 bytes read)')
-                self.assertEqual(str(i),'IncompleteRead(11 bytes read)')
-            else:
-                self.fail('IncompleteRead expected')
-            finally:
-                resp.close()
-
-    def test_chunked_head(self):
-        chunked_start = (
-            'HTTP/1.1 200 OK\r\n'
-            'Transfer-Encoding: chunked\r\n\r\n'
-            'a\r\n'
-            'hello world\r\n'
-            '1\r\n'
-            'd\r\n'
-        )
-        sock = FakeSocket(chunked_start + '0\r\n')
-        resp = httplib.HTTPResponse(sock, method="HEAD")
-        resp.begin()
-        self.assertEqual(resp.read(), '')
-        self.assertEqual(resp.status, 200)
-        self.assertEqual(resp.reason, 'OK')
-        self.assertTrue(resp.isclosed())
-
-    def test_negative_content_length(self):
-        sock = FakeSocket('HTTP/1.1 200 OK\r\n'
-                          'Content-Length: -1\r\n\r\nHello\r\n')
-        resp = httplib.HTTPResponse(sock, method="GET")
-        resp.begin()
-        self.assertEqual(resp.read(), 'Hello\r\n')
-        resp.close()
-
-    def test_incomplete_read(self):
-        sock = FakeSocket('HTTP/1.1 200 OK\r\nContent-Length: 10\r\n\r\nHello\r\n')
-        resp = httplib.HTTPResponse(sock, method="GET")
-        resp.begin()
-        try:
-            resp.read()
-        except httplib.IncompleteRead as i:
-            self.assertEqual(i.partial, 'Hello\r\n')
-            self.assertEqual(repr(i),
-                             "IncompleteRead(7 bytes read, 3 more expected)")
-            self.assertEqual(str(i),
-                             "IncompleteRead(7 bytes read, 3 more expected)")
-        else:
-            self.fail('IncompleteRead expected')
-        finally:
-            resp.close()
-
-    def test_epipe(self):
-        sock = EPipeSocket(
-            "HTTP/1.0 401 Authorization Required\r\n"
-            "Content-type: text/html\r\n"
-            "WWW-Authenticate: Basic realm=\"example\"\r\n",
-            b"Content-Length")
-        conn = httplib.HTTPConnection("example.com")
-        conn.sock = sock
-        self.assertRaises(socket.error,
-                          lambda: conn.request("PUT", "/url", "body"))
-        resp = conn.getresponse()
-        self.assertEqual(401, resp.status)
-        self.assertEqual("Basic realm=\"example\"",
-                         resp.getheader("www-authenticate"))
-
-    def test_filenoattr(self):
-        # Just test the fileno attribute in the HTTPResponse Object.
-        body = "HTTP/1.1 200 Ok\r\n\r\nText"
-        sock = FakeSocket(body)
-        resp = httplib.HTTPResponse(sock)
-        self.assertTrue(hasattr(resp,'fileno'),
-                'HTTPResponse should expose a fileno attribute')
-
-    # Test lines overflowing the max line size (_MAXLINE in http.client)
-
-    def test_overflowing_status_line(self):
-        self.skipTest("disabled for HTTP 0.9 support")
-        body = "HTTP/1.1 200 Ok" + "k" * 65536 + "\r\n"
-        resp = httplib.HTTPResponse(FakeSocket(body))
-        self.assertRaises((httplib.LineTooLong, httplib.BadStatusLine), resp.begin)
-
-    def test_overflowing_header_line(self):
-        body = (
-            'HTTP/1.1 200 OK\r\n'
-            'X-Foo: bar' + 'r' * 65536 + '\r\n\r\n'
-        )
-        resp = httplib.HTTPResponse(FakeSocket(body))
-        self.assertRaises(httplib.LineTooLong, resp.begin)
-
-    def test_overflowing_chunked_line(self):
-        body = (
-            'HTTP/1.1 200 OK\r\n'
-            'Transfer-Encoding: chunked\r\n\r\n'
-            + '0' * 65536 + 'a\r\n'
-            'hello world\r\n'
-            '0\r\n'
-        )
-        resp = httplib.HTTPResponse(FakeSocket(body))
-        resp.begin()
-        self.assertRaises(httplib.LineTooLong, resp.read)
-
-
-class OfflineTest(TestCase):
-    def test_responses(self):
-        self.assertEqual(httplib.responses[httplib.NOT_FOUND], "Not Found")
-
-
-class SourceAddressTest(TestCase):
-    def setUp(self):
-        self.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.port = test_support.bind_port(self.serv)
-        self.source_port = test_support.find_unused_port()
-        self.serv.listen(5)
-        self.conn = None
-
-    def tearDown(self):
-        if self.conn:
-            self.conn.close()
-            self.conn = None
-        self.serv.close()
-        self.serv = None
-
-    def testHTTPConnectionSourceAddress(self):
-        self.conn = httplib.HTTPConnection(HOST, self.port,
-                source_address=('', self.source_port))
-        self.conn.connect()
-        self.assertEqual(self.conn.sock.getsockname()[1], self.source_port)
-
-    @unittest.skipIf(not hasattr(httplib, 'HTTPSConnection'),
-                     'httplib.HTTPSConnection not defined')
-    def testHTTPSConnectionSourceAddress(self):
-        self.conn = httplib.HTTPSConnection(HOST, self.port,
-                source_address=('', self.source_port))
-        # We don't test anything here other the constructor not barfing as
-        # this code doesn't deal with setting up an active running SSL server
-        # for an ssl_wrapped connect() to actually return from.
-
-
-class TimeoutTest(TestCase):
-    PORT = None
-
-    def setUp(self):
-        self.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        TimeoutTest.PORT = test_support.bind_port(self.serv)
-        self.serv.listen(5)
-
-    def tearDown(self):
-        self.serv.close()
-        self.serv = None
-
-    def testTimeoutAttribute(self):
-        '''This will prove that the timeout gets through
-        HTTPConnection and into the socket.
-        '''
-        # default -- use global socket timeout
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        socket.setdefaulttimeout(30)
-        try:
-            httpConn = httplib.HTTPConnection(HOST, TimeoutTest.PORT)
-            httpConn.connect()
-        finally:
-            socket.setdefaulttimeout(None)
-        self.assertEqual(httpConn.sock.gettimeout(), 30)
-        httpConn.close()
-
-        # no timeout -- do not use global socket default
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        socket.setdefaulttimeout(30)
-        try:
-            httpConn = httplib.HTTPConnection(HOST, TimeoutTest.PORT,
-                                              timeout=None)
-            httpConn.connect()
-        finally:
-            socket.setdefaulttimeout(None)
-        self.assertEqual(httpConn.sock.gettimeout(), None)
-        httpConn.close()
-
-        # a value
-        httpConn = httplib.HTTPConnection(HOST, TimeoutTest.PORT, timeout=30)
-        httpConn.connect()
-        self.assertEqual(httpConn.sock.gettimeout(), 30)
-        httpConn.close()
-
-
-class HTTPSTimeoutTest(TestCase):
-# XXX Here should be tests for HTTPS, there isn't any right now!
-
-    def test_attributes(self):
-        # simple test to check it's storing it
-        if hasattr(httplib, 'HTTPSConnection'):
-            h = httplib.HTTPSConnection(HOST, TimeoutTest.PORT, timeout=30)
-            self.assertEqual(h.timeout, 30)
-
-def test_main(verbose=None):
-    test_support.run_unittest(HeaderTests, OfflineTest, BasicTest, TimeoutTest,
-                              HTTPSTimeoutTest, SourceAddressTest)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_httpservers.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_httpservers.py
deleted file mode 100644
index 0011a85..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_httpservers.py
+++ /dev/null
@@ -1,529 +0,0 @@
-"""Unittests for the various HTTPServer modules.
-
-Written by Cody A.W. Somerville <cody-somerville@ubuntu.com>,
-Josip Dzolonga, and Michael Otteneder for the 2007/08 GHOP contest.
-"""
-
-from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
-from SimpleHTTPServer import SimpleHTTPRequestHandler
-from CGIHTTPServer import CGIHTTPRequestHandler
-import CGIHTTPServer
-
-import os
-import sys
-import re
-import base64
-import shutil
-import urllib
-import httplib
-import tempfile
-
-import unittest
-
-from StringIO import StringIO
-
-from test import test_support
-threading = test_support.import_module('threading')
-
-
-class NoLogRequestHandler:
-    def log_message(self, *args):
-        # don't write log messages to stderr
-        pass
-
-class SocketlessRequestHandler(SimpleHTTPRequestHandler):
-    def __init__(self):
-        self.get_called = False
-        self.protocol_version = "HTTP/1.1"
-
-    def do_GET(self):
-        self.get_called = True
-        self.send_response(200)
-        self.send_header('Content-Type', 'text/html')
-        self.end_headers()
-        self.wfile.write(b'<html><body>Data</body></html>\r\n')
-
-    def log_message(self, format, *args):
-        pass
-
-
-class TestServerThread(threading.Thread):
-    def __init__(self, test_object, request_handler):
-        threading.Thread.__init__(self)
-        self.request_handler = request_handler
-        self.test_object = test_object
-
-    def run(self):
-        self.server = HTTPServer(('', 0), self.request_handler)
-        self.test_object.PORT = self.server.socket.getsockname()[1]
-        self.test_object.server_started.set()
-        self.test_object = None
-        try:
-            self.server.serve_forever(0.05)
-        finally:
-            self.server.server_close()
-
-    def stop(self):
-        self.server.shutdown()
-
-
-class BaseTestCase(unittest.TestCase):
-    def setUp(self):
-        self._threads = test_support.threading_setup()
-        os.environ = test_support.EnvironmentVarGuard()
-        self.server_started = threading.Event()
-        self.thread = TestServerThread(self, self.request_handler)
-        self.thread.start()
-        self.server_started.wait()
-
-    def tearDown(self):
-        self.thread.stop()
-        os.environ.__exit__()
-        test_support.threading_cleanup(*self._threads)
-
-    def request(self, uri, method='GET', body=None, headers={}):
-        self.connection = httplib.HTTPConnection('localhost', self.PORT)
-        self.connection.request(method, uri, body, headers)
-        return self.connection.getresponse()
-
-class BaseHTTPRequestHandlerTestCase(unittest.TestCase):
-    """Test the functionality of the BaseHTTPServer focussing on
-    BaseHTTPRequestHandler.
-    """
-
-    HTTPResponseMatch = re.compile('HTTP/1.[0-9]+ 200 OK')
-
-    def setUp (self):
-        self.handler = SocketlessRequestHandler()
-
-    def send_typical_request(self, message):
-        input = StringIO(message)
-        output = StringIO()
-        self.handler.rfile = input
-        self.handler.wfile = output
-        self.handler.handle_one_request()
-        output.seek(0)
-        return output.readlines()
-
-    def verify_get_called(self):
-        self.assertTrue(self.handler.get_called)
-
-    def verify_expected_headers(self, headers):
-        for fieldName in 'Server: ', 'Date: ', 'Content-Type: ':
-            self.assertEqual(sum(h.startswith(fieldName) for h in headers), 1)
-
-    def verify_http_server_response(self, response):
-        match = self.HTTPResponseMatch.search(response)
-        self.assertTrue(match is not None)
-
-    def test_http_1_1(self):
-        result = self.send_typical_request('GET / HTTP/1.1\r\n\r\n')
-        self.verify_http_server_response(result[0])
-        self.verify_expected_headers(result[1:-1])
-        self.verify_get_called()
-        self.assertEqual(result[-1], '<html><body>Data</body></html>\r\n')
-
-    def test_http_1_0(self):
-        result = self.send_typical_request('GET / HTTP/1.0\r\n\r\n')
-        self.verify_http_server_response(result[0])
-        self.verify_expected_headers(result[1:-1])
-        self.verify_get_called()
-        self.assertEqual(result[-1], '<html><body>Data</body></html>\r\n')
-
-    def test_http_0_9(self):
-        result = self.send_typical_request('GET / HTTP/0.9\r\n\r\n')
-        self.assertEqual(len(result), 1)
-        self.assertEqual(result[0], '<html><body>Data</body></html>\r\n')
-        self.verify_get_called()
-
-    def test_with_continue_1_0(self):
-        result = self.send_typical_request('GET / HTTP/1.0\r\nExpect: 100-continue\r\n\r\n')
-        self.verify_http_server_response(result[0])
-        self.verify_expected_headers(result[1:-1])
-        self.verify_get_called()
-        self.assertEqual(result[-1], '<html><body>Data</body></html>\r\n')
-
-    def test_request_length(self):
-        # Issue #10714: huge request lines are discarded, to avoid Denial
-        # of Service attacks.
-        result = self.send_typical_request(b'GET ' + b'x' * 65537)
-        self.assertEqual(result[0], b'HTTP/1.1 414 Request-URI Too Long\r\n')
-        self.assertFalse(self.handler.get_called)
-
-
-class BaseHTTPServerTestCase(BaseTestCase):
-    class request_handler(NoLogRequestHandler, BaseHTTPRequestHandler):
-        protocol_version = 'HTTP/1.1'
-        default_request_version = 'HTTP/1.1'
-
-        def do_TEST(self):
-            self.send_response(204)
-            self.send_header('Content-Type', 'text/html')
-            self.send_header('Connection', 'close')
-            self.end_headers()
-
-        def do_KEEP(self):
-            self.send_response(204)
-            self.send_header('Content-Type', 'text/html')
-            self.send_header('Connection', 'keep-alive')
-            self.end_headers()
-
-        def do_KEYERROR(self):
-            self.send_error(999)
-
-        def do_CUSTOM(self):
-            self.send_response(999)
-            self.send_header('Content-Type', 'text/html')
-            self.send_header('Connection', 'close')
-            self.end_headers()
-
-    def setUp(self):
-        BaseTestCase.setUp(self)
-        self.con = httplib.HTTPConnection('localhost', self.PORT)
-        self.con.connect()
-
-    def test_command(self):
-        self.con.request('GET', '/')
-        res = self.con.getresponse()
-        self.assertEqual(res.status, 501)
-
-    def test_request_line_trimming(self):
-        self.con._http_vsn_str = 'HTTP/1.1\n'
-        self.con.putrequest('GET', '/')
-        self.con.endheaders()
-        res = self.con.getresponse()
-        self.assertEqual(res.status, 501)
-
-    def test_version_bogus(self):
-        self.con._http_vsn_str = 'FUBAR'
-        self.con.putrequest('GET', '/')
-        self.con.endheaders()
-        res = self.con.getresponse()
-        self.assertEqual(res.status, 400)
-
-    def test_version_digits(self):
-        self.con._http_vsn_str = 'HTTP/9.9.9'
-        self.con.putrequest('GET', '/')
-        self.con.endheaders()
-        res = self.con.getresponse()
-        self.assertEqual(res.status, 400)
-
-    def test_version_none_get(self):
-        self.con._http_vsn_str = ''
-        self.con.putrequest('GET', '/')
-        self.con.endheaders()
-        res = self.con.getresponse()
-        self.assertEqual(res.status, 501)
-
-    def test_version_none(self):
-        self.con._http_vsn_str = ''
-        self.con.putrequest('PUT', '/')
-        self.con.endheaders()
-        res = self.con.getresponse()
-        self.assertEqual(res.status, 400)
-
-    def test_version_invalid(self):
-        self.con._http_vsn = 99
-        self.con._http_vsn_str = 'HTTP/9.9'
-        self.con.putrequest('GET', '/')
-        self.con.endheaders()
-        res = self.con.getresponse()
-        self.assertEqual(res.status, 505)
-
-    def test_send_blank(self):
-        self.con._http_vsn_str = ''
-        self.con.putrequest('', '')
-        self.con.endheaders()
-        res = self.con.getresponse()
-        self.assertEqual(res.status, 400)
-
-    def test_header_close(self):
-        self.con.putrequest('GET', '/')
-        self.con.putheader('Connection', 'close')
-        self.con.endheaders()
-        res = self.con.getresponse()
-        self.assertEqual(res.status, 501)
-
-    def test_head_keep_alive(self):
-        self.con._http_vsn_str = 'HTTP/1.1'
-        self.con.putrequest('GET', '/')
-        self.con.putheader('Connection', 'keep-alive')
-        self.con.endheaders()
-        res = self.con.getresponse()
-        self.assertEqual(res.status, 501)
-
-    def test_handler(self):
-        self.con.request('TEST', '/')
-        res = self.con.getresponse()
-        self.assertEqual(res.status, 204)
-
-    def test_return_header_keep_alive(self):
-        self.con.request('KEEP', '/')
-        res = self.con.getresponse()
-        self.assertEqual(res.getheader('Connection'), 'keep-alive')
-        self.con.request('TEST', '/')
-        self.addCleanup(self.con.close)
-
-    def test_internal_key_error(self):
-        self.con.request('KEYERROR', '/')
-        res = self.con.getresponse()
-        self.assertEqual(res.status, 999)
-
-    def test_return_custom_status(self):
-        self.con.request('CUSTOM', '/')
-        res = self.con.getresponse()
-        self.assertEqual(res.status, 999)
-
-
-class SimpleHTTPServerTestCase(BaseTestCase):
-    class request_handler(NoLogRequestHandler, SimpleHTTPRequestHandler):
-        pass
-
-    def setUp(self):
-        BaseTestCase.setUp(self)
-        self.cwd = os.getcwd()
-        basetempdir = tempfile.gettempdir()
-        os.chdir(basetempdir)
-        self.data = 'We are the knights who say Ni!'
-        self.tempdir = tempfile.mkdtemp(dir=basetempdir)
-        self.tempdir_name = os.path.basename(self.tempdir)
-        temp = open(os.path.join(self.tempdir, 'test'), 'wb')
-        temp.write(self.data)
-        temp.close()
-
-    def tearDown(self):
-        try:
-            os.chdir(self.cwd)
-            try:
-                shutil.rmtree(self.tempdir)
-            except:
-                pass
-        finally:
-            BaseTestCase.tearDown(self)
-
-    def check_status_and_reason(self, response, status, data=None):
-        body = response.read()
-        self.assertTrue(response)
-        self.assertEqual(response.status, status)
-        self.assertIsNotNone(response.reason)
-        if data:
-            self.assertEqual(data, body)
-
-    def test_get(self):
-        #constructs the path relative to the root directory of the HTTPServer
-        response = self.request(self.tempdir_name + '/test')
-        self.check_status_and_reason(response, 200, data=self.data)
-        response = self.request(self.tempdir_name + '/')
-        self.check_status_and_reason(response, 200)
-        response = self.request(self.tempdir_name)
-        self.check_status_and_reason(response, 301)
-        response = self.request('/ThisDoesNotExist')
-        self.check_status_and_reason(response, 404)
-        response = self.request('/' + 'ThisDoesNotExist' + '/')
-        self.check_status_and_reason(response, 404)
-        f = open(os.path.join(self.tempdir_name, 'index.html'), 'w')
-        response = self.request('/' + self.tempdir_name + '/')
-        self.check_status_and_reason(response, 200)
-        if os.name == 'posix':
-            # chmod won't work as expected on Windows platforms
-            os.chmod(self.tempdir, 0)
-            response = self.request(self.tempdir_name + '/')
-            self.check_status_and_reason(response, 404)
-            os.chmod(self.tempdir, 0755)
-
-    def test_head(self):
-        response = self.request(
-            self.tempdir_name + '/test', method='HEAD')
-        self.check_status_and_reason(response, 200)
-        self.assertEqual(response.getheader('content-length'),
-                         str(len(self.data)))
-        self.assertEqual(response.getheader('content-type'),
-                         'application/octet-stream')
-
-    def test_invalid_requests(self):
-        response = self.request('/', method='FOO')
-        self.check_status_and_reason(response, 501)
-        # requests must be case sensitive,so this should fail too
-        response = self.request('/', method='get')
-        self.check_status_and_reason(response, 501)
-        response = self.request('/', method='GETs')
-        self.check_status_and_reason(response, 501)
-
-
-cgi_file1 = """\
-#!%s
-
-print "Content-type: text/html"
-print
-print "Hello World"
-"""
-
-cgi_file2 = """\
-#!%s
-import cgi
-
-print "Content-type: text/html"
-print
-
-form = cgi.FieldStorage()
-print "%%s, %%s, %%s" %% (form.getfirst("spam"), form.getfirst("eggs"),
-                          form.getfirst("bacon"))
-"""
-
-class CGIHTTPServerTestCase(BaseTestCase):
-    class request_handler(NoLogRequestHandler, CGIHTTPRequestHandler):
-        pass
-
-    def setUp(self):
-        BaseTestCase.setUp(self)
-        self.parent_dir = tempfile.mkdtemp()
-        self.cgi_dir = os.path.join(self.parent_dir, 'cgi-bin')
-        os.mkdir(self.cgi_dir)
-
-        # The shebang line should be pure ASCII: use symlink if possible.
-        # See issue #7668.
-        if hasattr(os, 'symlink'):
-            self.pythonexe = os.path.join(self.parent_dir, 'python')
-            os.symlink(sys.executable, self.pythonexe)
-        else:
-            self.pythonexe = sys.executable
-
-        self.file1_path = os.path.join(self.cgi_dir, 'file1.py')
-        with open(self.file1_path, 'w') as file1:
-            file1.write(cgi_file1 % self.pythonexe)
-        os.chmod(self.file1_path, 0777)
-
-        self.file2_path = os.path.join(self.cgi_dir, 'file2.py')
-        with open(self.file2_path, 'w') as file2:
-            file2.write(cgi_file2 % self.pythonexe)
-        os.chmod(self.file2_path, 0777)
-
-        self.cwd = os.getcwd()
-        os.chdir(self.parent_dir)
-
-    def tearDown(self):
-        try:
-            os.chdir(self.cwd)
-            if self.pythonexe != sys.executable:
-                os.remove(self.pythonexe)
-            os.remove(self.file1_path)
-            os.remove(self.file2_path)
-            os.rmdir(self.cgi_dir)
-            os.rmdir(self.parent_dir)
-        finally:
-            BaseTestCase.tearDown(self)
-
-    def test_url_collapse_path_split(self):
-        test_vectors = {
-            '': ('/', ''),
-            '..': IndexError,
-            '/.//..': IndexError,
-            '/': ('/', ''),
-            '//': ('/', ''),
-            '/\\': ('/', '\\'),
-            '/.//': ('/', ''),
-            'cgi-bin/file1.py': ('/cgi-bin', 'file1.py'),
-            '/cgi-bin/file1.py': ('/cgi-bin', 'file1.py'),
-            'a': ('/', 'a'),
-            '/a': ('/', 'a'),
-            '//a': ('/', 'a'),
-            './a': ('/', 'a'),
-            './C:/': ('/C:', ''),
-            '/a/b': ('/a', 'b'),
-            '/a/b/': ('/a/b', ''),
-            '/a/b/c/..': ('/a/b', ''),
-            '/a/b/c/../d': ('/a/b', 'd'),
-            '/a/b/c/../d/e/../f': ('/a/b/d', 'f'),
-            '/a/b/c/../d/e/../../f': ('/a/b', 'f'),
-            '/a/b/c/../d/e/.././././..//f': ('/a/b', 'f'),
-            '../a/b/c/../d/e/.././././..//f': IndexError,
-            '/a/b/c/../d/e/../../../f': ('/a', 'f'),
-            '/a/b/c/../d/e/../../../../f': ('/', 'f'),
-            '/a/b/c/../d/e/../../../../../f': IndexError,
-            '/a/b/c/../d/e/../../../../f/..': ('/', ''),
-        }
-        for path, expected in test_vectors.iteritems():
-            if isinstance(expected, type) and issubclass(expected, Exception):
-                self.assertRaises(expected,
-                                  CGIHTTPServer._url_collapse_path_split, path)
-            else:
-                actual = CGIHTTPServer._url_collapse_path_split(path)
-                self.assertEqual(expected, actual,
-                                 msg='path = %r\nGot:    %r\nWanted: %r' %
-                                 (path, actual, expected))
-
-    def test_headers_and_content(self):
-        res = self.request('/cgi-bin/file1.py')
-        self.assertEqual(('Hello World\n', 'text/html', 200),
-            (res.read(), res.getheader('Content-type'), res.status))
-
-    def test_post(self):
-        params = urllib.urlencode({'spam' : 1, 'eggs' : 'python', 'bacon' : 123456})
-        headers = {'Content-type' : 'application/x-www-form-urlencoded'}
-        res = self.request('/cgi-bin/file2.py', 'POST', params, headers)
-
-        self.assertEqual(res.read(), '1, python, 123456\n')
-
-    def test_invaliduri(self):
-        res = self.request('/cgi-bin/invalid')
-        res.read()
-        self.assertEqual(res.status, 404)
-
-    def test_authorization(self):
-        headers = {'Authorization' : 'Basic %s' %
-                   base64.b64encode('username:pass')}
-        res = self.request('/cgi-bin/file1.py', 'GET', headers=headers)
-        self.assertEqual(('Hello World\n', 'text/html', 200),
-                (res.read(), res.getheader('Content-type'), res.status))
-
-    def test_no_leading_slash(self):
-        # http://bugs.python.org/issue2254
-        res = self.request('cgi-bin/file1.py')
-        self.assertEqual(('Hello World\n', 'text/html', 200),
-             (res.read(), res.getheader('Content-type'), res.status))
-
-    def test_os_environ_is_not_altered(self):
-        signature = "Test CGI Server"
-        os.environ['SERVER_SOFTWARE'] = signature
-        res = self.request('/cgi-bin/file1.py')
-        self.assertEqual((b'Hello World\n', 'text/html', 200),
-                (res.read(), res.getheader('Content-type'), res.status))
-        self.assertEqual(os.environ['SERVER_SOFTWARE'], signature)
-
-
-class SimpleHTTPRequestHandlerTestCase(unittest.TestCase):
-    """ Test url parsing """
-    def setUp(self):
-        self.translated = os.getcwd()
-        self.translated = os.path.join(self.translated, 'filename')
-        self.handler = SocketlessRequestHandler()
-
-    def test_query_arguments(self):
-        path = self.handler.translate_path('/filename')
-        self.assertEqual(path, self.translated)
-        path = self.handler.translate_path('/filename?foo=bar')
-        self.assertEqual(path, self.translated)
-        path = self.handler.translate_path('/filename?a=b&spam=eggs#zot')
-        self.assertEqual(path, self.translated)
-
-    def test_start_with_double_slash(self):
-        path = self.handler.translate_path('//filename')
-        self.assertEqual(path, self.translated)
-        path = self.handler.translate_path('//filename?foo=bar')
-        self.assertEqual(path, self.translated)
-
-
-def test_main(verbose=None):
-    try:
-        cwd = os.getcwd()
-        test_support.run_unittest(BaseHTTPRequestHandlerTestCase,
-                                  SimpleHTTPRequestHandlerTestCase,
-                                  BaseHTTPServerTestCase,
-                                  SimpleHTTPServerTestCase,
-                                  CGIHTTPServerTestCase
-                                 )
-    finally:
-        os.chdir(cwd)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imageop.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imageop.py
deleted file mode 100644
index 666a93c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imageop.py
+++ /dev/null
@@ -1,211 +0,0 @@
-#! /usr/bin/env python
-
-"""Test script for the imageop module.  This has the side
-   effect of partially testing the imgfile module as well.
-   Roger E. Masse
-"""
-
-from test.test_support import verbose, unlink, import_module, run_unittest
-
-imageop = import_module('imageop', deprecated=True)
-import uu, os, unittest
-
-
-SIZES = (1, 2, 3, 4)
-_VALUES = (1, 2, 2**10, 2**15-1, 2**15, 2**15+1, 2**31-2, 2**31-1)
-VALUES = tuple( -x for x in reversed(_VALUES) ) + (0,) + _VALUES
-AAAAA = "A" * 1024
-MAX_LEN = 2**20
-
-
-class InputValidationTests(unittest.TestCase):
-
-    def _check(self, name, size=None, *extra):
-        func = getattr(imageop, name)
-        for height in VALUES:
-            for width in VALUES:
-                strlen = abs(width * height)
-                if size:
-                    strlen *= size
-                if strlen < MAX_LEN:
-                    data = "A" * strlen
-                else:
-                    data = AAAAA
-                if size:
-                    arguments = (data, size, width, height) + extra
-                else:
-                    arguments = (data, width, height) + extra
-                try:
-                    func(*arguments)
-                except (ValueError, imageop.error):
-                    pass
-
-    def check_size(self, name, *extra):
-        for size in SIZES:
-            self._check(name, size, *extra)
-
-    def check(self, name, *extra):
-        self._check(name, None, *extra)
-
-    def test_input_validation(self):
-        self.check_size("crop", 0, 0, 0, 0)
-        self.check_size("scale", 1, 0)
-        self.check_size("scale", -1, -1)
-        self.check_size("tovideo")
-        self.check("grey2mono", 128)
-        self.check("grey2grey4")
-        self.check("grey2grey2")
-        self.check("dither2mono")
-        self.check("dither2grey2")
-        self.check("mono2grey", 0, 0)
-        self.check("grey22grey")
-        self.check("rgb2rgb8") # nlen*4 == len
-        self.check("rgb82rgb")
-        self.check("rgb2grey")
-        self.check("grey2rgb")
-
-
-def test_main():
-
-    run_unittest(InputValidationTests)
-
-    try:
-        import imgfile
-    except ImportError:
-        return
-
-    # Create binary test files
-    uu.decode(get_qualified_path('testrgb'+os.extsep+'uue'), 'test'+os.extsep+'rgb')
-
-    image, width, height = getimage('test'+os.extsep+'rgb')
-
-    # Return the selected part of image, which should by width by height
-    # in size and consist of pixels of psize bytes.
-    if verbose:
-        print 'crop'
-    newimage = imageop.crop (image, 4, width, height, 0, 0, 1, 1)
-
-    # Return image scaled to size newwidth by newheight. No interpolation
-    # is done, scaling is done by simple-minded pixel duplication or removal.
-    # Therefore, computer-generated images or dithered images will
-    # not look nice after scaling.
-    if verbose:
-        print 'scale'
-    scaleimage = imageop.scale(image, 4, width, height, 1, 1)
-
-    # Run a vertical low-pass filter over an image. It does so by computing
-    # each destination pixel as the average of two vertically-aligned source
-    # pixels. The main use of this routine is to forestall excessive flicker
-    # if the image two vertically-aligned source pixels,  hence the name.
-    if verbose:
-        print 'tovideo'
-    videoimage = imageop.tovideo (image, 4, width, height)
-
-    # Convert an rgb image to an 8 bit rgb
-    if verbose:
-        print 'rgb2rgb8'
-    greyimage = imageop.rgb2rgb8(image, width, height)
-
-    # Convert an 8 bit rgb image to a 24 bit rgb image
-    if verbose:
-        print 'rgb82rgb'
-    image = imageop.rgb82rgb(greyimage, width, height)
-
-    # Convert an rgb image to an 8 bit greyscale image
-    if verbose:
-        print 'rgb2grey'
-    greyimage = imageop.rgb2grey(image, width, height)
-
-    # Convert an 8 bit greyscale image to a 24 bit rgb image
-    if verbose:
-        print 'grey2rgb'
-    image = imageop.grey2rgb(greyimage, width, height)
-
-    # Convert a 8-bit deep greyscale image to a 1-bit deep image by
-    # thresholding all the pixels. The resulting image is tightly packed
-    # and is probably only useful as an argument to mono2grey.
-    if verbose:
-        print 'grey2mono'
-    monoimage = imageop.grey2mono (greyimage, width, height, 0)
-
-    # monoimage, width, height = getimage('monotest.rgb')
-    # Convert a 1-bit monochrome image to an 8 bit greyscale or color image.
-    # All pixels that are zero-valued on input get value p0 on output and
-    # all one-value input pixels get value p1 on output. To convert a
-    # monochrome  black-and-white image to greyscale pass the values 0 and
-    # 255 respectively.
-    if verbose:
-        print 'mono2grey'
-    greyimage = imageop.mono2grey (monoimage, width, height, 0, 255)
-
-    # Convert an 8-bit greyscale image to a 1-bit monochrome image using a
-    # (simple-minded) dithering algorithm.
-    if verbose:
-        print 'dither2mono'
-    monoimage = imageop.dither2mono (greyimage, width, height)
-
-    # Convert an 8-bit greyscale image to a 4-bit greyscale image without
-    # dithering.
-    if verbose:
-        print 'grey2grey4'
-    grey4image = imageop.grey2grey4 (greyimage, width, height)
-
-    # Convert an 8-bit greyscale image to a 2-bit greyscale image without
-    # dithering.
-    if verbose:
-        print 'grey2grey2'
-    grey2image = imageop.grey2grey2 (greyimage, width, height)
-
-    # Convert an 8-bit greyscale image to a 2-bit greyscale image with
-    # dithering. As for dither2mono, the dithering algorithm is currently
-    # very simple.
-    if verbose:
-        print 'dither2grey2'
-    grey2image = imageop.dither2grey2 (greyimage, width, height)
-
-    # Convert a 4-bit greyscale image to an 8-bit greyscale image.
-    if verbose:
-        print 'grey42grey'
-    greyimage = imageop.grey42grey (grey4image, width, height)
-
-    # Convert a 2-bit greyscale image to an 8-bit greyscale image.
-    if verbose:
-        print 'grey22grey'
-    image = imageop.grey22grey (grey2image, width, height)
-
-    # Cleanup
-    unlink('test'+os.extsep+'rgb')
-
-def getimage(name):
-    """return a tuple consisting of
-       image (in 'imgfile' format) width and height
-    """
-    import imgfile
-    try:
-        sizes = imgfile.getsizes(name)
-    except imgfile.error:
-        name = get_qualified_path(name)
-        sizes = imgfile.getsizes(name)
-    if verbose:
-        print 'imgfile opening test image: %s, sizes: %s' % (name, str(sizes))
-
-    image = imgfile.read(name)
-    return (image, sizes[0], sizes[1])
-
-def get_qualified_path(name):
-    """ return a more qualified path to name"""
-    import sys
-    import os
-    path = sys.path
-    try:
-        path = [os.path.dirname(__file__)] + path
-    except NameError:
-        pass
-    for dir in path:
-        fullname = os.path.join(dir, name)
-        if os.path.exists(fullname):
-            return fullname
-    return name
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imaplib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imaplib.py
deleted file mode 100644
index a1635fe..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imaplib.py
+++ /dev/null
@@ -1,240 +0,0 @@
-from test import test_support as support
-# If we end up with a significant number of tests that don't require
-# threading, this test module should be split.  Right now we skip
-# them all if we don't have threading.
-threading = support.import_module('threading')
-
-from contextlib import contextmanager
-import imaplib
-import os.path
-import SocketServer
-import time
-
-from test_support import reap_threads, verbose, transient_internet
-import unittest
-
-try:
-    import ssl
-except ImportError:
-    ssl = None
-
-CERTFILE = None
-
-
-class TestImaplib(unittest.TestCase):
-
-    def test_that_Time2Internaldate_returns_a_result(self):
-        # We can check only that it successfully produces a result,
-        # not the correctness of the result itself, since the result
-        # depends on the timezone the machine is in.
-        timevalues = [2000000000, 2000000000.0, time.localtime(2000000000),
-                      '"18-May-2033 05:33:20 +0200"']
-
-        for t in timevalues:
-            imaplib.Time2Internaldate(t)
-
-
-if ssl:
-
-    class SecureTCPServer(SocketServer.TCPServer):
-
-        def get_request(self):
-            newsocket, fromaddr = self.socket.accept()
-            connstream = ssl.wrap_socket(newsocket,
-                                         server_side=True,
-                                         certfile=CERTFILE)
-            return connstream, fromaddr
-
-    IMAP4_SSL = imaplib.IMAP4_SSL
-
-else:
-
-    class SecureTCPServer:
-        pass
-
-    IMAP4_SSL = None
-
-
-class SimpleIMAPHandler(SocketServer.StreamRequestHandler):
-
-    timeout = 1
-
-    def _send(self, message):
-        if verbose: print "SENT:", message.strip()
-        self.wfile.write(message)
-
-    def handle(self):
-        # Send a welcome message.
-        self._send('* OK IMAP4rev1\r\n')
-        while 1:
-            # Gather up input until we receive a line terminator or we timeout.
-            # Accumulate read(1) because it's simpler to handle the differences
-            # between naked sockets and SSL sockets.
-            line = ''
-            while 1:
-                try:
-                    part = self.rfile.read(1)
-                    if part == '':
-                        # Naked sockets return empty strings..
-                        return
-                    line += part
-                except IOError:
-                    # ..but SSLSockets throw exceptions.
-                    return
-                if line.endswith('\r\n'):
-                    break
-
-            if verbose: print 'GOT:', line.strip()
-            splitline = line.split()
-            tag = splitline[0]
-            cmd = splitline[1]
-            args = splitline[2:]
-
-            if hasattr(self, 'cmd_%s' % (cmd,)):
-                getattr(self, 'cmd_%s' % (cmd,))(tag, args)
-            else:
-                self._send('%s BAD %s unknown\r\n' % (tag, cmd))
-
-    def cmd_CAPABILITY(self, tag, args):
-        self._send('* CAPABILITY IMAP4rev1\r\n')
-        self._send('%s OK CAPABILITY completed\r\n' % (tag,))
-
-
-class BaseThreadedNetworkedTests(unittest.TestCase):
-
-    def make_server(self, addr, hdlr):
-
-        class MyServer(self.server_class):
-            def handle_error(self, request, client_address):
-                self.close_request(request)
-                self.server_close()
-                raise
-
-        if verbose: print "creating server"
-        server = MyServer(addr, hdlr)
-        self.assertEqual(server.server_address, server.socket.getsockname())
-
-        if verbose:
-            print "server created"
-            print "ADDR =", addr
-            print "CLASS =", self.server_class
-            print "HDLR =", server.RequestHandlerClass
-
-        t = threading.Thread(
-            name='%s serving' % self.server_class,
-            target=server.serve_forever,
-            # Short poll interval to make the test finish quickly.
-            # Time between requests is short enough that we won't wake
-            # up spuriously too many times.
-            kwargs={'poll_interval':0.01})
-        t.daemon = True  # In case this function raises.
-        t.start()
-        if verbose: print "server running"
-        return server, t
-
-    def reap_server(self, server, thread):
-        if verbose: print "waiting for server"
-        server.shutdown()
-        thread.join()
-        if verbose: print "done"
-
-    @contextmanager
-    def reaped_server(self, hdlr):
-        server, thread = self.make_server((support.HOST, 0), hdlr)
-        try:
-            yield server
-        finally:
-            self.reap_server(server, thread)
-
-    @reap_threads
-    def test_connect(self):
-        with self.reaped_server(SimpleIMAPHandler) as server:
-            client = self.imap_class(*server.server_address)
-            client.shutdown()
-
-    @reap_threads
-    def test_issue5949(self):
-
-        class EOFHandler(SocketServer.StreamRequestHandler):
-            def handle(self):
-                # EOF without sending a complete welcome message.
-                self.wfile.write('* OK')
-
-        with self.reaped_server(EOFHandler) as server:
-            self.assertRaises(imaplib.IMAP4.abort,
-                              self.imap_class, *server.server_address)
-
-
-class ThreadedNetworkedTests(BaseThreadedNetworkedTests):
-
-    server_class = SocketServer.TCPServer
-    imap_class = imaplib.IMAP4
-
-
-@unittest.skipUnless(ssl, "SSL not available")
-class ThreadedNetworkedTestsSSL(BaseThreadedNetworkedTests):
-
-    server_class = SecureTCPServer
-    imap_class = IMAP4_SSL
-
-
-class RemoteIMAPTest(unittest.TestCase):
-    host = 'cyrus.andrew.cmu.edu'
-    port = 143
-    username = 'anonymous'
-    password = 'pass'
-    imap_class = imaplib.IMAP4
-
-    def setUp(self):
-        with transient_internet(self.host):
-            self.server = self.imap_class(self.host, self.port)
-
-    def tearDown(self):
-        if self.server is not None:
-            self.server.logout()
-
-    def test_logincapa(self):
-        self.assertTrue('LOGINDISABLED' in self.server.capabilities)
-
-    def test_anonlogin(self):
-        self.assertTrue('AUTH=ANONYMOUS' in self.server.capabilities)
-        rs = self.server.login(self.username, self.password)
-        self.assertEqual(rs[0], 'OK')
-
-    def test_logout(self):
-        rs = self.server.logout()
-        self.server = None
-        self.assertEqual(rs[0], 'BYE')
-
-
-@unittest.skipUnless(ssl, "SSL not available")
-class RemoteIMAP_SSLTest(RemoteIMAPTest):
-    port = 993
-    imap_class = IMAP4_SSL
-
-    def test_logincapa(self):
-        self.assertFalse('LOGINDISABLED' in self.server.capabilities)
-        self.assertTrue('AUTH=PLAIN' in self.server.capabilities)
-
-
-def test_main():
-    tests = [TestImaplib]
-
-    if support.is_resource_enabled('network'):
-        if ssl:
-            global CERTFILE
-            CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir,
-                                    "keycert.pem")
-            if not os.path.exists(CERTFILE):
-                raise support.TestFailed("Can't read certificate files!")
-        tests.extend([
-            ThreadedNetworkedTests, ThreadedNetworkedTestsSSL,
-            RemoteIMAPTest, RemoteIMAP_SSLTest,
-        ])
-
-    support.run_unittest(*tests)
-
-
-if __name__ == "__main__":
-    support.use_resources = ['network']
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imgfile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imgfile.py
deleted file mode 100644
index d9a4dd0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imgfile.py
+++ /dev/null
@@ -1,119 +0,0 @@
-#! /usr/bin/env python
-
-"""Simple test script for imgfile.c
-   Roger E. Masse
-"""
-
-from test.test_support import verbose, unlink, findfile, import_module
-
-imgfile = import_module('imgfile', deprecated=True)
-import uu
-
-
-def testimage(name):
-    """Run through the imgfile's battery of possible methods
-       on the image passed in name.
-    """
-
-    import sys
-    import os
-
-    outputfile = '/tmp/deleteme'
-
-    # try opening the name directly
-    try:
-        # This function returns a tuple (x, y, z) where x and y are the size
-        # of the image in pixels and z is the number of bytes per pixel. Only
-        # 3 byte RGB pixels and 1 byte greyscale pixels are supported.
-        sizes = imgfile.getsizes(name)
-    except imgfile.error:
-        # get a more qualified path component of the script...
-        if __name__ == '__main__':
-            ourname = sys.argv[0]
-        else: # ...or the full path of the module
-            ourname = sys.modules[__name__].__file__
-
-        parts = ourname.split(os.sep)
-        parts[-1] = name
-        name = os.sep.join(parts)
-        sizes = imgfile.getsizes(name)
-    if verbose:
-        print 'Opening test image: %s, sizes: %s' % (name, str(sizes))
-    # This function reads and decodes the image on the specified file,
-    # and returns it as a python string. The string has either 1 byte
-    # greyscale pixels or 4 byte RGBA pixels. The bottom left pixel
-    # is the first in the string. This format is suitable to pass
-    # to gl.lrectwrite, for instance.
-    image = imgfile.read(name)
-
-    # This function writes the RGB or greyscale data in data to
-    # image file file. x and y give the size of the image, z is
-    # 1 for 1 byte greyscale images or 3 for RGB images (which
-    # are stored as 4 byte values of which only the lower three
-    # bytes are used). These are the formats returned by gl.lrectread.
-    if verbose:
-        print 'Writing output file'
-    imgfile.write (outputfile, image, sizes[0], sizes[1], sizes[2])
-
-
-    if verbose:
-        print 'Opening scaled test image: %s, sizes: %s' % (name, str(sizes))
-    # This function is identical to read but it returns an image that
-    # is scaled to the given x and y sizes. If the filter and blur
-    # parameters are omitted scaling is done by simply dropping
-    # or duplicating pixels, so the result will be less than perfect,
-    # especially for computer-generated images.  Alternatively,
-    # you can specify a filter to use to smoothen the image after
-    # scaling. The filter forms supported are 'impulse', 'box',
-    # 'triangle', 'quadratic' and 'gaussian'. If a filter is
-    # specified blur is an optional parameter specifying the
-    # blurriness of the filter. It defaults to 1.0.  readscaled
-    # makes no attempt to keep the aspect ratio correct, so that
-    # is the users' responsibility.
-    if verbose:
-        print 'Filtering with "impulse"'
-    simage = imgfile.readscaled (name, sizes[0]/2, sizes[1]/2, 'impulse', 2.0)
-
-    # This function sets a global flag which defines whether the
-    # scan lines of the image are read or written from bottom to
-    # top (flag is zero, compatible with SGI GL) or from top to
-    # bottom(flag is one, compatible with X). The default is zero.
-    if verbose:
-        print 'Switching to X compatibility'
-    imgfile.ttob (1)
-
-    if verbose:
-        print 'Filtering with "triangle"'
-    simage = imgfile.readscaled (name, sizes[0]/2, sizes[1]/2, 'triangle', 3.0)
-    if verbose:
-        print 'Switching back to SGI compatibility'
-    imgfile.ttob (0)
-
-    if verbose: print 'Filtering with "quadratic"'
-    simage = imgfile.readscaled (name, sizes[0]/2, sizes[1]/2, 'quadratic')
-    if verbose: print 'Filtering with "gaussian"'
-    simage = imgfile.readscaled (name, sizes[0]/2, sizes[1]/2, 'gaussian', 1.0)
-
-    if verbose:
-        print 'Writing output file'
-    imgfile.write (outputfile, simage, sizes[0]/2, sizes[1]/2, sizes[2])
-
-    os.unlink(outputfile)
-
-
-def test_main():
-
-    uu.decode(findfile('testrgb.uue'), 'test.rgb')
-    uu.decode(findfile('greyrgb.uue'), 'greytest.rgb')
-
-    # Test a 3 byte color image
-    testimage('test.rgb')
-
-    # Test a 1 byte greyscale image
-    testimage('greytest.rgb')
-
-    unlink('test.rgb')
-    unlink('greytest.rgb')
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imp.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imp.py
deleted file mode 100644
index 529860d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_imp.py
+++ /dev/null
@@ -1,81 +0,0 @@
-import imp
-import unittest
-from test import test_support
-
-
-class LockTests(unittest.TestCase):
-
-    """Very basic test of import lock functions."""
-
-    def verify_lock_state(self, expected):
-        self.assertEqual(imp.lock_held(), expected,
-                             "expected imp.lock_held() to be %r" % expected)
-    def testLock(self):
-        LOOPS = 50
-
-        # The import lock may already be held, e.g. if the test suite is run
-        # via "import test.autotest".
-        lock_held_at_start = imp.lock_held()
-        self.verify_lock_state(lock_held_at_start)
-
-        for i in range(LOOPS):
-            imp.acquire_lock()
-            self.verify_lock_state(True)
-
-        for i in range(LOOPS):
-            imp.release_lock()
-
-        # The original state should be restored now.
-        self.verify_lock_state(lock_held_at_start)
-
-        if not lock_held_at_start:
-            try:
-                imp.release_lock()
-            except RuntimeError:
-                pass
-            else:
-                self.fail("release_lock() without lock should raise "
-                            "RuntimeError")
-
-class ReloadTests(unittest.TestCase):
-
-    """Very basic tests to make sure that imp.reload() operates just like
-    reload()."""
-
-    def test_source(self):
-        # XXX (ncoghlan): It would be nice to use test_support.CleanImport
-        # here, but that breaks because the os module registers some
-        # handlers in copy_reg on import. Since CleanImport doesn't
-        # revert that registration, the module is left in a broken
-        # state after reversion. Reinitialising the module contents
-        # and just reverting os.environ to its previous state is an OK
-        # workaround
-        with test_support.EnvironmentVarGuard():
-            import os
-            imp.reload(os)
-
-    def test_extension(self):
-        with test_support.CleanImport('time'):
-            import time
-            imp.reload(time)
-
-    def test_builtin(self):
-        with test_support.CleanImport('marshal'):
-            import marshal
-            imp.reload(marshal)
-
-
-def test_main():
-    tests = [
-        ReloadTests,
-    ]
-    try:
-        import thread
-    except ImportError:
-        pass
-    else:
-        tests.append(LockTests)
-    test_support.run_unittest(*tests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_import.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_import.py
deleted file mode 100644
index de24a90..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_import.py
+++ /dev/null
@@ -1,460 +0,0 @@
-import imp
-import marshal
-import os
-import py_compile
-import random
-import stat
-import sys
-import unittest
-from test.test_support import (unlink, TESTFN, unload, run_unittest, rmtree,
-                               is_jython, check_warnings, EnvironmentVarGuard)
-import textwrap
-from test import script_helper
-
-def remove_files(name):
-    for f in (name + os.extsep + "py",
-              name + os.extsep + "pyc",
-              name + os.extsep + "pyo",
-              name + os.extsep + "pyw",
-              name + "$py.class"):
-        unlink(f)
-
-
-class ImportTests(unittest.TestCase):
-
-    def tearDown(self):
-        unload(TESTFN)
-    setUp = tearDown
-
-    def test_case_sensitivity(self):
-        # Brief digression to test that import is case-sensitive:  if we got
-        # this far, we know for sure that "random" exists.
-        try:
-            import RAnDoM
-        except ImportError:
-            pass
-        else:
-            self.fail("import of RAnDoM should have failed (case mismatch)")
-
-    def test_double_const(self):
-        # Another brief digression to test the accuracy of manifest float
-        # constants.
-        from test import double_const  # don't blink -- that *was* the test
-
-    def test_import(self):
-        def test_with_extension(ext):
-            # The extension is normally ".py", perhaps ".pyw".
-            source = TESTFN + ext
-            pyo = TESTFN + os.extsep + "pyo"
-            if is_jython:
-                pyc = TESTFN + "$py.class"
-            else:
-                pyc = TESTFN + os.extsep + "pyc"
-
-            with open(source, "w") as f:
-                print >> f, ("# This tests Python's ability to import a", ext,
-                             "file.")
-                a = random.randrange(1000)
-                b = random.randrange(1000)
-                print >> f, "a =", a
-                print >> f, "b =", b
-
-            try:
-                mod = __import__(TESTFN)
-            except ImportError, err:
-                self.fail("import from %s failed: %s" % (ext, err))
-            else:
-                self.assertEqual(mod.a, a,
-                    "module loaded (%s) but contents invalid" % mod)
-                self.assertEqual(mod.b, b,
-                    "module loaded (%s) but contents invalid" % mod)
-            finally:
-                unlink(source)
-
-            try:
-                imp.reload(mod)
-            except ImportError, err:
-                self.fail("import from .pyc/.pyo failed: %s" % err)
-            finally:
-                unlink(pyc)
-                unlink(pyo)
-                unload(TESTFN)
-
-        sys.path.insert(0, os.curdir)
-        try:
-            test_with_extension(os.extsep + "py")
-            if sys.platform.startswith("win"):
-                for ext in [".PY", ".Py", ".pY", ".pyw", ".PYW", ".pYw"]:
-                    test_with_extension(ext)
-        finally:
-            del sys.path[0]
-
-    @unittest.skipUnless(os.name == 'posix', "test meaningful only on posix systems")
-    def test_execute_bit_not_copied(self):
-        # Issue 6070: under posix .pyc files got their execute bit set if
-        # the .py file had the execute bit set, but they aren't executable.
-        oldmask = os.umask(022)
-        sys.path.insert(0, os.curdir)
-        try:
-            fname = TESTFN + os.extsep + "py"
-            f = open(fname, 'w').close()
-            os.chmod(fname, (stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH |
-                             stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH))
-            __import__(TESTFN)
-            fn = fname + 'c'
-            if not os.path.exists(fn):
-                fn = fname + 'o'
-                if not os.path.exists(fn):
-                    self.fail("__import__ did not result in creation of "
-                              "either a .pyc or .pyo file")
-            s = os.stat(fn)
-            self.assertEqual(stat.S_IMODE(s.st_mode),
-                             stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH)
-        finally:
-            os.umask(oldmask)
-            remove_files(TESTFN)
-            unload(TESTFN)
-            del sys.path[0]
-
-    def test_imp_module(self):
-        # Verify that the imp module can correctly load and find .py files
-
-        # XXX (ncoghlan): It would be nice to use test_support.CleanImport
-        # here, but that breaks because the os module registers some
-        # handlers in copy_reg on import. Since CleanImport doesn't
-        # revert that registration, the module is left in a broken
-        # state after reversion. Reinitialising the module contents
-        # and just reverting os.environ to its previous state is an OK
-        # workaround
-        orig_path = os.path
-        orig_getenv = os.getenv
-        with EnvironmentVarGuard():
-            x = imp.find_module("os")
-            new_os = imp.load_module("os", *x)
-            self.assertIs(os, new_os)
-            self.assertIs(orig_path, new_os.path)
-            self.assertIsNot(orig_getenv, new_os.getenv)
-
-    def test_module_with_large_stack(self, module='longlist'):
-        # Regression test for http://bugs.python.org/issue561858.
-        filename = module + os.extsep + 'py'
-
-        # Create a file with a list of 65000 elements.
-        with open(filename, 'w+') as f:
-            f.write('d = [\n')
-            for i in range(65000):
-                f.write('"",\n')
-            f.write(']')
-
-        # Compile & remove .py file, we only need .pyc (or .pyo).
-        with open(filename, 'r') as f:
-            py_compile.compile(filename)
-        unlink(filename)
-
-        # Need to be able to load from current dir.
-        sys.path.append('')
-
-        # This used to crash.
-        exec 'import ' + module
-
-        # Cleanup.
-        del sys.path[-1]
-        unlink(filename + 'c')
-        unlink(filename + 'o')
-
-    def test_failing_import_sticks(self):
-        source = TESTFN + os.extsep + "py"
-        with open(source, "w") as f:
-            print >> f, "a = 1 // 0"
-
-        # New in 2.4, we shouldn't be able to import that no matter how often
-        # we try.
-        sys.path.insert(0, os.curdir)
-        try:
-            for i in [1, 2, 3]:
-                self.assertRaises(ZeroDivisionError, __import__, TESTFN)
-                self.assertNotIn(TESTFN, sys.modules,
-                                 "damaged module in sys.modules on %i try" % i)
-        finally:
-            del sys.path[0]
-            remove_files(TESTFN)
-
-    def test_failing_reload(self):
-        # A failing reload should leave the module object in sys.modules.
-        source = TESTFN + os.extsep + "py"
-        with open(source, "w") as f:
-            print >> f, "a = 1"
-            print >> f, "b = 2"
-
-        sys.path.insert(0, os.curdir)
-        try:
-            mod = __import__(TESTFN)
-            self.assertIn(TESTFN, sys.modules)
-            self.assertEqual(mod.a, 1, "module has wrong attribute values")
-            self.assertEqual(mod.b, 2, "module has wrong attribute values")
-
-            # On WinXP, just replacing the .py file wasn't enough to
-            # convince reload() to reparse it.  Maybe the timestamp didn't
-            # move enough.  We force it to get reparsed by removing the
-            # compiled file too.
-            remove_files(TESTFN)
-
-            # Now damage the module.
-            with open(source, "w") as f:
-                print >> f, "a = 10"
-                print >> f, "b = 20//0"
-
-            self.assertRaises(ZeroDivisionError, imp.reload, mod)
-
-            # But we still expect the module to be in sys.modules.
-            mod = sys.modules.get(TESTFN)
-            self.assertIsNot(mod, None, "expected module to be in sys.modules")
-
-            # We should have replaced a w/ 10, but the old b value should
-            # stick.
-            self.assertEqual(mod.a, 10, "module has wrong attribute values")
-            self.assertEqual(mod.b, 2, "module has wrong attribute values")
-
-        finally:
-            del sys.path[0]
-            remove_files(TESTFN)
-            unload(TESTFN)
-
-    def test_infinite_reload(self):
-        # http://bugs.python.org/issue742342 reports that Python segfaults
-        # (infinite recursion in C) when faced with self-recursive reload()ing.
-
-        sys.path.insert(0, os.path.dirname(__file__))
-        try:
-            import infinite_reload
-        finally:
-            del sys.path[0]
-
-    def test_import_name_binding(self):
-        # import x.y.z binds x in the current namespace.
-        import test as x
-        import test.test_support
-        self.assertIs(x, test, x.__name__)
-        self.assertTrue(hasattr(test.test_support, "__file__"))
-
-        # import x.y.z as w binds z as w.
-        import test.test_support as y
-        self.assertIs(y, test.test_support, y.__name__)
-
-    def test_import_initless_directory_warning(self):
-        with check_warnings(('', ImportWarning)):
-            # Just a random non-package directory we always expect to be
-            # somewhere in sys.path...
-            self.assertRaises(ImportError, __import__, "site-packages")
-
-    def test_import_by_filename(self):
-        path = os.path.abspath(TESTFN)
-        with self.assertRaises(ImportError) as c:
-            __import__(path)
-        self.assertEqual("Import by filename is not supported.",
-                         c.exception.args[0])
-
-    def test_import_in_del_does_not_crash(self):
-        # Issue 4236
-        testfn = script_helper.make_script('', TESTFN, textwrap.dedent("""\
-            import sys
-            class C:
-               def __del__(self):
-                  import imp
-            sys.argv.insert(0, C())
-            """))
-        script_helper.assert_python_ok(testfn)
-
-
-class PycRewritingTests(unittest.TestCase):
-    # Test that the `co_filename` attribute on code objects always points
-    # to the right file, even when various things happen (e.g. both the .py
-    # and the .pyc file are renamed).
-
-    module_name = "unlikely_module_name"
-    module_source = """
-import sys
-code_filename = sys._getframe().f_code.co_filename
-module_filename = __file__
-constant = 1
-def func():
-    pass
-func_filename = func.func_code.co_filename
-"""
-    dir_name = os.path.abspath(TESTFN)
-    file_name = os.path.join(dir_name, module_name) + os.extsep + "py"
-    compiled_name = file_name + ("c" if __debug__ else "o")
-
-    def setUp(self):
-        self.sys_path = sys.path[:]
-        self.orig_module = sys.modules.pop(self.module_name, None)
-        os.mkdir(self.dir_name)
-        with open(self.file_name, "w") as f:
-            f.write(self.module_source)
-        sys.path.insert(0, self.dir_name)
-
-    def tearDown(self):
-        sys.path[:] = self.sys_path
-        if self.orig_module is not None:
-            sys.modules[self.module_name] = self.orig_module
-        else:
-            unload(self.module_name)
-        unlink(self.file_name)
-        unlink(self.compiled_name)
-        rmtree(self.dir_name)
-
-    def import_module(self):
-        ns = globals()
-        __import__(self.module_name, ns, ns)
-        return sys.modules[self.module_name]
-
-    def test_basics(self):
-        mod = self.import_module()
-        self.assertEqual(mod.module_filename, self.file_name)
-        self.assertEqual(mod.code_filename, self.file_name)
-        self.assertEqual(mod.func_filename, self.file_name)
-        del sys.modules[self.module_name]
-        mod = self.import_module()
-        self.assertEqual(mod.module_filename, self.compiled_name)
-        self.assertEqual(mod.code_filename, self.file_name)
-        self.assertEqual(mod.func_filename, self.file_name)
-
-    def test_incorrect_code_name(self):
-        py_compile.compile(self.file_name, dfile="another_module.py")
-        mod = self.import_module()
-        self.assertEqual(mod.module_filename, self.compiled_name)
-        self.assertEqual(mod.code_filename, self.file_name)
-        self.assertEqual(mod.func_filename, self.file_name)
-
-    def test_module_without_source(self):
-        target = "another_module.py"
-        py_compile.compile(self.file_name, dfile=target)
-        os.remove(self.file_name)
-        mod = self.import_module()
-        self.assertEqual(mod.module_filename, self.compiled_name)
-        self.assertEqual(mod.code_filename, target)
-        self.assertEqual(mod.func_filename, target)
-
-    def test_foreign_code(self):
-        py_compile.compile(self.file_name)
-        with open(self.compiled_name, "rb") as f:
-            header = f.read(8)
-            code = marshal.load(f)
-        constants = list(code.co_consts)
-        foreign_code = test_main.func_code
-        pos = constants.index(1)
-        constants[pos] = foreign_code
-        code = type(code)(code.co_argcount, code.co_nlocals, code.co_stacksize,
-                          code.co_flags, code.co_code, tuple(constants),
-                          code.co_names, code.co_varnames, code.co_filename,
-                          code.co_name, code.co_firstlineno, code.co_lnotab,
-                          code.co_freevars, code.co_cellvars)
-        with open(self.compiled_name, "wb") as f:
-            f.write(header)
-            marshal.dump(code, f)
-        mod = self.import_module()
-        self.assertEqual(mod.constant.co_filename, foreign_code.co_filename)
-
-
-class PathsTests(unittest.TestCase):
-    path = TESTFN
-
-    def setUp(self):
-        os.mkdir(self.path)
-        self.syspath = sys.path[:]
-
-    def tearDown(self):
-        rmtree(self.path)
-        sys.path[:] = self.syspath
-
-    # Regression test for http://bugs.python.org/issue1293.
-    def test_trailing_slash(self):
-        with open(os.path.join(self.path, 'test_trailing_slash.py'), 'w') as f:
-            f.write("testdata = 'test_trailing_slash'")
-        sys.path.append(self.path+'/')
-        mod = __import__("test_trailing_slash")
-        self.assertEqual(mod.testdata, 'test_trailing_slash')
-        unload("test_trailing_slash")
-
-    # Regression test for http://bugs.python.org/issue3677.
-    def _test_UNC_path(self):
-        with open(os.path.join(self.path, 'test_trailing_slash.py'), 'w') as f:
-            f.write("testdata = 'test_trailing_slash'")
-        # Create the UNC path, like \\myhost\c$\foo\bar.
-        path = os.path.abspath(self.path)
-        import socket
-        hn = socket.gethostname()
-        drive = path[0]
-        unc = "\\\\%s\\%s$"%(hn, drive)
-        unc += path[2:]
-        sys.path.append(path)
-        mod = __import__("test_trailing_slash")
-        self.assertEqual(mod.testdata, 'test_trailing_slash')
-        unload("test_trailing_slash")
-
-    if sys.platform == "win32":
-        test_UNC_path = _test_UNC_path
-
-
-class RelativeImportTests(unittest.TestCase):
-
-    def tearDown(self):
-        unload("test.relimport")
-    setUp = tearDown
-
-    def test_relimport_star(self):
-        # This will import * from .test_import.
-        from . import relimport
-        self.assertTrue(hasattr(relimport, "RelativeImportTests"))
-
-    def test_issue3221(self):
-        # Regression test for http://bugs.python.org/issue3221.
-        def check_absolute():
-            exec "from os import path" in ns
-        def check_relative():
-            exec "from . import relimport" in ns
-
-        # Check both OK with __package__ and __name__ correct
-        ns = dict(__package__='test', __name__='test.notarealmodule')
-        check_absolute()
-        check_relative()
-
-        # Check both OK with only __name__ wrong
-        ns = dict(__package__='test', __name__='notarealpkg.notarealmodule')
-        check_absolute()
-        check_relative()
-
-        # Check relative fails with only __package__ wrong
-        ns = dict(__package__='foo', __name__='test.notarealmodule')
-        with check_warnings(('.+foo', RuntimeWarning)):
-            check_absolute()
-        self.assertRaises(SystemError, check_relative)
-
-        # Check relative fails with __package__ and __name__ wrong
-        ns = dict(__package__='foo', __name__='notarealpkg.notarealmodule')
-        with check_warnings(('.+foo', RuntimeWarning)):
-            check_absolute()
-        self.assertRaises(SystemError, check_relative)
-
-        # Check both fail with package set to a non-string
-        ns = dict(__package__=object())
-        self.assertRaises(ValueError, check_absolute)
-        self.assertRaises(ValueError, check_relative)
-
-    def test_absolute_import_without_future(self):
-        # If explicit relative import syntax is used, then do not try
-        # to perform an absolute import in the face of failure.
-        # Issue #7902.
-        with self.assertRaises(ImportError):
-            from .os import sep
-            self.fail("explicit relative import triggered an "
-                      "implicit absolute import")
-
-
-def test_main(verbose=None):
-    run_unittest(ImportTests, PycRewritingTests, PathsTests, RelativeImportTests)
-
-if __name__ == '__main__':
-    # Test needs to be a package, so we can do relative imports.
-    from test.test_import import test_main
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_importhooks.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_importhooks.py
deleted file mode 100644
index c9ee4c9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_importhooks.py
+++ /dev/null
@@ -1,255 +0,0 @@
-import sys
-import imp
-import os
-import unittest
-from test import test_support
-
-
-test_src = """\
-def get_name():
-    return __name__
-def get_file():
-    return __file__
-"""
-
-absimp = "import sub\n"
-relimp = "from . import sub\n"
-deeprelimp = "from .... import sub\n"
-futimp = "from __future__ import absolute_import\n"
-
-reload_src = test_src+"""\
-reloaded = True
-"""
-
-test_co = compile(test_src, "<???>", "exec")
-reload_co = compile(reload_src, "<???>", "exec")
-
-test2_oldabs_co = compile(absimp + test_src, "<???>", "exec")
-test2_newabs_co = compile(futimp + absimp + test_src, "<???>", "exec")
-test2_newrel_co = compile(relimp + test_src, "<???>", "exec")
-test2_deeprel_co = compile(deeprelimp + test_src, "<???>", "exec")
-test2_futrel_co = compile(futimp + relimp + test_src, "<???>", "exec")
-
-test_path = "!!!_test_!!!"
-
-
-class TestImporter:
-
-    modules = {
-        "hooktestmodule": (False, test_co),
-        "hooktestpackage": (True, test_co),
-        "hooktestpackage.sub": (True, test_co),
-        "hooktestpackage.sub.subber": (True, test_co),
-        "hooktestpackage.oldabs": (False, test2_oldabs_co),
-        "hooktestpackage.newabs": (False, test2_newabs_co),
-        "hooktestpackage.newrel": (False, test2_newrel_co),
-        "hooktestpackage.sub.subber.subest": (True, test2_deeprel_co),
-        "hooktestpackage.futrel": (False, test2_futrel_co),
-        "sub": (False, test_co),
-        "reloadmodule": (False, test_co),
-    }
-
-    def __init__(self, path=test_path):
-        if path != test_path:
-            # if out class is on sys.path_hooks, we must raise
-            # ImportError for any path item that we can't handle.
-            raise ImportError
-        self.path = path
-
-    def _get__path__(self):
-        raise NotImplementedError
-
-    def find_module(self, fullname, path=None):
-        if fullname in self.modules:
-            return self
-        else:
-            return None
-
-    def load_module(self, fullname):
-        ispkg, code = self.modules[fullname]
-        mod = sys.modules.setdefault(fullname,imp.new_module(fullname))
-        mod.__file__ = "<%s>" % self.__class__.__name__
-        mod.__loader__ = self
-        if ispkg:
-            mod.__path__ = self._get__path__()
-        exec code in mod.__dict__
-        return mod
-
-
-class MetaImporter(TestImporter):
-    def _get__path__(self):
-        return []
-
-class PathImporter(TestImporter):
-    def _get__path__(self):
-        return [self.path]
-
-
-class ImportBlocker:
-    """Place an ImportBlocker instance on sys.meta_path and you
-    can be sure the modules you specified can't be imported, even
-    if it's a builtin."""
-    def __init__(self, *namestoblock):
-        self.namestoblock = dict.fromkeys(namestoblock)
-    def find_module(self, fullname, path=None):
-        if fullname in self.namestoblock:
-            return self
-        return None
-    def load_module(self, fullname):
-        raise ImportError, "I dare you"
-
-
-class ImpWrapper:
-
-    def __init__(self, path=None):
-        if path is not None and not os.path.isdir(path):
-            raise ImportError
-        self.path = path
-
-    def find_module(self, fullname, path=None):
-        subname = fullname.split(".")[-1]
-        if subname != fullname and self.path is None:
-            return None
-        if self.path is None:
-            path = None
-        else:
-            path = [self.path]
-        try:
-            file, filename, stuff = imp.find_module(subname, path)
-        except ImportError:
-            return None
-        return ImpLoader(file, filename, stuff)
-
-
-class ImpLoader:
-
-    def __init__(self, file, filename, stuff):
-        self.file = file
-        self.filename = filename
-        self.stuff = stuff
-
-    def load_module(self, fullname):
-        mod = imp.load_module(fullname, self.file, self.filename, self.stuff)
-        if self.file:
-            self.file.close()
-        mod.__loader__ = self  # for introspection
-        return mod
-
-
-class ImportHooksBaseTestCase(unittest.TestCase):
-
-    def setUp(self):
-        self.path = sys.path[:]
-        self.meta_path = sys.meta_path[:]
-        self.path_hooks = sys.path_hooks[:]
-        sys.path_importer_cache.clear()
-        self.modules_before = sys.modules.copy()
-
-    def tearDown(self):
-        sys.path[:] = self.path
-        sys.meta_path[:] = self.meta_path
-        sys.path_hooks[:] = self.path_hooks
-        sys.path_importer_cache.clear()
-        sys.modules.clear()
-        sys.modules.update(self.modules_before)
-
-
-class ImportHooksTestCase(ImportHooksBaseTestCase):
-
-    def doTestImports(self, importer=None):
-        import hooktestmodule
-        import hooktestpackage
-        import hooktestpackage.sub
-        import hooktestpackage.sub.subber
-        self.assertEqual(hooktestmodule.get_name(),
-                         "hooktestmodule")
-        self.assertEqual(hooktestpackage.get_name(),
-                         "hooktestpackage")
-        self.assertEqual(hooktestpackage.sub.get_name(),
-                         "hooktestpackage.sub")
-        self.assertEqual(hooktestpackage.sub.subber.get_name(),
-                         "hooktestpackage.sub.subber")
-        if importer:
-            self.assertEqual(hooktestmodule.__loader__, importer)
-            self.assertEqual(hooktestpackage.__loader__, importer)
-            self.assertEqual(hooktestpackage.sub.__loader__, importer)
-            self.assertEqual(hooktestpackage.sub.subber.__loader__, importer)
-
-        TestImporter.modules['reloadmodule'] = (False, test_co)
-        import reloadmodule
-        self.assertFalse(hasattr(reloadmodule,'reloaded'))
-
-        TestImporter.modules['reloadmodule'] = (False, reload_co)
-        imp.reload(reloadmodule)
-        self.assertTrue(hasattr(reloadmodule,'reloaded'))
-
-        import hooktestpackage.oldabs
-        self.assertEqual(hooktestpackage.oldabs.get_name(),
-                         "hooktestpackage.oldabs")
-        self.assertEqual(hooktestpackage.oldabs.sub,
-                         hooktestpackage.sub)
-
-        import hooktestpackage.newrel
-        self.assertEqual(hooktestpackage.newrel.get_name(),
-                         "hooktestpackage.newrel")
-        self.assertEqual(hooktestpackage.newrel.sub,
-                         hooktestpackage.sub)
-
-        import hooktestpackage.sub.subber.subest as subest
-        self.assertEqual(subest.get_name(),
-                         "hooktestpackage.sub.subber.subest")
-        self.assertEqual(subest.sub,
-                         hooktestpackage.sub)
-
-        import hooktestpackage.futrel
-        self.assertEqual(hooktestpackage.futrel.get_name(),
-                         "hooktestpackage.futrel")
-        self.assertEqual(hooktestpackage.futrel.sub,
-                         hooktestpackage.sub)
-
-        import sub
-        self.assertEqual(sub.get_name(), "sub")
-
-        import hooktestpackage.newabs
-        self.assertEqual(hooktestpackage.newabs.get_name(),
-                         "hooktestpackage.newabs")
-        self.assertEqual(hooktestpackage.newabs.sub, sub)
-
-    def testMetaPath(self):
-        i = MetaImporter()
-        sys.meta_path.append(i)
-        self.doTestImports(i)
-
-    def testPathHook(self):
-        sys.path_hooks.append(PathImporter)
-        sys.path.append(test_path)
-        self.doTestImports()
-
-    def testBlocker(self):
-        mname = "exceptions"  # an arbitrary harmless builtin module
-        test_support.unload(mname)
-        sys.meta_path.append(ImportBlocker(mname))
-        self.assertRaises(ImportError, __import__, mname)
-
-    def testImpWrapper(self):
-        i = ImpWrapper()
-        sys.meta_path.append(i)
-        sys.path_hooks.append(ImpWrapper)
-        mnames = ("colorsys", "urlparse", "distutils.core", "compiler.misc")
-        for mname in mnames:
-            parent = mname.split(".")[0]
-            for n in sys.modules.keys():
-                if n.startswith(parent):
-                    del sys.modules[n]
-        with test_support.check_warnings(("The compiler package is deprecated "
-                                          "and removed", DeprecationWarning)):
-            for mname in mnames:
-                m = __import__(mname, globals(), locals(), ["__dummy__"])
-                m.__loader__  # to make sure we actually handled the import
-
-
-def test_main():
-    test_support.run_unittest(ImportHooksTestCase)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_importlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_importlib.py
deleted file mode 100644
index bdb8922..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_importlib.py
+++ /dev/null
@@ -1,176 +0,0 @@
-import contextlib
-import imp
-import importlib
-import sys
-import unittest
-
-
-@contextlib.contextmanager
-def uncache(*names):
-    """Uncache a module from sys.modules.
-
-    A basic sanity check is performed to prevent uncaching modules that either
-    cannot/shouldn't be uncached.
-
-    """
-    for name in names:
-        if name in ('sys', 'marshal', 'imp'):
-            raise ValueError(
-                "cannot uncache {0} as it will break _importlib".format(name))
-        try:
-            del sys.modules[name]
-        except KeyError:
-            pass
-    try:
-        yield
-    finally:
-        for name in names:
-            try:
-                del sys.modules[name]
-            except KeyError:
-                pass
-
-
-@contextlib.contextmanager
-def import_state(**kwargs):
-    """Context manager to manage the various importers and stored state in the
-    sys module.
-
-    The 'modules' attribute is not supported as the interpreter state stores a
-    pointer to the dict that the interpreter uses internally;
-    reassigning to sys.modules does not have the desired effect.
-
-    """
-    originals = {}
-    try:
-        for attr, default in (('meta_path', []), ('path', []),
-                              ('path_hooks', []),
-                              ('path_importer_cache', {})):
-            originals[attr] = getattr(sys, attr)
-            if attr in kwargs:
-                new_value = kwargs[attr]
-                del kwargs[attr]
-            else:
-                new_value = default
-            setattr(sys, attr, new_value)
-        if len(kwargs):
-            raise ValueError(
-                    'unrecognized arguments: {0}'.format(kwargs.keys()))
-        yield
-    finally:
-        for attr, value in originals.items():
-            setattr(sys, attr, value)
-
-
-class mock_modules(object):
-
-    """A mock importer/loader."""
-
-    def __init__(self, *names):
-        self.modules = {}
-        for name in names:
-            if not name.endswith('.__init__'):
-                import_name = name
-            else:
-                import_name = name[:-len('.__init__')]
-            if '.' not in name:
-                package = None
-            elif import_name == name:
-                package = name.rsplit('.', 1)[0]
-            else:
-                package = import_name
-            module = imp.new_module(import_name)
-            module.__loader__ = self
-            module.__file__ = '<mock __file__>'
-            module.__package__ = package
-            module.attr = name
-            if import_name != name:
-                module.__path__ = ['<mock __path__>']
-            self.modules[import_name] = module
-
-    def __getitem__(self, name):
-        return self.modules[name]
-
-    def find_module(self, fullname, path=None):
-        if fullname not in self.modules:
-            return None
-        else:
-            return self
-
-    def load_module(self, fullname):
-        if fullname not in self.modules:
-            raise ImportError
-        else:
-            sys.modules[fullname] = self.modules[fullname]
-            return self.modules[fullname]
-
-    def __enter__(self):
-        self._uncache = uncache(*self.modules.keys())
-        self._uncache.__enter__()
-        return self
-
-    def __exit__(self, *exc_info):
-        self._uncache.__exit__(None, None, None)
-
-
-
-class ImportModuleTests(unittest.TestCase):
-
-    """Test importlib.import_module."""
-
-    def test_module_import(self):
-        # Test importing a top-level module.
-        with mock_modules('top_level') as mock:
-            with import_state(meta_path=[mock]):
-                module = importlib.import_module('top_level')
-                self.assertEqual(module.__name__, 'top_level')
-
-    def test_absolute_package_import(self):
-        # Test importing a module from a package with an absolute name.
-        pkg_name = 'pkg'
-        pkg_long_name = '{0}.__init__'.format(pkg_name)
-        name = '{0}.mod'.format(pkg_name)
-        with mock_modules(pkg_long_name, name) as mock:
-            with import_state(meta_path=[mock]):
-                module = importlib.import_module(name)
-                self.assertEqual(module.__name__, name)
-
-    def test_shallow_relative_package_import(self):
-        modules = ['a.__init__', 'a.b.__init__', 'a.b.c.__init__', 'a.b.c.d']
-        with mock_modules(*modules) as mock:
-            with import_state(meta_path=[mock]):
-                module = importlib.import_module('.d', 'a.b.c')
-                self.assertEqual(module.__name__, 'a.b.c.d')
-
-    def test_deep_relative_package_import(self):
-        # Test importing a module from a package through a relatve import.
-        modules = ['a.__init__', 'a.b.__init__', 'a.c']
-        with mock_modules(*modules) as mock:
-            with import_state(meta_path=[mock]):
-                module = importlib.import_module('..c', 'a.b')
-                self.assertEqual(module.__name__, 'a.c')
-
-    def test_absolute_import_with_package(self):
-        # Test importing a module from a package with an absolute name with
-        # the 'package' argument given.
-        pkg_name = 'pkg'
-        pkg_long_name = '{0}.__init__'.format(pkg_name)
-        name = '{0}.mod'.format(pkg_name)
-        with mock_modules(pkg_long_name, name) as mock:
-            with import_state(meta_path=[mock]):
-                module = importlib.import_module(name, pkg_name)
-                self.assertEqual(module.__name__, name)
-
-    def test_relative_import_wo_package(self):
-        # Relative imports cannot happen without the 'package' argument being
-        # set.
-        self.assertRaises(TypeError, importlib.import_module, '.support')
-
-
-def test_main():
-    from test.test_support import run_unittest
-    run_unittest(ImportModuleTests)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_index.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_index.py
deleted file mode 100644
index 1459491..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_index.py
+++ /dev/null
@@ -1,323 +0,0 @@
-import unittest
-from test import test_support
-import operator
-from sys import maxint
-maxsize = test_support.MAX_Py_ssize_t
-minsize = -maxsize-1
-
-class oldstyle:
-    def __index__(self):
-        return self.ind
-
-class newstyle(object):
-    def __index__(self):
-        return self.ind
-
-class TrapInt(int):
-    def __index__(self):
-        return self
-
-class TrapLong(long):
-    def __index__(self):
-        return self
-
-class BaseTestCase(unittest.TestCase):
-    def setUp(self):
-        self.o = oldstyle()
-        self.n = newstyle()
-
-    def test_basic(self):
-        self.o.ind = -2
-        self.n.ind = 2
-        self.assertEqual(operator.index(self.o), -2)
-        self.assertEqual(operator.index(self.n), 2)
-
-    def test_slice(self):
-        self.o.ind = 1
-        self.n.ind = 2
-        slc = slice(self.o, self.o, self.o)
-        check_slc = slice(1, 1, 1)
-        self.assertEqual(slc.indices(self.o), check_slc.indices(1))
-        slc = slice(self.n, self.n, self.n)
-        check_slc = slice(2, 2, 2)
-        self.assertEqual(slc.indices(self.n), check_slc.indices(2))
-
-    def test_wrappers(self):
-        self.o.ind = 4
-        self.n.ind = 5
-        self.assertEqual(6 .__index__(), 6)
-        self.assertEqual(-7L.__index__(), -7)
-        self.assertEqual(self.o.__index__(), 4)
-        self.assertEqual(self.n.__index__(), 5)
-        self.assertEqual(True.__index__(), 1)
-        self.assertEqual(False.__index__(), 0)
-
-    def test_subclasses(self):
-        r = range(10)
-        self.assertEqual(r[TrapInt(5):TrapInt(10)], r[5:10])
-        self.assertEqual(r[TrapLong(5):TrapLong(10)], r[5:10])
-        self.assertEqual(slice(TrapInt()).indices(0), (0,0,1))
-        self.assertEqual(slice(TrapLong(0)).indices(0), (0,0,1))
-
-    def test_error(self):
-        self.o.ind = 'dumb'
-        self.n.ind = 'bad'
-        self.assertRaises(TypeError, operator.index, self.o)
-        self.assertRaises(TypeError, operator.index, self.n)
-        self.assertRaises(TypeError, slice(self.o).indices, 0)
-        self.assertRaises(TypeError, slice(self.n).indices, 0)
-
-
-class SeqTestCase(unittest.TestCase):
-    # This test case isn't run directly. It just defines common tests
-    # to the different sequence types below
-    def setUp(self):
-        self.o = oldstyle()
-        self.n = newstyle()
-        self.o2 = oldstyle()
-        self.n2 = newstyle()
-
-    def test_index(self):
-        self.o.ind = -2
-        self.n.ind = 2
-        self.assertEqual(self.seq[self.n], self.seq[2])
-        self.assertEqual(self.seq[self.o], self.seq[-2])
-
-    def test_slice(self):
-        self.o.ind = 1
-        self.o2.ind = 3
-        self.n.ind = 2
-        self.n2.ind = 4
-        self.assertEqual(self.seq[self.o:self.o2], self.seq[1:3])
-        self.assertEqual(self.seq[self.n:self.n2], self.seq[2:4])
-
-    def test_slice_bug7532(self):
-        seqlen = len(self.seq)
-        self.o.ind = int(seqlen * 1.5)
-        self.n.ind = seqlen + 2
-        self.assertEqual(self.seq[self.o:], self.seq[0:0])
-        self.assertEqual(self.seq[:self.o], self.seq)
-        self.assertEqual(self.seq[self.n:], self.seq[0:0])
-        self.assertEqual(self.seq[:self.n], self.seq)
-        if isinstance(self.seq, ClassicSeq):
-            return
-        # These tests fail for ClassicSeq (see bug #7532)
-        self.o2.ind = -seqlen - 2
-        self.n2.ind = -int(seqlen * 1.5)
-        self.assertEqual(self.seq[self.o2:], self.seq)
-        self.assertEqual(self.seq[:self.o2], self.seq[0:0])
-        self.assertEqual(self.seq[self.n2:], self.seq)
-        self.assertEqual(self.seq[:self.n2], self.seq[0:0])
-
-    def test_repeat(self):
-        self.o.ind = 3
-        self.n.ind = 2
-        self.assertEqual(self.seq * self.o, self.seq * 3)
-        self.assertEqual(self.seq * self.n, self.seq * 2)
-        self.assertEqual(self.o * self.seq, self.seq * 3)
-        self.assertEqual(self.n * self.seq, self.seq * 2)
-
-    def test_wrappers(self):
-        self.o.ind = 4
-        self.n.ind = 5
-        self.assertEqual(self.seq.__getitem__(self.o), self.seq[4])
-        self.assertEqual(self.seq.__mul__(self.o), self.seq * 4)
-        self.assertEqual(self.seq.__rmul__(self.o), self.seq * 4)
-        self.assertEqual(self.seq.__getitem__(self.n), self.seq[5])
-        self.assertEqual(self.seq.__mul__(self.n), self.seq * 5)
-        self.assertEqual(self.seq.__rmul__(self.n), self.seq * 5)
-
-    def test_subclasses(self):
-        self.assertEqual(self.seq[TrapInt()], self.seq[0])
-        self.assertEqual(self.seq[TrapLong()], self.seq[0])
-
-    def test_error(self):
-        self.o.ind = 'dumb'
-        self.n.ind = 'bad'
-        indexobj = lambda x, obj: obj.seq[x]
-        self.assertRaises(TypeError, indexobj, self.o, self)
-        self.assertRaises(TypeError, indexobj, self.n, self)
-        sliceobj = lambda x, obj: obj.seq[x:]
-        self.assertRaises(TypeError, sliceobj, self.o, self)
-        self.assertRaises(TypeError, sliceobj, self.n, self)
-
-
-class ListTestCase(SeqTestCase):
-    seq = [0,10,20,30,40,50]
-
-    def test_setdelitem(self):
-        self.o.ind = -2
-        self.n.ind = 2
-        lst = list('ab!cdefghi!j')
-        del lst[self.o]
-        del lst[self.n]
-        lst[self.o] = 'X'
-        lst[self.n] = 'Y'
-        self.assertEqual(lst, list('abYdefghXj'))
-
-        lst = [5, 6, 7, 8, 9, 10, 11]
-        lst.__setitem__(self.n, "here")
-        self.assertEqual(lst, [5, 6, "here", 8, 9, 10, 11])
-        lst.__delitem__(self.n)
-        self.assertEqual(lst, [5, 6, 8, 9, 10, 11])
-
-    def test_inplace_repeat(self):
-        self.o.ind = 2
-        self.n.ind = 3
-        lst = [6, 4]
-        lst *= self.o
-        self.assertEqual(lst, [6, 4, 6, 4])
-        lst *= self.n
-        self.assertEqual(lst, [6, 4, 6, 4] * 3)
-
-        lst = [5, 6, 7, 8, 9, 11]
-        l2 = lst.__imul__(self.n)
-        self.assertIs(l2, lst)
-        self.assertEqual(lst, [5, 6, 7, 8, 9, 11] * 3)
-
-
-class _BaseSeq:
-
-    def __init__(self, iterable):
-        self._list = list(iterable)
-
-    def __repr__(self):
-        return repr(self._list)
-
-    def __eq__(self, other):
-        return self._list == other
-
-    def __len__(self):
-        return len(self._list)
-
-    def __mul__(self, n):
-        return self.__class__(self._list*n)
-    __rmul__ = __mul__
-
-    def __getitem__(self, index):
-        return self._list[index]
-
-
-class _GetSliceMixin:
-
-    def __getslice__(self, i, j):
-        return self._list.__getslice__(i, j)
-
-
-class ClassicSeq(_BaseSeq): pass
-class NewSeq(_BaseSeq, object): pass
-class ClassicSeqDeprecated(_GetSliceMixin, ClassicSeq): pass
-class NewSeqDeprecated(_GetSliceMixin, NewSeq): pass
-
-
-class TupleTestCase(SeqTestCase):
-    seq = (0,10,20,30,40,50)
-
-class StringTestCase(SeqTestCase):
-    seq = "this is a test"
-
-class ByteArrayTestCase(SeqTestCase):
-    seq = bytearray("this is a test")
-
-class UnicodeTestCase(SeqTestCase):
-    seq = u"this is a test"
-
-class ClassicSeqTestCase(SeqTestCase):
-    seq = ClassicSeq((0,10,20,30,40,50))
-
-class NewSeqTestCase(SeqTestCase):
-    seq = NewSeq((0,10,20,30,40,50))
-
-class ClassicSeqDeprecatedTestCase(SeqTestCase):
-    seq = ClassicSeqDeprecated((0,10,20,30,40,50))
-
-class NewSeqDeprecatedTestCase(SeqTestCase):
-    seq = NewSeqDeprecated((0,10,20,30,40,50))
-
-
-class XRangeTestCase(unittest.TestCase):
-
-    def test_xrange(self):
-        n = newstyle()
-        n.ind = 5
-        self.assertEqual(xrange(1, 20)[n], 6)
-        self.assertEqual(xrange(1, 20).__getitem__(n), 6)
-
-class OverflowTestCase(unittest.TestCase):
-
-    def setUp(self):
-        self.pos = 2**100
-        self.neg = -self.pos
-
-    def test_large_longs(self):
-        self.assertEqual(self.pos.__index__(), self.pos)
-        self.assertEqual(self.neg.__index__(), self.neg)
-
-    def _getitem_helper(self, base):
-        class GetItem(base):
-            def __len__(self):
-                return maxint # cannot return long here
-            def __getitem__(self, key):
-                return key
-        x = GetItem()
-        self.assertEqual(x[self.pos], self.pos)
-        self.assertEqual(x[self.neg], self.neg)
-        self.assertEqual(x[self.neg:self.pos].indices(maxsize),
-                         (0, maxsize, 1))
-        self.assertEqual(x[self.neg:self.pos:1].indices(maxsize),
-                         (0, maxsize, 1))
-
-    def _getslice_helper_deprecated(self, base):
-        class GetItem(base):
-            def __len__(self):
-                return maxint # cannot return long here
-            def __getitem__(self, key):
-                return key
-            def __getslice__(self, i, j):
-                return i, j
-        x = GetItem()
-        self.assertEqual(x[self.pos], self.pos)
-        self.assertEqual(x[self.neg], self.neg)
-        self.assertEqual(x[self.neg:self.pos], (maxint+minsize, maxsize))
-        self.assertEqual(x[self.neg:self.pos:1].indices(maxsize),
-                         (0, maxsize, 1))
-
-    def test_getitem(self):
-        self._getitem_helper(object)
-        with test_support.check_py3k_warnings():
-            self._getslice_helper_deprecated(object)
-
-    def test_getitem_classic(self):
-        class Empty: pass
-        # XXX This test fails (see bug #7532)
-        #self._getitem_helper(Empty)
-        with test_support.check_py3k_warnings():
-            self._getslice_helper_deprecated(Empty)
-
-    def test_sequence_repeat(self):
-        self.assertRaises(OverflowError, lambda: "a" * self.pos)
-        self.assertRaises(OverflowError, lambda: "a" * self.neg)
-
-
-def test_main():
-    test_support.run_unittest(
-        BaseTestCase,
-        ListTestCase,
-        TupleTestCase,
-        ByteArrayTestCase,
-        StringTestCase,
-        UnicodeTestCase,
-        ClassicSeqTestCase,
-        NewSeqTestCase,
-        XRangeTestCase,
-        OverflowTestCase,
-    )
-    with test_support.check_py3k_warnings():
-        test_support.run_unittest(
-            ClassicSeqDeprecatedTestCase,
-            NewSeqDeprecatedTestCase,
-        )
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_inspect.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_inspect.py
deleted file mode 100644
index b3995cb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_inspect.py
+++ /dev/null
@@ -1,752 +0,0 @@
-import re
-import sys
-import types
-import unittest
-import inspect
-import linecache
-import datetime
-from UserList import UserList
-from UserDict import UserDict
-
-from test.test_support import run_unittest, check_py3k_warnings
-
-with check_py3k_warnings(
-        ("tuple parameter unpacking has been removed", SyntaxWarning),
-        quiet=True):
-    from test import inspect_fodder as mod
-    from test import inspect_fodder2 as mod2
-
-# C module for test_findsource_binary
-import unicodedata
-
-# Functions tested in this suite:
-# ismodule, isclass, ismethod, isfunction, istraceback, isframe, iscode,
-# isbuiltin, isroutine, isgenerator, isgeneratorfunction, getmembers,
-# getdoc, getfile, getmodule, getsourcefile, getcomments, getsource,
-# getclasstree, getargspec, getargvalues, formatargspec, formatargvalues,
-# currentframe, stack, trace, isdatadescriptor
-
-# NOTE: There are some additional tests relating to interaction with
-#       zipimport in the test_zipimport_support test module.
-
-modfile = mod.__file__
-if modfile.endswith(('c', 'o')):
-    modfile = modfile[:-1]
-
-import __builtin__
-
-try:
-    1 // 0
-except:
-    tb = sys.exc_traceback
-
-git = mod.StupidGit()
-
-class IsTestBase(unittest.TestCase):
-    predicates = set([inspect.isbuiltin, inspect.isclass, inspect.iscode,
-                      inspect.isframe, inspect.isfunction, inspect.ismethod,
-                      inspect.ismodule, inspect.istraceback,
-                      inspect.isgenerator, inspect.isgeneratorfunction])
-
-    def istest(self, predicate, exp):
-        obj = eval(exp)
-        self.assertTrue(predicate(obj), '%s(%s)' % (predicate.__name__, exp))
-
-        for other in self.predicates - set([predicate]):
-            if predicate == inspect.isgeneratorfunction and\
-               other == inspect.isfunction:
-                continue
-            self.assertFalse(other(obj), 'not %s(%s)' % (other.__name__, exp))
-
-def generator_function_example(self):
-    for i in xrange(2):
-        yield i
-
-class TestPredicates(IsTestBase):
-    def test_sixteen(self):
-        count = len(filter(lambda x:x.startswith('is'), dir(inspect)))
-        # This test is here for remember you to update Doc/library/inspect.rst
-        # which claims there are 16 such functions
-        expected = 16
-        err_msg = "There are %d (not %d) is* functions" % (count, expected)
-        self.assertEqual(count, expected, err_msg)
-
-
-    def test_excluding_predicates(self):
-        self.istest(inspect.isbuiltin, 'sys.exit')
-        self.istest(inspect.isbuiltin, '[].append')
-        self.istest(inspect.iscode, 'mod.spam.func_code')
-        self.istest(inspect.isframe, 'tb.tb_frame')
-        self.istest(inspect.isfunction, 'mod.spam')
-        self.istest(inspect.ismethod, 'mod.StupidGit.abuse')
-        self.istest(inspect.ismethod, 'git.argue')
-        self.istest(inspect.ismodule, 'mod')
-        self.istest(inspect.istraceback, 'tb')
-        self.istest(inspect.isdatadescriptor, '__builtin__.file.closed')
-        self.istest(inspect.isdatadescriptor, '__builtin__.file.softspace')
-        self.istest(inspect.isgenerator, '(x for x in xrange(2))')
-        self.istest(inspect.isgeneratorfunction, 'generator_function_example')
-        if hasattr(types, 'GetSetDescriptorType'):
-            self.istest(inspect.isgetsetdescriptor,
-                        'type(tb.tb_frame).f_locals')
-        else:
-            self.assertFalse(inspect.isgetsetdescriptor(type(tb.tb_frame).f_locals))
-        if hasattr(types, 'MemberDescriptorType'):
-            self.istest(inspect.ismemberdescriptor, 'datetime.timedelta.days')
-        else:
-            self.assertFalse(inspect.ismemberdescriptor(datetime.timedelta.days))
-
-    def test_isroutine(self):
-        self.assertTrue(inspect.isroutine(mod.spam))
-        self.assertTrue(inspect.isroutine([].count))
-
-    def test_isclass(self):
-        self.istest(inspect.isclass, 'mod.StupidGit')
-        self.assertTrue(inspect.isclass(list))
-
-        class newstyle(object): pass
-        self.assertTrue(inspect.isclass(newstyle))
-
-        class CustomGetattr(object):
-            def __getattr__(self, attr):
-                return None
-        self.assertFalse(inspect.isclass(CustomGetattr()))
-
-    def test_get_slot_members(self):
-        class C(object):
-            __slots__ = ("a", "b")
-
-        x = C()
-        x.a = 42
-        members = dict(inspect.getmembers(x))
-        self.assertIn('a', members)
-        self.assertNotIn('b', members)
-
-    def test_isabstract(self):
-        from abc import ABCMeta, abstractmethod
-
-        class AbstractClassExample(object):
-            __metaclass__ = ABCMeta
-
-            @abstractmethod
-            def foo(self):
-                pass
-
-        class ClassExample(AbstractClassExample):
-            def foo(self):
-                pass
-
-        a = ClassExample()
-
-        # Test general behaviour.
-        self.assertTrue(inspect.isabstract(AbstractClassExample))
-        self.assertFalse(inspect.isabstract(ClassExample))
-        self.assertFalse(inspect.isabstract(a))
-        self.assertFalse(inspect.isabstract(int))
-        self.assertFalse(inspect.isabstract(5))
-
-
-class TestInterpreterStack(IsTestBase):
-    def __init__(self, *args, **kwargs):
-        unittest.TestCase.__init__(self, *args, **kwargs)
-
-        git.abuse(7, 8, 9)
-
-    def test_abuse_done(self):
-        self.istest(inspect.istraceback, 'git.ex[2]')
-        self.istest(inspect.isframe, 'mod.fr')
-
-    def test_stack(self):
-        self.assertTrue(len(mod.st) >= 5)
-        self.assertEqual(mod.st[0][1:],
-             (modfile, 16, 'eggs', ['    st = inspect.stack()\n'], 0))
-        self.assertEqual(mod.st[1][1:],
-             (modfile, 9, 'spam', ['    eggs(b + d, c + f)\n'], 0))
-        self.assertEqual(mod.st[2][1:],
-             (modfile, 43, 'argue', ['            spam(a, b, c)\n'], 0))
-        self.assertEqual(mod.st[3][1:],
-             (modfile, 39, 'abuse', ['        self.argue(a, b, c)\n'], 0))
-
-    def test_trace(self):
-        self.assertEqual(len(git.tr), 3)
-        self.assertEqual(git.tr[0][1:], (modfile, 43, 'argue',
-                                         ['            spam(a, b, c)\n'], 0))
-        self.assertEqual(git.tr[1][1:], (modfile, 9, 'spam',
-                                         ['    eggs(b + d, c + f)\n'], 0))
-        self.assertEqual(git.tr[2][1:], (modfile, 18, 'eggs',
-                                         ['    q = y // 0\n'], 0))
-
-    def test_frame(self):
-        args, varargs, varkw, locals = inspect.getargvalues(mod.fr)
-        self.assertEqual(args, ['x', 'y'])
-        self.assertEqual(varargs, None)
-        self.assertEqual(varkw, None)
-        self.assertEqual(locals, {'x': 11, 'p': 11, 'y': 14})
-        self.assertEqual(inspect.formatargvalues(args, varargs, varkw, locals),
-                         '(x=11, y=14)')
-
-    def test_previous_frame(self):
-        args, varargs, varkw, locals = inspect.getargvalues(mod.fr.f_back)
-        self.assertEqual(args, ['a', 'b', 'c', 'd', ['e', ['f']]])
-        self.assertEqual(varargs, 'g')
-        self.assertEqual(varkw, 'h')
-        self.assertEqual(inspect.formatargvalues(args, varargs, varkw, locals),
-             '(a=7, b=8, c=9, d=3, (e=4, (f=5,)), *g=(), **h={})')
-
-class GetSourceBase(unittest.TestCase):
-    # Subclasses must override.
-    fodderFile = None
-
-    def __init__(self, *args, **kwargs):
-        unittest.TestCase.__init__(self, *args, **kwargs)
-
-        with open(inspect.getsourcefile(self.fodderFile)) as fp:
-            self.source = fp.read()
-
-    def sourcerange(self, top, bottom):
-        lines = self.source.split("\n")
-        return "\n".join(lines[top-1:bottom]) + "\n"
-
-    def assertSourceEqual(self, obj, top, bottom):
-        self.assertEqual(inspect.getsource(obj),
-                         self.sourcerange(top, bottom))
-
-class TestRetrievingSourceCode(GetSourceBase):
-    fodderFile = mod
-
-    def test_getclasses(self):
-        classes = inspect.getmembers(mod, inspect.isclass)
-        self.assertEqual(classes,
-                         [('FesteringGob', mod.FesteringGob),
-                          ('MalodorousPervert', mod.MalodorousPervert),
-                          ('ParrotDroppings', mod.ParrotDroppings),
-                          ('StupidGit', mod.StupidGit)])
-        tree = inspect.getclasstree([cls[1] for cls in classes], 1)
-        self.assertEqual(tree,
-                         [(mod.ParrotDroppings, ()),
-                          (mod.StupidGit, ()),
-                          [(mod.MalodorousPervert, (mod.StupidGit,)),
-                           [(mod.FesteringGob, (mod.MalodorousPervert,
-                                                   mod.ParrotDroppings))
-                            ]
-                           ]
-                          ])
-
-    def test_getfunctions(self):
-        functions = inspect.getmembers(mod, inspect.isfunction)
-        self.assertEqual(functions, [('eggs', mod.eggs),
-                                     ('spam', mod.spam)])
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_getdoc(self):
-        self.assertEqual(inspect.getdoc(mod), 'A module docstring.')
-        self.assertEqual(inspect.getdoc(mod.StupidGit),
-                         'A longer,\n\nindented\n\ndocstring.')
-        self.assertEqual(inspect.getdoc(git.abuse),
-                         'Another\n\ndocstring\n\ncontaining\n\ntabs')
-
-    def test_cleandoc(self):
-        self.assertEqual(inspect.cleandoc('An\n    indented\n    docstring.'),
-                         'An\nindented\ndocstring.')
-
-    def test_getcomments(self):
-        self.assertEqual(inspect.getcomments(mod), '# line 1\n')
-        self.assertEqual(inspect.getcomments(mod.StupidGit), '# line 20\n')
-
-    def test_getmodule(self):
-        # Check actual module
-        self.assertEqual(inspect.getmodule(mod), mod)
-        # Check class (uses __module__ attribute)
-        self.assertEqual(inspect.getmodule(mod.StupidGit), mod)
-        # Check a method (no __module__ attribute, falls back to filename)
-        self.assertEqual(inspect.getmodule(mod.StupidGit.abuse), mod)
-        # Do it again (check the caching isn't broken)
-        self.assertEqual(inspect.getmodule(mod.StupidGit.abuse), mod)
-        # Check a builtin
-        self.assertEqual(inspect.getmodule(str), sys.modules["__builtin__"])
-        # Check filename override
-        self.assertEqual(inspect.getmodule(None, modfile), mod)
-
-    def test_getsource(self):
-        self.assertSourceEqual(git.abuse, 29, 39)
-        self.assertSourceEqual(mod.StupidGit, 21, 46)
-
-    def test_getsourcefile(self):
-        self.assertEqual(inspect.getsourcefile(mod.spam), modfile)
-        self.assertEqual(inspect.getsourcefile(git.abuse), modfile)
-        fn = "_non_existing_filename_used_for_sourcefile_test.py"
-        co = compile("None", fn, "exec")
-        self.assertEqual(inspect.getsourcefile(co), None)
-        linecache.cache[co.co_filename] = (1, None, "None", co.co_filename)
-        self.assertEqual(inspect.getsourcefile(co), fn)
-
-    def test_getfile(self):
-        self.assertEqual(inspect.getfile(mod.StupidGit), mod.__file__)
-
-    def test_getmodule_recursion(self):
-        from types import ModuleType
-        name = '__inspect_dummy'
-        m = sys.modules[name] = ModuleType(name)
-        m.__file__ = "<string>" # hopefully not a real filename...
-        m.__loader__ = "dummy"  # pretend the filename is understood by a loader
-        exec "def x(): pass" in m.__dict__
-        self.assertEqual(inspect.getsourcefile(m.x.func_code), '<string>')
-        del sys.modules[name]
-        inspect.getmodule(compile('a=10','','single'))
-
-class TestDecorators(GetSourceBase):
-    fodderFile = mod2
-
-    def test_wrapped_decorator(self):
-        self.assertSourceEqual(mod2.wrapped, 14, 17)
-
-    def test_replacing_decorator(self):
-        self.assertSourceEqual(mod2.gone, 9, 10)
-
-class TestOneliners(GetSourceBase):
-    fodderFile = mod2
-    def test_oneline_lambda(self):
-        # Test inspect.getsource with a one-line lambda function.
-        self.assertSourceEqual(mod2.oll, 25, 25)
-
-    def test_threeline_lambda(self):
-        # Test inspect.getsource with a three-line lambda function,
-        # where the second and third lines are _not_ indented.
-        self.assertSourceEqual(mod2.tll, 28, 30)
-
-    def test_twoline_indented_lambda(self):
-        # Test inspect.getsource with a two-line lambda function,
-        # where the second line _is_ indented.
-        self.assertSourceEqual(mod2.tlli, 33, 34)
-
-    def test_onelinefunc(self):
-        # Test inspect.getsource with a regular one-line function.
-        self.assertSourceEqual(mod2.onelinefunc, 37, 37)
-
-    def test_manyargs(self):
-        # Test inspect.getsource with a regular function where
-        # the arguments are on two lines and _not_ indented and
-        # the body on the second line with the last arguments.
-        self.assertSourceEqual(mod2.manyargs, 40, 41)
-
-    def test_twolinefunc(self):
-        # Test inspect.getsource with a regular function where
-        # the body is on two lines, following the argument list and
-        # continued on the next line by a \\.
-        self.assertSourceEqual(mod2.twolinefunc, 44, 45)
-
-    def test_lambda_in_list(self):
-        # Test inspect.getsource with a one-line lambda function
-        # defined in a list, indented.
-        self.assertSourceEqual(mod2.a[1], 49, 49)
-
-    def test_anonymous(self):
-        # Test inspect.getsource with a lambda function defined
-        # as argument to another function.
-        self.assertSourceEqual(mod2.anonymous, 55, 55)
-
-class TestBuggyCases(GetSourceBase):
-    fodderFile = mod2
-
-    def test_with_comment(self):
-        self.assertSourceEqual(mod2.with_comment, 58, 59)
-
-    def test_multiline_sig(self):
-        self.assertSourceEqual(mod2.multiline_sig[0], 63, 64)
-
-    def test_nested_class(self):
-        self.assertSourceEqual(mod2.func69().func71, 71, 72)
-
-    def test_one_liner_followed_by_non_name(self):
-        self.assertSourceEqual(mod2.func77, 77, 77)
-
-    def test_one_liner_dedent_non_name(self):
-        self.assertSourceEqual(mod2.cls82.func83, 83, 83)
-
-    def test_with_comment_instead_of_docstring(self):
-        self.assertSourceEqual(mod2.func88, 88, 90)
-
-    def test_method_in_dynamic_class(self):
-        self.assertSourceEqual(mod2.method_in_dynamic_class, 95, 97)
-
-    @unittest.skipIf(
-        not hasattr(unicodedata, '__file__') or
-            unicodedata.__file__[-4:] in (".pyc", ".pyo"),
-        "unicodedata is not an external binary module")
-    def test_findsource_binary(self):
-        self.assertRaises(IOError, inspect.getsource, unicodedata)
-        self.assertRaises(IOError, inspect.findsource, unicodedata)
-
-    def test_findsource_code_in_linecache(self):
-        lines = ["x=1"]
-        co = compile(lines[0], "_dynamically_created_file", "exec")
-        self.assertRaises(IOError, inspect.findsource, co)
-        self.assertRaises(IOError, inspect.getsource, co)
-        linecache.cache[co.co_filename] = (1, None, lines, co.co_filename)
-        self.assertEqual(inspect.findsource(co), (lines,0))
-        self.assertEqual(inspect.getsource(co), lines[0])
-
-# Helper for testing classify_class_attrs.
-def attrs_wo_objs(cls):
-    return [t[:3] for t in inspect.classify_class_attrs(cls)]
-
-class TestClassesAndFunctions(unittest.TestCase):
-    def test_classic_mro(self):
-        # Test classic-class method resolution order.
-        class A:    pass
-        class B(A): pass
-        class C(A): pass
-        class D(B, C): pass
-
-        expected = (D, B, A, C)
-        got = inspect.getmro(D)
-        self.assertEqual(expected, got)
-
-    def test_newstyle_mro(self):
-        # The same w/ new-class MRO.
-        class A(object):    pass
-        class B(A): pass
-        class C(A): pass
-        class D(B, C): pass
-
-        expected = (D, B, C, A, object)
-        got = inspect.getmro(D)
-        self.assertEqual(expected, got)
-
-    def assertArgSpecEquals(self, routine, args_e, varargs_e = None,
-                            varkw_e = None, defaults_e = None,
-                            formatted = None):
-        args, varargs, varkw, defaults = inspect.getargspec(routine)
-        self.assertEqual(args, args_e)
-        self.assertEqual(varargs, varargs_e)
-        self.assertEqual(varkw, varkw_e)
-        self.assertEqual(defaults, defaults_e)
-        if formatted is not None:
-            self.assertEqual(inspect.formatargspec(args, varargs, varkw, defaults),
-                             formatted)
-
-    def test_getargspec(self):
-        self.assertArgSpecEquals(mod.eggs, ['x', 'y'], formatted = '(x, y)')
-
-        self.assertArgSpecEquals(mod.spam,
-                                 ['a', 'b', 'c', 'd', ['e', ['f']]],
-                                 'g', 'h', (3, (4, (5,))),
-                                 '(a, b, c, d=3, (e, (f,))=(4, (5,)), *g, **h)')
-
-    def test_getargspec_method(self):
-        class A(object):
-            def m(self):
-                pass
-        self.assertArgSpecEquals(A.m, ['self'])
-
-    def test_getargspec_sublistofone(self):
-        with check_py3k_warnings(
-                ("tuple parameter unpacking has been removed", SyntaxWarning),
-                ("parenthesized argument names are invalid", SyntaxWarning)):
-            exec 'def sublistOfOne((foo,)): return 1'
-            self.assertArgSpecEquals(sublistOfOne, [['foo']])
-
-            exec 'def fakeSublistOfOne((foo)): return 1'
-            self.assertArgSpecEquals(fakeSublistOfOne, ['foo'])
-
-
-    def _classify_test(self, newstyle):
-        """Helper for testing that classify_class_attrs finds a bunch of
-        different kinds of attributes on a given class.
-        """
-        if newstyle:
-            base = object
-        else:
-            class base:
-                pass
-
-        class A(base):
-            def s(): pass
-            s = staticmethod(s)
-
-            def c(cls): pass
-            c = classmethod(c)
-
-            def getp(self): pass
-            p = property(getp)
-
-            def m(self): pass
-
-            def m1(self): pass
-
-            datablob = '1'
-
-        attrs = attrs_wo_objs(A)
-        self.assertIn(('s', 'static method', A), attrs, 'missing static method')
-        self.assertIn(('c', 'class method', A), attrs, 'missing class method')
-        self.assertIn(('p', 'property', A), attrs, 'missing property')
-        self.assertIn(('m', 'method', A), attrs, 'missing plain method')
-        self.assertIn(('m1', 'method', A), attrs, 'missing plain method')
-        self.assertIn(('datablob', 'data', A), attrs, 'missing data')
-
-        class B(A):
-            def m(self): pass
-
-        attrs = attrs_wo_objs(B)
-        self.assertIn(('s', 'static method', A), attrs, 'missing static method')
-        self.assertIn(('c', 'class method', A), attrs, 'missing class method')
-        self.assertIn(('p', 'property', A), attrs, 'missing property')
-        self.assertIn(('m', 'method', B), attrs, 'missing plain method')
-        self.assertIn(('m1', 'method', A), attrs, 'missing plain method')
-        self.assertIn(('datablob', 'data', A), attrs, 'missing data')
-
-
-        class C(A):
-            def m(self): pass
-            def c(self): pass
-
-        attrs = attrs_wo_objs(C)
-        self.assertIn(('s', 'static method', A), attrs, 'missing static method')
-        self.assertIn(('c', 'method', C), attrs, 'missing plain method')
-        self.assertIn(('p', 'property', A), attrs, 'missing property')
-        self.assertIn(('m', 'method', C), attrs, 'missing plain method')
-        self.assertIn(('m1', 'method', A), attrs, 'missing plain method')
-        self.assertIn(('datablob', 'data', A), attrs, 'missing data')
-
-        class D(B, C):
-            def m1(self): pass
-
-        attrs = attrs_wo_objs(D)
-        self.assertIn(('s', 'static method', A), attrs, 'missing static method')
-        if newstyle:
-            self.assertIn(('c', 'method', C), attrs, 'missing plain method')
-        else:
-            self.assertIn(('c', 'class method', A), attrs, 'missing class method')
-        self.assertIn(('p', 'property', A), attrs, 'missing property')
-        self.assertIn(('m', 'method', B), attrs, 'missing plain method')
-        self.assertIn(('m1', 'method', D), attrs, 'missing plain method')
-        self.assertIn(('datablob', 'data', A), attrs, 'missing data')
-
-
-    def test_classify_oldstyle(self):
-        """classify_class_attrs finds static methods, class methods,
-        properties, normal methods, and data attributes on an old-style
-        class.
-        """
-        self._classify_test(False)
-
-
-    def test_classify_newstyle(self):
-        """Just like test_classify_oldstyle, but for a new-style class.
-        """
-        self._classify_test(True)
-
-
-
-class TestGetcallargsFunctions(unittest.TestCase):
-
-    # tuple parameters are named '.1', '.2', etc.
-    is_tuplename = re.compile(r'^\.\d+$').match
-
-    def assertEqualCallArgs(self, func, call_params_string, locs=None):
-        locs = dict(locs or {}, func=func)
-        r1 = eval('func(%s)' % call_params_string, None, locs)
-        r2 = eval('inspect.getcallargs(func, %s)' % call_params_string, None,
-                  locs)
-        self.assertEqual(r1, r2)
-
-    def assertEqualException(self, func, call_param_string, locs=None):
-        locs = dict(locs or {}, func=func)
-        try:
-            eval('func(%s)' % call_param_string, None, locs)
-        except Exception, ex1:
-            pass
-        else:
-            self.fail('Exception not raised')
-        try:
-            eval('inspect.getcallargs(func, %s)' % call_param_string, None,
-                 locs)
-        except Exception, ex2:
-            pass
-        else:
-            self.fail('Exception not raised')
-        self.assertIs(type(ex1), type(ex2))
-        self.assertEqual(str(ex1), str(ex2))
-
-    def makeCallable(self, signature):
-        """Create a function that returns its locals(), excluding the
-        autogenerated '.1', '.2', etc. tuple param names (if any)."""
-        with check_py3k_warnings(
-            ("tuple parameter unpacking has been removed", SyntaxWarning),
-            quiet=True):
-            code = ("lambda %s: dict(i for i in locals().items() "
-                    "if not is_tuplename(i[0]))")
-            return eval(code % signature, {'is_tuplename' : self.is_tuplename})
-
-    def test_plain(self):
-        f = self.makeCallable('a, b=1')
-        self.assertEqualCallArgs(f, '2')
-        self.assertEqualCallArgs(f, '2, 3')
-        self.assertEqualCallArgs(f, 'a=2')
-        self.assertEqualCallArgs(f, 'b=3, a=2')
-        self.assertEqualCallArgs(f, '2, b=3')
-        # expand *iterable / **mapping
-        self.assertEqualCallArgs(f, '*(2,)')
-        self.assertEqualCallArgs(f, '*[2]')
-        self.assertEqualCallArgs(f, '*(2, 3)')
-        self.assertEqualCallArgs(f, '*[2, 3]')
-        self.assertEqualCallArgs(f, '**{"a":2}')
-        self.assertEqualCallArgs(f, 'b=3, **{"a":2}')
-        self.assertEqualCallArgs(f, '2, **{"b":3}')
-        self.assertEqualCallArgs(f, '**{"b":3, "a":2}')
-        # expand UserList / UserDict
-        self.assertEqualCallArgs(f, '*UserList([2])')
-        self.assertEqualCallArgs(f, '*UserList([2, 3])')
-        self.assertEqualCallArgs(f, '**UserDict(a=2)')
-        self.assertEqualCallArgs(f, '2, **UserDict(b=3)')
-        self.assertEqualCallArgs(f, 'b=2, **UserDict(a=3)')
-        # unicode keyword args
-        self.assertEqualCallArgs(f, '**{u"a":2}')
-        self.assertEqualCallArgs(f, 'b=3, **{u"a":2}')
-        self.assertEqualCallArgs(f, '2, **{u"b":3}')
-        self.assertEqualCallArgs(f, '**{u"b":3, u"a":2}')
-
-    def test_varargs(self):
-        f = self.makeCallable('a, b=1, *c')
-        self.assertEqualCallArgs(f, '2')
-        self.assertEqualCallArgs(f, '2, 3')
-        self.assertEqualCallArgs(f, '2, 3, 4')
-        self.assertEqualCallArgs(f, '*(2,3,4)')
-        self.assertEqualCallArgs(f, '2, *[3,4]')
-        self.assertEqualCallArgs(f, '2, 3, *UserList([4])')
-
-    def test_varkw(self):
-        f = self.makeCallable('a, b=1, **c')
-        self.assertEqualCallArgs(f, 'a=2')
-        self.assertEqualCallArgs(f, '2, b=3, c=4')
-        self.assertEqualCallArgs(f, 'b=3, a=2, c=4')
-        self.assertEqualCallArgs(f, 'c=4, **{"a":2, "b":3}')
-        self.assertEqualCallArgs(f, '2, c=4, **{"b":3}')
-        self.assertEqualCallArgs(f, 'b=2, **{"a":3, "c":4}')
-        self.assertEqualCallArgs(f, '**UserDict(a=2, b=3, c=4)')
-        self.assertEqualCallArgs(f, '2, c=4, **UserDict(b=3)')
-        self.assertEqualCallArgs(f, 'b=2, **UserDict(a=3, c=4)')
-        # unicode keyword args
-        self.assertEqualCallArgs(f, 'c=4, **{u"a":2, u"b":3}')
-        self.assertEqualCallArgs(f, '2, c=4, **{u"b":3}')
-        self.assertEqualCallArgs(f, 'b=2, **{u"a":3, u"c":4}')
-
-    def test_varkw_only(self):
-        # issue11256:
-        f = self.makeCallable('**c')
-        self.assertEqualCallArgs(f, '')
-        self.assertEqualCallArgs(f, 'a=1')
-        self.assertEqualCallArgs(f, 'a=1, b=2')
-        self.assertEqualCallArgs(f, 'c=3, **{"a": 1, "b": 2}')
-        self.assertEqualCallArgs(f, '**UserDict(a=1, b=2)')
-        self.assertEqualCallArgs(f, 'c=3, **UserDict(a=1, b=2)')
-
-    def test_tupleargs(self):
-        f = self.makeCallable('(b,c), (d,(e,f))=(0,[1,2])')
-        self.assertEqualCallArgs(f, '(2,3)')
-        self.assertEqualCallArgs(f, '[2,3]')
-        self.assertEqualCallArgs(f, 'UserList([2,3])')
-        self.assertEqualCallArgs(f, '(2,3), (4,(5,6))')
-        self.assertEqualCallArgs(f, '(2,3), (4,[5,6])')
-        self.assertEqualCallArgs(f, '(2,3), [4,UserList([5,6])]')
-
-    def test_multiple_features(self):
-        f = self.makeCallable('a, b=2, (c,(d,e))=(3,[4,5]), *f, **g')
-        self.assertEqualCallArgs(f, '2, 3, (4,[5,6]), 7')
-        self.assertEqualCallArgs(f, '2, 3, *[(4,[5,6]), 7], x=8')
-        self.assertEqualCallArgs(f, '2, 3, x=8, *[(4,[5,6]), 7]')
-        self.assertEqualCallArgs(f, '2, x=8, *[3, (4,[5,6]), 7], y=9')
-        self.assertEqualCallArgs(f, 'x=8, *[2, 3, (4,[5,6])], y=9')
-        self.assertEqualCallArgs(f, 'x=8, *UserList([2, 3, (4,[5,6])]), '
-                                 '**{"y":9, "z":10}')
-        self.assertEqualCallArgs(f, '2, x=8, *UserList([3, (4,[5,6])]), '
-                                 '**UserDict(y=9, z=10)')
-
-    def test_errors(self):
-        f0 = self.makeCallable('')
-        f1 = self.makeCallable('a, b')
-        f2 = self.makeCallable('a, b=1')
-        # f0 takes no arguments
-        self.assertEqualException(f0, '1')
-        self.assertEqualException(f0, 'x=1')
-        self.assertEqualException(f0, '1,x=1')
-        # f1 takes exactly 2 arguments
-        self.assertEqualException(f1, '')
-        self.assertEqualException(f1, '1')
-        self.assertEqualException(f1, 'a=2')
-        self.assertEqualException(f1, 'b=3')
-        # f2 takes at least 1 argument
-        self.assertEqualException(f2, '')
-        self.assertEqualException(f2, 'b=3')
-        for f in f1, f2:
-            # f1/f2 takes exactly/at most 2 arguments
-            self.assertEqualException(f, '2, 3, 4')
-            self.assertEqualException(f, '1, 2, 3, a=1')
-            self.assertEqualException(f, '2, 3, 4, c=5')
-            self.assertEqualException(f, '2, 3, 4, a=1, c=5')
-            # f got an unexpected keyword argument
-            self.assertEqualException(f, 'c=2')
-            self.assertEqualException(f, '2, c=3')
-            self.assertEqualException(f, '2, 3, c=4')
-            self.assertEqualException(f, '2, c=4, b=3')
-            self.assertEqualException(f, '**{u"\u03c0\u03b9": 4}')
-            # f got multiple values for keyword argument
-            self.assertEqualException(f, '1, a=2')
-            self.assertEqualException(f, '1, **{"a":2}')
-            self.assertEqualException(f, '1, 2, b=3')
-            # XXX: Python inconsistency
-            # - for functions and bound methods: unexpected keyword 'c'
-            # - for unbound methods: multiple values for keyword 'a'
-            #self.assertEqualException(f, '1, c=3, a=2')
-        f = self.makeCallable('(a,b)=(0,1)')
-        self.assertEqualException(f, '1')
-        self.assertEqualException(f, '[1]')
-        self.assertEqualException(f, '(1,2,3)')
-        # issue11256:
-        f3 = self.makeCallable('**c')
-        self.assertEqualException(f3, '1, 2')
-        self.assertEqualException(f3, '1, 2, a=1, b=2')
-
-class TestGetcallargsMethods(TestGetcallargsFunctions):
-
-    def setUp(self):
-        class Foo(object):
-            pass
-        self.cls = Foo
-        self.inst = Foo()
-
-    def makeCallable(self, signature):
-        assert 'self' not in signature
-        mk = super(TestGetcallargsMethods, self).makeCallable
-        self.cls.method = mk('self, ' + signature)
-        return self.inst.method
-
-class TestGetcallargsUnboundMethods(TestGetcallargsMethods):
-
-    def makeCallable(self, signature):
-        super(TestGetcallargsUnboundMethods, self).makeCallable(signature)
-        return self.cls.method
-
-    def assertEqualCallArgs(self, func, call_params_string, locs=None):
-        return super(TestGetcallargsUnboundMethods, self).assertEqualCallArgs(
-            *self._getAssertEqualParams(func, call_params_string, locs))
-
-    def assertEqualException(self, func, call_params_string, locs=None):
-        return super(TestGetcallargsUnboundMethods, self).assertEqualException(
-            *self._getAssertEqualParams(func, call_params_string, locs))
-
-    def _getAssertEqualParams(self, func, call_params_string, locs=None):
-        assert 'inst' not in call_params_string
-        locs = dict(locs or {}, inst=self.inst)
-        return (func, 'inst,' + call_params_string, locs)
-
-def test_main():
-    run_unittest(
-        TestDecorators, TestRetrievingSourceCode, TestOneliners, TestBuggyCases,
-        TestInterpreterStack, TestClassesAndFunctions, TestPredicates,
-        TestGetcallargsFunctions, TestGetcallargsMethods,
-        TestGetcallargsUnboundMethods)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_int.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_int.py
deleted file mode 100644
index 64177b3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_int.py
+++ /dev/null
@@ -1,406 +0,0 @@
-import sys
-
-import unittest
-from test.test_support import run_unittest, have_unicode
-import math
-
-L = [
-        ('0', 0),
-        ('1', 1),
-        ('9', 9),
-        ('10', 10),
-        ('99', 99),
-        ('100', 100),
-        ('314', 314),
-        (' 314', 314),
-        ('314 ', 314),
-        ('  \t\t  314  \t\t  ', 314),
-        (repr(sys.maxint), sys.maxint),
-        ('  1x', ValueError),
-        ('  1  ', 1),
-        ('  1\02  ', ValueError),
-        ('', ValueError),
-        (' ', ValueError),
-        ('  \t\t  ', ValueError)
-]
-if have_unicode:
-    L += [
-        (unicode('0'), 0),
-        (unicode('1'), 1),
-        (unicode('9'), 9),
-        (unicode('10'), 10),
-        (unicode('99'), 99),
-        (unicode('100'), 100),
-        (unicode('314'), 314),
-        (unicode(' 314'), 314),
-        (unicode('\u0663\u0661\u0664 ','raw-unicode-escape'), 314),
-        (unicode('  \t\t  314  \t\t  '), 314),
-        (unicode('  1x'), ValueError),
-        (unicode('  1  '), 1),
-        (unicode('  1\02  '), ValueError),
-        (unicode(''), ValueError),
-        (unicode(' '), ValueError),
-        (unicode('  \t\t  '), ValueError),
-        (unichr(0x200), ValueError),
-]
-
-class IntTestCases(unittest.TestCase):
-
-    def test_basic(self):
-        self.assertEqual(int(314), 314)
-        self.assertEqual(int(3.14), 3)
-        self.assertEqual(int(314L), 314)
-        # Check that conversion from float truncates towards zero
-        self.assertEqual(int(-3.14), -3)
-        self.assertEqual(int(3.9), 3)
-        self.assertEqual(int(-3.9), -3)
-        self.assertEqual(int(3.5), 3)
-        self.assertEqual(int(-3.5), -3)
-        # Different base:
-        self.assertEqual(int("10",16), 16L)
-        if have_unicode:
-            self.assertEqual(int(unicode("10"),16), 16L)
-        # Test conversion from strings and various anomalies
-        for s, v in L:
-            for sign in "", "+", "-":
-                for prefix in "", " ", "\t", "  \t\t  ":
-                    ss = prefix + sign + s
-                    vv = v
-                    if sign == "-" and v is not ValueError:
-                        vv = -v
-                    try:
-                        self.assertEqual(int(ss), vv)
-                    except v:
-                        pass
-
-        s = repr(-1-sys.maxint)
-        x = int(s)
-        self.assertEqual(x+1, -sys.maxint)
-        self.assertIsInstance(x, int)
-        # should return long
-        self.assertEqual(int(s[1:]), sys.maxint+1)
-
-        # should return long
-        x = int(1e100)
-        self.assertIsInstance(x, long)
-        x = int(-1e100)
-        self.assertIsInstance(x, long)
-
-
-        # SF bug 434186:  0x80000000/2 != 0x80000000>>1.
-        # Worked by accident in Windows release build, but failed in debug build.
-        # Failed in all Linux builds.
-        x = -1-sys.maxint
-        self.assertEqual(x >> 1, x//2)
-
-        self.assertRaises(ValueError, int, '123\0')
-        self.assertRaises(ValueError, int, '53', 40)
-
-        # SF bug 1545497: embedded NULs were not detected with
-        # explicit base
-        self.assertRaises(ValueError, int, '123\0', 10)
-        self.assertRaises(ValueError, int, '123\x00 245', 20)
-
-        x = int('1' * 600)
-        self.assertIsInstance(x, long)
-
-        if have_unicode:
-            x = int(unichr(0x661) * 600)
-            self.assertIsInstance(x, long)
-
-        self.assertRaises(TypeError, int, 1, 12)
-
-        self.assertEqual(int('0123', 0), 83)
-        self.assertEqual(int('0x123', 16), 291)
-
-        # Bug 1679: "0x" is not a valid hex literal
-        self.assertRaises(ValueError, int, "0x", 16)
-        self.assertRaises(ValueError, int, "0x", 0)
-
-        self.assertRaises(ValueError, int, "0o", 8)
-        self.assertRaises(ValueError, int, "0o", 0)
-
-        self.assertRaises(ValueError, int, "0b", 2)
-        self.assertRaises(ValueError, int, "0b", 0)
-
-
-        # SF bug 1334662: int(string, base) wrong answers
-        # Various representations of 2**32 evaluated to 0
-        # rather than 2**32 in previous versions
-
-        self.assertEqual(int('100000000000000000000000000000000', 2), 4294967296L)
-        self.assertEqual(int('102002022201221111211', 3), 4294967296L)
-        self.assertEqual(int('10000000000000000', 4), 4294967296L)
-        self.assertEqual(int('32244002423141', 5), 4294967296L)
-        self.assertEqual(int('1550104015504', 6), 4294967296L)
-        self.assertEqual(int('211301422354', 7), 4294967296L)
-        self.assertEqual(int('40000000000', 8), 4294967296L)
-        self.assertEqual(int('12068657454', 9), 4294967296L)
-        self.assertEqual(int('4294967296', 10), 4294967296L)
-        self.assertEqual(int('1904440554', 11), 4294967296L)
-        self.assertEqual(int('9ba461594', 12), 4294967296L)
-        self.assertEqual(int('535a79889', 13), 4294967296L)
-        self.assertEqual(int('2ca5b7464', 14), 4294967296L)
-        self.assertEqual(int('1a20dcd81', 15), 4294967296L)
-        self.assertEqual(int('100000000', 16), 4294967296L)
-        self.assertEqual(int('a7ffda91', 17), 4294967296L)
-        self.assertEqual(int('704he7g4', 18), 4294967296L)
-        self.assertEqual(int('4f5aff66', 19), 4294967296L)
-        self.assertEqual(int('3723ai4g', 20), 4294967296L)
-        self.assertEqual(int('281d55i4', 21), 4294967296L)
-        self.assertEqual(int('1fj8b184', 22), 4294967296L)
-        self.assertEqual(int('1606k7ic', 23), 4294967296L)
-        self.assertEqual(int('mb994ag', 24), 4294967296L)
-        self.assertEqual(int('hek2mgl', 25), 4294967296L)
-        self.assertEqual(int('dnchbnm', 26), 4294967296L)
-        self.assertEqual(int('b28jpdm', 27), 4294967296L)
-        self.assertEqual(int('8pfgih4', 28), 4294967296L)
-        self.assertEqual(int('76beigg', 29), 4294967296L)
-        self.assertEqual(int('5qmcpqg', 30), 4294967296L)
-        self.assertEqual(int('4q0jto4', 31), 4294967296L)
-        self.assertEqual(int('4000000', 32), 4294967296L)
-        self.assertEqual(int('3aokq94', 33), 4294967296L)
-        self.assertEqual(int('2qhxjli', 34), 4294967296L)
-        self.assertEqual(int('2br45qb', 35), 4294967296L)
-        self.assertEqual(int('1z141z4', 36), 4294967296L)
-
-        # tests with base 0
-        # this fails on 3.0, but in 2.x the old octal syntax is allowed
-        self.assertEqual(int(' 0123  ', 0), 83)
-        self.assertEqual(int(' 0123  ', 0), 83)
-        self.assertEqual(int('000', 0), 0)
-        self.assertEqual(int('0o123', 0), 83)
-        self.assertEqual(int('0x123', 0), 291)
-        self.assertEqual(int('0b100', 0), 4)
-        self.assertEqual(int(' 0O123   ', 0), 83)
-        self.assertEqual(int(' 0X123  ', 0), 291)
-        self.assertEqual(int(' 0B100 ', 0), 4)
-        self.assertEqual(int('0', 0), 0)
-        self.assertEqual(int('+0', 0), 0)
-        self.assertEqual(int('-0', 0), 0)
-        self.assertEqual(int('00', 0), 0)
-        self.assertRaises(ValueError, int, '08', 0)
-        self.assertRaises(ValueError, int, '-012395', 0)
-
-        # without base still base 10
-        self.assertEqual(int('0123'), 123)
-        self.assertEqual(int('0123', 10), 123)
-
-        # tests with prefix and base != 0
-        self.assertEqual(int('0x123', 16), 291)
-        self.assertEqual(int('0o123', 8), 83)
-        self.assertEqual(int('0b100', 2), 4)
-        self.assertEqual(int('0X123', 16), 291)
-        self.assertEqual(int('0O123', 8), 83)
-        self.assertEqual(int('0B100', 2), 4)
-
-        # the code has special checks for the first character after the
-        #  type prefix
-        self.assertRaises(ValueError, int, '0b2', 2)
-        self.assertRaises(ValueError, int, '0b02', 2)
-        self.assertRaises(ValueError, int, '0B2', 2)
-        self.assertRaises(ValueError, int, '0B02', 2)
-        self.assertRaises(ValueError, int, '0o8', 8)
-        self.assertRaises(ValueError, int, '0o08', 8)
-        self.assertRaises(ValueError, int, '0O8', 8)
-        self.assertRaises(ValueError, int, '0O08', 8)
-        self.assertRaises(ValueError, int, '0xg', 16)
-        self.assertRaises(ValueError, int, '0x0g', 16)
-        self.assertRaises(ValueError, int, '0Xg', 16)
-        self.assertRaises(ValueError, int, '0X0g', 16)
-
-        # SF bug 1334662: int(string, base) wrong answers
-        # Checks for proper evaluation of 2**32 + 1
-        self.assertEqual(int('100000000000000000000000000000001', 2), 4294967297L)
-        self.assertEqual(int('102002022201221111212', 3), 4294967297L)
-        self.assertEqual(int('10000000000000001', 4), 4294967297L)
-        self.assertEqual(int('32244002423142', 5), 4294967297L)
-        self.assertEqual(int('1550104015505', 6), 4294967297L)
-        self.assertEqual(int('211301422355', 7), 4294967297L)
-        self.assertEqual(int('40000000001', 8), 4294967297L)
-        self.assertEqual(int('12068657455', 9), 4294967297L)
-        self.assertEqual(int('4294967297', 10), 4294967297L)
-        self.assertEqual(int('1904440555', 11), 4294967297L)
-        self.assertEqual(int('9ba461595', 12), 4294967297L)
-        self.assertEqual(int('535a7988a', 13), 4294967297L)
-        self.assertEqual(int('2ca5b7465', 14), 4294967297L)
-        self.assertEqual(int('1a20dcd82', 15), 4294967297L)
-        self.assertEqual(int('100000001', 16), 4294967297L)
-        self.assertEqual(int('a7ffda92', 17), 4294967297L)
-        self.assertEqual(int('704he7g5', 18), 4294967297L)
-        self.assertEqual(int('4f5aff67', 19), 4294967297L)
-        self.assertEqual(int('3723ai4h', 20), 4294967297L)
-        self.assertEqual(int('281d55i5', 21), 4294967297L)
-        self.assertEqual(int('1fj8b185', 22), 4294967297L)
-        self.assertEqual(int('1606k7id', 23), 4294967297L)
-        self.assertEqual(int('mb994ah', 24), 4294967297L)
-        self.assertEqual(int('hek2mgm', 25), 4294967297L)
-        self.assertEqual(int('dnchbnn', 26), 4294967297L)
-        self.assertEqual(int('b28jpdn', 27), 4294967297L)
-        self.assertEqual(int('8pfgih5', 28), 4294967297L)
-        self.assertEqual(int('76beigh', 29), 4294967297L)
-        self.assertEqual(int('5qmcpqh', 30), 4294967297L)
-        self.assertEqual(int('4q0jto5', 31), 4294967297L)
-        self.assertEqual(int('4000001', 32), 4294967297L)
-        self.assertEqual(int('3aokq95', 33), 4294967297L)
-        self.assertEqual(int('2qhxjlj', 34), 4294967297L)
-        self.assertEqual(int('2br45qc', 35), 4294967297L)
-        self.assertEqual(int('1z141z5', 36), 4294967297L)
-
-    def test_bit_length(self):
-        tiny = 1e-10
-        for x in xrange(-65000, 65000):
-            k = x.bit_length()
-            # Check equivalence with Python version
-            self.assertEqual(k, len(bin(x).lstrip('-0b')))
-            # Behaviour as specified in the docs
-            if x != 0:
-                self.assertTrue(2**(k-1) <= abs(x) < 2**k)
-            else:
-                self.assertEqual(k, 0)
-            # Alternative definition: x.bit_length() == 1 + floor(log_2(x))
-            if x != 0:
-                # When x is an exact power of 2, numeric errors can
-                # cause floor(log(x)/log(2)) to be one too small; for
-                # small x this can be fixed by adding a small quantity
-                # to the quotient before taking the floor.
-                self.assertEqual(k, 1 + math.floor(
-                        math.log(abs(x))/math.log(2) + tiny))
-
-        self.assertEqual((0).bit_length(), 0)
-        self.assertEqual((1).bit_length(), 1)
-        self.assertEqual((-1).bit_length(), 1)
-        self.assertEqual((2).bit_length(), 2)
-        self.assertEqual((-2).bit_length(), 2)
-        for i in [2, 3, 15, 16, 17, 31, 32, 33, 63, 64]:
-            a = 2**i
-            self.assertEqual((a-1).bit_length(), i)
-            self.assertEqual((1-a).bit_length(), i)
-            self.assertEqual((a).bit_length(), i+1)
-            self.assertEqual((-a).bit_length(), i+1)
-            self.assertEqual((a+1).bit_length(), i+1)
-            self.assertEqual((-a-1).bit_length(), i+1)
-
-    @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"),
-                         "test requires IEEE 754 doubles")
-    def test_float_conversion(self):
-        # values exactly representable as floats
-        exact_values = [-2, -1, 0, 1, 2, 2**52, 2**53-1, 2**53, 2**53+2,
-                         2**53+4, 2**54-4, 2**54-2, 2**63, -2**63, 2**64,
-                         -2**64, 10**20, 10**21, 10**22]
-        for value in exact_values:
-            self.assertEqual(int(float(int(value))), value)
-
-        # test round-half-to-even
-        self.assertEqual(int(float(2**53+1)), 2**53)
-        self.assertEqual(int(float(2**53+2)), 2**53+2)
-        self.assertEqual(int(float(2**53+3)), 2**53+4)
-        self.assertEqual(int(float(2**53+5)), 2**53+4)
-        self.assertEqual(int(float(2**53+6)), 2**53+6)
-        self.assertEqual(int(float(2**53+7)), 2**53+8)
-
-        self.assertEqual(int(float(-2**53-1)), -2**53)
-        self.assertEqual(int(float(-2**53-2)), -2**53-2)
-        self.assertEqual(int(float(-2**53-3)), -2**53-4)
-        self.assertEqual(int(float(-2**53-5)), -2**53-4)
-        self.assertEqual(int(float(-2**53-6)), -2**53-6)
-        self.assertEqual(int(float(-2**53-7)), -2**53-8)
-
-        self.assertEqual(int(float(2**54-2)), 2**54-2)
-        self.assertEqual(int(float(2**54-1)), 2**54)
-        self.assertEqual(int(float(2**54+2)), 2**54)
-        self.assertEqual(int(float(2**54+3)), 2**54+4)
-        self.assertEqual(int(float(2**54+5)), 2**54+4)
-        self.assertEqual(int(float(2**54+6)), 2**54+8)
-        self.assertEqual(int(float(2**54+10)), 2**54+8)
-        self.assertEqual(int(float(2**54+11)), 2**54+12)
-
-    def test_intconversion(self):
-        # Test __int__()
-        class ClassicMissingMethods:
-            pass
-        self.assertRaises(AttributeError, int, ClassicMissingMethods())
-
-        class MissingMethods(object):
-            pass
-        self.assertRaises(TypeError, int, MissingMethods())
-
-        class Foo0:
-            def __int__(self):
-                return 42
-
-        class Foo1(object):
-            def __int__(self):
-                return 42
-
-        class Foo2(int):
-            def __int__(self):
-                return 42
-
-        class Foo3(int):
-            def __int__(self):
-                return self
-
-        class Foo4(int):
-            def __int__(self):
-                return 42L
-
-        class Foo5(int):
-            def __int__(self):
-                return 42.
-
-        self.assertEqual(int(Foo0()), 42)
-        self.assertEqual(int(Foo1()), 42)
-        self.assertEqual(int(Foo2()), 42)
-        self.assertEqual(int(Foo3()), 0)
-        self.assertEqual(int(Foo4()), 42L)
-        self.assertRaises(TypeError, int, Foo5())
-
-        class Classic:
-            pass
-        for base in (object, Classic):
-            class IntOverridesTrunc(base):
-                def __int__(self):
-                    return 42
-                def __trunc__(self):
-                    return -12
-            self.assertEqual(int(IntOverridesTrunc()), 42)
-
-            class JustTrunc(base):
-                def __trunc__(self):
-                    return 42
-            self.assertEqual(int(JustTrunc()), 42)
-
-            for trunc_result_base in (object, Classic):
-                class Integral(trunc_result_base):
-                    def __int__(self):
-                        return 42
-
-                class TruncReturnsNonInt(base):
-                    def __trunc__(self):
-                        return Integral()
-                self.assertEqual(int(TruncReturnsNonInt()), 42)
-
-                class NonIntegral(trunc_result_base):
-                    def __trunc__(self):
-                        # Check that we avoid infinite recursion.
-                        return NonIntegral()
-
-                class TruncReturnsNonIntegral(base):
-                    def __trunc__(self):
-                        return NonIntegral()
-                try:
-                    int(TruncReturnsNonIntegral())
-                except TypeError as e:
-                    self.assertEqual(str(e),
-                                      "__trunc__ returned non-Integral"
-                                      " (type NonIntegral)")
-                else:
-                    self.fail("Failed to raise TypeError with %s" %
-                              ((base, trunc_result_base),))
-
-def test_main():
-    run_unittest(IntTestCases)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_int_literal.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_int_literal.py
deleted file mode 100644
index eafe953..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_int_literal.py
+++ /dev/null
@@ -1,188 +0,0 @@
-"""Test correct treatment of hex/oct constants.
-
-This is complex because of changes due to PEP 237.
-"""
-
-import unittest
-from test import test_support
-
-
-class TestHexOctBin(unittest.TestCase):
-
-    def test_hex_baseline(self):
-        # A few upper/lowercase tests
-        self.assertEqual(0x0, 0X0)
-        self.assertEqual(0x1, 0X1)
-        self.assertEqual(0x123456789abcdef, 0X123456789abcdef)
-        # Baseline tests
-        self.assertEqual(0x0, 0)
-        self.assertEqual(0x10, 16)
-        self.assertEqual(0x7fffffff, 2147483647)
-        self.assertEqual(0x7fffffffffffffff, 9223372036854775807)
-        # Ditto with a minus sign and parentheses
-        self.assertEqual(-(0x0), 0)
-        self.assertEqual(-(0x10), -16)
-        self.assertEqual(-(0x7fffffff), -2147483647)
-        self.assertEqual(-(0x7fffffffffffffff), -9223372036854775807)
-        # Ditto with a minus sign and NO parentheses
-        self.assertEqual(-0x0, 0)
-        self.assertEqual(-0x10, -16)
-        self.assertEqual(-0x7fffffff, -2147483647)
-        self.assertEqual(-0x7fffffffffffffff, -9223372036854775807)
-
-    def test_hex_unsigned(self):
-        # Positive constants
-        self.assertEqual(0x80000000, 2147483648L)
-        self.assertEqual(0xffffffff, 4294967295L)
-        # Ditto with a minus sign and parentheses
-        self.assertEqual(-(0x80000000), -2147483648L)
-        self.assertEqual(-(0xffffffff), -4294967295L)
-        # Ditto with a minus sign and NO parentheses
-        # This failed in Python 2.2 through 2.2.2 and in 2.3a1
-        self.assertEqual(-0x80000000, -2147483648L)
-        self.assertEqual(-0xffffffff, -4294967295L)
-
-        # Positive constants
-        self.assertEqual(0x8000000000000000, 9223372036854775808L)
-        self.assertEqual(0xffffffffffffffff, 18446744073709551615L)
-        # Ditto with a minus sign and parentheses
-        self.assertEqual(-(0x8000000000000000), -9223372036854775808L)
-        self.assertEqual(-(0xffffffffffffffff), -18446744073709551615L)
-        # Ditto with a minus sign and NO parentheses
-        # This failed in Python 2.2 through 2.2.2 and in 2.3a1
-        self.assertEqual(-0x8000000000000000, -9223372036854775808L)
-        self.assertEqual(-0xffffffffffffffff, -18446744073709551615L)
-
-    def test_oct_baseline(self):
-        # Baseline tests
-        self.assertEqual(00, 0)
-        self.assertEqual(020, 16)
-        self.assertEqual(017777777777, 2147483647)
-        self.assertEqual(0777777777777777777777, 9223372036854775807)
-        # Ditto with a minus sign and parentheses
-        self.assertEqual(-(00), 0)
-        self.assertEqual(-(020), -16)
-        self.assertEqual(-(017777777777), -2147483647)
-        self.assertEqual(-(0777777777777777777777), -9223372036854775807)
-        # Ditto with a minus sign and NO parentheses
-        self.assertEqual(-00, 0)
-        self.assertEqual(-020, -16)
-        self.assertEqual(-017777777777, -2147483647)
-        self.assertEqual(-0777777777777777777777, -9223372036854775807)
-
-    def test_oct_baseline_new(self):
-        # A few upper/lowercase tests
-        self.assertEqual(0o0, 0O0)
-        self.assertEqual(0o1, 0O1)
-        self.assertEqual(0o1234567, 0O1234567)
-        # Baseline tests
-        self.assertEqual(0o0, 0)
-        self.assertEqual(0o20, 16)
-        self.assertEqual(0o17777777777, 2147483647)
-        self.assertEqual(0o777777777777777777777, 9223372036854775807)
-        # Ditto with a minus sign and parentheses
-        self.assertEqual(-(0o0), 0)
-        self.assertEqual(-(0o20), -16)
-        self.assertEqual(-(0o17777777777), -2147483647)
-        self.assertEqual(-(0o777777777777777777777), -9223372036854775807)
-        # Ditto with a minus sign and NO parentheses
-        self.assertEqual(-0o0, 0)
-        self.assertEqual(-0o20, -16)
-        self.assertEqual(-0o17777777777, -2147483647)
-        self.assertEqual(-0o777777777777777777777, -9223372036854775807)
-
-    def test_oct_unsigned(self):
-        # Positive constants
-        self.assertEqual(020000000000, 2147483648L)
-        self.assertEqual(037777777777, 4294967295L)
-        # Ditto with a minus sign and parentheses
-        self.assertEqual(-(020000000000), -2147483648L)
-        self.assertEqual(-(037777777777), -4294967295L)
-        # Ditto with a minus sign and NO parentheses
-        # This failed in Python 2.2 through 2.2.2 and in 2.3a1
-        self.assertEqual(-020000000000, -2147483648L)
-        self.assertEqual(-037777777777, -4294967295L)
-
-        # Positive constants
-        self.assertEqual(01000000000000000000000, 9223372036854775808L)
-        self.assertEqual(01777777777777777777777, 18446744073709551615L)
-        # Ditto with a minus sign and parentheses
-        self.assertEqual(-(01000000000000000000000), -9223372036854775808L)
-        self.assertEqual(-(01777777777777777777777), -18446744073709551615L)
-        # Ditto with a minus sign and NO parentheses
-        # This failed in Python 2.2 through 2.2.2 and in 2.3a1
-        self.assertEqual(-01000000000000000000000, -9223372036854775808L)
-        self.assertEqual(-01777777777777777777777, -18446744073709551615L)
-
-    def test_oct_unsigned_new(self):
-        # Positive constants
-        self.assertEqual(0o20000000000, 2147483648L)
-        self.assertEqual(0o37777777777, 4294967295L)
-        # Ditto with a minus sign and parentheses
-        self.assertEqual(-(0o20000000000), -2147483648L)
-        self.assertEqual(-(0o37777777777), -4294967295L)
-        # Ditto with a minus sign and NO parentheses
-        # This failed in Python 2.2 through 2.2.2 and in 2.3a1
-        self.assertEqual(-0o20000000000, -2147483648L)
-        self.assertEqual(-0o37777777777, -4294967295L)
-
-        # Positive constants
-        self.assertEqual(0o1000000000000000000000, 9223372036854775808L)
-        self.assertEqual(0o1777777777777777777777, 18446744073709551615L)
-        # Ditto with a minus sign and parentheses
-        self.assertEqual(-(0o1000000000000000000000), -9223372036854775808L)
-        self.assertEqual(-(0o1777777777777777777777), -18446744073709551615L)
-        # Ditto with a minus sign and NO parentheses
-        # This failed in Python 2.2 through 2.2.2 and in 2.3a1
-        self.assertEqual(-0o1000000000000000000000, -9223372036854775808L)
-        self.assertEqual(-0o1777777777777777777777, -18446744073709551615L)
-
-    def test_bin_baseline(self):
-        # A few upper/lowercase tests
-        self.assertEqual(0b0, 0B0)
-        self.assertEqual(0b1, 0B1)
-        self.assertEqual(0b10101010101, 0B10101010101)
-        # Baseline tests
-        self.assertEqual(0b0, 0)
-        self.assertEqual(0b10000, 16)
-        self.assertEqual(0b1111111111111111111111111111111, 2147483647)
-        self.assertEqual(0b111111111111111111111111111111111111111111111111111111111111111, 9223372036854775807)
-        # Ditto with a minus sign and parentheses
-        self.assertEqual(-(0b0), 0)
-        self.assertEqual(-(0b10000), -16)
-        self.assertEqual(-(0b1111111111111111111111111111111), -2147483647)
-        self.assertEqual(-(0b111111111111111111111111111111111111111111111111111111111111111), -9223372036854775807)
-        # Ditto with a minus sign and NO parentheses
-        self.assertEqual(-0b0, 0)
-        self.assertEqual(-0b10000, -16)
-        self.assertEqual(-0b1111111111111111111111111111111, -2147483647)
-        self.assertEqual(-0b111111111111111111111111111111111111111111111111111111111111111, -9223372036854775807)
-
-    def test_bin_unsigned(self):
-        # Positive constants
-        self.assertEqual(0b10000000000000000000000000000000, 2147483648L)
-        self.assertEqual(0b11111111111111111111111111111111, 4294967295L)
-        # Ditto with a minus sign and parentheses
-        self.assertEqual(-(0b10000000000000000000000000000000), -2147483648L)
-        self.assertEqual(-(0b11111111111111111111111111111111), -4294967295L)
-        # Ditto with a minus sign and NO parentheses
-        # This failed in Python 2.2 through 2.2.2 and in 2.3a1
-        self.assertEqual(-0b10000000000000000000000000000000, -2147483648L)
-        self.assertEqual(-0b11111111111111111111111111111111, -4294967295L)
-
-        # Positive constants
-        self.assertEqual(0b1000000000000000000000000000000000000000000000000000000000000000, 9223372036854775808L)
-        self.assertEqual(0b1111111111111111111111111111111111111111111111111111111111111111, 18446744073709551615L)
-        # Ditto with a minus sign and parentheses
-        self.assertEqual(-(0b1000000000000000000000000000000000000000000000000000000000000000), -9223372036854775808L)
-        self.assertEqual(-(0b1111111111111111111111111111111111111111111111111111111111111111), -18446744073709551615L)
-        # Ditto with a minus sign and NO parentheses
-        # This failed in Python 2.2 through 2.2.2 and in 2.3a1
-        self.assertEqual(-0b1000000000000000000000000000000000000000000000000000000000000000, -9223372036854775808L)
-        self.assertEqual(-0b1111111111111111111111111111111111111111111111111111111111111111, -18446744073709551615L)
-
-def test_main():
-    test_support.run_unittest(TestHexOctBin)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_io.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_io.py
deleted file mode 100644
index ab6cd5f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_io.py
+++ /dev/null
@@ -1,2782 +0,0 @@
-"""Unit tests for the io module."""
-
-# Tests of io are scattered over the test suite:
-# * test_bufio - tests file buffering
-# * test_memoryio - tests BytesIO and StringIO
-# * test_fileio - tests FileIO
-# * test_file - tests the file interface
-# * test_io - tests everything else in the io module
-# * test_univnewlines - tests universal newline support
-# * test_largefile - tests operations on a file greater than 2**32 bytes
-#     (only enabled with -ulargefile)
-
-################################################################################
-# ATTENTION TEST WRITERS!!!
-################################################################################
-# When writing tests for io, it's important to test both the C and Python
-# implementations. This is usually done by writing a base test that refers to
-# the type it is testing as a attribute. Then it provides custom subclasses to
-# test both implementations. This file has lots of examples.
-################################################################################
-
-from __future__ import print_function
-from __future__ import unicode_literals
-
-import os
-import sys
-import time
-import array
-import random
-import unittest
-import weakref
-import abc
-import signal
-import errno
-from itertools import cycle, count
-from collections import deque
-from test import test_support as support
-
-import codecs
-import io  # C implementation of io
-import _pyio as pyio # Python implementation of io
-try:
-    import threading
-except ImportError:
-    threading = None
-
-__metaclass__ = type
-bytes = support.py3k_bytes
-
-def _default_chunk_size():
-    """Get the default TextIOWrapper chunk size"""
-    with io.open(__file__, "r", encoding="latin1") as f:
-        return f._CHUNK_SIZE
-
-
-class MockRawIOWithoutRead:
-    """A RawIO implementation without read(), so as to exercise the default
-    RawIO.read() which calls readinto()."""
-
-    def __init__(self, read_stack=()):
-        self._read_stack = list(read_stack)
-        self._write_stack = []
-        self._reads = 0
-        self._extraneous_reads = 0
-
-    def write(self, b):
-        self._write_stack.append(bytes(b))
-        return len(b)
-
-    def writable(self):
-        return True
-
-    def fileno(self):
-        return 42
-
-    def readable(self):
-        return True
-
-    def seekable(self):
-        return True
-
-    def seek(self, pos, whence):
-        return 0   # wrong but we gotta return something
-
-    def tell(self):
-        return 0   # same comment as above
-
-    def readinto(self, buf):
-        self._reads += 1
-        max_len = len(buf)
-        try:
-            data = self._read_stack[0]
-        except IndexError:
-            self._extraneous_reads += 1
-            return 0
-        if data is None:
-            del self._read_stack[0]
-            return None
-        n = len(data)
-        if len(data) <= max_len:
-            del self._read_stack[0]
-            buf[:n] = data
-            return n
-        else:
-            buf[:] = data[:max_len]
-            self._read_stack[0] = data[max_len:]
-            return max_len
-
-    def truncate(self, pos=None):
-        return pos
-
-class CMockRawIOWithoutRead(MockRawIOWithoutRead, io.RawIOBase):
-    pass
-
-class PyMockRawIOWithoutRead(MockRawIOWithoutRead, pyio.RawIOBase):
-    pass
-
-
-class MockRawIO(MockRawIOWithoutRead):
-
-    def read(self, n=None):
-        self._reads += 1
-        try:
-            return self._read_stack.pop(0)
-        except:
-            self._extraneous_reads += 1
-            return b""
-
-class CMockRawIO(MockRawIO, io.RawIOBase):
-    pass
-
-class PyMockRawIO(MockRawIO, pyio.RawIOBase):
-    pass
-
-
-class MisbehavedRawIO(MockRawIO):
-    def write(self, b):
-        return MockRawIO.write(self, b) * 2
-
-    def read(self, n=None):
-        return MockRawIO.read(self, n) * 2
-
-    def seek(self, pos, whence):
-        return -123
-
-    def tell(self):
-        return -456
-
-    def readinto(self, buf):
-        MockRawIO.readinto(self, buf)
-        return len(buf) * 5
-
-class CMisbehavedRawIO(MisbehavedRawIO, io.RawIOBase):
-    pass
-
-class PyMisbehavedRawIO(MisbehavedRawIO, pyio.RawIOBase):
-    pass
-
-
-class CloseFailureIO(MockRawIO):
-    closed = 0
-
-    def close(self):
-        if not self.closed:
-            self.closed = 1
-            raise IOError
-
-class CCloseFailureIO(CloseFailureIO, io.RawIOBase):
-    pass
-
-class PyCloseFailureIO(CloseFailureIO, pyio.RawIOBase):
-    pass
-
-
-class MockFileIO:
-
-    def __init__(self, data):
-        self.read_history = []
-        super(MockFileIO, self).__init__(data)
-
-    def read(self, n=None):
-        res = super(MockFileIO, self).read(n)
-        self.read_history.append(None if res is None else len(res))
-        return res
-
-    def readinto(self, b):
-        res = super(MockFileIO, self).readinto(b)
-        self.read_history.append(res)
-        return res
-
-class CMockFileIO(MockFileIO, io.BytesIO):
-    pass
-
-class PyMockFileIO(MockFileIO, pyio.BytesIO):
-    pass
-
-
-class MockNonBlockWriterIO:
-
-    def __init__(self):
-        self._write_stack = []
-        self._blocker_char = None
-
-    def pop_written(self):
-        s = b"".join(self._write_stack)
-        self._write_stack[:] = []
-        return s
-
-    def block_on(self, char):
-        """Block when a given char is encountered."""
-        self._blocker_char = char
-
-    def readable(self):
-        return True
-
-    def seekable(self):
-        return True
-
-    def writable(self):
-        return True
-
-    def write(self, b):
-        b = bytes(b)
-        n = -1
-        if self._blocker_char:
-            try:
-                n = b.index(self._blocker_char)
-            except ValueError:
-                pass
-            else:
-                self._blocker_char = None
-                self._write_stack.append(b[:n])
-                raise self.BlockingIOError(0, "test blocking", n)
-        self._write_stack.append(b)
-        return len(b)
-
-class CMockNonBlockWriterIO(MockNonBlockWriterIO, io.RawIOBase):
-    BlockingIOError = io.BlockingIOError
-
-class PyMockNonBlockWriterIO(MockNonBlockWriterIO, pyio.RawIOBase):
-    BlockingIOError = pyio.BlockingIOError
-
-
-class IOTest(unittest.TestCase):
-
-    def setUp(self):
-        support.unlink(support.TESTFN)
-
-    def tearDown(self):
-        support.unlink(support.TESTFN)
-
-    def write_ops(self, f):
-        self.assertEqual(f.write(b"blah."), 5)
-        f.truncate(0)
-        self.assertEqual(f.tell(), 5)
-        f.seek(0)
-
-        self.assertEqual(f.write(b"blah."), 5)
-        self.assertEqual(f.seek(0), 0)
-        self.assertEqual(f.write(b"Hello."), 6)
-        self.assertEqual(f.tell(), 6)
-        self.assertEqual(f.seek(-1, 1), 5)
-        self.assertEqual(f.tell(), 5)
-        self.assertEqual(f.write(bytearray(b" world\n\n\n")), 9)
-        self.assertEqual(f.seek(0), 0)
-        self.assertEqual(f.write(b"h"), 1)
-        self.assertEqual(f.seek(-1, 2), 13)
-        self.assertEqual(f.tell(), 13)
-
-        self.assertEqual(f.truncate(12), 12)
-        self.assertEqual(f.tell(), 13)
-        self.assertRaises(TypeError, f.seek, 0.0)
-
-    def read_ops(self, f, buffered=False):
-        data = f.read(5)
-        self.assertEqual(data, b"hello")
-        data = bytearray(data)
-        self.assertEqual(f.readinto(data), 5)
-        self.assertEqual(data, b" worl")
-        self.assertEqual(f.readinto(data), 2)
-        self.assertEqual(len(data), 5)
-        self.assertEqual(data[:2], b"d\n")
-        self.assertEqual(f.seek(0), 0)
-        self.assertEqual(f.read(20), b"hello world\n")
-        self.assertEqual(f.read(1), b"")
-        self.assertEqual(f.readinto(bytearray(b"x")), 0)
-        self.assertEqual(f.seek(-6, 2), 6)
-        self.assertEqual(f.read(5), b"world")
-        self.assertEqual(f.read(0), b"")
-        self.assertEqual(f.readinto(bytearray()), 0)
-        self.assertEqual(f.seek(-6, 1), 5)
-        self.assertEqual(f.read(5), b" worl")
-        self.assertEqual(f.tell(), 10)
-        self.assertRaises(TypeError, f.seek, 0.0)
-        if buffered:
-            f.seek(0)
-            self.assertEqual(f.read(), b"hello world\n")
-            f.seek(6)
-            self.assertEqual(f.read(), b"world\n")
-            self.assertEqual(f.read(), b"")
-
-    LARGE = 2**31
-
-    def large_file_ops(self, f):
-        assert f.readable()
-        assert f.writable()
-        self.assertEqual(f.seek(self.LARGE), self.LARGE)
-        self.assertEqual(f.tell(), self.LARGE)
-        self.assertEqual(f.write(b"xxx"), 3)
-        self.assertEqual(f.tell(), self.LARGE + 3)
-        self.assertEqual(f.seek(-1, 1), self.LARGE + 2)
-        self.assertEqual(f.truncate(), self.LARGE + 2)
-        self.assertEqual(f.tell(), self.LARGE + 2)
-        self.assertEqual(f.seek(0, 2), self.LARGE + 2)
-        self.assertEqual(f.truncate(self.LARGE + 1), self.LARGE + 1)
-        self.assertEqual(f.tell(), self.LARGE + 2)
-        self.assertEqual(f.seek(0, 2), self.LARGE + 1)
-        self.assertEqual(f.seek(-1, 2), self.LARGE)
-        self.assertEqual(f.read(2), b"x")
-
-    def test_invalid_operations(self):
-        # Try writing on a file opened in read mode and vice-versa.
-        for mode in ("w", "wb"):
-            with self.open(support.TESTFN, mode) as fp:
-                self.assertRaises(IOError, fp.read)
-                self.assertRaises(IOError, fp.readline)
-        with self.open(support.TESTFN, "rb") as fp:
-            self.assertRaises(IOError, fp.write, b"blah")
-            self.assertRaises(IOError, fp.writelines, [b"blah\n"])
-        with self.open(support.TESTFN, "r") as fp:
-            self.assertRaises(IOError, fp.write, "blah")
-            self.assertRaises(IOError, fp.writelines, ["blah\n"])
-
-    def test_raw_file_io(self):
-        with self.open(support.TESTFN, "wb", buffering=0) as f:
-            self.assertEqual(f.readable(), False)
-            self.assertEqual(f.writable(), True)
-            self.assertEqual(f.seekable(), True)
-            self.write_ops(f)
-        with self.open(support.TESTFN, "rb", buffering=0) as f:
-            self.assertEqual(f.readable(), True)
-            self.assertEqual(f.writable(), False)
-            self.assertEqual(f.seekable(), True)
-            self.read_ops(f)
-
-    def test_buffered_file_io(self):
-        with self.open(support.TESTFN, "wb") as f:
-            self.assertEqual(f.readable(), False)
-            self.assertEqual(f.writable(), True)
-            self.assertEqual(f.seekable(), True)
-            self.write_ops(f)
-        with self.open(support.TESTFN, "rb") as f:
-            self.assertEqual(f.readable(), True)
-            self.assertEqual(f.writable(), False)
-            self.assertEqual(f.seekable(), True)
-            self.read_ops(f, True)
-
-    def test_readline(self):
-        with self.open(support.TESTFN, "wb") as f:
-            f.write(b"abc\ndef\nxyzzy\nfoo\x00bar\nanother line")
-        with self.open(support.TESTFN, "rb") as f:
-            self.assertEqual(f.readline(), b"abc\n")
-            self.assertEqual(f.readline(10), b"def\n")
-            self.assertEqual(f.readline(2), b"xy")
-            self.assertEqual(f.readline(4), b"zzy\n")
-            self.assertEqual(f.readline(), b"foo\x00bar\n")
-            self.assertEqual(f.readline(None), b"another line")
-            self.assertRaises(TypeError, f.readline, 5.3)
-        with self.open(support.TESTFN, "r") as f:
-            self.assertRaises(TypeError, f.readline, 5.3)
-
-    def test_raw_bytes_io(self):
-        f = self.BytesIO()
-        self.write_ops(f)
-        data = f.getvalue()
-        self.assertEqual(data, b"hello world\n")
-        f = self.BytesIO(data)
-        self.read_ops(f, True)
-
-    def test_large_file_ops(self):
-        # On Windows and Mac OSX this test comsumes large resources; It takes
-        # a long time to build the >2GB file and takes >2GB of disk space
-        # therefore the resource must be enabled to run this test.
-        if sys.platform[:3] == 'win' or sys.platform == 'darwin':
-            if not support.is_resource_enabled("largefile"):
-                print("\nTesting large file ops skipped on %s." % sys.platform,
-                      file=sys.stderr)
-                print("It requires %d bytes and a long time." % self.LARGE,
-                      file=sys.stderr)
-                print("Use 'regrtest.py -u largefile test_io' to run it.",
-                      file=sys.stderr)
-                return
-        with self.open(support.TESTFN, "w+b", 0) as f:
-            self.large_file_ops(f)
-        with self.open(support.TESTFN, "w+b") as f:
-            self.large_file_ops(f)
-
-    def test_with_open(self):
-        for bufsize in (0, 1, 100):
-            f = None
-            with self.open(support.TESTFN, "wb", bufsize) as f:
-                f.write(b"xxx")
-            self.assertEqual(f.closed, True)
-            f = None
-            try:
-                with self.open(support.TESTFN, "wb", bufsize) as f:
-                    1 // 0
-            except ZeroDivisionError:
-                self.assertEqual(f.closed, True)
-            else:
-                self.fail("1 // 0 didn't raise an exception")
-
-    # issue 5008
-    def test_append_mode_tell(self):
-        with self.open(support.TESTFN, "wb") as f:
-            f.write(b"xxx")
-        with self.open(support.TESTFN, "ab", buffering=0) as f:
-            self.assertEqual(f.tell(), 3)
-        with self.open(support.TESTFN, "ab") as f:
-            self.assertEqual(f.tell(), 3)
-        with self.open(support.TESTFN, "a") as f:
-            self.assertTrue(f.tell() > 0)
-
-    def test_destructor(self):
-        record = []
-        class MyFileIO(self.FileIO):
-            def __del__(self):
-                record.append(1)
-                try:
-                    f = super(MyFileIO, self).__del__
-                except AttributeError:
-                    pass
-                else:
-                    f()
-            def close(self):
-                record.append(2)
-                super(MyFileIO, self).close()
-            def flush(self):
-                record.append(3)
-                super(MyFileIO, self).flush()
-        f = MyFileIO(support.TESTFN, "wb")
-        f.write(b"xxx")
-        del f
-        support.gc_collect()
-        self.assertEqual(record, [1, 2, 3])
-        with self.open(support.TESTFN, "rb") as f:
-            self.assertEqual(f.read(), b"xxx")
-
-    def _check_base_destructor(self, base):
-        record = []
-        class MyIO(base):
-            def __init__(self):
-                # This exercises the availability of attributes on object
-                # destruction.
-                # (in the C version, close() is called by the tp_dealloc
-                # function, not by __del__)
-                self.on_del = 1
-                self.on_close = 2
-                self.on_flush = 3
-            def __del__(self):
-                record.append(self.on_del)
-                try:
-                    f = super(MyIO, self).__del__
-                except AttributeError:
-                    pass
-                else:
-                    f()
-            def close(self):
-                record.append(self.on_close)
-                super(MyIO, self).close()
-            def flush(self):
-                record.append(self.on_flush)
-                super(MyIO, self).flush()
-        f = MyIO()
-        del f
-        support.gc_collect()
-        self.assertEqual(record, [1, 2, 3])
-
-    def test_IOBase_destructor(self):
-        self._check_base_destructor(self.IOBase)
-
-    def test_RawIOBase_destructor(self):
-        self._check_base_destructor(self.RawIOBase)
-
-    def test_BufferedIOBase_destructor(self):
-        self._check_base_destructor(self.BufferedIOBase)
-
-    def test_TextIOBase_destructor(self):
-        self._check_base_destructor(self.TextIOBase)
-
-    def test_close_flushes(self):
-        with self.open(support.TESTFN, "wb") as f:
-            f.write(b"xxx")
-        with self.open(support.TESTFN, "rb") as f:
-            self.assertEqual(f.read(), b"xxx")
-
-    def test_array_writes(self):
-        a = array.array(b'i', range(10))
-        n = len(a.tostring())
-        with self.open(support.TESTFN, "wb", 0) as f:
-            self.assertEqual(f.write(a), n)
-        with self.open(support.TESTFN, "wb") as f:
-            self.assertEqual(f.write(a), n)
-
-    def test_closefd(self):
-        self.assertRaises(ValueError, self.open, support.TESTFN, 'w',
-                          closefd=False)
-
-    def test_read_closed(self):
-        with self.open(support.TESTFN, "w") as f:
-            f.write("egg\n")
-        with self.open(support.TESTFN, "r") as f:
-            file = self.open(f.fileno(), "r", closefd=False)
-            self.assertEqual(file.read(), "egg\n")
-            file.seek(0)
-            file.close()
-            self.assertRaises(ValueError, file.read)
-
-    def test_no_closefd_with_filename(self):
-        # can't use closefd in combination with a file name
-        self.assertRaises(ValueError, self.open, support.TESTFN, "r", closefd=False)
-
-    def test_closefd_attr(self):
-        with self.open(support.TESTFN, "wb") as f:
-            f.write(b"egg\n")
-        with self.open(support.TESTFN, "r") as f:
-            self.assertEqual(f.buffer.raw.closefd, True)
-            file = self.open(f.fileno(), "r", closefd=False)
-            self.assertEqual(file.buffer.raw.closefd, False)
-
-    def test_garbage_collection(self):
-        # FileIO objects are collected, and collecting them flushes
-        # all data to disk.
-        f = self.FileIO(support.TESTFN, "wb")
-        f.write(b"abcxxx")
-        f.f = f
-        wr = weakref.ref(f)
-        del f
-        support.gc_collect()
-        self.assertTrue(wr() is None, wr)
-        with self.open(support.TESTFN, "rb") as f:
-            self.assertEqual(f.read(), b"abcxxx")
-
-    def test_unbounded_file(self):
-        # Issue #1174606: reading from an unbounded stream such as /dev/zero.
-        zero = "/dev/zero"
-        if not os.path.exists(zero):
-            self.skipTest("{0} does not exist".format(zero))
-        if sys.maxsize > 0x7FFFFFFF:
-            self.skipTest("test can only run in a 32-bit address space")
-        if support.real_max_memuse < support._2G:
-            self.skipTest("test requires at least 2GB of memory")
-        with self.open(zero, "rb", buffering=0) as f:
-            self.assertRaises(OverflowError, f.read)
-        with self.open(zero, "rb") as f:
-            self.assertRaises(OverflowError, f.read)
-        with self.open(zero, "r") as f:
-            self.assertRaises(OverflowError, f.read)
-
-    def test_flush_error_on_close(self):
-        f = self.open(support.TESTFN, "wb", buffering=0)
-        def bad_flush():
-            raise IOError()
-        f.flush = bad_flush
-        self.assertRaises(IOError, f.close) # exception not swallowed
-
-    def test_multi_close(self):
-        f = self.open(support.TESTFN, "wb", buffering=0)
-        f.close()
-        f.close()
-        f.close()
-        self.assertRaises(ValueError, f.flush)
-
-    def test_RawIOBase_read(self):
-        # Exercise the default RawIOBase.read() implementation (which calls
-        # readinto() internally).
-        rawio = self.MockRawIOWithoutRead((b"abc", b"d", None, b"efg", None))
-        self.assertEqual(rawio.read(2), b"ab")
-        self.assertEqual(rawio.read(2), b"c")
-        self.assertEqual(rawio.read(2), b"d")
-        self.assertEqual(rawio.read(2), None)
-        self.assertEqual(rawio.read(2), b"ef")
-        self.assertEqual(rawio.read(2), b"g")
-        self.assertEqual(rawio.read(2), None)
-        self.assertEqual(rawio.read(2), b"")
-
-class CIOTest(IOTest):
-    pass
-
-class PyIOTest(IOTest):
-    test_array_writes = unittest.skip(
-        "len(array.array) returns number of elements rather than bytelength"
-    )(IOTest.test_array_writes)
-
-
-class CommonBufferedTests:
-    # Tests common to BufferedReader, BufferedWriter and BufferedRandom
-
-    def test_detach(self):
-        raw = self.MockRawIO()
-        buf = self.tp(raw)
-        self.assertIs(buf.detach(), raw)
-        self.assertRaises(ValueError, buf.detach)
-
-    def test_fileno(self):
-        rawio = self.MockRawIO()
-        bufio = self.tp(rawio)
-
-        self.assertEqual(42, bufio.fileno())
-
-    def test_no_fileno(self):
-        # XXX will we always have fileno() function? If so, kill
-        # this test. Else, write it.
-        pass
-
-    def test_invalid_args(self):
-        rawio = self.MockRawIO()
-        bufio = self.tp(rawio)
-        # Invalid whence
-        self.assertRaises(ValueError, bufio.seek, 0, -1)
-        self.assertRaises(ValueError, bufio.seek, 0, 3)
-
-    def test_override_destructor(self):
-        tp = self.tp
-        record = []
-        class MyBufferedIO(tp):
-            def __del__(self):
-                record.append(1)
-                try:
-                    f = super(MyBufferedIO, self).__del__
-                except AttributeError:
-                    pass
-                else:
-                    f()
-            def close(self):
-                record.append(2)
-                super(MyBufferedIO, self).close()
-            def flush(self):
-                record.append(3)
-                super(MyBufferedIO, self).flush()
-        rawio = self.MockRawIO()
-        bufio = MyBufferedIO(rawio)
-        writable = bufio.writable()
-        del bufio
-        support.gc_collect()
-        if writable:
-            self.assertEqual(record, [1, 2, 3])
-        else:
-            self.assertEqual(record, [1, 2])
-
-    def test_context_manager(self):
-        # Test usability as a context manager
-        rawio = self.MockRawIO()
-        bufio = self.tp(rawio)
-        def _with():
-            with bufio:
-                pass
-        _with()
-        # bufio should now be closed, and using it a second time should raise
-        # a ValueError.
-        self.assertRaises(ValueError, _with)
-
-    def test_error_through_destructor(self):
-        # Test that the exception state is not modified by a destructor,
-        # even if close() fails.
-        rawio = self.CloseFailureIO()
-        def f():
-            self.tp(rawio).xyzzy
-        with support.captured_output("stderr") as s:
-            self.assertRaises(AttributeError, f)
-        s = s.getvalue().strip()
-        if s:
-            # The destructor *may* have printed an unraisable error, check it
-            self.assertEqual(len(s.splitlines()), 1)
-            self.assertTrue(s.startswith("Exception IOError: "), s)
-            self.assertTrue(s.endswith(" ignored"), s)
-
-    def test_repr(self):
-        raw = self.MockRawIO()
-        b = self.tp(raw)
-        clsname = "%s.%s" % (self.tp.__module__, self.tp.__name__)
-        self.assertEqual(repr(b), "<%s>" % clsname)
-        raw.name = "dummy"
-        self.assertEqual(repr(b), "<%s name=u'dummy'>" % clsname)
-        raw.name = b"dummy"
-        self.assertEqual(repr(b), "<%s name='dummy'>" % clsname)
-
-    def test_flush_error_on_close(self):
-        raw = self.MockRawIO()
-        def bad_flush():
-            raise IOError()
-        raw.flush = bad_flush
-        b = self.tp(raw)
-        self.assertRaises(IOError, b.close) # exception not swallowed
-
-    def test_multi_close(self):
-        raw = self.MockRawIO()
-        b = self.tp(raw)
-        b.close()
-        b.close()
-        b.close()
-        self.assertRaises(ValueError, b.flush)
-
-    def test_readonly_attributes(self):
-        raw = self.MockRawIO()
-        buf = self.tp(raw)
-        x = self.MockRawIO()
-        with self.assertRaises((AttributeError, TypeError)):
-            buf.raw = x
-
-
-class BufferedReaderTest(unittest.TestCase, CommonBufferedTests):
-    read_mode = "rb"
-
-    def test_constructor(self):
-        rawio = self.MockRawIO([b"abc"])
-        bufio = self.tp(rawio)
-        bufio.__init__(rawio)
-        bufio.__init__(rawio, buffer_size=1024)
-        bufio.__init__(rawio, buffer_size=16)
-        self.assertEqual(b"abc", bufio.read())
-        self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=0)
-        self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-16)
-        self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-1)
-        rawio = self.MockRawIO([b"abc"])
-        bufio.__init__(rawio)
-        self.assertEqual(b"abc", bufio.read())
-
-    def test_read(self):
-        for arg in (None, 7):
-            rawio = self.MockRawIO((b"abc", b"d", b"efg"))
-            bufio = self.tp(rawio)
-            self.assertEqual(b"abcdefg", bufio.read(arg))
-        # Invalid args
-        self.assertRaises(ValueError, bufio.read, -2)
-
-    def test_read1(self):
-        rawio = self.MockRawIO((b"abc", b"d", b"efg"))
-        bufio = self.tp(rawio)
-        self.assertEqual(b"a", bufio.read(1))
-        self.assertEqual(b"b", bufio.read1(1))
-        self.assertEqual(rawio._reads, 1)
-        self.assertEqual(b"c", bufio.read1(100))
-        self.assertEqual(rawio._reads, 1)
-        self.assertEqual(b"d", bufio.read1(100))
-        self.assertEqual(rawio._reads, 2)
-        self.assertEqual(b"efg", bufio.read1(100))
-        self.assertEqual(rawio._reads, 3)
-        self.assertEqual(b"", bufio.read1(100))
-        self.assertEqual(rawio._reads, 4)
-        # Invalid args
-        self.assertRaises(ValueError, bufio.read1, -1)
-
-    def test_readinto(self):
-        rawio = self.MockRawIO((b"abc", b"d", b"efg"))
-        bufio = self.tp(rawio)
-        b = bytearray(2)
-        self.assertEqual(bufio.readinto(b), 2)
-        self.assertEqual(b, b"ab")
-        self.assertEqual(bufio.readinto(b), 2)
-        self.assertEqual(b, b"cd")
-        self.assertEqual(bufio.readinto(b), 2)
-        self.assertEqual(b, b"ef")
-        self.assertEqual(bufio.readinto(b), 1)
-        self.assertEqual(b, b"gf")
-        self.assertEqual(bufio.readinto(b), 0)
-        self.assertEqual(b, b"gf")
-
-    def test_readlines(self):
-        def bufio():
-            rawio = self.MockRawIO((b"abc\n", b"d\n", b"ef"))
-            return self.tp(rawio)
-        self.assertEqual(bufio().readlines(), [b"abc\n", b"d\n", b"ef"])
-        self.assertEqual(bufio().readlines(5), [b"abc\n", b"d\n"])
-        self.assertEqual(bufio().readlines(None), [b"abc\n", b"d\n", b"ef"])
-
-    def test_buffering(self):
-        data = b"abcdefghi"
-        dlen = len(data)
-
-        tests = [
-            [ 100, [ 3, 1, 4, 8 ], [ dlen, 0 ] ],
-            [ 100, [ 3, 3, 3],     [ dlen ]    ],
-            [   4, [ 1, 2, 4, 2 ], [ 4, 4, 1 ] ],
-        ]
-
-        for bufsize, buf_read_sizes, raw_read_sizes in tests:
-            rawio = self.MockFileIO(data)
-            bufio = self.tp(rawio, buffer_size=bufsize)
-            pos = 0
-            for nbytes in buf_read_sizes:
-                self.assertEqual(bufio.read(nbytes), data[pos:pos+nbytes])
-                pos += nbytes
-            # this is mildly implementation-dependent
-            self.assertEqual(rawio.read_history, raw_read_sizes)
-
-    def test_read_non_blocking(self):
-        # Inject some None's in there to simulate EWOULDBLOCK
-        rawio = self.MockRawIO((b"abc", b"d", None, b"efg", None, None, None))
-        bufio = self.tp(rawio)
-        self.assertEqual(b"abcd", bufio.read(6))
-        self.assertEqual(b"e", bufio.read(1))
-        self.assertEqual(b"fg", bufio.read())
-        self.assertEqual(b"", bufio.peek(1))
-        self.assertIsNone(bufio.read())
-        self.assertEqual(b"", bufio.read())
-
-        rawio = self.MockRawIO((b"a", None, None))
-        self.assertEqual(b"a", rawio.readall())
-        self.assertIsNone(rawio.readall())
-
-    def test_read_past_eof(self):
-        rawio = self.MockRawIO((b"abc", b"d", b"efg"))
-        bufio = self.tp(rawio)
-
-        self.assertEqual(b"abcdefg", bufio.read(9000))
-
-    def test_read_all(self):
-        rawio = self.MockRawIO((b"abc", b"d", b"efg"))
-        bufio = self.tp(rawio)
-
-        self.assertEqual(b"abcdefg", bufio.read())
-
-    @unittest.skipUnless(threading, 'Threading required for this test.')
-    @support.requires_resource('cpu')
-    def test_threads(self):
-        try:
-            # Write out many bytes with exactly the same number of 0's,
-            # 1's... 255's. This will help us check that concurrent reading
-            # doesn't duplicate or forget contents.
-            N = 1000
-            l = list(range(256)) * N
-            random.shuffle(l)
-            s = bytes(bytearray(l))
-            with self.open(support.TESTFN, "wb") as f:
-                f.write(s)
-            with self.open(support.TESTFN, self.read_mode, buffering=0) as raw:
-                bufio = self.tp(raw, 8)
-                errors = []
-                results = []
-                def f():
-                    try:
-                        # Intra-buffer read then buffer-flushing read
-                        for n in cycle([1, 19]):
-                            s = bufio.read(n)
-                            if not s:
-                                break
-                            # list.append() is atomic
-                            results.append(s)
-                    except Exception as e:
-                        errors.append(e)
-                        raise
-                threads = [threading.Thread(target=f) for x in range(20)]
-                for t in threads:
-                    t.start()
-                time.sleep(0.02) # yield
-                for t in threads:
-                    t.join()
-                self.assertFalse(errors,
-                    "the following exceptions were caught: %r" % errors)
-                s = b''.join(results)
-                for i in range(256):
-                    c = bytes(bytearray([i]))
-                    self.assertEqual(s.count(c), N)
-        finally:
-            support.unlink(support.TESTFN)
-
-    def test_misbehaved_io(self):
-        rawio = self.MisbehavedRawIO((b"abc", b"d", b"efg"))
-        bufio = self.tp(rawio)
-        self.assertRaises(IOError, bufio.seek, 0)
-        self.assertRaises(IOError, bufio.tell)
-
-    def test_no_extraneous_read(self):
-        # Issue #9550; when the raw IO object has satisfied the read request,
-        # we should not issue any additional reads, otherwise it may block
-        # (e.g. socket).
-        bufsize = 16
-        for n in (2, bufsize - 1, bufsize, bufsize + 1, bufsize * 2):
-            rawio = self.MockRawIO([b"x" * n])
-            bufio = self.tp(rawio, bufsize)
-            self.assertEqual(bufio.read(n), b"x" * n)
-            # Simple case: one raw read is enough to satisfy the request.
-            self.assertEqual(rawio._extraneous_reads, 0,
-                             "failed for {}: {} != 0".format(n, rawio._extraneous_reads))
-            # A more complex case where two raw reads are needed to satisfy
-            # the request.
-            rawio = self.MockRawIO([b"x" * (n - 1), b"x"])
-            bufio = self.tp(rawio, bufsize)
-            self.assertEqual(bufio.read(n), b"x" * n)
-            self.assertEqual(rawio._extraneous_reads, 0,
-                             "failed for {}: {} != 0".format(n, rawio._extraneous_reads))
-
-
-class CBufferedReaderTest(BufferedReaderTest):
-    tp = io.BufferedReader
-
-    def test_constructor(self):
-        BufferedReaderTest.test_constructor(self)
-        # The allocation can succeed on 32-bit builds, e.g. with more
-        # than 2GB RAM and a 64-bit kernel.
-        if sys.maxsize > 0x7FFFFFFF:
-            rawio = self.MockRawIO()
-            bufio = self.tp(rawio)
-            self.assertRaises((OverflowError, MemoryError, ValueError),
-                bufio.__init__, rawio, sys.maxsize)
-
-    def test_initialization(self):
-        rawio = self.MockRawIO([b"abc"])
-        bufio = self.tp(rawio)
-        self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=0)
-        self.assertRaises(ValueError, bufio.read)
-        self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-16)
-        self.assertRaises(ValueError, bufio.read)
-        self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-1)
-        self.assertRaises(ValueError, bufio.read)
-
-    def test_misbehaved_io_read(self):
-        rawio = self.MisbehavedRawIO((b"abc", b"d", b"efg"))
-        bufio = self.tp(rawio)
-        # _pyio.BufferedReader seems to implement reading different, so that
-        # checking this is not so easy.
-        self.assertRaises(IOError, bufio.read, 10)
-
-    def test_garbage_collection(self):
-        # C BufferedReader objects are collected.
-        # The Python version has __del__, so it ends into gc.garbage instead
-        rawio = self.FileIO(support.TESTFN, "w+b")
-        f = self.tp(rawio)
-        f.f = f
-        wr = weakref.ref(f)
-        del f
-        support.gc_collect()
-        self.assertTrue(wr() is None, wr)
-
-class PyBufferedReaderTest(BufferedReaderTest):
-    tp = pyio.BufferedReader
-
-
-class BufferedWriterTest(unittest.TestCase, CommonBufferedTests):
-    write_mode = "wb"
-
-    def test_constructor(self):
-        rawio = self.MockRawIO()
-        bufio = self.tp(rawio)
-        bufio.__init__(rawio)
-        bufio.__init__(rawio, buffer_size=1024)
-        bufio.__init__(rawio, buffer_size=16)
-        self.assertEqual(3, bufio.write(b"abc"))
-        bufio.flush()
-        self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=0)
-        self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-16)
-        self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-1)
-        bufio.__init__(rawio)
-        self.assertEqual(3, bufio.write(b"ghi"))
-        bufio.flush()
-        self.assertEqual(b"".join(rawio._write_stack), b"abcghi")
-
-    def test_detach_flush(self):
-        raw = self.MockRawIO()
-        buf = self.tp(raw)
-        buf.write(b"howdy!")
-        self.assertFalse(raw._write_stack)
-        buf.detach()
-        self.assertEqual(raw._write_stack, [b"howdy!"])
-
-    def test_write(self):
-        # Write to the buffered IO but don't overflow the buffer.
-        writer = self.MockRawIO()
-        bufio = self.tp(writer, 8)
-        bufio.write(b"abc")
-        self.assertFalse(writer._write_stack)
-
-    def test_write_overflow(self):
-        writer = self.MockRawIO()
-        bufio = self.tp(writer, 8)
-        contents = b"abcdefghijklmnop"
-        for n in range(0, len(contents), 3):
-            bufio.write(contents[n:n+3])
-        flushed = b"".join(writer._write_stack)
-        # At least (total - 8) bytes were implicitly flushed, perhaps more
-        # depending on the implementation.
-        self.assertTrue(flushed.startswith(contents[:-8]), flushed)
-
-    def check_writes(self, intermediate_func):
-        # Lots of writes, test the flushed output is as expected.
-        contents = bytes(range(256)) * 1000
-        n = 0
-        writer = self.MockRawIO()
-        bufio = self.tp(writer, 13)
-        # Generator of write sizes: repeat each N 15 times then proceed to N+1
-        def gen_sizes():
-            for size in count(1):
-                for i in range(15):
-                    yield size
-        sizes = gen_sizes()
-        while n < len(contents):
-            size = min(next(sizes), len(contents) - n)
-            self.assertEqual(bufio.write(contents[n:n+size]), size)
-            intermediate_func(bufio)
-            n += size
-        bufio.flush()
-        self.assertEqual(contents,
-            b"".join(writer._write_stack))
-
-    def test_writes(self):
-        self.check_writes(lambda bufio: None)
-
-    def test_writes_and_flushes(self):
-        self.check_writes(lambda bufio: bufio.flush())
-
-    def test_writes_and_seeks(self):
-        def _seekabs(bufio):
-            pos = bufio.tell()
-            bufio.seek(pos + 1, 0)
-            bufio.seek(pos - 1, 0)
-            bufio.seek(pos, 0)
-        self.check_writes(_seekabs)
-        def _seekrel(bufio):
-            pos = bufio.seek(0, 1)
-            bufio.seek(+1, 1)
-            bufio.seek(-1, 1)
-            bufio.seek(pos, 0)
-        self.check_writes(_seekrel)
-
-    def test_writes_and_truncates(self):
-        self.check_writes(lambda bufio: bufio.truncate(bufio.tell()))
-
-    def test_write_non_blocking(self):
-        raw = self.MockNonBlockWriterIO()
-        bufio = self.tp(raw, 8)
-
-        self.assertEqual(bufio.write(b"abcd"), 4)
-        self.assertEqual(bufio.write(b"efghi"), 5)
-        # 1 byte will be written, the rest will be buffered
-        raw.block_on(b"k")
-        self.assertEqual(bufio.write(b"jklmn"), 5)
-
-        # 8 bytes will be written, 8 will be buffered and the rest will be lost
-        raw.block_on(b"0")
-        try:
-            bufio.write(b"opqrwxyz0123456789")
-        except self.BlockingIOError as e:
-            written = e.characters_written
-        else:
-            self.fail("BlockingIOError should have been raised")
-        self.assertEqual(written, 16)
-        self.assertEqual(raw.pop_written(),
-            b"abcdefghijklmnopqrwxyz")
-
-        self.assertEqual(bufio.write(b"ABCDEFGHI"), 9)
-        s = raw.pop_written()
-        # Previously buffered bytes were flushed
-        self.assertTrue(s.startswith(b"01234567A"), s)
-
-    def test_write_and_rewind(self):
-        raw = io.BytesIO()
-        bufio = self.tp(raw, 4)
-        self.assertEqual(bufio.write(b"abcdef"), 6)
-        self.assertEqual(bufio.tell(), 6)
-        bufio.seek(0, 0)
-        self.assertEqual(bufio.write(b"XY"), 2)
-        bufio.seek(6, 0)
-        self.assertEqual(raw.getvalue(), b"XYcdef")
-        self.assertEqual(bufio.write(b"123456"), 6)
-        bufio.flush()
-        self.assertEqual(raw.getvalue(), b"XYcdef123456")
-
-    def test_flush(self):
-        writer = self.MockRawIO()
-        bufio = self.tp(writer, 8)
-        bufio.write(b"abc")
-        bufio.flush()
-        self.assertEqual(b"abc", writer._write_stack[0])
-
-    def test_destructor(self):
-        writer = self.MockRawIO()
-        bufio = self.tp(writer, 8)
-        bufio.write(b"abc")
-        del bufio
-        support.gc_collect()
-        self.assertEqual(b"abc", writer._write_stack[0])
-
-    def test_truncate(self):
-        # Truncate implicitly flushes the buffer.
-        with self.open(support.TESTFN, self.write_mode, buffering=0) as raw:
-            bufio = self.tp(raw, 8)
-            bufio.write(b"abcdef")
-            self.assertEqual(bufio.truncate(3), 3)
-            self.assertEqual(bufio.tell(), 6)
-        with self.open(support.TESTFN, "rb", buffering=0) as f:
-            self.assertEqual(f.read(), b"abc")
-
-    @unittest.skipUnless(threading, 'Threading required for this test.')
-    @support.requires_resource('cpu')
-    def test_threads(self):
-        try:
-            # Write out many bytes from many threads and test they were
-            # all flushed.
-            N = 1000
-            contents = bytes(range(256)) * N
-            sizes = cycle([1, 19])
-            n = 0
-            queue = deque()
-            while n < len(contents):
-                size = next(sizes)
-                queue.append(contents[n:n+size])
-                n += size
-            del contents
-            # We use a real file object because it allows us to
-            # exercise situations where the GIL is released before
-            # writing the buffer to the raw streams. This is in addition
-            # to concurrency issues due to switching threads in the middle
-            # of Python code.
-            with self.open(support.TESTFN, self.write_mode, buffering=0) as raw:
-                bufio = self.tp(raw, 8)
-                errors = []
-                def f():
-                    try:
-                        while True:
-                            try:
-                                s = queue.popleft()
-                            except IndexError:
-                                return
-                            bufio.write(s)
-                    except Exception as e:
-                        errors.append(e)
-                        raise
-                threads = [threading.Thread(target=f) for x in range(20)]
-                for t in threads:
-                    t.start()
-                time.sleep(0.02) # yield
-                for t in threads:
-                    t.join()
-                self.assertFalse(errors,
-                    "the following exceptions were caught: %r" % errors)
-                bufio.close()
-            with self.open(support.TESTFN, "rb") as f:
-                s = f.read()
-            for i in range(256):
-                self.assertEqual(s.count(bytes([i])), N)
-        finally:
-            support.unlink(support.TESTFN)
-
-    def test_misbehaved_io(self):
-        rawio = self.MisbehavedRawIO()
-        bufio = self.tp(rawio, 5)
-        self.assertRaises(IOError, bufio.seek, 0)
-        self.assertRaises(IOError, bufio.tell)
-        self.assertRaises(IOError, bufio.write, b"abcdef")
-
-    def test_max_buffer_size_deprecation(self):
-        with support.check_warnings(("max_buffer_size is deprecated",
-                                     DeprecationWarning)):
-            self.tp(self.MockRawIO(), 8, 12)
-
-
-class CBufferedWriterTest(BufferedWriterTest):
-    tp = io.BufferedWriter
-
-    def test_constructor(self):
-        BufferedWriterTest.test_constructor(self)
-        # The allocation can succeed on 32-bit builds, e.g. with more
-        # than 2GB RAM and a 64-bit kernel.
-        if sys.maxsize > 0x7FFFFFFF:
-            rawio = self.MockRawIO()
-            bufio = self.tp(rawio)
-            self.assertRaises((OverflowError, MemoryError, ValueError),
-                bufio.__init__, rawio, sys.maxsize)
-
-    def test_initialization(self):
-        rawio = self.MockRawIO()
-        bufio = self.tp(rawio)
-        self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=0)
-        self.assertRaises(ValueError, bufio.write, b"def")
-        self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-16)
-        self.assertRaises(ValueError, bufio.write, b"def")
-        self.assertRaises(ValueError, bufio.__init__, rawio, buffer_size=-1)
-        self.assertRaises(ValueError, bufio.write, b"def")
-
-    def test_garbage_collection(self):
-        # C BufferedWriter objects are collected, and collecting them flushes
-        # all data to disk.
-        # The Python version has __del__, so it ends into gc.garbage instead
-        rawio = self.FileIO(support.TESTFN, "w+b")
-        f = self.tp(rawio)
-        f.write(b"123xxx")
-        f.x = f
-        wr = weakref.ref(f)
-        del f
-        support.gc_collect()
-        self.assertTrue(wr() is None, wr)
-        with self.open(support.TESTFN, "rb") as f:
-            self.assertEqual(f.read(), b"123xxx")
-
-
-class PyBufferedWriterTest(BufferedWriterTest):
-    tp = pyio.BufferedWriter
-
-class BufferedRWPairTest(unittest.TestCase):
-
-    def test_constructor(self):
-        pair = self.tp(self.MockRawIO(), self.MockRawIO())
-        self.assertFalse(pair.closed)
-
-    def test_detach(self):
-        pair = self.tp(self.MockRawIO(), self.MockRawIO())
-        self.assertRaises(self.UnsupportedOperation, pair.detach)
-
-    def test_constructor_max_buffer_size_deprecation(self):
-        with support.check_warnings(("max_buffer_size is deprecated",
-                                     DeprecationWarning)):
-            self.tp(self.MockRawIO(), self.MockRawIO(), 8, 12)
-
-    def test_constructor_with_not_readable(self):
-        class NotReadable(MockRawIO):
-            def readable(self):
-                return False
-
-        self.assertRaises(IOError, self.tp, NotReadable(), self.MockRawIO())
-
-    def test_constructor_with_not_writeable(self):
-        class NotWriteable(MockRawIO):
-            def writable(self):
-                return False
-
-        self.assertRaises(IOError, self.tp, self.MockRawIO(), NotWriteable())
-
-    def test_read(self):
-        pair = self.tp(self.BytesIO(b"abcdef"), self.MockRawIO())
-
-        self.assertEqual(pair.read(3), b"abc")
-        self.assertEqual(pair.read(1), b"d")
-        self.assertEqual(pair.read(), b"ef")
-        pair = self.tp(self.BytesIO(b"abc"), self.MockRawIO())
-        self.assertEqual(pair.read(None), b"abc")
-
-    def test_readlines(self):
-        pair = lambda: self.tp(self.BytesIO(b"abc\ndef\nh"), self.MockRawIO())
-        self.assertEqual(pair().readlines(), [b"abc\n", b"def\n", b"h"])
-        self.assertEqual(pair().readlines(), [b"abc\n", b"def\n", b"h"])
-        self.assertEqual(pair().readlines(5), [b"abc\n", b"def\n"])
-
-    def test_read1(self):
-        # .read1() is delegated to the underlying reader object, so this test
-        # can be shallow.
-        pair = self.tp(self.BytesIO(b"abcdef"), self.MockRawIO())
-
-        self.assertEqual(pair.read1(3), b"abc")
-
-    def test_readinto(self):
-        pair = self.tp(self.BytesIO(b"abcdef"), self.MockRawIO())
-
-        data = bytearray(5)
-        self.assertEqual(pair.readinto(data), 5)
-        self.assertEqual(data, b"abcde")
-
-    def test_write(self):
-        w = self.MockRawIO()
-        pair = self.tp(self.MockRawIO(), w)
-
-        pair.write(b"abc")
-        pair.flush()
-        pair.write(b"def")
-        pair.flush()
-        self.assertEqual(w._write_stack, [b"abc", b"def"])
-
-    def test_peek(self):
-        pair = self.tp(self.BytesIO(b"abcdef"), self.MockRawIO())
-
-        self.assertTrue(pair.peek(3).startswith(b"abc"))
-        self.assertEqual(pair.read(3), b"abc")
-
-    def test_readable(self):
-        pair = self.tp(self.MockRawIO(), self.MockRawIO())
-        self.assertTrue(pair.readable())
-
-    def test_writeable(self):
-        pair = self.tp(self.MockRawIO(), self.MockRawIO())
-        self.assertTrue(pair.writable())
-
-    def test_seekable(self):
-        # BufferedRWPairs are never seekable, even if their readers and writers
-        # are.
-        pair = self.tp(self.MockRawIO(), self.MockRawIO())
-        self.assertFalse(pair.seekable())
-
-    # .flush() is delegated to the underlying writer object and has been
-    # tested in the test_write method.
-
-    def test_close_and_closed(self):
-        pair = self.tp(self.MockRawIO(), self.MockRawIO())
-        self.assertFalse(pair.closed)
-        pair.close()
-        self.assertTrue(pair.closed)
-
-    def test_isatty(self):
-        class SelectableIsAtty(MockRawIO):
-            def __init__(self, isatty):
-                MockRawIO.__init__(self)
-                self._isatty = isatty
-
-            def isatty(self):
-                return self._isatty
-
-        pair = self.tp(SelectableIsAtty(False), SelectableIsAtty(False))
-        self.assertFalse(pair.isatty())
-
-        pair = self.tp(SelectableIsAtty(True), SelectableIsAtty(False))
-        self.assertTrue(pair.isatty())
-
-        pair = self.tp(SelectableIsAtty(False), SelectableIsAtty(True))
-        self.assertTrue(pair.isatty())
-
-        pair = self.tp(SelectableIsAtty(True), SelectableIsAtty(True))
-        self.assertTrue(pair.isatty())
-
-class CBufferedRWPairTest(BufferedRWPairTest):
-    tp = io.BufferedRWPair
-
-class PyBufferedRWPairTest(BufferedRWPairTest):
-    tp = pyio.BufferedRWPair
-
-
-class BufferedRandomTest(BufferedReaderTest, BufferedWriterTest):
-    read_mode = "rb+"
-    write_mode = "wb+"
-
-    def test_constructor(self):
-        BufferedReaderTest.test_constructor(self)
-        BufferedWriterTest.test_constructor(self)
-
-    def test_read_and_write(self):
-        raw = self.MockRawIO((b"asdf", b"ghjk"))
-        rw = self.tp(raw, 8)
-
-        self.assertEqual(b"as", rw.read(2))
-        rw.write(b"ddd")
-        rw.write(b"eee")
-        self.assertFalse(raw._write_stack) # Buffer writes
-        self.assertEqual(b"ghjk", rw.read())
-        self.assertEqual(b"dddeee", raw._write_stack[0])
-
-    def test_seek_and_tell(self):
-        raw = self.BytesIO(b"asdfghjkl")
-        rw = self.tp(raw)
-
-        self.assertEqual(b"as", rw.read(2))
-        self.assertEqual(2, rw.tell())
-        rw.seek(0, 0)
-        self.assertEqual(b"asdf", rw.read(4))
-
-        rw.write(b"asdf")
-        rw.seek(0, 0)
-        self.assertEqual(b"asdfasdfl", rw.read())
-        self.assertEqual(9, rw.tell())
-        rw.seek(-4, 2)
-        self.assertEqual(5, rw.tell())
-        rw.seek(2, 1)
-        self.assertEqual(7, rw.tell())
-        self.assertEqual(b"fl", rw.read(11))
-        self.assertRaises(TypeError, rw.seek, 0.0)
-
-    def check_flush_and_read(self, read_func):
-        raw = self.BytesIO(b"abcdefghi")
-        bufio = self.tp(raw)
-
-        self.assertEqual(b"ab", read_func(bufio, 2))
-        bufio.write(b"12")
-        self.assertEqual(b"ef", read_func(bufio, 2))
-        self.assertEqual(6, bufio.tell())
-        bufio.flush()
-        self.assertEqual(6, bufio.tell())
-        self.assertEqual(b"ghi", read_func(bufio))
-        raw.seek(0, 0)
-        raw.write(b"XYZ")
-        # flush() resets the read buffer
-        bufio.flush()
-        bufio.seek(0, 0)
-        self.assertEqual(b"XYZ", read_func(bufio, 3))
-
-    def test_flush_and_read(self):
-        self.check_flush_and_read(lambda bufio, *args: bufio.read(*args))
-
-    def test_flush_and_readinto(self):
-        def _readinto(bufio, n=-1):
-            b = bytearray(n if n >= 0 else 9999)
-            n = bufio.readinto(b)
-            return bytes(b[:n])
-        self.check_flush_and_read(_readinto)
-
-    def test_flush_and_peek(self):
-        def _peek(bufio, n=-1):
-            # This relies on the fact that the buffer can contain the whole
-            # raw stream, otherwise peek() can return less.
-            b = bufio.peek(n)
-            if n != -1:
-                b = b[:n]
-            bufio.seek(len(b), 1)
-            return b
-        self.check_flush_and_read(_peek)
-
-    def test_flush_and_write(self):
-        raw = self.BytesIO(b"abcdefghi")
-        bufio = self.tp(raw)
-
-        bufio.write(b"123")
-        bufio.flush()
-        bufio.write(b"45")
-        bufio.flush()
-        bufio.seek(0, 0)
-        self.assertEqual(b"12345fghi", raw.getvalue())
-        self.assertEqual(b"12345fghi", bufio.read())
-
-    def test_threads(self):
-        BufferedReaderTest.test_threads(self)
-        BufferedWriterTest.test_threads(self)
-
-    def test_writes_and_peek(self):
-        def _peek(bufio):
-            bufio.peek(1)
-        self.check_writes(_peek)
-        def _peek(bufio):
-            pos = bufio.tell()
-            bufio.seek(-1, 1)
-            bufio.peek(1)
-            bufio.seek(pos, 0)
-        self.check_writes(_peek)
-
-    def test_writes_and_reads(self):
-        def _read(bufio):
-            bufio.seek(-1, 1)
-            bufio.read(1)
-        self.check_writes(_read)
-
-    def test_writes_and_read1s(self):
-        def _read1(bufio):
-            bufio.seek(-1, 1)
-            bufio.read1(1)
-        self.check_writes(_read1)
-
-    def test_writes_and_readintos(self):
-        def _read(bufio):
-            bufio.seek(-1, 1)
-            bufio.readinto(bytearray(1))
-        self.check_writes(_read)
-
-    def test_write_after_readahead(self):
-        # Issue #6629: writing after the buffer was filled by readahead should
-        # first rewind the raw stream.
-        for overwrite_size in [1, 5]:
-            raw = self.BytesIO(b"A" * 10)
-            bufio = self.tp(raw, 4)
-            # Trigger readahead
-            self.assertEqual(bufio.read(1), b"A")
-            self.assertEqual(bufio.tell(), 1)
-            # Overwriting should rewind the raw stream if it needs so
-            bufio.write(b"B" * overwrite_size)
-            self.assertEqual(bufio.tell(), overwrite_size + 1)
-            # If the write size was smaller than the buffer size, flush() and
-            # check that rewind happens.
-            bufio.flush()
-            self.assertEqual(bufio.tell(), overwrite_size + 1)
-            s = raw.getvalue()
-            self.assertEqual(s,
-                b"A" + b"B" * overwrite_size + b"A" * (9 - overwrite_size))
-
-    def test_write_rewind_write(self):
-        # Various combinations of reading / writing / seeking backwards / writing again
-        def mutate(bufio, pos1, pos2):
-            assert pos2 >= pos1
-            # Fill the buffer
-            bufio.seek(pos1)
-            bufio.read(pos2 - pos1)
-            bufio.write(b'\x02')
-            # This writes earlier than the previous write, but still inside
-            # the buffer.
-            bufio.seek(pos1)
-            bufio.write(b'\x01')
-
-        b = b"\x80\x81\x82\x83\x84"
-        for i in range(0, len(b)):
-            for j in range(i, len(b)):
-                raw = self.BytesIO(b)
-                bufio = self.tp(raw, 100)
-                mutate(bufio, i, j)
-                bufio.flush()
-                expected = bytearray(b)
-                expected[j] = 2
-                expected[i] = 1
-                self.assertEqual(raw.getvalue(), expected,
-                                 "failed result for i=%d, j=%d" % (i, j))
-
-    def test_truncate_after_read_or_write(self):
-        raw = self.BytesIO(b"A" * 10)
-        bufio = self.tp(raw, 100)
-        self.assertEqual(bufio.read(2), b"AA") # the read buffer gets filled
-        self.assertEqual(bufio.truncate(), 2)
-        self.assertEqual(bufio.write(b"BB"), 2) # the write buffer increases
-        self.assertEqual(bufio.truncate(), 4)
-
-    def test_misbehaved_io(self):
-        BufferedReaderTest.test_misbehaved_io(self)
-        BufferedWriterTest.test_misbehaved_io(self)
-
-class CBufferedRandomTest(CBufferedReaderTest, CBufferedWriterTest, BufferedRandomTest):
-    tp = io.BufferedRandom
-
-    def test_constructor(self):
-        BufferedRandomTest.test_constructor(self)
-        # The allocation can succeed on 32-bit builds, e.g. with more
-        # than 2GB RAM and a 64-bit kernel.
-        if sys.maxsize > 0x7FFFFFFF:
-            rawio = self.MockRawIO()
-            bufio = self.tp(rawio)
-            self.assertRaises((OverflowError, MemoryError, ValueError),
-                bufio.__init__, rawio, sys.maxsize)
-
-    def test_garbage_collection(self):
-        CBufferedReaderTest.test_garbage_collection(self)
-        CBufferedWriterTest.test_garbage_collection(self)
-
-class PyBufferedRandomTest(BufferedRandomTest):
-    tp = pyio.BufferedRandom
-
-
-# To fully exercise seek/tell, the StatefulIncrementalDecoder has these
-# properties:
-#   - A single output character can correspond to many bytes of input.
-#   - The number of input bytes to complete the character can be
-#     undetermined until the last input byte is received.
-#   - The number of input bytes can vary depending on previous input.
-#   - A single input byte can correspond to many characters of output.
-#   - The number of output characters can be undetermined until the
-#     last input byte is received.
-#   - The number of output characters can vary depending on previous input.
-
-class StatefulIncrementalDecoder(codecs.IncrementalDecoder):
-    """
-    For testing seek/tell behavior with a stateful, buffering decoder.
-
-    Input is a sequence of words.  Words may be fixed-length (length set
-    by input) or variable-length (period-terminated).  In variable-length
-    mode, extra periods are ignored.  Possible words are:
-      - 'i' followed by a number sets the input length, I (maximum 99).
-        When I is set to 0, words are space-terminated.
-      - 'o' followed by a number sets the output length, O (maximum 99).
-      - Any other word is converted into a word followed by a period on
-        the output.  The output word consists of the input word truncated
-        or padded out with hyphens to make its length equal to O.  If O
-        is 0, the word is output verbatim without truncating or padding.
-    I and O are initially set to 1.  When I changes, any buffered input is
-    re-scanned according to the new I.  EOF also terminates the last word.
-    """
-
-    def __init__(self, errors='strict'):
-        codecs.IncrementalDecoder.__init__(self, errors)
-        self.reset()
-
-    def __repr__(self):
-        return '<SID %x>' % id(self)
-
-    def reset(self):
-        self.i = 1
-        self.o = 1
-        self.buffer = bytearray()
-
-    def getstate(self):
-        i, o = self.i ^ 1, self.o ^ 1 # so that flags = 0 after reset()
-        return bytes(self.buffer), i*100 + o
-
-    def setstate(self, state):
-        buffer, io = state
-        self.buffer = bytearray(buffer)
-        i, o = divmod(io, 100)
-        self.i, self.o = i ^ 1, o ^ 1
-
-    def decode(self, input, final=False):
-        output = ''
-        for b in input:
-            if self.i == 0: # variable-length, terminated with period
-                if b == '.':
-                    if self.buffer:
-                        output += self.process_word()
-                else:
-                    self.buffer.append(b)
-            else: # fixed-length, terminate after self.i bytes
-                self.buffer.append(b)
-                if len(self.buffer) == self.i:
-                    output += self.process_word()
-        if final and self.buffer: # EOF terminates the last word
-            output += self.process_word()
-        return output
-
-    def process_word(self):
-        output = ''
-        if self.buffer[0] == ord('i'):
-            self.i = min(99, int(self.buffer[1:] or 0)) # set input length
-        elif self.buffer[0] == ord('o'):
-            self.o = min(99, int(self.buffer[1:] or 0)) # set output length
-        else:
-            output = self.buffer.decode('ascii')
-            if len(output) < self.o:
-                output += '-'*self.o # pad out with hyphens
-            if self.o:
-                output = output[:self.o] # truncate to output length
-            output += '.'
-        self.buffer = bytearray()
-        return output
-
-    codecEnabled = False
-
-    @classmethod
-    def lookupTestDecoder(cls, name):
-        if cls.codecEnabled and name == 'test_decoder':
-            latin1 = codecs.lookup('latin-1')
-            return codecs.CodecInfo(
-                name='test_decoder', encode=latin1.encode, decode=None,
-                incrementalencoder=None,
-                streamreader=None, streamwriter=None,
-                incrementaldecoder=cls)
-
-# Register the previous decoder for testing.
-# Disabled by default, tests will enable it.
-codecs.register(StatefulIncrementalDecoder.lookupTestDecoder)
-
-
-class StatefulIncrementalDecoderTest(unittest.TestCase):
-    """
-    Make sure the StatefulIncrementalDecoder actually works.
-    """
-
-    test_cases = [
-        # I=1, O=1 (fixed-length input == fixed-length output)
-        (b'abcd', False, 'a.b.c.d.'),
-        # I=0, O=0 (variable-length input, variable-length output)
-        (b'oiabcd', True, 'abcd.'),
-        # I=0, O=0 (should ignore extra periods)
-        (b'oi...abcd...', True, 'abcd.'),
-        # I=0, O=6 (variable-length input, fixed-length output)
-        (b'i.o6.x.xyz.toolongtofit.', False, 'x-----.xyz---.toolon.'),
-        # I=2, O=6 (fixed-length input < fixed-length output)
-        (b'i.i2.o6xyz', True, 'xy----.z-----.'),
-        # I=6, O=3 (fixed-length input > fixed-length output)
-        (b'i.o3.i6.abcdefghijklmnop', True, 'abc.ghi.mno.'),
-        # I=0, then 3; O=29, then 15 (with longer output)
-        (b'i.o29.a.b.cde.o15.abcdefghijabcdefghij.i3.a.b.c.d.ei00k.l.m', True,
-         'a----------------------------.' +
-         'b----------------------------.' +
-         'cde--------------------------.' +
-         'abcdefghijabcde.' +
-         'a.b------------.' +
-         '.c.------------.' +
-         'd.e------------.' +
-         'k--------------.' +
-         'l--------------.' +
-         'm--------------.')
-    ]
-
-    def test_decoder(self):
-        # Try a few one-shot test cases.
-        for input, eof, output in self.test_cases:
-            d = StatefulIncrementalDecoder()
-            self.assertEqual(d.decode(input, eof), output)
-
-        # Also test an unfinished decode, followed by forcing EOF.
-        d = StatefulIncrementalDecoder()
-        self.assertEqual(d.decode(b'oiabcd'), '')
-        self.assertEqual(d.decode(b'', 1), 'abcd.')
-
-class TextIOWrapperTest(unittest.TestCase):
-
-    def setUp(self):
-        self.testdata = b"AAA\r\nBBB\rCCC\r\nDDD\nEEE\r\n"
-        self.normalized = b"AAA\nBBB\nCCC\nDDD\nEEE\n".decode("ascii")
-        support.unlink(support.TESTFN)
-
-    def tearDown(self):
-        support.unlink(support.TESTFN)
-
-    def test_constructor(self):
-        r = self.BytesIO(b"\xc3\xa9\n\n")
-        b = self.BufferedReader(r, 1000)
-        t = self.TextIOWrapper(b)
-        t.__init__(b, encoding="latin1", newline="\r\n")
-        self.assertEqual(t.encoding, "latin1")
-        self.assertEqual(t.line_buffering, False)
-        t.__init__(b, encoding="utf8", line_buffering=True)
-        self.assertEqual(t.encoding, "utf8")
-        self.assertEqual(t.line_buffering, True)
-        self.assertEqual("\xe9\n", t.readline())
-        self.assertRaises(TypeError, t.__init__, b, newline=42)
-        self.assertRaises(ValueError, t.__init__, b, newline='xyzzy')
-
-    def test_detach(self):
-        r = self.BytesIO()
-        b = self.BufferedWriter(r)
-        t = self.TextIOWrapper(b)
-        self.assertIs(t.detach(), b)
-
-        t = self.TextIOWrapper(b, encoding="ascii")
-        t.write("howdy")
-        self.assertFalse(r.getvalue())
-        t.detach()
-        self.assertEqual(r.getvalue(), b"howdy")
-        self.assertRaises(ValueError, t.detach)
-
-    def test_repr(self):
-        raw = self.BytesIO("hello".encode("utf-8"))
-        b = self.BufferedReader(raw)
-        t = self.TextIOWrapper(b, encoding="utf-8")
-        modname = self.TextIOWrapper.__module__
-        self.assertEqual(repr(t),
-                         "<%s.TextIOWrapper encoding='utf-8'>" % modname)
-        raw.name = "dummy"
-        self.assertEqual(repr(t),
-                         "<%s.TextIOWrapper name=u'dummy' encoding='utf-8'>" % modname)
-        raw.name = b"dummy"
-        self.assertEqual(repr(t),
-                         "<%s.TextIOWrapper name='dummy' encoding='utf-8'>" % modname)
-
-    def test_line_buffering(self):
-        r = self.BytesIO()
-        b = self.BufferedWriter(r, 1000)
-        t = self.TextIOWrapper(b, newline="\n", line_buffering=True)
-        t.write("X")
-        self.assertEqual(r.getvalue(), b"")  # No flush happened
-        t.write("Y\nZ")
-        self.assertEqual(r.getvalue(), b"XY\nZ")  # All got flushed
-        t.write("A\rB")
-        self.assertEqual(r.getvalue(), b"XY\nZA\rB")
-
-    def test_encoding(self):
-        # Check the encoding attribute is always set, and valid
-        b = self.BytesIO()
-        t = self.TextIOWrapper(b, encoding="utf8")
-        self.assertEqual(t.encoding, "utf8")
-        t = self.TextIOWrapper(b)
-        self.assertTrue(t.encoding is not None)
-        codecs.lookup(t.encoding)
-
-    def test_encoding_errors_reading(self):
-        # (1) default
-        b = self.BytesIO(b"abc\n\xff\n")
-        t = self.TextIOWrapper(b, encoding="ascii")
-        self.assertRaises(UnicodeError, t.read)
-        # (2) explicit strict
-        b = self.BytesIO(b"abc\n\xff\n")
-        t = self.TextIOWrapper(b, encoding="ascii", errors="strict")
-        self.assertRaises(UnicodeError, t.read)
-        # (3) ignore
-        b = self.BytesIO(b"abc\n\xff\n")
-        t = self.TextIOWrapper(b, encoding="ascii", errors="ignore")
-        self.assertEqual(t.read(), "abc\n\n")
-        # (4) replace
-        b = self.BytesIO(b"abc\n\xff\n")
-        t = self.TextIOWrapper(b, encoding="ascii", errors="replace")
-        self.assertEqual(t.read(), "abc\n\ufffd\n")
-
-    def test_encoding_errors_writing(self):
-        # (1) default
-        b = self.BytesIO()
-        t = self.TextIOWrapper(b, encoding="ascii")
-        self.assertRaises(UnicodeError, t.write, "\xff")
-        # (2) explicit strict
-        b = self.BytesIO()
-        t = self.TextIOWrapper(b, encoding="ascii", errors="strict")
-        self.assertRaises(UnicodeError, t.write, "\xff")
-        # (3) ignore
-        b = self.BytesIO()
-        t = self.TextIOWrapper(b, encoding="ascii", errors="ignore",
-                             newline="\n")
-        t.write("abc\xffdef\n")
-        t.flush()
-        self.assertEqual(b.getvalue(), b"abcdef\n")
-        # (4) replace
-        b = self.BytesIO()
-        t = self.TextIOWrapper(b, encoding="ascii", errors="replace",
-                             newline="\n")
-        t.write("abc\xffdef\n")
-        t.flush()
-        self.assertEqual(b.getvalue(), b"abc?def\n")
-
-    def test_newlines(self):
-        input_lines = [ "unix\n", "windows\r\n", "os9\r", "last\n", "nonl" ]
-
-        tests = [
-            [ None, [ 'unix\n', 'windows\n', 'os9\n', 'last\n', 'nonl' ] ],
-            [ '', input_lines ],
-            [ '\n', [ "unix\n", "windows\r\n", "os9\rlast\n", "nonl" ] ],
-            [ '\r\n', [ "unix\nwindows\r\n", "os9\rlast\nnonl" ] ],
-            [ '\r', [ "unix\nwindows\r", "\nos9\r", "last\nnonl" ] ],
-        ]
-        encodings = (
-            'utf-8', 'latin-1',
-            'utf-16', 'utf-16-le', 'utf-16-be',
-            'utf-32', 'utf-32-le', 'utf-32-be',
-        )
-
-        # Try a range of buffer sizes to test the case where \r is the last
-        # character in TextIOWrapper._pending_line.
-        for encoding in encodings:
-            # XXX: str.encode() should return bytes
-            data = bytes(''.join(input_lines).encode(encoding))
-            for do_reads in (False, True):
-                for bufsize in range(1, 10):
-                    for newline, exp_lines in tests:
-                        bufio = self.BufferedReader(self.BytesIO(data), bufsize)
-                        textio = self.TextIOWrapper(bufio, newline=newline,
-                                                  encoding=encoding)
-                        if do_reads:
-                            got_lines = []
-                            while True:
-                                c2 = textio.read(2)
-                                if c2 == '':
-                                    break
-                                self.assertEqual(len(c2), 2)
-                                got_lines.append(c2 + textio.readline())
-                        else:
-                            got_lines = list(textio)
-
-                        for got_line, exp_line in zip(got_lines, exp_lines):
-                            self.assertEqual(got_line, exp_line)
-                        self.assertEqual(len(got_lines), len(exp_lines))
-
-    def test_newlines_input(self):
-        testdata = b"AAA\nBB\x00B\nCCC\rDDD\rEEE\r\nFFF\r\nGGG"
-        normalized = testdata.replace(b"\r\n", b"\n").replace(b"\r", b"\n")
-        for newline, expected in [
-            (None, normalized.decode("ascii").splitlines(True)),
-            ("", testdata.decode("ascii").splitlines(True)),
-            ("\n", ["AAA\n", "BB\x00B\n", "CCC\rDDD\rEEE\r\n", "FFF\r\n", "GGG"]),
-            ("\r\n", ["AAA\nBB\x00B\nCCC\rDDD\rEEE\r\n", "FFF\r\n", "GGG"]),
-            ("\r",  ["AAA\nBB\x00B\nCCC\r", "DDD\r", "EEE\r", "\nFFF\r", "\nGGG"]),
-            ]:
-            buf = self.BytesIO(testdata)
-            txt = self.TextIOWrapper(buf, encoding="ascii", newline=newline)
-            self.assertEqual(txt.readlines(), expected)
-            txt.seek(0)
-            self.assertEqual(txt.read(), "".join(expected))
-
-    def test_newlines_output(self):
-        testdict = {
-            "": b"AAA\nBBB\nCCC\nX\rY\r\nZ",
-            "\n": b"AAA\nBBB\nCCC\nX\rY\r\nZ",
-            "\r": b"AAA\rBBB\rCCC\rX\rY\r\rZ",
-            "\r\n": b"AAA\r\nBBB\r\nCCC\r\nX\rY\r\r\nZ",
-            }
-        tests = [(None, testdict[os.linesep])] + sorted(testdict.items())
-        for newline, expected in tests:
-            buf = self.BytesIO()
-            txt = self.TextIOWrapper(buf, encoding="ascii", newline=newline)
-            txt.write("AAA\nB")
-            txt.write("BB\nCCC\n")
-            txt.write("X\rY\r\nZ")
-            txt.flush()
-            self.assertEqual(buf.closed, False)
-            self.assertEqual(buf.getvalue(), expected)
-
-    def test_destructor(self):
-        l = []
-        base = self.BytesIO
-        class MyBytesIO(base):
-            def close(self):
-                l.append(self.getvalue())
-                base.close(self)
-        b = MyBytesIO()
-        t = self.TextIOWrapper(b, encoding="ascii")
-        t.write("abc")
-        del t
-        support.gc_collect()
-        self.assertEqual([b"abc"], l)
-
-    def test_override_destructor(self):
-        record = []
-        class MyTextIO(self.TextIOWrapper):
-            def __del__(self):
-                record.append(1)
-                try:
-                    f = super(MyTextIO, self).__del__
-                except AttributeError:
-                    pass
-                else:
-                    f()
-            def close(self):
-                record.append(2)
-                super(MyTextIO, self).close()
-            def flush(self):
-                record.append(3)
-                super(MyTextIO, self).flush()
-        b = self.BytesIO()
-        t = MyTextIO(b, encoding="ascii")
-        del t
-        support.gc_collect()
-        self.assertEqual(record, [1, 2, 3])
-
-    def test_error_through_destructor(self):
-        # Test that the exception state is not modified by a destructor,
-        # even if close() fails.
-        rawio = self.CloseFailureIO()
-        def f():
-            self.TextIOWrapper(rawio).xyzzy
-        with support.captured_output("stderr") as s:
-            self.assertRaises(AttributeError, f)
-        s = s.getvalue().strip()
-        if s:
-            # The destructor *may* have printed an unraisable error, check it
-            self.assertEqual(len(s.splitlines()), 1)
-            self.assertTrue(s.startswith("Exception IOError: "), s)
-            self.assertTrue(s.endswith(" ignored"), s)
-
-    # Systematic tests of the text I/O API
-
-    def test_basic_io(self):
-        for chunksize in (1, 2, 3, 4, 5, 15, 16, 17, 31, 32, 33, 63, 64, 65):
-            for enc in "ascii", "latin1", "utf8" :# , "utf-16-be", "utf-16-le":
-                f = self.open(support.TESTFN, "w+", encoding=enc)
-                f._CHUNK_SIZE = chunksize
-                self.assertEqual(f.write("abc"), 3)
-                f.close()
-                f = self.open(support.TESTFN, "r+", encoding=enc)
-                f._CHUNK_SIZE = chunksize
-                self.assertEqual(f.tell(), 0)
-                self.assertEqual(f.read(), "abc")
-                cookie = f.tell()
-                self.assertEqual(f.seek(0), 0)
-                self.assertEqual(f.read(None), "abc")
-                f.seek(0)
-                self.assertEqual(f.read(2), "ab")
-                self.assertEqual(f.read(1), "c")
-                self.assertEqual(f.read(1), "")
-                self.assertEqual(f.read(), "")
-                self.assertEqual(f.tell(), cookie)
-                self.assertEqual(f.seek(0), 0)
-                self.assertEqual(f.seek(0, 2), cookie)
-                self.assertEqual(f.write("def"), 3)
-                self.assertEqual(f.seek(cookie), cookie)
-                self.assertEqual(f.read(), "def")
-                if enc.startswith("utf"):
-                    self.multi_line_test(f, enc)
-                f.close()
-
-    def multi_line_test(self, f, enc):
-        f.seek(0)
-        f.truncate()
-        sample = "s\xff\u0fff\uffff"
-        wlines = []
-        for size in (0, 1, 2, 3, 4, 5, 30, 31, 32, 33, 62, 63, 64, 65, 1000):
-            chars = []
-            for i in range(size):
-                chars.append(sample[i % len(sample)])
-            line = "".join(chars) + "\n"
-            wlines.append((f.tell(), line))
-            f.write(line)
-        f.seek(0)
-        rlines = []
-        while True:
-            pos = f.tell()
-            line = f.readline()
-            if not line:
-                break
-            rlines.append((pos, line))
-        self.assertEqual(rlines, wlines)
-
-    def test_telling(self):
-        f = self.open(support.TESTFN, "w+", encoding="utf8")
-        p0 = f.tell()
-        f.write("\xff\n")
-        p1 = f.tell()
-        f.write("\xff\n")
-        p2 = f.tell()
-        f.seek(0)
-        self.assertEqual(f.tell(), p0)
-        self.assertEqual(f.readline(), "\xff\n")
-        self.assertEqual(f.tell(), p1)
-        self.assertEqual(f.readline(), "\xff\n")
-        self.assertEqual(f.tell(), p2)
-        f.seek(0)
-        for line in f:
-            self.assertEqual(line, "\xff\n")
-            self.assertRaises(IOError, f.tell)
-        self.assertEqual(f.tell(), p2)
-        f.close()
-
-    def test_seeking(self):
-        chunk_size = _default_chunk_size()
-        prefix_size = chunk_size - 2
-        u_prefix = "a" * prefix_size
-        prefix = bytes(u_prefix.encode("utf-8"))
-        self.assertEqual(len(u_prefix), len(prefix))
-        u_suffix = "\u8888\n"
-        suffix = bytes(u_suffix.encode("utf-8"))
-        line = prefix + suffix
-        f = self.open(support.TESTFN, "wb")
-        f.write(line*2)
-        f.close()
-        f = self.open(support.TESTFN, "r", encoding="utf-8")
-        s = f.read(prefix_size)
-        self.assertEqual(s, prefix.decode("ascii"))
-        self.assertEqual(f.tell(), prefix_size)
-        self.assertEqual(f.readline(), u_suffix)
-
-    def test_seeking_too(self):
-        # Regression test for a specific bug
-        data = b'\xe0\xbf\xbf\n'
-        f = self.open(support.TESTFN, "wb")
-        f.write(data)
-        f.close()
-        f = self.open(support.TESTFN, "r", encoding="utf-8")
-        f._CHUNK_SIZE  # Just test that it exists
-        f._CHUNK_SIZE = 2
-        f.readline()
-        f.tell()
-
-    def test_seek_and_tell(self):
-        #Test seek/tell using the StatefulIncrementalDecoder.
-        # Make test faster by doing smaller seeks
-        CHUNK_SIZE = 128
-
-        def test_seek_and_tell_with_data(data, min_pos=0):
-            """Tell/seek to various points within a data stream and ensure
-            that the decoded data returned by read() is consistent."""
-            f = self.open(support.TESTFN, 'wb')
-            f.write(data)
-            f.close()
-            f = self.open(support.TESTFN, encoding='test_decoder')
-            f._CHUNK_SIZE = CHUNK_SIZE
-            decoded = f.read()
-            f.close()
-
-            for i in range(min_pos, len(decoded) + 1): # seek positions
-                for j in [1, 5, len(decoded) - i]: # read lengths
-                    f = self.open(support.TESTFN, encoding='test_decoder')
-                    self.assertEqual(f.read(i), decoded[:i])
-                    cookie = f.tell()
-                    self.assertEqual(f.read(j), decoded[i:i + j])
-                    f.seek(cookie)
-                    self.assertEqual(f.read(), decoded[i:])
-                    f.close()
-
-        # Enable the test decoder.
-        StatefulIncrementalDecoder.codecEnabled = 1
-
-        # Run the tests.
-        try:
-            # Try each test case.
-            for input, _, _ in StatefulIncrementalDecoderTest.test_cases:
-                test_seek_and_tell_with_data(input)
-
-            # Position each test case so that it crosses a chunk boundary.
-            for input, _, _ in StatefulIncrementalDecoderTest.test_cases:
-                offset = CHUNK_SIZE - len(input)//2
-                prefix = b'.'*offset
-                # Don't bother seeking into the prefix (takes too long).
-                min_pos = offset*2
-                test_seek_and_tell_with_data(prefix + input, min_pos)
-
-        # Ensure our test decoder won't interfere with subsequent tests.
-        finally:
-            StatefulIncrementalDecoder.codecEnabled = 0
-
-    def test_encoded_writes(self):
-        data = "1234567890"
-        tests = ("utf-16",
-                 "utf-16-le",
-                 "utf-16-be",
-                 "utf-32",
-                 "utf-32-le",
-                 "utf-32-be")
-        for encoding in tests:
-            buf = self.BytesIO()
-            f = self.TextIOWrapper(buf, encoding=encoding)
-            # Check if the BOM is written only once (see issue1753).
-            f.write(data)
-            f.write(data)
-            f.seek(0)
-            self.assertEqual(f.read(), data * 2)
-            f.seek(0)
-            self.assertEqual(f.read(), data * 2)
-            self.assertEqual(buf.getvalue(), (data * 2).encode(encoding))
-
-    def test_unreadable(self):
-        class UnReadable(self.BytesIO):
-            def readable(self):
-                return False
-        txt = self.TextIOWrapper(UnReadable())
-        self.assertRaises(IOError, txt.read)
-
-    def test_read_one_by_one(self):
-        txt = self.TextIOWrapper(self.BytesIO(b"AA\r\nBB"))
-        reads = ""
-        while True:
-            c = txt.read(1)
-            if not c:
-                break
-            reads += c
-        self.assertEqual(reads, "AA\nBB")
-
-    def test_readlines(self):
-        txt = self.TextIOWrapper(self.BytesIO(b"AA\nBB\nCC"))
-        self.assertEqual(txt.readlines(), ["AA\n", "BB\n", "CC"])
-        txt.seek(0)
-        self.assertEqual(txt.readlines(None), ["AA\n", "BB\n", "CC"])
-        txt.seek(0)
-        self.assertEqual(txt.readlines(5), ["AA\n", "BB\n"])
-
-    # read in amounts equal to TextIOWrapper._CHUNK_SIZE which is 128.
-    def test_read_by_chunk(self):
-        # make sure "\r\n" straddles 128 char boundary.
-        txt = self.TextIOWrapper(self.BytesIO(b"A" * 127 + b"\r\nB"))
-        reads = ""
-        while True:
-            c = txt.read(128)
-            if not c:
-                break
-            reads += c
-        self.assertEqual(reads, "A"*127+"\nB")
-
-    def test_issue1395_1(self):
-        txt = self.TextIOWrapper(self.BytesIO(self.testdata), encoding="ascii")
-
-        # read one char at a time
-        reads = ""
-        while True:
-            c = txt.read(1)
-            if not c:
-                break
-            reads += c
-        self.assertEqual(reads, self.normalized)
-
-    def test_issue1395_2(self):
-        txt = self.TextIOWrapper(self.BytesIO(self.testdata), encoding="ascii")
-        txt._CHUNK_SIZE = 4
-
-        reads = ""
-        while True:
-            c = txt.read(4)
-            if not c:
-                break
-            reads += c
-        self.assertEqual(reads, self.normalized)
-
-    def test_issue1395_3(self):
-        txt = self.TextIOWrapper(self.BytesIO(self.testdata), encoding="ascii")
-        txt._CHUNK_SIZE = 4
-
-        reads = txt.read(4)
-        reads += txt.read(4)
-        reads += txt.readline()
-        reads += txt.readline()
-        reads += txt.readline()
-        self.assertEqual(reads, self.normalized)
-
-    def test_issue1395_4(self):
-        txt = self.TextIOWrapper(self.BytesIO(self.testdata), encoding="ascii")
-        txt._CHUNK_SIZE = 4
-
-        reads = txt.read(4)
-        reads += txt.read()
-        self.assertEqual(reads, self.normalized)
-
-    def test_issue1395_5(self):
-        txt = self.TextIOWrapper(self.BytesIO(self.testdata), encoding="ascii")
-        txt._CHUNK_SIZE = 4
-
-        reads = txt.read(4)
-        pos = txt.tell()
-        txt.seek(0)
-        txt.seek(pos)
-        self.assertEqual(txt.read(4), "BBB\n")
-
-    def test_issue2282(self):
-        buffer = self.BytesIO(self.testdata)
-        txt = self.TextIOWrapper(buffer, encoding="ascii")
-
-        self.assertEqual(buffer.seekable(), txt.seekable())
-
-    def test_append_bom(self):
-        # The BOM is not written again when appending to a non-empty file
-        filename = support.TESTFN
-        for charset in ('utf-8-sig', 'utf-16', 'utf-32'):
-            with self.open(filename, 'w', encoding=charset) as f:
-                f.write('aaa')
-                pos = f.tell()
-            with self.open(filename, 'rb') as f:
-                self.assertEqual(f.read(), 'aaa'.encode(charset))
-
-            with self.open(filename, 'a', encoding=charset) as f:
-                f.write('xxx')
-            with self.open(filename, 'rb') as f:
-                self.assertEqual(f.read(), 'aaaxxx'.encode(charset))
-
-    def test_seek_bom(self):
-        # Same test, but when seeking manually
-        filename = support.TESTFN
-        for charset in ('utf-8-sig', 'utf-16', 'utf-32'):
-            with self.open(filename, 'w', encoding=charset) as f:
-                f.write('aaa')
-                pos = f.tell()
-            with self.open(filename, 'r+', encoding=charset) as f:
-                f.seek(pos)
-                f.write('zzz')
-                f.seek(0)
-                f.write('bbb')
-            with self.open(filename, 'rb') as f:
-                self.assertEqual(f.read(), 'bbbzzz'.encode(charset))
-
-    def test_errors_property(self):
-        with self.open(support.TESTFN, "w") as f:
-            self.assertEqual(f.errors, "strict")
-        with self.open(support.TESTFN, "w", errors="replace") as f:
-            self.assertEqual(f.errors, "replace")
-
-    @unittest.skipUnless(threading, 'Threading required for this test.')
-    def test_threads_write(self):
-        # Issue6750: concurrent writes could duplicate data
-        event = threading.Event()
-        with self.open(support.TESTFN, "w", buffering=1) as f:
-            def run(n):
-                text = "Thread%03d\n" % n
-                event.wait()
-                f.write(text)
-            threads = [threading.Thread(target=lambda n=x: run(n))
-                       for x in range(20)]
-            for t in threads:
-                t.start()
-            time.sleep(0.02)
-            event.set()
-            for t in threads:
-                t.join()
-        with self.open(support.TESTFN) as f:
-            content = f.read()
-            for n in range(20):
-                self.assertEqual(content.count("Thread%03d\n" % n), 1)
-
-    def test_flush_error_on_close(self):
-        txt = self.TextIOWrapper(self.BytesIO(self.testdata), encoding="ascii")
-        def bad_flush():
-            raise IOError()
-        txt.flush = bad_flush
-        self.assertRaises(IOError, txt.close) # exception not swallowed
-
-    def test_multi_close(self):
-        txt = self.TextIOWrapper(self.BytesIO(self.testdata), encoding="ascii")
-        txt.close()
-        txt.close()
-        txt.close()
-        self.assertRaises(ValueError, txt.flush)
-
-    def test_readonly_attributes(self):
-        txt = self.TextIOWrapper(self.BytesIO(self.testdata), encoding="ascii")
-        buf = self.BytesIO(self.testdata)
-        with self.assertRaises((AttributeError, TypeError)):
-            txt.buffer = buf
-
-class CTextIOWrapperTest(TextIOWrapperTest):
-
-    def test_initialization(self):
-        r = self.BytesIO(b"\xc3\xa9\n\n")
-        b = self.BufferedReader(r, 1000)
-        t = self.TextIOWrapper(b)
-        self.assertRaises(TypeError, t.__init__, b, newline=42)
-        self.assertRaises(ValueError, t.read)
-        self.assertRaises(ValueError, t.__init__, b, newline='xyzzy')
-        self.assertRaises(ValueError, t.read)
-
-    def test_garbage_collection(self):
-        # C TextIOWrapper objects are collected, and collecting them flushes
-        # all data to disk.
-        # The Python version has __del__, so it ends in gc.garbage instead.
-        rawio = io.FileIO(support.TESTFN, "wb")
-        b = self.BufferedWriter(rawio)
-        t = self.TextIOWrapper(b, encoding="ascii")
-        t.write("456def")
-        t.x = t
-        wr = weakref.ref(t)
-        del t
-        support.gc_collect()
-        self.assertTrue(wr() is None, wr)
-        with self.open(support.TESTFN, "rb") as f:
-            self.assertEqual(f.read(), b"456def")
-
-class PyTextIOWrapperTest(TextIOWrapperTest):
-    pass
-
-
-class IncrementalNewlineDecoderTest(unittest.TestCase):
-
-    def check_newline_decoding_utf8(self, decoder):
-        # UTF-8 specific tests for a newline decoder
-        def _check_decode(b, s, **kwargs):
-            # We exercise getstate() / setstate() as well as decode()
-            state = decoder.getstate()
-            self.assertEqual(decoder.decode(b, **kwargs), s)
-            decoder.setstate(state)
-            self.assertEqual(decoder.decode(b, **kwargs), s)
-
-        _check_decode(b'\xe8\xa2\x88', "\u8888")
-
-        _check_decode(b'\xe8', "")
-        _check_decode(b'\xa2', "")
-        _check_decode(b'\x88', "\u8888")
-
-        _check_decode(b'\xe8', "")
-        _check_decode(b'\xa2', "")
-        _check_decode(b'\x88', "\u8888")
-
-        _check_decode(b'\xe8', "")
-        self.assertRaises(UnicodeDecodeError, decoder.decode, b'', final=True)
-
-        decoder.reset()
-        _check_decode(b'\n', "\n")
-        _check_decode(b'\r', "")
-        _check_decode(b'', "\n", final=True)
-        _check_decode(b'\r', "\n", final=True)
-
-        _check_decode(b'\r', "")
-        _check_decode(b'a', "\na")
-
-        _check_decode(b'\r\r\n', "\n\n")
-        _check_decode(b'\r', "")
-        _check_decode(b'\r', "\n")
-        _check_decode(b'\na', "\na")
-
-        _check_decode(b'\xe8\xa2\x88\r\n', "\u8888\n")
-        _check_decode(b'\xe8\xa2\x88', "\u8888")
-        _check_decode(b'\n', "\n")
-        _check_decode(b'\xe8\xa2\x88\r', "\u8888")
-        _check_decode(b'\n', "\n")
-
-    def check_newline_decoding(self, decoder, encoding):
-        result = []
-        if encoding is not None:
-            encoder = codecs.getincrementalencoder(encoding)()
-            def _decode_bytewise(s):
-                # Decode one byte at a time
-                for b in encoder.encode(s):
-                    result.append(decoder.decode(b))
-        else:
-            encoder = None
-            def _decode_bytewise(s):
-                # Decode one char at a time
-                for c in s:
-                    result.append(decoder.decode(c))
-        self.assertEqual(decoder.newlines, None)
-        _decode_bytewise("abc\n\r")
-        self.assertEqual(decoder.newlines, '\n')
-        _decode_bytewise("\nabc")
-        self.assertEqual(decoder.newlines, ('\n', '\r\n'))
-        _decode_bytewise("abc\r")
-        self.assertEqual(decoder.newlines, ('\n', '\r\n'))
-        _decode_bytewise("abc")
-        self.assertEqual(decoder.newlines, ('\r', '\n', '\r\n'))
-        _decode_bytewise("abc\r")
-        self.assertEqual("".join(result), "abc\n\nabcabc\nabcabc")
-        decoder.reset()
-        input = "abc"
-        if encoder is not None:
-            encoder.reset()
-            input = encoder.encode(input)
-        self.assertEqual(decoder.decode(input), "abc")
-        self.assertEqual(decoder.newlines, None)
-
-    def test_newline_decoder(self):
-        encodings = (
-            # None meaning the IncrementalNewlineDecoder takes unicode input
-            # rather than bytes input
-            None, 'utf-8', 'latin-1',
-            'utf-16', 'utf-16-le', 'utf-16-be',
-            'utf-32', 'utf-32-le', 'utf-32-be',
-        )
-        for enc in encodings:
-            decoder = enc and codecs.getincrementaldecoder(enc)()
-            decoder = self.IncrementalNewlineDecoder(decoder, translate=True)
-            self.check_newline_decoding(decoder, enc)
-        decoder = codecs.getincrementaldecoder("utf-8")()
-        decoder = self.IncrementalNewlineDecoder(decoder, translate=True)
-        self.check_newline_decoding_utf8(decoder)
-
-    def test_newline_bytes(self):
-        # Issue 5433: Excessive optimization in IncrementalNewlineDecoder
-        def _check(dec):
-            self.assertEqual(dec.newlines, None)
-            self.assertEqual(dec.decode("\u0D00"), "\u0D00")
-            self.assertEqual(dec.newlines, None)
-            self.assertEqual(dec.decode("\u0A00"), "\u0A00")
-            self.assertEqual(dec.newlines, None)
-        dec = self.IncrementalNewlineDecoder(None, translate=False)
-        _check(dec)
-        dec = self.IncrementalNewlineDecoder(None, translate=True)
-        _check(dec)
-
-class CIncrementalNewlineDecoderTest(IncrementalNewlineDecoderTest):
-    pass
-
-class PyIncrementalNewlineDecoderTest(IncrementalNewlineDecoderTest):
-    pass
-
-
-# XXX Tests for open()
-
-class MiscIOTest(unittest.TestCase):
-
-    def tearDown(self):
-        support.unlink(support.TESTFN)
-
-    def test___all__(self):
-        for name in self.io.__all__:
-            obj = getattr(self.io, name, None)
-            self.assertTrue(obj is not None, name)
-            if name == "open":
-                continue
-            elif "error" in name.lower() or name == "UnsupportedOperation":
-                self.assertTrue(issubclass(obj, Exception), name)
-            elif not name.startswith("SEEK_"):
-                self.assertTrue(issubclass(obj, self.IOBase))
-
-    def test_attributes(self):
-        f = self.open(support.TESTFN, "wb", buffering=0)
-        self.assertEqual(f.mode, "wb")
-        f.close()
-
-        f = self.open(support.TESTFN, "U")
-        self.assertEqual(f.name,            support.TESTFN)
-        self.assertEqual(f.buffer.name,     support.TESTFN)
-        self.assertEqual(f.buffer.raw.name, support.TESTFN)
-        self.assertEqual(f.mode,            "U")
-        self.assertEqual(f.buffer.mode,     "rb")
-        self.assertEqual(f.buffer.raw.mode, "rb")
-        f.close()
-
-        f = self.open(support.TESTFN, "w+")
-        self.assertEqual(f.mode,            "w+")
-        self.assertEqual(f.buffer.mode,     "rb+") # Does it really matter?
-        self.assertEqual(f.buffer.raw.mode, "rb+")
-
-        g = self.open(f.fileno(), "wb", closefd=False)
-        self.assertEqual(g.mode,     "wb")
-        self.assertEqual(g.raw.mode, "wb")
-        self.assertEqual(g.name,     f.fileno())
-        self.assertEqual(g.raw.name, f.fileno())
-        f.close()
-        g.close()
-
-    def test_io_after_close(self):
-        for kwargs in [
-                {"mode": "w"},
-                {"mode": "wb"},
-                {"mode": "w", "buffering": 1},
-                {"mode": "w", "buffering": 2},
-                {"mode": "wb", "buffering": 0},
-                {"mode": "r"},
-                {"mode": "rb"},
-                {"mode": "r", "buffering": 1},
-                {"mode": "r", "buffering": 2},
-                {"mode": "rb", "buffering": 0},
-                {"mode": "w+"},
-                {"mode": "w+b"},
-                {"mode": "w+", "buffering": 1},
-                {"mode": "w+", "buffering": 2},
-                {"mode": "w+b", "buffering": 0},
-            ]:
-            f = self.open(support.TESTFN, **kwargs)
-            f.close()
-            self.assertRaises(ValueError, f.flush)
-            self.assertRaises(ValueError, f.fileno)
-            self.assertRaises(ValueError, f.isatty)
-            self.assertRaises(ValueError, f.__iter__)
-            if hasattr(f, "peek"):
-                self.assertRaises(ValueError, f.peek, 1)
-            self.assertRaises(ValueError, f.read)
-            if hasattr(f, "read1"):
-                self.assertRaises(ValueError, f.read1, 1024)
-            if hasattr(f, "readall"):
-                self.assertRaises(ValueError, f.readall)
-            if hasattr(f, "readinto"):
-                self.assertRaises(ValueError, f.readinto, bytearray(1024))
-            self.assertRaises(ValueError, f.readline)
-            self.assertRaises(ValueError, f.readlines)
-            self.assertRaises(ValueError, f.seek, 0)
-            self.assertRaises(ValueError, f.tell)
-            self.assertRaises(ValueError, f.truncate)
-            self.assertRaises(ValueError, f.write,
-                              b"" if "b" in kwargs['mode'] else "")
-            self.assertRaises(ValueError, f.writelines, [])
-            self.assertRaises(ValueError, next, f)
-
-    def test_blockingioerror(self):
-        # Various BlockingIOError issues
-        self.assertRaises(TypeError, self.BlockingIOError)
-        self.assertRaises(TypeError, self.BlockingIOError, 1)
-        self.assertRaises(TypeError, self.BlockingIOError, 1, 2, 3, 4)
-        self.assertRaises(TypeError, self.BlockingIOError, 1, "", None)
-        b = self.BlockingIOError(1, "")
-        self.assertEqual(b.characters_written, 0)
-        class C(unicode):
-            pass
-        c = C("")
-        b = self.BlockingIOError(1, c)
-        c.b = b
-        b.c = c
-        wr = weakref.ref(c)
-        del c, b
-        support.gc_collect()
-        self.assertTrue(wr() is None, wr)
-
-    def test_abcs(self):
-        # Test the visible base classes are ABCs.
-        self.assertIsInstance(self.IOBase, abc.ABCMeta)
-        self.assertIsInstance(self.RawIOBase, abc.ABCMeta)
-        self.assertIsInstance(self.BufferedIOBase, abc.ABCMeta)
-        self.assertIsInstance(self.TextIOBase, abc.ABCMeta)
-
-    def _check_abc_inheritance(self, abcmodule):
-        with self.open(support.TESTFN, "wb", buffering=0) as f:
-            self.assertIsInstance(f, abcmodule.IOBase)
-            self.assertIsInstance(f, abcmodule.RawIOBase)
-            self.assertNotIsInstance(f, abcmodule.BufferedIOBase)
-            self.assertNotIsInstance(f, abcmodule.TextIOBase)
-        with self.open(support.TESTFN, "wb") as f:
-            self.assertIsInstance(f, abcmodule.IOBase)
-            self.assertNotIsInstance(f, abcmodule.RawIOBase)
-            self.assertIsInstance(f, abcmodule.BufferedIOBase)
-            self.assertNotIsInstance(f, abcmodule.TextIOBase)
-        with self.open(support.TESTFN, "w") as f:
-            self.assertIsInstance(f, abcmodule.IOBase)
-            self.assertNotIsInstance(f, abcmodule.RawIOBase)
-            self.assertNotIsInstance(f, abcmodule.BufferedIOBase)
-            self.assertIsInstance(f, abcmodule.TextIOBase)
-
-    def test_abc_inheritance(self):
-        # Test implementations inherit from their respective ABCs
-        self._check_abc_inheritance(self)
-
-    def test_abc_inheritance_official(self):
-        # Test implementations inherit from the official ABCs of the
-        # baseline "io" module.
-        self._check_abc_inheritance(io)
-
-class CMiscIOTest(MiscIOTest):
-    io = io
-
-class PyMiscIOTest(MiscIOTest):
-    io = pyio
-
-
-@unittest.skipIf(os.name == 'nt', 'POSIX signals required for this test.')
-class SignalsTest(unittest.TestCase):
-
-    def setUp(self):
-        self.oldalrm = signal.signal(signal.SIGALRM, self.alarm_interrupt)
-
-    def tearDown(self):
-        signal.signal(signal.SIGALRM, self.oldalrm)
-
-    def alarm_interrupt(self, sig, frame):
-        1 // 0
-
-    @unittest.skipUnless(threading, 'Threading required for this test.')
-    def check_interrupted_write(self, item, bytes, **fdopen_kwargs):
-        """Check that a partial write, when it gets interrupted, properly
-        invokes the signal handler, and bubbles up the exception raised
-        in the latter."""
-        read_results = []
-        def _read():
-            s = os.read(r, 1)
-            read_results.append(s)
-        t = threading.Thread(target=_read)
-        t.daemon = True
-        r, w = os.pipe()
-        try:
-            wio = self.io.open(w, **fdopen_kwargs)
-            t.start()
-            signal.alarm(1)
-            # Fill the pipe enough that the write will be blocking.
-            # It will be interrupted by the timer armed above.  Since the
-            # other thread has read one byte, the low-level write will
-            # return with a successful (partial) result rather than an EINTR.
-            # The buffered IO layer must check for pending signal
-            # handlers, which in this case will invoke alarm_interrupt().
-            self.assertRaises(ZeroDivisionError,
-                              wio.write, item * (1024 * 1024))
-            t.join()
-            # We got one byte, get another one and check that it isn't a
-            # repeat of the first one.
-            read_results.append(os.read(r, 1))
-            self.assertEqual(read_results, [bytes[0:1], bytes[1:2]])
-        finally:
-            os.close(w)
-            os.close(r)
-            # This is deliberate. If we didn't close the file descriptor
-            # before closing wio, wio would try to flush its internal
-            # buffer, and block again.
-            try:
-                wio.close()
-            except IOError as e:
-                if e.errno != errno.EBADF:
-                    raise
-
-    def test_interrupted_write_unbuffered(self):
-        self.check_interrupted_write(b"xy", b"xy", mode="wb", buffering=0)
-
-    def test_interrupted_write_buffered(self):
-        self.check_interrupted_write(b"xy", b"xy", mode="wb")
-
-    def test_interrupted_write_text(self):
-        self.check_interrupted_write("xy", b"xy", mode="w", encoding="ascii")
-
-    def check_reentrant_write(self, data, **fdopen_kwargs):
-        def on_alarm(*args):
-            # Will be called reentrantly from the same thread
-            wio.write(data)
-            1/0
-        signal.signal(signal.SIGALRM, on_alarm)
-        r, w = os.pipe()
-        wio = self.io.open(w, **fdopen_kwargs)
-        try:
-            signal.alarm(1)
-            # Either the reentrant call to wio.write() fails with RuntimeError,
-            # or the signal handler raises ZeroDivisionError.
-            with self.assertRaises((ZeroDivisionError, RuntimeError)) as cm:
-                while 1:
-                    for i in range(100):
-                        wio.write(data)
-                        wio.flush()
-                    # Make sure the buffer doesn't fill up and block further writes
-                    os.read(r, len(data) * 100)
-            exc = cm.exception
-            if isinstance(exc, RuntimeError):
-                self.assertTrue(str(exc).startswith("reentrant call"), str(exc))
-        finally:
-            wio.close()
-            os.close(r)
-
-    def test_reentrant_write_buffered(self):
-        self.check_reentrant_write(b"xy", mode="wb")
-
-    def test_reentrant_write_text(self):
-        self.check_reentrant_write("xy", mode="w", encoding="ascii")
-
-    def check_interrupted_read_retry(self, decode, **fdopen_kwargs):
-        """Check that a buffered read, when it gets interrupted (either
-        returning a partial result or EINTR), properly invokes the signal
-        handler and retries if the latter returned successfully."""
-        r, w = os.pipe()
-        fdopen_kwargs["closefd"] = False
-        def alarm_handler(sig, frame):
-            os.write(w, b"bar")
-        signal.signal(signal.SIGALRM, alarm_handler)
-        try:
-            rio = self.io.open(r, **fdopen_kwargs)
-            os.write(w, b"foo")
-            signal.alarm(1)
-            # Expected behaviour:
-            # - first raw read() returns partial b"foo"
-            # - second raw read() returns EINTR
-            # - third raw read() returns b"bar"
-            self.assertEqual(decode(rio.read(6)), "foobar")
-        finally:
-            rio.close()
-            os.close(w)
-            os.close(r)
-
-    def test_interrupterd_read_retry_buffered(self):
-        self.check_interrupted_read_retry(lambda x: x.decode('latin1'),
-                                          mode="rb")
-
-    def test_interrupterd_read_retry_text(self):
-        self.check_interrupted_read_retry(lambda x: x,
-                                          mode="r")
-
-    @unittest.skipUnless(threading, 'Threading required for this test.')
-    def check_interrupted_write_retry(self, item, **fdopen_kwargs):
-        """Check that a buffered write, when it gets interrupted (either
-        returning a partial result or EINTR), properly invokes the signal
-        handler and retries if the latter returned successfully."""
-        select = support.import_module("select")
-        # A quantity that exceeds the buffer size of an anonymous pipe's
-        # write end.
-        N = 1024 * 1024
-        r, w = os.pipe()
-        fdopen_kwargs["closefd"] = False
-        # We need a separate thread to read from the pipe and allow the
-        # write() to finish.  This thread is started after the SIGALRM is
-        # received (forcing a first EINTR in write()).
-        read_results = []
-        write_finished = False
-        def _read():
-            while not write_finished:
-                while r in select.select([r], [], [], 1.0)[0]:
-                    s = os.read(r, 1024)
-                    read_results.append(s)
-        t = threading.Thread(target=_read)
-        t.daemon = True
-        def alarm1(sig, frame):
-            signal.signal(signal.SIGALRM, alarm2)
-            signal.alarm(1)
-        def alarm2(sig, frame):
-            t.start()
-        signal.signal(signal.SIGALRM, alarm1)
-        try:
-            wio = self.io.open(w, **fdopen_kwargs)
-            signal.alarm(1)
-            # Expected behaviour:
-            # - first raw write() is partial (because of the limited pipe buffer
-            #   and the first alarm)
-            # - second raw write() returns EINTR (because of the second alarm)
-            # - subsequent write()s are successful (either partial or complete)
-            self.assertEqual(N, wio.write(item * N))
-            wio.flush()
-            write_finished = True
-            t.join()
-            self.assertEqual(N, sum(len(x) for x in read_results))
-        finally:
-            write_finished = True
-            os.close(w)
-            os.close(r)
-            # This is deliberate. If we didn't close the file descriptor
-            # before closing wio, wio would try to flush its internal
-            # buffer, and could block (in case of failure).
-            try:
-                wio.close()
-            except IOError as e:
-                if e.errno != errno.EBADF:
-                    raise
-
-    def test_interrupterd_write_retry_buffered(self):
-        self.check_interrupted_write_retry(b"x", mode="wb")
-
-    def test_interrupterd_write_retry_text(self):
-        self.check_interrupted_write_retry("x", mode="w", encoding="latin1")
-
-
-class CSignalsTest(SignalsTest):
-    io = io
-
-class PySignalsTest(SignalsTest):
-    io = pyio
-
-    # Handling reentrancy issues would slow down _pyio even more, so the
-    # tests are disabled.
-    test_reentrant_write_buffered = None
-    test_reentrant_write_text = None
-
-
-def test_main():
-    tests = (CIOTest, PyIOTest,
-             CBufferedReaderTest, PyBufferedReaderTest,
-             CBufferedWriterTest, PyBufferedWriterTest,
-             CBufferedRWPairTest, PyBufferedRWPairTest,
-             CBufferedRandomTest, PyBufferedRandomTest,
-             StatefulIncrementalDecoderTest,
-             CIncrementalNewlineDecoderTest, PyIncrementalNewlineDecoderTest,
-             CTextIOWrapperTest, PyTextIOWrapperTest,
-             CMiscIOTest, PyMiscIOTest,
-             CSignalsTest, PySignalsTest,
-             )
-
-    # Put the namespaces of the IO module we are testing and some useful mock
-    # classes in the __dict__ of each test.
-    mocks = (MockRawIO, MisbehavedRawIO, MockFileIO, CloseFailureIO,
-             MockNonBlockWriterIO, MockRawIOWithoutRead)
-    all_members = io.__all__ + ["IncrementalNewlineDecoder"]
-    c_io_ns = dict((name, getattr(io, name)) for name in all_members)
-    py_io_ns = dict((name, getattr(pyio, name)) for name in all_members)
-    globs = globals()
-    c_io_ns.update((x.__name__, globs["C" + x.__name__]) for x in mocks)
-    py_io_ns.update((x.__name__, globs["Py" + x.__name__]) for x in mocks)
-    # Avoid turning open into a bound method.
-    py_io_ns["open"] = pyio.OpenWrapper
-    for test in tests:
-        if test.__name__.startswith("C"):
-            for name, obj in c_io_ns.items():
-                setattr(test, name, obj)
-        elif test.__name__.startswith("Py"):
-            for name, obj in py_io_ns.items():
-                setattr(test, name, obj)
-
-    support.run_unittest(*tests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ioctl.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ioctl.py
deleted file mode 100644
index 914cd31..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ioctl.py
+++ /dev/null
@@ -1,93 +0,0 @@
-import array
-import unittest
-from test.test_support import run_unittest, import_module, get_attribute
-import os, struct
-fcntl = import_module('fcntl')
-termios = import_module('termios')
-get_attribute(termios, 'TIOCGPGRP') #Can't run tests without this feature
-
-try:
-    tty = open("/dev/tty", "r")
-except IOError:
-    raise unittest.SkipTest("Unable to open /dev/tty")
-else:
-    # Skip if another process is in foreground
-    r = fcntl.ioctl(tty, termios.TIOCGPGRP, "    ")
-    tty.close()
-    rpgrp = struct.unpack("i", r)[0]
-    if rpgrp not in (os.getpgrp(), os.getsid(0)):
-        raise unittest.SkipTest("Neither the process group nor the session "
-                                "are attached to /dev/tty")
-    del tty, r, rpgrp
-
-try:
-    import pty
-except ImportError:
-    pty = None
-
-class IoctlTests(unittest.TestCase):
-    def test_ioctl(self):
-        # If this process has been put into the background, TIOCGPGRP returns
-        # the session ID instead of the process group id.
-        ids = (os.getpgrp(), os.getsid(0))
-        tty = open("/dev/tty", "r")
-        r = fcntl.ioctl(tty, termios.TIOCGPGRP, "    ")
-        rpgrp = struct.unpack("i", r)[0]
-        self.assertIn(rpgrp, ids)
-
-    def _check_ioctl_mutate_len(self, nbytes=None):
-        buf = array.array('i')
-        intsize = buf.itemsize
-        ids = (os.getpgrp(), os.getsid(0))
-        # A fill value unlikely to be in `ids`
-        fill = -12345
-        if nbytes is not None:
-            # Extend the buffer so that it is exactly `nbytes` bytes long
-            buf.extend([fill] * (nbytes // intsize))
-            self.assertEqual(len(buf) * intsize, nbytes)   # sanity check
-        else:
-            buf.append(fill)
-        with open("/dev/tty", "r") as tty:
-            r = fcntl.ioctl(tty, termios.TIOCGPGRP, buf, 1)
-        rpgrp = buf[0]
-        self.assertEqual(r, 0)
-        self.assertIn(rpgrp, ids)
-
-    def test_ioctl_mutate(self):
-        self._check_ioctl_mutate_len()
-
-    def test_ioctl_mutate_1024(self):
-        # Issue #9758: a mutable buffer of exactly 1024 bytes wouldn't be
-        # copied back after the system call.
-        self._check_ioctl_mutate_len(1024)
-
-    def test_ioctl_mutate_2048(self):
-        # Test with a larger buffer, just for the record.
-        self._check_ioctl_mutate_len(2048)
-
-    def test_ioctl_signed_unsigned_code_param(self):
-        if not pty:
-            raise unittest.SkipTest('pty module required')
-        mfd, sfd = pty.openpty()
-        try:
-            if termios.TIOCSWINSZ < 0:
-                set_winsz_opcode_maybe_neg = termios.TIOCSWINSZ
-                set_winsz_opcode_pos = termios.TIOCSWINSZ & 0xffffffffL
-            else:
-                set_winsz_opcode_pos = termios.TIOCSWINSZ
-                set_winsz_opcode_maybe_neg, = struct.unpack("i",
-                        struct.pack("I", termios.TIOCSWINSZ))
-
-            our_winsz = struct.pack("HHHH",80,25,0,0)
-            # test both with a positive and potentially negative ioctl code
-            new_winsz = fcntl.ioctl(mfd, set_winsz_opcode_pos, our_winsz)
-            new_winsz = fcntl.ioctl(mfd, set_winsz_opcode_maybe_neg, our_winsz)
-        finally:
-            os.close(mfd)
-            os.close(sfd)
-
-def test_main():
-    run_unittest(IoctlTests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_isinstance.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_isinstance.py
deleted file mode 100644
index 59d1252..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_isinstance.py
+++ /dev/null
@@ -1,277 +0,0 @@
-# Tests some corner cases with isinstance() and issubclass().  While these
-# tests use new style classes and properties, they actually do whitebox
-# testing of error conditions uncovered when using extension types.
-
-import unittest
-from test import test_support
-import sys
-
-
-\f
-class TestIsInstanceExceptions(unittest.TestCase):
-    # Test to make sure that an AttributeError when accessing the instance's
-    # class's bases is masked.  This was actually a bug in Python 2.2 and
-    # 2.2.1 where the exception wasn't caught but it also wasn't being cleared
-    # (leading to an "undetected error" in the debug build).  Set up is,
-    # isinstance(inst, cls) where:
-    #
-    # - inst isn't an InstanceType
-    # - cls isn't a ClassType, a TypeType, or a TupleType
-    # - cls has a __bases__ attribute
-    # - inst has a __class__ attribute
-    # - inst.__class__ as no __bases__ attribute
-    #
-    # Sounds complicated, I know, but this mimics a situation where an
-    # extension type raises an AttributeError when its __bases__ attribute is
-    # gotten.  In that case, isinstance() should return False.
-    def test_class_has_no_bases(self):
-        class I(object):
-            def getclass(self):
-                # This must return an object that has no __bases__ attribute
-                return None
-            __class__ = property(getclass)
-
-        class C(object):
-            def getbases(self):
-                return ()
-            __bases__ = property(getbases)
-
-        self.assertEqual(False, isinstance(I(), C()))
-
-    # Like above except that inst.__class__.__bases__ raises an exception
-    # other than AttributeError
-    def test_bases_raises_other_than_attribute_error(self):
-        class E(object):
-            def getbases(self):
-                raise RuntimeError
-            __bases__ = property(getbases)
-
-        class I(object):
-            def getclass(self):
-                return E()
-            __class__ = property(getclass)
-
-        class C(object):
-            def getbases(self):
-                return ()
-            __bases__ = property(getbases)
-
-        self.assertRaises(RuntimeError, isinstance, I(), C())
-
-    # Here's a situation where getattr(cls, '__bases__') raises an exception.
-    # If that exception is not AttributeError, it should not get masked
-    def test_dont_mask_non_attribute_error(self):
-        class I: pass
-
-        class C(object):
-            def getbases(self):
-                raise RuntimeError
-            __bases__ = property(getbases)
-
-        self.assertRaises(RuntimeError, isinstance, I(), C())
-
-    # Like above, except that getattr(cls, '__bases__') raises an
-    # AttributeError, which /should/ get masked as a TypeError
-    def test_mask_attribute_error(self):
-        class I: pass
-
-        class C(object):
-            def getbases(self):
-                raise AttributeError
-            __bases__ = property(getbases)
-
-        self.assertRaises(TypeError, isinstance, I(), C())
-
-
-\f
-# These tests are similar to above, but tickle certain code paths in
-# issubclass() instead of isinstance() -- really PyObject_IsSubclass()
-# vs. PyObject_IsInstance().
-class TestIsSubclassExceptions(unittest.TestCase):
-    def test_dont_mask_non_attribute_error(self):
-        class C(object):
-            def getbases(self):
-                raise RuntimeError
-            __bases__ = property(getbases)
-
-        class S(C): pass
-
-        self.assertRaises(RuntimeError, issubclass, C(), S())
-
-    def test_mask_attribute_error(self):
-        class C(object):
-            def getbases(self):
-                raise AttributeError
-            __bases__ = property(getbases)
-
-        class S(C): pass
-
-        self.assertRaises(TypeError, issubclass, C(), S())
-
-    # Like above, but test the second branch, where the __bases__ of the
-    # second arg (the cls arg) is tested.  This means the first arg must
-    # return a valid __bases__, and it's okay for it to be a normal --
-    # unrelated by inheritance -- class.
-    def test_dont_mask_non_attribute_error_in_cls_arg(self):
-        class B: pass
-
-        class C(object):
-            def getbases(self):
-                raise RuntimeError
-            __bases__ = property(getbases)
-
-        self.assertRaises(RuntimeError, issubclass, B, C())
-
-    def test_mask_attribute_error_in_cls_arg(self):
-        class B: pass
-
-        class C(object):
-            def getbases(self):
-                raise AttributeError
-            __bases__ = property(getbases)
-
-        self.assertRaises(TypeError, issubclass, B, C())
-
-
-\f
-# meta classes for creating abstract classes and instances
-class AbstractClass(object):
-    def __init__(self, bases):
-        self.bases = bases
-
-    def getbases(self):
-        return self.bases
-    __bases__ = property(getbases)
-
-    def __call__(self):
-        return AbstractInstance(self)
-
-class AbstractInstance(object):
-    def __init__(self, klass):
-        self.klass = klass
-
-    def getclass(self):
-        return self.klass
-    __class__ = property(getclass)
-
-# abstract classes
-AbstractSuper = AbstractClass(bases=())
-
-AbstractChild = AbstractClass(bases=(AbstractSuper,))
-
-# normal classes
-class Super:
-    pass
-
-class Child(Super):
-    pass
-
-# new-style classes
-class NewSuper(object):
-    pass
-
-class NewChild(NewSuper):
-    pass
-
-
-\f
-class TestIsInstanceIsSubclass(unittest.TestCase):
-    # Tests to ensure that isinstance and issubclass work on abstract
-    # classes and instances.  Before the 2.2 release, TypeErrors were
-    # raised when boolean values should have been returned.  The bug was
-    # triggered by mixing 'normal' classes and instances were with
-    # 'abstract' classes and instances.  This case tries to test all
-    # combinations.
-
-    def test_isinstance_normal(self):
-        # normal instances
-        self.assertEqual(True, isinstance(Super(), Super))
-        self.assertEqual(False, isinstance(Super(), Child))
-        self.assertEqual(False, isinstance(Super(), AbstractSuper))
-        self.assertEqual(False, isinstance(Super(), AbstractChild))
-
-        self.assertEqual(True, isinstance(Child(), Super))
-        self.assertEqual(False, isinstance(Child(), AbstractSuper))
-
-    def test_isinstance_abstract(self):
-        # abstract instances
-        self.assertEqual(True, isinstance(AbstractSuper(), AbstractSuper))
-        self.assertEqual(False, isinstance(AbstractSuper(), AbstractChild))
-        self.assertEqual(False, isinstance(AbstractSuper(), Super))
-        self.assertEqual(False, isinstance(AbstractSuper(), Child))
-
-        self.assertEqual(True, isinstance(AbstractChild(), AbstractChild))
-        self.assertEqual(True, isinstance(AbstractChild(), AbstractSuper))
-        self.assertEqual(False, isinstance(AbstractChild(), Super))
-        self.assertEqual(False, isinstance(AbstractChild(), Child))
-
-    def test_subclass_normal(self):
-        # normal classes
-        self.assertEqual(True, issubclass(Super, Super))
-        self.assertEqual(False, issubclass(Super, AbstractSuper))
-        self.assertEqual(False, issubclass(Super, Child))
-
-        self.assertEqual(True, issubclass(Child, Child))
-        self.assertEqual(True, issubclass(Child, Super))
-        self.assertEqual(False, issubclass(Child, AbstractSuper))
-
-    def test_subclass_abstract(self):
-        # abstract classes
-        self.assertEqual(True, issubclass(AbstractSuper, AbstractSuper))
-        self.assertEqual(False, issubclass(AbstractSuper, AbstractChild))
-        self.assertEqual(False, issubclass(AbstractSuper, Child))
-
-        self.assertEqual(True, issubclass(AbstractChild, AbstractChild))
-        self.assertEqual(True, issubclass(AbstractChild, AbstractSuper))
-        self.assertEqual(False, issubclass(AbstractChild, Super))
-        self.assertEqual(False, issubclass(AbstractChild, Child))
-
-    def test_subclass_tuple(self):
-        # test with a tuple as the second argument classes
-        self.assertEqual(True, issubclass(Child, (Child,)))
-        self.assertEqual(True, issubclass(Child, (Super,)))
-        self.assertEqual(False, issubclass(Super, (Child,)))
-        self.assertEqual(True, issubclass(Super, (Child, Super)))
-        self.assertEqual(False, issubclass(Child, ()))
-        self.assertEqual(True, issubclass(Super, (Child, (Super,))))
-
-        self.assertEqual(True, issubclass(NewChild, (NewChild,)))
-        self.assertEqual(True, issubclass(NewChild, (NewSuper,)))
-        self.assertEqual(False, issubclass(NewSuper, (NewChild,)))
-        self.assertEqual(True, issubclass(NewSuper, (NewChild, NewSuper)))
-        self.assertEqual(False, issubclass(NewChild, ()))
-        self.assertEqual(True, issubclass(NewSuper, (NewChild, (NewSuper,))))
-
-        self.assertEqual(True, issubclass(int, (long, (float, int))))
-        if test_support.have_unicode:
-            self.assertEqual(True, issubclass(str, (unicode, (Child, NewChild, basestring))))
-
-    def test_subclass_recursion_limit(self):
-        # make sure that issubclass raises RuntimeError before the C stack is
-        # blown
-        self.assertRaises(RuntimeError, blowstack, issubclass, str, str)
-
-    def test_isinstance_recursion_limit(self):
-        # make sure that issubclass raises RuntimeError before the C stack is
-        # blown
-        self.assertRaises(RuntimeError, blowstack, isinstance, '', str)
-
-def blowstack(fxn, arg, compare_to):
-    # Make sure that calling isinstance with a deeply nested tuple for its
-    # argument will raise RuntimeError eventually.
-    tuple_arg = (compare_to,)
-    for cnt in xrange(sys.getrecursionlimit()+5):
-        tuple_arg = (tuple_arg,)
-        fxn(arg, tuple_arg)
-
-\f
-def test_main():
-    test_support.run_unittest(
-        TestIsInstanceExceptions,
-        TestIsSubclassExceptions,
-        TestIsInstanceIsSubclass
-    )
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_iter.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_iter.py
deleted file mode 100644
index 3c62e27..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_iter.py
+++ /dev/null
@@ -1,917 +0,0 @@
-# Test iterators.
-
-import unittest
-from test.test_support import run_unittest, TESTFN, unlink, have_unicode, \
-                              check_py3k_warnings, cpython_only
-
-# Test result of triple loop (too big to inline)
-TRIPLETS = [(0, 0, 0), (0, 0, 1), (0, 0, 2),
-            (0, 1, 0), (0, 1, 1), (0, 1, 2),
-            (0, 2, 0), (0, 2, 1), (0, 2, 2),
-
-            (1, 0, 0), (1, 0, 1), (1, 0, 2),
-            (1, 1, 0), (1, 1, 1), (1, 1, 2),
-            (1, 2, 0), (1, 2, 1), (1, 2, 2),
-
-            (2, 0, 0), (2, 0, 1), (2, 0, 2),
-            (2, 1, 0), (2, 1, 1), (2, 1, 2),
-            (2, 2, 0), (2, 2, 1), (2, 2, 2)]
-
-# Helper classes
-
-class BasicIterClass:
-    def __init__(self, n):
-        self.n = n
-        self.i = 0
-    def next(self):
-        res = self.i
-        if res >= self.n:
-            raise StopIteration
-        self.i = res + 1
-        return res
-
-class IteratingSequenceClass:
-    def __init__(self, n):
-        self.n = n
-    def __iter__(self):
-        return BasicIterClass(self.n)
-
-class SequenceClass:
-    def __init__(self, n):
-        self.n = n
-    def __getitem__(self, i):
-        if 0 <= i < self.n:
-            return i
-        else:
-            raise IndexError
-
-# Main test suite
-
-class TestCase(unittest.TestCase):
-
-    # Helper to check that an iterator returns a given sequence
-    def check_iterator(self, it, seq):
-        res = []
-        while 1:
-            try:
-                val = it.next()
-            except StopIteration:
-                break
-            res.append(val)
-        self.assertEqual(res, seq)
-
-    # Helper to check that a for loop generates a given sequence
-    def check_for_loop(self, expr, seq):
-        res = []
-        for val in expr:
-            res.append(val)
-        self.assertEqual(res, seq)
-
-    # Test basic use of iter() function
-    def test_iter_basic(self):
-        self.check_iterator(iter(range(10)), range(10))
-
-    # Test that iter(iter(x)) is the same as iter(x)
-    def test_iter_idempotency(self):
-        seq = range(10)
-        it = iter(seq)
-        it2 = iter(it)
-        self.assertTrue(it is it2)
-
-    # Test that for loops over iterators work
-    def test_iter_for_loop(self):
-        self.check_for_loop(iter(range(10)), range(10))
-
-    # Test several independent iterators over the same list
-    def test_iter_independence(self):
-        seq = range(3)
-        res = []
-        for i in iter(seq):
-            for j in iter(seq):
-                for k in iter(seq):
-                    res.append((i, j, k))
-        self.assertEqual(res, TRIPLETS)
-
-    # Test triple list comprehension using iterators
-    def test_nested_comprehensions_iter(self):
-        seq = range(3)
-        res = [(i, j, k)
-               for i in iter(seq) for j in iter(seq) for k in iter(seq)]
-        self.assertEqual(res, TRIPLETS)
-
-    # Test triple list comprehension without iterators
-    def test_nested_comprehensions_for(self):
-        seq = range(3)
-        res = [(i, j, k) for i in seq for j in seq for k in seq]
-        self.assertEqual(res, TRIPLETS)
-
-    # Test a class with __iter__ in a for loop
-    def test_iter_class_for(self):
-        self.check_for_loop(IteratingSequenceClass(10), range(10))
-
-    # Test a class with __iter__ with explicit iter()
-    def test_iter_class_iter(self):
-        self.check_iterator(iter(IteratingSequenceClass(10)), range(10))
-
-    # Test for loop on a sequence class without __iter__
-    def test_seq_class_for(self):
-        self.check_for_loop(SequenceClass(10), range(10))
-
-    # Test iter() on a sequence class without __iter__
-    def test_seq_class_iter(self):
-        self.check_iterator(iter(SequenceClass(10)), range(10))
-
-    # Test a new_style class with __iter__ but no next() method
-    def test_new_style_iter_class(self):
-        class IterClass(object):
-            def __iter__(self):
-                return self
-        self.assertRaises(TypeError, iter, IterClass())
-
-    # Test two-argument iter() with callable instance
-    def test_iter_callable(self):
-        class C:
-            def __init__(self):
-                self.i = 0
-            def __call__(self):
-                i = self.i
-                self.i = i + 1
-                if i > 100:
-                    raise IndexError # Emergency stop
-                return i
-        self.check_iterator(iter(C(), 10), range(10))
-
-    # Test two-argument iter() with function
-    def test_iter_function(self):
-        def spam(state=[0]):
-            i = state[0]
-            state[0] = i+1
-            return i
-        self.check_iterator(iter(spam, 10), range(10))
-
-    # Test two-argument iter() with function that raises StopIteration
-    def test_iter_function_stop(self):
-        def spam(state=[0]):
-            i = state[0]
-            if i == 10:
-                raise StopIteration
-            state[0] = i+1
-            return i
-        self.check_iterator(iter(spam, 20), range(10))
-
-    # Test exception propagation through function iterator
-    def test_exception_function(self):
-        def spam(state=[0]):
-            i = state[0]
-            state[0] = i+1
-            if i == 10:
-                raise RuntimeError
-            return i
-        res = []
-        try:
-            for x in iter(spam, 20):
-                res.append(x)
-        except RuntimeError:
-            self.assertEqual(res, range(10))
-        else:
-            self.fail("should have raised RuntimeError")
-
-    # Test exception propagation through sequence iterator
-    def test_exception_sequence(self):
-        class MySequenceClass(SequenceClass):
-            def __getitem__(self, i):
-                if i == 10:
-                    raise RuntimeError
-                return SequenceClass.__getitem__(self, i)
-        res = []
-        try:
-            for x in MySequenceClass(20):
-                res.append(x)
-        except RuntimeError:
-            self.assertEqual(res, range(10))
-        else:
-            self.fail("should have raised RuntimeError")
-
-    # Test for StopIteration from __getitem__
-    def test_stop_sequence(self):
-        class MySequenceClass(SequenceClass):
-            def __getitem__(self, i):
-                if i == 10:
-                    raise StopIteration
-                return SequenceClass.__getitem__(self, i)
-        self.check_for_loop(MySequenceClass(20), range(10))
-
-    # Test a big range
-    def test_iter_big_range(self):
-        self.check_for_loop(iter(range(10000)), range(10000))
-
-    # Test an empty list
-    def test_iter_empty(self):
-        self.check_for_loop(iter([]), [])
-
-    # Test a tuple
-    def test_iter_tuple(self):
-        self.check_for_loop(iter((0,1,2,3,4,5,6,7,8,9)), range(10))
-
-    # Test an xrange
-    def test_iter_xrange(self):
-        self.check_for_loop(iter(xrange(10)), range(10))
-
-    # Test a string
-    def test_iter_string(self):
-        self.check_for_loop(iter("abcde"), ["a", "b", "c", "d", "e"])
-
-    # Test a Unicode string
-    if have_unicode:
-        def test_iter_unicode(self):
-            self.check_for_loop(iter(unicode("abcde")),
-                                [unicode("a"), unicode("b"), unicode("c"),
-                                 unicode("d"), unicode("e")])
-
-    # Test a directory
-    def test_iter_dict(self):
-        dict = {}
-        for i in range(10):
-            dict[i] = None
-        self.check_for_loop(dict, dict.keys())
-
-    # Test a file
-    def test_iter_file(self):
-        f = open(TESTFN, "w")
-        try:
-            for i in range(5):
-                f.write("%d\n" % i)
-        finally:
-            f.close()
-        f = open(TESTFN, "r")
-        try:
-            self.check_for_loop(f, ["0\n", "1\n", "2\n", "3\n", "4\n"])
-            self.check_for_loop(f, [])
-        finally:
-            f.close()
-            try:
-                unlink(TESTFN)
-            except OSError:
-                pass
-
-    # Test list()'s use of iterators.
-    def test_builtin_list(self):
-        self.assertEqual(list(SequenceClass(5)), range(5))
-        self.assertEqual(list(SequenceClass(0)), [])
-        self.assertEqual(list(()), [])
-        self.assertEqual(list(range(10, -1, -1)), range(10, -1, -1))
-
-        d = {"one": 1, "two": 2, "three": 3}
-        self.assertEqual(list(d), d.keys())
-
-        self.assertRaises(TypeError, list, list)
-        self.assertRaises(TypeError, list, 42)
-
-        f = open(TESTFN, "w")
-        try:
-            for i in range(5):
-                f.write("%d\n" % i)
-        finally:
-            f.close()
-        f = open(TESTFN, "r")
-        try:
-            self.assertEqual(list(f), ["0\n", "1\n", "2\n", "3\n", "4\n"])
-            f.seek(0, 0)
-            self.assertEqual(list(f),
-                             ["0\n", "1\n", "2\n", "3\n", "4\n"])
-        finally:
-            f.close()
-            try:
-                unlink(TESTFN)
-            except OSError:
-                pass
-
-    # Test tuples()'s use of iterators.
-    def test_builtin_tuple(self):
-        self.assertEqual(tuple(SequenceClass(5)), (0, 1, 2, 3, 4))
-        self.assertEqual(tuple(SequenceClass(0)), ())
-        self.assertEqual(tuple([]), ())
-        self.assertEqual(tuple(()), ())
-        self.assertEqual(tuple("abc"), ("a", "b", "c"))
-
-        d = {"one": 1, "two": 2, "three": 3}
-        self.assertEqual(tuple(d), tuple(d.keys()))
-
-        self.assertRaises(TypeError, tuple, list)
-        self.assertRaises(TypeError, tuple, 42)
-
-        f = open(TESTFN, "w")
-        try:
-            for i in range(5):
-                f.write("%d\n" % i)
-        finally:
-            f.close()
-        f = open(TESTFN, "r")
-        try:
-            self.assertEqual(tuple(f), ("0\n", "1\n", "2\n", "3\n", "4\n"))
-            f.seek(0, 0)
-            self.assertEqual(tuple(f),
-                             ("0\n", "1\n", "2\n", "3\n", "4\n"))
-        finally:
-            f.close()
-            try:
-                unlink(TESTFN)
-            except OSError:
-                pass
-
-    # Test filter()'s use of iterators.
-    def test_builtin_filter(self):
-        self.assertEqual(filter(None, SequenceClass(5)), range(1, 5))
-        self.assertEqual(filter(None, SequenceClass(0)), [])
-        self.assertEqual(filter(None, ()), ())
-        self.assertEqual(filter(None, "abc"), "abc")
-
-        d = {"one": 1, "two": 2, "three": 3}
-        self.assertEqual(filter(None, d), d.keys())
-
-        self.assertRaises(TypeError, filter, None, list)
-        self.assertRaises(TypeError, filter, None, 42)
-
-        class Boolean:
-            def __init__(self, truth):
-                self.truth = truth
-            def __nonzero__(self):
-                return self.truth
-        bTrue = Boolean(1)
-        bFalse = Boolean(0)
-
-        class Seq:
-            def __init__(self, *args):
-                self.vals = args
-            def __iter__(self):
-                class SeqIter:
-                    def __init__(self, vals):
-                        self.vals = vals
-                        self.i = 0
-                    def __iter__(self):
-                        return self
-                    def next(self):
-                        i = self.i
-                        self.i = i + 1
-                        if i < len(self.vals):
-                            return self.vals[i]
-                        else:
-                            raise StopIteration
-                return SeqIter(self.vals)
-
-        seq = Seq(*([bTrue, bFalse] * 25))
-        self.assertEqual(filter(lambda x: not x, seq), [bFalse]*25)
-        self.assertEqual(filter(lambda x: not x, iter(seq)), [bFalse]*25)
-
-    # Test max() and min()'s use of iterators.
-    def test_builtin_max_min(self):
-        self.assertEqual(max(SequenceClass(5)), 4)
-        self.assertEqual(min(SequenceClass(5)), 0)
-        self.assertEqual(max(8, -1), 8)
-        self.assertEqual(min(8, -1), -1)
-
-        d = {"one": 1, "two": 2, "three": 3}
-        self.assertEqual(max(d), "two")
-        self.assertEqual(min(d), "one")
-        self.assertEqual(max(d.itervalues()), 3)
-        self.assertEqual(min(iter(d.itervalues())), 1)
-
-        f = open(TESTFN, "w")
-        try:
-            f.write("medium line\n")
-            f.write("xtra large line\n")
-            f.write("itty-bitty line\n")
-        finally:
-            f.close()
-        f = open(TESTFN, "r")
-        try:
-            self.assertEqual(min(f), "itty-bitty line\n")
-            f.seek(0, 0)
-            self.assertEqual(max(f), "xtra large line\n")
-        finally:
-            f.close()
-            try:
-                unlink(TESTFN)
-            except OSError:
-                pass
-
-    # Test map()'s use of iterators.
-    def test_builtin_map(self):
-        self.assertEqual(map(lambda x: x+1, SequenceClass(5)), range(1, 6))
-
-        d = {"one": 1, "two": 2, "three": 3}
-        self.assertEqual(map(lambda k, d=d: (k, d[k]), d), d.items())
-        dkeys = d.keys()
-        expected = [(i < len(d) and dkeys[i] or None,
-                     i,
-                     i < len(d) and dkeys[i] or None)
-                    for i in range(5)]
-
-        # Deprecated map(None, ...)
-        with check_py3k_warnings():
-            self.assertEqual(map(None, SequenceClass(5)), range(5))
-            self.assertEqual(map(None, d), d.keys())
-            self.assertEqual(map(None, d,
-                                       SequenceClass(5),
-                                       iter(d.iterkeys())),
-                             expected)
-
-        f = open(TESTFN, "w")
-        try:
-            for i in range(10):
-                f.write("xy" * i + "\n") # line i has len 2*i+1
-        finally:
-            f.close()
-        f = open(TESTFN, "r")
-        try:
-            self.assertEqual(map(len, f), range(1, 21, 2))
-        finally:
-            f.close()
-            try:
-                unlink(TESTFN)
-            except OSError:
-                pass
-
-    # Test zip()'s use of iterators.
-    def test_builtin_zip(self):
-        self.assertEqual(zip(), [])
-        self.assertEqual(zip(*[]), [])
-        self.assertEqual(zip(*[(1, 2), 'ab']), [(1, 'a'), (2, 'b')])
-
-        self.assertRaises(TypeError, zip, None)
-        self.assertRaises(TypeError, zip, range(10), 42)
-        self.assertRaises(TypeError, zip, range(10), zip)
-
-        self.assertEqual(zip(IteratingSequenceClass(3)),
-                         [(0,), (1,), (2,)])
-        self.assertEqual(zip(SequenceClass(3)),
-                         [(0,), (1,), (2,)])
-
-        d = {"one": 1, "two": 2, "three": 3}
-        self.assertEqual(d.items(), zip(d, d.itervalues()))
-
-        # Generate all ints starting at constructor arg.
-        class IntsFrom:
-            def __init__(self, start):
-                self.i = start
-
-            def __iter__(self):
-                return self
-
-            def next(self):
-                i = self.i
-                self.i = i+1
-                return i
-
-        f = open(TESTFN, "w")
-        try:
-            f.write("a\n" "bbb\n" "cc\n")
-        finally:
-            f.close()
-        f = open(TESTFN, "r")
-        try:
-            self.assertEqual(zip(IntsFrom(0), f, IntsFrom(-100)),
-                             [(0, "a\n", -100),
-                              (1, "bbb\n", -99),
-                              (2, "cc\n", -98)])
-        finally:
-            f.close()
-            try:
-                unlink(TESTFN)
-            except OSError:
-                pass
-
-        self.assertEqual(zip(xrange(5)), [(i,) for i in range(5)])
-
-        # Classes that lie about their lengths.
-        class NoGuessLen5:
-            def __getitem__(self, i):
-                if i >= 5:
-                    raise IndexError
-                return i
-
-        class Guess3Len5(NoGuessLen5):
-            def __len__(self):
-                return 3
-
-        class Guess30Len5(NoGuessLen5):
-            def __len__(self):
-                return 30
-
-        self.assertEqual(len(Guess3Len5()), 3)
-        self.assertEqual(len(Guess30Len5()), 30)
-        self.assertEqual(zip(NoGuessLen5()), zip(range(5)))
-        self.assertEqual(zip(Guess3Len5()), zip(range(5)))
-        self.assertEqual(zip(Guess30Len5()), zip(range(5)))
-
-        expected = [(i, i) for i in range(5)]
-        for x in NoGuessLen5(), Guess3Len5(), Guess30Len5():
-            for y in NoGuessLen5(), Guess3Len5(), Guess30Len5():
-                self.assertEqual(zip(x, y), expected)
-
-    # Test reduces()'s use of iterators.
-    def test_deprecated_builtin_reduce(self):
-        with check_py3k_warnings():
-            self._test_builtin_reduce()
-
-    def _test_builtin_reduce(self):
-        from operator import add
-        self.assertEqual(reduce(add, SequenceClass(5)), 10)
-        self.assertEqual(reduce(add, SequenceClass(5), 42), 52)
-        self.assertRaises(TypeError, reduce, add, SequenceClass(0))
-        self.assertEqual(reduce(add, SequenceClass(0), 42), 42)
-        self.assertEqual(reduce(add, SequenceClass(1)), 0)
-        self.assertEqual(reduce(add, SequenceClass(1), 42), 42)
-
-        d = {"one": 1, "two": 2, "three": 3}
-        self.assertEqual(reduce(add, d), "".join(d.keys()))
-
-    # This test case will be removed if we don't have Unicode
-    def test_unicode_join_endcase(self):
-
-        # This class inserts a Unicode object into its argument's natural
-        # iteration, in the 3rd position.
-        class OhPhooey:
-            def __init__(self, seq):
-                self.it = iter(seq)
-                self.i = 0
-
-            def __iter__(self):
-                return self
-
-            def next(self):
-                i = self.i
-                self.i = i+1
-                if i == 2:
-                    return unicode("fooled you!")
-                return self.it.next()
-
-        f = open(TESTFN, "w")
-        try:
-            f.write("a\n" + "b\n" + "c\n")
-        finally:
-            f.close()
-
-        f = open(TESTFN, "r")
-        # Nasty:  string.join(s) can't know whether unicode.join() is needed
-        # until it's seen all of s's elements.  But in this case, f's
-        # iterator cannot be restarted.  So what we're testing here is
-        # whether string.join() can manage to remember everything it's seen
-        # and pass that on to unicode.join().
-        try:
-            got = " - ".join(OhPhooey(f))
-            self.assertEqual(got, unicode("a\n - b\n - fooled you! - c\n"))
-        finally:
-            f.close()
-            try:
-                unlink(TESTFN)
-            except OSError:
-                pass
-    if not have_unicode:
-        def test_unicode_join_endcase(self): pass
-
-    # Test iterators with 'x in y' and 'x not in y'.
-    def test_in_and_not_in(self):
-        for sc5 in IteratingSequenceClass(5), SequenceClass(5):
-            for i in range(5):
-                self.assertIn(i, sc5)
-            for i in "abc", -1, 5, 42.42, (3, 4), [], {1: 1}, 3-12j, sc5:
-                self.assertNotIn(i, sc5)
-
-        self.assertRaises(TypeError, lambda: 3 in 12)
-        self.assertRaises(TypeError, lambda: 3 not in map)
-
-        d = {"one": 1, "two": 2, "three": 3, 1j: 2j}
-        for k in d:
-            self.assertIn(k, d)
-            self.assertNotIn(k, d.itervalues())
-        for v in d.values():
-            self.assertIn(v, d.itervalues())
-            self.assertNotIn(v, d)
-        for k, v in d.iteritems():
-            self.assertIn((k, v), d.iteritems())
-            self.assertNotIn((v, k), d.iteritems())
-
-        f = open(TESTFN, "w")
-        try:
-            f.write("a\n" "b\n" "c\n")
-        finally:
-            f.close()
-        f = open(TESTFN, "r")
-        try:
-            for chunk in "abc":
-                f.seek(0, 0)
-                self.assertNotIn(chunk, f)
-                f.seek(0, 0)
-                self.assertIn((chunk + "\n"), f)
-        finally:
-            f.close()
-            try:
-                unlink(TESTFN)
-            except OSError:
-                pass
-
-    # Test iterators with operator.countOf (PySequence_Count).
-    def test_countOf(self):
-        from operator import countOf
-        self.assertEqual(countOf([1,2,2,3,2,5], 2), 3)
-        self.assertEqual(countOf((1,2,2,3,2,5), 2), 3)
-        self.assertEqual(countOf("122325", "2"), 3)
-        self.assertEqual(countOf("122325", "6"), 0)
-
-        self.assertRaises(TypeError, countOf, 42, 1)
-        self.assertRaises(TypeError, countOf, countOf, countOf)
-
-        d = {"one": 3, "two": 3, "three": 3, 1j: 2j}
-        for k in d:
-            self.assertEqual(countOf(d, k), 1)
-        self.assertEqual(countOf(d.itervalues(), 3), 3)
-        self.assertEqual(countOf(d.itervalues(), 2j), 1)
-        self.assertEqual(countOf(d.itervalues(), 1j), 0)
-
-        f = open(TESTFN, "w")
-        try:
-            f.write("a\n" "b\n" "c\n" "b\n")
-        finally:
-            f.close()
-        f = open(TESTFN, "r")
-        try:
-            for letter, count in ("a", 1), ("b", 2), ("c", 1), ("d", 0):
-                f.seek(0, 0)
-                self.assertEqual(countOf(f, letter + "\n"), count)
-        finally:
-            f.close()
-            try:
-                unlink(TESTFN)
-            except OSError:
-                pass
-
-    # Test iterators with operator.indexOf (PySequence_Index).
-    def test_indexOf(self):
-        from operator import indexOf
-        self.assertEqual(indexOf([1,2,2,3,2,5], 1), 0)
-        self.assertEqual(indexOf((1,2,2,3,2,5), 2), 1)
-        self.assertEqual(indexOf((1,2,2,3,2,5), 3), 3)
-        self.assertEqual(indexOf((1,2,2,3,2,5), 5), 5)
-        self.assertRaises(ValueError, indexOf, (1,2,2,3,2,5), 0)
-        self.assertRaises(ValueError, indexOf, (1,2,2,3,2,5), 6)
-
-        self.assertEqual(indexOf("122325", "2"), 1)
-        self.assertEqual(indexOf("122325", "5"), 5)
-        self.assertRaises(ValueError, indexOf, "122325", "6")
-
-        self.assertRaises(TypeError, indexOf, 42, 1)
-        self.assertRaises(TypeError, indexOf, indexOf, indexOf)
-
-        f = open(TESTFN, "w")
-        try:
-            f.write("a\n" "b\n" "c\n" "d\n" "e\n")
-        finally:
-            f.close()
-        f = open(TESTFN, "r")
-        try:
-            fiter = iter(f)
-            self.assertEqual(indexOf(fiter, "b\n"), 1)
-            self.assertEqual(indexOf(fiter, "d\n"), 1)
-            self.assertEqual(indexOf(fiter, "e\n"), 0)
-            self.assertRaises(ValueError, indexOf, fiter, "a\n")
-        finally:
-            f.close()
-            try:
-                unlink(TESTFN)
-            except OSError:
-                pass
-
-        iclass = IteratingSequenceClass(3)
-        for i in range(3):
-            self.assertEqual(indexOf(iclass, i), i)
-        self.assertRaises(ValueError, indexOf, iclass, -1)
-
-    # Test iterators with file.writelines().
-    def test_writelines(self):
-        f = file(TESTFN, "w")
-
-        try:
-            self.assertRaises(TypeError, f.writelines, None)
-            self.assertRaises(TypeError, f.writelines, 42)
-
-            f.writelines(["1\n", "2\n"])
-            f.writelines(("3\n", "4\n"))
-            f.writelines({'5\n': None})
-            f.writelines({})
-
-            # Try a big chunk too.
-            class Iterator:
-                def __init__(self, start, finish):
-                    self.start = start
-                    self.finish = finish
-                    self.i = self.start
-
-                def next(self):
-                    if self.i >= self.finish:
-                        raise StopIteration
-                    result = str(self.i) + '\n'
-                    self.i += 1
-                    return result
-
-                def __iter__(self):
-                    return self
-
-            class Whatever:
-                def __init__(self, start, finish):
-                    self.start = start
-                    self.finish = finish
-
-                def __iter__(self):
-                    return Iterator(self.start, self.finish)
-
-            f.writelines(Whatever(6, 6+2000))
-            f.close()
-
-            f = file(TESTFN)
-            expected = [str(i) + "\n" for i in range(1, 2006)]
-            self.assertEqual(list(f), expected)
-
-        finally:
-            f.close()
-            try:
-                unlink(TESTFN)
-            except OSError:
-                pass
-
-
-    # Test iterators on RHS of unpacking assignments.
-    def test_unpack_iter(self):
-        a, b = 1, 2
-        self.assertEqual((a, b), (1, 2))
-
-        a, b, c = IteratingSequenceClass(3)
-        self.assertEqual((a, b, c), (0, 1, 2))
-
-        try:    # too many values
-            a, b = IteratingSequenceClass(3)
-        except ValueError:
-            pass
-        else:
-            self.fail("should have raised ValueError")
-
-        try:    # not enough values
-            a, b, c = IteratingSequenceClass(2)
-        except ValueError:
-            pass
-        else:
-            self.fail("should have raised ValueError")
-
-        try:    # not iterable
-            a, b, c = len
-        except TypeError:
-            pass
-        else:
-            self.fail("should have raised TypeError")
-
-        a, b, c = {1: 42, 2: 42, 3: 42}.itervalues()
-        self.assertEqual((a, b, c), (42, 42, 42))
-
-        f = open(TESTFN, "w")
-        lines = ("a\n", "bb\n", "ccc\n")
-        try:
-            for line in lines:
-                f.write(line)
-        finally:
-            f.close()
-        f = open(TESTFN, "r")
-        try:
-            a, b, c = f
-            self.assertEqual((a, b, c), lines)
-        finally:
-            f.close()
-            try:
-                unlink(TESTFN)
-            except OSError:
-                pass
-
-        (a, b), (c,) = IteratingSequenceClass(2), {42: 24}
-        self.assertEqual((a, b, c), (0, 1, 42))
-
-
-    @cpython_only
-    def test_ref_counting_behavior(self):
-        class C(object):
-            count = 0
-            def __new__(cls):
-                cls.count += 1
-                return object.__new__(cls)
-            def __del__(self):
-                cls = self.__class__
-                assert cls.count > 0
-                cls.count -= 1
-        x = C()
-        self.assertEqual(C.count, 1)
-        del x
-        self.assertEqual(C.count, 0)
-        l = [C(), C(), C()]
-        self.assertEqual(C.count, 3)
-        try:
-            a, b = iter(l)
-        except ValueError:
-            pass
-        del l
-        self.assertEqual(C.count, 0)
-
-
-    # Make sure StopIteration is a "sink state".
-    # This tests various things that weren't sink states in Python 2.2.1,
-    # plus various things that always were fine.
-
-    def test_sinkstate_list(self):
-        # This used to fail
-        a = range(5)
-        b = iter(a)
-        self.assertEqual(list(b), range(5))
-        a.extend(range(5, 10))
-        self.assertEqual(list(b), [])
-
-    def test_sinkstate_tuple(self):
-        a = (0, 1, 2, 3, 4)
-        b = iter(a)
-        self.assertEqual(list(b), range(5))
-        self.assertEqual(list(b), [])
-
-    def test_sinkstate_string(self):
-        a = "abcde"
-        b = iter(a)
-        self.assertEqual(list(b), ['a', 'b', 'c', 'd', 'e'])
-        self.assertEqual(list(b), [])
-
-    def test_sinkstate_sequence(self):
-        # This used to fail
-        a = SequenceClass(5)
-        b = iter(a)
-        self.assertEqual(list(b), range(5))
-        a.n = 10
-        self.assertEqual(list(b), [])
-
-    def test_sinkstate_callable(self):
-        # This used to fail
-        def spam(state=[0]):
-            i = state[0]
-            state[0] = i+1
-            if i == 10:
-                raise AssertionError, "shouldn't have gotten this far"
-            return i
-        b = iter(spam, 5)
-        self.assertEqual(list(b), range(5))
-        self.assertEqual(list(b), [])
-
-    def test_sinkstate_dict(self):
-        # XXX For a more thorough test, see towards the end of:
-        # http://mail.python.org/pipermail/python-dev/2002-July/026512.html
-        a = {1:1, 2:2, 0:0, 4:4, 3:3}
-        for b in iter(a), a.iterkeys(), a.iteritems(), a.itervalues():
-            b = iter(a)
-            self.assertEqual(len(list(b)), 5)
-            self.assertEqual(list(b), [])
-
-    def test_sinkstate_yield(self):
-        def gen():
-            for i in range(5):
-                yield i
-        b = gen()
-        self.assertEqual(list(b), range(5))
-        self.assertEqual(list(b), [])
-
-    def test_sinkstate_range(self):
-        a = xrange(5)
-        b = iter(a)
-        self.assertEqual(list(b), range(5))
-        self.assertEqual(list(b), [])
-
-    def test_sinkstate_enumerate(self):
-        a = range(5)
-        e = enumerate(a)
-        b = iter(e)
-        self.assertEqual(list(b), zip(range(5), range(5)))
-        self.assertEqual(list(b), [])
-
-    def test_3720(self):
-        # Avoid a crash, when an iterator deletes its next() method.
-        class BadIterator(object):
-            def __iter__(self):
-                return self
-            def next(self):
-                del BadIterator.next
-                return 1
-
-        try:
-            for i in BadIterator() :
-                pass
-        except TypeError:
-            pass
-
-
-def test_main():
-    run_unittest(TestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_iterlen.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_iterlen.py
deleted file mode 100644
index 8d1acab..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_iterlen.py
+++ /dev/null
@@ -1,257 +0,0 @@
-""" Test Iterator Length Transparency
-
-Some functions or methods which accept general iterable arguments have
-optional, more efficient code paths if they know how many items to expect.
-For instance, map(func, iterable), will pre-allocate the exact amount of
-space required whenever the iterable can report its length.
-
-The desired invariant is:  len(it)==len(list(it)).
-
-A complication is that an iterable and iterator can be the same object. To
-maintain the invariant, an iterator needs to dynamically update its length.
-For instance, an iterable such as xrange(10) always reports its length as ten,
-but it=iter(xrange(10)) starts at ten, and then goes to nine after it.next().
-Having this capability means that map() can ignore the distinction between
-map(func, iterable) and map(func, iter(iterable)).
-
-When the iterable is immutable, the implementation can straight-forwardly
-report the original length minus the cumulative number of calls to next().
-This is the case for tuples, xrange objects, and itertools.repeat().
-
-Some containers become temporarily immutable during iteration.  This includes
-dicts, sets, and collections.deque.  Their implementation is equally simple
-though they need to permanently set their length to zero whenever there is
-an attempt to iterate after a length mutation.
-
-The situation slightly more involved whenever an object allows length mutation
-during iteration.  Lists and sequence iterators are dynamically updatable.
-So, if a list is extended during iteration, the iterator will continue through
-the new items.  If it shrinks to a point before the most recent iteration,
-then no further items are available and the length is reported at zero.
-
-Reversed objects can also be wrapped around mutable objects; however, any
-appends after the current position are ignored.  Any other approach leads
-to confusion and possibly returning the same item more than once.
-
-The iterators not listed above, such as enumerate and the other itertools,
-are not length transparent because they have no way to distinguish between
-iterables that report static length and iterators whose length changes with
-each call (i.e. the difference between enumerate('abc') and
-enumerate(iter('abc')).
-
-"""
-
-import unittest
-from test import test_support
-from itertools import repeat
-from collections import deque
-from __builtin__ import len as _len
-
-n = 10
-
-def len(obj):
-    try:
-        return _len(obj)
-    except TypeError:
-        try:
-            # note: this is an internal undocumented API,
-            # don't rely on it in your own programs
-            return obj.__length_hint__()
-        except AttributeError:
-            raise TypeError
-
-class TestInvariantWithoutMutations(unittest.TestCase):
-
-    def test_invariant(self):
-        it = self.it
-        for i in reversed(xrange(1, n+1)):
-            self.assertEqual(len(it), i)
-            it.next()
-        self.assertEqual(len(it), 0)
-        self.assertRaises(StopIteration, it.next)
-        self.assertEqual(len(it), 0)
-
-class TestTemporarilyImmutable(TestInvariantWithoutMutations):
-
-    def test_immutable_during_iteration(self):
-        # objects such as deques, sets, and dictionaries enforce
-        # length immutability  during iteration
-
-        it = self.it
-        self.assertEqual(len(it), n)
-        it.next()
-        self.assertEqual(len(it), n-1)
-        self.mutate()
-        self.assertRaises(RuntimeError, it.next)
-        self.assertEqual(len(it), 0)
-
-## ------- Concrete Type Tests -------
-
-class TestRepeat(TestInvariantWithoutMutations):
-
-    def setUp(self):
-        self.it = repeat(None, n)
-
-    def test_no_len_for_infinite_repeat(self):
-        # The repeat() object can also be infinite
-        self.assertRaises(TypeError, len, repeat(None))
-
-class TestXrange(TestInvariantWithoutMutations):
-
-    def setUp(self):
-        self.it = iter(xrange(n))
-
-class TestXrangeCustomReversed(TestInvariantWithoutMutations):
-
-    def setUp(self):
-        self.it = reversed(xrange(n))
-
-class TestTuple(TestInvariantWithoutMutations):
-
-    def setUp(self):
-        self.it = iter(tuple(xrange(n)))
-
-## ------- Types that should not be mutated during iteration -------
-
-class TestDeque(TestTemporarilyImmutable):
-
-    def setUp(self):
-        d = deque(xrange(n))
-        self.it = iter(d)
-        self.mutate = d.pop
-
-class TestDequeReversed(TestTemporarilyImmutable):
-
-    def setUp(self):
-        d = deque(xrange(n))
-        self.it = reversed(d)
-        self.mutate = d.pop
-
-class TestDictKeys(TestTemporarilyImmutable):
-
-    def setUp(self):
-        d = dict.fromkeys(xrange(n))
-        self.it = iter(d)
-        self.mutate = d.popitem
-
-class TestDictItems(TestTemporarilyImmutable):
-
-    def setUp(self):
-        d = dict.fromkeys(xrange(n))
-        self.it = d.iteritems()
-        self.mutate = d.popitem
-
-class TestDictValues(TestTemporarilyImmutable):
-
-    def setUp(self):
-        d = dict.fromkeys(xrange(n))
-        self.it = d.itervalues()
-        self.mutate = d.popitem
-
-class TestSet(TestTemporarilyImmutable):
-
-    def setUp(self):
-        d = set(xrange(n))
-        self.it = iter(d)
-        self.mutate = d.pop
-
-## ------- Types that can mutate during iteration -------
-
-class TestList(TestInvariantWithoutMutations):
-
-    def setUp(self):
-        self.it = iter(range(n))
-
-    def test_mutation(self):
-        d = range(n)
-        it = iter(d)
-        it.next()
-        it.next()
-        self.assertEqual(len(it), n-2)
-        d.append(n)
-        self.assertEqual(len(it), n-1)  # grow with append
-        d[1:] = []
-        self.assertEqual(len(it), 0)
-        self.assertEqual(list(it), [])
-        d.extend(xrange(20))
-        self.assertEqual(len(it), 0)
-
-class TestListReversed(TestInvariantWithoutMutations):
-
-    def setUp(self):
-        self.it = reversed(range(n))
-
-    def test_mutation(self):
-        d = range(n)
-        it = reversed(d)
-        it.next()
-        it.next()
-        self.assertEqual(len(it), n-2)
-        d.append(n)
-        self.assertEqual(len(it), n-2)  # ignore append
-        d[1:] = []
-        self.assertEqual(len(it), 0)
-        self.assertEqual(list(it), [])  # confirm invariant
-        d.extend(xrange(20))
-        self.assertEqual(len(it), 0)
-
-## -- Check to make sure exceptions are not suppressed by __length_hint__()
-
-
-class BadLen(object):
-    def __iter__(self): return iter(range(10))
-    def __len__(self):
-        raise RuntimeError('hello')
-
-class BadLengthHint(object):
-    def __iter__(self): return iter(range(10))
-    def __length_hint__(self):
-        raise RuntimeError('hello')
-
-class NoneLengthHint(object):
-    def __iter__(self): return iter(range(10))
-    def __length_hint__(self):
-        return None
-
-class TestLengthHintExceptions(unittest.TestCase):
-
-    def test_issue1242657(self):
-        self.assertRaises(RuntimeError, list, BadLen())
-        self.assertRaises(RuntimeError, list, BadLengthHint())
-        self.assertRaises(RuntimeError, [].extend, BadLen())
-        self.assertRaises(RuntimeError, [].extend, BadLengthHint())
-        self.assertRaises(RuntimeError, zip, BadLen())
-        self.assertRaises(RuntimeError, zip, BadLengthHint())
-        self.assertRaises(RuntimeError, filter, None, BadLen())
-        self.assertRaises(RuntimeError, filter, None, BadLengthHint())
-        self.assertRaises(RuntimeError, map, chr, BadLen())
-        self.assertRaises(RuntimeError, map, chr, BadLengthHint())
-        b = bytearray(range(10))
-        self.assertRaises(RuntimeError, b.extend, BadLen())
-        self.assertRaises(RuntimeError, b.extend, BadLengthHint())
-
-    def test_invalid_hint(self):
-        # Make sure an invalid result doesn't muck-up the works
-        self.assertEqual(list(NoneLengthHint()), list(range(10)))
-
-
-def test_main():
-    unittests = [
-        TestRepeat,
-        TestXrange,
-        TestXrangeCustomReversed,
-        TestTuple,
-        TestDeque,
-        TestDequeReversed,
-        TestDictKeys,
-        TestDictItems,
-        TestDictValues,
-        TestSet,
-        TestList,
-        TestListReversed,
-        TestLengthHintExceptions,
-    ]
-    test_support.run_unittest(*unittests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_itertools.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_itertools.py
deleted file mode 100644
index 2f40bf3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_itertools.py
+++ /dev/null
@@ -1,1650 +0,0 @@
-import unittest
-from test import test_support
-from itertools import *
-from weakref import proxy
-from decimal import Decimal
-from fractions import Fraction
-import sys
-import operator
-import random
-import copy
-import pickle
-from functools import reduce
-maxsize = test_support.MAX_Py_ssize_t
-minsize = -maxsize-1
-
-def onearg(x):
-    'Test function of one argument'
-    return 2*x
-
-def errfunc(*args):
-    'Test function that raises an error'
-    raise ValueError
-
-def gen3():
-    'Non-restartable source sequence'
-    for i in (0, 1, 2):
-        yield i
-
-def isEven(x):
-    'Test predicate'
-    return x%2==0
-
-def isOdd(x):
-    'Test predicate'
-    return x%2==1
-
-class StopNow:
-    'Class emulating an empty iterable.'
-    def __iter__(self):
-        return self
-    def next(self):
-        raise StopIteration
-
-def take(n, seq):
-    'Convenience function for partially consuming a long of infinite iterable'
-    return list(islice(seq, n))
-
-def prod(iterable):
-    return reduce(operator.mul, iterable, 1)
-
-def fact(n):
-    'Factorial'
-    return prod(range(1, n+1))
-
-class TestBasicOps(unittest.TestCase):
-    def test_chain(self):
-
-        def chain2(*iterables):
-            'Pure python version in the docs'
-            for it in iterables:
-                for element in it:
-                    yield element
-
-        for c in (chain, chain2):
-            self.assertEqual(list(c('abc', 'def')), list('abcdef'))
-            self.assertEqual(list(c('abc')), list('abc'))
-            self.assertEqual(list(c('')), [])
-            self.assertEqual(take(4, c('abc', 'def')), list('abcd'))
-            self.assertRaises(TypeError, list,c(2, 3))
-
-    def test_chain_from_iterable(self):
-        self.assertEqual(list(chain.from_iterable(['abc', 'def'])), list('abcdef'))
-        self.assertEqual(list(chain.from_iterable(['abc'])), list('abc'))
-        self.assertEqual(list(chain.from_iterable([''])), [])
-        self.assertEqual(take(4, chain.from_iterable(['abc', 'def'])), list('abcd'))
-        self.assertRaises(TypeError, list, chain.from_iterable([2, 3]))
-
-    def test_combinations(self):
-        self.assertRaises(TypeError, combinations, 'abc')       # missing r argument
-        self.assertRaises(TypeError, combinations, 'abc', 2, 1) # too many arguments
-        self.assertRaises(TypeError, combinations, None)        # pool is not iterable
-        self.assertRaises(ValueError, combinations, 'abc', -2)  # r is negative
-        self.assertEqual(list(combinations('abc', 32)), [])     # r > n
-        self.assertEqual(list(combinations(range(4), 3)),
-                                           [(0,1,2), (0,1,3), (0,2,3), (1,2,3)])
-
-        def combinations1(iterable, r):
-            'Pure python version shown in the docs'
-            pool = tuple(iterable)
-            n = len(pool)
-            if r > n:
-                return
-            indices = range(r)
-            yield tuple(pool[i] for i in indices)
-            while 1:
-                for i in reversed(range(r)):
-                    if indices[i] != i + n - r:
-                        break
-                else:
-                    return
-                indices[i] += 1
-                for j in range(i+1, r):
-                    indices[j] = indices[j-1] + 1
-                yield tuple(pool[i] for i in indices)
-
-        def combinations2(iterable, r):
-            'Pure python version shown in the docs'
-            pool = tuple(iterable)
-            n = len(pool)
-            for indices in permutations(range(n), r):
-                if sorted(indices) == list(indices):
-                    yield tuple(pool[i] for i in indices)
-
-        def combinations3(iterable, r):
-            'Pure python version from cwr()'
-            pool = tuple(iterable)
-            n = len(pool)
-            for indices in combinations_with_replacement(range(n), r):
-                if len(set(indices)) == r:
-                    yield tuple(pool[i] for i in indices)
-
-        for n in range(7):
-            values = [5*x-12 for x in range(n)]
-            for r in range(n+2):
-                result = list(combinations(values, r))
-                self.assertEqual(len(result), 0 if r>n else fact(n) // fact(r) // fact(n-r)) # right number of combs
-                self.assertEqual(len(result), len(set(result)))         # no repeats
-                self.assertEqual(result, sorted(result))                # lexicographic order
-                for c in result:
-                    self.assertEqual(len(c), r)                         # r-length combinations
-                    self.assertEqual(len(set(c)), r)                    # no duplicate elements
-                    self.assertEqual(list(c), sorted(c))                # keep original ordering
-                    self.assertTrue(all(e in values for e in c))           # elements taken from input iterable
-                    self.assertEqual(list(c),
-                                     [e for e in values if e in c])      # comb is a subsequence of the input iterable
-                self.assertEqual(result, list(combinations1(values, r))) # matches first pure python version
-                self.assertEqual(result, list(combinations2(values, r))) # matches second pure python version
-                self.assertEqual(result, list(combinations3(values, r))) # matches second pure python version
-
-        # Test implementation detail:  tuple re-use
-        self.assertEqual(len(set(map(id, combinations('abcde', 3)))), 1)
-        self.assertNotEqual(len(set(map(id, list(combinations('abcde', 3))))), 1)
-
-    def test_combinations_with_replacement(self):
-        cwr = combinations_with_replacement
-        self.assertRaises(TypeError, cwr, 'abc')       # missing r argument
-        self.assertRaises(TypeError, cwr, 'abc', 2, 1) # too many arguments
-        self.assertRaises(TypeError, cwr, None)        # pool is not iterable
-        self.assertRaises(ValueError, cwr, 'abc', -2)  # r is negative
-        self.assertEqual(list(cwr('ABC', 2)),
-                         [('A','A'), ('A','B'), ('A','C'), ('B','B'), ('B','C'), ('C','C')])
-
-        def cwr1(iterable, r):
-            'Pure python version shown in the docs'
-            # number items returned:  (n+r-1)! / r! / (n-1)! when n>0
-            pool = tuple(iterable)
-            n = len(pool)
-            if not n and r:
-                return
-            indices = [0] * r
-            yield tuple(pool[i] for i in indices)
-            while 1:
-                for i in reversed(range(r)):
-                    if indices[i] != n - 1:
-                        break
-                else:
-                    return
-                indices[i:] = [indices[i] + 1] * (r - i)
-                yield tuple(pool[i] for i in indices)
-
-        def cwr2(iterable, r):
-            'Pure python version shown in the docs'
-            pool = tuple(iterable)
-            n = len(pool)
-            for indices in product(range(n), repeat=r):
-                if sorted(indices) == list(indices):
-                    yield tuple(pool[i] for i in indices)
-
-        def numcombs(n, r):
-            if not n:
-                return 0 if r else 1
-            return fact(n+r-1) // fact(r) // fact(n-1)
-
-        for n in range(7):
-            values = [5*x-12 for x in range(n)]
-            for r in range(n+2):
-                result = list(cwr(values, r))
-
-                self.assertEqual(len(result), numcombs(n, r))           # right number of combs
-                self.assertEqual(len(result), len(set(result)))         # no repeats
-                self.assertEqual(result, sorted(result))                # lexicographic order
-
-                regular_combs = list(combinations(values, r))           # compare to combs without replacement
-                if n == 0 or r <= 1:
-                    self.assertEqual(result, regular_combs)            # cases that should be identical
-                else:
-                    self.assertTrue(set(result) >= set(regular_combs))     # rest should be supersets of regular combs
-
-                for c in result:
-                    self.assertEqual(len(c), r)                         # r-length combinations
-                    noruns = [k for k,v in groupby(c)]                  # combo without consecutive repeats
-                    self.assertEqual(len(noruns), len(set(noruns)))     # no repeats other than consecutive
-                    self.assertEqual(list(c), sorted(c))                # keep original ordering
-                    self.assertTrue(all(e in values for e in c))           # elements taken from input iterable
-                    self.assertEqual(noruns,
-                                     [e for e in values if e in c])     # comb is a subsequence of the input iterable
-                self.assertEqual(result, list(cwr1(values, r)))         # matches first pure python version
-                self.assertEqual(result, list(cwr2(values, r)))         # matches second pure python version
-
-        # Test implementation detail:  tuple re-use
-        self.assertEqual(len(set(map(id, cwr('abcde', 3)))), 1)
-        self.assertNotEqual(len(set(map(id, list(cwr('abcde', 3))))), 1)
-
-    def test_permutations(self):
-        self.assertRaises(TypeError, permutations)              # too few arguments
-        self.assertRaises(TypeError, permutations, 'abc', 2, 1) # too many arguments
-        self.assertRaises(TypeError, permutations, None)        # pool is not iterable
-        self.assertRaises(ValueError, permutations, 'abc', -2)  # r is negative
-        self.assertEqual(list(permutations('abc', 32)), [])     # r > n
-        self.assertRaises(TypeError, permutations, 'abc', 's')  # r is not an int or None
-        self.assertEqual(list(permutations(range(3), 2)),
-                                           [(0,1), (0,2), (1,0), (1,2), (2,0), (2,1)])
-
-        def permutations1(iterable, r=None):
-            'Pure python version shown in the docs'
-            pool = tuple(iterable)
-            n = len(pool)
-            r = n if r is None else r
-            if r > n:
-                return
-            indices = range(n)
-            cycles = range(n, n-r, -1)
-            yield tuple(pool[i] for i in indices[:r])
-            while n:
-                for i in reversed(range(r)):
-                    cycles[i] -= 1
-                    if cycles[i] == 0:
-                        indices[i:] = indices[i+1:] + indices[i:i+1]
-                        cycles[i] = n - i
-                    else:
-                        j = cycles[i]
-                        indices[i], indices[-j] = indices[-j], indices[i]
-                        yield tuple(pool[i] for i in indices[:r])
-                        break
-                else:
-                    return
-
-        def permutations2(iterable, r=None):
-            'Pure python version shown in the docs'
-            pool = tuple(iterable)
-            n = len(pool)
-            r = n if r is None else r
-            for indices in product(range(n), repeat=r):
-                if len(set(indices)) == r:
-                    yield tuple(pool[i] for i in indices)
-
-        for n in range(7):
-            values = [5*x-12 for x in range(n)]
-            for r in range(n+2):
-                result = list(permutations(values, r))
-                self.assertEqual(len(result), 0 if r>n else fact(n) // fact(n-r))      # right number of perms
-                self.assertEqual(len(result), len(set(result)))         # no repeats
-                self.assertEqual(result, sorted(result))                # lexicographic order
-                for p in result:
-                    self.assertEqual(len(p), r)                         # r-length permutations
-                    self.assertEqual(len(set(p)), r)                    # no duplicate elements
-                    self.assertTrue(all(e in values for e in p))           # elements taken from input iterable
-                self.assertEqual(result, list(permutations1(values, r))) # matches first pure python version
-                self.assertEqual(result, list(permutations2(values, r))) # matches second pure python version
-                if r == n:
-                    self.assertEqual(result, list(permutations(values, None))) # test r as None
-                    self.assertEqual(result, list(permutations(values)))       # test default r
-
-        # Test implementation detail:  tuple re-use
-        self.assertEqual(len(set(map(id, permutations('abcde', 3)))), 1)
-        self.assertNotEqual(len(set(map(id, list(permutations('abcde', 3))))), 1)
-
-    def test_combinatorics(self):
-        # Test relationships between product(), permutations(),
-        # combinations() and combinations_with_replacement().
-
-        for n in range(6):
-            s = 'ABCDEFG'[:n]
-            for r in range(8):
-                prod = list(product(s, repeat=r))
-                cwr = list(combinations_with_replacement(s, r))
-                perm = list(permutations(s, r))
-                comb = list(combinations(s, r))
-
-                # Check size
-                self.assertEqual(len(prod), n**r)
-                self.assertEqual(len(cwr), (fact(n+r-1) // fact(r) // fact(n-1)) if n else (not r))
-                self.assertEqual(len(perm), 0 if r>n else fact(n) // fact(n-r))
-                self.assertEqual(len(comb), 0 if r>n else fact(n) // fact(r) // fact(n-r))
-
-                # Check lexicographic order without repeated tuples
-                self.assertEqual(prod, sorted(set(prod)))
-                self.assertEqual(cwr, sorted(set(cwr)))
-                self.assertEqual(perm, sorted(set(perm)))
-                self.assertEqual(comb, sorted(set(comb)))
-
-                # Check interrelationships
-                self.assertEqual(cwr, [t for t in prod if sorted(t)==list(t)]) # cwr: prods which are sorted
-                self.assertEqual(perm, [t for t in prod if len(set(t))==r])    # perm: prods with no dups
-                self.assertEqual(comb, [t for t in perm if sorted(t)==list(t)]) # comb: perms that are sorted
-                self.assertEqual(comb, [t for t in cwr if len(set(t))==r])      # comb: cwrs without dups
-                self.assertEqual(comb, filter(set(cwr).__contains__, perm))     # comb: perm that is a cwr
-                self.assertEqual(comb, filter(set(perm).__contains__, cwr))     # comb: cwr that is a perm
-                self.assertEqual(comb, sorted(set(cwr) & set(perm)))            # comb: both a cwr and a perm
-
-    def test_compress(self):
-        self.assertEqual(list(compress(data='ABCDEF', selectors=[1,0,1,0,1,1])), list('ACEF'))
-        self.assertEqual(list(compress('ABCDEF', [1,0,1,0,1,1])), list('ACEF'))
-        self.assertEqual(list(compress('ABCDEF', [0,0,0,0,0,0])), list(''))
-        self.assertEqual(list(compress('ABCDEF', [1,1,1,1,1,1])), list('ABCDEF'))
-        self.assertEqual(list(compress('ABCDEF', [1,0,1])), list('AC'))
-        self.assertEqual(list(compress('ABC', [0,1,1,1,1,1])), list('BC'))
-        n = 10000
-        data = chain.from_iterable(repeat(range(6), n))
-        selectors = chain.from_iterable(repeat((0, 1)))
-        self.assertEqual(list(compress(data, selectors)), [1,3,5] * n)
-        self.assertRaises(TypeError, compress, None, range(6))      # 1st arg not iterable
-        self.assertRaises(TypeError, compress, range(6), None)      # 2nd arg not iterable
-        self.assertRaises(TypeError, compress, range(6))            # too few args
-        self.assertRaises(TypeError, compress, range(6), None)      # too many args
-
-    def test_count(self):
-        self.assertEqual(zip('abc',count()), [('a', 0), ('b', 1), ('c', 2)])
-        self.assertEqual(zip('abc',count(3)), [('a', 3), ('b', 4), ('c', 5)])
-        self.assertEqual(take(2, zip('abc',count(3))), [('a', 3), ('b', 4)])
-        self.assertEqual(take(2, zip('abc',count(-1))), [('a', -1), ('b', 0)])
-        self.assertEqual(take(2, zip('abc',count(-3))), [('a', -3), ('b', -2)])
-        self.assertRaises(TypeError, count, 2, 3, 4)
-        self.assertRaises(TypeError, count, 'a')
-        self.assertEqual(list(islice(count(maxsize-5), 10)), range(maxsize-5, maxsize+5))
-        self.assertEqual(list(islice(count(-maxsize-5), 10)), range(-maxsize-5, -maxsize+5))
-        c = count(3)
-        self.assertEqual(repr(c), 'count(3)')
-        c.next()
-        self.assertEqual(repr(c), 'count(4)')
-        c = count(-9)
-        self.assertEqual(repr(c), 'count(-9)')
-        c.next()
-        self.assertEqual(repr(count(10.25)), 'count(10.25)')
-        self.assertEqual(c.next(), -8)
-        for i in (-sys.maxint-5, -sys.maxint+5 ,-10, -1, 0, 10, sys.maxint-5, sys.maxint+5):
-            # Test repr (ignoring the L in longs)
-            r1 = repr(count(i)).replace('L', '')
-            r2 = 'count(%r)'.__mod__(i).replace('L', '')
-            self.assertEqual(r1, r2)
-
-        # check copy, deepcopy, pickle
-        for value in -3, 3, sys.maxint-5, sys.maxint+5:
-            c = count(value)
-            self.assertEqual(next(copy.copy(c)), value)
-            self.assertEqual(next(copy.deepcopy(c)), value)
-            self.assertEqual(next(pickle.loads(pickle.dumps(c))), value)
-
-    def test_count_with_stride(self):
-        self.assertEqual(zip('abc',count(2,3)), [('a', 2), ('b', 5), ('c', 8)])
-        self.assertEqual(zip('abc',count(start=2,step=3)),
-                         [('a', 2), ('b', 5), ('c', 8)])
-        self.assertEqual(zip('abc',count(step=-1)),
-                         [('a', 0), ('b', -1), ('c', -2)])
-        self.assertEqual(zip('abc',count(2,0)), [('a', 2), ('b', 2), ('c', 2)])
-        self.assertEqual(zip('abc',count(2,1)), [('a', 2), ('b', 3), ('c', 4)])
-        self.assertEqual(take(20, count(maxsize-15, 3)), take(20, range(maxsize-15, maxsize+100, 3)))
-        self.assertEqual(take(20, count(-maxsize-15, 3)), take(20, range(-maxsize-15,-maxsize+100, 3)))
-        self.assertEqual(take(3, count(2, 3.25-4j)), [2, 5.25-4j, 8.5-8j])
-        self.assertEqual(take(3, count(Decimal('1.1'), Decimal('.1'))),
-                         [Decimal('1.1'), Decimal('1.2'), Decimal('1.3')])
-        self.assertEqual(take(3, count(Fraction(2,3), Fraction(1,7))),
-                         [Fraction(2,3), Fraction(17,21), Fraction(20,21)])
-        self.assertEqual(repr(take(3, count(10, 2.5))), repr([10, 12.5, 15.0]))
-        c = count(3, 5)
-        self.assertEqual(repr(c), 'count(3, 5)')
-        c.next()
-        self.assertEqual(repr(c), 'count(8, 5)')
-        c = count(-9, 0)
-        self.assertEqual(repr(c), 'count(-9, 0)')
-        c.next()
-        self.assertEqual(repr(c), 'count(-9, 0)')
-        c = count(-9, -3)
-        self.assertEqual(repr(c), 'count(-9, -3)')
-        c.next()
-        self.assertEqual(repr(c), 'count(-12, -3)')
-        self.assertEqual(repr(c), 'count(-12, -3)')
-        self.assertEqual(repr(count(10.5, 1.25)), 'count(10.5, 1.25)')
-        self.assertEqual(repr(count(10.5, 1)), 'count(10.5)')           # suppress step=1 when it's an int
-        self.assertEqual(repr(count(10.5, 1.00)), 'count(10.5, 1.0)')   # do show float values lilke 1.0
-        for i in (-sys.maxint-5, -sys.maxint+5 ,-10, -1, 0, 10, sys.maxint-5, sys.maxint+5):
-            for j in  (-sys.maxint-5, -sys.maxint+5 ,-10, -1, 0, 1, 10, sys.maxint-5, sys.maxint+5):
-                # Test repr (ignoring the L in longs)
-                r1 = repr(count(i, j)).replace('L', '')
-                if j == 1:
-                    r2 = ('count(%r)' % i).replace('L', '')
-                else:
-                    r2 = ('count(%r, %r)' % (i, j)).replace('L', '')
-                self.assertEqual(r1, r2)
-
-    def test_cycle(self):
-        self.assertEqual(take(10, cycle('abc')), list('abcabcabca'))
-        self.assertEqual(list(cycle('')), [])
-        self.assertRaises(TypeError, cycle)
-        self.assertRaises(TypeError, cycle, 5)
-        self.assertEqual(list(islice(cycle(gen3()),10)), [0,1,2,0,1,2,0,1,2,0])
-
-    def test_groupby(self):
-        # Check whether it accepts arguments correctly
-        self.assertEqual([], list(groupby([])))
-        self.assertEqual([], list(groupby([], key=id)))
-        self.assertRaises(TypeError, list, groupby('abc', []))
-        self.assertRaises(TypeError, groupby, None)
-        self.assertRaises(TypeError, groupby, 'abc', lambda x:x, 10)
-
-        # Check normal input
-        s = [(0, 10, 20), (0, 11,21), (0,12,21), (1,13,21), (1,14,22),
-             (2,15,22), (3,16,23), (3,17,23)]
-        dup = []
-        for k, g in groupby(s, lambda r:r[0]):
-            for elem in g:
-                self.assertEqual(k, elem[0])
-                dup.append(elem)
-        self.assertEqual(s, dup)
-
-        # Check nested case
-        dup = []
-        for k, g in groupby(s, lambda r:r[0]):
-            for ik, ig in groupby(g, lambda r:r[2]):
-                for elem in ig:
-                    self.assertEqual(k, elem[0])
-                    self.assertEqual(ik, elem[2])
-                    dup.append(elem)
-        self.assertEqual(s, dup)
-
-        # Check case where inner iterator is not used
-        keys = [k for k, g in groupby(s, lambda r:r[0])]
-        expectedkeys = set([r[0] for r in s])
-        self.assertEqual(set(keys), expectedkeys)
-        self.assertEqual(len(keys), len(expectedkeys))
-
-        # Exercise pipes and filters style
-        s = 'abracadabra'
-        # sort s | uniq
-        r = [k for k, g in groupby(sorted(s))]
-        self.assertEqual(r, ['a', 'b', 'c', 'd', 'r'])
-        # sort s | uniq -d
-        r = [k for k, g in groupby(sorted(s)) if list(islice(g,1,2))]
-        self.assertEqual(r, ['a', 'b', 'r'])
-        # sort s | uniq -c
-        r = [(len(list(g)), k) for k, g in groupby(sorted(s))]
-        self.assertEqual(r, [(5, 'a'), (2, 'b'), (1, 'c'), (1, 'd'), (2, 'r')])
-        # sort s | uniq -c | sort -rn | head -3
-        r = sorted([(len(list(g)) , k) for k, g in groupby(sorted(s))], reverse=True)[:3]
-        self.assertEqual(r, [(5, 'a'), (2, 'r'), (2, 'b')])
-
-        # iter.next failure
-        class ExpectedError(Exception):
-            pass
-        def delayed_raise(n=0):
-            for i in range(n):
-                yield 'yo'
-            raise ExpectedError
-        def gulp(iterable, keyp=None, func=list):
-            return [func(g) for k, g in groupby(iterable, keyp)]
-
-        # iter.next failure on outer object
-        self.assertRaises(ExpectedError, gulp, delayed_raise(0))
-        # iter.next failure on inner object
-        self.assertRaises(ExpectedError, gulp, delayed_raise(1))
-
-        # __cmp__ failure
-        class DummyCmp:
-            def __cmp__(self, dst):
-                raise ExpectedError
-        s = [DummyCmp(), DummyCmp(), None]
-
-        # __cmp__ failure on outer object
-        self.assertRaises(ExpectedError, gulp, s, func=id)
-        # __cmp__ failure on inner object
-        self.assertRaises(ExpectedError, gulp, s)
-
-        # keyfunc failure
-        def keyfunc(obj):
-            if keyfunc.skip > 0:
-                keyfunc.skip -= 1
-                return obj
-            else:
-                raise ExpectedError
-
-        # keyfunc failure on outer object
-        keyfunc.skip = 0
-        self.assertRaises(ExpectedError, gulp, [None], keyfunc)
-        keyfunc.skip = 1
-        self.assertRaises(ExpectedError, gulp, [None, None], keyfunc)
-
-    def test_ifilter(self):
-        self.assertEqual(list(ifilter(isEven, range(6))), [0,2,4])
-        self.assertEqual(list(ifilter(None, [0,1,0,2,0])), [1,2])
-        self.assertEqual(list(ifilter(bool, [0,1,0,2,0])), [1,2])
-        self.assertEqual(take(4, ifilter(isEven, count())), [0,2,4,6])
-        self.assertRaises(TypeError, ifilter)
-        self.assertRaises(TypeError, ifilter, lambda x:x)
-        self.assertRaises(TypeError, ifilter, lambda x:x, range(6), 7)
-        self.assertRaises(TypeError, ifilter, isEven, 3)
-        self.assertRaises(TypeError, ifilter(range(6), range(6)).next)
-
-    def test_ifilterfalse(self):
-        self.assertEqual(list(ifilterfalse(isEven, range(6))), [1,3,5])
-        self.assertEqual(list(ifilterfalse(None, [0,1,0,2,0])), [0,0,0])
-        self.assertEqual(list(ifilterfalse(bool, [0,1,0,2,0])), [0,0,0])
-        self.assertEqual(take(4, ifilterfalse(isEven, count())), [1,3,5,7])
-        self.assertRaises(TypeError, ifilterfalse)
-        self.assertRaises(TypeError, ifilterfalse, lambda x:x)
-        self.assertRaises(TypeError, ifilterfalse, lambda x:x, range(6), 7)
-        self.assertRaises(TypeError, ifilterfalse, isEven, 3)
-        self.assertRaises(TypeError, ifilterfalse(range(6), range(6)).next)
-
-    def test_izip(self):
-        ans = [(x,y) for x, y in izip('abc',count())]
-        self.assertEqual(ans, [('a', 0), ('b', 1), ('c', 2)])
-        self.assertEqual(list(izip('abc', range(6))), zip('abc', range(6)))
-        self.assertEqual(list(izip('abcdef', range(3))), zip('abcdef', range(3)))
-        self.assertEqual(take(3,izip('abcdef', count())), zip('abcdef', range(3)))
-        self.assertEqual(list(izip('abcdef')), zip('abcdef'))
-        self.assertEqual(list(izip()), zip())
-        self.assertRaises(TypeError, izip, 3)
-        self.assertRaises(TypeError, izip, range(3), 3)
-        # Check tuple re-use (implementation detail)
-        self.assertEqual([tuple(list(pair)) for pair in izip('abc', 'def')],
-                         zip('abc', 'def'))
-        self.assertEqual([pair for pair in izip('abc', 'def')],
-                         zip('abc', 'def'))
-        ids = map(id, izip('abc', 'def'))
-        self.assertEqual(min(ids), max(ids))
-        ids = map(id, list(izip('abc', 'def')))
-        self.assertEqual(len(dict.fromkeys(ids)), len(ids))
-
-    def test_iziplongest(self):
-        for args in [
-                ['abc', range(6)],
-                [range(6), 'abc'],
-                [range(1000), range(2000,2100), range(3000,3050)],
-                [range(1000), range(0), range(3000,3050), range(1200), range(1500)],
-                [range(1000), range(0), range(3000,3050), range(1200), range(1500), range(0)],
-            ]:
-            # target = map(None, *args) <- this raises a py3k warning
-            # this is the replacement:
-            target = [tuple([arg[i] if i < len(arg) else None for arg in args])
-                      for i in range(max(map(len, args)))]
-            self.assertEqual(list(izip_longest(*args)), target)
-            self.assertEqual(list(izip_longest(*args, **{})), target)
-            target = [tuple((e is None and 'X' or e) for e in t) for t in target]   # Replace None fills with 'X'
-            self.assertEqual(list(izip_longest(*args, **dict(fillvalue='X'))), target)
-
-        self.assertEqual(take(3,izip_longest('abcdef', count())), zip('abcdef', range(3))) # take 3 from infinite input
-
-        self.assertEqual(list(izip_longest()), zip())
-        self.assertEqual(list(izip_longest([])), zip([]))
-        self.assertEqual(list(izip_longest('abcdef')), zip('abcdef'))
-
-        self.assertEqual(list(izip_longest('abc', 'defg', **{})),
-                         zip(list('abc') + [None], 'defg'))  # empty keyword dict
-        self.assertRaises(TypeError, izip_longest, 3)
-        self.assertRaises(TypeError, izip_longest, range(3), 3)
-
-        for stmt in [
-            "izip_longest('abc', fv=1)",
-            "izip_longest('abc', fillvalue=1, bogus_keyword=None)",
-        ]:
-            try:
-                eval(stmt, globals(), locals())
-            except TypeError:
-                pass
-            else:
-                self.fail('Did not raise Type in:  ' + stmt)
-
-        # Check tuple re-use (implementation detail)
-        self.assertEqual([tuple(list(pair)) for pair in izip_longest('abc', 'def')],
-                         zip('abc', 'def'))
-        self.assertEqual([pair for pair in izip_longest('abc', 'def')],
-                         zip('abc', 'def'))
-        ids = map(id, izip_longest('abc', 'def'))
-        self.assertEqual(min(ids), max(ids))
-        ids = map(id, list(izip_longest('abc', 'def')))
-        self.assertEqual(len(dict.fromkeys(ids)), len(ids))
-
-    def test_bug_7244(self):
-
-        class Repeater(object):
-            # this class is similar to itertools.repeat
-            def __init__(self, o, t, e):
-                self.o = o
-                self.t = int(t)
-                self.e = e
-            def __iter__(self): # its iterator is itself
-                return self
-            def next(self):
-                if self.t > 0:
-                    self.t -= 1
-                    return self.o
-                else:
-                    raise self.e
-
-        # Formerly this code in would fail in debug mode
-        # with Undetected Error and Stop Iteration
-        r1 = Repeater(1, 3, StopIteration)
-        r2 = Repeater(2, 4, StopIteration)
-        def run(r1, r2):
-            result = []
-            for i, j in izip_longest(r1, r2, fillvalue=0):
-                with test_support.captured_output('stdout'):
-                    print (i, j)
-                result.append((i, j))
-            return result
-        self.assertEqual(run(r1, r2), [(1,2), (1,2), (1,2), (0,2)])
-
-        # Formerly, the RuntimeError would be lost
-        # and StopIteration would stop as expected
-        r1 = Repeater(1, 3, RuntimeError)
-        r2 = Repeater(2, 4, StopIteration)
-        it = izip_longest(r1, r2, fillvalue=0)
-        self.assertEqual(next(it), (1, 2))
-        self.assertEqual(next(it), (1, 2))
-        self.assertEqual(next(it), (1, 2))
-        self.assertRaises(RuntimeError, next, it)
-
-    def test_product(self):
-        for args, result in [
-            ([], [()]),                     # zero iterables
-            (['ab'], [('a',), ('b',)]),     # one iterable
-            ([range(2), range(3)], [(0,0), (0,1), (0,2), (1,0), (1,1), (1,2)]),     # two iterables
-            ([range(0), range(2), range(3)], []),           # first iterable with zero length
-            ([range(2), range(0), range(3)], []),           # middle iterable with zero length
-            ([range(2), range(3), range(0)], []),           # last iterable with zero length
-            ]:
-            self.assertEqual(list(product(*args)), result)
-            for r in range(4):
-                self.assertEqual(list(product(*(args*r))),
-                                 list(product(*args, **dict(repeat=r))))
-        self.assertEqual(len(list(product(*[range(7)]*6))), 7**6)
-        self.assertRaises(TypeError, product, range(6), None)
-
-        def product1(*args, **kwds):
-            pools = map(tuple, args) * kwds.get('repeat', 1)
-            n = len(pools)
-            if n == 0:
-                yield ()
-                return
-            if any(len(pool) == 0 for pool in pools):
-                return
-            indices = [0] * n
-            yield tuple(pool[i] for pool, i in zip(pools, indices))
-            while 1:
-                for i in reversed(range(n)):  # right to left
-                    if indices[i] == len(pools[i]) - 1:
-                        continue
-                    indices[i] += 1
-                    for j in range(i+1, n):
-                        indices[j] = 0
-                    yield tuple(pool[i] for pool, i in zip(pools, indices))
-                    break
-                else:
-                    return
-
-        def product2(*args, **kwds):
-            'Pure python version used in docs'
-            pools = map(tuple, args) * kwds.get('repeat', 1)
-            result = [[]]
-            for pool in pools:
-                result = [x+[y] for x in result for y in pool]
-            for prod in result:
-                yield tuple(prod)
-
-        argtypes = ['', 'abc', '', xrange(0), xrange(4), dict(a=1, b=2, c=3),
-                    set('abcdefg'), range(11), tuple(range(13))]
-        for i in range(100):
-            args = [random.choice(argtypes) for j in range(random.randrange(5))]
-            expected_len = prod(map(len, args))
-            self.assertEqual(len(list(product(*args))), expected_len)
-            self.assertEqual(list(product(*args)), list(product1(*args)))
-            self.assertEqual(list(product(*args)), list(product2(*args)))
-            args = map(iter, args)
-            self.assertEqual(len(list(product(*args))), expected_len)
-
-        # Test implementation detail:  tuple re-use
-        self.assertEqual(len(set(map(id, product('abc', 'def')))), 1)
-        self.assertNotEqual(len(set(map(id, list(product('abc', 'def'))))), 1)
-
-    def test_repeat(self):
-        self.assertEqual(list(repeat(object='a', times=3)), ['a', 'a', 'a'])
-        self.assertEqual(zip(xrange(3),repeat('a')),
-                         [(0, 'a'), (1, 'a'), (2, 'a')])
-        self.assertEqual(list(repeat('a', 3)), ['a', 'a', 'a'])
-        self.assertEqual(take(3, repeat('a')), ['a', 'a', 'a'])
-        self.assertEqual(list(repeat('a', 0)), [])
-        self.assertEqual(list(repeat('a', -3)), [])
-        self.assertRaises(TypeError, repeat)
-        self.assertRaises(TypeError, repeat, None, 3, 4)
-        self.assertRaises(TypeError, repeat, None, 'a')
-        r = repeat(1+0j)
-        self.assertEqual(repr(r), 'repeat((1+0j))')
-        r = repeat(1+0j, 5)
-        self.assertEqual(repr(r), 'repeat((1+0j), 5)')
-        list(r)
-        self.assertEqual(repr(r), 'repeat((1+0j), 0)')
-
-    def test_imap(self):
-        self.assertEqual(list(imap(operator.pow, range(3), range(1,7))),
-                         [0**1, 1**2, 2**3])
-        self.assertEqual(list(imap(None, 'abc', range(5))),
-                         [('a',0),('b',1),('c',2)])
-        self.assertEqual(list(imap(None, 'abc', count())),
-                         [('a',0),('b',1),('c',2)])
-        self.assertEqual(take(2,imap(None, 'abc', count())),
-                         [('a',0),('b',1)])
-        self.assertEqual(list(imap(operator.pow, [])), [])
-        self.assertRaises(TypeError, imap)
-        self.assertRaises(TypeError, imap, operator.neg)
-        self.assertRaises(TypeError, imap(10, range(5)).next)
-        self.assertRaises(ValueError, imap(errfunc, [4], [5]).next)
-        self.assertRaises(TypeError, imap(onearg, [4], [5]).next)
-
-    def test_starmap(self):
-        self.assertEqual(list(starmap(operator.pow, zip(range(3), range(1,7)))),
-                         [0**1, 1**2, 2**3])
-        self.assertEqual(take(3, starmap(operator.pow, izip(count(), count(1)))),
-                         [0**1, 1**2, 2**3])
-        self.assertEqual(list(starmap(operator.pow, [])), [])
-        self.assertEqual(list(starmap(operator.pow, [iter([4,5])])), [4**5])
-        self.assertRaises(TypeError, list, starmap(operator.pow, [None]))
-        self.assertRaises(TypeError, starmap)
-        self.assertRaises(TypeError, starmap, operator.pow, [(4,5)], 'extra')
-        self.assertRaises(TypeError, starmap(10, [(4,5)]).next)
-        self.assertRaises(ValueError, starmap(errfunc, [(4,5)]).next)
-        self.assertRaises(TypeError, starmap(onearg, [(4,5)]).next)
-
-    def test_islice(self):
-        for args in [          # islice(args) should agree with range(args)
-                (10, 20, 3),
-                (10, 3, 20),
-                (10, 20),
-                (10, 3),
-                (20,)
-                ]:
-            self.assertEqual(list(islice(xrange(100), *args)), range(*args))
-
-        for args, tgtargs in [  # Stop when seqn is exhausted
-                ((10, 110, 3), ((10, 100, 3))),
-                ((10, 110), ((10, 100))),
-                ((110,), (100,))
-                ]:
-            self.assertEqual(list(islice(xrange(100), *args)), range(*tgtargs))
-
-        # Test stop=None
-        self.assertEqual(list(islice(xrange(10), None)), range(10))
-        self.assertEqual(list(islice(xrange(10), None, None)), range(10))
-        self.assertEqual(list(islice(xrange(10), None, None, None)), range(10))
-        self.assertEqual(list(islice(xrange(10), 2, None)), range(2, 10))
-        self.assertEqual(list(islice(xrange(10), 1, None, 2)), range(1, 10, 2))
-
-        # Test number of items consumed     SF #1171417
-        it = iter(range(10))
-        self.assertEqual(list(islice(it, 3)), range(3))
-        self.assertEqual(list(it), range(3, 10))
-
-        # Test invalid arguments
-        self.assertRaises(TypeError, islice, xrange(10))
-        self.assertRaises(TypeError, islice, xrange(10), 1, 2, 3, 4)
-        self.assertRaises(ValueError, islice, xrange(10), -5, 10, 1)
-        self.assertRaises(ValueError, islice, xrange(10), 1, -5, -1)
-        self.assertRaises(ValueError, islice, xrange(10), 1, 10, -1)
-        self.assertRaises(ValueError, islice, xrange(10), 1, 10, 0)
-        self.assertRaises(ValueError, islice, xrange(10), 'a')
-        self.assertRaises(ValueError, islice, xrange(10), 'a', 1)
-        self.assertRaises(ValueError, islice, xrange(10), 1, 'a')
-        self.assertRaises(ValueError, islice, xrange(10), 'a', 1, 1)
-        self.assertRaises(ValueError, islice, xrange(10), 1, 'a', 1)
-        self.assertEqual(len(list(islice(count(), 1, 10, maxsize))), 1)
-
-        # Issue #10323:  Less islice in a predictable state
-        c = count()
-        self.assertEqual(list(islice(c, 1, 3, 50)), [1])
-        self.assertEqual(next(c), 3)
-
-    def test_takewhile(self):
-        data = [1, 3, 5, 20, 2, 4, 6, 8]
-        underten = lambda x: x<10
-        self.assertEqual(list(takewhile(underten, data)), [1, 3, 5])
-        self.assertEqual(list(takewhile(underten, [])), [])
-        self.assertRaises(TypeError, takewhile)
-        self.assertRaises(TypeError, takewhile, operator.pow)
-        self.assertRaises(TypeError, takewhile, operator.pow, [(4,5)], 'extra')
-        self.assertRaises(TypeError, takewhile(10, [(4,5)]).next)
-        self.assertRaises(ValueError, takewhile(errfunc, [(4,5)]).next)
-        t = takewhile(bool, [1, 1, 1, 0, 0, 0])
-        self.assertEqual(list(t), [1, 1, 1])
-        self.assertRaises(StopIteration, t.next)
-
-    def test_dropwhile(self):
-        data = [1, 3, 5, 20, 2, 4, 6, 8]
-        underten = lambda x: x<10
-        self.assertEqual(list(dropwhile(underten, data)), [20, 2, 4, 6, 8])
-        self.assertEqual(list(dropwhile(underten, [])), [])
-        self.assertRaises(TypeError, dropwhile)
-        self.assertRaises(TypeError, dropwhile, operator.pow)
-        self.assertRaises(TypeError, dropwhile, operator.pow, [(4,5)], 'extra')
-        self.assertRaises(TypeError, dropwhile(10, [(4,5)]).next)
-        self.assertRaises(ValueError, dropwhile(errfunc, [(4,5)]).next)
-
-    def test_tee(self):
-        n = 200
-        def irange(n):
-            for i in xrange(n):
-                yield i
-
-        a, b = tee([])        # test empty iterator
-        self.assertEqual(list(a), [])
-        self.assertEqual(list(b), [])
-
-        a, b = tee(irange(n)) # test 100% interleaved
-        self.assertEqual(zip(a,b), zip(range(n),range(n)))
-
-        a, b = tee(irange(n)) # test 0% interleaved
-        self.assertEqual(list(a), range(n))
-        self.assertEqual(list(b), range(n))
-
-        a, b = tee(irange(n)) # test dealloc of leading iterator
-        for i in xrange(100):
-            self.assertEqual(a.next(), i)
-        del a
-        self.assertEqual(list(b), range(n))
-
-        a, b = tee(irange(n)) # test dealloc of trailing iterator
-        for i in xrange(100):
-            self.assertEqual(a.next(), i)
-        del b
-        self.assertEqual(list(a), range(100, n))
-
-        for j in xrange(5):   # test randomly interleaved
-            order = [0]*n + [1]*n
-            random.shuffle(order)
-            lists = ([], [])
-            its = tee(irange(n))
-            for i in order:
-                value = its[i].next()
-                lists[i].append(value)
-            self.assertEqual(lists[0], range(n))
-            self.assertEqual(lists[1], range(n))
-
-        # test argument format checking
-        self.assertRaises(TypeError, tee)
-        self.assertRaises(TypeError, tee, 3)
-        self.assertRaises(TypeError, tee, [1,2], 'x')
-        self.assertRaises(TypeError, tee, [1,2], 3, 'x')
-
-        # tee object should be instantiable
-        a, b = tee('abc')
-        c = type(a)('def')
-        self.assertEqual(list(c), list('def'))
-
-        # test long-lagged and multi-way split
-        a, b, c = tee(xrange(2000), 3)
-        for i in xrange(100):
-            self.assertEqual(a.next(), i)
-        self.assertEqual(list(b), range(2000))
-        self.assertEqual([c.next(), c.next()], range(2))
-        self.assertEqual(list(a), range(100,2000))
-        self.assertEqual(list(c), range(2,2000))
-
-        # test values of n
-        self.assertRaises(TypeError, tee, 'abc', 'invalid')
-        self.assertRaises(ValueError, tee, [], -1)
-        for n in xrange(5):
-            result = tee('abc', n)
-            self.assertEqual(type(result), tuple)
-            self.assertEqual(len(result), n)
-            self.assertEqual(map(list, result), [list('abc')]*n)
-
-        # tee pass-through to copyable iterator
-        a, b = tee('abc')
-        c, d = tee(a)
-        self.assertTrue(a is c)
-
-        # test tee_new
-        t1, t2 = tee('abc')
-        tnew = type(t1)
-        self.assertRaises(TypeError, tnew)
-        self.assertRaises(TypeError, tnew, 10)
-        t3 = tnew(t1)
-        self.assertTrue(list(t1) == list(t2) == list(t3) == list('abc'))
-
-        # test that tee objects are weak referencable
-        a, b = tee(xrange(10))
-        p = proxy(a)
-        self.assertEqual(getattr(p, '__class__'), type(b))
-        del a
-        self.assertRaises(ReferenceError, getattr, p, '__class__')
-
-    def test_StopIteration(self):
-        self.assertRaises(StopIteration, izip().next)
-
-        for f in (chain, cycle, izip, groupby):
-            self.assertRaises(StopIteration, f([]).next)
-            self.assertRaises(StopIteration, f(StopNow()).next)
-
-        self.assertRaises(StopIteration, islice([], None).next)
-        self.assertRaises(StopIteration, islice(StopNow(), None).next)
-
-        p, q = tee([])
-        self.assertRaises(StopIteration, p.next)
-        self.assertRaises(StopIteration, q.next)
-        p, q = tee(StopNow())
-        self.assertRaises(StopIteration, p.next)
-        self.assertRaises(StopIteration, q.next)
-
-        self.assertRaises(StopIteration, repeat(None, 0).next)
-
-        for f in (ifilter, ifilterfalse, imap, takewhile, dropwhile, starmap):
-            self.assertRaises(StopIteration, f(lambda x:x, []).next)
-            self.assertRaises(StopIteration, f(lambda x:x, StopNow()).next)
-
-class TestExamples(unittest.TestCase):
-
-    def test_chain(self):
-        self.assertEqual(''.join(chain('ABC', 'DEF')), 'ABCDEF')
-
-    def test_chain_from_iterable(self):
-        self.assertEqual(''.join(chain.from_iterable(['ABC', 'DEF'])), 'ABCDEF')
-
-    def test_combinations(self):
-        self.assertEqual(list(combinations('ABCD', 2)),
-                         [('A','B'), ('A','C'), ('A','D'), ('B','C'), ('B','D'), ('C','D')])
-        self.assertEqual(list(combinations(range(4), 3)),
-                         [(0,1,2), (0,1,3), (0,2,3), (1,2,3)])
-
-    def test_combinations_with_replacement(self):
-        self.assertEqual(list(combinations_with_replacement('ABC', 2)),
-                         [('A','A'), ('A','B'), ('A','C'), ('B','B'), ('B','C'), ('C','C')])
-
-    def test_compress(self):
-        self.assertEqual(list(compress('ABCDEF', [1,0,1,0,1,1])), list('ACEF'))
-
-    def test_count(self):
-        self.assertEqual(list(islice(count(10), 5)), [10, 11, 12, 13, 14])
-
-    def test_cycle(self):
-        self.assertEqual(list(islice(cycle('ABCD'), 12)), list('ABCDABCDABCD'))
-
-    def test_dropwhile(self):
-        self.assertEqual(list(dropwhile(lambda x: x<5, [1,4,6,4,1])), [6,4,1])
-
-    def test_groupby(self):
-        self.assertEqual([k for k, g in groupby('AAAABBBCCDAABBB')],
-                         list('ABCDAB'))
-        self.assertEqual([(list(g)) for k, g in groupby('AAAABBBCCD')],
-                         [list('AAAA'), list('BBB'), list('CC'), list('D')])
-
-    def test_ifilter(self):
-        self.assertEqual(list(ifilter(lambda x: x%2, range(10))), [1,3,5,7,9])
-
-    def test_ifilterfalse(self):
-        self.assertEqual(list(ifilterfalse(lambda x: x%2, range(10))), [0,2,4,6,8])
-
-    def test_imap(self):
-        self.assertEqual(list(imap(pow, (2,3,10), (5,2,3))), [32, 9, 1000])
-
-    def test_islice(self):
-        self.assertEqual(list(islice('ABCDEFG', 2)), list('AB'))
-        self.assertEqual(list(islice('ABCDEFG', 2, 4)), list('CD'))
-        self.assertEqual(list(islice('ABCDEFG', 2, None)), list('CDEFG'))
-        self.assertEqual(list(islice('ABCDEFG', 0, None, 2)), list('ACEG'))
-
-    def test_izip(self):
-        self.assertEqual(list(izip('ABCD', 'xy')), [('A', 'x'), ('B', 'y')])
-
-    def test_izip_longest(self):
-        self.assertEqual(list(izip_longest('ABCD', 'xy', fillvalue='-')),
-                         [('A', 'x'), ('B', 'y'), ('C', '-'), ('D', '-')])
-
-    def test_permutations(self):
-        self.assertEqual(list(permutations('ABCD', 2)),
-                         map(tuple, 'AB AC AD BA BC BD CA CB CD DA DB DC'.split()))
-        self.assertEqual(list(permutations(range(3))),
-                         [(0,1,2), (0,2,1), (1,0,2), (1,2,0), (2,0,1), (2,1,0)])
-
-    def test_product(self):
-        self.assertEqual(list(product('ABCD', 'xy')),
-                         map(tuple, 'Ax Ay Bx By Cx Cy Dx Dy'.split()))
-        self.assertEqual(list(product(range(2), repeat=3)),
-                        [(0,0,0), (0,0,1), (0,1,0), (0,1,1),
-                         (1,0,0), (1,0,1), (1,1,0), (1,1,1)])
-
-    def test_repeat(self):
-        self.assertEqual(list(repeat(10, 3)), [10, 10, 10])
-
-    def test_stapmap(self):
-        self.assertEqual(list(starmap(pow, [(2,5), (3,2), (10,3)])),
-                         [32, 9, 1000])
-
-    def test_takewhile(self):
-        self.assertEqual(list(takewhile(lambda x: x<5, [1,4,6,4,1])), [1,4])
-
-
-class TestGC(unittest.TestCase):
-
-    def makecycle(self, iterator, container):
-        container.append(iterator)
-        iterator.next()
-        del container, iterator
-
-    def test_chain(self):
-        a = []
-        self.makecycle(chain(a), a)
-
-    def test_chain_from_iterable(self):
-        a = []
-        self.makecycle(chain.from_iterable([a]), a)
-
-    def test_combinations(self):
-        a = []
-        self.makecycle(combinations([1,2,a,3], 3), a)
-
-    def test_combinations_with_replacement(self):
-        a = []
-        self.makecycle(combinations_with_replacement([1,2,a,3], 3), a)
-
-    def test_compress(self):
-        a = []
-        self.makecycle(compress('ABCDEF', [1,0,1,0,1,0]), a)
-
-    def test_count(self):
-        a = []
-        Int = type('Int', (int,), dict(x=a))
-        self.makecycle(count(Int(0), Int(1)), a)
-
-    def test_cycle(self):
-        a = []
-        self.makecycle(cycle([a]*2), a)
-
-    def test_dropwhile(self):
-        a = []
-        self.makecycle(dropwhile(bool, [0, a, a]), a)
-
-    def test_groupby(self):
-        a = []
-        self.makecycle(groupby([a]*2, lambda x:x), a)
-
-    def test_issue2246(self):
-        # Issue 2246 -- the _grouper iterator was not included in GC
-        n = 10
-        keyfunc = lambda x: x
-        for i, j in groupby(xrange(n), key=keyfunc):
-            keyfunc.__dict__.setdefault('x',[]).append(j)
-
-    def test_ifilter(self):
-        a = []
-        self.makecycle(ifilter(lambda x:True, [a]*2), a)
-
-    def test_ifilterfalse(self):
-        a = []
-        self.makecycle(ifilterfalse(lambda x:False, a), a)
-
-    def test_izip(self):
-        a = []
-        self.makecycle(izip([a]*2, [a]*3), a)
-
-    def test_izip_longest(self):
-        a = []
-        self.makecycle(izip_longest([a]*2, [a]*3), a)
-        b = [a, None]
-        self.makecycle(izip_longest([a]*2, [a]*3, fillvalue=b), a)
-
-    def test_imap(self):
-        a = []
-        self.makecycle(imap(lambda x:x, [a]*2), a)
-
-    def test_islice(self):
-        a = []
-        self.makecycle(islice([a]*2, None), a)
-
-    def test_permutations(self):
-        a = []
-        self.makecycle(permutations([1,2,a,3], 3), a)
-
-    def test_product(self):
-        a = []
-        self.makecycle(product([1,2,a,3], repeat=3), a)
-
-    def test_repeat(self):
-        a = []
-        self.makecycle(repeat(a), a)
-
-    def test_starmap(self):
-        a = []
-        self.makecycle(starmap(lambda *t: t, [(a,a)]*2), a)
-
-    def test_takewhile(self):
-        a = []
-        self.makecycle(takewhile(bool, [1, 0, a, a]), a)
-
-def R(seqn):
-    'Regular generator'
-    for i in seqn:
-        yield i
-
-class G:
-    'Sequence using __getitem__'
-    def __init__(self, seqn):
-        self.seqn = seqn
-    def __getitem__(self, i):
-        return self.seqn[i]
-
-class I:
-    'Sequence using iterator protocol'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-    def next(self):
-        if self.i >= len(self.seqn): raise StopIteration
-        v = self.seqn[self.i]
-        self.i += 1
-        return v
-
-class Ig:
-    'Sequence using iterator protocol defined with a generator'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        for val in self.seqn:
-            yield val
-
-class X:
-    'Missing __getitem__ and __iter__'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def next(self):
-        if self.i >= len(self.seqn): raise StopIteration
-        v = self.seqn[self.i]
-        self.i += 1
-        return v
-
-class N:
-    'Iterator missing next()'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-
-class E:
-    'Test propagation of exceptions'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-    def next(self):
-        3 // 0
-
-class S:
-    'Test immediate stop'
-    def __init__(self, seqn):
-        pass
-    def __iter__(self):
-        return self
-    def next(self):
-        raise StopIteration
-
-def L(seqn):
-    'Test multiple tiers of iterators'
-    return chain(imap(lambda x:x, R(Ig(G(seqn)))))
-
-
-class TestVariousIteratorArgs(unittest.TestCase):
-
-    def test_chain(self):
-        for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
-            for g in (G, I, Ig, S, L, R):
-                self.assertEqual(list(chain(g(s))), list(g(s)))
-                self.assertEqual(list(chain(g(s), g(s))), list(g(s))+list(g(s)))
-            self.assertRaises(TypeError, list, chain(X(s)))
-            self.assertRaises(TypeError, list, chain(N(s)))
-            self.assertRaises(ZeroDivisionError, list, chain(E(s)))
-
-    def test_compress(self):
-        for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
-            n = len(s)
-            for g in (G, I, Ig, S, L, R):
-                self.assertEqual(list(compress(g(s), repeat(1))), list(g(s)))
-            self.assertRaises(TypeError, compress, X(s), repeat(1))
-            self.assertRaises(TypeError, list, compress(N(s), repeat(1)))
-            self.assertRaises(ZeroDivisionError, list, compress(E(s), repeat(1)))
-
-    def test_product(self):
-        for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
-            self.assertRaises(TypeError, product, X(s))
-            self.assertRaises(TypeError, product, N(s))
-            self.assertRaises(ZeroDivisionError, product, E(s))
-
-    def test_cycle(self):
-        for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
-            for g in (G, I, Ig, S, L, R):
-                tgtlen = len(s) * 3
-                expected = list(g(s))*3
-                actual = list(islice(cycle(g(s)), tgtlen))
-                self.assertEqual(actual, expected)
-            self.assertRaises(TypeError, cycle, X(s))
-            self.assertRaises(TypeError, list, cycle(N(s)))
-            self.assertRaises(ZeroDivisionError, list, cycle(E(s)))
-
-    def test_groupby(self):
-        for s in (range(10), range(0), range(1000), (7,11), xrange(2000,2200,5)):
-            for g in (G, I, Ig, S, L, R):
-                self.assertEqual([k for k, sb in groupby(g(s))], list(g(s)))
-            self.assertRaises(TypeError, groupby, X(s))
-            self.assertRaises(TypeError, list, groupby(N(s)))
-            self.assertRaises(ZeroDivisionError, list, groupby(E(s)))
-
-    def test_ifilter(self):
-        for s in (range(10), range(0), range(1000), (7,11), xrange(2000,2200,5)):
-            for g in (G, I, Ig, S, L, R):
-                self.assertEqual(list(ifilter(isEven, g(s))), filter(isEven, g(s)))
-            self.assertRaises(TypeError, ifilter, isEven, X(s))
-            self.assertRaises(TypeError, list, ifilter(isEven, N(s)))
-            self.assertRaises(ZeroDivisionError, list, ifilter(isEven, E(s)))
-
-    def test_ifilterfalse(self):
-        for s in (range(10), range(0), range(1000), (7,11), xrange(2000,2200,5)):
-            for g in (G, I, Ig, S, L, R):
-                self.assertEqual(list(ifilterfalse(isEven, g(s))), filter(isOdd, g(s)))
-            self.assertRaises(TypeError, ifilterfalse, isEven, X(s))
-            self.assertRaises(TypeError, list, ifilterfalse(isEven, N(s)))
-            self.assertRaises(ZeroDivisionError, list, ifilterfalse(isEven, E(s)))
-
-    def test_izip(self):
-        for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
-            for g in (G, I, Ig, S, L, R):
-                self.assertEqual(list(izip(g(s))), zip(g(s)))
-                self.assertEqual(list(izip(g(s), g(s))), zip(g(s), g(s)))
-            self.assertRaises(TypeError, izip, X(s))
-            self.assertRaises(TypeError, list, izip(N(s)))
-            self.assertRaises(ZeroDivisionError, list, izip(E(s)))
-
-    def test_iziplongest(self):
-        for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
-            for g in (G, I, Ig, S, L, R):
-                self.assertEqual(list(izip_longest(g(s))), zip(g(s)))
-                self.assertEqual(list(izip_longest(g(s), g(s))), zip(g(s), g(s)))
-            self.assertRaises(TypeError, izip_longest, X(s))
-            self.assertRaises(TypeError, list, izip_longest(N(s)))
-            self.assertRaises(ZeroDivisionError, list, izip_longest(E(s)))
-
-    def test_imap(self):
-        for s in (range(10), range(0), range(100), (7,11), xrange(20,50,5)):
-            for g in (G, I, Ig, S, L, R):
-                self.assertEqual(list(imap(onearg, g(s))), map(onearg, g(s)))
-                self.assertEqual(list(imap(operator.pow, g(s), g(s))), map(operator.pow, g(s), g(s)))
-            self.assertRaises(TypeError, imap, onearg, X(s))
-            self.assertRaises(TypeError, list, imap(onearg, N(s)))
-            self.assertRaises(ZeroDivisionError, list, imap(onearg, E(s)))
-
-    def test_islice(self):
-        for s in ("12345", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
-            for g in (G, I, Ig, S, L, R):
-                self.assertEqual(list(islice(g(s),1,None,2)), list(g(s))[1::2])
-            self.assertRaises(TypeError, islice, X(s), 10)
-            self.assertRaises(TypeError, list, islice(N(s), 10))
-            self.assertRaises(ZeroDivisionError, list, islice(E(s), 10))
-
-    def test_starmap(self):
-        for s in (range(10), range(0), range(100), (7,11), xrange(20,50,5)):
-            for g in (G, I, Ig, S, L, R):
-                ss = zip(s, s)
-                self.assertEqual(list(starmap(operator.pow, g(ss))), map(operator.pow, g(s), g(s)))
-            self.assertRaises(TypeError, starmap, operator.pow, X(ss))
-            self.assertRaises(TypeError, list, starmap(operator.pow, N(ss)))
-            self.assertRaises(ZeroDivisionError, list, starmap(operator.pow, E(ss)))
-
-    def test_takewhile(self):
-        for s in (range(10), range(0), range(1000), (7,11), xrange(2000,2200,5)):
-            for g in (G, I, Ig, S, L, R):
-                tgt = []
-                for elem in g(s):
-                    if not isEven(elem): break
-                    tgt.append(elem)
-                self.assertEqual(list(takewhile(isEven, g(s))), tgt)
-            self.assertRaises(TypeError, takewhile, isEven, X(s))
-            self.assertRaises(TypeError, list, takewhile(isEven, N(s)))
-            self.assertRaises(ZeroDivisionError, list, takewhile(isEven, E(s)))
-
-    def test_dropwhile(self):
-        for s in (range(10), range(0), range(1000), (7,11), xrange(2000,2200,5)):
-            for g in (G, I, Ig, S, L, R):
-                tgt = []
-                for elem in g(s):
-                    if not tgt and isOdd(elem): continue
-                    tgt.append(elem)
-                self.assertEqual(list(dropwhile(isOdd, g(s))), tgt)
-            self.assertRaises(TypeError, dropwhile, isOdd, X(s))
-            self.assertRaises(TypeError, list, dropwhile(isOdd, N(s)))
-            self.assertRaises(ZeroDivisionError, list, dropwhile(isOdd, E(s)))
-
-    def test_tee(self):
-        for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
-            for g in (G, I, Ig, S, L, R):
-                it1, it2 = tee(g(s))
-                self.assertEqual(list(it1), list(g(s)))
-                self.assertEqual(list(it2), list(g(s)))
-            self.assertRaises(TypeError, tee, X(s))
-            self.assertRaises(TypeError, list, tee(N(s))[0])
-            self.assertRaises(ZeroDivisionError, list, tee(E(s))[0])
-
-class LengthTransparency(unittest.TestCase):
-
-    def test_repeat(self):
-        from test.test_iterlen import len
-        self.assertEqual(len(repeat(None, 50)), 50)
-        self.assertRaises(TypeError, len, repeat(None))
-
-class RegressionTests(unittest.TestCase):
-
-    def test_sf_793826(self):
-        # Fix Armin Rigo's successful efforts to wreak havoc
-
-        def mutatingtuple(tuple1, f, tuple2):
-            # this builds a tuple t which is a copy of tuple1,
-            # then calls f(t), then mutates t to be equal to tuple2
-            # (needs len(tuple1) == len(tuple2)).
-            def g(value, first=[1]):
-                if first:
-                    del first[:]
-                    f(z.next())
-                return value
-            items = list(tuple2)
-            items[1:1] = list(tuple1)
-            gen = imap(g, items)
-            z = izip(*[gen]*len(tuple1))
-            z.next()
-
-        def f(t):
-            global T
-            T = t
-            first[:] = list(T)
-
-        first = []
-        mutatingtuple((1,2,3), f, (4,5,6))
-        second = list(T)
-        self.assertEqual(first, second)
-
-
-    def test_sf_950057(self):
-        # Make sure that chain() and cycle() catch exceptions immediately
-        # rather than when shifting between input sources
-
-        def gen1():
-            hist.append(0)
-            yield 1
-            hist.append(1)
-            raise AssertionError
-            hist.append(2)
-
-        def gen2(x):
-            hist.append(3)
-            yield 2
-            hist.append(4)
-            if x:
-                raise StopIteration
-
-        hist = []
-        self.assertRaises(AssertionError, list, chain(gen1(), gen2(False)))
-        self.assertEqual(hist, [0,1])
-
-        hist = []
-        self.assertRaises(AssertionError, list, chain(gen1(), gen2(True)))
-        self.assertEqual(hist, [0,1])
-
-        hist = []
-        self.assertRaises(AssertionError, list, cycle(gen1()))
-        self.assertEqual(hist, [0,1])
-
-class SubclassWithKwargsTest(unittest.TestCase):
-    def test_keywords_in_subclass(self):
-        # count is not subclassable...
-        for cls in (repeat, izip, ifilter, ifilterfalse, chain, imap,
-                    starmap, islice, takewhile, dropwhile, cycle, compress):
-            class Subclass(cls):
-                def __init__(self, newarg=None, *args):
-                    cls.__init__(self, *args)
-            try:
-                Subclass(newarg=1)
-            except TypeError, err:
-                # we expect type errors because of wrong argument count
-                self.assertNotIn("does not take keyword arguments", err.args[0])
-
-
-libreftest = """ Doctest for examples in the library reference: libitertools.tex
-
-
->>> amounts = [120.15, 764.05, 823.14]
->>> for checknum, amount in izip(count(1200), amounts):
-...     print 'Check %d is for $%.2f' % (checknum, amount)
-...
-Check 1200 is for $120.15
-Check 1201 is for $764.05
-Check 1202 is for $823.14
-
->>> import operator
->>> for cube in imap(operator.pow, xrange(1,4), repeat(3)):
-...    print cube
-...
-1
-8
-27
-
->>> reportlines = ['EuroPython', 'Roster', '', 'alex', '', 'laura', '', 'martin', '', 'walter', '', 'samuele']
->>> for name in islice(reportlines, 3, None, 2):
-...    print name.title()
-...
-Alex
-Laura
-Martin
-Walter
-Samuele
-
->>> from operator import itemgetter
->>> d = dict(a=1, b=2, c=1, d=2, e=1, f=2, g=3)
->>> di = sorted(sorted(d.iteritems()), key=itemgetter(1))
->>> for k, g in groupby(di, itemgetter(1)):
-...     print k, map(itemgetter(0), g)
-...
-1 ['a', 'c', 'e']
-2 ['b', 'd', 'f']
-3 ['g']
-
-# Find runs of consecutive numbers using groupby.  The key to the solution
-# is differencing with a range so that consecutive numbers all appear in
-# same group.
->>> data = [ 1,  4,5,6, 10, 15,16,17,18, 22, 25,26,27,28]
->>> for k, g in groupby(enumerate(data), lambda t:t[0]-t[1]):
-...     print map(operator.itemgetter(1), g)
-...
-[1]
-[4, 5, 6]
-[10]
-[15, 16, 17, 18]
-[22]
-[25, 26, 27, 28]
-
->>> def take(n, iterable):
-...     "Return first n items of the iterable as a list"
-...     return list(islice(iterable, n))
-
->>> def enumerate(iterable, start=0):
-...     return izip(count(start), iterable)
-
->>> def tabulate(function, start=0):
-...     "Return function(0), function(1), ..."
-...     return imap(function, count(start))
-
->>> def nth(iterable, n, default=None):
-...     "Returns the nth item or a default value"
-...     return next(islice(iterable, n, None), default)
-
->>> def quantify(iterable, pred=bool):
-...     "Count how many times the predicate is true"
-...     return sum(imap(pred, iterable))
-
->>> def padnone(iterable):
-...     "Returns the sequence elements and then returns None indefinitely"
-...     return chain(iterable, repeat(None))
-
->>> def ncycles(iterable, n):
-...     "Returns the sequence elements n times"
-...     return chain(*repeat(iterable, n))
-
->>> def dotproduct(vec1, vec2):
-...     return sum(imap(operator.mul, vec1, vec2))
-
->>> def flatten(listOfLists):
-...     return list(chain.from_iterable(listOfLists))
-
->>> def repeatfunc(func, times=None, *args):
-...     "Repeat calls to func with specified arguments."
-...     "   Example:  repeatfunc(random.random)"
-...     if times is None:
-...         return starmap(func, repeat(args))
-...     else:
-...         return starmap(func, repeat(args, times))
-
->>> def pairwise(iterable):
-...     "s -> (s0,s1), (s1,s2), (s2, s3), ..."
-...     a, b = tee(iterable)
-...     for elem in b:
-...         break
-...     return izip(a, b)
-
->>> def grouper(n, iterable, fillvalue=None):
-...     "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
-...     args = [iter(iterable)] * n
-...     return izip_longest(fillvalue=fillvalue, *args)
-
->>> def roundrobin(*iterables):
-...     "roundrobin('ABC', 'D', 'EF') --> A D E B F C"
-...     # Recipe credited to George Sakkis
-...     pending = len(iterables)
-...     nexts = cycle(iter(it).next for it in iterables)
-...     while pending:
-...         try:
-...             for next in nexts:
-...                 yield next()
-...         except StopIteration:
-...             pending -= 1
-...             nexts = cycle(islice(nexts, pending))
-
->>> def powerset(iterable):
-...     "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
-...     s = list(iterable)
-...     return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
-
->>> def unique_everseen(iterable, key=None):
-...     "List unique elements, preserving order. Remember all elements ever seen."
-...     # unique_everseen('AAAABBBCCDAABBB') --> A B C D
-...     # unique_everseen('ABBCcAD', str.lower) --> A B C D
-...     seen = set()
-...     seen_add = seen.add
-...     if key is None:
-...         for element in iterable:
-...             if element not in seen:
-...                 seen_add(element)
-...                 yield element
-...     else:
-...         for element in iterable:
-...             k = key(element)
-...             if k not in seen:
-...                 seen_add(k)
-...                 yield element
-
->>> def unique_justseen(iterable, key=None):
-...     "List unique elements, preserving order. Remember only the element just seen."
-...     # unique_justseen('AAAABBBCCDAABBB') --> A B C D A B
-...     # unique_justseen('ABBCcAD', str.lower) --> A B C A D
-...     return imap(next, imap(itemgetter(1), groupby(iterable, key)))
-
-This is not part of the examples but it tests to make sure the definitions
-perform as purported.
-
->>> take(10, count())
-[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-
->>> list(enumerate('abc'))
-[(0, 'a'), (1, 'b'), (2, 'c')]
-
->>> list(islice(tabulate(lambda x: 2*x), 4))
-[0, 2, 4, 6]
-
->>> nth('abcde', 3)
-'d'
-
->>> nth('abcde', 9) is None
-True
-
->>> quantify(xrange(99), lambda x: x%2==0)
-50
-
->>> a = [[1, 2, 3], [4, 5, 6]]
->>> flatten(a)
-[1, 2, 3, 4, 5, 6]
-
->>> list(repeatfunc(pow, 5, 2, 3))
-[8, 8, 8, 8, 8]
-
->>> import random
->>> take(5, imap(int, repeatfunc(random.random)))
-[0, 0, 0, 0, 0]
-
->>> list(pairwise('abcd'))
-[('a', 'b'), ('b', 'c'), ('c', 'd')]
-
->>> list(pairwise([]))
-[]
-
->>> list(pairwise('a'))
-[]
-
->>> list(islice(padnone('abc'), 0, 6))
-['a', 'b', 'c', None, None, None]
-
->>> list(ncycles('abc', 3))
-['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
-
->>> dotproduct([1,2,3], [4,5,6])
-32
-
->>> list(grouper(3, 'abcdefg', 'x'))
-[('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'x', 'x')]
-
->>> list(roundrobin('abc', 'd', 'ef'))
-['a', 'd', 'e', 'b', 'f', 'c']
-
->>> list(powerset([1,2,3]))
-[(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)]
-
->>> all(len(list(powerset(range(n)))) == 2**n for n in range(18))
-True
-
->>> list(powerset('abcde')) == sorted(sorted(set(powerset('abcde'))), key=len)
-True
-
->>> list(unique_everseen('AAAABBBCCDAABBB'))
-['A', 'B', 'C', 'D']
-
->>> list(unique_everseen('ABBCcAD', str.lower))
-['A', 'B', 'C', 'D']
-
->>> list(unique_justseen('AAAABBBCCDAABBB'))
-['A', 'B', 'C', 'D', 'A', 'B']
-
->>> list(unique_justseen('ABBCcAD', str.lower))
-['A', 'B', 'C', 'A', 'D']
-
-"""
-
-__test__ = {'libreftest' : libreftest}
-
-def test_main(verbose=None):
-    test_classes = (TestBasicOps, TestVariousIteratorArgs, TestGC,
-                    RegressionTests, LengthTransparency,
-                    SubclassWithKwargsTest, TestExamples)
-    test_support.run_unittest(*test_classes)
-
-    # verify reference counting
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        import gc
-        counts = [None] * 5
-        for i in xrange(len(counts)):
-            test_support.run_unittest(*test_classes)
-            gc.collect()
-            counts[i] = sys.gettotalrefcount()
-        print counts
-
-    # doctest the examples in the library reference
-    test_support.run_doctest(sys.modules[__name__], verbose)
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_json.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_json.py
deleted file mode 100644
index 7f1c1da..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_json.py
+++ /dev/null
@@ -1,17 +0,0 @@
-"""Tests for json.
-
-The tests for json are defined in the json.tests package;
-the test_suite() function there returns a test suite that's ready to
-be run.
-"""
-
-import json.tests
-import test.test_support
-
-
-def test_main():
-    test.test_support.run_unittest(json.tests.test_suite())
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_kqueue.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_kqueue.py
deleted file mode 100644
index a76c07c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_kqueue.py
+++ /dev/null
@@ -1,196 +0,0 @@
-"""
-Tests for kqueue wrapper.
-"""
-import socket
-import errno
-import time
-import select
-import sys
-import unittest
-
-from test import test_support
-if not hasattr(select, "kqueue"):
-    raise unittest.SkipTest("test works only on BSD")
-
-class TestKQueue(unittest.TestCase):
-    def test_create_queue(self):
-        kq = select.kqueue()
-        self.assertTrue(kq.fileno() > 0, kq.fileno())
-        self.assertTrue(not kq.closed)
-        kq.close()
-        self.assertTrue(kq.closed)
-        self.assertRaises(ValueError, kq.fileno)
-
-    def test_create_event(self):
-        fd = sys.stderr.fileno()
-        ev = select.kevent(fd)
-        other = select.kevent(1000)
-        self.assertEqual(ev.ident, fd)
-        self.assertEqual(ev.filter, select.KQ_FILTER_READ)
-        self.assertEqual(ev.flags, select.KQ_EV_ADD)
-        self.assertEqual(ev.fflags, 0)
-        self.assertEqual(ev.data, 0)
-        self.assertEqual(ev.udata, 0)
-        self.assertEqual(ev, ev)
-        self.assertNotEqual(ev, other)
-        self.assertEqual(cmp(ev, other), -1)
-        self.assertTrue(ev < other)
-        self.assertTrue(other >= ev)
-        self.assertRaises(TypeError, cmp, ev, None)
-        self.assertRaises(TypeError, cmp, ev, 1)
-        self.assertRaises(TypeError, cmp, ev, "ev")
-
-        ev = select.kevent(fd, select.KQ_FILTER_WRITE)
-        self.assertEqual(ev.ident, fd)
-        self.assertEqual(ev.filter, select.KQ_FILTER_WRITE)
-        self.assertEqual(ev.flags, select.KQ_EV_ADD)
-        self.assertEqual(ev.fflags, 0)
-        self.assertEqual(ev.data, 0)
-        self.assertEqual(ev.udata, 0)
-        self.assertEqual(ev, ev)
-        self.assertNotEqual(ev, other)
-
-        ev = select.kevent(fd, select.KQ_FILTER_WRITE, select.KQ_EV_ONESHOT)
-        self.assertEqual(ev.ident, fd)
-        self.assertEqual(ev.filter, select.KQ_FILTER_WRITE)
-        self.assertEqual(ev.flags, select.KQ_EV_ONESHOT)
-        self.assertEqual(ev.fflags, 0)
-        self.assertEqual(ev.data, 0)
-        self.assertEqual(ev.udata, 0)
-        self.assertEqual(ev, ev)
-        self.assertNotEqual(ev, other)
-
-        ev = select.kevent(1, 2, 3, 4, 5, 6)
-        self.assertEqual(ev.ident, 1)
-        self.assertEqual(ev.filter, 2)
-        self.assertEqual(ev.flags, 3)
-        self.assertEqual(ev.fflags, 4)
-        self.assertEqual(ev.data, 5)
-        self.assertEqual(ev.udata, 6)
-        self.assertEqual(ev, ev)
-        self.assertNotEqual(ev, other)
-
-        bignum = sys.maxsize * 2 + 1
-        ev = select.kevent(bignum, 1, 2, 3, sys.maxsize, bignum)
-        self.assertEqual(ev.ident, bignum)
-        self.assertEqual(ev.filter, 1)
-        self.assertEqual(ev.flags, 2)
-        self.assertEqual(ev.fflags, 3)
-        self.assertEqual(ev.data, sys.maxsize)
-        self.assertEqual(ev.udata, bignum)
-        self.assertEqual(ev, ev)
-        self.assertNotEqual(ev, other)
-
-    def test_queue_event(self):
-        serverSocket = socket.socket()
-        serverSocket.bind(('127.0.0.1', 0))
-        serverSocket.listen(1)
-        client = socket.socket()
-        client.setblocking(False)
-        try:
-            client.connect(('127.0.0.1', serverSocket.getsockname()[1]))
-        except socket.error, e:
-            self.assertEqual(e.args[0], errno.EINPROGRESS)
-        else:
-            #raise AssertionError("Connect should have raised EINPROGRESS")
-            pass # FreeBSD doesn't raise an exception here
-        server, addr = serverSocket.accept()
-
-        if sys.platform.startswith("darwin"):
-            flags = select.KQ_EV_ADD | select.KQ_EV_ENABLE
-        else:
-            flags = 0
-
-        kq = select.kqueue()
-        kq2 = select.kqueue.fromfd(kq.fileno())
-
-        ev = select.kevent(server.fileno(),
-                           select.KQ_FILTER_WRITE,
-                           select.KQ_EV_ADD | select.KQ_EV_ENABLE)
-        kq.control([ev], 0)
-        ev = select.kevent(server.fileno(),
-                           select.KQ_FILTER_READ,
-                           select.KQ_EV_ADD | select.KQ_EV_ENABLE)
-        kq.control([ev], 0)
-        ev = select.kevent(client.fileno(),
-                           select.KQ_FILTER_WRITE,
-                           select.KQ_EV_ADD | select.KQ_EV_ENABLE)
-        kq2.control([ev], 0)
-        ev = select.kevent(client.fileno(),
-                           select.KQ_FILTER_READ,
-                           select.KQ_EV_ADD | select.KQ_EV_ENABLE)
-        kq2.control([ev], 0)
-
-        events = kq.control(None, 4, 1)
-        events = [(e.ident, e.filter, e.flags) for e in events]
-        events.sort()
-        self.assertEqual(events, [
-            (client.fileno(), select.KQ_FILTER_WRITE, flags),
-            (server.fileno(), select.KQ_FILTER_WRITE, flags)])
-
-        client.send("Hello!")
-        server.send("world!!!")
-
-        # We may need to call it several times
-        for i in range(10):
-            events = kq.control(None, 4, 1)
-            if len(events) == 4:
-                break
-            time.sleep(1.0)
-        else:
-            self.fail('timeout waiting for event notifications')
-
-        events = [(e.ident, e.filter, e.flags) for e in events]
-        events.sort()
-
-        self.assertEqual(events, [
-            (client.fileno(), select.KQ_FILTER_WRITE, flags),
-            (client.fileno(), select.KQ_FILTER_READ, flags),
-            (server.fileno(), select.KQ_FILTER_WRITE, flags),
-            (server.fileno(), select.KQ_FILTER_READ, flags)])
-
-        # Remove completely client, and server read part
-        ev = select.kevent(client.fileno(),
-                           select.KQ_FILTER_WRITE,
-                           select.KQ_EV_DELETE)
-        kq.control([ev], 0)
-        ev = select.kevent(client.fileno(),
-                           select.KQ_FILTER_READ,
-                           select.KQ_EV_DELETE)
-        kq.control([ev], 0)
-        ev = select.kevent(server.fileno(),
-                           select.KQ_FILTER_READ,
-                           select.KQ_EV_DELETE)
-        kq.control([ev], 0, 0)
-
-        events = kq.control([], 4, 0.99)
-        events = [(e.ident, e.filter, e.flags) for e in events]
-        events.sort()
-        self.assertEqual(events, [
-            (server.fileno(), select.KQ_FILTER_WRITE, flags)])
-
-        client.close()
-        server.close()
-        serverSocket.close()
-
-    def testPair(self):
-        kq = select.kqueue()
-        a, b = socket.socketpair()
-
-        a.send(b'foo')
-        event1 = select.kevent(a, select.KQ_FILTER_READ, select.KQ_EV_ADD | select.KQ_EV_ENABLE)
-        event2 = select.kevent(b, select.KQ_FILTER_READ, select.KQ_EV_ADD | select.KQ_EV_ENABLE)
-        r = kq.control([event1, event2], 1, 1)
-        self.assertTrue(r)
-        self.assertFalse(r[0].flags & select.KQ_EV_ERROR)
-        self.assertEqual(b.recv(r[0].data), b'foo')
-
-        a.close()
-        b.close()
-        kq.close()
-
-def test_main():
-    test_support.run_unittest(TestKQueue)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_largefile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_largefile.py
deleted file mode 100644
index 794cc37..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_largefile.py
+++ /dev/null
@@ -1,200 +0,0 @@
-"""Test largefile support on system where this makes sense.
-"""
-
-from __future__ import print_function
-
-import os
-import stat
-import sys
-import unittest
-from test.test_support import run_unittest, TESTFN, verbose, requires, \
-                              unlink
-import io  # C implementation of io
-import _pyio as pyio # Python implementation of io
-
-try:
-    import signal
-    # The default handler for SIGXFSZ is to abort the process.
-    # By ignoring it, system calls exceeding the file size resource
-    # limit will raise IOError instead of crashing the interpreter.
-    oldhandler = signal.signal(signal.SIGXFSZ, signal.SIG_IGN)
-except (ImportError, AttributeError):
-    pass
-
-# create >2GB file (2GB = 2147483648 bytes)
-size = 2500000000
-
-
-class LargeFileTest(unittest.TestCase):
-    """Test that each file function works as expected for a large
-    (i.e. > 2GB, do  we have to check > 4GB) files.
-
-    NOTE: the order of execution of the test methods is important! test_seek
-    must run first to create the test file. File cleanup must also be handled
-    outside the test instances because of this.
-
-    """
-
-    def test_seek(self):
-        if verbose:
-            print('create large file via seek (may be sparse file) ...')
-        with self.open(TESTFN, 'wb') as f:
-            f.write(b'z')
-            f.seek(0)
-            f.seek(size)
-            f.write(b'a')
-            f.flush()
-            if verbose:
-                print('check file size with os.fstat')
-            self.assertEqual(os.fstat(f.fileno())[stat.ST_SIZE], size+1)
-
-    def test_osstat(self):
-        if verbose:
-            print('check file size with os.stat')
-        self.assertEqual(os.stat(TESTFN)[stat.ST_SIZE], size+1)
-
-    def test_seek_read(self):
-        if verbose:
-            print('play around with seek() and read() with the built largefile')
-        with self.open(TESTFN, 'rb') as f:
-            self.assertEqual(f.tell(), 0)
-            self.assertEqual(f.read(1), b'z')
-            self.assertEqual(f.tell(), 1)
-            f.seek(0)
-            self.assertEqual(f.tell(), 0)
-            f.seek(0, 0)
-            self.assertEqual(f.tell(), 0)
-            f.seek(42)
-            self.assertEqual(f.tell(), 42)
-            f.seek(42, 0)
-            self.assertEqual(f.tell(), 42)
-            f.seek(42, 1)
-            self.assertEqual(f.tell(), 84)
-            f.seek(0, 1)
-            self.assertEqual(f.tell(), 84)
-            f.seek(0, 2)  # seek from the end
-            self.assertEqual(f.tell(), size + 1 + 0)
-            f.seek(-10, 2)
-            self.assertEqual(f.tell(), size + 1 - 10)
-            f.seek(-size-1, 2)
-            self.assertEqual(f.tell(), 0)
-            f.seek(size)
-            self.assertEqual(f.tell(), size)
-            # the 'a' that was written at the end of file above
-            self.assertEqual(f.read(1), b'a')
-            f.seek(-size-1, 1)
-            self.assertEqual(f.read(1), b'z')
-            self.assertEqual(f.tell(), 1)
-
-    def test_lseek(self):
-        if verbose:
-            print('play around with os.lseek() with the built largefile')
-        with self.open(TESTFN, 'rb') as f:
-            self.assertEqual(os.lseek(f.fileno(), 0, 0), 0)
-            self.assertEqual(os.lseek(f.fileno(), 42, 0), 42)
-            self.assertEqual(os.lseek(f.fileno(), 42, 1), 84)
-            self.assertEqual(os.lseek(f.fileno(), 0, 1), 84)
-            self.assertEqual(os.lseek(f.fileno(), 0, 2), size+1+0)
-            self.assertEqual(os.lseek(f.fileno(), -10, 2), size+1-10)
-            self.assertEqual(os.lseek(f.fileno(), -size-1, 2), 0)
-            self.assertEqual(os.lseek(f.fileno(), size, 0), size)
-            # the 'a' that was written at the end of file above
-            self.assertEqual(f.read(1), b'a')
-
-    def test_truncate(self):
-        if verbose:
-            print('try truncate')
-        with self.open(TESTFN, 'r+b') as f:
-            # this is already decided before start running the test suite
-            # but we do it anyway for extra protection
-            if not hasattr(f, 'truncate'):
-                raise unittest.SkipTest("open().truncate() not available on this system")
-            f.seek(0, 2)
-            # else we've lost track of the true size
-            self.assertEqual(f.tell(), size+1)
-            # Cut it back via seek + truncate with no argument.
-            newsize = size - 10
-            f.seek(newsize)
-            f.truncate()
-            self.assertEqual(f.tell(), newsize)  # else pointer moved
-            f.seek(0, 2)
-            self.assertEqual(f.tell(), newsize)  # else wasn't truncated
-            # Ensure that truncate(smaller than true size) shrinks
-            # the file.
-            newsize -= 1
-            f.seek(42)
-            f.truncate(newsize)
-            if self.new_io:
-                self.assertEqual(f.tell(), 42)
-            f.seek(0, 2)
-            self.assertEqual(f.tell(), newsize)
-            # XXX truncate(larger than true size) is ill-defined
-            # across platform; cut it waaaaay back
-            f.seek(0)
-            f.truncate(1)
-            if self.new_io:
-                self.assertEqual(f.tell(), 0)       # else pointer moved
-            f.seek(0)
-            self.assertEqual(len(f.read()), 1)  # else wasn't truncated
-
-    def test_seekable(self):
-        # Issue #5016; seekable() can return False when the current position
-        # is negative when truncated to an int.
-        if not self.new_io:
-            self.skipTest("builtin file doesn't have seekable()")
-        for pos in (2**31-1, 2**31, 2**31+1):
-            with self.open(TESTFN, 'rb') as f:
-                f.seek(pos)
-                self.assertTrue(f.seekable())
-
-
-def test_main():
-    # On Windows and Mac OSX this test comsumes large resources; It
-    # takes a long time to build the >2GB file and takes >2GB of disk
-    # space therefore the resource must be enabled to run this test.
-    # If not, nothing after this line stanza will be executed.
-    if sys.platform[:3] == 'win' or sys.platform == 'darwin':
-        requires('largefile',
-                 'test requires %s bytes and a long time to run' % str(size))
-    else:
-        # Only run if the current filesystem supports large files.
-        # (Skip this test on Windows, since we now always support
-        # large files.)
-        f = open(TESTFN, 'wb', buffering=0)
-        try:
-            # 2**31 == 2147483648
-            f.seek(2147483649)
-            # Seeking is not enough of a test: you must write and
-            # flush, too!
-            f.write(b'x')
-            f.flush()
-        except (IOError, OverflowError):
-            f.close()
-            unlink(TESTFN)
-            raise unittest.SkipTest("filesystem does not have largefile support")
-        else:
-            f.close()
-    suite = unittest.TestSuite()
-    for _open, prefix in [(io.open, 'C'), (pyio.open, 'Py'),
-                          (open, 'Builtin')]:
-        class TestCase(LargeFileTest):
-            pass
-        TestCase.open = staticmethod(_open)
-        TestCase.new_io = _open is not open
-        TestCase.__name__ = prefix + LargeFileTest.__name__
-        suite.addTest(TestCase('test_seek'))
-        suite.addTest(TestCase('test_osstat'))
-        suite.addTest(TestCase('test_seek_read'))
-        suite.addTest(TestCase('test_lseek'))
-        with _open(TESTFN, 'wb') as f:
-            if hasattr(f, 'truncate'):
-                suite.addTest(TestCase('test_truncate'))
-        suite.addTest(TestCase('test_seekable'))
-        unlink(TESTFN)
-    try:
-        run_unittest(suite)
-    finally:
-        unlink(TESTFN)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_lib2to3.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_lib2to3.py
deleted file mode 100644
index abb3297..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_lib2to3.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Skipping test_parser and test_all_fixers
-# because of running
-from lib2to3.tests import (test_fixers, test_pytree, test_util, test_refactor,
-                           test_parser, test_main as test_main_)
-import unittest
-from test.test_support import run_unittest
-
-def suite():
-    tests = unittest.TestSuite()
-    loader = unittest.TestLoader()
-    for m in (test_fixers, test_pytree,test_util, test_refactor, test_parser,
-              test_main_):
-        tests.addTests(loader.loadTestsFromModule(m))
-    return tests
-
-def test_main():
-    run_unittest(suite())
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_linecache.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_linecache.py
deleted file mode 100644
index 1657e5d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_linecache.py
+++ /dev/null
@@ -1,131 +0,0 @@
-""" Tests for the linecache module """
-
-import linecache
-import unittest
-import os.path
-from test import test_support as support
-
-
-FILENAME = linecache.__file__
-INVALID_NAME = '!@$)(!@#_1'
-EMPTY = ''
-TESTS = 'inspect_fodder inspect_fodder2 mapping_tests'
-TESTS = TESTS.split()
-TEST_PATH = os.path.dirname(support.__file__)
-MODULES = "linecache abc".split()
-MODULE_PATH = os.path.dirname(FILENAME)
-
-SOURCE_1 = '''
-" Docstring "
-
-def function():
-    return result
-
-'''
-
-SOURCE_2 = '''
-def f():
-    return 1 + 1
-
-a = f()
-
-'''
-
-SOURCE_3 = '''
-def f():
-    return 3''' # No ending newline
-
-
-class LineCacheTests(unittest.TestCase):
-
-    def test_getline(self):
-        getline = linecache.getline
-
-        # Bad values for line number should return an empty string
-        self.assertEqual(getline(FILENAME, 2**15), EMPTY)
-        self.assertEqual(getline(FILENAME, -1), EMPTY)
-
-        # Float values currently raise TypeError, should it?
-        self.assertRaises(TypeError, getline, FILENAME, 1.1)
-
-        # Bad filenames should return an empty string
-        self.assertEqual(getline(EMPTY, 1), EMPTY)
-        self.assertEqual(getline(INVALID_NAME, 1), EMPTY)
-
-        # Check whether lines correspond to those from file iteration
-        for entry in TESTS:
-            filename = os.path.join(TEST_PATH, entry) + '.py'
-            for index, line in enumerate(open(filename)):
-                self.assertEqual(line, getline(filename, index + 1))
-
-        # Check module loading
-        for entry in MODULES:
-            filename = os.path.join(MODULE_PATH, entry) + '.py'
-            for index, line in enumerate(open(filename)):
-                self.assertEqual(line, getline(filename, index + 1))
-
-        # Check that bogus data isn't returned (issue #1309567)
-        empty = linecache.getlines('a/b/c/__init__.py')
-        self.assertEqual(empty, [])
-
-    def test_no_ending_newline(self):
-        self.addCleanup(support.unlink, support.TESTFN)
-        with open(support.TESTFN, "w") as fp:
-            fp.write(SOURCE_3)
-        lines = linecache.getlines(support.TESTFN)
-        self.assertEqual(lines, ["\n", "def f():\n", "    return 3\n"])
-
-    def test_clearcache(self):
-        cached = []
-        for entry in TESTS:
-            filename = os.path.join(TEST_PATH, entry) + '.py'
-            cached.append(filename)
-            linecache.getline(filename, 1)
-
-        # Are all files cached?
-        cached_empty = [fn for fn in cached if fn not in linecache.cache]
-        self.assertEqual(cached_empty, [])
-
-        # Can we clear the cache?
-        linecache.clearcache()
-        cached_empty = [fn for fn in cached if fn in linecache.cache]
-        self.assertEqual(cached_empty, [])
-
-    def test_checkcache(self):
-        getline = linecache.getline
-        # Create a source file and cache its contents
-        source_name = support.TESTFN + '.py'
-        self.addCleanup(support.unlink, source_name)
-        with open(source_name, 'w') as source:
-            source.write(SOURCE_1)
-        getline(source_name, 1)
-
-        # Keep a copy of the old contents
-        source_list = []
-        with open(source_name) as source:
-            for index, line in enumerate(source):
-                self.assertEqual(line, getline(source_name, index + 1))
-                source_list.append(line)
-
-        with open(source_name, 'w') as source:
-            source.write(SOURCE_2)
-
-        # Try to update a bogus cache entry
-        linecache.checkcache('dummy')
-
-        # Check that the cache matches the old contents
-        for index, line in enumerate(source_list):
-            self.assertEqual(line, getline(source_name, index + 1))
-
-        # Update the cache and check whether it matches the new source file
-        linecache.checkcache(source_name)
-        with open(source_name) as source:
-            for index, line in enumerate(source):
-                self.assertEqual(line, getline(source_name, index + 1))
-                source_list.append(line)
-
-def test_main():
-    support.run_unittest(LineCacheTests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_linuxaudiodev.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_linuxaudiodev.py
deleted file mode 100644
index 738c448..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_linuxaudiodev.py
+++ /dev/null
@@ -1,99 +0,0 @@
-from test import test_support
-test_support.requires('audio')
-
-from test.test_support import findfile, run_unittest
-
-import errno
-import sys
-import audioop
-import unittest
-
-linuxaudiodev = test_support.import_module('linuxaudiodev', deprecated=True)
-sunaudio = test_support.import_module('sunaudio', deprecated=True)
-
-SND_FORMAT_MULAW_8 = 1
-
-class LinuxAudioDevTests(unittest.TestCase):
-
-    def setUp(self):
-        self.dev = linuxaudiodev.open('w')
-
-    def tearDown(self):
-        self.dev.close()
-
-    def test_methods(self):
-        # at least check that these methods can be invoked
-        self.dev.bufsize()
-        self.dev.obufcount()
-        self.dev.obuffree()
-        self.dev.getptr()
-        self.dev.fileno()
-
-    def test_play_sound_file(self):
-        path = findfile("audiotest.au")
-        fp = open(path, 'r')
-        size, enc, rate, nchannels, extra = sunaudio.gethdr(fp)
-        data = fp.read()
-        fp.close()
-
-        if enc != SND_FORMAT_MULAW_8:
-            self.fail("Expect .au file with 8-bit mu-law samples")
-
-        # convert the data to 16-bit signed
-        data = audioop.ulaw2lin(data, 2)
-
-        # set the data format
-        if sys.byteorder == 'little':
-            fmt = linuxaudiodev.AFMT_S16_LE
-        else:
-            fmt = linuxaudiodev.AFMT_S16_BE
-
-        # set parameters based on .au file headers
-        self.dev.setparameters(rate, 16, nchannels, fmt)
-        self.dev.write(data)
-        self.dev.flush()
-
-    def test_errors(self):
-        size = 8
-        fmt = linuxaudiodev.AFMT_U8
-        rate = 8000
-        nchannels = 1
-        try:
-            self.dev.setparameters(-1, size, nchannels, fmt)
-        except ValueError, err:
-            self.assertEqual(err.args[0], "expected rate >= 0, not -1")
-        try:
-            self.dev.setparameters(rate, -2, nchannels, fmt)
-        except ValueError, err:
-            self.assertEqual(err.args[0], "expected sample size >= 0, not -2")
-        try:
-            self.dev.setparameters(rate, size, 3, fmt)
-        except ValueError, err:
-            self.assertEqual(err.args[0], "nchannels must be 1 or 2, not 3")
-        try:
-            self.dev.setparameters(rate, size, nchannels, 177)
-        except ValueError, err:
-            self.assertEqual(err.args[0], "unknown audio encoding: 177")
-        try:
-            self.dev.setparameters(rate, size, nchannels, linuxaudiodev.AFMT_U16_LE)
-        except ValueError, err:
-            self.assertEqual(err.args[0], "for linear unsigned 16-bit little-endian "
-                             "audio, expected sample size 16, not 8")
-        try:
-            self.dev.setparameters(rate, 16, nchannels, fmt)
-        except ValueError, err:
-            self.assertEqual(err.args[0], "for linear unsigned 8-bit audio, expected "
-                             "sample size 8, not 16")
-
-def test_main():
-    try:
-        dsp = linuxaudiodev.open('w')
-    except linuxaudiodev.error, msg:
-        if msg.args[0] in (errno.EACCES, errno.ENOENT, errno.ENODEV, errno.EBUSY):
-            raise unittest.SkipTest(msg)
-        raise
-    dsp.close()
-    run_unittest(LinuxAudioDevTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_list.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_list.py
deleted file mode 100644
index 8c77483..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_list.py
+++ /dev/null
@@ -1,78 +0,0 @@
-import sys
-from test import test_support, list_tests
-
-class ListTest(list_tests.CommonTest):
-    type2test = list
-
-    def test_basic(self):
-        self.assertEqual(list([]), [])
-        l0_3 = [0, 1, 2, 3]
-        l0_3_bis = list(l0_3)
-        self.assertEqual(l0_3, l0_3_bis)
-        self.assertTrue(l0_3 is not l0_3_bis)
-        self.assertEqual(list(()), [])
-        self.assertEqual(list((0, 1, 2, 3)), [0, 1, 2, 3])
-        self.assertEqual(list(''), [])
-        self.assertEqual(list('spam'), ['s', 'p', 'a', 'm'])
-
-        if sys.maxsize == 0x7fffffff:
-            # This test can currently only work on 32-bit machines.
-            # XXX If/when PySequence_Length() returns a ssize_t, it should be
-            # XXX re-enabled.
-            # Verify clearing of bug #556025.
-            # This assumes that the max data size (sys.maxint) == max
-            # address size this also assumes that the address size is at
-            # least 4 bytes with 8 byte addresses, the bug is not well
-            # tested
-            #
-            # Note: This test is expected to SEGV under Cygwin 1.3.12 or
-            # earlier due to a newlib bug.  See the following mailing list
-            # thread for the details:
-
-            #     http://sources.redhat.com/ml/newlib/2002/msg00369.html
-            self.assertRaises(MemoryError, list, xrange(sys.maxint // 2))
-
-        # This code used to segfault in Py2.4a3
-        x = []
-        x.extend(-y for y in x)
-        self.assertEqual(x, [])
-
-    def test_truth(self):
-        super(ListTest, self).test_truth()
-        self.assertTrue(not [])
-        self.assertTrue([42])
-
-    def test_identity(self):
-        self.assertTrue([] is not [])
-
-    def test_len(self):
-        super(ListTest, self).test_len()
-        self.assertEqual(len([]), 0)
-        self.assertEqual(len([0]), 1)
-        self.assertEqual(len([0, 1, 2]), 3)
-
-    def test_overflow(self):
-        lst = [4, 5, 6, 7]
-        n = int((sys.maxint*2+2) // len(lst))
-        def mul(a, b): return a * b
-        def imul(a, b): a *= b
-        self.assertRaises((MemoryError, OverflowError), mul, lst, n)
-        self.assertRaises((MemoryError, OverflowError), imul, lst, n)
-
-def test_main(verbose=None):
-    test_support.run_unittest(ListTest)
-
-    # verify reference counting
-    import sys
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        import gc
-        counts = [None] * 5
-        for i in xrange(len(counts)):
-            test_support.run_unittest(ListTest)
-            gc.collect()
-            counts[i] = sys.gettotalrefcount()
-        print counts
-
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_locale.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_locale.py
deleted file mode 100644
index ff2cbfa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_locale.py
+++ /dev/null
@@ -1,420 +0,0 @@
-from test.test_support import run_unittest, verbose
-import unittest
-import locale
-import sys
-import codecs
-
-
-enUS_locale = None
-
-def get_enUS_locale():
-    global enUS_locale
-    if sys.platform == 'darwin':
-        import os
-        tlocs = ("en_US.UTF-8", "en_US.ISO8859-1", "en_US")
-        if int(os.uname()[2].split('.')[0]) < 10:
-            # The locale test work fine on OSX 10.6, I (ronaldoussoren)
-            # haven't had time yet to verify if tests work on OSX 10.5
-            # (10.4 is known to be bad)
-            raise unittest.SkipTest("Locale support on MacOSX is minimal")
-    if sys.platform.startswith("win"):
-        tlocs = ("En", "English")
-    else:
-        tlocs = ("en_US.UTF-8", "en_US.US-ASCII", "en_US")
-    oldlocale = locale.setlocale(locale.LC_NUMERIC)
-    for tloc in tlocs:
-        try:
-            locale.setlocale(locale.LC_NUMERIC, tloc)
-        except locale.Error:
-            continue
-        break
-    else:
-        raise unittest.SkipTest(
-            "Test locale not supported (tried %s)" % (', '.join(tlocs)))
-    enUS_locale = tloc
-    locale.setlocale(locale.LC_NUMERIC, oldlocale)
-
-
-class BaseLocalizedTest(unittest.TestCase):
-    #
-    # Base class for tests using a real locale
-    #
-
-    def setUp(self):
-        self.oldlocale = locale.setlocale(self.locale_type)
-        locale.setlocale(self.locale_type, enUS_locale)
-        if verbose:
-            print "testing with \"%s\"..." % enUS_locale,
-
-    def tearDown(self):
-        locale.setlocale(self.locale_type, self.oldlocale)
-
-
-class BaseCookedTest(unittest.TestCase):
-    #
-    # Base class for tests using cooked localeconv() values
-    #
-
-    def setUp(self):
-        locale._override_localeconv = self.cooked_values
-
-    def tearDown(self):
-        locale._override_localeconv = {}
-
-
-class CCookedTest(BaseCookedTest):
-    # A cooked "C" locale
-
-    cooked_values = {
-        'currency_symbol': '',
-        'decimal_point': '.',
-        'frac_digits': 127,
-        'grouping': [],
-        'int_curr_symbol': '',
-        'int_frac_digits': 127,
-        'mon_decimal_point': '',
-        'mon_grouping': [],
-        'mon_thousands_sep': '',
-        'n_cs_precedes': 127,
-        'n_sep_by_space': 127,
-        'n_sign_posn': 127,
-        'negative_sign': '',
-        'p_cs_precedes': 127,
-        'p_sep_by_space': 127,
-        'p_sign_posn': 127,
-        'positive_sign': '',
-        'thousands_sep': ''
-    }
-
-class EnUSCookedTest(BaseCookedTest):
-    # A cooked "en_US" locale
-
-    cooked_values = {
-        'currency_symbol': '$',
-        'decimal_point': '.',
-        'frac_digits': 2,
-        'grouping': [3, 3, 0],
-        'int_curr_symbol': 'USD ',
-        'int_frac_digits': 2,
-        'mon_decimal_point': '.',
-        'mon_grouping': [3, 3, 0],
-        'mon_thousands_sep': ',',
-        'n_cs_precedes': 1,
-        'n_sep_by_space': 0,
-        'n_sign_posn': 1,
-        'negative_sign': '-',
-        'p_cs_precedes': 1,
-        'p_sep_by_space': 0,
-        'p_sign_posn': 1,
-        'positive_sign': '',
-        'thousands_sep': ','
-    }
-
-
-class FrFRCookedTest(BaseCookedTest):
-    # A cooked "fr_FR" locale with a space character as decimal separator
-    # and a non-ASCII currency symbol.
-
-    cooked_values = {
-        'currency_symbol': '\xe2\x82\xac',
-        'decimal_point': ',',
-        'frac_digits': 2,
-        'grouping': [3, 3, 0],
-        'int_curr_symbol': 'EUR ',
-        'int_frac_digits': 2,
-        'mon_decimal_point': ',',
-        'mon_grouping': [3, 3, 0],
-        'mon_thousands_sep': ' ',
-        'n_cs_precedes': 0,
-        'n_sep_by_space': 1,
-        'n_sign_posn': 1,
-        'negative_sign': '-',
-        'p_cs_precedes': 0,
-        'p_sep_by_space': 1,
-        'p_sign_posn': 1,
-        'positive_sign': '',
-        'thousands_sep': ' '
-    }
-
-
-class BaseFormattingTest(object):
-    #
-    # Utility functions for formatting tests
-    #
-
-    def _test_formatfunc(self, format, value, out, func, **format_opts):
-        self.assertEqual(
-            func(format, value, **format_opts), out)
-
-    def _test_format(self, format, value, out, **format_opts):
-        self._test_formatfunc(format, value, out,
-            func=locale.format, **format_opts)
-
-    def _test_format_string(self, format, value, out, **format_opts):
-        self._test_formatfunc(format, value, out,
-            func=locale.format_string, **format_opts)
-
-    def _test_currency(self, value, out, **format_opts):
-        self.assertEqual(locale.currency(value, **format_opts), out)
-
-
-class EnUSNumberFormatting(BaseFormattingTest):
-    # XXX there is a grouping + padding bug when the thousands separator
-    # is empty but the grouping array contains values (e.g. Solaris 10)
-
-    def setUp(self):
-        self.sep = locale.localeconv()['thousands_sep']
-
-    def test_grouping(self):
-        self._test_format("%f", 1024, grouping=1, out='1%s024.000000' % self.sep)
-        self._test_format("%f", 102, grouping=1, out='102.000000')
-        self._test_format("%f", -42, grouping=1, out='-42.000000')
-        self._test_format("%+f", -42, grouping=1, out='-42.000000')
-
-    def test_grouping_and_padding(self):
-        self._test_format("%20.f", -42, grouping=1, out='-42'.rjust(20))
-        if self.sep:
-            self._test_format("%+10.f", -4200, grouping=1,
-                out=('-4%s200' % self.sep).rjust(10))
-            self._test_format("%-10.f", -4200, grouping=1,
-                out=('-4%s200' % self.sep).ljust(10))
-
-    def test_integer_grouping(self):
-        self._test_format("%d", 4200, grouping=True, out='4%s200' % self.sep)
-        self._test_format("%+d", 4200, grouping=True, out='+4%s200' % self.sep)
-        self._test_format("%+d", -4200, grouping=True, out='-4%s200' % self.sep)
-
-    def test_integer_grouping_and_padding(self):
-        self._test_format("%10d", 4200, grouping=True,
-            out=('4%s200' % self.sep).rjust(10))
-        self._test_format("%-10d", -4200, grouping=True,
-            out=('-4%s200' % self.sep).ljust(10))
-
-    def test_simple(self):
-        self._test_format("%f", 1024, grouping=0, out='1024.000000')
-        self._test_format("%f", 102, grouping=0, out='102.000000')
-        self._test_format("%f", -42, grouping=0, out='-42.000000')
-        self._test_format("%+f", -42, grouping=0, out='-42.000000')
-
-    def test_padding(self):
-        self._test_format("%20.f", -42, grouping=0, out='-42'.rjust(20))
-        self._test_format("%+10.f", -4200, grouping=0, out='-4200'.rjust(10))
-        self._test_format("%-10.f", 4200, grouping=0, out='4200'.ljust(10))
-
-    def test_complex_formatting(self):
-        # Spaces in formatting string
-        self._test_format_string("One million is %i", 1000000, grouping=1,
-            out='One million is 1%s000%s000' % (self.sep, self.sep))
-        self._test_format_string("One  million is %i", 1000000, grouping=1,
-            out='One  million is 1%s000%s000' % (self.sep, self.sep))
-        # Dots in formatting string
-        self._test_format_string(".%f.", 1000.0, out='.1000.000000.')
-        # Padding
-        if self.sep:
-            self._test_format_string("-->  %10.2f", 4200, grouping=1,
-                out='-->  ' + ('4%s200.00' % self.sep).rjust(10))
-        # Asterisk formats
-        self._test_format_string("%10.*f", (2, 1000), grouping=0,
-            out='1000.00'.rjust(10))
-        if self.sep:
-            self._test_format_string("%*.*f", (10, 2, 1000), grouping=1,
-                out=('1%s000.00' % self.sep).rjust(10))
-        # Test more-in-one
-        if self.sep:
-            self._test_format_string("int %i float %.2f str %s",
-                (1000, 1000.0, 'str'), grouping=1,
-                out='int 1%s000 float 1%s000.00 str str' %
-                (self.sep, self.sep))
-
-
-class TestFormatPatternArg(unittest.TestCase):
-    # Test handling of pattern argument of format
-
-    def test_onlyOnePattern(self):
-        # Issue 2522: accept exactly one % pattern, and no extra chars.
-        self.assertRaises(ValueError, locale.format, "%f\n", 'foo')
-        self.assertRaises(ValueError, locale.format, "%f\r", 'foo')
-        self.assertRaises(ValueError, locale.format, "%f\r\n", 'foo')
-        self.assertRaises(ValueError, locale.format, " %f", 'foo')
-        self.assertRaises(ValueError, locale.format, "%fg", 'foo')
-        self.assertRaises(ValueError, locale.format, "%^g", 'foo')
-        self.assertRaises(ValueError, locale.format, "%f%%", 'foo')
-
-
-class TestLocaleFormatString(unittest.TestCase):
-    """General tests on locale.format_string"""
-
-    def test_percent_escape(self):
-        self.assertEqual(locale.format_string('%f%%', 1.0), '%f%%' % 1.0)
-        self.assertEqual(locale.format_string('%d %f%%d', (1, 1.0)),
-            '%d %f%%d' % (1, 1.0))
-        self.assertEqual(locale.format_string('%(foo)s %%d', {'foo': 'bar'}),
-            ('%(foo)s %%d' % {'foo': 'bar'}))
-
-    def test_mapping(self):
-        self.assertEqual(locale.format_string('%(foo)s bing.', {'foo': 'bar'}),
-            ('%(foo)s bing.' % {'foo': 'bar'}))
-        self.assertEqual(locale.format_string('%(foo)s', {'foo': 'bar'}),
-            ('%(foo)s' % {'foo': 'bar'}))
-
-
-
-class TestNumberFormatting(BaseLocalizedTest, EnUSNumberFormatting):
-    # Test number formatting with a real English locale.
-
-    locale_type = locale.LC_NUMERIC
-
-    def setUp(self):
-        BaseLocalizedTest.setUp(self)
-        EnUSNumberFormatting.setUp(self)
-
-
-class TestEnUSNumberFormatting(EnUSCookedTest, EnUSNumberFormatting):
-    # Test number formatting with a cooked "en_US" locale.
-
-    def setUp(self):
-        EnUSCookedTest.setUp(self)
-        EnUSNumberFormatting.setUp(self)
-
-    def test_currency(self):
-        self._test_currency(50000, "$50000.00")
-        self._test_currency(50000, "$50,000.00", grouping=True)
-        self._test_currency(50000, "USD 50,000.00",
-            grouping=True, international=True)
-
-
-class TestCNumberFormatting(CCookedTest, BaseFormattingTest):
-    # Test number formatting with a cooked "C" locale.
-
-    def test_grouping(self):
-        self._test_format("%.2f", 12345.67, grouping=True, out='12345.67')
-
-    def test_grouping_and_padding(self):
-        self._test_format("%9.2f", 12345.67, grouping=True, out=' 12345.67')
-
-
-class TestFrFRNumberFormatting(FrFRCookedTest, BaseFormattingTest):
-    # Test number formatting with a cooked "fr_FR" locale.
-
-    def test_decimal_point(self):
-        self._test_format("%.2f", 12345.67, out='12345,67')
-
-    def test_grouping(self):
-        self._test_format("%.2f", 345.67, grouping=True, out='345,67')
-        self._test_format("%.2f", 12345.67, grouping=True, out='12 345,67')
-
-    def test_grouping_and_padding(self):
-        self._test_format("%6.2f", 345.67, grouping=True, out='345,67')
-        self._test_format("%7.2f", 345.67, grouping=True, out=' 345,67')
-        self._test_format("%8.2f", 12345.67, grouping=True, out='12 345,67')
-        self._test_format("%9.2f", 12345.67, grouping=True, out='12 345,67')
-        self._test_format("%10.2f", 12345.67, grouping=True, out=' 12 345,67')
-        self._test_format("%-6.2f", 345.67, grouping=True, out='345,67')
-        self._test_format("%-7.2f", 345.67, grouping=True, out='345,67 ')
-        self._test_format("%-8.2f", 12345.67, grouping=True, out='12 345,67')
-        self._test_format("%-9.2f", 12345.67, grouping=True, out='12 345,67')
-        self._test_format("%-10.2f", 12345.67, grouping=True, out='12 345,67 ')
-
-    def test_integer_grouping(self):
-        self._test_format("%d", 200, grouping=True, out='200')
-        self._test_format("%d", 4200, grouping=True, out='4 200')
-
-    def test_integer_grouping_and_padding(self):
-        self._test_format("%4d", 4200, grouping=True, out='4 200')
-        self._test_format("%5d", 4200, grouping=True, out='4 200')
-        self._test_format("%10d", 4200, grouping=True, out='4 200'.rjust(10))
-        self._test_format("%-4d", 4200, grouping=True, out='4 200')
-        self._test_format("%-5d", 4200, grouping=True, out='4 200')
-        self._test_format("%-10d", 4200, grouping=True, out='4 200'.ljust(10))
-
-    def test_currency(self):
-        euro = u'\u20ac'.encode('utf-8')
-        self._test_currency(50000, "50000,00 " + euro)
-        self._test_currency(50000, "50 000,00 " + euro, grouping=True)
-        # XXX is the trailing space a bug?
-        self._test_currency(50000, "50 000,00 EUR ",
-            grouping=True, international=True)
-
-
-class TestStringMethods(BaseLocalizedTest):
-    locale_type = locale.LC_CTYPE
-
-    if sys.platform != 'sunos5' and not sys.platform.startswith("win"):
-        # Test BSD Rune locale's bug for isctype functions.
-
-        def test_isspace(self):
-            self.assertEqual('\x20'.isspace(), True)
-            self.assertEqual('\xa0'.isspace(), False)
-            self.assertEqual('\xa1'.isspace(), False)
-
-        def test_isalpha(self):
-            self.assertEqual('\xc0'.isalpha(), False)
-
-        def test_isalnum(self):
-            self.assertEqual('\xc0'.isalnum(), False)
-
-        def test_isupper(self):
-            self.assertEqual('\xc0'.isupper(), False)
-
-        def test_islower(self):
-            self.assertEqual('\xc0'.islower(), False)
-
-        def test_lower(self):
-            self.assertEqual('\xcc\x85'.lower(), '\xcc\x85')
-
-        def test_upper(self):
-            self.assertEqual('\xed\x95\xa0'.upper(), '\xed\x95\xa0')
-
-        def test_strip(self):
-            self.assertEqual('\xed\x95\xa0'.strip(), '\xed\x95\xa0')
-
-        def test_split(self):
-            self.assertEqual('\xec\xa0\xbc'.split(), ['\xec\xa0\xbc'])
-
-
-class TestMiscellaneous(unittest.TestCase):
-    def test_getpreferredencoding(self):
-        # Invoke getpreferredencoding to make sure it does not cause exceptions.
-        enc = locale.getpreferredencoding()
-        if enc:
-            # If encoding non-empty, make sure it is valid
-            codecs.lookup(enc)
-
-    if hasattr(locale, "strcoll"):
-        def test_strcoll_3303(self):
-            # test crasher from bug #3303
-            self.assertRaises(TypeError, locale.strcoll, u"a", None)
-
-    def test_setlocale_category(self):
-        locale.setlocale(locale.LC_ALL)
-        locale.setlocale(locale.LC_TIME)
-        locale.setlocale(locale.LC_CTYPE)
-        locale.setlocale(locale.LC_COLLATE)
-        locale.setlocale(locale.LC_MONETARY)
-        locale.setlocale(locale.LC_NUMERIC)
-
-        # crasher from bug #7419
-        self.assertRaises(locale.Error, locale.setlocale, 12345)
-
-
-def test_main():
-    tests = [
-        TestMiscellaneous,
-        TestFormatPatternArg,
-        TestLocaleFormatString,
-        TestEnUSNumberFormatting,
-        TestCNumberFormatting,
-        TestFrFRNumberFormatting,
-    ]
-    # SkipTest can't be raised inside unittests, handle it manually instead
-    try:
-        get_enUS_locale()
-    except unittest.SkipTest as e:
-        if verbose:
-            print "Some tests will be disabled: %s" % e
-    else:
-        tests += [TestNumberFormatting, TestStringMethods]
-    run_unittest(*tests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_logging.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_logging.py
deleted file mode 100644
index baf1d8c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_logging.py
+++ /dev/null
@@ -1,1886 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2001-2010 by Vinay Sajip. All Rights Reserved.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted,
-# provided that the above copyright notice appear in all copies and that
-# both that copyright notice and this permission notice appear in
-# supporting documentation, and that the name of Vinay Sajip
-# not be used in advertising or publicity pertaining to distribution
-# of the software without specific, written prior permission.
-# VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
-# VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
-# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-"""Test harness for the logging module. Run all tests.
-
-Copyright (C) 2001-2010 Vinay Sajip. All Rights Reserved.
-"""
-
-import logging
-import logging.handlers
-import logging.config
-
-import codecs
-import cPickle
-import cStringIO
-import gc
-import json
-import os
-import re
-import select
-import socket
-from SocketServer import ThreadingTCPServer, StreamRequestHandler
-import struct
-import sys
-import tempfile
-from test.test_support import captured_stdout, run_with_locale, run_unittest
-import textwrap
-import unittest
-import warnings
-import weakref
-try:
-    import threading
-except ImportError:
-    threading = None
-
-class BaseTest(unittest.TestCase):
-
-    """Base class for logging tests."""
-
-    log_format = "%(name)s -> %(levelname)s: %(message)s"
-    expected_log_pat = r"^([\w.]+) -> ([\w]+): ([\d]+)$"
-    message_num = 0
-
-    def setUp(self):
-        """Setup the default logging stream to an internal StringIO instance,
-        so that we can examine log output as we want."""
-        logger_dict = logging.getLogger().manager.loggerDict
-        logging._acquireLock()
-        try:
-            self.saved_handlers = logging._handlers.copy()
-            self.saved_handler_list = logging._handlerList[:]
-            self.saved_loggers = logger_dict.copy()
-            self.saved_level_names = logging._levelNames.copy()
-        finally:
-            logging._releaseLock()
-
-        # Set two unused loggers: one non-ASCII and one Unicode.
-        # This is to test correct operation when sorting existing
-        # loggers in the configuration code. See issue 8201.
-        logging.getLogger("\xab\xd7\xbb")
-        logging.getLogger(u"\u013f\u00d6\u0047")
-
-        self.root_logger = logging.getLogger("")
-        self.original_logging_level = self.root_logger.getEffectiveLevel()
-
-        self.stream = cStringIO.StringIO()
-        self.root_logger.setLevel(logging.DEBUG)
-        self.root_hdlr = logging.StreamHandler(self.stream)
-        self.root_formatter = logging.Formatter(self.log_format)
-        self.root_hdlr.setFormatter(self.root_formatter)
-        self.root_logger.addHandler(self.root_hdlr)
-
-    def tearDown(self):
-        """Remove our logging stream, and restore the original logging
-        level."""
-        self.stream.close()
-        self.root_logger.removeHandler(self.root_hdlr)
-        while self.root_logger.handlers:
-            h = self.root_logger.handlers[0]
-            self.root_logger.removeHandler(h)
-            h.close()
-        self.root_logger.setLevel(self.original_logging_level)
-        logging._acquireLock()
-        try:
-            logging._levelNames.clear()
-            logging._levelNames.update(self.saved_level_names)
-            logging._handlers.clear()
-            logging._handlers.update(self.saved_handlers)
-            logging._handlerList[:] = self.saved_handler_list
-            loggerDict = logging.getLogger().manager.loggerDict
-            loggerDict.clear()
-            loggerDict.update(self.saved_loggers)
-        finally:
-            logging._releaseLock()
-
-    def assert_log_lines(self, expected_values, stream=None):
-        """Match the collected log lines against the regular expression
-        self.expected_log_pat, and compare the extracted group values to
-        the expected_values list of tuples."""
-        stream = stream or self.stream
-        pat = re.compile(self.expected_log_pat)
-        try:
-            stream.reset()
-            actual_lines = stream.readlines()
-        except AttributeError:
-            # StringIO.StringIO lacks a reset() method.
-            actual_lines = stream.getvalue().splitlines()
-        self.assertEqual(len(actual_lines), len(expected_values))
-        for actual, expected in zip(actual_lines, expected_values):
-            match = pat.search(actual)
-            if not match:
-                self.fail("Log line does not match expected pattern:\n" +
-                            actual)
-            self.assertEqual(tuple(match.groups()), expected)
-        s = stream.read()
-        if s:
-            self.fail("Remaining output at end of log stream:\n" + s)
-
-    def next_message(self):
-        """Generate a message consisting solely of an auto-incrementing
-        integer."""
-        self.message_num += 1
-        return "%d" % self.message_num
-
-
-class BuiltinLevelsTest(BaseTest):
-    """Test builtin levels and their inheritance."""
-
-    def test_flat(self):
-        #Logging levels in a flat logger namespace.
-        m = self.next_message
-
-        ERR = logging.getLogger("ERR")
-        ERR.setLevel(logging.ERROR)
-        INF = logging.getLogger("INF")
-        INF.setLevel(logging.INFO)
-        DEB = logging.getLogger("DEB")
-        DEB.setLevel(logging.DEBUG)
-
-        # These should log.
-        ERR.log(logging.CRITICAL, m())
-        ERR.error(m())
-
-        INF.log(logging.CRITICAL, m())
-        INF.error(m())
-        INF.warn(m())
-        INF.info(m())
-
-        DEB.log(logging.CRITICAL, m())
-        DEB.error(m())
-        DEB.warn (m())
-        DEB.info (m())
-        DEB.debug(m())
-
-        # These should not log.
-        ERR.warn(m())
-        ERR.info(m())
-        ERR.debug(m())
-
-        INF.debug(m())
-
-        self.assert_log_lines([
-            ('ERR', 'CRITICAL', '1'),
-            ('ERR', 'ERROR', '2'),
-            ('INF', 'CRITICAL', '3'),
-            ('INF', 'ERROR', '4'),
-            ('INF', 'WARNING', '5'),
-            ('INF', 'INFO', '6'),
-            ('DEB', 'CRITICAL', '7'),
-            ('DEB', 'ERROR', '8'),
-            ('DEB', 'WARNING', '9'),
-            ('DEB', 'INFO', '10'),
-            ('DEB', 'DEBUG', '11'),
-        ])
-
-    def test_nested_explicit(self):
-        # Logging levels in a nested namespace, all explicitly set.
-        m = self.next_message
-
-        INF = logging.getLogger("INF")
-        INF.setLevel(logging.INFO)
-        INF_ERR  = logging.getLogger("INF.ERR")
-        INF_ERR.setLevel(logging.ERROR)
-
-        # These should log.
-        INF_ERR.log(logging.CRITICAL, m())
-        INF_ERR.error(m())
-
-        # These should not log.
-        INF_ERR.warn(m())
-        INF_ERR.info(m())
-        INF_ERR.debug(m())
-
-        self.assert_log_lines([
-            ('INF.ERR', 'CRITICAL', '1'),
-            ('INF.ERR', 'ERROR', '2'),
-        ])
-
-    def test_nested_inherited(self):
-        #Logging levels in a nested namespace, inherited from parent loggers.
-        m = self.next_message
-
-        INF = logging.getLogger("INF")
-        INF.setLevel(logging.INFO)
-        INF_ERR  = logging.getLogger("INF.ERR")
-        INF_ERR.setLevel(logging.ERROR)
-        INF_UNDEF = logging.getLogger("INF.UNDEF")
-        INF_ERR_UNDEF = logging.getLogger("INF.ERR.UNDEF")
-        UNDEF = logging.getLogger("UNDEF")
-
-        # These should log.
-        INF_UNDEF.log(logging.CRITICAL, m())
-        INF_UNDEF.error(m())
-        INF_UNDEF.warn(m())
-        INF_UNDEF.info(m())
-        INF_ERR_UNDEF.log(logging.CRITICAL, m())
-        INF_ERR_UNDEF.error(m())
-
-        # These should not log.
-        INF_UNDEF.debug(m())
-        INF_ERR_UNDEF.warn(m())
-        INF_ERR_UNDEF.info(m())
-        INF_ERR_UNDEF.debug(m())
-
-        self.assert_log_lines([
-            ('INF.UNDEF', 'CRITICAL', '1'),
-            ('INF.UNDEF', 'ERROR', '2'),
-            ('INF.UNDEF', 'WARNING', '3'),
-            ('INF.UNDEF', 'INFO', '4'),
-            ('INF.ERR.UNDEF', 'CRITICAL', '5'),
-            ('INF.ERR.UNDEF', 'ERROR', '6'),
-        ])
-
-    def test_nested_with_virtual_parent(self):
-        # Logging levels when some parent does not exist yet.
-        m = self.next_message
-
-        INF = logging.getLogger("INF")
-        GRANDCHILD = logging.getLogger("INF.BADPARENT.UNDEF")
-        CHILD = logging.getLogger("INF.BADPARENT")
-        INF.setLevel(logging.INFO)
-
-        # These should log.
-        GRANDCHILD.log(logging.FATAL, m())
-        GRANDCHILD.info(m())
-        CHILD.log(logging.FATAL, m())
-        CHILD.info(m())
-
-        # These should not log.
-        GRANDCHILD.debug(m())
-        CHILD.debug(m())
-
-        self.assert_log_lines([
-            ('INF.BADPARENT.UNDEF', 'CRITICAL', '1'),
-            ('INF.BADPARENT.UNDEF', 'INFO', '2'),
-            ('INF.BADPARENT', 'CRITICAL', '3'),
-            ('INF.BADPARENT', 'INFO', '4'),
-        ])
-
-
-class BasicFilterTest(BaseTest):
-
-    """Test the bundled Filter class."""
-
-    def test_filter(self):
-        # Only messages satisfying the specified criteria pass through the
-        #  filter.
-        filter_ = logging.Filter("spam.eggs")
-        handler = self.root_logger.handlers[0]
-        try:
-            handler.addFilter(filter_)
-            spam = logging.getLogger("spam")
-            spam_eggs = logging.getLogger("spam.eggs")
-            spam_eggs_fish = logging.getLogger("spam.eggs.fish")
-            spam_bakedbeans = logging.getLogger("spam.bakedbeans")
-
-            spam.info(self.next_message())
-            spam_eggs.info(self.next_message())  # Good.
-            spam_eggs_fish.info(self.next_message())  # Good.
-            spam_bakedbeans.info(self.next_message())
-
-            self.assert_log_lines([
-                ('spam.eggs', 'INFO', '2'),
-                ('spam.eggs.fish', 'INFO', '3'),
-            ])
-        finally:
-            handler.removeFilter(filter_)
-
-
-#
-#   First, we define our levels. There can be as many as you want - the only
-#     limitations are that they should be integers, the lowest should be > 0 and
-#   larger values mean less information being logged. If you need specific
-#   level values which do not fit into these limitations, you can use a
-#   mapping dictionary to convert between your application levels and the
-#   logging system.
-#
-SILENT      = 120
-TACITURN    = 119
-TERSE       = 118
-EFFUSIVE    = 117
-SOCIABLE    = 116
-VERBOSE     = 115
-TALKATIVE   = 114
-GARRULOUS   = 113
-CHATTERBOX  = 112
-BORING      = 111
-
-LEVEL_RANGE = range(BORING, SILENT + 1)
-
-#
-#   Next, we define names for our levels. You don't need to do this - in which
-#   case the system will use "Level n" to denote the text for the level.
-#
-my_logging_levels = {
-    SILENT      : 'Silent',
-    TACITURN    : 'Taciturn',
-    TERSE       : 'Terse',
-    EFFUSIVE    : 'Effusive',
-    SOCIABLE    : 'Sociable',
-    VERBOSE     : 'Verbose',
-    TALKATIVE   : 'Talkative',
-    GARRULOUS   : 'Garrulous',
-    CHATTERBOX  : 'Chatterbox',
-    BORING      : 'Boring',
-}
-
-class GarrulousFilter(logging.Filter):
-
-    """A filter which blocks garrulous messages."""
-
-    def filter(self, record):
-        return record.levelno != GARRULOUS
-
-class VerySpecificFilter(logging.Filter):
-
-    """A filter which blocks sociable and taciturn messages."""
-
-    def filter(self, record):
-        return record.levelno not in [SOCIABLE, TACITURN]
-
-
-class CustomLevelsAndFiltersTest(BaseTest):
-
-    """Test various filtering possibilities with custom logging levels."""
-
-    # Skip the logger name group.
-    expected_log_pat = r"^[\w.]+ -> ([\w]+): ([\d]+)$"
-
-    def setUp(self):
-        BaseTest.setUp(self)
-        for k, v in my_logging_levels.items():
-            logging.addLevelName(k, v)
-
-    def log_at_all_levels(self, logger):
-        for lvl in LEVEL_RANGE:
-            logger.log(lvl, self.next_message())
-
-    def test_logger_filter(self):
-        # Filter at logger level.
-        self.root_logger.setLevel(VERBOSE)
-        # Levels >= 'Verbose' are good.
-        self.log_at_all_levels(self.root_logger)
-        self.assert_log_lines([
-            ('Verbose', '5'),
-            ('Sociable', '6'),
-            ('Effusive', '7'),
-            ('Terse', '8'),
-            ('Taciturn', '9'),
-            ('Silent', '10'),
-        ])
-
-    def test_handler_filter(self):
-        # Filter at handler level.
-        self.root_logger.handlers[0].setLevel(SOCIABLE)
-        try:
-            # Levels >= 'Sociable' are good.
-            self.log_at_all_levels(self.root_logger)
-            self.assert_log_lines([
-                ('Sociable', '6'),
-                ('Effusive', '7'),
-                ('Terse', '8'),
-                ('Taciturn', '9'),
-                ('Silent', '10'),
-            ])
-        finally:
-            self.root_logger.handlers[0].setLevel(logging.NOTSET)
-
-    def test_specific_filters(self):
-        # Set a specific filter object on the handler, and then add another
-        #  filter object on the logger itself.
-        handler = self.root_logger.handlers[0]
-        specific_filter = None
-        garr = GarrulousFilter()
-        handler.addFilter(garr)
-        try:
-            self.log_at_all_levels(self.root_logger)
-            first_lines = [
-                # Notice how 'Garrulous' is missing
-                ('Boring', '1'),
-                ('Chatterbox', '2'),
-                ('Talkative', '4'),
-                ('Verbose', '5'),
-                ('Sociable', '6'),
-                ('Effusive', '7'),
-                ('Terse', '8'),
-                ('Taciturn', '9'),
-                ('Silent', '10'),
-            ]
-            self.assert_log_lines(first_lines)
-
-            specific_filter = VerySpecificFilter()
-            self.root_logger.addFilter(specific_filter)
-            self.log_at_all_levels(self.root_logger)
-            self.assert_log_lines(first_lines + [
-                # Not only 'Garrulous' is still missing, but also 'Sociable'
-                # and 'Taciturn'
-                ('Boring', '11'),
-                ('Chatterbox', '12'),
-                ('Talkative', '14'),
-                ('Verbose', '15'),
-                ('Effusive', '17'),
-                ('Terse', '18'),
-                ('Silent', '20'),
-        ])
-        finally:
-            if specific_filter:
-                self.root_logger.removeFilter(specific_filter)
-            handler.removeFilter(garr)
-
-
-class MemoryHandlerTest(BaseTest):
-
-    """Tests for the MemoryHandler."""
-
-    # Do not bother with a logger name group.
-    expected_log_pat = r"^[\w.]+ -> ([\w]+): ([\d]+)$"
-
-    def setUp(self):
-        BaseTest.setUp(self)
-        self.mem_hdlr = logging.handlers.MemoryHandler(10, logging.WARNING,
-                                                        self.root_hdlr)
-        self.mem_logger = logging.getLogger('mem')
-        self.mem_logger.propagate = 0
-        self.mem_logger.addHandler(self.mem_hdlr)
-
-    def tearDown(self):
-        self.mem_hdlr.close()
-        BaseTest.tearDown(self)
-
-    def test_flush(self):
-        # The memory handler flushes to its target handler based on specific
-        #  criteria (message count and message level).
-        self.mem_logger.debug(self.next_message())
-        self.assert_log_lines([])
-        self.mem_logger.info(self.next_message())
-        self.assert_log_lines([])
-        # This will flush because the level is >= logging.WARNING
-        self.mem_logger.warn(self.next_message())
-        lines = [
-            ('DEBUG', '1'),
-            ('INFO', '2'),
-            ('WARNING', '3'),
-        ]
-        self.assert_log_lines(lines)
-        for n in (4, 14):
-            for i in range(9):
-                self.mem_logger.debug(self.next_message())
-            self.assert_log_lines(lines)
-            # This will flush because it's the 10th message since the last
-            #  flush.
-            self.mem_logger.debug(self.next_message())
-            lines = lines + [('DEBUG', str(i)) for i in range(n, n + 10)]
-            self.assert_log_lines(lines)
-
-        self.mem_logger.debug(self.next_message())
-        self.assert_log_lines(lines)
-
-
-class ExceptionFormatter(logging.Formatter):
-    """A special exception formatter."""
-    def formatException(self, ei):
-        return "Got a [%s]" % ei[0].__name__
-
-
-class ConfigFileTest(BaseTest):
-
-    """Reading logging config from a .ini-style config file."""
-
-    expected_log_pat = r"^([\w]+) \+\+ ([\w]+)$"
-
-    # config0 is a standard configuration.
-    config0 = """
-    [loggers]
-    keys=root
-
-    [handlers]
-    keys=hand1
-
-    [formatters]
-    keys=form1
-
-    [logger_root]
-    level=WARNING
-    handlers=hand1
-
-    [handler_hand1]
-    class=StreamHandler
-    level=NOTSET
-    formatter=form1
-    args=(sys.stdout,)
-
-    [formatter_form1]
-    format=%(levelname)s ++ %(message)s
-    datefmt=
-    """
-
-    # config1 adds a little to the standard configuration.
-    config1 = """
-    [loggers]
-    keys=root,parser
-
-    [handlers]
-    keys=hand1
-
-    [formatters]
-    keys=form1
-
-    [logger_root]
-    level=WARNING
-    handlers=
-
-    [logger_parser]
-    level=DEBUG
-    handlers=hand1
-    propagate=1
-    qualname=compiler.parser
-
-    [handler_hand1]
-    class=StreamHandler
-    level=NOTSET
-    formatter=form1
-    args=(sys.stdout,)
-
-    [formatter_form1]
-    format=%(levelname)s ++ %(message)s
-    datefmt=
-    """
-
-    # config1a moves the handler to the root.
-    config1a = """
-    [loggers]
-    keys=root,parser
-
-    [handlers]
-    keys=hand1
-
-    [formatters]
-    keys=form1
-
-    [logger_root]
-    level=WARNING
-    handlers=hand1
-
-    [logger_parser]
-    level=DEBUG
-    handlers=
-    propagate=1
-    qualname=compiler.parser
-
-    [handler_hand1]
-    class=StreamHandler
-    level=NOTSET
-    formatter=form1
-    args=(sys.stdout,)
-
-    [formatter_form1]
-    format=%(levelname)s ++ %(message)s
-    datefmt=
-    """
-
-    # config2 has a subtle configuration error that should be reported
-    config2 = config1.replace("sys.stdout", "sys.stbout")
-
-    # config3 has a less subtle configuration error
-    config3 = config1.replace("formatter=form1", "formatter=misspelled_name")
-
-    # config4 specifies a custom formatter class to be loaded
-    config4 = """
-    [loggers]
-    keys=root
-
-    [handlers]
-    keys=hand1
-
-    [formatters]
-    keys=form1
-
-    [logger_root]
-    level=NOTSET
-    handlers=hand1
-
-    [handler_hand1]
-    class=StreamHandler
-    level=NOTSET
-    formatter=form1
-    args=(sys.stdout,)
-
-    [formatter_form1]
-    class=""" + __name__ + """.ExceptionFormatter
-    format=%(levelname)s:%(name)s:%(message)s
-    datefmt=
-    """
-
-    # config5 specifies a custom handler class to be loaded
-    config5 = config1.replace('class=StreamHandler', 'class=logging.StreamHandler')
-
-    # config6 uses ', ' delimiters in the handlers and formatters sections
-    config6 = """
-    [loggers]
-    keys=root,parser
-
-    [handlers]
-    keys=hand1, hand2
-
-    [formatters]
-    keys=form1, form2
-
-    [logger_root]
-    level=WARNING
-    handlers=
-
-    [logger_parser]
-    level=DEBUG
-    handlers=hand1
-    propagate=1
-    qualname=compiler.parser
-
-    [handler_hand1]
-    class=StreamHandler
-    level=NOTSET
-    formatter=form1
-    args=(sys.stdout,)
-
-    [handler_hand2]
-    class=StreamHandler
-    level=NOTSET
-    formatter=form1
-    args=(sys.stderr,)
-
-    [formatter_form1]
-    format=%(levelname)s ++ %(message)s
-    datefmt=
-
-    [formatter_form2]
-    format=%(message)s
-    datefmt=
-    """
-
-    # config7 adds a compiler logger.
-    config7 = """
-    [loggers]
-    keys=root,parser,compiler
-
-    [handlers]
-    keys=hand1
-
-    [formatters]
-    keys=form1
-
-    [logger_root]
-    level=WARNING
-    handlers=hand1
-
-    [logger_compiler]
-    level=DEBUG
-    handlers=
-    propagate=1
-    qualname=compiler
-
-    [logger_parser]
-    level=DEBUG
-    handlers=
-    propagate=1
-    qualname=compiler.parser
-
-    [handler_hand1]
-    class=StreamHandler
-    level=NOTSET
-    formatter=form1
-    args=(sys.stdout,)
-
-    [formatter_form1]
-    format=%(levelname)s ++ %(message)s
-    datefmt=
-    """
-
-    def apply_config(self, conf):
-        file = cStringIO.StringIO(textwrap.dedent(conf))
-        logging.config.fileConfig(file)
-
-    def test_config0_ok(self):
-        # A simple config file which overrides the default settings.
-        with captured_stdout() as output:
-            self.apply_config(self.config0)
-            logger = logging.getLogger()
-            # Won't output anything
-            logger.info(self.next_message())
-            # Outputs a message
-            logger.error(self.next_message())
-            self.assert_log_lines([
-                ('ERROR', '2'),
-            ], stream=output)
-            # Original logger output is empty.
-            self.assert_log_lines([])
-
-    def test_config1_ok(self, config=config1):
-        # A config file defining a sub-parser as well.
-        with captured_stdout() as output:
-            self.apply_config(config)
-            logger = logging.getLogger("compiler.parser")
-            # Both will output a message
-            logger.info(self.next_message())
-            logger.error(self.next_message())
-            self.assert_log_lines([
-                ('INFO', '1'),
-                ('ERROR', '2'),
-            ], stream=output)
-            # Original logger output is empty.
-            self.assert_log_lines([])
-
-    def test_config2_failure(self):
-        # A simple config file which overrides the default settings.
-        self.assertRaises(StandardError, self.apply_config, self.config2)
-
-    def test_config3_failure(self):
-        # A simple config file which overrides the default settings.
-        self.assertRaises(StandardError, self.apply_config, self.config3)
-
-    def test_config4_ok(self):
-        # A config file specifying a custom formatter class.
-        with captured_stdout() as output:
-            self.apply_config(self.config4)
-            logger = logging.getLogger()
-            try:
-                raise RuntimeError()
-            except RuntimeError:
-                logging.exception("just testing")
-            sys.stdout.seek(0)
-            self.assertEqual(output.getvalue(),
-                "ERROR:root:just testing\nGot a [RuntimeError]\n")
-            # Original logger output is empty
-            self.assert_log_lines([])
-
-    def test_config5_ok(self):
-        self.test_config1_ok(config=self.config5)
-
-    def test_config6_ok(self):
-        self.test_config1_ok(config=self.config6)
-
-    def test_config7_ok(self):
-        with captured_stdout() as output:
-            self.apply_config(self.config1a)
-            logger = logging.getLogger("compiler.parser")
-            # See issue #11424. compiler-hyphenated sorts
-            # between compiler and compiler.xyz and this
-            # was preventing compiler.xyz from being included
-            # in the child loggers of compiler because of an
-            # overzealous loop termination condition.
-            hyphenated = logging.getLogger('compiler-hyphenated')
-            # All will output a message
-            logger.info(self.next_message())
-            logger.error(self.next_message())
-            hyphenated.critical(self.next_message())
-            self.assert_log_lines([
-                ('INFO', '1'),
-                ('ERROR', '2'),
-                ('CRITICAL', '3'),
-            ], stream=output)
-            # Original logger output is empty.
-            self.assert_log_lines([])
-        with captured_stdout() as output:
-            self.apply_config(self.config7)
-            logger = logging.getLogger("compiler.parser")
-            self.assertFalse(logger.disabled)
-            # Both will output a message
-            logger.info(self.next_message())
-            logger.error(self.next_message())
-            logger = logging.getLogger("compiler.lexer")
-            # Both will output a message
-            logger.info(self.next_message())
-            logger.error(self.next_message())
-            # Will not appear
-            hyphenated.critical(self.next_message())
-            self.assert_log_lines([
-                ('INFO', '4'),
-                ('ERROR', '5'),
-                ('INFO', '6'),
-                ('ERROR', '7'),
-            ], stream=output)
-            # Original logger output is empty.
-            self.assert_log_lines([])
-
-class LogRecordStreamHandler(StreamRequestHandler):
-
-    """Handler for a streaming logging request. It saves the log message in the
-    TCP server's 'log_output' attribute."""
-
-    TCP_LOG_END = "!!!END!!!"
-
-    def handle(self):
-        """Handle multiple requests - each expected to be of 4-byte length,
-        followed by the LogRecord in pickle format. Logs the record
-        according to whatever policy is configured locally."""
-        while True:
-            chunk = self.connection.recv(4)
-            if len(chunk) < 4:
-                break
-            slen = struct.unpack(">L", chunk)[0]
-            chunk = self.connection.recv(slen)
-            while len(chunk) < slen:
-                chunk = chunk + self.connection.recv(slen - len(chunk))
-            obj = self.unpickle(chunk)
-            record = logging.makeLogRecord(obj)
-            self.handle_log_record(record)
-
-    def unpickle(self, data):
-        return cPickle.loads(data)
-
-    def handle_log_record(self, record):
-        # If the end-of-messages sentinel is seen, tell the server to
-        #  terminate.
-        if self.TCP_LOG_END in record.msg:
-            self.server.abort = 1
-            return
-        self.server.log_output += record.msg + "\n"
-
-
-class LogRecordSocketReceiver(ThreadingTCPServer):
-
-    """A simple-minded TCP socket-based logging receiver suitable for test
-    purposes."""
-
-    allow_reuse_address = 1
-    log_output = ""
-
-    def __init__(self, host='localhost',
-                             port=logging.handlers.DEFAULT_TCP_LOGGING_PORT,
-                     handler=LogRecordStreamHandler):
-        ThreadingTCPServer.__init__(self, (host, port), handler)
-        self.abort = False
-        self.timeout = 0.1
-        self.finished = threading.Event()
-
-    def serve_until_stopped(self):
-        while not self.abort:
-            rd, wr, ex = select.select([self.socket.fileno()], [], [],
-                                       self.timeout)
-            if rd:
-                self.handle_request()
-        # Notify the main thread that we're about to exit
-        self.finished.set()
-        # close the listen socket
-        self.server_close()
-
-
-@unittest.skipUnless(threading, 'Threading required for this test.')
-class SocketHandlerTest(BaseTest):
-
-    """Test for SocketHandler objects."""
-
-    def setUp(self):
-        """Set up a TCP server to receive log messages, and a SocketHandler
-        pointing to that server's address and port."""
-        BaseTest.setUp(self)
-        self.tcpserver = LogRecordSocketReceiver(port=0)
-        self.port = self.tcpserver.socket.getsockname()[1]
-        self.threads = [
-                threading.Thread(target=self.tcpserver.serve_until_stopped)]
-        for thread in self.threads:
-            thread.start()
-
-        self.sock_hdlr = logging.handlers.SocketHandler('localhost', self.port)
-        self.sock_hdlr.setFormatter(self.root_formatter)
-        self.root_logger.removeHandler(self.root_logger.handlers[0])
-        self.root_logger.addHandler(self.sock_hdlr)
-
-    def tearDown(self):
-        """Shutdown the TCP server."""
-        try:
-            self.tcpserver.abort = True
-            del self.tcpserver
-            self.root_logger.removeHandler(self.sock_hdlr)
-            self.sock_hdlr.close()
-            for thread in self.threads:
-                thread.join(2.0)
-        finally:
-            BaseTest.tearDown(self)
-
-    def get_output(self):
-        """Get the log output as received by the TCP server."""
-        # Signal the TCP receiver and wait for it to terminate.
-        self.root_logger.critical(LogRecordStreamHandler.TCP_LOG_END)
-        self.tcpserver.finished.wait(2.0)
-        return self.tcpserver.log_output
-
-    def test_output(self):
-        # The log message sent to the SocketHandler is properly received.
-        logger = logging.getLogger("tcp")
-        logger.error("spam")
-        logger.debug("eggs")
-        self.assertEqual(self.get_output(), "spam\neggs\n")
-
-
-class MemoryTest(BaseTest):
-
-    """Test memory persistence of logger objects."""
-
-    def setUp(self):
-        """Create a dict to remember potentially destroyed objects."""
-        BaseTest.setUp(self)
-        self._survivors = {}
-
-    def _watch_for_survival(self, *args):
-        """Watch the given objects for survival, by creating weakrefs to
-        them."""
-        for obj in args:
-            key = id(obj), repr(obj)
-            self._survivors[key] = weakref.ref(obj)
-
-    def _assertTruesurvival(self):
-        """Assert that all objects watched for survival have survived."""
-        # Trigger cycle breaking.
-        gc.collect()
-        dead = []
-        for (id_, repr_), ref in self._survivors.items():
-            if ref() is None:
-                dead.append(repr_)
-        if dead:
-            self.fail("%d objects should have survived "
-                "but have been destroyed: %s" % (len(dead), ", ".join(dead)))
-
-    def test_persistent_loggers(self):
-        # Logger objects are persistent and retain their configuration, even
-        #  if visible references are destroyed.
-        self.root_logger.setLevel(logging.INFO)
-        foo = logging.getLogger("foo")
-        self._watch_for_survival(foo)
-        foo.setLevel(logging.DEBUG)
-        self.root_logger.debug(self.next_message())
-        foo.debug(self.next_message())
-        self.assert_log_lines([
-            ('foo', 'DEBUG', '2'),
-        ])
-        del foo
-        # foo has survived.
-        self._assertTruesurvival()
-        # foo has retained its settings.
-        bar = logging.getLogger("foo")
-        bar.debug(self.next_message())
-        self.assert_log_lines([
-            ('foo', 'DEBUG', '2'),
-            ('foo', 'DEBUG', '3'),
-        ])
-
-
-class EncodingTest(BaseTest):
-    def test_encoding_plain_file(self):
-        # In Python 2.x, a plain file object is treated as having no encoding.
-        log = logging.getLogger("test")
-        fn = tempfile.mktemp(".log")
-        # the non-ascii data we write to the log.
-        data = "foo\x80"
-        try:
-            handler = logging.FileHandler(fn)
-            log.addHandler(handler)
-            try:
-                # write non-ascii data to the log.
-                log.warning(data)
-            finally:
-                log.removeHandler(handler)
-                handler.close()
-            # check we wrote exactly those bytes, ignoring trailing \n etc
-            f = open(fn)
-            try:
-                self.assertEqual(f.read().rstrip(), data)
-            finally:
-                f.close()
-        finally:
-            if os.path.isfile(fn):
-                os.remove(fn)
-
-    def test_encoding_cyrillic_unicode(self):
-        log = logging.getLogger("test")
-        #Get a message in Unicode: Do svidanya in Cyrillic (meaning goodbye)
-        message = u'\u0434\u043e \u0441\u0432\u0438\u0434\u0430\u043d\u0438\u044f'
-        #Ensure it's written in a Cyrillic encoding
-        writer_class = codecs.getwriter('cp1251')
-        writer_class.encoding = 'cp1251'
-        stream = cStringIO.StringIO()
-        writer = writer_class(stream, 'strict')
-        handler = logging.StreamHandler(writer)
-        log.addHandler(handler)
-        try:
-            log.warning(message)
-        finally:
-            log.removeHandler(handler)
-            handler.close()
-        # check we wrote exactly those bytes, ignoring trailing \n etc
-        s = stream.getvalue()
-        #Compare against what the data should be when encoded in CP-1251
-        self.assertEqual(s, '\xe4\xee \xf1\xe2\xe8\xe4\xe0\xed\xe8\xff\n')
-
-
-class WarningsTest(BaseTest):
-
-    def test_warnings(self):
-        with warnings.catch_warnings():
-            logging.captureWarnings(True)
-            try:
-                warnings.filterwarnings("always", category=UserWarning)
-                file = cStringIO.StringIO()
-                h = logging.StreamHandler(file)
-                logger = logging.getLogger("py.warnings")
-                logger.addHandler(h)
-                warnings.warn("I'm warning you...")
-                logger.removeHandler(h)
-                s = file.getvalue()
-                h.close()
-                self.assertTrue(s.find("UserWarning: I'm warning you...\n") > 0)
-
-                #See if an explicit file uses the original implementation
-                file = cStringIO.StringIO()
-                warnings.showwarning("Explicit", UserWarning, "dummy.py", 42,
-                                        file, "Dummy line")
-                s = file.getvalue()
-                file.close()
-                self.assertEqual(s,
-                        "dummy.py:42: UserWarning: Explicit\n  Dummy line\n")
-            finally:
-                logging.captureWarnings(False)
-
-
-def formatFunc(format, datefmt=None):
-    return logging.Formatter(format, datefmt)
-
-def handlerFunc():
-    return logging.StreamHandler()
-
-class CustomHandler(logging.StreamHandler):
-    pass
-
-class ConfigDictTest(BaseTest):
-
-    """Reading logging config from a dictionary."""
-
-    expected_log_pat = r"^([\w]+) \+\+ ([\w]+)$"
-
-    # config0 is a standard configuration.
-    config0 = {
-        'version': 1,
-        'formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'handlers' : {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'form1',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdout',
-            },
-        },
-        'root' : {
-            'level' : 'WARNING',
-            'handlers' : ['hand1'],
-        },
-    }
-
-    # config1 adds a little to the standard configuration.
-    config1 = {
-        'version': 1,
-        'formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'handlers' : {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'form1',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdout',
-            },
-        },
-        'loggers' : {
-            'compiler.parser' : {
-                'level' : 'DEBUG',
-                'handlers' : ['hand1'],
-            },
-        },
-        'root' : {
-            'level' : 'WARNING',
-        },
-    }
-
-    # config2 has a subtle configuration error that should be reported
-    config2 = {
-        'version': 1,
-        'formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'handlers' : {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'form1',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdbout',
-            },
-        },
-        'loggers' : {
-            'compiler.parser' : {
-                'level' : 'DEBUG',
-                'handlers' : ['hand1'],
-            },
-        },
-        'root' : {
-            'level' : 'WARNING',
-        },
-    }
-
-    #As config1 but with a misspelt level on a handler
-    config2a = {
-        'version': 1,
-        'formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'handlers' : {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'form1',
-                'level' : 'NTOSET',
-                'stream'  : 'ext://sys.stdout',
-            },
-        },
-        'loggers' : {
-            'compiler.parser' : {
-                'level' : 'DEBUG',
-                'handlers' : ['hand1'],
-            },
-        },
-        'root' : {
-            'level' : 'WARNING',
-        },
-    }
-
-
-    #As config1 but with a misspelt level on a logger
-    config2b = {
-        'version': 1,
-        'formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'handlers' : {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'form1',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdout',
-            },
-        },
-        'loggers' : {
-            'compiler.parser' : {
-                'level' : 'DEBUG',
-                'handlers' : ['hand1'],
-            },
-        },
-        'root' : {
-            'level' : 'WRANING',
-        },
-    }
-
-    # config3 has a less subtle configuration error
-    config3 = {
-        'version': 1,
-        'formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'handlers' : {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'misspelled_name',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdout',
-            },
-        },
-        'loggers' : {
-            'compiler.parser' : {
-                'level' : 'DEBUG',
-                'handlers' : ['hand1'],
-            },
-        },
-        'root' : {
-            'level' : 'WARNING',
-        },
-    }
-
-    # config4 specifies a custom formatter class to be loaded
-    config4 = {
-        'version': 1,
-        'formatters': {
-            'form1' : {
-                '()' : __name__ + '.ExceptionFormatter',
-                'format' : '%(levelname)s:%(name)s:%(message)s',
-            },
-        },
-        'handlers' : {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'form1',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdout',
-            },
-        },
-        'root' : {
-            'level' : 'NOTSET',
-                'handlers' : ['hand1'],
-        },
-    }
-
-    # As config4 but using an actual callable rather than a string
-    config4a = {
-        'version': 1,
-        'formatters': {
-            'form1' : {
-                '()' : ExceptionFormatter,
-                'format' : '%(levelname)s:%(name)s:%(message)s',
-            },
-            'form2' : {
-                '()' : __name__ + '.formatFunc',
-                'format' : '%(levelname)s:%(name)s:%(message)s',
-            },
-            'form3' : {
-                '()' : formatFunc,
-                'format' : '%(levelname)s:%(name)s:%(message)s',
-            },
-        },
-        'handlers' : {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'form1',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdout',
-            },
-            'hand2' : {
-                '()' : handlerFunc,
-            },
-        },
-        'root' : {
-            'level' : 'NOTSET',
-                'handlers' : ['hand1'],
-        },
-    }
-
-    # config5 specifies a custom handler class to be loaded
-    config5 = {
-        'version': 1,
-        'formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'handlers' : {
-            'hand1' : {
-                'class' : __name__ + '.CustomHandler',
-                'formatter' : 'form1',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdout',
-            },
-        },
-        'loggers' : {
-            'compiler.parser' : {
-                'level' : 'DEBUG',
-                'handlers' : ['hand1'],
-            },
-        },
-        'root' : {
-            'level' : 'WARNING',
-        },
-    }
-
-    # config6 specifies a custom handler class to be loaded
-    # but has bad arguments
-    config6 = {
-        'version': 1,
-        'formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'handlers' : {
-            'hand1' : {
-                'class' : __name__ + '.CustomHandler',
-                'formatter' : 'form1',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdout',
-                '9' : 'invalid parameter name',
-            },
-        },
-        'loggers' : {
-            'compiler.parser' : {
-                'level' : 'DEBUG',
-                'handlers' : ['hand1'],
-            },
-        },
-        'root' : {
-            'level' : 'WARNING',
-        },
-    }
-
-    #config 7 does not define compiler.parser but defines compiler.lexer
-    #so compiler.parser should be disabled after applying it
-    config7 = {
-        'version': 1,
-        'formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'handlers' : {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'form1',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdout',
-            },
-        },
-        'loggers' : {
-            'compiler.lexer' : {
-                'level' : 'DEBUG',
-                'handlers' : ['hand1'],
-            },
-        },
-        'root' : {
-            'level' : 'WARNING',
-        },
-    }
-
-    config8 = {
-        'version': 1,
-        'disable_existing_loggers' : False,
-        'formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'handlers' : {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'form1',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdout',
-            },
-        },
-        'loggers' : {
-            'compiler' : {
-                'level' : 'DEBUG',
-                'handlers' : ['hand1'],
-            },
-            'compiler.lexer' : {
-            },
-        },
-        'root' : {
-            'level' : 'WARNING',
-        },
-    }
-
-    config9 = {
-        'version': 1,
-        'formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'handlers' : {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'form1',
-                'level' : 'WARNING',
-                'stream'  : 'ext://sys.stdout',
-            },
-        },
-        'loggers' : {
-            'compiler.parser' : {
-                'level' : 'WARNING',
-                'handlers' : ['hand1'],
-            },
-        },
-        'root' : {
-            'level' : 'NOTSET',
-        },
-    }
-
-    config9a = {
-        'version': 1,
-        'incremental' : True,
-        'handlers' : {
-            'hand1' : {
-                'level' : 'WARNING',
-            },
-        },
-        'loggers' : {
-            'compiler.parser' : {
-                'level' : 'INFO',
-            },
-        },
-    }
-
-    config9b = {
-        'version': 1,
-        'incremental' : True,
-        'handlers' : {
-            'hand1' : {
-                'level' : 'INFO',
-            },
-        },
-        'loggers' : {
-            'compiler.parser' : {
-                'level' : 'INFO',
-            },
-        },
-    }
-
-    #As config1 but with a filter added
-    config10 = {
-        'version': 1,
-        'formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'filters' : {
-            'filt1' : {
-                'name' : 'compiler.parser',
-            },
-        },
-        'handlers' : {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'form1',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdout',
-                'filters' : ['filt1'],
-            },
-        },
-        'loggers' : {
-            'compiler.parser' : {
-                'level' : 'DEBUG',
-                'filters' : ['filt1'],
-            },
-        },
-        'root' : {
-            'level' : 'WARNING',
-            'handlers' : ['hand1'],
-        },
-    }
-
-    #As config1 but using cfg:// references
-    config11 = {
-        'version': 1,
-        'true_formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'handler_configs': {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'form1',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdout',
-            },
-        },
-        'formatters' : 'cfg://true_formatters',
-        'handlers' : {
-            'hand1' : 'cfg://handler_configs[hand1]',
-        },
-        'loggers' : {
-            'compiler.parser' : {
-                'level' : 'DEBUG',
-                'handlers' : ['hand1'],
-            },
-        },
-        'root' : {
-            'level' : 'WARNING',
-        },
-    }
-
-    #As config11 but missing the version key
-    config12 = {
-        'true_formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'handler_configs': {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'form1',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdout',
-            },
-        },
-        'formatters' : 'cfg://true_formatters',
-        'handlers' : {
-            'hand1' : 'cfg://handler_configs[hand1]',
-        },
-        'loggers' : {
-            'compiler.parser' : {
-                'level' : 'DEBUG',
-                'handlers' : ['hand1'],
-            },
-        },
-        'root' : {
-            'level' : 'WARNING',
-        },
-    }
-
-    #As config11 but using an unsupported version
-    config13 = {
-        'version': 2,
-        'true_formatters': {
-            'form1' : {
-                'format' : '%(levelname)s ++ %(message)s',
-            },
-        },
-        'handler_configs': {
-            'hand1' : {
-                'class' : 'logging.StreamHandler',
-                'formatter' : 'form1',
-                'level' : 'NOTSET',
-                'stream'  : 'ext://sys.stdout',
-            },
-        },
-        'formatters' : 'cfg://true_formatters',
-        'handlers' : {
-            'hand1' : 'cfg://handler_configs[hand1]',
-        },
-        'loggers' : {
-            'compiler.parser' : {
-                'level' : 'DEBUG',
-                'handlers' : ['hand1'],
-            },
-        },
-        'root' : {
-            'level' : 'WARNING',
-        },
-    }
-
-    def apply_config(self, conf):
-        logging.config.dictConfig(conf)
-
-    def test_config0_ok(self):
-        # A simple config which overrides the default settings.
-        with captured_stdout() as output:
-            self.apply_config(self.config0)
-            logger = logging.getLogger()
-            # Won't output anything
-            logger.info(self.next_message())
-            # Outputs a message
-            logger.error(self.next_message())
-            self.assert_log_lines([
-                ('ERROR', '2'),
-            ], stream=output)
-            # Original logger output is empty.
-            self.assert_log_lines([])
-
-    def test_config1_ok(self, config=config1):
-        # A config defining a sub-parser as well.
-        with captured_stdout() as output:
-            self.apply_config(config)
-            logger = logging.getLogger("compiler.parser")
-            # Both will output a message
-            logger.info(self.next_message())
-            logger.error(self.next_message())
-            self.assert_log_lines([
-                ('INFO', '1'),
-                ('ERROR', '2'),
-            ], stream=output)
-            # Original logger output is empty.
-            self.assert_log_lines([])
-
-    def test_config2_failure(self):
-        # A simple config which overrides the default settings.
-        self.assertRaises(StandardError, self.apply_config, self.config2)
-
-    def test_config2a_failure(self):
-        # A simple config which overrides the default settings.
-        self.assertRaises(StandardError, self.apply_config, self.config2a)
-
-    def test_config2b_failure(self):
-        # A simple config which overrides the default settings.
-        self.assertRaises(StandardError, self.apply_config, self.config2b)
-
-    def test_config3_failure(self):
-        # A simple config which overrides the default settings.
-        self.assertRaises(StandardError, self.apply_config, self.config3)
-
-    def test_config4_ok(self):
-        # A config specifying a custom formatter class.
-        with captured_stdout() as output:
-            self.apply_config(self.config4)
-            #logger = logging.getLogger()
-            try:
-                raise RuntimeError()
-            except RuntimeError:
-                logging.exception("just testing")
-            sys.stdout.seek(0)
-            self.assertEqual(output.getvalue(),
-                "ERROR:root:just testing\nGot a [RuntimeError]\n")
-            # Original logger output is empty
-            self.assert_log_lines([])
-
-    def test_config4a_ok(self):
-        # A config specifying a custom formatter class.
-        with captured_stdout() as output:
-            self.apply_config(self.config4a)
-            #logger = logging.getLogger()
-            try:
-                raise RuntimeError()
-            except RuntimeError:
-                logging.exception("just testing")
-            sys.stdout.seek(0)
-            self.assertEqual(output.getvalue(),
-                "ERROR:root:just testing\nGot a [RuntimeError]\n")
-            # Original logger output is empty
-            self.assert_log_lines([])
-
-    def test_config5_ok(self):
-        self.test_config1_ok(config=self.config5)
-
-    def test_config6_failure(self):
-        self.assertRaises(StandardError, self.apply_config, self.config6)
-
-    def test_config7_ok(self):
-        with captured_stdout() as output:
-            self.apply_config(self.config1)
-            logger = logging.getLogger("compiler.parser")
-            # Both will output a message
-            logger.info(self.next_message())
-            logger.error(self.next_message())
-            self.assert_log_lines([
-                ('INFO', '1'),
-                ('ERROR', '2'),
-            ], stream=output)
-            # Original logger output is empty.
-            self.assert_log_lines([])
-        with captured_stdout() as output:
-            self.apply_config(self.config7)
-            logger = logging.getLogger("compiler.parser")
-            self.assertTrue(logger.disabled)
-            logger = logging.getLogger("compiler.lexer")
-            # Both will output a message
-            logger.info(self.next_message())
-            logger.error(self.next_message())
-            self.assert_log_lines([
-                ('INFO', '3'),
-                ('ERROR', '4'),
-            ], stream=output)
-            # Original logger output is empty.
-            self.assert_log_lines([])
-
-    #Same as test_config_7_ok but don't disable old loggers.
-    def test_config_8_ok(self):
-        with captured_stdout() as output:
-            self.apply_config(self.config1)
-            logger = logging.getLogger("compiler.parser")
-            # Both will output a message
-            logger.info(self.next_message())
-            logger.error(self.next_message())
-            self.assert_log_lines([
-                ('INFO', '1'),
-                ('ERROR', '2'),
-            ], stream=output)
-            # Original logger output is empty.
-            self.assert_log_lines([])
-        with captured_stdout() as output:
-            self.apply_config(self.config8)
-            logger = logging.getLogger("compiler.parser")
-            self.assertFalse(logger.disabled)
-            # Both will output a message
-            logger.info(self.next_message())
-            logger.error(self.next_message())
-            logger = logging.getLogger("compiler.lexer")
-            # Both will output a message
-            logger.info(self.next_message())
-            logger.error(self.next_message())
-            self.assert_log_lines([
-                ('INFO', '3'),
-                ('ERROR', '4'),
-                ('INFO', '5'),
-                ('ERROR', '6'),
-            ], stream=output)
-            # Original logger output is empty.
-            self.assert_log_lines([])
-
-    def test_config_9_ok(self):
-        with captured_stdout() as output:
-            self.apply_config(self.config9)
-            logger = logging.getLogger("compiler.parser")
-            #Nothing will be output since both handler and logger are set to WARNING
-            logger.info(self.next_message())
-            self.assert_log_lines([], stream=output)
-            self.apply_config(self.config9a)
-            #Nothing will be output since both handler is still set to WARNING
-            logger.info(self.next_message())
-            self.assert_log_lines([], stream=output)
-            self.apply_config(self.config9b)
-            #Message should now be output
-            logger.info(self.next_message())
-            self.assert_log_lines([
-                ('INFO', '3'),
-            ], stream=output)
-
-    def test_config_10_ok(self):
-        with captured_stdout() as output:
-            self.apply_config(self.config10)
-            logger = logging.getLogger("compiler.parser")
-            logger.warning(self.next_message())
-            logger = logging.getLogger('compiler')
-            #Not output, because filtered
-            logger.warning(self.next_message())
-            logger = logging.getLogger('compiler.lexer')
-            #Not output, because filtered
-            logger.warning(self.next_message())
-            logger = logging.getLogger("compiler.parser.codegen")
-            #Output, as not filtered
-            logger.error(self.next_message())
-            self.assert_log_lines([
-                ('WARNING', '1'),
-                ('ERROR', '4'),
-            ], stream=output)
-
-    def test_config11_ok(self):
-        self.test_config1_ok(self.config11)
-
-    def test_config12_failure(self):
-        self.assertRaises(StandardError, self.apply_config, self.config12)
-
-    def test_config13_failure(self):
-        self.assertRaises(StandardError, self.apply_config, self.config13)
-
-    @unittest.skipUnless(threading, 'listen() needs threading to work')
-    def setup_via_listener(self, text):
-        # Ask for a randomly assigned port (by using port 0)
-        t = logging.config.listen(0)
-        t.start()
-        t.ready.wait()
-        # Now get the port allocated
-        port = t.port
-        t.ready.clear()
-        try:
-            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-            sock.settimeout(2.0)
-            sock.connect(('localhost', port))
-
-            slen = struct.pack('>L', len(text))
-            s = slen + text
-            sentsofar = 0
-            left = len(s)
-            while left > 0:
-                sent = sock.send(s[sentsofar:])
-                sentsofar += sent
-                left -= sent
-            sock.close()
-        finally:
-            t.ready.wait(2.0)
-            logging.config.stopListening()
-            t.join(2.0)
-
-    def test_listen_config_10_ok(self):
-        with captured_stdout() as output:
-            self.setup_via_listener(json.dumps(self.config10))
-            logger = logging.getLogger("compiler.parser")
-            logger.warning(self.next_message())
-            logger = logging.getLogger('compiler')
-            #Not output, because filtered
-            logger.warning(self.next_message())
-            logger = logging.getLogger('compiler.lexer')
-            #Not output, because filtered
-            logger.warning(self.next_message())
-            logger = logging.getLogger("compiler.parser.codegen")
-            #Output, as not filtered
-            logger.error(self.next_message())
-            self.assert_log_lines([
-                ('WARNING', '1'),
-                ('ERROR', '4'),
-            ], stream=output)
-
-    def test_listen_config_1_ok(self):
-        with captured_stdout() as output:
-            self.setup_via_listener(textwrap.dedent(ConfigFileTest.config1))
-            logger = logging.getLogger("compiler.parser")
-            # Both will output a message
-            logger.info(self.next_message())
-            logger.error(self.next_message())
-            self.assert_log_lines([
-                ('INFO', '1'),
-                ('ERROR', '2'),
-            ], stream=output)
-            # Original logger output is empty.
-            self.assert_log_lines([])
-
-
-class ManagerTest(BaseTest):
-    def test_manager_loggerclass(self):
-        logged = []
-
-        class MyLogger(logging.Logger):
-            def _log(self, level, msg, args, exc_info=None, extra=None):
-                logged.append(msg)
-
-        man = logging.Manager(None)
-        self.assertRaises(TypeError, man.setLoggerClass, int)
-        man.setLoggerClass(MyLogger)
-        logger = man.getLogger('test')
-        logger.warning('should appear in logged')
-        logging.warning('should not appear in logged')
-
-        self.assertEqual(logged, ['should appear in logged'])
-
-
-class ChildLoggerTest(BaseTest):
-    def test_child_loggers(self):
-        r = logging.getLogger()
-        l1 = logging.getLogger('abc')
-        l2 = logging.getLogger('def.ghi')
-        c1 = r.getChild('xyz')
-        c2 = r.getChild('uvw.xyz')
-        self.assertTrue(c1 is logging.getLogger('xyz'))
-        self.assertTrue(c2 is logging.getLogger('uvw.xyz'))
-        c1 = l1.getChild('def')
-        c2 = c1.getChild('ghi')
-        c3 = l1.getChild('def.ghi')
-        self.assertTrue(c1 is logging.getLogger('abc.def'))
-        self.assertTrue(c2 is logging.getLogger('abc.def.ghi'))
-        self.assertTrue(c2 is c3)
-
-
-# Set the locale to the platform-dependent default.  I have no idea
-# why the test does this, but in any case we save the current locale
-# first and restore it at the end.
-@run_with_locale('LC_ALL', '')
-def test_main():
-    run_unittest(BuiltinLevelsTest, BasicFilterTest,
-                 CustomLevelsAndFiltersTest, MemoryHandlerTest,
-                 ConfigFileTest, SocketHandlerTest, MemoryTest,
-                 EncodingTest, WarningsTest, ConfigDictTest, ManagerTest,
-                 ChildLoggerTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_long.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_long.py
deleted file mode 100644
index 9c4959b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_long.py
+++ /dev/null
@@ -1,914 +0,0 @@
-import unittest
-from test import test_support
-import sys
-
-import random
-import math
-
-# Used for lazy formatting of failure messages
-class Frm(object):
-    def __init__(self, format, *args):
-        self.format = format
-        self.args = args
-
-    def __str__(self):
-        return self.format % self.args
-
-# SHIFT should match the value in longintrepr.h for best testing.
-SHIFT = sys.long_info.bits_per_digit
-BASE = 2 ** SHIFT
-MASK = BASE - 1
-KARATSUBA_CUTOFF = 70   # from longobject.c
-
-# Max number of base BASE digits to use in test cases.  Doubling
-# this will more than double the runtime.
-MAXDIGITS = 15
-
-# build some special values
-special = map(long, [0, 1, 2, BASE, BASE >> 1])
-special.append(0x5555555555555555L)
-special.append(0xaaaaaaaaaaaaaaaaL)
-#  some solid strings of one bits
-p2 = 4L  # 0 and 1 already added
-for i in range(2*SHIFT):
-    special.append(p2 - 1)
-    p2 = p2 << 1
-del p2
-# add complements & negations
-special = special + map(lambda x: ~x, special) + \
-                    map(lambda x: -x, special)
-
-L = [
-        ('0', 0),
-        ('1', 1),
-        ('9', 9),
-        ('10', 10),
-        ('99', 99),
-        ('100', 100),
-        ('314', 314),
-        (' 314', 314),
-        ('314 ', 314),
-        ('  \t\t  314  \t\t  ', 314),
-        (repr(sys.maxint), sys.maxint),
-        ('  1x', ValueError),
-        ('  1  ', 1),
-        ('  1\02  ', ValueError),
-        ('', ValueError),
-        (' ', ValueError),
-        ('  \t\t  ', ValueError)
-]
-if test_support.have_unicode:
-    L += [
-        (unicode('0'), 0),
-        (unicode('1'), 1),
-        (unicode('9'), 9),
-        (unicode('10'), 10),
-        (unicode('99'), 99),
-        (unicode('100'), 100),
-        (unicode('314'), 314),
-        (unicode(' 314'), 314),
-        (unicode('\u0663\u0661\u0664 ','raw-unicode-escape'), 314),
-        (unicode('  \t\t  314  \t\t  '), 314),
-        (unicode('  1x'), ValueError),
-        (unicode('  1  '), 1),
-        (unicode('  1\02  '), ValueError),
-        (unicode(''), ValueError),
-        (unicode(' '), ValueError),
-        (unicode('  \t\t  '), ValueError),
-        (unichr(0x200), ValueError),
-]
-
-
-class LongTest(unittest.TestCase):
-
-    # Get quasi-random long consisting of ndigits digits (in base BASE).
-    # quasi == the most-significant digit will not be 0, and the number
-    # is constructed to contain long strings of 0 and 1 bits.  These are
-    # more likely than random bits to provoke digit-boundary errors.
-    # The sign of the number is also random.
-
-    def getran(self, ndigits):
-        self.assertTrue(ndigits > 0)
-        nbits_hi = ndigits * SHIFT
-        nbits_lo = nbits_hi - SHIFT + 1
-        answer = 0L
-        nbits = 0
-        r = int(random.random() * (SHIFT * 2)) | 1  # force 1 bits to start
-        while nbits < nbits_lo:
-            bits = (r >> 1) + 1
-            bits = min(bits, nbits_hi - nbits)
-            self.assertTrue(1 <= bits <= SHIFT)
-            nbits = nbits + bits
-            answer = answer << bits
-            if r & 1:
-                answer = answer | ((1 << bits) - 1)
-            r = int(random.random() * (SHIFT * 2))
-        self.assertTrue(nbits_lo <= nbits <= nbits_hi)
-        if random.random() < 0.5:
-            answer = -answer
-        return answer
-
-    # Get random long consisting of ndigits random digits (relative to base
-    # BASE).  The sign bit is also random.
-
-    def getran2(ndigits):
-        answer = 0L
-        for i in xrange(ndigits):
-            answer = (answer << SHIFT) | random.randint(0, MASK)
-        if random.random() < 0.5:
-            answer = -answer
-        return answer
-
-    def check_division(self, x, y):
-        eq = self.assertEqual
-        q, r = divmod(x, y)
-        q2, r2 = x//y, x%y
-        pab, pba = x*y, y*x
-        eq(pab, pba, Frm("multiplication does not commute for %r and %r", x, y))
-        eq(q, q2, Frm("divmod returns different quotient than / for %r and %r", x, y))
-        eq(r, r2, Frm("divmod returns different mod than %% for %r and %r", x, y))
-        eq(x, q*y + r, Frm("x != q*y + r after divmod on x=%r, y=%r", x, y))
-        if y > 0:
-            self.assertTrue(0 <= r < y, Frm("bad mod from divmod on %r and %r", x, y))
-        else:
-            self.assertTrue(y < r <= 0, Frm("bad mod from divmod on %r and %r", x, y))
-
-    def test_division(self):
-        digits = range(1, MAXDIGITS+1) + range(KARATSUBA_CUTOFF,
-                                               KARATSUBA_CUTOFF + 14)
-        digits.append(KARATSUBA_CUTOFF * 3)
-        for lenx in digits:
-            x = self.getran(lenx)
-            for leny in digits:
-                y = self.getran(leny) or 1L
-                self.check_division(x, y)
-
-        # specific numbers chosen to exercise corner cases of the
-        # current long division implementation
-
-        # 30-bit cases involving a quotient digit estimate of BASE+1
-        self.check_division(1231948412290879395966702881L,
-                            1147341367131428698L)
-        self.check_division(815427756481275430342312021515587883L,
-                       707270836069027745L)
-        self.check_division(627976073697012820849443363563599041L,
-                       643588798496057020L)
-        self.check_division(1115141373653752303710932756325578065L,
-                       1038556335171453937726882627L)
-        # 30-bit cases that require the post-subtraction correction step
-        self.check_division(922498905405436751940989320930368494L,
-                       949985870686786135626943396L)
-        self.check_division(768235853328091167204009652174031844L,
-                       1091555541180371554426545266L)
-
-        # 15-bit cases involving a quotient digit estimate of BASE+1
-        self.check_division(20172188947443L, 615611397L)
-        self.check_division(1020908530270155025L, 950795710L)
-        self.check_division(128589565723112408L, 736393718L)
-        self.check_division(609919780285761575L, 18613274546784L)
-        # 15-bit cases that require the post-subtraction correction step
-        self.check_division(710031681576388032L, 26769404391308L)
-        self.check_division(1933622614268221L, 30212853348836L)
-
-
-
-    def test_karatsuba(self):
-        digits = range(1, 5) + range(KARATSUBA_CUTOFF, KARATSUBA_CUTOFF + 10)
-        digits.extend([KARATSUBA_CUTOFF * 10, KARATSUBA_CUTOFF * 100])
-
-        bits = [digit * SHIFT for digit in digits]
-
-        # Test products of long strings of 1 bits -- (2**x-1)*(2**y-1) ==
-        # 2**(x+y) - 2**x - 2**y + 1, so the proper result is easy to check.
-        for abits in bits:
-            a = (1L << abits) - 1
-            for bbits in bits:
-                if bbits < abits:
-                    continue
-                b = (1L << bbits) - 1
-                x = a * b
-                y = ((1L << (abits + bbits)) -
-                     (1L << abits) -
-                     (1L << bbits) +
-                     1)
-                self.assertEqual(x, y,
-                    Frm("bad result for a*b: a=%r, b=%r, x=%r, y=%r", a, b, x, y))
-
-    def check_bitop_identities_1(self, x):
-        eq = self.assertEqual
-        eq(x & 0, 0, Frm("x & 0 != 0 for x=%r", x))
-        eq(x | 0, x, Frm("x | 0 != x for x=%r", x))
-        eq(x ^ 0, x, Frm("x ^ 0 != x for x=%r", x))
-        eq(x & -1, x, Frm("x & -1 != x for x=%r", x))
-        eq(x | -1, -1, Frm("x | -1 != -1 for x=%r", x))
-        eq(x ^ -1, ~x, Frm("x ^ -1 != ~x for x=%r", x))
-        eq(x, ~~x, Frm("x != ~~x for x=%r", x))
-        eq(x & x, x, Frm("x & x != x for x=%r", x))
-        eq(x | x, x, Frm("x | x != x for x=%r", x))
-        eq(x ^ x, 0, Frm("x ^ x != 0 for x=%r", x))
-        eq(x & ~x, 0, Frm("x & ~x != 0 for x=%r", x))
-        eq(x | ~x, -1, Frm("x | ~x != -1 for x=%r", x))
-        eq(x ^ ~x, -1, Frm("x ^ ~x != -1 for x=%r", x))
-        eq(-x, 1 + ~x, Frm("not -x == 1 + ~x for x=%r", x))
-        eq(-x, ~(x-1), Frm("not -x == ~(x-1) forx =%r", x))
-        for n in xrange(2*SHIFT):
-            p2 = 2L ** n
-            eq(x << n >> n, x,
-                Frm("x << n >> n != x for x=%r, n=%r", (x, n)))
-            eq(x // p2, x >> n,
-                Frm("x // p2 != x >> n for x=%r n=%r p2=%r", (x, n, p2)))
-            eq(x * p2, x << n,
-                Frm("x * p2 != x << n for x=%r n=%r p2=%r", (x, n, p2)))
-            eq(x & -p2, x >> n << n,
-                Frm("not x & -p2 == x >> n << n for x=%r n=%r p2=%r", (x, n, p2)))
-            eq(x & -p2, x & ~(p2 - 1),
-                Frm("not x & -p2 == x & ~(p2 - 1) for x=%r n=%r p2=%r", (x, n, p2)))
-
-    def check_bitop_identities_2(self, x, y):
-        eq = self.assertEqual
-        eq(x & y, y & x, Frm("x & y != y & x for x=%r, y=%r", (x, y)))
-        eq(x | y, y | x, Frm("x | y != y | x for x=%r, y=%r", (x, y)))
-        eq(x ^ y, y ^ x, Frm("x ^ y != y ^ x for x=%r, y=%r", (x, y)))
-        eq(x ^ y ^ x, y, Frm("x ^ y ^ x != y for x=%r, y=%r", (x, y)))
-        eq(x & y, ~(~x | ~y), Frm("x & y != ~(~x | ~y) for x=%r, y=%r", (x, y)))
-        eq(x | y, ~(~x & ~y), Frm("x | y != ~(~x & ~y) for x=%r, y=%r", (x, y)))
-        eq(x ^ y, (x | y) & ~(x & y),
-             Frm("x ^ y != (x | y) & ~(x & y) for x=%r, y=%r", (x, y)))
-        eq(x ^ y, (x & ~y) | (~x & y),
-             Frm("x ^ y == (x & ~y) | (~x & y) for x=%r, y=%r", (x, y)))
-        eq(x ^ y, (x | y) & (~x | ~y),
-             Frm("x ^ y == (x | y) & (~x | ~y) for x=%r, y=%r", (x, y)))
-
-    def check_bitop_identities_3(self, x, y, z):
-        eq = self.assertEqual
-        eq((x & y) & z, x & (y & z),
-             Frm("(x & y) & z != x & (y & z) for x=%r, y=%r, z=%r", (x, y, z)))
-        eq((x | y) | z, x | (y | z),
-             Frm("(x | y) | z != x | (y | z) for x=%r, y=%r, z=%r", (x, y, z)))
-        eq((x ^ y) ^ z, x ^ (y ^ z),
-             Frm("(x ^ y) ^ z != x ^ (y ^ z) for x=%r, y=%r, z=%r", (x, y, z)))
-        eq(x & (y | z), (x & y) | (x & z),
-             Frm("x & (y | z) != (x & y) | (x & z) for x=%r, y=%r, z=%r", (x, y, z)))
-        eq(x | (y & z), (x | y) & (x | z),
-             Frm("x | (y & z) != (x | y) & (x | z) for x=%r, y=%r, z=%r", (x, y, z)))
-
-    def test_bitop_identities(self):
-        for x in special:
-            self.check_bitop_identities_1(x)
-        digits = xrange(1, MAXDIGITS+1)
-        for lenx in digits:
-            x = self.getran(lenx)
-            self.check_bitop_identities_1(x)
-            for leny in digits:
-                y = self.getran(leny)
-                self.check_bitop_identities_2(x, y)
-                self.check_bitop_identities_3(x, y, self.getran((lenx + leny)//2))
-
-    def slow_format(self, x, base):
-        if (x, base) == (0, 8):
-            # this is an oddball!
-            return "0L"
-        digits = []
-        sign = 0
-        if x < 0:
-            sign, x = 1, -x
-        while x:
-            x, r = divmod(x, base)
-            digits.append(int(r))
-        digits.reverse()
-        digits = digits or [0]
-        return '-'[:sign] + \
-               {8: '0', 10: '', 16: '0x'}[base] + \
-               "".join(map(lambda i: "0123456789abcdef"[i], digits)) + "L"
-
-    def check_format_1(self, x):
-        for base, mapper in (8, oct), (10, repr), (16, hex):
-            got = mapper(x)
-            expected = self.slow_format(x, base)
-            msg = Frm("%s returned %r but expected %r for %r",
-                mapper.__name__, got, expected, x)
-            self.assertEqual(got, expected, msg)
-            self.assertEqual(long(got, 0), x, Frm('long("%s", 0) != %r', got, x))
-        # str() has to be checked a little differently since there's no
-        # trailing "L"
-        got = str(x)
-        expected = self.slow_format(x, 10)[:-1]
-        msg = Frm("%s returned %r but expected %r for %r",
-            mapper.__name__, got, expected, x)
-        self.assertEqual(got, expected, msg)
-
-    def test_format(self):
-        for x in special:
-            self.check_format_1(x)
-        for i in xrange(10):
-            for lenx in xrange(1, MAXDIGITS+1):
-                x = self.getran(lenx)
-                self.check_format_1(x)
-
-    def test_long(self):
-        self.assertEqual(long(314), 314L)
-        self.assertEqual(long(3.14), 3L)
-        self.assertEqual(long(314L), 314L)
-        # Check that long() of basic types actually returns a long
-        self.assertEqual(type(long(314)), long)
-        self.assertEqual(type(long(3.14)), long)
-        self.assertEqual(type(long(314L)), long)
-        # Check that conversion from float truncates towards zero
-        self.assertEqual(long(-3.14), -3L)
-        self.assertEqual(long(3.9), 3L)
-        self.assertEqual(long(-3.9), -3L)
-        self.assertEqual(long(3.5), 3L)
-        self.assertEqual(long(-3.5), -3L)
-        self.assertEqual(long("-3"), -3L)
-        self.assertEqual(long("0b10", 2), 2L)
-        self.assertEqual(long("0o10", 8), 8L)
-        self.assertEqual(long("0x10", 16), 16L)
-        if test_support.have_unicode:
-            self.assertEqual(long(unicode("-3")), -3L)
-        # Different base:
-        self.assertEqual(long("10",16), 16L)
-        if test_support.have_unicode:
-            self.assertEqual(long(unicode("10"),16), 16L)
-        # Check conversions from string (same test set as for int(), and then some)
-        LL = [
-                ('1' + '0'*20, 10L**20),
-                ('1' + '0'*100, 10L**100)
-        ]
-        L2 = L[:]
-        if test_support.have_unicode:
-            L2 += [
-                (unicode('1') + unicode('0')*20, 10L**20),
-                (unicode('1') + unicode('0')*100, 10L**100),
-        ]
-        for s, v in L2 + LL:
-            for sign in "", "+", "-":
-                for prefix in "", " ", "\t", "  \t\t  ":
-                    ss = prefix + sign + s
-                    vv = v
-                    if sign == "-" and v is not ValueError:
-                        vv = -v
-                    try:
-                        self.assertEqual(long(ss), long(vv))
-                    except v:
-                        pass
-
-        self.assertRaises(ValueError, long, '123\0')
-        self.assertRaises(ValueError, long, '53', 40)
-        self.assertRaises(TypeError, long, 1, 12)
-
-        # tests with base 0
-        self.assertEqual(long(' 0123  ', 0), 83)
-        self.assertEqual(long(' 0123  ', 0), 83)
-        self.assertEqual(long('000', 0), 0)
-        self.assertEqual(long('0o123', 0), 83)
-        self.assertEqual(long('0x123', 0), 291)
-        self.assertEqual(long('0b100', 0), 4)
-        self.assertEqual(long(' 0O123   ', 0), 83)
-        self.assertEqual(long(' 0X123  ', 0), 291)
-        self.assertEqual(long(' 0B100 ', 0), 4)
-        self.assertEqual(long('0', 0), 0)
-        self.assertEqual(long('+0', 0), 0)
-        self.assertEqual(long('-0', 0), 0)
-        self.assertEqual(long('00', 0), 0)
-        self.assertRaises(ValueError, long, '08', 0)
-        self.assertRaises(ValueError, long, '-012395', 0)
-
-        # SF patch #1638879: embedded NULs were not detected with
-        # explicit base
-        self.assertRaises(ValueError, long, '123\0', 10)
-        self.assertRaises(ValueError, long, '123\x00 245', 20)
-
-        self.assertEqual(long('100000000000000000000000000000000', 2),
-                         4294967296)
-        self.assertEqual(long('102002022201221111211', 3), 4294967296)
-        self.assertEqual(long('10000000000000000', 4), 4294967296)
-        self.assertEqual(long('32244002423141', 5), 4294967296)
-        self.assertEqual(long('1550104015504', 6), 4294967296)
-        self.assertEqual(long('211301422354', 7), 4294967296)
-        self.assertEqual(long('40000000000', 8), 4294967296)
-        self.assertEqual(long('12068657454', 9), 4294967296)
-        self.assertEqual(long('4294967296', 10), 4294967296)
-        self.assertEqual(long('1904440554', 11), 4294967296)
-        self.assertEqual(long('9ba461594', 12), 4294967296)
-        self.assertEqual(long('535a79889', 13), 4294967296)
-        self.assertEqual(long('2ca5b7464', 14), 4294967296)
-        self.assertEqual(long('1a20dcd81', 15), 4294967296)
-        self.assertEqual(long('100000000', 16), 4294967296)
-        self.assertEqual(long('a7ffda91', 17), 4294967296)
-        self.assertEqual(long('704he7g4', 18), 4294967296)
-        self.assertEqual(long('4f5aff66', 19), 4294967296)
-        self.assertEqual(long('3723ai4g', 20), 4294967296)
-        self.assertEqual(long('281d55i4', 21), 4294967296)
-        self.assertEqual(long('1fj8b184', 22), 4294967296)
-        self.assertEqual(long('1606k7ic', 23), 4294967296)
-        self.assertEqual(long('mb994ag', 24), 4294967296)
-        self.assertEqual(long('hek2mgl', 25), 4294967296)
-        self.assertEqual(long('dnchbnm', 26), 4294967296)
-        self.assertEqual(long('b28jpdm', 27), 4294967296)
-        self.assertEqual(long('8pfgih4', 28), 4294967296)
-        self.assertEqual(long('76beigg', 29), 4294967296)
-        self.assertEqual(long('5qmcpqg', 30), 4294967296)
-        self.assertEqual(long('4q0jto4', 31), 4294967296)
-        self.assertEqual(long('4000000', 32), 4294967296)
-        self.assertEqual(long('3aokq94', 33), 4294967296)
-        self.assertEqual(long('2qhxjli', 34), 4294967296)
-        self.assertEqual(long('2br45qb', 35), 4294967296)
-        self.assertEqual(long('1z141z4', 36), 4294967296)
-
-        self.assertEqual(long('100000000000000000000000000000001', 2),
-                         4294967297)
-        self.assertEqual(long('102002022201221111212', 3), 4294967297)
-        self.assertEqual(long('10000000000000001', 4), 4294967297)
-        self.assertEqual(long('32244002423142', 5), 4294967297)
-        self.assertEqual(long('1550104015505', 6), 4294967297)
-        self.assertEqual(long('211301422355', 7), 4294967297)
-        self.assertEqual(long('40000000001', 8), 4294967297)
-        self.assertEqual(long('12068657455', 9), 4294967297)
-        self.assertEqual(long('4294967297', 10), 4294967297)
-        self.assertEqual(long('1904440555', 11), 4294967297)
-        self.assertEqual(long('9ba461595', 12), 4294967297)
-        self.assertEqual(long('535a7988a', 13), 4294967297)
-        self.assertEqual(long('2ca5b7465', 14), 4294967297)
-        self.assertEqual(long('1a20dcd82', 15), 4294967297)
-        self.assertEqual(long('100000001', 16), 4294967297)
-        self.assertEqual(long('a7ffda92', 17), 4294967297)
-        self.assertEqual(long('704he7g5', 18), 4294967297)
-        self.assertEqual(long('4f5aff67', 19), 4294967297)
-        self.assertEqual(long('3723ai4h', 20), 4294967297)
-        self.assertEqual(long('281d55i5', 21), 4294967297)
-        self.assertEqual(long('1fj8b185', 22), 4294967297)
-        self.assertEqual(long('1606k7id', 23), 4294967297)
-        self.assertEqual(long('mb994ah', 24), 4294967297)
-        self.assertEqual(long('hek2mgm', 25), 4294967297)
-        self.assertEqual(long('dnchbnn', 26), 4294967297)
-        self.assertEqual(long('b28jpdn', 27), 4294967297)
-        self.assertEqual(long('8pfgih5', 28), 4294967297)
-        self.assertEqual(long('76beigh', 29), 4294967297)
-        self.assertEqual(long('5qmcpqh', 30), 4294967297)
-        self.assertEqual(long('4q0jto5', 31), 4294967297)
-        self.assertEqual(long('4000001', 32), 4294967297)
-        self.assertEqual(long('3aokq95', 33), 4294967297)
-        self.assertEqual(long('2qhxjlj', 34), 4294967297)
-        self.assertEqual(long('2br45qc', 35), 4294967297)
-        self.assertEqual(long('1z141z5', 36), 4294967297)
-
-
-    def test_conversion(self):
-        # Test __long__()
-        class ClassicMissingMethods:
-            pass
-        self.assertRaises(AttributeError, long, ClassicMissingMethods())
-
-        class MissingMethods(object):
-            pass
-        self.assertRaises(TypeError, long, MissingMethods())
-
-        class Foo0:
-            def __long__(self):
-                return 42L
-
-        class Foo1(object):
-            def __long__(self):
-                return 42L
-
-        class Foo2(long):
-            def __long__(self):
-                return 42L
-
-        class Foo3(long):
-            def __long__(self):
-                return self
-
-        class Foo4(long):
-            def __long__(self):
-                return 42
-
-        class Foo5(long):
-            def __long__(self):
-                return 42.
-
-        self.assertEqual(long(Foo0()), 42L)
-        self.assertEqual(long(Foo1()), 42L)
-        self.assertEqual(long(Foo2()), 42L)
-        self.assertEqual(long(Foo3()), 0)
-        self.assertEqual(long(Foo4()), 42)
-        self.assertRaises(TypeError, long, Foo5())
-
-        class Classic:
-            pass
-        for base in (object, Classic):
-            class LongOverridesTrunc(base):
-                def __long__(self):
-                    return 42
-                def __trunc__(self):
-                    return -12
-            self.assertEqual(long(LongOverridesTrunc()), 42)
-
-            class JustTrunc(base):
-                def __trunc__(self):
-                    return 42
-            self.assertEqual(long(JustTrunc()), 42)
-
-            for trunc_result_base in (object, Classic):
-                class Integral(trunc_result_base):
-                    def __int__(self):
-                        return 42
-
-                class TruncReturnsNonLong(base):
-                    def __trunc__(self):
-                        return Integral()
-                self.assertEqual(long(TruncReturnsNonLong()), 42)
-
-                class NonIntegral(trunc_result_base):
-                    def __trunc__(self):
-                        # Check that we avoid infinite recursion.
-                        return NonIntegral()
-
-                class TruncReturnsNonIntegral(base):
-                    def __trunc__(self):
-                        return NonIntegral()
-                try:
-                    long(TruncReturnsNonIntegral())
-                except TypeError as e:
-                    self.assertEqual(str(e),
-                                     "__trunc__ returned non-Integral"
-                                     " (type NonIntegral)")
-                else:
-                    self.fail("Failed to raise TypeError with %s" %
-                              ((base, trunc_result_base),))
-
-    def test_misc(self):
-
-        # check the extremes in int<->long conversion
-        hugepos = sys.maxint
-        hugeneg = -hugepos - 1
-        hugepos_aslong = long(hugepos)
-        hugeneg_aslong = long(hugeneg)
-        self.assertEqual(hugepos, hugepos_aslong, "long(sys.maxint) != sys.maxint")
-        self.assertEqual(hugeneg, hugeneg_aslong,
-            "long(-sys.maxint-1) != -sys.maxint-1")
-
-        # long -> int should not fail for hugepos_aslong or hugeneg_aslong
-        x = int(hugepos_aslong)
-        try:
-            self.assertEqual(x, hugepos,
-                  "converting sys.maxint to long and back to int fails")
-        except OverflowError:
-            self.fail("int(long(sys.maxint)) overflowed!")
-        if not isinstance(x, int):
-            self.fail("int(long(sys.maxint)) should have returned int")
-        x = int(hugeneg_aslong)
-        try:
-            self.assertEqual(x, hugeneg,
-                  "converting -sys.maxint-1 to long and back to int fails")
-        except OverflowError:
-            self.fail("int(long(-sys.maxint-1)) overflowed!")
-        if not isinstance(x, int):
-            self.fail("int(long(-sys.maxint-1)) should have returned int")
-        # but long -> int should overflow for hugepos+1 and hugeneg-1
-        x = hugepos_aslong + 1
-        try:
-            y = int(x)
-        except OverflowError:
-            self.fail("int(long(sys.maxint) + 1) mustn't overflow")
-        self.assertIsInstance(y, long,
-            "int(long(sys.maxint) + 1) should have returned long")
-
-        x = hugeneg_aslong - 1
-        try:
-            y = int(x)
-        except OverflowError:
-            self.fail("int(long(-sys.maxint-1) - 1) mustn't overflow")
-        self.assertIsInstance(y, long,
-               "int(long(-sys.maxint-1) - 1) should have returned long")
-
-        class long2(long):
-            pass
-        x = long2(1L<<100)
-        y = int(x)
-        self.assertTrue(type(y) is long,
-            "overflowing int conversion must return long not long subtype")
-
-        # long -> Py_ssize_t conversion
-        class X(object):
-            def __getslice__(self, i, j):
-                return i, j
-
-        with test_support.check_py3k_warnings():
-            self.assertEqual(X()[-5L:7L], (-5, 7))
-            # use the clamping effect to test the smallest and largest longs
-            # that fit a Py_ssize_t
-            slicemin, slicemax = X()[-2L**100:2L**100]
-            self.assertEqual(X()[slicemin:slicemax], (slicemin, slicemax))
-
-    def test_issue9869(self):
-        # Issue 9869: Interpreter crash when initializing an instance
-        # of a long subclass from an object whose __long__ method returns
-        # a plain int.
-        class BadLong(object):
-            def __long__(self):
-                return 1000000
-
-        class MyLong(long):
-            pass
-
-        x = MyLong(BadLong())
-        self.assertIsInstance(x, long)
-        self.assertEqual(x, 1000000)
-
-
-# ----------------------------------- tests of auto int->long conversion
-
-    def test_auto_overflow(self):
-        special = [0, 1, 2, 3, sys.maxint-1, sys.maxint, sys.maxint+1]
-        sqrt = int(math.sqrt(sys.maxint))
-        special.extend([sqrt-1, sqrt, sqrt+1])
-        special.extend([-i for i in special])
-
-        def checkit(*args):
-            # Heavy use of nested scopes here!
-            self.assertEqual(got, expected,
-                Frm("for %r expected %r got %r", args, expected, got))
-
-        for x in special:
-            longx = long(x)
-
-            expected = -longx
-            got = -x
-            checkit('-', x)
-
-            for y in special:
-                longy = long(y)
-
-                expected = longx + longy
-                got = x + y
-                checkit(x, '+', y)
-
-                expected = longx - longy
-                got = x - y
-                checkit(x, '-', y)
-
-                expected = longx * longy
-                got = x * y
-                checkit(x, '*', y)
-
-                if y:
-                    with test_support.check_py3k_warnings():
-                        expected = longx / longy
-                        got = x / y
-                    checkit(x, '/', y)
-
-                    expected = longx // longy
-                    got = x // y
-                    checkit(x, '//', y)
-
-                    expected = divmod(longx, longy)
-                    got = divmod(longx, longy)
-                    checkit(x, 'divmod', y)
-
-                if abs(y) < 5 and not (x == 0 and y < 0):
-                    expected = longx ** longy
-                    got = x ** y
-                    checkit(x, '**', y)
-
-                    for z in special:
-                        if z != 0 :
-                            if y >= 0:
-                                expected = pow(longx, longy, long(z))
-                                got = pow(x, y, z)
-                                checkit('pow', x, y, '%', z)
-                            else:
-                                self.assertRaises(TypeError, pow,longx, longy, long(z))
-
-    @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"),
-                         "test requires IEEE 754 doubles")
-    def test_float_conversion(self):
-        import sys
-        DBL_MAX = sys.float_info.max
-        DBL_MAX_EXP = sys.float_info.max_exp
-        DBL_MANT_DIG = sys.float_info.mant_dig
-
-        exact_values = [0L, 1L, 2L,
-                         long(2**53-3),
-                         long(2**53-2),
-                         long(2**53-1),
-                         long(2**53),
-                         long(2**53+2),
-                         long(2**54-4),
-                         long(2**54-2),
-                         long(2**54),
-                         long(2**54+4)]
-        for x in exact_values:
-            self.assertEqual(long(float(x)), x)
-            self.assertEqual(long(float(-x)), -x)
-
-        # test round-half-even
-        for x, y in [(1, 0), (2, 2), (3, 4), (4, 4), (5, 4), (6, 6), (7, 8)]:
-            for p in xrange(15):
-                self.assertEqual(long(float(2L**p*(2**53+x))), 2L**p*(2**53+y))
-
-        for x, y in [(0, 0), (1, 0), (2, 0), (3, 4), (4, 4), (5, 4), (6, 8),
-                     (7, 8), (8, 8), (9, 8), (10, 8), (11, 12), (12, 12),
-                     (13, 12), (14, 16), (15, 16)]:
-            for p in xrange(15):
-                self.assertEqual(long(float(2L**p*(2**54+x))), 2L**p*(2**54+y))
-
-        # behaviour near extremes of floating-point range
-        long_dbl_max = long(DBL_MAX)
-        top_power = 2**DBL_MAX_EXP
-        halfway = (long_dbl_max + top_power)//2
-        self.assertEqual(float(long_dbl_max), DBL_MAX)
-        self.assertEqual(float(long_dbl_max+1), DBL_MAX)
-        self.assertEqual(float(halfway-1), DBL_MAX)
-        self.assertRaises(OverflowError, float, halfway)
-        self.assertEqual(float(1-halfway), -DBL_MAX)
-        self.assertRaises(OverflowError, float, -halfway)
-        self.assertRaises(OverflowError, float, top_power-1)
-        self.assertRaises(OverflowError, float, top_power)
-        self.assertRaises(OverflowError, float, top_power+1)
-        self.assertRaises(OverflowError, float, 2*top_power-1)
-        self.assertRaises(OverflowError, float, 2*top_power)
-        self.assertRaises(OverflowError, float, top_power*top_power)
-
-        for p in xrange(100):
-            x = long(2**p * (2**53 + 1) + 1)
-            y = long(2**p * (2**53+ 2))
-            self.assertEqual(long(float(x)), y)
-
-            x = long(2**p * (2**53 + 1))
-            y = long(2**p * 2**53)
-            self.assertEqual(long(float(x)), y)
-
-    def test_float_overflow(self):
-        for x in -2.0, -1.0, 0.0, 1.0, 2.0:
-            self.assertEqual(float(long(x)), x)
-
-        shuge = '12345' * 120
-        huge = 1L << 30000
-        mhuge = -huge
-        namespace = {'huge': huge, 'mhuge': mhuge, 'shuge': shuge, 'math': math}
-        for test in ["float(huge)", "float(mhuge)",
-                     "complex(huge)", "complex(mhuge)",
-                     "complex(huge, 1)", "complex(mhuge, 1)",
-                     "complex(1, huge)", "complex(1, mhuge)",
-                     "1. + huge", "huge + 1.", "1. + mhuge", "mhuge + 1.",
-                     "1. - huge", "huge - 1.", "1. - mhuge", "mhuge - 1.",
-                     "1. * huge", "huge * 1.", "1. * mhuge", "mhuge * 1.",
-                     "1. // huge", "huge // 1.", "1. // mhuge", "mhuge // 1.",
-                     "1. / huge", "huge / 1.", "1. / mhuge", "mhuge / 1.",
-                     "1. ** huge", "huge ** 1.", "1. ** mhuge", "mhuge ** 1.",
-                     "math.sin(huge)", "math.sin(mhuge)",
-                     "math.sqrt(huge)", "math.sqrt(mhuge)", # should do better
-                     "math.floor(huge)", "math.floor(mhuge)"]:
-
-            self.assertRaises(OverflowError, eval, test, namespace)
-
-            # XXX Perhaps float(shuge) can raise OverflowError on some box?
-            # The comparison should not.
-            self.assertNotEqual(float(shuge), int(shuge),
-                "float(shuge) should not equal int(shuge)")
-
-    def test_logs(self):
-        LOG10E = math.log10(math.e)
-
-        for exp in range(10) + [100, 1000, 10000]:
-            value = 10 ** exp
-            log10 = math.log10(value)
-            self.assertAlmostEqual(log10, exp)
-
-            # log10(value) == exp, so log(value) == log10(value)/log10(e) ==
-            # exp/LOG10E
-            expected = exp / LOG10E
-            log = math.log(value)
-            self.assertAlmostEqual(log, expected)
-
-        for bad in -(1L << 10000), -2L, 0L:
-            self.assertRaises(ValueError, math.log, bad)
-            self.assertRaises(ValueError, math.log10, bad)
-
-    def test_mixed_compares(self):
-        eq = self.assertEqual
-
-        # We're mostly concerned with that mixing floats and longs does the
-        # right stuff, even when longs are too large to fit in a float.
-        # The safest way to check the results is to use an entirely different
-        # method, which we do here via a skeletal rational class (which
-        # represents all Python ints, longs and floats exactly).
-        class Rat:
-            def __init__(self, value):
-                if isinstance(value, (int, long)):
-                    self.n = value
-                    self.d = 1
-                elif isinstance(value, float):
-                    # Convert to exact rational equivalent.
-                    f, e = math.frexp(abs(value))
-                    assert f == 0 or 0.5 <= f < 1.0
-                    # |value| = f * 2**e exactly
-
-                    # Suck up CHUNK bits at a time; 28 is enough so that we suck
-                    # up all bits in 2 iterations for all known binary double-
-                    # precision formats, and small enough to fit in an int.
-                    CHUNK = 28
-                    top = 0
-                    # invariant: |value| = (top + f) * 2**e exactly
-                    while f:
-                        f = math.ldexp(f, CHUNK)
-                        digit = int(f)
-                        assert digit >> CHUNK == 0
-                        top = (top << CHUNK) | digit
-                        f -= digit
-                        assert 0.0 <= f < 1.0
-                        e -= CHUNK
-
-                    # Now |value| = top * 2**e exactly.
-                    if e >= 0:
-                        n = top << e
-                        d = 1
-                    else:
-                        n = top
-                        d = 1 << -e
-                    if value < 0:
-                        n = -n
-                    self.n = n
-                    self.d = d
-                    assert float(n) / float(d) == value
-                else:
-                    raise TypeError("can't deal with %r" % value)
-
-            def __cmp__(self, other):
-                if not isinstance(other, Rat):
-                    other = Rat(other)
-                return cmp(self.n * other.d, self.d * other.n)
-
-        cases = [0, 0.001, 0.99, 1.0, 1.5, 1e20, 1e200]
-        # 2**48 is an important boundary in the internals.  2**53 is an
-        # important boundary for IEEE double precision.
-        for t in 2.0**48, 2.0**50, 2.0**53:
-            cases.extend([t - 1.0, t - 0.3, t, t + 0.3, t + 1.0,
-                          long(t-1), long(t), long(t+1)])
-        cases.extend([0, 1, 2, sys.maxint, float(sys.maxint)])
-        # 1L<<20000 should exceed all double formats.  long(1e200) is to
-        # check that we get equality with 1e200 above.
-        t = long(1e200)
-        cases.extend([0L, 1L, 2L, 1L << 20000, t-1, t, t+1])
-        cases.extend([-x for x in cases])
-        for x in cases:
-            Rx = Rat(x)
-            for y in cases:
-                Ry = Rat(y)
-                Rcmp = cmp(Rx, Ry)
-                xycmp = cmp(x, y)
-                eq(Rcmp, xycmp, Frm("%r %r %d %d", x, y, Rcmp, xycmp))
-                eq(x == y, Rcmp == 0, Frm("%r == %r %d", x, y, Rcmp))
-                eq(x != y, Rcmp != 0, Frm("%r != %r %d", x, y, Rcmp))
-                eq(x < y, Rcmp < 0, Frm("%r < %r %d", x, y, Rcmp))
-                eq(x <= y, Rcmp <= 0, Frm("%r <= %r %d", x, y, Rcmp))
-                eq(x > y, Rcmp > 0, Frm("%r > %r %d", x, y, Rcmp))
-                eq(x >= y, Rcmp >= 0, Frm("%r >= %r %d", x, y, Rcmp))
-
-    def test_nan_inf(self):
-        self.assertRaises(OverflowError, long, float('inf'))
-        self.assertRaises(OverflowError, long, float('-inf'))
-        self.assertRaises(ValueError, long, float('nan'))
-
-    def test_bit_length(self):
-        tiny = 1e-10
-        for x in xrange(-65000, 65000):
-            x = long(x)
-            k = x.bit_length()
-            # Check equivalence with Python version
-            self.assertEqual(k, len(bin(x).lstrip('-0b')))
-            # Behaviour as specified in the docs
-            if x != 0:
-                self.assertTrue(2**(k-1) <= abs(x) < 2**k)
-            else:
-                self.assertEqual(k, 0)
-            # Alternative definition: x.bit_length() == 1 + floor(log_2(x))
-            if x != 0:
-                # When x is an exact power of 2, numeric errors can
-                # cause floor(log(x)/log(2)) to be one too small; for
-                # small x this can be fixed by adding a small quantity
-                # to the quotient before taking the floor.
-                self.assertEqual(k, 1 + math.floor(
-                        math.log(abs(x))/math.log(2) + tiny))
-
-        self.assertEqual((0L).bit_length(), 0)
-        self.assertEqual((1L).bit_length(), 1)
-        self.assertEqual((-1L).bit_length(), 1)
-        self.assertEqual((2L).bit_length(), 2)
-        self.assertEqual((-2L).bit_length(), 2)
-        for i in [2, 3, 15, 16, 17, 31, 32, 33, 63, 64, 234]:
-            a = 2L**i
-            self.assertEqual((a-1).bit_length(), i)
-            self.assertEqual((1-a).bit_length(), i)
-            self.assertEqual((a).bit_length(), i+1)
-            self.assertEqual((-a).bit_length(), i+1)
-            self.assertEqual((a+1).bit_length(), i+1)
-            self.assertEqual((-a-1).bit_length(), i+1)
-
-
-def test_main():
-    test_support.run_unittest(LongTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_long_future.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_long_future.py
deleted file mode 100644
index 832aea9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_long_future.py
+++ /dev/null
@@ -1,221 +0,0 @@
-from __future__ import division
-# When true division is the default, get rid of this and add it to
-# test_long.py instead.  In the meantime, it's too obscure to try to
-# trick just part of test_long into using future division.
-
-import sys
-import random
-import math
-import unittest
-from test.test_support import run_unittest
-
-# decorator for skipping tests on non-IEEE 754 platforms
-requires_IEEE_754 = unittest.skipUnless(
-    float.__getformat__("double").startswith("IEEE"),
-    "test requires IEEE 754 doubles")
-
-DBL_MAX = sys.float_info.max
-DBL_MAX_EXP = sys.float_info.max_exp
-DBL_MIN_EXP = sys.float_info.min_exp
-DBL_MANT_DIG = sys.float_info.mant_dig
-DBL_MIN_OVERFLOW = 2**DBL_MAX_EXP - 2**(DBL_MAX_EXP - DBL_MANT_DIG - 1)
-
-# pure Python version of correctly-rounded true division
-def truediv(a, b):
-    """Correctly-rounded true division for integers."""
-    negative = a^b < 0
-    a, b = abs(a), abs(b)
-
-    # exceptions:  division by zero, overflow
-    if not b:
-        raise ZeroDivisionError("division by zero")
-    if a >= DBL_MIN_OVERFLOW * b:
-        raise OverflowError("int/int too large to represent as a float")
-
-   # find integer d satisfying 2**(d - 1) <= a/b < 2**d
-    d = a.bit_length() - b.bit_length()
-    if d >= 0 and a >= 2**d * b or d < 0 and a * 2**-d >= b:
-        d += 1
-
-    # compute 2**-exp * a / b for suitable exp
-    exp = max(d, DBL_MIN_EXP) - DBL_MANT_DIG
-    a, b = a << max(-exp, 0), b << max(exp, 0)
-    q, r = divmod(a, b)
-
-    # round-half-to-even: fractional part is r/b, which is > 0.5 iff
-    # 2*r > b, and == 0.5 iff 2*r == b.
-    if 2*r > b or 2*r == b and q % 2 == 1:
-        q += 1
-
-    result = math.ldexp(float(q), exp)
-    return -result if negative else result
-
-class TrueDivisionTests(unittest.TestCase):
-    def test(self):
-        huge = 1L << 40000
-        mhuge = -huge
-        self.assertEqual(huge / huge, 1.0)
-        self.assertEqual(mhuge / mhuge, 1.0)
-        self.assertEqual(huge / mhuge, -1.0)
-        self.assertEqual(mhuge / huge, -1.0)
-        self.assertEqual(1 / huge, 0.0)
-        self.assertEqual(1L / huge, 0.0)
-        self.assertEqual(1 / mhuge, 0.0)
-        self.assertEqual(1L / mhuge, 0.0)
-        self.assertEqual((666 * huge + (huge >> 1)) / huge, 666.5)
-        self.assertEqual((666 * mhuge + (mhuge >> 1)) / mhuge, 666.5)
-        self.assertEqual((666 * huge + (huge >> 1)) / mhuge, -666.5)
-        self.assertEqual((666 * mhuge + (mhuge >> 1)) / huge, -666.5)
-        self.assertEqual(huge / (huge << 1), 0.5)
-        self.assertEqual((1000000 * huge) / huge, 1000000)
-
-        namespace = {'huge': huge, 'mhuge': mhuge}
-
-        for overflow in ["float(huge)", "float(mhuge)",
-                         "huge / 1", "huge / 2L", "huge / -1", "huge / -2L",
-                         "mhuge / 100", "mhuge / 100L"]:
-            # If the "eval" does not happen in this module,
-            # true division is not enabled
-            with self.assertRaises(OverflowError):
-                eval(overflow, namespace)
-
-        for underflow in ["1 / huge", "2L / huge", "-1 / huge", "-2L / huge",
-                         "100 / mhuge", "100L / mhuge"]:
-            result = eval(underflow, namespace)
-            self.assertEqual(result, 0.0, 'expected underflow to 0 '
-                             'from {!r}'.format(underflow))
-
-        for zero in ["huge / 0", "huge / 0L", "mhuge / 0", "mhuge / 0L"]:
-            with self.assertRaises(ZeroDivisionError):
-                eval(zero, namespace)
-
-    def check_truediv(self, a, b, skip_small=True):
-        """Verify that the result of a/b is correctly rounded, by
-        comparing it with a pure Python implementation of correctly
-        rounded division.  b should be nonzero."""
-
-        a, b = long(a), long(b)
-
-        # skip check for small a and b: in this case, the current
-        # implementation converts the arguments to float directly and
-        # then applies a float division.  This can give doubly-rounded
-        # results on x87-using machines (particularly 32-bit Linux).
-        if skip_small and max(abs(a), abs(b)) < 2**DBL_MANT_DIG:
-            return
-
-        try:
-            # use repr so that we can distinguish between -0.0 and 0.0
-            expected = repr(truediv(a, b))
-        except OverflowError:
-            expected = 'overflow'
-        except ZeroDivisionError:
-            expected = 'zerodivision'
-
-        try:
-            got = repr(a / b)
-        except OverflowError:
-            got = 'overflow'
-        except ZeroDivisionError:
-            got = 'zerodivision'
-
-        self.assertEqual(expected, got, "Incorrectly rounded division {}/{}: "
-                         "expected {}, got {}".format(a, b, expected, got))
-
-    @requires_IEEE_754
-    def test_correctly_rounded_true_division(self):
-        # more stringent tests than those above, checking that the
-        # result of true division of ints is always correctly rounded.
-        # This test should probably be considered CPython-specific.
-
-        # Exercise all the code paths not involving Gb-sized ints.
-        # ... divisions involving zero
-        self.check_truediv(123, 0)
-        self.check_truediv(-456, 0)
-        self.check_truediv(0, 3)
-        self.check_truediv(0, -3)
-        self.check_truediv(0, 0)
-        # ... overflow or underflow by large margin
-        self.check_truediv(671 * 12345 * 2**DBL_MAX_EXP, 12345)
-        self.check_truediv(12345, 345678 * 2**(DBL_MANT_DIG - DBL_MIN_EXP))
-        # ... a much larger or smaller than b
-        self.check_truediv(12345*2**100, 98765)
-        self.check_truediv(12345*2**30, 98765*7**81)
-        # ... a / b near a boundary: one of 1, 2**DBL_MANT_DIG, 2**DBL_MIN_EXP,
-        #                 2**DBL_MAX_EXP, 2**(DBL_MIN_EXP-DBL_MANT_DIG)
-        bases = (0, DBL_MANT_DIG, DBL_MIN_EXP,
-                 DBL_MAX_EXP, DBL_MIN_EXP - DBL_MANT_DIG)
-        for base in bases:
-            for exp in range(base - 15, base + 15):
-                self.check_truediv(75312*2**max(exp, 0), 69187*2**max(-exp, 0))
-                self.check_truediv(69187*2**max(exp, 0), 75312*2**max(-exp, 0))
-
-        # overflow corner case
-        for m in [1, 2, 7, 17, 12345, 7**100,
-                  -1, -2, -5, -23, -67891, -41**50]:
-            for n in range(-10, 10):
-                self.check_truediv(m*DBL_MIN_OVERFLOW + n, m)
-                self.check_truediv(m*DBL_MIN_OVERFLOW + n, -m)
-
-        # check detection of inexactness in shifting stage
-        for n in range(250):
-            # (2**DBL_MANT_DIG+1)/(2**DBL_MANT_DIG) lies halfway
-            # between two representable floats, and would usually be
-            # rounded down under round-half-to-even.  The tiniest of
-            # additions to the numerator should cause it to be rounded
-            # up instead.
-            self.check_truediv((2**DBL_MANT_DIG + 1)*12345*2**200 + 2**n,
-                           2**DBL_MANT_DIG*12345)
-
-        # 1/2731 is one of the smallest division cases that's subject
-        # to double rounding on IEEE 754 machines working internally with
-        # 64-bit precision.  On such machines, the next check would fail,
-        # were it not explicitly skipped in check_truediv.
-        self.check_truediv(1, 2731)
-
-        # a particularly bad case for the old algorithm:  gives an
-        # error of close to 3.5 ulps.
-        self.check_truediv(295147931372582273023, 295147932265116303360)
-        for i in range(1000):
-            self.check_truediv(10**(i+1), 10**i)
-            self.check_truediv(10**i, 10**(i+1))
-
-        # test round-half-to-even behaviour, normal result
-        for m in [1, 2, 4, 7, 8, 16, 17, 32, 12345, 7**100,
-                  -1, -2, -5, -23, -67891, -41**50]:
-            for n in range(-10, 10):
-                self.check_truediv(2**DBL_MANT_DIG*m + n, m)
-
-        # test round-half-to-even, subnormal result
-        for n in range(-20, 20):
-            self.check_truediv(n, 2**1076)
-
-        # largeish random divisions: a/b where |a| <= |b| <=
-        # 2*|a|; |ans| is between 0.5 and 1.0, so error should
-        # always be bounded by 2**-54 with equality possible only
-        # if the least significant bit of q=ans*2**53 is zero.
-        for M in [10**10, 10**100, 10**1000]:
-            for i in range(1000):
-                a = random.randrange(1, M)
-                b = random.randrange(a, 2*a+1)
-                self.check_truediv(a, b)
-                self.check_truediv(-a, b)
-                self.check_truediv(a, -b)
-                self.check_truediv(-a, -b)
-
-        # and some (genuinely) random tests
-        for _ in range(10000):
-            a_bits = random.randrange(1000)
-            b_bits = random.randrange(1, 1000)
-            x = random.randrange(2**a_bits)
-            y = random.randrange(1, 2**b_bits)
-            self.check_truediv(x, y)
-            self.check_truediv(x, -y)
-            self.check_truediv(-x, y)
-            self.check_truediv(-x, -y)
-
-
-def test_main():
-    run_unittest(TrueDivisionTests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_longexp.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_longexp.py
deleted file mode 100644
index 8c70aaf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_longexp.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import unittest
-from test import test_support
-
-class LongExpText(unittest.TestCase):
-    def test_longexp(self):
-        REPS = 65580
-        l = eval("[" + "2," * REPS + "]")
-        self.assertEqual(len(l), REPS)
-
-def test_main():
-    test_support.run_unittest(LongExpText)
-
-if __name__=="__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macos.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macos.py
deleted file mode 100644
index b8decc1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macos.py
+++ /dev/null
@@ -1,98 +0,0 @@
-import unittest
-from test import test_support
-import os
-import subprocess
-
-MacOS = test_support.import_module('MacOS')
-
-TESTFN2 = test_support.TESTFN + '2'
-
-class TestMacOS(unittest.TestCase):
-
-    def testGetCreatorAndType(self):
-        if not os.path.exists('/Developer/Tools/SetFile'):
-            return
-
-        try:
-            fp = open(test_support.TESTFN, 'w')
-            fp.write('\n')
-            fp.close()
-
-            subprocess.call(
-                    ['/Developer/Tools/SetFile', '-t', 'ABCD', '-c', 'EFGH',
-                        test_support.TESTFN])
-
-            cr, tp = MacOS.GetCreatorAndType(test_support.TESTFN)
-            self.assertEqual(tp, 'ABCD')
-            self.assertEqual(cr, 'EFGH')
-
-        finally:
-            os.unlink(test_support.TESTFN)
-
-    def testSetCreatorAndType(self):
-        if not os.path.exists('/Developer/Tools/GetFileInfo'):
-            return
-
-        try:
-            fp = open(test_support.TESTFN, 'w')
-            fp.write('\n')
-            fp.close()
-
-            MacOS.SetCreatorAndType(test_support.TESTFN,
-                    'ABCD', 'EFGH')
-
-            cr, tp = MacOS.GetCreatorAndType(test_support.TESTFN)
-            self.assertEqual(cr, 'ABCD')
-            self.assertEqual(tp, 'EFGH')
-
-            data = subprocess.Popen(["/Developer/Tools/GetFileInfo", test_support.TESTFN],
-                    stdout=subprocess.PIPE).communicate()[0]
-
-            tp = None
-            cr = None
-            for  ln in data.splitlines():
-                if ln.startswith('type:'):
-                    tp = ln.split()[-1][1:-1]
-                if ln.startswith('creator:'):
-                    cr = ln.split()[-1][1:-1]
-
-            self.assertEqual(cr, 'ABCD')
-            self.assertEqual(tp, 'EFGH')
-
-        finally:
-            os.unlink(test_support.TESTFN)
-
-
-    def testOpenRF(self):
-        try:
-            fp = open(test_support.TESTFN, 'w')
-            fp.write('hello world\n')
-            fp.close()
-
-            rfp = MacOS.openrf(test_support.TESTFN, '*wb')
-            rfp.write('goodbye world\n')
-            rfp.close()
-
-
-            fp = open(test_support.TESTFN, 'r')
-            data = fp.read()
-            fp.close()
-            self.assertEqual(data, 'hello world\n')
-
-            rfp = MacOS.openrf(test_support.TESTFN, '*rb')
-            data = rfp.read(100)
-            data2 = rfp.read(100)
-            rfp.close()
-            self.assertEqual(data, 'goodbye world\n')
-            self.assertEqual(data2, '')
-
-
-        finally:
-            os.unlink(test_support.TESTFN)
-
-def test_main():
-    test_support.run_unittest(TestMacOS)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macostools.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macostools.py
deleted file mode 100644
index 5963976..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macostools.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright (C) 2003 Python Software Foundation
-
-import unittest
-import os
-import sys
-from test import test_support
-
-MacOS = test_support.import_module('MacOS')
-#The following modules should exist if MacOS exists.
-import Carbon.File
-import macostools
-
-TESTFN2 = test_support.TESTFN + '2'
-
-class TestMacostools(unittest.TestCase):
-
-    def setUp(self):
-        fp = open(test_support.TESTFN, 'w')
-        fp.write('hello world\n')
-        fp.close()
-        rfp = MacOS.openrf(test_support.TESTFN, '*wb')
-        rfp.write('goodbye world\n')
-        rfp.close()
-
-    def tearDown(self):
-        test_support.unlink(test_support.TESTFN)
-        test_support.unlink(TESTFN2)
-
-    def compareData(self):
-        fp = open(test_support.TESTFN, 'r')
-        data1 = fp.read()
-        fp.close()
-        fp = open(TESTFN2, 'r')
-        data2 = fp.read()
-        fp.close()
-        if data1 != data2:
-            return 'Data forks differ'
-        rfp = MacOS.openrf(test_support.TESTFN, '*rb')
-        data1 = rfp.read(1000)
-        rfp.close()
-        rfp = MacOS.openrf(TESTFN2, '*rb')
-        data2 = rfp.read(1000)
-        rfp.close()
-        if data1 != data2:
-            return 'Resource forks differ'
-        return ''
-
-    def test_touched(self):
-        # This really only tests that nothing unforeseen happens.
-        with test_support.check_warnings(('macostools.touched*',
-                                          DeprecationWarning), quiet=True):
-            macostools.touched(test_support.TESTFN)
-
-    if sys.maxint < 2**32:
-        def test_copy(self):
-            test_support.unlink(TESTFN2)
-            macostools.copy(test_support.TESTFN, TESTFN2)
-            self.assertEqual(self.compareData(), '')
-
-    if sys.maxint < 2**32:
-        def test_mkalias(self):
-            test_support.unlink(TESTFN2)
-            macostools.mkalias(test_support.TESTFN, TESTFN2)
-            fss, _, _ = Carbon.File.ResolveAliasFile(TESTFN2, 0)
-            self.assertEqual(fss.as_pathname(), os.path.realpath(test_support.TESTFN))
-
-        def test_mkalias_relative(self):
-            test_support.unlink(TESTFN2)
-            # If the directory doesn't exist, then chances are this is a new
-            # install of Python so don't create it since the user might end up
-            # running ``sudo make install`` and creating the directory here won't
-            # leave it with the proper permissions.
-            if not os.path.exists(sys.prefix):
-                return
-            macostools.mkalias(test_support.TESTFN, TESTFN2, sys.prefix)
-            fss, _, _ = Carbon.File.ResolveAliasFile(TESTFN2, 0)
-            self.assertEqual(fss.as_pathname(), os.path.realpath(test_support.TESTFN))
-
-
-def test_main():
-    # Skip on wide unicode
-    if len(u'\0'.encode('unicode-internal')) == 4:
-        raise unittest.SkipTest("test_macostools is broken in USC4")
-    test_support.run_unittest(TestMacostools)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macpath.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macpath.py
deleted file mode 100644
index a71a830..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_macpath.py
+++ /dev/null
@@ -1,57 +0,0 @@
-import macpath
-from test import test_support, test_genericpath
-import unittest
-
-
-class MacPathTestCase(unittest.TestCase):
-
-    def test_abspath(self):
-        self.assertEqual(macpath.abspath("xx:yy"), "xx:yy")
-
-    def test_isabs(self):
-        isabs = macpath.isabs
-        self.assertTrue(isabs("xx:yy"))
-        self.assertTrue(isabs("xx:yy:"))
-        self.assertTrue(isabs("xx:"))
-        self.assertFalse(isabs("foo"))
-        self.assertFalse(isabs(":foo"))
-        self.assertFalse(isabs(":foo:bar"))
-        self.assertFalse(isabs(":foo:bar:"))
-
-    def test_split(self):
-        split = macpath.split
-        self.assertEqual(split("foo:bar"),
-                          ('foo:', 'bar'))
-        self.assertEqual(split("conky:mountpoint:foo:bar"),
-                          ('conky:mountpoint:foo', 'bar'))
-
-        self.assertEqual(split(":"), ('', ''))
-        self.assertEqual(split(":conky:mountpoint:"),
-                          (':conky:mountpoint', ''))
-
-    def test_splitext(self):
-        splitext = macpath.splitext
-        self.assertEqual(splitext(":foo.ext"), (':foo', '.ext'))
-        self.assertEqual(splitext("foo:foo.ext"), ('foo:foo', '.ext'))
-        self.assertEqual(splitext(".ext"), ('.ext', ''))
-        self.assertEqual(splitext("foo.ext:foo"), ('foo.ext:foo', ''))
-        self.assertEqual(splitext(":foo.ext:"), (':foo.ext:', ''))
-        self.assertEqual(splitext(""), ('', ''))
-        self.assertEqual(splitext("foo.bar.ext"), ('foo.bar', '.ext'))
-
-    def test_normpath(self):
-        # Issue 5827: Make sure normpath preserves unicode
-        for path in (u'', u'.', u'/', u'\\', u':', u'///foo/.//bar//'):
-            self.assertIsInstance(macpath.normpath(path), unicode,
-                                  'normpath() returned str instead of unicode')
-
-class MacCommonTest(test_genericpath.CommonTest):
-    pathmodule = macpath
-
-
-def test_main():
-    test_support.run_unittest(MacPathTestCase, MacCommonTest)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mailbox.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mailbox.py
deleted file mode 100644
index a729fbf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mailbox.py
+++ /dev/null
@@ -1,1970 +0,0 @@
-import os
-import sys
-import time
-import stat
-import socket
-import email
-import email.message
-import re
-import StringIO
-from test import test_support
-import unittest
-import mailbox
-import glob
-try:
-    import fcntl
-except ImportError:
-    pass
-
-# Silence Py3k warning
-rfc822 = test_support.import_module('rfc822', deprecated=True)
-
-class TestBase(unittest.TestCase):
-
-    def _check_sample(self, msg):
-        # Inspect a mailbox.Message representation of the sample message
-        self.assertIsInstance(msg, email.message.Message)
-        self.assertIsInstance(msg, mailbox.Message)
-        for key, value in _sample_headers.iteritems():
-            self.assertIn(value, msg.get_all(key))
-        self.assertTrue(msg.is_multipart())
-        self.assertEqual(len(msg.get_payload()), len(_sample_payloads))
-        for i, payload in enumerate(_sample_payloads):
-            part = msg.get_payload(i)
-            self.assertIsInstance(part, email.message.Message)
-            self.assertNotIsInstance(part, mailbox.Message)
-            self.assertEqual(part.get_payload(), payload)
-
-    def _delete_recursively(self, target):
-        # Delete a file or delete a directory recursively
-        if os.path.isdir(target):
-            for path, dirs, files in os.walk(target, topdown=False):
-                for name in files:
-                    os.remove(os.path.join(path, name))
-                for name in dirs:
-                    os.rmdir(os.path.join(path, name))
-            os.rmdir(target)
-        elif os.path.exists(target):
-            os.remove(target)
-
-
-class TestMailbox(TestBase):
-
-    _factory = None     # Overridden by subclasses to reuse tests
-    _template = 'From: foo\n\n%s'
-
-    def setUp(self):
-        self._path = test_support.TESTFN
-        self._delete_recursively(self._path)
-        self._box = self._factory(self._path)
-
-    def tearDown(self):
-        self._box.close()
-        self._delete_recursively(self._path)
-
-    def test_add(self):
-        # Add copies of a sample message
-        keys = []
-        keys.append(self._box.add(self._template % 0))
-        self.assertEqual(len(self._box), 1)
-        keys.append(self._box.add(mailbox.Message(_sample_message)))
-        self.assertEqual(len(self._box), 2)
-        keys.append(self._box.add(email.message_from_string(_sample_message)))
-        self.assertEqual(len(self._box), 3)
-        keys.append(self._box.add(StringIO.StringIO(_sample_message)))
-        self.assertEqual(len(self._box), 4)
-        keys.append(self._box.add(_sample_message))
-        self.assertEqual(len(self._box), 5)
-        self.assertEqual(self._box.get_string(keys[0]), self._template % 0)
-        for i in (1, 2, 3, 4):
-            self._check_sample(self._box[keys[i]])
-
-    def test_remove(self):
-        # Remove messages using remove()
-        self._test_remove_or_delitem(self._box.remove)
-
-    def test_delitem(self):
-        # Remove messages using __delitem__()
-        self._test_remove_or_delitem(self._box.__delitem__)
-
-    def _test_remove_or_delitem(self, method):
-        # (Used by test_remove() and test_delitem().)
-        key0 = self._box.add(self._template % 0)
-        key1 = self._box.add(self._template % 1)
-        self.assertEqual(len(self._box), 2)
-        method(key0)
-        l = len(self._box)
-        self.assertEqual(l, 1)
-        self.assertRaises(KeyError, lambda: self._box[key0])
-        self.assertRaises(KeyError, lambda: method(key0))
-        self.assertEqual(self._box.get_string(key1), self._template % 1)
-        key2 = self._box.add(self._template % 2)
-        self.assertEqual(len(self._box), 2)
-        method(key2)
-        l = len(self._box)
-        self.assertEqual(l, 1)
-        self.assertRaises(KeyError, lambda: self._box[key2])
-        self.assertRaises(KeyError, lambda: method(key2))
-        self.assertEqual(self._box.get_string(key1), self._template % 1)
-        method(key1)
-        self.assertEqual(len(self._box), 0)
-        self.assertRaises(KeyError, lambda: self._box[key1])
-        self.assertRaises(KeyError, lambda: method(key1))
-
-    def test_discard(self, repetitions=10):
-        # Discard messages
-        key0 = self._box.add(self._template % 0)
-        key1 = self._box.add(self._template % 1)
-        self.assertEqual(len(self._box), 2)
-        self._box.discard(key0)
-        self.assertEqual(len(self._box), 1)
-        self.assertRaises(KeyError, lambda: self._box[key0])
-        self._box.discard(key0)
-        self.assertEqual(len(self._box), 1)
-        self.assertRaises(KeyError, lambda: self._box[key0])
-
-    def test_get(self):
-        # Retrieve messages using get()
-        key0 = self._box.add(self._template % 0)
-        msg = self._box.get(key0)
-        self.assertEqual(msg['from'], 'foo')
-        self.assertEqual(msg.get_payload(), '0')
-        self.assertIs(self._box.get('foo'), None)
-        self.assertFalse(self._box.get('foo', False))
-        self._box.close()
-        self._box = self._factory(self._path, factory=rfc822.Message)
-        key1 = self._box.add(self._template % 1)
-        msg = self._box.get(key1)
-        self.assertEqual(msg['from'], 'foo')
-        self.assertEqual(msg.fp.read(), '1')
-
-    def test_getitem(self):
-        # Retrieve message using __getitem__()
-        key0 = self._box.add(self._template % 0)
-        msg = self._box[key0]
-        self.assertEqual(msg['from'], 'foo')
-        self.assertEqual(msg.get_payload(), '0')
-        self.assertRaises(KeyError, lambda: self._box['foo'])
-        self._box.discard(key0)
-        self.assertRaises(KeyError, lambda: self._box[key0])
-
-    def test_get_message(self):
-        # Get Message representations of messages
-        key0 = self._box.add(self._template % 0)
-        key1 = self._box.add(_sample_message)
-        msg0 = self._box.get_message(key0)
-        self.assertIsInstance(msg0, mailbox.Message)
-        self.assertEqual(msg0['from'], 'foo')
-        self.assertEqual(msg0.get_payload(), '0')
-        self._check_sample(self._box.get_message(key1))
-
-    def test_get_string(self):
-        # Get string representations of messages
-        key0 = self._box.add(self._template % 0)
-        key1 = self._box.add(_sample_message)
-        self.assertEqual(self._box.get_string(key0), self._template % 0)
-        self.assertEqual(self._box.get_string(key1), _sample_message)
-
-    def test_get_file(self):
-        # Get file representations of messages
-        key0 = self._box.add(self._template % 0)
-        key1 = self._box.add(_sample_message)
-        self.assertEqual(self._box.get_file(key0).read().replace(os.linesep, '\n'),
-                         self._template % 0)
-        self.assertEqual(self._box.get_file(key1).read().replace(os.linesep, '\n'),
-                         _sample_message)
-
-    def test_iterkeys(self):
-        # Get keys using iterkeys()
-        self._check_iteration(self._box.iterkeys, do_keys=True, do_values=False)
-
-    def test_keys(self):
-        # Get keys using keys()
-        self._check_iteration(self._box.keys, do_keys=True, do_values=False)
-
-    def test_itervalues(self):
-        # Get values using itervalues()
-        self._check_iteration(self._box.itervalues, do_keys=False,
-                              do_values=True)
-
-    def test_iter(self):
-        # Get values using __iter__()
-        self._check_iteration(self._box.__iter__, do_keys=False,
-                              do_values=True)
-
-    def test_values(self):
-        # Get values using values()
-        self._check_iteration(self._box.values, do_keys=False, do_values=True)
-
-    def test_iteritems(self):
-        # Get keys and values using iteritems()
-        self._check_iteration(self._box.iteritems, do_keys=True,
-                              do_values=True)
-
-    def test_items(self):
-        # Get keys and values using items()
-        self._check_iteration(self._box.items, do_keys=True, do_values=True)
-
-    def _check_iteration(self, method, do_keys, do_values, repetitions=10):
-        for value in method():
-            self.fail("Not empty")
-        keys, values = [], []
-        for i in xrange(repetitions):
-            keys.append(self._box.add(self._template % i))
-            values.append(self._template % i)
-        if do_keys and not do_values:
-            returned_keys = list(method())
-        elif do_values and not do_keys:
-            returned_values = list(method())
-        else:
-            returned_keys, returned_values = [], []
-            for key, value in method():
-                returned_keys.append(key)
-                returned_values.append(value)
-        if do_keys:
-            self.assertEqual(len(keys), len(returned_keys))
-            self.assertEqual(set(keys), set(returned_keys))
-        if do_values:
-            count = 0
-            for value in returned_values:
-                self.assertEqual(value['from'], 'foo')
-                self.assertTrue(int(value.get_payload()) < repetitions,
-                                (value.get_payload(), repetitions))
-                count += 1
-            self.assertEqual(len(values), count)
-
-    def test_has_key(self):
-        # Check existence of keys using has_key()
-        self._test_has_key_or_contains(self._box.has_key)
-
-    def test_contains(self):
-        # Check existence of keys using __contains__()
-        self._test_has_key_or_contains(self._box.__contains__)
-
-    def _test_has_key_or_contains(self, method):
-        # (Used by test_has_key() and test_contains().)
-        self.assertFalse(method('foo'))
-        key0 = self._box.add(self._template % 0)
-        self.assertTrue(method(key0))
-        self.assertFalse(method('foo'))
-        key1 = self._box.add(self._template % 1)
-        self.assertTrue(method(key1))
-        self.assertTrue(method(key0))
-        self.assertFalse(method('foo'))
-        self._box.remove(key0)
-        self.assertFalse(method(key0))
-        self.assertTrue(method(key1))
-        self.assertFalse(method('foo'))
-        self._box.remove(key1)
-        self.assertFalse(method(key1))
-        self.assertFalse(method(key0))
-        self.assertFalse(method('foo'))
-
-    def test_len(self, repetitions=10):
-        # Get message count
-        keys = []
-        for i in xrange(repetitions):
-            self.assertEqual(len(self._box), i)
-            keys.append(self._box.add(self._template % i))
-            self.assertEqual(len(self._box),  i + 1)
-        for i in xrange(repetitions):
-            self.assertEqual(len(self._box), repetitions - i)
-            self._box.remove(keys[i])
-            self.assertEqual(len(self._box), repetitions - i - 1)
-
-    def test_set_item(self):
-        # Modify messages using __setitem__()
-        key0 = self._box.add(self._template % 'original 0')
-        self.assertEqual(self._box.get_string(key0),
-                         self._template % 'original 0')
-        key1 = self._box.add(self._template % 'original 1')
-        self.assertEqual(self._box.get_string(key1),
-                         self._template % 'original 1')
-        self._box[key0] = self._template % 'changed 0'
-        self.assertEqual(self._box.get_string(key0),
-                         self._template % 'changed 0')
-        self._box[key1] = self._template % 'changed 1'
-        self.assertEqual(self._box.get_string(key1),
-                         self._template % 'changed 1')
-        self._box[key0] = _sample_message
-        self._check_sample(self._box[key0])
-        self._box[key1] = self._box[key0]
-        self._check_sample(self._box[key1])
-        self._box[key0] = self._template % 'original 0'
-        self.assertEqual(self._box.get_string(key0),
-                         self._template % 'original 0')
-        self._check_sample(self._box[key1])
-        self.assertRaises(KeyError,
-                          lambda: self._box.__setitem__('foo', 'bar'))
-        self.assertRaises(KeyError, lambda: self._box['foo'])
-        self.assertEqual(len(self._box), 2)
-
-    def test_clear(self, iterations=10):
-        # Remove all messages using clear()
-        keys = []
-        for i in xrange(iterations):
-            self._box.add(self._template % i)
-        for i, key in enumerate(keys):
-            self.assertEqual(self._box.get_string(key), self._template % i)
-        self._box.clear()
-        self.assertEqual(len(self._box), 0)
-        for i, key in enumerate(keys):
-            self.assertRaises(KeyError, lambda: self._box.get_string(key))
-
-    def test_pop(self):
-        # Get and remove a message using pop()
-        key0 = self._box.add(self._template % 0)
-        self.assertIn(key0, self._box)
-        key1 = self._box.add(self._template % 1)
-        self.assertIn(key1, self._box)
-        self.assertEqual(self._box.pop(key0).get_payload(), '0')
-        self.assertNotIn(key0, self._box)
-        self.assertIn(key1, self._box)
-        key2 = self._box.add(self._template % 2)
-        self.assertIn(key2, self._box)
-        self.assertEqual(self._box.pop(key2).get_payload(), '2')
-        self.assertNotIn(key2, self._box)
-        self.assertIn(key1, self._box)
-        self.assertEqual(self._box.pop(key1).get_payload(), '1')
-        self.assertNotIn(key1, self._box)
-        self.assertEqual(len(self._box), 0)
-
-    def test_popitem(self, iterations=10):
-        # Get and remove an arbitrary (key, message) using popitem()
-        keys = []
-        for i in xrange(10):
-            keys.append(self._box.add(self._template % i))
-        seen = []
-        for i in xrange(10):
-            key, msg = self._box.popitem()
-            self.assertIn(key, keys)
-            self.assertNotIn(key, seen)
-            seen.append(key)
-            self.assertEqual(int(msg.get_payload()), keys.index(key))
-        self.assertEqual(len(self._box), 0)
-        for key in keys:
-            self.assertRaises(KeyError, lambda: self._box[key])
-
-    def test_update(self):
-        # Modify multiple messages using update()
-        key0 = self._box.add(self._template % 'original 0')
-        key1 = self._box.add(self._template % 'original 1')
-        key2 = self._box.add(self._template % 'original 2')
-        self._box.update({key0: self._template % 'changed 0',
-                          key2: _sample_message})
-        self.assertEqual(len(self._box), 3)
-        self.assertEqual(self._box.get_string(key0),
-                         self._template % 'changed 0')
-        self.assertEqual(self._box.get_string(key1),
-                         self._template % 'original 1')
-        self._check_sample(self._box[key2])
-        self._box.update([(key2, self._template % 'changed 2'),
-                    (key1, self._template % 'changed 1'),
-                    (key0, self._template % 'original 0')])
-        self.assertEqual(len(self._box), 3)
-        self.assertEqual(self._box.get_string(key0),
-                         self._template % 'original 0')
-        self.assertEqual(self._box.get_string(key1),
-                         self._template % 'changed 1')
-        self.assertEqual(self._box.get_string(key2),
-                         self._template % 'changed 2')
-        self.assertRaises(KeyError,
-                          lambda: self._box.update({'foo': 'bar',
-                                          key0: self._template % "changed 0"}))
-        self.assertEqual(len(self._box), 3)
-        self.assertEqual(self._box.get_string(key0),
-                         self._template % "changed 0")
-        self.assertEqual(self._box.get_string(key1),
-                         self._template % "changed 1")
-        self.assertEqual(self._box.get_string(key2),
-                         self._template % "changed 2")
-
-    def test_flush(self):
-        # Write changes to disk
-        self._test_flush_or_close(self._box.flush, True)
-
-    def test_lock_unlock(self):
-        # Lock and unlock the mailbox
-        self.assertFalse(os.path.exists(self._get_lock_path()))
-        self._box.lock()
-        self.assertTrue(os.path.exists(self._get_lock_path()))
-        self._box.unlock()
-        self.assertFalse(os.path.exists(self._get_lock_path()))
-
-    def test_close(self):
-        # Close mailbox and flush changes to disk
-        self._test_flush_or_close(self._box.close, False)
-
-    def _test_flush_or_close(self, method, should_call_close):
-        contents = [self._template % i for i in xrange(3)]
-        self._box.add(contents[0])
-        self._box.add(contents[1])
-        self._box.add(contents[2])
-        method()
-        if should_call_close:
-            self._box.close()
-        self._box = self._factory(self._path)
-        keys = self._box.keys()
-        self.assertEqual(len(keys), 3)
-        for key in keys:
-            self.assertIn(self._box.get_string(key), contents)
-
-    def test_dump_message(self):
-        # Write message representations to disk
-        for input in (email.message_from_string(_sample_message),
-                      _sample_message, StringIO.StringIO(_sample_message)):
-            output = StringIO.StringIO()
-            self._box._dump_message(input, output)
-            self.assertEqual(output.getvalue(),
-                             _sample_message.replace('\n', os.linesep))
-        output = StringIO.StringIO()
-        self.assertRaises(TypeError,
-                          lambda: self._box._dump_message(None, output))
-
-    def _get_lock_path(self):
-        # Return the path of the dot lock file. May be overridden.
-        return self._path + '.lock'
-
-
-class TestMailboxSuperclass(TestBase):
-
-    def test_notimplemented(self):
-        # Test that all Mailbox methods raise NotImplementedException.
-        box = mailbox.Mailbox('path')
-        self.assertRaises(NotImplementedError, lambda: box.add(''))
-        self.assertRaises(NotImplementedError, lambda: box.remove(''))
-        self.assertRaises(NotImplementedError, lambda: box.__delitem__(''))
-        self.assertRaises(NotImplementedError, lambda: box.discard(''))
-        self.assertRaises(NotImplementedError, lambda: box.__setitem__('', ''))
-        self.assertRaises(NotImplementedError, lambda: box.iterkeys())
-        self.assertRaises(NotImplementedError, lambda: box.keys())
-        self.assertRaises(NotImplementedError, lambda: box.itervalues().next())
-        self.assertRaises(NotImplementedError, lambda: box.__iter__().next())
-        self.assertRaises(NotImplementedError, lambda: box.values())
-        self.assertRaises(NotImplementedError, lambda: box.iteritems().next())
-        self.assertRaises(NotImplementedError, lambda: box.items())
-        self.assertRaises(NotImplementedError, lambda: box.get(''))
-        self.assertRaises(NotImplementedError, lambda: box.__getitem__(''))
-        self.assertRaises(NotImplementedError, lambda: box.get_message(''))
-        self.assertRaises(NotImplementedError, lambda: box.get_string(''))
-        self.assertRaises(NotImplementedError, lambda: box.get_file(''))
-        self.assertRaises(NotImplementedError, lambda: box.has_key(''))
-        self.assertRaises(NotImplementedError, lambda: box.__contains__(''))
-        self.assertRaises(NotImplementedError, lambda: box.__len__())
-        self.assertRaises(NotImplementedError, lambda: box.clear())
-        self.assertRaises(NotImplementedError, lambda: box.pop(''))
-        self.assertRaises(NotImplementedError, lambda: box.popitem())
-        self.assertRaises(NotImplementedError, lambda: box.update((('', ''),)))
-        self.assertRaises(NotImplementedError, lambda: box.flush())
-        self.assertRaises(NotImplementedError, lambda: box.lock())
-        self.assertRaises(NotImplementedError, lambda: box.unlock())
-        self.assertRaises(NotImplementedError, lambda: box.close())
-
-
-class TestMaildir(TestMailbox):
-
-    _factory = lambda self, path, factory=None: mailbox.Maildir(path, factory)
-
-    def setUp(self):
-        TestMailbox.setUp(self)
-        if os.name in ('nt', 'os2') or sys.platform == 'cygwin':
-            self._box.colon = '!'
-
-    def test_add_MM(self):
-        # Add a MaildirMessage instance
-        msg = mailbox.MaildirMessage(self._template % 0)
-        msg.set_subdir('cur')
-        msg.set_info('foo')
-        key = self._box.add(msg)
-        self.assertTrue(os.path.exists(os.path.join(self._path, 'cur', '%s%sfoo' %
-                                                 (key, self._box.colon))))
-
-    def test_get_MM(self):
-        # Get a MaildirMessage instance
-        msg = mailbox.MaildirMessage(self._template % 0)
-        msg.set_subdir('cur')
-        msg.set_flags('RF')
-        key = self._box.add(msg)
-        msg_returned = self._box.get_message(key)
-        self.assertIsInstance(msg_returned, mailbox.MaildirMessage)
-        self.assertEqual(msg_returned.get_subdir(), 'cur')
-        self.assertEqual(msg_returned.get_flags(), 'FR')
-
-    def test_set_MM(self):
-        # Set with a MaildirMessage instance
-        msg0 = mailbox.MaildirMessage(self._template % 0)
-        msg0.set_flags('TP')
-        key = self._box.add(msg0)
-        msg_returned = self._box.get_message(key)
-        self.assertEqual(msg_returned.get_subdir(), 'new')
-        self.assertEqual(msg_returned.get_flags(), 'PT')
-        msg1 = mailbox.MaildirMessage(self._template % 1)
-        self._box[key] = msg1
-        msg_returned = self._box.get_message(key)
-        self.assertEqual(msg_returned.get_subdir(), 'new')
-        self.assertEqual(msg_returned.get_flags(), '')
-        self.assertEqual(msg_returned.get_payload(), '1')
-        msg2 = mailbox.MaildirMessage(self._template % 2)
-        msg2.set_info('2,S')
-        self._box[key] = msg2
-        self._box[key] = self._template % 3
-        msg_returned = self._box.get_message(key)
-        self.assertEqual(msg_returned.get_subdir(), 'new')
-        self.assertEqual(msg_returned.get_flags(), 'S')
-        self.assertEqual(msg_returned.get_payload(), '3')
-
-    def test_consistent_factory(self):
-        # Add a message.
-        msg = mailbox.MaildirMessage(self._template % 0)
-        msg.set_subdir('cur')
-        msg.set_flags('RF')
-        key = self._box.add(msg)
-
-        # Create new mailbox with
-        class FakeMessage(mailbox.MaildirMessage):
-            pass
-        box = mailbox.Maildir(self._path, factory=FakeMessage)
-        box.colon = self._box.colon
-        msg2 = box.get_message(key)
-        self.assertIsInstance(msg2, FakeMessage)
-
-    def test_initialize_new(self):
-        # Initialize a non-existent mailbox
-        self.tearDown()
-        self._box = mailbox.Maildir(self._path)
-        self._check_basics(factory=rfc822.Message)
-        self._delete_recursively(self._path)
-        self._box = self._factory(self._path, factory=None)
-        self._check_basics()
-
-    def test_initialize_existing(self):
-        # Initialize an existing mailbox
-        self.tearDown()
-        for subdir in '', 'tmp', 'new', 'cur':
-            os.mkdir(os.path.normpath(os.path.join(self._path, subdir)))
-        self._box = mailbox.Maildir(self._path)
-        self._check_basics(factory=rfc822.Message)
-        self._box = mailbox.Maildir(self._path, factory=None)
-        self._check_basics()
-
-    def _check_basics(self, factory=None):
-        # (Used by test_open_new() and test_open_existing().)
-        self.assertEqual(self._box._path, os.path.abspath(self._path))
-        self.assertEqual(self._box._factory, factory)
-        for subdir in '', 'tmp', 'new', 'cur':
-            path = os.path.join(self._path, subdir)
-            mode = os.stat(path)[stat.ST_MODE]
-            self.assertTrue(stat.S_ISDIR(mode), "Not a directory: '%s'" % path)
-
-    def test_list_folders(self):
-        # List folders
-        self._box.add_folder('one')
-        self._box.add_folder('two')
-        self._box.add_folder('three')
-        self.assertEqual(len(self._box.list_folders()), 3)
-        self.assertEqual(set(self._box.list_folders()),
-                         set(('one', 'two', 'three')))
-
-    def test_get_folder(self):
-        # Open folders
-        self._box.add_folder('foo.bar')
-        folder0 = self._box.get_folder('foo.bar')
-        folder0.add(self._template % 'bar')
-        self.assertTrue(os.path.isdir(os.path.join(self._path, '.foo.bar')))
-        folder1 = self._box.get_folder('foo.bar')
-        self.assertEqual(folder1.get_string(folder1.keys()[0]),
-                         self._template % 'bar')
-
-    def test_add_and_remove_folders(self):
-        # Delete folders
-        self._box.add_folder('one')
-        self._box.add_folder('two')
-        self.assertEqual(len(self._box.list_folders()), 2)
-        self.assertEqual(set(self._box.list_folders()), set(('one', 'two')))
-        self._box.remove_folder('one')
-        self.assertEqual(len(self._box.list_folders()), 1)
-        self.assertEqual(set(self._box.list_folders()), set(('two',)))
-        self._box.add_folder('three')
-        self.assertEqual(len(self._box.list_folders()), 2)
-        self.assertEqual(set(self._box.list_folders()), set(('two', 'three')))
-        self._box.remove_folder('three')
-        self.assertEqual(len(self._box.list_folders()), 1)
-        self.assertEqual(set(self._box.list_folders()), set(('two',)))
-        self._box.remove_folder('two')
-        self.assertEqual(len(self._box.list_folders()), 0)
-        self.assertEqual(self._box.list_folders(), [])
-
-    def test_clean(self):
-        # Remove old files from 'tmp'
-        foo_path = os.path.join(self._path, 'tmp', 'foo')
-        bar_path = os.path.join(self._path, 'tmp', 'bar')
-        with open(foo_path, 'w') as f:
-            f.write("@")
-        with open(bar_path, 'w') as f:
-            f.write("@")
-        self._box.clean()
-        self.assertTrue(os.path.exists(foo_path))
-        self.assertTrue(os.path.exists(bar_path))
-        foo_stat = os.stat(foo_path)
-        os.utime(foo_path, (time.time() - 129600 - 2,
-                            foo_stat.st_mtime))
-        self._box.clean()
-        self.assertFalse(os.path.exists(foo_path))
-        self.assertTrue(os.path.exists(bar_path))
-
-    def test_create_tmp(self, repetitions=10):
-        # Create files in tmp directory
-        hostname = socket.gethostname()
-        if '/' in hostname:
-            hostname = hostname.replace('/', r'\057')
-        if ':' in hostname:
-            hostname = hostname.replace(':', r'\072')
-        pid = os.getpid()
-        pattern = re.compile(r"(?P<time>\d+)\.M(?P<M>\d{1,6})P(?P<P>\d+)"
-                             r"Q(?P<Q>\d+)\.(?P<host>[^:/]+)")
-        previous_groups = None
-        for x in xrange(repetitions):
-            tmp_file = self._box._create_tmp()
-            head, tail = os.path.split(tmp_file.name)
-            self.assertEqual(head, os.path.abspath(os.path.join(self._path,
-                                                                "tmp")),
-                             "File in wrong location: '%s'" % head)
-            match = pattern.match(tail)
-            self.assertTrue(match is not None, "Invalid file name: '%s'" % tail)
-            groups = match.groups()
-            if previous_groups is not None:
-                self.assertTrue(int(groups[0] >= previous_groups[0]),
-                             "Non-monotonic seconds: '%s' before '%s'" %
-                             (previous_groups[0], groups[0]))
-                self.assertTrue(int(groups[1] >= previous_groups[1]) or
-                             groups[0] != groups[1],
-                             "Non-monotonic milliseconds: '%s' before '%s'" %
-                             (previous_groups[1], groups[1]))
-                self.assertTrue(int(groups[2]) == pid,
-                             "Process ID mismatch: '%s' should be '%s'" %
-                             (groups[2], pid))
-                self.assertTrue(int(groups[3]) == int(previous_groups[3]) + 1,
-                             "Non-sequential counter: '%s' before '%s'" %
-                             (previous_groups[3], groups[3]))
-                self.assertTrue(groups[4] == hostname,
-                             "Host name mismatch: '%s' should be '%s'" %
-                             (groups[4], hostname))
-            previous_groups = groups
-            tmp_file.write(_sample_message)
-            tmp_file.seek(0)
-            self.assertTrue(tmp_file.read() == _sample_message)
-            tmp_file.close()
-        file_count = len(os.listdir(os.path.join(self._path, "tmp")))
-        self.assertTrue(file_count == repetitions,
-                     "Wrong file count: '%s' should be '%s'" %
-                     (file_count, repetitions))
-
-    def test_refresh(self):
-        # Update the table of contents
-        self.assertEqual(self._box._toc, {})
-        key0 = self._box.add(self._template % 0)
-        key1 = self._box.add(self._template % 1)
-        self.assertEqual(self._box._toc, {})
-        self._box._refresh()
-        self.assertEqual(self._box._toc, {key0: os.path.join('new', key0),
-                                          key1: os.path.join('new', key1)})
-        key2 = self._box.add(self._template % 2)
-        self.assertEqual(self._box._toc, {key0: os.path.join('new', key0),
-                                          key1: os.path.join('new', key1)})
-        self._box._refresh()
-        self.assertEqual(self._box._toc, {key0: os.path.join('new', key0),
-                                          key1: os.path.join('new', key1),
-                                          key2: os.path.join('new', key2)})
-
-    def test_lookup(self):
-        # Look up message subpaths in the TOC
-        self.assertRaises(KeyError, lambda: self._box._lookup('foo'))
-        key0 = self._box.add(self._template % 0)
-        self.assertEqual(self._box._lookup(key0), os.path.join('new', key0))
-        os.remove(os.path.join(self._path, 'new', key0))
-        self.assertEqual(self._box._toc, {key0: os.path.join('new', key0)})
-        # Be sure that the TOC is read back from disk (see issue #6896
-        # about bad mtime behaviour on some systems).
-        self._box.flush()
-        self.assertRaises(KeyError, lambda: self._box._lookup(key0))
-        self.assertEqual(self._box._toc, {})
-
-    def test_lock_unlock(self):
-        # Lock and unlock the mailbox. For Maildir, this does nothing.
-        self._box.lock()
-        self._box.unlock()
-
-    def test_folder (self):
-        # Test for bug #1569790: verify that folders returned by .get_folder()
-        # use the same factory function.
-        def dummy_factory (s):
-            return None
-        box = self._factory(self._path, factory=dummy_factory)
-        folder = box.add_folder('folder1')
-        self.assertIs(folder._factory, dummy_factory)
-
-        folder1_alias = box.get_folder('folder1')
-        self.assertIs(folder1_alias._factory, dummy_factory)
-
-    def test_directory_in_folder (self):
-        # Test that mailboxes still work if there's a stray extra directory
-        # in a folder.
-        for i in range(10):
-            self._box.add(mailbox.Message(_sample_message))
-
-        # Create a stray directory
-        os.mkdir(os.path.join(self._path, 'cur', 'stray-dir'))
-
-        # Check that looping still works with the directory present.
-        for msg in self._box:
-            pass
-
-    def test_file_permissions(self):
-        # Verify that message files are created without execute permissions
-        if not hasattr(os, "stat") or not hasattr(os, "umask"):
-            return
-        msg = mailbox.MaildirMessage(self._template % 0)
-        orig_umask = os.umask(0)
-        try:
-            key = self._box.add(msg)
-        finally:
-            os.umask(orig_umask)
-        path = os.path.join(self._path, self._box._lookup(key))
-        mode = os.stat(path).st_mode
-        self.assertEqual(mode & 0111, 0)
-
-    def test_folder_file_perms(self):
-        # From bug #3228, we want to verify that the file created inside a Maildir
-        # subfolder isn't marked as executable.
-        if not hasattr(os, "stat") or not hasattr(os, "umask"):
-            return
-
-        orig_umask = os.umask(0)
-        try:
-            subfolder = self._box.add_folder('subfolder')
-        finally:
-            os.umask(orig_umask)
-
-        path = os.path.join(subfolder._path, 'maildirfolder')
-        st = os.stat(path)
-        perms = st.st_mode
-        self.assertFalse((perms & 0111)) # Execute bits should all be off.
-
-    def test_reread(self):
-
-        # Put the last modified times more than two seconds into the past
-        # (because mtime may have only a two second granularity).
-        for subdir in ('cur', 'new'):
-            os.utime(os.path.join(self._box._path, subdir),
-                     (time.time()-5,)*2)
-
-        # Because mtime has a two second granularity in worst case (FAT), a
-        # refresh is done unconditionally if called for within
-        # two-second-plus-a-bit of the last one, just in case the mbox has
-        # changed; so now we have to wait for that interval to expire.
-        time.sleep(2.01 + self._box._skewfactor)
-
-        # Re-reading causes the ._toc attribute to be assigned a new dictionary
-        # object, so we'll check that the ._toc attribute isn't a different
-        # object.
-        orig_toc = self._box._toc
-        def refreshed():
-            return self._box._toc is not orig_toc
-
-        self._box._refresh()
-        self.assertFalse(refreshed())
-
-        # Now, write something into cur and remove it.  This changes
-        # the mtime and should cause a re-read.
-        filename = os.path.join(self._path, 'cur', 'stray-file')
-        f = open(filename, 'w')
-        f.close()
-        os.unlink(filename)
-        self._box._refresh()
-        self.assertTrue(refreshed())
-
-class _TestMboxMMDF(TestMailbox):
-
-    def tearDown(self):
-        self._box.close()
-        self._delete_recursively(self._path)
-        for lock_remnant in glob.glob(self._path + '.*'):
-            test_support.unlink(lock_remnant)
-
-    def test_add_from_string(self):
-        # Add a string starting with 'From ' to the mailbox
-        key = self._box.add('From foo@bar blah\nFrom: foo\n\n0')
-        self.assertEqual(self._box[key].get_from(), 'foo@bar blah')
-        self.assertEqual(self._box[key].get_payload(), '0')
-
-    def test_add_mbox_or_mmdf_message(self):
-        # Add an mboxMessage or MMDFMessage
-        for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
-            msg = class_('From foo@bar blah\nFrom: foo\n\n0')
-            key = self._box.add(msg)
-
-    def test_open_close_open(self):
-        # Open and inspect previously-created mailbox
-        values = [self._template % i for i in xrange(3)]
-        for value in values:
-            self._box.add(value)
-        self._box.close()
-        mtime = os.path.getmtime(self._path)
-        self._box = self._factory(self._path)
-        self.assertEqual(len(self._box), 3)
-        for key in self._box.iterkeys():
-            self.assertIn(self._box.get_string(key), values)
-        self._box.close()
-        self.assertEqual(mtime, os.path.getmtime(self._path))
-
-    def test_add_and_close(self):
-        # Verifying that closing a mailbox doesn't change added items
-        self._box.add(_sample_message)
-        for i in xrange(3):
-            self._box.add(self._template % i)
-        self._box.add(_sample_message)
-        self._box._file.flush()
-        self._box._file.seek(0)
-        contents = self._box._file.read()
-        self._box.close()
-        with open(self._path, 'rb') as f:
-            self.assertEqual(contents, f.read())
-        self._box = self._factory(self._path)
-
-    def test_lock_conflict(self):
-        # Fork off a subprocess that will lock the file for 2 seconds,
-        # unlock it, and then exit.
-        if not hasattr(os, 'fork'):
-            return
-        pid = os.fork()
-        if pid == 0:
-            # In the child, lock the mailbox.
-            self._box.lock()
-            time.sleep(2)
-            self._box.unlock()
-            os._exit(0)
-
-        # In the parent, sleep a bit to give the child time to acquire
-        # the lock.
-        time.sleep(0.5)
-        try:
-            self.assertRaises(mailbox.ExternalClashError,
-                              self._box.lock)
-        finally:
-            # Wait for child to exit.  Locking should now succeed.
-            exited_pid, status = os.waitpid(pid, 0)
-
-        self._box.lock()
-        self._box.unlock()
-
-    def test_relock(self):
-        # Test case for bug #1575506: the mailbox class was locking the
-        # wrong file object in its flush() method.
-        msg = "Subject: sub\n\nbody\n"
-        key1 = self._box.add(msg)
-        self._box.flush()
-        self._box.close()
-
-        self._box = self._factory(self._path)
-        self._box.lock()
-        key2 = self._box.add(msg)
-        self._box.flush()
-        self.assertTrue(self._box._locked)
-        self._box.close()
-
-
-class TestMbox(_TestMboxMMDF):
-
-    _factory = lambda self, path, factory=None: mailbox.mbox(path, factory)
-
-    def test_file_perms(self):
-        # From bug #3228, we want to verify that the mailbox file isn't executable,
-        # even if the umask is set to something that would leave executable bits set.
-        # We only run this test on platforms that support umask.
-        if hasattr(os, 'umask') and hasattr(os, 'stat'):
-            try:
-                old_umask = os.umask(0077)
-                self._box.close()
-                os.unlink(self._path)
-                self._box = mailbox.mbox(self._path, create=True)
-                self._box.add('')
-                self._box.close()
-            finally:
-                os.umask(old_umask)
-
-            st = os.stat(self._path)
-            perms = st.st_mode
-            self.assertFalse((perms & 0111)) # Execute bits should all be off.
-
-class TestMMDF(_TestMboxMMDF):
-
-    _factory = lambda self, path, factory=None: mailbox.MMDF(path, factory)
-
-
-class TestMH(TestMailbox):
-
-    _factory = lambda self, path, factory=None: mailbox.MH(path, factory)
-
-    def test_list_folders(self):
-        # List folders
-        self._box.add_folder('one')
-        self._box.add_folder('two')
-        self._box.add_folder('three')
-        self.assertEqual(len(self._box.list_folders()), 3)
-        self.assertEqual(set(self._box.list_folders()),
-                         set(('one', 'two', 'three')))
-
-    def test_get_folder(self):
-        # Open folders
-        def dummy_factory (s):
-            return None
-        self._box = self._factory(self._path, dummy_factory)
-
-        new_folder = self._box.add_folder('foo.bar')
-        folder0 = self._box.get_folder('foo.bar')
-        folder0.add(self._template % 'bar')
-        self.assertTrue(os.path.isdir(os.path.join(self._path, 'foo.bar')))
-        folder1 = self._box.get_folder('foo.bar')
-        self.assertEqual(folder1.get_string(folder1.keys()[0]),
-                         self._template % 'bar')
-
-        # Test for bug #1569790: verify that folders returned by .get_folder()
-        # use the same factory function.
-        self.assertIs(new_folder._factory, self._box._factory)
-        self.assertIs(folder0._factory, self._box._factory)
-
-    def test_add_and_remove_folders(self):
-        # Delete folders
-        self._box.add_folder('one')
-        self._box.add_folder('two')
-        self.assertEqual(len(self._box.list_folders()), 2)
-        self.assertEqual(set(self._box.list_folders()), set(('one', 'two')))
-        self._box.remove_folder('one')
-        self.assertEqual(len(self._box.list_folders()), 1)
-        self.assertEqual(set(self._box.list_folders()), set(('two', )))
-        self._box.add_folder('three')
-        self.assertEqual(len(self._box.list_folders()), 2)
-        self.assertEqual(set(self._box.list_folders()), set(('two', 'three')))
-        self._box.remove_folder('three')
-        self.assertEqual(len(self._box.list_folders()), 1)
-        self.assertEqual(set(self._box.list_folders()), set(('two', )))
-        self._box.remove_folder('two')
-        self.assertEqual(len(self._box.list_folders()), 0)
-        self.assertEqual(self._box.list_folders(), [])
-
-    def test_sequences(self):
-        # Get and set sequences
-        self.assertEqual(self._box.get_sequences(), {})
-        msg0 = mailbox.MHMessage(self._template % 0)
-        msg0.add_sequence('foo')
-        key0 = self._box.add(msg0)
-        self.assertEqual(self._box.get_sequences(), {'foo':[key0]})
-        msg1 = mailbox.MHMessage(self._template % 1)
-        msg1.set_sequences(['bar', 'replied', 'foo'])
-        key1 = self._box.add(msg1)
-        self.assertEqual(self._box.get_sequences(),
-                         {'foo':[key0, key1], 'bar':[key1], 'replied':[key1]})
-        msg0.set_sequences(['flagged'])
-        self._box[key0] = msg0
-        self.assertEqual(self._box.get_sequences(),
-                         {'foo':[key1], 'bar':[key1], 'replied':[key1],
-                          'flagged':[key0]})
-        self._box.remove(key1)
-        self.assertEqual(self._box.get_sequences(), {'flagged':[key0]})
-
-    def test_issue2625(self):
-        msg0 = mailbox.MHMessage(self._template % 0)
-        msg0.add_sequence('foo')
-        key0 = self._box.add(msg0)
-        refmsg0 = self._box.get_message(key0)
-
-    def test_issue7627(self):
-        msg0 = mailbox.MHMessage(self._template % 0)
-        key0 = self._box.add(msg0)
-        self._box.lock()
-        self._box.remove(key0)
-        self._box.unlock()
-
-    def test_pack(self):
-        # Pack the contents of the mailbox
-        msg0 = mailbox.MHMessage(self._template % 0)
-        msg1 = mailbox.MHMessage(self._template % 1)
-        msg2 = mailbox.MHMessage(self._template % 2)
-        msg3 = mailbox.MHMessage(self._template % 3)
-        msg0.set_sequences(['foo', 'unseen'])
-        msg1.set_sequences(['foo'])
-        msg2.set_sequences(['foo', 'flagged'])
-        msg3.set_sequences(['foo', 'bar', 'replied'])
-        key0 = self._box.add(msg0)
-        key1 = self._box.add(msg1)
-        key2 = self._box.add(msg2)
-        key3 = self._box.add(msg3)
-        self.assertEqual(self._box.get_sequences(),
-                         {'foo':[key0,key1,key2,key3], 'unseen':[key0],
-                          'flagged':[key2], 'bar':[key3], 'replied':[key3]})
-        self._box.remove(key2)
-        self.assertEqual(self._box.get_sequences(),
-                         {'foo':[key0,key1,key3], 'unseen':[key0], 'bar':[key3],
-                          'replied':[key3]})
-        self._box.pack()
-        self.assertEqual(self._box.keys(), [1, 2, 3])
-        key0 = key0
-        key1 = key0 + 1
-        key2 = key1 + 1
-        self.assertEqual(self._box.get_sequences(),
-                     {'foo':[1, 2, 3], 'unseen':[1], 'bar':[3], 'replied':[3]})
-
-        # Test case for packing while holding the mailbox locked.
-        key0 = self._box.add(msg1)
-        key1 = self._box.add(msg1)
-        key2 = self._box.add(msg1)
-        key3 = self._box.add(msg1)
-
-        self._box.remove(key0)
-        self._box.remove(key2)
-        self._box.lock()
-        self._box.pack()
-        self._box.unlock()
-        self.assertEqual(self._box.get_sequences(),
-                         {'foo':[1, 2, 3, 4, 5],
-                          'unseen':[1], 'bar':[3], 'replied':[3]})
-
-    def _get_lock_path(self):
-        return os.path.join(self._path, '.mh_sequences.lock')
-
-
-class TestBabyl(TestMailbox):
-
-    _factory = lambda self, path, factory=None: mailbox.Babyl(path, factory)
-
-    def tearDown(self):
-        self._box.close()
-        self._delete_recursively(self._path)
-        for lock_remnant in glob.glob(self._path + '.*'):
-            test_support.unlink(lock_remnant)
-
-    def test_labels(self):
-        # Get labels from the mailbox
-        self.assertEqual(self._box.get_labels(), [])
-        msg0 = mailbox.BabylMessage(self._template % 0)
-        msg0.add_label('foo')
-        key0 = self._box.add(msg0)
-        self.assertEqual(self._box.get_labels(), ['foo'])
-        msg1 = mailbox.BabylMessage(self._template % 1)
-        msg1.set_labels(['bar', 'answered', 'foo'])
-        key1 = self._box.add(msg1)
-        self.assertEqual(set(self._box.get_labels()), set(['foo', 'bar']))
-        msg0.set_labels(['blah', 'filed'])
-        self._box[key0] = msg0
-        self.assertEqual(set(self._box.get_labels()),
-                         set(['foo', 'bar', 'blah']))
-        self._box.remove(key1)
-        self.assertEqual(set(self._box.get_labels()), set(['blah']))
-
-
-class TestMessage(TestBase):
-
-    _factory = mailbox.Message      # Overridden by subclasses to reuse tests
-
-    def setUp(self):
-        self._path = test_support.TESTFN
-
-    def tearDown(self):
-        self._delete_recursively(self._path)
-
-    def test_initialize_with_eMM(self):
-        # Initialize based on email.message.Message instance
-        eMM = email.message_from_string(_sample_message)
-        msg = self._factory(eMM)
-        self._post_initialize_hook(msg)
-        self._check_sample(msg)
-
-    def test_initialize_with_string(self):
-        # Initialize based on string
-        msg = self._factory(_sample_message)
-        self._post_initialize_hook(msg)
-        self._check_sample(msg)
-
-    def test_initialize_with_file(self):
-        # Initialize based on contents of file
-        with open(self._path, 'w+') as f:
-            f.write(_sample_message)
-            f.seek(0)
-            msg = self._factory(f)
-            self._post_initialize_hook(msg)
-            self._check_sample(msg)
-
-    def test_initialize_with_nothing(self):
-        # Initialize without arguments
-        msg = self._factory()
-        self._post_initialize_hook(msg)
-        self.assertIsInstance(msg, email.message.Message)
-        self.assertIsInstance(msg, mailbox.Message)
-        self.assertIsInstance(msg, self._factory)
-        self.assertEqual(msg.keys(), [])
-        self.assertFalse(msg.is_multipart())
-        self.assertEqual(msg.get_payload(), None)
-
-    def test_initialize_incorrectly(self):
-        # Initialize with invalid argument
-        self.assertRaises(TypeError, lambda: self._factory(object()))
-
-    def test_become_message(self):
-        # Take on the state of another message
-        eMM = email.message_from_string(_sample_message)
-        msg = self._factory()
-        msg._become_message(eMM)
-        self._check_sample(msg)
-
-    def test_explain_to(self):
-        # Copy self's format-specific data to other message formats.
-        # This test is superficial; better ones are in TestMessageConversion.
-        msg = self._factory()
-        for class_ in (mailbox.Message, mailbox.MaildirMessage,
-                       mailbox.mboxMessage, mailbox.MHMessage,
-                       mailbox.BabylMessage, mailbox.MMDFMessage):
-            other_msg = class_()
-            msg._explain_to(other_msg)
-        other_msg = email.message.Message()
-        self.assertRaises(TypeError, lambda: msg._explain_to(other_msg))
-
-    def _post_initialize_hook(self, msg):
-        # Overridden by subclasses to check extra things after initialization
-        pass
-
-
-class TestMaildirMessage(TestMessage):
-
-    _factory = mailbox.MaildirMessage
-
-    def _post_initialize_hook(self, msg):
-        self.assertEqual(msg._subdir, 'new')
-        self.assertEqual(msg._info,'')
-
-    def test_subdir(self):
-        # Use get_subdir() and set_subdir()
-        msg = mailbox.MaildirMessage(_sample_message)
-        self.assertEqual(msg.get_subdir(), 'new')
-        msg.set_subdir('cur')
-        self.assertEqual(msg.get_subdir(), 'cur')
-        msg.set_subdir('new')
-        self.assertEqual(msg.get_subdir(), 'new')
-        self.assertRaises(ValueError, lambda: msg.set_subdir('tmp'))
-        self.assertEqual(msg.get_subdir(), 'new')
-        msg.set_subdir('new')
-        self.assertEqual(msg.get_subdir(), 'new')
-        self._check_sample(msg)
-
-    def test_flags(self):
-        # Use get_flags(), set_flags(), add_flag(), remove_flag()
-        msg = mailbox.MaildirMessage(_sample_message)
-        self.assertEqual(msg.get_flags(), '')
-        self.assertEqual(msg.get_subdir(), 'new')
-        msg.set_flags('F')
-        self.assertEqual(msg.get_subdir(), 'new')
-        self.assertEqual(msg.get_flags(), 'F')
-        msg.set_flags('SDTP')
-        self.assertEqual(msg.get_flags(), 'DPST')
-        msg.add_flag('FT')
-        self.assertEqual(msg.get_flags(), 'DFPST')
-        msg.remove_flag('TDRP')
-        self.assertEqual(msg.get_flags(), 'FS')
-        self.assertEqual(msg.get_subdir(), 'new')
-        self._check_sample(msg)
-
-    def test_date(self):
-        # Use get_date() and set_date()
-        msg = mailbox.MaildirMessage(_sample_message)
-        diff = msg.get_date() - time.time()
-        self.assertTrue(abs(diff) < 60, diff)
-        msg.set_date(0.0)
-        self.assertEqual(msg.get_date(), 0.0)
-
-    def test_info(self):
-        # Use get_info() and set_info()
-        msg = mailbox.MaildirMessage(_sample_message)
-        self.assertEqual(msg.get_info(), '')
-        msg.set_info('1,foo=bar')
-        self.assertEqual(msg.get_info(), '1,foo=bar')
-        self.assertRaises(TypeError, lambda: msg.set_info(None))
-        self._check_sample(msg)
-
-    def test_info_and_flags(self):
-        # Test interaction of info and flag methods
-        msg = mailbox.MaildirMessage(_sample_message)
-        self.assertEqual(msg.get_info(), '')
-        msg.set_flags('SF')
-        self.assertEqual(msg.get_flags(), 'FS')
-        self.assertEqual(msg.get_info(), '2,FS')
-        msg.set_info('1,')
-        self.assertEqual(msg.get_flags(), '')
-        self.assertEqual(msg.get_info(), '1,')
-        msg.remove_flag('RPT')
-        self.assertEqual(msg.get_flags(), '')
-        self.assertEqual(msg.get_info(), '1,')
-        msg.add_flag('D')
-        self.assertEqual(msg.get_flags(), 'D')
-        self.assertEqual(msg.get_info(), '2,D')
-        self._check_sample(msg)
-
-
-class _TestMboxMMDFMessage(TestMessage):
-
-    _factory = mailbox._mboxMMDFMessage
-
-    def _post_initialize_hook(self, msg):
-        self._check_from(msg)
-
-    def test_initialize_with_unixfrom(self):
-        # Initialize with a message that already has a _unixfrom attribute
-        msg = mailbox.Message(_sample_message)
-        msg.set_unixfrom('From foo@bar blah')
-        msg = mailbox.mboxMessage(msg)
-        self.assertEqual(msg.get_from(), 'foo@bar blah')
-
-    def test_from(self):
-        # Get and set "From " line
-        msg = mailbox.mboxMessage(_sample_message)
-        self._check_from(msg)
-        msg.set_from('foo bar')
-        self.assertEqual(msg.get_from(), 'foo bar')
-        msg.set_from('foo@bar', True)
-        self._check_from(msg, 'foo@bar')
-        msg.set_from('blah@temp', time.localtime())
-        self._check_from(msg, 'blah@temp')
-
-    def test_flags(self):
-        # Use get_flags(), set_flags(), add_flag(), remove_flag()
-        msg = mailbox.mboxMessage(_sample_message)
-        self.assertEqual(msg.get_flags(), '')
-        msg.set_flags('F')
-        self.assertEqual(msg.get_flags(), 'F')
-        msg.set_flags('XODR')
-        self.assertEqual(msg.get_flags(), 'RODX')
-        msg.add_flag('FA')
-        self.assertEqual(msg.get_flags(), 'RODFAX')
-        msg.remove_flag('FDXA')
-        self.assertEqual(msg.get_flags(), 'RO')
-        self._check_sample(msg)
-
-    def _check_from(self, msg, sender=None):
-        # Check contents of "From " line
-        if sender is None:
-            sender = "MAILER-DAEMON"
-        self.assertTrue(re.match(sender + r" \w{3} \w{3} [\d ]\d [\d ]\d:\d{2}:"
-                                 r"\d{2} \d{4}", msg.get_from()))
-
-
-class TestMboxMessage(_TestMboxMMDFMessage):
-
-    _factory = mailbox.mboxMessage
-
-
-class TestMHMessage(TestMessage):
-
-    _factory = mailbox.MHMessage
-
-    def _post_initialize_hook(self, msg):
-        self.assertEqual(msg._sequences, [])
-
-    def test_sequences(self):
-        # Get, set, join, and leave sequences
-        msg = mailbox.MHMessage(_sample_message)
-        self.assertEqual(msg.get_sequences(), [])
-        msg.set_sequences(['foobar'])
-        self.assertEqual(msg.get_sequences(), ['foobar'])
-        msg.set_sequences([])
-        self.assertEqual(msg.get_sequences(), [])
-        msg.add_sequence('unseen')
-        self.assertEqual(msg.get_sequences(), ['unseen'])
-        msg.add_sequence('flagged')
-        self.assertEqual(msg.get_sequences(), ['unseen', 'flagged'])
-        msg.add_sequence('flagged')
-        self.assertEqual(msg.get_sequences(), ['unseen', 'flagged'])
-        msg.remove_sequence('unseen')
-        self.assertEqual(msg.get_sequences(), ['flagged'])
-        msg.add_sequence('foobar')
-        self.assertEqual(msg.get_sequences(), ['flagged', 'foobar'])
-        msg.remove_sequence('replied')
-        self.assertEqual(msg.get_sequences(), ['flagged', 'foobar'])
-        msg.set_sequences(['foobar', 'replied'])
-        self.assertEqual(msg.get_sequences(), ['foobar', 'replied'])
-
-
-class TestBabylMessage(TestMessage):
-
-    _factory = mailbox.BabylMessage
-
-    def _post_initialize_hook(self, msg):
-        self.assertEqual(msg._labels, [])
-
-    def test_labels(self):
-        # Get, set, join, and leave labels
-        msg = mailbox.BabylMessage(_sample_message)
-        self.assertEqual(msg.get_labels(), [])
-        msg.set_labels(['foobar'])
-        self.assertEqual(msg.get_labels(), ['foobar'])
-        msg.set_labels([])
-        self.assertEqual(msg.get_labels(), [])
-        msg.add_label('filed')
-        self.assertEqual(msg.get_labels(), ['filed'])
-        msg.add_label('resent')
-        self.assertEqual(msg.get_labels(), ['filed', 'resent'])
-        msg.add_label('resent')
-        self.assertEqual(msg.get_labels(), ['filed', 'resent'])
-        msg.remove_label('filed')
-        self.assertEqual(msg.get_labels(), ['resent'])
-        msg.add_label('foobar')
-        self.assertEqual(msg.get_labels(), ['resent', 'foobar'])
-        msg.remove_label('unseen')
-        self.assertEqual(msg.get_labels(), ['resent', 'foobar'])
-        msg.set_labels(['foobar', 'answered'])
-        self.assertEqual(msg.get_labels(), ['foobar', 'answered'])
-
-    def test_visible(self):
-        # Get, set, and update visible headers
-        msg = mailbox.BabylMessage(_sample_message)
-        visible = msg.get_visible()
-        self.assertEqual(visible.keys(), [])
-        self.assertIs(visible.get_payload(), None)
-        visible['User-Agent'] = 'FooBar 1.0'
-        visible['X-Whatever'] = 'Blah'
-        self.assertEqual(msg.get_visible().keys(), [])
-        msg.set_visible(visible)
-        visible = msg.get_visible()
-        self.assertEqual(visible.keys(), ['User-Agent', 'X-Whatever'])
-        self.assertEqual(visible['User-Agent'], 'FooBar 1.0')
-        self.assertEqual(visible['X-Whatever'], 'Blah')
-        self.assertIs(visible.get_payload(), None)
-        msg.update_visible()
-        self.assertEqual(visible.keys(), ['User-Agent', 'X-Whatever'])
-        self.assertIs(visible.get_payload(), None)
-        visible = msg.get_visible()
-        self.assertEqual(visible.keys(), ['User-Agent', 'Date', 'From', 'To',
-                                          'Subject'])
-        for header in ('User-Agent', 'Date', 'From', 'To', 'Subject'):
-            self.assertEqual(visible[header], msg[header])
-
-
-class TestMMDFMessage(_TestMboxMMDFMessage):
-
-    _factory = mailbox.MMDFMessage
-
-
-class TestMessageConversion(TestBase):
-
-    def test_plain_to_x(self):
-        # Convert Message to all formats
-        for class_ in (mailbox.Message, mailbox.MaildirMessage,
-                       mailbox.mboxMessage, mailbox.MHMessage,
-                       mailbox.BabylMessage, mailbox.MMDFMessage):
-            msg_plain = mailbox.Message(_sample_message)
-            msg = class_(msg_plain)
-            self._check_sample(msg)
-
-    def test_x_to_plain(self):
-        # Convert all formats to Message
-        for class_ in (mailbox.Message, mailbox.MaildirMessage,
-                       mailbox.mboxMessage, mailbox.MHMessage,
-                       mailbox.BabylMessage, mailbox.MMDFMessage):
-            msg = class_(_sample_message)
-            msg_plain = mailbox.Message(msg)
-            self._check_sample(msg_plain)
-
-    def test_x_to_invalid(self):
-        # Convert all formats to an invalid format
-        for class_ in (mailbox.Message, mailbox.MaildirMessage,
-                       mailbox.mboxMessage, mailbox.MHMessage,
-                       mailbox.BabylMessage, mailbox.MMDFMessage):
-            self.assertRaises(TypeError, lambda: class_(False))
-
-    def test_maildir_to_maildir(self):
-        # Convert MaildirMessage to MaildirMessage
-        msg_maildir = mailbox.MaildirMessage(_sample_message)
-        msg_maildir.set_flags('DFPRST')
-        msg_maildir.set_subdir('cur')
-        date = msg_maildir.get_date()
-        msg = mailbox.MaildirMessage(msg_maildir)
-        self._check_sample(msg)
-        self.assertEqual(msg.get_flags(), 'DFPRST')
-        self.assertEqual(msg.get_subdir(), 'cur')
-        self.assertEqual(msg.get_date(), date)
-
-    def test_maildir_to_mboxmmdf(self):
-        # Convert MaildirMessage to mboxmessage and MMDFMessage
-        pairs = (('D', ''), ('F', 'F'), ('P', ''), ('R', 'A'), ('S', 'R'),
-                 ('T', 'D'), ('DFPRST', 'RDFA'))
-        for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
-            msg_maildir = mailbox.MaildirMessage(_sample_message)
-            msg_maildir.set_date(0.0)
-            for setting, result in pairs:
-                msg_maildir.set_flags(setting)
-                msg = class_(msg_maildir)
-                self.assertEqual(msg.get_flags(), result)
-                self.assertEqual(msg.get_from(), 'MAILER-DAEMON %s' %
-                                 time.asctime(time.gmtime(0.0)))
-            msg_maildir.set_subdir('cur')
-            self.assertEqual(class_(msg_maildir).get_flags(), 'RODFA')
-
-    def test_maildir_to_mh(self):
-        # Convert MaildirMessage to MHMessage
-        msg_maildir = mailbox.MaildirMessage(_sample_message)
-        pairs = (('D', ['unseen']), ('F', ['unseen', 'flagged']),
-                 ('P', ['unseen']), ('R', ['unseen', 'replied']), ('S', []),
-                 ('T', ['unseen']), ('DFPRST', ['replied', 'flagged']))
-        for setting, result in pairs:
-            msg_maildir.set_flags(setting)
-            self.assertEqual(mailbox.MHMessage(msg_maildir).get_sequences(),
-                             result)
-
-    def test_maildir_to_babyl(self):
-        # Convert MaildirMessage to Babyl
-        msg_maildir = mailbox.MaildirMessage(_sample_message)
-        pairs = (('D', ['unseen']), ('F', ['unseen']),
-                 ('P', ['unseen', 'forwarded']), ('R', ['unseen', 'answered']),
-                 ('S', []), ('T', ['unseen', 'deleted']),
-                 ('DFPRST', ['deleted', 'answered', 'forwarded']))
-        for setting, result in pairs:
-            msg_maildir.set_flags(setting)
-            self.assertEqual(mailbox.BabylMessage(msg_maildir).get_labels(),
-                             result)
-
-    def test_mboxmmdf_to_maildir(self):
-        # Convert mboxMessage and MMDFMessage to MaildirMessage
-        for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
-            msg_mboxMMDF = class_(_sample_message)
-            msg_mboxMMDF.set_from('foo@bar', time.gmtime(0.0))
-            pairs = (('R', 'S'), ('O', ''), ('D', 'T'), ('F', 'F'), ('A', 'R'),
-                     ('RODFA', 'FRST'))
-            for setting, result in pairs:
-                msg_mboxMMDF.set_flags(setting)
-                msg = mailbox.MaildirMessage(msg_mboxMMDF)
-                self.assertEqual(msg.get_flags(), result)
-                self.assertEqual(msg.get_date(), 0.0)
-            msg_mboxMMDF.set_flags('O')
-            self.assertEqual(mailbox.MaildirMessage(msg_mboxMMDF).get_subdir(),
-                             'cur')
-
-    def test_mboxmmdf_to_mboxmmdf(self):
-        # Convert mboxMessage and MMDFMessage to mboxMessage and MMDFMessage
-        for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
-            msg_mboxMMDF = class_(_sample_message)
-            msg_mboxMMDF.set_flags('RODFA')
-            msg_mboxMMDF.set_from('foo@bar')
-            for class2_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
-                msg2 = class2_(msg_mboxMMDF)
-                self.assertEqual(msg2.get_flags(), 'RODFA')
-                self.assertEqual(msg2.get_from(), 'foo@bar')
-
-    def test_mboxmmdf_to_mh(self):
-        # Convert mboxMessage and MMDFMessage to MHMessage
-        for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
-            msg_mboxMMDF = class_(_sample_message)
-            pairs = (('R', []), ('O', ['unseen']), ('D', ['unseen']),
-                     ('F', ['unseen', 'flagged']),
-                     ('A', ['unseen', 'replied']),
-                     ('RODFA', ['replied', 'flagged']))
-            for setting, result in pairs:
-                msg_mboxMMDF.set_flags(setting)
-                self.assertEqual(mailbox.MHMessage(msg_mboxMMDF).get_sequences(),
-                                 result)
-
-    def test_mboxmmdf_to_babyl(self):
-        # Convert mboxMessage and MMDFMessage to BabylMessage
-        for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
-            msg = class_(_sample_message)
-            pairs = (('R', []), ('O', ['unseen']),
-                     ('D', ['unseen', 'deleted']), ('F', ['unseen']),
-                     ('A', ['unseen', 'answered']),
-                     ('RODFA', ['deleted', 'answered']))
-            for setting, result in pairs:
-                msg.set_flags(setting)
-                self.assertEqual(mailbox.BabylMessage(msg).get_labels(), result)
-
-    def test_mh_to_maildir(self):
-        # Convert MHMessage to MaildirMessage
-        pairs = (('unseen', ''), ('replied', 'RS'), ('flagged', 'FS'))
-        for setting, result in pairs:
-            msg = mailbox.MHMessage(_sample_message)
-            msg.add_sequence(setting)
-            self.assertEqual(mailbox.MaildirMessage(msg).get_flags(), result)
-            self.assertEqual(mailbox.MaildirMessage(msg).get_subdir(), 'cur')
-        msg = mailbox.MHMessage(_sample_message)
-        msg.add_sequence('unseen')
-        msg.add_sequence('replied')
-        msg.add_sequence('flagged')
-        self.assertEqual(mailbox.MaildirMessage(msg).get_flags(), 'FR')
-        self.assertEqual(mailbox.MaildirMessage(msg).get_subdir(), 'cur')
-
-    def test_mh_to_mboxmmdf(self):
-        # Convert MHMessage to mboxMessage and MMDFMessage
-        pairs = (('unseen', 'O'), ('replied', 'ROA'), ('flagged', 'ROF'))
-        for setting, result in pairs:
-            msg = mailbox.MHMessage(_sample_message)
-            msg.add_sequence(setting)
-            for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
-                self.assertEqual(class_(msg).get_flags(), result)
-        msg = mailbox.MHMessage(_sample_message)
-        msg.add_sequence('unseen')
-        msg.add_sequence('replied')
-        msg.add_sequence('flagged')
-        for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
-            self.assertEqual(class_(msg).get_flags(), 'OFA')
-
-    def test_mh_to_mh(self):
-        # Convert MHMessage to MHMessage
-        msg = mailbox.MHMessage(_sample_message)
-        msg.add_sequence('unseen')
-        msg.add_sequence('replied')
-        msg.add_sequence('flagged')
-        self.assertEqual(mailbox.MHMessage(msg).get_sequences(),
-                         ['unseen', 'replied', 'flagged'])
-
-    def test_mh_to_babyl(self):
-        # Convert MHMessage to BabylMessage
-        pairs = (('unseen', ['unseen']), ('replied', ['answered']),
-                 ('flagged', []))
-        for setting, result in pairs:
-            msg = mailbox.MHMessage(_sample_message)
-            msg.add_sequence(setting)
-            self.assertEqual(mailbox.BabylMessage(msg).get_labels(), result)
-        msg = mailbox.MHMessage(_sample_message)
-        msg.add_sequence('unseen')
-        msg.add_sequence('replied')
-        msg.add_sequence('flagged')
-        self.assertEqual(mailbox.BabylMessage(msg).get_labels(),
-                         ['unseen', 'answered'])
-
-    def test_babyl_to_maildir(self):
-        # Convert BabylMessage to MaildirMessage
-        pairs = (('unseen', ''), ('deleted', 'ST'), ('filed', 'S'),
-                 ('answered', 'RS'), ('forwarded', 'PS'), ('edited', 'S'),
-                 ('resent', 'PS'))
-        for setting, result in pairs:
-            msg = mailbox.BabylMessage(_sample_message)
-            msg.add_label(setting)
-            self.assertEqual(mailbox.MaildirMessage(msg).get_flags(), result)
-            self.assertEqual(mailbox.MaildirMessage(msg).get_subdir(), 'cur')
-        msg = mailbox.BabylMessage(_sample_message)
-        for label in ('unseen', 'deleted', 'filed', 'answered', 'forwarded',
-                      'edited', 'resent'):
-            msg.add_label(label)
-        self.assertEqual(mailbox.MaildirMessage(msg).get_flags(), 'PRT')
-        self.assertEqual(mailbox.MaildirMessage(msg).get_subdir(), 'cur')
-
-    def test_babyl_to_mboxmmdf(self):
-        # Convert BabylMessage to mboxMessage and MMDFMessage
-        pairs = (('unseen', 'O'), ('deleted', 'ROD'), ('filed', 'RO'),
-                 ('answered', 'ROA'), ('forwarded', 'RO'), ('edited', 'RO'),
-                 ('resent', 'RO'))
-        for setting, result in pairs:
-            for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
-                msg = mailbox.BabylMessage(_sample_message)
-                msg.add_label(setting)
-                self.assertEqual(class_(msg).get_flags(), result)
-        msg = mailbox.BabylMessage(_sample_message)
-        for label in ('unseen', 'deleted', 'filed', 'answered', 'forwarded',
-                      'edited', 'resent'):
-            msg.add_label(label)
-        for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
-            self.assertEqual(class_(msg).get_flags(), 'ODA')
-
-    def test_babyl_to_mh(self):
-        # Convert BabylMessage to MHMessage
-        pairs = (('unseen', ['unseen']), ('deleted', []), ('filed', []),
-                 ('answered', ['replied']), ('forwarded', []), ('edited', []),
-                 ('resent', []))
-        for setting, result in pairs:
-            msg = mailbox.BabylMessage(_sample_message)
-            msg.add_label(setting)
-            self.assertEqual(mailbox.MHMessage(msg).get_sequences(), result)
-        msg = mailbox.BabylMessage(_sample_message)
-        for label in ('unseen', 'deleted', 'filed', 'answered', 'forwarded',
-                      'edited', 'resent'):
-            msg.add_label(label)
-        self.assertEqual(mailbox.MHMessage(msg).get_sequences(),
-                         ['unseen', 'replied'])
-
-    def test_babyl_to_babyl(self):
-        # Convert BabylMessage to BabylMessage
-        msg = mailbox.BabylMessage(_sample_message)
-        msg.update_visible()
-        for label in ('unseen', 'deleted', 'filed', 'answered', 'forwarded',
-                      'edited', 'resent'):
-            msg.add_label(label)
-        msg2 = mailbox.BabylMessage(msg)
-        self.assertEqual(msg2.get_labels(), ['unseen', 'deleted', 'filed',
-                                             'answered', 'forwarded', 'edited',
-                                             'resent'])
-        self.assertEqual(msg.get_visible().keys(), msg2.get_visible().keys())
-        for key in msg.get_visible().keys():
-            self.assertEqual(msg.get_visible()[key], msg2.get_visible()[key])
-
-
-class TestProxyFileBase(TestBase):
-
-    def _test_read(self, proxy):
-        # Read by byte
-        proxy.seek(0)
-        self.assertEqual(proxy.read(), 'bar')
-        proxy.seek(1)
-        self.assertEqual(proxy.read(), 'ar')
-        proxy.seek(0)
-        self.assertEqual(proxy.read(2), 'ba')
-        proxy.seek(1)
-        self.assertEqual(proxy.read(-1), 'ar')
-        proxy.seek(2)
-        self.assertEqual(proxy.read(1000), 'r')
-
-    def _test_readline(self, proxy):
-        # Read by line
-        proxy.seek(0)
-        self.assertEqual(proxy.readline(), 'foo' + os.linesep)
-        self.assertEqual(proxy.readline(), 'bar' + os.linesep)
-        self.assertEqual(proxy.readline(), 'fred' + os.linesep)
-        self.assertEqual(proxy.readline(), 'bob')
-        proxy.seek(2)
-        self.assertEqual(proxy.readline(), 'o' + os.linesep)
-        proxy.seek(6 + 2 * len(os.linesep))
-        self.assertEqual(proxy.readline(), 'fred' + os.linesep)
-        proxy.seek(6 + 2 * len(os.linesep))
-        self.assertEqual(proxy.readline(2), 'fr')
-        self.assertEqual(proxy.readline(-10), 'ed' + os.linesep)
-
-    def _test_readlines(self, proxy):
-        # Read multiple lines
-        proxy.seek(0)
-        self.assertEqual(proxy.readlines(), ['foo' + os.linesep,
-                                            'bar' + os.linesep,
-                                            'fred' + os.linesep, 'bob'])
-        proxy.seek(0)
-        self.assertEqual(proxy.readlines(2), ['foo' + os.linesep])
-        proxy.seek(3 + len(os.linesep))
-        self.assertEqual(proxy.readlines(4 + len(os.linesep)),
-                         ['bar' + os.linesep, 'fred' + os.linesep])
-        proxy.seek(3)
-        self.assertEqual(proxy.readlines(1000), [os.linesep, 'bar' + os.linesep,
-                                                 'fred' + os.linesep, 'bob'])
-
-    def _test_iteration(self, proxy):
-        # Iterate by line
-        proxy.seek(0)
-        iterator = iter(proxy)
-        self.assertEqual(list(iterator),
-            ['foo' + os.linesep, 'bar' + os.linesep, 'fred' + os.linesep, 'bob'])
-
-    def _test_seek_and_tell(self, proxy):
-        # Seek and use tell to check position
-        proxy.seek(3)
-        self.assertEqual(proxy.tell(), 3)
-        self.assertEqual(proxy.read(len(os.linesep)), os.linesep)
-        proxy.seek(2, 1)
-        self.assertEqual(proxy.read(1 + len(os.linesep)), 'r' + os.linesep)
-        proxy.seek(-3 - len(os.linesep), 2)
-        self.assertEqual(proxy.read(3), 'bar')
-        proxy.seek(2, 0)
-        self.assertEqual(proxy.read(), 'o' + os.linesep + 'bar' + os.linesep)
-        proxy.seek(100)
-        self.assertEqual(proxy.read(), '')
-
-    def _test_close(self, proxy):
-        # Close a file
-        proxy.close()
-        self.assertRaises(AttributeError, lambda: proxy.close())
-
-
-class TestProxyFile(TestProxyFileBase):
-
-    def setUp(self):
-        self._path = test_support.TESTFN
-        self._file = open(self._path, 'wb+')
-
-    def tearDown(self):
-        self._file.close()
-        self._delete_recursively(self._path)
-
-    def test_initialize(self):
-        # Initialize and check position
-        self._file.write('foo')
-        pos = self._file.tell()
-        proxy0 = mailbox._ProxyFile(self._file)
-        self.assertEqual(proxy0.tell(), pos)
-        self.assertEqual(self._file.tell(), pos)
-        proxy1 = mailbox._ProxyFile(self._file, 0)
-        self.assertEqual(proxy1.tell(), 0)
-        self.assertEqual(self._file.tell(), pos)
-
-    def test_read(self):
-        self._file.write('bar')
-        self._test_read(mailbox._ProxyFile(self._file))
-
-    def test_readline(self):
-        self._file.write('foo%sbar%sfred%sbob' % (os.linesep, os.linesep,
-                                                  os.linesep))
-        self._test_readline(mailbox._ProxyFile(self._file))
-
-    def test_readlines(self):
-        self._file.write('foo%sbar%sfred%sbob' % (os.linesep, os.linesep,
-                                                  os.linesep))
-        self._test_readlines(mailbox._ProxyFile(self._file))
-
-    def test_iteration(self):
-        self._file.write('foo%sbar%sfred%sbob' % (os.linesep, os.linesep,
-                                                  os.linesep))
-        self._test_iteration(mailbox._ProxyFile(self._file))
-
-    def test_seek_and_tell(self):
-        self._file.write('foo%sbar%s' % (os.linesep, os.linesep))
-        self._test_seek_and_tell(mailbox._ProxyFile(self._file))
-
-    def test_close(self):
-        self._file.write('foo%sbar%s' % (os.linesep, os.linesep))
-        self._test_close(mailbox._ProxyFile(self._file))
-
-
-class TestPartialFile(TestProxyFileBase):
-
-    def setUp(self):
-        self._path = test_support.TESTFN
-        self._file = open(self._path, 'wb+')
-
-    def tearDown(self):
-        self._file.close()
-        self._delete_recursively(self._path)
-
-    def test_initialize(self):
-        # Initialize and check position
-        self._file.write('foo' + os.linesep + 'bar')
-        pos = self._file.tell()
-        proxy = mailbox._PartialFile(self._file, 2, 5)
-        self.assertEqual(proxy.tell(), 0)
-        self.assertEqual(self._file.tell(), pos)
-
-    def test_read(self):
-        self._file.write('***bar***')
-        self._test_read(mailbox._PartialFile(self._file, 3, 6))
-
-    def test_readline(self):
-        self._file.write('!!!!!foo%sbar%sfred%sbob!!!!!' %
-                         (os.linesep, os.linesep, os.linesep))
-        self._test_readline(mailbox._PartialFile(self._file, 5,
-                                                 18 + 3 * len(os.linesep)))
-
-    def test_readlines(self):
-        self._file.write('foo%sbar%sfred%sbob?????' %
-                         (os.linesep, os.linesep, os.linesep))
-        self._test_readlines(mailbox._PartialFile(self._file, 0,
-                                                  13 + 3 * len(os.linesep)))
-
-    def test_iteration(self):
-        self._file.write('____foo%sbar%sfred%sbob####' %
-                         (os.linesep, os.linesep, os.linesep))
-        self._test_iteration(mailbox._PartialFile(self._file, 4,
-                                                  17 + 3 * len(os.linesep)))
-
-    def test_seek_and_tell(self):
-        self._file.write('(((foo%sbar%s$$$' % (os.linesep, os.linesep))
-        self._test_seek_and_tell(mailbox._PartialFile(self._file, 3,
-                                                      9 + 2 * len(os.linesep)))
-
-    def test_close(self):
-        self._file.write('&foo%sbar%s^' % (os.linesep, os.linesep))
-        self._test_close(mailbox._PartialFile(self._file, 1,
-                                              6 + 3 * len(os.linesep)))
-
-
-## Start: tests from the original module (for backward compatibility).
-
-FROM_ = "From some.body@dummy.domain  Sat Jul 24 13:43:35 2004\n"
-DUMMY_MESSAGE = """\
-From: some.body@dummy.domain
-To: me@my.domain
-Subject: Simple Test
-
-This is a dummy message.
-"""
-
-class MaildirTestCase(unittest.TestCase):
-
-    def setUp(self):
-        # create a new maildir mailbox to work with:
-        self._dir = test_support.TESTFN
-        os.mkdir(self._dir)
-        os.mkdir(os.path.join(self._dir, "cur"))
-        os.mkdir(os.path.join(self._dir, "tmp"))
-        os.mkdir(os.path.join(self._dir, "new"))
-        self._counter = 1
-        self._msgfiles = []
-
-    def tearDown(self):
-        map(os.unlink, self._msgfiles)
-        os.rmdir(os.path.join(self._dir, "cur"))
-        os.rmdir(os.path.join(self._dir, "tmp"))
-        os.rmdir(os.path.join(self._dir, "new"))
-        os.rmdir(self._dir)
-
-    def createMessage(self, dir, mbox=False):
-        t = int(time.time() % 1000000)
-        pid = self._counter
-        self._counter += 1
-        filename = os.extsep.join((str(t), str(pid), "myhostname", "mydomain"))
-        tmpname = os.path.join(self._dir, "tmp", filename)
-        newname = os.path.join(self._dir, dir, filename)
-        with open(tmpname, "w") as fp:
-            self._msgfiles.append(tmpname)
-            if mbox:
-                fp.write(FROM_)
-            fp.write(DUMMY_MESSAGE)
-        if hasattr(os, "link"):
-            os.link(tmpname, newname)
-        else:
-            with open(newname, "w") as fp:
-                fp.write(DUMMY_MESSAGE)
-        self._msgfiles.append(newname)
-        return tmpname
-
-    def test_empty_maildir(self):
-        """Test an empty maildir mailbox"""
-        # Test for regression on bug #117490:
-        # Make sure the boxes attribute actually gets set.
-        self.mbox = mailbox.Maildir(test_support.TESTFN)
-        #self.assertTrue(hasattr(self.mbox, "boxes"))
-        #self.assertTrue(len(self.mbox.boxes) == 0)
-        self.assertIs(self.mbox.next(), None)
-        self.assertIs(self.mbox.next(), None)
-
-    def test_nonempty_maildir_cur(self):
-        self.createMessage("cur")
-        self.mbox = mailbox.Maildir(test_support.TESTFN)
-        #self.assertTrue(len(self.mbox.boxes) == 1)
-        self.assertIsNot(self.mbox.next(), None)
-        self.assertIs(self.mbox.next(), None)
-        self.assertIs(self.mbox.next(), None)
-
-    def test_nonempty_maildir_new(self):
-        self.createMessage("new")
-        self.mbox = mailbox.Maildir(test_support.TESTFN)
-        #self.assertTrue(len(self.mbox.boxes) == 1)
-        self.assertIsNot(self.mbox.next(), None)
-        self.assertIs(self.mbox.next(), None)
-        self.assertIs(self.mbox.next(), None)
-
-    def test_nonempty_maildir_both(self):
-        self.createMessage("cur")
-        self.createMessage("new")
-        self.mbox = mailbox.Maildir(test_support.TESTFN)
-        #self.assertTrue(len(self.mbox.boxes) == 2)
-        self.assertIsNot(self.mbox.next(), None)
-        self.assertIsNot(self.mbox.next(), None)
-        self.assertIs(self.mbox.next(), None)
-        self.assertIs(self.mbox.next(), None)
-
-    def test_unix_mbox(self):
-        ### should be better!
-        import email.parser
-        fname = self.createMessage("cur", True)
-        n = 0
-        for msg in mailbox.PortableUnixMailbox(open(fname),
-                                               email.parser.Parser().parse):
-            n += 1
-            self.assertEqual(msg["subject"], "Simple Test")
-            self.assertEqual(len(str(msg)), len(FROM_)+len(DUMMY_MESSAGE))
-        self.assertEqual(n, 1)
-
-## End: classes from the original module (for backward compatibility).
-
-
-_sample_message = """\
-Return-Path: <gkj@gregorykjohnson.com>
-X-Original-To: gkj+person@localhost
-Delivered-To: gkj+person@localhost
-Received: from localhost (localhost [127.0.0.1])
-        by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17
-        for <gkj+person@localhost>; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)
-Delivered-To: gkj@sundance.gregorykjohnson.com
-Received: from localhost [127.0.0.1]
-        by localhost with POP3 (fetchmail-6.2.5)
-        for gkj+person@localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)
-Received: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])
-        by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746
-        for <gkj@gregorykjohnson.com>; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)
-Received: by andy.gregorykjohnson.com (Postfix, from userid 1000)
-        id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)
-Date: Wed, 13 Jul 2005 17:23:11 -0400
-From: "Gregory K. Johnson" <gkj@gregorykjohnson.com>
-To: gkj@gregorykjohnson.com
-Subject: Sample message
-Message-ID: <20050713212311.GC4701@andy.gregorykjohnson.com>
-Mime-Version: 1.0
-Content-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"
-Content-Disposition: inline
-User-Agent: Mutt/1.5.9i
-
-
---NMuMz9nt05w80d4+
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-
-This is a sample message.
-
---
-Gregory K. Johnson
-
---NMuMz9nt05w80d4+
-Content-Type: application/octet-stream
-Content-Disposition: attachment; filename="text.gz"
-Content-Transfer-Encoding: base64
-
-H4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs
-3FYlAAAA
-
---NMuMz9nt05w80d4+--
-"""
-
-_sample_headers = {
-    "Return-Path":"<gkj@gregorykjohnson.com>",
-    "X-Original-To":"gkj+person@localhost",
-    "Delivered-To":"gkj+person@localhost",
-    "Received":"""from localhost (localhost [127.0.0.1])
-        by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17
-        for <gkj+person@localhost>; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)""",
-    "Delivered-To":"gkj@sundance.gregorykjohnson.com",
-    "Received":"""from localhost [127.0.0.1]
-        by localhost with POP3 (fetchmail-6.2.5)
-        for gkj+person@localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)""",
-    "Received":"""from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])
-        by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746
-        for <gkj@gregorykjohnson.com>; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)""",
-    "Received":"""by andy.gregorykjohnson.com (Postfix, from userid 1000)
-        id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)""",
-    "Date":"Wed, 13 Jul 2005 17:23:11 -0400",
-    "From":""""Gregory K. Johnson" <gkj@gregorykjohnson.com>""",
-    "To":"gkj@gregorykjohnson.com",
-    "Subject":"Sample message",
-    "Mime-Version":"1.0",
-    "Content-Type":"""multipart/mixed; boundary="NMuMz9nt05w80d4+\"""",
-    "Content-Disposition":"inline",
-    "User-Agent": "Mutt/1.5.9i" }
-
-_sample_payloads = ("""This is a sample message.
-
---
-Gregory K. Johnson
-""",
-"""H4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs
-3FYlAAAA
-""")
-
-
-def test_main():
-    tests = (TestMailboxSuperclass, TestMaildir, TestMbox, TestMMDF, TestMH,
-             TestBabyl, TestMessage, TestMaildirMessage, TestMboxMessage,
-             TestMHMessage, TestBabylMessage, TestMMDFMessage,
-             TestMessageConversion, TestProxyFile, TestPartialFile,
-             MaildirTestCase)
-    test_support.run_unittest(*tests)
-    test_support.reap_children()
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_marshal.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_marshal.py
deleted file mode 100644
index 7abdd24..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_marshal.py
+++ /dev/null
@@ -1,283 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: iso-8859-1 -*-
-
-from test import test_support
-import marshal
-import sys
-import unittest
-import os
-
-class IntTestCase(unittest.TestCase):
-    def test_ints(self):
-        # Test the full range of Python ints.
-        n = sys.maxint
-        while n:
-            for expected in (-n, n):
-                s = marshal.dumps(expected)
-                got = marshal.loads(s)
-                self.assertEqual(expected, got)
-                marshal.dump(expected, file(test_support.TESTFN, "wb"))
-                got = marshal.load(file(test_support.TESTFN, "rb"))
-                self.assertEqual(expected, got)
-            n = n >> 1
-        os.unlink(test_support.TESTFN)
-
-    def test_int64(self):
-        # Simulate int marshaling on a 64-bit box.  This is most interesting if
-        # we're running the test on a 32-bit box, of course.
-
-        def to_little_endian_string(value, nbytes):
-            bytes = []
-            for i in range(nbytes):
-                bytes.append(chr(value & 0xff))
-                value >>= 8
-            return ''.join(bytes)
-
-        maxint64 = (1L << 63) - 1
-        minint64 = -maxint64-1
-
-        for base in maxint64, minint64, -maxint64, -(minint64 >> 1):
-            while base:
-                s = 'I' + to_little_endian_string(base, 8)
-                got = marshal.loads(s)
-                self.assertEqual(base, got)
-                if base == -1:  # a fixed-point for shifting right 1
-                    base = 0
-                else:
-                    base >>= 1
-
-    def test_bool(self):
-        for b in (True, False):
-            new = marshal.loads(marshal.dumps(b))
-            self.assertEqual(b, new)
-            self.assertEqual(type(b), type(new))
-            marshal.dump(b, file(test_support.TESTFN, "wb"))
-            new = marshal.load(file(test_support.TESTFN, "rb"))
-            self.assertEqual(b, new)
-            self.assertEqual(type(b), type(new))
-
-class FloatTestCase(unittest.TestCase):
-    def test_floats(self):
-        # Test a few floats
-        small = 1e-25
-        n = sys.maxint * 3.7e250
-        while n > small:
-            for expected in (-n, n):
-                f = float(expected)
-                s = marshal.dumps(f)
-                got = marshal.loads(s)
-                self.assertEqual(f, got)
-                marshal.dump(f, file(test_support.TESTFN, "wb"))
-                got = marshal.load(file(test_support.TESTFN, "rb"))
-                self.assertEqual(f, got)
-            n /= 123.4567
-
-        f = 0.0
-        s = marshal.dumps(f, 2)
-        got = marshal.loads(s)
-        self.assertEqual(f, got)
-        # and with version <= 1 (floats marshalled differently then)
-        s = marshal.dumps(f, 1)
-        got = marshal.loads(s)
-        self.assertEqual(f, got)
-
-        n = sys.maxint * 3.7e-250
-        while n < small:
-            for expected in (-n, n):
-                f = float(expected)
-
-                s = marshal.dumps(f)
-                got = marshal.loads(s)
-                self.assertEqual(f, got)
-
-                s = marshal.dumps(f, 1)
-                got = marshal.loads(s)
-                self.assertEqual(f, got)
-
-                marshal.dump(f, file(test_support.TESTFN, "wb"))
-                got = marshal.load(file(test_support.TESTFN, "rb"))
-                self.assertEqual(f, got)
-
-                marshal.dump(f, file(test_support.TESTFN, "wb"), 1)
-                got = marshal.load(file(test_support.TESTFN, "rb"))
-                self.assertEqual(f, got)
-            n *= 123.4567
-        os.unlink(test_support.TESTFN)
-
-class StringTestCase(unittest.TestCase):
-    def test_unicode(self):
-        for s in [u"", u"Andrè Previn", u"abc", u" "*10000]:
-            new = marshal.loads(marshal.dumps(s))
-            self.assertEqual(s, new)
-            self.assertEqual(type(s), type(new))
-            marshal.dump(s, file(test_support.TESTFN, "wb"))
-            new = marshal.load(file(test_support.TESTFN, "rb"))
-            self.assertEqual(s, new)
-            self.assertEqual(type(s), type(new))
-        os.unlink(test_support.TESTFN)
-
-    def test_string(self):
-        for s in ["", "Andrè Previn", "abc", " "*10000]:
-            new = marshal.loads(marshal.dumps(s))
-            self.assertEqual(s, new)
-            self.assertEqual(type(s), type(new))
-            marshal.dump(s, file(test_support.TESTFN, "wb"))
-            new = marshal.load(file(test_support.TESTFN, "rb"))
-            self.assertEqual(s, new)
-            self.assertEqual(type(s), type(new))
-        os.unlink(test_support.TESTFN)
-
-    def test_buffer(self):
-        for s in ["", "Andrè Previn", "abc", " "*10000]:
-            with test_support.check_py3k_warnings(("buffer.. not supported",
-                                                     DeprecationWarning)):
-                b = buffer(s)
-            new = marshal.loads(marshal.dumps(b))
-            self.assertEqual(s, new)
-            marshal.dump(b, file(test_support.TESTFN, "wb"))
-            new = marshal.load(file(test_support.TESTFN, "rb"))
-            self.assertEqual(s, new)
-        os.unlink(test_support.TESTFN)
-
-class ExceptionTestCase(unittest.TestCase):
-    def test_exceptions(self):
-        new = marshal.loads(marshal.dumps(StopIteration))
-        self.assertEqual(StopIteration, new)
-
-class CodeTestCase(unittest.TestCase):
-    def test_code(self):
-        co = ExceptionTestCase.test_exceptions.func_code
-        new = marshal.loads(marshal.dumps(co))
-        self.assertEqual(co, new)
-
-class ContainerTestCase(unittest.TestCase):
-    d = {'astring': 'foo@bar.baz.spam',
-         'afloat': 7283.43,
-         'anint': 2**20,
-         'ashortlong': 2L,
-         'alist': ['.zyx.41'],
-         'atuple': ('.zyx.41',)*10,
-         'aboolean': False,
-         'aunicode': u"Andrè Previn"
-         }
-    def test_dict(self):
-        new = marshal.loads(marshal.dumps(self.d))
-        self.assertEqual(self.d, new)
-        marshal.dump(self.d, file(test_support.TESTFN, "wb"))
-        new = marshal.load(file(test_support.TESTFN, "rb"))
-        self.assertEqual(self.d, new)
-        os.unlink(test_support.TESTFN)
-
-    def test_list(self):
-        lst = self.d.items()
-        new = marshal.loads(marshal.dumps(lst))
-        self.assertEqual(lst, new)
-        marshal.dump(lst, file(test_support.TESTFN, "wb"))
-        new = marshal.load(file(test_support.TESTFN, "rb"))
-        self.assertEqual(lst, new)
-        os.unlink(test_support.TESTFN)
-
-    def test_tuple(self):
-        t = tuple(self.d.keys())
-        new = marshal.loads(marshal.dumps(t))
-        self.assertEqual(t, new)
-        marshal.dump(t, file(test_support.TESTFN, "wb"))
-        new = marshal.load(file(test_support.TESTFN, "rb"))
-        self.assertEqual(t, new)
-        os.unlink(test_support.TESTFN)
-
-    def test_sets(self):
-        for constructor in (set, frozenset):
-            t = constructor(self.d.keys())
-            new = marshal.loads(marshal.dumps(t))
-            self.assertEqual(t, new)
-            self.assertTrue(isinstance(new, constructor))
-            self.assertNotEqual(id(t), id(new))
-            marshal.dump(t, file(test_support.TESTFN, "wb"))
-            new = marshal.load(file(test_support.TESTFN, "rb"))
-            self.assertEqual(t, new)
-            os.unlink(test_support.TESTFN)
-
-class BugsTestCase(unittest.TestCase):
-    def test_bug_5888452(self):
-        # Simple-minded check for SF 588452: Debug build crashes
-        marshal.dumps([128] * 1000)
-
-    def test_patch_873224(self):
-        self.assertRaises(Exception, marshal.loads, '0')
-        self.assertRaises(Exception, marshal.loads, 'f')
-        self.assertRaises(Exception, marshal.loads, marshal.dumps(5L)[:-1])
-
-    def test_version_argument(self):
-        # Python 2.4.0 crashes for any call to marshal.dumps(x, y)
-        self.assertEqual(marshal.loads(marshal.dumps(5, 0)), 5)
-        self.assertEqual(marshal.loads(marshal.dumps(5, 1)), 5)
-
-    def test_fuzz(self):
-        # simple test that it's at least not *totally* trivial to
-        # crash from bad marshal data
-        for c in [chr(i) for i in range(256)]:
-            try:
-                marshal.loads(c)
-            except Exception:
-                pass
-
-    def test_loads_recursion(self):
-        s = 'c' + ('X' * 4*4) + '{' * 2**20
-        self.assertRaises(ValueError, marshal.loads, s)
-
-    def test_recursion_limit(self):
-        # Create a deeply nested structure.
-        head = last = []
-        # The max stack depth should match the value in Python/marshal.c.
-        MAX_MARSHAL_STACK_DEPTH = 2000
-        for i in range(MAX_MARSHAL_STACK_DEPTH - 2):
-            last.append([0])
-            last = last[-1]
-
-        # Verify we don't blow out the stack with dumps/load.
-        data = marshal.dumps(head)
-        new_head = marshal.loads(data)
-        # Don't use == to compare objects, it can exceed the recursion limit.
-        self.assertEqual(len(new_head), len(head))
-        self.assertEqual(len(new_head[0]), len(head[0]))
-        self.assertEqual(len(new_head[-1]), len(head[-1]))
-
-        last.append([0])
-        self.assertRaises(ValueError, marshal.dumps, head)
-
-    def test_exact_type_match(self):
-        # Former bug:
-        #   >>> class Int(int): pass
-        #   >>> type(loads(dumps(Int())))
-        #   <type 'int'>
-        for typ in (int, long, float, complex, tuple, list, dict, set, frozenset):
-            # Note: str and unicode subclasses are not tested because they get handled
-            # by marshal's routines for objects supporting the buffer API.
-            subtyp = type('subtyp', (typ,), {})
-            self.assertRaises(ValueError, marshal.dumps, subtyp())
-
-    # Issue #1792 introduced a change in how marshal increases the size of its
-    # internal buffer; this test ensures that the new code is exercised.
-    def test_large_marshal(self):
-        size = int(1e6)
-        testString = 'abc' * size
-        marshal.dumps(testString)
-
-    def test_invalid_longs(self):
-        # Issue #7019: marshal.loads shouldn't produce unnormalized PyLongs
-        invalid_string = 'l\x02\x00\x00\x00\x00\x00\x00\x00'
-        self.assertRaises(ValueError, marshal.loads, invalid_string)
-
-
-def test_main():
-    test_support.run_unittest(IntTestCase,
-                              FloatTestCase,
-                              StringTestCase,
-                              CodeTestCase,
-                              ContainerTestCase,
-                              ExceptionTestCase,
-                              BugsTestCase)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_math.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_math.py
deleted file mode 100644
index fd91d98..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_math.py
+++ /dev/null
@@ -1,1030 +0,0 @@
-# Python test set -- math module
-# XXXX Should not do tests around zero only
-
-from test.test_support import run_unittest, verbose
-import unittest
-import math
-import os
-import sys
-import random
-import struct
-
-eps = 1E-05
-NAN = float('nan')
-INF = float('inf')
-NINF = float('-inf')
-
-# decorator for skipping tests on non-IEEE 754 platforms
-requires_IEEE_754 = unittest.skipUnless(
-    float.__getformat__("double").startswith("IEEE"),
-    "test requires IEEE 754 doubles")
-
-# detect evidence of double-rounding: fsum is not always correctly
-# rounded on machines that suffer from double rounding.
-x, y = 1e16, 2.9999 # use temporary values to defeat peephole optimizer
-HAVE_DOUBLE_ROUNDING = (x + y == 1e16 + 4)
-
-# locate file with test values
-if __name__ == '__main__':
-    file = sys.argv[0]
-else:
-    file = __file__
-test_dir = os.path.dirname(file) or os.curdir
-math_testcases = os.path.join(test_dir, 'math_testcases.txt')
-test_file = os.path.join(test_dir, 'cmath_testcases.txt')
-
-def to_ulps(x):
-    """Convert a non-NaN float x to an integer, in such a way that
-    adjacent floats are converted to adjacent integers.  Then
-    abs(ulps(x) - ulps(y)) gives the difference in ulps between two
-    floats.
-
-    The results from this function will only make sense on platforms
-    where C doubles are represented in IEEE 754 binary64 format.
-
-    """
-    n = struct.unpack('<q', struct.pack('<d', x))[0]
-    if n < 0:
-        n = ~(n+2**63)
-    return n
-
-def ulps_check(expected, got, ulps=20):
-    """Given non-NaN floats `expected` and `got`,
-    check that they're equal to within the given number of ulps.
-
-    Returns None on success and an error message on failure."""
-
-    ulps_error = to_ulps(got) - to_ulps(expected)
-    if abs(ulps_error) <= ulps:
-        return None
-    return "error = {} ulps; permitted error = {} ulps".format(ulps_error,
-                                                               ulps)
-
-def acc_check(expected, got, rel_err=2e-15, abs_err = 5e-323):
-    """Determine whether non-NaN floats a and b are equal to within a
-    (small) rounding error.  The default values for rel_err and
-    abs_err are chosen to be suitable for platforms where a float is
-    represented by an IEEE 754 double.  They allow an error of between
-    9 and 19 ulps."""
-
-    # need to special case infinities, since inf - inf gives nan
-    if math.isinf(expected) and got == expected:
-        return None
-
-    error = got - expected
-
-    permitted_error = max(abs_err, rel_err * abs(expected))
-    if abs(error) < permitted_error:
-        return None
-    return "error = {}; permitted error = {}".format(error,
-                                                     permitted_error)
-
-def parse_mtestfile(fname):
-    """Parse a file with test values
-
-    -- starts a comment
-    blank lines, or lines containing only a comment, are ignored
-    other lines are expected to have the form
-      id fn arg -> expected [flag]*
-
-    """
-    with open(fname) as fp:
-        for line in fp:
-            # strip comments, and skip blank lines
-            if '--' in line:
-                line = line[:line.index('--')]
-            if not line.strip():
-                continue
-
-            lhs, rhs = line.split('->')
-            id, fn, arg = lhs.split()
-            rhs_pieces = rhs.split()
-            exp = rhs_pieces[0]
-            flags = rhs_pieces[1:]
-
-            yield (id, fn, float(arg), float(exp), flags)
-
-def parse_testfile(fname):
-    """Parse a file with test values
-
-    Empty lines or lines starting with -- are ignored
-    yields id, fn, arg_real, arg_imag, exp_real, exp_imag
-    """
-    with open(fname) as fp:
-        for line in fp:
-            # skip comment lines and blank lines
-            if line.startswith('--') or not line.strip():
-                continue
-
-            lhs, rhs = line.split('->')
-            id, fn, arg_real, arg_imag = lhs.split()
-            rhs_pieces = rhs.split()
-            exp_real, exp_imag = rhs_pieces[0], rhs_pieces[1]
-            flags = rhs_pieces[2:]
-
-            yield (id, fn,
-                   float(arg_real), float(arg_imag),
-                   float(exp_real), float(exp_imag),
-                   flags
-                  )
-
-class MathTests(unittest.TestCase):
-
-    def ftest(self, name, value, expected):
-        if abs(value-expected) > eps:
-            # Use %r instead of %f so the error message
-            # displays full precision. Otherwise discrepancies
-            # in the last few bits will lead to very confusing
-            # error messages
-            self.fail('%s returned %r, expected %r' %
-                      (name, value, expected))
-
-    def testConstants(self):
-        self.ftest('pi', math.pi, 3.1415926)
-        self.ftest('e', math.e, 2.7182818)
-
-    def testAcos(self):
-        self.assertRaises(TypeError, math.acos)
-        self.ftest('acos(-1)', math.acos(-1), math.pi)
-        self.ftest('acos(0)', math.acos(0), math.pi/2)
-        self.ftest('acos(1)', math.acos(1), 0)
-        self.assertRaises(ValueError, math.acos, INF)
-        self.assertRaises(ValueError, math.acos, NINF)
-        self.assertTrue(math.isnan(math.acos(NAN)))
-
-    def testAcosh(self):
-        self.assertRaises(TypeError, math.acosh)
-        self.ftest('acosh(1)', math.acosh(1), 0)
-        self.ftest('acosh(2)', math.acosh(2), 1.3169578969248168)
-        self.assertRaises(ValueError, math.acosh, 0)
-        self.assertRaises(ValueError, math.acosh, -1)
-        self.assertEqual(math.acosh(INF), INF)
-        self.assertRaises(ValueError, math.acosh, NINF)
-        self.assertTrue(math.isnan(math.acosh(NAN)))
-
-    def testAsin(self):
-        self.assertRaises(TypeError, math.asin)
-        self.ftest('asin(-1)', math.asin(-1), -math.pi/2)
-        self.ftest('asin(0)', math.asin(0), 0)
-        self.ftest('asin(1)', math.asin(1), math.pi/2)
-        self.assertRaises(ValueError, math.asin, INF)
-        self.assertRaises(ValueError, math.asin, NINF)
-        self.assertTrue(math.isnan(math.asin(NAN)))
-
-    def testAsinh(self):
-        self.assertRaises(TypeError, math.asinh)
-        self.ftest('asinh(0)', math.asinh(0), 0)
-        self.ftest('asinh(1)', math.asinh(1), 0.88137358701954305)
-        self.ftest('asinh(-1)', math.asinh(-1), -0.88137358701954305)
-        self.assertEqual(math.asinh(INF), INF)
-        self.assertEqual(math.asinh(NINF), NINF)
-        self.assertTrue(math.isnan(math.asinh(NAN)))
-
-    def testAtan(self):
-        self.assertRaises(TypeError, math.atan)
-        self.ftest('atan(-1)', math.atan(-1), -math.pi/4)
-        self.ftest('atan(0)', math.atan(0), 0)
-        self.ftest('atan(1)', math.atan(1), math.pi/4)
-        self.ftest('atan(inf)', math.atan(INF), math.pi/2)
-        self.ftest('atan(-inf)', math.atan(NINF), -math.pi/2)
-        self.assertTrue(math.isnan(math.atan(NAN)))
-
-    def testAtanh(self):
-        self.assertRaises(TypeError, math.atan)
-        self.ftest('atanh(0)', math.atanh(0), 0)
-        self.ftest('atanh(0.5)', math.atanh(0.5), 0.54930614433405489)
-        self.ftest('atanh(-0.5)', math.atanh(-0.5), -0.54930614433405489)
-        self.assertRaises(ValueError, math.atanh, 1)
-        self.assertRaises(ValueError, math.atanh, -1)
-        self.assertRaises(ValueError, math.atanh, INF)
-        self.assertRaises(ValueError, math.atanh, NINF)
-        self.assertTrue(math.isnan(math.atanh(NAN)))
-
-    def testAtan2(self):
-        self.assertRaises(TypeError, math.atan2)
-        self.ftest('atan2(-1, 0)', math.atan2(-1, 0), -math.pi/2)
-        self.ftest('atan2(-1, 1)', math.atan2(-1, 1), -math.pi/4)
-        self.ftest('atan2(0, 1)', math.atan2(0, 1), 0)
-        self.ftest('atan2(1, 1)', math.atan2(1, 1), math.pi/4)
-        self.ftest('atan2(1, 0)', math.atan2(1, 0), math.pi/2)
-
-        # math.atan2(0, x)
-        self.ftest('atan2(0., -inf)', math.atan2(0., NINF), math.pi)
-        self.ftest('atan2(0., -2.3)', math.atan2(0., -2.3), math.pi)
-        self.ftest('atan2(0., -0.)', math.atan2(0., -0.), math.pi)
-        self.assertEqual(math.atan2(0., 0.), 0.)
-        self.assertEqual(math.atan2(0., 2.3), 0.)
-        self.assertEqual(math.atan2(0., INF), 0.)
-        self.assertTrue(math.isnan(math.atan2(0., NAN)))
-        # math.atan2(-0, x)
-        self.ftest('atan2(-0., -inf)', math.atan2(-0., NINF), -math.pi)
-        self.ftest('atan2(-0., -2.3)', math.atan2(-0., -2.3), -math.pi)
-        self.ftest('atan2(-0., -0.)', math.atan2(-0., -0.), -math.pi)
-        self.assertEqual(math.atan2(-0., 0.), -0.)
-        self.assertEqual(math.atan2(-0., 2.3), -0.)
-        self.assertEqual(math.atan2(-0., INF), -0.)
-        self.assertTrue(math.isnan(math.atan2(-0., NAN)))
-        # math.atan2(INF, x)
-        self.ftest('atan2(inf, -inf)', math.atan2(INF, NINF), math.pi*3/4)
-        self.ftest('atan2(inf, -2.3)', math.atan2(INF, -2.3), math.pi/2)
-        self.ftest('atan2(inf, -0.)', math.atan2(INF, -0.0), math.pi/2)
-        self.ftest('atan2(inf, 0.)', math.atan2(INF, 0.0), math.pi/2)
-        self.ftest('atan2(inf, 2.3)', math.atan2(INF, 2.3), math.pi/2)
-        self.ftest('atan2(inf, inf)', math.atan2(INF, INF), math.pi/4)
-        self.assertTrue(math.isnan(math.atan2(INF, NAN)))
-        # math.atan2(NINF, x)
-        self.ftest('atan2(-inf, -inf)', math.atan2(NINF, NINF), -math.pi*3/4)
-        self.ftest('atan2(-inf, -2.3)', math.atan2(NINF, -2.3), -math.pi/2)
-        self.ftest('atan2(-inf, -0.)', math.atan2(NINF, -0.0), -math.pi/2)
-        self.ftest('atan2(-inf, 0.)', math.atan2(NINF, 0.0), -math.pi/2)
-        self.ftest('atan2(-inf, 2.3)', math.atan2(NINF, 2.3), -math.pi/2)
-        self.ftest('atan2(-inf, inf)', math.atan2(NINF, INF), -math.pi/4)
-        self.assertTrue(math.isnan(math.atan2(NINF, NAN)))
-        # math.atan2(+finite, x)
-        self.ftest('atan2(2.3, -inf)', math.atan2(2.3, NINF), math.pi)
-        self.ftest('atan2(2.3, -0.)', math.atan2(2.3, -0.), math.pi/2)
-        self.ftest('atan2(2.3, 0.)', math.atan2(2.3, 0.), math.pi/2)
-        self.assertEqual(math.atan2(2.3, INF), 0.)
-        self.assertTrue(math.isnan(math.atan2(2.3, NAN)))
-        # math.atan2(-finite, x)
-        self.ftest('atan2(-2.3, -inf)', math.atan2(-2.3, NINF), -math.pi)
-        self.ftest('atan2(-2.3, -0.)', math.atan2(-2.3, -0.), -math.pi/2)
-        self.ftest('atan2(-2.3, 0.)', math.atan2(-2.3, 0.), -math.pi/2)
-        self.assertEqual(math.atan2(-2.3, INF), -0.)
-        self.assertTrue(math.isnan(math.atan2(-2.3, NAN)))
-        # math.atan2(NAN, x)
-        self.assertTrue(math.isnan(math.atan2(NAN, NINF)))
-        self.assertTrue(math.isnan(math.atan2(NAN, -2.3)))
-        self.assertTrue(math.isnan(math.atan2(NAN, -0.)))
-        self.assertTrue(math.isnan(math.atan2(NAN, 0.)))
-        self.assertTrue(math.isnan(math.atan2(NAN, 2.3)))
-        self.assertTrue(math.isnan(math.atan2(NAN, INF)))
-        self.assertTrue(math.isnan(math.atan2(NAN, NAN)))
-
-    def testCeil(self):
-        self.assertRaises(TypeError, math.ceil)
-        # These types will be int in py3k.
-        self.assertEqual(float, type(math.ceil(1)))
-        self.assertEqual(float, type(math.ceil(1L)))
-        self.assertEqual(float, type(math.ceil(1.0)))
-        self.ftest('ceil(0.5)', math.ceil(0.5), 1)
-        self.ftest('ceil(1.0)', math.ceil(1.0), 1)
-        self.ftest('ceil(1.5)', math.ceil(1.5), 2)
-        self.ftest('ceil(-0.5)', math.ceil(-0.5), 0)
-        self.ftest('ceil(-1.0)', math.ceil(-1.0), -1)
-        self.ftest('ceil(-1.5)', math.ceil(-1.5), -1)
-        self.assertEqual(math.ceil(INF), INF)
-        self.assertEqual(math.ceil(NINF), NINF)
-        self.assertTrue(math.isnan(math.ceil(NAN)))
-
-        class TestCeil(object):
-            def __float__(self):
-                return 41.3
-        class TestNoCeil(object):
-            pass
-        self.ftest('ceil(TestCeil())', math.ceil(TestCeil()), 42)
-        self.assertRaises(TypeError, math.ceil, TestNoCeil())
-
-        t = TestNoCeil()
-        t.__ceil__ = lambda *args: args
-        self.assertRaises(TypeError, math.ceil, t)
-        self.assertRaises(TypeError, math.ceil, t, 0)
-
-    @requires_IEEE_754
-    def testCopysign(self):
-        self.assertEqual(math.copysign(1, 42), 1.0)
-        self.assertEqual(math.copysign(0., 42), 0.0)
-        self.assertEqual(math.copysign(1., -42), -1.0)
-        self.assertEqual(math.copysign(3, 0.), 3.0)
-        self.assertEqual(math.copysign(4., -0.), -4.0)
-
-        self.assertRaises(TypeError, math.copysign)
-        # copysign should let us distinguish signs of zeros
-        self.assertEqual(math.copysign(1., 0.), 1.)
-        self.assertEqual(math.copysign(1., -0.), -1.)
-        self.assertEqual(math.copysign(INF, 0.), INF)
-        self.assertEqual(math.copysign(INF, -0.), NINF)
-        self.assertEqual(math.copysign(NINF, 0.), INF)
-        self.assertEqual(math.copysign(NINF, -0.), NINF)
-        # and of infinities
-        self.assertEqual(math.copysign(1., INF), 1.)
-        self.assertEqual(math.copysign(1., NINF), -1.)
-        self.assertEqual(math.copysign(INF, INF), INF)
-        self.assertEqual(math.copysign(INF, NINF), NINF)
-        self.assertEqual(math.copysign(NINF, INF), INF)
-        self.assertEqual(math.copysign(NINF, NINF), NINF)
-        self.assertTrue(math.isnan(math.copysign(NAN, 1.)))
-        self.assertTrue(math.isnan(math.copysign(NAN, INF)))
-        self.assertTrue(math.isnan(math.copysign(NAN, NINF)))
-        self.assertTrue(math.isnan(math.copysign(NAN, NAN)))
-        # copysign(INF, NAN) may be INF or it may be NINF, since
-        # we don't know whether the sign bit of NAN is set on any
-        # given platform.
-        self.assertTrue(math.isinf(math.copysign(INF, NAN)))
-        # similarly, copysign(2., NAN) could be 2. or -2.
-        self.assertEqual(abs(math.copysign(2., NAN)), 2.)
-
-    def testCos(self):
-        self.assertRaises(TypeError, math.cos)
-        self.ftest('cos(-pi/2)', math.cos(-math.pi/2), 0)
-        self.ftest('cos(0)', math.cos(0), 1)
-        self.ftest('cos(pi/2)', math.cos(math.pi/2), 0)
-        self.ftest('cos(pi)', math.cos(math.pi), -1)
-        try:
-            self.assertTrue(math.isnan(math.cos(INF)))
-            self.assertTrue(math.isnan(math.cos(NINF)))
-        except ValueError:
-            self.assertRaises(ValueError, math.cos, INF)
-            self.assertRaises(ValueError, math.cos, NINF)
-        self.assertTrue(math.isnan(math.cos(NAN)))
-
-    def testCosh(self):
-        self.assertRaises(TypeError, math.cosh)
-        self.ftest('cosh(0)', math.cosh(0), 1)
-        self.ftest('cosh(2)-2*cosh(1)**2', math.cosh(2)-2*math.cosh(1)**2, -1) # Thanks to Lambert
-        self.assertEqual(math.cosh(INF), INF)
-        self.assertEqual(math.cosh(NINF), INF)
-        self.assertTrue(math.isnan(math.cosh(NAN)))
-
-    def testDegrees(self):
-        self.assertRaises(TypeError, math.degrees)
-        self.ftest('degrees(pi)', math.degrees(math.pi), 180.0)
-        self.ftest('degrees(pi/2)', math.degrees(math.pi/2), 90.0)
-        self.ftest('degrees(-pi/4)', math.degrees(-math.pi/4), -45.0)
-
-    def testExp(self):
-        self.assertRaises(TypeError, math.exp)
-        self.ftest('exp(-1)', math.exp(-1), 1/math.e)
-        self.ftest('exp(0)', math.exp(0), 1)
-        self.ftest('exp(1)', math.exp(1), math.e)
-        self.assertEqual(math.exp(INF), INF)
-        self.assertEqual(math.exp(NINF), 0.)
-        self.assertTrue(math.isnan(math.exp(NAN)))
-
-    def testFabs(self):
-        self.assertRaises(TypeError, math.fabs)
-        self.ftest('fabs(-1)', math.fabs(-1), 1)
-        self.ftest('fabs(0)', math.fabs(0), 0)
-        self.ftest('fabs(1)', math.fabs(1), 1)
-
-    def testFactorial(self):
-        def fact(n):
-            result = 1
-            for i in range(1, int(n)+1):
-                result *= i
-            return result
-        values = range(10) + [50, 100, 500]
-        random.shuffle(values)
-        for x in values:
-            for cast in (int, long, float):
-                self.assertEqual(math.factorial(cast(x)), fact(x), (x, fact(x), math.factorial(x)))
-        self.assertRaises(ValueError, math.factorial, -1)
-        self.assertRaises(ValueError, math.factorial, math.pi)
-
-    def testFloor(self):
-        self.assertRaises(TypeError, math.floor)
-        # These types will be int in py3k.
-        self.assertEqual(float, type(math.floor(1)))
-        self.assertEqual(float, type(math.floor(1L)))
-        self.assertEqual(float, type(math.floor(1.0)))
-        self.ftest('floor(0.5)', math.floor(0.5), 0)
-        self.ftest('floor(1.0)', math.floor(1.0), 1)
-        self.ftest('floor(1.5)', math.floor(1.5), 1)
-        self.ftest('floor(-0.5)', math.floor(-0.5), -1)
-        self.ftest('floor(-1.0)', math.floor(-1.0), -1)
-        self.ftest('floor(-1.5)', math.floor(-1.5), -2)
-        # pow() relies on floor() to check for integers
-        # This fails on some platforms - so check it here
-        self.ftest('floor(1.23e167)', math.floor(1.23e167), 1.23e167)
-        self.ftest('floor(-1.23e167)', math.floor(-1.23e167), -1.23e167)
-        self.assertEqual(math.ceil(INF), INF)
-        self.assertEqual(math.ceil(NINF), NINF)
-        self.assertTrue(math.isnan(math.floor(NAN)))
-
-        class TestFloor(object):
-            def __float__(self):
-                return 42.3
-        class TestNoFloor(object):
-            pass
-        self.ftest('floor(TestFloor())', math.floor(TestFloor()), 42)
-        self.assertRaises(TypeError, math.floor, TestNoFloor())
-
-        t = TestNoFloor()
-        t.__floor__ = lambda *args: args
-        self.assertRaises(TypeError, math.floor, t)
-        self.assertRaises(TypeError, math.floor, t, 0)
-
-    def testFmod(self):
-        self.assertRaises(TypeError, math.fmod)
-        self.ftest('fmod(10,1)', math.fmod(10,1), 0)
-        self.ftest('fmod(10,0.5)', math.fmod(10,0.5), 0)
-        self.ftest('fmod(10,1.5)', math.fmod(10,1.5), 1)
-        self.ftest('fmod(-10,1)', math.fmod(-10,1), 0)
-        self.ftest('fmod(-10,0.5)', math.fmod(-10,0.5), 0)
-        self.ftest('fmod(-10,1.5)', math.fmod(-10,1.5), -1)
-        self.assertTrue(math.isnan(math.fmod(NAN, 1.)))
-        self.assertTrue(math.isnan(math.fmod(1., NAN)))
-        self.assertTrue(math.isnan(math.fmod(NAN, NAN)))
-        self.assertRaises(ValueError, math.fmod, 1., 0.)
-        self.assertRaises(ValueError, math.fmod, INF, 1.)
-        self.assertRaises(ValueError, math.fmod, NINF, 1.)
-        self.assertRaises(ValueError, math.fmod, INF, 0.)
-        self.assertEqual(math.fmod(3.0, INF), 3.0)
-        self.assertEqual(math.fmod(-3.0, INF), -3.0)
-        self.assertEqual(math.fmod(3.0, NINF), 3.0)
-        self.assertEqual(math.fmod(-3.0, NINF), -3.0)
-        self.assertEqual(math.fmod(0.0, 3.0), 0.0)
-        self.assertEqual(math.fmod(0.0, NINF), 0.0)
-
-    def testFrexp(self):
-        self.assertRaises(TypeError, math.frexp)
-
-        def testfrexp(name, result, expected):
-            (mant, exp), (emant, eexp) = result, expected
-            if abs(mant-emant) > eps or exp != eexp:
-                self.fail('%s returned %r, expected %r'%\
-                          (name, (mant, exp), (emant,eexp)))
-
-        testfrexp('frexp(-1)', math.frexp(-1), (-0.5, 1))
-        testfrexp('frexp(0)', math.frexp(0), (0, 0))
-        testfrexp('frexp(1)', math.frexp(1), (0.5, 1))
-        testfrexp('frexp(2)', math.frexp(2), (0.5, 2))
-
-        self.assertEqual(math.frexp(INF)[0], INF)
-        self.assertEqual(math.frexp(NINF)[0], NINF)
-        self.assertTrue(math.isnan(math.frexp(NAN)[0]))
-
-    @requires_IEEE_754
-    @unittest.skipIf(HAVE_DOUBLE_ROUNDING,
-                         "fsum is not exact on machines with double rounding")
-    def testFsum(self):
-        # math.fsum relies on exact rounding for correct operation.
-        # There's a known problem with IA32 floating-point that causes
-        # inexact rounding in some situations, and will cause the
-        # math.fsum tests below to fail; see issue #2937.  On non IEEE
-        # 754 platforms, and on IEEE 754 platforms that exhibit the
-        # problem described in issue #2937, we simply skip the whole
-        # test.
-
-        # Python version of math.fsum, for comparison.  Uses a
-        # different algorithm based on frexp, ldexp and integer
-        # arithmetic.
-        from sys import float_info
-        mant_dig = float_info.mant_dig
-        etiny = float_info.min_exp - mant_dig
-
-        def msum(iterable):
-            """Full precision summation.  Compute sum(iterable) without any
-            intermediate accumulation of error.  Based on the 'lsum' function
-            at http://code.activestate.com/recipes/393090/
-
-            """
-            tmant, texp = 0, 0
-            for x in iterable:
-                mant, exp = math.frexp(x)
-                mant, exp = int(math.ldexp(mant, mant_dig)), exp - mant_dig
-                if texp > exp:
-                    tmant <<= texp-exp
-                    texp = exp
-                else:
-                    mant <<= exp-texp
-                tmant += mant
-            # Round tmant * 2**texp to a float.  The original recipe
-            # used float(str(tmant)) * 2.0**texp for this, but that's
-            # a little unsafe because str -> float conversion can't be
-            # relied upon to do correct rounding on all platforms.
-            tail = max(len(bin(abs(tmant)))-2 - mant_dig, etiny - texp)
-            if tail > 0:
-                h = 1 << (tail-1)
-                tmant = tmant // (2*h) + bool(tmant & h and tmant & 3*h-1)
-                texp += tail
-            return math.ldexp(tmant, texp)
-
-        test_values = [
-            ([], 0.0),
-            ([0.0], 0.0),
-            ([1e100, 1.0, -1e100, 1e-100, 1e50, -1.0, -1e50], 1e-100),
-            ([2.0**53, -0.5, -2.0**-54], 2.0**53-1.0),
-            ([2.0**53, 1.0, 2.0**-100], 2.0**53+2.0),
-            ([2.0**53+10.0, 1.0, 2.0**-100], 2.0**53+12.0),
-            ([2.0**53-4.0, 0.5, 2.0**-54], 2.0**53-3.0),
-            ([1./n for n in range(1, 1001)],
-             float.fromhex('0x1.df11f45f4e61ap+2')),
-            ([(-1.)**n/n for n in range(1, 1001)],
-             float.fromhex('-0x1.62a2af1bd3624p-1')),
-            ([1.7**(i+1)-1.7**i for i in range(1000)] + [-1.7**1000], -1.0),
-            ([1e16, 1., 1e-16], 10000000000000002.0),
-            ([1e16-2., 1.-2.**-53, -(1e16-2.), -(1.-2.**-53)], 0.0),
-            # exercise code for resizing partials array
-            ([2.**n - 2.**(n+50) + 2.**(n+52) for n in range(-1074, 972, 2)] +
-             [-2.**1022],
-             float.fromhex('0x1.5555555555555p+970')),
-            ]
-
-        for i, (vals, expected) in enumerate(test_values):
-            try:
-                actual = math.fsum(vals)
-            except OverflowError:
-                self.fail("test %d failed: got OverflowError, expected %r "
-                          "for math.fsum(%.100r)" % (i, expected, vals))
-            except ValueError:
-                self.fail("test %d failed: got ValueError, expected %r "
-                          "for math.fsum(%.100r)" % (i, expected, vals))
-            self.assertEqual(actual, expected)
-
-        from random import random, gauss, shuffle
-        for j in xrange(1000):
-            vals = [7, 1e100, -7, -1e100, -9e-20, 8e-20] * 10
-            s = 0
-            for i in xrange(200):
-                v = gauss(0, random()) ** 7 - s
-                s += v
-                vals.append(v)
-            shuffle(vals)
-
-            s = msum(vals)
-            self.assertEqual(msum(vals), math.fsum(vals))
-
-    def testHypot(self):
-        self.assertRaises(TypeError, math.hypot)
-        self.ftest('hypot(0,0)', math.hypot(0,0), 0)
-        self.ftest('hypot(3,4)', math.hypot(3,4), 5)
-        self.assertEqual(math.hypot(NAN, INF), INF)
-        self.assertEqual(math.hypot(INF, NAN), INF)
-        self.assertEqual(math.hypot(NAN, NINF), INF)
-        self.assertEqual(math.hypot(NINF, NAN), INF)
-        self.assertTrue(math.isnan(math.hypot(1.0, NAN)))
-        self.assertTrue(math.isnan(math.hypot(NAN, -2.0)))
-
-    def testLdexp(self):
-        self.assertRaises(TypeError, math.ldexp)
-        self.ftest('ldexp(0,1)', math.ldexp(0,1), 0)
-        self.ftest('ldexp(1,1)', math.ldexp(1,1), 2)
-        self.ftest('ldexp(1,-1)', math.ldexp(1,-1), 0.5)
-        self.ftest('ldexp(-1,1)', math.ldexp(-1,1), -2)
-        self.assertRaises(OverflowError, math.ldexp, 1., 1000000)
-        self.assertRaises(OverflowError, math.ldexp, -1., 1000000)
-        self.assertEqual(math.ldexp(1., -1000000), 0.)
-        self.assertEqual(math.ldexp(-1., -1000000), -0.)
-        self.assertEqual(math.ldexp(INF, 30), INF)
-        self.assertEqual(math.ldexp(NINF, -213), NINF)
-        self.assertTrue(math.isnan(math.ldexp(NAN, 0)))
-
-        # large second argument
-        for n in [10**5, 10L**5, 10**10, 10L**10, 10**20, 10**40]:
-            self.assertEqual(math.ldexp(INF, -n), INF)
-            self.assertEqual(math.ldexp(NINF, -n), NINF)
-            self.assertEqual(math.ldexp(1., -n), 0.)
-            self.assertEqual(math.ldexp(-1., -n), -0.)
-            self.assertEqual(math.ldexp(0., -n), 0.)
-            self.assertEqual(math.ldexp(-0., -n), -0.)
-            self.assertTrue(math.isnan(math.ldexp(NAN, -n)))
-
-            self.assertRaises(OverflowError, math.ldexp, 1., n)
-            self.assertRaises(OverflowError, math.ldexp, -1., n)
-            self.assertEqual(math.ldexp(0., n), 0.)
-            self.assertEqual(math.ldexp(-0., n), -0.)
-            self.assertEqual(math.ldexp(INF, n), INF)
-            self.assertEqual(math.ldexp(NINF, n), NINF)
-            self.assertTrue(math.isnan(math.ldexp(NAN, n)))
-
-    def testLog(self):
-        self.assertRaises(TypeError, math.log)
-        self.ftest('log(1/e)', math.log(1/math.e), -1)
-        self.ftest('log(1)', math.log(1), 0)
-        self.ftest('log(e)', math.log(math.e), 1)
-        self.ftest('log(32,2)', math.log(32,2), 5)
-        self.ftest('log(10**40, 10)', math.log(10**40, 10), 40)
-        self.ftest('log(10**40, 10**20)', math.log(10**40, 10**20), 2)
-        self.assertEqual(math.log(INF), INF)
-        self.assertRaises(ValueError, math.log, NINF)
-        self.assertTrue(math.isnan(math.log(NAN)))
-
-    def testLog1p(self):
-        self.assertRaises(TypeError, math.log1p)
-        self.ftest('log1p(1/e -1)', math.log1p(1/math.e-1), -1)
-        self.ftest('log1p(0)', math.log1p(0), 0)
-        self.ftest('log1p(e-1)', math.log1p(math.e-1), 1)
-        self.ftest('log1p(1)', math.log1p(1), math.log(2))
-        self.assertEqual(math.log1p(INF), INF)
-        self.assertRaises(ValueError, math.log1p, NINF)
-        self.assertTrue(math.isnan(math.log1p(NAN)))
-        n= 2**90
-        self.assertAlmostEqual(math.log1p(n), 62.383246250395075)
-        self.assertAlmostEqual(math.log1p(n), math.log1p(float(n)))
-
-    def testLog10(self):
-        self.assertRaises(TypeError, math.log10)
-        self.ftest('log10(0.1)', math.log10(0.1), -1)
-        self.ftest('log10(1)', math.log10(1), 0)
-        self.ftest('log10(10)', math.log10(10), 1)
-        self.assertEqual(math.log(INF), INF)
-        self.assertRaises(ValueError, math.log10, NINF)
-        self.assertTrue(math.isnan(math.log10(NAN)))
-
-    def testModf(self):
-        self.assertRaises(TypeError, math.modf)
-
-        def testmodf(name, result, expected):
-            (v1, v2), (e1, e2) = result, expected
-            if abs(v1-e1) > eps or abs(v2-e2):
-                self.fail('%s returned %r, expected %r'%\
-                          (name, (v1,v2), (e1,e2)))
-
-        testmodf('modf(1.5)', math.modf(1.5), (0.5, 1.0))
-        testmodf('modf(-1.5)', math.modf(-1.5), (-0.5, -1.0))
-
-        self.assertEqual(math.modf(INF), (0.0, INF))
-        self.assertEqual(math.modf(NINF), (-0.0, NINF))
-
-        modf_nan = math.modf(NAN)
-        self.assertTrue(math.isnan(modf_nan[0]))
-        self.assertTrue(math.isnan(modf_nan[1]))
-
-    def testPow(self):
-        self.assertRaises(TypeError, math.pow)
-        self.ftest('pow(0,1)', math.pow(0,1), 0)
-        self.ftest('pow(1,0)', math.pow(1,0), 1)
-        self.ftest('pow(2,1)', math.pow(2,1), 2)
-        self.ftest('pow(2,-1)', math.pow(2,-1), 0.5)
-        self.assertEqual(math.pow(INF, 1), INF)
-        self.assertEqual(math.pow(NINF, 1), NINF)
-        self.assertEqual((math.pow(1, INF)), 1.)
-        self.assertEqual((math.pow(1, NINF)), 1.)
-        self.assertTrue(math.isnan(math.pow(NAN, 1)))
-        self.assertTrue(math.isnan(math.pow(2, NAN)))
-        self.assertTrue(math.isnan(math.pow(0, NAN)))
-        self.assertEqual(math.pow(1, NAN), 1)
-
-        # pow(0., x)
-        self.assertEqual(math.pow(0., INF), 0.)
-        self.assertEqual(math.pow(0., 3.), 0.)
-        self.assertEqual(math.pow(0., 2.3), 0.)
-        self.assertEqual(math.pow(0., 2.), 0.)
-        self.assertEqual(math.pow(0., 0.), 1.)
-        self.assertEqual(math.pow(0., -0.), 1.)
-        self.assertRaises(ValueError, math.pow, 0., -2.)
-        self.assertRaises(ValueError, math.pow, 0., -2.3)
-        self.assertRaises(ValueError, math.pow, 0., -3.)
-        self.assertRaises(ValueError, math.pow, 0., NINF)
-        self.assertTrue(math.isnan(math.pow(0., NAN)))
-
-        # pow(INF, x)
-        self.assertEqual(math.pow(INF, INF), INF)
-        self.assertEqual(math.pow(INF, 3.), INF)
-        self.assertEqual(math.pow(INF, 2.3), INF)
-        self.assertEqual(math.pow(INF, 2.), INF)
-        self.assertEqual(math.pow(INF, 0.), 1.)
-        self.assertEqual(math.pow(INF, -0.), 1.)
-        self.assertEqual(math.pow(INF, -2.), 0.)
-        self.assertEqual(math.pow(INF, -2.3), 0.)
-        self.assertEqual(math.pow(INF, -3.), 0.)
-        self.assertEqual(math.pow(INF, NINF), 0.)
-        self.assertTrue(math.isnan(math.pow(INF, NAN)))
-
-        # pow(-0., x)
-        self.assertEqual(math.pow(-0., INF), 0.)
-        self.assertEqual(math.pow(-0., 3.), -0.)
-        self.assertEqual(math.pow(-0., 2.3), 0.)
-        self.assertEqual(math.pow(-0., 2.), 0.)
-        self.assertEqual(math.pow(-0., 0.), 1.)
-        self.assertEqual(math.pow(-0., -0.), 1.)
-        self.assertRaises(ValueError, math.pow, -0., -2.)
-        self.assertRaises(ValueError, math.pow, -0., -2.3)
-        self.assertRaises(ValueError, math.pow, -0., -3.)
-        self.assertRaises(ValueError, math.pow, -0., NINF)
-        self.assertTrue(math.isnan(math.pow(-0., NAN)))
-
-        # pow(NINF, x)
-        self.assertEqual(math.pow(NINF, INF), INF)
-        self.assertEqual(math.pow(NINF, 3.), NINF)
-        self.assertEqual(math.pow(NINF, 2.3), INF)
-        self.assertEqual(math.pow(NINF, 2.), INF)
-        self.assertEqual(math.pow(NINF, 0.), 1.)
-        self.assertEqual(math.pow(NINF, -0.), 1.)
-        self.assertEqual(math.pow(NINF, -2.), 0.)
-        self.assertEqual(math.pow(NINF, -2.3), 0.)
-        self.assertEqual(math.pow(NINF, -3.), -0.)
-        self.assertEqual(math.pow(NINF, NINF), 0.)
-        self.assertTrue(math.isnan(math.pow(NINF, NAN)))
-
-        # pow(-1, x)
-        self.assertEqual(math.pow(-1., INF), 1.)
-        self.assertEqual(math.pow(-1., 3.), -1.)
-        self.assertRaises(ValueError, math.pow, -1., 2.3)
-        self.assertEqual(math.pow(-1., 2.), 1.)
-        self.assertEqual(math.pow(-1., 0.), 1.)
-        self.assertEqual(math.pow(-1., -0.), 1.)
-        self.assertEqual(math.pow(-1., -2.), 1.)
-        self.assertRaises(ValueError, math.pow, -1., -2.3)
-        self.assertEqual(math.pow(-1., -3.), -1.)
-        self.assertEqual(math.pow(-1., NINF), 1.)
-        self.assertTrue(math.isnan(math.pow(-1., NAN)))
-
-        # pow(1, x)
-        self.assertEqual(math.pow(1., INF), 1.)
-        self.assertEqual(math.pow(1., 3.), 1.)
-        self.assertEqual(math.pow(1., 2.3), 1.)
-        self.assertEqual(math.pow(1., 2.), 1.)
-        self.assertEqual(math.pow(1., 0.), 1.)
-        self.assertEqual(math.pow(1., -0.), 1.)
-        self.assertEqual(math.pow(1., -2.), 1.)
-        self.assertEqual(math.pow(1., -2.3), 1.)
-        self.assertEqual(math.pow(1., -3.), 1.)
-        self.assertEqual(math.pow(1., NINF), 1.)
-        self.assertEqual(math.pow(1., NAN), 1.)
-
-        # pow(x, 0) should be 1 for any x
-        self.assertEqual(math.pow(2.3, 0.), 1.)
-        self.assertEqual(math.pow(-2.3, 0.), 1.)
-        self.assertEqual(math.pow(NAN, 0.), 1.)
-        self.assertEqual(math.pow(2.3, -0.), 1.)
-        self.assertEqual(math.pow(-2.3, -0.), 1.)
-        self.assertEqual(math.pow(NAN, -0.), 1.)
-
-        # pow(x, y) is invalid if x is negative and y is not integral
-        self.assertRaises(ValueError, math.pow, -1., 2.3)
-        self.assertRaises(ValueError, math.pow, -15., -3.1)
-
-        # pow(x, NINF)
-        self.assertEqual(math.pow(1.9, NINF), 0.)
-        self.assertEqual(math.pow(1.1, NINF), 0.)
-        self.assertEqual(math.pow(0.9, NINF), INF)
-        self.assertEqual(math.pow(0.1, NINF), INF)
-        self.assertEqual(math.pow(-0.1, NINF), INF)
-        self.assertEqual(math.pow(-0.9, NINF), INF)
-        self.assertEqual(math.pow(-1.1, NINF), 0.)
-        self.assertEqual(math.pow(-1.9, NINF), 0.)
-
-        # pow(x, INF)
-        self.assertEqual(math.pow(1.9, INF), INF)
-        self.assertEqual(math.pow(1.1, INF), INF)
-        self.assertEqual(math.pow(0.9, INF), 0.)
-        self.assertEqual(math.pow(0.1, INF), 0.)
-        self.assertEqual(math.pow(-0.1, INF), 0.)
-        self.assertEqual(math.pow(-0.9, INF), 0.)
-        self.assertEqual(math.pow(-1.1, INF), INF)
-        self.assertEqual(math.pow(-1.9, INF), INF)
-
-        # pow(x, y) should work for x negative, y an integer
-        self.ftest('(-2.)**3.', math.pow(-2.0, 3.0), -8.0)
-        self.ftest('(-2.)**2.', math.pow(-2.0, 2.0), 4.0)
-        self.ftest('(-2.)**1.', math.pow(-2.0, 1.0), -2.0)
-        self.ftest('(-2.)**0.', math.pow(-2.0, 0.0), 1.0)
-        self.ftest('(-2.)**-0.', math.pow(-2.0, -0.0), 1.0)
-        self.ftest('(-2.)**-1.', math.pow(-2.0, -1.0), -0.5)
-        self.ftest('(-2.)**-2.', math.pow(-2.0, -2.0), 0.25)
-        self.ftest('(-2.)**-3.', math.pow(-2.0, -3.0), -0.125)
-        self.assertRaises(ValueError, math.pow, -2.0, -0.5)
-        self.assertRaises(ValueError, math.pow, -2.0, 0.5)
-
-        # the following tests have been commented out since they don't
-        # really belong here:  the implementation of ** for floats is
-        # independent of the implementation of math.pow
-        #self.assertEqual(1**NAN, 1)
-        #self.assertEqual(1**INF, 1)
-        #self.assertEqual(1**NINF, 1)
-        #self.assertEqual(1**0, 1)
-        #self.assertEqual(1.**NAN, 1)
-        #self.assertEqual(1.**INF, 1)
-        #self.assertEqual(1.**NINF, 1)
-        #self.assertEqual(1.**0, 1)
-
-    def testRadians(self):
-        self.assertRaises(TypeError, math.radians)
-        self.ftest('radians(180)', math.radians(180), math.pi)
-        self.ftest('radians(90)', math.radians(90), math.pi/2)
-        self.ftest('radians(-45)', math.radians(-45), -math.pi/4)
-
-    def testSin(self):
-        self.assertRaises(TypeError, math.sin)
-        self.ftest('sin(0)', math.sin(0), 0)
-        self.ftest('sin(pi/2)', math.sin(math.pi/2), 1)
-        self.ftest('sin(-pi/2)', math.sin(-math.pi/2), -1)
-        try:
-            self.assertTrue(math.isnan(math.sin(INF)))
-            self.assertTrue(math.isnan(math.sin(NINF)))
-        except ValueError:
-            self.assertRaises(ValueError, math.sin, INF)
-            self.assertRaises(ValueError, math.sin, NINF)
-        self.assertTrue(math.isnan(math.sin(NAN)))
-
-    def testSinh(self):
-        self.assertRaises(TypeError, math.sinh)
-        self.ftest('sinh(0)', math.sinh(0), 0)
-        self.ftest('sinh(1)**2-cosh(1)**2', math.sinh(1)**2-math.cosh(1)**2, -1)
-        self.ftest('sinh(1)+sinh(-1)', math.sinh(1)+math.sinh(-1), 0)
-        self.assertEqual(math.sinh(INF), INF)
-        self.assertEqual(math.sinh(NINF), NINF)
-        self.assertTrue(math.isnan(math.sinh(NAN)))
-
-    def testSqrt(self):
-        self.assertRaises(TypeError, math.sqrt)
-        self.ftest('sqrt(0)', math.sqrt(0), 0)
-        self.ftest('sqrt(1)', math.sqrt(1), 1)
-        self.ftest('sqrt(4)', math.sqrt(4), 2)
-        self.assertEqual(math.sqrt(INF), INF)
-        self.assertRaises(ValueError, math.sqrt, NINF)
-        self.assertTrue(math.isnan(math.sqrt(NAN)))
-
-    def testTan(self):
-        self.assertRaises(TypeError, math.tan)
-        self.ftest('tan(0)', math.tan(0), 0)
-        self.ftest('tan(pi/4)', math.tan(math.pi/4), 1)
-        self.ftest('tan(-pi/4)', math.tan(-math.pi/4), -1)
-        try:
-            self.assertTrue(math.isnan(math.tan(INF)))
-            self.assertTrue(math.isnan(math.tan(NINF)))
-        except:
-            self.assertRaises(ValueError, math.tan, INF)
-            self.assertRaises(ValueError, math.tan, NINF)
-        self.assertTrue(math.isnan(math.tan(NAN)))
-
-    def testTanh(self):
-        self.assertRaises(TypeError, math.tanh)
-        self.ftest('tanh(0)', math.tanh(0), 0)
-        self.ftest('tanh(1)+tanh(-1)', math.tanh(1)+math.tanh(-1), 0)
-        self.ftest('tanh(inf)', math.tanh(INF), 1)
-        self.ftest('tanh(-inf)', math.tanh(NINF), -1)
-        self.assertTrue(math.isnan(math.tanh(NAN)))
-        # check that tanh(-0.) == -0. on IEEE 754 systems
-        if float.__getformat__("double").startswith("IEEE"):
-            self.assertEqual(math.tanh(-0.), -0.)
-            self.assertEqual(math.copysign(1., math.tanh(-0.)),
-                             math.copysign(1., -0.))
-
-    def test_trunc(self):
-        self.assertEqual(math.trunc(1), 1)
-        self.assertEqual(math.trunc(-1), -1)
-        self.assertEqual(type(math.trunc(1)), int)
-        self.assertEqual(type(math.trunc(1.5)), int)
-        self.assertEqual(math.trunc(1.5), 1)
-        self.assertEqual(math.trunc(-1.5), -1)
-        self.assertEqual(math.trunc(1.999999), 1)
-        self.assertEqual(math.trunc(-1.999999), -1)
-        self.assertEqual(math.trunc(-0.999999), -0)
-        self.assertEqual(math.trunc(-100.999), -100)
-
-        class TestTrunc(object):
-            def __trunc__(self):
-                return 23
-
-        class TestNoTrunc(object):
-            pass
-
-        self.assertEqual(math.trunc(TestTrunc()), 23)
-
-        self.assertRaises(TypeError, math.trunc)
-        self.assertRaises(TypeError, math.trunc, 1, 2)
-        self.assertRaises((AttributeError, TypeError), math.trunc,
-                          TestNoTrunc())
-
-    def testIsnan(self):
-        self.assertTrue(math.isnan(float("nan")))
-        self.assertTrue(math.isnan(float("inf")* 0.))
-        self.assertFalse(math.isnan(float("inf")))
-        self.assertFalse(math.isnan(0.))
-        self.assertFalse(math.isnan(1.))
-
-    def testIsinf(self):
-        self.assertTrue(math.isinf(float("inf")))
-        self.assertTrue(math.isinf(float("-inf")))
-        self.assertTrue(math.isinf(1E400))
-        self.assertTrue(math.isinf(-1E400))
-        self.assertFalse(math.isinf(float("nan")))
-        self.assertFalse(math.isinf(0.))
-        self.assertFalse(math.isinf(1.))
-
-    # RED_FLAG 16-Oct-2000 Tim
-    # While 2.0 is more consistent about exceptions than previous releases, it
-    # still fails this part of the test on some platforms.  For now, we only
-    # *run* test_exceptions() in verbose mode, so that this isn't normally
-    # tested.
-
-    if verbose:
-        def test_exceptions(self):
-            try:
-                x = math.exp(-1000000000)
-            except:
-                # mathmodule.c is failing to weed out underflows from libm, or
-                # we've got an fp format with huge dynamic range
-                self.fail("underflowing exp() should not have raised "
-                          "an exception")
-            if x != 0:
-                self.fail("underflowing exp() should have returned 0")
-
-            # If this fails, probably using a strict IEEE-754 conforming libm, and x
-            # is +Inf afterwards.  But Python wants overflows detected by default.
-            try:
-                x = math.exp(1000000000)
-            except OverflowError:
-                pass
-            else:
-                self.fail("overflowing exp() didn't trigger OverflowError")
-
-            # If this fails, it could be a puzzle.  One odd possibility is that
-            # mathmodule.c's macros are getting confused while comparing
-            # Inf (HUGE_VAL) to a NaN, and artificially setting errno to ERANGE
-            # as a result (and so raising OverflowError instead).
-            try:
-                x = math.sqrt(-1.0)
-            except ValueError:
-                pass
-            else:
-                self.fail("sqrt(-1) didn't raise ValueError")
-
-    @requires_IEEE_754
-    def test_testfile(self):
-        for id, fn, ar, ai, er, ei, flags in parse_testfile(test_file):
-            # Skip if either the input or result is complex, or if
-            # flags is nonempty
-            if ai != 0. or ei != 0. or flags:
-                continue
-            if fn in ['rect', 'polar']:
-                # no real versions of rect, polar
-                continue
-            func = getattr(math, fn)
-            try:
-                result = func(ar)
-            except ValueError:
-                message = ("Unexpected ValueError in " +
-                           "test %s:%s(%r)\n" % (id, fn, ar))
-                self.fail(message)
-            except OverflowError:
-                message = ("Unexpected OverflowError in " +
-                           "test %s:%s(%r)\n" % (id, fn, ar))
-                self.fail(message)
-            self.ftest("%s:%s(%r)" % (id, fn, ar), result, er)
-
-    @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"),
-                         "test requires IEEE 754 doubles")
-    def test_mtestfile(self):
-        ALLOWED_ERROR = 20  # permitted error, in ulps
-        fail_fmt = "{}:{}({!r}): expected {!r}, got {!r}"
-
-        failures = []
-        for id, fn, arg, expected, flags in parse_mtestfile(math_testcases):
-            func = getattr(math, fn)
-
-            if 'invalid' in flags or 'divide-by-zero' in flags:
-                expected = 'ValueError'
-            elif 'overflow' in flags:
-                expected = 'OverflowError'
-
-            try:
-                got = func(arg)
-            except ValueError:
-                got = 'ValueError'
-            except OverflowError:
-                got = 'OverflowError'
-
-            accuracy_failure = None
-            if isinstance(got, float) and isinstance(expected, float):
-                if math.isnan(expected) and math.isnan(got):
-                    continue
-                if not math.isnan(expected) and not math.isnan(got):
-                    if fn == 'lgamma':
-                        # we use a weaker accuracy test for lgamma;
-                        # lgamma only achieves an absolute error of
-                        # a few multiples of the machine accuracy, in
-                        # general.
-                        accuracy_failure = acc_check(expected, got,
-                                                  rel_err = 5e-15,
-                                                  abs_err = 5e-15)
-                    elif fn == 'erfc':
-                        # erfc has less-than-ideal accuracy for large
-                        # arguments (x ~ 25 or so), mainly due to the
-                        # error involved in computing exp(-x*x).
-                        #
-                        # XXX Would be better to weaken this test only
-                        # for large x, instead of for all x.
-                        accuracy_failure = ulps_check(expected, got, 2000)
-
-                    else:
-                        accuracy_failure = ulps_check(expected, got, 20)
-                    if accuracy_failure is None:
-                        continue
-
-            if isinstance(got, str) and isinstance(expected, str):
-                if got == expected:
-                    continue
-
-            fail_msg = fail_fmt.format(id, fn, arg, expected, got)
-            if accuracy_failure is not None:
-                fail_msg += ' ({})'.format(accuracy_failure)
-            failures.append(fail_msg)
-
-        if failures:
-            self.fail('Failures in test_mtestfile:\n  ' +
-                      '\n  '.join(failures))
-
-
-def test_main():
-    from doctest import DocFileSuite
-    suite = unittest.TestSuite()
-    suite.addTest(unittest.makeSuite(MathTests))
-    suite.addTest(DocFileSuite("ieee754.txt"))
-    run_unittest(suite)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_md5.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_md5.py
deleted file mode 100644
index 9fb1b8a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_md5.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Testing md5 module
-import warnings
-warnings.filterwarnings("ignore", "the md5 module is deprecated.*",
-                        DeprecationWarning)
-
-import unittest
-from md5 import md5
-from test import test_support
-
-def hexstr(s):
-    import string
-    h = string.hexdigits
-    r = ''
-    for c in s:
-        i = ord(c)
-        r = r + h[(i >> 4) & 0xF] + h[i & 0xF]
-    return r
-
-class MD5_Test(unittest.TestCase):
-
-    def md5test(self, s, expected):
-        self.assertEqual(hexstr(md5(s).digest()), expected)
-        self.assertEqual(md5(s).hexdigest(), expected)
-
-    def test_basics(self):
-        eq = self.md5test
-        eq('', 'd41d8cd98f00b204e9800998ecf8427e')
-        eq('a', '0cc175b9c0f1b6a831c399e269772661')
-        eq('abc', '900150983cd24fb0d6963f7d28e17f72')
-        eq('message digest', 'f96b697d7cb7938d525a2f31aaf161d0')
-        eq('abcdefghijklmnopqrstuvwxyz', 'c3fcd3d76192e4007dfb496cca67e13b')
-        eq('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
-           'd174ab98d277d9f5a5611c2c9f419d9f')
-        eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890',
-           '57edf4a22be3c955ac49da2e2107b67a')
-
-    def test_hexdigest(self):
-        # hexdigest is new with Python 2.0
-        m = md5('testing the hexdigest method')
-        h = m.hexdigest()
-        self.assertEqual(hexstr(m.digest()), h)
-
-    def test_large_update(self):
-        aas = 'a' * 64
-        bees = 'b' * 64
-        cees = 'c' * 64
-
-        m1 = md5()
-        m1.update(aas)
-        m1.update(bees)
-        m1.update(cees)
-
-        m2 = md5()
-        m2.update(aas + bees + cees)
-        self.assertEqual(m1.digest(), m2.digest())
-
-def test_main():
-    test_support.run_unittest(MD5_Test)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_memoryio.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_memoryio.py
deleted file mode 100644
index fa96a4a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_memoryio.py
+++ /dev/null
@@ -1,707 +0,0 @@
-"""Unit tests for memory-based file-like objects.
-StringIO -- for unicode strings
-BytesIO -- for bytes
-"""
-
-from __future__ import unicode_literals
-from __future__ import print_function
-
-import unittest
-from test import test_support as support
-
-import io
-import _pyio as pyio
-import pickle
-
-class MemorySeekTestMixin:
-
-    def testInit(self):
-        buf = self.buftype("1234567890")
-        bytesIo = self.ioclass(buf)
-
-    def testRead(self):
-        buf = self.buftype("1234567890")
-        bytesIo = self.ioclass(buf)
-
-        self.assertEqual(buf[:1], bytesIo.read(1))
-        self.assertEqual(buf[1:5], bytesIo.read(4))
-        self.assertEqual(buf[5:], bytesIo.read(900))
-        self.assertEqual(self.EOF, bytesIo.read())
-
-    def testReadNoArgs(self):
-        buf = self.buftype("1234567890")
-        bytesIo = self.ioclass(buf)
-
-        self.assertEqual(buf, bytesIo.read())
-        self.assertEqual(self.EOF, bytesIo.read())
-
-    def testSeek(self):
-        buf = self.buftype("1234567890")
-        bytesIo = self.ioclass(buf)
-
-        bytesIo.read(5)
-        bytesIo.seek(0)
-        self.assertEqual(buf, bytesIo.read())
-
-        bytesIo.seek(3)
-        self.assertEqual(buf[3:], bytesIo.read())
-        self.assertRaises(TypeError, bytesIo.seek, 0.0)
-
-    def testTell(self):
-        buf = self.buftype("1234567890")
-        bytesIo = self.ioclass(buf)
-
-        self.assertEqual(0, bytesIo.tell())
-        bytesIo.seek(5)
-        self.assertEqual(5, bytesIo.tell())
-        bytesIo.seek(10000)
-        self.assertEqual(10000, bytesIo.tell())
-
-
-class MemoryTestMixin:
-
-    def test_detach(self):
-        buf = self.ioclass()
-        self.assertRaises(self.UnsupportedOperation, buf.detach)
-
-    def write_ops(self, f, t):
-        self.assertEqual(f.write(t("blah.")), 5)
-        self.assertEqual(f.seek(0), 0)
-        self.assertEqual(f.write(t("Hello.")), 6)
-        self.assertEqual(f.tell(), 6)
-        self.assertEqual(f.seek(5), 5)
-        self.assertEqual(f.tell(), 5)
-        self.assertEqual(f.write(t(" world\n\n\n")), 9)
-        self.assertEqual(f.seek(0), 0)
-        self.assertEqual(f.write(t("h")), 1)
-        self.assertEqual(f.truncate(12), 12)
-        self.assertEqual(f.tell(), 1)
-
-    def test_write(self):
-        buf = self.buftype("hello world\n")
-        memio = self.ioclass(buf)
-
-        self.write_ops(memio, self.buftype)
-        self.assertEqual(memio.getvalue(), buf)
-        memio = self.ioclass()
-        self.write_ops(memio, self.buftype)
-        self.assertEqual(memio.getvalue(), buf)
-        self.assertRaises(TypeError, memio.write, None)
-        memio.close()
-        self.assertRaises(ValueError, memio.write, self.buftype(""))
-
-    def test_writelines(self):
-        buf = self.buftype("1234567890")
-        memio = self.ioclass()
-
-        self.assertEqual(memio.writelines([buf] * 100), None)
-        self.assertEqual(memio.getvalue(), buf * 100)
-        memio.writelines([])
-        self.assertEqual(memio.getvalue(), buf * 100)
-        memio = self.ioclass()
-        self.assertRaises(TypeError, memio.writelines, [buf] + [1])
-        self.assertEqual(memio.getvalue(), buf)
-        self.assertRaises(TypeError, memio.writelines, None)
-        memio.close()
-        self.assertRaises(ValueError, memio.writelines, [])
-
-    def test_writelines_error(self):
-        memio = self.ioclass()
-        def error_gen():
-            yield self.buftype('spam')
-            raise KeyboardInterrupt
-
-        self.assertRaises(KeyboardInterrupt, memio.writelines, error_gen())
-
-    def test_truncate(self):
-        buf = self.buftype("1234567890")
-        memio = self.ioclass(buf)
-
-        self.assertRaises(ValueError, memio.truncate, -1)
-        memio.seek(6)
-        self.assertEqual(memio.truncate(), 6)
-        self.assertEqual(memio.getvalue(), buf[:6])
-        self.assertEqual(memio.truncate(4), 4)
-        self.assertEqual(memio.getvalue(), buf[:4])
-        # truncate() accepts long objects
-        self.assertEqual(memio.truncate(4L), 4)
-        self.assertEqual(memio.getvalue(), buf[:4])
-        self.assertEqual(memio.tell(), 6)
-        memio.seek(0, 2)
-        memio.write(buf)
-        self.assertEqual(memio.getvalue(), buf[:4] + buf)
-        pos = memio.tell()
-        self.assertEqual(memio.truncate(None), pos)
-        self.assertEqual(memio.tell(), pos)
-        self.assertRaises(TypeError, memio.truncate, '0')
-        memio.close()
-        self.assertRaises(ValueError, memio.truncate, 0)
-
-    def test_init(self):
-        buf = self.buftype("1234567890")
-        memio = self.ioclass(buf)
-        self.assertEqual(memio.getvalue(), buf)
-        memio = self.ioclass(None)
-        self.assertEqual(memio.getvalue(), self.EOF)
-        memio.__init__(buf * 2)
-        self.assertEqual(memio.getvalue(), buf * 2)
-        memio.__init__(buf)
-        self.assertEqual(memio.getvalue(), buf)
-
-    def test_read(self):
-        buf = self.buftype("1234567890")
-        memio = self.ioclass(buf)
-
-        self.assertEqual(memio.read(0), self.EOF)
-        self.assertEqual(memio.read(1), buf[:1])
-        # read() accepts long objects
-        self.assertEqual(memio.read(4L), buf[1:5])
-        self.assertEqual(memio.read(900), buf[5:])
-        self.assertEqual(memio.read(), self.EOF)
-        memio.seek(0)
-        self.assertEqual(memio.read(), buf)
-        self.assertEqual(memio.read(), self.EOF)
-        self.assertEqual(memio.tell(), 10)
-        memio.seek(0)
-        self.assertEqual(memio.read(-1), buf)
-        memio.seek(0)
-        self.assertEqual(type(memio.read()), type(buf))
-        memio.seek(100)
-        self.assertEqual(type(memio.read()), type(buf))
-        memio.seek(0)
-        self.assertEqual(memio.read(None), buf)
-        self.assertRaises(TypeError, memio.read, '')
-        memio.close()
-        self.assertRaises(ValueError, memio.read)
-
-    def test_readline(self):
-        buf = self.buftype("1234567890\n")
-        memio = self.ioclass(buf * 2)
-
-        self.assertEqual(memio.readline(0), self.EOF)
-        self.assertEqual(memio.readline(), buf)
-        self.assertEqual(memio.readline(), buf)
-        self.assertEqual(memio.readline(), self.EOF)
-        memio.seek(0)
-        self.assertEqual(memio.readline(5), buf[:5])
-        # readline() accepts long objects
-        self.assertEqual(memio.readline(5L), buf[5:10])
-        self.assertEqual(memio.readline(5), buf[10:15])
-        memio.seek(0)
-        self.assertEqual(memio.readline(-1), buf)
-        memio.seek(0)
-        self.assertEqual(memio.readline(0), self.EOF)
-
-        buf = self.buftype("1234567890\n")
-        memio = self.ioclass((buf * 3)[:-1])
-        self.assertEqual(memio.readline(), buf)
-        self.assertEqual(memio.readline(), buf)
-        self.assertEqual(memio.readline(), buf[:-1])
-        self.assertEqual(memio.readline(), self.EOF)
-        memio.seek(0)
-        self.assertEqual(type(memio.readline()), type(buf))
-        self.assertEqual(memio.readline(), buf)
-        self.assertRaises(TypeError, memio.readline, '')
-        memio.close()
-        self.assertRaises(ValueError,  memio.readline)
-
-    def test_readlines(self):
-        buf = self.buftype("1234567890\n")
-        memio = self.ioclass(buf * 10)
-
-        self.assertEqual(memio.readlines(), [buf] * 10)
-        memio.seek(5)
-        self.assertEqual(memio.readlines(), [buf[5:]] + [buf] * 9)
-        memio.seek(0)
-        # readlines() accepts long objects
-        self.assertEqual(memio.readlines(15L), [buf] * 2)
-        memio.seek(0)
-        self.assertEqual(memio.readlines(-1), [buf] * 10)
-        memio.seek(0)
-        self.assertEqual(memio.readlines(0), [buf] * 10)
-        memio.seek(0)
-        self.assertEqual(type(memio.readlines()[0]), type(buf))
-        memio.seek(0)
-        self.assertEqual(memio.readlines(None), [buf] * 10)
-        self.assertRaises(TypeError, memio.readlines, '')
-        memio.close()
-        self.assertRaises(ValueError, memio.readlines)
-
-    def test_iterator(self):
-        buf = self.buftype("1234567890\n")
-        memio = self.ioclass(buf * 10)
-
-        self.assertEqual(iter(memio), memio)
-        self.assertTrue(hasattr(memio, '__iter__'))
-        self.assertTrue(hasattr(memio, 'next'))
-        i = 0
-        for line in memio:
-            self.assertEqual(line, buf)
-            i += 1
-        self.assertEqual(i, 10)
-        memio.seek(0)
-        i = 0
-        for line in memio:
-            self.assertEqual(line, buf)
-            i += 1
-        self.assertEqual(i, 10)
-        memio = self.ioclass(buf * 2)
-        memio.close()
-        self.assertRaises(ValueError, next, memio)
-
-    def test_getvalue(self):
-        buf = self.buftype("1234567890")
-        memio = self.ioclass(buf)
-
-        self.assertEqual(memio.getvalue(), buf)
-        memio.read()
-        self.assertEqual(memio.getvalue(), buf)
-        self.assertEqual(type(memio.getvalue()), type(buf))
-        memio = self.ioclass(buf * 1000)
-        self.assertEqual(memio.getvalue()[-3:], self.buftype("890"))
-        memio = self.ioclass(buf)
-        memio.close()
-        self.assertRaises(ValueError, memio.getvalue)
-
-    def test_seek(self):
-        buf = self.buftype("1234567890")
-        memio = self.ioclass(buf)
-
-        memio.read(5)
-        self.assertRaises(ValueError, memio.seek, -1)
-        self.assertRaises(ValueError, memio.seek, 1, -1)
-        self.assertRaises(ValueError, memio.seek, 1, 3)
-        self.assertEqual(memio.seek(0), 0)
-        self.assertEqual(memio.seek(0, 0), 0)
-        self.assertEqual(memio.read(), buf)
-        self.assertEqual(memio.seek(3), 3)
-        # seek() accepts long objects
-        self.assertEqual(memio.seek(3L), 3)
-        self.assertEqual(memio.seek(0, 1), 3)
-        self.assertEqual(memio.read(), buf[3:])
-        self.assertEqual(memio.seek(len(buf)), len(buf))
-        self.assertEqual(memio.read(), self.EOF)
-        memio.seek(len(buf) + 1)
-        self.assertEqual(memio.read(), self.EOF)
-        self.assertEqual(memio.seek(0, 2), len(buf))
-        self.assertEqual(memio.read(), self.EOF)
-        memio.close()
-        self.assertRaises(ValueError, memio.seek, 0)
-
-    def test_overseek(self):
-        buf = self.buftype("1234567890")
-        memio = self.ioclass(buf)
-
-        self.assertEqual(memio.seek(len(buf) + 1), 11)
-        self.assertEqual(memio.read(), self.EOF)
-        self.assertEqual(memio.tell(), 11)
-        self.assertEqual(memio.getvalue(), buf)
-        memio.write(self.EOF)
-        self.assertEqual(memio.getvalue(), buf)
-        memio.write(buf)
-        self.assertEqual(memio.getvalue(), buf + self.buftype('\0') + buf)
-
-    def test_tell(self):
-        buf = self.buftype("1234567890")
-        memio = self.ioclass(buf)
-
-        self.assertEqual(memio.tell(), 0)
-        memio.seek(5)
-        self.assertEqual(memio.tell(), 5)
-        memio.seek(10000)
-        self.assertEqual(memio.tell(), 10000)
-        memio.close()
-        self.assertRaises(ValueError, memio.tell)
-
-    def test_flush(self):
-        buf = self.buftype("1234567890")
-        memio = self.ioclass(buf)
-
-        self.assertEqual(memio.flush(), None)
-
-    def test_flags(self):
-        memio = self.ioclass()
-
-        self.assertEqual(memio.writable(), True)
-        self.assertEqual(memio.readable(), True)
-        self.assertEqual(memio.seekable(), True)
-        self.assertEqual(memio.isatty(), False)
-        self.assertEqual(memio.closed, False)
-        memio.close()
-        self.assertEqual(memio.writable(), True)
-        self.assertEqual(memio.readable(), True)
-        self.assertEqual(memio.seekable(), True)
-        self.assertRaises(ValueError, memio.isatty)
-        self.assertEqual(memio.closed, True)
-
-    def test_subclassing(self):
-        buf = self.buftype("1234567890")
-        def test1():
-            class MemIO(self.ioclass):
-                pass
-            m = MemIO(buf)
-            return m.getvalue()
-        def test2():
-            class MemIO(self.ioclass):
-                def __init__(me, a, b):
-                    self.ioclass.__init__(me, a)
-            m = MemIO(buf, None)
-            return m.getvalue()
-        self.assertEqual(test1(), buf)
-        self.assertEqual(test2(), buf)
-
-    def test_instance_dict_leak(self):
-        # Test case for issue #6242.
-        # This will be caught by regrtest.py -R if this leak.
-        for _ in range(100):
-            memio = self.ioclass()
-            memio.foo = 1
-
-    def test_pickling(self):
-        buf = self.buftype("1234567890")
-        memio = self.ioclass(buf)
-        memio.foo = 42
-        memio.seek(2)
-
-        class PickleTestMemIO(self.ioclass):
-            def __init__(me, initvalue, foo):
-                self.ioclass.__init__(me, initvalue)
-                me.foo = foo
-            # __getnewargs__ is undefined on purpose. This checks that PEP 307
-            # is used to provide pickling support.
-
-        # Pickle expects the class to be on the module level. Here we use a
-        # little hack to allow the PickleTestMemIO class to derive from
-        # self.ioclass without having to define all combinations explicitly on
-        # the module-level.
-        import __main__
-        PickleTestMemIO.__module__ = '__main__'
-        __main__.PickleTestMemIO = PickleTestMemIO
-        submemio = PickleTestMemIO(buf, 80)
-        submemio.seek(2)
-
-        # We only support pickle protocol 2 and onward since we use extended
-        # __reduce__ API of PEP 307 to provide pickling support.
-        for proto in range(2, pickle.HIGHEST_PROTOCOL):
-            for obj in (memio, submemio):
-                obj2 = pickle.loads(pickle.dumps(obj, protocol=proto))
-                self.assertEqual(obj.getvalue(), obj2.getvalue())
-                self.assertEqual(obj.__class__, obj2.__class__)
-                self.assertEqual(obj.foo, obj2.foo)
-                self.assertEqual(obj.tell(), obj2.tell())
-                obj.close()
-                self.assertRaises(ValueError, pickle.dumps, obj, proto)
-        del __main__.PickleTestMemIO
-
-
-class PyBytesIOTest(MemoryTestMixin, MemorySeekTestMixin, unittest.TestCase):
-
-    UnsupportedOperation = pyio.UnsupportedOperation
-
-    @staticmethod
-    def buftype(s):
-        return s.encode("ascii")
-    ioclass = pyio.BytesIO
-    EOF = b""
-
-    def test_read1(self):
-        buf = self.buftype("1234567890")
-        memio = self.ioclass(buf)
-
-        self.assertRaises(TypeError, memio.read1)
-        self.assertEqual(memio.read(), buf)
-
-    def test_readinto(self):
-        buf = self.buftype("1234567890")
-        memio = self.ioclass(buf)
-
-        b = bytearray(b"hello")
-        self.assertEqual(memio.readinto(b), 5)
-        self.assertEqual(b, b"12345")
-        self.assertEqual(memio.readinto(b), 5)
-        self.assertEqual(b, b"67890")
-        self.assertEqual(memio.readinto(b), 0)
-        self.assertEqual(b, b"67890")
-        b = bytearray(b"hello world")
-        memio.seek(0)
-        self.assertEqual(memio.readinto(b), 10)
-        self.assertEqual(b, b"1234567890d")
-        b = bytearray(b"")
-        memio.seek(0)
-        self.assertEqual(memio.readinto(b), 0)
-        self.assertEqual(b, b"")
-        self.assertRaises(TypeError, memio.readinto, '')
-        import array
-        a = array.array(b'b', b"hello world")
-        memio = self.ioclass(buf)
-        memio.readinto(a)
-        self.assertEqual(a.tostring(), b"1234567890d")
-        memio.close()
-        self.assertRaises(ValueError, memio.readinto, b)
-        memio = self.ioclass(b"123")
-        b = bytearray()
-        memio.seek(42)
-        memio.readinto(b)
-        self.assertEqual(b, b"")
-
-    def test_relative_seek(self):
-        buf = self.buftype("1234567890")
-        memio = self.ioclass(buf)
-
-        self.assertEqual(memio.seek(-1, 1), 0)
-        self.assertEqual(memio.seek(3, 1), 3)
-        self.assertEqual(memio.seek(-4, 1), 0)
-        self.assertEqual(memio.seek(-1, 2), 9)
-        self.assertEqual(memio.seek(1, 1), 10)
-        self.assertEqual(memio.seek(1, 2), 11)
-        memio.seek(-3, 2)
-        self.assertEqual(memio.read(), buf[-3:])
-        memio.seek(0)
-        memio.seek(1, 1)
-        self.assertEqual(memio.read(), buf[1:])
-
-    def test_unicode(self):
-        memio = self.ioclass()
-
-        self.assertRaises(TypeError, self.ioclass, "1234567890")
-        self.assertRaises(TypeError, memio.write, "1234567890")
-        self.assertRaises(TypeError, memio.writelines, ["1234567890"])
-
-    def test_bytes_array(self):
-        buf = b"1234567890"
-        import array
-        a = array.array(b'b', buf)
-        memio = self.ioclass(a)
-        self.assertEqual(memio.getvalue(), buf)
-        self.assertEqual(memio.write(a), 10)
-        self.assertEqual(memio.getvalue(), buf)
-
-    def test_issue5449(self):
-        buf = self.buftype("1234567890")
-        self.ioclass(initial_bytes=buf)
-        self.assertRaises(TypeError, self.ioclass, buf, foo=None)
-
-
-class TextIOTestMixin:
-
-    def test_newlines_property(self):
-        memio = self.ioclass(newline=None)
-        # The C StringIO decodes newlines in write() calls, but the Python
-        # implementation only does when reading.  This function forces them to
-        # be decoded for testing.
-        def force_decode():
-            memio.seek(0)
-            memio.read()
-        self.assertEqual(memio.newlines, None)
-        memio.write("a\n")
-        force_decode()
-        self.assertEqual(memio.newlines, "\n")
-        memio.write("b\r\n")
-        force_decode()
-        self.assertEqual(memio.newlines, ("\n", "\r\n"))
-        memio.write("c\rd")
-        force_decode()
-        self.assertEqual(memio.newlines, ("\r", "\n", "\r\n"))
-
-    def test_relative_seek(self):
-        memio = self.ioclass()
-
-        self.assertRaises(IOError, memio.seek, -1, 1)
-        self.assertRaises(IOError, memio.seek, 3, 1)
-        self.assertRaises(IOError, memio.seek, -3, 1)
-        self.assertRaises(IOError, memio.seek, -1, 2)
-        self.assertRaises(IOError, memio.seek, 1, 1)
-        self.assertRaises(IOError, memio.seek, 1, 2)
-
-    def test_textio_properties(self):
-        memio = self.ioclass()
-
-        # These are just dummy values but we nevertheless check them for fear
-        # of unexpected breakage.
-        self.assertIsNone(memio.encoding)
-        self.assertIsNone(memio.errors)
-        self.assertFalse(memio.line_buffering)
-
-    def test_newline_none(self):
-        # newline=None
-        memio = self.ioclass("a\nb\r\nc\rd", newline=None)
-        self.assertEqual(list(memio), ["a\n", "b\n", "c\n", "d"])
-        memio.seek(0)
-        self.assertEqual(memio.read(1), "a")
-        self.assertEqual(memio.read(2), "\nb")
-        self.assertEqual(memio.read(2), "\nc")
-        self.assertEqual(memio.read(1), "\n")
-        memio = self.ioclass(newline=None)
-        self.assertEqual(2, memio.write("a\n"))
-        self.assertEqual(3, memio.write("b\r\n"))
-        self.assertEqual(3, memio.write("c\rd"))
-        memio.seek(0)
-        self.assertEqual(memio.read(), "a\nb\nc\nd")
-        memio = self.ioclass("a\r\nb", newline=None)
-        self.assertEqual(memio.read(3), "a\nb")
-
-    def test_newline_empty(self):
-        # newline=""
-        memio = self.ioclass("a\nb\r\nc\rd", newline="")
-        self.assertEqual(list(memio), ["a\n", "b\r\n", "c\r", "d"])
-        memio.seek(0)
-        self.assertEqual(memio.read(4), "a\nb\r")
-        self.assertEqual(memio.read(2), "\nc")
-        self.assertEqual(memio.read(1), "\r")
-        memio = self.ioclass(newline="")
-        self.assertEqual(2, memio.write("a\n"))
-        self.assertEqual(2, memio.write("b\r"))
-        self.assertEqual(2, memio.write("\nc"))
-        self.assertEqual(2, memio.write("\rd"))
-        memio.seek(0)
-        self.assertEqual(list(memio), ["a\n", "b\r\n", "c\r", "d"])
-
-    def test_newline_lf(self):
-        # newline="\n"
-        memio = self.ioclass("a\nb\r\nc\rd")
-        self.assertEqual(list(memio), ["a\n", "b\r\n", "c\rd"])
-
-    def test_newline_cr(self):
-        # newline="\r"
-        memio = self.ioclass("a\nb\r\nc\rd", newline="\r")
-        self.assertEqual(memio.read(), "a\rb\r\rc\rd")
-        memio.seek(0)
-        self.assertEqual(list(memio), ["a\r", "b\r", "\r", "c\r", "d"])
-
-    def test_newline_crlf(self):
-        # newline="\r\n"
-        memio = self.ioclass("a\nb\r\nc\rd", newline="\r\n")
-        self.assertEqual(memio.read(), "a\r\nb\r\r\nc\rd")
-        memio.seek(0)
-        self.assertEqual(list(memio), ["a\r\n", "b\r\r\n", "c\rd"])
-
-    def test_issue5265(self):
-        # StringIO can duplicate newlines in universal newlines mode
-        memio = self.ioclass("a\r\nb\r\n", newline=None)
-        self.assertEqual(memio.read(5), "a\nb\n")
-
-
-class PyStringIOTest(MemoryTestMixin, MemorySeekTestMixin,
-                     TextIOTestMixin, unittest.TestCase):
-    buftype = unicode
-    ioclass = pyio.StringIO
-    UnsupportedOperation = pyio.UnsupportedOperation
-    EOF = ""
-
-
-class PyStringIOPickleTest(TextIOTestMixin, unittest.TestCase):
-    """Test if pickle restores properly the internal state of StringIO.
-    """
-    buftype = unicode
-    UnsupportedOperation = pyio.UnsupportedOperation
-    EOF = ""
-
-    class ioclass(pyio.StringIO):
-        def __new__(cls, *args, **kwargs):
-            return pickle.loads(pickle.dumps(pyio.StringIO(*args, **kwargs)))
-        def __init__(self, *args, **kwargs):
-            pass
-
-
-class CBytesIOTest(PyBytesIOTest):
-    ioclass = io.BytesIO
-    UnsupportedOperation = io.UnsupportedOperation
-
-    test_bytes_array = unittest.skip(
-        "array.array() does not have the new buffer API"
-    )(PyBytesIOTest.test_bytes_array)
-
-
-    def test_getstate(self):
-        memio = self.ioclass()
-        state = memio.__getstate__()
-        self.assertEqual(len(state), 3)
-        bytearray(state[0]) # Check if state[0] supports the buffer interface.
-        self.assertIsInstance(state[1], int)
-        self.assertTrue(isinstance(state[2], dict) or state[2] is None)
-        memio.close()
-        self.assertRaises(ValueError, memio.__getstate__)
-
-    def test_setstate(self):
-        # This checks whether __setstate__ does proper input validation.
-        memio = self.ioclass()
-        memio.__setstate__((b"no error", 0, None))
-        memio.__setstate__((bytearray(b"no error"), 0, None))
-        memio.__setstate__((b"no error", 0, {'spam': 3}))
-        self.assertRaises(ValueError, memio.__setstate__, (b"", -1, None))
-        self.assertRaises(TypeError, memio.__setstate__, ("unicode", 0, None))
-        self.assertRaises(TypeError, memio.__setstate__, (b"", 0.0, None))
-        self.assertRaises(TypeError, memio.__setstate__, (b"", 0, 0))
-        self.assertRaises(TypeError, memio.__setstate__, (b"len-test", 0))
-        self.assertRaises(TypeError, memio.__setstate__)
-        self.assertRaises(TypeError, memio.__setstate__, 0)
-        memio.close()
-        self.assertRaises(ValueError, memio.__setstate__, (b"closed", 0, None))
-
-
-class CStringIOTest(PyStringIOTest):
-    ioclass = io.StringIO
-    UnsupportedOperation = io.UnsupportedOperation
-
-    # XXX: For the Python version of io.StringIO, this is highly
-    # dependent on the encoding used for the underlying buffer.
-    def test_widechar(self):
-        buf = self.buftype("\U0002030a\U00020347")
-        memio = self.ioclass(buf)
-
-        self.assertEqual(memio.getvalue(), buf)
-        self.assertEqual(memio.write(buf), len(buf))
-        self.assertEqual(memio.tell(), len(buf))
-        self.assertEqual(memio.getvalue(), buf)
-        self.assertEqual(memio.write(buf), len(buf))
-        self.assertEqual(memio.tell(), len(buf) * 2)
-        self.assertEqual(memio.getvalue(), buf + buf)
-
-    def test_getstate(self):
-        memio = self.ioclass()
-        state = memio.__getstate__()
-        self.assertEqual(len(state), 4)
-        self.assertIsInstance(state[0], unicode)
-        self.assertIsInstance(state[1], str)
-        self.assertIsInstance(state[2], int)
-        self.assertTrue(isinstance(state[3], dict) or state[3] is None)
-        memio.close()
-        self.assertRaises(ValueError, memio.__getstate__)
-
-    def test_setstate(self):
-        # This checks whether __setstate__ does proper input validation.
-        memio = self.ioclass()
-        memio.__setstate__(("no error", "\n", 0, None))
-        memio.__setstate__(("no error", "", 0, {'spam': 3}))
-        self.assertRaises(ValueError, memio.__setstate__, ("", "f", 0, None))
-        self.assertRaises(ValueError, memio.__setstate__, ("", "", -1, None))
-        self.assertRaises(TypeError, memio.__setstate__, (b"", "", 0, None))
-        # trunk is more tolerant than py3k on the type of the newline param
-        #self.assertRaises(TypeError, memio.__setstate__, ("", b"", 0, None))
-        self.assertRaises(TypeError, memio.__setstate__, ("", "", 0.0, None))
-        self.assertRaises(TypeError, memio.__setstate__, ("", "", 0, 0))
-        self.assertRaises(TypeError, memio.__setstate__, ("len-test", 0))
-        self.assertRaises(TypeError, memio.__setstate__)
-        self.assertRaises(TypeError, memio.__setstate__, 0)
-        memio.close()
-        self.assertRaises(ValueError, memio.__setstate__, ("closed", "", 0, None))
-
-
-class CStringIOPickleTest(PyStringIOPickleTest):
-    UnsupportedOperation = io.UnsupportedOperation
-
-    class ioclass(io.StringIO):
-        def __new__(cls, *args, **kwargs):
-            return pickle.loads(pickle.dumps(io.StringIO(*args, **kwargs),
-                                             protocol=2))
-        def __init__(self, *args, **kwargs):
-            pass
-
-
-def test_main():
-    tests = [PyBytesIOTest, PyStringIOTest, CBytesIOTest, CStringIOTest,
-             PyStringIOPickleTest, CStringIOPickleTest]
-    support.run_unittest(*tests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_memoryview.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_memoryview.py
deleted file mode 100644
index 15de961..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_memoryview.py
+++ /dev/null
@@ -1,361 +0,0 @@
-"""Unit tests for the memoryview
-
-XXX We need more tests! Some tests are in test_bytes
-"""
-
-import unittest
-import sys
-import gc
-import weakref
-import array
-from test import test_support
-import io
-
-
-class AbstractMemoryTests:
-    source_bytes = b"abcdef"
-
-    @property
-    def _source(self):
-        return self.source_bytes
-
-    @property
-    def _types(self):
-        return filter(None, [self.ro_type, self.rw_type])
-
-    def check_getitem_with_type(self, tp):
-        item = self.getitem_type
-        b = tp(self._source)
-        oldrefcount = sys.getrefcount(b)
-        m = self._view(b)
-        self.assertEqual(m[0], item(b"a"))
-        self.assertIsInstance(m[0], bytes)
-        self.assertEqual(m[5], item(b"f"))
-        self.assertEqual(m[-1], item(b"f"))
-        self.assertEqual(m[-6], item(b"a"))
-        # Bounds checking
-        self.assertRaises(IndexError, lambda: m[6])
-        self.assertRaises(IndexError, lambda: m[-7])
-        self.assertRaises(IndexError, lambda: m[sys.maxsize])
-        self.assertRaises(IndexError, lambda: m[-sys.maxsize])
-        # Type checking
-        self.assertRaises(TypeError, lambda: m[None])
-        self.assertRaises(TypeError, lambda: m[0.0])
-        self.assertRaises(TypeError, lambda: m["a"])
-        m = None
-        self.assertEqual(sys.getrefcount(b), oldrefcount)
-
-    def test_getitem(self):
-        for tp in self._types:
-            self.check_getitem_with_type(tp)
-
-    def test_iter(self):
-        for tp in self._types:
-            b = tp(self._source)
-            m = self._view(b)
-            self.assertEqual(list(m), [m[i] for i in range(len(m))])
-
-    def test_repr(self):
-        for tp in self._types:
-            b = tp(self._source)
-            m = self._view(b)
-            self.assertIsInstance(m.__repr__(), str)
-
-    def test_setitem_readonly(self):
-        if not self.ro_type:
-            return
-        b = self.ro_type(self._source)
-        oldrefcount = sys.getrefcount(b)
-        m = self._view(b)
-        def setitem(value):
-            m[0] = value
-        self.assertRaises(TypeError, setitem, b"a")
-        self.assertRaises(TypeError, setitem, 65)
-        self.assertRaises(TypeError, setitem, memoryview(b"a"))
-        m = None
-        self.assertEqual(sys.getrefcount(b), oldrefcount)
-
-    def test_setitem_writable(self):
-        if not self.rw_type:
-            return
-        tp = self.rw_type
-        b = self.rw_type(self._source)
-        oldrefcount = sys.getrefcount(b)
-        m = self._view(b)
-        m[0] = tp(b"0")
-        self._check_contents(tp, b, b"0bcdef")
-        m[1:3] = tp(b"12")
-        self._check_contents(tp, b, b"012def")
-        m[1:1] = tp(b"")
-        self._check_contents(tp, b, b"012def")
-        m[:] = tp(b"abcdef")
-        self._check_contents(tp, b, b"abcdef")
-
-        # Overlapping copies of a view into itself
-        m[0:3] = m[2:5]
-        self._check_contents(tp, b, b"cdedef")
-        m[:] = tp(b"abcdef")
-        m[2:5] = m[0:3]
-        self._check_contents(tp, b, b"ababcf")
-
-        def setitem(key, value):
-            m[key] = tp(value)
-        # Bounds checking
-        self.assertRaises(IndexError, setitem, 6, b"a")
-        self.assertRaises(IndexError, setitem, -7, b"a")
-        self.assertRaises(IndexError, setitem, sys.maxsize, b"a")
-        self.assertRaises(IndexError, setitem, -sys.maxsize, b"a")
-        # Wrong index/slice types
-        self.assertRaises(TypeError, setitem, 0.0, b"a")
-        self.assertRaises(TypeError, setitem, (0,), b"a")
-        self.assertRaises(TypeError, setitem, "a", b"a")
-        # Trying to resize the memory object
-        self.assertRaises(ValueError, setitem, 0, b"")
-        self.assertRaises(ValueError, setitem, 0, b"ab")
-        self.assertRaises(ValueError, setitem, slice(1,1), b"a")
-        self.assertRaises(ValueError, setitem, slice(0,2), b"a")
-
-        m = None
-        self.assertEqual(sys.getrefcount(b), oldrefcount)
-
-    def test_delitem(self):
-        for tp in self._types:
-            b = tp(self._source)
-            m = self._view(b)
-            with self.assertRaises(TypeError):
-                del m[1]
-            with self.assertRaises(TypeError):
-                del m[1:4]
-
-    def test_tobytes(self):
-        for tp in self._types:
-            m = self._view(tp(self._source))
-            b = m.tobytes()
-            # This calls self.getitem_type() on each separate byte of b"abcdef"
-            expected = b"".join(
-                self.getitem_type(c) for c in b"abcdef")
-            self.assertEqual(b, expected)
-            self.assertIsInstance(b, bytes)
-
-    def test_tolist(self):
-        for tp in self._types:
-            m = self._view(tp(self._source))
-            l = m.tolist()
-            self.assertEqual(l, map(ord, b"abcdef"))
-
-    def test_compare(self):
-        # memoryviews can compare for equality with other objects
-        # having the buffer interface.
-        for tp in self._types:
-            m = self._view(tp(self._source))
-            for tp_comp in self._types:
-                self.assertTrue(m == tp_comp(b"abcdef"))
-                self.assertFalse(m != tp_comp(b"abcdef"))
-                self.assertFalse(m == tp_comp(b"abcde"))
-                self.assertTrue(m != tp_comp(b"abcde"))
-                self.assertFalse(m == tp_comp(b"abcde1"))
-                self.assertTrue(m != tp_comp(b"abcde1"))
-            self.assertTrue(m == m)
-            self.assertTrue(m == m[:])
-            self.assertTrue(m[0:6] == m[:])
-            self.assertFalse(m[0:5] == m)
-
-            # Comparison with objects which don't support the buffer API
-            self.assertFalse(m == u"abcdef")
-            self.assertTrue(m != u"abcdef")
-            self.assertFalse(u"abcdef" == m)
-            self.assertTrue(u"abcdef" != m)
-
-            # Unordered comparisons are unimplemented, and therefore give
-            # arbitrary results (they raise a TypeError in py3k)
-
-    def check_attributes_with_type(self, tp):
-        m = self._view(tp(self._source))
-        self.assertEqual(m.format, self.format)
-        self.assertIsInstance(m.format, str)
-        self.assertEqual(m.itemsize, self.itemsize)
-        self.assertEqual(m.ndim, 1)
-        self.assertEqual(m.shape, (6,))
-        self.assertEqual(len(m), 6)
-        self.assertEqual(m.strides, (self.itemsize,))
-        self.assertEqual(m.suboffsets, None)
-        return m
-
-    def test_attributes_readonly(self):
-        if not self.ro_type:
-            return
-        m = self.check_attributes_with_type(self.ro_type)
-        self.assertEqual(m.readonly, True)
-
-    def test_attributes_writable(self):
-        if not self.rw_type:
-            return
-        m = self.check_attributes_with_type(self.rw_type)
-        self.assertEqual(m.readonly, False)
-
-    # Disabled: unicode uses the old buffer API in 2.x
-
-    #def test_getbuffer(self):
-        ## Test PyObject_GetBuffer() on a memoryview object.
-        #for tp in self._types:
-            #b = tp(self._source)
-            #oldrefcount = sys.getrefcount(b)
-            #m = self._view(b)
-            #oldviewrefcount = sys.getrefcount(m)
-            #s = unicode(m, "utf-8")
-            #self._check_contents(tp, b, s.encode("utf-8"))
-            #self.assertEqual(sys.getrefcount(m), oldviewrefcount)
-            #m = None
-            #self.assertEqual(sys.getrefcount(b), oldrefcount)
-
-    def test_gc(self):
-        for tp in self._types:
-            if not isinstance(tp, type):
-                # If tp is a factory rather than a plain type, skip
-                continue
-
-            class MySource(tp):
-                pass
-            class MyObject:
-                pass
-
-            # Create a reference cycle through a memoryview object
-            b = MySource(tp(b'abc'))
-            m = self._view(b)
-            o = MyObject()
-            b.m = m
-            b.o = o
-            wr = weakref.ref(o)
-            b = m = o = None
-            # The cycle must be broken
-            gc.collect()
-            self.assertTrue(wr() is None, wr())
-
-    def test_writable_readonly(self):
-        # Issue #10451: memoryview incorrectly exposes a readonly
-        # buffer as writable causing a segfault if using mmap
-        tp = self.ro_type
-        if tp is None:
-            return
-        b = tp(self._source)
-        m = self._view(b)
-        i = io.BytesIO(b'ZZZZ')
-        self.assertRaises(TypeError, i.readinto, m)
-
-# Variations on source objects for the buffer: bytes-like objects, then arrays
-# with itemsize > 1.
-# NOTE: support for multi-dimensional objects is unimplemented.
-
-class BaseBytesMemoryTests(AbstractMemoryTests):
-    ro_type = bytes
-    rw_type = bytearray
-    getitem_type = bytes
-    itemsize = 1
-    format = 'B'
-
-# Disabled: array.array() does not support the new buffer API in 2.x
-
-#class BaseArrayMemoryTests(AbstractMemoryTests):
-    #ro_type = None
-    #rw_type = lambda self, b: array.array('i', map(ord, b))
-    #getitem_type = lambda self, b: array.array('i', map(ord, b)).tostring()
-    #itemsize = array.array('i').itemsize
-    #format = 'i'
-
-    #def test_getbuffer(self):
-        ## XXX Test should be adapted for non-byte buffers
-        #pass
-
-    #def test_tolist(self):
-        ## XXX NotImplementedError: tolist() only supports byte views
-        #pass
-
-
-# Variations on indirection levels: memoryview, slice of memoryview,
-# slice of slice of memoryview.
-# This is important to test allocation subtleties.
-
-class BaseMemoryviewTests:
-    def _view(self, obj):
-        return memoryview(obj)
-
-    def _check_contents(self, tp, obj, contents):
-        self.assertEqual(obj, tp(contents))
-
-class BaseMemorySliceTests:
-    source_bytes = b"XabcdefY"
-
-    def _view(self, obj):
-        m = memoryview(obj)
-        return m[1:7]
-
-    def _check_contents(self, tp, obj, contents):
-        self.assertEqual(obj[1:7], tp(contents))
-
-    def test_refs(self):
-        for tp in self._types:
-            m = memoryview(tp(self._source))
-            oldrefcount = sys.getrefcount(m)
-            m[1:2]
-            self.assertEqual(sys.getrefcount(m), oldrefcount)
-
-class BaseMemorySliceSliceTests:
-    source_bytes = b"XabcdefY"
-
-    def _view(self, obj):
-        m = memoryview(obj)
-        return m[:7][1:]
-
-    def _check_contents(self, tp, obj, contents):
-        self.assertEqual(obj[1:7], tp(contents))
-
-
-# Concrete test classes
-
-class BytesMemoryviewTest(unittest.TestCase,
-    BaseMemoryviewTests, BaseBytesMemoryTests):
-
-    def test_constructor(self):
-        for tp in self._types:
-            ob = tp(self._source)
-            self.assertTrue(memoryview(ob))
-            self.assertTrue(memoryview(object=ob))
-            self.assertRaises(TypeError, memoryview)
-            self.assertRaises(TypeError, memoryview, ob, ob)
-            self.assertRaises(TypeError, memoryview, argument=ob)
-            self.assertRaises(TypeError, memoryview, ob, argument=True)
-
-#class ArrayMemoryviewTest(unittest.TestCase,
-    #BaseMemoryviewTests, BaseArrayMemoryTests):
-
-    #def test_array_assign(self):
-        ## Issue #4569: segfault when mutating a memoryview with itemsize != 1
-        #a = array.array('i', range(10))
-        #m = memoryview(a)
-        #new_a = array.array('i', range(9, -1, -1))
-        #m[:] = new_a
-        #self.assertEqual(a, new_a)
-
-
-class BytesMemorySliceTest(unittest.TestCase,
-    BaseMemorySliceTests, BaseBytesMemoryTests):
-    pass
-
-#class ArrayMemorySliceTest(unittest.TestCase,
-    #BaseMemorySliceTests, BaseArrayMemoryTests):
-    #pass
-
-class BytesMemorySliceSliceTest(unittest.TestCase,
-    BaseMemorySliceSliceTests, BaseBytesMemoryTests):
-    pass
-
-#class ArrayMemorySliceSliceTest(unittest.TestCase,
-    #BaseMemorySliceSliceTests, BaseArrayMemoryTests):
-    #pass
-
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mhlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mhlib.py
deleted file mode 100644
index d9e02f8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mhlib.py
+++ /dev/null
@@ -1,348 +0,0 @@
-"""
-   Tests for the mhlib module
-   Nick Mathewson
-"""
-
-### BUG: This suite doesn't currently test the mime functionality of
-###      mhlib.  It should.
-
-import unittest
-from test.test_support import run_unittest, TESTFN, import_module
-import os, StringIO
-import sys
-mhlib = import_module('mhlib', deprecated=True)
-
-if (sys.platform.startswith("win") or sys.platform=="riscos" or
-      sys.platform.startswith("atheos")):
-    # mhlib.updateline() renames a file to the name of a file that already
-    # exists.  That causes a reasonable OS <wink> to complain in test_sequence
-    # here, like the "OSError: [Errno 17] File exists" raised on Windows.
-    # mhlib's listsubfolders() and listallfolders() do something with
-    # link counts, and that causes test_listfolders() here to get back
-    # an empty list from its call of listallfolders().
-    # The other tests here pass on Windows.
-    raise unittest.SkipTest("skipped on %s -- " % sys.platform +
-                            "too many Unix assumptions")
-
-_mhroot = TESTFN+"_MH"
-_mhpath = os.path.join(_mhroot, "MH")
-_mhprofile = os.path.join(_mhroot, ".mh_profile")
-
-def normF(f):
-    return os.path.join(*f.split('/'))
-
-def writeFile(fname, contents):
-    dir = os.path.split(fname)[0]
-    if dir and not os.path.exists(dir):
-        mkdirs(dir)
-    f = open(fname, 'w')
-    f.write(contents)
-    f.close()
-
-def readFile(fname):
-    f = open(fname)
-    r = f.read()
-    f.close()
-    return r
-
-def writeProfile(dict):
-    contents = [ "%s: %s\n" % (k, v) for k, v in dict.iteritems() ]
-    writeFile(_mhprofile, "".join(contents))
-
-def writeContext(folder):
-    folder = normF(folder)
-    writeFile(os.path.join(_mhpath, "context"),
-              "Current-Folder: %s\n" % folder)
-
-def writeCurMessage(folder, cur):
-    folder = normF(folder)
-    writeFile(os.path.join(_mhpath, folder, ".mh_sequences"),
-              "cur: %s\n"%cur)
-
-def writeMessage(folder, n, headers, body):
-    folder = normF(folder)
-    headers = "".join([ "%s: %s\n" % (k, v) for k, v in headers.iteritems() ])
-    contents = "%s\n%s\n" % (headers,body)
-    mkdirs(os.path.join(_mhpath, folder))
-    writeFile(os.path.join(_mhpath, folder, str(n)), contents)
-
-def getMH():
-    return mhlib.MH(os.path.abspath(_mhpath), _mhprofile)
-
-def sortLines(s):
-    lines = s.split("\n")
-    lines = [ line.strip() for line in lines if len(line) >= 2 ]
-    lines.sort()
-    return lines
-
-# These next 2 functions are copied from test_glob.py.
-def mkdirs(fname):
-    if os.path.exists(fname) or fname == '':
-        return
-    base, file = os.path.split(fname)
-    mkdirs(base)
-    os.mkdir(fname)
-
-def deltree(fname):
-    if not os.path.exists(fname):
-        return
-    for f in os.listdir(fname):
-        fullname = os.path.join(fname, f)
-        if os.path.isdir(fullname):
-            deltree(fullname)
-        else:
-            try:
-                os.unlink(fullname)
-            except:
-                pass
-    try:
-        os.rmdir(fname)
-    except:
-        pass
-
-class MhlibTests(unittest.TestCase):
-    def setUp(self):
-        deltree(_mhroot)
-        mkdirs(_mhpath)
-        writeProfile({'Path' : os.path.abspath(_mhpath),
-                      'Editor': 'emacs',
-                      'ignored-attribute': 'camping holiday'})
-        # Note: These headers aren't really conformant to RFC822, but
-        #  mhlib shouldn't care about that.
-
-        # An inbox with a couple of messages.
-        writeMessage('inbox', 1,
-                     {'From': 'Mrs. Premise',
-                      'To': 'Mrs. Conclusion',
-                      'Date': '18 July 2001'}, "Hullo, Mrs. Conclusion!\n")
-        writeMessage('inbox', 2,
-                     {'From': 'Mrs. Conclusion',
-                      'To': 'Mrs. Premise',
-                      'Date': '29 July 2001'}, "Hullo, Mrs. Premise!\n")
-
-        # A folder with many messages
-        for i in range(5, 101)+range(101, 201, 2):
-            writeMessage('wide', i,
-                         {'From': 'nowhere', 'Subject': 'message #%s' % i},
-                         "This is message number %s\n" % i)
-
-        # A deeply nested folder
-        def deep(folder, n):
-            writeMessage(folder, n,
-                         {'Subject': 'Message %s/%s' % (folder, n) },
-                         "This is message number %s in %s\n" % (n, folder) )
-        deep('deep/f1', 1)
-        deep('deep/f1', 2)
-        deep('deep/f1', 3)
-        deep('deep/f2', 4)
-        deep('deep/f2', 6)
-        deep('deep', 3)
-        deep('deep/f2/f3', 1)
-        deep('deep/f2/f3', 2)
-
-    def tearDown(self):
-        deltree(_mhroot)
-
-    def test_basic(self):
-        writeContext('inbox')
-        writeCurMessage('inbox', 2)
-        mh = getMH()
-
-        eq = self.assertEqual
-        eq(mh.getprofile('Editor'), 'emacs')
-        eq(mh.getprofile('not-set'), None)
-        eq(mh.getpath(), os.path.abspath(_mhpath))
-        eq(mh.getcontext(), 'inbox')
-
-        mh.setcontext('wide')
-        eq(mh.getcontext(), 'wide')
-        eq(readFile(os.path.join(_mhpath, 'context')),
-           "Current-Folder: wide\n")
-
-        mh.setcontext('inbox')
-
-        inbox = mh.openfolder('inbox')
-        eq(inbox.getfullname(),
-           os.path.join(os.path.abspath(_mhpath), 'inbox'))
-        eq(inbox.getsequencesfilename(),
-           os.path.join(os.path.abspath(_mhpath), 'inbox', '.mh_sequences'))
-        eq(inbox.getmessagefilename(1),
-           os.path.join(os.path.abspath(_mhpath), 'inbox', '1'))
-
-    def test_listfolders(self):
-        mh = getMH()
-        eq = self.assertEqual
-
-        folders = mh.listfolders()
-        folders.sort()
-        eq(folders, ['deep', 'inbox', 'wide'])
-
-        folders = mh.listallfolders()
-        folders.sort()
-        tfolders = map(normF, ['deep', 'deep/f1', 'deep/f2', 'deep/f2/f3',
-                                'inbox', 'wide'])
-        tfolders.sort()
-        eq(folders, tfolders)
-
-        folders = mh.listsubfolders('deep')
-        folders.sort()
-        eq(folders, map(normF, ['deep/f1', 'deep/f2']))
-
-        folders = mh.listallsubfolders('deep')
-        folders.sort()
-        eq(folders, map(normF, ['deep/f1', 'deep/f2', 'deep/f2/f3']))
-        eq(mh.listsubfolders(normF('deep/f2')), [normF('deep/f2/f3')])
-
-        eq(mh.listsubfolders('inbox'), [])
-        eq(mh.listallsubfolders('inbox'), [])
-
-    def test_sequence(self):
-        mh = getMH()
-        eq = self.assertEqual
-        writeCurMessage('wide', 55)
-
-        f = mh.openfolder('wide')
-        all = f.listmessages()
-        eq(all, range(5, 101)+range(101, 201, 2))
-        eq(f.getcurrent(), 55)
-        f.setcurrent(99)
-        eq(readFile(os.path.join(_mhpath, 'wide', '.mh_sequences')),
-           'cur: 99\n')
-
-        def seqeq(seq, val):
-            eq(f.parsesequence(seq), val)
-
-        seqeq('5-55', range(5, 56))
-        seqeq('90-108', range(90, 101)+range(101, 109, 2))
-        seqeq('90-108', range(90, 101)+range(101, 109, 2))
-
-        seqeq('10:10', range(10, 20))
-        seqeq('10:+10', range(10, 20))
-        seqeq('101:10', range(101, 121, 2))
-
-        seqeq('cur', [99])
-        seqeq('.', [99])
-        seqeq('prev', [98])
-        seqeq('next', [100])
-        seqeq('cur:-3', [97, 98, 99])
-        seqeq('first-cur', range(5, 100))
-        seqeq('150-last', range(151, 201, 2))
-        seqeq('prev-next', [98, 99, 100])
-
-        lowprimes = [5, 7, 11, 13, 17, 19, 23, 29]
-        lowcompos = [x for x in range(5, 31) if not x in lowprimes ]
-        f.putsequences({'cur': [5],
-                        'lowprime': lowprimes,
-                        'lowcompos': lowcompos})
-        seqs = readFile(os.path.join(_mhpath, 'wide', '.mh_sequences'))
-        seqs = sortLines(seqs)
-        eq(seqs, ["cur: 5",
-                  "lowcompos: 6 8-10 12 14-16 18 20-22 24-28 30",
-                  "lowprime: 5 7 11 13 17 19 23 29"])
-
-        seqeq('lowprime', lowprimes)
-        seqeq('lowprime:1', [5])
-        seqeq('lowprime:2', [5, 7])
-        seqeq('lowprime:-2', [23, 29])
-
-        ## Not supported
-        #seqeq('lowprime:first', [5])
-        #seqeq('lowprime:last', [29])
-        #seqeq('lowprime:prev', [29])
-        #seqeq('lowprime:next', [29])
-
-    def test_modify(self):
-        mh = getMH()
-        eq = self.assertEqual
-
-        mh.makefolder("dummy1")
-        self.assertIn("dummy1", mh.listfolders())
-        path = os.path.join(_mhpath, "dummy1")
-        self.assertTrue(os.path.exists(path))
-
-        f = mh.openfolder('dummy1')
-        def create(n):
-            msg = "From: foo\nSubject: %s\n\nDummy Message %s\n" % (n,n)
-            f.createmessage(n, StringIO.StringIO(msg))
-
-        create(7)
-        create(8)
-        create(9)
-
-        eq(readFile(f.getmessagefilename(9)),
-           "From: foo\nSubject: 9\n\nDummy Message 9\n")
-
-        eq(f.listmessages(), [7, 8, 9])
-        files = os.listdir(path)
-        files.sort()
-        eq(files, ['7', '8', '9'])
-
-        f.removemessages(['7', '8'])
-        files = os.listdir(path)
-        files.sort()
-        eq(files, [',7', ',8', '9'])
-        eq(f.listmessages(), [9])
-        create(10)
-        create(11)
-        create(12)
-
-        mh.makefolder("dummy2")
-        f2 = mh.openfolder("dummy2")
-        eq(f2.listmessages(), [])
-        f.movemessage(10, f2, 3)
-        f.movemessage(11, f2, 5)
-        eq(f.listmessages(), [9, 12])
-        eq(f2.listmessages(), [3, 5])
-        eq(readFile(f2.getmessagefilename(3)),
-           "From: foo\nSubject: 10\n\nDummy Message 10\n")
-
-        f.copymessage(9, f2, 4)
-        eq(f.listmessages(), [9, 12])
-        eq(readFile(f2.getmessagefilename(4)),
-           "From: foo\nSubject: 9\n\nDummy Message 9\n")
-
-        f.refilemessages([9, 12], f2)
-        eq(f.listmessages(), [])
-        eq(f2.listmessages(), [3, 4, 5, 6, 7])
-        eq(readFile(f2.getmessagefilename(7)),
-           "From: foo\nSubject: 12\n\nDummy Message 12\n")
-        # XXX This should check that _copysequences does the right thing.
-
-        mh.deletefolder('dummy1')
-        mh.deletefolder('dummy2')
-        self.assertNotIn('dummy1', mh.listfolders())
-        self.assertTrue(not os.path.exists(path))
-
-    def test_read(self):
-        mh = getMH()
-        eq = self.assertEqual
-
-        f = mh.openfolder('inbox')
-        msg = f.openmessage(1)
-        # Check some basic stuff from rfc822
-        eq(msg.getheader('From'), "Mrs. Premise")
-        eq(msg.getheader('To'), "Mrs. Conclusion")
-
-        # Okay, we have the right message.  Let's check the stuff from
-        # mhlib.
-        lines = sortLines(msg.getheadertext())
-        eq(lines, ["Date: 18 July 2001",
-                   "From: Mrs. Premise",
-                   "To: Mrs. Conclusion"])
-        lines = sortLines(msg.getheadertext(lambda h: len(h)==4))
-        eq(lines, ["Date: 18 July 2001",
-                   "From: Mrs. Premise"])
-        eq(msg.getbodytext(), "Hullo, Mrs. Conclusion!\n\n")
-        eq(msg.getbodytext(0), "Hullo, Mrs. Conclusion!\n\n")
-
-        # XXXX there should be a better way to reclaim the file handle
-        msg.fp.close()
-        del msg
-
-
-def test_main():
-    run_unittest(MhlibTests)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mimetools.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mimetools.py
deleted file mode 100644
index c1ad7cc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mimetools.py
+++ /dev/null
@@ -1,53 +0,0 @@
-import unittest
-from test import test_support
-
-import string
-import StringIO
-
-mimetools = test_support.import_module("mimetools", deprecated=True)
-
-msgtext1 = mimetools.Message(StringIO.StringIO(
-"""Content-Type: text/plain; charset=iso-8859-1; format=flowed
-Content-Transfer-Encoding: 8bit
-
-Foo!
-"""))
-
-class MimeToolsTest(unittest.TestCase):
-
-    def test_decodeencode(self):
-        start = string.ascii_letters + "=" + string.digits + "\n"
-        for enc in ['7bit','8bit','base64','quoted-printable',
-                    'uuencode', 'x-uuencode', 'uue', 'x-uue']:
-            i = StringIO.StringIO(start)
-            o = StringIO.StringIO()
-            mimetools.encode(i, o, enc)
-            i = StringIO.StringIO(o.getvalue())
-            o = StringIO.StringIO()
-            mimetools.decode(i, o, enc)
-            self.assertEqual(o.getvalue(), start)
-
-    def test_boundary(self):
-        s = set([""])
-        for i in xrange(100):
-            nb = mimetools.choose_boundary()
-            self.assertNotIn(nb, s)
-            s.add(nb)
-
-    def test_message(self):
-        msg = mimetools.Message(StringIO.StringIO(msgtext1))
-        self.assertEqual(msg.gettype(), "text/plain")
-        self.assertEqual(msg.getmaintype(), "text")
-        self.assertEqual(msg.getsubtype(), "plain")
-        self.assertEqual(msg.getplist(), ["charset=iso-8859-1", "format=flowed"])
-        self.assertEqual(msg.getparamnames(), ["charset", "format"])
-        self.assertEqual(msg.getparam("charset"), "iso-8859-1")
-        self.assertEqual(msg.getparam("format"), "flowed")
-        self.assertEqual(msg.getparam("spam"), None)
-        self.assertEqual(msg.getencoding(), "8bit")
-
-def test_main():
-    test_support.run_unittest(MimeToolsTest)
-
-if __name__=="__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mimetypes.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mimetypes.py
deleted file mode 100644
index d450950..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mimetypes.py
+++ /dev/null
@@ -1,94 +0,0 @@
-import mimetypes
-import StringIO
-import unittest
-import sys
-
-from test import test_support
-
-# Tell it we don't know about external files:
-mimetypes.knownfiles = []
-mimetypes.inited = False
-mimetypes._default_mime_types()
-
-
-class MimeTypesTestCase(unittest.TestCase):
-    def setUp(self):
-        self.db = mimetypes.MimeTypes()
-
-    def test_default_data(self):
-        eq = self.assertEqual
-        eq(self.db.guess_type("foo.html"), ("text/html", None))
-        eq(self.db.guess_type("foo.tgz"), ("application/x-tar", "gzip"))
-        eq(self.db.guess_type("foo.tar.gz"), ("application/x-tar", "gzip"))
-        eq(self.db.guess_type("foo.tar.Z"), ("application/x-tar", "compress"))
-
-    def test_data_urls(self):
-        eq = self.assertEqual
-        guess_type = self.db.guess_type
-        eq(guess_type("data:,thisIsTextPlain"), ("text/plain", None))
-        eq(guess_type("data:;base64,thisIsTextPlain"), ("text/plain", None))
-        eq(guess_type("data:text/x-foo,thisIsTextXFoo"), ("text/x-foo", None))
-
-    def test_file_parsing(self):
-        eq = self.assertEqual
-        sio = StringIO.StringIO("x-application/x-unittest pyunit\n")
-        self.db.readfp(sio)
-        eq(self.db.guess_type("foo.pyunit"),
-           ("x-application/x-unittest", None))
-        eq(self.db.guess_extension("x-application/x-unittest"), ".pyunit")
-
-    def test_non_standard_types(self):
-        eq = self.assertEqual
-        # First try strict
-        eq(self.db.guess_type('foo.xul', strict=True), (None, None))
-        eq(self.db.guess_extension('image/jpg', strict=True), None)
-        # And then non-strict
-        eq(self.db.guess_type('foo.xul', strict=False), ('text/xul', None))
-        eq(self.db.guess_extension('image/jpg', strict=False), '.jpg')
-
-    def test_guess_all_types(self):
-        eq = self.assertEqual
-        unless = self.assertTrue
-        # First try strict.  Use a set here for testing the results because if
-        # test_urllib2 is run before test_mimetypes, global state is modified
-        # such that the 'all' set will have more items in it.
-        all = set(self.db.guess_all_extensions('text/plain', strict=True))
-        unless(all >= set(['.bat', '.c', '.h', '.ksh', '.pl', '.txt']))
-        # And now non-strict
-        all = self.db.guess_all_extensions('image/jpg', strict=False)
-        all.sort()
-        eq(all, ['.jpg'])
-        # And now for no hits
-        all = self.db.guess_all_extensions('image/jpg', strict=True)
-        eq(all, [])
-
-
-@unittest.skipUnless(sys.platform.startswith("win"), "Windows only")
-class Win32MimeTypesTestCase(unittest.TestCase):
-    def setUp(self):
-        # ensure all entries actually come from the Windows registry
-        self.original_types_map = mimetypes.types_map.copy()
-        mimetypes.types_map.clear()
-        mimetypes.init()
-        self.db = mimetypes.MimeTypes()
-
-    def tearDown(self):
-        # restore default settings
-        mimetypes.types_map.clear()
-        mimetypes.types_map.update(self.original_types_map)
-
-    def test_registry_parsing(self):
-        # the original, minimum contents of the MIME database in the
-        # Windows registry is undocumented AFAIK.
-        # Use file types that should *always* exist:
-        eq = self.assertEqual
-        eq(self.db.guess_type("foo.txt"), ("text/plain", None))
-
-def test_main():
-    test_support.run_unittest(MimeTypesTestCase,
-        Win32MimeTypesTestCase
-        )
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_minidom.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_minidom.py
deleted file mode 100644
index 2622ae5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_minidom.py
+++ /dev/null
@@ -1,1477 +0,0 @@
-# test for xml.dom.minidom
-
-import pickle
-from StringIO import StringIO
-from test.test_support import verbose, run_unittest, findfile
-import unittest
-
-import xml.dom
-import xml.dom.minidom
-import xml.parsers.expat
-
-from xml.dom.minidom import parse, Node, Document, parseString
-from xml.dom.minidom import getDOMImplementation
-
-
-tstfile = findfile("test.xml", subdir="xmltestdata")
-
-
-# The tests of DocumentType importing use these helpers to construct
-# the documents to work with, since not all DOM builders actually
-# create the DocumentType nodes.
-def create_doc_without_doctype(doctype=None):
-    return getDOMImplementation().createDocument(None, "doc", doctype)
-
-def create_nonempty_doctype():
-    doctype = getDOMImplementation().createDocumentType("doc", None, None)
-    doctype.entities._seq = []
-    doctype.notations._seq = []
-    notation = xml.dom.minidom.Notation("my-notation", None,
-                                        "http://xml.python.org/notations/my")
-    doctype.notations._seq.append(notation)
-    entity = xml.dom.minidom.Entity("my-entity", None,
-                                    "http://xml.python.org/entities/my",
-                                    "my-notation")
-    entity.version = "1.0"
-    entity.encoding = "utf-8"
-    entity.actualEncoding = "us-ascii"
-    doctype.entities._seq.append(entity)
-    return doctype
-
-def create_doc_with_doctype():
-    doctype = create_nonempty_doctype()
-    doc = create_doc_without_doctype(doctype)
-    doctype.entities.item(0).ownerDocument = doc
-    doctype.notations.item(0).ownerDocument = doc
-    return doc
-
-class MinidomTest(unittest.TestCase):
-    def confirm(self, test, testname = "Test"):
-        self.assertTrue(test, testname)
-
-    def checkWholeText(self, node, s):
-        t = node.wholeText
-        self.confirm(t == s, "looking for %s, found %s" % (repr(s), repr(t)))
-
-    def testParseFromFile(self):
-        dom = parse(StringIO(open(tstfile).read()))
-        dom.unlink()
-        self.confirm(isinstance(dom,Document))
-
-    def testGetElementsByTagName(self):
-        dom = parse(tstfile)
-        self.confirm(dom.getElementsByTagName("LI") == \
-                dom.documentElement.getElementsByTagName("LI"))
-        dom.unlink()
-
-    def testInsertBefore(self):
-        dom = parseString("<doc><foo/></doc>")
-        root = dom.documentElement
-        elem = root.childNodes[0]
-        nelem = dom.createElement("element")
-        root.insertBefore(nelem, elem)
-        self.confirm(len(root.childNodes) == 2
-                and root.childNodes.length == 2
-                and root.childNodes[0] is nelem
-                and root.childNodes.item(0) is nelem
-                and root.childNodes[1] is elem
-                and root.childNodes.item(1) is elem
-                and root.firstChild is nelem
-                and root.lastChild is elem
-                and root.toxml() == "<doc><element/><foo/></doc>"
-                , "testInsertBefore -- node properly placed in tree")
-        nelem = dom.createElement("element")
-        root.insertBefore(nelem, None)
-        self.confirm(len(root.childNodes) == 3
-                and root.childNodes.length == 3
-                and root.childNodes[1] is elem
-                and root.childNodes.item(1) is elem
-                and root.childNodes[2] is nelem
-                and root.childNodes.item(2) is nelem
-                and root.lastChild is nelem
-                and nelem.previousSibling is elem
-                and root.toxml() == "<doc><element/><foo/><element/></doc>"
-                , "testInsertBefore -- node properly placed in tree")
-        nelem2 = dom.createElement("bar")
-        root.insertBefore(nelem2, nelem)
-        self.confirm(len(root.childNodes) == 4
-                and root.childNodes.length == 4
-                and root.childNodes[2] is nelem2
-                and root.childNodes.item(2) is nelem2
-                and root.childNodes[3] is nelem
-                and root.childNodes.item(3) is nelem
-                and nelem2.nextSibling is nelem
-                and nelem.previousSibling is nelem2
-                and root.toxml() ==
-                "<doc><element/><foo/><bar/><element/></doc>"
-                , "testInsertBefore -- node properly placed in tree")
-        dom.unlink()
-
-    def _create_fragment_test_nodes(self):
-        dom = parseString("<doc/>")
-        orig = dom.createTextNode("original")
-        c1 = dom.createTextNode("foo")
-        c2 = dom.createTextNode("bar")
-        c3 = dom.createTextNode("bat")
-        dom.documentElement.appendChild(orig)
-        frag = dom.createDocumentFragment()
-        frag.appendChild(c1)
-        frag.appendChild(c2)
-        frag.appendChild(c3)
-        return dom, orig, c1, c2, c3, frag
-
-    def testInsertBeforeFragment(self):
-        dom, orig, c1, c2, c3, frag = self._create_fragment_test_nodes()
-        dom.documentElement.insertBefore(frag, None)
-        self.confirm(tuple(dom.documentElement.childNodes) ==
-                     (orig, c1, c2, c3),
-                     "insertBefore(<fragment>, None)")
-        frag.unlink()
-        dom.unlink()
-
-        dom, orig, c1, c2, c3, frag = self._create_fragment_test_nodes()
-        dom.documentElement.insertBefore(frag, orig)
-        self.confirm(tuple(dom.documentElement.childNodes) ==
-                     (c1, c2, c3, orig),
-                     "insertBefore(<fragment>, orig)")
-        frag.unlink()
-        dom.unlink()
-
-    def testAppendChild(self):
-        dom = parse(tstfile)
-        dom.documentElement.appendChild(dom.createComment(u"Hello"))
-        self.confirm(dom.documentElement.childNodes[-1].nodeName == "#comment")
-        self.confirm(dom.documentElement.childNodes[-1].data == "Hello")
-        dom.unlink()
-
-    def testAppendChildFragment(self):
-        dom, orig, c1, c2, c3, frag = self._create_fragment_test_nodes()
-        dom.documentElement.appendChild(frag)
-        self.confirm(tuple(dom.documentElement.childNodes) ==
-                     (orig, c1, c2, c3),
-                     "appendChild(<fragment>)")
-        frag.unlink()
-        dom.unlink()
-
-    def testReplaceChildFragment(self):
-        dom, orig, c1, c2, c3, frag = self._create_fragment_test_nodes()
-        dom.documentElement.replaceChild(frag, orig)
-        orig.unlink()
-        self.confirm(tuple(dom.documentElement.childNodes) == (c1, c2, c3),
-                "replaceChild(<fragment>)")
-        frag.unlink()
-        dom.unlink()
-
-    def testLegalChildren(self):
-        dom = Document()
-        elem = dom.createElement('element')
-        text = dom.createTextNode('text')
-        self.assertRaises(xml.dom.HierarchyRequestErr, dom.appendChild, text)
-
-        dom.appendChild(elem)
-        self.assertRaises(xml.dom.HierarchyRequestErr, dom.insertBefore, text,
-                          elem)
-        self.assertRaises(xml.dom.HierarchyRequestErr, dom.replaceChild, text,
-                          elem)
-
-        nodemap = elem.attributes
-        self.assertRaises(xml.dom.HierarchyRequestErr, nodemap.setNamedItem,
-                          text)
-        self.assertRaises(xml.dom.HierarchyRequestErr, nodemap.setNamedItemNS,
-                          text)
-
-        elem.appendChild(text)
-        dom.unlink()
-
-    def testNamedNodeMapSetItem(self):
-        dom = Document()
-        elem = dom.createElement('element')
-        attrs = elem.attributes
-        attrs["foo"] = "bar"
-        a = attrs.item(0)
-        self.confirm(a.ownerDocument is dom,
-                "NamedNodeMap.__setitem__() sets ownerDocument")
-        self.confirm(a.ownerElement is elem,
-                "NamedNodeMap.__setitem__() sets ownerElement")
-        self.confirm(a.value == "bar",
-                "NamedNodeMap.__setitem__() sets value")
-        self.confirm(a.nodeValue == "bar",
-                "NamedNodeMap.__setitem__() sets nodeValue")
-        elem.unlink()
-        dom.unlink()
-
-    def testNonZero(self):
-        dom = parse(tstfile)
-        self.confirm(dom)# should not be zero
-        dom.appendChild(dom.createComment("foo"))
-        self.confirm(not dom.childNodes[-1].childNodes)
-        dom.unlink()
-
-    def testUnlink(self):
-        dom = parse(tstfile)
-        dom.unlink()
-
-    def testElement(self):
-        dom = Document()
-        dom.appendChild(dom.createElement("abc"))
-        self.confirm(dom.documentElement)
-        dom.unlink()
-
-    def testAAA(self):
-        dom = parseString("<abc/>")
-        el = dom.documentElement
-        el.setAttribute("spam", "jam2")
-        self.confirm(el.toxml() == '<abc spam="jam2"/>', "testAAA")
-        a = el.getAttributeNode("spam")
-        self.confirm(a.ownerDocument is dom,
-                "setAttribute() sets ownerDocument")
-        self.confirm(a.ownerElement is dom.documentElement,
-                "setAttribute() sets ownerElement")
-        dom.unlink()
-
-    def testAAB(self):
-        dom = parseString("<abc/>")
-        el = dom.documentElement
-        el.setAttribute("spam", "jam")
-        el.setAttribute("spam", "jam2")
-        self.confirm(el.toxml() == '<abc spam="jam2"/>', "testAAB")
-        dom.unlink()
-
-    def testAddAttr(self):
-        dom = Document()
-        child = dom.appendChild(dom.createElement("abc"))
-
-        child.setAttribute("def", "ghi")
-        self.confirm(child.getAttribute("def") == "ghi")
-        self.confirm(child.attributes["def"].value == "ghi")
-
-        child.setAttribute("jkl", "mno")
-        self.confirm(child.getAttribute("jkl") == "mno")
-        self.confirm(child.attributes["jkl"].value == "mno")
-
-        self.confirm(len(child.attributes) == 2)
-
-        child.setAttribute("def", "newval")
-        self.confirm(child.getAttribute("def") == "newval")
-        self.confirm(child.attributes["def"].value == "newval")
-
-        self.confirm(len(child.attributes) == 2)
-        dom.unlink()
-
-    def testDeleteAttr(self):
-        dom = Document()
-        child = dom.appendChild(dom.createElement("abc"))
-
-        self.confirm(len(child.attributes) == 0)
-        child.setAttribute("def", "ghi")
-        self.confirm(len(child.attributes) == 1)
-        del child.attributes["def"]
-        self.confirm(len(child.attributes) == 0)
-        dom.unlink()
-
-    def testRemoveAttr(self):
-        dom = Document()
-        child = dom.appendChild(dom.createElement("abc"))
-
-        child.setAttribute("def", "ghi")
-        self.confirm(len(child.attributes) == 1)
-        child.removeAttribute("def")
-        self.confirm(len(child.attributes) == 0)
-        dom.unlink()
-
-    def testRemoveAttrNS(self):
-        dom = Document()
-        child = dom.appendChild(
-                dom.createElementNS("http://www.python.org", "python:abc"))
-        child.setAttributeNS("http://www.w3.org", "xmlns:python",
-                                                "http://www.python.org")
-        child.setAttributeNS("http://www.python.org", "python:abcattr", "foo")
-        self.confirm(len(child.attributes) == 2)
-        child.removeAttributeNS("http://www.python.org", "abcattr")
-        self.confirm(len(child.attributes) == 1)
-        dom.unlink()
-
-    def testRemoveAttributeNode(self):
-        dom = Document()
-        child = dom.appendChild(dom.createElement("foo"))
-        child.setAttribute("spam", "jam")
-        self.confirm(len(child.attributes) == 1)
-        node = child.getAttributeNode("spam")
-        child.removeAttributeNode(node)
-        self.confirm(len(child.attributes) == 0
-                and child.getAttributeNode("spam") is None)
-        dom.unlink()
-
-    def testChangeAttr(self):
-        dom = parseString("<abc/>")
-        el = dom.documentElement
-        el.setAttribute("spam", "jam")
-        self.confirm(len(el.attributes) == 1)
-        el.setAttribute("spam", "bam")
-        # Set this attribute to be an ID and make sure that doesn't change
-        # when changing the value:
-        el.setIdAttribute("spam")
-        self.confirm(len(el.attributes) == 1
-                and el.attributes["spam"].value == "bam"
-                and el.attributes["spam"].nodeValue == "bam"
-                and el.getAttribute("spam") == "bam"
-                and el.getAttributeNode("spam").isId)
-        el.attributes["spam"] = "ham"
-        self.confirm(len(el.attributes) == 1
-                and el.attributes["spam"].value == "ham"
-                and el.attributes["spam"].nodeValue == "ham"
-                and el.getAttribute("spam") == "ham"
-                and el.attributes["spam"].isId)
-        el.setAttribute("spam2", "bam")
-        self.confirm(len(el.attributes) == 2
-                and el.attributes["spam"].value == "ham"
-                and el.attributes["spam"].nodeValue == "ham"
-                and el.getAttribute("spam") == "ham"
-                and el.attributes["spam2"].value == "bam"
-                and el.attributes["spam2"].nodeValue == "bam"
-                and el.getAttribute("spam2") == "bam")
-        el.attributes["spam2"] = "bam2"
-        self.confirm(len(el.attributes) == 2
-                and el.attributes["spam"].value == "ham"
-                and el.attributes["spam"].nodeValue == "ham"
-                and el.getAttribute("spam") == "ham"
-                and el.attributes["spam2"].value == "bam2"
-                and el.attributes["spam2"].nodeValue == "bam2"
-                and el.getAttribute("spam2") == "bam2")
-        dom.unlink()
-
-    def testGetAttrList(self):
-        pass
-
-    def testGetAttrValues(self): pass
-
-    def testGetAttrLength(self): pass
-
-    def testGetAttribute(self): pass
-
-    def testGetAttributeNS(self): pass
-
-    def testGetAttributeNode(self): pass
-
-    def testGetElementsByTagNameNS(self):
-        d="""<foo xmlns:minidom='http://pyxml.sf.net/minidom'>
-        <minidom:myelem/>
-        </foo>"""
-        dom = parseString(d)
-        elems = dom.getElementsByTagNameNS("http://pyxml.sf.net/minidom",
-                                           "myelem")
-        self.confirm(len(elems) == 1
-                and elems[0].namespaceURI == "http://pyxml.sf.net/minidom"
-                and elems[0].localName == "myelem"
-                and elems[0].prefix == "minidom"
-                and elems[0].tagName == "minidom:myelem"
-                and elems[0].nodeName == "minidom:myelem")
-        dom.unlink()
-
-    def get_empty_nodelist_from_elements_by_tagName_ns_helper(self, doc, nsuri,
-                                                              lname):
-        nodelist = doc.getElementsByTagNameNS(nsuri, lname)
-        self.confirm(len(nodelist) == 0)
-
-    def testGetEmptyNodeListFromElementsByTagNameNS(self):
-        doc = parseString('<doc/>')
-        self.get_empty_nodelist_from_elements_by_tagName_ns_helper(
-            doc, 'http://xml.python.org/namespaces/a', 'localname')
-        self.get_empty_nodelist_from_elements_by_tagName_ns_helper(
-            doc, '*', 'splat')
-        self.get_empty_nodelist_from_elements_by_tagName_ns_helper(
-            doc, 'http://xml.python.org/namespaces/a', '*')
-
-        doc = parseString('<doc xmlns="http://xml.python.org/splat"><e/></doc>')
-        self.get_empty_nodelist_from_elements_by_tagName_ns_helper(
-            doc, "http://xml.python.org/splat", "not-there")
-        self.get_empty_nodelist_from_elements_by_tagName_ns_helper(
-            doc, "*", "not-there")
-        self.get_empty_nodelist_from_elements_by_tagName_ns_helper(
-            doc, "http://somewhere.else.net/not-there", "e")
-
-    def testElementReprAndStr(self):
-        dom = Document()
-        el = dom.appendChild(dom.createElement("abc"))
-        string1 = repr(el)
-        string2 = str(el)
-        self.confirm(string1 == string2)
-        dom.unlink()
-
-    def testElementReprAndStrUnicode(self):
-        dom = Document()
-        el = dom.appendChild(dom.createElement(u"abc"))
-        string1 = repr(el)
-        string2 = str(el)
-        self.confirm(string1 == string2)
-        dom.unlink()
-
-    def testElementReprAndStrUnicodeNS(self):
-        dom = Document()
-        el = dom.appendChild(
-            dom.createElementNS(u"http://www.slashdot.org", u"slash:abc"))
-        string1 = repr(el)
-        string2 = str(el)
-        self.confirm(string1 == string2)
-        self.confirm("slash:abc" in string1)
-        dom.unlink()
-
-    def testAttributeRepr(self):
-        dom = Document()
-        el = dom.appendChild(dom.createElement(u"abc"))
-        node = el.setAttribute("abc", "def")
-        self.confirm(str(node) == repr(node))
-        dom.unlink()
-
-    def testTextNodeRepr(self): pass
-
-    def testWriteXML(self):
-        str = '<?xml version="1.0" ?><a b="c"/>'
-        dom = parseString(str)
-        domstr = dom.toxml()
-        dom.unlink()
-        self.confirm(str == domstr)
-
-    def testAltNewline(self):
-        str = '<?xml version="1.0" ?>\n<a b="c"/>\n'
-        dom = parseString(str)
-        domstr = dom.toprettyxml(newl="\r\n")
-        dom.unlink()
-        self.confirm(domstr == str.replace("\n", "\r\n"))
-
-    def testProcessingInstruction(self):
-        dom = parseString('<e><?mypi \t\n data \t\n ?></e>')
-        pi = dom.documentElement.firstChild
-        self.confirm(pi.target == "mypi"
-                and pi.data == "data \t\n "
-                and pi.nodeName == "mypi"
-                and pi.nodeType == Node.PROCESSING_INSTRUCTION_NODE
-                and pi.attributes is None
-                and not pi.hasChildNodes()
-                and len(pi.childNodes) == 0
-                and pi.firstChild is None
-                and pi.lastChild is None
-                and pi.localName is None
-                and pi.namespaceURI == xml.dom.EMPTY_NAMESPACE)
-
-    def testProcessingInstructionRepr(self): pass
-
-    def testTextRepr(self): pass
-
-    def testWriteText(self): pass
-
-    def testDocumentElement(self): pass
-
-    def testTooManyDocumentElements(self):
-        doc = parseString("<doc/>")
-        elem = doc.createElement("extra")
-        # Should raise an exception when adding an extra document element.
-        self.assertRaises(xml.dom.HierarchyRequestErr, doc.appendChild, elem)
-        elem.unlink()
-        doc.unlink()
-
-    def testCreateElementNS(self): pass
-
-    def testCreateAttributeNS(self): pass
-
-    def testParse(self): pass
-
-    def testParseString(self): pass
-
-    def testComment(self): pass
-
-    def testAttrListItem(self): pass
-
-    def testAttrListItems(self): pass
-
-    def testAttrListItemNS(self): pass
-
-    def testAttrListKeys(self): pass
-
-    def testAttrListKeysNS(self): pass
-
-    def testRemoveNamedItem(self):
-        doc = parseString("<doc a=''/>")
-        e = doc.documentElement
-        attrs = e.attributes
-        a1 = e.getAttributeNode("a")
-        a2 = attrs.removeNamedItem("a")
-        self.confirm(a1.isSameNode(a2))
-        self.assertRaises(xml.dom.NotFoundErr, attrs.removeNamedItem, "a")
-
-    def testRemoveNamedItemNS(self):
-        doc = parseString("<doc xmlns:a='http://xml.python.org/' a:b=''/>")
-        e = doc.documentElement
-        attrs = e.attributes
-        a1 = e.getAttributeNodeNS("http://xml.python.org/", "b")
-        a2 = attrs.removeNamedItemNS("http://xml.python.org/", "b")
-        self.confirm(a1.isSameNode(a2))
-        self.assertRaises(xml.dom.NotFoundErr, attrs.removeNamedItemNS,
-                          "http://xml.python.org/", "b")
-
-    def testAttrListValues(self): pass
-
-    def testAttrListLength(self): pass
-
-    def testAttrList__getitem__(self): pass
-
-    def testAttrList__setitem__(self): pass
-
-    def testSetAttrValueandNodeValue(self): pass
-
-    def testParseElement(self): pass
-
-    def testParseAttributes(self): pass
-
-    def testParseElementNamespaces(self): pass
-
-    def testParseAttributeNamespaces(self): pass
-
-    def testParseProcessingInstructions(self): pass
-
-    def testChildNodes(self): pass
-
-    def testFirstChild(self): pass
-
-    def testHasChildNodes(self): pass
-
-    def _testCloneElementCopiesAttributes(self, e1, e2, test):
-        attrs1 = e1.attributes
-        attrs2 = e2.attributes
-        keys1 = attrs1.keys()
-        keys2 = attrs2.keys()
-        keys1.sort()
-        keys2.sort()
-        self.confirm(keys1 == keys2, "clone of element has same attribute keys")
-        for i in range(len(keys1)):
-            a1 = attrs1.item(i)
-            a2 = attrs2.item(i)
-            self.confirm(a1 is not a2
-                    and a1.value == a2.value
-                    and a1.nodeValue == a2.nodeValue
-                    and a1.namespaceURI == a2.namespaceURI
-                    and a1.localName == a2.localName
-                    , "clone of attribute node has proper attribute values")
-            self.confirm(a2.ownerElement is e2,
-                    "clone of attribute node correctly owned")
-
-    def _setupCloneElement(self, deep):
-        dom = parseString("<doc attr='value'><foo/></doc>")
-        root = dom.documentElement
-        clone = root.cloneNode(deep)
-        self._testCloneElementCopiesAttributes(
-            root, clone, "testCloneElement" + (deep and "Deep" or "Shallow"))
-        # mutilate the original so shared data is detected
-        root.tagName = root.nodeName = "MODIFIED"
-        root.setAttribute("attr", "NEW VALUE")
-        root.setAttribute("added", "VALUE")
-        return dom, clone
-
-    def testCloneElementShallow(self):
-        dom, clone = self._setupCloneElement(0)
-        self.confirm(len(clone.childNodes) == 0
-                and clone.childNodes.length == 0
-                and clone.parentNode is None
-                and clone.toxml() == '<doc attr="value"/>'
-                , "testCloneElementShallow")
-        dom.unlink()
-
-    def testCloneElementDeep(self):
-        dom, clone = self._setupCloneElement(1)
-        self.confirm(len(clone.childNodes) == 1
-                and clone.childNodes.length == 1
-                and clone.parentNode is None
-                and clone.toxml() == '<doc attr="value"><foo/></doc>'
-                , "testCloneElementDeep")
-        dom.unlink()
-
-    def testCloneDocumentShallow(self):
-        doc = parseString("<?xml version='1.0'?>\n"
-                    "<!-- comment -->"
-                    "<!DOCTYPE doc [\n"
-                    "<!NOTATION notation SYSTEM 'http://xml.python.org/'>\n"
-                    "]>\n"
-                    "<doc attr='value'/>")
-        doc2 = doc.cloneNode(0)
-        self.confirm(doc2 is None,
-                "testCloneDocumentShallow:"
-                " shallow cloning of documents makes no sense!")
-
-    def testCloneDocumentDeep(self):
-        doc = parseString("<?xml version='1.0'?>\n"
-                    "<!-- comment -->"
-                    "<!DOCTYPE doc [\n"
-                    "<!NOTATION notation SYSTEM 'http://xml.python.org/'>\n"
-                    "]>\n"
-                    "<doc attr='value'/>")
-        doc2 = doc.cloneNode(1)
-        self.confirm(not (doc.isSameNode(doc2) or doc2.isSameNode(doc)),
-                "testCloneDocumentDeep: document objects not distinct")
-        self.confirm(len(doc.childNodes) == len(doc2.childNodes),
-                "testCloneDocumentDeep: wrong number of Document children")
-        self.confirm(doc2.documentElement.nodeType == Node.ELEMENT_NODE,
-                "testCloneDocumentDeep: documentElement not an ELEMENT_NODE")
-        self.confirm(doc2.documentElement.ownerDocument.isSameNode(doc2),
-            "testCloneDocumentDeep: documentElement owner is not new document")
-        self.confirm(not doc.documentElement.isSameNode(doc2.documentElement),
-                "testCloneDocumentDeep: documentElement should not be shared")
-        if doc.doctype is not None:
-            # check the doctype iff the original DOM maintained it
-            self.confirm(doc2.doctype.nodeType == Node.DOCUMENT_TYPE_NODE,
-                    "testCloneDocumentDeep: doctype not a DOCUMENT_TYPE_NODE")
-            self.confirm(doc2.doctype.ownerDocument.isSameNode(doc2))
-            self.confirm(not doc.doctype.isSameNode(doc2.doctype))
-
-    def testCloneDocumentTypeDeepOk(self):
-        doctype = create_nonempty_doctype()
-        clone = doctype.cloneNode(1)
-        self.confirm(clone is not None
-                and clone.nodeName == doctype.nodeName
-                and clone.name == doctype.name
-                and clone.publicId == doctype.publicId
-                and clone.systemId == doctype.systemId
-                and len(clone.entities) == len(doctype.entities)
-                and clone.entities.item(len(clone.entities)) is None
-                and len(clone.notations) == len(doctype.notations)
-                and clone.notations.item(len(clone.notations)) is None
-                and len(clone.childNodes) == 0)
-        for i in range(len(doctype.entities)):
-            se = doctype.entities.item(i)
-            ce = clone.entities.item(i)
-            self.confirm((not se.isSameNode(ce))
-                    and (not ce.isSameNode(se))
-                    and ce.nodeName == se.nodeName
-                    and ce.notationName == se.notationName
-                    and ce.publicId == se.publicId
-                    and ce.systemId == se.systemId
-                    and ce.encoding == se.encoding
-                    and ce.actualEncoding == se.actualEncoding
-                    and ce.version == se.version)
-        for i in range(len(doctype.notations)):
-            sn = doctype.notations.item(i)
-            cn = clone.notations.item(i)
-            self.confirm((not sn.isSameNode(cn))
-                    and (not cn.isSameNode(sn))
-                    and cn.nodeName == sn.nodeName
-                    and cn.publicId == sn.publicId
-                    and cn.systemId == sn.systemId)
-
-    def testCloneDocumentTypeDeepNotOk(self):
-        doc = create_doc_with_doctype()
-        clone = doc.doctype.cloneNode(1)
-        self.confirm(clone is None, "testCloneDocumentTypeDeepNotOk")
-
-    def testCloneDocumentTypeShallowOk(self):
-        doctype = create_nonempty_doctype()
-        clone = doctype.cloneNode(0)
-        self.confirm(clone is not None
-                and clone.nodeName == doctype.nodeName
-                and clone.name == doctype.name
-                and clone.publicId == doctype.publicId
-                and clone.systemId == doctype.systemId
-                and len(clone.entities) == 0
-                and clone.entities.item(0) is None
-                and len(clone.notations) == 0
-                and clone.notations.item(0) is None
-                and len(clone.childNodes) == 0)
-
-    def testCloneDocumentTypeShallowNotOk(self):
-        doc = create_doc_with_doctype()
-        clone = doc.doctype.cloneNode(0)
-        self.confirm(clone is None, "testCloneDocumentTypeShallowNotOk")
-
-    def check_import_document(self, deep, testName):
-        doc1 = parseString("<doc/>")
-        doc2 = parseString("<doc/>")
-        self.assertRaises(xml.dom.NotSupportedErr, doc1.importNode, doc2, deep)
-
-    def testImportDocumentShallow(self):
-        self.check_import_document(0, "testImportDocumentShallow")
-
-    def testImportDocumentDeep(self):
-        self.check_import_document(1, "testImportDocumentDeep")
-
-    def testImportDocumentTypeShallow(self):
-        src = create_doc_with_doctype()
-        target = create_doc_without_doctype()
-        self.assertRaises(xml.dom.NotSupportedErr, target.importNode,
-                          src.doctype, 0)
-
-    def testImportDocumentTypeDeep(self):
-        src = create_doc_with_doctype()
-        target = create_doc_without_doctype()
-        self.assertRaises(xml.dom.NotSupportedErr, target.importNode,
-                          src.doctype, 1)
-
-    # Testing attribute clones uses a helper, and should always be deep,
-    # even if the argument to cloneNode is false.
-    def check_clone_attribute(self, deep, testName):
-        doc = parseString("<doc attr='value'/>")
-        attr = doc.documentElement.getAttributeNode("attr")
-        self.assertNotEqual(attr, None)
-        clone = attr.cloneNode(deep)
-        self.confirm(not clone.isSameNode(attr))
-        self.confirm(not attr.isSameNode(clone))
-        self.confirm(clone.ownerElement is None,
-                testName + ": ownerElement should be None")
-        self.confirm(clone.ownerDocument.isSameNode(attr.ownerDocument),
-                testName + ": ownerDocument does not match")
-        self.confirm(clone.specified,
-                testName + ": cloned attribute must have specified == True")
-
-    def testCloneAttributeShallow(self):
-        self.check_clone_attribute(0, "testCloneAttributeShallow")
-
-    def testCloneAttributeDeep(self):
-        self.check_clone_attribute(1, "testCloneAttributeDeep")
-
-    def check_clone_pi(self, deep, testName):
-        doc = parseString("<?target data?><doc/>")
-        pi = doc.firstChild
-        self.assertEqual(pi.nodeType, Node.PROCESSING_INSTRUCTION_NODE)
-        clone = pi.cloneNode(deep)
-        self.confirm(clone.target == pi.target
-                and clone.data == pi.data)
-
-    def testClonePIShallow(self):
-        self.check_clone_pi(0, "testClonePIShallow")
-
-    def testClonePIDeep(self):
-        self.check_clone_pi(1, "testClonePIDeep")
-
-    def testNormalize(self):
-        doc = parseString("<doc/>")
-        root = doc.documentElement
-        root.appendChild(doc.createTextNode("first"))
-        root.appendChild(doc.createTextNode("second"))
-        self.confirm(len(root.childNodes) == 2
-                and root.childNodes.length == 2,
-                "testNormalize -- preparation")
-        doc.normalize()
-        self.confirm(len(root.childNodes) == 1
-                and root.childNodes.length == 1
-                and root.firstChild is root.lastChild
-                and root.firstChild.data == "firstsecond"
-                , "testNormalize -- result")
-        doc.unlink()
-
-        doc = parseString("<doc/>")
-        root = doc.documentElement
-        root.appendChild(doc.createTextNode(""))
-        doc.normalize()
-        self.confirm(len(root.childNodes) == 0
-                and root.childNodes.length == 0,
-                "testNormalize -- single empty node removed")
-        doc.unlink()
-
-    def testNormalizeCombineAndNextSibling(self):
-        doc = parseString("<doc/>")
-        root = doc.documentElement
-        root.appendChild(doc.createTextNode("first"))
-        root.appendChild(doc.createTextNode("second"))
-        root.appendChild(doc.createElement("i"))
-        self.confirm(len(root.childNodes) == 3
-                and root.childNodes.length == 3,
-                "testNormalizeCombineAndNextSibling -- preparation")
-        doc.normalize()
-        self.confirm(len(root.childNodes) == 2
-                and root.childNodes.length == 2
-                and root.firstChild.data == "firstsecond"
-                and root.firstChild is not root.lastChild
-                and root.firstChild.nextSibling is root.lastChild
-                and root.firstChild.previousSibling is None
-                and root.lastChild.previousSibling is root.firstChild
-                and root.lastChild.nextSibling is None
-                , "testNormalizeCombinedAndNextSibling -- result")
-        doc.unlink()
-
-    def testNormalizeDeleteWithPrevSibling(self):
-        doc = parseString("<doc/>")
-        root = doc.documentElement
-        root.appendChild(doc.createTextNode("first"))
-        root.appendChild(doc.createTextNode(""))
-        self.confirm(len(root.childNodes) == 2
-                and root.childNodes.length == 2,
-                "testNormalizeDeleteWithPrevSibling -- preparation")
-        doc.normalize()
-        self.confirm(len(root.childNodes) == 1
-                and root.childNodes.length == 1
-                and root.firstChild.data == "first"
-                and root.firstChild is root.lastChild
-                and root.firstChild.nextSibling is None
-                and root.firstChild.previousSibling is None
-                , "testNormalizeDeleteWithPrevSibling -- result")
-        doc.unlink()
-
-    def testNormalizeDeleteWithNextSibling(self):
-        doc = parseString("<doc/>")
-        root = doc.documentElement
-        root.appendChild(doc.createTextNode(""))
-        root.appendChild(doc.createTextNode("second"))
-        self.confirm(len(root.childNodes) == 2
-                and root.childNodes.length == 2,
-                "testNormalizeDeleteWithNextSibling -- preparation")
-        doc.normalize()
-        self.confirm(len(root.childNodes) == 1
-                and root.childNodes.length == 1
-                and root.firstChild.data == "second"
-                and root.firstChild is root.lastChild
-                and root.firstChild.nextSibling is None
-                and root.firstChild.previousSibling is None
-                , "testNormalizeDeleteWithNextSibling -- result")
-        doc.unlink()
-
-    def testNormalizeDeleteWithTwoNonTextSiblings(self):
-        doc = parseString("<doc/>")
-        root = doc.documentElement
-        root.appendChild(doc.createElement("i"))
-        root.appendChild(doc.createTextNode(""))
-        root.appendChild(doc.createElement("i"))
-        self.confirm(len(root.childNodes) == 3
-                and root.childNodes.length == 3,
-                "testNormalizeDeleteWithTwoSiblings -- preparation")
-        doc.normalize()
-        self.confirm(len(root.childNodes) == 2
-                and root.childNodes.length == 2
-                and root.firstChild is not root.lastChild
-                and root.firstChild.nextSibling is root.lastChild
-                and root.firstChild.previousSibling is None
-                and root.lastChild.previousSibling is root.firstChild
-                and root.lastChild.nextSibling is None
-                , "testNormalizeDeleteWithTwoSiblings -- result")
-        doc.unlink()
-
-    def testNormalizeDeleteAndCombine(self):
-        doc = parseString("<doc/>")
-        root = doc.documentElement
-        root.appendChild(doc.createTextNode(""))
-        root.appendChild(doc.createTextNode("second"))
-        root.appendChild(doc.createTextNode(""))
-        root.appendChild(doc.createTextNode("fourth"))
-        root.appendChild(doc.createTextNode(""))
-        self.confirm(len(root.childNodes) == 5
-                and root.childNodes.length == 5,
-                "testNormalizeDeleteAndCombine -- preparation")
-        doc.normalize()
-        self.confirm(len(root.childNodes) == 1
-                and root.childNodes.length == 1
-                and root.firstChild is root.lastChild
-                and root.firstChild.data == "secondfourth"
-                and root.firstChild.previousSibling is None
-                and root.firstChild.nextSibling is None
-                , "testNormalizeDeleteAndCombine -- result")
-        doc.unlink()
-
-    def testNormalizeRecursion(self):
-        doc = parseString("<doc>"
-                            "<o>"
-                              "<i/>"
-                              "t"
-                              #
-                              #x
-                            "</o>"
-                            "<o>"
-                              "<o>"
-                                "t2"
-                                #x2
-                              "</o>"
-                              "t3"
-                              #x3
-                            "</o>"
-                            #
-                          "</doc>")
-        root = doc.documentElement
-        root.childNodes[0].appendChild(doc.createTextNode(""))
-        root.childNodes[0].appendChild(doc.createTextNode("x"))
-        root.childNodes[1].childNodes[0].appendChild(doc.createTextNode("x2"))
-        root.childNodes[1].appendChild(doc.createTextNode("x3"))
-        root.appendChild(doc.createTextNode(""))
-        self.confirm(len(root.childNodes) == 3
-                and root.childNodes.length == 3
-                and len(root.childNodes[0].childNodes) == 4
-                and root.childNodes[0].childNodes.length == 4
-                and len(root.childNodes[1].childNodes) == 3
-                and root.childNodes[1].childNodes.length == 3
-                and len(root.childNodes[1].childNodes[0].childNodes) == 2
-                and root.childNodes[1].childNodes[0].childNodes.length == 2
-                , "testNormalize2 -- preparation")
-        doc.normalize()
-        self.confirm(len(root.childNodes) == 2
-                and root.childNodes.length == 2
-                and len(root.childNodes[0].childNodes) == 2
-                and root.childNodes[0].childNodes.length == 2
-                and len(root.childNodes[1].childNodes) == 2
-                and root.childNodes[1].childNodes.length == 2
-                and len(root.childNodes[1].childNodes[0].childNodes) == 1
-                and root.childNodes[1].childNodes[0].childNodes.length == 1
-                , "testNormalize2 -- childNodes lengths")
-        self.confirm(root.childNodes[0].childNodes[1].data == "tx"
-                and root.childNodes[1].childNodes[0].childNodes[0].data == "t2x2"
-                and root.childNodes[1].childNodes[1].data == "t3x3"
-                , "testNormalize2 -- joined text fields")
-        self.confirm(root.childNodes[0].childNodes[1].nextSibling is None
-                and root.childNodes[0].childNodes[1].previousSibling
-                        is root.childNodes[0].childNodes[0]
-                and root.childNodes[0].childNodes[0].previousSibling is None
-                and root.childNodes[0].childNodes[0].nextSibling
-                        is root.childNodes[0].childNodes[1]
-                and root.childNodes[1].childNodes[1].nextSibling is None
-                and root.childNodes[1].childNodes[1].previousSibling
-                        is root.childNodes[1].childNodes[0]
-                and root.childNodes[1].childNodes[0].previousSibling is None
-                and root.childNodes[1].childNodes[0].nextSibling
-                        is root.childNodes[1].childNodes[1]
-                , "testNormalize2 -- sibling pointers")
-        doc.unlink()
-
-
-    def testBug0777884(self):
-        doc = parseString("<o>text</o>")
-        text = doc.documentElement.childNodes[0]
-        self.assertEqual(text.nodeType, Node.TEXT_NODE)
-        # Should run quietly, doing nothing.
-        text.normalize()
-        doc.unlink()
-
-    def testBug1433694(self):
-        doc = parseString("<o><i/>t</o>")
-        node = doc.documentElement
-        node.childNodes[1].nodeValue = ""
-        node.normalize()
-        self.confirm(node.childNodes[-1].nextSibling is None,
-                     "Final child's .nextSibling should be None")
-
-    def testSiblings(self):
-        doc = parseString("<doc><?pi?>text?<elm/></doc>")
-        root = doc.documentElement
-        (pi, text, elm) = root.childNodes
-
-        self.confirm(pi.nextSibling is text and
-                pi.previousSibling is None and
-                text.nextSibling is elm and
-                text.previousSibling is pi and
-                elm.nextSibling is None and
-                elm.previousSibling is text, "testSiblings")
-
-        doc.unlink()
-
-    def testParents(self):
-        doc = parseString(
-            "<doc><elm1><elm2/><elm2><elm3/></elm2></elm1></doc>")
-        root = doc.documentElement
-        elm1 = root.childNodes[0]
-        (elm2a, elm2b) = elm1.childNodes
-        elm3 = elm2b.childNodes[0]
-
-        self.confirm(root.parentNode is doc and
-                elm1.parentNode is root and
-                elm2a.parentNode is elm1 and
-                elm2b.parentNode is elm1 and
-                elm3.parentNode is elm2b, "testParents")
-        doc.unlink()
-
-    def testNodeListItem(self):
-        doc = parseString("<doc><e/><e/></doc>")
-        children = doc.childNodes
-        docelem = children[0]
-        self.confirm(children[0] is children.item(0)
-                and children.item(1) is None
-                and docelem.childNodes.item(0) is docelem.childNodes[0]
-                and docelem.childNodes.item(1) is docelem.childNodes[1]
-                and docelem.childNodes.item(0).childNodes.item(0) is None,
-                "test NodeList.item()")
-        doc.unlink()
-
-    def testSAX2DOM(self):
-        from xml.dom import pulldom
-
-        sax2dom = pulldom.SAX2DOM()
-        sax2dom.startDocument()
-        sax2dom.startElement("doc", {})
-        sax2dom.characters("text")
-        sax2dom.startElement("subelm", {})
-        sax2dom.characters("text")
-        sax2dom.endElement("subelm")
-        sax2dom.characters("text")
-        sax2dom.endElement("doc")
-        sax2dom.endDocument()
-
-        doc = sax2dom.document
-        root = doc.documentElement
-        (text1, elm1, text2) = root.childNodes
-        text3 = elm1.childNodes[0]
-
-        self.confirm(text1.previousSibling is None and
-                text1.nextSibling is elm1 and
-                elm1.previousSibling is text1 and
-                elm1.nextSibling is text2 and
-                text2.previousSibling is elm1 and
-                text2.nextSibling is None and
-                text3.previousSibling is None and
-                text3.nextSibling is None, "testSAX2DOM - siblings")
-
-        self.confirm(root.parentNode is doc and
-                text1.parentNode is root and
-                elm1.parentNode is root and
-                text2.parentNode is root and
-                text3.parentNode is elm1, "testSAX2DOM - parents")
-        doc.unlink()
-
-    def testEncodings(self):
-        doc = parseString('<foo>&#x20ac;</foo>')
-        self.confirm(doc.toxml() == u'<?xml version="1.0" ?><foo>\u20ac</foo>'
-                and doc.toxml('utf-8') ==
-                '<?xml version="1.0" encoding="utf-8"?><foo>\xe2\x82\xac</foo>'
-                and doc.toxml('iso-8859-15') ==
-                '<?xml version="1.0" encoding="iso-8859-15"?><foo>\xa4</foo>',
-                "testEncodings - encoding EURO SIGN")
-
-        # Verify that character decoding errors throw exceptions instead
-        # of crashing
-        self.assertRaises(UnicodeDecodeError, parseString,
-                '<fran\xe7ais>Comment \xe7a va ? Tr\xe8s bien ?</fran\xe7ais>')
-
-        doc.unlink()
-
-    class UserDataHandler:
-        called = 0
-        def handle(self, operation, key, data, src, dst):
-            dst.setUserData(key, data + 1, self)
-            src.setUserData(key, None, None)
-            self.called = 1
-
-    def testUserData(self):
-        dom = Document()
-        n = dom.createElement('e')
-        self.confirm(n.getUserData("foo") is None)
-        n.setUserData("foo", None, None)
-        self.confirm(n.getUserData("foo") is None)
-        n.setUserData("foo", 12, 12)
-        n.setUserData("bar", 13, 13)
-        self.confirm(n.getUserData("foo") == 12)
-        self.confirm(n.getUserData("bar") == 13)
-        n.setUserData("foo", None, None)
-        self.confirm(n.getUserData("foo") is None)
-        self.confirm(n.getUserData("bar") == 13)
-
-        handler = self.UserDataHandler()
-        n.setUserData("bar", 12, handler)
-        c = n.cloneNode(1)
-        self.confirm(handler.called
-                and n.getUserData("bar") is None
-                and c.getUserData("bar") == 13)
-        n.unlink()
-        c.unlink()
-        dom.unlink()
-
-    def checkRenameNodeSharedConstraints(self, doc, node):
-        # Make sure illegal NS usage is detected:
-        self.assertRaises(xml.dom.NamespaceErr, doc.renameNode, node,
-                          "http://xml.python.org/ns", "xmlns:foo")
-        doc2 = parseString("<doc/>")
-        self.assertRaises(xml.dom.WrongDocumentErr, doc2.renameNode, node,
-                          xml.dom.EMPTY_NAMESPACE, "foo")
-
-    def testRenameAttribute(self):
-        doc = parseString("<doc a='v'/>")
-        elem = doc.documentElement
-        attrmap = elem.attributes
-        attr = elem.attributes['a']
-
-        # Simple renaming
-        attr = doc.renameNode(attr, xml.dom.EMPTY_NAMESPACE, "b")
-        self.confirm(attr.name == "b"
-                and attr.nodeName == "b"
-                and attr.localName is None
-                and attr.namespaceURI == xml.dom.EMPTY_NAMESPACE
-                and attr.prefix is None
-                and attr.value == "v"
-                and elem.getAttributeNode("a") is None
-                and elem.getAttributeNode("b").isSameNode(attr)
-                and attrmap["b"].isSameNode(attr)
-                and attr.ownerDocument.isSameNode(doc)
-                and attr.ownerElement.isSameNode(elem))
-
-        # Rename to have a namespace, no prefix
-        attr = doc.renameNode(attr, "http://xml.python.org/ns", "c")
-        self.confirm(attr.name == "c"
-                and attr.nodeName == "c"
-                and attr.localName == "c"
-                and attr.namespaceURI == "http://xml.python.org/ns"
-                and attr.prefix is None
-                and attr.value == "v"
-                and elem.getAttributeNode("a") is None
-                and elem.getAttributeNode("b") is None
-                and elem.getAttributeNode("c").isSameNode(attr)
-                and elem.getAttributeNodeNS(
-                    "http://xml.python.org/ns", "c").isSameNode(attr)
-                and attrmap["c"].isSameNode(attr)
-                and attrmap[("http://xml.python.org/ns", "c")].isSameNode(attr))
-
-        # Rename to have a namespace, with prefix
-        attr = doc.renameNode(attr, "http://xml.python.org/ns2", "p:d")
-        self.confirm(attr.name == "p:d"
-                and attr.nodeName == "p:d"
-                and attr.localName == "d"
-                and attr.namespaceURI == "http://xml.python.org/ns2"
-                and attr.prefix == "p"
-                and attr.value == "v"
-                and elem.getAttributeNode("a") is None
-                and elem.getAttributeNode("b") is None
-                and elem.getAttributeNode("c") is None
-                and elem.getAttributeNodeNS(
-                    "http://xml.python.org/ns", "c") is None
-                and elem.getAttributeNode("p:d").isSameNode(attr)
-                and elem.getAttributeNodeNS(
-                    "http://xml.python.org/ns2", "d").isSameNode(attr)
-                and attrmap["p:d"].isSameNode(attr)
-                and attrmap[("http://xml.python.org/ns2", "d")].isSameNode(attr))
-
-        # Rename back to a simple non-NS node
-        attr = doc.renameNode(attr, xml.dom.EMPTY_NAMESPACE, "e")
-        self.confirm(attr.name == "e"
-                and attr.nodeName == "e"
-                and attr.localName is None
-                and attr.namespaceURI == xml.dom.EMPTY_NAMESPACE
-                and attr.prefix is None
-                and attr.value == "v"
-                and elem.getAttributeNode("a") is None
-                and elem.getAttributeNode("b") is None
-                and elem.getAttributeNode("c") is None
-                and elem.getAttributeNode("p:d") is None
-                and elem.getAttributeNodeNS(
-                    "http://xml.python.org/ns", "c") is None
-                and elem.getAttributeNode("e").isSameNode(attr)
-                and attrmap["e"].isSameNode(attr))
-
-        self.assertRaises(xml.dom.NamespaceErr, doc.renameNode, attr,
-                          "http://xml.python.org/ns", "xmlns")
-        self.checkRenameNodeSharedConstraints(doc, attr)
-        doc.unlink()
-
-    def testRenameElement(self):
-        doc = parseString("<doc/>")
-        elem = doc.documentElement
-
-        # Simple renaming
-        elem = doc.renameNode(elem, xml.dom.EMPTY_NAMESPACE, "a")
-        self.confirm(elem.tagName == "a"
-                and elem.nodeName == "a"
-                and elem.localName is None
-                and elem.namespaceURI == xml.dom.EMPTY_NAMESPACE
-                and elem.prefix is None
-                and elem.ownerDocument.isSameNode(doc))
-
-        # Rename to have a namespace, no prefix
-        elem = doc.renameNode(elem, "http://xml.python.org/ns", "b")
-        self.confirm(elem.tagName == "b"
-                and elem.nodeName == "b"
-                and elem.localName == "b"
-                and elem.namespaceURI == "http://xml.python.org/ns"
-                and elem.prefix is None
-                and elem.ownerDocument.isSameNode(doc))
-
-        # Rename to have a namespace, with prefix
-        elem = doc.renameNode(elem, "http://xml.python.org/ns2", "p:c")
-        self.confirm(elem.tagName == "p:c"
-                and elem.nodeName == "p:c"
-                and elem.localName == "c"
-                and elem.namespaceURI == "http://xml.python.org/ns2"
-                and elem.prefix == "p"
-                and elem.ownerDocument.isSameNode(doc))
-
-        # Rename back to a simple non-NS node
-        elem = doc.renameNode(elem, xml.dom.EMPTY_NAMESPACE, "d")
-        self.confirm(elem.tagName == "d"
-                and elem.nodeName == "d"
-                and elem.localName is None
-                and elem.namespaceURI == xml.dom.EMPTY_NAMESPACE
-                and elem.prefix is None
-                and elem.ownerDocument.isSameNode(doc))
-
-        self.checkRenameNodeSharedConstraints(doc, elem)
-        doc.unlink()
-
-    def testRenameOther(self):
-        # We have to create a comment node explicitly since not all DOM
-        # builders used with minidom add comments to the DOM.
-        doc = xml.dom.minidom.getDOMImplementation().createDocument(
-            xml.dom.EMPTY_NAMESPACE, "e", None)
-        node = doc.createComment("comment")
-        self.assertRaises(xml.dom.NotSupportedErr, doc.renameNode, node,
-                          xml.dom.EMPTY_NAMESPACE, "foo")
-        doc.unlink()
-
-    def testWholeText(self):
-        doc = parseString("<doc>a</doc>")
-        elem = doc.documentElement
-        text = elem.childNodes[0]
-        self.assertEqual(text.nodeType, Node.TEXT_NODE)
-
-        self.checkWholeText(text, "a")
-        elem.appendChild(doc.createTextNode("b"))
-        self.checkWholeText(text, "ab")
-        elem.insertBefore(doc.createCDATASection("c"), text)
-        self.checkWholeText(text, "cab")
-
-        # make sure we don't cross other nodes
-        splitter = doc.createComment("comment")
-        elem.appendChild(splitter)
-        text2 = doc.createTextNode("d")
-        elem.appendChild(text2)
-        self.checkWholeText(text, "cab")
-        self.checkWholeText(text2, "d")
-
-        x = doc.createElement("x")
-        elem.replaceChild(x, splitter)
-        splitter = x
-        self.checkWholeText(text, "cab")
-        self.checkWholeText(text2, "d")
-
-        x = doc.createProcessingInstruction("y", "z")
-        elem.replaceChild(x, splitter)
-        splitter = x
-        self.checkWholeText(text, "cab")
-        self.checkWholeText(text2, "d")
-
-        elem.removeChild(splitter)
-        self.checkWholeText(text, "cabd")
-        self.checkWholeText(text2, "cabd")
-
-    def testPatch1094164(self):
-        doc = parseString("<doc><e/></doc>")
-        elem = doc.documentElement
-        e = elem.firstChild
-        self.confirm(e.parentNode is elem, "Before replaceChild()")
-        # Check that replacing a child with itself leaves the tree unchanged
-        elem.replaceChild(e, e)
-        self.confirm(e.parentNode is elem, "After replaceChild()")
-
-    def testReplaceWholeText(self):
-        def setup():
-            doc = parseString("<doc>a<e/>d</doc>")
-            elem = doc.documentElement
-            text1 = elem.firstChild
-            text2 = elem.lastChild
-            splitter = text1.nextSibling
-            elem.insertBefore(doc.createTextNode("b"), splitter)
-            elem.insertBefore(doc.createCDATASection("c"), text1)
-            return doc, elem, text1, splitter, text2
-
-        doc, elem, text1, splitter, text2 = setup()
-        text = text1.replaceWholeText("new content")
-        self.checkWholeText(text, "new content")
-        self.checkWholeText(text2, "d")
-        self.confirm(len(elem.childNodes) == 3)
-
-        doc, elem, text1, splitter, text2 = setup()
-        text = text2.replaceWholeText("new content")
-        self.checkWholeText(text, "new content")
-        self.checkWholeText(text1, "cab")
-        self.confirm(len(elem.childNodes) == 5)
-
-        doc, elem, text1, splitter, text2 = setup()
-        text = text1.replaceWholeText("")
-        self.checkWholeText(text2, "d")
-        self.confirm(text is None
-                and len(elem.childNodes) == 2)
-
-    def testSchemaType(self):
-        doc = parseString(
-            "<!DOCTYPE doc [\n"
-            "  <!ENTITY e1 SYSTEM 'http://xml.python.org/e1'>\n"
-            "  <!ENTITY e2 SYSTEM 'http://xml.python.org/e2'>\n"
-            "  <!ATTLIST doc id   ID       #IMPLIED \n"
-            "                ref  IDREF    #IMPLIED \n"
-            "                refs IDREFS   #IMPLIED \n"
-            "                enum (a|b)    #IMPLIED \n"
-            "                ent  ENTITY   #IMPLIED \n"
-            "                ents ENTITIES #IMPLIED \n"
-            "                nm   NMTOKEN  #IMPLIED \n"
-            "                nms  NMTOKENS #IMPLIED \n"
-            "                text CDATA    #IMPLIED \n"
-            "    >\n"
-            "]><doc id='name' notid='name' text='splat!' enum='b'"
-            "       ref='name' refs='name name' ent='e1' ents='e1 e2'"
-            "       nm='123' nms='123 abc' />")
-        elem = doc.documentElement
-        # We don't want to rely on any specific loader at this point, so
-        # just make sure we can get to all the names, and that the
-        # DTD-based namespace is right.  The names can vary by loader
-        # since each supports a different level of DTD information.
-        t = elem.schemaType
-        self.confirm(t.name is None
-                and t.namespace == xml.dom.EMPTY_NAMESPACE)
-        names = "id notid text enum ref refs ent ents nm nms".split()
-        for name in names:
-            a = elem.getAttributeNode(name)
-            t = a.schemaType
-            self.confirm(hasattr(t, "name")
-                    and t.namespace == xml.dom.EMPTY_NAMESPACE)
-
-    def testSetIdAttribute(self):
-        doc = parseString("<doc a1='v' a2='w'/>")
-        e = doc.documentElement
-        a1 = e.getAttributeNode("a1")
-        a2 = e.getAttributeNode("a2")
-        self.confirm(doc.getElementById("v") is None
-                and not a1.isId
-                and not a2.isId)
-        e.setIdAttribute("a1")
-        self.confirm(e.isSameNode(doc.getElementById("v"))
-                and a1.isId
-                and not a2.isId)
-        e.setIdAttribute("a2")
-        self.confirm(e.isSameNode(doc.getElementById("v"))
-                and e.isSameNode(doc.getElementById("w"))
-                and a1.isId
-                and a2.isId)
-        # replace the a1 node; the new node should *not* be an ID
-        a3 = doc.createAttribute("a1")
-        a3.value = "v"
-        e.setAttributeNode(a3)
-        self.confirm(doc.getElementById("v") is None
-                and e.isSameNode(doc.getElementById("w"))
-                and not a1.isId
-                and a2.isId
-                and not a3.isId)
-        # renaming an attribute should not affect its ID-ness:
-        doc.renameNode(a2, xml.dom.EMPTY_NAMESPACE, "an")
-        self.confirm(e.isSameNode(doc.getElementById("w"))
-                and a2.isId)
-
-    def testSetIdAttributeNS(self):
-        NS1 = "http://xml.python.org/ns1"
-        NS2 = "http://xml.python.org/ns2"
-        doc = parseString("<doc"
-                          " xmlns:ns1='" + NS1 + "'"
-                          " xmlns:ns2='" + NS2 + "'"
-                          " ns1:a1='v' ns2:a2='w'/>")
-        e = doc.documentElement
-        a1 = e.getAttributeNodeNS(NS1, "a1")
-        a2 = e.getAttributeNodeNS(NS2, "a2")
-        self.confirm(doc.getElementById("v") is None
-                and not a1.isId
-                and not a2.isId)
-        e.setIdAttributeNS(NS1, "a1")
-        self.confirm(e.isSameNode(doc.getElementById("v"))
-                and a1.isId
-                and not a2.isId)
-        e.setIdAttributeNS(NS2, "a2")
-        self.confirm(e.isSameNode(doc.getElementById("v"))
-                and e.isSameNode(doc.getElementById("w"))
-                and a1.isId
-                and a2.isId)
-        # replace the a1 node; the new node should *not* be an ID
-        a3 = doc.createAttributeNS(NS1, "a1")
-        a3.value = "v"
-        e.setAttributeNode(a3)
-        self.confirm(e.isSameNode(doc.getElementById("w")))
-        self.confirm(not a1.isId)
-        self.confirm(a2.isId)
-        self.confirm(not a3.isId)
-        self.confirm(doc.getElementById("v") is None)
-        # renaming an attribute should not affect its ID-ness:
-        doc.renameNode(a2, xml.dom.EMPTY_NAMESPACE, "an")
-        self.confirm(e.isSameNode(doc.getElementById("w"))
-                and a2.isId)
-
-    def testSetIdAttributeNode(self):
-        NS1 = "http://xml.python.org/ns1"
-        NS2 = "http://xml.python.org/ns2"
-        doc = parseString("<doc"
-                          " xmlns:ns1='" + NS1 + "'"
-                          " xmlns:ns2='" + NS2 + "'"
-                          " ns1:a1='v' ns2:a2='w'/>")
-        e = doc.documentElement
-        a1 = e.getAttributeNodeNS(NS1, "a1")
-        a2 = e.getAttributeNodeNS(NS2, "a2")
-        self.confirm(doc.getElementById("v") is None
-                and not a1.isId
-                and not a2.isId)
-        e.setIdAttributeNode(a1)
-        self.confirm(e.isSameNode(doc.getElementById("v"))
-                and a1.isId
-                and not a2.isId)
-        e.setIdAttributeNode(a2)
-        self.confirm(e.isSameNode(doc.getElementById("v"))
-                and e.isSameNode(doc.getElementById("w"))
-                and a1.isId
-                and a2.isId)
-        # replace the a1 node; the new node should *not* be an ID
-        a3 = doc.createAttributeNS(NS1, "a1")
-        a3.value = "v"
-        e.setAttributeNode(a3)
-        self.confirm(e.isSameNode(doc.getElementById("w")))
-        self.confirm(not a1.isId)
-        self.confirm(a2.isId)
-        self.confirm(not a3.isId)
-        self.confirm(doc.getElementById("v") is None)
-        # renaming an attribute should not affect its ID-ness:
-        doc.renameNode(a2, xml.dom.EMPTY_NAMESPACE, "an")
-        self.confirm(e.isSameNode(doc.getElementById("w"))
-                and a2.isId)
-
-    def testPickledDocument(self):
-        doc = parseString("<?xml version='1.0' encoding='us-ascii'?>\n"
-                    "<!DOCTYPE doc PUBLIC 'http://xml.python.org/public'"
-                    " 'http://xml.python.org/system' [\n"
-                    "  <!ELEMENT e EMPTY>\n"
-                    "  <!ENTITY ent SYSTEM 'http://xml.python.org/entity'>\n"
-                    "]><doc attr='value'> text\n"
-                    "<?pi sample?> <!-- comment --> <e/> </doc>")
-        s = pickle.dumps(doc)
-        doc2 = pickle.loads(s)
-        stack = [(doc, doc2)]
-        while stack:
-            n1, n2 = stack.pop()
-            self.confirm(n1.nodeType == n2.nodeType
-                    and len(n1.childNodes) == len(n2.childNodes)
-                    and n1.nodeName == n2.nodeName
-                    and not n1.isSameNode(n2)
-                    and not n2.isSameNode(n1))
-            if n1.nodeType == Node.DOCUMENT_TYPE_NODE:
-                len(n1.entities)
-                len(n2.entities)
-                len(n1.notations)
-                len(n2.notations)
-                self.confirm(len(n1.entities) == len(n2.entities)
-                        and len(n1.notations) == len(n2.notations))
-                for i in range(len(n1.notations)):
-                    # XXX this loop body doesn't seem to be executed?
-                    no1 = n1.notations.item(i)
-                    no2 = n1.notations.item(i)
-                    self.confirm(no1.name == no2.name
-                            and no1.publicId == no2.publicId
-                            and no1.systemId == no2.systemId)
-                    stack.append((no1, no2))
-                for i in range(len(n1.entities)):
-                    e1 = n1.entities.item(i)
-                    e2 = n2.entities.item(i)
-                    self.confirm(e1.notationName == e2.notationName
-                            and e1.publicId == e2.publicId
-                            and e1.systemId == e2.systemId)
-                    stack.append((e1, e2))
-            if n1.nodeType != Node.DOCUMENT_NODE:
-                self.confirm(n1.ownerDocument.isSameNode(doc)
-                        and n2.ownerDocument.isSameNode(doc2))
-            for i in range(len(n1.childNodes)):
-                stack.append((n1.childNodes[i], n2.childNodes[i]))
-
-    def testSerializeCommentNodeWithDoubleHyphen(self):
-        doc = create_doc_without_doctype()
-        doc.appendChild(doc.createComment("foo--bar"))
-        self.assertRaises(ValueError, doc.toxml)
-
-    def testEmptyXMLNSValue(self):
-        doc = parseString("<element xmlns=''>\n"
-                          "<foo/>\n</element>")
-        doc2 = parseString(doc.toxml())
-        self.confirm(doc2.namespaceURI == xml.dom.EMPTY_NAMESPACE)
-
-
-def test_main():
-    run_unittest(MinidomTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mmap.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mmap.py
deleted file mode 100644
index 566c3ff..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mmap.py
+++ /dev/null
@@ -1,704 +0,0 @@
-from test.test_support import (TESTFN, run_unittest, import_module, unlink,
-                               requires, _2G, _4G)
-import unittest
-import os, re, itertools, socket, sys
-
-mmap = import_module('mmap')
-
-PAGESIZE = mmap.PAGESIZE
-
-class MmapTests(unittest.TestCase):
-
-    def setUp(self):
-        if os.path.exists(TESTFN):
-            os.unlink(TESTFN)
-
-    def tearDown(self):
-        try:
-            os.unlink(TESTFN)
-        except OSError:
-            pass
-
-    def test_basic(self):
-        # Test mmap module on Unix systems and Windows
-
-        # Create a file to be mmap'ed.
-        f = open(TESTFN, 'w+')
-        try:
-            # Write 2 pages worth of data to the file
-            f.write('\0'* PAGESIZE)
-            f.write('foo')
-            f.write('\0'* (PAGESIZE-3) )
-            f.flush()
-            m = mmap.mmap(f.fileno(), 2 * PAGESIZE)
-            f.close()
-
-            # Simple sanity checks
-
-            tp = str(type(m))  # SF bug 128713:  segfaulted on Linux
-            self.assertEqual(m.find('foo'), PAGESIZE)
-
-            self.assertEqual(len(m), 2*PAGESIZE)
-
-            self.assertEqual(m[0], '\0')
-            self.assertEqual(m[0:3], '\0\0\0')
-
-            # Shouldn't crash on boundary (Issue #5292)
-            self.assertRaises(IndexError, m.__getitem__, len(m))
-            self.assertRaises(IndexError, m.__setitem__, len(m), '\0')
-
-            # Modify the file's content
-            m[0] = '3'
-            m[PAGESIZE +3: PAGESIZE +3+3] = 'bar'
-
-            # Check that the modification worked
-            self.assertEqual(m[0], '3')
-            self.assertEqual(m[0:3], '3\0\0')
-            self.assertEqual(m[PAGESIZE-1 : PAGESIZE + 7], '\0foobar\0')
-
-            m.flush()
-
-            # Test doing a regular expression match in an mmap'ed file
-            match = re.search('[A-Za-z]+', m)
-            if match is None:
-                self.fail('regex match on mmap failed!')
-            else:
-                start, end = match.span(0)
-                length = end - start
-
-                self.assertEqual(start, PAGESIZE)
-                self.assertEqual(end, PAGESIZE + 6)
-
-            # test seeking around (try to overflow the seek implementation)
-            m.seek(0,0)
-            self.assertEqual(m.tell(), 0)
-            m.seek(42,1)
-            self.assertEqual(m.tell(), 42)
-            m.seek(0,2)
-            self.assertEqual(m.tell(), len(m))
-
-            # Try to seek to negative position...
-            self.assertRaises(ValueError, m.seek, -1)
-
-            # Try to seek beyond end of mmap...
-            self.assertRaises(ValueError, m.seek, 1, 2)
-
-            # Try to seek to negative position...
-            self.assertRaises(ValueError, m.seek, -len(m)-1, 2)
-
-            # Try resizing map
-            try:
-                m.resize(512)
-            except SystemError:
-                # resize() not supported
-                # No messages are printed, since the output of this test suite
-                # would then be different across platforms.
-                pass
-            else:
-                # resize() is supported
-                self.assertEqual(len(m), 512)
-                # Check that we can no longer seek beyond the new size.
-                self.assertRaises(ValueError, m.seek, 513, 0)
-
-                # Check that the underlying file is truncated too
-                # (bug #728515)
-                f = open(TESTFN)
-                f.seek(0, 2)
-                self.assertEqual(f.tell(), 512)
-                f.close()
-                self.assertEqual(m.size(), 512)
-
-            m.close()
-
-        finally:
-            try:
-                f.close()
-            except OSError:
-                pass
-
-    def test_access_parameter(self):
-        # Test for "access" keyword parameter
-        mapsize = 10
-        open(TESTFN, "wb").write("a"*mapsize)
-        f = open(TESTFN, "rb")
-        m = mmap.mmap(f.fileno(), mapsize, access=mmap.ACCESS_READ)
-        self.assertEqual(m[:], 'a'*mapsize, "Readonly memory map data incorrect.")
-
-        # Ensuring that readonly mmap can't be slice assigned
-        try:
-            m[:] = 'b'*mapsize
-        except TypeError:
-            pass
-        else:
-            self.fail("Able to write to readonly memory map")
-
-        # Ensuring that readonly mmap can't be item assigned
-        try:
-            m[0] = 'b'
-        except TypeError:
-            pass
-        else:
-            self.fail("Able to write to readonly memory map")
-
-        # Ensuring that readonly mmap can't be write() to
-        try:
-            m.seek(0,0)
-            m.write('abc')
-        except TypeError:
-            pass
-        else:
-            self.fail("Able to write to readonly memory map")
-
-        # Ensuring that readonly mmap can't be write_byte() to
-        try:
-            m.seek(0,0)
-            m.write_byte('d')
-        except TypeError:
-            pass
-        else:
-            self.fail("Able to write to readonly memory map")
-
-        # Ensuring that readonly mmap can't be resized
-        try:
-            m.resize(2*mapsize)
-        except SystemError:   # resize is not universally supported
-            pass
-        except TypeError:
-            pass
-        else:
-            self.fail("Able to resize readonly memory map")
-        f.close()
-        del m, f
-        self.assertEqual(open(TESTFN, "rb").read(), 'a'*mapsize,
-               "Readonly memory map data file was modified")
-
-        # Opening mmap with size too big
-        import sys
-        f = open(TESTFN, "r+b")
-        try:
-            m = mmap.mmap(f.fileno(), mapsize+1)
-        except ValueError:
-            # we do not expect a ValueError on Windows
-            # CAUTION:  This also changes the size of the file on disk, and
-            # later tests assume that the length hasn't changed.  We need to
-            # repair that.
-            if sys.platform.startswith('win'):
-                self.fail("Opening mmap with size+1 should work on Windows.")
-        else:
-            # we expect a ValueError on Unix, but not on Windows
-            if not sys.platform.startswith('win'):
-                self.fail("Opening mmap with size+1 should raise ValueError.")
-            m.close()
-        f.close()
-        if sys.platform.startswith('win'):
-            # Repair damage from the resizing test.
-            f = open(TESTFN, 'r+b')
-            f.truncate(mapsize)
-            f.close()
-
-        # Opening mmap with access=ACCESS_WRITE
-        f = open(TESTFN, "r+b")
-        m = mmap.mmap(f.fileno(), mapsize, access=mmap.ACCESS_WRITE)
-        # Modifying write-through memory map
-        m[:] = 'c'*mapsize
-        self.assertEqual(m[:], 'c'*mapsize,
-               "Write-through memory map memory not updated properly.")
-        m.flush()
-        m.close()
-        f.close()
-        f = open(TESTFN, 'rb')
-        stuff = f.read()
-        f.close()
-        self.assertEqual(stuff, 'c'*mapsize,
-               "Write-through memory map data file not updated properly.")
-
-        # Opening mmap with access=ACCESS_COPY
-        f = open(TESTFN, "r+b")
-        m = mmap.mmap(f.fileno(), mapsize, access=mmap.ACCESS_COPY)
-        # Modifying copy-on-write memory map
-        m[:] = 'd'*mapsize
-        self.assertEqual(m[:], 'd' * mapsize,
-               "Copy-on-write memory map data not written correctly.")
-        m.flush()
-        self.assertEqual(open(TESTFN, "rb").read(), 'c'*mapsize,
-               "Copy-on-write test data file should not be modified.")
-        # Ensuring copy-on-write maps cannot be resized
-        self.assertRaises(TypeError, m.resize, 2*mapsize)
-        f.close()
-        del m, f
-
-        # Ensuring invalid access parameter raises exception
-        f = open(TESTFN, "r+b")
-        self.assertRaises(ValueError, mmap.mmap, f.fileno(), mapsize, access=4)
-        f.close()
-
-        if os.name == "posix":
-            # Try incompatible flags, prot and access parameters.
-            f = open(TESTFN, "r+b")
-            self.assertRaises(ValueError, mmap.mmap, f.fileno(), mapsize,
-                              flags=mmap.MAP_PRIVATE,
-                              prot=mmap.PROT_READ, access=mmap.ACCESS_WRITE)
-            f.close()
-
-            # Try writing with PROT_EXEC and without PROT_WRITE
-            prot = mmap.PROT_READ | getattr(mmap, 'PROT_EXEC', 0)
-            with open(TESTFN, "r+b") as f:
-                m = mmap.mmap(f.fileno(), mapsize, prot=prot)
-                self.assertRaises(TypeError, m.write, b"abcdef")
-                self.assertRaises(TypeError, m.write_byte, 0)
-                m.close()
-
-    def test_bad_file_desc(self):
-        # Try opening a bad file descriptor...
-        self.assertRaises(mmap.error, mmap.mmap, -2, 4096)
-
-    def test_tougher_find(self):
-        # Do a tougher .find() test.  SF bug 515943 pointed out that, in 2.2,
-        # searching for data with embedded \0 bytes didn't work.
-        f = open(TESTFN, 'w+')
-
-        data = 'aabaac\x00deef\x00\x00aa\x00'
-        n = len(data)
-        f.write(data)
-        f.flush()
-        m = mmap.mmap(f.fileno(), n)
-        f.close()
-
-        for start in range(n+1):
-            for finish in range(start, n+1):
-                slice = data[start : finish]
-                self.assertEqual(m.find(slice), data.find(slice))
-                self.assertEqual(m.find(slice + 'x'), -1)
-        m.close()
-
-    def test_find_end(self):
-        # test the new 'end' parameter works as expected
-        f = open(TESTFN, 'w+')
-        data = 'one two ones'
-        n = len(data)
-        f.write(data)
-        f.flush()
-        m = mmap.mmap(f.fileno(), n)
-        f.close()
-
-        self.assertEqual(m.find('one'), 0)
-        self.assertEqual(m.find('ones'), 8)
-        self.assertEqual(m.find('one', 0, -1), 0)
-        self.assertEqual(m.find('one', 1), 8)
-        self.assertEqual(m.find('one', 1, -1), 8)
-        self.assertEqual(m.find('one', 1, -2), -1)
-
-
-    def test_rfind(self):
-        # test the new 'end' parameter works as expected
-        f = open(TESTFN, 'w+')
-        data = 'one two ones'
-        n = len(data)
-        f.write(data)
-        f.flush()
-        m = mmap.mmap(f.fileno(), n)
-        f.close()
-
-        self.assertEqual(m.rfind('one'), 8)
-        self.assertEqual(m.rfind('one '), 0)
-        self.assertEqual(m.rfind('one', 0, -1), 8)
-        self.assertEqual(m.rfind('one', 0, -2), 0)
-        self.assertEqual(m.rfind('one', 1, -1), 8)
-        self.assertEqual(m.rfind('one', 1, -2), -1)
-
-
-    def test_double_close(self):
-        # make sure a double close doesn't crash on Solaris (Bug# 665913)
-        f = open(TESTFN, 'w+')
-
-        f.write(2**16 * 'a') # Arbitrary character
-        f.close()
-
-        f = open(TESTFN)
-        mf = mmap.mmap(f.fileno(), 2**16, access=mmap.ACCESS_READ)
-        mf.close()
-        mf.close()
-        f.close()
-
-    def test_entire_file(self):
-        # test mapping of entire file by passing 0 for map length
-        if hasattr(os, "stat"):
-            f = open(TESTFN, "w+")
-
-            f.write(2**16 * 'm') # Arbitrary character
-            f.close()
-
-            f = open(TESTFN, "rb+")
-            mf = mmap.mmap(f.fileno(), 0)
-            self.assertEqual(len(mf), 2**16, "Map size should equal file size.")
-            self.assertEqual(mf.read(2**16), 2**16 * "m")
-            mf.close()
-            f.close()
-
-    def test_length_0_offset(self):
-        # Issue #10916: test mapping of remainder of file by passing 0 for
-        # map length with an offset doesn't cause a segfault.
-        if not hasattr(os, "stat"):
-            self.skipTest("needs os.stat")
-        # NOTE: allocation granularity is currently 65536 under Win64,
-        # and therefore the minimum offset alignment.
-        with open(TESTFN, "wb") as f:
-            f.write((65536 * 2) * b'm') # Arbitrary character
-
-        with open(TESTFN, "rb") as f:
-            mf = mmap.mmap(f.fileno(), 0, offset=65536, access=mmap.ACCESS_READ)
-            try:
-                self.assertRaises(IndexError, mf.__getitem__, 80000)
-            finally:
-                mf.close()
-
-    def test_length_0_large_offset(self):
-        # Issue #10959: test mapping of a file by passing 0 for
-        # map length with a large offset doesn't cause a segfault.
-        if not hasattr(os, "stat"):
-            self.skipTest("needs os.stat")
-
-        with open(TESTFN, "wb") as f:
-            f.write(115699 * b'm') # Arbitrary character
-
-        with open(TESTFN, "w+b") as f:
-            self.assertRaises(ValueError, mmap.mmap, f.fileno(), 0,
-                              offset=2147418112)
-
-    def test_move(self):
-        # make move works everywhere (64-bit format problem earlier)
-        f = open(TESTFN, 'w+')
-
-        f.write("ABCDEabcde") # Arbitrary character
-        f.flush()
-
-        mf = mmap.mmap(f.fileno(), 10)
-        mf.move(5, 0, 5)
-        self.assertEqual(mf[:], "ABCDEABCDE", "Map move should have duplicated front 5")
-        mf.close()
-        f.close()
-
-        # more excessive test
-        data = "0123456789"
-        for dest in range(len(data)):
-            for src in range(len(data)):
-                for count in range(len(data) - max(dest, src)):
-                    expected = data[:dest] + data[src:src+count] + data[dest+count:]
-                    m = mmap.mmap(-1, len(data))
-                    m[:] = data
-                    m.move(dest, src, count)
-                    self.assertEqual(m[:], expected)
-                    m.close()
-
-        # segfault test (Issue 5387)
-        m = mmap.mmap(-1, 100)
-        offsets = [-100, -1, 0, 1, 100]
-        for source, dest, size in itertools.product(offsets, offsets, offsets):
-            try:
-                m.move(source, dest, size)
-            except ValueError:
-                pass
-
-        offsets = [(-1, -1, -1), (-1, -1, 0), (-1, 0, -1), (0, -1, -1),
-                   (-1, 0, 0), (0, -1, 0), (0, 0, -1)]
-        for source, dest, size in offsets:
-            self.assertRaises(ValueError, m.move, source, dest, size)
-
-        m.close()
-
-        m = mmap.mmap(-1, 1) # single byte
-        self.assertRaises(ValueError, m.move, 0, 0, 2)
-        self.assertRaises(ValueError, m.move, 1, 0, 1)
-        self.assertRaises(ValueError, m.move, 0, 1, 1)
-        m.move(0, 0, 1)
-        m.move(0, 0, 0)
-
-
-    def test_anonymous(self):
-        # anonymous mmap.mmap(-1, PAGE)
-        m = mmap.mmap(-1, PAGESIZE)
-        for x in xrange(PAGESIZE):
-            self.assertEqual(m[x], '\0', "anonymously mmap'ed contents should be zero")
-
-        for x in xrange(PAGESIZE):
-            m[x] = ch = chr(x & 255)
-            self.assertEqual(m[x], ch)
-
-    def test_extended_getslice(self):
-        # Test extended slicing by comparing with list slicing.
-        s = "".join(chr(c) for c in reversed(range(256)))
-        m = mmap.mmap(-1, len(s))
-        m[:] = s
-        self.assertEqual(m[:], s)
-        indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300)
-        for start in indices:
-            for stop in indices:
-                # Skip step 0 (invalid)
-                for step in indices[1:]:
-                    self.assertEqual(m[start:stop:step],
-                                     s[start:stop:step])
-
-    def test_extended_set_del_slice(self):
-        # Test extended slicing by comparing with list slicing.
-        s = "".join(chr(c) for c in reversed(range(256)))
-        m = mmap.mmap(-1, len(s))
-        indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300)
-        for start in indices:
-            for stop in indices:
-                # Skip invalid step 0
-                for step in indices[1:]:
-                    m[:] = s
-                    self.assertEqual(m[:], s)
-                    L = list(s)
-                    # Make sure we have a slice of exactly the right length,
-                    # but with different data.
-                    data = L[start:stop:step]
-                    data = "".join(reversed(data))
-                    L[start:stop:step] = data
-                    m[start:stop:step] = data
-                    self.assertEqual(m[:], "".join(L))
-
-    def make_mmap_file (self, f, halfsize):
-        # Write 2 pages worth of data to the file
-        f.write ('\0' * halfsize)
-        f.write ('foo')
-        f.write ('\0' * (halfsize - 3))
-        f.flush ()
-        return mmap.mmap (f.fileno(), 0)
-
-    def test_offset (self):
-        f = open (TESTFN, 'w+b')
-
-        try: # unlink TESTFN no matter what
-            halfsize = mmap.ALLOCATIONGRANULARITY
-            m = self.make_mmap_file (f, halfsize)
-            m.close ()
-            f.close ()
-
-            mapsize = halfsize * 2
-            # Try invalid offset
-            f = open(TESTFN, "r+b")
-            for offset in [-2, -1, None]:
-                try:
-                    m = mmap.mmap(f.fileno(), mapsize, offset=offset)
-                    self.assertEqual(0, 1)
-                except (ValueError, TypeError, OverflowError):
-                    pass
-                else:
-                    self.assertEqual(0, 0)
-            f.close()
-
-            # Try valid offset, hopefully 8192 works on all OSes
-            f = open(TESTFN, "r+b")
-            m = mmap.mmap(f.fileno(), mapsize - halfsize, offset=halfsize)
-            self.assertEqual(m[0:3], 'foo')
-            f.close()
-
-            # Try resizing map
-            try:
-                m.resize(512)
-            except SystemError:
-                pass
-            else:
-                # resize() is supported
-                self.assertEqual(len(m), 512)
-                # Check that we can no longer seek beyond the new size.
-                self.assertRaises(ValueError, m.seek, 513, 0)
-                # Check that the content is not changed
-                self.assertEqual(m[0:3], 'foo')
-
-                # Check that the underlying file is truncated too
-                f = open(TESTFN)
-                f.seek(0, 2)
-                self.assertEqual(f.tell(), halfsize + 512)
-                f.close()
-                self.assertEqual(m.size(), halfsize + 512)
-
-            m.close()
-
-        finally:
-            f.close()
-            try:
-                os.unlink(TESTFN)
-            except OSError:
-                pass
-
-    def test_subclass(self):
-        class anon_mmap(mmap.mmap):
-            def __new__(klass, *args, **kwargs):
-                return mmap.mmap.__new__(klass, -1, *args, **kwargs)
-        anon_mmap(PAGESIZE)
-
-    def test_prot_readonly(self):
-        if not hasattr(mmap, 'PROT_READ'):
-            return
-        mapsize = 10
-        open(TESTFN, "wb").write("a"*mapsize)
-        f = open(TESTFN, "rb")
-        m = mmap.mmap(f.fileno(), mapsize, prot=mmap.PROT_READ)
-        self.assertRaises(TypeError, m.write, "foo")
-        f.close()
-
-    def test_error(self):
-        self.assertTrue(issubclass(mmap.error, EnvironmentError))
-        self.assertIn("mmap.error", str(mmap.error))
-
-    def test_io_methods(self):
-        data = "0123456789"
-        open(TESTFN, "wb").write("x"*len(data))
-        f = open(TESTFN, "r+b")
-        m = mmap.mmap(f.fileno(), len(data))
-        f.close()
-        # Test write_byte()
-        for i in xrange(len(data)):
-            self.assertEqual(m.tell(), i)
-            m.write_byte(data[i])
-            self.assertEqual(m.tell(), i+1)
-        self.assertRaises(ValueError, m.write_byte, "x")
-        self.assertEqual(m[:], data)
-        # Test read_byte()
-        m.seek(0)
-        for i in xrange(len(data)):
-            self.assertEqual(m.tell(), i)
-            self.assertEqual(m.read_byte(), data[i])
-            self.assertEqual(m.tell(), i+1)
-        self.assertRaises(ValueError, m.read_byte)
-        # Test read()
-        m.seek(3)
-        self.assertEqual(m.read(3), "345")
-        self.assertEqual(m.tell(), 6)
-        # Test write()
-        m.seek(3)
-        m.write("bar")
-        self.assertEqual(m.tell(), 6)
-        self.assertEqual(m[:], "012bar6789")
-        m.seek(8)
-        self.assertRaises(ValueError, m.write, "bar")
-
-    if os.name == 'nt':
-        def test_tagname(self):
-            data1 = "0123456789"
-            data2 = "abcdefghij"
-            assert len(data1) == len(data2)
-
-            # Test same tag
-            m1 = mmap.mmap(-1, len(data1), tagname="foo")
-            m1[:] = data1
-            m2 = mmap.mmap(-1, len(data2), tagname="foo")
-            m2[:] = data2
-            self.assertEqual(m1[:], data2)
-            self.assertEqual(m2[:], data2)
-            m2.close()
-            m1.close()
-
-            # Test different tag
-            m1 = mmap.mmap(-1, len(data1), tagname="foo")
-            m1[:] = data1
-            m2 = mmap.mmap(-1, len(data2), tagname="boo")
-            m2[:] = data2
-            self.assertEqual(m1[:], data1)
-            self.assertEqual(m2[:], data2)
-            m2.close()
-            m1.close()
-
-        def test_crasher_on_windows(self):
-            # Should not crash (Issue 1733986)
-            m = mmap.mmap(-1, 1000, tagname="foo")
-            try:
-                mmap.mmap(-1, 5000, tagname="foo")[:] # same tagname, but larger size
-            except:
-                pass
-            m.close()
-
-            # Should not crash (Issue 5385)
-            open(TESTFN, "wb").write("x"*10)
-            f = open(TESTFN, "r+b")
-            m = mmap.mmap(f.fileno(), 0)
-            f.close()
-            try:
-                m.resize(0) # will raise WindowsError
-            except:
-                pass
-            try:
-                m[:]
-            except:
-                pass
-            m.close()
-
-        def test_invalid_descriptor(self):
-            # socket file descriptors are valid, but out of range
-            # for _get_osfhandle, causing a crash when validating the
-            # parameters to _get_osfhandle.
-            s = socket.socket()
-            try:
-                with self.assertRaises(mmap.error):
-                    m = mmap.mmap(s.fileno(), 10)
-            finally:
-                s.close()
-
-
-class LargeMmapTests(unittest.TestCase):
-
-    def setUp(self):
-        unlink(TESTFN)
-
-    def tearDown(self):
-        unlink(TESTFN)
-
-    def _make_test_file(self, num_zeroes, tail):
-        if sys.platform[:3] == 'win' or sys.platform == 'darwin':
-            requires('largefile',
-                'test requires %s bytes and a long time to run' % str(0x180000000))
-        f = open(TESTFN, 'w+b')
-        try:
-            f.seek(num_zeroes)
-            f.write(tail)
-            f.flush()
-        except (IOError, OverflowError):
-            f.close()
-            raise unittest.SkipTest("filesystem does not have largefile support")
-        return f
-
-    def test_large_offset(self):
-        with self._make_test_file(0x14FFFFFFF, b" ") as f:
-            m = mmap.mmap(f.fileno(), 0, offset=0x140000000, access=mmap.ACCESS_READ)
-            try:
-                self.assertEqual(m[0xFFFFFFF], b" ")
-            finally:
-                m.close()
-
-    def test_large_filesize(self):
-        with self._make_test_file(0x17FFFFFFF, b" ") as f:
-            m = mmap.mmap(f.fileno(), 0x10000, access=mmap.ACCESS_READ)
-            try:
-                self.assertEqual(m.size(), 0x180000000)
-            finally:
-                m.close()
-
-    # Issue 11277: mmap() with large (~4GB) sparse files crashes on OS X.
-
-    def _test_around_boundary(self, boundary):
-        tail = b'  DEARdear  '
-        start = boundary - len(tail) // 2
-        end = start + len(tail)
-        with self._make_test_file(start, tail) as f:
-            m = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
-            try:
-                self.assertEqual(m[start:end], tail)
-            finally:
-                m.close()
-
-    @unittest.skipUnless(sys.maxsize > _4G, "test cannot run on 32-bit systems")
-    def test_around_2GB(self):
-        self._test_around_boundary(_2G)
-
-    @unittest.skipUnless(sys.maxsize > _4G, "test cannot run on 32-bit systems")
-    def test_around_4GB(self):
-        self._test_around_boundary(_4G)
-
-
-def test_main():
-    run_unittest(MmapTests, LargeMmapTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_module.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_module.py
deleted file mode 100644
index 1fc6d5a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_module.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Test the module type
-import unittest
-from test.test_support import run_unittest, gc_collect
-
-import sys
-ModuleType = type(sys)
-
-class ModuleTests(unittest.TestCase):
-    def test_uninitialized(self):
-        # An uninitialized module has no __dict__ or __name__,
-        # and __doc__ is None
-        foo = ModuleType.__new__(ModuleType)
-        self.assertTrue(foo.__dict__ is None)
-        self.assertRaises(SystemError, dir, foo)
-        try:
-            s = foo.__name__
-            self.fail("__name__ = %s" % repr(s))
-        except AttributeError:
-            pass
-        self.assertEqual(foo.__doc__, ModuleType.__doc__)
-
-    def test_no_docstring(self):
-        # Regularly initialized module, no docstring
-        foo = ModuleType("foo")
-        self.assertEqual(foo.__name__, "foo")
-        self.assertEqual(foo.__doc__, None)
-        self.assertEqual(foo.__dict__, {"__name__": "foo", "__doc__": None})
-
-    def test_ascii_docstring(self):
-        # ASCII docstring
-        foo = ModuleType("foo", "foodoc")
-        self.assertEqual(foo.__name__, "foo")
-        self.assertEqual(foo.__doc__, "foodoc")
-        self.assertEqual(foo.__dict__,
-                         {"__name__": "foo", "__doc__": "foodoc"})
-
-    def test_unicode_docstring(self):
-        # Unicode docstring
-        foo = ModuleType("foo", u"foodoc\u1234")
-        self.assertEqual(foo.__name__, "foo")
-        self.assertEqual(foo.__doc__, u"foodoc\u1234")
-        self.assertEqual(foo.__dict__,
-                         {"__name__": "foo", "__doc__": u"foodoc\u1234"})
-
-    def test_reinit(self):
-        # Reinitialization should not replace the __dict__
-        foo = ModuleType("foo", u"foodoc\u1234")
-        foo.bar = 42
-        d = foo.__dict__
-        foo.__init__("foo", "foodoc")
-        self.assertEqual(foo.__name__, "foo")
-        self.assertEqual(foo.__doc__, "foodoc")
-        self.assertEqual(foo.bar, 42)
-        self.assertEqual(foo.__dict__,
-              {"__name__": "foo", "__doc__": "foodoc", "bar": 42})
-        self.assertTrue(foo.__dict__ is d)
-
-    @unittest.expectedFailure
-    def test_dont_clear_dict(self):
-        # See issue 7140.
-        def f():
-            foo = ModuleType("foo")
-            foo.bar = 4
-            return foo
-        gc_collect()
-        self.assertEqual(f().__dict__["bar"], 4)
-
-    def test_clear_dict_in_ref_cycle(self):
-        destroyed = []
-        m = ModuleType("foo")
-        m.destroyed = destroyed
-        s = """class A:
-    def __del__(self):
-        destroyed.append(1)
-a = A()"""
-        exec(s, m.__dict__)
-        del m
-        gc_collect()
-        self.assertEqual(destroyed, [1])
-
-def test_main():
-    run_unittest(ModuleTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_modulefinder.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_modulefinder.py
deleted file mode 100644
index 6470283..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_modulefinder.py
+++ /dev/null
@@ -1,286 +0,0 @@
-import __future__
-import os
-import unittest
-import distutils.dir_util
-import tempfile
-
-from test import test_support
-
-try: set
-except NameError: from sets import Set as set
-
-import modulefinder
-
-# Note: To test modulefinder with Python 2.2, sets.py and
-# modulefinder.py must be available - they are not in the standard
-# library.
-
-TEST_DIR = tempfile.mkdtemp()
-TEST_PATH = [TEST_DIR, os.path.dirname(__future__.__file__)]
-
-# Each test description is a list of 5 items:
-#
-# 1. a module name that will be imported by modulefinder
-# 2. a list of module names that modulefinder is required to find
-# 3. a list of module names that modulefinder should complain
-#    about because they are not found
-# 4. a list of module names that modulefinder should complain
-#    about because they MAY be not found
-# 5. a string specifying packages to create; the format is obvious imo.
-#
-# Each package will be created in TEST_DIR, and TEST_DIR will be
-# removed after the tests again.
-# Modulefinder searches in a path that contains TEST_DIR, plus
-# the standard Lib directory.
-
-maybe_test = [
-    "a.module",
-    ["a", "a.module", "sys",
-     "b"],
-    ["c"], ["b.something"],
-    """\
-a/__init__.py
-a/module.py
-                                from b import something
-                                from c import something
-b/__init__.py
-                                from sys import *
-"""]
-
-maybe_test_new = [
-    "a.module",
-    ["a", "a.module", "sys",
-     "b", "__future__"],
-    ["c"], ["b.something"],
-    """\
-a/__init__.py
-a/module.py
-                                from b import something
-                                from c import something
-b/__init__.py
-                                from __future__ import absolute_import
-                                from sys import *
-"""]
-
-package_test = [
-    "a.module",
-    ["a", "a.b", "a.c", "a.module", "mymodule", "sys"],
-    ["blahblah"], [],
-    """\
-mymodule.py
-a/__init__.py
-                                import blahblah
-                                from a import b
-                                import c
-a/module.py
-                                import sys
-                                from a import b as x
-                                from a.c import sillyname
-a/b.py
-a/c.py
-                                from a.module import x
-                                import mymodule as sillyname
-                                from sys import version_info
-"""]
-
-absolute_import_test = [
-    "a.module",
-    ["a", "a.module",
-     "b", "b.x", "b.y", "b.z",
-     "__future__", "sys", "exceptions"],
-    ["blahblah"], [],
-    """\
-mymodule.py
-a/__init__.py
-a/module.py
-                                from __future__ import absolute_import
-                                import sys # sys
-                                import blahblah # fails
-                                import exceptions # exceptions
-                                import b.x # b.x
-                                from b import y # b.y
-                                from b.z import * # b.z.*
-a/exceptions.py
-a/sys.py
-                                import mymodule
-a/b/__init__.py
-a/b/x.py
-a/b/y.py
-a/b/z.py
-b/__init__.py
-                                import z
-b/unused.py
-b/x.py
-b/y.py
-b/z.py
-"""]
-
-relative_import_test = [
-    "a.module",
-    ["__future__",
-     "a", "a.module",
-     "a.b", "a.b.y", "a.b.z",
-     "a.b.c", "a.b.c.moduleC",
-     "a.b.c.d", "a.b.c.e",
-     "a.b.x",
-     "exceptions"],
-    [], [],
-    """\
-mymodule.py
-a/__init__.py
-                                from .b import y, z # a.b.y, a.b.z
-a/module.py
-                                from __future__ import absolute_import # __future__
-                                import exceptions # exceptions
-a/exceptions.py
-a/sys.py
-a/b/__init__.py
-                                from ..b import x # a.b.x
-                                #from a.b.c import moduleC
-                                from .c import moduleC # a.b.moduleC
-a/b/x.py
-a/b/y.py
-a/b/z.py
-a/b/g.py
-a/b/c/__init__.py
-                                from ..c import e # a.b.c.e
-a/b/c/moduleC.py
-                                from ..c import d # a.b.c.d
-a/b/c/d.py
-a/b/c/e.py
-a/b/c/x.py
-"""]
-
-relative_import_test_2 = [
-    "a.module",
-    ["a", "a.module",
-     "a.sys",
-     "a.b", "a.b.y", "a.b.z",
-     "a.b.c", "a.b.c.d",
-     "a.b.c.e",
-     "a.b.c.moduleC",
-     "a.b.c.f",
-     "a.b.x",
-     "a.another"],
-    [], [],
-    """\
-mymodule.py
-a/__init__.py
-                                from . import sys # a.sys
-a/another.py
-a/module.py
-                                from .b import y, z # a.b.y, a.b.z
-a/exceptions.py
-a/sys.py
-a/b/__init__.py
-                                from .c import moduleC # a.b.c.moduleC
-                                from .c import d # a.b.c.d
-a/b/x.py
-a/b/y.py
-a/b/z.py
-a/b/c/__init__.py
-                                from . import e # a.b.c.e
-a/b/c/moduleC.py
-                                #
-                                from . import f   # a.b.c.f
-                                from .. import x  # a.b.x
-                                from ... import another # a.another
-a/b/c/d.py
-a/b/c/e.py
-a/b/c/f.py
-"""]
-
-relative_import_test_3 = [
-    "a.module",
-    ["a", "a.module"],
-    ["a.bar"],
-    [],
-    """\
-a/__init__.py
-                                def foo(): pass
-a/module.py
-                                from . import foo
-                                from . import bar
-"""]
-
-def open_file(path):
-    ##print "#", os.path.abspath(path)
-    dirname = os.path.dirname(path)
-    distutils.dir_util.mkpath(dirname)
-    return open(path, "w")
-
-def create_package(source):
-    ofi = None
-    try:
-        for line in source.splitlines():
-            if line.startswith(" ") or line.startswith("\t"):
-                ofi.write(line.strip() + "\n")
-            else:
-                if ofi:
-                    ofi.close()
-                ofi = open_file(os.path.join(TEST_DIR, line.strip()))
-    finally:
-        if ofi:
-            ofi.close()
-
-class ModuleFinderTest(unittest.TestCase):
-    def _do_test(self, info, report=False):
-        import_this, modules, missing, maybe_missing, source = info
-        create_package(source)
-        try:
-            mf = modulefinder.ModuleFinder(path=TEST_PATH)
-            mf.import_hook(import_this)
-            if report:
-                mf.report()
-##                # This wouldn't work in general when executed several times:
-##                opath = sys.path[:]
-##                sys.path = TEST_PATH
-##                try:
-##                    __import__(import_this)
-##                except:
-##                    import traceback; traceback.print_exc()
-##                sys.path = opath
-##                return
-            modules = set(modules)
-            found = set(mf.modules.keys())
-            more = list(found - modules)
-            less = list(modules - found)
-            # check if we found what we expected, not more, not less
-            self.assertEqual((more, less), ([], []))
-
-            # check for missing and maybe missing modules
-            bad, maybe = mf.any_missing_maybe()
-            self.assertEqual(bad, missing)
-            self.assertEqual(maybe, maybe_missing)
-        finally:
-            distutils.dir_util.remove_tree(TEST_DIR)
-
-    def test_package(self):
-        self._do_test(package_test)
-
-    def test_maybe(self):
-        self._do_test(maybe_test)
-
-    if getattr(__future__, "absolute_import", None):
-
-        def test_maybe_new(self):
-            self._do_test(maybe_test_new)
-
-        def test_absolute_imports(self):
-            self._do_test(absolute_import_test)
-
-        def test_relative_imports(self):
-            self._do_test(relative_import_test)
-
-        def test_relative_imports_2(self):
-            self._do_test(relative_import_test_2)
-
-        def test_relative_imports_3(self):
-            self._do_test(relative_import_test_3)
-
-def test_main():
-    distutils.log.set_threshold(distutils.log.WARN)
-    test_support.run_unittest(ModuleFinderTest)
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_msilib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_msilib.py
deleted file mode 100644
index 6dfd31a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_msilib.py
+++ /dev/null
@@ -1,46 +0,0 @@
-""" Test suite for the code in msilib """
-import unittest
-import os
-from test_support import run_unittest, import_module
-msilib = import_module('msilib')
-
-class Test_make_id(unittest.TestCase):
-    #http://msdn.microsoft.com/en-us/library/aa369212(v=vs.85).aspx
-    """The Identifier data type is a text string. Identifiers may contain the
-    ASCII characters A-Z (a-z), digits, underscores (_), or periods (.).
-    However, every identifier must begin with either a letter or an
-    underscore.
-    """
-
-    def test_is_no_change_required(self):
-        self.assertEqual(
-            msilib.make_id("short"), "short")
-        self.assertEqual(
-            msilib.make_id("nochangerequired"), "nochangerequired")
-        self.assertEqual(
-            msilib.make_id("one.dot"), "one.dot")
-        self.assertEqual(
-            msilib.make_id("_"), "_")
-        self.assertEqual(
-            msilib.make_id("a"), "a")
-        #self.assertEqual(
-        #    msilib.make_id(""), "")
-
-    def test_invalid_first_char(self):
-        self.assertEqual(
-            msilib.make_id("9.short"), "_9.short")
-        self.assertEqual(
-            msilib.make_id(".short"), "_.short")
-
-    def test_invalid_any_char(self):
-        self.assertEqual(
-            msilib.make_id(".s\x82ort"), "_.s_ort")
-        self.assertEqual    (
-            msilib.make_id(".s\x82o?*+rt"), "_.s_o___rt")
-
-
-def test_main():
-    run_unittest(__name__)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multibytecodec.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multibytecodec.py
deleted file mode 100644
index 77d4b0c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multibytecodec.py
+++ /dev/null
@@ -1,274 +0,0 @@
-#!/usr/bin/env python
-#
-# test_multibytecodec.py
-#   Unit test for multibytecodec itself
-#
-
-from test import test_support
-from test.test_support import TESTFN
-import unittest, StringIO, codecs, sys, os
-import _multibytecodec
-
-ALL_CJKENCODINGS = [
-# _codecs_cn
-    'gb2312', 'gbk', 'gb18030', 'hz',
-# _codecs_hk
-    'big5hkscs',
-# _codecs_jp
-    'cp932', 'shift_jis', 'euc_jp', 'euc_jisx0213', 'shift_jisx0213',
-    'euc_jis_2004', 'shift_jis_2004',
-# _codecs_kr
-    'cp949', 'euc_kr', 'johab',
-# _codecs_tw
-    'big5', 'cp950',
-# _codecs_iso2022
-    'iso2022_jp', 'iso2022_jp_1', 'iso2022_jp_2', 'iso2022_jp_2004',
-    'iso2022_jp_3', 'iso2022_jp_ext', 'iso2022_kr',
-]
-
-class Test_MultibyteCodec(unittest.TestCase):
-
-    def test_nullcoding(self):
-        for enc in ALL_CJKENCODINGS:
-            self.assertEqual(''.decode(enc), u'')
-            self.assertEqual(unicode('', enc), u'')
-            self.assertEqual(u''.encode(enc), '')
-
-    def test_str_decode(self):
-        for enc in ALL_CJKENCODINGS:
-            self.assertEqual('abcd'.encode(enc), 'abcd')
-
-    def test_errorcallback_longindex(self):
-        dec = codecs.getdecoder('euc-kr')
-        myreplace  = lambda exc: (u'', sys.maxint+1)
-        codecs.register_error('test.cjktest', myreplace)
-        self.assertRaises(IndexError, dec,
-                          'apple\x92ham\x93spam', 'test.cjktest')
-
-    def test_codingspec(self):
-        for enc in ALL_CJKENCODINGS:
-            code = '# coding: {}\n'.format(enc)
-            exec code
-
-    def test_init_segfault(self):
-        # bug #3305: this used to segfault
-        self.assertRaises(AttributeError,
-                          _multibytecodec.MultibyteStreamReader, None)
-        self.assertRaises(AttributeError,
-                          _multibytecodec.MultibyteStreamWriter, None)
-
-
-class Test_IncrementalEncoder(unittest.TestCase):
-
-    def test_stateless(self):
-        # cp949 encoder isn't stateful at all.
-        encoder = codecs.getincrementalencoder('cp949')()
-        self.assertEqual(encoder.encode(u'\ud30c\uc774\uc36c \ub9c8\uc744'),
-                         '\xc6\xc4\xc0\xcc\xbd\xe3 \xb8\xb6\xc0\xbb')
-        self.assertEqual(encoder.reset(), None)
-        self.assertEqual(encoder.encode(u'\u2606\u223c\u2606', True),
-                         '\xa1\xd9\xa1\xad\xa1\xd9')
-        self.assertEqual(encoder.reset(), None)
-        self.assertEqual(encoder.encode(u'', True), '')
-        self.assertEqual(encoder.encode(u'', False), '')
-        self.assertEqual(encoder.reset(), None)
-
-    def test_stateful(self):
-        # jisx0213 encoder is stateful for a few codepoints. eg)
-        #   U+00E6 => A9DC
-        #   U+00E6 U+0300 => ABC4
-        #   U+0300 => ABDC
-
-        encoder = codecs.getincrementalencoder('jisx0213')()
-        self.assertEqual(encoder.encode(u'\u00e6\u0300'), '\xab\xc4')
-        self.assertEqual(encoder.encode(u'\u00e6'), '')
-        self.assertEqual(encoder.encode(u'\u0300'), '\xab\xc4')
-        self.assertEqual(encoder.encode(u'\u00e6', True), '\xa9\xdc')
-
-        self.assertEqual(encoder.reset(), None)
-        self.assertEqual(encoder.encode(u'\u0300'), '\xab\xdc')
-
-        self.assertEqual(encoder.encode(u'\u00e6'), '')
-        self.assertEqual(encoder.encode('', True), '\xa9\xdc')
-        self.assertEqual(encoder.encode('', True), '')
-
-    def test_stateful_keep_buffer(self):
-        encoder = codecs.getincrementalencoder('jisx0213')()
-        self.assertEqual(encoder.encode(u'\u00e6'), '')
-        self.assertRaises(UnicodeEncodeError, encoder.encode, u'\u0123')
-        self.assertEqual(encoder.encode(u'\u0300\u00e6'), '\xab\xc4')
-        self.assertRaises(UnicodeEncodeError, encoder.encode, u'\u0123')
-        self.assertEqual(encoder.reset(), None)
-        self.assertEqual(encoder.encode(u'\u0300'), '\xab\xdc')
-        self.assertEqual(encoder.encode(u'\u00e6'), '')
-        self.assertRaises(UnicodeEncodeError, encoder.encode, u'\u0123')
-        self.assertEqual(encoder.encode(u'', True), '\xa9\xdc')
-
-    def test_issue5640(self):
-        encoder = codecs.getincrementalencoder('shift-jis')('backslashreplace')
-        self.assertEqual(encoder.encode(u'\xff'), b'\\xff')
-        self.assertEqual(encoder.encode(u'\n'), b'\n')
-
-class Test_IncrementalDecoder(unittest.TestCase):
-
-    def test_dbcs(self):
-        # cp949 decoder is simple with only 1 or 2 bytes sequences.
-        decoder = codecs.getincrementaldecoder('cp949')()
-        self.assertEqual(decoder.decode('\xc6\xc4\xc0\xcc\xbd'),
-                         u'\ud30c\uc774')
-        self.assertEqual(decoder.decode('\xe3 \xb8\xb6\xc0\xbb'),
-                         u'\uc36c \ub9c8\uc744')
-        self.assertEqual(decoder.decode(''), u'')
-
-    def test_dbcs_keep_buffer(self):
-        decoder = codecs.getincrementaldecoder('cp949')()
-        self.assertEqual(decoder.decode('\xc6\xc4\xc0'), u'\ud30c')
-        self.assertRaises(UnicodeDecodeError, decoder.decode, '', True)
-        self.assertEqual(decoder.decode('\xcc'), u'\uc774')
-
-        self.assertEqual(decoder.decode('\xc6\xc4\xc0'), u'\ud30c')
-        self.assertRaises(UnicodeDecodeError, decoder.decode, '\xcc\xbd', True)
-        self.assertEqual(decoder.decode('\xcc'), u'\uc774')
-
-    def test_iso2022(self):
-        decoder = codecs.getincrementaldecoder('iso2022-jp')()
-        ESC = '\x1b'
-        self.assertEqual(decoder.decode(ESC + '('), u'')
-        self.assertEqual(decoder.decode('B', True), u'')
-        self.assertEqual(decoder.decode(ESC + '$'), u'')
-        self.assertEqual(decoder.decode('B@$'), u'\u4e16')
-        self.assertEqual(decoder.decode('@$@'), u'\u4e16')
-        self.assertEqual(decoder.decode('$', True), u'\u4e16')
-        self.assertEqual(decoder.reset(), None)
-        self.assertEqual(decoder.decode('@$'), u'@$')
-        self.assertEqual(decoder.decode(ESC + '$'), u'')
-        self.assertRaises(UnicodeDecodeError, decoder.decode, '', True)
-        self.assertEqual(decoder.decode('B@$'), u'\u4e16')
-
-class Test_StreamReader(unittest.TestCase):
-    def test_bug1728403(self):
-        try:
-            open(TESTFN, 'w').write('\xa1')
-            f = codecs.open(TESTFN, encoding='cp949')
-            self.assertRaises(UnicodeDecodeError, f.read, 2)
-        finally:
-            try: f.close()
-            except: pass
-            os.unlink(TESTFN)
-
-class Test_StreamWriter(unittest.TestCase):
-    if len(u'\U00012345') == 2: # UCS2
-        def test_gb18030(self):
-            s = StringIO.StringIO()
-            c = codecs.getwriter('gb18030')(s)
-            c.write(u'123')
-            self.assertEqual(s.getvalue(), '123')
-            c.write(u'\U00012345')
-            self.assertEqual(s.getvalue(), '123\x907\x959')
-            c.write(u'\U00012345'[0])
-            self.assertEqual(s.getvalue(), '123\x907\x959')
-            c.write(u'\U00012345'[1] + u'\U00012345' + u'\uac00\u00ac')
-            self.assertEqual(s.getvalue(),
-                    '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851')
-            c.write(u'\U00012345'[0])
-            self.assertEqual(s.getvalue(),
-                    '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851')
-            self.assertRaises(UnicodeError, c.reset)
-            self.assertEqual(s.getvalue(),
-                    '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851')
-
-        def test_utf_8(self):
-            s= StringIO.StringIO()
-            c = codecs.getwriter('utf-8')(s)
-            c.write(u'123')
-            self.assertEqual(s.getvalue(), '123')
-            c.write(u'\U00012345')
-            self.assertEqual(s.getvalue(), '123\xf0\x92\x8d\x85')
-
-            # Python utf-8 codec can't buffer surrogate pairs yet.
-            if 0:
-                c.write(u'\U00012345'[0])
-                self.assertEqual(s.getvalue(), '123\xf0\x92\x8d\x85')
-                c.write(u'\U00012345'[1] + u'\U00012345' + u'\uac00\u00ac')
-                self.assertEqual(s.getvalue(),
-                    '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85'
-                    '\xea\xb0\x80\xc2\xac')
-                c.write(u'\U00012345'[0])
-                self.assertEqual(s.getvalue(),
-                    '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85'
-                    '\xea\xb0\x80\xc2\xac')
-                c.reset()
-                self.assertEqual(s.getvalue(),
-                    '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85'
-                    '\xea\xb0\x80\xc2\xac\xed\xa0\x88')
-                c.write(u'\U00012345'[1])
-                self.assertEqual(s.getvalue(),
-                    '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85'
-                    '\xea\xb0\x80\xc2\xac\xed\xa0\x88\xed\xbd\x85')
-
-    else: # UCS4
-        pass
-
-    def test_streamwriter_strwrite(self):
-        s = StringIO.StringIO()
-        wr = codecs.getwriter('gb18030')(s)
-        wr.write('abcd')
-        self.assertEqual(s.getvalue(), 'abcd')
-
-class Test_ISO2022(unittest.TestCase):
-    def test_g2(self):
-        iso2022jp2 = '\x1b(B:hu4:unit\x1b.A\x1bNi de famille'
-        uni = u':hu4:unit\xe9 de famille'
-        self.assertEqual(iso2022jp2.decode('iso2022-jp-2'), uni)
-
-    def test_iso2022_jp_g0(self):
-        self.assertNotIn('\x0e', u'\N{SOFT HYPHEN}'.encode('iso-2022-jp-2'))
-        for encoding in ('iso-2022-jp-2004', 'iso-2022-jp-3'):
-            e = u'\u3406'.encode(encoding)
-            self.assertFalse(filter(lambda x: x >= '\x80', e))
-
-    def test_bug1572832(self):
-        if sys.maxunicode >= 0x10000:
-            myunichr = unichr
-        else:
-            myunichr = lambda x: unichr(0xD7C0+(x>>10)) + unichr(0xDC00+(x&0x3FF))
-
-        for x in xrange(0x10000, 0x110000):
-            # Any ISO 2022 codec will cause the segfault
-            myunichr(x).encode('iso_2022_jp', 'ignore')
-
-class TestStateful(unittest.TestCase):
-    text = u'\u4E16\u4E16'
-    encoding = 'iso-2022-jp'
-    expected = b'\x1b$B@$@$'
-    expected_reset = b'\x1b$B@$@$\x1b(B'
-
-    def test_encode(self):
-        self.assertEqual(self.text.encode(self.encoding), self.expected_reset)
-
-    def test_incrementalencoder(self):
-        encoder = codecs.getincrementalencoder(self.encoding)()
-        output = b''.join(
-            encoder.encode(char)
-            for char in self.text)
-        self.assertEqual(output, self.expected)
-
-    def test_incrementalencoder_final(self):
-        encoder = codecs.getincrementalencoder(self.encoding)()
-        last_index = len(self.text) - 1
-        output = b''.join(
-            encoder.encode(char, index == last_index)
-            for index, char in enumerate(self.text))
-        self.assertEqual(output, self.expected_reset)
-
-class TestHZStateful(TestStateful):
-    text = u'\u804a\u804a'
-    encoding = 'hz'
-    expected = b'~{ADAD'
-    expected_reset = b'~{ADAD~}'
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multibytecodec_support.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multibytecodec_support.py
deleted file mode 100644
index 189ee5e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multibytecodec_support.py
+++ /dev/null
@@ -1,338 +0,0 @@
-#!/usr/bin/env python
-#
-# test_multibytecodec_support.py
-#   Common Unittest Routines for CJK codecs
-#
-
-import codecs
-import os
-import re
-import sys
-import unittest
-from httplib import HTTPException
-from test import test_support
-from StringIO import StringIO
-
-class TestBase:
-    encoding        = ''   # codec name
-    codec           = None # codec tuple (with 4 elements)
-    tstring         = ''   # string to test StreamReader
-
-    codectests      = None # must set. codec test tuple
-    roundtriptest   = 1    # set if roundtrip is possible with unicode
-    has_iso10646    = 0    # set if this encoding contains whole iso10646 map
-    xmlcharnametest = None # string to test xmlcharrefreplace
-    unmappedunicode = u'\udeee' # a unicode codepoint that is not mapped.
-
-    def setUp(self):
-        if self.codec is None:
-            self.codec = codecs.lookup(self.encoding)
-        self.encode = self.codec.encode
-        self.decode = self.codec.decode
-        self.reader = self.codec.streamreader
-        self.writer = self.codec.streamwriter
-        self.incrementalencoder = self.codec.incrementalencoder
-        self.incrementaldecoder = self.codec.incrementaldecoder
-
-    def test_chunkcoding(self):
-        for native, utf8 in zip(*[StringIO(f).readlines()
-                                  for f in self.tstring]):
-            u = self.decode(native)[0]
-            self.assertEqual(u, utf8.decode('utf-8'))
-            if self.roundtriptest:
-                self.assertEqual(native, self.encode(u)[0])
-
-    def test_errorhandle(self):
-        for source, scheme, expected in self.codectests:
-            if type(source) == type(''):
-                func = self.decode
-            else:
-                func = self.encode
-            if expected:
-                result = func(source, scheme)[0]
-                self.assertEqual(result, expected)
-            else:
-                self.assertRaises(UnicodeError, func, source, scheme)
-
-    def test_xmlcharrefreplace(self):
-        if self.has_iso10646:
-            return
-
-        s = u"\u0b13\u0b23\u0b60 nd eggs"
-        self.assertEqual(
-            self.encode(s, "xmlcharrefreplace")[0],
-            "&#2835;&#2851;&#2912; nd eggs"
-        )
-
-    def test_customreplace_encode(self):
-        if self.has_iso10646:
-            return
-
-        from htmlentitydefs import codepoint2name
-
-        def xmlcharnamereplace(exc):
-            if not isinstance(exc, UnicodeEncodeError):
-                raise TypeError("don't know how to handle %r" % exc)
-            l = []
-            for c in exc.object[exc.start:exc.end]:
-                if ord(c) in codepoint2name:
-                    l.append(u"&%s;" % codepoint2name[ord(c)])
-                else:
-                    l.append(u"&#%d;" % ord(c))
-            return (u"".join(l), exc.end)
-
-        codecs.register_error("test.xmlcharnamereplace", xmlcharnamereplace)
-
-        if self.xmlcharnametest:
-            sin, sout = self.xmlcharnametest
-        else:
-            sin = u"\xab\u211c\xbb = \u2329\u1234\u232a"
-            sout = "&laquo;&real;&raquo; = &lang;&#4660;&rang;"
-        self.assertEqual(self.encode(sin,
-                                    "test.xmlcharnamereplace")[0], sout)
-
-    def test_callback_wrong_objects(self):
-        def myreplace(exc):
-            return (ret, exc.end)
-        codecs.register_error("test.cjktest", myreplace)
-
-        for ret in ([1, 2, 3], [], None, object(), 'string', ''):
-            self.assertRaises(TypeError, self.encode, self.unmappedunicode,
-                              'test.cjktest')
-
-    def test_callback_long_index(self):
-        def myreplace(exc):
-            return (u'x', long(exc.end))
-        codecs.register_error("test.cjktest", myreplace)
-        self.assertEqual(self.encode(u'abcd' + self.unmappedunicode + u'efgh',
-                                     'test.cjktest'), ('abcdxefgh', 9))
-
-        def myreplace(exc):
-            return (u'x', sys.maxint + 1)
-        codecs.register_error("test.cjktest", myreplace)
-        self.assertRaises(IndexError, self.encode, self.unmappedunicode,
-                          'test.cjktest')
-
-    def test_callback_None_index(self):
-        def myreplace(exc):
-            return (u'x', None)
-        codecs.register_error("test.cjktest", myreplace)
-        self.assertRaises(TypeError, self.encode, self.unmappedunicode,
-                          'test.cjktest')
-
-    def test_callback_backward_index(self):
-        def myreplace(exc):
-            if myreplace.limit > 0:
-                myreplace.limit -= 1
-                return (u'REPLACED', 0)
-            else:
-                return (u'TERMINAL', exc.end)
-        myreplace.limit = 3
-        codecs.register_error("test.cjktest", myreplace)
-        self.assertEqual(self.encode(u'abcd' + self.unmappedunicode + u'efgh',
-                                     'test.cjktest'),
-                ('abcdREPLACEDabcdREPLACEDabcdREPLACEDabcdTERMINALefgh', 9))
-
-    def test_callback_forward_index(self):
-        def myreplace(exc):
-            return (u'REPLACED', exc.end + 2)
-        codecs.register_error("test.cjktest", myreplace)
-        self.assertEqual(self.encode(u'abcd' + self.unmappedunicode + u'efgh',
-                                     'test.cjktest'), ('abcdREPLACEDgh', 9))
-
-    def test_callback_index_outofbound(self):
-        def myreplace(exc):
-            return (u'TERM', 100)
-        codecs.register_error("test.cjktest", myreplace)
-        self.assertRaises(IndexError, self.encode, self.unmappedunicode,
-                          'test.cjktest')
-
-    def test_incrementalencoder(self):
-        UTF8Reader = codecs.getreader('utf-8')
-        for sizehint in [None] + range(1, 33) + \
-                        [64, 128, 256, 512, 1024]:
-            istream = UTF8Reader(StringIO(self.tstring[1]))
-            ostream = StringIO()
-            encoder = self.incrementalencoder()
-            while 1:
-                if sizehint is not None:
-                    data = istream.read(sizehint)
-                else:
-                    data = istream.read()
-
-                if not data:
-                    break
-                e = encoder.encode(data)
-                ostream.write(e)
-
-            self.assertEqual(ostream.getvalue(), self.tstring[0])
-
-    def test_incrementaldecoder(self):
-        UTF8Writer = codecs.getwriter('utf-8')
-        for sizehint in [None, -1] + range(1, 33) + \
-                        [64, 128, 256, 512, 1024]:
-            istream = StringIO(self.tstring[0])
-            ostream = UTF8Writer(StringIO())
-            decoder = self.incrementaldecoder()
-            while 1:
-                data = istream.read(sizehint)
-                if not data:
-                    break
-                else:
-                    u = decoder.decode(data)
-                    ostream.write(u)
-
-            self.assertEqual(ostream.getvalue(), self.tstring[1])
-
-    def test_incrementalencoder_error_callback(self):
-        inv = self.unmappedunicode
-
-        e = self.incrementalencoder()
-        self.assertRaises(UnicodeEncodeError, e.encode, inv, True)
-
-        e.errors = 'ignore'
-        self.assertEqual(e.encode(inv, True), '')
-
-        e.reset()
-        def tempreplace(exc):
-            return (u'called', exc.end)
-        codecs.register_error('test.incremental_error_callback', tempreplace)
-        e.errors = 'test.incremental_error_callback'
-        self.assertEqual(e.encode(inv, True), 'called')
-
-        # again
-        e.errors = 'ignore'
-        self.assertEqual(e.encode(inv, True), '')
-
-    def test_streamreader(self):
-        UTF8Writer = codecs.getwriter('utf-8')
-        for name in ["read", "readline", "readlines"]:
-            for sizehint in [None, -1] + range(1, 33) + \
-                            [64, 128, 256, 512, 1024]:
-                istream = self.reader(StringIO(self.tstring[0]))
-                ostream = UTF8Writer(StringIO())
-                func = getattr(istream, name)
-                while 1:
-                    data = func(sizehint)
-                    if not data:
-                        break
-                    if name == "readlines":
-                        ostream.writelines(data)
-                    else:
-                        ostream.write(data)
-
-                self.assertEqual(ostream.getvalue(), self.tstring[1])
-
-    def test_streamwriter(self):
-        readfuncs = ('read', 'readline', 'readlines')
-        UTF8Reader = codecs.getreader('utf-8')
-        for name in readfuncs:
-            for sizehint in [None] + range(1, 33) + \
-                            [64, 128, 256, 512, 1024]:
-                istream = UTF8Reader(StringIO(self.tstring[1]))
-                ostream = self.writer(StringIO())
-                func = getattr(istream, name)
-                while 1:
-                    if sizehint is not None:
-                        data = func(sizehint)
-                    else:
-                        data = func()
-
-                    if not data:
-                        break
-                    if name == "readlines":
-                        ostream.writelines(data)
-                    else:
-                        ostream.write(data)
-
-                self.assertEqual(ostream.getvalue(), self.tstring[0])
-
-class TestBase_Mapping(unittest.TestCase):
-    pass_enctest = []
-    pass_dectest = []
-    supmaps = []
-
-    def __init__(self, *args, **kw):
-        unittest.TestCase.__init__(self, *args, **kw)
-        try:
-            self.open_mapping_file().close() # test it to report the error early
-        except (IOError, HTTPException):
-            self.skipTest("Could not retrieve "+self.mapfileurl)
-
-    def open_mapping_file(self):
-        return test_support.open_urlresource(self.mapfileurl)
-
-    def test_mapping_file(self):
-        if self.mapfileurl.endswith('.xml'):
-            self._test_mapping_file_ucm()
-        else:
-            self._test_mapping_file_plain()
-
-    def _test_mapping_file_plain(self):
-        _unichr = lambda c: eval("u'\\U%08x'" % int(c, 16))
-        unichrs = lambda s: u''.join(_unichr(c) for c in s.split('+'))
-        urt_wa = {}
-
-        with self.open_mapping_file() as f:
-            for line in f:
-                if not line:
-                    break
-                data = line.split('#')[0].strip().split()
-                if len(data) != 2:
-                    continue
-
-                csetval = eval(data[0])
-                if csetval <= 0x7F:
-                    csetch = chr(csetval & 0xff)
-                elif csetval >= 0x1000000:
-                    csetch = chr(csetval >> 24) + chr((csetval >> 16) & 0xff) + \
-                             chr((csetval >> 8) & 0xff) + chr(csetval & 0xff)
-                elif csetval >= 0x10000:
-                    csetch = chr(csetval >> 16) + \
-                             chr((csetval >> 8) & 0xff) + chr(csetval & 0xff)
-                elif csetval >= 0x100:
-                    csetch = chr(csetval >> 8) + chr(csetval & 0xff)
-                else:
-                    continue
-
-                unich = unichrs(data[1])
-                if unich == u'\ufffd' or unich in urt_wa:
-                    continue
-                urt_wa[unich] = csetch
-
-                self._testpoint(csetch, unich)
-
-    def _test_mapping_file_ucm(self):
-        with self.open_mapping_file() as f:
-            ucmdata = f.read()
-        uc = re.findall('<a u="([A-F0-9]{4})" b="([0-9A-F ]+)"/>', ucmdata)
-        for uni, coded in uc:
-            unich = unichr(int(uni, 16))
-            codech = ''.join(chr(int(c, 16)) for c in coded.split())
-            self._testpoint(codech, unich)
-
-    def test_mapping_supplemental(self):
-        for mapping in self.supmaps:
-            self._testpoint(*mapping)
-
-    def _testpoint(self, csetch, unich):
-        if (csetch, unich) not in self.pass_enctest:
-            try:
-                self.assertEqual(unich.encode(self.encoding), csetch)
-            except UnicodeError, exc:
-                self.fail('Encoding failed while testing %s -> %s: %s' % (
-                            repr(unich), repr(csetch), exc.reason))
-        if (csetch, unich) not in self.pass_dectest:
-            try:
-                self.assertEqual(csetch.decode(self.encoding), unich)
-            except UnicodeError, exc:
-                self.fail('Decoding failed while testing %s -> %s: %s' % (
-                            repr(csetch), repr(unich), exc.reason))
-
-def load_teststring(name):
-    dir = os.path.join(os.path.dirname(__file__), 'cjkencodings')
-    with open(os.path.join(dir, name + '.txt'), 'rb') as f:
-        encoded = f.read()
-    with open(os.path.join(dir, name + '-utf8.txt'), 'rb') as f:
-        utf8 = f.read()
-    return encoded, utf8
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multifile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multifile.py
deleted file mode 100644
index b5f63ee..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multifile.py
+++ /dev/null
@@ -1,67 +0,0 @@
-from test import test_support
-mimetools = test_support.import_module('mimetools', deprecated=True)
-multifile = test_support.import_module('multifile', deprecated=True)
-import cStringIO
-
-msg = """Mime-Version: 1.0
-Content-Type: multipart/mixed;
-        boundary="=====================_590453667==_"
-X-OriginalArrivalTime: 05 Feb 2002 03:43:23.0310 (UTC) FILETIME=[42D88CE0:01C1ADF7]
-
---=====================_590453667==_
-Content-Type: multipart/alternative;
-        boundary="=====================_590453677==_.ALT"
-
---=====================_590453677==_.ALT
-Content-Type: text/plain; charset="us-ascii"; format=flowed
-
-test A
---=====================_590453677==_.ALT
-Content-Type: text/html; charset="us-ascii"
-
-<html>
-<b>test B</font></b></html>
-
---=====================_590453677==_.ALT--
-
---=====================_590453667==_
-Content-Type: text/plain; charset="us-ascii"
-Content-Disposition: attachment; filename="att.txt"
-
-Attached Content.
-Attached Content.
-Attached Content.
-Attached Content.
-
---=====================_590453667==_--
-
-"""
-
-def getMIMEMsg(mf):
-    global boundaries, linecount
-    msg = mimetools.Message(mf)
-
-    #print "TYPE: %s" % msg.gettype()
-    if msg.getmaintype() == 'multipart':
-        boundary = msg.getparam("boundary")
-        boundaries += 1
-
-        mf.push(boundary)
-        while mf.next():
-            getMIMEMsg(mf)
-        mf.pop()
-    else:
-        lines = mf.readlines()
-        linecount += len(lines)
-
-def test_main():
-    global boundaries, linecount
-    boundaries = 0
-    linecount = 0
-    f = cStringIO.StringIO(msg)
-    getMIMEMsg(multifile.MultiFile(f))
-    assert boundaries == 2
-    assert linecount == 9
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multiprocessing.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multiprocessing.py
deleted file mode 100644
index a4bb08b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_multiprocessing.py
+++ /dev/null
@@ -1,2110 +0,0 @@
-#!/usr/bin/env python
-
-#
-# Unit tests for the multiprocessing package
-#
-
-import unittest
-import Queue
-import time
-import sys
-import os
-import gc
-import signal
-import array
-import socket
-import random
-import logging
-from test import test_support
-from StringIO import StringIO
-_multiprocessing = test_support.import_module('_multiprocessing')
-# import threading after _multiprocessing to raise a more relevant error
-# message: "No module named _multiprocessing". _multiprocessing is not compiled
-# without thread support.
-import threading
-
-# Work around broken sem_open implementations
-test_support.import_module('multiprocessing.synchronize')
-
-import multiprocessing.dummy
-import multiprocessing.connection
-import multiprocessing.managers
-import multiprocessing.heap
-import multiprocessing.pool
-
-from multiprocessing import util
-
-try:
-    from multiprocessing.sharedctypes import Value, copy
-    HAS_SHAREDCTYPES = True
-except ImportError:
-    HAS_SHAREDCTYPES = False
-
-#
-#
-#
-
-latin = str
-
-#
-# Constants
-#
-
-LOG_LEVEL = util.SUBWARNING
-#LOG_LEVEL = logging.DEBUG
-
-DELTA = 0.1
-CHECK_TIMINGS = False     # making true makes tests take a lot longer
-                          # and can sometimes cause some non-serious
-                          # failures because some calls block a bit
-                          # longer than expected
-if CHECK_TIMINGS:
-    TIMEOUT1, TIMEOUT2, TIMEOUT3 = 0.82, 0.35, 1.4
-else:
-    TIMEOUT1, TIMEOUT2, TIMEOUT3 = 0.1, 0.1, 0.1
-
-HAVE_GETVALUE = not getattr(_multiprocessing,
-                            'HAVE_BROKEN_SEM_GETVALUE', False)
-
-WIN32 = (sys.platform == "win32")
-
-#
-# Some tests require ctypes
-#
-
-try:
-    from ctypes import Structure, c_int, c_double
-except ImportError:
-    Structure = object
-    c_int = c_double = None
-
-#
-# Creates a wrapper for a function which records the time it takes to finish
-#
-
-class TimingWrapper(object):
-
-    def __init__(self, func):
-        self.func = func
-        self.elapsed = None
-
-    def __call__(self, *args, **kwds):
-        t = time.time()
-        try:
-            return self.func(*args, **kwds)
-        finally:
-            self.elapsed = time.time() - t
-
-#
-# Base class for test cases
-#
-
-class BaseTestCase(object):
-
-    ALLOWED_TYPES = ('processes', 'manager', 'threads')
-
-    def assertTimingAlmostEqual(self, a, b):
-        if CHECK_TIMINGS:
-            self.assertAlmostEqual(a, b, 1)
-
-    def assertReturnsIfImplemented(self, value, func, *args):
-        try:
-            res = func(*args)
-        except NotImplementedError:
-            pass
-        else:
-            return self.assertEqual(value, res)
-
-    # For the sanity of Windows users, rather than crashing or freezing in
-    # multiple ways.
-    def __reduce__(self, *args):
-        raise NotImplementedError("shouldn't try to pickle a test case")
-
-    __reduce_ex__ = __reduce__
-
-#
-# Return the value of a semaphore
-#
-
-def get_value(self):
-    try:
-        return self.get_value()
-    except AttributeError:
-        try:
-            return self._Semaphore__value
-        except AttributeError:
-            try:
-                return self._value
-            except AttributeError:
-                raise NotImplementedError
-
-#
-# Testcases
-#
-
-class _TestProcess(BaseTestCase):
-
-    ALLOWED_TYPES = ('processes', 'threads')
-
-    def test_current(self):
-        if self.TYPE == 'threads':
-            return
-
-        current = self.current_process()
-        authkey = current.authkey
-
-        self.assertTrue(current.is_alive())
-        self.assertTrue(not current.daemon)
-        self.assertIsInstance(authkey, bytes)
-        self.assertTrue(len(authkey) > 0)
-        self.assertEqual(current.ident, os.getpid())
-        self.assertEqual(current.exitcode, None)
-
-    @classmethod
-    def _test(cls, q, *args, **kwds):
-        current = cls.current_process()
-        q.put(args)
-        q.put(kwds)
-        q.put(current.name)
-        if cls.TYPE != 'threads':
-            q.put(bytes(current.authkey))
-            q.put(current.pid)
-
-    def test_process(self):
-        q = self.Queue(1)
-        e = self.Event()
-        args = (q, 1, 2)
-        kwargs = {'hello':23, 'bye':2.54}
-        name = 'SomeProcess'
-        p = self.Process(
-            target=self._test, args=args, kwargs=kwargs, name=name
-            )
-        p.daemon = True
-        current = self.current_process()
-
-        if self.TYPE != 'threads':
-            self.assertEqual(p.authkey, current.authkey)
-        self.assertEqual(p.is_alive(), False)
-        self.assertEqual(p.daemon, True)
-        self.assertNotIn(p, self.active_children())
-        self.assertTrue(type(self.active_children()) is list)
-        self.assertEqual(p.exitcode, None)
-
-        p.start()
-
-        self.assertEqual(p.exitcode, None)
-        self.assertEqual(p.is_alive(), True)
-        self.assertIn(p, self.active_children())
-
-        self.assertEqual(q.get(), args[1:])
-        self.assertEqual(q.get(), kwargs)
-        self.assertEqual(q.get(), p.name)
-        if self.TYPE != 'threads':
-            self.assertEqual(q.get(), current.authkey)
-            self.assertEqual(q.get(), p.pid)
-
-        p.join()
-
-        self.assertEqual(p.exitcode, 0)
-        self.assertEqual(p.is_alive(), False)
-        self.assertNotIn(p, self.active_children())
-
-    @classmethod
-    def _test_terminate(cls):
-        time.sleep(1000)
-
-    def test_terminate(self):
-        if self.TYPE == 'threads':
-            return
-
-        p = self.Process(target=self._test_terminate)
-        p.daemon = True
-        p.start()
-
-        self.assertEqual(p.is_alive(), True)
-        self.assertIn(p, self.active_children())
-        self.assertEqual(p.exitcode, None)
-
-        p.terminate()
-
-        join = TimingWrapper(p.join)
-        self.assertEqual(join(), None)
-        self.assertTimingAlmostEqual(join.elapsed, 0.0)
-
-        self.assertEqual(p.is_alive(), False)
-        self.assertNotIn(p, self.active_children())
-
-        p.join()
-
-        # XXX sometimes get p.exitcode == 0 on Windows ...
-        #self.assertEqual(p.exitcode, -signal.SIGTERM)
-
-    def test_cpu_count(self):
-        try:
-            cpus = multiprocessing.cpu_count()
-        except NotImplementedError:
-            cpus = 1
-        self.assertTrue(type(cpus) is int)
-        self.assertTrue(cpus >= 1)
-
-    def test_active_children(self):
-        self.assertEqual(type(self.active_children()), list)
-
-        p = self.Process(target=time.sleep, args=(DELTA,))
-        self.assertNotIn(p, self.active_children())
-
-        p.start()
-        self.assertIn(p, self.active_children())
-
-        p.join()
-        self.assertNotIn(p, self.active_children())
-
-    @classmethod
-    def _test_recursion(cls, wconn, id):
-        from multiprocessing import forking
-        wconn.send(id)
-        if len(id) < 2:
-            for i in range(2):
-                p = cls.Process(
-                    target=cls._test_recursion, args=(wconn, id+[i])
-                    )
-                p.start()
-                p.join()
-
-    def test_recursion(self):
-        rconn, wconn = self.Pipe(duplex=False)
-        self._test_recursion(wconn, [])
-
-        time.sleep(DELTA)
-        result = []
-        while rconn.poll():
-            result.append(rconn.recv())
-
-        expected = [
-            [],
-              [0],
-                [0, 0],
-                [0, 1],
-              [1],
-                [1, 0],
-                [1, 1]
-            ]
-        self.assertEqual(result, expected)
-
-#
-#
-#
-
-class _UpperCaser(multiprocessing.Process):
-
-    def __init__(self):
-        multiprocessing.Process.__init__(self)
-        self.child_conn, self.parent_conn = multiprocessing.Pipe()
-
-    def run(self):
-        self.parent_conn.close()
-        for s in iter(self.child_conn.recv, None):
-            self.child_conn.send(s.upper())
-        self.child_conn.close()
-
-    def submit(self, s):
-        assert type(s) is str
-        self.parent_conn.send(s)
-        return self.parent_conn.recv()
-
-    def stop(self):
-        self.parent_conn.send(None)
-        self.parent_conn.close()
-        self.child_conn.close()
-
-class _TestSubclassingProcess(BaseTestCase):
-
-    ALLOWED_TYPES = ('processes',)
-
-    def test_subclassing(self):
-        uppercaser = _UpperCaser()
-        uppercaser.start()
-        self.assertEqual(uppercaser.submit('hello'), 'HELLO')
-        self.assertEqual(uppercaser.submit('world'), 'WORLD')
-        uppercaser.stop()
-        uppercaser.join()
-
-#
-#
-#
-
-def queue_empty(q):
-    if hasattr(q, 'empty'):
-        return q.empty()
-    else:
-        return q.qsize() == 0
-
-def queue_full(q, maxsize):
-    if hasattr(q, 'full'):
-        return q.full()
-    else:
-        return q.qsize() == maxsize
-
-
-class _TestQueue(BaseTestCase):
-
-
-    @classmethod
-    def _test_put(cls, queue, child_can_start, parent_can_continue):
-        child_can_start.wait()
-        for i in range(6):
-            queue.get()
-        parent_can_continue.set()
-
-    def test_put(self):
-        MAXSIZE = 6
-        queue = self.Queue(maxsize=MAXSIZE)
-        child_can_start = self.Event()
-        parent_can_continue = self.Event()
-
-        proc = self.Process(
-            target=self._test_put,
-            args=(queue, child_can_start, parent_can_continue)
-            )
-        proc.daemon = True
-        proc.start()
-
-        self.assertEqual(queue_empty(queue), True)
-        self.assertEqual(queue_full(queue, MAXSIZE), False)
-
-        queue.put(1)
-        queue.put(2, True)
-        queue.put(3, True, None)
-        queue.put(4, False)
-        queue.put(5, False, None)
-        queue.put_nowait(6)
-
-        # the values may be in buffer but not yet in pipe so sleep a bit
-        time.sleep(DELTA)
-
-        self.assertEqual(queue_empty(queue), False)
-        self.assertEqual(queue_full(queue, MAXSIZE), True)
-
-        put = TimingWrapper(queue.put)
-        put_nowait = TimingWrapper(queue.put_nowait)
-
-        self.assertRaises(Queue.Full, put, 7, False)
-        self.assertTimingAlmostEqual(put.elapsed, 0)
-
-        self.assertRaises(Queue.Full, put, 7, False, None)
-        self.assertTimingAlmostEqual(put.elapsed, 0)
-
-        self.assertRaises(Queue.Full, put_nowait, 7)
-        self.assertTimingAlmostEqual(put_nowait.elapsed, 0)
-
-        self.assertRaises(Queue.Full, put, 7, True, TIMEOUT1)
-        self.assertTimingAlmostEqual(put.elapsed, TIMEOUT1)
-
-        self.assertRaises(Queue.Full, put, 7, False, TIMEOUT2)
-        self.assertTimingAlmostEqual(put.elapsed, 0)
-
-        self.assertRaises(Queue.Full, put, 7, True, timeout=TIMEOUT3)
-        self.assertTimingAlmostEqual(put.elapsed, TIMEOUT3)
-
-        child_can_start.set()
-        parent_can_continue.wait()
-
-        self.assertEqual(queue_empty(queue), True)
-        self.assertEqual(queue_full(queue, MAXSIZE), False)
-
-        proc.join()
-
-    @classmethod
-    def _test_get(cls, queue, child_can_start, parent_can_continue):
-        child_can_start.wait()
-        #queue.put(1)
-        queue.put(2)
-        queue.put(3)
-        queue.put(4)
-        queue.put(5)
-        parent_can_continue.set()
-
-    def test_get(self):
-        queue = self.Queue()
-        child_can_start = self.Event()
-        parent_can_continue = self.Event()
-
-        proc = self.Process(
-            target=self._test_get,
-            args=(queue, child_can_start, parent_can_continue)
-            )
-        proc.daemon = True
-        proc.start()
-
-        self.assertEqual(queue_empty(queue), True)
-
-        child_can_start.set()
-        parent_can_continue.wait()
-
-        time.sleep(DELTA)
-        self.assertEqual(queue_empty(queue), False)
-
-        # Hangs unexpectedly, remove for now
-        #self.assertEqual(queue.get(), 1)
-        self.assertEqual(queue.get(True, None), 2)
-        self.assertEqual(queue.get(True), 3)
-        self.assertEqual(queue.get(timeout=1), 4)
-        self.assertEqual(queue.get_nowait(), 5)
-
-        self.assertEqual(queue_empty(queue), True)
-
-        get = TimingWrapper(queue.get)
-        get_nowait = TimingWrapper(queue.get_nowait)
-
-        self.assertRaises(Queue.Empty, get, False)
-        self.assertTimingAlmostEqual(get.elapsed, 0)
-
-        self.assertRaises(Queue.Empty, get, False, None)
-        self.assertTimingAlmostEqual(get.elapsed, 0)
-
-        self.assertRaises(Queue.Empty, get_nowait)
-        self.assertTimingAlmostEqual(get_nowait.elapsed, 0)
-
-        self.assertRaises(Queue.Empty, get, True, TIMEOUT1)
-        self.assertTimingAlmostEqual(get.elapsed, TIMEOUT1)
-
-        self.assertRaises(Queue.Empty, get, False, TIMEOUT2)
-        self.assertTimingAlmostEqual(get.elapsed, 0)
-
-        self.assertRaises(Queue.Empty, get, timeout=TIMEOUT3)
-        self.assertTimingAlmostEqual(get.elapsed, TIMEOUT3)
-
-        proc.join()
-
-    @classmethod
-    def _test_fork(cls, queue):
-        for i in range(10, 20):
-            queue.put(i)
-        # note that at this point the items may only be buffered, so the
-        # process cannot shutdown until the feeder thread has finished
-        # pushing items onto the pipe.
-
-    def test_fork(self):
-        # Old versions of Queue would fail to create a new feeder
-        # thread for a forked process if the original process had its
-        # own feeder thread.  This test checks that this no longer
-        # happens.
-
-        queue = self.Queue()
-
-        # put items on queue so that main process starts a feeder thread
-        for i in range(10):
-            queue.put(i)
-
-        # wait to make sure thread starts before we fork a new process
-        time.sleep(DELTA)
-
-        # fork process
-        p = self.Process(target=self._test_fork, args=(queue,))
-        p.start()
-
-        # check that all expected items are in the queue
-        for i in range(20):
-            self.assertEqual(queue.get(), i)
-        self.assertRaises(Queue.Empty, queue.get, False)
-
-        p.join()
-
-    def test_qsize(self):
-        q = self.Queue()
-        try:
-            self.assertEqual(q.qsize(), 0)
-        except NotImplementedError:
-            return
-        q.put(1)
-        self.assertEqual(q.qsize(), 1)
-        q.put(5)
-        self.assertEqual(q.qsize(), 2)
-        q.get()
-        self.assertEqual(q.qsize(), 1)
-        q.get()
-        self.assertEqual(q.qsize(), 0)
-
-    @classmethod
-    def _test_task_done(cls, q):
-        for obj in iter(q.get, None):
-            time.sleep(DELTA)
-            q.task_done()
-
-    def test_task_done(self):
-        queue = self.JoinableQueue()
-
-        if sys.version_info < (2, 5) and not hasattr(queue, 'task_done'):
-            self.skipTest("requires 'queue.task_done()' method")
-
-        workers = [self.Process(target=self._test_task_done, args=(queue,))
-                   for i in xrange(4)]
-
-        for p in workers:
-            p.start()
-
-        for i in xrange(10):
-            queue.put(i)
-
-        queue.join()
-
-        for p in workers:
-            queue.put(None)
-
-        for p in workers:
-            p.join()
-
-#
-#
-#
-
-class _TestLock(BaseTestCase):
-
-    def test_lock(self):
-        lock = self.Lock()
-        self.assertEqual(lock.acquire(), True)
-        self.assertEqual(lock.acquire(False), False)
-        self.assertEqual(lock.release(), None)
-        self.assertRaises((ValueError, threading.ThreadError), lock.release)
-
-    def test_rlock(self):
-        lock = self.RLock()
-        self.assertEqual(lock.acquire(), True)
-        self.assertEqual(lock.acquire(), True)
-        self.assertEqual(lock.acquire(), True)
-        self.assertEqual(lock.release(), None)
-        self.assertEqual(lock.release(), None)
-        self.assertEqual(lock.release(), None)
-        self.assertRaises((AssertionError, RuntimeError), lock.release)
-
-    def test_lock_context(self):
-        with self.Lock():
-            pass
-
-
-class _TestSemaphore(BaseTestCase):
-
-    def _test_semaphore(self, sem):
-        self.assertReturnsIfImplemented(2, get_value, sem)
-        self.assertEqual(sem.acquire(), True)
-        self.assertReturnsIfImplemented(1, get_value, sem)
-        self.assertEqual(sem.acquire(), True)
-        self.assertReturnsIfImplemented(0, get_value, sem)
-        self.assertEqual(sem.acquire(False), False)
-        self.assertReturnsIfImplemented(0, get_value, sem)
-        self.assertEqual(sem.release(), None)
-        self.assertReturnsIfImplemented(1, get_value, sem)
-        self.assertEqual(sem.release(), None)
-        self.assertReturnsIfImplemented(2, get_value, sem)
-
-    def test_semaphore(self):
-        sem = self.Semaphore(2)
-        self._test_semaphore(sem)
-        self.assertEqual(sem.release(), None)
-        self.assertReturnsIfImplemented(3, get_value, sem)
-        self.assertEqual(sem.release(), None)
-        self.assertReturnsIfImplemented(4, get_value, sem)
-
-    def test_bounded_semaphore(self):
-        sem = self.BoundedSemaphore(2)
-        self._test_semaphore(sem)
-        # Currently fails on OS/X
-        #if HAVE_GETVALUE:
-        #    self.assertRaises(ValueError, sem.release)
-        #    self.assertReturnsIfImplemented(2, get_value, sem)
-
-    def test_timeout(self):
-        if self.TYPE != 'processes':
-            return
-
-        sem = self.Semaphore(0)
-        acquire = TimingWrapper(sem.acquire)
-
-        self.assertEqual(acquire(False), False)
-        self.assertTimingAlmostEqual(acquire.elapsed, 0.0)
-
-        self.assertEqual(acquire(False, None), False)
-        self.assertTimingAlmostEqual(acquire.elapsed, 0.0)
-
-        self.assertEqual(acquire(False, TIMEOUT1), False)
-        self.assertTimingAlmostEqual(acquire.elapsed, 0)
-
-        self.assertEqual(acquire(True, TIMEOUT2), False)
-        self.assertTimingAlmostEqual(acquire.elapsed, TIMEOUT2)
-
-        self.assertEqual(acquire(timeout=TIMEOUT3), False)
-        self.assertTimingAlmostEqual(acquire.elapsed, TIMEOUT3)
-
-
-class _TestCondition(BaseTestCase):
-
-    @classmethod
-    def f(cls, cond, sleeping, woken, timeout=None):
-        cond.acquire()
-        sleeping.release()
-        cond.wait(timeout)
-        woken.release()
-        cond.release()
-
-    def check_invariant(self, cond):
-        # this is only supposed to succeed when there are no sleepers
-        if self.TYPE == 'processes':
-            try:
-                sleepers = (cond._sleeping_count.get_value() -
-                            cond._woken_count.get_value())
-                self.assertEqual(sleepers, 0)
-                self.assertEqual(cond._wait_semaphore.get_value(), 0)
-            except NotImplementedError:
-                pass
-
-    def test_notify(self):
-        cond = self.Condition()
-        sleeping = self.Semaphore(0)
-        woken = self.Semaphore(0)
-
-        p = self.Process(target=self.f, args=(cond, sleeping, woken))
-        p.daemon = True
-        p.start()
-
-        p = threading.Thread(target=self.f, args=(cond, sleeping, woken))
-        p.daemon = True
-        p.start()
-
-        # wait for both children to start sleeping
-        sleeping.acquire()
-        sleeping.acquire()
-
-        # check no process/thread has woken up
-        time.sleep(DELTA)
-        self.assertReturnsIfImplemented(0, get_value, woken)
-
-        # wake up one process/thread
-        cond.acquire()
-        cond.notify()
-        cond.release()
-
-        # check one process/thread has woken up
-        time.sleep(DELTA)
-        self.assertReturnsIfImplemented(1, get_value, woken)
-
-        # wake up another
-        cond.acquire()
-        cond.notify()
-        cond.release()
-
-        # check other has woken up
-        time.sleep(DELTA)
-        self.assertReturnsIfImplemented(2, get_value, woken)
-
-        # check state is not mucked up
-        self.check_invariant(cond)
-        p.join()
-
-    def test_notify_all(self):
-        cond = self.Condition()
-        sleeping = self.Semaphore(0)
-        woken = self.Semaphore(0)
-
-        # start some threads/processes which will timeout
-        for i in range(3):
-            p = self.Process(target=self.f,
-                             args=(cond, sleeping, woken, TIMEOUT1))
-            p.daemon = True
-            p.start()
-
-            t = threading.Thread(target=self.f,
-                                 args=(cond, sleeping, woken, TIMEOUT1))
-            t.daemon = True
-            t.start()
-
-        # wait for them all to sleep
-        for i in xrange(6):
-            sleeping.acquire()
-
-        # check they have all timed out
-        for i in xrange(6):
-            woken.acquire()
-        self.assertReturnsIfImplemented(0, get_value, woken)
-
-        # check state is not mucked up
-        self.check_invariant(cond)
-
-        # start some more threads/processes
-        for i in range(3):
-            p = self.Process(target=self.f, args=(cond, sleeping, woken))
-            p.daemon = True
-            p.start()
-
-            t = threading.Thread(target=self.f, args=(cond, sleeping, woken))
-            t.daemon = True
-            t.start()
-
-        # wait for them to all sleep
-        for i in xrange(6):
-            sleeping.acquire()
-
-        # check no process/thread has woken up
-        time.sleep(DELTA)
-        self.assertReturnsIfImplemented(0, get_value, woken)
-
-        # wake them all up
-        cond.acquire()
-        cond.notify_all()
-        cond.release()
-
-        # check they have all woken
-        time.sleep(DELTA)
-        self.assertReturnsIfImplemented(6, get_value, woken)
-
-        # check state is not mucked up
-        self.check_invariant(cond)
-
-    def test_timeout(self):
-        cond = self.Condition()
-        wait = TimingWrapper(cond.wait)
-        cond.acquire()
-        res = wait(TIMEOUT1)
-        cond.release()
-        self.assertEqual(res, None)
-        self.assertTimingAlmostEqual(wait.elapsed, TIMEOUT1)
-
-
-class _TestEvent(BaseTestCase):
-
-    @classmethod
-    def _test_event(cls, event):
-        time.sleep(TIMEOUT2)
-        event.set()
-
-    def test_event(self):
-        event = self.Event()
-        wait = TimingWrapper(event.wait)
-
-        # Removed temporarily, due to API shear, this does not
-        # work with threading._Event objects. is_set == isSet
-        self.assertEqual(event.is_set(), False)
-
-        # Removed, threading.Event.wait() will return the value of the __flag
-        # instead of None. API Shear with the semaphore backed mp.Event
-        self.assertEqual(wait(0.0), False)
-        self.assertTimingAlmostEqual(wait.elapsed, 0.0)
-        self.assertEqual(wait(TIMEOUT1), False)
-        self.assertTimingAlmostEqual(wait.elapsed, TIMEOUT1)
-
-        event.set()
-
-        # See note above on the API differences
-        self.assertEqual(event.is_set(), True)
-        self.assertEqual(wait(), True)
-        self.assertTimingAlmostEqual(wait.elapsed, 0.0)
-        self.assertEqual(wait(TIMEOUT1), True)
-        self.assertTimingAlmostEqual(wait.elapsed, 0.0)
-        # self.assertEqual(event.is_set(), True)
-
-        event.clear()
-
-        #self.assertEqual(event.is_set(), False)
-
-        self.Process(target=self._test_event, args=(event,)).start()
-        self.assertEqual(wait(), True)
-
-#
-#
-#
-
-class _TestValue(BaseTestCase):
-
-    ALLOWED_TYPES = ('processes',)
-
-    codes_values = [
-        ('i', 4343, 24234),
-        ('d', 3.625, -4.25),
-        ('h', -232, 234),
-        ('c', latin('x'), latin('y'))
-        ]
-
-    def setUp(self):
-        if not HAS_SHAREDCTYPES:
-            self.skipTest("requires multiprocessing.sharedctypes")
-
-    @classmethod
-    def _test(cls, values):
-        for sv, cv in zip(values, cls.codes_values):
-            sv.value = cv[2]
-
-
-    def test_value(self, raw=False):
-        if raw:
-            values = [self.RawValue(code, value)
-                      for code, value, _ in self.codes_values]
-        else:
-            values = [self.Value(code, value)
-                      for code, value, _ in self.codes_values]
-
-        for sv, cv in zip(values, self.codes_values):
-            self.assertEqual(sv.value, cv[1])
-
-        proc = self.Process(target=self._test, args=(values,))
-        proc.start()
-        proc.join()
-
-        for sv, cv in zip(values, self.codes_values):
-            self.assertEqual(sv.value, cv[2])
-
-    def test_rawvalue(self):
-        self.test_value(raw=True)
-
-    def test_getobj_getlock(self):
-        val1 = self.Value('i', 5)
-        lock1 = val1.get_lock()
-        obj1 = val1.get_obj()
-
-        val2 = self.Value('i', 5, lock=None)
-        lock2 = val2.get_lock()
-        obj2 = val2.get_obj()
-
-        lock = self.Lock()
-        val3 = self.Value('i', 5, lock=lock)
-        lock3 = val3.get_lock()
-        obj3 = val3.get_obj()
-        self.assertEqual(lock, lock3)
-
-        arr4 = self.Value('i', 5, lock=False)
-        self.assertFalse(hasattr(arr4, 'get_lock'))
-        self.assertFalse(hasattr(arr4, 'get_obj'))
-
-        self.assertRaises(AttributeError, self.Value, 'i', 5, lock='navalue')
-
-        arr5 = self.RawValue('i', 5)
-        self.assertFalse(hasattr(arr5, 'get_lock'))
-        self.assertFalse(hasattr(arr5, 'get_obj'))
-
-
-class _TestArray(BaseTestCase):
-
-    ALLOWED_TYPES = ('processes',)
-
-    @classmethod
-    def f(cls, seq):
-        for i in range(1, len(seq)):
-            seq[i] += seq[i-1]
-
-    @unittest.skipIf(c_int is None, "requires _ctypes")
-    def test_array(self, raw=False):
-        seq = [680, 626, 934, 821, 150, 233, 548, 982, 714, 831]
-        if raw:
-            arr = self.RawArray('i', seq)
-        else:
-            arr = self.Array('i', seq)
-
-        self.assertEqual(len(arr), len(seq))
-        self.assertEqual(arr[3], seq[3])
-        self.assertEqual(list(arr[2:7]), list(seq[2:7]))
-
-        arr[4:8] = seq[4:8] = array.array('i', [1, 2, 3, 4])
-
-        self.assertEqual(list(arr[:]), seq)
-
-        self.f(seq)
-
-        p = self.Process(target=self.f, args=(arr,))
-        p.start()
-        p.join()
-
-        self.assertEqual(list(arr[:]), seq)
-
-    @unittest.skipIf(c_int is None, "requires _ctypes")
-    def test_array_from_size(self):
-        size = 10
-        # Test for zeroing (see issue #11675).
-        # The repetition below strengthens the test by increasing the chances
-        # of previously allocated non-zero memory being used for the new array
-        # on the 2nd and 3rd loops.
-        for _ in range(3):
-            arr = self.Array('i', size)
-            self.assertEqual(len(arr), size)
-            self.assertEqual(list(arr), [0] * size)
-            arr[:] = range(10)
-            self.assertEqual(list(arr), range(10))
-            del arr
-
-    @unittest.skipIf(c_int is None, "requires _ctypes")
-    def test_rawarray(self):
-        self.test_array(raw=True)
-
-    @unittest.skipIf(c_int is None, "requires _ctypes")
-    def test_array_accepts_long(self):
-        arr = self.Array('i', 10L)
-        self.assertEqual(len(arr), 10)
-        raw_arr = self.RawArray('i', 10L)
-        self.assertEqual(len(raw_arr), 10)
-
-    @unittest.skipIf(c_int is None, "requires _ctypes")
-    def test_getobj_getlock_obj(self):
-        arr1 = self.Array('i', range(10))
-        lock1 = arr1.get_lock()
-        obj1 = arr1.get_obj()
-
-        arr2 = self.Array('i', range(10), lock=None)
-        lock2 = arr2.get_lock()
-        obj2 = arr2.get_obj()
-
-        lock = self.Lock()
-        arr3 = self.Array('i', range(10), lock=lock)
-        lock3 = arr3.get_lock()
-        obj3 = arr3.get_obj()
-        self.assertEqual(lock, lock3)
-
-        arr4 = self.Array('i', range(10), lock=False)
-        self.assertFalse(hasattr(arr4, 'get_lock'))
-        self.assertFalse(hasattr(arr4, 'get_obj'))
-        self.assertRaises(AttributeError,
-                          self.Array, 'i', range(10), lock='notalock')
-
-        arr5 = self.RawArray('i', range(10))
-        self.assertFalse(hasattr(arr5, 'get_lock'))
-        self.assertFalse(hasattr(arr5, 'get_obj'))
-
-#
-#
-#
-
-class _TestContainers(BaseTestCase):
-
-    ALLOWED_TYPES = ('manager',)
-
-    def test_list(self):
-        a = self.list(range(10))
-        self.assertEqual(a[:], range(10))
-
-        b = self.list()
-        self.assertEqual(b[:], [])
-
-        b.extend(range(5))
-        self.assertEqual(b[:], range(5))
-
-        self.assertEqual(b[2], 2)
-        self.assertEqual(b[2:10], [2,3,4])
-
-        b *= 2
-        self.assertEqual(b[:], [0, 1, 2, 3, 4, 0, 1, 2, 3, 4])
-
-        self.assertEqual(b + [5, 6], [0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 6])
-
-        self.assertEqual(a[:], range(10))
-
-        d = [a, b]
-        e = self.list(d)
-        self.assertEqual(
-            e[:],
-            [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]]
-            )
-
-        f = self.list([a])
-        a.append('hello')
-        self.assertEqual(f[:], [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'hello']])
-
-    def test_dict(self):
-        d = self.dict()
-        indices = range(65, 70)
-        for i in indices:
-            d[i] = chr(i)
-        self.assertEqual(d.copy(), dict((i, chr(i)) for i in indices))
-        self.assertEqual(sorted(d.keys()), indices)
-        self.assertEqual(sorted(d.values()), [chr(i) for i in indices])
-        self.assertEqual(sorted(d.items()), [(i, chr(i)) for i in indices])
-
-    def test_namespace(self):
-        n = self.Namespace()
-        n.name = 'Bob'
-        n.job = 'Builder'
-        n._hidden = 'hidden'
-        self.assertEqual((n.name, n.job), ('Bob', 'Builder'))
-        del n.job
-        self.assertEqual(str(n), "Namespace(name='Bob')")
-        self.assertTrue(hasattr(n, 'name'))
-        self.assertTrue(not hasattr(n, 'job'))
-
-#
-#
-#
-
-def sqr(x, wait=0.0):
-    time.sleep(wait)
-    return x*x
-class _TestPool(BaseTestCase):
-
-    def test_apply(self):
-        papply = self.pool.apply
-        self.assertEqual(papply(sqr, (5,)), sqr(5))
-        self.assertEqual(papply(sqr, (), {'x':3}), sqr(x=3))
-
-    def test_map(self):
-        pmap = self.pool.map
-        self.assertEqual(pmap(sqr, range(10)), map(sqr, range(10)))
-        self.assertEqual(pmap(sqr, range(100), chunksize=20),
-                         map(sqr, range(100)))
-
-    def test_map_chunksize(self):
-        try:
-            self.pool.map_async(sqr, [], chunksize=1).get(timeout=TIMEOUT1)
-        except multiprocessing.TimeoutError:
-            self.fail("pool.map_async with chunksize stalled on null list")
-
-    def test_async(self):
-        res = self.pool.apply_async(sqr, (7, TIMEOUT1,))
-        get = TimingWrapper(res.get)
-        self.assertEqual(get(), 49)
-        self.assertTimingAlmostEqual(get.elapsed, TIMEOUT1)
-
-    def test_async_timeout(self):
-        res = self.pool.apply_async(sqr, (6, TIMEOUT2 + 0.2))
-        get = TimingWrapper(res.get)
-        self.assertRaises(multiprocessing.TimeoutError, get, timeout=TIMEOUT2)
-        self.assertTimingAlmostEqual(get.elapsed, TIMEOUT2)
-
-    def test_imap(self):
-        it = self.pool.imap(sqr, range(10))
-        self.assertEqual(list(it), map(sqr, range(10)))
-
-        it = self.pool.imap(sqr, range(10))
-        for i in range(10):
-            self.assertEqual(it.next(), i*i)
-        self.assertRaises(StopIteration, it.next)
-
-        it = self.pool.imap(sqr, range(1000), chunksize=100)
-        for i in range(1000):
-            self.assertEqual(it.next(), i*i)
-        self.assertRaises(StopIteration, it.next)
-
-    def test_imap_unordered(self):
-        it = self.pool.imap_unordered(sqr, range(1000))
-        self.assertEqual(sorted(it), map(sqr, range(1000)))
-
-        it = self.pool.imap_unordered(sqr, range(1000), chunksize=53)
-        self.assertEqual(sorted(it), map(sqr, range(1000)))
-
-    def test_make_pool(self):
-        p = multiprocessing.Pool(3)
-        self.assertEqual(3, len(p._pool))
-        p.close()
-        p.join()
-
-    def test_terminate(self):
-        if self.TYPE == 'manager':
-            # On Unix a forked process increfs each shared object to
-            # which its parent process held a reference.  If the
-            # forked process gets terminated then there is likely to
-            # be a reference leak.  So to prevent
-            # _TestZZZNumberOfObjects from failing we skip this test
-            # when using a manager.
-            return
-
-        result = self.pool.map_async(
-            time.sleep, [0.1 for i in range(10000)], chunksize=1
-            )
-        self.pool.terminate()
-        join = TimingWrapper(self.pool.join)
-        join()
-        self.assertTrue(join.elapsed < 0.2)
-
-class _TestPoolWorkerLifetime(BaseTestCase):
-
-    ALLOWED_TYPES = ('processes', )
-    def test_pool_worker_lifetime(self):
-        p = multiprocessing.Pool(3, maxtasksperchild=10)
-        self.assertEqual(3, len(p._pool))
-        origworkerpids = [w.pid for w in p._pool]
-        # Run many tasks so each worker gets replaced (hopefully)
-        results = []
-        for i in range(100):
-            results.append(p.apply_async(sqr, (i, )))
-        # Fetch the results and verify we got the right answers,
-        # also ensuring all the tasks have completed.
-        for (j, res) in enumerate(results):
-            self.assertEqual(res.get(), sqr(j))
-        # Refill the pool
-        p._repopulate_pool()
-        # Wait until all workers are alive
-        # (countdown * DELTA = 5 seconds max startup process time)
-        countdown = 50
-        while countdown and not all(w.is_alive() for w in p._pool):
-            countdown -= 1
-            time.sleep(DELTA)
-        finalworkerpids = [w.pid for w in p._pool]
-        # All pids should be assigned.  See issue #7805.
-        self.assertNotIn(None, origworkerpids)
-        self.assertNotIn(None, finalworkerpids)
-        # Finally, check that the worker pids have changed
-        self.assertNotEqual(sorted(origworkerpids), sorted(finalworkerpids))
-        p.close()
-        p.join()
-
-#
-# Test that manager has expected number of shared objects left
-#
-
-class _TestZZZNumberOfObjects(BaseTestCase):
-    # Because test cases are sorted alphabetically, this one will get
-    # run after all the other tests for the manager.  It tests that
-    # there have been no "reference leaks" for the manager's shared
-    # objects.  Note the comment in _TestPool.test_terminate().
-    ALLOWED_TYPES = ('manager',)
-
-    def test_number_of_objects(self):
-        EXPECTED_NUMBER = 1                # the pool object is still alive
-        multiprocessing.active_children()  # discard dead process objs
-        gc.collect()                       # do garbage collection
-        refs = self.manager._number_of_objects()
-        debug_info = self.manager._debug_info()
-        if refs != EXPECTED_NUMBER:
-            print self.manager._debug_info()
-            print debug_info
-
-        self.assertEqual(refs, EXPECTED_NUMBER)
-
-#
-# Test of creating a customized manager class
-#
-
-from multiprocessing.managers import BaseManager, BaseProxy, RemoteError
-
-class FooBar(object):
-    def f(self):
-        return 'f()'
-    def g(self):
-        raise ValueError
-    def _h(self):
-        return '_h()'
-
-def baz():
-    for i in xrange(10):
-        yield i*i
-
-class IteratorProxy(BaseProxy):
-    _exposed_ = ('next', '__next__')
-    def __iter__(self):
-        return self
-    def next(self):
-        return self._callmethod('next')
-    def __next__(self):
-        return self._callmethod('__next__')
-
-class MyManager(BaseManager):
-    pass
-
-MyManager.register('Foo', callable=FooBar)
-MyManager.register('Bar', callable=FooBar, exposed=('f', '_h'))
-MyManager.register('baz', callable=baz, proxytype=IteratorProxy)
-
-
-class _TestMyManager(BaseTestCase):
-
-    ALLOWED_TYPES = ('manager',)
-
-    def test_mymanager(self):
-        manager = MyManager()
-        manager.start()
-
-        foo = manager.Foo()
-        bar = manager.Bar()
-        baz = manager.baz()
-
-        foo_methods = [name for name in ('f', 'g', '_h') if hasattr(foo, name)]
-        bar_methods = [name for name in ('f', 'g', '_h') if hasattr(bar, name)]
-
-        self.assertEqual(foo_methods, ['f', 'g'])
-        self.assertEqual(bar_methods, ['f', '_h'])
-
-        self.assertEqual(foo.f(), 'f()')
-        self.assertRaises(ValueError, foo.g)
-        self.assertEqual(foo._callmethod('f'), 'f()')
-        self.assertRaises(RemoteError, foo._callmethod, '_h')
-
-        self.assertEqual(bar.f(), 'f()')
-        self.assertEqual(bar._h(), '_h()')
-        self.assertEqual(bar._callmethod('f'), 'f()')
-        self.assertEqual(bar._callmethod('_h'), '_h()')
-
-        self.assertEqual(list(baz), [i*i for i in range(10)])
-
-        manager.shutdown()
-
-#
-# Test of connecting to a remote server and using xmlrpclib for serialization
-#
-
-_queue = Queue.Queue()
-def get_queue():
-    return _queue
-
-class QueueManager(BaseManager):
-    '''manager class used by server process'''
-QueueManager.register('get_queue', callable=get_queue)
-
-class QueueManager2(BaseManager):
-    '''manager class which specifies the same interface as QueueManager'''
-QueueManager2.register('get_queue')
-
-
-SERIALIZER = 'xmlrpclib'
-
-class _TestRemoteManager(BaseTestCase):
-
-    ALLOWED_TYPES = ('manager',)
-
-    @classmethod
-    def _putter(cls, address, authkey):
-        manager = QueueManager2(
-            address=address, authkey=authkey, serializer=SERIALIZER
-            )
-        manager.connect()
-        queue = manager.get_queue()
-        queue.put(('hello world', None, True, 2.25))
-
-    def test_remote(self):
-        authkey = os.urandom(32)
-
-        manager = QueueManager(
-            address=('localhost', 0), authkey=authkey, serializer=SERIALIZER
-            )
-        manager.start()
-
-        p = self.Process(target=self._putter, args=(manager.address, authkey))
-        p.start()
-
-        manager2 = QueueManager2(
-            address=manager.address, authkey=authkey, serializer=SERIALIZER
-            )
-        manager2.connect()
-        queue = manager2.get_queue()
-
-        # Note that xmlrpclib will deserialize object as a list not a tuple
-        self.assertEqual(queue.get(), ['hello world', None, True, 2.25])
-
-        # Because we are using xmlrpclib for serialization instead of
-        # pickle this will cause a serialization error.
-        self.assertRaises(Exception, queue.put, time.sleep)
-
-        # Make queue finalizer run before the server is stopped
-        del queue
-        manager.shutdown()
-
-class _TestManagerRestart(BaseTestCase):
-
-    @classmethod
-    def _putter(cls, address, authkey):
-        manager = QueueManager(
-            address=address, authkey=authkey, serializer=SERIALIZER)
-        manager.connect()
-        queue = manager.get_queue()
-        queue.put('hello world')
-
-    def test_rapid_restart(self):
-        authkey = os.urandom(32)
-        manager = QueueManager(
-            address=('localhost', 0), authkey=authkey, serializer=SERIALIZER)
-        srvr = manager.get_server()
-        addr = srvr.address
-        # Close the connection.Listener socket which gets opened as a part
-        # of manager.get_server(). It's not needed for the test.
-        srvr.listener.close()
-        manager.start()
-
-        p = self.Process(target=self._putter, args=(manager.address, authkey))
-        p.start()
-        queue = manager.get_queue()
-        self.assertEqual(queue.get(), 'hello world')
-        del queue
-        manager.shutdown()
-        manager = QueueManager(
-            address=addr, authkey=authkey, serializer=SERIALIZER)
-        manager.start()
-        manager.shutdown()
-
-#
-#
-#
-
-SENTINEL = latin('')
-
-class _TestConnection(BaseTestCase):
-
-    ALLOWED_TYPES = ('processes', 'threads')
-
-    @classmethod
-    def _echo(cls, conn):
-        for msg in iter(conn.recv_bytes, SENTINEL):
-            conn.send_bytes(msg)
-        conn.close()
-
-    def test_connection(self):
-        conn, child_conn = self.Pipe()
-
-        p = self.Process(target=self._echo, args=(child_conn,))
-        p.daemon = True
-        p.start()
-
-        seq = [1, 2.25, None]
-        msg = latin('hello world')
-        longmsg = msg * 10
-        arr = array.array('i', range(4))
-
-        if self.TYPE == 'processes':
-            self.assertEqual(type(conn.fileno()), int)
-
-        self.assertEqual(conn.send(seq), None)
-        self.assertEqual(conn.recv(), seq)
-
-        self.assertEqual(conn.send_bytes(msg), None)
-        self.assertEqual(conn.recv_bytes(), msg)
-
-        if self.TYPE == 'processes':
-            buffer = array.array('i', [0]*10)
-            expected = list(arr) + [0] * (10 - len(arr))
-            self.assertEqual(conn.send_bytes(arr), None)
-            self.assertEqual(conn.recv_bytes_into(buffer),
-                             len(arr) * buffer.itemsize)
-            self.assertEqual(list(buffer), expected)
-
-            buffer = array.array('i', [0]*10)
-            expected = [0] * 3 + list(arr) + [0] * (10 - 3 - len(arr))
-            self.assertEqual(conn.send_bytes(arr), None)
-            self.assertEqual(conn.recv_bytes_into(buffer, 3 * buffer.itemsize),
-                             len(arr) * buffer.itemsize)
-            self.assertEqual(list(buffer), expected)
-
-            buffer = bytearray(latin(' ' * 40))
-            self.assertEqual(conn.send_bytes(longmsg), None)
-            try:
-                res = conn.recv_bytes_into(buffer)
-            except multiprocessing.BufferTooShort, e:
-                self.assertEqual(e.args, (longmsg,))
-            else:
-                self.fail('expected BufferTooShort, got %s' % res)
-
-        poll = TimingWrapper(conn.poll)
-
-        self.assertEqual(poll(), False)
-        self.assertTimingAlmostEqual(poll.elapsed, 0)
-
-        self.assertEqual(poll(TIMEOUT1), False)
-        self.assertTimingAlmostEqual(poll.elapsed, TIMEOUT1)
-
-        conn.send(None)
-
-        self.assertEqual(poll(TIMEOUT1), True)
-        self.assertTimingAlmostEqual(poll.elapsed, 0)
-
-        self.assertEqual(conn.recv(), None)
-
-        really_big_msg = latin('X') * (1024 * 1024 * 16)   # 16Mb
-        conn.send_bytes(really_big_msg)
-        self.assertEqual(conn.recv_bytes(), really_big_msg)
-
-        conn.send_bytes(SENTINEL)                          # tell child to quit
-        child_conn.close()
-
-        if self.TYPE == 'processes':
-            self.assertEqual(conn.readable, True)
-            self.assertEqual(conn.writable, True)
-            self.assertRaises(EOFError, conn.recv)
-            self.assertRaises(EOFError, conn.recv_bytes)
-
-        p.join()
-
-    def test_duplex_false(self):
-        reader, writer = self.Pipe(duplex=False)
-        self.assertEqual(writer.send(1), None)
-        self.assertEqual(reader.recv(), 1)
-        if self.TYPE == 'processes':
-            self.assertEqual(reader.readable, True)
-            self.assertEqual(reader.writable, False)
-            self.assertEqual(writer.readable, False)
-            self.assertEqual(writer.writable, True)
-            self.assertRaises(IOError, reader.send, 2)
-            self.assertRaises(IOError, writer.recv)
-            self.assertRaises(IOError, writer.poll)
-
-    def test_spawn_close(self):
-        # We test that a pipe connection can be closed by parent
-        # process immediately after child is spawned.  On Windows this
-        # would have sometimes failed on old versions because
-        # child_conn would be closed before the child got a chance to
-        # duplicate it.
-        conn, child_conn = self.Pipe()
-
-        p = self.Process(target=self._echo, args=(child_conn,))
-        p.start()
-        child_conn.close()    # this might complete before child initializes
-
-        msg = latin('hello')
-        conn.send_bytes(msg)
-        self.assertEqual(conn.recv_bytes(), msg)
-
-        conn.send_bytes(SENTINEL)
-        conn.close()
-        p.join()
-
-    def test_sendbytes(self):
-        if self.TYPE != 'processes':
-            return
-
-        msg = latin('abcdefghijklmnopqrstuvwxyz')
-        a, b = self.Pipe()
-
-        a.send_bytes(msg)
-        self.assertEqual(b.recv_bytes(), msg)
-
-        a.send_bytes(msg, 5)
-        self.assertEqual(b.recv_bytes(), msg[5:])
-
-        a.send_bytes(msg, 7, 8)
-        self.assertEqual(b.recv_bytes(), msg[7:7+8])
-
-        a.send_bytes(msg, 26)
-        self.assertEqual(b.recv_bytes(), latin(''))
-
-        a.send_bytes(msg, 26, 0)
-        self.assertEqual(b.recv_bytes(), latin(''))
-
-        self.assertRaises(ValueError, a.send_bytes, msg, 27)
-
-        self.assertRaises(ValueError, a.send_bytes, msg, 22, 5)
-
-        self.assertRaises(ValueError, a.send_bytes, msg, 26, 1)
-
-        self.assertRaises(ValueError, a.send_bytes, msg, -1)
-
-        self.assertRaises(ValueError, a.send_bytes, msg, 4, -1)
-
-class _TestListenerClient(BaseTestCase):
-
-    ALLOWED_TYPES = ('processes', 'threads')
-
-    @classmethod
-    def _test(cls, address):
-        conn = cls.connection.Client(address)
-        conn.send('hello')
-        conn.close()
-
-    def test_listener_client(self):
-        for family in self.connection.families:
-            l = self.connection.Listener(family=family)
-            p = self.Process(target=self._test, args=(l.address,))
-            p.daemon = True
-            p.start()
-            conn = l.accept()
-            self.assertEqual(conn.recv(), 'hello')
-            p.join()
-            l.close()
-#
-# Test of sending connection and socket objects between processes
-#
-"""
-class _TestPicklingConnections(BaseTestCase):
-
-    ALLOWED_TYPES = ('processes',)
-
-    def _listener(self, conn, families):
-        for fam in families:
-            l = self.connection.Listener(family=fam)
-            conn.send(l.address)
-            new_conn = l.accept()
-            conn.send(new_conn)
-
-        if self.TYPE == 'processes':
-            l = socket.socket()
-            l.bind(('localhost', 0))
-            conn.send(l.getsockname())
-            l.listen(1)
-            new_conn, addr = l.accept()
-            conn.send(new_conn)
-
-        conn.recv()
-
-    def _remote(self, conn):
-        for (address, msg) in iter(conn.recv, None):
-            client = self.connection.Client(address)
-            client.send(msg.upper())
-            client.close()
-
-        if self.TYPE == 'processes':
-            address, msg = conn.recv()
-            client = socket.socket()
-            client.connect(address)
-            client.sendall(msg.upper())
-            client.close()
-
-        conn.close()
-
-    def test_pickling(self):
-        try:
-            multiprocessing.allow_connection_pickling()
-        except ImportError:
-            return
-
-        families = self.connection.families
-
-        lconn, lconn0 = self.Pipe()
-        lp = self.Process(target=self._listener, args=(lconn0, families))
-        lp.start()
-        lconn0.close()
-
-        rconn, rconn0 = self.Pipe()
-        rp = self.Process(target=self._remote, args=(rconn0,))
-        rp.start()
-        rconn0.close()
-
-        for fam in families:
-            msg = ('This connection uses family %s' % fam).encode('ascii')
-            address = lconn.recv()
-            rconn.send((address, msg))
-            new_conn = lconn.recv()
-            self.assertEqual(new_conn.recv(), msg.upper())
-
-        rconn.send(None)
-
-        if self.TYPE == 'processes':
-            msg = latin('This connection uses a normal socket')
-            address = lconn.recv()
-            rconn.send((address, msg))
-            if hasattr(socket, 'fromfd'):
-                new_conn = lconn.recv()
-                self.assertEqual(new_conn.recv(100), msg.upper())
-            else:
-                # XXX On Windows with Py2.6 need to backport fromfd()
-                discard = lconn.recv_bytes()
-
-        lconn.send(None)
-
-        rconn.close()
-        lconn.close()
-
-        lp.join()
-        rp.join()
-"""
-#
-#
-#
-
-class _TestHeap(BaseTestCase):
-
-    ALLOWED_TYPES = ('processes',)
-
-    def test_heap(self):
-        iterations = 5000
-        maxblocks = 50
-        blocks = []
-
-        # create and destroy lots of blocks of different sizes
-        for i in xrange(iterations):
-            size = int(random.lognormvariate(0, 1) * 1000)
-            b = multiprocessing.heap.BufferWrapper(size)
-            blocks.append(b)
-            if len(blocks) > maxblocks:
-                i = random.randrange(maxblocks)
-                del blocks[i]
-
-        # get the heap object
-        heap = multiprocessing.heap.BufferWrapper._heap
-
-        # verify the state of the heap
-        all = []
-        occupied = 0
-        for L in heap._len_to_seq.values():
-            for arena, start, stop in L:
-                all.append((heap._arenas.index(arena), start, stop,
-                            stop-start, 'free'))
-        for arena, start, stop in heap._allocated_blocks:
-            all.append((heap._arenas.index(arena), start, stop,
-                        stop-start, 'occupied'))
-            occupied += (stop-start)
-
-        all.sort()
-
-        for i in range(len(all)-1):
-            (arena, start, stop) = all[i][:3]
-            (narena, nstart, nstop) = all[i+1][:3]
-            self.assertTrue((arena != narena and nstart == 0) or
-                            (stop == nstart))
-
-#
-#
-#
-
-class _Foo(Structure):
-    _fields_ = [
-        ('x', c_int),
-        ('y', c_double)
-        ]
-
-class _TestSharedCTypes(BaseTestCase):
-
-    ALLOWED_TYPES = ('processes',)
-
-    def setUp(self):
-        if not HAS_SHAREDCTYPES:
-            self.skipTest("requires multiprocessing.sharedctypes")
-
-    @classmethod
-    def _double(cls, x, y, foo, arr, string):
-        x.value *= 2
-        y.value *= 2
-        foo.x *= 2
-        foo.y *= 2
-        string.value *= 2
-        for i in range(len(arr)):
-            arr[i] *= 2
-
-    def test_sharedctypes(self, lock=False):
-        x = Value('i', 7, lock=lock)
-        y = Value(c_double, 1.0/3.0, lock=lock)
-        foo = Value(_Foo, 3, 2, lock=lock)
-        arr = self.Array('d', range(10), lock=lock)
-        string = self.Array('c', 20, lock=lock)
-        string.value = latin('hello')
-
-        p = self.Process(target=self._double, args=(x, y, foo, arr, string))
-        p.start()
-        p.join()
-
-        self.assertEqual(x.value, 14)
-        self.assertAlmostEqual(y.value, 2.0/3.0)
-        self.assertEqual(foo.x, 6)
-        self.assertAlmostEqual(foo.y, 4.0)
-        for i in range(10):
-            self.assertAlmostEqual(arr[i], i*2)
-        self.assertEqual(string.value, latin('hellohello'))
-
-    def test_synchronize(self):
-        self.test_sharedctypes(lock=True)
-
-    def test_copy(self):
-        foo = _Foo(2, 5.0)
-        bar = copy(foo)
-        foo.x = 0
-        foo.y = 0
-        self.assertEqual(bar.x, 2)
-        self.assertAlmostEqual(bar.y, 5.0)
-
-#
-#
-#
-
-class _TestFinalize(BaseTestCase):
-
-    ALLOWED_TYPES = ('processes',)
-
-    @classmethod
-    def _test_finalize(cls, conn):
-        class Foo(object):
-            pass
-
-        a = Foo()
-        util.Finalize(a, conn.send, args=('a',))
-        del a           # triggers callback for a
-
-        b = Foo()
-        close_b = util.Finalize(b, conn.send, args=('b',))
-        close_b()       # triggers callback for b
-        close_b()       # does nothing because callback has already been called
-        del b           # does nothing because callback has already been called
-
-        c = Foo()
-        util.Finalize(c, conn.send, args=('c',))
-
-        d10 = Foo()
-        util.Finalize(d10, conn.send, args=('d10',), exitpriority=1)
-
-        d01 = Foo()
-        util.Finalize(d01, conn.send, args=('d01',), exitpriority=0)
-        d02 = Foo()
-        util.Finalize(d02, conn.send, args=('d02',), exitpriority=0)
-        d03 = Foo()
-        util.Finalize(d03, conn.send, args=('d03',), exitpriority=0)
-
-        util.Finalize(None, conn.send, args=('e',), exitpriority=-10)
-
-        util.Finalize(None, conn.send, args=('STOP',), exitpriority=-100)
-
-        # call multiprocessing's cleanup function then exit process without
-        # garbage collecting locals
-        util._exit_function()
-        conn.close()
-        os._exit(0)
-
-    def test_finalize(self):
-        conn, child_conn = self.Pipe()
-
-        p = self.Process(target=self._test_finalize, args=(child_conn,))
-        p.start()
-        p.join()
-
-        result = [obj for obj in iter(conn.recv, 'STOP')]
-        self.assertEqual(result, ['a', 'b', 'd10', 'd03', 'd02', 'd01', 'e'])
-
-#
-# Test that from ... import * works for each module
-#
-
-class _TestImportStar(BaseTestCase):
-
-    ALLOWED_TYPES = ('processes',)
-
-    def test_import(self):
-        modules = [
-            'multiprocessing', 'multiprocessing.connection',
-            'multiprocessing.heap', 'multiprocessing.managers',
-            'multiprocessing.pool', 'multiprocessing.process',
-            'multiprocessing.reduction',
-            'multiprocessing.synchronize', 'multiprocessing.util'
-            ]
-
-        if c_int is not None:
-            # This module requires _ctypes
-            modules.append('multiprocessing.sharedctypes')
-
-        for name in modules:
-            __import__(name)
-            mod = sys.modules[name]
-
-            for attr in getattr(mod, '__all__', ()):
-                self.assertTrue(
-                    hasattr(mod, attr),
-                    '%r does not have attribute %r' % (mod, attr)
-                    )
-
-#
-# Quick test that logging works -- does not test logging output
-#
-
-class _TestLogging(BaseTestCase):
-
-    ALLOWED_TYPES = ('processes',)
-
-    def test_enable_logging(self):
-        logger = multiprocessing.get_logger()
-        logger.setLevel(util.SUBWARNING)
-        self.assertTrue(logger is not None)
-        logger.debug('this will not be printed')
-        logger.info('nor will this')
-        logger.setLevel(LOG_LEVEL)
-
-    @classmethod
-    def _test_level(cls, conn):
-        logger = multiprocessing.get_logger()
-        conn.send(logger.getEffectiveLevel())
-
-    def test_level(self):
-        LEVEL1 = 32
-        LEVEL2 = 37
-
-        logger = multiprocessing.get_logger()
-        root_logger = logging.getLogger()
-        root_level = root_logger.level
-
-        reader, writer = multiprocessing.Pipe(duplex=False)
-
-        logger.setLevel(LEVEL1)
-        self.Process(target=self._test_level, args=(writer,)).start()
-        self.assertEqual(LEVEL1, reader.recv())
-
-        logger.setLevel(logging.NOTSET)
-        root_logger.setLevel(LEVEL2)
-        self.Process(target=self._test_level, args=(writer,)).start()
-        self.assertEqual(LEVEL2, reader.recv())
-
-        root_logger.setLevel(root_level)
-        logger.setLevel(level=LOG_LEVEL)
-
-
-# class _TestLoggingProcessName(BaseTestCase):
-#
-#     def handle(self, record):
-#         assert record.processName == multiprocessing.current_process().name
-#         self.__handled = True
-#
-#     def test_logging(self):
-#         handler = logging.Handler()
-#         handler.handle = self.handle
-#         self.__handled = False
-#         # Bypass getLogger() and side-effects
-#         logger = logging.getLoggerClass()(
-#                 'multiprocessing.test.TestLoggingProcessName')
-#         logger.addHandler(handler)
-#         logger.propagate = False
-#
-#         logger.warn('foo')
-#         assert self.__handled
-
-#
-# Test to verify handle verification, see issue 3321
-#
-
-class TestInvalidHandle(unittest.TestCase):
-
-    @unittest.skipIf(WIN32, "skipped on Windows")
-    def test_invalid_handles(self):
-        conn = _multiprocessing.Connection(44977608)
-        self.assertRaises(IOError, conn.poll)
-        self.assertRaises(IOError, _multiprocessing.Connection, -1)
-
-#
-# Functions used to create test cases from the base ones in this module
-#
-
-def get_attributes(Source, names):
-    d = {}
-    for name in names:
-        obj = getattr(Source, name)
-        if type(obj) == type(get_attributes):
-            obj = staticmethod(obj)
-        d[name] = obj
-    return d
-
-def create_test_cases(Mixin, type):
-    result = {}
-    glob = globals()
-    Type = type.capitalize()
-
-    for name in glob.keys():
-        if name.startswith('_Test'):
-            base = glob[name]
-            if type in base.ALLOWED_TYPES:
-                newname = 'With' + Type + name[1:]
-                class Temp(base, unittest.TestCase, Mixin):
-                    pass
-                result[newname] = Temp
-                Temp.__name__ = newname
-                Temp.__module__ = Mixin.__module__
-    return result
-
-#
-# Create test cases
-#
-
-class ProcessesMixin(object):
-    TYPE = 'processes'
-    Process = multiprocessing.Process
-    locals().update(get_attributes(multiprocessing, (
-        'Queue', 'Lock', 'RLock', 'Semaphore', 'BoundedSemaphore',
-        'Condition', 'Event', 'Value', 'Array', 'RawValue',
-        'RawArray', 'current_process', 'active_children', 'Pipe',
-        'connection', 'JoinableQueue'
-        )))
-
-testcases_processes = create_test_cases(ProcessesMixin, type='processes')
-globals().update(testcases_processes)
-
-
-class ManagerMixin(object):
-    TYPE = 'manager'
-    Process = multiprocessing.Process
-    manager = object.__new__(multiprocessing.managers.SyncManager)
-    locals().update(get_attributes(manager, (
-        'Queue', 'Lock', 'RLock', 'Semaphore', 'BoundedSemaphore',
-       'Condition', 'Event', 'Value', 'Array', 'list', 'dict',
-        'Namespace', 'JoinableQueue'
-        )))
-
-testcases_manager = create_test_cases(ManagerMixin, type='manager')
-globals().update(testcases_manager)
-
-
-class ThreadsMixin(object):
-    TYPE = 'threads'
-    Process = multiprocessing.dummy.Process
-    locals().update(get_attributes(multiprocessing.dummy, (
-        'Queue', 'Lock', 'RLock', 'Semaphore', 'BoundedSemaphore',
-        'Condition', 'Event', 'Value', 'Array', 'current_process',
-        'active_children', 'Pipe', 'connection', 'dict', 'list',
-        'Namespace', 'JoinableQueue'
-        )))
-
-testcases_threads = create_test_cases(ThreadsMixin, type='threads')
-globals().update(testcases_threads)
-
-class OtherTest(unittest.TestCase):
-    # TODO: add more tests for deliver/answer challenge.
-    def test_deliver_challenge_auth_failure(self):
-        class _FakeConnection(object):
-            def recv_bytes(self, size):
-                return b'something bogus'
-            def send_bytes(self, data):
-                pass
-        self.assertRaises(multiprocessing.AuthenticationError,
-                          multiprocessing.connection.deliver_challenge,
-                          _FakeConnection(), b'abc')
-
-    def test_answer_challenge_auth_failure(self):
-        class _FakeConnection(object):
-            def __init__(self):
-                self.count = 0
-            def recv_bytes(self, size):
-                self.count += 1
-                if self.count == 1:
-                    return multiprocessing.connection.CHALLENGE
-                elif self.count == 2:
-                    return b'something bogus'
-                return b''
-            def send_bytes(self, data):
-                pass
-        self.assertRaises(multiprocessing.AuthenticationError,
-                          multiprocessing.connection.answer_challenge,
-                          _FakeConnection(), b'abc')
-
-#
-# Test Manager.start()/Pool.__init__() initializer feature - see issue 5585
-#
-
-def initializer(ns):
-    ns.test += 1
-
-class TestInitializers(unittest.TestCase):
-    def setUp(self):
-        self.mgr = multiprocessing.Manager()
-        self.ns = self.mgr.Namespace()
-        self.ns.test = 0
-
-    def tearDown(self):
-        self.mgr.shutdown()
-
-    def test_manager_initializer(self):
-        m = multiprocessing.managers.SyncManager()
-        self.assertRaises(TypeError, m.start, 1)
-        m.start(initializer, (self.ns,))
-        self.assertEqual(self.ns.test, 1)
-        m.shutdown()
-
-    def test_pool_initializer(self):
-        self.assertRaises(TypeError, multiprocessing.Pool, initializer=1)
-        p = multiprocessing.Pool(1, initializer, (self.ns,))
-        p.close()
-        p.join()
-        self.assertEqual(self.ns.test, 1)
-
-#
-# Issue 5155, 5313, 5331: Test process in processes
-# Verifies os.close(sys.stdin.fileno) vs. sys.stdin.close() behavior
-#
-
-def _ThisSubProcess(q):
-    try:
-        item = q.get(block=False)
-    except Queue.Empty:
-        pass
-
-def _TestProcess(q):
-    queue = multiprocessing.Queue()
-    subProc = multiprocessing.Process(target=_ThisSubProcess, args=(queue,))
-    subProc.start()
-    subProc.join()
-
-def _afunc(x):
-    return x*x
-
-def pool_in_process():
-    pool = multiprocessing.Pool(processes=4)
-    x = pool.map(_afunc, [1, 2, 3, 4, 5, 6, 7])
-
-class _file_like(object):
-    def __init__(self, delegate):
-        self._delegate = delegate
-        self._pid = None
-
-    @property
-    def cache(self):
-        pid = os.getpid()
-        # There are no race conditions since fork keeps only the running thread
-        if pid != self._pid:
-            self._pid = pid
-            self._cache = []
-        return self._cache
-
-    def write(self, data):
-        self.cache.append(data)
-
-    def flush(self):
-        self._delegate.write(''.join(self.cache))
-        self._cache = []
-
-class TestStdinBadfiledescriptor(unittest.TestCase):
-
-    def test_queue_in_process(self):
-        queue = multiprocessing.Queue()
-        proc = multiprocessing.Process(target=_TestProcess, args=(queue,))
-        proc.start()
-        proc.join()
-
-    def test_pool_in_process(self):
-        p = multiprocessing.Process(target=pool_in_process)
-        p.start()
-        p.join()
-
-    def test_flushing(self):
-        sio = StringIO()
-        flike = _file_like(sio)
-        flike.write('foo')
-        proc = multiprocessing.Process(target=lambda: flike.flush())
-        flike.flush()
-        assert sio.getvalue() == 'foo'
-
-testcases_other = [OtherTest, TestInvalidHandle, TestInitializers,
-                   TestStdinBadfiledescriptor]
-
-#
-#
-#
-
-def test_main(run=None):
-    if sys.platform.startswith("linux"):
-        try:
-            lock = multiprocessing.RLock()
-        except OSError:
-            raise unittest.SkipTest("OSError raises on RLock creation, see issue 3111!")
-
-    if run is None:
-        from test.test_support import run_unittest as run
-
-    util.get_temp_dir()     # creates temp directory for use by all processes
-
-    multiprocessing.get_logger().setLevel(LOG_LEVEL)
-
-    ProcessesMixin.pool = multiprocessing.Pool(4)
-    ThreadsMixin.pool = multiprocessing.dummy.Pool(4)
-    ManagerMixin.manager.__init__()
-    ManagerMixin.manager.start()
-    ManagerMixin.pool = ManagerMixin.manager.Pool(4)
-
-    testcases = (
-        sorted(testcases_processes.values(), key=lambda tc:tc.__name__) +
-        sorted(testcases_threads.values(), key=lambda tc:tc.__name__) +
-        sorted(testcases_manager.values(), key=lambda tc:tc.__name__) +
-        testcases_other
-        )
-
-    loadTestsFromTestCase = unittest.defaultTestLoader.loadTestsFromTestCase
-    suite = unittest.TestSuite(loadTestsFromTestCase(tc) for tc in testcases)
-    # (ncoghlan): Whether or not sys.exc_clear is executed by the threading
-    # module during these tests is at least platform dependent and possibly
-    # non-deterministic on any given platform. So we don't mind if the listed
-    # warnings aren't actually raised.
-    with test_support.check_py3k_warnings(
-            (".+__(get|set)slice__ has been removed", DeprecationWarning),
-            (r"sys.exc_clear\(\) not supported", DeprecationWarning),
-            quiet=True):
-        run(suite)
-
-    ThreadsMixin.pool.terminate()
-    ProcessesMixin.pool.terminate()
-    ManagerMixin.pool.terminate()
-    ManagerMixin.manager.shutdown()
-
-    del ProcessesMixin.pool, ThreadsMixin.pool, ManagerMixin.pool
-
-def main():
-    test_main(unittest.TextTestRunner(verbosity=2).run)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mutants.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mutants.py
deleted file mode 100644
index 5712491..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mutants.py
+++ /dev/null
@@ -1,292 +0,0 @@
-from test.test_support import verbose, TESTFN
-import random
-import os
-
-# From SF bug #422121:  Insecurities in dict comparison.
-
-# Safety of code doing comparisons has been an historical Python weak spot.
-# The problem is that comparison of structures written in C *naturally*
-# wants to hold on to things like the size of the container, or "the
-# biggest" containee so far, across a traversal of the container; but
-# code to do containee comparisons can call back into Python and mutate
-# the container in arbitrary ways while the C loop is in midstream.  If the
-# C code isn't extremely paranoid about digging things out of memory on
-# each trip, and artificially boosting refcounts for the duration, anything
-# from infinite loops to OS crashes can result (yes, I use Windows <wink>).
-#
-# The other problem is that code designed to provoke a weakness is usually
-# white-box code, and so catches only the particular vulnerabilities the
-# author knew to protect against.  For example, Python's list.sort() code
-# went thru many iterations as one "new" vulnerability after another was
-# discovered.
-#
-# So the dict comparison test here uses a black-box approach instead,
-# generating dicts of various sizes at random, and performing random
-# mutations on them at random times.  This proved very effective,
-# triggering at least six distinct failure modes the first 20 times I
-# ran it.  Indeed, at the start, the driver never got beyond 6 iterations
-# before the test died.
-
-# The dicts are global to make it easy to mutate tham from within functions.
-dict1 = {}
-dict2 = {}
-
-# The current set of keys in dict1 and dict2.  These are materialized as
-# lists to make it easy to pick a dict key at random.
-dict1keys = []
-dict2keys = []
-
-# Global flag telling maybe_mutate() whether to *consider* mutating.
-mutate = 0
-
-# If global mutate is true, consider mutating a dict.  May or may not
-# mutate a dict even if mutate is true.  If it does decide to mutate a
-# dict, it picks one of {dict1, dict2} at random, and deletes a random
-# entry from it; or, more rarely, adds a random element.
-
-def maybe_mutate():
-    global mutate
-    if not mutate:
-        return
-    if random.random() < 0.5:
-        return
-
-    if random.random() < 0.5:
-        target, keys = dict1, dict1keys
-    else:
-        target, keys = dict2, dict2keys
-
-    if random.random() < 0.2:
-        # Insert a new key.
-        mutate = 0   # disable mutation until key inserted
-        while 1:
-            newkey = Horrid(random.randrange(100))
-            if newkey not in target:
-                break
-        target[newkey] = Horrid(random.randrange(100))
-        keys.append(newkey)
-        mutate = 1
-
-    elif keys:
-        # Delete a key at random.
-        mutate = 0   # disable mutation until key deleted
-        i = random.randrange(len(keys))
-        key = keys[i]
-        del target[key]
-        del keys[i]
-        mutate = 1
-
-# A horrid class that triggers random mutations of dict1 and dict2 when
-# instances are compared.
-
-class Horrid:
-    def __init__(self, i):
-        # Comparison outcomes are determined by the value of i.
-        self.i = i
-
-        # An artificial hashcode is selected at random so that we don't
-        # have any systematic relationship between comparison outcomes
-        # (based on self.i and other.i) and relative position within the
-        # hash vector (based on hashcode).
-        self.hashcode = random.randrange(1000000000)
-
-    def __hash__(self):
-        return 42
-        return self.hashcode
-
-    def __cmp__(self, other):
-        maybe_mutate()   # The point of the test.
-        return cmp(self.i, other.i)
-
-    def __eq__(self, other):
-        maybe_mutate()   # The point of the test.
-        return self.i == other.i
-
-    def __repr__(self):
-        return "Horrid(%d)" % self.i
-
-# Fill dict d with numentries (Horrid(i), Horrid(j)) key-value pairs,
-# where i and j are selected at random from the candidates list.
-# Return d.keys() after filling.
-
-def fill_dict(d, candidates, numentries):
-    d.clear()
-    for i in xrange(numentries):
-        d[Horrid(random.choice(candidates))] = \
-            Horrid(random.choice(candidates))
-    return d.keys()
-
-# Test one pair of randomly generated dicts, each with n entries.
-# Note that dict comparison is trivial if they don't have the same number
-# of entires (then the "shorter" dict is instantly considered to be the
-# smaller one, without even looking at the entries).
-
-def test_one(n):
-    global mutate, dict1, dict2, dict1keys, dict2keys
-
-    # Fill the dicts without mutating them.
-    mutate = 0
-    dict1keys = fill_dict(dict1, range(n), n)
-    dict2keys = fill_dict(dict2, range(n), n)
-
-    # Enable mutation, then compare the dicts so long as they have the
-    # same size.
-    mutate = 1
-    if verbose:
-        print "trying w/ lengths", len(dict1), len(dict2),
-    while dict1 and len(dict1) == len(dict2):
-        if verbose:
-            print ".",
-        if random.random() < 0.5:
-            c = cmp(dict1, dict2)
-        else:
-            c = dict1 == dict2
-    if verbose:
-        print
-
-# Run test_one n times.  At the start (before the bugs were fixed), 20
-# consecutive runs of this test each blew up on or before the sixth time
-# test_one was run.  So n doesn't have to be large to get an interesting
-# test.
-# OTOH, calling with large n is also interesting, to ensure that the fixed
-# code doesn't hold on to refcounts *too* long (in which case memory would
-# leak).
-
-def test(n):
-    for i in xrange(n):
-        test_one(random.randrange(1, 100))
-
-# See last comment block for clues about good values for n.
-test(100)
-
-##########################################################################
-# Another segfault bug, distilled by Michael Hudson from a c.l.py post.
-
-class Child:
-    def __init__(self, parent):
-        self.__dict__['parent'] = parent
-    def __getattr__(self, attr):
-        self.parent.a = 1
-        self.parent.b = 1
-        self.parent.c = 1
-        self.parent.d = 1
-        self.parent.e = 1
-        self.parent.f = 1
-        self.parent.g = 1
-        self.parent.h = 1
-        self.parent.i = 1
-        return getattr(self.parent, attr)
-
-class Parent:
-    def __init__(self):
-        self.a = Child(self)
-
-# Hard to say what this will print!  May vary from time to time.  But
-# we're specifically trying to test the tp_print slot here, and this is
-# the clearest way to do it.  We print the result to a temp file so that
-# the expected-output file doesn't need to change.
-
-f = open(TESTFN, "w")
-print >> f, Parent().__dict__
-f.close()
-os.unlink(TESTFN)
-
-##########################################################################
-# And another core-dumper from Michael Hudson.
-
-dict = {}
-
-# Force dict to malloc its table.
-for i in range(1, 10):
-    dict[i] = i
-
-f = open(TESTFN, "w")
-
-class Machiavelli:
-    def __repr__(self):
-        dict.clear()
-
-        # Michael sez:  "doesn't crash without this.  don't know why."
-        # Tim sez:  "luck of the draw; crashes with or without for me."
-        print >> f
-
-        return repr("machiavelli")
-
-    def __hash__(self):
-        return 0
-
-dict[Machiavelli()] = Machiavelli()
-
-print >> f, str(dict)
-f.close()
-os.unlink(TESTFN)
-del f, dict
-
-
-##########################################################################
-# And another core-dumper from Michael Hudson.
-
-dict = {}
-
-# let's force dict to malloc its table
-for i in range(1, 10):
-    dict[i] = i
-
-class Machiavelli2:
-    def __eq__(self, other):
-        dict.clear()
-        return 1
-
-    def __hash__(self):
-        return 0
-
-dict[Machiavelli2()] = Machiavelli2()
-
-try:
-    dict[Machiavelli2()]
-except KeyError:
-    pass
-
-del dict
-
-##########################################################################
-# And another core-dumper from Michael Hudson.
-
-dict = {}
-
-# let's force dict to malloc its table
-for i in range(1, 10):
-    dict[i] = i
-
-class Machiavelli3:
-    def __init__(self, id):
-        self.id = id
-
-    def __eq__(self, other):
-        if self.id == other.id:
-            dict.clear()
-            return 1
-        else:
-            return 0
-
-    def __repr__(self):
-        return "%s(%s)"%(self.__class__.__name__, self.id)
-
-    def __hash__(self):
-        return 0
-
-dict[Machiavelli3(1)] = Machiavelli3(0)
-dict[Machiavelli3(2)] = Machiavelli3(0)
-
-f = open(TESTFN, "w")
-try:
-    try:
-        print >> f, dict[Machiavelli3(2)]
-    except KeyError:
-        pass
-finally:
-    f.close()
-    os.unlink(TESTFN)
-
-del dict
-del dict1, dict2, dict1keys, dict2keys
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mutex.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mutex.py
deleted file mode 100644
index fee5c68..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_mutex.py
+++ /dev/null
@@ -1,35 +0,0 @@
-import unittest
-import test.test_support
-
-mutex = test.test_support.import_module("mutex", deprecated=True)
-
-class MutexTest(unittest.TestCase):
-
-    def test_lock_and_unlock(self):
-
-        def called_by_mutex(some_data):
-            self.assertEqual(some_data, "spam")
-            self.assertTrue(m.test(), "mutex not held")
-            # Nested locking
-            m.lock(called_by_mutex2, "eggs")
-
-        def called_by_mutex2(some_data):
-            self.assertEquals(some_data, "eggs")
-            self.assertTrue(m.test(), "mutex not held")
-            self.assertTrue(ready_for_2,
-                         "called_by_mutex2 called too soon")
-
-        m = mutex.mutex()
-        read_for_2 = False
-        m.lock(called_by_mutex, "spam")
-        ready_for_2 = True
-        # unlock both locks
-        m.unlock()
-        m.unlock()
-        self.assertFalse(m.test(), "mutex still held")
-
-def test_main():
-    test.test_support.run_unittest(MutexTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_netrc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_netrc.py
deleted file mode 100644
index 0440d24..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_netrc.py
+++ /dev/null
@@ -1,110 +0,0 @@
-import netrc, os, unittest, sys, textwrap
-from test import test_support
-
-temp_filename = test_support.TESTFN
-
-class NetrcTestCase(unittest.TestCase):
-
-    def tearDown(self):
-        os.unlink(temp_filename)
-
-    def make_nrc(self, test_data):
-        test_data = textwrap.dedent(test_data)
-        mode = 'w'
-        if sys.platform != 'cygwin':
-            mode += 't'
-        with open(temp_filename, mode) as fp:
-            fp.write(test_data)
-        return netrc.netrc(temp_filename)
-
-    def test_default(self):
-        nrc = self.make_nrc("""\
-            machine host1.domain.com login log1 password pass1 account acct1
-            default login log2 password pass2
-            """)
-        self.assertEqual(nrc.hosts['host1.domain.com'],
-                         ('log1', 'acct1', 'pass1'))
-        self.assertEqual(nrc.hosts['default'], ('log2', None, 'pass2'))
-
-    def test_macros(self):
-        nrc = self.make_nrc("""\
-            macdef macro1
-            line1
-            line2
-
-            macdef macro2
-            line3
-            line4
-            """)
-        self.assertEqual(nrc.macros, {'macro1': ['line1\n', 'line2\n'],
-                                      'macro2': ['line3\n', 'line4\n']})
-
-    def _test_passwords(self, nrc, passwd):
-        nrc = self.make_nrc(nrc)
-        self.assertEqual(nrc.hosts['host.domain.com'], ('log', 'acct', passwd))
-
-    def test_password_with_leading_hash(self):
-        self._test_passwords("""\
-            machine host.domain.com login log password #pass account acct
-            """, '#pass')
-
-    def test_password_with_trailing_hash(self):
-        self._test_passwords("""\
-            machine host.domain.com login log password pass# account acct
-            """, 'pass#')
-
-    def test_password_with_internal_hash(self):
-        self._test_passwords("""\
-            machine host.domain.com login log password pa#ss account acct
-            """, 'pa#ss')
-
-    def _test_comment(self, nrc, passwd='pass'):
-        nrc = self.make_nrc(nrc)
-        self.assertEqual(nrc.hosts['foo.domain.com'], ('bar', None, passwd))
-        self.assertEqual(nrc.hosts['bar.domain.com'], ('foo', None, 'pass'))
-
-    def test_comment_before_machine_line(self):
-        self._test_comment("""\
-            # comment
-            machine foo.domain.com login bar password pass
-            machine bar.domain.com login foo password pass
-            """)
-
-    def test_comment_before_machine_line_no_space(self):
-        self._test_comment("""\
-            #comment
-            machine foo.domain.com login bar password pass
-            machine bar.domain.com login foo password pass
-            """)
-
-    def test_comment_before_machine_line_hash_only(self):
-        self._test_comment("""\
-            #
-            machine foo.domain.com login bar password pass
-            machine bar.domain.com login foo password pass
-            """)
-
-    def test_comment_at_end_of_machine_line(self):
-        self._test_comment("""\
-            machine foo.domain.com login bar password pass # comment
-            machine bar.domain.com login foo password pass
-            """)
-
-    def test_comment_at_end_of_machine_line_no_space(self):
-        self._test_comment("""\
-            machine foo.domain.com login bar password pass #comment
-            machine bar.domain.com login foo password pass
-            """)
-
-    def test_comment_at_end_of_machine_line_pass_has_hash(self):
-        self._test_comment("""\
-            machine foo.domain.com login bar password #pass #comment
-            machine bar.domain.com login foo password pass
-            """, '#pass')
-
-
-def test_main():
-    test_support.run_unittest(NetrcTestCase)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_new.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_new.py
deleted file mode 100644
index 6903e59..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_new.py
+++ /dev/null
@@ -1,163 +0,0 @@
-import unittest
-from test import test_support
-import sys
-new = test_support.import_module('new', deprecated=True)
-
-class NewTest(unittest.TestCase):
-    def test_spam(self):
-        class Eggs:
-            def get_yolks(self):
-                return self.yolks
-
-        m = new.module('Spam')
-        m.Eggs = Eggs
-        sys.modules['Spam'] = m
-        import Spam
-
-        def get_more_yolks(self):
-            return self.yolks + 3
-
-        # new.classobj()
-        C = new.classobj('Spam', (Spam.Eggs,), {'get_more_yolks': get_more_yolks})
-
-        # new.instance()
-        c = new.instance(C, {'yolks': 3})
-
-        o = new.instance(C)
-        self.assertEqual(o.__dict__, {}, "new __dict__ should be empty")
-        del o
-        o = new.instance(C, None)
-        self.assertEqual(o.__dict__, {}, "new __dict__ should be empty")
-        del o
-
-        def break_yolks(self):
-            self.yolks = self.yolks - 2
-
-        # new.instancemethod()
-        im = new.instancemethod(break_yolks, c, C)
-
-        self.assertEqual(c.get_yolks(), 3,
-            'Broken call of hand-crafted class instance')
-        self.assertEqual(c.get_more_yolks(), 6,
-            'Broken call of hand-crafted class instance')
-
-        im()
-        self.assertEqual(c.get_yolks(), 1,
-            'Broken call of hand-crafted instance method')
-        self.assertEqual(c.get_more_yolks(), 4,
-            'Broken call of hand-crafted instance method')
-
-        im = new.instancemethod(break_yolks, c)
-        im()
-        self.assertEqual(c.get_yolks(), -1)
-
-        # Verify that dangerous instance method creation is forbidden
-        self.assertRaises(TypeError, new.instancemethod, break_yolks, None)
-
-        # Verify that instancemethod() doesn't allow keyword args
-        self.assertRaises(TypeError, new.instancemethod, break_yolks, c, kw=1)
-
-    def test_scope(self):
-        # It's unclear what the semantics should be for a code object compiled
-        # at module scope, but bound and run in a function.  In CPython, `c' is
-        # global (by accident?) while in Jython, `c' is local.  The intent of
-        # the test clearly is to make `c' global, so let's be explicit about it.
-        codestr = '''
-        global c
-        a = 1
-        b = 2
-        c = a + b
-        '''
-
-        codestr = "\n".join(l.strip() for l in codestr.splitlines())
-
-        ccode = compile(codestr, '<string>', 'exec')
-        # Jython doesn't have a __builtins__, so use a portable alternative
-        import __builtin__
-        g = {'c': 0, '__builtins__': __builtin__}
-
-        # this test could be more robust
-        func = new.function(ccode, g)
-        func()
-        self.assertEqual(g['c'], 3, 'Could not create a proper function object')
-
-    def test_function(self):
-        # test the various extended flavors of function.new
-        def f(x):
-            def g(y):
-                return x + y
-            return g
-        g = f(4)
-        new.function(f.func_code, {}, "blah")
-        g2 = new.function(g.func_code, {}, "blah", (2,), g.func_closure)
-        self.assertEqual(g2(), 6)
-        g3 = new.function(g.func_code, {}, "blah", None, g.func_closure)
-        self.assertEqual(g3(5), 9)
-        def test_closure(func, closure, exc):
-            self.assertRaises(exc, new.function, func.func_code, {}, "", None, closure)
-
-        test_closure(g, None, TypeError) # invalid closure
-        test_closure(g, (1,), TypeError) # non-cell in closure
-        test_closure(g, (1, 1), ValueError) # closure is wrong size
-        test_closure(f, g.func_closure, ValueError) # no closure needed
-
-    # Note: Jython will never have new.code()
-    if hasattr(new, 'code'):
-        def test_code(self):
-            # bogus test of new.code()
-            def f(a): pass
-
-            c = f.func_code
-            argcount = c.co_argcount
-            nlocals = c.co_nlocals
-            stacksize = c.co_stacksize
-            flags = c.co_flags
-            codestring = c.co_code
-            constants = c.co_consts
-            names = c.co_names
-            varnames = c.co_varnames
-            filename = c.co_filename
-            name = c.co_name
-            firstlineno = c.co_firstlineno
-            lnotab = c.co_lnotab
-            freevars = c.co_freevars
-            cellvars = c.co_cellvars
-
-            d = new.code(argcount, nlocals, stacksize, flags, codestring,
-                         constants, names, varnames, filename, name,
-                         firstlineno, lnotab, freevars, cellvars)
-
-            # test backwards-compatibility version with no freevars or cellvars
-            d = new.code(argcount, nlocals, stacksize, flags, codestring,
-                         constants, names, varnames, filename, name,
-                         firstlineno, lnotab)
-
-            # negative co_argcount used to trigger a SystemError
-            self.assertRaises(ValueError, new.code,
-                -argcount, nlocals, stacksize, flags, codestring,
-                constants, names, varnames, filename, name, firstlineno, lnotab)
-
-            # negative co_nlocals used to trigger a SystemError
-            self.assertRaises(ValueError, new.code,
-                argcount, -nlocals, stacksize, flags, codestring,
-                constants, names, varnames, filename, name, firstlineno, lnotab)
-
-            # non-string co_name used to trigger a Py_FatalError
-            self.assertRaises(TypeError, new.code,
-                argcount, nlocals, stacksize, flags, codestring,
-                constants, (5,), varnames, filename, name, firstlineno, lnotab)
-
-            # new.code used to be a way to mutate a tuple...
-            class S(str):
-                pass
-            t = (S("ab"),)
-            d = new.code(argcount, nlocals, stacksize, flags, codestring,
-                         constants, t, varnames, filename, name,
-                         firstlineno, lnotab)
-            self.assertTrue(type(t[0]) is S, "eek, tuple changed under us!")
-
-def test_main():
-    test_support.run_unittest(NewTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_nis.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_nis.py
deleted file mode 100644
index 7b5b1a2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_nis.py
+++ /dev/null
@@ -1,44 +0,0 @@
-from test import test_support
-import unittest
-
-nis = test_support.import_module('nis')
-
-class NisTests(unittest.TestCase):
-    def test_maps(self):
-        try:
-            maps = nis.maps()
-        except nis.error, msg:
-            # NIS is probably not active, so this test isn't useful
-            if test_support.verbose:
-                print "Test Skipped:", msg
-            # Can't raise SkipTest as regrtest only recognizes the exception
-            #   import time.
-            return
-        try:
-            # On some systems, this map is only accessible to the
-            # super user
-            maps.remove("passwd.adjunct.byname")
-        except ValueError:
-            pass
-
-        done = 0
-        for nismap in maps:
-            mapping = nis.cat(nismap)
-            for k, v in mapping.items():
-                if not k:
-                    continue
-                if nis.match(k, nismap) != v:
-                    self.fail("NIS match failed for key `%s' in map `%s'" % (k, nismap))
-                else:
-                    # just test the one key, otherwise this test could take a
-                    # very long time
-                    done = 1
-                    break
-            if done:
-                break
-
-def test_main():
-    test_support.run_unittest(NisTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_normalization.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_normalization.py
deleted file mode 100644
index 747b557..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_normalization.py
+++ /dev/null
@@ -1,102 +0,0 @@
-from test.test_support import run_unittest, open_urlresource
-import unittest
-
-from httplib import HTTPException
-import sys
-import os
-from unicodedata import normalize, unidata_version
-
-TESTDATAFILE = "NormalizationTest.txt"
-TESTDATAURL = "http://www.unicode.org/Public/" + unidata_version + "/ucd/" + TESTDATAFILE
-
-def check_version(testfile):
-    hdr = testfile.readline()
-    return unidata_version in hdr
-
-class RangeError(Exception):
-    pass
-
-def NFC(str):
-    return normalize("NFC", str)
-
-def NFKC(str):
-    return normalize("NFKC", str)
-
-def NFD(str):
-    return normalize("NFD", str)
-
-def NFKD(str):
-    return normalize("NFKD", str)
-
-def unistr(data):
-    data = [int(x, 16) for x in data.split(" ")]
-    for x in data:
-        if x > sys.maxunicode:
-            raise RangeError
-    return u"".join([unichr(x) for x in data])
-
-class NormalizationTest(unittest.TestCase):
-    def test_main(self):
-        part = None
-        part1_data = {}
-        # Hit the exception early
-        try:
-            testdata = open_urlresource(TESTDATAURL, check_version)
-        except (IOError, HTTPException):
-            self.skipTest("Could not retrieve " + TESTDATAURL)
-        for line in testdata:
-            if '#' in line:
-                line = line.split('#')[0]
-            line = line.strip()
-            if not line:
-                continue
-            if line.startswith("@Part"):
-                part = line.split()[0]
-                continue
-            try:
-                c1,c2,c3,c4,c5 = [unistr(x) for x in line.split(';')[:-1]]
-            except RangeError:
-                # Skip unsupported characters;
-                # try atleast adding c1 if we are in part1
-                if part == "@Part1":
-                    try:
-                        c1 = unistr(line.split(';')[0])
-                    except RangeError:
-                        pass
-                    else:
-                        part1_data[c1] = 1
-                continue
-
-            # Perform tests
-            self.assertTrue(c2 ==  NFC(c1) ==  NFC(c2) ==  NFC(c3), line)
-            self.assertTrue(c4 ==  NFC(c4) ==  NFC(c5), line)
-            self.assertTrue(c3 ==  NFD(c1) ==  NFD(c2) ==  NFD(c3), line)
-            self.assertTrue(c5 ==  NFD(c4) ==  NFD(c5), line)
-            self.assertTrue(c4 == NFKC(c1) == NFKC(c2) == \
-                            NFKC(c3) == NFKC(c4) == NFKC(c5),
-                            line)
-            self.assertTrue(c5 == NFKD(c1) == NFKD(c2) == \
-                            NFKD(c3) == NFKD(c4) == NFKD(c5),
-                            line)
-
-            # Record part 1 data
-            if part == "@Part1":
-                part1_data[c1] = 1
-
-        # Perform tests for all other data
-        for c in range(sys.maxunicode+1):
-            X = unichr(c)
-            if X in part1_data:
-                continue
-            self.assertTrue(X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X), c)
-
-    def test_bug_834676(self):
-        # Check for bug 834676
-        normalize('NFC', u'\ud55c\uae00')
-
-
-def test_main():
-    run_unittest(NormalizationTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ntpath.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ntpath.py
deleted file mode 100644
index fdb8773..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ntpath.py
+++ /dev/null
@@ -1,203 +0,0 @@
-import ntpath
-import os
-from test.test_support import TestFailed
-from test import test_support, test_genericpath
-import unittest
-
-
-def tester(fn, wantResult):
-    fn = fn.replace("\\", "\\\\")
-    gotResult = eval(fn)
-    if wantResult != gotResult:
-        raise TestFailed, "%s should return: %s but returned: %s" \
-              %(str(fn), str(wantResult), str(gotResult))
-
-
-class TestNtpath(unittest.TestCase):
-    def test_splitext(self):
-        tester('ntpath.splitext("foo.ext")', ('foo', '.ext'))
-        tester('ntpath.splitext("/foo/foo.ext")', ('/foo/foo', '.ext'))
-        tester('ntpath.splitext(".ext")', ('.ext', ''))
-        tester('ntpath.splitext("\\foo.ext\\foo")', ('\\foo.ext\\foo', ''))
-        tester('ntpath.splitext("foo.ext\\")', ('foo.ext\\', ''))
-        tester('ntpath.splitext("")', ('', ''))
-        tester('ntpath.splitext("foo.bar.ext")', ('foo.bar', '.ext'))
-        tester('ntpath.splitext("xx/foo.bar.ext")', ('xx/foo.bar', '.ext'))
-        tester('ntpath.splitext("xx\\foo.bar.ext")', ('xx\\foo.bar', '.ext'))
-        tester('ntpath.splitext("c:a/b\\c.d")', ('c:a/b\\c', '.d'))
-
-    def test_splitdrive(self):
-        tester('ntpath.splitdrive("c:\\foo\\bar")',
-               ('c:', '\\foo\\bar'))
-        tester('ntpath.splitdrive("c:/foo/bar")',
-               ('c:', '/foo/bar'))
-
-    def test_splitunc(self):
-        tester('ntpath.splitunc("\\\\conky\\mountpoint\\foo\\bar")',
-               ('\\\\conky\\mountpoint', '\\foo\\bar'))
-        tester('ntpath.splitunc("//conky/mountpoint/foo/bar")',
-               ('//conky/mountpoint', '/foo/bar'))
-
-    def test_split(self):
-        tester('ntpath.split("c:\\foo\\bar")', ('c:\\foo', 'bar'))
-        tester('ntpath.split("\\\\conky\\mountpoint\\foo\\bar")',
-               ('\\\\conky\\mountpoint\\foo', 'bar'))
-
-        tester('ntpath.split("c:\\")', ('c:\\', ''))
-        tester('ntpath.split("\\\\conky\\mountpoint\\")',
-               ('\\\\conky\\mountpoint', ''))
-
-        tester('ntpath.split("c:/")', ('c:/', ''))
-        tester('ntpath.split("//conky/mountpoint/")', ('//conky/mountpoint', ''))
-
-    def test_isabs(self):
-        tester('ntpath.isabs("c:\\")', 1)
-        tester('ntpath.isabs("\\\\conky\\mountpoint\\")', 1)
-        tester('ntpath.isabs("\\foo")', 1)
-        tester('ntpath.isabs("\\foo\\bar")', 1)
-
-    def test_commonprefix(self):
-        tester('ntpath.commonprefix(["/home/swenson/spam", "/home/swen/spam"])',
-               "/home/swen")
-        tester('ntpath.commonprefix(["\\home\\swen\\spam", "\\home\\swen\\eggs"])',
-               "\\home\\swen\\")
-        tester('ntpath.commonprefix(["/home/swen/spam", "/home/swen/spam"])',
-               "/home/swen/spam")
-
-    def test_join(self):
-        tester('ntpath.join("")', '')
-        tester('ntpath.join("", "", "")', '')
-        tester('ntpath.join("a")', 'a')
-        tester('ntpath.join("/a")', '/a')
-        tester('ntpath.join("\\a")', '\\a')
-        tester('ntpath.join("a:")', 'a:')
-        tester('ntpath.join("a:", "b")', 'a:b')
-        tester('ntpath.join("a:", "/b")', 'a:/b')
-        tester('ntpath.join("a:", "\\b")', 'a:\\b')
-        tester('ntpath.join("a", "/b")', '/b')
-        tester('ntpath.join("a", "\\b")', '\\b')
-        tester('ntpath.join("a", "b", "c")', 'a\\b\\c')
-        tester('ntpath.join("a\\", "b", "c")', 'a\\b\\c')
-        tester('ntpath.join("a", "b\\", "c")', 'a\\b\\c')
-        tester('ntpath.join("a", "b", "\\c")', '\\c')
-        tester('ntpath.join("d:\\", "\\pleep")', 'd:\\pleep')
-        tester('ntpath.join("d:\\", "a", "b")', 'd:\\a\\b')
-        tester("ntpath.join('c:', '/a')", 'c:/a')
-        tester("ntpath.join('c:/', '/a')", 'c:/a')
-        tester("ntpath.join('c:/a', '/b')", '/b')
-        tester("ntpath.join('c:', 'd:/')", 'd:/')
-        tester("ntpath.join('c:/', 'd:/')", 'd:/')
-        tester("ntpath.join('c:/', 'd:/a/b')", 'd:/a/b')
-
-        tester("ntpath.join('')", '')
-        tester("ntpath.join('', '', '', '', '')", '')
-        tester("ntpath.join('a')", 'a')
-        tester("ntpath.join('', 'a')", 'a')
-        tester("ntpath.join('', '', '', '', 'a')", 'a')
-        tester("ntpath.join('a', '')", 'a\\')
-        tester("ntpath.join('a', '', '', '', '')", 'a\\')
-        tester("ntpath.join('a\\', '')", 'a\\')
-        tester("ntpath.join('a\\', '', '', '', '')", 'a\\')
-
-    def test_normpath(self):
-        tester("ntpath.normpath('A//////././//.//B')", r'A\B')
-        tester("ntpath.normpath('A/./B')", r'A\B')
-        tester("ntpath.normpath('A/foo/../B')", r'A\B')
-        tester("ntpath.normpath('C:A//B')", r'C:A\B')
-        tester("ntpath.normpath('D:A/./B')", r'D:A\B')
-        tester("ntpath.normpath('e:A/foo/../B')", r'e:A\B')
-
-        tester("ntpath.normpath('C:///A//B')", r'C:\A\B')
-        tester("ntpath.normpath('D:///A/./B')", r'D:\A\B')
-        tester("ntpath.normpath('e:///A/foo/../B')", r'e:\A\B')
-
-        tester("ntpath.normpath('..')", r'..')
-        tester("ntpath.normpath('.')", r'.')
-        tester("ntpath.normpath('')", r'.')
-        tester("ntpath.normpath('/')", '\\')
-        tester("ntpath.normpath('c:/')", 'c:\\')
-        tester("ntpath.normpath('/../.././..')", '\\')
-        tester("ntpath.normpath('c:/../../..')", 'c:\\')
-        tester("ntpath.normpath('../.././..')", r'..\..\..')
-        tester("ntpath.normpath('K:../.././..')", r'K:..\..\..')
-        tester("ntpath.normpath('C:////a/b')", r'C:\a\b')
-        tester("ntpath.normpath('//machine/share//a/b')", r'\\machine\share\a\b')
-
-        tester("ntpath.normpath('\\\\.\\NUL')", r'\\.\NUL')
-        tester("ntpath.normpath('\\\\?\\D:/XY\\Z')", r'\\?\D:/XY\Z')
-
-    def test_expandvars(self):
-        with test_support.EnvironmentVarGuard() as env:
-            env.clear()
-            env["foo"] = "bar"
-            env["{foo"] = "baz1"
-            env["{foo}"] = "baz2"
-            tester('ntpath.expandvars("foo")', "foo")
-            tester('ntpath.expandvars("$foo bar")', "bar bar")
-            tester('ntpath.expandvars("${foo}bar")', "barbar")
-            tester('ntpath.expandvars("$[foo]bar")', "$[foo]bar")
-            tester('ntpath.expandvars("$bar bar")', "$bar bar")
-            tester('ntpath.expandvars("$?bar")', "$?bar")
-            tester('ntpath.expandvars("${foo}bar")', "barbar")
-            tester('ntpath.expandvars("$foo}bar")', "bar}bar")
-            tester('ntpath.expandvars("${foo")', "${foo")
-            tester('ntpath.expandvars("${{foo}}")', "baz1}")
-            tester('ntpath.expandvars("$foo$foo")', "barbar")
-            tester('ntpath.expandvars("$bar$bar")', "$bar$bar")
-            tester('ntpath.expandvars("%foo% bar")', "bar bar")
-            tester('ntpath.expandvars("%foo%bar")', "barbar")
-            tester('ntpath.expandvars("%foo%%foo%")', "barbar")
-            tester('ntpath.expandvars("%%foo%%foo%foo%")', "%foo%foobar")
-            tester('ntpath.expandvars("%?bar%")', "%?bar%")
-            tester('ntpath.expandvars("%foo%%bar")', "bar%bar")
-            tester('ntpath.expandvars("\'%foo%\'%bar")', "\'%foo%\'%bar")
-
-    def test_abspath(self):
-        # ntpath.abspath() can only be used on a system with the "nt" module
-        # (reasonably), so we protect this test with "import nt".  This allows
-        # the rest of the tests for the ntpath module to be run to completion
-        # on any platform, since most of the module is intended to be usable
-        # from any platform.
-        # XXX this needs more tests
-        try:
-            import nt
-        except ImportError:
-            # check that the function is there even if we are not on Windows
-            ntpath.abspath
-        else:
-            tester('ntpath.abspath("C:\\")', "C:\\")
-
-    def test_relpath(self):
-        currentdir = os.path.split(os.getcwd())[-1]
-        tester('ntpath.relpath("a")', 'a')
-        tester('ntpath.relpath(os.path.abspath("a"))', 'a')
-        tester('ntpath.relpath("a/b")', 'a\\b')
-        tester('ntpath.relpath("../a/b")', '..\\a\\b')
-        tester('ntpath.relpath("a", "../b")', '..\\'+currentdir+'\\a')
-        tester('ntpath.relpath("a/b", "../c")', '..\\'+currentdir+'\\a\\b')
-        tester('ntpath.relpath("a", "b/c")', '..\\..\\a')
-        tester('ntpath.relpath("//conky/mountpoint/a", "//conky/mountpoint/b/c")', '..\\..\\a')
-        tester('ntpath.relpath("a", "a")', '.')
-        tester('ntpath.relpath("/foo/bar/bat", "/x/y/z")', '..\\..\\..\\foo\\bar\\bat')
-        tester('ntpath.relpath("/foo/bar/bat", "/foo/bar")', 'bat')
-        tester('ntpath.relpath("/foo/bar/bat", "/")', 'foo\\bar\\bat')
-        tester('ntpath.relpath("/", "/foo/bar/bat")', '..\\..\\..')
-        tester('ntpath.relpath("/foo/bar/bat", "/x")', '..\\foo\\bar\\bat')
-        tester('ntpath.relpath("/x", "/foo/bar/bat")', '..\\..\\..\\x')
-        tester('ntpath.relpath("/", "/")', '.')
-        tester('ntpath.relpath("/a", "/a")', '.')
-        tester('ntpath.relpath("/a/b", "/a/b")', '.')
-        tester('ntpath.relpath("c:/foo", "C:/FOO")', '.')
-
-
-class NtCommonTest(test_genericpath.CommonTest):
-    pathmodule = ntpath
-    attributes = ['relpath', 'splitunc']
-
-
-def test_main():
-    test_support.run_unittest(TestNtpath, NtCommonTest)
-
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_old_mailbox.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_old_mailbox.py
deleted file mode 100644
index 1cdee9c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_old_mailbox.py
+++ /dev/null
@@ -1,152 +0,0 @@
-# This set of tests exercises the backward-compatibility class
-# in mailbox.py (the ones without write support).
-
-import mailbox
-import os
-import time
-import unittest
-from test import test_support
-
-# cleanup earlier tests
-try:
-    os.unlink(test_support.TESTFN)
-except os.error:
-    pass
-
-FROM_ = "From some.body@dummy.domain  Sat Jul 24 13:43:35 2004\n"
-DUMMY_MESSAGE = """\
-From: some.body@dummy.domain
-To: me@my.domain
-Subject: Simple Test
-
-This is a dummy message.
-"""
-
-class MaildirTestCase(unittest.TestCase):
-
-    def setUp(self):
-        # create a new maildir mailbox to work with:
-        self._dir = test_support.TESTFN
-        os.mkdir(self._dir)
-        os.mkdir(os.path.join(self._dir, "cur"))
-        os.mkdir(os.path.join(self._dir, "tmp"))
-        os.mkdir(os.path.join(self._dir, "new"))
-        self._counter = 1
-        self._msgfiles = []
-
-    def tearDown(self):
-        map(os.unlink, self._msgfiles)
-        os.rmdir(os.path.join(self._dir, "cur"))
-        os.rmdir(os.path.join(self._dir, "tmp"))
-        os.rmdir(os.path.join(self._dir, "new"))
-        os.rmdir(self._dir)
-
-    def createMessage(self, dir, mbox=False):
-        t = int(time.time() % 1000000)
-        pid = self._counter
-        self._counter += 1
-        filename = os.extsep.join((str(t), str(pid), "myhostname", "mydomain"))
-        tmpname = os.path.join(self._dir, "tmp", filename)
-        newname = os.path.join(self._dir, dir, filename)
-        with open(tmpname, "w") as fp:
-            self._msgfiles.append(tmpname)
-            if mbox:
-                fp.write(FROM_)
-            fp.write(DUMMY_MESSAGE)
-        if hasattr(os, "link"):
-            os.link(tmpname, newname)
-        else:
-            with open(newname, "w") as fp:
-                fp.write(DUMMY_MESSAGE)
-        self._msgfiles.append(newname)
-        return tmpname
-
-    def test_empty_maildir(self):
-        """Test an empty maildir mailbox"""
-        # Test for regression on bug #117490:
-        self.mbox = mailbox.Maildir(test_support.TESTFN)
-        self.assertTrue(len(self.mbox) == 0)
-        self.assertTrue(self.mbox.next() is None)
-        self.assertTrue(self.mbox.next() is None)
-
-    def test_nonempty_maildir_cur(self):
-        self.createMessage("cur")
-        self.mbox = mailbox.Maildir(test_support.TESTFN)
-        self.assertTrue(len(self.mbox) == 1)
-        self.assertTrue(self.mbox.next() is not None)
-        self.assertTrue(self.mbox.next() is None)
-        self.assertTrue(self.mbox.next() is None)
-
-    def test_nonempty_maildir_new(self):
-        self.createMessage("new")
-        self.mbox = mailbox.Maildir(test_support.TESTFN)
-        self.assertTrue(len(self.mbox) == 1)
-        self.assertTrue(self.mbox.next() is not None)
-        self.assertTrue(self.mbox.next() is None)
-        self.assertTrue(self.mbox.next() is None)
-
-    def test_nonempty_maildir_both(self):
-        self.createMessage("cur")
-        self.createMessage("new")
-        self.mbox = mailbox.Maildir(test_support.TESTFN)
-        self.assertTrue(len(self.mbox) == 2)
-        self.assertTrue(self.mbox.next() is not None)
-        self.assertTrue(self.mbox.next() is not None)
-        self.assertTrue(self.mbox.next() is None)
-        self.assertTrue(self.mbox.next() is None)
-
-    def test_unix_mbox(self):
-        ### should be better!
-        import email.parser
-        fname = self.createMessage("cur", True)
-        n = 0
-        with open(fname) as f:
-            for msg in mailbox.PortableUnixMailbox(f,
-                                               email.parser.Parser().parse):
-                n += 1
-                self.assertEqual(msg["subject"], "Simple Test")
-                self.assertEqual(len(str(msg)), len(FROM_)+len(DUMMY_MESSAGE))
-        self.assertEqual(n, 1)
-
-class MboxTestCase(unittest.TestCase):
-    def setUp(self):
-        # create a new maildir mailbox to work with:
-        self._path = test_support.TESTFN
-
-    def tearDown(self):
-        os.unlink(self._path)
-
-    def test_from_regex (self):
-        # Testing new regex from bug #1633678
-        with open(self._path, 'w') as f:
-            f.write("""From fred@example.com Mon May 31 13:24:50 2004 +0200
-Subject: message 1
-
-body1
-From fred@example.com Mon May 31 13:24:50 2004 -0200
-Subject: message 2
-
-body2
-From fred@example.com Mon May 31 13:24:50 2004
-Subject: message 3
-
-body3
-From fred@example.com Mon May 31 13:24:50 2004
-Subject: message 4
-
-body4
-""")
-        with open(self._path, 'r') as f:
-            box = mailbox.UnixMailbox(f)
-            self.assertTrue(len(list(iter(box))) == 4)
-
-
-    # XXX We still need more tests!
-
-
-def test_main():
-    test_support.run_unittest(MaildirTestCase, MboxTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_opcodes.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_opcodes.py
deleted file mode 100644
index 8387313..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_opcodes.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# Python test set -- part 2, opcodes
-
-from test.test_support import run_unittest, check_py3k_warnings
-import unittest
-
-class OpcodeTest(unittest.TestCase):
-
-    def test_try_inside_for_loop(self):
-        n = 0
-        for i in range(10):
-            n = n+i
-            try: 1 // 0
-            except NameError: pass
-            except ZeroDivisionError: pass
-            except TypeError: pass
-            try: pass
-            except: pass
-            try: pass
-            finally: pass
-            n = n+i
-        if n != 90:
-            self.fail('try inside for')
-
-    def test_raise_class_exceptions(self):
-
-        class AClass: pass
-        class BClass(AClass): pass
-        class CClass: pass
-        class DClass(AClass):
-            def __init__(self, ignore):
-                pass
-
-        try: raise AClass()
-        except: pass
-
-        try: raise AClass()
-        except AClass: pass
-
-        try: raise BClass()
-        except AClass: pass
-
-        try: raise BClass()
-        except CClass: self.fail()
-        except: pass
-
-        a = AClass()
-        b = BClass()
-
-        try: raise AClass, b
-        except BClass, v:
-            self.assertEqual(v, b)
-        else: self.fail("no exception")
-
-        try: raise b
-        except AClass, v:
-            self.assertEqual(v, b)
-        else:
-            self.fail("no exception")
-
-        # not enough arguments
-        try:  raise BClass, a
-        except TypeError: pass
-        else: self.fail("no exception")
-
-        try:  raise DClass, a
-        except DClass, v:
-            self.assertIsInstance(v, DClass)
-        else:
-            self.fail("no exception")
-
-    def test_compare_function_objects(self):
-
-        f = eval('lambda: None')
-        g = eval('lambda: None')
-        self.assertNotEqual(f, g)
-
-        f = eval('lambda a: a')
-        g = eval('lambda a: a')
-        self.assertNotEqual(f, g)
-
-        f = eval('lambda a=1: a')
-        g = eval('lambda a=1: a')
-        self.assertNotEqual(f, g)
-
-        f = eval('lambda: 0')
-        g = eval('lambda: 1')
-        self.assertNotEqual(f, g)
-
-        f = eval('lambda: None')
-        g = eval('lambda a: None')
-        self.assertNotEqual(f, g)
-
-        f = eval('lambda a: None')
-        g = eval('lambda b: None')
-        self.assertNotEqual(f, g)
-
-        f = eval('lambda a: None')
-        g = eval('lambda a=None: None')
-        self.assertNotEqual(f, g)
-
-        f = eval('lambda a=0: None')
-        g = eval('lambda a=1: None')
-        self.assertNotEqual(f, g)
-
-    def test_modulo_of_string_subclasses(self):
-        class MyString(str):
-            def __mod__(self, value):
-                return 42
-        self.assertEqual(MyString() % 3, 42)
-
-
-def test_main():
-    with check_py3k_warnings(("exceptions must derive from BaseException",
-                              DeprecationWarning),
-                             ("catching classes that don't inherit "
-                              "from BaseException is not allowed",
-                              DeprecationWarning)):
-        run_unittest(OpcodeTest)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_openpty.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_openpty.py
deleted file mode 100644
index b28199b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_openpty.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Test to see if openpty works. (But don't worry if it isn't available.)
-
-import os, unittest
-from test.test_support import run_unittest
-
-if not hasattr(os, "openpty"):
-    raise unittest.SkipTest, "No openpty() available."
-
-
-class OpenptyTest(unittest.TestCase):
-    def test(self):
-        master, slave = os.openpty()
-        if not os.isatty(slave):
-            self.fail("Slave-end of pty is not a terminal.")
-
-        os.write(slave, 'Ping!')
-        self.assertEqual(os.read(master, 1024), 'Ping!')
-
-def test_main():
-    run_unittest(OpenptyTest)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_operator.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_operator.py
deleted file mode 100644
index 56bda06..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_operator.py
+++ /dev/null
@@ -1,532 +0,0 @@
-import operator
-import unittest
-
-from test import test_support
-
-class Seq1:
-    def __init__(self, lst):
-        self.lst = lst
-    def __len__(self):
-        return len(self.lst)
-    def __getitem__(self, i):
-        return self.lst[i]
-    def __add__(self, other):
-        return self.lst + other.lst
-    def __mul__(self, other):
-        return self.lst * other
-    def __rmul__(self, other):
-        return other * self.lst
-
-class Seq2(object):
-    def __init__(self, lst):
-        self.lst = lst
-    def __len__(self):
-        return len(self.lst)
-    def __getitem__(self, i):
-        return self.lst[i]
-    def __add__(self, other):
-        return self.lst + other.lst
-    def __mul__(self, other):
-        return self.lst * other
-    def __rmul__(self, other):
-        return other * self.lst
-
-
-class OperatorTestCase(unittest.TestCase):
-    def test_lt(self):
-        self.assertRaises(TypeError, operator.lt)
-        self.assertRaises(TypeError, operator.lt, 1j, 2j)
-        self.assertFalse(operator.lt(1, 0))
-        self.assertFalse(operator.lt(1, 0.0))
-        self.assertFalse(operator.lt(1, 1))
-        self.assertFalse(operator.lt(1, 1.0))
-        self.assertTrue(operator.lt(1, 2))
-        self.assertTrue(operator.lt(1, 2.0))
-
-    def test_le(self):
-        self.assertRaises(TypeError, operator.le)
-        self.assertRaises(TypeError, operator.le, 1j, 2j)
-        self.assertFalse(operator.le(1, 0))
-        self.assertFalse(operator.le(1, 0.0))
-        self.assertTrue(operator.le(1, 1))
-        self.assertTrue(operator.le(1, 1.0))
-        self.assertTrue(operator.le(1, 2))
-        self.assertTrue(operator.le(1, 2.0))
-
-    def test_eq(self):
-        class C(object):
-            def __eq__(self, other):
-                raise SyntaxError
-            __hash__ = None # Silence Py3k warning
-        self.assertRaises(TypeError, operator.eq)
-        self.assertRaises(SyntaxError, operator.eq, C(), C())
-        self.assertFalse(operator.eq(1, 0))
-        self.assertFalse(operator.eq(1, 0.0))
-        self.assertTrue(operator.eq(1, 1))
-        self.assertTrue(operator.eq(1, 1.0))
-        self.assertFalse(operator.eq(1, 2))
-        self.assertFalse(operator.eq(1, 2.0))
-
-    def test_ne(self):
-        class C(object):
-            def __ne__(self, other):
-                raise SyntaxError
-        self.assertRaises(TypeError, operator.ne)
-        self.assertRaises(SyntaxError, operator.ne, C(), C())
-        self.assertTrue(operator.ne(1, 0))
-        self.assertTrue(operator.ne(1, 0.0))
-        self.assertFalse(operator.ne(1, 1))
-        self.assertFalse(operator.ne(1, 1.0))
-        self.assertTrue(operator.ne(1, 2))
-        self.assertTrue(operator.ne(1, 2.0))
-
-    def test_ge(self):
-        self.assertRaises(TypeError, operator.ge)
-        self.assertRaises(TypeError, operator.ge, 1j, 2j)
-        self.assertTrue(operator.ge(1, 0))
-        self.assertTrue(operator.ge(1, 0.0))
-        self.assertTrue(operator.ge(1, 1))
-        self.assertTrue(operator.ge(1, 1.0))
-        self.assertFalse(operator.ge(1, 2))
-        self.assertFalse(operator.ge(1, 2.0))
-
-    def test_gt(self):
-        self.assertRaises(TypeError, operator.gt)
-        self.assertRaises(TypeError, operator.gt, 1j, 2j)
-        self.assertTrue(operator.gt(1, 0))
-        self.assertTrue(operator.gt(1, 0.0))
-        self.assertFalse(operator.gt(1, 1))
-        self.assertFalse(operator.gt(1, 1.0))
-        self.assertFalse(operator.gt(1, 2))
-        self.assertFalse(operator.gt(1, 2.0))
-
-    def test_abs(self):
-        self.assertRaises(TypeError, operator.abs)
-        self.assertRaises(TypeError, operator.abs, None)
-        self.assertTrue(operator.abs(-1) == 1)
-        self.assertTrue(operator.abs(1) == 1)
-
-    def test_add(self):
-        self.assertRaises(TypeError, operator.add)
-        self.assertRaises(TypeError, operator.add, None, None)
-        self.assertTrue(operator.add(3, 4) == 7)
-
-    def test_bitwise_and(self):
-        self.assertRaises(TypeError, operator.and_)
-        self.assertRaises(TypeError, operator.and_, None, None)
-        self.assertTrue(operator.and_(0xf, 0xa) == 0xa)
-
-    def test_concat(self):
-        self.assertRaises(TypeError, operator.concat)
-        self.assertRaises(TypeError, operator.concat, None, None)
-        self.assertTrue(operator.concat('py', 'thon') == 'python')
-        self.assertTrue(operator.concat([1, 2], [3, 4]) == [1, 2, 3, 4])
-        self.assertTrue(operator.concat(Seq1([5, 6]), Seq1([7])) == [5, 6, 7])
-        self.assertTrue(operator.concat(Seq2([5, 6]), Seq2([7])) == [5, 6, 7])
-        self.assertRaises(TypeError, operator.concat, 13, 29)
-
-    def test_countOf(self):
-        self.assertRaises(TypeError, operator.countOf)
-        self.assertRaises(TypeError, operator.countOf, None, None)
-        self.assertTrue(operator.countOf([1, 2, 1, 3, 1, 4], 3) == 1)
-        self.assertTrue(operator.countOf([1, 2, 1, 3, 1, 4], 5) == 0)
-
-    def test_delitem(self):
-        a = [4, 3, 2, 1]
-        self.assertRaises(TypeError, operator.delitem, a)
-        self.assertRaises(TypeError, operator.delitem, a, None)
-        self.assertTrue(operator.delitem(a, 1) is None)
-        self.assertTrue(a == [4, 2, 1])
-
-    def test_delslice(self):
-        a = range(10)
-        self.assertRaises(TypeError, operator.delslice, a)
-        self.assertRaises(TypeError, operator.delslice, a, None, None)
-        self.assertTrue(operator.delslice(a, 2, 8) is None)
-        self.assertTrue(a == [0, 1, 8, 9])
-        operator.delslice(a, 0, test_support.MAX_Py_ssize_t)
-        self.assertTrue(a == [])
-
-    def test_div(self):
-        self.assertRaises(TypeError, operator.div, 5)
-        self.assertRaises(TypeError, operator.div, None, None)
-        self.assertTrue(operator.floordiv(5, 2) == 2)
-
-    def test_floordiv(self):
-        self.assertRaises(TypeError, operator.floordiv, 5)
-        self.assertRaises(TypeError, operator.floordiv, None, None)
-        self.assertTrue(operator.floordiv(5, 2) == 2)
-
-    def test_truediv(self):
-        self.assertRaises(TypeError, operator.truediv, 5)
-        self.assertRaises(TypeError, operator.truediv, None, None)
-        self.assertTrue(operator.truediv(5, 2) == 2.5)
-
-    def test_getitem(self):
-        a = range(10)
-        self.assertRaises(TypeError, operator.getitem)
-        self.assertRaises(TypeError, operator.getitem, a, None)
-        self.assertTrue(operator.getitem(a, 2) == 2)
-
-    def test_getslice(self):
-        a = range(10)
-        self.assertRaises(TypeError, operator.getslice)
-        self.assertRaises(TypeError, operator.getslice, a, None, None)
-        self.assertTrue(operator.getslice(a, 4, 6) == [4, 5])
-        b = operator.getslice(a, 0, test_support.MAX_Py_ssize_t)
-        self.assertTrue(b == a)
-
-    def test_indexOf(self):
-        self.assertRaises(TypeError, operator.indexOf)
-        self.assertRaises(TypeError, operator.indexOf, None, None)
-        self.assertTrue(operator.indexOf([4, 3, 2, 1], 3) == 1)
-        self.assertRaises(ValueError, operator.indexOf, [4, 3, 2, 1], 0)
-
-    def test_invert(self):
-        self.assertRaises(TypeError, operator.invert)
-        self.assertRaises(TypeError, operator.invert, None)
-        self.assertTrue(operator.inv(4) == -5)
-
-    def test_isCallable(self):
-        self.assertRaises(TypeError, operator.isCallable)
-        class C:
-            pass
-        def check(self, o, v):
-            with test_support.check_py3k_warnings():
-                self.assertEqual(operator.isCallable(o), v)
-                self.assertEqual(callable(o), v)
-        check(self, 4, 0)
-        check(self, operator.isCallable, 1)
-        check(self, C, 1)
-        check(self, C(), 0)
-
-    def test_isMappingType(self):
-        self.assertRaises(TypeError, operator.isMappingType)
-        self.assertFalse(operator.isMappingType(1))
-        self.assertFalse(operator.isMappingType(operator.isMappingType))
-        self.assertTrue(operator.isMappingType(operator.__dict__))
-        self.assertTrue(operator.isMappingType({}))
-
-    def test_isNumberType(self):
-        self.assertRaises(TypeError, operator.isNumberType)
-        self.assertTrue(operator.isNumberType(8))
-        self.assertTrue(operator.isNumberType(8j))
-        self.assertTrue(operator.isNumberType(8L))
-        self.assertTrue(operator.isNumberType(8.3))
-        self.assertFalse(operator.isNumberType(dir()))
-
-    def test_isSequenceType(self):
-        self.assertRaises(TypeError, operator.isSequenceType)
-        self.assertTrue(operator.isSequenceType(dir()))
-        self.assertTrue(operator.isSequenceType(()))
-        self.assertTrue(operator.isSequenceType(xrange(10)))
-        self.assertTrue(operator.isSequenceType('yeahbuddy'))
-        self.assertFalse(operator.isSequenceType(3))
-        class Dict(dict): pass
-        self.assertFalse(operator.isSequenceType(Dict()))
-
-    def test_lshift(self):
-        self.assertRaises(TypeError, operator.lshift)
-        self.assertRaises(TypeError, operator.lshift, None, 42)
-        self.assertTrue(operator.lshift(5, 1) == 10)
-        self.assertTrue(operator.lshift(5, 0) == 5)
-        self.assertRaises(ValueError, operator.lshift, 2, -1)
-
-    def test_mod(self):
-        self.assertRaises(TypeError, operator.mod)
-        self.assertRaises(TypeError, operator.mod, None, 42)
-        self.assertTrue(operator.mod(5, 2) == 1)
-
-    def test_mul(self):
-        self.assertRaises(TypeError, operator.mul)
-        self.assertRaises(TypeError, operator.mul, None, None)
-        self.assertTrue(operator.mul(5, 2) == 10)
-
-    def test_neg(self):
-        self.assertRaises(TypeError, operator.neg)
-        self.assertRaises(TypeError, operator.neg, None)
-        self.assertTrue(operator.neg(5) == -5)
-        self.assertTrue(operator.neg(-5) == 5)
-        self.assertTrue(operator.neg(0) == 0)
-        self.assertTrue(operator.neg(-0) == 0)
-
-    def test_bitwise_or(self):
-        self.assertRaises(TypeError, operator.or_)
-        self.assertRaises(TypeError, operator.or_, None, None)
-        self.assertTrue(operator.or_(0xa, 0x5) == 0xf)
-
-    def test_pos(self):
-        self.assertRaises(TypeError, operator.pos)
-        self.assertRaises(TypeError, operator.pos, None)
-        self.assertTrue(operator.pos(5) == 5)
-        self.assertTrue(operator.pos(-5) == -5)
-        self.assertTrue(operator.pos(0) == 0)
-        self.assertTrue(operator.pos(-0) == 0)
-
-    def test_pow(self):
-        self.assertRaises(TypeError, operator.pow)
-        self.assertRaises(TypeError, operator.pow, None, None)
-        self.assertTrue(operator.pow(3,5) == 3**5)
-        self.assertTrue(operator.__pow__(3,5) == 3**5)
-        self.assertRaises(TypeError, operator.pow, 1)
-        self.assertRaises(TypeError, operator.pow, 1, 2, 3)
-
-    def test_repeat(self):
-        a = range(3)
-        self.assertRaises(TypeError, operator.repeat)
-        self.assertRaises(TypeError, operator.repeat, a, None)
-        self.assertTrue(operator.repeat(a, 2) == a+a)
-        self.assertTrue(operator.repeat(a, 1) == a)
-        self.assertTrue(operator.repeat(a, 0) == [])
-        a = (1, 2, 3)
-        self.assertTrue(operator.repeat(a, 2) == a+a)
-        self.assertTrue(operator.repeat(a, 1) == a)
-        self.assertTrue(operator.repeat(a, 0) == ())
-        a = '123'
-        self.assertTrue(operator.repeat(a, 2) == a+a)
-        self.assertTrue(operator.repeat(a, 1) == a)
-        self.assertTrue(operator.repeat(a, 0) == '')
-        a = Seq1([4, 5, 6])
-        self.assertTrue(operator.repeat(a, 2) == [4, 5, 6, 4, 5, 6])
-        self.assertTrue(operator.repeat(a, 1) == [4, 5, 6])
-        self.assertTrue(operator.repeat(a, 0) == [])
-        a = Seq2([4, 5, 6])
-        self.assertTrue(operator.repeat(a, 2) == [4, 5, 6, 4, 5, 6])
-        self.assertTrue(operator.repeat(a, 1) == [4, 5, 6])
-        self.assertTrue(operator.repeat(a, 0) == [])
-        self.assertRaises(TypeError, operator.repeat, 6, 7)
-
-    def test_rshift(self):
-        self.assertRaises(TypeError, operator.rshift)
-        self.assertRaises(TypeError, operator.rshift, None, 42)
-        self.assertTrue(operator.rshift(5, 1) == 2)
-        self.assertTrue(operator.rshift(5, 0) == 5)
-        self.assertRaises(ValueError, operator.rshift, 2, -1)
-
-    def test_contains(self):
-        self.assertRaises(TypeError, operator.contains)
-        self.assertRaises(TypeError, operator.contains, None, None)
-        self.assertTrue(operator.contains(range(4), 2))
-        self.assertFalse(operator.contains(range(4), 5))
-        with test_support.check_py3k_warnings():
-            self.assertTrue(operator.sequenceIncludes(range(4), 2))
-            self.assertFalse(operator.sequenceIncludes(range(4), 5))
-
-    def test_setitem(self):
-        a = range(3)
-        self.assertRaises(TypeError, operator.setitem, a)
-        self.assertRaises(TypeError, operator.setitem, a, None, None)
-        self.assertTrue(operator.setitem(a, 0, 2) is None)
-        self.assertTrue(a == [2, 1, 2])
-        self.assertRaises(IndexError, operator.setitem, a, 4, 2)
-
-    def test_setslice(self):
-        a = range(4)
-        self.assertRaises(TypeError, operator.setslice, a)
-        self.assertRaises(TypeError, operator.setslice, a, None, None, None)
-        self.assertTrue(operator.setslice(a, 1, 3, [2, 1]) is None)
-        self.assertTrue(a == [0, 2, 1, 3])
-        operator.setslice(a, 0, test_support.MAX_Py_ssize_t, [])
-        self.assertTrue(a == [])
-
-    def test_sub(self):
-        self.assertRaises(TypeError, operator.sub)
-        self.assertRaises(TypeError, operator.sub, None, None)
-        self.assertTrue(operator.sub(5, 2) == 3)
-
-    def test_truth(self):
-        class C(object):
-            def __nonzero__(self):
-                raise SyntaxError
-        self.assertRaises(TypeError, operator.truth)
-        self.assertRaises(SyntaxError, operator.truth, C())
-        self.assertTrue(operator.truth(5))
-        self.assertTrue(operator.truth([0]))
-        self.assertFalse(operator.truth(0))
-        self.assertFalse(operator.truth([]))
-
-    def test_bitwise_xor(self):
-        self.assertRaises(TypeError, operator.xor)
-        self.assertRaises(TypeError, operator.xor, None, None)
-        self.assertTrue(operator.xor(0xb, 0xc) == 0x7)
-
-    def test_is(self):
-        a = b = 'xyzpdq'
-        c = a[:3] + b[3:]
-        self.assertRaises(TypeError, operator.is_)
-        self.assertTrue(operator.is_(a, b))
-        self.assertFalse(operator.is_(a,c))
-
-    def test_is_not(self):
-        a = b = 'xyzpdq'
-        c = a[:3] + b[3:]
-        self.assertRaises(TypeError, operator.is_not)
-        self.assertFalse(operator.is_not(a, b))
-        self.assertTrue(operator.is_not(a,c))
-
-    def test_attrgetter(self):
-        class A:
-            pass
-        a = A()
-        a.name = 'arthur'
-        f = operator.attrgetter('name')
-        self.assertEqual(f(a), 'arthur')
-        f = operator.attrgetter('rank')
-        self.assertRaises(AttributeError, f, a)
-        f = operator.attrgetter(2)
-        self.assertRaises(TypeError, f, a)
-        self.assertRaises(TypeError, operator.attrgetter)
-
-        # multiple gets
-        record = A()
-        record.x = 'X'
-        record.y = 'Y'
-        record.z = 'Z'
-        self.assertEqual(operator.attrgetter('x','z','y')(record), ('X', 'Z', 'Y'))
-        self.assertRaises(TypeError, operator.attrgetter('x', (), 'y'), record)
-
-        class C(object):
-            def __getattr__(self, name):
-                raise SyntaxError
-        self.assertRaises(SyntaxError, operator.attrgetter('foo'), C())
-
-        # recursive gets
-        a = A()
-        a.name = 'arthur'
-        a.child = A()
-        a.child.name = 'thomas'
-        f = operator.attrgetter('child.name')
-        self.assertEqual(f(a), 'thomas')
-        self.assertRaises(AttributeError, f, a.child)
-        f = operator.attrgetter('name', 'child.name')
-        self.assertEqual(f(a), ('arthur', 'thomas'))
-        f = operator.attrgetter('name', 'child.name', 'child.child.name')
-        self.assertRaises(AttributeError, f, a)
-
-        a.child.child = A()
-        a.child.child.name = 'johnson'
-        f = operator.attrgetter('child.child.name')
-        self.assertEqual(f(a), 'johnson')
-        f = operator.attrgetter('name', 'child.name', 'child.child.name')
-        self.assertEqual(f(a), ('arthur', 'thomas', 'johnson'))
-
-    def test_itemgetter(self):
-        a = 'ABCDE'
-        f = operator.itemgetter(2)
-        self.assertEqual(f(a), 'C')
-        f = operator.itemgetter(10)
-        self.assertRaises(IndexError, f, a)
-
-        class C(object):
-            def __getitem__(self, name):
-                raise SyntaxError
-        self.assertRaises(SyntaxError, operator.itemgetter(42), C())
-
-        f = operator.itemgetter('name')
-        self.assertRaises(TypeError, f, a)
-        self.assertRaises(TypeError, operator.itemgetter)
-
-        d = dict(key='val')
-        f = operator.itemgetter('key')
-        self.assertEqual(f(d), 'val')
-        f = operator.itemgetter('nonkey')
-        self.assertRaises(KeyError, f, d)
-
-        # example used in the docs
-        inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]
-        getcount = operator.itemgetter(1)
-        self.assertEqual(map(getcount, inventory), [3, 2, 5, 1])
-        self.assertEqual(sorted(inventory, key=getcount),
-            [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)])
-
-        # multiple gets
-        data = map(str, range(20))
-        self.assertEqual(operator.itemgetter(2,10,5)(data), ('2', '10', '5'))
-        self.assertRaises(TypeError, operator.itemgetter(2, 'x', 5), data)
-
-    def test_methodcaller(self):
-        self.assertRaises(TypeError, operator.methodcaller)
-        class A:
-            def foo(self, *args, **kwds):
-                return args[0] + args[1]
-            def bar(self, f=42):
-                return f
-        a = A()
-        f = operator.methodcaller('foo')
-        self.assertRaises(IndexError, f, a)
-        f = operator.methodcaller('foo', 1, 2)
-        self.assertEqual(f(a), 3)
-        f = operator.methodcaller('bar')
-        self.assertEqual(f(a), 42)
-        self.assertRaises(TypeError, f, a, a)
-        f = operator.methodcaller('bar', f=5)
-        self.assertEqual(f(a), 5)
-
-    def test_inplace(self):
-        class C(object):
-            def __iadd__     (self, other): return "iadd"
-            def __iand__     (self, other): return "iand"
-            def __idiv__     (self, other): return "idiv"
-            def __ifloordiv__(self, other): return "ifloordiv"
-            def __ilshift__  (self, other): return "ilshift"
-            def __imod__     (self, other): return "imod"
-            def __imul__     (self, other): return "imul"
-            def __ior__      (self, other): return "ior"
-            def __ipow__     (self, other): return "ipow"
-            def __irshift__  (self, other): return "irshift"
-            def __isub__     (self, other): return "isub"
-            def __itruediv__ (self, other): return "itruediv"
-            def __ixor__     (self, other): return "ixor"
-            def __getitem__(self, other): return 5  # so that C is a sequence
-        c = C()
-        self.assertEqual(operator.iadd     (c, 5), "iadd")
-        self.assertEqual(operator.iand     (c, 5), "iand")
-        self.assertEqual(operator.idiv     (c, 5), "idiv")
-        self.assertEqual(operator.ifloordiv(c, 5), "ifloordiv")
-        self.assertEqual(operator.ilshift  (c, 5), "ilshift")
-        self.assertEqual(operator.imod     (c, 5), "imod")
-        self.assertEqual(operator.imul     (c, 5), "imul")
-        self.assertEqual(operator.ior      (c, 5), "ior")
-        self.assertEqual(operator.ipow     (c, 5), "ipow")
-        self.assertEqual(operator.irshift  (c, 5), "irshift")
-        self.assertEqual(operator.isub     (c, 5), "isub")
-        self.assertEqual(operator.itruediv (c, 5), "itruediv")
-        self.assertEqual(operator.ixor     (c, 5), "ixor")
-        self.assertEqual(operator.iconcat  (c, c), "iadd")
-        self.assertEqual(operator.irepeat  (c, 5), "imul")
-        self.assertEqual(operator.__iadd__     (c, 5), "iadd")
-        self.assertEqual(operator.__iand__     (c, 5), "iand")
-        self.assertEqual(operator.__idiv__     (c, 5), "idiv")
-        self.assertEqual(operator.__ifloordiv__(c, 5), "ifloordiv")
-        self.assertEqual(operator.__ilshift__  (c, 5), "ilshift")
-        self.assertEqual(operator.__imod__     (c, 5), "imod")
-        self.assertEqual(operator.__imul__     (c, 5), "imul")
-        self.assertEqual(operator.__ior__      (c, 5), "ior")
-        self.assertEqual(operator.__ipow__     (c, 5), "ipow")
-        self.assertEqual(operator.__irshift__  (c, 5), "irshift")
-        self.assertEqual(operator.__isub__     (c, 5), "isub")
-        self.assertEqual(operator.__itruediv__ (c, 5), "itruediv")
-        self.assertEqual(operator.__ixor__     (c, 5), "ixor")
-        self.assertEqual(operator.__iconcat__  (c, c), "iadd")
-        self.assertEqual(operator.__irepeat__  (c, 5), "imul")
-
-def test_main(verbose=None):
-    import sys
-    test_classes = (
-        OperatorTestCase,
-    )
-
-    test_support.run_unittest(*test_classes)
-
-    # verify reference counting
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        import gc
-        counts = [None] * 5
-        for i in xrange(len(counts)):
-            test_support.run_unittest(*test_classes)
-            gc.collect()
-            counts[i] = sys.gettotalrefcount()
-        print counts
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_optparse.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_optparse.py
deleted file mode 100644
index a5e32e9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_optparse.py
+++ /dev/null
@@ -1,1619 +0,0 @@
-#
-# Test suite for Optik.  Supplied by Johannes Gijsbers
-# (taradino@softhome.net) -- translated from the original Optik
-# test suite to this PyUnit-based version.
-#
-# $Id$
-#
-
-import sys
-import os
-import re
-import copy
-import types
-import unittest
-
-from StringIO import StringIO
-from test import test_support
-
-
-from optparse import make_option, Option, \
-     TitledHelpFormatter, OptionParser, OptionGroup, \
-     SUPPRESS_USAGE, OptionError, OptionConflictError, \
-     BadOptionError, OptionValueError, Values
-from optparse import _match_abbrev
-from optparse import _parse_num
-
-retype = type(re.compile(''))
-
-class InterceptedError(Exception):
-    def __init__(self,
-                 error_message=None,
-                 exit_status=None,
-                 exit_message=None):
-        self.error_message = error_message
-        self.exit_status = exit_status
-        self.exit_message = exit_message
-
-    def __str__(self):
-        return self.error_message or self.exit_message or "intercepted error"
-
-class InterceptingOptionParser(OptionParser):
-    def exit(self, status=0, msg=None):
-        raise InterceptedError(exit_status=status, exit_message=msg)
-
-    def error(self, msg):
-        raise InterceptedError(error_message=msg)
-
-
-class BaseTest(unittest.TestCase):
-    def assertParseOK(self, args, expected_opts, expected_positional_args):
-        """Assert the options are what we expected when parsing arguments.
-
-        Otherwise, fail with a nicely formatted message.
-
-        Keyword arguments:
-        args -- A list of arguments to parse with OptionParser.
-        expected_opts -- The options expected.
-        expected_positional_args -- The positional arguments expected.
-
-        Returns the options and positional args for further testing.
-        """
-
-        (options, positional_args) = self.parser.parse_args(args)
-        optdict = vars(options)
-
-        self.assertEqual(optdict, expected_opts,
-                         """
-Options are %(optdict)s.
-Should be %(expected_opts)s.
-Args were %(args)s.""" % locals())
-
-        self.assertEqual(positional_args, expected_positional_args,
-                         """
-Positional arguments are %(positional_args)s.
-Should be %(expected_positional_args)s.
-Args were %(args)s.""" % locals ())
-
-        return (options, positional_args)
-
-    def assertRaises(self,
-                     func,
-                     args,
-                     kwargs,
-                     expected_exception,
-                     expected_message):
-        """
-        Assert that the expected exception is raised when calling a
-        function, and that the right error message is included with
-        that exception.
-
-        Arguments:
-          func -- the function to call
-          args -- positional arguments to `func`
-          kwargs -- keyword arguments to `func`
-          expected_exception -- exception that should be raised
-          expected_message -- expected exception message (or pattern
-            if a compiled regex object)
-
-        Returns the exception raised for further testing.
-        """
-        if args is None:
-            args = ()
-        if kwargs is None:
-            kwargs = {}
-
-        try:
-            func(*args, **kwargs)
-        except expected_exception, err:
-            actual_message = str(err)
-            if isinstance(expected_message, retype):
-                self.assertTrue(expected_message.search(actual_message),
-                             """\
-expected exception message pattern:
-/%s/
-actual exception message:
-'''%s'''
-""" % (expected_message.pattern, actual_message))
-            else:
-                self.assertEqual(actual_message,
-                                 expected_message,
-                                 """\
-expected exception message:
-'''%s'''
-actual exception message:
-'''%s'''
-""" % (expected_message, actual_message))
-
-            return err
-        else:
-            self.fail("""expected exception %(expected_exception)s not raised
-called %(func)r
-with args %(args)r
-and kwargs %(kwargs)r
-""" % locals ())
-
-
-    # -- Assertions used in more than one class --------------------
-
-    def assertParseFail(self, cmdline_args, expected_output):
-        """
-        Assert the parser fails with the expected message.  Caller
-        must ensure that self.parser is an InterceptingOptionParser.
-        """
-        try:
-            self.parser.parse_args(cmdline_args)
-        except InterceptedError, err:
-            self.assertEqual(err.error_message, expected_output)
-        else:
-            self.assertFalse("expected parse failure")
-
-    def assertOutput(self,
-                     cmdline_args,
-                     expected_output,
-                     expected_status=0,
-                     expected_error=None):
-        """Assert the parser prints the expected output on stdout."""
-        save_stdout = sys.stdout
-        encoding = getattr(save_stdout, 'encoding', None)
-        try:
-            try:
-                sys.stdout = StringIO()
-                if encoding:
-                    sys.stdout.encoding = encoding
-                self.parser.parse_args(cmdline_args)
-            finally:
-                output = sys.stdout.getvalue()
-                sys.stdout = save_stdout
-
-        except InterceptedError, err:
-            self.assertTrue(
-                type(output) is types.StringType,
-                "expected output to be an ordinary string, not %r"
-                % type(output))
-
-            if output != expected_output:
-                self.fail("expected: \n'''\n" + expected_output +
-                          "'''\nbut got \n'''\n" + output + "'''")
-            self.assertEqual(err.exit_status, expected_status)
-            self.assertEqual(err.exit_message, expected_error)
-        else:
-            self.assertFalse("expected parser.exit()")
-
-    def assertTypeError(self, func, expected_message, *args):
-        """Assert that TypeError is raised when executing func."""
-        self.assertRaises(func, args, None, TypeError, expected_message)
-
-    def assertHelp(self, parser, expected_help):
-        actual_help = parser.format_help()
-        if actual_help != expected_help:
-            raise self.failureException(
-                'help text failure; expected:\n"' +
-                expected_help + '"; got:\n"' +
-                actual_help + '"\n')
-
-# -- Test make_option() aka Option -------------------------------------
-
-# It's not necessary to test correct options here.  All the tests in the
-# parser.parse_args() section deal with those, because they're needed
-# there.
-
-class TestOptionChecks(BaseTest):
-    def setUp(self):
-        self.parser = OptionParser(usage=SUPPRESS_USAGE)
-
-    def assertOptionError(self, expected_message, args=[], kwargs={}):
-        self.assertRaises(make_option, args, kwargs,
-                          OptionError, expected_message)
-
-    def test_opt_string_empty(self):
-        self.assertTypeError(make_option,
-                             "at least one option string must be supplied")
-
-    def test_opt_string_too_short(self):
-        self.assertOptionError(
-            "invalid option string 'b': must be at least two characters long",
-            ["b"])
-
-    def test_opt_string_short_invalid(self):
-        self.assertOptionError(
-            "invalid short option string '--': must be "
-            "of the form -x, (x any non-dash char)",
-            ["--"])
-
-    def test_opt_string_long_invalid(self):
-        self.assertOptionError(
-            "invalid long option string '---': "
-            "must start with --, followed by non-dash",
-            ["---"])
-
-    def test_attr_invalid(self):
-        self.assertOptionError(
-            "option -b: invalid keyword arguments: bar, foo",
-            ["-b"], {'foo': None, 'bar': None})
-
-    def test_action_invalid(self):
-        self.assertOptionError(
-            "option -b: invalid action: 'foo'",
-            ["-b"], {'action': 'foo'})
-
-    def test_type_invalid(self):
-        self.assertOptionError(
-            "option -b: invalid option type: 'foo'",
-            ["-b"], {'type': 'foo'})
-        self.assertOptionError(
-            "option -b: invalid option type: 'tuple'",
-            ["-b"], {'type': tuple})
-
-    def test_no_type_for_action(self):
-        self.assertOptionError(
-            "option -b: must not supply a type for action 'count'",
-            ["-b"], {'action': 'count', 'type': 'int'})
-
-    def test_no_choices_list(self):
-        self.assertOptionError(
-            "option -b/--bad: must supply a list of "
-            "choices for type 'choice'",
-            ["-b", "--bad"], {'type': "choice"})
-
-    def test_bad_choices_list(self):
-        typename = type('').__name__
-        self.assertOptionError(
-            "option -b/--bad: choices must be a list of "
-            "strings ('%s' supplied)" % typename,
-            ["-b", "--bad"],
-            {'type': "choice", 'choices':"bad choices"})
-
-    def test_no_choices_for_type(self):
-        self.assertOptionError(
-            "option -b: must not supply choices for type 'int'",
-            ["-b"], {'type': 'int', 'choices':"bad"})
-
-    def test_no_const_for_action(self):
-        self.assertOptionError(
-            "option -b: 'const' must not be supplied for action 'store'",
-            ["-b"], {'action': 'store', 'const': 1})
-
-    def test_no_nargs_for_action(self):
-        self.assertOptionError(
-            "option -b: 'nargs' must not be supplied for action 'count'",
-            ["-b"], {'action': 'count', 'nargs': 2})
-
-    def test_callback_not_callable(self):
-        self.assertOptionError(
-            "option -b: callback not callable: 'foo'",
-            ["-b"], {'action': 'callback',
-                     'callback': 'foo'})
-
-    def dummy(self):
-        pass
-
-    def test_callback_args_no_tuple(self):
-        self.assertOptionError(
-            "option -b: callback_args, if supplied, "
-            "must be a tuple: not 'foo'",
-            ["-b"], {'action': 'callback',
-                     'callback': self.dummy,
-                     'callback_args': 'foo'})
-
-    def test_callback_kwargs_no_dict(self):
-        self.assertOptionError(
-            "option -b: callback_kwargs, if supplied, "
-            "must be a dict: not 'foo'",
-            ["-b"], {'action': 'callback',
-                     'callback': self.dummy,
-                     'callback_kwargs': 'foo'})
-
-    def test_no_callback_for_action(self):
-        self.assertOptionError(
-            "option -b: callback supplied ('foo') for non-callback option",
-            ["-b"], {'action': 'store',
-                     'callback': 'foo'})
-
-    def test_no_callback_args_for_action(self):
-        self.assertOptionError(
-            "option -b: callback_args supplied for non-callback option",
-            ["-b"], {'action': 'store',
-                     'callback_args': 'foo'})
-
-    def test_no_callback_kwargs_for_action(self):
-        self.assertOptionError(
-            "option -b: callback_kwargs supplied for non-callback option",
-            ["-b"], {'action': 'store',
-                     'callback_kwargs': 'foo'})
-
-class TestOptionParser(BaseTest):
-    def setUp(self):
-        self.parser = OptionParser()
-        self.parser.add_option("-v", "--verbose", "-n", "--noisy",
-                          action="store_true", dest="verbose")
-        self.parser.add_option("-q", "--quiet", "--silent",
-                          action="store_false", dest="verbose")
-
-    def test_add_option_no_Option(self):
-        self.assertTypeError(self.parser.add_option,
-                             "not an Option instance: None", None)
-
-    def test_add_option_invalid_arguments(self):
-        self.assertTypeError(self.parser.add_option,
-                             "invalid arguments", None, None)
-
-    def test_get_option(self):
-        opt1 = self.parser.get_option("-v")
-        self.assertIsInstance(opt1, Option)
-        self.assertEqual(opt1._short_opts, ["-v", "-n"])
-        self.assertEqual(opt1._long_opts, ["--verbose", "--noisy"])
-        self.assertEqual(opt1.action, "store_true")
-        self.assertEqual(opt1.dest, "verbose")
-
-    def test_get_option_equals(self):
-        opt1 = self.parser.get_option("-v")
-        opt2 = self.parser.get_option("--verbose")
-        opt3 = self.parser.get_option("-n")
-        opt4 = self.parser.get_option("--noisy")
-        self.assertTrue(opt1 is opt2 is opt3 is opt4)
-
-    def test_has_option(self):
-        self.assertTrue(self.parser.has_option("-v"))
-        self.assertTrue(self.parser.has_option("--verbose"))
-
-    def assertTrueremoved(self):
-        self.assertTrue(self.parser.get_option("-v") is None)
-        self.assertTrue(self.parser.get_option("--verbose") is None)
-        self.assertTrue(self.parser.get_option("-n") is None)
-        self.assertTrue(self.parser.get_option("--noisy") is None)
-
-        self.assertFalse(self.parser.has_option("-v"))
-        self.assertFalse(self.parser.has_option("--verbose"))
-        self.assertFalse(self.parser.has_option("-n"))
-        self.assertFalse(self.parser.has_option("--noisy"))
-
-        self.assertTrue(self.parser.has_option("-q"))
-        self.assertTrue(self.parser.has_option("--silent"))
-
-    def test_remove_short_opt(self):
-        self.parser.remove_option("-n")
-        self.assertTrueremoved()
-
-    def test_remove_long_opt(self):
-        self.parser.remove_option("--verbose")
-        self.assertTrueremoved()
-
-    def test_remove_nonexistent(self):
-        self.assertRaises(self.parser.remove_option, ('foo',), None,
-                          ValueError, "no such option 'foo'")
-
-    def test_refleak(self):
-        # If an OptionParser is carrying around a reference to a large
-        # object, various cycles can prevent it from being GC'd in
-        # a timely fashion.  destroy() breaks the cycles to ensure stuff
-        # can be cleaned up.
-        big_thing = [42]
-        refcount = sys.getrefcount(big_thing)
-        parser = OptionParser()
-        parser.add_option("-a", "--aaarggh")
-        parser.big_thing = big_thing
-
-        parser.destroy()
-        #self.assertEqual(refcount, sys.getrefcount(big_thing))
-        del parser
-        self.assertEqual(refcount, sys.getrefcount(big_thing))
-
-
-class TestOptionValues(BaseTest):
-    def setUp(self):
-        pass
-
-    def test_basics(self):
-        values = Values()
-        self.assertEqual(vars(values), {})
-        self.assertEqual(values, {})
-        self.assertNotEqual(values, {"foo": "bar"})
-        self.assertNotEqual(values, "")
-
-        dict = {"foo": "bar", "baz": 42}
-        values = Values(defaults=dict)
-        self.assertEqual(vars(values), dict)
-        self.assertEqual(values, dict)
-        self.assertNotEqual(values, {"foo": "bar"})
-        self.assertNotEqual(values, {})
-        self.assertNotEqual(values, "")
-        self.assertNotEqual(values, [])
-
-
-class TestTypeAliases(BaseTest):
-    def setUp(self):
-        self.parser = OptionParser()
-
-    def test_str_aliases_string(self):
-        self.parser.add_option("-s", type="str")
-        self.assertEqual(self.parser.get_option("-s").type, "string")
-
-    def test_new_type_object(self):
-        self.parser.add_option("-s", type=str)
-        self.assertEqual(self.parser.get_option("-s").type, "string")
-        self.parser.add_option("-x", type=int)
-        self.assertEqual(self.parser.get_option("-x").type, "int")
-
-    def test_old_type_object(self):
-        self.parser.add_option("-s", type=types.StringType)
-        self.assertEqual(self.parser.get_option("-s").type, "string")
-        self.parser.add_option("-x", type=types.IntType)
-        self.assertEqual(self.parser.get_option("-x").type, "int")
-
-
-# Custom type for testing processing of default values.
-_time_units = { 's' : 1, 'm' : 60, 'h' : 60*60, 'd' : 60*60*24 }
-
-def _check_duration(option, opt, value):
-    try:
-        if value[-1].isdigit():
-            return int(value)
-        else:
-            return int(value[:-1]) * _time_units[value[-1]]
-    except (ValueError, IndexError):
-        raise OptionValueError(
-            'option %s: invalid duration: %r' % (opt, value))
-
-class DurationOption(Option):
-    TYPES = Option.TYPES + ('duration',)
-    TYPE_CHECKER = copy.copy(Option.TYPE_CHECKER)
-    TYPE_CHECKER['duration'] = _check_duration
-
-class TestDefaultValues(BaseTest):
-    def setUp(self):
-        self.parser = OptionParser()
-        self.parser.add_option("-v", "--verbose", default=True)
-        self.parser.add_option("-q", "--quiet", dest='verbose')
-        self.parser.add_option("-n", type="int", default=37)
-        self.parser.add_option("-m", type="int")
-        self.parser.add_option("-s", default="foo")
-        self.parser.add_option("-t")
-        self.parser.add_option("-u", default=None)
-        self.expected = { 'verbose': True,
-                          'n': 37,
-                          'm': None,
-                          's': "foo",
-                          't': None,
-                          'u': None }
-
-    def test_basic_defaults(self):
-        self.assertEqual(self.parser.get_default_values(), self.expected)
-
-    def test_mixed_defaults_post(self):
-        self.parser.set_defaults(n=42, m=-100)
-        self.expected.update({'n': 42, 'm': -100})
-        self.assertEqual(self.parser.get_default_values(), self.expected)
-
-    def test_mixed_defaults_pre(self):
-        self.parser.set_defaults(x="barf", y="blah")
-        self.parser.add_option("-x", default="frob")
-        self.parser.add_option("-y")
-
-        self.expected.update({'x': "frob", 'y': "blah"})
-        self.assertEqual(self.parser.get_default_values(), self.expected)
-
-        self.parser.remove_option("-y")
-        self.parser.add_option("-y", default=None)
-        self.expected.update({'y': None})
-        self.assertEqual(self.parser.get_default_values(), self.expected)
-
-    def test_process_default(self):
-        self.parser.option_class = DurationOption
-        self.parser.add_option("-d", type="duration", default=300)
-        self.parser.add_option("-e", type="duration", default="6m")
-        self.parser.set_defaults(n="42")
-        self.expected.update({'d': 300, 'e': 360, 'n': 42})
-        self.assertEqual(self.parser.get_default_values(), self.expected)
-
-        self.parser.set_process_default_values(False)
-        self.expected.update({'d': 300, 'e': "6m", 'n': "42"})
-        self.assertEqual(self.parser.get_default_values(), self.expected)
-
-
-class TestProgName(BaseTest):
-    """
-    Test that %prog expands to the right thing in usage, version,
-    and help strings.
-    """
-
-    def assertUsage(self, parser, expected_usage):
-        self.assertEqual(parser.get_usage(), expected_usage)
-
-    def assertVersion(self, parser, expected_version):
-        self.assertEqual(parser.get_version(), expected_version)
-
-
-    def test_default_progname(self):
-        # Make sure that program name taken from sys.argv[0] by default.
-        save_argv = sys.argv[:]
-        try:
-            sys.argv[0] = os.path.join("foo", "bar", "baz.py")
-            parser = OptionParser("%prog ...", version="%prog 1.2")
-            expected_usage = "Usage: baz.py ...\n"
-            self.assertUsage(parser, expected_usage)
-            self.assertVersion(parser, "baz.py 1.2")
-            self.assertHelp(parser,
-                            expected_usage + "\n" +
-                            "Options:\n"
-                            "  --version   show program's version number and exit\n"
-                            "  -h, --help  show this help message and exit\n")
-        finally:
-            sys.argv[:] = save_argv
-
-    def test_custom_progname(self):
-        parser = OptionParser(prog="thingy",
-                              version="%prog 0.1",
-                              usage="%prog arg arg")
-        parser.remove_option("-h")
-        parser.remove_option("--version")
-        expected_usage = "Usage: thingy arg arg\n"
-        self.assertUsage(parser, expected_usage)
-        self.assertVersion(parser, "thingy 0.1")
-        self.assertHelp(parser, expected_usage + "\n")
-
-
-class TestExpandDefaults(BaseTest):
-    def setUp(self):
-        self.parser = OptionParser(prog="test")
-        self.help_prefix = """\
-Usage: test [options]
-
-Options:
-  -h, --help            show this help message and exit
-"""
-        self.file_help = "read from FILE [default: %default]"
-        self.expected_help_file = self.help_prefix + \
-            "  -f FILE, --file=FILE  read from FILE [default: foo.txt]\n"
-        self.expected_help_none = self.help_prefix + \
-            "  -f FILE, --file=FILE  read from FILE [default: none]\n"
-
-    def test_option_default(self):
-        self.parser.add_option("-f", "--file",
-                               default="foo.txt",
-                               help=self.file_help)
-        self.assertHelp(self.parser, self.expected_help_file)
-
-    def test_parser_default_1(self):
-        self.parser.add_option("-f", "--file",
-                               help=self.file_help)
-        self.parser.set_default('file', "foo.txt")
-        self.assertHelp(self.parser, self.expected_help_file)
-
-    def test_parser_default_2(self):
-        self.parser.add_option("-f", "--file",
-                               help=self.file_help)
-        self.parser.set_defaults(file="foo.txt")
-        self.assertHelp(self.parser, self.expected_help_file)
-
-    def test_no_default(self):
-        self.parser.add_option("-f", "--file",
-                               help=self.file_help)
-        self.assertHelp(self.parser, self.expected_help_none)
-
-    def test_default_none_1(self):
-        self.parser.add_option("-f", "--file",
-                               default=None,
-                               help=self.file_help)
-        self.assertHelp(self.parser, self.expected_help_none)
-
-    def test_default_none_2(self):
-        self.parser.add_option("-f", "--file",
-                               help=self.file_help)
-        self.parser.set_defaults(file=None)
-        self.assertHelp(self.parser, self.expected_help_none)
-
-    def test_float_default(self):
-        self.parser.add_option(
-            "-p", "--prob",
-            help="blow up with probability PROB [default: %default]")
-        self.parser.set_defaults(prob=0.43)
-        expected_help = self.help_prefix + \
-            "  -p PROB, --prob=PROB  blow up with probability PROB [default: 0.43]\n"
-        self.assertHelp(self.parser, expected_help)
-
-    def test_alt_expand(self):
-        self.parser.add_option("-f", "--file",
-                               default="foo.txt",
-                               help="read from FILE [default: *DEFAULT*]")
-        self.parser.formatter.default_tag = "*DEFAULT*"
-        self.assertHelp(self.parser, self.expected_help_file)
-
-    def test_no_expand(self):
-        self.parser.add_option("-f", "--file",
-                               default="foo.txt",
-                               help="read from %default file")
-        self.parser.formatter.default_tag = None
-        expected_help = self.help_prefix + \
-            "  -f FILE, --file=FILE  read from %default file\n"
-        self.assertHelp(self.parser, expected_help)
-
-
-# -- Test parser.parse_args() ------------------------------------------
-
-class TestStandard(BaseTest):
-    def setUp(self):
-        options = [make_option("-a", type="string"),
-                   make_option("-b", "--boo", type="int", dest='boo'),
-                   make_option("--foo", action="append")]
-
-        self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE,
-                                               option_list=options)
-
-    def test_required_value(self):
-        self.assertParseFail(["-a"], "-a option requires an argument")
-
-    def test_invalid_integer(self):
-        self.assertParseFail(["-b", "5x"],
-                             "option -b: invalid integer value: '5x'")
-
-    def test_no_such_option(self):
-        self.assertParseFail(["--boo13"], "no such option: --boo13")
-
-    def test_long_invalid_integer(self):
-        self.assertParseFail(["--boo=x5"],
-                             "option --boo: invalid integer value: 'x5'")
-
-    def test_empty(self):
-        self.assertParseOK([], {'a': None, 'boo': None, 'foo': None}, [])
-
-    def test_shortopt_empty_longopt_append(self):
-        self.assertParseOK(["-a", "", "--foo=blah", "--foo="],
-                           {'a': "", 'boo': None, 'foo': ["blah", ""]},
-                           [])
-
-    def test_long_option_append(self):
-        self.assertParseOK(["--foo", "bar", "--foo", "", "--foo=x"],
-                           {'a': None,
-                            'boo': None,
-                            'foo': ["bar", "", "x"]},
-                           [])
-
-    def test_option_argument_joined(self):
-        self.assertParseOK(["-abc"],
-                           {'a': "bc", 'boo': None, 'foo': None},
-                           [])
-
-    def test_option_argument_split(self):
-        self.assertParseOK(["-a", "34"],
-                           {'a': "34", 'boo': None, 'foo': None},
-                           [])
-
-    def test_option_argument_joined_integer(self):
-        self.assertParseOK(["-b34"],
-                           {'a': None, 'boo': 34, 'foo': None},
-                           [])
-
-    def test_option_argument_split_negative_integer(self):
-        self.assertParseOK(["-b", "-5"],
-                           {'a': None, 'boo': -5, 'foo': None},
-                           [])
-
-    def test_long_option_argument_joined(self):
-        self.assertParseOK(["--boo=13"],
-                           {'a': None, 'boo': 13, 'foo': None},
-                           [])
-
-    def test_long_option_argument_split(self):
-        self.assertParseOK(["--boo", "111"],
-                           {'a': None, 'boo': 111, 'foo': None},
-                           [])
-
-    def test_long_option_short_option(self):
-        self.assertParseOK(["--foo=bar", "-axyz"],
-                           {'a': 'xyz', 'boo': None, 'foo': ["bar"]},
-                           [])
-
-    def test_abbrev_long_option(self):
-        self.assertParseOK(["--f=bar", "-axyz"],
-                           {'a': 'xyz', 'boo': None, 'foo': ["bar"]},
-                           [])
-
-    def test_defaults(self):
-        (options, args) = self.parser.parse_args([])
-        defaults = self.parser.get_default_values()
-        self.assertEqual(vars(defaults), vars(options))
-
-    def test_ambiguous_option(self):
-        self.parser.add_option("--foz", action="store",
-                               type="string", dest="foo")
-        self.assertParseFail(["--f=bar"],
-                             "ambiguous option: --f (--foo, --foz?)")
-
-
-    def test_short_and_long_option_split(self):
-        self.assertParseOK(["-a", "xyz", "--foo", "bar"],
-                           {'a': 'xyz', 'boo': None, 'foo': ["bar"]},
-                           []),
-
-    def test_short_option_split_long_option_append(self):
-        self.assertParseOK(["--foo=bar", "-b", "123", "--foo", "baz"],
-                           {'a': None, 'boo': 123, 'foo': ["bar", "baz"]},
-                           [])
-
-    def test_short_option_split_one_positional_arg(self):
-        self.assertParseOK(["-a", "foo", "bar"],
-                           {'a': "foo", 'boo': None, 'foo': None},
-                           ["bar"]),
-
-    def test_short_option_consumes_separator(self):
-        self.assertParseOK(["-a", "--", "foo", "bar"],
-                           {'a': "--", 'boo': None, 'foo': None},
-                           ["foo", "bar"]),
-        self.assertParseOK(["-a", "--", "--foo", "bar"],
-                           {'a': "--", 'boo': None, 'foo': ["bar"]},
-                           []),
-
-    def test_short_option_joined_and_separator(self):
-        self.assertParseOK(["-ab", "--", "--foo", "bar"],
-                           {'a': "b", 'boo': None, 'foo': None},
-                           ["--foo", "bar"]),
-
-    def test_hyphen_becomes_positional_arg(self):
-        self.assertParseOK(["-ab", "-", "--foo", "bar"],
-                           {'a': "b", 'boo': None, 'foo': ["bar"]},
-                           ["-"])
-
-    def test_no_append_versus_append(self):
-        self.assertParseOK(["-b3", "-b", "5", "--foo=bar", "--foo", "baz"],
-                           {'a': None, 'boo': 5, 'foo': ["bar", "baz"]},
-                           [])
-
-    def test_option_consumes_optionlike_string(self):
-        self.assertParseOK(["-a", "-b3"],
-                           {'a': "-b3", 'boo': None, 'foo': None},
-                           [])
-
-    def test_combined_single_invalid_option(self):
-        self.parser.add_option("-t", action="store_true")
-        self.assertParseFail(["-test"],
-                             "no such option: -e")
-
-class TestBool(BaseTest):
-    def setUp(self):
-        options = [make_option("-v",
-                               "--verbose",
-                               action="store_true",
-                               dest="verbose",
-                               default=''),
-                   make_option("-q",
-                               "--quiet",
-                               action="store_false",
-                               dest="verbose")]
-        self.parser = OptionParser(option_list = options)
-
-    def test_bool_default(self):
-        self.assertParseOK([],
-                           {'verbose': ''},
-                           [])
-
-    def test_bool_false(self):
-        (options, args) = self.assertParseOK(["-q"],
-                                             {'verbose': 0},
-                                             [])
-        self.assertTrue(options.verbose is False)
-
-    def test_bool_true(self):
-        (options, args) = self.assertParseOK(["-v"],
-                                             {'verbose': 1},
-                                             [])
-        self.assertTrue(options.verbose is True)
-
-    def test_bool_flicker_on_and_off(self):
-        self.assertParseOK(["-qvq", "-q", "-v"],
-                           {'verbose': 1},
-                           [])
-
-class TestChoice(BaseTest):
-    def setUp(self):
-        self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE)
-        self.parser.add_option("-c", action="store", type="choice",
-                               dest="choice", choices=["one", "two", "three"])
-
-    def test_valid_choice(self):
-        self.assertParseOK(["-c", "one", "xyz"],
-                           {'choice': 'one'},
-                           ["xyz"])
-
-    def test_invalid_choice(self):
-        self.assertParseFail(["-c", "four", "abc"],
-                             "option -c: invalid choice: 'four' "
-                             "(choose from 'one', 'two', 'three')")
-
-    def test_add_choice_option(self):
-        self.parser.add_option("-d", "--default",
-                               choices=["four", "five", "six"])
-        opt = self.parser.get_option("-d")
-        self.assertEqual(opt.type, "choice")
-        self.assertEqual(opt.action, "store")
-
-class TestCount(BaseTest):
-    def setUp(self):
-        self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE)
-        self.v_opt = make_option("-v", action="count", dest="verbose")
-        self.parser.add_option(self.v_opt)
-        self.parser.add_option("--verbose", type="int", dest="verbose")
-        self.parser.add_option("-q", "--quiet",
-                               action="store_const", dest="verbose", const=0)
-
-    def test_empty(self):
-        self.assertParseOK([], {'verbose': None}, [])
-
-    def test_count_one(self):
-        self.assertParseOK(["-v"], {'verbose': 1}, [])
-
-    def test_count_three(self):
-        self.assertParseOK(["-vvv"], {'verbose': 3}, [])
-
-    def test_count_three_apart(self):
-        self.assertParseOK(["-v", "-v", "-v"], {'verbose': 3}, [])
-
-    def test_count_override_amount(self):
-        self.assertParseOK(["-vvv", "--verbose=2"], {'verbose': 2}, [])
-
-    def test_count_override_quiet(self):
-        self.assertParseOK(["-vvv", "--verbose=2", "-q"], {'verbose': 0}, [])
-
-    def test_count_overriding(self):
-        self.assertParseOK(["-vvv", "--verbose=2", "-q", "-v"],
-                           {'verbose': 1}, [])
-
-    def test_count_interspersed_args(self):
-        self.assertParseOK(["--quiet", "3", "-v"],
-                           {'verbose': 1},
-                           ["3"])
-
-    def test_count_no_interspersed_args(self):
-        self.parser.disable_interspersed_args()
-        self.assertParseOK(["--quiet", "3", "-v"],
-                           {'verbose': 0},
-                           ["3", "-v"])
-
-    def test_count_no_such_option(self):
-        self.assertParseFail(["-q3", "-v"], "no such option: -3")
-
-    def test_count_option_no_value(self):
-        self.assertParseFail(["--quiet=3", "-v"],
-                             "--quiet option does not take a value")
-
-    def test_count_with_default(self):
-        self.parser.set_default('verbose', 0)
-        self.assertParseOK([], {'verbose':0}, [])
-
-    def test_count_overriding_default(self):
-        self.parser.set_default('verbose', 0)
-        self.assertParseOK(["-vvv", "--verbose=2", "-q", "-v"],
-                           {'verbose': 1}, [])
-
-class TestMultipleArgs(BaseTest):
-    def setUp(self):
-        self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE)
-        self.parser.add_option("-p", "--point",
-                               action="store", nargs=3, type="float", dest="point")
-
-    def test_nargs_with_positional_args(self):
-        self.assertParseOK(["foo", "-p", "1", "2.5", "-4.3", "xyz"],
-                           {'point': (1.0, 2.5, -4.3)},
-                           ["foo", "xyz"])
-
-    def test_nargs_long_opt(self):
-        self.assertParseOK(["--point", "-1", "2.5", "-0", "xyz"],
-                           {'point': (-1.0, 2.5, -0.0)},
-                           ["xyz"])
-
-    def test_nargs_invalid_float_value(self):
-        self.assertParseFail(["-p", "1.0", "2x", "3.5"],
-                             "option -p: "
-                             "invalid floating-point value: '2x'")
-
-    def test_nargs_required_values(self):
-        self.assertParseFail(["--point", "1.0", "3.5"],
-                             "--point option requires 3 arguments")
-
-class TestMultipleArgsAppend(BaseTest):
-    def setUp(self):
-        self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE)
-        self.parser.add_option("-p", "--point", action="store", nargs=3,
-                               type="float", dest="point")
-        self.parser.add_option("-f", "--foo", action="append", nargs=2,
-                               type="int", dest="foo")
-        self.parser.add_option("-z", "--zero", action="append_const",
-                               dest="foo", const=(0, 0))
-
-    def test_nargs_append(self):
-        self.assertParseOK(["-f", "4", "-3", "blah", "--foo", "1", "666"],
-                           {'point': None, 'foo': [(4, -3), (1, 666)]},
-                           ["blah"])
-
-    def test_nargs_append_required_values(self):
-        self.assertParseFail(["-f4,3"],
-                             "-f option requires 2 arguments")
-
-    def test_nargs_append_simple(self):
-        self.assertParseOK(["--foo=3", "4"],
-                           {'point': None, 'foo':[(3, 4)]},
-                           [])
-
-    def test_nargs_append_const(self):
-        self.assertParseOK(["--zero", "--foo", "3", "4", "-z"],
-                           {'point': None, 'foo':[(0, 0), (3, 4), (0, 0)]},
-                           [])
-
-class TestVersion(BaseTest):
-    def test_version(self):
-        self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE,
-                                               version="%prog 0.1")
-        save_argv = sys.argv[:]
-        try:
-            sys.argv[0] = os.path.join(os.curdir, "foo", "bar")
-            self.assertOutput(["--version"], "bar 0.1\n")
-        finally:
-            sys.argv[:] = save_argv
-
-    def test_no_version(self):
-        self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE)
-        self.assertParseFail(["--version"],
-                             "no such option: --version")
-
-# -- Test conflicting default values and parser.parse_args() -----------
-
-class TestConflictingDefaults(BaseTest):
-    """Conflicting default values: the last one should win."""
-    def setUp(self):
-        self.parser = OptionParser(option_list=[
-            make_option("-v", action="store_true", dest="verbose", default=1)])
-
-    def test_conflict_default(self):
-        self.parser.add_option("-q", action="store_false", dest="verbose",
-                               default=0)
-        self.assertParseOK([], {'verbose': 0}, [])
-
-    def test_conflict_default_none(self):
-        self.parser.add_option("-q", action="store_false", dest="verbose",
-                               default=None)
-        self.assertParseOK([], {'verbose': None}, [])
-
-class TestOptionGroup(BaseTest):
-    def setUp(self):
-        self.parser = OptionParser(usage=SUPPRESS_USAGE)
-
-    def test_option_group_create_instance(self):
-        group = OptionGroup(self.parser, "Spam")
-        self.parser.add_option_group(group)
-        group.add_option("--spam", action="store_true",
-                         help="spam spam spam spam")
-        self.assertParseOK(["--spam"], {'spam': 1}, [])
-
-    def test_add_group_no_group(self):
-        self.assertTypeError(self.parser.add_option_group,
-                             "not an OptionGroup instance: None", None)
-
-    def test_add_group_invalid_arguments(self):
-        self.assertTypeError(self.parser.add_option_group,
-                             "invalid arguments", None, None)
-
-    def test_add_group_wrong_parser(self):
-        group = OptionGroup(self.parser, "Spam")
-        group.parser = OptionParser()
-        self.assertRaises(self.parser.add_option_group, (group,), None,
-                          ValueError, "invalid OptionGroup (wrong parser)")
-
-    def test_group_manipulate(self):
-        group = self.parser.add_option_group("Group 2",
-                                             description="Some more options")
-        group.set_title("Bacon")
-        group.add_option("--bacon", type="int")
-        self.assertTrue(self.parser.get_option_group("--bacon"), group)
-
-# -- Test extending and parser.parse_args() ----------------------------
-
-class TestExtendAddTypes(BaseTest):
-    def setUp(self):
-        self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE,
-                                               option_class=self.MyOption)
-        self.parser.add_option("-a", None, type="string", dest="a")
-        self.parser.add_option("-f", "--file", type="file", dest="file")
-
-    def tearDown(self):
-        if os.path.isdir(test_support.TESTFN):
-            os.rmdir(test_support.TESTFN)
-        elif os.path.isfile(test_support.TESTFN):
-            os.unlink(test_support.TESTFN)
-
-    class MyOption (Option):
-        def check_file(option, opt, value):
-            if not os.path.exists(value):
-                raise OptionValueError("%s: file does not exist" % value)
-            elif not os.path.isfile(value):
-                raise OptionValueError("%s: not a regular file" % value)
-            return value
-
-        TYPES = Option.TYPES + ("file",)
-        TYPE_CHECKER = copy.copy(Option.TYPE_CHECKER)
-        TYPE_CHECKER["file"] = check_file
-
-    def test_filetype_ok(self):
-        open(test_support.TESTFN, "w").close()
-        self.assertParseOK(["--file", test_support.TESTFN, "-afoo"],
-                           {'file': test_support.TESTFN, 'a': 'foo'},
-                           [])
-
-    def test_filetype_noexist(self):
-        self.assertParseFail(["--file", test_support.TESTFN, "-afoo"],
-                             "%s: file does not exist" %
-                             test_support.TESTFN)
-
-    def test_filetype_notfile(self):
-        os.mkdir(test_support.TESTFN)
-        self.assertParseFail(["--file", test_support.TESTFN, "-afoo"],
-                             "%s: not a regular file" %
-                             test_support.TESTFN)
-
-
-class TestExtendAddActions(BaseTest):
-    def setUp(self):
-        options = [self.MyOption("-a", "--apple", action="extend",
-                                 type="string", dest="apple")]
-        self.parser = OptionParser(option_list=options)
-
-    class MyOption (Option):
-        ACTIONS = Option.ACTIONS + ("extend",)
-        STORE_ACTIONS = Option.STORE_ACTIONS + ("extend",)
-        TYPED_ACTIONS = Option.TYPED_ACTIONS + ("extend",)
-
-        def take_action(self, action, dest, opt, value, values, parser):
-            if action == "extend":
-                lvalue = value.split(",")
-                values.ensure_value(dest, []).extend(lvalue)
-            else:
-                Option.take_action(self, action, dest, opt, parser, value,
-                                   values)
-
-    def test_extend_add_action(self):
-        self.assertParseOK(["-afoo,bar", "--apple=blah"],
-                           {'apple': ["foo", "bar", "blah"]},
-                           [])
-
-    def test_extend_add_action_normal(self):
-        self.assertParseOK(["-a", "foo", "-abar", "--apple=x,y"],
-                           {'apple': ["foo", "bar", "x", "y"]},
-                           [])
-
-# -- Test callbacks and parser.parse_args() ----------------------------
-
-class TestCallback(BaseTest):
-    def setUp(self):
-        options = [make_option("-x",
-                               None,
-                               action="callback",
-                               callback=self.process_opt),
-                   make_option("-f",
-                               "--file",
-                               action="callback",
-                               callback=self.process_opt,
-                               type="string",
-                               dest="filename")]
-        self.parser = OptionParser(option_list=options)
-
-    def process_opt(self, option, opt, value, parser_):
-        if opt == "-x":
-            self.assertEqual(option._short_opts, ["-x"])
-            self.assertEqual(option._long_opts, [])
-            self.assertTrue(parser_ is self.parser)
-            self.assertTrue(value is None)
-            self.assertEqual(vars(parser_.values), {'filename': None})
-
-            parser_.values.x = 42
-        elif opt == "--file":
-            self.assertEqual(option._short_opts, ["-f"])
-            self.assertEqual(option._long_opts, ["--file"])
-            self.assertTrue(parser_ is self.parser)
-            self.assertEqual(value, "foo")
-            self.assertEqual(vars(parser_.values), {'filename': None, 'x': 42})
-
-            setattr(parser_.values, option.dest, value)
-        else:
-            self.fail("Unknown option %r in process_opt." % opt)
-
-    def test_callback(self):
-        self.assertParseOK(["-x", "--file=foo"],
-                           {'filename': "foo", 'x': 42},
-                           [])
-
-    def test_callback_help(self):
-        # This test was prompted by SF bug #960515 -- the point is
-        # not to inspect the help text, just to make sure that
-        # format_help() doesn't crash.
-        parser = OptionParser(usage=SUPPRESS_USAGE)
-        parser.remove_option("-h")
-        parser.add_option("-t", "--test", action="callback",
-                          callback=lambda: None, type="string",
-                          help="foo")
-
-        expected_help = ("Options:\n"
-                         "  -t TEST, --test=TEST  foo\n")
-        self.assertHelp(parser, expected_help)
-
-
-class TestCallbackExtraArgs(BaseTest):
-    def setUp(self):
-        options = [make_option("-p", "--point", action="callback",
-                               callback=self.process_tuple,
-                               callback_args=(3, int), type="string",
-                               dest="points", default=[])]
-        self.parser = OptionParser(option_list=options)
-
-    def process_tuple(self, option, opt, value, parser_, len, type):
-        self.assertEqual(len, 3)
-        self.assertTrue(type is int)
-
-        if opt == "-p":
-            self.assertEqual(value, "1,2,3")
-        elif opt == "--point":
-            self.assertEqual(value, "4,5,6")
-
-        value = tuple(map(type, value.split(",")))
-        getattr(parser_.values, option.dest).append(value)
-
-    def test_callback_extra_args(self):
-        self.assertParseOK(["-p1,2,3", "--point", "4,5,6"],
-                           {'points': [(1,2,3), (4,5,6)]},
-                           [])
-
-class TestCallbackMeddleArgs(BaseTest):
-    def setUp(self):
-        options = [make_option(str(x), action="callback",
-                               callback=self.process_n, dest='things')
-                   for x in range(-1, -6, -1)]
-        self.parser = OptionParser(option_list=options)
-
-    # Callback that meddles in rargs, largs
-    def process_n(self, option, opt, value, parser_):
-        # option is -3, -5, etc.
-        nargs = int(opt[1:])
-        rargs = parser_.rargs
-        if len(rargs) < nargs:
-            self.fail("Expected %d arguments for %s option." % (nargs, opt))
-        dest = parser_.values.ensure_value(option.dest, [])
-        dest.append(tuple(rargs[0:nargs]))
-        parser_.largs.append(nargs)
-        del rargs[0:nargs]
-
-    def test_callback_meddle_args(self):
-        self.assertParseOK(["-1", "foo", "-3", "bar", "baz", "qux"],
-                           {'things': [("foo",), ("bar", "baz", "qux")]},
-                           [1, 3])
-
-    def test_callback_meddle_args_separator(self):
-        self.assertParseOK(["-2", "foo", "--"],
-                           {'things': [('foo', '--')]},
-                           [2])
-
-class TestCallbackManyArgs(BaseTest):
-    def setUp(self):
-        options = [make_option("-a", "--apple", action="callback", nargs=2,
-                               callback=self.process_many, type="string"),
-                   make_option("-b", "--bob", action="callback", nargs=3,
-                               callback=self.process_many, type="int")]
-        self.parser = OptionParser(option_list=options)
-
-    def process_many(self, option, opt, value, parser_):
-        if opt == "-a":
-            self.assertEqual(value, ("foo", "bar"))
-        elif opt == "--apple":
-            self.assertEqual(value, ("ding", "dong"))
-        elif opt == "-b":
-            self.assertEqual(value, (1, 2, 3))
-        elif opt == "--bob":
-            self.assertEqual(value, (-666, 42, 0))
-
-    def test_many_args(self):
-        self.assertParseOK(["-a", "foo", "bar", "--apple", "ding", "dong",
-                            "-b", "1", "2", "3", "--bob", "-666", "42",
-                            "0"],
-                           {"apple": None, "bob": None},
-                           [])
-
-class TestCallbackCheckAbbrev(BaseTest):
-    def setUp(self):
-        self.parser = OptionParser()
-        self.parser.add_option("--foo-bar", action="callback",
-                               callback=self.check_abbrev)
-
-    def check_abbrev(self, option, opt, value, parser):
-        self.assertEqual(opt, "--foo-bar")
-
-    def test_abbrev_callback_expansion(self):
-        self.assertParseOK(["--foo"], {}, [])
-
-class TestCallbackVarArgs(BaseTest):
-    def setUp(self):
-        options = [make_option("-a", type="int", nargs=2, dest="a"),
-                   make_option("-b", action="store_true", dest="b"),
-                   make_option("-c", "--callback", action="callback",
-                               callback=self.variable_args, dest="c")]
-        self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE,
-                                               option_list=options)
-
-    def variable_args(self, option, opt, value, parser):
-        self.assertTrue(value is None)
-        value = []
-        rargs = parser.rargs
-        while rargs:
-            arg = rargs[0]
-            if ((arg[:2] == "--" and len(arg) > 2) or
-                (arg[:1] == "-" and len(arg) > 1 and arg[1] != "-")):
-                break
-            else:
-                value.append(arg)
-                del rargs[0]
-        setattr(parser.values, option.dest, value)
-
-    def test_variable_args(self):
-        self.assertParseOK(["-a3", "-5", "--callback", "foo", "bar"],
-                           {'a': (3, -5), 'b': None, 'c': ["foo", "bar"]},
-                           [])
-
-    def test_consume_separator_stop_at_option(self):
-        self.assertParseOK(["-c", "37", "--", "xxx", "-b", "hello"],
-                           {'a': None,
-                            'b': True,
-                            'c': ["37", "--", "xxx"]},
-                           ["hello"])
-
-    def test_positional_arg_and_variable_args(self):
-        self.assertParseOK(["hello", "-c", "foo", "-", "bar"],
-                           {'a': None,
-                            'b': None,
-                            'c':["foo", "-", "bar"]},
-                           ["hello"])
-
-    def test_stop_at_option(self):
-        self.assertParseOK(["-c", "foo", "-b"],
-                           {'a': None, 'b': True, 'c': ["foo"]},
-                           [])
-
-    def test_stop_at_invalid_option(self):
-        self.assertParseFail(["-c", "3", "-5", "-a"], "no such option: -5")
-
-
-# -- Test conflict handling and parser.parse_args() --------------------
-
-class ConflictBase(BaseTest):
-    def setUp(self):
-        options = [make_option("-v", "--verbose", action="count",
-                               dest="verbose", help="increment verbosity")]
-        self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE,
-                                               option_list=options)
-
-    def show_version(self, option, opt, value, parser):
-        parser.values.show_version = 1
-
-class TestConflict(ConflictBase):
-    """Use the default conflict resolution for Optik 1.2: error."""
-    def assertTrueconflict_error(self, func):
-        err = self.assertRaises(
-            func, ("-v", "--version"), {'action' : "callback",
-                                        'callback' : self.show_version,
-                                        'help' : "show version"},
-            OptionConflictError,
-            "option -v/--version: conflicting option string(s): -v")
-
-        self.assertEqual(err.msg, "conflicting option string(s): -v")
-        self.assertEqual(err.option_id, "-v/--version")
-
-    def test_conflict_error(self):
-        self.assertTrueconflict_error(self.parser.add_option)
-
-    def test_conflict_error_group(self):
-        group = OptionGroup(self.parser, "Group 1")
-        self.assertTrueconflict_error(group.add_option)
-
-    def test_no_such_conflict_handler(self):
-        self.assertRaises(
-            self.parser.set_conflict_handler, ('foo',), None,
-            ValueError, "invalid conflict_resolution value 'foo'")
-
-
-class TestConflictResolve(ConflictBase):
-    def setUp(self):
-        ConflictBase.setUp(self)
-        self.parser.set_conflict_handler("resolve")
-        self.parser.add_option("-v", "--version", action="callback",
-                               callback=self.show_version, help="show version")
-
-    def test_conflict_resolve(self):
-        v_opt = self.parser.get_option("-v")
-        verbose_opt = self.parser.get_option("--verbose")
-        version_opt = self.parser.get_option("--version")
-
-        self.assertTrue(v_opt is version_opt)
-        self.assertTrue(v_opt is not verbose_opt)
-        self.assertEqual(v_opt._long_opts, ["--version"])
-        self.assertEqual(version_opt._short_opts, ["-v"])
-        self.assertEqual(version_opt._long_opts, ["--version"])
-        self.assertEqual(verbose_opt._short_opts, [])
-        self.assertEqual(verbose_opt._long_opts, ["--verbose"])
-
-    def test_conflict_resolve_help(self):
-        self.assertOutput(["-h"], """\
-Options:
-  --verbose      increment verbosity
-  -h, --help     show this help message and exit
-  -v, --version  show version
-""")
-
-    def test_conflict_resolve_short_opt(self):
-        self.assertParseOK(["-v"],
-                           {'verbose': None, 'show_version': 1},
-                           [])
-
-    def test_conflict_resolve_long_opt(self):
-        self.assertParseOK(["--verbose"],
-                           {'verbose': 1},
-                           [])
-
-    def test_conflict_resolve_long_opts(self):
-        self.assertParseOK(["--verbose", "--version"],
-                           {'verbose': 1, 'show_version': 1},
-                           [])
-
-class TestConflictOverride(BaseTest):
-    def setUp(self):
-        self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE)
-        self.parser.set_conflict_handler("resolve")
-        self.parser.add_option("-n", "--dry-run",
-                               action="store_true", dest="dry_run",
-                               help="don't do anything")
-        self.parser.add_option("--dry-run", "-n",
-                               action="store_const", const=42, dest="dry_run",
-                               help="dry run mode")
-
-    def test_conflict_override_opts(self):
-        opt = self.parser.get_option("--dry-run")
-        self.assertEqual(opt._short_opts, ["-n"])
-        self.assertEqual(opt._long_opts, ["--dry-run"])
-
-    def test_conflict_override_help(self):
-        self.assertOutput(["-h"], """\
-Options:
-  -h, --help     show this help message and exit
-  -n, --dry-run  dry run mode
-""")
-
-    def test_conflict_override_args(self):
-        self.assertParseOK(["-n"],
-                           {'dry_run': 42},
-                           [])
-
-# -- Other testing. ----------------------------------------------------
-
-_expected_help_basic = """\
-Usage: bar.py [options]
-
-Options:
-  -a APPLE           throw APPLEs at basket
-  -b NUM, --boo=NUM  shout "boo!" NUM times (in order to frighten away all the
-                     evil spirits that cause trouble and mayhem)
-  --foo=FOO          store FOO in the foo list for later fooing
-  -h, --help         show this help message and exit
-"""
-
-_expected_help_long_opts_first = """\
-Usage: bar.py [options]
-
-Options:
-  -a APPLE           throw APPLEs at basket
-  --boo=NUM, -b NUM  shout "boo!" NUM times (in order to frighten away all the
-                     evil spirits that cause trouble and mayhem)
-  --foo=FOO          store FOO in the foo list for later fooing
-  --help, -h         show this help message and exit
-"""
-
-_expected_help_title_formatter = """\
-Usage
-=====
-  bar.py [options]
-
-Options
-=======
--a APPLE           throw APPLEs at basket
---boo=NUM, -b NUM  shout "boo!" NUM times (in order to frighten away all the
-                   evil spirits that cause trouble and mayhem)
---foo=FOO          store FOO in the foo list for later fooing
---help, -h         show this help message and exit
-"""
-
-_expected_help_short_lines = """\
-Usage: bar.py [options]
-
-Options:
-  -a APPLE           throw APPLEs at basket
-  -b NUM, --boo=NUM  shout "boo!" NUM times (in order to
-                     frighten away all the evil spirits
-                     that cause trouble and mayhem)
-  --foo=FOO          store FOO in the foo list for later
-                     fooing
-  -h, --help         show this help message and exit
-"""
-
-class TestHelp(BaseTest):
-    def setUp(self):
-        self.parser = self.make_parser(80)
-
-    def make_parser(self, columns):
-        options = [
-            make_option("-a", type="string", dest='a',
-                        metavar="APPLE", help="throw APPLEs at basket"),
-            make_option("-b", "--boo", type="int", dest='boo',
-                        metavar="NUM",
-                        help=
-                        "shout \"boo!\" NUM times (in order to frighten away "
-                        "all the evil spirits that cause trouble and mayhem)"),
-            make_option("--foo", action="append", type="string", dest='foo',
-                        help="store FOO in the foo list for later fooing"),
-            ]
-
-        # We need to set COLUMNS for the OptionParser constructor, but
-        # we must restore its original value -- otherwise, this test
-        # screws things up for other tests when it's part of the Python
-        # test suite.
-        with test_support.EnvironmentVarGuard() as env:
-            env['COLUMNS'] = str(columns)
-            return InterceptingOptionParser(option_list=options)
-
-    def assertHelpEquals(self, expected_output):
-        if type(expected_output) is types.UnicodeType:
-            encoding = self.parser._get_encoding(sys.stdout)
-            expected_output = expected_output.encode(encoding, "replace")
-
-        save_argv = sys.argv[:]
-        try:
-            # Make optparse believe bar.py is being executed.
-            sys.argv[0] = os.path.join("foo", "bar.py")
-            self.assertOutput(["-h"], expected_output)
-        finally:
-            sys.argv[:] = save_argv
-
-    def test_help(self):
-        self.assertHelpEquals(_expected_help_basic)
-
-    def test_help_old_usage(self):
-        self.parser.set_usage("Usage: %prog [options]")
-        self.assertHelpEquals(_expected_help_basic)
-
-    def test_help_long_opts_first(self):
-        self.parser.formatter.short_first = 0
-        self.assertHelpEquals(_expected_help_long_opts_first)
-
-    def test_help_title_formatter(self):
-        with test_support.EnvironmentVarGuard() as env:
-            env["COLUMNS"] = "80"
-            self.parser.formatter = TitledHelpFormatter()
-            self.assertHelpEquals(_expected_help_title_formatter)
-
-    def test_wrap_columns(self):
-        # Ensure that wrapping respects $COLUMNS environment variable.
-        # Need to reconstruct the parser, since that's the only time
-        # we look at $COLUMNS.
-        self.parser = self.make_parser(60)
-        self.assertHelpEquals(_expected_help_short_lines)
-
-    def test_help_unicode(self):
-        self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE)
-        self.parser.add_option("-a", action="store_true", help=u"ol\u00E9!")
-        expect = u"""\
-Options:
-  -h, --help  show this help message and exit
-  -a          ol\u00E9!
-"""
-        self.assertHelpEquals(expect)
-
-    def test_help_unicode_description(self):
-        self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE,
-                                               description=u"ol\u00E9!")
-        expect = u"""\
-ol\u00E9!
-
-Options:
-  -h, --help  show this help message and exit
-"""
-        self.assertHelpEquals(expect)
-
-    def test_help_description_groups(self):
-        self.parser.set_description(
-            "This is the program description for %prog.  %prog has "
-            "an option group as well as single options.")
-
-        group = OptionGroup(
-            self.parser, "Dangerous Options",
-            "Caution: use of these options is at your own risk.  "
-            "It is believed that some of them bite.")
-        group.add_option("-g", action="store_true", help="Group option.")
-        self.parser.add_option_group(group)
-
-        expect = """\
-Usage: bar.py [options]
-
-This is the program description for bar.py.  bar.py has an option group as
-well as single options.
-
-Options:
-  -a APPLE           throw APPLEs at basket
-  -b NUM, --boo=NUM  shout "boo!" NUM times (in order to frighten away all the
-                     evil spirits that cause trouble and mayhem)
-  --foo=FOO          store FOO in the foo list for later fooing
-  -h, --help         show this help message and exit
-
-  Dangerous Options:
-    Caution: use of these options is at your own risk.  It is believed
-    that some of them bite.
-
-    -g               Group option.
-"""
-
-        self.assertHelpEquals(expect)
-
-        self.parser.epilog = "Please report bugs to /dev/null."
-        self.assertHelpEquals(expect + "\nPlease report bugs to /dev/null.\n")
-
-
-class TestMatchAbbrev(BaseTest):
-    def test_match_abbrev(self):
-        self.assertEqual(_match_abbrev("--f",
-                                       {"--foz": None,
-                                        "--foo": None,
-                                        "--fie": None,
-                                        "--f": None}),
-                         "--f")
-
-    def test_match_abbrev_error(self):
-        s = "--f"
-        wordmap = {"--foz": None, "--foo": None, "--fie": None}
-        self.assertRaises(
-            _match_abbrev, (s, wordmap), None,
-            BadOptionError, "ambiguous option: --f (--fie, --foo, --foz?)")
-
-
-class TestParseNumber(BaseTest):
-    def setUp(self):
-        self.parser = InterceptingOptionParser()
-        self.parser.add_option("-n", type=int)
-        self.parser.add_option("-l", type=long)
-
-    def test_parse_num_fail(self):
-        self.assertRaises(
-            _parse_num, ("", int), {},
-            ValueError,
-            re.compile(r"invalid literal for int().*: '?'?"))
-        self.assertRaises(
-            _parse_num, ("0xOoops", long), {},
-            ValueError,
-            re.compile(r"invalid literal for long().*: '?0xOoops'?"))
-
-    def test_parse_num_ok(self):
-        self.assertEqual(_parse_num("0", int), 0)
-        self.assertEqual(_parse_num("0x10", int), 16)
-        self.assertEqual(_parse_num("0XA", long), 10L)
-        self.assertEqual(_parse_num("010", long), 8L)
-        self.assertEqual(_parse_num("0b11", int), 3)
-        self.assertEqual(_parse_num("0b", long), 0L)
-
-    def test_numeric_options(self):
-        self.assertParseOK(["-n", "42", "-l", "0x20"],
-                           { "n": 42, "l": 0x20 }, [])
-        self.assertParseOK(["-n", "0b0101", "-l010"],
-                           { "n": 5, "l": 8 }, [])
-        self.assertParseFail(["-n008"],
-                             "option -n: invalid integer value: '008'")
-        self.assertParseFail(["-l0b0123"],
-                             "option -l: invalid long integer value: '0b0123'")
-        self.assertParseFail(["-l", "0x12x"],
-                             "option -l: invalid long integer value: '0x12x'")
-
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_os.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_os.py
deleted file mode 100644
index 36eeca7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_os.py
+++ /dev/null
@@ -1,824 +0,0 @@
-# As a test suite for the os module, this is woefully inadequate, but this
-# does add tests for a few functions which have been determined to be more
-# portable than they had been thought to be.
-
-import os
-import errno
-import unittest
-import warnings
-import sys
-import signal
-import subprocess
-import time
-from test import test_support
-import mmap
-import uuid
-
-warnings.filterwarnings("ignore", "tempnam", RuntimeWarning, __name__)
-warnings.filterwarnings("ignore", "tmpnam", RuntimeWarning, __name__)
-
-# Tests creating TESTFN
-class FileTests(unittest.TestCase):
-    def setUp(self):
-        if os.path.exists(test_support.TESTFN):
-            os.unlink(test_support.TESTFN)
-    tearDown = setUp
-
-    def test_access(self):
-        f = os.open(test_support.TESTFN, os.O_CREAT|os.O_RDWR)
-        os.close(f)
-        self.assertTrue(os.access(test_support.TESTFN, os.W_OK))
-
-    def test_closerange(self):
-        first = os.open(test_support.TESTFN, os.O_CREAT|os.O_RDWR)
-        # We must allocate two consecutive file descriptors, otherwise
-        # it will mess up other file descriptors (perhaps even the three
-        # standard ones).
-        second = os.dup(first)
-        try:
-            retries = 0
-            while second != first + 1:
-                os.close(first)
-                retries += 1
-                if retries > 10:
-                    # XXX test skipped
-                    self.skipTest("couldn't allocate two consecutive fds")
-                first, second = second, os.dup(second)
-        finally:
-            os.close(second)
-        # close a fd that is open, and one that isn't
-        os.closerange(first, first + 2)
-        self.assertRaises(OSError, os.write, first, "a")
-
-    @test_support.cpython_only
-    def test_rename(self):
-        path = unicode(test_support.TESTFN)
-        old = sys.getrefcount(path)
-        self.assertRaises(TypeError, os.rename, path, 0)
-        new = sys.getrefcount(path)
-        self.assertEqual(old, new)
-
-
-class TemporaryFileTests(unittest.TestCase):
-    def setUp(self):
-        self.files = []
-        os.mkdir(test_support.TESTFN)
-
-    def tearDown(self):
-        for name in self.files:
-            os.unlink(name)
-        os.rmdir(test_support.TESTFN)
-
-    def check_tempfile(self, name):
-        # make sure it doesn't already exist:
-        self.assertFalse(os.path.exists(name),
-                    "file already exists for temporary file")
-        # make sure we can create the file
-        open(name, "w")
-        self.files.append(name)
-
-    def test_tempnam(self):
-        if not hasattr(os, "tempnam"):
-            return
-        with warnings.catch_warnings():
-            warnings.filterwarnings("ignore", "tempnam", RuntimeWarning,
-                                    r"test_os$")
-            warnings.filterwarnings("ignore", "tempnam", DeprecationWarning)
-            self.check_tempfile(os.tempnam())
-
-            name = os.tempnam(test_support.TESTFN)
-            self.check_tempfile(name)
-
-            name = os.tempnam(test_support.TESTFN, "pfx")
-            self.assertTrue(os.path.basename(name)[:3] == "pfx")
-            self.check_tempfile(name)
-
-    def test_tmpfile(self):
-        if not hasattr(os, "tmpfile"):
-            return
-        # As with test_tmpnam() below, the Windows implementation of tmpfile()
-        # attempts to create a file in the root directory of the current drive.
-        # On Vista and Server 2008, this test will always fail for normal users
-        # as writing to the root directory requires elevated privileges.  With
-        # XP and below, the semantics of tmpfile() are the same, but the user
-        # running the test is more likely to have administrative privileges on
-        # their account already.  If that's the case, then os.tmpfile() should
-        # work.  In order to make this test as useful as possible, rather than
-        # trying to detect Windows versions or whether or not the user has the
-        # right permissions, just try and create a file in the root directory
-        # and see if it raises a 'Permission denied' OSError.  If it does, then
-        # test that a subsequent call to os.tmpfile() raises the same error. If
-        # it doesn't, assume we're on XP or below and the user running the test
-        # has administrative privileges, and proceed with the test as normal.
-        with warnings.catch_warnings():
-            warnings.filterwarnings("ignore", "tmpfile", DeprecationWarning)
-
-            if sys.platform == 'win32':
-                name = '\\python_test_os_test_tmpfile.txt'
-                if os.path.exists(name):
-                    os.remove(name)
-                try:
-                    fp = open(name, 'w')
-                except IOError, first:
-                    # open() failed, assert tmpfile() fails in the same way.
-                    # Although open() raises an IOError and os.tmpfile() raises an
-                    # OSError(), 'args' will be (13, 'Permission denied') in both
-                    # cases.
-                    try:
-                        fp = os.tmpfile()
-                    except OSError, second:
-                        self.assertEqual(first.args, second.args)
-                    else:
-                        self.fail("expected os.tmpfile() to raise OSError")
-                    return
-                else:
-                    # open() worked, therefore, tmpfile() should work.  Close our
-                    # dummy file and proceed with the test as normal.
-                    fp.close()
-                    os.remove(name)
-
-            fp = os.tmpfile()
-            fp.write("foobar")
-            fp.seek(0,0)
-            s = fp.read()
-            fp.close()
-            self.assertTrue(s == "foobar")
-
-    def test_tmpnam(self):
-        if not hasattr(os, "tmpnam"):
-            return
-        with warnings.catch_warnings():
-            warnings.filterwarnings("ignore", "tmpnam", RuntimeWarning,
-                                    r"test_os$")
-            warnings.filterwarnings("ignore", "tmpnam", DeprecationWarning)
-
-            name = os.tmpnam()
-            if sys.platform in ("win32",):
-                # The Windows tmpnam() seems useless.  From the MS docs:
-                #
-                #     The character string that tmpnam creates consists of
-                #     the path prefix, defined by the entry P_tmpdir in the
-                #     file STDIO.H, followed by a sequence consisting of the
-                #     digit characters '0' through '9'; the numerical value
-                #     of this string is in the range 1 - 65,535.  Changing the
-                #     definitions of L_tmpnam or P_tmpdir in STDIO.H does not
-                #     change the operation of tmpnam.
-                #
-                # The really bizarre part is that, at least under MSVC6,
-                # P_tmpdir is "\\".  That is, the path returned refers to
-                # the root of the current drive.  That's a terrible place to
-                # put temp files, and, depending on privileges, the user
-                # may not even be able to open a file in the root directory.
-                self.assertFalse(os.path.exists(name),
-                            "file already exists for temporary file")
-            else:
-                self.check_tempfile(name)
-
-# Test attributes on return values from os.*stat* family.
-class StatAttributeTests(unittest.TestCase):
-    def setUp(self):
-        os.mkdir(test_support.TESTFN)
-        self.fname = os.path.join(test_support.TESTFN, "f1")
-        f = open(self.fname, 'wb')
-        f.write("ABC")
-        f.close()
-
-    def tearDown(self):
-        os.unlink(self.fname)
-        os.rmdir(test_support.TESTFN)
-
-    def test_stat_attributes(self):
-        if not hasattr(os, "stat"):
-            return
-
-        import stat
-        result = os.stat(self.fname)
-
-        # Make sure direct access works
-        self.assertEqual(result[stat.ST_SIZE], 3)
-        self.assertEqual(result.st_size, 3)
-
-        # Make sure all the attributes are there
-        members = dir(result)
-        for name in dir(stat):
-            if name[:3] == 'ST_':
-                attr = name.lower()
-                if name.endswith("TIME"):
-                    def trunc(x): return int(x)
-                else:
-                    def trunc(x): return x
-                self.assertEqual(trunc(getattr(result, attr)),
-                                 result[getattr(stat, name)])
-                self.assertIn(attr, members)
-
-        try:
-            result[200]
-            self.fail("No exception thrown")
-        except IndexError:
-            pass
-
-        # Make sure that assignment fails
-        try:
-            result.st_mode = 1
-            self.fail("No exception thrown")
-        except (AttributeError, TypeError):
-            pass
-
-        try:
-            result.st_rdev = 1
-            self.fail("No exception thrown")
-        except (AttributeError, TypeError):
-            pass
-
-        try:
-            result.parrot = 1
-            self.fail("No exception thrown")
-        except AttributeError:
-            pass
-
-        # Use the stat_result constructor with a too-short tuple.
-        try:
-            result2 = os.stat_result((10,))
-            self.fail("No exception thrown")
-        except TypeError:
-            pass
-
-        # Use the constructor with a too-long tuple.
-        try:
-            result2 = os.stat_result((0,1,2,3,4,5,6,7,8,9,10,11,12,13,14))
-        except TypeError:
-            pass
-
-
-    def test_statvfs_attributes(self):
-        if not hasattr(os, "statvfs"):
-            return
-
-        try:
-            result = os.statvfs(self.fname)
-        except OSError, e:
-            # On AtheOS, glibc always returns ENOSYS
-            if e.errno == errno.ENOSYS:
-                return
-
-        # Make sure direct access works
-        self.assertEqual(result.f_bfree, result[3])
-
-        # Make sure all the attributes are there.
-        members = ('bsize', 'frsize', 'blocks', 'bfree', 'bavail', 'files',
-                    'ffree', 'favail', 'flag', 'namemax')
-        for value, member in enumerate(members):
-            self.assertEqual(getattr(result, 'f_' + member), result[value])
-
-        # Make sure that assignment really fails
-        try:
-            result.f_bfree = 1
-            self.fail("No exception thrown")
-        except TypeError:
-            pass
-
-        try:
-            result.parrot = 1
-            self.fail("No exception thrown")
-        except AttributeError:
-            pass
-
-        # Use the constructor with a too-short tuple.
-        try:
-            result2 = os.statvfs_result((10,))
-            self.fail("No exception thrown")
-        except TypeError:
-            pass
-
-        # Use the constructor with a too-long tuple.
-        try:
-            result2 = os.statvfs_result((0,1,2,3,4,5,6,7,8,9,10,11,12,13,14))
-        except TypeError:
-            pass
-
-    def test_utime_dir(self):
-        delta = 1000000
-        st = os.stat(test_support.TESTFN)
-        # round to int, because some systems may support sub-second
-        # time stamps in stat, but not in utime.
-        os.utime(test_support.TESTFN, (st.st_atime, int(st.st_mtime-delta)))
-        st2 = os.stat(test_support.TESTFN)
-        self.assertEqual(st2.st_mtime, int(st.st_mtime-delta))
-
-    # Restrict test to Win32, since there is no guarantee other
-    # systems support centiseconds
-    if sys.platform == 'win32':
-        def get_file_system(path):
-            root = os.path.splitdrive(os.path.abspath(path))[0] + '\\'
-            import ctypes
-            kernel32 = ctypes.windll.kernel32
-            buf = ctypes.create_string_buffer("", 100)
-            if kernel32.GetVolumeInformationA(root, None, 0, None, None, None, buf, len(buf)):
-                return buf.value
-
-        if get_file_system(test_support.TESTFN) == "NTFS":
-            def test_1565150(self):
-                t1 = 1159195039.25
-                os.utime(self.fname, (t1, t1))
-                self.assertEqual(os.stat(self.fname).st_mtime, t1)
-
-            def test_large_time(self):
-                t1 = 5000000000 # some day in 2128
-                os.utime(self.fname, (t1, t1))
-                self.assertEqual(os.stat(self.fname).st_mtime, t1)
-
-        def test_1686475(self):
-            # Verify that an open file can be stat'ed
-            try:
-                os.stat(r"c:\pagefile.sys")
-            except WindowsError, e:
-                if e.errno == 2: # file does not exist; cannot run test
-                    return
-                self.fail("Could not stat pagefile.sys")
-
-from test import mapping_tests
-
-class EnvironTests(mapping_tests.BasicTestMappingProtocol):
-    """check that os.environ object conform to mapping protocol"""
-    type2test = None
-    def _reference(self):
-        return {"KEY1":"VALUE1", "KEY2":"VALUE2", "KEY3":"VALUE3"}
-    def _empty_mapping(self):
-        os.environ.clear()
-        return os.environ
-    def setUp(self):
-        self.__save = dict(os.environ)
-        os.environ.clear()
-    def tearDown(self):
-        os.environ.clear()
-        os.environ.update(self.__save)
-
-    # Bug 1110478
-    def test_update2(self):
-        if os.path.exists("/bin/sh"):
-            os.environ.update(HELLO="World")
-            with os.popen("/bin/sh -c 'echo $HELLO'") as popen:
-                value = popen.read().strip()
-                self.assertEqual(value, "World")
-
-class WalkTests(unittest.TestCase):
-    """Tests for os.walk()."""
-
-    def test_traversal(self):
-        import os
-        from os.path import join
-
-        # Build:
-        #     TESTFN/
-        #       TEST1/              a file kid and two directory kids
-        #         tmp1
-        #         SUB1/             a file kid and a directory kid
-        #           tmp2
-        #           SUB11/          no kids
-        #         SUB2/             a file kid and a dirsymlink kid
-        #           tmp3
-        #           link/           a symlink to TESTFN.2
-        #       TEST2/
-        #         tmp4              a lone file
-        walk_path = join(test_support.TESTFN, "TEST1")
-        sub1_path = join(walk_path, "SUB1")
-        sub11_path = join(sub1_path, "SUB11")
-        sub2_path = join(walk_path, "SUB2")
-        tmp1_path = join(walk_path, "tmp1")
-        tmp2_path = join(sub1_path, "tmp2")
-        tmp3_path = join(sub2_path, "tmp3")
-        link_path = join(sub2_path, "link")
-        t2_path = join(test_support.TESTFN, "TEST2")
-        tmp4_path = join(test_support.TESTFN, "TEST2", "tmp4")
-
-        # Create stuff.
-        os.makedirs(sub11_path)
-        os.makedirs(sub2_path)
-        os.makedirs(t2_path)
-        for path in tmp1_path, tmp2_path, tmp3_path, tmp4_path:
-            f = file(path, "w")
-            f.write("I'm " + path + " and proud of it.  Blame test_os.\n")
-            f.close()
-        if hasattr(os, "symlink"):
-            os.symlink(os.path.abspath(t2_path), link_path)
-            sub2_tree = (sub2_path, ["link"], ["tmp3"])
-        else:
-            sub2_tree = (sub2_path, [], ["tmp3"])
-
-        # Walk top-down.
-        all = list(os.walk(walk_path))
-        self.assertEqual(len(all), 4)
-        # We can't know which order SUB1 and SUB2 will appear in.
-        # Not flipped:  TESTFN, SUB1, SUB11, SUB2
-        #     flipped:  TESTFN, SUB2, SUB1, SUB11
-        flipped = all[0][1][0] != "SUB1"
-        all[0][1].sort()
-        self.assertEqual(all[0], (walk_path, ["SUB1", "SUB2"], ["tmp1"]))
-        self.assertEqual(all[1 + flipped], (sub1_path, ["SUB11"], ["tmp2"]))
-        self.assertEqual(all[2 + flipped], (sub11_path, [], []))
-        self.assertEqual(all[3 - 2 * flipped], sub2_tree)
-
-        # Prune the search.
-        all = []
-        for root, dirs, files in os.walk(walk_path):
-            all.append((root, dirs, files))
-            # Don't descend into SUB1.
-            if 'SUB1' in dirs:
-                # Note that this also mutates the dirs we appended to all!
-                dirs.remove('SUB1')
-        self.assertEqual(len(all), 2)
-        self.assertEqual(all[0], (walk_path, ["SUB2"], ["tmp1"]))
-        self.assertEqual(all[1], sub2_tree)
-
-        # Walk bottom-up.
-        all = list(os.walk(walk_path, topdown=False))
-        self.assertEqual(len(all), 4)
-        # We can't know which order SUB1 and SUB2 will appear in.
-        # Not flipped:  SUB11, SUB1, SUB2, TESTFN
-        #     flipped:  SUB2, SUB11, SUB1, TESTFN
-        flipped = all[3][1][0] != "SUB1"
-        all[3][1].sort()
-        self.assertEqual(all[3], (walk_path, ["SUB1", "SUB2"], ["tmp1"]))
-        self.assertEqual(all[flipped], (sub11_path, [], []))
-        self.assertEqual(all[flipped + 1], (sub1_path, ["SUB11"], ["tmp2"]))
-        self.assertEqual(all[2 - 2 * flipped], sub2_tree)
-
-        if hasattr(os, "symlink"):
-            # Walk, following symlinks.
-            for root, dirs, files in os.walk(walk_path, followlinks=True):
-                if root == link_path:
-                    self.assertEqual(dirs, [])
-                    self.assertEqual(files, ["tmp4"])
-                    break
-            else:
-                self.fail("Didn't follow symlink with followlinks=True")
-
-    def tearDown(self):
-        # Tear everything down.  This is a decent use for bottom-up on
-        # Windows, which doesn't have a recursive delete command.  The
-        # (not so) subtlety is that rmdir will fail unless the dir's
-        # kids are removed first, so bottom up is essential.
-        for root, dirs, files in os.walk(test_support.TESTFN, topdown=False):
-            for name in files:
-                os.remove(os.path.join(root, name))
-            for name in dirs:
-                dirname = os.path.join(root, name)
-                if not os.path.islink(dirname):
-                    os.rmdir(dirname)
-                else:
-                    os.remove(dirname)
-        os.rmdir(test_support.TESTFN)
-
-class MakedirTests (unittest.TestCase):
-    def setUp(self):
-        os.mkdir(test_support.TESTFN)
-
-    def test_makedir(self):
-        base = test_support.TESTFN
-        path = os.path.join(base, 'dir1', 'dir2', 'dir3')
-        os.makedirs(path)             # Should work
-        path = os.path.join(base, 'dir1', 'dir2', 'dir3', 'dir4')
-        os.makedirs(path)
-
-        # Try paths with a '.' in them
-        self.assertRaises(OSError, os.makedirs, os.curdir)
-        path = os.path.join(base, 'dir1', 'dir2', 'dir3', 'dir4', 'dir5', os.curdir)
-        os.makedirs(path)
-        path = os.path.join(base, 'dir1', os.curdir, 'dir2', 'dir3', 'dir4',
-                            'dir5', 'dir6')
-        os.makedirs(path)
-
-
-
-
-    def tearDown(self):
-        path = os.path.join(test_support.TESTFN, 'dir1', 'dir2', 'dir3',
-                            'dir4', 'dir5', 'dir6')
-        # If the tests failed, the bottom-most directory ('../dir6')
-        # may not have been created, so we look for the outermost directory
-        # that exists.
-        while not os.path.exists(path) and path != test_support.TESTFN:
-            path = os.path.dirname(path)
-
-        os.removedirs(path)
-
-class DevNullTests (unittest.TestCase):
-    def test_devnull(self):
-        f = file(os.devnull, 'w')
-        f.write('hello')
-        f.close()
-        f = file(os.devnull, 'r')
-        self.assertEqual(f.read(), '')
-        f.close()
-
-class URandomTests (unittest.TestCase):
-    def test_urandom(self):
-        try:
-            self.assertEqual(len(os.urandom(1)), 1)
-            self.assertEqual(len(os.urandom(10)), 10)
-            self.assertEqual(len(os.urandom(100)), 100)
-            self.assertEqual(len(os.urandom(1000)), 1000)
-            # see http://bugs.python.org/issue3708
-            self.assertRaises(TypeError, os.urandom, 0.9)
-            self.assertRaises(TypeError, os.urandom, 1.1)
-            self.assertRaises(TypeError, os.urandom, 2.0)
-        except NotImplementedError:
-            pass
-
-    def test_execvpe_with_bad_arglist(self):
-        self.assertRaises(ValueError, os.execvpe, 'notepad', [], None)
-
-class Win32ErrorTests(unittest.TestCase):
-    def test_rename(self):
-        self.assertRaises(WindowsError, os.rename, test_support.TESTFN, test_support.TESTFN+".bak")
-
-    def test_remove(self):
-        self.assertRaises(WindowsError, os.remove, test_support.TESTFN)
-
-    def test_chdir(self):
-        self.assertRaises(WindowsError, os.chdir, test_support.TESTFN)
-
-    def test_mkdir(self):
-        f = open(test_support.TESTFN, "w")
-        try:
-            self.assertRaises(WindowsError, os.mkdir, test_support.TESTFN)
-        finally:
-            f.close()
-            os.unlink(test_support.TESTFN)
-
-    def test_utime(self):
-        self.assertRaises(WindowsError, os.utime, test_support.TESTFN, None)
-
-    def test_chmod(self):
-        self.assertRaises(WindowsError, os.chmod, test_support.TESTFN, 0)
-
-class TestInvalidFD(unittest.TestCase):
-    singles = ["fchdir", "fdopen", "dup", "fdatasync", "fstat",
-               "fstatvfs", "fsync", "tcgetpgrp", "ttyname"]
-    #singles.append("close")
-    #We omit close because it doesn'r raise an exception on some platforms
-    def get_single(f):
-        def helper(self):
-            if  hasattr(os, f):
-                self.check(getattr(os, f))
-        return helper
-    for f in singles:
-        locals()["test_"+f] = get_single(f)
-
-    def check(self, f, *args):
-        try:
-            f(test_support.make_bad_fd(), *args)
-        except OSError as e:
-            self.assertEqual(e.errno, errno.EBADF)
-        else:
-            self.fail("%r didn't raise a OSError with a bad file descriptor"
-                      % f)
-
-    def test_isatty(self):
-        if hasattr(os, "isatty"):
-            self.assertEqual(os.isatty(test_support.make_bad_fd()), False)
-
-    def test_closerange(self):
-        if hasattr(os, "closerange"):
-            fd = test_support.make_bad_fd()
-            # Make sure none of the descriptors we are about to close are
-            # currently valid (issue 6542).
-            for i in range(10):
-                try: os.fstat(fd+i)
-                except OSError:
-                    pass
-                else:
-                    break
-            if i < 2:
-                raise unittest.SkipTest(
-                    "Unable to acquire a range of invalid file descriptors")
-            self.assertEqual(os.closerange(fd, fd + i-1), None)
-
-    def test_dup2(self):
-        if hasattr(os, "dup2"):
-            self.check(os.dup2, 20)
-
-    def test_fchmod(self):
-        if hasattr(os, "fchmod"):
-            self.check(os.fchmod, 0)
-
-    def test_fchown(self):
-        if hasattr(os, "fchown"):
-            self.check(os.fchown, -1, -1)
-
-    def test_fpathconf(self):
-        if hasattr(os, "fpathconf"):
-            self.check(os.fpathconf, "PC_NAME_MAX")
-
-    def test_ftruncate(self):
-        if hasattr(os, "ftruncate"):
-            self.check(os.ftruncate, 0)
-
-    def test_lseek(self):
-        if hasattr(os, "lseek"):
-            self.check(os.lseek, 0, 0)
-
-    def test_read(self):
-        if hasattr(os, "read"):
-            self.check(os.read, 1)
-
-    def test_tcsetpgrpt(self):
-        if hasattr(os, "tcsetpgrp"):
-            self.check(os.tcsetpgrp, 0)
-
-    def test_write(self):
-        if hasattr(os, "write"):
-            self.check(os.write, " ")
-
-if sys.platform != 'win32':
-    class Win32ErrorTests(unittest.TestCase):
-        pass
-
-    class PosixUidGidTests(unittest.TestCase):
-        if hasattr(os, 'setuid'):
-            def test_setuid(self):
-                if os.getuid() != 0:
-                    self.assertRaises(os.error, os.setuid, 0)
-                self.assertRaises(OverflowError, os.setuid, 1<<32)
-
-        if hasattr(os, 'setgid'):
-            def test_setgid(self):
-                if os.getuid() != 0:
-                    self.assertRaises(os.error, os.setgid, 0)
-                self.assertRaises(OverflowError, os.setgid, 1<<32)
-
-        if hasattr(os, 'seteuid'):
-            def test_seteuid(self):
-                if os.getuid() != 0:
-                    self.assertRaises(os.error, os.seteuid, 0)
-                self.assertRaises(OverflowError, os.seteuid, 1<<32)
-
-        if hasattr(os, 'setegid'):
-            def test_setegid(self):
-                if os.getuid() != 0:
-                    self.assertRaises(os.error, os.setegid, 0)
-                self.assertRaises(OverflowError, os.setegid, 1<<32)
-
-        if hasattr(os, 'setreuid'):
-            def test_setreuid(self):
-                if os.getuid() != 0:
-                    self.assertRaises(os.error, os.setreuid, 0, 0)
-                self.assertRaises(OverflowError, os.setreuid, 1<<32, 0)
-                self.assertRaises(OverflowError, os.setreuid, 0, 1<<32)
-
-            def test_setreuid_neg1(self):
-                # Needs to accept -1.  We run this in a subprocess to avoid
-                # altering the test runner's process state (issue8045).
-                subprocess.check_call([
-                        sys.executable, '-c',
-                        'import os,sys;os.setreuid(-1,-1);sys.exit(0)'])
-
-        if hasattr(os, 'setregid'):
-            def test_setregid(self):
-                if os.getuid() != 0:
-                    self.assertRaises(os.error, os.setregid, 0, 0)
-                self.assertRaises(OverflowError, os.setregid, 1<<32, 0)
-                self.assertRaises(OverflowError, os.setregid, 0, 1<<32)
-
-            def test_setregid_neg1(self):
-                # Needs to accept -1.  We run this in a subprocess to avoid
-                # altering the test runner's process state (issue8045).
-                subprocess.check_call([
-                        sys.executable, '-c',
-                        'import os,sys;os.setregid(-1,-1);sys.exit(0)'])
-else:
-    class PosixUidGidTests(unittest.TestCase):
-        pass
-
-@unittest.skipUnless(sys.platform == "win32", "Win32 specific tests")
-class Win32KillTests(unittest.TestCase):
-    def _kill(self, sig):
-        # Start sys.executable as a subprocess and communicate from the
-        # subprocess to the parent that the interpreter is ready. When it
-        # becomes ready, send *sig* via os.kill to the subprocess and check
-        # that the return code is equal to *sig*.
-        import ctypes
-        from ctypes import wintypes
-        import msvcrt
-
-        # Since we can't access the contents of the process' stdout until the
-        # process has exited, use PeekNamedPipe to see what's inside stdout
-        # without waiting. This is done so we can tell that the interpreter
-        # is started and running at a point where it could handle a signal.
-        PeekNamedPipe = ctypes.windll.kernel32.PeekNamedPipe
-        PeekNamedPipe.restype = wintypes.BOOL
-        PeekNamedPipe.argtypes = (wintypes.HANDLE, # Pipe handle
-                                  ctypes.POINTER(ctypes.c_char), # stdout buf
-                                  wintypes.DWORD, # Buffer size
-                                  ctypes.POINTER(wintypes.DWORD), # bytes read
-                                  ctypes.POINTER(wintypes.DWORD), # bytes avail
-                                  ctypes.POINTER(wintypes.DWORD)) # bytes left
-        msg = "running"
-        proc = subprocess.Popen([sys.executable, "-c",
-                                 "import sys;"
-                                 "sys.stdout.write('{}');"
-                                 "sys.stdout.flush();"
-                                 "input()".format(msg)],
-                                stdout=subprocess.PIPE,
-                                stderr=subprocess.PIPE,
-                                stdin=subprocess.PIPE)
-        self.addCleanup(proc.stdout.close)
-        self.addCleanup(proc.stderr.close)
-        self.addCleanup(proc.stdin.close)
-
-        count, max = 0, 100
-        while count < max and proc.poll() is None:
-            # Create a string buffer to store the result of stdout from the pipe
-            buf = ctypes.create_string_buffer(len(msg))
-            # Obtain the text currently in proc.stdout
-            # Bytes read/avail/left are left as NULL and unused
-            rslt = PeekNamedPipe(msvcrt.get_osfhandle(proc.stdout.fileno()),
-                                 buf, ctypes.sizeof(buf), None, None, None)
-            self.assertNotEqual(rslt, 0, "PeekNamedPipe failed")
-            if buf.value:
-                self.assertEqual(msg, buf.value)
-                break
-            time.sleep(0.1)
-            count += 1
-        else:
-            self.fail("Did not receive communication from the subprocess")
-
-        os.kill(proc.pid, sig)
-        self.assertEqual(proc.wait(), sig)
-
-    def test_kill_sigterm(self):
-        # SIGTERM doesn't mean anything special, but make sure it works
-        self._kill(signal.SIGTERM)
-
-    def test_kill_int(self):
-        # os.kill on Windows can take an int which gets set as the exit code
-        self._kill(100)
-
-    def _kill_with_event(self, event, name):
-        tagname = "test_os_%s" % uuid.uuid1()
-        m = mmap.mmap(-1, 1, tagname)
-        m[0] = '0'
-        # Run a script which has console control handling enabled.
-        proc = subprocess.Popen([sys.executable,
-                   os.path.join(os.path.dirname(__file__),
-                                "win_console_handler.py"), tagname],
-                   creationflags=subprocess.CREATE_NEW_PROCESS_GROUP)
-        # Let the interpreter startup before we send signals. See #3137.
-        count, max = 0, 20
-        while count < max and proc.poll() is None:
-            if m[0] == '1':
-                break
-            time.sleep(0.5)
-            count += 1
-        else:
-            self.fail("Subprocess didn't finish initialization")
-        os.kill(proc.pid, event)
-        # proc.send_signal(event) could also be done here.
-        # Allow time for the signal to be passed and the process to exit.
-        time.sleep(0.5)
-        if not proc.poll():
-            # Forcefully kill the process if we weren't able to signal it.
-            os.kill(proc.pid, signal.SIGINT)
-            self.fail("subprocess did not stop on {}".format(name))
-
-    @unittest.skip("subprocesses aren't inheriting CTRL+C property")
-    def test_CTRL_C_EVENT(self):
-        from ctypes import wintypes
-        import ctypes
-
-        # Make a NULL value by creating a pointer with no argument.
-        NULL = ctypes.POINTER(ctypes.c_int)()
-        SetConsoleCtrlHandler = ctypes.windll.kernel32.SetConsoleCtrlHandler
-        SetConsoleCtrlHandler.argtypes = (ctypes.POINTER(ctypes.c_int),
-                                          wintypes.BOOL)
-        SetConsoleCtrlHandler.restype = wintypes.BOOL
-
-        # Calling this with NULL and FALSE causes the calling process to
-        # handle CTRL+C, rather than ignore it. This property is inherited
-        # by subprocesses.
-        SetConsoleCtrlHandler(NULL, 0)
-
-        self._kill_with_event(signal.CTRL_C_EVENT, "CTRL_C_EVENT")
-
-    def test_CTRL_BREAK_EVENT(self):
-        self._kill_with_event(signal.CTRL_BREAK_EVENT, "CTRL_BREAK_EVENT")
-
-
-def test_main():
-    test_support.run_unittest(
-        FileTests,
-        TemporaryFileTests,
-        StatAttributeTests,
-        EnvironTests,
-        WalkTests,
-        MakedirTests,
-        DevNullTests,
-        URandomTests,
-        Win32ErrorTests,
-        TestInvalidFD,
-        PosixUidGidTests,
-        Win32KillTests
-    )
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ossaudiodev.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ossaudiodev.py
deleted file mode 100644
index 1574103..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ossaudiodev.py
+++ /dev/null
@@ -1,174 +0,0 @@
-from test import test_support
-test_support.requires('audio')
-
-from test.test_support import findfile
-
-ossaudiodev = test_support.import_module('ossaudiodev')
-
-import errno
-import sys
-import sunau
-import time
-import audioop
-import unittest
-
-# Arggh, AFMT_S16_NE not defined on all platforms -- seems to be a
-# fairly recent addition to OSS.
-try:
-    from ossaudiodev import AFMT_S16_NE
-except ImportError:
-    if sys.byteorder == "little":
-        AFMT_S16_NE = ossaudiodev.AFMT_S16_LE
-    else:
-        AFMT_S16_NE = ossaudiodev.AFMT_S16_BE
-
-
-def read_sound_file(path):
-    with open(path, 'rb') as fp:
-        au = sunau.open(fp)
-        rate = au.getframerate()
-        nchannels = au.getnchannels()
-        encoding = au._encoding
-        fp.seek(0)
-        data = fp.read()
-
-    if encoding != sunau.AUDIO_FILE_ENCODING_MULAW_8:
-        raise RuntimeError("Expect .au file with 8-bit mu-law samples")
-
-    # Convert the data to 16-bit signed.
-    data = audioop.ulaw2lin(data, 2)
-    return (data, rate, 16, nchannels)
-
-class OSSAudioDevTests(unittest.TestCase):
-
-    def play_sound_file(self, data, rate, ssize, nchannels):
-        try:
-            dsp = ossaudiodev.open('w')
-        except IOError, msg:
-            if msg.args[0] in (errno.EACCES, errno.ENOENT,
-                               errno.ENODEV, errno.EBUSY):
-                raise unittest.SkipTest(msg)
-            raise
-
-        # at least check that these methods can be invoked
-        dsp.bufsize()
-        dsp.obufcount()
-        dsp.obuffree()
-        dsp.getptr()
-        dsp.fileno()
-
-        # Make sure the read-only attributes work.
-        self.assertFalse(dsp.closed)
-        self.assertEqual(dsp.name, "/dev/dsp")
-        self.assertEqual(dsp.mode, "w", "bad dsp.mode: %r" % dsp.mode)
-
-        # And make sure they're really read-only.
-        for attr in ('closed', 'name', 'mode'):
-            try:
-                setattr(dsp, attr, 42)
-            except TypeError:
-                pass
-            else:
-                self.fail("dsp.%s not read-only" % attr)
-
-        # Compute expected running time of sound sample (in seconds).
-        expected_time = float(len(data)) / (ssize//8) / nchannels / rate
-
-        # set parameters based on .au file headers
-        dsp.setparameters(AFMT_S16_NE, nchannels, rate)
-        self.assertTrue(abs(expected_time - 3.51) < 1e-2, expected_time)
-        t1 = time.time()
-        dsp.write(data)
-        dsp.close()
-        t2 = time.time()
-        elapsed_time = t2 - t1
-
-        percent_diff = (abs(elapsed_time - expected_time) / expected_time) * 100
-        self.assertTrue(percent_diff <= 10.0,
-                        "elapsed time > 10% off of expected time")
-
-    def set_parameters(self, dsp):
-        # Two configurations for testing:
-        #   config1 (8-bit, mono, 8 kHz) should work on even the most
-        #      ancient and crufty sound card, but maybe not on special-
-        #      purpose high-end hardware
-        #   config2 (16-bit, stereo, 44.1kHz) should work on all but the
-        #      most ancient and crufty hardware
-        config1 = (ossaudiodev.AFMT_U8, 1, 8000)
-        config2 = (AFMT_S16_NE, 2, 44100)
-
-        for config in [config1, config2]:
-            (fmt, channels, rate) = config
-            if (dsp.setfmt(fmt) == fmt and
-                dsp.channels(channels) == channels and
-                dsp.speed(rate) == rate):
-                break
-        else:
-            raise RuntimeError("unable to set audio sampling parameters: "
-                               "you must have really weird audio hardware")
-
-        # setparameters() should be able to set this configuration in
-        # either strict or non-strict mode.
-        result = dsp.setparameters(fmt, channels, rate, False)
-        self.assertEqual(result, (fmt, channels, rate),
-                         "setparameters%r: returned %r" % (config, result))
-
-        result = dsp.setparameters(fmt, channels, rate, True)
-        self.assertEqual(result, (fmt, channels, rate),
-                         "setparameters%r: returned %r" % (config, result))
-
-    def set_bad_parameters(self, dsp):
-        # Now try some configurations that are presumably bogus: eg. 300
-        # channels currently exceeds even Hollywood's ambitions, and
-        # negative sampling rate is utter nonsense.  setparameters() should
-        # accept these in non-strict mode, returning something other than
-        # was requested, but should barf in strict mode.
-        fmt = AFMT_S16_NE
-        rate = 44100
-        channels = 2
-        for config in [(fmt, 300, rate),       # ridiculous nchannels
-                       (fmt, -5, rate),        # impossible nchannels
-                       (fmt, channels, -50),   # impossible rate
-                      ]:
-            (fmt, channels, rate) = config
-            result = dsp.setparameters(fmt, channels, rate, False)
-            self.assertNotEqual(result, config,
-                             "unexpectedly got requested configuration")
-
-            try:
-                result = dsp.setparameters(fmt, channels, rate, True)
-            except ossaudiodev.OSSAudioError, err:
-                pass
-            else:
-                self.fail("expected OSSAudioError")
-
-    def test_playback(self):
-        sound_info = read_sound_file(findfile('audiotest.au'))
-        self.play_sound_file(*sound_info)
-
-    def test_set_parameters(self):
-        dsp = ossaudiodev.open("w")
-        try:
-            self.set_parameters(dsp)
-
-            # Disabled because it fails under Linux 2.6 with ALSA's OSS
-            # emulation layer.
-            #self.set_bad_parameters(dsp)
-        finally:
-            dsp.close()
-            self.assertTrue(dsp.closed)
-
-
-def test_main():
-    try:
-        dsp = ossaudiodev.open('w')
-    except (ossaudiodev.error, IOError), msg:
-        if msg.args[0] in (errno.EACCES, errno.ENOENT,
-                           errno.ENODEV, errno.EBUSY):
-            raise unittest.SkipTest(msg)
-        raise
-    dsp.close()
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_parser.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_parser.py
deleted file mode 100644
index c649287..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_parser.py
+++ /dev/null
@@ -1,596 +0,0 @@
-import parser
-import unittest
-import sys
-from test import test_support
-
-#
-#  First, we test that we can generate trees from valid source fragments,
-#  and that these valid trees are indeed allowed by the tree-loading side
-#  of the parser module.
-#
-
-class RoundtripLegalSyntaxTestCase(unittest.TestCase):
-
-    def roundtrip(self, f, s):
-        st1 = f(s)
-        t = st1.totuple()
-        try:
-            st2 = parser.sequence2st(t)
-        except parser.ParserError, why:
-            self.fail("could not roundtrip %r: %s" % (s, why))
-
-        self.assertEqual(t, st2.totuple(),
-                         "could not re-generate syntax tree")
-
-    def check_expr(self, s):
-        self.roundtrip(parser.expr, s)
-
-    def test_flags_passed(self):
-        # The unicode literals flags has to be passed from the paser to AST
-        # generation.
-        suite = parser.suite("from __future__ import unicode_literals; x = ''")
-        code = suite.compile()
-        scope = {}
-        exec code in scope
-        self.assertIsInstance(scope["x"], unicode)
-
-    def check_suite(self, s):
-        self.roundtrip(parser.suite, s)
-
-    def test_yield_statement(self):
-        self.check_suite("def f(): yield 1")
-        self.check_suite("def f(): yield")
-        self.check_suite("def f(): x += yield")
-        self.check_suite("def f(): x = yield 1")
-        self.check_suite("def f(): x = y = yield 1")
-        self.check_suite("def f(): x = yield")
-        self.check_suite("def f(): x = y = yield")
-        self.check_suite("def f(): 1 + (yield)*2")
-        self.check_suite("def f(): (yield 1)*2")
-        self.check_suite("def f(): return; yield 1")
-        self.check_suite("def f(): yield 1; return")
-        self.check_suite("def f():\n"
-                         "    for x in range(30):\n"
-                         "        yield x\n")
-        self.check_suite("def f():\n"
-                         "    if (yield):\n"
-                         "        yield x\n")
-
-    def test_expressions(self):
-        self.check_expr("foo(1)")
-        self.check_expr("{1:1}")
-        self.check_expr("{1:1, 2:2, 3:3}")
-        self.check_expr("{1:1, 2:2, 3:3,}")
-        self.check_expr("{1}")
-        self.check_expr("{1, 2, 3}")
-        self.check_expr("{1, 2, 3,}")
-        self.check_expr("[]")
-        self.check_expr("[1]")
-        self.check_expr("[1, 2, 3]")
-        self.check_expr("[1, 2, 3,]")
-        self.check_expr("()")
-        self.check_expr("(1,)")
-        self.check_expr("(1, 2, 3)")
-        self.check_expr("(1, 2, 3,)")
-        self.check_expr("[x**3 for x in range(20)]")
-        self.check_expr("[x**3 for x in range(20) if x % 3]")
-        self.check_expr("[x**3 for x in range(20) if x % 2 if x % 3]")
-        self.check_expr("[x+y for x in range(30) for y in range(20) if x % 2 if y % 3]")
-        #self.check_expr("[x for x in lambda: True, lambda: False if x()]")
-        self.check_expr("list(x**3 for x in range(20))")
-        self.check_expr("list(x**3 for x in range(20) if x % 3)")
-        self.check_expr("list(x**3 for x in range(20) if x % 2 if x % 3)")
-        self.check_expr("list(x+y for x in range(30) for y in range(20) if x % 2 if y % 3)")
-        self.check_expr("{x**3 for x in range(30)}")
-        self.check_expr("{x**3 for x in range(30) if x % 3}")
-        self.check_expr("{x**3 for x in range(30) if x % 2 if x % 3}")
-        self.check_expr("{x+y for x in range(30) for y in range(20) if x % 2 if y % 3}")
-        self.check_expr("{x**3: y**2 for x, y in zip(range(30), range(30))}")
-        self.check_expr("{x**3: y**2 for x, y in zip(range(30), range(30)) if x % 3}")
-        self.check_expr("{x**3: y**2 for x, y in zip(range(30), range(30)) if x % 3 if y % 3}")
-        self.check_expr("{x:y for x in range(30) for y in range(20) if x % 2 if y % 3}")
-        self.check_expr("foo(*args)")
-        self.check_expr("foo(*args, **kw)")
-        self.check_expr("foo(**kw)")
-        self.check_expr("foo(key=value)")
-        self.check_expr("foo(key=value, *args)")
-        self.check_expr("foo(key=value, *args, **kw)")
-        self.check_expr("foo(key=value, **kw)")
-        self.check_expr("foo(a, b, c, *args)")
-        self.check_expr("foo(a, b, c, *args, **kw)")
-        self.check_expr("foo(a, b, c, **kw)")
-        self.check_expr("foo(a, *args, keyword=23)")
-        self.check_expr("foo + bar")
-        self.check_expr("foo - bar")
-        self.check_expr("foo * bar")
-        self.check_expr("foo / bar")
-        self.check_expr("foo // bar")
-        self.check_expr("lambda: 0")
-        self.check_expr("lambda x: 0")
-        self.check_expr("lambda *y: 0")
-        self.check_expr("lambda *y, **z: 0")
-        self.check_expr("lambda **z: 0")
-        self.check_expr("lambda x, y: 0")
-        self.check_expr("lambda foo=bar: 0")
-        self.check_expr("lambda foo=bar, spaz=nifty+spit: 0")
-        self.check_expr("lambda foo=bar, **z: 0")
-        self.check_expr("lambda foo=bar, blaz=blat+2, **z: 0")
-        self.check_expr("lambda foo=bar, blaz=blat+2, *y, **z: 0")
-        self.check_expr("lambda x, *y, **z: 0")
-        self.check_expr("lambda x: 5 if x else 2")
-        self.check_expr("(x for x in range(10))")
-        self.check_expr("foo(x for x in range(10))")
-
-    def test_print(self):
-        self.check_suite("print")
-        self.check_suite("print 1")
-        self.check_suite("print 1,")
-        self.check_suite("print >>fp")
-        self.check_suite("print >>fp, 1")
-        self.check_suite("print >>fp, 1,")
-
-    def test_simple_expression(self):
-        # expr_stmt
-        self.check_suite("a")
-
-    def test_simple_assignments(self):
-        self.check_suite("a = b")
-        self.check_suite("a = b = c = d = e")
-
-    def test_simple_augmented_assignments(self):
-        self.check_suite("a += b")
-        self.check_suite("a -= b")
-        self.check_suite("a *= b")
-        self.check_suite("a /= b")
-        self.check_suite("a //= b")
-        self.check_suite("a %= b")
-        self.check_suite("a &= b")
-        self.check_suite("a |= b")
-        self.check_suite("a ^= b")
-        self.check_suite("a <<= b")
-        self.check_suite("a >>= b")
-        self.check_suite("a **= b")
-
-    def test_function_defs(self):
-        self.check_suite("def f(): pass")
-        self.check_suite("def f(*args): pass")
-        self.check_suite("def f(*args, **kw): pass")
-        self.check_suite("def f(**kw): pass")
-        self.check_suite("def f(foo=bar): pass")
-        self.check_suite("def f(foo=bar, *args): pass")
-        self.check_suite("def f(foo=bar, *args, **kw): pass")
-        self.check_suite("def f(foo=bar, **kw): pass")
-
-        self.check_suite("def f(a, b): pass")
-        self.check_suite("def f(a, b, *args): pass")
-        self.check_suite("def f(a, b, *args, **kw): pass")
-        self.check_suite("def f(a, b, **kw): pass")
-        self.check_suite("def f(a, b, foo=bar): pass")
-        self.check_suite("def f(a, b, foo=bar, *args): pass")
-        self.check_suite("def f(a, b, foo=bar, *args, **kw): pass")
-        self.check_suite("def f(a, b, foo=bar, **kw): pass")
-
-        self.check_suite("@staticmethod\n"
-                         "def f(): pass")
-        self.check_suite("@staticmethod\n"
-                         "@funcattrs(x, y)\n"
-                         "def f(): pass")
-        self.check_suite("@funcattrs()\n"
-                         "def f(): pass")
-
-    def test_class_defs(self):
-        self.check_suite("class foo():pass")
-        self.check_suite("@class_decorator\n"
-                         "class foo():pass")
-        self.check_suite("@class_decorator(arg)\n"
-                         "class foo():pass")
-        self.check_suite("@decorator1\n"
-                         "@decorator2\n"
-                         "class foo():pass")
-
-
-    def test_import_from_statement(self):
-        self.check_suite("from sys.path import *")
-        self.check_suite("from sys.path import dirname")
-        self.check_suite("from sys.path import (dirname)")
-        self.check_suite("from sys.path import (dirname,)")
-        self.check_suite("from sys.path import dirname as my_dirname")
-        self.check_suite("from sys.path import (dirname as my_dirname)")
-        self.check_suite("from sys.path import (dirname as my_dirname,)")
-        self.check_suite("from sys.path import dirname, basename")
-        self.check_suite("from sys.path import (dirname, basename)")
-        self.check_suite("from sys.path import (dirname, basename,)")
-        self.check_suite(
-            "from sys.path import dirname as my_dirname, basename")
-        self.check_suite(
-            "from sys.path import (dirname as my_dirname, basename)")
-        self.check_suite(
-            "from sys.path import (dirname as my_dirname, basename,)")
-        self.check_suite(
-            "from sys.path import dirname, basename as my_basename")
-        self.check_suite(
-            "from sys.path import (dirname, basename as my_basename)")
-        self.check_suite(
-            "from sys.path import (dirname, basename as my_basename,)")
-        self.check_suite("from .bogus import x")
-
-    def test_basic_import_statement(self):
-        self.check_suite("import sys")
-        self.check_suite("import sys as system")
-        self.check_suite("import sys, math")
-        self.check_suite("import sys as system, math")
-        self.check_suite("import sys, math as my_math")
-
-    def test_relative_imports(self):
-        self.check_suite("from . import name")
-        self.check_suite("from .. import name")
-        self.check_suite("from .pkg import name")
-        self.check_suite("from ..pkg import name")
-
-    def test_pep263(self):
-        self.check_suite("# -*- coding: iso-8859-1 -*-\n"
-                         "pass\n")
-
-    def test_assert(self):
-        self.check_suite("assert alo < ahi and blo < bhi\n")
-
-    def test_with(self):
-        self.check_suite("with open('x'): pass\n")
-        self.check_suite("with open('x') as f: pass\n")
-        self.check_suite("with open('x') as f, open('y') as g: pass\n")
-
-    def test_try_stmt(self):
-        self.check_suite("try: pass\nexcept: pass\n")
-        self.check_suite("try: pass\nfinally: pass\n")
-        self.check_suite("try: pass\nexcept A: pass\nfinally: pass\n")
-        self.check_suite("try: pass\nexcept A: pass\nexcept: pass\n"
-                         "finally: pass\n")
-        self.check_suite("try: pass\nexcept: pass\nelse: pass\n")
-        self.check_suite("try: pass\nexcept: pass\nelse: pass\n"
-                         "finally: pass\n")
-
-    def test_except_clause(self):
-        self.check_suite("try: pass\nexcept: pass\n")
-        self.check_suite("try: pass\nexcept A: pass\n")
-        self.check_suite("try: pass\nexcept A, e: pass\n")
-        self.check_suite("try: pass\nexcept A as e: pass\n")
-
-    def test_position(self):
-        # An absolutely minimal test of position information.  Better
-        # tests would be a big project.
-        code = "def f(x):\n    return x + 1"
-        st1 = parser.suite(code)
-        st2 = st1.totuple(line_info=1, col_info=1)
-
-        def walk(tree):
-            node_type = tree[0]
-            next = tree[1]
-            if isinstance(next, tuple):
-                for elt in tree[1:]:
-                    for x in walk(elt):
-                        yield x
-            else:
-                yield tree
-
-        terminals = list(walk(st2))
-        self.assertEqual([
-            (1, 'def', 1, 0),
-            (1, 'f', 1, 4),
-            (7, '(', 1, 5),
-            (1, 'x', 1, 6),
-            (8, ')', 1, 7),
-            (11, ':', 1, 8),
-            (4, '', 1, 9),
-            (5, '', 2, -1),
-            (1, 'return', 2, 4),
-            (1, 'x', 2, 11),
-            (14, '+', 2, 13),
-            (2, '1', 2, 15),
-            (4, '', 2, 16),
-            (6, '', 2, -1),
-            (4, '', 2, -1),
-            (0, '', 2, -1)],
-                         terminals)
-
-
-#
-#  Second, we take *invalid* trees and make sure we get ParserError
-#  rejections for them.
-#
-
-class IllegalSyntaxTestCase(unittest.TestCase):
-
-    def check_bad_tree(self, tree, label):
-        try:
-            parser.sequence2st(tree)
-        except parser.ParserError:
-            pass
-        else:
-            self.fail("did not detect invalid tree for %r" % label)
-
-    def test_junk(self):
-        # not even remotely valid:
-        self.check_bad_tree((1, 2, 3), "<junk>")
-
-    def test_illegal_yield_1(self):
-        # Illegal yield statement: def f(): return 1; yield 1
-        tree = \
-        (257,
-         (264,
-          (285,
-           (259,
-            (1, 'def'),
-            (1, 'f'),
-            (260, (7, '('), (8, ')')),
-            (11, ':'),
-            (291,
-             (4, ''),
-             (5, ''),
-             (264,
-              (265,
-               (266,
-                (272,
-                 (275,
-                  (1, 'return'),
-                  (313,
-                   (292,
-                    (293,
-                     (294,
-                      (295,
-                       (297,
-                        (298,
-                         (299,
-                          (300,
-                           (301,
-                            (302, (303, (304, (305, (2, '1')))))))))))))))))),
-               (264,
-                (265,
-                 (266,
-                  (272,
-                   (276,
-                    (1, 'yield'),
-                    (313,
-                     (292,
-                      (293,
-                       (294,
-                        (295,
-                         (297,
-                          (298,
-                           (299,
-                            (300,
-                             (301,
-                              (302,
-                               (303, (304, (305, (2, '1')))))))))))))))))),
-                 (4, ''))),
-               (6, ''))))),
-           (4, ''),
-           (0, ''))))
-        self.check_bad_tree(tree, "def f():\n  return 1\n  yield 1")
-
-    def test_illegal_yield_2(self):
-        # Illegal return in generator: def f(): return 1; yield 1
-        tree = \
-        (257,
-         (264,
-          (265,
-           (266,
-            (278,
-             (1, 'from'),
-             (281, (1, '__future__')),
-             (1, 'import'),
-             (279, (1, 'generators')))),
-           (4, ''))),
-         (264,
-          (285,
-           (259,
-            (1, 'def'),
-            (1, 'f'),
-            (260, (7, '('), (8, ')')),
-            (11, ':'),
-            (291,
-             (4, ''),
-             (5, ''),
-             (264,
-              (265,
-               (266,
-                (272,
-                 (275,
-                  (1, 'return'),
-                  (313,
-                   (292,
-                    (293,
-                     (294,
-                      (295,
-                       (297,
-                        (298,
-                         (299,
-                          (300,
-                           (301,
-                            (302, (303, (304, (305, (2, '1')))))))))))))))))),
-               (264,
-                (265,
-                 (266,
-                  (272,
-                   (276,
-                    (1, 'yield'),
-                    (313,
-                     (292,
-                      (293,
-                       (294,
-                        (295,
-                         (297,
-                          (298,
-                           (299,
-                            (300,
-                             (301,
-                              (302,
-                               (303, (304, (305, (2, '1')))))))))))))))))),
-                 (4, ''))),
-               (6, ''))))),
-           (4, ''),
-           (0, ''))))
-        self.check_bad_tree(tree, "def f():\n  return 1\n  yield 1")
-
-    def test_print_chevron_comma(self):
-        # Illegal input: print >>fp,
-        tree = \
-        (257,
-         (264,
-          (265,
-           (266,
-            (268,
-             (1, 'print'),
-             (35, '>>'),
-             (290,
-              (291,
-               (292,
-                (293,
-                 (295,
-                  (296,
-                   (297,
-                    (298, (299, (300, (301, (302, (303, (1, 'fp')))))))))))))),
-             (12, ','))),
-           (4, ''))),
-         (0, ''))
-        self.check_bad_tree(tree, "print >>fp,")
-
-    def test_a_comma_comma_c(self):
-        # Illegal input: a,,c
-        tree = \
-        (258,
-         (311,
-          (290,
-           (291,
-            (292,
-             (293,
-              (295,
-               (296,
-                (297,
-                 (298, (299, (300, (301, (302, (303, (1, 'a')))))))))))))),
-          (12, ','),
-          (12, ','),
-          (290,
-           (291,
-            (292,
-             (293,
-              (295,
-               (296,
-                (297,
-                 (298, (299, (300, (301, (302, (303, (1, 'c'))))))))))))))),
-         (4, ''),
-         (0, ''))
-        self.check_bad_tree(tree, "a,,c")
-
-    def test_illegal_operator(self):
-        # Illegal input: a $= b
-        tree = \
-        (257,
-         (264,
-          (265,
-           (266,
-            (267,
-             (312,
-              (291,
-               (292,
-                (293,
-                 (294,
-                  (296,
-                   (297,
-                    (298,
-                     (299,
-                      (300, (301, (302, (303, (304, (1, 'a'))))))))))))))),
-             (268, (37, '$=')),
-             (312,
-              (291,
-               (292,
-                (293,
-                 (294,
-                  (296,
-                   (297,
-                    (298,
-                     (299,
-                      (300, (301, (302, (303, (304, (1, 'b'))))))))))))))))),
-           (4, ''))),
-         (0, ''))
-        self.check_bad_tree(tree, "a $= b")
-
-    def test_malformed_global(self):
-        #doesn't have global keyword in ast
-        tree = (257,
-                (264,
-                 (265,
-                  (266,
-                   (282, (1, 'foo'))), (4, ''))),
-                (4, ''),
-                (0, ''))
-        self.check_bad_tree(tree, "malformed global ast")
-
-    def test_missing_import_source(self):
-        # from import a
-        tree = \
-            (257,
-             (267,
-              (268,
-               (269,
-                (281,
-                 (283, (1, 'from'), (1, 'import'),
-                  (286, (284, (1, 'fred')))))),
-               (4, ''))),
-             (4, ''), (0, ''))
-        self.check_bad_tree(tree, "from import a")
-
-
-class CompileTestCase(unittest.TestCase):
-
-    # These tests are very minimal. :-(
-
-    def test_compile_expr(self):
-        st = parser.expr('2 + 3')
-        code = parser.compilest(st)
-        self.assertEqual(eval(code), 5)
-
-    def test_compile_suite(self):
-        st = parser.suite('x = 2; y = x + 3')
-        code = parser.compilest(st)
-        globs = {}
-        exec code in globs
-        self.assertEqual(globs['y'], 5)
-
-    def test_compile_error(self):
-        st = parser.suite('1 = 3 + 4')
-        self.assertRaises(SyntaxError, parser.compilest, st)
-
-    def test_compile_badunicode(self):
-        st = parser.suite('a = u"\U12345678"')
-        self.assertRaises(SyntaxError, parser.compilest, st)
-        st = parser.suite('a = u"\u1"')
-        self.assertRaises(SyntaxError, parser.compilest, st)
-
-class ParserStackLimitTestCase(unittest.TestCase):
-    """try to push the parser to/over it's limits.
-    see http://bugs.python.org/issue1881 for a discussion
-    """
-    def _nested_expression(self, level):
-        return "["*level+"]"*level
-
-    def test_deeply_nested_list(self):
-        e = self._nested_expression(99)
-        st = parser.expr(e)
-        st.compile()
-
-    def test_trigger_memory_error(self):
-        e = self._nested_expression(100)
-        print >>sys.stderr, "Expecting 's_push: parser stack overflow' in next line"
-        self.assertRaises(MemoryError, parser.expr, e)
-
-def test_main():
-    test_support.run_unittest(
-        RoundtripLegalSyntaxTestCase,
-        IllegalSyntaxTestCase,
-        CompileTestCase,
-        ParserStackLimitTestCase,
-    )
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pdb.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pdb.py
deleted file mode 100644
index 2b722d4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pdb.py
+++ /dev/null
@@ -1,287 +0,0 @@
-# A test suite for pdb; at the moment, this only validates skipping of
-# specified test modules (RFE #5142).
-
-import imp
-import sys
-
-from test import test_support
-# This little helper class is essential for testing pdb under doctest.
-from test_doctest import _FakeInput
-
-
-class PdbTestInput(object):
-    """Context manager that makes testing Pdb in doctests easier."""
-
-    def __init__(self, input):
-        self.input = input
-
-    def __enter__(self):
-        self.real_stdin = sys.stdin
-        sys.stdin = _FakeInput(self.input)
-
-    def __exit__(self, *exc):
-        sys.stdin = self.real_stdin
-
-
-def write(x):
-    print x
-
-def test_pdb_displayhook():
-    """This tests the custom displayhook for pdb.
-
-    >>> def test_function(foo, bar):
-    ...     import pdb; pdb.Pdb().set_trace()
-    ...     pass
-
-    >>> with PdbTestInput([
-    ...     'foo',
-    ...     'bar',
-    ...     'for i in range(5): write(i)',
-    ...     'continue',
-    ... ]):
-    ...     test_function(1, None)
-    > <doctest test.test_pdb.test_pdb_displayhook[0]>(3)test_function()
-    -> pass
-    (Pdb) foo
-    1
-    (Pdb) bar
-    (Pdb) for i in range(5): write(i)
-    0
-    1
-    2
-    3
-    4
-    (Pdb) continue
-    """
-
-def test_pdb_breakpoint_commands():
-    """Test basic commands related to breakpoints.
-
-    >>> def test_function():
-    ...     import pdb; pdb.Pdb().set_trace()
-    ...     print(1)
-    ...     print(2)
-    ...     print(3)
-    ...     print(4)
-
-    First, need to clear bdb state that might be left over from previous tests.
-    Otherwise, the new breakpoints might get assigned different numbers.
-
-    >>> from bdb import Breakpoint
-    >>> Breakpoint.next = 1
-    >>> Breakpoint.bplist = {}
-    >>> Breakpoint.bpbynumber = [None]
-
-    Now test the breakpoint commands.  NORMALIZE_WHITESPACE is needed because
-    the breakpoint list outputs a tab for the "stop only" and "ignore next"
-    lines, which we don't want to put in here.
-
-    >>> with PdbTestInput([  # doctest: +NORMALIZE_WHITESPACE
-    ...     'break 3',
-    ...     'disable 1',
-    ...     'ignore 1 10',
-    ...     'condition 1 1 < 2',
-    ...     'break 4',
-    ...     'break 4',
-    ...     'break',
-    ...     'clear 3',
-    ...     'break',
-    ...     'condition 1',
-    ...     'enable 1',
-    ...     'clear 1',
-    ...     'commands 2',
-    ...     'print 42',
-    ...     'end',
-    ...     'continue',  # will stop at breakpoint 2 (line 4)
-    ...     'clear',     # clear all!
-    ...     'y',
-    ...     'tbreak 5',
-    ...     'continue',  # will stop at temporary breakpoint
-    ...     'break',     # make sure breakpoint is gone
-    ...     'continue',
-    ... ]):
-    ...    test_function()
-    > <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>(3)test_function()
-    -> print(1)
-    (Pdb) break 3
-    Breakpoint 1 at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:3
-    (Pdb) disable 1
-    (Pdb) ignore 1 10
-    Will ignore next 10 crossings of breakpoint 1.
-    (Pdb) condition 1 1 < 2
-    (Pdb) break 4
-    Breakpoint 2 at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:4
-    (Pdb) break 4
-    Breakpoint 3 at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:4
-    (Pdb) break
-    Num Type         Disp Enb   Where
-    1   breakpoint   keep no    at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:3
-            stop only if 1 < 2
-            ignore next 10 hits
-    2   breakpoint   keep yes   at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:4
-    3   breakpoint   keep yes   at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:4
-    (Pdb) clear 3
-    Deleted breakpoint 3
-    (Pdb) break
-    Num Type         Disp Enb   Where
-    1   breakpoint   keep no    at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:3
-            stop only if 1 < 2
-            ignore next 10 hits
-    2   breakpoint   keep yes   at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:4
-    (Pdb) condition 1
-    Breakpoint 1 is now unconditional.
-    (Pdb) enable 1
-    (Pdb) clear 1
-    Deleted breakpoint 1
-    (Pdb) commands 2
-    (com) print 42
-    (com) end
-    (Pdb) continue
-    1
-    42
-    > <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>(4)test_function()
-    -> print(2)
-    (Pdb) clear
-    Clear all breaks? y
-    (Pdb) tbreak 5
-    Breakpoint 4 at <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>:5
-    (Pdb) continue
-    2
-    Deleted breakpoint 4
-    > <doctest test.test_pdb.test_pdb_breakpoint_commands[0]>(5)test_function()
-    -> print(3)
-    (Pdb) break
-    (Pdb) continue
-    3
-    4
-    """
-
-
-def test_pdb_skip_modules():
-    """This illustrates the simple case of module skipping.
-
-    >>> def skip_module():
-    ...     import string
-    ...     import pdb; pdb.Pdb(skip=['string*']).set_trace()
-    ...     string.lower('FOO')
-
-    >>> with PdbTestInput([
-    ...     'step',
-    ...     'continue',
-    ... ]):
-    ...     skip_module()
-    > <doctest test.test_pdb.test_pdb_skip_modules[0]>(4)skip_module()
-    -> string.lower('FOO')
-    (Pdb) step
-    --Return--
-    > <doctest test.test_pdb.test_pdb_skip_modules[0]>(4)skip_module()->None
-    -> string.lower('FOO')
-    (Pdb) continue
-    """
-
-
-# Module for testing skipping of module that makes a callback
-mod = imp.new_module('module_to_skip')
-exec 'def foo_pony(callback): x = 1; callback(); return None' in mod.__dict__
-
-
-def test_pdb_skip_modules_with_callback():
-    """This illustrates skipping of modules that call into other code.
-
-    >>> def skip_module():
-    ...     def callback():
-    ...         return None
-    ...     import pdb; pdb.Pdb(skip=['module_to_skip*']).set_trace()
-    ...     mod.foo_pony(callback)
-
-    >>> with PdbTestInput([
-    ...     'step',
-    ...     'step',
-    ...     'step',
-    ...     'step',
-    ...     'step',
-    ...     'continue',
-    ... ]):
-    ...     skip_module()
-    ...     pass  # provides something to "step" to
-    > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[0]>(5)skip_module()
-    -> mod.foo_pony(callback)
-    (Pdb) step
-    --Call--
-    > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[0]>(2)callback()
-    -> def callback():
-    (Pdb) step
-    > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[0]>(3)callback()
-    -> return None
-    (Pdb) step
-    --Return--
-    > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[0]>(3)callback()->None
-    -> return None
-    (Pdb) step
-    --Return--
-    > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[0]>(5)skip_module()->None
-    -> mod.foo_pony(callback)
-    (Pdb) step
-    > <doctest test.test_pdb.test_pdb_skip_modules_with_callback[1]>(10)<module>()
-    -> pass  # provides something to "step" to
-    (Pdb) continue
-    """
-
-
-def test_pdb_continue_in_bottomframe():
-    """Test that "continue" and "next" work properly in bottom frame (issue #5294).
-
-    >>> def test_function():
-    ...     import pdb, sys; inst = pdb.Pdb()
-    ...     inst.set_trace()
-    ...     inst.botframe = sys._getframe()  # hackery to get the right botframe
-    ...     print(1)
-    ...     print(2)
-    ...     print(3)
-    ...     print(4)
-
-    First, need to clear bdb state that might be left over from previous tests.
-    Otherwise, the new breakpoints might get assigned different numbers.
-
-    >>> from bdb import Breakpoint
-    >>> Breakpoint.next = 1
-    >>> Breakpoint.bplist = {}
-    >>> Breakpoint.bpbynumber = [None]
-
-    >>> with PdbTestInput([
-    ...     'next',
-    ...     'break 7',
-    ...     'continue',
-    ...     'next',
-    ...     'continue',
-    ...     'continue',
-    ... ]):
-    ...    test_function()
-    > <doctest test.test_pdb.test_pdb_continue_in_bottomframe[0]>(4)test_function()
-    -> inst.botframe = sys._getframe()  # hackery to get the right botframe
-    (Pdb) next
-    > <doctest test.test_pdb.test_pdb_continue_in_bottomframe[0]>(5)test_function()
-    -> print(1)
-    (Pdb) break 7
-    Breakpoint 1 at <doctest test.test_pdb.test_pdb_continue_in_bottomframe[0]>:7
-    (Pdb) continue
-    1
-    2
-    > <doctest test.test_pdb.test_pdb_continue_in_bottomframe[0]>(7)test_function()
-    -> print(3)
-    (Pdb) next
-    3
-    > <doctest test.test_pdb.test_pdb_continue_in_bottomframe[0]>(8)test_function()
-    -> print(4)
-    (Pdb) continue
-    4
-    """
-
-
-def test_main():
-    from test import test_pdb
-    test_support.run_doctest(test_pdb, verbosity=True)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_peepholer.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_peepholer.py
deleted file mode 100644
index c6d59a1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_peepholer.py
+++ /dev/null
@@ -1,243 +0,0 @@
-import dis
-import sys
-from cStringIO import StringIO
-import unittest
-
-def disassemble(func):
-    f = StringIO()
-    tmp = sys.stdout
-    sys.stdout = f
-    dis.dis(func)
-    sys.stdout = tmp
-    result = f.getvalue()
-    f.close()
-    return result
-
-def dis_single(line):
-    return disassemble(compile(line, '', 'single'))
-
-class TestTranforms(unittest.TestCase):
-
-    def test_unot(self):
-        # UNARY_NOT POP_JUMP_IF_FALSE  -->  POP_JUMP_IF_TRUE
-        def unot(x):
-            if not x == 2:
-                del x
-        asm = disassemble(unot)
-        for elem in ('UNARY_NOT', 'POP_JUMP_IF_FALSE'):
-            self.assertNotIn(elem, asm)
-        self.assertIn('POP_JUMP_IF_TRUE', asm)
-
-    def test_elim_inversion_of_is_or_in(self):
-        for line, elem in (
-            ('not a is b', '(is not)',),
-            ('not a in b', '(not in)',),
-            ('not a is not b', '(is)',),
-            ('not a not in b', '(in)',),
-            ):
-            asm = dis_single(line)
-            self.assertIn(elem, asm)
-
-    def test_none_as_constant(self):
-        # LOAD_GLOBAL None  -->  LOAD_CONST None
-        def f(x):
-            None
-            return x
-        asm = disassemble(f)
-        for elem in ('LOAD_GLOBAL',):
-            self.assertNotIn(elem, asm)
-        for elem in ('LOAD_CONST', '(None)'):
-            self.assertIn(elem, asm)
-        def f():
-            'Adding a docstring made this test fail in Py2.5.0'
-            return None
-        self.assertIn('LOAD_CONST', disassemble(f))
-        self.assertNotIn('LOAD_GLOBAL', disassemble(f))
-
-    def test_while_one(self):
-        # Skip over:  LOAD_CONST trueconst  POP_JUMP_IF_FALSE xx
-        def f():
-            while 1:
-                pass
-            return list
-        asm = disassemble(f)
-        for elem in ('LOAD_CONST', 'POP_JUMP_IF_FALSE'):
-            self.assertNotIn(elem, asm)
-        for elem in ('JUMP_ABSOLUTE',):
-            self.assertIn(elem, asm)
-
-    def test_pack_unpack(self):
-        for line, elem in (
-            ('a, = a,', 'LOAD_CONST',),
-            ('a, b = a, b', 'ROT_TWO',),
-            ('a, b, c = a, b, c', 'ROT_THREE',),
-            ):
-            asm = dis_single(line)
-            self.assertIn(elem, asm)
-            self.assertNotIn('BUILD_TUPLE', asm)
-            self.assertNotIn('UNPACK_TUPLE', asm)
-
-    def test_folding_of_tuples_of_constants(self):
-        for line, elem in (
-            ('a = 1,2,3', '((1, 2, 3))'),
-            ('("a","b","c")', "(('a', 'b', 'c'))"),
-            ('a,b,c = 1,2,3', '((1, 2, 3))'),
-            ('(None, 1, None)', '((None, 1, None))'),
-            ('((1, 2), 3, 4)', '(((1, 2), 3, 4))'),
-            ):
-            asm = dis_single(line)
-            self.assertIn(elem, asm)
-            self.assertNotIn('BUILD_TUPLE', asm)
-
-        # Bug 1053819:  Tuple of constants misidentified when presented with:
-        # . . . opcode_with_arg 100   unary_opcode   BUILD_TUPLE 1  . . .
-        # The following would segfault upon compilation
-        def crater():
-            (~[
-                0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-                0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-                0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-                0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-                0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-                0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-                0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-                0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-                0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-                0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
-            ],)
-
-    def test_folding_of_binops_on_constants(self):
-        for line, elem in (
-            ('a = 2+3+4', '(9)'),                   # chained fold
-            ('"@"*4', "('@@@@')"),                  # check string ops
-            ('a="abc" + "def"', "('abcdef')"),      # check string ops
-            ('a = 3**4', '(81)'),                   # binary power
-            ('a = 3*4', '(12)'),                    # binary multiply
-            ('a = 13//4', '(3)'),                   # binary floor divide
-            ('a = 14%4', '(2)'),                    # binary modulo
-            ('a = 2+3', '(5)'),                     # binary add
-            ('a = 13-4', '(9)'),                    # binary subtract
-            ('a = (12,13)[1]', '(13)'),             # binary subscr
-            ('a = 13 << 2', '(52)'),                # binary lshift
-            ('a = 13 >> 2', '(3)'),                 # binary rshift
-            ('a = 13 & 7', '(5)'),                  # binary and
-            ('a = 13 ^ 7', '(10)'),                 # binary xor
-            ('a = 13 | 7', '(15)'),                 # binary or
-            ):
-            asm = dis_single(line)
-            self.assertIn(elem, asm, asm)
-            self.assertNotIn('BINARY_', asm)
-
-        # Verify that unfoldables are skipped
-        asm = dis_single('a=2+"b"')
-        self.assertIn('(2)', asm)
-        self.assertIn("('b')", asm)
-
-        # Verify that large sequences do not result from folding
-        asm = dis_single('a="x"*1000')
-        self.assertIn('(1000)', asm)
-
-    def test_binary_subscr_on_unicode(self):
-        # valid code get optimized
-        asm = dis_single('u"foo"[0]')
-        self.assertIn("(u'f')", asm)
-        self.assertNotIn('BINARY_SUBSCR', asm)
-        asm = dis_single('u"\u0061\uffff"[1]')
-        self.assertIn("(u'\\uffff')", asm)
-        self.assertNotIn('BINARY_SUBSCR', asm)
-
-        # invalid code doesn't get optimized
-        # out of range
-        asm = dis_single('u"fuu"[10]')
-        self.assertIn('BINARY_SUBSCR', asm)
-        # non-BMP char (see #5057)
-        asm = dis_single('u"\U00012345"[0]')
-        self.assertIn('BINARY_SUBSCR', asm)
-
-
-    def test_folding_of_unaryops_on_constants(self):
-        for line, elem in (
-            ('`1`', "('1')"),                       # unary convert
-            ('-0.5', '(-0.5)'),                     # unary negative
-            ('~-2', '(1)'),                         # unary invert
-        ):
-            asm = dis_single(line)
-            self.assertIn(elem, asm, asm)
-            self.assertNotIn('UNARY_', asm)
-
-        # Verify that unfoldables are skipped
-        for line, elem in (
-            ('-"abc"', "('abc')"),                  # unary negative
-            ('~"abc"', "('abc')"),                  # unary invert
-        ):
-            asm = dis_single(line)
-            self.assertIn(elem, asm, asm)
-            self.assertIn('UNARY_', asm)
-
-    def test_elim_extra_return(self):
-        # RETURN LOAD_CONST None RETURN  -->  RETURN
-        def f(x):
-            return x
-        asm = disassemble(f)
-        self.assertNotIn('LOAD_CONST', asm)
-        self.assertNotIn('(None)', asm)
-        self.assertEqual(asm.split().count('RETURN_VALUE'), 1)
-
-    def test_elim_jump_to_return(self):
-        # JUMP_FORWARD to RETURN -->  RETURN
-        def f(cond, true_value, false_value):
-            return true_value if cond else false_value
-        asm = disassemble(f)
-        self.assertNotIn('JUMP_FORWARD', asm)
-        self.assertNotIn('JUMP_ABSOLUTE', asm)
-        self.assertEqual(asm.split().count('RETURN_VALUE'), 2)
-
-    def test_elim_jump_after_return1(self):
-        # Eliminate dead code: jumps immediately after returns can't be reached
-        def f(cond1, cond2):
-            if cond1: return 1
-            if cond2: return 2
-            while 1:
-                return 3
-            while 1:
-                if cond1: return 4
-                return 5
-            return 6
-        asm = disassemble(f)
-        self.assertNotIn('JUMP_FORWARD', asm)
-        self.assertNotIn('JUMP_ABSOLUTE', asm)
-        self.assertEqual(asm.split().count('RETURN_VALUE'), 6)
-
-    def test_elim_jump_after_return2(self):
-        # Eliminate dead code: jumps immediately after returns can't be reached
-        def f(cond1, cond2):
-            while 1:
-                if cond1: return 4
-        asm = disassemble(f)
-        self.assertNotIn('JUMP_FORWARD', asm)
-        # There should be one jump for the while loop.
-        self.assertEqual(asm.split().count('JUMP_ABSOLUTE'), 1)
-        self.assertEqual(asm.split().count('RETURN_VALUE'), 2)
-
-
-def test_main(verbose=None):
-    import sys
-    from test import test_support
-    test_classes = (TestTranforms,)
-
-    with test_support.check_py3k_warnings(
-            ("backquote not supported", SyntaxWarning)):
-        test_support.run_unittest(*test_classes)
-
-        # verify reference counting
-        if verbose and hasattr(sys, "gettotalrefcount"):
-            import gc
-            counts = [None] * 5
-            for i in xrange(len(counts)):
-                test_support.run_unittest(*test_classes)
-                gc.collect()
-                counts[i] = sys.gettotalrefcount()
-            print counts
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep247.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep247.py
deleted file mode 100644
index 5addf79..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep247.py
+++ /dev/null
@@ -1,74 +0,0 @@
-"""
-Test suite to check compilance with PEP 247, the standard API
-for hashing algorithms
-"""
-
-import warnings
-warnings.filterwarnings('ignore', 'the md5 module is deprecated.*',
-                        DeprecationWarning)
-warnings.filterwarnings('ignore', 'the sha module is deprecated.*',
-                        DeprecationWarning)
-
-import hmac
-import md5
-import sha
-
-import unittest
-from test import test_support
-
-class Pep247Test(unittest.TestCase):
-
-    def check_module(self, module, key=None):
-        self.assertTrue(hasattr(module, 'digest_size'))
-        self.assertTrue(module.digest_size is None or module.digest_size > 0)
-
-        if not key is None:
-            obj1 = module.new(key)
-            obj2 = module.new(key, 'string')
-
-            h1 = module.new(key, 'string').digest()
-            obj3 = module.new(key)
-            obj3.update('string')
-            h2 = obj3.digest()
-        else:
-            obj1 = module.new()
-            obj2 = module.new('string')
-
-            h1 = module.new('string').digest()
-            obj3 = module.new()
-            obj3.update('string')
-            h2 = obj3.digest()
-
-        self.assertEqual(h1, h2)
-
-        self.assertTrue(hasattr(obj1, 'digest_size'))
-
-        if not module.digest_size is None:
-            self.assertEqual(obj1.digest_size, module.digest_size)
-
-        self.assertEqual(obj1.digest_size, len(h1))
-        obj1.update('string')
-        obj_copy = obj1.copy()
-        self.assertEqual(obj1.digest(), obj_copy.digest())
-        self.assertEqual(obj1.hexdigest(), obj_copy.hexdigest())
-
-        digest, hexdigest = obj1.digest(), obj1.hexdigest()
-        hd2 = ""
-        for byte in digest:
-            hd2 += '%02x' % ord(byte)
-        self.assertEqual(hd2, hexdigest)
-
-    def test_md5(self):
-        self.check_module(md5)
-
-    def test_sha(self):
-        self.check_module(sha)
-
-    def test_hmac(self):
-        self.check_module(hmac, key='abc')
-
-def test_main():
-    test_support.run_unittest(Pep247Test)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep263.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep263.py
deleted file mode 100644
index 668605f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep263.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# -*- coding: koi8-r -*-
-
-import unittest
-from test import test_support
-
-class PEP263Test(unittest.TestCase):
-
-    def test_pep263(self):
-        self.assertEqual(
-            u"ðÉÔÏÎ".encode("utf-8"),
-            '\xd0\x9f\xd0\xb8\xd1\x82\xd0\xbe\xd0\xbd'
-        )
-        self.assertEqual(
-            u"\ð".encode("utf-8"),
-            '\\\xd0\x9f'
-        )
-
-    def test_compilestring(self):
-        # see #1882
-        c = compile("\n# coding: utf-8\nu = u'\xc3\xb3'\n", "dummy", "exec")
-        d = {}
-        exec c in d
-        self.assertEqual(d['u'], u'\xf3')
-
-
-    def test_issue3297(self):
-        c = compile("a, b = '\U0001010F', '\\U0001010F'", "dummy", "exec")
-        d = {}
-        exec(c, d)
-        self.assertEqual(d['a'], d['b'])
-        self.assertEqual(len(d['a']), len(d['b']))
-
-    def test_issue7820(self):
-        # Ensure that check_bom() restores all bytes in the right order if
-        # check_bom() fails in pydebug mode: a buffer starts with the first
-        # byte of a valid BOM, but next bytes are different
-
-        # one byte in common with the UTF-16-LE BOM
-        self.assertRaises(SyntaxError, eval, '\xff\x20')
-
-        # two bytes in common with the UTF-8 BOM
-        self.assertRaises(SyntaxError, eval, '\xef\xbb\x20')
-
-def test_main():
-    test_support.run_unittest(PEP263Test)
-
-if __name__=="__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep277.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep277.py
deleted file mode 100644
index 8a6caed..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep277.py
+++ /dev/null
@@ -1,210 +0,0 @@
-# Test the Unicode versions of normal file functions
-# open, os.open, os.stat. os.listdir, os.rename, os.remove, os.mkdir, os.chdir, os.rmdir
-import sys, os, unittest
-from unicodedata import normalize
-from test import test_support
-
-filenames = [
-    '1_abc',
-    u'2_ascii',
-    u'3_Gr\xfc\xdf-Gott',
-    u'4_\u0393\u03b5\u03b9\u03ac-\u03c3\u03b1\u03c2',
-    u'5_\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435',
-    u'6_\u306b\u307d\u3093',
-    u'7_\u05d4\u05e9\u05e7\u05e6\u05e5\u05e1',
-    u'8_\u66e8\u66e9\u66eb',
-    u'9_\u66e8\u05e9\u3093\u0434\u0393\xdf',
-    # Specific code points: fn, NFC(fn) and NFKC(fn) all differents
-    u'10_\u1fee\u1ffd',
-    ]
-
-# Mac OS X decomposes Unicode names, using Normal Form D.
-# http://developer.apple.com/mac/library/qa/qa2001/qa1173.html
-# "However, most volume formats do not follow the exact specification for
-# these normal forms.  For example, HFS Plus uses a variant of Normal Form D
-# in which U+2000 through U+2FFF, U+F900 through U+FAFF, and U+2F800 through
-# U+2FAFF are not decomposed."
-if sys.platform != 'darwin':
-    filenames.extend([
-        # Specific code points: NFC(fn), NFD(fn), NFKC(fn) and NFKD(fn) all differents
-        u'11_\u0385\u03d3\u03d4',
-        u'12_\u00a8\u0301\u03d2\u0301\u03d2\u0308',    # == NFD(u'\u0385\u03d3\u03d4')
-        u'13_\u0020\u0308\u0301\u038e\u03ab',          # == NFKC(u'\u0385\u03d3\u03d4')
-        u'14_\u1e9b\u1fc1\u1fcd\u1fce\u1fcf\u1fdd\u1fde\u1fdf\u1fed',
-
-        # Specific code points: fn, NFC(fn) and NFKC(fn) all differents
-        u'15_\u1fee\u1ffd\ufad1',
-        u'16_\u2000\u2000\u2000A',
-        u'17_\u2001\u2001\u2001A',
-        u'18_\u2003\u2003\u2003A', # == NFC(u'\u2001\u2001\u2001A')
-        u'19_\u0020\u0020\u0020A', # u'\u0020' == u' ' == NFKC(u'\u2000') ==
-                                   #   NFKC(u'\u2001') == NFKC(u'\u2003')
-])
-
-
-# Is it Unicode-friendly?
-if not os.path.supports_unicode_filenames:
-    fsencoding = sys.getfilesystemencoding() or sys.getdefaultencoding()
-    try:
-        for name in filenames:
-            name.encode(fsencoding)
-    except UnicodeEncodeError:
-        raise unittest.SkipTest("only NT+ and systems with "
-                                "Unicode-friendly filesystem encoding")
-
-
-# Destroy directory dirname and all files under it, to one level.
-def deltree(dirname):
-    # Don't hide legitimate errors:  if one of these suckers exists, it's
-    # an error if we can't remove it.
-    if os.path.exists(dirname):
-        # must pass unicode to os.listdir() so we get back unicode results.
-        for fname in os.listdir(unicode(dirname)):
-            os.unlink(os.path.join(dirname, fname))
-        os.rmdir(dirname)
-
-
-class UnicodeFileTests(unittest.TestCase):
-    files = set(filenames)
-    normal_form = None
-
-    def setUp(self):
-        try:
-            os.mkdir(test_support.TESTFN)
-        except OSError:
-            pass
-        files = set()
-        for name in self.files:
-            name = os.path.join(test_support.TESTFN, self.norm(name))
-            with open(name, 'w') as f:
-                f.write((name+'\n').encode("utf-8"))
-            os.stat(name)
-            files.add(name)
-        self.files = files
-
-    def tearDown(self):
-        deltree(test_support.TESTFN)
-
-    def norm(self, s):
-        if self.normal_form and isinstance(s, unicode):
-            return normalize(self.normal_form, s)
-        return s
-
-    def _apply_failure(self, fn, filename, expected_exception,
-                       check_fn_in_exception = True):
-        with self.assertRaises(expected_exception) as c:
-            fn(filename)
-        exc_filename = c.exception.filename
-        # the "filename" exception attribute may be encoded
-        if isinstance(exc_filename, str):
-            filename = filename.encode(sys.getfilesystemencoding())
-        if check_fn_in_exception:
-            self.assertEqual(exc_filename, filename, "Function '%s(%r) failed "
-                             "with bad filename in the exception: %r" %
-                             (fn.__name__, filename, exc_filename))
-
-    def test_failures(self):
-        # Pass non-existing Unicode filenames all over the place.
-        for name in self.files:
-            name = "not_" + name
-            self._apply_failure(open, name, IOError)
-            self._apply_failure(os.stat, name, OSError)
-            self._apply_failure(os.chdir, name, OSError)
-            self._apply_failure(os.rmdir, name, OSError)
-            self._apply_failure(os.remove, name, OSError)
-            # listdir may append a wildcard to the filename, so dont check
-            self._apply_failure(os.listdir, name, OSError, False)
-
-    def test_open(self):
-        for name in self.files:
-            f = open(name, 'w')
-            f.write((name+'\n').encode("utf-8"))
-            f.close()
-            os.stat(name)
-
-    # Skip the test on darwin, because darwin does normalize the filename to
-    # NFD (a variant of Unicode NFD form). Normalize the filename to NFC, NFKC,
-    # NFKD in Python is useless, because darwin will normalize it later and so
-    # open(), os.stat(), etc. don't raise any exception.
-    @unittest.skipIf(sys.platform == 'darwin', 'irrelevant test on Mac OS X')
-    def test_normalize(self):
-        files = set(f for f in self.files if isinstance(f, unicode))
-        others = set()
-        for nf in set(['NFC', 'NFD', 'NFKC', 'NFKD']):
-            others |= set(normalize(nf, file) for file in files)
-        others -= files
-        for name in others:
-            self._apply_failure(open, name, IOError)
-            self._apply_failure(os.stat, name, OSError)
-            self._apply_failure(os.chdir, name, OSError)
-            self._apply_failure(os.rmdir, name, OSError)
-            self._apply_failure(os.remove, name, OSError)
-            # listdir may append a wildcard to the filename, so dont check
-            self._apply_failure(os.listdir, name, OSError, False)
-
-    # Skip the test on darwin, because darwin uses a normalization different
-    # than Python NFD normalization: filenames are different even if we use
-    # Python NFD normalization.
-    @unittest.skipIf(sys.platform == 'darwin', 'irrelevant test on Mac OS X')
-    def test_listdir(self):
-        sf0 = set(self.files)
-        f1 = os.listdir(test_support.TESTFN)
-        f2 = os.listdir(unicode(test_support.TESTFN,
-                                sys.getfilesystemencoding()))
-        sf2 = set(os.path.join(unicode(test_support.TESTFN), f) for f in f2)
-        self.assertEqual(sf0, sf2)
-        self.assertEqual(len(f1), len(f2))
-
-    def test_rename(self):
-        for name in self.files:
-            os.rename(name, "tmp")
-            os.rename("tmp", name)
-
-    def test_directory(self):
-        dirname = os.path.join(test_support.TESTFN,
-                               u'Gr\xfc\xdf-\u66e8\u66e9\u66eb')
-        filename = u'\xdf-\u66e8\u66e9\u66eb'
-        oldwd = os.getcwd()
-        os.mkdir(dirname)
-        os.chdir(dirname)
-        try:
-            with open(filename, 'w') as f:
-                f.write((filename + '\n').encode("utf-8"))
-            os.access(filename,os.R_OK)
-            os.remove(filename)
-        finally:
-            os.chdir(oldwd)
-            os.rmdir(dirname)
-
-
-class UnicodeNFCFileTests(UnicodeFileTests):
-    normal_form = 'NFC'
-
-
-class UnicodeNFDFileTests(UnicodeFileTests):
-    normal_form = 'NFD'
-
-
-class UnicodeNFKCFileTests(UnicodeFileTests):
-    normal_form = 'NFKC'
-
-
-class UnicodeNFKDFileTests(UnicodeFileTests):
-    normal_form = 'NFKD'
-
-
-def test_main():
-    try:
-        test_support.run_unittest(
-            UnicodeFileTests,
-            UnicodeNFCFileTests,
-            UnicodeNFDFileTests,
-            UnicodeNFKCFileTests,
-            UnicodeNFKDFileTests,
-        )
-    finally:
-        deltree(test_support.TESTFN)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep292.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep292.py
deleted file mode 100644
index afe58e8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep292.py
+++ /dev/null
@@ -1,193 +0,0 @@
-# Copyright (C) 2004 Python Software Foundation
-# Author: barry@python.org (Barry Warsaw)
-# License: http://www.opensource.org/licenses/PythonSoftFoundation.php
-
-import unittest
-from string import Template
-
-
-class Bag:
-    pass
-
-class Mapping:
-    def __getitem__(self, name):
-        obj = self
-        for part in name.split('.'):
-            try:
-                obj = getattr(obj, part)
-            except AttributeError:
-                raise KeyError(name)
-        return obj
-
-
-class TestTemplate(unittest.TestCase):
-    def test_regular_templates(self):
-        s = Template('$who likes to eat a bag of $what worth $$100')
-        self.assertEqual(s.substitute(dict(who='tim', what='ham')),
-                         'tim likes to eat a bag of ham worth $100')
-        self.assertRaises(KeyError, s.substitute, dict(who='tim'))
-
-    def test_regular_templates_with_braces(self):
-        s = Template('$who likes ${what} for ${meal}')
-        d = dict(who='tim', what='ham', meal='dinner')
-        self.assertEqual(s.substitute(d), 'tim likes ham for dinner')
-        self.assertRaises(KeyError, s.substitute,
-                          dict(who='tim', what='ham'))
-
-    def test_escapes(self):
-        eq = self.assertEqual
-        s = Template('$who likes to eat a bag of $$what worth $$100')
-        eq(s.substitute(dict(who='tim', what='ham')),
-           'tim likes to eat a bag of $what worth $100')
-        s = Template('$who likes $$')
-        eq(s.substitute(dict(who='tim', what='ham')), 'tim likes $')
-
-    def test_percents(self):
-        eq = self.assertEqual
-        s = Template('%(foo)s $foo ${foo}')
-        d = dict(foo='baz')
-        eq(s.substitute(d), '%(foo)s baz baz')
-        eq(s.safe_substitute(d), '%(foo)s baz baz')
-
-    def test_stringification(self):
-        eq = self.assertEqual
-        s = Template('tim has eaten $count bags of ham today')
-        d = dict(count=7)
-        eq(s.substitute(d), 'tim has eaten 7 bags of ham today')
-        eq(s.safe_substitute(d), 'tim has eaten 7 bags of ham today')
-        s = Template('tim has eaten ${count} bags of ham today')
-        eq(s.substitute(d), 'tim has eaten 7 bags of ham today')
-
-    def test_tupleargs(self):
-        eq = self.assertEqual
-        s = Template('$who ate ${meal}')
-        d = dict(who=('tim', 'fred'), meal=('ham', 'kung pao'))
-        eq(s.substitute(d), "('tim', 'fred') ate ('ham', 'kung pao')")
-        eq(s.safe_substitute(d), "('tim', 'fred') ate ('ham', 'kung pao')")
-
-    def test_SafeTemplate(self):
-        eq = self.assertEqual
-        s = Template('$who likes ${what} for ${meal}')
-        eq(s.safe_substitute(dict(who='tim')), 'tim likes ${what} for ${meal}')
-        eq(s.safe_substitute(dict(what='ham')), '$who likes ham for ${meal}')
-        eq(s.safe_substitute(dict(what='ham', meal='dinner')),
-           '$who likes ham for dinner')
-        eq(s.safe_substitute(dict(who='tim', what='ham')),
-           'tim likes ham for ${meal}')
-        eq(s.safe_substitute(dict(who='tim', what='ham', meal='dinner')),
-           'tim likes ham for dinner')
-
-    def test_invalid_placeholders(self):
-        raises = self.assertRaises
-        s = Template('$who likes $')
-        raises(ValueError, s.substitute, dict(who='tim'))
-        s = Template('$who likes ${what)')
-        raises(ValueError, s.substitute, dict(who='tim'))
-        s = Template('$who likes $100')
-        raises(ValueError, s.substitute, dict(who='tim'))
-
-    def test_idpattern_override(self):
-        class PathPattern(Template):
-            idpattern = r'[_a-z][._a-z0-9]*'
-        m = Mapping()
-        m.bag = Bag()
-        m.bag.foo = Bag()
-        m.bag.foo.who = 'tim'
-        m.bag.what = 'ham'
-        s = PathPattern('$bag.foo.who likes to eat a bag of $bag.what')
-        self.assertEqual(s.substitute(m), 'tim likes to eat a bag of ham')
-
-    def test_pattern_override(self):
-        class MyPattern(Template):
-            pattern = r"""
-            (?P<escaped>@{2})                   |
-            @(?P<named>[_a-z][._a-z0-9]*)       |
-            @{(?P<braced>[_a-z][._a-z0-9]*)}    |
-            (?P<invalid>@)
-            """
-        m = Mapping()
-        m.bag = Bag()
-        m.bag.foo = Bag()
-        m.bag.foo.who = 'tim'
-        m.bag.what = 'ham'
-        s = MyPattern('@bag.foo.who likes to eat a bag of @bag.what')
-        self.assertEqual(s.substitute(m), 'tim likes to eat a bag of ham')
-
-        class BadPattern(Template):
-            pattern = r"""
-            (?P<badname>.*)                     |
-            (?P<escaped>@{2})                   |
-            @(?P<named>[_a-z][._a-z0-9]*)       |
-            @{(?P<braced>[_a-z][._a-z0-9]*)}    |
-            (?P<invalid>@)                      |
-            """
-        s = BadPattern('@bag.foo.who likes to eat a bag of @bag.what')
-        self.assertRaises(ValueError, s.substitute, {})
-        self.assertRaises(ValueError, s.safe_substitute, {})
-
-    def test_unicode_values(self):
-        s = Template('$who likes $what')
-        d = dict(who=u't\xffm', what=u'f\xfe\fed')
-        self.assertEqual(s.substitute(d), u't\xffm likes f\xfe\x0ced')
-
-    def test_keyword_arguments(self):
-        eq = self.assertEqual
-        s = Template('$who likes $what')
-        eq(s.substitute(who='tim', what='ham'), 'tim likes ham')
-        eq(s.substitute(dict(who='tim'), what='ham'), 'tim likes ham')
-        eq(s.substitute(dict(who='fred', what='kung pao'),
-                        who='tim', what='ham'),
-           'tim likes ham')
-        s = Template('the mapping is $mapping')
-        eq(s.substitute(dict(foo='none'), mapping='bozo'),
-           'the mapping is bozo')
-        eq(s.substitute(dict(mapping='one'), mapping='two'),
-           'the mapping is two')
-
-    def test_keyword_arguments_safe(self):
-        eq = self.assertEqual
-        raises = self.assertRaises
-        s = Template('$who likes $what')
-        eq(s.safe_substitute(who='tim', what='ham'), 'tim likes ham')
-        eq(s.safe_substitute(dict(who='tim'), what='ham'), 'tim likes ham')
-        eq(s.safe_substitute(dict(who='fred', what='kung pao'),
-                        who='tim', what='ham'),
-           'tim likes ham')
-        s = Template('the mapping is $mapping')
-        eq(s.safe_substitute(dict(foo='none'), mapping='bozo'),
-           'the mapping is bozo')
-        eq(s.safe_substitute(dict(mapping='one'), mapping='two'),
-           'the mapping is two')
-        d = dict(mapping='one')
-        raises(TypeError, s.substitute, d, {})
-        raises(TypeError, s.safe_substitute, d, {})
-
-    def test_delimiter_override(self):
-        eq = self.assertEqual
-        raises = self.assertRaises
-        class AmpersandTemplate(Template):
-            delimiter = '&'
-        s = AmpersandTemplate('this &gift is for &{who} &&')
-        eq(s.substitute(gift='bud', who='you'), 'this bud is for you &')
-        raises(KeyError, s.substitute)
-        eq(s.safe_substitute(gift='bud', who='you'), 'this bud is for you &')
-        eq(s.safe_substitute(), 'this &gift is for &{who} &')
-        s = AmpersandTemplate('this &gift is for &{who} &')
-        raises(ValueError, s.substitute, dict(gift='bud', who='you'))
-        eq(s.safe_substitute(), 'this &gift is for &{who} &')
-
-        class PieDelims(Template):
-            delimiter = '@'
-        s = PieDelims('@who likes to eat a bag of @{what} worth $100')
-        self.assertEqual(s.substitute(dict(who='tim', what='ham')),
-                         'tim likes to eat a bag of ham worth $100')
-
-
-def test_main():
-    from test import test_support
-    test_classes = [TestTemplate,]
-    test_support.run_unittest(*test_classes)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep352.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep352.py
deleted file mode 100644
index 8445ac2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pep352.py
+++ /dev/null
@@ -1,239 +0,0 @@
-import unittest
-import __builtin__
-import exceptions
-import warnings
-from test.test_support import run_unittest, check_warnings
-import os
-import sys
-from platform import system as platform_system
-
-DEPRECATION_WARNINGS = ["BaseException.message has been deprecated"]
-
-if sys.py3kwarning:
-    DEPRECATION_WARNINGS.extend(
-        ["exceptions must derive from BaseException",
-         "catching classes that don't inherit from BaseException is not allowed",
-         "__get(item|slice)__ not supported for exception classes"])
-
-_deprecations = [(msg, DeprecationWarning) for msg in DEPRECATION_WARNINGS]
-
-# Silence Py3k and other deprecation warnings
-def ignore_deprecation_warnings(func):
-    """Ignore the known DeprecationWarnings."""
-    def wrapper(*args, **kw):
-        with check_warnings(*_deprecations, quiet=True):
-            return func(*args, **kw)
-    return wrapper
-
-class ExceptionClassTests(unittest.TestCase):
-
-    """Tests for anything relating to exception objects themselves (e.g.,
-    inheritance hierarchy)"""
-
-    def test_builtins_new_style(self):
-        self.assertTrue(issubclass(Exception, object))
-
-    @ignore_deprecation_warnings
-    def verify_instance_interface(self, ins):
-        for attr in ("args", "message", "__str__", "__repr__", "__getitem__"):
-            self.assertTrue(hasattr(ins, attr),
-                            "%s missing %s attribute" %
-                            (ins.__class__.__name__, attr))
-
-    def test_inheritance(self):
-        # Make sure the inheritance hierarchy matches the documentation
-        exc_set = set(x for x in dir(exceptions) if not x.startswith('_'))
-        inheritance_tree = open(os.path.join(os.path.split(__file__)[0],
-                                                'exception_hierarchy.txt'))
-        try:
-            superclass_name = inheritance_tree.readline().rstrip()
-            try:
-                last_exc = getattr(__builtin__, superclass_name)
-            except AttributeError:
-                self.fail("base class %s not a built-in" % superclass_name)
-            self.assertIn(superclass_name, exc_set)
-            exc_set.discard(superclass_name)
-            superclasses = []  # Loop will insert base exception
-            last_depth = 0
-            for exc_line in inheritance_tree:
-                exc_line = exc_line.rstrip()
-                depth = exc_line.rindex('-')
-                exc_name = exc_line[depth+2:]  # Slice past space
-                if '(' in exc_name:
-                    paren_index = exc_name.index('(')
-                    platform_name = exc_name[paren_index+1:-1]
-                    exc_name = exc_name[:paren_index-1]  # Slice off space
-                    if platform_system() != platform_name:
-                        exc_set.discard(exc_name)
-                        continue
-                if '[' in exc_name:
-                    left_bracket = exc_name.index('[')
-                    exc_name = exc_name[:left_bracket-1]  # cover space
-                try:
-                    exc = getattr(__builtin__, exc_name)
-                except AttributeError:
-                    self.fail("%s not a built-in exception" % exc_name)
-                if last_depth < depth:
-                    superclasses.append((last_depth, last_exc))
-                elif last_depth > depth:
-                    while superclasses[-1][0] >= depth:
-                        superclasses.pop()
-                self.assertTrue(issubclass(exc, superclasses[-1][1]),
-                "%s is not a subclass of %s" % (exc.__name__,
-                    superclasses[-1][1].__name__))
-                try:  # Some exceptions require arguments; just skip them
-                    self.verify_instance_interface(exc())
-                except TypeError:
-                    pass
-                self.assertIn(exc_name, exc_set)
-                exc_set.discard(exc_name)
-                last_exc = exc
-                last_depth = depth
-        finally:
-            inheritance_tree.close()
-        self.assertEqual(len(exc_set), 0, "%s not accounted for" % exc_set)
-
-    interface_tests = ("length", "args", "message", "str", "unicode", "repr",
-            "indexing")
-
-    def interface_test_driver(self, results):
-        for test_name, (given, expected) in zip(self.interface_tests, results):
-            self.assertEqual(given, expected, "%s: %s != %s" % (test_name,
-                given, expected))
-
-    @ignore_deprecation_warnings
-    def test_interface_single_arg(self):
-        # Make sure interface works properly when given a single argument
-        arg = "spam"
-        exc = Exception(arg)
-        results = ([len(exc.args), 1], [exc.args[0], arg], [exc.message, arg],
-                   [str(exc), str(arg)], [unicode(exc), unicode(arg)],
-                   [repr(exc), exc.__class__.__name__ + repr(exc.args)],
-                   [exc[0], arg])
-        self.interface_test_driver(results)
-
-    @ignore_deprecation_warnings
-    def test_interface_multi_arg(self):
-        # Make sure interface correct when multiple arguments given
-        arg_count = 3
-        args = tuple(range(arg_count))
-        exc = Exception(*args)
-        results = ([len(exc.args), arg_count], [exc.args, args],
-                   [exc.message, ''], [str(exc), str(args)],
-                   [unicode(exc), unicode(args)],
-                   [repr(exc), exc.__class__.__name__ + repr(exc.args)],
-                   [exc[-1], args[-1]])
-        self.interface_test_driver(results)
-
-    @ignore_deprecation_warnings
-    def test_interface_no_arg(self):
-        # Make sure that with no args that interface is correct
-        exc = Exception()
-        results = ([len(exc.args), 0], [exc.args, tuple()],
-                   [exc.message, ''],
-                   [str(exc), ''], [unicode(exc), u''],
-                   [repr(exc), exc.__class__.__name__ + '()'], [True, True])
-        self.interface_test_driver(results)
-
-
-    def test_message_deprecation(self):
-        # As of Python 2.6, BaseException.message is deprecated.
-        with check_warnings(("", DeprecationWarning)):
-            BaseException().message
-
-
-class UsageTests(unittest.TestCase):
-
-    """Test usage of exceptions"""
-
-    def raise_fails(self, object_):
-        """Make sure that raising 'object_' triggers a TypeError."""
-        try:
-            raise object_
-        except TypeError:
-            return  # What is expected.
-        self.fail("TypeError expected for raising %s" % type(object_))
-
-    def catch_fails(self, object_):
-        """Catching 'object_' should raise a TypeError."""
-        try:
-            try:
-                raise StandardError
-            except object_:
-                pass
-        except TypeError:
-            pass
-        except StandardError:
-            self.fail("TypeError expected when catching %s" % type(object_))
-
-        try:
-            try:
-                raise StandardError
-            except (object_,):
-                pass
-        except TypeError:
-            return
-        except StandardError:
-            self.fail("TypeError expected when catching %s as specified in a "
-                        "tuple" % type(object_))
-
-    @ignore_deprecation_warnings
-    def test_raise_classic(self):
-        # Raising a classic class is okay (for now).
-        class ClassicClass:
-            pass
-        try:
-            raise ClassicClass
-        except ClassicClass:
-            pass
-        except:
-            self.fail("unable to raise classic class")
-        try:
-            raise ClassicClass()
-        except ClassicClass:
-            pass
-        except:
-            self.fail("unable to raise classic class instance")
-
-    def test_raise_new_style_non_exception(self):
-        # You cannot raise a new-style class that does not inherit from
-        # BaseException; the ability was not possible until BaseException's
-        # introduction so no need to support new-style objects that do not
-        # inherit from it.
-        class NewStyleClass(object):
-            pass
-        self.raise_fails(NewStyleClass)
-        self.raise_fails(NewStyleClass())
-
-    def test_raise_string(self):
-        # Raising a string raises TypeError.
-        self.raise_fails("spam")
-
-    def test_catch_string(self):
-        # Catching a string should trigger a DeprecationWarning.
-        with warnings.catch_warnings():
-            warnings.resetwarnings()
-            warnings.filterwarnings("error")
-            str_exc = "spam"
-            with self.assertRaises(DeprecationWarning):
-                try:
-                    raise StandardError
-                except str_exc:
-                    pass
-
-            # Make sure that even if the string exception is listed in a tuple
-            # that a warning is raised.
-            with self.assertRaises(DeprecationWarning):
-                try:
-                    raise StandardError
-                except (AssertionError, str_exc):
-                    pass
-
-
-def test_main():
-    run_unittest(ExceptionClassTests, UsageTests)
-
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pickle.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pickle.py
deleted file mode 100644
index 8194ee6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pickle.py
+++ /dev/null
@@ -1,80 +0,0 @@
-import pickle
-from cStringIO import StringIO
-
-from test import test_support
-
-from test.pickletester import AbstractPickleTests
-from test.pickletester import AbstractPickleModuleTests
-from test.pickletester import AbstractPersistentPicklerTests
-from test.pickletester import AbstractPicklerUnpicklerObjectTests
-
-class PickleTests(AbstractPickleTests, AbstractPickleModuleTests):
-
-    def dumps(self, arg, proto=0, fast=0):
-        # Ignore fast
-        return pickle.dumps(arg, proto)
-
-    def loads(self, buf):
-        # Ignore fast
-        return pickle.loads(buf)
-
-    module = pickle
-    error = KeyError
-
-class PicklerTests(AbstractPickleTests):
-
-    error = KeyError
-
-    def dumps(self, arg, proto=0, fast=0):
-        f = StringIO()
-        p = pickle.Pickler(f, proto)
-        if fast:
-            p.fast = fast
-        p.dump(arg)
-        f.seek(0)
-        return f.read()
-
-    def loads(self, buf):
-        f = StringIO(buf)
-        u = pickle.Unpickler(f)
-        return u.load()
-
-class PersPicklerTests(AbstractPersistentPicklerTests):
-
-    def dumps(self, arg, proto=0, fast=0):
-        class PersPickler(pickle.Pickler):
-            def persistent_id(subself, obj):
-                return self.persistent_id(obj)
-        f = StringIO()
-        p = PersPickler(f, proto)
-        if fast:
-            p.fast = fast
-        p.dump(arg)
-        f.seek(0)
-        return f.read()
-
-    def loads(self, buf):
-        class PersUnpickler(pickle.Unpickler):
-            def persistent_load(subself, obj):
-                return self.persistent_load(obj)
-        f = StringIO(buf)
-        u = PersUnpickler(f)
-        return u.load()
-
-class PicklerUnpicklerObjectTests(AbstractPicklerUnpicklerObjectTests):
-
-    pickler_class = pickle.Pickler
-    unpickler_class = pickle.Unpickler
-
-
-def test_main():
-    test_support.run_unittest(
-        PickleTests,
-        PicklerTests,
-        PersPicklerTests,
-        PicklerUnpicklerObjectTests,
-    )
-    test_support.run_doctest(pickle)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pickletools.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pickletools.py
deleted file mode 100644
index 6347490..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pickletools.py
+++ /dev/null
@@ -1,24 +0,0 @@
-import pickle
-import pickletools
-from test import test_support
-from test.pickletester import AbstractPickleTests
-from test.pickletester import AbstractPickleModuleTests
-
-class OptimizedPickleTests(AbstractPickleTests, AbstractPickleModuleTests):
-
-    def dumps(self, arg, proto=0, fast=0):
-        return pickletools.optimize(pickle.dumps(arg, proto))
-
-    def loads(self, buf):
-        return pickle.loads(buf)
-
-    module = pickle
-    error = KeyError
-
-def test_main():
-    test_support.run_unittest(OptimizedPickleTests)
-    test_support.run_doctest(pickletools)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pipes.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pipes.py
deleted file mode 100644
index 000ec67..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pipes.py
+++ /dev/null
@@ -1,204 +0,0 @@
-import pipes
-import os
-import string
-import unittest
-from test.test_support import TESTFN, run_unittest, unlink, reap_children
-
-if os.name != 'posix':
-    raise unittest.SkipTest('pipes module only works on posix')
-
-TESTFN2 = TESTFN + "2"
-
-# tr a-z A-Z is not portable, so make the ranges explicit
-s_command = 'tr %s %s' % (string.ascii_lowercase, string.ascii_uppercase)
-
-class SimplePipeTests(unittest.TestCase):
-    def tearDown(self):
-        for f in (TESTFN, TESTFN2):
-            unlink(f)
-
-    def testSimplePipe1(self):
-        t = pipes.Template()
-        t.append(s_command, pipes.STDIN_STDOUT)
-        f = t.open(TESTFN, 'w')
-        f.write('hello world #1')
-        f.close()
-        with open(TESTFN) as f:
-            self.assertEqual(f.read(), 'HELLO WORLD #1')
-
-    def testSimplePipe2(self):
-        with open(TESTFN, 'w') as f:
-            f.write('hello world #2')
-        t = pipes.Template()
-        t.append(s_command + ' < $IN > $OUT', pipes.FILEIN_FILEOUT)
-        t.copy(TESTFN, TESTFN2)
-        with open(TESTFN2) as f:
-            self.assertEqual(f.read(), 'HELLO WORLD #2')
-
-    def testSimplePipe3(self):
-        with open(TESTFN, 'w') as f:
-            f.write('hello world #2')
-        t = pipes.Template()
-        t.append(s_command + ' < $IN', pipes.FILEIN_STDOUT)
-        with t.open(TESTFN, 'r') as f:
-            self.assertEqual(f.read(), 'HELLO WORLD #2')
-
-    def testEmptyPipeline1(self):
-        # copy through empty pipe
-        d = 'empty pipeline test COPY'
-        with open(TESTFN, 'w') as f:
-            f.write(d)
-        with open(TESTFN2, 'w') as f:
-            f.write('')
-        t=pipes.Template()
-        t.copy(TESTFN, TESTFN2)
-        with open(TESTFN2) as f:
-            self.assertEqual(f.read(), d)
-
-    def testEmptyPipeline2(self):
-        # read through empty pipe
-        d = 'empty pipeline test READ'
-        with open(TESTFN, 'w') as f:
-            f.write(d)
-        t=pipes.Template()
-        with t.open(TESTFN, 'r') as f:
-            self.assertEqual(f.read(), d)
-
-    def testEmptyPipeline3(self):
-        # write through empty pipe
-        d = 'empty pipeline test WRITE'
-        t = pipes.Template()
-        with t.open(TESTFN, 'w') as f:
-            f.write(d)
-        with open(TESTFN) as f:
-            self.assertEqual(f.read(), d)
-
-    def testQuoting(self):
-        safeunquoted = string.ascii_letters + string.digits + '@%_-+=:,./'
-        unsafe = '"`$\\!'
-
-        self.assertEqual(pipes.quote(''), "''")
-        self.assertEqual(pipes.quote(safeunquoted), safeunquoted)
-        self.assertEqual(pipes.quote('test file name'), "'test file name'")
-        for u in unsafe:
-            self.assertEqual(pipes.quote('test%sname' % u),
-                              "'test%sname'" % u)
-        for u in unsafe:
-            self.assertEqual(pipes.quote("test%s'name'" % u),
-                             "'test%s'\"'\"'name'\"'\"''" % u)
-
-    def testRepr(self):
-        t = pipes.Template()
-        self.assertEqual(repr(t), "<Template instance, steps=[]>")
-        t.append('tr a-z A-Z', pipes.STDIN_STDOUT)
-        self.assertEqual(repr(t),
-                    "<Template instance, steps=[('tr a-z A-Z', '--')]>")
-
-    def testSetDebug(self):
-        t = pipes.Template()
-        t.debug(False)
-        self.assertEqual(t.debugging, False)
-        t.debug(True)
-        self.assertEqual(t.debugging, True)
-
-    def testReadOpenSink(self):
-        # check calling open('r') on a pipe ending with
-        # a sink raises ValueError
-        t = pipes.Template()
-        t.append('boguscmd', pipes.SINK)
-        self.assertRaises(ValueError, t.open, 'bogusfile', 'r')
-
-    def testWriteOpenSource(self):
-        # check calling open('w') on a pipe ending with
-        # a source raises ValueError
-        t = pipes.Template()
-        t.prepend('boguscmd', pipes.SOURCE)
-        self.assertRaises(ValueError, t.open, 'bogusfile', 'w')
-
-    def testBadAppendOptions(self):
-        t = pipes.Template()
-
-        # try a non-string command
-        self.assertRaises(TypeError, t.append, 7, pipes.STDIN_STDOUT)
-
-        # try a type that isn't recognized
-        self.assertRaises(ValueError, t.append, 'boguscmd', 'xx')
-
-        # shouldn't be able to append a source
-        self.assertRaises(ValueError, t.append, 'boguscmd', pipes.SOURCE)
-
-        # check appending two sinks
-        t = pipes.Template()
-        t.append('boguscmd', pipes.SINK)
-        self.assertRaises(ValueError, t.append, 'boguscmd', pipes.SINK)
-
-        # command needing file input but with no $IN
-        t = pipes.Template()
-        self.assertRaises(ValueError, t.append, 'boguscmd $OUT',
-                           pipes.FILEIN_FILEOUT)
-        t = pipes.Template()
-        self.assertRaises(ValueError, t.append, 'boguscmd',
-                           pipes.FILEIN_STDOUT)
-
-        # command needing file output but with no $OUT
-        t = pipes.Template()
-        self.assertRaises(ValueError, t.append, 'boguscmd $IN',
-                           pipes.FILEIN_FILEOUT)
-        t = pipes.Template()
-        self.assertRaises(ValueError, t.append, 'boguscmd',
-                           pipes.STDIN_FILEOUT)
-
-
-    def testBadPrependOptions(self):
-        t = pipes.Template()
-
-        # try a non-string command
-        self.assertRaises(TypeError, t.prepend, 7, pipes.STDIN_STDOUT)
-
-        # try a type that isn't recognized
-        self.assertRaises(ValueError, t.prepend, 'tr a-z A-Z', 'xx')
-
-        # shouldn't be able to prepend a sink
-        self.assertRaises(ValueError, t.prepend, 'boguscmd', pipes.SINK)
-
-        # check prepending two sources
-        t = pipes.Template()
-        t.prepend('boguscmd', pipes.SOURCE)
-        self.assertRaises(ValueError, t.prepend, 'boguscmd', pipes.SOURCE)
-
-        # command needing file input but with no $IN
-        t = pipes.Template()
-        self.assertRaises(ValueError, t.prepend, 'boguscmd $OUT',
-                           pipes.FILEIN_FILEOUT)
-        t = pipes.Template()
-        self.assertRaises(ValueError, t.prepend, 'boguscmd',
-                           pipes.FILEIN_STDOUT)
-
-        # command needing file output but with no $OUT
-        t = pipes.Template()
-        self.assertRaises(ValueError, t.prepend, 'boguscmd $IN',
-                           pipes.FILEIN_FILEOUT)
-        t = pipes.Template()
-        self.assertRaises(ValueError, t.prepend, 'boguscmd',
-                           pipes.STDIN_FILEOUT)
-
-    def testBadOpenMode(self):
-        t = pipes.Template()
-        self.assertRaises(ValueError, t.open, 'bogusfile', 'x')
-
-    def testClone(self):
-        t = pipes.Template()
-        t.append('tr a-z A-Z', pipes.STDIN_STDOUT)
-
-        u = t.clone()
-        self.assertNotEqual(id(t), id(u))
-        self.assertEqual(t.steps, u.steps)
-        self.assertNotEqual(id(t.steps), id(u.steps))
-        self.assertEqual(t.debugging, u.debugging)
-
-def test_main():
-    run_unittest(SimplePipeTests)
-    reap_children()
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkg.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkg.py
deleted file mode 100644
index b33b5a5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkg.py
+++ /dev/null
@@ -1,292 +0,0 @@
-# Test packages (dotted-name import)
-
-import sys
-import os
-import tempfile
-import textwrap
-import unittest
-from test import test_support
-
-
-# Helpers to create and destroy hierarchies.
-
-def cleanout(root):
-    names = os.listdir(root)
-    for name in names:
-        fullname = os.path.join(root, name)
-        if os.path.isdir(fullname) and not os.path.islink(fullname):
-            cleanout(fullname)
-        else:
-            os.remove(fullname)
-    os.rmdir(root)
-
-def fixdir(lst):
-    if "__builtins__" in lst:
-        lst.remove("__builtins__")
-    return lst
-
-
-# XXX Things to test
-#
-# import package without __init__
-# import package with __init__
-# __init__ importing submodule
-# __init__ importing global module
-# __init__ defining variables
-# submodule importing other submodule
-# submodule importing global module
-# submodule import submodule via global name
-# from package import submodule
-# from package import subpackage
-# from package import variable (defined in __init__)
-# from package import * (defined in __init__)
-
-
-class Test(unittest.TestCase):
-
-    def setUp(self):
-        self.root = None
-        self.pkgname = None
-        self.syspath = list(sys.path)
-
-    def tearDown(self):
-        sys.path[:] = self.syspath
-        if self.root: # Only clean if the test was actually run
-            cleanout(self.root)
-
-        # delete all modules concerning the tested hierarchy
-        if self.pkgname:
-            modules = [name for name in sys.modules
-                       if self.pkgname in name.split('.')]
-            for name in modules:
-                del sys.modules[name]
-
-    def run_code(self, code):
-        exec(textwrap.dedent(code), globals(), {"self": self})
-
-    def mkhier(self, descr):
-        root = tempfile.mkdtemp()
-        sys.path.insert(0, root)
-        if not os.path.isdir(root):
-            os.mkdir(root)
-        for name, contents in descr:
-            comps = name.split()
-            fullname = root
-            for c in comps:
-                fullname = os.path.join(fullname, c)
-            if contents is None:
-                os.mkdir(fullname)
-            else:
-                f = open(fullname, "w")
-                f.write(contents)
-                if contents and contents[-1] != '\n':
-                    f.write('\n')
-                f.close()
-        self.root = root
-        # package name is the name of the first item
-        self.pkgname = descr[0][0]
-
-    def test_1(self):
-        hier = [("t1", None), ("t1 __init__"+os.extsep+"py", "")]
-        self.mkhier(hier)
-        import t1
-
-    def test_2(self):
-        hier = [
-         ("t2", None),
-         ("t2 __init__"+os.extsep+"py", "'doc for t2'"),
-         ("t2 sub", None),
-         ("t2 sub __init__"+os.extsep+"py", ""),
-         ("t2 sub subsub", None),
-         ("t2 sub subsub __init__"+os.extsep+"py", "spam = 1"),
-        ]
-        self.mkhier(hier)
-
-        import t2.sub
-        import t2.sub.subsub
-        self.assertEqual(t2.__name__, "t2")
-        self.assertEqual(t2.sub.__name__, "t2.sub")
-        self.assertEqual(t2.sub.subsub.__name__, "t2.sub.subsub")
-
-        # This exec crap is needed because Py3k forbids 'import *' outside
-        # of module-scope and __import__() is insufficient for what we need.
-        s = """
-            import t2
-            from t2 import *
-            self.assertEqual(dir(), ['self', 'sub', 't2'])
-            """
-        self.run_code(s)
-
-        from t2 import sub
-        from t2.sub import subsub
-        from t2.sub.subsub import spam
-        self.assertEqual(sub.__name__, "t2.sub")
-        self.assertEqual(subsub.__name__, "t2.sub.subsub")
-        self.assertEqual(sub.subsub.__name__, "t2.sub.subsub")
-        for name in ['spam', 'sub', 'subsub', 't2']:
-            self.assertTrue(locals()["name"], "Failed to import %s" % name)
-
-        import t2.sub
-        import t2.sub.subsub
-        self.assertEqual(t2.__name__, "t2")
-        self.assertEqual(t2.sub.__name__, "t2.sub")
-        self.assertEqual(t2.sub.subsub.__name__, "t2.sub.subsub")
-
-        s = """
-            from t2 import *
-            self.assertTrue(dir(), ['self', 'sub'])
-            """
-        self.run_code(s)
-
-    def test_3(self):
-        hier = [
-                ("t3", None),
-                ("t3 __init__"+os.extsep+"py", ""),
-                ("t3 sub", None),
-                ("t3 sub __init__"+os.extsep+"py", ""),
-                ("t3 sub subsub", None),
-                ("t3 sub subsub __init__"+os.extsep+"py", "spam = 1"),
-               ]
-        self.mkhier(hier)
-
-        import t3.sub.subsub
-        self.assertEqual(t3.__name__, "t3")
-        self.assertEqual(t3.sub.__name__, "t3.sub")
-        self.assertEqual(t3.sub.subsub.__name__, "t3.sub.subsub")
-
-    def test_4(self):
-        hier = [
-        ("t4.py", "raise RuntimeError('Shouldnt load t4.py')"),
-        ("t4", None),
-        ("t4 __init__"+os.extsep+"py", ""),
-        ("t4 sub.py", "raise RuntimeError('Shouldnt load sub.py')"),
-        ("t4 sub", None),
-        ("t4 sub __init__"+os.extsep+"py", ""),
-        ("t4 sub subsub"+os.extsep+"py",
-         "raise RuntimeError('Shouldnt load subsub.py')"),
-        ("t4 sub subsub", None),
-        ("t4 sub subsub __init__"+os.extsep+"py", "spam = 1"),
-               ]
-        self.mkhier(hier)
-
-        s = """
-            from t4.sub.subsub import *
-            self.assertEqual(spam, 1)
-            """
-        self.run_code(s)
-
-    def test_5(self):
-        hier = [
-        ("t5", None),
-        ("t5 __init__"+os.extsep+"py", "import t5.foo"),
-        ("t5 string"+os.extsep+"py", "spam = 1"),
-        ("t5 foo"+os.extsep+"py",
-         "from . import string; assert string.spam == 1"),
-         ]
-        self.mkhier(hier)
-
-        import t5
-        s = """
-            from t5 import *
-            self.assertEqual(dir(), ['foo', 'self', 'string', 't5'])
-            """
-        self.run_code(s)
-
-        import t5
-        self.assertEqual(fixdir(dir(t5)),
-                         ['__doc__', '__file__', '__name__',
-                          '__package__', '__path__', 'foo', 'string', 't5'])
-        self.assertEqual(fixdir(dir(t5.foo)),
-                         ['__doc__', '__file__', '__name__', '__package__',
-                          'string'])
-        self.assertEqual(fixdir(dir(t5.string)),
-                         ['__doc__', '__file__', '__name__','__package__',
-                          'spam'])
-
-    def test_6(self):
-        hier = [
-                ("t6", None),
-                ("t6 __init__"+os.extsep+"py",
-                 "__all__ = ['spam', 'ham', 'eggs']"),
-                ("t6 spam"+os.extsep+"py", ""),
-                ("t6 ham"+os.extsep+"py", ""),
-                ("t6 eggs"+os.extsep+"py", ""),
-               ]
-        self.mkhier(hier)
-
-        import t6
-        self.assertEqual(fixdir(dir(t6)),
-                         ['__all__', '__doc__', '__file__',
-                          '__name__', '__package__', '__path__'])
-        s = """
-            import t6
-            from t6 import *
-            self.assertEqual(fixdir(dir(t6)),
-                             ['__all__', '__doc__', '__file__',
-                              '__name__', '__package__', '__path__',
-                              'eggs', 'ham', 'spam'])
-            self.assertEqual(dir(), ['eggs', 'ham', 'self', 'spam', 't6'])
-            """
-        self.run_code(s)
-
-    def test_7(self):
-        hier = [
-                ("t7", None),
-                ("t7"+os.extsep+"py", ""),
-                ("t7 __init__"+os.extsep+"py", ""),
-                ("t7 sub"+os.extsep+"py",
-                 "raise RuntimeError('Shouldnt load sub.py')"),
-                ("t7 sub", None),
-                ("t7 sub __init__"+os.extsep+"py", ""),
-                ("t7 sub "+os.extsep+"py",
-                 "raise RuntimeError('Shouldnt load subsub.py')"),
-                ("t7 sub subsub", None),
-                ("t7 sub subsub __init__"+os.extsep+"py",
-                 "spam = 1"),
-               ]
-        self.mkhier(hier)
-
-
-        t7, sub, subsub = None, None, None
-        import t7 as tas
-        self.assertEqual(fixdir(dir(tas)),
-                         ['__doc__', '__file__', '__name__',
-                          '__package__', '__path__'])
-        self.assertFalse(t7)
-        from t7 import sub as subpar
-        self.assertEqual(fixdir(dir(subpar)),
-                         ['__doc__', '__file__', '__name__',
-                          '__package__', '__path__'])
-        self.assertFalse(t7)
-        self.assertFalse(sub)
-        from t7.sub import subsub as subsubsub
-        self.assertEqual(fixdir(dir(subsubsub)),
-                         ['__doc__', '__file__', '__name__',
-                         '__package__', '__path__', 'spam'])
-        self.assertFalse(t7)
-        self.assertFalse(sub)
-        self.assertFalse(subsub)
-        from t7.sub.subsub import spam as ham
-        self.assertEqual(ham, 1)
-        self.assertFalse(t7)
-        self.assertFalse(sub)
-        self.assertFalse(subsub)
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_8(self):
-        hier = [
-                ("t8", None),
-                ("t8 __init__"+os.extsep+"py", "'doc for t8'"),
-               ]
-        self.mkhier(hier)
-
-        import t8
-        self.assertEqual(t8.__doc__, "doc for t8")
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkgimport.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkgimport.py
deleted file mode 100644
index 2f0f8d0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkgimport.py
+++ /dev/null
@@ -1,83 +0,0 @@
-import os, sys, string, random, tempfile, unittest
-
-from test.test_support import run_unittest
-
-class TestImport(unittest.TestCase):
-
-    def __init__(self, *args, **kw):
-        self.package_name = 'PACKAGE_'
-        while self.package_name in sys.modules:
-            self.package_name += random.choose(string.letters)
-        self.module_name = self.package_name + '.foo'
-        unittest.TestCase.__init__(self, *args, **kw)
-
-    def remove_modules(self):
-        for module_name in (self.package_name, self.module_name):
-            if module_name in sys.modules:
-                del sys.modules[module_name]
-
-    def setUp(self):
-        self.test_dir = tempfile.mkdtemp()
-        sys.path.append(self.test_dir)
-        self.package_dir = os.path.join(self.test_dir,
-                                        self.package_name)
-        os.mkdir(self.package_dir)
-        open(os.path.join(
-                self.package_dir, '__init__'+os.extsep+'py'), 'w').close()
-        self.module_path = os.path.join(self.package_dir, 'foo'+os.extsep+'py')
-
-    def tearDown(self):
-        for file in os.listdir(self.package_dir):
-            os.remove(os.path.join(self.package_dir, file))
-        os.rmdir(self.package_dir)
-        os.rmdir(self.test_dir)
-        self.assertNotEqual(sys.path.count(self.test_dir), 0)
-        sys.path.remove(self.test_dir)
-        self.remove_modules()
-
-    def rewrite_file(self, contents):
-        for extension in "co":
-            compiled_path = self.module_path + extension
-            if os.path.exists(compiled_path):
-                os.remove(compiled_path)
-        f = open(self.module_path, 'w')
-        f.write(contents)
-        f.close()
-
-    def test_package_import__semantics(self):
-
-        # Generate a couple of broken modules to try importing.
-
-        # ...try loading the module when there's a SyntaxError
-        self.rewrite_file('for')
-        try: __import__(self.module_name)
-        except SyntaxError: pass
-        else: raise RuntimeError, 'Failed to induce SyntaxError'
-        self.assertNotIn(self.module_name, sys.modules)
-        self.assertFalse(hasattr(sys.modules[self.package_name], 'foo'))
-
-        # ...make up a variable name that isn't bound in __builtins__
-        var = 'a'
-        while var in dir(__builtins__):
-            var += random.choose(string.letters)
-
-        # ...make a module that just contains that
-        self.rewrite_file(var)
-
-        try: __import__(self.module_name)
-        except NameError: pass
-        else: raise RuntimeError, 'Failed to induce NameError.'
-
-        # ...now  change  the module  so  that  the NameError  doesn't
-        # happen
-        self.rewrite_file('%s = 1' % var)
-        module = __import__(self.module_name).foo
-        self.assertEqual(getattr(module, var), 1)
-
-
-def test_main():
-    run_unittest(TestImport)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkgutil.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkgutil.py
deleted file mode 100644
index 81f2bdd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pkgutil.py
+++ /dev/null
@@ -1,130 +0,0 @@
-from test.test_support import run_unittest
-import unittest
-import sys
-import imp
-import pkgutil
-import os
-import os.path
-import tempfile
-import shutil
-import zipfile
-
-
-
-class PkgutilTests(unittest.TestCase):
-
-    def setUp(self):
-        self.dirname = tempfile.mkdtemp()
-        sys.path.insert(0, self.dirname)
-
-    def tearDown(self):
-        del sys.path[0]
-        shutil.rmtree(self.dirname)
-
-    def test_getdata_filesys(self):
-        pkg = 'test_getdata_filesys'
-
-        # Include a LF and a CRLF, to test that binary data is read back
-        RESOURCE_DATA = 'Hello, world!\nSecond line\r\nThird line'
-
-        # Make a package with some resources
-        package_dir = os.path.join(self.dirname, pkg)
-        os.mkdir(package_dir)
-        # Empty init.py
-        f = open(os.path.join(package_dir, '__init__.py'), "wb")
-        f.close()
-        # Resource files, res.txt, sub/res.txt
-        f = open(os.path.join(package_dir, 'res.txt'), "wb")
-        f.write(RESOURCE_DATA)
-        f.close()
-        os.mkdir(os.path.join(package_dir, 'sub'))
-        f = open(os.path.join(package_dir, 'sub', 'res.txt'), "wb")
-        f.write(RESOURCE_DATA)
-        f.close()
-
-        # Check we can read the resources
-        res1 = pkgutil.get_data(pkg, 'res.txt')
-        self.assertEqual(res1, RESOURCE_DATA)
-        res2 = pkgutil.get_data(pkg, 'sub/res.txt')
-        self.assertEqual(res2, RESOURCE_DATA)
-
-        del sys.modules[pkg]
-
-    def test_getdata_zipfile(self):
-        zip = 'test_getdata_zipfile.zip'
-        pkg = 'test_getdata_zipfile'
-
-        # Include a LF and a CRLF, to test that binary data is read back
-        RESOURCE_DATA = 'Hello, world!\nSecond line\r\nThird line'
-
-        # Make a package with some resources
-        zip_file = os.path.join(self.dirname, zip)
-        z = zipfile.ZipFile(zip_file, 'w')
-
-        # Empty init.py
-        z.writestr(pkg + '/__init__.py', "")
-        # Resource files, res.txt, sub/res.txt
-        z.writestr(pkg + '/res.txt', RESOURCE_DATA)
-        z.writestr(pkg + '/sub/res.txt', RESOURCE_DATA)
-        z.close()
-
-        # Check we can read the resources
-        sys.path.insert(0, zip_file)
-        res1 = pkgutil.get_data(pkg, 'res.txt')
-        self.assertEqual(res1, RESOURCE_DATA)
-        res2 = pkgutil.get_data(pkg, 'sub/res.txt')
-        self.assertEqual(res2, RESOURCE_DATA)
-        del sys.path[0]
-
-        del sys.modules[pkg]
-
-class PkgutilPEP302Tests(unittest.TestCase):
-
-    class MyTestLoader(object):
-        def load_module(self, fullname):
-            # Create an empty module
-            mod = sys.modules.setdefault(fullname, imp.new_module(fullname))
-            mod.__file__ = "<%s>" % self.__class__.__name__
-            mod.__loader__ = self
-            # Make it a package
-            mod.__path__ = []
-            # Count how many times the module is reloaded
-            mod.__dict__['loads'] = mod.__dict__.get('loads',0) + 1
-            return mod
-
-        def get_data(self, path):
-            return "Hello, world!"
-
-    class MyTestImporter(object):
-        def find_module(self, fullname, path=None):
-            return PkgutilPEP302Tests.MyTestLoader()
-
-    def setUp(self):
-        sys.meta_path.insert(0, self.MyTestImporter())
-
-    def tearDown(self):
-        del sys.meta_path[0]
-
-    def test_getdata_pep302(self):
-        # Use a dummy importer/loader
-        self.assertEqual(pkgutil.get_data('foo', 'dummy'), "Hello, world!")
-        del sys.modules['foo']
-
-    def test_alreadyloaded(self):
-        # Ensure that get_data works without reloading - the "loads" module
-        # variable in the example loader should count how many times a reload
-        # occurs.
-        import foo
-        self.assertEqual(foo.loads, 1)
-        self.assertEqual(pkgutil.get_data('foo', 'dummy'), "Hello, world!")
-        self.assertEqual(foo.loads, 1)
-        del sys.modules['foo']
-
-def test_main():
-    run_unittest(PkgutilTests, PkgutilPEP302Tests)
-    # this is necessary if test is run repeated (like when finding leaks)
-    import zipimport
-    zipimport._zip_directory_cache.clear()
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_platform.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_platform.py
deleted file mode 100644
index c1ca47e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_platform.py
+++ /dev/null
@@ -1,254 +0,0 @@
-import sys
-import os
-import unittest
-import platform
-import subprocess
-
-from test import test_support
-
-class PlatformTest(unittest.TestCase):
-    def test_architecture(self):
-        res = platform.architecture()
-
-    if hasattr(os, "symlink"):
-        def test_architecture_via_symlink(self): # issue3762
-            def get(python):
-                cmd = [python, '-c',
-                    'import platform; print platform.architecture()']
-                p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
-                return p.communicate()
-            real = os.path.realpath(sys.executable)
-            link = os.path.abspath(test_support.TESTFN)
-            os.symlink(real, link)
-            try:
-                self.assertEqual(get(real), get(link))
-            finally:
-                os.remove(link)
-
-    def test_platform(self):
-        for aliased in (False, True):
-            for terse in (False, True):
-                res = platform.platform(aliased, terse)
-
-    def test_system(self):
-        res = platform.system()
-
-    def test_node(self):
-        res = platform.node()
-
-    def test_release(self):
-        res = platform.release()
-
-    def test_version(self):
-        res = platform.version()
-
-    def test_machine(self):
-        res = platform.machine()
-
-    def test_processor(self):
-        res = platform.processor()
-
-    def setUp(self):
-        self.save_version = sys.version
-        self.save_subversion = sys.subversion
-        self.save_platform = sys.platform
-
-    def tearDown(self):
-        sys.version = self.save_version
-        sys.subversion = self.save_subversion
-        sys.platform = self.save_platform
-
-    def test_sys_version(self):
-        # Old test.
-        for input, output in (
-            ('2.4.3 (#1, Jun 21 2006, 13:54:21) \n[GCC 3.3.4 (pre 3.3.5 20040809)]',
-             ('CPython', '2.4.3', '', '', '1', 'Jun 21 2006 13:54:21', 'GCC 3.3.4 (pre 3.3.5 20040809)')),
-            ('IronPython 1.0.60816 on .NET 2.0.50727.42',
-             ('IronPython', '1.0.60816', '', '', '', '', '.NET 2.0.50727.42')),
-            ('IronPython 1.0 (1.0.61005.1977) on .NET 2.0.50727.42',
-             ('IronPython', '1.0.0', '', '', '', '', '.NET 2.0.50727.42')),
-            ):
-            # branch and revision are not "parsed", but fetched
-            # from sys.subversion.  Ignore them
-            (name, version, branch, revision, buildno, builddate, compiler) \
-                   = platform._sys_version(input)
-            self.assertEqual(
-                (name, version, '', '', buildno, builddate, compiler), output)
-
-        # Tests for python_implementation(), python_version(), python_branch(),
-        # python_revision(), python_build(), and python_compiler().
-        sys_versions = {
-            ("2.6.1 (r261:67515, Dec  6 2008, 15:26:00) \n[GCC 4.0.1 (Apple Computer, Inc. build 5370)]",
-             ('CPython', 'tags/r261', '67515'), self.save_platform)
-            :
-                ("CPython", "2.6.1", "tags/r261", "67515",
-                 ('r261:67515', 'Dec  6 2008 15:26:00'),
-                 'GCC 4.0.1 (Apple Computer, Inc. build 5370)'),
-            ("IronPython 2.0 (2.0.0.0) on .NET 2.0.50727.3053", None, "cli")
-            :
-                ("IronPython", "2.0.0", "", "", ("", ""),
-                 ".NET 2.0.50727.3053"),
-            ("2.5 (trunk:6107, Mar 26 2009, 13:02:18) \n[Java HotSpot(TM) Client VM (\"Apple Computer, Inc.\")]",
-            ('Jython', 'trunk', '6107'), "java1.5.0_16")
-            :
-                ("Jython", "2.5.0", "trunk", "6107",
-                 ('trunk:6107', 'Mar 26 2009'), "java1.5.0_16"),
-            ("2.5.2 (63378, Mar 26 2009, 18:03:29)\n[PyPy 1.0.0]",
-             ('PyPy', 'trunk', '63378'), self.save_platform)
-            :
-                ("PyPy", "2.5.2", "trunk", "63378", ('63378', 'Mar 26 2009'),
-                 "")
-            }
-        for (version_tag, subversion, sys_platform), info in \
-                sys_versions.iteritems():
-            sys.version = version_tag
-            if subversion is None:
-                if hasattr(sys, "subversion"):
-                    del sys.subversion
-            else:
-                sys.subversion = subversion
-            if sys_platform is not None:
-                sys.platform = sys_platform
-            self.assertEqual(platform.python_implementation(), info[0])
-            self.assertEqual(platform.python_version(), info[1])
-            self.assertEqual(platform.python_branch(), info[2])
-            self.assertEqual(platform.python_revision(), info[3])
-            self.assertEqual(platform.python_build(), info[4])
-            self.assertEqual(platform.python_compiler(), info[5])
-
-    def test_system_alias(self):
-        res = platform.system_alias(
-            platform.system(),
-            platform.release(),
-            platform.version(),
-        )
-
-    def test_uname(self):
-        res = platform.uname()
-        self.assertTrue(any(res))
-
-    @unittest.skipUnless(sys.platform.startswith('win'), "windows only test")
-    def test_uname_win32_ARCHITEW6432(self):
-        # Issue 7860: make sure we get architecture from the correct variable
-        # on 64 bit Windows: if PROCESSOR_ARCHITEW6432 exists we should be
-        # using it, per
-        # http://blogs.msdn.com/david.wang/archive/2006/03/26/HOWTO-Detect-Process-Bitness.aspx
-        try:
-            with test_support.EnvironmentVarGuard() as environ:
-                if 'PROCESSOR_ARCHITEW6432' in environ:
-                    del environ['PROCESSOR_ARCHITEW6432']
-                environ['PROCESSOR_ARCHITECTURE'] = 'foo'
-                platform._uname_cache = None
-                system, node, release, version, machine, processor = platform.uname()
-                self.assertEqual(machine, 'foo')
-                environ['PROCESSOR_ARCHITEW6432'] = 'bar'
-                platform._uname_cache = None
-                system, node, release, version, machine, processor = platform.uname()
-                self.assertEqual(machine, 'bar')
-        finally:
-            platform._uname_cache = None
-
-    def test_java_ver(self):
-        res = platform.java_ver()
-        if sys.platform == 'java':
-            self.assertTrue(all(res))
-
-    def test_win32_ver(self):
-        res = platform.win32_ver()
-
-    def test_mac_ver(self):
-        res = platform.mac_ver()
-
-        try:
-            import gestalt
-        except ImportError:
-            have_toolbox_glue = False
-        else:
-            have_toolbox_glue = True
-
-        if have_toolbox_glue and platform.uname()[0] == 'Darwin':
-            # We're on a MacOSX system, check that
-            # the right version information is returned
-            fd = os.popen('sw_vers', 'r')
-            real_ver = None
-            for ln in fd:
-                if ln.startswith('ProductVersion:'):
-                    real_ver = ln.strip().split()[-1]
-                    break
-            fd.close()
-            self.assertFalse(real_ver is None)
-            result_list = res[0].split('.')
-            expect_list = real_ver.split('.')
-            len_diff = len(result_list) - len(expect_list)
-            # On Snow Leopard, sw_vers reports 10.6.0 as 10.6
-            if len_diff > 0:
-                expect_list.extend(['0'] * len_diff)
-            self.assertEqual(result_list, expect_list)
-
-            # res[1] claims to contain
-            # (version, dev_stage, non_release_version)
-            # That information is no longer available
-            self.assertEqual(res[1], ('', '', ''))
-
-            if sys.byteorder == 'little':
-                self.assertEqual(res[2], 'i386')
-            else:
-                self.assertEqual(res[2], 'PowerPC')
-
-
-    @unittest.skipUnless(sys.platform == 'darwin', "OSX only test")
-    def test_mac_ver_with_fork(self):
-        # Issue7895: platform.mac_ver() crashes when using fork without exec
-        #
-        # This test checks that the fix for that issue works.
-        #
-        pid = os.fork()
-        if pid == 0:
-            # child
-            info = platform.mac_ver()
-            os._exit(0)
-
-        else:
-            # parent
-            cpid, sts = os.waitpid(pid, 0)
-            self.assertEqual(cpid, pid)
-            self.assertEqual(sts, 0)
-
-    def test_dist(self):
-        res = platform.dist()
-
-    def test_libc_ver(self):
-        import os
-        if os.path.isdir(sys.executable) and \
-           os.path.exists(sys.executable+'.exe'):
-            # Cygwin horror
-            executable = sys.executable + '.exe'
-        else:
-            executable = sys.executable
-        res = platform.libc_ver(executable)
-
-    def test_parse_release_file(self):
-
-        for input, output in (
-            # Examples of release file contents:
-            ('SuSE Linux 9.3 (x86-64)', ('SuSE Linux ', '9.3', 'x86-64')),
-            ('SUSE LINUX 10.1 (X86-64)', ('SUSE LINUX ', '10.1', 'X86-64')),
-            ('SUSE LINUX 10.1 (i586)', ('SUSE LINUX ', '10.1', 'i586')),
-            ('Fedora Core release 5 (Bordeaux)', ('Fedora Core', '5', 'Bordeaux')),
-            ('Red Hat Linux release 8.0 (Psyche)', ('Red Hat Linux', '8.0', 'Psyche')),
-            ('Red Hat Linux release 9 (Shrike)', ('Red Hat Linux', '9', 'Shrike')),
-            ('Red Hat Enterprise Linux release 4 (Nahant)', ('Red Hat Enterprise Linux', '4', 'Nahant')),
-            ('CentOS release 4', ('CentOS', '4', None)),
-            ('Rocks release 4.2.1 (Cydonia)', ('Rocks', '4.2.1', 'Cydonia')),
-            ('', ('', '', '')), # If there's nothing there.
-            ):
-            self.assertEqual(platform._parse_release_file(input), output)
-
-
-def test_main():
-    test_support.run_unittest(
-        PlatformTest
-    )
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_plistlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_plistlib.py
deleted file mode 100644
index 8b538d3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_plistlib.py
+++ /dev/null
@@ -1,192 +0,0 @@
-# Copyright (C) 2003 Python Software Foundation
-
-import unittest
-import plistlib
-import os
-import datetime
-from test import test_support
-
-
-# This test data was generated through Cocoa's NSDictionary class
-TESTDATA = """<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" \
-"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-        <key>aDate</key>
-        <date>2004-10-26T10:33:33Z</date>
-        <key>aDict</key>
-        <dict>
-                <key>aFalseValue</key>
-                <false/>
-                <key>aTrueValue</key>
-                <true/>
-                <key>aUnicodeValue</key>
-                <string>M\xc3\xa4ssig, Ma\xc3\x9f</string>
-                <key>anotherString</key>
-                <string>&lt;hello &amp; 'hi' there!&gt;</string>
-                <key>deeperDict</key>
-                <dict>
-                        <key>a</key>
-                        <integer>17</integer>
-                        <key>b</key>
-                        <real>32.5</real>
-                        <key>c</key>
-                        <array>
-                                <integer>1</integer>
-                                <integer>2</integer>
-                                <string>text</string>
-                        </array>
-                </dict>
-        </dict>
-        <key>aFloat</key>
-        <real>0.5</real>
-        <key>aList</key>
-        <array>
-                <string>A</string>
-                <string>B</string>
-                <integer>12</integer>
-                <real>32.5</real>
-                <array>
-                        <integer>1</integer>
-                        <integer>2</integer>
-                        <integer>3</integer>
-                </array>
-        </array>
-        <key>aString</key>
-        <string>Doodah</string>
-        <key>anInt</key>
-        <integer>728</integer>
-        <key>nestedData</key>
-        <array>
-                <data>
-                PGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAzxsb3RzIG9mIGJpbmFyeSBndW5r
-                PgABAgM8bG90cyBvZiBiaW5hcnkgZ3Vuaz4AAQIDPGxvdHMgb2YgYmluYXJ5
-                IGd1bms+AAECAzxsb3RzIG9mIGJpbmFyeSBndW5rPgABAgM8bG90cyBvZiBi
-                aW5hcnkgZ3Vuaz4AAQIDPGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAzxsb3Rz
-                IG9mIGJpbmFyeSBndW5rPgABAgM8bG90cyBvZiBiaW5hcnkgZ3Vuaz4AAQID
-                PGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAw==
-                </data>
-        </array>
-        <key>someData</key>
-        <data>
-        PGJpbmFyeSBndW5rPg==
-        </data>
-        <key>someMoreData</key>
-        <data>
-        PGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAzxsb3RzIG9mIGJpbmFyeSBndW5rPgABAgM8
-        bG90cyBvZiBiaW5hcnkgZ3Vuaz4AAQIDPGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAzxs
-        b3RzIG9mIGJpbmFyeSBndW5rPgABAgM8bG90cyBvZiBiaW5hcnkgZ3Vuaz4AAQIDPGxv
-        dHMgb2YgYmluYXJ5IGd1bms+AAECAzxsb3RzIG9mIGJpbmFyeSBndW5rPgABAgM8bG90
-        cyBvZiBiaW5hcnkgZ3Vuaz4AAQIDPGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAw==
-        </data>
-        <key>\xc3\x85benraa</key>
-        <string>That was a unicode key.</string>
-</dict>
-</plist>
-""".replace(" " * 8, "\t")  # Apple as well as plistlib.py output hard tabs
-
-
-class TestPlistlib(unittest.TestCase):
-
-    def tearDown(self):
-        try:
-            os.unlink(test_support.TESTFN)
-        except:
-            pass
-
-    def _create(self):
-        pl = dict(
-            aString="Doodah",
-            aList=["A", "B", 12, 32.5, [1, 2, 3]],
-            aFloat = 0.5,
-            anInt = 728,
-            aDict=dict(
-                anotherString="<hello & 'hi' there!>",
-                aUnicodeValue=u'M\xe4ssig, Ma\xdf',
-                aTrueValue=True,
-                aFalseValue=False,
-                deeperDict=dict(a=17, b=32.5, c=[1, 2, "text"]),
-            ),
-            someData = plistlib.Data("<binary gunk>"),
-            someMoreData = plistlib.Data("<lots of binary gunk>\0\1\2\3" * 10),
-            nestedData = [plistlib.Data("<lots of binary gunk>\0\1\2\3" * 10)],
-            aDate = datetime.datetime(2004, 10, 26, 10, 33, 33),
-        )
-        pl[u'\xc5benraa'] = "That was a unicode key."
-        return pl
-
-    def test_create(self):
-        pl = self._create()
-        self.assertEqual(pl["aString"], "Doodah")
-        self.assertEqual(pl["aDict"]["aFalseValue"], False)
-
-    def test_io(self):
-        pl = self._create()
-        plistlib.writePlist(pl, test_support.TESTFN)
-        pl2 = plistlib.readPlist(test_support.TESTFN)
-        self.assertEqual(dict(pl), dict(pl2))
-
-    def test_string(self):
-        pl = self._create()
-        data = plistlib.writePlistToString(pl)
-        pl2 = plistlib.readPlistFromString(data)
-        self.assertEqual(dict(pl), dict(pl2))
-        data2 = plistlib.writePlistToString(pl2)
-        self.assertEqual(data, data2)
-
-    def test_appleformatting(self):
-        pl = plistlib.readPlistFromString(TESTDATA)
-        data = plistlib.writePlistToString(pl)
-        self.assertEqual(data, TESTDATA,
-                         "generated data was not identical to Apple's output")
-
-    def test_appleformattingfromliteral(self):
-        pl = self._create()
-        pl2 = plistlib.readPlistFromString(TESTDATA)
-        self.assertEqual(dict(pl), dict(pl2),
-                         "generated data was not identical to Apple's output")
-
-    def test_stringio(self):
-        from StringIO import StringIO
-        f = StringIO()
-        pl = self._create()
-        plistlib.writePlist(pl, f)
-        pl2 = plistlib.readPlist(StringIO(f.getvalue()))
-        self.assertEqual(dict(pl), dict(pl2))
-
-    def test_cstringio(self):
-        from cStringIO import StringIO
-        f = StringIO()
-        pl = self._create()
-        plistlib.writePlist(pl, f)
-        pl2 = plistlib.readPlist(StringIO(f.getvalue()))
-        self.assertEqual(dict(pl), dict(pl2))
-
-    def test_controlcharacters(self):
-        for i in range(128):
-            c = chr(i)
-            testString = "string containing %s" % c
-            if i >= 32 or c in "\r\n\t":
-                # \r, \n and \t are the only legal control chars in XML
-                plistlib.writePlistToString(testString)
-            else:
-                self.assertRaises(ValueError,
-                                  plistlib.writePlistToString,
-                                  testString)
-
-    def test_nondictroot(self):
-        test1 = "abc"
-        test2 = [1, 2, 3, "abc"]
-        result1 = plistlib.readPlistFromString(plistlib.writePlistToString(test1))
-        result2 = plistlib.readPlistFromString(plistlib.writePlistToString(test2))
-        self.assertEqual(test1, result1)
-        self.assertEqual(test2, result2)
-
-
-def test_main():
-    test_support.run_unittest(TestPlistlib)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_poll.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_poll.py
deleted file mode 100644
index f1b7c04..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_poll.py
+++ /dev/null
@@ -1,157 +0,0 @@
-# Test case for the os.poll() function
-
-import os, select, random, unittest
-from test.test_support import TESTFN, run_unittest
-
-try:
-    select.poll
-except AttributeError:
-    raise unittest.SkipTest, "select.poll not defined -- skipping test_poll"
-
-
-def find_ready_matching(ready, flag):
-    match = []
-    for fd, mode in ready:
-        if mode & flag:
-            match.append(fd)
-    return match
-
-class PollTests(unittest.TestCase):
-
-    def test_poll1(self):
-        # Basic functional test of poll object
-        # Create a bunch of pipe and test that poll works with them.
-
-        p = select.poll()
-
-        NUM_PIPES = 12
-        MSG = " This is a test."
-        MSG_LEN = len(MSG)
-        readers = []
-        writers = []
-        r2w = {}
-        w2r = {}
-
-        for i in range(NUM_PIPES):
-            rd, wr = os.pipe()
-            p.register(rd)
-            p.modify(rd, select.POLLIN)
-            p.register(wr, select.POLLOUT)
-            readers.append(rd)
-            writers.append(wr)
-            r2w[rd] = wr
-            w2r[wr] = rd
-
-        bufs = []
-
-        while writers:
-            ready = p.poll()
-            ready_writers = find_ready_matching(ready, select.POLLOUT)
-            if not ready_writers:
-                raise RuntimeError, "no pipes ready for writing"
-            wr = random.choice(ready_writers)
-            os.write(wr, MSG)
-
-            ready = p.poll()
-            ready_readers = find_ready_matching(ready, select.POLLIN)
-            if not ready_readers:
-                raise RuntimeError, "no pipes ready for reading"
-            rd = random.choice(ready_readers)
-            buf = os.read(rd, MSG_LEN)
-            self.assertEqual(len(buf), MSG_LEN)
-            bufs.append(buf)
-            os.close(r2w[rd]) ; os.close( rd )
-            p.unregister( r2w[rd] )
-            p.unregister( rd )
-            writers.remove(r2w[rd])
-
-        self.assertEqual(bufs, [MSG] * NUM_PIPES)
-
-    def poll_unit_tests(self):
-        # returns NVAL for invalid file descriptor
-        FD = 42
-        try:
-            os.close(FD)
-        except OSError:
-            pass
-        p = select.poll()
-        p.register(FD)
-        r = p.poll()
-        self.assertEqual(r[0], (FD, select.POLLNVAL))
-
-        f = open(TESTFN, 'w')
-        fd = f.fileno()
-        p = select.poll()
-        p.register(f)
-        r = p.poll()
-        self.assertEqual(r[0][0], fd)
-        f.close()
-        r = p.poll()
-        self.assertEqual(r[0], (fd, select.POLLNVAL))
-        os.unlink(TESTFN)
-
-        # type error for invalid arguments
-        p = select.poll()
-        self.assertRaises(TypeError, p.register, p)
-        self.assertRaises(TypeError, p.unregister, p)
-
-        # can't unregister non-existent object
-        p = select.poll()
-        self.assertRaises(KeyError, p.unregister, 3)
-
-        # Test error cases
-        pollster = select.poll()
-        class Nope:
-            pass
-
-        class Almost:
-            def fileno(self):
-                return 'fileno'
-
-        self.assertRaises(TypeError, pollster.register, Nope(), 0)
-        self.assertRaises(TypeError, pollster.register, Almost(), 0)
-
-    # Another test case for poll().  This is copied from the test case for
-    # select(), modified to use poll() instead.
-
-    def test_poll2(self):
-        cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done'
-        p = os.popen(cmd, 'r')
-        pollster = select.poll()
-        pollster.register( p, select.POLLIN )
-        for tout in (0, 1000, 2000, 4000, 8000, 16000) + (-1,)*10:
-            fdlist = pollster.poll(tout)
-            if (fdlist == []):
-                continue
-            fd, flags = fdlist[0]
-            if flags & select.POLLHUP:
-                line = p.readline()
-                if line != "":
-                    self.fail('error: pipe seems to be closed, but still returns data')
-                continue
-
-            elif flags & select.POLLIN:
-                line = p.readline()
-                if not line:
-                    break
-                continue
-            else:
-                self.fail('Unexpected return value from select.poll: %s' % fdlist)
-        p.close()
-
-    def test_poll3(self):
-        # test int overflow
-        pollster = select.poll()
-        pollster.register(1)
-
-        self.assertRaises(OverflowError, pollster.poll, 1L << 64)
-
-        x = 2 + 3
-        if x != 5:
-            self.fail('Overflow must have occurred')
-
-def test_main():
-    run_unittest(PollTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_popen.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_popen.py
deleted file mode 100644
index 9dd3bc0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_popen.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#! /usr/bin/env python
-"""Basic tests for os.popen()
-
-  Particularly useful for platforms that fake popen.
-"""
-
-import unittest
-from test import test_support
-import os, sys
-
-# Test that command-lines get down as we expect.
-# To do this we execute:
-#    python -c "import sys;print sys.argv" {rest_of_commandline}
-# This results in Python being spawned and printing the sys.argv list.
-# We can then eval() the result of this, and see what each argv was.
-python = sys.executable
-
-class PopenTest(unittest.TestCase):
-    def _do_test_commandline(self, cmdline, expected):
-        cmd = '%s -c "import sys;print sys.argv" %s' % (python, cmdline)
-        data = os.popen(cmd).read() + '\n'
-        got = eval(data)[1:] # strip off argv[0]
-        self.assertEqual(got, expected)
-
-    def test_popen(self):
-        self.assertRaises(TypeError, os.popen)
-        self._do_test_commandline(
-            "foo bar",
-            ["foo", "bar"]
-        )
-        self._do_test_commandline(
-            'foo "spam and eggs" "silly walk"',
-            ["foo", "spam and eggs", "silly walk"]
-        )
-        self._do_test_commandline(
-            'foo "a \\"quoted\\" arg" bar',
-            ["foo", 'a "quoted" arg', "bar"]
-        )
-        test_support.reap_children()
-
-    def test_return_code(self):
-        self.assertEqual(os.popen("exit 0").close(), None)
-        if os.name == 'nt':
-            self.assertEqual(os.popen("exit 42").close(), 42)
-        else:
-            self.assertEqual(os.popen("exit 42").close(), 42 << 8)
-
-def test_main():
-    test_support.run_unittest(PopenTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_popen2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_popen2.py
deleted file mode 100644
index 9057680..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_popen2.py
+++ /dev/null
@@ -1,130 +0,0 @@
-#! /usr/bin/env python
-"""Test script for popen2.py"""
-
-import warnings
-warnings.filterwarnings("ignore", ".*popen2 module is deprecated.*",
-                        DeprecationWarning)
-warnings.filterwarnings("ignore", "os\.popen. is deprecated.*",
-                        DeprecationWarning)
-
-import os
-import sys
-import unittest
-import popen2
-
-from test.test_support import run_unittest, reap_children
-
-if sys.platform[:4] == 'beos' or sys.platform[:6] == 'atheos':
-    #  Locks get messed up or something.  Generally we're supposed
-    #  to avoid mixing "posix" fork & exec with native threads, and
-    #  they may be right about that after all.
-    raise unittest.SkipTest("popen2() doesn't work on " + sys.platform)
-
-# if we don't have os.popen, check that
-# we have os.fork.  if not, skip the test
-# (by raising an ImportError)
-try:
-    from os import popen
-    del popen
-except ImportError:
-    from os import fork
-    del fork
-
-class Popen2Test(unittest.TestCase):
-    cmd = "cat"
-    if os.name == "nt":
-        cmd = "more"
-    teststr = "ab cd\n"
-    # "more" doesn't act the same way across Windows flavors,
-    # sometimes adding an extra newline at the start or the
-    # end.  So we strip whitespace off both ends for comparison.
-    expected = teststr.strip()
-
-    def setUp(self):
-        popen2._cleanup()
-        # When the test runs, there shouldn't be any open pipes
-        self.assertFalse(popen2._active, "Active pipes when test starts" +
-            repr([c.cmd for c in popen2._active]))
-
-    def tearDown(self):
-        for inst in popen2._active:
-            inst.wait()
-        popen2._cleanup()
-        self.assertFalse(popen2._active, "popen2._active not empty")
-        # The os.popen*() API delegates to the subprocess module (on Unix)
-        import subprocess
-        for inst in subprocess._active:
-            inst.wait()
-        subprocess._cleanup()
-        self.assertFalse(subprocess._active, "subprocess._active not empty")
-        reap_children()
-
-    def validate_output(self, teststr, expected_out, r, w, e=None):
-        w.write(teststr)
-        w.close()
-        got = r.read()
-        self.assertEqual(expected_out, got.strip(), "wrote %r read %r" %
-                         (teststr, got))
-
-        if e is not None:
-            got = e.read()
-            self.assertFalse(got, "unexpected %r on stderr" % got)
-
-    def test_popen2(self):
-        r, w = popen2.popen2(self.cmd)
-        self.validate_output(self.teststr, self.expected, r, w)
-
-    def test_popen3(self):
-        if os.name == 'posix':
-            r, w, e = popen2.popen3([self.cmd])
-            self.validate_output(self.teststr, self.expected, r, w, e)
-
-        r, w, e = popen2.popen3(self.cmd)
-        self.validate_output(self.teststr, self.expected, r, w, e)
-
-    def test_os_popen2(self):
-        # same test as test_popen2(), but using the os.popen*() API
-        if os.name == 'posix':
-            w, r = os.popen2([self.cmd])
-            self.validate_output(self.teststr, self.expected, r, w)
-
-            w, r = os.popen2(["echo", self.teststr])
-            got = r.read()
-            self.assertEqual(got, self.teststr + "\n")
-
-        w, r = os.popen2(self.cmd)
-        self.validate_output(self.teststr, self.expected, r, w)
-
-    def test_os_popen3(self):
-        # same test as test_popen3(), but using the os.popen*() API
-        if os.name == 'posix':
-            w, r, e = os.popen3([self.cmd])
-            self.validate_output(self.teststr, self.expected, r, w, e)
-
-            w, r, e = os.popen3(["echo", self.teststr])
-            got = r.read()
-            self.assertEqual(got, self.teststr + "\n")
-            got = e.read()
-            self.assertFalse(got, "unexpected %r on stderr" % got)
-
-        w, r, e = os.popen3(self.cmd)
-        self.validate_output(self.teststr, self.expected, r, w, e)
-
-    def test_os_popen4(self):
-        if os.name == 'posix':
-            w, r = os.popen4([self.cmd])
-            self.validate_output(self.teststr, self.expected, r, w)
-
-            w, r = os.popen4(["echo", self.teststr])
-            got = r.read()
-            self.assertEqual(got, self.teststr + "\n")
-
-        w, r = os.popen4(self.cmd)
-        self.validate_output(self.teststr, self.expected, r, w)
-
-
-def test_main():
-    run_unittest(Popen2Test)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_poplib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_poplib.py
deleted file mode 100644
index af01fb7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_poplib.py
+++ /dev/null
@@ -1,343 +0,0 @@
-"""Test script for poplib module."""
-
-# Modified by Giampaolo Rodola' to give poplib.POP3 and poplib.POP3_SSL
-# a real test suite
-
-import poplib
-import asyncore
-import asynchat
-import socket
-import os
-import time
-import errno
-
-from unittest import TestCase
-from test import test_support
-from test.test_support import HOST
-threading = test_support.import_module('threading')
-
-
-# the dummy data returned by server when LIST and RETR commands are issued
-LIST_RESP = '1 1\r\n2 2\r\n3 3\r\n4 4\r\n5 5\r\n.\r\n'
-RETR_RESP = """From: postmaster@python.org\
-\r\nContent-Type: text/plain\r\n\
-MIME-Version: 1.0\r\n\
-Subject: Dummy\r\n\
-\r\n\
-line1\r\n\
-line2\r\n\
-line3\r\n\
-.\r\n"""
-
-
-class DummyPOP3Handler(asynchat.async_chat):
-
-    def __init__(self, conn):
-        asynchat.async_chat.__init__(self, conn)
-        self.set_terminator("\r\n")
-        self.in_buffer = []
-        self.push('+OK dummy pop3 server ready.')
-
-    def collect_incoming_data(self, data):
-        self.in_buffer.append(data)
-
-    def found_terminator(self):
-        line = ''.join(self.in_buffer)
-        self.in_buffer = []
-        cmd = line.split(' ')[0].lower()
-        space = line.find(' ')
-        if space != -1:
-            arg = line[space + 1:]
-        else:
-            arg = ""
-        if hasattr(self, 'cmd_' + cmd):
-            method = getattr(self, 'cmd_' + cmd)
-            method(arg)
-        else:
-            self.push('-ERR unrecognized POP3 command "%s".' %cmd)
-
-    def handle_error(self):
-        raise
-
-    def push(self, data):
-        asynchat.async_chat.push(self, data + '\r\n')
-
-    def cmd_echo(self, arg):
-        # sends back the received string (used by the test suite)
-        self.push(arg)
-
-    def cmd_user(self, arg):
-        if arg != "guido":
-            self.push("-ERR no such user")
-        self.push('+OK password required')
-
-    def cmd_pass(self, arg):
-        if arg != "python":
-            self.push("-ERR wrong password")
-        self.push('+OK 10 messages')
-
-    def cmd_stat(self, arg):
-        self.push('+OK 10 100')
-
-    def cmd_list(self, arg):
-        if arg:
-            self.push('+OK %s %s' %(arg, arg))
-        else:
-            self.push('+OK')
-            asynchat.async_chat.push(self, LIST_RESP)
-
-    cmd_uidl = cmd_list
-
-    def cmd_retr(self, arg):
-        self.push('+OK %s bytes' %len(RETR_RESP))
-        asynchat.async_chat.push(self, RETR_RESP)
-
-    cmd_top = cmd_retr
-
-    def cmd_dele(self, arg):
-        self.push('+OK message marked for deletion.')
-
-    def cmd_noop(self, arg):
-        self.push('+OK done nothing.')
-
-    def cmd_rpop(self, arg):
-        self.push('+OK done nothing.')
-
-
-class DummyPOP3Server(asyncore.dispatcher, threading.Thread):
-
-    handler = DummyPOP3Handler
-
-    def __init__(self, address, af=socket.AF_INET):
-        threading.Thread.__init__(self)
-        asyncore.dispatcher.__init__(self)
-        self.create_socket(af, socket.SOCK_STREAM)
-        self.bind(address)
-        self.listen(5)
-        self.active = False
-        self.active_lock = threading.Lock()
-        self.host, self.port = self.socket.getsockname()[:2]
-
-    def start(self):
-        assert not self.active
-        self.__flag = threading.Event()
-        threading.Thread.start(self)
-        self.__flag.wait()
-
-    def run(self):
-        self.active = True
-        self.__flag.set()
-        while self.active and asyncore.socket_map:
-            self.active_lock.acquire()
-            asyncore.loop(timeout=0.1, count=1)
-            self.active_lock.release()
-        asyncore.close_all(ignore_all=True)
-
-    def stop(self):
-        assert self.active
-        self.active = False
-        self.join()
-
-    def handle_accept(self):
-        conn, addr = self.accept()
-        self.handler = self.handler(conn)
-        self.close()
-
-    def handle_connect(self):
-        self.close()
-    handle_read = handle_connect
-
-    def writable(self):
-        return 0
-
-    def handle_error(self):
-        raise
-
-
-class TestPOP3Class(TestCase):
-
-    def assertOK(self, resp):
-        self.assertTrue(resp.startswith("+OK"))
-
-    def setUp(self):
-        self.server = DummyPOP3Server((HOST, 0))
-        self.server.start()
-        self.client = poplib.POP3(self.server.host, self.server.port)
-
-    def tearDown(self):
-        self.client.quit()
-        self.server.stop()
-
-    def test_getwelcome(self):
-        self.assertEqual(self.client.getwelcome(), '+OK dummy pop3 server ready.')
-
-    def test_exceptions(self):
-        self.assertRaises(poplib.error_proto, self.client._shortcmd, 'echo -err')
-
-    def test_user(self):
-        self.assertOK(self.client.user('guido'))
-        self.assertRaises(poplib.error_proto, self.client.user, 'invalid')
-
-    def test_pass_(self):
-        self.assertOK(self.client.pass_('python'))
-        self.assertRaises(poplib.error_proto, self.client.user, 'invalid')
-
-    def test_stat(self):
-        self.assertEqual(self.client.stat(), (10, 100))
-
-    def test_list(self):
-        self.assertEqual(self.client.list()[1:],
-                         (['1 1', '2 2', '3 3', '4 4', '5 5'], 25))
-        self.assertTrue(self.client.list('1').endswith("OK 1 1"))
-
-    def test_retr(self):
-        expected = ('+OK 116 bytes',
-                    ['From: postmaster@python.org', 'Content-Type: text/plain',
-                     'MIME-Version: 1.0', 'Subject: Dummy',
-                     '', 'line1', 'line2', 'line3'],
-                    113)
-        self.assertEqual(self.client.retr('foo'), expected)
-
-    def test_dele(self):
-        self.assertOK(self.client.dele('foo'))
-
-    def test_noop(self):
-        self.assertOK(self.client.noop())
-
-    def test_rpop(self):
-        self.assertOK(self.client.rpop('foo'))
-
-    def test_top(self):
-        expected =  ('+OK 116 bytes',
-                     ['From: postmaster@python.org', 'Content-Type: text/plain',
-                      'MIME-Version: 1.0', 'Subject: Dummy', '',
-                      'line1', 'line2', 'line3'],
-                     113)
-        self.assertEqual(self.client.top(1, 1), expected)
-
-    def test_uidl(self):
-        self.client.uidl()
-        self.client.uidl('foo')
-
-
-SUPPORTS_SSL = False
-if hasattr(poplib, 'POP3_SSL'):
-    import ssl
-
-    SUPPORTS_SSL = True
-    CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir, "keycert.pem")
-
-    class DummyPOP3_SSLHandler(DummyPOP3Handler):
-
-        def __init__(self, conn):
-            asynchat.async_chat.__init__(self, conn)
-            self.socket = ssl.wrap_socket(self.socket, certfile=CERTFILE,
-                                          server_side=True,
-                                          do_handshake_on_connect=False)
-            # Must try handshake before calling push()
-            self._ssl_accepting = True
-            self._do_ssl_handshake()
-            self.set_terminator("\r\n")
-            self.in_buffer = []
-            self.push('+OK dummy pop3 server ready.')
-
-        def _do_ssl_handshake(self):
-            try:
-                self.socket.do_handshake()
-            except ssl.SSLError, err:
-                if err.args[0] in (ssl.SSL_ERROR_WANT_READ,
-                                   ssl.SSL_ERROR_WANT_WRITE):
-                    return
-                elif err.args[0] == ssl.SSL_ERROR_EOF:
-                    return self.handle_close()
-                raise
-            except socket.error, err:
-                if err.args[0] == errno.ECONNABORTED:
-                    return self.handle_close()
-            else:
-                self._ssl_accepting = False
-
-        def handle_read(self):
-            if self._ssl_accepting:
-                self._do_ssl_handshake()
-            else:
-                DummyPOP3Handler.handle_read(self)
-
-    class TestPOP3_SSLClass(TestPOP3Class):
-        # repeat previous tests by using poplib.POP3_SSL
-
-        def setUp(self):
-            self.server = DummyPOP3Server((HOST, 0))
-            self.server.handler = DummyPOP3_SSLHandler
-            self.server.start()
-            self.client = poplib.POP3_SSL(self.server.host, self.server.port)
-
-        def test__all__(self):
-            self.assertIn('POP3_SSL', poplib.__all__)
-
-
-class TestTimeouts(TestCase):
-
-    def setUp(self):
-        self.evt = threading.Event()
-        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.sock.settimeout(3)
-        self.port = test_support.bind_port(self.sock)
-        threading.Thread(target=self.server, args=(self.evt,self.sock)).start()
-        time.sleep(.1)
-
-    def tearDown(self):
-        self.evt.wait()
-
-    def server(self, evt, serv):
-        serv.listen(5)
-        try:
-            conn, addr = serv.accept()
-        except socket.timeout:
-            pass
-        else:
-            conn.send("+ Hola mundo\n")
-            conn.close()
-        finally:
-            serv.close()
-            evt.set()
-
-    def testTimeoutDefault(self):
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        socket.setdefaulttimeout(30)
-        try:
-            pop = poplib.POP3("localhost", self.port)
-        finally:
-            socket.setdefaulttimeout(None)
-        self.assertEqual(pop.sock.gettimeout(), 30)
-        pop.sock.close()
-
-    def testTimeoutNone(self):
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        socket.setdefaulttimeout(30)
-        try:
-            pop = poplib.POP3(HOST, self.port, timeout=None)
-        finally:
-            socket.setdefaulttimeout(None)
-        self.assertTrue(pop.sock.gettimeout() is None)
-        pop.sock.close()
-
-    def testTimeoutValue(self):
-        pop = poplib.POP3("localhost", self.port, timeout=30)
-        self.assertEqual(pop.sock.gettimeout(), 30)
-        pop.sock.close()
-
-
-def test_main():
-    tests = [TestPOP3Class, TestTimeouts]
-    if SUPPORTS_SSL:
-        tests.append(TestPOP3_SSLClass)
-    thread_info = test_support.threading_setup()
-    try:
-        test_support.run_unittest(*tests)
-    finally:
-        test_support.threading_cleanup(*thread_info)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_posix.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_posix.py
deleted file mode 100644
index 3e81f0c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_posix.py
+++ /dev/null
@@ -1,429 +0,0 @@
-"Test posix functions"
-
-from test import test_support
-
-# Skip these tests if there is no posix module.
-posix = test_support.import_module('posix')
-
-import errno
-import sys
-import time
-import os
-import pwd
-import shutil
-import sys
-import unittest
-import warnings
-
-
-warnings.filterwarnings('ignore', '.* potential security risk .*',
-                        RuntimeWarning)
-
-class PosixTester(unittest.TestCase):
-
-    def setUp(self):
-        # create empty file
-        fp = open(test_support.TESTFN, 'w+')
-        fp.close()
-
-    def tearDown(self):
-        os.unlink(test_support.TESTFN)
-
-    def testNoArgFunctions(self):
-        # test posix functions which take no arguments and have
-        # no side-effects which we need to cleanup (e.g., fork, wait, abort)
-        NO_ARG_FUNCTIONS = [ "ctermid", "getcwd", "getcwdu", "uname",
-                             "times", "getloadavg", "tmpnam",
-                             "getegid", "geteuid", "getgid", "getgroups",
-                             "getpid", "getpgrp", "getppid", "getuid",
-                           ]
-
-        with warnings.catch_warnings():
-            warnings.filterwarnings("ignore", "", DeprecationWarning)
-            for name in NO_ARG_FUNCTIONS:
-                posix_func = getattr(posix, name, None)
-                if posix_func is not None:
-                    posix_func()
-                    self.assertRaises(TypeError, posix_func, 1)
-
-    if hasattr(posix, 'getresuid'):
-        def test_getresuid(self):
-            user_ids = posix.getresuid()
-            self.assertEqual(len(user_ids), 3)
-            for val in user_ids:
-                self.assertGreaterEqual(val, 0)
-
-    if hasattr(posix, 'getresgid'):
-        def test_getresgid(self):
-            group_ids = posix.getresgid()
-            self.assertEqual(len(group_ids), 3)
-            for val in group_ids:
-                self.assertGreaterEqual(val, 0)
-
-    if hasattr(posix, 'setresuid'):
-        def test_setresuid(self):
-            current_user_ids = posix.getresuid()
-            self.assertIsNone(posix.setresuid(*current_user_ids))
-            # -1 means don't change that value.
-            self.assertIsNone(posix.setresuid(-1, -1, -1))
-
-        def test_setresuid_exception(self):
-            # Don't do this test if someone is silly enough to run us as root.
-            current_user_ids = posix.getresuid()
-            if 0 not in current_user_ids:
-                new_user_ids = (current_user_ids[0]+1, -1, -1)
-                self.assertRaises(OSError, posix.setresuid, *new_user_ids)
-
-    if hasattr(posix, 'setresgid'):
-        def test_setresgid(self):
-            current_group_ids = posix.getresgid()
-            self.assertIsNone(posix.setresgid(*current_group_ids))
-            # -1 means don't change that value.
-            self.assertIsNone(posix.setresgid(-1, -1, -1))
-
-        def test_setresgid_exception(self):
-            # Don't do this test if someone is silly enough to run us as root.
-            current_group_ids = posix.getresgid()
-            if 0 not in current_group_ids:
-                new_group_ids = (current_group_ids[0]+1, -1, -1)
-                self.assertRaises(OSError, posix.setresgid, *new_group_ids)
-
-    @unittest.skipUnless(hasattr(posix, 'initgroups'),
-                         "test needs os.initgroups()")
-    def test_initgroups(self):
-        # It takes a string and an integer; check that it raises a TypeError
-        # for other argument lists.
-        self.assertRaises(TypeError, posix.initgroups)
-        self.assertRaises(TypeError, posix.initgroups, None)
-        self.assertRaises(TypeError, posix.initgroups, 3, "foo")
-        self.assertRaises(TypeError, posix.initgroups, "foo", 3, object())
-
-        # If a non-privileged user invokes it, it should fail with OSError
-        # EPERM.
-        if os.getuid() != 0:
-            name = pwd.getpwuid(posix.getuid()).pw_name
-            try:
-                posix.initgroups(name, 13)
-            except OSError as e:
-                self.assertEqual(e.errno, errno.EPERM)
-            else:
-                self.fail("Expected OSError to be raised by initgroups")
-
-    def test_statvfs(self):
-        if hasattr(posix, 'statvfs'):
-            self.assertTrue(posix.statvfs(os.curdir))
-
-    def test_fstatvfs(self):
-        if hasattr(posix, 'fstatvfs'):
-            fp = open(test_support.TESTFN)
-            try:
-                self.assertTrue(posix.fstatvfs(fp.fileno()))
-            finally:
-                fp.close()
-
-    def test_ftruncate(self):
-        if hasattr(posix, 'ftruncate'):
-            fp = open(test_support.TESTFN, 'w+')
-            try:
-                # we need to have some data to truncate
-                fp.write('test')
-                fp.flush()
-                posix.ftruncate(fp.fileno(), 0)
-            finally:
-                fp.close()
-
-    def test_dup(self):
-        if hasattr(posix, 'dup'):
-            fp = open(test_support.TESTFN)
-            try:
-                fd = posix.dup(fp.fileno())
-                self.assertIsInstance(fd, int)
-                os.close(fd)
-            finally:
-                fp.close()
-
-    def test_confstr(self):
-        if hasattr(posix, 'confstr'):
-            self.assertRaises(ValueError, posix.confstr, "CS_garbage")
-            self.assertEqual(len(posix.confstr("CS_PATH")) > 0, True)
-
-    def test_dup2(self):
-        if hasattr(posix, 'dup2'):
-            fp1 = open(test_support.TESTFN)
-            fp2 = open(test_support.TESTFN)
-            try:
-                posix.dup2(fp1.fileno(), fp2.fileno())
-            finally:
-                fp1.close()
-                fp2.close()
-
-    def fdopen_helper(self, *args):
-        fd = os.open(test_support.TESTFN, os.O_RDONLY)
-        fp2 = posix.fdopen(fd, *args)
-        fp2.close()
-
-    def test_fdopen(self):
-        if hasattr(posix, 'fdopen'):
-            self.fdopen_helper()
-            self.fdopen_helper('r')
-            self.fdopen_helper('r', 100)
-
-    def test_osexlock(self):
-        if hasattr(posix, "O_EXLOCK"):
-            fd = os.open(test_support.TESTFN,
-                         os.O_WRONLY|os.O_EXLOCK|os.O_CREAT)
-            self.assertRaises(OSError, os.open, test_support.TESTFN,
-                              os.O_WRONLY|os.O_EXLOCK|os.O_NONBLOCK)
-            os.close(fd)
-
-            if hasattr(posix, "O_SHLOCK"):
-                fd = os.open(test_support.TESTFN,
-                             os.O_WRONLY|os.O_SHLOCK|os.O_CREAT)
-                self.assertRaises(OSError, os.open, test_support.TESTFN,
-                                  os.O_WRONLY|os.O_EXLOCK|os.O_NONBLOCK)
-                os.close(fd)
-
-    def test_osshlock(self):
-        if hasattr(posix, "O_SHLOCK"):
-            fd1 = os.open(test_support.TESTFN,
-                         os.O_WRONLY|os.O_SHLOCK|os.O_CREAT)
-            fd2 = os.open(test_support.TESTFN,
-                          os.O_WRONLY|os.O_SHLOCK|os.O_CREAT)
-            os.close(fd2)
-            os.close(fd1)
-
-            if hasattr(posix, "O_EXLOCK"):
-                fd = os.open(test_support.TESTFN,
-                             os.O_WRONLY|os.O_SHLOCK|os.O_CREAT)
-                self.assertRaises(OSError, os.open, test_support.TESTFN,
-                                  os.O_RDONLY|os.O_EXLOCK|os.O_NONBLOCK)
-                os.close(fd)
-
-    def test_fstat(self):
-        if hasattr(posix, 'fstat'):
-            fp = open(test_support.TESTFN)
-            try:
-                self.assertTrue(posix.fstat(fp.fileno()))
-            finally:
-                fp.close()
-
-    def test_stat(self):
-        if hasattr(posix, 'stat'):
-            self.assertTrue(posix.stat(test_support.TESTFN))
-
-    def _test_all_chown_common(self, chown_func, first_param):
-        """Common code for chown, fchown and lchown tests."""
-        if os.getuid() == 0:
-            try:
-                # Many linux distros have a nfsnobody user as MAX_UID-2
-                # that makes a good test case for signedness issues.
-                #   http://bugs.python.org/issue1747858
-                # This part of the test only runs when run as root.
-                # Only scary people run their tests as root.
-                ent = pwd.getpwnam('nfsnobody')
-                chown_func(first_param, ent.pw_uid, ent.pw_gid)
-            except KeyError:
-                pass
-        else:
-            # non-root cannot chown to root, raises OSError
-            self.assertRaises(OSError, chown_func,
-                              first_param, 0, 0)
-
-        # test a successful chown call
-        chown_func(first_param, os.getuid(), os.getgid())
-
-    @unittest.skipUnless(hasattr(posix, 'chown'), "test needs os.chown()")
-    def test_chown(self):
-        # raise an OSError if the file does not exist
-        os.unlink(test_support.TESTFN)
-        self.assertRaises(OSError, posix.chown, test_support.TESTFN, -1, -1)
-
-        # re-create the file
-        open(test_support.TESTFN, 'w').close()
-        self._test_all_chown_common(posix.chown, test_support.TESTFN)
-
-    @unittest.skipUnless(hasattr(posix, 'fchown'), "test needs os.fchown()")
-    def test_fchown(self):
-        os.unlink(test_support.TESTFN)
-
-        # re-create the file
-        test_file = open(test_support.TESTFN, 'w')
-        try:
-            fd = test_file.fileno()
-            self._test_all_chown_common(posix.fchown, fd)
-        finally:
-            test_file.close()
-
-    @unittest.skipUnless(hasattr(posix, 'lchown'), "test needs os.lchown()")
-    def test_lchown(self):
-        os.unlink(test_support.TESTFN)
-        # create a symlink
-        os.symlink('/tmp/dummy-symlink-target', test_support.TESTFN)
-        self._test_all_chown_common(posix.lchown, test_support.TESTFN)
-
-    def test_chdir(self):
-        if hasattr(posix, 'chdir'):
-            posix.chdir(os.curdir)
-            self.assertRaises(OSError, posix.chdir, test_support.TESTFN)
-
-    def test_lsdir(self):
-        if hasattr(posix, 'lsdir'):
-            self.assertIn(test_support.TESTFN, posix.lsdir(os.curdir))
-
-    def test_access(self):
-        if hasattr(posix, 'access'):
-            self.assertTrue(posix.access(test_support.TESTFN, os.R_OK))
-
-    def test_umask(self):
-        if hasattr(posix, 'umask'):
-            old_mask = posix.umask(0)
-            self.assertIsInstance(old_mask, int)
-            posix.umask(old_mask)
-
-    def test_strerror(self):
-        if hasattr(posix, 'strerror'):
-            self.assertTrue(posix.strerror(0))
-
-    def test_pipe(self):
-        if hasattr(posix, 'pipe'):
-            reader, writer = posix.pipe()
-            os.close(reader)
-            os.close(writer)
-
-    def test_tempnam(self):
-        if hasattr(posix, 'tempnam'):
-            with warnings.catch_warnings():
-                warnings.filterwarnings("ignore", "tempnam", DeprecationWarning)
-                self.assertTrue(posix.tempnam())
-                self.assertTrue(posix.tempnam(os.curdir))
-                self.assertTrue(posix.tempnam(os.curdir, 'blah'))
-
-    def test_tmpfile(self):
-        if hasattr(posix, 'tmpfile'):
-            with warnings.catch_warnings():
-                warnings.filterwarnings("ignore", "tmpfile", DeprecationWarning)
-                fp = posix.tmpfile()
-                fp.close()
-
-    def test_utime(self):
-        if hasattr(posix, 'utime'):
-            now = time.time()
-            posix.utime(test_support.TESTFN, None)
-            self.assertRaises(TypeError, posix.utime, test_support.TESTFN, (None, None))
-            self.assertRaises(TypeError, posix.utime, test_support.TESTFN, (now, None))
-            self.assertRaises(TypeError, posix.utime, test_support.TESTFN, (None, now))
-            posix.utime(test_support.TESTFN, (int(now), int(now)))
-            posix.utime(test_support.TESTFN, (now, now))
-
-    def test_chflags(self):
-        if hasattr(posix, 'chflags'):
-            st = os.stat(test_support.TESTFN)
-            if hasattr(st, 'st_flags'):
-                posix.chflags(test_support.TESTFN, st.st_flags)
-
-    def test_lchflags(self):
-        if hasattr(posix, 'lchflags'):
-            st = os.stat(test_support.TESTFN)
-            if hasattr(st, 'st_flags'):
-                posix.lchflags(test_support.TESTFN, st.st_flags)
-
-    def test_getcwd_long_pathnames(self):
-        if hasattr(posix, 'getcwd'):
-            dirname = 'getcwd-test-directory-0123456789abcdef-01234567890abcdef'
-            curdir = os.getcwd()
-            base_path = os.path.abspath(test_support.TESTFN) + '.getcwd'
-
-            try:
-                os.mkdir(base_path)
-                os.chdir(base_path)
-            except:
-#               Just returning nothing instead of the SkipTest exception,
-#               because the test results in Error in that case.
-#               Is that ok?
-#                raise unittest.SkipTest, "cannot create directory for testing"
-                return
-
-            try:
-                def _create_and_do_getcwd(dirname, current_path_length = 0):
-                    try:
-                        os.mkdir(dirname)
-                    except:
-                        raise unittest.SkipTest, "mkdir cannot create directory sufficiently deep for getcwd test"
-
-                    os.chdir(dirname)
-                    try:
-                        os.getcwd()
-                        if current_path_length < 4099:
-                            _create_and_do_getcwd(dirname, current_path_length + len(dirname) + 1)
-                    except OSError as e:
-                        expected_errno = errno.ENAMETOOLONG
-                        if 'sunos' in sys.platform or 'openbsd' in sys.platform:
-                            expected_errno = errno.ERANGE # Issue 9185
-                        self.assertEqual(e.errno, expected_errno)
-                    finally:
-                        os.chdir('..')
-                        os.rmdir(dirname)
-
-                _create_and_do_getcwd(dirname)
-
-            finally:
-                os.chdir(curdir)
-                shutil.rmtree(base_path)
-
-    @unittest.skipUnless(hasattr(os, 'getegid'), "test needs os.getegid()")
-    def test_getgroups(self):
-        with os.popen('id -G') as idg:
-            groups = idg.read().strip()
-
-        if not groups:
-            raise unittest.SkipTest("need working 'id -G'")
-
-        # 'id -G' and 'os.getgroups()' should return the same
-        # groups, ignoring order and duplicates.
-        # #10822 - it is implementation defined whether posix.getgroups()
-        # includes the effective gid so we include it anyway, since id -G does
-        self.assertEqual(
-                set([int(x) for x in groups.split()]),
-                set(posix.getgroups() + [posix.getegid()]))
-
-class PosixGroupsTester(unittest.TestCase):
-
-    def setUp(self):
-        if posix.getuid() != 0:
-            raise unittest.SkipTest("not enough privileges")
-        if not hasattr(posix, 'getgroups'):
-            raise unittest.SkipTest("need posix.getgroups")
-        if sys.platform == 'darwin':
-            raise unittest.SkipTest("getgroups(2) is broken on OSX")
-        self.saved_groups = posix.getgroups()
-
-    def tearDown(self):
-        if hasattr(posix, 'setgroups'):
-            posix.setgroups(self.saved_groups)
-        elif hasattr(posix, 'initgroups'):
-            name = pwd.getpwuid(posix.getuid()).pw_name
-            posix.initgroups(name, self.saved_groups[0])
-
-    @unittest.skipUnless(hasattr(posix, 'initgroups'),
-                         "test needs posix.initgroups()")
-    def test_initgroups(self):
-        # find missing group
-
-        g = max(self.saved_groups) + 1
-        name = pwd.getpwuid(posix.getuid()).pw_name
-        posix.initgroups(name, g)
-        self.assertIn(g, posix.getgroups())
-
-    @unittest.skipUnless(hasattr(posix, 'setgroups'),
-                         "test needs posix.setgroups()")
-    def test_setgroups(self):
-        for groups in [[0], range(16)]:
-            posix.setgroups(groups)
-            self.assertListEqual(groups, posix.getgroups())
-
-
-def test_main():
-    test_support.run_unittest(PosixTester, PosixGroupsTester)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_posixpath.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_posixpath.py
deleted file mode 100644
index 20289f8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_posixpath.py
+++ /dev/null
@@ -1,348 +0,0 @@
-import unittest
-from test import test_support, test_genericpath
-
-import posixpath, os
-from posixpath import realpath, abspath, dirname, basename
-
-# An absolute path to a temporary filename for testing. We can't rely on TESTFN
-# being an absolute path, so we need this.
-
-ABSTFN = abspath(test_support.TESTFN)
-
-def safe_rmdir(dirname):
-    try:
-        os.rmdir(dirname)
-    except OSError:
-        pass
-
-class PosixPathTest(unittest.TestCase):
-
-    def setUp(self):
-        self.tearDown()
-
-    def tearDown(self):
-        for suffix in ["", "1", "2"]:
-            test_support.unlink(test_support.TESTFN + suffix)
-            safe_rmdir(test_support.TESTFN + suffix)
-
-    def test_join(self):
-        self.assertEqual(posixpath.join("/foo", "bar", "/bar", "baz"), "/bar/baz")
-        self.assertEqual(posixpath.join("/foo", "bar", "baz"), "/foo/bar/baz")
-        self.assertEqual(posixpath.join("/foo/", "bar/", "baz/"), "/foo/bar/baz/")
-
-    def test_split(self):
-        self.assertEqual(posixpath.split("/foo/bar"), ("/foo", "bar"))
-        self.assertEqual(posixpath.split("/"), ("/", ""))
-        self.assertEqual(posixpath.split("foo"), ("", "foo"))
-        self.assertEqual(posixpath.split("////foo"), ("////", "foo"))
-        self.assertEqual(posixpath.split("//foo//bar"), ("//foo", "bar"))
-
-    def splitextTest(self, path, filename, ext):
-        self.assertEqual(posixpath.splitext(path), (filename, ext))
-        self.assertEqual(posixpath.splitext("/" + path), ("/" + filename, ext))
-        self.assertEqual(posixpath.splitext("abc/" + path), ("abc/" + filename, ext))
-        self.assertEqual(posixpath.splitext("abc.def/" + path), ("abc.def/" + filename, ext))
-        self.assertEqual(posixpath.splitext("/abc.def/" + path), ("/abc.def/" + filename, ext))
-        self.assertEqual(posixpath.splitext(path + "/"), (filename + ext + "/", ""))
-
-    def test_splitext(self):
-        self.splitextTest("foo.bar", "foo", ".bar")
-        self.splitextTest("foo.boo.bar", "foo.boo", ".bar")
-        self.splitextTest("foo.boo.biff.bar", "foo.boo.biff", ".bar")
-        self.splitextTest(".csh.rc", ".csh", ".rc")
-        self.splitextTest("nodots", "nodots", "")
-        self.splitextTest(".cshrc", ".cshrc", "")
-        self.splitextTest("...manydots", "...manydots", "")
-        self.splitextTest("...manydots.ext", "...manydots", ".ext")
-        self.splitextTest(".", ".", "")
-        self.splitextTest("..", "..", "")
-        self.splitextTest("........", "........", "")
-        self.splitextTest("", "", "")
-
-    def test_isabs(self):
-        self.assertIs(posixpath.isabs(""), False)
-        self.assertIs(posixpath.isabs("/"), True)
-        self.assertIs(posixpath.isabs("/foo"), True)
-        self.assertIs(posixpath.isabs("/foo/bar"), True)
-        self.assertIs(posixpath.isabs("foo/bar"), False)
-
-    def test_basename(self):
-        self.assertEqual(posixpath.basename("/foo/bar"), "bar")
-        self.assertEqual(posixpath.basename("/"), "")
-        self.assertEqual(posixpath.basename("foo"), "foo")
-        self.assertEqual(posixpath.basename("////foo"), "foo")
-        self.assertEqual(posixpath.basename("//foo//bar"), "bar")
-
-    def test_dirname(self):
-        self.assertEqual(posixpath.dirname("/foo/bar"), "/foo")
-        self.assertEqual(posixpath.dirname("/"), "/")
-        self.assertEqual(posixpath.dirname("foo"), "")
-        self.assertEqual(posixpath.dirname("////foo"), "////")
-        self.assertEqual(posixpath.dirname("//foo//bar"), "//foo")
-
-    def test_islink(self):
-        self.assertIs(posixpath.islink(test_support.TESTFN + "1"), False)
-        f = open(test_support.TESTFN + "1", "wb")
-        try:
-            f.write("foo")
-            f.close()
-            self.assertIs(posixpath.islink(test_support.TESTFN + "1"), False)
-            if hasattr(os, "symlink"):
-                os.symlink(test_support.TESTFN + "1", test_support.TESTFN + "2")
-                self.assertIs(posixpath.islink(test_support.TESTFN + "2"), True)
-                os.remove(test_support.TESTFN + "1")
-                self.assertIs(posixpath.islink(test_support.TESTFN + "2"), True)
-                self.assertIs(posixpath.exists(test_support.TESTFN + "2"), False)
-                self.assertIs(posixpath.lexists(test_support.TESTFN + "2"), True)
-        finally:
-            if not f.close():
-                f.close()
-
-    def test_samefile(self):
-        f = open(test_support.TESTFN + "1", "wb")
-        try:
-            f.write("foo")
-            f.close()
-            self.assertIs(
-                posixpath.samefile(
-                    test_support.TESTFN + "1",
-                    test_support.TESTFN + "1"
-                ),
-                True
-            )
-            # If we don't have links, assume that os.stat doesn't return resonable
-            # inode information and thus, that samefile() doesn't work
-            if hasattr(os, "symlink"):
-                os.symlink(
-                    test_support.TESTFN + "1",
-                    test_support.TESTFN + "2"
-                )
-                self.assertIs(
-                    posixpath.samefile(
-                        test_support.TESTFN + "1",
-                        test_support.TESTFN + "2"
-                    ),
-                    True
-                )
-                os.remove(test_support.TESTFN + "2")
-                f = open(test_support.TESTFN + "2", "wb")
-                f.write("bar")
-                f.close()
-                self.assertIs(
-                    posixpath.samefile(
-                        test_support.TESTFN + "1",
-                        test_support.TESTFN + "2"
-                    ),
-                    False
-                )
-        finally:
-            if not f.close():
-                f.close()
-
-    def test_samestat(self):
-        f = open(test_support.TESTFN + "1", "wb")
-        try:
-            f.write("foo")
-            f.close()
-            self.assertIs(
-                posixpath.samestat(
-                    os.stat(test_support.TESTFN + "1"),
-                    os.stat(test_support.TESTFN + "1")
-                ),
-                True
-            )
-            # If we don't have links, assume that os.stat() doesn't return resonable
-            # inode information and thus, that samefile() doesn't work
-            if hasattr(os, "symlink"):
-                if hasattr(os, "symlink"):
-                    os.symlink(test_support.TESTFN + "1", test_support.TESTFN + "2")
-                    self.assertIs(
-                        posixpath.samestat(
-                            os.stat(test_support.TESTFN + "1"),
-                            os.stat(test_support.TESTFN + "2")
-                        ),
-                        True
-                    )
-                    os.remove(test_support.TESTFN + "2")
-                f = open(test_support.TESTFN + "2", "wb")
-                f.write("bar")
-                f.close()
-                self.assertIs(
-                    posixpath.samestat(
-                        os.stat(test_support.TESTFN + "1"),
-                        os.stat(test_support.TESTFN + "2")
-                    ),
-                    False
-                )
-        finally:
-            if not f.close():
-                f.close()
-
-    def test_ismount(self):
-        self.assertIs(posixpath.ismount("/"), True)
-
-    def test_expanduser(self):
-        self.assertEqual(posixpath.expanduser("foo"), "foo")
-        try:
-            import pwd
-        except ImportError:
-            pass
-        else:
-            self.assertIsInstance(posixpath.expanduser("~/"), basestring)
-            # if home directory == root directory, this test makes no sense
-            if posixpath.expanduser("~") != '/':
-                self.assertEqual(
-                    posixpath.expanduser("~") + "/",
-                    posixpath.expanduser("~/")
-                )
-            self.assertIsInstance(posixpath.expanduser("~root/"), basestring)
-            self.assertIsInstance(posixpath.expanduser("~foo/"), basestring)
-
-            with test_support.EnvironmentVarGuard() as env:
-                env['HOME'] = '/'
-                self.assertEqual(posixpath.expanduser("~"), "/")
-
-    def test_normpath(self):
-        self.assertEqual(posixpath.normpath(""), ".")
-        self.assertEqual(posixpath.normpath("/"), "/")
-        self.assertEqual(posixpath.normpath("//"), "//")
-        self.assertEqual(posixpath.normpath("///"), "/")
-        self.assertEqual(posixpath.normpath("///foo/.//bar//"), "/foo/bar")
-        self.assertEqual(posixpath.normpath("///foo/.//bar//.//..//.//baz"), "/foo/baz")
-        self.assertEqual(posixpath.normpath("///..//./foo/.//bar"), "/foo/bar")
-
-    if hasattr(os, "symlink"):
-        def test_realpath_basic(self):
-            # Basic operation.
-            try:
-                os.symlink(ABSTFN+"1", ABSTFN)
-                self.assertEqual(realpath(ABSTFN), ABSTFN+"1")
-            finally:
-                test_support.unlink(ABSTFN)
-
-        def test_realpath_symlink_loops(self):
-            # Bug #930024, return the path unchanged if we get into an infinite
-            # symlink loop.
-            try:
-                old_path = abspath('.')
-                os.symlink(ABSTFN, ABSTFN)
-                self.assertEqual(realpath(ABSTFN), ABSTFN)
-
-                os.symlink(ABSTFN+"1", ABSTFN+"2")
-                os.symlink(ABSTFN+"2", ABSTFN+"1")
-                self.assertEqual(realpath(ABSTFN+"1"), ABSTFN+"1")
-                self.assertEqual(realpath(ABSTFN+"2"), ABSTFN+"2")
-
-                # Test using relative path as well.
-                os.chdir(dirname(ABSTFN))
-                self.assertEqual(realpath(basename(ABSTFN)), ABSTFN)
-            finally:
-                os.chdir(old_path)
-                test_support.unlink(ABSTFN)
-                test_support.unlink(ABSTFN+"1")
-                test_support.unlink(ABSTFN+"2")
-
-        def test_realpath_resolve_parents(self):
-            # We also need to resolve any symlinks in the parents of a relative
-            # path passed to realpath. E.g.: current working directory is
-            # /usr/doc with 'doc' being a symlink to /usr/share/doc. We call
-            # realpath("a"). This should return /usr/share/doc/a/.
-            try:
-                old_path = abspath('.')
-                os.mkdir(ABSTFN)
-                os.mkdir(ABSTFN + "/y")
-                os.symlink(ABSTFN + "/y", ABSTFN + "/k")
-
-                os.chdir(ABSTFN + "/k")
-                self.assertEqual(realpath("a"), ABSTFN + "/y/a")
-            finally:
-                os.chdir(old_path)
-                test_support.unlink(ABSTFN + "/k")
-                safe_rmdir(ABSTFN + "/y")
-                safe_rmdir(ABSTFN)
-
-        def test_realpath_resolve_before_normalizing(self):
-            # Bug #990669: Symbolic links should be resolved before we
-            # normalize the path. E.g.: if we have directories 'a', 'k' and 'y'
-            # in the following hierarchy:
-            # a/k/y
-            #
-            # and a symbolic link 'link-y' pointing to 'y' in directory 'a',
-            # then realpath("link-y/..") should return 'k', not 'a'.
-            try:
-                old_path = abspath('.')
-                os.mkdir(ABSTFN)
-                os.mkdir(ABSTFN + "/k")
-                os.mkdir(ABSTFN + "/k/y")
-                os.symlink(ABSTFN + "/k/y", ABSTFN + "/link-y")
-
-                # Absolute path.
-                self.assertEqual(realpath(ABSTFN + "/link-y/.."), ABSTFN + "/k")
-                # Relative path.
-                os.chdir(dirname(ABSTFN))
-                self.assertEqual(realpath(basename(ABSTFN) + "/link-y/.."),
-                                 ABSTFN + "/k")
-            finally:
-                os.chdir(old_path)
-                test_support.unlink(ABSTFN + "/link-y")
-                safe_rmdir(ABSTFN + "/k/y")
-                safe_rmdir(ABSTFN + "/k")
-                safe_rmdir(ABSTFN)
-
-        def test_realpath_resolve_first(self):
-            # Bug #1213894: The first component of the path, if not absolute,
-            # must be resolved too.
-
-            try:
-                old_path = abspath('.')
-                os.mkdir(ABSTFN)
-                os.mkdir(ABSTFN + "/k")
-                os.symlink(ABSTFN, ABSTFN + "link")
-                os.chdir(dirname(ABSTFN))
-
-                base = basename(ABSTFN)
-                self.assertEqual(realpath(base + "link"), ABSTFN)
-                self.assertEqual(realpath(base + "link/k"), ABSTFN + "/k")
-            finally:
-                os.chdir(old_path)
-                test_support.unlink(ABSTFN + "link")
-                safe_rmdir(ABSTFN + "/k")
-                safe_rmdir(ABSTFN)
-
-    def test_relpath(self):
-        (real_getcwd, os.getcwd) = (os.getcwd, lambda: r"/home/user/bar")
-        try:
-            curdir = os.path.split(os.getcwd())[-1]
-            self.assertRaises(ValueError, posixpath.relpath, "")
-            self.assertEqual(posixpath.relpath("a"), "a")
-            self.assertEqual(posixpath.relpath(posixpath.abspath("a")), "a")
-            self.assertEqual(posixpath.relpath("a/b"), "a/b")
-            self.assertEqual(posixpath.relpath("../a/b"), "../a/b")
-            self.assertEqual(posixpath.relpath("a", "../b"), "../"+curdir+"/a")
-            self.assertEqual(posixpath.relpath("a/b", "../c"), "../"+curdir+"/a/b")
-            self.assertEqual(posixpath.relpath("a", "b/c"), "../../a")
-            self.assertEqual(posixpath.relpath("a", "a"), ".")
-            self.assertEqual(posixpath.relpath("/foo/bar/bat", "/x/y/z"), '../../../foo/bar/bat')
-            self.assertEqual(posixpath.relpath("/foo/bar/bat", "/foo/bar"), 'bat')
-            self.assertEqual(posixpath.relpath("/foo/bar/bat", "/"), 'foo/bar/bat')
-            self.assertEqual(posixpath.relpath("/", "/foo/bar/bat"), '../../..')
-            self.assertEqual(posixpath.relpath("/foo/bar/bat", "/x"), '../foo/bar/bat')
-            self.assertEqual(posixpath.relpath("/x", "/foo/bar/bat"), '../../../x')
-            self.assertEqual(posixpath.relpath("/", "/"), '.')
-            self.assertEqual(posixpath.relpath("/a", "/a"), '.')
-            self.assertEqual(posixpath.relpath("/a/b", "/a/b"), '.')
-        finally:
-            os.getcwd = real_getcwd
-
-
-class PosixCommonTest(test_genericpath.CommonTest):
-    pathmodule = posixpath
-    attributes = ['relpath', 'samefile', 'sameopenfile', 'samestat']
-
-
-def test_main():
-    test_support.run_unittest(PosixPathTest, PosixCommonTest)
-
-
-if __name__=="__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pow.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pow.py
deleted file mode 100644
index 7bcd604..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pow.py
+++ /dev/null
@@ -1,129 +0,0 @@
-import test.test_support, unittest
-
-class PowTest(unittest.TestCase):
-
-    def powtest(self, type):
-        if type != float:
-            for i in range(-1000, 1000):
-                self.assertEqual(pow(type(i), 0), 1)
-                self.assertEqual(pow(type(i), 1), type(i))
-                self.assertEqual(pow(type(0), 1), type(0))
-                self.assertEqual(pow(type(1), 1), type(1))
-
-            for i in range(-100, 100):
-                self.assertEqual(pow(type(i), 3), i*i*i)
-
-            pow2 = 1
-            for i in range(0,31):
-                self.assertEqual(pow(2, i), pow2)
-                if i != 30 : pow2 = pow2*2
-
-            for othertype in int, long:
-                for i in range(-10, 0) + range(1, 10):
-                    ii = type(i)
-                    for j in range(1, 11):
-                        jj = -othertype(j)
-                        pow(ii, jj)
-
-        for othertype in int, long, float:
-            for i in range(1, 100):
-                zero = type(0)
-                exp = -othertype(i/10.0)
-                if exp == 0:
-                    continue
-                self.assertRaises(ZeroDivisionError, pow, zero, exp)
-
-        il, ih = -20, 20
-        jl, jh = -5,   5
-        kl, kh = -10, 10
-        asseq = self.assertEqual
-        if type == float:
-            il = 1
-            asseq = self.assertAlmostEqual
-        elif type == int:
-            jl = 0
-        elif type == long:
-            jl, jh = 0, 15
-        for i in range(il, ih+1):
-            for j in range(jl, jh+1):
-                for k in range(kl, kh+1):
-                    if k != 0:
-                        if type == float or j < 0:
-                            self.assertRaises(TypeError, pow, type(i), j, k)
-                            continue
-                        asseq(
-                            pow(type(i),j,k),
-                            pow(type(i),j)% type(k)
-                        )
-
-    def test_powint(self):
-        self.powtest(int)
-
-    def test_powlong(self):
-        self.powtest(long)
-
-    def test_powfloat(self):
-        self.powtest(float)
-
-    def test_other(self):
-        # Other tests-- not very systematic
-        self.assertEqual(pow(3,3) % 8, pow(3,3,8))
-        self.assertEqual(pow(3,3) % -8, pow(3,3,-8))
-        self.assertEqual(pow(3,2) % -2, pow(3,2,-2))
-        self.assertEqual(pow(-3,3) % 8, pow(-3,3,8))
-        self.assertEqual(pow(-3,3) % -8, pow(-3,3,-8))
-        self.assertEqual(pow(5,2) % -8, pow(5,2,-8))
-
-        self.assertEqual(pow(3L,3L) % 8, pow(3L,3L,8))
-        self.assertEqual(pow(3L,3L) % -8, pow(3L,3L,-8))
-        self.assertEqual(pow(3L,2) % -2, pow(3L,2,-2))
-        self.assertEqual(pow(-3L,3L) % 8, pow(-3L,3L,8))
-        self.assertEqual(pow(-3L,3L) % -8, pow(-3L,3L,-8))
-        self.assertEqual(pow(5L,2) % -8, pow(5L,2,-8))
-
-        for i in range(-10, 11):
-            for j in range(0, 6):
-                for k in range(-7, 11):
-                    if j >= 0 and k != 0:
-                        self.assertEqual(
-                            pow(i,j) % k,
-                            pow(i,j,k)
-                        )
-                    if j >= 0 and k != 0:
-                        self.assertEqual(
-                            pow(long(i),j) % k,
-                            pow(long(i),j,k)
-                        )
-
-    def test_bug643260(self):
-        class TestRpow:
-            def __rpow__(self, other):
-                return None
-        None ** TestRpow() # Won't fail when __rpow__ invoked.  SF bug #643260.
-
-    def test_bug705231(self):
-        # -1.0 raised to an integer should never blow up.  It did if the
-        # platform pow() was buggy, and Python didn't worm around it.
-        eq = self.assertEqual
-        a = -1.0
-        # The next two tests can still fail if the platform floor()
-        # function doesn't treat all large inputs as integers
-        # test_math should also fail if that is happening
-        eq(pow(a, 1.23e167), 1.0)
-        eq(pow(a, -1.23e167), 1.0)
-        for b in range(-10, 11):
-            eq(pow(a, float(b)), b & 1 and -1.0 or 1.0)
-        for n in range(0, 100):
-            fiveto = float(5 ** n)
-            # For small n, fiveto will be odd.  Eventually we run out of
-            # mantissa bits, though, and thereafer fiveto will be even.
-            expected = fiveto % 2.0 and -1.0 or 1.0
-            eq(pow(a, fiveto), expected)
-            eq(pow(a, -fiveto), expected)
-        eq(expected, 1.0)   # else we didn't push fiveto to evenness
-
-def test_main():
-    test.test_support.run_unittest(PowTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pprint.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pprint.py
deleted file mode 100644
index bc0aee8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pprint.py
+++ /dev/null
@@ -1,432 +0,0 @@
-import pprint
-import test.test_support
-import unittest
-import test.test_set
-
-try:
-    uni = unicode
-except NameError:
-    def uni(x):
-        return x
-
-# list, tuple and dict subclasses that do or don't overwrite __repr__
-class list2(list):
-    pass
-
-class list3(list):
-    def __repr__(self):
-        return list.__repr__(self)
-
-class tuple2(tuple):
-    pass
-
-class tuple3(tuple):
-    def __repr__(self):
-        return tuple.__repr__(self)
-
-class dict2(dict):
-    pass
-
-class dict3(dict):
-    def __repr__(self):
-        return dict.__repr__(self)
-
-class QueryTestCase(unittest.TestCase):
-
-    def setUp(self):
-        self.a = range(100)
-        self.b = range(200)
-        self.a[-12] = self.b
-
-    def test_basic(self):
-        # Verify .isrecursive() and .isreadable() w/o recursion
-        pp = pprint.PrettyPrinter()
-        for safe in (2, 2.0, 2j, "abc", [3], (2,2), {3: 3}, uni("yaddayadda"),
-                     self.a, self.b):
-            # module-level convenience functions
-            self.assertFalse(pprint.isrecursive(safe),
-                             "expected not isrecursive for %r" % (safe,))
-            self.assertTrue(pprint.isreadable(safe),
-                            "expected isreadable for %r" % (safe,))
-            # PrettyPrinter methods
-            self.assertFalse(pp.isrecursive(safe),
-                             "expected not isrecursive for %r" % (safe,))
-            self.assertTrue(pp.isreadable(safe),
-                            "expected isreadable for %r" % (safe,))
-
-    def test_knotted(self):
-        # Verify .isrecursive() and .isreadable() w/ recursion
-        # Tie a knot.
-        self.b[67] = self.a
-        # Messy dict.
-        self.d = {}
-        self.d[0] = self.d[1] = self.d[2] = self.d
-
-        pp = pprint.PrettyPrinter()
-
-        for icky in self.a, self.b, self.d, (self.d, self.d):
-            self.assertTrue(pprint.isrecursive(icky), "expected isrecursive")
-            self.assertFalse(pprint.isreadable(icky), "expected not isreadable")
-            self.assertTrue(pp.isrecursive(icky), "expected isrecursive")
-            self.assertFalse(pp.isreadable(icky), "expected not isreadable")
-
-        # Break the cycles.
-        self.d.clear()
-        del self.a[:]
-        del self.b[:]
-
-        for safe in self.a, self.b, self.d, (self.d, self.d):
-            # module-level convenience functions
-            self.assertFalse(pprint.isrecursive(safe),
-                             "expected not isrecursive for %r" % (safe,))
-            self.assertTrue(pprint.isreadable(safe),
-                            "expected isreadable for %r" % (safe,))
-            # PrettyPrinter methods
-            self.assertFalse(pp.isrecursive(safe),
-                             "expected not isrecursive for %r" % (safe,))
-            self.assertTrue(pp.isreadable(safe),
-                            "expected isreadable for %r" % (safe,))
-
-    def test_unreadable(self):
-        # Not recursive but not readable anyway
-        pp = pprint.PrettyPrinter()
-        for unreadable in type(3), pprint, pprint.isrecursive:
-            # module-level convenience functions
-            self.assertFalse(pprint.isrecursive(unreadable),
-                             "expected not isrecursive for %r" % (unreadable,))
-            self.assertFalse(pprint.isreadable(unreadable),
-                             "expected not isreadable for %r" % (unreadable,))
-            # PrettyPrinter methods
-            self.assertFalse(pp.isrecursive(unreadable),
-                             "expected not isrecursive for %r" % (unreadable,))
-            self.assertFalse(pp.isreadable(unreadable),
-                             "expected not isreadable for %r" % (unreadable,))
-
-    def test_same_as_repr(self):
-        # Simple objects, small containers and classes that overwrite __repr__
-        # For those the result should be the same as repr().
-        # Ahem.  The docs don't say anything about that -- this appears to
-        # be testing an implementation quirk.  Starting in Python 2.5, it's
-        # not true for dicts:  pprint always sorts dicts by key now; before,
-        # it sorted a dict display if and only if the display required
-        # multiple lines.  For that reason, dicts with more than one element
-        # aren't tested here.
-        for simple in (0, 0L, 0+0j, 0.0, "", uni(""),
-                       (), tuple2(), tuple3(),
-                       [], list2(), list3(),
-                       {}, dict2(), dict3(),
-                       self.assertTrue, pprint,
-                       -6, -6L, -6-6j, -1.5, "x", uni("x"), (3,), [3], {3: 6},
-                       (1,2), [3,4], {5: 6},
-                       tuple2((1,2)), tuple3((1,2)), tuple3(range(100)),
-                       [3,4], list2([3,4]), list3([3,4]), list3(range(100)),
-                       dict2({5: 6}), dict3({5: 6}),
-                       range(10, -11, -1)
-                      ):
-            native = repr(simple)
-            for function in "pformat", "saferepr":
-                f = getattr(pprint, function)
-                got = f(simple)
-                self.assertEqual(native, got,
-                                 "expected %s got %s from pprint.%s" %
-                                 (native, got, function))
-
-    def test_basic_line_wrap(self):
-        # verify basic line-wrapping operation
-        o = {'RPM_cal': 0,
-             'RPM_cal2': 48059,
-             'Speed_cal': 0,
-             'controldesk_runtime_us': 0,
-             'main_code_runtime_us': 0,
-             'read_io_runtime_us': 0,
-             'write_io_runtime_us': 43690}
-        exp = """\
-{'RPM_cal': 0,
- 'RPM_cal2': 48059,
- 'Speed_cal': 0,
- 'controldesk_runtime_us': 0,
- 'main_code_runtime_us': 0,
- 'read_io_runtime_us': 0,
- 'write_io_runtime_us': 43690}"""
-        for type in [dict, dict2]:
-            self.assertEqual(pprint.pformat(type(o)), exp)
-
-        o = range(100)
-        exp = '[%s]' % ',\n '.join(map(str, o))
-        for type in [list, list2]:
-            self.assertEqual(pprint.pformat(type(o)), exp)
-
-        o = tuple(range(100))
-        exp = '(%s)' % ',\n '.join(map(str, o))
-        for type in [tuple, tuple2]:
-            self.assertEqual(pprint.pformat(type(o)), exp)
-
-        # indent parameter
-        o = range(100)
-        exp = '[   %s]' % ',\n    '.join(map(str, o))
-        for type in [list, list2]:
-            self.assertEqual(pprint.pformat(type(o), indent=4), exp)
-
-    def test_nested_indentations(self):
-        o1 = list(range(10))
-        o2 = dict(first=1, second=2, third=3)
-        o = [o1, o2]
-        expected = """\
-[   [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
-    {   'first': 1,
-        'second': 2,
-        'third': 3}]"""
-        self.assertEqual(pprint.pformat(o, indent=4, width=42), expected)
-
-    def test_sorted_dict(self):
-        # Starting in Python 2.5, pprint sorts dict displays by key regardless
-        # of how small the dictionary may be.
-        # Before the change, on 32-bit Windows pformat() gave order
-        # 'a', 'c', 'b' here, so this test failed.
-        d = {'a': 1, 'b': 1, 'c': 1}
-        self.assertEqual(pprint.pformat(d), "{'a': 1, 'b': 1, 'c': 1}")
-        self.assertEqual(pprint.pformat([d, d]),
-            "[{'a': 1, 'b': 1, 'c': 1}, {'a': 1, 'b': 1, 'c': 1}]")
-
-        # The next one is kind of goofy.  The sorted order depends on the
-        # alphabetic order of type names:  "int" < "str" < "tuple".  Before
-        # Python 2.5, this was in the test_same_as_repr() test.  It's worth
-        # keeping around for now because it's one of few tests of pprint
-        # against a crazy mix of types.
-        self.assertEqual(pprint.pformat({"xy\tab\n": (3,), 5: [[]], (): {}}),
-            r"{5: [[]], 'xy\tab\n': (3,), (): {}}")
-
-    def test_subclassing(self):
-        o = {'names with spaces': 'should be presented using repr()',
-             'others.should.not.be': 'like.this'}
-        exp = """\
-{'names with spaces': 'should be presented using repr()',
- others.should.not.be: like.this}"""
-        self.assertEqual(DottedPrettyPrinter().pformat(o), exp)
-
-    def test_set_reprs(self):
-        self.assertEqual(pprint.pformat(set()), 'set()')
-        self.assertEqual(pprint.pformat(set(range(3))), 'set([0, 1, 2])')
-        self.assertEqual(pprint.pformat(frozenset()), 'frozenset()')
-        self.assertEqual(pprint.pformat(frozenset(range(3))), 'frozenset([0, 1, 2])')
-        cube_repr_tgt = """\
-{frozenset([]): frozenset([frozenset([2]), frozenset([0]), frozenset([1])]),
- frozenset([0]): frozenset([frozenset(),
-                            frozenset([0, 2]),
-                            frozenset([0, 1])]),
- frozenset([1]): frozenset([frozenset(),
-                            frozenset([1, 2]),
-                            frozenset([0, 1])]),
- frozenset([2]): frozenset([frozenset(),
-                            frozenset([1, 2]),
-                            frozenset([0, 2])]),
- frozenset([1, 2]): frozenset([frozenset([2]),
-                               frozenset([1]),
-                               frozenset([0, 1, 2])]),
- frozenset([0, 2]): frozenset([frozenset([2]),
-                               frozenset([0]),
-                               frozenset([0, 1, 2])]),
- frozenset([0, 1]): frozenset([frozenset([0]),
-                               frozenset([1]),
-                               frozenset([0, 1, 2])]),
- frozenset([0, 1, 2]): frozenset([frozenset([1, 2]),
-                                  frozenset([0, 2]),
-                                  frozenset([0, 1])])}"""
-        cube = test.test_set.cube(3)
-        self.assertEqual(pprint.pformat(cube), cube_repr_tgt)
-        cubo_repr_tgt = """\
-{frozenset([frozenset([0, 2]), frozenset([0])]): frozenset([frozenset([frozenset([0,
-                                                                                  2]),
-                                                                       frozenset([0,
-                                                                                  1,
-                                                                                  2])]),
-                                                            frozenset([frozenset([0]),
-                                                                       frozenset([0,
-                                                                                  1])]),
-                                                            frozenset([frozenset(),
-                                                                       frozenset([0])]),
-                                                            frozenset([frozenset([2]),
-                                                                       frozenset([0,
-                                                                                  2])])]),
- frozenset([frozenset([0, 1]), frozenset([1])]): frozenset([frozenset([frozenset([0,
-                                                                                  1]),
-                                                                       frozenset([0,
-                                                                                  1,
-                                                                                  2])]),
-                                                            frozenset([frozenset([0]),
-                                                                       frozenset([0,
-                                                                                  1])]),
-                                                            frozenset([frozenset([1]),
-                                                                       frozenset([1,
-                                                                                  2])]),
-                                                            frozenset([frozenset(),
-                                                                       frozenset([1])])]),
- frozenset([frozenset([1, 2]), frozenset([1])]): frozenset([frozenset([frozenset([1,
-                                                                                  2]),
-                                                                       frozenset([0,
-                                                                                  1,
-                                                                                  2])]),
-                                                            frozenset([frozenset([2]),
-                                                                       frozenset([1,
-                                                                                  2])]),
-                                                            frozenset([frozenset(),
-                                                                       frozenset([1])]),
-                                                            frozenset([frozenset([1]),
-                                                                       frozenset([0,
-                                                                                  1])])]),
- frozenset([frozenset([1, 2]), frozenset([2])]): frozenset([frozenset([frozenset([1,
-                                                                                  2]),
-                                                                       frozenset([0,
-                                                                                  1,
-                                                                                  2])]),
-                                                            frozenset([frozenset([1]),
-                                                                       frozenset([1,
-                                                                                  2])]),
-                                                            frozenset([frozenset([2]),
-                                                                       frozenset([0,
-                                                                                  2])]),
-                                                            frozenset([frozenset(),
-                                                                       frozenset([2])])]),
- frozenset([frozenset([]), frozenset([0])]): frozenset([frozenset([frozenset([0]),
-                                                                   frozenset([0,
-                                                                              1])]),
-                                                        frozenset([frozenset([0]),
-                                                                   frozenset([0,
-                                                                              2])]),
-                                                        frozenset([frozenset(),
-                                                                   frozenset([1])]),
-                                                        frozenset([frozenset(),
-                                                                   frozenset([2])])]),
- frozenset([frozenset([]), frozenset([1])]): frozenset([frozenset([frozenset(),
-                                                                   frozenset([0])]),
-                                                        frozenset([frozenset([1]),
-                                                                   frozenset([1,
-                                                                              2])]),
-                                                        frozenset([frozenset(),
-                                                                   frozenset([2])]),
-                                                        frozenset([frozenset([1]),
-                                                                   frozenset([0,
-                                                                              1])])]),
- frozenset([frozenset([2]), frozenset([])]): frozenset([frozenset([frozenset([2]),
-                                                                   frozenset([1,
-                                                                              2])]),
-                                                        frozenset([frozenset(),
-                                                                   frozenset([0])]),
-                                                        frozenset([frozenset(),
-                                                                   frozenset([1])]),
-                                                        frozenset([frozenset([2]),
-                                                                   frozenset([0,
-                                                                              2])])]),
- frozenset([frozenset([0, 1, 2]), frozenset([0, 1])]): frozenset([frozenset([frozenset([1,
-                                                                                        2]),
-                                                                             frozenset([0,
-                                                                                        1,
-                                                                                        2])]),
-                                                                  frozenset([frozenset([0,
-                                                                                        2]),
-                                                                             frozenset([0,
-                                                                                        1,
-                                                                                        2])]),
-                                                                  frozenset([frozenset([0]),
-                                                                             frozenset([0,
-                                                                                        1])]),
-                                                                  frozenset([frozenset([1]),
-                                                                             frozenset([0,
-                                                                                        1])])]),
- frozenset([frozenset([0]), frozenset([0, 1])]): frozenset([frozenset([frozenset(),
-                                                                       frozenset([0])]),
-                                                            frozenset([frozenset([0,
-                                                                                  1]),
-                                                                       frozenset([0,
-                                                                                  1,
-                                                                                  2])]),
-                                                            frozenset([frozenset([0]),
-                                                                       frozenset([0,
-                                                                                  2])]),
-                                                            frozenset([frozenset([1]),
-                                                                       frozenset([0,
-                                                                                  1])])]),
- frozenset([frozenset([2]), frozenset([0, 2])]): frozenset([frozenset([frozenset([0,
-                                                                                  2]),
-                                                                       frozenset([0,
-                                                                                  1,
-                                                                                  2])]),
-                                                            frozenset([frozenset([2]),
-                                                                       frozenset([1,
-                                                                                  2])]),
-                                                            frozenset([frozenset([0]),
-                                                                       frozenset([0,
-                                                                                  2])]),
-                                                            frozenset([frozenset(),
-                                                                       frozenset([2])])]),
- frozenset([frozenset([0, 1, 2]), frozenset([0, 2])]): frozenset([frozenset([frozenset([1,
-                                                                                        2]),
-                                                                             frozenset([0,
-                                                                                        1,
-                                                                                        2])]),
-                                                                  frozenset([frozenset([0,
-                                                                                        1]),
-                                                                             frozenset([0,
-                                                                                        1,
-                                                                                        2])]),
-                                                                  frozenset([frozenset([0]),
-                                                                             frozenset([0,
-                                                                                        2])]),
-                                                                  frozenset([frozenset([2]),
-                                                                             frozenset([0,
-                                                                                        2])])]),
- frozenset([frozenset([1, 2]), frozenset([0, 1, 2])]): frozenset([frozenset([frozenset([0,
-                                                                                        2]),
-                                                                             frozenset([0,
-                                                                                        1,
-                                                                                        2])]),
-                                                                  frozenset([frozenset([0,
-                                                                                        1]),
-                                                                             frozenset([0,
-                                                                                        1,
-                                                                                        2])]),
-                                                                  frozenset([frozenset([2]),
-                                                                             frozenset([1,
-                                                                                        2])]),
-                                                                  frozenset([frozenset([1]),
-                                                                             frozenset([1,
-                                                                                        2])])])}"""
-
-        cubo = test.test_set.linegraph(cube)
-        self.assertEqual(pprint.pformat(cubo), cubo_repr_tgt)
-
-    def test_depth(self):
-        nested_tuple = (1, (2, (3, (4, (5, 6)))))
-        nested_dict = {1: {2: {3: {4: {5: {6: 6}}}}}}
-        nested_list = [1, [2, [3, [4, [5, [6, []]]]]]]
-        self.assertEqual(pprint.pformat(nested_tuple), repr(nested_tuple))
-        self.assertEqual(pprint.pformat(nested_dict), repr(nested_dict))
-        self.assertEqual(pprint.pformat(nested_list), repr(nested_list))
-
-        lv1_tuple = '(1, (...))'
-        lv1_dict = '{1: {...}}'
-        lv1_list = '[1, [...]]'
-        self.assertEqual(pprint.pformat(nested_tuple, depth=1), lv1_tuple)
-        self.assertEqual(pprint.pformat(nested_dict, depth=1), lv1_dict)
-        self.assertEqual(pprint.pformat(nested_list, depth=1), lv1_list)
-
-
-class DottedPrettyPrinter(pprint.PrettyPrinter):
-
-    def format(self, object, context, maxlevels, level):
-        if isinstance(object, str):
-            if ' ' in object:
-                return repr(object), 1, 0
-            else:
-                return object, 0, 0
-        else:
-            return pprint.PrettyPrinter.format(
-                self, object, context, maxlevels, level)
-
-
-def test_main():
-    test.test_support.run_unittest(QueryTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_print.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_print.py
deleted file mode 100644
index 9c8fce0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_print.py
+++ /dev/null
@@ -1,141 +0,0 @@
-"""Test correct operation of the print function.
-"""
-
-# In 2.6, this gives us the behavior we want.  In 3.0, it has
-#  no function, but it still must parse correctly.
-from __future__ import print_function
-
-import unittest
-from test import test_support
-
-from StringIO import StringIO
-
-NotDefined = object()
-
-# A dispatch table all 8 combinations of providing
-#  sep, end, and file
-# I use this machinery so that I'm not just passing default
-#  values to print, I'm either passing or not passing in the
-#  arguments
-dispatch = {
-    (False, False, False):
-     lambda args, sep, end, file: print(*args),
-    (False, False, True):
-     lambda args, sep, end, file: print(file=file, *args),
-    (False, True,  False):
-     lambda args, sep, end, file: print(end=end, *args),
-    (False, True,  True):
-     lambda args, sep, end, file: print(end=end, file=file, *args),
-    (True,  False, False):
-     lambda args, sep, end, file: print(sep=sep, *args),
-    (True,  False, True):
-     lambda args, sep, end, file: print(sep=sep, file=file, *args),
-    (True,  True,  False):
-     lambda args, sep, end, file: print(sep=sep, end=end, *args),
-    (True,  True,  True):
-     lambda args, sep, end, file: print(sep=sep, end=end, file=file, *args),
-    }
-
-# Class used to test __str__ and print
-class ClassWith__str__:
-    def __init__(self, x):
-        self.x = x
-    def __str__(self):
-        return self.x
-
-class TestPrint(unittest.TestCase):
-    def check(self, expected, args,
-            sep=NotDefined, end=NotDefined, file=NotDefined):
-        # Capture sys.stdout in a StringIO.  Call print with args,
-        #  and with sep, end, and file, if they're defined.  Result
-        #  must match expected.
-
-        # Look up the actual function to call, based on if sep, end, and file
-        #  are defined
-        fn = dispatch[(sep is not NotDefined,
-                       end is not NotDefined,
-                       file is not NotDefined)]
-
-        with test_support.captured_stdout() as t:
-            fn(args, sep, end, file)
-
-        self.assertEqual(t.getvalue(), expected)
-
-    def test_print(self):
-        def x(expected, args, sep=NotDefined, end=NotDefined):
-            # Run the test 2 ways: not using file, and using
-            #  file directed to a StringIO
-
-            self.check(expected, args, sep=sep, end=end)
-
-            # When writing to a file, stdout is expected to be empty
-            o = StringIO()
-            self.check('', args, sep=sep, end=end, file=o)
-
-            # And o will contain the expected output
-            self.assertEqual(o.getvalue(), expected)
-
-        x('\n', ())
-        x('a\n', ('a',))
-        x('None\n', (None,))
-        x('1 2\n', (1, 2))
-        x('1   2\n', (1, ' ', 2))
-        x('1*2\n', (1, 2), sep='*')
-        x('1 s', (1, 's'), end='')
-        x('a\nb\n', ('a', 'b'), sep='\n')
-        x('1.01', (1.0, 1), sep='', end='')
-        x('1*a*1.3+', (1, 'a', 1.3), sep='*', end='+')
-        x('a\n\nb\n', ('a\n', 'b'), sep='\n')
-        x('\0+ +\0\n', ('\0', ' ', '\0'), sep='+')
-
-        x('a\n b\n', ('a\n', 'b'))
-        x('a\n b\n', ('a\n', 'b'), sep=None)
-        x('a\n b\n', ('a\n', 'b'), end=None)
-        x('a\n b\n', ('a\n', 'b'), sep=None, end=None)
-
-        x('*\n', (ClassWith__str__('*'),))
-        x('abc 1\n', (ClassWith__str__('abc'), 1))
-
-        # 2.x unicode tests
-        x(u'1 2\n', ('1', u'2'))
-        x(u'u\1234\n', (u'u\1234',))
-        x(u'  abc 1\n', (' ', ClassWith__str__(u'abc'), 1))
-
-        # errors
-        self.assertRaises(TypeError, print, '', sep=3)
-        self.assertRaises(TypeError, print, '', end=3)
-        self.assertRaises(AttributeError, print, '', file='')
-
-    def test_mixed_args(self):
-        # If an unicode arg is passed, sep and end should be unicode, too.
-        class Recorder(object):
-
-            def __init__(self, must_be_unicode):
-                self.buf = []
-                self.force_unicode = must_be_unicode
-
-            def write(self, what):
-                if self.force_unicode and not isinstance(what, unicode):
-                    raise AssertionError("{0!r} is not unicode".format(what))
-                self.buf.append(what)
-
-        buf = Recorder(True)
-        print(u'hi', file=buf)
-        self.assertEqual(u''.join(buf.buf), 'hi\n')
-        del buf.buf[:]
-        print(u'hi', u'nothing', file=buf)
-        self.assertEqual(u''.join(buf.buf), 'hi nothing\n')
-        buf = Recorder(False)
-        print('hi', 'bye', end=u'\n', file=buf)
-        self.assertIsInstance(buf.buf[1], unicode)
-        self.assertIsInstance(buf.buf[3], unicode)
-        del buf.buf[:]
-        print(sep=u'x', file=buf)
-        self.assertIsInstance(buf.buf[-1], unicode)
-
-
-def test_main():
-    test_support.run_unittest(TestPrint)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_profile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_profile.py
deleted file mode 100644
index 323c831..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_profile.py
+++ /dev/null
@@ -1,186 +0,0 @@
-"""Test suite for the profile module."""
-
-import sys
-import pstats
-import unittest
-from StringIO import StringIO
-from test.test_support import run_unittest
-
-import profile
-from test.profilee import testfunc, timer
-
-
-class ProfileTest(unittest.TestCase):
-
-    profilerclass = profile.Profile
-    methodnames = ['print_stats', 'print_callers', 'print_callees']
-    expected_output = {}
-    expected_list_sort_output = ':0(sort)'
-
-    @classmethod
-    def do_profiling(cls):
-        results = []
-        prof = cls.profilerclass(timer, 0.001)
-        start_timer = timer()
-        prof.runctx("testfunc()", globals(), locals())
-        results.append(timer() - start_timer)
-        for methodname in cls.methodnames:
-            s = StringIO()
-            stats = pstats.Stats(prof, stream=s)
-            stats.strip_dirs().sort_stats("stdname")
-            getattr(stats, methodname)()
-            results.append(s.getvalue())
-        return results
-
-    def test_cprofile(self):
-        results = self.do_profiling()
-        self.assertEqual(results[0], 1000)
-        for i, method in enumerate(self.methodnames):
-            self.assertEqual(results[i+1], self.expected_output[method],
-                             "Stats.%s output for %s doesn't fit expectation!" %
-                             (method, self.profilerclass.__name__))
-
-    def test_calling_conventions(self):
-        # Issue #5330: profile and cProfile wouldn't report C functions called
-        # with keyword arguments. We test all calling conventions.
-        stmts = [
-            "[].sort()",
-            "[].sort(reverse=True)",
-            "[].sort(*(None, None, True))",
-            "[].sort(**dict(reverse=True))",
-        ]
-        for stmt in stmts:
-            s = StringIO()
-            prof = self.profilerclass(timer, 0.001)
-            prof.runctx(stmt, globals(), locals())
-            stats = pstats.Stats(prof, stream=s)
-            stats.print_stats()
-            res = s.getvalue()
-            self.assertIn(self.expected_list_sort_output, res,
-                "Profiling {0!r} didn't report list.sort:\n{1}".format(stmt, res))
-
-
-def regenerate_expected_output(filename, cls):
-    filename = filename.rstrip('co')
-    print 'Regenerating %s...' % filename
-    results = cls.do_profiling()
-
-    newfile = []
-    with open(filename, 'r') as f:
-        for line in f:
-            newfile.append(line)
-            if line[:6] == '#--cut':
-                break
-
-    with open(filename, 'w') as f:
-        f.writelines(newfile)
-        for i, method in enumerate(cls.methodnames):
-            f.write('%s.expected_output[%r] = """\\\n%s"""\n' % (
-                cls.__name__, method, results[i+1]))
-        f.write('\nif __name__ == "__main__":\n    main()\n')
-
-
-def test_main():
-    run_unittest(ProfileTest)
-
-def main():
-    if '-r' not in sys.argv:
-        test_main()
-    else:
-        regenerate_expected_output(__file__, ProfileTest)
-
-
-# Don't remove this comment. Everything below it is auto-generated.
-#--cut--------------------------------------------------------------------------
-ProfileTest.expected_output['print_stats'] = """\
-         127 function calls (107 primitive calls) in 999.749 seconds
-
-   Ordered by: standard name
-
-   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
-        4   -0.004   -0.001   -0.004   -0.001 :0(append)
-        4   -0.004   -0.001   -0.004   -0.001 :0(exc_info)
-       12   -0.024   -0.002   11.964    0.997 :0(hasattr)
-        8   -0.008   -0.001   -0.008   -0.001 :0(range)
-        1    0.000    0.000    0.000    0.000 :0(setprofile)
-        1   -0.002   -0.002  999.751  999.751 <string>:1(<module>)
-        0    0.000             0.000          profile:0(profiler)
-        1   -0.002   -0.002  999.749  999.749 profile:0(testfunc())
-       28   27.972    0.999   27.972    0.999 profilee.py:110(__getattr__)
-        1  269.996  269.996  999.753  999.753 profilee.py:25(testfunc)
-     23/3  149.937    6.519  169.917   56.639 profilee.py:35(factorial)
-       20   19.980    0.999   19.980    0.999 profilee.py:48(mul)
-        2   39.986   19.993  599.814  299.907 profilee.py:55(helper)
-        4  115.984   28.996  119.964   29.991 profilee.py:73(helper1)
-        2   -0.006   -0.003  139.942   69.971 profilee.py:84(helper2_indirect)
-        8  311.976   38.997  399.896   49.987 profilee.py:88(helper2)
-        8   63.968    7.996   79.944    9.993 profilee.py:98(subhelper)
-
-
-"""
-ProfileTest.expected_output['print_callers'] = """\
-   Ordered by: standard name
-
-Function                          was called by...
-:0(append)                        <- profilee.py:73(helper1)(4)  119.964
-:0(exc_info)                      <- profilee.py:73(helper1)(4)  119.964
-:0(hasattr)                       <- profilee.py:73(helper1)(4)  119.964
-                                     profilee.py:88(helper2)(8)  399.896
-:0(range)                         <- profilee.py:98(subhelper)(8)   79.944
-:0(setprofile)                    <- profile:0(testfunc())(1)  999.749
-<string>:1(<module>)              <- profile:0(testfunc())(1)  999.749
-profile:0(profiler)               <-
-profile:0(testfunc())             <- profile:0(profiler)(1)    0.000
-profilee.py:110(__getattr__)      <- :0(hasattr)(12)   11.964
-                                     profilee.py:98(subhelper)(16)   79.944
-profilee.py:25(testfunc)          <- <string>:1(<module>)(1)  999.751
-profilee.py:35(factorial)         <- profilee.py:25(testfunc)(1)  999.753
-                                     profilee.py:35(factorial)(20)  169.917
-                                     profilee.py:84(helper2_indirect)(2)  139.942
-profilee.py:48(mul)               <- profilee.py:35(factorial)(20)  169.917
-profilee.py:55(helper)            <- profilee.py:25(testfunc)(2)  999.753
-profilee.py:73(helper1)           <- profilee.py:55(helper)(4)  599.814
-profilee.py:84(helper2_indirect)  <- profilee.py:55(helper)(2)  599.814
-profilee.py:88(helper2)           <- profilee.py:55(helper)(6)  599.814
-                                     profilee.py:84(helper2_indirect)(2)  139.942
-profilee.py:98(subhelper)         <- profilee.py:88(helper2)(8)  399.896
-
-
-"""
-ProfileTest.expected_output['print_callees'] = """\
-   Ordered by: standard name
-
-Function                          called...
-:0(append)                        ->
-:0(exc_info)                      ->
-:0(hasattr)                       -> profilee.py:110(__getattr__)(12)   27.972
-:0(range)                         ->
-:0(setprofile)                    ->
-<string>:1(<module>)              -> profilee.py:25(testfunc)(1)  999.753
-profile:0(profiler)               -> profile:0(testfunc())(1)  999.749
-profile:0(testfunc())             -> :0(setprofile)(1)    0.000
-                                     <string>:1(<module>)(1)  999.751
-profilee.py:110(__getattr__)      ->
-profilee.py:25(testfunc)          -> profilee.py:35(factorial)(1)  169.917
-                                     profilee.py:55(helper)(2)  599.814
-profilee.py:35(factorial)         -> profilee.py:35(factorial)(20)  169.917
-                                     profilee.py:48(mul)(20)   19.980
-profilee.py:48(mul)               ->
-profilee.py:55(helper)            -> profilee.py:73(helper1)(4)  119.964
-                                     profilee.py:84(helper2_indirect)(2)  139.942
-                                     profilee.py:88(helper2)(6)  399.896
-profilee.py:73(helper1)           -> :0(append)(4)   -0.004
-                                     :0(exc_info)(4)   -0.004
-                                     :0(hasattr)(4)   11.964
-profilee.py:84(helper2_indirect)  -> profilee.py:35(factorial)(2)  169.917
-                                     profilee.py:88(helper2)(2)  399.896
-profilee.py:88(helper2)           -> :0(hasattr)(8)   11.964
-                                     profilee.py:98(subhelper)(8)   79.944
-profilee.py:98(subhelper)         -> :0(range)(8)   -0.008
-                                     profilee.py:110(__getattr__)(16)   27.972
-
-
-"""
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_property.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_property.py
deleted file mode 100644
index b51ac98..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_property.py
+++ /dev/null
@@ -1,231 +0,0 @@
-# Test case for property
-# more tests are in test_descr
-
-import sys
-import unittest
-from test.test_support import run_unittest
-
-class PropertyBase(Exception):
-    pass
-
-class PropertyGet(PropertyBase):
-    pass
-
-class PropertySet(PropertyBase):
-    pass
-
-class PropertyDel(PropertyBase):
-    pass
-
-class BaseClass(object):
-    def __init__(self):
-        self._spam = 5
-
-    @property
-    def spam(self):
-        """BaseClass.getter"""
-        return self._spam
-
-    @spam.setter
-    def spam(self, value):
-        self._spam = value
-
-    @spam.deleter
-    def spam(self):
-        del self._spam
-
-class SubClass(BaseClass):
-
-    @BaseClass.spam.getter
-    def spam(self):
-        """SubClass.getter"""
-        raise PropertyGet(self._spam)
-
-    @spam.setter
-    def spam(self, value):
-        raise PropertySet(self._spam)
-
-    @spam.deleter
-    def spam(self):
-        raise PropertyDel(self._spam)
-
-class PropertyDocBase(object):
-    _spam = 1
-    def _get_spam(self):
-        return self._spam
-    spam = property(_get_spam, doc="spam spam spam")
-
-class PropertyDocSub(PropertyDocBase):
-    @PropertyDocBase.spam.getter
-    def spam(self):
-        """The decorator does not use this doc string"""
-        return self._spam
-
-class PropertySubNewGetter(BaseClass):
-    @BaseClass.spam.getter
-    def spam(self):
-        """new docstring"""
-        return 5
-
-class PropertyNewGetter(object):
-    @property
-    def spam(self):
-        """original docstring"""
-        return 1
-    @spam.getter
-    def spam(self):
-        """new docstring"""
-        return 8
-
-class PropertyTests(unittest.TestCase):
-    def test_property_decorator_baseclass(self):
-        # see #1620
-        base = BaseClass()
-        self.assertEqual(base.spam, 5)
-        self.assertEqual(base._spam, 5)
-        base.spam = 10
-        self.assertEqual(base.spam, 10)
-        self.assertEqual(base._spam, 10)
-        delattr(base, "spam")
-        self.assertTrue(not hasattr(base, "spam"))
-        self.assertTrue(not hasattr(base, "_spam"))
-        base.spam = 20
-        self.assertEqual(base.spam, 20)
-        self.assertEqual(base._spam, 20)
-
-    def test_property_decorator_subclass(self):
-        # see #1620
-        sub = SubClass()
-        self.assertRaises(PropertyGet, getattr, sub, "spam")
-        self.assertRaises(PropertySet, setattr, sub, "spam", None)
-        self.assertRaises(PropertyDel, delattr, sub, "spam")
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_property_decorator_subclass_doc(self):
-        sub = SubClass()
-        self.assertEqual(sub.__class__.spam.__doc__, "SubClass.getter")
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_property_decorator_baseclass_doc(self):
-        base = BaseClass()
-        self.assertEqual(base.__class__.spam.__doc__, "BaseClass.getter")
-
-    def test_property_decorator_doc(self):
-        base = PropertyDocBase()
-        sub = PropertyDocSub()
-        self.assertEqual(base.__class__.spam.__doc__, "spam spam spam")
-        self.assertEqual(sub.__class__.spam.__doc__, "spam spam spam")
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_property_getter_doc_override(self):
-        newgettersub = PropertySubNewGetter()
-        self.assertEqual(newgettersub.spam, 5)
-        self.assertEqual(newgettersub.__class__.spam.__doc__, "new docstring")
-        newgetter = PropertyNewGetter()
-        self.assertEqual(newgetter.spam, 8)
-        self.assertEqual(newgetter.__class__.spam.__doc__, "new docstring")
-
-
-# Issue 5890: subclasses of property do not preserve method __doc__ strings
-class PropertySub(property):
-    """This is a subclass of property"""
-
-class PropertySubSlots(property):
-    """This is a subclass of property that defines __slots__"""
-    __slots__ = ()
-
-class PropertySubclassTests(unittest.TestCase):
-
-    def test_slots_docstring_copy_exception(self):
-        try:
-            class Foo(object):
-                @PropertySubSlots
-                def spam(self):
-                    """Trying to copy this docstring will raise an exception"""
-                    return 1
-        except AttributeError:
-            pass
-        else:
-            raise Exception("AttributeError not raised")
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_docstring_copy(self):
-        class Foo(object):
-            @PropertySub
-            def spam(self):
-                """spam wrapped in property subclass"""
-                return 1
-        self.assertEqual(
-            Foo.spam.__doc__,
-            "spam wrapped in property subclass")
-
-    @unittest.skipIf(sys.flags.optimize <= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_property_setter_copies_getter_docstring(self):
-        class Foo(object):
-            def __init__(self): self._spam = 1
-            @PropertySub
-            def spam(self):
-                """spam wrapped in property subclass"""
-                return self._spam
-            @spam.setter
-            def spam(self, value):
-                """this docstring is ignored"""
-                self._spam = value
-        foo = Foo()
-        self.assertEqual(foo.spam, 1)
-        foo.spam = 2
-        self.assertEqual(foo.spam, 2)
-        self.assertEqual(
-            Foo.spam.__doc__,
-            "spam wrapped in property subclass")
-        class FooSub(Foo):
-            @Foo.spam.setter
-            def spam(self, value):
-                """another ignored docstring"""
-                self._spam = 'eggs'
-        foosub = FooSub()
-        self.assertEqual(foosub.spam, 1)
-        foosub.spam = 7
-        self.assertEqual(foosub.spam, 'eggs')
-        self.assertEqual(
-            FooSub.spam.__doc__,
-            "spam wrapped in property subclass")
-
-    @unittest.skipIf(sys.flags.optimize <= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_property_new_getter_new_docstring(self):
-
-        class Foo(object):
-            @PropertySub
-            def spam(self):
-                """a docstring"""
-                return 1
-            @spam.getter
-            def spam(self):
-                """a new docstring"""
-                return 2
-        self.assertEqual(Foo.spam.__doc__, "a new docstring")
-        class FooBase(object):
-            @PropertySub
-            def spam(self):
-                """a docstring"""
-                return 1
-        class Foo2(FooBase):
-            @FooBase.spam.getter
-            def spam(self):
-                """a new docstring"""
-                return 2
-        self.assertEqual(Foo.spam.__doc__, "a new docstring")
-
-
-
-def test_main():
-    run_unittest(PropertyTests, PropertySubclassTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pstats.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pstats.py
deleted file mode 100644
index 89c2d0a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pstats.py
+++ /dev/null
@@ -1,32 +0,0 @@
-import unittest
-from test import test_support
-import pstats
-
-
-
-class AddCallersTestCase(unittest.TestCase):
-    """Tests for pstats.add_callers helper."""
-
-    def test_combine_results(self):
-        """pstats.add_callers should combine the call results of both target
-        and source by adding the call time. See issue1269."""
-        # new format: used by the cProfile module
-        target = {"a": (1, 2, 3, 4)}
-        source = {"a": (1, 2, 3, 4), "b": (5, 6, 7, 8)}
-        new_callers = pstats.add_callers(target, source)
-        self.assertEqual(new_callers, {'a': (2, 4, 6, 8), 'b': (5, 6, 7, 8)})
-        # old format: used by the profile module
-        target = {"a": 1}
-        source = {"a": 1, "b": 5}
-        new_callers = pstats.add_callers(target, source)
-        self.assertEqual(new_callers, {'a': 2, 'b': 5})
-
-
-def test_main():
-    test_support.run_unittest(
-        AddCallersTestCase
-    )
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pty.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pty.py
deleted file mode 100644
index 0a44f7b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pty.py
+++ /dev/null
@@ -1,200 +0,0 @@
-from test.test_support import verbose, run_unittest, import_module
-
-#Skip these tests if either fcntl or termios is not available
-fcntl = import_module('fcntl')
-import_module('termios')
-
-import errno
-import pty
-import os
-import sys
-import signal
-import unittest
-
-TEST_STRING_1 = "I wish to buy a fish license.\n"
-TEST_STRING_2 = "For my pet fish, Eric.\n"
-
-if verbose:
-    def debug(msg):
-        print msg
-else:
-    def debug(msg):
-        pass
-
-
-def normalize_output(data):
-    # Some operating systems do conversions on newline.  We could possibly
-    # fix that by doing the appropriate termios.tcsetattr()s.  I couldn't
-    # figure out the right combo on Tru64 and I don't have an IRIX box.
-    # So just normalize the output and doc the problem O/Ses by allowing
-    # certain combinations for some platforms, but avoid allowing other
-    # differences (like extra whitespace, trailing garbage, etc.)
-
-    # This is about the best we can do without getting some feedback
-    # from someone more knowledgable.
-
-    # OSF/1 (Tru64) apparently turns \n into \r\r\n.
-    if data.endswith('\r\r\n'):
-        return data.replace('\r\r\n', '\n')
-
-    # IRIX apparently turns \n into \r\n.
-    if data.endswith('\r\n'):
-        return data.replace('\r\n', '\n')
-
-    return data
-
-
-# Marginal testing of pty suite. Cannot do extensive 'do or fail' testing
-# because pty code is not too portable.
-# XXX(nnorwitz):  these tests leak fds when there is an error.
-class PtyTest(unittest.TestCase):
-    def setUp(self):
-        # isatty() and close() can hang on some platforms.  Set an alarm
-        # before running the test to make sure we don't hang forever.
-        self.old_alarm = signal.signal(signal.SIGALRM, self.handle_sig)
-        signal.alarm(10)
-
-    def tearDown(self):
-        # remove alarm, restore old alarm handler
-        signal.alarm(0)
-        signal.signal(signal.SIGALRM, self.old_alarm)
-
-    def handle_sig(self, sig, frame):
-        self.fail("isatty hung")
-
-    def test_basic(self):
-        try:
-            debug("Calling master_open()")
-            master_fd, slave_name = pty.master_open()
-            debug("Got master_fd '%d', slave_name '%s'" %
-                  (master_fd, slave_name))
-            debug("Calling slave_open(%r)" % (slave_name,))
-            slave_fd = pty.slave_open(slave_name)
-            debug("Got slave_fd '%d'" % slave_fd)
-        except OSError:
-            # " An optional feature could not be imported " ... ?
-            raise unittest.SkipTest, "Pseudo-terminals (seemingly) not functional."
-
-        self.assertTrue(os.isatty(slave_fd), 'slave_fd is not a tty')
-
-        # Solaris requires reading the fd before anything is returned.
-        # My guess is that since we open and close the slave fd
-        # in master_open(), we need to read the EOF.
-
-        # Ensure the fd is non-blocking in case there's nothing to read.
-        orig_flags = fcntl.fcntl(master_fd, fcntl.F_GETFL)
-        fcntl.fcntl(master_fd, fcntl.F_SETFL, orig_flags | os.O_NONBLOCK)
-        try:
-            s1 = os.read(master_fd, 1024)
-            self.assertEqual('', s1)
-        except OSError, e:
-            if e.errno != errno.EAGAIN:
-                raise
-        # Restore the original flags.
-        fcntl.fcntl(master_fd, fcntl.F_SETFL, orig_flags)
-
-        debug("Writing to slave_fd")
-        os.write(slave_fd, TEST_STRING_1)
-        s1 = os.read(master_fd, 1024)
-        self.assertEqual('I wish to buy a fish license.\n',
-                         normalize_output(s1))
-
-        debug("Writing chunked output")
-        os.write(slave_fd, TEST_STRING_2[:5])
-        os.write(slave_fd, TEST_STRING_2[5:])
-        s2 = os.read(master_fd, 1024)
-        self.assertEqual('For my pet fish, Eric.\n', normalize_output(s2))
-
-        os.close(slave_fd)
-        os.close(master_fd)
-
-
-    def test_fork(self):
-        debug("calling pty.fork()")
-        pid, master_fd = pty.fork()
-        if pid == pty.CHILD:
-            # stdout should be connected to a tty.
-            if not os.isatty(1):
-                debug("Child's fd 1 is not a tty?!")
-                os._exit(3)
-
-            # After pty.fork(), the child should already be a session leader.
-            # (on those systems that have that concept.)
-            debug("In child, calling os.setsid()")
-            try:
-                os.setsid()
-            except OSError:
-                # Good, we already were session leader
-                debug("Good: OSError was raised.")
-                pass
-            except AttributeError:
-                # Have pty, but not setsid()?
-                debug("No setsid() available?")
-                pass
-            except:
-                # We don't want this error to propagate, escaping the call to
-                # os._exit() and causing very peculiar behavior in the calling
-                # regrtest.py !
-                # Note: could add traceback printing here.
-                debug("An unexpected error was raised.")
-                os._exit(1)
-            else:
-                debug("os.setsid() succeeded! (bad!)")
-                os._exit(2)
-            os._exit(4)
-        else:
-            debug("Waiting for child (%d) to finish." % pid)
-            # In verbose mode, we have to consume the debug output from the
-            # child or the child will block, causing this test to hang in the
-            # parent's waitpid() call.  The child blocks after a
-            # platform-dependent amount of data is written to its fd.  On
-            # Linux 2.6, it's 4000 bytes and the child won't block, but on OS
-            # X even the small writes in the child above will block it.  Also
-            # on Linux, the read() will throw an OSError (input/output error)
-            # when it tries to read past the end of the buffer but the child's
-            # already exited, so catch and discard those exceptions.  It's not
-            # worth checking for EIO.
-            while True:
-                try:
-                    data = os.read(master_fd, 80)
-                except OSError:
-                    break
-                if not data:
-                    break
-                sys.stdout.write(data.replace('\r\n', '\n'))
-
-            ##line = os.read(master_fd, 80)
-            ##lines = line.replace('\r\n', '\n').split('\n')
-            ##if False and lines != ['In child, calling os.setsid()',
-            ##             'Good: OSError was raised.', '']:
-            ##    raise TestFailed("Unexpected output from child: %r" % line)
-
-            (pid, status) = os.waitpid(pid, 0)
-            res = status >> 8
-            debug("Child (%d) exited with status %d (%d)." % (pid, res, status))
-            if res == 1:
-                self.fail("Child raised an unexpected exception in os.setsid()")
-            elif res == 2:
-                self.fail("pty.fork() failed to make child a session leader.")
-            elif res == 3:
-                self.fail("Child spawned by pty.fork() did not have a tty as stdout")
-            elif res != 4:
-                self.fail("pty.fork() failed for unknown reasons.")
-
-            ##debug("Reading from master_fd now that the child has exited")
-            ##try:
-            ##    s1 = os.read(master_fd, 1024)
-            ##except os.error:
-            ##    pass
-            ##else:
-            ##    raise TestFailed("Read from master_fd did not raise exception")
-
-        os.close(master_fd)
-
-        # pty.fork() passed.
-
-def test_main(verbose=None):
-    run_unittest(PtyTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pwd.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pwd.py
deleted file mode 100644
index 435a130..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pwd.py
+++ /dev/null
@@ -1,100 +0,0 @@
-import sys
-import unittest
-from test import test_support
-
-pwd = test_support.import_module('pwd')
-
-class PwdTest(unittest.TestCase):
-
-    def test_values(self):
-        entries = pwd.getpwall()
-        entriesbyname = {}
-        entriesbyuid = {}
-
-        for e in entries:
-            self.assertEqual(len(e), 7)
-            self.assertEqual(e[0], e.pw_name)
-            self.assertIsInstance(e.pw_name, basestring)
-            self.assertEqual(e[1], e.pw_passwd)
-            self.assertIsInstance(e.pw_passwd, basestring)
-            self.assertEqual(e[2], e.pw_uid)
-            self.assertIsInstance(e.pw_uid, int)
-            self.assertEqual(e[3], e.pw_gid)
-            self.assertIsInstance(e.pw_gid, int)
-            self.assertEqual(e[4], e.pw_gecos)
-            self.assertIsInstance(e.pw_gecos, basestring)
-            self.assertEqual(e[5], e.pw_dir)
-            self.assertIsInstance(e.pw_dir, basestring)
-            self.assertEqual(e[6], e.pw_shell)
-            self.assertIsInstance(e.pw_shell, basestring)
-
-            # The following won't work, because of duplicate entries
-            # for one uid
-            #    self.assertEqual(pwd.getpwuid(e.pw_uid), e)
-            # instead of this collect all entries for one uid
-            # and check afterwards
-            entriesbyname.setdefault(e.pw_name, []).append(e)
-            entriesbyuid.setdefault(e.pw_uid, []).append(e)
-
-        if len(entries) > 1000:  # Huge passwd file (NIS?) -- skip the rest
-            return
-
-        # check whether the entry returned by getpwuid()
-        # for each uid is among those from getpwall() for this uid
-        for e in entries:
-            if not e[0] or e[0] == '+':
-                continue # skip NIS entries etc.
-            self.assertIn(pwd.getpwnam(e.pw_name), entriesbyname[e.pw_name])
-            self.assertIn(pwd.getpwuid(e.pw_uid), entriesbyuid[e.pw_uid])
-
-    def test_errors(self):
-        self.assertRaises(TypeError, pwd.getpwuid)
-        self.assertRaises(TypeError, pwd.getpwnam)
-        self.assertRaises(TypeError, pwd.getpwall, 42)
-
-        # try to get some errors
-        bynames = {}
-        byuids = {}
-        for (n, p, u, g, gecos, d, s) in pwd.getpwall():
-            bynames[n] = u
-            byuids[u] = n
-
-        allnames = bynames.keys()
-        namei = 0
-        fakename = allnames[namei]
-        while fakename in bynames:
-            chars = list(fakename)
-            for i in xrange(len(chars)):
-                if chars[i] == 'z':
-                    chars[i] = 'A'
-                    break
-                elif chars[i] == 'Z':
-                    continue
-                else:
-                    chars[i] = chr(ord(chars[i]) + 1)
-                    break
-            else:
-                namei = namei + 1
-                try:
-                    fakename = allnames[namei]
-                except IndexError:
-                    # should never happen... if so, just forget it
-                    break
-            fakename = ''.join(chars)
-
-        self.assertRaises(KeyError, pwd.getpwnam, fakename)
-
-        # In some cases, byuids isn't a complete list of all users in the
-        # system, so if we try to pick a value not in byuids (via a perturbing
-        # loop, say), pwd.getpwuid() might still be able to find data for that
-        # uid. Using sys.maxint may provoke the same problems, but hopefully
-        # it will be a more repeatable failure.
-        fakeuid = sys.maxint
-        self.assertNotIn(fakeuid, byuids)
-        self.assertRaises(KeyError, pwd.getpwuid, fakeuid)
-
-def test_main():
-    test_support.run_unittest(PwdTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_py3kwarn.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_py3kwarn.py
deleted file mode 100644
index cd085ac..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_py3kwarn.py
+++ /dev/null
@@ -1,426 +0,0 @@
-import unittest
-import sys
-from test.test_support import check_py3k_warnings, CleanImport, run_unittest
-import warnings
-
-if not sys.py3kwarning:
-    raise unittest.SkipTest('%s must be run with the -3 flag' % __name__)
-
-try:
-    from test.test_support import __warningregistry__ as _registry
-except ImportError:
-    def check_deprecated_module(module_name):
-        return False
-else:
-    past_warnings = _registry.keys()
-    del _registry
-    def check_deprecated_module(module_name):
-        """Lookup the past warnings for module already loaded using
-        test_support.import_module(..., deprecated=True)
-        """
-        return any(module_name in msg and ' removed' in msg
-                   and issubclass(cls, DeprecationWarning)
-                   and (' module' in msg or ' package' in msg)
-                   for (msg, cls, line) in past_warnings)
-
-def reset_module_registry(module):
-    try:
-        registry = module.__warningregistry__
-    except AttributeError:
-        pass
-    else:
-        registry.clear()
-
-class TestPy3KWarnings(unittest.TestCase):
-
-    def assertWarning(self, _, warning, expected_message):
-        self.assertEqual(str(warning.message), expected_message)
-
-    def assertNoWarning(self, _, recorder):
-        self.assertEqual(len(recorder.warnings), 0)
-
-    def test_backquote(self):
-        expected = 'backquote not supported in 3.x; use repr()'
-        with check_py3k_warnings((expected, SyntaxWarning)):
-            exec "`2`" in {}
-
-    def test_paren_arg_names(self):
-        expected = 'parenthesized argument names are invalid in 3.x'
-        def check(s):
-            with check_py3k_warnings((expected, SyntaxWarning)):
-                exec s in {}
-        check("def f((x)): pass")
-        check("def f((((x))), (y)): pass")
-        check("def f((x), (((y))), m=32): pass")
-        # Something like def f((a, (b))): pass will raise the tuple
-        # unpacking warning.
-
-    def test_forbidden_names(self):
-        # So we don't screw up our globals
-        def safe_exec(expr):
-            def f(**kwargs): pass
-            exec expr in {'f' : f}
-
-        tests = [("True", "assignment to True or False is forbidden in 3.x"),
-                 ("False", "assignment to True or False is forbidden in 3.x"),
-                 ("nonlocal", "nonlocal is a keyword in 3.x")]
-        with check_py3k_warnings(('', SyntaxWarning)) as w:
-            for keyword, expected in tests:
-                safe_exec("{0} = False".format(keyword))
-                self.assertWarning(None, w, expected)
-                w.reset()
-                try:
-                    safe_exec("obj.{0} = True".format(keyword))
-                except NameError:
-                    pass
-                self.assertWarning(None, w, expected)
-                w.reset()
-                safe_exec("def {0}(): pass".format(keyword))
-                self.assertWarning(None, w, expected)
-                w.reset()
-                safe_exec("class {0}: pass".format(keyword))
-                self.assertWarning(None, w, expected)
-                w.reset()
-                safe_exec("def f({0}=43): pass".format(keyword))
-                self.assertWarning(None, w, expected)
-                w.reset()
-
-
-    def test_type_inequality_comparisons(self):
-        expected = 'type inequality comparisons not supported in 3.x'
-        with check_py3k_warnings() as w:
-            self.assertWarning(int < str, w, expected)
-            w.reset()
-            self.assertWarning(type < object, w, expected)
-
-    def test_object_inequality_comparisons(self):
-        expected = 'comparing unequal types not supported in 3.x'
-        with check_py3k_warnings() as w:
-            self.assertWarning(str < [], w, expected)
-            w.reset()
-            self.assertWarning(object() < (1, 2), w, expected)
-
-    def test_dict_inequality_comparisons(self):
-        expected = 'dict inequality comparisons not supported in 3.x'
-        with check_py3k_warnings() as w:
-            self.assertWarning({} < {2:3}, w, expected)
-            w.reset()
-            self.assertWarning({} <= {}, w, expected)
-            w.reset()
-            self.assertWarning({} > {2:3}, w, expected)
-            w.reset()
-            self.assertWarning({2:3} >= {}, w, expected)
-
-    def test_cell_inequality_comparisons(self):
-        expected = 'cell comparisons not supported in 3.x'
-        def f(x):
-            def g():
-                return x
-            return g
-        cell0, = f(0).func_closure
-        cell1, = f(1).func_closure
-        with check_py3k_warnings() as w:
-            self.assertWarning(cell0 == cell1, w, expected)
-            w.reset()
-            self.assertWarning(cell0 < cell1, w, expected)
-
-    def test_code_inequality_comparisons(self):
-        expected = 'code inequality comparisons not supported in 3.x'
-        def f(x):
-            pass
-        def g(x):
-            pass
-        with check_py3k_warnings() as w:
-            self.assertWarning(f.func_code < g.func_code, w, expected)
-            w.reset()
-            self.assertWarning(f.func_code <= g.func_code, w, expected)
-            w.reset()
-            self.assertWarning(f.func_code >= g.func_code, w, expected)
-            w.reset()
-            self.assertWarning(f.func_code > g.func_code, w, expected)
-
-    def test_builtin_function_or_method_comparisons(self):
-        expected = ('builtin_function_or_method '
-                    'order comparisons not supported in 3.x')
-        func = eval
-        meth = {}.get
-        with check_py3k_warnings() as w:
-            self.assertWarning(func < meth, w, expected)
-            w.reset()
-            self.assertWarning(func > meth, w, expected)
-            w.reset()
-            self.assertWarning(meth <= func, w, expected)
-            w.reset()
-            self.assertWarning(meth >= func, w, expected)
-            w.reset()
-            self.assertNoWarning(meth == func, w)
-            self.assertNoWarning(meth != func, w)
-            lam = lambda x: x
-            self.assertNoWarning(lam == func, w)
-            self.assertNoWarning(lam != func, w)
-
-    def test_frame_attributes(self):
-        template = "%s has been removed in 3.x"
-        f = sys._getframe(0)
-        for attr in ("f_exc_traceback", "f_exc_value", "f_exc_type"):
-            expected = template % attr
-            with check_py3k_warnings() as w:
-                self.assertWarning(getattr(f, attr), w, expected)
-                w.reset()
-                self.assertWarning(setattr(f, attr, None), w, expected)
-
-    def test_sort_cmp_arg(self):
-        expected = "the cmp argument is not supported in 3.x"
-        lst = range(5)
-        cmp = lambda x,y: -1
-
-        with check_py3k_warnings() as w:
-            self.assertWarning(lst.sort(cmp=cmp), w, expected)
-            w.reset()
-            self.assertWarning(sorted(lst, cmp=cmp), w, expected)
-            w.reset()
-            self.assertWarning(lst.sort(cmp), w, expected)
-            w.reset()
-            self.assertWarning(sorted(lst, cmp), w, expected)
-
-    def test_sys_exc_clear(self):
-        expected = 'sys.exc_clear() not supported in 3.x; use except clauses'
-        with check_py3k_warnings() as w:
-            self.assertWarning(sys.exc_clear(), w, expected)
-
-    def test_methods_members(self):
-        expected = '__members__ and __methods__ not supported in 3.x'
-        class C:
-            __methods__ = ['a']
-            __members__ = ['b']
-        c = C()
-        with check_py3k_warnings() as w:
-            self.assertWarning(dir(c), w, expected)
-
-    def test_softspace(self):
-        expected = 'file.softspace not supported in 3.x'
-        with file(__file__) as f:
-            with check_py3k_warnings() as w:
-                self.assertWarning(f.softspace, w, expected)
-            def set():
-                f.softspace = 0
-            with check_py3k_warnings() as w:
-                self.assertWarning(set(), w, expected)
-
-    def test_slice_methods(self):
-        class Spam(object):
-            def __getslice__(self, i, j): pass
-            def __setslice__(self, i, j, what): pass
-            def __delslice__(self, i, j): pass
-        class Egg:
-            def __getslice__(self, i, h): pass
-            def __setslice__(self, i, j, what): pass
-            def __delslice__(self, i, j): pass
-
-        expected = "in 3.x, __{0}slice__ has been removed; use __{0}item__"
-
-        for obj in (Spam(), Egg()):
-            with check_py3k_warnings() as w:
-                self.assertWarning(obj[1:2], w, expected.format('get'))
-                w.reset()
-                del obj[3:4]
-                self.assertWarning(None, w, expected.format('del'))
-                w.reset()
-                obj[4:5] = "eggs"
-                self.assertWarning(None, w, expected.format('set'))
-
-    def test_tuple_parameter_unpacking(self):
-        expected = "tuple parameter unpacking has been removed in 3.x"
-        with check_py3k_warnings((expected, SyntaxWarning)):
-            exec "def f((a, b)): pass"
-
-    def test_buffer(self):
-        expected = 'buffer() not supported in 3.x'
-        with check_py3k_warnings() as w:
-            self.assertWarning(buffer('a'), w, expected)
-
-    def test_file_xreadlines(self):
-        expected = ("f.xreadlines() not supported in 3.x, "
-                    "try 'for line in f' instead")
-        with file(__file__) as f:
-            with check_py3k_warnings() as w:
-                self.assertWarning(f.xreadlines(), w, expected)
-
-    def test_hash_inheritance(self):
-        with check_py3k_warnings() as w:
-            # With object as the base class
-            class WarnOnlyCmp(object):
-                def __cmp__(self, other): pass
-            self.assertEqual(len(w.warnings), 0)
-            w.reset()
-            class WarnOnlyEq(object):
-                def __eq__(self, other): pass
-            self.assertEqual(len(w.warnings), 1)
-            self.assertWarning(None, w,
-                 "Overriding __eq__ blocks inheritance of __hash__ in 3.x")
-            w.reset()
-            class WarnCmpAndEq(object):
-                def __cmp__(self, other): pass
-                def __eq__(self, other): pass
-            self.assertEqual(len(w.warnings), 1)
-            self.assertWarning(None, w,
-                 "Overriding __eq__ blocks inheritance of __hash__ in 3.x")
-            w.reset()
-            class NoWarningOnlyHash(object):
-                def __hash__(self): pass
-            self.assertEqual(len(w.warnings), 0)
-            # With an intermediate class in the heirarchy
-            class DefinesAllThree(object):
-                def __cmp__(self, other): pass
-                def __eq__(self, other): pass
-                def __hash__(self): pass
-            class WarnOnlyCmp(DefinesAllThree):
-                def __cmp__(self, other): pass
-            self.assertEqual(len(w.warnings), 0)
-            w.reset()
-            class WarnOnlyEq(DefinesAllThree):
-                def __eq__(self, other): pass
-            self.assertEqual(len(w.warnings), 1)
-            self.assertWarning(None, w,
-                 "Overriding __eq__ blocks inheritance of __hash__ in 3.x")
-            w.reset()
-            class WarnCmpAndEq(DefinesAllThree):
-                def __cmp__(self, other): pass
-                def __eq__(self, other): pass
-            self.assertEqual(len(w.warnings), 1)
-            self.assertWarning(None, w,
-                 "Overriding __eq__ blocks inheritance of __hash__ in 3.x")
-            w.reset()
-            class NoWarningOnlyHash(DefinesAllThree):
-                def __hash__(self): pass
-            self.assertEqual(len(w.warnings), 0)
-
-    def test_operator(self):
-        from operator import isCallable, sequenceIncludes
-
-        callable_warn = ("operator.isCallable() is not supported in 3.x. "
-                         "Use hasattr(obj, '__call__').")
-        seq_warn = ("operator.sequenceIncludes() is not supported "
-                    "in 3.x. Use operator.contains().")
-        with check_py3k_warnings() as w:
-            self.assertWarning(isCallable(self), w, callable_warn)
-            w.reset()
-            self.assertWarning(sequenceIncludes(range(3), 2), w, seq_warn)
-
-
-class TestStdlibRemovals(unittest.TestCase):
-
-    # test.testall not tested as it executes all unit tests as an
-    # import side-effect.
-    all_platforms = ('audiodev', 'imputil', 'mutex', 'user', 'new', 'rexec',
-                        'Bastion', 'compiler', 'dircache', 'mimetools',
-                        'fpformat', 'ihooks', 'mhlib', 'statvfs', 'htmllib',
-                        'sgmllib', 'rfc822', 'sunaudio')
-    inclusive_platforms = {'irix' : ('pure', 'AL', 'al', 'CD', 'cd', 'cddb',
-                                     'cdplayer', 'CL', 'cl', 'DEVICE', 'GL',
-                                     'gl', 'ERRNO', 'FILE', 'FL', 'flp', 'fl',
-                                     'fm', 'GET', 'GLWS', 'imgfile', 'IN',
-                                     'IOCTL', 'jpeg', 'panel', 'panelparser',
-                                     'readcd', 'SV', 'torgb', 'WAIT'),
-                          'darwin' : ('autoGIL', 'Carbon', 'OSATerminology',
-                                      'icglue', 'Nav',
-                                      # MacOS should (and does) give a Py3kWarning, but one of the
-                                      # earlier tests already imports the MacOS extension which causes
-                                      # this test to fail. Disabling the test for 'MacOS' avoids this
-                                      # spurious test failure.
-                                      #'MacOS',
-                                      'aepack',
-                                      'aetools', 'aetypes', 'applesingle',
-                                      'appletrawmain', 'appletrunner',
-                                      'argvemulator', 'bgenlocations',
-                                      'EasyDialogs', 'macerrors', 'macostools',
-                                      'findertools', 'FrameWork', 'ic',
-                                      'gensuitemodule', 'icopen', 'macresource',
-                                      'MiniAEFrame', 'pimp', 'PixMapWrapper',
-                                      'terminalcommand', 'videoreader',
-                                      '_builtinSuites', 'CodeWarrior',
-                                      'Explorer', 'Finder', 'Netscape',
-                                      'StdSuites', 'SystemEvents', 'Terminal',
-                                      'cfmfile', 'bundlebuilder', 'buildtools',
-                                      'ColorPicker', 'Audio_mac'),
-                           'sunos5' : ('sunaudiodev', 'SUNAUDIODEV'),
-                          }
-    optional_modules = ('bsddb185', 'Canvas', 'dl', 'linuxaudiodev', 'imageop',
-                        'sv', 'bsddb', 'dbhash')
-
-    def check_removal(self, module_name, optional=False):
-        """Make sure the specified module, when imported, raises a
-        DeprecationWarning and specifies itself in the message."""
-        with CleanImport(module_name), warnings.catch_warnings():
-            warnings.filterwarnings("error", ".+ (module|package) .+ removed",
-                                    DeprecationWarning, __name__)
-            warnings.filterwarnings("error", ".+ removed .+ (module|package)",
-                                    DeprecationWarning, __name__)
-            try:
-                __import__(module_name, level=0)
-            except DeprecationWarning as exc:
-                self.assertIn(module_name, exc.args[0],
-                              "%s warning didn't contain module name"
-                              % module_name)
-            except ImportError:
-                if not optional:
-                    self.fail("Non-optional module {0} raised an "
-                              "ImportError.".format(module_name))
-            else:
-                # For extension modules, check the __warningregistry__.
-                # They won't rerun their init code even with CleanImport.
-                if not check_deprecated_module(module_name):
-                    self.fail("DeprecationWarning not raised for {0}"
-                              .format(module_name))
-
-    def test_platform_independent_removals(self):
-        # Make sure that the modules that are available on all platforms raise
-        # the proper DeprecationWarning.
-        for module_name in self.all_platforms:
-            self.check_removal(module_name)
-
-    def test_platform_specific_removals(self):
-        # Test the removal of platform-specific modules.
-        for module_name in self.inclusive_platforms.get(sys.platform, []):
-            self.check_removal(module_name, optional=True)
-
-    def test_optional_module_removals(self):
-        # Test the removal of modules that may or may not be built.
-        for module_name in self.optional_modules:
-            self.check_removal(module_name, optional=True)
-
-    def test_os_path_walk(self):
-        msg = "In 3.x, os.path.walk is removed in favor of os.walk."
-        def dumbo(where, names, args): pass
-        for path_mod in ("ntpath", "macpath", "os2emxpath", "posixpath"):
-            mod = __import__(path_mod)
-            reset_module_registry(mod)
-            with check_py3k_warnings() as w:
-                mod.walk("crashers", dumbo, None)
-            self.assertEqual(str(w.message), msg)
-
-    def test_reduce_move(self):
-        from operator import add
-        # reduce tests may have already triggered this warning
-        reset_module_registry(unittest.case)
-        with warnings.catch_warnings():
-            warnings.filterwarnings("error", "reduce")
-            self.assertRaises(DeprecationWarning, reduce, add, range(10))
-
-    def test_mutablestring_removal(self):
-        # UserString.MutableString has been removed in 3.0.
-        import UserString
-        # UserString tests may have already triggered this warning
-        reset_module_registry(UserString)
-        with warnings.catch_warnings():
-            warnings.filterwarnings("error", ".*MutableString",
-                                    DeprecationWarning)
-            self.assertRaises(DeprecationWarning, UserString.MutableString)
-
-
-def test_main():
-    run_unittest(TestPy3KWarnings,
-                 TestStdlibRemovals)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pyclbr.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pyclbr.py
deleted file mode 100644
index d77bdd1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pyclbr.py
+++ /dev/null
@@ -1,197 +0,0 @@
-'''
-   Test cases for pyclbr.py
-   Nick Mathewson
-'''
-from test.test_support import run_unittest, import_module
-import sys
-from types import ClassType, FunctionType, MethodType, BuiltinFunctionType
-import pyclbr
-from unittest import TestCase
-
-StaticMethodType = type(staticmethod(lambda: None))
-ClassMethodType = type(classmethod(lambda c: None))
-
-# Silence Py3k warning
-import_module('commands', deprecated=True)
-
-# This next line triggers an error on old versions of pyclbr.
-from commands import getstatus
-
-# Here we test the python class browser code.
-#
-# The main function in this suite, 'testModule', compares the output
-# of pyclbr with the introspected members of a module.  Because pyclbr
-# is imperfect (as designed), testModule is called with a set of
-# members to ignore.
-
-class PyclbrTest(TestCase):
-
-    def assertListEq(self, l1, l2, ignore):
-        ''' succeed iff {l1} - {ignore} == {l2} - {ignore} '''
-        missing = (set(l1) ^ set(l2)) - set(ignore)
-        if missing:
-            print >>sys.stderr, "l1=%r\nl2=%r\nignore=%r" % (l1, l2, ignore)
-            self.fail("%r missing" % missing.pop())
-
-    def assertHasattr(self, obj, attr, ignore):
-        ''' succeed iff hasattr(obj,attr) or attr in ignore. '''
-        if attr in ignore: return
-        if not hasattr(obj, attr): print "???", attr
-        self.assertTrue(hasattr(obj, attr),
-                        'expected hasattr(%r, %r)' % (obj, attr))
-
-
-    def assertHaskey(self, obj, key, ignore):
-        ''' succeed iff key in obj or key in ignore. '''
-        if key in ignore: return
-        if key not in obj:
-            print >>sys.stderr, "***", key
-        self.assertIn(key, obj)
-
-    def assertEqualsOrIgnored(self, a, b, ignore):
-        ''' succeed iff a == b or a in ignore or b in ignore '''
-        if a not in ignore and b not in ignore:
-            self.assertEqual(a, b)
-
-    def checkModule(self, moduleName, module=None, ignore=()):
-        ''' succeed iff pyclbr.readmodule_ex(modulename) corresponds
-            to the actual module object, module.  Any identifiers in
-            ignore are ignored.   If no module is provided, the appropriate
-            module is loaded with __import__.'''
-
-        if module is None:
-            # Import it.
-            # ('<silly>' is to work around an API silliness in __import__)
-            module = __import__(moduleName, globals(), {}, ['<silly>'])
-
-        dict = pyclbr.readmodule_ex(moduleName)
-
-        def ismethod(oclass, obj, name):
-            classdict = oclass.__dict__
-            if isinstance(obj, FunctionType):
-                if not isinstance(classdict[name], StaticMethodType):
-                    return False
-            else:
-                if not  isinstance(obj, MethodType):
-                    return False
-                if obj.im_self is not None:
-                    if (not isinstance(classdict[name], ClassMethodType) or
-                        obj.im_self is not oclass):
-                        return False
-                else:
-                    if not isinstance(classdict[name], FunctionType):
-                        return False
-
-            objname = obj.__name__
-            if objname.startswith("__") and not objname.endswith("__"):
-                objname = "_%s%s" % (obj.im_class.__name__, objname)
-            return objname == name
-
-        # Make sure the toplevel functions and classes are the same.
-        for name, value in dict.items():
-            if name in ignore:
-                continue
-            self.assertHasattr(module, name, ignore)
-            py_item = getattr(module, name)
-            if isinstance(value, pyclbr.Function):
-                self.assertIsInstance(py_item, (FunctionType, BuiltinFunctionType))
-                if py_item.__module__ != moduleName:
-                    continue   # skip functions that came from somewhere else
-                self.assertEqual(py_item.__module__, value.module)
-            else:
-                self.assertIsInstance(py_item, (ClassType, type))
-                if py_item.__module__ != moduleName:
-                    continue   # skip classes that came from somewhere else
-
-                real_bases = [base.__name__ for base in py_item.__bases__]
-                pyclbr_bases = [ getattr(base, 'name', base)
-                                 for base in value.super ]
-
-                try:
-                    self.assertListEq(real_bases, pyclbr_bases, ignore)
-                except:
-                    print >>sys.stderr, "class=%s" % py_item
-                    raise
-
-                actualMethods = []
-                for m in py_item.__dict__.keys():
-                    if ismethod(py_item, getattr(py_item, m), m):
-                        actualMethods.append(m)
-                foundMethods = []
-                for m in value.methods.keys():
-                    if m[:2] == '__' and m[-2:] != '__':
-                        foundMethods.append('_'+name+m)
-                    else:
-                        foundMethods.append(m)
-
-                try:
-                    self.assertListEq(foundMethods, actualMethods, ignore)
-                    self.assertEqual(py_item.__module__, value.module)
-
-                    self.assertEqualsOrIgnored(py_item.__name__, value.name,
-                                               ignore)
-                    # can't check file or lineno
-                except:
-                    print >>sys.stderr, "class=%s" % py_item
-                    raise
-
-        # Now check for missing stuff.
-        def defined_in(item, module):
-            if isinstance(item, ClassType):
-                return item.__module__ == module.__name__
-            if isinstance(item, FunctionType):
-                return item.func_globals is module.__dict__
-            return False
-        for name in dir(module):
-            item = getattr(module, name)
-            if isinstance(item,  (ClassType, FunctionType)):
-                if defined_in(item, module):
-                    self.assertHaskey(dict, name, ignore)
-
-    def test_easy(self):
-        self.checkModule('pyclbr')
-        self.checkModule('doctest', ignore=("DocTestCase",))
-        # Silence Py3k warning
-        rfc822 = import_module('rfc822', deprecated=True)
-        self.checkModule('rfc822', rfc822)
-        self.checkModule('difflib')
-
-    def test_decorators(self):
-        # XXX: See comment in pyclbr_input.py for a test that would fail
-        #      if it were not commented out.
-        #
-        self.checkModule('test.pyclbr_input')
-
-    def test_others(self):
-        cm = self.checkModule
-
-        # These were once about the 10 longest modules
-        cm('random', ignore=('Random',))  # from _random import Random as CoreGenerator
-        cm('cgi', ignore=('log',))      # set with = in module
-        cm('urllib', ignore=('_CFNumberToInt32',
-                             '_CStringFromCFString',
-                             '_CFSetup',
-                             'getproxies_registry',
-                             'proxy_bypass_registry',
-                             'proxy_bypass_macosx_sysconf',
-                             'open_https',
-                             'getproxies_macosx_sysconf',
-                             'getproxies_internetconfig',)) # not on all platforms
-        cm('pickle')
-        cm('aifc', ignore=('openfp',))  # set with = in module
-        cm('Cookie')
-        cm('sre_parse', ignore=('dump',)) # from sre_constants import *
-        cm('pdb')
-        cm('pydoc')
-
-        # Tests for modules inside packages
-        cm('email.parser')
-        cm('test.test_pyclbr')
-
-
-def test_main():
-    run_unittest(PyclbrTest)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pydoc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pydoc.py
deleted file mode 100644
index ece7cbc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pydoc.py
+++ /dev/null
@@ -1,367 +0,0 @@
-import sys
-import os
-import os.path
-import difflib
-import subprocess
-import re
-import pydoc
-import inspect
-import keyword
-import unittest
-import xml.etree
-import test.test_support
-from contextlib import contextmanager
-from collections import namedtuple
-from test.test_support import (
-    TESTFN, forget, rmtree, EnvironmentVarGuard, reap_children, captured_stdout)
-
-from test import pydoc_mod
-
-expected_text_pattern = \
-"""
-NAME
-    test.pydoc_mod - This is a test module for test_pydoc
-
-FILE
-    %s
-%s
-CLASSES
-    __builtin__.object
-        B
-    A
-\x20\x20\x20\x20
-    class A
-     |  Hello and goodbye
-     |\x20\x20
-     |  Methods defined here:
-     |\x20\x20
-     |  __init__()
-     |      Wow, I have no function!
-\x20\x20\x20\x20
-    class B(__builtin__.object)
-     |  Data descriptors defined here:
-     |\x20\x20
-     |  __dict__
-     |      dictionary for instance variables (if defined)
-     |\x20\x20
-     |  __weakref__
-     |      list of weak references to the object (if defined)
-     |\x20\x20
-     |  ----------------------------------------------------------------------
-     |  Data and other attributes defined here:
-     |\x20\x20
-     |  NO_MEANING = 'eggs'
-
-FUNCTIONS
-    doc_func()
-        This function solves all of the world's problems:
-        hunger
-        lack of Python
-        war
-\x20\x20\x20\x20
-    nodoc_func()
-
-DATA
-    __author__ = 'Benjamin Peterson'
-    __credits__ = 'Nobody'
-    __version__ = '1.2.3.4'
-
-VERSION
-    1.2.3.4
-
-AUTHOR
-    Benjamin Peterson
-
-CREDITS
-    Nobody
-""".strip()
-
-expected_html_pattern = \
-"""
-<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="heading">
-<tr bgcolor="#7799ee">
-<td valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="test.html"><font color="#ffffff">test</font></a>.pydoc_mod</strong></big></big> (version 1.2.3.4)</font></td
-><td align=right valign=bottom
-><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:%s">%s</a>%s</font></td></tr></table>
-    <p><tt>This&nbsp;is&nbsp;a&nbsp;test&nbsp;module&nbsp;for&nbsp;test_pydoc</tt></p>
-<p>
-<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ee77aa">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
-\x20\x20\x20\x20
-<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%%"><dl>
-<dt><font face="helvetica, arial"><a href="__builtin__.html#object">__builtin__.object</a>
-</font></dt><dd>
-<dl>
-<dt><font face="helvetica, arial"><a href="test.pydoc_mod.html#B">B</a>
-</font></dt></dl>
-</dd>
-<dt><font face="helvetica, arial"><a href="test.pydoc_mod.html#A">A</a>
-</font></dt></dl>
- <p>
-<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ffc8d8">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#000000" face="helvetica, arial"><a name="A">class <strong>A</strong></a></font></td></tr>
-\x20\x20\x20\x20
-<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
-<td colspan=2><tt>Hello&nbsp;and&nbsp;goodbye<br>&nbsp;</tt></td></tr>
-<tr><td>&nbsp;</td>
-<td width="100%%">Methods defined here:<br>
-<dl><dt><a name="A-__init__"><strong>__init__</strong></a>()</dt><dd><tt>Wow,&nbsp;I&nbsp;have&nbsp;no&nbsp;function!</tt></dd></dl>
-
-</td></tr></table> <p>
-<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#ffc8d8">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#000000" face="helvetica, arial"><a name="B">class <strong>B</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
-\x20\x20\x20\x20
-<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%%">Data descriptors defined here:<br>
-<dl><dt><strong>__dict__</strong></dt>
-<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
-</dl>
-<dl><dt><strong>__weakref__</strong></dt>
-<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
-</dl>
-<hr>
-Data and other attributes defined here:<br>
-<dl><dt><strong>NO_MEANING</strong> = 'eggs'</dl>
-
-</td></tr></table></td></tr></table><p>
-<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#eeaa77">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
-\x20\x20\x20\x20
-<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%%"><dl><dt><a name="-doc_func"><strong>doc_func</strong></a>()</dt><dd><tt>This&nbsp;function&nbsp;solves&nbsp;all&nbsp;of&nbsp;the&nbsp;world's&nbsp;problems:<br>
-hunger<br>
-lack&nbsp;of&nbsp;Python<br>
-war</tt></dd></dl>
- <dl><dt><a name="-nodoc_func"><strong>nodoc_func</strong></a>()</dt></dl>
-</td></tr></table><p>
-<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#55aa55">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
-\x20\x20\x20\x20
-<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%%"><strong>__author__</strong> = 'Benjamin Peterson'<br>
-<strong>__credits__</strong> = 'Nobody'<br>
-<strong>__version__</strong> = '1.2.3.4'</td></tr></table><p>
-<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#7799ee">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
-\x20\x20\x20\x20
-<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%%">Benjamin&nbsp;Peterson</td></tr></table><p>
-<table width="100%%" cellspacing=0 cellpadding=2 border=0 summary="section">
-<tr bgcolor="#7799ee">
-<td colspan=3 valign=bottom>&nbsp;<br>
-<font color="#ffffff" face="helvetica, arial"><big><strong>Credits</strong></big></font></td></tr>
-\x20\x20\x20\x20
-<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
-<td width="100%%">Nobody</td></tr></table>
-""".strip()
-
-
-# output pattern for missing module
-missing_pattern = "no Python documentation found for '%s'"
-
-# output pattern for module with bad imports
-badimport_pattern = "problem in %s - <type 'exceptions.ImportError'>: No module named %s"
-
-def run_pydoc(module_name, *args):
-    """
-    Runs pydoc on the specified module. Returns the stripped
-    output of pydoc.
-    """
-    cmd = [sys.executable, pydoc.__file__, " ".join(args), module_name]
-    try:
-        output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
-        return output.strip()
-    finally:
-        reap_children()
-
-def get_pydoc_html(module):
-    "Returns pydoc generated output as html"
-    doc = pydoc.HTMLDoc()
-    output = doc.docmodule(module)
-    loc = doc.getdocloc(pydoc_mod) or ""
-    if loc:
-        loc = "<br><a href=\"" + loc + "\">Module Docs</a>"
-    return output.strip(), loc
-
-def get_pydoc_text(module):
-    "Returns pydoc generated output as text"
-    doc = pydoc.TextDoc()
-    loc = doc.getdocloc(pydoc_mod) or ""
-    if loc:
-        loc = "\nMODULE DOCS\n    " + loc + "\n"
-
-    output = doc.docmodule(module)
-
-    # cleanup the extra text formatting that pydoc preforms
-    patt = re.compile('\b.')
-    output = patt.sub('', output)
-    return output.strip(), loc
-
-def print_diffs(text1, text2):
-    "Prints unified diffs for two texts"
-    lines1 = text1.splitlines(True)
-    lines2 = text2.splitlines(True)
-    diffs = difflib.unified_diff(lines1, lines2, n=0, fromfile='expected',
-                                 tofile='got')
-    print '\n' + ''.join(diffs)
-
-
-class PyDocDocTest(unittest.TestCase):
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_html_doc(self):
-        result, doc_loc = get_pydoc_html(pydoc_mod)
-        mod_file = inspect.getabsfile(pydoc_mod)
-        if sys.platform == 'win32':
-            import nturl2path
-            mod_url = nturl2path.pathname2url(mod_file)
-        else:
-            mod_url = mod_file
-        expected_html = expected_html_pattern % (mod_url, mod_file, doc_loc)
-        if result != expected_html:
-            print_diffs(expected_html, result)
-            self.fail("outputs are not equal, see diff above")
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_text_doc(self):
-        result, doc_loc = get_pydoc_text(pydoc_mod)
-        expected_text = expected_text_pattern % \
-                        (inspect.getabsfile(pydoc_mod), doc_loc)
-        if result != expected_text:
-            print_diffs(expected_text, result)
-            self.fail("outputs are not equal, see diff above")
-
-    def test_issue8225(self):
-        # Test issue8225 to ensure no doc link appears for xml.etree
-        result, doc_loc = get_pydoc_text(xml.etree)
-        self.assertEqual(doc_loc, "", "MODULE DOCS incorrectly includes a link")
-
-    def test_not_here(self):
-        missing_module = "test.i_am_not_here"
-        result = run_pydoc(missing_module)
-        expected = missing_pattern % missing_module
-        self.assertEqual(expected, result,
-            "documentation for missing module found")
-
-    def test_badimport(self):
-        # This tests the fix for issue 5230, where if pydoc found the module
-        # but the module had an internal import error pydoc would report no doc
-        # found.
-        modname = 'testmod_xyzzy'
-        testpairs = (
-            ('i_am_not_here', 'i_am_not_here'),
-            ('test.i_am_not_here_either', 'i_am_not_here_either'),
-            ('test.i_am_not_here.neither_am_i', 'i_am_not_here.neither_am_i'),
-            ('i_am_not_here.{}'.format(modname), 'i_am_not_here.{}'.format(modname)),
-            ('test.{}'.format(modname), modname),
-            )
-
-        @contextmanager
-        def newdirinpath(dir):
-            os.mkdir(dir)
-            sys.path.insert(0, dir)
-            yield
-            sys.path.pop(0)
-            rmtree(dir)
-
-        with newdirinpath(TESTFN), EnvironmentVarGuard() as env:
-            env['PYTHONPATH'] = TESTFN
-            fullmodname = os.path.join(TESTFN, modname)
-            sourcefn = fullmodname + os.extsep + "py"
-            for importstring, expectedinmsg in testpairs:
-                f = open(sourcefn, 'w')
-                f.write("import {}\n".format(importstring))
-                f.close()
-                try:
-                    result = run_pydoc(modname)
-                finally:
-                    forget(modname)
-                expected = badimport_pattern % (modname, expectedinmsg)
-                self.assertEqual(expected, result)
-
-    def test_input_strip(self):
-        missing_module = " test.i_am_not_here "
-        result = run_pydoc(missing_module)
-        expected = missing_pattern % missing_module.strip()
-        self.assertEqual(expected, result,
-            "white space was not stripped from module name "
-            "or other error output mismatch")
-
-    def test_stripid(self):
-        # test with strings, other implementations might have different repr()
-        stripid = pydoc.stripid
-        # strip the id
-        self.assertEqual(stripid('<function stripid at 0x88dcee4>'),
-                         '<function stripid>')
-        self.assertEqual(stripid('<function stripid at 0x01F65390>'),
-                         '<function stripid>')
-        # nothing to strip, return the same text
-        self.assertEqual(stripid('42'), '42')
-        self.assertEqual(stripid("<type 'exceptions.Exception'>"),
-                         "<type 'exceptions.Exception'>")
-
-
-class TestDescriptions(unittest.TestCase):
-
-    def test_module(self):
-        # Check that pydocfodder module can be described
-        from test import pydocfodder
-        doc = pydoc.render_doc(pydocfodder)
-        self.assertIn("pydocfodder", doc)
-
-    def test_classic_class(self):
-        class C: "Classic class"
-        c = C()
-        self.assertEqual(pydoc.describe(C), 'class C')
-        self.assertEqual(pydoc.describe(c), 'instance of C')
-        expected = 'instance of C in module %s' % __name__
-        self.assertIn(expected, pydoc.render_doc(c))
-
-    def test_class(self):
-        class C(object): "New-style class"
-        c = C()
-
-        self.assertEqual(pydoc.describe(C), 'class C')
-        self.assertEqual(pydoc.describe(c), 'C')
-        expected = 'C in module %s object' % __name__
-        self.assertIn(expected, pydoc.render_doc(c))
-
-    def test_namedtuple_public_underscore(self):
-        NT = namedtuple('NT', ['abc', 'def'], rename=True)
-        with captured_stdout() as help_io:
-            help(NT)
-        helptext = help_io.getvalue()
-        self.assertIn('_1', helptext)
-        self.assertIn('_replace', helptext)
-        self.assertIn('_asdict', helptext)
-
-
-class TestHelper(unittest.TestCase):
-    def test_keywords(self):
-        self.assertEqual(sorted(pydoc.Helper.keywords),
-                         sorted(keyword.kwlist))
-
-
-def test_main():
-    test.test_support.run_unittest(PyDocDocTest,
-                                   TestDescriptions,
-                                   TestHelper)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pyexpat.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pyexpat.py
deleted file mode 100644
index 40aa782..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_pyexpat.py
+++ /dev/null
@@ -1,604 +0,0 @@
-# XXX TypeErrors on calling handlers, or on bad return values from a
-# handler, are obscure and unhelpful.
-
-import StringIO, sys
-import unittest
-
-from xml.parsers import expat
-
-from test import test_support
-from test.test_support import sortdict, run_unittest
-
-
-class SetAttributeTest(unittest.TestCase):
-    def setUp(self):
-        self.parser = expat.ParserCreate(namespace_separator='!')
-        self.set_get_pairs = [
-            [0, 0],
-            [1, 1],
-            [2, 1],
-            [0, 0],
-            ]
-
-    def test_returns_unicode(self):
-        for x, y in self.set_get_pairs:
-            self.parser.returns_unicode = x
-            self.assertEqual(self.parser.returns_unicode, y)
-
-    def test_ordered_attributes(self):
-        for x, y in self.set_get_pairs:
-            self.parser.ordered_attributes = x
-            self.assertEqual(self.parser.ordered_attributes, y)
-
-    def test_specified_attributes(self):
-        for x, y in self.set_get_pairs:
-            self.parser.specified_attributes = x
-            self.assertEqual(self.parser.specified_attributes, y)
-
-
-data = '''\
-<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
-<?xml-stylesheet href="stylesheet.css"?>
-<!-- comment data -->
-<!DOCTYPE quotations SYSTEM "quotations.dtd" [
-<!ELEMENT root ANY>
-<!NOTATION notation SYSTEM "notation.jpeg">
-<!ENTITY acirc "&#226;">
-<!ENTITY external_entity SYSTEM "entity.file">
-<!ENTITY unparsed_entity SYSTEM "entity.file" NDATA notation>
-%unparsed_entity;
-]>
-
-<root attr1="value1" attr2="value2&#8000;">
-<myns:subelement xmlns:myns="http://www.python.org/namespace">
-     Contents of subelements
-</myns:subelement>
-<sub2><![CDATA[contents of CDATA section]]></sub2>
-&external_entity;
-</root>
-'''
-
-
-# Produce UTF-8 output
-class ParseTest(unittest.TestCase):
-    class Outputter:
-        def __init__(self):
-            self.out = []
-
-        def StartElementHandler(self, name, attrs):
-            self.out.append('Start element: ' + repr(name) + ' ' +
-                            sortdict(attrs))
-
-        def EndElementHandler(self, name):
-            self.out.append('End element: ' + repr(name))
-
-        def CharacterDataHandler(self, data):
-            data = data.strip()
-            if data:
-                self.out.append('Character data: ' + repr(data))
-
-        def ProcessingInstructionHandler(self, target, data):
-            self.out.append('PI: ' + repr(target) + ' ' + repr(data))
-
-        def StartNamespaceDeclHandler(self, prefix, uri):
-            self.out.append('NS decl: ' + repr(prefix) + ' ' + repr(uri))
-
-        def EndNamespaceDeclHandler(self, prefix):
-            self.out.append('End of NS decl: ' + repr(prefix))
-
-        def StartCdataSectionHandler(self):
-            self.out.append('Start of CDATA section')
-
-        def EndCdataSectionHandler(self):
-            self.out.append('End of CDATA section')
-
-        def CommentHandler(self, text):
-            self.out.append('Comment: ' + repr(text))
-
-        def NotationDeclHandler(self, *args):
-            name, base, sysid, pubid = args
-            self.out.append('Notation declared: %s' %(args,))
-
-        def UnparsedEntityDeclHandler(self, *args):
-            entityName, base, systemId, publicId, notationName = args
-            self.out.append('Unparsed entity decl: %s' %(args,))
-
-        def NotStandaloneHandler(self, userData):
-            self.out.append('Not standalone')
-            return 1
-
-        def ExternalEntityRefHandler(self, *args):
-            context, base, sysId, pubId = args
-            self.out.append('External entity ref: %s' %(args[1:],))
-            return 1
-
-        def DefaultHandler(self, userData):
-            pass
-
-        def DefaultHandlerExpand(self, userData):
-            pass
-
-    handler_names = [
-        'StartElementHandler', 'EndElementHandler',
-        'CharacterDataHandler', 'ProcessingInstructionHandler',
-        'UnparsedEntityDeclHandler', 'NotationDeclHandler',
-        'StartNamespaceDeclHandler', 'EndNamespaceDeclHandler',
-        'CommentHandler', 'StartCdataSectionHandler',
-        'EndCdataSectionHandler',
-        'DefaultHandler', 'DefaultHandlerExpand',
-        #'NotStandaloneHandler',
-        'ExternalEntityRefHandler'
-        ]
-
-    def test_utf8(self):
-
-        out = self.Outputter()
-        parser = expat.ParserCreate(namespace_separator='!')
-        for name in self.handler_names:
-            setattr(parser, name, getattr(out, name))
-        parser.returns_unicode = 0
-        parser.Parse(data, 1)
-
-        # Verify output
-        op = out.out
-        self.assertEqual(op[0], 'PI: \'xml-stylesheet\' \'href="stylesheet.css"\'')
-        self.assertEqual(op[1], "Comment: ' comment data '")
-        self.assertEqual(op[2], "Notation declared: ('notation', None, 'notation.jpeg', None)")
-        self.assertEqual(op[3], "Unparsed entity decl: ('unparsed_entity', None, 'entity.file', None, 'notation')")
-        self.assertEqual(op[4], "Start element: 'root' {'attr1': 'value1', 'attr2': 'value2\\xe1\\xbd\\x80'}")
-        self.assertEqual(op[5], "NS decl: 'myns' 'http://www.python.org/namespace'")
-        self.assertEqual(op[6], "Start element: 'http://www.python.org/namespace!subelement' {}")
-        self.assertEqual(op[7], "Character data: 'Contents of subelements'")
-        self.assertEqual(op[8], "End element: 'http://www.python.org/namespace!subelement'")
-        self.assertEqual(op[9], "End of NS decl: 'myns'")
-        self.assertEqual(op[10], "Start element: 'sub2' {}")
-        self.assertEqual(op[11], 'Start of CDATA section')
-        self.assertEqual(op[12], "Character data: 'contents of CDATA section'")
-        self.assertEqual(op[13], 'End of CDATA section')
-        self.assertEqual(op[14], "End element: 'sub2'")
-        self.assertEqual(op[15], "External entity ref: (None, 'entity.file', None)")
-        self.assertEqual(op[16], "End element: 'root'")
-
-    def test_unicode(self):
-        # Try the parse again, this time producing Unicode output
-        out = self.Outputter()
-        parser = expat.ParserCreate(namespace_separator='!')
-        parser.returns_unicode = 1
-        for name in self.handler_names:
-            setattr(parser, name, getattr(out, name))
-
-        parser.Parse(data, 1)
-
-        op = out.out
-        self.assertEqual(op[0], 'PI: u\'xml-stylesheet\' u\'href="stylesheet.css"\'')
-        self.assertEqual(op[1], "Comment: u' comment data '")
-        self.assertEqual(op[2], "Notation declared: (u'notation', None, u'notation.jpeg', None)")
-        self.assertEqual(op[3], "Unparsed entity decl: (u'unparsed_entity', None, u'entity.file', None, u'notation')")
-        self.assertEqual(op[4], "Start element: u'root' {u'attr1': u'value1', u'attr2': u'value2\\u1f40'}")
-        self.assertEqual(op[5], "NS decl: u'myns' u'http://www.python.org/namespace'")
-        self.assertEqual(op[6], "Start element: u'http://www.python.org/namespace!subelement' {}")
-        self.assertEqual(op[7], "Character data: u'Contents of subelements'")
-        self.assertEqual(op[8], "End element: u'http://www.python.org/namespace!subelement'")
-        self.assertEqual(op[9], "End of NS decl: u'myns'")
-        self.assertEqual(op[10], "Start element: u'sub2' {}")
-        self.assertEqual(op[11], 'Start of CDATA section')
-        self.assertEqual(op[12], "Character data: u'contents of CDATA section'")
-        self.assertEqual(op[13], 'End of CDATA section')
-        self.assertEqual(op[14], "End element: u'sub2'")
-        self.assertEqual(op[15], "External entity ref: (None, u'entity.file', None)")
-        self.assertEqual(op[16], "End element: u'root'")
-
-    def test_parse_file(self):
-        # Try parsing a file
-        out = self.Outputter()
-        parser = expat.ParserCreate(namespace_separator='!')
-        parser.returns_unicode = 1
-        for name in self.handler_names:
-            setattr(parser, name, getattr(out, name))
-        file = StringIO.StringIO(data)
-
-        parser.ParseFile(file)
-
-        op = out.out
-        self.assertEqual(op[0], 'PI: u\'xml-stylesheet\' u\'href="stylesheet.css"\'')
-        self.assertEqual(op[1], "Comment: u' comment data '")
-        self.assertEqual(op[2], "Notation declared: (u'notation', None, u'notation.jpeg', None)")
-        self.assertEqual(op[3], "Unparsed entity decl: (u'unparsed_entity', None, u'entity.file', None, u'notation')")
-        self.assertEqual(op[4], "Start element: u'root' {u'attr1': u'value1', u'attr2': u'value2\\u1f40'}")
-        self.assertEqual(op[5], "NS decl: u'myns' u'http://www.python.org/namespace'")
-        self.assertEqual(op[6], "Start element: u'http://www.python.org/namespace!subelement' {}")
-        self.assertEqual(op[7], "Character data: u'Contents of subelements'")
-        self.assertEqual(op[8], "End element: u'http://www.python.org/namespace!subelement'")
-        self.assertEqual(op[9], "End of NS decl: u'myns'")
-        self.assertEqual(op[10], "Start element: u'sub2' {}")
-        self.assertEqual(op[11], 'Start of CDATA section')
-        self.assertEqual(op[12], "Character data: u'contents of CDATA section'")
-        self.assertEqual(op[13], 'End of CDATA section')
-        self.assertEqual(op[14], "End element: u'sub2'")
-        self.assertEqual(op[15], "External entity ref: (None, u'entity.file', None)")
-        self.assertEqual(op[16], "End element: u'root'")
-
-        # Issue 4877: expat.ParseFile causes segfault on a closed file.
-        fp = open(test_support.TESTFN, 'wb')
-        try:
-            fp.close()
-            parser = expat.ParserCreate()
-            with self.assertRaises(ValueError):
-                parser.ParseFile(fp)
-        finally:
-            test_support.unlink(test_support.TESTFN)
-
-
-class NamespaceSeparatorTest(unittest.TestCase):
-    def test_legal(self):
-        # Tests that make sure we get errors when the namespace_separator value
-        # is illegal, and that we don't for good values:
-        expat.ParserCreate()
-        expat.ParserCreate(namespace_separator=None)
-        expat.ParserCreate(namespace_separator=' ')
-
-    def test_illegal(self):
-        try:
-            expat.ParserCreate(namespace_separator=42)
-            self.fail()
-        except TypeError, e:
-            self.assertEqual(str(e),
-                'ParserCreate() argument 2 must be string or None, not int')
-
-        try:
-            expat.ParserCreate(namespace_separator='too long')
-            self.fail()
-        except ValueError, e:
-            self.assertEqual(str(e),
-                'namespace_separator must be at most one character, omitted, or None')
-
-    def test_zero_length(self):
-        # ParserCreate() needs to accept a namespace_separator of zero length
-        # to satisfy the requirements of RDF applications that are required
-        # to simply glue together the namespace URI and the localname.  Though
-        # considered a wart of the RDF specifications, it needs to be supported.
-        #
-        # See XML-SIG mailing list thread starting with
-        # http://mail.python.org/pipermail/xml-sig/2001-April/005202.html
-        #
-        expat.ParserCreate(namespace_separator='') # too short
-
-
-class InterningTest(unittest.TestCase):
-    def test(self):
-        # Test the interning machinery.
-        p = expat.ParserCreate()
-        L = []
-        def collector(name, *args):
-            L.append(name)
-        p.StartElementHandler = collector
-        p.EndElementHandler = collector
-        p.Parse("<e> <e/> <e></e> </e>", 1)
-        tag = L[0]
-        self.assertEqual(len(L), 6)
-        for entry in L:
-            # L should have the same string repeated over and over.
-            self.assertTrue(tag is entry)
-
-
-class BufferTextTest(unittest.TestCase):
-    def setUp(self):
-        self.stuff = []
-        self.parser = expat.ParserCreate()
-        self.parser.buffer_text = 1
-        self.parser.CharacterDataHandler = self.CharacterDataHandler
-
-    def check(self, expected, label):
-        self.assertEqual(self.stuff, expected,
-                "%s\nstuff    = %r\nexpected = %r"
-                % (label, self.stuff, map(unicode, expected)))
-
-    def CharacterDataHandler(self, text):
-        self.stuff.append(text)
-
-    def StartElementHandler(self, name, attrs):
-        self.stuff.append("<%s>" % name)
-        bt = attrs.get("buffer-text")
-        if bt == "yes":
-            self.parser.buffer_text = 1
-        elif bt == "no":
-            self.parser.buffer_text = 0
-
-    def EndElementHandler(self, name):
-        self.stuff.append("</%s>" % name)
-
-    def CommentHandler(self, data):
-        self.stuff.append("<!--%s-->" % data)
-
-    def setHandlers(self, handlers=[]):
-        for name in handlers:
-            setattr(self.parser, name, getattr(self, name))
-
-    def test_default_to_disabled(self):
-        parser = expat.ParserCreate()
-        self.assertFalse(parser.buffer_text)
-
-    def test_buffering_enabled(self):
-        # Make sure buffering is turned on
-        self.assertTrue(self.parser.buffer_text)
-        self.parser.Parse("<a>1<b/>2<c/>3</a>", 1)
-        self.assertEqual(self.stuff, ['123'],
-                         "buffered text not properly collapsed")
-
-    def test1(self):
-        # XXX This test exposes more detail of Expat's text chunking than we
-        # XXX like, but it tests what we need to concisely.
-        self.setHandlers(["StartElementHandler"])
-        self.parser.Parse("<a>1<b buffer-text='no'/>2\n3<c buffer-text='yes'/>4\n5</a>", 1)
-        self.assertEqual(self.stuff,
-                         ["<a>", "1", "<b>", "2", "\n", "3", "<c>", "4\n5"],
-                         "buffering control not reacting as expected")
-
-    def test2(self):
-        self.parser.Parse("<a>1<b/>&lt;2&gt;<c/>&#32;\n&#x20;3</a>", 1)
-        self.assertEqual(self.stuff, ["1<2> \n 3"],
-                         "buffered text not properly collapsed")
-
-    def test3(self):
-        self.setHandlers(["StartElementHandler"])
-        self.parser.Parse("<a>1<b/>2<c/>3</a>", 1)
-        self.assertEqual(self.stuff, ["<a>", "1", "<b>", "2", "<c>", "3"],
-                          "buffered text not properly split")
-
-    def test4(self):
-        self.setHandlers(["StartElementHandler", "EndElementHandler"])
-        self.parser.CharacterDataHandler = None
-        self.parser.Parse("<a>1<b/>2<c/>3</a>", 1)
-        self.assertEqual(self.stuff,
-                         ["<a>", "<b>", "</b>", "<c>", "</c>", "</a>"])
-
-    def test5(self):
-        self.setHandlers(["StartElementHandler", "EndElementHandler"])
-        self.parser.Parse("<a>1<b></b>2<c/>3</a>", 1)
-        self.assertEqual(self.stuff,
-            ["<a>", "1", "<b>", "</b>", "2", "<c>", "</c>", "3", "</a>"])
-
-    def test6(self):
-        self.setHandlers(["CommentHandler", "EndElementHandler",
-                    "StartElementHandler"])
-        self.parser.Parse("<a>1<b/>2<c></c>345</a> ", 1)
-        self.assertEqual(self.stuff,
-            ["<a>", "1", "<b>", "</b>", "2", "<c>", "</c>", "345", "</a>"],
-            "buffered text not properly split")
-
-    def test7(self):
-        self.setHandlers(["CommentHandler", "EndElementHandler",
-                    "StartElementHandler"])
-        self.parser.Parse("<a>1<b/>2<c></c>3<!--abc-->4<!--def-->5</a> ", 1)
-        self.assertEqual(self.stuff,
-                         ["<a>", "1", "<b>", "</b>", "2", "<c>", "</c>", "3",
-                          "<!--abc-->", "4", "<!--def-->", "5", "</a>"],
-                         "buffered text not properly split")
-
-
-# Test handling of exception from callback:
-class HandlerExceptionTest(unittest.TestCase):
-    def StartElementHandler(self, name, attrs):
-        raise RuntimeError(name)
-
-    def test(self):
-        parser = expat.ParserCreate()
-        parser.StartElementHandler = self.StartElementHandler
-        try:
-            parser.Parse("<a><b><c/></b></a>", 1)
-            self.fail()
-        except RuntimeError, e:
-            self.assertEqual(e.args[0], 'a',
-                             "Expected RuntimeError for element 'a', but" + \
-                             " found %r" % e.args[0])
-
-
-# Test Current* members:
-class PositionTest(unittest.TestCase):
-    def StartElementHandler(self, name, attrs):
-        self.check_pos('s')
-
-    def EndElementHandler(self, name):
-        self.check_pos('e')
-
-    def check_pos(self, event):
-        pos = (event,
-               self.parser.CurrentByteIndex,
-               self.parser.CurrentLineNumber,
-               self.parser.CurrentColumnNumber)
-        self.assertTrue(self.upto < len(self.expected_list),
-                        'too many parser events')
-        expected = self.expected_list[self.upto]
-        self.assertEqual(pos, expected,
-                'Expected position %s, got position %s' %(pos, expected))
-        self.upto += 1
-
-    def test(self):
-        self.parser = expat.ParserCreate()
-        self.parser.StartElementHandler = self.StartElementHandler
-        self.parser.EndElementHandler = self.EndElementHandler
-        self.upto = 0
-        self.expected_list = [('s', 0, 1, 0), ('s', 5, 2, 1), ('s', 11, 3, 2),
-                              ('e', 15, 3, 6), ('e', 17, 4, 1), ('e', 22, 5, 0)]
-
-        xml = '<a>\n <b>\n  <c/>\n </b>\n</a>'
-        self.parser.Parse(xml, 1)
-
-
-class sf1296433Test(unittest.TestCase):
-    def test_parse_only_xml_data(self):
-        # http://python.org/sf/1296433
-        #
-        xml = "<?xml version='1.0' encoding='iso8859'?><s>%s</s>" % ('a' * 1025)
-        # this one doesn't crash
-        #xml = "<?xml version='1.0'?><s>%s</s>" % ('a' * 10000)
-
-        class SpecificException(Exception):
-            pass
-
-        def handler(text):
-            raise SpecificException
-
-        parser = expat.ParserCreate()
-        parser.CharacterDataHandler = handler
-
-        self.assertRaises(Exception, parser.Parse, xml)
-
-class ChardataBufferTest(unittest.TestCase):
-    """
-    test setting of chardata buffer size
-    """
-
-    def test_1025_bytes(self):
-        self.assertEqual(self.small_buffer_test(1025), 2)
-
-    def test_1000_bytes(self):
-        self.assertEqual(self.small_buffer_test(1000), 1)
-
-    def test_wrong_size(self):
-        parser = expat.ParserCreate()
-        parser.buffer_text = 1
-        def f(size):
-            parser.buffer_size = size
-
-        self.assertRaises(TypeError, f, sys.maxint+1)
-        self.assertRaises(ValueError, f, -1)
-        self.assertRaises(ValueError, f, 0)
-
-    def test_unchanged_size(self):
-        xml1 = ("<?xml version='1.0' encoding='iso8859'?><s>%s" % ('a' * 512))
-        xml2 = 'a'*512 + '</s>'
-        parser = expat.ParserCreate()
-        parser.CharacterDataHandler = self.counting_handler
-        parser.buffer_size = 512
-        parser.buffer_text = 1
-
-        # Feed 512 bytes of character data: the handler should be called
-        # once.
-        self.n = 0
-        parser.Parse(xml1)
-        self.assertEqual(self.n, 1)
-
-        # Reassign to buffer_size, but assign the same size.
-        parser.buffer_size = parser.buffer_size
-        self.assertEqual(self.n, 1)
-
-        # Try parsing rest of the document
-        parser.Parse(xml2)
-        self.assertEqual(self.n, 2)
-
-
-    def test_disabling_buffer(self):
-        xml1 = "<?xml version='1.0' encoding='iso8859'?><a>%s" % ('a' * 512)
-        xml2 = ('b' * 1024)
-        xml3 = "%s</a>" % ('c' * 1024)
-        parser = expat.ParserCreate()
-        parser.CharacterDataHandler = self.counting_handler
-        parser.buffer_text = 1
-        parser.buffer_size = 1024
-        self.assertEqual(parser.buffer_size, 1024)
-
-        # Parse one chunk of XML
-        self.n = 0
-        parser.Parse(xml1, 0)
-        self.assertEqual(parser.buffer_size, 1024)
-        self.assertEqual(self.n, 1)
-
-        # Turn off buffering and parse the next chunk.
-        parser.buffer_text = 0
-        self.assertFalse(parser.buffer_text)
-        self.assertEqual(parser.buffer_size, 1024)
-        for i in range(10):
-            parser.Parse(xml2, 0)
-        self.assertEqual(self.n, 11)
-
-        parser.buffer_text = 1
-        self.assertTrue(parser.buffer_text)
-        self.assertEqual(parser.buffer_size, 1024)
-        parser.Parse(xml3, 1)
-        self.assertEqual(self.n, 12)
-
-
-
-    def make_document(self, bytes):
-        return ("<?xml version='1.0'?><tag>" + bytes * 'a' + '</tag>')
-
-    def counting_handler(self, text):
-        self.n += 1
-
-    def small_buffer_test(self, buffer_len):
-        xml = "<?xml version='1.0' encoding='iso8859'?><s>%s</s>" % ('a' * buffer_len)
-        parser = expat.ParserCreate()
-        parser.CharacterDataHandler = self.counting_handler
-        parser.buffer_size = 1024
-        parser.buffer_text = 1
-
-        self.n = 0
-        parser.Parse(xml)
-        return self.n
-
-    def test_change_size_1(self):
-        xml1 = "<?xml version='1.0' encoding='iso8859'?><a><s>%s" % ('a' * 1024)
-        xml2 = "aaa</s><s>%s</s></a>" % ('a' * 1025)
-        parser = expat.ParserCreate()
-        parser.CharacterDataHandler = self.counting_handler
-        parser.buffer_text = 1
-        parser.buffer_size = 1024
-        self.assertEqual(parser.buffer_size, 1024)
-
-        self.n = 0
-        parser.Parse(xml1, 0)
-        parser.buffer_size *= 2
-        self.assertEqual(parser.buffer_size, 2048)
-        parser.Parse(xml2, 1)
-        self.assertEqual(self.n, 2)
-
-    def test_change_size_2(self):
-        xml1 = "<?xml version='1.0' encoding='iso8859'?><a>a<s>%s" % ('a' * 1023)
-        xml2 = "aaa</s><s>%s</s></a>" % ('a' * 1025)
-        parser = expat.ParserCreate()
-        parser.CharacterDataHandler = self.counting_handler
-        parser.buffer_text = 1
-        parser.buffer_size = 2048
-        self.assertEqual(parser.buffer_size, 2048)
-
-        self.n=0
-        parser.Parse(xml1, 0)
-        parser.buffer_size //= 2
-        self.assertEqual(parser.buffer_size, 1024)
-        parser.Parse(xml2, 1)
-        self.assertEqual(self.n, 4)
-
-class MalformedInputText(unittest.TestCase):
-    def test1(self):
-        xml = "\0\r\n"
-        parser = expat.ParserCreate()
-        try:
-            parser.Parse(xml, True)
-            self.fail()
-        except expat.ExpatError as e:
-            self.assertEqual(str(e), 'unclosed token: line 2, column 0')
-
-    def test2(self):
-        xml = "<?xml version\xc2\x85='1.0'?>\r\n"
-        parser = expat.ParserCreate()
-        try:
-            parser.Parse(xml, True)
-            self.fail()
-        except expat.ExpatError as e:
-            self.assertEqual(str(e), 'XML declaration not well-formed: line 1, column 14')
-
-def test_main():
-    run_unittest(SetAttributeTest,
-                 ParseTest,
-                 NamespaceSeparatorTest,
-                 InterningTest,
-                 BufferTextTest,
-                 HandlerExceptionTest,
-                 PositionTest,
-                 sf1296433Test,
-                 ChardataBufferTest,
-                 MalformedInputText)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_queue.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_queue.py
deleted file mode 100644
index b6bc66e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_queue.py
+++ /dev/null
@@ -1,322 +0,0 @@
-# Some simple queue module tests, plus some failure conditions
-# to ensure the Queue locks remain stable.
-import Queue
-import time
-import unittest
-from test import test_support
-threading = test_support.import_module('threading')
-
-QUEUE_SIZE = 5
-
-# A thread to run a function that unclogs a blocked Queue.
-class _TriggerThread(threading.Thread):
-    def __init__(self, fn, args):
-        self.fn = fn
-        self.args = args
-        self.startedEvent = threading.Event()
-        threading.Thread.__init__(self)
-
-    def run(self):
-        # The sleep isn't necessary, but is intended to give the blocking
-        # function in the main thread a chance at actually blocking before
-        # we unclog it.  But if the sleep is longer than the timeout-based
-        # tests wait in their blocking functions, those tests will fail.
-        # So we give them much longer timeout values compared to the
-        # sleep here (I aimed at 10 seconds for blocking functions --
-        # they should never actually wait that long - they should make
-        # progress as soon as we call self.fn()).
-        time.sleep(0.1)
-        self.startedEvent.set()
-        self.fn(*self.args)
-
-
-# Execute a function that blocks, and in a separate thread, a function that
-# triggers the release.  Returns the result of the blocking function.  Caution:
-# block_func must guarantee to block until trigger_func is called, and
-# trigger_func must guarantee to change queue state so that block_func can make
-# enough progress to return.  In particular, a block_func that just raises an
-# exception regardless of whether trigger_func is called will lead to
-# timing-dependent sporadic failures, and one of those went rarely seen but
-# undiagnosed for years.  Now block_func must be unexceptional.  If block_func
-# is supposed to raise an exception, call do_exceptional_blocking_test()
-# instead.
-
-class BlockingTestMixin:
-
-    def do_blocking_test(self, block_func, block_args, trigger_func, trigger_args):
-        self.t = _TriggerThread(trigger_func, trigger_args)
-        self.t.start()
-        self.result = block_func(*block_args)
-        # If block_func returned before our thread made the call, we failed!
-        if not self.t.startedEvent.is_set():
-            self.fail("blocking function '%r' appeared not to block" %
-                      block_func)
-        self.t.join(10) # make sure the thread terminates
-        if self.t.is_alive():
-            self.fail("trigger function '%r' appeared to not return" %
-                      trigger_func)
-        return self.result
-
-    # Call this instead if block_func is supposed to raise an exception.
-    def do_exceptional_blocking_test(self,block_func, block_args, trigger_func,
-                                   trigger_args, expected_exception_class):
-        self.t = _TriggerThread(trigger_func, trigger_args)
-        self.t.start()
-        try:
-            try:
-                block_func(*block_args)
-            except expected_exception_class:
-                raise
-            else:
-                self.fail("expected exception of kind %r" %
-                                 expected_exception_class)
-        finally:
-            self.t.join(10) # make sure the thread terminates
-            if self.t.is_alive():
-                self.fail("trigger function '%r' appeared to not return" %
-                                 trigger_func)
-            if not self.t.startedEvent.is_set():
-                self.fail("trigger thread ended but event never set")
-
-
-class BaseQueueTest(unittest.TestCase, BlockingTestMixin):
-    def setUp(self):
-        self.cum = 0
-        self.cumlock = threading.Lock()
-
-    def simple_queue_test(self, q):
-        if not q.empty():
-            raise RuntimeError, "Call this function with an empty queue"
-        # I guess we better check things actually queue correctly a little :)
-        q.put(111)
-        q.put(333)
-        q.put(222)
-        target_order = dict(Queue = [111, 333, 222],
-                            LifoQueue = [222, 333, 111],
-                            PriorityQueue = [111, 222, 333])
-        actual_order = [q.get(), q.get(), q.get()]
-        self.assertEqual(actual_order, target_order[q.__class__.__name__],
-                         "Didn't seem to queue the correct data!")
-        for i in range(QUEUE_SIZE-1):
-            q.put(i)
-            self.assertTrue(not q.empty(), "Queue should not be empty")
-        self.assertTrue(not q.full(), "Queue should not be full")
-        last = 2 * QUEUE_SIZE
-        full = 3 * 2 * QUEUE_SIZE
-        q.put(last)
-        self.assertTrue(q.full(), "Queue should be full")
-        try:
-            q.put(full, block=0)
-            self.fail("Didn't appear to block with a full queue")
-        except Queue.Full:
-            pass
-        try:
-            q.put(full, timeout=0.01)
-            self.fail("Didn't appear to time-out with a full queue")
-        except Queue.Full:
-            pass
-        # Test a blocking put
-        self.do_blocking_test(q.put, (full,), q.get, ())
-        self.do_blocking_test(q.put, (full, True, 10), q.get, ())
-        # Empty it
-        for i in range(QUEUE_SIZE):
-            q.get()
-        self.assertTrue(q.empty(), "Queue should be empty")
-        try:
-            q.get(block=0)
-            self.fail("Didn't appear to block with an empty queue")
-        except Queue.Empty:
-            pass
-        try:
-            q.get(timeout=0.01)
-            self.fail("Didn't appear to time-out with an empty queue")
-        except Queue.Empty:
-            pass
-        # Test a blocking get
-        self.do_blocking_test(q.get, (), q.put, ('empty',))
-        self.do_blocking_test(q.get, (True, 10), q.put, ('empty',))
-
-
-    def worker(self, q):
-        while True:
-            x = q.get()
-            if x is None:
-                q.task_done()
-                return
-            with self.cumlock:
-                self.cum += x
-            q.task_done()
-
-    def queue_join_test(self, q):
-        self.cum = 0
-        for i in (0,1):
-            threading.Thread(target=self.worker, args=(q,)).start()
-        for i in xrange(100):
-            q.put(i)
-        q.join()
-        self.assertEqual(self.cum, sum(range(100)),
-                         "q.join() did not block until all tasks were done")
-        for i in (0,1):
-            q.put(None)         # instruct the threads to close
-        q.join()                # verify that you can join twice
-
-    def test_queue_task_done(self):
-        # Test to make sure a queue task completed successfully.
-        q = self.type2test()
-        try:
-            q.task_done()
-        except ValueError:
-            pass
-        else:
-            self.fail("Did not detect task count going negative")
-
-    def test_queue_join(self):
-        # Test that a queue join()s successfully, and before anything else
-        # (done twice for insurance).
-        q = self.type2test()
-        self.queue_join_test(q)
-        self.queue_join_test(q)
-        try:
-            q.task_done()
-        except ValueError:
-            pass
-        else:
-            self.fail("Did not detect task count going negative")
-
-    def test_simple_queue(self):
-        # Do it a couple of times on the same queue.
-        # Done twice to make sure works with same instance reused.
-        q = self.type2test(QUEUE_SIZE)
-        self.simple_queue_test(q)
-        self.simple_queue_test(q)
-
-
-class QueueTest(BaseQueueTest):
-    type2test = Queue.Queue
-
-class LifoQueueTest(BaseQueueTest):
-    type2test = Queue.LifoQueue
-
-class PriorityQueueTest(BaseQueueTest):
-    type2test = Queue.PriorityQueue
-
-
-
-# A Queue subclass that can provoke failure at a moment's notice :)
-class FailingQueueException(Exception):
-    pass
-
-class FailingQueue(Queue.Queue):
-    def __init__(self, *args):
-        self.fail_next_put = False
-        self.fail_next_get = False
-        Queue.Queue.__init__(self, *args)
-    def _put(self, item):
-        if self.fail_next_put:
-            self.fail_next_put = False
-            raise FailingQueueException, "You Lose"
-        return Queue.Queue._put(self, item)
-    def _get(self):
-        if self.fail_next_get:
-            self.fail_next_get = False
-            raise FailingQueueException, "You Lose"
-        return Queue.Queue._get(self)
-
-class FailingQueueTest(unittest.TestCase, BlockingTestMixin):
-
-    def failing_queue_test(self, q):
-        if not q.empty():
-            raise RuntimeError, "Call this function with an empty queue"
-        for i in range(QUEUE_SIZE-1):
-            q.put(i)
-        # Test a failing non-blocking put.
-        q.fail_next_put = True
-        try:
-            q.put("oops", block=0)
-            self.fail("The queue didn't fail when it should have")
-        except FailingQueueException:
-            pass
-        q.fail_next_put = True
-        try:
-            q.put("oops", timeout=0.1)
-            self.fail("The queue didn't fail when it should have")
-        except FailingQueueException:
-            pass
-        q.put("last")
-        self.assertTrue(q.full(), "Queue should be full")
-        # Test a failing blocking put
-        q.fail_next_put = True
-        try:
-            self.do_blocking_test(q.put, ("full",), q.get, ())
-            self.fail("The queue didn't fail when it should have")
-        except FailingQueueException:
-            pass
-        # Check the Queue isn't damaged.
-        # put failed, but get succeeded - re-add
-        q.put("last")
-        # Test a failing timeout put
-        q.fail_next_put = True
-        try:
-            self.do_exceptional_blocking_test(q.put, ("full", True, 10), q.get, (),
-                                              FailingQueueException)
-            self.fail("The queue didn't fail when it should have")
-        except FailingQueueException:
-            pass
-        # Check the Queue isn't damaged.
-        # put failed, but get succeeded - re-add
-        q.put("last")
-        self.assertTrue(q.full(), "Queue should be full")
-        q.get()
-        self.assertTrue(not q.full(), "Queue should not be full")
-        q.put("last")
-        self.assertTrue(q.full(), "Queue should be full")
-        # Test a blocking put
-        self.do_blocking_test(q.put, ("full",), q.get, ())
-        # Empty it
-        for i in range(QUEUE_SIZE):
-            q.get()
-        self.assertTrue(q.empty(), "Queue should be empty")
-        q.put("first")
-        q.fail_next_get = True
-        try:
-            q.get()
-            self.fail("The queue didn't fail when it should have")
-        except FailingQueueException:
-            pass
-        self.assertTrue(not q.empty(), "Queue should not be empty")
-        q.fail_next_get = True
-        try:
-            q.get(timeout=0.1)
-            self.fail("The queue didn't fail when it should have")
-        except FailingQueueException:
-            pass
-        self.assertTrue(not q.empty(), "Queue should not be empty")
-        q.get()
-        self.assertTrue(q.empty(), "Queue should be empty")
-        q.fail_next_get = True
-        try:
-            self.do_exceptional_blocking_test(q.get, (), q.put, ('empty',),
-                                              FailingQueueException)
-            self.fail("The queue didn't fail when it should have")
-        except FailingQueueException:
-            pass
-        # put succeeded, but get failed.
-        self.assertTrue(not q.empty(), "Queue should not be empty")
-        q.get()
-        self.assertTrue(q.empty(), "Queue should be empty")
-
-    def test_failing_queue(self):
-        # Test to make sure a queue is functioning correctly.
-        # Done twice to the same instance.
-        q = FailingQueue(QUEUE_SIZE)
-        self.failing_queue_test(q)
-        self.failing_queue_test(q)
-
-
-def test_main():
-    test_support.run_unittest(QueueTest, LifoQueueTest, PriorityQueueTest,
-                              FailingQueueTest)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_quopri.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_quopri.py
deleted file mode 100644
index fb580eb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_quopri.py
+++ /dev/null
@@ -1,201 +0,0 @@
-from test import test_support
-import unittest
-
-import sys, cStringIO, subprocess
-import quopri
-
-
-
-ENCSAMPLE = """\
-Here's a bunch of special=20
-
-=A1=A2=A3=A4=A5=A6=A7=A8=A9
-=AA=AB=AC=AD=AE=AF=B0=B1=B2=B3
-=B4=B5=B6=B7=B8=B9=BA=BB=BC=BD=BE
-=BF=C0=C1=C2=C3=C4=C5=C6
-=C7=C8=C9=CA=CB=CC=CD=CE=CF
-=D0=D1=D2=D3=D4=D5=D6=D7
-=D8=D9=DA=DB=DC=DD=DE=DF
-=E0=E1=E2=E3=E4=E5=E6=E7
-=E8=E9=EA=EB=EC=ED=EE=EF
-=F0=F1=F2=F3=F4=F5=F6=F7
-=F8=F9=FA=FB=FC=FD=FE=FF
-
-characters... have fun!
-"""
-
-# First line ends with a space
-DECSAMPLE = "Here's a bunch of special \n" + \
-"""\
-
-\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9
-\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3
-\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe
-\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6
-\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf
-\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7
-\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf
-\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7
-\xe8\xe9\xea\xeb\xec\xed\xee\xef
-\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7
-\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff
-
-characters... have fun!
-"""
-
-
-def withpythonimplementation(testfunc):
-    def newtest(self):
-        # Test default implementation
-        testfunc(self)
-        # Test Python implementation
-        if quopri.b2a_qp is not None or quopri.a2b_qp is not None:
-            oldencode = quopri.b2a_qp
-            olddecode = quopri.a2b_qp
-            try:
-                quopri.b2a_qp = None
-                quopri.a2b_qp = None
-                testfunc(self)
-            finally:
-                quopri.b2a_qp = oldencode
-                quopri.a2b_qp = olddecode
-    newtest.__name__ = testfunc.__name__
-    return newtest
-
-class QuopriTestCase(unittest.TestCase):
-    # Each entry is a tuple of (plaintext, encoded string).  These strings are
-    # used in the "quotetabs=0" tests.
-    STRINGS = (
-        # Some normal strings
-        ('hello', 'hello'),
-        ('''hello
-        there
-        world''', '''hello
-        there
-        world'''),
-        ('''hello
-        there
-        world
-''', '''hello
-        there
-        world
-'''),
-        ('\201\202\203', '=81=82=83'),
-        # Add some trailing MUST QUOTE strings
-        ('hello ', 'hello=20'),
-        ('hello\t', 'hello=09'),
-        # Some long lines.  First, a single line of 108 characters
-        ('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\xd8\xd9\xda\xdb\xdc\xdd\xde\xdfxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
-         '''xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=D8=D9=DA=DB=DC=DD=DE=DFx=
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'''),
-        # A line of exactly 76 characters, no soft line break should be needed
-        ('yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy',
-        'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'),
-        # A line of 77 characters, forcing a soft line break at position 75,
-        # and a second line of exactly 2 characters (because the soft line
-        # break `=' sign counts against the line length limit).
-        ('zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz',
-         '''zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz=
-zz'''),
-        # A line of 151 characters, forcing a soft line break at position 75,
-        # with a second line of exactly 76 characters and no trailing =
-        ('zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz',
-         '''zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz=
-zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz'''),
-        # A string containing a hard line break, but which the first line is
-        # 151 characters and the second line is exactly 76 characters.  This
-        # should leave us with three lines, the first which has a soft line
-        # break, and which the second and third do not.
-        ('''yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
-zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz''',
-         '''yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy=
-yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
-zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz'''),
-        # Now some really complex stuff ;)
-        (DECSAMPLE, ENCSAMPLE),
-        )
-
-    # These are used in the "quotetabs=1" tests.
-    ESTRINGS = (
-        ('hello world', 'hello=20world'),
-        ('hello\tworld', 'hello=09world'),
-        )
-
-    # These are used in the "header=1" tests.
-    HSTRINGS = (
-        ('hello world', 'hello_world'),
-        ('hello_world', 'hello=5Fworld'),
-        )
-
-    @withpythonimplementation
-    def test_encodestring(self):
-        for p, e in self.STRINGS:
-            self.assertTrue(quopri.encodestring(p) == e)
-
-    @withpythonimplementation
-    def test_decodestring(self):
-        for p, e in self.STRINGS:
-            self.assertTrue(quopri.decodestring(e) == p)
-
-    @withpythonimplementation
-    def test_idempotent_string(self):
-        for p, e in self.STRINGS:
-            self.assertTrue(quopri.decodestring(quopri.encodestring(e)) == e)
-
-    @withpythonimplementation
-    def test_encode(self):
-        for p, e in self.STRINGS:
-            infp = cStringIO.StringIO(p)
-            outfp = cStringIO.StringIO()
-            quopri.encode(infp, outfp, quotetabs=False)
-            self.assertTrue(outfp.getvalue() == e)
-
-    @withpythonimplementation
-    def test_decode(self):
-        for p, e in self.STRINGS:
-            infp = cStringIO.StringIO(e)
-            outfp = cStringIO.StringIO()
-            quopri.decode(infp, outfp)
-            self.assertTrue(outfp.getvalue() == p)
-
-    @withpythonimplementation
-    def test_embedded_ws(self):
-        for p, e in self.ESTRINGS:
-            self.assertTrue(quopri.encodestring(p, quotetabs=True) == e)
-            self.assertTrue(quopri.decodestring(e) == p)
-
-    @withpythonimplementation
-    def test_encode_header(self):
-        for p, e in self.HSTRINGS:
-            self.assertTrue(quopri.encodestring(p, header=True) == e)
-
-    @withpythonimplementation
-    def test_decode_header(self):
-        for p, e in self.HSTRINGS:
-            self.assertTrue(quopri.decodestring(e, header=True) == p)
-
-    def test_scriptencode(self):
-        (p, e) = self.STRINGS[-1]
-        process = subprocess.Popen([sys.executable, "-mquopri"],
-                                   stdin=subprocess.PIPE, stdout=subprocess.PIPE)
-        self.addCleanup(process.stdout.close)
-        cout, cerr = process.communicate(p)
-        # On Windows, Python will output the result to stdout using
-        # CRLF, as the mode of stdout is text mode. To compare this
-        # with the expected result, we need to do a line-by-line comparison.
-        self.assertEqual(cout.splitlines(), e.splitlines())
-
-    def test_scriptdecode(self):
-        (p, e) = self.STRINGS[-1]
-        process = subprocess.Popen([sys.executable, "-mquopri", "-d"],
-                                   stdin=subprocess.PIPE, stdout=subprocess.PIPE)
-        self.addCleanup(process.stdout.close)
-        cout, cerr = process.communicate(e)
-        self.assertEqual(cout.splitlines(), p.splitlines())
-
-def test_main():
-    test_support.run_unittest(QuopriTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_random.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_random.py
deleted file mode 100644
index fea9bc9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_random.py
+++ /dev/null
@@ -1,572 +0,0 @@
-#!/usr/bin/env python
-
-import unittest
-import random
-import time
-import pickle
-import warnings
-from math import log, exp, pi, fsum, sin
-from functools import reduce
-from test import test_support
-
-class TestBasicOps(unittest.TestCase):
-    # Superclass with tests common to all generators.
-    # Subclasses must arrange for self.gen to retrieve the Random instance
-    # to be tested.
-
-    def randomlist(self, n):
-        """Helper function to make a list of random numbers"""
-        return [self.gen.random() for i in xrange(n)]
-
-    def test_autoseed(self):
-        self.gen.seed()
-        state1 = self.gen.getstate()
-        time.sleep(0.1)
-        self.gen.seed()      # diffent seeds at different times
-        state2 = self.gen.getstate()
-        self.assertNotEqual(state1, state2)
-
-    def test_saverestore(self):
-        N = 1000
-        self.gen.seed()
-        state = self.gen.getstate()
-        randseq = self.randomlist(N)
-        self.gen.setstate(state)    # should regenerate the same sequence
-        self.assertEqual(randseq, self.randomlist(N))
-
-    def test_seedargs(self):
-        for arg in [None, 0, 0L, 1, 1L, -1, -1L, 10**20, -(10**20),
-                    3.14, 1+2j, 'a', tuple('abc')]:
-            self.gen.seed(arg)
-        for arg in [range(3), dict(one=1)]:
-            self.assertRaises(TypeError, self.gen.seed, arg)
-        self.assertRaises(TypeError, self.gen.seed, 1, 2)
-        self.assertRaises(TypeError, type(self.gen), [])
-
-    def test_jumpahead(self):
-        self.gen.seed()
-        state1 = self.gen.getstate()
-        self.gen.jumpahead(100)
-        state2 = self.gen.getstate()    # s/b distinct from state1
-        self.assertNotEqual(state1, state2)
-        self.gen.jumpahead(100)
-        state3 = self.gen.getstate()    # s/b distinct from state2
-        self.assertNotEqual(state2, state3)
-
-        with test_support.check_py3k_warnings(quiet=True):
-            self.assertRaises(TypeError, self.gen.jumpahead)  # needs an arg
-            self.assertRaises(TypeError, self.gen.jumpahead, 2, 3)  # too many
-
-    def test_sample(self):
-        # For the entire allowable range of 0 <= k <= N, validate that
-        # the sample is of the correct length and contains only unique items
-        N = 100
-        population = xrange(N)
-        for k in xrange(N+1):
-            s = self.gen.sample(population, k)
-            self.assertEqual(len(s), k)
-            uniq = set(s)
-            self.assertEqual(len(uniq), k)
-            self.assertTrue(uniq <= set(population))
-        self.assertEqual(self.gen.sample([], 0), [])  # test edge case N==k==0
-
-    def test_sample_distribution(self):
-        # For the entire allowable range of 0 <= k <= N, validate that
-        # sample generates all possible permutations
-        n = 5
-        pop = range(n)
-        trials = 10000  # large num prevents false negatives without slowing normal case
-        def factorial(n):
-            return reduce(int.__mul__, xrange(1, n), 1)
-        for k in xrange(n):
-            expected = factorial(n) // factorial(n-k)
-            perms = {}
-            for i in xrange(trials):
-                perms[tuple(self.gen.sample(pop, k))] = None
-                if len(perms) == expected:
-                    break
-            else:
-                self.fail()
-
-    def test_sample_inputs(self):
-        # SF bug #801342 -- population can be any iterable defining __len__()
-        self.gen.sample(set(range(20)), 2)
-        self.gen.sample(range(20), 2)
-        self.gen.sample(xrange(20), 2)
-        self.gen.sample(str('abcdefghijklmnopqrst'), 2)
-        self.gen.sample(tuple('abcdefghijklmnopqrst'), 2)
-
-    def test_sample_on_dicts(self):
-        self.gen.sample(dict.fromkeys('abcdefghijklmnopqrst'), 2)
-
-        # SF bug #1460340 -- random.sample can raise KeyError
-        a = dict.fromkeys(range(10)+range(10,100,2)+range(100,110))
-        self.gen.sample(a, 3)
-
-        # A followup to bug #1460340:  sampling from a dict could return
-        # a subset of its keys or of its values, depending on the size of
-        # the subset requested.
-        N = 30
-        d = dict((i, complex(i, i)) for i in xrange(N))
-        for k in xrange(N+1):
-            samp = self.gen.sample(d, k)
-            # Verify that we got ints back (keys); the values are complex.
-            for x in samp:
-                self.assertTrue(type(x) is int)
-        samp.sort()
-        self.assertEqual(samp, range(N))
-
-    def test_gauss(self):
-        # Ensure that the seed() method initializes all the hidden state.  In
-        # particular, through 2.2.1 it failed to reset a piece of state used
-        # by (and only by) the .gauss() method.
-
-        for seed in 1, 12, 123, 1234, 12345, 123456, 654321:
-            self.gen.seed(seed)
-            x1 = self.gen.random()
-            y1 = self.gen.gauss(0, 1)
-
-            self.gen.seed(seed)
-            x2 = self.gen.random()
-            y2 = self.gen.gauss(0, 1)
-
-            self.assertEqual(x1, x2)
-            self.assertEqual(y1, y2)
-
-    def test_pickling(self):
-        state = pickle.dumps(self.gen)
-        origseq = [self.gen.random() for i in xrange(10)]
-        newgen = pickle.loads(state)
-        restoredseq = [newgen.random() for i in xrange(10)]
-        self.assertEqual(origseq, restoredseq)
-
-    def test_bug_1727780(self):
-        # verify that version-2-pickles can be loaded
-        # fine, whether they are created on 32-bit or 64-bit
-        # platforms, and that version-3-pickles load fine.
-        files = [("randv2_32.pck", 780),
-                 ("randv2_64.pck", 866),
-                 ("randv3.pck", 343)]
-        for file, value in files:
-            f = open(test_support.findfile(file),"rb")
-            r = pickle.load(f)
-            f.close()
-            self.assertEqual(r.randrange(1000), value)
-
-class WichmannHill_TestBasicOps(TestBasicOps):
-    gen = random.WichmannHill()
-
-    def test_setstate_first_arg(self):
-        self.assertRaises(ValueError, self.gen.setstate, (2, None, None))
-
-    def test_strong_jumpahead(self):
-        # tests that jumpahead(n) semantics correspond to n calls to random()
-        N = 1000
-        s = self.gen.getstate()
-        self.gen.jumpahead(N)
-        r1 = self.gen.random()
-        # now do it the slow way
-        self.gen.setstate(s)
-        for i in xrange(N):
-            self.gen.random()
-        r2 = self.gen.random()
-        self.assertEqual(r1, r2)
-
-    def test_gauss_with_whseed(self):
-        # Ensure that the seed() method initializes all the hidden state.  In
-        # particular, through 2.2.1 it failed to reset a piece of state used
-        # by (and only by) the .gauss() method.
-
-        for seed in 1, 12, 123, 1234, 12345, 123456, 654321:
-            self.gen.whseed(seed)
-            x1 = self.gen.random()
-            y1 = self.gen.gauss(0, 1)
-
-            self.gen.whseed(seed)
-            x2 = self.gen.random()
-            y2 = self.gen.gauss(0, 1)
-
-            self.assertEqual(x1, x2)
-            self.assertEqual(y1, y2)
-
-    def test_bigrand(self):
-        # Verify warnings are raised when randrange is too large for random()
-        with warnings.catch_warnings():
-            warnings.filterwarnings("error", "Underlying random")
-            self.assertRaises(UserWarning, self.gen.randrange, 2**60)
-
-class SystemRandom_TestBasicOps(TestBasicOps):
-    gen = random.SystemRandom()
-
-    def test_autoseed(self):
-        # Doesn't need to do anything except not fail
-        self.gen.seed()
-
-    def test_saverestore(self):
-        self.assertRaises(NotImplementedError, self.gen.getstate)
-        self.assertRaises(NotImplementedError, self.gen.setstate, None)
-
-    def test_seedargs(self):
-        # Doesn't need to do anything except not fail
-        self.gen.seed(100)
-
-    def test_jumpahead(self):
-        # Doesn't need to do anything except not fail
-        self.gen.jumpahead(100)
-
-    def test_gauss(self):
-        self.gen.gauss_next = None
-        self.gen.seed(100)
-        self.assertEqual(self.gen.gauss_next, None)
-
-    def test_pickling(self):
-        self.assertRaises(NotImplementedError, pickle.dumps, self.gen)
-
-    def test_53_bits_per_float(self):
-        # This should pass whenever a C double has 53 bit precision.
-        span = 2 ** 53
-        cum = 0
-        for i in xrange(100):
-            cum |= int(self.gen.random() * span)
-        self.assertEqual(cum, span-1)
-
-    def test_bigrand(self):
-        # The randrange routine should build-up the required number of bits
-        # in stages so that all bit positions are active.
-        span = 2 ** 500
-        cum = 0
-        for i in xrange(100):
-            r = self.gen.randrange(span)
-            self.assertTrue(0 <= r < span)
-            cum |= r
-        self.assertEqual(cum, span-1)
-
-    def test_bigrand_ranges(self):
-        for i in [40,80, 160, 200, 211, 250, 375, 512, 550]:
-            start = self.gen.randrange(2 ** i)
-            stop = self.gen.randrange(2 ** (i-2))
-            if stop <= start:
-                return
-            self.assertTrue(start <= self.gen.randrange(start, stop) < stop)
-
-    def test_rangelimits(self):
-        for start, stop in [(-2,0), (-(2**60)-2,-(2**60)), (2**60,2**60+2)]:
-            self.assertEqual(set(range(start,stop)),
-                set([self.gen.randrange(start,stop) for i in xrange(100)]))
-
-    def test_genrandbits(self):
-        # Verify ranges
-        for k in xrange(1, 1000):
-            self.assertTrue(0 <= self.gen.getrandbits(k) < 2**k)
-
-        # Verify all bits active
-        getbits = self.gen.getrandbits
-        for span in [1, 2, 3, 4, 31, 32, 32, 52, 53, 54, 119, 127, 128, 129]:
-            cum = 0
-            for i in xrange(100):
-                cum |= getbits(span)
-            self.assertEqual(cum, 2**span-1)
-
-        # Verify argument checking
-        self.assertRaises(TypeError, self.gen.getrandbits)
-        self.assertRaises(TypeError, self.gen.getrandbits, 1, 2)
-        self.assertRaises(ValueError, self.gen.getrandbits, 0)
-        self.assertRaises(ValueError, self.gen.getrandbits, -1)
-        self.assertRaises(TypeError, self.gen.getrandbits, 10.1)
-
-    def test_randbelow_logic(self, _log=log, int=int):
-        # check bitcount transition points:  2**i and 2**(i+1)-1
-        # show that: k = int(1.001 + _log(n, 2))
-        # is equal to or one greater than the number of bits in n
-        for i in xrange(1, 1000):
-            n = 1L << i # check an exact power of two
-            numbits = i+1
-            k = int(1.00001 + _log(n, 2))
-            self.assertEqual(k, numbits)
-            self.assertTrue(n == 2**(k-1))
-
-            n += n - 1      # check 1 below the next power of two
-            k = int(1.00001 + _log(n, 2))
-            self.assertIn(k, [numbits, numbits+1])
-            self.assertTrue(2**k > n > 2**(k-2))
-
-            n -= n >> 15     # check a little farther below the next power of two
-            k = int(1.00001 + _log(n, 2))
-            self.assertEqual(k, numbits)        # note the stronger assertion
-            self.assertTrue(2**k > n > 2**(k-1))   # note the stronger assertion
-
-
-class MersenneTwister_TestBasicOps(TestBasicOps):
-    gen = random.Random()
-
-    def test_setstate_first_arg(self):
-        self.assertRaises(ValueError, self.gen.setstate, (1, None, None))
-
-    def test_setstate_middle_arg(self):
-        # Wrong type, s/b tuple
-        self.assertRaises(TypeError, self.gen.setstate, (2, None, None))
-        # Wrong length, s/b 625
-        self.assertRaises(ValueError, self.gen.setstate, (2, (1,2,3), None))
-        # Wrong type, s/b tuple of 625 ints
-        self.assertRaises(TypeError, self.gen.setstate, (2, ('a',)*625, None))
-        # Last element s/b an int also
-        self.assertRaises(TypeError, self.gen.setstate, (2, (0,)*624+('a',), None))
-
-    def test_referenceImplementation(self):
-        # Compare the python implementation with results from the original
-        # code.  Create 2000 53-bit precision random floats.  Compare only
-        # the last ten entries to show that the independent implementations
-        # are tracking.  Here is the main() function needed to create the
-        # list of expected random numbers:
-        #    void main(void){
-        #         int i;
-        #         unsigned long init[4]={61731, 24903, 614, 42143}, length=4;
-        #         init_by_array(init, length);
-        #         for (i=0; i<2000; i++) {
-        #           printf("%.15f ", genrand_res53());
-        #           if (i%5==4) printf("\n");
-        #         }
-        #     }
-        expected = [0.45839803073713259,
-                    0.86057815201978782,
-                    0.92848331726782152,
-                    0.35932681119782461,
-                    0.081823493762449573,
-                    0.14332226470169329,
-                    0.084297823823520024,
-                    0.53814864671831453,
-                    0.089215024911993401,
-                    0.78486196105372907]
-
-        self.gen.seed(61731L + (24903L<<32) + (614L<<64) + (42143L<<96))
-        actual = self.randomlist(2000)[-10:]
-        for a, e in zip(actual, expected):
-            self.assertAlmostEqual(a,e,places=14)
-
-    def test_strong_reference_implementation(self):
-        # Like test_referenceImplementation, but checks for exact bit-level
-        # equality.  This should pass on any box where C double contains
-        # at least 53 bits of precision (the underlying algorithm suffers
-        # no rounding errors -- all results are exact).
-        from math import ldexp
-
-        expected = [0x0eab3258d2231fL,
-                    0x1b89db315277a5L,
-                    0x1db622a5518016L,
-                    0x0b7f9af0d575bfL,
-                    0x029e4c4db82240L,
-                    0x04961892f5d673L,
-                    0x02b291598e4589L,
-                    0x11388382c15694L,
-                    0x02dad977c9e1feL,
-                    0x191d96d4d334c6L]
-        self.gen.seed(61731L + (24903L<<32) + (614L<<64) + (42143L<<96))
-        actual = self.randomlist(2000)[-10:]
-        for a, e in zip(actual, expected):
-            self.assertEqual(long(ldexp(a, 53)), e)
-
-    def test_long_seed(self):
-        # This is most interesting to run in debug mode, just to make sure
-        # nothing blows up.  Under the covers, a dynamically resized array
-        # is allocated, consuming space proportional to the number of bits
-        # in the seed.  Unfortunately, that's a quadratic-time algorithm,
-        # so don't make this horribly big.
-        seed = (1L << (10000 * 8)) - 1  # about 10K bytes
-        self.gen.seed(seed)
-
-    def test_53_bits_per_float(self):
-        # This should pass whenever a C double has 53 bit precision.
-        span = 2 ** 53
-        cum = 0
-        for i in xrange(100):
-            cum |= int(self.gen.random() * span)
-        self.assertEqual(cum, span-1)
-
-    def test_bigrand(self):
-        # The randrange routine should build-up the required number of bits
-        # in stages so that all bit positions are active.
-        span = 2 ** 500
-        cum = 0
-        for i in xrange(100):
-            r = self.gen.randrange(span)
-            self.assertTrue(0 <= r < span)
-            cum |= r
-        self.assertEqual(cum, span-1)
-
-    def test_bigrand_ranges(self):
-        for i in [40,80, 160, 200, 211, 250, 375, 512, 550]:
-            start = self.gen.randrange(2 ** i)
-            stop = self.gen.randrange(2 ** (i-2))
-            if stop <= start:
-                return
-            self.assertTrue(start <= self.gen.randrange(start, stop) < stop)
-
-    def test_rangelimits(self):
-        for start, stop in [(-2,0), (-(2**60)-2,-(2**60)), (2**60,2**60+2)]:
-            self.assertEqual(set(range(start,stop)),
-                set([self.gen.randrange(start,stop) for i in xrange(100)]))
-
-    def test_genrandbits(self):
-        # Verify cross-platform repeatability
-        self.gen.seed(1234567)
-        self.assertEqual(self.gen.getrandbits(100),
-                         97904845777343510404718956115L)
-        # Verify ranges
-        for k in xrange(1, 1000):
-            self.assertTrue(0 <= self.gen.getrandbits(k) < 2**k)
-
-        # Verify all bits active
-        getbits = self.gen.getrandbits
-        for span in [1, 2, 3, 4, 31, 32, 32, 52, 53, 54, 119, 127, 128, 129]:
-            cum = 0
-            for i in xrange(100):
-                cum |= getbits(span)
-            self.assertEqual(cum, 2**span-1)
-
-        # Verify argument checking
-        self.assertRaises(TypeError, self.gen.getrandbits)
-        self.assertRaises(TypeError, self.gen.getrandbits, 'a')
-        self.assertRaises(TypeError, self.gen.getrandbits, 1, 2)
-        self.assertRaises(ValueError, self.gen.getrandbits, 0)
-        self.assertRaises(ValueError, self.gen.getrandbits, -1)
-
-    def test_randbelow_logic(self, _log=log, int=int):
-        # check bitcount transition points:  2**i and 2**(i+1)-1
-        # show that: k = int(1.001 + _log(n, 2))
-        # is equal to or one greater than the number of bits in n
-        for i in xrange(1, 1000):
-            n = 1L << i # check an exact power of two
-            numbits = i+1
-            k = int(1.00001 + _log(n, 2))
-            self.assertEqual(k, numbits)
-            self.assertTrue(n == 2**(k-1))
-
-            n += n - 1      # check 1 below the next power of two
-            k = int(1.00001 + _log(n, 2))
-            self.assertIn(k, [numbits, numbits+1])
-            self.assertTrue(2**k > n > 2**(k-2))
-
-            n -= n >> 15     # check a little farther below the next power of two
-            k = int(1.00001 + _log(n, 2))
-            self.assertEqual(k, numbits)        # note the stronger assertion
-            self.assertTrue(2**k > n > 2**(k-1))   # note the stronger assertion
-
-    def test_randrange_bug_1590891(self):
-        start = 1000000000000
-        stop = -100000000000000000000
-        step = -200
-        x = self.gen.randrange(start, stop, step)
-        self.assertTrue(stop < x <= start)
-        self.assertEqual((x+stop)%step, 0)
-
-def gamma(z, sqrt2pi=(2.0*pi)**0.5):
-    # Reflection to right half of complex plane
-    if z < 0.5:
-        return pi / sin(pi*z) / gamma(1.0-z)
-    # Lanczos approximation with g=7
-    az = z + (7.0 - 0.5)
-    return az ** (z-0.5) / exp(az) * sqrt2pi * fsum([
-        0.9999999999995183,
-        676.5203681218835 / z,
-        -1259.139216722289 / (z+1.0),
-        771.3234287757674 / (z+2.0),
-        -176.6150291498386 / (z+3.0),
-        12.50734324009056 / (z+4.0),
-        -0.1385710331296526 / (z+5.0),
-        0.9934937113930748e-05 / (z+6.0),
-        0.1659470187408462e-06 / (z+7.0),
-    ])
-
-class TestDistributions(unittest.TestCase):
-    def test_zeroinputs(self):
-        # Verify that distributions can handle a series of zero inputs'
-        g = random.Random()
-        x = [g.random() for i in xrange(50)] + [0.0]*5
-        g.random = x[:].pop; g.uniform(1,10)
-        g.random = x[:].pop; g.paretovariate(1.0)
-        g.random = x[:].pop; g.expovariate(1.0)
-        g.random = x[:].pop; g.weibullvariate(1.0, 1.0)
-        g.random = x[:].pop; g.normalvariate(0.0, 1.0)
-        g.random = x[:].pop; g.gauss(0.0, 1.0)
-        g.random = x[:].pop; g.lognormvariate(0.0, 1.0)
-        g.random = x[:].pop; g.vonmisesvariate(0.0, 1.0)
-        g.random = x[:].pop; g.gammavariate(0.01, 1.0)
-        g.random = x[:].pop; g.gammavariate(1.0, 1.0)
-        g.random = x[:].pop; g.gammavariate(200.0, 1.0)
-        g.random = x[:].pop; g.betavariate(3.0, 3.0)
-        g.random = x[:].pop; g.triangular(0.0, 1.0, 1.0/3.0)
-
-    def test_avg_std(self):
-        # Use integration to test distribution average and standard deviation.
-        # Only works for distributions which do not consume variates in pairs
-        g = random.Random()
-        N = 5000
-        x = [i/float(N) for i in xrange(1,N)]
-        for variate, args, mu, sigmasqrd in [
-                (g.uniform, (1.0,10.0), (10.0+1.0)/2, (10.0-1.0)**2/12),
-                (g.triangular, (0.0, 1.0, 1.0/3.0), 4.0/9.0, 7.0/9.0/18.0),
-                (g.expovariate, (1.5,), 1/1.5, 1/1.5**2),
-                (g.paretovariate, (5.0,), 5.0/(5.0-1),
-                                  5.0/((5.0-1)**2*(5.0-2))),
-                (g.weibullvariate, (1.0, 3.0), gamma(1+1/3.0),
-                                  gamma(1+2/3.0)-gamma(1+1/3.0)**2) ]:
-            g.random = x[:].pop
-            y = []
-            for i in xrange(len(x)):
-                try:
-                    y.append(variate(*args))
-                except IndexError:
-                    pass
-            s1 = s2 = 0
-            for e in y:
-                s1 += e
-                s2 += (e - mu) ** 2
-            N = len(y)
-            self.assertAlmostEqual(s1/N, mu, 2)
-            self.assertAlmostEqual(s2/(N-1), sigmasqrd, 2)
-
-class TestModule(unittest.TestCase):
-    def testMagicConstants(self):
-        self.assertAlmostEqual(random.NV_MAGICCONST, 1.71552776992141)
-        self.assertAlmostEqual(random.TWOPI, 6.28318530718)
-        self.assertAlmostEqual(random.LOG4, 1.38629436111989)
-        self.assertAlmostEqual(random.SG_MAGICCONST, 2.50407739677627)
-
-    def test__all__(self):
-        # tests validity but not completeness of the __all__ list
-        self.assertTrue(set(random.__all__) <= set(dir(random)))
-
-    def test_random_subclass_with_kwargs(self):
-        # SF bug #1486663 -- this used to erroneously raise a TypeError
-        class Subclass(random.Random):
-            def __init__(self, newarg=None):
-                random.Random.__init__(self)
-        Subclass(newarg=1)
-
-
-def test_main(verbose=None):
-    testclasses =    [WichmannHill_TestBasicOps,
-                      MersenneTwister_TestBasicOps,
-                      TestDistributions,
-                      TestModule]
-
-    try:
-        random.SystemRandom().random()
-    except NotImplementedError:
-        pass
-    else:
-        testclasses.append(SystemRandom_TestBasicOps)
-
-    test_support.run_unittest(*testclasses)
-
-    # verify reference counting
-    import sys
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        counts = [None] * 5
-        for i in xrange(len(counts)):
-            test_support.run_unittest(*testclasses)
-            counts[i] = sys.gettotalrefcount()
-        print counts
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_re.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_re.py
deleted file mode 100644
index 068cea3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_re.py
+++ /dev/null
@@ -1,889 +0,0 @@
-from test.test_support import verbose, run_unittest, import_module
-import re
-from re import Scanner
-import sys
-import string
-import traceback
-from weakref import proxy
-
-# Misc tests from Tim Peters' re.doc
-
-# WARNING: Don't change details in these tests if you don't know
-# what you're doing. Some of these tests were carefully modeled to
-# cover most of the code.
-
-import unittest
-
-class ReTests(unittest.TestCase):
-
-    def test_weakref(self):
-        s = 'QabbbcR'
-        x = re.compile('ab+c')
-        y = proxy(x)
-        self.assertEqual(x.findall('QabbbcR'), y.findall('QabbbcR'))
-
-    def test_search_star_plus(self):
-        self.assertEqual(re.search('x*', 'axx').span(0), (0, 0))
-        self.assertEqual(re.search('x*', 'axx').span(), (0, 0))
-        self.assertEqual(re.search('x+', 'axx').span(0), (1, 3))
-        self.assertEqual(re.search('x+', 'axx').span(), (1, 3))
-        self.assertEqual(re.search('x', 'aaa'), None)
-        self.assertEqual(re.match('a*', 'xxx').span(0), (0, 0))
-        self.assertEqual(re.match('a*', 'xxx').span(), (0, 0))
-        self.assertEqual(re.match('x*', 'xxxa').span(0), (0, 3))
-        self.assertEqual(re.match('x*', 'xxxa').span(), (0, 3))
-        self.assertEqual(re.match('a+', 'xxx'), None)
-
-    def bump_num(self, matchobj):
-        int_value = int(matchobj.group(0))
-        return str(int_value + 1)
-
-    def test_basic_re_sub(self):
-        self.assertEqual(re.sub("(?i)b+", "x", "bbbb BBBB"), 'x x')
-        self.assertEqual(re.sub(r'\d+', self.bump_num, '08.2 -2 23x99y'),
-                         '9.3 -3 24x100y')
-        self.assertEqual(re.sub(r'\d+', self.bump_num, '08.2 -2 23x99y', 3),
-                         '9.3 -3 23x99y')
-
-        self.assertEqual(re.sub('.', lambda m: r"\n", 'x'), '\\n')
-        self.assertEqual(re.sub('.', r"\n", 'x'), '\n')
-
-        s = r"\1\1"
-        self.assertEqual(re.sub('(.)', s, 'x'), 'xx')
-        self.assertEqual(re.sub('(.)', re.escape(s), 'x'), s)
-        self.assertEqual(re.sub('(.)', lambda m: s, 'x'), s)
-
-        self.assertEqual(re.sub('(?P<a>x)', '\g<a>\g<a>', 'xx'), 'xxxx')
-        self.assertEqual(re.sub('(?P<a>x)', '\g<a>\g<1>', 'xx'), 'xxxx')
-        self.assertEqual(re.sub('(?P<unk>x)', '\g<unk>\g<unk>', 'xx'), 'xxxx')
-        self.assertEqual(re.sub('(?P<unk>x)', '\g<1>\g<1>', 'xx'), 'xxxx')
-
-        self.assertEqual(re.sub('a',r'\t\n\v\r\f\a\b\B\Z\a\A\w\W\s\S\d\D','a'),
-                         '\t\n\v\r\f\a\b\\B\\Z\a\\A\\w\\W\\s\\S\\d\\D')
-        self.assertEqual(re.sub('a', '\t\n\v\r\f\a', 'a'), '\t\n\v\r\f\a')
-        self.assertEqual(re.sub('a', '\t\n\v\r\f\a', 'a'),
-                         (chr(9)+chr(10)+chr(11)+chr(13)+chr(12)+chr(7)))
-
-        self.assertEqual(re.sub('^\s*', 'X', 'test'), 'Xtest')
-
-    def test_bug_449964(self):
-        # fails for group followed by other escape
-        self.assertEqual(re.sub(r'(?P<unk>x)', '\g<1>\g<1>\\b', 'xx'),
-                         'xx\bxx\b')
-
-    def test_bug_449000(self):
-        # Test for sub() on escaped characters
-        self.assertEqual(re.sub(r'\r\n', r'\n', 'abc\r\ndef\r\n'),
-                         'abc\ndef\n')
-        self.assertEqual(re.sub('\r\n', r'\n', 'abc\r\ndef\r\n'),
-                         'abc\ndef\n')
-        self.assertEqual(re.sub(r'\r\n', '\n', 'abc\r\ndef\r\n'),
-                         'abc\ndef\n')
-        self.assertEqual(re.sub('\r\n', '\n', 'abc\r\ndef\r\n'),
-                         'abc\ndef\n')
-
-    def test_bug_1140(self):
-        # re.sub(x, y, u'') should return u'', not '', and
-        # re.sub(x, y, '') should return '', not u''.
-        # Also:
-        # re.sub(x, y, unicode(x)) should return unicode(y), and
-        # re.sub(x, y, str(x)) should return
-        #     str(y) if isinstance(y, str) else unicode(y).
-        for x in 'x', u'x':
-            for y in 'y', u'y':
-                z = re.sub(x, y, u'')
-                self.assertEqual(z, u'')
-                self.assertEqual(type(z), unicode)
-                #
-                z = re.sub(x, y, '')
-                self.assertEqual(z, '')
-                self.assertEqual(type(z), str)
-                #
-                z = re.sub(x, y, unicode(x))
-                self.assertEqual(z, y)
-                self.assertEqual(type(z), unicode)
-                #
-                z = re.sub(x, y, str(x))
-                self.assertEqual(z, y)
-                self.assertEqual(type(z), type(y))
-
-    def test_bug_1661(self):
-        # Verify that flags do not get silently ignored with compiled patterns
-        pattern = re.compile('.')
-        self.assertRaises(ValueError, re.match, pattern, 'A', re.I)
-        self.assertRaises(ValueError, re.search, pattern, 'A', re.I)
-        self.assertRaises(ValueError, re.findall, pattern, 'A', re.I)
-        self.assertRaises(ValueError, re.compile, pattern, re.I)
-
-    def test_bug_3629(self):
-        # A regex that triggered a bug in the sre-code validator
-        re.compile("(?P<quote>)(?(quote))")
-
-    def test_sub_template_numeric_escape(self):
-        # bug 776311 and friends
-        self.assertEqual(re.sub('x', r'\0', 'x'), '\0')
-        self.assertEqual(re.sub('x', r'\000', 'x'), '\000')
-        self.assertEqual(re.sub('x', r'\001', 'x'), '\001')
-        self.assertEqual(re.sub('x', r'\008', 'x'), '\0' + '8')
-        self.assertEqual(re.sub('x', r'\009', 'x'), '\0' + '9')
-        self.assertEqual(re.sub('x', r'\111', 'x'), '\111')
-        self.assertEqual(re.sub('x', r'\117', 'x'), '\117')
-
-        self.assertEqual(re.sub('x', r'\1111', 'x'), '\1111')
-        self.assertEqual(re.sub('x', r'\1111', 'x'), '\111' + '1')
-
-        self.assertEqual(re.sub('x', r'\00', 'x'), '\x00')
-        self.assertEqual(re.sub('x', r'\07', 'x'), '\x07')
-        self.assertEqual(re.sub('x', r'\08', 'x'), '\0' + '8')
-        self.assertEqual(re.sub('x', r'\09', 'x'), '\0' + '9')
-        self.assertEqual(re.sub('x', r'\0a', 'x'), '\0' + 'a')
-
-        self.assertEqual(re.sub('x', r'\400', 'x'), '\0')
-        self.assertEqual(re.sub('x', r'\777', 'x'), '\377')
-
-        self.assertRaises(re.error, re.sub, 'x', r'\1', 'x')
-        self.assertRaises(re.error, re.sub, 'x', r'\8', 'x')
-        self.assertRaises(re.error, re.sub, 'x', r'\9', 'x')
-        self.assertRaises(re.error, re.sub, 'x', r'\11', 'x')
-        self.assertRaises(re.error, re.sub, 'x', r'\18', 'x')
-        self.assertRaises(re.error, re.sub, 'x', r'\1a', 'x')
-        self.assertRaises(re.error, re.sub, 'x', r'\90', 'x')
-        self.assertRaises(re.error, re.sub, 'x', r'\99', 'x')
-        self.assertRaises(re.error, re.sub, 'x', r'\118', 'x') # r'\11' + '8'
-        self.assertRaises(re.error, re.sub, 'x', r'\11a', 'x')
-        self.assertRaises(re.error, re.sub, 'x', r'\181', 'x') # r'\18' + '1'
-        self.assertRaises(re.error, re.sub, 'x', r'\800', 'x') # r'\80' + '0'
-
-        # in python2.3 (etc), these loop endlessly in sre_parser.py
-        self.assertEqual(re.sub('(((((((((((x)))))))))))', r'\11', 'x'), 'x')
-        self.assertEqual(re.sub('((((((((((y))))))))))(.)', r'\118', 'xyz'),
-                         'xz8')
-        self.assertEqual(re.sub('((((((((((y))))))))))(.)', r'\11a', 'xyz'),
-                         'xza')
-
-    def test_qualified_re_sub(self):
-        self.assertEqual(re.sub('a', 'b', 'aaaaa'), 'bbbbb')
-        self.assertEqual(re.sub('a', 'b', 'aaaaa', 1), 'baaaa')
-
-    def test_bug_114660(self):
-        self.assertEqual(re.sub(r'(\S)\s+(\S)', r'\1 \2', 'hello  there'),
-                         'hello there')
-
-    def test_bug_462270(self):
-        # Test for empty sub() behaviour, see SF bug #462270
-        self.assertEqual(re.sub('x*', '-', 'abxd'), '-a-b-d-')
-        self.assertEqual(re.sub('x+', '-', 'abxd'), 'ab-d')
-
-    def test_symbolic_refs(self):
-        self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<a', 'xx')
-        self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<', 'xx')
-        self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g', 'xx')
-        self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<a a>', 'xx')
-        self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<1a1>', 'xx')
-        self.assertRaises(IndexError, re.sub, '(?P<a>x)', '\g<ab>', 'xx')
-        self.assertRaises(re.error, re.sub, '(?P<a>x)|(?P<b>y)', '\g<b>', 'xx')
-        self.assertRaises(re.error, re.sub, '(?P<a>x)|(?P<b>y)', '\\2', 'xx')
-        self.assertRaises(re.error, re.sub, '(?P<a>x)', '\g<-1>', 'xx')
-
-    def test_re_subn(self):
-        self.assertEqual(re.subn("(?i)b+", "x", "bbbb BBBB"), ('x x', 2))
-        self.assertEqual(re.subn("b+", "x", "bbbb BBBB"), ('x BBBB', 1))
-        self.assertEqual(re.subn("b+", "x", "xyz"), ('xyz', 0))
-        self.assertEqual(re.subn("b*", "x", "xyz"), ('xxxyxzx', 4))
-        self.assertEqual(re.subn("b*", "x", "xyz", 2), ('xxxyz', 2))
-
-    def test_re_split(self):
-        self.assertEqual(re.split(":", ":a:b::c"), ['', 'a', 'b', '', 'c'])
-        self.assertEqual(re.split(":*", ":a:b::c"), ['', 'a', 'b', 'c'])
-        self.assertEqual(re.split("(:*)", ":a:b::c"),
-                         ['', ':', 'a', ':', 'b', '::', 'c'])
-        self.assertEqual(re.split("(?::*)", ":a:b::c"), ['', 'a', 'b', 'c'])
-        self.assertEqual(re.split("(:)*", ":a:b::c"),
-                         ['', ':', 'a', ':', 'b', ':', 'c'])
-        self.assertEqual(re.split("([b:]+)", ":a:b::c"),
-                         ['', ':', 'a', ':b::', 'c'])
-        self.assertEqual(re.split("(b)|(:+)", ":a:b::c"),
-                         ['', None, ':', 'a', None, ':', '', 'b', None, '',
-                          None, '::', 'c'])
-        self.assertEqual(re.split("(?:b)|(?::+)", ":a:b::c"),
-                         ['', 'a', '', '', 'c'])
-
-    def test_qualified_re_split(self):
-        self.assertEqual(re.split(":", ":a:b::c", 2), ['', 'a', 'b::c'])
-        self.assertEqual(re.split(':', 'a:b:c:d', 2), ['a', 'b', 'c:d'])
-        self.assertEqual(re.split("(:)", ":a:b::c", 2),
-                         ['', ':', 'a', ':', 'b::c'])
-        self.assertEqual(re.split("(:*)", ":a:b::c", 2),
-                         ['', ':', 'a', ':', 'b::c'])
-
-    def test_re_findall(self):
-        self.assertEqual(re.findall(":+", "abc"), [])
-        self.assertEqual(re.findall(":+", "a:b::c:::d"), [":", "::", ":::"])
-        self.assertEqual(re.findall("(:+)", "a:b::c:::d"), [":", "::", ":::"])
-        self.assertEqual(re.findall("(:)(:*)", "a:b::c:::d"), [(":", ""),
-                                                               (":", ":"),
-                                                               (":", "::")])
-
-    def test_bug_117612(self):
-        self.assertEqual(re.findall(r"(a|(b))", "aba"),
-                         [("a", ""),("b", "b"),("a", "")])
-
-    def test_re_match(self):
-        self.assertEqual(re.match('a', 'a').groups(), ())
-        self.assertEqual(re.match('(a)', 'a').groups(), ('a',))
-        self.assertEqual(re.match(r'(a)', 'a').group(0), 'a')
-        self.assertEqual(re.match(r'(a)', 'a').group(1), 'a')
-        self.assertEqual(re.match(r'(a)', 'a').group(1, 1), ('a', 'a'))
-
-        pat = re.compile('((a)|(b))(c)?')
-        self.assertEqual(pat.match('a').groups(), ('a', 'a', None, None))
-        self.assertEqual(pat.match('b').groups(), ('b', None, 'b', None))
-        self.assertEqual(pat.match('ac').groups(), ('a', 'a', None, 'c'))
-        self.assertEqual(pat.match('bc').groups(), ('b', None, 'b', 'c'))
-        self.assertEqual(pat.match('bc').groups(""), ('b', "", 'b', 'c'))
-
-        # A single group
-        m = re.match('(a)', 'a')
-        self.assertEqual(m.group(0), 'a')
-        self.assertEqual(m.group(0), 'a')
-        self.assertEqual(m.group(1), 'a')
-        self.assertEqual(m.group(1, 1), ('a', 'a'))
-
-        pat = re.compile('(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?')
-        self.assertEqual(pat.match('a').group(1, 2, 3), ('a', None, None))
-        self.assertEqual(pat.match('b').group('a1', 'b2', 'c3'),
-                         (None, 'b', None))
-        self.assertEqual(pat.match('ac').group(1, 'b2', 3), ('a', None, 'c'))
-
-    def test_re_groupref_exists(self):
-        self.assertEqual(re.match('^(\()?([^()]+)(?(1)\))$', '(a)').groups(),
-                         ('(', 'a'))
-        self.assertEqual(re.match('^(\()?([^()]+)(?(1)\))$', 'a').groups(),
-                         (None, 'a'))
-        self.assertEqual(re.match('^(\()?([^()]+)(?(1)\))$', 'a)'), None)
-        self.assertEqual(re.match('^(\()?([^()]+)(?(1)\))$', '(a'), None)
-        self.assertEqual(re.match('^(?:(a)|c)((?(1)b|d))$', 'ab').groups(),
-                         ('a', 'b'))
-        self.assertEqual(re.match('^(?:(a)|c)((?(1)b|d))$', 'cd').groups(),
-                         (None, 'd'))
-        self.assertEqual(re.match('^(?:(a)|c)((?(1)|d))$', 'cd').groups(),
-                         (None, 'd'))
-        self.assertEqual(re.match('^(?:(a)|c)((?(1)|d))$', 'a').groups(),
-                         ('a', ''))
-
-        # Tests for bug #1177831: exercise groups other than the first group
-        p = re.compile('(?P<g1>a)(?P<g2>b)?((?(g2)c|d))')
-        self.assertEqual(p.match('abc').groups(),
-                         ('a', 'b', 'c'))
-        self.assertEqual(p.match('ad').groups(),
-                         ('a', None, 'd'))
-        self.assertEqual(p.match('abd'), None)
-        self.assertEqual(p.match('ac'), None)
-
-
-    def test_re_groupref(self):
-        self.assertEqual(re.match(r'^(\|)?([^()]+)\1$', '|a|').groups(),
-                         ('|', 'a'))
-        self.assertEqual(re.match(r'^(\|)?([^()]+)\1?$', 'a').groups(),
-                         (None, 'a'))
-        self.assertEqual(re.match(r'^(\|)?([^()]+)\1$', 'a|'), None)
-        self.assertEqual(re.match(r'^(\|)?([^()]+)\1$', '|a'), None)
-        self.assertEqual(re.match(r'^(?:(a)|c)(\1)$', 'aa').groups(),
-                         ('a', 'a'))
-        self.assertEqual(re.match(r'^(?:(a)|c)(\1)?$', 'c').groups(),
-                         (None, None))
-
-    def test_groupdict(self):
-        self.assertEqual(re.match('(?P<first>first) (?P<second>second)',
-                                  'first second').groupdict(),
-                         {'first':'first', 'second':'second'})
-
-    def test_expand(self):
-        self.assertEqual(re.match("(?P<first>first) (?P<second>second)",
-                                  "first second")
-                                  .expand(r"\2 \1 \g<second> \g<first>"),
-                         "second first second first")
-
-    def test_repeat_minmax(self):
-        self.assertEqual(re.match("^(\w){1}$", "abc"), None)
-        self.assertEqual(re.match("^(\w){1}?$", "abc"), None)
-        self.assertEqual(re.match("^(\w){1,2}$", "abc"), None)
-        self.assertEqual(re.match("^(\w){1,2}?$", "abc"), None)
-
-        self.assertEqual(re.match("^(\w){3}$", "abc").group(1), "c")
-        self.assertEqual(re.match("^(\w){1,3}$", "abc").group(1), "c")
-        self.assertEqual(re.match("^(\w){1,4}$", "abc").group(1), "c")
-        self.assertEqual(re.match("^(\w){3,4}?$", "abc").group(1), "c")
-        self.assertEqual(re.match("^(\w){3}?$", "abc").group(1), "c")
-        self.assertEqual(re.match("^(\w){1,3}?$", "abc").group(1), "c")
-        self.assertEqual(re.match("^(\w){1,4}?$", "abc").group(1), "c")
-        self.assertEqual(re.match("^(\w){3,4}?$", "abc").group(1), "c")
-
-        self.assertEqual(re.match("^x{1}$", "xxx"), None)
-        self.assertEqual(re.match("^x{1}?$", "xxx"), None)
-        self.assertEqual(re.match("^x{1,2}$", "xxx"), None)
-        self.assertEqual(re.match("^x{1,2}?$", "xxx"), None)
-
-        self.assertNotEqual(re.match("^x{3}$", "xxx"), None)
-        self.assertNotEqual(re.match("^x{1,3}$", "xxx"), None)
-        self.assertNotEqual(re.match("^x{1,4}$", "xxx"), None)
-        self.assertNotEqual(re.match("^x{3,4}?$", "xxx"), None)
-        self.assertNotEqual(re.match("^x{3}?$", "xxx"), None)
-        self.assertNotEqual(re.match("^x{1,3}?$", "xxx"), None)
-        self.assertNotEqual(re.match("^x{1,4}?$", "xxx"), None)
-        self.assertNotEqual(re.match("^x{3,4}?$", "xxx"), None)
-
-        self.assertEqual(re.match("^x{}$", "xxx"), None)
-        self.assertNotEqual(re.match("^x{}$", "x{}"), None)
-
-    def test_getattr(self):
-        self.assertEqual(re.match("(a)", "a").pos, 0)
-        self.assertEqual(re.match("(a)", "a").endpos, 1)
-        self.assertEqual(re.match("(a)", "a").string, "a")
-        self.assertEqual(re.match("(a)", "a").regs, ((0, 1), (0, 1)))
-        self.assertNotEqual(re.match("(a)", "a").re, None)
-
-    def test_special_escapes(self):
-        self.assertEqual(re.search(r"\b(b.)\b",
-                                   "abcd abc bcd bx").group(1), "bx")
-        self.assertEqual(re.search(r"\B(b.)\B",
-                                   "abc bcd bc abxd").group(1), "bx")
-        self.assertEqual(re.search(r"\b(b.)\b",
-                                   "abcd abc bcd bx", re.LOCALE).group(1), "bx")
-        self.assertEqual(re.search(r"\B(b.)\B",
-                                   "abc bcd bc abxd", re.LOCALE).group(1), "bx")
-        self.assertEqual(re.search(r"\b(b.)\b",
-                                   "abcd abc bcd bx", re.UNICODE).group(1), "bx")
-        self.assertEqual(re.search(r"\B(b.)\B",
-                                   "abc bcd bc abxd", re.UNICODE).group(1), "bx")
-        self.assertEqual(re.search(r"^abc$", "\nabc\n", re.M).group(0), "abc")
-        self.assertEqual(re.search(r"^\Aabc\Z$", "abc", re.M).group(0), "abc")
-        self.assertEqual(re.search(r"^\Aabc\Z$", "\nabc\n", re.M), None)
-        self.assertEqual(re.search(r"\b(b.)\b",
-                                   u"abcd abc bcd bx").group(1), "bx")
-        self.assertEqual(re.search(r"\B(b.)\B",
-                                   u"abc bcd bc abxd").group(1), "bx")
-        self.assertEqual(re.search(r"^abc$", u"\nabc\n", re.M).group(0), "abc")
-        self.assertEqual(re.search(r"^\Aabc\Z$", u"abc", re.M).group(0), "abc")
-        self.assertEqual(re.search(r"^\Aabc\Z$", u"\nabc\n", re.M), None)
-        self.assertEqual(re.search(r"\d\D\w\W\s\S",
-                                   "1aa! a").group(0), "1aa! a")
-        self.assertEqual(re.search(r"\d\D\w\W\s\S",
-                                   "1aa! a", re.LOCALE).group(0), "1aa! a")
-        self.assertEqual(re.search(r"\d\D\w\W\s\S",
-                                   "1aa! a", re.UNICODE).group(0), "1aa! a")
-
-    def test_bigcharset(self):
-        self.assertEqual(re.match(u"([\u2222\u2223])",
-                                  u"\u2222").group(1), u"\u2222")
-        self.assertEqual(re.match(u"([\u2222\u2223])",
-                                  u"\u2222", re.UNICODE).group(1), u"\u2222")
-
-    def test_anyall(self):
-        self.assertEqual(re.match("a.b", "a\nb", re.DOTALL).group(0),
-                         "a\nb")
-        self.assertEqual(re.match("a.*b", "a\n\nb", re.DOTALL).group(0),
-                         "a\n\nb")
-
-    def test_non_consuming(self):
-        self.assertEqual(re.match("(a(?=\s[^a]))", "a b").group(1), "a")
-        self.assertEqual(re.match("(a(?=\s[^a]*))", "a b").group(1), "a")
-        self.assertEqual(re.match("(a(?=\s[abc]))", "a b").group(1), "a")
-        self.assertEqual(re.match("(a(?=\s[abc]*))", "a bc").group(1), "a")
-        self.assertEqual(re.match(r"(a)(?=\s\1)", "a a").group(1), "a")
-        self.assertEqual(re.match(r"(a)(?=\s\1*)", "a aa").group(1), "a")
-        self.assertEqual(re.match(r"(a)(?=\s(abc|a))", "a a").group(1), "a")
-
-        self.assertEqual(re.match(r"(a(?!\s[^a]))", "a a").group(1), "a")
-        self.assertEqual(re.match(r"(a(?!\s[abc]))", "a d").group(1), "a")
-        self.assertEqual(re.match(r"(a)(?!\s\1)", "a b").group(1), "a")
-        self.assertEqual(re.match(r"(a)(?!\s(abc|a))", "a b").group(1), "a")
-
-    def test_ignore_case(self):
-        self.assertEqual(re.match("abc", "ABC", re.I).group(0), "ABC")
-        self.assertEqual(re.match("abc", u"ABC", re.I).group(0), "ABC")
-        self.assertEqual(re.match(r"(a\s[^a])", "a b", re.I).group(1), "a b")
-        self.assertEqual(re.match(r"(a\s[^a]*)", "a bb", re.I).group(1), "a bb")
-        self.assertEqual(re.match(r"(a\s[abc])", "a b", re.I).group(1), "a b")
-        self.assertEqual(re.match(r"(a\s[abc]*)", "a bb", re.I).group(1), "a bb")
-        self.assertEqual(re.match(r"((a)\s\2)", "a a", re.I).group(1), "a a")
-        self.assertEqual(re.match(r"((a)\s\2*)", "a aa", re.I).group(1), "a aa")
-        self.assertEqual(re.match(r"((a)\s(abc|a))", "a a", re.I).group(1), "a a")
-        self.assertEqual(re.match(r"((a)\s(abc|a)*)", "a aa", re.I).group(1), "a aa")
-
-    def test_category(self):
-        self.assertEqual(re.match(r"(\s)", " ").group(1), " ")
-
-    def test_getlower(self):
-        import _sre
-        self.assertEqual(_sre.getlower(ord('A'), 0), ord('a'))
-        self.assertEqual(_sre.getlower(ord('A'), re.LOCALE), ord('a'))
-        self.assertEqual(_sre.getlower(ord('A'), re.UNICODE), ord('a'))
-
-        self.assertEqual(re.match("abc", "ABC", re.I).group(0), "ABC")
-        self.assertEqual(re.match("abc", u"ABC", re.I).group(0), "ABC")
-
-    def test_not_literal(self):
-        self.assertEqual(re.search("\s([^a])", " b").group(1), "b")
-        self.assertEqual(re.search("\s([^a]*)", " bb").group(1), "bb")
-
-    def test_search_coverage(self):
-        self.assertEqual(re.search("\s(b)", " b").group(1), "b")
-        self.assertEqual(re.search("a\s", "a ").group(0), "a ")
-
-    def assertMatch(self, pattern, text, match=None, span=None,
-                    matcher=re.match):
-        if match is None and span is None:
-            # the pattern matches the whole text
-            match = text
-            span = (0, len(text))
-        elif match is None or span is None:
-            raise ValueError('If match is not None, span should be specified '
-                             '(and vice versa).')
-        m = matcher(pattern, text)
-        self.assertTrue(m)
-        self.assertEqual(m.group(), match)
-        self.assertEqual(m.span(), span)
-
-    def test_re_escape(self):
-        alnum_chars = string.ascii_letters + string.digits
-        p = u''.join(unichr(i) for i in range(256))
-        for c in p:
-            if c in alnum_chars:
-                self.assertEqual(re.escape(c), c)
-            elif c == u'\x00':
-                self.assertEqual(re.escape(c), u'\\000')
-            else:
-                self.assertEqual(re.escape(c), u'\\' + c)
-            self.assertMatch(re.escape(c), c)
-        self.assertMatch(re.escape(p), p)
-
-    def test_re_escape_byte(self):
-        alnum_chars = (string.ascii_letters + string.digits).encode('ascii')
-        p = ''.join(chr(i) for i in range(256))
-        for b in p:
-            if b in alnum_chars:
-                self.assertEqual(re.escape(b), b)
-            elif b == b'\x00':
-                self.assertEqual(re.escape(b), b'\\000')
-            else:
-                self.assertEqual(re.escape(b), b'\\' + b)
-            self.assertMatch(re.escape(b), b)
-        self.assertMatch(re.escape(p), p)
-
-    def test_re_escape_non_ascii(self):
-        s = u'xxx\u2620\u2620\u2620xxx'
-        s_escaped = re.escape(s)
-        self.assertEqual(s_escaped, u'xxx\\\u2620\\\u2620\\\u2620xxx')
-        self.assertMatch(s_escaped, s)
-        self.assertMatch(u'.%s+.' % re.escape(u'\u2620'), s,
-                         u'x\u2620\u2620\u2620x', (2, 7), re.search)
-
-    def test_re_escape_non_ascii_bytes(self):
-        b = u'y\u2620y\u2620y'.encode('utf-8')
-        b_escaped = re.escape(b)
-        self.assertEqual(b_escaped, b'y\\\xe2\\\x98\\\xa0y\\\xe2\\\x98\\\xa0y')
-        self.assertMatch(b_escaped, b)
-        res = re.findall(re.escape(u'\u2620'.encode('utf-8')), b)
-        self.assertEqual(len(res), 2)
-
-    def test_pickling(self):
-        import pickle
-        self.pickle_test(pickle)
-        import cPickle
-        self.pickle_test(cPickle)
-        # old pickles expect the _compile() reconstructor in sre module
-        import_module("sre", deprecated=True)
-        from sre import _compile
-
-    def pickle_test(self, pickle):
-        oldpat = re.compile('a(?:b|(c|e){1,2}?|d)+?(.)')
-        s = pickle.dumps(oldpat)
-        newpat = pickle.loads(s)
-        self.assertEqual(oldpat, newpat)
-
-    def test_constants(self):
-        self.assertEqual(re.I, re.IGNORECASE)
-        self.assertEqual(re.L, re.LOCALE)
-        self.assertEqual(re.M, re.MULTILINE)
-        self.assertEqual(re.S, re.DOTALL)
-        self.assertEqual(re.X, re.VERBOSE)
-
-    def test_flags(self):
-        for flag in [re.I, re.M, re.X, re.S, re.L]:
-            self.assertNotEqual(re.compile('^pattern$', flag), None)
-
-    def test_sre_character_literals(self):
-        for i in [0, 8, 16, 32, 64, 127, 128, 255]:
-            self.assertNotEqual(re.match(r"\%03o" % i, chr(i)), None)
-            self.assertNotEqual(re.match(r"\%03o0" % i, chr(i)+"0"), None)
-            self.assertNotEqual(re.match(r"\%03o8" % i, chr(i)+"8"), None)
-            self.assertNotEqual(re.match(r"\x%02x" % i, chr(i)), None)
-            self.assertNotEqual(re.match(r"\x%02x0" % i, chr(i)+"0"), None)
-            self.assertNotEqual(re.match(r"\x%02xz" % i, chr(i)+"z"), None)
-        self.assertRaises(re.error, re.match, "\911", "")
-
-    def test_sre_character_class_literals(self):
-        for i in [0, 8, 16, 32, 64, 127, 128, 255]:
-            self.assertNotEqual(re.match(r"[\%03o]" % i, chr(i)), None)
-            self.assertNotEqual(re.match(r"[\%03o0]" % i, chr(i)), None)
-            self.assertNotEqual(re.match(r"[\%03o8]" % i, chr(i)), None)
-            self.assertNotEqual(re.match(r"[\x%02x]" % i, chr(i)), None)
-            self.assertNotEqual(re.match(r"[\x%02x0]" % i, chr(i)), None)
-            self.assertNotEqual(re.match(r"[\x%02xz]" % i, chr(i)), None)
-        self.assertRaises(re.error, re.match, "[\911]", "")
-
-    def test_bug_113254(self):
-        self.assertEqual(re.match(r'(a)|(b)', 'b').start(1), -1)
-        self.assertEqual(re.match(r'(a)|(b)', 'b').end(1), -1)
-        self.assertEqual(re.match(r'(a)|(b)', 'b').span(1), (-1, -1))
-
-    def test_bug_527371(self):
-        # bug described in patches 527371/672491
-        self.assertEqual(re.match(r'(a)?a','a').lastindex, None)
-        self.assertEqual(re.match(r'(a)(b)?b','ab').lastindex, 1)
-        self.assertEqual(re.match(r'(?P<a>a)(?P<b>b)?b','ab').lastgroup, 'a')
-        self.assertEqual(re.match("(?P<a>a(b))", "ab").lastgroup, 'a')
-        self.assertEqual(re.match("((a))", "a").lastindex, 1)
-
-    def test_bug_545855(self):
-        # bug 545855 -- This pattern failed to cause a compile error as it
-        # should, instead provoking a TypeError.
-        self.assertRaises(re.error, re.compile, 'foo[a-')
-
-    def test_bug_418626(self):
-        # bugs 418626 at al. -- Testing Greg Chapman's addition of op code
-        # SRE_OP_MIN_REPEAT_ONE for eliminating recursion on simple uses of
-        # pattern '*?' on a long string.
-        self.assertEqual(re.match('.*?c', 10000*'ab'+'cd').end(0), 20001)
-        self.assertEqual(re.match('.*?cd', 5000*'ab'+'c'+5000*'ab'+'cde').end(0),
-                         20003)
-        self.assertEqual(re.match('.*?cd', 20000*'abc'+'de').end(0), 60001)
-        # non-simple '*?' still used to hit the recursion limit, before the
-        # non-recursive scheme was implemented.
-        self.assertEqual(re.search('(a|b)*?c', 10000*'ab'+'cd').end(0), 20001)
-
-    def test_bug_612074(self):
-        pat=u"["+re.escape(u"\u2039")+u"]"
-        self.assertEqual(re.compile(pat) and 1, 1)
-
-    def test_stack_overflow(self):
-        # nasty cases that used to overflow the straightforward recursive
-        # implementation of repeated groups.
-        self.assertEqual(re.match('(x)*', 50000*'x').group(1), 'x')
-        self.assertEqual(re.match('(x)*y', 50000*'x'+'y').group(1), 'x')
-        self.assertEqual(re.match('(x)*?y', 50000*'x'+'y').group(1), 'x')
-
-    def test_scanner(self):
-        def s_ident(scanner, token): return token
-        def s_operator(scanner, token): return "op%s" % token
-        def s_float(scanner, token): return float(token)
-        def s_int(scanner, token): return int(token)
-
-        scanner = Scanner([
-            (r"[a-zA-Z_]\w*", s_ident),
-            (r"\d+\.\d*", s_float),
-            (r"\d+", s_int),
-            (r"=|\+|-|\*|/", s_operator),
-            (r"\s+", None),
-            ])
-
-        self.assertNotEqual(scanner.scanner.scanner("").pattern, None)
-
-        self.assertEqual(scanner.scan("sum = 3*foo + 312.50 + bar"),
-                         (['sum', 'op=', 3, 'op*', 'foo', 'op+', 312.5,
-                           'op+', 'bar'], ''))
-
-    def test_bug_448951(self):
-        # bug 448951 (similar to 429357, but with single char match)
-        # (Also test greedy matches.)
-        for op in '','?','*':
-            self.assertEqual(re.match(r'((.%s):)?z'%op, 'z').groups(),
-                             (None, None))
-            self.assertEqual(re.match(r'((.%s):)?z'%op, 'a:z').groups(),
-                             ('a:', 'a'))
-
-    def test_bug_725106(self):
-        # capturing groups in alternatives in repeats
-        self.assertEqual(re.match('^((a)|b)*', 'abc').groups(),
-                         ('b', 'a'))
-        self.assertEqual(re.match('^(([ab])|c)*', 'abc').groups(),
-                         ('c', 'b'))
-        self.assertEqual(re.match('^((d)|[ab])*', 'abc').groups(),
-                         ('b', None))
-        self.assertEqual(re.match('^((a)c|[ab])*', 'abc').groups(),
-                         ('b', None))
-        self.assertEqual(re.match('^((a)|b)*?c', 'abc').groups(),
-                         ('b', 'a'))
-        self.assertEqual(re.match('^(([ab])|c)*?d', 'abcd').groups(),
-                         ('c', 'b'))
-        self.assertEqual(re.match('^((d)|[ab])*?c', 'abc').groups(),
-                         ('b', None))
-        self.assertEqual(re.match('^((a)c|[ab])*?c', 'abc').groups(),
-                         ('b', None))
-
-    def test_bug_725149(self):
-        # mark_stack_base restoring before restoring marks
-        self.assertEqual(re.match('(a)(?:(?=(b)*)c)*', 'abb').groups(),
-                         ('a', None))
-        self.assertEqual(re.match('(a)((?!(b)*))*', 'abb').groups(),
-                         ('a', None, None))
-
-    def test_bug_764548(self):
-        # bug 764548, re.compile() barfs on str/unicode subclasses
-        try:
-            unicode
-        except NameError:
-            return  # no problem if we have no unicode
-        class my_unicode(unicode): pass
-        pat = re.compile(my_unicode("abc"))
-        self.assertEqual(pat.match("xyz"), None)
-
-    def test_finditer(self):
-        iter = re.finditer(r":+", "a:b::c:::d")
-        self.assertEqual([item.group(0) for item in iter],
-                         [":", "::", ":::"])
-
-    def test_bug_926075(self):
-        try:
-            unicode
-        except NameError:
-            return # no problem if we have no unicode
-        self.assertTrue(re.compile('bug_926075') is not
-                     re.compile(eval("u'bug_926075'")))
-
-    def test_bug_931848(self):
-        try:
-            unicode
-        except NameError:
-            pass
-        pattern = eval('u"[\u002E\u3002\uFF0E\uFF61]"')
-        self.assertEqual(re.compile(pattern).split("a.b.c"),
-                         ['a','b','c'])
-
-    def test_bug_581080(self):
-        iter = re.finditer(r"\s", "a b")
-        self.assertEqual(iter.next().span(), (1,2))
-        self.assertRaises(StopIteration, iter.next)
-
-        scanner = re.compile(r"\s").scanner("a b")
-        self.assertEqual(scanner.search().span(), (1, 2))
-        self.assertEqual(scanner.search(), None)
-
-    def test_bug_817234(self):
-        iter = re.finditer(r".*", "asdf")
-        self.assertEqual(iter.next().span(), (0, 4))
-        self.assertEqual(iter.next().span(), (4, 4))
-        self.assertRaises(StopIteration, iter.next)
-
-    def test_bug_6561(self):
-        # '\d' should match characters in Unicode category 'Nd'
-        # (Number, Decimal Digit), but not those in 'Nl' (Number,
-        # Letter) or 'No' (Number, Other).
-        decimal_digits = [
-            u'\u0037', # '\N{DIGIT SEVEN}', category 'Nd'
-            u'\u0e58', # '\N{THAI DIGIT SIX}', category 'Nd'
-            u'\uff10', # '\N{FULLWIDTH DIGIT ZERO}', category 'Nd'
-            ]
-        for x in decimal_digits:
-            self.assertEqual(re.match('^\d$', x, re.UNICODE).group(0), x)
-
-        not_decimal_digits = [
-            u'\u2165', # '\N{ROMAN NUMERAL SIX}', category 'Nl'
-            u'\u3039', # '\N{HANGZHOU NUMERAL TWENTY}', category 'Nl'
-            u'\u2082', # '\N{SUBSCRIPT TWO}', category 'No'
-            u'\u32b4', # '\N{CIRCLED NUMBER THIRTY NINE}', category 'No'
-            ]
-        for x in not_decimal_digits:
-            self.assertIsNone(re.match('^\d$', x, re.UNICODE))
-
-    def test_empty_array(self):
-        # SF buf 1647541
-        import array
-        for typecode in 'cbBuhHiIlLfd':
-            a = array.array(typecode)
-            self.assertEqual(re.compile("bla").match(a), None)
-            self.assertEqual(re.compile("").match(a).groups(), ())
-
-    def test_inline_flags(self):
-        # Bug #1700
-        upper_char = unichr(0x1ea0) # Latin Capital Letter A with Dot Bellow
-        lower_char = unichr(0x1ea1) # Latin Small Letter A with Dot Bellow
-
-        p = re.compile(upper_char, re.I | re.U)
-        q = p.match(lower_char)
-        self.assertNotEqual(q, None)
-
-        p = re.compile(lower_char, re.I | re.U)
-        q = p.match(upper_char)
-        self.assertNotEqual(q, None)
-
-        p = re.compile('(?i)' + upper_char, re.U)
-        q = p.match(lower_char)
-        self.assertNotEqual(q, None)
-
-        p = re.compile('(?i)' + lower_char, re.U)
-        q = p.match(upper_char)
-        self.assertNotEqual(q, None)
-
-        p = re.compile('(?iu)' + upper_char)
-        q = p.match(lower_char)
-        self.assertNotEqual(q, None)
-
-        p = re.compile('(?iu)' + lower_char)
-        q = p.match(upper_char)
-        self.assertNotEqual(q, None)
-
-    def test_dollar_matches_twice(self):
-        "$ matches the end of string, and just before the terminating \n"
-        pattern = re.compile('$')
-        self.assertEqual(pattern.sub('#', 'a\nb\n'), 'a\nb#\n#')
-        self.assertEqual(pattern.sub('#', 'a\nb\nc'), 'a\nb\nc#')
-        self.assertEqual(pattern.sub('#', '\n'), '#\n#')
-
-        pattern = re.compile('$', re.MULTILINE)
-        self.assertEqual(pattern.sub('#', 'a\nb\n' ), 'a#\nb#\n#' )
-        self.assertEqual(pattern.sub('#', 'a\nb\nc'), 'a#\nb#\nc#')
-        self.assertEqual(pattern.sub('#', '\n'), '#\n#')
-
-    def test_dealloc(self):
-        # issue 3299: check for segfault in debug build
-        import _sre
-        # the overflow limit is different on wide and narrow builds and it
-        # depends on the definition of SRE_CODE (see sre.h).
-        # 2**128 should be big enough to overflow on both. For smaller values
-        # a RuntimeError is raised instead of OverflowError.
-        long_overflow = 2**128
-        self.assertRaises(TypeError, re.finditer, "a", {})
-        self.assertRaises(OverflowError, _sre.compile, "abc", 0, [long_overflow])
-
-def run_re_tests():
-    from test.re_tests import tests, SUCCEED, FAIL, SYNTAX_ERROR
-    if verbose:
-        print 'Running re_tests test suite'
-    else:
-        # To save time, only run the first and last 10 tests
-        #tests = tests[:10] + tests[-10:]
-        pass
-
-    for t in tests:
-        sys.stdout.flush()
-        pattern = s = outcome = repl = expected = None
-        if len(t) == 5:
-            pattern, s, outcome, repl, expected = t
-        elif len(t) == 3:
-            pattern, s, outcome = t
-        else:
-            raise ValueError, ('Test tuples should have 3 or 5 fields', t)
-
-        try:
-            obj = re.compile(pattern)
-        except re.error:
-            if outcome == SYNTAX_ERROR: pass  # Expected a syntax error
-            else:
-                print '=== Syntax error:', t
-        except KeyboardInterrupt: raise KeyboardInterrupt
-        except:
-            print '*** Unexpected error ***', t
-            if verbose:
-                traceback.print_exc(file=sys.stdout)
-        else:
-            try:
-                result = obj.search(s)
-            except re.error, msg:
-                print '=== Unexpected exception', t, repr(msg)
-            if outcome == SYNTAX_ERROR:
-                # This should have been a syntax error; forget it.
-                pass
-            elif outcome == FAIL:
-                if result is None: pass   # No match, as expected
-                else: print '=== Succeeded incorrectly', t
-            elif outcome == SUCCEED:
-                if result is not None:
-                    # Matched, as expected, so now we compute the
-                    # result string and compare it to our expected result.
-                    start, end = result.span(0)
-                    vardict={'found': result.group(0),
-                             'groups': result.group(),
-                             'flags': result.re.flags}
-                    for i in range(1, 100):
-                        try:
-                            gi = result.group(i)
-                            # Special hack because else the string concat fails:
-                            if gi is None:
-                                gi = "None"
-                        except IndexError:
-                            gi = "Error"
-                        vardict['g%d' % i] = gi
-                    for i in result.re.groupindex.keys():
-                        try:
-                            gi = result.group(i)
-                            if gi is None:
-                                gi = "None"
-                        except IndexError:
-                            gi = "Error"
-                        vardict[i] = gi
-                    repl = eval(repl, vardict)
-                    if repl != expected:
-                        print '=== grouping error', t,
-                        print repr(repl) + ' should be ' + repr(expected)
-                else:
-                    print '=== Failed incorrectly', t
-
-                # Try the match on a unicode string, and check that it
-                # still succeeds.
-                try:
-                    result = obj.search(unicode(s, "latin-1"))
-                    if result is None:
-                        print '=== Fails on unicode match', t
-                except NameError:
-                    continue # 1.5.2
-                except TypeError:
-                    continue # unicode test case
-
-                # Try the match on a unicode pattern, and check that it
-                # still succeeds.
-                obj=re.compile(unicode(pattern, "latin-1"))
-                result = obj.search(s)
-                if result is None:
-                    print '=== Fails on unicode pattern match', t
-
-                # Try the match with the search area limited to the extent
-                # of the match and see if it still succeeds.  \B will
-                # break (because it won't match at the end or start of a
-                # string), so we'll ignore patterns that feature it.
-
-                if pattern[:2] != '\\B' and pattern[-2:] != '\\B' \
-                               and result is not None:
-                    obj = re.compile(pattern)
-                    result = obj.search(s, result.start(0), result.end(0) + 1)
-                    if result is None:
-                        print '=== Failed on range-limited match', t
-
-                # Try the match with IGNORECASE enabled, and check that it
-                # still succeeds.
-                obj = re.compile(pattern, re.IGNORECASE)
-                result = obj.search(s)
-                if result is None:
-                    print '=== Fails on case-insensitive match', t
-
-                # Try the match with LOCALE enabled, and check that it
-                # still succeeds.
-                obj = re.compile(pattern, re.LOCALE)
-                result = obj.search(s)
-                if result is None:
-                    print '=== Fails on locale-sensitive match', t
-
-                # Try the match with UNICODE locale enabled, and check
-                # that it still succeeds.
-                obj = re.compile(pattern, re.UNICODE)
-                result = obj.search(s)
-                if result is None:
-                    print '=== Fails on unicode-sensitive match', t
-
-def test_main():
-    run_unittest(ReTests)
-    run_re_tests()
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_readline.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_readline.py
deleted file mode 100644
index c3406b4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_readline.py
+++ /dev/null
@@ -1,43 +0,0 @@
-"""
-Very minimal unittests for parts of the readline module.
-
-These tests were added to check that the libedit emulation on OSX and
-the "real" readline have the same interface for history manipulation. That's
-why the tests cover only a small subset of the interface.
-"""
-import unittest
-from test.test_support import run_unittest, import_module
-
-# Skip tests if there is no readline module
-readline = import_module('readline')
-
-class TestHistoryManipulation (unittest.TestCase):
-    def testHistoryUpdates(self):
-        readline.clear_history()
-
-        readline.add_history("first line")
-        readline.add_history("second line")
-
-        self.assertEqual(readline.get_history_item(0), None)
-        self.assertEqual(readline.get_history_item(1), "first line")
-        self.assertEqual(readline.get_history_item(2), "second line")
-
-        readline.replace_history_item(0, "replaced line")
-        self.assertEqual(readline.get_history_item(0), None)
-        self.assertEqual(readline.get_history_item(1), "replaced line")
-        self.assertEqual(readline.get_history_item(2), "second line")
-
-        self.assertEqual(readline.get_current_history_length(), 2)
-
-        readline.remove_history_item(0)
-        self.assertEqual(readline.get_history_item(0), None)
-        self.assertEqual(readline.get_history_item(1), "second line")
-
-        self.assertEqual(readline.get_current_history_length(), 1)
-
-
-def test_main():
-    run_unittest(TestHistoryManipulation)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_repr.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_repr.py
deleted file mode 100644
index 41e235a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_repr.py
+++ /dev/null
@@ -1,327 +0,0 @@
-"""
-  Test cases for the repr module
-  Nick Mathewson
-"""
-
-import sys
-import os
-import shutil
-import unittest
-
-from test.test_support import run_unittest, check_py3k_warnings
-from repr import repr as r # Don't shadow builtin repr
-from repr import Repr
-
-
-def nestedTuple(nesting):
-    t = ()
-    for i in range(nesting):
-        t = (t,)
-    return t
-
-class ReprTests(unittest.TestCase):
-
-    def test_string(self):
-        eq = self.assertEqual
-        eq(r("abc"), "'abc'")
-        eq(r("abcdefghijklmnop"),"'abcdefghijklmnop'")
-
-        s = "a"*30+"b"*30
-        expected = repr(s)[:13] + "..." + repr(s)[-14:]
-        eq(r(s), expected)
-
-        eq(r("\"'"), repr("\"'"))
-        s = "\""*30+"'"*100
-        expected = repr(s)[:13] + "..." + repr(s)[-14:]
-        eq(r(s), expected)
-
-    def test_tuple(self):
-        eq = self.assertEqual
-        eq(r((1,)), "(1,)")
-
-        t3 = (1, 2, 3)
-        eq(r(t3), "(1, 2, 3)")
-
-        r2 = Repr()
-        r2.maxtuple = 2
-        expected = repr(t3)[:-2] + "...)"
-        eq(r2.repr(t3), expected)
-
-    def test_container(self):
-        from array import array
-        from collections import deque
-
-        eq = self.assertEqual
-        # Tuples give up after 6 elements
-        eq(r(()), "()")
-        eq(r((1,)), "(1,)")
-        eq(r((1, 2, 3)), "(1, 2, 3)")
-        eq(r((1, 2, 3, 4, 5, 6)), "(1, 2, 3, 4, 5, 6)")
-        eq(r((1, 2, 3, 4, 5, 6, 7)), "(1, 2, 3, 4, 5, 6, ...)")
-
-        # Lists give up after 6 as well
-        eq(r([]), "[]")
-        eq(r([1]), "[1]")
-        eq(r([1, 2, 3]), "[1, 2, 3]")
-        eq(r([1, 2, 3, 4, 5, 6]), "[1, 2, 3, 4, 5, 6]")
-        eq(r([1, 2, 3, 4, 5, 6, 7]), "[1, 2, 3, 4, 5, 6, ...]")
-
-        # Sets give up after 6 as well
-        eq(r(set([])), "set([])")
-        eq(r(set([1])), "set([1])")
-        eq(r(set([1, 2, 3])), "set([1, 2, 3])")
-        eq(r(set([1, 2, 3, 4, 5, 6])), "set([1, 2, 3, 4, 5, 6])")
-        eq(r(set([1, 2, 3, 4, 5, 6, 7])), "set([1, 2, 3, 4, 5, 6, ...])")
-
-        # Frozensets give up after 6 as well
-        eq(r(frozenset([])), "frozenset([])")
-        eq(r(frozenset([1])), "frozenset([1])")
-        eq(r(frozenset([1, 2, 3])), "frozenset([1, 2, 3])")
-        eq(r(frozenset([1, 2, 3, 4, 5, 6])), "frozenset([1, 2, 3, 4, 5, 6])")
-        eq(r(frozenset([1, 2, 3, 4, 5, 6, 7])), "frozenset([1, 2, 3, 4, 5, 6, ...])")
-
-        # collections.deque after 6
-        eq(r(deque([1, 2, 3, 4, 5, 6, 7])), "deque([1, 2, 3, 4, 5, 6, ...])")
-
-        # Dictionaries give up after 4.
-        eq(r({}), "{}")
-        d = {'alice': 1, 'bob': 2, 'charles': 3, 'dave': 4}
-        eq(r(d), "{'alice': 1, 'bob': 2, 'charles': 3, 'dave': 4}")
-        d['arthur'] = 1
-        eq(r(d), "{'alice': 1, 'arthur': 1, 'bob': 2, 'charles': 3, ...}")
-
-        # array.array after 5.
-        eq(r(array('i')), "array('i', [])")
-        eq(r(array('i', [1])), "array('i', [1])")
-        eq(r(array('i', [1, 2])), "array('i', [1, 2])")
-        eq(r(array('i', [1, 2, 3])), "array('i', [1, 2, 3])")
-        eq(r(array('i', [1, 2, 3, 4])), "array('i', [1, 2, 3, 4])")
-        eq(r(array('i', [1, 2, 3, 4, 5])), "array('i', [1, 2, 3, 4, 5])")
-        eq(r(array('i', [1, 2, 3, 4, 5, 6])),
-                   "array('i', [1, 2, 3, 4, 5, ...])")
-
-    def test_numbers(self):
-        eq = self.assertEqual
-        eq(r(123), repr(123))
-        eq(r(123L), repr(123L))
-        eq(r(1.0/3), repr(1.0/3))
-
-        n = 10L**100
-        expected = repr(n)[:18] + "..." + repr(n)[-19:]
-        eq(r(n), expected)
-
-    def test_instance(self):
-        eq = self.assertEqual
-        i1 = ClassWithRepr("a")
-        eq(r(i1), repr(i1))
-
-        i2 = ClassWithRepr("x"*1000)
-        expected = repr(i2)[:13] + "..." + repr(i2)[-14:]
-        eq(r(i2), expected)
-
-        i3 = ClassWithFailingRepr()
-        eq(r(i3), ("<ClassWithFailingRepr instance at %x>"%id(i3)))
-
-        s = r(ClassWithFailingRepr)
-        self.assertTrue(s.startswith("<class "))
-        self.assertTrue(s.endswith(">"))
-        self.assertTrue(s.find("...") == 8)
-
-    def test_file(self):
-        fp = open(unittest.__file__)
-        self.assertTrue(repr(fp).startswith(
-            "<open file '%s', mode 'r' at 0x" % unittest.__file__))
-        fp.close()
-        self.assertTrue(repr(fp).startswith(
-            "<closed file '%s', mode 'r' at 0x" % unittest.__file__))
-
-    def test_lambda(self):
-        self.assertTrue(repr(lambda x: x).startswith(
-            "<function <lambda"))
-        # XXX anonymous functions?  see func_repr
-
-    def test_builtin_function(self):
-        eq = self.assertEqual
-        # Functions
-        eq(repr(hash), '<built-in function hash>')
-        # Methods
-        self.assertTrue(repr(''.split).startswith(
-            '<built-in method split of str object at 0x'))
-
-    def test_xrange(self):
-        eq = self.assertEqual
-        eq(repr(xrange(1)), 'xrange(1)')
-        eq(repr(xrange(1, 2)), 'xrange(1, 2)')
-        eq(repr(xrange(1, 2, 3)), 'xrange(1, 4, 3)')
-
-    def test_nesting(self):
-        eq = self.assertEqual
-        # everything is meant to give up after 6 levels.
-        eq(r([[[[[[[]]]]]]]), "[[[[[[[]]]]]]]")
-        eq(r([[[[[[[[]]]]]]]]), "[[[[[[[...]]]]]]]")
-
-        eq(r(nestedTuple(6)), "(((((((),),),),),),)")
-        eq(r(nestedTuple(7)), "(((((((...),),),),),),)")
-
-        eq(r({ nestedTuple(5) : nestedTuple(5) }),
-           "{((((((),),),),),): ((((((),),),),),)}")
-        eq(r({ nestedTuple(6) : nestedTuple(6) }),
-           "{((((((...),),),),),): ((((((...),),),),),)}")
-
-        eq(r([[[[[[{}]]]]]]), "[[[[[[{}]]]]]]")
-        eq(r([[[[[[[{}]]]]]]]), "[[[[[[[...]]]]]]]")
-
-    def test_buffer(self):
-        # XXX doesn't test buffers with no b_base or read-write buffers (see
-        # bufferobject.c).  The test is fairly incomplete too.  Sigh.
-        with check_py3k_warnings():
-            x = buffer('foo')
-        self.assertTrue(repr(x).startswith('<read-only buffer for 0x'))
-
-    def test_cell(self):
-        # XXX Hmm? How to get at a cell object?
-        pass
-
-    def test_descriptors(self):
-        eq = self.assertEqual
-        # method descriptors
-        eq(repr(dict.items), "<method 'items' of 'dict' objects>")
-        # XXX member descriptors
-        # XXX attribute descriptors
-        # XXX slot descriptors
-        # static and class methods
-        class C:
-            def foo(cls): pass
-        x = staticmethod(C.foo)
-        self.assertTrue(repr(x).startswith('<staticmethod object at 0x'))
-        x = classmethod(C.foo)
-        self.assertTrue(repr(x).startswith('<classmethod object at 0x'))
-
-    def test_unsortable(self):
-        # Repr.repr() used to call sorted() on sets, frozensets and dicts
-        # without taking into account that not all objects are comparable
-        x = set([1j, 2j, 3j])
-        y = frozenset(x)
-        z = {1j: 1, 2j: 2}
-        r(x)
-        r(y)
-        r(z)
-
-def touch(path, text=''):
-    fp = open(path, 'w')
-    fp.write(text)
-    fp.close()
-
-class LongReprTest(unittest.TestCase):
-    def setUp(self):
-        longname = 'areallylongpackageandmodulenametotestreprtruncation'
-        self.pkgname = os.path.join(longname)
-        self.subpkgname = os.path.join(longname, longname)
-        # Make the package and subpackage
-        shutil.rmtree(self.pkgname, ignore_errors=True)
-        os.mkdir(self.pkgname)
-        touch(os.path.join(self.pkgname, '__init__'+os.extsep+'py'))
-        shutil.rmtree(self.subpkgname, ignore_errors=True)
-        os.mkdir(self.subpkgname)
-        touch(os.path.join(self.subpkgname, '__init__'+os.extsep+'py'))
-        # Remember where we are
-        self.here = os.getcwd()
-        sys.path.insert(0, self.here)
-
-    def tearDown(self):
-        actions = []
-        for dirpath, dirnames, filenames in os.walk(self.pkgname):
-            for name in dirnames + filenames:
-                actions.append(os.path.join(dirpath, name))
-        actions.append(self.pkgname)
-        actions.sort()
-        actions.reverse()
-        for p in actions:
-            if os.path.isdir(p):
-                os.rmdir(p)
-            else:
-                os.remove(p)
-        del sys.path[0]
-
-    def test_module(self):
-        eq = self.assertEqual
-        touch(os.path.join(self.subpkgname, self.pkgname + os.extsep + 'py'))
-        from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import areallylongpackageandmodulenametotestreprtruncation
-        eq(repr(areallylongpackageandmodulenametotestreprtruncation),
-           "<module '%s' from '%s'>" % (areallylongpackageandmodulenametotestreprtruncation.__name__, areallylongpackageandmodulenametotestreprtruncation.__file__))
-        eq(repr(sys), "<module 'sys' (built-in)>")
-
-    def test_type(self):
-        eq = self.assertEqual
-        touch(os.path.join(self.subpkgname, 'foo'+os.extsep+'py'), '''\
-class foo(object):
-    pass
-''')
-        from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import foo
-        eq(repr(foo.foo),
-               "<class '%s.foo'>" % foo.__name__)
-
-    def test_object(self):
-        # XXX Test the repr of a type with a really long tp_name but with no
-        # tp_repr.  WIBNI we had ::Inline? :)
-        pass
-
-    def test_class(self):
-        touch(os.path.join(self.subpkgname, 'bar'+os.extsep+'py'), '''\
-class bar:
-    pass
-''')
-        from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import bar
-        # Module name may be prefixed with "test.", depending on how run.
-        self.assertTrue(repr(bar.bar).startswith(
-            "<class %s.bar at 0x" % bar.__name__))
-
-    def test_instance(self):
-        touch(os.path.join(self.subpkgname, 'baz'+os.extsep+'py'), '''\
-class baz:
-    pass
-''')
-        from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import baz
-        ibaz = baz.baz()
-        self.assertTrue(repr(ibaz).startswith(
-            "<%s.baz instance at 0x" % baz.__name__))
-
-    def test_method(self):
-        eq = self.assertEqual
-        touch(os.path.join(self.subpkgname, 'qux'+os.extsep+'py'), '''\
-class aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:
-    def amethod(self): pass
-''')
-        from areallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncation import qux
-        # Unbound methods first
-        eq(repr(qux.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethod),
-        '<unbound method aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethod>')
-        # Bound method next
-        iqux = qux.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
-        self.assertTrue(repr(iqux.amethod).startswith(
-            '<bound method aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethod of <%s.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa instance at 0x' \
-            % (qux.__name__,) ))
-
-    def test_builtin_function(self):
-        # XXX test built-in functions and methods with really long names
-        pass
-
-class ClassWithRepr:
-    def __init__(self, s):
-        self.s = s
-    def __repr__(self):
-        return "ClassWithLongRepr(%r)" % self.s
-
-
-class ClassWithFailingRepr:
-    def __repr__(self):
-        raise Exception("This should be caught by Repr.repr_instance")
-
-
-def test_main():
-    run_unittest(ReprTests)
-    run_unittest(LongReprTest)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_resource.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_resource.py
deleted file mode 100644
index a874c0e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_resource.py
+++ /dev/null
@@ -1,110 +0,0 @@
-import unittest
-from test import test_support
-import time
-
-resource = test_support.import_module('resource')
-
-# This test is checking a few specific problem spots with the resource module.
-
-class ResourceTest(unittest.TestCase):
-
-    def test_args(self):
-        self.assertRaises(TypeError, resource.getrlimit)
-        self.assertRaises(TypeError, resource.getrlimit, 42, 42)
-        self.assertRaises(TypeError, resource.setrlimit)
-        self.assertRaises(TypeError, resource.setrlimit, 42, 42, 42)
-
-    def test_fsize_ismax(self):
-        try:
-            (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE)
-        except AttributeError:
-            pass
-        else:
-            # RLIMIT_FSIZE should be RLIM_INFINITY, which will be a really big
-            # number on a platform with large file support.  On these platforms,
-            # we need to test that the get/setrlimit functions properly convert
-            # the number to a C long long and that the conversion doesn't raise
-            # an error.
-            self.assertEqual(resource.RLIM_INFINITY, max)
-            resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max))
-
-    def test_fsize_enforced(self):
-        try:
-            (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE)
-        except AttributeError:
-            pass
-        else:
-            # Check to see what happens when the RLIMIT_FSIZE is small.  Some
-            # versions of Python were terminated by an uncaught SIGXFSZ, but
-            # pythonrun.c has been fixed to ignore that exception.  If so, the
-            # write() should return EFBIG when the limit is exceeded.
-
-            # At least one platform has an unlimited RLIMIT_FSIZE and attempts
-            # to change it raise ValueError instead.
-            try:
-                try:
-                    resource.setrlimit(resource.RLIMIT_FSIZE, (1024, max))
-                    limit_set = True
-                except ValueError:
-                    limit_set = False
-                f = open(test_support.TESTFN, "wb")
-                try:
-                    f.write("X" * 1024)
-                    try:
-                        f.write("Y")
-                        f.flush()
-                        # On some systems (e.g., Ubuntu on hppa) the flush()
-                        # doesn't always cause the exception, but the close()
-                        # does eventually.  Try flushing several times in
-                        # an attempt to ensure the file is really synced and
-                        # the exception raised.
-                        for i in range(5):
-                            time.sleep(.1)
-                            f.flush()
-                    except IOError:
-                        if not limit_set:
-                            raise
-                    if limit_set:
-                        # Close will attempt to flush the byte we wrote
-                        # Restore limit first to avoid getting a spurious error
-                        resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max))
-                finally:
-                    f.close()
-            finally:
-                if limit_set:
-                    resource.setrlimit(resource.RLIMIT_FSIZE, (cur, max))
-                test_support.unlink(test_support.TESTFN)
-
-    def test_fsize_toobig(self):
-        # Be sure that setrlimit is checking for really large values
-        too_big = 10L**50
-        try:
-            (cur, max) = resource.getrlimit(resource.RLIMIT_FSIZE)
-        except AttributeError:
-            pass
-        else:
-            try:
-                resource.setrlimit(resource.RLIMIT_FSIZE, (too_big, max))
-            except (OverflowError, ValueError):
-                pass
-            try:
-                resource.setrlimit(resource.RLIMIT_FSIZE, (max, too_big))
-            except (OverflowError, ValueError):
-                pass
-
-    def test_getrusage(self):
-        self.assertRaises(TypeError, resource.getrusage)
-        self.assertRaises(TypeError, resource.getrusage, 42, 42)
-        usageself = resource.getrusage(resource.RUSAGE_SELF)
-        usagechildren = resource.getrusage(resource.RUSAGE_CHILDREN)
-        # May not be available on all systems.
-        try:
-            usageboth = resource.getrusage(resource.RUSAGE_BOTH)
-        except (ValueError, AttributeError):
-            pass
-
-def test_main(verbose=None):
-    test_support.run_unittest(ResourceTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_rfc822.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_rfc822.py
deleted file mode 100644
index 66a53ea..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_rfc822.py
+++ /dev/null
@@ -1,257 +0,0 @@
-import unittest
-from test import test_support
-
-rfc822 = test_support.import_module("rfc822", deprecated=True)
-
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-
-class MessageTestCase(unittest.TestCase):
-    def create_message(self, msg):
-        return rfc822.Message(StringIO(msg))
-
-    def test_get(self):
-        msg = self.create_message(
-            'To: "last, first" <userid@foo.net>\n\ntest\n')
-        self.assertTrue(msg.get("to") == '"last, first" <userid@foo.net>')
-        self.assertTrue(msg.get("TO") == '"last, first" <userid@foo.net>')
-        self.assertTrue(msg.get("No-Such-Header") is None)
-        self.assertTrue(msg.get("No-Such-Header", "No-Such-Value")
-                     == "No-Such-Value")
-
-    def test_setdefault(self):
-        msg = self.create_message(
-            'To: "last, first" <userid@foo.net>\n\ntest\n')
-        self.assertTrue(not msg.has_key("New-Header"))
-        self.assertTrue(msg.setdefault("New-Header", "New-Value") == "New-Value")
-        self.assertTrue(msg.setdefault("New-Header", "Different-Value")
-                     == "New-Value")
-        self.assertTrue(msg["new-header"] == "New-Value")
-
-        self.assertTrue(msg.setdefault("Another-Header") == "")
-        self.assertTrue(msg["another-header"] == "")
-
-    def check(self, msg, results):
-        """Check addresses and the date."""
-        m = self.create_message(msg)
-        i = 0
-        for n, a in m.getaddrlist('to') + m.getaddrlist('cc'):
-            try:
-                mn, ma = results[i][0], results[i][1]
-            except IndexError:
-                print 'extra parsed address:', repr(n), repr(a)
-                continue
-            i = i + 1
-            self.assertEqual(mn, n,
-                             "Un-expected name: %r != %r" % (mn, n))
-            self.assertEqual(ma, a,
-                             "Un-expected address: %r != %r" % (ma, a))
-            if mn == n and ma == a:
-                pass
-            else:
-                print 'not found:', repr(n), repr(a)
-
-        out = m.getdate('date')
-        if out:
-            self.assertEqual(out,
-                             (1999, 1, 13, 23, 57, 35, 0, 1, 0),
-                             "date conversion failed")
-
-
-    # Note: all test cases must have the same date (in various formats),
-    # or no date!
-
-    def test_basic(self):
-        self.check(
-            'Date:    Wed, 13 Jan 1999 23:57:35 -0500\n'
-            'From:    Guido van Rossum <guido@CNRI.Reston.VA.US>\n'
-            'To:      "Guido van\n'
-            '\t : Rossum" <guido@python.org>\n'
-            'Subject: test2\n'
-            '\n'
-            'test2\n',
-            [('Guido van\n\t : Rossum', 'guido@python.org')])
-
-        self.check(
-            'From: Barry <bwarsaw@python.org\n'
-            'To: guido@python.org (Guido: the Barbarian)\n'
-            'Subject: nonsense\n'
-            'Date: Wednesday, January 13 1999 23:57:35 -0500\n'
-            '\n'
-            'test',
-            [('Guido: the Barbarian', 'guido@python.org')])
-
-        self.check(
-            'From: Barry <bwarsaw@python.org\n'
-            'To: guido@python.org (Guido: the Barbarian)\n'
-            'Cc: "Guido: the Madman" <guido@python.org>\n'
-            'Date:  13-Jan-1999 23:57:35 EST\n'
-            '\n'
-            'test',
-            [('Guido: the Barbarian', 'guido@python.org'),
-             ('Guido: the Madman', 'guido@python.org')
-             ])
-
-        self.check(
-            'To: "The monster with\n'
-            '     the very long name: Guido" <guido@python.org>\n'
-            'Date:    Wed, 13 Jan 1999 23:57:35 -0500\n'
-            '\n'
-            'test',
-            [('The monster with\n     the very long name: Guido',
-              'guido@python.org')])
-
-        self.check(
-            'To: "Amit J. Patel" <amitp@Theory.Stanford.EDU>\n'
-            'CC: Mike Fletcher <mfletch@vrtelecom.com>,\n'
-            '        "\'string-sig@python.org\'" <string-sig@python.org>\n'
-            'Cc: fooz@bat.com, bart@toof.com\n'
-            'Cc: goit@lip.com\n'
-            'Date:    Wed, 13 Jan 1999 23:57:35 -0500\n'
-            '\n'
-            'test',
-            [('Amit J. Patel', 'amitp@Theory.Stanford.EDU'),
-             ('Mike Fletcher', 'mfletch@vrtelecom.com'),
-             ("'string-sig@python.org'", 'string-sig@python.org'),
-             ('', 'fooz@bat.com'),
-             ('', 'bart@toof.com'),
-             ('', 'goit@lip.com'),
-             ])
-
-        self.check(
-            'To: Some One <someone@dom.ain>\n'
-            'From: Anudder Persin <subuddy.else@dom.ain>\n'
-            'Date:\n'
-            '\n'
-            'test',
-            [('Some One', 'someone@dom.ain')])
-
-        self.check(
-            'To: person@dom.ain (User J. Person)\n\n',
-            [('User J. Person', 'person@dom.ain')])
-
-    def test_doublecomment(self):
-        # The RFC allows comments within comments in an email addr
-        self.check(
-            'To: person@dom.ain ((User J. Person)), John Doe <foo@bar.com>\n\n',
-            [('User J. Person', 'person@dom.ain'), ('John Doe', 'foo@bar.com')])
-
-    def test_twisted(self):
-        # This one is just twisted.  I don't know what the proper
-        # result should be, but it shouldn't be to infloop, which is
-        # what used to happen!
-        self.check(
-            'To: <[smtp:dd47@mail.xxx.edu]_at_hmhq@hdq-mdm1-imgout.companay.com>\n'
-            'Date:    Wed, 13 Jan 1999 23:57:35 -0500\n'
-            '\n'
-            'test',
-            [('', ''),
-             ('', 'dd47@mail.xxx.edu'),
-             ('', '_at_hmhq@hdq-mdm1-imgout.companay.com'),
-             ])
-
-    def test_commas_in_full_name(self):
-        # This exercises the old commas-in-a-full-name bug, which
-        # should be doing the right thing in recent versions of the
-        # module.
-        self.check(
-            'To: "last, first" <userid@foo.net>\n'
-            '\n'
-            'test',
-            [('last, first', 'userid@foo.net')])
-
-    def test_quoted_name(self):
-        self.check(
-            'To: (Comment stuff) "Quoted name"@somewhere.com\n'
-            '\n'
-            'test',
-            [('Comment stuff', '"Quoted name"@somewhere.com')])
-
-    def test_bogus_to_header(self):
-        self.check(
-            'To: :\n'
-            'Cc: goit@lip.com\n'
-            'Date:    Wed, 13 Jan 1999 23:57:35 -0500\n'
-            '\n'
-            'test',
-            [('', 'goit@lip.com')])
-
-    def test_addr_ipquad(self):
-        self.check(
-            'To: guido@[132.151.1.21]\n'
-            '\n'
-            'foo',
-            [('', 'guido@[132.151.1.21]')])
-
-    def test_iter(self):
-        m = rfc822.Message(StringIO(
-            'Date:    Wed, 13 Jan 1999 23:57:35 -0500\n'
-            'From:    Guido van Rossum <guido@CNRI.Reston.VA.US>\n'
-            'To:      "Guido van\n'
-            '\t : Rossum" <guido@python.org>\n'
-            'Subject: test2\n'
-            '\n'
-            'test2\n' ))
-        self.assertEqual(sorted(m), ['date', 'from', 'subject', 'to'])
-
-    def test_rfc2822_phrases(self):
-        # RFC 2822 (the update to RFC 822) specifies that dots in phrases are
-        # obsolete syntax, which conforming programs MUST recognize but NEVER
-        # generate (see $4.1 Miscellaneous obsolete tokens).  This is a
-        # departure from RFC 822 which did not allow dots in non-quoted
-        # phrases.
-        self.check('To: User J. Person <person@dom.ain>\n\n',
-                   [('User J. Person', 'person@dom.ain')])
-
-    # This takes too long to add to the test suite
-##    def test_an_excrutiatingly_long_address_field(self):
-##        OBSCENELY_LONG_HEADER_MULTIPLIER = 10000
-##        oneaddr = ('Person' * 10) + '@' + ('.'.join(['dom']*10)) + '.com'
-##        addr = ', '.join([oneaddr] * OBSCENELY_LONG_HEADER_MULTIPLIER)
-##        lst = rfc822.AddrlistClass(addr).getaddrlist()
-##        self.assertEqual(len(lst), OBSCENELY_LONG_HEADER_MULTIPLIER)
-
-    def test_2getaddrlist(self):
-        eq = self.assertEqual
-        msg = self.create_message("""\
-To: aperson@dom.ain
-Cc: bperson@dom.ain
-Cc: cperson@dom.ain
-Cc: dperson@dom.ain
-
-A test message.
-""")
-        ccs = [('', a) for a in
-               ['bperson@dom.ain', 'cperson@dom.ain', 'dperson@dom.ain']]
-        addrs = msg.getaddrlist('cc')
-        addrs.sort()
-        eq(addrs, ccs)
-        # Try again, this one used to fail
-        addrs = msg.getaddrlist('cc')
-        addrs.sort()
-        eq(addrs, ccs)
-
-    def test_parseaddr(self):
-        eq = self.assertEqual
-        eq(rfc822.parseaddr('<>'), ('', ''))
-        eq(rfc822.parseaddr('aperson@dom.ain'), ('', 'aperson@dom.ain'))
-        eq(rfc822.parseaddr('bperson@dom.ain (Bea A. Person)'),
-           ('Bea A. Person', 'bperson@dom.ain'))
-        eq(rfc822.parseaddr('Cynthia Person <cperson@dom.ain>'),
-           ('Cynthia Person', 'cperson@dom.ain'))
-
-    def test_quote_unquote(self):
-        eq = self.assertEqual
-        eq(rfc822.quote('foo\\wacky"name'), 'foo\\\\wacky\\"name')
-        eq(rfc822.unquote('"foo\\\\wacky\\"name"'), 'foo\\wacky"name')
-
-
-def test_main():
-    test_support.run_unittest(MessageTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_richcmp.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_richcmp.py
deleted file mode 100644
index c69647c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_richcmp.py
+++ /dev/null
@@ -1,338 +0,0 @@
-# Tests for rich comparisons
-
-import unittest
-from test import test_support
-
-import operator
-
-class Number:
-
-    def __init__(self, x):
-        self.x = x
-
-    def __lt__(self, other):
-        return self.x < other
-
-    def __le__(self, other):
-        return self.x <= other
-
-    def __eq__(self, other):
-        return self.x == other
-
-    def __ne__(self, other):
-        return self.x != other
-
-    def __gt__(self, other):
-        return self.x > other
-
-    def __ge__(self, other):
-        return self.x >= other
-
-    def __cmp__(self, other):
-        raise test_support.TestFailed, "Number.__cmp__() should not be called"
-
-    def __repr__(self):
-        return "Number(%r)" % (self.x, )
-
-class Vector:
-
-    def __init__(self, data):
-        self.data = data
-
-    def __len__(self):
-        return len(self.data)
-
-    def __getitem__(self, i):
-        return self.data[i]
-
-    def __setitem__(self, i, v):
-        self.data[i] = v
-
-    __hash__ = None # Vectors cannot be hashed
-
-    def __nonzero__(self):
-        raise TypeError, "Vectors cannot be used in Boolean contexts"
-
-    def __cmp__(self, other):
-        raise test_support.TestFailed, "Vector.__cmp__() should not be called"
-
-    def __repr__(self):
-        return "Vector(%r)" % (self.data, )
-
-    def __lt__(self, other):
-        return Vector([a < b for a, b in zip(self.data, self.__cast(other))])
-
-    def __le__(self, other):
-        return Vector([a <= b for a, b in zip(self.data, self.__cast(other))])
-
-    def __eq__(self, other):
-        return Vector([a == b for a, b in zip(self.data, self.__cast(other))])
-
-    def __ne__(self, other):
-        return Vector([a != b for a, b in zip(self.data, self.__cast(other))])
-
-    def __gt__(self, other):
-        return Vector([a > b for a, b in zip(self.data, self.__cast(other))])
-
-    def __ge__(self, other):
-        return Vector([a >= b for a, b in zip(self.data, self.__cast(other))])
-
-    def __cast(self, other):
-        if isinstance(other, Vector):
-            other = other.data
-        if len(self.data) != len(other):
-            raise ValueError, "Cannot compare vectors of different length"
-        return other
-
-opmap = {
-    "lt": (lambda a,b: a< b, operator.lt, operator.__lt__),
-    "le": (lambda a,b: a<=b, operator.le, operator.__le__),
-    "eq": (lambda a,b: a==b, operator.eq, operator.__eq__),
-    "ne": (lambda a,b: a!=b, operator.ne, operator.__ne__),
-    "gt": (lambda a,b: a> b, operator.gt, operator.__gt__),
-    "ge": (lambda a,b: a>=b, operator.ge, operator.__ge__)
-}
-
-class VectorTest(unittest.TestCase):
-
-    def checkfail(self, error, opname, *args):
-        for op in opmap[opname]:
-            self.assertRaises(error, op, *args)
-
-    def checkequal(self, opname, a, b, expres):
-        for op in opmap[opname]:
-            realres = op(a, b)
-            # can't use assertEqual(realres, expres) here
-            self.assertEqual(len(realres), len(expres))
-            for i in xrange(len(realres)):
-                # results are bool, so we can use "is" here
-                self.assertTrue(realres[i] is expres[i])
-
-    def test_mixed(self):
-        # check that comparisons involving Vector objects
-        # which return rich results (i.e. Vectors with itemwise
-        # comparison results) work
-        a = Vector(range(2))
-        b = Vector(range(3))
-        # all comparisons should fail for different length
-        for opname in opmap:
-            self.checkfail(ValueError, opname, a, b)
-
-        a = range(5)
-        b = 5 * [2]
-        # try mixed arguments (but not (a, b) as that won't return a bool vector)
-        args = [(a, Vector(b)), (Vector(a), b), (Vector(a), Vector(b))]
-        for (a, b) in args:
-            self.checkequal("lt", a, b, [True,  True,  False, False, False])
-            self.checkequal("le", a, b, [True,  True,  True,  False, False])
-            self.checkequal("eq", a, b, [False, False, True,  False, False])
-            self.checkequal("ne", a, b, [True,  True,  False, True,  True ])
-            self.checkequal("gt", a, b, [False, False, False, True,  True ])
-            self.checkequal("ge", a, b, [False, False, True,  True,  True ])
-
-            for ops in opmap.itervalues():
-                for op in ops:
-                    # calls __nonzero__, which should fail
-                    self.assertRaises(TypeError, bool, op(a, b))
-
-class NumberTest(unittest.TestCase):
-
-    def test_basic(self):
-        # Check that comparisons involving Number objects
-        # give the same results give as comparing the
-        # corresponding ints
-        for a in xrange(3):
-            for b in xrange(3):
-                for typea in (int, Number):
-                    for typeb in (int, Number):
-                        if typea==typeb==int:
-                            continue # the combination int, int is useless
-                        ta = typea(a)
-                        tb = typeb(b)
-                        for ops in opmap.itervalues():
-                            for op in ops:
-                                realoutcome = op(a, b)
-                                testoutcome = op(ta, tb)
-                                self.assertEqual(realoutcome, testoutcome)
-
-    def checkvalue(self, opname, a, b, expres):
-        for typea in (int, Number):
-            for typeb in (int, Number):
-                ta = typea(a)
-                tb = typeb(b)
-                for op in opmap[opname]:
-                    realres = op(ta, tb)
-                    realres = getattr(realres, "x", realres)
-                    self.assertTrue(realres is expres)
-
-    def test_values(self):
-        # check all operators and all comparison results
-        self.checkvalue("lt", 0, 0, False)
-        self.checkvalue("le", 0, 0, True )
-        self.checkvalue("eq", 0, 0, True )
-        self.checkvalue("ne", 0, 0, False)
-        self.checkvalue("gt", 0, 0, False)
-        self.checkvalue("ge", 0, 0, True )
-
-        self.checkvalue("lt", 0, 1, True )
-        self.checkvalue("le", 0, 1, True )
-        self.checkvalue("eq", 0, 1, False)
-        self.checkvalue("ne", 0, 1, True )
-        self.checkvalue("gt", 0, 1, False)
-        self.checkvalue("ge", 0, 1, False)
-
-        self.checkvalue("lt", 1, 0, False)
-        self.checkvalue("le", 1, 0, False)
-        self.checkvalue("eq", 1, 0, False)
-        self.checkvalue("ne", 1, 0, True )
-        self.checkvalue("gt", 1, 0, True )
-        self.checkvalue("ge", 1, 0, True )
-
-class MiscTest(unittest.TestCase):
-
-    def test_misbehavin(self):
-        class Misb:
-            def __lt__(self_, other): return 0
-            def __gt__(self_, other): return 0
-            def __eq__(self_, other): return 0
-            def __le__(self_, other): self.fail("This shouldn't happen")
-            def __ge__(self_, other): self.fail("This shouldn't happen")
-            def __ne__(self_, other): self.fail("This shouldn't happen")
-            def __cmp__(self_, other): raise RuntimeError, "expected"
-        a = Misb()
-        b = Misb()
-        self.assertEqual(a<b, 0)
-        self.assertEqual(a==b, 0)
-        self.assertEqual(a>b, 0)
-        self.assertRaises(RuntimeError, cmp, a, b)
-
-    def test_not(self):
-        # Check that exceptions in __nonzero__ are properly
-        # propagated by the not operator
-        import operator
-        class Exc(Exception):
-            pass
-        class Bad:
-            def __nonzero__(self):
-                raise Exc
-
-        def do(bad):
-            not bad
-
-        for func in (do, operator.not_):
-            self.assertRaises(Exc, func, Bad())
-
-    def test_recursion(self):
-        # Check that comparison for recursive objects fails gracefully
-        from UserList import UserList
-        a = UserList()
-        b = UserList()
-        a.append(b)
-        b.append(a)
-        self.assertRaises(RuntimeError, operator.eq, a, b)
-        self.assertRaises(RuntimeError, operator.ne, a, b)
-        self.assertRaises(RuntimeError, operator.lt, a, b)
-        self.assertRaises(RuntimeError, operator.le, a, b)
-        self.assertRaises(RuntimeError, operator.gt, a, b)
-        self.assertRaises(RuntimeError, operator.ge, a, b)
-
-        b.append(17)
-        # Even recursive lists of different lengths are different,
-        # but they cannot be ordered
-        self.assertTrue(not (a == b))
-        self.assertTrue(a != b)
-        self.assertRaises(RuntimeError, operator.lt, a, b)
-        self.assertRaises(RuntimeError, operator.le, a, b)
-        self.assertRaises(RuntimeError, operator.gt, a, b)
-        self.assertRaises(RuntimeError, operator.ge, a, b)
-        a.append(17)
-        self.assertRaises(RuntimeError, operator.eq, a, b)
-        self.assertRaises(RuntimeError, operator.ne, a, b)
-        a.insert(0, 11)
-        b.insert(0, 12)
-        self.assertTrue(not (a == b))
-        self.assertTrue(a != b)
-        self.assertTrue(a < b)
-
-class DictTest(unittest.TestCase):
-
-    def test_dicts(self):
-        # Verify that __eq__ and __ne__ work for dicts even if the keys and
-        # values don't support anything other than __eq__ and __ne__ (and
-        # __hash__).  Complex numbers are a fine example of that.
-        import random
-        imag1a = {}
-        for i in range(50):
-            imag1a[random.randrange(100)*1j] = random.randrange(100)*1j
-        items = imag1a.items()
-        random.shuffle(items)
-        imag1b = {}
-        for k, v in items:
-            imag1b[k] = v
-        imag2 = imag1b.copy()
-        imag2[k] = v + 1.0
-        self.assertTrue(imag1a == imag1a)
-        self.assertTrue(imag1a == imag1b)
-        self.assertTrue(imag2 == imag2)
-        self.assertTrue(imag1a != imag2)
-        for opname in ("lt", "le", "gt", "ge"):
-            for op in opmap[opname]:
-                self.assertRaises(TypeError, op, imag1a, imag2)
-
-class ListTest(unittest.TestCase):
-
-    def test_coverage(self):
-        # exercise all comparisons for lists
-        x = [42]
-        self.assertIs(x<x, False)
-        self.assertIs(x<=x, True)
-        self.assertIs(x==x, True)
-        self.assertIs(x!=x, False)
-        self.assertIs(x>x, False)
-        self.assertIs(x>=x, True)
-        y = [42, 42]
-        self.assertIs(x<y, True)
-        self.assertIs(x<=y, True)
-        self.assertIs(x==y, False)
-        self.assertIs(x!=y, True)
-        self.assertIs(x>y, False)
-        self.assertIs(x>=y, False)
-
-    def test_badentry(self):
-        # make sure that exceptions for item comparison are properly
-        # propagated in list comparisons
-        class Exc(Exception):
-            pass
-        class Bad:
-            def __eq__(self, other):
-                raise Exc
-
-        x = [Bad()]
-        y = [Bad()]
-
-        for op in opmap["eq"]:
-            self.assertRaises(Exc, op, x, y)
-
-    def test_goodentry(self):
-        # This test exercises the final call to PyObject_RichCompare()
-        # in Objects/listobject.c::list_richcompare()
-        class Good:
-            def __lt__(self, other):
-                return True
-
-        x = [Good()]
-        y = [Good()]
-
-        for op in opmap["lt"]:
-            self.assertIs(op(x, y), True)
-
-def test_main():
-    test_support.run_unittest(VectorTest, NumberTest, MiscTest, ListTest)
-    with test_support.check_py3k_warnings(("dict inequality comparisons "
-                                             "not supported in 3.x",
-                                             DeprecationWarning)):
-        test_support.run_unittest(DictTest)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_rlcompleter.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_rlcompleter.py
deleted file mode 100644
index 53ca167..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_rlcompleter.py
+++ /dev/null
@@ -1,73 +0,0 @@
-from test import test_support as support
-import unittest
-import __builtin__ as builtins
-import rlcompleter
-
-class CompleteMe(object):
-    """ Trivial class used in testing rlcompleter.Completer. """
-    spam = 1
-
-
-class TestRlcompleter(unittest.TestCase):
-    def setUp(self):
-        self.stdcompleter = rlcompleter.Completer()
-        self.completer = rlcompleter.Completer(dict(spam=int,
-                                                    egg=str,
-                                                    CompleteMe=CompleteMe))
-
-        # forces stdcompleter to bind builtins namespace
-        self.stdcompleter.complete('', 0)
-
-    def test_namespace(self):
-        class A(dict):
-            pass
-        class B(list):
-            pass
-
-        self.assertTrue(self.stdcompleter.use_main_ns)
-        self.assertFalse(self.completer.use_main_ns)
-        self.assertFalse(rlcompleter.Completer(A()).use_main_ns)
-        self.assertRaises(TypeError, rlcompleter.Completer, B((1,)))
-
-    def test_global_matches(self):
-        # test with builtins namespace
-        self.assertEqual(sorted(self.stdcompleter.global_matches('di')),
-                         [x+'(' for x in dir(builtins) if x.startswith('di')])
-        self.assertEqual(sorted(self.stdcompleter.global_matches('st')),
-                         [x+'(' for x in dir(builtins) if x.startswith('st')])
-        self.assertEqual(self.stdcompleter.global_matches('akaksajadhak'), [])
-
-        # test with a customized namespace
-        self.assertEqual(self.completer.global_matches('CompleteM'),
-                         ['CompleteMe('])
-        self.assertEqual(self.completer.global_matches('eg'),
-                         ['egg('])
-        # XXX: see issue5256
-        self.assertEqual(self.completer.global_matches('CompleteM'),
-                         ['CompleteMe('])
-
-    def test_attr_matches(self):
-        # test with builtins namespace
-        self.assertEqual(self.stdcompleter.attr_matches('str.s'),
-                         ['str.{}('.format(x) for x in dir(str)
-                          if x.startswith('s')])
-        self.assertEqual(self.stdcompleter.attr_matches('tuple.foospamegg'), [])
-
-        # test with a customized namespace
-        self.assertEqual(self.completer.attr_matches('CompleteMe.sp'),
-                         ['CompleteMe.spam'])
-        self.assertEqual(self.completer.attr_matches('Completeme.egg'), [])
-
-        CompleteMe.me = CompleteMe
-        self.assertEqual(self.completer.attr_matches('CompleteMe.me.me.sp'),
-                         ['CompleteMe.me.me.spam'])
-        self.assertEqual(self.completer.attr_matches('egg.s'),
-                         ['egg.{}('.format(x) for x in dir(str)
-                          if x.startswith('s')])
-
-def test_main():
-    support.run_unittest(TestRlcompleter)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_robotparser.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_robotparser.py
deleted file mode 100644
index 45c91f1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_robotparser.py
+++ /dev/null
@@ -1,261 +0,0 @@
-import unittest, StringIO, robotparser
-from test import test_support
-
-class RobotTestCase(unittest.TestCase):
-    def __init__(self, index, parser, url, good, agent):
-        unittest.TestCase.__init__(self)
-        if good:
-            self.str = "RobotTest(%d, good, %s)" % (index, url)
-        else:
-            self.str = "RobotTest(%d, bad, %s)" % (index, url)
-        self.parser = parser
-        self.url = url
-        self.good = good
-        self.agent = agent
-
-    def runTest(self):
-        if isinstance(self.url, tuple):
-            agent, url = self.url
-        else:
-            url = self.url
-            agent = self.agent
-        if self.good:
-            self.assertTrue(self.parser.can_fetch(agent, url))
-        else:
-            self.assertFalse(self.parser.can_fetch(agent, url))
-
-    def __str__(self):
-        return self.str
-
-tests = unittest.TestSuite()
-
-def RobotTest(index, robots_txt, good_urls, bad_urls,
-              agent="test_robotparser"):
-
-    lines = StringIO.StringIO(robots_txt).readlines()
-    parser = robotparser.RobotFileParser()
-    parser.parse(lines)
-    for url in good_urls:
-        tests.addTest(RobotTestCase(index, parser, url, 1, agent))
-    for url in bad_urls:
-        tests.addTest(RobotTestCase(index, parser, url, 0, agent))
-
-# Examples from http://www.robotstxt.org/wc/norobots.html (fetched 2002)
-
-# 1.
-doc = """
-User-agent: *
-Disallow: /cyberworld/map/ # This is an infinite virtual URL space
-Disallow: /tmp/ # these will soon disappear
-Disallow: /foo.html
-"""
-
-good = ['/','/test.html']
-bad = ['/cyberworld/map/index.html','/tmp/xxx','/foo.html']
-
-RobotTest(1, doc, good, bad)
-
-# 2.
-doc = """
-# robots.txt for http://www.example.com/
-
-User-agent: *
-Disallow: /cyberworld/map/ # This is an infinite virtual URL space
-
-# Cybermapper knows where to go.
-User-agent: cybermapper
-Disallow:
-
-"""
-
-good = ['/','/test.html',('cybermapper','/cyberworld/map/index.html')]
-bad = ['/cyberworld/map/index.html']
-
-RobotTest(2, doc, good, bad)
-
-# 3.
-doc = """
-# go away
-User-agent: *
-Disallow: /
-"""
-
-good = []
-bad = ['/cyberworld/map/index.html','/','/tmp/']
-
-RobotTest(3, doc, good, bad)
-
-# Examples from http://www.robotstxt.org/wc/norobots-rfc.html (fetched 2002)
-
-# 4.
-doc = """
-User-agent: figtree
-Disallow: /tmp
-Disallow: /a%3cd.html
-Disallow: /a%2fb.html
-Disallow: /%7ejoe/index.html
-"""
-
-good = [] # XFAIL '/a/b.html'
-bad = ['/tmp','/tmp.html','/tmp/a.html',
-       '/a%3cd.html','/a%3Cd.html','/a%2fb.html',
-       '/~joe/index.html'
-       ]
-
-RobotTest(4, doc, good, bad, 'figtree')
-RobotTest(5, doc, good, bad, 'FigTree Robot libwww-perl/5.04')
-
-# 6.
-doc = """
-User-agent: *
-Disallow: /tmp/
-Disallow: /a%3Cd.html
-Disallow: /a/b.html
-Disallow: /%7ejoe/index.html
-"""
-
-good = ['/tmp',] # XFAIL: '/a%2fb.html'
-bad = ['/tmp/','/tmp/a.html',
-       '/a%3cd.html','/a%3Cd.html',"/a/b.html",
-       '/%7Ejoe/index.html']
-
-RobotTest(6, doc, good, bad)
-
-# From bug report #523041
-
-# 7.
-doc = """
-User-Agent: *
-Disallow: /.
-"""
-
-good = ['/foo.html']
-bad = [] # Bug report says "/" should be denied, but that is not in the RFC
-
-RobotTest(7, doc, good, bad)
-
-# From Google: http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=40364
-
-# 8.
-doc = """
-User-agent: Googlebot
-Allow: /folder1/myfile.html
-Disallow: /folder1/
-"""
-
-good = ['/folder1/myfile.html']
-bad = ['/folder1/anotherfile.html']
-
-RobotTest(8, doc, good, bad, agent="Googlebot")
-
-# 9.  This file is incorrect because "Googlebot" is a substring of
-#     "Googlebot-Mobile", so test 10 works just like test 9.
-doc = """
-User-agent: Googlebot
-Disallow: /
-
-User-agent: Googlebot-Mobile
-Allow: /
-"""
-
-good = []
-bad = ['/something.jpg']
-
-RobotTest(9, doc, good, bad, agent="Googlebot")
-
-good = []
-bad = ['/something.jpg']
-
-RobotTest(10, doc, good, bad, agent="Googlebot-Mobile")
-
-# 11.  Get the order correct.
-doc = """
-User-agent: Googlebot-Mobile
-Allow: /
-
-User-agent: Googlebot
-Disallow: /
-"""
-
-good = []
-bad = ['/something.jpg']
-
-RobotTest(11, doc, good, bad, agent="Googlebot")
-
-good = ['/something.jpg']
-bad = []
-
-RobotTest(12, doc, good, bad, agent="Googlebot-Mobile")
-
-
-# 13.  Google also got the order wrong in #8.  You need to specify the
-#      URLs from more specific to more general.
-doc = """
-User-agent: Googlebot
-Allow: /folder1/myfile.html
-Disallow: /folder1/
-"""
-
-good = ['/folder1/myfile.html']
-bad = ['/folder1/anotherfile.html']
-
-RobotTest(13, doc, good, bad, agent="googlebot")
-
-
-# 14. For issue #6325 (query string support)
-doc = """
-User-agent: *
-Disallow: /some/path?name=value
-"""
-
-good = ['/some/path']
-bad = ['/some/path?name=value']
-
-RobotTest(14, doc, good, bad)
-
-# 15. For issue #4108 (obey first * entry)
-doc = """
-User-agent: *
-Disallow: /some/path
-
-User-agent: *
-Disallow: /another/path
-"""
-
-good = ['/another/path']
-bad = ['/some/path']
-
-RobotTest(15, doc, good, bad)
-
-
-class NetworkTestCase(unittest.TestCase):
-
-    def testPasswordProtectedSite(self):
-        test_support.requires('network')
-        with test_support.transient_internet('mueblesmoraleda.com'):
-            url = 'http://mueblesmoraleda.com'
-            parser = robotparser.RobotFileParser()
-            parser.set_url(url)
-            try:
-                parser.read()
-            except IOError:
-                self.skipTest('%s is unavailable' % url)
-            self.assertEqual(parser.can_fetch("*", url+"/robots.txt"), False)
-
-    def testPythonOrg(self):
-        test_support.requires('network')
-        with test_support.transient_internet('www.python.org'):
-            parser = robotparser.RobotFileParser(
-                "http://www.python.org/robots.txt")
-            parser.read()
-            self.assertTrue(
-                parser.can_fetch("*", "http://www.python.org/robots.txt"))
-
-
-def test_main():
-    test_support.run_unittest(tests)
-    test_support.run_unittest(NetworkTestCase)
-
-if __name__=='__main__':
-    test_support.verbose = 1
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_runpy.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_runpy.py
deleted file mode 100644
index 97d7e09..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_runpy.py
+++ /dev/null
@@ -1,402 +0,0 @@
-# Test the runpy module
-import unittest
-import os
-import os.path
-import sys
-import re
-import tempfile
-from test.test_support import verbose, run_unittest, forget
-from test.script_helper import (temp_dir, make_script, compile_script,
-                                make_pkg, make_zip_script, make_zip_pkg)
-
-
-from runpy import _run_code, _run_module_code, run_module, run_path
-# Note: This module can't safely test _run_module_as_main as it
-# runs its tests in the current process, which would mess with the
-# real __main__ module (usually test.regrtest)
-# See test_cmd_line_script for a test that executes that code path
-
-# Set up the test code and expected results
-
-class RunModuleCodeTest(unittest.TestCase):
-    """Unit tests for runpy._run_code and runpy._run_module_code"""
-
-    expected_result = ["Top level assignment", "Lower level reference"]
-    test_source = (
-        "# Check basic code execution\n"
-        "result = ['Top level assignment']\n"
-        "def f():\n"
-        "    result.append('Lower level reference')\n"
-        "f()\n"
-        "# Check the sys module\n"
-        "import sys\n"
-        "run_argv0 = sys.argv[0]\n"
-        "run_name_in_sys_modules = __name__ in sys.modules\n"
-        "if run_name_in_sys_modules:\n"
-        "   module_in_sys_modules = globals() is sys.modules[__name__].__dict__\n"
-        "# Check nested operation\n"
-        "import runpy\n"
-        "nested = runpy._run_module_code('x=1\\n', mod_name='<run>')\n"
-    )
-
-    def test_run_code(self):
-        saved_argv0 = sys.argv[0]
-        d = _run_code(self.test_source, {})
-        self.assertEqual(d["result"], self.expected_result)
-        self.assertIs(d["__name__"], None)
-        self.assertIs(d["__file__"], None)
-        self.assertIs(d["__loader__"], None)
-        self.assertIs(d["__package__"], None)
-        self.assertIs(d["run_argv0"], saved_argv0)
-        self.assertNotIn("run_name", d)
-        self.assertIs(sys.argv[0], saved_argv0)
-
-    def test_run_module_code(self):
-        initial = object()
-        name = "<Nonsense>"
-        file = "Some other nonsense"
-        loader = "Now you're just being silly"
-        package = '' # Treat as a top level module
-        d1 = dict(initial=initial)
-        saved_argv0 = sys.argv[0]
-        d2 = _run_module_code(self.test_source,
-                              d1,
-                              name,
-                              file,
-                              loader,
-                              package)
-        self.assertNotIn("result", d1)
-        self.assertIs(d2["initial"], initial)
-        self.assertEqual(d2["result"], self.expected_result)
-        self.assertEqual(d2["nested"]["x"], 1)
-        self.assertIs(d2["__name__"], name)
-        self.assertTrue(d2["run_name_in_sys_modules"])
-        self.assertTrue(d2["module_in_sys_modules"])
-        self.assertIs(d2["__file__"], file)
-        self.assertIs(d2["run_argv0"], file)
-        self.assertIs(d2["__loader__"], loader)
-        self.assertIs(d2["__package__"], package)
-        self.assertIs(sys.argv[0], saved_argv0)
-        self.assertNotIn(name, sys.modules)
-
-
-class RunModuleTest(unittest.TestCase):
-    """Unit tests for runpy.run_module"""
-
-    def expect_import_error(self, mod_name):
-        try:
-            run_module(mod_name)
-        except ImportError:
-            pass
-        else:
-            self.fail("Expected import error for " + mod_name)
-
-    def test_invalid_names(self):
-        # Builtin module
-        self.expect_import_error("sys")
-        # Non-existent modules
-        self.expect_import_error("sys.imp.eric")
-        self.expect_import_error("os.path.half")
-        self.expect_import_error("a.bee")
-        self.expect_import_error(".howard")
-        self.expect_import_error("..eaten")
-        # Package without __main__.py
-        self.expect_import_error("multiprocessing")
-
-    def test_library_module(self):
-        run_module("runpy")
-
-    def _add_pkg_dir(self, pkg_dir):
-        os.mkdir(pkg_dir)
-        pkg_fname = os.path.join(pkg_dir, "__init__"+os.extsep+"py")
-        pkg_file = open(pkg_fname, "w")
-        pkg_file.close()
-        return pkg_fname
-
-    def _make_pkg(self, source, depth, mod_base="runpy_test"):
-        pkg_name = "__runpy_pkg__"
-        test_fname = mod_base+os.extsep+"py"
-        pkg_dir = sub_dir = tempfile.mkdtemp()
-        if verbose: print "  Package tree in:", sub_dir
-        sys.path.insert(0, pkg_dir)
-        if verbose: print "  Updated sys.path:", sys.path[0]
-        for i in range(depth):
-            sub_dir = os.path.join(sub_dir, pkg_name)
-            pkg_fname = self._add_pkg_dir(sub_dir)
-            if verbose: print "  Next level in:", sub_dir
-            if verbose: print "  Created:", pkg_fname
-        mod_fname = os.path.join(sub_dir, test_fname)
-        mod_file = open(mod_fname, "w")
-        mod_file.write(source)
-        mod_file.close()
-        if verbose: print "  Created:", mod_fname
-        mod_name = (pkg_name+".")*depth + mod_base
-        return pkg_dir, mod_fname, mod_name
-
-    def _del_pkg(self, top, depth, mod_name):
-        for entry in list(sys.modules):
-            if entry.startswith("__runpy_pkg__"):
-                del sys.modules[entry]
-        if verbose: print "  Removed sys.modules entries"
-        del sys.path[0]
-        if verbose: print "  Removed sys.path entry"
-        for root, dirs, files in os.walk(top, topdown=False):
-            for name in files:
-                try:
-                    os.remove(os.path.join(root, name))
-                except OSError, ex:
-                    if verbose: print ex # Persist with cleaning up
-            for name in dirs:
-                fullname = os.path.join(root, name)
-                try:
-                    os.rmdir(fullname)
-                except OSError, ex:
-                    if verbose: print ex # Persist with cleaning up
-        try:
-            os.rmdir(top)
-            if verbose: print "  Removed package tree"
-        except OSError, ex:
-            if verbose: print ex # Persist with cleaning up
-
-    def _check_module(self, depth):
-        pkg_dir, mod_fname, mod_name = (
-               self._make_pkg("x=1\n", depth))
-        forget(mod_name)
-        try:
-            if verbose: print "Running from source:", mod_name
-            d1 = run_module(mod_name) # Read from source
-            self.assertIn("x", d1)
-            self.assertTrue(d1["x"] == 1)
-            del d1 # Ensure __loader__ entry doesn't keep file open
-            __import__(mod_name)
-            os.remove(mod_fname)
-            if verbose: print "Running from compiled:", mod_name
-            d2 = run_module(mod_name) # Read from bytecode
-            self.assertIn("x", d2)
-            self.assertTrue(d2["x"] == 1)
-            del d2 # Ensure __loader__ entry doesn't keep file open
-        finally:
-            self._del_pkg(pkg_dir, depth, mod_name)
-        if verbose: print "Module executed successfully"
-
-    def _check_package(self, depth):
-        pkg_dir, mod_fname, mod_name = (
-               self._make_pkg("x=1\n", depth, "__main__"))
-        pkg_name, _, _ = mod_name.rpartition(".")
-        forget(mod_name)
-        try:
-            if verbose: print "Running from source:", pkg_name
-            d1 = run_module(pkg_name) # Read from source
-            self.assertIn("x", d1)
-            self.assertTrue(d1["x"] == 1)
-            del d1 # Ensure __loader__ entry doesn't keep file open
-            __import__(mod_name)
-            os.remove(mod_fname)
-            if verbose: print "Running from compiled:", pkg_name
-            d2 = run_module(pkg_name) # Read from bytecode
-            self.assertIn("x", d2)
-            self.assertTrue(d2["x"] == 1)
-            del d2 # Ensure __loader__ entry doesn't keep file open
-        finally:
-            self._del_pkg(pkg_dir, depth, pkg_name)
-        if verbose: print "Package executed successfully"
-
-    def _add_relative_modules(self, base_dir, source, depth):
-        if depth <= 1:
-            raise ValueError("Relative module test needs depth > 1")
-        pkg_name = "__runpy_pkg__"
-        module_dir = base_dir
-        for i in range(depth):
-            parent_dir = module_dir
-            module_dir = os.path.join(module_dir, pkg_name)
-        # Add sibling module
-        sibling_fname = os.path.join(module_dir, "sibling"+os.extsep+"py")
-        sibling_file = open(sibling_fname, "w")
-        sibling_file.close()
-        if verbose: print "  Added sibling module:", sibling_fname
-        # Add nephew module
-        uncle_dir = os.path.join(parent_dir, "uncle")
-        self._add_pkg_dir(uncle_dir)
-        if verbose: print "  Added uncle package:", uncle_dir
-        cousin_dir = os.path.join(uncle_dir, "cousin")
-        self._add_pkg_dir(cousin_dir)
-        if verbose: print "  Added cousin package:", cousin_dir
-        nephew_fname = os.path.join(cousin_dir, "nephew"+os.extsep+"py")
-        nephew_file = open(nephew_fname, "w")
-        nephew_file.close()
-        if verbose: print "  Added nephew module:", nephew_fname
-
-    def _check_relative_imports(self, depth, run_name=None):
-        contents = r"""\
-from __future__ import absolute_import
-from . import sibling
-from ..uncle.cousin import nephew
-"""
-        pkg_dir, mod_fname, mod_name = (
-               self._make_pkg(contents, depth))
-        try:
-            self._add_relative_modules(pkg_dir, contents, depth)
-            pkg_name = mod_name.rpartition('.')[0]
-            if verbose: print "Running from source:", mod_name
-            d1 = run_module(mod_name, run_name=run_name) # Read from source
-            self.assertIn("__package__", d1)
-            self.assertTrue(d1["__package__"] == pkg_name)
-            self.assertIn("sibling", d1)
-            self.assertIn("nephew", d1)
-            del d1 # Ensure __loader__ entry doesn't keep file open
-            __import__(mod_name)
-            os.remove(mod_fname)
-            if verbose: print "Running from compiled:", mod_name
-            d2 = run_module(mod_name, run_name=run_name) # Read from bytecode
-            self.assertIn("__package__", d2)
-            self.assertTrue(d2["__package__"] == pkg_name)
-            self.assertIn("sibling", d2)
-            self.assertIn("nephew", d2)
-            del d2 # Ensure __loader__ entry doesn't keep file open
-        finally:
-            self._del_pkg(pkg_dir, depth, mod_name)
-        if verbose: print "Module executed successfully"
-
-    def test_run_module(self):
-        for depth in range(4):
-            if verbose: print "Testing package depth:", depth
-            self._check_module(depth)
-
-    def test_run_package(self):
-        for depth in range(1, 4):
-            if verbose: print "Testing package depth:", depth
-            self._check_package(depth)
-
-    def test_explicit_relative_import(self):
-        for depth in range(2, 5):
-            if verbose: print "Testing relative imports at depth:", depth
-            self._check_relative_imports(depth)
-
-    def test_main_relative_import(self):
-        for depth in range(2, 5):
-            if verbose: print "Testing main relative imports at depth:", depth
-            self._check_relative_imports(depth, "__main__")
-
-
-class RunPathTest(unittest.TestCase):
-    """Unit tests for runpy.run_path"""
-    # Based on corresponding tests in test_cmd_line_script
-
-    test_source = """\
-# Script may be run with optimisation enabled, so don't rely on assert
-# statements being executed
-def assertEqual(lhs, rhs):
-    if lhs != rhs:
-        raise AssertionError('%r != %r' % (lhs, rhs))
-def assertIs(lhs, rhs):
-    if lhs is not rhs:
-        raise AssertionError('%r is not %r' % (lhs, rhs))
-# Check basic code execution
-result = ['Top level assignment']
-def f():
-    result.append('Lower level reference')
-f()
-assertEqual(result, ['Top level assignment', 'Lower level reference'])
-# Check the sys module
-import sys
-assertIs(globals(), sys.modules[__name__].__dict__)
-argv0 = sys.argv[0]
-"""
-
-    def _make_test_script(self, script_dir, script_basename, source=None):
-        if source is None:
-            source = self.test_source
-        return make_script(script_dir, script_basename, source)
-
-    def _check_script(self, script_name, expected_name, expected_file,
-                            expected_argv0, expected_package):
-        result = run_path(script_name)
-        self.assertEqual(result["__name__"], expected_name)
-        self.assertEqual(result["__file__"], expected_file)
-        self.assertIn("argv0", result)
-        self.assertEqual(result["argv0"], expected_argv0)
-        self.assertEqual(result["__package__"], expected_package)
-
-    def _check_import_error(self, script_name, msg):
-        msg = re.escape(msg)
-        self.assertRaisesRegexp(ImportError, msg, run_path, script_name)
-
-    def test_basic_script(self):
-        with temp_dir() as script_dir:
-            mod_name = 'script'
-            script_name = self._make_test_script(script_dir, mod_name)
-            self._check_script(script_name, "<run_path>", script_name,
-                               script_name, None)
-
-    def test_script_compiled(self):
-        with temp_dir() as script_dir:
-            mod_name = 'script'
-            script_name = self._make_test_script(script_dir, mod_name)
-            compiled_name = compile_script(script_name)
-            os.remove(script_name)
-            self._check_script(compiled_name, "<run_path>", compiled_name,
-                               compiled_name, None)
-
-    def test_directory(self):
-        with temp_dir() as script_dir:
-            mod_name = '__main__'
-            script_name = self._make_test_script(script_dir, mod_name)
-            self._check_script(script_dir, "<run_path>", script_name,
-                               script_dir, '')
-
-    def test_directory_compiled(self):
-        with temp_dir() as script_dir:
-            mod_name = '__main__'
-            script_name = self._make_test_script(script_dir, mod_name)
-            compiled_name = compile_script(script_name)
-            os.remove(script_name)
-            self._check_script(script_dir, "<run_path>", compiled_name,
-                               script_dir, '')
-
-    def test_directory_error(self):
-        with temp_dir() as script_dir:
-            mod_name = 'not_main'
-            script_name = self._make_test_script(script_dir, mod_name)
-            msg = "can't find '__main__' module in %r" % script_dir
-            self._check_import_error(script_dir, msg)
-
-    def test_zipfile(self):
-        with temp_dir() as script_dir:
-            mod_name = '__main__'
-            script_name = self._make_test_script(script_dir, mod_name)
-            zip_name, fname = make_zip_script(script_dir, 'test_zip', script_name)
-            self._check_script(zip_name, "<run_path>", fname, zip_name, '')
-
-    def test_zipfile_compiled(self):
-        with temp_dir() as script_dir:
-            mod_name = '__main__'
-            script_name = self._make_test_script(script_dir, mod_name)
-            compiled_name = compile_script(script_name)
-            zip_name, fname = make_zip_script(script_dir, 'test_zip', compiled_name)
-            self._check_script(zip_name, "<run_path>", fname, zip_name, '')
-
-    def test_zipfile_error(self):
-        with temp_dir() as script_dir:
-            mod_name = 'not_main'
-            script_name = self._make_test_script(script_dir, mod_name)
-            zip_name, fname = make_zip_script(script_dir, 'test_zip', script_name)
-            msg = "can't find '__main__' module in %r" % zip_name
-            self._check_import_error(zip_name, msg)
-
-    def test_main_recursion_error(self):
-        with temp_dir() as script_dir, temp_dir() as dummy_dir:
-            mod_name = '__main__'
-            source = ("import runpy\n"
-                      "runpy.run_path(%r)\n") % dummy_dir
-            script_name = self._make_test_script(script_dir, mod_name, source)
-            zip_name, fname = make_zip_script(script_dir, 'test_zip', script_name)
-            msg = "recursion depth exceeded"
-            self.assertRaisesRegexp(RuntimeError, msg, run_path, zip_name)
-
-
-
-def test_main():
-    run_unittest(RunModuleCodeTest, RunModuleTest, RunPathTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sax.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sax.py
deleted file mode 100644
index b0944b7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sax.py
+++ /dev/null
@@ -1,753 +0,0 @@
-# regression test for SAX 2.0            -*- coding: utf-8 -*-
-# $Id$
-
-from xml.sax import make_parser, ContentHandler, \
-                    SAXException, SAXReaderNotAvailable, SAXParseException
-try:
-    make_parser()
-except SAXReaderNotAvailable:
-    # don't try to test this module if we cannot create a parser
-    raise ImportError("no XML parsers available")
-from xml.sax.saxutils import XMLGenerator, escape, unescape, quoteattr, \
-                             XMLFilterBase
-from xml.sax.expatreader import create_parser
-from xml.sax.handler import feature_namespaces
-from xml.sax.xmlreader import InputSource, AttributesImpl, AttributesNSImpl
-from cStringIO import StringIO
-from test.test_support import findfile, run_unittest
-import unittest
-
-TEST_XMLFILE = findfile("test.xml", subdir="xmltestdata")
-TEST_XMLFILE_OUT = findfile("test.xml.out", subdir="xmltestdata")
-
-ns_uri = "http://www.python.org/xml-ns/saxtest/"
-
-class XmlTestBase(unittest.TestCase):
-    def verify_empty_attrs(self, attrs):
-        self.assertRaises(KeyError, attrs.getValue, "attr")
-        self.assertRaises(KeyError, attrs.getValueByQName, "attr")
-        self.assertRaises(KeyError, attrs.getNameByQName, "attr")
-        self.assertRaises(KeyError, attrs.getQNameByName, "attr")
-        self.assertRaises(KeyError, attrs.__getitem__, "attr")
-        self.assertEqual(attrs.getLength(), 0)
-        self.assertEqual(attrs.getNames(), [])
-        self.assertEqual(attrs.getQNames(), [])
-        self.assertEqual(len(attrs), 0)
-        self.assertFalse(attrs.has_key("attr"))
-        self.assertEqual(attrs.keys(), [])
-        self.assertEqual(attrs.get("attrs"), None)
-        self.assertEqual(attrs.get("attrs", 25), 25)
-        self.assertEqual(attrs.items(), [])
-        self.assertEqual(attrs.values(), [])
-
-    def verify_empty_nsattrs(self, attrs):
-        self.assertRaises(KeyError, attrs.getValue, (ns_uri, "attr"))
-        self.assertRaises(KeyError, attrs.getValueByQName, "ns:attr")
-        self.assertRaises(KeyError, attrs.getNameByQName, "ns:attr")
-        self.assertRaises(KeyError, attrs.getQNameByName, (ns_uri, "attr"))
-        self.assertRaises(KeyError, attrs.__getitem__, (ns_uri, "attr"))
-        self.assertEqual(attrs.getLength(), 0)
-        self.assertEqual(attrs.getNames(), [])
-        self.assertEqual(attrs.getQNames(), [])
-        self.assertEqual(len(attrs), 0)
-        self.assertFalse(attrs.has_key((ns_uri, "attr")))
-        self.assertEqual(attrs.keys(), [])
-        self.assertEqual(attrs.get((ns_uri, "attr")), None)
-        self.assertEqual(attrs.get((ns_uri, "attr"), 25), 25)
-        self.assertEqual(attrs.items(), [])
-        self.assertEqual(attrs.values(), [])
-
-    def verify_attrs_wattr(self, attrs):
-        self.assertEqual(attrs.getLength(), 1)
-        self.assertEqual(attrs.getNames(), ["attr"])
-        self.assertEqual(attrs.getQNames(), ["attr"])
-        self.assertEqual(len(attrs), 1)
-        self.assertTrue(attrs.has_key("attr"))
-        self.assertEqual(attrs.keys(), ["attr"])
-        self.assertEqual(attrs.get("attr"), "val")
-        self.assertEqual(attrs.get("attr", 25), "val")
-        self.assertEqual(attrs.items(), [("attr", "val")])
-        self.assertEqual(attrs.values(), ["val"])
-        self.assertEqual(attrs.getValue("attr"), "val")
-        self.assertEqual(attrs.getValueByQName("attr"), "val")
-        self.assertEqual(attrs.getNameByQName("attr"), "attr")
-        self.assertEqual(attrs["attr"], "val")
-        self.assertEqual(attrs.getQNameByName("attr"), "attr")
-
-class MakeParserTest(unittest.TestCase):
-    def test_make_parser2(self):
-        # Creating parsers several times in a row should succeed.
-        # Testing this because there have been failures of this kind
-        # before.
-        from xml.sax import make_parser
-        p = make_parser()
-        from xml.sax import make_parser
-        p = make_parser()
-        from xml.sax import make_parser
-        p = make_parser()
-        from xml.sax import make_parser
-        p = make_parser()
-        from xml.sax import make_parser
-        p = make_parser()
-        from xml.sax import make_parser
-        p = make_parser()
-
-
-# ===========================================================================
-#
-#   saxutils tests
-#
-# ===========================================================================
-
-class SaxutilsTest(unittest.TestCase):
-    # ===== escape
-    def test_escape_basic(self):
-        self.assertEqual(escape("Donald Duck & Co"), "Donald Duck &amp; Co")
-
-    def test_escape_all(self):
-        self.assertEqual(escape("<Donald Duck & Co>"),
-                         "&lt;Donald Duck &amp; Co&gt;")
-
-    def test_escape_extra(self):
-        self.assertEqual(escape("Hei på deg", {"å" : "&aring;"}),
-                         "Hei p&aring; deg")
-
-    # ===== unescape
-    def test_unescape_basic(self):
-        self.assertEqual(unescape("Donald Duck &amp; Co"), "Donald Duck & Co")
-
-    def test_unescape_all(self):
-        self.assertEqual(unescape("&lt;Donald Duck &amp; Co&gt;"),
-                         "<Donald Duck & Co>")
-
-    def test_unescape_extra(self):
-        self.assertEqual(unescape("Hei på deg", {"å" : "&aring;"}),
-                         "Hei p&aring; deg")
-
-    def test_unescape_amp_extra(self):
-        self.assertEqual(unescape("&amp;foo;", {"&foo;": "splat"}), "&foo;")
-
-    # ===== quoteattr
-    def test_quoteattr_basic(self):
-        self.assertEqual(quoteattr("Donald Duck & Co"),
-                         '"Donald Duck &amp; Co"')
-
-    def test_single_quoteattr(self):
-        self.assertEqual(quoteattr('Includes "double" quotes'),
-                         '\'Includes "double" quotes\'')
-
-    def test_double_quoteattr(self):
-        self.assertEqual(quoteattr("Includes 'single' quotes"),
-                         "\"Includes 'single' quotes\"")
-
-    def test_single_double_quoteattr(self):
-        self.assertEqual(quoteattr("Includes 'single' and \"double\" quotes"),
-                         "\"Includes 'single' and &quot;double&quot; quotes\"")
-
-    # ===== make_parser
-    def test_make_parser(self):
-        # Creating a parser should succeed - it should fall back
-        # to the expatreader
-        p = make_parser(['xml.parsers.no_such_parser'])
-
-
-# ===== XMLGenerator
-
-start = '<?xml version="1.0" encoding="iso-8859-1"?>\n'
-
-class XmlgenTest(unittest.TestCase):
-    def test_xmlgen_basic(self):
-        result = StringIO()
-        gen = XMLGenerator(result)
-        gen.startDocument()
-        gen.startElement("doc", {})
-        gen.endElement("doc")
-        gen.endDocument()
-
-        self.assertEqual(result.getvalue(), start + "<doc></doc>")
-
-    def test_xmlgen_content(self):
-        result = StringIO()
-        gen = XMLGenerator(result)
-
-        gen.startDocument()
-        gen.startElement("doc", {})
-        gen.characters("huhei")
-        gen.endElement("doc")
-        gen.endDocument()
-
-        self.assertEqual(result.getvalue(), start + "<doc>huhei</doc>")
-
-    def test_xmlgen_pi(self):
-        result = StringIO()
-        gen = XMLGenerator(result)
-
-        gen.startDocument()
-        gen.processingInstruction("test", "data")
-        gen.startElement("doc", {})
-        gen.endElement("doc")
-        gen.endDocument()
-
-        self.assertEqual(result.getvalue(), start + "<?test data?><doc></doc>")
-
-    def test_xmlgen_content_escape(self):
-        result = StringIO()
-        gen = XMLGenerator(result)
-
-        gen.startDocument()
-        gen.startElement("doc", {})
-        gen.characters("<huhei&")
-        gen.endElement("doc")
-        gen.endDocument()
-
-        self.assertEqual(result.getvalue(),
-            start + "<doc>&lt;huhei&amp;</doc>")
-
-    def test_xmlgen_attr_escape(self):
-        result = StringIO()
-        gen = XMLGenerator(result)
-
-        gen.startDocument()
-        gen.startElement("doc", {"a": '"'})
-        gen.startElement("e", {"a": "'"})
-        gen.endElement("e")
-        gen.startElement("e", {"a": "'\""})
-        gen.endElement("e")
-        gen.startElement("e", {"a": "\n\r\t"})
-        gen.endElement("e")
-        gen.endElement("doc")
-        gen.endDocument()
-
-        self.assertEqual(result.getvalue(), start +
-            ("<doc a='\"'><e a=\"'\"></e>"
-             "<e a=\"'&quot;\"></e>"
-             "<e a=\"&#10;&#13;&#9;\"></e></doc>"))
-
-    def test_xmlgen_ignorable(self):
-        result = StringIO()
-        gen = XMLGenerator(result)
-
-        gen.startDocument()
-        gen.startElement("doc", {})
-        gen.ignorableWhitespace(" ")
-        gen.endElement("doc")
-        gen.endDocument()
-
-        self.assertEqual(result.getvalue(), start + "<doc> </doc>")
-
-    def test_xmlgen_ns(self):
-        result = StringIO()
-        gen = XMLGenerator(result)
-
-        gen.startDocument()
-        gen.startPrefixMapping("ns1", ns_uri)
-        gen.startElementNS((ns_uri, "doc"), "ns1:doc", {})
-        # add an unqualified name
-        gen.startElementNS((None, "udoc"), None, {})
-        gen.endElementNS((None, "udoc"), None)
-        gen.endElementNS((ns_uri, "doc"), "ns1:doc")
-        gen.endPrefixMapping("ns1")
-        gen.endDocument()
-
-        self.assertEqual(result.getvalue(), start + \
-           ('<ns1:doc xmlns:ns1="%s"><udoc></udoc></ns1:doc>' %
-                                         ns_uri))
-
-    def test_1463026_1(self):
-        result = StringIO()
-        gen = XMLGenerator(result)
-
-        gen.startDocument()
-        gen.startElementNS((None, 'a'), 'a', {(None, 'b'):'c'})
-        gen.endElementNS((None, 'a'), 'a')
-        gen.endDocument()
-
-        self.assertEqual(result.getvalue(), start+'<a b="c"></a>')
-
-    def test_1463026_2(self):
-        result = StringIO()
-        gen = XMLGenerator(result)
-
-        gen.startDocument()
-        gen.startPrefixMapping(None, 'qux')
-        gen.startElementNS(('qux', 'a'), 'a', {})
-        gen.endElementNS(('qux', 'a'), 'a')
-        gen.endPrefixMapping(None)
-        gen.endDocument()
-
-        self.assertEqual(result.getvalue(), start+'<a xmlns="qux"></a>')
-
-    def test_1463026_3(self):
-        result = StringIO()
-        gen = XMLGenerator(result)
-
-        gen.startDocument()
-        gen.startPrefixMapping('my', 'qux')
-        gen.startElementNS(('qux', 'a'), 'a', {(None, 'b'):'c'})
-        gen.endElementNS(('qux', 'a'), 'a')
-        gen.endPrefixMapping('my')
-        gen.endDocument()
-
-        self.assertEqual(result.getvalue(),
-            start+'<my:a xmlns:my="qux" b="c"></my:a>')
-
-    def test_5027_1(self):
-        # The xml prefix (as in xml:lang below) is reserved and bound by
-        # definition to http://www.w3.org/XML/1998/namespace.  XMLGenerator had
-        # a bug whereby a KeyError is thrown because this namespace is missing
-        # from a dictionary.
-        #
-        # This test demonstrates the bug by parsing a document.
-        test_xml = StringIO(
-            '<?xml version="1.0"?>'
-            '<a:g1 xmlns:a="http://example.com/ns">'
-             '<a:g2 xml:lang="en">Hello</a:g2>'
-            '</a:g1>')
-
-        parser = make_parser()
-        parser.setFeature(feature_namespaces, True)
-        result = StringIO()
-        gen = XMLGenerator(result)
-        parser.setContentHandler(gen)
-        parser.parse(test_xml)
-
-        self.assertEqual(result.getvalue(),
-                         start + (
-                         '<a:g1 xmlns:a="http://example.com/ns">'
-                          '<a:g2 xml:lang="en">Hello</a:g2>'
-                         '</a:g1>'))
-
-    def test_5027_2(self):
-        # The xml prefix (as in xml:lang below) is reserved and bound by
-        # definition to http://www.w3.org/XML/1998/namespace.  XMLGenerator had
-        # a bug whereby a KeyError is thrown because this namespace is missing
-        # from a dictionary.
-        #
-        # This test demonstrates the bug by direct manipulation of the
-        # XMLGenerator.
-        result = StringIO()
-        gen = XMLGenerator(result)
-
-        gen.startDocument()
-        gen.startPrefixMapping('a', 'http://example.com/ns')
-        gen.startElementNS(('http://example.com/ns', 'g1'), 'g1', {})
-        lang_attr = {('http://www.w3.org/XML/1998/namespace', 'lang'): 'en'}
-        gen.startElementNS(('http://example.com/ns', 'g2'), 'g2', lang_attr)
-        gen.characters('Hello')
-        gen.endElementNS(('http://example.com/ns', 'g2'), 'g2')
-        gen.endElementNS(('http://example.com/ns', 'g1'), 'g1')
-        gen.endPrefixMapping('a')
-        gen.endDocument()
-
-        self.assertEqual(result.getvalue(),
-                         start + (
-                         '<a:g1 xmlns:a="http://example.com/ns">'
-                          '<a:g2 xml:lang="en">Hello</a:g2>'
-                         '</a:g1>'))
-
-
-class XMLFilterBaseTest(unittest.TestCase):
-    def test_filter_basic(self):
-        result = StringIO()
-        gen = XMLGenerator(result)
-        filter = XMLFilterBase()
-        filter.setContentHandler(gen)
-
-        filter.startDocument()
-        filter.startElement("doc", {})
-        filter.characters("content")
-        filter.ignorableWhitespace(" ")
-        filter.endElement("doc")
-        filter.endDocument()
-
-        self.assertEqual(result.getvalue(), start + "<doc>content </doc>")
-
-# ===========================================================================
-#
-#   expatreader tests
-#
-# ===========================================================================
-
-xml_test_out = open(TEST_XMLFILE_OUT).read()
-
-class ExpatReaderTest(XmlTestBase):
-
-    # ===== XMLReader support
-
-    def test_expat_file(self):
-        parser = create_parser()
-        result = StringIO()
-        xmlgen = XMLGenerator(result)
-
-        parser.setContentHandler(xmlgen)
-        parser.parse(open(TEST_XMLFILE))
-
-        self.assertEqual(result.getvalue(), xml_test_out)
-
-    # ===== DTDHandler support
-
-    class TestDTDHandler:
-
-        def __init__(self):
-            self._notations = []
-            self._entities  = []
-
-        def notationDecl(self, name, publicId, systemId):
-            self._notations.append((name, publicId, systemId))
-
-        def unparsedEntityDecl(self, name, publicId, systemId, ndata):
-            self._entities.append((name, publicId, systemId, ndata))
-
-    def test_expat_dtdhandler(self):
-        parser = create_parser()
-        handler = self.TestDTDHandler()
-        parser.setDTDHandler(handler)
-
-        parser.feed('<!DOCTYPE doc [\n')
-        parser.feed('  <!ENTITY img SYSTEM "expat.gif" NDATA GIF>\n')
-        parser.feed('  <!NOTATION GIF PUBLIC "-//CompuServe//NOTATION Graphics Interchange Format 89a//EN">\n')
-        parser.feed(']>\n')
-        parser.feed('<doc></doc>')
-        parser.close()
-
-        self.assertEqual(handler._notations,
-            [("GIF", "-//CompuServe//NOTATION Graphics Interchange Format 89a//EN", None)])
-        self.assertEqual(handler._entities, [("img", None, "expat.gif", "GIF")])
-
-    # ===== EntityResolver support
-
-    class TestEntityResolver:
-
-        def resolveEntity(self, publicId, systemId):
-            inpsrc = InputSource()
-            inpsrc.setByteStream(StringIO("<entity/>"))
-            return inpsrc
-
-    def test_expat_entityresolver(self):
-        parser = create_parser()
-        parser.setEntityResolver(self.TestEntityResolver())
-        result = StringIO()
-        parser.setContentHandler(XMLGenerator(result))
-
-        parser.feed('<!DOCTYPE doc [\n')
-        parser.feed('  <!ENTITY test SYSTEM "whatever">\n')
-        parser.feed(']>\n')
-        parser.feed('<doc>&test;</doc>')
-        parser.close()
-
-        self.assertEqual(result.getvalue(), start +
-                         "<doc><entity></entity></doc>")
-
-    # ===== Attributes support
-
-    class AttrGatherer(ContentHandler):
-
-        def startElement(self, name, attrs):
-            self._attrs = attrs
-
-        def startElementNS(self, name, qname, attrs):
-            self._attrs = attrs
-
-    def test_expat_attrs_empty(self):
-        parser = create_parser()
-        gather = self.AttrGatherer()
-        parser.setContentHandler(gather)
-
-        parser.feed("<doc/>")
-        parser.close()
-
-        self.verify_empty_attrs(gather._attrs)
-
-    def test_expat_attrs_wattr(self):
-        parser = create_parser()
-        gather = self.AttrGatherer()
-        parser.setContentHandler(gather)
-
-        parser.feed("<doc attr='val'/>")
-        parser.close()
-
-        self.verify_attrs_wattr(gather._attrs)
-
-    def test_expat_nsattrs_empty(self):
-        parser = create_parser(1)
-        gather = self.AttrGatherer()
-        parser.setContentHandler(gather)
-
-        parser.feed("<doc/>")
-        parser.close()
-
-        self.verify_empty_nsattrs(gather._attrs)
-
-    def test_expat_nsattrs_wattr(self):
-        parser = create_parser(1)
-        gather = self.AttrGatherer()
-        parser.setContentHandler(gather)
-
-        parser.feed("<doc xmlns:ns='%s' ns:attr='val'/>" % ns_uri)
-        parser.close()
-
-        attrs = gather._attrs
-
-        self.assertEqual(attrs.getLength(), 1)
-        self.assertEqual(attrs.getNames(), [(ns_uri, "attr")])
-        self.assertTrue((attrs.getQNames() == [] or
-                         attrs.getQNames() == ["ns:attr"]))
-        self.assertEqual(len(attrs), 1)
-        self.assertTrue(attrs.has_key((ns_uri, "attr")))
-        self.assertEqual(attrs.get((ns_uri, "attr")), "val")
-        self.assertEqual(attrs.get((ns_uri, "attr"), 25), "val")
-        self.assertEqual(attrs.items(), [((ns_uri, "attr"), "val")])
-        self.assertEqual(attrs.values(), ["val"])
-        self.assertEqual(attrs.getValue((ns_uri, "attr")), "val")
-        self.assertEqual(attrs[(ns_uri, "attr")], "val")
-
-    # ===== InputSource support
-
-    def test_expat_inpsource_filename(self):
-        parser = create_parser()
-        result = StringIO()
-        xmlgen = XMLGenerator(result)
-
-        parser.setContentHandler(xmlgen)
-        parser.parse(TEST_XMLFILE)
-
-        self.assertEqual(result.getvalue(), xml_test_out)
-
-    def test_expat_inpsource_sysid(self):
-        parser = create_parser()
-        result = StringIO()
-        xmlgen = XMLGenerator(result)
-
-        parser.setContentHandler(xmlgen)
-        parser.parse(InputSource(TEST_XMLFILE))
-
-        self.assertEqual(result.getvalue(), xml_test_out)
-
-    def test_expat_inpsource_stream(self):
-        parser = create_parser()
-        result = StringIO()
-        xmlgen = XMLGenerator(result)
-
-        parser.setContentHandler(xmlgen)
-        inpsrc = InputSource()
-        inpsrc.setByteStream(open(TEST_XMLFILE))
-        parser.parse(inpsrc)
-
-        self.assertEqual(result.getvalue(), xml_test_out)
-
-    # ===== IncrementalParser support
-
-    def test_expat_incremental(self):
-        result = StringIO()
-        xmlgen = XMLGenerator(result)
-        parser = create_parser()
-        parser.setContentHandler(xmlgen)
-
-        parser.feed("<doc>")
-        parser.feed("</doc>")
-        parser.close()
-
-        self.assertEqual(result.getvalue(), start + "<doc></doc>")
-
-    def test_expat_incremental_reset(self):
-        result = StringIO()
-        xmlgen = XMLGenerator(result)
-        parser = create_parser()
-        parser.setContentHandler(xmlgen)
-
-        parser.feed("<doc>")
-        parser.feed("text")
-
-        result = StringIO()
-        xmlgen = XMLGenerator(result)
-        parser.setContentHandler(xmlgen)
-        parser.reset()
-
-        parser.feed("<doc>")
-        parser.feed("text")
-        parser.feed("</doc>")
-        parser.close()
-
-        self.assertEqual(result.getvalue(), start + "<doc>text</doc>")
-
-    # ===== Locator support
-
-    def test_expat_locator_noinfo(self):
-        result = StringIO()
-        xmlgen = XMLGenerator(result)
-        parser = create_parser()
-        parser.setContentHandler(xmlgen)
-
-        parser.feed("<doc>")
-        parser.feed("</doc>")
-        parser.close()
-
-        self.assertEqual(parser.getSystemId(), None)
-        self.assertEqual(parser.getPublicId(), None)
-        self.assertEqual(parser.getLineNumber(), 1)
-
-    def test_expat_locator_withinfo(self):
-        result = StringIO()
-        xmlgen = XMLGenerator(result)
-        parser = create_parser()
-        parser.setContentHandler(xmlgen)
-        parser.parse(TEST_XMLFILE)
-
-        self.assertEqual(parser.getSystemId(), TEST_XMLFILE)
-        self.assertEqual(parser.getPublicId(), None)
-
-
-# ===========================================================================
-#
-#   error reporting
-#
-# ===========================================================================
-
-class ErrorReportingTest(unittest.TestCase):
-    def test_expat_inpsource_location(self):
-        parser = create_parser()
-        parser.setContentHandler(ContentHandler()) # do nothing
-        source = InputSource()
-        source.setByteStream(StringIO("<foo bar foobar>"))   #ill-formed
-        name = "a file name"
-        source.setSystemId(name)
-        try:
-            parser.parse(source)
-            self.fail()
-        except SAXException, e:
-            self.assertEqual(e.getSystemId(), name)
-
-    def test_expat_incomplete(self):
-        parser = create_parser()
-        parser.setContentHandler(ContentHandler()) # do nothing
-        self.assertRaises(SAXParseException, parser.parse, StringIO("<foo>"))
-
-    def test_sax_parse_exception_str(self):
-        # pass various values from a locator to the SAXParseException to
-        # make sure that the __str__() doesn't fall apart when None is
-        # passed instead of an integer line and column number
-        #
-        # use "normal" values for the locator:
-        str(SAXParseException("message", None,
-                              self.DummyLocator(1, 1)))
-        # use None for the line number:
-        str(SAXParseException("message", None,
-                              self.DummyLocator(None, 1)))
-        # use None for the column number:
-        str(SAXParseException("message", None,
-                              self.DummyLocator(1, None)))
-        # use None for both:
-        str(SAXParseException("message", None,
-                              self.DummyLocator(None, None)))
-
-    class DummyLocator:
-        def __init__(self, lineno, colno):
-            self._lineno = lineno
-            self._colno = colno
-
-        def getPublicId(self):
-            return "pubid"
-
-        def getSystemId(self):
-            return "sysid"
-
-        def getLineNumber(self):
-            return self._lineno
-
-        def getColumnNumber(self):
-            return self._colno
-
-# ===========================================================================
-#
-#   xmlreader tests
-#
-# ===========================================================================
-
-class XmlReaderTest(XmlTestBase):
-
-    # ===== AttributesImpl
-    def test_attrs_empty(self):
-        self.verify_empty_attrs(AttributesImpl({}))
-
-    def test_attrs_wattr(self):
-        self.verify_attrs_wattr(AttributesImpl({"attr" : "val"}))
-
-    def test_nsattrs_empty(self):
-        self.verify_empty_nsattrs(AttributesNSImpl({}, {}))
-
-    def test_nsattrs_wattr(self):
-        attrs = AttributesNSImpl({(ns_uri, "attr") : "val"},
-                                 {(ns_uri, "attr") : "ns:attr"})
-
-        self.assertEqual(attrs.getLength(), 1)
-        self.assertEqual(attrs.getNames(), [(ns_uri, "attr")])
-        self.assertEqual(attrs.getQNames(), ["ns:attr"])
-        self.assertEqual(len(attrs), 1)
-        self.assertTrue(attrs.has_key((ns_uri, "attr")))
-        self.assertEqual(attrs.keys(), [(ns_uri, "attr")])
-        self.assertEqual(attrs.get((ns_uri, "attr")), "val")
-        self.assertEqual(attrs.get((ns_uri, "attr"), 25), "val")
-        self.assertEqual(attrs.items(), [((ns_uri, "attr"), "val")])
-        self.assertEqual(attrs.values(), ["val"])
-        self.assertEqual(attrs.getValue((ns_uri, "attr")), "val")
-        self.assertEqual(attrs.getValueByQName("ns:attr"), "val")
-        self.assertEqual(attrs.getNameByQName("ns:attr"), (ns_uri, "attr"))
-        self.assertEqual(attrs[(ns_uri, "attr")], "val")
-        self.assertEqual(attrs.getQNameByName((ns_uri, "attr")), "ns:attr")
-
-
-    # During the development of Python 2.5, an attempt to move the "xml"
-    # package implementation to a new package ("xmlcore") proved painful.
-    # The goal of this change was to allow applications to be able to
-    # obtain and rely on behavior in the standard library implementation
-    # of the XML support without needing to be concerned about the
-    # availability of the PyXML implementation.
-    #
-    # While the existing import hackery in Lib/xml/__init__.py can cause
-    # PyXML's _xmlpus package to supplant the "xml" package, that only
-    # works because either implementation uses the "xml" package name for
-    # imports.
-    #
-    # The move resulted in a number of problems related to the fact that
-    # the import machinery's "package context" is based on the name that's
-    # being imported rather than the __name__ of the actual package
-    # containment; it wasn't possible for the "xml" package to be replaced
-    # by a simple module that indirected imports to the "xmlcore" package.
-    #
-    # The following two tests exercised bugs that were introduced in that
-    # attempt.  Keeping these tests around will help detect problems with
-    # other attempts to provide reliable access to the standard library's
-    # implementation of the XML support.
-
-    def test_sf_1511497(self):
-        # Bug report: http://www.python.org/sf/1511497
-        import sys
-        old_modules = sys.modules.copy()
-        for modname in sys.modules.keys():
-            if modname.startswith("xml."):
-                del sys.modules[modname]
-        try:
-            import xml.sax.expatreader
-            module = xml.sax.expatreader
-            self.assertEqual(module.__name__, "xml.sax.expatreader")
-        finally:
-            sys.modules.update(old_modules)
-
-    def test_sf_1513611(self):
-        # Bug report: http://www.python.org/sf/1513611
-        sio = StringIO("invalid")
-        parser = make_parser()
-        from xml.sax import SAXParseException
-        self.assertRaises(SAXParseException, parser.parse, sio)
-
-
-def test_main():
-    run_unittest(MakeParserTest,
-                 SaxutilsTest,
-                 XmlgenTest,
-                 ExpatReaderTest,
-                 ErrorReportingTest,
-                 XmlReaderTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_scope.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_scope.py
deleted file mode 100644
index 8488993..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_scope.py
+++ /dev/null
@@ -1,664 +0,0 @@
-import unittest
-from test.test_support import check_syntax_error, check_py3k_warnings, \
-                              check_warnings, run_unittest
-
-
-class ScopeTests(unittest.TestCase):
-
-    def testSimpleNesting(self):
-
-        def make_adder(x):
-            def adder(y):
-                return x + y
-            return adder
-
-        inc = make_adder(1)
-        plus10 = make_adder(10)
-
-        self.assertEqual(inc(1), 2)
-        self.assertEqual(plus10(-2), 8)
-
-    def testExtraNesting(self):
-
-        def make_adder2(x):
-            def extra(): # check freevars passing through non-use scopes
-                def adder(y):
-                    return x + y
-                return adder
-            return extra()
-
-        inc = make_adder2(1)
-        plus10 = make_adder2(10)
-
-        self.assertEqual(inc(1), 2)
-        self.assertEqual(plus10(-2), 8)
-
-    def testSimpleAndRebinding(self):
-
-        def make_adder3(x):
-            def adder(y):
-                return x + y
-            x = x + 1 # check tracking of assignment to x in defining scope
-            return adder
-
-        inc = make_adder3(0)
-        plus10 = make_adder3(9)
-
-        self.assertEqual(inc(1), 2)
-        self.assertEqual(plus10(-2), 8)
-
-    def testNestingGlobalNoFree(self):
-
-        def make_adder4(): # XXX add exta level of indirection
-            def nest():
-                def nest():
-                    def adder(y):
-                        return global_x + y # check that plain old globals work
-                    return adder
-                return nest()
-            return nest()
-
-        global_x = 1
-        adder = make_adder4()
-        self.assertEqual(adder(1), 2)
-
-        global_x = 10
-        self.assertEqual(adder(-2), 8)
-
-    def testNestingThroughClass(self):
-
-        def make_adder5(x):
-            class Adder:
-                def __call__(self, y):
-                    return x + y
-            return Adder()
-
-        inc = make_adder5(1)
-        plus10 = make_adder5(10)
-
-        self.assertEqual(inc(1), 2)
-        self.assertEqual(plus10(-2), 8)
-
-    def testNestingPlusFreeRefToGlobal(self):
-
-        def make_adder6(x):
-            global global_nest_x
-            def adder(y):
-                return global_nest_x + y
-            global_nest_x = x
-            return adder
-
-        inc = make_adder6(1)
-        plus10 = make_adder6(10)
-
-        self.assertEqual(inc(1), 11) # there's only one global
-        self.assertEqual(plus10(-2), 8)
-
-    def testNearestEnclosingScope(self):
-
-        def f(x):
-            def g(y):
-                x = 42 # check that this masks binding in f()
-                def h(z):
-                    return x + z
-                return h
-            return g(2)
-
-        test_func = f(10)
-        self.assertEqual(test_func(5), 47)
-
-    def testMixedFreevarsAndCellvars(self):
-
-        def identity(x):
-            return x
-
-        def f(x, y, z):
-            def g(a, b, c):
-                a = a + x # 3
-                def h():
-                    # z * (4 + 9)
-                    # 3 * 13
-                    return identity(z * (b + y))
-                y = c + z # 9
-                return h
-            return g
-
-        g = f(1, 2, 3)
-        h = g(2, 4, 6)
-        self.assertEqual(h(), 39)
-
-    def testFreeVarInMethod(self):
-
-        def test():
-            method_and_var = "var"
-            class Test:
-                def method_and_var(self):
-                    return "method"
-                def test(self):
-                    return method_and_var
-                def actual_global(self):
-                    return str("global")
-                def str(self):
-                    return str(self)
-            return Test()
-
-        t = test()
-        self.assertEqual(t.test(), "var")
-        self.assertEqual(t.method_and_var(), "method")
-        self.assertEqual(t.actual_global(), "global")
-
-        method_and_var = "var"
-        class Test:
-            # this class is not nested, so the rules are different
-            def method_and_var(self):
-                return "method"
-            def test(self):
-                return method_and_var
-            def actual_global(self):
-                return str("global")
-            def str(self):
-                return str(self)
-
-        t = Test()
-        self.assertEqual(t.test(), "var")
-        self.assertEqual(t.method_and_var(), "method")
-        self.assertEqual(t.actual_global(), "global")
-
-    def testRecursion(self):
-
-        def f(x):
-            def fact(n):
-                if n == 0:
-                    return 1
-                else:
-                    return n * fact(n - 1)
-            if x >= 0:
-                return fact(x)
-            else:
-                raise ValueError, "x must be >= 0"
-
-        self.assertEqual(f(6), 720)
-
-
-    def testUnoptimizedNamespaces(self):
-
-        check_syntax_error(self, """\
-def unoptimized_clash1(strip):
-    def f(s):
-        from string import *
-        return strip(s) # ambiguity: free or local
-    return f
-""")
-
-        check_syntax_error(self, """\
-def unoptimized_clash2():
-    from string import *
-    def f(s):
-        return strip(s) # ambiguity: global or local
-    return f
-""")
-
-        check_syntax_error(self, """\
-def unoptimized_clash2():
-    from string import *
-    def g():
-        def f(s):
-            return strip(s) # ambiguity: global or local
-        return f
-""")
-
-        # XXX could allow this for exec with const argument, but what's the point
-        check_syntax_error(self, """\
-def error(y):
-    exec "a = 1"
-    def f(x):
-        return x + y
-    return f
-""")
-
-        check_syntax_error(self, """\
-def f(x):
-    def g():
-        return x
-    del x # can't del name
-""")
-
-        check_syntax_error(self, """\
-def f():
-    def g():
-        from string import *
-        return strip # global or local?
-""")
-
-        # and verify a few cases that should work
-
-        exec """
-def noproblem1():
-    from string import *
-    f = lambda x:x
-
-def noproblem2():
-    from string import *
-    def f(x):
-        return x + 1
-
-def noproblem3():
-    from string import *
-    def f(x):
-        global y
-        y = x
-"""
-
-    def testLambdas(self):
-
-        f1 = lambda x: lambda y: x + y
-        inc = f1(1)
-        plus10 = f1(10)
-        self.assertEqual(inc(1), 2)
-        self.assertEqual(plus10(5), 15)
-
-        f2 = lambda x: (lambda : lambda y: x + y)()
-        inc = f2(1)
-        plus10 = f2(10)
-        self.assertEqual(inc(1), 2)
-        self.assertEqual(plus10(5), 15)
-
-        f3 = lambda x: lambda y: global_x + y
-        global_x = 1
-        inc = f3(None)
-        self.assertEqual(inc(2), 3)
-
-        f8 = lambda x, y, z: lambda a, b, c: lambda : z * (b + y)
-        g = f8(1, 2, 3)
-        h = g(2, 4, 6)
-        self.assertEqual(h(), 18)
-
-    def testUnboundLocal(self):
-
-        def errorInOuter():
-            print y
-            def inner():
-                return y
-            y = 1
-
-        def errorInInner():
-            def inner():
-                return y
-            inner()
-            y = 1
-
-        self.assertRaises(UnboundLocalError, errorInOuter)
-        self.assertRaises(NameError, errorInInner)
-
-        # test for bug #1501934: incorrect LOAD/STORE_GLOBAL generation
-        exec """
-global_x = 1
-def f():
-    global_x += 1
-try:
-    f()
-except UnboundLocalError:
-    pass
-else:
-    fail('scope of global_x not correctly determined')
-""" in {'fail': self.fail}
-
-    def testComplexDefinitions(self):
-
-        def makeReturner(*lst):
-            def returner():
-                return lst
-            return returner
-
-        self.assertEqual(makeReturner(1,2,3)(), (1,2,3))
-
-        def makeReturner2(**kwargs):
-            def returner():
-                return kwargs
-            return returner
-
-        self.assertEqual(makeReturner2(a=11)()['a'], 11)
-
-        with check_py3k_warnings(("tuple parameter unpacking has been removed",
-                                  SyntaxWarning)):
-            exec """\
-def makeAddPair((a, b)):
-    def addPair((c, d)):
-        return (a + c, b + d)
-    return addPair
-""" in locals()
-        self.assertEqual(makeAddPair((1, 2))((100, 200)), (101,202))
-
-    def testScopeOfGlobalStmt(self):
-# Examples posted by Samuele Pedroni to python-dev on 3/1/2001
-
-        exec """\
-# I
-x = 7
-def f():
-    x = 1
-    def g():
-        global x
-        def i():
-            def h():
-                return x
-            return h()
-        return i()
-    return g()
-self.assertEqual(f(), 7)
-self.assertEqual(x, 7)
-
-# II
-x = 7
-def f():
-    x = 1
-    def g():
-        x = 2
-        def i():
-            def h():
-                return x
-            return h()
-        return i()
-    return g()
-self.assertEqual(f(), 2)
-self.assertEqual(x, 7)
-
-# III
-x = 7
-def f():
-    x = 1
-    def g():
-        global x
-        x = 2
-        def i():
-            def h():
-                return x
-            return h()
-        return i()
-    return g()
-self.assertEqual(f(), 2)
-self.assertEqual(x, 2)
-
-# IV
-x = 7
-def f():
-    x = 3
-    def g():
-        global x
-        x = 2
-        def i():
-            def h():
-                return x
-            return h()
-        return i()
-    return g()
-self.assertEqual(f(), 2)
-self.assertEqual(x, 2)
-
-# XXX what about global statements in class blocks?
-# do they affect methods?
-
-x = 12
-class Global:
-    global x
-    x = 13
-    def set(self, val):
-        x = val
-    def get(self):
-        return x
-
-g = Global()
-self.assertEqual(g.get(), 13)
-g.set(15)
-self.assertEqual(g.get(), 13)
-"""
-
-    def testLeaks(self):
-
-        class Foo:
-            count = 0
-
-            def __init__(self):
-                Foo.count += 1
-
-            def __del__(self):
-                Foo.count -= 1
-
-        def f1():
-            x = Foo()
-            def f2():
-                return x
-            f2()
-
-        for i in range(100):
-            f1()
-
-        self.assertEqual(Foo.count, 0)
-
-    def testClassAndGlobal(self):
-
-        exec """\
-def test(x):
-    class Foo:
-        global x
-        def __call__(self, y):
-            return x + y
-    return Foo()
-
-x = 0
-self.assertEqual(test(6)(2), 8)
-x = -1
-self.assertEqual(test(3)(2), 5)
-
-looked_up_by_load_name = False
-class X:
-    # Implicit globals inside classes are be looked up by LOAD_NAME, not
-    # LOAD_GLOBAL.
-    locals()['looked_up_by_load_name'] = True
-    passed = looked_up_by_load_name
-
-self.assertTrue(X.passed)
-"""
-
-    def testLocalsFunction(self):
-
-        def f(x):
-            def g(y):
-                def h(z):
-                    return y + z
-                w = x + y
-                y += 3
-                return locals()
-            return g
-
-        d = f(2)(4)
-        self.assertIn('h', d)
-        del d['h']
-        self.assertEqual(d, {'x': 2, 'y': 7, 'w': 6})
-
-    def testLocalsClass(self):
-        # This test verifies that calling locals() does not pollute
-        # the local namespace of the class with free variables.  Old
-        # versions of Python had a bug, where a free variable being
-        # passed through a class namespace would be inserted into
-        # locals() by locals() or exec or a trace function.
-        #
-        # The real bug lies in frame code that copies variables
-        # between fast locals and the locals dict, e.g. when executing
-        # a trace function.
-
-        def f(x):
-            class C:
-                x = 12
-                def m(self):
-                    return x
-                locals()
-            return C
-
-        self.assertEqual(f(1).x, 12)
-
-        def f(x):
-            class C:
-                y = x
-                def m(self):
-                    return x
-                z = list(locals())
-            return C
-
-        varnames = f(1).z
-        self.assertNotIn("x", varnames)
-        self.assertIn("y", varnames)
-
-    def testLocalsClass_WithTrace(self):
-        # Issue23728: after the trace function returns, the locals()
-        # dictionary is used to update all variables, this used to
-        # include free variables. But in class statements, free
-        # variables are not inserted...
-        import sys
-        sys.settrace(lambda a,b,c:None)
-        try:
-            x = 12
-
-            class C:
-                def f(self):
-                    return x
-
-            self.assertEqual(x, 12) # Used to raise UnboundLocalError
-        finally:
-            sys.settrace(None)
-
-    def testBoundAndFree(self):
-        # var is bound and free in class
-
-        def f(x):
-            class C:
-                def m(self):
-                    return x
-                a = x
-            return C
-
-        inst = f(3)()
-        self.assertEqual(inst.a, inst.m())
-
-    def testInteractionWithTraceFunc(self):
-
-        import sys
-        def tracer(a,b,c):
-            return tracer
-
-        def adaptgetter(name, klass, getter):
-            kind, des = getter
-            if kind == 1:       # AV happens when stepping from this line to next
-                if des == "":
-                    des = "_%s__%s" % (klass.__name__, name)
-                return lambda obj: getattr(obj, des)
-
-        class TestClass:
-            pass
-
-        sys.settrace(tracer)
-        adaptgetter("foo", TestClass, (1, ""))
-        sys.settrace(None)
-
-        self.assertRaises(TypeError, sys.settrace)
-
-    def testEvalExecFreeVars(self):
-
-        def f(x):
-            return lambda: x + 1
-
-        g = f(3)
-        self.assertRaises(TypeError, eval, g.func_code)
-
-        try:
-            exec g.func_code in {}
-        except TypeError:
-            pass
-        else:
-            self.fail("exec should have failed, because code contained free vars")
-
-    def testListCompLocalVars(self):
-
-        try:
-            print bad
-        except NameError:
-            pass
-        else:
-            print "bad should not be defined"
-
-        def x():
-            [bad for s in 'a b' for bad in s.split()]
-
-        x()
-        try:
-            print bad
-        except NameError:
-            pass
-
-    def testEvalFreeVars(self):
-
-        def f(x):
-            def g():
-                x
-                eval("x + 1")
-            return g
-
-        f(4)()
-
-    def testFreeingCell(self):
-        # Test what happens when a finalizer accesses
-        # the cell where the object was stored.
-        class Special:
-            def __del__(self):
-                nestedcell_get()
-
-        def f():
-            global nestedcell_get
-            def nestedcell_get():
-                return c
-
-            c = (Special(),)
-            c = 2
-
-        f() # used to crash the interpreter...
-
-    def testGlobalInParallelNestedFunctions(self):
-        # A symbol table bug leaked the global statement from one
-        # function to other nested functions in the same block.
-        # This test verifies that a global statement in the first
-        # function does not affect the second function.
-        CODE = """def f():
-    y = 1
-    def g():
-        global y
-        return y
-    def h():
-        return y + 1
-    return g, h
-
-y = 9
-g, h = f()
-result9 = g()
-result2 = h()
-"""
-        local_ns = {}
-        global_ns = {}
-        exec CODE in local_ns, global_ns
-        self.assertEqual(2, global_ns["result2"])
-        self.assertEqual(9, global_ns["result9"])
-
-    def testTopIsNotSignificant(self):
-        # See #9997.
-        def top(a):
-            pass
-        def b():
-            global a
-
-
-def test_main():
-    with check_warnings(("import \* only allowed at module level",
-                         SyntaxWarning)):
-        run_unittest(ScopeTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_scriptpackages.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_scriptpackages.py
deleted file mode 100644
index 4077baf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_scriptpackages.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (C) 2003 Python Software Foundation
-
-import unittest
-from test import test_support
-
-# Skip this test if aetools does not exist.
-test_support.import_module('aetools')
-
-class TestScriptpackages(unittest.TestCase):
-
-    def _test_scriptpackage(self, package, testobject=1):
-        # Check that we can import the package
-        mod = __import__(package)
-        # Test that we can get the main event class
-        klass = getattr(mod, package)
-        # Test that we can instantiate that class
-        talker = klass()
-        if testobject:
-            # Test that we can get an application object
-            obj = mod.application(0)
-
-    def test__builtinSuites(self):
-        self._test_scriptpackage('_builtinSuites', testobject=0)
-
-    def test_StdSuites(self):
-        self._test_scriptpackage('StdSuites')
-
-    def test_SystemEvents(self):
-        self._test_scriptpackage('SystemEvents')
-
-    def test_Finder(self):
-        self._test_scriptpackage('Finder')
-
-    def test_Terminal(self):
-        self._test_scriptpackage('Terminal')
-
-    def test_Netscape(self):
-        self._test_scriptpackage('Netscape')
-
-    def test_Explorer(self):
-        self._test_scriptpackage('Explorer')
-
-    def test_CodeWarrior(self):
-        self._test_scriptpackage('CodeWarrior')
-
-def test_main():
-    test_support.run_unittest(TestScriptpackages)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_select.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_select.py
deleted file mode 100644
index 00bebc5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_select.py
+++ /dev/null
@@ -1,58 +0,0 @@
-from test import test_support
-import unittest
-import select
-import os
-import sys
-
-@unittest.skipIf(sys.platform[:3] in ('win', 'os2', 'riscos'),
-                 "can't easily test on this system")
-class SelectTestCase(unittest.TestCase):
-
-    class Nope:
-        pass
-
-    class Almost:
-        def fileno(self):
-            return 'fileno'
-
-    def test_error_conditions(self):
-        self.assertRaises(TypeError, select.select, 1, 2, 3)
-        self.assertRaises(TypeError, select.select, [self.Nope()], [], [])
-        self.assertRaises(TypeError, select.select, [self.Almost()], [], [])
-        self.assertRaises(TypeError, select.select, [], [], [], "not a number")
-
-    def test_returned_list_identity(self):
-        # See issue #8329
-        r, w, x = select.select([], [], [], 1)
-        self.assertIsNot(r, w)
-        self.assertIsNot(r, x)
-        self.assertIsNot(w, x)
-
-    def test_select(self):
-        cmd = 'for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; done'
-        p = os.popen(cmd, 'r')
-        for tout in (0, 1, 2, 4, 8, 16) + (None,)*10:
-            if test_support.verbose:
-                print 'timeout =', tout
-            rfd, wfd, xfd = select.select([p], [], [], tout)
-            if (rfd, wfd, xfd) == ([], [], []):
-                continue
-            if (rfd, wfd, xfd) == ([p], [], []):
-                line = p.readline()
-                if test_support.verbose:
-                    print repr(line)
-                if not line:
-                    if test_support.verbose:
-                        print 'EOF'
-                    break
-                continue
-            self.fail('Unexpected return values from select():', rfd, wfd, xfd)
-        p.close()
-
-
-def test_main():
-    test_support.run_unittest(SelectTestCase)
-    test_support.reap_children()
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_set.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_set.py
deleted file mode 100644
index 4839a1b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_set.py
+++ /dev/null
@@ -1,1781 +0,0 @@
-
-import unittest
-from test import test_support
-import gc
-import weakref
-import operator
-import copy
-import pickle
-from random import randrange, shuffle
-import sys
-import collections
-
-class PassThru(Exception):
-    pass
-
-def check_pass_thru():
-    raise PassThru
-    yield 1
-
-class BadCmp:
-    def __hash__(self):
-        return 1
-    def __cmp__(self, other):
-        raise RuntimeError
-
-class ReprWrapper:
-    'Used to test self-referential repr() calls'
-    def __repr__(self):
-        return repr(self.value)
-
-class HashCountingInt(int):
-    'int-like object that counts the number of times __hash__ is called'
-    def __init__(self, *args):
-        self.hash_count = 0
-    def __hash__(self):
-        self.hash_count += 1
-        return int.__hash__(self)
-
-class TestJointOps(unittest.TestCase):
-    # Tests common to both set and frozenset
-
-    def setUp(self):
-        self.word = word = 'simsalabim'
-        self.otherword = 'madagascar'
-        self.letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
-        self.s = self.thetype(word)
-        self.d = dict.fromkeys(word)
-
-    def test_new_or_init(self):
-        self.assertRaises(TypeError, self.thetype, [], 2)
-        self.assertRaises(TypeError, set().__init__, a=1)
-
-    def test_uniquification(self):
-        actual = sorted(self.s)
-        expected = sorted(self.d)
-        self.assertEqual(actual, expected)
-        self.assertRaises(PassThru, self.thetype, check_pass_thru())
-        self.assertRaises(TypeError, self.thetype, [[]])
-
-    def test_len(self):
-        self.assertEqual(len(self.s), len(self.d))
-
-    def test_contains(self):
-        for c in self.letters:
-            self.assertEqual(c in self.s, c in self.d)
-        self.assertRaises(TypeError, self.s.__contains__, [[]])
-        s = self.thetype([frozenset(self.letters)])
-        self.assertIn(self.thetype(self.letters), s)
-
-    def test_union(self):
-        u = self.s.union(self.otherword)
-        for c in self.letters:
-            self.assertEqual(c in u, c in self.d or c in self.otherword)
-        self.assertEqual(self.s, self.thetype(self.word))
-        self.assertEqual(type(u), self.thetype)
-        self.assertRaises(PassThru, self.s.union, check_pass_thru())
-        self.assertRaises(TypeError, self.s.union, [[]])
-        for C in set, frozenset, dict.fromkeys, str, unicode, list, tuple:
-            self.assertEqual(self.thetype('abcba').union(C('cdc')), set('abcd'))
-            self.assertEqual(self.thetype('abcba').union(C('efgfe')), set('abcefg'))
-            self.assertEqual(self.thetype('abcba').union(C('ccb')), set('abc'))
-            self.assertEqual(self.thetype('abcba').union(C('ef')), set('abcef'))
-            self.assertEqual(self.thetype('abcba').union(C('ef'), C('fg')), set('abcefg'))
-
-        # Issue #6573
-        x = self.thetype()
-        self.assertEqual(x.union(set([1]), x, set([2])), self.thetype([1, 2]))
-
-    def test_or(self):
-        i = self.s.union(self.otherword)
-        self.assertEqual(self.s | set(self.otherword), i)
-        self.assertEqual(self.s | frozenset(self.otherword), i)
-        try:
-            self.s | self.otherword
-        except TypeError:
-            pass
-        else:
-            self.fail("s|t did not screen-out general iterables")
-
-    def test_intersection(self):
-        i = self.s.intersection(self.otherword)
-        for c in self.letters:
-            self.assertEqual(c in i, c in self.d and c in self.otherword)
-        self.assertEqual(self.s, self.thetype(self.word))
-        self.assertEqual(type(i), self.thetype)
-        self.assertRaises(PassThru, self.s.intersection, check_pass_thru())
-        for C in set, frozenset, dict.fromkeys, str, unicode, list, tuple:
-            self.assertEqual(self.thetype('abcba').intersection(C('cdc')), set('cc'))
-            self.assertEqual(self.thetype('abcba').intersection(C('efgfe')), set(''))
-            self.assertEqual(self.thetype('abcba').intersection(C('ccb')), set('bc'))
-            self.assertEqual(self.thetype('abcba').intersection(C('ef')), set(''))
-            self.assertEqual(self.thetype('abcba').intersection(C('cbcf'), C('bag')), set('b'))
-        s = self.thetype('abcba')
-        z = s.intersection()
-        if self.thetype == frozenset():
-            self.assertEqual(id(s), id(z))
-        else:
-            self.assertNotEqual(id(s), id(z))
-
-    def test_isdisjoint(self):
-        def f(s1, s2):
-            'Pure python equivalent of isdisjoint()'
-            return not set(s1).intersection(s2)
-        for larg in '', 'a', 'ab', 'abc', 'ababac', 'cdc', 'cc', 'efgfe', 'ccb', 'ef':
-            s1 = self.thetype(larg)
-            for rarg in '', 'a', 'ab', 'abc', 'ababac', 'cdc', 'cc', 'efgfe', 'ccb', 'ef':
-                for C in set, frozenset, dict.fromkeys, str, unicode, list, tuple:
-                    s2 = C(rarg)
-                    actual = s1.isdisjoint(s2)
-                    expected = f(s1, s2)
-                    self.assertEqual(actual, expected)
-                    self.assertTrue(actual is True or actual is False)
-
-    def test_and(self):
-        i = self.s.intersection(self.otherword)
-        self.assertEqual(self.s & set(self.otherword), i)
-        self.assertEqual(self.s & frozenset(self.otherword), i)
-        try:
-            self.s & self.otherword
-        except TypeError:
-            pass
-        else:
-            self.fail("s&t did not screen-out general iterables")
-
-    def test_difference(self):
-        i = self.s.difference(self.otherword)
-        for c in self.letters:
-            self.assertEqual(c in i, c in self.d and c not in self.otherword)
-        self.assertEqual(self.s, self.thetype(self.word))
-        self.assertEqual(type(i), self.thetype)
-        self.assertRaises(PassThru, self.s.difference, check_pass_thru())
-        self.assertRaises(TypeError, self.s.difference, [[]])
-        for C in set, frozenset, dict.fromkeys, str, unicode, list, tuple:
-            self.assertEqual(self.thetype('abcba').difference(C('cdc')), set('ab'))
-            self.assertEqual(self.thetype('abcba').difference(C('efgfe')), set('abc'))
-            self.assertEqual(self.thetype('abcba').difference(C('ccb')), set('a'))
-            self.assertEqual(self.thetype('abcba').difference(C('ef')), set('abc'))
-            self.assertEqual(self.thetype('abcba').difference(), set('abc'))
-            self.assertEqual(self.thetype('abcba').difference(C('a'), C('b')), set('c'))
-
-    def test_sub(self):
-        i = self.s.difference(self.otherword)
-        self.assertEqual(self.s - set(self.otherword), i)
-        self.assertEqual(self.s - frozenset(self.otherword), i)
-        try:
-            self.s - self.otherword
-        except TypeError:
-            pass
-        else:
-            self.fail("s-t did not screen-out general iterables")
-
-    def test_symmetric_difference(self):
-        i = self.s.symmetric_difference(self.otherword)
-        for c in self.letters:
-            self.assertEqual(c in i, (c in self.d) ^ (c in self.otherword))
-        self.assertEqual(self.s, self.thetype(self.word))
-        self.assertEqual(type(i), self.thetype)
-        self.assertRaises(PassThru, self.s.symmetric_difference, check_pass_thru())
-        self.assertRaises(TypeError, self.s.symmetric_difference, [[]])
-        for C in set, frozenset, dict.fromkeys, str, unicode, list, tuple:
-            self.assertEqual(self.thetype('abcba').symmetric_difference(C('cdc')), set('abd'))
-            self.assertEqual(self.thetype('abcba').symmetric_difference(C('efgfe')), set('abcefg'))
-            self.assertEqual(self.thetype('abcba').symmetric_difference(C('ccb')), set('a'))
-            self.assertEqual(self.thetype('abcba').symmetric_difference(C('ef')), set('abcef'))
-
-    def test_xor(self):
-        i = self.s.symmetric_difference(self.otherword)
-        self.assertEqual(self.s ^ set(self.otherword), i)
-        self.assertEqual(self.s ^ frozenset(self.otherword), i)
-        try:
-            self.s ^ self.otherword
-        except TypeError:
-            pass
-        else:
-            self.fail("s^t did not screen-out general iterables")
-
-    def test_equality(self):
-        self.assertEqual(self.s, set(self.word))
-        self.assertEqual(self.s, frozenset(self.word))
-        self.assertEqual(self.s == self.word, False)
-        self.assertNotEqual(self.s, set(self.otherword))
-        self.assertNotEqual(self.s, frozenset(self.otherword))
-        self.assertEqual(self.s != self.word, True)
-
-    def test_setOfFrozensets(self):
-        t = map(frozenset, ['abcdef', 'bcd', 'bdcb', 'fed', 'fedccba'])
-        s = self.thetype(t)
-        self.assertEqual(len(s), 3)
-
-    def test_compare(self):
-        self.assertRaises(TypeError, self.s.__cmp__, self.s)
-
-    def test_sub_and_super(self):
-        p, q, r = map(self.thetype, ['ab', 'abcde', 'def'])
-        self.assertTrue(p < q)
-        self.assertTrue(p <= q)
-        self.assertTrue(q <= q)
-        self.assertTrue(q > p)
-        self.assertTrue(q >= p)
-        self.assertFalse(q < r)
-        self.assertFalse(q <= r)
-        self.assertFalse(q > r)
-        self.assertFalse(q >= r)
-        self.assertTrue(set('a').issubset('abc'))
-        self.assertTrue(set('abc').issuperset('a'))
-        self.assertFalse(set('a').issubset('cbs'))
-        self.assertFalse(set('cbs').issuperset('a'))
-
-    def test_pickling(self):
-        for i in range(pickle.HIGHEST_PROTOCOL + 1):
-            p = pickle.dumps(self.s, i)
-            dup = pickle.loads(p)
-            self.assertEqual(self.s, dup, "%s != %s" % (self.s, dup))
-            if type(self.s) not in (set, frozenset):
-                self.s.x = 10
-                p = pickle.dumps(self.s)
-                dup = pickle.loads(p)
-                self.assertEqual(self.s.x, dup.x)
-
-    def test_deepcopy(self):
-        class Tracer:
-            def __init__(self, value):
-                self.value = value
-            def __hash__(self):
-                return self.value
-            def __deepcopy__(self, memo=None):
-                return Tracer(self.value + 1)
-        t = Tracer(10)
-        s = self.thetype([t])
-        dup = copy.deepcopy(s)
-        self.assertNotEqual(id(s), id(dup))
-        for elem in dup:
-            newt = elem
-        self.assertNotEqual(id(t), id(newt))
-        self.assertEqual(t.value + 1, newt.value)
-
-    def test_gc(self):
-        # Create a nest of cycles to exercise overall ref count check
-        class A:
-            pass
-        s = set(A() for i in xrange(1000))
-        for elem in s:
-            elem.cycle = s
-            elem.sub = elem
-            elem.set = set([elem])
-
-    def test_subclass_with_custom_hash(self):
-        # Bug #1257731
-        class H(self.thetype):
-            def __hash__(self):
-                return int(id(self) & 0x7fffffff)
-        s=H()
-        f=set()
-        f.add(s)
-        self.assertIn(s, f)
-        f.remove(s)
-        f.add(s)
-        f.discard(s)
-
-    def test_badcmp(self):
-        s = self.thetype([BadCmp()])
-        # Detect comparison errors during insertion and lookup
-        self.assertRaises(RuntimeError, self.thetype, [BadCmp(), BadCmp()])
-        self.assertRaises(RuntimeError, s.__contains__, BadCmp())
-        # Detect errors during mutating operations
-        if hasattr(s, 'add'):
-            self.assertRaises(RuntimeError, s.add, BadCmp())
-            self.assertRaises(RuntimeError, s.discard, BadCmp())
-            self.assertRaises(RuntimeError, s.remove, BadCmp())
-
-    def test_cyclical_repr(self):
-        w = ReprWrapper()
-        s = self.thetype([w])
-        w.value = s
-        name = repr(s).partition('(')[0]    # strip class name from repr string
-        self.assertEqual(repr(s), '%s([%s(...)])' % (name, name))
-
-    def test_cyclical_print(self):
-        w = ReprWrapper()
-        s = self.thetype([w])
-        w.value = s
-        fo = open(test_support.TESTFN, "wb")
-        try:
-            print >> fo, s,
-            fo.close()
-            fo = open(test_support.TESTFN, "rb")
-            self.assertEqual(fo.read(), repr(s))
-        finally:
-            fo.close()
-            test_support.unlink(test_support.TESTFN)
-
-    def test_do_not_rehash_dict_keys(self):
-        n = 10
-        d = dict.fromkeys(map(HashCountingInt, xrange(n)))
-        self.assertEqual(sum(elem.hash_count for elem in d), n)
-        s = self.thetype(d)
-        self.assertEqual(sum(elem.hash_count for elem in d), n)
-        s.difference(d)
-        self.assertEqual(sum(elem.hash_count for elem in d), n)
-        if hasattr(s, 'symmetric_difference_update'):
-            s.symmetric_difference_update(d)
-        self.assertEqual(sum(elem.hash_count for elem in d), n)
-        d2 = dict.fromkeys(set(d))
-        self.assertEqual(sum(elem.hash_count for elem in d), n)
-        d3 = dict.fromkeys(frozenset(d))
-        self.assertEqual(sum(elem.hash_count for elem in d), n)
-        d3 = dict.fromkeys(frozenset(d), 123)
-        self.assertEqual(sum(elem.hash_count for elem in d), n)
-        self.assertEqual(d3, dict.fromkeys(d, 123))
-
-    def test_container_iterator(self):
-        # Bug #3680: tp_traverse was not implemented for set iterator object
-        class C(object):
-            pass
-        obj = C()
-        ref = weakref.ref(obj)
-        container = set([obj, 1])
-        obj.x = iter(container)
-        del obj, container
-        gc.collect()
-        self.assertTrue(ref() is None, "Cycle was not collected")
-
-class TestSet(TestJointOps):
-    thetype = set
-
-    def test_init(self):
-        s = self.thetype()
-        s.__init__(self.word)
-        self.assertEqual(s, set(self.word))
-        s.__init__(self.otherword)
-        self.assertEqual(s, set(self.otherword))
-        self.assertRaises(TypeError, s.__init__, s, 2);
-        self.assertRaises(TypeError, s.__init__, 1);
-
-    def test_constructor_identity(self):
-        s = self.thetype(range(3))
-        t = self.thetype(s)
-        self.assertNotEqual(id(s), id(t))
-
-    def test_hash(self):
-        self.assertRaises(TypeError, hash, self.s)
-
-    def test_clear(self):
-        self.s.clear()
-        self.assertEqual(self.s, set())
-        self.assertEqual(len(self.s), 0)
-
-    def test_copy(self):
-        dup = self.s.copy()
-        self.assertEqual(self.s, dup)
-        self.assertNotEqual(id(self.s), id(dup))
-
-    def test_add(self):
-        self.s.add('Q')
-        self.assertIn('Q', self.s)
-        dup = self.s.copy()
-        self.s.add('Q')
-        self.assertEqual(self.s, dup)
-        self.assertRaises(TypeError, self.s.add, [])
-
-    def test_remove(self):
-        self.s.remove('a')
-        self.assertNotIn('a', self.s)
-        self.assertRaises(KeyError, self.s.remove, 'Q')
-        self.assertRaises(TypeError, self.s.remove, [])
-        s = self.thetype([frozenset(self.word)])
-        self.assertIn(self.thetype(self.word), s)
-        s.remove(self.thetype(self.word))
-        self.assertNotIn(self.thetype(self.word), s)
-        self.assertRaises(KeyError, self.s.remove, self.thetype(self.word))
-
-    def test_remove_keyerror_unpacking(self):
-        # bug:  www.python.org/sf/1576657
-        for v1 in ['Q', (1,)]:
-            try:
-                self.s.remove(v1)
-            except KeyError, e:
-                v2 = e.args[0]
-                self.assertEqual(v1, v2)
-            else:
-                self.fail()
-
-    def test_remove_keyerror_set(self):
-        key = self.thetype([3, 4])
-        try:
-            self.s.remove(key)
-        except KeyError as e:
-            self.assertTrue(e.args[0] is key,
-                         "KeyError should be {0}, not {1}".format(key,
-                                                                  e.args[0]))
-        else:
-            self.fail()
-
-    def test_discard(self):
-        self.s.discard('a')
-        self.assertNotIn('a', self.s)
-        self.s.discard('Q')
-        self.assertRaises(TypeError, self.s.discard, [])
-        s = self.thetype([frozenset(self.word)])
-        self.assertIn(self.thetype(self.word), s)
-        s.discard(self.thetype(self.word))
-        self.assertNotIn(self.thetype(self.word), s)
-        s.discard(self.thetype(self.word))
-
-    def test_pop(self):
-        for i in xrange(len(self.s)):
-            elem = self.s.pop()
-            self.assertNotIn(elem, self.s)
-        self.assertRaises(KeyError, self.s.pop)
-
-    def test_update(self):
-        retval = self.s.update(self.otherword)
-        self.assertEqual(retval, None)
-        for c in (self.word + self.otherword):
-            self.assertIn(c, self.s)
-        self.assertRaises(PassThru, self.s.update, check_pass_thru())
-        self.assertRaises(TypeError, self.s.update, [[]])
-        for p, q in (('cdc', 'abcd'), ('efgfe', 'abcefg'), ('ccb', 'abc'), ('ef', 'abcef')):
-            for C in set, frozenset, dict.fromkeys, str, unicode, list, tuple:
-                s = self.thetype('abcba')
-                self.assertEqual(s.update(C(p)), None)
-                self.assertEqual(s, set(q))
-        for p in ('cdc', 'efgfe', 'ccb', 'ef', 'abcda'):
-            q = 'ahi'
-            for C in set, frozenset, dict.fromkeys, str, unicode, list, tuple:
-                s = self.thetype('abcba')
-                self.assertEqual(s.update(C(p), C(q)), None)
-                self.assertEqual(s, set(s) | set(p) | set(q))
-
-    def test_ior(self):
-        self.s |= set(self.otherword)
-        for c in (self.word + self.otherword):
-            self.assertIn(c, self.s)
-
-    def test_intersection_update(self):
-        retval = self.s.intersection_update(self.otherword)
-        self.assertEqual(retval, None)
-        for c in (self.word + self.otherword):
-            if c in self.otherword and c in self.word:
-                self.assertIn(c, self.s)
-            else:
-                self.assertNotIn(c, self.s)
-        self.assertRaises(PassThru, self.s.intersection_update, check_pass_thru())
-        self.assertRaises(TypeError, self.s.intersection_update, [[]])
-        for p, q in (('cdc', 'c'), ('efgfe', ''), ('ccb', 'bc'), ('ef', '')):
-            for C in set, frozenset, dict.fromkeys, str, unicode, list, tuple:
-                s = self.thetype('abcba')
-                self.assertEqual(s.intersection_update(C(p)), None)
-                self.assertEqual(s, set(q))
-                ss = 'abcba'
-                s = self.thetype(ss)
-                t = 'cbc'
-                self.assertEqual(s.intersection_update(C(p), C(t)), None)
-                self.assertEqual(s, set('abcba')&set(p)&set(t))
-
-    def test_iand(self):
-        self.s &= set(self.otherword)
-        for c in (self.word + self.otherword):
-            if c in self.otherword and c in self.word:
-                self.assertIn(c, self.s)
-            else:
-                self.assertNotIn(c, self.s)
-
-    def test_difference_update(self):
-        retval = self.s.difference_update(self.otherword)
-        self.assertEqual(retval, None)
-        for c in (self.word + self.otherword):
-            if c in self.word and c not in self.otherword:
-                self.assertIn(c, self.s)
-            else:
-                self.assertNotIn(c, self.s)
-        self.assertRaises(PassThru, self.s.difference_update, check_pass_thru())
-        self.assertRaises(TypeError, self.s.difference_update, [[]])
-        self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]])
-        for p, q in (('cdc', 'ab'), ('efgfe', 'abc'), ('ccb', 'a'), ('ef', 'abc')):
-            for C in set, frozenset, dict.fromkeys, str, unicode, list, tuple:
-                s = self.thetype('abcba')
-                self.assertEqual(s.difference_update(C(p)), None)
-                self.assertEqual(s, set(q))
-
-                s = self.thetype('abcdefghih')
-                s.difference_update()
-                self.assertEqual(s, self.thetype('abcdefghih'))
-
-                s = self.thetype('abcdefghih')
-                s.difference_update(C('aba'))
-                self.assertEqual(s, self.thetype('cdefghih'))
-
-                s = self.thetype('abcdefghih')
-                s.difference_update(C('cdc'), C('aba'))
-                self.assertEqual(s, self.thetype('efghih'))
-
-    def test_isub(self):
-        self.s -= set(self.otherword)
-        for c in (self.word + self.otherword):
-            if c in self.word and c not in self.otherword:
-                self.assertIn(c, self.s)
-            else:
-                self.assertNotIn(c, self.s)
-
-    def test_symmetric_difference_update(self):
-        retval = self.s.symmetric_difference_update(self.otherword)
-        self.assertEqual(retval, None)
-        for c in (self.word + self.otherword):
-            if (c in self.word) ^ (c in self.otherword):
-                self.assertIn(c, self.s)
-            else:
-                self.assertNotIn(c, self.s)
-        self.assertRaises(PassThru, self.s.symmetric_difference_update, check_pass_thru())
-        self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]])
-        for p, q in (('cdc', 'abd'), ('efgfe', 'abcefg'), ('ccb', 'a'), ('ef', 'abcef')):
-            for C in set, frozenset, dict.fromkeys, str, unicode, list, tuple:
-                s = self.thetype('abcba')
-                self.assertEqual(s.symmetric_difference_update(C(p)), None)
-                self.assertEqual(s, set(q))
-
-    def test_ixor(self):
-        self.s ^= set(self.otherword)
-        for c in (self.word + self.otherword):
-            if (c in self.word) ^ (c in self.otherword):
-                self.assertIn(c, self.s)
-            else:
-                self.assertNotIn(c, self.s)
-
-    def test_inplace_on_self(self):
-        t = self.s.copy()
-        t |= t
-        self.assertEqual(t, self.s)
-        t &= t
-        self.assertEqual(t, self.s)
-        t -= t
-        self.assertEqual(t, self.thetype())
-        t = self.s.copy()
-        t ^= t
-        self.assertEqual(t, self.thetype())
-
-    def test_weakref(self):
-        s = self.thetype('gallahad')
-        p = weakref.proxy(s)
-        self.assertEqual(str(p), str(s))
-        s = None
-        self.assertRaises(ReferenceError, str, p)
-
-    # C API test only available in a debug build
-    if hasattr(set, "test_c_api"):
-        def test_c_api(self):
-            self.assertEqual(set().test_c_api(), True)
-
-class SetSubclass(set):
-    pass
-
-class TestSetSubclass(TestSet):
-    thetype = SetSubclass
-
-class SetSubclassWithKeywordArgs(set):
-    def __init__(self, iterable=[], newarg=None):
-        set.__init__(self, iterable)
-
-class TestSetSubclassWithKeywordArgs(TestSet):
-
-    def test_keywords_in_subclass(self):
-        'SF bug #1486663 -- this used to erroneously raise a TypeError'
-        SetSubclassWithKeywordArgs(newarg=1)
-
-class TestFrozenSet(TestJointOps):
-    thetype = frozenset
-
-    def test_init(self):
-        s = self.thetype(self.word)
-        s.__init__(self.otherword)
-        self.assertEqual(s, set(self.word))
-
-    def test_singleton_empty_frozenset(self):
-        f = frozenset()
-        efs = [frozenset(), frozenset([]), frozenset(()), frozenset(''),
-               frozenset(), frozenset([]), frozenset(()), frozenset(''),
-               frozenset(xrange(0)), frozenset(frozenset()),
-               frozenset(f), f]
-        # All of the empty frozensets should have just one id()
-        self.assertEqual(len(set(map(id, efs))), 1)
-
-    def test_constructor_identity(self):
-        s = self.thetype(range(3))
-        t = self.thetype(s)
-        self.assertEqual(id(s), id(t))
-
-    def test_hash(self):
-        self.assertEqual(hash(self.thetype('abcdeb')),
-                         hash(self.thetype('ebecda')))
-
-        # make sure that all permutations give the same hash value
-        n = 100
-        seq = [randrange(n) for i in xrange(n)]
-        results = set()
-        for i in xrange(200):
-            shuffle(seq)
-            results.add(hash(self.thetype(seq)))
-        self.assertEqual(len(results), 1)
-
-    def test_copy(self):
-        dup = self.s.copy()
-        self.assertEqual(id(self.s), id(dup))
-
-    def test_frozen_as_dictkey(self):
-        seq = range(10) + list('abcdefg') + ['apple']
-        key1 = self.thetype(seq)
-        key2 = self.thetype(reversed(seq))
-        self.assertEqual(key1, key2)
-        self.assertNotEqual(id(key1), id(key2))
-        d = {}
-        d[key1] = 42
-        self.assertEqual(d[key2], 42)
-
-    def test_hash_caching(self):
-        f = self.thetype('abcdcda')
-        self.assertEqual(hash(f), hash(f))
-
-    def test_hash_effectiveness(self):
-        n = 13
-        hashvalues = set()
-        addhashvalue = hashvalues.add
-        elemmasks = [(i+1, 1<<i) for i in range(n)]
-        for i in xrange(2**n):
-            addhashvalue(hash(frozenset([e for e, m in elemmasks if m&i])))
-        self.assertEqual(len(hashvalues), 2**n)
-
-class FrozenSetSubclass(frozenset):
-    pass
-
-class TestFrozenSetSubclass(TestFrozenSet):
-    thetype = FrozenSetSubclass
-
-    def test_constructor_identity(self):
-        s = self.thetype(range(3))
-        t = self.thetype(s)
-        self.assertNotEqual(id(s), id(t))
-
-    def test_copy(self):
-        dup = self.s.copy()
-        self.assertNotEqual(id(self.s), id(dup))
-
-    def test_nested_empty_constructor(self):
-        s = self.thetype()
-        t = self.thetype(s)
-        self.assertEqual(s, t)
-
-    def test_singleton_empty_frozenset(self):
-        Frozenset = self.thetype
-        f = frozenset()
-        F = Frozenset()
-        efs = [Frozenset(), Frozenset([]), Frozenset(()), Frozenset(''),
-               Frozenset(), Frozenset([]), Frozenset(()), Frozenset(''),
-               Frozenset(xrange(0)), Frozenset(Frozenset()),
-               Frozenset(frozenset()), f, F, Frozenset(f), Frozenset(F)]
-        # All empty frozenset subclass instances should have different ids
-        self.assertEqual(len(set(map(id, efs))), len(efs))
-
-# Tests taken from test_sets.py =============================================
-
-empty_set = set()
-
-#==============================================================================
-
-class TestBasicOps(unittest.TestCase):
-
-    def test_repr(self):
-        if self.repr is not None:
-            self.assertEqual(repr(self.set), self.repr)
-
-    def test_print(self):
-        fo = open(test_support.TESTFN, "wb")
-        try:
-            print >> fo, self.set,
-            fo.close()
-            fo = open(test_support.TESTFN, "rb")
-            self.assertEqual(fo.read(), repr(self.set))
-        finally:
-            fo.close()
-            test_support.unlink(test_support.TESTFN)
-
-    def test_length(self):
-        self.assertEqual(len(self.set), self.length)
-
-    def test_self_equality(self):
-        self.assertEqual(self.set, self.set)
-
-    def test_equivalent_equality(self):
-        self.assertEqual(self.set, self.dup)
-
-    def test_copy(self):
-        self.assertEqual(self.set.copy(), self.dup)
-
-    def test_self_union(self):
-        result = self.set | self.set
-        self.assertEqual(result, self.dup)
-
-    def test_empty_union(self):
-        result = self.set | empty_set
-        self.assertEqual(result, self.dup)
-
-    def test_union_empty(self):
-        result = empty_set | self.set
-        self.assertEqual(result, self.dup)
-
-    def test_self_intersection(self):
-        result = self.set & self.set
-        self.assertEqual(result, self.dup)
-
-    def test_empty_intersection(self):
-        result = self.set & empty_set
-        self.assertEqual(result, empty_set)
-
-    def test_intersection_empty(self):
-        result = empty_set & self.set
-        self.assertEqual(result, empty_set)
-
-    def test_self_isdisjoint(self):
-        result = self.set.isdisjoint(self.set)
-        self.assertEqual(result, not self.set)
-
-    def test_empty_isdisjoint(self):
-        result = self.set.isdisjoint(empty_set)
-        self.assertEqual(result, True)
-
-    def test_isdisjoint_empty(self):
-        result = empty_set.isdisjoint(self.set)
-        self.assertEqual(result, True)
-
-    def test_self_symmetric_difference(self):
-        result = self.set ^ self.set
-        self.assertEqual(result, empty_set)
-
-    def test_empty_symmetric_difference(self):
-        result = self.set ^ empty_set
-        self.assertEqual(result, self.set)
-
-    def test_self_difference(self):
-        result = self.set - self.set
-        self.assertEqual(result, empty_set)
-
-    def test_empty_difference(self):
-        result = self.set - empty_set
-        self.assertEqual(result, self.dup)
-
-    def test_empty_difference_rev(self):
-        result = empty_set - self.set
-        self.assertEqual(result, empty_set)
-
-    def test_iteration(self):
-        for v in self.set:
-            self.assertIn(v, self.values)
-        setiter = iter(self.set)
-        # note: __length_hint__ is an internal undocumented API,
-        # don't rely on it in your own programs
-        self.assertEqual(setiter.__length_hint__(), len(self.set))
-
-    def test_pickling(self):
-        p = pickle.dumps(self.set)
-        copy = pickle.loads(p)
-        self.assertEqual(self.set, copy,
-                         "%s != %s" % (self.set, copy))
-
-#------------------------------------------------------------------------------
-
-class TestBasicOpsEmpty(TestBasicOps):
-    def setUp(self):
-        self.case   = "empty set"
-        self.values = []
-        self.set    = set(self.values)
-        self.dup    = set(self.values)
-        self.length = 0
-        self.repr   = "set([])"
-
-#------------------------------------------------------------------------------
-
-class TestBasicOpsSingleton(TestBasicOps):
-    def setUp(self):
-        self.case   = "unit set (number)"
-        self.values = [3]
-        self.set    = set(self.values)
-        self.dup    = set(self.values)
-        self.length = 1
-        self.repr   = "set([3])"
-
-    def test_in(self):
-        self.assertIn(3, self.set)
-
-    def test_not_in(self):
-        self.assertNotIn(2, self.set)
-
-#------------------------------------------------------------------------------
-
-class TestBasicOpsTuple(TestBasicOps):
-    def setUp(self):
-        self.case   = "unit set (tuple)"
-        self.values = [(0, "zero")]
-        self.set    = set(self.values)
-        self.dup    = set(self.values)
-        self.length = 1
-        self.repr   = "set([(0, 'zero')])"
-
-    def test_in(self):
-        self.assertIn((0, "zero"), self.set)
-
-    def test_not_in(self):
-        self.assertNotIn(9, self.set)
-
-#------------------------------------------------------------------------------
-
-class TestBasicOpsTriple(TestBasicOps):
-    def setUp(self):
-        self.case   = "triple set"
-        self.values = [0, "zero", operator.add]
-        self.set    = set(self.values)
-        self.dup    = set(self.values)
-        self.length = 3
-        self.repr   = None
-
-#==============================================================================
-
-def baditer():
-    raise TypeError
-    yield True
-
-def gooditer():
-    yield True
-
-class TestExceptionPropagation(unittest.TestCase):
-    """SF 628246:  Set constructor should not trap iterator TypeErrors"""
-
-    def test_instanceWithException(self):
-        self.assertRaises(TypeError, set, baditer())
-
-    def test_instancesWithoutException(self):
-        # All of these iterables should load without exception.
-        set([1,2,3])
-        set((1,2,3))
-        set({'one':1, 'two':2, 'three':3})
-        set(xrange(3))
-        set('abc')
-        set(gooditer())
-
-    def test_changingSizeWhileIterating(self):
-        s = set([1,2,3])
-        try:
-            for i in s:
-                s.update([4])
-        except RuntimeError:
-            pass
-        else:
-            self.fail("no exception when changing size during iteration")
-
-#==============================================================================
-
-class TestSetOfSets(unittest.TestCase):
-    def test_constructor(self):
-        inner = frozenset([1])
-        outer = set([inner])
-        element = outer.pop()
-        self.assertEqual(type(element), frozenset)
-        outer.add(inner)        # Rebuild set of sets with .add method
-        outer.remove(inner)
-        self.assertEqual(outer, set())   # Verify that remove worked
-        outer.discard(inner)    # Absence of KeyError indicates working fine
-
-#==============================================================================
-
-class TestBinaryOps(unittest.TestCase):
-    def setUp(self):
-        self.set = set((2, 4, 6))
-
-    def test_eq(self):              # SF bug 643115
-        self.assertEqual(self.set, set({2:1,4:3,6:5}))
-
-    def test_union_subset(self):
-        result = self.set | set([2])
-        self.assertEqual(result, set((2, 4, 6)))
-
-    def test_union_superset(self):
-        result = self.set | set([2, 4, 6, 8])
-        self.assertEqual(result, set([2, 4, 6, 8]))
-
-    def test_union_overlap(self):
-        result = self.set | set([3, 4, 5])
-        self.assertEqual(result, set([2, 3, 4, 5, 6]))
-
-    def test_union_non_overlap(self):
-        result = self.set | set([8])
-        self.assertEqual(result, set([2, 4, 6, 8]))
-
-    def test_intersection_subset(self):
-        result = self.set & set((2, 4))
-        self.assertEqual(result, set((2, 4)))
-
-    def test_intersection_superset(self):
-        result = self.set & set([2, 4, 6, 8])
-        self.assertEqual(result, set([2, 4, 6]))
-
-    def test_intersection_overlap(self):
-        result = self.set & set([3, 4, 5])
-        self.assertEqual(result, set([4]))
-
-    def test_intersection_non_overlap(self):
-        result = self.set & set([8])
-        self.assertEqual(result, empty_set)
-
-    def test_isdisjoint_subset(self):
-        result = self.set.isdisjoint(set((2, 4)))
-        self.assertEqual(result, False)
-
-    def test_isdisjoint_superset(self):
-        result = self.set.isdisjoint(set([2, 4, 6, 8]))
-        self.assertEqual(result, False)
-
-    def test_isdisjoint_overlap(self):
-        result = self.set.isdisjoint(set([3, 4, 5]))
-        self.assertEqual(result, False)
-
-    def test_isdisjoint_non_overlap(self):
-        result = self.set.isdisjoint(set([8]))
-        self.assertEqual(result, True)
-
-    def test_sym_difference_subset(self):
-        result = self.set ^ set((2, 4))
-        self.assertEqual(result, set([6]))
-
-    def test_sym_difference_superset(self):
-        result = self.set ^ set((2, 4, 6, 8))
-        self.assertEqual(result, set([8]))
-
-    def test_sym_difference_overlap(self):
-        result = self.set ^ set((3, 4, 5))
-        self.assertEqual(result, set([2, 3, 5, 6]))
-
-    def test_sym_difference_non_overlap(self):
-        result = self.set ^ set([8])
-        self.assertEqual(result, set([2, 4, 6, 8]))
-
-    def test_cmp(self):
-        a, b = set('a'), set('b')
-        self.assertRaises(TypeError, cmp, a, b)
-
-        # You can view this as a buglet:  cmp(a, a) does not raise TypeError,
-        # because __eq__ is tried before __cmp__, and a.__eq__(a) returns True,
-        # which Python thinks is good enough to synthesize a cmp() result
-        # without calling __cmp__.
-        self.assertEqual(cmp(a, a), 0)
-
-        self.assertRaises(TypeError, cmp, a, 12)
-        self.assertRaises(TypeError, cmp, "abc", a)
-
-#==============================================================================
-
-class TestUpdateOps(unittest.TestCase):
-    def setUp(self):
-        self.set = set((2, 4, 6))
-
-    def test_union_subset(self):
-        self.set |= set([2])
-        self.assertEqual(self.set, set((2, 4, 6)))
-
-    def test_union_superset(self):
-        self.set |= set([2, 4, 6, 8])
-        self.assertEqual(self.set, set([2, 4, 6, 8]))
-
-    def test_union_overlap(self):
-        self.set |= set([3, 4, 5])
-        self.assertEqual(self.set, set([2, 3, 4, 5, 6]))
-
-    def test_union_non_overlap(self):
-        self.set |= set([8])
-        self.assertEqual(self.set, set([2, 4, 6, 8]))
-
-    def test_union_method_call(self):
-        self.set.update(set([3, 4, 5]))
-        self.assertEqual(self.set, set([2, 3, 4, 5, 6]))
-
-    def test_intersection_subset(self):
-        self.set &= set((2, 4))
-        self.assertEqual(self.set, set((2, 4)))
-
-    def test_intersection_superset(self):
-        self.set &= set([2, 4, 6, 8])
-        self.assertEqual(self.set, set([2, 4, 6]))
-
-    def test_intersection_overlap(self):
-        self.set &= set([3, 4, 5])
-        self.assertEqual(self.set, set([4]))
-
-    def test_intersection_non_overlap(self):
-        self.set &= set([8])
-        self.assertEqual(self.set, empty_set)
-
-    def test_intersection_method_call(self):
-        self.set.intersection_update(set([3, 4, 5]))
-        self.assertEqual(self.set, set([4]))
-
-    def test_sym_difference_subset(self):
-        self.set ^= set((2, 4))
-        self.assertEqual(self.set, set([6]))
-
-    def test_sym_difference_superset(self):
-        self.set ^= set((2, 4, 6, 8))
-        self.assertEqual(self.set, set([8]))
-
-    def test_sym_difference_overlap(self):
-        self.set ^= set((3, 4, 5))
-        self.assertEqual(self.set, set([2, 3, 5, 6]))
-
-    def test_sym_difference_non_overlap(self):
-        self.set ^= set([8])
-        self.assertEqual(self.set, set([2, 4, 6, 8]))
-
-    def test_sym_difference_method_call(self):
-        self.set.symmetric_difference_update(set([3, 4, 5]))
-        self.assertEqual(self.set, set([2, 3, 5, 6]))
-
-    def test_difference_subset(self):
-        self.set -= set((2, 4))
-        self.assertEqual(self.set, set([6]))
-
-    def test_difference_superset(self):
-        self.set -= set((2, 4, 6, 8))
-        self.assertEqual(self.set, set([]))
-
-    def test_difference_overlap(self):
-        self.set -= set((3, 4, 5))
-        self.assertEqual(self.set, set([2, 6]))
-
-    def test_difference_non_overlap(self):
-        self.set -= set([8])
-        self.assertEqual(self.set, set([2, 4, 6]))
-
-    def test_difference_method_call(self):
-        self.set.difference_update(set([3, 4, 5]))
-        self.assertEqual(self.set, set([2, 6]))
-
-#==============================================================================
-
-class TestMutate(unittest.TestCase):
-    def setUp(self):
-        self.values = ["a", "b", "c"]
-        self.set = set(self.values)
-
-    def test_add_present(self):
-        self.set.add("c")
-        self.assertEqual(self.set, set("abc"))
-
-    def test_add_absent(self):
-        self.set.add("d")
-        self.assertEqual(self.set, set("abcd"))
-
-    def test_add_until_full(self):
-        tmp = set()
-        expected_len = 0
-        for v in self.values:
-            tmp.add(v)
-            expected_len += 1
-            self.assertEqual(len(tmp), expected_len)
-        self.assertEqual(tmp, self.set)
-
-    def test_remove_present(self):
-        self.set.remove("b")
-        self.assertEqual(self.set, set("ac"))
-
-    def test_remove_absent(self):
-        try:
-            self.set.remove("d")
-            self.fail("Removing missing element should have raised LookupError")
-        except LookupError:
-            pass
-
-    def test_remove_until_empty(self):
-        expected_len = len(self.set)
-        for v in self.values:
-            self.set.remove(v)
-            expected_len -= 1
-            self.assertEqual(len(self.set), expected_len)
-
-    def test_discard_present(self):
-        self.set.discard("c")
-        self.assertEqual(self.set, set("ab"))
-
-    def test_discard_absent(self):
-        self.set.discard("d")
-        self.assertEqual(self.set, set("abc"))
-
-    def test_clear(self):
-        self.set.clear()
-        self.assertEqual(len(self.set), 0)
-
-    def test_pop(self):
-        popped = {}
-        while self.set:
-            popped[self.set.pop()] = None
-        self.assertEqual(len(popped), len(self.values))
-        for v in self.values:
-            self.assertIn(v, popped)
-
-    def test_update_empty_tuple(self):
-        self.set.update(())
-        self.assertEqual(self.set, set(self.values))
-
-    def test_update_unit_tuple_overlap(self):
-        self.set.update(("a",))
-        self.assertEqual(self.set, set(self.values))
-
-    def test_update_unit_tuple_non_overlap(self):
-        self.set.update(("a", "z"))
-        self.assertEqual(self.set, set(self.values + ["z"]))
-
-#==============================================================================
-
-class TestSubsets(unittest.TestCase):
-
-    case2method = {"<=": "issubset",
-                   ">=": "issuperset",
-                  }
-
-    reverse = {"==": "==",
-               "!=": "!=",
-               "<":  ">",
-               ">":  "<",
-               "<=": ">=",
-               ">=": "<=",
-              }
-
-    def test_issubset(self):
-        x = self.left
-        y = self.right
-        for case in "!=", "==", "<", "<=", ">", ">=":
-            expected = case in self.cases
-            # Test the binary infix spelling.
-            result = eval("x" + case + "y", locals())
-            self.assertEqual(result, expected)
-            # Test the "friendly" method-name spelling, if one exists.
-            if case in TestSubsets.case2method:
-                method = getattr(x, TestSubsets.case2method[case])
-                result = method(y)
-                self.assertEqual(result, expected)
-
-            # Now do the same for the operands reversed.
-            rcase = TestSubsets.reverse[case]
-            result = eval("y" + rcase + "x", locals())
-            self.assertEqual(result, expected)
-            if rcase in TestSubsets.case2method:
-                method = getattr(y, TestSubsets.case2method[rcase])
-                result = method(x)
-                self.assertEqual(result, expected)
-#------------------------------------------------------------------------------
-
-class TestSubsetEqualEmpty(TestSubsets):
-    left  = set()
-    right = set()
-    name  = "both empty"
-    cases = "==", "<=", ">="
-
-#------------------------------------------------------------------------------
-
-class TestSubsetEqualNonEmpty(TestSubsets):
-    left  = set([1, 2])
-    right = set([1, 2])
-    name  = "equal pair"
-    cases = "==", "<=", ">="
-
-#------------------------------------------------------------------------------
-
-class TestSubsetEmptyNonEmpty(TestSubsets):
-    left  = set()
-    right = set([1, 2])
-    name  = "one empty, one non-empty"
-    cases = "!=", "<", "<="
-
-#------------------------------------------------------------------------------
-
-class TestSubsetPartial(TestSubsets):
-    left  = set([1])
-    right = set([1, 2])
-    name  = "one a non-empty proper subset of other"
-    cases = "!=", "<", "<="
-
-#------------------------------------------------------------------------------
-
-class TestSubsetNonOverlap(TestSubsets):
-    left  = set([1])
-    right = set([2])
-    name  = "neither empty, neither contains"
-    cases = "!="
-
-#==============================================================================
-
-class TestOnlySetsInBinaryOps(unittest.TestCase):
-
-    def test_eq_ne(self):
-        # Unlike the others, this is testing that == and != *are* allowed.
-        self.assertEqual(self.other == self.set, False)
-        self.assertEqual(self.set == self.other, False)
-        self.assertEqual(self.other != self.set, True)
-        self.assertEqual(self.set != self.other, True)
-
-    def test_ge_gt_le_lt(self):
-        self.assertRaises(TypeError, lambda: self.set < self.other)
-        self.assertRaises(TypeError, lambda: self.set <= self.other)
-        self.assertRaises(TypeError, lambda: self.set > self.other)
-        self.assertRaises(TypeError, lambda: self.set >= self.other)
-
-        self.assertRaises(TypeError, lambda: self.other < self.set)
-        self.assertRaises(TypeError, lambda: self.other <= self.set)
-        self.assertRaises(TypeError, lambda: self.other > self.set)
-        self.assertRaises(TypeError, lambda: self.other >= self.set)
-
-    def test_update_operator(self):
-        try:
-            self.set |= self.other
-        except TypeError:
-            pass
-        else:
-            self.fail("expected TypeError")
-
-    def test_update(self):
-        if self.otherIsIterable:
-            self.set.update(self.other)
-        else:
-            self.assertRaises(TypeError, self.set.update, self.other)
-
-    def test_union(self):
-        self.assertRaises(TypeError, lambda: self.set | self.other)
-        self.assertRaises(TypeError, lambda: self.other | self.set)
-        if self.otherIsIterable:
-            self.set.union(self.other)
-        else:
-            self.assertRaises(TypeError, self.set.union, self.other)
-
-    def test_intersection_update_operator(self):
-        try:
-            self.set &= self.other
-        except TypeError:
-            pass
-        else:
-            self.fail("expected TypeError")
-
-    def test_intersection_update(self):
-        if self.otherIsIterable:
-            self.set.intersection_update(self.other)
-        else:
-            self.assertRaises(TypeError,
-                              self.set.intersection_update,
-                              self.other)
-
-    def test_intersection(self):
-        self.assertRaises(TypeError, lambda: self.set & self.other)
-        self.assertRaises(TypeError, lambda: self.other & self.set)
-        if self.otherIsIterable:
-            self.set.intersection(self.other)
-        else:
-            self.assertRaises(TypeError, self.set.intersection, self.other)
-
-    def test_sym_difference_update_operator(self):
-        try:
-            self.set ^= self.other
-        except TypeError:
-            pass
-        else:
-            self.fail("expected TypeError")
-
-    def test_sym_difference_update(self):
-        if self.otherIsIterable:
-            self.set.symmetric_difference_update(self.other)
-        else:
-            self.assertRaises(TypeError,
-                              self.set.symmetric_difference_update,
-                              self.other)
-
-    def test_sym_difference(self):
-        self.assertRaises(TypeError, lambda: self.set ^ self.other)
-        self.assertRaises(TypeError, lambda: self.other ^ self.set)
-        if self.otherIsIterable:
-            self.set.symmetric_difference(self.other)
-        else:
-            self.assertRaises(TypeError, self.set.symmetric_difference, self.other)
-
-    def test_difference_update_operator(self):
-        try:
-            self.set -= self.other
-        except TypeError:
-            pass
-        else:
-            self.fail("expected TypeError")
-
-    def test_difference_update(self):
-        if self.otherIsIterable:
-            self.set.difference_update(self.other)
-        else:
-            self.assertRaises(TypeError,
-                              self.set.difference_update,
-                              self.other)
-
-    def test_difference(self):
-        self.assertRaises(TypeError, lambda: self.set - self.other)
-        self.assertRaises(TypeError, lambda: self.other - self.set)
-        if self.otherIsIterable:
-            self.set.difference(self.other)
-        else:
-            self.assertRaises(TypeError, self.set.difference, self.other)
-
-#------------------------------------------------------------------------------
-
-class TestOnlySetsNumeric(TestOnlySetsInBinaryOps):
-    def setUp(self):
-        self.set   = set((1, 2, 3))
-        self.other = 19
-        self.otherIsIterable = False
-
-#------------------------------------------------------------------------------
-
-class TestOnlySetsDict(TestOnlySetsInBinaryOps):
-    def setUp(self):
-        self.set   = set((1, 2, 3))
-        self.other = {1:2, 3:4}
-        self.otherIsIterable = True
-
-#------------------------------------------------------------------------------
-
-class TestOnlySetsOperator(TestOnlySetsInBinaryOps):
-    def setUp(self):
-        self.set   = set((1, 2, 3))
-        self.other = operator.add
-        self.otherIsIterable = False
-
-    def test_ge_gt_le_lt(self):
-        with test_support.check_py3k_warnings():
-            super(TestOnlySetsOperator, self).test_ge_gt_le_lt()
-
-#------------------------------------------------------------------------------
-
-class TestOnlySetsTuple(TestOnlySetsInBinaryOps):
-    def setUp(self):
-        self.set   = set((1, 2, 3))
-        self.other = (2, 4, 6)
-        self.otherIsIterable = True
-
-#------------------------------------------------------------------------------
-
-class TestOnlySetsString(TestOnlySetsInBinaryOps):
-    def setUp(self):
-        self.set   = set((1, 2, 3))
-        self.other = 'abc'
-        self.otherIsIterable = True
-
-#------------------------------------------------------------------------------
-
-class TestOnlySetsGenerator(TestOnlySetsInBinaryOps):
-    def setUp(self):
-        def gen():
-            for i in xrange(0, 10, 2):
-                yield i
-        self.set   = set((1, 2, 3))
-        self.other = gen()
-        self.otherIsIterable = True
-
-#==============================================================================
-
-class TestCopying(unittest.TestCase):
-
-    def test_copy(self):
-        dup = list(self.set.copy())
-        self.assertEqual(len(dup), len(self.set))
-        for el in self.set:
-            self.assertIn(el, dup)
-            pos = dup.index(el)
-            self.assertIs(el, dup.pop(pos))
-        self.assertFalse(dup)
-
-    def test_deep_copy(self):
-        dup = copy.deepcopy(self.set)
-        self.assertSetEqual(dup, self.set)
-
-#------------------------------------------------------------------------------
-
-class TestCopyingEmpty(TestCopying):
-    def setUp(self):
-        self.set = set()
-
-#------------------------------------------------------------------------------
-
-class TestCopyingSingleton(TestCopying):
-    def setUp(self):
-        self.set = set(["hello"])
-
-#------------------------------------------------------------------------------
-
-class TestCopyingTriple(TestCopying):
-    def setUp(self):
-        self.set = set(["zero", 0, None])
-
-#------------------------------------------------------------------------------
-
-class TestCopyingTuple(TestCopying):
-    def setUp(self):
-        self.set = set([(1, 2)])
-
-#------------------------------------------------------------------------------
-
-class TestCopyingNested(TestCopying):
-    def setUp(self):
-        self.set = set([((1, 2), (3, 4))])
-
-#==============================================================================
-
-class TestIdentities(unittest.TestCase):
-    def setUp(self):
-        self.a = set('abracadabra')
-        self.b = set('alacazam')
-
-    def test_binopsVsSubsets(self):
-        a, b = self.a, self.b
-        self.assertTrue(a - b < a)
-        self.assertTrue(b - a < b)
-        self.assertTrue(a & b < a)
-        self.assertTrue(a & b < b)
-        self.assertTrue(a | b > a)
-        self.assertTrue(a | b > b)
-        self.assertTrue(a ^ b < a | b)
-
-    def test_commutativity(self):
-        a, b = self.a, self.b
-        self.assertEqual(a&b, b&a)
-        self.assertEqual(a|b, b|a)
-        self.assertEqual(a^b, b^a)
-        if a != b:
-            self.assertNotEqual(a-b, b-a)
-
-    def test_summations(self):
-        # check that sums of parts equal the whole
-        a, b = self.a, self.b
-        self.assertEqual((a-b)|(a&b)|(b-a), a|b)
-        self.assertEqual((a&b)|(a^b), a|b)
-        self.assertEqual(a|(b-a), a|b)
-        self.assertEqual((a-b)|b, a|b)
-        self.assertEqual((a-b)|(a&b), a)
-        self.assertEqual((b-a)|(a&b), b)
-        self.assertEqual((a-b)|(b-a), a^b)
-
-    def test_exclusion(self):
-        # check that inverse operations show non-overlap
-        a, b, zero = self.a, self.b, set()
-        self.assertEqual((a-b)&b, zero)
-        self.assertEqual((b-a)&a, zero)
-        self.assertEqual((a&b)&(a^b), zero)
-
-# Tests derived from test_itertools.py =======================================
-
-def R(seqn):
-    'Regular generator'
-    for i in seqn:
-        yield i
-
-class G:
-    'Sequence using __getitem__'
-    def __init__(self, seqn):
-        self.seqn = seqn
-    def __getitem__(self, i):
-        return self.seqn[i]
-
-class I:
-    'Sequence using iterator protocol'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-    def next(self):
-        if self.i >= len(self.seqn): raise StopIteration
-        v = self.seqn[self.i]
-        self.i += 1
-        return v
-
-class Ig:
-    'Sequence using iterator protocol defined with a generator'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        for val in self.seqn:
-            yield val
-
-class X:
-    'Missing __getitem__ and __iter__'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def next(self):
-        if self.i >= len(self.seqn): raise StopIteration
-        v = self.seqn[self.i]
-        self.i += 1
-        return v
-
-class N:
-    'Iterator missing next()'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-
-class E:
-    'Test propagation of exceptions'
-    def __init__(self, seqn):
-        self.seqn = seqn
-        self.i = 0
-    def __iter__(self):
-        return self
-    def next(self):
-        3 // 0
-
-class S:
-    'Test immediate stop'
-    def __init__(self, seqn):
-        pass
-    def __iter__(self):
-        return self
-    def next(self):
-        raise StopIteration
-
-from itertools import chain, imap
-def L(seqn):
-    'Test multiple tiers of iterators'
-    return chain(imap(lambda x:x, R(Ig(G(seqn)))))
-
-class TestVariousIteratorArgs(unittest.TestCase):
-
-    def test_constructor(self):
-        for cons in (set, frozenset):
-            for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)):
-                for g in (G, I, Ig, S, L, R):
-                    self.assertSetEqual(cons(g(s)), set(g(s)))
-                self.assertRaises(TypeError, cons , X(s))
-                self.assertRaises(TypeError, cons , N(s))
-                self.assertRaises(ZeroDivisionError, cons , E(s))
-
-    def test_inline_methods(self):
-        s = set('november')
-        for data in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5), 'december'):
-            for meth in (s.union, s.intersection, s.difference, s.symmetric_difference, s.isdisjoint):
-                for g in (G, I, Ig, L, R):
-                    expected = meth(data)
-                    actual = meth(G(data))
-                    if isinstance(expected, bool):
-                        self.assertEqual(actual, expected)
-                    else:
-                        self.assertSetEqual(actual, expected)
-                self.assertRaises(TypeError, meth, X(s))
-                self.assertRaises(TypeError, meth, N(s))
-                self.assertRaises(ZeroDivisionError, meth, E(s))
-
-    def test_inplace_methods(self):
-        for data in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5), 'december'):
-            for methname in ('update', 'intersection_update',
-                             'difference_update', 'symmetric_difference_update'):
-                for g in (G, I, Ig, S, L, R):
-                    s = set('january')
-                    t = s.copy()
-                    getattr(s, methname)(list(g(data)))
-                    getattr(t, methname)(g(data))
-                    self.assertSetEqual(s, t)
-
-                self.assertRaises(TypeError, getattr(set('january'), methname), X(data))
-                self.assertRaises(TypeError, getattr(set('january'), methname), N(data))
-                self.assertRaises(ZeroDivisionError, getattr(set('january'), methname), E(data))
-
-class bad_eq:
-    def __eq__(self, other):
-        if be_bad:
-            set2.clear()
-            raise ZeroDivisionError
-        return self is other
-    def __hash__(self):
-        return 0
-
-class bad_dict_clear:
-    def __eq__(self, other):
-        if be_bad:
-            dict2.clear()
-        return self is other
-    def __hash__(self):
-        return 0
-
-class TestWeirdBugs(unittest.TestCase):
-    def test_8420_set_merge(self):
-        # This used to segfault
-        global be_bad, set2, dict2
-        be_bad = False
-        set1 = {bad_eq()}
-        set2 = {bad_eq() for i in range(75)}
-        be_bad = True
-        self.assertRaises(ZeroDivisionError, set1.update, set2)
-
-        be_bad = False
-        set1 = {bad_dict_clear()}
-        dict2 = {bad_dict_clear(): None}
-        be_bad = True
-        set1.symmetric_difference_update(dict2)
-
-# Application tests (based on David Eppstein's graph recipes ====================================
-
-def powerset(U):
-    """Generates all subsets of a set or sequence U."""
-    U = iter(U)
-    try:
-        x = frozenset([U.next()])
-        for S in powerset(U):
-            yield S
-            yield S | x
-    except StopIteration:
-        yield frozenset()
-
-def cube(n):
-    """Graph of n-dimensional hypercube."""
-    singletons = [frozenset([x]) for x in range(n)]
-    return dict([(x, frozenset([x^s for s in singletons]))
-                 for x in powerset(range(n))])
-
-def linegraph(G):
-    """Graph, the vertices of which are edges of G,
-    with two vertices being adjacent iff the corresponding
-    edges share a vertex."""
-    L = {}
-    for x in G:
-        for y in G[x]:
-            nx = [frozenset([x,z]) for z in G[x] if z != y]
-            ny = [frozenset([y,z]) for z in G[y] if z != x]
-            L[frozenset([x,y])] = frozenset(nx+ny)
-    return L
-
-def faces(G):
-    'Return a set of faces in G.  Where a face is a set of vertices on that face'
-    # currently limited to triangles,squares, and pentagons
-    f = set()
-    for v1, edges in G.items():
-        for v2 in edges:
-            for v3 in G[v2]:
-                if v1 == v3:
-                    continue
-                if v1 in G[v3]:
-                    f.add(frozenset([v1, v2, v3]))
-                else:
-                    for v4 in G[v3]:
-                        if v4 == v2:
-                            continue
-                        if v1 in G[v4]:
-                            f.add(frozenset([v1, v2, v3, v4]))
-                        else:
-                            for v5 in G[v4]:
-                                if v5 == v3 or v5 == v2:
-                                    continue
-                                if v1 in G[v5]:
-                                    f.add(frozenset([v1, v2, v3, v4, v5]))
-    return f
-
-
-class TestGraphs(unittest.TestCase):
-
-    def test_cube(self):
-
-        g = cube(3)                             # vert --> {v1, v2, v3}
-        vertices1 = set(g)
-        self.assertEqual(len(vertices1), 8)     # eight vertices
-        for edge in g.values():
-            self.assertEqual(len(edge), 3)      # each vertex connects to three edges
-        vertices2 = set(v for edges in g.values() for v in edges)
-        self.assertEqual(vertices1, vertices2)  # edge vertices in original set
-
-        cubefaces = faces(g)
-        self.assertEqual(len(cubefaces), 6)     # six faces
-        for face in cubefaces:
-            self.assertEqual(len(face), 4)      # each face is a square
-
-    def test_cuboctahedron(self):
-
-        # http://en.wikipedia.org/wiki/Cuboctahedron
-        # 8 triangular faces and 6 square faces
-        # 12 indentical vertices each connecting a triangle and square
-
-        g = cube(3)
-        cuboctahedron = linegraph(g)            # V( --> {V1, V2, V3, V4}
-        self.assertEqual(len(cuboctahedron), 12)# twelve vertices
-
-        vertices = set(cuboctahedron)
-        for edges in cuboctahedron.values():
-            self.assertEqual(len(edges), 4)     # each vertex connects to four other vertices
-        othervertices = set(edge for edges in cuboctahedron.values() for edge in edges)
-        self.assertEqual(vertices, othervertices)   # edge vertices in original set
-
-        cubofaces = faces(cuboctahedron)
-        facesizes = collections.defaultdict(int)
-        for face in cubofaces:
-            facesizes[len(face)] += 1
-        self.assertEqual(facesizes[3], 8)       # eight triangular faces
-        self.assertEqual(facesizes[4], 6)       # six square faces
-
-        for vertex in cuboctahedron:
-            edge = vertex                       # Cuboctahedron vertices are edges in Cube
-            self.assertEqual(len(edge), 2)      # Two cube vertices define an edge
-            for cubevert in edge:
-                self.assertIn(cubevert, g)
-
-
-#==============================================================================
-
-def test_main(verbose=None):
-    test_classes = (
-        TestSet,
-        TestSetSubclass,
-        TestSetSubclassWithKeywordArgs,
-        TestFrozenSet,
-        TestFrozenSetSubclass,
-        TestSetOfSets,
-        TestExceptionPropagation,
-        TestBasicOpsEmpty,
-        TestBasicOpsSingleton,
-        TestBasicOpsTuple,
-        TestBasicOpsTriple,
-        TestBinaryOps,
-        TestUpdateOps,
-        TestMutate,
-        TestSubsetEqualEmpty,
-        TestSubsetEqualNonEmpty,
-        TestSubsetEmptyNonEmpty,
-        TestSubsetPartial,
-        TestSubsetNonOverlap,
-        TestOnlySetsNumeric,
-        TestOnlySetsDict,
-        TestOnlySetsOperator,
-        TestOnlySetsTuple,
-        TestOnlySetsString,
-        TestOnlySetsGenerator,
-        TestCopyingEmpty,
-        TestCopyingSingleton,
-        TestCopyingTriple,
-        TestCopyingTuple,
-        TestCopyingNested,
-        TestIdentities,
-        TestVariousIteratorArgs,
-        TestGraphs,
-        TestWeirdBugs,
-        )
-
-    test_support.run_unittest(*test_classes)
-
-    # verify reference counting
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        import gc
-        counts = [None] * 5
-        for i in xrange(len(counts)):
-            test_support.run_unittest(*test_classes)
-            gc.collect()
-            counts[i] = sys.gettotalrefcount()
-        print counts
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_setcomps.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_setcomps.py
deleted file mode 100644
index 6f9c3fd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_setcomps.py
+++ /dev/null
@@ -1,151 +0,0 @@
-doctests = """
-########### Tests mostly copied from test_listcomps.py ############
-
-Test simple loop with conditional
-
-    >>> sum({i*i for i in range(100) if i&1 == 1})
-    166650
-
-Test simple case
-
-    >>> {2*y + x + 1 for x in (0,) for y in (1,)}
-    set([3])
-
-Test simple nesting
-
-    >>> list(sorted({(i,j) for i in range(3) for j in range(4)}))
-    [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)]
-
-Test nesting with the inner expression dependent on the outer
-
-    >>> list(sorted({(i,j) for i in range(4) for j in range(i)}))
-    [(1, 0), (2, 0), (2, 1), (3, 0), (3, 1), (3, 2)]
-
-Make sure the induction variable is not exposed
-
-    >>> i = 20
-    >>> sum({i*i for i in range(100)})
-    328350
-
-    >>> i
-    20
-
-Verify that syntax error's are raised for setcomps used as lvalues
-
-    >>> {y for y in (1,2)} = 10          # doctest: +IGNORE_EXCEPTION_DETAIL
-    Traceback (most recent call last):
-       ...
-    SyntaxError: ...
-
-    >>> {y for y in (1,2)} += 10         # doctest: +IGNORE_EXCEPTION_DETAIL
-    Traceback (most recent call last):
-       ...
-    SyntaxError: ...
-
-
-Make a nested set comprehension that acts like set(range())
-
-    >>> def srange(n):
-    ...     return {i for i in range(n)}
-    >>> list(sorted(srange(10)))
-    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-
-Same again, only as a lambda expression instead of a function definition
-
-    >>> lrange = lambda n:  {i for i in range(n)}
-    >>> list(sorted(lrange(10)))
-    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-
-Generators can call other generators:
-
-    >>> def grange(n):
-    ...     for x in {i for i in range(n)}:
-    ...         yield x
-    >>> list(sorted(grange(5)))
-    [0, 1, 2, 3, 4]
-
-
-Make sure that None is a valid return value
-
-    >>> {None for i in range(10)}
-    set([None])
-
-########### Tests for various scoping corner cases ############
-
-Return lambdas that use the iteration variable as a default argument
-
-    >>> items = {(lambda i=i: i) for i in range(5)}
-    >>> {x() for x in items} == set(range(5))
-    True
-
-Same again, only this time as a closure variable
-
-    >>> items = {(lambda: i) for i in range(5)}
-    >>> {x() for x in items}
-    set([4])
-
-Another way to test that the iteration variable is local to the list comp
-
-    >>> items = {(lambda: i) for i in range(5)}
-    >>> i = 20
-    >>> {x() for x in items}
-    set([4])
-
-And confirm that a closure can jump over the list comp scope
-
-    >>> items = {(lambda: y) for i in range(5)}
-    >>> y = 2
-    >>> {x() for x in items}
-    set([2])
-
-We also repeat each of the above scoping tests inside a function
-
-    >>> def test_func():
-    ...     items = {(lambda i=i: i) for i in range(5)}
-    ...     return {x() for x in items}
-    >>> test_func() == set(range(5))
-    True
-
-    >>> def test_func():
-    ...     items = {(lambda: i) for i in range(5)}
-    ...     return {x() for x in items}
-    >>> test_func()
-    set([4])
-
-    >>> def test_func():
-    ...     items = {(lambda: i) for i in range(5)}
-    ...     i = 20
-    ...     return {x() for x in items}
-    >>> test_func()
-    set([4])
-
-    >>> def test_func():
-    ...     items = {(lambda: y) for i in range(5)}
-    ...     y = 2
-    ...     return {x() for x in items}
-    >>> test_func()
-    set([2])
-
-"""
-
-
-__test__ = {'doctests' : doctests}
-
-def test_main(verbose=None):
-    import sys
-    from test import test_support
-    from test import test_setcomps
-    test_support.run_doctest(test_setcomps, verbose)
-
-    # verify reference counting
-    if verbose and hasattr(sys, "gettotalrefcount"):
-        import gc
-        counts = [None] * 5
-        for i in range(len(counts)):
-            test_support.run_doctest(test_setcomps, verbose)
-            gc.collect()
-            counts[i] = sys.gettotalrefcount()
-        print(counts)
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sets.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sets.py
deleted file mode 100644
index bd20992..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sets.py
+++ /dev/null
@@ -1,862 +0,0 @@
-#!/usr/bin/env python
-
-import unittest, operator, copy, pickle, random
-from test import test_support
-
-test_support.import_module("sets", deprecated=True)
-from sets import Set, ImmutableSet
-
-empty_set = Set()
-
-#==============================================================================
-
-class TestBasicOps(unittest.TestCase):
-
-    def test_repr(self):
-        if self.repr is not None:
-            self.assertEqual(repr(self.set), self.repr)
-
-    def test_length(self):
-        self.assertEqual(len(self.set), self.length)
-
-    def test_self_equality(self):
-        self.assertEqual(self.set, self.set)
-
-    def test_equivalent_equality(self):
-        self.assertEqual(self.set, self.dup)
-
-    def test_copy(self):
-        self.assertEqual(self.set.copy(), self.dup)
-
-    def test_self_union(self):
-        result = self.set | self.set
-        self.assertEqual(result, self.dup)
-
-    def test_empty_union(self):
-        result = self.set | empty_set
-        self.assertEqual(result, self.dup)
-
-    def test_union_empty(self):
-        result = empty_set | self.set
-        self.assertEqual(result, self.dup)
-
-    def test_self_intersection(self):
-        result = self.set & self.set
-        self.assertEqual(result, self.dup)
-
-    def test_empty_intersection(self):
-        result = self.set & empty_set
-        self.assertEqual(result, empty_set)
-
-    def test_intersection_empty(self):
-        result = empty_set & self.set
-        self.assertEqual(result, empty_set)
-
-    def test_self_symmetric_difference(self):
-        result = self.set ^ self.set
-        self.assertEqual(result, empty_set)
-
-    def checkempty_symmetric_difference(self):
-        result = self.set ^ empty_set
-        self.assertEqual(result, self.set)
-
-    def test_self_difference(self):
-        result = self.set - self.set
-        self.assertEqual(result, empty_set)
-
-    def test_empty_difference(self):
-        result = self.set - empty_set
-        self.assertEqual(result, self.dup)
-
-    def test_empty_difference_rev(self):
-        result = empty_set - self.set
-        self.assertEqual(result, empty_set)
-
-    def test_iteration(self):
-        for v in self.set:
-            self.assertIn(v, self.values)
-
-    def test_pickling(self):
-        p = pickle.dumps(self.set)
-        copy = pickle.loads(p)
-        self.assertEqual(self.set, copy,
-                         "%s != %s" % (self.set, copy))
-
-#------------------------------------------------------------------------------
-
-class TestBasicOpsEmpty(TestBasicOps):
-    def setUp(self):
-        self.case   = "empty set"
-        self.values = []
-        self.set    = Set(self.values)
-        self.dup    = Set(self.values)
-        self.length = 0
-        self.repr   = "Set([])"
-
-#------------------------------------------------------------------------------
-
-class TestBasicOpsSingleton(TestBasicOps):
-    def setUp(self):
-        self.case   = "unit set (number)"
-        self.values = [3]
-        self.set    = Set(self.values)
-        self.dup    = Set(self.values)
-        self.length = 1
-        self.repr   = "Set([3])"
-
-    def test_in(self):
-        self.assertTrue(3 in self.set)
-
-    def test_not_in(self):
-        self.assertTrue(2 not in self.set)
-
-#------------------------------------------------------------------------------
-
-class TestBasicOpsTuple(TestBasicOps):
-    def setUp(self):
-        self.case   = "unit set (tuple)"
-        self.values = [(0, "zero")]
-        self.set    = Set(self.values)
-        self.dup    = Set(self.values)
-        self.length = 1
-        self.repr   = "Set([(0, 'zero')])"
-
-    def test_in(self):
-        self.assertTrue((0, "zero") in self.set)
-
-    def test_not_in(self):
-        self.assertTrue(9 not in self.set)
-
-#------------------------------------------------------------------------------
-
-class TestBasicOpsTriple(TestBasicOps):
-    def setUp(self):
-        self.case   = "triple set"
-        self.values = [0, "zero", operator.add]
-        self.set    = Set(self.values)
-        self.dup    = Set(self.values)
-        self.length = 3
-        self.repr   = None
-
-#==============================================================================
-
-def baditer():
-    raise TypeError
-    yield True
-
-def gooditer():
-    yield True
-
-class TestExceptionPropagation(unittest.TestCase):
-    """SF 628246:  Set constructor should not trap iterator TypeErrors"""
-
-    def test_instanceWithException(self):
-        self.assertRaises(TypeError, Set, baditer())
-
-    def test_instancesWithoutException(self):
-        # All of these iterables should load without exception.
-        Set([1,2,3])
-        Set((1,2,3))
-        Set({'one':1, 'two':2, 'three':3})
-        Set(xrange(3))
-        Set('abc')
-        Set(gooditer())
-
-#==============================================================================
-
-class TestSetOfSets(unittest.TestCase):
-    def test_constructor(self):
-        inner = Set([1])
-        outer = Set([inner])
-        element = outer.pop()
-        self.assertEqual(type(element), ImmutableSet)
-        outer.add(inner)        # Rebuild set of sets with .add method
-        outer.remove(inner)
-        self.assertEqual(outer, Set())   # Verify that remove worked
-        outer.discard(inner)    # Absence of KeyError indicates working fine
-
-#==============================================================================
-
-class TestBinaryOps(unittest.TestCase):
-    def setUp(self):
-        self.set = Set((2, 4, 6))
-
-    def test_eq(self):              # SF bug 643115
-        self.assertEqual(self.set, Set({2:1,4:3,6:5}))
-
-    def test_union_subset(self):
-        result = self.set | Set([2])
-        self.assertEqual(result, Set((2, 4, 6)))
-
-    def test_union_superset(self):
-        result = self.set | Set([2, 4, 6, 8])
-        self.assertEqual(result, Set([2, 4, 6, 8]))
-
-    def test_union_overlap(self):
-        result = self.set | Set([3, 4, 5])
-        self.assertEqual(result, Set([2, 3, 4, 5, 6]))
-
-    def test_union_non_overlap(self):
-        result = self.set | Set([8])
-        self.assertEqual(result, Set([2, 4, 6, 8]))
-
-    def test_intersection_subset(self):
-        result = self.set & Set((2, 4))
-        self.assertEqual(result, Set((2, 4)))
-
-    def test_intersection_superset(self):
-        result = self.set & Set([2, 4, 6, 8])
-        self.assertEqual(result, Set([2, 4, 6]))
-
-    def test_intersection_overlap(self):
-        result = self.set & Set([3, 4, 5])
-        self.assertEqual(result, Set([4]))
-
-    def test_intersection_non_overlap(self):
-        result = self.set & Set([8])
-        self.assertEqual(result, empty_set)
-
-    def test_sym_difference_subset(self):
-        result = self.set ^ Set((2, 4))
-        self.assertEqual(result, Set([6]))
-
-    def test_sym_difference_superset(self):
-        result = self.set ^ Set((2, 4, 6, 8))
-        self.assertEqual(result, Set([8]))
-
-    def test_sym_difference_overlap(self):
-        result = self.set ^ Set((3, 4, 5))
-        self.assertEqual(result, Set([2, 3, 5, 6]))
-
-    def test_sym_difference_non_overlap(self):
-        result = self.set ^ Set([8])
-        self.assertEqual(result, Set([2, 4, 6, 8]))
-
-    def test_cmp(self):
-        a, b = Set('a'), Set('b')
-        self.assertRaises(TypeError, cmp, a, b)
-
-        # You can view this as a buglet:  cmp(a, a) does not raise TypeError,
-        # because __eq__ is tried before __cmp__, and a.__eq__(a) returns True,
-        # which Python thinks is good enough to synthesize a cmp() result
-        # without calling __cmp__.
-        self.assertEqual(cmp(a, a), 0)
-
-        self.assertRaises(TypeError, cmp, a, 12)
-        self.assertRaises(TypeError, cmp, "abc", a)
-
-    def test_inplace_on_self(self):
-        t = self.set.copy()
-        t |= t
-        self.assertEqual(t, self.set)
-        t &= t
-        self.assertEqual(t, self.set)
-        t -= t
-        self.assertEqual(len(t), 0)
-        t = self.set.copy()
-        t ^= t
-        self.assertEqual(len(t), 0)
-
-
-#==============================================================================
-
-class TestUpdateOps(unittest.TestCase):
-    def setUp(self):
-        self.set = Set((2, 4, 6))
-
-    def test_union_subset(self):
-        self.set |= Set([2])
-        self.assertEqual(self.set, Set((2, 4, 6)))
-
-    def test_union_superset(self):
-        self.set |= Set([2, 4, 6, 8])
-        self.assertEqual(self.set, Set([2, 4, 6, 8]))
-
-    def test_union_overlap(self):
-        self.set |= Set([3, 4, 5])
-        self.assertEqual(self.set, Set([2, 3, 4, 5, 6]))
-
-    def test_union_non_overlap(self):
-        self.set |= Set([8])
-        self.assertEqual(self.set, Set([2, 4, 6, 8]))
-
-    def test_union_method_call(self):
-        self.set.union_update(Set([3, 4, 5]))
-        self.assertEqual(self.set, Set([2, 3, 4, 5, 6]))
-
-    def test_intersection_subset(self):
-        self.set &= Set((2, 4))
-        self.assertEqual(self.set, Set((2, 4)))
-
-    def test_intersection_superset(self):
-        self.set &= Set([2, 4, 6, 8])
-        self.assertEqual(self.set, Set([2, 4, 6]))
-
-    def test_intersection_overlap(self):
-        self.set &= Set([3, 4, 5])
-        self.assertEqual(self.set, Set([4]))
-
-    def test_intersection_non_overlap(self):
-        self.set &= Set([8])
-        self.assertEqual(self.set, empty_set)
-
-    def test_intersection_method_call(self):
-        self.set.intersection_update(Set([3, 4, 5]))
-        self.assertEqual(self.set, Set([4]))
-
-    def test_sym_difference_subset(self):
-        self.set ^= Set((2, 4))
-        self.assertEqual(self.set, Set([6]))
-
-    def test_sym_difference_superset(self):
-        self.set ^= Set((2, 4, 6, 8))
-        self.assertEqual(self.set, Set([8]))
-
-    def test_sym_difference_overlap(self):
-        self.set ^= Set((3, 4, 5))
-        self.assertEqual(self.set, Set([2, 3, 5, 6]))
-
-    def test_sym_difference_non_overlap(self):
-        self.set ^= Set([8])
-        self.assertEqual(self.set, Set([2, 4, 6, 8]))
-
-    def test_sym_difference_method_call(self):
-        self.set.symmetric_difference_update(Set([3, 4, 5]))
-        self.assertEqual(self.set, Set([2, 3, 5, 6]))
-
-    def test_difference_subset(self):
-        self.set -= Set((2, 4))
-        self.assertEqual(self.set, Set([6]))
-
-    def test_difference_superset(self):
-        self.set -= Set((2, 4, 6, 8))
-        self.assertEqual(self.set, Set([]))
-
-    def test_difference_overlap(self):
-        self.set -= Set((3, 4, 5))
-        self.assertEqual(self.set, Set([2, 6]))
-
-    def test_difference_non_overlap(self):
-        self.set -= Set([8])
-        self.assertEqual(self.set, Set([2, 4, 6]))
-
-    def test_difference_method_call(self):
-        self.set.difference_update(Set([3, 4, 5]))
-        self.assertEqual(self.set, Set([2, 6]))
-
-#==============================================================================
-
-class TestMutate(unittest.TestCase):
-    def setUp(self):
-        self.values = ["a", "b", "c"]
-        self.set = Set(self.values)
-
-    def test_add_present(self):
-        self.set.add("c")
-        self.assertEqual(self.set, Set("abc"))
-
-    def test_add_absent(self):
-        self.set.add("d")
-        self.assertEqual(self.set, Set("abcd"))
-
-    def test_add_until_full(self):
-        tmp = Set()
-        expected_len = 0
-        for v in self.values:
-            tmp.add(v)
-            expected_len += 1
-            self.assertEqual(len(tmp), expected_len)
-        self.assertEqual(tmp, self.set)
-
-    def test_remove_present(self):
-        self.set.remove("b")
-        self.assertEqual(self.set, Set("ac"))
-
-    def test_remove_absent(self):
-        try:
-            self.set.remove("d")
-            self.fail("Removing missing element should have raised LookupError")
-        except LookupError:
-            pass
-
-    def test_remove_until_empty(self):
-        expected_len = len(self.set)
-        for v in self.values:
-            self.set.remove(v)
-            expected_len -= 1
-            self.assertEqual(len(self.set), expected_len)
-
-    def test_discard_present(self):
-        self.set.discard("c")
-        self.assertEqual(self.set, Set("ab"))
-
-    def test_discard_absent(self):
-        self.set.discard("d")
-        self.assertEqual(self.set, Set("abc"))
-
-    def test_clear(self):
-        self.set.clear()
-        self.assertEqual(len(self.set), 0)
-
-    def test_pop(self):
-        popped = {}
-        while self.set:
-            popped[self.set.pop()] = None
-        self.assertEqual(len(popped), len(self.values))
-        for v in self.values:
-            self.assertIn(v, popped)
-
-    def test_update_empty_tuple(self):
-        self.set.union_update(())
-        self.assertEqual(self.set, Set(self.values))
-
-    def test_update_unit_tuple_overlap(self):
-        self.set.union_update(("a",))
-        self.assertEqual(self.set, Set(self.values))
-
-    def test_update_unit_tuple_non_overlap(self):
-        self.set.union_update(("a", "z"))
-        self.assertEqual(self.set, Set(self.values + ["z"]))
-
-#==============================================================================
-
-class TestSubsets(unittest.TestCase):
-
-    case2method = {"<=": "issubset",
-                   ">=": "issuperset",
-                  }
-
-    reverse = {"==": "==",
-               "!=": "!=",
-               "<":  ">",
-               ">":  "<",
-               "<=": ">=",
-               ">=": "<=",
-              }
-
-    def test_issubset(self):
-        x = self.left
-        y = self.right
-        for case in "!=", "==", "<", "<=", ">", ">=":
-            expected = case in self.cases
-            # Test the binary infix spelling.
-            result = eval("x" + case + "y", locals())
-            self.assertEqual(result, expected)
-            # Test the "friendly" method-name spelling, if one exists.
-            if case in TestSubsets.case2method:
-                method = getattr(x, TestSubsets.case2method[case])
-                result = method(y)
-                self.assertEqual(result, expected)
-
-            # Now do the same for the operands reversed.
-            rcase = TestSubsets.reverse[case]
-            result = eval("y" + rcase + "x", locals())
-            self.assertEqual(result, expected)
-            if rcase in TestSubsets.case2method:
-                method = getattr(y, TestSubsets.case2method[rcase])
-                result = method(x)
-                self.assertEqual(result, expected)
-#------------------------------------------------------------------------------
-
-class TestSubsetEqualEmpty(TestSubsets):
-    left  = Set()
-    right = Set()
-    name  = "both empty"
-    cases = "==", "<=", ">="
-
-#------------------------------------------------------------------------------
-
-class TestSubsetEqualNonEmpty(TestSubsets):
-    left  = Set([1, 2])
-    right = Set([1, 2])
-    name  = "equal pair"
-    cases = "==", "<=", ">="
-
-#------------------------------------------------------------------------------
-
-class TestSubsetEmptyNonEmpty(TestSubsets):
-    left  = Set()
-    right = Set([1, 2])
-    name  = "one empty, one non-empty"
-    cases = "!=", "<", "<="
-
-#------------------------------------------------------------------------------
-
-class TestSubsetPartial(TestSubsets):
-    left  = Set([1])
-    right = Set([1, 2])
-    name  = "one a non-empty proper subset of other"
-    cases = "!=", "<", "<="
-
-#------------------------------------------------------------------------------
-
-class TestSubsetNonOverlap(TestSubsets):
-    left  = Set([1])
-    right = Set([2])
-    name  = "neither empty, neither contains"
-    cases = "!="
-
-#==============================================================================
-
-class TestOnlySetsInBinaryOps(unittest.TestCase):
-
-    def test_eq_ne(self):
-        # Unlike the others, this is testing that == and != *are* allowed.
-        self.assertEqual(self.other == self.set, False)
-        self.assertEqual(self.set == self.other, False)
-        self.assertEqual(self.other != self.set, True)
-        self.assertEqual(self.set != self.other, True)
-
-    def test_ge_gt_le_lt(self):
-        self.assertRaises(TypeError, lambda: self.set < self.other)
-        self.assertRaises(TypeError, lambda: self.set <= self.other)
-        self.assertRaises(TypeError, lambda: self.set > self.other)
-        self.assertRaises(TypeError, lambda: self.set >= self.other)
-
-        self.assertRaises(TypeError, lambda: self.other < self.set)
-        self.assertRaises(TypeError, lambda: self.other <= self.set)
-        self.assertRaises(TypeError, lambda: self.other > self.set)
-        self.assertRaises(TypeError, lambda: self.other >= self.set)
-
-    def test_union_update_operator(self):
-        try:
-            self.set |= self.other
-        except TypeError:
-            pass
-        else:
-            self.fail("expected TypeError")
-
-    def test_union_update(self):
-        if self.otherIsIterable:
-            self.set.union_update(self.other)
-        else:
-            self.assertRaises(TypeError, self.set.union_update, self.other)
-
-    def test_union(self):
-        self.assertRaises(TypeError, lambda: self.set | self.other)
-        self.assertRaises(TypeError, lambda: self.other | self.set)
-        if self.otherIsIterable:
-            self.set.union(self.other)
-        else:
-            self.assertRaises(TypeError, self.set.union, self.other)
-
-    def test_intersection_update_operator(self):
-        try:
-            self.set &= self.other
-        except TypeError:
-            pass
-        else:
-            self.fail("expected TypeError")
-
-    def test_intersection_update(self):
-        if self.otherIsIterable:
-            self.set.intersection_update(self.other)
-        else:
-            self.assertRaises(TypeError,
-                              self.set.intersection_update,
-                              self.other)
-
-    def test_intersection(self):
-        self.assertRaises(TypeError, lambda: self.set & self.other)
-        self.assertRaises(TypeError, lambda: self.other & self.set)
-        if self.otherIsIterable:
-            self.set.intersection(self.other)
-        else:
-            self.assertRaises(TypeError, self.set.intersection, self.other)
-
-    def test_sym_difference_update_operator(self):
-        try:
-            self.set ^= self.other
-        except TypeError:
-            pass
-        else:
-            self.fail("expected TypeError")
-
-    def test_sym_difference_update(self):
-        if self.otherIsIterable:
-            self.set.symmetric_difference_update(self.other)
-        else:
-            self.assertRaises(TypeError,
-                              self.set.symmetric_difference_update,
-                              self.other)
-
-    def test_sym_difference(self):
-        self.assertRaises(TypeError, lambda: self.set ^ self.other)
-        self.assertRaises(TypeError, lambda: self.other ^ self.set)
-        if self.otherIsIterable:
-            self.set.symmetric_difference(self.other)
-        else:
-            self.assertRaises(TypeError, self.set.symmetric_difference, self.other)
-
-    def test_difference_update_operator(self):
-        try:
-            self.set -= self.other
-        except TypeError:
-            pass
-        else:
-            self.fail("expected TypeError")
-
-    def test_difference_update(self):
-        if self.otherIsIterable:
-            self.set.difference_update(self.other)
-        else:
-            self.assertRaises(TypeError,
-                              self.set.difference_update,
-                              self.other)
-
-    def test_difference(self):
-        self.assertRaises(TypeError, lambda: self.set - self.other)
-        self.assertRaises(TypeError, lambda: self.other - self.set)
-        if self.otherIsIterable:
-            self.set.difference(self.other)
-        else:
-            self.assertRaises(TypeError, self.set.difference, self.other)
-
-#------------------------------------------------------------------------------
-
-class TestOnlySetsNumeric(TestOnlySetsInBinaryOps):
-    def setUp(self):
-        self.set   = Set((1, 2, 3))
-        self.other = 19
-        self.otherIsIterable = False
-
-#------------------------------------------------------------------------------
-
-class TestOnlySetsDict(TestOnlySetsInBinaryOps):
-    def setUp(self):
-        self.set   = Set((1, 2, 3))
-        self.other = {1:2, 3:4}
-        self.otherIsIterable = True
-
-#------------------------------------------------------------------------------
-
-class TestOnlySetsOperator(TestOnlySetsInBinaryOps):
-    def setUp(self):
-        self.set   = Set((1, 2, 3))
-        self.other = operator.add
-        self.otherIsIterable = False
-
-    def test_ge_gt_le_lt(self):
-        with test_support.check_py3k_warnings():
-            super(TestOnlySetsOperator, self).test_ge_gt_le_lt()
-
-#------------------------------------------------------------------------------
-
-class TestOnlySetsTuple(TestOnlySetsInBinaryOps):
-    def setUp(self):
-        self.set   = Set((1, 2, 3))
-        self.other = (2, 4, 6)
-        self.otherIsIterable = True
-
-#------------------------------------------------------------------------------
-
-class TestOnlySetsString(TestOnlySetsInBinaryOps):
-    def setUp(self):
-        self.set   = Set((1, 2, 3))
-        self.other = 'abc'
-        self.otherIsIterable = True
-
-#------------------------------------------------------------------------------
-
-class TestOnlySetsGenerator(TestOnlySetsInBinaryOps):
-    def setUp(self):
-        def gen():
-            for i in xrange(0, 10, 2):
-                yield i
-        self.set   = Set((1, 2, 3))
-        self.other = gen()
-        self.otherIsIterable = True
-
-#------------------------------------------------------------------------------
-
-class TestOnlySetsofSets(TestOnlySetsInBinaryOps):
-    def setUp(self):
-        self.set   = Set((1, 2, 3))
-        self.other = [Set('ab'), ImmutableSet('cd')]
-        self.otherIsIterable = True
-
-#==============================================================================
-
-class TestCopying(unittest.TestCase):
-
-    def test_copy(self):
-        dup = self.set.copy()
-        self.assertEqual(len(dup), len(self.set))
-        dup_list = sorted(dup)
-        set_list = sorted(self.set)
-        self.assertEqual(len(dup_list), len(set_list))
-        for i, el in enumerate(dup_list):
-            self.assertIs(el, set_list[i])
-
-    def test_deep_copy(self):
-        dup = copy.deepcopy(self.set)
-        self.assertSetEqual(dup, self.set)
-
-#------------------------------------------------------------------------------
-
-class TestCopyingEmpty(TestCopying):
-    def setUp(self):
-        self.set = Set()
-
-#------------------------------------------------------------------------------
-
-class TestCopyingSingleton(TestCopying):
-    def setUp(self):
-        self.set = Set(["hello"])
-
-#------------------------------------------------------------------------------
-
-class TestCopyingTriple(TestCopying):
-    def setUp(self):
-        self.set = Set(["zero", 0, None])
-
-    def test_copy(self):
-        with test_support.check_py3k_warnings():
-            super(TestCopyingTriple, self).test_copy()
-
-#------------------------------------------------------------------------------
-
-class TestCopyingTuple(TestCopying):
-    def setUp(self):
-        self.set = Set([(1, 2)])
-
-#------------------------------------------------------------------------------
-
-class TestCopyingNested(TestCopying):
-    def setUp(self):
-        self.set = Set([((1, 2), (3, 4))])
-
-#==============================================================================
-
-class TestIdentities(unittest.TestCase):
-    def setUp(self):
-        self.a = Set([random.randrange(100) for i in xrange(50)])
-        self.b = Set([random.randrange(100) for i in xrange(50)])
-
-    def test_binopsVsSubsets(self):
-        a, b = self.a, self.b
-        self.assertTrue(a - b <= a)
-        self.assertTrue(b - a <= b)
-        self.assertTrue(a & b <= a)
-        self.assertTrue(a & b <= b)
-        self.assertTrue(a | b >= a)
-        self.assertTrue(a | b >= b)
-        self.assertTrue(a ^ b <= a | b)
-
-    def test_commutativity(self):
-        a, b = self.a, self.b
-        self.assertEqual(a&b, b&a)
-        self.assertEqual(a|b, b|a)
-        self.assertEqual(a^b, b^a)
-        if a != b:
-            self.assertNotEqual(a-b, b-a)
-
-    def test_reflexsive_relations(self):
-        a, zero = self.a, Set()
-        self.assertEqual(a ^ a, zero)
-        self.assertEqual(a - a, zero)
-        self.assertEqual(a | a, a)
-        self.assertEqual(a & a, a)
-        self.assertTrue(a <= a)
-        self.assertTrue(a >= a)
-        self.assertTrue(a == a)
-
-    def test_summations(self):
-        # check that sums of parts equal the whole
-        a, b = self.a, self.b
-        self.assertEqual((a-b)|(a&b)|(b-a), a|b)
-        self.assertEqual((a&b)|(a^b), a|b)
-        self.assertEqual(a|(b-a), a|b)
-        self.assertEqual((a-b)|b, a|b)
-        self.assertEqual((a-b)|(a&b), a)
-        self.assertEqual((b-a)|(a&b), b)
-        self.assertEqual((a-b)|(b-a), a^b)
-
-    def test_exclusion(self):
-        # check that inverse operations do not overlap
-        a, b, zero = self.a, self.b, Set()
-        self.assertEqual((a-b)&b, zero)
-        self.assertEqual((b-a)&a, zero)
-        self.assertEqual((a&b)&(a^b), zero)
-
-    def test_cardinality_relations(self):
-        a, b = self.a, self.b
-        self.assertEqual(len(a), len(a-b) + len(a&b))
-        self.assertEqual(len(b), len(b-a) + len(a&b))
-        self.assertEqual(len(a^b), len(a-b) + len(b-a))
-        self.assertEqual(len(a|b), len(a-b) + len(a&b) + len(b-a))
-        self.assertEqual(len(a^b) + len(a&b), len(a|b))
-
-#==============================================================================
-
-libreftest = """
-Example from the Library Reference:  Doc/lib/libsets.tex
-
->>> from sets import Set as Base  # override _repr to get sorted output
->>> class Set(Base):
-...     def _repr(self):
-...         return Base._repr(self, sorted=True)
->>> engineers = Set(['John', 'Jane', 'Jack', 'Janice'])
->>> programmers = Set(['Jack', 'Sam', 'Susan', 'Janice'])
->>> managers = Set(['Jane', 'Jack', 'Susan', 'Zack'])
->>> employees = engineers | programmers | managers           # union
->>> engineering_management = engineers & managers            # intersection
->>> fulltime_management = managers - engineers - programmers # difference
->>> engineers.add('Marvin')
->>> print engineers
-Set(['Jack', 'Jane', 'Janice', 'John', 'Marvin'])
->>> employees.issuperset(engineers)           # superset test
-False
->>> employees.union_update(engineers)         # update from another set
->>> employees.issuperset(engineers)
-True
->>> for group in [engineers, programmers, managers, employees]:
-...     group.discard('Susan')                # unconditionally remove element
-...     print group
-...
-Set(['Jack', 'Jane', 'Janice', 'John', 'Marvin'])
-Set(['Jack', 'Janice', 'Sam'])
-Set(['Jack', 'Jane', 'Zack'])
-Set(['Jack', 'Jane', 'Janice', 'John', 'Marvin', 'Sam', 'Zack'])
-"""
-
-#==============================================================================
-
-__test__ = {'libreftest' : libreftest}
-
-def test_main(verbose=None):
-    import doctest
-    from test import test_sets
-    test_support.run_unittest(
-        TestSetOfSets,
-        TestExceptionPropagation,
-        TestBasicOpsEmpty,
-        TestBasicOpsSingleton,
-        TestBasicOpsTuple,
-        TestBasicOpsTriple,
-        TestBinaryOps,
-        TestUpdateOps,
-        TestMutate,
-        TestSubsetEqualEmpty,
-        TestSubsetEqualNonEmpty,
-        TestSubsetEmptyNonEmpty,
-        TestSubsetPartial,
-        TestSubsetNonOverlap,
-        TestOnlySetsNumeric,
-        TestOnlySetsDict,
-        TestOnlySetsOperator,
-        TestOnlySetsTuple,
-        TestOnlySetsString,
-        TestOnlySetsGenerator,
-        TestOnlySetsofSets,
-        TestCopyingEmpty,
-        TestCopyingSingleton,
-        TestCopyingTriple,
-        TestCopyingTuple,
-        TestCopyingNested,
-        TestIdentities,
-        doctest.DocTestSuite(test_sets),
-    )
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sgmllib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sgmllib.py
deleted file mode 100644
index 68af5ff..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sgmllib.py
+++ /dev/null
@@ -1,439 +0,0 @@
-import pprint
-import re
-import unittest
-from test import test_support
-sgmllib = test_support.import_module('sgmllib', deprecated=True)
-
-
-class EventCollector(sgmllib.SGMLParser):
-
-    def __init__(self):
-        self.events = []
-        self.append = self.events.append
-        sgmllib.SGMLParser.__init__(self)
-
-    def get_events(self):
-        # Normalize the list of events so that buffer artefacts don't
-        # separate runs of contiguous characters.
-        L = []
-        prevtype = None
-        for event in self.events:
-            type = event[0]
-            if type == prevtype == "data":
-                L[-1] = ("data", L[-1][1] + event[1])
-            else:
-                L.append(event)
-            prevtype = type
-        self.events = L
-        return L
-
-    # structure markup
-
-    def unknown_starttag(self, tag, attrs):
-        self.append(("starttag", tag, attrs))
-
-    def unknown_endtag(self, tag):
-        self.append(("endtag", tag))
-
-    # all other markup
-
-    def handle_comment(self, data):
-        self.append(("comment", data))
-
-    def handle_charref(self, data):
-        self.append(("charref", data))
-
-    def handle_data(self, data):
-        self.append(("data", data))
-
-    def handle_decl(self, decl):
-        self.append(("decl", decl))
-
-    def handle_entityref(self, data):
-        self.append(("entityref", data))
-
-    def handle_pi(self, data):
-        self.append(("pi", data))
-
-    def unknown_decl(self, decl):
-        self.append(("unknown decl", decl))
-
-
-class CDATAEventCollector(EventCollector):
-    def start_cdata(self, attrs):
-        self.append(("starttag", "cdata", attrs))
-        self.setliteral()
-
-
-class HTMLEntityCollector(EventCollector):
-
-    entity_or_charref = re.compile('(?:&([a-zA-Z][-.a-zA-Z0-9]*)'
-        '|&#(x[0-9a-zA-Z]+|[0-9]+))(;?)')
-
-    def convert_charref(self, name):
-        self.append(("charref", "convert", name))
-        if name[0] != "x":
-            return EventCollector.convert_charref(self, name)
-
-    def convert_codepoint(self, codepoint):
-        self.append(("codepoint", "convert", codepoint))
-        EventCollector.convert_codepoint(self, codepoint)
-
-    def convert_entityref(self, name):
-        self.append(("entityref", "convert", name))
-        return EventCollector.convert_entityref(self, name)
-
-    # These to record that they were called, then pass the call along
-    # to the default implementation so that it's actions can be
-    # recorded.
-
-    def handle_charref(self, data):
-        self.append(("charref", data))
-        sgmllib.SGMLParser.handle_charref(self, data)
-
-    def handle_entityref(self, data):
-        self.append(("entityref", data))
-        sgmllib.SGMLParser.handle_entityref(self, data)
-
-
-class SGMLParserTestCase(unittest.TestCase):
-
-    collector = EventCollector
-
-    def get_events(self, source):
-        parser = self.collector()
-        try:
-            for s in source:
-                parser.feed(s)
-            parser.close()
-        except:
-            #self.events = parser.events
-            raise
-        return parser.get_events()
-
-    def check_events(self, source, expected_events):
-        try:
-            events = self.get_events(source)
-        except:
-            #import sys
-            #print >>sys.stderr, pprint.pformat(self.events)
-            raise
-        if events != expected_events:
-            self.fail("received events did not match expected events\n"
-                      "Expected:\n" + pprint.pformat(expected_events) +
-                      "\nReceived:\n" + pprint.pformat(events))
-
-    def check_parse_error(self, source):
-        parser = EventCollector()
-        try:
-            parser.feed(source)
-            parser.close()
-        except sgmllib.SGMLParseError:
-            pass
-        else:
-            self.fail("expected SGMLParseError for %r\nReceived:\n%s"
-                      % (source, pprint.pformat(parser.get_events())))
-
-    def test_doctype_decl_internal(self):
-        inside = """\
-DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN'
-             SYSTEM 'http://www.w3.org/TR/html401/strict.dtd' [
-  <!ELEMENT html - O EMPTY>
-  <!ATTLIST html
-      version CDATA #IMPLIED
-      profile CDATA 'DublinCore'>
-  <!NOTATION datatype SYSTEM 'http://xml.python.org/notations/python-module'>
-  <!ENTITY myEntity 'internal parsed entity'>
-  <!ENTITY anEntity SYSTEM 'http://xml.python.org/entities/something.xml'>
-  <!ENTITY % paramEntity 'name|name|name'>
-  %paramEntity;
-  <!-- comment -->
-]"""
-        self.check_events(["<!%s>" % inside], [
-            ("decl", inside),
-            ])
-
-    def test_doctype_decl_external(self):
-        inside = "DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01//EN'"
-        self.check_events("<!%s>" % inside, [
-            ("decl", inside),
-            ])
-
-    def test_underscore_in_attrname(self):
-        # SF bug #436621
-        """Make sure attribute names with underscores are accepted"""
-        self.check_events("<a has_under _under>", [
-            ("starttag", "a", [("has_under", "has_under"),
-                               ("_under", "_under")]),
-            ])
-
-    def test_underscore_in_tagname(self):
-        # SF bug #436621
-        """Make sure tag names with underscores are accepted"""
-        self.check_events("<has_under></has_under>", [
-            ("starttag", "has_under", []),
-            ("endtag", "has_under"),
-            ])
-
-    def test_quotes_in_unquoted_attrs(self):
-        # SF bug #436621
-        """Be sure quotes in unquoted attributes are made part of the value"""
-        self.check_events("<a href=foo'bar\"baz>", [
-            ("starttag", "a", [("href", "foo'bar\"baz")]),
-            ])
-
-    def test_xhtml_empty_tag(self):
-        """Handling of XHTML-style empty start tags"""
-        self.check_events("<br />text<i></i>", [
-            ("starttag", "br", []),
-            ("data", "text"),
-            ("starttag", "i", []),
-            ("endtag", "i"),
-            ])
-
-    def test_processing_instruction_only(self):
-        self.check_events("<?processing instruction>", [
-            ("pi", "processing instruction"),
-            ])
-
-    def test_bad_nesting(self):
-        self.check_events("<a><b></a></b>", [
-            ("starttag", "a", []),
-            ("starttag", "b", []),
-            ("endtag", "a"),
-            ("endtag", "b"),
-            ])
-
-    def test_bare_ampersands(self):
-        self.check_events("this text & contains & ampersands &", [
-            ("data", "this text & contains & ampersands &"),
-            ])
-
-    def test_bare_pointy_brackets(self):
-        self.check_events("this < text > contains < bare>pointy< brackets", [
-            ("data", "this < text > contains < bare>pointy< brackets"),
-            ])
-
-    def test_attr_syntax(self):
-        output = [
-          ("starttag", "a", [("b", "v"), ("c", "v"), ("d", "v"), ("e", "e")])
-          ]
-        self.check_events("""<a b='v' c="v" d=v e>""", output)
-        self.check_events("""<a  b = 'v' c = "v" d = v e>""", output)
-        self.check_events("""<a\nb\n=\n'v'\nc\n=\n"v"\nd\n=\nv\ne>""", output)
-        self.check_events("""<a\tb\t=\t'v'\tc\t=\t"v"\td\t=\tv\te>""", output)
-
-    def test_attr_values(self):
-        self.check_events("""<a b='xxx\n\txxx' c="yyy\t\nyyy" d='\txyz\n'>""",
-                        [("starttag", "a", [("b", "xxx\n\txxx"),
-                                            ("c", "yyy\t\nyyy"),
-                                            ("d", "\txyz\n")])
-                         ])
-        self.check_events("""<a b='' c="">""", [
-            ("starttag", "a", [("b", ""), ("c", "")]),
-            ])
-        # URL construction stuff from RFC 1808:
-        safe = "$-_.+"
-        extra = "!*'(),"
-        reserved = ";/?:@&="
-        url = "http://example.com:8080/path/to/file?%s%s%s" % (
-            safe, extra, reserved)
-        self.check_events("""<e a=%s>""" % url, [
-            ("starttag", "e", [("a", url)]),
-            ])
-        # Regression test for SF patch #669683.
-        self.check_events("<e a=rgb(1,2,3)>", [
-            ("starttag", "e", [("a", "rgb(1,2,3)")]),
-            ])
-
-    def test_attr_values_entities(self):
-        """Substitution of entities and charrefs in attribute values"""
-        # SF bug #1452246
-        self.check_events("""<a b=&lt; c=&lt;&gt; d=&lt-&gt; e='&lt; '
-                                f="&xxx;" g='&#32;&#33;' h='&#500;'
-                                i='x?a=b&c=d;'
-                                j='&amp;#42;' k='&#38;#42;'>""",
-            [("starttag", "a", [("b", "<"),
-                                ("c", "<>"),
-                                ("d", "&lt->"),
-                                ("e", "< "),
-                                ("f", "&xxx;"),
-                                ("g", " !"),
-                                ("h", "&#500;"),
-                                ("i", "x?a=b&c=d;"),
-                                ("j", "&#42;"),
-                                ("k", "&#42;"),
-                                ])])
-
-    def test_convert_overrides(self):
-        # This checks that the character and entity reference
-        # conversion helpers are called at the documented times.  No
-        # attempt is made to really change what the parser accepts.
-        #
-        self.collector = HTMLEntityCollector
-        self.check_events(('<a title="&ldquo;test&#x201d;">foo</a>'
-                           '&foobar;&#42;'), [
-            ('entityref', 'convert', 'ldquo'),
-            ('charref', 'convert', 'x201d'),
-            ('starttag', 'a', [('title', '&ldquo;test&#x201d;')]),
-            ('data', 'foo'),
-            ('endtag', 'a'),
-            ('entityref', 'foobar'),
-            ('entityref', 'convert', 'foobar'),
-            ('charref', '42'),
-            ('charref', 'convert', '42'),
-            ('codepoint', 'convert', 42),
-            ])
-
-    def test_attr_funky_names(self):
-        self.check_events("""<a a.b='v' c:d=v e-f=v>""", [
-            ("starttag", "a", [("a.b", "v"), ("c:d", "v"), ("e-f", "v")]),
-            ])
-
-    def test_attr_value_ip6_url(self):
-        # http://www.python.org/sf/853506
-        self.check_events(("<a href='http://[1080::8:800:200C:417A]/'>"
-                           "<a href=http://[1080::8:800:200C:417A]/>"), [
-            ("starttag", "a", [("href", "http://[1080::8:800:200C:417A]/")]),
-            ("starttag", "a", [("href", "http://[1080::8:800:200C:417A]/")]),
-            ])
-
-    def test_weird_starttags(self):
-        self.check_events("<a<a>", [
-            ("starttag", "a", []),
-            ("starttag", "a", []),
-            ])
-        self.check_events("</a<a>", [
-            ("endtag", "a"),
-            ("starttag", "a", []),
-            ])
-
-    def test_declaration_junk_chars(self):
-        self.check_parse_error("<!DOCTYPE foo $ >")
-
-    def test_get_starttag_text(self):
-        s = """<foobar   \n   one="1"\ttwo=2   >"""
-        self.check_events(s, [
-            ("starttag", "foobar", [("one", "1"), ("two", "2")]),
-            ])
-
-    def test_cdata_content(self):
-        s = ("<cdata> <!-- not a comment --> &not-an-entity-ref; </cdata>"
-             "<notcdata> <!-- comment --> </notcdata>")
-        self.collector = CDATAEventCollector
-        self.check_events(s, [
-            ("starttag", "cdata", []),
-            ("data", " <!-- not a comment --> &not-an-entity-ref; "),
-            ("endtag", "cdata"),
-            ("starttag", "notcdata", []),
-            ("data", " "),
-            ("comment", " comment "),
-            ("data", " "),
-            ("endtag", "notcdata"),
-            ])
-        s = """<cdata> <not a='start tag'> </cdata>"""
-        self.check_events(s, [
-            ("starttag", "cdata", []),
-            ("data", " <not a='start tag'> "),
-            ("endtag", "cdata"),
-            ])
-
-    def test_illegal_declarations(self):
-        s = 'abc<!spacer type="block" height="25">def'
-        self.check_events(s, [
-            ("data", "abc"),
-            ("unknown decl", 'spacer type="block" height="25"'),
-            ("data", "def"),
-            ])
-
-    def test_enumerated_attr_type(self):
-        s = "<!DOCTYPE doc [<!ATTLIST doc attr (a | b) >]>"
-        self.check_events(s, [
-            ('decl', 'DOCTYPE doc [<!ATTLIST doc attr (a | b) >]'),
-            ])
-
-    def test_read_chunks(self):
-        # SF bug #1541697, this caused sgml parser to hang
-        # Just verify this code doesn't cause a hang.
-        CHUNK = 1024  # increasing this to 8212 makes the problem go away
-
-        f = open(test_support.findfile('sgml_input.html'))
-        fp = sgmllib.SGMLParser()
-        while 1:
-            data = f.read(CHUNK)
-            fp.feed(data)
-            if len(data) != CHUNK:
-                break
-
-    def test_only_decode_ascii(self):
-        # SF bug #1651995, make sure non-ascii character references are not decoded
-        s = '<signs exclamation="&#33" copyright="&#169" quoteleft="&#8216;">'
-        self.check_events(s, [
-            ('starttag', 'signs',
-             [('exclamation', '!'), ('copyright', '&#169'),
-              ('quoteleft', '&#8216;')]),
-            ])
-
-    # XXX These tests have been disabled by prefixing their names with
-    # an underscore.  The first two exercise outstanding bugs in the
-    # sgmllib module, and the third exhibits questionable behavior
-    # that needs to be carefully considered before changing it.
-
-    def _test_starttag_end_boundary(self):
-        self.check_events("<a b='<'>", [("starttag", "a", [("b", "<")])])
-        self.check_events("<a b='>'>", [("starttag", "a", [("b", ">")])])
-
-    def _test_buffer_artefacts(self):
-        output = [("starttag", "a", [("b", "<")])]
-        self.check_events(["<a b='<'>"], output)
-        self.check_events(["<a ", "b='<'>"], output)
-        self.check_events(["<a b", "='<'>"], output)
-        self.check_events(["<a b=", "'<'>"], output)
-        self.check_events(["<a b='<", "'>"], output)
-        self.check_events(["<a b='<'", ">"], output)
-
-        output = [("starttag", "a", [("b", ">")])]
-        self.check_events(["<a b='>'>"], output)
-        self.check_events(["<a ", "b='>'>"], output)
-        self.check_events(["<a b", "='>'>"], output)
-        self.check_events(["<a b=", "'>'>"], output)
-        self.check_events(["<a b='>", "'>"], output)
-        self.check_events(["<a b='>'", ">"], output)
-
-        output = [("comment", "abc")]
-        self.check_events(["", "<!--abc-->"], output)
-        self.check_events(["<", "!--abc-->"], output)
-        self.check_events(["<!", "--abc-->"], output)
-        self.check_events(["<!-", "-abc-->"], output)
-        self.check_events(["<!--", "abc-->"], output)
-        self.check_events(["<!--a", "bc-->"], output)
-        self.check_events(["<!--ab", "c-->"], output)
-        self.check_events(["<!--abc", "-->"], output)
-        self.check_events(["<!--abc-", "->"], output)
-        self.check_events(["<!--abc--", ">"], output)
-        self.check_events(["<!--abc-->", ""], output)
-
-    def _test_starttag_junk_chars(self):
-        self.check_parse_error("<")
-        self.check_parse_error("<>")
-        self.check_parse_error("</$>")
-        self.check_parse_error("</")
-        self.check_parse_error("</a")
-        self.check_parse_error("<$")
-        self.check_parse_error("<$>")
-        self.check_parse_error("<!")
-        self.check_parse_error("<a $>")
-        self.check_parse_error("<a")
-        self.check_parse_error("<a foo='bar'")
-        self.check_parse_error("<a foo='bar")
-        self.check_parse_error("<a foo='>'")
-        self.check_parse_error("<a foo='>")
-        self.check_parse_error("<a foo=>")
-
-
-def test_main():
-    test_support.run_unittest(SGMLParserTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sha.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sha.py
deleted file mode 100644
index 50b48e0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sha.py
+++ /dev/null
@@ -1,56 +0,0 @@
-# Testing sha module (NIST's Secure Hash Algorithm)
-
-# use the three examples from Federal Information Processing Standards
-# Publication 180-1, Secure Hash Standard,  1995 April 17
-# http://www.itl.nist.gov/div897/pubs/fip180-1.htm
-
-import warnings
-warnings.filterwarnings("ignore", "the sha module is deprecated.*",
-                        DeprecationWarning)
-
-import sha
-import unittest
-from test import test_support
-
-
-class SHATestCase(unittest.TestCase):
-    def check(self, data, digest):
-        # Check digest matches the expected value
-        obj = sha.new(data)
-        computed = obj.hexdigest()
-        self.assertTrue(computed == digest)
-
-        # Verify that the value doesn't change between two consecutive
-        # digest operations.
-        computed_again = obj.hexdigest()
-        self.assertTrue(computed == computed_again)
-
-        # Check hexdigest() output matches digest()'s output
-        digest = obj.digest()
-        hexd = ""
-        for c in digest:
-            hexd += '%02x' % ord(c)
-        self.assertTrue(computed == hexd)
-
-    def test_case_1(self):
-        self.check("abc",
-                   "a9993e364706816aba3e25717850c26c9cd0d89d")
-
-    def test_case_2(self):
-        self.check("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
-                   "84983e441c3bd26ebaae4aa1f95129e5e54670f1")
-
-    def test_case_3(self):
-        self.check("a" * 1000000,
-                   "34aa973cd4c4daa4f61eeb2bdbad27316534016f")
-
-    def test_case_4(self):
-        self.check(chr(0xAA) * 80,
-                   '4ca0ef38f1794b28a8f8ee110ee79d48ce13be25')
-
-def test_main():
-    test_support.run_unittest(SHATestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shelve.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shelve.py
deleted file mode 100644
index 09e33ed..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shelve.py
+++ /dev/null
@@ -1,163 +0,0 @@
-import os
-import unittest
-import shelve
-import glob
-from test import test_support
-
-test_support.import_module('anydbm', deprecated=True)
-
-class TestCase(unittest.TestCase):
-
-    fn = "shelftemp" + os.extsep + "db"
-
-    def test_close(self):
-        d1 = {}
-        s = shelve.Shelf(d1, protocol=2, writeback=False)
-        s['key1'] = [1,2,3,4]
-        self.assertEqual(s['key1'], [1,2,3,4])
-        self.assertEqual(len(s), 1)
-        s.close()
-        self.assertRaises(ValueError, len, s)
-        try:
-            s['key1']
-        except ValueError:
-            pass
-        else:
-            self.fail('Closed shelf should not find a key')
-
-    def test_ascii_file_shelf(self):
-        try:
-            s = shelve.open(self.fn, protocol=0)
-            s['key1'] = (1,2,3,4)
-            self.assertEqual(s['key1'], (1,2,3,4))
-            s.close()
-        finally:
-            for f in glob.glob(self.fn+"*"):
-                os.unlink(f)
-
-    def test_binary_file_shelf(self):
-        try:
-            s = shelve.open(self.fn, protocol=1)
-            s['key1'] = (1,2,3,4)
-            self.assertEqual(s['key1'], (1,2,3,4))
-            s.close()
-        finally:
-            for f in glob.glob(self.fn+"*"):
-                os.unlink(f)
-
-    def test_proto2_file_shelf(self):
-        try:
-            s = shelve.open(self.fn, protocol=2)
-            s['key1'] = (1,2,3,4)
-            self.assertEqual(s['key1'], (1,2,3,4))
-            s.close()
-        finally:
-            for f in glob.glob(self.fn+"*"):
-                os.unlink(f)
-
-    def test_in_memory_shelf(self):
-        d1 = {}
-        s = shelve.Shelf(d1, protocol=0)
-        s['key1'] = (1,2,3,4)
-        self.assertEqual(s['key1'], (1,2,3,4))
-        s.close()
-        d2 = {}
-        s = shelve.Shelf(d2, protocol=1)
-        s['key1'] = (1,2,3,4)
-        self.assertEqual(s['key1'], (1,2,3,4))
-        s.close()
-
-        self.assertEqual(len(d1), 1)
-        self.assertNotEqual(d1, d2)
-
-    def test_mutable_entry(self):
-        d1 = {}
-        s = shelve.Shelf(d1, protocol=2, writeback=False)
-        s['key1'] = [1,2,3,4]
-        self.assertEqual(s['key1'], [1,2,3,4])
-        s['key1'].append(5)
-        self.assertEqual(s['key1'], [1,2,3,4])
-        s.close()
-
-        d2 = {}
-        s = shelve.Shelf(d2, protocol=2, writeback=True)
-        s['key1'] = [1,2,3,4]
-        self.assertEqual(s['key1'], [1,2,3,4])
-        s['key1'].append(5)
-        self.assertEqual(s['key1'], [1,2,3,4,5])
-        s.close()
-
-        self.assertEqual(len(d1), 1)
-        self.assertEqual(len(d2), 1)
-
-    def test_writeback_also_writes_immediately(self):
-        # Issue 5754
-        d = {}
-        s = shelve.Shelf(d, writeback=True)
-        s['key'] = [1]
-        p1 = d['key']  # Will give a KeyError if backing store not updated
-        s['key'].append(2)
-        s.close()
-        p2 = d['key']
-        self.assertNotEqual(p1, p2)  # Write creates new object in store
-
-
-from test import mapping_tests
-
-class TestShelveBase(mapping_tests.BasicTestMappingProtocol):
-    fn = "shelftemp.db"
-    counter = 0
-    def __init__(self, *args, **kw):
-        self._db = []
-        mapping_tests.BasicTestMappingProtocol.__init__(self, *args, **kw)
-    type2test = shelve.Shelf
-    def _reference(self):
-        return {"key1":"value1", "key2":2, "key3":(1,2,3)}
-    def _empty_mapping(self):
-        if self._in_mem:
-            x= shelve.Shelf({}, **self._args)
-        else:
-            self.counter+=1
-            x= shelve.open(self.fn+str(self.counter), **self._args)
-        self._db.append(x)
-        return x
-    def tearDown(self):
-        for db in self._db:
-            db.close()
-        self._db = []
-        if not self._in_mem:
-            for f in glob.glob(self.fn+"*"):
-                test_support.unlink(f)
-
-class TestAsciiFileShelve(TestShelveBase):
-    _args={'protocol':0}
-    _in_mem = False
-class TestBinaryFileShelve(TestShelveBase):
-    _args={'protocol':1}
-    _in_mem = False
-class TestProto2FileShelve(TestShelveBase):
-    _args={'protocol':2}
-    _in_mem = False
-class TestAsciiMemShelve(TestShelveBase):
-    _args={'protocol':0}
-    _in_mem = True
-class TestBinaryMemShelve(TestShelveBase):
-    _args={'protocol':1}
-    _in_mem = True
-class TestProto2MemShelve(TestShelveBase):
-    _args={'protocol':2}
-    _in_mem = True
-
-def test_main():
-    test_support.run_unittest(
-        TestAsciiFileShelve,
-        TestBinaryFileShelve,
-        TestProto2FileShelve,
-        TestAsciiMemShelve,
-        TestBinaryMemShelve,
-        TestProto2MemShelve,
-        TestCase
-    )
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shlex.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shlex.py
deleted file mode 100644
index 28118a5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shlex.py
+++ /dev/null
@@ -1,191 +0,0 @@
-# -*- coding: iso-8859-1 -*-
-import unittest
-import shlex
-
-from test import test_support
-
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-
-# The original test data set was from shellwords, by Hartmut Goebel.
-
-data = r"""x|x|
-foo bar|foo|bar|
- foo bar|foo|bar|
- foo bar |foo|bar|
-foo   bar    bla     fasel|foo|bar|bla|fasel|
-x y  z              xxxx|x|y|z|xxxx|
-\x bar|\|x|bar|
-\ x bar|\|x|bar|
-\ bar|\|bar|
-foo \x bar|foo|\|x|bar|
-foo \ x bar|foo|\|x|bar|
-foo \ bar|foo|\|bar|
-foo "bar" bla|foo|"bar"|bla|
-"foo" "bar" "bla"|"foo"|"bar"|"bla"|
-"foo" bar "bla"|"foo"|bar|"bla"|
-"foo" bar bla|"foo"|bar|bla|
-foo 'bar' bla|foo|'bar'|bla|
-'foo' 'bar' 'bla'|'foo'|'bar'|'bla'|
-'foo' bar 'bla'|'foo'|bar|'bla'|
-'foo' bar bla|'foo'|bar|bla|
-blurb foo"bar"bar"fasel" baz|blurb|foo"bar"bar"fasel"|baz|
-blurb foo'bar'bar'fasel' baz|blurb|foo'bar'bar'fasel'|baz|
-""|""|
-''|''|
-foo "" bar|foo|""|bar|
-foo '' bar|foo|''|bar|
-foo "" "" "" bar|foo|""|""|""|bar|
-foo '' '' '' bar|foo|''|''|''|bar|
-\""|\|""|
-"\"|"\"|
-"foo\ bar"|"foo\ bar"|
-"foo\\ bar"|"foo\\ bar"|
-"foo\\ bar\"|"foo\\ bar\"|
-"foo\\" bar\""|"foo\\"|bar|\|""|
-"foo\\ bar\" dfadf"|"foo\\ bar\"|dfadf"|
-"foo\\\ bar\" dfadf"|"foo\\\ bar\"|dfadf"|
-"foo\\\x bar\" dfadf"|"foo\\\x bar\"|dfadf"|
-"foo\x bar\" dfadf"|"foo\x bar\"|dfadf"|
-\''|\|''|
-'foo\ bar'|'foo\ bar'|
-'foo\\ bar'|'foo\\ bar'|
-"foo\\\x bar\" df'a\ 'df'|"foo\\\x bar\"|df'a|\|'df'|
-\"foo"|\|"foo"|
-\"foo"\x|\|"foo"|\|x|
-"foo\x"|"foo\x"|
-"foo\ "|"foo\ "|
-foo\ xx|foo|\|xx|
-foo\ x\x|foo|\|x|\|x|
-foo\ x\x\""|foo|\|x|\|x|\|""|
-"foo\ x\x"|"foo\ x\x"|
-"foo\ x\x\\"|"foo\ x\x\\"|
-"foo\ x\x\\""foobar"|"foo\ x\x\\"|"foobar"|
-"foo\ x\x\\"\''"foobar"|"foo\ x\x\\"|\|''|"foobar"|
-"foo\ x\x\\"\'"fo'obar"|"foo\ x\x\\"|\|'"fo'|obar"|
-"foo\ x\x\\"\'"fo'obar" 'don'\''t'|"foo\ x\x\\"|\|'"fo'|obar"|'don'|\|''|t'|
-'foo\ bar'|'foo\ bar'|
-'foo\\ bar'|'foo\\ bar'|
-foo\ bar|foo|\|bar|
-foo#bar\nbaz|foobaz|
-:-) ;-)|:|-|)|;|-|)|
-áéíóú|á|é|í|ó|ú|
-"""
-
-posix_data = r"""x|x|
-foo bar|foo|bar|
- foo bar|foo|bar|
- foo bar |foo|bar|
-foo   bar    bla     fasel|foo|bar|bla|fasel|
-x y  z              xxxx|x|y|z|xxxx|
-\x bar|x|bar|
-\ x bar| x|bar|
-\ bar| bar|
-foo \x bar|foo|x|bar|
-foo \ x bar|foo| x|bar|
-foo \ bar|foo| bar|
-foo "bar" bla|foo|bar|bla|
-"foo" "bar" "bla"|foo|bar|bla|
-"foo" bar "bla"|foo|bar|bla|
-"foo" bar bla|foo|bar|bla|
-foo 'bar' bla|foo|bar|bla|
-'foo' 'bar' 'bla'|foo|bar|bla|
-'foo' bar 'bla'|foo|bar|bla|
-'foo' bar bla|foo|bar|bla|
-blurb foo"bar"bar"fasel" baz|blurb|foobarbarfasel|baz|
-blurb foo'bar'bar'fasel' baz|blurb|foobarbarfasel|baz|
-""||
-''||
-foo "" bar|foo||bar|
-foo '' bar|foo||bar|
-foo "" "" "" bar|foo||||bar|
-foo '' '' '' bar|foo||||bar|
-\"|"|
-"\""|"|
-"foo\ bar"|foo\ bar|
-"foo\\ bar"|foo\ bar|
-"foo\\ bar\""|foo\ bar"|
-"foo\\" bar\"|foo\|bar"|
-"foo\\ bar\" dfadf"|foo\ bar" dfadf|
-"foo\\\ bar\" dfadf"|foo\\ bar" dfadf|
-"foo\\\x bar\" dfadf"|foo\\x bar" dfadf|
-"foo\x bar\" dfadf"|foo\x bar" dfadf|
-\'|'|
-'foo\ bar'|foo\ bar|
-'foo\\ bar'|foo\\ bar|
-"foo\\\x bar\" df'a\ 'df"|foo\\x bar" df'a\ 'df|
-\"foo|"foo|
-\"foo\x|"foox|
-"foo\x"|foo\x|
-"foo\ "|foo\ |
-foo\ xx|foo xx|
-foo\ x\x|foo xx|
-foo\ x\x\"|foo xx"|
-"foo\ x\x"|foo\ x\x|
-"foo\ x\x\\"|foo\ x\x\|
-"foo\ x\x\\""foobar"|foo\ x\x\foobar|
-"foo\ x\x\\"\'"foobar"|foo\ x\x\'foobar|
-"foo\ x\x\\"\'"fo'obar"|foo\ x\x\'fo'obar|
-"foo\ x\x\\"\'"fo'obar" 'don'\''t'|foo\ x\x\'fo'obar|don't|
-"foo\ x\x\\"\'"fo'obar" 'don'\''t' \\|foo\ x\x\'fo'obar|don't|\|
-'foo\ bar'|foo\ bar|
-'foo\\ bar'|foo\\ bar|
-foo\ bar|foo bar|
-foo#bar\nbaz|foo|baz|
-:-) ;-)|:-)|;-)|
-áéíóú|áéíóú|
-"""
-
-class ShlexTest(unittest.TestCase):
-    def setUp(self):
-        self.data = [x.split("|")[:-1]
-                     for x in data.splitlines()]
-        self.posix_data = [x.split("|")[:-1]
-                           for x in posix_data.splitlines()]
-        for item in self.data:
-            item[0] = item[0].replace(r"\n", "\n")
-        for item in self.posix_data:
-            item[0] = item[0].replace(r"\n", "\n")
-
-    def splitTest(self, data, comments):
-        for i in range(len(data)):
-            l = shlex.split(data[i][0], comments=comments)
-            self.assertEqual(l, data[i][1:],
-                             "%s: %s != %s" %
-                             (data[i][0], l, data[i][1:]))
-
-    def oldSplit(self, s):
-        ret = []
-        lex = shlex.shlex(StringIO(s))
-        tok = lex.get_token()
-        while tok:
-            ret.append(tok)
-            tok = lex.get_token()
-        return ret
-
-    def testSplitPosix(self):
-        """Test data splitting with posix parser"""
-        self.splitTest(self.posix_data, comments=True)
-
-    def testCompat(self):
-        """Test compatibility interface"""
-        for i in range(len(self.data)):
-            l = self.oldSplit(self.data[i][0])
-            self.assertEqual(l, self.data[i][1:],
-                             "%s: %s != %s" %
-                             (self.data[i][0], l, self.data[i][1:]))
-
-# Allow this test to be used with old shlex.py
-if not getattr(shlex, "split", None):
-    for methname in dir(ShlexTest):
-        if methname.startswith("test") and methname != "testCompat":
-            delattr(ShlexTest, methname)
-
-def test_main():
-    test_support.run_unittest(ShlexTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shutil.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shutil.py
deleted file mode 100644
index 8b49c53..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_shutil.py
+++ /dev/null
@@ -1,831 +0,0 @@
-# Copyright (C) 2003 Python Software Foundation
-
-import unittest
-import shutil
-import tempfile
-import sys
-import stat
-import os
-import os.path
-from os.path import splitdrive
-from distutils.spawn import find_executable, spawn
-from shutil import (_make_tarball, _make_zipfile, make_archive,
-                    register_archive_format, unregister_archive_format,
-                    get_archive_formats)
-import tarfile
-import warnings
-
-from test import test_support
-from test.test_support import TESTFN, check_warnings, captured_stdout
-
-TESTFN2 = TESTFN + "2"
-
-try:
-    import grp
-    import pwd
-    UID_GID_SUPPORT = True
-except ImportError:
-    UID_GID_SUPPORT = False
-
-try:
-    import zlib
-except ImportError:
-    zlib = None
-
-try:
-    import zipfile
-    ZIP_SUPPORT = True
-except ImportError:
-    ZIP_SUPPORT = find_executable('zip')
-
-class TestShutil(unittest.TestCase):
-
-    def setUp(self):
-        super(TestShutil, self).setUp()
-        self.tempdirs = []
-
-    def tearDown(self):
-        super(TestShutil, self).tearDown()
-        while self.tempdirs:
-            d = self.tempdirs.pop()
-            shutil.rmtree(d, os.name in ('nt', 'cygwin'))
-
-    def write_file(self, path, content='xxx'):
-        """Writes a file in the given path.
-
-
-        path can be a string or a sequence.
-        """
-        if isinstance(path, (list, tuple)):
-            path = os.path.join(*path)
-        f = open(path, 'w')
-        try:
-            f.write(content)
-        finally:
-            f.close()
-
-    def mkdtemp(self):
-        """Create a temporary directory that will be cleaned up.
-
-        Returns the path of the directory.
-        """
-        d = tempfile.mkdtemp()
-        self.tempdirs.append(d)
-        return d
-    def test_rmtree_errors(self):
-        # filename is guaranteed not to exist
-        filename = tempfile.mktemp()
-        self.assertRaises(OSError, shutil.rmtree, filename)
-
-    # See bug #1071513 for why we don't run this on cygwin
-    # and bug #1076467 for why we don't run this as root.
-    if (hasattr(os, 'chmod') and sys.platform[:6] != 'cygwin'
-        and not (hasattr(os, 'geteuid') and os.geteuid() == 0)):
-        def test_on_error(self):
-            self.errorState = 0
-            os.mkdir(TESTFN)
-            self.childpath = os.path.join(TESTFN, 'a')
-            f = open(self.childpath, 'w')
-            f.close()
-            old_dir_mode = os.stat(TESTFN).st_mode
-            old_child_mode = os.stat(self.childpath).st_mode
-            # Make unwritable.
-            os.chmod(self.childpath, stat.S_IREAD)
-            os.chmod(TESTFN, stat.S_IREAD)
-
-            shutil.rmtree(TESTFN, onerror=self.check_args_to_onerror)
-            # Test whether onerror has actually been called.
-            self.assertEqual(self.errorState, 2,
-                             "Expected call to onerror function did not happen.")
-
-            # Make writable again.
-            os.chmod(TESTFN, old_dir_mode)
-            os.chmod(self.childpath, old_child_mode)
-
-            # Clean up.
-            shutil.rmtree(TESTFN)
-
-    def check_args_to_onerror(self, func, arg, exc):
-        # test_rmtree_errors deliberately runs rmtree
-        # on a directory that is chmod 400, which will fail.
-        # This function is run when shutil.rmtree fails.
-        # 99.9% of the time it initially fails to remove
-        # a file in the directory, so the first time through
-        # func is os.remove.
-        # However, some Linux machines running ZFS on
-        # FUSE experienced a failure earlier in the process
-        # at os.listdir.  The first failure may legally
-        # be either.
-        if self.errorState == 0:
-            if func is os.remove:
-                self.assertEqual(arg, self.childpath)
-            else:
-                self.assertIs(func, os.listdir,
-                              "func must be either os.remove or os.listdir")
-                self.assertEqual(arg, TESTFN)
-            self.assertTrue(issubclass(exc[0], OSError))
-            self.errorState = 1
-        else:
-            self.assertEqual(func, os.rmdir)
-            self.assertEqual(arg, TESTFN)
-            self.assertTrue(issubclass(exc[0], OSError))
-            self.errorState = 2
-
-    def test_rmtree_dont_delete_file(self):
-        # When called on a file instead of a directory, don't delete it.
-        handle, path = tempfile.mkstemp()
-        os.fdopen(handle).close()
-        self.assertRaises(OSError, shutil.rmtree, path)
-        os.remove(path)
-
-    def test_copytree_simple(self):
-        def write_data(path, data):
-            f = open(path, "w")
-            f.write(data)
-            f.close()
-
-        def read_data(path):
-            f = open(path)
-            data = f.read()
-            f.close()
-            return data
-
-        src_dir = tempfile.mkdtemp()
-        dst_dir = os.path.join(tempfile.mkdtemp(), 'destination')
-
-        write_data(os.path.join(src_dir, 'test.txt'), '123')
-
-        os.mkdir(os.path.join(src_dir, 'test_dir'))
-        write_data(os.path.join(src_dir, 'test_dir', 'test.txt'), '456')
-
-        try:
-            shutil.copytree(src_dir, dst_dir)
-            self.assertTrue(os.path.isfile(os.path.join(dst_dir, 'test.txt')))
-            self.assertTrue(os.path.isdir(os.path.join(dst_dir, 'test_dir')))
-            self.assertTrue(os.path.isfile(os.path.join(dst_dir, 'test_dir',
-                                                        'test.txt')))
-            actual = read_data(os.path.join(dst_dir, 'test.txt'))
-            self.assertEqual(actual, '123')
-            actual = read_data(os.path.join(dst_dir, 'test_dir', 'test.txt'))
-            self.assertEqual(actual, '456')
-        finally:
-            for path in (
-                    os.path.join(src_dir, 'test.txt'),
-                    os.path.join(dst_dir, 'test.txt'),
-                    os.path.join(src_dir, 'test_dir', 'test.txt'),
-                    os.path.join(dst_dir, 'test_dir', 'test.txt'),
-                ):
-                if os.path.exists(path):
-                    os.remove(path)
-            for path in (src_dir,
-                    os.path.dirname(dst_dir)
-                ):
-                if os.path.exists(path):
-                    shutil.rmtree(path)
-
-    def test_copytree_with_exclude(self):
-
-        def write_data(path, data):
-            f = open(path, "w")
-            f.write(data)
-            f.close()
-
-        def read_data(path):
-            f = open(path)
-            data = f.read()
-            f.close()
-            return data
-
-        # creating data
-        join = os.path.join
-        exists = os.path.exists
-        src_dir = tempfile.mkdtemp()
-        try:
-            dst_dir = join(tempfile.mkdtemp(), 'destination')
-            write_data(join(src_dir, 'test.txt'), '123')
-            write_data(join(src_dir, 'test.tmp'), '123')
-            os.mkdir(join(src_dir, 'test_dir'))
-            write_data(join(src_dir, 'test_dir', 'test.txt'), '456')
-            os.mkdir(join(src_dir, 'test_dir2'))
-            write_data(join(src_dir, 'test_dir2', 'test.txt'), '456')
-            os.mkdir(join(src_dir, 'test_dir2', 'subdir'))
-            os.mkdir(join(src_dir, 'test_dir2', 'subdir2'))
-            write_data(join(src_dir, 'test_dir2', 'subdir', 'test.txt'), '456')
-            write_data(join(src_dir, 'test_dir2', 'subdir2', 'test.py'), '456')
-
-
-            # testing glob-like patterns
-            try:
-                patterns = shutil.ignore_patterns('*.tmp', 'test_dir2')
-                shutil.copytree(src_dir, dst_dir, ignore=patterns)
-                # checking the result: some elements should not be copied
-                self.assertTrue(exists(join(dst_dir, 'test.txt')))
-                self.assertTrue(not exists(join(dst_dir, 'test.tmp')))
-                self.assertTrue(not exists(join(dst_dir, 'test_dir2')))
-            finally:
-                if os.path.exists(dst_dir):
-                    shutil.rmtree(dst_dir)
-            try:
-                patterns = shutil.ignore_patterns('*.tmp', 'subdir*')
-                shutil.copytree(src_dir, dst_dir, ignore=patterns)
-                # checking the result: some elements should not be copied
-                self.assertTrue(not exists(join(dst_dir, 'test.tmp')))
-                self.assertTrue(not exists(join(dst_dir, 'test_dir2', 'subdir2')))
-                self.assertTrue(not exists(join(dst_dir, 'test_dir2', 'subdir')))
-            finally:
-                if os.path.exists(dst_dir):
-                    shutil.rmtree(dst_dir)
-
-            # testing callable-style
-            try:
-                def _filter(src, names):
-                    res = []
-                    for name in names:
-                        path = os.path.join(src, name)
-
-                        if (os.path.isdir(path) and
-                            path.split()[-1] == 'subdir'):
-                            res.append(name)
-                        elif os.path.splitext(path)[-1] in ('.py'):
-                            res.append(name)
-                    return res
-
-                shutil.copytree(src_dir, dst_dir, ignore=_filter)
-
-                # checking the result: some elements should not be copied
-                self.assertTrue(not exists(join(dst_dir, 'test_dir2', 'subdir2',
-                                        'test.py')))
-                self.assertTrue(not exists(join(dst_dir, 'test_dir2', 'subdir')))
-
-            finally:
-                if os.path.exists(dst_dir):
-                    shutil.rmtree(dst_dir)
-        finally:
-            shutil.rmtree(src_dir)
-            shutil.rmtree(os.path.dirname(dst_dir))
-
-    if hasattr(os, "symlink"):
-        def test_dont_copy_file_onto_link_to_itself(self):
-            # bug 851123.
-            os.mkdir(TESTFN)
-            src = os.path.join(TESTFN, 'cheese')
-            dst = os.path.join(TESTFN, 'shop')
-            try:
-                f = open(src, 'w')
-                f.write('cheddar')
-                f.close()
-
-                os.link(src, dst)
-                self.assertRaises(shutil.Error, shutil.copyfile, src, dst)
-                with open(src, 'r') as f:
-                    self.assertEqual(f.read(), 'cheddar')
-                os.remove(dst)
-
-                # Using `src` here would mean we end up with a symlink pointing
-                # to TESTFN/TESTFN/cheese, while it should point at
-                # TESTFN/cheese.
-                os.symlink('cheese', dst)
-                self.assertRaises(shutil.Error, shutil.copyfile, src, dst)
-                with open(src, 'r') as f:
-                    self.assertEqual(f.read(), 'cheddar')
-                os.remove(dst)
-            finally:
-                try:
-                    shutil.rmtree(TESTFN)
-                except OSError:
-                    pass
-
-        def test_rmtree_on_symlink(self):
-            # bug 1669.
-            os.mkdir(TESTFN)
-            try:
-                src = os.path.join(TESTFN, 'cheese')
-                dst = os.path.join(TESTFN, 'shop')
-                os.mkdir(src)
-                os.symlink(src, dst)
-                self.assertRaises(OSError, shutil.rmtree, dst)
-            finally:
-                shutil.rmtree(TESTFN, ignore_errors=True)
-
-    if hasattr(os, "mkfifo"):
-        # Issue #3002: copyfile and copytree block indefinitely on named pipes
-        def test_copyfile_named_pipe(self):
-            os.mkfifo(TESTFN)
-            try:
-                self.assertRaises(shutil.SpecialFileError,
-                                  shutil.copyfile, TESTFN, TESTFN2)
-                self.assertRaises(shutil.SpecialFileError,
-                                  shutil.copyfile, __file__, TESTFN)
-            finally:
-                os.remove(TESTFN)
-
-        def test_copytree_named_pipe(self):
-            os.mkdir(TESTFN)
-            try:
-                subdir = os.path.join(TESTFN, "subdir")
-                os.mkdir(subdir)
-                pipe = os.path.join(subdir, "mypipe")
-                os.mkfifo(pipe)
-                try:
-                    shutil.copytree(TESTFN, TESTFN2)
-                except shutil.Error as e:
-                    errors = e.args[0]
-                    self.assertEqual(len(errors), 1)
-                    src, dst, error_msg = errors[0]
-                    self.assertEqual("`%s` is a named pipe" % pipe, error_msg)
-                else:
-                    self.fail("shutil.Error should have been raised")
-            finally:
-                shutil.rmtree(TESTFN, ignore_errors=True)
-                shutil.rmtree(TESTFN2, ignore_errors=True)
-
-    @unittest.skipUnless(zlib, "requires zlib")
-    def test_make_tarball(self):
-        # creating something to tar
-        tmpdir = self.mkdtemp()
-        self.write_file([tmpdir, 'file1'], 'xxx')
-        self.write_file([tmpdir, 'file2'], 'xxx')
-        os.mkdir(os.path.join(tmpdir, 'sub'))
-        self.write_file([tmpdir, 'sub', 'file3'], 'xxx')
-
-        tmpdir2 = self.mkdtemp()
-        unittest.skipUnless(splitdrive(tmpdir)[0] == splitdrive(tmpdir2)[0],
-                            "source and target should be on same drive")
-
-        base_name = os.path.join(tmpdir2, 'archive')
-
-        # working with relative paths to avoid tar warnings
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        try:
-            _make_tarball(splitdrive(base_name)[1], '.')
-        finally:
-            os.chdir(old_dir)
-
-        # check if the compressed tarball was created
-        tarball = base_name + '.tar.gz'
-        self.assertTrue(os.path.exists(tarball))
-
-        # trying an uncompressed one
-        base_name = os.path.join(tmpdir2, 'archive')
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        try:
-            _make_tarball(splitdrive(base_name)[1], '.', compress=None)
-        finally:
-            os.chdir(old_dir)
-        tarball = base_name + '.tar'
-        self.assertTrue(os.path.exists(tarball))
-
-    def _tarinfo(self, path):
-        tar = tarfile.open(path)
-        try:
-            names = tar.getnames()
-            names.sort()
-            return tuple(names)
-        finally:
-            tar.close()
-
-    def _create_files(self):
-        # creating something to tar
-        tmpdir = self.mkdtemp()
-        dist = os.path.join(tmpdir, 'dist')
-        os.mkdir(dist)
-        self.write_file([dist, 'file1'], 'xxx')
-        self.write_file([dist, 'file2'], 'xxx')
-        os.mkdir(os.path.join(dist, 'sub'))
-        self.write_file([dist, 'sub', 'file3'], 'xxx')
-        os.mkdir(os.path.join(dist, 'sub2'))
-        tmpdir2 = self.mkdtemp()
-        base_name = os.path.join(tmpdir2, 'archive')
-        return tmpdir, tmpdir2, base_name
-
-    @unittest.skipUnless(zlib, "Requires zlib")
-    @unittest.skipUnless(find_executable('tar') and find_executable('gzip'),
-                         'Need the tar command to run')
-    def test_tarfile_vs_tar(self):
-        tmpdir, tmpdir2, base_name =  self._create_files()
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        try:
-            _make_tarball(base_name, 'dist')
-        finally:
-            os.chdir(old_dir)
-
-        # check if the compressed tarball was created
-        tarball = base_name + '.tar.gz'
-        self.assertTrue(os.path.exists(tarball))
-
-        # now create another tarball using `tar`
-        tarball2 = os.path.join(tmpdir, 'archive2.tar.gz')
-        tar_cmd = ['tar', '-cf', 'archive2.tar', 'dist']
-        gzip_cmd = ['gzip', '-f9', 'archive2.tar']
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        try:
-            with captured_stdout() as s:
-                spawn(tar_cmd)
-                spawn(gzip_cmd)
-        finally:
-            os.chdir(old_dir)
-
-        self.assertTrue(os.path.exists(tarball2))
-        # let's compare both tarballs
-        self.assertEqual(self._tarinfo(tarball), self._tarinfo(tarball2))
-
-        # trying an uncompressed one
-        base_name = os.path.join(tmpdir2, 'archive')
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        try:
-            _make_tarball(base_name, 'dist', compress=None)
-        finally:
-            os.chdir(old_dir)
-        tarball = base_name + '.tar'
-        self.assertTrue(os.path.exists(tarball))
-
-        # now for a dry_run
-        base_name = os.path.join(tmpdir2, 'archive')
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        try:
-            _make_tarball(base_name, 'dist', compress=None, dry_run=True)
-        finally:
-            os.chdir(old_dir)
-        tarball = base_name + '.tar'
-        self.assertTrue(os.path.exists(tarball))
-
-    @unittest.skipUnless(zlib, "Requires zlib")
-    @unittest.skipUnless(ZIP_SUPPORT, 'Need zip support to run')
-    def test_make_zipfile(self):
-        # creating something to tar
-        tmpdir = self.mkdtemp()
-        self.write_file([tmpdir, 'file1'], 'xxx')
-        self.write_file([tmpdir, 'file2'], 'xxx')
-
-        tmpdir2 = self.mkdtemp()
-        base_name = os.path.join(tmpdir2, 'archive')
-        _make_zipfile(base_name, tmpdir)
-
-        # check if the compressed tarball was created
-        tarball = base_name + '.zip'
-        self.assertTrue(os.path.exists(tarball))
-
-
-    def test_make_archive(self):
-        tmpdir = self.mkdtemp()
-        base_name = os.path.join(tmpdir, 'archive')
-        self.assertRaises(ValueError, make_archive, base_name, 'xxx')
-
-    @unittest.skipUnless(zlib, "Requires zlib")
-    def test_make_archive_owner_group(self):
-        # testing make_archive with owner and group, with various combinations
-        # this works even if there's not gid/uid support
-        if UID_GID_SUPPORT:
-            group = grp.getgrgid(0)[0]
-            owner = pwd.getpwuid(0)[0]
-        else:
-            group = owner = 'root'
-
-        base_dir, root_dir, base_name =  self._create_files()
-        base_name = os.path.join(self.mkdtemp() , 'archive')
-        res = make_archive(base_name, 'zip', root_dir, base_dir, owner=owner,
-                           group=group)
-        self.assertTrue(os.path.exists(res))
-
-        res = make_archive(base_name, 'zip', root_dir, base_dir)
-        self.assertTrue(os.path.exists(res))
-
-        res = make_archive(base_name, 'tar', root_dir, base_dir,
-                           owner=owner, group=group)
-        self.assertTrue(os.path.exists(res))
-
-        res = make_archive(base_name, 'tar', root_dir, base_dir,
-                           owner='kjhkjhkjg', group='oihohoh')
-        self.assertTrue(os.path.exists(res))
-
-    @unittest.skipUnless(zlib, "Requires zlib")
-    @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
-    def test_tarfile_root_owner(self):
-        tmpdir, tmpdir2, base_name =  self._create_files()
-        old_dir = os.getcwd()
-        os.chdir(tmpdir)
-        group = grp.getgrgid(0)[0]
-        owner = pwd.getpwuid(0)[0]
-        try:
-            archive_name = _make_tarball(base_name, 'dist', compress=None,
-                                         owner=owner, group=group)
-        finally:
-            os.chdir(old_dir)
-
-        # check if the compressed tarball was created
-        self.assertTrue(os.path.exists(archive_name))
-
-        # now checks the rights
-        archive = tarfile.open(archive_name)
-        try:
-            for member in archive.getmembers():
-                self.assertEqual(member.uid, 0)
-                self.assertEqual(member.gid, 0)
-        finally:
-            archive.close()
-
-    def test_make_archive_cwd(self):
-        current_dir = os.getcwd()
-        def _breaks(*args, **kw):
-            raise RuntimeError()
-
-        register_archive_format('xxx', _breaks, [], 'xxx file')
-        try:
-            try:
-                make_archive('xxx', 'xxx', root_dir=self.mkdtemp())
-            except Exception:
-                pass
-            self.assertEqual(os.getcwd(), current_dir)
-        finally:
-            unregister_archive_format('xxx')
-
-    def test_register_archive_format(self):
-
-        self.assertRaises(TypeError, register_archive_format, 'xxx', 1)
-        self.assertRaises(TypeError, register_archive_format, 'xxx', lambda: x,
-                          1)
-        self.assertRaises(TypeError, register_archive_format, 'xxx', lambda: x,
-                          [(1, 2), (1, 2, 3)])
-
-        register_archive_format('xxx', lambda: x, [(1, 2)], 'xxx file')
-        formats = [name for name, params in get_archive_formats()]
-        self.assertIn('xxx', formats)
-
-        unregister_archive_format('xxx')
-        formats = [name for name, params in get_archive_formats()]
-        self.assertNotIn('xxx', formats)
-
-
-class TestMove(unittest.TestCase):
-
-    def setUp(self):
-        filename = "foo"
-        self.src_dir = tempfile.mkdtemp()
-        self.dst_dir = tempfile.mkdtemp()
-        self.src_file = os.path.join(self.src_dir, filename)
-        self.dst_file = os.path.join(self.dst_dir, filename)
-        # Try to create a dir in the current directory, hoping that it is
-        # not located on the same filesystem as the system tmp dir.
-        try:
-            self.dir_other_fs = tempfile.mkdtemp(
-                dir=os.path.dirname(__file__))
-            self.file_other_fs = os.path.join(self.dir_other_fs,
-                filename)
-        except OSError:
-            self.dir_other_fs = None
-        with open(self.src_file, "wb") as f:
-            f.write("spam")
-
-    def tearDown(self):
-        for d in (self.src_dir, self.dst_dir, self.dir_other_fs):
-            try:
-                if d:
-                    shutil.rmtree(d)
-            except:
-                pass
-
-    def _check_move_file(self, src, dst, real_dst):
-        with open(src, "rb") as f:
-            contents = f.read()
-        shutil.move(src, dst)
-        with open(real_dst, "rb") as f:
-            self.assertEqual(contents, f.read())
-        self.assertFalse(os.path.exists(src))
-
-    def _check_move_dir(self, src, dst, real_dst):
-        contents = sorted(os.listdir(src))
-        shutil.move(src, dst)
-        self.assertEqual(contents, sorted(os.listdir(real_dst)))
-        self.assertFalse(os.path.exists(src))
-
-    def test_move_file(self):
-        # Move a file to another location on the same filesystem.
-        self._check_move_file(self.src_file, self.dst_file, self.dst_file)
-
-    def test_move_file_to_dir(self):
-        # Move a file inside an existing dir on the same filesystem.
-        self._check_move_file(self.src_file, self.dst_dir, self.dst_file)
-
-    def test_move_file_other_fs(self):
-        # Move a file to an existing dir on another filesystem.
-        if not self.dir_other_fs:
-            # skip
-            return
-        self._check_move_file(self.src_file, self.file_other_fs,
-            self.file_other_fs)
-
-    def test_move_file_to_dir_other_fs(self):
-        # Move a file to another location on another filesystem.
-        if not self.dir_other_fs:
-            # skip
-            return
-        self._check_move_file(self.src_file, self.dir_other_fs,
-            self.file_other_fs)
-
-    def test_move_dir(self):
-        # Move a dir to another location on the same filesystem.
-        dst_dir = tempfile.mktemp()
-        try:
-            self._check_move_dir(self.src_dir, dst_dir, dst_dir)
-        finally:
-            try:
-                shutil.rmtree(dst_dir)
-            except:
-                pass
-
-    def test_move_dir_other_fs(self):
-        # Move a dir to another location on another filesystem.
-        if not self.dir_other_fs:
-            # skip
-            return
-        dst_dir = tempfile.mktemp(dir=self.dir_other_fs)
-        try:
-            self._check_move_dir(self.src_dir, dst_dir, dst_dir)
-        finally:
-            try:
-                shutil.rmtree(dst_dir)
-            except:
-                pass
-
-    def test_move_dir_to_dir(self):
-        # Move a dir inside an existing dir on the same filesystem.
-        self._check_move_dir(self.src_dir, self.dst_dir,
-            os.path.join(self.dst_dir, os.path.basename(self.src_dir)))
-
-    def test_move_dir_to_dir_other_fs(self):
-        # Move a dir inside an existing dir on another filesystem.
-        if not self.dir_other_fs:
-            # skip
-            return
-        self._check_move_dir(self.src_dir, self.dir_other_fs,
-            os.path.join(self.dir_other_fs, os.path.basename(self.src_dir)))
-
-    def test_existing_file_inside_dest_dir(self):
-        # A file with the same name inside the destination dir already exists.
-        with open(self.dst_file, "wb"):
-            pass
-        self.assertRaises(shutil.Error, shutil.move, self.src_file, self.dst_dir)
-
-    def test_dont_move_dir_in_itself(self):
-        # Moving a dir inside itself raises an Error.
-        dst = os.path.join(self.src_dir, "bar")
-        self.assertRaises(shutil.Error, shutil.move, self.src_dir, dst)
-
-    def test_destinsrc_false_negative(self):
-        os.mkdir(TESTFN)
-        try:
-            for src, dst in [('srcdir', 'srcdir/dest')]:
-                src = os.path.join(TESTFN, src)
-                dst = os.path.join(TESTFN, dst)
-                self.assertTrue(shutil._destinsrc(src, dst),
-                             msg='_destinsrc() wrongly concluded that '
-                             'dst (%s) is not in src (%s)' % (dst, src))
-        finally:
-            shutil.rmtree(TESTFN, ignore_errors=True)
-
-    def test_destinsrc_false_positive(self):
-        os.mkdir(TESTFN)
-        try:
-            for src, dst in [('srcdir', 'src/dest'), ('srcdir', 'srcdir.new')]:
-                src = os.path.join(TESTFN, src)
-                dst = os.path.join(TESTFN, dst)
-                self.assertFalse(shutil._destinsrc(src, dst),
-                            msg='_destinsrc() wrongly concluded that '
-                            'dst (%s) is in src (%s)' % (dst, src))
-        finally:
-            shutil.rmtree(TESTFN, ignore_errors=True)
-
-
-class TestCopyFile(unittest.TestCase):
-
-    _delete = False
-
-    class Faux(object):
-        _entered = False
-        _exited_with = None
-        _raised = False
-        def __init__(self, raise_in_exit=False, suppress_at_exit=True):
-            self._raise_in_exit = raise_in_exit
-            self._suppress_at_exit = suppress_at_exit
-        def read(self, *args):
-            return ''
-        def __enter__(self):
-            self._entered = True
-        def __exit__(self, exc_type, exc_val, exc_tb):
-            self._exited_with = exc_type, exc_val, exc_tb
-            if self._raise_in_exit:
-                self._raised = True
-                raise IOError("Cannot close")
-            return self._suppress_at_exit
-
-    def tearDown(self):
-        if self._delete:
-            del shutil.open
-
-    def _set_shutil_open(self, func):
-        shutil.open = func
-        self._delete = True
-
-    def test_w_source_open_fails(self):
-        def _open(filename, mode='r'):
-            if filename == 'srcfile':
-                raise IOError('Cannot open "srcfile"')
-            assert 0  # shouldn't reach here.
-
-        self._set_shutil_open(_open)
-
-        self.assertRaises(IOError, shutil.copyfile, 'srcfile', 'destfile')
-
-    def test_w_dest_open_fails(self):
-
-        srcfile = self.Faux()
-
-        def _open(filename, mode='r'):
-            if filename == 'srcfile':
-                return srcfile
-            if filename == 'destfile':
-                raise IOError('Cannot open "destfile"')
-            assert 0  # shouldn't reach here.
-
-        self._set_shutil_open(_open)
-
-        shutil.copyfile('srcfile', 'destfile')
-        self.assertTrue(srcfile._entered)
-        self.assertTrue(srcfile._exited_with[0] is IOError)
-        self.assertEqual(srcfile._exited_with[1].args,
-                         ('Cannot open "destfile"',))
-
-    def test_w_dest_close_fails(self):
-
-        srcfile = self.Faux()
-        destfile = self.Faux(True)
-
-        def _open(filename, mode='r'):
-            if filename == 'srcfile':
-                return srcfile
-            if filename == 'destfile':
-                return destfile
-            assert 0  # shouldn't reach here.
-
-        self._set_shutil_open(_open)
-
-        shutil.copyfile('srcfile', 'destfile')
-        self.assertTrue(srcfile._entered)
-        self.assertTrue(destfile._entered)
-        self.assertTrue(destfile._raised)
-        self.assertTrue(srcfile._exited_with[0] is IOError)
-        self.assertEqual(srcfile._exited_with[1].args,
-                         ('Cannot close',))
-
-    def test_w_source_close_fails(self):
-
-        srcfile = self.Faux(True)
-        destfile = self.Faux()
-
-        def _open(filename, mode='r'):
-            if filename == 'srcfile':
-                return srcfile
-            if filename == 'destfile':
-                return destfile
-            assert 0  # shouldn't reach here.
-
-        self._set_shutil_open(_open)
-
-        self.assertRaises(IOError,
-                          shutil.copyfile, 'srcfile', 'destfile')
-        self.assertTrue(srcfile._entered)
-        self.assertTrue(destfile._entered)
-        self.assertFalse(destfile._raised)
-        self.assertTrue(srcfile._exited_with[0] is None)
-        self.assertTrue(srcfile._raised)
-
-    def test_move_dir_caseinsensitive(self):
-        # Renames a folder to the same name
-        # but a different case.
-
-        self.src_dir = tempfile.mkdtemp()
-        dst_dir = os.path.join(
-                os.path.dirname(self.src_dir),
-                os.path.basename(self.src_dir).upper())
-        self.assertNotEqual(self.src_dir, dst_dir)
-
-        try:
-            shutil.move(self.src_dir, dst_dir)
-            self.assertTrue(os.path.isdir(dst_dir))
-        finally:
-            if os.path.exists(dst_dir):
-                os.rmdir(dst_dir)
-
-
-
-def test_main():
-    test_support.run_unittest(TestShutil, TestMove, TestCopyFile)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_signal.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_signal.py
deleted file mode 100644
index 4add6da..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_signal.py
+++ /dev/null
@@ -1,493 +0,0 @@
-import unittest
-from test import test_support
-from contextlib import closing
-import gc
-import pickle
-import select
-import signal
-import subprocess
-import traceback
-import sys, os, time, errno
-
-if sys.platform in ('os2', 'riscos'):
-    raise unittest.SkipTest("Can't test signal on %s" % sys.platform)
-
-
-class HandlerBCalled(Exception):
-    pass
-
-
-def exit_subprocess():
-    """Use os._exit(0) to exit the current subprocess.
-
-    Otherwise, the test catches the SystemExit and continues executing
-    in parallel with the original test, so you wind up with an
-    exponential number of tests running concurrently.
-    """
-    os._exit(0)
-
-
-def ignoring_eintr(__func, *args, **kwargs):
-    try:
-        return __func(*args, **kwargs)
-    except EnvironmentError as e:
-        if e.errno != errno.EINTR:
-            raise
-        return None
-
-
-@unittest.skipIf(sys.platform == "win32", "Not valid on Windows")
-class InterProcessSignalTests(unittest.TestCase):
-    MAX_DURATION = 20   # Entire test should last at most 20 sec.
-
-    def setUp(self):
-        self.using_gc = gc.isenabled()
-        gc.disable()
-
-    def tearDown(self):
-        if self.using_gc:
-            gc.enable()
-
-    def format_frame(self, frame, limit=None):
-        return ''.join(traceback.format_stack(frame, limit=limit))
-
-    def handlerA(self, signum, frame):
-        self.a_called = True
-        if test_support.verbose:
-            print "handlerA invoked from signal %s at:\n%s" % (
-                signum, self.format_frame(frame, limit=1))
-
-    def handlerB(self, signum, frame):
-        self.b_called = True
-        if test_support.verbose:
-            print "handlerB invoked from signal %s at:\n%s" % (
-                signum, self.format_frame(frame, limit=1))
-        raise HandlerBCalled(signum, self.format_frame(frame))
-
-    def wait(self, child):
-        """Wait for child to finish, ignoring EINTR."""
-        while True:
-            try:
-                child.wait()
-                return
-            except OSError as e:
-                if e.errno != errno.EINTR:
-                    raise
-
-    def run_test(self):
-        # Install handlers. This function runs in a sub-process, so we
-        # don't worry about re-setting the default handlers.
-        signal.signal(signal.SIGHUP, self.handlerA)
-        signal.signal(signal.SIGUSR1, self.handlerB)
-        signal.signal(signal.SIGUSR2, signal.SIG_IGN)
-        signal.signal(signal.SIGALRM, signal.default_int_handler)
-
-        # Variables the signals will modify:
-        self.a_called = False
-        self.b_called = False
-
-        # Let the sub-processes know who to send signals to.
-        pid = os.getpid()
-        if test_support.verbose:
-            print "test runner's pid is", pid
-
-        child = ignoring_eintr(subprocess.Popen, ['kill', '-HUP', str(pid)])
-        if child:
-            self.wait(child)
-            if not self.a_called:
-                time.sleep(1)  # Give the signal time to be delivered.
-        self.assertTrue(self.a_called)
-        self.assertFalse(self.b_called)
-        self.a_called = False
-
-        # Make sure the signal isn't delivered while the previous
-        # Popen object is being destroyed, because __del__ swallows
-        # exceptions.
-        del child
-        try:
-            child = subprocess.Popen(['kill', '-USR1', str(pid)])
-            # This wait should be interrupted by the signal's exception.
-            self.wait(child)
-            time.sleep(1)  # Give the signal time to be delivered.
-            self.fail('HandlerBCalled exception not thrown')
-        except HandlerBCalled:
-            self.assertTrue(self.b_called)
-            self.assertFalse(self.a_called)
-            if test_support.verbose:
-                print "HandlerBCalled exception caught"
-
-        child = ignoring_eintr(subprocess.Popen, ['kill', '-USR2', str(pid)])
-        if child:
-            self.wait(child)  # Nothing should happen.
-
-        try:
-            signal.alarm(1)
-            # The race condition in pause doesn't matter in this case,
-            # since alarm is going to raise a KeyboardException, which
-            # will skip the call.
-            signal.pause()
-            # But if another signal arrives before the alarm, pause
-            # may return early.
-            time.sleep(1)
-        except KeyboardInterrupt:
-            if test_support.verbose:
-                print "KeyboardInterrupt (the alarm() went off)"
-        except:
-            self.fail("Some other exception woke us from pause: %s" %
-                      traceback.format_exc())
-        else:
-            self.fail("pause returned of its own accord, and the signal"
-                      " didn't arrive after another second.")
-
-    # Issue 3864. Unknown if this affects earlier versions of freebsd also.
-    @unittest.skipIf(sys.platform=='freebsd6',
-        'inter process signals not reliable (do not mix well with threading) '
-        'on freebsd6')
-    def test_main(self):
-        # This function spawns a child process to insulate the main
-        # test-running process from all the signals. It then
-        # communicates with that child process over a pipe and
-        # re-raises information about any exceptions the child
-        # throws. The real work happens in self.run_test().
-        os_done_r, os_done_w = os.pipe()
-        with closing(os.fdopen(os_done_r)) as done_r, \
-             closing(os.fdopen(os_done_w, 'w')) as done_w:
-            child = os.fork()
-            if child == 0:
-                # In the child process; run the test and report results
-                # through the pipe.
-                try:
-                    done_r.close()
-                    # Have to close done_w again here because
-                    # exit_subprocess() will skip the enclosing with block.
-                    with closing(done_w):
-                        try:
-                            self.run_test()
-                        except:
-                            pickle.dump(traceback.format_exc(), done_w)
-                        else:
-                            pickle.dump(None, done_w)
-                except:
-                    print 'Uh oh, raised from pickle.'
-                    traceback.print_exc()
-                finally:
-                    exit_subprocess()
-
-            done_w.close()
-            # Block for up to MAX_DURATION seconds for the test to finish.
-            r, w, x = select.select([done_r], [], [], self.MAX_DURATION)
-            if done_r in r:
-                tb = pickle.load(done_r)
-                if tb:
-                    self.fail(tb)
-            else:
-                os.kill(child, signal.SIGKILL)
-                self.fail('Test deadlocked after %d seconds.' %
-                          self.MAX_DURATION)
-
-
-@unittest.skipIf(sys.platform == "win32", "Not valid on Windows")
-class BasicSignalTests(unittest.TestCase):
-    def trivial_signal_handler(self, *args):
-        pass
-
-    def test_out_of_range_signal_number_raises_error(self):
-        self.assertRaises(ValueError, signal.getsignal, 4242)
-
-        self.assertRaises(ValueError, signal.signal, 4242,
-                          self.trivial_signal_handler)
-
-    def test_setting_signal_handler_to_none_raises_error(self):
-        self.assertRaises(TypeError, signal.signal,
-                          signal.SIGUSR1, None)
-
-    def test_getsignal(self):
-        hup = signal.signal(signal.SIGHUP, self.trivial_signal_handler)
-        self.assertEqual(signal.getsignal(signal.SIGHUP),
-                         self.trivial_signal_handler)
-        signal.signal(signal.SIGHUP, hup)
-        self.assertEqual(signal.getsignal(signal.SIGHUP), hup)
-
-
-@unittest.skipUnless(sys.platform == "win32", "Windows specific")
-class WindowsSignalTests(unittest.TestCase):
-    def test_issue9324(self):
-        # Updated for issue #10003, adding SIGBREAK
-        handler = lambda x, y: None
-        for sig in (signal.SIGABRT, signal.SIGBREAK, signal.SIGFPE,
-                    signal.SIGILL, signal.SIGINT, signal.SIGSEGV,
-                    signal.SIGTERM):
-            # Set and then reset a handler for signals that work on windows
-            signal.signal(sig, signal.signal(sig, handler))
-
-        with self.assertRaises(ValueError):
-            signal.signal(-1, handler)
-
-        with self.assertRaises(ValueError):
-            signal.signal(7, handler)
-
-
-@unittest.skipIf(sys.platform == "win32", "Not valid on Windows")
-class WakeupSignalTests(unittest.TestCase):
-    TIMEOUT_FULL = 10
-    TIMEOUT_HALF = 5
-
-    def test_wakeup_fd_early(self):
-        import select
-
-        signal.alarm(1)
-        before_time = time.time()
-        # We attempt to get a signal during the sleep,
-        # before select is called
-        time.sleep(self.TIMEOUT_FULL)
-        mid_time = time.time()
-        self.assertTrue(mid_time - before_time < self.TIMEOUT_HALF)
-        select.select([self.read], [], [], self.TIMEOUT_FULL)
-        after_time = time.time()
-        self.assertTrue(after_time - mid_time < self.TIMEOUT_HALF)
-
-    def test_wakeup_fd_during(self):
-        import select
-
-        signal.alarm(1)
-        before_time = time.time()
-        # We attempt to get a signal during the select call
-        self.assertRaises(select.error, select.select,
-            [self.read], [], [], self.TIMEOUT_FULL)
-        after_time = time.time()
-        self.assertTrue(after_time - before_time < self.TIMEOUT_HALF)
-
-    def setUp(self):
-        import fcntl
-
-        self.alrm = signal.signal(signal.SIGALRM, lambda x,y:None)
-        self.read, self.write = os.pipe()
-        flags = fcntl.fcntl(self.write, fcntl.F_GETFL, 0)
-        flags = flags | os.O_NONBLOCK
-        fcntl.fcntl(self.write, fcntl.F_SETFL, flags)
-        self.old_wakeup = signal.set_wakeup_fd(self.write)
-
-    def tearDown(self):
-        signal.set_wakeup_fd(self.old_wakeup)
-        os.close(self.read)
-        os.close(self.write)
-        signal.signal(signal.SIGALRM, self.alrm)
-
-@unittest.skipIf(sys.platform == "win32", "Not valid on Windows")
-class SiginterruptTest(unittest.TestCase):
-
-    def setUp(self):
-        """Install a no-op signal handler that can be set to allow
-        interrupts or not, and arrange for the original signal handler to be
-        re-installed when the test is finished.
-        """
-        self.signum = signal.SIGUSR1
-        oldhandler = signal.signal(self.signum, lambda x,y: None)
-        self.addCleanup(signal.signal, self.signum, oldhandler)
-
-    def readpipe_interrupted(self):
-        """Perform a read during which a signal will arrive.  Return True if the
-        read is interrupted by the signal and raises an exception.  Return False
-        if it returns normally.
-        """
-        # Create a pipe that can be used for the read.  Also clean it up
-        # when the test is over, since nothing else will (but see below for
-        # the write end).
-        r, w = os.pipe()
-        self.addCleanup(os.close, r)
-
-        # Create another process which can send a signal to this one to try
-        # to interrupt the read.
-        ppid = os.getpid()
-        pid = os.fork()
-
-        if pid == 0:
-            # Child code: sleep to give the parent enough time to enter the
-            # read() call (there's a race here, but it's really tricky to
-            # eliminate it); then signal the parent process.  Also, sleep
-            # again to make it likely that the signal is delivered to the
-            # parent process before the child exits.  If the child exits
-            # first, the write end of the pipe will be closed and the test
-            # is invalid.
-            try:
-                time.sleep(0.2)
-                os.kill(ppid, self.signum)
-                time.sleep(0.2)
-            finally:
-                # No matter what, just exit as fast as possible now.
-                exit_subprocess()
-        else:
-            # Parent code.
-            # Make sure the child is eventually reaped, else it'll be a
-            # zombie for the rest of the test suite run.
-            self.addCleanup(os.waitpid, pid, 0)
-
-            # Close the write end of the pipe.  The child has a copy, so
-            # it's not really closed until the child exits.  We need it to
-            # close when the child exits so that in the non-interrupt case
-            # the read eventually completes, otherwise we could just close
-            # it *after* the test.
-            os.close(w)
-
-            # Try the read and report whether it is interrupted or not to
-            # the caller.
-            try:
-                d = os.read(r, 1)
-                return False
-            except OSError, err:
-                if err.errno != errno.EINTR:
-                    raise
-                return True
-
-    def test_without_siginterrupt(self):
-        """If a signal handler is installed and siginterrupt is not called
-        at all, when that signal arrives, it interrupts a syscall that's in
-        progress.
-        """
-        i = self.readpipe_interrupted()
-        self.assertTrue(i)
-        # Arrival of the signal shouldn't have changed anything.
-        i = self.readpipe_interrupted()
-        self.assertTrue(i)
-
-    def test_siginterrupt_on(self):
-        """If a signal handler is installed and siginterrupt is called with
-        a true value for the second argument, when that signal arrives, it
-        interrupts a syscall that's in progress.
-        """
-        signal.siginterrupt(self.signum, 1)
-        i = self.readpipe_interrupted()
-        self.assertTrue(i)
-        # Arrival of the signal shouldn't have changed anything.
-        i = self.readpipe_interrupted()
-        self.assertTrue(i)
-
-    def test_siginterrupt_off(self):
-        """If a signal handler is installed and siginterrupt is called with
-        a false value for the second argument, when that signal arrives, it
-        does not interrupt a syscall that's in progress.
-        """
-        signal.siginterrupt(self.signum, 0)
-        i = self.readpipe_interrupted()
-        self.assertFalse(i)
-        # Arrival of the signal shouldn't have changed anything.
-        i = self.readpipe_interrupted()
-        self.assertFalse(i)
-
-
-@unittest.skipIf(sys.platform == "win32", "Not valid on Windows")
-class ItimerTest(unittest.TestCase):
-    def setUp(self):
-        self.hndl_called = False
-        self.hndl_count = 0
-        self.itimer = None
-        self.old_alarm = signal.signal(signal.SIGALRM, self.sig_alrm)
-
-    def tearDown(self):
-        signal.signal(signal.SIGALRM, self.old_alarm)
-        if self.itimer is not None: # test_itimer_exc doesn't change this attr
-            # just ensure that itimer is stopped
-            signal.setitimer(self.itimer, 0)
-
-    def sig_alrm(self, *args):
-        self.hndl_called = True
-        if test_support.verbose:
-            print("SIGALRM handler invoked", args)
-
-    def sig_vtalrm(self, *args):
-        self.hndl_called = True
-
-        if self.hndl_count > 3:
-            # it shouldn't be here, because it should have been disabled.
-            raise signal.ItimerError("setitimer didn't disable ITIMER_VIRTUAL "
-                "timer.")
-        elif self.hndl_count == 3:
-            # disable ITIMER_VIRTUAL, this function shouldn't be called anymore
-            signal.setitimer(signal.ITIMER_VIRTUAL, 0)
-            if test_support.verbose:
-                print("last SIGVTALRM handler call")
-
-        self.hndl_count += 1
-
-        if test_support.verbose:
-            print("SIGVTALRM handler invoked", args)
-
-    def sig_prof(self, *args):
-        self.hndl_called = True
-        signal.setitimer(signal.ITIMER_PROF, 0)
-
-        if test_support.verbose:
-            print("SIGPROF handler invoked", args)
-
-    def test_itimer_exc(self):
-        # XXX I'm assuming -1 is an invalid itimer, but maybe some platform
-        # defines it ?
-        self.assertRaises(signal.ItimerError, signal.setitimer, -1, 0)
-        # Negative times are treated as zero on some platforms.
-        if 0:
-            self.assertRaises(signal.ItimerError,
-                              signal.setitimer, signal.ITIMER_REAL, -1)
-
-    def test_itimer_real(self):
-        self.itimer = signal.ITIMER_REAL
-        signal.setitimer(self.itimer, 1.0)
-        if test_support.verbose:
-            print("\ncall pause()...")
-        signal.pause()
-
-        self.assertEqual(self.hndl_called, True)
-
-    # Issue 3864. Unknown if this affects earlier versions of freebsd also.
-    @unittest.skipIf(sys.platform in ('freebsd6', 'netbsd5'),
-        'itimer not reliable (does not mix well with threading) on some BSDs.')
-    def test_itimer_virtual(self):
-        self.itimer = signal.ITIMER_VIRTUAL
-        signal.signal(signal.SIGVTALRM, self.sig_vtalrm)
-        signal.setitimer(self.itimer, 0.3, 0.2)
-
-        start_time = time.time()
-        while time.time() - start_time < 60.0:
-            # use up some virtual time by doing real work
-            _ = pow(12345, 67890, 10000019)
-            if signal.getitimer(self.itimer) == (0.0, 0.0):
-                break # sig_vtalrm handler stopped this itimer
-        else: # Issue 8424
-            self.skipTest("timeout: likely cause: machine too slow or load too "
-                          "high")
-
-        # virtual itimer should be (0.0, 0.0) now
-        self.assertEqual(signal.getitimer(self.itimer), (0.0, 0.0))
-        # and the handler should have been called
-        self.assertEqual(self.hndl_called, True)
-
-    # Issue 3864. Unknown if this affects earlier versions of freebsd also.
-    @unittest.skipIf(sys.platform=='freebsd6',
-        'itimer not reliable (does not mix well with threading) on freebsd6')
-    def test_itimer_prof(self):
-        self.itimer = signal.ITIMER_PROF
-        signal.signal(signal.SIGPROF, self.sig_prof)
-        signal.setitimer(self.itimer, 0.2, 0.2)
-
-        start_time = time.time()
-        while time.time() - start_time < 60.0:
-            # do some work
-            _ = pow(12345, 67890, 10000019)
-            if signal.getitimer(self.itimer) == (0.0, 0.0):
-                break # sig_prof handler stopped this itimer
-        else: # Issue 8424
-            self.skipTest("timeout: likely cause: machine too slow or load too "
-                          "high")
-
-        # profiling itimer should be (0.0, 0.0) now
-        self.assertEqual(signal.getitimer(self.itimer), (0.0, 0.0))
-        # and the handler should have been called
-        self.assertEqual(self.hndl_called, True)
-
-def test_main():
-    test_support.run_unittest(BasicSignalTests, InterProcessSignalTests,
-                              WakeupSignalTests, SiginterruptTest,
-                              ItimerTest, WindowsSignalTests)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_site.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_site.py
deleted file mode 100644
index 1649acb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_site.py
+++ /dev/null
@@ -1,392 +0,0 @@
-"""Tests for 'site'.
-
-Tests assume the initial paths in sys.path once the interpreter has begun
-executing have not been removed.
-
-"""
-import unittest
-from test.test_support import run_unittest, TESTFN, EnvironmentVarGuard
-from test.test_support import captured_output
-import __builtin__
-import os
-import sys
-import re
-import encodings
-import subprocess
-import sysconfig
-from copy import copy
-
-# Need to make sure to not import 'site' if someone specified ``-S`` at the
-# command-line.  Detect this by just making sure 'site' has not been imported
-# already.
-if "site" in sys.modules:
-    import site
-else:
-    raise unittest.SkipTest("importation of site.py suppressed")
-
-if not os.path.isdir(site.USER_SITE):
-    # need to add user site directory for tests
-    os.makedirs(site.USER_SITE)
-    site.addsitedir(site.USER_SITE)
-
-class HelperFunctionsTests(unittest.TestCase):
-    """Tests for helper functions.
-
-    The setting of the encoding (set using sys.setdefaultencoding) used by
-    the Unicode implementation is not tested.
-
-    """
-
-    def setUp(self):
-        """Save a copy of sys.path"""
-        self.sys_path = sys.path[:]
-        self.old_base = site.USER_BASE
-        self.old_site = site.USER_SITE
-        self.old_prefixes = site.PREFIXES
-        self.old_vars = copy(sysconfig._CONFIG_VARS)
-
-    def tearDown(self):
-        """Restore sys.path"""
-        sys.path[:] = self.sys_path
-        site.USER_BASE = self.old_base
-        site.USER_SITE = self.old_site
-        site.PREFIXES = self.old_prefixes
-        sysconfig._CONFIG_VARS = self.old_vars
-
-    def test_makepath(self):
-        # Test makepath() have an absolute path for its first return value
-        # and a case-normalized version of the absolute path for its
-        # second value.
-        path_parts = ("Beginning", "End")
-        original_dir = os.path.join(*path_parts)
-        abs_dir, norm_dir = site.makepath(*path_parts)
-        self.assertEqual(os.path.abspath(original_dir), abs_dir)
-        if original_dir == os.path.normcase(original_dir):
-            self.assertEqual(abs_dir, norm_dir)
-        else:
-            self.assertEqual(os.path.normcase(abs_dir), norm_dir)
-
-    def test_init_pathinfo(self):
-        dir_set = site._init_pathinfo()
-        for entry in [site.makepath(path)[1] for path in sys.path
-                        if path and os.path.isdir(path)]:
-            self.assertIn(entry, dir_set,
-                          "%s from sys.path not found in set returned "
-                          "by _init_pathinfo(): %s" % (entry, dir_set))
-
-    def pth_file_tests(self, pth_file):
-        """Contain common code for testing results of reading a .pth file"""
-        self.assertIn(pth_file.imported, sys.modules,
-                      "%s not in sys.modules" % pth_file.imported)
-        self.assertIn(site.makepath(pth_file.good_dir_path)[0], sys.path)
-        self.assertFalse(os.path.exists(pth_file.bad_dir_path))
-
-    def test_addpackage(self):
-        # Make sure addpackage() imports if the line starts with 'import',
-        # adds directories to sys.path for any line in the file that is not a
-        # comment or import that is a valid directory name for where the .pth
-        # file resides; invalid directories are not added
-        pth_file = PthFile()
-        pth_file.cleanup(prep=True)  # to make sure that nothing is
-                                      # pre-existing that shouldn't be
-        try:
-            pth_file.create()
-            site.addpackage(pth_file.base_dir, pth_file.filename, set())
-            self.pth_file_tests(pth_file)
-        finally:
-            pth_file.cleanup()
-
-    def make_pth(self, contents, pth_dir='.', pth_name=TESTFN):
-        # Create a .pth file and return its (abspath, basename).
-        pth_dir = os.path.abspath(pth_dir)
-        pth_basename = pth_name + '.pth'
-        pth_fn = os.path.join(pth_dir, pth_basename)
-        pth_file = open(pth_fn, 'w')
-        self.addCleanup(lambda: os.remove(pth_fn))
-        pth_file.write(contents)
-        pth_file.close()
-        return pth_dir, pth_basename
-
-    def test_addpackage_import_bad_syntax(self):
-        # Issue 10642
-        pth_dir, pth_fn = self.make_pth("import bad)syntax\n")
-        with captured_output("stderr") as err_out:
-            site.addpackage(pth_dir, pth_fn, set())
-        self.assertRegexpMatches(err_out.getvalue(), "line 1")
-        self.assertRegexpMatches(err_out.getvalue(),
-            re.escape(os.path.join(pth_dir, pth_fn)))
-        # XXX: the previous two should be independent checks so that the
-        # order doesn't matter.  The next three could be a single check
-        # but my regex foo isn't good enough to write it.
-        self.assertRegexpMatches(err_out.getvalue(), 'Traceback')
-        self.assertRegexpMatches(err_out.getvalue(), r'import bad\)syntax')
-        self.assertRegexpMatches(err_out.getvalue(), 'SyntaxError')
-
-    def test_addpackage_import_bad_exec(self):
-        # Issue 10642
-        pth_dir, pth_fn = self.make_pth("randompath\nimport nosuchmodule\n")
-        with captured_output("stderr") as err_out:
-            site.addpackage(pth_dir, pth_fn, set())
-        self.assertRegexpMatches(err_out.getvalue(), "line 2")
-        self.assertRegexpMatches(err_out.getvalue(),
-            re.escape(os.path.join(pth_dir, pth_fn)))
-        # XXX: ditto previous XXX comment.
-        self.assertRegexpMatches(err_out.getvalue(), 'Traceback')
-        self.assertRegexpMatches(err_out.getvalue(), 'ImportError')
-
-    @unittest.skipIf(sys.platform == "win32", "Windows does not raise an "
-                      "error for file paths containing null characters")
-    def test_addpackage_import_bad_pth_file(self):
-        # Issue 5258
-        pth_dir, pth_fn = self.make_pth("abc\x00def\n")
-        with captured_output("stderr") as err_out:
-            site.addpackage(pth_dir, pth_fn, set())
-        self.assertRegexpMatches(err_out.getvalue(), "line 1")
-        self.assertRegexpMatches(err_out.getvalue(),
-            re.escape(os.path.join(pth_dir, pth_fn)))
-        # XXX: ditto previous XXX comment.
-        self.assertRegexpMatches(err_out.getvalue(), 'Traceback')
-        self.assertRegexpMatches(err_out.getvalue(), 'TypeError')
-
-    def test_addsitedir(self):
-        # Same tests for test_addpackage since addsitedir() essentially just
-        # calls addpackage() for every .pth file in the directory
-        pth_file = PthFile()
-        pth_file.cleanup(prep=True) # Make sure that nothing is pre-existing
-                                    # that is tested for
-        try:
-            pth_file.create()
-            site.addsitedir(pth_file.base_dir, set())
-            self.pth_file_tests(pth_file)
-        finally:
-            pth_file.cleanup()
-
-    def test_s_option(self):
-        usersite = site.USER_SITE
-        self.assertIn(usersite, sys.path)
-
-        env = os.environ.copy()
-        rc = subprocess.call([sys.executable, '-c',
-            'import sys; sys.exit(%r in sys.path)' % usersite],
-            env=env)
-        self.assertEqual(rc, 1, "%r is not in sys.path (sys.exit returned %r)"
-                % (usersite, rc))
-
-        env = os.environ.copy()
-        rc = subprocess.call([sys.executable, '-s', '-c',
-            'import sys; sys.exit(%r in sys.path)' % usersite],
-            env=env)
-        self.assertEqual(rc, 0)
-
-        env = os.environ.copy()
-        env["PYTHONNOUSERSITE"] = "1"
-        rc = subprocess.call([sys.executable, '-c',
-            'import sys; sys.exit(%r in sys.path)' % usersite],
-            env=env)
-        self.assertEqual(rc, 0)
-
-        env = os.environ.copy()
-        env["PYTHONUSERBASE"] = "/tmp"
-        rc = subprocess.call([sys.executable, '-c',
-            'import sys, site; sys.exit(site.USER_BASE.startswith("/tmp"))'],
-            env=env)
-        self.assertEqual(rc, 1)
-
-    def test_getuserbase(self):
-        site.USER_BASE = None
-        user_base = site.getuserbase()
-
-        # the call sets site.USER_BASE
-        self.assertEqual(site.USER_BASE, user_base)
-
-        # let's set PYTHONUSERBASE and see if it uses it
-        site.USER_BASE = None
-        import sysconfig
-        sysconfig._CONFIG_VARS = None
-
-        with EnvironmentVarGuard() as environ:
-            environ['PYTHONUSERBASE'] = 'xoxo'
-            self.assertTrue(site.getuserbase().startswith('xoxo'),
-                            site.getuserbase())
-
-    def test_getusersitepackages(self):
-        site.USER_SITE = None
-        site.USER_BASE = None
-        user_site = site.getusersitepackages()
-
-        # the call sets USER_BASE *and* USER_SITE
-        self.assertEqual(site.USER_SITE, user_site)
-        self.assertTrue(user_site.startswith(site.USER_BASE), user_site)
-
-    def test_getsitepackages(self):
-        site.PREFIXES = ['xoxo']
-        dirs = site.getsitepackages()
-
-        if sys.platform in ('os2emx', 'riscos'):
-            self.assertEqual(len(dirs), 1)
-            wanted = os.path.join('xoxo', 'Lib', 'site-packages')
-            self.assertEqual(dirs[0], wanted)
-        elif os.sep == '/':
-            self.assertEqual(len(dirs), 2)
-            wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
-                                  'site-packages')
-            self.assertEqual(dirs[0], wanted)
-            wanted = os.path.join('xoxo', 'lib', 'site-python')
-            self.assertEqual(dirs[1], wanted)
-        else:
-            self.assertEqual(len(dirs), 2)
-            self.assertEqual(dirs[0], 'xoxo')
-            wanted = os.path.join('xoxo', 'lib', 'site-packages')
-            self.assertEqual(dirs[1], wanted)
-
-        # let's try the specific Apple location
-        if (sys.platform == "darwin" and
-            sysconfig.get_config_var("PYTHONFRAMEWORK")):
-            site.PREFIXES = ['Python.framework']
-            dirs = site.getsitepackages()
-            self.assertEqual(len(dirs), 4)
-            wanted = os.path.join('~', 'Library', 'Python',
-                                  sys.version[:3], 'site-packages')
-            self.assertEqual(dirs[2], os.path.expanduser(wanted))
-            wanted = os.path.join('/Library', 'Python', sys.version[:3],
-                                  'site-packages')
-            self.assertEqual(dirs[3], wanted)
-
-class PthFile(object):
-    """Helper class for handling testing of .pth files"""
-
-    def __init__(self, filename_base=TESTFN, imported="time",
-                    good_dirname="__testdir__", bad_dirname="__bad"):
-        """Initialize instance variables"""
-        self.filename = filename_base + ".pth"
-        self.base_dir = os.path.abspath('')
-        self.file_path = os.path.join(self.base_dir, self.filename)
-        self.imported = imported
-        self.good_dirname = good_dirname
-        self.bad_dirname = bad_dirname
-        self.good_dir_path = os.path.join(self.base_dir, self.good_dirname)
-        self.bad_dir_path = os.path.join(self.base_dir, self.bad_dirname)
-
-    def create(self):
-        """Create a .pth file with a comment, blank lines, an ``import
-        <self.imported>``, a line with self.good_dirname, and a line with
-        self.bad_dirname.
-
-        Creation of the directory for self.good_dir_path (based off of
-        self.good_dirname) is also performed.
-
-        Make sure to call self.cleanup() to undo anything done by this method.
-
-        """
-        FILE = open(self.file_path, 'w')
-        try:
-            print>>FILE, "#import @bad module name"
-            print>>FILE, "\n"
-            print>>FILE, "import %s" % self.imported
-            print>>FILE, self.good_dirname
-            print>>FILE, self.bad_dirname
-        finally:
-            FILE.close()
-        os.mkdir(self.good_dir_path)
-
-    def cleanup(self, prep=False):
-        """Make sure that the .pth file is deleted, self.imported is not in
-        sys.modules, and that both self.good_dirname and self.bad_dirname are
-        not existing directories."""
-        if os.path.exists(self.file_path):
-            os.remove(self.file_path)
-        if prep:
-            self.imported_module = sys.modules.get(self.imported)
-            if self.imported_module:
-                del sys.modules[self.imported]
-        else:
-            if self.imported_module:
-                sys.modules[self.imported] = self.imported_module
-        if os.path.exists(self.good_dir_path):
-            os.rmdir(self.good_dir_path)
-        if os.path.exists(self.bad_dir_path):
-            os.rmdir(self.bad_dir_path)
-
-class ImportSideEffectTests(unittest.TestCase):
-    """Test side-effects from importing 'site'."""
-
-    def setUp(self):
-        """Make a copy of sys.path"""
-        self.sys_path = sys.path[:]
-
-    def tearDown(self):
-        """Restore sys.path"""
-        sys.path[:] = self.sys_path
-
-    def test_abs__file__(self):
-        # Make sure all imported modules have their __file__ attribute
-        # as an absolute path.
-        # Handled by abs__file__()
-        site.abs__file__()
-        for module in (sys, os, __builtin__):
-            try:
-                self.assertTrue(os.path.isabs(module.__file__), repr(module))
-            except AttributeError:
-                continue
-        # We could try everything in sys.modules; however, when regrtest.py
-        # runs something like test_frozen before test_site, then we will
-        # be testing things loaded *after* test_site did path normalization
-
-    def test_no_duplicate_paths(self):
-        # No duplicate paths should exist in sys.path
-        # Handled by removeduppaths()
-        site.removeduppaths()
-        seen_paths = set()
-        for path in sys.path:
-            self.assertNotIn(path, seen_paths)
-            seen_paths.add(path)
-
-    def test_add_build_dir(self):
-        # Test that the build directory's Modules directory is used when it
-        # should be.
-        # XXX: implement
-        pass
-
-    def test_setting_quit(self):
-        # 'quit' and 'exit' should be injected into __builtin__
-        self.assertTrue(hasattr(__builtin__, "quit"))
-        self.assertTrue(hasattr(__builtin__, "exit"))
-
-    def test_setting_copyright(self):
-        # 'copyright' and 'credits' should be in __builtin__
-        self.assertTrue(hasattr(__builtin__, "copyright"))
-        self.assertTrue(hasattr(__builtin__, "credits"))
-
-    def test_setting_help(self):
-        # 'help' should be set in __builtin__
-        self.assertTrue(hasattr(__builtin__, "help"))
-
-    def test_aliasing_mbcs(self):
-        if sys.platform == "win32":
-            import locale
-            if locale.getdefaultlocale()[1].startswith('cp'):
-                for value in encodings.aliases.aliases.itervalues():
-                    if value == "mbcs":
-                        break
-                else:
-                    self.fail("did not alias mbcs")
-
-    def test_setdefaultencoding_removed(self):
-        # Make sure sys.setdefaultencoding is gone
-        self.assertTrue(not hasattr(sys, "setdefaultencoding"))
-
-    def test_sitecustomize_executed(self):
-        # If sitecustomize is available, it should have been imported.
-        if "sitecustomize" not in sys.modules:
-            try:
-                import sitecustomize
-            except ImportError:
-                pass
-            else:
-                self.fail("sitecustomize not imported automatically")
-
-def test_main():
-    run_unittest(HelperFunctionsTests, ImportSideEffectTests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_slice.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_slice.py
deleted file mode 100644
index 836af3d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_slice.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# tests for slice objects; in particular the indices method.
-
-import unittest
-from test import test_support
-from cPickle import loads, dumps
-
-import sys
-
-class SliceTest(unittest.TestCase):
-
-    def test_constructor(self):
-        self.assertRaises(TypeError, slice)
-        self.assertRaises(TypeError, slice, 1, 2, 3, 4)
-
-    def test_repr(self):
-        self.assertEqual(repr(slice(1, 2, 3)), "slice(1, 2, 3)")
-
-    def test_hash(self):
-        # Verify clearing of SF bug #800796
-        self.assertRaises(TypeError, hash, slice(5))
-        self.assertRaises(TypeError, slice(5).__hash__)
-
-    def test_cmp(self):
-        s1 = slice(1, 2, 3)
-        s2 = slice(1, 2, 3)
-        s3 = slice(1, 2, 4)
-        self.assertEqual(s1, s2)
-        self.assertNotEqual(s1, s3)
-
-        class Exc(Exception):
-            pass
-
-        class BadCmp(object):
-            def __eq__(self, other):
-                raise Exc
-            __hash__ = None # Silence Py3k warning
-
-        s1 = slice(BadCmp())
-        s2 = slice(BadCmp())
-        self.assertRaises(Exc, cmp, s1, s2)
-        self.assertEqual(s1, s1)
-
-        s1 = slice(1, BadCmp())
-        s2 = slice(1, BadCmp())
-        self.assertEqual(s1, s1)
-        self.assertRaises(Exc, cmp, s1, s2)
-
-        s1 = slice(1, 2, BadCmp())
-        s2 = slice(1, 2, BadCmp())
-        self.assertEqual(s1, s1)
-        self.assertRaises(Exc, cmp, s1, s2)
-
-    def test_members(self):
-        s = slice(1)
-        self.assertEqual(s.start, None)
-        self.assertEqual(s.stop, 1)
-        self.assertEqual(s.step, None)
-
-        s = slice(1, 2)
-        self.assertEqual(s.start, 1)
-        self.assertEqual(s.stop, 2)
-        self.assertEqual(s.step, None)
-
-        s = slice(1, 2, 3)
-        self.assertEqual(s.start, 1)
-        self.assertEqual(s.stop, 2)
-        self.assertEqual(s.step, 3)
-
-        class AnyClass:
-            pass
-
-        obj = AnyClass()
-        s = slice(obj)
-        self.assertTrue(s.stop is obj)
-
-    def test_indices(self):
-        self.assertEqual(slice(None           ).indices(10), (0, 10,  1))
-        self.assertEqual(slice(None,  None,  2).indices(10), (0, 10,  2))
-        self.assertEqual(slice(1,     None,  2).indices(10), (1, 10,  2))
-        self.assertEqual(slice(None,  None, -1).indices(10), (9, -1, -1))
-        self.assertEqual(slice(None,  None, -2).indices(10), (9, -1, -2))
-        self.assertEqual(slice(3,     None, -2).indices(10), (3, -1, -2))
-        # issue 3004 tests
-        self.assertEqual(slice(None, -9).indices(10), (0, 1, 1))
-        self.assertEqual(slice(None, -10).indices(10), (0, 0, 1))
-        self.assertEqual(slice(None, -11).indices(10), (0, 0, 1))
-        self.assertEqual(slice(None, -10, -1).indices(10), (9, 0, -1))
-        self.assertEqual(slice(None, -11, -1).indices(10), (9, -1, -1))
-        self.assertEqual(slice(None, -12, -1).indices(10), (9, -1, -1))
-        self.assertEqual(slice(None, 9).indices(10), (0, 9, 1))
-        self.assertEqual(slice(None, 10).indices(10), (0, 10, 1))
-        self.assertEqual(slice(None, 11).indices(10), (0, 10, 1))
-        self.assertEqual(slice(None, 8, -1).indices(10), (9, 8, -1))
-        self.assertEqual(slice(None, 9, -1).indices(10), (9, 9, -1))
-        self.assertEqual(slice(None, 10, -1).indices(10), (9, 9, -1))
-
-        self.assertEqual(
-            slice(-100,  100     ).indices(10),
-            slice(None).indices(10)
-        )
-        self.assertEqual(
-            slice(100,  -100,  -1).indices(10),
-            slice(None, None, -1).indices(10)
-        )
-        self.assertEqual(slice(-100L, 100L, 2L).indices(10), (0, 10,  2))
-
-        self.assertEqual(range(10)[::sys.maxint - 1], [0])
-
-        self.assertRaises(OverflowError, slice(None).indices, 1L<<100)
-
-    def test_setslice_without_getslice(self):
-        tmp = []
-        class X(object):
-            def __setslice__(self, i, j, k):
-                tmp.append((i, j, k))
-
-        x = X()
-        with test_support.check_py3k_warnings():
-            x[1:2] = 42
-        self.assertEqual(tmp, [(1, 2, 42)])
-
-    def test_pickle(self):
-        s = slice(10, 20, 3)
-        for protocol in (0,1,2):
-            t = loads(dumps(s, protocol))
-            self.assertEqual(s, t)
-            self.assertEqual(s.indices(15), t.indices(15))
-            self.assertNotEqual(id(s), id(t))
-
-def test_main():
-    test_support.run_unittest(SliceTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_smtplib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_smtplib.py
deleted file mode 100644
index 03c9088..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_smtplib.py
+++ /dev/null
@@ -1,518 +0,0 @@
-import asyncore
-import email.utils
-import socket
-import smtpd
-import smtplib
-import StringIO
-import sys
-import time
-import select
-
-import unittest
-from test import test_support
-
-try:
-    import threading
-except ImportError:
-    threading = None
-
-HOST = test_support.HOST
-
-def server(evt, buf, serv):
-    serv.listen(5)
-    evt.set()
-    try:
-        conn, addr = serv.accept()
-    except socket.timeout:
-        pass
-    else:
-        n = 500
-        while buf and n > 0:
-            r, w, e = select.select([], [conn], [])
-            if w:
-                sent = conn.send(buf)
-                buf = buf[sent:]
-
-            n -= 1
-
-        conn.close()
-    finally:
-        serv.close()
-        evt.set()
-
-@unittest.skipUnless(threading, 'Threading required for this test.')
-class GeneralTests(unittest.TestCase):
-
-    def setUp(self):
-        self._threads = test_support.threading_setup()
-        self.evt = threading.Event()
-        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.sock.settimeout(15)
-        self.port = test_support.bind_port(self.sock)
-        servargs = (self.evt, "220 Hola mundo\n", self.sock)
-        self.thread = threading.Thread(target=server, args=servargs)
-        self.thread.start()
-        self.evt.wait()
-        self.evt.clear()
-
-    def tearDown(self):
-        self.evt.wait()
-        self.thread.join()
-        test_support.threading_cleanup(*self._threads)
-
-    def testBasic1(self):
-        # connects
-        smtp = smtplib.SMTP(HOST, self.port)
-        smtp.close()
-
-    def testBasic2(self):
-        # connects, include port in host name
-        smtp = smtplib.SMTP("%s:%s" % (HOST, self.port))
-        smtp.close()
-
-    def testLocalHostName(self):
-        # check that supplied local_hostname is used
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname="testhost")
-        self.assertEqual(smtp.local_hostname, "testhost")
-        smtp.close()
-
-    def testTimeoutDefault(self):
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        socket.setdefaulttimeout(30)
-        try:
-            smtp = smtplib.SMTP(HOST, self.port)
-        finally:
-            socket.setdefaulttimeout(None)
-        self.assertEqual(smtp.sock.gettimeout(), 30)
-        smtp.close()
-
-    def testTimeoutNone(self):
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        socket.setdefaulttimeout(30)
-        try:
-            smtp = smtplib.SMTP(HOST, self.port, timeout=None)
-        finally:
-            socket.setdefaulttimeout(None)
-        self.assertTrue(smtp.sock.gettimeout() is None)
-        smtp.close()
-
-    def testTimeoutValue(self):
-        smtp = smtplib.SMTP(HOST, self.port, timeout=30)
-        self.assertEqual(smtp.sock.gettimeout(), 30)
-        smtp.close()
-
-
-# Test server thread using the specified SMTP server class
-def debugging_server(serv, serv_evt, client_evt):
-    serv_evt.set()
-
-    try:
-        if hasattr(select, 'poll'):
-            poll_fun = asyncore.poll2
-        else:
-            poll_fun = asyncore.poll
-
-        n = 1000
-        while asyncore.socket_map and n > 0:
-            poll_fun(0.01, asyncore.socket_map)
-
-            # when the client conversation is finished, it will
-            # set client_evt, and it's then ok to kill the server
-            if client_evt.is_set():
-                serv.close()
-                break
-
-            n -= 1
-
-    except socket.timeout:
-        pass
-    finally:
-        if not client_evt.is_set():
-            # allow some time for the client to read the result
-            time.sleep(0.5)
-            serv.close()
-        asyncore.close_all()
-        serv_evt.set()
-
-MSG_BEGIN = '---------- MESSAGE FOLLOWS ----------\n'
-MSG_END = '------------ END MESSAGE ------------\n'
-
-# NOTE: Some SMTP objects in the tests below are created with a non-default
-# local_hostname argument to the constructor, since (on some systems) the FQDN
-# lookup caused by the default local_hostname sometimes takes so long that the
-# test server times out, causing the test to fail.
-
-# Test behavior of smtpd.DebuggingServer
-@unittest.skipUnless(threading, 'Threading required for this test.')
-class DebuggingServerTests(unittest.TestCase):
-
-    def setUp(self):
-        # temporarily replace sys.stdout to capture DebuggingServer output
-        self.old_stdout = sys.stdout
-        self.output = StringIO.StringIO()
-        sys.stdout = self.output
-
-        self._threads = test_support.threading_setup()
-        self.serv_evt = threading.Event()
-        self.client_evt = threading.Event()
-        # Pick a random unused port by passing 0 for the port number
-        self.serv = smtpd.DebuggingServer((HOST, 0), ('nowhere', -1))
-        # Keep a note of what port was assigned
-        self.port = self.serv.socket.getsockname()[1]
-        serv_args = (self.serv, self.serv_evt, self.client_evt)
-        self.thread = threading.Thread(target=debugging_server, args=serv_args)
-        self.thread.start()
-
-        # wait until server thread has assigned a port number
-        self.serv_evt.wait()
-        self.serv_evt.clear()
-
-    def tearDown(self):
-        # indicate that the client is finished
-        self.client_evt.set()
-        # wait for the server thread to terminate
-        self.serv_evt.wait()
-        self.thread.join()
-        test_support.threading_cleanup(*self._threads)
-        # restore sys.stdout
-        sys.stdout = self.old_stdout
-
-    def testBasic(self):
-        # connect
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=3)
-        smtp.quit()
-
-    def testNOOP(self):
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=3)
-        expected = (250, 'Ok')
-        self.assertEqual(smtp.noop(), expected)
-        smtp.quit()
-
-    def testRSET(self):
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=3)
-        expected = (250, 'Ok')
-        self.assertEqual(smtp.rset(), expected)
-        smtp.quit()
-
-    def testNotImplemented(self):
-        # EHLO isn't implemented in DebuggingServer
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=3)
-        expected = (502, 'Error: command "EHLO" not implemented')
-        self.assertEqual(smtp.ehlo(), expected)
-        smtp.quit()
-
-    def testVRFY(self):
-        # VRFY isn't implemented in DebuggingServer
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=3)
-        expected = (502, 'Error: command "VRFY" not implemented')
-        self.assertEqual(smtp.vrfy('nobody@nowhere.com'), expected)
-        self.assertEqual(smtp.verify('nobody@nowhere.com'), expected)
-        smtp.quit()
-
-    def testSecondHELO(self):
-        # check that a second HELO returns a message that it's a duplicate
-        # (this behavior is specific to smtpd.SMTPChannel)
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=3)
-        smtp.helo()
-        expected = (503, 'Duplicate HELO/EHLO')
-        self.assertEqual(smtp.helo(), expected)
-        smtp.quit()
-
-    def testHELP(self):
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=3)
-        self.assertEqual(smtp.help(), 'Error: command "HELP" not implemented')
-        smtp.quit()
-
-    def testSend(self):
-        # connect and send mail
-        m = 'A test message'
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=3)
-        smtp.sendmail('John', 'Sally', m)
-        # XXX(nnorwitz): this test is flaky and dies with a bad file descriptor
-        # in asyncore.  This sleep might help, but should really be fixed
-        # properly by using an Event variable.
-        time.sleep(0.01)
-        smtp.quit()
-
-        self.client_evt.set()
-        self.serv_evt.wait()
-        self.output.flush()
-        mexpect = '%s%s\n%s' % (MSG_BEGIN, m, MSG_END)
-        self.assertEqual(self.output.getvalue(), mexpect)
-
-
-class NonConnectingTests(unittest.TestCase):
-
-    def testNotConnected(self):
-        # Test various operations on an unconnected SMTP object that
-        # should raise exceptions (at present the attempt in SMTP.send
-        # to reference the nonexistent 'sock' attribute of the SMTP object
-        # causes an AttributeError)
-        smtp = smtplib.SMTP()
-        self.assertRaises(smtplib.SMTPServerDisconnected, smtp.ehlo)
-        self.assertRaises(smtplib.SMTPServerDisconnected,
-                          smtp.send, 'test msg')
-
-    def testNonnumericPort(self):
-        # check that non-numeric port raises socket.error
-        self.assertRaises(socket.error, smtplib.SMTP,
-                          "localhost", "bogus")
-        self.assertRaises(socket.error, smtplib.SMTP,
-                          "localhost:bogus")
-
-
-# test response of client to a non-successful HELO message
-@unittest.skipUnless(threading, 'Threading required for this test.')
-class BadHELOServerTests(unittest.TestCase):
-
-    def setUp(self):
-        self.old_stdout = sys.stdout
-        self.output = StringIO.StringIO()
-        sys.stdout = self.output
-
-        self._threads = test_support.threading_setup()
-        self.evt = threading.Event()
-        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.sock.settimeout(15)
-        self.port = test_support.bind_port(self.sock)
-        servargs = (self.evt, "199 no hello for you!\n", self.sock)
-        self.thread = threading.Thread(target=server, args=servargs)
-        self.thread.start()
-        self.evt.wait()
-        self.evt.clear()
-
-    def tearDown(self):
-        self.evt.wait()
-        self.thread.join()
-        test_support.threading_cleanup(*self._threads)
-        sys.stdout = self.old_stdout
-
-    def testFailingHELO(self):
-        self.assertRaises(smtplib.SMTPConnectError, smtplib.SMTP,
-                            HOST, self.port, 'localhost', 3)
-
-
-sim_users = {'Mr.A@somewhere.com':'John A',
-             'Ms.B@somewhere.com':'Sally B',
-             'Mrs.C@somewhereesle.com':'Ruth C',
-            }
-
-sim_auth = ('Mr.A@somewhere.com', 'somepassword')
-sim_cram_md5_challenge = ('PENCeUxFREJoU0NnbmhNWitOMjNGNn'
-                          'dAZWx3b29kLmlubm9zb2Z0LmNvbT4=')
-sim_auth_credentials = {
-    'login': 'TXIuQUBzb21ld2hlcmUuY29t',
-    'plain': 'AE1yLkFAc29tZXdoZXJlLmNvbQBzb21lcGFzc3dvcmQ=',
-    'cram-md5': ('TXIUQUBZB21LD2HLCMUUY29TIDG4OWQ0MJ'
-                 'KWZGQ4ODNMNDA4NTGXMDRLZWMYZJDMODG1'),
-    }
-sim_auth_login_password = 'C29TZXBHC3N3B3JK'
-
-sim_lists = {'list-1':['Mr.A@somewhere.com','Mrs.C@somewhereesle.com'],
-             'list-2':['Ms.B@somewhere.com',],
-            }
-
-# Simulated SMTP channel & server
-class SimSMTPChannel(smtpd.SMTPChannel):
-
-    def __init__(self, extra_features, *args, **kw):
-        self._extrafeatures = ''.join(
-            [ "250-{0}\r\n".format(x) for x in extra_features ])
-        smtpd.SMTPChannel.__init__(self, *args, **kw)
-
-    def smtp_EHLO(self, arg):
-        resp = ('250-testhost\r\n'
-                '250-EXPN\r\n'
-                '250-SIZE 20000000\r\n'
-                '250-STARTTLS\r\n'
-                '250-DELIVERBY\r\n')
-        resp = resp + self._extrafeatures + '250 HELP'
-        self.push(resp)
-
-    def smtp_VRFY(self, arg):
-        raw_addr = email.utils.parseaddr(arg)[1]
-        quoted_addr = smtplib.quoteaddr(arg)
-        if raw_addr in sim_users:
-            self.push('250 %s %s' % (sim_users[raw_addr], quoted_addr))
-        else:
-            self.push('550 No such user: %s' % arg)
-
-    def smtp_EXPN(self, arg):
-        list_name = email.utils.parseaddr(arg)[1].lower()
-        if list_name in sim_lists:
-            user_list = sim_lists[list_name]
-            for n, user_email in enumerate(user_list):
-                quoted_addr = smtplib.quoteaddr(user_email)
-                if n < len(user_list) - 1:
-                    self.push('250-%s %s' % (sim_users[user_email], quoted_addr))
-                else:
-                    self.push('250 %s %s' % (sim_users[user_email], quoted_addr))
-        else:
-            self.push('550 No access for you!')
-
-    def smtp_AUTH(self, arg):
-        if arg.strip().lower()=='cram-md5':
-            self.push('334 {0}'.format(sim_cram_md5_challenge))
-            return
-        mech, auth = arg.split()
-        mech = mech.lower()
-        if mech not in sim_auth_credentials:
-            self.push('504 auth type unimplemented')
-            return
-        if mech == 'plain' and auth==sim_auth_credentials['plain']:
-            self.push('235 plain auth ok')
-        elif mech=='login' and auth==sim_auth_credentials['login']:
-            self.push('334 Password:')
-        else:
-            self.push('550 No access for you!')
-
-    def handle_error(self):
-        raise
-
-
-class SimSMTPServer(smtpd.SMTPServer):
-
-    def __init__(self, *args, **kw):
-        self._extra_features = []
-        smtpd.SMTPServer.__init__(self, *args, **kw)
-
-    def handle_accept(self):
-        conn, addr = self.accept()
-        self._SMTPchannel = SimSMTPChannel(self._extra_features,
-                                           self, conn, addr)
-
-    def process_message(self, peer, mailfrom, rcpttos, data):
-        pass
-
-    def add_feature(self, feature):
-        self._extra_features.append(feature)
-
-    def handle_error(self):
-        raise
-
-
-# Test various SMTP & ESMTP commands/behaviors that require a simulated server
-# (i.e., something with more features than DebuggingServer)
-@unittest.skipUnless(threading, 'Threading required for this test.')
-class SMTPSimTests(unittest.TestCase):
-
-    def setUp(self):
-        self._threads = test_support.threading_setup()
-        self.serv_evt = threading.Event()
-        self.client_evt = threading.Event()
-        # Pick a random unused port by passing 0 for the port number
-        self.serv = SimSMTPServer((HOST, 0), ('nowhere', -1))
-        # Keep a note of what port was assigned
-        self.port = self.serv.socket.getsockname()[1]
-        serv_args = (self.serv, self.serv_evt, self.client_evt)
-        self.thread = threading.Thread(target=debugging_server, args=serv_args)
-        self.thread.start()
-
-        # wait until server thread has assigned a port number
-        self.serv_evt.wait()
-        self.serv_evt.clear()
-
-    def tearDown(self):
-        # indicate that the client is finished
-        self.client_evt.set()
-        # wait for the server thread to terminate
-        self.serv_evt.wait()
-        self.thread.join()
-        test_support.threading_cleanup(*self._threads)
-
-    def testBasic(self):
-        # smoke test
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=15)
-        smtp.quit()
-
-    def testEHLO(self):
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=15)
-
-        # no features should be present before the EHLO
-        self.assertEqual(smtp.esmtp_features, {})
-
-        # features expected from the test server
-        expected_features = {'expn':'',
-                             'size': '20000000',
-                             'starttls': '',
-                             'deliverby': '',
-                             'help': '',
-                             }
-
-        smtp.ehlo()
-        self.assertEqual(smtp.esmtp_features, expected_features)
-        for k in expected_features:
-            self.assertTrue(smtp.has_extn(k))
-        self.assertFalse(smtp.has_extn('unsupported-feature'))
-        smtp.quit()
-
-    def testVRFY(self):
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=15)
-
-        for email, name in sim_users.items():
-            expected_known = (250, '%s %s' % (name, smtplib.quoteaddr(email)))
-            self.assertEqual(smtp.vrfy(email), expected_known)
-
-        u = 'nobody@nowhere.com'
-        expected_unknown = (550, 'No such user: %s' % smtplib.quoteaddr(u))
-        self.assertEqual(smtp.vrfy(u), expected_unknown)
-        smtp.quit()
-
-    def testEXPN(self):
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=15)
-
-        for listname, members in sim_lists.items():
-            users = []
-            for m in members:
-                users.append('%s %s' % (sim_users[m], smtplib.quoteaddr(m)))
-            expected_known = (250, '\n'.join(users))
-            self.assertEqual(smtp.expn(listname), expected_known)
-
-        u = 'PSU-Members-List'
-        expected_unknown = (550, 'No access for you!')
-        self.assertEqual(smtp.expn(u), expected_unknown)
-        smtp.quit()
-
-    def testAUTH_PLAIN(self):
-        self.serv.add_feature("AUTH PLAIN")
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=15)
-
-        expected_auth_ok = (235, b'plain auth ok')
-        self.assertEqual(smtp.login(sim_auth[0], sim_auth[1]), expected_auth_ok)
-
-    # SimSMTPChannel doesn't fully support LOGIN or CRAM-MD5 auth because they
-    # require a synchronous read to obtain the credentials...so instead smtpd
-    # sees the credential sent by smtplib's login method as an unknown command,
-    # which results in smtplib raising an auth error.  Fortunately the error
-    # message contains the encoded credential, so we can partially check that it
-    # was generated correctly (partially, because the 'word' is uppercased in
-    # the error message).
-
-    def testAUTH_LOGIN(self):
-        self.serv.add_feature("AUTH LOGIN")
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=15)
-        try: smtp.login(sim_auth[0], sim_auth[1])
-        except smtplib.SMTPAuthenticationError as err:
-            if sim_auth_login_password not in str(err):
-                raise "expected encoded password not found in error message"
-
-    def testAUTH_CRAM_MD5(self):
-        self.serv.add_feature("AUTH CRAM-MD5")
-        smtp = smtplib.SMTP(HOST, self.port, local_hostname='localhost', timeout=15)
-
-        try: smtp.login(sim_auth[0], sim_auth[1])
-        except smtplib.SMTPAuthenticationError as err:
-            if sim_auth_credentials['cram-md5'] not in str(err):
-                raise "expected encoded credentials not found in error message"
-
-    #TODO: add tests for correct AUTH method fallback now that the
-    #test infrastructure can support it.
-
-
-def test_main(verbose=None):
-    test_support.run_unittest(GeneralTests, DebuggingServerTests,
-                              NonConnectingTests,
-                              BadHELOServerTests, SMTPSimTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_smtpnet.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_smtpnet.py
deleted file mode 100644
index a961e14..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_smtpnet.py
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env python
-
-import unittest
-from test import test_support
-import smtplib
-
-test_support.requires("network")
-
-class SmtpSSLTest(unittest.TestCase):
-    testServer = 'smtp.gmail.com'
-    remotePort = 465
-
-    def test_connect(self):
-        test_support.get_attribute(smtplib, 'SMTP_SSL')
-        with test_support.transient_internet(self.testServer):
-            server = smtplib.SMTP_SSL(self.testServer, self.remotePort)
-        server.ehlo()
-        server.quit()
-
-    def test_connect_default_port(self):
-        test_support.get_attribute(smtplib, 'SMTP_SSL')
-        with test_support.transient_internet(self.testServer):
-            server = smtplib.SMTP_SSL(self.testServer)
-        server.ehlo()
-        server.quit()
-
-def test_main():
-    test_support.run_unittest(SmtpSSLTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_socket.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_socket.py
deleted file mode 100644
index 385dff1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_socket.py
+++ /dev/null
@@ -1,1618 +0,0 @@
-#!/usr/bin/env python
-
-import unittest
-from test import test_support
-
-import errno
-import socket
-import select
-import time
-import traceback
-import Queue
-import sys
-import os
-import array
-import contextlib
-from weakref import proxy
-import signal
-import math
-
-def try_address(host, port=0, family=socket.AF_INET):
-    """Try to bind a socket on the given host:port and return True
-    if that has been possible."""
-    try:
-        sock = socket.socket(family, socket.SOCK_STREAM)
-        sock.bind((host, port))
-    except (socket.error, socket.gaierror):
-        return False
-    else:
-        sock.close()
-        return True
-
-HOST = test_support.HOST
-MSG = b'Michael Gilfix was here\n'
-SUPPORTS_IPV6 = socket.has_ipv6 and try_address('::1', family=socket.AF_INET6)
-
-try:
-    import thread
-    import threading
-except ImportError:
-    thread = None
-    threading = None
-
-HOST = test_support.HOST
-MSG = 'Michael Gilfix was here\n'
-
-class SocketTCPTest(unittest.TestCase):
-
-    def setUp(self):
-        self.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.port = test_support.bind_port(self.serv)
-        self.serv.listen(1)
-
-    def tearDown(self):
-        self.serv.close()
-        self.serv = None
-
-class SocketUDPTest(unittest.TestCase):
-
-    def setUp(self):
-        self.serv = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-        self.port = test_support.bind_port(self.serv)
-
-    def tearDown(self):
-        self.serv.close()
-        self.serv = None
-
-class ThreadableTest:
-    """Threadable Test class
-
-    The ThreadableTest class makes it easy to create a threaded
-    client/server pair from an existing unit test. To create a
-    new threaded class from an existing unit test, use multiple
-    inheritance:
-
-        class NewClass (OldClass, ThreadableTest):
-            pass
-
-    This class defines two new fixture functions with obvious
-    purposes for overriding:
-
-        clientSetUp ()
-        clientTearDown ()
-
-    Any new test functions within the class must then define
-    tests in pairs, where the test name is preceeded with a
-    '_' to indicate the client portion of the test. Ex:
-
-        def testFoo(self):
-            # Server portion
-
-        def _testFoo(self):
-            # Client portion
-
-    Any exceptions raised by the clients during their tests
-    are caught and transferred to the main thread to alert
-    the testing framework.
-
-    Note, the server setup function cannot call any blocking
-    functions that rely on the client thread during setup,
-    unless serverExplicitReady() is called just before
-    the blocking call (such as in setting up a client/server
-    connection and performing the accept() in setUp().
-    """
-
-    def __init__(self):
-        # Swap the true setup function
-        self.__setUp = self.setUp
-        self.__tearDown = self.tearDown
-        self.setUp = self._setUp
-        self.tearDown = self._tearDown
-
-    def serverExplicitReady(self):
-        """This method allows the server to explicitly indicate that
-        it wants the client thread to proceed. This is useful if the
-        server is about to execute a blocking routine that is
-        dependent upon the client thread during its setup routine."""
-        self.server_ready.set()
-
-    def _setUp(self):
-        self.server_ready = threading.Event()
-        self.client_ready = threading.Event()
-        self.done = threading.Event()
-        self.queue = Queue.Queue(1)
-
-        # Do some munging to start the client test.
-        methodname = self.id()
-        i = methodname.rfind('.')
-        methodname = methodname[i+1:]
-        test_method = getattr(self, '_' + methodname)
-        self.client_thread = thread.start_new_thread(
-            self.clientRun, (test_method,))
-
-        self.__setUp()
-        if not self.server_ready.is_set():
-            self.server_ready.set()
-        self.client_ready.wait()
-
-    def _tearDown(self):
-        self.__tearDown()
-        self.done.wait()
-
-        if not self.queue.empty():
-            msg = self.queue.get()
-            self.fail(msg)
-
-    def clientRun(self, test_func):
-        self.server_ready.wait()
-        self.client_ready.set()
-        self.clientSetUp()
-        with test_support.check_py3k_warnings():
-            if not callable(test_func):
-                raise TypeError("test_func must be a callable function.")
-        try:
-            test_func()
-        except Exception, strerror:
-            self.queue.put(strerror)
-        self.clientTearDown()
-
-    def clientSetUp(self):
-        raise NotImplementedError("clientSetUp must be implemented.")
-
-    def clientTearDown(self):
-        self.done.set()
-        thread.exit()
-
-class ThreadedTCPSocketTest(SocketTCPTest, ThreadableTest):
-
-    def __init__(self, methodName='runTest'):
-        SocketTCPTest.__init__(self, methodName=methodName)
-        ThreadableTest.__init__(self)
-
-    def clientSetUp(self):
-        self.cli = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-
-    def clientTearDown(self):
-        self.cli.close()
-        self.cli = None
-        ThreadableTest.clientTearDown(self)
-
-class ThreadedUDPSocketTest(SocketUDPTest, ThreadableTest):
-
-    def __init__(self, methodName='runTest'):
-        SocketUDPTest.__init__(self, methodName=methodName)
-        ThreadableTest.__init__(self)
-
-    def clientSetUp(self):
-        self.cli = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-
-    def clientTearDown(self):
-        self.cli.close()
-        self.cli = None
-        ThreadableTest.clientTearDown(self)
-
-class SocketConnectedTest(ThreadedTCPSocketTest):
-
-    def __init__(self, methodName='runTest'):
-        ThreadedTCPSocketTest.__init__(self, methodName=methodName)
-
-    def setUp(self):
-        ThreadedTCPSocketTest.setUp(self)
-        # Indicate explicitly we're ready for the client thread to
-        # proceed and then perform the blocking call to accept
-        self.serverExplicitReady()
-        conn, addr = self.serv.accept()
-        self.cli_conn = conn
-
-    def tearDown(self):
-        self.cli_conn.close()
-        self.cli_conn = None
-        ThreadedTCPSocketTest.tearDown(self)
-
-    def clientSetUp(self):
-        ThreadedTCPSocketTest.clientSetUp(self)
-        self.cli.connect((HOST, self.port))
-        self.serv_conn = self.cli
-
-    def clientTearDown(self):
-        self.serv_conn.close()
-        self.serv_conn = None
-        ThreadedTCPSocketTest.clientTearDown(self)
-
-class SocketPairTest(unittest.TestCase, ThreadableTest):
-
-    def __init__(self, methodName='runTest'):
-        unittest.TestCase.__init__(self, methodName=methodName)
-        ThreadableTest.__init__(self)
-
-    def setUp(self):
-        self.serv, self.cli = socket.socketpair()
-
-    def tearDown(self):
-        self.serv.close()
-        self.serv = None
-
-    def clientSetUp(self):
-        pass
-
-    def clientTearDown(self):
-        self.cli.close()
-        self.cli = None
-        ThreadableTest.clientTearDown(self)
-
-
-#######################################################################
-## Begin Tests
-
-class GeneralModuleTests(unittest.TestCase):
-
-    def test_weakref(self):
-        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        p = proxy(s)
-        self.assertEqual(p.fileno(), s.fileno())
-        s.close()
-        s = None
-        try:
-            p.fileno()
-        except ReferenceError:
-            pass
-        else:
-            self.fail('Socket proxy still exists')
-
-    def testSocketError(self):
-        # Testing socket module exceptions
-        def raise_error(*args, **kwargs):
-            raise socket.error
-        def raise_herror(*args, **kwargs):
-            raise socket.herror
-        def raise_gaierror(*args, **kwargs):
-            raise socket.gaierror
-        self.assertRaises(socket.error, raise_error,
-                              "Error raising socket exception.")
-        self.assertRaises(socket.error, raise_herror,
-                              "Error raising socket exception.")
-        self.assertRaises(socket.error, raise_gaierror,
-                              "Error raising socket exception.")
-
-    def testSendtoErrors(self):
-        # Testing that sendto doens't masks failures. See #10169.
-        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-        self.addCleanup(s.close)
-        s.bind(('', 0))
-        sockname = s.getsockname()
-        # 2 args
-        with self.assertRaises(UnicodeEncodeError):
-            s.sendto(u'\u2620', sockname)
-        with self.assertRaises(TypeError) as cm:
-            s.sendto(5j, sockname)
-        self.assertIn('not complex', str(cm.exception))
-        with self.assertRaises(TypeError) as cm:
-            s.sendto('foo', None)
-        self.assertIn('not NoneType', str(cm.exception))
-        # 3 args
-        with self.assertRaises(UnicodeEncodeError):
-            s.sendto(u'\u2620', 0, sockname)
-        with self.assertRaises(TypeError) as cm:
-            s.sendto(5j, 0, sockname)
-        self.assertIn('not complex', str(cm.exception))
-        with self.assertRaises(TypeError) as cm:
-            s.sendto('foo', 0, None)
-        self.assertIn('not NoneType', str(cm.exception))
-        with self.assertRaises(TypeError) as cm:
-            s.sendto('foo', 'bar', sockname)
-        self.assertIn('an integer is required', str(cm.exception))
-        with self.assertRaises(TypeError) as cm:
-            s.sendto('foo', None, None)
-        self.assertIn('an integer is required', str(cm.exception))
-        # wrong number of args
-        with self.assertRaises(TypeError) as cm:
-            s.sendto('foo')
-        self.assertIn('(1 given)', str(cm.exception))
-        with self.assertRaises(TypeError) as cm:
-            s.sendto('foo', 0, sockname, 4)
-        self.assertIn('(4 given)', str(cm.exception))
-
-
-    def testCrucialConstants(self):
-        # Testing for mission critical constants
-        socket.AF_INET
-        socket.SOCK_STREAM
-        socket.SOCK_DGRAM
-        socket.SOCK_RAW
-        socket.SOCK_RDM
-        socket.SOCK_SEQPACKET
-        socket.SOL_SOCKET
-        socket.SO_REUSEADDR
-
-    def testHostnameRes(self):
-        # Testing hostname resolution mechanisms
-        hostname = socket.gethostname()
-        try:
-            ip = socket.gethostbyname(hostname)
-        except socket.error:
-            # Probably name lookup wasn't set up right; skip this test
-            return
-        self.assertTrue(ip.find('.') >= 0, "Error resolving host to ip.")
-        try:
-            hname, aliases, ipaddrs = socket.gethostbyaddr(ip)
-        except socket.error:
-            # Probably a similar problem as above; skip this test
-            return
-        all_host_names = [hostname, hname] + aliases
-        fqhn = socket.getfqdn(ip)
-        if not fqhn in all_host_names:
-            self.fail("Error testing host resolution mechanisms. (fqdn: %s, all: %s)" % (fqhn, repr(all_host_names)))
-
-    def testRefCountGetNameInfo(self):
-        # Testing reference count for getnameinfo
-        if hasattr(sys, "getrefcount"):
-            try:
-                # On some versions, this loses a reference
-                orig = sys.getrefcount(__name__)
-                socket.getnameinfo(__name__,0)
-            except TypeError:
-                self.assertEqual(sys.getrefcount(__name__), orig,
-                                 "socket.getnameinfo loses a reference")
-
-    def testInterpreterCrash(self):
-        # Making sure getnameinfo doesn't crash the interpreter
-        try:
-            # On some versions, this crashes the interpreter.
-            socket.getnameinfo(('x', 0, 0, 0), 0)
-        except socket.error:
-            pass
-
-    def testNtoH(self):
-        # This just checks that htons etc. are their own inverse,
-        # when looking at the lower 16 or 32 bits.
-        sizes = {socket.htonl: 32, socket.ntohl: 32,
-                 socket.htons: 16, socket.ntohs: 16}
-        for func, size in sizes.items():
-            mask = (1L<<size) - 1
-            for i in (0, 1, 0xffff, ~0xffff, 2, 0x01234567, 0x76543210):
-                self.assertEqual(i & mask, func(func(i&mask)) & mask)
-
-            swapped = func(mask)
-            self.assertEqual(swapped & mask, mask)
-            self.assertRaises(OverflowError, func, 1L<<34)
-
-    def testNtoHErrors(self):
-        good_values = [ 1, 2, 3, 1L, 2L, 3L ]
-        bad_values = [ -1, -2, -3, -1L, -2L, -3L ]
-        for k in good_values:
-            socket.ntohl(k)
-            socket.ntohs(k)
-            socket.htonl(k)
-            socket.htons(k)
-        for k in bad_values:
-            self.assertRaises(OverflowError, socket.ntohl, k)
-            self.assertRaises(OverflowError, socket.ntohs, k)
-            self.assertRaises(OverflowError, socket.htonl, k)
-            self.assertRaises(OverflowError, socket.htons, k)
-
-    def testGetServBy(self):
-        eq = self.assertEqual
-        # Find one service that exists, then check all the related interfaces.
-        # I've ordered this by protocols that have both a tcp and udp
-        # protocol, at least for modern Linuxes.
-        if (sys.platform.startswith('linux') or
-            sys.platform.startswith('freebsd') or
-            sys.platform.startswith('netbsd') or
-            sys.platform == 'darwin'):
-            # avoid the 'echo' service on this platform, as there is an
-            # assumption breaking non-standard port/protocol entry
-            services = ('daytime', 'qotd', 'domain')
-        else:
-            services = ('echo', 'daytime', 'domain')
-        for service in services:
-            try:
-                port = socket.getservbyname(service, 'tcp')
-                break
-            except socket.error:
-                pass
-        else:
-            raise socket.error
-        # Try same call with optional protocol omitted
-        port2 = socket.getservbyname(service)
-        eq(port, port2)
-        # Try udp, but don't barf it it doesn't exist
-        try:
-            udpport = socket.getservbyname(service, 'udp')
-        except socket.error:
-            udpport = None
-        else:
-            eq(udpport, port)
-        # Now make sure the lookup by port returns the same service name
-        eq(socket.getservbyport(port2), service)
-        eq(socket.getservbyport(port, 'tcp'), service)
-        if udpport is not None:
-            eq(socket.getservbyport(udpport, 'udp'), service)
-        # Make sure getservbyport does not accept out of range ports.
-        self.assertRaises(OverflowError, socket.getservbyport, -1)
-        self.assertRaises(OverflowError, socket.getservbyport, 65536)
-
-    def testDefaultTimeout(self):
-        # Testing default timeout
-        # The default timeout should initially be None
-        self.assertEqual(socket.getdefaulttimeout(), None)
-        s = socket.socket()
-        self.assertEqual(s.gettimeout(), None)
-        s.close()
-
-        # Set the default timeout to 10, and see if it propagates
-        socket.setdefaulttimeout(10)
-        self.assertEqual(socket.getdefaulttimeout(), 10)
-        s = socket.socket()
-        self.assertEqual(s.gettimeout(), 10)
-        s.close()
-
-        # Reset the default timeout to None, and see if it propagates
-        socket.setdefaulttimeout(None)
-        self.assertEqual(socket.getdefaulttimeout(), None)
-        s = socket.socket()
-        self.assertEqual(s.gettimeout(), None)
-        s.close()
-
-        # Check that setting it to an invalid value raises ValueError
-        self.assertRaises(ValueError, socket.setdefaulttimeout, -1)
-
-        # Check that setting it to an invalid type raises TypeError
-        self.assertRaises(TypeError, socket.setdefaulttimeout, "spam")
-
-    def testIPv4_inet_aton_fourbytes(self):
-        if not hasattr(socket, 'inet_aton'):
-            return  # No inet_aton, nothing to check
-        # Test that issue1008086 and issue767150 are fixed.
-        # It must return 4 bytes.
-        self.assertEqual('\x00'*4, socket.inet_aton('0.0.0.0'))
-        self.assertEqual('\xff'*4, socket.inet_aton('255.255.255.255'))
-
-    def testIPv4toString(self):
-        if not hasattr(socket, 'inet_pton'):
-            return # No inet_pton() on this platform
-        from socket import inet_aton as f, inet_pton, AF_INET
-        g = lambda a: inet_pton(AF_INET, a)
-
-        self.assertEqual('\x00\x00\x00\x00', f('0.0.0.0'))
-        self.assertEqual('\xff\x00\xff\x00', f('255.0.255.0'))
-        self.assertEqual('\xaa\xaa\xaa\xaa', f('170.170.170.170'))
-        self.assertEqual('\x01\x02\x03\x04', f('1.2.3.4'))
-        self.assertEqual('\xff\xff\xff\xff', f('255.255.255.255'))
-
-        self.assertEqual('\x00\x00\x00\x00', g('0.0.0.0'))
-        self.assertEqual('\xff\x00\xff\x00', g('255.0.255.0'))
-        self.assertEqual('\xaa\xaa\xaa\xaa', g('170.170.170.170'))
-        self.assertEqual('\xff\xff\xff\xff', g('255.255.255.255'))
-
-    def testIPv6toString(self):
-        if not hasattr(socket, 'inet_pton'):
-            return # No inet_pton() on this platform
-        try:
-            from socket import inet_pton, AF_INET6, has_ipv6
-            if not has_ipv6:
-                return
-        except ImportError:
-            return
-        f = lambda a: inet_pton(AF_INET6, a)
-
-        self.assertEqual('\x00' * 16, f('::'))
-        self.assertEqual('\x00' * 16, f('0::0'))
-        self.assertEqual('\x00\x01' + '\x00' * 14, f('1::'))
-        self.assertEqual(
-            '\x45\xef\x76\xcb\x00\x1a\x56\xef\xaf\xeb\x0b\xac\x19\x24\xae\xae',
-            f('45ef:76cb:1a:56ef:afeb:bac:1924:aeae')
-        )
-
-    def testStringToIPv4(self):
-        if not hasattr(socket, 'inet_ntop'):
-            return # No inet_ntop() on this platform
-        from socket import inet_ntoa as f, inet_ntop, AF_INET
-        g = lambda a: inet_ntop(AF_INET, a)
-
-        self.assertEqual('1.0.1.0', f('\x01\x00\x01\x00'))
-        self.assertEqual('170.85.170.85', f('\xaa\x55\xaa\x55'))
-        self.assertEqual('255.255.255.255', f('\xff\xff\xff\xff'))
-        self.assertEqual('1.2.3.4', f('\x01\x02\x03\x04'))
-
-        self.assertEqual('1.0.1.0', g('\x01\x00\x01\x00'))
-        self.assertEqual('170.85.170.85', g('\xaa\x55\xaa\x55'))
-        self.assertEqual('255.255.255.255', g('\xff\xff\xff\xff'))
-
-    def testStringToIPv6(self):
-        if not hasattr(socket, 'inet_ntop'):
-            return # No inet_ntop() on this platform
-        try:
-            from socket import inet_ntop, AF_INET6, has_ipv6
-            if not has_ipv6:
-                return
-        except ImportError:
-            return
-        f = lambda a: inet_ntop(AF_INET6, a)
-
-        self.assertEqual('::', f('\x00' * 16))
-        self.assertEqual('::1', f('\x00' * 15 + '\x01'))
-        self.assertEqual(
-            'aef:b01:506:1001:ffff:9997:55:170',
-            f('\x0a\xef\x0b\x01\x05\x06\x10\x01\xff\xff\x99\x97\x00\x55\x01\x70')
-        )
-
-    # XXX The following don't test module-level functionality...
-
-    def _get_unused_port(self, bind_address='0.0.0.0'):
-        """Use a temporary socket to elicit an unused ephemeral port.
-
-        Args:
-            bind_address: Hostname or IP address to search for a port on.
-
-        Returns: A most likely to be unused port.
-        """
-        tempsock = socket.socket()
-        tempsock.bind((bind_address, 0))
-        host, port = tempsock.getsockname()
-        tempsock.close()
-        return port
-
-    def testSockName(self):
-        # Testing getsockname()
-        port = self._get_unused_port()
-        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.addCleanup(sock.close)
-        sock.bind(("0.0.0.0", port))
-        name = sock.getsockname()
-        # XXX(nnorwitz): http://tinyurl.com/os5jz seems to indicate
-        # it reasonable to get the host's addr in addition to 0.0.0.0.
-        # At least for eCos.  This is required for the S/390 to pass.
-        try:
-            my_ip_addr = socket.gethostbyname(socket.gethostname())
-        except socket.error:
-            # Probably name lookup wasn't set up right; skip this test
-            return
-        self.assertIn(name[0], ("0.0.0.0", my_ip_addr), '%s invalid' % name[0])
-        self.assertEqual(name[1], port)
-
-    def testGetSockOpt(self):
-        # Testing getsockopt()
-        # We know a socket should start without reuse==0
-        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.addCleanup(sock.close)
-        reuse = sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR)
-        self.assertFalse(reuse != 0, "initial mode is reuse")
-
-    def testSetSockOpt(self):
-        # Testing setsockopt()
-        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.addCleanup(sock.close)
-        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-        reuse = sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR)
-        self.assertFalse(reuse == 0, "failed to set reuse mode")
-
-    def testSendAfterClose(self):
-        # testing send() after close() with timeout
-        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        sock.settimeout(1)
-        sock.close()
-        self.assertRaises(socket.error, sock.send, "spam")
-
-    def testNewAttributes(self):
-        # testing .family, .type and .protocol
-        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.assertEqual(sock.family, socket.AF_INET)
-        self.assertEqual(sock.type, socket.SOCK_STREAM)
-        self.assertEqual(sock.proto, 0)
-        sock.close()
-
-    def test_getsockaddrarg(self):
-        host = '0.0.0.0'
-        port = self._get_unused_port(bind_address=host)
-        big_port = port + 65536
-        neg_port = port - 65536
-        sock = socket.socket()
-        try:
-            self.assertRaises(OverflowError, sock.bind, (host, big_port))
-            self.assertRaises(OverflowError, sock.bind, (host, neg_port))
-            sock.bind((host, port))
-        finally:
-            sock.close()
-
-    @unittest.skipUnless(os.name == "nt", "Windows specific")
-    def test_sock_ioctl(self):
-        self.assertTrue(hasattr(socket.socket, 'ioctl'))
-        self.assertTrue(hasattr(socket, 'SIO_RCVALL'))
-        self.assertTrue(hasattr(socket, 'RCVALL_ON'))
-        self.assertTrue(hasattr(socket, 'RCVALL_OFF'))
-        self.assertTrue(hasattr(socket, 'SIO_KEEPALIVE_VALS'))
-        s = socket.socket()
-        self.addCleanup(s.close)
-        self.assertRaises(ValueError, s.ioctl, -1, None)
-        s.ioctl(socket.SIO_KEEPALIVE_VALS, (1, 100, 100))
-
-    def testGetaddrinfo(self):
-        try:
-            socket.getaddrinfo('localhost', 80)
-        except socket.gaierror as err:
-            if err.errno == socket.EAI_SERVICE:
-                # see http://bugs.python.org/issue1282647
-                self.skipTest("buggy libc version")
-            raise
-        # len of every sequence is supposed to be == 5
-        for info in socket.getaddrinfo(HOST, None):
-            self.assertEqual(len(info), 5)
-        # host can be a domain name, a string representation of an
-        # IPv4/v6 address or None
-        socket.getaddrinfo('localhost', 80)
-        socket.getaddrinfo('127.0.0.1', 80)
-        socket.getaddrinfo(None, 80)
-        if SUPPORTS_IPV6:
-            socket.getaddrinfo('::1', 80)
-        # port can be a string service name such as "http", a numeric
-        # port number or None
-        socket.getaddrinfo(HOST, "http")
-        socket.getaddrinfo(HOST, 80)
-        socket.getaddrinfo(HOST, None)
-        # test family and socktype filters
-        infos = socket.getaddrinfo(HOST, None, socket.AF_INET)
-        for family, _, _, _, _ in infos:
-            self.assertEqual(family, socket.AF_INET)
-        infos = socket.getaddrinfo(HOST, None, 0, socket.SOCK_STREAM)
-        for _, socktype, _, _, _ in infos:
-            self.assertEqual(socktype, socket.SOCK_STREAM)
-        # test proto and flags arguments
-        socket.getaddrinfo(HOST, None, 0, 0, socket.SOL_TCP)
-        socket.getaddrinfo(HOST, None, 0, 0, 0, socket.AI_PASSIVE)
-        # a server willing to support both IPv4 and IPv6 will
-        # usually do this
-        socket.getaddrinfo(None, 0, socket.AF_UNSPEC, socket.SOCK_STREAM, 0,
-                           socket.AI_PASSIVE)
-
-
-    def check_sendall_interrupted(self, with_timeout):
-        # socketpair() is not stricly required, but it makes things easier.
-        if not hasattr(signal, 'alarm') or not hasattr(socket, 'socketpair'):
-            self.skipTest("signal.alarm and socket.socketpair required for this test")
-        # Our signal handlers clobber the C errno by calling a math function
-        # with an invalid domain value.
-        def ok_handler(*args):
-            self.assertRaises(ValueError, math.acosh, 0)
-        def raising_handler(*args):
-            self.assertRaises(ValueError, math.acosh, 0)
-            1 // 0
-        c, s = socket.socketpair()
-        old_alarm = signal.signal(signal.SIGALRM, raising_handler)
-        try:
-            if with_timeout:
-                # Just above the one second minimum for signal.alarm
-                c.settimeout(1.5)
-            with self.assertRaises(ZeroDivisionError):
-                signal.alarm(1)
-                c.sendall(b"x" * (1024**2))
-            if with_timeout:
-                signal.signal(signal.SIGALRM, ok_handler)
-                signal.alarm(1)
-                self.assertRaises(socket.timeout, c.sendall, b"x" * (1024**2))
-        finally:
-            signal.signal(signal.SIGALRM, old_alarm)
-            c.close()
-            s.close()
-
-    def test_sendall_interrupted(self):
-        self.check_sendall_interrupted(False)
-
-    def test_sendall_interrupted_with_timeout(self):
-        self.check_sendall_interrupted(True)
-
-    def testListenBacklog0(self):
-        srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        srv.bind((HOST, 0))
-        # backlog = 0
-        srv.listen(0)
-        srv.close()
-
-
-@unittest.skipUnless(thread, 'Threading required for this test.')
-class BasicTCPTest(SocketConnectedTest):
-
-    def __init__(self, methodName='runTest'):
-        SocketConnectedTest.__init__(self, methodName=methodName)
-
-    def testRecv(self):
-        # Testing large receive over TCP
-        msg = self.cli_conn.recv(1024)
-        self.assertEqual(msg, MSG)
-
-    def _testRecv(self):
-        self.serv_conn.send(MSG)
-
-    def testOverFlowRecv(self):
-        # Testing receive in chunks over TCP
-        seg1 = self.cli_conn.recv(len(MSG) - 3)
-        seg2 = self.cli_conn.recv(1024)
-        msg = seg1 + seg2
-        self.assertEqual(msg, MSG)
-
-    def _testOverFlowRecv(self):
-        self.serv_conn.send(MSG)
-
-    def testRecvFrom(self):
-        # Testing large recvfrom() over TCP
-        msg, addr = self.cli_conn.recvfrom(1024)
-        self.assertEqual(msg, MSG)
-
-    def _testRecvFrom(self):
-        self.serv_conn.send(MSG)
-
-    def testOverFlowRecvFrom(self):
-        # Testing recvfrom() in chunks over TCP
-        seg1, addr = self.cli_conn.recvfrom(len(MSG)-3)
-        seg2, addr = self.cli_conn.recvfrom(1024)
-        msg = seg1 + seg2
-        self.assertEqual(msg, MSG)
-
-    def _testOverFlowRecvFrom(self):
-        self.serv_conn.send(MSG)
-
-    def testSendAll(self):
-        # Testing sendall() with a 2048 byte string over TCP
-        msg = ''
-        while 1:
-            read = self.cli_conn.recv(1024)
-            if not read:
-                break
-            msg += read
-        self.assertEqual(msg, 'f' * 2048)
-
-    def _testSendAll(self):
-        big_chunk = 'f' * 2048
-        self.serv_conn.sendall(big_chunk)
-
-    def testFromFd(self):
-        # Testing fromfd()
-        if not hasattr(socket, "fromfd"):
-            return # On Windows, this doesn't exist
-        fd = self.cli_conn.fileno()
-        sock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_STREAM)
-        self.addCleanup(sock.close)
-        msg = sock.recv(1024)
-        self.assertEqual(msg, MSG)
-
-    def _testFromFd(self):
-        self.serv_conn.send(MSG)
-
-    def testDup(self):
-        # Testing dup()
-        sock = self.cli_conn.dup()
-        self.addCleanup(sock.close)
-        msg = sock.recv(1024)
-        self.assertEqual(msg, MSG)
-
-    def _testDup(self):
-        self.serv_conn.send(MSG)
-
-    def testShutdown(self):
-        # Testing shutdown()
-        msg = self.cli_conn.recv(1024)
-        self.assertEqual(msg, MSG)
-        # wait for _testShutdown to finish: on OS X, when the server
-        # closes the connection the client also becomes disconnected,
-        # and the client's shutdown call will fail. (Issue #4397.)
-        self.done.wait()
-
-    def _testShutdown(self):
-        self.serv_conn.send(MSG)
-        self.serv_conn.shutdown(2)
-
-@unittest.skipUnless(thread, 'Threading required for this test.')
-class BasicUDPTest(ThreadedUDPSocketTest):
-
-    def __init__(self, methodName='runTest'):
-        ThreadedUDPSocketTest.__init__(self, methodName=methodName)
-
-    def testSendtoAndRecv(self):
-        # Testing sendto() and Recv() over UDP
-        msg = self.serv.recv(len(MSG))
-        self.assertEqual(msg, MSG)
-
-    def _testSendtoAndRecv(self):
-        self.cli.sendto(MSG, 0, (HOST, self.port))
-
-    def testRecvFrom(self):
-        # Testing recvfrom() over UDP
-        msg, addr = self.serv.recvfrom(len(MSG))
-        self.assertEqual(msg, MSG)
-
-    def _testRecvFrom(self):
-        self.cli.sendto(MSG, 0, (HOST, self.port))
-
-    def testRecvFromNegative(self):
-        # Negative lengths passed to recvfrom should give ValueError.
-        self.assertRaises(ValueError, self.serv.recvfrom, -1)
-
-    def _testRecvFromNegative(self):
-        self.cli.sendto(MSG, 0, (HOST, self.port))
-
-@unittest.skipUnless(thread, 'Threading required for this test.')
-class TCPCloserTest(ThreadedTCPSocketTest):
-
-    def testClose(self):
-        conn, addr = self.serv.accept()
-        conn.close()
-
-        sd = self.cli
-        read, write, err = select.select([sd], [], [], 1.0)
-        self.assertEqual(read, [sd])
-        self.assertEqual(sd.recv(1), '')
-
-    def _testClose(self):
-        self.cli.connect((HOST, self.port))
-        time.sleep(1.0)
-
-@unittest.skipUnless(thread, 'Threading required for this test.')
-class BasicSocketPairTest(SocketPairTest):
-
-    def __init__(self, methodName='runTest'):
-        SocketPairTest.__init__(self, methodName=methodName)
-
-    def testRecv(self):
-        msg = self.serv.recv(1024)
-        self.assertEqual(msg, MSG)
-
-    def _testRecv(self):
-        self.cli.send(MSG)
-
-    def testSend(self):
-        self.serv.send(MSG)
-
-    def _testSend(self):
-        msg = self.cli.recv(1024)
-        self.assertEqual(msg, MSG)
-
-@unittest.skipUnless(thread, 'Threading required for this test.')
-class NonBlockingTCPTests(ThreadedTCPSocketTest):
-
-    def __init__(self, methodName='runTest'):
-        ThreadedTCPSocketTest.__init__(self, methodName=methodName)
-
-    def testSetBlocking(self):
-        # Testing whether set blocking works
-        self.serv.setblocking(0)
-        start = time.time()
-        try:
-            self.serv.accept()
-        except socket.error:
-            pass
-        end = time.time()
-        self.assertTrue((end - start) < 1.0, "Error setting non-blocking mode.")
-
-    def _testSetBlocking(self):
-        pass
-
-    def testAccept(self):
-        # Testing non-blocking accept
-        self.serv.setblocking(0)
-        try:
-            conn, addr = self.serv.accept()
-        except socket.error:
-            pass
-        else:
-            self.fail("Error trying to do non-blocking accept.")
-        read, write, err = select.select([self.serv], [], [])
-        if self.serv in read:
-            conn, addr = self.serv.accept()
-            conn.close()
-        else:
-            self.fail("Error trying to do accept after select.")
-
-    def _testAccept(self):
-        time.sleep(0.1)
-        self.cli.connect((HOST, self.port))
-
-    def testConnect(self):
-        # Testing non-blocking connect
-        conn, addr = self.serv.accept()
-        conn.close()
-
-    def _testConnect(self):
-        self.cli.settimeout(10)
-        self.cli.connect((HOST, self.port))
-
-    def testRecv(self):
-        # Testing non-blocking recv
-        conn, addr = self.serv.accept()
-        conn.setblocking(0)
-        try:
-            msg = conn.recv(len(MSG))
-        except socket.error:
-            pass
-        else:
-            self.fail("Error trying to do non-blocking recv.")
-        read, write, err = select.select([conn], [], [])
-        if conn in read:
-            msg = conn.recv(len(MSG))
-            conn.close()
-            self.assertEqual(msg, MSG)
-        else:
-            self.fail("Error during select call to non-blocking socket.")
-
-    def _testRecv(self):
-        self.cli.connect((HOST, self.port))
-        time.sleep(0.1)
-        self.cli.send(MSG)
-
-@unittest.skipUnless(thread, 'Threading required for this test.')
-class FileObjectClassTestCase(SocketConnectedTest):
-
-    bufsize = -1 # Use default buffer size
-
-    def __init__(self, methodName='runTest'):
-        SocketConnectedTest.__init__(self, methodName=methodName)
-
-    def setUp(self):
-        SocketConnectedTest.setUp(self)
-        self.serv_file = self.cli_conn.makefile('rb', self.bufsize)
-
-    def tearDown(self):
-        self.serv_file.close()
-        self.assertTrue(self.serv_file.closed)
-        self.serv_file = None
-        SocketConnectedTest.tearDown(self)
-
-    def clientSetUp(self):
-        SocketConnectedTest.clientSetUp(self)
-        self.cli_file = self.serv_conn.makefile('wb')
-
-    def clientTearDown(self):
-        self.cli_file.close()
-        self.assertTrue(self.cli_file.closed)
-        self.cli_file = None
-        SocketConnectedTest.clientTearDown(self)
-
-    def testSmallRead(self):
-        # Performing small file read test
-        first_seg = self.serv_file.read(len(MSG)-3)
-        second_seg = self.serv_file.read(3)
-        msg = first_seg + second_seg
-        self.assertEqual(msg, MSG)
-
-    def _testSmallRead(self):
-        self.cli_file.write(MSG)
-        self.cli_file.flush()
-
-    def testFullRead(self):
-        # read until EOF
-        msg = self.serv_file.read()
-        self.assertEqual(msg, MSG)
-
-    def _testFullRead(self):
-        self.cli_file.write(MSG)
-        self.cli_file.close()
-
-    def testUnbufferedRead(self):
-        # Performing unbuffered file read test
-        buf = ''
-        while 1:
-            char = self.serv_file.read(1)
-            if not char:
-                break
-            buf += char
-        self.assertEqual(buf, MSG)
-
-    def _testUnbufferedRead(self):
-        self.cli_file.write(MSG)
-        self.cli_file.flush()
-
-    def testReadline(self):
-        # Performing file readline test
-        line = self.serv_file.readline()
-        self.assertEqual(line, MSG)
-
-    def _testReadline(self):
-        self.cli_file.write(MSG)
-        self.cli_file.flush()
-
-    def testReadlineAfterRead(self):
-        a_baloo_is = self.serv_file.read(len("A baloo is"))
-        self.assertEqual("A baloo is", a_baloo_is)
-        _a_bear = self.serv_file.read(len(" a bear"))
-        self.assertEqual(" a bear", _a_bear)
-        line = self.serv_file.readline()
-        self.assertEqual("\n", line)
-        line = self.serv_file.readline()
-        self.assertEqual("A BALOO IS A BEAR.\n", line)
-        line = self.serv_file.readline()
-        self.assertEqual(MSG, line)
-
-    def _testReadlineAfterRead(self):
-        self.cli_file.write("A baloo is a bear\n")
-        self.cli_file.write("A BALOO IS A BEAR.\n")
-        self.cli_file.write(MSG)
-        self.cli_file.flush()
-
-    def testReadlineAfterReadNoNewline(self):
-        end_of_ = self.serv_file.read(len("End Of "))
-        self.assertEqual("End Of ", end_of_)
-        line = self.serv_file.readline()
-        self.assertEqual("Line", line)
-
-    def _testReadlineAfterReadNoNewline(self):
-        self.cli_file.write("End Of Line")
-
-    def testClosedAttr(self):
-        self.assertTrue(not self.serv_file.closed)
-
-    def _testClosedAttr(self):
-        self.assertTrue(not self.cli_file.closed)
-
-
-class FileObjectInterruptedTestCase(unittest.TestCase):
-    """Test that the file object correctly handles EINTR internally."""
-
-    class MockSocket(object):
-        def __init__(self, recv_funcs=()):
-            # A generator that returns callables that we'll call for each
-            # call to recv().
-            self._recv_step = iter(recv_funcs)
-
-        def recv(self, size):
-            return self._recv_step.next()()
-
-    @staticmethod
-    def _raise_eintr():
-        raise socket.error(errno.EINTR)
-
-    def _test_readline(self, size=-1, **kwargs):
-        mock_sock = self.MockSocket(recv_funcs=[
-                lambda : "This is the first line\nAnd the sec",
-                self._raise_eintr,
-                lambda : "ond line is here\n",
-                lambda : "",
-            ])
-        fo = socket._fileobject(mock_sock, **kwargs)
-        self.assertEqual(fo.readline(size), "This is the first line\n")
-        self.assertEqual(fo.readline(size), "And the second line is here\n")
-
-    def _test_read(self, size=-1, **kwargs):
-        mock_sock = self.MockSocket(recv_funcs=[
-                lambda : "This is the first line\nAnd the sec",
-                self._raise_eintr,
-                lambda : "ond line is here\n",
-                lambda : "",
-            ])
-        fo = socket._fileobject(mock_sock, **kwargs)
-        self.assertEqual(fo.read(size), "This is the first line\n"
-                          "And the second line is here\n")
-
-    def test_default(self):
-        self._test_readline()
-        self._test_readline(size=100)
-        self._test_read()
-        self._test_read(size=100)
-
-    def test_with_1k_buffer(self):
-        self._test_readline(bufsize=1024)
-        self._test_readline(size=100, bufsize=1024)
-        self._test_read(bufsize=1024)
-        self._test_read(size=100, bufsize=1024)
-
-    def _test_readline_no_buffer(self, size=-1):
-        mock_sock = self.MockSocket(recv_funcs=[
-                lambda : "aa",
-                lambda : "\n",
-                lambda : "BB",
-                self._raise_eintr,
-                lambda : "bb",
-                lambda : "",
-            ])
-        fo = socket._fileobject(mock_sock, bufsize=0)
-        self.assertEqual(fo.readline(size), "aa\n")
-        self.assertEqual(fo.readline(size), "BBbb")
-
-    def test_no_buffer(self):
-        self._test_readline_no_buffer()
-        self._test_readline_no_buffer(size=4)
-        self._test_read(bufsize=0)
-        self._test_read(size=100, bufsize=0)
-
-
-class UnbufferedFileObjectClassTestCase(FileObjectClassTestCase):
-
-    """Repeat the tests from FileObjectClassTestCase with bufsize==0.
-
-    In this case (and in this case only), it should be possible to
-    create a file object, read a line from it, create another file
-    object, read another line from it, without loss of data in the
-    first file object's buffer.  Note that httplib relies on this
-    when reading multiple requests from the same socket."""
-
-    bufsize = 0 # Use unbuffered mode
-
-    def testUnbufferedReadline(self):
-        # Read a line, create a new file object, read another line with it
-        line = self.serv_file.readline() # first line
-        self.assertEqual(line, "A. " + MSG) # first line
-        self.serv_file = self.cli_conn.makefile('rb', 0)
-        line = self.serv_file.readline() # second line
-        self.assertEqual(line, "B. " + MSG) # second line
-
-    def _testUnbufferedReadline(self):
-        self.cli_file.write("A. " + MSG)
-        self.cli_file.write("B. " + MSG)
-        self.cli_file.flush()
-
-class LineBufferedFileObjectClassTestCase(FileObjectClassTestCase):
-
-    bufsize = 1 # Default-buffered for reading; line-buffered for writing
-
-
-class SmallBufferedFileObjectClassTestCase(FileObjectClassTestCase):
-
-    bufsize = 2 # Exercise the buffering code
-
-
-class NetworkConnectionTest(object):
-    """Prove network connection."""
-    def clientSetUp(self):
-        # We're inherited below by BasicTCPTest2, which also inherits
-        # BasicTCPTest, which defines self.port referenced below.
-        self.cli = socket.create_connection((HOST, self.port))
-        self.serv_conn = self.cli
-
-class BasicTCPTest2(NetworkConnectionTest, BasicTCPTest):
-    """Tests that NetworkConnection does not break existing TCP functionality.
-    """
-
-class NetworkConnectionNoServer(unittest.TestCase):
-    class MockSocket(socket.socket):
-        def connect(self, *args):
-            raise socket.timeout('timed out')
-
-    @contextlib.contextmanager
-    def mocked_socket_module(self):
-        """Return a socket which times out on connect"""
-        old_socket = socket.socket
-        socket.socket = self.MockSocket
-        try:
-            yield
-        finally:
-            socket.socket = old_socket
-
-    def test_connect(self):
-        port = test_support.find_unused_port()
-        cli = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.addCleanup(cli.close)
-        with self.assertRaises(socket.error) as cm:
-            cli.connect((HOST, port))
-        self.assertEqual(cm.exception.errno, errno.ECONNREFUSED)
-
-    def test_create_connection(self):
-        # Issue #9792: errors raised by create_connection() should have
-        # a proper errno attribute.
-        port = test_support.find_unused_port()
-        with self.assertRaises(socket.error) as cm:
-            socket.create_connection((HOST, port))
-        self.assertEqual(cm.exception.errno, errno.ECONNREFUSED)
-
-    def test_create_connection_timeout(self):
-        # Issue #9792: create_connection() should not recast timeout errors
-        # as generic socket errors.
-        with self.mocked_socket_module():
-            with self.assertRaises(socket.timeout):
-                socket.create_connection((HOST, 1234))
-
-
-@unittest.skipUnless(thread, 'Threading required for this test.')
-class NetworkConnectionAttributesTest(SocketTCPTest, ThreadableTest):
-
-    def __init__(self, methodName='runTest'):
-        SocketTCPTest.__init__(self, methodName=methodName)
-        ThreadableTest.__init__(self)
-
-    def clientSetUp(self):
-        self.source_port = test_support.find_unused_port()
-
-    def clientTearDown(self):
-        self.cli.close()
-        self.cli = None
-        ThreadableTest.clientTearDown(self)
-
-    def _justAccept(self):
-        conn, addr = self.serv.accept()
-        conn.close()
-
-    testFamily = _justAccept
-    def _testFamily(self):
-        self.cli = socket.create_connection((HOST, self.port), timeout=30)
-        self.addCleanup(self.cli.close)
-        self.assertEqual(self.cli.family, 2)
-
-    testSourceAddress = _justAccept
-    def _testSourceAddress(self):
-        self.cli = socket.create_connection((HOST, self.port), timeout=30,
-                source_address=('', self.source_port))
-        self.addCleanup(self.cli.close)
-        self.assertEqual(self.cli.getsockname()[1], self.source_port)
-        # The port number being used is sufficient to show that the bind()
-        # call happened.
-
-    testTimeoutDefault = _justAccept
-    def _testTimeoutDefault(self):
-        # passing no explicit timeout uses socket's global default
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        socket.setdefaulttimeout(42)
-        try:
-            self.cli = socket.create_connection((HOST, self.port))
-            self.addCleanup(self.cli.close)
-        finally:
-            socket.setdefaulttimeout(None)
-        self.assertEqual(self.cli.gettimeout(), 42)
-
-    testTimeoutNone = _justAccept
-    def _testTimeoutNone(self):
-        # None timeout means the same as sock.settimeout(None)
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        socket.setdefaulttimeout(30)
-        try:
-            self.cli = socket.create_connection((HOST, self.port), timeout=None)
-            self.addCleanup(self.cli.close)
-        finally:
-            socket.setdefaulttimeout(None)
-        self.assertEqual(self.cli.gettimeout(), None)
-
-    testTimeoutValueNamed = _justAccept
-    def _testTimeoutValueNamed(self):
-        self.cli = socket.create_connection((HOST, self.port), timeout=30)
-        self.assertEqual(self.cli.gettimeout(), 30)
-
-    testTimeoutValueNonamed = _justAccept
-    def _testTimeoutValueNonamed(self):
-        self.cli = socket.create_connection((HOST, self.port), 30)
-        self.addCleanup(self.cli.close)
-        self.assertEqual(self.cli.gettimeout(), 30)
-
-@unittest.skipUnless(thread, 'Threading required for this test.')
-class NetworkConnectionBehaviourTest(SocketTCPTest, ThreadableTest):
-
-    def __init__(self, methodName='runTest'):
-        SocketTCPTest.__init__(self, methodName=methodName)
-        ThreadableTest.__init__(self)
-
-    def clientSetUp(self):
-        pass
-
-    def clientTearDown(self):
-        self.cli.close()
-        self.cli = None
-        ThreadableTest.clientTearDown(self)
-
-    def testInsideTimeout(self):
-        conn, addr = self.serv.accept()
-        self.addCleanup(conn.close)
-        time.sleep(3)
-        conn.send("done!")
-    testOutsideTimeout = testInsideTimeout
-
-    def _testInsideTimeout(self):
-        self.cli = sock = socket.create_connection((HOST, self.port))
-        data = sock.recv(5)
-        self.assertEqual(data, "done!")
-
-    def _testOutsideTimeout(self):
-        self.cli = sock = socket.create_connection((HOST, self.port), timeout=1)
-        self.assertRaises(socket.timeout, lambda: sock.recv(5))
-
-
-class Urllib2FileobjectTest(unittest.TestCase):
-
-    # urllib2.HTTPHandler has "borrowed" socket._fileobject, and requires that
-    # it close the socket if the close c'tor argument is true
-
-    def testClose(self):
-        class MockSocket:
-            closed = False
-            def flush(self): pass
-            def close(self): self.closed = True
-
-        # must not close unless we request it: the original use of _fileobject
-        # by module socket requires that the underlying socket not be closed until
-        # the _socketobject that created the _fileobject is closed
-        s = MockSocket()
-        f = socket._fileobject(s)
-        f.close()
-        self.assertTrue(not s.closed)
-
-        s = MockSocket()
-        f = socket._fileobject(s, close=True)
-        f.close()
-        self.assertTrue(s.closed)
-
-class TCPTimeoutTest(SocketTCPTest):
-
-    def testTCPTimeout(self):
-        def raise_timeout(*args, **kwargs):
-            self.serv.settimeout(1.0)
-            self.serv.accept()
-        self.assertRaises(socket.timeout, raise_timeout,
-                              "Error generating a timeout exception (TCP)")
-
-    def testTimeoutZero(self):
-        ok = False
-        try:
-            self.serv.settimeout(0.0)
-            foo = self.serv.accept()
-        except socket.timeout:
-            self.fail("caught timeout instead of error (TCP)")
-        except socket.error:
-            ok = True
-        except:
-            self.fail("caught unexpected exception (TCP)")
-        if not ok:
-            self.fail("accept() returned success when we did not expect it")
-
-    def testInterruptedTimeout(self):
-        # XXX I don't know how to do this test on MSWindows or any other
-        # plaform that doesn't support signal.alarm() or os.kill(), though
-        # the bug should have existed on all platforms.
-        if not hasattr(signal, "alarm"):
-            return                  # can only test on *nix
-        self.serv.settimeout(5.0)   # must be longer than alarm
-        class Alarm(Exception):
-            pass
-        def alarm_handler(signal, frame):
-            raise Alarm
-        old_alarm = signal.signal(signal.SIGALRM, alarm_handler)
-        try:
-            signal.alarm(2)    # POSIX allows alarm to be up to 1 second early
-            try:
-                foo = self.serv.accept()
-            except socket.timeout:
-                self.fail("caught timeout instead of Alarm")
-            except Alarm:
-                pass
-            except:
-                self.fail("caught other exception instead of Alarm:"
-                          " %s(%s):\n%s" %
-                          (sys.exc_info()[:2] + (traceback.format_exc(),)))
-            else:
-                self.fail("nothing caught")
-            finally:
-                signal.alarm(0)         # shut off alarm
-        except Alarm:
-            self.fail("got Alarm in wrong place")
-        finally:
-            # no alarm can be pending.  Safe to restore old handler.
-            signal.signal(signal.SIGALRM, old_alarm)
-
-class UDPTimeoutTest(SocketTCPTest):
-
-    def testUDPTimeout(self):
-        def raise_timeout(*args, **kwargs):
-            self.serv.settimeout(1.0)
-            self.serv.recv(1024)
-        self.assertRaises(socket.timeout, raise_timeout,
-                              "Error generating a timeout exception (UDP)")
-
-    def testTimeoutZero(self):
-        ok = False
-        try:
-            self.serv.settimeout(0.0)
-            foo = self.serv.recv(1024)
-        except socket.timeout:
-            self.fail("caught timeout instead of error (UDP)")
-        except socket.error:
-            ok = True
-        except:
-            self.fail("caught unexpected exception (UDP)")
-        if not ok:
-            self.fail("recv() returned success when we did not expect it")
-
-class TestExceptions(unittest.TestCase):
-
-    def testExceptionTree(self):
-        self.assertTrue(issubclass(socket.error, Exception))
-        self.assertTrue(issubclass(socket.herror, socket.error))
-        self.assertTrue(issubclass(socket.gaierror, socket.error))
-        self.assertTrue(issubclass(socket.timeout, socket.error))
-
-class TestLinuxAbstractNamespace(unittest.TestCase):
-
-    UNIX_PATH_MAX = 108
-
-    def testLinuxAbstractNamespace(self):
-        address = "\x00python-test-hello\x00\xff"
-        s1 = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
-        s1.bind(address)
-        s1.listen(1)
-        s2 = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
-        s2.connect(s1.getsockname())
-        s1.accept()
-        self.assertEqual(s1.getsockname(), address)
-        self.assertEqual(s2.getpeername(), address)
-
-    def testMaxName(self):
-        address = "\x00" + "h" * (self.UNIX_PATH_MAX - 1)
-        s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
-        s.bind(address)
-        self.assertEqual(s.getsockname(), address)
-
-    def testNameOverflow(self):
-        address = "\x00" + "h" * self.UNIX_PATH_MAX
-        s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
-        self.assertRaises(socket.error, s.bind, address)
-
-
-@unittest.skipUnless(thread, 'Threading required for this test.')
-class BufferIOTest(SocketConnectedTest):
-    """
-    Test the buffer versions of socket.recv() and socket.send().
-    """
-    def __init__(self, methodName='runTest'):
-        SocketConnectedTest.__init__(self, methodName=methodName)
-
-    def testRecvIntoArray(self):
-        buf = array.array('c', ' '*1024)
-        nbytes = self.cli_conn.recv_into(buf)
-        self.assertEqual(nbytes, len(MSG))
-        msg = buf.tostring()[:len(MSG)]
-        self.assertEqual(msg, MSG)
-
-    def _testRecvIntoArray(self):
-        with test_support.check_py3k_warnings():
-            buf = buffer(MSG)
-        self.serv_conn.send(buf)
-
-    def testRecvIntoBytearray(self):
-        buf = bytearray(1024)
-        nbytes = self.cli_conn.recv_into(buf)
-        self.assertEqual(nbytes, len(MSG))
-        msg = buf[:len(MSG)]
-        self.assertEqual(msg, MSG)
-
-    _testRecvIntoBytearray = _testRecvIntoArray
-
-    def testRecvIntoMemoryview(self):
-        buf = bytearray(1024)
-        nbytes = self.cli_conn.recv_into(memoryview(buf))
-        self.assertEqual(nbytes, len(MSG))
-        msg = buf[:len(MSG)]
-        self.assertEqual(msg, MSG)
-
-    _testRecvIntoMemoryview = _testRecvIntoArray
-
-    def testRecvFromIntoArray(self):
-        buf = array.array('c', ' '*1024)
-        nbytes, addr = self.cli_conn.recvfrom_into(buf)
-        self.assertEqual(nbytes, len(MSG))
-        msg = buf.tostring()[:len(MSG)]
-        self.assertEqual(msg, MSG)
-
-    def _testRecvFromIntoArray(self):
-        with test_support.check_py3k_warnings():
-            buf = buffer(MSG)
-        self.serv_conn.send(buf)
-
-    def testRecvFromIntoBytearray(self):
-        buf = bytearray(1024)
-        nbytes, addr = self.cli_conn.recvfrom_into(buf)
-        self.assertEqual(nbytes, len(MSG))
-        msg = buf[:len(MSG)]
-        self.assertEqual(msg, MSG)
-
-    _testRecvFromIntoBytearray = _testRecvFromIntoArray
-
-    def testRecvFromIntoMemoryview(self):
-        buf = bytearray(1024)
-        nbytes, addr = self.cli_conn.recvfrom_into(memoryview(buf))
-        self.assertEqual(nbytes, len(MSG))
-        msg = buf[:len(MSG)]
-        self.assertEqual(msg, MSG)
-
-    _testRecvFromIntoMemoryview = _testRecvFromIntoArray
-
-
-TIPC_STYPE = 2000
-TIPC_LOWER = 200
-TIPC_UPPER = 210
-
-def isTipcAvailable():
-    """Check if the TIPC module is loaded
-
-    The TIPC module is not loaded automatically on Ubuntu and probably
-    other Linux distros.
-    """
-    if not hasattr(socket, "AF_TIPC"):
-        return False
-    if not os.path.isfile("/proc/modules"):
-        return False
-    with open("/proc/modules") as f:
-        for line in f:
-            if line.startswith("tipc "):
-                return True
-    if test_support.verbose:
-        print "TIPC module is not loaded, please 'sudo modprobe tipc'"
-    return False
-
-class TIPCTest (unittest.TestCase):
-    def testRDM(self):
-        srv = socket.socket(socket.AF_TIPC, socket.SOCK_RDM)
-        cli = socket.socket(socket.AF_TIPC, socket.SOCK_RDM)
-
-        srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-        srvaddr = (socket.TIPC_ADDR_NAMESEQ, TIPC_STYPE,
-                TIPC_LOWER, TIPC_UPPER)
-        srv.bind(srvaddr)
-
-        sendaddr = (socket.TIPC_ADDR_NAME, TIPC_STYPE,
-                TIPC_LOWER + (TIPC_UPPER - TIPC_LOWER) / 2, 0)
-        cli.sendto(MSG, sendaddr)
-
-        msg, recvaddr = srv.recvfrom(1024)
-
-        self.assertEqual(cli.getsockname(), recvaddr)
-        self.assertEqual(msg, MSG)
-
-
-class TIPCThreadableTest (unittest.TestCase, ThreadableTest):
-    def __init__(self, methodName = 'runTest'):
-        unittest.TestCase.__init__(self, methodName = methodName)
-        ThreadableTest.__init__(self)
-
-    def setUp(self):
-        self.srv = socket.socket(socket.AF_TIPC, socket.SOCK_STREAM)
-        self.srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-        srvaddr = (socket.TIPC_ADDR_NAMESEQ, TIPC_STYPE,
-                TIPC_LOWER, TIPC_UPPER)
-        self.srv.bind(srvaddr)
-        self.srv.listen(5)
-        self.serverExplicitReady()
-        self.conn, self.connaddr = self.srv.accept()
-
-    def clientSetUp(self):
-        # The is a hittable race between serverExplicitReady() and the
-        # accept() call; sleep a little while to avoid it, otherwise
-        # we could get an exception
-        time.sleep(0.1)
-        self.cli = socket.socket(socket.AF_TIPC, socket.SOCK_STREAM)
-        addr = (socket.TIPC_ADDR_NAME, TIPC_STYPE,
-                TIPC_LOWER + (TIPC_UPPER - TIPC_LOWER) / 2, 0)
-        self.cli.connect(addr)
-        self.cliaddr = self.cli.getsockname()
-
-    def testStream(self):
-        msg = self.conn.recv(1024)
-        self.assertEqual(msg, MSG)
-        self.assertEqual(self.cliaddr, self.connaddr)
-
-    def _testStream(self):
-        self.cli.send(MSG)
-        self.cli.close()
-
-
-def test_main():
-    tests = [GeneralModuleTests, BasicTCPTest, TCPCloserTest, TCPTimeoutTest,
-             TestExceptions, BufferIOTest, BasicTCPTest2, BasicUDPTest,
-             UDPTimeoutTest ]
-
-    tests.extend([
-        NonBlockingTCPTests,
-        FileObjectClassTestCase,
-        FileObjectInterruptedTestCase,
-        UnbufferedFileObjectClassTestCase,
-        LineBufferedFileObjectClassTestCase,
-        SmallBufferedFileObjectClassTestCase,
-        Urllib2FileobjectTest,
-        NetworkConnectionNoServer,
-        NetworkConnectionAttributesTest,
-        NetworkConnectionBehaviourTest,
-    ])
-    if hasattr(socket, "socketpair"):
-        tests.append(BasicSocketPairTest)
-    if sys.platform == 'linux2':
-        tests.append(TestLinuxAbstractNamespace)
-    if isTipcAvailable():
-        tests.append(TIPCTest)
-        tests.append(TIPCThreadableTest)
-
-    thread_info = test_support.threading_setup()
-    test_support.run_unittest(*tests)
-    test_support.threading_cleanup(*thread_info)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_socketserver.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_socketserver.py
deleted file mode 100644
index cd7a709..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_socketserver.py
+++ /dev/null
@@ -1,284 +0,0 @@
-"""
-Test suite for SocketServer.py.
-"""
-
-import contextlib
-import imp
-import os
-import select
-import signal
-import socket
-import tempfile
-import unittest
-import SocketServer
-
-import test.test_support
-from test.test_support import reap_children, reap_threads, verbose
-try:
-    import threading
-except ImportError:
-    threading = None
-
-test.test_support.requires("network")
-
-TEST_STR = "hello world\n"
-HOST = test.test_support.HOST
-
-HAVE_UNIX_SOCKETS = hasattr(socket, "AF_UNIX")
-HAVE_FORKING = hasattr(os, "fork") and os.name != "os2"
-
-def signal_alarm(n):
-    """Call signal.alarm when it exists (i.e. not on Windows)."""
-    if hasattr(signal, 'alarm'):
-        signal.alarm(n)
-
-def receive(sock, n, timeout=20):
-    r, w, x = select.select([sock], [], [], timeout)
-    if sock in r:
-        return sock.recv(n)
-    else:
-        raise RuntimeError, "timed out on %r" % (sock,)
-
-if HAVE_UNIX_SOCKETS:
-    class ForkingUnixStreamServer(SocketServer.ForkingMixIn,
-                                  SocketServer.UnixStreamServer):
-        pass
-
-    class ForkingUnixDatagramServer(SocketServer.ForkingMixIn,
-                                    SocketServer.UnixDatagramServer):
-        pass
-
-
-@contextlib.contextmanager
-def simple_subprocess(testcase):
-    pid = os.fork()
-    if pid == 0:
-        # Don't throw an exception; it would be caught by the test harness.
-        os._exit(72)
-    yield None
-    pid2, status = os.waitpid(pid, 0)
-    testcase.assertEqual(pid2, pid)
-    testcase.assertEqual(72 << 8, status)
-
-
-@unittest.skipUnless(threading, 'Threading required for this test.')
-class SocketServerTest(unittest.TestCase):
-    """Test all socket servers."""
-
-    def setUp(self):
-        signal_alarm(20)  # Kill deadlocks after 20 seconds.
-        self.port_seed = 0
-        self.test_files = []
-
-    def tearDown(self):
-        signal_alarm(0)  # Didn't deadlock.
-        reap_children()
-
-        for fn in self.test_files:
-            try:
-                os.remove(fn)
-            except os.error:
-                pass
-        self.test_files[:] = []
-
-    def pickaddr(self, proto):
-        if proto == socket.AF_INET:
-            return (HOST, 0)
-        else:
-            # XXX: We need a way to tell AF_UNIX to pick its own name
-            # like AF_INET provides port==0.
-            dir = None
-            if os.name == 'os2':
-                dir = '\socket'
-            fn = tempfile.mktemp(prefix='unix_socket.', dir=dir)
-            if os.name == 'os2':
-                # AF_UNIX socket names on OS/2 require a specific prefix
-                # which can't include a drive letter and must also use
-                # backslashes as directory separators
-                if fn[1] == ':':
-                    fn = fn[2:]
-                if fn[0] in (os.sep, os.altsep):
-                    fn = fn[1:]
-                if os.sep == '/':
-                    fn = fn.replace(os.sep, os.altsep)
-                else:
-                    fn = fn.replace(os.altsep, os.sep)
-            self.test_files.append(fn)
-            return fn
-
-    def make_server(self, addr, svrcls, hdlrbase):
-        class MyServer(svrcls):
-            def handle_error(self, request, client_address):
-                self.close_request(request)
-                self.server_close()
-                raise
-
-        class MyHandler(hdlrbase):
-            def handle(self):
-                line = self.rfile.readline()
-                self.wfile.write(line)
-
-        if verbose: print "creating server"
-        server = MyServer(addr, MyHandler)
-        self.assertEqual(server.server_address, server.socket.getsockname())
-        return server
-
-    @unittest.skipUnless(threading, 'Threading required for this test.')
-    @reap_threads
-    def run_server(self, svrcls, hdlrbase, testfunc):
-        server = self.make_server(self.pickaddr(svrcls.address_family),
-                                  svrcls, hdlrbase)
-        # We had the OS pick a port, so pull the real address out of
-        # the server.
-        addr = server.server_address
-        if verbose:
-            print "server created"
-            print "ADDR =", addr
-            print "CLASS =", svrcls
-        t = threading.Thread(
-            name='%s serving' % svrcls,
-            target=server.serve_forever,
-            # Short poll interval to make the test finish quickly.
-            # Time between requests is short enough that we won't wake
-            # up spuriously too many times.
-            kwargs={'poll_interval':0.01})
-        t.daemon = True  # In case this function raises.
-        t.start()
-        if verbose: print "server running"
-        for i in range(3):
-            if verbose: print "test client", i
-            testfunc(svrcls.address_family, addr)
-        if verbose: print "waiting for server"
-        server.shutdown()
-        t.join()
-        if verbose: print "done"
-
-    def stream_examine(self, proto, addr):
-        s = socket.socket(proto, socket.SOCK_STREAM)
-        s.connect(addr)
-        s.sendall(TEST_STR)
-        buf = data = receive(s, 100)
-        while data and '\n' not in buf:
-            data = receive(s, 100)
-            buf += data
-        self.assertEqual(buf, TEST_STR)
-        s.close()
-
-    def dgram_examine(self, proto, addr):
-        s = socket.socket(proto, socket.SOCK_DGRAM)
-        s.sendto(TEST_STR, addr)
-        buf = data = receive(s, 100)
-        while data and '\n' not in buf:
-            data = receive(s, 100)
-            buf += data
-        self.assertEqual(buf, TEST_STR)
-        s.close()
-
-    def test_TCPServer(self):
-        self.run_server(SocketServer.TCPServer,
-                        SocketServer.StreamRequestHandler,
-                        self.stream_examine)
-
-    def test_ThreadingTCPServer(self):
-        self.run_server(SocketServer.ThreadingTCPServer,
-                        SocketServer.StreamRequestHandler,
-                        self.stream_examine)
-
-    if HAVE_FORKING:
-        def test_ForkingTCPServer(self):
-            with simple_subprocess(self):
-                self.run_server(SocketServer.ForkingTCPServer,
-                                SocketServer.StreamRequestHandler,
-                                self.stream_examine)
-
-    if HAVE_UNIX_SOCKETS:
-        def test_UnixStreamServer(self):
-            self.run_server(SocketServer.UnixStreamServer,
-                            SocketServer.StreamRequestHandler,
-                            self.stream_examine)
-
-        def test_ThreadingUnixStreamServer(self):
-            self.run_server(SocketServer.ThreadingUnixStreamServer,
-                            SocketServer.StreamRequestHandler,
-                            self.stream_examine)
-
-        if HAVE_FORKING:
-            def test_ForkingUnixStreamServer(self):
-                with simple_subprocess(self):
-                    self.run_server(ForkingUnixStreamServer,
-                                    SocketServer.StreamRequestHandler,
-                                    self.stream_examine)
-
-    def test_UDPServer(self):
-        self.run_server(SocketServer.UDPServer,
-                        SocketServer.DatagramRequestHandler,
-                        self.dgram_examine)
-
-    def test_ThreadingUDPServer(self):
-        self.run_server(SocketServer.ThreadingUDPServer,
-                        SocketServer.DatagramRequestHandler,
-                        self.dgram_examine)
-
-    if HAVE_FORKING:
-        def test_ForkingUDPServer(self):
-            with simple_subprocess(self):
-                self.run_server(SocketServer.ForkingUDPServer,
-                                SocketServer.DatagramRequestHandler,
-                                self.dgram_examine)
-
-    # Alas, on Linux (at least) recvfrom() doesn't return a meaningful
-    # client address so this cannot work:
-
-    # if HAVE_UNIX_SOCKETS:
-    #     def test_UnixDatagramServer(self):
-    #         self.run_server(SocketServer.UnixDatagramServer,
-    #                         SocketServer.DatagramRequestHandler,
-    #                         self.dgram_examine)
-    #
-    #     def test_ThreadingUnixDatagramServer(self):
-    #         self.run_server(SocketServer.ThreadingUnixDatagramServer,
-    #                         SocketServer.DatagramRequestHandler,
-    #                         self.dgram_examine)
-    #
-    #     if HAVE_FORKING:
-    #         def test_ForkingUnixDatagramServer(self):
-    #             self.run_server(SocketServer.ForkingUnixDatagramServer,
-    #                             SocketServer.DatagramRequestHandler,
-    #                             self.dgram_examine)
-
-    @reap_threads
-    def test_shutdown(self):
-        # Issue #2302: shutdown() should always succeed in making an
-        # other thread leave serve_forever().
-        class MyServer(SocketServer.TCPServer):
-            pass
-
-        class MyHandler(SocketServer.StreamRequestHandler):
-            pass
-
-        threads = []
-        for i in range(20):
-            s = MyServer((HOST, 0), MyHandler)
-            t = threading.Thread(
-                name='MyServer serving',
-                target=s.serve_forever,
-                kwargs={'poll_interval':0.01})
-            t.daemon = True  # In case this function raises.
-            threads.append((t, s))
-        for t, s in threads:
-            t.start()
-            s.shutdown()
-        for t, s in threads:
-            t.join()
-
-
-def test_main():
-    if imp.lock_held():
-        # If the import lock is held, the threads will hang
-        raise unittest.SkipTest("can't run when import lock is held")
-
-    test.test_support.run_unittest(SocketServerTest)
-
-if __name__ == "__main__":
-    test_main()
-    signal_alarm(3)  # Shutdown shouldn't take more than 3 seconds.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_softspace.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_softspace.py
deleted file mode 100644
index 6285b36..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_softspace.py
+++ /dev/null
@@ -1,23 +0,0 @@
-from test.test_support import run_unittest
-import unittest
-import StringIO
-
-class SoftspaceTests(unittest.TestCase):
-    def test_bug_480215(self):
-        # SF bug 480215:  softspace confused in nested print
-        f = StringIO.StringIO()
-        class C:
-            def __str__(self):
-                print >> f, 'a'
-                return 'b'
-
-        print >> f, C(), 'c ', 'd\t', 'e'
-        print >> f, 'f', 'g'
-        # In 2.2 & earlier, this printed ' a\nbc  d\te\nf g\n'
-        self.assertEqual(f.getvalue(), 'a\nb c  d\te\nf g\n')
-
-def test_main():
-    run_unittest(SoftspaceTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sort.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sort.py
deleted file mode 100644
index feb0a17..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sort.py
+++ /dev/null
@@ -1,292 +0,0 @@
-from test import test_support
-import random
-import sys
-import unittest
-
-verbose = test_support.verbose
-nerrors = 0
-
-def check(tag, expected, raw, compare=None):
-    global nerrors
-
-    if verbose:
-        print "    checking", tag
-
-    orig = raw[:]   # save input in case of error
-    if compare:
-        raw.sort(compare)
-    else:
-        raw.sort()
-
-    if len(expected) != len(raw):
-        print "error in", tag
-        print "length mismatch;", len(expected), len(raw)
-        print expected
-        print orig
-        print raw
-        nerrors += 1
-        return
-
-    for i, good in enumerate(expected):
-        maybe = raw[i]
-        if good is not maybe:
-            print "error in", tag
-            print "out of order at index", i, good, maybe
-            print expected
-            print orig
-            print raw
-            nerrors += 1
-            return
-
-class TestBase(unittest.TestCase):
-    def testStressfully(self):
-        # Try a variety of sizes at and around powers of 2, and at powers of 10.
-        sizes = [0]
-        for power in range(1, 10):
-            n = 2 ** power
-            sizes.extend(range(n-1, n+2))
-        sizes.extend([10, 100, 1000])
-
-        class Complains(object):
-            maybe_complain = True
-
-            def __init__(self, i):
-                self.i = i
-
-            def __lt__(self, other):
-                if Complains.maybe_complain and random.random() < 0.001:
-                    if verbose:
-                        print "        complaining at", self, other
-                    raise RuntimeError
-                return self.i < other.i
-
-            def __repr__(self):
-                return "Complains(%d)" % self.i
-
-        class Stable(object):
-            def __init__(self, key, i):
-                self.key = key
-                self.index = i
-
-            def __cmp__(self, other):
-                return cmp(self.key, other.key)
-            __hash__ = None # Silence Py3k warning
-
-            def __repr__(self):
-                return "Stable(%d, %d)" % (self.key, self.index)
-
-        for n in sizes:
-            x = range(n)
-            if verbose:
-                print "Testing size", n
-
-            s = x[:]
-            check("identity", x, s)
-
-            s = x[:]
-            s.reverse()
-            check("reversed", x, s)
-
-            s = x[:]
-            random.shuffle(s)
-            check("random permutation", x, s)
-
-            y = x[:]
-            y.reverse()
-            s = x[:]
-            check("reversed via function", y, s, lambda a, b: cmp(b, a))
-
-            if verbose:
-                print "    Checking against an insane comparison function."
-                print "        If the implementation isn't careful, this may segfault."
-            s = x[:]
-            s.sort(lambda a, b:  int(random.random() * 3) - 1)
-            check("an insane function left some permutation", x, s)
-
-            x = [Complains(i) for i in x]
-            s = x[:]
-            random.shuffle(s)
-            Complains.maybe_complain = True
-            it_complained = False
-            try:
-                s.sort()
-            except RuntimeError:
-                it_complained = True
-            if it_complained:
-                Complains.maybe_complain = False
-                check("exception during sort left some permutation", x, s)
-
-            s = [Stable(random.randrange(10), i) for i in xrange(n)]
-            augmented = [(e, e.index) for e in s]
-            augmented.sort()    # forced stable because ties broken by index
-            x = [e for e, i in augmented] # a stable sort of s
-            check("stability", x, s)
-
-#==============================================================================
-
-class TestBugs(unittest.TestCase):
-
-    def test_bug453523(self):
-        # bug 453523 -- list.sort() crasher.
-        # If this fails, the most likely outcome is a core dump.
-        # Mutations during a list sort should raise a ValueError.
-
-        class C:
-            def __lt__(self, other):
-                if L and random.random() < 0.75:
-                    L.pop()
-                else:
-                    L.append(3)
-                return random.random() < 0.5
-
-        L = [C() for i in range(50)]
-        self.assertRaises(ValueError, L.sort)
-
-    def test_cmpNone(self):
-        # Testing None as a comparison function.
-
-        L = range(50)
-        random.shuffle(L)
-        L.sort(None)
-        self.assertEqual(L, range(50))
-
-    def test_undetected_mutation(self):
-        # Python 2.4a1 did not always detect mutation
-        memorywaster = []
-        for i in range(20):
-            def mutating_cmp(x, y):
-                L.append(3)
-                L.pop()
-                return cmp(x, y)
-            L = [1,2]
-            self.assertRaises(ValueError, L.sort, mutating_cmp)
-            def mutating_cmp(x, y):
-                L.append(3)
-                del L[:]
-                return cmp(x, y)
-            self.assertRaises(ValueError, L.sort, mutating_cmp)
-            memorywaster = [memorywaster]
-
-#==============================================================================
-
-class TestDecorateSortUndecorate(unittest.TestCase):
-
-    def test_decorated(self):
-        data = 'The quick Brown fox Jumped over The lazy Dog'.split()
-        copy = data[:]
-        random.shuffle(data)
-        data.sort(key=str.lower)
-        copy.sort(cmp=lambda x,y: cmp(x.lower(), y.lower()))
-
-    def test_baddecorator(self):
-        data = 'The quick Brown fox Jumped over The lazy Dog'.split()
-        self.assertRaises(TypeError, data.sort, None, lambda x,y: 0)
-
-    def test_stability(self):
-        data = [(random.randrange(100), i) for i in xrange(200)]
-        copy = data[:]
-        data.sort(key=lambda x: x[0])   # sort on the random first field
-        copy.sort()                     # sort using both fields
-        self.assertEqual(data, copy)    # should get the same result
-
-    def test_cmp_and_key_combination(self):
-        # Verify that the wrapper has been removed
-        def compare(x, y):
-            self.assertEqual(type(x), str)
-            self.assertEqual(type(x), str)
-            return cmp(x, y)
-        data = 'The quick Brown fox Jumped over The lazy Dog'.split()
-        data.sort(cmp=compare, key=str.lower)
-
-    def test_badcmp_with_key(self):
-        # Verify that the wrapper has been removed
-        data = 'The quick Brown fox Jumped over The lazy Dog'.split()
-        self.assertRaises(TypeError, data.sort, "bad", str.lower)
-
-    def test_key_with_exception(self):
-        # Verify that the wrapper has been removed
-        data = range(-2,2)
-        dup = data[:]
-        self.assertRaises(ZeroDivisionError, data.sort, None, lambda x: 1 // x)
-        self.assertEqual(data, dup)
-
-    def test_key_with_mutation(self):
-        data = range(10)
-        def k(x):
-            del data[:]
-            data[:] = range(20)
-            return x
-        self.assertRaises(ValueError, data.sort, key=k)
-
-    def test_key_with_mutating_del(self):
-        data = range(10)
-        class SortKiller(object):
-            def __init__(self, x):
-                pass
-            def __del__(self):
-                del data[:]
-                data[:] = range(20)
-        self.assertRaises(ValueError, data.sort, key=SortKiller)
-
-    def test_key_with_mutating_del_and_exception(self):
-        data = range(10)
-        ## dup = data[:]
-        class SortKiller(object):
-            def __init__(self, x):
-                if x > 2:
-                    raise RuntimeError
-            def __del__(self):
-                del data[:]
-                data[:] = range(20)
-        self.assertRaises(RuntimeError, data.sort, key=SortKiller)
-        ## major honking subtlety: we *can't* do:
-        ##
-        ## self.assertEqual(data, dup)
-        ##
-        ## because there is a reference to a SortKiller in the
-        ## traceback and by the time it dies we're outside the call to
-        ## .sort() and so the list protection gimmicks are out of
-        ## date (this cost some brain cells to figure out...).
-
-    def test_reverse(self):
-        data = range(100)
-        random.shuffle(data)
-        data.sort(reverse=True)
-        self.assertEqual(data, range(99,-1,-1))
-        self.assertRaises(TypeError, data.sort, "wrong type")
-
-    def test_reverse_stability(self):
-        data = [(random.randrange(100), i) for i in xrange(200)]
-        copy1 = data[:]
-        copy2 = data[:]
-        data.sort(cmp=lambda x,y: cmp(x[0],y[0]), reverse=True)
-        copy1.sort(cmp=lambda x,y: cmp(y[0],x[0]))
-        self.assertEqual(data, copy1)
-        copy2.sort(key=lambda x: x[0], reverse=True)
-        self.assertEqual(data, copy2)
-
-#==============================================================================
-
-def test_main(verbose=None):
-    test_classes = (
-        TestBase,
-        TestDecorateSortUndecorate,
-        TestBugs,
-    )
-
-    with test_support.check_py3k_warnings(
-            ("the cmp argument is not supported", DeprecationWarning)):
-        test_support.run_unittest(*test_classes)
-
-        # verify reference counting
-        if verbose and hasattr(sys, "gettotalrefcount"):
-            import gc
-            counts = [None] * 5
-            for i in xrange(len(counts)):
-                test_support.run_unittest(*test_classes)
-                gc.collect()
-                counts[i] = sys.gettotalrefcount()
-            print counts
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sqlite.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sqlite.py
deleted file mode 100644
index ad95d89..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sqlite.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from test.test_support import run_unittest, import_module
-
-# Skip test if _sqlite3 module was not built.
-import_module('_sqlite3')
-
-from sqlite3.test import (dbapi, types, userfunctions, py25tests,
-                                factory, transactions, hooks, regression,
-                                dump)
-
-def test_main():
-    run_unittest(dbapi.suite(), types.suite(), userfunctions.suite(),
-                 py25tests.suite(), factory.suite(), transactions.suite(),
-                 hooks.suite(), regression.suite(), dump.suite())
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ssl.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ssl.py
deleted file mode 100644
index 1d2fc45..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ssl.py
+++ /dev/null
@@ -1,1360 +0,0 @@
-# Test the support for SSL and sockets
-
-import sys
-import unittest
-from test import test_support
-import asyncore
-import socket
-import select
-import time
-import gc
-import os
-import errno
-import pprint
-import urllib, urlparse
-import traceback
-import weakref
-import functools
-import platform
-
-from BaseHTTPServer import HTTPServer
-from SimpleHTTPServer import SimpleHTTPRequestHandler
-
-ssl = test_support.import_module("ssl")
-
-HOST = test_support.HOST
-CERTFILE = None
-SVN_PYTHON_ORG_ROOT_CERT = None
-
-def handle_error(prefix):
-    exc_format = ' '.join(traceback.format_exception(*sys.exc_info()))
-    if test_support.verbose:
-        sys.stdout.write(prefix + exc_format)
-
-
-class BasicTests(unittest.TestCase):
-
-    def test_sslwrap_simple(self):
-        # A crude test for the legacy API
-        try:
-            ssl.sslwrap_simple(socket.socket(socket.AF_INET))
-        except IOError, e:
-            if e.errno == 32: # broken pipe when ssl_sock.do_handshake(), this test doesn't care about that
-                pass
-            else:
-                raise
-        try:
-            ssl.sslwrap_simple(socket.socket(socket.AF_INET)._sock)
-        except IOError, e:
-            if e.errno == 32: # broken pipe when ssl_sock.do_handshake(), this test doesn't care about that
-                pass
-            else:
-                raise
-
-# Issue #9415: Ubuntu hijacks their OpenSSL and forcefully disables SSLv2
-def skip_if_broken_ubuntu_ssl(func):
-    if hasattr(ssl, 'PROTOCOL_SSLv2'):
-        # We need to access the lower-level wrapper in order to create an
-        # implicit SSL context without trying to connect or listen.
-        try:
-            import _ssl
-        except ImportError:
-            # The returned function won't get executed, just ignore the error
-            pass
-        @functools.wraps(func)
-        def f(*args, **kwargs):
-            try:
-                s = socket.socket(socket.AF_INET)
-                _ssl.sslwrap(s._sock, 0, None, None,
-                             ssl.CERT_NONE, ssl.PROTOCOL_SSLv2, None, None)
-            except ssl.SSLError as e:
-                if (ssl.OPENSSL_VERSION_INFO == (0, 9, 8, 15, 15) and
-                    platform.linux_distribution() == ('debian', 'squeeze/sid', '')
-                    and 'Invalid SSL protocol variant specified' in str(e)):
-                    raise unittest.SkipTest("Patched Ubuntu OpenSSL breaks behaviour")
-            return func(*args, **kwargs)
-        return f
-    else:
-        return func
-
-
-class BasicSocketTests(unittest.TestCase):
-
-    def test_constants(self):
-        #ssl.PROTOCOL_SSLv2
-        ssl.PROTOCOL_SSLv23
-        ssl.PROTOCOL_SSLv3
-        ssl.PROTOCOL_TLSv1
-        ssl.CERT_NONE
-        ssl.CERT_OPTIONAL
-        ssl.CERT_REQUIRED
-
-    def test_random(self):
-        v = ssl.RAND_status()
-        if test_support.verbose:
-            sys.stdout.write("\n RAND_status is %d (%s)\n"
-                             % (v, (v and "sufficient randomness") or
-                                "insufficient randomness"))
-        try:
-            ssl.RAND_egd(1)
-        except TypeError:
-            pass
-        else:
-            print "didn't raise TypeError"
-        ssl.RAND_add("this is a random string", 75.0)
-
-    def test_parse_cert(self):
-        # note that this uses an 'unofficial' function in _ssl.c,
-        # provided solely for this test, to exercise the certificate
-        # parsing code
-        p = ssl._ssl._test_decode_cert(CERTFILE, False)
-        if test_support.verbose:
-            sys.stdout.write("\n" + pprint.pformat(p) + "\n")
-
-    def test_DER_to_PEM(self):
-        with open(SVN_PYTHON_ORG_ROOT_CERT, 'r') as f:
-            pem = f.read()
-        d1 = ssl.PEM_cert_to_DER_cert(pem)
-        p2 = ssl.DER_cert_to_PEM_cert(d1)
-        d2 = ssl.PEM_cert_to_DER_cert(p2)
-        self.assertEqual(d1, d2)
-        if not p2.startswith(ssl.PEM_HEADER + '\n'):
-            self.fail("DER-to-PEM didn't include correct header:\n%r\n" % p2)
-        if not p2.endswith('\n' + ssl.PEM_FOOTER + '\n'):
-            self.fail("DER-to-PEM didn't include correct footer:\n%r\n" % p2)
-
-    def test_openssl_version(self):
-        n = ssl.OPENSSL_VERSION_NUMBER
-        t = ssl.OPENSSL_VERSION_INFO
-        s = ssl.OPENSSL_VERSION
-        self.assertIsInstance(n, (int, long))
-        self.assertIsInstance(t, tuple)
-        self.assertIsInstance(s, str)
-        # Some sanity checks follow
-        # >= 0.9
-        self.assertGreaterEqual(n, 0x900000)
-        # < 2.0
-        self.assertLess(n, 0x20000000)
-        major, minor, fix, patch, status = t
-        self.assertGreaterEqual(major, 0)
-        self.assertLess(major, 2)
-        self.assertGreaterEqual(minor, 0)
-        self.assertLess(minor, 256)
-        self.assertGreaterEqual(fix, 0)
-        self.assertLess(fix, 256)
-        self.assertGreaterEqual(patch, 0)
-        self.assertLessEqual(patch, 26)
-        self.assertGreaterEqual(status, 0)
-        self.assertLessEqual(status, 15)
-        # Version string as returned by OpenSSL, the format might change
-        self.assertTrue(s.startswith("OpenSSL {:d}.{:d}.{:d}".format(major, minor, fix)),
-                        (s, t))
-
-    def test_ciphers(self):
-        if not test_support.is_resource_enabled('network'):
-            return
-        remote = ("svn.python.org", 443)
-        with test_support.transient_internet(remote[0]):
-            s = ssl.wrap_socket(socket.socket(socket.AF_INET),
-                                cert_reqs=ssl.CERT_NONE, ciphers="ALL")
-            s.connect(remote)
-            s = ssl.wrap_socket(socket.socket(socket.AF_INET),
-                                cert_reqs=ssl.CERT_NONE, ciphers="DEFAULT")
-            s.connect(remote)
-            # Error checking occurs when connecting, because the SSL context
-            # isn't created before.
-            s = ssl.wrap_socket(socket.socket(socket.AF_INET),
-                                cert_reqs=ssl.CERT_NONE, ciphers="^$:,;?*'dorothyx")
-            with self.assertRaisesRegexp(ssl.SSLError, "No cipher can be selected"):
-                s.connect(remote)
-
-    @test_support.cpython_only
-    def test_refcycle(self):
-        # Issue #7943: an SSL object doesn't create reference cycles with
-        # itself.
-        s = socket.socket(socket.AF_INET)
-        ss = ssl.wrap_socket(s)
-        wr = weakref.ref(ss)
-        del ss
-        self.assertEqual(wr(), None)
-
-    def test_wrapped_unconnected(self):
-        # The _delegate_methods in socket.py are correctly delegated to by an
-        # unconnected SSLSocket, so they will raise a socket.error rather than
-        # something unexpected like TypeError.
-        s = socket.socket(socket.AF_INET)
-        ss = ssl.wrap_socket(s)
-        self.assertRaises(socket.error, ss.recv, 1)
-        self.assertRaises(socket.error, ss.recv_into, bytearray(b'x'))
-        self.assertRaises(socket.error, ss.recvfrom, 1)
-        self.assertRaises(socket.error, ss.recvfrom_into, bytearray(b'x'), 1)
-        self.assertRaises(socket.error, ss.send, b'x')
-        self.assertRaises(socket.error, ss.sendto, b'x', ('0.0.0.0', 0))
-
-
-class NetworkedTests(unittest.TestCase):
-
-    def test_connect(self):
-        with test_support.transient_internet("svn.python.org"):
-            s = ssl.wrap_socket(socket.socket(socket.AF_INET),
-                                cert_reqs=ssl.CERT_NONE)
-            s.connect(("svn.python.org", 443))
-            c = s.getpeercert()
-            if c:
-                self.fail("Peer cert %s shouldn't be here!")
-            s.close()
-
-            # this should fail because we have no verification certs
-            s = ssl.wrap_socket(socket.socket(socket.AF_INET),
-                                cert_reqs=ssl.CERT_REQUIRED)
-            try:
-                s.connect(("svn.python.org", 443))
-            except ssl.SSLError:
-                pass
-            finally:
-                s.close()
-
-            # this should succeed because we specify the root cert
-            s = ssl.wrap_socket(socket.socket(socket.AF_INET),
-                                cert_reqs=ssl.CERT_REQUIRED,
-                                ca_certs=SVN_PYTHON_ORG_ROOT_CERT)
-            try:
-                s.connect(("svn.python.org", 443))
-            finally:
-                s.close()
-
-    def test_connect_ex(self):
-        # Issue #11326: check connect_ex() implementation
-        with test_support.transient_internet("svn.python.org"):
-            s = ssl.wrap_socket(socket.socket(socket.AF_INET),
-                                cert_reqs=ssl.CERT_REQUIRED,
-                                ca_certs=SVN_PYTHON_ORG_ROOT_CERT)
-            try:
-                self.assertEqual(0, s.connect_ex(("svn.python.org", 443)))
-                self.assertTrue(s.getpeercert())
-            finally:
-                s.close()
-
-    def test_non_blocking_connect_ex(self):
-        # Issue #11326: non-blocking connect_ex() should allow handshake
-        # to proceed after the socket gets ready.
-        with test_support.transient_internet("svn.python.org"):
-            s = ssl.wrap_socket(socket.socket(socket.AF_INET),
-                                cert_reqs=ssl.CERT_REQUIRED,
-                                ca_certs=SVN_PYTHON_ORG_ROOT_CERT,
-                                do_handshake_on_connect=False)
-            try:
-                s.setblocking(False)
-                rc = s.connect_ex(('svn.python.org', 443))
-                # EWOULDBLOCK under Windows, EINPROGRESS elsewhere
-                self.assertIn(rc, (0, errno.EINPROGRESS, errno.EWOULDBLOCK))
-                # Wait for connect to finish
-                select.select([], [s], [], 5.0)
-                # Non-blocking handshake
-                while True:
-                    try:
-                        s.do_handshake()
-                        break
-                    except ssl.SSLError as err:
-                        if err.args[0] == ssl.SSL_ERROR_WANT_READ:
-                            select.select([s], [], [], 5.0)
-                        elif err.args[0] == ssl.SSL_ERROR_WANT_WRITE:
-                            select.select([], [s], [], 5.0)
-                        else:
-                            raise
-                # SSL established
-                self.assertTrue(s.getpeercert())
-            finally:
-                s.close()
-
-    @unittest.skipIf(os.name == "nt", "Can't use a socket as a file under Windows")
-    def test_makefile_close(self):
-        # Issue #5238: creating a file-like object with makefile() shouldn't
-        # delay closing the underlying "real socket" (here tested with its
-        # file descriptor, hence skipping the test under Windows).
-        with test_support.transient_internet("svn.python.org"):
-            ss = ssl.wrap_socket(socket.socket(socket.AF_INET))
-            ss.connect(("svn.python.org", 443))
-            fd = ss.fileno()
-            f = ss.makefile()
-            f.close()
-            # The fd is still open
-            os.read(fd, 0)
-            # Closing the SSL socket should close the fd too
-            ss.close()
-            gc.collect()
-            with self.assertRaises(OSError) as e:
-                os.read(fd, 0)
-            self.assertEqual(e.exception.errno, errno.EBADF)
-
-    def test_non_blocking_handshake(self):
-        with test_support.transient_internet("svn.python.org"):
-            s = socket.socket(socket.AF_INET)
-            s.connect(("svn.python.org", 443))
-            s.setblocking(False)
-            s = ssl.wrap_socket(s,
-                                cert_reqs=ssl.CERT_NONE,
-                                do_handshake_on_connect=False)
-            count = 0
-            while True:
-                try:
-                    count += 1
-                    s.do_handshake()
-                    break
-                except ssl.SSLError, err:
-                    if err.args[0] == ssl.SSL_ERROR_WANT_READ:
-                        select.select([s], [], [])
-                    elif err.args[0] == ssl.SSL_ERROR_WANT_WRITE:
-                        select.select([], [s], [])
-                    else:
-                        raise
-            s.close()
-            if test_support.verbose:
-                sys.stdout.write("\nNeeded %d calls to do_handshake() to establish session.\n" % count)
-
-    def test_get_server_certificate(self):
-        with test_support.transient_internet("svn.python.org"):
-            pem = ssl.get_server_certificate(("svn.python.org", 443))
-            if not pem:
-                self.fail("No server certificate on svn.python.org:443!")
-
-            try:
-                pem = ssl.get_server_certificate(("svn.python.org", 443), ca_certs=CERTFILE)
-            except ssl.SSLError:
-                #should fail
-                pass
-            else:
-                self.fail("Got server certificate %s for svn.python.org!" % pem)
-
-            pem = ssl.get_server_certificate(("svn.python.org", 443), ca_certs=SVN_PYTHON_ORG_ROOT_CERT)
-            if not pem:
-                self.fail("No server certificate on svn.python.org:443!")
-            if test_support.verbose:
-                sys.stdout.write("\nVerified certificate for svn.python.org:443 is\n%s\n" % pem)
-
-    def test_algorithms(self):
-        # Issue #8484: all algorithms should be available when verifying a
-        # certificate.
-        # SHA256 was added in OpenSSL 0.9.8
-        if ssl.OPENSSL_VERSION_INFO < (0, 9, 8, 0, 15):
-            self.skipTest("SHA256 not available on %r" % ssl.OPENSSL_VERSION)
-        # NOTE: https://sha256.tbs-internet.com is another possible test host
-        remote = ("sha256.tbs-internet.com", 443)
-        sha256_cert = os.path.join(os.path.dirname(__file__), "sha256.pem")
-        with test_support.transient_internet("sha256.tbs-internet.com"):
-            s = ssl.wrap_socket(socket.socket(socket.AF_INET),
-                                cert_reqs=ssl.CERT_REQUIRED,
-                                ca_certs=sha256_cert,)
-            try:
-                s.connect(remote)
-                if test_support.verbose:
-                    sys.stdout.write("\nCipher with %r is %r\n" %
-                                     (remote, s.cipher()))
-                    sys.stdout.write("Certificate is:\n%s\n" %
-                                     pprint.pformat(s.getpeercert()))
-            finally:
-                s.close()
-
-
-try:
-    import threading
-except ImportError:
-    _have_threads = False
-else:
-    _have_threads = True
-
-    class ThreadedEchoServer(threading.Thread):
-
-        class ConnectionHandler(threading.Thread):
-
-            """A mildly complicated class, because we want it to work both
-            with and without the SSL wrapper around the socket connection, so
-            that we can test the STARTTLS functionality."""
-
-            def __init__(self, server, connsock):
-                self.server = server
-                self.running = False
-                self.sock = connsock
-                self.sock.setblocking(1)
-                self.sslconn = None
-                threading.Thread.__init__(self)
-                self.daemon = True
-
-            def show_conn_details(self):
-                if self.server.certreqs == ssl.CERT_REQUIRED:
-                    cert = self.sslconn.getpeercert()
-                    if test_support.verbose and self.server.chatty:
-                        sys.stdout.write(" client cert is " + pprint.pformat(cert) + "\n")
-                    cert_binary = self.sslconn.getpeercert(True)
-                    if test_support.verbose and self.server.chatty:
-                        sys.stdout.write(" cert binary is " + str(len(cert_binary)) + " bytes\n")
-                cipher = self.sslconn.cipher()
-                if test_support.verbose and self.server.chatty:
-                    sys.stdout.write(" server: connection cipher is now " + str(cipher) + "\n")
-
-            def wrap_conn(self):
-                try:
-                    self.sslconn = ssl.wrap_socket(self.sock, server_side=True,
-                                                   certfile=self.server.certificate,
-                                                   ssl_version=self.server.protocol,
-                                                   ca_certs=self.server.cacerts,
-                                                   cert_reqs=self.server.certreqs,
-                                                   ciphers=self.server.ciphers)
-                except ssl.SSLError:
-                    # XXX Various errors can have happened here, for example
-                    # a mismatching protocol version, an invalid certificate,
-                    # or a low-level bug. This should be made more discriminating.
-                    if self.server.chatty:
-                        handle_error("\n server:  bad connection attempt from " +
-                                     str(self.sock.getpeername()) + ":\n")
-                    self.close()
-                    self.running = False
-                    self.server.stop()
-                    return False
-                else:
-                    return True
-
-            def read(self):
-                if self.sslconn:
-                    return self.sslconn.read()
-                else:
-                    return self.sock.recv(1024)
-
-            def write(self, bytes):
-                if self.sslconn:
-                    return self.sslconn.write(bytes)
-                else:
-                    return self.sock.send(bytes)
-
-            def close(self):
-                if self.sslconn:
-                    self.sslconn.close()
-                else:
-                    self.sock._sock.close()
-
-            def run(self):
-                self.running = True
-                if not self.server.starttls_server:
-                    if isinstance(self.sock, ssl.SSLSocket):
-                        self.sslconn = self.sock
-                    elif not self.wrap_conn():
-                        return
-                    self.show_conn_details()
-                while self.running:
-                    try:
-                        msg = self.read()
-                        if not msg:
-                            # eof, so quit this handler
-                            self.running = False
-                            self.close()
-                        elif msg.strip() == 'over':
-                            if test_support.verbose and self.server.connectionchatty:
-                                sys.stdout.write(" server: client closed connection\n")
-                            self.close()
-                            return
-                        elif self.server.starttls_server and msg.strip() == 'STARTTLS':
-                            if test_support.verbose and self.server.connectionchatty:
-                                sys.stdout.write(" server: read STARTTLS from client, sending OK...\n")
-                            self.write("OK\n")
-                            if not self.wrap_conn():
-                                return
-                        elif self.server.starttls_server and self.sslconn and msg.strip() == 'ENDTLS':
-                            if test_support.verbose and self.server.connectionchatty:
-                                sys.stdout.write(" server: read ENDTLS from client, sending OK...\n")
-                            self.write("OK\n")
-                            self.sslconn.unwrap()
-                            self.sslconn = None
-                            if test_support.verbose and self.server.connectionchatty:
-                                sys.stdout.write(" server: connection is now unencrypted...\n")
-                        else:
-                            if (test_support.verbose and
-                                self.server.connectionchatty):
-                                ctype = (self.sslconn and "encrypted") or "unencrypted"
-                                sys.stdout.write(" server: read %s (%s), sending back %s (%s)...\n"
-                                                 % (repr(msg), ctype, repr(msg.lower()), ctype))
-                            self.write(msg.lower())
-                    except ssl.SSLError:
-                        if self.server.chatty:
-                            handle_error("Test server failure:\n")
-                        self.close()
-                        self.running = False
-                        # normally, we'd just stop here, but for the test
-                        # harness, we want to stop the server
-                        self.server.stop()
-
-        def __init__(self, certificate, ssl_version=None,
-                     certreqs=None, cacerts=None,
-                     chatty=True, connectionchatty=False, starttls_server=False,
-                     wrap_accepting_socket=False, ciphers=None):
-
-            if ssl_version is None:
-                ssl_version = ssl.PROTOCOL_TLSv1
-            if certreqs is None:
-                certreqs = ssl.CERT_NONE
-            self.certificate = certificate
-            self.protocol = ssl_version
-            self.certreqs = certreqs
-            self.cacerts = cacerts
-            self.ciphers = ciphers
-            self.chatty = chatty
-            self.connectionchatty = connectionchatty
-            self.starttls_server = starttls_server
-            self.sock = socket.socket()
-            self.flag = None
-            if wrap_accepting_socket:
-                self.sock = ssl.wrap_socket(self.sock, server_side=True,
-                                            certfile=self.certificate,
-                                            cert_reqs = self.certreqs,
-                                            ca_certs = self.cacerts,
-                                            ssl_version = self.protocol,
-                                            ciphers = self.ciphers)
-                if test_support.verbose and self.chatty:
-                    sys.stdout.write(' server:  wrapped server socket as %s\n' % str(self.sock))
-            self.port = test_support.bind_port(self.sock)
-            self.active = False
-            threading.Thread.__init__(self)
-            self.daemon = True
-
-        def start(self, flag=None):
-            self.flag = flag
-            threading.Thread.start(self)
-
-        def run(self):
-            self.sock.settimeout(0.05)
-            self.sock.listen(5)
-            self.active = True
-            if self.flag:
-                # signal an event
-                self.flag.set()
-            while self.active:
-                try:
-                    newconn, connaddr = self.sock.accept()
-                    if test_support.verbose and self.chatty:
-                        sys.stdout.write(' server:  new connection from '
-                                         + str(connaddr) + '\n')
-                    handler = self.ConnectionHandler(self, newconn)
-                    handler.start()
-                except socket.timeout:
-                    pass
-                except KeyboardInterrupt:
-                    self.stop()
-            self.sock.close()
-
-        def stop(self):
-            self.active = False
-
-    class AsyncoreEchoServer(threading.Thread):
-
-        class EchoServer(asyncore.dispatcher):
-
-            class ConnectionHandler(asyncore.dispatcher_with_send):
-
-                def __init__(self, conn, certfile):
-                    asyncore.dispatcher_with_send.__init__(self, conn)
-                    self.socket = ssl.wrap_socket(conn, server_side=True,
-                                                  certfile=certfile,
-                                                  do_handshake_on_connect=False)
-                    self._ssl_accepting = True
-
-                def readable(self):
-                    if isinstance(self.socket, ssl.SSLSocket):
-                        while self.socket.pending() > 0:
-                            self.handle_read_event()
-                    return True
-
-                def _do_ssl_handshake(self):
-                    try:
-                        self.socket.do_handshake()
-                    except ssl.SSLError, err:
-                        if err.args[0] in (ssl.SSL_ERROR_WANT_READ,
-                                           ssl.SSL_ERROR_WANT_WRITE):
-                            return
-                        elif err.args[0] == ssl.SSL_ERROR_EOF:
-                            return self.handle_close()
-                        raise
-                    except socket.error, err:
-                        if err.args[0] == errno.ECONNABORTED:
-                            return self.handle_close()
-                    else:
-                        self._ssl_accepting = False
-
-                def handle_read(self):
-                    if self._ssl_accepting:
-                        self._do_ssl_handshake()
-                    else:
-                        data = self.recv(1024)
-                        if data and data.strip() != 'over':
-                            self.send(data.lower())
-
-                def handle_close(self):
-                    self.close()
-                    if test_support.verbose:
-                        sys.stdout.write(" server:  closed connection %s\n" % self.socket)
-
-                def handle_error(self):
-                    raise
-
-            def __init__(self, certfile):
-                self.certfile = certfile
-                asyncore.dispatcher.__init__(self)
-                self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
-                self.port = test_support.bind_port(self.socket)
-                self.listen(5)
-
-            def handle_accept(self):
-                sock_obj, addr = self.accept()
-                if test_support.verbose:
-                    sys.stdout.write(" server:  new connection from %s:%s\n" %addr)
-                self.ConnectionHandler(sock_obj, self.certfile)
-
-            def handle_error(self):
-                raise
-
-        def __init__(self, certfile):
-            self.flag = None
-            self.active = False
-            self.server = self.EchoServer(certfile)
-            self.port = self.server.port
-            threading.Thread.__init__(self)
-            self.daemon = True
-
-        def __str__(self):
-            return "<%s %s>" % (self.__class__.__name__, self.server)
-
-        def start(self, flag=None):
-            self.flag = flag
-            threading.Thread.start(self)
-
-        def run(self):
-            self.active = True
-            if self.flag:
-                self.flag.set()
-            while self.active:
-                asyncore.loop(0.05)
-
-        def stop(self):
-            self.active = False
-            self.server.close()
-
-    class SocketServerHTTPSServer(threading.Thread):
-
-        class HTTPSServer(HTTPServer):
-
-            def __init__(self, server_address, RequestHandlerClass, certfile):
-                HTTPServer.__init__(self, server_address, RequestHandlerClass)
-                # we assume the certfile contains both private key and certificate
-                self.certfile = certfile
-                self.allow_reuse_address = True
-
-            def __str__(self):
-                return ('<%s %s:%s>' %
-                        (self.__class__.__name__,
-                         self.server_name,
-                         self.server_port))
-
-            def get_request(self):
-                # override this to wrap socket with SSL
-                sock, addr = self.socket.accept()
-                sslconn = ssl.wrap_socket(sock, server_side=True,
-                                          certfile=self.certfile)
-                return sslconn, addr
-
-        class RootedHTTPRequestHandler(SimpleHTTPRequestHandler):
-            # need to override translate_path to get a known root,
-            # instead of using os.curdir, since the test could be
-            # run from anywhere
-
-            server_version = "TestHTTPS/1.0"
-
-            root = None
-
-            def translate_path(self, path):
-                """Translate a /-separated PATH to the local filename syntax.
-
-                Components that mean special things to the local file system
-                (e.g. drive or directory names) are ignored.  (XXX They should
-                probably be diagnosed.)
-
-                """
-                # abandon query parameters
-                path = urlparse.urlparse(path)[2]
-                path = os.path.normpath(urllib.unquote(path))
-                words = path.split('/')
-                words = filter(None, words)
-                path = self.root
-                for word in words:
-                    drive, word = os.path.splitdrive(word)
-                    head, word = os.path.split(word)
-                    if word in self.root: continue
-                    path = os.path.join(path, word)
-                return path
-
-            def log_message(self, format, *args):
-
-                # we override this to suppress logging unless "verbose"
-
-                if test_support.verbose:
-                    sys.stdout.write(" server (%s:%d %s):\n   [%s] %s\n" %
-                                     (self.server.server_address,
-                                      self.server.server_port,
-                                      self.request.cipher(),
-                                      self.log_date_time_string(),
-                                      format%args))
-
-
-        def __init__(self, certfile):
-            self.flag = None
-            self.RootedHTTPRequestHandler.root = os.path.split(CERTFILE)[0]
-            self.server = self.HTTPSServer(
-                (HOST, 0), self.RootedHTTPRequestHandler, certfile)
-            self.port = self.server.server_port
-            threading.Thread.__init__(self)
-            self.daemon = True
-
-        def __str__(self):
-            return "<%s %s>" % (self.__class__.__name__, self.server)
-
-        def start(self, flag=None):
-            self.flag = flag
-            threading.Thread.start(self)
-
-        def run(self):
-            if self.flag:
-                self.flag.set()
-            self.server.serve_forever(0.05)
-
-        def stop(self):
-            self.server.shutdown()
-
-
-    def bad_cert_test(certfile):
-        """
-        Launch a server with CERT_REQUIRED, and check that trying to
-        connect to it with the given client certificate fails.
-        """
-        server = ThreadedEchoServer(CERTFILE,
-                                    certreqs=ssl.CERT_REQUIRED,
-                                    cacerts=CERTFILE, chatty=False)
-        flag = threading.Event()
-        server.start(flag)
-        # wait for it to start
-        flag.wait()
-        # try to connect
-        try:
-            try:
-                s = ssl.wrap_socket(socket.socket(),
-                                    certfile=certfile,
-                                    ssl_version=ssl.PROTOCOL_TLSv1)
-                s.connect((HOST, server.port))
-            except ssl.SSLError, x:
-                if test_support.verbose:
-                    sys.stdout.write("\nSSLError is %s\n" % x[1])
-            except socket.error, x:
-                if test_support.verbose:
-                    sys.stdout.write("\nsocket.error is %s\n" % x[1])
-            else:
-                raise AssertionError("Use of invalid cert should have failed!")
-        finally:
-            server.stop()
-            server.join()
-
-    def server_params_test(certfile, protocol, certreqs, cacertsfile,
-                           client_certfile, client_protocol=None, indata="FOO\n",
-                           ciphers=None, chatty=True, connectionchatty=False,
-                           wrap_accepting_socket=False):
-        """
-        Launch a server, connect a client to it and try various reads
-        and writes.
-        """
-        server = ThreadedEchoServer(certfile,
-                                    certreqs=certreqs,
-                                    ssl_version=protocol,
-                                    cacerts=cacertsfile,
-                                    ciphers=ciphers,
-                                    chatty=chatty,
-                                    connectionchatty=connectionchatty,
-                                    wrap_accepting_socket=wrap_accepting_socket)
-        flag = threading.Event()
-        server.start(flag)
-        # wait for it to start
-        flag.wait()
-        # try to connect
-        if client_protocol is None:
-            client_protocol = protocol
-        try:
-            s = ssl.wrap_socket(socket.socket(),
-                                certfile=client_certfile,
-                                ca_certs=cacertsfile,
-                                ciphers=ciphers,
-                                cert_reqs=certreqs,
-                                ssl_version=client_protocol)
-            s.connect((HOST, server.port))
-            for arg in [indata, bytearray(indata), memoryview(indata)]:
-                if connectionchatty:
-                    if test_support.verbose:
-                        sys.stdout.write(
-                            " client:  sending %s...\n" % (repr(arg)))
-                s.write(arg)
-                outdata = s.read()
-                if connectionchatty:
-                    if test_support.verbose:
-                        sys.stdout.write(" client:  read %s\n" % repr(outdata))
-                if outdata != indata.lower():
-                    raise AssertionError(
-                        "bad data <<%s>> (%d) received; expected <<%s>> (%d)\n"
-                        % (outdata[:min(len(outdata),20)], len(outdata),
-                           indata[:min(len(indata),20)].lower(), len(indata)))
-            s.write("over\n")
-            if connectionchatty:
-                if test_support.verbose:
-                    sys.stdout.write(" client:  closing connection.\n")
-            s.close()
-        finally:
-            server.stop()
-            server.join()
-
-    def try_protocol_combo(server_protocol,
-                           client_protocol,
-                           expect_success,
-                           certsreqs=None):
-        if certsreqs is None:
-            certsreqs = ssl.CERT_NONE
-        certtype = {
-            ssl.CERT_NONE: "CERT_NONE",
-            ssl.CERT_OPTIONAL: "CERT_OPTIONAL",
-            ssl.CERT_REQUIRED: "CERT_REQUIRED",
-        }[certsreqs]
-        if test_support.verbose:
-            formatstr = (expect_success and " %s->%s %s\n") or " {%s->%s} %s\n"
-            sys.stdout.write(formatstr %
-                             (ssl.get_protocol_name(client_protocol),
-                              ssl.get_protocol_name(server_protocol),
-                              certtype))
-        try:
-            # NOTE: we must enable "ALL" ciphers, otherwise an SSLv23 client
-            # will send an SSLv3 hello (rather than SSLv2) starting from
-            # OpenSSL 1.0.0 (see issue #8322).
-            server_params_test(CERTFILE, server_protocol, certsreqs,
-                               CERTFILE, CERTFILE, client_protocol,
-                               ciphers="ALL", chatty=False)
-        # Protocol mismatch can result in either an SSLError, or a
-        # "Connection reset by peer" error.
-        except ssl.SSLError:
-            if expect_success:
-                raise
-        except socket.error as e:
-            if expect_success or e.errno != errno.ECONNRESET:
-                raise
-        else:
-            if not expect_success:
-                raise AssertionError(
-                    "Client protocol %s succeeded with server protocol %s!"
-                    % (ssl.get_protocol_name(client_protocol),
-                       ssl.get_protocol_name(server_protocol)))
-
-
-    class ThreadedTests(unittest.TestCase):
-
-        def test_rude_shutdown(self):
-            """A brutal shutdown of an SSL server should raise an IOError
-            in the client when attempting handshake.
-            """
-            listener_ready = threading.Event()
-            listener_gone = threading.Event()
-
-            s = socket.socket()
-            port = test_support.bind_port(s, HOST)
-
-            # `listener` runs in a thread.  It sits in an accept() until
-            # the main thread connects.  Then it rudely closes the socket,
-            # and sets Event `listener_gone` to let the main thread know
-            # the socket is gone.
-            def listener():
-                s.listen(5)
-                listener_ready.set()
-                s.accept()
-                s.close()
-                listener_gone.set()
-
-            def connector():
-                listener_ready.wait()
-                c = socket.socket()
-                c.connect((HOST, port))
-                listener_gone.wait()
-                try:
-                    ssl_sock = ssl.wrap_socket(c)
-                except IOError:
-                    pass
-                else:
-                    self.fail('connecting to closed SSL socket should have failed')
-
-            t = threading.Thread(target=listener)
-            t.start()
-            try:
-                connector()
-            finally:
-                t.join()
-
-        @skip_if_broken_ubuntu_ssl
-        def test_echo(self):
-            """Basic test of an SSL client connecting to a server"""
-            if test_support.verbose:
-                sys.stdout.write("\n")
-            server_params_test(CERTFILE, ssl.PROTOCOL_TLSv1, ssl.CERT_NONE,
-                               CERTFILE, CERTFILE, ssl.PROTOCOL_TLSv1,
-                               chatty=True, connectionchatty=True)
-
-        def test_getpeercert(self):
-            if test_support.verbose:
-                sys.stdout.write("\n")
-            s2 = socket.socket()
-            server = ThreadedEchoServer(CERTFILE,
-                                        certreqs=ssl.CERT_NONE,
-                                        ssl_version=ssl.PROTOCOL_SSLv23,
-                                        cacerts=CERTFILE,
-                                        chatty=False)
-            flag = threading.Event()
-            server.start(flag)
-            # wait for it to start
-            flag.wait()
-            # try to connect
-            try:
-                s = ssl.wrap_socket(socket.socket(),
-                                    certfile=CERTFILE,
-                                    ca_certs=CERTFILE,
-                                    cert_reqs=ssl.CERT_REQUIRED,
-                                    ssl_version=ssl.PROTOCOL_SSLv23)
-                s.connect((HOST, server.port))
-                cert = s.getpeercert()
-                self.assertTrue(cert, "Can't get peer certificate.")
-                cipher = s.cipher()
-                if test_support.verbose:
-                    sys.stdout.write(pprint.pformat(cert) + '\n')
-                    sys.stdout.write("Connection cipher is " + str(cipher) + '.\n')
-                if 'subject' not in cert:
-                    self.fail("No subject field in certificate: %s." %
-                              pprint.pformat(cert))
-                if ((('organizationName', 'Python Software Foundation'),)
-                    not in cert['subject']):
-                    self.fail(
-                        "Missing or invalid 'organizationName' field in certificate subject; "
-                        "should be 'Python Software Foundation'.")
-                s.close()
-            finally:
-                server.stop()
-                server.join()
-
-        def test_empty_cert(self):
-            """Connecting with an empty cert file"""
-            bad_cert_test(os.path.join(os.path.dirname(__file__) or os.curdir,
-                                      "nullcert.pem"))
-        def test_malformed_cert(self):
-            """Connecting with a badly formatted certificate (syntax error)"""
-            bad_cert_test(os.path.join(os.path.dirname(__file__) or os.curdir,
-                                       "badcert.pem"))
-        def test_nonexisting_cert(self):
-            """Connecting with a non-existing cert file"""
-            bad_cert_test(os.path.join(os.path.dirname(__file__) or os.curdir,
-                                       "wrongcert.pem"))
-        def test_malformed_key(self):
-            """Connecting with a badly formatted key (syntax error)"""
-            bad_cert_test(os.path.join(os.path.dirname(__file__) or os.curdir,
-                                       "badkey.pem"))
-
-        @skip_if_broken_ubuntu_ssl
-        def test_protocol_sslv2(self):
-            """Connecting to an SSLv2 server with various client options"""
-            if test_support.verbose:
-                sys.stdout.write("\n")
-            try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True)
-            try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True, ssl.CERT_OPTIONAL)
-            try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True, ssl.CERT_REQUIRED)
-            try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv23, True)
-            try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv3, False)
-            try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_TLSv1, False)
-
-        @skip_if_broken_ubuntu_ssl
-        def test_protocol_sslv23(self):
-            """Connecting to an SSLv23 server with various client options"""
-            if test_support.verbose:
-                sys.stdout.write("\n")
-            try:
-                try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv2, True)
-            except (ssl.SSLError, socket.error), x:
-                # this fails on some older versions of OpenSSL (0.9.7l, for instance)
-                if test_support.verbose:
-                    sys.stdout.write(
-                        " SSL2 client to SSL23 server test unexpectedly failed:\n %s\n"
-                        % str(x))
-            try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, True)
-            try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True)
-            try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, True)
-
-            try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, True, ssl.CERT_OPTIONAL)
-            try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True, ssl.CERT_OPTIONAL)
-            try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, True, ssl.CERT_OPTIONAL)
-
-            try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv3, True, ssl.CERT_REQUIRED)
-            try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_SSLv23, True, ssl.CERT_REQUIRED)
-            try_protocol_combo(ssl.PROTOCOL_SSLv23, ssl.PROTOCOL_TLSv1, True, ssl.CERT_REQUIRED)
-
-        @skip_if_broken_ubuntu_ssl
-        def test_protocol_sslv3(self):
-            """Connecting to an SSLv3 server with various client options"""
-            if test_support.verbose:
-                sys.stdout.write("\n")
-            try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True)
-            try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True, ssl.CERT_OPTIONAL)
-            try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True, ssl.CERT_REQUIRED)
-            if hasattr(ssl, 'PROTOCOL_SSLv2'):
-                try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv2, False)
-            try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv23, False)
-            try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_TLSv1, False)
-
-        @skip_if_broken_ubuntu_ssl
-        def test_protocol_tlsv1(self):
-            """Connecting to a TLSv1 server with various client options"""
-            if test_support.verbose:
-                sys.stdout.write("\n")
-            try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True)
-            try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True, ssl.CERT_OPTIONAL)
-            try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True, ssl.CERT_REQUIRED)
-            if hasattr(ssl, 'PROTOCOL_SSLv2'):
-                try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv2, False)
-            try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv3, False)
-            try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv23, False)
-
-        def test_starttls(self):
-            """Switching from clear text to encrypted and back again."""
-            msgs = ("msg 1", "MSG 2", "STARTTLS", "MSG 3", "msg 4", "ENDTLS", "msg 5", "msg 6")
-
-            server = ThreadedEchoServer(CERTFILE,
-                                        ssl_version=ssl.PROTOCOL_TLSv1,
-                                        starttls_server=True,
-                                        chatty=True,
-                                        connectionchatty=True)
-            flag = threading.Event()
-            server.start(flag)
-            # wait for it to start
-            flag.wait()
-            # try to connect
-            wrapped = False
-            try:
-                s = socket.socket()
-                s.setblocking(1)
-                s.connect((HOST, server.port))
-                if test_support.verbose:
-                    sys.stdout.write("\n")
-                for indata in msgs:
-                    if test_support.verbose:
-                        sys.stdout.write(
-                            " client:  sending %s...\n" % repr(indata))
-                    if wrapped:
-                        conn.write(indata)
-                        outdata = conn.read()
-                    else:
-                        s.send(indata)
-                        outdata = s.recv(1024)
-                    if (indata == "STARTTLS" and
-                        outdata.strip().lower().startswith("ok")):
-                        # STARTTLS ok, switch to secure mode
-                        if test_support.verbose:
-                            sys.stdout.write(
-                                " client:  read %s from server, starting TLS...\n"
-                                % repr(outdata))
-                        conn = ssl.wrap_socket(s, ssl_version=ssl.PROTOCOL_TLSv1)
-                        wrapped = True
-                    elif (indata == "ENDTLS" and
-                        outdata.strip().lower().startswith("ok")):
-                        # ENDTLS ok, switch back to clear text
-                        if test_support.verbose:
-                            sys.stdout.write(
-                                " client:  read %s from server, ending TLS...\n"
-                                % repr(outdata))
-                        s = conn.unwrap()
-                        wrapped = False
-                    else:
-                        if test_support.verbose:
-                            sys.stdout.write(
-                                " client:  read %s from server\n" % repr(outdata))
-                if test_support.verbose:
-                    sys.stdout.write(" client:  closing connection.\n")
-                if wrapped:
-                    conn.write("over\n")
-                else:
-                    s.send("over\n")
-                s.close()
-            finally:
-                server.stop()
-                server.join()
-
-        def test_socketserver(self):
-            """Using a SocketServer to create and manage SSL connections."""
-            server = SocketServerHTTPSServer(CERTFILE)
-            flag = threading.Event()
-            server.start(flag)
-            # wait for it to start
-            flag.wait()
-            # try to connect
-            try:
-                if test_support.verbose:
-                    sys.stdout.write('\n')
-                with open(CERTFILE, 'rb') as f:
-                    d1 = f.read()
-                d2 = ''
-                # now fetch the same data from the HTTPS server
-                url = 'https://127.0.0.1:%d/%s' % (
-                    server.port, os.path.split(CERTFILE)[1])
-                with test_support.check_py3k_warnings():
-                    f = urllib.urlopen(url)
-                dlen = f.info().getheader("content-length")
-                if dlen and (int(dlen) > 0):
-                    d2 = f.read(int(dlen))
-                    if test_support.verbose:
-                        sys.stdout.write(
-                            " client: read %d bytes from remote server '%s'\n"
-                            % (len(d2), server))
-                f.close()
-                self.assertEqual(d1, d2)
-            finally:
-                server.stop()
-                server.join()
-
-        def test_wrapped_accept(self):
-            """Check the accept() method on SSL sockets."""
-            if test_support.verbose:
-                sys.stdout.write("\n")
-            server_params_test(CERTFILE, ssl.PROTOCOL_SSLv23, ssl.CERT_REQUIRED,
-                               CERTFILE, CERTFILE, ssl.PROTOCOL_SSLv23,
-                               chatty=True, connectionchatty=True,
-                               wrap_accepting_socket=True)
-
-        def test_asyncore_server(self):
-            """Check the example asyncore integration."""
-            indata = "TEST MESSAGE of mixed case\n"
-
-            if test_support.verbose:
-                sys.stdout.write("\n")
-            server = AsyncoreEchoServer(CERTFILE)
-            flag = threading.Event()
-            server.start(flag)
-            # wait for it to start
-            flag.wait()
-            # try to connect
-            try:
-                s = ssl.wrap_socket(socket.socket())
-                s.connect(('127.0.0.1', server.port))
-                if test_support.verbose:
-                    sys.stdout.write(
-                        " client:  sending %s...\n" % (repr(indata)))
-                s.write(indata)
-                outdata = s.read()
-                if test_support.verbose:
-                    sys.stdout.write(" client:  read %s\n" % repr(outdata))
-                if outdata != indata.lower():
-                    self.fail(
-                        "bad data <<%s>> (%d) received; expected <<%s>> (%d)\n"
-                        % (outdata[:min(len(outdata),20)], len(outdata),
-                           indata[:min(len(indata),20)].lower(), len(indata)))
-                s.write("over\n")
-                if test_support.verbose:
-                    sys.stdout.write(" client:  closing connection.\n")
-                s.close()
-            finally:
-                server.stop()
-                # wait for server thread to end
-                server.join()
-
-        def test_recv_send(self):
-            """Test recv(), send() and friends."""
-            if test_support.verbose:
-                sys.stdout.write("\n")
-
-            server = ThreadedEchoServer(CERTFILE,
-                                        certreqs=ssl.CERT_NONE,
-                                        ssl_version=ssl.PROTOCOL_TLSv1,
-                                        cacerts=CERTFILE,
-                                        chatty=True,
-                                        connectionchatty=False)
-            flag = threading.Event()
-            server.start(flag)
-            # wait for it to start
-            flag.wait()
-            # try to connect
-            s = ssl.wrap_socket(socket.socket(),
-                                server_side=False,
-                                certfile=CERTFILE,
-                                ca_certs=CERTFILE,
-                                cert_reqs=ssl.CERT_NONE,
-                                ssl_version=ssl.PROTOCOL_TLSv1)
-            s.connect((HOST, server.port))
-            try:
-                # helper methods for standardising recv* method signatures
-                def _recv_into():
-                    b = bytearray("\0"*100)
-                    count = s.recv_into(b)
-                    return b[:count]
-
-                def _recvfrom_into():
-                    b = bytearray("\0"*100)
-                    count, addr = s.recvfrom_into(b)
-                    return b[:count]
-
-                # (name, method, whether to expect success, *args)
-                send_methods = [
-                    ('send', s.send, True, []),
-                    ('sendto', s.sendto, False, ["some.address"]),
-                    ('sendall', s.sendall, True, []),
-                ]
-                recv_methods = [
-                    ('recv', s.recv, True, []),
-                    ('recvfrom', s.recvfrom, False, ["some.address"]),
-                    ('recv_into', _recv_into, True, []),
-                    ('recvfrom_into', _recvfrom_into, False, []),
-                ]
-                data_prefix = u"PREFIX_"
-
-                for meth_name, send_meth, expect_success, args in send_methods:
-                    indata = data_prefix + meth_name
-                    try:
-                        send_meth(indata.encode('ASCII', 'strict'), *args)
-                        outdata = s.read()
-                        outdata = outdata.decode('ASCII', 'strict')
-                        if outdata != indata.lower():
-                            self.fail(
-                                "While sending with <<%s>> bad data "
-                                "<<%r>> (%d) received; "
-                                "expected <<%r>> (%d)\n" % (
-                                    meth_name, outdata[:20], len(outdata),
-                                    indata[:20], len(indata)
-                                )
-                            )
-                    except ValueError as e:
-                        if expect_success:
-                            self.fail(
-                                "Failed to send with method <<%s>>; "
-                                "expected to succeed.\n" % (meth_name,)
-                            )
-                        if not str(e).startswith(meth_name):
-                            self.fail(
-                                "Method <<%s>> failed with unexpected "
-                                "exception message: %s\n" % (
-                                    meth_name, e
-                                )
-                            )
-
-                for meth_name, recv_meth, expect_success, args in recv_methods:
-                    indata = data_prefix + meth_name
-                    try:
-                        s.send(indata.encode('ASCII', 'strict'))
-                        outdata = recv_meth(*args)
-                        outdata = outdata.decode('ASCII', 'strict')
-                        if outdata != indata.lower():
-                            self.fail(
-                                "While receiving with <<%s>> bad data "
-                                "<<%r>> (%d) received; "
-                                "expected <<%r>> (%d)\n" % (
-                                    meth_name, outdata[:20], len(outdata),
-                                    indata[:20], len(indata)
-                                )
-                            )
-                    except ValueError as e:
-                        if expect_success:
-                            self.fail(
-                                "Failed to receive with method <<%s>>; "
-                                "expected to succeed.\n" % (meth_name,)
-                            )
-                        if not str(e).startswith(meth_name):
-                            self.fail(
-                                "Method <<%s>> failed with unexpected "
-                                "exception message: %s\n" % (
-                                    meth_name, e
-                                )
-                            )
-                        # consume data
-                        s.read()
-
-                s.write("over\n".encode("ASCII", "strict"))
-                s.close()
-            finally:
-                server.stop()
-                server.join()
-
-        def test_handshake_timeout(self):
-            # Issue #5103: SSL handshake must respect the socket timeout
-            server = socket.socket(socket.AF_INET)
-            host = "127.0.0.1"
-            port = test_support.bind_port(server)
-            started = threading.Event()
-            finish = False
-
-            def serve():
-                server.listen(5)
-                started.set()
-                conns = []
-                while not finish:
-                    r, w, e = select.select([server], [], [], 0.1)
-                    if server in r:
-                        # Let the socket hang around rather than having
-                        # it closed by garbage collection.
-                        conns.append(server.accept()[0])
-
-            t = threading.Thread(target=serve)
-            t.start()
-            started.wait()
-
-            try:
-                try:
-                    c = socket.socket(socket.AF_INET)
-                    c.settimeout(0.2)
-                    c.connect((host, port))
-                    # Will attempt handshake and time out
-                    self.assertRaisesRegexp(ssl.SSLError, "timed out",
-                                            ssl.wrap_socket, c)
-                finally:
-                    c.close()
-                try:
-                    c = socket.socket(socket.AF_INET)
-                    c.settimeout(0.2)
-                    c = ssl.wrap_socket(c)
-                    # Will attempt handshake and time out
-                    self.assertRaisesRegexp(ssl.SSLError, "timed out",
-                                            c.connect, (host, port))
-                finally:
-                    c.close()
-            finally:
-                finish = True
-                t.join()
-                server.close()
-
-
-def test_main(verbose=False):
-    global CERTFILE, SVN_PYTHON_ORG_ROOT_CERT
-    CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir,
-                            "keycert.pem")
-    SVN_PYTHON_ORG_ROOT_CERT = os.path.join(
-        os.path.dirname(__file__) or os.curdir,
-        "https_svn_python_org_root.pem")
-
-    if (not os.path.exists(CERTFILE) or
-        not os.path.exists(SVN_PYTHON_ORG_ROOT_CERT)):
-        raise test_support.TestFailed("Can't read certificate files!")
-
-    tests = [BasicTests, BasicSocketTests]
-
-    if test_support.is_resource_enabled('network'):
-        tests.append(NetworkedTests)
-
-    if _have_threads:
-        thread_info = test_support.threading_setup()
-        if thread_info and test_support.is_resource_enabled('network'):
-            tests.append(ThreadedTests)
-
-    try:
-        test_support.run_unittest(*tests)
-    finally:
-        if _have_threads:
-            test_support.threading_cleanup(*thread_info)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_startfile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_startfile.py
deleted file mode 100644
index ef8690d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_startfile.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Ridiculously simple test of the os.startfile function for Windows.
-#
-# empty.vbs is an empty file (except for a comment), which does
-# nothing when run with cscript or wscript.
-#
-# A possible improvement would be to have empty.vbs do something that
-# we can detect here, to make sure that not only the os.startfile()
-# call succeeded, but also the the script actually has run.
-
-import unittest
-from test import test_support
-import os
-from os import path
-from time import sleep
-
-startfile = test_support.get_attribute(os, 'startfile')
-
-
-class TestCase(unittest.TestCase):
-    def test_nonexisting(self):
-        self.assertRaises(OSError, startfile, "nonexisting.vbs")
-
-    def test_nonexisting_u(self):
-        self.assertRaises(OSError, startfile, u"nonexisting.vbs")
-
-    def test_empty(self):
-        empty = path.join(path.dirname(__file__), "empty.vbs")
-        startfile(empty)
-        startfile(empty, "open")
-        # Give the child process some time to exit before we finish.
-        # Otherwise the cleanup code will not be able to delete the cwd,
-        # because it is still in use.
-        sleep(0.1)
-
-    def test_empty_u(self):
-        empty = path.join(path.dirname(__file__), "empty.vbs")
-        startfile(unicode(empty, "mbcs"))
-        startfile(unicode(empty, "mbcs"), "open")
-        sleep(0.1)
-
-def test_main():
-    test_support.run_unittest(TestCase)
-
-if __name__=="__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_str.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_str.py
deleted file mode 100644
index 61862b6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_str.py
+++ /dev/null
@@ -1,434 +0,0 @@
-
-import struct
-import sys
-from test import test_support, string_tests
-
-
-class StrTest(
-    string_tests.CommonTest,
-    string_tests.MixinStrUnicodeUserStringTest,
-    string_tests.MixinStrUserStringTest,
-    string_tests.MixinStrUnicodeTest,
-    ):
-
-    type2test = str
-
-    # We don't need to propagate to str
-    def fixtype(self, obj):
-        return obj
-
-    def test_basic_creation(self):
-        self.assertEqual(str(''), '')
-        self.assertEqual(str(0), '0')
-        self.assertEqual(str(0L), '0')
-        self.assertEqual(str(()), '()')
-        self.assertEqual(str([]), '[]')
-        self.assertEqual(str({}), '{}')
-        a = []
-        a.append(a)
-        self.assertEqual(str(a), '[[...]]')
-        a = {}
-        a[0] = a
-        self.assertEqual(str(a), '{0: {...}}')
-
-    def test_formatting(self):
-        string_tests.MixinStrUnicodeUserStringTest.test_formatting(self)
-        self.assertRaises(OverflowError, '%c'.__mod__, 0x1234)
-
-    def test_conversion(self):
-        # Make sure __str__() behaves properly
-        class Foo0:
-            def __unicode__(self):
-                return u"foo"
-
-        class Foo1:
-            def __str__(self):
-                return "foo"
-
-        class Foo2(object):
-            def __str__(self):
-                return "foo"
-
-        class Foo3(object):
-            def __str__(self):
-                return u"foo"
-
-        class Foo4(unicode):
-            def __str__(self):
-                return u"foo"
-
-        class Foo5(str):
-            def __str__(self):
-                return u"foo"
-
-        class Foo6(str):
-            def __str__(self):
-                return "foos"
-
-            def __unicode__(self):
-                return u"foou"
-
-        class Foo7(unicode):
-            def __str__(self):
-                return "foos"
-            def __unicode__(self):
-                return u"foou"
-
-        class Foo8(str):
-            def __new__(cls, content=""):
-                return str.__new__(cls, 2*content)
-            def __str__(self):
-                return self
-
-        class Foo9(str):
-            def __str__(self):
-                return "string"
-            def __unicode__(self):
-                return "not unicode"
-
-        self.assertTrue(str(Foo0()).startswith("<")) # this is different from __unicode__
-        self.assertEqual(str(Foo1()), "foo")
-        self.assertEqual(str(Foo2()), "foo")
-        self.assertEqual(str(Foo3()), "foo")
-        self.assertEqual(str(Foo4("bar")), "foo")
-        self.assertEqual(str(Foo5("bar")), "foo")
-        self.assertEqual(str(Foo6("bar")), "foos")
-        self.assertEqual(str(Foo7("bar")), "foos")
-        self.assertEqual(str(Foo8("foo")), "foofoo")
-        self.assertEqual(str(Foo9("foo")), "string")
-        self.assertEqual(unicode(Foo9("foo")), u"not unicode")
-
-    def test_expandtabs_overflows_gracefully(self):
-        # This test only affects 32-bit platforms because expandtabs can only take
-        # an int as the max value, not a 64-bit C long.  If expandtabs is changed
-        # to take a 64-bit long, this test should apply to all platforms.
-        if sys.maxint > (1 << 32) or struct.calcsize('P') != 4:
-            return
-        self.assertRaises(OverflowError, 't\tt\t'.expandtabs, sys.maxint)
-
-    def test__format__(self):
-        def test(value, format, expected):
-            # test both with and without the trailing 's'
-            self.assertEqual(value.__format__(format), expected)
-            self.assertEqual(value.__format__(format + 's'), expected)
-
-        test('', '', '')
-        test('abc', '', 'abc')
-        test('abc', '.3', 'abc')
-        test('ab', '.3', 'ab')
-        test('abcdef', '.3', 'abc')
-        test('abcdef', '.0', '')
-        test('abc', '3.3', 'abc')
-        test('abc', '2.3', 'abc')
-        test('abc', '2.2', 'ab')
-        test('abc', '3.2', 'ab ')
-        test('result', 'x<0', 'result')
-        test('result', 'x<5', 'result')
-        test('result', 'x<6', 'result')
-        test('result', 'x<7', 'resultx')
-        test('result', 'x<8', 'resultxx')
-        test('result', ' <7', 'result ')
-        test('result', '<7', 'result ')
-        test('result', '>7', ' result')
-        test('result', '>8', '  result')
-        test('result', '^8', ' result ')
-        test('result', '^9', ' result  ')
-        test('result', '^10', '  result  ')
-        test('a', '10000', 'a' + ' ' * 9999)
-        test('', '10000', ' ' * 10000)
-        test('', '10000000', ' ' * 10000000)
-
-    def test_format(self):
-        self.assertEqual(''.format(), '')
-        self.assertEqual('a'.format(), 'a')
-        self.assertEqual('ab'.format(), 'ab')
-        self.assertEqual('a{{'.format(), 'a{')
-        self.assertEqual('a}}'.format(), 'a}')
-        self.assertEqual('{{b'.format(), '{b')
-        self.assertEqual('}}b'.format(), '}b')
-        self.assertEqual('a{{b'.format(), 'a{b')
-
-        # examples from the PEP:
-        import datetime
-        self.assertEqual("My name is {0}".format('Fred'), "My name is Fred")
-        self.assertEqual("My name is {0[name]}".format(dict(name='Fred')),
-                         "My name is Fred")
-        self.assertEqual("My name is {0} :-{{}}".format('Fred'),
-                         "My name is Fred :-{}")
-
-        d = datetime.date(2007, 8, 18)
-        self.assertEqual("The year is {0.year}".format(d),
-                         "The year is 2007")
-
-        # classes we'll use for testing
-        class C:
-            def __init__(self, x=100):
-                self._x = x
-            def __format__(self, spec):
-                return spec
-
-        class D:
-            def __init__(self, x):
-                self.x = x
-            def __format__(self, spec):
-                return str(self.x)
-
-        # class with __str__, but no __format__
-        class E:
-            def __init__(self, x):
-                self.x = x
-            def __str__(self):
-                return 'E(' + self.x + ')'
-
-        # class with __repr__, but no __format__ or __str__
-        class F:
-            def __init__(self, x):
-                self.x = x
-            def __repr__(self):
-                return 'F(' + self.x + ')'
-
-        # class with __format__ that forwards to string, for some format_spec's
-        class G:
-            def __init__(self, x):
-                self.x = x
-            def __str__(self):
-                return "string is " + self.x
-            def __format__(self, format_spec):
-                if format_spec == 'd':
-                    return 'G(' + self.x + ')'
-                return object.__format__(self, format_spec)
-
-        # class that returns a bad type from __format__
-        class H:
-            def __format__(self, format_spec):
-                return 1.0
-
-        class I(datetime.date):
-            def __format__(self, format_spec):
-                return self.strftime(format_spec)
-
-        class J(int):
-            def __format__(self, format_spec):
-                return int.__format__(self * 2, format_spec)
-
-
-        self.assertEqual(''.format(), '')
-        self.assertEqual('abc'.format(), 'abc')
-        self.assertEqual('{0}'.format('abc'), 'abc')
-        self.assertEqual('{0:}'.format('abc'), 'abc')
-        self.assertEqual('X{0}'.format('abc'), 'Xabc')
-        self.assertEqual('{0}X'.format('abc'), 'abcX')
-        self.assertEqual('X{0}Y'.format('abc'), 'XabcY')
-        self.assertEqual('{1}'.format(1, 'abc'), 'abc')
-        self.assertEqual('X{1}'.format(1, 'abc'), 'Xabc')
-        self.assertEqual('{1}X'.format(1, 'abc'), 'abcX')
-        self.assertEqual('X{1}Y'.format(1, 'abc'), 'XabcY')
-        self.assertEqual('{0}'.format(-15), '-15')
-        self.assertEqual('{0}{1}'.format(-15, 'abc'), '-15abc')
-        self.assertEqual('{0}X{1}'.format(-15, 'abc'), '-15Xabc')
-        self.assertEqual('{{'.format(), '{')
-        self.assertEqual('}}'.format(), '}')
-        self.assertEqual('{{}}'.format(), '{}')
-        self.assertEqual('{{x}}'.format(), '{x}')
-        self.assertEqual('{{{0}}}'.format(123), '{123}')
-        self.assertEqual('{{{{0}}}}'.format(), '{{0}}')
-        self.assertEqual('}}{{'.format(), '}{')
-        self.assertEqual('}}x{{'.format(), '}x{')
-
-        # weird field names
-        self.assertEqual("{0[foo-bar]}".format({'foo-bar':'baz'}), 'baz')
-        self.assertEqual("{0[foo bar]}".format({'foo bar':'baz'}), 'baz')
-        self.assertEqual("{0[ ]}".format({' ':3}), '3')
-
-        self.assertEqual('{foo._x}'.format(foo=C(20)), '20')
-        self.assertEqual('{1}{0}'.format(D(10), D(20)), '2010')
-        self.assertEqual('{0._x.x}'.format(C(D('abc'))), 'abc')
-        self.assertEqual('{0[0]}'.format(['abc', 'def']), 'abc')
-        self.assertEqual('{0[1]}'.format(['abc', 'def']), 'def')
-        self.assertEqual('{0[1][0]}'.format(['abc', ['def']]), 'def')
-        self.assertEqual('{0[1][0].x}'.format(['abc', [D('def')]]), 'def')
-
-        # strings
-        self.assertEqual('{0:.3s}'.format('abc'), 'abc')
-        self.assertEqual('{0:.3s}'.format('ab'), 'ab')
-        self.assertEqual('{0:.3s}'.format('abcdef'), 'abc')
-        self.assertEqual('{0:.0s}'.format('abcdef'), '')
-        self.assertEqual('{0:3.3s}'.format('abc'), 'abc')
-        self.assertEqual('{0:2.3s}'.format('abc'), 'abc')
-        self.assertEqual('{0:2.2s}'.format('abc'), 'ab')
-        self.assertEqual('{0:3.2s}'.format('abc'), 'ab ')
-        self.assertEqual('{0:x<0s}'.format('result'), 'result')
-        self.assertEqual('{0:x<5s}'.format('result'), 'result')
-        self.assertEqual('{0:x<6s}'.format('result'), 'result')
-        self.assertEqual('{0:x<7s}'.format('result'), 'resultx')
-        self.assertEqual('{0:x<8s}'.format('result'), 'resultxx')
-        self.assertEqual('{0: <7s}'.format('result'), 'result ')
-        self.assertEqual('{0:<7s}'.format('result'), 'result ')
-        self.assertEqual('{0:>7s}'.format('result'), ' result')
-        self.assertEqual('{0:>8s}'.format('result'), '  result')
-        self.assertEqual('{0:^8s}'.format('result'), ' result ')
-        self.assertEqual('{0:^9s}'.format('result'), ' result  ')
-        self.assertEqual('{0:^10s}'.format('result'), '  result  ')
-        self.assertEqual('{0:10000}'.format('a'), 'a' + ' ' * 9999)
-        self.assertEqual('{0:10000}'.format(''), ' ' * 10000)
-        self.assertEqual('{0:10000000}'.format(''), ' ' * 10000000)
-
-        # format specifiers for user defined type
-        self.assertEqual('{0:abc}'.format(C()), 'abc')
-
-        # !r and !s coercions
-        self.assertEqual('{0!s}'.format('Hello'), 'Hello')
-        self.assertEqual('{0!s:}'.format('Hello'), 'Hello')
-        self.assertEqual('{0!s:15}'.format('Hello'), 'Hello          ')
-        self.assertEqual('{0!s:15s}'.format('Hello'), 'Hello          ')
-        self.assertEqual('{0!r}'.format('Hello'), "'Hello'")
-        self.assertEqual('{0!r:}'.format('Hello'), "'Hello'")
-        self.assertEqual('{0!r}'.format(F('Hello')), 'F(Hello)')
-
-        # test fallback to object.__format__
-        self.assertEqual('{0}'.format({}), '{}')
-        self.assertEqual('{0}'.format([]), '[]')
-        self.assertEqual('{0}'.format([1]), '[1]')
-        self.assertEqual('{0}'.format(E('data')), 'E(data)')
-        self.assertEqual('{0:d}'.format(G('data')), 'G(data)')
-        self.assertEqual('{0!s}'.format(G('data')), 'string is data')
-
-        msg = 'object.__format__ with a non-empty format string is deprecated'
-        with test_support.check_warnings((msg, PendingDeprecationWarning)):
-            self.assertEqual('{0:^10}'.format(E('data')), ' E(data)  ')
-            self.assertEqual('{0:^10s}'.format(E('data')), ' E(data)  ')
-            self.assertEqual('{0:>15s}'.format(G('data')), ' string is data')
-
-        self.assertEqual("{0:date: %Y-%m-%d}".format(I(year=2007,
-                                                       month=8,
-                                                       day=27)),
-                         "date: 2007-08-27")
-
-        # test deriving from a builtin type and overriding __format__
-        self.assertEqual("{0}".format(J(10)), "20")
-
-
-        # string format specifiers
-        self.assertEqual('{0:}'.format('a'), 'a')
-
-        # computed format specifiers
-        self.assertEqual("{0:.{1}}".format('hello world', 5), 'hello')
-        self.assertEqual("{0:.{1}s}".format('hello world', 5), 'hello')
-        self.assertEqual("{0:.{precision}s}".format('hello world', precision=5), 'hello')
-        self.assertEqual("{0:{width}.{precision}s}".format('hello world', width=10, precision=5), 'hello     ')
-        self.assertEqual("{0:{width}.{precision}s}".format('hello world', width='10', precision='5'), 'hello     ')
-
-        # test various errors
-        self.assertRaises(ValueError, '{'.format)
-        self.assertRaises(ValueError, '}'.format)
-        self.assertRaises(ValueError, 'a{'.format)
-        self.assertRaises(ValueError, 'a}'.format)
-        self.assertRaises(ValueError, '{a'.format)
-        self.assertRaises(ValueError, '}a'.format)
-        self.assertRaises(IndexError, '{0}'.format)
-        self.assertRaises(IndexError, '{1}'.format, 'abc')
-        self.assertRaises(KeyError,   '{x}'.format)
-        self.assertRaises(ValueError, "}{".format)
-        self.assertRaises(ValueError, "{".format)
-        self.assertRaises(ValueError, "}".format)
-        self.assertRaises(ValueError, "abc{0:{}".format)
-        self.assertRaises(ValueError, "{0".format)
-        self.assertRaises(IndexError, "{0.}".format)
-        self.assertRaises(ValueError, "{0.}".format, 0)
-        self.assertRaises(IndexError, "{0[}".format)
-        self.assertRaises(ValueError, "{0[}".format, [])
-        self.assertRaises(KeyError,   "{0]}".format)
-        self.assertRaises(ValueError, "{0.[]}".format, 0)
-        self.assertRaises(ValueError, "{0..foo}".format, 0)
-        self.assertRaises(ValueError, "{0[0}".format, 0)
-        self.assertRaises(ValueError, "{0[0:foo}".format, 0)
-        self.assertRaises(KeyError,   "{c]}".format)
-        self.assertRaises(ValueError, "{{ {{{0}}".format, 0)
-        self.assertRaises(ValueError, "{0}}".format, 0)
-        self.assertRaises(KeyError,   "{foo}".format, bar=3)
-        self.assertRaises(ValueError, "{0!x}".format, 3)
-        self.assertRaises(ValueError, "{0!}".format, 0)
-        self.assertRaises(ValueError, "{0!rs}".format, 0)
-        self.assertRaises(ValueError, "{!}".format)
-        self.assertRaises(IndexError, "{:}".format)
-        self.assertRaises(IndexError, "{:s}".format)
-        self.assertRaises(IndexError, "{}".format)
-
-        # issue 6089
-        self.assertRaises(ValueError, "{0[0]x}".format, [None])
-        self.assertRaises(ValueError, "{0[0](10)}".format, [None])
-
-        # can't have a replacement on the field name portion
-        self.assertRaises(TypeError, '{0[{1}]}'.format, 'abcdefg', 4)
-
-        # exceed maximum recursion depth
-        self.assertRaises(ValueError, "{0:{1:{2}}}".format, 'abc', 's', '')
-        self.assertRaises(ValueError, "{0:{1:{2:{3:{4:{5:{6}}}}}}}".format,
-                          0, 1, 2, 3, 4, 5, 6, 7)
-
-        # string format spec errors
-        self.assertRaises(ValueError, "{0:-s}".format, '')
-        self.assertRaises(ValueError, format, "", "-")
-        self.assertRaises(ValueError, "{0:=s}".format, '')
-
-    def test_format_auto_numbering(self):
-        class C:
-            def __init__(self, x=100):
-                self._x = x
-            def __format__(self, spec):
-                return spec
-
-        self.assertEqual('{}'.format(10), '10')
-        self.assertEqual('{:5}'.format('s'), 's    ')
-        self.assertEqual('{!r}'.format('s'), "'s'")
-        self.assertEqual('{._x}'.format(C(10)), '10')
-        self.assertEqual('{[1]}'.format([1, 2]), '2')
-        self.assertEqual('{[a]}'.format({'a':4, 'b':2}), '4')
-        self.assertEqual('a{}b{}c'.format(0, 1), 'a0b1c')
-
-        self.assertEqual('a{:{}}b'.format('x', '^10'), 'a    x     b')
-        self.assertEqual('a{:{}x}b'.format(20, '#'), 'a0x14b')
-
-        # can't mix and match numbering and auto-numbering
-        self.assertRaises(ValueError, '{}{1}'.format, 1, 2)
-        self.assertRaises(ValueError, '{1}{}'.format, 1, 2)
-        self.assertRaises(ValueError, '{:{1}}'.format, 1, 2)
-        self.assertRaises(ValueError, '{0:{}}'.format, 1, 2)
-
-        # can mix and match auto-numbering and named
-        self.assertEqual('{f}{}'.format(4, f='test'), 'test4')
-        self.assertEqual('{}{f}'.format(4, f='test'), '4test')
-        self.assertEqual('{:{f}}{g}{}'.format(1, 3, g='g', f=2), ' 1g3')
-        self.assertEqual('{f:{}}{}{g}'.format(2, 4, f=1, g='g'), ' 14g')
-
-    def test_buffer_is_readonly(self):
-        self.assertRaises(TypeError, sys.stdin.readinto, b"")
-
-    def test_encode_and_decode_kwargs(self):
-        self.assertEqual('abcde'.encode('ascii', 'replace'),
-                         'abcde'.encode('ascii', errors='replace'))
-        self.assertEqual('abcde'.encode('ascii', 'ignore'),
-                         'abcde'.encode(encoding='ascii', errors='ignore'))
-        self.assertEqual('Andr\202 x'.decode('ascii', 'ignore'),
-                         'Andr\202 x'.decode('ascii', errors='ignore'))
-        self.assertEqual('Andr\202 x'.decode('ascii', 'replace'),
-                         'Andr\202 x'.decode(encoding='ascii', errors='replace'))
-
-    def test_startswith_endswith_errors(self):
-        with self.assertRaises(UnicodeDecodeError):
-            '\xff'.startswith(u'x')
-        with self.assertRaises(UnicodeDecodeError):
-            '\xff'.endswith(u'x')
-        for meth in ('foo'.startswith, 'foo'.endswith):
-            with self.assertRaises(TypeError) as cm:
-                meth(['f'])
-            exc = str(cm.exception)
-            self.assertIn('unicode', exc)
-            self.assertIn('str', exc)
-            self.assertIn('tuple', exc)
-
-def test_main():
-    test_support.run_unittest(StrTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strftime.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strftime.py
deleted file mode 100644
index 1a8712f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strftime.py
+++ /dev/null
@@ -1,185 +0,0 @@
-"""
-Unittest for time.strftime
-"""
-
-import calendar
-import sys
-import re
-from test import test_support
-import time
-import unittest
-
-
-# helper functions
-def fixasctime(s):
-    if s[8] == ' ':
-        s = s[:8] + '0' + s[9:]
-    return s
-
-def escapestr(text, ampm):
-    """
-    Escape text to deal with possible locale values that have regex
-    syntax while allowing regex syntax used for comparison.
-    """
-    new_text = re.escape(text)
-    new_text = new_text.replace(re.escape(ampm), ampm)
-    new_text = new_text.replace('\%', '%')
-    new_text = new_text.replace('\:', ':')
-    new_text = new_text.replace('\?', '?')
-    return new_text
-
-class StrftimeTest(unittest.TestCase):
-
-    def __init__(self, *k, **kw):
-        unittest.TestCase.__init__(self, *k, **kw)
-
-    def _update_variables(self, now):
-        # we must update the local variables on every cycle
-        self.gmt = time.gmtime(now)
-        now = time.localtime(now)
-
-        if now[3] < 12: self.ampm='(AM|am)'
-        else: self.ampm='(PM|pm)'
-
-        self.jan1 = time.localtime(time.mktime((now[0], 1, 1, 0, 0, 0, 0, 1, 0)))
-
-        try:
-            if now[8]: self.tz = time.tzname[1]
-            else: self.tz = time.tzname[0]
-        except AttributeError:
-            self.tz = ''
-
-        if now[3] > 12: self.clock12 = now[3] - 12
-        elif now[3] > 0: self.clock12 = now[3]
-        else: self.clock12 = 12
-
-        self.now = now
-
-    def setUp(self):
-        try:
-            import java
-            java.util.Locale.setDefault(java.util.Locale.US)
-        except ImportError:
-            import locale
-            locale.setlocale(locale.LC_TIME, 'C')
-
-    def test_strftime(self):
-        now = time.time()
-        self._update_variables(now)
-        self.strftest1(now)
-        self.strftest2(now)
-
-        if test_support.verbose:
-            print "Strftime test, platform: %s, Python version: %s" % \
-                  (sys.platform, sys.version.split()[0])
-
-        for j in range(-5, 5):
-            for i in range(25):
-                arg = now + (i+j*100)*23*3603
-                self._update_variables(arg)
-                self.strftest1(arg)
-                self.strftest2(arg)
-
-    def strftest1(self, now):
-        if test_support.verbose:
-            print "strftime test for", time.ctime(now)
-        now = self.now
-        # Make sure any characters that could be taken as regex syntax is
-        # escaped in escapestr()
-        expectations = (
-            ('%a', calendar.day_abbr[now[6]], 'abbreviated weekday name'),
-            ('%A', calendar.day_name[now[6]], 'full weekday name'),
-            ('%b', calendar.month_abbr[now[1]], 'abbreviated month name'),
-            ('%B', calendar.month_name[now[1]], 'full month name'),
-            # %c see below
-            ('%d', '%02d' % now[2], 'day of month as number (00-31)'),
-            ('%H', '%02d' % now[3], 'hour (00-23)'),
-            ('%I', '%02d' % self.clock12, 'hour (01-12)'),
-            ('%j', '%03d' % now[7], 'julian day (001-366)'),
-            ('%m', '%02d' % now[1], 'month as number (01-12)'),
-            ('%M', '%02d' % now[4], 'minute, (00-59)'),
-            ('%p', self.ampm, 'AM or PM as appropriate'),
-            ('%S', '%02d' % now[5], 'seconds of current time (00-60)'),
-            ('%U', '%02d' % ((now[7] + self.jan1[6])//7),
-             'week number of the year (Sun 1st)'),
-            ('%w', '0?%d' % ((1+now[6]) % 7), 'weekday as a number (Sun 1st)'),
-            ('%W', '%02d' % ((now[7] + (self.jan1[6] - 1)%7)//7),
-            'week number of the year (Mon 1st)'),
-            # %x see below
-            ('%X', '%02d:%02d:%02d' % (now[3], now[4], now[5]), '%H:%M:%S'),
-            ('%y', '%02d' % (now[0]%100), 'year without century'),
-            ('%Y', '%d' % now[0], 'year with century'),
-            # %Z see below
-            ('%%', '%', 'single percent sign'),
-        )
-
-        for e in expectations:
-            # musn't raise a value error
-            try:
-                result = time.strftime(e[0], now)
-            except ValueError, error:
-                self.fail("strftime '%s' format gave error: %s" % (e[0], error))
-            if re.match(escapestr(e[1], self.ampm), result):
-                continue
-            if not result or result[0] == '%':
-                self.fail("strftime does not support standard '%s' format (%s)"
-                          % (e[0], e[2]))
-            else:
-                self.fail("Conflict for %s (%s): expected %s, but got %s"
-                          % (e[0], e[2], e[1], result))
-
-    def strftest2(self, now):
-        nowsecs = str(long(now))[:-1]
-        now = self.now
-
-        nonstandard_expectations = (
-        # These are standard but don't have predictable output
-            ('%c', fixasctime(time.asctime(now)), 'near-asctime() format'),
-            ('%x', '%02d/%02d/%02d' % (now[1], now[2], (now[0]%100)),
-            '%m/%d/%y %H:%M:%S'),
-            ('%Z', '%s' % self.tz, 'time zone name'),
-
-            # These are some platform specific extensions
-            ('%D', '%02d/%02d/%02d' % (now[1], now[2], (now[0]%100)), 'mm/dd/yy'),
-            ('%e', '%2d' % now[2], 'day of month as number, blank padded ( 0-31)'),
-            ('%h', calendar.month_abbr[now[1]], 'abbreviated month name'),
-            ('%k', '%2d' % now[3], 'hour, blank padded ( 0-23)'),
-            ('%n', '\n', 'newline character'),
-            ('%r', '%02d:%02d:%02d %s' % (self.clock12, now[4], now[5], self.ampm),
-            '%I:%M:%S %p'),
-            ('%R', '%02d:%02d' % (now[3], now[4]), '%H:%M'),
-            ('%s', nowsecs, 'seconds since the Epoch in UCT'),
-            ('%t', '\t', 'tab character'),
-            ('%T', '%02d:%02d:%02d' % (now[3], now[4], now[5]), '%H:%M:%S'),
-            ('%3y', '%03d' % (now[0]%100),
-            'year without century rendered using fieldwidth'),
-        )
-
-        for e in nonstandard_expectations:
-            try:
-                result = time.strftime(e[0], now)
-            except ValueError, result:
-                msg = "Error for nonstandard '%s' format (%s): %s" % \
-                      (e[0], e[2], str(result))
-                if test_support.verbose:
-                    print msg
-                continue
-
-            if re.match(escapestr(e[1], self.ampm), result):
-                if test_support.verbose:
-                    print "Supports nonstandard '%s' format (%s)" % (e[0], e[2])
-            elif not result or result[0] == '%':
-                if test_support.verbose:
-                    print "Does not appear to support '%s' format (%s)" % \
-                           (e[0], e[2])
-            else:
-                if test_support.verbose:
-                    print "Conflict for nonstandard '%s' format (%s):" % \
-                           (e[0], e[2])
-                    print "  Expected %s, but got %s" % (e[1], result)
-
-def test_main():
-    test_support.run_unittest(StrftimeTest)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_string.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_string.py
deleted file mode 100644
index c029afb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_string.py
+++ /dev/null
@@ -1,217 +0,0 @@
-import unittest, string
-from test import test_support, string_tests
-from UserList import UserList
-
-class StringTest(
-    string_tests.CommonTest,
-    string_tests.MixinStrStringUserStringTest
-    ):
-
-    type2test = str
-
-    def checkequal(self, result, object, methodname, *args):
-        realresult = getattr(string, methodname)(object, *args)
-        self.assertEqual(
-            result,
-            realresult
-        )
-
-    def checkraises(self, exc, object, methodname, *args):
-        self.assertRaises(
-            exc,
-            getattr(string, methodname),
-            object,
-            *args
-        )
-
-    def checkcall(self, object, methodname, *args):
-        getattr(string, methodname)(object, *args)
-
-    def test_join(self):
-        # These are the same checks as in string_test.ObjectTest.test_join
-        # but the argument order ist different
-        self.checkequal('a b c d', ['a', 'b', 'c', 'd'], 'join', ' ')
-        self.checkequal('abcd', ('a', 'b', 'c', 'd'), 'join', '')
-        self.checkequal('w x y z', string_tests.Sequence(), 'join', ' ')
-        self.checkequal('abc', ('abc',), 'join', 'a')
-        self.checkequal('z', UserList(['z']), 'join', 'a')
-        if test_support.have_unicode:
-            self.checkequal(unicode('a.b.c'), ['a', 'b', 'c'], 'join', unicode('.'))
-            self.checkequal(unicode('a.b.c'), [unicode('a'), 'b', 'c'], 'join', '.')
-            self.checkequal(unicode('a.b.c'), ['a', unicode('b'), 'c'], 'join', '.')
-            self.checkequal(unicode('a.b.c'), ['a', 'b', unicode('c')], 'join', '.')
-            self.checkraises(TypeError, ['a', unicode('b'), 3], 'join', '.')
-        for i in [5, 25, 125]:
-            self.checkequal(
-                ((('a' * i) + '-') * i)[:-1],
-                ['a' * i] * i, 'join', '-')
-            self.checkequal(
-                ((('a' * i) + '-') * i)[:-1],
-                ('a' * i,) * i, 'join', '-')
-
-        self.checkraises(TypeError, string_tests.BadSeq1(), 'join', ' ')
-        self.checkequal('a b c', string_tests.BadSeq2(), 'join', ' ')
-        try:
-            def f():
-                yield 4 + ""
-            self.fixtype(' ').join(f())
-        except TypeError, e:
-            if '+' not in str(e):
-                self.fail('join() ate exception message')
-        else:
-            self.fail('exception not raised')
-
-
-
-
-class ModuleTest(unittest.TestCase):
-
-    def test_attrs(self):
-        string.whitespace
-        string.lowercase
-        string.uppercase
-        string.letters
-        string.digits
-        string.hexdigits
-        string.octdigits
-        string.punctuation
-        string.printable
-
-    def test_atoi(self):
-        self.assertEqual(string.atoi(" 1 "), 1)
-        self.assertRaises(ValueError, string.atoi, " 1x")
-        self.assertRaises(ValueError, string.atoi, " x1 ")
-
-    def test_atol(self):
-        self.assertEqual(string.atol("  1  "), 1L)
-        self.assertRaises(ValueError, string.atol, "  1x ")
-        self.assertRaises(ValueError, string.atol, "  x1 ")
-
-    def test_atof(self):
-        self.assertAlmostEqual(string.atof("  1  "), 1.0)
-        self.assertRaises(ValueError, string.atof, "  1x ")
-        self.assertRaises(ValueError, string.atof, "  x1 ")
-
-    def test_maketrans(self):
-        transtable = '\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037 !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`xyzdefghijklmnopqrstuvwxyz{|}~\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377'
-
-        self.assertEqual(string.maketrans('abc', 'xyz'), transtable)
-        self.assertRaises(ValueError, string.maketrans, 'abc', 'xyzq')
-
-    def test_capwords(self):
-        self.assertEqual(string.capwords('abc def ghi'), 'Abc Def Ghi')
-        self.assertEqual(string.capwords('abc\tdef\nghi'), 'Abc Def Ghi')
-        self.assertEqual(string.capwords('abc\t   def  \nghi'), 'Abc Def Ghi')
-        self.assertEqual(string.capwords('ABC DEF GHI'), 'Abc Def Ghi')
-        self.assertEqual(string.capwords('ABC-DEF-GHI', '-'), 'Abc-Def-Ghi')
-        self.assertEqual(string.capwords('ABC-def DEF-ghi GHI'), 'Abc-def Def-ghi Ghi')
-        self.assertEqual(string.capwords('   aBc  DeF   '), 'Abc Def')
-        self.assertEqual(string.capwords('\taBc\tDeF\t'), 'Abc Def')
-        self.assertEqual(string.capwords('\taBc\tDeF\t', '\t'), '\tAbc\tDef\t')
-
-    def test_formatter(self):
-        fmt = string.Formatter()
-        self.assertEqual(fmt.format("foo"), "foo")
-
-        self.assertEqual(fmt.format("foo{0}", "bar"), "foobar")
-        self.assertEqual(fmt.format("foo{1}{0}-{1}", "bar", 6), "foo6bar-6")
-        self.assertEqual(fmt.format("-{arg!r}-", arg='test'), "-'test'-")
-
-        # override get_value ############################################
-        class NamespaceFormatter(string.Formatter):
-            def __init__(self, namespace={}):
-                string.Formatter.__init__(self)
-                self.namespace = namespace
-
-            def get_value(self, key, args, kwds):
-                if isinstance(key, str):
-                    try:
-                        # Check explicitly passed arguments first
-                        return kwds[key]
-                    except KeyError:
-                        return self.namespace[key]
-                else:
-                    string.Formatter.get_value(key, args, kwds)
-
-        fmt = NamespaceFormatter({'greeting':'hello'})
-        self.assertEqual(fmt.format("{greeting}, world!"), 'hello, world!')
-
-
-        # override format_field #########################################
-        class CallFormatter(string.Formatter):
-            def format_field(self, value, format_spec):
-                return format(value(), format_spec)
-
-        fmt = CallFormatter()
-        self.assertEqual(fmt.format('*{0}*', lambda : 'result'), '*result*')
-
-
-        # override convert_field ########################################
-        class XFormatter(string.Formatter):
-            def convert_field(self, value, conversion):
-                if conversion == 'x':
-                    return None
-                return super(XFormatter, self).convert_field(value, conversion)
-
-        fmt = XFormatter()
-        self.assertEqual(fmt.format("{0!r}:{0!x}", 'foo', 'foo'), "'foo':None")
-
-
-        # override parse ################################################
-        class BarFormatter(string.Formatter):
-            # returns an iterable that contains tuples of the form:
-            # (literal_text, field_name, format_spec, conversion)
-            def parse(self, format_string):
-                for field in format_string.split('|'):
-                    if field[0] == '+':
-                        # it's markup
-                        field_name, _, format_spec = field[1:].partition(':')
-                        yield '', field_name, format_spec, None
-                    else:
-                        yield field, None, None, None
-
-        fmt = BarFormatter()
-        self.assertEqual(fmt.format('*|+0:^10s|*', 'foo'), '*   foo    *')
-
-        # test all parameters used
-        class CheckAllUsedFormatter(string.Formatter):
-            def check_unused_args(self, used_args, args, kwargs):
-                # Track which arguments actually got used
-                unused_args = set(kwargs.keys())
-                unused_args.update(range(0, len(args)))
-
-                for arg in used_args:
-                    unused_args.remove(arg)
-
-                if unused_args:
-                    raise ValueError("unused arguments")
-
-        fmt = CheckAllUsedFormatter()
-        self.assertEqual(fmt.format("{0}", 10), "10")
-        self.assertEqual(fmt.format("{0}{i}", 10, i=100), "10100")
-        self.assertEqual(fmt.format("{0}{i}{1}", 10, 20, i=100), "1010020")
-        self.assertRaises(ValueError, fmt.format, "{0}{i}{1}", 10, 20, i=100, j=0)
-        self.assertRaises(ValueError, fmt.format, "{0}", 10, 20)
-        self.assertRaises(ValueError, fmt.format, "{0}", 10, 20, i=100)
-        self.assertRaises(ValueError, fmt.format, "{i}", 10, 20, i=100)
-
-        # Alternate formatting is not supported
-        self.assertRaises(ValueError, format, '', '#')
-        self.assertRaises(ValueError, format, '', '#20')
-
-class BytesAliasTest(unittest.TestCase):
-
-    def test_builtin(self):
-        self.assertTrue(str is bytes)
-
-    def test_syntax(self):
-        self.assertEqual(b"spam", "spam")
-        self.assertEqual(br"egg\foo", "egg\\foo")
-        self.assertTrue(type(b""), str)
-        self.assertTrue(type(br""), str)
-
-def test_main():
-    test_support.run_unittest(StringTest, ModuleTest, BytesAliasTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_stringprep.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_stringprep.py
deleted file mode 100644
index d66e777..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_stringprep.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# To fully test this module, we would need a copy of the stringprep tables.
-# Since we don't have them, this test checks only a few codepoints.
-
-import unittest
-from test import test_support
-
-from stringprep import *
-
-class StringprepTests(unittest.TestCase):
-    def test(self):
-        self.assertTrue(in_table_a1(u"\u0221"))
-        self.assertFalse(in_table_a1(u"\u0222"))
-
-        self.assertTrue(in_table_b1(u"\u00ad"))
-        self.assertFalse(in_table_b1(u"\u00ae"))
-
-        self.assertTrue(map_table_b2(u"\u0041"), u"\u0061")
-        self.assertTrue(map_table_b2(u"\u0061"), u"\u0061")
-
-        self.assertTrue(map_table_b3(u"\u0041"), u"\u0061")
-        self.assertTrue(map_table_b3(u"\u0061"), u"\u0061")
-
-        self.assertTrue(in_table_c11(u"\u0020"))
-        self.assertFalse(in_table_c11(u"\u0021"))
-
-        self.assertTrue(in_table_c12(u"\u00a0"))
-        self.assertFalse(in_table_c12(u"\u00a1"))
-
-        self.assertTrue(in_table_c12(u"\u00a0"))
-        self.assertFalse(in_table_c12(u"\u00a1"))
-
-        self.assertTrue(in_table_c11_c12(u"\u00a0"))
-        self.assertFalse(in_table_c11_c12(u"\u00a1"))
-
-        self.assertTrue(in_table_c21(u"\u001f"))
-        self.assertFalse(in_table_c21(u"\u0020"))
-
-        self.assertTrue(in_table_c22(u"\u009f"))
-        self.assertFalse(in_table_c22(u"\u00a0"))
-
-        self.assertTrue(in_table_c21_c22(u"\u009f"))
-        self.assertFalse(in_table_c21_c22(u"\u00a0"))
-
-        self.assertTrue(in_table_c3(u"\ue000"))
-        self.assertFalse(in_table_c3(u"\uf900"))
-
-        self.assertTrue(in_table_c4(u"\uffff"))
-        self.assertFalse(in_table_c4(u"\u0000"))
-
-        self.assertTrue(in_table_c5(u"\ud800"))
-        self.assertFalse(in_table_c5(u"\ud7ff"))
-
-        self.assertTrue(in_table_c6(u"\ufff9"))
-        self.assertFalse(in_table_c6(u"\ufffe"))
-
-        self.assertTrue(in_table_c7(u"\u2ff0"))
-        self.assertFalse(in_table_c7(u"\u2ffc"))
-
-        self.assertTrue(in_table_c8(u"\u0340"))
-        self.assertFalse(in_table_c8(u"\u0342"))
-
-        # C.9 is not in the bmp
-        # self.assertTrue(in_table_c9(u"\U000E0001"))
-        # self.assertFalse(in_table_c8(u"\U000E0002"))
-
-        self.assertTrue(in_table_d1(u"\u05be"))
-        self.assertFalse(in_table_d1(u"\u05bf"))
-
-        self.assertTrue(in_table_d2(u"\u0041"))
-        self.assertFalse(in_table_d2(u"\u0040"))
-
-        # This would generate a hash of all predicates. However, running
-        # it is quite expensive, and only serves to detect changes in the
-        # unicode database. Instead, stringprep.py asserts the version of
-        # the database.
-
-        # import hashlib
-        # predicates = [k for k in dir(stringprep) if k.startswith("in_table")]
-        # predicates.sort()
-        # for p in predicates:
-        #     f = getattr(stringprep, p)
-        #     # Collect all BMP code points
-        #     data = ["0"] * 0x10000
-        #     for i in range(0x10000):
-        #         if f(unichr(i)):
-        #             data[i] = "1"
-        #     data = "".join(data)
-        #     h = hashlib.sha1()
-        #     h.update(data)
-        #     print p, h.hexdigest()
-
-def test_main():
-    test_support.run_unittest(StringprepTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strop.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strop.py
deleted file mode 100644
index a99f2d3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strop.py
+++ /dev/null
@@ -1,153 +0,0 @@
-import warnings
-warnings.filterwarnings("ignore", "strop functions are obsolete;",
-                        DeprecationWarning,
-                        r'test.test_strop|unittest')
-import strop
-import unittest
-from test import test_support
-
-
-class StropFunctionTestCase(unittest.TestCase):
-
-    def test_atoi(self):
-        self.assertTrue(strop.atoi(" 1 ") == 1)
-        self.assertRaises(ValueError, strop.atoi, " 1x")
-        self.assertRaises(ValueError, strop.atoi, " x1 ")
-
-    def test_atol(self):
-        self.assertTrue(strop.atol(" 1 ") == 1L)
-        self.assertRaises(ValueError, strop.atol, " 1x")
-        self.assertRaises(ValueError, strop.atol, " x1 ")
-
-    def test_atof(self):
-        self.assertTrue(strop.atof(" 1 ") == 1.0)
-        self.assertRaises(ValueError, strop.atof, " 1x")
-        self.assertRaises(ValueError, strop.atof, " x1 ")
-
-    def test_capitalize(self):
-        self.assertTrue(strop.capitalize(" hello ") == " hello ")
-        self.assertTrue(strop.capitalize("hello ") == "Hello ")
-
-    def test_find(self):
-        self.assertTrue(strop.find("abcdefghiabc", "abc") == 0)
-        self.assertTrue(strop.find("abcdefghiabc", "abc", 1) == 9)
-        self.assertTrue(strop.find("abcdefghiabc", "def", 4) == -1)
-
-    def test_rfind(self):
-        self.assertTrue(strop.rfind("abcdefghiabc", "abc") == 9)
-
-    def test_lower(self):
-        self.assertTrue(strop.lower("HeLLo") == "hello")
-
-    def test_upper(self):
-        self.assertTrue(strop.upper("HeLLo") == "HELLO")
-
-    def test_swapcase(self):
-        self.assertTrue(strop.swapcase("HeLLo cOmpUteRs") == "hEllO CoMPuTErS")
-
-    def test_strip(self):
-        self.assertTrue(strop.strip(" \t\n hello \t\n ") == "hello")
-
-    def test_lstrip(self):
-        self.assertTrue(strop.lstrip(" \t\n hello \t\n ") == "hello \t\n ")
-
-    def test_rstrip(self):
-        self.assertTrue(strop.rstrip(" \t\n hello \t\n ") == " \t\n hello")
-
-    def test_replace(self):
-        replace = strop.replace
-        self.assertTrue(replace("one!two!three!", '!', '@', 1)
-                     == "one@two!three!")
-        self.assertTrue(replace("one!two!three!", '!', '@', 2)
-                     == "one@two@three!")
-        self.assertTrue(replace("one!two!three!", '!', '@', 3)
-                     == "one@two@three@")
-        self.assertTrue(replace("one!two!three!", '!', '@', 4)
-                     == "one@two@three@")
-
-        # CAUTION: a replace count of 0 means infinity only to strop,
-        # not to the string .replace() method or to the
-        # string.replace() function.
-
-        self.assertTrue(replace("one!two!three!", '!', '@', 0)
-                     == "one@two@three@")
-        self.assertTrue(replace("one!two!three!", '!', '@')
-                     == "one@two@three@")
-        self.assertTrue(replace("one!two!three!", 'x', '@')
-                     == "one!two!three!")
-        self.assertTrue(replace("one!two!three!", 'x', '@', 2)
-                     == "one!two!three!")
-
-    def test_split(self):
-        split = strop.split
-        self.assertTrue(split("this is the split function")
-                     == ['this', 'is', 'the', 'split', 'function'])
-        self.assertTrue(split("a|b|c|d", '|') == ['a', 'b', 'c', 'd'])
-        self.assertTrue(split("a|b|c|d", '|', 2) == ['a', 'b', 'c|d'])
-        self.assertTrue(split("a b c d", None, 1) == ['a', 'b c d'])
-        self.assertTrue(split("a b c d", None, 2) == ['a', 'b', 'c d'])
-        self.assertTrue(split("a b c d", None, 3) == ['a', 'b', 'c', 'd'])
-        self.assertTrue(split("a b c d", None, 4) == ['a', 'b', 'c', 'd'])
-        self.assertTrue(split("a b c d", None, 0) == ['a', 'b', 'c', 'd'])
-        self.assertTrue(split("a  b  c  d", None, 2) ==  ['a', 'b', 'c  d'])
-
-    def test_join(self):
-        self.assertTrue(strop.join(['a', 'b', 'c', 'd']) == 'a b c d')
-        self.assertTrue(strop.join(('a', 'b', 'c', 'd'), '') == 'abcd')
-        self.assertTrue(strop.join(Sequence()) == 'w x y z')
-
-        # try a few long ones
-        self.assertTrue(strop.join(['x' * 100] * 100, ':')
-                     == (('x' * 100) + ":") * 99 + "x" * 100)
-        self.assertTrue(strop.join(('x' * 100,) * 100, ':')
-                     == (('x' * 100) + ":") * 99 + "x" * 100)
-
-    def test_maketrans(self):
-        self.assertTrue(strop.maketrans("abc", "xyz") == transtable)
-        self.assertRaises(ValueError, strop.maketrans, "abc", "xyzq")
-
-    def test_translate(self):
-        self.assertTrue(strop.translate("xyzabcdef", transtable, "def")
-                     == "xyzxyz")
-
-    def test_data_attributes(self):
-        strop.lowercase
-        strop.uppercase
-        strop.whitespace
-
-    @test_support.precisionbigmemtest(size=test_support._2G - 1, memuse=5)
-    def test_stropjoin_huge_list(self, size):
-        a = "A" * size
-        try:
-            r = strop.join([a, a], a)
-        except OverflowError:
-            pass
-        else:
-            self.assertEqual(len(r), len(a) * 3)
-
-    @test_support.precisionbigmemtest(size=test_support._2G - 1, memuse=1)
-    def test_stropjoin_huge_tup(self, size):
-        a = "A" * size
-        try:
-            r = strop.join((a, a), a)
-        except OverflowError:
-            pass # acceptable on 32-bit
-        else:
-            self.assertEqual(len(r), len(a) * 3)
-
-transtable = '\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037 !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`xyzdefghijklmnopqrstuvwxyz{|}~\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377'
-
-
-# join() now works with any sequence type.
-class Sequence:
-    def __init__(self): self.seq = 'wxyz'
-    def __len__(self): return len(self.seq)
-    def __getitem__(self, i): return self.seq[i]
-
-
-def test_main():
-    test_support.run_unittest(StropFunctionTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strptime.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strptime.py
deleted file mode 100644
index 731fad8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strptime.py
+++ /dev/null
@@ -1,562 +0,0 @@
-"""PyUnit testing against strptime"""
-
-import unittest
-import time
-import locale
-import re
-import sys
-from test import test_support
-from datetime import date as datetime_date
-
-import _strptime
-
-class getlang_Tests(unittest.TestCase):
-    """Test _getlang"""
-    def test_basic(self):
-        self.assertEqual(_strptime._getlang(), locale.getlocale(locale.LC_TIME))
-
-class LocaleTime_Tests(unittest.TestCase):
-    """Tests for _strptime.LocaleTime.
-
-    All values are lower-cased when stored in LocaleTime, so make sure to
-    compare values after running ``lower`` on them.
-
-    """
-
-    def setUp(self):
-        """Create time tuple based on current time."""
-        self.time_tuple = time.localtime()
-        self.LT_ins = _strptime.LocaleTime()
-
-    def compare_against_time(self, testing, directive, tuple_position,
-                             error_msg):
-        """Helper method that tests testing against directive based on the
-        tuple_position of time_tuple.  Uses error_msg as error message.
-
-        """
-        strftime_output = time.strftime(directive, self.time_tuple).lower()
-        comparison = testing[self.time_tuple[tuple_position]]
-        self.assertIn(strftime_output, testing,
-                      "%s: not found in tuple" % error_msg)
-        self.assertTrue(comparison == strftime_output,
-                        "%s: position within tuple incorrect; %s != %s" %
-                        (error_msg, comparison, strftime_output))
-
-    def test_weekday(self):
-        # Make sure that full and abbreviated weekday names are correct in
-        # both string and position with tuple
-        self.compare_against_time(self.LT_ins.f_weekday, '%A', 6,
-                                  "Testing of full weekday name failed")
-        self.compare_against_time(self.LT_ins.a_weekday, '%a', 6,
-                                  "Testing of abbreviated weekday name failed")
-
-    def test_month(self):
-        # Test full and abbreviated month names; both string and position
-        # within the tuple
-        self.compare_against_time(self.LT_ins.f_month, '%B', 1,
-                                  "Testing against full month name failed")
-        self.compare_against_time(self.LT_ins.a_month, '%b', 1,
-                                  "Testing against abbreviated month name failed")
-
-    def test_am_pm(self):
-        # Make sure AM/PM representation done properly
-        strftime_output = time.strftime("%p", self.time_tuple).lower()
-        self.assertIn(strftime_output, self.LT_ins.am_pm,
-                      "AM/PM representation not in tuple")
-        if self.time_tuple[3] < 12: position = 0
-        else: position = 1
-        self.assertTrue(strftime_output == self.LT_ins.am_pm[position],
-                        "AM/PM representation in the wrong position within the tuple")
-
-    def test_timezone(self):
-        # Make sure timezone is correct
-        timezone = time.strftime("%Z", self.time_tuple).lower()
-        if timezone:
-            self.assertTrue(timezone in self.LT_ins.timezone[0] or
-                            timezone in self.LT_ins.timezone[1],
-                            "timezone %s not found in %s" %
-                            (timezone, self.LT_ins.timezone))
-
-    def test_date_time(self):
-        # Check that LC_date_time, LC_date, and LC_time are correct
-        # the magic date is used so as to not have issues with %c when day of
-        #  the month is a single digit and has a leading space.  This is not an
-        #  issue since strptime still parses it correctly.  The problem is
-        #  testing these directives for correctness by comparing strftime
-        #  output.
-        magic_date = (1999, 3, 17, 22, 44, 55, 2, 76, 0)
-        strftime_output = time.strftime("%c", magic_date)
-        self.assertTrue(strftime_output == time.strftime(self.LT_ins.LC_date_time,
-                                                         magic_date),
-                        "LC_date_time incorrect")
-        strftime_output = time.strftime("%x", magic_date)
-        self.assertTrue(strftime_output == time.strftime(self.LT_ins.LC_date,
-                                                         magic_date),
-                        "LC_date incorrect")
-        strftime_output = time.strftime("%X", magic_date)
-        self.assertTrue(strftime_output == time.strftime(self.LT_ins.LC_time,
-                                                         magic_date),
-                        "LC_time incorrect")
-        LT = _strptime.LocaleTime()
-        LT.am_pm = ('', '')
-        self.assertTrue(LT.LC_time, "LocaleTime's LC directives cannot handle "
-                                    "empty strings")
-
-    def test_lang(self):
-        # Make sure lang is set to what _getlang() returns
-        # Assuming locale has not changed between now and when self.LT_ins was created
-        self.assertEqual(self.LT_ins.lang, _strptime._getlang())
-
-
-class TimeRETests(unittest.TestCase):
-    """Tests for TimeRE."""
-
-    def setUp(self):
-        """Construct generic TimeRE object."""
-        self.time_re = _strptime.TimeRE()
-        self.locale_time = _strptime.LocaleTime()
-
-    def test_pattern(self):
-        # Test TimeRE.pattern
-        pattern_string = self.time_re.pattern(r"%a %A %d")
-        self.assertTrue(pattern_string.find(self.locale_time.a_weekday[2]) != -1,
-                        "did not find abbreviated weekday in pattern string '%s'" %
-                         pattern_string)
-        self.assertTrue(pattern_string.find(self.locale_time.f_weekday[4]) != -1,
-                        "did not find full weekday in pattern string '%s'" %
-                         pattern_string)
-        self.assertTrue(pattern_string.find(self.time_re['d']) != -1,
-                        "did not find 'd' directive pattern string '%s'" %
-                         pattern_string)
-
-    def test_pattern_escaping(self):
-        # Make sure any characters in the format string that might be taken as
-        # regex syntax is escaped.
-        pattern_string = self.time_re.pattern("\d+")
-        self.assertIn(r"\\d\+", pattern_string,
-                      "%s does not have re characters escaped properly" %
-                      pattern_string)
-
-    def test_compile(self):
-        # Check that compiled regex is correct
-        found = self.time_re.compile(r"%A").match(self.locale_time.f_weekday[6])
-        self.assertTrue(found and found.group('A') == self.locale_time.f_weekday[6],
-                        "re object for '%A' failed")
-        compiled = self.time_re.compile(r"%a %b")
-        found = compiled.match("%s %s" % (self.locale_time.a_weekday[4],
-                               self.locale_time.a_month[4]))
-        self.assertTrue(found,
-            "Match failed with '%s' regex and '%s' string" %
-             (compiled.pattern, "%s %s" % (self.locale_time.a_weekday[4],
-                                           self.locale_time.a_month[4])))
-        self.assertTrue(found.group('a') == self.locale_time.a_weekday[4] and
-                         found.group('b') == self.locale_time.a_month[4],
-                        "re object couldn't find the abbreviated weekday month in "
-                         "'%s' using '%s'; group 'a' = '%s', group 'b' = %s'" %
-                         (found.string, found.re.pattern, found.group('a'),
-                          found.group('b')))
-        for directive in ('a','A','b','B','c','d','H','I','j','m','M','p','S',
-                          'U','w','W','x','X','y','Y','Z','%'):
-            compiled = self.time_re.compile("%" + directive)
-            found = compiled.match(time.strftime("%" + directive))
-            self.assertTrue(found, "Matching failed on '%s' using '%s' regex" %
-                                    (time.strftime("%" + directive),
-                                     compiled.pattern))
-
-    def test_blankpattern(self):
-        # Make sure when tuple or something has no values no regex is generated.
-        # Fixes bug #661354
-        test_locale = _strptime.LocaleTime()
-        test_locale.timezone = (frozenset(), frozenset())
-        self.assertTrue(_strptime.TimeRE(test_locale).pattern("%Z") == '',
-                        "with timezone == ('',''), TimeRE().pattern('%Z') != ''")
-
-    def test_matching_with_escapes(self):
-        # Make sure a format that requires escaping of characters works
-        compiled_re = self.time_re.compile("\w+ %m")
-        found = compiled_re.match("\w+ 10")
-        self.assertTrue(found, "Escaping failed of format '\w+ 10'")
-
-    def test_locale_data_w_regex_metacharacters(self):
-        # Check that if locale data contains regex metacharacters they are
-        # escaped properly.
-        # Discovered by bug #1039270 .
-        locale_time = _strptime.LocaleTime()
-        locale_time.timezone = (frozenset(("utc", "gmt",
-                                            "Tokyo (standard time)")),
-                                frozenset("Tokyo (daylight time)"))
-        time_re = _strptime.TimeRE(locale_time)
-        self.assertTrue(time_re.compile("%Z").match("Tokyo (standard time)"),
-                        "locale data that contains regex metacharacters is not"
-                        " properly escaped")
-
-    def test_whitespace_substitution(self):
-        # When pattern contains whitespace, make sure it is taken into account
-        # so as to not allow to subpatterns to end up next to each other and
-        # "steal" characters from each other.
-        pattern = self.time_re.pattern('%j %H')
-        self.assertTrue(not re.match(pattern, "180"))
-        self.assertTrue(re.match(pattern, "18 0"))
-
-
-class StrptimeTests(unittest.TestCase):
-    """Tests for _strptime.strptime."""
-
-    def setUp(self):
-        """Create testing time tuple."""
-        self.time_tuple = time.gmtime()
-
-    def test_ValueError(self):
-        # Make sure ValueError is raised when match fails or format is bad
-        self.assertRaises(ValueError, _strptime._strptime_time, data_string="%d",
-                          format="%A")
-        for bad_format in ("%", "% ", "%e"):
-            try:
-                _strptime._strptime_time("2005", bad_format)
-            except ValueError:
-                continue
-            except Exception, err:
-                self.fail("'%s' raised %s, not ValueError" %
-                            (bad_format, err.__class__.__name__))
-            else:
-                self.fail("'%s' did not raise ValueError" % bad_format)
-
-    def test_unconverteddata(self):
-        # Check ValueError is raised when there is unconverted data
-        self.assertRaises(ValueError, _strptime._strptime_time, "10 12", "%m")
-
-    def helper(self, directive, position):
-        """Helper fxn in testing."""
-        strf_output = time.strftime("%" + directive, self.time_tuple)
-        strp_output = _strptime._strptime_time(strf_output, "%" + directive)
-        self.assertTrue(strp_output[position] == self.time_tuple[position],
-                        "testing of '%s' directive failed; '%s' -> %s != %s" %
-                         (directive, strf_output, strp_output[position],
-                          self.time_tuple[position]))
-
-    def test_year(self):
-        # Test that the year is handled properly
-        for directive in ('y', 'Y'):
-            self.helper(directive, 0)
-        # Must also make sure %y values are correct for bounds set by Open Group
-        for century, bounds in ((1900, ('69', '99')), (2000, ('00', '68'))):
-            for bound in bounds:
-                strp_output = _strptime._strptime_time(bound, '%y')
-                expected_result = century + int(bound)
-                self.assertTrue(strp_output[0] == expected_result,
-                                "'y' test failed; passed in '%s' "
-                                "and returned '%s'" % (bound, strp_output[0]))
-
-    def test_month(self):
-        # Test for month directives
-        for directive in ('B', 'b', 'm'):
-            self.helper(directive, 1)
-
-    def test_day(self):
-        # Test for day directives
-        self.helper('d', 2)
-
-    def test_hour(self):
-        # Test hour directives
-        self.helper('H', 3)
-        strf_output = time.strftime("%I %p", self.time_tuple)
-        strp_output = _strptime._strptime_time(strf_output, "%I %p")
-        self.assertTrue(strp_output[3] == self.time_tuple[3],
-                        "testing of '%%I %%p' directive failed; '%s' -> %s != %s" %
-                         (strf_output, strp_output[3], self.time_tuple[3]))
-
-    def test_minute(self):
-        # Test minute directives
-        self.helper('M', 4)
-
-    def test_second(self):
-        # Test second directives
-        self.helper('S', 5)
-
-    def test_fraction(self):
-        # Test microseconds
-        import datetime
-        d = datetime.datetime(2012, 12, 20, 12, 34, 56, 78987)
-        tup, frac = _strptime._strptime(str(d), format="%Y-%m-%d %H:%M:%S.%f")
-        self.assertEqual(frac, d.microsecond)
-
-    def test_weekday(self):
-        # Test weekday directives
-        for directive in ('A', 'a', 'w'):
-            self.helper(directive,6)
-
-    def test_julian(self):
-        # Test julian directives
-        self.helper('j', 7)
-
-    def test_timezone(self):
-        # Test timezone directives.
-        # When gmtime() is used with %Z, entire result of strftime() is empty.
-        # Check for equal timezone names deals with bad locale info when this
-        # occurs; first found in FreeBSD 4.4.
-        strp_output = _strptime._strptime_time("UTC", "%Z")
-        self.assertEqual(strp_output.tm_isdst, 0)
-        strp_output = _strptime._strptime_time("GMT", "%Z")
-        self.assertEqual(strp_output.tm_isdst, 0)
-        time_tuple = time.localtime()
-        strf_output = time.strftime("%Z")  #UTC does not have a timezone
-        strp_output = _strptime._strptime_time(strf_output, "%Z")
-        locale_time = _strptime.LocaleTime()
-        if time.tzname[0] != time.tzname[1] or not time.daylight:
-            self.assertTrue(strp_output[8] == time_tuple[8],
-                            "timezone check failed; '%s' -> %s != %s" %
-                             (strf_output, strp_output[8], time_tuple[8]))
-        else:
-            self.assertTrue(strp_output[8] == -1,
-                            "LocaleTime().timezone has duplicate values and "
-                             "time.daylight but timezone value not set to -1")
-
-    def test_bad_timezone(self):
-        # Explicitly test possibility of bad timezone;
-        # when time.tzname[0] == time.tzname[1] and time.daylight
-        tz_name = time.tzname[0]
-        if tz_name.upper() in ("UTC", "GMT"):
-            return
-        try:
-            original_tzname = time.tzname
-            original_daylight = time.daylight
-            time.tzname = (tz_name, tz_name)
-            time.daylight = 1
-            tz_value = _strptime._strptime_time(tz_name, "%Z")[8]
-            self.assertEqual(tz_value, -1,
-                    "%s lead to a timezone value of %s instead of -1 when "
-                    "time.daylight set to %s and passing in %s" %
-                    (time.tzname, tz_value, time.daylight, tz_name))
-        finally:
-            time.tzname = original_tzname
-            time.daylight = original_daylight
-
-    def test_date_time(self):
-        # Test %c directive
-        for position in range(6):
-            self.helper('c', position)
-
-    def test_date(self):
-        # Test %x directive
-        for position in range(0,3):
-            self.helper('x', position)
-
-    def test_time(self):
-        # Test %X directive
-        for position in range(3,6):
-            self.helper('X', position)
-
-    def test_percent(self):
-        # Make sure % signs are handled properly
-        strf_output = time.strftime("%m %% %Y", self.time_tuple)
-        strp_output = _strptime._strptime_time(strf_output, "%m %% %Y")
-        self.assertTrue(strp_output[0] == self.time_tuple[0] and
-                         strp_output[1] == self.time_tuple[1],
-                        "handling of percent sign failed")
-
-    def test_caseinsensitive(self):
-        # Should handle names case-insensitively.
-        strf_output = time.strftime("%B", self.time_tuple)
-        self.assertTrue(_strptime._strptime_time(strf_output.upper(), "%B"),
-                        "strptime does not handle ALL-CAPS names properly")
-        self.assertTrue(_strptime._strptime_time(strf_output.lower(), "%B"),
-                        "strptime does not handle lowercase names properly")
-        self.assertTrue(_strptime._strptime_time(strf_output.capitalize(), "%B"),
-                        "strptime does not handle capword names properly")
-
-    def test_defaults(self):
-        # Default return value should be (1900, 1, 1, 0, 0, 0, 0, 1, 0)
-        defaults = (1900, 1, 1, 0, 0, 0, 0, 1, -1)
-        strp_output = _strptime._strptime_time('1', '%m')
-        self.assertTrue(strp_output == defaults,
-                        "Default values for strptime() are incorrect;"
-                        " %s != %s" % (strp_output, defaults))
-
-    def test_escaping(self):
-        # Make sure all characters that have regex significance are escaped.
-        # Parentheses are in a purposeful order; will cause an error of
-        # unbalanced parentheses when the regex is compiled if they are not
-        # escaped.
-        # Test instigated by bug #796149 .
-        need_escaping = ".^$*+?{}\[]|)("
-        self.assertTrue(_strptime._strptime_time(need_escaping, need_escaping))
-
-class Strptime12AMPMTests(unittest.TestCase):
-    """Test a _strptime regression in '%I %p' at 12 noon (12 PM)"""
-
-    def test_twelve_noon_midnight(self):
-        eq = self.assertEqual
-        eq(time.strptime('12 PM', '%I %p')[3], 12)
-        eq(time.strptime('12 AM', '%I %p')[3], 0)
-        eq(_strptime._strptime_time('12 PM', '%I %p')[3], 12)
-        eq(_strptime._strptime_time('12 AM', '%I %p')[3], 0)
-
-
-class JulianTests(unittest.TestCase):
-    """Test a _strptime regression that all julian (1-366) are accepted"""
-
-    def test_all_julian_days(self):
-        eq = self.assertEqual
-        for i in range(1, 367):
-            # use 2004, since it is a leap year, we have 366 days
-            eq(_strptime._strptime_time('%d 2004' % i, '%j %Y')[7], i)
-
-class CalculationTests(unittest.TestCase):
-    """Test that strptime() fills in missing info correctly"""
-
-    def setUp(self):
-        self.time_tuple = time.gmtime()
-
-    def test_julian_calculation(self):
-        # Make sure that when Julian is missing that it is calculated
-        format_string = "%Y %m %d %H %M %S %w %Z"
-        result = _strptime._strptime_time(time.strftime(format_string, self.time_tuple),
-                                    format_string)
-        self.assertTrue(result.tm_yday == self.time_tuple.tm_yday,
-                        "Calculation of tm_yday failed; %s != %s" %
-                         (result.tm_yday, self.time_tuple.tm_yday))
-
-    def test_gregorian_calculation(self):
-        # Test that Gregorian date can be calculated from Julian day
-        format_string = "%Y %H %M %S %w %j %Z"
-        result = _strptime._strptime_time(time.strftime(format_string, self.time_tuple),
-                                    format_string)
-        self.assertTrue(result.tm_year == self.time_tuple.tm_year and
-                         result.tm_mon == self.time_tuple.tm_mon and
-                         result.tm_mday == self.time_tuple.tm_mday,
-                        "Calculation of Gregorian date failed;"
-                         "%s-%s-%s != %s-%s-%s" %
-                         (result.tm_year, result.tm_mon, result.tm_mday,
-                          self.time_tuple.tm_year, self.time_tuple.tm_mon,
-                          self.time_tuple.tm_mday))
-
-    def test_day_of_week_calculation(self):
-        # Test that the day of the week is calculated as needed
-        format_string = "%Y %m %d %H %S %j %Z"
-        result = _strptime._strptime_time(time.strftime(format_string, self.time_tuple),
-                                    format_string)
-        self.assertTrue(result.tm_wday == self.time_tuple.tm_wday,
-                        "Calculation of day of the week failed;"
-                         "%s != %s" % (result.tm_wday, self.time_tuple.tm_wday))
-
-    def test_week_of_year_and_day_of_week_calculation(self):
-        # Should be able to infer date if given year, week of year (%U or %W)
-        # and day of the week
-        def test_helper(ymd_tuple, test_reason):
-            for directive in ('W', 'U'):
-                format_string = "%%Y %%%s %%w" % directive
-                dt_date = datetime_date(*ymd_tuple)
-                strp_input = dt_date.strftime(format_string)
-                strp_output = _strptime._strptime_time(strp_input, format_string)
-                self.assertTrue(strp_output[:3] == ymd_tuple,
-                        "%s(%s) test failed w/ '%s': %s != %s (%s != %s)" %
-                            (test_reason, directive, strp_input,
-                                strp_output[:3], ymd_tuple,
-                                strp_output[7], dt_date.timetuple()[7]))
-        test_helper((1901, 1, 3), "week 0")
-        test_helper((1901, 1, 8), "common case")
-        test_helper((1901, 1, 13), "day on Sunday")
-        test_helper((1901, 1, 14), "day on Monday")
-        test_helper((1905, 1, 1), "Jan 1 on Sunday")
-        test_helper((1906, 1, 1), "Jan 1 on Monday")
-        test_helper((1906, 1, 7), "first Sunday in a year starting on Monday")
-        test_helper((1905, 12, 31), "Dec 31 on Sunday")
-        test_helper((1906, 12, 31), "Dec 31 on Monday")
-        test_helper((2008, 12, 29), "Monday in the last week of the year")
-        test_helper((2008, 12, 22), "Monday in the second-to-last week of the "
-                                    "year")
-        test_helper((1978, 10, 23), "randomly chosen date")
-        test_helper((2004, 12, 18), "randomly chosen date")
-        test_helper((1978, 10, 23), "year starting and ending on Monday while "
-                                        "date not on Sunday or Monday")
-        test_helper((1917, 12, 17), "year starting and ending on Monday with "
-                                        "a Monday not at the beginning or end "
-                                        "of the year")
-        test_helper((1917, 12, 31), "Dec 31 on Monday with year starting and "
-                                        "ending on Monday")
-        test_helper((2007, 01, 07), "First Sunday of 2007")
-        test_helper((2007, 01, 14), "Second Sunday of 2007")
-        test_helper((2006, 12, 31), "Last Sunday of 2006")
-        test_helper((2006, 12, 24), "Second to last Sunday of 2006")
-
-
-class CacheTests(unittest.TestCase):
-    """Test that caching works properly."""
-
-    def test_time_re_recreation(self):
-        # Make sure cache is recreated when current locale does not match what
-        # cached object was created with.
-        _strptime._strptime_time("10", "%d")
-        _strptime._strptime_time("2005", "%Y")
-        _strptime._TimeRE_cache.locale_time.lang = "Ni"
-        original_time_re = _strptime._TimeRE_cache
-        _strptime._strptime_time("10", "%d")
-        self.assertIsNot(original_time_re, _strptime._TimeRE_cache)
-        self.assertEqual(len(_strptime._regex_cache), 1)
-
-    def test_regex_cleanup(self):
-        # Make sure cached regexes are discarded when cache becomes "full".
-        try:
-            del _strptime._regex_cache['%d']
-        except KeyError:
-            pass
-        bogus_key = 0
-        while len(_strptime._regex_cache) <= _strptime._CACHE_MAX_SIZE:
-            _strptime._regex_cache[bogus_key] = None
-            bogus_key += 1
-        _strptime._strptime_time("10", "%d")
-        self.assertEqual(len(_strptime._regex_cache), 1)
-
-    def test_new_localetime(self):
-        # A new LocaleTime instance should be created when a new TimeRE object
-        # is created.
-        locale_time_id = _strptime._TimeRE_cache.locale_time
-        _strptime._TimeRE_cache.locale_time.lang = "Ni"
-        _strptime._strptime_time("10", "%d")
-        self.assertIsNot(locale_time_id, _strptime._TimeRE_cache.locale_time)
-
-    def test_TimeRE_recreation(self):
-        # The TimeRE instance should be recreated upon changing the locale.
-        locale_info = locale.getlocale(locale.LC_TIME)
-        try:
-            locale.setlocale(locale.LC_TIME, ('en_US', 'UTF8'))
-        except locale.Error:
-            return
-        try:
-            _strptime._strptime_time('10', '%d')
-            # Get id of current cache object.
-            first_time_re = _strptime._TimeRE_cache
-            try:
-                # Change the locale and force a recreation of the cache.
-                locale.setlocale(locale.LC_TIME, ('de_DE', 'UTF8'))
-                _strptime._strptime_time('10', '%d')
-                # Get the new cache object's id.
-                second_time_re = _strptime._TimeRE_cache
-                # They should not be equal.
-                self.assertIsNot(first_time_re, second_time_re)
-            # Possible test locale is not supported while initial locale is.
-            # If this is the case just suppress the exception and fall-through
-            # to the resetting to the original locale.
-            except locale.Error:
-                pass
-        # Make sure we don't trample on the locale setting once we leave the
-        # test.
-        finally:
-            locale.setlocale(locale.LC_TIME, locale_info)
-
-
-def test_main():
-    test_support.run_unittest(
-        getlang_Tests,
-        LocaleTime_Tests,
-        TimeRETests,
-        StrptimeTests,
-        Strptime12AMPMTests,
-        JulianTests,
-        CalculationTests,
-        CacheTests
-    )
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strtod.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strtod.py
deleted file mode 100644
index 986fb50..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_strtod.py
+++ /dev/null
@@ -1,399 +0,0 @@
-# Tests for the correctly-rounded string -> float conversions
-# introduced in Python 2.7 and 3.1.
-
-import random
-import struct
-import unittest
-import re
-import sys
-from test import test_support
-
-if getattr(sys, 'float_repr_style', '') != 'short':
-    raise unittest.SkipTest('correctly-rounded string->float conversions '
-                            'not available on this system')
-
-# Correctly rounded str -> float in pure Python, for comparison.
-
-strtod_parser = re.compile(r"""    # A numeric string consists of:
-    (?P<sign>[-+])?          # an optional sign, followed by
-    (?=\d|\.\d)              # a number with at least one digit
-    (?P<int>\d*)             # having a (possibly empty) integer part
-    (?:\.(?P<frac>\d*))?     # followed by an optional fractional part
-    (?:E(?P<exp>[-+]?\d+))?  # and an optional exponent
-    \Z
-""", re.VERBOSE | re.IGNORECASE).match
-
-# Pure Python version of correctly rounded string->float conversion.
-# Avoids any use of floating-point by returning the result as a hex string.
-def strtod(s, mant_dig=53, min_exp = -1021, max_exp = 1024):
-    """Convert a finite decimal string to a hex string representing an
-    IEEE 754 binary64 float.  Return 'inf' or '-inf' on overflow.
-    This function makes no use of floating-point arithmetic at any
-    stage."""
-
-    # parse string into a pair of integers 'a' and 'b' such that
-    # abs(decimal value) = a/b, along with a boolean 'negative'.
-    m = strtod_parser(s)
-    if m is None:
-        raise ValueError('invalid numeric string')
-    fraction = m.group('frac') or ''
-    intpart = int(m.group('int') + fraction)
-    exp = int(m.group('exp') or '0') - len(fraction)
-    negative = m.group('sign') == '-'
-    a, b = intpart*10**max(exp, 0), 10**max(0, -exp)
-
-    # quick return for zeros
-    if not a:
-        return '-0x0.0p+0' if negative else '0x0.0p+0'
-
-    # compute exponent e for result; may be one too small in the case
-    # that the rounded value of a/b lies in a different binade from a/b
-    d = a.bit_length() - b.bit_length()
-    d += (a >> d if d >= 0 else a << -d) >= b
-    e = max(d, min_exp) - mant_dig
-
-    # approximate a/b by number of the form q * 2**e; adjust e if necessary
-    a, b = a << max(-e, 0), b << max(e, 0)
-    q, r = divmod(a, b)
-    if 2*r > b or 2*r == b and q & 1:
-        q += 1
-        if q.bit_length() == mant_dig+1:
-            q //= 2
-            e += 1
-
-    # double check that (q, e) has the right form
-    assert q.bit_length() <= mant_dig and e >= min_exp - mant_dig
-    assert q.bit_length() == mant_dig or e == min_exp - mant_dig
-
-    # check for overflow and underflow
-    if e + q.bit_length() > max_exp:
-        return '-inf' if negative else 'inf'
-    if not q:
-        return '-0x0.0p+0' if negative else '0x0.0p+0'
-
-    # for hex representation, shift so # bits after point is a multiple of 4
-    hexdigs = 1 + (mant_dig-2)//4
-    shift = 3 - (mant_dig-2)%4
-    q, e = q << shift, e - shift
-    return '{}0x{:x}.{:0{}x}p{:+d}'.format(
-        '-' if negative else '',
-        q // 16**hexdigs,
-        q % 16**hexdigs,
-        hexdigs,
-        e + 4*hexdigs)
-
-TEST_SIZE = 10
-
-class StrtodTests(unittest.TestCase):
-    def check_strtod(self, s):
-        """Compare the result of Python's builtin correctly rounded
-        string->float conversion (using float) to a pure Python
-        correctly rounded string->float implementation.  Fail if the
-        two methods give different results."""
-
-        try:
-            fs = float(s)
-        except OverflowError:
-            got = '-inf' if s[0] == '-' else 'inf'
-        except MemoryError:
-            got = 'memory error'
-        else:
-            got = fs.hex()
-        expected = strtod(s)
-        self.assertEqual(expected, got,
-                         "Incorrectly rounded str->float conversion for {}: "
-                         "expected {}, got {}".format(s, expected, got))
-
-    def test_short_halfway_cases(self):
-        # exact halfway cases with a small number of significant digits
-        for k in 0, 5, 10, 15, 20:
-            # upper = smallest integer >= 2**54/5**k
-            upper = -(-2**54//5**k)
-            # lower = smallest odd number >= 2**53/5**k
-            lower = -(-2**53//5**k)
-            if lower % 2 == 0:
-                lower += 1
-            for i in xrange(TEST_SIZE):
-                # Select a random odd n in [2**53/5**k,
-                # 2**54/5**k). Then n * 10**k gives a halfway case
-                # with small number of significant digits.
-                n, e = random.randrange(lower, upper, 2), k
-
-                # Remove any additional powers of 5.
-                while n % 5 == 0:
-                    n, e = n // 5, e + 1
-                assert n % 10 in (1, 3, 7, 9)
-
-                # Try numbers of the form n * 2**p2 * 10**e, p2 >= 0,
-                # until n * 2**p2 has more than 20 significant digits.
-                digits, exponent = n, e
-                while digits < 10**20:
-                    s = '{}e{}'.format(digits, exponent)
-                    self.check_strtod(s)
-                    # Same again, but with extra trailing zeros.
-                    s = '{}e{}'.format(digits * 10**40, exponent - 40)
-                    self.check_strtod(s)
-                    digits *= 2
-
-                # Try numbers of the form n * 5**p2 * 10**(e - p5), p5
-                # >= 0, with n * 5**p5 < 10**20.
-                digits, exponent = n, e
-                while digits < 10**20:
-                    s = '{}e{}'.format(digits, exponent)
-                    self.check_strtod(s)
-                    # Same again, but with extra trailing zeros.
-                    s = '{}e{}'.format(digits * 10**40, exponent - 40)
-                    self.check_strtod(s)
-                    digits *= 5
-                    exponent -= 1
-
-    def test_halfway_cases(self):
-        # test halfway cases for the round-half-to-even rule
-        for i in xrange(100 * TEST_SIZE):
-            # bit pattern for a random finite positive (or +0.0) float
-            bits = random.randrange(2047*2**52)
-
-            # convert bit pattern to a number of the form m * 2**e
-            e, m = divmod(bits, 2**52)
-            if e:
-                m, e = m + 2**52, e - 1
-            e -= 1074
-
-            # add 0.5 ulps
-            m, e = 2*m + 1, e - 1
-
-            # convert to a decimal string
-            if e >= 0:
-                digits = m << e
-                exponent = 0
-            else:
-                # m * 2**e = (m * 5**-e) * 10**e
-                digits = m * 5**-e
-                exponent = e
-            s = '{}e{}'.format(digits, exponent)
-            self.check_strtod(s)
-
-    def test_boundaries(self):
-        # boundaries expressed as triples (n, e, u), where
-        # n*10**e is an approximation to the boundary value and
-        # u*10**e is 1ulp
-        boundaries = [
-            (10000000000000000000, -19, 1110),   # a power of 2 boundary (1.0)
-            (17976931348623159077, 289, 1995),   # overflow boundary (2.**1024)
-            (22250738585072013831, -327, 4941),  # normal/subnormal (2.**-1022)
-            (0, -327, 4941),                     # zero
-            ]
-        for n, e, u in boundaries:
-            for j in xrange(1000):
-                digits = n + random.randrange(-3*u, 3*u)
-                exponent = e
-                s = '{}e{}'.format(digits, exponent)
-                self.check_strtod(s)
-                n *= 10
-                u *= 10
-                e -= 1
-
-    def test_underflow_boundary(self):
-        # test values close to 2**-1075, the underflow boundary; similar
-        # to boundary_tests, except that the random error doesn't scale
-        # with n
-        for exponent in xrange(-400, -320):
-            base = 10**-exponent // 2**1075
-            for j in xrange(TEST_SIZE):
-                digits = base + random.randrange(-1000, 1000)
-                s = '{}e{}'.format(digits, exponent)
-                self.check_strtod(s)
-
-    def test_bigcomp(self):
-        for ndigs in 5, 10, 14, 15, 16, 17, 18, 19, 20, 40, 41, 50:
-            dig10 = 10**ndigs
-            for i in xrange(10 * TEST_SIZE):
-                digits = random.randrange(dig10)
-                exponent = random.randrange(-400, 400)
-                s = '{}e{}'.format(digits, exponent)
-                self.check_strtod(s)
-
-    def test_parsing(self):
-        # make '0' more likely to be chosen than other digits
-        digits = '000000123456789'
-        signs = ('+', '-', '')
-
-        # put together random short valid strings
-        # \d*[.\d*]?e
-        for i in xrange(1000):
-            for j in xrange(TEST_SIZE):
-                s = random.choice(signs)
-                intpart_len = random.randrange(5)
-                s += ''.join(random.choice(digits) for _ in xrange(intpart_len))
-                if random.choice([True, False]):
-                    s += '.'
-                    fracpart_len = random.randrange(5)
-                    s += ''.join(random.choice(digits)
-                                 for _ in xrange(fracpart_len))
-                else:
-                    fracpart_len = 0
-                if random.choice([True, False]):
-                    s += random.choice(['e', 'E'])
-                    s += random.choice(signs)
-                    exponent_len = random.randrange(1, 4)
-                    s += ''.join(random.choice(digits)
-                                 for _ in xrange(exponent_len))
-
-                if intpart_len + fracpart_len:
-                    self.check_strtod(s)
-                else:
-                    try:
-                        float(s)
-                    except ValueError:
-                        pass
-                    else:
-                        assert False, "expected ValueError"
-
-    def test_particular(self):
-        # inputs that produced crashes or incorrectly rounded results with
-        # previous versions of dtoa.c, for various reasons
-        test_strings = [
-            # issue 7632 bug 1, originally reported failing case
-            '2183167012312112312312.23538020374420446192e-370',
-            # 5 instances of issue 7632 bug 2
-            '12579816049008305546974391768996369464963024663104e-357',
-            '17489628565202117263145367596028389348922981857013e-357',
-            '18487398785991994634182916638542680759613590482273e-357',
-            '32002864200581033134358724675198044527469366773928e-358',
-            '94393431193180696942841837085033647913224148539854e-358',
-            '73608278998966969345824653500136787876436005957953e-358',
-            '64774478836417299491718435234611299336288082136054e-358',
-            '13704940134126574534878641876947980878824688451169e-357',
-            '46697445774047060960624497964425416610480524760471e-358',
-            # failing case for bug introduced by METD in r77451 (attempted
-            # fix for issue 7632, bug 2), and fixed in r77482.
-            '28639097178261763178489759107321392745108491825303e-311',
-            # two numbers demonstrating a flaw in the bigcomp 'dig == 0'
-            # correction block (issue 7632, bug 3)
-            '1.00000000000000001e44',
-            '1.0000000000000000100000000000000000000001e44',
-            # dtoa.c bug for numbers just smaller than a power of 2 (issue
-            # 7632, bug 4)
-            '99999999999999994487665465554760717039532578546e-47',
-            # failing case for off-by-one error introduced by METD in
-            # r77483 (dtoa.c cleanup), fixed in r77490
-            '965437176333654931799035513671997118345570045914469' #...
-            '6213413350821416312194420007991306908470147322020121018368e0',
-            # incorrect lsb detection for round-half-to-even when
-            # bc->scale != 0 (issue 7632, bug 6).
-            '104308485241983990666713401708072175773165034278685' #...
-            '682646111762292409330928739751702404658197872319129' #...
-            '036519947435319418387839758990478549477777586673075' #...
-            '945844895981012024387992135617064532141489278815239' #...
-            '849108105951619997829153633535314849999674266169258' #...
-            '928940692239684771590065027025835804863585454872499' #...
-            '320500023126142553932654370362024104462255244034053' #...
-            '203998964360882487378334860197725139151265590832887' #...
-            '433736189468858614521708567646743455601905935595381' #...
-            '852723723645799866672558576993978025033590728687206' #...
-            '296379801363024094048327273913079612469982585674824' #...
-            '156000783167963081616214710691759864332339239688734' #...
-            '656548790656486646106983450809073750535624894296242' #...
-            '072010195710276073042036425579852459556183541199012' #...
-            '652571123898996574563824424330960027873516082763671875e-1075',
-            # demonstration that original fix for issue 7632 bug 1 was
-            # buggy; the exit condition was too strong
-            '247032822920623295e-341',
-            # demonstrate similar problem to issue 7632 bug1: crash
-            # with 'oversized quotient in quorem' message.
-            '99037485700245683102805043437346965248029601286431e-373',
-            '99617639833743863161109961162881027406769510558457e-373',
-            '98852915025769345295749278351563179840130565591462e-372',
-            '99059944827693569659153042769690930905148015876788e-373',
-            '98914979205069368270421829889078356254059760327101e-372',
-            # issue 7632 bug 5: the following 2 strings convert differently
-            '1000000000000000000000000000000000000000e-16',
-            '10000000000000000000000000000000000000000e-17',
-            # issue 7632 bug 7
-            '991633793189150720000000000000000000000000000000000000000e-33',
-            # And another, similar, failing halfway case
-            '4106250198039490000000000000000000000000000000000000000e-38',
-            # issue 7632 bug 8:  the following produced 10.0
-            '10.900000000000000012345678912345678912345',
-
-            # two humongous values from issue 7743
-            '116512874940594195638617907092569881519034793229385' #...
-            '228569165191541890846564669771714896916084883987920' #...
-            '473321268100296857636200926065340769682863349205363' #...
-            '349247637660671783209907949273683040397979984107806' #...
-            '461822693332712828397617946036239581632976585100633' #...
-            '520260770761060725403904123144384571612073732754774' #...
-            '588211944406465572591022081973828448927338602556287' #...
-            '851831745419397433012491884869454462440536895047499' #...
-            '436551974649731917170099387762871020403582994193439' #...
-            '761933412166821484015883631622539314203799034497982' #...
-            '130038741741727907429575673302461380386596501187482' #...
-            '006257527709842179336488381672818798450229339123527' #...
-            '858844448336815912020452294624916993546388956561522' #...
-            '161875352572590420823607478788399460162228308693742' #...
-            '05287663441403533948204085390898399055004119873046875e-1075',
-
-            '525440653352955266109661060358202819561258984964913' #...
-            '892256527849758956045218257059713765874251436193619' #...
-            '443248205998870001633865657517447355992225852945912' #...
-            '016668660000210283807209850662224417504752264995360' #...
-            '631512007753855801075373057632157738752800840302596' #...
-            '237050247910530538250008682272783660778181628040733' #...
-            '653121492436408812668023478001208529190359254322340' #...
-            '397575185248844788515410722958784640926528544043090' #...
-            '115352513640884988017342469275006999104519620946430' #...
-            '818767147966495485406577703972687838176778993472989' #...
-            '561959000047036638938396333146685137903018376496408' #...
-            '319705333868476925297317136513970189073693314710318' #...
-            '991252811050501448326875232850600451776091303043715' #...
-            '157191292827614046876950225714743118291034780466325' #...
-            '085141343734564915193426994587206432697337118211527' #...
-            '278968731294639353354774788602467795167875117481660' #...
-            '4738791256853675690543663283782215866825e-1180',
-
-            # exercise exit conditions in bigcomp comparison loop
-            '2602129298404963083833853479113577253105939995688e2',
-            '260212929840496308383385347911357725310593999568896e0',
-            '26021292984049630838338534791135772531059399956889601e-2',
-            '260212929840496308383385347911357725310593999568895e0',
-            '260212929840496308383385347911357725310593999568897e0',
-            '260212929840496308383385347911357725310593999568996e0',
-            '260212929840496308383385347911357725310593999568866e0',
-            # 2**53
-            '9007199254740992.00',
-            # 2**1024 - 2**970:  exact overflow boundary.  All values
-            # smaller than this should round to something finite;  any value
-            # greater than or equal to this one overflows.
-            '179769313486231580793728971405303415079934132710037' #...
-            '826936173778980444968292764750946649017977587207096' #...
-            '330286416692887910946555547851940402630657488671505' #...
-            '820681908902000708383676273854845817711531764475730' #...
-            '270069855571366959622842914819860834936475292719074' #...
-            '168444365510704342711559699508093042880177904174497792',
-            # 2**1024 - 2**970 - tiny
-            '179769313486231580793728971405303415079934132710037' #...
-            '826936173778980444968292764750946649017977587207096' #...
-            '330286416692887910946555547851940402630657488671505' #...
-            '820681908902000708383676273854845817711531764475730' #...
-            '270069855571366959622842914819860834936475292719074' #...
-            '168444365510704342711559699508093042880177904174497791.999',
-            # 2**1024 - 2**970 + tiny
-            '179769313486231580793728971405303415079934132710037' #...
-            '826936173778980444968292764750946649017977587207096' #...
-            '330286416692887910946555547851940402630657488671505' #...
-            '820681908902000708383676273854845817711531764475730' #...
-            '270069855571366959622842914819860834936475292719074' #...
-            '168444365510704342711559699508093042880177904174497792.001',
-            # 1 - 2**-54, +-tiny
-            '999999999999999944488848768742172978818416595458984375e-54',
-            '9999999999999999444888487687421729788184165954589843749999999e-54',
-            '9999999999999999444888487687421729788184165954589843750000001e-54',
-            ]
-        for s in test_strings:
-            self.check_strtod(s)
-
-def test_main():
-    test_support.run_unittest(StrtodTests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_struct.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_struct.py
deleted file mode 100644
index 1315b62..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_struct.py
+++ /dev/null
@@ -1,551 +0,0 @@
-import os
-import array
-import unittest
-import struct
-import inspect
-from test.test_support import run_unittest, check_warnings, check_py3k_warnings
-
-import sys
-ISBIGENDIAN = sys.byteorder == "big"
-IS32BIT = sys.maxsize == 0x7fffffff
-
-integer_codes = 'b', 'B', 'h', 'H', 'i', 'I', 'l', 'L', 'q', 'Q'
-
-testmod_filename = os.path.splitext(__file__)[0] + '.py'
-# Native 'q' packing isn't available on systems that don't have the C
-# long long type.
-try:
-    struct.pack('q', 5)
-except struct.error:
-    HAVE_LONG_LONG = False
-else:
-    HAVE_LONG_LONG = True
-
-def string_reverse(s):
-    return "".join(reversed(s))
-
-def bigendian_to_native(value):
-    if ISBIGENDIAN:
-        return value
-    else:
-        return string_reverse(value)
-
-class StructTest(unittest.TestCase):
-
-    def check_float_coerce(self, format, number):
-        # SF bug 1530559. struct.pack raises TypeError where it used
-        # to convert.
-        with check_warnings((".*integer argument expected, got float",
-                             DeprecationWarning)) as w:
-            got = struct.pack(format, number)
-        lineno = inspect.currentframe().f_lineno - 1
-        self.assertEqual(w.filename, testmod_filename)
-        self.assertEqual(w.lineno, lineno)
-        self.assertEqual(len(w.warnings), 1)
-        expected = struct.pack(format, int(number))
-        self.assertEqual(got, expected)
-
-    def test_isbigendian(self):
-        self.assertEqual((struct.pack('=i', 1)[0] == chr(0)), ISBIGENDIAN)
-
-    def test_consistence(self):
-        self.assertRaises(struct.error, struct.calcsize, 'Z')
-
-        sz = struct.calcsize('i')
-        self.assertEqual(sz * 3, struct.calcsize('iii'))
-
-        fmt = 'cbxxxxxxhhhhiillffd?'
-        fmt3 = '3c3b18x12h6i6l6f3d3?'
-        sz = struct.calcsize(fmt)
-        sz3 = struct.calcsize(fmt3)
-        self.assertEqual(sz * 3, sz3)
-
-        self.assertRaises(struct.error, struct.pack, 'iii', 3)
-        self.assertRaises(struct.error, struct.pack, 'i', 3, 3, 3)
-        self.assertRaises((TypeError, struct.error), struct.pack, 'i', 'foo')
-        self.assertRaises((TypeError, struct.error), struct.pack, 'P', 'foo')
-        self.assertRaises(struct.error, struct.unpack, 'd', 'flap')
-        s = struct.pack('ii', 1, 2)
-        self.assertRaises(struct.error, struct.unpack, 'iii', s)
-        self.assertRaises(struct.error, struct.unpack, 'i', s)
-
-    def test_transitiveness(self):
-        c = 'a'
-        b = 1
-        h = 255
-        i = 65535
-        l = 65536
-        f = 3.1415
-        d = 3.1415
-        t = True
-
-        for prefix in ('', '@', '<', '>', '=', '!'):
-            for format in ('xcbhilfd?', 'xcBHILfd?'):
-                format = prefix + format
-                s = struct.pack(format, c, b, h, i, l, f, d, t)
-                cp, bp, hp, ip, lp, fp, dp, tp = struct.unpack(format, s)
-                self.assertEqual(cp, c)
-                self.assertEqual(bp, b)
-                self.assertEqual(hp, h)
-                self.assertEqual(ip, i)
-                self.assertEqual(lp, l)
-                self.assertEqual(int(100 * fp), int(100 * f))
-                self.assertEqual(int(100 * dp), int(100 * d))
-                self.assertEqual(tp, t)
-
-    def test_new_features(self):
-        # Test some of the new features in detail
-        # (format, argument, big-endian result, little-endian result, asymmetric)
-        tests = [
-            ('c', 'a', 'a', 'a', 0),
-            ('xc', 'a', '\0a', '\0a', 0),
-            ('cx', 'a', 'a\0', 'a\0', 0),
-            ('s', 'a', 'a', 'a', 0),
-            ('0s', 'helloworld', '', '', 1),
-            ('1s', 'helloworld', 'h', 'h', 1),
-            ('9s', 'helloworld', 'helloworl', 'helloworl', 1),
-            ('10s', 'helloworld', 'helloworld', 'helloworld', 0),
-            ('11s', 'helloworld', 'helloworld\0', 'helloworld\0', 1),
-            ('20s', 'helloworld', 'helloworld'+10*'\0', 'helloworld'+10*'\0', 1),
-            ('b', 7, '\7', '\7', 0),
-            ('b', -7, '\371', '\371', 0),
-            ('B', 7, '\7', '\7', 0),
-            ('B', 249, '\371', '\371', 0),
-            ('h', 700, '\002\274', '\274\002', 0),
-            ('h', -700, '\375D', 'D\375', 0),
-            ('H', 700, '\002\274', '\274\002', 0),
-            ('H', 0x10000-700, '\375D', 'D\375', 0),
-            ('i', 70000000, '\004,\035\200', '\200\035,\004', 0),
-            ('i', -70000000, '\373\323\342\200', '\200\342\323\373', 0),
-            ('I', 70000000L, '\004,\035\200', '\200\035,\004', 0),
-            ('I', 0x100000000L-70000000, '\373\323\342\200', '\200\342\323\373', 0),
-            ('l', 70000000, '\004,\035\200', '\200\035,\004', 0),
-            ('l', -70000000, '\373\323\342\200', '\200\342\323\373', 0),
-            ('L', 70000000L, '\004,\035\200', '\200\035,\004', 0),
-            ('L', 0x100000000L-70000000, '\373\323\342\200', '\200\342\323\373', 0),
-            ('f', 2.0, '@\000\000\000', '\000\000\000@', 0),
-            ('d', 2.0, '@\000\000\000\000\000\000\000',
-                       '\000\000\000\000\000\000\000@', 0),
-            ('f', -2.0, '\300\000\000\000', '\000\000\000\300', 0),
-            ('d', -2.0, '\300\000\000\000\000\000\000\000',
-                       '\000\000\000\000\000\000\000\300', 0),
-                ('?', 0, '\0', '\0', 0),
-                ('?', 3, '\1', '\1', 1),
-                ('?', True, '\1', '\1', 0),
-                ('?', [], '\0', '\0', 1),
-                ('?', (1,), '\1', '\1', 1),
-        ]
-
-        for fmt, arg, big, lil, asy in tests:
-            for (xfmt, exp) in [('>'+fmt, big), ('!'+fmt, big), ('<'+fmt, lil),
-                                ('='+fmt, ISBIGENDIAN and big or lil)]:
-                res = struct.pack(xfmt, arg)
-                self.assertEqual(res, exp)
-                self.assertEqual(struct.calcsize(xfmt), len(res))
-                rev = struct.unpack(xfmt, res)[0]
-                if rev != arg:
-                    self.assertTrue(asy)
-
-    def test_calcsize(self):
-        expected_size = {
-            'b': 1, 'B': 1,
-            'h': 2, 'H': 2,
-            'i': 4, 'I': 4,
-            'l': 4, 'L': 4,
-            'q': 8, 'Q': 8,
-            }
-
-        # standard integer sizes
-        for code in integer_codes:
-            for byteorder in ('=', '<', '>', '!'):
-                format = byteorder+code
-                size = struct.calcsize(format)
-                self.assertEqual(size, expected_size[code])
-
-        # native integer sizes, except 'q' and 'Q'
-        for format_pair in ('bB', 'hH', 'iI', 'lL'):
-            for byteorder in ['', '@']:
-                signed_size = struct.calcsize(byteorder + format_pair[0])
-                unsigned_size = struct.calcsize(byteorder + format_pair[1])
-                self.assertEqual(signed_size, unsigned_size)
-
-        # bounds for native integer sizes
-        self.assertEqual(struct.calcsize('b'), 1)
-        self.assertLessEqual(2, struct.calcsize('h'))
-        self.assertLessEqual(4, struct.calcsize('l'))
-        self.assertLessEqual(struct.calcsize('h'), struct.calcsize('i'))
-        self.assertLessEqual(struct.calcsize('i'), struct.calcsize('l'))
-
-        # tests for native 'q' and 'Q' when applicable
-        if HAVE_LONG_LONG:
-            self.assertEqual(struct.calcsize('q'), struct.calcsize('Q'))
-            self.assertLessEqual(8, struct.calcsize('q'))
-            self.assertLessEqual(struct.calcsize('l'), struct.calcsize('q'))
-
-    def test_integers(self):
-        # Integer tests (bBhHiIlLqQ).
-        import binascii
-
-        class IntTester(unittest.TestCase):
-            def __init__(self, format):
-                super(IntTester, self).__init__(methodName='test_one')
-                self.format = format
-                self.code = format[-1]
-                self.direction = format[:-1]
-                if not self.direction in ('', '@', '=', '<', '>', '!'):
-                    raise ValueError("unrecognized packing direction: %s" %
-                                     self.direction)
-                self.bytesize = struct.calcsize(format)
-                self.bitsize = self.bytesize * 8
-                if self.code in tuple('bhilq'):
-                    self.signed = True
-                    self.min_value = -(2L**(self.bitsize-1))
-                    self.max_value = 2L**(self.bitsize-1) - 1
-                elif self.code in tuple('BHILQ'):
-                    self.signed = False
-                    self.min_value = 0
-                    self.max_value = 2L**self.bitsize - 1
-                else:
-                    raise ValueError("unrecognized format code: %s" %
-                                     self.code)
-
-            def test_one(self, x, pack=struct.pack,
-                                  unpack=struct.unpack,
-                                  unhexlify=binascii.unhexlify):
-
-                format = self.format
-                if self.min_value <= x <= self.max_value:
-                    expected = long(x)
-                    if self.signed and x < 0:
-                        expected += 1L << self.bitsize
-                    self.assertGreaterEqual(expected, 0)
-                    expected = '%x' % expected
-                    if len(expected) & 1:
-                        expected = "0" + expected
-                    expected = unhexlify(expected)
-                    expected = ("\x00" * (self.bytesize - len(expected)) +
-                                expected)
-                    if (self.direction == '<' or
-                        self.direction in ('', '@', '=') and not ISBIGENDIAN):
-                        expected = string_reverse(expected)
-                    self.assertEqual(len(expected), self.bytesize)
-
-                    # Pack work?
-                    got = pack(format, x)
-                    self.assertEqual(got, expected)
-
-                    # Unpack work?
-                    retrieved = unpack(format, got)[0]
-                    self.assertEqual(x, retrieved)
-
-                    # Adding any byte should cause a "too big" error.
-                    self.assertRaises((struct.error, TypeError), unpack, format,
-                                                                 '\x01' + got)
-                else:
-                    # x is out of range -- verify pack realizes that.
-                    self.assertRaises((OverflowError, ValueError, struct.error),
-                                      pack, format, x)
-
-            def run(self):
-                from random import randrange
-
-                # Create all interesting powers of 2.
-                values = []
-                for exp in range(self.bitsize + 3):
-                    values.append(1L << exp)
-
-                # Add some random values.
-                for i in range(self.bitsize):
-                    val = 0L
-                    for j in range(self.bytesize):
-                        val = (val << 8) | randrange(256)
-                    values.append(val)
-
-                # Values absorbed from other tests
-                values.extend([300, 700000, sys.maxint*4])
-
-                # Try all those, and their negations, and +-1 from
-                # them.  Note that this tests all power-of-2
-                # boundaries in range, and a few out of range, plus
-                # +-(2**n +- 1).
-                for base in values:
-                    for val in -base, base:
-                        for incr in -1, 0, 1:
-                            x = val + incr
-                            self.test_one(int(x))
-                            self.test_one(long(x))
-
-                # Some error cases.
-                class NotAnIntNS(object):
-                    def __int__(self):
-                        return 42
-
-                    def __long__(self):
-                        return 1729L
-
-                class NotAnIntOS:
-                    def __int__(self):
-                        return 85
-
-                    def __long__(self):
-                        return -163L
-
-                # Objects with an '__index__' method should be allowed
-                # to pack as integers.  That is assuming the implemented
-                # '__index__' method returns and 'int' or 'long'.
-                class Indexable(object):
-                    def __init__(self, value):
-                        self._value = value
-
-                    def __index__(self):
-                        return self._value
-
-                # If the '__index__' method raises a type error, then
-                # '__int__' should be used with a deprecation warning.
-                class BadIndex(object):
-                    def __index__(self):
-                        raise TypeError
-
-                    def __int__(self):
-                        return 42
-
-                self.assertRaises((TypeError, struct.error),
-                                  struct.pack, self.format,
-                                  "a string")
-                self.assertRaises((TypeError, struct.error),
-                                  struct.pack, self.format,
-                                  randrange)
-                with check_warnings(("integer argument expected, "
-                                     "got non-integer", DeprecationWarning)):
-                    with self.assertRaises((TypeError, struct.error)):
-                        struct.pack(self.format, 3+42j)
-
-                # an attempt to convert a non-integer (with an
-                # implicit conversion via __int__) should succeed,
-                # with a DeprecationWarning
-                for nonint in NotAnIntNS(), NotAnIntOS(), BadIndex():
-                    with check_warnings((".*integer argument expected, got non"
-                                         "-integer", DeprecationWarning)) as w:
-                        got = struct.pack(self.format, nonint)
-                    lineno = inspect.currentframe().f_lineno - 1
-                    self.assertEqual(w.filename, testmod_filename)
-                    self.assertEqual(w.lineno, lineno)
-                    self.assertEqual(len(w.warnings), 1)
-                    expected = struct.pack(self.format, int(nonint))
-                    self.assertEqual(got, expected)
-
-                # Check for legitimate values from '__index__'.
-                for obj in (Indexable(0), Indexable(10), Indexable(17),
-                            Indexable(42), Indexable(100), Indexable(127)):
-                    try:
-                        struct.pack(format, obj)
-                    except:
-                        self.fail("integer code pack failed on object "
-                                  "with '__index__' method")
-
-                # Check for bogus values from '__index__'.
-                for obj in (Indexable('a'), Indexable(u'b'), Indexable(None),
-                            Indexable({'a': 1}), Indexable([1, 2, 3])):
-                    self.assertRaises((TypeError, struct.error),
-                                      struct.pack, self.format,
-                                      obj)
-
-        byteorders = '', '@', '=', '<', '>', '!'
-        for code in integer_codes:
-            for byteorder in byteorders:
-                if (byteorder in ('', '@') and code in ('q', 'Q') and
-                    not HAVE_LONG_LONG):
-                    continue
-                format = byteorder+code
-                t = IntTester(format)
-                t.run()
-
-    def test_p_code(self):
-        # Test p ("Pascal string") code.
-        for code, input, expected, expectedback in [
-                ('p','abc', '\x00', ''),
-                ('1p', 'abc', '\x00', ''),
-                ('2p', 'abc', '\x01a', 'a'),
-                ('3p', 'abc', '\x02ab', 'ab'),
-                ('4p', 'abc', '\x03abc', 'abc'),
-                ('5p', 'abc', '\x03abc\x00', 'abc'),
-                ('6p', 'abc', '\x03abc\x00\x00', 'abc'),
-                ('1000p', 'x'*1000, '\xff' + 'x'*999, 'x'*255)]:
-            got = struct.pack(code, input)
-            self.assertEqual(got, expected)
-            (got,) = struct.unpack(code, got)
-            self.assertEqual(got, expectedback)
-
-    def test_705836(self):
-        # SF bug 705836.  "<f" and ">f" had a severe rounding bug, where a carry
-        # from the low-order discarded bits could propagate into the exponent
-        # field, causing the result to be wrong by a factor of 2.
-        import math
-
-        for base in range(1, 33):
-            # smaller <- largest representable float less than base.
-            delta = 0.5
-            while base - delta / 2.0 != base:
-                delta /= 2.0
-            smaller = base - delta
-            # Packing this rounds away a solid string of trailing 1 bits.
-            packed = struct.pack("<f", smaller)
-            unpacked = struct.unpack("<f", packed)[0]
-            # This failed at base = 2, 4, and 32, with unpacked = 1, 2, and
-            # 16, respectively.
-            self.assertEqual(base, unpacked)
-            bigpacked = struct.pack(">f", smaller)
-            self.assertEqual(bigpacked, string_reverse(packed))
-            unpacked = struct.unpack(">f", bigpacked)[0]
-            self.assertEqual(base, unpacked)
-
-        # Largest finite IEEE single.
-        big = (1 << 24) - 1
-        big = math.ldexp(big, 127 - 23)
-        packed = struct.pack(">f", big)
-        unpacked = struct.unpack(">f", packed)[0]
-        self.assertEqual(big, unpacked)
-
-        # The same, but tack on a 1 bit so it rounds up to infinity.
-        big = (1 << 25) - 1
-        big = math.ldexp(big, 127 - 24)
-        self.assertRaises(OverflowError, struct.pack, ">f", big)
-
-    def test_1530559(self):
-        # SF bug 1530559. struct.pack raises TypeError where it used to convert.
-        for endian in ('', '>', '<'):
-            for fmt in integer_codes:
-                self.check_float_coerce(endian + fmt, 1.0)
-                self.check_float_coerce(endian + fmt, 1.5)
-
-    def test_unpack_from(self, cls=str):
-        data = cls('abcd01234')
-        fmt = '4s'
-        s = struct.Struct(fmt)
-
-        self.assertEqual(s.unpack_from(data), ('abcd',))
-        self.assertEqual(struct.unpack_from(fmt, data), ('abcd',))
-        for i in xrange(6):
-            self.assertEqual(s.unpack_from(data, i), (data[i:i+4],))
-            self.assertEqual(struct.unpack_from(fmt, data, i), (data[i:i+4],))
-        for i in xrange(6, len(data) + 1):
-            self.assertRaises(struct.error, s.unpack_from, data, i)
-            self.assertRaises(struct.error, struct.unpack_from, fmt, data, i)
-
-    def test_pack_into(self):
-        test_string = 'Reykjavik rocks, eow!'
-        writable_buf = array.array('c', ' '*100)
-        fmt = '21s'
-        s = struct.Struct(fmt)
-
-        # Test without offset
-        s.pack_into(writable_buf, 0, test_string)
-        from_buf = writable_buf.tostring()[:len(test_string)]
-        self.assertEqual(from_buf, test_string)
-
-        # Test with offset.
-        s.pack_into(writable_buf, 10, test_string)
-        from_buf = writable_buf.tostring()[:len(test_string)+10]
-        self.assertEqual(from_buf, test_string[:10] + test_string)
-
-        # Go beyond boundaries.
-        small_buf = array.array('c', ' '*10)
-        self.assertRaises((ValueError, struct.error), s.pack_into, small_buf, 0,
-                          test_string)
-        self.assertRaises((ValueError, struct.error), s.pack_into, small_buf, 2,
-                          test_string)
-
-        # Test bogus offset (issue 3694)
-        sb = small_buf
-        self.assertRaises((TypeError, struct.error), struct.pack_into, b'', sb,
-                          None)
-
-    def test_pack_into_fn(self):
-        test_string = 'Reykjavik rocks, eow!'
-        writable_buf = array.array('c', ' '*100)
-        fmt = '21s'
-        pack_into = lambda *args: struct.pack_into(fmt, *args)
-
-        # Test without offset.
-        pack_into(writable_buf, 0, test_string)
-        from_buf = writable_buf.tostring()[:len(test_string)]
-        self.assertEqual(from_buf, test_string)
-
-        # Test with offset.
-        pack_into(writable_buf, 10, test_string)
-        from_buf = writable_buf.tostring()[:len(test_string)+10]
-        self.assertEqual(from_buf, test_string[:10] + test_string)
-
-        # Go beyond boundaries.
-        small_buf = array.array('c', ' '*10)
-        self.assertRaises((ValueError, struct.error), pack_into, small_buf, 0,
-                          test_string)
-        self.assertRaises((ValueError, struct.error), pack_into, small_buf, 2,
-                          test_string)
-
-    def test_unpack_with_buffer(self):
-        with check_py3k_warnings(("buffer.. not supported in 3.x",
-                                  DeprecationWarning)):
-            # SF bug 1563759: struct.unpack doesn't support buffer protocol objects
-            data1 = array.array('B', '\x12\x34\x56\x78')
-            data2 = buffer('......\x12\x34\x56\x78......', 6, 4)
-            for data in [data1, data2]:
-                value, = struct.unpack('>I', data)
-                self.assertEqual(value, 0x12345678)
-
-            self.test_unpack_from(cls=buffer)
-
-    def test_bool(self):
-        class ExplodingBool(object):
-            def __nonzero__(self):
-                raise IOError
-        for prefix in tuple("<>!=")+('',):
-            false = (), [], [], '', 0
-            true = [1], 'test', 5, -1, 0xffffffffL+1, 0xffffffff//2
-
-            falseFormat = prefix + '?' * len(false)
-            packedFalse = struct.pack(falseFormat, *false)
-            unpackedFalse = struct.unpack(falseFormat, packedFalse)
-
-            trueFormat = prefix + '?' * len(true)
-            packedTrue = struct.pack(trueFormat, *true)
-            unpackedTrue = struct.unpack(trueFormat, packedTrue)
-
-            self.assertEqual(len(true), len(unpackedTrue))
-            self.assertEqual(len(false), len(unpackedFalse))
-
-            for t in unpackedFalse:
-                self.assertFalse(t)
-            for t in unpackedTrue:
-                self.assertTrue(t)
-
-            packed = struct.pack(prefix+'?', 1)
-
-            self.assertEqual(len(packed), struct.calcsize(prefix+'?'))
-
-            if len(packed) != 1:
-                self.assertFalse(prefix, msg='encoded bool is not one byte: %r'
-                                             %packed)
-
-            self.assertRaises(IOError, struct.pack, prefix + '?',
-                              ExplodingBool())
-
-        for c in [b'\x01', b'\x7f', b'\xff', b'\x0f', b'\xf0']:
-            self.assertTrue(struct.unpack('>?', c)[0])
-
-    @unittest.skipUnless(IS32BIT, "Specific to 32bit machines")
-    def test_crasher(self):
-        self.assertRaises(MemoryError, struct.pack, "357913941c", "a")
-
-    def test_count_overflow(self):
-        hugecount = '{}b'.format(sys.maxsize+1)
-        self.assertRaises(struct.error, struct.calcsize, hugecount)
-
-        hugecount2 = '{}b{}H'.format(sys.maxsize//2, sys.maxsize//2)
-        self.assertRaises(struct.error, struct.calcsize, hugecount2)
-
-def test_main():
-    run_unittest(StructTest)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_structmembers.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_structmembers.py
deleted file mode 100644
index 80e4141..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_structmembers.py
+++ /dev/null
@@ -1,108 +0,0 @@
-from _testcapi import _test_structmembersType, \
-    CHAR_MAX, CHAR_MIN, UCHAR_MAX, \
-    SHRT_MAX, SHRT_MIN, USHRT_MAX, \
-    INT_MAX, INT_MIN, UINT_MAX, \
-    LONG_MAX, LONG_MIN, ULONG_MAX, \
-    LLONG_MAX, LLONG_MIN, ULLONG_MAX
-
-import unittest
-from test import test_support
-
-ts=_test_structmembersType(False, 1, 2, 3, 4, 5, 6, 7, 8,
-                          9.99999, 10.1010101010, "hi")
-
-class ReadWriteTests(unittest.TestCase):
-
-    def test_bool(self):
-        ts.T_BOOL = True
-        self.assertEqual(ts.T_BOOL, True)
-        ts.T_BOOL = False
-        self.assertEqual(ts.T_BOOL, False)
-        self.assertRaises(TypeError, setattr, ts, 'T_BOOL', 1)
-
-    def test_byte(self):
-        ts.T_BYTE = CHAR_MAX
-        self.assertEqual(ts.T_BYTE, CHAR_MAX)
-        ts.T_BYTE = CHAR_MIN
-        self.assertEqual(ts.T_BYTE, CHAR_MIN)
-        ts.T_UBYTE = UCHAR_MAX
-        self.assertEqual(ts.T_UBYTE, UCHAR_MAX)
-
-    def test_short(self):
-        ts.T_SHORT = SHRT_MAX
-        self.assertEqual(ts.T_SHORT, SHRT_MAX)
-        ts.T_SHORT = SHRT_MIN
-        self.assertEqual(ts.T_SHORT, SHRT_MIN)
-        ts.T_USHORT = USHRT_MAX
-        self.assertEqual(ts.T_USHORT, USHRT_MAX)
-
-    def test_int(self):
-        ts.T_INT = INT_MAX
-        self.assertEqual(ts.T_INT, INT_MAX)
-        ts.T_INT = INT_MIN
-        self.assertEqual(ts.T_INT, INT_MIN)
-        ts.T_UINT = UINT_MAX
-        self.assertEqual(ts.T_UINT, UINT_MAX)
-
-    def test_long(self):
-        ts.T_LONG = LONG_MAX
-        self.assertEqual(ts.T_LONG, LONG_MAX)
-        ts.T_LONG = LONG_MIN
-        self.assertEqual(ts.T_LONG, LONG_MIN)
-        ts.T_ULONG = ULONG_MAX
-        self.assertEqual(ts.T_ULONG, ULONG_MAX)
-
-    @unittest.skipUnless(hasattr(ts, "T_LONGLONG"), "long long not present")
-    def test_longlong(self):
-        ts.T_LONGLONG = LLONG_MAX
-        self.assertEqual(ts.T_LONGLONG, LLONG_MAX)
-        ts.T_LONGLONG = LLONG_MIN
-        self.assertEqual(ts.T_LONGLONG, LLONG_MIN)
-
-        ts.T_ULONGLONG = ULLONG_MAX
-        self.assertEqual(ts.T_ULONGLONG, ULLONG_MAX)
-
-        ## make sure these will accept a plain int as well as a long
-        ts.T_LONGLONG = 3
-        self.assertEqual(ts.T_LONGLONG, 3)
-        ts.T_ULONGLONG = 4
-        self.assertEqual(ts.T_ULONGLONG, 4)
-
-    def test_inplace_string(self):
-        self.assertEqual(ts.T_STRING_INPLACE, "hi")
-        self.assertRaises(TypeError, setattr, ts, "T_STRING_INPLACE", "s")
-        self.assertRaises(TypeError, delattr, ts, "T_STRING_INPLACE")
-
-
-class TestWarnings(unittest.TestCase):
-
-    def test_byte_max(self):
-        with test_support.check_warnings(('', RuntimeWarning)):
-            ts.T_BYTE = CHAR_MAX+1
-
-    def test_byte_min(self):
-        with test_support.check_warnings(('', RuntimeWarning)):
-            ts.T_BYTE = CHAR_MIN-1
-
-    def test_ubyte_max(self):
-        with test_support.check_warnings(('', RuntimeWarning)):
-            ts.T_UBYTE = UCHAR_MAX+1
-
-    def test_short_max(self):
-        with test_support.check_warnings(('', RuntimeWarning)):
-            ts.T_SHORT = SHRT_MAX+1
-
-    def test_short_min(self):
-        with test_support.check_warnings(('', RuntimeWarning)):
-            ts.T_SHORT = SHRT_MIN-1
-
-    def test_ushort_max(self):
-        with test_support.check_warnings(('', RuntimeWarning)):
-            ts.T_USHORT = USHRT_MAX+1
-
-
-def test_main(verbose=None):
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_structseq.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_structseq.py
deleted file mode 100644
index 44ae65c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_structseq.py
+++ /dev/null
@@ -1,120 +0,0 @@
-import unittest
-from test import test_support
-
-import time
-
-class StructSeqTest(unittest.TestCase):
-
-    def test_tuple(self):
-        t = time.gmtime()
-        astuple = tuple(t)
-        self.assertEqual(len(t), len(astuple))
-        self.assertEqual(t, astuple)
-
-        # Check that slicing works the same way; at one point, slicing t[i:j] with
-        # 0 < i < j could produce NULLs in the result.
-        for i in xrange(-len(t), len(t)):
-            self.assertEqual(t[i:], astuple[i:])
-            for j in xrange(-len(t), len(t)):
-                self.assertEqual(t[i:j], astuple[i:j])
-
-        for j in xrange(-len(t), len(t)):
-            self.assertEqual(t[:j], astuple[:j])
-
-        self.assertRaises(IndexError, t.__getitem__, -len(t)-1)
-        self.assertRaises(IndexError, t.__getitem__, len(t))
-        for i in xrange(-len(t), len(t)-1):
-            self.assertEqual(t[i], astuple[i])
-
-    def test_repr(self):
-        t = time.gmtime()
-        self.assertTrue(repr(t))
-        t = time.gmtime(0)
-        self.assertEqual(repr(t),
-            "time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, "
-            "tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)")
-
-    def test_concat(self):
-        t1 = time.gmtime()
-        t2 = t1 + tuple(t1)
-        for i in xrange(len(t1)):
-            self.assertEqual(t2[i], t2[i+len(t1)])
-
-    def test_repeat(self):
-        t1 = time.gmtime()
-        t2 = 3 * t1
-        for i in xrange(len(t1)):
-            self.assertEqual(t2[i], t2[i+len(t1)])
-            self.assertEqual(t2[i], t2[i+2*len(t1)])
-
-    def test_contains(self):
-        t1 = time.gmtime()
-        for item in t1:
-            self.assertIn(item, t1)
-        self.assertNotIn(-42, t1)
-
-    def test_hash(self):
-        t1 = time.gmtime()
-        self.assertEqual(hash(t1), hash(tuple(t1)))
-
-    def test_cmp(self):
-        t1 = time.gmtime()
-        t2 = type(t1)(t1)
-        self.assertEqual(t1, t2)
-        self.assertTrue(not (t1 < t2))
-        self.assertTrue(t1 <= t2)
-        self.assertTrue(not (t1 > t2))
-        self.assertTrue(t1 >= t2)
-        self.assertTrue(not (t1 != t2))
-
-    def test_fields(self):
-        t = time.gmtime()
-        self.assertEqual(len(t), t.n_fields)
-        self.assertEqual(t.n_fields, t.n_sequence_fields+t.n_unnamed_fields)
-
-    def test_constructor(self):
-        t = time.struct_time
-
-        self.assertRaises(TypeError, t)
-        self.assertRaises(TypeError, t, None)
-        self.assertRaises(TypeError, t, "123")
-        self.assertRaises(TypeError, t, "123", dict={})
-        self.assertRaises(TypeError, t, "123456789", dict=None)
-
-        s = "123456789"
-        self.assertEqual("".join(t(s)), s)
-
-    def test_eviltuple(self):
-        class Exc(Exception):
-            pass
-
-        # Devious code could crash structseqs' contructors
-        class C:
-            def __getitem__(self, i):
-                raise Exc
-            def __len__(self):
-                return 9
-
-        self.assertRaises(Exc, time.struct_time, C())
-
-    def test_reduce(self):
-        t = time.gmtime()
-        x = t.__reduce__()
-
-    def test_extended_getslice(self):
-        # Test extended slicing by comparing with list slicing.
-        t = time.gmtime()
-        L = list(t)
-        indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300)
-        for start in indices:
-            for stop in indices:
-                # Skip step 0 (invalid)
-                for step in indices[1:]:
-                    self.assertEqual(list(t[start:stop:step]),
-                                     L[start:stop:step])
-
-def test_main():
-    test_support.run_unittest(StructSeqTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_subprocess.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_subprocess.py
deleted file mode 100644
index 70b01d7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_subprocess.py
+++ /dev/null
@@ -1,1053 +0,0 @@
-import unittest
-from test import test_support
-import subprocess
-import sys
-import signal
-import os
-import errno
-import tempfile
-import time
-import re
-import sysconfig
-
-mswindows = (sys.platform == "win32")
-
-#
-# Depends on the following external programs: Python
-#
-
-if mswindows:
-    SETBINARY = ('import msvcrt; msvcrt.setmode(sys.stdout.fileno(), '
-                                                'os.O_BINARY);')
-else:
-    SETBINARY = ''
-
-
-try:
-    mkstemp = tempfile.mkstemp
-except AttributeError:
-    # tempfile.mkstemp is not available
-    def mkstemp():
-        """Replacement for mkstemp, calling mktemp."""
-        fname = tempfile.mktemp()
-        return os.open(fname, os.O_RDWR|os.O_CREAT), fname
-
-
-class BaseTestCase(unittest.TestCase):
-    def setUp(self):
-        # Try to minimize the number of children we have so this test
-        # doesn't crash on some buildbots (Alphas in particular).
-        test_support.reap_children()
-
-    def tearDown(self):
-        for inst in subprocess._active:
-            inst.wait()
-        subprocess._cleanup()
-        self.assertFalse(subprocess._active, "subprocess._active not empty")
-
-    def assertStderrEqual(self, stderr, expected, msg=None):
-        # In a debug build, stuff like "[6580 refs]" is printed to stderr at
-        # shutdown time.  That frustrates tests trying to check stderr produced
-        # from a spawned Python process.
-        actual = re.sub(r"\[\d+ refs\]\r?\n?$", "", stderr)
-        self.assertEqual(actual, expected, msg)
-
-
-class ProcessTestCase(BaseTestCase):
-
-    def test_call_seq(self):
-        # call() function with sequence argument
-        rc = subprocess.call([sys.executable, "-c",
-                              "import sys; sys.exit(47)"])
-        self.assertEqual(rc, 47)
-
-    def test_check_call_zero(self):
-        # check_call() function with zero return code
-        rc = subprocess.check_call([sys.executable, "-c",
-                                    "import sys; sys.exit(0)"])
-        self.assertEqual(rc, 0)
-
-    def test_check_call_nonzero(self):
-        # check_call() function with non-zero return code
-        with self.assertRaises(subprocess.CalledProcessError) as c:
-            subprocess.check_call([sys.executable, "-c",
-                                   "import sys; sys.exit(47)"])
-        self.assertEqual(c.exception.returncode, 47)
-
-    def test_check_output(self):
-        # check_output() function with zero return code
-        output = subprocess.check_output(
-                [sys.executable, "-c", "print 'BDFL'"])
-        self.assertIn('BDFL', output)
-
-    def test_check_output_nonzero(self):
-        # check_call() function with non-zero return code
-        with self.assertRaises(subprocess.CalledProcessError) as c:
-            subprocess.check_output(
-                    [sys.executable, "-c", "import sys; sys.exit(5)"])
-        self.assertEqual(c.exception.returncode, 5)
-
-    def test_check_output_stderr(self):
-        # check_output() function stderr redirected to stdout
-        output = subprocess.check_output(
-                [sys.executable, "-c", "import sys; sys.stderr.write('BDFL')"],
-                stderr=subprocess.STDOUT)
-        self.assertIn('BDFL', output)
-
-    def test_check_output_stdout_arg(self):
-        # check_output() function stderr redirected to stdout
-        with self.assertRaises(ValueError) as c:
-            output = subprocess.check_output(
-                    [sys.executable, "-c", "print 'will not be run'"],
-                    stdout=sys.stdout)
-            self.fail("Expected ValueError when stdout arg supplied.")
-        self.assertIn('stdout', c.exception.args[0])
-
-    def test_call_kwargs(self):
-        # call() function with keyword args
-        newenv = os.environ.copy()
-        newenv["FRUIT"] = "banana"
-        rc = subprocess.call([sys.executable, "-c",
-                              'import sys, os;'
-                              'sys.exit(os.getenv("FRUIT")=="banana")'],
-                             env=newenv)
-        self.assertEqual(rc, 1)
-
-    def test_stdin_none(self):
-        # .stdin is None when not redirected
-        p = subprocess.Popen([sys.executable, "-c", 'print "banana"'],
-                         stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-        self.addCleanup(p.stdout.close)
-        self.addCleanup(p.stderr.close)
-        p.wait()
-        self.assertEqual(p.stdin, None)
-
-    def test_stdout_none(self):
-        # .stdout is None when not redirected
-        p = subprocess.Popen([sys.executable, "-c",
-                             'print "    this bit of output is from a '
-                             'test of stdout in a different '
-                             'process ..."'],
-                             stdin=subprocess.PIPE, stderr=subprocess.PIPE)
-        self.addCleanup(p.stdin.close)
-        self.addCleanup(p.stderr.close)
-        p.wait()
-        self.assertEqual(p.stdout, None)
-
-    def test_stderr_none(self):
-        # .stderr is None when not redirected
-        p = subprocess.Popen([sys.executable, "-c", 'print "banana"'],
-                         stdin=subprocess.PIPE, stdout=subprocess.PIPE)
-        self.addCleanup(p.stdout.close)
-        self.addCleanup(p.stdin.close)
-        p.wait()
-        self.assertEqual(p.stderr, None)
-
-    def test_executable_with_cwd(self):
-        python_dir = os.path.dirname(os.path.realpath(sys.executable))
-        p = subprocess.Popen(["somethingyoudonthave", "-c",
-                              "import sys; sys.exit(47)"],
-                             executable=sys.executable, cwd=python_dir)
-        p.wait()
-        self.assertEqual(p.returncode, 47)
-
-    @unittest.skipIf(sysconfig.is_python_build(),
-                     "need an installed Python. See #7774")
-    def test_executable_without_cwd(self):
-        # For a normal installation, it should work without 'cwd'
-        # argument.  For test runs in the build directory, see #7774.
-        p = subprocess.Popen(["somethingyoudonthave", "-c",
-                              "import sys; sys.exit(47)"],
-                             executable=sys.executable)
-        p.wait()
-        self.assertEqual(p.returncode, 47)
-
-    def test_stdin_pipe(self):
-        # stdin redirection
-        p = subprocess.Popen([sys.executable, "-c",
-                         'import sys; sys.exit(sys.stdin.read() == "pear")'],
-                        stdin=subprocess.PIPE)
-        p.stdin.write("pear")
-        p.stdin.close()
-        p.wait()
-        self.assertEqual(p.returncode, 1)
-
-    def test_stdin_filedes(self):
-        # stdin is set to open file descriptor
-        tf = tempfile.TemporaryFile()
-        d = tf.fileno()
-        os.write(d, "pear")
-        os.lseek(d, 0, 0)
-        p = subprocess.Popen([sys.executable, "-c",
-                         'import sys; sys.exit(sys.stdin.read() == "pear")'],
-                         stdin=d)
-        p.wait()
-        self.assertEqual(p.returncode, 1)
-
-    def test_stdin_fileobj(self):
-        # stdin is set to open file object
-        tf = tempfile.TemporaryFile()
-        tf.write("pear")
-        tf.seek(0)
-        p = subprocess.Popen([sys.executable, "-c",
-                         'import sys; sys.exit(sys.stdin.read() == "pear")'],
-                         stdin=tf)
-        p.wait()
-        self.assertEqual(p.returncode, 1)
-
-    def test_stdout_pipe(self):
-        # stdout redirection
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys; sys.stdout.write("orange")'],
-                         stdout=subprocess.PIPE)
-        self.addCleanup(p.stdout.close)
-        self.assertEqual(p.stdout.read(), "orange")
-
-    def test_stdout_filedes(self):
-        # stdout is set to open file descriptor
-        tf = tempfile.TemporaryFile()
-        d = tf.fileno()
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys; sys.stdout.write("orange")'],
-                         stdout=d)
-        p.wait()
-        os.lseek(d, 0, 0)
-        self.assertEqual(os.read(d, 1024), "orange")
-
-    def test_stdout_fileobj(self):
-        # stdout is set to open file object
-        tf = tempfile.TemporaryFile()
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys; sys.stdout.write("orange")'],
-                         stdout=tf)
-        p.wait()
-        tf.seek(0)
-        self.assertEqual(tf.read(), "orange")
-
-    def test_stderr_pipe(self):
-        # stderr redirection
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys; sys.stderr.write("strawberry")'],
-                         stderr=subprocess.PIPE)
-        self.addCleanup(p.stderr.close)
-        self.assertStderrEqual(p.stderr.read(), "strawberry")
-
-    def test_stderr_filedes(self):
-        # stderr is set to open file descriptor
-        tf = tempfile.TemporaryFile()
-        d = tf.fileno()
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys; sys.stderr.write("strawberry")'],
-                         stderr=d)
-        p.wait()
-        os.lseek(d, 0, 0)
-        self.assertStderrEqual(os.read(d, 1024), "strawberry")
-
-    def test_stderr_fileobj(self):
-        # stderr is set to open file object
-        tf = tempfile.TemporaryFile()
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys; sys.stderr.write("strawberry")'],
-                         stderr=tf)
-        p.wait()
-        tf.seek(0)
-        self.assertStderrEqual(tf.read(), "strawberry")
-
-    def test_stdout_stderr_pipe(self):
-        # capture stdout and stderr to the same pipe
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys;'
-                          'sys.stdout.write("apple");'
-                          'sys.stdout.flush();'
-                          'sys.stderr.write("orange")'],
-                         stdout=subprocess.PIPE,
-                         stderr=subprocess.STDOUT)
-        self.addCleanup(p.stdout.close)
-        self.assertStderrEqual(p.stdout.read(), "appleorange")
-
-    def test_stdout_stderr_file(self):
-        # capture stdout and stderr to the same open file
-        tf = tempfile.TemporaryFile()
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys;'
-                          'sys.stdout.write("apple");'
-                          'sys.stdout.flush();'
-                          'sys.stderr.write("orange")'],
-                         stdout=tf,
-                         stderr=tf)
-        p.wait()
-        tf.seek(0)
-        self.assertStderrEqual(tf.read(), "appleorange")
-
-    def test_stdout_filedes_of_stdout(self):
-        # stdout is set to 1 (#1531862).
-        cmd = r"import sys, os; sys.exit(os.write(sys.stdout.fileno(), '.\n'))"
-        rc = subprocess.call([sys.executable, "-c", cmd], stdout=1)
-        self.assertEqual(rc, 2)
-
-    def test_cwd(self):
-        tmpdir = tempfile.gettempdir()
-        # We cannot use os.path.realpath to canonicalize the path,
-        # since it doesn't expand Tru64 {memb} strings. See bug 1063571.
-        cwd = os.getcwd()
-        os.chdir(tmpdir)
-        tmpdir = os.getcwd()
-        os.chdir(cwd)
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys,os;'
-                          'sys.stdout.write(os.getcwd())'],
-                         stdout=subprocess.PIPE,
-                         cwd=tmpdir)
-        self.addCleanup(p.stdout.close)
-        normcase = os.path.normcase
-        self.assertEqual(normcase(p.stdout.read()), normcase(tmpdir))
-
-    def test_env(self):
-        newenv = os.environ.copy()
-        newenv["FRUIT"] = "orange"
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys,os;'
-                          'sys.stdout.write(os.getenv("FRUIT"))'],
-                         stdout=subprocess.PIPE,
-                         env=newenv)
-        self.addCleanup(p.stdout.close)
-        self.assertEqual(p.stdout.read(), "orange")
-
-    def test_communicate_stdin(self):
-        p = subprocess.Popen([sys.executable, "-c",
-                              'import sys;'
-                              'sys.exit(sys.stdin.read() == "pear")'],
-                             stdin=subprocess.PIPE)
-        p.communicate("pear")
-        self.assertEqual(p.returncode, 1)
-
-    def test_communicate_stdout(self):
-        p = subprocess.Popen([sys.executable, "-c",
-                              'import sys; sys.stdout.write("pineapple")'],
-                             stdout=subprocess.PIPE)
-        (stdout, stderr) = p.communicate()
-        self.assertEqual(stdout, "pineapple")
-        self.assertEqual(stderr, None)
-
-    def test_communicate_stderr(self):
-        p = subprocess.Popen([sys.executable, "-c",
-                              'import sys; sys.stderr.write("pineapple")'],
-                             stderr=subprocess.PIPE)
-        (stdout, stderr) = p.communicate()
-        self.assertEqual(stdout, None)
-        self.assertStderrEqual(stderr, "pineapple")
-
-    def test_communicate(self):
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys,os;'
-                          'sys.stderr.write("pineapple");'
-                          'sys.stdout.write(sys.stdin.read())'],
-                         stdin=subprocess.PIPE,
-                         stdout=subprocess.PIPE,
-                         stderr=subprocess.PIPE)
-        self.addCleanup(p.stdout.close)
-        self.addCleanup(p.stderr.close)
-        self.addCleanup(p.stdin.close)
-        (stdout, stderr) = p.communicate("banana")
-        self.assertEqual(stdout, "banana")
-        self.assertStderrEqual(stderr, "pineapple")
-
-    # This test is Linux specific for simplicity to at least have
-    # some coverage.  It is not a platform specific bug.
-    @unittest.skipUnless(os.path.isdir('/proc/%d/fd' % os.getpid()),
-                         "Linux specific")
-    # Test for the fd leak reported in http://bugs.python.org/issue2791.
-    def test_communicate_pipe_fd_leak(self):
-        fd_directory = '/proc/%d/fd' % os.getpid()
-        num_fds_before_popen = len(os.listdir(fd_directory))
-        p = subprocess.Popen([sys.executable, "-c", "print()"],
-                             stdout=subprocess.PIPE)
-        p.communicate()
-        num_fds_after_communicate = len(os.listdir(fd_directory))
-        del p
-        num_fds_after_destruction = len(os.listdir(fd_directory))
-        self.assertEqual(num_fds_before_popen, num_fds_after_destruction)
-        self.assertEqual(num_fds_before_popen, num_fds_after_communicate)
-
-    def test_communicate_returns(self):
-        # communicate() should return None if no redirection is active
-        p = subprocess.Popen([sys.executable, "-c",
-                              "import sys; sys.exit(47)"])
-        (stdout, stderr) = p.communicate()
-        self.assertEqual(stdout, None)
-        self.assertEqual(stderr, None)
-
-    def test_communicate_pipe_buf(self):
-        # communicate() with writes larger than pipe_buf
-        # This test will probably deadlock rather than fail, if
-        # communicate() does not work properly.
-        x, y = os.pipe()
-        if mswindows:
-            pipe_buf = 512
-        else:
-            pipe_buf = os.fpathconf(x, "PC_PIPE_BUF")
-        os.close(x)
-        os.close(y)
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys,os;'
-                          'sys.stdout.write(sys.stdin.read(47));'
-                          'sys.stderr.write("xyz"*%d);'
-                          'sys.stdout.write(sys.stdin.read())' % pipe_buf],
-                         stdin=subprocess.PIPE,
-                         stdout=subprocess.PIPE,
-                         stderr=subprocess.PIPE)
-        self.addCleanup(p.stdout.close)
-        self.addCleanup(p.stderr.close)
-        self.addCleanup(p.stdin.close)
-        string_to_write = "abc"*pipe_buf
-        (stdout, stderr) = p.communicate(string_to_write)
-        self.assertEqual(stdout, string_to_write)
-
-    def test_writes_before_communicate(self):
-        # stdin.write before communicate()
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys,os;'
-                          'sys.stdout.write(sys.stdin.read())'],
-                         stdin=subprocess.PIPE,
-                         stdout=subprocess.PIPE,
-                         stderr=subprocess.PIPE)
-        self.addCleanup(p.stdout.close)
-        self.addCleanup(p.stderr.close)
-        self.addCleanup(p.stdin.close)
-        p.stdin.write("banana")
-        (stdout, stderr) = p.communicate("split")
-        self.assertEqual(stdout, "bananasplit")
-        self.assertStderrEqual(stderr, "")
-
-    def test_universal_newlines(self):
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys,os;' + SETBINARY +
-                          'sys.stdout.write("line1\\n");'
-                          'sys.stdout.flush();'
-                          'sys.stdout.write("line2\\r");'
-                          'sys.stdout.flush();'
-                          'sys.stdout.write("line3\\r\\n");'
-                          'sys.stdout.flush();'
-                          'sys.stdout.write("line4\\r");'
-                          'sys.stdout.flush();'
-                          'sys.stdout.write("\\nline5");'
-                          'sys.stdout.flush();'
-                          'sys.stdout.write("\\nline6");'],
-                         stdout=subprocess.PIPE,
-                         universal_newlines=1)
-        self.addCleanup(p.stdout.close)
-        stdout = p.stdout.read()
-        if hasattr(file, 'newlines'):
-            # Interpreter with universal newline support
-            self.assertEqual(stdout,
-                             "line1\nline2\nline3\nline4\nline5\nline6")
-        else:
-            # Interpreter without universal newline support
-            self.assertEqual(stdout,
-                             "line1\nline2\rline3\r\nline4\r\nline5\nline6")
-
-    def test_universal_newlines_communicate(self):
-        # universal newlines through communicate()
-        p = subprocess.Popen([sys.executable, "-c",
-                          'import sys,os;' + SETBINARY +
-                          'sys.stdout.write("line1\\n");'
-                          'sys.stdout.flush();'
-                          'sys.stdout.write("line2\\r");'
-                          'sys.stdout.flush();'
-                          'sys.stdout.write("line3\\r\\n");'
-                          'sys.stdout.flush();'
-                          'sys.stdout.write("line4\\r");'
-                          'sys.stdout.flush();'
-                          'sys.stdout.write("\\nline5");'
-                          'sys.stdout.flush();'
-                          'sys.stdout.write("\\nline6");'],
-                         stdout=subprocess.PIPE, stderr=subprocess.PIPE,
-                         universal_newlines=1)
-        self.addCleanup(p.stdout.close)
-        self.addCleanup(p.stderr.close)
-        (stdout, stderr) = p.communicate()
-        if hasattr(file, 'newlines'):
-            # Interpreter with universal newline support
-            self.assertEqual(stdout,
-                             "line1\nline2\nline3\nline4\nline5\nline6")
-        else:
-            # Interpreter without universal newline support
-            self.assertEqual(stdout,
-                             "line1\nline2\rline3\r\nline4\r\nline5\nline6")
-
-    def test_no_leaking(self):
-        # Make sure we leak no resources
-        if not mswindows:
-            max_handles = 1026 # too much for most UNIX systems
-        else:
-            max_handles = 2050 # too much for (at least some) Windows setups
-        handles = []
-        try:
-            for i in range(max_handles):
-                try:
-                    handles.append(os.open(test_support.TESTFN,
-                                           os.O_WRONLY | os.O_CREAT))
-                except OSError as e:
-                    if e.errno != errno.EMFILE:
-                        raise
-                    break
-            else:
-                self.skipTest("failed to reach the file descriptor limit "
-                    "(tried %d)" % max_handles)
-            # Close a couple of them (should be enough for a subprocess)
-            for i in range(10):
-                os.close(handles.pop())
-            # Loop creating some subprocesses. If one of them leaks some fds,
-            # the next loop iteration will fail by reaching the max fd limit.
-            for i in range(15):
-                p = subprocess.Popen([sys.executable, "-c",
-                                      "import sys;"
-                                      "sys.stdout.write(sys.stdin.read())"],
-                                     stdin=subprocess.PIPE,
-                                     stdout=subprocess.PIPE,
-                                     stderr=subprocess.PIPE)
-                data = p.communicate(b"lime")[0]
-                self.assertEqual(data, b"lime")
-        finally:
-            for h in handles:
-                os.close(h)
-
-    def test_list2cmdline(self):
-        self.assertEqual(subprocess.list2cmdline(['a b c', 'd', 'e']),
-                         '"a b c" d e')
-        self.assertEqual(subprocess.list2cmdline(['ab"c', '\\', 'd']),
-                         'ab\\"c \\ d')
-        self.assertEqual(subprocess.list2cmdline(['ab"c', ' \\', 'd']),
-                         'ab\\"c " \\\\" d')
-        self.assertEqual(subprocess.list2cmdline(['a\\\\\\b', 'de fg', 'h']),
-                         'a\\\\\\b "de fg" h')
-        self.assertEqual(subprocess.list2cmdline(['a\\"b', 'c', 'd']),
-                         'a\\\\\\"b c d')
-        self.assertEqual(subprocess.list2cmdline(['a\\\\b c', 'd', 'e']),
-                         '"a\\\\b c" d e')
-        self.assertEqual(subprocess.list2cmdline(['a\\\\b\\ c', 'd', 'e']),
-                         '"a\\\\b\\ c" d e')
-        self.assertEqual(subprocess.list2cmdline(['ab', '']),
-                         'ab ""')
-
-
-    def test_poll(self):
-        p = subprocess.Popen([sys.executable,
-                          "-c", "import time; time.sleep(1)"])
-        count = 0
-        while p.poll() is None:
-            time.sleep(0.1)
-            count += 1
-        # We expect that the poll loop probably went around about 10 times,
-        # but, based on system scheduling we can't control, it's possible
-        # poll() never returned None.  It "should be" very rare that it
-        # didn't go around at least twice.
-        self.assertGreaterEqual(count, 2)
-        # Subsequent invocations should just return the returncode
-        self.assertEqual(p.poll(), 0)
-
-
-    def test_wait(self):
-        p = subprocess.Popen([sys.executable,
-                          "-c", "import time; time.sleep(2)"])
-        self.assertEqual(p.wait(), 0)
-        # Subsequent invocations should just return the returncode
-        self.assertEqual(p.wait(), 0)
-
-
-    def test_invalid_bufsize(self):
-        # an invalid type of the bufsize argument should raise
-        # TypeError.
-        with self.assertRaises(TypeError):
-            subprocess.Popen([sys.executable, "-c", "pass"], "orange")
-
-    def test_leaking_fds_on_error(self):
-        # see bug #5179: Popen leaks file descriptors to PIPEs if
-        # the child fails to execute; this will eventually exhaust
-        # the maximum number of open fds. 1024 seems a very common
-        # value for that limit, but Windows has 2048, so we loop
-        # 1024 times (each call leaked two fds).
-        for i in range(1024):
-            # Windows raises IOError.  Others raise OSError.
-            with self.assertRaises(EnvironmentError) as c:
-                subprocess.Popen(['nonexisting_i_hope'],
-                                 stdout=subprocess.PIPE,
-                                 stderr=subprocess.PIPE)
-            # ignore errors that indicate the command was not found
-            if c.exception.errno not in (errno.ENOENT, errno.EACCES):
-                raise c.exception
-
-    def test_handles_closed_on_exception(self):
-        # If CreateProcess exits with an error, ensure the
-        # duplicate output handles are released
-        ifhandle, ifname = mkstemp()
-        ofhandle, ofname = mkstemp()
-        efhandle, efname = mkstemp()
-        try:
-            subprocess.Popen (["*"], stdin=ifhandle, stdout=ofhandle,
-              stderr=efhandle)
-        except OSError:
-            os.close(ifhandle)
-            os.remove(ifname)
-            os.close(ofhandle)
-            os.remove(ofname)
-            os.close(efhandle)
-            os.remove(efname)
-        self.assertFalse(os.path.exists(ifname))
-        self.assertFalse(os.path.exists(ofname))
-        self.assertFalse(os.path.exists(efname))
-
-    def test_communicate_epipe(self):
-        # Issue 10963: communicate() should hide EPIPE
-        p = subprocess.Popen([sys.executable, "-c", 'pass'],
-                             stdin=subprocess.PIPE,
-                             stdout=subprocess.PIPE,
-                             stderr=subprocess.PIPE)
-        self.addCleanup(p.stdout.close)
-        self.addCleanup(p.stderr.close)
-        self.addCleanup(p.stdin.close)
-        p.communicate("x" * 2**20)
-
-    def test_communicate_epipe_only_stdin(self):
-        # Issue 10963: communicate() should hide EPIPE
-        p = subprocess.Popen([sys.executable, "-c", 'pass'],
-                             stdin=subprocess.PIPE)
-        self.addCleanup(p.stdin.close)
-        time.sleep(2)
-        p.communicate("x" * 2**20)
-
-# context manager
-class _SuppressCoreFiles(object):
-    """Try to prevent core files from being created."""
-    old_limit = None
-
-    def __enter__(self):
-        """Try to save previous ulimit, then set it to (0, 0)."""
-        try:
-            import resource
-            self.old_limit = resource.getrlimit(resource.RLIMIT_CORE)
-            resource.setrlimit(resource.RLIMIT_CORE, (0, 0))
-        except (ImportError, ValueError, resource.error):
-            pass
-
-        if sys.platform == 'darwin':
-            # Check if the 'Crash Reporter' on OSX was configured
-            # in 'Developer' mode and warn that it will get triggered
-            # when it is.
-            #
-            # This assumes that this context manager is used in tests
-            # that might trigger the next manager.
-            value = subprocess.Popen(['/usr/bin/defaults', 'read',
-                    'com.apple.CrashReporter', 'DialogType'],
-                    stdout=subprocess.PIPE).communicate()[0]
-            if value.strip() == b'developer':
-                print "this tests triggers the Crash Reporter, that is intentional"
-                sys.stdout.flush()
-
-    def __exit__(self, *args):
-        """Return core file behavior to default."""
-        if self.old_limit is None:
-            return
-        try:
-            import resource
-            resource.setrlimit(resource.RLIMIT_CORE, self.old_limit)
-        except (ImportError, ValueError, resource.error):
-            pass
-
-
-@unittest.skipIf(mswindows, "POSIX specific tests")
-class POSIXProcessTestCase(BaseTestCase):
-
-    def test_exceptions(self):
-        # caught & re-raised exceptions
-        with self.assertRaises(OSError) as c:
-            p = subprocess.Popen([sys.executable, "-c", ""],
-                                 cwd="/this/path/does/not/exist")
-        # The attribute child_traceback should contain "os.chdir" somewhere.
-        self.assertIn("os.chdir", c.exception.child_traceback)
-
-    def test_run_abort(self):
-        # returncode handles signal termination
-        with _SuppressCoreFiles():
-            p = subprocess.Popen([sys.executable, "-c",
-                                  "import os; os.abort()"])
-            p.wait()
-        self.assertEqual(-p.returncode, signal.SIGABRT)
-
-    def test_preexec(self):
-        # preexec function
-        p = subprocess.Popen([sys.executable, "-c",
-                              "import sys, os;"
-                              "sys.stdout.write(os.getenv('FRUIT'))"],
-                             stdout=subprocess.PIPE,
-                             preexec_fn=lambda: os.putenv("FRUIT", "apple"))
-        self.addCleanup(p.stdout.close)
-        self.assertEqual(p.stdout.read(), "apple")
-
-    def test_args_string(self):
-        # args is a string
-        f, fname = mkstemp()
-        os.write(f, "#!/bin/sh\n")
-        os.write(f, "exec '%s' -c 'import sys; sys.exit(47)'\n" %
-                    sys.executable)
-        os.close(f)
-        os.chmod(fname, 0o700)
-        p = subprocess.Popen(fname)
-        p.wait()
-        os.remove(fname)
-        self.assertEqual(p.returncode, 47)
-
-    def test_invalid_args(self):
-        # invalid arguments should raise ValueError
-        self.assertRaises(ValueError, subprocess.call,
-                          [sys.executable, "-c",
-                           "import sys; sys.exit(47)"],
-                          startupinfo=47)
-        self.assertRaises(ValueError, subprocess.call,
-                          [sys.executable, "-c",
-                           "import sys; sys.exit(47)"],
-                          creationflags=47)
-
-    def test_shell_sequence(self):
-        # Run command through the shell (sequence)
-        newenv = os.environ.copy()
-        newenv["FRUIT"] = "apple"
-        p = subprocess.Popen(["echo $FRUIT"], shell=1,
-                             stdout=subprocess.PIPE,
-                             env=newenv)
-        self.addCleanup(p.stdout.close)
-        self.assertEqual(p.stdout.read().strip(), "apple")
-
-    def test_shell_string(self):
-        # Run command through the shell (string)
-        newenv = os.environ.copy()
-        newenv["FRUIT"] = "apple"
-        p = subprocess.Popen("echo $FRUIT", shell=1,
-                             stdout=subprocess.PIPE,
-                             env=newenv)
-        self.addCleanup(p.stdout.close)
-        self.assertEqual(p.stdout.read().strip(), "apple")
-
-    def test_call_string(self):
-        # call() function with string argument on UNIX
-        f, fname = mkstemp()
-        os.write(f, "#!/bin/sh\n")
-        os.write(f, "exec '%s' -c 'import sys; sys.exit(47)'\n" %
-                    sys.executable)
-        os.close(f)
-        os.chmod(fname, 0700)
-        rc = subprocess.call(fname)
-        os.remove(fname)
-        self.assertEqual(rc, 47)
-
-    def test_specific_shell(self):
-        # Issue #9265: Incorrect name passed as arg[0].
-        shells = []
-        for prefix in ['/bin', '/usr/bin/', '/usr/local/bin']:
-            for name in ['bash', 'ksh']:
-                sh = os.path.join(prefix, name)
-                if os.path.isfile(sh):
-                    shells.append(sh)
-        if not shells: # Will probably work for any shell but csh.
-            self.skipTest("bash or ksh required for this test")
-        sh = '/bin/sh'
-        if os.path.isfile(sh) and not os.path.islink(sh):
-            # Test will fail if /bin/sh is a symlink to csh.
-            shells.append(sh)
-        for sh in shells:
-            p = subprocess.Popen("echo $0", executable=sh, shell=True,
-                                 stdout=subprocess.PIPE)
-            self.addCleanup(p.stdout.close)
-            self.assertEqual(p.stdout.read().strip(), sh)
-
-    def _kill_process(self, method, *args):
-        # Do not inherit file handles from the parent.
-        # It should fix failures on some platforms.
-        p = subprocess.Popen([sys.executable, "-c", """if 1:
-                             import sys, time
-                             sys.stdout.write('x\\n')
-                             sys.stdout.flush()
-                             time.sleep(30)
-                             """],
-                             close_fds=True,
-                             stdin=subprocess.PIPE,
-                             stdout=subprocess.PIPE,
-                             stderr=subprocess.PIPE)
-        # Wait for the interpreter to be completely initialized before
-        # sending any signal.
-        p.stdout.read(1)
-        getattr(p, method)(*args)
-        return p
-
-    def test_send_signal(self):
-        p = self._kill_process('send_signal', signal.SIGINT)
-        _, stderr = p.communicate()
-        self.assertIn('KeyboardInterrupt', stderr)
-        self.assertNotEqual(p.wait(), 0)
-
-    def test_kill(self):
-        p = self._kill_process('kill')
-        _, stderr = p.communicate()
-        self.assertStderrEqual(stderr, '')
-        self.assertEqual(p.wait(), -signal.SIGKILL)
-
-    def test_terminate(self):
-        p = self._kill_process('terminate')
-        _, stderr = p.communicate()
-        self.assertStderrEqual(stderr, '')
-        self.assertEqual(p.wait(), -signal.SIGTERM)
-
-    def check_close_std_fds(self, fds):
-        # Issue #9905: test that subprocess pipes still work properly with
-        # some standard fds closed
-        stdin = 0
-        newfds = []
-        for a in fds:
-            b = os.dup(a)
-            newfds.append(b)
-            if a == 0:
-                stdin = b
-        try:
-            for fd in fds:
-                os.close(fd)
-            out, err = subprocess.Popen([sys.executable, "-c",
-                              'import sys;'
-                              'sys.stdout.write("apple");'
-                              'sys.stdout.flush();'
-                              'sys.stderr.write("orange")'],
-                       stdin=stdin,
-                       stdout=subprocess.PIPE,
-                       stderr=subprocess.PIPE).communicate()
-            err = test_support.strip_python_stderr(err)
-            self.assertEqual((out, err), (b'apple', b'orange'))
-        finally:
-            for b, a in zip(newfds, fds):
-                os.dup2(b, a)
-            for b in newfds:
-                os.close(b)
-
-    def test_close_fd_0(self):
-        self.check_close_std_fds([0])
-
-    def test_close_fd_1(self):
-        self.check_close_std_fds([1])
-
-    def test_close_fd_2(self):
-        self.check_close_std_fds([2])
-
-    def test_close_fds_0_1(self):
-        self.check_close_std_fds([0, 1])
-
-    def test_close_fds_0_2(self):
-        self.check_close_std_fds([0, 2])
-
-    def test_close_fds_1_2(self):
-        self.check_close_std_fds([1, 2])
-
-    def test_close_fds_0_1_2(self):
-        # Issue #10806: test that subprocess pipes still work properly with
-        # all standard fds closed.
-        self.check_close_std_fds([0, 1, 2])
-
-    def test_wait_when_sigchild_ignored(self):
-        # NOTE: sigchild_ignore.py may not be an effective test on all OSes.
-        sigchild_ignore = test_support.findfile("sigchild_ignore.py",
-                                                subdir="subprocessdata")
-        p = subprocess.Popen([sys.executable, sigchild_ignore],
-                             stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-        stdout, stderr = p.communicate()
-        self.assertEqual(0, p.returncode, "sigchild_ignore.py exited"
-                         " non-zero with this error:\n%s" % stderr)
-
-
-@unittest.skipUnless(mswindows, "Windows specific tests")
-class Win32ProcessTestCase(BaseTestCase):
-
-    def test_startupinfo(self):
-        # startupinfo argument
-        # We uses hardcoded constants, because we do not want to
-        # depend on win32all.
-        STARTF_USESHOWWINDOW = 1
-        SW_MAXIMIZE = 3
-        startupinfo = subprocess.STARTUPINFO()
-        startupinfo.dwFlags = STARTF_USESHOWWINDOW
-        startupinfo.wShowWindow = SW_MAXIMIZE
-        # Since Python is a console process, it won't be affected
-        # by wShowWindow, but the argument should be silently
-        # ignored
-        subprocess.call([sys.executable, "-c", "import sys; sys.exit(0)"],
-                        startupinfo=startupinfo)
-
-    def test_creationflags(self):
-        # creationflags argument
-        CREATE_NEW_CONSOLE = 16
-        sys.stderr.write("    a DOS box should flash briefly ...\n")
-        subprocess.call(sys.executable +
-                        ' -c "import time; time.sleep(0.25)"',
-                        creationflags=CREATE_NEW_CONSOLE)
-
-    def test_invalid_args(self):
-        # invalid arguments should raise ValueError
-        self.assertRaises(ValueError, subprocess.call,
-                          [sys.executable, "-c",
-                           "import sys; sys.exit(47)"],
-                          preexec_fn=lambda: 1)
-        self.assertRaises(ValueError, subprocess.call,
-                          [sys.executable, "-c",
-                           "import sys; sys.exit(47)"],
-                          stdout=subprocess.PIPE,
-                          close_fds=True)
-
-    def test_close_fds(self):
-        # close file descriptors
-        rc = subprocess.call([sys.executable, "-c",
-                              "import sys; sys.exit(47)"],
-                              close_fds=True)
-        self.assertEqual(rc, 47)
-
-    def test_shell_sequence(self):
-        # Run command through the shell (sequence)
-        newenv = os.environ.copy()
-        newenv["FRUIT"] = "physalis"
-        p = subprocess.Popen(["set"], shell=1,
-                             stdout=subprocess.PIPE,
-                             env=newenv)
-        self.addCleanup(p.stdout.close)
-        self.assertIn("physalis", p.stdout.read())
-
-    def test_shell_string(self):
-        # Run command through the shell (string)
-        newenv = os.environ.copy()
-        newenv["FRUIT"] = "physalis"
-        p = subprocess.Popen("set", shell=1,
-                             stdout=subprocess.PIPE,
-                             env=newenv)
-        self.addCleanup(p.stdout.close)
-        self.assertIn("physalis", p.stdout.read())
-
-    def test_call_string(self):
-        # call() function with string argument on Windows
-        rc = subprocess.call(sys.executable +
-                             ' -c "import sys; sys.exit(47)"')
-        self.assertEqual(rc, 47)
-
-    def _kill_process(self, method, *args):
-        # Some win32 buildbot raises EOFError if stdin is inherited
-        p = subprocess.Popen([sys.executable, "-c", """if 1:
-                             import sys, time
-                             sys.stdout.write('x\\n')
-                             sys.stdout.flush()
-                             time.sleep(30)
-                             """],
-                             stdin=subprocess.PIPE,
-                             stdout=subprocess.PIPE,
-                             stderr=subprocess.PIPE)
-        self.addCleanup(p.stdout.close)
-        self.addCleanup(p.stderr.close)
-        self.addCleanup(p.stdin.close)
-        # Wait for the interpreter to be completely initialized before
-        # sending any signal.
-        p.stdout.read(1)
-        getattr(p, method)(*args)
-        _, stderr = p.communicate()
-        self.assertStderrEqual(stderr, '')
-        returncode = p.wait()
-        self.assertNotEqual(returncode, 0)
-
-    def test_send_signal(self):
-        self._kill_process('send_signal', signal.SIGTERM)
-
-    def test_kill(self):
-        self._kill_process('kill')
-
-    def test_terminate(self):
-        self._kill_process('terminate')
-
-
-@unittest.skipUnless(getattr(subprocess, '_has_poll', False),
-                     "poll system call not supported")
-class ProcessTestCaseNoPoll(ProcessTestCase):
-    def setUp(self):
-        subprocess._has_poll = False
-        ProcessTestCase.setUp(self)
-
-    def tearDown(self):
-        subprocess._has_poll = True
-        ProcessTestCase.tearDown(self)
-
-
-class HelperFunctionTests(unittest.TestCase):
-    @unittest.skipIf(mswindows, "errno and EINTR make no sense on windows")
-    def test_eintr_retry_call(self):
-        record_calls = []
-        def fake_os_func(*args):
-            record_calls.append(args)
-            if len(record_calls) == 2:
-                raise OSError(errno.EINTR, "fake interrupted system call")
-            return tuple(reversed(args))
-
-        self.assertEqual((999, 256),
-                         subprocess._eintr_retry_call(fake_os_func, 256, 999))
-        self.assertEqual([(256, 999)], record_calls)
-        # This time there will be an EINTR so it will loop once.
-        self.assertEqual((666,),
-                         subprocess._eintr_retry_call(fake_os_func, 666))
-        self.assertEqual([(256, 999), (666,), (666,)], record_calls)
-
-
-@unittest.skipUnless(mswindows, "mswindows only")
-class CommandsWithSpaces (BaseTestCase):
-
-    def setUp(self):
-        super(CommandsWithSpaces, self).setUp()
-        f, fname = mkstemp(".py", "te st")
-        self.fname = fname.lower ()
-        os.write(f, b"import sys;"
-                    b"sys.stdout.write('%d %s' % (len(sys.argv), [a.lower () for a in sys.argv]))"
-        )
-        os.close(f)
-
-    def tearDown(self):
-        os.remove(self.fname)
-        super(CommandsWithSpaces, self).tearDown()
-
-    def with_spaces(self, *args, **kwargs):
-        kwargs['stdout'] = subprocess.PIPE
-        p = subprocess.Popen(*args, **kwargs)
-        self.addCleanup(p.stdout.close)
-        self.assertEqual(
-          p.stdout.read ().decode("mbcs"),
-          "2 [%r, 'ab cd']" % self.fname
-        )
-
-    def test_shell_string_with_spaces(self):
-        # call() function with string argument with spaces on Windows
-        self.with_spaces('"%s" "%s" "%s"' % (sys.executable, self.fname,
-                                             "ab cd"), shell=1)
-
-    def test_shell_sequence_with_spaces(self):
-        # call() function with sequence argument with spaces on Windows
-        self.with_spaces([sys.executable, self.fname, "ab cd"], shell=1)
-
-    def test_noshell_string_with_spaces(self):
-        # call() function with string argument with spaces on Windows
-        self.with_spaces('"%s" "%s" "%s"' % (sys.executable, self.fname,
-                             "ab cd"))
-
-    def test_noshell_sequence_with_spaces(self):
-        # call() function with sequence argument with spaces on Windows
-        self.with_spaces([sys.executable, self.fname, "ab cd"])
-
-def test_main():
-    unit_tests = (ProcessTestCase,
-                  POSIXProcessTestCase,
-                  Win32ProcessTestCase,
-                  ProcessTestCaseNoPoll,
-                  HelperFunctionTests,
-                  CommandsWithSpaces)
-
-    test_support.run_unittest(*unit_tests)
-    test_support.reap_children()
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sunaudiodev.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sunaudiodev.py
deleted file mode 100644
index 4e19f01..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sunaudiodev.py
+++ /dev/null
@@ -1,33 +0,0 @@
-from test.test_support import findfile, TestFailed, import_module
-import unittest
-sunaudiodev = import_module('sunaudiodev', deprecated=True)
-import os
-
-try:
-    audiodev = os.environ["AUDIODEV"]
-except KeyError:
-    audiodev = "/dev/audio"
-
-if not os.path.exists(audiodev):
-    raise unittest.SkipTest("no audio device found!")
-
-def play_sound_file(path):
-    fp = open(path, 'r')
-    data = fp.read()
-    fp.close()
-    try:
-        a = sunaudiodev.open('w')
-    except sunaudiodev.error, msg:
-        raise TestFailed, msg
-    else:
-        a.write(data)
-        a.close()
-
-
-def test_main():
-    play_sound_file(findfile('audiotest.au'))
-
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sundry.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sundry.py
deleted file mode 100644
index 4d6957a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sundry.py
+++ /dev/null
@@ -1,96 +0,0 @@
-"""Do a minimal test of all the modules that aren't otherwise tested."""
-
-from test import test_support
-import sys
-import unittest
-
-
-class TestUntestedModules(unittest.TestCase):
-    def test_at_least_import_untested_modules(self):
-        with test_support.check_warnings(quiet=True):
-            import CGIHTTPServer
-            import audiodev
-            import bdb
-            import cgitb
-            import code
-            import compileall
-
-            import distutils.bcppcompiler
-            import distutils.ccompiler
-            import distutils.cygwinccompiler
-            import distutils.emxccompiler
-            import distutils.filelist
-            if sys.platform.startswith('win'):
-                import distutils.msvccompiler
-            import distutils.text_file
-            import distutils.unixccompiler
-
-            import distutils.command.bdist_dumb
-            if sys.platform.startswith('win'):
-                import distutils.command.bdist_msi
-            import distutils.command.bdist
-            import distutils.command.bdist_rpm
-            import distutils.command.bdist_wininst
-            import distutils.command.build_clib
-            import distutils.command.build_ext
-            import distutils.command.build
-            import distutils.command.clean
-            import distutils.command.config
-            import distutils.command.install_data
-            import distutils.command.install_egg_info
-            import distutils.command.install_headers
-            import distutils.command.install_lib
-            import distutils.command.register
-            import distutils.command.sdist
-            import distutils.command.upload
-
-            import encodings
-            import formatter
-            import getpass
-            import htmlentitydefs
-            import ihooks
-            import imghdr
-            import imputil
-            import keyword
-            import linecache
-            import macurl2path
-            import mailcap
-            import mimify
-            import nntplib
-            import nturl2path
-            import opcode
-            import os2emxpath
-            import pdb
-            import posixfile
-            import pstats
-            import py_compile
-            import rexec
-            import sched
-            import sndhdr
-            import statvfs
-            import stringold
-            import sunau
-            import sunaudio
-            import symbol
-            import tabnanny
-            import timeit
-            import toaiff
-            import token
-            try:
-                import tty     # not available on Windows
-            except ImportError:
-                if test_support.verbose:
-                    print "skipping tty"
-
-            # Can't test the "user" module -- if the user has a ~/.pythonrc.py, it
-            # can screw up all sorts of things (esp. if it prints!).
-            #import user
-            import webbrowser
-            import xml
-
-
-def test_main():
-    test_support.run_unittest(TestUntestedModules)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_support.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_support.py
deleted file mode 100644
index b52cb35..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_support.py
+++ /dev/null
@@ -1,1233 +0,0 @@
-"""Supporting definitions for the Python regression tests."""
-
-if __name__ != 'test.test_support':
-    raise ImportError('test_support must be imported from the test package')
-
-import contextlib
-import errno
-import functools
-import gc
-import socket
-import sys
-import os
-import platform
-import shutil
-import warnings
-import unittest
-import importlib
-import UserDict
-import re
-import time
-try:
-    import thread
-except ImportError:
-    thread = None
-
-__all__ = ["Error", "TestFailed", "ResourceDenied", "import_module",
-           "verbose", "use_resources", "max_memuse", "record_original_stdout",
-           "get_original_stdout", "unload", "unlink", "rmtree", "forget",
-           "is_resource_enabled", "requires", "find_unused_port", "bind_port",
-           "fcmp", "have_unicode", "is_jython", "TESTFN", "HOST", "FUZZ",
-           "SAVEDCWD", "temp_cwd", "findfile", "sortdict", "check_syntax_error",
-           "open_urlresource", "check_warnings", "check_py3k_warnings",
-           "CleanImport", "EnvironmentVarGuard", "captured_output",
-           "captured_stdout", "TransientResource", "transient_internet",
-           "run_with_locale", "set_memlimit", "bigmemtest", "bigaddrspacetest",
-           "BasicTestRunner", "run_unittest", "run_doctest", "threading_setup",
-           "threading_cleanup", "reap_children", "cpython_only",
-           "check_impl_detail", "get_attribute", "py3k_bytes",
-           "import_fresh_module"]
-
-
-class Error(Exception):
-    """Base class for regression test exceptions."""
-
-class TestFailed(Error):
-    """Test failed."""
-
-class ResourceDenied(unittest.SkipTest):
-    """Test skipped because it requested a disallowed resource.
-
-    This is raised when a test calls requires() for a resource that
-    has not been enabled.  It is used to distinguish between expected
-    and unexpected skips.
-    """
-
-@contextlib.contextmanager
-def _ignore_deprecated_imports(ignore=True):
-    """Context manager to suppress package and module deprecation
-    warnings when importing them.
-
-    If ignore is False, this context manager has no effect."""
-    if ignore:
-        with warnings.catch_warnings():
-            warnings.filterwarnings("ignore", ".+ (module|package)",
-                                    DeprecationWarning)
-            yield
-    else:
-        yield
-
-
-def import_module(name, deprecated=False):
-    """Import and return the module to be tested, raising SkipTest if
-    it is not available.
-
-    If deprecated is True, any module or package deprecation messages
-    will be suppressed."""
-    with _ignore_deprecated_imports(deprecated):
-        try:
-            return importlib.import_module(name)
-        except ImportError, msg:
-            raise unittest.SkipTest(str(msg))
-
-
-def _save_and_remove_module(name, orig_modules):
-    """Helper function to save and remove a module from sys.modules
-
-       Raise ImportError if the module can't be imported."""
-    # try to import the module and raise an error if it can't be imported
-    if name not in sys.modules:
-        __import__(name)
-        del sys.modules[name]
-    for modname in list(sys.modules):
-        if modname == name or modname.startswith(name + '.'):
-            orig_modules[modname] = sys.modules[modname]
-            del sys.modules[modname]
-
-def _save_and_block_module(name, orig_modules):
-    """Helper function to save and block a module in sys.modules
-
-       Return True if the module was in sys.modules, False otherwise."""
-    saved = True
-    try:
-        orig_modules[name] = sys.modules[name]
-    except KeyError:
-        saved = False
-    sys.modules[name] = None
-    return saved
-
-
-def import_fresh_module(name, fresh=(), blocked=(), deprecated=False):
-    """Imports and returns a module, deliberately bypassing the sys.modules cache
-    and importing a fresh copy of the module. Once the import is complete,
-    the sys.modules cache is restored to its original state.
-
-    Modules named in fresh are also imported anew if needed by the import.
-    If one of these modules can't be imported, None is returned.
-
-    Importing of modules named in blocked is prevented while the fresh import
-    takes place.
-
-    If deprecated is True, any module or package deprecation messages
-    will be suppressed."""
-    # NOTE: test_heapq, test_json, and test_warnings include extra sanity
-    # checks to make sure that this utility function is working as expected
-    with _ignore_deprecated_imports(deprecated):
-        # Keep track of modules saved for later restoration as well
-        # as those which just need a blocking entry removed
-        orig_modules = {}
-        names_to_remove = []
-        _save_and_remove_module(name, orig_modules)
-        try:
-            for fresh_name in fresh:
-                _save_and_remove_module(fresh_name, orig_modules)
-            for blocked_name in blocked:
-                if not _save_and_block_module(blocked_name, orig_modules):
-                    names_to_remove.append(blocked_name)
-            fresh_module = importlib.import_module(name)
-        except ImportError:
-            fresh_module = None
-        finally:
-            for orig_name, module in orig_modules.items():
-                sys.modules[orig_name] = module
-            for name_to_remove in names_to_remove:
-                del sys.modules[name_to_remove]
-        return fresh_module
-
-
-def get_attribute(obj, name):
-    """Get an attribute, raising SkipTest if AttributeError is raised."""
-    try:
-        attribute = getattr(obj, name)
-    except AttributeError:
-        raise unittest.SkipTest("module %s has no attribute %s" % (
-            obj.__name__, name))
-    else:
-        return attribute
-
-
-verbose = 1              # Flag set to 0 by regrtest.py
-use_resources = None     # Flag set to [] by regrtest.py
-max_memuse = 0           # Disable bigmem tests (they will still be run with
-                         # small sizes, to make sure they work.)
-real_max_memuse = 0
-
-# _original_stdout is meant to hold stdout at the time regrtest began.
-# This may be "the real" stdout, or IDLE's emulation of stdout, or whatever.
-# The point is to have some flavor of stdout the user can actually see.
-_original_stdout = None
-def record_original_stdout(stdout):
-    global _original_stdout
-    _original_stdout = stdout
-
-def get_original_stdout():
-    return _original_stdout or sys.stdout
-
-def unload(name):
-    try:
-        del sys.modules[name]
-    except KeyError:
-        pass
-
-def unlink(filename):
-    try:
-        os.unlink(filename)
-    except OSError:
-        pass
-
-def rmtree(path):
-    try:
-        shutil.rmtree(path)
-    except OSError, e:
-        # Unix returns ENOENT, Windows returns ESRCH.
-        if e.errno not in (errno.ENOENT, errno.ESRCH):
-            raise
-
-def forget(modname):
-    '''"Forget" a module was ever imported by removing it from sys.modules and
-    deleting any .pyc and .pyo files.'''
-    unload(modname)
-    for dirname in sys.path:
-        unlink(os.path.join(dirname, modname + os.extsep + 'pyc'))
-        # Deleting the .pyo file cannot be within the 'try' for the .pyc since
-        # the chance exists that there is no .pyc (and thus the 'try' statement
-        # is exited) but there is a .pyo file.
-        unlink(os.path.join(dirname, modname + os.extsep + 'pyo'))
-
-def is_resource_enabled(resource):
-    """Test whether a resource is enabled.  Known resources are set by
-    regrtest.py."""
-    return use_resources is not None and resource in use_resources
-
-def requires(resource, msg=None):
-    """Raise ResourceDenied if the specified resource is not available.
-
-    If the caller's module is __main__ then automatically return True.  The
-    possibility of False being returned occurs when regrtest.py is executing."""
-    # see if the caller's module is __main__ - if so, treat as if
-    # the resource was set
-    if sys._getframe(1).f_globals.get("__name__") == "__main__":
-        return
-    if not is_resource_enabled(resource):
-        if msg is None:
-            msg = "Use of the `%s' resource not enabled" % resource
-        raise ResourceDenied(msg)
-
-HOST = 'localhost'
-
-def find_unused_port(family=socket.AF_INET, socktype=socket.SOCK_STREAM):
-    """Returns an unused port that should be suitable for binding.  This is
-    achieved by creating a temporary socket with the same family and type as
-    the 'sock' parameter (default is AF_INET, SOCK_STREAM), and binding it to
-    the specified host address (defaults to 0.0.0.0) with the port set to 0,
-    eliciting an unused ephemeral port from the OS.  The temporary socket is
-    then closed and deleted, and the ephemeral port is returned.
-
-    Either this method or bind_port() should be used for any tests where a
-    server socket needs to be bound to a particular port for the duration of
-    the test.  Which one to use depends on whether the calling code is creating
-    a python socket, or if an unused port needs to be provided in a constructor
-    or passed to an external program (i.e. the -accept argument to openssl's
-    s_server mode).  Always prefer bind_port() over find_unused_port() where
-    possible.  Hard coded ports should *NEVER* be used.  As soon as a server
-    socket is bound to a hard coded port, the ability to run multiple instances
-    of the test simultaneously on the same host is compromised, which makes the
-    test a ticking time bomb in a buildbot environment. On Unix buildbots, this
-    may simply manifest as a failed test, which can be recovered from without
-    intervention in most cases, but on Windows, the entire python process can
-    completely and utterly wedge, requiring someone to log in to the buildbot
-    and manually kill the affected process.
-
-    (This is easy to reproduce on Windows, unfortunately, and can be traced to
-    the SO_REUSEADDR socket option having different semantics on Windows versus
-    Unix/Linux.  On Unix, you can't have two AF_INET SOCK_STREAM sockets bind,
-    listen and then accept connections on identical host/ports.  An EADDRINUSE
-    socket.error will be raised at some point (depending on the platform and
-    the order bind and listen were called on each socket).
-
-    However, on Windows, if SO_REUSEADDR is set on the sockets, no EADDRINUSE
-    will ever be raised when attempting to bind two identical host/ports. When
-    accept() is called on each socket, the second caller's process will steal
-    the port from the first caller, leaving them both in an awkwardly wedged
-    state where they'll no longer respond to any signals or graceful kills, and
-    must be forcibly killed via OpenProcess()/TerminateProcess().
-
-    The solution on Windows is to use the SO_EXCLUSIVEADDRUSE socket option
-    instead of SO_REUSEADDR, which effectively affords the same semantics as
-    SO_REUSEADDR on Unix.  Given the propensity of Unix developers in the Open
-    Source world compared to Windows ones, this is a common mistake.  A quick
-    look over OpenSSL's 0.9.8g source shows that they use SO_REUSEADDR when
-    openssl.exe is called with the 's_server' option, for example. See
-    http://bugs.python.org/issue2550 for more info.  The following site also
-    has a very thorough description about the implications of both REUSEADDR
-    and EXCLUSIVEADDRUSE on Windows:
-    http://msdn2.microsoft.com/en-us/library/ms740621(VS.85).aspx)
-
-    XXX: although this approach is a vast improvement on previous attempts to
-    elicit unused ports, it rests heavily on the assumption that the ephemeral
-    port returned to us by the OS won't immediately be dished back out to some
-    other process when we close and delete our temporary socket but before our
-    calling code has a chance to bind the returned port.  We can deal with this
-    issue if/when we come across it."""
-    tempsock = socket.socket(family, socktype)
-    port = bind_port(tempsock)
-    tempsock.close()
-    del tempsock
-    return port
-
-def bind_port(sock, host=HOST):
-    """Bind the socket to a free port and return the port number.  Relies on
-    ephemeral ports in order to ensure we are using an unbound port.  This is
-    important as many tests may be running simultaneously, especially in a
-    buildbot environment.  This method raises an exception if the sock.family
-    is AF_INET and sock.type is SOCK_STREAM, *and* the socket has SO_REUSEADDR
-    or SO_REUSEPORT set on it.  Tests should *never* set these socket options
-    for TCP/IP sockets.  The only case for setting these options is testing
-    multicasting via multiple UDP sockets.
-
-    Additionally, if the SO_EXCLUSIVEADDRUSE socket option is available (i.e.
-    on Windows), it will be set on the socket.  This will prevent anyone else
-    from bind()'ing to our host/port for the duration of the test.
-    """
-    if sock.family == socket.AF_INET and sock.type == socket.SOCK_STREAM:
-        if hasattr(socket, 'SO_REUSEADDR'):
-            if sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) == 1:
-                raise TestFailed("tests should never set the SO_REUSEADDR "   \
-                                 "socket option on TCP/IP sockets!")
-        if hasattr(socket, 'SO_REUSEPORT'):
-            if sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT) == 1:
-                raise TestFailed("tests should never set the SO_REUSEPORT "   \
-                                 "socket option on TCP/IP sockets!")
-        if hasattr(socket, 'SO_EXCLUSIVEADDRUSE'):
-            sock.setsockopt(socket.SOL_SOCKET, socket.SO_EXCLUSIVEADDRUSE, 1)
-
-    sock.bind((host, 0))
-    port = sock.getsockname()[1]
-    return port
-
-FUZZ = 1e-6
-
-def fcmp(x, y): # fuzzy comparison function
-    if isinstance(x, float) or isinstance(y, float):
-        try:
-            fuzz = (abs(x) + abs(y)) * FUZZ
-            if abs(x-y) <= fuzz:
-                return 0
-        except:
-            pass
-    elif type(x) == type(y) and isinstance(x, (tuple, list)):
-        for i in range(min(len(x), len(y))):
-            outcome = fcmp(x[i], y[i])
-            if outcome != 0:
-                return outcome
-        return (len(x) > len(y)) - (len(x) < len(y))
-    return (x > y) - (x < y)
-
-try:
-    unicode
-    have_unicode = True
-except NameError:
-    have_unicode = False
-
-is_jython = sys.platform.startswith('java')
-
-# Filename used for testing
-if os.name == 'java':
-    # Jython disallows @ in module names
-    TESTFN = '$test'
-elif os.name == 'riscos':
-    TESTFN = 'testfile'
-else:
-    TESTFN = '@test'
-    # Unicode name only used if TEST_FN_ENCODING exists for the platform.
-    if have_unicode:
-        # Assuming sys.getfilesystemencoding()!=sys.getdefaultencoding()
-        # TESTFN_UNICODE is a filename that can be encoded using the
-        # file system encoding, but *not* with the default (ascii) encoding
-        if isinstance('', unicode):
-            # python -U
-            # XXX perhaps unicode() should accept Unicode strings?
-            TESTFN_UNICODE = "@test-\xe0\xf2"
-        else:
-            # 2 latin characters.
-            TESTFN_UNICODE = unicode("@test-\xe0\xf2", "latin-1")
-        TESTFN_ENCODING = sys.getfilesystemencoding()
-        # TESTFN_UNENCODABLE is a filename that should *not* be
-        # able to be encoded by *either* the default or filesystem encoding.
-        # This test really only makes sense on Windows NT platforms
-        # which have special Unicode support in posixmodule.
-        if (not hasattr(sys, "getwindowsversion") or
-                sys.getwindowsversion()[3] < 2): #  0=win32s or 1=9x/ME
-            TESTFN_UNENCODABLE = None
-        else:
-            # Japanese characters (I think - from bug 846133)
-            TESTFN_UNENCODABLE = eval('u"@test-\u5171\u6709\u3055\u308c\u308b"')
-            try:
-                # XXX - Note - should be using TESTFN_ENCODING here - but for
-                # Windows, "mbcs" currently always operates as if in
-                # errors=ignore' mode - hence we get '?' characters rather than
-                # the exception.  'Latin1' operates as we expect - ie, fails.
-                # See [ 850997 ] mbcs encoding ignores errors
-                TESTFN_UNENCODABLE.encode("Latin1")
-            except UnicodeEncodeError:
-                pass
-            else:
-                print \
-                'WARNING: The filename %r CAN be encoded by the filesystem.  ' \
-                'Unicode filename tests may not be effective' \
-                % TESTFN_UNENCODABLE
-
-
-# Disambiguate TESTFN for parallel testing, while letting it remain a valid
-# module name.
-TESTFN = "{}_{}_tmp".format(TESTFN, os.getpid())
-
-# Save the initial cwd
-SAVEDCWD = os.getcwd()
-
-@contextlib.contextmanager
-def temp_cwd(name='tempcwd', quiet=False):
-    """
-    Context manager that creates a temporary directory and set it as CWD.
-
-    The new CWD is created in the current directory and it's named *name*.
-    If *quiet* is False (default) and it's not possible to create or change
-    the CWD, an error is raised.  If it's True, only a warning is raised
-    and the original CWD is used.
-    """
-    if isinstance(name, unicode):
-        try:
-            name = name.encode(sys.getfilesystemencoding() or 'ascii')
-        except UnicodeEncodeError:
-            if not quiet:
-                raise unittest.SkipTest('unable to encode the cwd name with '
-                                        'the filesystem encoding.')
-    saved_dir = os.getcwd()
-    is_temporary = False
-    try:
-        os.mkdir(name)
-        os.chdir(name)
-        is_temporary = True
-    except OSError:
-        if not quiet:
-            raise
-        warnings.warn('tests may fail, unable to change the CWD to ' + name,
-                      RuntimeWarning, stacklevel=3)
-    try:
-        yield os.getcwd()
-    finally:
-        os.chdir(saved_dir)
-        if is_temporary:
-            rmtree(name)
-
-
-def findfile(file, here=__file__, subdir=None):
-    """Try to find a file on sys.path and the working directory.  If it is not
-    found the argument passed to the function is returned (this does not
-    necessarily signal failure; could still be the legitimate path)."""
-    if os.path.isabs(file):
-        return file
-    if subdir is not None:
-        file = os.path.join(subdir, file)
-    path = sys.path
-    path = [os.path.dirname(here)] + path
-    for dn in path:
-        fn = os.path.join(dn, file)
-        if os.path.exists(fn): return fn
-    return file
-
-def sortdict(dict):
-    "Like repr(dict), but in sorted order."
-    items = dict.items()
-    items.sort()
-    reprpairs = ["%r: %r" % pair for pair in items]
-    withcommas = ", ".join(reprpairs)
-    return "{%s}" % withcommas
-
-def make_bad_fd():
-    """
-    Create an invalid file descriptor by opening and closing a file and return
-    its fd.
-    """
-    file = open(TESTFN, "wb")
-    try:
-        return file.fileno()
-    finally:
-        file.close()
-        unlink(TESTFN)
-
-def check_syntax_error(testcase, statement):
-    testcase.assertRaises(SyntaxError, compile, statement,
-                          '<test string>', 'exec')
-
-def open_urlresource(url, check=None):
-    import urlparse, urllib2
-
-    filename = urlparse.urlparse(url)[2].split('/')[-1] # '/': it's URL!
-
-    fn = os.path.join(os.path.dirname(__file__), "data", filename)
-
-    def check_valid_file(fn):
-        f = open(fn)
-        if check is None:
-            return f
-        elif check(f):
-            f.seek(0)
-            return f
-        f.close()
-
-    if os.path.exists(fn):
-        f = check_valid_file(fn)
-        if f is not None:
-            return f
-        unlink(fn)
-
-    # Verify the requirement before downloading the file
-    requires('urlfetch')
-
-    print >> get_original_stdout(), '\tfetching %s ...' % url
-    f = urllib2.urlopen(url, timeout=15)
-    try:
-        with open(fn, "wb") as out:
-            s = f.read()
-            while s:
-                out.write(s)
-                s = f.read()
-    finally:
-        f.close()
-
-    f = check_valid_file(fn)
-    if f is not None:
-        return f
-    raise TestFailed('invalid resource "%s"' % fn)
-
-
-class WarningsRecorder(object):
-    """Convenience wrapper for the warnings list returned on
-       entry to the warnings.catch_warnings() context manager.
-    """
-    def __init__(self, warnings_list):
-        self._warnings = warnings_list
-        self._last = 0
-
-    def __getattr__(self, attr):
-        if len(self._warnings) > self._last:
-            return getattr(self._warnings[-1], attr)
-        elif attr in warnings.WarningMessage._WARNING_DETAILS:
-            return None
-        raise AttributeError("%r has no attribute %r" % (self, attr))
-
-    @property
-    def warnings(self):
-        return self._warnings[self._last:]
-
-    def reset(self):
-        self._last = len(self._warnings)
-
-
-def _filterwarnings(filters, quiet=False):
-    """Catch the warnings, then check if all the expected
-    warnings have been raised and re-raise unexpected warnings.
-    If 'quiet' is True, only re-raise the unexpected warnings.
-    """
-    # Clear the warning registry of the calling module
-    # in order to re-raise the warnings.
-    frame = sys._getframe(2)
-    registry = frame.f_globals.get('__warningregistry__')
-    if registry:
-        registry.clear()
-    with warnings.catch_warnings(record=True) as w:
-        # Set filter "always" to record all warnings.  Because
-        # test_warnings swap the module, we need to look up in
-        # the sys.modules dictionary.
-        sys.modules['warnings'].simplefilter("always")
-        yield WarningsRecorder(w)
-    # Filter the recorded warnings
-    reraise = [warning.message for warning in w]
-    missing = []
-    for msg, cat in filters:
-        seen = False
-        for exc in reraise[:]:
-            message = str(exc)
-            # Filter out the matching messages
-            if (re.match(msg, message, re.I) and
-                issubclass(exc.__class__, cat)):
-                seen = True
-                reraise.remove(exc)
-        if not seen and not quiet:
-            # This filter caught nothing
-            missing.append((msg, cat.__name__))
-    if reraise:
-        raise AssertionError("unhandled warning %r" % reraise[0])
-    if missing:
-        raise AssertionError("filter (%r, %s) did not catch any warning" %
-                             missing[0])
-
-
-@contextlib.contextmanager
-def check_warnings(*filters, **kwargs):
-    """Context manager to silence warnings.
-
-    Accept 2-tuples as positional arguments:
-        ("message regexp", WarningCategory)
-
-    Optional argument:
-     - if 'quiet' is True, it does not fail if a filter catches nothing
-        (default True without argument,
-         default False if some filters are defined)
-
-    Without argument, it defaults to:
-        check_warnings(("", Warning), quiet=True)
-    """
-    quiet = kwargs.get('quiet')
-    if not filters:
-        filters = (("", Warning),)
-        # Preserve backward compatibility
-        if quiet is None:
-            quiet = True
-    return _filterwarnings(filters, quiet)
-
-
-@contextlib.contextmanager
-def check_py3k_warnings(*filters, **kwargs):
-    """Context manager to silence py3k warnings.
-
-    Accept 2-tuples as positional arguments:
-        ("message regexp", WarningCategory)
-
-    Optional argument:
-     - if 'quiet' is True, it does not fail if a filter catches nothing
-        (default False)
-
-    Without argument, it defaults to:
-        check_py3k_warnings(("", DeprecationWarning), quiet=False)
-    """
-    if sys.py3kwarning:
-        if not filters:
-            filters = (("", DeprecationWarning),)
-    else:
-        # It should not raise any py3k warning
-        filters = ()
-    return _filterwarnings(filters, kwargs.get('quiet'))
-
-
-class CleanImport(object):
-    """Context manager to force import to return a new module reference.
-
-    This is useful for testing module-level behaviours, such as
-    the emission of a DeprecationWarning on import.
-
-    Use like this:
-
-        with CleanImport("foo"):
-            importlib.import_module("foo") # new reference
-    """
-
-    def __init__(self, *module_names):
-        self.original_modules = sys.modules.copy()
-        for module_name in module_names:
-            if module_name in sys.modules:
-                module = sys.modules[module_name]
-                # It is possible that module_name is just an alias for
-                # another module (e.g. stub for modules renamed in 3.x).
-                # In that case, we also need delete the real module to clear
-                # the import cache.
-                if module.__name__ != module_name:
-                    del sys.modules[module.__name__]
-                del sys.modules[module_name]
-
-    def __enter__(self):
-        return self
-
-    def __exit__(self, *ignore_exc):
-        sys.modules.update(self.original_modules)
-
-
-class EnvironmentVarGuard(UserDict.DictMixin):
-
-    """Class to help protect the environment variable properly.  Can be used as
-    a context manager."""
-
-    def __init__(self):
-        self._environ = os.environ
-        self._changed = {}
-
-    def __getitem__(self, envvar):
-        return self._environ[envvar]
-
-    def __setitem__(self, envvar, value):
-        # Remember the initial value on the first access
-        if envvar not in self._changed:
-            self._changed[envvar] = self._environ.get(envvar)
-        self._environ[envvar] = value
-
-    def __delitem__(self, envvar):
-        # Remember the initial value on the first access
-        if envvar not in self._changed:
-            self._changed[envvar] = self._environ.get(envvar)
-        if envvar in self._environ:
-            del self._environ[envvar]
-
-    def keys(self):
-        return self._environ.keys()
-
-    def set(self, envvar, value):
-        self[envvar] = value
-
-    def unset(self, envvar):
-        del self[envvar]
-
-    def __enter__(self):
-        return self
-
-    def __exit__(self, *ignore_exc):
-        for (k, v) in self._changed.items():
-            if v is None:
-                if k in self._environ:
-                    del self._environ[k]
-            else:
-                self._environ[k] = v
-        os.environ = self._environ
-
-
-class DirsOnSysPath(object):
-    """Context manager to temporarily add directories to sys.path.
-
-    This makes a copy of sys.path, appends any directories given
-    as positional arguments, then reverts sys.path to the copied
-    settings when the context ends.
-
-    Note that *all* sys.path modifications in the body of the
-    context manager, including replacement of the object,
-    will be reverted at the end of the block.
-    """
-
-    def __init__(self, *paths):
-        self.original_value = sys.path[:]
-        self.original_object = sys.path
-        sys.path.extend(paths)
-
-    def __enter__(self):
-        return self
-
-    def __exit__(self, *ignore_exc):
-        sys.path = self.original_object
-        sys.path[:] = self.original_value
-
-
-class TransientResource(object):
-
-    """Raise ResourceDenied if an exception is raised while the context manager
-    is in effect that matches the specified exception and attributes."""
-
-    def __init__(self, exc, **kwargs):
-        self.exc = exc
-        self.attrs = kwargs
-
-    def __enter__(self):
-        return self
-
-    def __exit__(self, type_=None, value=None, traceback=None):
-        """If type_ is a subclass of self.exc and value has attributes matching
-        self.attrs, raise ResourceDenied.  Otherwise let the exception
-        propagate (if any)."""
-        if type_ is not None and issubclass(self.exc, type_):
-            for attr, attr_value in self.attrs.iteritems():
-                if not hasattr(value, attr):
-                    break
-                if getattr(value, attr) != attr_value:
-                    break
-            else:
-                raise ResourceDenied("an optional resource is not available")
-
-
-@contextlib.contextmanager
-def transient_internet(resource_name, timeout=30.0, errnos=()):
-    """Return a context manager that raises ResourceDenied when various issues
-    with the Internet connection manifest themselves as exceptions."""
-    default_errnos = [
-        ('ECONNREFUSED', 111),
-        ('ECONNRESET', 104),
-        ('EHOSTUNREACH', 113),
-        ('ENETUNREACH', 101),
-        ('ETIMEDOUT', 110),
-    ]
-    default_gai_errnos = [
-        ('EAI_NONAME', -2),
-        ('EAI_NODATA', -5),
-    ]
-
-    denied = ResourceDenied("Resource '%s' is not available" % resource_name)
-    captured_errnos = errnos
-    gai_errnos = []
-    if not captured_errnos:
-        captured_errnos = [getattr(errno, name, num)
-                           for (name, num) in default_errnos]
-        gai_errnos = [getattr(socket, name, num)
-                      for (name, num) in default_gai_errnos]
-
-    def filter_error(err):
-        n = getattr(err, 'errno', None)
-        if (isinstance(err, socket.timeout) or
-            (isinstance(err, socket.gaierror) and n in gai_errnos) or
-            n in captured_errnos):
-            if not verbose:
-                sys.stderr.write(denied.args[0] + "\n")
-            raise denied
-
-    old_timeout = socket.getdefaulttimeout()
-    try:
-        if timeout is not None:
-            socket.setdefaulttimeout(timeout)
-        yield
-    except IOError as err:
-        # urllib can wrap original socket errors multiple times (!), we must
-        # unwrap to get at the original error.
-        while True:
-            a = err.args
-            if len(a) >= 1 and isinstance(a[0], IOError):
-                err = a[0]
-            # The error can also be wrapped as args[1]:
-            #    except socket.error as msg:
-            #        raise IOError('socket error', msg).with_traceback(sys.exc_info()[2])
-            elif len(a) >= 2 and isinstance(a[1], IOError):
-                err = a[1]
-            else:
-                break
-        filter_error(err)
-        raise
-    # XXX should we catch generic exceptions and look for their
-    # __cause__ or __context__?
-    finally:
-        socket.setdefaulttimeout(old_timeout)
-
-
-@contextlib.contextmanager
-def captured_output(stream_name):
-    """Return a context manager used by captured_stdout and captured_stdin
-    that temporarily replaces the sys stream *stream_name* with a StringIO."""
-    import StringIO
-    orig_stdout = getattr(sys, stream_name)
-    setattr(sys, stream_name, StringIO.StringIO())
-    try:
-        yield getattr(sys, stream_name)
-    finally:
-        setattr(sys, stream_name, orig_stdout)
-
-def captured_stdout():
-    """Capture the output of sys.stdout:
-
-       with captured_stdout() as s:
-           print "hello"
-       self.assertEqual(s.getvalue(), "hello")
-    """
-    return captured_output("stdout")
-
-def captured_stdin():
-    return captured_output("stdin")
-
-def gc_collect():
-    """Force as many objects as possible to be collected.
-
-    In non-CPython implementations of Python, this is needed because timely
-    deallocation is not guaranteed by the garbage collector.  (Even in CPython
-    this can be the case in case of reference cycles.)  This means that __del__
-    methods may be called later than expected and weakrefs may remain alive for
-    longer than expected.  This function tries its best to force all garbage
-    objects to disappear.
-    """
-    gc.collect()
-    if is_jython:
-        time.sleep(0.1)
-    gc.collect()
-    gc.collect()
-
-
-#=======================================================================
-# Decorator for running a function in a different locale, correctly resetting
-# it afterwards.
-
-def run_with_locale(catstr, *locales):
-    def decorator(func):
-        def inner(*args, **kwds):
-            try:
-                import locale
-                category = getattr(locale, catstr)
-                orig_locale = locale.setlocale(category)
-            except AttributeError:
-                # if the test author gives us an invalid category string
-                raise
-            except:
-                # cannot retrieve original locale, so do nothing
-                locale = orig_locale = None
-            else:
-                for loc in locales:
-                    try:
-                        locale.setlocale(category, loc)
-                        break
-                    except:
-                        pass
-
-            # now run the function, resetting the locale on exceptions
-            try:
-                return func(*args, **kwds)
-            finally:
-                if locale and orig_locale:
-                    locale.setlocale(category, orig_locale)
-        inner.func_name = func.func_name
-        inner.__doc__ = func.__doc__
-        return inner
-    return decorator
-
-#=======================================================================
-# Big-memory-test support. Separate from 'resources' because memory use should be configurable.
-
-# Some handy shorthands. Note that these are used for byte-limits as well
-# as size-limits, in the various bigmem tests
-_1M = 1024*1024
-_1G = 1024 * _1M
-_2G = 2 * _1G
-_4G = 4 * _1G
-
-MAX_Py_ssize_t = sys.maxsize
-
-def set_memlimit(limit):
-    global max_memuse
-    global real_max_memuse
-    sizes = {
-        'k': 1024,
-        'm': _1M,
-        'g': _1G,
-        't': 1024*_1G,
-    }
-    m = re.match(r'(\d+(\.\d+)?) (K|M|G|T)b?$', limit,
-                 re.IGNORECASE | re.VERBOSE)
-    if m is None:
-        raise ValueError('Invalid memory limit %r' % (limit,))
-    memlimit = int(float(m.group(1)) * sizes[m.group(3).lower()])
-    real_max_memuse = memlimit
-    if memlimit > MAX_Py_ssize_t:
-        memlimit = MAX_Py_ssize_t
-    if memlimit < _2G - 1:
-        raise ValueError('Memory limit %r too low to be useful' % (limit,))
-    max_memuse = memlimit
-
-def bigmemtest(minsize, memuse, overhead=5*_1M):
-    """Decorator for bigmem tests.
-
-    'minsize' is the minimum useful size for the test (in arbitrary,
-    test-interpreted units.) 'memuse' is the number of 'bytes per size' for
-    the test, or a good estimate of it. 'overhead' specifies fixed overhead,
-    independent of the testsize, and defaults to 5Mb.
-
-    The decorator tries to guess a good value for 'size' and passes it to
-    the decorated test function. If minsize * memuse is more than the
-    allowed memory use (as defined by max_memuse), the test is skipped.
-    Otherwise, minsize is adjusted upward to use up to max_memuse.
-    """
-    def decorator(f):
-        def wrapper(self):
-            if not max_memuse:
-                # If max_memuse is 0 (the default),
-                # we still want to run the tests with size set to a few kb,
-                # to make sure they work. We still want to avoid using
-                # too much memory, though, but we do that noisily.
-                maxsize = 5147
-                self.assertFalse(maxsize * memuse + overhead > 20 * _1M)
-            else:
-                maxsize = int((max_memuse - overhead) / memuse)
-                if maxsize < minsize:
-                    # Really ought to print 'test skipped' or something
-                    if verbose:
-                        sys.stderr.write("Skipping %s because of memory "
-                                         "constraint\n" % (f.__name__,))
-                    return
-                # Try to keep some breathing room in memory use
-                maxsize = max(maxsize - 50 * _1M, minsize)
-            return f(self, maxsize)
-        wrapper.minsize = minsize
-        wrapper.memuse = memuse
-        wrapper.overhead = overhead
-        return wrapper
-    return decorator
-
-def precisionbigmemtest(size, memuse, overhead=5*_1M):
-    def decorator(f):
-        def wrapper(self):
-            if not real_max_memuse:
-                maxsize = 5147
-            else:
-                maxsize = size
-
-                if real_max_memuse and real_max_memuse < maxsize * memuse:
-                    if verbose:
-                        sys.stderr.write("Skipping %s because of memory "
-                                         "constraint\n" % (f.__name__,))
-                    return
-
-            return f(self, maxsize)
-        wrapper.size = size
-        wrapper.memuse = memuse
-        wrapper.overhead = overhead
-        return wrapper
-    return decorator
-
-def bigaddrspacetest(f):
-    """Decorator for tests that fill the address space."""
-    def wrapper(self):
-        if max_memuse < MAX_Py_ssize_t:
-            if verbose:
-                sys.stderr.write("Skipping %s because of memory "
-                                 "constraint\n" % (f.__name__,))
-        else:
-            return f(self)
-    return wrapper
-
-#=======================================================================
-# unittest integration.
-
-class BasicTestRunner:
-    def run(self, test):
-        result = unittest.TestResult()
-        test(result)
-        return result
-
-def _id(obj):
-    return obj
-
-def requires_resource(resource):
-    if is_resource_enabled(resource):
-        return _id
-    else:
-        return unittest.skip("resource {0!r} is not enabled".format(resource))
-
-def cpython_only(test):
-    """
-    Decorator for tests only applicable on CPython.
-    """
-    return impl_detail(cpython=True)(test)
-
-def impl_detail(msg=None, **guards):
-    if check_impl_detail(**guards):
-        return _id
-    if msg is None:
-        guardnames, default = _parse_guards(guards)
-        if default:
-            msg = "implementation detail not available on {0}"
-        else:
-            msg = "implementation detail specific to {0}"
-        guardnames = sorted(guardnames.keys())
-        msg = msg.format(' or '.join(guardnames))
-    return unittest.skip(msg)
-
-def _parse_guards(guards):
-    # Returns a tuple ({platform_name: run_me}, default_value)
-    if not guards:
-        return ({'cpython': True}, False)
-    is_true = guards.values()[0]
-    assert guards.values() == [is_true] * len(guards)   # all True or all False
-    return (guards, not is_true)
-
-# Use the following check to guard CPython's implementation-specific tests --
-# or to run them only on the implementation(s) guarded by the arguments.
-def check_impl_detail(**guards):
-    """This function returns True or False depending on the host platform.
-       Examples:
-          if check_impl_detail():               # only on CPython (default)
-          if check_impl_detail(jython=True):    # only on Jython
-          if check_impl_detail(cpython=False):  # everywhere except on CPython
-    """
-    guards, default = _parse_guards(guards)
-    return guards.get(platform.python_implementation().lower(), default)
-
-
-
-def _run_suite(suite):
-    """Run tests from a unittest.TestSuite-derived class."""
-    if verbose:
-        runner = unittest.TextTestRunner(sys.stdout, verbosity=2)
-    else:
-        runner = BasicTestRunner()
-
-    result = runner.run(suite)
-    if not result.wasSuccessful():
-        if len(result.errors) == 1 and not result.failures:
-            err = result.errors[0][1]
-        elif len(result.failures) == 1 and not result.errors:
-            err = result.failures[0][1]
-        else:
-            err = "multiple errors occurred"
-            if not verbose:
-                err += "; run in verbose mode for details"
-        raise TestFailed(err)
-
-
-def run_unittest(*classes):
-    """Run tests from unittest.TestCase-derived classes."""
-    valid_types = (unittest.TestSuite, unittest.TestCase)
-    suite = unittest.TestSuite()
-    for cls in classes:
-        if isinstance(cls, str):
-            if cls in sys.modules:
-                suite.addTest(unittest.findTestCases(sys.modules[cls]))
-            else:
-                raise ValueError("str arguments must be keys in sys.modules")
-        elif isinstance(cls, valid_types):
-            suite.addTest(cls)
-        else:
-            suite.addTest(unittest.makeSuite(cls))
-    _run_suite(suite)
-
-
-#=======================================================================
-# doctest driver.
-
-def run_doctest(module, verbosity=None):
-    """Run doctest on the given module.  Return (#failures, #tests).
-
-    If optional argument verbosity is not specified (or is None), pass
-    test_support's belief about verbosity on to doctest.  Else doctest's
-    usual behavior is used (it searches sys.argv for -v).
-    """
-
-    import doctest
-
-    if verbosity is None:
-        verbosity = verbose
-    else:
-        verbosity = None
-
-    # Direct doctest output (normally just errors) to real stdout; doctest
-    # output shouldn't be compared by regrtest.
-    save_stdout = sys.stdout
-    sys.stdout = get_original_stdout()
-    try:
-        f, t = doctest.testmod(module, verbose=verbosity)
-        if f:
-            raise TestFailed("%d of %d doctests failed" % (f, t))
-    finally:
-        sys.stdout = save_stdout
-    if verbose:
-        print 'doctest (%s) ... %d tests with zero failures' % (module.__name__, t)
-    return f, t
-
-#=======================================================================
-# Threading support to prevent reporting refleaks when running regrtest.py -R
-
-# NOTE: we use thread._count() rather than threading.enumerate() (or the
-# moral equivalent thereof) because a threading.Thread object is still alive
-# until its __bootstrap() method has returned, even after it has been
-# unregistered from the threading module.
-# thread._count(), on the other hand, only gets decremented *after* the
-# __bootstrap() method has returned, which gives us reliable reference counts
-# at the end of a test run.
-
-def threading_setup():
-    if thread:
-        return thread._count(),
-    else:
-        return 1,
-
-def threading_cleanup(nb_threads):
-    if not thread:
-        return
-
-    _MAX_COUNT = 10
-    for count in range(_MAX_COUNT):
-        n = thread._count()
-        if n == nb_threads:
-            break
-        time.sleep(0.1)
-    # XXX print a warning in case of failure?
-
-def reap_threads(func):
-    """Use this function when threads are being used.  This will
-    ensure that the threads are cleaned up even when the test fails.
-    If threading is unavailable this function does nothing.
-    """
-    if not thread:
-        return func
-
-    @functools.wraps(func)
-    def decorator(*args):
-        key = threading_setup()
-        try:
-            return func(*args)
-        finally:
-            threading_cleanup(*key)
-    return decorator
-
-def reap_children():
-    """Use this function at the end of test_main() whenever sub-processes
-    are started.  This will help ensure that no extra children (zombies)
-    stick around to hog resources and create problems when looking
-    for refleaks.
-    """
-
-    # Reap all our dead child processes so we don't leave zombies around.
-    # These hog resources and might be causing some of the buildbots to die.
-    if hasattr(os, 'waitpid'):
-        any_process = -1
-        while True:
-            try:
-                # This will raise an exception on Windows.  That's ok.
-                pid, status = os.waitpid(any_process, os.WNOHANG)
-                if pid == 0:
-                    break
-            except:
-                break
-
-def py3k_bytes(b):
-    """Emulate the py3k bytes() constructor.
-
-    NOTE: This is only a best effort function.
-    """
-    try:
-        # memoryview?
-        return b.tobytes()
-    except AttributeError:
-        try:
-            # iterable of ints?
-            return b"".join(chr(x) for x in b)
-        except TypeError:
-            return bytes(b)
-
-def args_from_interpreter_flags():
-    """Return a list of command-line arguments reproducing the current
-    settings in sys.flags."""
-    flag_opt_map = {
-        'bytes_warning': 'b',
-        'dont_write_bytecode': 'B',
-        'ignore_environment': 'E',
-        'no_user_site': 's',
-        'no_site': 'S',
-        'optimize': 'O',
-        'py3k_warning': '3',
-        'verbose': 'v',
-    }
-    args = []
-    for flag, opt in flag_opt_map.items():
-        v = getattr(sys.flags, flag)
-        if v > 0:
-            args.append('-' + opt * v)
-    return args
-
-def strip_python_stderr(stderr):
-    """Strip the stderr of a Python process from potential debug output
-    emitted by the interpreter.
-
-    This will typically be run on the result of the communicate() method
-    of a subprocess.Popen object.
-    """
-    stderr = re.sub(br"\[\d+ refs\]\r?\n?$", b"", stderr).strip()
-    return stderr
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_symtable.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_symtable.py
deleted file mode 100644
index 9294179..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_symtable.py
+++ /dev/null
@@ -1,184 +0,0 @@
-"""
-Test the API of the symtable module.
-"""
-import symtable
-import unittest
-
-from test import test_support
-
-
-TEST_CODE = """
-import sys
-
-glob = 42
-
-class Mine:
-    instance_var = 24
-    def a_method(p1, p2):
-        pass
-
-def spam(a, b, *var, **kw):
-    global bar
-    bar = 47
-    x = 23
-    glob
-    def internal():
-        return x
-    return internal
-
-def foo():
-    exec 'm'
-    from sys import *
-
-def namespace_test(): pass
-def namespace_test(): pass
-"""
-
-
-def find_block(block, name):
-    for ch in block.get_children():
-        if ch.get_name() == name:
-            return ch
-
-
-class SymtableTest(unittest.TestCase):
-
-    with test_support.check_warnings(
-            ("import \* only allowed at module level", SyntaxWarning)):
-        top = symtable.symtable(TEST_CODE, "?", "exec")
-    # These correspond to scopes in TEST_CODE
-    Mine = find_block(top, "Mine")
-    a_method = find_block(Mine, "a_method")
-    spam = find_block(top, "spam")
-    internal = find_block(spam, "internal")
-    foo = find_block(top, "foo")
-
-    def test_type(self):
-        self.assertEqual(self.top.get_type(), "module")
-        self.assertEqual(self.Mine.get_type(), "class")
-        self.assertEqual(self.a_method.get_type(), "function")
-        self.assertEqual(self.spam.get_type(), "function")
-        self.assertEqual(self.internal.get_type(), "function")
-
-    def test_optimized(self):
-        self.assertFalse(self.top.is_optimized())
-        self.assertFalse(self.top.has_exec())
-        self.assertFalse(self.top.has_import_star())
-
-        self.assertTrue(self.spam.is_optimized())
-
-        self.assertFalse(self.foo.is_optimized())
-        self.assertTrue(self.foo.has_exec())
-        self.assertTrue(self.foo.has_import_star())
-
-    def test_nested(self):
-        self.assertFalse(self.top.is_nested())
-        self.assertFalse(self.Mine.is_nested())
-        self.assertFalse(self.spam.is_nested())
-        self.assertTrue(self.internal.is_nested())
-
-    def test_children(self):
-        self.assertTrue(self.top.has_children())
-        self.assertTrue(self.Mine.has_children())
-        self.assertFalse(self.foo.has_children())
-
-    def test_lineno(self):
-        self.assertEqual(self.top.get_lineno(), 0)
-        self.assertEqual(self.spam.get_lineno(), 11)
-
-    def test_function_info(self):
-        func = self.spam
-        self.assertEqual(func.get_parameters(), ("a", "b", "kw", "var"))
-        self.assertEqual(func.get_locals(),
-                         ("a", "b", "internal", "kw", "var", "x"))
-        self.assertEqual(func.get_globals(), ("bar", "glob"))
-        self.assertEqual(self.internal.get_frees(), ("x",))
-
-    def test_globals(self):
-        self.assertTrue(self.spam.lookup("glob").is_global())
-        self.assertFalse(self.spam.lookup("glob").is_declared_global())
-        self.assertTrue(self.spam.lookup("bar").is_global())
-        self.assertTrue(self.spam.lookup("bar").is_declared_global())
-        self.assertFalse(self.internal.lookup("x").is_global())
-        self.assertFalse(self.Mine.lookup("instance_var").is_global())
-
-    def test_local(self):
-        self.assertTrue(self.spam.lookup("x").is_local())
-        self.assertFalse(self.internal.lookup("x").is_local())
-
-    def test_referenced(self):
-        self.assertTrue(self.internal.lookup("x").is_referenced())
-        self.assertTrue(self.spam.lookup("internal").is_referenced())
-        self.assertFalse(self.spam.lookup("x").is_referenced())
-
-    def test_parameters(self):
-        for sym in ("a", "var", "kw"):
-            self.assertTrue(self.spam.lookup(sym).is_parameter())
-        self.assertFalse(self.spam.lookup("x").is_parameter())
-
-    def test_symbol_lookup(self):
-        self.assertEqual(len(self.top.get_identifiers()),
-                         len(self.top.get_symbols()))
-
-        self.assertRaises(KeyError, self.top.lookup, "not_here")
-
-    def test_namespaces(self):
-        self.assertTrue(self.top.lookup("Mine").is_namespace())
-        self.assertTrue(self.Mine.lookup("a_method").is_namespace())
-        self.assertTrue(self.top.lookup("spam").is_namespace())
-        self.assertTrue(self.spam.lookup("internal").is_namespace())
-        self.assertTrue(self.top.lookup("namespace_test").is_namespace())
-        self.assertFalse(self.spam.lookup("x").is_namespace())
-
-        self.assertTrue(self.top.lookup("spam").get_namespace() is self.spam)
-        ns_test = self.top.lookup("namespace_test")
-        self.assertEqual(len(ns_test.get_namespaces()), 2)
-        self.assertRaises(ValueError, ns_test.get_namespace)
-
-    def test_assigned(self):
-        self.assertTrue(self.spam.lookup("x").is_assigned())
-        self.assertTrue(self.spam.lookup("bar").is_assigned())
-        self.assertTrue(self.top.lookup("spam").is_assigned())
-        self.assertTrue(self.Mine.lookup("a_method").is_assigned())
-        self.assertFalse(self.internal.lookup("x").is_assigned())
-
-    def test_imported(self):
-        self.assertTrue(self.top.lookup("sys").is_imported())
-
-    def test_name(self):
-        self.assertEqual(self.top.get_name(), "top")
-        self.assertEqual(self.spam.get_name(), "spam")
-        self.assertEqual(self.spam.lookup("x").get_name(), "x")
-        self.assertEqual(self.Mine.get_name(), "Mine")
-
-    def test_class_info(self):
-        self.assertEqual(self.Mine.get_methods(), ('a_method',))
-
-    def test_filename_correct(self):
-        ### Bug tickler: SyntaxError file name correct whether error raised
-        ### while parsing or building symbol table.
-        def checkfilename(brokencode):
-            try:
-                symtable.symtable(brokencode, "spam", "exec")
-            except SyntaxError as e:
-                self.assertEqual(e.filename, "spam")
-            else:
-                self.fail("no SyntaxError for %r" % (brokencode,))
-        checkfilename("def f(x): foo)(")  # parse-time
-        checkfilename("def f(x): global x")  # symtable-build-time
-
-    def test_eval(self):
-        symbols = symtable.symtable("42", "?", "eval")
-
-    def test_single(self):
-        symbols = symtable.symtable("42", "?", "single")
-
-    def test_exec(self):
-        symbols = symtable.symtable("def f(x): return x", "?", "exec")
-
-
-def test_main():
-    test_support.run_unittest(SymtableTest)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_syntax.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_syntax.py
deleted file mode 100644
index 8e2ee0e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_syntax.py
+++ /dev/null
@@ -1,572 +0,0 @@
-"""This module tests SyntaxErrors.
-
-Here's an example of the sort of thing that is tested.
-
->>> def f(x):
-...     global x
-Traceback (most recent call last):
-SyntaxError: name 'x' is local and global (<doctest test.test_syntax[0]>, line 1)
-
-The tests are all raise SyntaxErrors.  They were created by checking
-each C call that raises SyntaxError.  There are several modules that
-raise these exceptions-- ast.c, compile.c, future.c, pythonrun.c, and
-symtable.c.
-
-The parser itself outlaws a lot of invalid syntax.  None of these
-errors are tested here at the moment.  We should add some tests; since
-there are infinitely many programs with invalid syntax, we would need
-to be judicious in selecting some.
-
-The compiler generates a synthetic module name for code executed by
-doctest.  Since all the code comes from the same module, a suffix like
-[1] is appended to the module name, As a consequence, changing the
-order of tests in this module means renumbering all the errors after
-it.  (Maybe we should enable the ellipsis option for these tests.)
-
-In ast.c, syntax errors are raised by calling ast_error().
-
-Errors from set_context():
-
->>> obj.None = 1
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[1]>", line 1
-SyntaxError: cannot assign to None
-
->>> None = 1
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[2]>", line 1
-SyntaxError: cannot assign to None
-
-It's a syntax error to assign to the empty tuple.  Why isn't it an
-error to assign to the empty list?  It will always raise some error at
-runtime.
-
->>> () = 1
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[3]>", line 1
-SyntaxError: can't assign to ()
-
->>> f() = 1
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[4]>", line 1
-SyntaxError: can't assign to function call
-
->>> del f()
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[5]>", line 1
-SyntaxError: can't delete function call
-
->>> a + 1 = 2
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[6]>", line 1
-SyntaxError: can't assign to operator
-
->>> (x for x in x) = 1
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[7]>", line 1
-SyntaxError: can't assign to generator expression
-
->>> 1 = 1
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[8]>", line 1
-SyntaxError: can't assign to literal
-
->>> "abc" = 1
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[8]>", line 1
-SyntaxError: can't assign to literal
-
->>> `1` = 1
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[10]>", line 1
-SyntaxError: can't assign to repr
-
-If the left-hand side of an assignment is a list or tuple, an illegal
-expression inside that contain should still cause a syntax error.
-This test just checks a couple of cases rather than enumerating all of
-them.
-
->>> (a, "b", c) = (1, 2, 3)
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[11]>", line 1
-SyntaxError: can't assign to literal
-
->>> [a, b, c + 1] = [1, 2, 3]
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[12]>", line 1
-SyntaxError: can't assign to operator
-
->>> a if 1 else b = 1
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[13]>", line 1
-SyntaxError: can't assign to conditional expression
-
-From compiler_complex_args():
-
->>> def f(None=1):
-...     pass
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[14]>", line 1
-SyntaxError: cannot assign to None
-
-
-From ast_for_arguments():
-
->>> def f(x, y=1, z):
-...     pass
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[15]>", line 1
-SyntaxError: non-default argument follows default argument
-
->>> def f(x, None):
-...     pass
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[16]>", line 1
-SyntaxError: cannot assign to None
-
->>> def f(*None):
-...     pass
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[17]>", line 1
-SyntaxError: cannot assign to None
-
->>> def f(**None):
-...     pass
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[18]>", line 1
-SyntaxError: cannot assign to None
-
-
-From ast_for_funcdef():
-
->>> def None(x):
-...     pass
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[19]>", line 1
-SyntaxError: cannot assign to None
-
-
-From ast_for_call():
-
->>> def f(it, *varargs):
-...     return list(it)
->>> L = range(10)
->>> f(x for x in L)
-[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
->>> f(x for x in L, 1)
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[23]>", line 1
-SyntaxError: Generator expression must be parenthesized if not sole argument
->>> f((x for x in L), 1)
-[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-
->>> f(i0,  i1,  i2,  i3,  i4,  i5,  i6,  i7,  i8,  i9,  i10,  i11,
-...   i12,  i13,  i14,  i15,  i16,  i17,  i18,  i19,  i20,  i21,  i22,
-...   i23,  i24,  i25,  i26,  i27,  i28,  i29,  i30,  i31,  i32,  i33,
-...   i34,  i35,  i36,  i37,  i38,  i39,  i40,  i41,  i42,  i43,  i44,
-...   i45,  i46,  i47,  i48,  i49,  i50,  i51,  i52,  i53,  i54,  i55,
-...   i56,  i57,  i58,  i59,  i60,  i61,  i62,  i63,  i64,  i65,  i66,
-...   i67,  i68,  i69,  i70,  i71,  i72,  i73,  i74,  i75,  i76,  i77,
-...   i78,  i79,  i80,  i81,  i82,  i83,  i84,  i85,  i86,  i87,  i88,
-...   i89,  i90,  i91,  i92,  i93,  i94,  i95,  i96,  i97,  i98,  i99,
-...   i100,  i101,  i102,  i103,  i104,  i105,  i106,  i107,  i108,
-...   i109,  i110,  i111,  i112,  i113,  i114,  i115,  i116,  i117,
-...   i118,  i119,  i120,  i121,  i122,  i123,  i124,  i125,  i126,
-...   i127,  i128,  i129,  i130,  i131,  i132,  i133,  i134,  i135,
-...   i136,  i137,  i138,  i139,  i140,  i141,  i142,  i143,  i144,
-...   i145,  i146,  i147,  i148,  i149,  i150,  i151,  i152,  i153,
-...   i154,  i155,  i156,  i157,  i158,  i159,  i160,  i161,  i162,
-...   i163,  i164,  i165,  i166,  i167,  i168,  i169,  i170,  i171,
-...   i172,  i173,  i174,  i175,  i176,  i177,  i178,  i179,  i180,
-...   i181,  i182,  i183,  i184,  i185,  i186,  i187,  i188,  i189,
-...   i190,  i191,  i192,  i193,  i194,  i195,  i196,  i197,  i198,
-...   i199,  i200,  i201,  i202,  i203,  i204,  i205,  i206,  i207,
-...   i208,  i209,  i210,  i211,  i212,  i213,  i214,  i215,  i216,
-...   i217,  i218,  i219,  i220,  i221,  i222,  i223,  i224,  i225,
-...   i226,  i227,  i228,  i229,  i230,  i231,  i232,  i233,  i234,
-...   i235,  i236,  i237,  i238,  i239,  i240,  i241,  i242,  i243,
-...   i244,  i245,  i246,  i247,  i248,  i249,  i250,  i251,  i252,
-...   i253,  i254,  i255)
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[25]>", line 1
-SyntaxError: more than 255 arguments
-
-The actual error cases counts positional arguments, keyword arguments,
-and generator expression arguments separately.  This test combines the
-three.
-
->>> f(i0,  i1,  i2,  i3,  i4,  i5,  i6,  i7,  i8,  i9,  i10,  i11,
-...   i12,  i13,  i14,  i15,  i16,  i17,  i18,  i19,  i20,  i21,  i22,
-...   i23,  i24,  i25,  i26,  i27,  i28,  i29,  i30,  i31,  i32,  i33,
-...   i34,  i35,  i36,  i37,  i38,  i39,  i40,  i41,  i42,  i43,  i44,
-...   i45,  i46,  i47,  i48,  i49,  i50,  i51,  i52,  i53,  i54,  i55,
-...   i56,  i57,  i58,  i59,  i60,  i61,  i62,  i63,  i64,  i65,  i66,
-...   i67,  i68,  i69,  i70,  i71,  i72,  i73,  i74,  i75,  i76,  i77,
-...   i78,  i79,  i80,  i81,  i82,  i83,  i84,  i85,  i86,  i87,  i88,
-...   i89,  i90,  i91,  i92,  i93,  i94,  i95,  i96,  i97,  i98,  i99,
-...   i100,  i101,  i102,  i103,  i104,  i105,  i106,  i107,  i108,
-...   i109,  i110,  i111,  i112,  i113,  i114,  i115,  i116,  i117,
-...   i118,  i119,  i120,  i121,  i122,  i123,  i124,  i125,  i126,
-...   i127,  i128,  i129,  i130,  i131,  i132,  i133,  i134,  i135,
-...   i136,  i137,  i138,  i139,  i140,  i141,  i142,  i143,  i144,
-...   i145,  i146,  i147,  i148,  i149,  i150,  i151,  i152,  i153,
-...   i154,  i155,  i156,  i157,  i158,  i159,  i160,  i161,  i162,
-...   i163,  i164,  i165,  i166,  i167,  i168,  i169,  i170,  i171,
-...   i172,  i173,  i174,  i175,  i176,  i177,  i178,  i179,  i180,
-...   i181,  i182,  i183,  i184,  i185,  i186,  i187,  i188,  i189,
-...   i190,  i191,  i192,  i193,  i194,  i195,  i196,  i197,  i198,
-...   i199,  i200,  i201,  i202,  i203,  i204,  i205,  i206,  i207,
-...   i208,  i209,  i210,  i211,  i212,  i213,  i214,  i215,  i216,
-...   i217,  i218,  i219,  i220,  i221,  i222,  i223,  i224,  i225,
-...   i226,  i227,  i228,  i229,  i230,  i231,  i232,  i233,  i234,
-...   i235, i236,  i237,  i238,  i239,  i240,  i241,  i242,  i243,
-...   (x for x in i244),  i245,  i246,  i247,  i248,  i249,  i250,  i251,
-...    i252=1, i253=1,  i254=1,  i255=1)
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[26]>", line 1
-SyntaxError: more than 255 arguments
-
->>> f(lambda x: x[0] = 3)
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[27]>", line 1
-SyntaxError: lambda cannot contain assignment
-
-The grammar accepts any test (basically, any expression) in the
-keyword slot of a call site.  Test a few different options.
-
->>> f(x()=2)
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[28]>", line 1
-SyntaxError: keyword can't be an expression
->>> f(a or b=1)
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[29]>", line 1
-SyntaxError: keyword can't be an expression
->>> f(x.y=1)
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[30]>", line 1
-SyntaxError: keyword can't be an expression
-
-
-More set_context():
-
->>> (x for x in x) += 1
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[31]>", line 1
-SyntaxError: can't assign to generator expression
->>> None += 1
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[32]>", line 1
-SyntaxError: cannot assign to None
->>> f() += 1
-Traceback (most recent call last):
-  File "<doctest test.test_syntax[33]>", line 1
-SyntaxError: can't assign to function call
-
-
-Test continue in finally in weird combinations.
-
-continue in for loop under finally should be ok.
-
-    >>> def test():
-    ...     try:
-    ...         pass
-    ...     finally:
-    ...         for abc in range(10):
-    ...             continue
-    ...     print abc
-    >>> test()
-    9
-
-Start simple, a continue in a finally should not be allowed.
-
-    >>> def test():
-    ...    for abc in range(10):
-    ...        try:
-    ...            pass
-    ...        finally:
-    ...            continue
-    Traceback (most recent call last):
-      ...
-      File "<doctest test.test_syntax[36]>", line 6
-    SyntaxError: 'continue' not supported inside 'finally' clause
-
-This is essentially a continue in a finally which should not be allowed.
-
-    >>> def test():
-    ...    for abc in range(10):
-    ...        try:
-    ...            pass
-    ...        finally:
-    ...            try:
-    ...                continue
-    ...            except:
-    ...                pass
-    Traceback (most recent call last):
-      ...
-      File "<doctest test.test_syntax[37]>", line 6
-    SyntaxError: 'continue' not supported inside 'finally' clause
-
-    >>> def foo():
-    ...     try:
-    ...         pass
-    ...     finally:
-    ...         continue
-    Traceback (most recent call last):
-      ...
-      File "<doctest test.test_syntax[38]>", line 5
-    SyntaxError: 'continue' not supported inside 'finally' clause
-
-    >>> def foo():
-    ...     for a in ():
-    ...       try:
-    ...           pass
-    ...       finally:
-    ...           continue
-    Traceback (most recent call last):
-      ...
-      File "<doctest test.test_syntax[39]>", line 6
-    SyntaxError: 'continue' not supported inside 'finally' clause
-
-    >>> def foo():
-    ...     for a in ():
-    ...         try:
-    ...             pass
-    ...         finally:
-    ...             try:
-    ...                 continue
-    ...             finally:
-    ...                 pass
-    Traceback (most recent call last):
-      ...
-      File "<doctest test.test_syntax[40]>", line 7
-    SyntaxError: 'continue' not supported inside 'finally' clause
-
-    >>> def foo():
-    ...  for a in ():
-    ...   try: pass
-    ...   finally:
-    ...    try:
-    ...     pass
-    ...    except:
-    ...     continue
-    Traceback (most recent call last):
-      ...
-      File "<doctest test.test_syntax[41]>", line 8
-    SyntaxError: 'continue' not supported inside 'finally' clause
-
-There is one test for a break that is not in a loop.  The compiler
-uses a single data structure to keep track of try-finally and loops,
-so we need to be sure that a break is actually inside a loop.  If it
-isn't, there should be a syntax error.
-
-   >>> try:
-   ...     print 1
-   ...     break
-   ...     print 2
-   ... finally:
-   ...     print 3
-   Traceback (most recent call last):
-     ...
-     File "<doctest test.test_syntax[42]>", line 3
-   SyntaxError: 'break' outside loop
-
-This should probably raise a better error than a SystemError (or none at all).
-In 2.5 there was a missing exception and an assert was triggered in a debug
-build.  The number of blocks must be greater than CO_MAXBLOCKS.  SF #1565514
-
-   >>> while 1:
-   ...  while 2:
-   ...   while 3:
-   ...    while 4:
-   ...     while 5:
-   ...      while 6:
-   ...       while 8:
-   ...        while 9:
-   ...         while 10:
-   ...          while 11:
-   ...           while 12:
-   ...            while 13:
-   ...             while 14:
-   ...              while 15:
-   ...               while 16:
-   ...                while 17:
-   ...                 while 18:
-   ...                  while 19:
-   ...                   while 20:
-   ...                    while 21:
-   ...                     while 22:
-   ...                      break
-   Traceback (most recent call last):
-     ...
-   SystemError: too many statically nested blocks
-
-This tests assignment-context; there was a bug in Python 2.5 where compiling
-a complex 'if' (one with 'elif') would fail to notice an invalid suite,
-leading to spurious errors.
-
-   >>> if 1:
-   ...   x() = 1
-   ... elif 1:
-   ...   pass
-   Traceback (most recent call last):
-     ...
-     File "<doctest test.test_syntax[44]>", line 2
-   SyntaxError: can't assign to function call
-
-   >>> if 1:
-   ...   pass
-   ... elif 1:
-   ...   x() = 1
-   Traceback (most recent call last):
-     ...
-     File "<doctest test.test_syntax[45]>", line 4
-   SyntaxError: can't assign to function call
-
-   >>> if 1:
-   ...   x() = 1
-   ... elif 1:
-   ...   pass
-   ... else:
-   ...   pass
-   Traceback (most recent call last):
-     ...
-     File "<doctest test.test_syntax[46]>", line 2
-   SyntaxError: can't assign to function call
-
-   >>> if 1:
-   ...   pass
-   ... elif 1:
-   ...   x() = 1
-   ... else:
-   ...   pass
-   Traceback (most recent call last):
-     ...
-     File "<doctest test.test_syntax[47]>", line 4
-   SyntaxError: can't assign to function call
-
-   >>> if 1:
-   ...   pass
-   ... elif 1:
-   ...   pass
-   ... else:
-   ...   x() = 1
-   Traceback (most recent call last):
-     ...
-     File "<doctest test.test_syntax[48]>", line 6
-   SyntaxError: can't assign to function call
-
->>> f(a=23, a=234)
-Traceback (most recent call last):
-   ...
-  File "<doctest test.test_syntax[49]>", line 1
-SyntaxError: keyword argument repeated
-
->>> del ()
-Traceback (most recent call last):
-   ...
-  File "<doctest test.test_syntax[50]>", line 1
-SyntaxError: can't delete ()
-
->>> {1, 2, 3} = 42
-Traceback (most recent call last):
-   ...
-   File "<doctest test.test_syntax[50]>", line 1
-SyntaxError: can't assign to literal
-
-Corner-case that used to crash:
-
-    >>> def f(*xx, **__debug__): pass
-    Traceback (most recent call last):
-    SyntaxError: cannot assign to __debug__
-
-"""
-
-import re
-import unittest
-import warnings
-
-from test import test_support
-
-class SyntaxTestCase(unittest.TestCase):
-
-    def _check_error(self, code, errtext,
-                     filename="<testcase>", mode="exec", subclass=None):
-        """Check that compiling code raises SyntaxError with errtext.
-
-        errtest is a regular expression that must be present in the
-        test of the exception raised.  If subclass is specified it
-        is the expected subclass of SyntaxError (e.g. IndentationError).
-        """
-        try:
-            compile(code, filename, mode)
-        except SyntaxError, err:
-            if subclass and not isinstance(err, subclass):
-                self.fail("SyntaxError is not a %s" % subclass.__name__)
-            mo = re.search(errtext, str(err))
-            if mo is None:
-                self.fail("%s did not contain '%r'" % (err, errtext,))
-        else:
-            self.fail("compile() did not raise SyntaxError")
-
-    def test_paren_arg_with_default(self):
-        self._check_error("def f((x)=23): pass",
-                          "parenthesized arg with default")
-
-    def test_assign_call(self):
-        self._check_error("f() = 1", "assign")
-
-    def test_assign_del(self):
-        self._check_error("del f()", "delete")
-
-    def test_global_err_then_warn(self):
-        # Bug tickler:  The SyntaxError raised for one global statement
-        # shouldn't be clobbered by a SyntaxWarning issued for a later one.
-        source = re.sub('(?m)^ *:', '', """\
-            :def error(a):
-            :    global a  # SyntaxError
-            :def warning():
-            :    b = 1
-            :    global b  # SyntaxWarning
-            :""")
-        warnings.filterwarnings(action='ignore', category=SyntaxWarning)
-        self._check_error(source, "global")
-        warnings.filters.pop(0)
-
-    def test_break_outside_loop(self):
-        self._check_error("break", "outside loop")
-
-    def test_delete_deref(self):
-        source = re.sub('(?m)^ *:', '', """\
-            :def foo(x):
-            :  def bar():
-            :    print x
-            :  del x
-            :""")
-        self._check_error(source, "nested scope")
-
-    def test_unexpected_indent(self):
-        self._check_error("foo()\n bar()\n", "unexpected indent",
-                          subclass=IndentationError)
-
-    def test_no_indent(self):
-        self._check_error("if 1:\nfoo()", "expected an indented block",
-                          subclass=IndentationError)
-
-    def test_bad_outdent(self):
-        self._check_error("if 1:\n  foo()\n bar()",
-                          "unindent does not match .* level",
-                          subclass=IndentationError)
-
-    def test_kwargs_last(self):
-        self._check_error("int(base=10, '2')", "non-keyword arg")
-
-def test_main():
-    test_support.run_unittest(SyntaxTestCase)
-    from test import test_syntax
-    with test_support.check_py3k_warnings(("backquote not supported",
-                                             SyntaxWarning)):
-        test_support.run_doctest(test_syntax, verbosity=True)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys.py
deleted file mode 100644
index 522c96a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys.py
+++ /dev/null
@@ -1,794 +0,0 @@
-# -*- coding: iso-8859-1 -*-
-import unittest, test.test_support
-import sys, os, cStringIO
-import struct
-import operator
-
-class SysModuleTest(unittest.TestCase):
-
-    def tearDown(self):
-        test.test_support.reap_children()
-
-    def test_original_displayhook(self):
-        import __builtin__
-        savestdout = sys.stdout
-        out = cStringIO.StringIO()
-        sys.stdout = out
-
-        dh = sys.__displayhook__
-
-        self.assertRaises(TypeError, dh)
-        if hasattr(__builtin__, "_"):
-            del __builtin__._
-
-        dh(None)
-        self.assertEqual(out.getvalue(), "")
-        self.assertTrue(not hasattr(__builtin__, "_"))
-        dh(42)
-        self.assertEqual(out.getvalue(), "42\n")
-        self.assertEqual(__builtin__._, 42)
-
-        del sys.stdout
-        self.assertRaises(RuntimeError, dh, 42)
-
-        sys.stdout = savestdout
-
-    def test_lost_displayhook(self):
-        olddisplayhook = sys.displayhook
-        del sys.displayhook
-        code = compile("42", "<string>", "single")
-        self.assertRaises(RuntimeError, eval, code)
-        sys.displayhook = olddisplayhook
-
-    def test_custom_displayhook(self):
-        olddisplayhook = sys.displayhook
-        def baddisplayhook(obj):
-            raise ValueError
-        sys.displayhook = baddisplayhook
-        code = compile("42", "<string>", "single")
-        self.assertRaises(ValueError, eval, code)
-        sys.displayhook = olddisplayhook
-
-    def test_original_excepthook(self):
-        savestderr = sys.stderr
-        err = cStringIO.StringIO()
-        sys.stderr = err
-
-        eh = sys.__excepthook__
-
-        self.assertRaises(TypeError, eh)
-        try:
-            raise ValueError(42)
-        except ValueError, exc:
-            eh(*sys.exc_info())
-
-        sys.stderr = savestderr
-        self.assertTrue(err.getvalue().endswith("ValueError: 42\n"))
-
-    # FIXME: testing the code for a lost or replaced excepthook in
-    # Python/pythonrun.c::PyErr_PrintEx() is tricky.
-
-    def test_exc_clear(self):
-        self.assertRaises(TypeError, sys.exc_clear, 42)
-
-        # Verify that exc_info is present and matches exc, then clear it, and
-        # check that it worked.
-        def clear_check(exc):
-            typ, value, traceback = sys.exc_info()
-            self.assertTrue(typ is not None)
-            self.assertTrue(value is exc)
-            self.assertTrue(traceback is not None)
-
-            with test.test_support.check_py3k_warnings():
-                sys.exc_clear()
-
-            typ, value, traceback = sys.exc_info()
-            self.assertTrue(typ is None)
-            self.assertTrue(value is None)
-            self.assertTrue(traceback is None)
-
-        def clear():
-            try:
-                raise ValueError, 42
-            except ValueError, exc:
-                clear_check(exc)
-
-        # Raise an exception and check that it can be cleared
-        clear()
-
-        # Verify that a frame currently handling an exception is
-        # unaffected by calling exc_clear in a nested frame.
-        try:
-            raise ValueError, 13
-        except ValueError, exc:
-            typ1, value1, traceback1 = sys.exc_info()
-            clear()
-            typ2, value2, traceback2 = sys.exc_info()
-
-            self.assertTrue(typ1 is typ2)
-            self.assertTrue(value1 is exc)
-            self.assertTrue(value1 is value2)
-            self.assertTrue(traceback1 is traceback2)
-
-        # Check that an exception can be cleared outside of an except block
-        clear_check(exc)
-
-    def test_exit(self):
-        self.assertRaises(TypeError, sys.exit, 42, 42)
-
-        # call without argument
-        try:
-            sys.exit(0)
-        except SystemExit, exc:
-            self.assertEqual(exc.code, 0)
-        except:
-            self.fail("wrong exception")
-        else:
-            self.fail("no exception")
-
-        # call with tuple argument with one entry
-        # entry will be unpacked
-        try:
-            sys.exit(42)
-        except SystemExit, exc:
-            self.assertEqual(exc.code, 42)
-        except:
-            self.fail("wrong exception")
-        else:
-            self.fail("no exception")
-
-        # call with integer argument
-        try:
-            sys.exit((42,))
-        except SystemExit, exc:
-            self.assertEqual(exc.code, 42)
-        except:
-            self.fail("wrong exception")
-        else:
-            self.fail("no exception")
-
-        # call with string argument
-        try:
-            sys.exit("exit")
-        except SystemExit, exc:
-            self.assertEqual(exc.code, "exit")
-        except:
-            self.fail("wrong exception")
-        else:
-            self.fail("no exception")
-
-        # call with tuple argument with two entries
-        try:
-            sys.exit((17, 23))
-        except SystemExit, exc:
-            self.assertEqual(exc.code, (17, 23))
-        except:
-            self.fail("wrong exception")
-        else:
-            self.fail("no exception")
-
-        # test that the exit machinery handles SystemExits properly
-        import subprocess
-        # both unnormalized...
-        rc = subprocess.call([sys.executable, "-c",
-                              "raise SystemExit, 46"])
-        self.assertEqual(rc, 46)
-        # ... and normalized
-        rc = subprocess.call([sys.executable, "-c",
-                              "raise SystemExit(47)"])
-        self.assertEqual(rc, 47)
-
-        def check_exit_message(code, expected, env=None):
-            process = subprocess.Popen([sys.executable, "-c", code],
-                                       stderr=subprocess.PIPE, env=env)
-            stdout, stderr = process.communicate()
-            self.assertEqual(process.returncode, 1)
-            self.assertTrue(stderr.startswith(expected),
-                "%s doesn't start with %s" % (repr(stderr), repr(expected)))
-
-        # test that stderr buffer if flushed before the exit message is written
-        # into stderr
-        check_exit_message(
-            r'import sys; sys.stderr.write("unflushed,"); sys.exit("message")',
-            b"unflushed,message")
-
-        # test that the unicode message is encoded to the stderr encoding
-        env = os.environ.copy()
-        env['PYTHONIOENCODING'] = 'latin-1'
-        check_exit_message(
-            r'import sys; sys.exit(u"h\xe9")',
-            b"h\xe9", env=env)
-
-    def test_getdefaultencoding(self):
-        if test.test_support.have_unicode:
-            self.assertRaises(TypeError, sys.getdefaultencoding, 42)
-            # can't check more than the type, as the user might have changed it
-            self.assertIsInstance(sys.getdefaultencoding(), str)
-
-    # testing sys.settrace() is done in test_sys_settrace.py
-    # testing sys.setprofile() is done in test_sys_setprofile.py
-
-    def test_setcheckinterval(self):
-        self.assertRaises(TypeError, sys.setcheckinterval)
-        orig = sys.getcheckinterval()
-        for n in 0, 100, 120, orig: # orig last to restore starting state
-            sys.setcheckinterval(n)
-            self.assertEqual(sys.getcheckinterval(), n)
-
-    def test_recursionlimit(self):
-        self.assertRaises(TypeError, sys.getrecursionlimit, 42)
-        oldlimit = sys.getrecursionlimit()
-        self.assertRaises(TypeError, sys.setrecursionlimit)
-        self.assertRaises(ValueError, sys.setrecursionlimit, -42)
-        sys.setrecursionlimit(10000)
-        self.assertEqual(sys.getrecursionlimit(), 10000)
-        sys.setrecursionlimit(oldlimit)
-
-    def test_getwindowsversion(self):
-        # Raise SkipTest if sys doesn't have getwindowsversion attribute
-        test.test_support.get_attribute(sys, "getwindowsversion")
-        v = sys.getwindowsversion()
-        self.assertEqual(len(v), 5)
-        self.assertIsInstance(v[0], int)
-        self.assertIsInstance(v[1], int)
-        self.assertIsInstance(v[2], int)
-        self.assertIsInstance(v[3], int)
-        self.assertIsInstance(v[4], str)
-        self.assertRaises(IndexError, operator.getitem, v, 5)
-        self.assertIsInstance(v.major, int)
-        self.assertIsInstance(v.minor, int)
-        self.assertIsInstance(v.build, int)
-        self.assertIsInstance(v.platform, int)
-        self.assertIsInstance(v.service_pack, str)
-        self.assertIsInstance(v.service_pack_minor, int)
-        self.assertIsInstance(v.service_pack_major, int)
-        self.assertIsInstance(v.suite_mask, int)
-        self.assertIsInstance(v.product_type, int)
-        self.assertEqual(v[0], v.major)
-        self.assertEqual(v[1], v.minor)
-        self.assertEqual(v[2], v.build)
-        self.assertEqual(v[3], v.platform)
-        self.assertEqual(v[4], v.service_pack)
-
-        # This is how platform.py calls it. Make sure tuple
-        #  still has 5 elements
-        maj, min, buildno, plat, csd = sys.getwindowsversion()
-
-    def test_dlopenflags(self):
-        if hasattr(sys, "setdlopenflags"):
-            self.assertTrue(hasattr(sys, "getdlopenflags"))
-            self.assertRaises(TypeError, sys.getdlopenflags, 42)
-            oldflags = sys.getdlopenflags()
-            self.assertRaises(TypeError, sys.setdlopenflags)
-            sys.setdlopenflags(oldflags+1)
-            self.assertEqual(sys.getdlopenflags(), oldflags+1)
-            sys.setdlopenflags(oldflags)
-
-    def test_refcount(self):
-        # n here must be a global in order for this test to pass while
-        # tracing with a python function.  Tracing calls PyFrame_FastToLocals
-        # which will add a copy of any locals to the frame object, causing
-        # the reference count to increase by 2 instead of 1.
-        global n
-        self.assertRaises(TypeError, sys.getrefcount)
-        c = sys.getrefcount(None)
-        n = None
-        self.assertEqual(sys.getrefcount(None), c+1)
-        del n
-        self.assertEqual(sys.getrefcount(None), c)
-        if hasattr(sys, "gettotalrefcount"):
-            self.assertIsInstance(sys.gettotalrefcount(), int)
-
-    def test_getframe(self):
-        self.assertRaises(TypeError, sys._getframe, 42, 42)
-        self.assertRaises(ValueError, sys._getframe, 2000000000)
-        self.assertTrue(
-            SysModuleTest.test_getframe.im_func.func_code \
-            is sys._getframe().f_code
-        )
-
-    # sys._current_frames() is a CPython-only gimmick.
-    def test_current_frames(self):
-        have_threads = True
-        try:
-            import thread
-        except ImportError:
-            have_threads = False
-
-        if have_threads:
-            self.current_frames_with_threads()
-        else:
-            self.current_frames_without_threads()
-
-    # Test sys._current_frames() in a WITH_THREADS build.
-    @test.test_support.reap_threads
-    def current_frames_with_threads(self):
-        import threading, thread
-        import traceback
-
-        # Spawn a thread that blocks at a known place.  Then the main
-        # thread does sys._current_frames(), and verifies that the frames
-        # returned make sense.
-        entered_g = threading.Event()
-        leave_g = threading.Event()
-        thread_info = []  # the thread's id
-
-        def f123():
-            g456()
-
-        def g456():
-            thread_info.append(thread.get_ident())
-            entered_g.set()
-            leave_g.wait()
-
-        t = threading.Thread(target=f123)
-        t.start()
-        entered_g.wait()
-
-        # At this point, t has finished its entered_g.set(), although it's
-        # impossible to guess whether it's still on that line or has moved on
-        # to its leave_g.wait().
-        self.assertEqual(len(thread_info), 1)
-        thread_id = thread_info[0]
-
-        d = sys._current_frames()
-
-        main_id = thread.get_ident()
-        self.assertIn(main_id, d)
-        self.assertIn(thread_id, d)
-
-        # Verify that the captured main-thread frame is _this_ frame.
-        frame = d.pop(main_id)
-        self.assertTrue(frame is sys._getframe())
-
-        # Verify that the captured thread frame is blocked in g456, called
-        # from f123.  This is a litte tricky, since various bits of
-        # threading.py are also in the thread's call stack.
-        frame = d.pop(thread_id)
-        stack = traceback.extract_stack(frame)
-        for i, (filename, lineno, funcname, sourceline) in enumerate(stack):
-            if funcname == "f123":
-                break
-        else:
-            self.fail("didn't find f123() on thread's call stack")
-
-        self.assertEqual(sourceline, "g456()")
-
-        # And the next record must be for g456().
-        filename, lineno, funcname, sourceline = stack[i+1]
-        self.assertEqual(funcname, "g456")
-        self.assertIn(sourceline, ["leave_g.wait()", "entered_g.set()"])
-
-        # Reap the spawned thread.
-        leave_g.set()
-        t.join()
-
-    # Test sys._current_frames() when thread support doesn't exist.
-    def current_frames_without_threads(self):
-        # Not much happens here:  there is only one thread, with artificial
-        # "thread id" 0.
-        d = sys._current_frames()
-        self.assertEqual(len(d), 1)
-        self.assertIn(0, d)
-        self.assertTrue(d[0] is sys._getframe())
-
-    def test_attributes(self):
-        self.assertIsInstance(sys.api_version, int)
-        self.assertIsInstance(sys.argv, list)
-        self.assertIn(sys.byteorder, ("little", "big"))
-        self.assertIsInstance(sys.builtin_module_names, tuple)
-        self.assertIsInstance(sys.copyright, basestring)
-        self.assertIsInstance(sys.exec_prefix, basestring)
-        self.assertIsInstance(sys.executable, basestring)
-        self.assertEqual(len(sys.float_info), 11)
-        self.assertEqual(sys.float_info.radix, 2)
-        self.assertEqual(len(sys.long_info), 2)
-        self.assertTrue(sys.long_info.bits_per_digit % 5 == 0)
-        self.assertTrue(sys.long_info.sizeof_digit >= 1)
-        self.assertEqual(type(sys.long_info.bits_per_digit), int)
-        self.assertEqual(type(sys.long_info.sizeof_digit), int)
-        self.assertIsInstance(sys.hexversion, int)
-        self.assertIsInstance(sys.maxint, int)
-        if test.test_support.have_unicode:
-            self.assertIsInstance(sys.maxunicode, int)
-        self.assertIsInstance(sys.platform, basestring)
-        self.assertIsInstance(sys.prefix, basestring)
-        self.assertIsInstance(sys.version, basestring)
-        vi = sys.version_info
-        self.assertIsInstance(vi[:], tuple)
-        self.assertEqual(len(vi), 5)
-        self.assertIsInstance(vi[0], int)
-        self.assertIsInstance(vi[1], int)
-        self.assertIsInstance(vi[2], int)
-        self.assertIn(vi[3], ("alpha", "beta", "candidate", "final"))
-        self.assertIsInstance(vi[4], int)
-        self.assertIsInstance(vi.major, int)
-        self.assertIsInstance(vi.minor, int)
-        self.assertIsInstance(vi.micro, int)
-        self.assertIn(vi.releaselevel, ("alpha", "beta", "candidate", "final"))
-        self.assertIsInstance(vi.serial, int)
-        self.assertEqual(vi[0], vi.major)
-        self.assertEqual(vi[1], vi.minor)
-        self.assertEqual(vi[2], vi.micro)
-        self.assertEqual(vi[3], vi.releaselevel)
-        self.assertEqual(vi[4], vi.serial)
-        self.assertTrue(vi > (1,0,0))
-        self.assertIsInstance(sys.float_repr_style, str)
-        self.assertIn(sys.float_repr_style, ('short', 'legacy'))
-
-    def test_43581(self):
-        # Can't use sys.stdout, as this is a cStringIO object when
-        # the test runs under regrtest.
-        self.assertTrue(sys.__stdout__.encoding == sys.__stderr__.encoding)
-
-    def test_sys_flags(self):
-        self.assertTrue(sys.flags)
-        attrs = ("debug", "py3k_warning", "division_warning", "division_new",
-                 "inspect", "interactive", "optimize", "dont_write_bytecode",
-                 "no_site", "ignore_environment", "tabcheck", "verbose",
-                 "unicode", "bytes_warning")
-        for attr in attrs:
-            self.assertTrue(hasattr(sys.flags, attr), attr)
-            self.assertEqual(type(getattr(sys.flags, attr)), int, attr)
-        self.assertTrue(repr(sys.flags))
-
-    def test_clear_type_cache(self):
-        sys._clear_type_cache()
-
-    def test_ioencoding(self):
-        import subprocess
-        env = dict(os.environ)
-
-        # Test character: cent sign, encoded as 0x4A (ASCII J) in CP424,
-        # not representable in ASCII.
-
-        env["PYTHONIOENCODING"] = "cp424"
-        p = subprocess.Popen([sys.executable, "-c", 'print unichr(0xa2)'],
-                             stdout = subprocess.PIPE, env=env)
-        out = p.communicate()[0].strip()
-        self.assertEqual(out, unichr(0xa2).encode("cp424"))
-
-        env["PYTHONIOENCODING"] = "ascii:replace"
-        p = subprocess.Popen([sys.executable, "-c", 'print unichr(0xa2)'],
-                             stdout = subprocess.PIPE, env=env)
-        out = p.communicate()[0].strip()
-        self.assertEqual(out, '?')
-
-    def test_call_tracing(self):
-        self.assertEqual(sys.call_tracing(str, (2,)), "2")
-        self.assertRaises(TypeError, sys.call_tracing, str, 2)
-
-    def test_executable(self):
-        # Issue #7774: Ensure that sys.executable is an empty string if argv[0]
-        # has been set to an non existent program name and Python is unable to
-        # retrieve the real program name
-        import subprocess
-        # For a normal installation, it should work without 'cwd'
-        # argument. For test runs in the build directory, see #7774.
-        python_dir = os.path.dirname(os.path.realpath(sys.executable))
-        p = subprocess.Popen(
-            ["nonexistent", "-c", 'import sys; print repr(sys.executable)'],
-            executable=sys.executable, stdout=subprocess.PIPE, cwd=python_dir)
-        executable = p.communicate()[0].strip()
-        p.wait()
-        self.assertIn(executable, ["''", repr(sys.executable)])
-
-class SizeofTest(unittest.TestCase):
-
-    TPFLAGS_HAVE_GC = 1<<14
-    TPFLAGS_HEAPTYPE = 1L<<9
-
-    def setUp(self):
-        self.c = len(struct.pack('c', ' '))
-        self.H = len(struct.pack('H', 0))
-        self.i = len(struct.pack('i', 0))
-        self.l = len(struct.pack('l', 0))
-        self.P = len(struct.pack('P', 0))
-        # due to missing size_t information from struct, it is assumed that
-        # sizeof(Py_ssize_t) = sizeof(void*)
-        self.header = 'PP'
-        self.vheader = self.header + 'P'
-        if hasattr(sys, "gettotalrefcount"):
-            self.header += '2P'
-            self.vheader += '2P'
-        self.longdigit = sys.long_info.sizeof_digit
-        import _testcapi
-        self.gc_headsize = _testcapi.SIZEOF_PYGC_HEAD
-        self.file = open(test.test_support.TESTFN, 'wb')
-
-    def tearDown(self):
-        self.file.close()
-        test.test_support.unlink(test.test_support.TESTFN)
-
-    def check_sizeof(self, o, size):
-        result = sys.getsizeof(o)
-        if ((type(o) == type) and (o.__flags__ & self.TPFLAGS_HEAPTYPE) or\
-           ((type(o) != type) and (type(o).__flags__ & self.TPFLAGS_HAVE_GC))):
-            size += self.gc_headsize
-        msg = 'wrong size for %s: got %d, expected %d' \
-                % (type(o), result, size)
-        self.assertEqual(result, size, msg)
-
-    def calcsize(self, fmt):
-        """Wrapper around struct.calcsize which enforces the alignment of the
-        end of a structure to the alignment requirement of pointer.
-
-        Note: This wrapper should only be used if a pointer member is included
-        and no member with a size larger than a pointer exists.
-        """
-        return struct.calcsize(fmt + '0P')
-
-    def test_gc_head_size(self):
-        # Check that the gc header size is added to objects tracked by the gc.
-        h = self.header
-        size = self.calcsize
-        gc_header_size = self.gc_headsize
-        # bool objects are not gc tracked
-        self.assertEqual(sys.getsizeof(True), size(h + 'l'))
-        # but lists are
-        self.assertEqual(sys.getsizeof([]), size(h + 'P PP') + gc_header_size)
-
-    def test_default(self):
-        h = self.header
-        size = self.calcsize
-        self.assertEqual(sys.getsizeof(True, -1), size(h + 'l'))
-
-    def test_objecttypes(self):
-        # check all types defined in Objects/
-        h = self.header
-        vh = self.vheader
-        size = self.calcsize
-        check = self.check_sizeof
-        # bool
-        check(True, size(h + 'l'))
-        # buffer
-        with test.test_support.check_py3k_warnings():
-            check(buffer(''), size(h + '2P2Pil'))
-        # builtin_function_or_method
-        check(len, size(h + '3P'))
-        # bytearray
-        samples = ['', 'u'*100000]
-        for sample in samples:
-            x = bytearray(sample)
-            check(x, size(vh + 'iPP') + x.__alloc__() * self.c)
-        # bytearray_iterator
-        check(iter(bytearray()), size(h + 'PP'))
-        # cell
-        def get_cell():
-            x = 42
-            def inner():
-                return x
-            return inner
-        check(get_cell().func_closure[0], size(h + 'P'))
-        # classobj (old-style class)
-        class class_oldstyle():
-            def method():
-                pass
-        check(class_oldstyle, size(h + '7P'))
-        # instance (old-style class)
-        check(class_oldstyle(), size(h + '3P'))
-        # instancemethod (old-style class)
-        check(class_oldstyle().method, size(h + '4P'))
-        # complex
-        check(complex(0,1), size(h + '2d'))
-        # code
-        check(get_cell().func_code, size(h + '4i8Pi3P'))
-        # BaseException
-        check(BaseException(), size(h + '3P'))
-        # UnicodeEncodeError
-        check(UnicodeEncodeError("", u"", 0, 0, ""), size(h + '5P2PP'))
-        # UnicodeDecodeError
-        check(UnicodeDecodeError("", "", 0, 0, ""), size(h + '5P2PP'))
-        # UnicodeTranslateError
-        check(UnicodeTranslateError(u"", 0, 1, ""), size(h + '5P2PP'))
-        # method_descriptor (descriptor object)
-        check(str.lower, size(h + '2PP'))
-        # classmethod_descriptor (descriptor object)
-        # XXX
-        # member_descriptor (descriptor object)
-        import datetime
-        check(datetime.timedelta.days, size(h + '2PP'))
-        # getset_descriptor (descriptor object)
-        import __builtin__
-        check(__builtin__.file.closed, size(h + '2PP'))
-        # wrapper_descriptor (descriptor object)
-        check(int.__add__, size(h + '2P2P'))
-        # dictproxy
-        class C(object): pass
-        check(C.__dict__, size(h + 'P'))
-        # method-wrapper (descriptor object)
-        check({}.__iter__, size(h + '2P'))
-        # dict
-        check({}, size(h + '3P2P' + 8*'P2P'))
-        x = {1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8}
-        check(x, size(h + '3P2P' + 8*'P2P') + 16*size('P2P'))
-        # dictionary-keyiterator
-        check({}.iterkeys(), size(h + 'P2PPP'))
-        # dictionary-valueiterator
-        check({}.itervalues(), size(h + 'P2PPP'))
-        # dictionary-itemiterator
-        check({}.iteritems(), size(h + 'P2PPP'))
-        # ellipses
-        check(Ellipsis, size(h + ''))
-        # EncodingMap
-        import codecs, encodings.iso8859_3
-        x = codecs.charmap_build(encodings.iso8859_3.decoding_table)
-        check(x, size(h + '32B2iB'))
-        # enumerate
-        check(enumerate([]), size(h + 'l3P'))
-        # file
-        check(self.file, size(h + '4P2i4P3i3P3i'))
-        # float
-        check(float(0), size(h + 'd'))
-        # sys.floatinfo
-        check(sys.float_info, size(vh) + self.P * len(sys.float_info))
-        # frame
-        import inspect
-        CO_MAXBLOCKS = 20
-        x = inspect.currentframe()
-        ncells = len(x.f_code.co_cellvars)
-        nfrees = len(x.f_code.co_freevars)
-        extras = x.f_code.co_stacksize + x.f_code.co_nlocals +\
-                 ncells + nfrees - 1
-        check(x, size(vh + '12P3i' + CO_MAXBLOCKS*'3i' + 'P' + extras*'P'))
-        # function
-        def func(): pass
-        check(func, size(h + '9P'))
-        class c():
-            @staticmethod
-            def foo():
-                pass
-            @classmethod
-            def bar(cls):
-                pass
-            # staticmethod
-            check(foo, size(h + 'P'))
-            # classmethod
-            check(bar, size(h + 'P'))
-        # generator
-        def get_gen(): yield 1
-        check(get_gen(), size(h + 'Pi2P'))
-        # integer
-        check(1, size(h + 'l'))
-        check(100, size(h + 'l'))
-        # iterator
-        check(iter('abc'), size(h + 'lP'))
-        # callable-iterator
-        import re
-        check(re.finditer('',''), size(h + '2P'))
-        # list
-        samples = [[], [1,2,3], ['1', '2', '3']]
-        for sample in samples:
-            check(sample, size(vh + 'PP') + len(sample)*self.P)
-        # sortwrapper (list)
-        # XXX
-        # cmpwrapper (list)
-        # XXX
-        # listiterator (list)
-        check(iter([]), size(h + 'lP'))
-        # listreverseiterator (list)
-        check(reversed([]), size(h + 'lP'))
-        # long
-        check(0L, size(vh))
-        check(1L, size(vh) + self.longdigit)
-        check(-1L, size(vh) + self.longdigit)
-        PyLong_BASE = 2**sys.long_info.bits_per_digit
-        check(long(PyLong_BASE), size(vh) + 2*self.longdigit)
-        check(long(PyLong_BASE**2-1), size(vh) + 2*self.longdigit)
-        check(long(PyLong_BASE**2), size(vh) + 3*self.longdigit)
-        # module
-        check(unittest, size(h + 'P'))
-        # None
-        check(None, size(h + ''))
-        # object
-        check(object(), size(h + ''))
-        # property (descriptor object)
-        class C(object):
-            def getx(self): return self.__x
-            def setx(self, value): self.__x = value
-            def delx(self): del self.__x
-            x = property(getx, setx, delx, "")
-            check(x, size(h + '4Pi'))
-        # PyCObject
-        # PyCapsule
-        # XXX
-        # rangeiterator
-        check(iter(xrange(1)), size(h + '4l'))
-        # reverse
-        check(reversed(''), size(h + 'PP'))
-        # set
-        # frozenset
-        PySet_MINSIZE = 8
-        samples = [[], range(10), range(50)]
-        s = size(h + '3P2P' + PySet_MINSIZE*'lP' + 'lP')
-        for sample in samples:
-            minused = len(sample)
-            if minused == 0: tmp = 1
-            # the computation of minused is actually a bit more complicated
-            # but this suffices for the sizeof test
-            minused = minused*2
-            newsize = PySet_MINSIZE
-            while newsize <= minused:
-                newsize = newsize << 1
-            if newsize <= 8:
-                check(set(sample), s)
-                check(frozenset(sample), s)
-            else:
-                check(set(sample), s + newsize*struct.calcsize('lP'))
-                check(frozenset(sample), s + newsize*struct.calcsize('lP'))
-        # setiterator
-        check(iter(set()), size(h + 'P3P'))
-        # slice
-        check(slice(1), size(h + '3P'))
-        # str
-        check('', struct.calcsize(vh + 'li') + 1)
-        check('abc', struct.calcsize(vh + 'li') + 1 + 3*self.c)
-        # super
-        check(super(int), size(h + '3P'))
-        # tuple
-        check((), size(vh))
-        check((1,2,3), size(vh) + 3*self.P)
-        # tupleiterator
-        check(iter(()), size(h + 'lP'))
-        # type
-        # (PyTypeObject + PyNumberMethods +  PyMappingMethods +
-        #  PySequenceMethods + PyBufferProcs)
-        s = size(vh + 'P2P15Pl4PP9PP11PI') + size('41P 10P 3P 6P')
-        class newstyleclass(object):
-            pass
-        check(newstyleclass, s)
-        # builtin type
-        check(int, s)
-        # NotImplementedType
-        import types
-        check(types.NotImplementedType, s)
-        # unicode
-        usize = len(u'\0'.encode('unicode-internal'))
-        samples = [u'', u'1'*100]
-        # we need to test for both sizes, because we don't know if the string
-        # has been cached
-        for s in samples:
-            check(s, size(h + 'PPlP') + usize * (len(s) + 1))
-        # weakref
-        import weakref
-        check(weakref.ref(int), size(h + '2Pl2P'))
-        # weakproxy
-        # XXX
-        # weakcallableproxy
-        check(weakref.proxy(int), size(h + '2Pl2P'))
-        # xrange
-        check(xrange(1), size(h + '3l'))
-        check(xrange(66000), size(h + '3l'))
-
-    def test_pythontypes(self):
-        # check all types defined in Python/
-        h = self.header
-        vh = self.vheader
-        size = self.calcsize
-        check = self.check_sizeof
-        # _ast.AST
-        import _ast
-        check(_ast.AST(), size(h + ''))
-        # imp.NullImporter
-        import imp
-        check(imp.NullImporter(self.file.name), size(h + ''))
-        try:
-            raise TypeError
-        except TypeError:
-            tb = sys.exc_info()[2]
-            # traceback
-            if tb != None:
-                check(tb, size(h + '2P2i'))
-        # symtable entry
-        # XXX
-        # sys.flags
-        check(sys.flags, size(vh) + self.P * len(sys.flags))
-
-
-def test_main():
-    test_classes = (SysModuleTest, SizeofTest)
-
-    test.test_support.run_unittest(*test_classes)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys_setprofile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys_setprofile.py
deleted file mode 100644
index 0340330..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys_setprofile.py
+++ /dev/null
@@ -1,386 +0,0 @@
-import gc
-import pprint
-import sys
-import unittest
-
-from test import test_support
-
-class TestGetProfile(unittest.TestCase):
-    def setUp(self):
-        sys.setprofile(None)
-
-    def tearDown(self):
-        sys.setprofile(None)
-
-    def test_empty(self):
-        self.assertIsNone(sys.getprofile())
-
-    def test_setget(self):
-        def fn(*args):
-            pass
-
-        sys.setprofile(fn)
-        self.assertIs(sys.getprofile(), fn)
-
-class HookWatcher:
-    def __init__(self):
-        self.frames = []
-        self.events = []
-
-    def callback(self, frame, event, arg):
-        if (event == "call"
-            or event == "return"
-            or event == "exception"):
-            self.add_event(event, frame)
-
-    def add_event(self, event, frame=None):
-        """Add an event to the log."""
-        if frame is None:
-            frame = sys._getframe(1)
-
-        try:
-            frameno = self.frames.index(frame)
-        except ValueError:
-            frameno = len(self.frames)
-            self.frames.append(frame)
-
-        self.events.append((frameno, event, ident(frame)))
-
-    def get_events(self):
-        """Remove calls to add_event()."""
-        disallowed = [ident(self.add_event.im_func), ident(ident)]
-        self.frames = None
-
-        return [item for item in self.events if item[2] not in disallowed]
-
-
-class ProfileSimulator(HookWatcher):
-    def __init__(self, testcase):
-        self.testcase = testcase
-        self.stack = []
-        HookWatcher.__init__(self)
-
-    def callback(self, frame, event, arg):
-        # Callback registered with sys.setprofile()/sys.settrace()
-        self.dispatch[event](self, frame)
-
-    def trace_call(self, frame):
-        self.add_event('call', frame)
-        self.stack.append(frame)
-
-    def trace_return(self, frame):
-        self.add_event('return', frame)
-        self.stack.pop()
-
-    def trace_exception(self, frame):
-        self.testcase.fail(
-            "the profiler should never receive exception events")
-
-    def trace_pass(self, frame):
-        pass
-
-    dispatch = {
-        'call': trace_call,
-        'exception': trace_exception,
-        'return': trace_return,
-        'c_call': trace_pass,
-        'c_return': trace_pass,
-        'c_exception': trace_pass,
-        }
-
-
-class TestCaseBase(unittest.TestCase):
-    def check_events(self, callable, expected):
-        events = capture_events(callable, self.new_watcher())
-        if events != expected:
-            self.fail("Expected events:\n%s\nReceived events:\n%s"
-                      % (pprint.pformat(expected), pprint.pformat(events)))
-
-
-class ProfileHookTestCase(TestCaseBase):
-    def new_watcher(self):
-        return HookWatcher()
-
-    def test_simple(self):
-        def f(p):
-            pass
-        f_ident = ident(f)
-        self.check_events(f, [(1, 'call', f_ident),
-                              (1, 'return', f_ident),
-                              ])
-
-    def test_exception(self):
-        def f(p):
-            1./0
-        f_ident = ident(f)
-        self.check_events(f, [(1, 'call', f_ident),
-                              (1, 'return', f_ident),
-                              ])
-
-    def test_caught_exception(self):
-        def f(p):
-            try: 1./0
-            except: pass
-        f_ident = ident(f)
-        self.check_events(f, [(1, 'call', f_ident),
-                              (1, 'return', f_ident),
-                              ])
-
-    def test_caught_nested_exception(self):
-        def f(p):
-            try: 1./0
-            except: pass
-        f_ident = ident(f)
-        self.check_events(f, [(1, 'call', f_ident),
-                              (1, 'return', f_ident),
-                              ])
-
-    def test_nested_exception(self):
-        def f(p):
-            1./0
-        f_ident = ident(f)
-        self.check_events(f, [(1, 'call', f_ident),
-                              # This isn't what I expected:
-                              # (0, 'exception', protect_ident),
-                              # I expected this again:
-                              (1, 'return', f_ident),
-                              ])
-
-    def test_exception_in_except_clause(self):
-        def f(p):
-            1./0
-        def g(p):
-            try:
-                f(p)
-            except:
-                try: f(p)
-                except: pass
-        f_ident = ident(f)
-        g_ident = ident(g)
-        self.check_events(g, [(1, 'call', g_ident),
-                              (2, 'call', f_ident),
-                              (2, 'return', f_ident),
-                              (3, 'call', f_ident),
-                              (3, 'return', f_ident),
-                              (1, 'return', g_ident),
-                              ])
-
-    def test_exception_propogation(self):
-        def f(p):
-            1./0
-        def g(p):
-            try: f(p)
-            finally: p.add_event("falling through")
-        f_ident = ident(f)
-        g_ident = ident(g)
-        self.check_events(g, [(1, 'call', g_ident),
-                              (2, 'call', f_ident),
-                              (2, 'return', f_ident),
-                              (1, 'falling through', g_ident),
-                              (1, 'return', g_ident),
-                              ])
-
-    def test_raise_twice(self):
-        def f(p):
-            try: 1./0
-            except: 1./0
-        f_ident = ident(f)
-        self.check_events(f, [(1, 'call', f_ident),
-                              (1, 'return', f_ident),
-                              ])
-
-    def test_raise_reraise(self):
-        def f(p):
-            try: 1./0
-            except: raise
-        f_ident = ident(f)
-        self.check_events(f, [(1, 'call', f_ident),
-                              (1, 'return', f_ident),
-                              ])
-
-    def test_raise(self):
-        def f(p):
-            raise Exception()
-        f_ident = ident(f)
-        self.check_events(f, [(1, 'call', f_ident),
-                              (1, 'return', f_ident),
-                              ])
-
-    def test_distant_exception(self):
-        def f():
-            1./0
-        def g():
-            f()
-        def h():
-            g()
-        def i():
-            h()
-        def j(p):
-            i()
-        f_ident = ident(f)
-        g_ident = ident(g)
-        h_ident = ident(h)
-        i_ident = ident(i)
-        j_ident = ident(j)
-        self.check_events(j, [(1, 'call', j_ident),
-                              (2, 'call', i_ident),
-                              (3, 'call', h_ident),
-                              (4, 'call', g_ident),
-                              (5, 'call', f_ident),
-                              (5, 'return', f_ident),
-                              (4, 'return', g_ident),
-                              (3, 'return', h_ident),
-                              (2, 'return', i_ident),
-                              (1, 'return', j_ident),
-                              ])
-
-    def test_generator(self):
-        def f():
-            for i in range(2):
-                yield i
-        def g(p):
-            for i in f():
-                pass
-        f_ident = ident(f)
-        g_ident = ident(g)
-        self.check_events(g, [(1, 'call', g_ident),
-                              # call the iterator twice to generate values
-                              (2, 'call', f_ident),
-                              (2, 'return', f_ident),
-                              (2, 'call', f_ident),
-                              (2, 'return', f_ident),
-                              # once more; returns end-of-iteration with
-                              # actually raising an exception
-                              (2, 'call', f_ident),
-                              (2, 'return', f_ident),
-                              (1, 'return', g_ident),
-                              ])
-
-    def test_stop_iteration(self):
-        def f():
-            for i in range(2):
-                yield i
-            raise StopIteration
-        def g(p):
-            for i in f():
-                pass
-        f_ident = ident(f)
-        g_ident = ident(g)
-        self.check_events(g, [(1, 'call', g_ident),
-                              # call the iterator twice to generate values
-                              (2, 'call', f_ident),
-                              (2, 'return', f_ident),
-                              (2, 'call', f_ident),
-                              (2, 'return', f_ident),
-                              # once more to hit the raise:
-                              (2, 'call', f_ident),
-                              (2, 'return', f_ident),
-                              (1, 'return', g_ident),
-                              ])
-
-
-class ProfileSimulatorTestCase(TestCaseBase):
-    def new_watcher(self):
-        return ProfileSimulator(self)
-
-    def test_simple(self):
-        def f(p):
-            pass
-        f_ident = ident(f)
-        self.check_events(f, [(1, 'call', f_ident),
-                              (1, 'return', f_ident),
-                              ])
-
-    def test_basic_exception(self):
-        def f(p):
-            1./0
-        f_ident = ident(f)
-        self.check_events(f, [(1, 'call', f_ident),
-                              (1, 'return', f_ident),
-                              ])
-
-    def test_caught_exception(self):
-        def f(p):
-            try: 1./0
-            except: pass
-        f_ident = ident(f)
-        self.check_events(f, [(1, 'call', f_ident),
-                              (1, 'return', f_ident),
-                              ])
-
-    def test_distant_exception(self):
-        def f():
-            1./0
-        def g():
-            f()
-        def h():
-            g()
-        def i():
-            h()
-        def j(p):
-            i()
-        f_ident = ident(f)
-        g_ident = ident(g)
-        h_ident = ident(h)
-        i_ident = ident(i)
-        j_ident = ident(j)
-        self.check_events(j, [(1, 'call', j_ident),
-                              (2, 'call', i_ident),
-                              (3, 'call', h_ident),
-                              (4, 'call', g_ident),
-                              (5, 'call', f_ident),
-                              (5, 'return', f_ident),
-                              (4, 'return', g_ident),
-                              (3, 'return', h_ident),
-                              (2, 'return', i_ident),
-                              (1, 'return', j_ident),
-                              ])
-
-
-def ident(function):
-    if hasattr(function, "f_code"):
-        code = function.f_code
-    else:
-        code = function.func_code
-    return code.co_firstlineno, code.co_name
-
-
-def protect(f, p):
-    try: f(p)
-    except: pass
-
-protect_ident = ident(protect)
-
-
-def capture_events(callable, p=None):
-    if p is None:
-        p = HookWatcher()
-    # Disable the garbage collector. This prevents __del__s from showing up in
-    # traces.
-    old_gc = gc.isenabled()
-    gc.disable()
-    try:
-        sys.setprofile(p.callback)
-        protect(callable, p)
-        sys.setprofile(None)
-    finally:
-        if old_gc:
-            gc.enable()
-    return p.get_events()[1:-1]
-
-
-def show_events(callable):
-    import pprint
-    pprint.pprint(capture_events(callable))
-
-
-def test_main():
-    test_support.run_unittest(
-        TestGetProfile,
-        ProfileHookTestCase,
-        ProfileSimulatorTestCase
-    )
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys_settrace.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys_settrace.py
deleted file mode 100644
index ba0a294..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sys_settrace.py
+++ /dev/null
@@ -1,789 +0,0 @@
-# Testing the line trace facility.
-
-from test import test_support
-import unittest
-import sys
-import difflib
-import gc
-
-# A very basic example.  If this fails, we're in deep trouble.
-def basic():
-    return 1
-
-basic.events = [(0, 'call'),
-                (1, 'line'),
-                (1, 'return')]
-
-# Many of the tests below are tricky because they involve pass statements.
-# If there is implicit control flow around a pass statement (in an except
-# clause or else caluse) under what conditions do you set a line number
-# following that clause?
-
-
-# The entire "while 0:" statement is optimized away.  No code
-# exists for it, so the line numbers skip directly from "del x"
-# to "x = 1".
-def arigo_example():
-    x = 1
-    del x
-    while 0:
-        pass
-    x = 1
-
-arigo_example.events = [(0, 'call'),
-                        (1, 'line'),
-                        (2, 'line'),
-                        (5, 'line'),
-                        (5, 'return')]
-
-# check that lines consisting of just one instruction get traced:
-def one_instr_line():
-    x = 1
-    del x
-    x = 1
-
-one_instr_line.events = [(0, 'call'),
-                         (1, 'line'),
-                         (2, 'line'),
-                         (3, 'line'),
-                         (3, 'return')]
-
-def no_pop_tops():      # 0
-    x = 1               # 1
-    for a in range(2):  # 2
-        if a:           # 3
-            x = 1       # 4
-        else:           # 5
-            x = 1       # 6
-
-no_pop_tops.events = [(0, 'call'),
-                      (1, 'line'),
-                      (2, 'line'),
-                      (3, 'line'),
-                      (6, 'line'),
-                      (2, 'line'),
-                      (3, 'line'),
-                      (4, 'line'),
-                      (2, 'line'),
-                      (2, 'return')]
-
-def no_pop_blocks():
-    y = 1
-    while not y:
-        bla
-    x = 1
-
-no_pop_blocks.events = [(0, 'call'),
-                        (1, 'line'),
-                        (2, 'line'),
-                        (4, 'line'),
-                        (4, 'return')]
-
-def called(): # line -3
-    x = 1
-
-def call():   # line 0
-    called()
-
-call.events = [(0, 'call'),
-               (1, 'line'),
-               (-3, 'call'),
-               (-2, 'line'),
-               (-2, 'return'),
-               (1, 'return')]
-
-def raises():
-    raise Exception
-
-def test_raise():
-    try:
-        raises()
-    except Exception, exc:
-        x = 1
-
-test_raise.events = [(0, 'call'),
-                     (1, 'line'),
-                     (2, 'line'),
-                     (-3, 'call'),
-                     (-2, 'line'),
-                     (-2, 'exception'),
-                     (-2, 'return'),
-                     (2, 'exception'),
-                     (3, 'line'),
-                     (4, 'line'),
-                     (4, 'return')]
-
-def _settrace_and_return(tracefunc):
-    sys.settrace(tracefunc)
-    sys._getframe().f_back.f_trace = tracefunc
-def settrace_and_return(tracefunc):
-    _settrace_and_return(tracefunc)
-
-settrace_and_return.events = [(1, 'return')]
-
-def _settrace_and_raise(tracefunc):
-    sys.settrace(tracefunc)
-    sys._getframe().f_back.f_trace = tracefunc
-    raise RuntimeError
-def settrace_and_raise(tracefunc):
-    try:
-        _settrace_and_raise(tracefunc)
-    except RuntimeError, exc:
-        pass
-
-settrace_and_raise.events = [(2, 'exception'),
-                             (3, 'line'),
-                             (4, 'line'),
-                             (4, 'return')]
-
-# implicit return example
-# This test is interesting because of the else: pass
-# part of the code.  The code generate for the true
-# part of the if contains a jump past the else branch.
-# The compiler then generates an implicit "return None"
-# Internally, the compiler visits the pass statement
-# and stores its line number for use on the next instruction.
-# The next instruction is the implicit return None.
-def ireturn_example():
-    a = 5
-    b = 5
-    if a == b:
-        b = a+1
-    else:
-        pass
-
-ireturn_example.events = [(0, 'call'),
-                          (1, 'line'),
-                          (2, 'line'),
-                          (3, 'line'),
-                          (4, 'line'),
-                          (6, 'line'),
-                          (6, 'return')]
-
-# Tight loop with while(1) example (SF #765624)
-def tightloop_example():
-    items = range(0, 3)
-    try:
-        i = 0
-        while 1:
-            b = items[i]; i+=1
-    except IndexError:
-        pass
-
-tightloop_example.events = [(0, 'call'),
-                            (1, 'line'),
-                            (2, 'line'),
-                            (3, 'line'),
-                            (4, 'line'),
-                            (5, 'line'),
-                            (5, 'line'),
-                            (5, 'line'),
-                            (5, 'line'),
-                            (5, 'exception'),
-                            (6, 'line'),
-                            (7, 'line'),
-                            (7, 'return')]
-
-def tighterloop_example():
-    items = range(1, 4)
-    try:
-        i = 0
-        while 1: i = items[i]
-    except IndexError:
-        pass
-
-tighterloop_example.events = [(0, 'call'),
-                            (1, 'line'),
-                            (2, 'line'),
-                            (3, 'line'),
-                            (4, 'line'),
-                            (4, 'line'),
-                            (4, 'line'),
-                            (4, 'line'),
-                            (4, 'exception'),
-                            (5, 'line'),
-                            (6, 'line'),
-                            (6, 'return')]
-
-def generator_function():
-    try:
-        yield True
-        "continued"
-    finally:
-        "finally"
-def generator_example():
-    # any() will leave the generator before its end
-    x = any(generator_function())
-
-    # the following lines were not traced
-    for x in range(10):
-        y = x
-
-generator_example.events = ([(0, 'call'),
-                             (2, 'line'),
-                             (-6, 'call'),
-                             (-5, 'line'),
-                             (-4, 'line'),
-                             (-4, 'return'),
-                             (-4, 'call'),
-                             (-4, 'exception'),
-                             (-1, 'line'),
-                             (-1, 'return')] +
-                            [(5, 'line'), (6, 'line')] * 10 +
-                            [(5, 'line'), (5, 'return')])
-
-
-class Tracer:
-    def __init__(self):
-        self.events = []
-    def trace(self, frame, event, arg):
-        self.events.append((frame.f_lineno, event))
-        return self.trace
-    def traceWithGenexp(self, frame, event, arg):
-        (o for o in [1])
-        self.events.append((frame.f_lineno, event))
-        return self.trace
-
-class TraceTestCase(unittest.TestCase):
-
-    # Disable gc collection when tracing, otherwise the
-    # deallocators may be traced as well.
-    def setUp(self):
-        self.using_gc = gc.isenabled()
-        gc.disable()
-
-    def tearDown(self):
-        if self.using_gc:
-            gc.enable()
-
-    def compare_events(self, line_offset, events, expected_events):
-        events = [(l - line_offset, e) for (l, e) in events]
-        if events != expected_events:
-            self.fail(
-                "events did not match expectation:\n" +
-                "\n".join(difflib.ndiff([str(x) for x in expected_events],
-                                        [str(x) for x in events])))
-
-    def run_and_compare(self, func, events):
-        tracer = Tracer()
-        sys.settrace(tracer.trace)
-        func()
-        sys.settrace(None)
-        self.compare_events(func.func_code.co_firstlineno,
-                            tracer.events, events)
-
-    def run_test(self, func):
-        self.run_and_compare(func, func.events)
-
-    def run_test2(self, func):
-        tracer = Tracer()
-        func(tracer.trace)
-        sys.settrace(None)
-        self.compare_events(func.func_code.co_firstlineno,
-                            tracer.events, func.events)
-
-    def set_and_retrieve_none(self):
-        sys.settrace(None)
-        assert sys.gettrace() is None
-
-    def set_and_retrieve_func(self):
-        def fn(*args):
-            pass
-
-        sys.settrace(fn)
-        try:
-            assert sys.gettrace() is fn
-        finally:
-            sys.settrace(None)
-
-    def test_01_basic(self):
-        self.run_test(basic)
-    def test_02_arigo(self):
-        self.run_test(arigo_example)
-    def test_03_one_instr(self):
-        self.run_test(one_instr_line)
-    def test_04_no_pop_blocks(self):
-        self.run_test(no_pop_blocks)
-    def test_05_no_pop_tops(self):
-        self.run_test(no_pop_tops)
-    def test_06_call(self):
-        self.run_test(call)
-    def test_07_raise(self):
-        self.run_test(test_raise)
-
-    def test_08_settrace_and_return(self):
-        self.run_test2(settrace_and_return)
-    def test_09_settrace_and_raise(self):
-        self.run_test2(settrace_and_raise)
-    def test_10_ireturn(self):
-        self.run_test(ireturn_example)
-    def test_11_tightloop(self):
-        self.run_test(tightloop_example)
-    def test_12_tighterloop(self):
-        self.run_test(tighterloop_example)
-
-    def test_13_genexp(self):
-        self.run_test(generator_example)
-        # issue1265: if the trace function contains a generator,
-        # and if the traced function contains another generator
-        # that is not completely exhausted, the trace stopped.
-        # Worse: the 'finally' clause was not invoked.
-        tracer = Tracer()
-        sys.settrace(tracer.traceWithGenexp)
-        generator_example()
-        sys.settrace(None)
-        self.compare_events(generator_example.__code__.co_firstlineno,
-                            tracer.events, generator_example.events)
-
-    def test_14_onliner_if(self):
-        def onliners():
-            if True: False
-            else: True
-            return 0
-        self.run_and_compare(
-            onliners,
-            [(0, 'call'),
-             (1, 'line'),
-             (3, 'line'),
-             (3, 'return')])
-
-    def test_15_loops(self):
-        # issue1750076: "while" expression is skipped by debugger
-        def for_example():
-            for x in range(2):
-                pass
-        self.run_and_compare(
-            for_example,
-            [(0, 'call'),
-             (1, 'line'),
-             (2, 'line'),
-             (1, 'line'),
-             (2, 'line'),
-             (1, 'line'),
-             (1, 'return')])
-
-        def while_example():
-            # While expression should be traced on every loop
-            x = 2
-            while x > 0:
-                x -= 1
-        self.run_and_compare(
-            while_example,
-            [(0, 'call'),
-             (2, 'line'),
-             (3, 'line'),
-             (4, 'line'),
-             (3, 'line'),
-             (4, 'line'),
-             (3, 'line'),
-             (3, 'return')])
-
-    def test_16_blank_lines(self):
-        exec("def f():\n" + "\n" * 256 + "    pass")
-        self.run_and_compare(
-            f,
-            [(0, 'call'),
-             (257, 'line'),
-             (257, 'return')])
-
-
-class RaisingTraceFuncTestCase(unittest.TestCase):
-    def trace(self, frame, event, arg):
-        """A trace function that raises an exception in response to a
-        specific trace event."""
-        if event == self.raiseOnEvent:
-            raise ValueError # just something that isn't RuntimeError
-        else:
-            return self.trace
-
-    def f(self):
-        """The function to trace; raises an exception if that's the case
-        we're testing, so that the 'exception' trace event fires."""
-        if self.raiseOnEvent == 'exception':
-            x = 0
-            y = 1 // x
-        else:
-            return 1
-
-    def run_test_for_event(self, event):
-        """Tests that an exception raised in response to the given event is
-        handled OK."""
-        self.raiseOnEvent = event
-        try:
-            for i in xrange(sys.getrecursionlimit() + 1):
-                sys.settrace(self.trace)
-                try:
-                    self.f()
-                except ValueError:
-                    pass
-                else:
-                    self.fail("exception not thrown!")
-        except RuntimeError:
-            self.fail("recursion counter not reset")
-
-    # Test the handling of exceptions raised by each kind of trace event.
-    def test_call(self):
-        self.run_test_for_event('call')
-    def test_line(self):
-        self.run_test_for_event('line')
-    def test_return(self):
-        self.run_test_for_event('return')
-    def test_exception(self):
-        self.run_test_for_event('exception')
-
-    def test_trash_stack(self):
-        def f():
-            for i in range(5):
-                print i  # line tracing will raise an exception at this line
-
-        def g(frame, why, extra):
-            if (why == 'line' and
-                frame.f_lineno == f.func_code.co_firstlineno + 2):
-                raise RuntimeError, "i am crashing"
-            return g
-
-        sys.settrace(g)
-        try:
-            f()
-        except RuntimeError:
-            # the test is really that this doesn't segfault:
-            import gc
-            gc.collect()
-        else:
-            self.fail("exception not propagated")
-
-
-# 'Jump' tests: assigning to frame.f_lineno within a trace function
-# moves the execution position - it's how debuggers implement a Jump
-# command (aka. "Set next statement").
-
-class JumpTracer:
-    """Defines a trace function that jumps from one place to another,
-    with the source and destination lines of the jump being defined by
-    the 'jump' property of the function under test."""
-
-    def __init__(self, function):
-        self.function = function
-        self.jumpFrom = function.jump[0]
-        self.jumpTo = function.jump[1]
-        self.done = False
-
-    def trace(self, frame, event, arg):
-        if not self.done and frame.f_code == self.function.func_code:
-            firstLine = frame.f_code.co_firstlineno
-            if event == 'line' and frame.f_lineno == firstLine + self.jumpFrom:
-                # Cope with non-integer self.jumpTo (because of
-                # no_jump_to_non_integers below).
-                try:
-                    frame.f_lineno = firstLine + self.jumpTo
-                except TypeError:
-                    frame.f_lineno = self.jumpTo
-                self.done = True
-        return self.trace
-
-# The first set of 'jump' tests are for things that are allowed:
-
-def jump_simple_forwards(output):
-    output.append(1)
-    output.append(2)
-    output.append(3)
-
-jump_simple_forwards.jump = (1, 3)
-jump_simple_forwards.output = [3]
-
-def jump_simple_backwards(output):
-    output.append(1)
-    output.append(2)
-
-jump_simple_backwards.jump = (2, 1)
-jump_simple_backwards.output = [1, 1, 2]
-
-def jump_out_of_block_forwards(output):
-    for i in 1, 2:
-        output.append(2)
-        for j in [3]:  # Also tests jumping over a block
-            output.append(4)
-    output.append(5)
-
-jump_out_of_block_forwards.jump = (3, 5)
-jump_out_of_block_forwards.output = [2, 5]
-
-def jump_out_of_block_backwards(output):
-    output.append(1)
-    for i in [1]:
-        output.append(3)
-        for j in [2]:  # Also tests jumping over a block
-            output.append(5)
-        output.append(6)
-    output.append(7)
-
-jump_out_of_block_backwards.jump = (6, 1)
-jump_out_of_block_backwards.output = [1, 3, 5, 1, 3, 5, 6, 7]
-
-def jump_to_codeless_line(output):
-    output.append(1)
-    # Jumping to this line should skip to the next one.
-    output.append(3)
-
-jump_to_codeless_line.jump = (1, 2)
-jump_to_codeless_line.output = [3]
-
-def jump_to_same_line(output):
-    output.append(1)
-    output.append(2)
-    output.append(3)
-
-jump_to_same_line.jump = (2, 2)
-jump_to_same_line.output = [1, 2, 3]
-
-# Tests jumping within a finally block, and over one.
-def jump_in_nested_finally(output):
-    try:
-        output.append(2)
-    finally:
-        output.append(4)
-        try:
-            output.append(6)
-        finally:
-            output.append(8)
-        output.append(9)
-
-jump_in_nested_finally.jump = (4, 9)
-jump_in_nested_finally.output = [2, 9]
-
-# The second set of 'jump' tests are for things that are not allowed:
-
-def no_jump_too_far_forwards(output):
-    try:
-        output.append(2)
-        output.append(3)
-    except ValueError, e:
-        output.append('after' in str(e))
-
-no_jump_too_far_forwards.jump = (3, 6)
-no_jump_too_far_forwards.output = [2, True]
-
-def no_jump_too_far_backwards(output):
-    try:
-        output.append(2)
-        output.append(3)
-    except ValueError, e:
-        output.append('before' in str(e))
-
-no_jump_too_far_backwards.jump = (3, -1)
-no_jump_too_far_backwards.output = [2, True]
-
-# Test each kind of 'except' line.
-def no_jump_to_except_1(output):
-    try:
-        output.append(2)
-    except:
-        e = sys.exc_info()[1]
-        output.append('except' in str(e))
-
-no_jump_to_except_1.jump = (2, 3)
-no_jump_to_except_1.output = [True]
-
-def no_jump_to_except_2(output):
-    try:
-        output.append(2)
-    except ValueError:
-        e = sys.exc_info()[1]
-        output.append('except' in str(e))
-
-no_jump_to_except_2.jump = (2, 3)
-no_jump_to_except_2.output = [True]
-
-def no_jump_to_except_3(output):
-    try:
-        output.append(2)
-    except ValueError, e:
-        output.append('except' in str(e))
-
-no_jump_to_except_3.jump = (2, 3)
-no_jump_to_except_3.output = [True]
-
-def no_jump_to_except_4(output):
-    try:
-        output.append(2)
-    except (ValueError, RuntimeError), e:
-        output.append('except' in str(e))
-
-no_jump_to_except_4.jump = (2, 3)
-no_jump_to_except_4.output = [True]
-
-def no_jump_forwards_into_block(output):
-    try:
-        output.append(2)
-        for i in 1, 2:
-            output.append(4)
-    except ValueError, e:
-        output.append('into' in str(e))
-
-no_jump_forwards_into_block.jump = (2, 4)
-no_jump_forwards_into_block.output = [True]
-
-def no_jump_backwards_into_block(output):
-    try:
-        for i in 1, 2:
-            output.append(3)
-        output.append(4)
-    except ValueError, e:
-        output.append('into' in str(e))
-
-no_jump_backwards_into_block.jump = (4, 3)
-no_jump_backwards_into_block.output = [3, 3, True]
-
-def no_jump_into_finally_block(output):
-    try:
-        try:
-            output.append(3)
-            x = 1
-        finally:
-            output.append(6)
-    except ValueError, e:
-        output.append('finally' in str(e))
-
-no_jump_into_finally_block.jump = (4, 6)
-no_jump_into_finally_block.output = [3, 6, True]  # The 'finally' still runs
-
-def no_jump_out_of_finally_block(output):
-    try:
-        try:
-            output.append(3)
-        finally:
-            output.append(5)
-            output.append(6)
-    except ValueError, e:
-        output.append('finally' in str(e))
-
-no_jump_out_of_finally_block.jump = (5, 1)
-no_jump_out_of_finally_block.output = [3, True]
-
-# This verifies the line-numbers-must-be-integers rule.
-def no_jump_to_non_integers(output):
-    try:
-        output.append(2)
-    except ValueError, e:
-        output.append('integer' in str(e))
-
-no_jump_to_non_integers.jump = (2, "Spam")
-no_jump_to_non_integers.output = [True]
-
-# This verifies that you can't set f_lineno via _getframe or similar
-# trickery.
-def no_jump_without_trace_function():
-    try:
-        previous_frame = sys._getframe().f_back
-        previous_frame.f_lineno = previous_frame.f_lineno
-    except ValueError, e:
-        # This is the exception we wanted; make sure the error message
-        # talks about trace functions.
-        if 'trace' not in str(e):
-            raise
-    else:
-        # Something's wrong - the expected exception wasn't raised.
-        raise RuntimeError, "Trace-function-less jump failed to fail"
-
-
-class JumpTestCase(unittest.TestCase):
-    def compare_jump_output(self, expected, received):
-        if received != expected:
-            self.fail( "Outputs don't match:\n" +
-                       "Expected: " + repr(expected) + "\n" +
-                       "Received: " + repr(received))
-
-    def run_test(self, func):
-        tracer = JumpTracer(func)
-        sys.settrace(tracer.trace)
-        output = []
-        func(output)
-        sys.settrace(None)
-        self.compare_jump_output(func.output, output)
-
-    def test_01_jump_simple_forwards(self):
-        self.run_test(jump_simple_forwards)
-    def test_02_jump_simple_backwards(self):
-        self.run_test(jump_simple_backwards)
-    def test_03_jump_out_of_block_forwards(self):
-        self.run_test(jump_out_of_block_forwards)
-    def test_04_jump_out_of_block_backwards(self):
-        self.run_test(jump_out_of_block_backwards)
-    def test_05_jump_to_codeless_line(self):
-        self.run_test(jump_to_codeless_line)
-    def test_06_jump_to_same_line(self):
-        self.run_test(jump_to_same_line)
-    def test_07_jump_in_nested_finally(self):
-        self.run_test(jump_in_nested_finally)
-    def test_08_no_jump_too_far_forwards(self):
-        self.run_test(no_jump_too_far_forwards)
-    def test_09_no_jump_too_far_backwards(self):
-        self.run_test(no_jump_too_far_backwards)
-    def test_10_no_jump_to_except_1(self):
-        self.run_test(no_jump_to_except_1)
-    def test_11_no_jump_to_except_2(self):
-        self.run_test(no_jump_to_except_2)
-    def test_12_no_jump_to_except_3(self):
-        self.run_test(no_jump_to_except_3)
-    def test_13_no_jump_to_except_4(self):
-        self.run_test(no_jump_to_except_4)
-    def test_14_no_jump_forwards_into_block(self):
-        self.run_test(no_jump_forwards_into_block)
-    def test_15_no_jump_backwards_into_block(self):
-        self.run_test(no_jump_backwards_into_block)
-    def test_16_no_jump_into_finally_block(self):
-        self.run_test(no_jump_into_finally_block)
-    def test_17_no_jump_out_of_finally_block(self):
-        self.run_test(no_jump_out_of_finally_block)
-    def test_18_no_jump_to_non_integers(self):
-        self.run_test(no_jump_to_non_integers)
-    def test_19_no_jump_without_trace_function(self):
-        no_jump_without_trace_function()
-
-    def test_20_large_function(self):
-        d = {}
-        exec("""def f(output):        # line 0
-            x = 0                     # line 1
-            y = 1                     # line 2
-            '''                       # line 3
-            %s                        # lines 4-1004
-            '''                       # line 1005
-            x += 1                    # line 1006
-            output.append(x)          # line 1007
-            return""" % ('\n' * 1000,), d)
-        f = d['f']
-
-        f.jump = (2, 1007)
-        f.output = [0]
-        self.run_test(f)
-
-    def test_jump_to_firstlineno(self):
-        # This tests that PDB can jump back to the first line in a
-        # file.  See issue #1689458.  It can only be triggered in a
-        # function call if the function is defined on a single line.
-        code = compile("""
-# Comments don't count.
-output.append(2)  # firstlineno is here.
-output.append(3)
-output.append(4)
-""", "<fake module>", "exec")
-        class fake_function:
-            func_code = code
-            jump = (2, 0)
-        tracer = JumpTracer(fake_function)
-        sys.settrace(tracer.trace)
-        namespace = {"output": []}
-        exec code in namespace
-        sys.settrace(None)
-        self.compare_jump_output([2, 3, 2, 3, 4], namespace["output"])
-
-
-def test_main():
-    test_support.run_unittest(
-        TraceTestCase,
-        RaisingTraceFuncTestCase,
-        JumpTestCase
-    )
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sysconfig.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sysconfig.py
deleted file mode 100644
index 0329c98..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sysconfig.py
+++ /dev/null
@@ -1,316 +0,0 @@
-"""Tests for 'site'.
-
-Tests assume the initial paths in sys.path once the interpreter has begun
-executing have not been removed.
-
-"""
-import unittest
-import sys
-import os
-import shutil
-import subprocess
-from copy import copy, deepcopy
-
-from test.test_support import run_unittest, TESTFN, unlink, get_attribute
-
-import sysconfig
-from sysconfig import (get_paths, get_platform, get_config_vars,
-                       get_path, get_path_names, _INSTALL_SCHEMES,
-                       _get_default_scheme, _expand_vars,
-                       get_scheme_names, get_config_var)
-
-class TestSysConfig(unittest.TestCase):
-
-    def setUp(self):
-        """Make a copy of sys.path"""
-        super(TestSysConfig, self).setUp()
-        self.sys_path = sys.path[:]
-        self.makefile = None
-        # patching os.uname
-        if hasattr(os, 'uname'):
-            self.uname = os.uname
-            self._uname = os.uname()
-        else:
-            self.uname = None
-            self._uname = None
-        os.uname = self._get_uname
-        # saving the environment
-        self.name = os.name
-        self.platform = sys.platform
-        self.version = sys.version
-        self.sep = os.sep
-        self.join = os.path.join
-        self.isabs = os.path.isabs
-        self.splitdrive = os.path.splitdrive
-        self._config_vars = copy(sysconfig._CONFIG_VARS)
-        self.old_environ = deepcopy(os.environ)
-
-    def tearDown(self):
-        """Restore sys.path"""
-        sys.path[:] = self.sys_path
-        if self.makefile is not None:
-            os.unlink(self.makefile)
-        self._cleanup_testfn()
-        if self.uname is not None:
-            os.uname = self.uname
-        else:
-            del os.uname
-        os.name = self.name
-        sys.platform = self.platform
-        sys.version = self.version
-        os.sep = self.sep
-        os.path.join = self.join
-        os.path.isabs = self.isabs
-        os.path.splitdrive = self.splitdrive
-        sysconfig._CONFIG_VARS = copy(self._config_vars)
-        for key, value in self.old_environ.items():
-            if os.environ.get(key) != value:
-                os.environ[key] = value
-
-        for key in os.environ.keys():
-            if key not in self.old_environ:
-                del os.environ[key]
-
-        super(TestSysConfig, self).tearDown()
-
-    def _set_uname(self, uname):
-        self._uname = uname
-
-    def _get_uname(self):
-        return self._uname
-
-    def _cleanup_testfn(self):
-        path = TESTFN
-        if os.path.isfile(path):
-            os.remove(path)
-        elif os.path.isdir(path):
-            shutil.rmtree(path)
-
-    def test_get_path_names(self):
-        self.assertEqual(get_path_names(), sysconfig._SCHEME_KEYS)
-
-    def test_get_paths(self):
-        scheme = get_paths()
-        default_scheme = _get_default_scheme()
-        wanted = _expand_vars(default_scheme, None)
-        wanted = wanted.items()
-        wanted.sort()
-        scheme = scheme.items()
-        scheme.sort()
-        self.assertEqual(scheme, wanted)
-
-    def test_get_path(self):
-        # xxx make real tests here
-        for scheme in _INSTALL_SCHEMES:
-            for name in _INSTALL_SCHEMES[scheme]:
-                res = get_path(name, scheme)
-
-    def test_get_config_vars(self):
-        cvars = get_config_vars()
-        self.assertIsInstance(cvars, dict)
-        self.assertTrue(cvars)
-
-    def test_get_platform(self):
-        # windows XP, 32bits
-        os.name = 'nt'
-        sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) '
-                       '[MSC v.1310 32 bit (Intel)]')
-        sys.platform = 'win32'
-        self.assertEqual(get_platform(), 'win32')
-
-        # windows XP, amd64
-        os.name = 'nt'
-        sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) '
-                       '[MSC v.1310 32 bit (Amd64)]')
-        sys.platform = 'win32'
-        self.assertEqual(get_platform(), 'win-amd64')
-
-        # windows XP, itanium
-        os.name = 'nt'
-        sys.version = ('2.4.4 (#71, Oct 18 2006, 08:34:43) '
-                       '[MSC v.1310 32 bit (Itanium)]')
-        sys.platform = 'win32'
-        self.assertEqual(get_platform(), 'win-ia64')
-
-        # macbook
-        os.name = 'posix'
-        sys.version = ('2.5 (r25:51918, Sep 19 2006, 08:49:13) '
-                       '\n[GCC 4.0.1 (Apple Computer, Inc. build 5341)]')
-        sys.platform = 'darwin'
-        self._set_uname(('Darwin', 'macziade', '8.11.1',
-                   ('Darwin Kernel Version 8.11.1: '
-                    'Wed Oct 10 18:23:28 PDT 2007; '
-                    'root:xnu-792.25.20~1/RELEASE_I386'), 'PowerPC'))
-        get_config_vars()['MACOSX_DEPLOYMENT_TARGET'] = '10.3'
-
-        get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g '
-                                       '-fwrapv -O3 -Wall -Wstrict-prototypes')
-
-        maxint = sys.maxint
-        try:
-            sys.maxint = 2147483647
-            self.assertEqual(get_platform(), 'macosx-10.3-ppc')
-            sys.maxint = 9223372036854775807
-            self.assertEqual(get_platform(), 'macosx-10.3-ppc64')
-        finally:
-            sys.maxint = maxint
-
-
-        self._set_uname(('Darwin', 'macziade', '8.11.1',
-                   ('Darwin Kernel Version 8.11.1: '
-                    'Wed Oct 10 18:23:28 PDT 2007; '
-                    'root:xnu-792.25.20~1/RELEASE_I386'), 'i386'))
-        get_config_vars()['MACOSX_DEPLOYMENT_TARGET'] = '10.3'
-
-        get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g '
-                                       '-fwrapv -O3 -Wall -Wstrict-prototypes')
-
-        maxint = sys.maxint
-        try:
-            sys.maxint = 2147483647
-            self.assertEqual(get_platform(), 'macosx-10.3-i386')
-            sys.maxint = 9223372036854775807
-            self.assertEqual(get_platform(), 'macosx-10.3-x86_64')
-        finally:
-            sys.maxint = maxint
-
-        # macbook with fat binaries (fat, universal or fat64)
-        get_config_vars()['MACOSX_DEPLOYMENT_TARGET'] = '10.4'
-        get_config_vars()['CFLAGS'] = ('-arch ppc -arch i386 -isysroot '
-                                       '/Developer/SDKs/MacOSX10.4u.sdk  '
-                                       '-fno-strict-aliasing -fno-common '
-                                       '-dynamic -DNDEBUG -g -O3')
-
-        self.assertEqual(get_platform(), 'macosx-10.4-fat')
-
-        get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch i386 -isysroot '
-                                       '/Developer/SDKs/MacOSX10.4u.sdk  '
-                                       '-fno-strict-aliasing -fno-common '
-                                       '-dynamic -DNDEBUG -g -O3')
-
-        self.assertEqual(get_platform(), 'macosx-10.4-intel')
-
-        get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch ppc -arch i386 -isysroot '
-                                       '/Developer/SDKs/MacOSX10.4u.sdk  '
-                                       '-fno-strict-aliasing -fno-common '
-                                       '-dynamic -DNDEBUG -g -O3')
-        self.assertEqual(get_platform(), 'macosx-10.4-fat3')
-
-        get_config_vars()['CFLAGS'] = ('-arch ppc64 -arch x86_64 -arch ppc -arch i386 -isysroot '
-                                       '/Developer/SDKs/MacOSX10.4u.sdk  '
-                                       '-fno-strict-aliasing -fno-common '
-                                       '-dynamic -DNDEBUG -g -O3')
-        self.assertEqual(get_platform(), 'macosx-10.4-universal')
-
-        get_config_vars()['CFLAGS'] = ('-arch x86_64 -arch ppc64 -isysroot '
-                                       '/Developer/SDKs/MacOSX10.4u.sdk  '
-                                       '-fno-strict-aliasing -fno-common '
-                                       '-dynamic -DNDEBUG -g -O3')
-
-        self.assertEqual(get_platform(), 'macosx-10.4-fat64')
-
-        for arch in ('ppc', 'i386', 'x86_64', 'ppc64'):
-            get_config_vars()['CFLAGS'] = ('-arch %s -isysroot '
-                                           '/Developer/SDKs/MacOSX10.4u.sdk  '
-                                           '-fno-strict-aliasing -fno-common '
-                                           '-dynamic -DNDEBUG -g -O3'%(arch,))
-
-            self.assertEqual(get_platform(), 'macosx-10.4-%s'%(arch,))
-
-        # linux debian sarge
-        os.name = 'posix'
-        sys.version = ('2.3.5 (#1, Jul  4 2007, 17:28:59) '
-                       '\n[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)]')
-        sys.platform = 'linux2'
-        self._set_uname(('Linux', 'aglae', '2.6.21.1dedibox-r7',
-                    '#1 Mon Apr 30 17:25:38 CEST 2007', 'i686'))
-
-        self.assertEqual(get_platform(), 'linux-i686')
-
-        # XXX more platforms to tests here
-
-    def test_get_config_h_filename(self):
-        config_h = sysconfig.get_config_h_filename()
-        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',
-                  'posix_home', 'posix_prefix', 'posix_user')
-        self.assertEqual(get_scheme_names(), wanted)
-
-    def test_symlink(self):
-        # Issue 7880
-        symlink = get_attribute(os, "symlink")
-        def get(python):
-            cmd = [python, '-c',
-                   'import sysconfig; print sysconfig.get_platform()']
-            p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
-            return p.communicate()
-        real = os.path.realpath(sys.executable)
-        link = os.path.abspath(TESTFN)
-        symlink(real, link)
-        try:
-            self.assertEqual(get(real), get(link))
-        finally:
-            unlink(link)
-
-    def test_user_similar(self):
-        # Issue 8759 : make sure the posix scheme for the users
-        # is similar to the global posix_prefix one
-        base = get_config_var('base')
-        user = get_config_var('userbase')
-        for name in ('stdlib', 'platstdlib', 'purelib', 'platlib'):
-            global_path = get_path(name, 'posix_prefix')
-            user_path = get_path(name, 'posix_user')
-            self.assertEqual(user_path, global_path.replace(base, user))
-
-    @unittest.skipUnless(sys.platform == "darwin", "test only relevant on MacOSX")
-    def test_platform_in_subprocess(self):
-        my_platform = sysconfig.get_platform()
-
-        # Test without MACOSX_DEPLOYMENT_TARGET in the environment
-
-        env = os.environ.copy()
-        if 'MACOSX_DEPLOYMENT_TARGET' in env:
-            del env['MACOSX_DEPLOYMENT_TARGET']
-
-        with open('/dev/null', 'w') as devnull_fp:
-            p = subprocess.Popen([
-                    sys.executable, '-c',
-                   'import sysconfig; print(sysconfig.get_platform())',
-                ],
-                stdout=subprocess.PIPE,
-                stderr=devnull_fp,
-                env=env)
-        test_platform = p.communicate()[0].strip()
-        test_platform = test_platform.decode('utf-8')
-        status = p.wait()
-
-        self.assertEqual(status, 0)
-        self.assertEqual(my_platform, test_platform)
-
-
-        # Test with MACOSX_DEPLOYMENT_TARGET in the environment, and
-        # using a value that is unlikely to be the default one.
-        env = os.environ.copy()
-        env['MACOSX_DEPLOYMENT_TARGET'] = '10.1'
-
-        p = subprocess.Popen([
-                sys.executable, '-c',
-                'import sysconfig; print(sysconfig.get_platform())',
-            ],
-            stdout=subprocess.PIPE,
-            stderr=open('/dev/null'),
-            env=env)
-        test_platform = p.communicate()[0].strip()
-        test_platform = test_platform.decode('utf-8')
-        status = p.wait()
-
-        self.assertEqual(status, 0)
-        self.assertEqual(my_platform, test_platform)
-
-def test_main():
-    run_unittest(TestSysConfig)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tarfile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tarfile.py
deleted file mode 100644
index 0963944..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tarfile.py
+++ /dev/null
@@ -1,1637 +0,0 @@
-# -*- coding: iso-8859-15 -*-
-
-import sys
-import os
-import shutil
-import StringIO
-from hashlib import md5
-import errno
-
-import unittest
-import tarfile
-
-from test import test_support
-
-# Check for our compression modules.
-try:
-    import gzip
-    gzip.GzipFile
-except (ImportError, AttributeError):
-    gzip = None
-try:
-    import bz2
-except ImportError:
-    bz2 = None
-
-def md5sum(data):
-    return md5(data).hexdigest()
-
-TEMPDIR = os.path.abspath(test_support.TESTFN)
-tarname = test_support.findfile("testtar.tar")
-gzipname = os.path.join(TEMPDIR, "testtar.tar.gz")
-bz2name = os.path.join(TEMPDIR, "testtar.tar.bz2")
-tmpname = os.path.join(TEMPDIR, "tmp.tar")
-
-md5_regtype = "65f477c818ad9e15f7feab0c6d37742f"
-md5_sparse = "a54fbc4ca4f4399a90e1b27164012fc6"
-
-
-class ReadTest(unittest.TestCase):
-
-    tarname = tarname
-    mode = "r:"
-
-    def setUp(self):
-        self.tar = tarfile.open(self.tarname, mode=self.mode, encoding="iso8859-1")
-
-    def tearDown(self):
-        self.tar.close()
-
-
-class UstarReadTest(ReadTest):
-
-    def test_fileobj_regular_file(self):
-        tarinfo = self.tar.getmember("ustar/regtype")
-        fobj = self.tar.extractfile(tarinfo)
-        data = fobj.read()
-        self.assertTrue((len(data), md5sum(data)) == (tarinfo.size, md5_regtype),
-                "regular file extraction failed")
-
-    def test_fileobj_readlines(self):
-        self.tar.extract("ustar/regtype", TEMPDIR)
-        tarinfo = self.tar.getmember("ustar/regtype")
-        fobj1 = open(os.path.join(TEMPDIR, "ustar/regtype"), "rU")
-        fobj2 = self.tar.extractfile(tarinfo)
-
-        lines1 = fobj1.readlines()
-        lines2 = fobj2.readlines()
-        self.assertTrue(lines1 == lines2,
-                "fileobj.readlines() failed")
-        self.assertTrue(len(lines2) == 114,
-                "fileobj.readlines() failed")
-        self.assertTrue(lines2[83] ==
-                "I will gladly admit that Python is not the fastest running scripting language.\n",
-                "fileobj.readlines() failed")
-
-    def test_fileobj_iter(self):
-        self.tar.extract("ustar/regtype", TEMPDIR)
-        tarinfo = self.tar.getmember("ustar/regtype")
-        fobj1 = open(os.path.join(TEMPDIR, "ustar/regtype"), "rU")
-        fobj2 = self.tar.extractfile(tarinfo)
-        lines1 = fobj1.readlines()
-        lines2 = [line for line in fobj2]
-        self.assertTrue(lines1 == lines2,
-                     "fileobj.__iter__() failed")
-
-    def test_fileobj_seek(self):
-        self.tar.extract("ustar/regtype", TEMPDIR)
-        fobj = open(os.path.join(TEMPDIR, "ustar/regtype"), "rb")
-        data = fobj.read()
-        fobj.close()
-
-        tarinfo = self.tar.getmember("ustar/regtype")
-        fobj = self.tar.extractfile(tarinfo)
-
-        text = fobj.read()
-        fobj.seek(0)
-        self.assertTrue(0 == fobj.tell(),
-                     "seek() to file's start failed")
-        fobj.seek(2048, 0)
-        self.assertTrue(2048 == fobj.tell(),
-                     "seek() to absolute position failed")
-        fobj.seek(-1024, 1)
-        self.assertTrue(1024 == fobj.tell(),
-                     "seek() to negative relative position failed")
-        fobj.seek(1024, 1)
-        self.assertTrue(2048 == fobj.tell(),
-                     "seek() to positive relative position failed")
-        s = fobj.read(10)
-        self.assertTrue(s == data[2048:2058],
-                     "read() after seek failed")
-        fobj.seek(0, 2)
-        self.assertTrue(tarinfo.size == fobj.tell(),
-                     "seek() to file's end failed")
-        self.assertTrue(fobj.read() == "",
-                     "read() at file's end did not return empty string")
-        fobj.seek(-tarinfo.size, 2)
-        self.assertTrue(0 == fobj.tell(),
-                     "relative seek() to file's start failed")
-        fobj.seek(512)
-        s1 = fobj.readlines()
-        fobj.seek(512)
-        s2 = fobj.readlines()
-        self.assertTrue(s1 == s2,
-                     "readlines() after seek failed")
-        fobj.seek(0)
-        self.assertTrue(len(fobj.readline()) == fobj.tell(),
-                     "tell() after readline() failed")
-        fobj.seek(512)
-        self.assertTrue(len(fobj.readline()) + 512 == fobj.tell(),
-                     "tell() after seek() and readline() failed")
-        fobj.seek(0)
-        line = fobj.readline()
-        self.assertTrue(fobj.read() == data[len(line):],
-                     "read() after readline() failed")
-        fobj.close()
-
-    # Test if symbolic and hard links are resolved by extractfile().  The
-    # test link members each point to a regular member whose data is
-    # supposed to be exported.
-    def _test_fileobj_link(self, lnktype, regtype):
-        a = self.tar.extractfile(lnktype)
-        b = self.tar.extractfile(regtype)
-        self.assertEqual(a.name, b.name)
-
-    def test_fileobj_link1(self):
-        self._test_fileobj_link("ustar/lnktype", "ustar/regtype")
-
-    def test_fileobj_link2(self):
-        self._test_fileobj_link("./ustar/linktest2/lnktype", "ustar/linktest1/regtype")
-
-    def test_fileobj_symlink1(self):
-        self._test_fileobj_link("ustar/symtype", "ustar/regtype")
-
-    def test_fileobj_symlink2(self):
-        self._test_fileobj_link("./ustar/linktest2/symtype", "ustar/linktest1/regtype")
-
-
-class CommonReadTest(ReadTest):
-
-    def test_empty_tarfile(self):
-        # Test for issue6123: Allow opening empty archives.
-        # This test checks if tarfile.open() is able to open an empty tar
-        # archive successfully. Note that an empty tar archive is not the
-        # same as an empty file!
-        tarfile.open(tmpname, self.mode.replace("r", "w")).close()
-        try:
-            tar = tarfile.open(tmpname, self.mode)
-            tar.getnames()
-        except tarfile.ReadError:
-            self.fail("tarfile.open() failed on empty archive")
-        self.assertListEqual(tar.getmembers(), [])
-
-    def test_null_tarfile(self):
-        # Test for issue6123: Allow opening empty archives.
-        # This test guarantees that tarfile.open() does not treat an empty
-        # file as an empty tar archive.
-        open(tmpname, "wb").close()
-        self.assertRaises(tarfile.ReadError, tarfile.open, tmpname, self.mode)
-        self.assertRaises(tarfile.ReadError, tarfile.open, tmpname)
-
-    def test_ignore_zeros(self):
-        # Test TarFile's ignore_zeros option.
-        if self.mode.endswith(":gz"):
-            _open = gzip.GzipFile
-        elif self.mode.endswith(":bz2"):
-            _open = bz2.BZ2File
-        else:
-            _open = open
-
-        for char in ('\0', 'a'):
-            # Test if EOFHeaderError ('\0') and InvalidHeaderError ('a')
-            # are ignored correctly.
-            fobj = _open(tmpname, "wb")
-            fobj.write(char * 1024)
-            fobj.write(tarfile.TarInfo("foo").tobuf())
-            fobj.close()
-
-            tar = tarfile.open(tmpname, mode="r", ignore_zeros=True)
-            self.assertListEqual(tar.getnames(), ["foo"],
-                    "ignore_zeros=True should have skipped the %r-blocks" % char)
-            tar.close()
-
-
-class MiscReadTest(CommonReadTest):
-
-    def test_no_name_argument(self):
-        fobj = open(self.tarname, "rb")
-        tar = tarfile.open(fileobj=fobj, mode=self.mode)
-        self.assertEqual(tar.name, os.path.abspath(fobj.name))
-
-    def test_no_name_attribute(self):
-        data = open(self.tarname, "rb").read()
-        fobj = StringIO.StringIO(data)
-        self.assertRaises(AttributeError, getattr, fobj, "name")
-        tar = tarfile.open(fileobj=fobj, mode=self.mode)
-        self.assertEqual(tar.name, None)
-
-    def test_empty_name_attribute(self):
-        data = open(self.tarname, "rb").read()
-        fobj = StringIO.StringIO(data)
-        fobj.name = ""
-        tar = tarfile.open(fileobj=fobj, mode=self.mode)
-        self.assertEqual(tar.name, None)
-
-    def test_fileobj_with_offset(self):
-        # Skip the first member and store values from the second member
-        # of the testtar.
-        tar = tarfile.open(self.tarname, mode=self.mode)
-        tar.next()
-        t = tar.next()
-        name = t.name
-        offset = t.offset
-        data = tar.extractfile(t).read()
-        tar.close()
-
-        # Open the testtar and seek to the offset of the second member.
-        if self.mode.endswith(":gz"):
-            _open = gzip.GzipFile
-        elif self.mode.endswith(":bz2"):
-            _open = bz2.BZ2File
-        else:
-            _open = open
-        fobj = _open(self.tarname, "rb")
-        fobj.seek(offset)
-
-        # Test if the tarfile starts with the second member.
-        tar = tar.open(self.tarname, mode="r:", fileobj=fobj)
-        t = tar.next()
-        self.assertEqual(t.name, name)
-        # Read to the end of fileobj and test if seeking back to the
-        # beginning works.
-        tar.getmembers()
-        self.assertEqual(tar.extractfile(t).read(), data,
-                "seek back did not work")
-        tar.close()
-
-    def test_fail_comp(self):
-        # For Gzip and Bz2 Tests: fail with a ReadError on an uncompressed file.
-        if self.mode == "r:":
-            return
-        self.assertRaises(tarfile.ReadError, tarfile.open, tarname, self.mode)
-        fobj = open(tarname, "rb")
-        self.assertRaises(tarfile.ReadError, tarfile.open, fileobj=fobj, mode=self.mode)
-
-    def test_v7_dirtype(self):
-        # Test old style dirtype member (bug #1336623):
-        # Old V7 tars create directory members using an AREGTYPE
-        # header with a "/" appended to the filename field.
-        tarinfo = self.tar.getmember("misc/dirtype-old-v7")
-        self.assertTrue(tarinfo.type == tarfile.DIRTYPE,
-                "v7 dirtype failed")
-
-    def test_xstar_type(self):
-        # The xstar format stores extra atime and ctime fields inside the
-        # space reserved for the prefix field. The prefix field must be
-        # ignored in this case, otherwise it will mess up the name.
-        try:
-            self.tar.getmember("misc/regtype-xstar")
-        except KeyError:
-            self.fail("failed to find misc/regtype-xstar (mangled prefix?)")
-
-    def test_check_members(self):
-        for tarinfo in self.tar:
-            self.assertTrue(int(tarinfo.mtime) == 07606136617,
-                    "wrong mtime for %s" % tarinfo.name)
-            if not tarinfo.name.startswith("ustar/"):
-                continue
-            self.assertTrue(tarinfo.uname == "tarfile",
-                    "wrong uname for %s" % tarinfo.name)
-
-    def test_find_members(self):
-        self.assertTrue(self.tar.getmembers()[-1].name == "misc/eof",
-                "could not find all members")
-
-    def test_extract_hardlink(self):
-        # Test hardlink extraction (e.g. bug #857297).
-        tar = tarfile.open(tarname, errorlevel=1, encoding="iso8859-1")
-
-        tar.extract("ustar/regtype", TEMPDIR)
-        try:
-            tar.extract("ustar/lnktype", TEMPDIR)
-        except EnvironmentError, e:
-            if e.errno == errno.ENOENT:
-                self.fail("hardlink not extracted properly")
-
-        data = open(os.path.join(TEMPDIR, "ustar/lnktype"), "rb").read()
-        self.assertEqual(md5sum(data), md5_regtype)
-
-        try:
-            tar.extract("ustar/symtype", TEMPDIR)
-        except EnvironmentError, e:
-            if e.errno == errno.ENOENT:
-                self.fail("symlink not extracted properly")
-
-        data = open(os.path.join(TEMPDIR, "ustar/symtype"), "rb").read()
-        self.assertEqual(md5sum(data), md5_regtype)
-
-    def test_extractall(self):
-        # Test if extractall() correctly restores directory permissions
-        # and times (see issue1735).
-        tar = tarfile.open(tarname, encoding="iso8859-1")
-        directories = [t for t in tar if t.isdir()]
-        tar.extractall(TEMPDIR, directories)
-        for tarinfo in directories:
-            path = os.path.join(TEMPDIR, tarinfo.name)
-            if sys.platform != "win32":
-                # Win32 has no support for fine grained permissions.
-                self.assertEqual(tarinfo.mode & 0777, os.stat(path).st_mode & 0777)
-            self.assertEqual(tarinfo.mtime, os.path.getmtime(path))
-        tar.close()
-
-    def test_init_close_fobj(self):
-        # Issue #7341: Close the internal file object in the TarFile
-        # constructor in case of an error. For the test we rely on
-        # the fact that opening an empty file raises a ReadError.
-        empty = os.path.join(TEMPDIR, "empty")
-        open(empty, "wb").write("")
-
-        try:
-            tar = object.__new__(tarfile.TarFile)
-            try:
-                tar.__init__(empty)
-            except tarfile.ReadError:
-                self.assertTrue(tar.fileobj.closed)
-            else:
-                self.fail("ReadError not raised")
-        finally:
-            os.remove(empty)
-
-
-class StreamReadTest(CommonReadTest):
-
-    mode="r|"
-
-    def test_fileobj_regular_file(self):
-        tarinfo = self.tar.next() # get "regtype" (can't use getmember)
-        fobj = self.tar.extractfile(tarinfo)
-        data = fobj.read()
-        self.assertTrue((len(data), md5sum(data)) == (tarinfo.size, md5_regtype),
-                "regular file extraction failed")
-
-    def test_provoke_stream_error(self):
-        tarinfos = self.tar.getmembers()
-        f = self.tar.extractfile(tarinfos[0]) # read the first member
-        self.assertRaises(tarfile.StreamError, f.read)
-
-    def test_compare_members(self):
-        tar1 = tarfile.open(tarname, encoding="iso8859-1")
-        tar2 = self.tar
-
-        while True:
-            t1 = tar1.next()
-            t2 = tar2.next()
-            if t1 is None:
-                break
-            self.assertTrue(t2 is not None, "stream.next() failed.")
-
-            if t2.islnk() or t2.issym():
-                self.assertRaises(tarfile.StreamError, tar2.extractfile, t2)
-                continue
-
-            v1 = tar1.extractfile(t1)
-            v2 = tar2.extractfile(t2)
-            if v1 is None:
-                continue
-            self.assertTrue(v2 is not None, "stream.extractfile() failed")
-            self.assertTrue(v1.read() == v2.read(), "stream extraction failed")
-
-        tar1.close()
-
-
-class DetectReadTest(unittest.TestCase):
-
-    def _testfunc_file(self, name, mode):
-        try:
-            tarfile.open(name, mode)
-        except tarfile.ReadError:
-            self.fail()
-
-    def _testfunc_fileobj(self, name, mode):
-        try:
-            tarfile.open(name, mode, fileobj=open(name, "rb"))
-        except tarfile.ReadError:
-            self.fail()
-
-    def _test_modes(self, testfunc):
-        testfunc(tarname, "r")
-        testfunc(tarname, "r:")
-        testfunc(tarname, "r:*")
-        testfunc(tarname, "r|")
-        testfunc(tarname, "r|*")
-
-        if gzip:
-            self.assertRaises(tarfile.ReadError, tarfile.open, tarname, mode="r:gz")
-            self.assertRaises(tarfile.ReadError, tarfile.open, tarname, mode="r|gz")
-            self.assertRaises(tarfile.ReadError, tarfile.open, gzipname, mode="r:")
-            self.assertRaises(tarfile.ReadError, tarfile.open, gzipname, mode="r|")
-
-            testfunc(gzipname, "r")
-            testfunc(gzipname, "r:*")
-            testfunc(gzipname, "r:gz")
-            testfunc(gzipname, "r|*")
-            testfunc(gzipname, "r|gz")
-
-        if bz2:
-            self.assertRaises(tarfile.ReadError, tarfile.open, tarname, mode="r:bz2")
-            self.assertRaises(tarfile.ReadError, tarfile.open, tarname, mode="r|bz2")
-            self.assertRaises(tarfile.ReadError, tarfile.open, bz2name, mode="r:")
-            self.assertRaises(tarfile.ReadError, tarfile.open, bz2name, mode="r|")
-
-            testfunc(bz2name, "r")
-            testfunc(bz2name, "r:*")
-            testfunc(bz2name, "r:bz2")
-            testfunc(bz2name, "r|*")
-            testfunc(bz2name, "r|bz2")
-
-    def test_detect_file(self):
-        self._test_modes(self._testfunc_file)
-
-    def test_detect_fileobj(self):
-        self._test_modes(self._testfunc_fileobj)
-
-
-class MemberReadTest(ReadTest):
-
-    def _test_member(self, tarinfo, chksum=None, **kwargs):
-        if chksum is not None:
-            self.assertTrue(md5sum(self.tar.extractfile(tarinfo).read()) == chksum,
-                    "wrong md5sum for %s" % tarinfo.name)
-
-        kwargs["mtime"] = 07606136617
-        kwargs["uid"] = 1000
-        kwargs["gid"] = 100
-        if "old-v7" not in tarinfo.name:
-            # V7 tar can't handle alphabetic owners.
-            kwargs["uname"] = "tarfile"
-            kwargs["gname"] = "tarfile"
-        for k, v in kwargs.iteritems():
-            self.assertTrue(getattr(tarinfo, k) == v,
-                    "wrong value in %s field of %s" % (k, tarinfo.name))
-
-    def test_find_regtype(self):
-        tarinfo = self.tar.getmember("ustar/regtype")
-        self._test_member(tarinfo, size=7011, chksum=md5_regtype)
-
-    def test_find_conttype(self):
-        tarinfo = self.tar.getmember("ustar/conttype")
-        self._test_member(tarinfo, size=7011, chksum=md5_regtype)
-
-    def test_find_dirtype(self):
-        tarinfo = self.tar.getmember("ustar/dirtype")
-        self._test_member(tarinfo, size=0)
-
-    def test_find_dirtype_with_size(self):
-        tarinfo = self.tar.getmember("ustar/dirtype-with-size")
-        self._test_member(tarinfo, size=255)
-
-    def test_find_lnktype(self):
-        tarinfo = self.tar.getmember("ustar/lnktype")
-        self._test_member(tarinfo, size=0, linkname="ustar/regtype")
-
-    def test_find_symtype(self):
-        tarinfo = self.tar.getmember("ustar/symtype")
-        self._test_member(tarinfo, size=0, linkname="regtype")
-
-    def test_find_blktype(self):
-        tarinfo = self.tar.getmember("ustar/blktype")
-        self._test_member(tarinfo, size=0, devmajor=3, devminor=0)
-
-    def test_find_chrtype(self):
-        tarinfo = self.tar.getmember("ustar/chrtype")
-        self._test_member(tarinfo, size=0, devmajor=1, devminor=3)
-
-    def test_find_fifotype(self):
-        tarinfo = self.tar.getmember("ustar/fifotype")
-        self._test_member(tarinfo, size=0)
-
-    def test_find_sparse(self):
-        tarinfo = self.tar.getmember("ustar/sparse")
-        self._test_member(tarinfo, size=86016, chksum=md5_sparse)
-
-    def test_find_umlauts(self):
-        tarinfo = self.tar.getmember("ustar/umlauts-ÄÖÜäöüß")
-        self._test_member(tarinfo, size=7011, chksum=md5_regtype)
-
-    def test_find_ustar_longname(self):
-        name = "ustar/" + "12345/" * 39 + "1234567/longname"
-        self.assertIn(name, self.tar.getnames())
-
-    def test_find_regtype_oldv7(self):
-        tarinfo = self.tar.getmember("misc/regtype-old-v7")
-        self._test_member(tarinfo, size=7011, chksum=md5_regtype)
-
-    def test_find_pax_umlauts(self):
-        self.tar = tarfile.open(self.tarname, mode=self.mode, encoding="iso8859-1")
-        tarinfo = self.tar.getmember("pax/umlauts-ÄÖÜäöüß")
-        self._test_member(tarinfo, size=7011, chksum=md5_regtype)
-
-
-class LongnameTest(ReadTest):
-
-    def test_read_longname(self):
-        # Test reading of longname (bug #1471427).
-        longname = self.subdir + "/" + "123/" * 125 + "longname"
-        try:
-            tarinfo = self.tar.getmember(longname)
-        except KeyError:
-            self.fail("longname not found")
-        self.assertTrue(tarinfo.type != tarfile.DIRTYPE, "read longname as dirtype")
-
-    def test_read_longlink(self):
-        longname = self.subdir + "/" + "123/" * 125 + "longname"
-        longlink = self.subdir + "/" + "123/" * 125 + "longlink"
-        try:
-            tarinfo = self.tar.getmember(longlink)
-        except KeyError:
-            self.fail("longlink not found")
-        self.assertTrue(tarinfo.linkname == longname, "linkname wrong")
-
-    def test_truncated_longname(self):
-        longname = self.subdir + "/" + "123/" * 125 + "longname"
-        tarinfo = self.tar.getmember(longname)
-        offset = tarinfo.offset
-        self.tar.fileobj.seek(offset)
-        fobj = StringIO.StringIO(self.tar.fileobj.read(3 * 512))
-        self.assertRaises(tarfile.ReadError, tarfile.open, name="foo.tar", fileobj=fobj)
-
-    def test_header_offset(self):
-        # Test if the start offset of the TarInfo object includes
-        # the preceding extended header.
-        longname = self.subdir + "/" + "123/" * 125 + "longname"
-        offset = self.tar.getmember(longname).offset
-        fobj = open(tarname)
-        fobj.seek(offset)
-        tarinfo = tarfile.TarInfo.frombuf(fobj.read(512))
-        self.assertEqual(tarinfo.type, self.longnametype)
-
-
-class GNUReadTest(LongnameTest):
-
-    subdir = "gnu"
-    longnametype = tarfile.GNUTYPE_LONGNAME
-
-    def test_sparse_file(self):
-        tarinfo1 = self.tar.getmember("ustar/sparse")
-        fobj1 = self.tar.extractfile(tarinfo1)
-        tarinfo2 = self.tar.getmember("gnu/sparse")
-        fobj2 = self.tar.extractfile(tarinfo2)
-        self.assertTrue(fobj1.read() == fobj2.read(),
-                "sparse file extraction failed")
-
-
-class PaxReadTest(LongnameTest):
-
-    subdir = "pax"
-    longnametype = tarfile.XHDTYPE
-
-    def test_pax_global_headers(self):
-        tar = tarfile.open(tarname, encoding="iso8859-1")
-
-        tarinfo = tar.getmember("pax/regtype1")
-        self.assertEqual(tarinfo.uname, "foo")
-        self.assertEqual(tarinfo.gname, "bar")
-        self.assertEqual(tarinfo.pax_headers.get("VENDOR.umlauts"), u"ÄÖÜäöüß")
-
-        tarinfo = tar.getmember("pax/regtype2")
-        self.assertEqual(tarinfo.uname, "")
-        self.assertEqual(tarinfo.gname, "bar")
-        self.assertEqual(tarinfo.pax_headers.get("VENDOR.umlauts"), u"ÄÖÜäöüß")
-
-        tarinfo = tar.getmember("pax/regtype3")
-        self.assertEqual(tarinfo.uname, "tarfile")
-        self.assertEqual(tarinfo.gname, "tarfile")
-        self.assertEqual(tarinfo.pax_headers.get("VENDOR.umlauts"), u"ÄÖÜäöüß")
-
-    def test_pax_number_fields(self):
-        # All following number fields are read from the pax header.
-        tar = tarfile.open(tarname, encoding="iso8859-1")
-        tarinfo = tar.getmember("pax/regtype4")
-        self.assertEqual(tarinfo.size, 7011)
-        self.assertEqual(tarinfo.uid, 123)
-        self.assertEqual(tarinfo.gid, 123)
-        self.assertEqual(tarinfo.mtime, 1041808783.0)
-        self.assertEqual(type(tarinfo.mtime), float)
-        self.assertEqual(float(tarinfo.pax_headers["atime"]), 1041808783.0)
-        self.assertEqual(float(tarinfo.pax_headers["ctime"]), 1041808783.0)
-
-
-class WriteTestBase(unittest.TestCase):
-    # Put all write tests in here that are supposed to be tested
-    # in all possible mode combinations.
-
-    def test_fileobj_no_close(self):
-        fobj = StringIO.StringIO()
-        tar = tarfile.open(fileobj=fobj, mode=self.mode)
-        tar.addfile(tarfile.TarInfo("foo"))
-        tar.close()
-        self.assertTrue(fobj.closed is False, "external fileobjs must never closed")
-
-
-class WriteTest(WriteTestBase):
-
-    mode = "w:"
-
-    def test_100_char_name(self):
-        # The name field in a tar header stores strings of at most 100 chars.
-        # If a string is shorter than 100 chars it has to be padded with '\0',
-        # which implies that a string of exactly 100 chars is stored without
-        # a trailing '\0'.
-        name = "0123456789" * 10
-        tar = tarfile.open(tmpname, self.mode)
-        t = tarfile.TarInfo(name)
-        tar.addfile(t)
-        tar.close()
-
-        tar = tarfile.open(tmpname)
-        self.assertTrue(tar.getnames()[0] == name,
-                "failed to store 100 char filename")
-        tar.close()
-
-    def test_tar_size(self):
-        # Test for bug #1013882.
-        tar = tarfile.open(tmpname, self.mode)
-        path = os.path.join(TEMPDIR, "file")
-        fobj = open(path, "wb")
-        fobj.write("aaa")
-        fobj.close()
-        tar.add(path)
-        tar.close()
-        self.assertTrue(os.path.getsize(tmpname) > 0,
-                "tarfile is empty")
-
-    # The test_*_size tests test for bug #1167128.
-    def test_file_size(self):
-        tar = tarfile.open(tmpname, self.mode)
-
-        path = os.path.join(TEMPDIR, "file")
-        fobj = open(path, "wb")
-        fobj.close()
-        tarinfo = tar.gettarinfo(path)
-        self.assertEqual(tarinfo.size, 0)
-
-        fobj = open(path, "wb")
-        fobj.write("aaa")
-        fobj.close()
-        tarinfo = tar.gettarinfo(path)
-        self.assertEqual(tarinfo.size, 3)
-
-        tar.close()
-
-    def test_directory_size(self):
-        path = os.path.join(TEMPDIR, "directory")
-        os.mkdir(path)
-        try:
-            tar = tarfile.open(tmpname, self.mode)
-            tarinfo = tar.gettarinfo(path)
-            self.assertEqual(tarinfo.size, 0)
-        finally:
-            os.rmdir(path)
-
-    def test_link_size(self):
-        if hasattr(os, "link"):
-            link = os.path.join(TEMPDIR, "link")
-            target = os.path.join(TEMPDIR, "link_target")
-            fobj = open(target, "wb")
-            fobj.write("aaa")
-            fobj.close()
-            os.link(target, link)
-            try:
-                tar = tarfile.open(tmpname, self.mode)
-                # Record the link target in the inodes list.
-                tar.gettarinfo(target)
-                tarinfo = tar.gettarinfo(link)
-                self.assertEqual(tarinfo.size, 0)
-            finally:
-                os.remove(target)
-                os.remove(link)
-
-    def test_symlink_size(self):
-        if hasattr(os, "symlink"):
-            path = os.path.join(TEMPDIR, "symlink")
-            os.symlink("link_target", path)
-            try:
-                tar = tarfile.open(tmpname, self.mode)
-                tarinfo = tar.gettarinfo(path)
-                self.assertEqual(tarinfo.size, 0)
-            finally:
-                os.remove(path)
-
-    def test_add_self(self):
-        # Test for #1257255.
-        dstname = os.path.abspath(tmpname)
-
-        tar = tarfile.open(tmpname, self.mode)
-        self.assertTrue(tar.name == dstname, "archive name must be absolute")
-
-        tar.add(dstname)
-        self.assertTrue(tar.getnames() == [], "added the archive to itself")
-
-        cwd = os.getcwd()
-        os.chdir(TEMPDIR)
-        tar.add(dstname)
-        os.chdir(cwd)
-        self.assertTrue(tar.getnames() == [], "added the archive to itself")
-
-    def test_exclude(self):
-        tempdir = os.path.join(TEMPDIR, "exclude")
-        os.mkdir(tempdir)
-        try:
-            for name in ("foo", "bar", "baz"):
-                name = os.path.join(tempdir, name)
-                open(name, "wb").close()
-
-            exclude = os.path.isfile
-
-            tar = tarfile.open(tmpname, self.mode, encoding="iso8859-1")
-            with test_support.check_warnings(("use the filter argument",
-                                              DeprecationWarning)):
-                tar.add(tempdir, arcname="empty_dir", exclude=exclude)
-            tar.close()
-
-            tar = tarfile.open(tmpname, "r")
-            self.assertEqual(len(tar.getmembers()), 1)
-            self.assertEqual(tar.getnames()[0], "empty_dir")
-        finally:
-            shutil.rmtree(tempdir)
-
-    def test_filter(self):
-        tempdir = os.path.join(TEMPDIR, "filter")
-        os.mkdir(tempdir)
-        try:
-            for name in ("foo", "bar", "baz"):
-                name = os.path.join(tempdir, name)
-                open(name, "wb").close()
-
-            def filter(tarinfo):
-                if os.path.basename(tarinfo.name) == "bar":
-                    return
-                tarinfo.uid = 123
-                tarinfo.uname = "foo"
-                return tarinfo
-
-            tar = tarfile.open(tmpname, self.mode, encoding="iso8859-1")
-            tar.add(tempdir, arcname="empty_dir", filter=filter)
-            tar.close()
-
-            tar = tarfile.open(tmpname, "r")
-            for tarinfo in tar:
-                self.assertEqual(tarinfo.uid, 123)
-                self.assertEqual(tarinfo.uname, "foo")
-            self.assertEqual(len(tar.getmembers()), 3)
-            tar.close()
-        finally:
-            shutil.rmtree(tempdir)
-
-    # Guarantee that stored pathnames are not modified. Don't
-    # remove ./ or ../ or double slashes. Still make absolute
-    # pathnames relative.
-    # For details see bug #6054.
-    def _test_pathname(self, path, cmp_path=None, dir=False):
-        # Create a tarfile with an empty member named path
-        # and compare the stored name with the original.
-        foo = os.path.join(TEMPDIR, "foo")
-        if not dir:
-            open(foo, "w").close()
-        else:
-            os.mkdir(foo)
-
-        tar = tarfile.open(tmpname, self.mode)
-        tar.add(foo, arcname=path)
-        tar.close()
-
-        tar = tarfile.open(tmpname, "r")
-        t = tar.next()
-        tar.close()
-
-        if not dir:
-            os.remove(foo)
-        else:
-            os.rmdir(foo)
-
-        self.assertEqual(t.name, cmp_path or path.replace(os.sep, "/"))
-
-    def test_pathnames(self):
-        self._test_pathname("foo")
-        self._test_pathname(os.path.join("foo", ".", "bar"))
-        self._test_pathname(os.path.join("foo", "..", "bar"))
-        self._test_pathname(os.path.join(".", "foo"))
-        self._test_pathname(os.path.join(".", "foo", "."))
-        self._test_pathname(os.path.join(".", "foo", ".", "bar"))
-        self._test_pathname(os.path.join(".", "foo", "..", "bar"))
-        self._test_pathname(os.path.join(".", "foo", "..", "bar"))
-        self._test_pathname(os.path.join("..", "foo"))
-        self._test_pathname(os.path.join("..", "foo", ".."))
-        self._test_pathname(os.path.join("..", "foo", ".", "bar"))
-        self._test_pathname(os.path.join("..", "foo", "..", "bar"))
-
-        self._test_pathname("foo" + os.sep + os.sep + "bar")
-        self._test_pathname("foo" + os.sep + os.sep, "foo", dir=True)
-
-    def test_abs_pathnames(self):
-        if sys.platform == "win32":
-            self._test_pathname("C:\\foo", "foo")
-        else:
-            self._test_pathname("/foo", "foo")
-            self._test_pathname("///foo", "foo")
-
-    def test_cwd(self):
-        # Test adding the current working directory.
-        cwd = os.getcwd()
-        os.chdir(TEMPDIR)
-        try:
-            open("foo", "w").close()
-
-            tar = tarfile.open(tmpname, self.mode)
-            tar.add(".")
-            tar.close()
-
-            tar = tarfile.open(tmpname, "r")
-            for t in tar:
-                self.assert_(t.name == "." or t.name.startswith("./"))
-            tar.close()
-        finally:
-            os.chdir(cwd)
-
-    @unittest.skipUnless(hasattr(os, 'symlink'), "needs os.symlink")
-    def test_extractall_symlinks(self):
-        # Test if extractall works properly when tarfile contains symlinks
-        tempdir = os.path.join(TEMPDIR, "testsymlinks")
-        temparchive = os.path.join(TEMPDIR, "testsymlinks.tar")
-        os.mkdir(tempdir)
-        try:
-            source_file = os.path.join(tempdir,'source')
-            target_file = os.path.join(tempdir,'symlink')
-            with open(source_file,'w') as f:
-                f.write('something\n')
-            os.symlink(source_file, target_file)
-            tar = tarfile.open(temparchive,'w')
-            tar.add(source_file, arcname=os.path.basename(source_file))
-            tar.add(target_file, arcname=os.path.basename(target_file))
-            tar.close()
-            # Let's extract it to the location which contains the symlink
-            tar = tarfile.open(temparchive,'r')
-            # this should not raise OSError: [Errno 17] File exists
-            try:
-                tar.extractall(path=tempdir)
-            except OSError:
-                self.fail("extractall failed with symlinked files")
-            finally:
-                tar.close()
-        finally:
-            os.unlink(temparchive)
-            shutil.rmtree(tempdir)
-
-    @unittest.skipUnless(hasattr(os, 'symlink'), "needs os.symlink")
-    def test_extractall_broken_symlinks(self):
-        # Test if extractall works properly when tarfile contains broken
-        # symlinks
-        tempdir = os.path.join(TEMPDIR, "testsymlinks")
-        temparchive = os.path.join(TEMPDIR, "testsymlinks.tar")
-        os.mkdir(tempdir)
-        try:
-            source_file = os.path.join(tempdir,'source')
-            target_file = os.path.join(tempdir,'symlink')
-            with open(source_file,'w') as f:
-                f.write('something\n')
-            os.symlink(source_file, target_file)
-            tar = tarfile.open(temparchive,'w')
-            tar.add(target_file, arcname=os.path.basename(target_file))
-            tar.close()
-            # remove the real file
-            os.unlink(source_file)
-            # Let's extract it to the location which contains the symlink
-            tar = tarfile.open(temparchive,'r')
-            # this should not raise OSError: [Errno 17] File exists
-            try:
-                tar.extractall(path=tempdir)
-            except OSError:
-                self.fail("extractall failed with broken symlinked files")
-            finally:
-                tar.close()
-        finally:
-            os.unlink(temparchive)
-            shutil.rmtree(tempdir)
-
-    @unittest.skipUnless(hasattr(os, 'link'), "needs os.link")
-    def test_extractall_hardlinks(self):
-        # Test if extractall works properly when tarfile contains symlinks
-        tempdir = os.path.join(TEMPDIR, "testsymlinks")
-        temparchive = os.path.join(TEMPDIR, "testsymlinks.tar")
-        os.mkdir(tempdir)
-        try:
-            source_file = os.path.join(tempdir,'source')
-            target_file = os.path.join(tempdir,'symlink')
-            with open(source_file,'w') as f:
-                f.write('something\n')
-            os.link(source_file, target_file)
-            tar = tarfile.open(temparchive,'w')
-            tar.add(source_file, arcname=os.path.basename(source_file))
-            tar.add(target_file, arcname=os.path.basename(target_file))
-            tar.close()
-            # Let's extract it to the location which contains the symlink
-            tar = tarfile.open(temparchive,'r')
-            # this should not raise OSError: [Errno 17] File exists
-            try:
-                tar.extractall(path=tempdir)
-            except OSError:
-                self.fail("extractall failed with linked files")
-            finally:
-                tar.close()
-        finally:
-            os.unlink(temparchive)
-            shutil.rmtree(tempdir)
-
-class StreamWriteTest(WriteTestBase):
-
-    mode = "w|"
-
-    def test_stream_padding(self):
-        # Test for bug #1543303.
-        tar = tarfile.open(tmpname, self.mode)
-        tar.close()
-
-        if self.mode.endswith("gz"):
-            fobj = gzip.GzipFile(tmpname)
-            data = fobj.read()
-            fobj.close()
-        elif self.mode.endswith("bz2"):
-            dec = bz2.BZ2Decompressor()
-            data = open(tmpname, "rb").read()
-            data = dec.decompress(data)
-            self.assertTrue(len(dec.unused_data) == 0,
-                    "found trailing data")
-        else:
-            fobj = open(tmpname, "rb")
-            data = fobj.read()
-            fobj.close()
-
-        self.assertTrue(data.count("\0") == tarfile.RECORDSIZE,
-                         "incorrect zero padding")
-
-    def test_file_mode(self):
-        # Test for issue #8464: Create files with correct
-        # permissions.
-        if sys.platform == "win32" or not hasattr(os, "umask"):
-            return
-
-        if os.path.exists(tmpname):
-            os.remove(tmpname)
-
-        original_umask = os.umask(0022)
-        try:
-            tar = tarfile.open(tmpname, self.mode)
-            tar.close()
-            mode = os.stat(tmpname).st_mode & 0777
-            self.assertEqual(mode, 0644, "wrong file permissions")
-        finally:
-            os.umask(original_umask)
-
-
-class GNUWriteTest(unittest.TestCase):
-    # This testcase checks for correct creation of GNU Longname
-    # and Longlink extended headers (cp. bug #812325).
-
-    def _length(self, s):
-        blocks, remainder = divmod(len(s) + 1, 512)
-        if remainder:
-            blocks += 1
-        return blocks * 512
-
-    def _calc_size(self, name, link=None):
-        # Initial tar header
-        count = 512
-
-        if len(name) > tarfile.LENGTH_NAME:
-            # GNU longname extended header + longname
-            count += 512
-            count += self._length(name)
-        if link is not None and len(link) > tarfile.LENGTH_LINK:
-            # GNU longlink extended header + longlink
-            count += 512
-            count += self._length(link)
-        return count
-
-    def _test(self, name, link=None):
-        tarinfo = tarfile.TarInfo(name)
-        if link:
-            tarinfo.linkname = link
-            tarinfo.type = tarfile.LNKTYPE
-
-        tar = tarfile.open(tmpname, "w")
-        tar.format = tarfile.GNU_FORMAT
-        tar.addfile(tarinfo)
-
-        v1 = self._calc_size(name, link)
-        v2 = tar.offset
-        self.assertTrue(v1 == v2, "GNU longname/longlink creation failed")
-
-        tar.close()
-
-        tar = tarfile.open(tmpname)
-        member = tar.next()
-        self.assertIsNotNone(member,
-                "unable to read longname member")
-        self.assertEqual(tarinfo.name, member.name,
-                "unable to read longname member")
-        self.assertEqual(tarinfo.linkname, member.linkname,
-                "unable to read longname member")
-
-    def test_longname_1023(self):
-        self._test(("longnam/" * 127) + "longnam")
-
-    def test_longname_1024(self):
-        self._test(("longnam/" * 127) + "longname")
-
-    def test_longname_1025(self):
-        self._test(("longnam/" * 127) + "longname_")
-
-    def test_longlink_1023(self):
-        self._test("name", ("longlnk/" * 127) + "longlnk")
-
-    def test_longlink_1024(self):
-        self._test("name", ("longlnk/" * 127) + "longlink")
-
-    def test_longlink_1025(self):
-        self._test("name", ("longlnk/" * 127) + "longlink_")
-
-    def test_longnamelink_1023(self):
-        self._test(("longnam/" * 127) + "longnam",
-                   ("longlnk/" * 127) + "longlnk")
-
-    def test_longnamelink_1024(self):
-        self._test(("longnam/" * 127) + "longname",
-                   ("longlnk/" * 127) + "longlink")
-
-    def test_longnamelink_1025(self):
-        self._test(("longnam/" * 127) + "longname_",
-                   ("longlnk/" * 127) + "longlink_")
-
-
-class HardlinkTest(unittest.TestCase):
-    # Test the creation of LNKTYPE (hardlink) members in an archive.
-
-    def setUp(self):
-        self.foo = os.path.join(TEMPDIR, "foo")
-        self.bar = os.path.join(TEMPDIR, "bar")
-
-        fobj = open(self.foo, "wb")
-        fobj.write("foo")
-        fobj.close()
-
-        os.link(self.foo, self.bar)
-
-        self.tar = tarfile.open(tmpname, "w")
-        self.tar.add(self.foo)
-
-    def tearDown(self):
-        self.tar.close()
-        os.remove(self.foo)
-        os.remove(self.bar)
-
-    def test_add_twice(self):
-        # The same name will be added as a REGTYPE every
-        # time regardless of st_nlink.
-        tarinfo = self.tar.gettarinfo(self.foo)
-        self.assertTrue(tarinfo.type == tarfile.REGTYPE,
-                "add file as regular failed")
-
-    def test_add_hardlink(self):
-        tarinfo = self.tar.gettarinfo(self.bar)
-        self.assertTrue(tarinfo.type == tarfile.LNKTYPE,
-                "add file as hardlink failed")
-
-    def test_dereference_hardlink(self):
-        self.tar.dereference = True
-        tarinfo = self.tar.gettarinfo(self.bar)
-        self.assertTrue(tarinfo.type == tarfile.REGTYPE,
-                "dereferencing hardlink failed")
-
-
-class PaxWriteTest(GNUWriteTest):
-
-    def _test(self, name, link=None):
-        # See GNUWriteTest.
-        tarinfo = tarfile.TarInfo(name)
-        if link:
-            tarinfo.linkname = link
-            tarinfo.type = tarfile.LNKTYPE
-
-        tar = tarfile.open(tmpname, "w", format=tarfile.PAX_FORMAT)
-        tar.addfile(tarinfo)
-        tar.close()
-
-        tar = tarfile.open(tmpname)
-        if link:
-            l = tar.getmembers()[0].linkname
-            self.assertTrue(link == l, "PAX longlink creation failed")
-        else:
-            n = tar.getmembers()[0].name
-            self.assertTrue(name == n, "PAX longname creation failed")
-
-    def test_pax_global_header(self):
-        pax_headers = {
-                u"foo": u"bar",
-                u"uid": u"0",
-                u"mtime": u"1.23",
-                u"test": u"äöü",
-                u"äöü": u"test"}
-
-        tar = tarfile.open(tmpname, "w", format=tarfile.PAX_FORMAT,
-                pax_headers=pax_headers)
-        tar.addfile(tarfile.TarInfo("test"))
-        tar.close()
-
-        # Test if the global header was written correctly.
-        tar = tarfile.open(tmpname, encoding="iso8859-1")
-        self.assertEqual(tar.pax_headers, pax_headers)
-        self.assertEqual(tar.getmembers()[0].pax_headers, pax_headers)
-
-        # Test if all the fields are unicode.
-        for key, val in tar.pax_headers.iteritems():
-            self.assertTrue(type(key) is unicode)
-            self.assertTrue(type(val) is unicode)
-            if key in tarfile.PAX_NUMBER_FIELDS:
-                try:
-                    tarfile.PAX_NUMBER_FIELDS[key](val)
-                except (TypeError, ValueError):
-                    self.fail("unable to convert pax header field")
-
-    def test_pax_extended_header(self):
-        # The fields from the pax header have priority over the
-        # TarInfo.
-        pax_headers = {u"path": u"foo", u"uid": u"123"}
-
-        tar = tarfile.open(tmpname, "w", format=tarfile.PAX_FORMAT, encoding="iso8859-1")
-        t = tarfile.TarInfo()
-        t.name = u"äöü"     # non-ASCII
-        t.uid = 8**8        # too large
-        t.pax_headers = pax_headers
-        tar.addfile(t)
-        tar.close()
-
-        tar = tarfile.open(tmpname, encoding="iso8859-1")
-        t = tar.getmembers()[0]
-        self.assertEqual(t.pax_headers, pax_headers)
-        self.assertEqual(t.name, "foo")
-        self.assertEqual(t.uid, 123)
-
-
-class UstarUnicodeTest(unittest.TestCase):
-    # All *UnicodeTests FIXME
-
-    format = tarfile.USTAR_FORMAT
-
-    def test_iso8859_1_filename(self):
-        self._test_unicode_filename("iso8859-1")
-
-    def test_utf7_filename(self):
-        self._test_unicode_filename("utf7")
-
-    def test_utf8_filename(self):
-        self._test_unicode_filename("utf8")
-
-    def _test_unicode_filename(self, encoding):
-        tar = tarfile.open(tmpname, "w", format=self.format, encoding=encoding, errors="strict")
-        name = u"äöü"
-        tar.addfile(tarfile.TarInfo(name))
-        tar.close()
-
-        tar = tarfile.open(tmpname, encoding=encoding)
-        self.assertTrue(type(tar.getnames()[0]) is not unicode)
-        self.assertEqual(tar.getmembers()[0].name, name.encode(encoding))
-        tar.close()
-
-    def test_unicode_filename_error(self):
-        tar = tarfile.open(tmpname, "w", format=self.format, encoding="ascii", errors="strict")
-        tarinfo = tarfile.TarInfo()
-
-        tarinfo.name = "äöü"
-        if self.format == tarfile.PAX_FORMAT:
-            self.assertRaises(UnicodeError, tar.addfile, tarinfo)
-        else:
-            tar.addfile(tarinfo)
-
-        tarinfo.name = u"äöü"
-        self.assertRaises(UnicodeError, tar.addfile, tarinfo)
-
-        tarinfo.name = "foo"
-        tarinfo.uname = u"äöü"
-        self.assertRaises(UnicodeError, tar.addfile, tarinfo)
-
-    def test_unicode_argument(self):
-        tar = tarfile.open(tarname, "r", encoding="iso8859-1", errors="strict")
-        for t in tar:
-            self.assertTrue(type(t.name) is str)
-            self.assertTrue(type(t.linkname) is str)
-            self.assertTrue(type(t.uname) is str)
-            self.assertTrue(type(t.gname) is str)
-        tar.close()
-
-    def test_uname_unicode(self):
-        for name in (u"äöü", "äöü"):
-            t = tarfile.TarInfo("foo")
-            t.uname = name
-            t.gname = name
-
-            fobj = StringIO.StringIO()
-            tar = tarfile.open("foo.tar", mode="w", fileobj=fobj, format=self.format, encoding="iso8859-1")
-            tar.addfile(t)
-            tar.close()
-            fobj.seek(0)
-
-            tar = tarfile.open("foo.tar", fileobj=fobj, encoding="iso8859-1")
-            t = tar.getmember("foo")
-            self.assertEqual(t.uname, "äöü")
-            self.assertEqual(t.gname, "äöü")
-
-
-class GNUUnicodeTest(UstarUnicodeTest):
-
-    format = tarfile.GNU_FORMAT
-
-
-class PaxUnicodeTest(UstarUnicodeTest):
-
-    format = tarfile.PAX_FORMAT
-
-    def _create_unicode_name(self, name):
-        tar = tarfile.open(tmpname, "w", format=self.format)
-        t = tarfile.TarInfo()
-        t.pax_headers["path"] = name
-        tar.addfile(t)
-        tar.close()
-
-    def test_error_handlers(self):
-        # Test if the unicode error handlers work correctly for characters
-        # that cannot be expressed in a given encoding.
-        self._create_unicode_name(u"äöü")
-
-        for handler, name in (("utf-8", u"äöü".encode("utf8")),
-                    ("replace", "???"), ("ignore", "")):
-            tar = tarfile.open(tmpname, format=self.format, encoding="ascii",
-                    errors=handler)
-            self.assertEqual(tar.getnames()[0], name)
-
-        self.assertRaises(UnicodeError, tarfile.open, tmpname,
-                encoding="ascii", errors="strict")
-
-    def test_error_handler_utf8(self):
-        # Create a pathname that has one component representable using
-        # iso8859-1 and the other only in iso8859-15.
-        self._create_unicode_name(u"äöü/¤")
-
-        tar = tarfile.open(tmpname, format=self.format, encoding="iso8859-1",
-                errors="utf-8")
-        self.assertEqual(tar.getnames()[0], "äöü/" + u"¤".encode("utf8"))
-
-
-class AppendTest(unittest.TestCase):
-    # Test append mode (cp. patch #1652681).
-
-    def setUp(self):
-        self.tarname = tmpname
-        if os.path.exists(self.tarname):
-            os.remove(self.tarname)
-
-    def _add_testfile(self, fileobj=None):
-        tar = tarfile.open(self.tarname, "a", fileobj=fileobj)
-        tar.addfile(tarfile.TarInfo("bar"))
-        tar.close()
-
-    def _create_testtar(self, mode="w:"):
-        src = tarfile.open(tarname, encoding="iso8859-1")
-        t = src.getmember("ustar/regtype")
-        t.name = "foo"
-        f = src.extractfile(t)
-        tar = tarfile.open(self.tarname, mode)
-        tar.addfile(t, f)
-        tar.close()
-
-    def _test(self, names=["bar"], fileobj=None):
-        tar = tarfile.open(self.tarname, fileobj=fileobj)
-        self.assertEqual(tar.getnames(), names)
-
-    def test_non_existing(self):
-        self._add_testfile()
-        self._test()
-
-    def test_empty(self):
-        tarfile.open(self.tarname, "w:").close()
-        self._add_testfile()
-        self._test()
-
-    def test_empty_fileobj(self):
-        fobj = StringIO.StringIO("\0" * 1024)
-        self._add_testfile(fobj)
-        fobj.seek(0)
-        self._test(fileobj=fobj)
-
-    def test_fileobj(self):
-        self._create_testtar()
-        data = open(self.tarname).read()
-        fobj = StringIO.StringIO(data)
-        self._add_testfile(fobj)
-        fobj.seek(0)
-        self._test(names=["foo", "bar"], fileobj=fobj)
-
-    def test_existing(self):
-        self._create_testtar()
-        self._add_testfile()
-        self._test(names=["foo", "bar"])
-
-    def test_append_gz(self):
-        if gzip is None:
-            return
-        self._create_testtar("w:gz")
-        self.assertRaises(tarfile.ReadError, tarfile.open, tmpname, "a")
-
-    def test_append_bz2(self):
-        if bz2 is None:
-            return
-        self._create_testtar("w:bz2")
-        self.assertRaises(tarfile.ReadError, tarfile.open, tmpname, "a")
-
-    # Append mode is supposed to fail if the tarfile to append to
-    # does not end with a zero block.
-    def _test_error(self, data):
-        open(self.tarname, "wb").write(data)
-        self.assertRaises(tarfile.ReadError, self._add_testfile)
-
-    def test_null(self):
-        self._test_error("")
-
-    def test_incomplete(self):
-        self._test_error("\0" * 13)
-
-    def test_premature_eof(self):
-        data = tarfile.TarInfo("foo").tobuf()
-        self._test_error(data)
-
-    def test_trailing_garbage(self):
-        data = tarfile.TarInfo("foo").tobuf()
-        self._test_error(data + "\0" * 13)
-
-    def test_invalid(self):
-        self._test_error("a" * 512)
-
-
-class LimitsTest(unittest.TestCase):
-
-    def test_ustar_limits(self):
-        # 100 char name
-        tarinfo = tarfile.TarInfo("0123456789" * 10)
-        tarinfo.tobuf(tarfile.USTAR_FORMAT)
-
-        # 101 char name that cannot be stored
-        tarinfo = tarfile.TarInfo("0123456789" * 10 + "0")
-        self.assertRaises(ValueError, tarinfo.tobuf, tarfile.USTAR_FORMAT)
-
-        # 256 char name with a slash at pos 156
-        tarinfo = tarfile.TarInfo("123/" * 62 + "longname")
-        tarinfo.tobuf(tarfile.USTAR_FORMAT)
-
-        # 256 char name that cannot be stored
-        tarinfo = tarfile.TarInfo("1234567/" * 31 + "longname")
-        self.assertRaises(ValueError, tarinfo.tobuf, tarfile.USTAR_FORMAT)
-
-        # 512 char name
-        tarinfo = tarfile.TarInfo("123/" * 126 + "longname")
-        self.assertRaises(ValueError, tarinfo.tobuf, tarfile.USTAR_FORMAT)
-
-        # 512 char linkname
-        tarinfo = tarfile.TarInfo("longlink")
-        tarinfo.linkname = "123/" * 126 + "longname"
-        self.assertRaises(ValueError, tarinfo.tobuf, tarfile.USTAR_FORMAT)
-
-        # uid > 8 digits
-        tarinfo = tarfile.TarInfo("name")
-        tarinfo.uid = 010000000
-        self.assertRaises(ValueError, tarinfo.tobuf, tarfile.USTAR_FORMAT)
-
-    def test_gnu_limits(self):
-        tarinfo = tarfile.TarInfo("123/" * 126 + "longname")
-        tarinfo.tobuf(tarfile.GNU_FORMAT)
-
-        tarinfo = tarfile.TarInfo("longlink")
-        tarinfo.linkname = "123/" * 126 + "longname"
-        tarinfo.tobuf(tarfile.GNU_FORMAT)
-
-        # uid >= 256 ** 7
-        tarinfo = tarfile.TarInfo("name")
-        tarinfo.uid = 04000000000000000000L
-        self.assertRaises(ValueError, tarinfo.tobuf, tarfile.GNU_FORMAT)
-
-    def test_pax_limits(self):
-        tarinfo = tarfile.TarInfo("123/" * 126 + "longname")
-        tarinfo.tobuf(tarfile.PAX_FORMAT)
-
-        tarinfo = tarfile.TarInfo("longlink")
-        tarinfo.linkname = "123/" * 126 + "longname"
-        tarinfo.tobuf(tarfile.PAX_FORMAT)
-
-        tarinfo = tarfile.TarInfo("name")
-        tarinfo.uid = 04000000000000000000L
-        tarinfo.tobuf(tarfile.PAX_FORMAT)
-
-
-class ContextManagerTest(unittest.TestCase):
-
-    def test_basic(self):
-        with tarfile.open(tarname) as tar:
-            self.assertFalse(tar.closed, "closed inside runtime context")
-        self.assertTrue(tar.closed, "context manager failed")
-
-    def test_closed(self):
-        # The __enter__() method is supposed to raise IOError
-        # if the TarFile object is already closed.
-        tar = tarfile.open(tarname)
-        tar.close()
-        with self.assertRaises(IOError):
-            with tar:
-                pass
-
-    def test_exception(self):
-        # Test if the IOError exception is passed through properly.
-        with self.assertRaises(Exception) as exc:
-            with tarfile.open(tarname) as tar:
-                raise IOError
-        self.assertIsInstance(exc.exception, IOError,
-                              "wrong exception raised in context manager")
-        self.assertTrue(tar.closed, "context manager failed")
-
-    def test_no_eof(self):
-        # __exit__() must not write end-of-archive blocks if an
-        # exception was raised.
-        try:
-            with tarfile.open(tmpname, "w") as tar:
-                raise Exception
-        except:
-            pass
-        self.assertEqual(os.path.getsize(tmpname), 0,
-                "context manager wrote an end-of-archive block")
-        self.assertTrue(tar.closed, "context manager failed")
-
-    def test_eof(self):
-        # __exit__() must write end-of-archive blocks, i.e. call
-        # TarFile.close() if there was no error.
-        with tarfile.open(tmpname, "w"):
-            pass
-        self.assertNotEqual(os.path.getsize(tmpname), 0,
-                "context manager wrote no end-of-archive block")
-
-    def test_fileobj(self):
-        # Test that __exit__() did not close the external file
-        # object.
-        fobj = open(tmpname, "wb")
-        try:
-            with tarfile.open(fileobj=fobj, mode="w") as tar:
-                raise Exception
-        except:
-            pass
-        self.assertFalse(fobj.closed, "external file object was closed")
-        self.assertTrue(tar.closed, "context manager failed")
-        fobj.close()
-
-
-class LinkEmulationTest(ReadTest):
-
-    # Test for issue #8741 regression. On platforms that do not support
-    # symbolic or hard links tarfile tries to extract these types of members as
-    # the regular files they point to.
-    def _test_link_extraction(self, name):
-        self.tar.extract(name, TEMPDIR)
-        data = open(os.path.join(TEMPDIR, name), "rb").read()
-        self.assertEqual(md5sum(data), md5_regtype)
-
-    def test_hardlink_extraction1(self):
-        self._test_link_extraction("ustar/lnktype")
-
-    def test_hardlink_extraction2(self):
-        self._test_link_extraction("./ustar/linktest2/lnktype")
-
-    def test_symlink_extraction1(self):
-        self._test_link_extraction("ustar/symtype")
-
-    def test_symlink_extraction2(self):
-        self._test_link_extraction("./ustar/linktest2/symtype")
-
-
-class GzipMiscReadTest(MiscReadTest):
-    tarname = gzipname
-    mode = "r:gz"
-class GzipUstarReadTest(UstarReadTest):
-    tarname = gzipname
-    mode = "r:gz"
-class GzipStreamReadTest(StreamReadTest):
-    tarname = gzipname
-    mode = "r|gz"
-class GzipWriteTest(WriteTest):
-    mode = "w:gz"
-class GzipStreamWriteTest(StreamWriteTest):
-    mode = "w|gz"
-
-
-class Bz2MiscReadTest(MiscReadTest):
-    tarname = bz2name
-    mode = "r:bz2"
-class Bz2UstarReadTest(UstarReadTest):
-    tarname = bz2name
-    mode = "r:bz2"
-class Bz2StreamReadTest(StreamReadTest):
-    tarname = bz2name
-    mode = "r|bz2"
-class Bz2WriteTest(WriteTest):
-    mode = "w:bz2"
-class Bz2StreamWriteTest(StreamWriteTest):
-    mode = "w|bz2"
-
-class Bz2PartialReadTest(unittest.TestCase):
-    # Issue5068: The _BZ2Proxy.read() method loops forever
-    # on an empty or partial bzipped file.
-
-    def _test_partial_input(self, mode):
-        class MyStringIO(StringIO.StringIO):
-            hit_eof = False
-            def read(self, n):
-                if self.hit_eof:
-                    raise AssertionError("infinite loop detected in tarfile.open()")
-                self.hit_eof = self.pos == self.len
-                return StringIO.StringIO.read(self, n)
-            def seek(self, *args):
-                self.hit_eof = False
-                return StringIO.StringIO.seek(self, *args)
-
-        data = bz2.compress(tarfile.TarInfo("foo").tobuf())
-        for x in range(len(data) + 1):
-            try:
-                tarfile.open(fileobj=MyStringIO(data[:x]), mode=mode)
-            except tarfile.ReadError:
-                pass # we have no interest in ReadErrors
-
-    def test_partial_input(self):
-        self._test_partial_input("r")
-
-    def test_partial_input_bz2(self):
-        self._test_partial_input("r:bz2")
-
-
-def test_main():
-    os.makedirs(TEMPDIR)
-
-    tests = [
-        UstarReadTest,
-        MiscReadTest,
-        StreamReadTest,
-        DetectReadTest,
-        MemberReadTest,
-        GNUReadTest,
-        PaxReadTest,
-        WriteTest,
-        StreamWriteTest,
-        GNUWriteTest,
-        PaxWriteTest,
-        UstarUnicodeTest,
-        GNUUnicodeTest,
-        PaxUnicodeTest,
-        AppendTest,
-        LimitsTest,
-        ContextManagerTest,
-    ]
-
-    if hasattr(os, "link"):
-        tests.append(HardlinkTest)
-    else:
-        tests.append(LinkEmulationTest)
-
-    fobj = open(tarname, "rb")
-    data = fobj.read()
-    fobj.close()
-
-    if gzip:
-        # Create testtar.tar.gz and add gzip-specific tests.
-        tar = gzip.open(gzipname, "wb")
-        tar.write(data)
-        tar.close()
-
-        tests += [
-            GzipMiscReadTest,
-            GzipUstarReadTest,
-            GzipStreamReadTest,
-            GzipWriteTest,
-            GzipStreamWriteTest,
-        ]
-
-    if bz2:
-        # Create testtar.tar.bz2 and add bz2-specific tests.
-        tar = bz2.BZ2File(bz2name, "wb")
-        tar.write(data)
-        tar.close()
-
-        tests += [
-            Bz2MiscReadTest,
-            Bz2UstarReadTest,
-            Bz2StreamReadTest,
-            Bz2WriteTest,
-            Bz2StreamWriteTest,
-            Bz2PartialReadTest,
-        ]
-
-    try:
-        test_support.run_unittest(*tests)
-    finally:
-        if os.path.exists(TEMPDIR):
-            shutil.rmtree(TEMPDIR)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tcl.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tcl.py
deleted file mode 100644
index 233f8b4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tcl.py
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/usr/bin/env python
-
-import unittest
-import os
-from test import test_support
-
-# Skip this test if the _tkinter module wasn't built.
-_tkinter = test_support.import_module('_tkinter')
-
-from Tkinter import Tcl
-from _tkinter import TclError
-
-
-class TkinterTest(unittest.TestCase):
-
-    def testFlattenLen(self):
-        # flatten(<object with no length>)
-        self.assertRaises(TypeError, _tkinter._flatten, True)
-
-
-class TclTest(unittest.TestCase):
-
-    def setUp(self):
-        self.interp = Tcl()
-
-    def testEval(self):
-        tcl = self.interp
-        tcl.eval('set a 1')
-        self.assertEqual(tcl.eval('set a'),'1')
-
-    def testEvalException(self):
-        tcl = self.interp
-        self.assertRaises(TclError,tcl.eval,'set a')
-
-    def testEvalException2(self):
-        tcl = self.interp
-        self.assertRaises(TclError,tcl.eval,'this is wrong')
-
-    def testCall(self):
-        tcl = self.interp
-        tcl.call('set','a','1')
-        self.assertEqual(tcl.call('set','a'),'1')
-
-    def testCallException(self):
-        tcl = self.interp
-        self.assertRaises(TclError,tcl.call,'set','a')
-
-    def testCallException2(self):
-        tcl = self.interp
-        self.assertRaises(TclError,tcl.call,'this','is','wrong')
-
-    def testSetVar(self):
-        tcl = self.interp
-        tcl.setvar('a','1')
-        self.assertEqual(tcl.eval('set a'),'1')
-
-    def testSetVarArray(self):
-        tcl = self.interp
-        tcl.setvar('a(1)','1')
-        self.assertEqual(tcl.eval('set a(1)'),'1')
-
-    def testGetVar(self):
-        tcl = self.interp
-        tcl.eval('set a 1')
-        self.assertEqual(tcl.getvar('a'),'1')
-
-    def testGetVarArray(self):
-        tcl = self.interp
-        tcl.eval('set a(1) 1')
-        self.assertEqual(tcl.getvar('a(1)'),'1')
-
-    def testGetVarException(self):
-        tcl = self.interp
-        self.assertRaises(TclError,tcl.getvar,'a')
-
-    def testGetVarArrayException(self):
-        tcl = self.interp
-        self.assertRaises(TclError,tcl.getvar,'a(1)')
-
-    def testUnsetVar(self):
-        tcl = self.interp
-        tcl.setvar('a',1)
-        self.assertEqual(tcl.eval('info exists a'),'1')
-        tcl.unsetvar('a')
-        self.assertEqual(tcl.eval('info exists a'),'0')
-
-    def testUnsetVarArray(self):
-        tcl = self.interp
-        tcl.setvar('a(1)',1)
-        tcl.setvar('a(2)',2)
-        self.assertEqual(tcl.eval('info exists a(1)'),'1')
-        self.assertEqual(tcl.eval('info exists a(2)'),'1')
-        tcl.unsetvar('a(1)')
-        self.assertEqual(tcl.eval('info exists a(1)'),'0')
-        self.assertEqual(tcl.eval('info exists a(2)'),'1')
-
-    def testUnsetVarException(self):
-        tcl = self.interp
-        self.assertRaises(TclError,tcl.unsetvar,'a')
-
-    def testEvalFile(self):
-        tcl = self.interp
-        filename = "testEvalFile.tcl"
-        fd = open(filename,'w')
-        script = """set a 1
-        set b 2
-        set c [ expr $a + $b ]
-        """
-        fd.write(script)
-        fd.close()
-        tcl.evalfile(filename)
-        os.remove(filename)
-        self.assertEqual(tcl.eval('set a'),'1')
-        self.assertEqual(tcl.eval('set b'),'2')
-        self.assertEqual(tcl.eval('set c'),'3')
-
-    def testEvalFileException(self):
-        tcl = self.interp
-        filename = "doesnotexists"
-        try:
-            os.remove(filename)
-        except Exception,e:
-            pass
-        self.assertRaises(TclError,tcl.evalfile,filename)
-
-    def testPackageRequireException(self):
-        tcl = self.interp
-        self.assertRaises(TclError,tcl.eval,'package require DNE')
-
-    def testLoadWithUNC(self):
-        import sys
-        if sys.platform != 'win32':
-            return
-
-        # Build a UNC path from the regular path.
-        # Something like
-        #   \\%COMPUTERNAME%\c$\python27\python.exe
-
-        fullname = os.path.abspath(sys.executable)
-        if fullname[1] != ':':
-            return
-        unc_name = r'\\%s\%s$\%s' % (os.environ['COMPUTERNAME'],
-                                    fullname[0],
-                                    fullname[3:])
-
-        with test_support.EnvironmentVarGuard() as env:
-            env.unset("TCL_LIBRARY")
-            f = os.popen('%s -c "import Tkinter; print Tkinter"' % (unc_name,))
-
-        self.assertTrue('Tkinter.py' in f.read())
-        # exit code must be zero
-        self.assertEqual(f.close(), None)
-
-
-
-def test_main():
-    test_support.run_unittest(TclTest, TkinterTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_telnetlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_telnetlib.py
deleted file mode 100644
index b06b254..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_telnetlib.py
+++ /dev/null
@@ -1,372 +0,0 @@
-import socket
-import telnetlib
-import time
-import Queue
-
-from unittest import TestCase
-from test import test_support
-threading = test_support.import_module('threading')
-
-HOST = test_support.HOST
-EOF_sigil = object()
-
-def server(evt, serv, dataq=None):
-    """ Open a tcp server in three steps
-        1) set evt to true to let the parent know we are ready
-        2) [optional] if is not False, write the list of data from dataq.get()
-           to the socket.
-        3) set evt to true to let the parent know we're done
-    """
-    serv.listen(5)
-    evt.set()
-    try:
-        conn, addr = serv.accept()
-        if dataq:
-            data = ''
-            new_data = dataq.get(True, 0.5)
-            dataq.task_done()
-            for item in new_data:
-                if item == EOF_sigil:
-                    break
-                if type(item) in [int, float]:
-                    time.sleep(item)
-                else:
-                    data += item
-                written = conn.send(data)
-                data = data[written:]
-    except socket.timeout:
-        pass
-    else:
-        conn.close()
-    finally:
-        serv.close()
-        evt.set()
-
-class GeneralTests(TestCase):
-
-    def setUp(self):
-        self.evt = threading.Event()
-        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.sock.settimeout(3)
-        self.port = test_support.bind_port(self.sock)
-        self.thread = threading.Thread(target=server, args=(self.evt,self.sock))
-        self.thread.start()
-        self.evt.wait()
-        self.evt.clear()
-        time.sleep(.1)
-
-    def tearDown(self):
-        self.evt.wait()
-        self.thread.join()
-
-    def testBasic(self):
-        # connects
-        telnet = telnetlib.Telnet(HOST, self.port)
-        telnet.sock.close()
-
-    def testTimeoutDefault(self):
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        socket.setdefaulttimeout(30)
-        try:
-            telnet = telnetlib.Telnet("localhost", self.port)
-        finally:
-            socket.setdefaulttimeout(None)
-        self.assertEqual(telnet.sock.gettimeout(), 30)
-        telnet.sock.close()
-
-    def testTimeoutNone(self):
-        # None, having other default
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        socket.setdefaulttimeout(30)
-        try:
-            telnet = telnetlib.Telnet(HOST, self.port, timeout=None)
-        finally:
-            socket.setdefaulttimeout(None)
-        self.assertTrue(telnet.sock.gettimeout() is None)
-        telnet.sock.close()
-
-    def testTimeoutValue(self):
-        telnet = telnetlib.Telnet("localhost", self.port, timeout=30)
-        self.assertEqual(telnet.sock.gettimeout(), 30)
-        telnet.sock.close()
-
-    def testTimeoutOpen(self):
-        telnet = telnetlib.Telnet()
-        telnet.open("localhost", self.port, timeout=30)
-        self.assertEqual(telnet.sock.gettimeout(), 30)
-        telnet.sock.close()
-
-def _read_setUp(self):
-    self.evt = threading.Event()
-    self.dataq = Queue.Queue()
-    self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-    self.sock.settimeout(3)
-    self.port = test_support.bind_port(self.sock)
-    self.thread = threading.Thread(target=server, args=(self.evt,self.sock, self.dataq))
-    self.thread.start()
-    self.evt.wait()
-    self.evt.clear()
-    time.sleep(.1)
-
-def _read_tearDown(self):
-    self.evt.wait()
-    self.thread.join()
-
-class ReadTests(TestCase):
-    setUp = _read_setUp
-    tearDown = _read_tearDown
-
-    # use a similar approach to testing timeouts as test_timeout.py
-    # these will never pass 100% but make the fuzz big enough that it is rare
-    block_long = 0.6
-    block_short = 0.3
-    def test_read_until_A(self):
-        """
-        read_until(expected, [timeout])
-          Read until the expected string has been seen, or a timeout is
-          hit (default is no timeout); may block.
-        """
-        want = ['x' * 10, 'match', 'y' * 10, EOF_sigil]
-        self.dataq.put(want)
-        telnet = telnetlib.Telnet(HOST, self.port)
-        self.dataq.join()
-        data = telnet.read_until('match')
-        self.assertEqual(data, ''.join(want[:-2]))
-
-    def test_read_until_B(self):
-        # test the timeout - it does NOT raise socket.timeout
-        want = ['hello', self.block_long, 'not seen', EOF_sigil]
-        self.dataq.put(want)
-        telnet = telnetlib.Telnet(HOST, self.port)
-        self.dataq.join()
-        data = telnet.read_until('not seen', self.block_short)
-        self.assertEqual(data, want[0])
-        self.assertEqual(telnet.read_all(), 'not seen')
-
-    def test_read_all_A(self):
-        """
-        read_all()
-          Read all data until EOF; may block.
-        """
-        want = ['x' * 500, 'y' * 500, 'z' * 500, EOF_sigil]
-        self.dataq.put(want)
-        telnet = telnetlib.Telnet(HOST, self.port)
-        self.dataq.join()
-        data = telnet.read_all()
-        self.assertEqual(data, ''.join(want[:-1]))
-        return
-
-    def _test_blocking(self, func):
-        self.dataq.put([self.block_long, EOF_sigil])
-        self.dataq.join()
-        start = time.time()
-        data = func()
-        self.assertTrue(self.block_short <= time.time() - start)
-
-    def test_read_all_B(self):
-        self._test_blocking(telnetlib.Telnet(HOST, self.port).read_all)
-
-    def test_read_all_C(self):
-        self.dataq.put([EOF_sigil])
-        telnet = telnetlib.Telnet(HOST, self.port)
-        self.dataq.join()
-        telnet.read_all()
-        telnet.read_all() # shouldn't raise
-
-    def test_read_some_A(self):
-        """
-        read_some()
-          Read at least one byte or EOF; may block.
-        """
-        # test 'at least one byte'
-        want = ['x' * 500, EOF_sigil]
-        self.dataq.put(want)
-        telnet = telnetlib.Telnet(HOST, self.port)
-        self.dataq.join()
-        data = telnet.read_all()
-        self.assertTrue(len(data) >= 1)
-
-    def test_read_some_B(self):
-        # test EOF
-        self.dataq.put([EOF_sigil])
-        telnet = telnetlib.Telnet(HOST, self.port)
-        self.dataq.join()
-        self.assertEqual('', telnet.read_some())
-
-    def test_read_some_C(self):
-        self._test_blocking(telnetlib.Telnet(HOST, self.port).read_some)
-
-    def _test_read_any_eager_A(self, func_name):
-        """
-        read_very_eager()
-          Read all data available already queued or on the socket,
-          without blocking.
-        """
-        want = [self.block_long, 'x' * 100, 'y' * 100, EOF_sigil]
-        expects = want[1] + want[2]
-        self.dataq.put(want)
-        telnet = telnetlib.Telnet(HOST, self.port)
-        self.dataq.join()
-        func = getattr(telnet, func_name)
-        data = ''
-        while True:
-            try:
-                data += func()
-                self.assertTrue(expects.startswith(data))
-            except EOFError:
-                break
-        self.assertEqual(expects, data)
-
-    def _test_read_any_eager_B(self, func_name):
-        # test EOF
-        self.dataq.put([EOF_sigil])
-        telnet = telnetlib.Telnet(HOST, self.port)
-        self.dataq.join()
-        time.sleep(self.block_short)
-        func = getattr(telnet, func_name)
-        self.assertRaises(EOFError, func)
-
-    # read_eager and read_very_eager make the same gaurantees
-    # (they behave differently but we only test the gaurantees)
-    def test_read_very_eager_A(self):
-        self._test_read_any_eager_A('read_very_eager')
-    def test_read_very_eager_B(self):
-        self._test_read_any_eager_B('read_very_eager')
-    def test_read_eager_A(self):
-        self._test_read_any_eager_A('read_eager')
-    def test_read_eager_B(self):
-        self._test_read_any_eager_B('read_eager')
-    # NB -- we need to test the IAC block which is mentioned in the docstring
-    # but not in the module docs
-
-    def _test_read_any_lazy_B(self, func_name):
-        self.dataq.put([EOF_sigil])
-        telnet = telnetlib.Telnet(HOST, self.port)
-        self.dataq.join()
-        func = getattr(telnet, func_name)
-        telnet.fill_rawq()
-        self.assertRaises(EOFError, func)
-
-    def test_read_lazy_A(self):
-        want = ['x' * 100, EOF_sigil]
-        self.dataq.put(want)
-        telnet = telnetlib.Telnet(HOST, self.port)
-        self.dataq.join()
-        time.sleep(self.block_short)
-        self.assertEqual('', telnet.read_lazy())
-        data = ''
-        while True:
-            try:
-                read_data = telnet.read_lazy()
-                data += read_data
-                if not read_data:
-                    telnet.fill_rawq()
-            except EOFError:
-                break
-            self.assertTrue(want[0].startswith(data))
-        self.assertEqual(data, want[0])
-
-    def test_read_lazy_B(self):
-        self._test_read_any_lazy_B('read_lazy')
-
-    def test_read_very_lazy_A(self):
-        want = ['x' * 100, EOF_sigil]
-        self.dataq.put(want)
-        telnet = telnetlib.Telnet(HOST, self.port)
-        self.dataq.join()
-        time.sleep(self.block_short)
-        self.assertEqual('', telnet.read_very_lazy())
-        data = ''
-        while True:
-            try:
-                read_data = telnet.read_very_lazy()
-            except EOFError:
-                break
-            data += read_data
-            if not read_data:
-                telnet.fill_rawq()
-                self.assertEqual('', telnet.cookedq)
-                telnet.process_rawq()
-            self.assertTrue(want[0].startswith(data))
-        self.assertEqual(data, want[0])
-
-    def test_read_very_lazy_B(self):
-        self._test_read_any_lazy_B('read_very_lazy')
-
-class nego_collector(object):
-    def __init__(self, sb_getter=None):
-        self.seen = ''
-        self.sb_getter = sb_getter
-        self.sb_seen = ''
-
-    def do_nego(self, sock, cmd, opt):
-        self.seen += cmd + opt
-        if cmd == tl.SE and self.sb_getter:
-            sb_data = self.sb_getter()
-            self.sb_seen += sb_data
-
-tl = telnetlib
-class OptionTests(TestCase):
-    setUp = _read_setUp
-    tearDown = _read_tearDown
-    # RFC 854 commands
-    cmds = [tl.AO, tl.AYT, tl.BRK, tl.EC, tl.EL, tl.GA, tl.IP, tl.NOP]
-
-    def _test_command(self, data):
-        """ helper for testing IAC + cmd """
-        self.setUp()
-        self.dataq.put(data)
-        telnet = telnetlib.Telnet(HOST, self.port)
-        self.dataq.join()
-        nego = nego_collector()
-        telnet.set_option_negotiation_callback(nego.do_nego)
-        txt = telnet.read_all()
-        cmd = nego.seen
-        self.assertTrue(len(cmd) > 0) # we expect at least one command
-        self.assertIn(cmd[0], self.cmds)
-        self.assertEqual(cmd[1], tl.NOOPT)
-        self.assertEqual(len(''.join(data[:-1])), len(txt + cmd))
-        nego.sb_getter = None # break the nego => telnet cycle
-        self.tearDown()
-
-    def test_IAC_commands(self):
-        # reset our setup
-        self.dataq.put([EOF_sigil])
-        telnet = telnetlib.Telnet(HOST, self.port)
-        self.dataq.join()
-        self.tearDown()
-
-        for cmd in self.cmds:
-            self._test_command(['x' * 100, tl.IAC + cmd, 'y'*100, EOF_sigil])
-            self._test_command(['x' * 10, tl.IAC + cmd, 'y'*10, EOF_sigil])
-            self._test_command([tl.IAC + cmd, EOF_sigil])
-        # all at once
-        self._test_command([tl.IAC + cmd for (cmd) in self.cmds] + [EOF_sigil])
-        self.assertEqual('', telnet.read_sb_data())
-
-    def test_SB_commands(self):
-        # RFC 855, subnegotiations portion
-        send = [tl.IAC + tl.SB + tl.IAC + tl.SE,
-                tl.IAC + tl.SB + tl.IAC + tl.IAC + tl.IAC + tl.SE,
-                tl.IAC + tl.SB + tl.IAC + tl.IAC + 'aa' + tl.IAC + tl.SE,
-                tl.IAC + tl.SB + 'bb' + tl.IAC + tl.IAC + tl.IAC + tl.SE,
-                tl.IAC + tl.SB + 'cc' + tl.IAC + tl.IAC + 'dd' + tl.IAC + tl.SE,
-                EOF_sigil,
-               ]
-        self.dataq.put(send)
-        telnet = telnetlib.Telnet(HOST, self.port)
-        self.dataq.join()
-        nego = nego_collector(telnet.read_sb_data)
-        telnet.set_option_negotiation_callback(nego.do_nego)
-        txt = telnet.read_all()
-        self.assertEqual(txt, '')
-        want_sb_data = tl.IAC + tl.IAC + 'aabb' + tl.IAC + 'cc' + tl.IAC + 'dd'
-        self.assertEqual(nego.sb_seen, want_sb_data)
-        self.assertEqual('', telnet.read_sb_data())
-        nego.sb_getter = None # break the nego => telnet cycle
-
-def test_main(verbose=None):
-    test_support.run_unittest(GeneralTests, ReadTests, OptionTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tempfile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tempfile.py
deleted file mode 100644
index c86fc89..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tempfile.py
+++ /dev/null
@@ -1,856 +0,0 @@
-# tempfile.py unit tests.
-import tempfile
-import os
-import sys
-import re
-import warnings
-
-import unittest
-from test import test_support
-
-warnings.filterwarnings("ignore",
-                        category=RuntimeWarning,
-                        message="mktemp", module=__name__)
-
-if hasattr(os, 'stat'):
-    import stat
-    has_stat = 1
-else:
-    has_stat = 0
-
-has_textmode = (tempfile._text_openflags != tempfile._bin_openflags)
-has_spawnl = hasattr(os, 'spawnl')
-
-# TEST_FILES may need to be tweaked for systems depending on the maximum
-# number of files that can be opened at one time (see ulimit -n)
-if sys.platform in ('openbsd3', 'openbsd4'):
-    TEST_FILES = 48
-else:
-    TEST_FILES = 100
-
-# This is organized as one test for each chunk of code in tempfile.py,
-# in order of their appearance in the file.  Testing which requires
-# threads is not done here.
-
-# Common functionality.
-class TC(unittest.TestCase):
-
-    str_check = re.compile(r"[a-zA-Z0-9_-]{6}$")
-
-    def failOnException(self, what, ei=None):
-        if ei is None:
-            ei = sys.exc_info()
-        self.fail("%s raised %s: %s" % (what, ei[0], ei[1]))
-
-    def nameCheck(self, name, dir, pre, suf):
-        (ndir, nbase) = os.path.split(name)
-        npre  = nbase[:len(pre)]
-        nsuf  = nbase[len(nbase)-len(suf):]
-
-        # check for equality of the absolute paths!
-        self.assertEqual(os.path.abspath(ndir), os.path.abspath(dir),
-                         "file '%s' not in directory '%s'" % (name, dir))
-        self.assertEqual(npre, pre,
-                         "file '%s' does not begin with '%s'" % (nbase, pre))
-        self.assertEqual(nsuf, suf,
-                         "file '%s' does not end with '%s'" % (nbase, suf))
-
-        nbase = nbase[len(pre):len(nbase)-len(suf)]
-        self.assertTrue(self.str_check.match(nbase),
-                     "random string '%s' does not match /^[a-zA-Z0-9_-]{6}$/"
-                     % nbase)
-
-test_classes = []
-
-class test_exports(TC):
-    def test_exports(self):
-        # There are no surprising symbols in the tempfile module
-        dict = tempfile.__dict__
-
-        expected = {
-            "NamedTemporaryFile" : 1,
-            "TemporaryFile" : 1,
-            "mkstemp" : 1,
-            "mkdtemp" : 1,
-            "mktemp" : 1,
-            "TMP_MAX" : 1,
-            "gettempprefix" : 1,
-            "gettempdir" : 1,
-            "tempdir" : 1,
-            "template" : 1,
-            "SpooledTemporaryFile" : 1
-        }
-
-        unexp = []
-        for key in dict:
-            if key[0] != '_' and key not in expected:
-                unexp.append(key)
-        self.assertTrue(len(unexp) == 0,
-                        "unexpected keys: %s" % unexp)
-
-test_classes.append(test_exports)
-
-
-class test__RandomNameSequence(TC):
-    """Test the internal iterator object _RandomNameSequence."""
-
-    def setUp(self):
-        self.r = tempfile._RandomNameSequence()
-
-    def test_get_six_char_str(self):
-        # _RandomNameSequence returns a six-character string
-        s = self.r.next()
-        self.nameCheck(s, '', '', '')
-
-    def test_many(self):
-        # _RandomNameSequence returns no duplicate strings (stochastic)
-
-        dict = {}
-        r = self.r
-        for i in xrange(TEST_FILES):
-            s = r.next()
-            self.nameCheck(s, '', '', '')
-            self.assertNotIn(s, dict)
-            dict[s] = 1
-
-    def test_supports_iter(self):
-        # _RandomNameSequence supports the iterator protocol
-
-        i = 0
-        r = self.r
-        try:
-            for s in r:
-                i += 1
-                if i == 20:
-                    break
-        except:
-            self.failOnException("iteration")
-
-test_classes.append(test__RandomNameSequence)
-
-
-class test__candidate_tempdir_list(TC):
-    """Test the internal function _candidate_tempdir_list."""
-
-    def test_nonempty_list(self):
-        # _candidate_tempdir_list returns a nonempty list of strings
-
-        cand = tempfile._candidate_tempdir_list()
-
-        self.assertFalse(len(cand) == 0)
-        for c in cand:
-            self.assertIsInstance(c, basestring)
-
-    def test_wanted_dirs(self):
-        # _candidate_tempdir_list contains the expected directories
-
-        # Make sure the interesting environment variables are all set.
-        with test_support.EnvironmentVarGuard() as env:
-            for envname in 'TMPDIR', 'TEMP', 'TMP':
-                dirname = os.getenv(envname)
-                if not dirname:
-                    env[envname] = os.path.abspath(envname)
-
-            cand = tempfile._candidate_tempdir_list()
-
-            for envname in 'TMPDIR', 'TEMP', 'TMP':
-                dirname = os.getenv(envname)
-                if not dirname: raise ValueError
-                self.assertIn(dirname, cand)
-
-            try:
-                dirname = os.getcwd()
-            except (AttributeError, os.error):
-                dirname = os.curdir
-
-            self.assertIn(dirname, cand)
-
-            # Not practical to try to verify the presence of OS-specific
-            # paths in this list.
-
-test_classes.append(test__candidate_tempdir_list)
-
-
-# We test _get_default_tempdir by testing gettempdir.
-
-
-class test__get_candidate_names(TC):
-    """Test the internal function _get_candidate_names."""
-
-    def test_retval(self):
-        # _get_candidate_names returns a _RandomNameSequence object
-        obj = tempfile._get_candidate_names()
-        self.assertIsInstance(obj, tempfile._RandomNameSequence)
-
-    def test_same_thing(self):
-        # _get_candidate_names always returns the same object
-        a = tempfile._get_candidate_names()
-        b = tempfile._get_candidate_names()
-
-        self.assertTrue(a is b)
-
-test_classes.append(test__get_candidate_names)
-
-
-class test__mkstemp_inner(TC):
-    """Test the internal function _mkstemp_inner."""
-
-    class mkstemped:
-        _bflags = tempfile._bin_openflags
-        _tflags = tempfile._text_openflags
-        _close = os.close
-        _unlink = os.unlink
-
-        def __init__(self, dir, pre, suf, bin):
-            if bin: flags = self._bflags
-            else:   flags = self._tflags
-
-            (self.fd, self.name) = tempfile._mkstemp_inner(dir, pre, suf, flags)
-
-        def write(self, str):
-            os.write(self.fd, str)
-
-        def __del__(self):
-            self._close(self.fd)
-            self._unlink(self.name)
-
-    def do_create(self, dir=None, pre="", suf="", bin=1):
-        if dir is None:
-            dir = tempfile.gettempdir()
-        try:
-            file = self.mkstemped(dir, pre, suf, bin)
-        except:
-            self.failOnException("_mkstemp_inner")
-
-        self.nameCheck(file.name, dir, pre, suf)
-        return file
-
-    def test_basic(self):
-        # _mkstemp_inner can create files
-        self.do_create().write("blat")
-        self.do_create(pre="a").write("blat")
-        self.do_create(suf="b").write("blat")
-        self.do_create(pre="a", suf="b").write("blat")
-        self.do_create(pre="aa", suf=".txt").write("blat")
-
-    def test_basic_many(self):
-        # _mkstemp_inner can create many files (stochastic)
-        extant = range(TEST_FILES)
-        for i in extant:
-            extant[i] = self.do_create(pre="aa")
-
-    def test_choose_directory(self):
-        # _mkstemp_inner can create files in a user-selected directory
-        dir = tempfile.mkdtemp()
-        try:
-            self.do_create(dir=dir).write("blat")
-        finally:
-            os.rmdir(dir)
-
-    def test_file_mode(self):
-        # _mkstemp_inner creates files with the proper mode
-        if not has_stat:
-            return            # ugh, can't use SkipTest.
-
-        file = self.do_create()
-        mode = stat.S_IMODE(os.stat(file.name).st_mode)
-        expected = 0600
-        if sys.platform in ('win32', 'os2emx'):
-            # There's no distinction among 'user', 'group' and 'world';
-            # replicate the 'user' bits.
-            user = expected >> 6
-            expected = user * (1 + 8 + 64)
-        self.assertEqual(mode, expected)
-
-    def test_noinherit(self):
-        # _mkstemp_inner file handles are not inherited by child processes
-        if not has_spawnl:
-            return            # ugh, can't use SkipTest.
-
-        if test_support.verbose:
-            v="v"
-        else:
-            v="q"
-
-        file = self.do_create()
-        fd = "%d" % file.fd
-
-        try:
-            me = __file__
-        except NameError:
-            me = sys.argv[0]
-
-        # We have to exec something, so that FD_CLOEXEC will take
-        # effect.  The core of this test is therefore in
-        # tf_inherit_check.py, which see.
-        tester = os.path.join(os.path.dirname(os.path.abspath(me)),
-                              "tf_inherit_check.py")
-
-        # On Windows a spawn* /path/ with embedded spaces shouldn't be quoted,
-        # but an arg with embedded spaces should be decorated with double
-        # quotes on each end
-        if sys.platform in ('win32',):
-            decorated = '"%s"' % sys.executable
-            tester = '"%s"' % tester
-        else:
-            decorated = sys.executable
-
-        retval = os.spawnl(os.P_WAIT, sys.executable, decorated, tester, v, fd)
-        self.assertFalse(retval < 0,
-                    "child process caught fatal signal %d" % -retval)
-        self.assertFalse(retval > 0, "child process reports failure %d"%retval)
-
-    def test_textmode(self):
-        # _mkstemp_inner can create files in text mode
-        if not has_textmode:
-            return            # ugh, can't use SkipTest.
-
-        self.do_create(bin=0).write("blat\n")
-        # XXX should test that the file really is a text file
-
-test_classes.append(test__mkstemp_inner)
-
-
-class test_gettempprefix(TC):
-    """Test gettempprefix()."""
-
-    def test_sane_template(self):
-        # gettempprefix returns a nonempty prefix string
-        p = tempfile.gettempprefix()
-
-        self.assertIsInstance(p, basestring)
-        self.assertTrue(len(p) > 0)
-
-    def test_usable_template(self):
-        # gettempprefix returns a usable prefix string
-
-        # Create a temp directory, avoiding use of the prefix.
-        # Then attempt to create a file whose name is
-        # prefix + 'xxxxxx.xxx' in that directory.
-        p = tempfile.gettempprefix() + "xxxxxx.xxx"
-        d = tempfile.mkdtemp(prefix="")
-        try:
-            p = os.path.join(d, p)
-            try:
-                fd = os.open(p, os.O_RDWR | os.O_CREAT)
-            except:
-                self.failOnException("os.open")
-            os.close(fd)
-            os.unlink(p)
-        finally:
-            os.rmdir(d)
-
-test_classes.append(test_gettempprefix)
-
-
-class test_gettempdir(TC):
-    """Test gettempdir()."""
-
-    def test_directory_exists(self):
-        # gettempdir returns a directory which exists
-
-        dir = tempfile.gettempdir()
-        self.assertTrue(os.path.isabs(dir) or dir == os.curdir,
-                     "%s is not an absolute path" % dir)
-        self.assertTrue(os.path.isdir(dir),
-                     "%s is not a directory" % dir)
-
-    def test_directory_writable(self):
-        # gettempdir returns a directory writable by the user
-
-        # sneaky: just instantiate a NamedTemporaryFile, which
-        # defaults to writing into the directory returned by
-        # gettempdir.
-        try:
-            file = tempfile.NamedTemporaryFile()
-            file.write("blat")
-            file.close()
-        except:
-            self.failOnException("create file in %s" % tempfile.gettempdir())
-
-    def test_same_thing(self):
-        # gettempdir always returns the same object
-        a = tempfile.gettempdir()
-        b = tempfile.gettempdir()
-
-        self.assertTrue(a is b)
-
-test_classes.append(test_gettempdir)
-
-
-class test_mkstemp(TC):
-    """Test mkstemp()."""
-
-    def do_create(self, dir=None, pre="", suf=""):
-        if dir is None:
-            dir = tempfile.gettempdir()
-        try:
-            (fd, name) = tempfile.mkstemp(dir=dir, prefix=pre, suffix=suf)
-            (ndir, nbase) = os.path.split(name)
-            adir = os.path.abspath(dir)
-            self.assertEqual(adir, ndir,
-                "Directory '%s' incorrectly returned as '%s'" % (adir, ndir))
-        except:
-            self.failOnException("mkstemp")
-
-        try:
-            self.nameCheck(name, dir, pre, suf)
-        finally:
-            os.close(fd)
-            os.unlink(name)
-
-    def test_basic(self):
-        # mkstemp can create files
-        self.do_create()
-        self.do_create(pre="a")
-        self.do_create(suf="b")
-        self.do_create(pre="a", suf="b")
-        self.do_create(pre="aa", suf=".txt")
-        self.do_create(dir=".")
-
-    def test_choose_directory(self):
-        # mkstemp can create directories in a user-selected directory
-        dir = tempfile.mkdtemp()
-        try:
-            self.do_create(dir=dir)
-        finally:
-            os.rmdir(dir)
-
-test_classes.append(test_mkstemp)
-
-
-class test_mkdtemp(TC):
-    """Test mkdtemp()."""
-
-    def do_create(self, dir=None, pre="", suf=""):
-        if dir is None:
-            dir = tempfile.gettempdir()
-        try:
-            name = tempfile.mkdtemp(dir=dir, prefix=pre, suffix=suf)
-        except:
-            self.failOnException("mkdtemp")
-
-        try:
-            self.nameCheck(name, dir, pre, suf)
-            return name
-        except:
-            os.rmdir(name)
-            raise
-
-    def test_basic(self):
-        # mkdtemp can create directories
-        os.rmdir(self.do_create())
-        os.rmdir(self.do_create(pre="a"))
-        os.rmdir(self.do_create(suf="b"))
-        os.rmdir(self.do_create(pre="a", suf="b"))
-        os.rmdir(self.do_create(pre="aa", suf=".txt"))
-
-    def test_basic_many(self):
-        # mkdtemp can create many directories (stochastic)
-        extant = range(TEST_FILES)
-        try:
-            for i in extant:
-                extant[i] = self.do_create(pre="aa")
-        finally:
-            for i in extant:
-                if(isinstance(i, basestring)):
-                    os.rmdir(i)
-
-    def test_choose_directory(self):
-        # mkdtemp can create directories in a user-selected directory
-        dir = tempfile.mkdtemp()
-        try:
-            os.rmdir(self.do_create(dir=dir))
-        finally:
-            os.rmdir(dir)
-
-    def test_mode(self):
-        # mkdtemp creates directories with the proper mode
-        if not has_stat:
-            return            # ugh, can't use SkipTest.
-
-        dir = self.do_create()
-        try:
-            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'):
-                # There's no distinction among 'user', 'group' and 'world';
-                # replicate the 'user' bits.
-                user = expected >> 6
-                expected = user * (1 + 8 + 64)
-            self.assertEqual(mode, expected)
-        finally:
-            os.rmdir(dir)
-
-test_classes.append(test_mkdtemp)
-
-
-class test_mktemp(TC):
-    """Test mktemp()."""
-
-    # For safety, all use of mktemp must occur in a private directory.
-    # We must also suppress the RuntimeWarning it generates.
-    def setUp(self):
-        self.dir = tempfile.mkdtemp()
-
-    def tearDown(self):
-        if self.dir:
-            os.rmdir(self.dir)
-            self.dir = None
-
-    class mktemped:
-        _unlink = os.unlink
-        _bflags = tempfile._bin_openflags
-
-        def __init__(self, dir, pre, suf):
-            self.name = tempfile.mktemp(dir=dir, prefix=pre, suffix=suf)
-            # Create the file.  This will raise an exception if it's
-            # mysteriously appeared in the meanwhile.
-            os.close(os.open(self.name, self._bflags, 0600))
-
-        def __del__(self):
-            self._unlink(self.name)
-
-    def do_create(self, pre="", suf=""):
-        try:
-            file = self.mktemped(self.dir, pre, suf)
-        except:
-            self.failOnException("mktemp")
-
-        self.nameCheck(file.name, self.dir, pre, suf)
-        return file
-
-    def test_basic(self):
-        # mktemp can choose usable file names
-        self.do_create()
-        self.do_create(pre="a")
-        self.do_create(suf="b")
-        self.do_create(pre="a", suf="b")
-        self.do_create(pre="aa", suf=".txt")
-
-    def test_many(self):
-        # mktemp can choose many usable file names (stochastic)
-        extant = range(TEST_FILES)
-        for i in extant:
-            extant[i] = self.do_create(pre="aa")
-
-##     def test_warning(self):
-##         # mktemp issues a warning when used
-##         warnings.filterwarnings("error",
-##                                 category=RuntimeWarning,
-##                                 message="mktemp")
-##         self.assertRaises(RuntimeWarning,
-##                           tempfile.mktemp, dir=self.dir)
-
-test_classes.append(test_mktemp)
-
-
-# We test _TemporaryFileWrapper by testing NamedTemporaryFile.
-
-
-class test_NamedTemporaryFile(TC):
-    """Test NamedTemporaryFile()."""
-
-    def do_create(self, dir=None, pre="", suf="", delete=True):
-        if dir is None:
-            dir = tempfile.gettempdir()
-        try:
-            file = tempfile.NamedTemporaryFile(dir=dir, prefix=pre, suffix=suf,
-                                               delete=delete)
-        except:
-            self.failOnException("NamedTemporaryFile")
-
-        self.nameCheck(file.name, dir, pre, suf)
-        return file
-
-
-    def test_basic(self):
-        # NamedTemporaryFile can create files
-        self.do_create()
-        self.do_create(pre="a")
-        self.do_create(suf="b")
-        self.do_create(pre="a", suf="b")
-        self.do_create(pre="aa", suf=".txt")
-
-    def test_creates_named(self):
-        # NamedTemporaryFile creates files with names
-        f = tempfile.NamedTemporaryFile()
-        self.assertTrue(os.path.exists(f.name),
-                        "NamedTemporaryFile %s does not exist" % f.name)
-
-    def test_del_on_close(self):
-        # A NamedTemporaryFile is deleted when closed
-        dir = tempfile.mkdtemp()
-        try:
-            f = tempfile.NamedTemporaryFile(dir=dir)
-            f.write('blat')
-            f.close()
-            self.assertFalse(os.path.exists(f.name),
-                        "NamedTemporaryFile %s exists after close" % f.name)
-        finally:
-            os.rmdir(dir)
-
-    def test_dis_del_on_close(self):
-        # Tests that delete-on-close can be disabled
-        dir = tempfile.mkdtemp()
-        tmp = None
-        try:
-            f = tempfile.NamedTemporaryFile(dir=dir, delete=False)
-            tmp = f.name
-            f.write('blat')
-            f.close()
-            self.assertTrue(os.path.exists(f.name),
-                        "NamedTemporaryFile %s missing after close" % f.name)
-        finally:
-            if tmp is not None:
-                os.unlink(tmp)
-            os.rmdir(dir)
-
-    def test_multiple_close(self):
-        # A NamedTemporaryFile can be closed many times without error
-        f = tempfile.NamedTemporaryFile()
-        f.write('abc\n')
-        f.close()
-        try:
-            f.close()
-            f.close()
-        except:
-            self.failOnException("close")
-
-    def test_context_manager(self):
-        # A NamedTemporaryFile can be used as a context manager
-        with tempfile.NamedTemporaryFile() as f:
-            self.assertTrue(os.path.exists(f.name))
-        self.assertFalse(os.path.exists(f.name))
-        def use_closed():
-            with f:
-                pass
-        self.assertRaises(ValueError, use_closed)
-
-    # How to test the mode and bufsize parameters?
-
-test_classes.append(test_NamedTemporaryFile)
-
-class test_SpooledTemporaryFile(TC):
-    """Test SpooledTemporaryFile()."""
-
-    def do_create(self, max_size=0, dir=None, pre="", suf=""):
-        if dir is None:
-            dir = tempfile.gettempdir()
-        try:
-            file = tempfile.SpooledTemporaryFile(max_size=max_size, dir=dir, prefix=pre, suffix=suf)
-        except:
-            self.failOnException("SpooledTemporaryFile")
-
-        return file
-
-
-    def test_basic(self):
-        # SpooledTemporaryFile can create files
-        f = self.do_create()
-        self.assertFalse(f._rolled)
-        f = self.do_create(max_size=100, pre="a", suf=".txt")
-        self.assertFalse(f._rolled)
-
-    def test_del_on_close(self):
-        # A SpooledTemporaryFile is deleted when closed
-        dir = tempfile.mkdtemp()
-        try:
-            f = tempfile.SpooledTemporaryFile(max_size=10, dir=dir)
-            self.assertFalse(f._rolled)
-            f.write('blat ' * 5)
-            self.assertTrue(f._rolled)
-            filename = f.name
-            f.close()
-            self.assertFalse(os.path.exists(filename),
-                        "SpooledTemporaryFile %s exists after close" % filename)
-        finally:
-            os.rmdir(dir)
-
-    def test_rewrite_small(self):
-        # A SpooledTemporaryFile can be written to multiple within the max_size
-        f = self.do_create(max_size=30)
-        self.assertFalse(f._rolled)
-        for i in range(5):
-            f.seek(0, 0)
-            f.write('x' * 20)
-        self.assertFalse(f._rolled)
-
-    def test_write_sequential(self):
-        # A SpooledTemporaryFile should hold exactly max_size bytes, and roll
-        # over afterward
-        f = self.do_create(max_size=30)
-        self.assertFalse(f._rolled)
-        f.write('x' * 20)
-        self.assertFalse(f._rolled)
-        f.write('x' * 10)
-        self.assertFalse(f._rolled)
-        f.write('x')
-        self.assertTrue(f._rolled)
-
-    def test_writelines(self):
-        # Verify writelines with a SpooledTemporaryFile
-        f = self.do_create()
-        f.writelines((b'x', b'y', b'z'))
-        f.seek(0)
-        buf = f.read()
-        self.assertEqual(buf, b'xyz')
-
-    def test_writelines_sequential(self):
-        # A SpooledTemporaryFile should hold exactly max_size bytes, and roll
-        # over afterward
-        f = self.do_create(max_size=35)
-        f.writelines((b'x' * 20, b'x' * 10, b'x' * 5))
-        self.assertFalse(f._rolled)
-        f.write(b'x')
-        self.assertTrue(f._rolled)
-
-    def test_sparse(self):
-        # A SpooledTemporaryFile that is written late in the file will extend
-        # when that occurs
-        f = self.do_create(max_size=30)
-        self.assertFalse(f._rolled)
-        f.seek(100, 0)
-        self.assertFalse(f._rolled)
-        f.write('x')
-        self.assertTrue(f._rolled)
-
-    def test_fileno(self):
-        # A SpooledTemporaryFile should roll over to a real file on fileno()
-        f = self.do_create(max_size=30)
-        self.assertFalse(f._rolled)
-        self.assertTrue(f.fileno() > 0)
-        self.assertTrue(f._rolled)
-
-    def test_multiple_close_before_rollover(self):
-        # A SpooledTemporaryFile can be closed many times without error
-        f = tempfile.SpooledTemporaryFile()
-        f.write('abc\n')
-        self.assertFalse(f._rolled)
-        f.close()
-        try:
-            f.close()
-            f.close()
-        except:
-            self.failOnException("close")
-
-    def test_multiple_close_after_rollover(self):
-        # A SpooledTemporaryFile can be closed many times without error
-        f = tempfile.SpooledTemporaryFile(max_size=1)
-        f.write('abc\n')
-        self.assertTrue(f._rolled)
-        f.close()
-        try:
-            f.close()
-            f.close()
-        except:
-            self.failOnException("close")
-
-    def test_bound_methods(self):
-        # It should be OK to steal a bound method from a SpooledTemporaryFile
-        # and use it independently; when the file rolls over, those bound
-        # methods should continue to function
-        f = self.do_create(max_size=30)
-        read = f.read
-        write = f.write
-        seek = f.seek
-
-        write("a" * 35)
-        write("b" * 35)
-        seek(0, 0)
-        self.assertTrue(read(70) == 'a'*35 + 'b'*35)
-
-    def test_context_manager_before_rollover(self):
-        # A SpooledTemporaryFile can be used as a context manager
-        with tempfile.SpooledTemporaryFile(max_size=1) as f:
-            self.assertFalse(f._rolled)
-            self.assertFalse(f.closed)
-        self.assertTrue(f.closed)
-        def use_closed():
-            with f:
-                pass
-        self.assertRaises(ValueError, use_closed)
-
-    def test_context_manager_during_rollover(self):
-        # A SpooledTemporaryFile can be used as a context manager
-        with tempfile.SpooledTemporaryFile(max_size=1) as f:
-            self.assertFalse(f._rolled)
-            f.write('abc\n')
-            f.flush()
-            self.assertTrue(f._rolled)
-            self.assertFalse(f.closed)
-        self.assertTrue(f.closed)
-        def use_closed():
-            with f:
-                pass
-        self.assertRaises(ValueError, use_closed)
-
-    def test_context_manager_after_rollover(self):
-        # A SpooledTemporaryFile can be used as a context manager
-        f = tempfile.SpooledTemporaryFile(max_size=1)
-        f.write('abc\n')
-        f.flush()
-        self.assertTrue(f._rolled)
-        with f:
-            self.assertFalse(f.closed)
-        self.assertTrue(f.closed)
-        def use_closed():
-            with f:
-                pass
-        self.assertRaises(ValueError, use_closed)
-
-
-test_classes.append(test_SpooledTemporaryFile)
-
-
-class test_TemporaryFile(TC):
-    """Test TemporaryFile()."""
-
-    def test_basic(self):
-        # TemporaryFile can create files
-        # No point in testing the name params - the file has no name.
-        try:
-            tempfile.TemporaryFile()
-        except:
-            self.failOnException("TemporaryFile")
-
-    def test_has_no_name(self):
-        # TemporaryFile creates files with no names (on this system)
-        dir = tempfile.mkdtemp()
-        f = tempfile.TemporaryFile(dir=dir)
-        f.write('blat')
-
-        # Sneaky: because this file has no name, it should not prevent
-        # us from removing the directory it was created in.
-        try:
-            os.rmdir(dir)
-        except:
-            ei = sys.exc_info()
-            # cleanup
-            f.close()
-            os.rmdir(dir)
-            self.failOnException("rmdir", ei)
-
-    def test_multiple_close(self):
-        # A TemporaryFile can be closed many times without error
-        f = tempfile.TemporaryFile()
-        f.write('abc\n')
-        f.close()
-        try:
-            f.close()
-            f.close()
-        except:
-            self.failOnException("close")
-
-    # How to test the mode and bufsize parameters?
-
-
-if tempfile.NamedTemporaryFile is not tempfile.TemporaryFile:
-    test_classes.append(test_TemporaryFile)
-
-def test_main():
-    test_support.run_unittest(*test_classes)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_textwrap.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_textwrap.py
deleted file mode 100644
index 2300437..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_textwrap.py
+++ /dev/null
@@ -1,610 +0,0 @@
-#
-# Test suite for the textwrap module.
-#
-# Original tests written by Greg Ward <gward@python.net>.
-# Converted to PyUnit by Peter Hansen <peter@engcorp.com>.
-# Currently maintained by Greg Ward.
-#
-# $Id$
-#
-
-import unittest
-from test import test_support
-
-from textwrap import TextWrapper, wrap, fill, dedent
-
-
-class BaseTestCase(unittest.TestCase):
-    '''Parent class with utility methods for textwrap tests.'''
-
-    def show(self, textin):
-        if isinstance(textin, list):
-            result = []
-            for i in range(len(textin)):
-                result.append("  %d: %r" % (i, textin[i]))
-            result = '\n'.join(result)
-        elif isinstance(textin, basestring):
-            result = "  %s\n" % repr(textin)
-        return result
-
-
-    def check(self, result, expect):
-        self.assertEqual(result, expect,
-            'expected:\n%s\nbut got:\n%s' % (
-                self.show(expect), self.show(result)))
-
-    def check_wrap(self, text, width, expect, **kwargs):
-        result = wrap(text, width, **kwargs)
-        self.check(result, expect)
-
-    def check_split(self, text, expect):
-        result = self.wrapper._split(text)
-        self.assertEqual(result, expect,
-                         "\nexpected %r\n"
-                         "but got  %r" % (expect, result))
-
-
-class WrapTestCase(BaseTestCase):
-
-    def setUp(self):
-        self.wrapper = TextWrapper(width=45)
-
-    def test_simple(self):
-        # Simple case: just words, spaces, and a bit of punctuation
-
-        text = "Hello there, how are you this fine day?  I'm glad to hear it!"
-
-        self.check_wrap(text, 12,
-                        ["Hello there,",
-                         "how are you",
-                         "this fine",
-                         "day?  I'm",
-                         "glad to hear",
-                         "it!"])
-        self.check_wrap(text, 42,
-                        ["Hello there, how are you this fine day?",
-                         "I'm glad to hear it!"])
-        self.check_wrap(text, 80, [text])
-
-
-    def test_whitespace(self):
-        # Whitespace munging and end-of-sentence detection
-
-        text = """\
-This is a paragraph that already has
-line breaks.  But some of its lines are much longer than the others,
-so it needs to be wrapped.
-Some lines are \ttabbed too.
-What a mess!
-"""
-
-        expect = ["This is a paragraph that already has line",
-                  "breaks.  But some of its lines are much",
-                  "longer than the others, so it needs to be",
-                  "wrapped.  Some lines are  tabbed too.  What a",
-                  "mess!"]
-
-        wrapper = TextWrapper(45, fix_sentence_endings=True)
-        result = wrapper.wrap(text)
-        self.check(result, expect)
-
-        result = wrapper.fill(text)
-        self.check(result, '\n'.join(expect))
-
-    def test_fix_sentence_endings(self):
-        wrapper = TextWrapper(60, fix_sentence_endings=True)
-
-        # SF #847346: ensure that fix_sentence_endings=True does the
-        # right thing even on input short enough that it doesn't need to
-        # be wrapped.
-        text = "A short line. Note the single space."
-        expect = ["A short line.  Note the single space."]
-        self.check(wrapper.wrap(text), expect)
-
-        # Test some of the hairy end cases that _fix_sentence_endings()
-        # is supposed to handle (the easy stuff is tested in
-        # test_whitespace() above).
-        text = "Well, Doctor? What do you think?"
-        expect = ["Well, Doctor?  What do you think?"]
-        self.check(wrapper.wrap(text), expect)
-
-        text = "Well, Doctor?\nWhat do you think?"
-        self.check(wrapper.wrap(text), expect)
-
-        text = 'I say, chaps! Anyone for "tennis?"\nHmmph!'
-        expect = ['I say, chaps!  Anyone for "tennis?"  Hmmph!']
-        self.check(wrapper.wrap(text), expect)
-
-        wrapper.width = 20
-        expect = ['I say, chaps!', 'Anyone for "tennis?"', 'Hmmph!']
-        self.check(wrapper.wrap(text), expect)
-
-        text = 'And she said, "Go to hell!"\nCan you believe that?'
-        expect = ['And she said, "Go to',
-                  'hell!"  Can you',
-                  'believe that?']
-        self.check(wrapper.wrap(text), expect)
-
-        wrapper.width = 60
-        expect = ['And she said, "Go to hell!"  Can you believe that?']
-        self.check(wrapper.wrap(text), expect)
-
-        text = 'File stdio.h is nice.'
-        expect = ['File stdio.h is nice.']
-        self.check(wrapper.wrap(text), expect)
-
-    def test_wrap_short(self):
-        # Wrapping to make short lines longer
-
-        text = "This is a\nshort paragraph."
-
-        self.check_wrap(text, 20, ["This is a short",
-                                   "paragraph."])
-        self.check_wrap(text, 40, ["This is a short paragraph."])
-
-
-    def test_wrap_short_1line(self):
-        # Test endcases
-
-        text = "This is a short line."
-
-        self.check_wrap(text, 30, ["This is a short line."])
-        self.check_wrap(text, 30, ["(1) This is a short line."],
-                        initial_indent="(1) ")
-
-
-    def test_hyphenated(self):
-        # Test breaking hyphenated words
-
-        text = ("this-is-a-useful-feature-for-"
-                "reformatting-posts-from-tim-peters'ly")
-
-        self.check_wrap(text, 40,
-                        ["this-is-a-useful-feature-for-",
-                         "reformatting-posts-from-tim-peters'ly"])
-        self.check_wrap(text, 41,
-                        ["this-is-a-useful-feature-for-",
-                         "reformatting-posts-from-tim-peters'ly"])
-        self.check_wrap(text, 42,
-                        ["this-is-a-useful-feature-for-reformatting-",
-                         "posts-from-tim-peters'ly"])
-
-    def test_hyphenated_numbers(self):
-        # Test that hyphenated numbers (eg. dates) are not broken like words.
-        text = ("Python 1.0.0 was released on 1994-01-26.  Python 1.0.1 was\n"
-                "released on 1994-02-15.")
-
-        self.check_wrap(text, 35, ['Python 1.0.0 was released on',
-                                   '1994-01-26.  Python 1.0.1 was',
-                                   'released on 1994-02-15.'])
-        self.check_wrap(text, 40, ['Python 1.0.0 was released on 1994-01-26.',
-                                   'Python 1.0.1 was released on 1994-02-15.'])
-
-        text = "I do all my shopping at 7-11."
-        self.check_wrap(text, 25, ["I do all my shopping at",
-                                   "7-11."])
-        self.check_wrap(text, 27, ["I do all my shopping at",
-                                   "7-11."])
-        self.check_wrap(text, 29, ["I do all my shopping at 7-11."])
-
-    def test_em_dash(self):
-        # Test text with em-dashes
-        text = "Em-dashes should be written -- thus."
-        self.check_wrap(text, 25,
-                        ["Em-dashes should be",
-                         "written -- thus."])
-
-        # Probe the boundaries of the properly written em-dash,
-        # ie. " -- ".
-        self.check_wrap(text, 29,
-                        ["Em-dashes should be written",
-                         "-- thus."])
-        expect = ["Em-dashes should be written --",
-                  "thus."]
-        self.check_wrap(text, 30, expect)
-        self.check_wrap(text, 35, expect)
-        self.check_wrap(text, 36,
-                        ["Em-dashes should be written -- thus."])
-
-        # The improperly written em-dash is handled too, because
-        # it's adjacent to non-whitespace on both sides.
-        text = "You can also do--this or even---this."
-        expect = ["You can also do",
-                  "--this or even",
-                  "---this."]
-        self.check_wrap(text, 15, expect)
-        self.check_wrap(text, 16, expect)
-        expect = ["You can also do--",
-                  "this or even---",
-                  "this."]
-        self.check_wrap(text, 17, expect)
-        self.check_wrap(text, 19, expect)
-        expect = ["You can also do--this or even",
-                  "---this."]
-        self.check_wrap(text, 29, expect)
-        self.check_wrap(text, 31, expect)
-        expect = ["You can also do--this or even---",
-                  "this."]
-        self.check_wrap(text, 32, expect)
-        self.check_wrap(text, 35, expect)
-
-        # All of the above behaviour could be deduced by probing the
-        # _split() method.
-        text = "Here's an -- em-dash and--here's another---and another!"
-        expect = ["Here's", " ", "an", " ", "--", " ", "em-", "dash", " ",
-                  "and", "--", "here's", " ", "another", "---",
-                  "and", " ", "another!"]
-        self.check_split(text, expect)
-
-        text = "and then--bam!--he was gone"
-        expect = ["and", " ", "then", "--", "bam!", "--",
-                  "he", " ", "was", " ", "gone"]
-        self.check_split(text, expect)
-
-
-    def test_unix_options (self):
-        # Test that Unix-style command-line options are wrapped correctly.
-        # Both Optik (OptionParser) and Docutils rely on this behaviour!
-
-        text = "You should use the -n option, or --dry-run in its long form."
-        self.check_wrap(text, 20,
-                        ["You should use the",
-                         "-n option, or --dry-",
-                         "run in its long",
-                         "form."])
-        self.check_wrap(text, 21,
-                        ["You should use the -n",
-                         "option, or --dry-run",
-                         "in its long form."])
-        expect = ["You should use the -n option, or",
-                  "--dry-run in its long form."]
-        self.check_wrap(text, 32, expect)
-        self.check_wrap(text, 34, expect)
-        self.check_wrap(text, 35, expect)
-        self.check_wrap(text, 38, expect)
-        expect = ["You should use the -n option, or --dry-",
-                  "run in its long form."]
-        self.check_wrap(text, 39, expect)
-        self.check_wrap(text, 41, expect)
-        expect = ["You should use the -n option, or --dry-run",
-                  "in its long form."]
-        self.check_wrap(text, 42, expect)
-
-        # Again, all of the above can be deduced from _split().
-        text = "the -n option, or --dry-run or --dryrun"
-        expect = ["the", " ", "-n", " ", "option,", " ", "or", " ",
-                  "--dry-", "run", " ", "or", " ", "--dryrun"]
-        self.check_split(text, expect)
-
-    def test_funky_hyphens (self):
-        # Screwy edge cases cooked up by David Goodger.  All reported
-        # in SF bug #596434.
-        self.check_split("what the--hey!", ["what", " ", "the", "--", "hey!"])
-        self.check_split("what the--", ["what", " ", "the--"])
-        self.check_split("what the--.", ["what", " ", "the--."])
-        self.check_split("--text--.", ["--text--."])
-
-        # When I first read bug #596434, this is what I thought David
-        # was talking about.  I was wrong; these have always worked
-        # fine.  The real problem is tested in test_funky_parens()
-        # below...
-        self.check_split("--option", ["--option"])
-        self.check_split("--option-opt", ["--option-", "opt"])
-        self.check_split("foo --option-opt bar",
-                         ["foo", " ", "--option-", "opt", " ", "bar"])
-
-    def test_punct_hyphens(self):
-        # Oh bother, SF #965425 found another problem with hyphens --
-        # hyphenated words in single quotes weren't handled correctly.
-        # In fact, the bug is that *any* punctuation around a hyphenated
-        # word was handled incorrectly, except for a leading "--", which
-        # was special-cased for Optik and Docutils.  So test a variety
-        # of styles of punctuation around a hyphenated word.
-        # (Actually this is based on an Optik bug report, #813077).
-        self.check_split("the 'wibble-wobble' widget",
-                         ['the', ' ', "'wibble-", "wobble'", ' ', 'widget'])
-        self.check_split('the "wibble-wobble" widget',
-                         ['the', ' ', '"wibble-', 'wobble"', ' ', 'widget'])
-        self.check_split("the (wibble-wobble) widget",
-                         ['the', ' ', "(wibble-", "wobble)", ' ', 'widget'])
-        self.check_split("the ['wibble-wobble'] widget",
-                         ['the', ' ', "['wibble-", "wobble']", ' ', 'widget'])
-
-    def test_funky_parens (self):
-        # Second part of SF bug #596434: long option strings inside
-        # parentheses.
-        self.check_split("foo (--option) bar",
-                         ["foo", " ", "(--option)", " ", "bar"])
-
-        # Related stuff -- make sure parens work in simpler contexts.
-        self.check_split("foo (bar) baz",
-                         ["foo", " ", "(bar)", " ", "baz"])
-        self.check_split("blah (ding dong), wubba",
-                         ["blah", " ", "(ding", " ", "dong),",
-                          " ", "wubba"])
-
-    def test_initial_whitespace(self):
-        # SF bug #622849 reported inconsistent handling of leading
-        # whitespace; let's test that a bit, shall we?
-        text = " This is a sentence with leading whitespace."
-        self.check_wrap(text, 50,
-                        [" This is a sentence with leading whitespace."])
-        self.check_wrap(text, 30,
-                        [" This is a sentence with", "leading whitespace."])
-
-    def test_no_drop_whitespace(self):
-        # SF patch #1581073
-        text = " This is a    sentence with     much whitespace."
-        self.check_wrap(text, 10,
-                        [" This is a", "    ", "sentence ",
-                         "with     ", "much white", "space."],
-                        drop_whitespace=False)
-
-    if test_support.have_unicode:
-        def test_unicode(self):
-            # *Very* simple test of wrapping Unicode strings.  I'm sure
-            # there's more to it than this, but let's at least make
-            # sure textwrap doesn't crash on Unicode input!
-            text = u"Hello there, how are you today?"
-            self.check_wrap(text, 50, [u"Hello there, how are you today?"])
-            self.check_wrap(text, 20, [u"Hello there, how are", "you today?"])
-            olines = self.wrapper.wrap(text)
-            self.assertIsInstance(olines, list)
-            self.assertIsInstance(olines[0], unicode)
-            otext = self.wrapper.fill(text)
-            self.assertIsInstance(otext, unicode)
-
-        def test_no_split_at_umlaut(self):
-            text = u"Die Empf\xe4nger-Auswahl"
-            self.check_wrap(text, 13, [u"Die", u"Empf\xe4nger-", u"Auswahl"])
-
-        def test_umlaut_followed_by_dash(self):
-            text = u"aa \xe4\xe4-\xe4\xe4"
-            self.check_wrap(text, 7, [u"aa \xe4\xe4-", u"\xe4\xe4"])
-
-    def test_split(self):
-        # Ensure that the standard _split() method works as advertised
-        # in the comments
-
-        text = "Hello there -- you goof-ball, use the -b option!"
-
-        result = self.wrapper._split(text)
-        self.check(result,
-             ["Hello", " ", "there", " ", "--", " ", "you", " ", "goof-",
-              "ball,", " ", "use", " ", "the", " ", "-b", " ",  "option!"])
-
-    def test_break_on_hyphens(self):
-        # Ensure that the break_on_hyphens attributes work
-        text = "yaba daba-doo"
-        self.check_wrap(text, 10, ["yaba daba-", "doo"],
-                        break_on_hyphens=True)
-        self.check_wrap(text, 10, ["yaba", "daba-doo"],
-                        break_on_hyphens=False)
-
-    def test_bad_width(self):
-        # Ensure that width <= 0 is caught.
-        text = "Whatever, it doesn't matter."
-        self.assertRaises(ValueError, wrap, text, 0)
-        self.assertRaises(ValueError, wrap, text, -1)
-
-
-class LongWordTestCase (BaseTestCase):
-    def setUp(self):
-        self.wrapper = TextWrapper()
-        self.text = '''\
-Did you say "supercalifragilisticexpialidocious?"
-How *do* you spell that odd word, anyways?
-'''
-
-    def test_break_long(self):
-        # Wrap text with long words and lots of punctuation
-
-        self.check_wrap(self.text, 30,
-                        ['Did you say "supercalifragilis',
-                         'ticexpialidocious?" How *do*',
-                         'you spell that odd word,',
-                         'anyways?'])
-        self.check_wrap(self.text, 50,
-                        ['Did you say "supercalifragilisticexpialidocious?"',
-                         'How *do* you spell that odd word, anyways?'])
-
-        # SF bug 797650.  Prevent an infinite loop by making sure that at
-        # least one character gets split off on every pass.
-        self.check_wrap('-'*10+'hello', 10,
-                        ['----------',
-                         '               h',
-                         '               e',
-                         '               l',
-                         '               l',
-                         '               o'],
-                        subsequent_indent = ' '*15)
-
-        # bug 1146.  Prevent a long word to be wrongly wrapped when the
-        # preceding word is exactly one character shorter than the width
-        self.check_wrap(self.text, 12,
-                        ['Did you say ',
-                         '"supercalifr',
-                         'agilisticexp',
-                         'ialidocious?',
-                         '" How *do*',
-                         'you spell',
-                         'that odd',
-                         'word,',
-                         'anyways?'])
-
-    def test_nobreak_long(self):
-        # Test with break_long_words disabled
-        self.wrapper.break_long_words = 0
-        self.wrapper.width = 30
-        expect = ['Did you say',
-                  '"supercalifragilisticexpialidocious?"',
-                  'How *do* you spell that odd',
-                  'word, anyways?'
-                  ]
-        result = self.wrapper.wrap(self.text)
-        self.check(result, expect)
-
-        # Same thing with kwargs passed to standalone wrap() function.
-        result = wrap(self.text, width=30, break_long_words=0)
-        self.check(result, expect)
-
-
-class IndentTestCases(BaseTestCase):
-
-    # called before each test method
-    def setUp(self):
-        self.text = '''\
-This paragraph will be filled, first without any indentation,
-and then with some (including a hanging indent).'''
-
-
-    def test_fill(self):
-        # Test the fill() method
-
-        expect = '''\
-This paragraph will be filled, first
-without any indentation, and then with
-some (including a hanging indent).'''
-
-        result = fill(self.text, 40)
-        self.check(result, expect)
-
-
-    def test_initial_indent(self):
-        # Test initial_indent parameter
-
-        expect = ["     This paragraph will be filled,",
-                  "first without any indentation, and then",
-                  "with some (including a hanging indent)."]
-        result = wrap(self.text, 40, initial_indent="     ")
-        self.check(result, expect)
-
-        expect = "\n".join(expect)
-        result = fill(self.text, 40, initial_indent="     ")
-        self.check(result, expect)
-
-
-    def test_subsequent_indent(self):
-        # Test subsequent_indent parameter
-
-        expect = '''\
-  * This paragraph will be filled, first
-    without any indentation, and then
-    with some (including a hanging
-    indent).'''
-
-        result = fill(self.text, 40,
-                      initial_indent="  * ", subsequent_indent="    ")
-        self.check(result, expect)
-
-
-# Despite the similar names, DedentTestCase is *not* the inverse
-# of IndentTestCase!
-class DedentTestCase(unittest.TestCase):
-
-    def assertUnchanged(self, text):
-        """assert that dedent() has no effect on 'text'"""
-        self.assertEqual(text, dedent(text))
-
-    def test_dedent_nomargin(self):
-        # No lines indented.
-        text = "Hello there.\nHow are you?\nOh good, I'm glad."
-        self.assertUnchanged(text)
-
-        # Similar, with a blank line.
-        text = "Hello there.\n\nBoo!"
-        self.assertUnchanged(text)
-
-        # Some lines indented, but overall margin is still zero.
-        text = "Hello there.\n  This is indented."
-        self.assertUnchanged(text)
-
-        # Again, add a blank line.
-        text = "Hello there.\n\n  Boo!\n"
-        self.assertUnchanged(text)
-
-    def test_dedent_even(self):
-        # All lines indented by two spaces.
-        text = "  Hello there.\n  How are ya?\n  Oh good."
-        expect = "Hello there.\nHow are ya?\nOh good."
-        self.assertEqual(expect, dedent(text))
-
-        # Same, with blank lines.
-        text = "  Hello there.\n\n  How are ya?\n  Oh good.\n"
-        expect = "Hello there.\n\nHow are ya?\nOh good.\n"
-        self.assertEqual(expect, dedent(text))
-
-        # Now indent one of the blank lines.
-        text = "  Hello there.\n  \n  How are ya?\n  Oh good.\n"
-        expect = "Hello there.\n\nHow are ya?\nOh good.\n"
-        self.assertEqual(expect, dedent(text))
-
-    def test_dedent_uneven(self):
-        # Lines indented unevenly.
-        text = '''\
-        def foo():
-            while 1:
-                return foo
-        '''
-        expect = '''\
-def foo():
-    while 1:
-        return foo
-'''
-        self.assertEqual(expect, dedent(text))
-
-        # Uneven indentation with a blank line.
-        text = "  Foo\n    Bar\n\n   Baz\n"
-        expect = "Foo\n  Bar\n\n Baz\n"
-        self.assertEqual(expect, dedent(text))
-
-        # Uneven indentation with a whitespace-only line.
-        text = "  Foo\n    Bar\n \n   Baz\n"
-        expect = "Foo\n  Bar\n\n Baz\n"
-        self.assertEqual(expect, dedent(text))
-
-    # dedent() should not mangle internal tabs
-    def test_dedent_preserve_internal_tabs(self):
-        text = "  hello\tthere\n  how are\tyou?"
-        expect = "hello\tthere\nhow are\tyou?"
-        self.assertEqual(expect, dedent(text))
-
-        # make sure that it preserves tabs when it's not making any
-        # changes at all
-        self.assertEqual(expect, dedent(expect))
-
-    # dedent() should not mangle tabs in the margin (i.e.
-    # tabs and spaces both count as margin, but are *not*
-    # considered equivalent)
-    def test_dedent_preserve_margin_tabs(self):
-        text = "  hello there\n\thow are you?"
-        self.assertUnchanged(text)
-
-        # same effect even if we have 8 spaces
-        text = "        hello there\n\thow are you?"
-        self.assertUnchanged(text)
-
-        # dedent() only removes whitespace that can be uniformly removed!
-        text = "\thello there\n\thow are you?"
-        expect = "hello there\nhow are you?"
-        self.assertEqual(expect, dedent(text))
-
-        text = "  \thello there\n  \thow are you?"
-        self.assertEqual(expect, dedent(text))
-
-        text = "  \t  hello there\n  \t  how are you?"
-        self.assertEqual(expect, dedent(text))
-
-        text = "  \thello there\n  \t  how are you?"
-        expect = "hello there\n  how are you?"
-        self.assertEqual(expect, dedent(text))
-
-
-def test_main():
-    test_support.run_unittest(WrapTestCase,
-                              LongWordTestCase,
-                              IndentTestCases,
-                              DedentTestCase)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_thread.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_thread.py
deleted file mode 100644
index 82b8fbe..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_thread.py
+++ /dev/null
@@ -1,242 +0,0 @@
-import os
-import unittest
-import random
-from test import test_support
-thread = test_support.import_module('thread')
-import time
-import sys
-import weakref
-
-from test import lock_tests
-
-NUMTASKS = 10
-NUMTRIPS = 3
-
-
-_print_mutex = thread.allocate_lock()
-
-def verbose_print(arg):
-    """Helper function for printing out debugging output."""
-    if test_support.verbose:
-        with _print_mutex:
-            print arg
-
-
-class BasicThreadTest(unittest.TestCase):
-
-    def setUp(self):
-        self.done_mutex = thread.allocate_lock()
-        self.done_mutex.acquire()
-        self.running_mutex = thread.allocate_lock()
-        self.random_mutex = thread.allocate_lock()
-        self.created = 0
-        self.running = 0
-        self.next_ident = 0
-
-
-class ThreadRunningTests(BasicThreadTest):
-
-    def newtask(self):
-        with self.running_mutex:
-            self.next_ident += 1
-            verbose_print("creating task %s" % self.next_ident)
-            thread.start_new_thread(self.task, (self.next_ident,))
-            self.created += 1
-            self.running += 1
-
-    def task(self, ident):
-        with self.random_mutex:
-            delay = random.random() / 10000.0
-        verbose_print("task %s will run for %sus" % (ident, round(delay*1e6)))
-        time.sleep(delay)
-        verbose_print("task %s done" % ident)
-        with self.running_mutex:
-            self.running -= 1
-            if self.created == NUMTASKS and self.running == 0:
-                self.done_mutex.release()
-
-    def test_starting_threads(self):
-        # Basic test for thread creation.
-        for i in range(NUMTASKS):
-            self.newtask()
-        verbose_print("waiting for tasks to complete...")
-        self.done_mutex.acquire()
-        verbose_print("all tasks done")
-
-    def test_stack_size(self):
-        # Various stack size tests.
-        self.assertEqual(thread.stack_size(), 0, "initial stack size is not 0")
-
-        thread.stack_size(0)
-        self.assertEqual(thread.stack_size(), 0, "stack_size not reset to default")
-
-        if os.name not in ("nt", "os2", "posix"):
-            return
-
-        tss_supported = True
-        try:
-            thread.stack_size(4096)
-        except ValueError:
-            verbose_print("caught expected ValueError setting "
-                            "stack_size(4096)")
-        except thread.error:
-            tss_supported = False
-            verbose_print("platform does not support changing thread stack "
-                            "size")
-
-        if tss_supported:
-            fail_msg = "stack_size(%d) failed - should succeed"
-            for tss in (262144, 0x100000, 0):
-                thread.stack_size(tss)
-                self.assertEqual(thread.stack_size(), tss, fail_msg % tss)
-                verbose_print("successfully set stack_size(%d)" % tss)
-
-            for tss in (262144, 0x100000):
-                verbose_print("trying stack_size = (%d)" % tss)
-                self.next_ident = 0
-                self.created = 0
-                for i in range(NUMTASKS):
-                    self.newtask()
-
-                verbose_print("waiting for all tasks to complete")
-                self.done_mutex.acquire()
-                verbose_print("all tasks done")
-
-            thread.stack_size(0)
-
-    def test__count(self):
-        # Test the _count() function.
-        orig = thread._count()
-        mut = thread.allocate_lock()
-        mut.acquire()
-        started = []
-        def task():
-            started.append(None)
-            mut.acquire()
-            mut.release()
-        thread.start_new_thread(task, ())
-        while not started:
-            time.sleep(0.01)
-        self.assertEqual(thread._count(), orig + 1)
-        # Allow the task to finish.
-        mut.release()
-        # The only reliable way to be sure that the thread ended from the
-        # interpreter's point of view is to wait for the function object to be
-        # destroyed.
-        done = []
-        wr = weakref.ref(task, lambda _: done.append(None))
-        del task
-        while not done:
-            time.sleep(0.01)
-        self.assertEqual(thread._count(), orig)
-
-
-class Barrier:
-    def __init__(self, num_threads):
-        self.num_threads = num_threads
-        self.waiting = 0
-        self.checkin_mutex  = thread.allocate_lock()
-        self.checkout_mutex = thread.allocate_lock()
-        self.checkout_mutex.acquire()
-
-    def enter(self):
-        self.checkin_mutex.acquire()
-        self.waiting = self.waiting + 1
-        if self.waiting == self.num_threads:
-            self.waiting = self.num_threads - 1
-            self.checkout_mutex.release()
-            return
-        self.checkin_mutex.release()
-
-        self.checkout_mutex.acquire()
-        self.waiting = self.waiting - 1
-        if self.waiting == 0:
-            self.checkin_mutex.release()
-            return
-        self.checkout_mutex.release()
-
-
-class BarrierTest(BasicThreadTest):
-
-    def test_barrier(self):
-        self.bar = Barrier(NUMTASKS)
-        self.running = NUMTASKS
-        for i in range(NUMTASKS):
-            thread.start_new_thread(self.task2, (i,))
-        verbose_print("waiting for tasks to end")
-        self.done_mutex.acquire()
-        verbose_print("tasks done")
-
-    def task2(self, ident):
-        for i in range(NUMTRIPS):
-            if ident == 0:
-                # give it a good chance to enter the next
-                # barrier before the others are all out
-                # of the current one
-                delay = 0
-            else:
-                with self.random_mutex:
-                    delay = random.random() / 10000.0
-            verbose_print("task %s will run for %sus" %
-                          (ident, round(delay * 1e6)))
-            time.sleep(delay)
-            verbose_print("task %s entering %s" % (ident, i))
-            self.bar.enter()
-            verbose_print("task %s leaving barrier" % ident)
-        with self.running_mutex:
-            self.running -= 1
-            # Must release mutex before releasing done, else the main thread can
-            # exit and set mutex to None as part of global teardown; then
-            # mutex.release() raises AttributeError.
-            finished = self.running == 0
-        if finished:
-            self.done_mutex.release()
-
-
-class LockTests(lock_tests.LockTests):
-    locktype = thread.allocate_lock
-
-
-class TestForkInThread(unittest.TestCase):
-    def setUp(self):
-        self.read_fd, self.write_fd = os.pipe()
-
-    @unittest.skipIf(sys.platform.startswith('win'),
-                     "This test is only appropriate for POSIX-like systems.")
-    @test_support.reap_threads
-    def test_forkinthread(self):
-        def thread1():
-            try:
-                pid = os.fork() # fork in a thread
-            except RuntimeError:
-                sys.exit(0) # exit the child
-
-            if pid == 0: # child
-                os.close(self.read_fd)
-                os.write(self.write_fd, "OK")
-                sys.exit(0)
-            else: # parent
-                os.close(self.write_fd)
-
-        thread.start_new_thread(thread1, ())
-        self.assertEqual(os.read(self.read_fd, 2), "OK",
-                         "Unable to fork() in thread")
-
-    def tearDown(self):
-        try:
-            os.close(self.read_fd)
-        except OSError:
-            pass
-
-        try:
-            os.close(self.write_fd)
-        except OSError:
-            pass
-
-
-def test_main():
-    test_support.run_unittest(ThreadRunningTests, BarrierTest, LockTests,
-                              TestForkInThread)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threaded_import.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threaded_import.py
deleted file mode 100644
index 2bf0504..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threaded_import.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# This is a variant of the very old (early 90's) file
-# Demo/threads/bug.py.  It simply provokes a number of threads into
-# trying to import the same module "at the same time".
-# There are no pleasant failure modes -- most likely is that Python
-# complains several times about module random having no attribute
-# randrange, and then Python hangs.
-
-import unittest
-from test.test_support import verbose, TestFailed, import_module
-thread = import_module('thread')
-
-critical_section = thread.allocate_lock()
-done = thread.allocate_lock()
-
-def task():
-    global N, critical_section, done
-    import random
-    x = random.randrange(1, 3)
-    critical_section.acquire()
-    N -= 1
-    # Must release critical_section before releasing done, else the main
-    # thread can exit and set critical_section to None as part of global
-    # teardown; then critical_section.release() raises AttributeError.
-    finished = N == 0
-    critical_section.release()
-    if finished:
-        done.release()
-
-def test_import_hangers():
-    import sys
-    if verbose:
-        print "testing import hangers ...",
-
-    import test.threaded_import_hangers
-    try:
-        if test.threaded_import_hangers.errors:
-            raise TestFailed(test.threaded_import_hangers.errors)
-        elif verbose:
-            print "OK."
-    finally:
-        # In case this test is run again, make sure the helper module
-        # gets loaded from scratch again.
-        del sys.modules['test.threaded_import_hangers']
-
-# Tricky:  When regrtest imports this module, the thread running regrtest
-# grabs the import lock and won't let go of it until this module returns.
-# All other threads attempting an import hang for the duration.  Since
-# this test spawns threads that do little *but* import, we can't do that
-# successfully until after this module finishes importing and regrtest
-# regains control.  To make this work, a special case was added to
-# regrtest to invoke a module's "test_main" function (if any) after
-# importing it.
-
-def test_main():        # magic name!  see above
-    global N, done
-
-    import imp
-    if imp.lock_held():
-        # This triggers on, e.g., from test import autotest.
-        raise unittest.SkipTest("can't run when import lock is held")
-
-    done.acquire()
-    for N in (20, 50) * 3:
-        if verbose:
-            print "Trying", N, "threads ...",
-        for i in range(N):
-            thread.start_new_thread(task, ())
-        done.acquire()
-        if verbose:
-            print "OK."
-    done.release()
-
-    test_import_hangers()
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threadedtempfile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threadedtempfile.py
deleted file mode 100644
index d0ab6de..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threadedtempfile.py
+++ /dev/null
@@ -1,78 +0,0 @@
-"""
-Create and delete FILES_PER_THREAD temp files (via tempfile.TemporaryFile)
-in each of NUM_THREADS threads, recording the number of successes and
-failures.  A failure is a bug in tempfile, and may be due to:
-
-+ Trying to create more than one tempfile with the same name.
-+ Trying to delete a tempfile that doesn't still exist.
-+ Something we've never seen before.
-
-By default, NUM_THREADS == 20 and FILES_PER_THREAD == 50.  This is enough to
-create about 150 failures per run under Win98SE in 2.0, and runs pretty
-quickly. Guido reports needing to boost FILES_PER_THREAD to 500 before
-provoking a 2.0 failure under Linux.
-"""
-
-NUM_THREADS = 20
-FILES_PER_THREAD = 50
-
-import tempfile
-
-from test.test_support import threading_setup, threading_cleanup, run_unittest, import_module
-threading = import_module('threading')
-import unittest
-import StringIO
-from traceback import print_exc
-
-startEvent = threading.Event()
-
-class TempFileGreedy(threading.Thread):
-    error_count = 0
-    ok_count = 0
-
-    def run(self):
-        self.errors = StringIO.StringIO()
-        startEvent.wait()
-        for i in range(FILES_PER_THREAD):
-            try:
-                f = tempfile.TemporaryFile("w+b")
-                f.close()
-            except:
-                self.error_count += 1
-                print_exc(file=self.errors)
-            else:
-                self.ok_count += 1
-
-
-class ThreadedTempFileTest(unittest.TestCase):
-    def test_main(self):
-        threads = []
-        thread_info = threading_setup()
-
-        for i in range(NUM_THREADS):
-            t = TempFileGreedy()
-            threads.append(t)
-            t.start()
-
-        startEvent.set()
-
-        ok = 0
-        errors = []
-        for t in threads:
-            t.join()
-            ok += t.ok_count
-            if t.error_count:
-                errors.append(str(t.getName()) + str(t.errors.getvalue()))
-
-        threading_cleanup(*thread_info)
-
-        msg = "Errors: errors %d ok %d\n%s" % (len(errors), ok,
-            '\n'.join(errors))
-        self.assertEqual(errors, [], msg)
-        self.assertEqual(ok, NUM_THREADS * FILES_PER_THREAD)
-
-def test_main():
-    run_unittest(ThreadedTempFileTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threading.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threading.py
deleted file mode 100644
index 939e11b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threading.py
+++ /dev/null
@@ -1,734 +0,0 @@
-# Very rudimentary test of threading module
-
-import test.test_support
-from test.test_support import verbose
-import random
-import re
-import sys
-thread = test.test_support.import_module('thread')
-threading = test.test_support.import_module('threading')
-import time
-import unittest
-import weakref
-import os
-import subprocess
-
-from test import lock_tests
-
-# A trivial mutable counter.
-class Counter(object):
-    def __init__(self):
-        self.value = 0
-    def inc(self):
-        self.value += 1
-    def dec(self):
-        self.value -= 1
-    def get(self):
-        return self.value
-
-class TestThread(threading.Thread):
-    def __init__(self, name, testcase, sema, mutex, nrunning):
-        threading.Thread.__init__(self, name=name)
-        self.testcase = testcase
-        self.sema = sema
-        self.mutex = mutex
-        self.nrunning = nrunning
-
-    def run(self):
-        delay = random.random() / 10000.0
-        if verbose:
-            print 'task %s will run for %.1f usec' % (
-                self.name, delay * 1e6)
-
-        with self.sema:
-            with self.mutex:
-                self.nrunning.inc()
-                if verbose:
-                    print self.nrunning.get(), 'tasks are running'
-                self.testcase.assertTrue(self.nrunning.get() <= 3)
-
-            time.sleep(delay)
-            if verbose:
-                print 'task', self.name, 'done'
-
-            with self.mutex:
-                self.nrunning.dec()
-                self.testcase.assertTrue(self.nrunning.get() >= 0)
-                if verbose:
-                    print '%s is finished. %d tasks are running' % (
-                        self.name, self.nrunning.get())
-
-class BaseTestCase(unittest.TestCase):
-    def setUp(self):
-        self._threads = test.test_support.threading_setup()
-
-    def tearDown(self):
-        test.test_support.threading_cleanup(*self._threads)
-        test.test_support.reap_children()
-
-
-class ThreadTests(BaseTestCase):
-
-    # Create a bunch of threads, let each do some work, wait until all are
-    # done.
-    def test_various_ops(self):
-        # This takes about n/3 seconds to run (about n/3 clumps of tasks,
-        # times about 1 second per clump).
-        NUMTASKS = 10
-
-        # no more than 3 of the 10 can run at once
-        sema = threading.BoundedSemaphore(value=3)
-        mutex = threading.RLock()
-        numrunning = Counter()
-
-        threads = []
-
-        for i in range(NUMTASKS):
-            t = TestThread("<thread %d>"%i, self, sema, mutex, numrunning)
-            threads.append(t)
-            self.assertEqual(t.ident, None)
-            self.assertTrue(re.match('<TestThread\(.*, initial\)>', repr(t)))
-            t.start()
-
-        if verbose:
-            print 'waiting for all tasks to complete'
-        for t in threads:
-            t.join(NUMTASKS)
-            self.assertTrue(not t.is_alive())
-            self.assertNotEqual(t.ident, 0)
-            self.assertFalse(t.ident is None)
-            self.assertTrue(re.match('<TestThread\(.*, \w+ -?\d+\)>', repr(t)))
-        if verbose:
-            print 'all tasks done'
-        self.assertEqual(numrunning.get(), 0)
-
-    def test_ident_of_no_threading_threads(self):
-        # The ident still must work for the main thread and dummy threads.
-        self.assertFalse(threading.currentThread().ident is None)
-        def f():
-            ident.append(threading.currentThread().ident)
-            done.set()
-        done = threading.Event()
-        ident = []
-        thread.start_new_thread(f, ())
-        done.wait()
-        self.assertFalse(ident[0] is None)
-        # Kill the "immortal" _DummyThread
-        del threading._active[ident[0]]
-
-    # run with a small(ish) thread stack size (256kB)
-    def test_various_ops_small_stack(self):
-        if verbose:
-            print 'with 256kB thread stack size...'
-        try:
-            threading.stack_size(262144)
-        except thread.error:
-            if verbose:
-                print 'platform does not support changing thread stack size'
-            return
-        self.test_various_ops()
-        threading.stack_size(0)
-
-    # run with a large thread stack size (1MB)
-    def test_various_ops_large_stack(self):
-        if verbose:
-            print 'with 1MB thread stack size...'
-        try:
-            threading.stack_size(0x100000)
-        except thread.error:
-            if verbose:
-                print 'platform does not support changing thread stack size'
-            return
-        self.test_various_ops()
-        threading.stack_size(0)
-
-    def test_foreign_thread(self):
-        # Check that a "foreign" thread can use the threading module.
-        def f(mutex):
-            # Calling current_thread() forces an entry for the foreign
-            # thread to get made in the threading._active map.
-            threading.current_thread()
-            mutex.release()
-
-        mutex = threading.Lock()
-        mutex.acquire()
-        tid = thread.start_new_thread(f, (mutex,))
-        # Wait for the thread to finish.
-        mutex.acquire()
-        self.assertIn(tid, threading._active)
-        self.assertIsInstance(threading._active[tid], threading._DummyThread)
-        del threading._active[tid]
-
-    # PyThreadState_SetAsyncExc() is a CPython-only gimmick, not (currently)
-    # exposed at the Python level.  This test relies on ctypes to get at it.
-    def test_PyThreadState_SetAsyncExc(self):
-        try:
-            import ctypes
-        except ImportError:
-            if verbose:
-                print "test_PyThreadState_SetAsyncExc can't import ctypes"
-            return  # can't do anything
-
-        set_async_exc = ctypes.pythonapi.PyThreadState_SetAsyncExc
-
-        class AsyncExc(Exception):
-            pass
-
-        exception = ctypes.py_object(AsyncExc)
-
-        # First check it works when setting the exception from the same thread.
-        tid = thread.get_ident()
-
-        try:
-            result = set_async_exc(ctypes.c_long(tid), exception)
-            # The exception is async, so we might have to keep the VM busy until
-            # it notices.
-            while True:
-                pass
-        except AsyncExc:
-            pass
-        else:
-            # This code is unreachable but it reflects the intent. If we wanted
-            # to be smarter the above loop wouldn't be infinite.
-            self.fail("AsyncExc not raised")
-        try:
-            self.assertEqual(result, 1) # one thread state modified
-        except UnboundLocalError:
-            # The exception was raised too quickly for us to get the result.
-            pass
-
-        # `worker_started` is set by the thread when it's inside a try/except
-        # block waiting to catch the asynchronously set AsyncExc exception.
-        # `worker_saw_exception` is set by the thread upon catching that
-        # exception.
-        worker_started = threading.Event()
-        worker_saw_exception = threading.Event()
-
-        class Worker(threading.Thread):
-            def run(self):
-                self.id = thread.get_ident()
-                self.finished = False
-
-                try:
-                    while True:
-                        worker_started.set()
-                        time.sleep(0.1)
-                except AsyncExc:
-                    self.finished = True
-                    worker_saw_exception.set()
-
-        t = Worker()
-        t.daemon = True # so if this fails, we don't hang Python at shutdown
-        t.start()
-        if verbose:
-            print "    started worker thread"
-
-        # Try a thread id that doesn't make sense.
-        if verbose:
-            print "    trying nonsensical thread id"
-        result = set_async_exc(ctypes.c_long(-1), exception)
-        self.assertEqual(result, 0)  # no thread states modified
-
-        # Now raise an exception in the worker thread.
-        if verbose:
-            print "    waiting for worker thread to get started"
-        ret = worker_started.wait()
-        self.assertTrue(ret)
-        if verbose:
-            print "    verifying worker hasn't exited"
-        self.assertTrue(not t.finished)
-        if verbose:
-            print "    attempting to raise asynch exception in worker"
-        result = set_async_exc(ctypes.c_long(t.id), exception)
-        self.assertEqual(result, 1) # one thread state modified
-        if verbose:
-            print "    waiting for worker to say it caught the exception"
-        worker_saw_exception.wait(timeout=10)
-        self.assertTrue(t.finished)
-        if verbose:
-            print "    all OK -- joining worker"
-        if t.finished:
-            t.join()
-        # else the thread is still running, and we have no way to kill it
-
-    def test_limbo_cleanup(self):
-        # Issue 7481: Failure to start thread should cleanup the limbo map.
-        def fail_new_thread(*args):
-            raise thread.error()
-        _start_new_thread = threading._start_new_thread
-        threading._start_new_thread = fail_new_thread
-        try:
-            t = threading.Thread(target=lambda: None)
-            self.assertRaises(thread.error, t.start)
-            self.assertFalse(
-                t in threading._limbo,
-                "Failed to cleanup _limbo map on failure of Thread.start().")
-        finally:
-            threading._start_new_thread = _start_new_thread
-
-    def test_finalize_runnning_thread(self):
-        # Issue 1402: the PyGILState_Ensure / _Release functions may be called
-        # very late on python exit: on deallocation of a running thread for
-        # example.
-        try:
-            import ctypes
-        except ImportError:
-            if verbose:
-                print("test_finalize_with_runnning_thread can't import ctypes")
-            return  # can't do anything
-
-        rc = subprocess.call([sys.executable, "-c", """if 1:
-            import ctypes, sys, time, thread
-
-            # This lock is used as a simple event variable.
-            ready = thread.allocate_lock()
-            ready.acquire()
-
-            # Module globals are cleared before __del__ is run
-            # So we save the functions in class dict
-            class C:
-                ensure = ctypes.pythonapi.PyGILState_Ensure
-                release = ctypes.pythonapi.PyGILState_Release
-                def __del__(self):
-                    state = self.ensure()
-                    self.release(state)
-
-            def waitingThread():
-                x = C()
-                ready.release()
-                time.sleep(100)
-
-            thread.start_new_thread(waitingThread, ())
-            ready.acquire()  # Be sure the other thread is waiting.
-            sys.exit(42)
-            """])
-        self.assertEqual(rc, 42)
-
-    def test_finalize_with_trace(self):
-        # Issue1733757
-        # Avoid a deadlock when sys.settrace steps into threading._shutdown
-        p = subprocess.Popen([sys.executable, "-c", """if 1:
-            import sys, threading
-
-            # A deadlock-killer, to prevent the
-            # testsuite to hang forever
-            def killer():
-                import os, time
-                time.sleep(2)
-                print 'program blocked; aborting'
-                os._exit(2)
-            t = threading.Thread(target=killer)
-            t.daemon = True
-            t.start()
-
-            # This is the trace function
-            def func(frame, event, arg):
-                threading.current_thread()
-                return func
-
-            sys.settrace(func)
-            """],
-            stdout=subprocess.PIPE,
-            stderr=subprocess.PIPE)
-        self.addCleanup(p.stdout.close)
-        self.addCleanup(p.stderr.close)
-        stdout, stderr = p.communicate()
-        rc = p.returncode
-        self.assertFalse(rc == 2, "interpreted was blocked")
-        self.assertTrue(rc == 0,
-                        "Unexpected error: " + repr(stderr))
-
-    def test_join_nondaemon_on_shutdown(self):
-        # Issue 1722344
-        # Raising SystemExit skipped threading._shutdown
-        p = subprocess.Popen([sys.executable, "-c", """if 1:
-                import threading
-                from time import sleep
-
-                def child():
-                    sleep(1)
-                    # As a non-daemon thread we SHOULD wake up and nothing
-                    # should be torn down yet
-                    print "Woke up, sleep function is:", sleep
-
-                threading.Thread(target=child).start()
-                raise SystemExit
-            """],
-            stdout=subprocess.PIPE,
-            stderr=subprocess.PIPE)
-        self.addCleanup(p.stdout.close)
-        self.addCleanup(p.stderr.close)
-        stdout, stderr = p.communicate()
-        self.assertEqual(stdout.strip(),
-            "Woke up, sleep function is: <built-in function sleep>")
-        stderr = re.sub(r"^\[\d+ refs\]", "", stderr, re.MULTILINE).strip()
-        self.assertEqual(stderr, "")
-
-    def test_enumerate_after_join(self):
-        # Try hard to trigger #1703448: a thread is still returned in
-        # threading.enumerate() after it has been join()ed.
-        enum = threading.enumerate
-        old_interval = sys.getcheckinterval()
-        try:
-            for i in xrange(1, 100):
-                # Try a couple times at each thread-switching interval
-                # to get more interleavings.
-                sys.setcheckinterval(i // 5)
-                t = threading.Thread(target=lambda: None)
-                t.start()
-                t.join()
-                l = enum()
-                self.assertNotIn(t, l,
-                    "#1703448 triggered after %d trials: %s" % (i, l))
-        finally:
-            sys.setcheckinterval(old_interval)
-
-    def test_no_refcycle_through_target(self):
-        class RunSelfFunction(object):
-            def __init__(self, should_raise):
-                # The links in this refcycle from Thread back to self
-                # should be cleaned up when the thread completes.
-                self.should_raise = should_raise
-                self.thread = threading.Thread(target=self._run,
-                                               args=(self,),
-                                               kwargs={'yet_another':self})
-                self.thread.start()
-
-            def _run(self, other_ref, yet_another):
-                if self.should_raise:
-                    raise SystemExit
-
-        cyclic_object = RunSelfFunction(should_raise=False)
-        weak_cyclic_object = weakref.ref(cyclic_object)
-        cyclic_object.thread.join()
-        del cyclic_object
-        self.assertEqual(None, weak_cyclic_object(),
-                         msg=('%d references still around' %
-                              sys.getrefcount(weak_cyclic_object())))
-
-        raising_cyclic_object = RunSelfFunction(should_raise=True)
-        weak_raising_cyclic_object = weakref.ref(raising_cyclic_object)
-        raising_cyclic_object.thread.join()
-        del raising_cyclic_object
-        self.assertEqual(None, weak_raising_cyclic_object(),
-                         msg=('%d references still around' %
-                              sys.getrefcount(weak_raising_cyclic_object())))
-
-
-class ThreadJoinOnShutdown(BaseTestCase):
-
-    def _run_and_join(self, script):
-        script = """if 1:
-            import sys, os, time, threading
-
-            # a thread, which waits for the main program to terminate
-            def joiningfunc(mainthread):
-                mainthread.join()
-                print 'end of thread'
-        \n""" + script
-
-        p = subprocess.Popen([sys.executable, "-c", script], stdout=subprocess.PIPE)
-        rc = p.wait()
-        data = p.stdout.read().replace('\r', '')
-        p.stdout.close()
-        self.assertEqual(data, "end of main\nend of thread\n")
-        self.assertFalse(rc == 2, "interpreter was blocked")
-        self.assertTrue(rc == 0, "Unexpected error")
-
-    def test_1_join_on_shutdown(self):
-        # The usual case: on exit, wait for a non-daemon thread
-        script = """if 1:
-            import os
-            t = threading.Thread(target=joiningfunc,
-                                 args=(threading.current_thread(),))
-            t.start()
-            time.sleep(0.1)
-            print 'end of main'
-            """
-        self._run_and_join(script)
-
-
-    def test_2_join_in_forked_process(self):
-        # Like the test above, but from a forked interpreter
-        import os
-        if not hasattr(os, 'fork'):
-            return
-        script = """if 1:
-            childpid = os.fork()
-            if childpid != 0:
-                os.waitpid(childpid, 0)
-                sys.exit(0)
-
-            t = threading.Thread(target=joiningfunc,
-                                 args=(threading.current_thread(),))
-            t.start()
-            print 'end of main'
-            """
-        self._run_and_join(script)
-
-    def test_3_join_in_forked_from_thread(self):
-        # Like the test above, but fork() was called from a worker thread
-        # In the forked process, the main Thread object must be marked as stopped.
-        import os
-        if not hasattr(os, 'fork'):
-            return
-        # Skip platforms with known problems forking from a worker thread.
-        # See http://bugs.python.org/issue3863.
-        if sys.platform in ('freebsd4', 'freebsd5', 'freebsd6', 'netbsd5',
-                           'os2emx'):
-            print >>sys.stderr, ('Skipping test_3_join_in_forked_from_thread'
-                                 ' due to known OS bugs on'), sys.platform
-            return
-        script = """if 1:
-            main_thread = threading.current_thread()
-            def worker():
-                childpid = os.fork()
-                if childpid != 0:
-                    os.waitpid(childpid, 0)
-                    sys.exit(0)
-
-                t = threading.Thread(target=joiningfunc,
-                                     args=(main_thread,))
-                print 'end of main'
-                t.start()
-                t.join() # Should not block: main_thread is already stopped
-
-            w = threading.Thread(target=worker)
-            w.start()
-            """
-        self._run_and_join(script)
-
-    def assertScriptHasOutput(self, script, expected_output):
-        p = subprocess.Popen([sys.executable, "-c", script],
-                             stdout=subprocess.PIPE)
-        rc = p.wait()
-        data = p.stdout.read().decode().replace('\r', '')
-        self.assertEqual(rc, 0, "Unexpected error")
-        self.assertEqual(data, expected_output)
-
-    @unittest.skipUnless(hasattr(os, 'fork'), "needs os.fork()")
-    def test_4_joining_across_fork_in_worker_thread(self):
-        # There used to be a possible deadlock when forking from a child
-        # thread.  See http://bugs.python.org/issue6643.
-
-        # Skip platforms with known problems forking from a worker thread.
-        # See http://bugs.python.org/issue3863.
-        if sys.platform in ('freebsd4', 'freebsd5', 'freebsd6', 'os2emx'):
-            raise unittest.SkipTest('due to known OS bugs on ' + sys.platform)
-
-        # The script takes the following steps:
-        # - The main thread in the parent process starts a new thread and then
-        #   tries to join it.
-        # - The join operation acquires the Lock inside the thread's _block
-        #   Condition.  (See threading.py:Thread.join().)
-        # - We stub out the acquire method on the condition to force it to wait
-        #   until the child thread forks.  (See LOCK ACQUIRED HERE)
-        # - The child thread forks.  (See LOCK HELD and WORKER THREAD FORKS
-        #   HERE)
-        # - The main thread of the parent process enters Condition.wait(),
-        #   which releases the lock on the child thread.
-        # - The child process returns.  Without the necessary fix, when the
-        #   main thread of the child process (which used to be the child thread
-        #   in the parent process) attempts to exit, it will try to acquire the
-        #   lock in the Thread._block Condition object and hang, because the
-        #   lock was held across the fork.
-
-        script = """if 1:
-            import os, time, threading
-
-            finish_join = False
-            start_fork = False
-
-            def worker():
-                # Wait until this thread's lock is acquired before forking to
-                # create the deadlock.
-                global finish_join
-                while not start_fork:
-                    time.sleep(0.01)
-                # LOCK HELD: Main thread holds lock across this call.
-                childpid = os.fork()
-                finish_join = True
-                if childpid != 0:
-                    # Parent process just waits for child.
-                    os.waitpid(childpid, 0)
-                # Child process should just return.
-
-            w = threading.Thread(target=worker)
-
-            # Stub out the private condition variable's lock acquire method.
-            # This acquires the lock and then waits until the child has forked
-            # before returning, which will release the lock soon after.  If
-            # someone else tries to fix this test case by acquiring this lock
-            # before forking instead of resetting it, the test case will
-            # deadlock when it shouldn't.
-            condition = w._block
-            orig_acquire = condition.acquire
-            call_count_lock = threading.Lock()
-            call_count = 0
-            def my_acquire():
-                global call_count
-                global start_fork
-                orig_acquire()  # LOCK ACQUIRED HERE
-                start_fork = True
-                if call_count == 0:
-                    while not finish_join:
-                        time.sleep(0.01)  # WORKER THREAD FORKS HERE
-                with call_count_lock:
-                    call_count += 1
-            condition.acquire = my_acquire
-
-            w.start()
-            w.join()
-            print('end of main')
-            """
-        self.assertScriptHasOutput(script, "end of main\n")
-
-    @unittest.skipUnless(hasattr(os, 'fork'), "needs os.fork()")
-    def test_5_clear_waiter_locks_to_avoid_crash(self):
-        # Check that a spawned thread that forks doesn't segfault on certain
-        # platforms, namely OS X.  This used to happen if there was a waiter
-        # lock in the thread's condition variable's waiters list.  Even though
-        # we know the lock will be held across the fork, it is not safe to
-        # release locks held across forks on all platforms, so releasing the
-        # waiter lock caused a segfault on OS X.  Furthermore, since locks on
-        # OS X are (as of this writing) implemented with a mutex + condition
-        # variable instead of a semaphore, while we know that the Python-level
-        # lock will be acquired, we can't know if the internal mutex will be
-        # acquired at the time of the fork.
-
-        # Skip platforms with known problems forking from a worker thread.
-        # See http://bugs.python.org/issue3863.
-        if sys.platform in ('freebsd4', 'freebsd5', 'freebsd6', 'os2emx'):
-            raise unittest.SkipTest('due to known OS bugs on ' + sys.platform)
-        script = """if True:
-            import os, time, threading
-
-            start_fork = False
-
-            def worker():
-                # Wait until the main thread has attempted to join this thread
-                # before continuing.
-                while not start_fork:
-                    time.sleep(0.01)
-                childpid = os.fork()
-                if childpid != 0:
-                    # Parent process just waits for child.
-                    (cpid, rc) = os.waitpid(childpid, 0)
-                    assert cpid == childpid
-                    assert rc == 0
-                    print('end of worker thread')
-                else:
-                    # Child process should just return.
-                    pass
-
-            w = threading.Thread(target=worker)
-
-            # Stub out the private condition variable's _release_save method.
-            # This releases the condition's lock and flips the global that
-            # causes the worker to fork.  At this point, the problematic waiter
-            # lock has been acquired once by the waiter and has been put onto
-            # the waiters list.
-            condition = w._block
-            orig_release_save = condition._release_save
-            def my_release_save():
-                global start_fork
-                orig_release_save()
-                # Waiter lock held here, condition lock released.
-                start_fork = True
-            condition._release_save = my_release_save
-
-            w.start()
-            w.join()
-            print('end of main thread')
-            """
-        output = "end of worker thread\nend of main thread\n"
-        self.assertScriptHasOutput(script, output)
-
-
-class ThreadingExceptionTests(BaseTestCase):
-    # A RuntimeError should be raised if Thread.start() is called
-    # multiple times.
-    def test_start_thread_again(self):
-        thread = threading.Thread()
-        thread.start()
-        self.assertRaises(RuntimeError, thread.start)
-
-    def test_joining_current_thread(self):
-        current_thread = threading.current_thread()
-        self.assertRaises(RuntimeError, current_thread.join);
-
-    def test_joining_inactive_thread(self):
-        thread = threading.Thread()
-        self.assertRaises(RuntimeError, thread.join)
-
-    def test_daemonize_active_thread(self):
-        thread = threading.Thread()
-        thread.start()
-        self.assertRaises(RuntimeError, setattr, thread, "daemon", True)
-
-
-class LockTests(lock_tests.LockTests):
-    locktype = staticmethod(threading.Lock)
-
-class RLockTests(lock_tests.RLockTests):
-    locktype = staticmethod(threading.RLock)
-
-class EventTests(lock_tests.EventTests):
-    eventtype = staticmethod(threading.Event)
-
-class ConditionAsRLockTests(lock_tests.RLockTests):
-    # An Condition uses an RLock by default and exports its API.
-    locktype = staticmethod(threading.Condition)
-
-class ConditionTests(lock_tests.ConditionTests):
-    condtype = staticmethod(threading.Condition)
-
-class SemaphoreTests(lock_tests.SemaphoreTests):
-    semtype = staticmethod(threading.Semaphore)
-
-class BoundedSemaphoreTests(lock_tests.BoundedSemaphoreTests):
-    semtype = staticmethod(threading.BoundedSemaphore)
-
-    @unittest.skipUnless(sys.platform == 'darwin', 'test macosx problem')
-    def test_recursion_limit(self):
-        # Issue 9670
-        # test that excessive recursion within a non-main thread causes
-        # an exception rather than crashing the interpreter on platforms
-        # like Mac OS X or FreeBSD which have small default stack sizes
-        # for threads
-        script = """if True:
-            import threading
-
-            def recurse():
-                return recurse()
-
-            def outer():
-                try:
-                    recurse()
-                except RuntimeError:
-                    pass
-
-            w = threading.Thread(target=outer)
-            w.start()
-            w.join()
-            print('end of main thread')
-            """
-        expected_output = "end of main thread\n"
-        p = subprocess.Popen([sys.executable, "-c", script],
-                             stdout=subprocess.PIPE)
-        stdout, stderr = p.communicate()
-        data = stdout.decode().replace('\r', '')
-        self.assertEqual(p.returncode, 0, "Unexpected error")
-        self.assertEqual(data, expected_output)
-
-def test_main():
-    test.test_support.run_unittest(LockTests, RLockTests, EventTests,
-                                   ConditionAsRLockTests, ConditionTests,
-                                   SemaphoreTests, BoundedSemaphoreTests,
-                                   ThreadTests,
-                                   ThreadJoinOnShutdown,
-                                   ThreadingExceptionTests,
-                                   )
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threading_local.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threading_local.py
deleted file mode 100644
index 34347c9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threading_local.py
+++ /dev/null
@@ -1,234 +0,0 @@
-import unittest
-from doctest import DocTestSuite
-from test import test_support
-import weakref
-import gc
-
-# Modules under test
-_thread = test_support.import_module('thread')
-threading = test_support.import_module('threading')
-import _threading_local
-
-
-class Weak(object):
-    pass
-
-def target(local, weaklist):
-    weak = Weak()
-    local.weak = weak
-    weaklist.append(weakref.ref(weak))
-
-class BaseLocalTest:
-
-    def test_local_refs(self):
-        self._local_refs(20)
-        self._local_refs(50)
-        self._local_refs(100)
-
-    def _local_refs(self, n):
-        local = self._local()
-        weaklist = []
-        for i in range(n):
-            t = threading.Thread(target=target, args=(local, weaklist))
-            t.start()
-            t.join()
-        del t
-
-        gc.collect()
-        self.assertEqual(len(weaklist), n)
-
-        # XXX _threading_local keeps the local of the last stopped thread alive.
-        deadlist = [weak for weak in weaklist if weak() is None]
-        self.assertIn(len(deadlist), (n-1, n))
-
-        # Assignment to the same thread local frees it sometimes (!)
-        local.someothervar = None
-        gc.collect()
-        deadlist = [weak for weak in weaklist if weak() is None]
-        self.assertIn(len(deadlist), (n-1, n), (n, len(deadlist)))
-
-    def test_derived(self):
-        # Issue 3088: if there is a threads switch inside the __init__
-        # of a threading.local derived class, the per-thread dictionary
-        # is created but not correctly set on the object.
-        # The first member set may be bogus.
-        import time
-        class Local(self._local):
-            def __init__(self):
-                time.sleep(0.01)
-        local = Local()
-
-        def f(i):
-            local.x = i
-            # Simply check that the variable is correctly set
-            self.assertEqual(local.x, i)
-
-        threads= []
-        for i in range(10):
-            t = threading.Thread(target=f, args=(i,))
-            t.start()
-            threads.append(t)
-
-        for t in threads:
-            t.join()
-
-    def test_derived_cycle_dealloc(self):
-        # http://bugs.python.org/issue6990
-        class Local(self._local):
-            pass
-        locals = None
-        passed = [False]
-        e1 = threading.Event()
-        e2 = threading.Event()
-
-        def f():
-            # 1) Involve Local in a cycle
-            cycle = [Local()]
-            cycle.append(cycle)
-            cycle[0].foo = 'bar'
-
-            # 2) GC the cycle (triggers threadmodule.c::local_clear
-            # before local_dealloc)
-            del cycle
-            gc.collect()
-            e1.set()
-            e2.wait()
-
-            # 4) New Locals should be empty
-            passed[0] = all(not hasattr(local, 'foo') for local in locals)
-
-        t = threading.Thread(target=f)
-        t.start()
-        e1.wait()
-
-        # 3) New Locals should recycle the original's address. Creating
-        # them in the thread overwrites the thread state and avoids the
-        # bug
-        locals = [Local() for i in range(10)]
-        e2.set()
-        t.join()
-
-        self.assertTrue(passed[0])
-
-    def test_arguments(self):
-        # Issue 1522237
-        from thread import _local as local
-        from _threading_local import local as py_local
-
-        for cls in (local, py_local):
-            class MyLocal(cls):
-                def __init__(self, *args, **kwargs):
-                    pass
-
-            MyLocal(a=1)
-            MyLocal(1)
-            self.assertRaises(TypeError, cls, a=1)
-            self.assertRaises(TypeError, cls, 1)
-
-    def _test_one_class(self, c):
-        self._failed = "No error message set or cleared."
-        obj = c()
-        e1 = threading.Event()
-        e2 = threading.Event()
-
-        def f1():
-            obj.x = 'foo'
-            obj.y = 'bar'
-            del obj.y
-            e1.set()
-            e2.wait()
-
-        def f2():
-            try:
-                foo = obj.x
-            except AttributeError:
-                # This is expected -- we haven't set obj.x in this thread yet!
-                self._failed = ""  # passed
-            else:
-                self._failed = ('Incorrectly got value %r from class %r\n' %
-                                (foo, c))
-                sys.stderr.write(self._failed)
-
-        t1 = threading.Thread(target=f1)
-        t1.start()
-        e1.wait()
-        t2 = threading.Thread(target=f2)
-        t2.start()
-        t2.join()
-        # The test is done; just let t1 know it can exit, and wait for it.
-        e2.set()
-        t1.join()
-
-        self.assertFalse(self._failed, self._failed)
-
-    def test_threading_local(self):
-        self._test_one_class(self._local)
-
-    def test_threading_local_subclass(self):
-        class LocalSubclass(self._local):
-            """To test that subclasses behave properly."""
-        self._test_one_class(LocalSubclass)
-
-    def _test_dict_attribute(self, cls):
-        obj = cls()
-        obj.x = 5
-        self.assertEqual(obj.__dict__, {'x': 5})
-        with self.assertRaises(AttributeError):
-            obj.__dict__ = {}
-        with self.assertRaises(AttributeError):
-            del obj.__dict__
-
-    def test_dict_attribute(self):
-        self._test_dict_attribute(self._local)
-
-    def test_dict_attribute_subclass(self):
-        class LocalSubclass(self._local):
-            """To test that subclasses behave properly."""
-        self._test_dict_attribute(LocalSubclass)
-
-
-class ThreadLocalTest(unittest.TestCase, BaseLocalTest):
-    _local = _thread._local
-
-    # Fails for the pure Python implementation
-    def test_cycle_collection(self):
-        class X:
-            pass
-
-        x = X()
-        x.local = self._local()
-        x.local.x = x
-        wr = weakref.ref(x)
-        del x
-        gc.collect()
-        self.assertIs(wr(), None)
-
-class PyThreadingLocalTest(unittest.TestCase, BaseLocalTest):
-    _local = _threading_local.local
-
-
-def test_main():
-    suite = unittest.TestSuite()
-    suite.addTest(DocTestSuite('_threading_local'))
-    suite.addTest(unittest.makeSuite(ThreadLocalTest))
-    suite.addTest(unittest.makeSuite(PyThreadingLocalTest))
-
-    try:
-        from thread import _local
-    except ImportError:
-        pass
-    else:
-        import _threading_local
-        local_orig = _threading_local.local
-        def setUp(test):
-            _threading_local.local = _local
-        def tearDown(test):
-            _threading_local.local = local_orig
-        suite.addTest(DocTestSuite('_threading_local',
-                                   setUp=setUp, tearDown=tearDown)
-                      )
-
-    test_support.run_unittest(suite)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threadsignals.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threadsignals.py
deleted file mode 100644
index 5feb36b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_threadsignals.py
+++ /dev/null
@@ -1,85 +0,0 @@
-"""PyUnit testing that threads honor our signal semantics"""
-
-import unittest
-import signal
-import os
-import sys
-from test.test_support import run_unittest, import_module, reap_threads
-thread = import_module('thread')
-
-if sys.platform[:3] in ('win', 'os2') or sys.platform=='riscos':
-    raise unittest.SkipTest, "Can't test signal on %s" % sys.platform
-
-process_pid = os.getpid()
-signalled_all=thread.allocate_lock()
-
-
-def registerSignals(for_usr1, for_usr2, for_alrm):
-    usr1 = signal.signal(signal.SIGUSR1, for_usr1)
-    usr2 = signal.signal(signal.SIGUSR2, for_usr2)
-    alrm = signal.signal(signal.SIGALRM, for_alrm)
-    return usr1, usr2, alrm
-
-
-# The signal handler. Just note that the signal occurred and
-# from who.
-def handle_signals(sig,frame):
-    signal_blackboard[sig]['tripped'] += 1
-    signal_blackboard[sig]['tripped_by'] = thread.get_ident()
-
-# a function that will be spawned as a separate thread.
-def send_signals():
-    os.kill(process_pid, signal.SIGUSR1)
-    os.kill(process_pid, signal.SIGUSR2)
-    signalled_all.release()
-
-class ThreadSignals(unittest.TestCase):
-    """Test signal handling semantics of threads.
-       We spawn a thread, have the thread send two signals, and
-       wait for it to finish. Check that we got both signals
-       and that they were run by the main thread.
-    """
-    @reap_threads
-    def test_signals(self):
-        signalled_all.acquire()
-        self.spawnSignallingThread()
-        signalled_all.acquire()
-        # the signals that we asked the kernel to send
-        # will come back, but we don't know when.
-        # (it might even be after the thread exits
-        # and might be out of order.)  If we haven't seen
-        # the signals yet, send yet another signal and
-        # wait for it return.
-        if signal_blackboard[signal.SIGUSR1]['tripped'] == 0 \
-           or signal_blackboard[signal.SIGUSR2]['tripped'] == 0:
-            signal.alarm(1)
-            signal.pause()
-            signal.alarm(0)
-
-        self.assertEqual( signal_blackboard[signal.SIGUSR1]['tripped'], 1)
-        self.assertEqual( signal_blackboard[signal.SIGUSR1]['tripped_by'],
-                           thread.get_ident())
-        self.assertEqual( signal_blackboard[signal.SIGUSR2]['tripped'], 1)
-        self.assertEqual( signal_blackboard[signal.SIGUSR2]['tripped_by'],
-                           thread.get_ident())
-        signalled_all.release()
-
-    def spawnSignallingThread(self):
-        thread.start_new_thread(send_signals, ())
-
-
-def test_main():
-    global signal_blackboard
-
-    signal_blackboard = { signal.SIGUSR1 : {'tripped': 0, 'tripped_by': 0 },
-                          signal.SIGUSR2 : {'tripped': 0, 'tripped_by': 0 },
-                          signal.SIGALRM : {'tripped': 0, 'tripped_by': 0 } }
-
-    oldsigs = registerSignals(handle_signals, handle_signals, handle_signals)
-    try:
-        run_unittest(ThreadSignals)
-    finally:
-        registerSignals(*oldsigs)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_time.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_time.py
deleted file mode 100644
index 5e79b7b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_time.py
+++ /dev/null
@@ -1,250 +0,0 @@
-from test import test_support
-import time
-import unittest
-import sys
-
-
-class TimeTestCase(unittest.TestCase):
-
-    def setUp(self):
-        self.t = time.time()
-
-    def test_data_attributes(self):
-        time.altzone
-        time.daylight
-        time.timezone
-        time.tzname
-
-    def test_clock(self):
-        time.clock()
-
-    def test_conversions(self):
-        self.assertTrue(time.ctime(self.t)
-                     == time.asctime(time.localtime(self.t)))
-        self.assertTrue(long(time.mktime(time.localtime(self.t)))
-                     == long(self.t))
-
-    def test_sleep(self):
-        time.sleep(1.2)
-
-    def test_strftime(self):
-        tt = time.gmtime(self.t)
-        for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'H', 'I',
-                          'j', 'm', 'M', 'p', 'S',
-                          'U', 'w', 'W', 'x', 'X', 'y', 'Y', 'Z', '%'):
-            format = ' %' + directive
-            try:
-                time.strftime(format, tt)
-            except ValueError:
-                self.fail('conversion specifier: %r failed.' % format)
-
-        # Issue #10762: Guard against invalid/non-supported format string
-        # so that Python don't crash (Windows crashes when the format string
-        # input to [w]strftime is not kosher.
-        if sys.platform.startswith('win'):
-            with self.assertRaises(ValueError):
-                time.strftime('%f')
-
-    def test_strftime_bounds_checking(self):
-        # Make sure that strftime() checks the bounds of the various parts
-        #of the time tuple (0 is valid for *all* values).
-
-        # Check year [1900, max(int)]
-        self.assertRaises(ValueError, time.strftime, '',
-                            (1899, 1, 1, 0, 0, 0, 0, 1, -1))
-        if time.accept2dyear:
-            self.assertRaises(ValueError, time.strftime, '',
-                                (-1, 1, 1, 0, 0, 0, 0, 1, -1))
-            self.assertRaises(ValueError, time.strftime, '',
-                                (100, 1, 1, 0, 0, 0, 0, 1, -1))
-        # Check month [1, 12] + zero support
-        self.assertRaises(ValueError, time.strftime, '',
-                            (1900, -1, 1, 0, 0, 0, 0, 1, -1))
-        self.assertRaises(ValueError, time.strftime, '',
-                            (1900, 13, 1, 0, 0, 0, 0, 1, -1))
-        # Check day of month [1, 31] + zero support
-        self.assertRaises(ValueError, time.strftime, '',
-                            (1900, 1, -1, 0, 0, 0, 0, 1, -1))
-        self.assertRaises(ValueError, time.strftime, '',
-                            (1900, 1, 32, 0, 0, 0, 0, 1, -1))
-        # Check hour [0, 23]
-        self.assertRaises(ValueError, time.strftime, '',
-                            (1900, 1, 1, -1, 0, 0, 0, 1, -1))
-        self.assertRaises(ValueError, time.strftime, '',
-                            (1900, 1, 1, 24, 0, 0, 0, 1, -1))
-        # Check minute [0, 59]
-        self.assertRaises(ValueError, time.strftime, '',
-                            (1900, 1, 1, 0, -1, 0, 0, 1, -1))
-        self.assertRaises(ValueError, time.strftime, '',
-                            (1900, 1, 1, 0, 60, 0, 0, 1, -1))
-        # Check second [0, 61]
-        self.assertRaises(ValueError, time.strftime, '',
-                            (1900, 1, 1, 0, 0, -1, 0, 1, -1))
-        # C99 only requires allowing for one leap second, but Python's docs say
-        # allow two leap seconds (0..61)
-        self.assertRaises(ValueError, time.strftime, '',
-                            (1900, 1, 1, 0, 0, 62, 0, 1, -1))
-        # No check for upper-bound day of week;
-        #  value forced into range by a ``% 7`` calculation.
-        # Start check at -2 since gettmarg() increments value before taking
-        #  modulo.
-        self.assertRaises(ValueError, time.strftime, '',
-                            (1900, 1, 1, 0, 0, 0, -2, 1, -1))
-        # Check day of the year [1, 366] + zero support
-        self.assertRaises(ValueError, time.strftime, '',
-                            (1900, 1, 1, 0, 0, 0, 0, -1, -1))
-        self.assertRaises(ValueError, time.strftime, '',
-                            (1900, 1, 1, 0, 0, 0, 0, 367, -1))
-
-    def test_default_values_for_zero(self):
-        # Make sure that using all zeros uses the proper default values.
-        # No test for daylight savings since strftime() does not change output
-        # based on its value.
-        expected = "2000 01 01 00 00 00 1 001"
-        result = time.strftime("%Y %m %d %H %M %S %w %j", (0,)*9)
-        self.assertEqual(expected, result)
-
-    def test_strptime(self):
-        # Should be able to go round-trip from strftime to strptime without
-        # throwing an exception.
-        tt = time.gmtime(self.t)
-        for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'H', 'I',
-                          'j', 'm', 'M', 'p', 'S',
-                          'U', 'w', 'W', 'x', 'X', 'y', 'Y', 'Z', '%'):
-            format = '%' + directive
-            strf_output = time.strftime(format, tt)
-            try:
-                time.strptime(strf_output, format)
-            except ValueError:
-                self.fail("conversion specifier %r failed with '%s' input." %
-                          (format, strf_output))
-
-    def test_asctime(self):
-        time.asctime(time.gmtime(self.t))
-        self.assertRaises(TypeError, time.asctime, 0)
-        self.assertRaises(TypeError, time.asctime, ())
-        # XXX: Posix compiant asctime should refuse to convert
-        # year > 9999, but Linux implementation does not.
-        # self.assertRaises(ValueError, time.asctime,
-        #                  (12345, 1, 0, 0, 0, 0, 0, 0, 0))
-        # XXX: For now, just make sure we don't have a crash:
-        try:
-            time.asctime((12345, 1, 1, 0, 0, 0, 0, 1, 0))
-        except ValueError:
-            pass
-
-    @unittest.skipIf(not hasattr(time, "tzset"),
-        "time module has no attribute tzset")
-    def test_tzset(self):
-
-        from os import environ
-
-        # Epoch time of midnight Dec 25th 2002. Never DST in northern
-        # hemisphere.
-        xmas2002 = 1040774400.0
-
-        # These formats are correct for 2002, and possibly future years
-        # This format is the 'standard' as documented at:
-        # http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html
-        # They are also documented in the tzset(3) man page on most Unix
-        # systems.
-        eastern = 'EST+05EDT,M4.1.0,M10.5.0'
-        victoria = 'AEST-10AEDT-11,M10.5.0,M3.5.0'
-        utc='UTC+0'
-
-        org_TZ = environ.get('TZ',None)
-        try:
-            # Make sure we can switch to UTC time and results are correct
-            # Note that unknown timezones default to UTC.
-            # Note that altzone is undefined in UTC, as there is no DST
-            environ['TZ'] = eastern
-            time.tzset()
-            environ['TZ'] = utc
-            time.tzset()
-            self.assertEqual(
-                time.gmtime(xmas2002), time.localtime(xmas2002)
-                )
-            self.assertEqual(time.daylight, 0)
-            self.assertEqual(time.timezone, 0)
-            self.assertEqual(time.localtime(xmas2002).tm_isdst, 0)
-
-            # Make sure we can switch to US/Eastern
-            environ['TZ'] = eastern
-            time.tzset()
-            self.assertNotEqual(time.gmtime(xmas2002), time.localtime(xmas2002))
-            self.assertEqual(time.tzname, ('EST', 'EDT'))
-            self.assertEqual(len(time.tzname), 2)
-            self.assertEqual(time.daylight, 1)
-            self.assertEqual(time.timezone, 18000)
-            self.assertEqual(time.altzone, 14400)
-            self.assertEqual(time.localtime(xmas2002).tm_isdst, 0)
-            self.assertEqual(len(time.tzname), 2)
-
-            # Now go to the southern hemisphere.
-            environ['TZ'] = victoria
-            time.tzset()
-            self.assertNotEqual(time.gmtime(xmas2002), time.localtime(xmas2002))
-            self.assertTrue(time.tzname[0] == 'AEST', str(time.tzname[0]))
-            self.assertTrue(time.tzname[1] == 'AEDT', str(time.tzname[1]))
-            self.assertEqual(len(time.tzname), 2)
-            self.assertEqual(time.daylight, 1)
-            self.assertEqual(time.timezone, -36000)
-            self.assertEqual(time.altzone, -39600)
-            self.assertEqual(time.localtime(xmas2002).tm_isdst, 1)
-
-        finally:
-            # Repair TZ environment variable in case any other tests
-            # rely on it.
-            if org_TZ is not None:
-                environ['TZ'] = org_TZ
-            elif environ.has_key('TZ'):
-                del environ['TZ']
-            time.tzset()
-
-    def test_insane_timestamps(self):
-        # It's possible that some platform maps time_t to double,
-        # and that this test will fail there.  This test should
-        # exempt such platforms (provided they return reasonable
-        # results!).
-        for func in time.ctime, time.gmtime, time.localtime:
-            for unreasonable in -1e200, 1e200:
-                self.assertRaises(ValueError, func, unreasonable)
-
-    def test_ctime_without_arg(self):
-        # Not sure how to check the values, since the clock could tick
-        # at any time.  Make sure these are at least accepted and
-        # don't raise errors.
-        time.ctime()
-        time.ctime(None)
-
-    def test_gmtime_without_arg(self):
-        gt0 = time.gmtime()
-        gt1 = time.gmtime(None)
-        t0 = time.mktime(gt0)
-        t1 = time.mktime(gt1)
-        self.assertTrue(0 <= (t1-t0) < 0.2)
-
-    def test_localtime_without_arg(self):
-        lt0 = time.localtime()
-        lt1 = time.localtime(None)
-        t0 = time.mktime(lt0)
-        t1 = time.mktime(lt1)
-        self.assertTrue(0 <= (t1-t0) < 0.2)
-
-    def test_mktime(self):
-        # Issue #1726687
-        for t in (-2, -1, 0, 1):
-            try:
-                tt = time.localtime(t)
-            except (OverflowError, ValueError):
-                pass
-            else:
-                self.assertEqual(time.mktime(tt), t)
-
-
-def test_main():
-    test_support.run_unittest(TimeTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_timeout.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_timeout.py
deleted file mode 100644
index 4560f6c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_timeout.py
+++ /dev/null
@@ -1,202 +0,0 @@
-"""Unit tests for socket timeout feature."""
-
-import unittest
-from test import test_support
-
-# This requires the 'network' resource as given on the regrtest command line.
-skip_expected = not test_support.is_resource_enabled('network')
-
-import time
-import socket
-
-
-class CreationTestCase(unittest.TestCase):
-    """Test case for socket.gettimeout() and socket.settimeout()"""
-
-    def setUp(self):
-        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-
-    def tearDown(self):
-        self.sock.close()
-
-    def testObjectCreation(self):
-        # Test Socket creation
-        self.assertEqual(self.sock.gettimeout(), None,
-                         "timeout not disabled by default")
-
-    def testFloatReturnValue(self):
-        # Test return value of gettimeout()
-        self.sock.settimeout(7.345)
-        self.assertEqual(self.sock.gettimeout(), 7.345)
-
-        self.sock.settimeout(3)
-        self.assertEqual(self.sock.gettimeout(), 3)
-
-        self.sock.settimeout(None)
-        self.assertEqual(self.sock.gettimeout(), None)
-
-    def testReturnType(self):
-        # Test return type of gettimeout()
-        self.sock.settimeout(1)
-        self.assertEqual(type(self.sock.gettimeout()), type(1.0))
-
-        self.sock.settimeout(3.9)
-        self.assertEqual(type(self.sock.gettimeout()), type(1.0))
-
-    def testTypeCheck(self):
-        # Test type checking by settimeout()
-        self.sock.settimeout(0)
-        self.sock.settimeout(0L)
-        self.sock.settimeout(0.0)
-        self.sock.settimeout(None)
-        self.assertRaises(TypeError, self.sock.settimeout, "")
-        self.assertRaises(TypeError, self.sock.settimeout, u"")
-        self.assertRaises(TypeError, self.sock.settimeout, ())
-        self.assertRaises(TypeError, self.sock.settimeout, [])
-        self.assertRaises(TypeError, self.sock.settimeout, {})
-        self.assertRaises(TypeError, self.sock.settimeout, 0j)
-
-    def testRangeCheck(self):
-        # Test range checking by settimeout()
-        self.assertRaises(ValueError, self.sock.settimeout, -1)
-        self.assertRaises(ValueError, self.sock.settimeout, -1L)
-        self.assertRaises(ValueError, self.sock.settimeout, -1.0)
-
-    def testTimeoutThenBlocking(self):
-        # Test settimeout() followed by setblocking()
-        self.sock.settimeout(10)
-        self.sock.setblocking(1)
-        self.assertEqual(self.sock.gettimeout(), None)
-        self.sock.setblocking(0)
-        self.assertEqual(self.sock.gettimeout(), 0.0)
-
-        self.sock.settimeout(10)
-        self.sock.setblocking(0)
-        self.assertEqual(self.sock.gettimeout(), 0.0)
-        self.sock.setblocking(1)
-        self.assertEqual(self.sock.gettimeout(), None)
-
-    def testBlockingThenTimeout(self):
-        # Test setblocking() followed by settimeout()
-        self.sock.setblocking(0)
-        self.sock.settimeout(1)
-        self.assertEqual(self.sock.gettimeout(), 1)
-
-        self.sock.setblocking(1)
-        self.sock.settimeout(1)
-        self.assertEqual(self.sock.gettimeout(), 1)
-
-
-class TimeoutTestCase(unittest.TestCase):
-    """Test case for socket.socket() timeout functions"""
-
-    # There are a number of tests here trying to make sure that an operation
-    # doesn't take too much longer than expected.  But competing machine
-    # activity makes it inevitable that such tests will fail at times.
-    # When fuzz was at 1.0, I (tim) routinely saw bogus failures on Win2K
-    # and Win98SE.  Boosting it to 2.0 helped a lot, but isn't a real
-    # solution.
-    fuzz = 2.0
-
-    def setUp(self):
-        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.addr_remote = ('www.python.org.', 80)
-        self.localhost = '127.0.0.1'
-
-    def tearDown(self):
-        self.sock.close()
-
-    def testConnectTimeout(self):
-        # Choose a private address that is unlikely to exist to prevent
-        # failures due to the connect succeeding before the timeout.
-        # Use a dotted IP address to avoid including the DNS lookup time
-        # with the connect time.  This avoids failing the assertion that
-        # the timeout occurred fast enough.
-        addr = ('10.0.0.0', 12345)
-
-        # Test connect() timeout
-        _timeout = 0.001
-        self.sock.settimeout(_timeout)
-
-        _t1 = time.time()
-        self.assertRaises(socket.error, self.sock.connect, addr)
-        _t2 = time.time()
-
-        _delta = abs(_t1 - _t2)
-        self.assertTrue(_delta < _timeout + self.fuzz,
-                     "timeout (%g) is more than %g seconds more than expected (%g)"
-                     %(_delta, self.fuzz, _timeout))
-
-    def testRecvTimeout(self):
-        # Test recv() timeout
-        _timeout = 0.02
-
-        with test_support.transient_internet(self.addr_remote[0]):
-            self.sock.connect(self.addr_remote)
-            self.sock.settimeout(_timeout)
-
-            _t1 = time.time()
-            self.assertRaises(socket.timeout, self.sock.recv, 1024)
-            _t2 = time.time()
-
-            _delta = abs(_t1 - _t2)
-            self.assertTrue(_delta < _timeout + self.fuzz,
-                         "timeout (%g) is %g seconds more than expected (%g)"
-                         %(_delta, self.fuzz, _timeout))
-
-    def testAcceptTimeout(self):
-        # Test accept() timeout
-        _timeout = 2
-        self.sock.settimeout(_timeout)
-        # Prevent "Address already in use" socket exceptions
-        test_support.bind_port(self.sock, self.localhost)
-        self.sock.listen(5)
-
-        _t1 = time.time()
-        self.assertRaises(socket.error, self.sock.accept)
-        _t2 = time.time()
-
-        _delta = abs(_t1 - _t2)
-        self.assertTrue(_delta < _timeout + self.fuzz,
-                     "timeout (%g) is %g seconds more than expected (%g)"
-                     %(_delta, self.fuzz, _timeout))
-
-    def testRecvfromTimeout(self):
-        # Test recvfrom() timeout
-        _timeout = 2
-        self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-        self.sock.settimeout(_timeout)
-        # Prevent "Address already in use" socket exceptions
-        test_support.bind_port(self.sock, self.localhost)
-
-        _t1 = time.time()
-        self.assertRaises(socket.error, self.sock.recvfrom, 8192)
-        _t2 = time.time()
-
-        _delta = abs(_t1 - _t2)
-        self.assertTrue(_delta < _timeout + self.fuzz,
-                     "timeout (%g) is %g seconds more than expected (%g)"
-                     %(_delta, self.fuzz, _timeout))
-
-    def testSend(self):
-        # Test send() timeout
-        # couldn't figure out how to test it
-        pass
-
-    def testSendto(self):
-        # Test sendto() timeout
-        # couldn't figure out how to test it
-        pass
-
-    def testSendall(self):
-        # Test sendall() timeout
-        # couldn't figure out how to test it
-        pass
-
-
-def test_main():
-    test_support.requires('network')
-    test_support.run_unittest(CreationTestCase, TimeoutTestCase)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tk.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tk.py
deleted file mode 100644
index 619fcfb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tk.py
+++ /dev/null
@@ -1,35 +0,0 @@
-import os
-import unittest
-from test import test_support
-
-# Skip test if _tkinter wasn't built.
-test_support.import_module('_tkinter')
-
-import Tkinter
-
-try:
-    Tkinter.Button()
-except Tkinter.TclError, msg:
-    # assuming tk is not available
-    raise unittest.SkipTest("tk not available: %s" % msg)
-
-this_dir = os.path.dirname(os.path.abspath(__file__))
-lib_tk_test = os.path.abspath(os.path.join(this_dir, os.path.pardir,
-    'lib-tk', 'test'))
-
-with test_support.DirsOnSysPath(lib_tk_test):
-    import runtktests
-
-def test_main(enable_gui=False):
-    if enable_gui:
-        if test_support.use_resources is None:
-            test_support.use_resources = ['gui']
-        elif 'gui' not in test_support.use_resources:
-            test_support.use_resources.append('gui')
-
-    with test_support.DirsOnSysPath(lib_tk_test):
-        test_support.run_unittest(
-            *runtktests.get_tests(text=False, packages=['test_tkinter']))
-
-if __name__ == '__main__':
-    test_main(enable_gui=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tokenize.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tokenize.py
deleted file mode 100644
index b4bb0bc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tokenize.py
+++ /dev/null
@@ -1,596 +0,0 @@
-doctests = """
-Tests for the tokenize module.
-
-    >>> import glob, random, sys
-
-The tests can be really simple. Given a small fragment of source
-code, print out a table with tokens. The ENDMARK is omitted for
-brevity.
-
-    >>> dump_tokens("1 + 1")
-    NUMBER     '1'           (1, 0) (1, 1)
-    OP         '+'           (1, 2) (1, 3)
-    NUMBER     '1'           (1, 4) (1, 5)
-
-    >>> dump_tokens("if False:\\n"
-    ...             "    # NL\\n"
-    ...             "    True = False # NEWLINE\\n")
-    NAME       'if'          (1, 0) (1, 2)
-    NAME       'False'       (1, 3) (1, 8)
-    OP         ':'           (1, 8) (1, 9)
-    NEWLINE    '\\n'          (1, 9) (1, 10)
-    COMMENT    '# NL'        (2, 4) (2, 8)
-    NL         '\\n'          (2, 8) (2, 9)
-    INDENT     '    '        (3, 0) (3, 4)
-    NAME       'True'        (3, 4) (3, 8)
-    OP         '='           (3, 9) (3, 10)
-    NAME       'False'       (3, 11) (3, 16)
-    COMMENT    '# NEWLINE'   (3, 17) (3, 26)
-    NEWLINE    '\\n'          (3, 26) (3, 27)
-    DEDENT     ''            (4, 0) (4, 0)
-
-    >>> indent_error_file = \"""
-    ... def k(x):
-    ...     x += 2
-    ...   x += 5
-    ... \"""
-
-    >>> for tok in generate_tokens(StringIO(indent_error_file).readline): pass
-    Traceback (most recent call last):
-        ...
-    IndentationError: unindent does not match any outer indentation level
-
-Test roundtrip for `untokenize`. `f` is an open file or a string. The source
-code in f is tokenized, converted back to source code via tokenize.untokenize(),
-and tokenized again from the latter. The test fails if the second tokenization
-doesn't match the first.
-
-    >>> def roundtrip(f):
-    ...     if isinstance(f, str): f = StringIO(f)
-    ...     token_list = list(generate_tokens(f.readline))
-    ...     f.close()
-    ...     tokens1 = [tok[:2] for tok in token_list]
-    ...     new_text = untokenize(tokens1)
-    ...     readline = iter(new_text.splitlines(1)).next
-    ...     tokens2 = [tok[:2] for tok in generate_tokens(readline)]
-    ...     return tokens1 == tokens2
-    ...
-
-There are some standard formatting practices that are easy to get right.
-
-    >>> roundtrip("if x == 1:\\n"
-    ...           "    print x\\n")
-    True
-
-    >>> roundtrip("# This is a comment\\n# This also")
-    True
-
-Some people use different formatting conventions, which makes
-untokenize a little trickier. Note that this test involves trailing
-whitespace after the colon. Note that we use hex escapes to make the
-two trailing blanks apperant in the expected output.
-
-    >>> roundtrip("if x == 1 : \\n"
-    ...           "  print x\\n")
-    True
-
-    >>> f = test_support.findfile("tokenize_tests" + os.extsep + "txt")
-    >>> roundtrip(open(f))
-    True
-
-    >>> roundtrip("if x == 1:\\n"
-    ...           "    # A comment by itself.\\n"
-    ...           "    print x # Comment here, too.\\n"
-    ...           "    # Another comment.\\n"
-    ...           "after_if = True\\n")
-    True
-
-    >>> roundtrip("if (x # The comments need to go in the right place\\n"
-    ...           "    == 1):\\n"
-    ...           "    print 'x==1'\\n")
-    True
-
-    >>> roundtrip("class Test: # A comment here\\n"
-    ...           "  # A comment with weird indent\\n"
-    ...           "  after_com = 5\\n"
-    ...           "  def x(m): return m*5 # a one liner\\n"
-    ...           "  def y(m): # A whitespace after the colon\\n"
-    ...           "     return y*4 # 3-space indent\\n")
-    True
-
-Some error-handling code
-
-    >>> roundtrip("try: import somemodule\\n"
-    ...           "except ImportError: # comment\\n"
-    ...           "    print 'Can not import' # comment2\\n"
-    ...           "else:   print 'Loaded'\\n")
-    True
-
-Balancing continuation
-
-    >>> roundtrip("a = (3,4, \\n"
-    ...           "5,6)\\n"
-    ...           "y = [3, 4,\\n"
-    ...           "5]\\n"
-    ...           "z = {'a': 5,\\n"
-    ...           "'b':15, 'c':True}\\n"
-    ...           "x = len(y) + 5 - a[\\n"
-    ...           "3] - a[2]\\n"
-    ...           "+ len(z) - z[\\n"
-    ...           "'b']\\n")
-    True
-
-Ordinary integers and binary operators
-
-    >>> dump_tokens("0xff <= 255")
-    NUMBER     '0xff'        (1, 0) (1, 4)
-    OP         '<='          (1, 5) (1, 7)
-    NUMBER     '255'         (1, 8) (1, 11)
-    >>> dump_tokens("0b10 <= 255")
-    NUMBER     '0b10'        (1, 0) (1, 4)
-    OP         '<='          (1, 5) (1, 7)
-    NUMBER     '255'         (1, 8) (1, 11)
-    >>> dump_tokens("0o123 <= 0123")
-    NUMBER     '0o123'       (1, 0) (1, 5)
-    OP         '<='          (1, 6) (1, 8)
-    NUMBER     '0123'        (1, 9) (1, 13)
-    >>> dump_tokens("01234567 > ~0x15")
-    NUMBER     '01234567'    (1, 0) (1, 8)
-    OP         '>'           (1, 9) (1, 10)
-    OP         '~'           (1, 11) (1, 12)
-    NUMBER     '0x15'        (1, 12) (1, 16)
-    >>> dump_tokens("2134568 != 01231515")
-    NUMBER     '2134568'     (1, 0) (1, 7)
-    OP         '!='          (1, 8) (1, 10)
-    NUMBER     '01231515'    (1, 11) (1, 19)
-    >>> dump_tokens("(-124561-1) & 0200000000")
-    OP         '('           (1, 0) (1, 1)
-    OP         '-'           (1, 1) (1, 2)
-    NUMBER     '124561'      (1, 2) (1, 8)
-    OP         '-'           (1, 8) (1, 9)
-    NUMBER     '1'           (1, 9) (1, 10)
-    OP         ')'           (1, 10) (1, 11)
-    OP         '&'           (1, 12) (1, 13)
-    NUMBER     '0200000000'  (1, 14) (1, 24)
-    >>> dump_tokens("0xdeadbeef != -1")
-    NUMBER     '0xdeadbeef'  (1, 0) (1, 10)
-    OP         '!='          (1, 11) (1, 13)
-    OP         '-'           (1, 14) (1, 15)
-    NUMBER     '1'           (1, 15) (1, 16)
-    >>> dump_tokens("0xdeadc0de & 012345")
-    NUMBER     '0xdeadc0de'  (1, 0) (1, 10)
-    OP         '&'           (1, 11) (1, 12)
-    NUMBER     '012345'      (1, 13) (1, 19)
-    >>> dump_tokens("0xFF & 0x15 | 1234")
-    NUMBER     '0xFF'        (1, 0) (1, 4)
-    OP         '&'           (1, 5) (1, 6)
-    NUMBER     '0x15'        (1, 7) (1, 11)
-    OP         '|'           (1, 12) (1, 13)
-    NUMBER     '1234'        (1, 14) (1, 18)
-
-Long integers
-
-    >>> dump_tokens("x = 0L")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    NUMBER     '0L'          (1, 4) (1, 6)
-    >>> dump_tokens("x = 0xfffffffffff")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    NUMBER     '0xffffffffff (1, 4) (1, 17)
-    >>> dump_tokens("x = 123141242151251616110l")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    NUMBER     '123141242151 (1, 4) (1, 26)
-    >>> dump_tokens("x = -15921590215012591L")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    OP         '-'           (1, 4) (1, 5)
-    NUMBER     '159215902150 (1, 5) (1, 23)
-
-Floating point numbers
-
-    >>> dump_tokens("x = 3.14159")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    NUMBER     '3.14159'     (1, 4) (1, 11)
-    >>> dump_tokens("x = 314159.")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    NUMBER     '314159.'     (1, 4) (1, 11)
-    >>> dump_tokens("x = .314159")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    NUMBER     '.314159'     (1, 4) (1, 11)
-    >>> dump_tokens("x = 3e14159")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    NUMBER     '3e14159'     (1, 4) (1, 11)
-    >>> dump_tokens("x = 3E123")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    NUMBER     '3E123'       (1, 4) (1, 9)
-    >>> dump_tokens("x+y = 3e-1230")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '+'           (1, 1) (1, 2)
-    NAME       'y'           (1, 2) (1, 3)
-    OP         '='           (1, 4) (1, 5)
-    NUMBER     '3e-1230'     (1, 6) (1, 13)
-    >>> dump_tokens("x = 3.14e159")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    NUMBER     '3.14e159'    (1, 4) (1, 12)
-
-String literals
-
-    >>> dump_tokens("x = ''; y = \\\"\\\"")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    STRING     "''"          (1, 4) (1, 6)
-    OP         ';'           (1, 6) (1, 7)
-    NAME       'y'           (1, 8) (1, 9)
-    OP         '='           (1, 10) (1, 11)
-    STRING     '""'          (1, 12) (1, 14)
-    >>> dump_tokens("x = '\\\"'; y = \\\"'\\\"")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    STRING     '\\'"\\''       (1, 4) (1, 7)
-    OP         ';'           (1, 7) (1, 8)
-    NAME       'y'           (1, 9) (1, 10)
-    OP         '='           (1, 11) (1, 12)
-    STRING     '"\\'"'        (1, 13) (1, 16)
-    >>> dump_tokens("x = \\\"doesn't \\\"shrink\\\", does it\\\"")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    STRING     '"doesn\\'t "' (1, 4) (1, 14)
-    NAME       'shrink'      (1, 14) (1, 20)
-    STRING     '", does it"' (1, 20) (1, 31)
-    >>> dump_tokens("x = u'abc' + U'ABC'")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    STRING     "u'abc'"      (1, 4) (1, 10)
-    OP         '+'           (1, 11) (1, 12)
-    STRING     "U'ABC'"      (1, 13) (1, 19)
-    >>> dump_tokens('y = u"ABC" + U"ABC"')
-    NAME       'y'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    STRING     'u"ABC"'      (1, 4) (1, 10)
-    OP         '+'           (1, 11) (1, 12)
-    STRING     'U"ABC"'      (1, 13) (1, 19)
-    >>> dump_tokens("x = ur'abc' + Ur'ABC' + uR'ABC' + UR'ABC'")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    STRING     "ur'abc'"     (1, 4) (1, 11)
-    OP         '+'           (1, 12) (1, 13)
-    STRING     "Ur'ABC'"     (1, 14) (1, 21)
-    OP         '+'           (1, 22) (1, 23)
-    STRING     "uR'ABC'"     (1, 24) (1, 31)
-    OP         '+'           (1, 32) (1, 33)
-    STRING     "UR'ABC'"     (1, 34) (1, 41)
-    >>> dump_tokens('y = ur"abc" + Ur"ABC" + uR"ABC" + UR"ABC"')
-    NAME       'y'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    STRING     'ur"abc"'     (1, 4) (1, 11)
-    OP         '+'           (1, 12) (1, 13)
-    STRING     'Ur"ABC"'     (1, 14) (1, 21)
-    OP         '+'           (1, 22) (1, 23)
-    STRING     'uR"ABC"'     (1, 24) (1, 31)
-    OP         '+'           (1, 32) (1, 33)
-    STRING     'UR"ABC"'     (1, 34) (1, 41)
-
-Operators
-
-    >>> dump_tokens("def d22(a, b, c=2, d=2, *k): pass")
-    NAME       'def'         (1, 0) (1, 3)
-    NAME       'd22'         (1, 4) (1, 7)
-    OP         '('           (1, 7) (1, 8)
-    NAME       'a'           (1, 8) (1, 9)
-    OP         ','           (1, 9) (1, 10)
-    NAME       'b'           (1, 11) (1, 12)
-    OP         ','           (1, 12) (1, 13)
-    NAME       'c'           (1, 14) (1, 15)
-    OP         '='           (1, 15) (1, 16)
-    NUMBER     '2'           (1, 16) (1, 17)
-    OP         ','           (1, 17) (1, 18)
-    NAME       'd'           (1, 19) (1, 20)
-    OP         '='           (1, 20) (1, 21)
-    NUMBER     '2'           (1, 21) (1, 22)
-    OP         ','           (1, 22) (1, 23)
-    OP         '*'           (1, 24) (1, 25)
-    NAME       'k'           (1, 25) (1, 26)
-    OP         ')'           (1, 26) (1, 27)
-    OP         ':'           (1, 27) (1, 28)
-    NAME       'pass'        (1, 29) (1, 33)
-    >>> dump_tokens("def d01v_(a=1, *k, **w): pass")
-    NAME       'def'         (1, 0) (1, 3)
-    NAME       'd01v_'       (1, 4) (1, 9)
-    OP         '('           (1, 9) (1, 10)
-    NAME       'a'           (1, 10) (1, 11)
-    OP         '='           (1, 11) (1, 12)
-    NUMBER     '1'           (1, 12) (1, 13)
-    OP         ','           (1, 13) (1, 14)
-    OP         '*'           (1, 15) (1, 16)
-    NAME       'k'           (1, 16) (1, 17)
-    OP         ','           (1, 17) (1, 18)
-    OP         '**'          (1, 19) (1, 21)
-    NAME       'w'           (1, 21) (1, 22)
-    OP         ')'           (1, 22) (1, 23)
-    OP         ':'           (1, 23) (1, 24)
-    NAME       'pass'        (1, 25) (1, 29)
-
-Comparison
-
-    >>> dump_tokens("if 1 < 1 > 1 == 1 >= 5 <= 0x15 <= 0x12 != " +
-    ...             "1 and 5 in 1 not in 1 is 1 or 5 is not 1: pass")
-    NAME       'if'          (1, 0) (1, 2)
-    NUMBER     '1'           (1, 3) (1, 4)
-    OP         '<'           (1, 5) (1, 6)
-    NUMBER     '1'           (1, 7) (1, 8)
-    OP         '>'           (1, 9) (1, 10)
-    NUMBER     '1'           (1, 11) (1, 12)
-    OP         '=='          (1, 13) (1, 15)
-    NUMBER     '1'           (1, 16) (1, 17)
-    OP         '>='          (1, 18) (1, 20)
-    NUMBER     '5'           (1, 21) (1, 22)
-    OP         '<='          (1, 23) (1, 25)
-    NUMBER     '0x15'        (1, 26) (1, 30)
-    OP         '<='          (1, 31) (1, 33)
-    NUMBER     '0x12'        (1, 34) (1, 38)
-    OP         '!='          (1, 39) (1, 41)
-    NUMBER     '1'           (1, 42) (1, 43)
-    NAME       'and'         (1, 44) (1, 47)
-    NUMBER     '5'           (1, 48) (1, 49)
-    NAME       'in'          (1, 50) (1, 52)
-    NUMBER     '1'           (1, 53) (1, 54)
-    NAME       'not'         (1, 55) (1, 58)
-    NAME       'in'          (1, 59) (1, 61)
-    NUMBER     '1'           (1, 62) (1, 63)
-    NAME       'is'          (1, 64) (1, 66)
-    NUMBER     '1'           (1, 67) (1, 68)
-    NAME       'or'          (1, 69) (1, 71)
-    NUMBER     '5'           (1, 72) (1, 73)
-    NAME       'is'          (1, 74) (1, 76)
-    NAME       'not'         (1, 77) (1, 80)
-    NUMBER     '1'           (1, 81) (1, 82)
-    OP         ':'           (1, 82) (1, 83)
-    NAME       'pass'        (1, 84) (1, 88)
-
-Shift
-
-    >>> dump_tokens("x = 1 << 1 >> 5")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    NUMBER     '1'           (1, 4) (1, 5)
-    OP         '<<'          (1, 6) (1, 8)
-    NUMBER     '1'           (1, 9) (1, 10)
-    OP         '>>'          (1, 11) (1, 13)
-    NUMBER     '5'           (1, 14) (1, 15)
-
-Additive
-
-    >>> dump_tokens("x = 1 - y + 15 - 01 + 0x124 + z + a[5]")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    NUMBER     '1'           (1, 4) (1, 5)
-    OP         '-'           (1, 6) (1, 7)
-    NAME       'y'           (1, 8) (1, 9)
-    OP         '+'           (1, 10) (1, 11)
-    NUMBER     '15'          (1, 12) (1, 14)
-    OP         '-'           (1, 15) (1, 16)
-    NUMBER     '01'          (1, 17) (1, 19)
-    OP         '+'           (1, 20) (1, 21)
-    NUMBER     '0x124'       (1, 22) (1, 27)
-    OP         '+'           (1, 28) (1, 29)
-    NAME       'z'           (1, 30) (1, 31)
-    OP         '+'           (1, 32) (1, 33)
-    NAME       'a'           (1, 34) (1, 35)
-    OP         '['           (1, 35) (1, 36)
-    NUMBER     '5'           (1, 36) (1, 37)
-    OP         ']'           (1, 37) (1, 38)
-
-Multiplicative
-
-    >>> dump_tokens("x = 1//1*1/5*12%0x12")
-    NAME       'x'           (1, 0) (1, 1)
-    OP         '='           (1, 2) (1, 3)
-    NUMBER     '1'           (1, 4) (1, 5)
-    OP         '//'          (1, 5) (1, 7)
-    NUMBER     '1'           (1, 7) (1, 8)
-    OP         '*'           (1, 8) (1, 9)
-    NUMBER     '1'           (1, 9) (1, 10)
-    OP         '/'           (1, 10) (1, 11)
-    NUMBER     '5'           (1, 11) (1, 12)
-    OP         '*'           (1, 12) (1, 13)
-    NUMBER     '12'          (1, 13) (1, 15)
-    OP         '%'           (1, 15) (1, 16)
-    NUMBER     '0x12'        (1, 16) (1, 20)
-
-Unary
-
-    >>> dump_tokens("~1 ^ 1 & 1 |1 ^ -1")
-    OP         '~'           (1, 0) (1, 1)
-    NUMBER     '1'           (1, 1) (1, 2)
-    OP         '^'           (1, 3) (1, 4)
-    NUMBER     '1'           (1, 5) (1, 6)
-    OP         '&'           (1, 7) (1, 8)
-    NUMBER     '1'           (1, 9) (1, 10)
-    OP         '|'           (1, 11) (1, 12)
-    NUMBER     '1'           (1, 12) (1, 13)
-    OP         '^'           (1, 14) (1, 15)
-    OP         '-'           (1, 16) (1, 17)
-    NUMBER     '1'           (1, 17) (1, 18)
-    >>> dump_tokens("-1*1/1+1*1//1 - ---1**1")
-    OP         '-'           (1, 0) (1, 1)
-    NUMBER     '1'           (1, 1) (1, 2)
-    OP         '*'           (1, 2) (1, 3)
-    NUMBER     '1'           (1, 3) (1, 4)
-    OP         '/'           (1, 4) (1, 5)
-    NUMBER     '1'           (1, 5) (1, 6)
-    OP         '+'           (1, 6) (1, 7)
-    NUMBER     '1'           (1, 7) (1, 8)
-    OP         '*'           (1, 8) (1, 9)
-    NUMBER     '1'           (1, 9) (1, 10)
-    OP         '//'          (1, 10) (1, 12)
-    NUMBER     '1'           (1, 12) (1, 13)
-    OP         '-'           (1, 14) (1, 15)
-    OP         '-'           (1, 16) (1, 17)
-    OP         '-'           (1, 17) (1, 18)
-    OP         '-'           (1, 18) (1, 19)
-    NUMBER     '1'           (1, 19) (1, 20)
-    OP         '**'          (1, 20) (1, 22)
-    NUMBER     '1'           (1, 22) (1, 23)
-
-Selector
-
-    >>> dump_tokens("import sys, time\\nx = sys.modules['time'].time()")
-    NAME       'import'      (1, 0) (1, 6)
-    NAME       'sys'         (1, 7) (1, 10)
-    OP         ','           (1, 10) (1, 11)
-    NAME       'time'        (1, 12) (1, 16)
-    NEWLINE    '\\n'          (1, 16) (1, 17)
-    NAME       'x'           (2, 0) (2, 1)
-    OP         '='           (2, 2) (2, 3)
-    NAME       'sys'         (2, 4) (2, 7)
-    OP         '.'           (2, 7) (2, 8)
-    NAME       'modules'     (2, 8) (2, 15)
-    OP         '['           (2, 15) (2, 16)
-    STRING     "'time'"      (2, 16) (2, 22)
-    OP         ']'           (2, 22) (2, 23)
-    OP         '.'           (2, 23) (2, 24)
-    NAME       'time'        (2, 24) (2, 28)
-    OP         '('           (2, 28) (2, 29)
-    OP         ')'           (2, 29) (2, 30)
-
-Methods
-
-    >>> dump_tokens("@staticmethod\\ndef foo(x,y): pass")
-    OP         '@'           (1, 0) (1, 1)
-    NAME       'staticmethod (1, 1) (1, 13)
-    NEWLINE    '\\n'          (1, 13) (1, 14)
-    NAME       'def'         (2, 0) (2, 3)
-    NAME       'foo'         (2, 4) (2, 7)
-    OP         '('           (2, 7) (2, 8)
-    NAME       'x'           (2, 8) (2, 9)
-    OP         ','           (2, 9) (2, 10)
-    NAME       'y'           (2, 10) (2, 11)
-    OP         ')'           (2, 11) (2, 12)
-    OP         ':'           (2, 12) (2, 13)
-    NAME       'pass'        (2, 14) (2, 18)
-
-Backslash means line continuation, except for comments
-
-    >>> roundtrip("x=1+\\\\n"
-    ...           "1\\n"
-    ...           "# This is a comment\\\\n"
-    ...           "# This also\\n")
-    True
-    >>> roundtrip("# Comment \\\\nx = 0")
-    True
-
-Two string literals on the same line
-
-    >>> roundtrip("'' ''")
-    True
-
-Test roundtrip on random python modules.
-pass the '-ucpu' option to process the full directory.
-
-    >>>
-    >>> tempdir = os.path.dirname(f) or os.curdir
-    >>> testfiles = glob.glob(os.path.join(tempdir, "test*.py"))
-
-    >>> if not test_support.is_resource_enabled("cpu"):
-    ...     testfiles = random.sample(testfiles, 10)
-    ...
-    >>> for testfile in testfiles:
-    ...     if not roundtrip(open(testfile)):
-    ...         print "Roundtrip failed for file %s" % testfile
-    ...         break
-    ... else: True
-    True
-
-Evil tabs
-    >>> dump_tokens("def f():\\n\\tif x\\n        \\tpass")
-    NAME       'def'         (1, 0) (1, 3)
-    NAME       'f'           (1, 4) (1, 5)
-    OP         '('           (1, 5) (1, 6)
-    OP         ')'           (1, 6) (1, 7)
-    OP         ':'           (1, 7) (1, 8)
-    NEWLINE    '\\n'          (1, 8) (1, 9)
-    INDENT     '\\t'          (2, 0) (2, 1)
-    NAME       'if'          (2, 1) (2, 3)
-    NAME       'x'           (2, 4) (2, 5)
-    NEWLINE    '\\n'          (2, 5) (2, 6)
-    INDENT     '        \\t'  (3, 0) (3, 9)
-    NAME       'pass'        (3, 9) (3, 13)
-    DEDENT     ''            (4, 0) (4, 0)
-    DEDENT     ''            (4, 0) (4, 0)
-"""
-
-
-from test import test_support
-from tokenize import (untokenize, generate_tokens, NUMBER, NAME, OP,
-                     STRING, ENDMARKER, tok_name)
-from StringIO import StringIO
-import os
-
-def dump_tokens(s):
-    """Print out the tokens in s in a table format.
-
-    The ENDMARKER is omitted.
-    """
-    f = StringIO(s)
-    for type, token, start, end, line in generate_tokens(f.readline):
-        if type == ENDMARKER:
-            break
-        type = tok_name[type]
-        print("%(type)-10.10s %(token)-13.13r %(start)s %(end)s" % locals())
-
-# This is an example from the docs, set up as a doctest.
-def decistmt(s):
-    """Substitute Decimals for floats in a string of statements.
-
-    >>> from decimal import Decimal
-    >>> s = 'print +21.3e-5*-.1234/81.7'
-    >>> decistmt(s)
-    "print +Decimal ('21.3e-5')*-Decimal ('.1234')/Decimal ('81.7')"
-
-    The format of the exponent is inherited from the platform C library.
-    Known cases are "e-007" (Windows) and "e-07" (not Windows).  Since
-    we're only showing 12 digits, and the 13th isn't close to 5, the
-    rest of the output should be platform-independent.
-
-    >>> exec(s) #doctest: +ELLIPSIS
-    -3.21716034272e-0...7
-
-    Output from calculations with Decimal should be identical across all
-    platforms.
-
-    >>> exec(decistmt(s))
-    -3.217160342717258261933904529E-7
-    """
-
-    result = []
-    g = generate_tokens(StringIO(s).readline)   # tokenize the string
-    for toknum, tokval, _, _, _  in g:
-        if toknum == NUMBER and '.' in tokval:  # replace NUMBER tokens
-            result.extend([
-                (NAME, 'Decimal'),
-                (OP, '('),
-                (STRING, repr(tokval)),
-                (OP, ')')
-            ])
-        else:
-            result.append((toknum, tokval))
-    return untokenize(result)
-
-
-__test__ = {"doctests" : doctests, 'decistmt': decistmt}
-
-
-def test_main():
-    from test import test_tokenize
-    test_support.run_doctest(test_tokenize, True)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_trace.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_trace.py
deleted file mode 100644
index 781d186..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_trace.py
+++ /dev/null
@@ -1,341 +0,0 @@
-import os
-import sys
-from test.test_support import (run_unittest, TESTFN, rmtree, unlink,
-                               captured_stdout)
-import unittest
-
-import trace
-from trace import CoverageResults, Trace
-
-from test.tracedmodules import testmod
-
-
-#------------------------------- Utilities -----------------------------------#
-
-def fix_ext_py(filename):
-    """Given a .pyc/.pyo filename converts it to the appropriate .py"""
-    if filename.endswith(('.pyc', '.pyo')):
-        filename = filename[:-1]
-    return filename
-
-def my_file_and_modname():
-    """The .py file and module name of this file (__file__)"""
-    modname = os.path.splitext(os.path.basename(__file__))[0]
-    return fix_ext_py(__file__), modname
-
-def get_firstlineno(func):
-    return func.__code__.co_firstlineno
-
-#-------------------- Target functions for tracing ---------------------------#
-#
-# The relative line numbers of lines in these functions matter for verifying
-# tracing. Please modify the appropriate tests if you change one of the
-# functions. Absolute line numbers don't matter.
-#
-
-def traced_func_linear(x, y):
-    a = x
-    b = y
-    c = a + b
-    return c
-
-def traced_func_loop(x, y):
-    c = x
-    for i in range(5):
-        c += y
-    return c
-
-def traced_func_importing(x, y):
-    return x + y + testmod.func(1)
-
-def traced_func_simple_caller(x):
-    c = traced_func_linear(x, x)
-    return c + x
-
-def traced_func_importing_caller(x):
-    k = traced_func_simple_caller(x)
-    k += traced_func_importing(k, x)
-    return k
-
-def traced_func_generator(num):
-    c = 5       # executed once
-    for i in range(num):
-        yield i + c
-
-def traced_func_calling_generator():
-    k = 0
-    for i in traced_func_generator(10):
-        k += i
-
-def traced_doubler(num):
-    return num * 2
-
-def traced_caller_list_comprehension():
-    k = 10
-    mylist = [traced_doubler(i) for i in range(k)]
-    return mylist
-
-
-class TracedClass(object):
-    def __init__(self, x):
-        self.a = x
-
-    def inst_method_linear(self, y):
-        return self.a + y
-
-    def inst_method_calling(self, x):
-        c = self.inst_method_linear(x)
-        return c + traced_func_linear(x, c)
-
-    @classmethod
-    def class_method_linear(cls, y):
-        return y * 2
-
-    @staticmethod
-    def static_method_linear(y):
-        return y * 2
-
-
-#------------------------------ Test cases -----------------------------------#
-
-
-class TestLineCounts(unittest.TestCase):
-    """White-box testing of line-counting, via runfunc"""
-    def setUp(self):
-        self.tracer = Trace(count=1, trace=0, countfuncs=0, countcallers=0)
-        self.my_py_filename = fix_ext_py(__file__)
-
-    def test_traced_func_linear(self):
-        result = self.tracer.runfunc(traced_func_linear, 2, 5)
-        self.assertEqual(result, 7)
-
-        # all lines are executed once
-        expected = {}
-        firstlineno = get_firstlineno(traced_func_linear)
-        for i in range(1, 5):
-            expected[(self.my_py_filename, firstlineno +  i)] = 1
-
-        self.assertEqual(self.tracer.results().counts, expected)
-
-    def test_traced_func_loop(self):
-        self.tracer.runfunc(traced_func_loop, 2, 3)
-
-        firstlineno = get_firstlineno(traced_func_loop)
-        expected = {
-            (self.my_py_filename, firstlineno + 1): 1,
-            (self.my_py_filename, firstlineno + 2): 6,
-            (self.my_py_filename, firstlineno + 3): 5,
-            (self.my_py_filename, firstlineno + 4): 1,
-        }
-        self.assertEqual(self.tracer.results().counts, expected)
-
-    def test_traced_func_importing(self):
-        self.tracer.runfunc(traced_func_importing, 2, 5)
-
-        firstlineno = get_firstlineno(traced_func_importing)
-        expected = {
-            (self.my_py_filename, firstlineno + 1): 1,
-            (fix_ext_py(testmod.__file__), 2): 1,
-            (fix_ext_py(testmod.__file__), 3): 1,
-        }
-
-        self.assertEqual(self.tracer.results().counts, expected)
-
-    def test_trace_func_generator(self):
-        self.tracer.runfunc(traced_func_calling_generator)
-
-        firstlineno_calling = get_firstlineno(traced_func_calling_generator)
-        firstlineno_gen = get_firstlineno(traced_func_generator)
-        expected = {
-            (self.my_py_filename, firstlineno_calling + 1): 1,
-            (self.my_py_filename, firstlineno_calling + 2): 11,
-            (self.my_py_filename, firstlineno_calling + 3): 10,
-            (self.my_py_filename, firstlineno_gen + 1): 1,
-            (self.my_py_filename, firstlineno_gen + 2): 11,
-            (self.my_py_filename, firstlineno_gen + 3): 10,
-        }
-        self.assertEqual(self.tracer.results().counts, expected)
-
-    def test_trace_list_comprehension(self):
-        self.tracer.runfunc(traced_caller_list_comprehension)
-
-        firstlineno_calling = get_firstlineno(traced_caller_list_comprehension)
-        firstlineno_called = get_firstlineno(traced_doubler)
-        expected = {
-            (self.my_py_filename, firstlineno_calling + 1): 1,
-            (self.my_py_filename, firstlineno_calling + 2): 11,
-            (self.my_py_filename, firstlineno_calling + 3): 1,
-            (self.my_py_filename, firstlineno_called + 1): 10,
-        }
-        self.assertEqual(self.tracer.results().counts, expected)
-
-
-    def test_linear_methods(self):
-        # XXX todo: later add 'static_method_linear' and 'class_method_linear'
-        # here, once issue1764286 is resolved
-        #
-        for methname in ['inst_method_linear',]:
-            tracer = Trace(count=1, trace=0, countfuncs=0, countcallers=0)
-            traced_obj = TracedClass(25)
-            method = getattr(traced_obj, methname)
-            tracer.runfunc(method, 20)
-
-            firstlineno = get_firstlineno(method)
-            expected = {
-                (self.my_py_filename, firstlineno + 1): 1,
-            }
-            self.assertEqual(tracer.results().counts, expected)
-
-class TestRunExecCounts(unittest.TestCase):
-    """A simple sanity test of line-counting, via runctx (exec)"""
-    def setUp(self):
-        self.my_py_filename = fix_ext_py(__file__)
-
-    def test_exec_counts(self):
-        self.tracer = Trace(count=1, trace=0, countfuncs=0, countcallers=0)
-        code = r'''traced_func_loop(2, 5)'''
-        code = compile(code, __file__, 'exec')
-        self.tracer.runctx(code, globals(), vars())
-
-        firstlineno = get_firstlineno(traced_func_loop)
-        expected = {
-            (self.my_py_filename, firstlineno + 1): 1,
-            (self.my_py_filename, firstlineno + 2): 6,
-            (self.my_py_filename, firstlineno + 3): 5,
-            (self.my_py_filename, firstlineno + 4): 1,
-        }
-
-        # When used through 'run', some other spurious counts are produced, like
-        # the settrace of threading, which we ignore, just making sure that the
-        # counts fo traced_func_loop were right.
-        #
-        for k in expected.keys():
-            self.assertEqual(self.tracer.results().counts[k], expected[k])
-
-
-class TestFuncs(unittest.TestCase):
-    """White-box testing of funcs tracing"""
-    def setUp(self):
-        self.tracer = Trace(count=0, trace=0, countfuncs=1)
-        self.filemod = my_file_and_modname()
-
-    def test_simple_caller(self):
-        self.tracer.runfunc(traced_func_simple_caller, 1)
-
-        expected = {
-            self.filemod + ('traced_func_simple_caller',): 1,
-            self.filemod + ('traced_func_linear',): 1,
-        }
-        self.assertEqual(self.tracer.results().calledfuncs, expected)
-
-    def test_loop_caller_importing(self):
-        self.tracer.runfunc(traced_func_importing_caller, 1)
-
-        expected = {
-            self.filemod + ('traced_func_simple_caller',): 1,
-            self.filemod + ('traced_func_linear',): 1,
-            self.filemod + ('traced_func_importing_caller',): 1,
-            self.filemod + ('traced_func_importing',): 1,
-            (fix_ext_py(testmod.__file__), 'testmod', 'func'): 1,
-        }
-        self.assertEqual(self.tracer.results().calledfuncs, expected)
-
-    def test_inst_method_calling(self):
-        obj = TracedClass(20)
-        self.tracer.runfunc(obj.inst_method_calling, 1)
-
-        expected = {
-            self.filemod + ('TracedClass.inst_method_calling',): 1,
-            self.filemod + ('TracedClass.inst_method_linear',): 1,
-            self.filemod + ('traced_func_linear',): 1,
-        }
-        self.assertEqual(self.tracer.results().calledfuncs, expected)
-
-
-class TestCallers(unittest.TestCase):
-    """White-box testing of callers tracing"""
-    def setUp(self):
-        self.tracer = Trace(count=0, trace=0, countcallers=1)
-        self.filemod = my_file_and_modname()
-
-    def test_loop_caller_importing(self):
-        self.tracer.runfunc(traced_func_importing_caller, 1)
-
-        expected = {
-            ((os.path.splitext(trace.__file__)[0] + '.py', 'trace', 'Trace.runfunc'),
-                (self.filemod + ('traced_func_importing_caller',))): 1,
-            ((self.filemod + ('traced_func_simple_caller',)),
-                (self.filemod + ('traced_func_linear',))): 1,
-            ((self.filemod + ('traced_func_importing_caller',)),
-                (self.filemod + ('traced_func_simple_caller',))): 1,
-            ((self.filemod + ('traced_func_importing_caller',)),
-                (self.filemod + ('traced_func_importing',))): 1,
-            ((self.filemod + ('traced_func_importing',)),
-                (fix_ext_py(testmod.__file__), 'testmod', 'func')): 1,
-        }
-        self.assertEqual(self.tracer.results().callers, expected)
-
-
-# Created separately for issue #3821
-class TestCoverage(unittest.TestCase):
-    def tearDown(self):
-        rmtree(TESTFN)
-        unlink(TESTFN)
-
-    def _coverage(self, tracer,
-                  cmd='from test import test_pprint; test_pprint.test_main()'):
-        tracer.run(cmd)
-        r = tracer.results()
-        r.write_results(show_missing=True, summary=True, coverdir=TESTFN)
-
-    def test_coverage(self):
-        tracer = trace.Trace(trace=0, count=1)
-        with captured_stdout() as stdout:
-            self._coverage(tracer)
-        stdout = stdout.getvalue()
-        self.assertTrue("pprint.py" in stdout)
-        self.assertTrue("case.py" in stdout)   # from unittest
-        files = os.listdir(TESTFN)
-        self.assertTrue("pprint.cover" in files)
-        self.assertTrue("unittest.case.cover" in files)
-
-    def test_coverage_ignore(self):
-        # Ignore all files, nothing should be traced nor printed
-        libpath = os.path.normpath(os.path.dirname(os.__file__))
-        # sys.prefix does not work when running from a checkout
-        tracer = trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix, libpath],
-                             trace=0, count=1)
-        with captured_stdout() as stdout:
-            self._coverage(tracer)
-        if os.path.exists(TESTFN):
-            files = os.listdir(TESTFN)
-            self.assertEqual(files, [])
-
-    def test_issue9936(self):
-        tracer = trace.Trace(trace=0, count=1)
-        modname = 'test.tracedmodules.testmod'
-        # Ensure that the module is executed in import
-        if modname in sys.modules:
-            del sys.modules[modname]
-        cmd = ("import test.tracedmodules.testmod as t;"
-               "t.func(0); t.func2();")
-        with captured_stdout() as stdout:
-            self._coverage(tracer, cmd)
-        stdout.seek(0)
-        stdout.readline()
-        coverage = {}
-        for line in stdout:
-            lines, cov, module = line.split()[:3]
-            coverage[module] = (int(lines), int(cov[:-1]))
-        # XXX This is needed to run regrtest.py as a script
-        modname = trace.fullmodname(sys.modules[modname].__file__)
-        self.assertIn(modname, coverage)
-        self.assertEqual(coverage[modname], (5, 100))
-
-
-def test_main():
-    run_unittest(__name__)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_traceback.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_traceback.py
deleted file mode 100644
index 03bd2af..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_traceback.py
+++ /dev/null
@@ -1,204 +0,0 @@
-"""Test cases for traceback module"""
-
-from _testcapi import traceback_print
-from StringIO import StringIO
-import sys
-import unittest
-from imp import reload
-from test.test_support import run_unittest, is_jython, Error
-
-import traceback
-
-
-class TracebackCases(unittest.TestCase):
-    # For now, a very minimal set of tests.  I want to be sure that
-    # formatting of SyntaxErrors works based on changes for 2.1.
-
-    def get_exception_format(self, func, exc):
-        try:
-            func()
-        except exc, value:
-            return traceback.format_exception_only(exc, value)
-        else:
-            raise ValueError, "call did not raise exception"
-
-    def syntax_error_with_caret(self):
-        compile("def fact(x):\n\treturn x!\n", "?", "exec")
-
-    def syntax_error_with_caret_2(self):
-        compile("1 +\n", "?", "exec")
-
-    def syntax_error_without_caret(self):
-        # XXX why doesn't compile raise the same traceback?
-        import test.badsyntax_nocaret
-
-    def syntax_error_bad_indentation(self):
-        compile("def spam():\n  print 1\n print 2", "?", "exec")
-
-    def test_caret(self):
-        err = self.get_exception_format(self.syntax_error_with_caret,
-                                        SyntaxError)
-        self.assertTrue(len(err) == 4)
-        self.assertTrue(err[1].strip() == "return x!")
-        self.assertIn("^", err[2]) # third line has caret
-        self.assertTrue(err[1].find("!") == err[2].find("^")) # in the right place
-
-        err = self.get_exception_format(self.syntax_error_with_caret_2,
-                                        SyntaxError)
-        self.assertIn("^", err[2]) # third line has caret
-        self.assertTrue(err[2].count('\n') == 1) # and no additional newline
-        self.assertTrue(err[1].find("+") == err[2].find("^")) # in the right place
-
-    def test_nocaret(self):
-        if is_jython:
-            # jython adds a caret in this case (why shouldn't it?)
-            return
-        err = self.get_exception_format(self.syntax_error_without_caret,
-                                        SyntaxError)
-        self.assertTrue(len(err) == 3)
-        self.assertTrue(err[1].strip() == "[x for x in x] = x")
-
-    def test_bad_indentation(self):
-        err = self.get_exception_format(self.syntax_error_bad_indentation,
-                                        IndentationError)
-        self.assertTrue(len(err) == 4)
-        self.assertTrue(err[1].strip() == "print 2")
-        self.assertIn("^", err[2])
-        self.assertTrue(err[1].find("2") == err[2].find("^"))
-
-    def test_bug737473(self):
-        import os, tempfile, time
-
-        savedpath = sys.path[:]
-        testdir = tempfile.mkdtemp()
-        try:
-            sys.path.insert(0, testdir)
-            testfile = os.path.join(testdir, 'test_bug737473.py')
-            print >> open(testfile, 'w'), """
-def test():
-    raise ValueError"""
-
-            if 'test_bug737473' in sys.modules:
-                del sys.modules['test_bug737473']
-            import test_bug737473
-
-            try:
-                test_bug737473.test()
-            except ValueError:
-                # this loads source code to linecache
-                traceback.extract_tb(sys.exc_traceback)
-
-            # If this test runs too quickly, test_bug737473.py's mtime
-            # attribute will remain unchanged even if the file is rewritten.
-            # Consequently, the file would not reload.  So, added a sleep()
-            # delay to assure that a new, distinct timestamp is written.
-            # Since WinME with FAT32 has multisecond resolution, more than
-            # three seconds are needed for this test to pass reliably :-(
-            time.sleep(4)
-
-            print >> open(testfile, 'w'), """
-def test():
-    raise NotImplementedError"""
-            reload(test_bug737473)
-            try:
-                test_bug737473.test()
-            except NotImplementedError:
-                src = traceback.extract_tb(sys.exc_traceback)[-1][-1]
-                self.assertEqual(src, 'raise NotImplementedError')
-        finally:
-            sys.path[:] = savedpath
-            for f in os.listdir(testdir):
-                os.unlink(os.path.join(testdir, f))
-            os.rmdir(testdir)
-
-    def test_base_exception(self):
-        # Test that exceptions derived from BaseException are formatted right
-        e = KeyboardInterrupt()
-        lst = traceback.format_exception_only(e.__class__, e)
-        self.assertEqual(lst, ['KeyboardInterrupt\n'])
-
-    # String exceptions are deprecated, but legal.  The quirky form with
-    # separate "type" and "value" tends to break things, because
-    #     not isinstance(value, type)
-    # and a string cannot be the first argument to issubclass.
-    #
-    # Note that sys.last_type and sys.last_value do not get set if an
-    # exception is caught, so we sort of cheat and just emulate them.
-    #
-    # test_string_exception1 is equivalent to
-    #
-    # >>> raise "String Exception"
-    #
-    # test_string_exception2 is equivalent to
-    #
-    # >>> raise "String Exception", "String Value"
-    #
-    def test_string_exception1(self):
-        str_type = "String Exception"
-        err = traceback.format_exception_only(str_type, None)
-        self.assertEqual(len(err), 1)
-        self.assertEqual(err[0], str_type + '\n')
-
-    def test_string_exception2(self):
-        str_type = "String Exception"
-        str_value = "String Value"
-        err = traceback.format_exception_only(str_type, str_value)
-        self.assertEqual(len(err), 1)
-        self.assertEqual(err[0], str_type + ': ' + str_value + '\n')
-
-    def test_format_exception_only_bad__str__(self):
-        class X(Exception):
-            def __str__(self):
-                1 // 0
-        err = traceback.format_exception_only(X, X())
-        self.assertEqual(len(err), 1)
-        str_value = '<unprintable %s object>' % X.__name__
-        self.assertEqual(err[0], X.__name__ + ': ' + str_value + '\n')
-
-    def test_without_exception(self):
-        err = traceback.format_exception_only(None, None)
-        self.assertEqual(err, ['None\n'])
-
-    def test_unicode(self):
-        err = AssertionError('\xff')
-        lines = traceback.format_exception_only(type(err), err)
-        self.assertEqual(lines, ['AssertionError: \xff\n'])
-
-        err = AssertionError(u'\xe9')
-        lines = traceback.format_exception_only(type(err), err)
-        self.assertEqual(lines, ['AssertionError: \\xe9\n'])
-
-
-class TracebackFormatTests(unittest.TestCase):
-
-    def test_traceback_format(self):
-        try:
-            raise KeyError('blah')
-        except KeyError:
-            type_, value, tb = sys.exc_info()
-            traceback_fmt = 'Traceback (most recent call last):\n' + \
-                            ''.join(traceback.format_tb(tb))
-            file_ = StringIO()
-            traceback_print(tb, file_)
-            python_fmt  = file_.getvalue()
-        else:
-            raise Error("unable to create test traceback string")
-
-        # Make sure that Python and the traceback module format the same thing
-        self.assertEqual(traceback_fmt, python_fmt)
-
-        # Make sure that the traceback is properly indented.
-        tb_lines = python_fmt.splitlines()
-        self.assertEqual(len(tb_lines), 3)
-        banner, location, source_line = tb_lines
-        self.assertTrue(banner.startswith('Traceback'))
-        self.assertTrue(location.startswith('  File'))
-        self.assertTrue(source_line.startswith('    raise'))
-
-
-def test_main():
-    run_unittest(TracebackCases, TracebackFormatTests)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_transformer.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_transformer.py
deleted file mode 100644
index 52d6c9a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_transformer.py
+++ /dev/null
@@ -1,38 +0,0 @@
-import unittest
-from test import test_support
-
-# Silence Py3k warning
-test_support.import_module('compiler', deprecated=True)
-from compiler import transformer, ast
-from compiler import compile
-
-class Tests(unittest.TestCase):
-
-    def testMultipleLHS(self):
-        """ Test multiple targets on the left hand side. """
-
-        snippets = ['a, b = 1, 2',
-                    '(a, b) = 1, 2',
-                    '((a, b), c) = (1, 2), 3']
-
-        for s in snippets:
-            a = transformer.parse(s)
-            self.assertIsInstance(a, ast.Module)
-            child1 = a.getChildNodes()[0]
-            self.assertIsInstance(child1, ast.Stmt)
-            child2 = child1.getChildNodes()[0]
-            self.assertIsInstance(child2, ast.Assign)
-
-            # This actually tests the compiler, but it's a way to assure the ast
-            # is correct
-            c = compile(s, '<string>', 'single')
-            vals = {}
-            exec c in vals
-            assert vals['a'] == 1
-            assert vals['b'] == 2
-
-def test_main():
-    test_support.run_unittest(Tests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ttk_guionly.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ttk_guionly.py
deleted file mode 100644
index b195091..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ttk_guionly.py
+++ /dev/null
@@ -1,40 +0,0 @@
-import os
-import unittest
-from test import test_support
-
-# Skip this test if _tkinter wasn't built.
-test_support.import_module('_tkinter')
-
-import ttk
-from _tkinter import TclError
-
-try:
-    ttk.Button()
-except TclError, msg:
-    # assuming ttk is not available
-    raise unittest.SkipTest("ttk not available: %s" % msg)
-
-this_dir = os.path.dirname(os.path.abspath(__file__))
-lib_tk_test = os.path.abspath(os.path.join(this_dir, os.path.pardir,
-    'lib-tk', 'test'))
-
-with test_support.DirsOnSysPath(lib_tk_test):
-    import runtktests
-
-def test_main(enable_gui=False):
-    if enable_gui:
-        if test_support.use_resources is None:
-            test_support.use_resources = ['gui']
-        elif 'gui' not in test_support.use_resources:
-            test_support.use_resources.append('gui')
-
-    with test_support.DirsOnSysPath(lib_tk_test):
-        from test_ttk.support import get_tk_root
-        try:
-            test_support.run_unittest(
-                *runtktests.get_tests(text=False, packages=['test_ttk']))
-        finally:
-            get_tk_root().destroy()
-
-if __name__ == '__main__':
-    test_main(enable_gui=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ttk_textonly.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ttk_textonly.py
deleted file mode 100644
index 0e38d2a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ttk_textonly.py
+++ /dev/null
@@ -1,19 +0,0 @@
-import os
-from test import test_support
-
-# Skip this test if _tkinter does not exist.
-test_support.import_module('_tkinter')
-
-this_dir = os.path.dirname(os.path.abspath(__file__))
-lib_tk_test = os.path.abspath(os.path.join(this_dir, '..', 'lib-tk', 'test'))
-
-with test_support.DirsOnSysPath(lib_tk_test):
-    import runtktests
-
-def test_main():
-    with test_support.DirsOnSysPath(lib_tk_test):
-        test_support.run_unittest(
-            *runtktests.get_tests(gui=False, packages=['test_ttk']))
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tuple.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tuple.py
deleted file mode 100644
index e04696f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_tuple.py
+++ /dev/null
@@ -1,161 +0,0 @@
-from test import test_support, seq_tests
-
-import gc
-
-class TupleTest(seq_tests.CommonTest):
-    type2test = tuple
-
-    def test_constructors(self):
-        super(TupleTest, self).test_constructors()
-        # calling built-in types without argument must return empty
-        self.assertEqual(tuple(), ())
-        t0_3 = (0, 1, 2, 3)
-        t0_3_bis = tuple(t0_3)
-        self.assertTrue(t0_3 is t0_3_bis)
-        self.assertEqual(tuple([]), ())
-        self.assertEqual(tuple([0, 1, 2, 3]), (0, 1, 2, 3))
-        self.assertEqual(tuple(''), ())
-        self.assertEqual(tuple('spam'), ('s', 'p', 'a', 'm'))
-
-    def test_truth(self):
-        super(TupleTest, self).test_truth()
-        self.assertTrue(not ())
-        self.assertTrue((42, ))
-
-    def test_len(self):
-        super(TupleTest, self).test_len()
-        self.assertEqual(len(()), 0)
-        self.assertEqual(len((0,)), 1)
-        self.assertEqual(len((0, 1, 2)), 3)
-
-    def test_iadd(self):
-        super(TupleTest, self).test_iadd()
-        u = (0, 1)
-        u2 = u
-        u += (2, 3)
-        self.assertTrue(u is not u2)
-
-    def test_imul(self):
-        super(TupleTest, self).test_imul()
-        u = (0, 1)
-        u2 = u
-        u *= 3
-        self.assertTrue(u is not u2)
-
-    def test_tupleresizebug(self):
-        # Check that a specific bug in _PyTuple_Resize() is squashed.
-        def f():
-            for i in range(1000):
-                yield i
-        self.assertEqual(list(tuple(f())), range(1000))
-
-    def test_hash(self):
-        # See SF bug 942952:  Weakness in tuple hash
-        # The hash should:
-        #      be non-commutative
-        #      should spread-out closely spaced values
-        #      should not exhibit cancellation in tuples like (x,(x,y))
-        #      should be distinct from element hashes:  hash(x)!=hash((x,))
-        # This test exercises those cases.
-        # For a pure random hash and N=50, the expected number of occupied
-        #      buckets when tossing 252,600 balls into 2**32 buckets
-        #      is 252,592.6, or about 7.4 expected collisions.  The
-        #      standard deviation is 2.73.  On a box with 64-bit hash
-        #      codes, no collisions are expected.  Here we accept no
-        #      more than 15 collisions.  Any worse and the hash function
-        #      is sorely suspect.
-
-        N=50
-        base = range(N)
-        xp = [(i, j) for i in base for j in base]
-        inps = base + [(i, j) for i in base for j in xp] + \
-                     [(i, j) for i in xp for j in base] + xp + zip(base)
-        collisions = len(inps) - len(set(map(hash, inps)))
-        self.assertTrue(collisions <= 15)
-
-    def test_repr(self):
-        l0 = tuple()
-        l2 = (0, 1, 2)
-        a0 = self.type2test(l0)
-        a2 = self.type2test(l2)
-
-        self.assertEqual(str(a0), repr(l0))
-        self.assertEqual(str(a2), repr(l2))
-        self.assertEqual(repr(a0), "()")
-        self.assertEqual(repr(a2), "(0, 1, 2)")
-
-    def _not_tracked(self, t):
-        # Nested tuples can take several collections to untrack
-        gc.collect()
-        gc.collect()
-        self.assertFalse(gc.is_tracked(t), t)
-
-    def _tracked(self, t):
-        self.assertTrue(gc.is_tracked(t), t)
-        gc.collect()
-        gc.collect()
-        self.assertTrue(gc.is_tracked(t), t)
-
-    @test_support.cpython_only
-    def test_track_literals(self):
-        # Test GC-optimization of tuple literals
-        x, y, z = 1.5, "a", []
-
-        self._not_tracked(())
-        self._not_tracked((1,))
-        self._not_tracked((1, 2))
-        self._not_tracked((1, 2, "a"))
-        self._not_tracked((1, 2, (None, True, False, ()), int))
-        self._not_tracked((object(),))
-        self._not_tracked(((1, x), y, (2, 3)))
-
-        # Tuples with mutable elements are always tracked, even if those
-        # elements are not tracked right now.
-        self._tracked(([],))
-        self._tracked(([1],))
-        self._tracked(({},))
-        self._tracked((set(),))
-        self._tracked((x, y, z))
-
-    def check_track_dynamic(self, tp, always_track):
-        x, y, z = 1.5, "a", []
-
-        check = self._tracked if always_track else self._not_tracked
-        check(tp())
-        check(tp([]))
-        check(tp(set()))
-        check(tp([1, x, y]))
-        check(tp(obj for obj in [1, x, y]))
-        check(tp(set([1, x, y])))
-        check(tp(tuple([obj]) for obj in [1, x, y]))
-        check(tuple(tp([obj]) for obj in [1, x, y]))
-
-        self._tracked(tp([z]))
-        self._tracked(tp([[x, y]]))
-        self._tracked(tp([{x: y}]))
-        self._tracked(tp(obj for obj in [x, y, z]))
-        self._tracked(tp(tuple([obj]) for obj in [x, y, z]))
-        self._tracked(tuple(tp([obj]) for obj in [x, y, z]))
-
-    @test_support.cpython_only
-    def test_track_dynamic(self):
-        # Test GC-optimization of dynamically constructed tuples.
-        self.check_track_dynamic(tuple, False)
-
-    @test_support.cpython_only
-    def test_track_subtypes(self):
-        # Tuple subtypes must always be tracked
-        class MyTuple(tuple):
-            pass
-        self.check_track_dynamic(MyTuple, True)
-
-    @test_support.cpython_only
-    def test_bug7466(self):
-        # Trying to untrack an unfinished tuple could crash Python
-        self._not_tracked(tuple(gc.collect() for i in range(101)))
-
-def test_main():
-    test_support.run_unittest(TupleTest)
-
-if __name__=="__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_typechecks.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_typechecks.py
deleted file mode 100644
index 9543bfc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_typechecks.py
+++ /dev/null
@@ -1,93 +0,0 @@
-"""Unit tests for __instancecheck__ and __subclasscheck__."""
-
-import unittest
-from test import test_support
-
-
-class ABC(type):
-
-    def __instancecheck__(cls, inst):
-        """Implement isinstance(inst, cls)."""
-        return any(cls.__subclasscheck__(c)
-                   for c in set([type(inst), inst.__class__]))
-
-    def __subclasscheck__(cls, sub):
-        """Implement issubclass(sub, cls)."""
-        candidates = cls.__dict__.get("__subclass__", set()) | set([cls])
-        return any(c in candidates for c in sub.mro())
-
-
-class Integer:
-
-    __metaclass__ = ABC
-
-    __subclass__ = set([int])
-
-
-class SubInt(Integer):
-
-    pass
-
-
-class TypeChecksTest(unittest.TestCase):
-
-    def testIsSubclassInternal(self):
-        self.assertEqual(Integer.__subclasscheck__(int), True)
-        self.assertEqual(Integer.__subclasscheck__(float), False)
-
-    def testIsSubclassBuiltin(self):
-        self.assertEqual(issubclass(int, Integer), True)
-        self.assertEqual(issubclass(int, (Integer,)), True)
-        self.assertEqual(issubclass(float, Integer), False)
-        self.assertEqual(issubclass(float, (Integer,)), False)
-
-    def testIsInstanceBuiltin(self):
-        self.assertEqual(isinstance(42, Integer), True)
-        self.assertEqual(isinstance(42, (Integer,)), True)
-        self.assertEqual(isinstance(3.14, Integer), False)
-        self.assertEqual(isinstance(3.14, (Integer,)), False)
-
-    def testIsInstanceActual(self):
-        self.assertEqual(isinstance(Integer(), Integer), True)
-        self.assertEqual(isinstance(Integer(), (Integer,)), True)
-
-    def testIsSubclassActual(self):
-        self.assertEqual(issubclass(Integer, Integer), True)
-        self.assertEqual(issubclass(Integer, (Integer,)), True)
-
-    def testSubclassBehavior(self):
-        self.assertEqual(issubclass(SubInt, Integer), True)
-        self.assertEqual(issubclass(SubInt, (Integer,)), True)
-        self.assertEqual(issubclass(SubInt, SubInt), True)
-        self.assertEqual(issubclass(SubInt, (SubInt,)), True)
-        self.assertEqual(issubclass(Integer, SubInt), False)
-        self.assertEqual(issubclass(Integer, (SubInt,)), False)
-        self.assertEqual(issubclass(int, SubInt), False)
-        self.assertEqual(issubclass(int, (SubInt,)), False)
-        self.assertEqual(isinstance(SubInt(), Integer), True)
-        self.assertEqual(isinstance(SubInt(), (Integer,)), True)
-        self.assertEqual(isinstance(SubInt(), SubInt), True)
-        self.assertEqual(isinstance(SubInt(), (SubInt,)), True)
-        self.assertEqual(isinstance(42, SubInt), False)
-        self.assertEqual(isinstance(42, (SubInt,)), False)
-
-    def test_oldstyle(self):
-        # These should just be ignored.
-        class X:
-            def __instancecheck__(self, inst):
-                return True
-            def __subclasscheck__(self, cls):
-                return True
-        class Sub(X): pass
-        self.assertNotIsInstance(3, X)
-        self.assertIsInstance(X(), X)
-        self.assertFalse(issubclass(int, X))
-        self.assertTrue(issubclass(Sub, X))
-
-
-def test_main():
-    test_support.run_unittest(TypeChecksTest)
-
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_types.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_types.py
deleted file mode 100644
index 38d0862..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_types.py
+++ /dev/null
@@ -1,756 +0,0 @@
-# Python test set -- part 6, built-in types
-
-from test.test_support import run_unittest, have_unicode, run_with_locale, \
-                              check_py3k_warnings
-import unittest
-import sys
-import locale
-
-class TypesTests(unittest.TestCase):
-
-    def test_truth_values(self):
-        if None: self.fail('None is true instead of false')
-        if 0: self.fail('0 is true instead of false')
-        if 0L: self.fail('0L is true instead of false')
-        if 0.0: self.fail('0.0 is true instead of false')
-        if '': self.fail('\'\' is true instead of false')
-        if not 1: self.fail('1 is false instead of true')
-        if not 1L: self.fail('1L is false instead of true')
-        if not 1.0: self.fail('1.0 is false instead of true')
-        if not 'x': self.fail('\'x\' is false instead of true')
-        if not {'x': 1}: self.fail('{\'x\': 1} is false instead of true')
-        def f(): pass
-        class C: pass
-        x = C()
-        if not f: self.fail('f is false instead of true')
-        if not C: self.fail('C is false instead of true')
-        if not sys: self.fail('sys is false instead of true')
-        if not x: self.fail('x is false instead of true')
-
-    def test_boolean_ops(self):
-        if 0 or 0: self.fail('0 or 0 is true instead of false')
-        if 1 and 1: pass
-        else: self.fail('1 and 1 is false instead of true')
-        if not 1: self.fail('not 1 is true instead of false')
-
-    def test_comparisons(self):
-        if 0 < 1 <= 1 == 1 >= 1 > 0 != 1: pass
-        else: self.fail('int comparisons failed')
-        if 0L < 1L <= 1L == 1L >= 1L > 0L != 1L: pass
-        else: self.fail('long int comparisons failed')
-        if 0.0 < 1.0 <= 1.0 == 1.0 >= 1.0 > 0.0 != 1.0: pass
-        else: self.fail('float comparisons failed')
-        if '' < 'a' <= 'a' == 'a' < 'abc' < 'abd' < 'b': pass
-        else: self.fail('string comparisons failed')
-        if None is None: pass
-        else: self.fail('identity test failed')
-
-    def test_float_constructor(self):
-        self.assertRaises(ValueError, float, '')
-        self.assertRaises(ValueError, float, '5\0')
-
-    def test_zero_division(self):
-        try: 5.0 / 0.0
-        except ZeroDivisionError: pass
-        else: self.fail("5.0 / 0.0 didn't raise ZeroDivisionError")
-
-        try: 5.0 // 0.0
-        except ZeroDivisionError: pass
-        else: self.fail("5.0 // 0.0 didn't raise ZeroDivisionError")
-
-        try: 5.0 % 0.0
-        except ZeroDivisionError: pass
-        else: self.fail("5.0 % 0.0 didn't raise ZeroDivisionError")
-
-        try: 5 / 0L
-        except ZeroDivisionError: pass
-        else: self.fail("5 / 0L didn't raise ZeroDivisionError")
-
-        try: 5 // 0L
-        except ZeroDivisionError: pass
-        else: self.fail("5 // 0L didn't raise ZeroDivisionError")
-
-        try: 5 % 0L
-        except ZeroDivisionError: pass
-        else: self.fail("5 % 0L didn't raise ZeroDivisionError")
-
-    def test_numeric_types(self):
-        if 0 != 0L or 0 != 0.0 or 0L != 0.0: self.fail('mixed comparisons')
-        if 1 != 1L or 1 != 1.0 or 1L != 1.0: self.fail('mixed comparisons')
-        if -1 != -1L or -1 != -1.0 or -1L != -1.0:
-            self.fail('int/long/float value not equal')
-        # calling built-in types without argument must return 0
-        if int() != 0: self.fail('int() does not return 0')
-        if long() != 0L: self.fail('long() does not return 0L')
-        if float() != 0.0: self.fail('float() does not return 0.0')
-        if int(1.9) == 1 == int(1.1) and int(-1.1) == -1 == int(-1.9): pass
-        else: self.fail('int() does not round properly')
-        if long(1.9) == 1L == long(1.1) and long(-1.1) == -1L == long(-1.9): pass
-        else: self.fail('long() does not round properly')
-        if float(1) == 1.0 and float(-1) == -1.0 and float(0) == 0.0: pass
-        else: self.fail('float() does not work properly')
-
-    def test_float_to_string(self):
-        def test(f, result):
-            self.assertEqual(f.__format__('e'), result)
-            self.assertEqual('%e' % f, result)
-
-        # test all 2 digit exponents, both with __format__ and with
-        #  '%' formatting
-        for i in range(-99, 100):
-            test(float('1.5e'+str(i)), '1.500000e{0:+03d}'.format(i))
-
-        # test some 3 digit exponents
-        self.assertEqual(1.5e100.__format__('e'), '1.500000e+100')
-        self.assertEqual('%e' % 1.5e100, '1.500000e+100')
-
-        self.assertEqual(1.5e101.__format__('e'), '1.500000e+101')
-        self.assertEqual('%e' % 1.5e101, '1.500000e+101')
-
-        self.assertEqual(1.5e-100.__format__('e'), '1.500000e-100')
-        self.assertEqual('%e' % 1.5e-100, '1.500000e-100')
-
-        self.assertEqual(1.5e-101.__format__('e'), '1.500000e-101')
-        self.assertEqual('%e' % 1.5e-101, '1.500000e-101')
-
-        self.assertEqual('%g' % 1.0, '1')
-        self.assertEqual('%#g' % 1.0, '1.00000')
-
-    def test_normal_integers(self):
-        # Ensure the first 256 integers are shared
-        a = 256
-        b = 128*2
-        if a is not b: self.fail('256 is not shared')
-        if 12 + 24 != 36: self.fail('int op')
-        if 12 + (-24) != -12: self.fail('int op')
-        if (-12) + 24 != 12: self.fail('int op')
-        if (-12) + (-24) != -36: self.fail('int op')
-        if not 12 < 24: self.fail('int op')
-        if not -24 < -12: self.fail('int op')
-        # Test for a particular bug in integer multiply
-        xsize, ysize, zsize = 238, 356, 4
-        if not (xsize*ysize*zsize == zsize*xsize*ysize == 338912):
-            self.fail('int mul commutativity')
-        # And another.
-        m = -sys.maxint - 1
-        for divisor in 1, 2, 4, 8, 16, 32:
-            j = m // divisor
-            prod = divisor * j
-            if prod != m:
-                self.fail("%r * %r == %r != %r" % (divisor, j, prod, m))
-            if type(prod) is not int:
-                self.fail("expected type(prod) to be int, not %r" %
-                                   type(prod))
-        # Check for expected * overflow to long.
-        for divisor in 1, 2, 4, 8, 16, 32:
-            j = m // divisor - 1
-            prod = divisor * j
-            if type(prod) is not long:
-                self.fail("expected type(%r) to be long, not %r" %
-                                   (prod, type(prod)))
-        # Check for expected * overflow to long.
-        m = sys.maxint
-        for divisor in 1, 2, 4, 8, 16, 32:
-            j = m // divisor + 1
-            prod = divisor * j
-            if type(prod) is not long:
-                self.fail("expected type(%r) to be long, not %r" %
-                                   (prod, type(prod)))
-
-    def test_long_integers(self):
-        if 12L + 24L != 36L: self.fail('long op')
-        if 12L + (-24L) != -12L: self.fail('long op')
-        if (-12L) + 24L != 12L: self.fail('long op')
-        if (-12L) + (-24L) != -36L: self.fail('long op')
-        if not 12L < 24L: self.fail('long op')
-        if not -24L < -12L: self.fail('long op')
-        x = sys.maxint
-        if int(long(x)) != x: self.fail('long op')
-        try: y = int(long(x)+1L)
-        except OverflowError: self.fail('long op')
-        if not isinstance(y, long): self.fail('long op')
-        x = -x
-        if int(long(x)) != x: self.fail('long op')
-        x = x-1
-        if int(long(x)) != x: self.fail('long op')
-        try: y = int(long(x)-1L)
-        except OverflowError: self.fail('long op')
-        if not isinstance(y, long): self.fail('long op')
-
-        try: 5 << -5
-        except ValueError: pass
-        else: self.fail('int negative shift <<')
-
-        try: 5L << -5L
-        except ValueError: pass
-        else: self.fail('long negative shift <<')
-
-        try: 5 >> -5
-        except ValueError: pass
-        else: self.fail('int negative shift >>')
-
-        try: 5L >> -5L
-        except ValueError: pass
-        else: self.fail('long negative shift >>')
-
-    def test_floats(self):
-        if 12.0 + 24.0 != 36.0: self.fail('float op')
-        if 12.0 + (-24.0) != -12.0: self.fail('float op')
-        if (-12.0) + 24.0 != 12.0: self.fail('float op')
-        if (-12.0) + (-24.0) != -36.0: self.fail('float op')
-        if not 12.0 < 24.0: self.fail('float op')
-        if not -24.0 < -12.0: self.fail('float op')
-
-    def test_strings(self):
-        if len('') != 0: self.fail('len(\'\')')
-        if len('a') != 1: self.fail('len(\'a\')')
-        if len('abcdef') != 6: self.fail('len(\'abcdef\')')
-        if 'xyz' + 'abcde' != 'xyzabcde': self.fail('string concatenation')
-        if 'xyz'*3 != 'xyzxyzxyz': self.fail('string repetition *3')
-        if 0*'abcde' != '': self.fail('string repetition 0*')
-        if min('abc') != 'a' or max('abc') != 'c': self.fail('min/max string')
-        if 'a' in 'abc' and 'b' in 'abc' and 'c' in 'abc' and 'd' not in 'abc': pass
-        else: self.fail('in/not in string')
-        x = 'x'*103
-        if '%s!'%x != x+'!': self.fail('nasty string formatting bug')
-
-        #extended slices for strings
-        a = '0123456789'
-        self.assertEqual(a[::], a)
-        self.assertEqual(a[::2], '02468')
-        self.assertEqual(a[1::2], '13579')
-        self.assertEqual(a[::-1],'9876543210')
-        self.assertEqual(a[::-2], '97531')
-        self.assertEqual(a[3::-2], '31')
-        self.assertEqual(a[-100:100:], a)
-        self.assertEqual(a[100:-100:-1], a[::-1])
-        self.assertEqual(a[-100L:100L:2L], '02468')
-
-        if have_unicode:
-            a = unicode('0123456789', 'ascii')
-            self.assertEqual(a[::], a)
-            self.assertEqual(a[::2], unicode('02468', 'ascii'))
-            self.assertEqual(a[1::2], unicode('13579', 'ascii'))
-            self.assertEqual(a[::-1], unicode('9876543210', 'ascii'))
-            self.assertEqual(a[::-2], unicode('97531', 'ascii'))
-            self.assertEqual(a[3::-2], unicode('31', 'ascii'))
-            self.assertEqual(a[-100:100:], a)
-            self.assertEqual(a[100:-100:-1], a[::-1])
-            self.assertEqual(a[-100L:100L:2L], unicode('02468', 'ascii'))
-
-
-    def test_type_function(self):
-        self.assertRaises(TypeError, type, 1, 2)
-        self.assertRaises(TypeError, type, 1, 2, 3, 4)
-
-    def test_buffers(self):
-        self.assertRaises(ValueError, buffer, 'asdf', -1)
-        cmp(buffer("abc"), buffer("def")) # used to raise a warning: tp_compare didn't return -1, 0, or 1
-
-        self.assertRaises(TypeError, buffer, None)
-
-        a = buffer('asdf')
-        hash(a)
-        b = a * 5
-        if a == b:
-            self.fail('buffers should not be equal')
-        if str(b) != ('asdf' * 5):
-            self.fail('repeated buffer has wrong content')
-        if str(a * 0) != '':
-            self.fail('repeated buffer zero times has wrong content')
-        if str(a + buffer('def')) != 'asdfdef':
-            self.fail('concatenation of buffers yields wrong content')
-        if str(buffer(a)) != 'asdf':
-            self.fail('composing buffers failed')
-        if str(buffer(a, 2)) != 'df':
-            self.fail('specifying buffer offset failed')
-        if str(buffer(a, 0, 2)) != 'as':
-            self.fail('specifying buffer size failed')
-        if str(buffer(a, 1, 2)) != 'sd':
-            self.fail('specifying buffer offset and size failed')
-        self.assertRaises(ValueError, buffer, buffer('asdf', 1), -1)
-        if str(buffer(buffer('asdf', 0, 2), 0)) != 'as':
-            self.fail('composing length-specified buffer failed')
-        if str(buffer(buffer('asdf', 0, 2), 0, 5000)) != 'as':
-            self.fail('composing length-specified buffer failed')
-        if str(buffer(buffer('asdf', 0, 2), 0, -1)) != 'as':
-            self.fail('composing length-specified buffer failed')
-        if str(buffer(buffer('asdf', 0, 2), 1, 2)) != 's':
-            self.fail('composing length-specified buffer failed')
-
-        try: a[1] = 'g'
-        except TypeError: pass
-        else: self.fail("buffer assignment should raise TypeError")
-
-        try: a[0:1] = 'g'
-        except TypeError: pass
-        else: self.fail("buffer slice assignment should raise TypeError")
-
-        # array.array() returns an object that does not implement a char buffer,
-        # something which int() uses for conversion.
-        import array
-        try: int(buffer(array.array('c')))
-        except TypeError: pass
-        else: self.fail("char buffer (at C level) not working")
-
-    def test_int__format__(self):
-        def test(i, format_spec, result):
-            # just make sure I'm not accidentally checking longs
-            assert type(i) == int
-            assert type(format_spec) == str
-            self.assertEqual(i.__format__(format_spec), result)
-            self.assertEqual(i.__format__(unicode(format_spec)), result)
-
-        test(123456789, 'd', '123456789')
-        test(123456789, 'd', '123456789')
-
-        test(1, 'c', '\01')
-
-        # sign and aligning are interdependent
-        test(1, "-", '1')
-        test(-1, "-", '-1')
-        test(1, "-3", '  1')
-        test(-1, "-3", ' -1')
-        test(1, "+3", ' +1')
-        test(-1, "+3", ' -1')
-        test(1, " 3", '  1')
-        test(-1, " 3", ' -1')
-        test(1, " ", ' 1')
-        test(-1, " ", '-1')
-
-        # hex
-        test(3, "x", "3")
-        test(3, "X", "3")
-        test(1234, "x", "4d2")
-        test(-1234, "x", "-4d2")
-        test(1234, "8x", "     4d2")
-        test(-1234, "8x", "    -4d2")
-        test(1234, "x", "4d2")
-        test(-1234, "x", "-4d2")
-        test(-3, "x", "-3")
-        test(-3, "X", "-3")
-        test(int('be', 16), "x", "be")
-        test(int('be', 16), "X", "BE")
-        test(-int('be', 16), "x", "-be")
-        test(-int('be', 16), "X", "-BE")
-
-        # octal
-        test(3, "o", "3")
-        test(-3, "o", "-3")
-        test(65, "o", "101")
-        test(-65, "o", "-101")
-        test(1234, "o", "2322")
-        test(-1234, "o", "-2322")
-        test(1234, "-o", "2322")
-        test(-1234, "-o", "-2322")
-        test(1234, " o", " 2322")
-        test(-1234, " o", "-2322")
-        test(1234, "+o", "+2322")
-        test(-1234, "+o", "-2322")
-
-        # binary
-        test(3, "b", "11")
-        test(-3, "b", "-11")
-        test(1234, "b", "10011010010")
-        test(-1234, "b", "-10011010010")
-        test(1234, "-b", "10011010010")
-        test(-1234, "-b", "-10011010010")
-        test(1234, " b", " 10011010010")
-        test(-1234, " b", "-10011010010")
-        test(1234, "+b", "+10011010010")
-        test(-1234, "+b", "-10011010010")
-
-        # alternate (#) formatting
-        test(0, "#b", '0b0')
-        test(0, "-#b", '0b0')
-        test(1, "-#b", '0b1')
-        test(-1, "-#b", '-0b1')
-        test(-1, "-#5b", ' -0b1')
-        test(1, "+#5b", ' +0b1')
-        test(100, "+#b", '+0b1100100')
-        test(100, "#012b", '0b0001100100')
-        test(-100, "#012b", '-0b001100100')
-
-        test(0, "#o", '0o0')
-        test(0, "-#o", '0o0')
-        test(1, "-#o", '0o1')
-        test(-1, "-#o", '-0o1')
-        test(-1, "-#5o", ' -0o1')
-        test(1, "+#5o", ' +0o1')
-        test(100, "+#o", '+0o144')
-        test(100, "#012o", '0o0000000144')
-        test(-100, "#012o", '-0o000000144')
-
-        test(0, "#x", '0x0')
-        test(0, "-#x", '0x0')
-        test(1, "-#x", '0x1')
-        test(-1, "-#x", '-0x1')
-        test(-1, "-#5x", ' -0x1')
-        test(1, "+#5x", ' +0x1')
-        test(100, "+#x", '+0x64')
-        test(100, "#012x", '0x0000000064')
-        test(-100, "#012x", '-0x000000064')
-        test(123456, "#012x", '0x000001e240')
-        test(-123456, "#012x", '-0x00001e240')
-
-        test(0, "#X", '0X0')
-        test(0, "-#X", '0X0')
-        test(1, "-#X", '0X1')
-        test(-1, "-#X", '-0X1')
-        test(-1, "-#5X", ' -0X1')
-        test(1, "+#5X", ' +0X1')
-        test(100, "+#X", '+0X64')
-        test(100, "#012X", '0X0000000064')
-        test(-100, "#012X", '-0X000000064')
-        test(123456, "#012X", '0X000001E240')
-        test(-123456, "#012X", '-0X00001E240')
-
-        # issue 5782, commas with no specifier type
-        test(1234, '010,', '00,001,234')
-
-        # make sure these are errors
-
-        # precision disallowed
-        self.assertRaises(ValueError, 3 .__format__, "1.3")
-        # sign not allowed with 'c'
-        self.assertRaises(ValueError, 3 .__format__, "+c")
-        # format spec must be string
-        self.assertRaises(TypeError, 3 .__format__, None)
-        self.assertRaises(TypeError, 3 .__format__, 0)
-
-        # can't have ',' with 'c'
-        self.assertRaises(ValueError, 3 .__format__, ",c")
-
-        # ensure that only int and float type specifiers work
-        for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] +
-                            [chr(x) for x in range(ord('A'), ord('Z')+1)]):
-            if not format_spec in 'bcdoxXeEfFgGn%':
-                self.assertRaises(ValueError, 0 .__format__, format_spec)
-                self.assertRaises(ValueError, 1 .__format__, format_spec)
-                self.assertRaises(ValueError, (-1) .__format__, format_spec)
-
-        # ensure that float type specifiers work; format converts
-        #  the int to a float
-        for format_spec in 'eEfFgG%':
-            for value in [0, 1, -1, 100, -100, 1234567890, -1234567890]:
-                self.assertEqual(value.__format__(format_spec),
-                                 float(value).__format__(format_spec))
-
-        # Issue 6902
-        test(123456, "0<20", '12345600000000000000')
-        test(123456, "1<20", '12345611111111111111')
-        test(123456, "*<20", '123456**************')
-        test(123456, "0>20", '00000000000000123456')
-        test(123456, "1>20", '11111111111111123456')
-        test(123456, "*>20", '**************123456')
-        test(123456, "0=20", '00000000000000123456')
-        test(123456, "1=20", '11111111111111123456')
-        test(123456, "*=20", '**************123456')
-
-    def test_long__format__(self):
-        def test(i, format_spec, result):
-            # make sure we're not accidentally checking ints
-            assert type(i) == long
-            assert type(format_spec) == str
-            self.assertEqual(i.__format__(format_spec), result)
-            self.assertEqual(i.__format__(unicode(format_spec)), result)
-
-        test(10**100, 'd', '1' + '0' * 100)
-        test(10**100+100, 'd', '1' + '0' * 97 + '100')
-
-        test(123456789L, 'd', '123456789')
-        test(123456789L, 'd', '123456789')
-
-        # sign and aligning are interdependent
-        test(1L, "-", '1')
-        test(-1L, "-", '-1')
-        test(1L, "-3", '  1')
-        test(-1L, "-3", ' -1')
-        test(1L, "+3", ' +1')
-        test(-1L, "+3", ' -1')
-        test(1L, " 3", '  1')
-        test(-1L, " 3", ' -1')
-        test(1L, " ", ' 1')
-        test(-1L, " ", '-1')
-
-        test(1L, 'c', '\01')
-
-        # hex
-        test(3L, "x", "3")
-        test(3L, "X", "3")
-        test(1234L, "x", "4d2")
-        test(-1234L, "x", "-4d2")
-        test(1234L, "8x", "     4d2")
-        test(-1234L, "8x", "    -4d2")
-        test(1234L, "x", "4d2")
-        test(-1234L, "x", "-4d2")
-        test(-3L, "x", "-3")
-        test(-3L, "X", "-3")
-        test(long('be', 16), "x", "be")
-        test(long('be', 16), "X", "BE")
-        test(-long('be', 16), "x", "-be")
-        test(-long('be', 16), "X", "-BE")
-
-        # octal
-        test(3L, "o", "3")
-        test(-3L, "o", "-3")
-        test(65L, "o", "101")
-        test(-65L, "o", "-101")
-        test(1234L, "o", "2322")
-        test(-1234L, "o", "-2322")
-        test(1234L, "-o", "2322")
-        test(-1234L, "-o", "-2322")
-        test(1234L, " o", " 2322")
-        test(-1234L, " o", "-2322")
-        test(1234L, "+o", "+2322")
-        test(-1234L, "+o", "-2322")
-
-        # binary
-        test(3L, "b", "11")
-        test(-3L, "b", "-11")
-        test(1234L, "b", "10011010010")
-        test(-1234L, "b", "-10011010010")
-        test(1234L, "-b", "10011010010")
-        test(-1234L, "-b", "-10011010010")
-        test(1234L, " b", " 10011010010")
-        test(-1234L, " b", "-10011010010")
-        test(1234L, "+b", "+10011010010")
-        test(-1234L, "+b", "-10011010010")
-
-        # make sure these are errors
-
-        # precision disallowed
-        self.assertRaises(ValueError, 3L .__format__, "1.3")
-        # sign not allowed with 'c'
-        self.assertRaises(ValueError, 3L .__format__, "+c")
-        # format spec must be string
-        self.assertRaises(TypeError, 3L .__format__, None)
-        self.assertRaises(TypeError, 3L .__format__, 0)
-        # alternate specifier in wrong place
-        self.assertRaises(ValueError, 1L .__format__, "#+5x")
-        self.assertRaises(ValueError, 1L .__format__, "+5#x")
-
-        # ensure that only int and float type specifiers work
-        for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] +
-                            [chr(x) for x in range(ord('A'), ord('Z')+1)]):
-            if not format_spec in 'bcdoxXeEfFgGn%':
-                self.assertRaises(ValueError, 0L .__format__, format_spec)
-                self.assertRaises(ValueError, 1L .__format__, format_spec)
-                self.assertRaises(ValueError, (-1L) .__format__, format_spec)
-
-        # ensure that float type specifiers work; format converts
-        #  the long to a float
-        for format_spec in 'eEfFgG%':
-            for value in [0L, 1L, -1L, 100L, -100L, 1234567890L, -1234567890L]:
-                self.assertEqual(value.__format__(format_spec),
-                                 float(value).__format__(format_spec))
-        # Issue 6902
-        test(123456L, "0<20", '12345600000000000000')
-        test(123456L, "1<20", '12345611111111111111')
-        test(123456L, "*<20", '123456**************')
-        test(123456L, "0>20", '00000000000000123456')
-        test(123456L, "1>20", '11111111111111123456')
-        test(123456L, "*>20", '**************123456')
-        test(123456L, "0=20", '00000000000000123456')
-        test(123456L, "1=20", '11111111111111123456')
-        test(123456L, "*=20", '**************123456')
-
-    @run_with_locale('LC_NUMERIC', 'en_US.UTF8')
-    def test_float__format__locale(self):
-        # test locale support for __format__ code 'n'
-
-        for i in range(-10, 10):
-            x = 1234567890.0 * (10.0 ** i)
-            self.assertEqual(locale.format('%g', x, grouping=True), format(x, 'n'))
-            self.assertEqual(locale.format('%.10g', x, grouping=True), format(x, '.10n'))
-
-    @run_with_locale('LC_NUMERIC', 'en_US.UTF8')
-    def test_int__format__locale(self):
-        # test locale support for __format__ code 'n' for integers
-
-        x = 123456789012345678901234567890
-        for i in range(0, 30):
-            self.assertEqual(locale.format('%d', x, grouping=True), format(x, 'n'))
-
-            # move to the next integer to test
-            x = x // 10
-
-        rfmt = ">20n"
-        lfmt = "<20n"
-        cfmt = "^20n"
-        for x in (1234, 12345, 123456, 1234567, 12345678, 123456789, 1234567890, 12345678900):
-            self.assertEqual(len(format(0, rfmt)), len(format(x, rfmt)))
-            self.assertEqual(len(format(0, lfmt)), len(format(x, lfmt)))
-            self.assertEqual(len(format(0, cfmt)), len(format(x, cfmt)))
-
-    def test_float__format__(self):
-        # these should be rewritten to use both format(x, spec) and
-        # x.__format__(spec)
-
-        def test(f, format_spec, result):
-            assert type(f) == float
-            assert type(format_spec) == str
-            self.assertEqual(f.__format__(format_spec), result)
-            self.assertEqual(f.__format__(unicode(format_spec)), result)
-
-        test(0.0, 'f', '0.000000')
-
-        # the default is 'g', except for empty format spec
-        test(0.0, '', '0.0')
-        test(0.01, '', '0.01')
-        test(0.01, 'g', '0.01')
-
-        # test for issue 3411
-        test(1.23, '1', '1.23')
-        test(-1.23, '1', '-1.23')
-        test(1.23, '1g', '1.23')
-        test(-1.23, '1g', '-1.23')
-
-        test( 1.0, ' g', ' 1')
-        test(-1.0, ' g', '-1')
-        test( 1.0, '+g', '+1')
-        test(-1.0, '+g', '-1')
-        test(1.1234e200, 'g', '1.1234e+200')
-        test(1.1234e200, 'G', '1.1234E+200')
-
-
-        test(1.0, 'f', '1.000000')
-
-        test(-1.0, 'f', '-1.000000')
-
-        test( 1.0, ' f', ' 1.000000')
-        test(-1.0, ' f', '-1.000000')
-        test( 1.0, '+f', '+1.000000')
-        test(-1.0, '+f', '-1.000000')
-
-        # Python versions <= 2.6 switched from 'f' to 'g' formatting for
-        # values larger than 1e50.  No longer.
-        f = 1.1234e90
-        for fmt in 'f', 'F':
-            # don't do a direct equality check, since on some
-            # platforms only the first few digits of dtoa
-            # will be reliable
-            result = f.__format__(fmt)
-            self.assertEqual(len(result), 98)
-            self.assertEqual(result[-7], '.')
-            self.assertIn(result[:12], ('112340000000', '112339999999'))
-        f = 1.1234e200
-        for fmt in 'f', 'F':
-            result = f.__format__(fmt)
-            self.assertEqual(len(result), 208)
-            self.assertEqual(result[-7], '.')
-            self.assertIn(result[:12], ('112340000000', '112339999999'))
-
-
-        test( 1.0, 'e', '1.000000e+00')
-        test(-1.0, 'e', '-1.000000e+00')
-        test( 1.0, 'E', '1.000000E+00')
-        test(-1.0, 'E', '-1.000000E+00')
-        test(1.1234e20, 'e', '1.123400e+20')
-        test(1.1234e20, 'E', '1.123400E+20')
-
-        # No format code means use g, but must have a decimal
-        # and a number after the decimal.  This is tricky, because
-        # a totaly empty format specifier means something else.
-        # So, just use a sign flag
-        test(1e200, '+g', '+1e+200')
-        test(1e200, '+', '+1e+200')
-        test(1.1e200, '+g', '+1.1e+200')
-        test(1.1e200, '+', '+1.1e+200')
-
-        test(1.1e200, '+g', '+1.1e+200')
-        test(1.1e200, '+', '+1.1e+200')
-
-        # 0 padding
-        test(1234., '010f', '1234.000000')
-        test(1234., '011f', '1234.000000')
-        test(1234., '012f', '01234.000000')
-        test(-1234., '011f', '-1234.000000')
-        test(-1234., '012f', '-1234.000000')
-        test(-1234., '013f', '-01234.000000')
-        test(-1234.12341234, '013f', '-01234.123412')
-        test(-123456.12341234, '011.2f', '-0123456.12')
-
-        # issue 5782, commas with no specifier type
-        test(1.2, '010,.2', '0,000,001.2')
-
-        # 0 padding with commas
-        test(1234., '011,f', '1,234.000000')
-        test(1234., '012,f', '1,234.000000')
-        test(1234., '013,f', '01,234.000000')
-        test(-1234., '012,f', '-1,234.000000')
-        test(-1234., '013,f', '-1,234.000000')
-        test(-1234., '014,f', '-01,234.000000')
-        test(-12345., '015,f', '-012,345.000000')
-        test(-123456., '016,f', '-0,123,456.000000')
-        test(-123456., '017,f', '-0,123,456.000000')
-        test(-123456.12341234, '017,f', '-0,123,456.123412')
-        test(-123456.12341234, '013,.2f', '-0,123,456.12')
-
-         # % formatting
-        test(-1.0, '%', '-100.000000%')
-
-        # format spec must be string
-        self.assertRaises(TypeError, 3.0.__format__, None)
-        self.assertRaises(TypeError, 3.0.__format__, 0)
-
-        # other format specifiers shouldn't work on floats,
-        #  in particular int specifiers
-        for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] +
-                            [chr(x) for x in range(ord('A'), ord('Z')+1)]):
-            if not format_spec in 'eEfFgGn%':
-                self.assertRaises(ValueError, format, 0.0, format_spec)
-                self.assertRaises(ValueError, format, 1.0, format_spec)
-                self.assertRaises(ValueError, format, -1.0, format_spec)
-                self.assertRaises(ValueError, format, 1e100, format_spec)
-                self.assertRaises(ValueError, format, -1e100, format_spec)
-                self.assertRaises(ValueError, format, 1e-100, format_spec)
-                self.assertRaises(ValueError, format, -1e-100, format_spec)
-
-        # Alternate formatting is not supported
-        self.assertRaises(ValueError, format, 0.0, '#')
-        self.assertRaises(ValueError, format, 0.0, '#20f')
-
-        # Issue 6902
-        test(12345.6, "0<20", '12345.60000000000000')
-        test(12345.6, "1<20", '12345.61111111111111')
-        test(12345.6, "*<20", '12345.6*************')
-        test(12345.6, "0>20", '000000000000012345.6')
-        test(12345.6, "1>20", '111111111111112345.6')
-        test(12345.6, "*>20", '*************12345.6')
-        test(12345.6, "0=20", '000000000000012345.6')
-        test(12345.6, "1=20", '111111111111112345.6')
-        test(12345.6, "*=20", '*************12345.6')
-
-    def test_format_spec_errors(self):
-        # int, float, and string all share the same format spec
-        # mini-language parser.
-
-        # Check that we can't ask for too many digits. This is
-        # probably a CPython specific test. It tries to put the width
-        # into a C long.
-        self.assertRaises(ValueError, format, 0, '1'*10000 + 'd')
-
-        # Similar with the precision.
-        self.assertRaises(ValueError, format, 0, '.' + '1'*10000 + 'd')
-
-        # And may as well test both.
-        self.assertRaises(ValueError, format, 0, '1'*1000 + '.' + '1'*10000 + 'd')
-
-        # Make sure commas aren't allowed with various type codes
-        for code in 'xXobns':
-            self.assertRaises(ValueError, format, 0, ',' + code)
-
-    def test_internal_sizes(self):
-        self.assertGreater(object.__basicsize__, 0)
-        self.assertGreater(tuple.__itemsize__, 0)
-
-
-def test_main():
-    with check_py3k_warnings(
-            ("buffer.. not supported", DeprecationWarning),
-            ("classic long division", DeprecationWarning)):
-        run_unittest(TypesTests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ucn.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ucn.py
deleted file mode 100644
index 9b18d62..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_ucn.py
+++ /dev/null
@@ -1,144 +0,0 @@
-""" Test script for the Unicode implementation.
-
-Written by Bill Tutt.
-Modified for Python 2.0 by Fredrik Lundh (fredrik@pythonware.com)
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""#"
-
-import unittest
-
-from test import test_support
-
-class UnicodeNamesTest(unittest.TestCase):
-
-    def checkletter(self, name, code):
-        # Helper that put all \N escapes inside eval'd raw strings,
-        # to make sure this script runs even if the compiler
-        # chokes on \N escapes
-        res = eval(ur'u"\N{%s}"' % name)
-        self.assertEqual(res, code)
-        return res
-
-    def test_general(self):
-        # General and case insensitivity test:
-        chars = [
-            "LATIN CAPITAL LETTER T",
-            "LATIN SMALL LETTER H",
-            "LATIN SMALL LETTER E",
-            "SPACE",
-            "LATIN SMALL LETTER R",
-            "LATIN CAPITAL LETTER E",
-            "LATIN SMALL LETTER D",
-            "SPACE",
-            "LATIN SMALL LETTER f",
-            "LATIN CAPITAL LeTtEr o",
-            "LATIN SMaLl LETTER x",
-            "SPACE",
-            "LATIN SMALL LETTER A",
-            "LATIN SMALL LETTER T",
-            "LATIN SMALL LETTER E",
-            "SPACE",
-            "LATIN SMALL LETTER T",
-            "LATIN SMALL LETTER H",
-            "LATIN SMALL LETTER E",
-            "SpAcE",
-            "LATIN SMALL LETTER S",
-            "LATIN SMALL LETTER H",
-            "LATIN small LETTER e",
-            "LATIN small LETTER e",
-            "LATIN SMALL LETTER P",
-            "FULL STOP"
-        ]
-        string = u"The rEd fOx ate the sheep."
-
-        self.assertEqual(
-            u"".join([self.checkletter(*args) for args in zip(chars, string)]),
-            string
-        )
-
-    def test_ascii_letters(self):
-        import unicodedata
-
-        for char in "".join(map(chr, xrange(ord("a"), ord("z")))):
-            name = "LATIN SMALL LETTER %s" % char.upper()
-            code = unicodedata.lookup(name)
-            self.assertEqual(unicodedata.name(code), name)
-
-    def test_hangul_syllables(self):
-        self.checkletter("HANGUL SYLLABLE GA", u"\uac00")
-        self.checkletter("HANGUL SYLLABLE GGWEOSS", u"\uafe8")
-        self.checkletter("HANGUL SYLLABLE DOLS", u"\ub3d0")
-        self.checkletter("HANGUL SYLLABLE RYAN", u"\ub7b8")
-        self.checkletter("HANGUL SYLLABLE MWIK", u"\ubba0")
-        self.checkletter("HANGUL SYLLABLE BBWAEM", u"\ubf88")
-        self.checkletter("HANGUL SYLLABLE SSEOL", u"\uc370")
-        self.checkletter("HANGUL SYLLABLE YI", u"\uc758")
-        self.checkletter("HANGUL SYLLABLE JJYOSS", u"\ucb40")
-        self.checkletter("HANGUL SYLLABLE KYEOLS", u"\ucf28")
-        self.checkletter("HANGUL SYLLABLE PAN", u"\ud310")
-        self.checkletter("HANGUL SYLLABLE HWEOK", u"\ud6f8")
-        self.checkletter("HANGUL SYLLABLE HIH", u"\ud7a3")
-
-        import unicodedata
-        self.assertRaises(ValueError, unicodedata.name, u"\ud7a4")
-
-    def test_cjk_unified_ideographs(self):
-        self.checkletter("CJK UNIFIED IDEOGRAPH-3400", u"\u3400")
-        self.checkletter("CJK UNIFIED IDEOGRAPH-4DB5", u"\u4db5")
-        self.checkletter("CJK UNIFIED IDEOGRAPH-4E00", u"\u4e00")
-        self.checkletter("CJK UNIFIED IDEOGRAPH-9FA5", u"\u9fa5")
-        self.checkletter("CJK UNIFIED IDEOGRAPH-20000", u"\U00020000")
-        self.checkletter("CJK UNIFIED IDEOGRAPH-2A6D6", u"\U0002a6d6")
-
-    def test_bmp_characters(self):
-        import unicodedata
-        count = 0
-        for code in xrange(0x10000):
-            char = unichr(code)
-            name = unicodedata.name(char, None)
-            if name is not None:
-                self.assertEqual(unicodedata.lookup(name), char)
-                count += 1
-
-    def test_misc_symbols(self):
-        self.checkletter("PILCROW SIGN", u"\u00b6")
-        self.checkletter("REPLACEMENT CHARACTER", u"\uFFFD")
-        self.checkletter("HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK", u"\uFF9F")
-        self.checkletter("FULLWIDTH LATIN SMALL LETTER A", u"\uFF41")
-
-    def test_errors(self):
-        import unicodedata
-        self.assertRaises(TypeError, unicodedata.name)
-        self.assertRaises(TypeError, unicodedata.name, u'xx')
-        self.assertRaises(TypeError, unicodedata.lookup)
-        self.assertRaises(KeyError, unicodedata.lookup, u'unknown')
-
-    def test_strict_eror_handling(self):
-        # bogus character name
-        self.assertRaises(
-            UnicodeError,
-            unicode, "\\N{blah}", 'unicode-escape', 'strict'
-        )
-        # long bogus character name
-        self.assertRaises(
-            UnicodeError,
-            unicode, "\\N{%s}" % ("x" * 100000), 'unicode-escape', 'strict'
-        )
-        # missing closing brace
-        self.assertRaises(
-            UnicodeError,
-            unicode, "\\N{SPACE", 'unicode-escape', 'strict'
-        )
-        # missing opening brace
-        self.assertRaises(
-            UnicodeError,
-            unicode, "\\NSPACE", 'unicode-escape', 'strict'
-        )
-
-def test_main():
-    test_support.run_unittest(UnicodeNamesTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unary.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unary.py
deleted file mode 100644
index 7a11959..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unary.py
+++ /dev/null
@@ -1,59 +0,0 @@
-"""Test compiler changes for unary ops (+, -, ~) introduced in Python 2.2"""
-
-import unittest
-from test.test_support import run_unittest, have_unicode
-
-class UnaryOpTestCase(unittest.TestCase):
-
-    def test_negative(self):
-        self.assertTrue(-2 == 0 - 2)
-        self.assertTrue(-0 == 0)
-        self.assertTrue(--2 == 2)
-        self.assertTrue(-2L == 0 - 2L)
-        self.assertTrue(-2.0 == 0 - 2.0)
-        self.assertTrue(-2j == 0 - 2j)
-
-    def test_positive(self):
-        self.assertTrue(+2 == 2)
-        self.assertTrue(+0 == 0)
-        self.assertTrue(++2 == 2)
-        self.assertTrue(+2L == 2L)
-        self.assertTrue(+2.0 == 2.0)
-        self.assertTrue(+2j == 2j)
-
-    def test_invert(self):
-        self.assertTrue(-2 == 0 - 2)
-        self.assertTrue(-0 == 0)
-        self.assertTrue(--2 == 2)
-        self.assertTrue(-2L == 0 - 2L)
-
-    def test_no_overflow(self):
-        nines = "9" * 32
-        self.assertTrue(eval("+" + nines) == eval("+" + nines + "L"))
-        self.assertTrue(eval("-" + nines) == eval("-" + nines + "L"))
-        self.assertTrue(eval("~" + nines) == eval("~" + nines + "L"))
-
-    def test_negation_of_exponentiation(self):
-        # Make sure '**' does the right thing; these form a
-        # regression test for SourceForge bug #456756.
-        self.assertEqual(-2 ** 3, -8)
-        self.assertEqual((-2) ** 3, -8)
-        self.assertEqual(-2 ** 4, -16)
-        self.assertEqual((-2) ** 4, 16)
-
-    def test_bad_types(self):
-        for op in '+', '-', '~':
-            self.assertRaises(TypeError, eval, op + "'a'")
-            if have_unicode:
-                self.assertRaises(TypeError, eval, op + "u'a'")
-
-        self.assertRaises(TypeError, eval, "~2j")
-        self.assertRaises(TypeError, eval, "~2.0")
-
-
-def test_main():
-    run_unittest(UnaryOpTestCase)
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_undocumented_details.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_undocumented_details.py
deleted file mode 100644
index 71da501..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_undocumented_details.py
+++ /dev/null
@@ -1,39 +0,0 @@
-from test.test_support import run_unittest, check_py3k_warnings
-import unittest
-
-class TestImplementationComparisons(unittest.TestCase):
-
-    def test_type_comparisons(self):
-        self.assertTrue(str < int or str > int)
-        self.assertTrue(int <= str or int >= str)
-        self.assertTrue(cmp(int, str) != 0)
-        self.assertTrue(int is int)
-        self.assertTrue(str == str)
-        self.assertTrue(int != str)
-
-    def test_cell_comparisons(self):
-        def f(x):
-            if x:
-                y = 1
-            def g():
-                return x
-            def h():
-                return y
-            return g, h
-        g, h = f(0)
-        g_cell, = g.func_closure
-        h_cell, = h.func_closure
-        self.assertTrue(h_cell < g_cell)
-        self.assertTrue(g_cell >= h_cell)
-        self.assertEqual(cmp(g_cell, h_cell), 1)
-        self.assertTrue(g_cell is g_cell)
-        self.assertTrue(g_cell == g_cell)
-        self.assertTrue(h_cell == h_cell)
-        self.assertTrue(g_cell != h_cell)
-
-def test_main():
-    with check_py3k_warnings():
-        run_unittest(TestImplementationComparisons)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicode.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicode.py
deleted file mode 100644
index 0f29773..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicode.py
+++ /dev/null
@@ -1,1404 +0,0 @@
-""" Test script for the Unicode implementation.
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""#"
-import sys, struct, codecs
-from test import test_support, string_tests
-
-# Error handling (bad decoder return)
-def search_function(encoding):
-    def decode1(input, errors="strict"):
-        return 42 # not a tuple
-    def encode1(input, errors="strict"):
-        return 42 # not a tuple
-    def encode2(input, errors="strict"):
-        return (42, 42) # no unicode
-    def decode2(input, errors="strict"):
-        return (42, 42) # no unicode
-    if encoding=="test.unicode1":
-        return (encode1, decode1, None, None)
-    elif encoding=="test.unicode2":
-        return (encode2, decode2, None, None)
-    else:
-        return None
-codecs.register(search_function)
-
-class UnicodeTest(
-    string_tests.CommonTest,
-    string_tests.MixinStrUnicodeUserStringTest,
-    string_tests.MixinStrUnicodeTest,
-    ):
-    type2test = unicode
-
-    def assertEqual(self, first, second, msg=None):
-        # strict assertEqual method: reject implicit bytes/unicode equality
-        super(UnicodeTest, self).assertEqual(first, second, msg)
-        if isinstance(first, unicode) or isinstance(second, unicode):
-            self.assertIsInstance(first, unicode)
-            self.assertIsInstance(second, unicode)
-        elif isinstance(first, str) or isinstance(second, str):
-            self.assertIsInstance(first, str)
-            self.assertIsInstance(second, str)
-
-    def checkequalnofix(self, result, object, methodname, *args):
-        method = getattr(object, methodname)
-        realresult = method(*args)
-        self.assertEqual(realresult, result)
-        self.assertTrue(type(realresult) is type(result))
-
-        # if the original is returned make sure that
-        # this doesn't happen with subclasses
-        if realresult is object:
-            class usub(unicode):
-                def __repr__(self):
-                    return 'usub(%r)' % unicode.__repr__(self)
-            object = usub(object)
-            method = getattr(object, methodname)
-            realresult = method(*args)
-            self.assertEqual(realresult, result)
-            self.assertTrue(object is not realresult)
-
-    def test_literals(self):
-        self.assertEqual(u'\xff', u'\u00ff')
-        self.assertEqual(u'\uffff', u'\U0000ffff')
-        self.assertRaises(SyntaxError, eval, 'u\'\\Ufffffffe\'')
-        self.assertRaises(SyntaxError, eval, 'u\'\\Uffffffff\'')
-        self.assertRaises(SyntaxError, eval, 'u\'\\U%08x\'' % 0x110000)
-
-    def test_repr(self):
-        if not sys.platform.startswith('java'):
-            # Test basic sanity of repr()
-            self.assertEqual(repr(u'abc'), "u'abc'")
-            self.assertEqual(repr(u'ab\\c'), "u'ab\\\\c'")
-            self.assertEqual(repr(u'ab\\'), "u'ab\\\\'")
-            self.assertEqual(repr(u'\\c'), "u'\\\\c'")
-            self.assertEqual(repr(u'\\'), "u'\\\\'")
-            self.assertEqual(repr(u'\n'), "u'\\n'")
-            self.assertEqual(repr(u'\r'), "u'\\r'")
-            self.assertEqual(repr(u'\t'), "u'\\t'")
-            self.assertEqual(repr(u'\b'), "u'\\x08'")
-            self.assertEqual(repr(u"'\""), """u'\\'"'""")
-            self.assertEqual(repr(u"'\""), """u'\\'"'""")
-            self.assertEqual(repr(u"'"), '''u"'"''')
-            self.assertEqual(repr(u'"'), """u'"'""")
-            latin1repr = (
-                "u'\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r"
-                "\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a"
-                "\\x1b\\x1c\\x1d\\x1e\\x1f !\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHI"
-                "JKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\\x7f"
-                "\\x80\\x81\\x82\\x83\\x84\\x85\\x86\\x87\\x88\\x89\\x8a\\x8b\\x8c\\x8d"
-                "\\x8e\\x8f\\x90\\x91\\x92\\x93\\x94\\x95\\x96\\x97\\x98\\x99\\x9a\\x9b"
-                "\\x9c\\x9d\\x9e\\x9f\\xa0\\xa1\\xa2\\xa3\\xa4\\xa5\\xa6\\xa7\\xa8\\xa9"
-                "\\xaa\\xab\\xac\\xad\\xae\\xaf\\xb0\\xb1\\xb2\\xb3\\xb4\\xb5\\xb6\\xb7"
-                "\\xb8\\xb9\\xba\\xbb\\xbc\\xbd\\xbe\\xbf\\xc0\\xc1\\xc2\\xc3\\xc4\\xc5"
-                "\\xc6\\xc7\\xc8\\xc9\\xca\\xcb\\xcc\\xcd\\xce\\xcf\\xd0\\xd1\\xd2\\xd3"
-                "\\xd4\\xd5\\xd6\\xd7\\xd8\\xd9\\xda\\xdb\\xdc\\xdd\\xde\\xdf\\xe0\\xe1"
-                "\\xe2\\xe3\\xe4\\xe5\\xe6\\xe7\\xe8\\xe9\\xea\\xeb\\xec\\xed\\xee\\xef"
-                "\\xf0\\xf1\\xf2\\xf3\\xf4\\xf5\\xf6\\xf7\\xf8\\xf9\\xfa\\xfb\\xfc\\xfd"
-                "\\xfe\\xff'")
-            testrepr = repr(u''.join(map(unichr, xrange(256))))
-            self.assertEqual(testrepr, latin1repr)
-            # Test repr works on wide unicode escapes without overflow.
-            self.assertEqual(repr(u"\U00010000" * 39 + u"\uffff" * 4096),
-                             repr(u"\U00010000" * 39 + u"\uffff" * 4096))
-
-
-    def test_count(self):
-        string_tests.CommonTest.test_count(self)
-        # check mixed argument types
-        self.checkequalnofix(3,  'aaa', 'count', u'a')
-        self.checkequalnofix(0,  'aaa', 'count', u'b')
-        self.checkequalnofix(3, u'aaa', 'count',  'a')
-        self.checkequalnofix(0, u'aaa', 'count',  'b')
-        self.checkequalnofix(0, u'aaa', 'count',  'b')
-        self.checkequalnofix(1, u'aaa', 'count',  'a', -1)
-        self.checkequalnofix(3, u'aaa', 'count',  'a', -10)
-        self.checkequalnofix(2, u'aaa', 'count',  'a', 0, -1)
-        self.checkequalnofix(0, u'aaa', 'count',  'a', 0, -10)
-
-    def test_find(self):
-        self.checkequalnofix(0,  u'abcdefghiabc', 'find', u'abc')
-        self.checkequalnofix(9,  u'abcdefghiabc', 'find', u'abc', 1)
-        self.checkequalnofix(-1, u'abcdefghiabc', 'find', u'def', 4)
-
-        self.assertRaises(TypeError, u'hello'.find)
-        self.assertRaises(TypeError, u'hello'.find, 42)
-
-    def test_rfind(self):
-        string_tests.CommonTest.test_rfind(self)
-        # check mixed argument types
-        self.checkequalnofix(9,   'abcdefghiabc', 'rfind', u'abc')
-        self.checkequalnofix(12,  'abcdefghiabc', 'rfind', u'')
-        self.checkequalnofix(12, u'abcdefghiabc', 'rfind',  '')
-
-    def test_index(self):
-        string_tests.CommonTest.test_index(self)
-        # check mixed argument types
-        for (t1, t2) in ((str, unicode), (unicode, str)):
-            self.checkequalnofix(0, t1('abcdefghiabc'), 'index',  t2(''))
-            self.checkequalnofix(3, t1('abcdefghiabc'), 'index',  t2('def'))
-            self.checkequalnofix(0, t1('abcdefghiabc'), 'index',  t2('abc'))
-            self.checkequalnofix(9, t1('abcdefghiabc'), 'index',  t2('abc'), 1)
-            self.assertRaises(ValueError, t1('abcdefghiabc').index, t2('hib'))
-            self.assertRaises(ValueError, t1('abcdefghiab').index,  t2('abc'), 1)
-            self.assertRaises(ValueError, t1('abcdefghi').index,  t2('ghi'), 8)
-            self.assertRaises(ValueError, t1('abcdefghi').index,  t2('ghi'), -1)
-
-    def test_rindex(self):
-        string_tests.CommonTest.test_rindex(self)
-        # check mixed argument types
-        for (t1, t2) in ((str, unicode), (unicode, str)):
-            self.checkequalnofix(12, t1('abcdefghiabc'), 'rindex',  t2(''))
-            self.checkequalnofix(3,  t1('abcdefghiabc'), 'rindex',  t2('def'))
-            self.checkequalnofix(9,  t1('abcdefghiabc'), 'rindex',  t2('abc'))
-            self.checkequalnofix(0,  t1('abcdefghiabc'), 'rindex',  t2('abc'), 0, -1)
-
-            self.assertRaises(ValueError, t1('abcdefghiabc').rindex,  t2('hib'))
-            self.assertRaises(ValueError, t1('defghiabc').rindex,  t2('def'), 1)
-            self.assertRaises(ValueError, t1('defghiabc').rindex,  t2('abc'), 0, -1)
-            self.assertRaises(ValueError, t1('abcdefghi').rindex,  t2('ghi'), 0, 8)
-            self.assertRaises(ValueError, t1('abcdefghi').rindex,  t2('ghi'), 0, -1)
-
-    def test_translate(self):
-        self.checkequalnofix(u'bbbc', u'abababc', 'translate', {ord('a'):None})
-        self.checkequalnofix(u'iiic', u'abababc', 'translate', {ord('a'):None, ord('b'):ord('i')})
-        self.checkequalnofix(u'iiix', u'abababc', 'translate', {ord('a'):None, ord('b'):ord('i'), ord('c'):u'x'})
-        self.checkequalnofix(u'<i><i><i>c', u'abababc', 'translate', {ord('a'):None, ord('b'):u'<i>'})
-        self.checkequalnofix(u'c', u'abababc', 'translate', {ord('a'):None, ord('b'):u''})
-        self.checkequalnofix(u'xyyx', u'xzx', 'translate', {ord('z'):u'yy'})
-
-        self.assertRaises(TypeError, u'hello'.translate)
-        self.assertRaises(TypeError, u'abababc'.translate, {ord('a'):''})
-
-    def test_split(self):
-        string_tests.CommonTest.test_split(self)
-
-        # Mixed arguments
-        self.checkequalnofix([u'a', u'b', u'c', u'd'], u'a//b//c//d', 'split', '//')
-        self.checkequalnofix([u'a', u'b', u'c', u'd'], 'a//b//c//d', 'split', u'//')
-        self.checkequalnofix([u'endcase ', u''], u'endcase test', 'split', 'test')
-
-    def test_join(self):
-        string_tests.MixinStrUnicodeUserStringTest.test_join(self)
-
-        # mixed arguments
-        self.checkequalnofix(u'a b c d', u' ', 'join', ['a', 'b', u'c', u'd'])
-        self.checkequalnofix(u'abcd', u'', 'join', (u'a', u'b', u'c', u'd'))
-        self.checkequalnofix(u'w x y z', u' ', 'join', string_tests.Sequence('wxyz'))
-        self.checkequalnofix(u'a b c d', ' ', 'join', [u'a', u'b', u'c', u'd'])
-        self.checkequalnofix(u'a b c d', ' ', 'join', ['a', 'b', u'c', u'd'])
-        self.checkequalnofix(u'abcd', '', 'join', (u'a', u'b', u'c', u'd'))
-        self.checkequalnofix(u'w x y z', ' ', 'join', string_tests.Sequence(u'wxyz'))
-
-    def test_strip(self):
-        string_tests.CommonTest.test_strip(self)
-        self.assertRaises(UnicodeError, u"hello".strip, "\xff")
-
-    def test_replace(self):
-        string_tests.CommonTest.test_replace(self)
-
-        # method call forwarded from str implementation because of unicode argument
-        self.checkequalnofix(u'one@two!three!', 'one!two!three!', 'replace', u'!', u'@', 1)
-        self.assertRaises(TypeError, 'replace'.replace, u"r", 42)
-
-    def test_comparison(self):
-        # Comparisons:
-        self.assertTrue(u'abc' == 'abc')
-        self.assertTrue('abc' == u'abc')
-        self.assertTrue(u'abc' == u'abc')
-        self.assertTrue(u'abcd' > 'abc')
-        self.assertTrue('abcd' > u'abc')
-        self.assertTrue(u'abcd' > u'abc')
-        self.assertTrue(u'abc' < 'abcd')
-        self.assertTrue('abc' < u'abcd')
-        self.assertTrue(u'abc' < u'abcd')
-
-        if 0:
-            # Move these tests to a Unicode collation module test...
-            # Testing UTF-16 code point order comparisons...
-
-            # No surrogates, no fixup required.
-            self.assertTrue(u'\u0061' < u'\u20ac')
-            # Non surrogate below surrogate value, no fixup required
-            self.assertTrue(u'\u0061' < u'\ud800\udc02')
-
-            # Non surrogate above surrogate value, fixup required
-            def test_lecmp(s, s2):
-                self.assertTrue(s < s2)
-
-            def test_fixup(s):
-                s2 = u'\ud800\udc01'
-                test_lecmp(s, s2)
-                s2 = u'\ud900\udc01'
-                test_lecmp(s, s2)
-                s2 = u'\uda00\udc01'
-                test_lecmp(s, s2)
-                s2 = u'\udb00\udc01'
-                test_lecmp(s, s2)
-                s2 = u'\ud800\udd01'
-                test_lecmp(s, s2)
-                s2 = u'\ud900\udd01'
-                test_lecmp(s, s2)
-                s2 = u'\uda00\udd01'
-                test_lecmp(s, s2)
-                s2 = u'\udb00\udd01'
-                test_lecmp(s, s2)
-                s2 = u'\ud800\ude01'
-                test_lecmp(s, s2)
-                s2 = u'\ud900\ude01'
-                test_lecmp(s, s2)
-                s2 = u'\uda00\ude01'
-                test_lecmp(s, s2)
-                s2 = u'\udb00\ude01'
-                test_lecmp(s, s2)
-                s2 = u'\ud800\udfff'
-                test_lecmp(s, s2)
-                s2 = u'\ud900\udfff'
-                test_lecmp(s, s2)
-                s2 = u'\uda00\udfff'
-                test_lecmp(s, s2)
-                s2 = u'\udb00\udfff'
-                test_lecmp(s, s2)
-
-                test_fixup(u'\ue000')
-                test_fixup(u'\uff61')
-
-        # Surrogates on both sides, no fixup required
-        self.assertTrue(u'\ud800\udc02' < u'\ud84d\udc56')
-
-    def test_islower(self):
-        string_tests.MixinStrUnicodeUserStringTest.test_islower(self)
-        self.checkequalnofix(False, u'\u1FFc', 'islower')
-
-    def test_isupper(self):
-        string_tests.MixinStrUnicodeUserStringTest.test_isupper(self)
-        if not sys.platform.startswith('java'):
-            self.checkequalnofix(False, u'\u1FFc', 'isupper')
-
-    def test_istitle(self):
-        string_tests.MixinStrUnicodeUserStringTest.test_title(self)
-        self.checkequalnofix(True, u'\u1FFc', 'istitle')
-        self.checkequalnofix(True, u'Greek \u1FFcitlecases ...', 'istitle')
-
-    def test_isspace(self):
-        string_tests.MixinStrUnicodeUserStringTest.test_isspace(self)
-        self.checkequalnofix(True, u'\u2000', 'isspace')
-        self.checkequalnofix(True, u'\u200a', 'isspace')
-        self.checkequalnofix(False, u'\u2014', 'isspace')
-
-    def test_isalpha(self):
-        string_tests.MixinStrUnicodeUserStringTest.test_isalpha(self)
-        self.checkequalnofix(True, u'\u1FFc', 'isalpha')
-
-    def test_isdecimal(self):
-        self.checkequalnofix(False, u'', 'isdecimal')
-        self.checkequalnofix(False, u'a', 'isdecimal')
-        self.checkequalnofix(True, u'0', 'isdecimal')
-        self.checkequalnofix(False, u'\u2460', 'isdecimal') # CIRCLED DIGIT ONE
-        self.checkequalnofix(False, u'\xbc', 'isdecimal') # VULGAR FRACTION ONE QUARTER
-        self.checkequalnofix(True, u'\u0660', 'isdecimal') # ARABIC-INDIC DIGIT ZERO
-        self.checkequalnofix(True, u'0123456789', 'isdecimal')
-        self.checkequalnofix(False, u'0123456789a', 'isdecimal')
-
-        self.checkraises(TypeError, 'abc', 'isdecimal', 42)
-
-    def test_isdigit(self):
-        string_tests.MixinStrUnicodeUserStringTest.test_isdigit(self)
-        self.checkequalnofix(True, u'\u2460', 'isdigit')
-        self.checkequalnofix(False, u'\xbc', 'isdigit')
-        self.checkequalnofix(True, u'\u0660', 'isdigit')
-
-    def test_isnumeric(self):
-        self.checkequalnofix(False, u'', 'isnumeric')
-        self.checkequalnofix(False, u'a', 'isnumeric')
-        self.checkequalnofix(True, u'0', 'isnumeric')
-        self.checkequalnofix(True, u'\u2460', 'isnumeric')
-        self.checkequalnofix(True, u'\xbc', 'isnumeric')
-        self.checkequalnofix(True, u'\u0660', 'isnumeric')
-        self.checkequalnofix(True, u'0123456789', 'isnumeric')
-        self.checkequalnofix(False, u'0123456789a', 'isnumeric')
-
-        self.assertRaises(TypeError, u"abc".isnumeric, 42)
-
-    def test_contains(self):
-        # Testing Unicode contains method
-        self.assertIn('a', u'abdb')
-        self.assertIn('a', u'bdab')
-        self.assertIn('a', u'bdaba')
-        self.assertIn('a', u'bdba')
-        self.assertIn('a', u'bdba')
-        self.assertIn(u'a', u'bdba')
-        self.assertNotIn(u'a', u'bdb')
-        self.assertNotIn(u'a', 'bdb')
-        self.assertIn(u'a', 'bdba')
-        self.assertIn(u'a', ('a',1,None))
-        self.assertIn(u'a', (1,None,'a'))
-        self.assertIn(u'a', (1,None,u'a'))
-        self.assertIn('a', ('a',1,None))
-        self.assertIn('a', (1,None,'a'))
-        self.assertIn('a', (1,None,u'a'))
-        self.assertNotIn('a', ('x',1,u'y'))
-        self.assertNotIn('a', ('x',1,None))
-        self.assertNotIn(u'abcd', u'abcxxxx')
-        self.assertIn(u'ab', u'abcd')
-        self.assertIn('ab', u'abc')
-        self.assertIn(u'ab', 'abc')
-        self.assertIn(u'ab', (1,None,u'ab'))
-        self.assertIn(u'', u'abc')
-        self.assertIn('', u'abc')
-
-        # If the following fails either
-        # the contains operator does not propagate UnicodeErrors or
-        # someone has changed the default encoding
-        self.assertRaises(UnicodeDecodeError, 'g\xe2teau'.__contains__, u'\xe2')
-        self.assertRaises(UnicodeDecodeError, u'g\xe2teau'.__contains__, '\xe2')
-
-        self.assertIn(u'', '')
-        self.assertIn('', u'')
-        self.assertIn(u'', u'')
-        self.assertIn(u'', 'abc')
-        self.assertIn('', u'abc')
-        self.assertIn(u'', u'abc')
-        self.assertNotIn(u'\0', 'abc')
-        self.assertNotIn('\0', u'abc')
-        self.assertNotIn(u'\0', u'abc')
-        self.assertIn(u'\0', '\0abc')
-        self.assertIn('\0', u'\0abc')
-        self.assertIn(u'\0', u'\0abc')
-        self.assertIn(u'\0', 'abc\0')
-        self.assertIn('\0', u'abc\0')
-        self.assertIn(u'\0', u'abc\0')
-        self.assertIn(u'a', '\0abc')
-        self.assertIn('a', u'\0abc')
-        self.assertIn(u'a', u'\0abc')
-        self.assertIn(u'asdf', 'asdf')
-        self.assertIn('asdf', u'asdf')
-        self.assertIn(u'asdf', u'asdf')
-        self.assertNotIn(u'asdf', 'asd')
-        self.assertNotIn('asdf', u'asd')
-        self.assertNotIn(u'asdf', u'asd')
-        self.assertNotIn(u'asdf', '')
-        self.assertNotIn('asdf', u'')
-        self.assertNotIn(u'asdf', u'')
-
-        self.assertRaises(TypeError, u"abc".__contains__)
-        self.assertRaises(TypeError, u"abc".__contains__, object())
-
-    def test_formatting(self):
-        string_tests.MixinStrUnicodeUserStringTest.test_formatting(self)
-        # Testing Unicode formatting strings...
-        self.assertEqual(u"%s, %s" % (u"abc", "abc"), u'abc, abc')
-        self.assertEqual(u"%s, %s, %i, %f, %5.2f" % (u"abc", "abc", 1, 2, 3), u'abc, abc, 1, 2.000000,  3.00')
-        self.assertEqual(u"%s, %s, %i, %f, %5.2f" % (u"abc", "abc", 1, -2, 3), u'abc, abc, 1, -2.000000,  3.00')
-        self.assertEqual(u"%s, %s, %i, %f, %5.2f" % (u"abc", "abc", -1, -2, 3.5), u'abc, abc, -1, -2.000000,  3.50')
-        self.assertEqual(u"%s, %s, %i, %f, %5.2f" % (u"abc", "abc", -1, -2, 3.57), u'abc, abc, -1, -2.000000,  3.57')
-        self.assertEqual(u"%s, %s, %i, %f, %5.2f" % (u"abc", "abc", -1, -2, 1003.57), u'abc, abc, -1, -2.000000, 1003.57')
-        if not sys.platform.startswith('java'):
-            self.assertEqual(u"%r, %r" % (u"abc", "abc"), u"u'abc', 'abc'")
-        self.assertEqual(u"%(x)s, %(y)s" % {'x':u"abc", 'y':"def"}, u'abc, def')
-        self.assertEqual(u"%(x)s, %(\xfc)s" % {'x':u"abc", u'\xfc':"def"}, u'abc, def')
-
-        self.assertEqual(u'%c' % 0x1234, u'\u1234')
-        self.assertRaises(OverflowError, u"%c".__mod__, (sys.maxunicode+1,))
-        self.assertRaises(ValueError, u"%.1\u1032f".__mod__, (1.0/3))
-
-        for num in range(0x00,0x80):
-            char = chr(num)
-            self.assertEqual(u"%c" % char, unicode(char))
-            self.assertEqual(u"%c" % num, unicode(char))
-            self.assertTrue(char == u"%c" % char)
-            self.assertTrue(char == u"%c" % num)
-        # Issue 7649
-        for num in range(0x80,0x100):
-            uchar = unichr(num)
-            self.assertEqual(uchar, u"%c" % num)   # works only with ints
-            self.assertEqual(uchar, u"%c" % uchar) # and unicode chars
-            # the implicit decoding should fail for non-ascii chars
-            self.assertRaises(UnicodeDecodeError, u"%c".__mod__, chr(num))
-            self.assertRaises(UnicodeDecodeError, u"%s".__mod__, chr(num))
-
-        # formatting jobs delegated from the string implementation:
-        self.assertEqual('...%(foo)s...' % {'foo':u"abc"}, u'...abc...')
-        self.assertEqual('...%(foo)s...' % {'foo':"abc"}, '...abc...')
-        self.assertEqual('...%(foo)s...' % {u'foo':"abc"}, '...abc...')
-        self.assertEqual('...%(foo)s...' % {u'foo':u"abc"}, u'...abc...')
-        self.assertEqual('...%(foo)s...' % {u'foo':u"abc",'def':123},  u'...abc...')
-        self.assertEqual('...%(foo)s...' % {u'foo':u"abc",u'def':123}, u'...abc...')
-        self.assertEqual('...%s...%s...%s...%s...' % (1,2,3,u"abc"), u'...1...2...3...abc...')
-        self.assertEqual('...%%...%%s...%s...%s...%s...%s...' % (1,2,3,u"abc"), u'...%...%s...1...2...3...abc...')
-        self.assertEqual('...%s...' % u"abc", u'...abc...')
-        self.assertEqual('%*s' % (5,u'abc',), u'  abc')
-        self.assertEqual('%*s' % (-5,u'abc',), u'abc  ')
-        self.assertEqual('%*.*s' % (5,2,u'abc',), u'   ab')
-        self.assertEqual('%*.*s' % (5,3,u'abc',), u'  abc')
-        self.assertEqual('%i %*.*s' % (10, 5,3,u'abc',), u'10   abc')
-        self.assertEqual('%i%s %*.*s' % (10, 3, 5, 3, u'abc',), u'103   abc')
-        self.assertEqual('%c' % u'a', u'a')
-        class Wrapper:
-            def __str__(self):
-                return u'\u1234'
-        self.assertEqual('%s' % Wrapper(), u'\u1234')
-
-    def test_startswith_endswith_errors(self):
-        for meth in (u'foo'.startswith, u'foo'.endswith):
-            with self.assertRaises(UnicodeDecodeError):
-                meth('\xff')
-            with self.assertRaises(TypeError) as cm:
-                meth(['f'])
-            exc = str(cm.exception)
-            self.assertIn('unicode', exc)
-            self.assertIn('str', exc)
-            self.assertIn('tuple', exc)
-
-    @test_support.run_with_locale('LC_ALL', 'de_DE', 'fr_FR')
-    def test_format_float(self):
-        # should not format with a comma, but always with C locale
-        self.assertEqual(u'1.0', u'%.1f' % 1.0)
-
-    def test_constructor(self):
-        # unicode(obj) tests (this maps to PyObject_Unicode() at C level)
-
-        self.assertEqual(
-            unicode(u'unicode remains unicode'),
-            u'unicode remains unicode'
-        )
-
-        class UnicodeSubclass(unicode):
-            pass
-
-        self.assertEqual(
-            unicode(UnicodeSubclass('unicode subclass becomes unicode')),
-            u'unicode subclass becomes unicode'
-        )
-
-        self.assertEqual(
-            unicode('strings are converted to unicode'),
-            u'strings are converted to unicode'
-        )
-
-        class UnicodeCompat:
-            def __init__(self, x):
-                self.x = x
-            def __unicode__(self):
-                return self.x
-
-        self.assertEqual(
-            unicode(UnicodeCompat('__unicode__ compatible objects are recognized')),
-            u'__unicode__ compatible objects are recognized')
-
-        class StringCompat:
-            def __init__(self, x):
-                self.x = x
-            def __str__(self):
-                return self.x
-
-        self.assertEqual(
-            unicode(StringCompat('__str__ compatible objects are recognized')),
-            u'__str__ compatible objects are recognized'
-        )
-
-        # unicode(obj) is compatible to str():
-
-        o = StringCompat('unicode(obj) is compatible to str()')
-        self.assertEqual(unicode(o), u'unicode(obj) is compatible to str()')
-        self.assertEqual(str(o), 'unicode(obj) is compatible to str()')
-
-        # %-formatting and .__unicode__()
-        self.assertEqual(u'%s' %
-                         UnicodeCompat(u"u'%s' % obj uses obj.__unicode__()"),
-                         u"u'%s' % obj uses obj.__unicode__()")
-        self.assertEqual(u'%s' %
-                         UnicodeCompat(u"u'%s' % obj falls back to obj.__str__()"),
-                         u"u'%s' % obj falls back to obj.__str__()")
-
-        for obj in (123, 123.45, 123L):
-            self.assertEqual(unicode(obj), unicode(str(obj)))
-
-        # unicode(obj, encoding, error) tests (this maps to
-        # PyUnicode_FromEncodedObject() at C level)
-
-        if not sys.platform.startswith('java'):
-            self.assertRaises(
-                TypeError,
-                unicode,
-                u'decoding unicode is not supported',
-                'utf-8',
-                'strict'
-            )
-
-        self.assertEqual(
-            unicode('strings are decoded to unicode', 'utf-8', 'strict'),
-            u'strings are decoded to unicode'
-        )
-
-        if not sys.platform.startswith('java'):
-            with test_support.check_py3k_warnings():
-                buf = buffer('character buffers are decoded to unicode')
-            self.assertEqual(
-                unicode(
-                    buf,
-                    'utf-8',
-                    'strict'
-                ),
-                u'character buffers are decoded to unicode'
-            )
-
-        self.assertRaises(TypeError, unicode, 42, 42, 42)
-
-    def test_codecs_utf7(self):
-        utfTests = [
-            (u'A\u2262\u0391.', 'A+ImIDkQ.'),             # RFC2152 example
-            (u'Hi Mom -\u263a-!', 'Hi Mom -+Jjo--!'),     # RFC2152 example
-            (u'\u65E5\u672C\u8A9E', '+ZeVnLIqe-'),        # RFC2152 example
-            (u'Item 3 is \u00a31.', 'Item 3 is +AKM-1.'), # RFC2152 example
-            (u'+', '+-'),
-            (u'+-', '+--'),
-            (u'+?', '+-?'),
-            (u'\?', '+AFw?'),
-            (u'+?', '+-?'),
-            (ur'\\?', '+AFwAXA?'),
-            (ur'\\\?', '+AFwAXABc?'),
-            (ur'++--', '+-+---'),
-            (u'\U000abcde', '+2m/c3g-'),                  # surrogate pairs
-            (u'/', '/'),
-        ]
-
-        for (x, y) in utfTests:
-            self.assertEqual(x.encode('utf-7'), y)
-
-        # Unpaired surrogates not supported
-        self.assertRaises(UnicodeError, unicode, '+3ADYAA-', 'utf-7')
-
-        self.assertEqual(unicode('+3ADYAA-', 'utf-7', 'replace'), u'\ufffd\ufffd')
-
-        # Direct encoded characters
-        set_d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?"
-        # Optional direct characters
-        set_o = '!"#$%&*;<=>@[]^_`{|}'
-        for c in set_d:
-            self.assertEqual(c.encode('utf7'), c.encode('ascii'))
-            self.assertEqual(c.encode('ascii').decode('utf7'), unicode(c))
-            self.assertTrue(c == c.encode('ascii').decode('utf7'))
-        for c in set_o:
-            self.assertEqual(c.encode('ascii').decode('utf7'), unicode(c))
-            self.assertTrue(c == c.encode('ascii').decode('utf7'))
-
-    def test_codecs_utf8(self):
-        self.assertEqual(u''.encode('utf-8'), '')
-        self.assertEqual(u'\u20ac'.encode('utf-8'), '\xe2\x82\xac')
-        self.assertEqual(u'\ud800\udc02'.encode('utf-8'), '\xf0\x90\x80\x82')
-        self.assertEqual(u'\ud84d\udc56'.encode('utf-8'), '\xf0\xa3\x91\x96')
-        self.assertEqual(u'\ud800'.encode('utf-8'), '\xed\xa0\x80')
-        self.assertEqual(u'\udc00'.encode('utf-8'), '\xed\xb0\x80')
-        self.assertEqual(
-            (u'\ud800\udc02'*1000).encode('utf-8'),
-            '\xf0\x90\x80\x82'*1000
-        )
-        self.assertEqual(
-            u'\u6b63\u78ba\u306b\u8a00\u3046\u3068\u7ffb\u8a33\u306f'
-            u'\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4e00'
-            u'\u90e8\u306f\u30c9\u30a4\u30c4\u8a9e\u3067\u3059\u304c'
-            u'\u3001\u3042\u3068\u306f\u3067\u305f\u3089\u3081\u3067'
-            u'\u3059\u3002\u5b9f\u969b\u306b\u306f\u300cWenn ist das'
-            u' Nunstuck git und'.encode('utf-8'),
-            '\xe6\xad\xa3\xe7\xa2\xba\xe3\x81\xab\xe8\xa8\x80\xe3\x81'
-            '\x86\xe3\x81\xa8\xe7\xbf\xbb\xe8\xa8\xb3\xe3\x81\xaf\xe3'
-            '\x81\x95\xe3\x82\x8c\xe3\x81\xa6\xe3\x81\x84\xe3\x81\xbe'
-            '\xe3\x81\x9b\xe3\x82\x93\xe3\x80\x82\xe4\xb8\x80\xe9\x83'
-            '\xa8\xe3\x81\xaf\xe3\x83\x89\xe3\x82\xa4\xe3\x83\x84\xe8'
-            '\xaa\x9e\xe3\x81\xa7\xe3\x81\x99\xe3\x81\x8c\xe3\x80\x81'
-            '\xe3\x81\x82\xe3\x81\xa8\xe3\x81\xaf\xe3\x81\xa7\xe3\x81'
-            '\x9f\xe3\x82\x89\xe3\x82\x81\xe3\x81\xa7\xe3\x81\x99\xe3'
-            '\x80\x82\xe5\xae\x9f\xe9\x9a\x9b\xe3\x81\xab\xe3\x81\xaf'
-            '\xe3\x80\x8cWenn ist das Nunstuck git und'
-        )
-
-        # UTF-8 specific decoding tests
-        self.assertEqual(unicode('\xf0\xa3\x91\x96', 'utf-8'), u'\U00023456')
-        self.assertEqual(unicode('\xf0\x90\x80\x82', 'utf-8'), u'\U00010002')
-        self.assertEqual(unicode('\xe2\x82\xac', 'utf-8'), u'\u20ac')
-
-        # Other possible utf-8 test cases:
-        # * strict decoding testing for all of the
-        #   UTF8_ERROR cases in PyUnicode_DecodeUTF8
-
-    def test_utf8_decode_valid_sequences(self):
-        sequences = [
-            # single byte
-            ('\x00', u'\x00'), ('a', u'a'), ('\x7f', u'\x7f'),
-            # 2 bytes
-            ('\xc2\x80', u'\x80'), ('\xdf\xbf', u'\u07ff'),
-            # 3 bytes
-            ('\xe0\xa0\x80', u'\u0800'), ('\xed\x9f\xbf', u'\ud7ff'),
-            ('\xee\x80\x80', u'\uE000'), ('\xef\xbf\xbf', u'\uffff'),
-            # 4 bytes
-            ('\xF0\x90\x80\x80', u'\U00010000'),
-            ('\xf4\x8f\xbf\xbf', u'\U0010FFFF')
-        ]
-        for seq, res in sequences:
-            self.assertEqual(seq.decode('utf-8'), res)
-
-        for ch in map(unichr, range(0, sys.maxunicode)):
-            self.assertEqual(ch, ch.encode('utf-8').decode('utf-8'))
-
-    def test_utf8_decode_invalid_sequences(self):
-        # continuation bytes in a sequence of 2, 3, or 4 bytes
-        continuation_bytes = map(chr, range(0x80, 0xC0))
-        # start bytes of a 2-byte sequence equivalent to codepoints < 0x7F
-        invalid_2B_seq_start_bytes = map(chr, range(0xC0, 0xC2))
-        # start bytes of a 4-byte sequence equivalent to codepoints > 0x10FFFF
-        invalid_4B_seq_start_bytes = map(chr, range(0xF5, 0xF8))
-        invalid_start_bytes = (
-            continuation_bytes + invalid_2B_seq_start_bytes +
-            invalid_4B_seq_start_bytes + map(chr, range(0xF7, 0x100))
-        )
-
-        for byte in invalid_start_bytes:
-            self.assertRaises(UnicodeDecodeError, byte.decode, 'utf-8')
-
-        for sb in invalid_2B_seq_start_bytes:
-            for cb in continuation_bytes:
-                self.assertRaises(UnicodeDecodeError, (sb+cb).decode, 'utf-8')
-
-        for sb in invalid_4B_seq_start_bytes:
-            for cb1 in continuation_bytes[:3]:
-                for cb3 in continuation_bytes[:3]:
-                    self.assertRaises(UnicodeDecodeError,
-                                      (sb+cb1+'\x80'+cb3).decode, 'utf-8')
-
-        for cb in map(chr, range(0x80, 0xA0)):
-            self.assertRaises(UnicodeDecodeError,
-                              ('\xE0'+cb+'\x80').decode, 'utf-8')
-            self.assertRaises(UnicodeDecodeError,
-                              ('\xE0'+cb+'\xBF').decode, 'utf-8')
-        # XXX: surrogates shouldn't be valid UTF-8!
-        # see http://www.unicode.org/versions/Unicode5.2.0/ch03.pdf
-        # (table 3-7) and http://www.rfc-editor.org/rfc/rfc3629.txt
-        #for cb in map(chr, range(0xA0, 0xC0)):
-            #self.assertRaises(UnicodeDecodeError,
-                              #('\xED'+cb+'\x80').decode, 'utf-8')
-            #self.assertRaises(UnicodeDecodeError,
-                              #('\xED'+cb+'\xBF').decode, 'utf-8')
-        # but since they are valid on Python 2 add a test for that:
-        for cb, surrogate in zip(map(chr, range(0xA0, 0xC0)),
-                                 map(unichr, range(0xd800, 0xe000, 64))):
-            encoded = '\xED'+cb+'\x80'
-            self.assertEqual(encoded.decode('utf-8'), surrogate)
-            self.assertEqual(surrogate.encode('utf-8'), encoded)
-
-        for cb in map(chr, range(0x80, 0x90)):
-            self.assertRaises(UnicodeDecodeError,
-                              ('\xF0'+cb+'\x80\x80').decode, 'utf-8')
-            self.assertRaises(UnicodeDecodeError,
-                              ('\xF0'+cb+'\xBF\xBF').decode, 'utf-8')
-        for cb in map(chr, range(0x90, 0xC0)):
-            self.assertRaises(UnicodeDecodeError,
-                              ('\xF4'+cb+'\x80\x80').decode, 'utf-8')
-            self.assertRaises(UnicodeDecodeError,
-                              ('\xF4'+cb+'\xBF\xBF').decode, 'utf-8')
-
-    def test_issue8271(self):
-        # Issue #8271: during the decoding of an invalid UTF-8 byte sequence,
-        # only the start byte and the continuation byte(s) are now considered
-        # invalid, instead of the number of bytes specified by the start byte.
-        # See http://www.unicode.org/versions/Unicode5.2.0/ch03.pdf (page 95,
-        # table 3-8, Row 2) for more information about the algorithm used.
-        FFFD = u'\ufffd'
-        sequences = [
-            # invalid start bytes
-            ('\x80', FFFD), # continuation byte
-            ('\x80\x80', FFFD*2), # 2 continuation bytes
-            ('\xc0', FFFD),
-            ('\xc0\xc0', FFFD*2),
-            ('\xc1', FFFD),
-            ('\xc1\xc0', FFFD*2),
-            ('\xc0\xc1', FFFD*2),
-            # with start byte of a 2-byte sequence
-            ('\xc2', FFFD), # only the start byte
-            ('\xc2\xc2', FFFD*2), # 2 start bytes
-            ('\xc2\xc2\xc2', FFFD*3), # 2 start bytes
-            ('\xc2\x41', FFFD+'A'), # invalid continuation byte
-            # with start byte of a 3-byte sequence
-            ('\xe1', FFFD), # only the start byte
-            ('\xe1\xe1', FFFD*2), # 2 start bytes
-            ('\xe1\xe1\xe1', FFFD*3), # 3 start bytes
-            ('\xe1\xe1\xe1\xe1', FFFD*4), # 4 start bytes
-            ('\xe1\x80', FFFD), # only 1 continuation byte
-            ('\xe1\x41', FFFD+'A'), # invalid continuation byte
-            ('\xe1\x41\x80', FFFD+'A'+FFFD), # invalid cb followed by valid cb
-            ('\xe1\x41\x41', FFFD+'AA'), # 2 invalid continuation bytes
-            ('\xe1\x80\x41', FFFD+'A'), # only 1 valid continuation byte
-            ('\xe1\x80\xe1\x41', FFFD*2+'A'), # 1 valid and the other invalid
-            ('\xe1\x41\xe1\x80', FFFD+'A'+FFFD), # 1 invalid and the other valid
-            # with start byte of a 4-byte sequence
-            ('\xf1', FFFD), # only the start byte
-            ('\xf1\xf1', FFFD*2), # 2 start bytes
-            ('\xf1\xf1\xf1', FFFD*3), # 3 start bytes
-            ('\xf1\xf1\xf1\xf1', FFFD*4), # 4 start bytes
-            ('\xf1\xf1\xf1\xf1\xf1', FFFD*5), # 5 start bytes
-            ('\xf1\x80', FFFD), # only 1 continuation bytes
-            ('\xf1\x80\x80', FFFD), # only 2 continuation bytes
-            ('\xf1\x80\x41', FFFD+'A'), # 1 valid cb and 1 invalid
-            ('\xf1\x80\x41\x41', FFFD+'AA'), # 1 valid cb and 1 invalid
-            ('\xf1\x80\x80\x41', FFFD+'A'), # 2 valid cb and 1 invalid
-            ('\xf1\x41\x80', FFFD+'A'+FFFD), # 1 invalid cv and 1 valid
-            ('\xf1\x41\x80\x80', FFFD+'A'+FFFD*2), # 1 invalid cb and 2 invalid
-            ('\xf1\x41\x80\x41', FFFD+'A'+FFFD+'A'), # 2 invalid cb and 1 invalid
-            ('\xf1\x41\x41\x80', FFFD+'AA'+FFFD), # 1 valid cb and 1 invalid
-            ('\xf1\x41\xf1\x80', FFFD+'A'+FFFD),
-            ('\xf1\x41\x80\xf1', FFFD+'A'+FFFD*2),
-            ('\xf1\xf1\x80\x41', FFFD*2+'A'),
-            ('\xf1\x41\xf1\xf1', FFFD+'A'+FFFD*2),
-            # with invalid start byte of a 4-byte sequence (rfc2279)
-            ('\xf5', FFFD), # only the start byte
-            ('\xf5\xf5', FFFD*2), # 2 start bytes
-            ('\xf5\x80', FFFD*2), # only 1 continuation byte
-            ('\xf5\x80\x80', FFFD*3), # only 2 continuation byte
-            ('\xf5\x80\x80\x80', FFFD*4), # 3 continuation bytes
-            ('\xf5\x80\x41', FFFD*2+'A'), #  1 valid cb and 1 invalid
-            ('\xf5\x80\x41\xf5', FFFD*2+'A'+FFFD),
-            ('\xf5\x41\x80\x80\x41', FFFD+'A'+FFFD*2+'A'),
-            # with invalid start byte of a 5-byte sequence (rfc2279)
-            ('\xf8', FFFD), # only the start byte
-            ('\xf8\xf8', FFFD*2), # 2 start bytes
-            ('\xf8\x80', FFFD*2), # only one continuation byte
-            ('\xf8\x80\x41', FFFD*2 + 'A'), # 1 valid cb and 1 invalid
-            ('\xf8\x80\x80\x80\x80', FFFD*5), # invalid 5 bytes seq with 5 bytes
-            # with invalid start byte of a 6-byte sequence (rfc2279)
-            ('\xfc', FFFD), # only the start byte
-            ('\xfc\xfc', FFFD*2), # 2 start bytes
-            ('\xfc\x80\x80', FFFD*3), # only 2 continuation bytes
-            ('\xfc\x80\x80\x80\x80\x80', FFFD*6), # 6 continuation bytes
-            # invalid start byte
-            ('\xfe', FFFD),
-            ('\xfe\x80\x80', FFFD*3),
-            # other sequences
-            ('\xf1\x80\x41\x42\x43', u'\ufffd\x41\x42\x43'),
-            ('\xf1\x80\xff\x42\x43', u'\ufffd\ufffd\x42\x43'),
-            ('\xf1\x80\xc2\x81\x43', u'\ufffd\x81\x43'),
-            ('\x61\xF1\x80\x80\xE1\x80\xC2\x62\x80\x63\x80\xBF\x64',
-             u'\x61\uFFFD\uFFFD\uFFFD\x62\uFFFD\x63\uFFFD\uFFFD\x64'),
-        ]
-        for n, (seq, res) in enumerate(sequences):
-            self.assertRaises(UnicodeDecodeError, seq.decode, 'utf-8', 'strict')
-            self.assertEqual(seq.decode('utf-8', 'replace'), res)
-            self.assertEqual((seq+'b').decode('utf-8', 'replace'), res+'b')
-            self.assertEqual(seq.decode('utf-8', 'ignore'),
-                             res.replace(u'\uFFFD', ''))
-
-    def test_codecs_idna(self):
-        # Test whether trailing dot is preserved
-        self.assertEqual(u"www.python.org.".encode("idna"), "www.python.org.")
-
-    def test_codecs_errors(self):
-        # Error handling (encoding)
-        self.assertRaises(UnicodeError, u'Andr\202 x'.encode, 'ascii')
-        self.assertRaises(UnicodeError, u'Andr\202 x'.encode, 'ascii','strict')
-        self.assertEqual(u'Andr\202 x'.encode('ascii','ignore'), "Andr x")
-        self.assertEqual(u'Andr\202 x'.encode('ascii','replace'), "Andr? x")
-        self.assertEqual(u'Andr\202 x'.encode('ascii', 'replace'),
-                         u'Andr\202 x'.encode('ascii', errors='replace'))
-        self.assertEqual(u'Andr\202 x'.encode('ascii', 'ignore'),
-                         u'Andr\202 x'.encode(encoding='ascii', errors='ignore'))
-
-        # Error handling (decoding)
-        self.assertRaises(UnicodeError, unicode, 'Andr\202 x', 'ascii')
-        self.assertRaises(UnicodeError, unicode, 'Andr\202 x', 'ascii','strict')
-        self.assertEqual(unicode('Andr\202 x','ascii','ignore'), u"Andr x")
-        self.assertEqual(unicode('Andr\202 x','ascii','replace'), u'Andr\uFFFD x')
-        self.assertEqual(u'abcde'.decode('ascii', 'ignore'),
-                         u'abcde'.decode('ascii', errors='ignore'))
-        self.assertEqual(u'abcde'.decode('ascii', 'replace'),
-                         u'abcde'.decode(encoding='ascii', errors='replace'))
-
-        # Error handling (unknown character names)
-        self.assertEqual("\\N{foo}xx".decode("unicode-escape", "ignore"), u"xx")
-
-        # Error handling (truncated escape sequence)
-        self.assertRaises(UnicodeError, "\\".decode, "unicode-escape")
-
-        self.assertRaises(TypeError, "hello".decode, "test.unicode1")
-        self.assertRaises(TypeError, unicode, "hello", "test.unicode2")
-        self.assertRaises(TypeError, u"hello".encode, "test.unicode1")
-        self.assertRaises(TypeError, u"hello".encode, "test.unicode2")
-        # executes PyUnicode_Encode()
-        import imp
-        self.assertRaises(
-            ImportError,
-            imp.find_module,
-            "non-existing module",
-            [u"non-existing dir"]
-        )
-
-        # Error handling (wrong arguments)
-        self.assertRaises(TypeError, u"hello".encode, 42, 42, 42)
-
-        # Error handling (PyUnicode_EncodeDecimal())
-        self.assertRaises(UnicodeError, int, u"\u0200")
-
-    def test_codecs(self):
-        # Encoding
-        self.assertEqual(u'hello'.encode('ascii'), 'hello')
-        self.assertEqual(u'hello'.encode('utf-7'), 'hello')
-        self.assertEqual(u'hello'.encode('utf-8'), 'hello')
-        self.assertEqual(u'hello'.encode('utf8'), 'hello')
-        self.assertEqual(u'hello'.encode('utf-16-le'), 'h\000e\000l\000l\000o\000')
-        self.assertEqual(u'hello'.encode('utf-16-be'), '\000h\000e\000l\000l\000o')
-        self.assertEqual(u'hello'.encode('latin-1'), 'hello')
-
-        # Roundtrip safety for BMP (just the first 1024 chars)
-        for c in xrange(1024):
-            u = unichr(c)
-            for encoding in ('utf-7', 'utf-8', 'utf-16', 'utf-16-le',
-                             'utf-16-be', 'raw_unicode_escape',
-                             'unicode_escape', 'unicode_internal'):
-                self.assertEqual(unicode(u.encode(encoding),encoding), u)
-
-        # Roundtrip safety for BMP (just the first 256 chars)
-        for c in xrange(256):
-            u = unichr(c)
-            for encoding in ('latin-1',):
-                self.assertEqual(unicode(u.encode(encoding),encoding), u)
-
-        # Roundtrip safety for BMP (just the first 128 chars)
-        for c in xrange(128):
-            u = unichr(c)
-            for encoding in ('ascii',):
-                self.assertEqual(unicode(u.encode(encoding),encoding), u)
-
-        # Roundtrip safety for non-BMP (just a few chars)
-        u = u'\U00010001\U00020002\U00030003\U00040004\U00050005'
-        for encoding in ('utf-8', 'utf-16', 'utf-16-le', 'utf-16-be',
-                         #'raw_unicode_escape',
-                         'unicode_escape', 'unicode_internal'):
-            self.assertEqual(unicode(u.encode(encoding),encoding), u)
-
-        # UTF-8 must be roundtrip safe for all UCS-2 code points
-        # This excludes surrogates: in the full range, there would be
-        # a surrogate pair (\udbff\udc00), which gets converted back
-        # to a non-BMP character (\U0010fc00)
-        u = u''.join(map(unichr, range(0,0xd800)+range(0xe000,0x10000)))
-        for encoding in ('utf-8',):
-            self.assertEqual(unicode(u.encode(encoding),encoding), u)
-
-    def test_codecs_charmap(self):
-        # 0-127
-        s = ''.join(map(chr, xrange(128)))
-        for encoding in (
-            'cp037', 'cp1026',
-            'cp437', 'cp500', 'cp720', 'cp737', 'cp775', 'cp850',
-            'cp852', 'cp855', 'cp858', 'cp860', 'cp861', 'cp862',
-            'cp863', 'cp865', 'cp866',
-            'iso8859_10', 'iso8859_13', 'iso8859_14', 'iso8859_15',
-            'iso8859_2', 'iso8859_3', 'iso8859_4', 'iso8859_5', 'iso8859_6',
-            'iso8859_7', 'iso8859_9', 'koi8_r', 'latin_1',
-            'mac_cyrillic', 'mac_latin2',
-
-            'cp1250', 'cp1251', 'cp1252', 'cp1253', 'cp1254', 'cp1255',
-            'cp1256', 'cp1257', 'cp1258',
-            'cp856', 'cp857', 'cp864', 'cp869', 'cp874',
-
-            'mac_greek', 'mac_iceland','mac_roman', 'mac_turkish',
-            'cp1006', 'iso8859_8',
-
-            ### These have undefined mappings:
-            #'cp424',
-
-            ### These fail the round-trip:
-            #'cp875'
-
-            ):
-            self.assertEqual(unicode(s, encoding).encode(encoding), s)
-
-        # 128-255
-        s = ''.join(map(chr, xrange(128, 256)))
-        for encoding in (
-            'cp037', 'cp1026',
-            'cp437', 'cp500', 'cp720', 'cp737', 'cp775', 'cp850',
-            'cp852', 'cp855', 'cp858', 'cp860', 'cp861', 'cp862',
-            'cp863', 'cp865', 'cp866',
-            'iso8859_10', 'iso8859_13', 'iso8859_14', 'iso8859_15',
-            'iso8859_2', 'iso8859_4', 'iso8859_5',
-            'iso8859_9', 'koi8_r', 'latin_1',
-            'mac_cyrillic', 'mac_latin2',
-
-            ### These have undefined mappings:
-            #'cp1250', 'cp1251', 'cp1252', 'cp1253', 'cp1254', 'cp1255',
-            #'cp1256', 'cp1257', 'cp1258',
-            #'cp424', 'cp856', 'cp857', 'cp864', 'cp869', 'cp874',
-            #'iso8859_3', 'iso8859_6', 'iso8859_7',
-            #'mac_greek', 'mac_iceland','mac_roman', 'mac_turkish',
-
-            ### These fail the round-trip:
-            #'cp1006', 'cp875', 'iso8859_8',
-
-            ):
-            self.assertEqual(unicode(s, encoding).encode(encoding), s)
-
-    def test_concatenation(self):
-        self.assertEqual((u"abc" u"def"), u"abcdef")
-        self.assertEqual(("abc" u"def"), u"abcdef")
-        self.assertEqual((u"abc" "def"), u"abcdef")
-        self.assertEqual((u"abc" u"def" "ghi"), u"abcdefghi")
-        self.assertEqual(("abc" "def" u"ghi"), u"abcdefghi")
-
-    def test_printing(self):
-        class BitBucket:
-            def write(self, text):
-                pass
-
-        out = BitBucket()
-        print >>out, u'abc'
-        print >>out, u'abc', u'def'
-        print >>out, u'abc', 'def'
-        print >>out, 'abc', u'def'
-        print >>out, u'abc\n'
-        print >>out, u'abc\n',
-        print >>out, u'abc\n',
-        print >>out, u'def\n'
-        print >>out, u'def\n'
-
-    def test_ucs4(self):
-        x = u'\U00100000'
-        y = x.encode("raw-unicode-escape").decode("raw-unicode-escape")
-        self.assertEqual(x, y)
-
-        y = r'\U00100000'
-        x = y.decode("raw-unicode-escape").encode("raw-unicode-escape")
-        self.assertEqual(x, y)
-        y = r'\U00010000'
-        x = y.decode("raw-unicode-escape").encode("raw-unicode-escape")
-        self.assertEqual(x, y)
-
-        try:
-            '\U11111111'.decode("raw-unicode-escape")
-        except UnicodeDecodeError as e:
-            self.assertEqual(e.start, 0)
-            self.assertEqual(e.end, 10)
-        else:
-            self.fail("Should have raised UnicodeDecodeError")
-
-    def test_conversion(self):
-        # Make sure __unicode__() works properly
-        class Foo0:
-            def __str__(self):
-                return "foo"
-
-        class Foo1:
-            def __unicode__(self):
-                return u"foo"
-
-        class Foo2(object):
-            def __unicode__(self):
-                return u"foo"
-
-        class Foo3(object):
-            def __unicode__(self):
-                return "foo"
-
-        class Foo4(str):
-            def __unicode__(self):
-                return "foo"
-
-        class Foo5(unicode):
-            def __unicode__(self):
-                return "foo"
-
-        class Foo6(str):
-            def __str__(self):
-                return "foos"
-
-            def __unicode__(self):
-                return u"foou"
-
-        class Foo7(unicode):
-            def __str__(self):
-                return "foos"
-            def __unicode__(self):
-                return u"foou"
-
-        class Foo8(unicode):
-            def __new__(cls, content=""):
-                return unicode.__new__(cls, 2*content)
-            def __unicode__(self):
-                return self
-
-        class Foo9(unicode):
-            def __str__(self):
-                return "string"
-            def __unicode__(self):
-                return "not unicode"
-
-        self.assertEqual(unicode(Foo0()), u"foo")
-        self.assertEqual(unicode(Foo1()), u"foo")
-        self.assertEqual(unicode(Foo2()), u"foo")
-        self.assertEqual(unicode(Foo3()), u"foo")
-        self.assertEqual(unicode(Foo4("bar")), u"foo")
-        self.assertEqual(unicode(Foo5("bar")), u"foo")
-        self.assertEqual(unicode(Foo6("bar")), u"foou")
-        self.assertEqual(unicode(Foo7("bar")), u"foou")
-        self.assertEqual(unicode(Foo8("foo")), u"foofoo")
-        self.assertEqual(str(Foo9("foo")), "string")
-        self.assertEqual(unicode(Foo9("foo")), u"not unicode")
-
-    def test_unicode_repr(self):
-        class s1:
-            def __repr__(self):
-                return '\\n'
-
-        class s2:
-            def __repr__(self):
-                return u'\\n'
-
-        self.assertEqual(repr(s1()), '\\n')
-        self.assertEqual(repr(s2()), '\\n')
-
-    def test_expandtabs_overflows_gracefully(self):
-        # This test only affects 32-bit platforms because expandtabs can only take
-        # an int as the max value, not a 64-bit C long.  If expandtabs is changed
-        # to take a 64-bit long, this test should apply to all platforms.
-        if sys.maxint > (1 << 32) or struct.calcsize('P') != 4:
-            return
-        self.assertRaises(OverflowError, u't\tt\t'.expandtabs, sys.maxint)
-
-    def test__format__(self):
-        def test(value, format, expected):
-            # test both with and without the trailing 's'
-            self.assertEqual(value.__format__(format), expected)
-            self.assertEqual(value.__format__(format + u's'), expected)
-
-        test(u'', u'', u'')
-        test(u'abc', u'', u'abc')
-        test(u'abc', u'.3', u'abc')
-        test(u'ab', u'.3', u'ab')
-        test(u'abcdef', u'.3', u'abc')
-        test(u'abcdef', u'.0', u'')
-        test(u'abc', u'3.3', u'abc')
-        test(u'abc', u'2.3', u'abc')
-        test(u'abc', u'2.2', u'ab')
-        test(u'abc', u'3.2', u'ab ')
-        test(u'result', u'x<0', u'result')
-        test(u'result', u'x<5', u'result')
-        test(u'result', u'x<6', u'result')
-        test(u'result', u'x<7', u'resultx')
-        test(u'result', u'x<8', u'resultxx')
-        test(u'result', u' <7', u'result ')
-        test(u'result', u'<7', u'result ')
-        test(u'result', u'>7', u' result')
-        test(u'result', u'>8', u'  result')
-        test(u'result', u'^8', u' result ')
-        test(u'result', u'^9', u' result  ')
-        test(u'result', u'^10', u'  result  ')
-        test(u'a', u'10000', u'a' + u' ' * 9999)
-        test(u'', u'10000', u' ' * 10000)
-        test(u'', u'10000000', u' ' * 10000000)
-
-        # test mixing unicode and str
-        self.assertEqual(u'abc'.__format__('s'), u'abc')
-        self.assertEqual(u'abc'.__format__('->10s'), u'-------abc')
-
-    def test_format(self):
-        self.assertEqual(u''.format(), u'')
-        self.assertEqual(u'a'.format(), u'a')
-        self.assertEqual(u'ab'.format(), u'ab')
-        self.assertEqual(u'a{{'.format(), u'a{')
-        self.assertEqual(u'a}}'.format(), u'a}')
-        self.assertEqual(u'{{b'.format(), u'{b')
-        self.assertEqual(u'}}b'.format(), u'}b')
-        self.assertEqual(u'a{{b'.format(), u'a{b')
-
-        # examples from the PEP:
-        import datetime
-        self.assertEqual(u"My name is {0}".format(u'Fred'), u"My name is Fred")
-        self.assertEqual(u"My name is {0[name]}".format(dict(name=u'Fred')),
-                         u"My name is Fred")
-        self.assertEqual(u"My name is {0} :-{{}}".format(u'Fred'),
-                         u"My name is Fred :-{}")
-
-        # datetime.__format__ doesn't work with unicode
-        #d = datetime.date(2007, 8, 18)
-        #self.assertEqual("The year is {0.year}".format(d),
-        #                 "The year is 2007")
-
-        # classes we'll use for testing
-        class C:
-            def __init__(self, x=100):
-                self._x = x
-            def __format__(self, spec):
-                return spec
-
-        class D:
-            def __init__(self, x):
-                self.x = x
-            def __format__(self, spec):
-                return str(self.x)
-
-        # class with __str__, but no __format__
-        class E:
-            def __init__(self, x):
-                self.x = x
-            def __str__(self):
-                return u'E(' + self.x + u')'
-
-        # class with __repr__, but no __format__ or __str__
-        class F:
-            def __init__(self, x):
-                self.x = x
-            def __repr__(self):
-                return u'F(' + self.x + u')'
-
-        # class with __format__ that forwards to string, for some format_spec's
-        class G:
-            def __init__(self, x):
-                self.x = x
-            def __str__(self):
-                return u"string is " + self.x
-            def __format__(self, format_spec):
-                if format_spec == 'd':
-                    return u'G(' + self.x + u')'
-                return object.__format__(self, format_spec)
-
-        # class that returns a bad type from __format__
-        class H:
-            def __format__(self, format_spec):
-                return 1.0
-
-        class I(datetime.date):
-            def __format__(self, format_spec):
-                return self.strftime(format_spec)
-
-        class J(int):
-            def __format__(self, format_spec):
-                return int.__format__(self * 2, format_spec)
-
-
-        self.assertEqual(u''.format(), u'')
-        self.assertEqual(u'abc'.format(), u'abc')
-        self.assertEqual(u'{0}'.format(u'abc'), u'abc')
-        self.assertEqual(u'{0:}'.format(u'abc'), u'abc')
-        self.assertEqual(u'X{0}'.format(u'abc'), u'Xabc')
-        self.assertEqual(u'{0}X'.format(u'abc'), u'abcX')
-        self.assertEqual(u'X{0}Y'.format(u'abc'), u'XabcY')
-        self.assertEqual(u'{1}'.format(1, u'abc'), u'abc')
-        self.assertEqual(u'X{1}'.format(1, u'abc'), u'Xabc')
-        self.assertEqual(u'{1}X'.format(1, u'abc'), u'abcX')
-        self.assertEqual(u'X{1}Y'.format(1, u'abc'), u'XabcY')
-        self.assertEqual(u'{0}'.format(-15), u'-15')
-        self.assertEqual(u'{0}{1}'.format(-15, u'abc'), u'-15abc')
-        self.assertEqual(u'{0}X{1}'.format(-15, u'abc'), u'-15Xabc')
-        self.assertEqual(u'{{'.format(), u'{')
-        self.assertEqual(u'}}'.format(), u'}')
-        self.assertEqual(u'{{}}'.format(), u'{}')
-        self.assertEqual(u'{{x}}'.format(), u'{x}')
-        self.assertEqual(u'{{{0}}}'.format(123), u'{123}')
-        self.assertEqual(u'{{{{0}}}}'.format(), u'{{0}}')
-        self.assertEqual(u'}}{{'.format(), u'}{')
-        self.assertEqual(u'}}x{{'.format(), u'}x{')
-
-        # weird field names
-        self.assertEqual(u"{0[foo-bar]}".format({u'foo-bar':u'baz'}), u'baz')
-        self.assertEqual(u"{0[foo bar]}".format({u'foo bar':u'baz'}), u'baz')
-        self.assertEqual(u"{0[ ]}".format({u' ':3}), u'3')
-
-        self.assertEqual(u'{foo._x}'.format(foo=C(20)), u'20')
-        self.assertEqual(u'{1}{0}'.format(D(10), D(20)), u'2010')
-        self.assertEqual(u'{0._x.x}'.format(C(D(u'abc'))), u'abc')
-        self.assertEqual(u'{0[0]}'.format([u'abc', u'def']), u'abc')
-        self.assertEqual(u'{0[1]}'.format([u'abc', u'def']), u'def')
-        self.assertEqual(u'{0[1][0]}'.format([u'abc', [u'def']]), u'def')
-        self.assertEqual(u'{0[1][0].x}'.format(['abc', [D(u'def')]]), u'def')
-
-        # strings
-        self.assertEqual(u'{0:.3s}'.format(u'abc'), u'abc')
-        self.assertEqual(u'{0:.3s}'.format(u'ab'), u'ab')
-        self.assertEqual(u'{0:.3s}'.format(u'abcdef'), u'abc')
-        self.assertEqual(u'{0:.0s}'.format(u'abcdef'), u'')
-        self.assertEqual(u'{0:3.3s}'.format(u'abc'), u'abc')
-        self.assertEqual(u'{0:2.3s}'.format(u'abc'), u'abc')
-        self.assertEqual(u'{0:2.2s}'.format(u'abc'), u'ab')
-        self.assertEqual(u'{0:3.2s}'.format(u'abc'), u'ab ')
-        self.assertEqual(u'{0:x<0s}'.format(u'result'), u'result')
-        self.assertEqual(u'{0:x<5s}'.format(u'result'), u'result')
-        self.assertEqual(u'{0:x<6s}'.format(u'result'), u'result')
-        self.assertEqual(u'{0:x<7s}'.format(u'result'), u'resultx')
-        self.assertEqual(u'{0:x<8s}'.format(u'result'), u'resultxx')
-        self.assertEqual(u'{0: <7s}'.format(u'result'), u'result ')
-        self.assertEqual(u'{0:<7s}'.format(u'result'), u'result ')
-        self.assertEqual(u'{0:>7s}'.format(u'result'), u' result')
-        self.assertEqual(u'{0:>8s}'.format(u'result'), u'  result')
-        self.assertEqual(u'{0:^8s}'.format(u'result'), u' result ')
-        self.assertEqual(u'{0:^9s}'.format(u'result'), u' result  ')
-        self.assertEqual(u'{0:^10s}'.format(u'result'), u'  result  ')
-        self.assertEqual(u'{0:10000}'.format(u'a'), u'a' + u' ' * 9999)
-        self.assertEqual(u'{0:10000}'.format(u''), u' ' * 10000)
-        self.assertEqual(u'{0:10000000}'.format(u''), u' ' * 10000000)
-
-        # format specifiers for user defined type
-        self.assertEqual(u'{0:abc}'.format(C()), u'abc')
-
-        # !r and !s coercions
-        self.assertEqual(u'{0!s}'.format(u'Hello'), u'Hello')
-        self.assertEqual(u'{0!s:}'.format(u'Hello'), u'Hello')
-        self.assertEqual(u'{0!s:15}'.format(u'Hello'), u'Hello          ')
-        self.assertEqual(u'{0!s:15s}'.format(u'Hello'), u'Hello          ')
-        self.assertEqual(u'{0!r}'.format(u'Hello'), u"u'Hello'")
-        self.assertEqual(u'{0!r:}'.format(u'Hello'), u"u'Hello'")
-        self.assertEqual(u'{0!r}'.format(F(u'Hello')), u'F(Hello)')
-
-        # test fallback to object.__format__
-        self.assertEqual(u'{0}'.format({}), u'{}')
-        self.assertEqual(u'{0}'.format([]), u'[]')
-        self.assertEqual(u'{0}'.format([1]), u'[1]')
-        self.assertEqual(u'{0}'.format(E(u'data')), u'E(data)')
-        self.assertEqual(u'{0:d}'.format(G(u'data')), u'G(data)')
-        self.assertEqual(u'{0!s}'.format(G(u'data')), u'string is data')
-
-        msg = 'object.__format__ with a non-empty format string is deprecated'
-        with test_support.check_warnings((msg, PendingDeprecationWarning)):
-            self.assertEqual(u'{0:^10}'.format(E(u'data')), u' E(data)  ')
-            self.assertEqual(u'{0:^10s}'.format(E(u'data')), u' E(data)  ')
-            self.assertEqual(u'{0:>15s}'.format(G(u'data')), u' string is data')
-
-        self.assertEqual(u"{0:date: %Y-%m-%d}".format(I(year=2007,
-                                                        month=8,
-                                                        day=27)),
-                         u"date: 2007-08-27")
-
-        # test deriving from a builtin type and overriding __format__
-        self.assertEqual(u"{0}".format(J(10)), u"20")
-
-
-        # string format specifiers
-        self.assertEqual(u'{0:}'.format('a'), u'a')
-
-        # computed format specifiers
-        self.assertEqual(u"{0:.{1}}".format(u'hello world', 5), u'hello')
-        self.assertEqual(u"{0:.{1}s}".format(u'hello world', 5), u'hello')
-        self.assertEqual(u"{0:.{precision}s}".format('hello world', precision=5), u'hello')
-        self.assertEqual(u"{0:{width}.{precision}s}".format('hello world', width=10, precision=5), u'hello     ')
-        self.assertEqual(u"{0:{width}.{precision}s}".format('hello world', width='10', precision='5'), u'hello     ')
-
-        # test various errors
-        self.assertRaises(ValueError, u'{'.format)
-        self.assertRaises(ValueError, u'}'.format)
-        self.assertRaises(ValueError, u'a{'.format)
-        self.assertRaises(ValueError, u'a}'.format)
-        self.assertRaises(ValueError, u'{a'.format)
-        self.assertRaises(ValueError, u'}a'.format)
-        self.assertRaises(IndexError, u'{0}'.format)
-        self.assertRaises(IndexError, u'{1}'.format, u'abc')
-        self.assertRaises(KeyError,   u'{x}'.format)
-        self.assertRaises(ValueError, u"}{".format)
-        self.assertRaises(ValueError, u"{".format)
-        self.assertRaises(ValueError, u"}".format)
-        self.assertRaises(ValueError, u"abc{0:{}".format)
-        self.assertRaises(ValueError, u"{0".format)
-        self.assertRaises(IndexError, u"{0.}".format)
-        self.assertRaises(ValueError, u"{0.}".format, 0)
-        self.assertRaises(IndexError, u"{0[}".format)
-        self.assertRaises(ValueError, u"{0[}".format, [])
-        self.assertRaises(KeyError,   u"{0]}".format)
-        self.assertRaises(ValueError, u"{0.[]}".format, 0)
-        self.assertRaises(ValueError, u"{0..foo}".format, 0)
-        self.assertRaises(ValueError, u"{0[0}".format, 0)
-        self.assertRaises(ValueError, u"{0[0:foo}".format, 0)
-        self.assertRaises(KeyError,   u"{c]}".format)
-        self.assertRaises(ValueError, u"{{ {{{0}}".format, 0)
-        self.assertRaises(ValueError, u"{0}}".format, 0)
-        self.assertRaises(KeyError,   u"{foo}".format, bar=3)
-        self.assertRaises(ValueError, u"{0!x}".format, 3)
-        self.assertRaises(ValueError, u"{0!}".format, 0)
-        self.assertRaises(ValueError, u"{0!rs}".format, 0)
-        self.assertRaises(ValueError, u"{!}".format)
-        self.assertRaises(IndexError, u"{:}".format)
-        self.assertRaises(IndexError, u"{:s}".format)
-        self.assertRaises(IndexError, u"{}".format)
-        big = u"23098475029384702983476098230754973209482573"
-        self.assertRaises(ValueError, (u"{" + big + u"}").format)
-        self.assertRaises(ValueError, (u"{[" + big + u"]}").format, [0])
-
-        # issue 6089
-        self.assertRaises(ValueError, u"{0[0]x}".format, [None])
-        self.assertRaises(ValueError, u"{0[0](10)}".format, [None])
-
-        # can't have a replacement on the field name portion
-        self.assertRaises(TypeError, u'{0[{1}]}'.format, u'abcdefg', 4)
-
-        # exceed maximum recursion depth
-        self.assertRaises(ValueError, u"{0:{1:{2}}}".format, u'abc', u's', u'')
-        self.assertRaises(ValueError, u"{0:{1:{2:{3:{4:{5:{6}}}}}}}".format,
-                          0, 1, 2, 3, 4, 5, 6, 7)
-
-        # string format spec errors
-        self.assertRaises(ValueError, u"{0:-s}".format, u'')
-        self.assertRaises(ValueError, format, u"", u"-")
-        self.assertRaises(ValueError, u"{0:=s}".format, u'')
-
-        # test combining string and unicode
-        self.assertEqual(u"foo{0}".format('bar'), u'foobar')
-        # This will try to convert the argument from unicode to str, which
-        #  will succeed
-        self.assertEqual("foo{0}".format(u'bar'), 'foobar')
-        # This will try to convert the argument from unicode to str, which
-        #  will fail
-        self.assertRaises(UnicodeEncodeError, "foo{0}".format, u'\u1000bar')
-
-    def test_format_auto_numbering(self):
-        class C:
-            def __init__(self, x=100):
-                self._x = x
-            def __format__(self, spec):
-                return spec
-
-        self.assertEqual(u'{}'.format(10), u'10')
-        self.assertEqual(u'{:5}'.format('s'), u's    ')
-        self.assertEqual(u'{!r}'.format('s'), u"'s'")
-        self.assertEqual(u'{._x}'.format(C(10)), u'10')
-        self.assertEqual(u'{[1]}'.format([1, 2]), u'2')
-        self.assertEqual(u'{[a]}'.format({'a':4, 'b':2}), u'4')
-        self.assertEqual(u'a{}b{}c'.format(0, 1), u'a0b1c')
-
-        self.assertEqual(u'a{:{}}b'.format('x', '^10'), u'a    x     b')
-        self.assertEqual(u'a{:{}x}b'.format(20, '#'), u'a0x14b')
-
-        # can't mix and match numbering and auto-numbering
-        self.assertRaises(ValueError, u'{}{1}'.format, 1, 2)
-        self.assertRaises(ValueError, u'{1}{}'.format, 1, 2)
-        self.assertRaises(ValueError, u'{:{1}}'.format, 1, 2)
-        self.assertRaises(ValueError, u'{0:{}}'.format, 1, 2)
-
-        # can mix and match auto-numbering and named
-        self.assertEqual(u'{f}{}'.format(4, f='test'), u'test4')
-        self.assertEqual(u'{}{f}'.format(4, f='test'), u'4test')
-        self.assertEqual(u'{:{f}}{g}{}'.format(1, 3, g='g', f=2), u' 1g3')
-        self.assertEqual(u'{f:{}}{}{g}'.format(2, 4, f=1, g='g'), u' 14g')
-
-    def test_raiseMemError(self):
-        # Ensure that the freelist contains a consistent object, even
-        # when a string allocation fails with a MemoryError.
-        # This used to crash the interpreter,
-        # or leak references when the number was smaller.
-        charwidth = 4 if sys.maxunicode >= 0x10000 else 2
-        # Note: sys.maxsize is half of the actual max allocation because of
-        # the signedness of Py_ssize_t.
-        alloc = lambda: u"a" * (sys.maxsize // charwidth * 2)
-        self.assertRaises(MemoryError, alloc)
-        self.assertRaises(MemoryError, alloc)
-
-    def test_format_subclass(self):
-        class U(unicode):
-            def __unicode__(self):
-                return u'__unicode__ overridden'
-        u = U(u'xxx')
-        self.assertEqual("%s" % u, u'__unicode__ overridden')
-        self.assertEqual("{}".format(u), '__unicode__ overridden')
-
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicode_file.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicode_file.py
deleted file mode 100644
index e4a1cad..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicode_file.py
+++ /dev/null
@@ -1,200 +0,0 @@
-# Test some Unicode file name semantics
-# We dont test many operations on files other than
-# that their names can be used with Unicode characters.
-import os, glob, time, shutil
-import unicodedata
-
-import unittest
-from test.test_support import run_unittest, TESTFN_UNICODE
-from test.test_support import TESTFN_ENCODING, TESTFN_UNENCODABLE
-try:
-    TESTFN_ENCODED = TESTFN_UNICODE.encode(TESTFN_ENCODING)
-except (UnicodeError, TypeError):
-    # Either the file system encoding is None, or the file name
-    # cannot be encoded in the file system encoding.
-    raise unittest.SkipTest("No Unicode filesystem semantics on this platform.")
-
-if TESTFN_ENCODED.decode(TESTFN_ENCODING) != TESTFN_UNICODE:
-    # The file system encoding does not support Latin-1
-    # (which test_support assumes), so try the file system
-    # encoding instead.
-    import sys
-    try:
-        TESTFN_UNICODE = unicode("@test-\xe0\xf2", sys.getfilesystemencoding())
-        TESTFN_ENCODED = TESTFN_UNICODE.encode(TESTFN_ENCODING)
-        if '?' in TESTFN_ENCODED:
-            # MBCS will not report the error properly
-            raise UnicodeError, "mbcs encoding problem"
-    except (UnicodeError, TypeError):
-        raise unittest.SkipTest("Cannot find a suiteable filename.")
-
-if TESTFN_ENCODED.decode(TESTFN_ENCODING) != TESTFN_UNICODE:
-    raise unittest.SkipTest("Cannot find a suitable filename.")
-
-def remove_if_exists(filename):
-    if os.path.exists(filename):
-        os.unlink(filename)
-
-class TestUnicodeFiles(unittest.TestCase):
-    # The 'do_' functions are the actual tests.  They generally assume the
-    # file already exists etc.
-
-    # Do all the tests we can given only a single filename.  The file should
-    # exist.
-    def _do_single(self, filename):
-        self.assertTrue(os.path.exists(filename))
-        self.assertTrue(os.path.isfile(filename))
-        self.assertTrue(os.access(filename, os.R_OK))
-        self.assertTrue(os.path.exists(os.path.abspath(filename)))
-        self.assertTrue(os.path.isfile(os.path.abspath(filename)))
-        self.assertTrue(os.access(os.path.abspath(filename), os.R_OK))
-        os.chmod(filename, 0777)
-        os.utime(filename, None)
-        os.utime(filename, (time.time(), time.time()))
-        # Copy/rename etc tests using the same filename
-        self._do_copyish(filename, filename)
-        # Filename should appear in glob output
-        self.assertTrue(
-            os.path.abspath(filename)==os.path.abspath(glob.glob(filename)[0]))
-        # basename should appear in listdir.
-        path, base = os.path.split(os.path.abspath(filename))
-        if isinstance(base, str):
-            base = base.decode(TESTFN_ENCODING)
-        file_list = os.listdir(path)
-        # listdir() with a unicode arg may or may not return Unicode
-        # objects, depending on the platform.
-        if file_list and isinstance(file_list[0], str):
-            file_list = [f.decode(TESTFN_ENCODING) for f in file_list]
-
-        # Normalize the unicode strings, as round-tripping the name via the OS
-        # may return a different (but equivalent) value.
-        base = unicodedata.normalize("NFD", base)
-        file_list = [unicodedata.normalize("NFD", f) for f in file_list]
-
-        self.assertIn(base, file_list)
-
-    # Do as many "equivalancy' tests as we can - ie, check that although we
-    # have different types for the filename, they refer to the same file.
-    def _do_equivalent(self, filename1, filename2):
-        # Note we only check "filename1 against filename2" - we don't bother
-        # checking "filename2 against 1", as we assume we are called again with
-        # the args reversed.
-        self.assertTrue(type(filename1)!=type(filename2),
-                    "No point checking equivalent filenames of the same type")
-        # stat and lstat should return the same results.
-        self.assertEqual(os.stat(filename1),
-                             os.stat(filename2))
-        self.assertEqual(os.lstat(filename1),
-                             os.lstat(filename2))
-        # Copy/rename etc tests using equivalent filename
-        self._do_copyish(filename1, filename2)
-
-    # Tests that copy, move, etc one file to another.
-    def _do_copyish(self, filename1, filename2):
-        # Should be able to rename the file using either name.
-        self.assertTrue(os.path.isfile(filename1)) # must exist.
-        os.rename(filename1, filename2 + ".new")
-        self.assertTrue(os.path.isfile(filename1+".new"))
-        os.rename(filename1 + ".new", filename2)
-        self.assertTrue(os.path.isfile(filename2))
-
-        shutil.copy(filename1, filename2 + ".new")
-        os.unlink(filename1 + ".new") # remove using equiv name.
-        # And a couple of moves, one using each name.
-        shutil.move(filename1, filename2 + ".new")
-        self.assertTrue(not os.path.exists(filename2))
-        shutil.move(filename1 + ".new", filename2)
-        self.assertTrue(os.path.exists(filename1))
-        # Note - due to the implementation of shutil.move,
-        # it tries a rename first.  This only fails on Windows when on
-        # different file systems - and this test can't ensure that.
-        # So we test the shutil.copy2 function, which is the thing most
-        # likely to fail.
-        shutil.copy2(filename1, filename2 + ".new")
-        os.unlink(filename1 + ".new")
-
-    def _do_directory(self, make_name, chdir_name, encoded):
-        cwd = os.getcwd()
-        if os.path.isdir(make_name):
-            os.rmdir(make_name)
-        os.mkdir(make_name)
-        try:
-            os.chdir(chdir_name)
-            try:
-                if not encoded:
-                    cwd_result = os.getcwdu()
-                    name_result = make_name
-                else:
-                    cwd_result = os.getcwd().decode(TESTFN_ENCODING)
-                    name_result = make_name.decode(TESTFN_ENCODING)
-
-                cwd_result = unicodedata.normalize("NFD", cwd_result)
-                name_result = unicodedata.normalize("NFD", name_result)
-
-                self.assertEqual(os.path.basename(cwd_result),name_result)
-            finally:
-                os.chdir(cwd)
-        finally:
-            os.rmdir(make_name)
-
-    # The '_test' functions 'entry points with params' - ie, what the
-    # top-level 'test' functions would be if they could take params
-    def _test_single(self, filename):
-        remove_if_exists(filename)
-        f = file(filename, "w")
-        f.close()
-        try:
-            self._do_single(filename)
-        finally:
-            os.unlink(filename)
-        self.assertTrue(not os.path.exists(filename))
-        # and again with os.open.
-        f = os.open(filename, os.O_CREAT)
-        os.close(f)
-        try:
-            self._do_single(filename)
-        finally:
-            os.unlink(filename)
-
-    def _test_equivalent(self, filename1, filename2):
-        remove_if_exists(filename1)
-        self.assertTrue(not os.path.exists(filename2))
-        f = file(filename1, "w")
-        f.close()
-        try:
-            self._do_equivalent(filename1, filename2)
-        finally:
-            os.unlink(filename1)
-
-    # The 'test' functions are unittest entry points, and simply call our
-    # _test functions with each of the filename combinations we wish to test
-    def test_single_files(self):
-        self._test_single(TESTFN_ENCODED)
-        self._test_single(TESTFN_UNICODE)
-        if TESTFN_UNENCODABLE is not None:
-            self._test_single(TESTFN_UNENCODABLE)
-
-    def test_equivalent_files(self):
-        self._test_equivalent(TESTFN_ENCODED, TESTFN_UNICODE)
-        self._test_equivalent(TESTFN_UNICODE, TESTFN_ENCODED)
-
-    def test_directories(self):
-        # For all 'equivalent' combinations:
-        #  Make dir with encoded, chdir with unicode, checkdir with encoded
-        #  (or unicode/encoded/unicode, etc
-        ext = ".dir"
-        self._do_directory(TESTFN_ENCODED+ext, TESTFN_ENCODED+ext, True)
-        self._do_directory(TESTFN_ENCODED+ext, TESTFN_UNICODE+ext, True)
-        self._do_directory(TESTFN_UNICODE+ext, TESTFN_ENCODED+ext, False)
-        self._do_directory(TESTFN_UNICODE+ext, TESTFN_UNICODE+ext, False)
-        # Our directory name that can't use a non-unicode name.
-        if TESTFN_UNENCODABLE is not None:
-            self._do_directory(TESTFN_UNENCODABLE+ext,
-                               TESTFN_UNENCODABLE+ext,
-                               False)
-
-def test_main():
-    run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicodedata.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicodedata.py
deleted file mode 100644
index def6bc9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unicodedata.py
+++ /dev/null
@@ -1,317 +0,0 @@
-""" Test script for the unicodedata module.
-
-    Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-    (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-
-"""
-
-import sys
-import unittest
-import hashlib
-import subprocess
-import test.test_support
-
-encoding = 'utf-8'
-
-
-### Run tests
-
-class UnicodeMethodsTest(unittest.TestCase):
-
-    # update this, if the database changes
-    expectedchecksum = '4504dffd035baea02c5b9de82bebc3d65e0e0baf'
-
-    def test_method_checksum(self):
-        h = hashlib.sha1()
-        for i in range(0x10000):
-            char = unichr(i)
-            data = [
-                # Predicates (single char)
-                u"01"[char.isalnum()],
-                u"01"[char.isalpha()],
-                u"01"[char.isdecimal()],
-                u"01"[char.isdigit()],
-                u"01"[char.islower()],
-                u"01"[char.isnumeric()],
-                u"01"[char.isspace()],
-                u"01"[char.istitle()],
-                u"01"[char.isupper()],
-
-                # Predicates (multiple chars)
-                u"01"[(char + u'abc').isalnum()],
-                u"01"[(char + u'abc').isalpha()],
-                u"01"[(char + u'123').isdecimal()],
-                u"01"[(char + u'123').isdigit()],
-                u"01"[(char + u'abc').islower()],
-                u"01"[(char + u'123').isnumeric()],
-                u"01"[(char + u' \t').isspace()],
-                u"01"[(char + u'abc').istitle()],
-                u"01"[(char + u'ABC').isupper()],
-
-                # Mappings (single char)
-                char.lower(),
-                char.upper(),
-                char.title(),
-
-                # Mappings (multiple chars)
-                (char + u'abc').lower(),
-                (char + u'ABC').upper(),
-                (char + u'abc').title(),
-                (char + u'ABC').title(),
-
-                ]
-            h.update(u''.join(data).encode(encoding))
-        result = h.hexdigest()
-        self.assertEqual(result, self.expectedchecksum)
-
-class UnicodeDatabaseTest(unittest.TestCase):
-
-    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
-
-class UnicodeFunctionsTest(UnicodeDatabaseTest):
-
-    # update this, if the database changes
-    expectedchecksum = '6ccf1b1a36460d2694f9b0b0f0324942fe70ede6'
-
-    def test_function_checksum(self):
-        data = []
-        h = hashlib.sha1()
-
-        for i in range(0x10000):
-            char = unichr(i)
-            data = [
-                # Properties
-                str(self.db.digit(char, -1)),
-                str(self.db.numeric(char, -1)),
-                str(self.db.decimal(char, -1)),
-                self.db.category(char),
-                self.db.bidirectional(char),
-                self.db.decomposition(char),
-                str(self.db.mirrored(char)),
-                str(self.db.combining(char)),
-            ]
-            h.update(''.join(data))
-        result = h.hexdigest()
-        self.assertEqual(result, self.expectedchecksum)
-
-    def test_digit(self):
-        self.assertEqual(self.db.digit(u'A', None), None)
-        self.assertEqual(self.db.digit(u'9'), 9)
-        self.assertEqual(self.db.digit(u'\u215b', None), None)
-        self.assertEqual(self.db.digit(u'\u2468'), 9)
-        self.assertEqual(self.db.digit(u'\U00020000', None), None)
-
-        self.assertRaises(TypeError, self.db.digit)
-        self.assertRaises(TypeError, self.db.digit, u'xx')
-        self.assertRaises(ValueError, self.db.digit, u'x')
-
-    def test_numeric(self):
-        self.assertEqual(self.db.numeric(u'A',None), None)
-        self.assertEqual(self.db.numeric(u'9'), 9)
-        self.assertEqual(self.db.numeric(u'\u215b'), 0.125)
-        self.assertEqual(self.db.numeric(u'\u2468'), 9.0)
-        self.assertEqual(self.db.numeric(u'\ua627'), 7.0)
-        self.assertEqual(self.db.numeric(u'\U00020000', None), None)
-
-        self.assertRaises(TypeError, self.db.numeric)
-        self.assertRaises(TypeError, self.db.numeric, u'xx')
-        self.assertRaises(ValueError, self.db.numeric, u'x')
-
-    def test_decimal(self):
-        self.assertEqual(self.db.decimal(u'A',None), None)
-        self.assertEqual(self.db.decimal(u'9'), 9)
-        self.assertEqual(self.db.decimal(u'\u215b', None), None)
-        self.assertEqual(self.db.decimal(u'\u2468', None), None)
-        self.assertEqual(self.db.decimal(u'\U00020000', None), None)
-
-        self.assertRaises(TypeError, self.db.decimal)
-        self.assertRaises(TypeError, self.db.decimal, u'xx')
-        self.assertRaises(ValueError, self.db.decimal, u'x')
-
-    def test_category(self):
-        self.assertEqual(self.db.category(u'\uFFFE'), 'Cn')
-        self.assertEqual(self.db.category(u'a'), 'Ll')
-        self.assertEqual(self.db.category(u'A'), 'Lu')
-        self.assertEqual(self.db.category(u'\U00020000'), 'Lo')
-
-        self.assertRaises(TypeError, self.db.category)
-        self.assertRaises(TypeError, self.db.category, u'xx')
-
-    def test_bidirectional(self):
-        self.assertEqual(self.db.bidirectional(u'\uFFFE'), '')
-        self.assertEqual(self.db.bidirectional(u' '), 'WS')
-        self.assertEqual(self.db.bidirectional(u'A'), 'L')
-        self.assertEqual(self.db.bidirectional(u'\U00020000'), 'L')
-
-        self.assertRaises(TypeError, self.db.bidirectional)
-        self.assertRaises(TypeError, self.db.bidirectional, u'xx')
-
-    def test_decomposition(self):
-        self.assertEqual(self.db.decomposition(u'\uFFFE'),'')
-        self.assertEqual(self.db.decomposition(u'\u00bc'), '<fraction> 0031 2044 0034')
-
-        self.assertRaises(TypeError, self.db.decomposition)
-        self.assertRaises(TypeError, self.db.decomposition, u'xx')
-
-    def test_mirrored(self):
-        self.assertEqual(self.db.mirrored(u'\uFFFE'), 0)
-        self.assertEqual(self.db.mirrored(u'a'), 0)
-        self.assertEqual(self.db.mirrored(u'\u2201'), 1)
-        self.assertEqual(self.db.mirrored(u'\U00020000'), 0)
-
-        self.assertRaises(TypeError, self.db.mirrored)
-        self.assertRaises(TypeError, self.db.mirrored, u'xx')
-
-    def test_combining(self):
-        self.assertEqual(self.db.combining(u'\uFFFE'), 0)
-        self.assertEqual(self.db.combining(u'a'), 0)
-        self.assertEqual(self.db.combining(u'\u20e1'), 230)
-        self.assertEqual(self.db.combining(u'\U00020000'), 0)
-
-        self.assertRaises(TypeError, self.db.combining)
-        self.assertRaises(TypeError, self.db.combining, u'xx')
-
-    def test_normalize(self):
-        self.assertRaises(TypeError, self.db.normalize)
-        self.assertRaises(ValueError, self.db.normalize, 'unknown', u'xx')
-        self.assertEqual(self.db.normalize('NFKC', u''), u'')
-        # The rest can be found in test_normalization.py
-        # which requires an external file.
-
-    def test_pr29(self):
-        # http://www.unicode.org/review/pr-29.html
-        # See issues #1054943 and #10254.
-        composed = (u"\u0b47\u0300\u0b3e", u"\u1100\u0300\u1161",
-                    u'Li\u030dt-s\u1e73\u0301',
-                    u'\u092e\u093e\u0930\u094d\u0915 \u091c\u093c'
-                    + u'\u0941\u0915\u0947\u0930\u092c\u0930\u094d\u0917',
-                    u'\u0915\u093f\u0930\u094d\u0917\u093f\u091c\u093c'
-                    + 'u\u0938\u094d\u0924\u093e\u0928')
-        for text in composed:
-            self.assertEqual(self.db.normalize('NFC', text), text)
-
-    def test_issue10254(self):
-        # Crash reported in #10254
-        a = u'C\u0338' * 20  + u'C\u0327'
-        b = u'C\u0338' * 20  + u'\xC7'
-        self.assertEqual(self.db.normalize('NFC', a), b)
-
-    def test_east_asian_width(self):
-        eaw = self.db.east_asian_width
-        self.assertRaises(TypeError, eaw, 'a')
-        self.assertRaises(TypeError, eaw, u'')
-        self.assertRaises(TypeError, eaw, u'ra')
-        self.assertEqual(eaw(u'\x1e'), 'N')
-        self.assertEqual(eaw(u'\x20'), 'Na')
-        self.assertEqual(eaw(u'\uC894'), 'W')
-        self.assertEqual(eaw(u'\uFF66'), 'H')
-        self.assertEqual(eaw(u'\uFF1F'), 'F')
-        self.assertEqual(eaw(u'\u2010'), 'A')
-        self.assertEqual(eaw(u'\U00020000'), 'W')
-
-class UnicodeMiscTest(UnicodeDatabaseTest):
-
-    def test_failed_import_during_compiling(self):
-        # Issue 4367
-        # Decoding \N escapes requires the unicodedata module. If it can't be
-        # imported, we shouldn't segfault.
-
-        # This program should raise a SyntaxError in the eval.
-        code = "import sys;" \
-            "sys.modules['unicodedata'] = None;" \
-            """eval("u'\N{SOFT HYPHEN}'")"""
-        args = [sys.executable, "-c", code]
-        # We use a subprocess because the unicodedata module may already have
-        # been loaded in this process.
-        popen = subprocess.Popen(args, stderr=subprocess.PIPE)
-        popen.wait()
-        self.assertEqual(popen.returncode, 1)
-        error = "SyntaxError: (unicode error) \N escapes not supported " \
-            "(can't load unicodedata module)"
-        self.assertIn(error, popen.stderr.read())
-
-    def test_decimal_numeric_consistent(self):
-        # Test that decimal and numeric are consistent,
-        # i.e. if a character has a decimal value,
-        # its numeric value should be the same.
-        count = 0
-        for i in xrange(0x10000):
-            c = unichr(i)
-            dec = self.db.decimal(c, -1)
-            if dec != -1:
-                self.assertEqual(dec, self.db.numeric(c))
-                count += 1
-        self.assertTrue(count >= 10) # should have tested at least the ASCII digits
-
-    def test_digit_numeric_consistent(self):
-        # Test that digit and numeric are consistent,
-        # i.e. if a character has a digit value,
-        # its numeric value should be the same.
-        count = 0
-        for i in xrange(0x10000):
-            c = unichr(i)
-            dec = self.db.digit(c, -1)
-            if dec != -1:
-                self.assertEqual(dec, self.db.numeric(c))
-                count += 1
-        self.assertTrue(count >= 10) # should have tested at least the ASCII digits
-
-    def test_bug_1704793(self):
-        self.assertEqual(self.db.lookup("GOTHIC LETTER FAIHU"), u'\U00010346')
-
-    def test_ucd_510(self):
-        import unicodedata
-        # In UCD 5.1.0, a mirrored property changed wrt. UCD 3.2.0
-        self.assertTrue(unicodedata.mirrored(u"\u0f3a"))
-        self.assertTrue(not unicodedata.ucd_3_2_0.mirrored(u"\u0f3a"))
-        # Also, we now have two ways of representing
-        # the upper-case mapping: as delta, or as absolute value
-        self.assertTrue(u"a".upper()==u'A')
-        self.assertTrue(u"\u1d79".upper()==u'\ua77d')
-        self.assertTrue(u".".upper()==u".")
-
-    def test_bug_5828(self):
-        self.assertEqual(u"\u1d79".lower(), u"\u1d79")
-        # Only U+0000 should have U+0000 as its upper/lower/titlecase variant
-        self.assertEqual(
-            [
-                c for c in range(sys.maxunicode+1)
-                if u"\x00" in unichr(c).lower()+unichr(c).upper()+unichr(c).title()
-            ],
-            [0]
-        )
-
-    def test_bug_4971(self):
-        # LETTER DZ WITH CARON: DZ, Dz, dz
-        self.assertEqual(u"\u01c4".title(), u"\u01c5")
-        self.assertEqual(u"\u01c5".title(), u"\u01c5")
-        self.assertEqual(u"\u01c6".title(), u"\u01c5")
-
-    def test_linebreak_7643(self):
-        for i in range(0x10000):
-            lines = (unichr(i) + u'A').splitlines()
-            if i in (0x0a, 0x0b, 0x0c, 0x0d, 0x85,
-                     0x1c, 0x1d, 0x1e, 0x2028, 0x2029):
-                self.assertEqual(len(lines), 2,
-                                 r"\u%.4x should be a linebreak" % i)
-            else:
-                self.assertEqual(len(lines), 1,
-                                 r"\u%.4x should not be a linebreak" % i)
-
-def test_main():
-    test.test_support.run_unittest(
-        UnicodeMiscTest,
-        UnicodeMethodsTest,
-        UnicodeFunctionsTest
-    )
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unittest.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unittest.py
deleted file mode 100644
index 59a7bcc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unittest.py
+++ /dev/null
@@ -1,12 +0,0 @@
-import unittest.test
-
-from test import test_support
-
-
-def test_main():
-    test_support.run_unittest(unittest.test.suite())
-    test_support.reap_children()
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_univnewlines.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_univnewlines.py
deleted file mode 100644
index bba946f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_univnewlines.py
+++ /dev/null
@@ -1,135 +0,0 @@
-# Tests universal newline support for both reading and parsing files.
-
-# NOTE: this file tests the new `io` library backported from Python 3.x.
-# Similar tests for the builtin file object can be found in test_univnewlines2k.py.
-
-from __future__ import print_function
-from __future__ import unicode_literals
-
-import io
-import _pyio as pyio
-import unittest
-import os
-import sys
-from test import test_support as support
-
-if not hasattr(sys.stdin, 'newlines'):
-    raise unittest.SkipTest(
-        "This Python does not have universal newline support")
-
-FATX = 'x' * (2**14)
-
-DATA_TEMPLATE = [
-    "line1=1",
-    "line2='this is a very long line designed to go past any default " +
-        "buffer limits that exist in io.py but we also want to test " +
-        "the uncommon case, naturally.'",
-    "def line3():pass",
-    "line4 = '%s'" % FATX,
-    ]
-
-DATA_LF = "\n".join(DATA_TEMPLATE) + "\n"
-DATA_CR = "\r".join(DATA_TEMPLATE) + "\r"
-DATA_CRLF = "\r\n".join(DATA_TEMPLATE) + "\r\n"
-
-# Note that DATA_MIXED also tests the ability to recognize a lone \r
-# before end-of-file.
-DATA_MIXED = "\n".join(DATA_TEMPLATE) + "\r"
-DATA_SPLIT = [x + "\n" for x in DATA_TEMPLATE]
-
-class TestGenericUnivNewlines(unittest.TestCase):
-    # use a class variable DATA to define the data to write to the file
-    # and a class variable NEWLINE to set the expected newlines value
-    READMODE = 'r'
-    WRITEMODE = 'wb'
-
-    def setUp(self):
-        data = self.DATA
-        if "b" in self.WRITEMODE:
-            data = data.encode("ascii")
-        with self.open(support.TESTFN, self.WRITEMODE) as fp:
-            fp.write(data)
-
-    def tearDown(self):
-        try:
-            os.unlink(support.TESTFN)
-        except:
-            pass
-
-    def test_read(self):
-        with self.open(support.TESTFN, self.READMODE) as fp:
-            data = fp.read()
-        self.assertEqual(data, DATA_LF)
-        self.assertEqual(set(fp.newlines), set(self.NEWLINE))
-
-    def test_readlines(self):
-        with self.open(support.TESTFN, self.READMODE) as fp:
-            data = fp.readlines()
-        self.assertEqual(data, DATA_SPLIT)
-        self.assertEqual(set(fp.newlines), set(self.NEWLINE))
-
-    def test_readline(self):
-        with self.open(support.TESTFN, self.READMODE) as fp:
-            data = []
-            d = fp.readline()
-            while d:
-                data.append(d)
-                d = fp.readline()
-        self.assertEqual(data, DATA_SPLIT)
-        self.assertEqual(set(fp.newlines), set(self.NEWLINE))
-
-    def test_seek(self):
-        with self.open(support.TESTFN, self.READMODE) as fp:
-            fp.readline()
-            pos = fp.tell()
-            data = fp.readlines()
-            self.assertEqual(data, DATA_SPLIT[1:])
-            fp.seek(pos)
-            data = fp.readlines()
-        self.assertEqual(data, DATA_SPLIT[1:])
-
-
-class TestCRNewlines(TestGenericUnivNewlines):
-    NEWLINE = '\r'
-    DATA = DATA_CR
-
-class TestLFNewlines(TestGenericUnivNewlines):
-    NEWLINE = '\n'
-    DATA = DATA_LF
-
-class TestCRLFNewlines(TestGenericUnivNewlines):
-    NEWLINE = '\r\n'
-    DATA = DATA_CRLF
-
-    def test_tell(self):
-        with self.open(support.TESTFN, self.READMODE) as fp:
-            self.assertEqual(repr(fp.newlines), repr(None))
-            data = fp.readline()
-            pos = fp.tell()
-        self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
-
-class TestMixedNewlines(TestGenericUnivNewlines):
-    NEWLINE = ('\r', '\n')
-    DATA = DATA_MIXED
-
-
-def test_main():
-    base_tests = (TestCRNewlines,
-                  TestLFNewlines,
-                  TestCRLFNewlines,
-                  TestMixedNewlines)
-    tests = []
-    # Test the C and Python implementations.
-    for test in base_tests:
-        class CTest(test):
-            open = io.open
-        CTest.__name__ = str("C" + test.__name__)
-        class PyTest(test):
-            open = staticmethod(pyio.open)
-        PyTest.__name__ = str("Py" + test.__name__)
-        tests.append(CTest)
-        tests.append(PyTest)
-    support.run_unittest(*tests)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_univnewlines2k.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_univnewlines2k.py
deleted file mode 100644
index 12b98c0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_univnewlines2k.py
+++ /dev/null
@@ -1,130 +0,0 @@
-# Tests universal newline support for both reading and parsing files.
-import unittest
-import os
-import sys
-from test import test_support
-
-if not hasattr(sys.stdin, 'newlines'):
-    raise unittest.SkipTest, \
-        "This Python does not have universal newline support"
-
-FATX = 'x' * (2**14)
-
-DATA_TEMPLATE = [
-    "line1=1",
-    "line2='this is a very long line designed to go past the magic " +
-        "hundred character limit that is inside fileobject.c and which " +
-        "is meant to speed up the common case, but we also want to test " +
-        "the uncommon case, naturally.'",
-    "def line3():pass",
-    "line4 = '%s'" % FATX,
-    ]
-
-DATA_LF = "\n".join(DATA_TEMPLATE) + "\n"
-DATA_CR = "\r".join(DATA_TEMPLATE) + "\r"
-DATA_CRLF = "\r\n".join(DATA_TEMPLATE) + "\r\n"
-
-# Note that DATA_MIXED also tests the ability to recognize a lone \r
-# before end-of-file.
-DATA_MIXED = "\n".join(DATA_TEMPLATE) + "\r"
-DATA_SPLIT = [x + "\n" for x in DATA_TEMPLATE]
-del x
-
-class TestGenericUnivNewlines(unittest.TestCase):
-    # use a class variable DATA to define the data to write to the file
-    # and a class variable NEWLINE to set the expected newlines value
-    READMODE = 'U'
-    WRITEMODE = 'wb'
-
-    def setUp(self):
-        with open(test_support.TESTFN, self.WRITEMODE) as fp:
-            fp.write(self.DATA)
-
-    def tearDown(self):
-        try:
-            os.unlink(test_support.TESTFN)
-        except:
-            pass
-
-    def test_read(self):
-        with open(test_support.TESTFN, self.READMODE) as fp:
-            data = fp.read()
-        self.assertEqual(data, DATA_LF)
-        self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
-
-    def test_readlines(self):
-        with open(test_support.TESTFN, self.READMODE) as fp:
-            data = fp.readlines()
-        self.assertEqual(data, DATA_SPLIT)
-        self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
-
-    def test_readline(self):
-        with open(test_support.TESTFN, self.READMODE) as fp:
-            data = []
-            d = fp.readline()
-            while d:
-                data.append(d)
-                d = fp.readline()
-        self.assertEqual(data, DATA_SPLIT)
-        self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
-
-    def test_seek(self):
-        with open(test_support.TESTFN, self.READMODE) as fp:
-            fp.readline()
-            pos = fp.tell()
-            data = fp.readlines()
-            self.assertEqual(data, DATA_SPLIT[1:])
-            fp.seek(pos)
-            data = fp.readlines()
-        self.assertEqual(data, DATA_SPLIT[1:])
-
-    def test_execfile(self):
-        namespace = {}
-        with test_support.check_py3k_warnings():
-            execfile(test_support.TESTFN, namespace)
-        func = namespace['line3']
-        self.assertEqual(func.func_code.co_firstlineno, 3)
-        self.assertEqual(namespace['line4'], FATX)
-
-
-class TestNativeNewlines(TestGenericUnivNewlines):
-    NEWLINE = None
-    DATA = DATA_LF
-    READMODE = 'r'
-    WRITEMODE = 'w'
-
-class TestCRNewlines(TestGenericUnivNewlines):
-    NEWLINE = '\r'
-    DATA = DATA_CR
-
-class TestLFNewlines(TestGenericUnivNewlines):
-    NEWLINE = '\n'
-    DATA = DATA_LF
-
-class TestCRLFNewlines(TestGenericUnivNewlines):
-    NEWLINE = '\r\n'
-    DATA = DATA_CRLF
-
-    def test_tell(self):
-        with open(test_support.TESTFN, self.READMODE) as fp:
-            self.assertEqual(repr(fp.newlines), repr(None))
-            data = fp.readline()
-            pos = fp.tell()
-        self.assertEqual(repr(fp.newlines), repr(self.NEWLINE))
-
-class TestMixedNewlines(TestGenericUnivNewlines):
-    NEWLINE = ('\r', '\n')
-    DATA = DATA_MIXED
-
-
-def test_main():
-    test_support.run_unittest(
-        TestNativeNewlines,
-        TestCRNewlines,
-        TestLFNewlines,
-        TestCRLFNewlines,
-        TestMixedNewlines
-     )
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unpack.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unpack.py
deleted file mode 100644
index 5dc69a9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_unpack.py
+++ /dev/null
@@ -1,130 +0,0 @@
-doctests = """
-
-Unpack tuple
-
-    >>> t = (1, 2, 3)
-    >>> a, b, c = t
-    >>> a == 1 and b == 2 and c == 3
-    True
-
-Unpack list
-
-    >>> l = [4, 5, 6]
-    >>> a, b, c = l
-    >>> a == 4 and b == 5 and c == 6
-    True
-
-Unpack implied tuple
-
-    >>> a, b, c = 7, 8, 9
-    >>> a == 7 and b == 8 and c == 9
-    True
-
-Unpack string... fun!
-
-    >>> a, b, c = 'one'
-    >>> a == 'o' and b == 'n' and c == 'e'
-    True
-
-Unpack generic sequence
-
-    >>> class Seq:
-    ...     def __getitem__(self, i):
-    ...         if i >= 0 and i < 3: return i
-    ...         raise IndexError
-    ...
-    >>> a, b, c = Seq()
-    >>> a == 0 and b == 1 and c == 2
-    True
-
-Single element unpacking, with extra syntax
-
-    >>> st = (99,)
-    >>> sl = [100]
-    >>> a, = st
-    >>> a
-    99
-    >>> b, = sl
-    >>> b
-    100
-
-Now for some failures
-
-Unpacking non-sequence
-
-    >>> a, b, c = 7
-    Traceback (most recent call last):
-      ...
-    TypeError: 'int' object is not iterable
-
-Unpacking tuple of wrong size
-
-    >>> a, b = t
-    Traceback (most recent call last):
-      ...
-    ValueError: too many values to unpack
-
-Unpacking tuple of wrong size
-
-    >>> a, b = l
-    Traceback (most recent call last):
-      ...
-    ValueError: too many values to unpack
-
-Unpacking sequence too short
-
-    >>> a, b, c, d = Seq()
-    Traceback (most recent call last):
-      ...
-    ValueError: need more than 3 values to unpack
-
-Unpacking sequence too long
-
-    >>> a, b = Seq()
-    Traceback (most recent call last):
-      ...
-    ValueError: too many values to unpack
-
-Unpacking a sequence where the test for too long raises a different kind of
-error
-
-    >>> class BozoError(Exception):
-    ...     pass
-    ...
-    >>> class BadSeq:
-    ...     def __getitem__(self, i):
-    ...         if i >= 0 and i < 3:
-    ...             return i
-    ...         elif i == 3:
-    ...             raise BozoError
-    ...         else:
-    ...             raise IndexError
-    ...
-
-Trigger code while not expecting an IndexError (unpack sequence too long, wrong
-error)
-
-    >>> a, b, c, d, e = BadSeq()
-    Traceback (most recent call last):
-      ...
-    BozoError
-
-Trigger code while expecting an IndexError (unpack sequence too short, wrong
-error)
-
-    >>> a, b, c = BadSeq()
-    Traceback (most recent call last):
-      ...
-    BozoError
-
-"""
-
-__test__ = {'doctests' : doctests}
-
-def test_main(verbose=False):
-    from test import test_support
-    from test import test_unpack
-    test_support.run_doctest(test_unpack, verbose)
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib.py
deleted file mode 100644
index b9e2f03..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib.py
+++ /dev/null
@@ -1,786 +0,0 @@
-"""Regresssion tests for urllib"""
-
-import urllib
-import httplib
-import unittest
-from test import test_support
-import os
-import sys
-import mimetools
-import tempfile
-import StringIO
-
-def hexescape(char):
-    """Escape char as RFC 2396 specifies"""
-    hex_repr = hex(ord(char))[2:].upper()
-    if len(hex_repr) == 1:
-        hex_repr = "0%s" % hex_repr
-    return "%" + hex_repr
-
-class urlopen_FileTests(unittest.TestCase):
-    """Test urlopen() opening a temporary file.
-
-    Try to test as much functionality as possible so as to cut down on reliance
-    on connecting to the Net for testing.
-
-    """
-
-    def setUp(self):
-        """Setup of a temp file to use for testing"""
-        self.text = "test_urllib: %s\n" % self.__class__.__name__
-        FILE = file(test_support.TESTFN, 'wb')
-        try:
-            FILE.write(self.text)
-        finally:
-            FILE.close()
-        self.pathname = test_support.TESTFN
-        self.returned_obj = urllib.urlopen("file:%s" % self.pathname)
-
-    def tearDown(self):
-        """Shut down the open object"""
-        self.returned_obj.close()
-        os.remove(test_support.TESTFN)
-
-    def test_interface(self):
-        # Make sure object returned by urlopen() has the specified methods
-        for attr in ("read", "readline", "readlines", "fileno",
-                     "close", "info", "geturl", "getcode", "__iter__"):
-            self.assertTrue(hasattr(self.returned_obj, attr),
-                         "object returned by urlopen() lacks %s attribute" %
-                         attr)
-
-    def test_read(self):
-        self.assertEqual(self.text, self.returned_obj.read())
-
-    def test_readline(self):
-        self.assertEqual(self.text, self.returned_obj.readline())
-        self.assertEqual('', self.returned_obj.readline(),
-                         "calling readline() after exhausting the file did not"
-                         " return an empty string")
-
-    def test_readlines(self):
-        lines_list = self.returned_obj.readlines()
-        self.assertEqual(len(lines_list), 1,
-                         "readlines() returned the wrong number of lines")
-        self.assertEqual(lines_list[0], self.text,
-                         "readlines() returned improper text")
-
-    def test_fileno(self):
-        file_num = self.returned_obj.fileno()
-        self.assertIsInstance(file_num, int, "fileno() did not return an int")
-        self.assertEqual(os.read(file_num, len(self.text)), self.text,
-                         "Reading on the file descriptor returned by fileno() "
-                         "did not return the expected text")
-
-    def test_close(self):
-        # Test close() by calling it hear and then having it be called again
-        # by the tearDown() method for the test
-        self.returned_obj.close()
-
-    def test_info(self):
-        self.assertIsInstance(self.returned_obj.info(), mimetools.Message)
-
-    def test_geturl(self):
-        self.assertEqual(self.returned_obj.geturl(), self.pathname)
-
-    def test_getcode(self):
-        self.assertEqual(self.returned_obj.getcode(), None)
-
-    def test_iter(self):
-        # Test iterator
-        # Don't need to count number of iterations since test would fail the
-        # instant it returned anything beyond the first line from the
-        # comparison
-        for line in self.returned_obj.__iter__():
-            self.assertEqual(line, self.text)
-
-class ProxyTests(unittest.TestCase):
-
-    def setUp(self):
-        # Records changes to env vars
-        self.env = test_support.EnvironmentVarGuard()
-        # Delete all proxy related env vars
-        for k in os.environ.keys():
-            if 'proxy' in k.lower():
-                self.env.unset(k)
-
-    def tearDown(self):
-        # Restore all proxy related env vars
-        self.env.__exit__()
-        del self.env
-
-    def test_getproxies_environment_keep_no_proxies(self):
-        self.env.set('NO_PROXY', 'localhost')
-        proxies = urllib.getproxies_environment()
-        # getproxies_environment use lowered case truncated (no '_proxy') keys
-        self.assertEqual('localhost', proxies['no'])
-
-
-class urlopen_HttpTests(unittest.TestCase):
-    """Test urlopen() opening a fake http connection."""
-
-    def fakehttp(self, fakedata):
-        class FakeSocket(StringIO.StringIO):
-            def sendall(self, str): pass
-            def makefile(self, mode, name): return self
-            def read(self, amt=None):
-                if self.closed: return ''
-                return StringIO.StringIO.read(self, amt)
-            def readline(self, length=None):
-                if self.closed: return ''
-                return StringIO.StringIO.readline(self, length)
-        class FakeHTTPConnection(httplib.HTTPConnection):
-            def connect(self):
-                self.sock = FakeSocket(fakedata)
-        assert httplib.HTTP._connection_class == httplib.HTTPConnection
-        httplib.HTTP._connection_class = FakeHTTPConnection
-
-    def unfakehttp(self):
-        httplib.HTTP._connection_class = httplib.HTTPConnection
-
-    def test_read(self):
-        self.fakehttp('Hello!')
-        try:
-            fp = urllib.urlopen("http://python.org/")
-            self.assertEqual(fp.readline(), 'Hello!')
-            self.assertEqual(fp.readline(), '')
-            self.assertEqual(fp.geturl(), 'http://python.org/')
-            self.assertEqual(fp.getcode(), 200)
-        finally:
-            self.unfakehttp()
-
-    def test_url_fragment(self):
-        # Issue #11703: geturl() omits fragments in the original URL.
-        url = 'http://docs.python.org/library/urllib.html#OK'
-        self.fakehttp('Hello!')
-        try:
-            fp = urllib.urlopen(url)
-            self.assertEqual(fp.geturl(), url)
-        finally:
-            self.unfakehttp()
-
-    def test_read_bogus(self):
-        # urlopen() should raise IOError for many error codes.
-        self.fakehttp('''HTTP/1.1 401 Authentication Required
-Date: Wed, 02 Jan 2008 03:03:54 GMT
-Server: Apache/1.3.33 (Debian GNU/Linux) mod_ssl/2.8.22 OpenSSL/0.9.7e
-Connection: close
-Content-Type: text/html; charset=iso-8859-1
-''')
-        try:
-            self.assertRaises(IOError, urllib.urlopen, "http://python.org/")
-        finally:
-            self.unfakehttp()
-
-    def test_invalid_redirect(self):
-        # urlopen() should raise IOError for many error codes.
-        self.fakehttp("""HTTP/1.1 302 Found
-Date: Wed, 02 Jan 2008 03:03:54 GMT
-Server: Apache/1.3.33 (Debian GNU/Linux) mod_ssl/2.8.22 OpenSSL/0.9.7e
-Location: file:README
-Connection: close
-Content-Type: text/html; charset=iso-8859-1
-""")
-        try:
-            self.assertRaises(IOError, urllib.urlopen, "http://python.org/")
-        finally:
-            self.unfakehttp()
-
-    def test_empty_socket(self):
-        # urlopen() raises IOError if the underlying socket does not send any
-        # data. (#1680230)
-        self.fakehttp('')
-        try:
-            self.assertRaises(IOError, urllib.urlopen, 'http://something')
-        finally:
-            self.unfakehttp()
-
-class urlretrieve_FileTests(unittest.TestCase):
-    """Test urllib.urlretrieve() on local files"""
-
-    def setUp(self):
-        # Create a list of temporary files. Each item in the list is a file
-        # name (absolute path or relative to the current working directory).
-        # All files in this list will be deleted in the tearDown method. Note,
-        # this only helps to makes sure temporary files get deleted, but it
-        # does nothing about trying to close files that may still be open. It
-        # is the responsibility of the developer to properly close files even
-        # when exceptional conditions occur.
-        self.tempFiles = []
-
-        # Create a temporary file.
-        self.registerFileForCleanUp(test_support.TESTFN)
-        self.text = 'testing urllib.urlretrieve'
-        try:
-            FILE = file(test_support.TESTFN, 'wb')
-            FILE.write(self.text)
-            FILE.close()
-        finally:
-            try: FILE.close()
-            except: pass
-
-    def tearDown(self):
-        # Delete the temporary files.
-        for each in self.tempFiles:
-            try: os.remove(each)
-            except: pass
-
-    def constructLocalFileUrl(self, filePath):
-        return "file://%s" % urllib.pathname2url(os.path.abspath(filePath))
-
-    def createNewTempFile(self, data=""):
-        """Creates a new temporary file containing the specified data,
-        registers the file for deletion during the test fixture tear down, and
-        returns the absolute path of the file."""
-
-        newFd, newFilePath = tempfile.mkstemp()
-        try:
-            self.registerFileForCleanUp(newFilePath)
-            newFile = os.fdopen(newFd, "wb")
-            newFile.write(data)
-            newFile.close()
-        finally:
-            try: newFile.close()
-            except: pass
-        return newFilePath
-
-    def registerFileForCleanUp(self, fileName):
-        self.tempFiles.append(fileName)
-
-    def test_basic(self):
-        # Make sure that a local file just gets its own location returned and
-        # a headers value is returned.
-        result = urllib.urlretrieve("file:%s" % test_support.TESTFN)
-        self.assertEqual(result[0], test_support.TESTFN)
-        self.assertIsInstance(result[1], mimetools.Message,
-                              "did not get a mimetools.Message instance as "
-                              "second returned value")
-
-    def test_copy(self):
-        # Test that setting the filename argument works.
-        second_temp = "%s.2" % test_support.TESTFN
-        self.registerFileForCleanUp(second_temp)
-        result = urllib.urlretrieve(self.constructLocalFileUrl(
-            test_support.TESTFN), second_temp)
-        self.assertEqual(second_temp, result[0])
-        self.assertTrue(os.path.exists(second_temp), "copy of the file was not "
-                                                  "made")
-        FILE = file(second_temp, 'rb')
-        try:
-            text = FILE.read()
-            FILE.close()
-        finally:
-            try: FILE.close()
-            except: pass
-        self.assertEqual(self.text, text)
-
-    def test_reporthook(self):
-        # Make sure that the reporthook works.
-        def hooktester(count, block_size, total_size, count_holder=[0]):
-            self.assertIsInstance(count, int)
-            self.assertIsInstance(block_size, int)
-            self.assertIsInstance(total_size, int)
-            self.assertEqual(count, count_holder[0])
-            count_holder[0] = count_holder[0] + 1
-        second_temp = "%s.2" % test_support.TESTFN
-        self.registerFileForCleanUp(second_temp)
-        urllib.urlretrieve(self.constructLocalFileUrl(test_support.TESTFN),
-            second_temp, hooktester)
-
-    def test_reporthook_0_bytes(self):
-        # Test on zero length file. Should call reporthook only 1 time.
-        report = []
-        def hooktester(count, block_size, total_size, _report=report):
-            _report.append((count, block_size, total_size))
-        srcFileName = self.createNewTempFile()
-        urllib.urlretrieve(self.constructLocalFileUrl(srcFileName),
-            test_support.TESTFN, hooktester)
-        self.assertEqual(len(report), 1)
-        self.assertEqual(report[0][2], 0)
-
-    def test_reporthook_5_bytes(self):
-        # Test on 5 byte file. Should call reporthook only 2 times (once when
-        # the "network connection" is established and once when the block is
-        # read). Since the block size is 8192 bytes, only one block read is
-        # required to read the entire file.
-        report = []
-        def hooktester(count, block_size, total_size, _report=report):
-            _report.append((count, block_size, total_size))
-        srcFileName = self.createNewTempFile("x" * 5)
-        urllib.urlretrieve(self.constructLocalFileUrl(srcFileName),
-            test_support.TESTFN, hooktester)
-        self.assertEqual(len(report), 2)
-        self.assertEqual(report[0][1], 8192)
-        self.assertEqual(report[0][2], 5)
-
-    def test_reporthook_8193_bytes(self):
-        # Test on 8193 byte file. Should call reporthook only 3 times (once
-        # when the "network connection" is established, once for the next 8192
-        # bytes, and once for the last byte).
-        report = []
-        def hooktester(count, block_size, total_size, _report=report):
-            _report.append((count, block_size, total_size))
-        srcFileName = self.createNewTempFile("x" * 8193)
-        urllib.urlretrieve(self.constructLocalFileUrl(srcFileName),
-            test_support.TESTFN, hooktester)
-        self.assertEqual(len(report), 3)
-        self.assertEqual(report[0][1], 8192)
-        self.assertEqual(report[0][2], 8193)
-
-class QuotingTests(unittest.TestCase):
-    """Tests for urllib.quote() and urllib.quote_plus()
-
-    According to RFC 2396 ("Uniform Resource Identifiers), to escape a
-    character you write it as '%' + <2 character US-ASCII hex value>.  The Python
-    code of ``'%' + hex(ord(<character>))[2:]`` escapes a character properly.
-    Case does not matter on the hex letters.
-
-    The various character sets specified are:
-
-    Reserved characters : ";/?:@&=+$,"
-        Have special meaning in URIs and must be escaped if not being used for
-        their special meaning
-    Data characters : letters, digits, and "-_.!~*'()"
-        Unreserved and do not need to be escaped; can be, though, if desired
-    Control characters : 0x00 - 0x1F, 0x7F
-        Have no use in URIs so must be escaped
-    space : 0x20
-        Must be escaped
-    Delimiters : '<>#%"'
-        Must be escaped
-    Unwise : "{}|\^[]`"
-        Must be escaped
-
-    """
-
-    def test_never_quote(self):
-        # Make sure quote() does not quote letters, digits, and "_,.-"
-        do_not_quote = '' .join(["ABCDEFGHIJKLMNOPQRSTUVWXYZ",
-                                 "abcdefghijklmnopqrstuvwxyz",
-                                 "0123456789",
-                                 "_.-"])
-        result = urllib.quote(do_not_quote)
-        self.assertEqual(do_not_quote, result,
-                         "using quote(): %s != %s" % (do_not_quote, result))
-        result = urllib.quote_plus(do_not_quote)
-        self.assertEqual(do_not_quote, result,
-                        "using quote_plus(): %s != %s" % (do_not_quote, result))
-
-    def test_default_safe(self):
-        # Test '/' is default value for 'safe' parameter
-        self.assertEqual(urllib.quote.func_defaults[0], '/')
-
-    def test_safe(self):
-        # Test setting 'safe' parameter does what it should do
-        quote_by_default = "<>"
-        result = urllib.quote(quote_by_default, safe=quote_by_default)
-        self.assertEqual(quote_by_default, result,
-                         "using quote(): %s != %s" % (quote_by_default, result))
-        result = urllib.quote_plus(quote_by_default, safe=quote_by_default)
-        self.assertEqual(quote_by_default, result,
-                         "using quote_plus(): %s != %s" %
-                         (quote_by_default, result))
-
-    def test_default_quoting(self):
-        # Make sure all characters that should be quoted are by default sans
-        # space (separate test for that).
-        should_quote = [chr(num) for num in range(32)] # For 0x00 - 0x1F
-        should_quote.append('<>#%"{}|\^[]`')
-        should_quote.append(chr(127)) # For 0x7F
-        should_quote = ''.join(should_quote)
-        for char in should_quote:
-            result = urllib.quote(char)
-            self.assertEqual(hexescape(char), result,
-                             "using quote(): %s should be escaped to %s, not %s" %
-                             (char, hexescape(char), result))
-            result = urllib.quote_plus(char)
-            self.assertEqual(hexescape(char), result,
-                             "using quote_plus(): "
-                             "%s should be escapes to %s, not %s" %
-                             (char, hexescape(char), result))
-        del should_quote
-        partial_quote = "ab[]cd"
-        expected = "ab%5B%5Dcd"
-        result = urllib.quote(partial_quote)
-        self.assertEqual(expected, result,
-                         "using quote(): %s != %s" % (expected, result))
-        self.assertEqual(expected, result,
-                         "using quote_plus(): %s != %s" % (expected, result))
-        self.assertRaises(TypeError, urllib.quote, None)
-
-    def test_quoting_space(self):
-        # Make sure quote() and quote_plus() handle spaces as specified in
-        # their unique way
-        result = urllib.quote(' ')
-        self.assertEqual(result, hexescape(' '),
-                         "using quote(): %s != %s" % (result, hexescape(' ')))
-        result = urllib.quote_plus(' ')
-        self.assertEqual(result, '+',
-                         "using quote_plus(): %s != +" % result)
-        given = "a b cd e f"
-        expect = given.replace(' ', hexescape(' '))
-        result = urllib.quote(given)
-        self.assertEqual(expect, result,
-                         "using quote(): %s != %s" % (expect, result))
-        expect = given.replace(' ', '+')
-        result = urllib.quote_plus(given)
-        self.assertEqual(expect, result,
-                         "using quote_plus(): %s != %s" % (expect, result))
-
-    def test_quoting_plus(self):
-        self.assertEqual(urllib.quote_plus('alpha+beta gamma'),
-                         'alpha%2Bbeta+gamma')
-        self.assertEqual(urllib.quote_plus('alpha+beta gamma', '+'),
-                         'alpha+beta+gamma')
-
-class UnquotingTests(unittest.TestCase):
-    """Tests for unquote() and unquote_plus()
-
-    See the doc string for quoting_Tests for details on quoting and such.
-
-    """
-
-    def test_unquoting(self):
-        # Make sure unquoting of all ASCII values works
-        escape_list = []
-        for num in range(128):
-            given = hexescape(chr(num))
-            expect = chr(num)
-            result = urllib.unquote(given)
-            self.assertEqual(expect, result,
-                             "using unquote(): %s != %s" % (expect, result))
-            result = urllib.unquote_plus(given)
-            self.assertEqual(expect, result,
-                             "using unquote_plus(): %s != %s" %
-                             (expect, result))
-            escape_list.append(given)
-        escape_string = ''.join(escape_list)
-        del escape_list
-        result = urllib.unquote(escape_string)
-        self.assertEqual(result.count('%'), 1,
-                         "using quote(): not all characters escaped; %s" %
-                         result)
-        result = urllib.unquote(escape_string)
-        self.assertEqual(result.count('%'), 1,
-                         "using unquote(): not all characters escaped: "
-                         "%s" % result)
-
-    def test_unquoting_badpercent(self):
-        # Test unquoting on bad percent-escapes
-        given = '%xab'
-        expect = given
-        result = urllib.unquote(given)
-        self.assertEqual(expect, result, "using unquote(): %r != %r"
-                         % (expect, result))
-        given = '%x'
-        expect = given
-        result = urllib.unquote(given)
-        self.assertEqual(expect, result, "using unquote(): %r != %r"
-                         % (expect, result))
-        given = '%'
-        expect = given
-        result = urllib.unquote(given)
-        self.assertEqual(expect, result, "using unquote(): %r != %r"
-                         % (expect, result))
-
-    def test_unquoting_mixed_case(self):
-        # Test unquoting on mixed-case hex digits in the percent-escapes
-        given = '%Ab%eA'
-        expect = '\xab\xea'
-        result = urllib.unquote(given)
-        self.assertEqual(expect, result, "using unquote(): %r != %r"
-                         % (expect, result))
-
-    def test_unquoting_parts(self):
-        # Make sure unquoting works when have non-quoted characters
-        # interspersed
-        given = 'ab%sd' % hexescape('c')
-        expect = "abcd"
-        result = urllib.unquote(given)
-        self.assertEqual(expect, result,
-                         "using quote(): %s != %s" % (expect, result))
-        result = urllib.unquote_plus(given)
-        self.assertEqual(expect, result,
-                         "using unquote_plus(): %s != %s" % (expect, result))
-
-    def test_unquoting_plus(self):
-        # Test difference between unquote() and unquote_plus()
-        given = "are+there+spaces..."
-        expect = given
-        result = urllib.unquote(given)
-        self.assertEqual(expect, result,
-                         "using unquote(): %s != %s" % (expect, result))
-        expect = given.replace('+', ' ')
-        result = urllib.unquote_plus(given)
-        self.assertEqual(expect, result,
-                         "using unquote_plus(): %s != %s" % (expect, result))
-
-    def test_unquote_with_unicode(self):
-        r = urllib.unquote(u'br%C3%BCckner_sapporo_20050930.doc')
-        self.assertEqual(r, u'br\xc3\xbcckner_sapporo_20050930.doc')
-
-class urlencode_Tests(unittest.TestCase):
-    """Tests for urlencode()"""
-
-    def help_inputtype(self, given, test_type):
-        """Helper method for testing different input types.
-
-        'given' must lead to only the pairs:
-            * 1st, 1
-            * 2nd, 2
-            * 3rd, 3
-
-        Test cannot assume anything about order.  Docs make no guarantee and
-        have possible dictionary input.
-
-        """
-        expect_somewhere = ["1st=1", "2nd=2", "3rd=3"]
-        result = urllib.urlencode(given)
-        for expected in expect_somewhere:
-            self.assertIn(expected, result,
-                         "testing %s: %s not found in %s" %
-                         (test_type, expected, result))
-        self.assertEqual(result.count('&'), 2,
-                         "testing %s: expected 2 '&'s; got %s" %
-                         (test_type, result.count('&')))
-        amp_location = result.index('&')
-        on_amp_left = result[amp_location - 1]
-        on_amp_right = result[amp_location + 1]
-        self.assertTrue(on_amp_left.isdigit() and on_amp_right.isdigit(),
-                     "testing %s: '&' not located in proper place in %s" %
-                     (test_type, result))
-        self.assertEqual(len(result), (5 * 3) + 2, #5 chars per thing and amps
-                         "testing %s: "
-                         "unexpected number of characters: %s != %s" %
-                         (test_type, len(result), (5 * 3) + 2))
-
-    def test_using_mapping(self):
-        # Test passing in a mapping object as an argument.
-        self.help_inputtype({"1st":'1', "2nd":'2', "3rd":'3'},
-                            "using dict as input type")
-
-    def test_using_sequence(self):
-        # Test passing in a sequence of two-item sequences as an argument.
-        self.help_inputtype([('1st', '1'), ('2nd', '2'), ('3rd', '3')],
-                            "using sequence of two-item tuples as input")
-
-    def test_quoting(self):
-        # Make sure keys and values are quoted using quote_plus()
-        given = {"&":"="}
-        expect = "%s=%s" % (hexescape('&'), hexescape('='))
-        result = urllib.urlencode(given)
-        self.assertEqual(expect, result)
-        given = {"key name":"A bunch of pluses"}
-        expect = "key+name=A+bunch+of+pluses"
-        result = urllib.urlencode(given)
-        self.assertEqual(expect, result)
-
-    def test_doseq(self):
-        # Test that passing True for 'doseq' parameter works correctly
-        given = {'sequence':['1', '2', '3']}
-        expect = "sequence=%s" % urllib.quote_plus(str(['1', '2', '3']))
-        result = urllib.urlencode(given)
-        self.assertEqual(expect, result)
-        result = urllib.urlencode(given, True)
-        for value in given["sequence"]:
-            expect = "sequence=%s" % value
-            self.assertIn(expect, result)
-        self.assertEqual(result.count('&'), 2,
-                         "Expected 2 '&'s, got %s" % result.count('&'))
-
-class Pathname_Tests(unittest.TestCase):
-    """Test pathname2url() and url2pathname()"""
-
-    def test_basic(self):
-        # Make sure simple tests pass
-        expected_path = os.path.join("parts", "of", "a", "path")
-        expected_url = "parts/of/a/path"
-        result = urllib.pathname2url(expected_path)
-        self.assertEqual(expected_url, result,
-                         "pathname2url() failed; %s != %s" %
-                         (result, expected_url))
-        result = urllib.url2pathname(expected_url)
-        self.assertEqual(expected_path, result,
-                         "url2pathame() failed; %s != %s" %
-                         (result, expected_path))
-
-    def test_quoting(self):
-        # Test automatic quoting and unquoting works for pathnam2url() and
-        # url2pathname() respectively
-        given = os.path.join("needs", "quot=ing", "here")
-        expect = "needs/%s/here" % urllib.quote("quot=ing")
-        result = urllib.pathname2url(given)
-        self.assertEqual(expect, result,
-                         "pathname2url() failed; %s != %s" %
-                         (expect, result))
-        expect = given
-        result = urllib.url2pathname(result)
-        self.assertEqual(expect, result,
-                         "url2pathname() failed; %s != %s" %
-                         (expect, result))
-        given = os.path.join("make sure", "using_quote")
-        expect = "%s/using_quote" % urllib.quote("make sure")
-        result = urllib.pathname2url(given)
-        self.assertEqual(expect, result,
-                         "pathname2url() failed; %s != %s" %
-                         (expect, result))
-        given = "make+sure/using_unquote"
-        expect = os.path.join("make+sure", "using_unquote")
-        result = urllib.url2pathname(given)
-        self.assertEqual(expect, result,
-                         "url2pathname() failed; %s != %s" %
-                         (expect, result))
-
-    @unittest.skipUnless(sys.platform == 'win32',
-                         'test specific to the nturl2path library')
-    def test_ntpath(self):
-        given = ('/C:/', '///C:/', '/C|//')
-        expect = 'C:\\'
-        for url in given:
-            result = urllib.url2pathname(url)
-            self.assertEqual(expect, result,
-                             'nturl2path.url2pathname() failed; %s != %s' %
-                             (expect, result))
-        given = '///C|/path'
-        expect = 'C:\\path'
-        result = urllib.url2pathname(given)
-        self.assertEqual(expect, result,
-                         'nturl2path.url2pathname() failed; %s != %s' %
-                         (expect, result))
-
-class Utility_Tests(unittest.TestCase):
-    """Testcase to test the various utility functions in the urllib."""
-
-    def test_splitpasswd(self):
-        """Some of the password examples are not sensible, but it is added to
-        confirming to RFC2617 and addressing issue4675.
-        """
-        self.assertEqual(('user', 'ab'),urllib.splitpasswd('user:ab'))
-        self.assertEqual(('user', 'a\nb'),urllib.splitpasswd('user:a\nb'))
-        self.assertEqual(('user', 'a\tb'),urllib.splitpasswd('user:a\tb'))
-        self.assertEqual(('user', 'a\rb'),urllib.splitpasswd('user:a\rb'))
-        self.assertEqual(('user', 'a\fb'),urllib.splitpasswd('user:a\fb'))
-        self.assertEqual(('user', 'a\vb'),urllib.splitpasswd('user:a\vb'))
-        self.assertEqual(('user', 'a:b'),urllib.splitpasswd('user:a:b'))
-
-
-class URLopener_Tests(unittest.TestCase):
-    """Testcase to test the open method of URLopener class."""
-
-    def test_quoted_open(self):
-        class DummyURLopener(urllib.URLopener):
-            def open_spam(self, url):
-                return url
-
-        self.assertEqual(DummyURLopener().open(
-            'spam://example/ /'),'//example/%20/')
-
-        # test the safe characters are not quoted by urlopen
-        self.assertEqual(DummyURLopener().open(
-            "spam://c:|windows%/:=&?~#+!$,;'@()*[]|/path/"),
-            "//c:|windows%/:=&?~#+!$,;'@()*[]|/path/")
-
-
-# Just commented them out.
-# Can't really tell why keep failing in windows and sparc.
-# Everywhere else they work ok, but on those machines, sometimes
-# fail in one of the tests, sometimes in other. I have a linux, and
-# the tests go ok.
-# If anybody has one of the problematic enviroments, please help!
-# .   Facundo
-#
-# def server(evt):
-#     import socket, time
-#     serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-#     serv.settimeout(3)
-#     serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-#     serv.bind(("", 9093))
-#     serv.listen(5)
-#     try:
-#         conn, addr = serv.accept()
-#         conn.send("1 Hola mundo\n")
-#         cantdata = 0
-#         while cantdata < 13:
-#             data = conn.recv(13-cantdata)
-#             cantdata += len(data)
-#             time.sleep(.3)
-#         conn.send("2 No more lines\n")
-#         conn.close()
-#     except socket.timeout:
-#         pass
-#     finally:
-#         serv.close()
-#         evt.set()
-#
-# class FTPWrapperTests(unittest.TestCase):
-#
-#     def setUp(self):
-#         import ftplib, time, threading
-#         ftplib.FTP.port = 9093
-#         self.evt = threading.Event()
-#         threading.Thread(target=server, args=(self.evt,)).start()
-#         time.sleep(.1)
-#
-#     def tearDown(self):
-#         self.evt.wait()
-#
-#     def testBasic(self):
-#         # connects
-#         ftp = urllib.ftpwrapper("myuser", "mypass", "localhost", 9093, [])
-#         ftp.close()
-#
-#     def testTimeoutNone(self):
-#         # global default timeout is ignored
-#         import socket
-#         self.assertTrue(socket.getdefaulttimeout() is None)
-#         socket.setdefaulttimeout(30)
-#         try:
-#             ftp = urllib.ftpwrapper("myuser", "mypass", "localhost", 9093, [])
-#         finally:
-#             socket.setdefaulttimeout(None)
-#         self.assertEqual(ftp.ftp.sock.gettimeout(), 30)
-#         ftp.close()
-#
-#     def testTimeoutDefault(self):
-#         # global default timeout is used
-#         import socket
-#         self.assertTrue(socket.getdefaulttimeout() is None)
-#         socket.setdefaulttimeout(30)
-#         try:
-#             ftp = urllib.ftpwrapper("myuser", "mypass", "localhost", 9093, [])
-#         finally:
-#             socket.setdefaulttimeout(None)
-#         self.assertEqual(ftp.ftp.sock.gettimeout(), 30)
-#         ftp.close()
-#
-#     def testTimeoutValue(self):
-#         ftp = urllib.ftpwrapper("myuser", "mypass", "localhost", 9093, [],
-#                                 timeout=30)
-#         self.assertEqual(ftp.ftp.sock.gettimeout(), 30)
-#         ftp.close()
-
-
-
-def test_main():
-    import warnings
-    with warnings.catch_warnings():
-        warnings.filterwarnings('ignore', ".*urllib\.urlopen.*Python 3.0",
-                                DeprecationWarning)
-        test_support.run_unittest(
-            urlopen_FileTests,
-            urlopen_HttpTests,
-            urlretrieve_FileTests,
-            ProxyTests,
-            QuotingTests,
-            UnquotingTests,
-            urlencode_Tests,
-            Pathname_Tests,
-            Utility_Tests,
-            URLopener_Tests,
-            #FTPWrapperTests,
-        )
-
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2.py
deleted file mode 100644
index 3ed3903..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2.py
+++ /dev/null
@@ -1,1327 +0,0 @@
-import unittest
-from test import test_support
-
-import os
-import socket
-import StringIO
-
-import urllib2
-from urllib2 import Request, OpenerDirector
-
-# XXX
-# Request
-# CacheFTPHandler (hard to write)
-# parse_keqv_list, parse_http_list, HTTPDigestAuthHandler
-
-class TrivialTests(unittest.TestCase):
-    def test_trivial(self):
-        # A couple trivial tests
-
-        self.assertRaises(ValueError, urllib2.urlopen, 'bogus url')
-
-        # XXX Name hacking to get this to work on Windows.
-        fname = os.path.abspath(urllib2.__file__).replace('\\', '/')
-
-        # And more hacking to get it to work on MacOS. This assumes
-        # urllib.pathname2url works, unfortunately...
-        if os.name == 'riscos':
-            import string
-            fname = os.expand(fname)
-            fname = fname.translate(string.maketrans("/.", "./"))
-
-        if os.name == 'nt':
-            file_url = "file:///%s" % fname
-        else:
-            file_url = "file://%s" % fname
-
-        f = urllib2.urlopen(file_url)
-
-        buf = f.read()
-        f.close()
-
-    def test_parse_http_list(self):
-        tests = [('a,b,c', ['a', 'b', 'c']),
-                 ('path"o,l"og"i"cal, example', ['path"o,l"og"i"cal', 'example']),
-                 ('a, b, "c", "d", "e,f", g, h', ['a', 'b', '"c"', '"d"', '"e,f"', 'g', 'h']),
-                 ('a="b\\"c", d="e\\,f", g="h\\\\i"', ['a="b"c"', 'd="e,f"', 'g="h\\i"'])]
-        for string, list in tests:
-            self.assertEqual(urllib2.parse_http_list(string), list)
-
-
-def test_request_headers_dict():
-    """
-    The Request.headers dictionary is not a documented interface.  It should
-    stay that way, because the complete set of headers are only accessible
-    through the .get_header(), .has_header(), .header_items() interface.
-    However, .headers pre-dates those methods, and so real code will be using
-    the dictionary.
-
-    The introduction in 2.4 of those methods was a mistake for the same reason:
-    code that previously saw all (urllib2 user)-provided headers in .headers
-    now sees only a subset (and the function interface is ugly and incomplete).
-    A better change would have been to replace .headers dict with a dict
-    subclass (or UserDict.DictMixin instance?)  that preserved the .headers
-    interface and also provided access to the "unredirected" headers.  It's
-    probably too late to fix that, though.
-
-
-    Check .capitalize() case normalization:
-
-    >>> url = "http://example.com"
-    >>> Request(url, headers={"Spam-eggs": "blah"}).headers["Spam-eggs"]
-    'blah'
-    >>> Request(url, headers={"spam-EggS": "blah"}).headers["Spam-eggs"]
-    'blah'
-
-    Currently, Request(url, "Spam-eggs").headers["Spam-Eggs"] raises KeyError,
-    but that could be changed in future.
-
-    """
-
-def test_request_headers_methods():
-    """
-    Note the case normalization of header names here, to .capitalize()-case.
-    This should be preserved for backwards-compatibility.  (In the HTTP case,
-    normalization to .title()-case is done by urllib2 before sending headers to
-    httplib).
-
-    >>> url = "http://example.com"
-    >>> r = Request(url, headers={"Spam-eggs": "blah"})
-    >>> r.has_header("Spam-eggs")
-    True
-    >>> r.header_items()
-    [('Spam-eggs', 'blah')]
-    >>> r.add_header("Foo-Bar", "baz")
-    >>> items = r.header_items()
-    >>> items.sort()
-    >>> items
-    [('Foo-bar', 'baz'), ('Spam-eggs', 'blah')]
-
-    Note that e.g. r.has_header("spam-EggS") is currently False, and
-    r.get_header("spam-EggS") returns None, but that could be changed in
-    future.
-
-    >>> r.has_header("Not-there")
-    False
-    >>> print r.get_header("Not-there")
-    None
-    >>> r.get_header("Not-there", "default")
-    'default'
-
-    """
-
-
-def test_password_manager(self):
-    """
-    >>> mgr = urllib2.HTTPPasswordMgr()
-    >>> add = mgr.add_password
-    >>> add("Some Realm", "http://example.com/", "joe", "password")
-    >>> add("Some Realm", "http://example.com/ni", "ni", "ni")
-    >>> add("c", "http://example.com/foo", "foo", "ni")
-    >>> add("c", "http://example.com/bar", "bar", "nini")
-    >>> add("b", "http://example.com/", "first", "blah")
-    >>> add("b", "http://example.com/", "second", "spam")
-    >>> add("a", "http://example.com", "1", "a")
-    >>> add("Some Realm", "http://c.example.com:3128", "3", "c")
-    >>> add("Some Realm", "d.example.com", "4", "d")
-    >>> add("Some Realm", "e.example.com:3128", "5", "e")
-
-    >>> mgr.find_user_password("Some Realm", "example.com")
-    ('joe', 'password')
-    >>> mgr.find_user_password("Some Realm", "http://example.com")
-    ('joe', 'password')
-    >>> mgr.find_user_password("Some Realm", "http://example.com/")
-    ('joe', 'password')
-    >>> mgr.find_user_password("Some Realm", "http://example.com/spam")
-    ('joe', 'password')
-    >>> mgr.find_user_password("Some Realm", "http://example.com/spam/spam")
-    ('joe', 'password')
-    >>> mgr.find_user_password("c", "http://example.com/foo")
-    ('foo', 'ni')
-    >>> mgr.find_user_password("c", "http://example.com/bar")
-    ('bar', 'nini')
-
-    Actually, this is really undefined ATM
-##     Currently, we use the highest-level path where more than one match:
-
-##     >>> mgr.find_user_password("Some Realm", "http://example.com/ni")
-##     ('joe', 'password')
-
-    Use latest add_password() in case of conflict:
-
-    >>> mgr.find_user_password("b", "http://example.com/")
-    ('second', 'spam')
-
-    No special relationship between a.example.com and example.com:
-
-    >>> mgr.find_user_password("a", "http://example.com/")
-    ('1', 'a')
-    >>> mgr.find_user_password("a", "http://a.example.com/")
-    (None, None)
-
-    Ports:
-
-    >>> mgr.find_user_password("Some Realm", "c.example.com")
-    (None, None)
-    >>> mgr.find_user_password("Some Realm", "c.example.com:3128")
-    ('3', 'c')
-    >>> mgr.find_user_password("Some Realm", "http://c.example.com:3128")
-    ('3', 'c')
-    >>> mgr.find_user_password("Some Realm", "d.example.com")
-    ('4', 'd')
-    >>> mgr.find_user_password("Some Realm", "e.example.com:3128")
-    ('5', 'e')
-
-    """
-    pass
-
-
-def test_password_manager_default_port(self):
-    """
-    >>> mgr = urllib2.HTTPPasswordMgr()
-    >>> add = mgr.add_password
-
-    The point to note here is that we can't guess the default port if there's
-    no scheme.  This applies to both add_password and find_user_password.
-
-    >>> add("f", "http://g.example.com:80", "10", "j")
-    >>> add("g", "http://h.example.com", "11", "k")
-    >>> add("h", "i.example.com:80", "12", "l")
-    >>> add("i", "j.example.com", "13", "m")
-    >>> mgr.find_user_password("f", "g.example.com:100")
-    (None, None)
-    >>> mgr.find_user_password("f", "g.example.com:80")
-    ('10', 'j')
-    >>> mgr.find_user_password("f", "g.example.com")
-    (None, None)
-    >>> mgr.find_user_password("f", "http://g.example.com:100")
-    (None, None)
-    >>> mgr.find_user_password("f", "http://g.example.com:80")
-    ('10', 'j')
-    >>> mgr.find_user_password("f", "http://g.example.com")
-    ('10', 'j')
-    >>> mgr.find_user_password("g", "h.example.com")
-    ('11', 'k')
-    >>> mgr.find_user_password("g", "h.example.com:80")
-    ('11', 'k')
-    >>> mgr.find_user_password("g", "http://h.example.com:80")
-    ('11', 'k')
-    >>> mgr.find_user_password("h", "i.example.com")
-    (None, None)
-    >>> mgr.find_user_password("h", "i.example.com:80")
-    ('12', 'l')
-    >>> mgr.find_user_password("h", "http://i.example.com:80")
-    ('12', 'l')
-    >>> mgr.find_user_password("i", "j.example.com")
-    ('13', 'm')
-    >>> mgr.find_user_password("i", "j.example.com:80")
-    (None, None)
-    >>> mgr.find_user_password("i", "http://j.example.com")
-    ('13', 'm')
-    >>> mgr.find_user_password("i", "http://j.example.com:80")
-    (None, None)
-
-    """
-
-class MockOpener:
-    addheaders = []
-    def open(self, req, data=None,timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
-        self.req, self.data, self.timeout  = req, data, timeout
-    def error(self, proto, *args):
-        self.proto, self.args = proto, args
-
-class MockFile:
-    def read(self, count=None): pass
-    def readline(self, count=None): pass
-    def close(self): pass
-
-class MockHeaders(dict):
-    def getheaders(self, name):
-        return self.values()
-
-class MockResponse(StringIO.StringIO):
-    def __init__(self, code, msg, headers, data, url=None):
-        StringIO.StringIO.__init__(self, data)
-        self.code, self.msg, self.headers, self.url = code, msg, headers, url
-    def info(self):
-        return self.headers
-    def geturl(self):
-        return self.url
-
-class MockCookieJar:
-    def add_cookie_header(self, request):
-        self.ach_req = request
-    def extract_cookies(self, response, request):
-        self.ec_req, self.ec_r = request, response
-
-class FakeMethod:
-    def __init__(self, meth_name, action, handle):
-        self.meth_name = meth_name
-        self.handle = handle
-        self.action = action
-    def __call__(self, *args):
-        return self.handle(self.meth_name, self.action, *args)
-
-class MockHTTPResponse:
-    def __init__(self, fp, msg, status, reason):
-        self.fp = fp
-        self.msg = msg
-        self.status = status
-        self.reason = reason
-    def read(self):
-        return ''
-
-class MockHTTPClass:
-    def __init__(self):
-        self.req_headers = []
-        self.data = None
-        self.raise_on_endheaders = False
-        self._tunnel_headers = {}
-
-    def __call__(self, host, timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
-        self.host = host
-        self.timeout = timeout
-        return self
-
-    def set_debuglevel(self, level):
-        self.level = level
-
-    def set_tunnel(self, host, port=None, headers=None):
-        self._tunnel_host = host
-        self._tunnel_port = port
-        if headers:
-            self._tunnel_headers = headers
-        else:
-            self._tunnel_headers.clear()
-    def request(self, method, url, body=None, headers=None):
-        self.method = method
-        self.selector = url
-        if headers is not None:
-            self.req_headers += headers.items()
-        self.req_headers.sort()
-        if body:
-            self.data = body
-        if self.raise_on_endheaders:
-            import socket
-            raise socket.error()
-    def getresponse(self):
-        return MockHTTPResponse(MockFile(), {}, 200, "OK")
-
-class MockHandler:
-    # useful for testing handler machinery
-    # see add_ordered_mock_handlers() docstring
-    handler_order = 500
-    def __init__(self, methods):
-        self._define_methods(methods)
-    def _define_methods(self, methods):
-        for spec in methods:
-            if len(spec) == 2: name, action = spec
-            else: name, action = spec, None
-            meth = FakeMethod(name, action, self.handle)
-            setattr(self.__class__, name, meth)
-    def handle(self, fn_name, action, *args, **kwds):
-        self.parent.calls.append((self, fn_name, args, kwds))
-        if action is None:
-            return None
-        elif action == "return self":
-            return self
-        elif action == "return response":
-            res = MockResponse(200, "OK", {}, "")
-            return res
-        elif action == "return request":
-            return Request("http://blah/")
-        elif action.startswith("error"):
-            code = action[action.rfind(" ")+1:]
-            try:
-                code = int(code)
-            except ValueError:
-                pass
-            res = MockResponse(200, "OK", {}, "")
-            return self.parent.error("http", args[0], res, code, "", {})
-        elif action == "raise":
-            raise urllib2.URLError("blah")
-        assert False
-    def close(self): pass
-    def add_parent(self, parent):
-        self.parent = parent
-        self.parent.calls = []
-    def __lt__(self, other):
-        if not hasattr(other, "handler_order"):
-            # No handler_order, leave in original order.  Yuck.
-            return True
-        return self.handler_order < other.handler_order
-
-def add_ordered_mock_handlers(opener, meth_spec):
-    """Create MockHandlers and add them to an OpenerDirector.
-
-    meth_spec: list of lists of tuples and strings defining methods to define
-    on handlers.  eg:
-
-    [["http_error", "ftp_open"], ["http_open"]]
-
-    defines methods .http_error() and .ftp_open() on one handler, and
-    .http_open() on another.  These methods just record their arguments and
-    return None.  Using a tuple instead of a string causes the method to
-    perform some action (see MockHandler.handle()), eg:
-
-    [["http_error"], [("http_open", "return request")]]
-
-    defines .http_error() on one handler (which simply returns None), and
-    .http_open() on another handler, which returns a Request object.
-
-    """
-    handlers = []
-    count = 0
-    for meths in meth_spec:
-        class MockHandlerSubclass(MockHandler): pass
-        h = MockHandlerSubclass(meths)
-        h.handler_order += count
-        h.add_parent(opener)
-        count = count + 1
-        handlers.append(h)
-        opener.add_handler(h)
-    return handlers
-
-def build_test_opener(*handler_instances):
-    opener = OpenerDirector()
-    for h in handler_instances:
-        opener.add_handler(h)
-    return opener
-
-class MockHTTPHandler(urllib2.BaseHandler):
-    # useful for testing redirections and auth
-    # sends supplied headers and code as first response
-    # sends 200 OK as second response
-    def __init__(self, code, headers):
-        self.code = code
-        self.headers = headers
-        self.reset()
-    def reset(self):
-        self._count = 0
-        self.requests = []
-    def http_open(self, req):
-        import mimetools, httplib, copy
-        from StringIO import StringIO
-        self.requests.append(copy.deepcopy(req))
-        if self._count == 0:
-            self._count = self._count + 1
-            name = httplib.responses[self.code]
-            msg = mimetools.Message(StringIO(self.headers))
-            return self.parent.error(
-                "http", req, MockFile(), self.code, name, msg)
-        else:
-            self.req = req
-            msg = mimetools.Message(StringIO("\r\n\r\n"))
-            return MockResponse(200, "OK", msg, "", req.get_full_url())
-
-class MockHTTPSHandler(urllib2.AbstractHTTPHandler):
-    # Useful for testing the Proxy-Authorization request by verifying the
-    # properties of httpcon
-
-    def __init__(self):
-        urllib2.AbstractHTTPHandler.__init__(self)
-        self.httpconn = MockHTTPClass()
-
-    def https_open(self, req):
-        return self.do_open(self.httpconn, req)
-
-class MockPasswordManager:
-    def add_password(self, realm, uri, user, password):
-        self.realm = realm
-        self.url = uri
-        self.user = user
-        self.password = password
-    def find_user_password(self, realm, authuri):
-        self.target_realm = realm
-        self.target_url = authuri
-        return self.user, self.password
-
-
-class OpenerDirectorTests(unittest.TestCase):
-
-    def test_add_non_handler(self):
-        class NonHandler(object):
-            pass
-        self.assertRaises(TypeError,
-                          OpenerDirector().add_handler, NonHandler())
-
-    def test_badly_named_methods(self):
-        # test work-around for three methods that accidentally follow the
-        # naming conventions for handler methods
-        # (*_open() / *_request() / *_response())
-
-        # These used to call the accidentally-named methods, causing a
-        # TypeError in real code; here, returning self from these mock
-        # methods would either cause no exception, or AttributeError.
-
-        from urllib2 import URLError
-
-        o = OpenerDirector()
-        meth_spec = [
-            [("do_open", "return self"), ("proxy_open", "return self")],
-            [("redirect_request", "return self")],
-            ]
-        handlers = add_ordered_mock_handlers(o, meth_spec)
-        o.add_handler(urllib2.UnknownHandler())
-        for scheme in "do", "proxy", "redirect":
-            self.assertRaises(URLError, o.open, scheme+"://example.com/")
-
-    def test_handled(self):
-        # handler returning non-None means no more handlers will be called
-        o = OpenerDirector()
-        meth_spec = [
-            ["http_open", "ftp_open", "http_error_302"],
-            ["ftp_open"],
-            [("http_open", "return self")],
-            [("http_open", "return self")],
-            ]
-        handlers = add_ordered_mock_handlers(o, meth_spec)
-
-        req = Request("http://example.com/")
-        r = o.open(req)
-        # Second .http_open() gets called, third doesn't, since second returned
-        # non-None.  Handlers without .http_open() never get any methods called
-        # on them.
-        # In fact, second mock handler defining .http_open() returns self
-        # (instead of response), which becomes the OpenerDirector's return
-        # value.
-        self.assertEqual(r, handlers[2])
-        calls = [(handlers[0], "http_open"), (handlers[2], "http_open")]
-        for expected, got in zip(calls, o.calls):
-            handler, name, args, kwds = got
-            self.assertEqual((handler, name), expected)
-            self.assertEqual(args, (req,))
-
-    def test_handler_order(self):
-        o = OpenerDirector()
-        handlers = []
-        for meths, handler_order in [
-            ([("http_open", "return self")], 500),
-            (["http_open"], 0),
-            ]:
-            class MockHandlerSubclass(MockHandler): pass
-            h = MockHandlerSubclass(meths)
-            h.handler_order = handler_order
-            handlers.append(h)
-            o.add_handler(h)
-
-        r = o.open("http://example.com/")
-        # handlers called in reverse order, thanks to their sort order
-        self.assertEqual(o.calls[0][0], handlers[1])
-        self.assertEqual(o.calls[1][0], handlers[0])
-
-    def test_raise(self):
-        # raising URLError stops processing of request
-        o = OpenerDirector()
-        meth_spec = [
-            [("http_open", "raise")],
-            [("http_open", "return self")],
-            ]
-        handlers = add_ordered_mock_handlers(o, meth_spec)
-
-        req = Request("http://example.com/")
-        self.assertRaises(urllib2.URLError, o.open, req)
-        self.assertEqual(o.calls, [(handlers[0], "http_open", (req,), {})])
-
-##     def test_error(self):
-##         # XXX this doesn't actually seem to be used in standard library,
-##         #  but should really be tested anyway...
-
-    def test_http_error(self):
-        # XXX http_error_default
-        # http errors are a special case
-        o = OpenerDirector()
-        meth_spec = [
-            [("http_open", "error 302")],
-            [("http_error_400", "raise"), "http_open"],
-            [("http_error_302", "return response"), "http_error_303",
-             "http_error"],
-            [("http_error_302")],
-            ]
-        handlers = add_ordered_mock_handlers(o, meth_spec)
-
-        class Unknown:
-            def __eq__(self, other): return True
-
-        req = Request("http://example.com/")
-        r = o.open(req)
-        assert len(o.calls) == 2
-        calls = [(handlers[0], "http_open", (req,)),
-                 (handlers[2], "http_error_302",
-                  (req, Unknown(), 302, "", {}))]
-        for expected, got in zip(calls, o.calls):
-            handler, method_name, args = expected
-            self.assertEqual((handler, method_name), got[:2])
-            self.assertEqual(args, got[2])
-
-    def test_processors(self):
-        # *_request / *_response methods get called appropriately
-        o = OpenerDirector()
-        meth_spec = [
-            [("http_request", "return request"),
-             ("http_response", "return response")],
-            [("http_request", "return request"),
-             ("http_response", "return response")],
-            ]
-        handlers = add_ordered_mock_handlers(o, meth_spec)
-
-        req = Request("http://example.com/")
-        r = o.open(req)
-        # processor methods are called on *all* handlers that define them,
-        # not just the first handler that handles the request
-        calls = [
-            (handlers[0], "http_request"), (handlers[1], "http_request"),
-            (handlers[0], "http_response"), (handlers[1], "http_response")]
-
-        for i, (handler, name, args, kwds) in enumerate(o.calls):
-            if i < 2:
-                # *_request
-                self.assertEqual((handler, name), calls[i])
-                self.assertEqual(len(args), 1)
-                self.assertIsInstance(args[0], Request)
-            else:
-                # *_response
-                self.assertEqual((handler, name), calls[i])
-                self.assertEqual(len(args), 2)
-                self.assertIsInstance(args[0], Request)
-                # response from opener.open is None, because there's no
-                # handler that defines http_open to handle it
-                self.assertTrue(args[1] is None or
-                             isinstance(args[1], MockResponse))
-
-
-def sanepathname2url(path):
-    import urllib
-    urlpath = urllib.pathname2url(path)
-    if os.name == "nt" and urlpath.startswith("///"):
-        urlpath = urlpath[2:]
-    # XXX don't ask me about the mac...
-    return urlpath
-
-class HandlerTests(unittest.TestCase):
-
-    def test_ftp(self):
-        class MockFTPWrapper:
-            def __init__(self, data): self.data = data
-            def retrfile(self, filename, filetype):
-                self.filename, self.filetype = filename, filetype
-                return StringIO.StringIO(self.data), len(self.data)
-
-        class NullFTPHandler(urllib2.FTPHandler):
-            def __init__(self, data): self.data = data
-            def connect_ftp(self, user, passwd, host, port, dirs,
-                            timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
-                self.user, self.passwd = user, passwd
-                self.host, self.port = host, port
-                self.dirs = dirs
-                self.ftpwrapper = MockFTPWrapper(self.data)
-                return self.ftpwrapper
-
-        import ftplib
-        data = "rheum rhaponicum"
-        h = NullFTPHandler(data)
-        o = h.parent = MockOpener()
-
-        for url, host, port, user, passwd, type_, dirs, filename, mimetype in [
-            ("ftp://localhost/foo/bar/baz.html",
-             "localhost", ftplib.FTP_PORT, "", "", "I",
-             ["foo", "bar"], "baz.html", "text/html"),
-            ("ftp://parrot@localhost/foo/bar/baz.html",
-             "localhost", ftplib.FTP_PORT, "parrot", "", "I",
-             ["foo", "bar"], "baz.html", "text/html"),
-            ("ftp://%25parrot@localhost/foo/bar/baz.html",
-             "localhost", ftplib.FTP_PORT, "%parrot", "", "I",
-             ["foo", "bar"], "baz.html", "text/html"),
-            ("ftp://%2542parrot@localhost/foo/bar/baz.html",
-             "localhost", ftplib.FTP_PORT, "%42parrot", "", "I",
-             ["foo", "bar"], "baz.html", "text/html"),
-            ("ftp://localhost:80/foo/bar/",
-             "localhost", 80, "", "", "D",
-             ["foo", "bar"], "", None),
-            ("ftp://localhost/baz.gif;type=a",
-             "localhost", ftplib.FTP_PORT, "", "", "A",
-             [], "baz.gif", None),  # XXX really this should guess image/gif
-            ]:
-            req = Request(url)
-            req.timeout = None
-            r = h.ftp_open(req)
-            # ftp authentication not yet implemented by FTPHandler
-            self.assertEqual(h.user, user)
-            self.assertEqual(h.passwd, passwd)
-            self.assertEqual(h.host, socket.gethostbyname(host))
-            self.assertEqual(h.port, port)
-            self.assertEqual(h.dirs, dirs)
-            self.assertEqual(h.ftpwrapper.filename, filename)
-            self.assertEqual(h.ftpwrapper.filetype, type_)
-            headers = r.info()
-            self.assertEqual(headers.get("Content-type"), mimetype)
-            self.assertEqual(int(headers["Content-length"]), len(data))
-
-    def test_file(self):
-        import rfc822, socket
-        h = urllib2.FileHandler()
-        o = h.parent = MockOpener()
-
-        TESTFN = test_support.TESTFN
-        urlpath = sanepathname2url(os.path.abspath(TESTFN))
-        towrite = "hello, world\n"
-        urls = [
-            "file://localhost%s" % urlpath,
-            "file://%s" % urlpath,
-            "file://%s%s" % (socket.gethostbyname('localhost'), urlpath),
-            ]
-        try:
-            localaddr = socket.gethostbyname(socket.gethostname())
-        except socket.gaierror:
-            localaddr = ''
-        if localaddr:
-            urls.append("file://%s%s" % (localaddr, urlpath))
-
-        for url in urls:
-            f = open(TESTFN, "wb")
-            try:
-                try:
-                    f.write(towrite)
-                finally:
-                    f.close()
-
-                r = h.file_open(Request(url))
-                try:
-                    data = r.read()
-                    headers = r.info()
-                    respurl = r.geturl()
-                finally:
-                    r.close()
-                stats = os.stat(TESTFN)
-                modified = rfc822.formatdate(stats.st_mtime)
-            finally:
-                os.remove(TESTFN)
-            self.assertEqual(data, towrite)
-            self.assertEqual(headers["Content-type"], "text/plain")
-            self.assertEqual(headers["Content-length"], "13")
-            self.assertEqual(headers["Last-modified"], modified)
-            self.assertEqual(respurl, url)
-
-        for url in [
-            "file://localhost:80%s" % urlpath,
-            "file:///file_does_not_exist.txt",
-            "file://%s:80%s/%s" % (socket.gethostbyname('localhost'),
-                                   os.getcwd(), TESTFN),
-            "file://somerandomhost.ontheinternet.com%s/%s" %
-            (os.getcwd(), TESTFN),
-            ]:
-            try:
-                f = open(TESTFN, "wb")
-                try:
-                    f.write(towrite)
-                finally:
-                    f.close()
-
-                self.assertRaises(urllib2.URLError,
-                                  h.file_open, Request(url))
-            finally:
-                os.remove(TESTFN)
-
-        h = urllib2.FileHandler()
-        o = h.parent = MockOpener()
-        # XXXX why does // mean ftp (and /// mean not ftp!), and where
-        #  is file: scheme specified?  I think this is really a bug, and
-        #  what was intended was to distinguish between URLs like:
-        # file:/blah.txt (a file)
-        # file://localhost/blah.txt (a file)
-        # file:///blah.txt (a file)
-        # file://ftp.example.com/blah.txt (an ftp URL)
-        for url, ftp in [
-            ("file://ftp.example.com//foo.txt", True),
-            ("file://ftp.example.com///foo.txt", False),
-# XXXX bug: fails with OSError, should be URLError
-            ("file://ftp.example.com/foo.txt", False),
-            ("file://somehost//foo/something.txt", True),
-            ("file://localhost//foo/something.txt", False),
-            ]:
-            req = Request(url)
-            try:
-                h.file_open(req)
-            # XXXX remove OSError when bug fixed
-            except (urllib2.URLError, OSError):
-                self.assertTrue(not ftp)
-            else:
-                self.assertTrue(o.req is req)
-                self.assertEqual(req.type, "ftp")
-            self.assertEqual(req.type == "ftp", ftp)
-
-    def test_http(self):
-
-        h = urllib2.AbstractHTTPHandler()
-        o = h.parent = MockOpener()
-
-        url = "http://example.com/"
-        for method, data in [("GET", None), ("POST", "blah")]:
-            req = Request(url, data, {"Foo": "bar"})
-            req.timeout = None
-            req.add_unredirected_header("Spam", "eggs")
-            http = MockHTTPClass()
-            r = h.do_open(http, req)
-
-            # result attributes
-            r.read; r.readline  # wrapped MockFile methods
-            r.info; r.geturl  # addinfourl methods
-            r.code, r.msg == 200, "OK"  # added from MockHTTPClass.getreply()
-            hdrs = r.info()
-            hdrs.get; hdrs.has_key  # r.info() gives dict from .getreply()
-            self.assertEqual(r.geturl(), url)
-
-            self.assertEqual(http.host, "example.com")
-            self.assertEqual(http.level, 0)
-            self.assertEqual(http.method, method)
-            self.assertEqual(http.selector, "/")
-            self.assertEqual(http.req_headers,
-                             [("Connection", "close"),
-                              ("Foo", "bar"), ("Spam", "eggs")])
-            self.assertEqual(http.data, data)
-
-        # check socket.error converted to URLError
-        http.raise_on_endheaders = True
-        self.assertRaises(urllib2.URLError, h.do_open, http, req)
-
-        # check adding of standard headers
-        o.addheaders = [("Spam", "eggs")]
-        for data in "", None:  # POST, GET
-            req = Request("http://example.com/", data)
-            r = MockResponse(200, "OK", {}, "")
-            newreq = h.do_request_(req)
-            if data is None:  # GET
-                self.assertNotIn("Content-length", req.unredirected_hdrs)
-                self.assertNotIn("Content-type", req.unredirected_hdrs)
-            else:  # POST
-                self.assertEqual(req.unredirected_hdrs["Content-length"], "0")
-                self.assertEqual(req.unredirected_hdrs["Content-type"],
-                             "application/x-www-form-urlencoded")
-            # XXX the details of Host could be better tested
-            self.assertEqual(req.unredirected_hdrs["Host"], "example.com")
-            self.assertEqual(req.unredirected_hdrs["Spam"], "eggs")
-
-            # don't clobber existing headers
-            req.add_unredirected_header("Content-length", "foo")
-            req.add_unredirected_header("Content-type", "bar")
-            req.add_unredirected_header("Host", "baz")
-            req.add_unredirected_header("Spam", "foo")
-            newreq = h.do_request_(req)
-            self.assertEqual(req.unredirected_hdrs["Content-length"], "foo")
-            self.assertEqual(req.unredirected_hdrs["Content-type"], "bar")
-            self.assertEqual(req.unredirected_hdrs["Host"], "baz")
-            self.assertEqual(req.unredirected_hdrs["Spam"], "foo")
-
-    def test_http_doubleslash(self):
-        # Checks that the presence of an unnecessary double slash in a url doesn't break anything
-        # Previously, a double slash directly after the host could cause incorrect parsing of the url
-        h = urllib2.AbstractHTTPHandler()
-        o = h.parent = MockOpener()
-
-        data = ""
-        ds_urls = [
-            "http://example.com/foo/bar/baz.html",
-            "http://example.com//foo/bar/baz.html",
-            "http://example.com/foo//bar/baz.html",
-            "http://example.com/foo/bar//baz.html",
-        ]
-
-        for ds_url in ds_urls:
-            ds_req = Request(ds_url, data)
-
-            # Check whether host is determined correctly if there is no proxy
-            np_ds_req = h.do_request_(ds_req)
-            self.assertEqual(np_ds_req.unredirected_hdrs["Host"],"example.com")
-
-            # Check whether host is determined correctly if there is a proxy
-            ds_req.set_proxy("someproxy:3128",None)
-            p_ds_req = h.do_request_(ds_req)
-            self.assertEqual(p_ds_req.unredirected_hdrs["Host"],"example.com")
-
-    def test_fixpath_in_weirdurls(self):
-        # Issue4493: urllib2 to supply '/' when to urls where path does not
-        # start with'/'
-
-        h = urllib2.AbstractHTTPHandler()
-        o = h.parent = MockOpener()
-
-        weird_url = 'http://www.python.org?getspam'
-        req = Request(weird_url)
-        newreq = h.do_request_(req)
-        self.assertEqual(newreq.get_host(),'www.python.org')
-        self.assertEqual(newreq.get_selector(),'/?getspam')
-
-        url_without_path = 'http://www.python.org'
-        req = Request(url_without_path)
-        newreq = h.do_request_(req)
-        self.assertEqual(newreq.get_host(),'www.python.org')
-        self.assertEqual(newreq.get_selector(),'')
-
-    def test_errors(self):
-        h = urllib2.HTTPErrorProcessor()
-        o = h.parent = MockOpener()
-
-        url = "http://example.com/"
-        req = Request(url)
-        # all 2xx are passed through
-        r = MockResponse(200, "OK", {}, "", url)
-        newr = h.http_response(req, r)
-        self.assertTrue(r is newr)
-        self.assertTrue(not hasattr(o, "proto"))  # o.error not called
-        r = MockResponse(202, "Accepted", {}, "", url)
-        newr = h.http_response(req, r)
-        self.assertTrue(r is newr)
-        self.assertTrue(not hasattr(o, "proto"))  # o.error not called
-        r = MockResponse(206, "Partial content", {}, "", url)
-        newr = h.http_response(req, r)
-        self.assertTrue(r is newr)
-        self.assertTrue(not hasattr(o, "proto"))  # o.error not called
-        # anything else calls o.error (and MockOpener returns None, here)
-        r = MockResponse(502, "Bad gateway", {}, "", url)
-        self.assertTrue(h.http_response(req, r) is None)
-        self.assertEqual(o.proto, "http")  # o.error called
-        self.assertEqual(o.args, (req, r, 502, "Bad gateway", {}))
-
-    def test_cookies(self):
-        cj = MockCookieJar()
-        h = urllib2.HTTPCookieProcessor(cj)
-        o = h.parent = MockOpener()
-
-        req = Request("http://example.com/")
-        r = MockResponse(200, "OK", {}, "")
-        newreq = h.http_request(req)
-        self.assertTrue(cj.ach_req is req is newreq)
-        self.assertEqual(req.get_origin_req_host(), "example.com")
-        self.assertTrue(not req.is_unverifiable())
-        newr = h.http_response(req, r)
-        self.assertTrue(cj.ec_req is req)
-        self.assertTrue(cj.ec_r is r is newr)
-
-    def test_redirect(self):
-        from_url = "http://example.com/a.html"
-        to_url = "http://example.com/b.html"
-        h = urllib2.HTTPRedirectHandler()
-        o = h.parent = MockOpener()
-
-        # ordinary redirect behaviour
-        for code in 301, 302, 303, 307:
-            for data in None, "blah\nblah\n":
-                method = getattr(h, "http_error_%s" % code)
-                req = Request(from_url, data)
-                req.add_header("Nonsense", "viking=withhold")
-                req.timeout = socket._GLOBAL_DEFAULT_TIMEOUT
-                if data is not None:
-                    req.add_header("Content-Length", str(len(data)))
-                req.add_unredirected_header("Spam", "spam")
-                try:
-                    method(req, MockFile(), code, "Blah",
-                           MockHeaders({"location": to_url}))
-                except urllib2.HTTPError:
-                    # 307 in response to POST requires user OK
-                    self.assertTrue(code == 307 and data is not None)
-                self.assertEqual(o.req.get_full_url(), to_url)
-                try:
-                    self.assertEqual(o.req.get_method(), "GET")
-                except AttributeError:
-                    self.assertTrue(not o.req.has_data())
-
-                # now it's a GET, there should not be headers regarding content
-                # (possibly dragged from before being a POST)
-                headers = [x.lower() for x in o.req.headers]
-                self.assertNotIn("content-length", headers)
-                self.assertNotIn("content-type", headers)
-
-                self.assertEqual(o.req.headers["Nonsense"],
-                                 "viking=withhold")
-                self.assertNotIn("Spam", o.req.headers)
-                self.assertNotIn("Spam", o.req.unredirected_hdrs)
-
-        # loop detection
-        req = Request(from_url)
-        req.timeout = socket._GLOBAL_DEFAULT_TIMEOUT
-        def redirect(h, req, url=to_url):
-            h.http_error_302(req, MockFile(), 302, "Blah",
-                             MockHeaders({"location": url}))
-        # Note that the *original* request shares the same record of
-        # redirections with the sub-requests caused by the redirections.
-
-        # detect infinite loop redirect of a URL to itself
-        req = Request(from_url, origin_req_host="example.com")
-        count = 0
-        req.timeout = socket._GLOBAL_DEFAULT_TIMEOUT
-        try:
-            while 1:
-                redirect(h, req, "http://example.com/")
-                count = count + 1
-        except urllib2.HTTPError:
-            # don't stop until max_repeats, because cookies may introduce state
-            self.assertEqual(count, urllib2.HTTPRedirectHandler.max_repeats)
-
-        # detect endless non-repeating chain of redirects
-        req = Request(from_url, origin_req_host="example.com")
-        count = 0
-        req.timeout = socket._GLOBAL_DEFAULT_TIMEOUT
-        try:
-            while 1:
-                redirect(h, req, "http://example.com/%d" % count)
-                count = count + 1
-        except urllib2.HTTPError:
-            self.assertEqual(count,
-                             urllib2.HTTPRedirectHandler.max_redirections)
-
-    def test_invalid_redirect(self):
-        from_url = "http://example.com/a.html"
-        valid_schemes = ['http', 'https', 'ftp']
-        invalid_schemes = ['file', 'imap', 'ldap']
-        schemeless_url = "example.com/b.html"
-        h = urllib2.HTTPRedirectHandler()
-        o = h.parent = MockOpener()
-        req = Request(from_url)
-        req.timeout = socket._GLOBAL_DEFAULT_TIMEOUT
-
-        for scheme in invalid_schemes:
-            invalid_url = scheme + '://' + schemeless_url
-            self.assertRaises(urllib2.HTTPError, h.http_error_302,
-                              req, MockFile(), 302, "Security Loophole",
-                              MockHeaders({"location": invalid_url}))
-
-        for scheme in valid_schemes:
-            valid_url = scheme + '://' + schemeless_url
-            h.http_error_302(req, MockFile(), 302, "That's fine",
-                MockHeaders({"location": valid_url}))
-            self.assertEqual(o.req.get_full_url(), valid_url)
-
-    def test_cookie_redirect(self):
-        # cookies shouldn't leak into redirected requests
-        from cookielib import CookieJar
-
-        from test.test_cookielib import interact_netscape
-
-        cj = CookieJar()
-        interact_netscape(cj, "http://www.example.com/", "spam=eggs")
-        hh = MockHTTPHandler(302, "Location: http://www.cracker.com/\r\n\r\n")
-        hdeh = urllib2.HTTPDefaultErrorHandler()
-        hrh = urllib2.HTTPRedirectHandler()
-        cp = urllib2.HTTPCookieProcessor(cj)
-        o = build_test_opener(hh, hdeh, hrh, cp)
-        o.open("http://www.example.com/")
-        self.assertTrue(not hh.req.has_header("Cookie"))
-
-    def test_redirect_fragment(self):
-        redirected_url = 'http://www.example.com/index.html#OK\r\n\r\n'
-        hh = MockHTTPHandler(302, 'Location: ' + redirected_url)
-        hdeh = urllib2.HTTPDefaultErrorHandler()
-        hrh = urllib2.HTTPRedirectHandler()
-        o = build_test_opener(hh, hdeh, hrh)
-        fp = o.open('http://www.example.com')
-        self.assertEqual(fp.geturl(), redirected_url.strip())
-
-    def test_proxy(self):
-        o = OpenerDirector()
-        ph = urllib2.ProxyHandler(dict(http="proxy.example.com:3128"))
-        o.add_handler(ph)
-        meth_spec = [
-            [("http_open", "return response")]
-            ]
-        handlers = add_ordered_mock_handlers(o, meth_spec)
-
-        req = Request("http://acme.example.com/")
-        self.assertEqual(req.get_host(), "acme.example.com")
-        r = o.open(req)
-        self.assertEqual(req.get_host(), "proxy.example.com:3128")
-
-        self.assertEqual([(handlers[0], "http_open")],
-                         [tup[0:2] for tup in o.calls])
-
-    def test_proxy_no_proxy(self):
-        os.environ['no_proxy'] = 'python.org'
-        o = OpenerDirector()
-        ph = urllib2.ProxyHandler(dict(http="proxy.example.com"))
-        o.add_handler(ph)
-        req = Request("http://www.perl.org/")
-        self.assertEqual(req.get_host(), "www.perl.org")
-        r = o.open(req)
-        self.assertEqual(req.get_host(), "proxy.example.com")
-        req = Request("http://www.python.org")
-        self.assertEqual(req.get_host(), "www.python.org")
-        r = o.open(req)
-        self.assertEqual(req.get_host(), "www.python.org")
-        del os.environ['no_proxy']
-
-
-    def test_proxy_https(self):
-        o = OpenerDirector()
-        ph = urllib2.ProxyHandler(dict(https='proxy.example.com:3128'))
-        o.add_handler(ph)
-        meth_spec = [
-            [("https_open","return response")]
-        ]
-        handlers = add_ordered_mock_handlers(o, meth_spec)
-        req = Request("https://www.example.com/")
-        self.assertEqual(req.get_host(), "www.example.com")
-        r = o.open(req)
-        self.assertEqual(req.get_host(), "proxy.example.com:3128")
-        self.assertEqual([(handlers[0], "https_open")],
-                         [tup[0:2] for tup in o.calls])
-
-    def test_proxy_https_proxy_authorization(self):
-        o = OpenerDirector()
-        ph = urllib2.ProxyHandler(dict(https='proxy.example.com:3128'))
-        o.add_handler(ph)
-        https_handler = MockHTTPSHandler()
-        o.add_handler(https_handler)
-        req = Request("https://www.example.com/")
-        req.add_header("Proxy-Authorization","FooBar")
-        req.add_header("User-Agent","Grail")
-        self.assertEqual(req.get_host(), "www.example.com")
-        self.assertIsNone(req._tunnel_host)
-        r = o.open(req)
-        # Verify Proxy-Authorization gets tunneled to request.
-        # httpsconn req_headers do not have the Proxy-Authorization header but
-        # the req will have.
-        self.assertNotIn(("Proxy-Authorization","FooBar"),
-                         https_handler.httpconn.req_headers)
-        self.assertIn(("User-Agent","Grail"),
-                      https_handler.httpconn.req_headers)
-        self.assertIsNotNone(req._tunnel_host)
-        self.assertEqual(req.get_host(), "proxy.example.com:3128")
-        self.assertEqual(req.get_header("Proxy-authorization"),"FooBar")
-
-    def test_basic_auth(self, quote_char='"'):
-        opener = OpenerDirector()
-        password_manager = MockPasswordManager()
-        auth_handler = urllib2.HTTPBasicAuthHandler(password_manager)
-        realm = "ACME Widget Store"
-        http_handler = MockHTTPHandler(
-            401, 'WWW-Authenticate: Basic realm=%s%s%s\r\n\r\n' %
-            (quote_char, realm, quote_char) )
-        opener.add_handler(auth_handler)
-        opener.add_handler(http_handler)
-        self._test_basic_auth(opener, auth_handler, "Authorization",
-                              realm, http_handler, password_manager,
-                              "http://acme.example.com/protected",
-                              "http://acme.example.com/protected",
-                              )
-
-    def test_basic_auth_with_single_quoted_realm(self):
-        self.test_basic_auth(quote_char="'")
-
-    def test_proxy_basic_auth(self):
-        opener = OpenerDirector()
-        ph = urllib2.ProxyHandler(dict(http="proxy.example.com:3128"))
-        opener.add_handler(ph)
-        password_manager = MockPasswordManager()
-        auth_handler = urllib2.ProxyBasicAuthHandler(password_manager)
-        realm = "ACME Networks"
-        http_handler = MockHTTPHandler(
-            407, 'Proxy-Authenticate: Basic realm="%s"\r\n\r\n' % realm)
-        opener.add_handler(auth_handler)
-        opener.add_handler(http_handler)
-        self._test_basic_auth(opener, auth_handler, "Proxy-authorization",
-                              realm, http_handler, password_manager,
-                              "http://acme.example.com:3128/protected",
-                              "proxy.example.com:3128",
-                              )
-
-    def test_basic_and_digest_auth_handlers(self):
-        # HTTPDigestAuthHandler threw an exception if it couldn't handle a 40*
-        # response (http://python.org/sf/1479302), where it should instead
-        # return None to allow another handler (especially
-        # HTTPBasicAuthHandler) to handle the response.
-
-        # Also (http://python.org/sf/14797027, RFC 2617 section 1.2), we must
-        # try digest first (since it's the strongest auth scheme), so we record
-        # order of calls here to check digest comes first:
-        class RecordingOpenerDirector(OpenerDirector):
-            def __init__(self):
-                OpenerDirector.__init__(self)
-                self.recorded = []
-            def record(self, info):
-                self.recorded.append(info)
-        class TestDigestAuthHandler(urllib2.HTTPDigestAuthHandler):
-            def http_error_401(self, *args, **kwds):
-                self.parent.record("digest")
-                urllib2.HTTPDigestAuthHandler.http_error_401(self,
-                                                             *args, **kwds)
-        class TestBasicAuthHandler(urllib2.HTTPBasicAuthHandler):
-            def http_error_401(self, *args, **kwds):
-                self.parent.record("basic")
-                urllib2.HTTPBasicAuthHandler.http_error_401(self,
-                                                            *args, **kwds)
-
-        opener = RecordingOpenerDirector()
-        password_manager = MockPasswordManager()
-        digest_handler = TestDigestAuthHandler(password_manager)
-        basic_handler = TestBasicAuthHandler(password_manager)
-        realm = "ACME Networks"
-        http_handler = MockHTTPHandler(
-            401, 'WWW-Authenticate: Basic realm="%s"\r\n\r\n' % realm)
-        opener.add_handler(basic_handler)
-        opener.add_handler(digest_handler)
-        opener.add_handler(http_handler)
-
-        # check basic auth isn't blocked by digest handler failing
-        self._test_basic_auth(opener, basic_handler, "Authorization",
-                              realm, http_handler, password_manager,
-                              "http://acme.example.com/protected",
-                              "http://acme.example.com/protected",
-                              )
-        # check digest was tried before basic (twice, because
-        # _test_basic_auth called .open() twice)
-        self.assertEqual(opener.recorded, ["digest", "basic"]*2)
-
-    def _test_basic_auth(self, opener, auth_handler, auth_header,
-                         realm, http_handler, password_manager,
-                         request_url, protected_url):
-        import base64
-        user, password = "wile", "coyote"
-
-        # .add_password() fed through to password manager
-        auth_handler.add_password(realm, request_url, user, password)
-        self.assertEqual(realm, password_manager.realm)
-        self.assertEqual(request_url, password_manager.url)
-        self.assertEqual(user, password_manager.user)
-        self.assertEqual(password, password_manager.password)
-
-        r = opener.open(request_url)
-
-        # should have asked the password manager for the username/password
-        self.assertEqual(password_manager.target_realm, realm)
-        self.assertEqual(password_manager.target_url, protected_url)
-
-        # expect one request without authorization, then one with
-        self.assertEqual(len(http_handler.requests), 2)
-        self.assertFalse(http_handler.requests[0].has_header(auth_header))
-        userpass = '%s:%s' % (user, password)
-        auth_hdr_value = 'Basic '+base64.encodestring(userpass).strip()
-        self.assertEqual(http_handler.requests[1].get_header(auth_header),
-                         auth_hdr_value)
-        self.assertEqual(http_handler.requests[1].unredirected_hdrs[auth_header],
-                         auth_hdr_value)
-        # if the password manager can't find a password, the handler won't
-        # handle the HTTP auth error
-        password_manager.user = password_manager.password = None
-        http_handler.reset()
-        r = opener.open(request_url)
-        self.assertEqual(len(http_handler.requests), 1)
-        self.assertFalse(http_handler.requests[0].has_header(auth_header))
-
-class MiscTests(unittest.TestCase):
-
-    def test_build_opener(self):
-        class MyHTTPHandler(urllib2.HTTPHandler): pass
-        class FooHandler(urllib2.BaseHandler):
-            def foo_open(self): pass
-        class BarHandler(urllib2.BaseHandler):
-            def bar_open(self): pass
-
-        build_opener = urllib2.build_opener
-
-        o = build_opener(FooHandler, BarHandler)
-        self.opener_has_handler(o, FooHandler)
-        self.opener_has_handler(o, BarHandler)
-
-        # can take a mix of classes and instances
-        o = build_opener(FooHandler, BarHandler())
-        self.opener_has_handler(o, FooHandler)
-        self.opener_has_handler(o, BarHandler)
-
-        # subclasses of default handlers override default handlers
-        o = build_opener(MyHTTPHandler)
-        self.opener_has_handler(o, MyHTTPHandler)
-
-        # a particular case of overriding: default handlers can be passed
-        # in explicitly
-        o = build_opener()
-        self.opener_has_handler(o, urllib2.HTTPHandler)
-        o = build_opener(urllib2.HTTPHandler)
-        self.opener_has_handler(o, urllib2.HTTPHandler)
-        o = build_opener(urllib2.HTTPHandler())
-        self.opener_has_handler(o, urllib2.HTTPHandler)
-
-        # Issue2670: multiple handlers sharing the same base class
-        class MyOtherHTTPHandler(urllib2.HTTPHandler): pass
-        o = build_opener(MyHTTPHandler, MyOtherHTTPHandler)
-        self.opener_has_handler(o, MyHTTPHandler)
-        self.opener_has_handler(o, MyOtherHTTPHandler)
-
-    def opener_has_handler(self, opener, handler_class):
-        for h in opener.handlers:
-            if h.__class__ == handler_class:
-                break
-        else:
-            self.assertTrue(False)
-
-class RequestTests(unittest.TestCase):
-
-    def setUp(self):
-        self.get = urllib2.Request("http://www.python.org/~jeremy/")
-        self.post = urllib2.Request("http://www.python.org/~jeremy/",
-                                    "data",
-                                    headers={"X-Test": "test"})
-
-    def test_method(self):
-        self.assertEqual("POST", self.post.get_method())
-        self.assertEqual("GET", self.get.get_method())
-
-    def test_add_data(self):
-        self.assertTrue(not self.get.has_data())
-        self.assertEqual("GET", self.get.get_method())
-        self.get.add_data("spam")
-        self.assertTrue(self.get.has_data())
-        self.assertEqual("POST", self.get.get_method())
-
-    def test_get_full_url(self):
-        self.assertEqual("http://www.python.org/~jeremy/",
-                         self.get.get_full_url())
-
-    def test_selector(self):
-        self.assertEqual("/~jeremy/", self.get.get_selector())
-        req = urllib2.Request("http://www.python.org/")
-        self.assertEqual("/", req.get_selector())
-
-    def test_get_type(self):
-        self.assertEqual("http", self.get.get_type())
-
-    def test_get_host(self):
-        self.assertEqual("www.python.org", self.get.get_host())
-
-    def test_get_host_unquote(self):
-        req = urllib2.Request("http://www.%70ython.org/")
-        self.assertEqual("www.python.org", req.get_host())
-
-    def test_proxy(self):
-        self.assertTrue(not self.get.has_proxy())
-        self.get.set_proxy("www.perl.org", "http")
-        self.assertTrue(self.get.has_proxy())
-        self.assertEqual("www.python.org", self.get.get_origin_req_host())
-        self.assertEqual("www.perl.org", self.get.get_host())
-
-    def test_wrapped_url(self):
-        req = Request("<URL:http://www.python.org>")
-        self.assertEqual("www.python.org", req.get_host())
-
-    def test_url_fragment(self):
-        req = Request("http://www.python.org/?qs=query#fragment=true")
-        self.assertEqual("/?qs=query", req.get_selector())
-        req = Request("http://www.python.org/#fun=true")
-        self.assertEqual("/", req.get_selector())
-
-        # Issue 11703: geturl() omits fragment in the original URL.
-        url = 'http://docs.python.org/library/urllib2.html#OK'
-        req = Request(url)
-        self.assertEqual(req.get_full_url(), url)
-
-def test_main(verbose=None):
-    from test import test_urllib2
-    test_support.run_doctest(test_urllib2, verbose)
-    test_support.run_doctest(urllib2, verbose)
-    tests = (TrivialTests,
-             OpenerDirectorTests,
-             HandlerTests,
-             MiscTests,
-             RequestTests)
-    test_support.run_unittest(*tests)
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2_localnet.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2_localnet.py
deleted file mode 100644
index aef5111..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2_localnet.py
+++ /dev/null
@@ -1,539 +0,0 @@
-#!/usr/bin/env python
-
-import urlparse
-import urllib2
-import BaseHTTPServer
-import unittest
-import hashlib
-from test import test_support
-mimetools = test_support.import_module('mimetools', deprecated=True)
-threading = test_support.import_module('threading')
-
-# Loopback http server infrastructure
-
-class LoopbackHttpServer(BaseHTTPServer.HTTPServer):
-    """HTTP server w/ a few modifications that make it useful for
-    loopback testing purposes.
-    """
-
-    def __init__(self, server_address, RequestHandlerClass):
-        BaseHTTPServer.HTTPServer.__init__(self,
-                                           server_address,
-                                           RequestHandlerClass)
-
-        # Set the timeout of our listening socket really low so
-        # that we can stop the server easily.
-        self.socket.settimeout(1.0)
-
-    def get_request(self):
-        """BaseHTTPServer method, overridden."""
-
-        request, client_address = self.socket.accept()
-
-        # It's a loopback connection, so setting the timeout
-        # really low shouldn't affect anything, but should make
-        # deadlocks less likely to occur.
-        request.settimeout(10.0)
-
-        return (request, client_address)
-
-class LoopbackHttpServerThread(threading.Thread):
-    """Stoppable thread that runs a loopback http server."""
-
-    def __init__(self, request_handler):
-        threading.Thread.__init__(self)
-        self._stop = False
-        self.ready = threading.Event()
-        request_handler.protocol_version = "HTTP/1.0"
-        self.httpd = LoopbackHttpServer(('127.0.0.1', 0),
-                                        request_handler)
-        #print "Serving HTTP on %s port %s" % (self.httpd.server_name,
-        #                                      self.httpd.server_port)
-        self.port = self.httpd.server_port
-
-    def stop(self):
-        """Stops the webserver if it's currently running."""
-
-        # Set the stop flag.
-        self._stop = True
-
-        self.join()
-
-    def run(self):
-        self.ready.set()
-        while not self._stop:
-            self.httpd.handle_request()
-
-# Authentication infrastructure
-
-class DigestAuthHandler:
-    """Handler for performing digest authentication."""
-
-    def __init__(self):
-        self._request_num = 0
-        self._nonces = []
-        self._users = {}
-        self._realm_name = "Test Realm"
-        self._qop = "auth"
-
-    def set_qop(self, qop):
-        self._qop = qop
-
-    def set_users(self, users):
-        assert isinstance(users, dict)
-        self._users = users
-
-    def set_realm(self, realm):
-        self._realm_name = realm
-
-    def _generate_nonce(self):
-        self._request_num += 1
-        nonce = hashlib.md5(str(self._request_num)).hexdigest()
-        self._nonces.append(nonce)
-        return nonce
-
-    def _create_auth_dict(self, auth_str):
-        first_space_index = auth_str.find(" ")
-        auth_str = auth_str[first_space_index+1:]
-
-        parts = auth_str.split(",")
-
-        auth_dict = {}
-        for part in parts:
-            name, value = part.split("=")
-            name = name.strip()
-            if value[0] == '"' and value[-1] == '"':
-                value = value[1:-1]
-            else:
-                value = value.strip()
-            auth_dict[name] = value
-        return auth_dict
-
-    def _validate_auth(self, auth_dict, password, method, uri):
-        final_dict = {}
-        final_dict.update(auth_dict)
-        final_dict["password"] = password
-        final_dict["method"] = method
-        final_dict["uri"] = uri
-        HA1_str = "%(username)s:%(realm)s:%(password)s" % final_dict
-        HA1 = hashlib.md5(HA1_str).hexdigest()
-        HA2_str = "%(method)s:%(uri)s" % final_dict
-        HA2 = hashlib.md5(HA2_str).hexdigest()
-        final_dict["HA1"] = HA1
-        final_dict["HA2"] = HA2
-        response_str = "%(HA1)s:%(nonce)s:%(nc)s:" \
-                       "%(cnonce)s:%(qop)s:%(HA2)s" % final_dict
-        response = hashlib.md5(response_str).hexdigest()
-
-        return response == auth_dict["response"]
-
-    def _return_auth_challenge(self, request_handler):
-        request_handler.send_response(407, "Proxy Authentication Required")
-        request_handler.send_header("Content-Type", "text/html")
-        request_handler.send_header(
-            'Proxy-Authenticate', 'Digest realm="%s", '
-            'qop="%s",'
-            'nonce="%s", ' % \
-            (self._realm_name, self._qop, self._generate_nonce()))
-        # XXX: Not sure if we're supposed to add this next header or
-        # not.
-        #request_handler.send_header('Connection', 'close')
-        request_handler.end_headers()
-        request_handler.wfile.write("Proxy Authentication Required.")
-        return False
-
-    def handle_request(self, request_handler):
-        """Performs digest authentication on the given HTTP request
-        handler.  Returns True if authentication was successful, False
-        otherwise.
-
-        If no users have been set, then digest auth is effectively
-        disabled and this method will always return True.
-        """
-
-        if len(self._users) == 0:
-            return True
-
-        if 'Proxy-Authorization' not in request_handler.headers:
-            return self._return_auth_challenge(request_handler)
-        else:
-            auth_dict = self._create_auth_dict(
-                request_handler.headers['Proxy-Authorization']
-                )
-            if auth_dict["username"] in self._users:
-                password = self._users[ auth_dict["username"] ]
-            else:
-                return self._return_auth_challenge(request_handler)
-            if not auth_dict.get("nonce") in self._nonces:
-                return self._return_auth_challenge(request_handler)
-            else:
-                self._nonces.remove(auth_dict["nonce"])
-
-            auth_validated = False
-
-            # MSIE uses short_path in its validation, but Python's
-            # urllib2 uses the full path, so we're going to see if
-            # either of them works here.
-
-            for path in [request_handler.path, request_handler.short_path]:
-                if self._validate_auth(auth_dict,
-                                       password,
-                                       request_handler.command,
-                                       path):
-                    auth_validated = True
-
-            if not auth_validated:
-                return self._return_auth_challenge(request_handler)
-            return True
-
-# Proxy test infrastructure
-
-class FakeProxyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
-    """This is a 'fake proxy' that makes it look like the entire
-    internet has gone down due to a sudden zombie invasion.  It main
-    utility is in providing us with authentication support for
-    testing.
-    """
-
-    def __init__(self, digest_auth_handler, *args, **kwargs):
-        # This has to be set before calling our parent's __init__(), which will
-        # try to call do_GET().
-        self.digest_auth_handler = digest_auth_handler
-        BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
-
-    def log_message(self, format, *args):
-        # Uncomment the next line for debugging.
-        #sys.stderr.write(format % args)
-        pass
-
-    def do_GET(self):
-        (scm, netloc, path, params, query, fragment) = urlparse.urlparse(
-            self.path, 'http')
-        self.short_path = path
-        if self.digest_auth_handler.handle_request(self):
-            self.send_response(200, "OK")
-            self.send_header("Content-Type", "text/html")
-            self.end_headers()
-            self.wfile.write("You've reached %s!<BR>" % self.path)
-            self.wfile.write("Our apologies, but our server is down due to "
-                              "a sudden zombie invasion.")
-
-# Test cases
-
-class BaseTestCase(unittest.TestCase):
-    def setUp(self):
-        self._threads = test_support.threading_setup()
-
-    def tearDown(self):
-        test_support.threading_cleanup(*self._threads)
-
-
-class ProxyAuthTests(BaseTestCase):
-    URL = "http://localhost"
-
-    USER = "tester"
-    PASSWD = "test123"
-    REALM = "TestRealm"
-
-    def setUp(self):
-        super(ProxyAuthTests, self).setUp()
-        self.digest_auth_handler = DigestAuthHandler()
-        self.digest_auth_handler.set_users({self.USER: self.PASSWD})
-        self.digest_auth_handler.set_realm(self.REALM)
-        def create_fake_proxy_handler(*args, **kwargs):
-            return FakeProxyHandler(self.digest_auth_handler, *args, **kwargs)
-
-        self.server = LoopbackHttpServerThread(create_fake_proxy_handler)
-        self.server.start()
-        self.server.ready.wait()
-        proxy_url = "http://127.0.0.1:%d" % self.server.port
-        handler = urllib2.ProxyHandler({"http" : proxy_url})
-        self.proxy_digest_handler = urllib2.ProxyDigestAuthHandler()
-        self.opener = urllib2.build_opener(handler, self.proxy_digest_handler)
-
-    def tearDown(self):
-        self.server.stop()
-        super(ProxyAuthTests, self).tearDown()
-
-    def test_proxy_with_bad_password_raises_httperror(self):
-        self.proxy_digest_handler.add_password(self.REALM, self.URL,
-                                               self.USER, self.PASSWD+"bad")
-        self.digest_auth_handler.set_qop("auth")
-        self.assertRaises(urllib2.HTTPError,
-                          self.opener.open,
-                          self.URL)
-
-    def test_proxy_with_no_password_raises_httperror(self):
-        self.digest_auth_handler.set_qop("auth")
-        self.assertRaises(urllib2.HTTPError,
-                          self.opener.open,
-                          self.URL)
-
-    def test_proxy_qop_auth_works(self):
-        self.proxy_digest_handler.add_password(self.REALM, self.URL,
-                                               self.USER, self.PASSWD)
-        self.digest_auth_handler.set_qop("auth")
-        result = self.opener.open(self.URL)
-        while result.read():
-            pass
-        result.close()
-
-    def test_proxy_qop_auth_int_works_or_throws_urlerror(self):
-        self.proxy_digest_handler.add_password(self.REALM, self.URL,
-                                               self.USER, self.PASSWD)
-        self.digest_auth_handler.set_qop("auth-int")
-        try:
-            result = self.opener.open(self.URL)
-        except urllib2.URLError:
-            # It's okay if we don't support auth-int, but we certainly
-            # shouldn't receive any kind of exception here other than
-            # a URLError.
-            result = None
-        if result:
-            while result.read():
-                pass
-            result.close()
-
-
-def GetRequestHandler(responses):
-
-    class FakeHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
-
-        server_version = "TestHTTP/"
-        requests = []
-        headers_received = []
-        port = 80
-
-        def do_GET(self):
-            body = self.send_head()
-            if body:
-                self.wfile.write(body)
-
-        def do_POST(self):
-            content_length = self.headers['Content-Length']
-            post_data = self.rfile.read(int(content_length))
-            self.do_GET()
-            self.requests.append(post_data)
-
-        def send_head(self):
-            FakeHTTPRequestHandler.headers_received = self.headers
-            self.requests.append(self.path)
-            response_code, headers, body = responses.pop(0)
-
-            self.send_response(response_code)
-
-            for (header, value) in headers:
-                self.send_header(header, value % self.port)
-            if body:
-                self.send_header('Content-type', 'text/plain')
-                self.end_headers()
-                return body
-            self.end_headers()
-
-        def log_message(self, *args):
-            pass
-
-
-    return FakeHTTPRequestHandler
-
-
-class TestUrlopen(BaseTestCase):
-    """Tests urllib2.urlopen using the network.
-
-    These tests are not exhaustive.  Assuming that testing using files does a
-    good job overall of some of the basic interface features.  There are no
-    tests exercising the optional 'data' and 'proxies' arguments.  No tests
-    for transparent redirection have been written.
-    """
-
-    def start_server(self, responses):
-        handler = GetRequestHandler(responses)
-
-        self.server = LoopbackHttpServerThread(handler)
-        self.server.start()
-        self.server.ready.wait()
-        port = self.server.port
-        handler.port = port
-        return handler
-
-
-    def test_redirection(self):
-        expected_response = 'We got here...'
-        responses = [
-            (302, [('Location', 'http://localhost:%s/somewhere_else')], ''),
-            (200, [], expected_response)
-        ]
-
-        handler = self.start_server(responses)
-
-        try:
-            f = urllib2.urlopen('http://localhost:%s/' % handler.port)
-            data = f.read()
-            f.close()
-
-            self.assertEqual(data, expected_response)
-            self.assertEqual(handler.requests, ['/', '/somewhere_else'])
-        finally:
-            self.server.stop()
-
-
-    def test_404(self):
-        expected_response = 'Bad bad bad...'
-        handler = self.start_server([(404, [], expected_response)])
-
-        try:
-            try:
-                urllib2.urlopen('http://localhost:%s/weeble' % handler.port)
-            except urllib2.URLError, f:
-                pass
-            else:
-                self.fail('404 should raise URLError')
-
-            data = f.read()
-            f.close()
-
-            self.assertEqual(data, expected_response)
-            self.assertEqual(handler.requests, ['/weeble'])
-        finally:
-            self.server.stop()
-
-
-    def test_200(self):
-        expected_response = 'pycon 2008...'
-        handler = self.start_server([(200, [], expected_response)])
-
-        try:
-            f = urllib2.urlopen('http://localhost:%s/bizarre' % handler.port)
-            data = f.read()
-            f.close()
-
-            self.assertEqual(data, expected_response)
-            self.assertEqual(handler.requests, ['/bizarre'])
-        finally:
-            self.server.stop()
-
-    def test_200_with_parameters(self):
-        expected_response = 'pycon 2008...'
-        handler = self.start_server([(200, [], expected_response)])
-
-        try:
-            f = urllib2.urlopen('http://localhost:%s/bizarre' % handler.port, 'get=with_feeling')
-            data = f.read()
-            f.close()
-
-            self.assertEqual(data, expected_response)
-            self.assertEqual(handler.requests, ['/bizarre', 'get=with_feeling'])
-        finally:
-            self.server.stop()
-
-
-    def test_sending_headers(self):
-        handler = self.start_server([(200, [], "we don't care")])
-
-        try:
-            req = urllib2.Request("http://localhost:%s/" % handler.port,
-                                  headers={'Range': 'bytes=20-39'})
-            urllib2.urlopen(req)
-            self.assertEqual(handler.headers_received['Range'], 'bytes=20-39')
-        finally:
-            self.server.stop()
-
-    def test_basic(self):
-        handler = self.start_server([(200, [], "we don't care")])
-
-        try:
-            open_url = urllib2.urlopen("http://localhost:%s" % handler.port)
-            for attr in ("read", "close", "info", "geturl"):
-                self.assertTrue(hasattr(open_url, attr), "object returned from "
-                             "urlopen lacks the %s attribute" % attr)
-            try:
-                self.assertTrue(open_url.read(), "calling 'read' failed")
-            finally:
-                open_url.close()
-        finally:
-            self.server.stop()
-
-    def test_info(self):
-        handler = self.start_server([(200, [], "we don't care")])
-
-        try:
-            open_url = urllib2.urlopen("http://localhost:%s" % handler.port)
-            info_obj = open_url.info()
-            self.assertIsInstance(info_obj, mimetools.Message,
-                                  "object returned by 'info' is not an "
-                                  "instance of mimetools.Message")
-            self.assertEqual(info_obj.getsubtype(), "plain")
-        finally:
-            self.server.stop()
-
-    def test_geturl(self):
-        # Make sure same URL as opened is returned by geturl.
-        handler = self.start_server([(200, [], "we don't care")])
-
-        try:
-            open_url = urllib2.urlopen("http://localhost:%s" % handler.port)
-            url = open_url.geturl()
-            self.assertEqual(url, "http://localhost:%s" % handler.port)
-        finally:
-            self.server.stop()
-
-
-    def test_bad_address(self):
-        # Make sure proper exception is raised when connecting to a bogus
-        # address.
-        self.assertRaises(IOError,
-                          # Given that both VeriSign and various ISPs have in
-                          # the past or are presently hijacking various invalid
-                          # domain name requests in an attempt to boost traffic
-                          # to their own sites, finding a domain name to use
-                          # for this test is difficult.  RFC2606 leads one to
-                          # believe that '.invalid' should work, but experience
-                          # seemed to indicate otherwise.  Single character
-                          # TLDs are likely to remain invalid, so this seems to
-                          # be the best choice. The trailing '.' prevents a
-                          # related problem: The normal DNS resolver appends
-                          # the domain names from the search path if there is
-                          # no '.' the end and, and if one of those domains
-                          # implements a '*' rule a result is returned.
-                          # However, none of this will prevent the test from
-                          # failing if the ISP hijacks all invalid domain
-                          # requests.  The real solution would be to be able to
-                          # parameterize the framework with a mock resolver.
-                          urllib2.urlopen, "http://sadflkjsasf.i.nvali.d./")
-
-    def test_iteration(self):
-        expected_response = "pycon 2008..."
-        handler = self.start_server([(200, [], expected_response)])
-        try:
-            data = urllib2.urlopen("http://localhost:%s" % handler.port)
-            for line in data:
-                self.assertEqual(line, expected_response)
-        finally:
-            self.server.stop()
-
-    def ztest_line_iteration(self):
-        lines = ["We\n", "got\n", "here\n", "verylong " * 8192 + "\n"]
-        expected_response = "".join(lines)
-        handler = self.start_server([(200, [], expected_response)])
-        try:
-            data = urllib2.urlopen("http://localhost:%s" % handler.port)
-            for index, line in enumerate(data):
-                self.assertEqual(line, lines[index],
-                                 "Fetched line number %s doesn't match expected:\n"
-                                 "    Expected length was %s, got %s" %
-                                 (index, len(lines[index]), len(line)))
-        finally:
-            self.server.stop()
-        self.assertEqual(index + 1, len(lines))
-
-def test_main():
-    # We will NOT depend on the network resource flag
-    # (Lib/test/regrtest.py -u network) since all tests here are only
-    # localhost.  However, if this is a bad rationale, then uncomment
-    # the next line.
-    #test_support.requires("network")
-
-    test_support.run_unittest(ProxyAuthTests, TestUrlopen)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2net.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2net.py
deleted file mode 100644
index d30caed..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllib2net.py
+++ /dev/null
@@ -1,319 +0,0 @@
-#!/usr/bin/env python
-
-import unittest
-from test import test_support
-from test.test_urllib2 import sanepathname2url
-
-import socket
-import urllib2
-import os
-import sys
-
-TIMEOUT = 60  # seconds
-
-
-def _retry_thrice(func, exc, *args, **kwargs):
-    for i in range(3):
-        try:
-            return func(*args, **kwargs)
-        except exc, last_exc:
-            continue
-        except:
-            raise
-    raise last_exc
-
-def _wrap_with_retry_thrice(func, exc):
-    def wrapped(*args, **kwargs):
-        return _retry_thrice(func, exc, *args, **kwargs)
-    return wrapped
-
-# Connecting to remote hosts is flaky.  Make it more robust by retrying
-# the connection several times.
-_urlopen_with_retry = _wrap_with_retry_thrice(urllib2.urlopen, urllib2.URLError)
-
-
-class AuthTests(unittest.TestCase):
-    """Tests urllib2 authentication features."""
-
-## Disabled at the moment since there is no page under python.org which
-## could be used to HTTP authentication.
-#
-#    def test_basic_auth(self):
-#        import httplib
-#
-#        test_url = "http://www.python.org/test/test_urllib2/basic_auth"
-#        test_hostport = "www.python.org"
-#        test_realm = 'Test Realm'
-#        test_user = 'test.test_urllib2net'
-#        test_password = 'blah'
-#
-#        # failure
-#        try:
-#            _urlopen_with_retry(test_url)
-#        except urllib2.HTTPError, exc:
-#            self.assertEqual(exc.code, 401)
-#        else:
-#            self.fail("urlopen() should have failed with 401")
-#
-#        # success
-#        auth_handler = urllib2.HTTPBasicAuthHandler()
-#        auth_handler.add_password(test_realm, test_hostport,
-#                                  test_user, test_password)
-#        opener = urllib2.build_opener(auth_handler)
-#        f = opener.open('http://localhost/')
-#        response = _urlopen_with_retry("http://www.python.org/")
-#
-#        # The 'userinfo' URL component is deprecated by RFC 3986 for security
-#        # reasons, let's not implement it!  (it's already implemented for proxy
-#        # specification strings (that is, URLs or authorities specifying a
-#        # proxy), so we must keep that)
-#        self.assertRaises(httplib.InvalidURL,
-#                          urllib2.urlopen, "http://evil:thing@example.com")
-
-
-class CloseSocketTest(unittest.TestCase):
-
-    def test_close(self):
-        import httplib
-
-        # calling .close() on urllib2's response objects should close the
-        # underlying socket
-
-        # delve deep into response to fetch socket._socketobject
-        response = _urlopen_with_retry("http://www.python.org/")
-        abused_fileobject = response.fp
-        self.assertTrue(abused_fileobject.__class__ is socket._fileobject)
-        httpresponse = abused_fileobject._sock
-        self.assertTrue(httpresponse.__class__ is httplib.HTTPResponse)
-        fileobject = httpresponse.fp
-        self.assertTrue(fileobject.__class__ is socket._fileobject)
-
-        self.assertTrue(not fileobject.closed)
-        response.close()
-        self.assertTrue(fileobject.closed)
-
-class OtherNetworkTests(unittest.TestCase):
-    def setUp(self):
-        if 0:  # for debugging
-            import logging
-            logger = logging.getLogger("test_urllib2net")
-            logger.addHandler(logging.StreamHandler())
-
-    # XXX The rest of these tests aren't very good -- they don't check much.
-    # They do sometimes catch some major disasters, though.
-
-    def test_ftp(self):
-        urls = [
-            'ftp://ftp.kernel.org/pub/linux/kernel/README',
-            'ftp://ftp.kernel.org/pub/linux/kernel/non-existent-file',
-            #'ftp://ftp.kernel.org/pub/leenox/kernel/test',
-            'ftp://gatekeeper.research.compaq.com/pub/DEC/SRC'
-                '/research-reports/00README-Legal-Rules-Regs',
-            ]
-        self._test_urls(urls, self._extra_handlers())
-
-    def test_file(self):
-        TESTFN = test_support.TESTFN
-        f = open(TESTFN, 'w')
-        try:
-            f.write('hi there\n')
-            f.close()
-            urls = [
-                'file:'+sanepathname2url(os.path.abspath(TESTFN)),
-                ('file:///nonsensename/etc/passwd', None, urllib2.URLError),
-                ]
-            self._test_urls(urls, self._extra_handlers(), retry=True)
-        finally:
-            os.remove(TESTFN)
-
-    # XXX Following test depends on machine configurations that are internal
-    # to CNRI.  Need to set up a public server with the right authentication
-    # configuration for test purposes.
-
-##     def test_cnri(self):
-##         if socket.gethostname() == 'bitdiddle':
-##             localhost = 'bitdiddle.cnri.reston.va.us'
-##         elif socket.gethostname() == 'bitdiddle.concentric.net':
-##             localhost = 'localhost'
-##         else:
-##             localhost = None
-##         if localhost is not None:
-##             urls = [
-##                 'file://%s/etc/passwd' % localhost,
-##                 'http://%s/simple/' % localhost,
-##                 'http://%s/digest/' % localhost,
-##                 'http://%s/not/found.h' % localhost,
-##                 ]
-
-##             bauth = HTTPBasicAuthHandler()
-##             bauth.add_password('basic_test_realm', localhost, 'jhylton',
-##                                'password')
-##             dauth = HTTPDigestAuthHandler()
-##             dauth.add_password('digest_test_realm', localhost, 'jhylton',
-##                                'password')
-
-##             self._test_urls(urls, self._extra_handlers()+[bauth, dauth])
-
-    def test_urlwithfrag(self):
-        urlwith_frag = "http://docs.python.org/glossary.html#glossary"
-        with test_support.transient_internet(urlwith_frag):
-            req = urllib2.Request(urlwith_frag)
-            res = urllib2.urlopen(req)
-            self.assertEqual(res.geturl(),
-                    "http://docs.python.org/glossary.html#glossary")
-
-    def test_fileno(self):
-        req = urllib2.Request("http://www.python.org")
-        opener = urllib2.build_opener()
-        res = opener.open(req)
-        try:
-            res.fileno()
-        except AttributeError:
-            self.fail("HTTPResponse object should return a valid fileno")
-        finally:
-            res.close()
-
-    def test_custom_headers(self):
-        url = "http://www.example.com"
-        with test_support.transient_internet(url):
-            opener = urllib2.build_opener()
-            request = urllib2.Request(url)
-            self.assertFalse(request.header_items())
-            opener.open(request)
-            self.assertTrue(request.header_items())
-            self.assertTrue(request.has_header('User-agent'))
-            request.add_header('User-Agent','Test-Agent')
-            opener.open(request)
-            self.assertEqual(request.get_header('User-agent'),'Test-Agent')
-
-    def _test_urls(self, urls, handlers, retry=True):
-        import time
-        import logging
-        debug = logging.getLogger("test_urllib2").debug
-
-        urlopen = urllib2.build_opener(*handlers).open
-        if retry:
-            urlopen = _wrap_with_retry_thrice(urlopen, urllib2.URLError)
-
-        for url in urls:
-            if isinstance(url, tuple):
-                url, req, expected_err = url
-            else:
-                req = expected_err = None
-            with test_support.transient_internet(url):
-                debug(url)
-                try:
-                    f = urlopen(url, req, TIMEOUT)
-                except EnvironmentError as err:
-                    debug(err)
-                    if expected_err:
-                        msg = ("Didn't get expected error(s) %s for %s %s, got %s: %s" %
-                               (expected_err, url, req, type(err), err))
-                        self.assertIsInstance(err, expected_err, msg)
-                except urllib2.URLError as err:
-                    if isinstance(err[0], socket.timeout):
-                        print >>sys.stderr, "<timeout: %s>" % url
-                        continue
-                    else:
-                        raise
-                else:
-                    try:
-                        with test_support.transient_internet(url):
-                            buf = f.read()
-                            debug("read %d bytes" % len(buf))
-                    except socket.timeout:
-                        print >>sys.stderr, "<timeout: %s>" % url
-                    f.close()
-            debug("******** next url coming up...")
-            time.sleep(0.1)
-
-    def _extra_handlers(self):
-        handlers = []
-
-        cfh = urllib2.CacheFTPHandler()
-        cfh.setTimeout(1)
-        handlers.append(cfh)
-
-        return handlers
-
-
-class TimeoutTest(unittest.TestCase):
-    def test_http_basic(self):
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        url = "http://www.python.org"
-        with test_support.transient_internet(url, timeout=None):
-            u = _urlopen_with_retry(url)
-            self.assertTrue(u.fp._sock.fp._sock.gettimeout() is None)
-
-    def test_http_default_timeout(self):
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        url = "http://www.python.org"
-        with test_support.transient_internet(url):
-            socket.setdefaulttimeout(60)
-            try:
-                u = _urlopen_with_retry(url)
-            finally:
-                socket.setdefaulttimeout(None)
-            self.assertEqual(u.fp._sock.fp._sock.gettimeout(), 60)
-
-    def test_http_no_timeout(self):
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        url = "http://www.python.org"
-        with test_support.transient_internet(url):
-            socket.setdefaulttimeout(60)
-            try:
-                u = _urlopen_with_retry(url, timeout=None)
-            finally:
-                socket.setdefaulttimeout(None)
-            self.assertTrue(u.fp._sock.fp._sock.gettimeout() is None)
-
-    def test_http_timeout(self):
-        url = "http://www.python.org"
-        with test_support.transient_internet(url):
-            u = _urlopen_with_retry(url, timeout=120)
-            self.assertEqual(u.fp._sock.fp._sock.gettimeout(), 120)
-
-    FTP_HOST = "ftp://ftp.mirror.nl/pub/gnu/"
-
-    def test_ftp_basic(self):
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        with test_support.transient_internet(self.FTP_HOST, timeout=None):
-            u = _urlopen_with_retry(self.FTP_HOST)
-            self.assertTrue(u.fp.fp._sock.gettimeout() is None)
-
-    def test_ftp_default_timeout(self):
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        with test_support.transient_internet(self.FTP_HOST):
-            socket.setdefaulttimeout(60)
-            try:
-                u = _urlopen_with_retry(self.FTP_HOST)
-            finally:
-                socket.setdefaulttimeout(None)
-            self.assertEqual(u.fp.fp._sock.gettimeout(), 60)
-
-    def test_ftp_no_timeout(self):
-        self.assertTrue(socket.getdefaulttimeout() is None)
-        with test_support.transient_internet(self.FTP_HOST):
-            socket.setdefaulttimeout(60)
-            try:
-                u = _urlopen_with_retry(self.FTP_HOST, timeout=None)
-            finally:
-                socket.setdefaulttimeout(None)
-            self.assertTrue(u.fp.fp._sock.gettimeout() is None)
-
-    def test_ftp_timeout(self):
-        with test_support.transient_internet(self.FTP_HOST):
-            u = _urlopen_with_retry(self.FTP_HOST, timeout=60)
-            self.assertEqual(u.fp.fp._sock.gettimeout(), 60)
-
-
-def test_main():
-    test_support.requires("network")
-    test_support.run_unittest(AuthTests,
-                              OtherNetworkTests,
-                              CloseSocketTest,
-                              TimeoutTest,
-                              )
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllibnet.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllibnet.py
deleted file mode 100644
index cb99be0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urllibnet.py
+++ /dev/null
@@ -1,205 +0,0 @@
-#!/usr/bin/env python
-
-import unittest
-from test import test_support
-
-import socket
-import urllib
-import sys
-import os
-import time
-
-mimetools = test_support.import_module("mimetools", deprecated=True)
-
-
-def _open_with_retry(func, host, *args, **kwargs):
-    # Connecting to remote hosts is flaky.  Make it more robust
-    # by retrying the connection several times.
-    for i in range(3):
-        try:
-            return func(host, *args, **kwargs)
-        except IOError, last_exc:
-            continue
-        except:
-            raise
-    raise last_exc
-
-
-class URLTimeoutTest(unittest.TestCase):
-
-    TIMEOUT = 10.0
-
-    def setUp(self):
-        socket.setdefaulttimeout(self.TIMEOUT)
-
-    def tearDown(self):
-        socket.setdefaulttimeout(None)
-
-    def testURLread(self):
-        f = _open_with_retry(urllib.urlopen, "http://www.python.org/")
-        x = f.read()
-
-class urlopenNetworkTests(unittest.TestCase):
-    """Tests urllib.urlopen using the network.
-
-    These tests are not exhaustive.  Assuming that testing using files does a
-    good job overall of some of the basic interface features.  There are no
-    tests exercising the optional 'data' and 'proxies' arguments.  No tests
-    for transparent redirection have been written.
-
-    setUp is not used for always constructing a connection to
-    http://www.python.org/ since there a few tests that don't use that address
-    and making a connection is expensive enough to warrant minimizing unneeded
-    connections.
-
-    """
-
-    def urlopen(self, *args):
-        return _open_with_retry(urllib.urlopen, *args)
-
-    def test_basic(self):
-        # Simple test expected to pass.
-        open_url = self.urlopen("http://www.python.org/")
-        for attr in ("read", "readline", "readlines", "fileno", "close",
-                     "info", "geturl"):
-            self.assertTrue(hasattr(open_url, attr), "object returned from "
-                            "urlopen lacks the %s attribute" % attr)
-        try:
-            self.assertTrue(open_url.read(), "calling 'read' failed")
-        finally:
-            open_url.close()
-
-    def test_readlines(self):
-        # Test both readline and readlines.
-        open_url = self.urlopen("http://www.python.org/")
-        try:
-            self.assertIsInstance(open_url.readline(), basestring,
-                                  "readline did not return a string")
-            self.assertIsInstance(open_url.readlines(), list,
-                                  "readlines did not return a list")
-        finally:
-            open_url.close()
-
-    def test_info(self):
-        # Test 'info'.
-        open_url = self.urlopen("http://www.python.org/")
-        try:
-            info_obj = open_url.info()
-        finally:
-            open_url.close()
-            self.assertIsInstance(info_obj, mimetools.Message,
-                                  "object returned by 'info' is not an "
-                                  "instance of mimetools.Message")
-            self.assertEqual(info_obj.getsubtype(), "html")
-
-    def test_geturl(self):
-        # Make sure same URL as opened is returned by geturl.
-        URL = "http://www.python.org/"
-        open_url = self.urlopen(URL)
-        try:
-            gotten_url = open_url.geturl()
-        finally:
-            open_url.close()
-        self.assertEqual(gotten_url, URL)
-
-    def test_getcode(self):
-        # test getcode() with the fancy opener to get 404 error codes
-        URL = "http://www.python.org/XXXinvalidXXX"
-        open_url = urllib.FancyURLopener().open(URL)
-        try:
-            code = open_url.getcode()
-        finally:
-            open_url.close()
-        self.assertEqual(code, 404)
-
-    def test_fileno(self):
-        if (sys.platform in ('win32',) or
-                not hasattr(os, 'fdopen')):
-            # On Windows, socket handles are not file descriptors; this
-            # test can't pass on Windows.
-            return
-        # Make sure fd returned by fileno is valid.
-        open_url = self.urlopen("http://www.python.org/")
-        fd = open_url.fileno()
-        FILE = os.fdopen(fd)
-        try:
-            self.assertTrue(FILE.read(), "reading from file created using fd "
-                                      "returned by fileno failed")
-        finally:
-            FILE.close()
-
-    def test_bad_address(self):
-        # Make sure proper exception is raised when connecting to a bogus
-        # address.
-        self.assertRaises(IOError,
-                          # SF patch 809915:  In Sep 2003, VeriSign started
-                          # highjacking invalid .com and .net addresses to
-                          # boost traffic to their own site.  This test
-                          # started failing then.  One hopes the .invalid
-                          # domain will be spared to serve its defined
-                          # purpose.
-                          # urllib.urlopen, "http://www.sadflkjsasadf.com/")
-                          urllib.urlopen, "http://sadflkjsasf.i.nvali.d/")
-
-class urlretrieveNetworkTests(unittest.TestCase):
-    """Tests urllib.urlretrieve using the network."""
-
-    def urlretrieve(self, *args):
-        return _open_with_retry(urllib.urlretrieve, *args)
-
-    def test_basic(self):
-        # Test basic functionality.
-        file_location,info = self.urlretrieve("http://www.python.org/")
-        self.assertTrue(os.path.exists(file_location), "file location returned by"
-                        " urlretrieve is not a valid path")
-        FILE = file(file_location)
-        try:
-            self.assertTrue(FILE.read(), "reading from the file location returned"
-                         " by urlretrieve failed")
-        finally:
-            FILE.close()
-            os.unlink(file_location)
-
-    def test_specified_path(self):
-        # Make sure that specifying the location of the file to write to works.
-        file_location,info = self.urlretrieve("http://www.python.org/",
-                                              test_support.TESTFN)
-        self.assertEqual(file_location, test_support.TESTFN)
-        self.assertTrue(os.path.exists(file_location))
-        FILE = file(file_location)
-        try:
-            self.assertTrue(FILE.read(), "reading from temporary file failed")
-        finally:
-            FILE.close()
-            os.unlink(file_location)
-
-    def test_header(self):
-        # Make sure header returned as 2nd value from urlretrieve is good.
-        file_location, header = self.urlretrieve("http://www.python.org/")
-        os.unlink(file_location)
-        self.assertIsInstance(header, mimetools.Message,
-                              "header is not an instance of mimetools.Message")
-
-    def test_data_header(self):
-        logo = "http://www.python.org/community/logos/python-logo-master-v3-TM.png"
-        file_location, fileheaders = self.urlretrieve(logo)
-        os.unlink(file_location)
-        datevalue = fileheaders.getheader('Date')
-        dateformat = '%a, %d %b %Y %H:%M:%S GMT'
-        try:
-            time.strptime(datevalue, dateformat)
-        except ValueError:
-            self.fail('Date value not in %r format', dateformat)
-
-
-
-def test_main():
-    test_support.requires('network')
-    with test_support.check_py3k_warnings(
-            ("urllib.urlopen.. has been removed", DeprecationWarning)):
-        test_support.run_unittest(URLTimeoutTest,
-                                  urlopenNetworkTests,
-                                  urlretrieveNetworkTests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urlparse.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urlparse.py
deleted file mode 100644
index 6d81740..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_urlparse.py
+++ /dev/null
@@ -1,513 +0,0 @@
-#! /usr/bin/env python
-
-from test import test_support
-import unittest
-import urlparse
-
-RFC1808_BASE = "http://a/b/c/d;p?q#f"
-RFC2396_BASE = "http://a/b/c/d;p?q"
-RFC3986_BASE = 'http://a/b/c/d;p?q'
-SIMPLE_BASE  = 'http://a/b/c/d'
-
-# A list of test cases.  Each test case is a a two-tuple that contains
-# a string with the query and a dictionary with the expected result.
-
-parse_qsl_test_cases = [
-    ("", []),
-    ("&", []),
-    ("&&", []),
-    ("=", [('', '')]),
-    ("=a", [('', 'a')]),
-    ("a", [('a', '')]),
-    ("a=", [('a', '')]),
-    ("a=", [('a', '')]),
-    ("&a=b", [('a', 'b')]),
-    ("a=a+b&b=b+c", [('a', 'a b'), ('b', 'b c')]),
-    ("a=1&a=2", [('a', '1'), ('a', '2')]),
-]
-
-class UrlParseTestCase(unittest.TestCase):
-
-    def checkRoundtrips(self, url, parsed, split):
-        result = urlparse.urlparse(url)
-        self.assertEqual(result, parsed)
-        t = (result.scheme, result.netloc, result.path,
-             result.params, result.query, result.fragment)
-        self.assertEqual(t, parsed)
-        # put it back together and it should be the same
-        result2 = urlparse.urlunparse(result)
-        self.assertEqual(result2, url)
-        self.assertEqual(result2, result.geturl())
-
-        # the result of geturl() is a fixpoint; we can always parse it
-        # again to get the same result:
-        result3 = urlparse.urlparse(result.geturl())
-        self.assertEqual(result3.geturl(), result.geturl())
-        self.assertEqual(result3,          result)
-        self.assertEqual(result3.scheme,   result.scheme)
-        self.assertEqual(result3.netloc,   result.netloc)
-        self.assertEqual(result3.path,     result.path)
-        self.assertEqual(result3.params,   result.params)
-        self.assertEqual(result3.query,    result.query)
-        self.assertEqual(result3.fragment, result.fragment)
-        self.assertEqual(result3.username, result.username)
-        self.assertEqual(result3.password, result.password)
-        self.assertEqual(result3.hostname, result.hostname)
-        self.assertEqual(result3.port,     result.port)
-
-        # check the roundtrip using urlsplit() as well
-        result = urlparse.urlsplit(url)
-        self.assertEqual(result, split)
-        t = (result.scheme, result.netloc, result.path,
-             result.query, result.fragment)
-        self.assertEqual(t, split)
-        result2 = urlparse.urlunsplit(result)
-        self.assertEqual(result2, url)
-        self.assertEqual(result2, result.geturl())
-
-        # check the fixpoint property of re-parsing the result of geturl()
-        result3 = urlparse.urlsplit(result.geturl())
-        self.assertEqual(result3.geturl(), result.geturl())
-        self.assertEqual(result3,          result)
-        self.assertEqual(result3.scheme,   result.scheme)
-        self.assertEqual(result3.netloc,   result.netloc)
-        self.assertEqual(result3.path,     result.path)
-        self.assertEqual(result3.query,    result.query)
-        self.assertEqual(result3.fragment, result.fragment)
-        self.assertEqual(result3.username, result.username)
-        self.assertEqual(result3.password, result.password)
-        self.assertEqual(result3.hostname, result.hostname)
-        self.assertEqual(result3.port,     result.port)
-
-    def test_qsl(self):
-        for orig, expect in parse_qsl_test_cases:
-            result = urlparse.parse_qsl(orig, keep_blank_values=True)
-            self.assertEqual(result, expect, "Error parsing %s" % repr(orig))
-
-    def test_roundtrips(self):
-        testcases = [
-            ('file:///tmp/junk.txt',
-             ('file', '', '/tmp/junk.txt', '', '', ''),
-             ('file', '', '/tmp/junk.txt', '', '')),
-            ('imap://mail.python.org/mbox1',
-             ('imap', 'mail.python.org', '/mbox1', '', '', ''),
-             ('imap', 'mail.python.org', '/mbox1', '', '')),
-            ('mms://wms.sys.hinet.net/cts/Drama/09006251100.asf',
-             ('mms', 'wms.sys.hinet.net', '/cts/Drama/09006251100.asf',
-              '', '', ''),
-             ('mms', 'wms.sys.hinet.net', '/cts/Drama/09006251100.asf',
-              '', '')),
-            ('nfs://server/path/to/file.txt',
-             ('nfs', 'server', '/path/to/file.txt',  '', '', ''),
-             ('nfs', 'server', '/path/to/file.txt', '', '')),
-            ('svn+ssh://svn.zope.org/repos/main/ZConfig/trunk/',
-             ('svn+ssh', 'svn.zope.org', '/repos/main/ZConfig/trunk/',
-              '', '', ''),
-             ('svn+ssh', 'svn.zope.org', '/repos/main/ZConfig/trunk/',
-              '', '')),
-            ('git+ssh://git@github.com/user/project.git',
-            ('git+ssh', 'git@github.com','/user/project.git',
-             '','',''),
-            ('git+ssh', 'git@github.com','/user/project.git',
-             '', ''))
-            ]
-        for url, parsed, split in testcases:
-            self.checkRoundtrips(url, parsed, split)
-
-    def test_http_roundtrips(self):
-        # urlparse.urlsplit treats 'http:' as an optimized special case,
-        # so we test both 'http:' and 'https:' in all the following.
-        # Three cheers for white box knowledge!
-        testcases = [
-            ('://www.python.org',
-             ('www.python.org', '', '', '', ''),
-             ('www.python.org', '', '', '')),
-            ('://www.python.org#abc',
-             ('www.python.org', '', '', '', 'abc'),
-             ('www.python.org', '', '', 'abc')),
-            ('://www.python.org?q=abc',
-             ('www.python.org', '', '', 'q=abc', ''),
-             ('www.python.org', '', 'q=abc', '')),
-            ('://www.python.org/#abc',
-             ('www.python.org', '/', '', '', 'abc'),
-             ('www.python.org', '/', '', 'abc')),
-            ('://a/b/c/d;p?q#f',
-             ('a', '/b/c/d', 'p', 'q', 'f'),
-             ('a', '/b/c/d;p', 'q', 'f')),
-            ]
-        for scheme in ('http', 'https'):
-            for url, parsed, split in testcases:
-                url = scheme + url
-                parsed = (scheme,) + parsed
-                split = (scheme,) + split
-                self.checkRoundtrips(url, parsed, split)
-
-    def checkJoin(self, base, relurl, expected):
-        self.assertEqual(urlparse.urljoin(base, relurl), expected,
-                         (base, relurl, expected))
-
-    def test_unparse_parse(self):
-        for u in ['Python', './Python','x-newscheme://foo.com/stuff','x://y','x:/y','x:/','/',]:
-            self.assertEqual(urlparse.urlunsplit(urlparse.urlsplit(u)), u)
-            self.assertEqual(urlparse.urlunparse(urlparse.urlparse(u)), u)
-
-    def test_RFC1808(self):
-        # "normal" cases from RFC 1808:
-        self.checkJoin(RFC1808_BASE, 'g:h', 'g:h')
-        self.checkJoin(RFC1808_BASE, 'g', 'http://a/b/c/g')
-        self.checkJoin(RFC1808_BASE, './g', 'http://a/b/c/g')
-        self.checkJoin(RFC1808_BASE, 'g/', 'http://a/b/c/g/')
-        self.checkJoin(RFC1808_BASE, '/g', 'http://a/g')
-        self.checkJoin(RFC1808_BASE, '//g', 'http://g')
-        self.checkJoin(RFC1808_BASE, 'g?y', 'http://a/b/c/g?y')
-        self.checkJoin(RFC1808_BASE, 'g?y/./x', 'http://a/b/c/g?y/./x')
-        self.checkJoin(RFC1808_BASE, '#s', 'http://a/b/c/d;p?q#s')
-        self.checkJoin(RFC1808_BASE, 'g#s', 'http://a/b/c/g#s')
-        self.checkJoin(RFC1808_BASE, 'g#s/./x', 'http://a/b/c/g#s/./x')
-        self.checkJoin(RFC1808_BASE, 'g?y#s', 'http://a/b/c/g?y#s')
-        self.checkJoin(RFC1808_BASE, 'g;x', 'http://a/b/c/g;x')
-        self.checkJoin(RFC1808_BASE, 'g;x?y#s', 'http://a/b/c/g;x?y#s')
-        self.checkJoin(RFC1808_BASE, '.', 'http://a/b/c/')
-        self.checkJoin(RFC1808_BASE, './', 'http://a/b/c/')
-        self.checkJoin(RFC1808_BASE, '..', 'http://a/b/')
-        self.checkJoin(RFC1808_BASE, '../', 'http://a/b/')
-        self.checkJoin(RFC1808_BASE, '../g', 'http://a/b/g')
-        self.checkJoin(RFC1808_BASE, '../..', 'http://a/')
-        self.checkJoin(RFC1808_BASE, '../../', 'http://a/')
-        self.checkJoin(RFC1808_BASE, '../../g', 'http://a/g')
-
-        # "abnormal" cases from RFC 1808:
-        self.checkJoin(RFC1808_BASE, '', 'http://a/b/c/d;p?q#f')
-        self.checkJoin(RFC1808_BASE, '../../../g', 'http://a/../g')
-        self.checkJoin(RFC1808_BASE, '../../../../g', 'http://a/../../g')
-        self.checkJoin(RFC1808_BASE, '/./g', 'http://a/./g')
-        self.checkJoin(RFC1808_BASE, '/../g', 'http://a/../g')
-        self.checkJoin(RFC1808_BASE, 'g.', 'http://a/b/c/g.')
-        self.checkJoin(RFC1808_BASE, '.g', 'http://a/b/c/.g')
-        self.checkJoin(RFC1808_BASE, 'g..', 'http://a/b/c/g..')
-        self.checkJoin(RFC1808_BASE, '..g', 'http://a/b/c/..g')
-        self.checkJoin(RFC1808_BASE, './../g', 'http://a/b/g')
-        self.checkJoin(RFC1808_BASE, './g/.', 'http://a/b/c/g/')
-        self.checkJoin(RFC1808_BASE, 'g/./h', 'http://a/b/c/g/h')
-        self.checkJoin(RFC1808_BASE, 'g/../h', 'http://a/b/c/h')
-
-        # RFC 1808 and RFC 1630 disagree on these (according to RFC 1808),
-        # so we'll not actually run these tests (which expect 1808 behavior).
-        #self.checkJoin(RFC1808_BASE, 'http:g', 'http:g')
-        #self.checkJoin(RFC1808_BASE, 'http:', 'http:')
-
-    def test_RFC2368(self):
-        # Issue 11467: path that starts with a number is not parsed correctly
-        self.assertEqual(urlparse.urlparse('mailto:1337@example.org'),
-                ('mailto', '', '1337@example.org', '', '', ''))
-
-    def test_RFC2396(self):
-        # cases from RFC 2396
-        self.checkJoin(RFC2396_BASE, 'g:h', 'g:h')
-        self.checkJoin(RFC2396_BASE, 'g', 'http://a/b/c/g')
-        self.checkJoin(RFC2396_BASE, './g', 'http://a/b/c/g')
-        self.checkJoin(RFC2396_BASE, 'g/', 'http://a/b/c/g/')
-        self.checkJoin(RFC2396_BASE, '/g', 'http://a/g')
-        self.checkJoin(RFC2396_BASE, '//g', 'http://g')
-        self.checkJoin(RFC2396_BASE, 'g?y', 'http://a/b/c/g?y')
-        self.checkJoin(RFC2396_BASE, '#s', 'http://a/b/c/d;p?q#s')
-        self.checkJoin(RFC2396_BASE, 'g#s', 'http://a/b/c/g#s')
-        self.checkJoin(RFC2396_BASE, 'g?y#s', 'http://a/b/c/g?y#s')
-        self.checkJoin(RFC2396_BASE, 'g;x', 'http://a/b/c/g;x')
-        self.checkJoin(RFC2396_BASE, 'g;x?y#s', 'http://a/b/c/g;x?y#s')
-        self.checkJoin(RFC2396_BASE, '.', 'http://a/b/c/')
-        self.checkJoin(RFC2396_BASE, './', 'http://a/b/c/')
-        self.checkJoin(RFC2396_BASE, '..', 'http://a/b/')
-        self.checkJoin(RFC2396_BASE, '../', 'http://a/b/')
-        self.checkJoin(RFC2396_BASE, '../g', 'http://a/b/g')
-        self.checkJoin(RFC2396_BASE, '../..', 'http://a/')
-        self.checkJoin(RFC2396_BASE, '../../', 'http://a/')
-        self.checkJoin(RFC2396_BASE, '../../g', 'http://a/g')
-        self.checkJoin(RFC2396_BASE, '', RFC2396_BASE)
-        self.checkJoin(RFC2396_BASE, '../../../g', 'http://a/../g')
-        self.checkJoin(RFC2396_BASE, '../../../../g', 'http://a/../../g')
-        self.checkJoin(RFC2396_BASE, '/./g', 'http://a/./g')
-        self.checkJoin(RFC2396_BASE, '/../g', 'http://a/../g')
-        self.checkJoin(RFC2396_BASE, 'g.', 'http://a/b/c/g.')
-        self.checkJoin(RFC2396_BASE, '.g', 'http://a/b/c/.g')
-        self.checkJoin(RFC2396_BASE, 'g..', 'http://a/b/c/g..')
-        self.checkJoin(RFC2396_BASE, '..g', 'http://a/b/c/..g')
-        self.checkJoin(RFC2396_BASE, './../g', 'http://a/b/g')
-        self.checkJoin(RFC2396_BASE, './g/.', 'http://a/b/c/g/')
-        self.checkJoin(RFC2396_BASE, 'g/./h', 'http://a/b/c/g/h')
-        self.checkJoin(RFC2396_BASE, 'g/../h', 'http://a/b/c/h')
-        self.checkJoin(RFC2396_BASE, 'g;x=1/./y', 'http://a/b/c/g;x=1/y')
-        self.checkJoin(RFC2396_BASE, 'g;x=1/../y', 'http://a/b/c/y')
-        self.checkJoin(RFC2396_BASE, 'g?y/./x', 'http://a/b/c/g?y/./x')
-        self.checkJoin(RFC2396_BASE, 'g?y/../x', 'http://a/b/c/g?y/../x')
-        self.checkJoin(RFC2396_BASE, 'g#s/./x', 'http://a/b/c/g#s/./x')
-        self.checkJoin(RFC2396_BASE, 'g#s/../x', 'http://a/b/c/g#s/../x')
-
-    def test_RFC3986(self):
-        # Test cases from RFC3986
-        self.checkJoin(RFC3986_BASE, '?y','http://a/b/c/d;p?y')
-        self.checkJoin(RFC2396_BASE, ';x', 'http://a/b/c/;x')
-        self.checkJoin(RFC3986_BASE, 'g:h','g:h')
-        self.checkJoin(RFC3986_BASE, 'g','http://a/b/c/g')
-        self.checkJoin(RFC3986_BASE, './g','http://a/b/c/g')
-        self.checkJoin(RFC3986_BASE, 'g/','http://a/b/c/g/')
-        self.checkJoin(RFC3986_BASE, '/g','http://a/g')
-        self.checkJoin(RFC3986_BASE, '//g','http://g')
-        self.checkJoin(RFC3986_BASE, '?y','http://a/b/c/d;p?y')
-        self.checkJoin(RFC3986_BASE, 'g?y','http://a/b/c/g?y')
-        self.checkJoin(RFC3986_BASE, '#s','http://a/b/c/d;p?q#s')
-        self.checkJoin(RFC3986_BASE, 'g#s','http://a/b/c/g#s')
-        self.checkJoin(RFC3986_BASE, 'g?y#s','http://a/b/c/g?y#s')
-        self.checkJoin(RFC3986_BASE, ';x','http://a/b/c/;x')
-        self.checkJoin(RFC3986_BASE, 'g;x','http://a/b/c/g;x')
-        self.checkJoin(RFC3986_BASE, 'g;x?y#s','http://a/b/c/g;x?y#s')
-        self.checkJoin(RFC3986_BASE, '','http://a/b/c/d;p?q')
-        self.checkJoin(RFC3986_BASE, '.','http://a/b/c/')
-        self.checkJoin(RFC3986_BASE, './','http://a/b/c/')
-        self.checkJoin(RFC3986_BASE, '..','http://a/b/')
-        self.checkJoin(RFC3986_BASE, '../','http://a/b/')
-        self.checkJoin(RFC3986_BASE, '../g','http://a/b/g')
-        self.checkJoin(RFC3986_BASE, '../..','http://a/')
-        self.checkJoin(RFC3986_BASE, '../../','http://a/')
-        self.checkJoin(RFC3986_BASE, '../../g','http://a/g')
-
-        #Abnormal Examples
-
-        # The 'abnormal scenarios' are incompatible with RFC2986 parsing
-        # Tests are here for reference.
-
-        #self.checkJoin(RFC3986_BASE, '../../../g','http://a/g')
-        #self.checkJoin(RFC3986_BASE, '../../../../g','http://a/g')
-        #self.checkJoin(RFC3986_BASE, '/./g','http://a/g')
-        #self.checkJoin(RFC3986_BASE, '/../g','http://a/g')
-
-        self.checkJoin(RFC3986_BASE, 'g.','http://a/b/c/g.')
-        self.checkJoin(RFC3986_BASE, '.g','http://a/b/c/.g')
-        self.checkJoin(RFC3986_BASE, 'g..','http://a/b/c/g..')
-        self.checkJoin(RFC3986_BASE, '..g','http://a/b/c/..g')
-        self.checkJoin(RFC3986_BASE, './../g','http://a/b/g')
-        self.checkJoin(RFC3986_BASE, './g/.','http://a/b/c/g/')
-        self.checkJoin(RFC3986_BASE, 'g/./h','http://a/b/c/g/h')
-        self.checkJoin(RFC3986_BASE, 'g/../h','http://a/b/c/h')
-        self.checkJoin(RFC3986_BASE, 'g;x=1/./y','http://a/b/c/g;x=1/y')
-        self.checkJoin(RFC3986_BASE, 'g;x=1/../y','http://a/b/c/y')
-        self.checkJoin(RFC3986_BASE, 'g?y/./x','http://a/b/c/g?y/./x')
-        self.checkJoin(RFC3986_BASE, 'g?y/../x','http://a/b/c/g?y/../x')
-        self.checkJoin(RFC3986_BASE, 'g#s/./x','http://a/b/c/g#s/./x')
-        self.checkJoin(RFC3986_BASE, 'g#s/../x','http://a/b/c/g#s/../x')
-        #self.checkJoin(RFC3986_BASE, 'http:g','http:g') # strict parser
-        self.checkJoin(RFC3986_BASE, 'http:g','http://a/b/c/g') # relaxed parser
-
-        # Test for issue9721
-        self.checkJoin('http://a/b/c/de', ';x','http://a/b/c/;x')
-
-    def test_urljoins(self):
-        self.checkJoin(SIMPLE_BASE, 'g:h','g:h')
-        self.checkJoin(SIMPLE_BASE, 'http:g','http://a/b/c/g')
-        self.checkJoin(SIMPLE_BASE, 'http:','http://a/b/c/d')
-        self.checkJoin(SIMPLE_BASE, 'g','http://a/b/c/g')
-        self.checkJoin(SIMPLE_BASE, './g','http://a/b/c/g')
-        self.checkJoin(SIMPLE_BASE, 'g/','http://a/b/c/g/')
-        self.checkJoin(SIMPLE_BASE, '/g','http://a/g')
-        self.checkJoin(SIMPLE_BASE, '//g','http://g')
-        self.checkJoin(SIMPLE_BASE, '?y','http://a/b/c/d?y')
-        self.checkJoin(SIMPLE_BASE, 'g?y','http://a/b/c/g?y')
-        self.checkJoin(SIMPLE_BASE, 'g?y/./x','http://a/b/c/g?y/./x')
-        self.checkJoin(SIMPLE_BASE, '.','http://a/b/c/')
-        self.checkJoin(SIMPLE_BASE, './','http://a/b/c/')
-        self.checkJoin(SIMPLE_BASE, '..','http://a/b/')
-        self.checkJoin(SIMPLE_BASE, '../','http://a/b/')
-        self.checkJoin(SIMPLE_BASE, '../g','http://a/b/g')
-        self.checkJoin(SIMPLE_BASE, '../..','http://a/')
-        self.checkJoin(SIMPLE_BASE, '../../g','http://a/g')
-        self.checkJoin(SIMPLE_BASE, '../../../g','http://a/../g')
-        self.checkJoin(SIMPLE_BASE, './../g','http://a/b/g')
-        self.checkJoin(SIMPLE_BASE, './g/.','http://a/b/c/g/')
-        self.checkJoin(SIMPLE_BASE, '/./g','http://a/./g')
-        self.checkJoin(SIMPLE_BASE, 'g/./h','http://a/b/c/g/h')
-        self.checkJoin(SIMPLE_BASE, 'g/../h','http://a/b/c/h')
-        self.checkJoin(SIMPLE_BASE, 'http:g','http://a/b/c/g')
-        self.checkJoin(SIMPLE_BASE, 'http:','http://a/b/c/d')
-        self.checkJoin(SIMPLE_BASE, 'http:?y','http://a/b/c/d?y')
-        self.checkJoin(SIMPLE_BASE, 'http:g?y','http://a/b/c/g?y')
-        self.checkJoin(SIMPLE_BASE, 'http:g?y/./x','http://a/b/c/g?y/./x')
-
-    def test_RFC2732(self):
-        for url, hostname, port in [
-            ('http://Test.python.org:5432/foo/', 'test.python.org', 5432),
-            ('http://12.34.56.78:5432/foo/', '12.34.56.78', 5432),
-            ('http://[::1]:5432/foo/', '::1', 5432),
-            ('http://[dead:beef::1]:5432/foo/', 'dead:beef::1', 5432),
-            ('http://[dead:beef::]:5432/foo/', 'dead:beef::', 5432),
-            ('http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]:5432/foo/',
-             'dead:beef:cafe:5417:affe:8fa3:deaf:feed', 5432),
-            ('http://[::12.34.56.78]:5432/foo/', '::12.34.56.78', 5432),
-            ('http://[::ffff:12.34.56.78]:5432/foo/',
-             '::ffff:12.34.56.78', 5432),
-            ('http://Test.python.org/foo/', 'test.python.org', None),
-            ('http://12.34.56.78/foo/', '12.34.56.78', None),
-            ('http://[::1]/foo/', '::1', None),
-            ('http://[dead:beef::1]/foo/', 'dead:beef::1', None),
-            ('http://[dead:beef::]/foo/', 'dead:beef::', None),
-            ('http://[dead:beef:cafe:5417:affe:8FA3:deaf:feed]/foo/',
-             'dead:beef:cafe:5417:affe:8fa3:deaf:feed', None),
-            ('http://[::12.34.56.78]/foo/', '::12.34.56.78', None),
-            ('http://[::ffff:12.34.56.78]/foo/',
-             '::ffff:12.34.56.78', None),
-            ]:
-            urlparsed = urlparse.urlparse(url)
-            self.assertEqual((urlparsed.hostname, urlparsed.port) , (hostname, port))
-
-        for invalid_url in [
-                'http://::12.34.56.78]/',
-                'http://[::1/foo/',
-                'ftp://[::1/foo/bad]/bad',
-                'http://[::1/foo/bad]/bad',
-                'http://[::ffff:12.34.56.78']:
-            self.assertRaises(ValueError, urlparse.urlparse, invalid_url)
-
-    def test_urldefrag(self):
-        for url, defrag, frag in [
-            ('http://python.org#frag', 'http://python.org', 'frag'),
-            ('http://python.org', 'http://python.org', ''),
-            ('http://python.org/#frag', 'http://python.org/', 'frag'),
-            ('http://python.org/', 'http://python.org/', ''),
-            ('http://python.org/?q#frag', 'http://python.org/?q', 'frag'),
-            ('http://python.org/?q', 'http://python.org/?q', ''),
-            ('http://python.org/p#frag', 'http://python.org/p', 'frag'),
-            ('http://python.org/p?q', 'http://python.org/p?q', ''),
-            (RFC1808_BASE, 'http://a/b/c/d;p?q', 'f'),
-            (RFC2396_BASE, 'http://a/b/c/d;p?q', ''),
-            ]:
-            self.assertEqual(urlparse.urldefrag(url), (defrag, frag))
-
-    def test_urlsplit_attributes(self):
-        url = "HTTP://WWW.PYTHON.ORG/doc/#frag"
-        p = urlparse.urlsplit(url)
-        self.assertEqual(p.scheme, "http")
-        self.assertEqual(p.netloc, "WWW.PYTHON.ORG")
-        self.assertEqual(p.path, "/doc/")
-        self.assertEqual(p.query, "")
-        self.assertEqual(p.fragment, "frag")
-        self.assertEqual(p.username, None)
-        self.assertEqual(p.password, None)
-        self.assertEqual(p.hostname, "www.python.org")
-        self.assertEqual(p.port, None)
-        # geturl() won't return exactly the original URL in this case
-        # since the scheme is always case-normalized
-        #self.assertEqual(p.geturl(), url)
-
-        url = "http://User:Pass@www.python.org:080/doc/?query=yes#frag"
-        p = urlparse.urlsplit(url)
-        self.assertEqual(p.scheme, "http")
-        self.assertEqual(p.netloc, "User:Pass@www.python.org:080")
-        self.assertEqual(p.path, "/doc/")
-        self.assertEqual(p.query, "query=yes")
-        self.assertEqual(p.fragment, "frag")
-        self.assertEqual(p.username, "User")
-        self.assertEqual(p.password, "Pass")
-        self.assertEqual(p.hostname, "www.python.org")
-        self.assertEqual(p.port, 80)
-        self.assertEqual(p.geturl(), url)
-
-        # Addressing issue1698, which suggests Username can contain
-        # "@" characters.  Though not RFC compliant, many ftp sites allow
-        # and request email addresses as usernames.
-
-        url = "http://User@example.com:Pass@www.python.org:080/doc/?query=yes#frag"
-        p = urlparse.urlsplit(url)
-        self.assertEqual(p.scheme, "http")
-        self.assertEqual(p.netloc, "User@example.com:Pass@www.python.org:080")
-        self.assertEqual(p.path, "/doc/")
-        self.assertEqual(p.query, "query=yes")
-        self.assertEqual(p.fragment, "frag")
-        self.assertEqual(p.username, "User@example.com")
-        self.assertEqual(p.password, "Pass")
-        self.assertEqual(p.hostname, "www.python.org")
-        self.assertEqual(p.port, 80)
-        self.assertEqual(p.geturl(), url)
-
-
-    def test_attributes_bad_port(self):
-        """Check handling of non-integer ports."""
-        p = urlparse.urlsplit("http://www.example.net:foo")
-        self.assertEqual(p.netloc, "www.example.net:foo")
-        self.assertRaises(ValueError, lambda: p.port)
-
-        p = urlparse.urlparse("http://www.example.net:foo")
-        self.assertEqual(p.netloc, "www.example.net:foo")
-        self.assertRaises(ValueError, lambda: p.port)
-
-    def test_attributes_without_netloc(self):
-        # This example is straight from RFC 3261.  It looks like it
-        # should allow the username, hostname, and port to be filled
-        # in, but doesn't.  Since it's a URI and doesn't use the
-        # scheme://netloc syntax, the netloc and related attributes
-        # should be left empty.
-        uri = "sip:alice@atlanta.com;maddr=239.255.255.1;ttl=15"
-        p = urlparse.urlsplit(uri)
-        self.assertEqual(p.netloc, "")
-        self.assertEqual(p.username, None)
-        self.assertEqual(p.password, None)
-        self.assertEqual(p.hostname, None)
-        self.assertEqual(p.port, None)
-        self.assertEqual(p.geturl(), uri)
-
-        p = urlparse.urlparse(uri)
-        self.assertEqual(p.netloc, "")
-        self.assertEqual(p.username, None)
-        self.assertEqual(p.password, None)
-        self.assertEqual(p.hostname, None)
-        self.assertEqual(p.port, None)
-        self.assertEqual(p.geturl(), uri)
-
-    def test_caching(self):
-        # Test case for bug #1313119
-        uri = "http://example.com/doc/"
-        unicode_uri = unicode(uri)
-
-        urlparse.urlparse(unicode_uri)
-        p = urlparse.urlparse(uri)
-        self.assertEqual(type(p.scheme), type(uri))
-        self.assertEqual(type(p.hostname), type(uri))
-        self.assertEqual(type(p.path), type(uri))
-
-    def test_noslash(self):
-        # Issue 1637: http://foo.com?query is legal
-        self.assertEqual(urlparse.urlparse("http://example.com?blahblah=/foo"),
-                         ('http', 'example.com', '', '', 'blahblah=/foo', ''))
-
-    def test_anyscheme(self):
-        # Issue 7904: s3://foo.com/stuff has netloc "foo.com".
-        self.assertEqual(urlparse.urlparse("s3://foo.com/stuff"),
-                         ('s3','foo.com','/stuff','','',''))
-        self.assertEqual(urlparse.urlparse("x-newscheme://foo.com/stuff"),
-                         ('x-newscheme','foo.com','/stuff','','',''))
-
-    def test_withoutscheme(self):
-        # Test urlparse without scheme
-        # Issue 754016: urlparse goes wrong with IP:port without scheme
-        # RFC 1808 specifies that netloc should start with //, urlparse expects
-        # the same, otherwise it classifies the portion of url as path.
-        self.assertEqual(urlparse.urlparse("path"),
-                ('','','path','','',''))
-        self.assertEqual(urlparse.urlparse("//www.python.org:80"),
-                ('','www.python.org:80','','','',''))
-        self.assertEqual(urlparse.urlparse("http://www.python.org:80"),
-                ('http','www.python.org:80','','','',''))
-
-    def test_portseparator(self):
-        # Issue 754016 makes changes for port separator ':' from scheme separator
-        self.assertEqual(urlparse.urlparse("path:80"),
-                ('','','path:80','','',''))
-        self.assertEqual(urlparse.urlparse("http:"),('http','','','','',''))
-        self.assertEqual(urlparse.urlparse("https:"),('https','','','','',''))
-        self.assertEqual(urlparse.urlparse("http://www.python.org:80"),
-                ('http','www.python.org:80','','','',''))
-
-
-def test_main():
-    test_support.run_unittest(UrlParseTestCase)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userdict.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userdict.py
deleted file mode 100644
index 95984bd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userdict.py
+++ /dev/null
@@ -1,350 +0,0 @@
-# Check every path through every method of UserDict
-
-from test import test_support, mapping_tests
-import UserDict
-
-d0 = {}
-d1 = {"one": 1}
-d2 = {"one": 1, "two": 2}
-d3 = {"one": 1, "two": 3, "three": 5}
-d4 = {"one": None, "two": None}
-d5 = {"one": 1, "two": 1}
-
-class UserDictTest(mapping_tests.TestHashMappingProtocol):
-    type2test = UserDict.IterableUserDict
-
-    def test_all(self):
-        # Test constructors
-        u = UserDict.UserDict()
-        u0 = UserDict.UserDict(d0)
-        u1 = UserDict.UserDict(d1)
-        u2 = UserDict.IterableUserDict(d2)
-
-        uu = UserDict.UserDict(u)
-        uu0 = UserDict.UserDict(u0)
-        uu1 = UserDict.UserDict(u1)
-        uu2 = UserDict.UserDict(u2)
-
-        # keyword arg constructor
-        self.assertEqual(UserDict.UserDict(one=1, two=2), d2)
-        # item sequence constructor
-        self.assertEqual(UserDict.UserDict([('one',1), ('two',2)]), d2)
-        self.assertEqual(UserDict.UserDict(dict=[('one',1), ('two',2)]), d2)
-        # both together
-        self.assertEqual(UserDict.UserDict([('one',1), ('two',2)], two=3, three=5), d3)
-
-        # alternate constructor
-        self.assertEqual(UserDict.UserDict.fromkeys('one two'.split()), d4)
-        self.assertEqual(UserDict.UserDict().fromkeys('one two'.split()), d4)
-        self.assertEqual(UserDict.UserDict.fromkeys('one two'.split(), 1), d5)
-        self.assertEqual(UserDict.UserDict().fromkeys('one two'.split(), 1), d5)
-        self.assertTrue(u1.fromkeys('one two'.split()) is not u1)
-        self.assertIsInstance(u1.fromkeys('one two'.split()), UserDict.UserDict)
-        self.assertIsInstance(u2.fromkeys('one two'.split()), UserDict.IterableUserDict)
-
-        # Test __repr__
-        self.assertEqual(str(u0), str(d0))
-        self.assertEqual(repr(u1), repr(d1))
-        self.assertEqual(repr(u2), repr(d2))
-
-        # Test __cmp__ and __len__
-        all = [d0, d1, d2, u, u0, u1, u2, uu, uu0, uu1, uu2]
-        for a in all:
-            for b in all:
-                self.assertEqual(cmp(a, b), cmp(len(a), len(b)))
-
-        # Test __getitem__
-        self.assertEqual(u2["one"], 1)
-        self.assertRaises(KeyError, u1.__getitem__, "two")
-
-        # Test __setitem__
-        u3 = UserDict.UserDict(u2)
-        u3["two"] = 2
-        u3["three"] = 3
-
-        # Test __delitem__
-        del u3["three"]
-        self.assertRaises(KeyError, u3.__delitem__, "three")
-
-        # Test clear
-        u3.clear()
-        self.assertEqual(u3, {})
-
-        # Test copy()
-        u2a = u2.copy()
-        self.assertEqual(u2a, u2)
-        u2b = UserDict.UserDict(x=42, y=23)
-        u2c = u2b.copy() # making a copy of a UserDict is special cased
-        self.assertEqual(u2b, u2c)
-
-        class MyUserDict(UserDict.UserDict):
-            def display(self): print self
-
-        m2 = MyUserDict(u2)
-        m2a = m2.copy()
-        self.assertEqual(m2a, m2)
-
-        # SF bug #476616 -- copy() of UserDict subclass shared data
-        m2['foo'] = 'bar'
-        self.assertNotEqual(m2a, m2)
-
-        # Test keys, items, values
-        self.assertEqual(u2.keys(), d2.keys())
-        self.assertEqual(u2.items(), d2.items())
-        self.assertEqual(u2.values(), d2.values())
-
-        # Test has_key and "in".
-        for i in u2.keys():
-            self.assertIn(i, u2)
-            self.assertEqual(i in u1, i in d1)
-            self.assertEqual(i in u0, i in d0)
-            with test_support.check_py3k_warnings():
-                self.assertTrue(u2.has_key(i))
-                self.assertEqual(u1.has_key(i), d1.has_key(i))
-                self.assertEqual(u0.has_key(i), d0.has_key(i))
-
-        # Test update
-        t = UserDict.UserDict()
-        t.update(u2)
-        self.assertEqual(t, u2)
-        class Items:
-            def items(self):
-                return (("x", 42), ("y", 23))
-        t = UserDict.UserDict()
-        t.update(Items())
-        self.assertEqual(t, {"x": 42, "y": 23})
-
-        # Test get
-        for i in u2.keys():
-            self.assertEqual(u2.get(i), u2[i])
-            self.assertEqual(u1.get(i), d1.get(i))
-            self.assertEqual(u0.get(i), d0.get(i))
-
-        # Test "in" iteration.
-        for i in xrange(20):
-            u2[i] = str(i)
-        ikeys = []
-        for k in u2:
-            ikeys.append(k)
-        keys = u2.keys()
-        self.assertEqual(set(ikeys), set(keys))
-
-        # Test setdefault
-        t = UserDict.UserDict()
-        self.assertEqual(t.setdefault("x", 42), 42)
-        self.assertTrue(t.has_key("x"))
-        self.assertEqual(t.setdefault("x", 23), 42)
-
-        # Test pop
-        t = UserDict.UserDict(x=42)
-        self.assertEqual(t.pop("x"), 42)
-        self.assertRaises(KeyError, t.pop, "x")
-        self.assertEqual(t.pop("x", 1), 1)
-        t["x"] = 42
-        self.assertEqual(t.pop("x", 1), 42)
-
-        # Test popitem
-        t = UserDict.UserDict(x=42)
-        self.assertEqual(t.popitem(), ("x", 42))
-        self.assertRaises(KeyError, t.popitem)
-
-    def test_missing(self):
-        # Make sure UserDict doesn't have a __missing__ method
-        self.assertEqual(hasattr(UserDict, "__missing__"), False)
-        # Test several cases:
-        # (D) subclass defines __missing__ method returning a value
-        # (E) subclass defines __missing__ method raising RuntimeError
-        # (F) subclass sets __missing__ instance variable (no effect)
-        # (G) subclass doesn't define __missing__ at a all
-        class D(UserDict.UserDict):
-            def __missing__(self, key):
-                return 42
-        d = D({1: 2, 3: 4})
-        self.assertEqual(d[1], 2)
-        self.assertEqual(d[3], 4)
-        self.assertNotIn(2, d)
-        self.assertNotIn(2, d.keys())
-        self.assertEqual(d[2], 42)
-        class E(UserDict.UserDict):
-            def __missing__(self, key):
-                raise RuntimeError(key)
-        e = E()
-        try:
-            e[42]
-        except RuntimeError, err:
-            self.assertEqual(err.args, (42,))
-        else:
-            self.fail("e[42] didn't raise RuntimeError")
-        class F(UserDict.UserDict):
-            def __init__(self):
-                # An instance variable __missing__ should have no effect
-                self.__missing__ = lambda key: None
-                UserDict.UserDict.__init__(self)
-        f = F()
-        try:
-            f[42]
-        except KeyError, err:
-            self.assertEqual(err.args, (42,))
-        else:
-            self.fail("f[42] didn't raise KeyError")
-        class G(UserDict.UserDict):
-            pass
-        g = G()
-        try:
-            g[42]
-        except KeyError, err:
-            self.assertEqual(err.args, (42,))
-        else:
-            self.fail("g[42] didn't raise KeyError")
-
-##########################
-# Test Dict Mixin
-
-class SeqDict(UserDict.DictMixin):
-    """Dictionary lookalike implemented with lists.
-
-    Used to test and demonstrate DictMixin
-    """
-    def __init__(self, other=None, **kwargs):
-        self.keylist = []
-        self.valuelist = []
-        if other is not None:
-            for (key, value) in other:
-                self[key] = value
-        for (key, value) in kwargs.iteritems():
-            self[key] = value
-    def __getitem__(self, key):
-        try:
-            i = self.keylist.index(key)
-        except ValueError:
-            raise KeyError
-        return self.valuelist[i]
-    def __setitem__(self, key, value):
-        try:
-            i = self.keylist.index(key)
-            self.valuelist[i] = value
-        except ValueError:
-            self.keylist.append(key)
-            self.valuelist.append(value)
-    def __delitem__(self, key):
-        try:
-            i = self.keylist.index(key)
-        except ValueError:
-            raise KeyError
-        self.keylist.pop(i)
-        self.valuelist.pop(i)
-    def keys(self):
-        return list(self.keylist)
-    def copy(self):
-        d = self.__class__()
-        for key, value in self.iteritems():
-            d[key] = value
-        return d
-    @classmethod
-    def fromkeys(cls, keys, value=None):
-        d = cls()
-        for key in keys:
-            d[key] = value
-        return d
-
-class UserDictMixinTest(mapping_tests.TestMappingProtocol):
-    type2test = SeqDict
-
-    def test_all(self):
-        ## Setup test and verify working of the test class
-
-        # check init
-        s = SeqDict()
-
-        # exercise setitem
-        s[10] = 'ten'
-        s[20] = 'twenty'
-        s[30] = 'thirty'
-
-        # exercise delitem
-        del s[20]
-        # check getitem and setitem
-        self.assertEqual(s[10], 'ten')
-        # check keys() and delitem
-        self.assertEqual(s.keys(), [10, 30])
-
-        ## Now, test the DictMixin methods one by one
-        # has_key
-        self.assertTrue(s.has_key(10))
-        self.assertTrue(not s.has_key(20))
-
-        # __contains__
-        self.assertIn(10, s)
-        self.assertNotIn(20, s)
-
-        # __iter__
-        self.assertEqual([k for k in s], [10, 30])
-
-        # __len__
-        self.assertEqual(len(s), 2)
-
-        # iteritems
-        self.assertEqual(list(s.iteritems()), [(10,'ten'), (30, 'thirty')])
-
-        # iterkeys
-        self.assertEqual(list(s.iterkeys()), [10, 30])
-
-        # itervalues
-        self.assertEqual(list(s.itervalues()), ['ten', 'thirty'])
-
-        # values
-        self.assertEqual(s.values(), ['ten', 'thirty'])
-
-        # items
-        self.assertEqual(s.items(), [(10,'ten'), (30, 'thirty')])
-
-        # get
-        self.assertEqual(s.get(10), 'ten')
-        self.assertEqual(s.get(15,'fifteen'), 'fifteen')
-        self.assertEqual(s.get(15), None)
-
-        # setdefault
-        self.assertEqual(s.setdefault(40, 'forty'), 'forty')
-        self.assertEqual(s.setdefault(10, 'null'), 'ten')
-        del s[40]
-
-        # pop
-        self.assertEqual(s.pop(10), 'ten')
-        self.assertNotIn(10, s)
-        s[10] = 'ten'
-        self.assertEqual(s.pop("x", 1), 1)
-        s["x"] = 42
-        self.assertEqual(s.pop("x", 1), 42)
-
-        # popitem
-        k, v = s.popitem()
-        self.assertNotIn(k, s)
-        s[k] = v
-
-        # clear
-        s.clear()
-        self.assertEqual(len(s), 0)
-
-        # empty popitem
-        self.assertRaises(KeyError, s.popitem)
-
-        # update
-        s.update({10: 'ten', 20:'twenty'})
-        self.assertEqual(s[10], 'ten')
-        self.assertEqual(s[20], 'twenty')
-
-        # cmp
-        self.assertEqual(s, {10: 'ten', 20:'twenty'})
-        t = SeqDict()
-        t[20] = 'twenty'
-        t[10] = 'ten'
-        self.assertEqual(s, t)
-
-def test_main():
-    test_support.run_unittest(
-        UserDictTest,
-        UserDictMixinTest
-    )
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userlist.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userlist.py
deleted file mode 100644
index 76156b1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userlist.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Check every path through every method of UserList
-
-from UserList import UserList
-from test import test_support, list_tests
-
-class UserListTest(list_tests.CommonTest):
-    type2test = UserList
-
-    def test_getslice(self):
-        super(UserListTest, self).test_getslice()
-        l = [0, 1, 2, 3, 4]
-        u = self.type2test(l)
-        for i in range(-3, 6):
-            self.assertEqual(u[:i], l[:i])
-            self.assertEqual(u[i:], l[i:])
-            for j in xrange(-3, 6):
-                self.assertEqual(u[i:j], l[i:j])
-
-    def test_add_specials(self):
-        u = UserList("spam")
-        u2 = u + "eggs"
-        self.assertEqual(u2, list("spameggs"))
-
-    def test_radd_specials(self):
-        u = UserList("eggs")
-        u2 = "spam" + u
-        self.assertEqual(u2, list("spameggs"))
-        u2 = u.__radd__(UserList("spam"))
-        self.assertEqual(u2, list("spameggs"))
-
-    def test_iadd(self):
-        super(UserListTest, self).test_iadd()
-        u = [0, 1]
-        u += UserList([0, 1])
-        self.assertEqual(u, [0, 1, 0, 1])
-
-    def test_mixedcmp(self):
-        u = self.type2test([0, 1])
-        self.assertEqual(u, [0, 1])
-        self.assertNotEqual(u, [0])
-        self.assertNotEqual(u, [0, 2])
-
-    def test_mixedadd(self):
-        u = self.type2test([0, 1])
-        self.assertEqual(u + [], u)
-        self.assertEqual(u + [2], [0, 1, 2])
-
-    def test_getitemoverwriteiter(self):
-        # Verify that __getitem__ overrides *are* recognized by __iter__
-        class T(self.type2test):
-            def __getitem__(self, key):
-                return str(key) + '!!!'
-        self.assertEqual(iter(T((1,2))).next(), "0!!!")
-
-def test_main():
-    with test_support.check_py3k_warnings(
-            (".+__(get|set|del)slice__ has been removed", DeprecationWarning)):
-        test_support.run_unittest(UserListTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userstring.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userstring.py
deleted file mode 100644
index a670d97..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_userstring.py
+++ /dev/null
@@ -1,147 +0,0 @@
-#!/usr/bin/env python
-# UserString is a wrapper around the native builtin string type.
-# UserString instances should behave similar to builtin string objects.
-
-import string
-from test import test_support, string_tests
-from UserString import UserString, MutableString
-import warnings
-
-class UserStringTest(
-    string_tests.CommonTest,
-    string_tests.MixinStrUnicodeUserStringTest,
-    string_tests.MixinStrStringUserStringTest,
-    string_tests.MixinStrUserStringTest
-    ):
-
-    type2test = UserString
-
-    # Overwrite the three testing methods, because UserString
-    # can't cope with arguments propagated to UserString
-    # (and we don't test with subclasses)
-    def checkequal(self, result, object, methodname, *args):
-        result = self.fixtype(result)
-        object = self.fixtype(object)
-        # we don't fix the arguments, because UserString can't cope with it
-        realresult = getattr(object, methodname)(*args)
-        self.assertEqual(
-            result,
-            realresult
-        )
-
-    def checkraises(self, exc, object, methodname, *args):
-        object = self.fixtype(object)
-        # we don't fix the arguments, because UserString can't cope with it
-        self.assertRaises(
-            exc,
-            getattr(object, methodname),
-            *args
-        )
-
-    def checkcall(self, object, methodname, *args):
-        object = self.fixtype(object)
-        # we don't fix the arguments, because UserString can't cope with it
-        getattr(object, methodname)(*args)
-
-class MutableStringTest(UserStringTest):
-    type2test = MutableString
-
-    # MutableStrings can be hashed => deactivate test
-    def test_hash(self):
-        pass
-
-    def test_setitem(self):
-        s = self.type2test("foo")
-        self.assertRaises(IndexError, s.__setitem__, -4, "bar")
-        self.assertRaises(IndexError, s.__setitem__, 3, "bar")
-        s[-1] = "bar"
-        self.assertEqual(s, "fobar")
-        s[0] = "bar"
-        self.assertEqual(s, "barobar")
-
-    def test_delitem(self):
-        s = self.type2test("foo")
-        self.assertRaises(IndexError, s.__delitem__, -4)
-        self.assertRaises(IndexError, s.__delitem__, 3)
-        del s[-1]
-        self.assertEqual(s, "fo")
-        del s[0]
-        self.assertEqual(s, "o")
-        del s[0]
-        self.assertEqual(s, "")
-
-    def test_setslice(self):
-        s = self.type2test("foo")
-        s[:] = "bar"
-        self.assertEqual(s, "bar")
-        s[1:2] = "foo"
-        self.assertEqual(s, "bfoor")
-        s[1:-1] = UserString("a")
-        self.assertEqual(s, "bar")
-        s[0:10] = 42
-        self.assertEqual(s, "42")
-
-    def test_delslice(self):
-        s = self.type2test("foobar")
-        del s[3:10]
-        self.assertEqual(s, "foo")
-        del s[-1:10]
-        self.assertEqual(s, "fo")
-
-    def test_extended_set_del_slice(self):
-        indices = (0, None, 1, 3, 19, 100, -1, -2, -31, -100)
-        orig = string.ascii_letters + string.digits
-        for start in indices:
-            for stop in indices:
-                # Use indices[1:] when MutableString can handle real
-                # extended slices
-                for step in (None, 1, -1):
-                    s = self.type2test(orig)
-                    L = list(orig)
-                    # Make sure we have a slice of exactly the right length,
-                    # but with (hopefully) different data.
-                    data = L[start:stop:step]
-                    data.reverse()
-                    L[start:stop:step] = data
-                    s[start:stop:step] = "".join(data)
-                    self.assertEqual(s, "".join(L))
-
-                    del L[start:stop:step]
-                    del s[start:stop:step]
-                    self.assertEqual(s, "".join(L))
-
-    def test_immutable(self):
-        s = self.type2test("foobar")
-        s2 = s.immutable()
-        self.assertEqual(s, s2)
-        self.assertIsInstance(s2, UserString)
-
-    def test_iadd(self):
-        s = self.type2test("foo")
-        s += "bar"
-        self.assertEqual(s, "foobar")
-        s += UserString("baz")
-        self.assertEqual(s, "foobarbaz")
-        s += 42
-        self.assertEqual(s, "foobarbaz42")
-
-    def test_imul(self):
-        s = self.type2test("foo")
-        s *= 1
-        self.assertEqual(s, "foo")
-        s *= 2
-        self.assertEqual(s, "foofoo")
-        s *= -1
-        self.assertEqual(s, "")
-
-def test_main():
-    with warnings.catch_warnings():
-        warnings.filterwarnings("ignore", ".*MutableString has been removed",
-                                DeprecationWarning)
-        warnings.filterwarnings("ignore",
-                                ".*__(get|set|del)slice__ has been removed",
-                                DeprecationWarning)
-        test_support.run_unittest(UserStringTest, MutableStringTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_uu.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_uu.py
deleted file mode 100644
index d04f09e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_uu.py
+++ /dev/null
@@ -1,201 +0,0 @@
-"""
-Tests for uu module.
-Nick Mathewson
-"""
-
-import unittest
-from test import test_support
-
-import sys, os, uu, cStringIO
-import uu
-
-plaintext = "The smooth-scaled python crept over the sleeping dog\n"
-
-encodedtext = """\
-M5&AE('-M;V]T:\"US8V%L960@<'ET:&]N(&-R97!T(&]V97(@=&AE('-L965P
-(:6YG(&1O9PH """
-
-encodedtextwrapped = "begin %03o %s\n" + encodedtext.replace("%", "%%") + "\n \nend\n"
-
-class UUTest(unittest.TestCase):
-
-    def test_encode(self):
-        inp = cStringIO.StringIO(plaintext)
-        out = cStringIO.StringIO()
-        uu.encode(inp, out, "t1")
-        self.assertEqual(out.getvalue(), encodedtextwrapped % (0666, "t1"))
-        inp = cStringIO.StringIO(plaintext)
-        out = cStringIO.StringIO()
-        uu.encode(inp, out, "t1", 0644)
-        self.assertEqual(out.getvalue(), encodedtextwrapped % (0644, "t1"))
-
-    def test_decode(self):
-        inp = cStringIO.StringIO(encodedtextwrapped % (0666, "t1"))
-        out = cStringIO.StringIO()
-        uu.decode(inp, out)
-        self.assertEqual(out.getvalue(), plaintext)
-        inp = cStringIO.StringIO(
-            "UUencoded files may contain many lines,\n" +
-            "even some that have 'begin' in them.\n" +
-            encodedtextwrapped % (0666, "t1")
-        )
-        out = cStringIO.StringIO()
-        uu.decode(inp, out)
-        self.assertEqual(out.getvalue(), plaintext)
-
-    def test_truncatedinput(self):
-        inp = cStringIO.StringIO("begin 644 t1\n" + encodedtext)
-        out = cStringIO.StringIO()
-        try:
-            uu.decode(inp, out)
-            self.fail("No exception thrown")
-        except uu.Error, e:
-            self.assertEqual(str(e), "Truncated input file")
-
-    def test_missingbegin(self):
-        inp = cStringIO.StringIO("")
-        out = cStringIO.StringIO()
-        try:
-            uu.decode(inp, out)
-            self.fail("No exception thrown")
-        except uu.Error, e:
-            self.assertEqual(str(e), "No valid begin line found in input file")
-
-class UUStdIOTest(unittest.TestCase):
-
-    def setUp(self):
-        self.stdin = sys.stdin
-        self.stdout = sys.stdout
-
-    def tearDown(self):
-        sys.stdin = self.stdin
-        sys.stdout = self.stdout
-
-    def test_encode(self):
-        sys.stdin = cStringIO.StringIO(plaintext)
-        sys.stdout = cStringIO.StringIO()
-        uu.encode("-", "-", "t1", 0666)
-        self.assertEqual(
-            sys.stdout.getvalue(),
-            encodedtextwrapped % (0666, "t1")
-        )
-
-    def test_decode(self):
-        sys.stdin = cStringIO.StringIO(encodedtextwrapped % (0666, "t1"))
-        sys.stdout = cStringIO.StringIO()
-        uu.decode("-", "-")
-        self.assertEqual(sys.stdout.getvalue(), plaintext)
-
-class UUFileTest(unittest.TestCase):
-
-    def _kill(self, f):
-        # close and remove file
-        try:
-            f.close()
-        except (SystemExit, KeyboardInterrupt):
-            raise
-        except:
-            pass
-        try:
-            os.unlink(f.name)
-        except (SystemExit, KeyboardInterrupt):
-            raise
-        except:
-            pass
-
-    def setUp(self):
-        self.tmpin  = test_support.TESTFN + "i"
-        self.tmpout = test_support.TESTFN + "o"
-
-    def tearDown(self):
-        del self.tmpin
-        del self.tmpout
-
-    def test_encode(self):
-        fin = fout = None
-        try:
-            test_support.unlink(self.tmpin)
-            fin = open(self.tmpin, 'wb')
-            fin.write(plaintext)
-            fin.close()
-
-            fin = open(self.tmpin, 'rb')
-            fout = open(self.tmpout, 'w')
-            uu.encode(fin, fout, self.tmpin, mode=0644)
-            fin.close()
-            fout.close()
-
-            fout = open(self.tmpout, 'r')
-            s = fout.read()
-            fout.close()
-            self.assertEqual(s, encodedtextwrapped % (0644, self.tmpin))
-
-            # in_file and out_file as filenames
-            uu.encode(self.tmpin, self.tmpout, self.tmpin, mode=0644)
-            fout = open(self.tmpout, 'r')
-            s = fout.read()
-            fout.close()
-            self.assertEqual(s, encodedtextwrapped % (0644, self.tmpin))
-
-        finally:
-            self._kill(fin)
-            self._kill(fout)
-
-    def test_decode(self):
-        f = None
-        try:
-            test_support.unlink(self.tmpin)
-            f = open(self.tmpin, 'w')
-            f.write(encodedtextwrapped % (0644, self.tmpout))
-            f.close()
-
-            f = open(self.tmpin, 'r')
-            uu.decode(f)
-            f.close()
-
-            f = open(self.tmpout, 'r')
-            s = f.read()
-            f.close()
-            self.assertEqual(s, plaintext)
-            # XXX is there an xp way to verify the mode?
-        finally:
-            self._kill(f)
-
-    def test_decode_filename(self):
-        f = None
-        try:
-            test_support.unlink(self.tmpin)
-            f = open(self.tmpin, 'w')
-            f.write(encodedtextwrapped % (0644, self.tmpout))
-            f.close()
-
-            uu.decode(self.tmpin)
-
-            f = open(self.tmpout, 'r')
-            s = f.read()
-            f.close()
-            self.assertEqual(s, plaintext)
-        finally:
-            self._kill(f)
-
-    def test_decodetwice(self):
-        # Verify that decode() will refuse to overwrite an existing file
-        f = None
-        try:
-            f = cStringIO.StringIO(encodedtextwrapped % (0644, self.tmpout))
-
-            f = open(self.tmpin, 'r')
-            uu.decode(f)
-            f.close()
-
-            f = open(self.tmpin, 'r')
-            self.assertRaises(uu.Error, uu.decode, f)
-            f.close()
-        finally:
-            self._kill(f)
-
-def test_main():
-    test_support.run_unittest(UUTest, UUStdIOTest, UUFileTest)
-
-if __name__=="__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_uuid.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_uuid.py
deleted file mode 100644
index 113b5ab..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_uuid.py
+++ /dev/null
@@ -1,482 +0,0 @@
-from unittest import TestCase
-from test import test_support
-import uuid
-
-def importable(name):
-    try:
-        __import__(name)
-        return True
-    except:
-        return False
-
-class TestUUID(TestCase):
-    last_node = None
-    source2node = {}
-
-    def test_UUID(self):
-        equal = self.assertEqual
-        ascending = []
-        for (string, curly, hex, bytes, bytes_le, fields, integer, urn,
-             time, clock_seq, variant, version) in [
-            ('00000000-0000-0000-0000-000000000000',
-             '{00000000-0000-0000-0000-000000000000}',
-             '00000000000000000000000000000000',
-             '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-             '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-             (0, 0, 0, 0, 0, 0),
-             0,
-             'urn:uuid:00000000-0000-0000-0000-000000000000',
-             0, 0, uuid.RESERVED_NCS, None),
-            ('00010203-0405-0607-0809-0a0b0c0d0e0f',
-             '{00010203-0405-0607-0809-0a0b0c0d0e0f}',
-             '000102030405060708090a0b0c0d0e0f',
-             '\0\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\x0d\x0e\x0f',
-             '\x03\x02\x01\0\x05\x04\x07\x06\x08\t\n\x0b\x0c\x0d\x0e\x0f',
-             (0x00010203L, 0x0405, 0x0607, 8, 9, 0x0a0b0c0d0e0fL),
-             0x000102030405060708090a0b0c0d0e0fL,
-             'urn:uuid:00010203-0405-0607-0809-0a0b0c0d0e0f',
-             0x607040500010203L, 0x809, uuid.RESERVED_NCS, None),
-            ('02d9e6d5-9467-382e-8f9b-9300a64ac3cd',
-             '{02d9e6d5-9467-382e-8f9b-9300a64ac3cd}',
-             '02d9e6d59467382e8f9b9300a64ac3cd',
-             '\x02\xd9\xe6\xd5\x94\x67\x38\x2e\x8f\x9b\x93\x00\xa6\x4a\xc3\xcd',
-             '\xd5\xe6\xd9\x02\x67\x94\x2e\x38\x8f\x9b\x93\x00\xa6\x4a\xc3\xcd',
-             (0x02d9e6d5L, 0x9467, 0x382e, 0x8f, 0x9b, 0x9300a64ac3cdL),
-             0x02d9e6d59467382e8f9b9300a64ac3cdL,
-             'urn:uuid:02d9e6d5-9467-382e-8f9b-9300a64ac3cd',
-             0x82e946702d9e6d5L, 0xf9b, uuid.RFC_4122, 3),
-            ('12345678-1234-5678-1234-567812345678',
-             '{12345678-1234-5678-1234-567812345678}',
-             '12345678123456781234567812345678',
-             '\x12\x34\x56\x78'*4,
-             '\x78\x56\x34\x12\x34\x12\x78\x56\x12\x34\x56\x78\x12\x34\x56\x78',
-             (0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678),
-             0x12345678123456781234567812345678,
-             'urn:uuid:12345678-1234-5678-1234-567812345678',
-             0x678123412345678L, 0x1234, uuid.RESERVED_NCS, None),
-            ('6ba7b810-9dad-11d1-80b4-00c04fd430c8',
-             '{6ba7b810-9dad-11d1-80b4-00c04fd430c8}',
-             '6ba7b8109dad11d180b400c04fd430c8',
-             '\x6b\xa7\xb8\x10\x9d\xad\x11\xd1\x80\xb4\x00\xc0\x4f\xd4\x30\xc8',
-             '\x10\xb8\xa7\x6b\xad\x9d\xd1\x11\x80\xb4\x00\xc0\x4f\xd4\x30\xc8',
-             (0x6ba7b810L, 0x9dad, 0x11d1, 0x80, 0xb4, 0x00c04fd430c8L),
-             0x6ba7b8109dad11d180b400c04fd430c8L,
-             'urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8',
-             0x1d19dad6ba7b810L, 0xb4, uuid.RFC_4122, 1),
-            ('6ba7b811-9dad-11d1-80b4-00c04fd430c8',
-             '{6ba7b811-9dad-11d1-80b4-00c04fd430c8}',
-             '6ba7b8119dad11d180b400c04fd430c8',
-             '\x6b\xa7\xb8\x11\x9d\xad\x11\xd1\x80\xb4\x00\xc0\x4f\xd4\x30\xc8',
-             '\x11\xb8\xa7\x6b\xad\x9d\xd1\x11\x80\xb4\x00\xc0\x4f\xd4\x30\xc8',
-             (0x6ba7b811L, 0x9dad, 0x11d1, 0x80, 0xb4, 0x00c04fd430c8L),
-             0x6ba7b8119dad11d180b400c04fd430c8L,
-             'urn:uuid:6ba7b811-9dad-11d1-80b4-00c04fd430c8',
-             0x1d19dad6ba7b811L, 0xb4, uuid.RFC_4122, 1),
-            ('6ba7b812-9dad-11d1-80b4-00c04fd430c8',
-             '{6ba7b812-9dad-11d1-80b4-00c04fd430c8}',
-             '6ba7b8129dad11d180b400c04fd430c8',
-             '\x6b\xa7\xb8\x12\x9d\xad\x11\xd1\x80\xb4\x00\xc0\x4f\xd4\x30\xc8',
-             '\x12\xb8\xa7\x6b\xad\x9d\xd1\x11\x80\xb4\x00\xc0\x4f\xd4\x30\xc8',
-             (0x6ba7b812L, 0x9dad, 0x11d1, 0x80, 0xb4, 0x00c04fd430c8L),
-             0x6ba7b8129dad11d180b400c04fd430c8L,
-             'urn:uuid:6ba7b812-9dad-11d1-80b4-00c04fd430c8',
-             0x1d19dad6ba7b812L, 0xb4, uuid.RFC_4122, 1),
-            ('6ba7b814-9dad-11d1-80b4-00c04fd430c8',
-             '{6ba7b814-9dad-11d1-80b4-00c04fd430c8}',
-             '6ba7b8149dad11d180b400c04fd430c8',
-             '\x6b\xa7\xb8\x14\x9d\xad\x11\xd1\x80\xb4\x00\xc0\x4f\xd4\x30\xc8',
-             '\x14\xb8\xa7\x6b\xad\x9d\xd1\x11\x80\xb4\x00\xc0\x4f\xd4\x30\xc8',
-             (0x6ba7b814L, 0x9dad, 0x11d1, 0x80, 0xb4, 0x00c04fd430c8L),
-             0x6ba7b8149dad11d180b400c04fd430c8L,
-             'urn:uuid:6ba7b814-9dad-11d1-80b4-00c04fd430c8',
-             0x1d19dad6ba7b814L, 0xb4, uuid.RFC_4122, 1),
-            ('7d444840-9dc0-11d1-b245-5ffdce74fad2',
-             '{7d444840-9dc0-11d1-b245-5ffdce74fad2}',
-             '7d4448409dc011d1b2455ffdce74fad2',
-             '\x7d\x44\x48\x40\x9d\xc0\x11\xd1\xb2\x45\x5f\xfd\xce\x74\xfa\xd2',
-             '\x40\x48\x44\x7d\xc0\x9d\xd1\x11\xb2\x45\x5f\xfd\xce\x74\xfa\xd2',
-             (0x7d444840L, 0x9dc0, 0x11d1, 0xb2, 0x45, 0x5ffdce74fad2L),
-             0x7d4448409dc011d1b2455ffdce74fad2L,
-             'urn:uuid:7d444840-9dc0-11d1-b245-5ffdce74fad2',
-             0x1d19dc07d444840L, 0x3245, uuid.RFC_4122, 1),
-            ('e902893a-9d22-3c7e-a7b8-d6e313b71d9f',
-             '{e902893a-9d22-3c7e-a7b8-d6e313b71d9f}',
-             'e902893a9d223c7ea7b8d6e313b71d9f',
-             '\xe9\x02\x89\x3a\x9d\x22\x3c\x7e\xa7\xb8\xd6\xe3\x13\xb7\x1d\x9f',
-             '\x3a\x89\x02\xe9\x22\x9d\x7e\x3c\xa7\xb8\xd6\xe3\x13\xb7\x1d\x9f',
-             (0xe902893aL, 0x9d22, 0x3c7e, 0xa7, 0xb8, 0xd6e313b71d9fL),
-             0xe902893a9d223c7ea7b8d6e313b71d9fL,
-             'urn:uuid:e902893a-9d22-3c7e-a7b8-d6e313b71d9f',
-             0xc7e9d22e902893aL, 0x27b8, uuid.RFC_4122, 3),
-            ('eb424026-6f54-4ef8-a4d0-bb658a1fc6cf',
-             '{eb424026-6f54-4ef8-a4d0-bb658a1fc6cf}',
-             'eb4240266f544ef8a4d0bb658a1fc6cf',
-             '\xeb\x42\x40\x26\x6f\x54\x4e\xf8\xa4\xd0\xbb\x65\x8a\x1f\xc6\xcf',
-             '\x26\x40\x42\xeb\x54\x6f\xf8\x4e\xa4\xd0\xbb\x65\x8a\x1f\xc6\xcf',
-             (0xeb424026L, 0x6f54, 0x4ef8, 0xa4, 0xd0, 0xbb658a1fc6cfL),
-             0xeb4240266f544ef8a4d0bb658a1fc6cfL,
-             'urn:uuid:eb424026-6f54-4ef8-a4d0-bb658a1fc6cf',
-             0xef86f54eb424026L, 0x24d0, uuid.RFC_4122, 4),
-            ('f81d4fae-7dec-11d0-a765-00a0c91e6bf6',
-             '{f81d4fae-7dec-11d0-a765-00a0c91e6bf6}',
-             'f81d4fae7dec11d0a76500a0c91e6bf6',
-             '\xf8\x1d\x4f\xae\x7d\xec\x11\xd0\xa7\x65\x00\xa0\xc9\x1e\x6b\xf6',
-             '\xae\x4f\x1d\xf8\xec\x7d\xd0\x11\xa7\x65\x00\xa0\xc9\x1e\x6b\xf6',
-             (0xf81d4faeL, 0x7dec, 0x11d0, 0xa7, 0x65, 0x00a0c91e6bf6L),
-             0xf81d4fae7dec11d0a76500a0c91e6bf6L,
-             'urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6',
-             0x1d07decf81d4faeL, 0x2765, uuid.RFC_4122, 1),
-            ('fffefdfc-fffe-fffe-fffe-fffefdfcfbfa',
-             '{fffefdfc-fffe-fffe-fffe-fffefdfcfbfa}',
-             'fffefdfcfffefffefffefffefdfcfbfa',
-             '\xff\xfe\xfd\xfc\xff\xfe\xff\xfe\xff\xfe\xff\xfe\xfd\xfc\xfb\xfa',
-             '\xfc\xfd\xfe\xff\xfe\xff\xfe\xff\xff\xfe\xff\xfe\xfd\xfc\xfb\xfa',
-             (0xfffefdfcL, 0xfffe, 0xfffe, 0xff, 0xfe, 0xfffefdfcfbfaL),
-             0xfffefdfcfffefffefffefffefdfcfbfaL,
-             'urn:uuid:fffefdfc-fffe-fffe-fffe-fffefdfcfbfa',
-             0xffefffefffefdfcL, 0x3ffe, uuid.RESERVED_FUTURE, None),
-            ('ffffffff-ffff-ffff-ffff-ffffffffffff',
-             '{ffffffff-ffff-ffff-ffff-ffffffffffff}',
-             'ffffffffffffffffffffffffffffffff',
-             '\xff'*16,
-             '\xff'*16,
-             (0xffffffffL, 0xffffL, 0xffffL, 0xff, 0xff, 0xffffffffffffL),
-             0xffffffffffffffffffffffffffffffffL,
-             'urn:uuid:ffffffff-ffff-ffff-ffff-ffffffffffff',
-             0xfffffffffffffffL, 0x3fff, uuid.RESERVED_FUTURE, None),
-            ]:
-            equivalents = []
-            # Construct each UUID in several different ways.
-            for u in [uuid.UUID(string), uuid.UUID(curly), uuid.UUID(hex),
-                      uuid.UUID(bytes=bytes), uuid.UUID(bytes_le=bytes_le),
-                      uuid.UUID(fields=fields), uuid.UUID(int=integer),
-                      uuid.UUID(urn)]:
-                # Test all conversions and properties of the UUID object.
-                equal(str(u), string)
-                equal(int(u), integer)
-                equal(u.bytes, bytes)
-                equal(u.bytes_le, bytes_le)
-                equal(u.fields, fields)
-                equal(u.time_low, fields[0])
-                equal(u.time_mid, fields[1])
-                equal(u.time_hi_version, fields[2])
-                equal(u.clock_seq_hi_variant, fields[3])
-                equal(u.clock_seq_low, fields[4])
-                equal(u.node, fields[5])
-                equal(u.hex, hex)
-                equal(u.int, integer)
-                equal(u.urn, urn)
-                equal(u.time, time)
-                equal(u.clock_seq, clock_seq)
-                equal(u.variant, variant)
-                equal(u.version, version)
-                equivalents.append(u)
-
-            # Different construction methods should give the same UUID.
-            for u in equivalents:
-                for v in equivalents:
-                    equal(u, v)
-            ascending.append(u)
-
-        # Test comparison of UUIDs.
-        for i in range(len(ascending)):
-            for j in range(len(ascending)):
-                equal(cmp(i, j), cmp(ascending[i], ascending[j]))
-
-        # Test sorting of UUIDs (above list is in ascending order).
-        resorted = ascending[:]
-        resorted.reverse()
-        resorted.sort()
-        equal(ascending, resorted)
-
-    def test_exceptions(self):
-        badvalue = lambda f: self.assertRaises(ValueError, f)
-        badtype = lambda f: self.assertRaises(TypeError, f)
-
-        # Badly formed hex strings.
-        badvalue(lambda: uuid.UUID(''))
-        badvalue(lambda: uuid.UUID('abc'))
-        badvalue(lambda: uuid.UUID('1234567812345678123456781234567'))
-        badvalue(lambda: uuid.UUID('123456781234567812345678123456789'))
-        badvalue(lambda: uuid.UUID('123456781234567812345678z2345678'))
-
-        # Badly formed bytes.
-        badvalue(lambda: uuid.UUID(bytes='abc'))
-        badvalue(lambda: uuid.UUID(bytes='\0'*15))
-        badvalue(lambda: uuid.UUID(bytes='\0'*17))
-
-        # Badly formed bytes_le.
-        badvalue(lambda: uuid.UUID(bytes_le='abc'))
-        badvalue(lambda: uuid.UUID(bytes_le='\0'*15))
-        badvalue(lambda: uuid.UUID(bytes_le='\0'*17))
-
-        # Badly formed fields.
-        badvalue(lambda: uuid.UUID(fields=(1,)))
-        badvalue(lambda: uuid.UUID(fields=(1, 2, 3, 4, 5)))
-        badvalue(lambda: uuid.UUID(fields=(1, 2, 3, 4, 5, 6, 7)))
-
-        # Field values out of range.
-        badvalue(lambda: uuid.UUID(fields=(-1, 0, 0, 0, 0, 0)))
-        badvalue(lambda: uuid.UUID(fields=(0x100000000L, 0, 0, 0, 0, 0)))
-        badvalue(lambda: uuid.UUID(fields=(0, -1, 0, 0, 0, 0)))
-        badvalue(lambda: uuid.UUID(fields=(0, 0x10000L, 0, 0, 0, 0)))
-        badvalue(lambda: uuid.UUID(fields=(0, 0, -1, 0, 0, 0)))
-        badvalue(lambda: uuid.UUID(fields=(0, 0, 0x10000L, 0, 0, 0)))
-        badvalue(lambda: uuid.UUID(fields=(0, 0, 0, -1, 0, 0)))
-        badvalue(lambda: uuid.UUID(fields=(0, 0, 0, 0x100L, 0, 0)))
-        badvalue(lambda: uuid.UUID(fields=(0, 0, 0, 0, -1, 0)))
-        badvalue(lambda: uuid.UUID(fields=(0, 0, 0, 0, 0x100L, 0)))
-        badvalue(lambda: uuid.UUID(fields=(0, 0, 0, 0, 0, -1)))
-        badvalue(lambda: uuid.UUID(fields=(0, 0, 0, 0, 0, 0x1000000000000L)))
-
-        # Version number out of range.
-        badvalue(lambda: uuid.UUID('00'*16, version=0))
-        badvalue(lambda: uuid.UUID('00'*16, version=6))
-
-        # Integer value out of range.
-        badvalue(lambda: uuid.UUID(int=-1))
-        badvalue(lambda: uuid.UUID(int=1<<128L))
-
-        # Must supply exactly one of hex, bytes, fields, int.
-        h, b, f, i = '00'*16, '\0'*16, (0, 0, 0, 0, 0, 0), 0
-        uuid.UUID(h)
-        uuid.UUID(hex=h)
-        uuid.UUID(bytes=b)
-        uuid.UUID(bytes_le=b)
-        uuid.UUID(fields=f)
-        uuid.UUID(int=i)
-
-        # Wrong number of arguments (positional).
-        badtype(lambda: uuid.UUID())
-        badtype(lambda: uuid.UUID(h, b))
-        badtype(lambda: uuid.UUID(h, b, b))
-        badtype(lambda: uuid.UUID(h, b, b, f))
-        badtype(lambda: uuid.UUID(h, b, b, f, i))
-
-        # Duplicate arguments.
-        for hh in [[], [('hex', h)]]:
-            for bb in [[], [('bytes', b)]]:
-                for bble in [[], [('bytes_le', b)]]:
-                    for ii in [[], [('int', i)]]:
-                        for ff in [[], [('fields', f)]]:
-                            args = dict(hh + bb + bble + ii + ff)
-                            if len(args) != 0:
-                                badtype(lambda: uuid.UUID(h, **args))
-                            if len(args) != 1:
-                                badtype(lambda: uuid.UUID(**args))
-
-        # Immutability.
-        u = uuid.UUID(h)
-        badtype(lambda: setattr(u, 'hex', h))
-        badtype(lambda: setattr(u, 'bytes', b))
-        badtype(lambda: setattr(u, 'bytes_le', b))
-        badtype(lambda: setattr(u, 'fields', f))
-        badtype(lambda: setattr(u, 'int', i))
-        badtype(lambda: setattr(u, 'time_low', 0))
-        badtype(lambda: setattr(u, 'time_mid', 0))
-        badtype(lambda: setattr(u, 'time_hi_version', 0))
-        badtype(lambda: setattr(u, 'time_hi_version', 0))
-        badtype(lambda: setattr(u, 'clock_seq_hi_variant', 0))
-        badtype(lambda: setattr(u, 'clock_seq_low', 0))
-        badtype(lambda: setattr(u, 'node', 0))
-
-    def check_node(self, node, source):
-        message = "%012x is not an RFC 4122 node ID" % node
-        self.assertTrue(0 < node, message)
-        self.assertTrue(node < (1L << 48), message)
-
-        TestUUID.source2node[source] = node
-        if TestUUID.last_node:
-            if TestUUID.last_node != node:
-                msg = "different sources disagree on node:\n"
-                for s, n in TestUUID.source2node.iteritems():
-                    msg += "    from source %r, node was %012x\n" % (s, n)
-                # There's actually no reason to expect the MAC addresses
-                # to agree across various methods -- e.g., a box may have
-                # multiple network interfaces, and different ways of getting
-                # a MAC address may favor different HW.
-                ##self.fail(msg)
-        else:
-            TestUUID.last_node = node
-
-    def test_ifconfig_getnode(self):
-        import sys
-        import os
-        if os.name == 'posix':
-            node = uuid._ifconfig_getnode()
-            if node is not None:
-                self.check_node(node, 'ifconfig')
-
-    def test_ipconfig_getnode(self):
-        import os
-        if os.name == 'nt':
-            node = uuid._ipconfig_getnode()
-            if node is not None:
-                self.check_node(node, 'ipconfig')
-
-    def test_netbios_getnode(self):
-        if importable('win32wnet') and importable('netbios'):
-            self.check_node(uuid._netbios_getnode(), 'netbios')
-
-    def test_random_getnode(self):
-        node = uuid._random_getnode()
-        # Least significant bit of first octet must be set.
-        self.assertTrue(node & 0x010000000000)
-        self.assertTrue(node < (1L << 48))
-
-    def test_unixdll_getnode(self):
-        import sys
-        import os
-        if importable('ctypes') and os.name == 'posix':
-            try: # Issues 1481, 3581: _uuid_generate_time() might be None.
-                self.check_node(uuid._unixdll_getnode(), 'unixdll')
-            except TypeError:
-                pass
-
-    def test_windll_getnode(self):
-        import os
-        if importable('ctypes') and os.name == 'nt':
-            self.check_node(uuid._windll_getnode(), 'windll')
-
-    def test_getnode(self):
-        import sys
-        node1 = uuid.getnode()
-        self.check_node(node1, "getnode1")
-
-        # Test it again to ensure consistency.
-        node2 = uuid.getnode()
-        self.check_node(node2, "getnode2")
-
-        self.assertEqual(node1, node2)
-
-    def test_uuid1(self):
-        # uuid1 requires ctypes.
-        try:
-            import ctypes
-        except ImportError:
-            return
-
-        equal = self.assertEqual
-
-        # Make sure uuid1() generates UUIDs that are actually version 1.
-        for u in [uuid.uuid1() for i in range(10)]:
-            equal(u.variant, uuid.RFC_4122)
-            equal(u.version, 1)
-
-        # Make sure the generated UUIDs are actually unique.
-        uuids = {}
-        for u in [uuid.uuid1() for i in range(1000)]:
-            uuids[u] = 1
-        equal(len(uuids.keys()), 1000)
-
-        # Make sure the supplied node ID appears in the UUID.
-        u = uuid.uuid1(0)
-        equal(u.node, 0)
-        u = uuid.uuid1(0x123456789abc)
-        equal(u.node, 0x123456789abc)
-        u = uuid.uuid1(0xffffffffffff)
-        equal(u.node, 0xffffffffffff)
-
-        # Make sure the supplied clock sequence appears in the UUID.
-        u = uuid.uuid1(0x123456789abc, 0)
-        equal(u.node, 0x123456789abc)
-        equal(((u.clock_seq_hi_variant & 0x3f) << 8) | u.clock_seq_low, 0)
-        u = uuid.uuid1(0x123456789abc, 0x1234)
-        equal(u.node, 0x123456789abc)
-        equal(((u.clock_seq_hi_variant & 0x3f) << 8) |
-                         u.clock_seq_low, 0x1234)
-        u = uuid.uuid1(0x123456789abc, 0x3fff)
-        equal(u.node, 0x123456789abc)
-        equal(((u.clock_seq_hi_variant & 0x3f) << 8) |
-                         u.clock_seq_low, 0x3fff)
-
-    def test_uuid3(self):
-        equal = self.assertEqual
-
-        # Test some known version-3 UUIDs.
-        for u, v in [(uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org'),
-                      '6fa459ea-ee8a-3ca4-894e-db77e160355e'),
-                     (uuid.uuid3(uuid.NAMESPACE_URL, 'http://python.org/'),
-                      '9fe8e8c4-aaa8-32a9-a55c-4535a88b748d'),
-                     (uuid.uuid3(uuid.NAMESPACE_OID, '1.3.6.1'),
-                      'dd1a1cef-13d5-368a-ad82-eca71acd4cd1'),
-                     (uuid.uuid3(uuid.NAMESPACE_X500, 'c=ca'),
-                      '658d3002-db6b-3040-a1d1-8ddd7d189a4d'),
-                    ]:
-            equal(u.variant, uuid.RFC_4122)
-            equal(u.version, 3)
-            equal(u, uuid.UUID(v))
-            equal(str(u), v)
-
-    def test_uuid4(self):
-        # uuid4 requires ctypes.
-        try:
-            import ctypes
-        except ImportError:
-            return
-
-        equal = self.assertEqual
-
-        # Make sure uuid4() generates UUIDs that are actually version 4.
-        for u in [uuid.uuid4() for i in range(10)]:
-            equal(u.variant, uuid.RFC_4122)
-            equal(u.version, 4)
-
-        # Make sure the generated UUIDs are actually unique.
-        uuids = {}
-        for u in [uuid.uuid4() for i in range(1000)]:
-            uuids[u] = 1
-        equal(len(uuids.keys()), 1000)
-
-    def test_uuid5(self):
-        equal = self.assertEqual
-
-        # Test some known version-5 UUIDs.
-        for u, v in [(uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org'),
-                      '886313e1-3b8a-5372-9b90-0c9aee199e5d'),
-                     (uuid.uuid5(uuid.NAMESPACE_URL, 'http://python.org/'),
-                      '4c565f0d-3f5a-5890-b41b-20cf47701c5e'),
-                     (uuid.uuid5(uuid.NAMESPACE_OID, '1.3.6.1'),
-                      '1447fa61-5277-5fef-a9b3-fbc6e44f4af3'),
-                     (uuid.uuid5(uuid.NAMESPACE_X500, 'c=ca'),
-                      'cc957dd1-a972-5349-98cd-874190002798'),
-                    ]:
-            equal(u.variant, uuid.RFC_4122)
-            equal(u.version, 5)
-            equal(u, uuid.UUID(v))
-            equal(str(u), v)
-
-    def testIssue8621(self):
-        import os
-        import sys
-        if os.name != 'posix':
-            return
-
-        # On at least some versions of OSX uuid.uuid4 generates
-        # the same sequence of UUIDs in the parent and any
-        # children started using fork.
-        fds = os.pipe()
-        pid = os.fork()
-        if pid == 0:
-            os.close(fds[0])
-            value = uuid.uuid4()
-            os.write(fds[1], value.hex)
-            os._exit(0)
-
-        else:
-            os.close(fds[1])
-            parent_value = uuid.uuid4().hex
-            os.waitpid(pid, 0)
-            child_value = os.read(fds[0], 100)
-
-            self.assertNotEqual(parent_value, child_value)
-
-
-
-
-
-def test_main():
-    test_support.run_unittest(TestUUID)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wait3.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wait3.py
deleted file mode 100644
index 16acb92..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wait3.py
+++ /dev/null
@@ -1,39 +0,0 @@
-"""This test checks for correct wait3() behavior.
-"""
-
-import os
-import time
-import unittest
-from test.fork_wait import ForkWait
-from test.test_support import run_unittest, reap_children
-
-try:
-    os.fork
-except AttributeError:
-    raise unittest.SkipTest, "os.fork not defined -- skipping test_wait3"
-
-try:
-    os.wait3
-except AttributeError:
-    raise unittest.SkipTest, "os.wait3 not defined -- skipping test_wait3"
-
-class Wait3Test(ForkWait):
-    def wait_impl(self, cpid):
-        for i in range(10):
-            # wait3() shouldn't hang, but some of the buildbots seem to hang
-            # in the forking tests.  This is an attempt to fix the problem.
-            spid, status, rusage = os.wait3(os.WNOHANG)
-            if spid == cpid:
-                break
-            time.sleep(1.0)
-
-        self.assertEqual(spid, cpid)
-        self.assertEqual(status, 0, "cause = %d, exit = %d" % (status&0xff, status>>8))
-        self.assertTrue(rusage)
-
-def test_main():
-    run_unittest(Wait3Test)
-    reap_children()
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wait4.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wait4.py
deleted file mode 100644
index 41aaedd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wait4.py
+++ /dev/null
@@ -1,32 +0,0 @@
-"""This test checks for correct wait4() behavior.
-"""
-
-import os
-import time
-from test.fork_wait import ForkWait
-from test.test_support import run_unittest, reap_children, get_attribute
-
-# If either of these do not exist, skip this test.
-get_attribute(os, 'fork')
-get_attribute(os, 'wait4')
-
-
-class Wait4Test(ForkWait):
-    def wait_impl(self, cpid):
-        for i in range(10):
-            # wait4() shouldn't hang, but some of the buildbots seem to hang
-            # in the forking tests.  This is an attempt to fix the problem.
-            spid, status, rusage = os.wait4(cpid, os.WNOHANG)
-            if spid == cpid:
-                break
-            time.sleep(1.0)
-        self.assertEqual(spid, cpid)
-        self.assertEqual(status, 0, "cause = %d, exit = %d" % (status&0xff, status>>8))
-        self.assertTrue(rusage)
-
-def test_main():
-    run_unittest(Wait4Test)
-    reap_children()
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_warnings.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_warnings.py
deleted file mode 100644
index 055605b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_warnings.py
+++ /dev/null
@@ -1,749 +0,0 @@
-from contextlib import contextmanager
-import linecache
-import os
-import StringIO
-import sys
-import unittest
-import subprocess
-from test import test_support
-from test.script_helper import assert_python_ok
-
-import warning_tests
-
-import warnings as original_warnings
-
-py_warnings = test_support.import_fresh_module('warnings', blocked=['_warnings'])
-c_warnings = test_support.import_fresh_module('warnings', fresh=['_warnings'])
-
-@contextmanager
-def warnings_state(module):
-    """Use a specific warnings implementation in warning_tests."""
-    global __warningregistry__
-    for to_clear in (sys, warning_tests):
-        try:
-            to_clear.__warningregistry__.clear()
-        except AttributeError:
-            pass
-    try:
-        __warningregistry__.clear()
-    except NameError:
-        pass
-    original_warnings = warning_tests.warnings
-    original_filters = module.filters
-    try:
-        module.filters = original_filters[:]
-        module.simplefilter("once")
-        warning_tests.warnings = module
-        yield
-    finally:
-        warning_tests.warnings = original_warnings
-        module.filters = original_filters
-
-
-class BaseTest(unittest.TestCase):
-
-    """Basic bookkeeping required for testing."""
-
-    def setUp(self):
-        # The __warningregistry__ needs to be in a pristine state for tests
-        # to work properly.
-        if '__warningregistry__' in globals():
-            del globals()['__warningregistry__']
-        if hasattr(warning_tests, '__warningregistry__'):
-            del warning_tests.__warningregistry__
-        if hasattr(sys, '__warningregistry__'):
-            del sys.__warningregistry__
-        # The 'warnings' module must be explicitly set so that the proper
-        # interaction between _warnings and 'warnings' can be controlled.
-        sys.modules['warnings'] = self.module
-        super(BaseTest, self).setUp()
-
-    def tearDown(self):
-        sys.modules['warnings'] = original_warnings
-        super(BaseTest, self).tearDown()
-
-
-class FilterTests(object):
-
-    """Testing the filtering functionality."""
-
-    def test_error(self):
-        with original_warnings.catch_warnings(module=self.module) as w:
-            self.module.resetwarnings()
-            self.module.filterwarnings("error", category=UserWarning)
-            self.assertRaises(UserWarning, self.module.warn,
-                                "FilterTests.test_error")
-
-    def test_ignore(self):
-        with original_warnings.catch_warnings(record=True,
-                module=self.module) as w:
-            self.module.resetwarnings()
-            self.module.filterwarnings("ignore", category=UserWarning)
-            self.module.warn("FilterTests.test_ignore", UserWarning)
-            self.assertEqual(len(w), 0)
-
-    def test_always(self):
-        with original_warnings.catch_warnings(record=True,
-                module=self.module) as w:
-            self.module.resetwarnings()
-            self.module.filterwarnings("always", category=UserWarning)
-            message = "FilterTests.test_always"
-            self.module.warn(message, UserWarning)
-            self.assertTrue(message, w[-1].message)
-            self.module.warn(message, UserWarning)
-            self.assertTrue(w[-1].message, message)
-
-    def test_default(self):
-        with original_warnings.catch_warnings(record=True,
-                module=self.module) as w:
-            self.module.resetwarnings()
-            self.module.filterwarnings("default", category=UserWarning)
-            message = UserWarning("FilterTests.test_default")
-            for x in xrange(2):
-                self.module.warn(message, UserWarning)
-                if x == 0:
-                    self.assertEqual(w[-1].message, message)
-                    del w[:]
-                elif x == 1:
-                    self.assertEqual(len(w), 0)
-                else:
-                    raise ValueError("loop variant unhandled")
-
-    def test_module(self):
-        with original_warnings.catch_warnings(record=True,
-                module=self.module) as w:
-            self.module.resetwarnings()
-            self.module.filterwarnings("module", category=UserWarning)
-            message = UserWarning("FilterTests.test_module")
-            self.module.warn(message, UserWarning)
-            self.assertEqual(w[-1].message, message)
-            del w[:]
-            self.module.warn(message, UserWarning)
-            self.assertEqual(len(w), 0)
-
-    def test_once(self):
-        with original_warnings.catch_warnings(record=True,
-                module=self.module) as w:
-            self.module.resetwarnings()
-            self.module.filterwarnings("once", category=UserWarning)
-            message = UserWarning("FilterTests.test_once")
-            self.module.warn_explicit(message, UserWarning, "test_warnings.py",
-                                    42)
-            self.assertEqual(w[-1].message, message)
-            del w[:]
-            self.module.warn_explicit(message, UserWarning, "test_warnings.py",
-                                    13)
-            self.assertEqual(len(w), 0)
-            self.module.warn_explicit(message, UserWarning, "test_warnings2.py",
-                                    42)
-            self.assertEqual(len(w), 0)
-
-    def test_inheritance(self):
-        with original_warnings.catch_warnings(module=self.module) as w:
-            self.module.resetwarnings()
-            self.module.filterwarnings("error", category=Warning)
-            self.assertRaises(UserWarning, self.module.warn,
-                                "FilterTests.test_inheritance", UserWarning)
-
-    def test_ordering(self):
-        with original_warnings.catch_warnings(record=True,
-                module=self.module) as w:
-            self.module.resetwarnings()
-            self.module.filterwarnings("ignore", category=UserWarning)
-            self.module.filterwarnings("error", category=UserWarning,
-                                        append=True)
-            del w[:]
-            try:
-                self.module.warn("FilterTests.test_ordering", UserWarning)
-            except UserWarning:
-                self.fail("order handling for actions failed")
-            self.assertEqual(len(w), 0)
-
-    def test_filterwarnings(self):
-        # Test filterwarnings().
-        # Implicitly also tests resetwarnings().
-        with original_warnings.catch_warnings(record=True,
-                module=self.module) as w:
-            self.module.filterwarnings("error", "", Warning, "", 0)
-            self.assertRaises(UserWarning, self.module.warn, 'convert to error')
-
-            self.module.resetwarnings()
-            text = 'handle normally'
-            self.module.warn(text)
-            self.assertEqual(str(w[-1].message), text)
-            self.assertTrue(w[-1].category is UserWarning)
-
-            self.module.filterwarnings("ignore", "", Warning, "", 0)
-            text = 'filtered out'
-            self.module.warn(text)
-            self.assertNotEqual(str(w[-1].message), text)
-
-            self.module.resetwarnings()
-            self.module.filterwarnings("error", "hex*", Warning, "", 0)
-            self.assertRaises(UserWarning, self.module.warn, 'hex/oct')
-            text = 'nonmatching text'
-            self.module.warn(text)
-            self.assertEqual(str(w[-1].message), text)
-            self.assertTrue(w[-1].category is UserWarning)
-
-class CFilterTests(BaseTest, FilterTests):
-    module = c_warnings
-
-class PyFilterTests(BaseTest, FilterTests):
-    module = py_warnings
-
-
-class WarnTests(unittest.TestCase):
-
-    """Test warnings.warn() and warnings.warn_explicit()."""
-
-    def test_message(self):
-        with original_warnings.catch_warnings(record=True,
-                module=self.module) as w:
-            self.module.simplefilter("once")
-            for i in range(4):
-                text = 'multi %d' %i  # Different text on each call.
-                self.module.warn(text)
-                self.assertEqual(str(w[-1].message), text)
-                self.assertTrue(w[-1].category is UserWarning)
-
-    def test_filename(self):
-        with warnings_state(self.module):
-            with original_warnings.catch_warnings(record=True,
-                    module=self.module) as w:
-                warning_tests.inner("spam1")
-                self.assertEqual(os.path.basename(w[-1].filename),
-                                    "warning_tests.py")
-                warning_tests.outer("spam2")
-                self.assertEqual(os.path.basename(w[-1].filename),
-                                    "warning_tests.py")
-
-    def test_stacklevel(self):
-        # Test stacklevel argument
-        # make sure all messages are different, so the warning won't be skipped
-        with warnings_state(self.module):
-            with original_warnings.catch_warnings(record=True,
-                    module=self.module) as w:
-                warning_tests.inner("spam3", stacklevel=1)
-                self.assertEqual(os.path.basename(w[-1].filename),
-                                    "warning_tests.py")
-                warning_tests.outer("spam4", stacklevel=1)
-                self.assertEqual(os.path.basename(w[-1].filename),
-                                    "warning_tests.py")
-
-                warning_tests.inner("spam5", stacklevel=2)
-                self.assertEqual(os.path.basename(w[-1].filename),
-                                    "test_warnings.py")
-                warning_tests.outer("spam6", stacklevel=2)
-                self.assertEqual(os.path.basename(w[-1].filename),
-                                    "warning_tests.py")
-                warning_tests.outer("spam6.5", stacklevel=3)
-                self.assertEqual(os.path.basename(w[-1].filename),
-                                    "test_warnings.py")
-
-                warning_tests.inner("spam7", stacklevel=9999)
-                self.assertEqual(os.path.basename(w[-1].filename),
-                                    "sys")
-
-    def test_missing_filename_not_main(self):
-        # If __file__ is not specified and __main__ is not the module name,
-        # then __file__ should be set to the module name.
-        filename = warning_tests.__file__
-        try:
-            del warning_tests.__file__
-            with warnings_state(self.module):
-                with original_warnings.catch_warnings(record=True,
-                        module=self.module) as w:
-                    warning_tests.inner("spam8", stacklevel=1)
-                    self.assertEqual(w[-1].filename, warning_tests.__name__)
-        finally:
-            warning_tests.__file__ = filename
-
-    def test_missing_filename_main_with_argv(self):
-        # If __file__ is not specified and the caller is __main__ and sys.argv
-        # exists, then use sys.argv[0] as the file.
-        if not hasattr(sys, 'argv'):
-            return
-        filename = warning_tests.__file__
-        module_name = warning_tests.__name__
-        try:
-            del warning_tests.__file__
-            warning_tests.__name__ = '__main__'
-            with warnings_state(self.module):
-                with original_warnings.catch_warnings(record=True,
-                        module=self.module) as w:
-                    warning_tests.inner('spam9', stacklevel=1)
-                    self.assertEqual(w[-1].filename, sys.argv[0])
-        finally:
-            warning_tests.__file__ = filename
-            warning_tests.__name__ = module_name
-
-    def test_missing_filename_main_without_argv(self):
-        # If __file__ is not specified, the caller is __main__, and sys.argv
-        # is not set, then '__main__' is the file name.
-        filename = warning_tests.__file__
-        module_name = warning_tests.__name__
-        argv = sys.argv
-        try:
-            del warning_tests.__file__
-            warning_tests.__name__ = '__main__'
-            del sys.argv
-            with warnings_state(self.module):
-                with original_warnings.catch_warnings(record=True,
-                        module=self.module) as w:
-                    warning_tests.inner('spam10', stacklevel=1)
-                    self.assertEqual(w[-1].filename, '__main__')
-        finally:
-            warning_tests.__file__ = filename
-            warning_tests.__name__ = module_name
-            sys.argv = argv
-
-    def test_missing_filename_main_with_argv_empty_string(self):
-        # If __file__ is not specified, the caller is __main__, and sys.argv[0]
-        # is the empty string, then '__main__ is the file name.
-        # Tests issue 2743.
-        file_name = warning_tests.__file__
-        module_name = warning_tests.__name__
-        argv = sys.argv
-        try:
-            del warning_tests.__file__
-            warning_tests.__name__ = '__main__'
-            sys.argv = ['']
-            with warnings_state(self.module):
-                with original_warnings.catch_warnings(record=True,
-                        module=self.module) as w:
-                    warning_tests.inner('spam11', stacklevel=1)
-                    self.assertEqual(w[-1].filename, '__main__')
-        finally:
-            warning_tests.__file__ = file_name
-            warning_tests.__name__ = module_name
-            sys.argv = argv
-
-    def test_warn_explicit_type_errors(self):
-        # warn_explicit() should error out gracefully if it is given objects
-        # of the wrong types.
-        # lineno is expected to be an integer.
-        self.assertRaises(TypeError, self.module.warn_explicit,
-                            None, UserWarning, None, None)
-        # Either 'message' needs to be an instance of Warning or 'category'
-        # needs to be a subclass.
-        self.assertRaises(TypeError, self.module.warn_explicit,
-                            None, None, None, 1)
-        # 'registry' must be a dict or None.
-        self.assertRaises((TypeError, AttributeError),
-                            self.module.warn_explicit,
-                            None, Warning, None, 1, registry=42)
-
-    def test_bad_str(self):
-        # issue 6415
-        # Warnings instance with a bad format string for __str__ should not
-        # trigger a bus error.
-        class BadStrWarning(Warning):
-            """Warning with a bad format string for __str__."""
-            def __str__(self):
-                return ("A bad formatted string %(err)" %
-                        {"err" : "there is no %(err)s"})
-
-        with self.assertRaises(ValueError):
-            self.module.warn(BadStrWarning())
-
-
-class CWarnTests(BaseTest, WarnTests):
-    module = c_warnings
-
-    # As an early adopter, we sanity check the
-    # test_support.import_fresh_module utility function
-    def test_accelerated(self):
-        self.assertFalse(original_warnings is self.module)
-        self.assertFalse(hasattr(self.module.warn, 'func_code'))
-
-class PyWarnTests(BaseTest, WarnTests):
-    module = py_warnings
-
-    # As an early adopter, we sanity check the
-    # test_support.import_fresh_module utility function
-    def test_pure_python(self):
-        self.assertFalse(original_warnings is self.module)
-        self.assertTrue(hasattr(self.module.warn, 'func_code'))
-
-
-class WCmdLineTests(unittest.TestCase):
-
-    def test_improper_input(self):
-        # Uses the private _setoption() function to test the parsing
-        # of command-line warning arguments
-        with original_warnings.catch_warnings(module=self.module):
-            self.assertRaises(self.module._OptionError,
-                              self.module._setoption, '1:2:3:4:5:6')
-            self.assertRaises(self.module._OptionError,
-                              self.module._setoption, 'bogus::Warning')
-            self.assertRaises(self.module._OptionError,
-                              self.module._setoption, 'ignore:2::4:-5')
-            self.module._setoption('error::Warning::0')
-            self.assertRaises(UserWarning, self.module.warn, 'convert to error')
-
-    def test_improper_option(self):
-        # Same as above, but check that the message is printed out when
-        # the interpreter is executed. This also checks that options are
-        # actually parsed at all.
-        rc, out, err = assert_python_ok("-Wxxx", "-c", "pass")
-        self.assertIn(b"Invalid -W option ignored: invalid action: 'xxx'", err)
-
-    def test_warnings_bootstrap(self):
-        # Check that the warnings module does get loaded when -W<some option>
-        # is used (see issue #10372 for an example of silent bootstrap failure).
-        rc, out, err = assert_python_ok("-Wi", "-c",
-            "import sys; sys.modules['warnings'].warn('foo', RuntimeWarning)")
-        # '-Wi' was observed
-        self.assertFalse(out.strip())
-        self.assertNotIn(b'RuntimeWarning', err)
-
-class CWCmdLineTests(BaseTest, WCmdLineTests):
-    module = c_warnings
-
-class PyWCmdLineTests(BaseTest, WCmdLineTests):
-    module = py_warnings
-
-
-class _WarningsTests(BaseTest):
-
-    """Tests specific to the _warnings module."""
-
-    module = c_warnings
-
-    def test_filter(self):
-        # Everything should function even if 'filters' is not in warnings.
-        with original_warnings.catch_warnings(module=self.module) as w:
-            self.module.filterwarnings("error", "", Warning, "", 0)
-            self.assertRaises(UserWarning, self.module.warn,
-                                'convert to error')
-            del self.module.filters
-            self.assertRaises(UserWarning, self.module.warn,
-                                'convert to error')
-
-    def test_onceregistry(self):
-        # Replacing or removing the onceregistry should be okay.
-        global __warningregistry__
-        message = UserWarning('onceregistry test')
-        try:
-            original_registry = self.module.onceregistry
-            __warningregistry__ = {}
-            with original_warnings.catch_warnings(record=True,
-                    module=self.module) as w:
-                self.module.resetwarnings()
-                self.module.filterwarnings("once", category=UserWarning)
-                self.module.warn_explicit(message, UserWarning, "file", 42)
-                self.assertEqual(w[-1].message, message)
-                del w[:]
-                self.module.warn_explicit(message, UserWarning, "file", 42)
-                self.assertEqual(len(w), 0)
-                # Test the resetting of onceregistry.
-                self.module.onceregistry = {}
-                __warningregistry__ = {}
-                self.module.warn('onceregistry test')
-                self.assertEqual(w[-1].message.args, message.args)
-                # Removal of onceregistry is okay.
-                del w[:]
-                del self.module.onceregistry
-                __warningregistry__ = {}
-                self.module.warn_explicit(message, UserWarning, "file", 42)
-                self.assertEqual(len(w), 0)
-        finally:
-            self.module.onceregistry = original_registry
-
-    def test_default_action(self):
-        # Replacing or removing defaultaction should be okay.
-        message = UserWarning("defaultaction test")
-        original = self.module.defaultaction
-        try:
-            with original_warnings.catch_warnings(record=True,
-                    module=self.module) as w:
-                self.module.resetwarnings()
-                registry = {}
-                self.module.warn_explicit(message, UserWarning, "<test>", 42,
-                                            registry=registry)
-                self.assertEqual(w[-1].message, message)
-                self.assertEqual(len(w), 1)
-                self.assertEqual(len(registry), 1)
-                del w[:]
-                # Test removal.
-                del self.module.defaultaction
-                __warningregistry__ = {}
-                registry = {}
-                self.module.warn_explicit(message, UserWarning, "<test>", 43,
-                                            registry=registry)
-                self.assertEqual(w[-1].message, message)
-                self.assertEqual(len(w), 1)
-                self.assertEqual(len(registry), 1)
-                del w[:]
-                # Test setting.
-                self.module.defaultaction = "ignore"
-                __warningregistry__ = {}
-                registry = {}
-                self.module.warn_explicit(message, UserWarning, "<test>", 44,
-                                            registry=registry)
-                self.assertEqual(len(w), 0)
-        finally:
-            self.module.defaultaction = original
-
-    def test_showwarning_missing(self):
-        # Test that showwarning() missing is okay.
-        text = 'del showwarning test'
-        with original_warnings.catch_warnings(module=self.module):
-            self.module.filterwarnings("always", category=UserWarning)
-            del self.module.showwarning
-            with test_support.captured_output('stderr') as stream:
-                self.module.warn(text)
-                result = stream.getvalue()
-        self.assertIn(text, result)
-
-    def test_showwarning_not_callable(self):
-        with original_warnings.catch_warnings(module=self.module):
-            self.module.filterwarnings("always", category=UserWarning)
-            old_showwarning = self.module.showwarning
-            self.module.showwarning = 23
-            try:
-                self.assertRaises(TypeError, self.module.warn, "Warning!")
-            finally:
-                self.module.showwarning = old_showwarning
-
-    def test_show_warning_output(self):
-        # With showarning() missing, make sure that output is okay.
-        text = 'test show_warning'
-        with original_warnings.catch_warnings(module=self.module):
-            self.module.filterwarnings("always", category=UserWarning)
-            del self.module.showwarning
-            with test_support.captured_output('stderr') as stream:
-                warning_tests.inner(text)
-                result = stream.getvalue()
-        self.assertEqual(result.count('\n'), 2,
-                             "Too many newlines in %r" % result)
-        first_line, second_line = result.split('\n', 1)
-        expected_file = os.path.splitext(warning_tests.__file__)[0] + '.py'
-        first_line_parts = first_line.rsplit(':', 3)
-        path, line, warning_class, message = first_line_parts
-        line = int(line)
-        self.assertEqual(expected_file, path)
-        self.assertEqual(warning_class, ' ' + UserWarning.__name__)
-        self.assertEqual(message, ' ' + text)
-        expected_line = '  ' + linecache.getline(path, line).strip() + '\n'
-        assert expected_line
-        self.assertEqual(second_line, expected_line)
-
-
-class WarningsDisplayTests(unittest.TestCase):
-
-    """Test the displaying of warnings and the ability to overload functions
-    related to displaying warnings."""
-
-    def test_formatwarning(self):
-        message = "msg"
-        category = Warning
-        file_name = os.path.splitext(warning_tests.__file__)[0] + '.py'
-        line_num = 3
-        file_line = linecache.getline(file_name, line_num).strip()
-        format = "%s:%s: %s: %s\n  %s\n"
-        expect = format % (file_name, line_num, category.__name__, message,
-                            file_line)
-        self.assertEqual(expect, self.module.formatwarning(message,
-                                                category, file_name, line_num))
-        # Test the 'line' argument.
-        file_line += " for the win!"
-        expect = format % (file_name, line_num, category.__name__, message,
-                            file_line)
-        self.assertEqual(expect, self.module.formatwarning(message,
-                                    category, file_name, line_num, file_line))
-
-    def test_showwarning(self):
-        file_name = os.path.splitext(warning_tests.__file__)[0] + '.py'
-        line_num = 3
-        expected_file_line = linecache.getline(file_name, line_num).strip()
-        message = 'msg'
-        category = Warning
-        file_object = StringIO.StringIO()
-        expect = self.module.formatwarning(message, category, file_name,
-                                            line_num)
-        self.module.showwarning(message, category, file_name, line_num,
-                                file_object)
-        self.assertEqual(file_object.getvalue(), expect)
-        # Test 'line' argument.
-        expected_file_line += "for the win!"
-        expect = self.module.formatwarning(message, category, file_name,
-                                            line_num, expected_file_line)
-        file_object = StringIO.StringIO()
-        self.module.showwarning(message, category, file_name, line_num,
-                                file_object, expected_file_line)
-        self.assertEqual(expect, file_object.getvalue())
-
-class CWarningsDisplayTests(BaseTest, WarningsDisplayTests):
-    module = c_warnings
-
-class PyWarningsDisplayTests(BaseTest, WarningsDisplayTests):
-    module = py_warnings
-
-
-class CatchWarningTests(BaseTest):
-
-    """Test catch_warnings()."""
-
-    def test_catch_warnings_restore(self):
-        wmod = self.module
-        orig_filters = wmod.filters
-        orig_showwarning = wmod.showwarning
-        # Ensure both showwarning and filters are restored when recording
-        with wmod.catch_warnings(module=wmod, record=True):
-            wmod.filters = wmod.showwarning = object()
-        self.assertTrue(wmod.filters is orig_filters)
-        self.assertTrue(wmod.showwarning is orig_showwarning)
-        # Same test, but with recording disabled
-        with wmod.catch_warnings(module=wmod, record=False):
-            wmod.filters = wmod.showwarning = object()
-        self.assertTrue(wmod.filters is orig_filters)
-        self.assertTrue(wmod.showwarning is orig_showwarning)
-
-    def test_catch_warnings_recording(self):
-        wmod = self.module
-        # Ensure warnings are recorded when requested
-        with wmod.catch_warnings(module=wmod, record=True) as w:
-            self.assertEqual(w, [])
-            self.assertTrue(type(w) is list)
-            wmod.simplefilter("always")
-            wmod.warn("foo")
-            self.assertEqual(str(w[-1].message), "foo")
-            wmod.warn("bar")
-            self.assertEqual(str(w[-1].message), "bar")
-            self.assertEqual(str(w[0].message), "foo")
-            self.assertEqual(str(w[1].message), "bar")
-            del w[:]
-            self.assertEqual(w, [])
-        # Ensure warnings are not recorded when not requested
-        orig_showwarning = wmod.showwarning
-        with wmod.catch_warnings(module=wmod, record=False) as w:
-            self.assertTrue(w is None)
-            self.assertTrue(wmod.showwarning is orig_showwarning)
-
-    def test_catch_warnings_reentry_guard(self):
-        wmod = self.module
-        # Ensure catch_warnings is protected against incorrect usage
-        x = wmod.catch_warnings(module=wmod, record=True)
-        self.assertRaises(RuntimeError, x.__exit__)
-        with x:
-            self.assertRaises(RuntimeError, x.__enter__)
-        # Same test, but with recording disabled
-        x = wmod.catch_warnings(module=wmod, record=False)
-        self.assertRaises(RuntimeError, x.__exit__)
-        with x:
-            self.assertRaises(RuntimeError, x.__enter__)
-
-    def test_catch_warnings_defaults(self):
-        wmod = self.module
-        orig_filters = wmod.filters
-        orig_showwarning = wmod.showwarning
-        # Ensure default behaviour is not to record warnings
-        with wmod.catch_warnings(module=wmod) as w:
-            self.assertTrue(w is None)
-            self.assertTrue(wmod.showwarning is orig_showwarning)
-            self.assertTrue(wmod.filters is not orig_filters)
-        self.assertTrue(wmod.filters is orig_filters)
-        if wmod is sys.modules['warnings']:
-            # Ensure the default module is this one
-            with wmod.catch_warnings() as w:
-                self.assertTrue(w is None)
-                self.assertTrue(wmod.showwarning is orig_showwarning)
-                self.assertTrue(wmod.filters is not orig_filters)
-            self.assertTrue(wmod.filters is orig_filters)
-
-    def test_check_warnings(self):
-        # Explicit tests for the test_support convenience wrapper
-        wmod = self.module
-        if wmod is not sys.modules['warnings']:
-            return
-        with test_support.check_warnings(quiet=False) as w:
-            self.assertEqual(w.warnings, [])
-            wmod.simplefilter("always")
-            wmod.warn("foo")
-            self.assertEqual(str(w.message), "foo")
-            wmod.warn("bar")
-            self.assertEqual(str(w.message), "bar")
-            self.assertEqual(str(w.warnings[0].message), "foo")
-            self.assertEqual(str(w.warnings[1].message), "bar")
-            w.reset()
-            self.assertEqual(w.warnings, [])
-
-        with test_support.check_warnings():
-            # defaults to quiet=True without argument
-            pass
-        with test_support.check_warnings(('foo', UserWarning)):
-            wmod.warn("foo")
-
-        with self.assertRaises(AssertionError):
-            with test_support.check_warnings(('', RuntimeWarning)):
-                # defaults to quiet=False with argument
-                pass
-        with self.assertRaises(AssertionError):
-            with test_support.check_warnings(('foo', RuntimeWarning)):
-                wmod.warn("foo")
-
-
-class CCatchWarningTests(CatchWarningTests):
-    module = c_warnings
-
-class PyCatchWarningTests(CatchWarningTests):
-    module = py_warnings
-
-
-class EnvironmentVariableTests(BaseTest):
-
-    def test_single_warning(self):
-        newenv = os.environ.copy()
-        newenv["PYTHONWARNINGS"] = "ignore::DeprecationWarning"
-        p = subprocess.Popen([sys.executable,
-                "-c", "import sys; sys.stdout.write(str(sys.warnoptions))"],
-                stdout=subprocess.PIPE, env=newenv)
-        self.assertEqual(p.communicate()[0], "['ignore::DeprecationWarning']")
-        self.assertEqual(p.wait(), 0)
-
-    def test_comma_separated_warnings(self):
-        newenv = os.environ.copy()
-        newenv["PYTHONWARNINGS"] = ("ignore::DeprecationWarning,"
-                                    "ignore::UnicodeWarning")
-        p = subprocess.Popen([sys.executable,
-                "-c", "import sys; sys.stdout.write(str(sys.warnoptions))"],
-                stdout=subprocess.PIPE, env=newenv)
-        self.assertEqual(p.communicate()[0],
-                "['ignore::DeprecationWarning', 'ignore::UnicodeWarning']")
-        self.assertEqual(p.wait(), 0)
-
-    def test_envvar_and_command_line(self):
-        newenv = os.environ.copy()
-        newenv["PYTHONWARNINGS"] = "ignore::DeprecationWarning"
-        p = subprocess.Popen([sys.executable, "-W" "ignore::UnicodeWarning",
-                "-c", "import sys; sys.stdout.write(str(sys.warnoptions))"],
-                stdout=subprocess.PIPE, env=newenv)
-        self.assertEqual(p.communicate()[0],
-                "['ignore::UnicodeWarning', 'ignore::DeprecationWarning']")
-        self.assertEqual(p.wait(), 0)
-
-class CEnvironmentVariableTests(EnvironmentVariableTests):
-    module = c_warnings
-
-class PyEnvironmentVariableTests(EnvironmentVariableTests):
-    module = py_warnings
-
-
-def test_main():
-    py_warnings.onceregistry.clear()
-    c_warnings.onceregistry.clear()
-    test_support.run_unittest(CFilterTests, PyFilterTests,
-                                CWarnTests, PyWarnTests,
-                                CWCmdLineTests, PyWCmdLineTests,
-                                _WarningsTests,
-                                CWarningsDisplayTests, PyWarningsDisplayTests,
-                                CCatchWarningTests, PyCatchWarningTests,
-                                CEnvironmentVariableTests,
-                                PyEnvironmentVariableTests
-                             )
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wave.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wave.py
deleted file mode 100644
index 9765c3f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wave.py
+++ /dev/null
@@ -1,45 +0,0 @@
-from test.test_support import TESTFN, run_unittest
-import os
-import wave
-import unittest
-
-nchannels = 2
-sampwidth = 2
-framerate = 8000
-nframes = 100
-
-class TestWave(unittest.TestCase):
-
-    def setUp(self):
-        self.f = None
-
-    def tearDown(self):
-        if self.f is not None:
-            self.f.close()
-        try:
-            os.remove(TESTFN)
-        except OSError:
-            pass
-
-    def test_it(self):
-        self.f = wave.open(TESTFN, 'wb')
-        self.f.setnchannels(nchannels)
-        self.f.setsampwidth(sampwidth)
-        self.f.setframerate(framerate)
-        self.f.setnframes(nframes)
-        output = '\0' * nframes * nchannels * sampwidth
-        self.f.writeframes(output)
-        self.f.close()
-
-        self.f = wave.open(TESTFN, 'rb')
-        self.assertEqual(nchannels, self.f.getnchannels())
-        self.assertEqual(sampwidth, self.f.getsampwidth())
-        self.assertEqual(framerate, self.f.getframerate())
-        self.assertEqual(nframes, self.f.getnframes())
-        self.assertEqual(self.f.readframes(nframes), output)
-
-def test_main():
-    run_unittest(TestWave)
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_weakref.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_weakref.py
deleted file mode 100644
index 6bd2f67..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_weakref.py
+++ /dev/null
@@ -1,1256 +0,0 @@
-import gc
-import sys
-import unittest
-import UserList
-import weakref
-import operator
-
-from test import test_support
-
-# Used in ReferencesTestCase.test_ref_created_during_del() .
-ref_from_del = None
-
-class C:
-    def method(self):
-        pass
-
-
-class Callable:
-    bar = None
-
-    def __call__(self, x):
-        self.bar = x
-
-
-def create_function():
-    def f(): pass
-    return f
-
-def create_bound_method():
-    return C().method
-
-def create_unbound_method():
-    return C.method
-
-
-class TestBase(unittest.TestCase):
-
-    def setUp(self):
-        self.cbcalled = 0
-
-    def callback(self, ref):
-        self.cbcalled += 1
-
-
-class ReferencesTestCase(TestBase):
-
-    def test_basic_ref(self):
-        self.check_basic_ref(C)
-        self.check_basic_ref(create_function)
-        self.check_basic_ref(create_bound_method)
-        self.check_basic_ref(create_unbound_method)
-
-        # Just make sure the tp_repr handler doesn't raise an exception.
-        # Live reference:
-        o = C()
-        wr = weakref.ref(o)
-        repr(wr)
-        # Dead reference:
-        del o
-        repr(wr)
-
-    def test_basic_callback(self):
-        self.check_basic_callback(C)
-        self.check_basic_callback(create_function)
-        self.check_basic_callback(create_bound_method)
-        self.check_basic_callback(create_unbound_method)
-
-    def test_multiple_callbacks(self):
-        o = C()
-        ref1 = weakref.ref(o, self.callback)
-        ref2 = weakref.ref(o, self.callback)
-        del o
-        self.assertTrue(ref1() is None,
-                     "expected reference to be invalidated")
-        self.assertTrue(ref2() is None,
-                     "expected reference to be invalidated")
-        self.assertTrue(self.cbcalled == 2,
-                     "callback not called the right number of times")
-
-    def test_multiple_selfref_callbacks(self):
-        # Make sure all references are invalidated before callbacks are called
-        #
-        # What's important here is that we're using the first
-        # reference in the callback invoked on the second reference
-        # (the most recently created ref is cleaned up first).  This
-        # tests that all references to the object are invalidated
-        # before any of the callbacks are invoked, so that we only
-        # have one invocation of _weakref.c:cleanup_helper() active
-        # for a particular object at a time.
-        #
-        def callback(object, self=self):
-            self.ref()
-        c = C()
-        self.ref = weakref.ref(c, callback)
-        ref1 = weakref.ref(c, callback)
-        del c
-
-    def test_proxy_ref(self):
-        o = C()
-        o.bar = 1
-        ref1 = weakref.proxy(o, self.callback)
-        ref2 = weakref.proxy(o, self.callback)
-        del o
-
-        def check(proxy):
-            proxy.bar
-
-        self.assertRaises(weakref.ReferenceError, check, ref1)
-        self.assertRaises(weakref.ReferenceError, check, ref2)
-        self.assertRaises(weakref.ReferenceError, bool, weakref.proxy(C()))
-        self.assertTrue(self.cbcalled == 2)
-
-    def check_basic_ref(self, factory):
-        o = factory()
-        ref = weakref.ref(o)
-        self.assertTrue(ref() is not None,
-                     "weak reference to live object should be live")
-        o2 = ref()
-        self.assertTrue(o is o2,
-                     "<ref>() should return original object if live")
-
-    def check_basic_callback(self, factory):
-        self.cbcalled = 0
-        o = factory()
-        ref = weakref.ref(o, self.callback)
-        del o
-        self.assertTrue(self.cbcalled == 1,
-                     "callback did not properly set 'cbcalled'")
-        self.assertTrue(ref() is None,
-                     "ref2 should be dead after deleting object reference")
-
-    def test_ref_reuse(self):
-        o = C()
-        ref1 = weakref.ref(o)
-        # create a proxy to make sure that there's an intervening creation
-        # between these two; it should make no difference
-        proxy = weakref.proxy(o)
-        ref2 = weakref.ref(o)
-        self.assertTrue(ref1 is ref2,
-                     "reference object w/out callback should be re-used")
-
-        o = C()
-        proxy = weakref.proxy(o)
-        ref1 = weakref.ref(o)
-        ref2 = weakref.ref(o)
-        self.assertTrue(ref1 is ref2,
-                     "reference object w/out callback should be re-used")
-        self.assertTrue(weakref.getweakrefcount(o) == 2,
-                     "wrong weak ref count for object")
-        del proxy
-        self.assertTrue(weakref.getweakrefcount(o) == 1,
-                     "wrong weak ref count for object after deleting proxy")
-
-    def test_proxy_reuse(self):
-        o = C()
-        proxy1 = weakref.proxy(o)
-        ref = weakref.ref(o)
-        proxy2 = weakref.proxy(o)
-        self.assertTrue(proxy1 is proxy2,
-                     "proxy object w/out callback should have been re-used")
-
-    def test_basic_proxy(self):
-        o = C()
-        self.check_proxy(o, weakref.proxy(o))
-
-        L = UserList.UserList()
-        p = weakref.proxy(L)
-        self.assertFalse(p, "proxy for empty UserList should be false")
-        p.append(12)
-        self.assertEqual(len(L), 1)
-        self.assertTrue(p, "proxy for non-empty UserList should be true")
-        with test_support.check_py3k_warnings():
-            p[:] = [2, 3]
-        self.assertEqual(len(L), 2)
-        self.assertEqual(len(p), 2)
-        self.assertIn(3, p, "proxy didn't support __contains__() properly")
-        p[1] = 5
-        self.assertEqual(L[1], 5)
-        self.assertEqual(p[1], 5)
-        L2 = UserList.UserList(L)
-        p2 = weakref.proxy(L2)
-        self.assertEqual(p, p2)
-        ## self.assertEqual(repr(L2), repr(p2))
-        L3 = UserList.UserList(range(10))
-        p3 = weakref.proxy(L3)
-        with test_support.check_py3k_warnings():
-            self.assertEqual(L3[:], p3[:])
-            self.assertEqual(L3[5:], p3[5:])
-            self.assertEqual(L3[:5], p3[:5])
-            self.assertEqual(L3[2:5], p3[2:5])
-
-    def test_proxy_unicode(self):
-        # See bug 5037
-        class C(object):
-            def __str__(self):
-                return "string"
-            def __unicode__(self):
-                return u"unicode"
-        instance = C()
-        self.assertIn("__unicode__", dir(weakref.proxy(instance)))
-        self.assertEqual(unicode(weakref.proxy(instance)), u"unicode")
-
-    def test_proxy_index(self):
-        class C:
-            def __index__(self):
-                return 10
-        o = C()
-        p = weakref.proxy(o)
-        self.assertEqual(operator.index(p), 10)
-
-    def test_proxy_div(self):
-        class C:
-            def __floordiv__(self, other):
-                return 42
-            def __ifloordiv__(self, other):
-                return 21
-        o = C()
-        p = weakref.proxy(o)
-        self.assertEqual(p // 5, 42)
-        p //= 5
-        self.assertEqual(p, 21)
-
-    # The PyWeakref_* C API is documented as allowing either NULL or
-    # None as the value for the callback, where either means "no
-    # callback".  The "no callback" ref and proxy objects are supposed
-    # to be shared so long as they exist by all callers so long as
-    # they are active.  In Python 2.3.3 and earlier, this guarantee
-    # was not honored, and was broken in different ways for
-    # PyWeakref_NewRef() and PyWeakref_NewProxy().  (Two tests.)
-
-    def test_shared_ref_without_callback(self):
-        self.check_shared_without_callback(weakref.ref)
-
-    def test_shared_proxy_without_callback(self):
-        self.check_shared_without_callback(weakref.proxy)
-
-    def check_shared_without_callback(self, makeref):
-        o = Object(1)
-        p1 = makeref(o, None)
-        p2 = makeref(o, None)
-        self.assertTrue(p1 is p2, "both callbacks were None in the C API")
-        del p1, p2
-        p1 = makeref(o)
-        p2 = makeref(o, None)
-        self.assertTrue(p1 is p2, "callbacks were NULL, None in the C API")
-        del p1, p2
-        p1 = makeref(o)
-        p2 = makeref(o)
-        self.assertTrue(p1 is p2, "both callbacks were NULL in the C API")
-        del p1, p2
-        p1 = makeref(o, None)
-        p2 = makeref(o)
-        self.assertTrue(p1 is p2, "callbacks were None, NULL in the C API")
-
-    def test_callable_proxy(self):
-        o = Callable()
-        ref1 = weakref.proxy(o)
-
-        self.check_proxy(o, ref1)
-
-        self.assertTrue(type(ref1) is weakref.CallableProxyType,
-                     "proxy is not of callable type")
-        ref1('twinkies!')
-        self.assertTrue(o.bar == 'twinkies!',
-                     "call through proxy not passed through to original")
-        ref1(x='Splat.')
-        self.assertTrue(o.bar == 'Splat.',
-                     "call through proxy not passed through to original")
-
-        # expect due to too few args
-        self.assertRaises(TypeError, ref1)
-
-        # expect due to too many args
-        self.assertRaises(TypeError, ref1, 1, 2, 3)
-
-    def check_proxy(self, o, proxy):
-        o.foo = 1
-        self.assertTrue(proxy.foo == 1,
-                     "proxy does not reflect attribute addition")
-        o.foo = 2
-        self.assertTrue(proxy.foo == 2,
-                     "proxy does not reflect attribute modification")
-        del o.foo
-        self.assertTrue(not hasattr(proxy, 'foo'),
-                     "proxy does not reflect attribute removal")
-
-        proxy.foo = 1
-        self.assertTrue(o.foo == 1,
-                     "object does not reflect attribute addition via proxy")
-        proxy.foo = 2
-        self.assertTrue(
-            o.foo == 2,
-            "object does not reflect attribute modification via proxy")
-        del proxy.foo
-        self.assertTrue(not hasattr(o, 'foo'),
-                     "object does not reflect attribute removal via proxy")
-
-    def test_proxy_deletion(self):
-        # Test clearing of SF bug #762891
-        class Foo:
-            result = None
-            def __delitem__(self, accessor):
-                self.result = accessor
-        g = Foo()
-        f = weakref.proxy(g)
-        del f[0]
-        self.assertEqual(f.result, 0)
-
-    def test_proxy_bool(self):
-        # Test clearing of SF bug #1170766
-        class List(list): pass
-        lyst = List()
-        self.assertEqual(bool(weakref.proxy(lyst)), bool(lyst))
-
-    def test_getweakrefcount(self):
-        o = C()
-        ref1 = weakref.ref(o)
-        ref2 = weakref.ref(o, self.callback)
-        self.assertTrue(weakref.getweakrefcount(o) == 2,
-                     "got wrong number of weak reference objects")
-
-        proxy1 = weakref.proxy(o)
-        proxy2 = weakref.proxy(o, self.callback)
-        self.assertTrue(weakref.getweakrefcount(o) == 4,
-                     "got wrong number of weak reference objects")
-
-        del ref1, ref2, proxy1, proxy2
-        self.assertTrue(weakref.getweakrefcount(o) == 0,
-                     "weak reference objects not unlinked from"
-                     " referent when discarded.")
-
-        # assumes ints do not support weakrefs
-        self.assertTrue(weakref.getweakrefcount(1) == 0,
-                     "got wrong number of weak reference objects for int")
-
-    def test_getweakrefs(self):
-        o = C()
-        ref1 = weakref.ref(o, self.callback)
-        ref2 = weakref.ref(o, self.callback)
-        del ref1
-        self.assertTrue(weakref.getweakrefs(o) == [ref2],
-                     "list of refs does not match")
-
-        o = C()
-        ref1 = weakref.ref(o, self.callback)
-        ref2 = weakref.ref(o, self.callback)
-        del ref2
-        self.assertTrue(weakref.getweakrefs(o) == [ref1],
-                     "list of refs does not match")
-
-        del ref1
-        self.assertTrue(weakref.getweakrefs(o) == [],
-                     "list of refs not cleared")
-
-        # assumes ints do not support weakrefs
-        self.assertTrue(weakref.getweakrefs(1) == [],
-                     "list of refs does not match for int")
-
-    def test_newstyle_number_ops(self):
-        class F(float):
-            pass
-        f = F(2.0)
-        p = weakref.proxy(f)
-        self.assertTrue(p + 1.0 == 3.0)
-        self.assertTrue(1.0 + p == 3.0)  # this used to SEGV
-
-    def test_callbacks_protected(self):
-        # Callbacks protected from already-set exceptions?
-        # Regression test for SF bug #478534.
-        class BogusError(Exception):
-            pass
-        data = {}
-        def remove(k):
-            del data[k]
-        def encapsulate():
-            f = lambda : ()
-            data[weakref.ref(f, remove)] = None
-            raise BogusError
-        try:
-            encapsulate()
-        except BogusError:
-            pass
-        else:
-            self.fail("exception not properly restored")
-        try:
-            encapsulate()
-        except BogusError:
-            pass
-        else:
-            self.fail("exception not properly restored")
-
-    def test_sf_bug_840829(self):
-        # "weakref callbacks and gc corrupt memory"
-        # subtype_dealloc erroneously exposed a new-style instance
-        # already in the process of getting deallocated to gc,
-        # causing double-deallocation if the instance had a weakref
-        # callback that triggered gc.
-        # If the bug exists, there probably won't be an obvious symptom
-        # in a release build.  In a debug build, a segfault will occur
-        # when the second attempt to remove the instance from the "list
-        # of all objects" occurs.
-
-        import gc
-
-        class C(object):
-            pass
-
-        c = C()
-        wr = weakref.ref(c, lambda ignore: gc.collect())
-        del c
-
-        # There endeth the first part.  It gets worse.
-        del wr
-
-        c1 = C()
-        c1.i = C()
-        wr = weakref.ref(c1.i, lambda ignore: gc.collect())
-
-        c2 = C()
-        c2.c1 = c1
-        del c1  # still alive because c2 points to it
-
-        # Now when subtype_dealloc gets called on c2, it's not enough just
-        # that c2 is immune from gc while the weakref callbacks associated
-        # with c2 execute (there are none in this 2nd half of the test, btw).
-        # subtype_dealloc goes on to call the base classes' deallocs too,
-        # so any gc triggered by weakref callbacks associated with anything
-        # torn down by a base class dealloc can also trigger double
-        # deallocation of c2.
-        del c2
-
-    def test_callback_in_cycle_1(self):
-        import gc
-
-        class J(object):
-            pass
-
-        class II(object):
-            def acallback(self, ignore):
-                self.J
-
-        I = II()
-        I.J = J
-        I.wr = weakref.ref(J, I.acallback)
-
-        # Now J and II are each in a self-cycle (as all new-style class
-        # objects are, since their __mro__ points back to them).  I holds
-        # both a weak reference (I.wr) and a strong reference (I.J) to class
-        # J.  I is also in a cycle (I.wr points to a weakref that references
-        # I.acallback).  When we del these three, they all become trash, but
-        # the cycles prevent any of them from getting cleaned up immediately.
-        # Instead they have to wait for cyclic gc to deduce that they're
-        # trash.
-        #
-        # gc used to call tp_clear on all of them, and the order in which
-        # it does that is pretty accidental.  The exact order in which we
-        # built up these things manages to provoke gc into running tp_clear
-        # in just the right order (I last).  Calling tp_clear on II leaves
-        # behind an insane class object (its __mro__ becomes NULL).  Calling
-        # tp_clear on J breaks its self-cycle, but J doesn't get deleted
-        # just then because of the strong reference from I.J.  Calling
-        # tp_clear on I starts to clear I's __dict__, and just happens to
-        # clear I.J first -- I.wr is still intact.  That removes the last
-        # reference to J, which triggers the weakref callback.  The callback
-        # tries to do "self.J", and instances of new-style classes look up
-        # attributes ("J") in the class dict first.  The class (II) wants to
-        # search II.__mro__, but that's NULL.   The result was a segfault in
-        # a release build, and an assert failure in a debug build.
-        del I, J, II
-        gc.collect()
-
-    def test_callback_in_cycle_2(self):
-        import gc
-
-        # This is just like test_callback_in_cycle_1, except that II is an
-        # old-style class.  The symptom is different then:  an instance of an
-        # old-style class looks in its own __dict__ first.  'J' happens to
-        # get cleared from I.__dict__ before 'wr', and 'J' was never in II's
-        # __dict__, so the attribute isn't found.  The difference is that
-        # the old-style II doesn't have a NULL __mro__ (it doesn't have any
-        # __mro__), so no segfault occurs.  Instead it got:
-        #    test_callback_in_cycle_2 (__main__.ReferencesTestCase) ...
-        #    Exception exceptions.AttributeError:
-        #   "II instance has no attribute 'J'" in <bound method II.acallback
-        #       of <?.II instance at 0x00B9B4B8>> ignored
-
-        class J(object):
-            pass
-
-        class II:
-            def acallback(self, ignore):
-                self.J
-
-        I = II()
-        I.J = J
-        I.wr = weakref.ref(J, I.acallback)
-
-        del I, J, II
-        gc.collect()
-
-    def test_callback_in_cycle_3(self):
-        import gc
-
-        # This one broke the first patch that fixed the last two.  In this
-        # case, the objects reachable from the callback aren't also reachable
-        # from the object (c1) *triggering* the callback:  you can get to
-        # c1 from c2, but not vice-versa.  The result was that c2's __dict__
-        # got tp_clear'ed by the time the c2.cb callback got invoked.
-
-        class C:
-            def cb(self, ignore):
-                self.me
-                self.c1
-                self.wr
-
-        c1, c2 = C(), C()
-
-        c2.me = c2
-        c2.c1 = c1
-        c2.wr = weakref.ref(c1, c2.cb)
-
-        del c1, c2
-        gc.collect()
-
-    def test_callback_in_cycle_4(self):
-        import gc
-
-        # Like test_callback_in_cycle_3, except c2 and c1 have different
-        # classes.  c2's class (C) isn't reachable from c1 then, so protecting
-        # objects reachable from the dying object (c1) isn't enough to stop
-        # c2's class (C) from getting tp_clear'ed before c2.cb is invoked.
-        # The result was a segfault (C.__mro__ was NULL when the callback
-        # tried to look up self.me).
-
-        class C(object):
-            def cb(self, ignore):
-                self.me
-                self.c1
-                self.wr
-
-        class D:
-            pass
-
-        c1, c2 = D(), C()
-
-        c2.me = c2
-        c2.c1 = c1
-        c2.wr = weakref.ref(c1, c2.cb)
-
-        del c1, c2, C, D
-        gc.collect()
-
-    def test_callback_in_cycle_resurrection(self):
-        import gc
-
-        # Do something nasty in a weakref callback:  resurrect objects
-        # from dead cycles.  For this to be attempted, the weakref and
-        # its callback must also be part of the cyclic trash (else the
-        # objects reachable via the callback couldn't be in cyclic trash
-        # to begin with -- the callback would act like an external root).
-        # But gc clears trash weakrefs with callbacks early now, which
-        # disables the callbacks, so the callbacks shouldn't get called
-        # at all (and so nothing actually gets resurrected).
-
-        alist = []
-        class C(object):
-            def __init__(self, value):
-                self.attribute = value
-
-            def acallback(self, ignore):
-                alist.append(self.c)
-
-        c1, c2 = C(1), C(2)
-        c1.c = c2
-        c2.c = c1
-        c1.wr = weakref.ref(c2, c1.acallback)
-        c2.wr = weakref.ref(c1, c2.acallback)
-
-        def C_went_away(ignore):
-            alist.append("C went away")
-        wr = weakref.ref(C, C_went_away)
-
-        del c1, c2, C   # make them all trash
-        self.assertEqual(alist, [])  # del isn't enough to reclaim anything
-
-        gc.collect()
-        # c1.wr and c2.wr were part of the cyclic trash, so should have
-        # been cleared without their callbacks executing.  OTOH, the weakref
-        # to C is bound to a function local (wr), and wasn't trash, so that
-        # callback should have been invoked when C went away.
-        self.assertEqual(alist, ["C went away"])
-        # The remaining weakref should be dead now (its callback ran).
-        self.assertEqual(wr(), None)
-
-        del alist[:]
-        gc.collect()
-        self.assertEqual(alist, [])
-
-    def test_callbacks_on_callback(self):
-        import gc
-
-        # Set up weakref callbacks *on* weakref callbacks.
-        alist = []
-        def safe_callback(ignore):
-            alist.append("safe_callback called")
-
-        class C(object):
-            def cb(self, ignore):
-                alist.append("cb called")
-
-        c, d = C(), C()
-        c.other = d
-        d.other = c
-        callback = c.cb
-        c.wr = weakref.ref(d, callback)     # this won't trigger
-        d.wr = weakref.ref(callback, d.cb)  # ditto
-        external_wr = weakref.ref(callback, safe_callback)  # but this will
-        self.assertTrue(external_wr() is callback)
-
-        # The weakrefs attached to c and d should get cleared, so that
-        # C.cb is never called.  But external_wr isn't part of the cyclic
-        # trash, and no cyclic trash is reachable from it, so safe_callback
-        # should get invoked when the bound method object callback (c.cb)
-        # -- which is itself a callback, and also part of the cyclic trash --
-        # gets reclaimed at the end of gc.
-
-        del callback, c, d, C
-        self.assertEqual(alist, [])  # del isn't enough to clean up cycles
-        gc.collect()
-        self.assertEqual(alist, ["safe_callback called"])
-        self.assertEqual(external_wr(), None)
-
-        del alist[:]
-        gc.collect()
-        self.assertEqual(alist, [])
-
-    def test_gc_during_ref_creation(self):
-        self.check_gc_during_creation(weakref.ref)
-
-    def test_gc_during_proxy_creation(self):
-        self.check_gc_during_creation(weakref.proxy)
-
-    def check_gc_during_creation(self, makeref):
-        thresholds = gc.get_threshold()
-        gc.set_threshold(1, 1, 1)
-        gc.collect()
-        class A:
-            pass
-
-        def callback(*args):
-            pass
-
-        referenced = A()
-
-        a = A()
-        a.a = a
-        a.wr = makeref(referenced)
-
-        try:
-            # now make sure the object and the ref get labeled as
-            # cyclic trash:
-            a = A()
-            weakref.ref(referenced, callback)
-
-        finally:
-            gc.set_threshold(*thresholds)
-
-    def test_ref_created_during_del(self):
-        # Bug #1377858
-        # A weakref created in an object's __del__() would crash the
-        # interpreter when the weakref was cleaned up since it would refer to
-        # non-existent memory.  This test should not segfault the interpreter.
-        class Target(object):
-            def __del__(self):
-                global ref_from_del
-                ref_from_del = weakref.ref(self)
-
-        w = Target()
-
-    def test_init(self):
-        # Issue 3634
-        # <weakref to class>.__init__() doesn't check errors correctly
-        r = weakref.ref(Exception)
-        self.assertRaises(TypeError, r.__init__, 0, 0, 0, 0, 0)
-        # No exception should be raised here
-        gc.collect()
-
-    def test_classes(self):
-        # Check that both old-style classes and new-style classes
-        # are weakrefable.
-        class A(object):
-            pass
-        class B:
-            pass
-        l = []
-        weakref.ref(int)
-        a = weakref.ref(A, l.append)
-        A = None
-        gc.collect()
-        self.assertEqual(a(), None)
-        self.assertEqual(l, [a])
-        b = weakref.ref(B, l.append)
-        B = None
-        gc.collect()
-        self.assertEqual(b(), None)
-        self.assertEqual(l, [a, b])
-
-
-class SubclassableWeakrefTestCase(TestBase):
-
-    def test_subclass_refs(self):
-        class MyRef(weakref.ref):
-            def __init__(self, ob, callback=None, value=42):
-                self.value = value
-                super(MyRef, self).__init__(ob, callback)
-            def __call__(self):
-                self.called = True
-                return super(MyRef, self).__call__()
-        o = Object("foo")
-        mr = MyRef(o, value=24)
-        self.assertTrue(mr() is o)
-        self.assertTrue(mr.called)
-        self.assertEqual(mr.value, 24)
-        del o
-        self.assertTrue(mr() is None)
-        self.assertTrue(mr.called)
-
-    def test_subclass_refs_dont_replace_standard_refs(self):
-        class MyRef(weakref.ref):
-            pass
-        o = Object(42)
-        r1 = MyRef(o)
-        r2 = weakref.ref(o)
-        self.assertTrue(r1 is not r2)
-        self.assertEqual(weakref.getweakrefs(o), [r2, r1])
-        self.assertEqual(weakref.getweakrefcount(o), 2)
-        r3 = MyRef(o)
-        self.assertEqual(weakref.getweakrefcount(o), 3)
-        refs = weakref.getweakrefs(o)
-        self.assertEqual(len(refs), 3)
-        self.assertTrue(r2 is refs[0])
-        self.assertIn(r1, refs[1:])
-        self.assertIn(r3, refs[1:])
-
-    def test_subclass_refs_dont_conflate_callbacks(self):
-        class MyRef(weakref.ref):
-            pass
-        o = Object(42)
-        r1 = MyRef(o, id)
-        r2 = MyRef(o, str)
-        self.assertTrue(r1 is not r2)
-        refs = weakref.getweakrefs(o)
-        self.assertIn(r1, refs)
-        self.assertIn(r2, refs)
-
-    def test_subclass_refs_with_slots(self):
-        class MyRef(weakref.ref):
-            __slots__ = "slot1", "slot2"
-            def __new__(type, ob, callback, slot1, slot2):
-                return weakref.ref.__new__(type, ob, callback)
-            def __init__(self, ob, callback, slot1, slot2):
-                self.slot1 = slot1
-                self.slot2 = slot2
-            def meth(self):
-                return self.slot1 + self.slot2
-        o = Object(42)
-        r = MyRef(o, None, "abc", "def")
-        self.assertEqual(r.slot1, "abc")
-        self.assertEqual(r.slot2, "def")
-        self.assertEqual(r.meth(), "abcdef")
-        self.assertFalse(hasattr(r, "__dict__"))
-
-    def test_subclass_refs_with_cycle(self):
-        # Bug #3110
-        # An instance of a weakref subclass can have attributes.
-        # If such a weakref holds the only strong reference to the object,
-        # deleting the weakref will delete the object. In this case,
-        # the callback must not be called, because the ref object is
-        # being deleted.
-        class MyRef(weakref.ref):
-            pass
-
-        # Use a local callback, for "regrtest -R::"
-        # to detect refcounting problems
-        def callback(w):
-            self.cbcalled += 1
-
-        o = C()
-        r1 = MyRef(o, callback)
-        r1.o = o
-        del o
-
-        del r1 # Used to crash here
-
-        self.assertEqual(self.cbcalled, 0)
-
-        # Same test, with two weakrefs to the same object
-        # (since code paths are different)
-        o = C()
-        r1 = MyRef(o, callback)
-        r2 = MyRef(o, callback)
-        r1.r = r2
-        r2.o = o
-        del o
-        del r2
-
-        del r1 # Used to crash here
-
-        self.assertEqual(self.cbcalled, 0)
-
-
-class Object:
-    def __init__(self, arg):
-        self.arg = arg
-    def __repr__(self):
-        return "<Object %r>" % self.arg
-
-
-class MappingTestCase(TestBase):
-
-    COUNT = 10
-
-    def test_weak_values(self):
-        #
-        #  This exercises d.copy(), d.items(), d[], del d[], len(d).
-        #
-        dict, objects = self.make_weak_valued_dict()
-        for o in objects:
-            self.assertTrue(weakref.getweakrefcount(o) == 1,
-                         "wrong number of weak references to %r!" % o)
-            self.assertTrue(o is dict[o.arg],
-                         "wrong object returned by weak dict!")
-        items1 = dict.items()
-        items2 = dict.copy().items()
-        items1.sort()
-        items2.sort()
-        self.assertTrue(items1 == items2,
-                     "cloning of weak-valued dictionary did not work!")
-        del items1, items2
-        self.assertTrue(len(dict) == self.COUNT)
-        del objects[0]
-        self.assertTrue(len(dict) == (self.COUNT - 1),
-                     "deleting object did not cause dictionary update")
-        del objects, o
-        self.assertTrue(len(dict) == 0,
-                     "deleting the values did not clear the dictionary")
-        # regression on SF bug #447152:
-        dict = weakref.WeakValueDictionary()
-        self.assertRaises(KeyError, dict.__getitem__, 1)
-        dict[2] = C()
-        self.assertRaises(KeyError, dict.__getitem__, 2)
-
-    def test_weak_keys(self):
-        #
-        #  This exercises d.copy(), d.items(), d[] = v, d[], del d[],
-        #  len(d), in d.
-        #
-        dict, objects = self.make_weak_keyed_dict()
-        for o in objects:
-            self.assertTrue(weakref.getweakrefcount(o) == 1,
-                         "wrong number of weak references to %r!" % o)
-            self.assertTrue(o.arg is dict[o],
-                         "wrong object returned by weak dict!")
-        items1 = dict.items()
-        items2 = dict.copy().items()
-        self.assertTrue(set(items1) == set(items2),
-                     "cloning of weak-keyed dictionary did not work!")
-        del items1, items2
-        self.assertTrue(len(dict) == self.COUNT)
-        del objects[0]
-        self.assertTrue(len(dict) == (self.COUNT - 1),
-                     "deleting object did not cause dictionary update")
-        del objects, o
-        self.assertTrue(len(dict) == 0,
-                     "deleting the keys did not clear the dictionary")
-        o = Object(42)
-        dict[o] = "What is the meaning of the universe?"
-        self.assertIn(o, dict)
-        self.assertNotIn(34, dict)
-
-    def test_weak_keyed_iters(self):
-        dict, objects = self.make_weak_keyed_dict()
-        self.check_iters(dict)
-
-        # Test keyrefs()
-        refs = dict.keyrefs()
-        self.assertEqual(len(refs), len(objects))
-        objects2 = list(objects)
-        for wr in refs:
-            ob = wr()
-            self.assertIn(ob, dict)
-            self.assertEqual(ob.arg, dict[ob])
-            objects2.remove(ob)
-        self.assertEqual(len(objects2), 0)
-
-        # Test iterkeyrefs()
-        objects2 = list(objects)
-        self.assertEqual(len(list(dict.iterkeyrefs())), len(objects))
-        for wr in dict.iterkeyrefs():
-            ob = wr()
-            self.assertIn(ob, dict)
-            self.assertEqual(ob.arg, dict[ob])
-            objects2.remove(ob)
-        self.assertEqual(len(objects2), 0)
-
-    def test_weak_valued_iters(self):
-        dict, objects = self.make_weak_valued_dict()
-        self.check_iters(dict)
-
-        # Test valuerefs()
-        refs = dict.valuerefs()
-        self.assertEqual(len(refs), len(objects))
-        objects2 = list(objects)
-        for wr in refs:
-            ob = wr()
-            self.assertEqual(ob, dict[ob.arg])
-            self.assertEqual(ob.arg, dict[ob.arg].arg)
-            objects2.remove(ob)
-        self.assertEqual(len(objects2), 0)
-
-        # Test itervaluerefs()
-        objects2 = list(objects)
-        self.assertEqual(len(list(dict.itervaluerefs())), len(objects))
-        for wr in dict.itervaluerefs():
-            ob = wr()
-            self.assertEqual(ob, dict[ob.arg])
-            self.assertEqual(ob.arg, dict[ob.arg].arg)
-            objects2.remove(ob)
-        self.assertEqual(len(objects2), 0)
-
-    def check_iters(self, dict):
-        # item iterator:
-        items = dict.items()
-        for item in dict.iteritems():
-            items.remove(item)
-        self.assertTrue(len(items) == 0, "iteritems() did not touch all items")
-
-        # key iterator, via __iter__():
-        keys = dict.keys()
-        for k in dict:
-            keys.remove(k)
-        self.assertTrue(len(keys) == 0, "__iter__() did not touch all keys")
-
-        # key iterator, via iterkeys():
-        keys = dict.keys()
-        for k in dict.iterkeys():
-            keys.remove(k)
-        self.assertTrue(len(keys) == 0, "iterkeys() did not touch all keys")
-
-        # value iterator:
-        values = dict.values()
-        for v in dict.itervalues():
-            values.remove(v)
-        self.assertTrue(len(values) == 0,
-                     "itervalues() did not touch all values")
-
-    def test_make_weak_keyed_dict_from_dict(self):
-        o = Object(3)
-        dict = weakref.WeakKeyDictionary({o:364})
-        self.assertTrue(dict[o] == 364)
-
-    def test_make_weak_keyed_dict_from_weak_keyed_dict(self):
-        o = Object(3)
-        dict = weakref.WeakKeyDictionary({o:364})
-        dict2 = weakref.WeakKeyDictionary(dict)
-        self.assertTrue(dict[o] == 364)
-
-    def make_weak_keyed_dict(self):
-        dict = weakref.WeakKeyDictionary()
-        objects = map(Object, range(self.COUNT))
-        for o in objects:
-            dict[o] = o.arg
-        return dict, objects
-
-    def make_weak_valued_dict(self):
-        dict = weakref.WeakValueDictionary()
-        objects = map(Object, range(self.COUNT))
-        for o in objects:
-            dict[o.arg] = o
-        return dict, objects
-
-    def check_popitem(self, klass, key1, value1, key2, value2):
-        weakdict = klass()
-        weakdict[key1] = value1
-        weakdict[key2] = value2
-        self.assertTrue(len(weakdict) == 2)
-        k, v = weakdict.popitem()
-        self.assertTrue(len(weakdict) == 1)
-        if k is key1:
-            self.assertTrue(v is value1)
-        else:
-            self.assertTrue(v is value2)
-        k, v = weakdict.popitem()
-        self.assertTrue(len(weakdict) == 0)
-        if k is key1:
-            self.assertTrue(v is value1)
-        else:
-            self.assertTrue(v is value2)
-
-    def test_weak_valued_dict_popitem(self):
-        self.check_popitem(weakref.WeakValueDictionary,
-                           "key1", C(), "key2", C())
-
-    def test_weak_keyed_dict_popitem(self):
-        self.check_popitem(weakref.WeakKeyDictionary,
-                           C(), "value 1", C(), "value 2")
-
-    def check_setdefault(self, klass, key, value1, value2):
-        self.assertTrue(value1 is not value2,
-                     "invalid test"
-                     " -- value parameters must be distinct objects")
-        weakdict = klass()
-        o = weakdict.setdefault(key, value1)
-        self.assertIs(o, value1)
-        self.assertIn(key, weakdict)
-        self.assertIs(weakdict.get(key), value1)
-        self.assertIs(weakdict[key], value1)
-
-        o = weakdict.setdefault(key, value2)
-        self.assertIs(o, value1)
-        self.assertIn(key, weakdict)
-        self.assertIs(weakdict.get(key), value1)
-        self.assertIs(weakdict[key], value1)
-
-    def test_weak_valued_dict_setdefault(self):
-        self.check_setdefault(weakref.WeakValueDictionary,
-                              "key", C(), C())
-
-    def test_weak_keyed_dict_setdefault(self):
-        self.check_setdefault(weakref.WeakKeyDictionary,
-                              C(), "value 1", "value 2")
-
-    def check_update(self, klass, dict):
-        #
-        #  This exercises d.update(), len(d), d.keys(), in d,
-        #  d.get(), d[].
-        #
-        weakdict = klass()
-        weakdict.update(dict)
-        self.assertEqual(len(weakdict), len(dict))
-        for k in weakdict.keys():
-            self.assertIn(k, dict,
-                         "mysterious new key appeared in weak dict")
-            v = dict.get(k)
-            self.assertIs(v, weakdict[k])
-            self.assertIs(v, weakdict.get(k))
-        for k in dict.keys():
-            self.assertIn(k, weakdict,
-                         "original key disappeared in weak dict")
-            v = dict[k]
-            self.assertIs(v, weakdict[k])
-            self.assertIs(v, weakdict.get(k))
-
-    def test_weak_valued_dict_update(self):
-        self.check_update(weakref.WeakValueDictionary,
-                          {1: C(), 'a': C(), C(): C()})
-
-    def test_weak_keyed_dict_update(self):
-        self.check_update(weakref.WeakKeyDictionary,
-                          {C(): 1, C(): 2, C(): 3})
-
-    def test_weak_keyed_delitem(self):
-        d = weakref.WeakKeyDictionary()
-        o1 = Object('1')
-        o2 = Object('2')
-        d[o1] = 'something'
-        d[o2] = 'something'
-        self.assertTrue(len(d) == 2)
-        del d[o1]
-        self.assertTrue(len(d) == 1)
-        self.assertTrue(d.keys() == [o2])
-
-    def test_weak_valued_delitem(self):
-        d = weakref.WeakValueDictionary()
-        o1 = Object('1')
-        o2 = Object('2')
-        d['something'] = o1
-        d['something else'] = o2
-        self.assertTrue(len(d) == 2)
-        del d['something']
-        self.assertTrue(len(d) == 1)
-        self.assertTrue(d.items() == [('something else', o2)])
-
-    def test_weak_keyed_bad_delitem(self):
-        d = weakref.WeakKeyDictionary()
-        o = Object('1')
-        # An attempt to delete an object that isn't there should raise
-        # KeyError.  It didn't before 2.3.
-        self.assertRaises(KeyError, d.__delitem__, o)
-        self.assertRaises(KeyError, d.__getitem__, o)
-
-        # If a key isn't of a weakly referencable type, __getitem__ and
-        # __setitem__ raise TypeError.  __delitem__ should too.
-        self.assertRaises(TypeError, d.__delitem__,  13)
-        self.assertRaises(TypeError, d.__getitem__,  13)
-        self.assertRaises(TypeError, d.__setitem__,  13, 13)
-
-    def test_weak_keyed_cascading_deletes(self):
-        # SF bug 742860.  For some reason, before 2.3 __delitem__ iterated
-        # over the keys via self.data.iterkeys().  If things vanished from
-        # the dict during this (or got added), that caused a RuntimeError.
-
-        d = weakref.WeakKeyDictionary()
-        mutate = False
-
-        class C(object):
-            def __init__(self, i):
-                self.value = i
-            def __hash__(self):
-                return hash(self.value)
-            def __eq__(self, other):
-                if mutate:
-                    # Side effect that mutates the dict, by removing the
-                    # last strong reference to a key.
-                    del objs[-1]
-                return self.value == other.value
-
-        objs = [C(i) for i in range(4)]
-        for o in objs:
-            d[o] = o.value
-        del o   # now the only strong references to keys are in objs
-        # Find the order in which iterkeys sees the keys.
-        objs = d.keys()
-        # Reverse it, so that the iteration implementation of __delitem__
-        # has to keep looping to find the first object we delete.
-        objs.reverse()
-
-        # Turn on mutation in C.__eq__.  The first time thru the loop,
-        # under the iterkeys() business the first comparison will delete
-        # the last item iterkeys() would see, and that causes a
-        #     RuntimeError: dictionary changed size during iteration
-        # when the iterkeys() loop goes around to try comparing the next
-        # key.  After this was fixed, it just deletes the last object *our*
-        # "for o in obj" loop would have gotten to.
-        mutate = True
-        count = 0
-        for o in objs:
-            count += 1
-            del d[o]
-        self.assertEqual(len(d), 0)
-        self.assertEqual(count, 2)
-
-from test import mapping_tests
-
-class WeakValueDictionaryTestCase(mapping_tests.BasicTestMappingProtocol):
-    """Check that WeakValueDictionary conforms to the mapping protocol"""
-    __ref = {"key1":Object(1), "key2":Object(2), "key3":Object(3)}
-    type2test = weakref.WeakValueDictionary
-    def _reference(self):
-        return self.__ref.copy()
-
-class WeakKeyDictionaryTestCase(mapping_tests.BasicTestMappingProtocol):
-    """Check that WeakKeyDictionary conforms to the mapping protocol"""
-    __ref = {Object("key1"):1, Object("key2"):2, Object("key3"):3}
-    type2test = weakref.WeakKeyDictionary
-    def _reference(self):
-        return self.__ref.copy()
-
-libreftest = """ Doctest for examples in the library reference: weakref.rst
-
->>> import weakref
->>> class Dict(dict):
-...     pass
-...
->>> obj = Dict(red=1, green=2, blue=3)   # this object is weak referencable
->>> r = weakref.ref(obj)
->>> print r() is obj
-True
-
->>> import weakref
->>> class Object:
-...     pass
-...
->>> o = Object()
->>> r = weakref.ref(o)
->>> o2 = r()
->>> o is o2
-True
->>> del o, o2
->>> print r()
-None
-
->>> import weakref
->>> class ExtendedRef(weakref.ref):
-...     def __init__(self, ob, callback=None, **annotations):
-...         super(ExtendedRef, self).__init__(ob, callback)
-...         self.__counter = 0
-...         for k, v in annotations.iteritems():
-...             setattr(self, k, v)
-...     def __call__(self):
-...         '''Return a pair containing the referent and the number of
-...         times the reference has been called.
-...         '''
-...         ob = super(ExtendedRef, self).__call__()
-...         if ob is not None:
-...             self.__counter += 1
-...             ob = (ob, self.__counter)
-...         return ob
-...
->>> class A:   # not in docs from here, just testing the ExtendedRef
-...     pass
-...
->>> a = A()
->>> r = ExtendedRef(a, foo=1, bar="baz")
->>> r.foo
-1
->>> r.bar
-'baz'
->>> r()[1]
-1
->>> r()[1]
-2
->>> r()[0] is a
-True
-
-
->>> import weakref
->>> _id2obj_dict = weakref.WeakValueDictionary()
->>> def remember(obj):
-...     oid = id(obj)
-...     _id2obj_dict[oid] = obj
-...     return oid
-...
->>> def id2obj(oid):
-...     return _id2obj_dict[oid]
-...
->>> a = A()             # from here, just testing
->>> a_id = remember(a)
->>> id2obj(a_id) is a
-True
->>> del a
->>> try:
-...     id2obj(a_id)
-... except KeyError:
-...     print 'OK'
-... else:
-...     print 'WeakValueDictionary error'
-OK
-
-"""
-
-__test__ = {'libreftest' : libreftest}
-
-def test_main():
-    test_support.run_unittest(
-        ReferencesTestCase,
-        MappingTestCase,
-        WeakValueDictionaryTestCase,
-        WeakKeyDictionaryTestCase,
-        SubclassableWeakrefTestCase,
-        )
-    test_support.run_doctest(sys.modules[__name__])
-
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_weakset.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_weakset.py
deleted file mode 100644
index bb5f585..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_weakset.py
+++ /dev/null
@@ -1,377 +0,0 @@
-import unittest
-from test import test_support
-from weakref import proxy, ref, WeakSet
-import operator
-import copy
-import string
-import os
-from random import randrange, shuffle
-import sys
-import warnings
-import collections
-import gc
-import contextlib
-
-
-class Foo:
-    pass
-
-class SomeClass(object):
-    def __init__(self, value):
-        self.value = value
-    def __eq__(self, other):
-        if type(other) != type(self):
-            return False
-        return other.value == self.value
-
-    def __ne__(self, other):
-        return not self.__eq__(other)
-
-    def __hash__(self):
-        return hash((SomeClass, self.value))
-
-class TestWeakSet(unittest.TestCase):
-
-    def setUp(self):
-        # need to keep references to them
-        self.items = [SomeClass(c) for c in ('a', 'b', 'c')]
-        self.items2 = [SomeClass(c) for c in ('x', 'y', 'z')]
-        self.letters = [SomeClass(c) for c in string.ascii_letters]
-        self.s = WeakSet(self.items)
-        self.d = dict.fromkeys(self.items)
-        self.obj = SomeClass('F')
-        self.fs = WeakSet([self.obj])
-
-    def test_methods(self):
-        weaksetmethods = dir(WeakSet)
-        for method in dir(set):
-            if method == 'test_c_api' or method.startswith('_'):
-                continue
-            self.assertIn(method, weaksetmethods,
-                         "WeakSet missing method " + method)
-
-    def test_new_or_init(self):
-        self.assertRaises(TypeError, WeakSet, [], 2)
-
-    def test_len(self):
-        self.assertEqual(len(self.s), len(self.d))
-        self.assertEqual(len(self.fs), 1)
-        del self.obj
-        self.assertEqual(len(self.fs), 0)
-
-    def test_contains(self):
-        for c in self.letters:
-            self.assertEqual(c in self.s, c in self.d)
-        # 1 is not weakref'able, but that TypeError is caught by __contains__
-        self.assertNotIn(1, self.s)
-        self.assertIn(self.obj, self.fs)
-        del self.obj
-        self.assertNotIn(SomeClass('F'), self.fs)
-
-    def test_union(self):
-        u = self.s.union(self.items2)
-        for c in self.letters:
-            self.assertEqual(c in u, c in self.d or c in self.items2)
-        self.assertEqual(self.s, WeakSet(self.items))
-        self.assertEqual(type(u), WeakSet)
-        self.assertRaises(TypeError, self.s.union, [[]])
-        for C in set, frozenset, dict.fromkeys, list, tuple:
-            x = WeakSet(self.items + self.items2)
-            c = C(self.items2)
-            self.assertEqual(self.s.union(c), x)
-
-    def test_or(self):
-        i = self.s.union(self.items2)
-        self.assertEqual(self.s | set(self.items2), i)
-        self.assertEqual(self.s | frozenset(self.items2), i)
-
-    def test_intersection(self):
-        i = self.s.intersection(self.items2)
-        for c in self.letters:
-            self.assertEqual(c in i, c in self.d and c in self.items2)
-        self.assertEqual(self.s, WeakSet(self.items))
-        self.assertEqual(type(i), WeakSet)
-        for C in set, frozenset, dict.fromkeys, list, tuple:
-            x = WeakSet([])
-            self.assertEqual(self.s.intersection(C(self.items2)), x)
-
-    def test_isdisjoint(self):
-        self.assertTrue(self.s.isdisjoint(WeakSet(self.items2)))
-        self.assertTrue(not self.s.isdisjoint(WeakSet(self.letters)))
-
-    def test_and(self):
-        i = self.s.intersection(self.items2)
-        self.assertEqual(self.s & set(self.items2), i)
-        self.assertEqual(self.s & frozenset(self.items2), i)
-
-    def test_difference(self):
-        i = self.s.difference(self.items2)
-        for c in self.letters:
-            self.assertEqual(c in i, c in self.d and c not in self.items2)
-        self.assertEqual(self.s, WeakSet(self.items))
-        self.assertEqual(type(i), WeakSet)
-        self.assertRaises(TypeError, self.s.difference, [[]])
-
-    def test_sub(self):
-        i = self.s.difference(self.items2)
-        self.assertEqual(self.s - set(self.items2), i)
-        self.assertEqual(self.s - frozenset(self.items2), i)
-
-    def test_symmetric_difference(self):
-        i = self.s.symmetric_difference(self.items2)
-        for c in self.letters:
-            self.assertEqual(c in i, (c in self.d) ^ (c in self.items2))
-        self.assertEqual(self.s, WeakSet(self.items))
-        self.assertEqual(type(i), WeakSet)
-        self.assertRaises(TypeError, self.s.symmetric_difference, [[]])
-
-    def test_xor(self):
-        i = self.s.symmetric_difference(self.items2)
-        self.assertEqual(self.s ^ set(self.items2), i)
-        self.assertEqual(self.s ^ frozenset(self.items2), i)
-
-    def test_sub_and_super(self):
-        pl, ql, rl = map(lambda s: [SomeClass(c) for c in s], ['ab', 'abcde', 'def'])
-        p, q, r = map(WeakSet, (pl, ql, rl))
-        self.assertTrue(p < q)
-        self.assertTrue(p <= q)
-        self.assertTrue(q <= q)
-        self.assertTrue(q > p)
-        self.assertTrue(q >= p)
-        self.assertFalse(q < r)
-        self.assertFalse(q <= r)
-        self.assertFalse(q > r)
-        self.assertFalse(q >= r)
-        self.assertTrue(set('a').issubset('abc'))
-        self.assertTrue(set('abc').issuperset('a'))
-        self.assertFalse(set('a').issubset('cbs'))
-        self.assertFalse(set('cbs').issuperset('a'))
-
-    def test_gc(self):
-        # Create a nest of cycles to exercise overall ref count check
-        s = WeakSet(Foo() for i in range(1000))
-        for elem in s:
-            elem.cycle = s
-            elem.sub = elem
-            elem.set = WeakSet([elem])
-
-    def test_subclass_with_custom_hash(self):
-        # Bug #1257731
-        class H(WeakSet):
-            def __hash__(self):
-                return int(id(self) & 0x7fffffff)
-        s=H()
-        f=set()
-        f.add(s)
-        self.assertIn(s, f)
-        f.remove(s)
-        f.add(s)
-        f.discard(s)
-
-    def test_init(self):
-        s = WeakSet()
-        s.__init__(self.items)
-        self.assertEqual(s, self.s)
-        s.__init__(self.items2)
-        self.assertEqual(s, WeakSet(self.items2))
-        self.assertRaises(TypeError, s.__init__, s, 2);
-        self.assertRaises(TypeError, s.__init__, 1);
-
-    def test_constructor_identity(self):
-        s = WeakSet(self.items)
-        t = WeakSet(s)
-        self.assertNotEqual(id(s), id(t))
-
-    def test_hash(self):
-        self.assertRaises(TypeError, hash, self.s)
-
-    def test_clear(self):
-        self.s.clear()
-        self.assertEqual(self.s, WeakSet([]))
-        self.assertEqual(len(self.s), 0)
-
-    def test_copy(self):
-        dup = self.s.copy()
-        self.assertEqual(self.s, dup)
-        self.assertNotEqual(id(self.s), id(dup))
-
-    def test_add(self):
-        x = SomeClass('Q')
-        self.s.add(x)
-        self.assertIn(x, self.s)
-        dup = self.s.copy()
-        self.s.add(x)
-        self.assertEqual(self.s, dup)
-        self.assertRaises(TypeError, self.s.add, [])
-        self.fs.add(Foo())
-        self.assertTrue(len(self.fs) == 1)
-        self.fs.add(self.obj)
-        self.assertTrue(len(self.fs) == 1)
-
-    def test_remove(self):
-        x = SomeClass('a')
-        self.s.remove(x)
-        self.assertNotIn(x, self.s)
-        self.assertRaises(KeyError, self.s.remove, x)
-        self.assertRaises(TypeError, self.s.remove, [])
-
-    def test_discard(self):
-        a, q = SomeClass('a'), SomeClass('Q')
-        self.s.discard(a)
-        self.assertNotIn(a, self.s)
-        self.s.discard(q)
-        self.assertRaises(TypeError, self.s.discard, [])
-
-    def test_pop(self):
-        for i in range(len(self.s)):
-            elem = self.s.pop()
-            self.assertNotIn(elem, self.s)
-        self.assertRaises(KeyError, self.s.pop)
-
-    def test_update(self):
-        retval = self.s.update(self.items2)
-        self.assertEqual(retval, None)
-        for c in (self.items + self.items2):
-            self.assertIn(c, self.s)
-        self.assertRaises(TypeError, self.s.update, [[]])
-
-    def test_update_set(self):
-        self.s.update(set(self.items2))
-        for c in (self.items + self.items2):
-            self.assertIn(c, self.s)
-
-    def test_ior(self):
-        self.s |= set(self.items2)
-        for c in (self.items + self.items2):
-            self.assertIn(c, self.s)
-
-    def test_intersection_update(self):
-        retval = self.s.intersection_update(self.items2)
-        self.assertEqual(retval, None)
-        for c in (self.items + self.items2):
-            if c in self.items2 and c in self.items:
-                self.assertIn(c, self.s)
-            else:
-                self.assertNotIn(c, self.s)
-        self.assertRaises(TypeError, self.s.intersection_update, [[]])
-
-    def test_iand(self):
-        self.s &= set(self.items2)
-        for c in (self.items + self.items2):
-            if c in self.items2 and c in self.items:
-                self.assertIn(c, self.s)
-            else:
-                self.assertNotIn(c, self.s)
-
-    def test_difference_update(self):
-        retval = self.s.difference_update(self.items2)
-        self.assertEqual(retval, None)
-        for c in (self.items + self.items2):
-            if c in self.items and c not in self.items2:
-                self.assertIn(c, self.s)
-            else:
-                self.assertNotIn(c, self.s)
-        self.assertRaises(TypeError, self.s.difference_update, [[]])
-        self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]])
-
-    def test_isub(self):
-        self.s -= set(self.items2)
-        for c in (self.items + self.items2):
-            if c in self.items and c not in self.items2:
-                self.assertIn(c, self.s)
-            else:
-                self.assertNotIn(c, self.s)
-
-    def test_symmetric_difference_update(self):
-        retval = self.s.symmetric_difference_update(self.items2)
-        self.assertEqual(retval, None)
-        for c in (self.items + self.items2):
-            if (c in self.items) ^ (c in self.items2):
-                self.assertIn(c, self.s)
-            else:
-                self.assertNotIn(c, self.s)
-        self.assertRaises(TypeError, self.s.symmetric_difference_update, [[]])
-
-    def test_ixor(self):
-        self.s ^= set(self.items2)
-        for c in (self.items + self.items2):
-            if (c in self.items) ^ (c in self.items2):
-                self.assertIn(c, self.s)
-            else:
-                self.assertNotIn(c, self.s)
-
-    def test_inplace_on_self(self):
-        t = self.s.copy()
-        t |= t
-        self.assertEqual(t, self.s)
-        t &= t
-        self.assertEqual(t, self.s)
-        t -= t
-        self.assertEqual(t, WeakSet())
-        t = self.s.copy()
-        t ^= t
-        self.assertEqual(t, WeakSet())
-
-    def test_eq(self):
-        # issue 5964
-        self.assertTrue(self.s == self.s)
-        self.assertTrue(self.s == WeakSet(self.items))
-        self.assertFalse(self.s == set(self.items))
-        self.assertFalse(self.s == list(self.items))
-        self.assertFalse(self.s == tuple(self.items))
-        self.assertFalse(self.s == 1)
-
-    def test_weak_destroy_while_iterating(self):
-        # Issue #7105: iterators shouldn't crash when a key is implicitly removed
-        # Create new items to be sure no-one else holds a reference
-        items = [SomeClass(c) for c in ('a', 'b', 'c')]
-        s = WeakSet(items)
-        it = iter(s)
-        next(it)             # Trigger internal iteration
-        # Destroy an item
-        del items[-1]
-        gc.collect()    # just in case
-        # We have removed either the first consumed items, or another one
-        self.assertIn(len(list(it)), [len(items), len(items) - 1])
-        del it
-        # The removal has been committed
-        self.assertEqual(len(s), len(items))
-
-    def test_weak_destroy_and_mutate_while_iterating(self):
-        # Issue #7105: iterators shouldn't crash when a key is implicitly removed
-        items = [SomeClass(c) for c in string.ascii_letters]
-        s = WeakSet(items)
-        @contextlib.contextmanager
-        def testcontext():
-            try:
-                it = iter(s)
-                next(it)
-                # Schedule an item for removal and recreate it
-                u = SomeClass(str(items.pop()))
-                gc.collect()      # just in case
-                yield u
-            finally:
-                it = None           # should commit all removals
-
-        with testcontext() as u:
-            self.assertNotIn(u, s)
-        with testcontext() as u:
-            self.assertRaises(KeyError, s.remove, u)
-        self.assertNotIn(u, s)
-        with testcontext() as u:
-            s.add(u)
-        self.assertIn(u, s)
-        t = s.copy()
-        with testcontext() as u:
-            s.update(t)
-        self.assertEqual(len(s), len(t))
-        with testcontext() as u:
-            s.clear()
-        self.assertEqual(len(s), 0)
-
-
-def test_main(verbose=None):
-    test_support.run_unittest(TestWeakSet)
-
-if __name__ == "__main__":
-    test_main(verbose=True)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_whichdb.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_whichdb.py
deleted file mode 100644
index 740db73..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_whichdb.py
+++ /dev/null
@@ -1,68 +0,0 @@
-#! /usr/bin/env python
-"""Test script for the whichdb module
-   based on test_anydbm.py
-"""
-
-import os
-import test.test_support
-import unittest
-import whichdb
-import glob
-
-_fname = test.test_support.TESTFN
-
-# Silence Py3k warning
-anydbm = test.test_support.import_module('anydbm', deprecated=True)
-
-def _delete_files():
-    # we don't know the precise name the underlying database uses
-    # so we use glob to locate all names
-    for f in glob.glob(_fname + "*"):
-        try:
-            os.unlink(f)
-        except OSError:
-            pass
-
-class WhichDBTestCase(unittest.TestCase):
-    # Actual test methods are added to namespace
-    # after class definition.
-    def __init__(self, *args):
-        unittest.TestCase.__init__(self, *args)
-
-    def tearDown(self):
-        _delete_files()
-
-    def setUp(self):
-        _delete_files()
-
-for name in anydbm._names:
-    # we define a new test method for each
-    # candidate database module.
-    try:
-        # Silence Py3k warning
-        mod = test.test_support.import_module(name, deprecated=True)
-    except unittest.SkipTest:
-        continue
-
-    def test_whichdb_name(self, name=name, mod=mod):
-        # Check whether whichdb correctly guesses module name
-        # for databases opened with module mod.
-        # Try with empty files first
-        f = mod.open(_fname, 'c')
-        f.close()
-        self.assertEqual(name, whichdb.whichdb(_fname))
-        # Now add a key
-        f = mod.open(_fname, 'w')
-        f["1"] = "1"
-        f.close()
-        self.assertEqual(name, whichdb.whichdb(_fname))
-    setattr(WhichDBTestCase,"test_whichdb_%s" % name, test_whichdb_name)
-
-def test_main():
-    try:
-        test.test_support.run_unittest(WhichDBTestCase)
-    finally:
-        _delete_files()
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_winreg.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_winreg.py
deleted file mode 100644
index 8f528da..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_winreg.py
+++ /dev/null
@@ -1,416 +0,0 @@
-# Test the windows specific win32reg module.
-# Only win32reg functions not hit here: FlushKey, LoadKey and SaveKey
-
-import os, sys
-import unittest
-from test import test_support
-threading = test_support.import_module("threading")
-from platform import machine
-
-# Do this first so test will be skipped if module doesn't exist
-test_support.import_module('_winreg')
-# Now import everything
-from _winreg import *
-
-try:
-    REMOTE_NAME = sys.argv[sys.argv.index("--remote")+1]
-except (IndexError, ValueError):
-    REMOTE_NAME = None
-
-# tuple of (major, minor)
-WIN_VER = sys.getwindowsversion()[:2]
-# Some tests should only run on 64-bit architectures where WOW64 will be.
-WIN64_MACHINE = True if machine() == "AMD64" else False
-
-# Starting with Windows 7 and Windows Server 2008 R2, WOW64 no longer uses
-# registry reflection and formerly reflected keys are shared instead.
-# Windows 7 and Windows Server 2008 R2 are version 6.1. Due to this, some
-# tests are only valid up until 6.1
-HAS_REFLECTION = True if WIN_VER < (6, 1) else False
-
-test_key_name = "SOFTWARE\\Python Registry Test Key - Delete Me"
-# On OS'es that support reflection we should test with a reflected key
-test_reflect_key_name = "SOFTWARE\\Classes\\Python Test Key - Delete Me"
-
-test_data = [
-    ("Int Value",     45,                                      REG_DWORD),
-    ("String Val",    "A string value",                        REG_SZ),
-    ("StringExpand",  "The path is %path%",                    REG_EXPAND_SZ),
-    ("Multi-string",  ["Lots", "of", "string", "values"],      REG_MULTI_SZ),
-    ("Raw Data",      ("binary"+chr(0)+"data"),                REG_BINARY),
-    ("Big String",    "x"*(2**14-1),                           REG_SZ),
-    ("Big Binary",    "x"*(2**14),                             REG_BINARY),
-]
-
-if test_support.have_unicode:
-    test_data += [
-        (unicode("Unicode Val"),  unicode("A Unicode value"), REG_SZ,),
-        ("UnicodeExpand", unicode("The path is %path%"), REG_EXPAND_SZ),
-        ("Multi-unicode", [unicode("Lots"), unicode("of"), unicode("unicode"),
-                           unicode("values")], REG_MULTI_SZ),
-        ("Multi-mixed",   [unicode("Unicode"), unicode("and"), "string",
-                           "values"], REG_MULTI_SZ),
-    ]
-
-class BaseWinregTests(unittest.TestCase):
-
-    def setUp(self):
-        # Make sure that the test key is absent when the test
-        # starts.
-        self.delete_tree(HKEY_CURRENT_USER, test_key_name)
-
-    def delete_tree(self, root, subkey):
-        try:
-            hkey = OpenKey(root, subkey, KEY_ALL_ACCESS)
-        except WindowsError:
-            # subkey does not exist
-            return
-        while True:
-            try:
-                subsubkey = EnumKey(hkey, 0)
-            except WindowsError:
-                # no more subkeys
-                break
-            self.delete_tree(hkey, subsubkey)
-        CloseKey(hkey)
-        DeleteKey(root, subkey)
-
-    def _write_test_data(self, root_key, CreateKey=CreateKey):
-        # Set the default value for this key.
-        SetValue(root_key, test_key_name, REG_SZ, "Default value")
-        key = CreateKey(root_key, test_key_name)
-        # Create a sub-key
-        sub_key = CreateKey(key, "sub_key")
-        # Give the sub-key some named values
-
-        for value_name, value_data, value_type in test_data:
-            SetValueEx(sub_key, value_name, 0, value_type, value_data)
-
-        # Check we wrote as many items as we thought.
-        nkeys, nvalues, since_mod = QueryInfoKey(key)
-        self.assertEqual(nkeys, 1, "Not the correct number of sub keys")
-        self.assertEqual(nvalues, 1, "Not the correct number of values")
-        nkeys, nvalues, since_mod = QueryInfoKey(sub_key)
-        self.assertEqual(nkeys, 0, "Not the correct number of sub keys")
-        self.assertEqual(nvalues, len(test_data),
-                          "Not the correct number of values")
-        # Close this key this way...
-        # (but before we do, copy the key as an integer - this allows
-        # us to test that the key really gets closed).
-        int_sub_key = int(sub_key)
-        CloseKey(sub_key)
-        try:
-            QueryInfoKey(int_sub_key)
-            self.fail("It appears the CloseKey() function does "
-                      "not close the actual key!")
-        except EnvironmentError:
-            pass
-        # ... and close that key that way :-)
-        int_key = int(key)
-        key.Close()
-        try:
-            QueryInfoKey(int_key)
-            self.fail("It appears the key.Close() function "
-                      "does not close the actual key!")
-        except EnvironmentError:
-            pass
-
-    def _read_test_data(self, root_key, OpenKey=OpenKey):
-        # Check we can get default value for this key.
-        val = QueryValue(root_key, test_key_name)
-        self.assertEqual(val, "Default value",
-                         "Registry didn't give back the correct value")
-
-        key = OpenKey(root_key, test_key_name)
-        # Read the sub-keys
-        with OpenKey(key, "sub_key") as sub_key:
-            # Check I can enumerate over the values.
-            index = 0
-            while 1:
-                try:
-                    data = EnumValue(sub_key, index)
-                except EnvironmentError:
-                    break
-                self.assertIn(data, test_data,
-                              "Didn't read back the correct test data")
-                index = index + 1
-            self.assertEqual(index, len(test_data),
-                             "Didn't read the correct number of items")
-            # Check I can directly access each item
-            for value_name, value_data, value_type in test_data:
-                read_val, read_typ = QueryValueEx(sub_key, value_name)
-                self.assertEqual(read_val, value_data,
-                                 "Could not directly read the value")
-                self.assertEqual(read_typ, value_type,
-                                 "Could not directly read the value")
-        sub_key.Close()
-        # Enumerate our main key.
-        read_val = EnumKey(key, 0)
-        self.assertEqual(read_val, "sub_key", "Read subkey value wrong")
-        try:
-            EnumKey(key, 1)
-            self.fail("Was able to get a second key when I only have one!")
-        except EnvironmentError:
-            pass
-
-        key.Close()
-
-    def _delete_test_data(self, root_key):
-        key = OpenKey(root_key, test_key_name, 0, KEY_ALL_ACCESS)
-        sub_key = OpenKey(key, "sub_key", 0, KEY_ALL_ACCESS)
-        # It is not necessary to delete the values before deleting
-        # the key (although subkeys must not exist).  We delete them
-        # manually just to prove we can :-)
-        for value_name, value_data, value_type in test_data:
-            DeleteValue(sub_key, value_name)
-
-        nkeys, nvalues, since_mod = QueryInfoKey(sub_key)
-        self.assertEqual(nkeys, 0, "subkey not empty before delete")
-        self.assertEqual(nvalues, 0, "subkey not empty before delete")
-        sub_key.Close()
-        DeleteKey(key, "sub_key")
-
-        try:
-            # Shouldnt be able to delete it twice!
-            DeleteKey(key, "sub_key")
-            self.fail("Deleting the key twice succeeded")
-        except EnvironmentError:
-            pass
-        key.Close()
-        DeleteKey(root_key, test_key_name)
-        # Opening should now fail!
-        try:
-            key = OpenKey(root_key, test_key_name)
-            self.fail("Could open the non-existent key")
-        except WindowsError: # Use this error name this time
-            pass
-
-    def _test_all(self, root_key):
-        self._write_test_data(root_key)
-        self._read_test_data(root_key)
-        self._delete_test_data(root_key)
-
-class LocalWinregTests(BaseWinregTests):
-
-    def test_registry_works(self):
-        self._test_all(HKEY_CURRENT_USER)
-
-    def test_registry_works_extended_functions(self):
-        # Substitute the regular CreateKey and OpenKey calls with their
-        # extended counterparts.
-        # Note: DeleteKeyEx is not used here because it is platform dependent
-        cke = lambda key, sub_key: CreateKeyEx(key, sub_key, 0, KEY_ALL_ACCESS)
-        self._write_test_data(HKEY_CURRENT_USER, cke)
-
-        oke = lambda key, sub_key: OpenKeyEx(key, sub_key, 0, KEY_READ)
-        self._read_test_data(HKEY_CURRENT_USER, oke)
-
-        self._delete_test_data(HKEY_CURRENT_USER)
-
-    def test_connect_registry_to_local_machine_works(self):
-        # perform minimal ConnectRegistry test which just invokes it
-        h = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
-        self.assertNotEqual(h.handle, 0)
-        h.Close()
-        self.assertEqual(h.handle, 0)
-
-    def test_inexistant_remote_registry(self):
-        connect = lambda: ConnectRegistry("abcdefghijkl", HKEY_CURRENT_USER)
-        self.assertRaises(WindowsError, connect)
-
-    def test_expand_environment_strings(self):
-        r = ExpandEnvironmentStrings(u"%windir%\\test")
-        self.assertEqual(type(r), unicode)
-        self.assertEqual(r, os.environ["windir"] + "\\test")
-
-    def test_context_manager(self):
-        # ensure that the handle is closed if an exception occurs
-        try:
-            with ConnectRegistry(None, HKEY_LOCAL_MACHINE) as h:
-                self.assertNotEqual(h.handle, 0)
-                raise WindowsError
-        except WindowsError:
-            self.assertEqual(h.handle, 0)
-
-    def test_changing_value(self):
-        # Issue2810: A race condition in 2.6 and 3.1 may cause
-        # EnumValue or QueryValue to throw "WindowsError: More data is
-        # available"
-        done = False
-
-        class VeryActiveThread(threading.Thread):
-            def run(self):
-                with CreateKey(HKEY_CURRENT_USER, test_key_name) as key:
-                    use_short = True
-                    long_string = 'x'*2000
-                    while not done:
-                        s = 'x' if use_short else long_string
-                        use_short = not use_short
-                        SetValue(key, 'changing_value', REG_SZ, s)
-
-        thread = VeryActiveThread()
-        thread.start()
-        try:
-            with CreateKey(HKEY_CURRENT_USER,
-                           test_key_name+'\\changing_value') as key:
-                for _ in range(1000):
-                    num_subkeys, num_values, t = QueryInfoKey(key)
-                    for i in range(num_values):
-                        name = EnumValue(key, i)
-                        QueryValue(key, name[0])
-        finally:
-            done = True
-            thread.join()
-            with OpenKey(HKEY_CURRENT_USER, test_key_name, 0, KEY_ALL_ACCESS) as key:
-                DeleteKey(key, 'changing_value')
-            DeleteKey(HKEY_CURRENT_USER, test_key_name)
-
-    def test_long_key(self):
-        # Issue2810, in 2.6 and 3.1 when the key name was exactly 256
-        # characters, EnumKey threw "WindowsError: More data is
-        # available"
-        name = 'x'*256
-        try:
-            with CreateKey(HKEY_CURRENT_USER, test_key_name) as key:
-                SetValue(key, name, REG_SZ, 'x')
-                num_subkeys, num_values, t = QueryInfoKey(key)
-                EnumKey(key, 0)
-        finally:
-            with OpenKey(HKEY_CURRENT_USER, test_key_name, 0, KEY_ALL_ACCESS) as key:
-                DeleteKey(key, name)
-            DeleteKey(HKEY_CURRENT_USER, test_key_name)
-
-    def test_dynamic_key(self):
-        # Issue2810, when the value is dynamically generated, these
-        # throw "WindowsError: More data is available" in 2.6 and 3.1
-        EnumValue(HKEY_PERFORMANCE_DATA, 0)
-        QueryValueEx(HKEY_PERFORMANCE_DATA, None)
-
-    # Reflection requires XP x64/Vista at a minimum. XP doesn't have this stuff
-    # or DeleteKeyEx so make sure their use raises NotImplementedError
-    @unittest.skipUnless(WIN_VER < (5, 2), "Requires Windows XP")
-    def test_reflection_unsupported(self):
-        try:
-            with CreateKey(HKEY_CURRENT_USER, test_key_name) as ck:
-                self.assertNotEqual(ck.handle, 0)
-
-            key = OpenKey(HKEY_CURRENT_USER, test_key_name)
-            self.assertNotEqual(key.handle, 0)
-
-            with self.assertRaises(NotImplementedError):
-                DisableReflectionKey(key)
-            with self.assertRaises(NotImplementedError):
-                EnableReflectionKey(key)
-            with self.assertRaises(NotImplementedError):
-                QueryReflectionKey(key)
-            with self.assertRaises(NotImplementedError):
-                DeleteKeyEx(HKEY_CURRENT_USER, test_key_name)
-        finally:
-            DeleteKey(HKEY_CURRENT_USER, test_key_name)
-
-
-@unittest.skipUnless(REMOTE_NAME, "Skipping remote registry tests")
-class RemoteWinregTests(BaseWinregTests):
-
-    def test_remote_registry_works(self):
-        remote_key = ConnectRegistry(REMOTE_NAME, HKEY_CURRENT_USER)
-        self._test_all(remote_key)
-
-
-@unittest.skipUnless(WIN64_MACHINE, "x64 specific registry tests")
-class Win64WinregTests(BaseWinregTests):
-
-    def test_reflection_functions(self):
-        # Test that we can call the query, enable, and disable functions
-        # on a key which isn't on the reflection list with no consequences.
-        with OpenKey(HKEY_LOCAL_MACHINE, "Software") as key:
-            # HKLM\Software is redirected but not reflected in all OSes
-            self.assertTrue(QueryReflectionKey(key))
-            self.assertEqual(None, EnableReflectionKey(key))
-            self.assertEqual(None, DisableReflectionKey(key))
-            self.assertTrue(QueryReflectionKey(key))
-
-    @unittest.skipUnless(HAS_REFLECTION, "OS doesn't support reflection")
-    def test_reflection(self):
-        # Test that we can create, open, and delete keys in the 32-bit
-        # area. Because we are doing this in a key which gets reflected,
-        # test the differences of 32 and 64-bit keys before and after the
-        # reflection occurs (ie. when the created key is closed).
-        try:
-            with CreateKeyEx(HKEY_CURRENT_USER, test_reflect_key_name, 0,
-                             KEY_ALL_ACCESS | KEY_WOW64_32KEY) as created_key:
-                self.assertNotEqual(created_key.handle, 0)
-
-                # The key should now be available in the 32-bit area
-                with OpenKey(HKEY_CURRENT_USER, test_reflect_key_name, 0,
-                             KEY_ALL_ACCESS | KEY_WOW64_32KEY) as key:
-                    self.assertNotEqual(key.handle, 0)
-
-                # Write a value to what currently is only in the 32-bit area
-                SetValueEx(created_key, "", 0, REG_SZ, "32KEY")
-
-                # The key is not reflected until created_key is closed.
-                # The 64-bit version of the key should not be available yet.
-                open_fail = lambda: OpenKey(HKEY_CURRENT_USER,
-                                            test_reflect_key_name, 0,
-                                            KEY_READ | KEY_WOW64_64KEY)
-                self.assertRaises(WindowsError, open_fail)
-
-            # Now explicitly open the 64-bit version of the key
-            with OpenKey(HKEY_CURRENT_USER, test_reflect_key_name, 0,
-                         KEY_ALL_ACCESS | KEY_WOW64_64KEY) as key:
-                self.assertNotEqual(key.handle, 0)
-                # Make sure the original value we set is there
-                self.assertEqual("32KEY", QueryValue(key, ""))
-                # Set a new value, which will get reflected to 32-bit
-                SetValueEx(key, "", 0, REG_SZ, "64KEY")
-
-            # Reflection uses a "last-writer wins policy, so the value we set
-            # on the 64-bit key should be the same on 32-bit
-            with OpenKey(HKEY_CURRENT_USER, test_reflect_key_name, 0,
-                         KEY_READ | KEY_WOW64_32KEY) as key:
-                self.assertEqual("64KEY", QueryValue(key, ""))
-        finally:
-            DeleteKeyEx(HKEY_CURRENT_USER, test_reflect_key_name,
-                        KEY_WOW64_32KEY, 0)
-
-    @unittest.skipUnless(HAS_REFLECTION, "OS doesn't support reflection")
-    def test_disable_reflection(self):
-        # Make use of a key which gets redirected and reflected
-        try:
-            with CreateKeyEx(HKEY_CURRENT_USER, test_reflect_key_name, 0,
-                             KEY_ALL_ACCESS | KEY_WOW64_32KEY) as created_key:
-                # QueryReflectionKey returns whether or not the key is disabled
-                disabled = QueryReflectionKey(created_key)
-                self.assertEqual(type(disabled), bool)
-                # HKCU\Software\Classes is reflected by default
-                self.assertFalse(disabled)
-
-                DisableReflectionKey(created_key)
-                self.assertTrue(QueryReflectionKey(created_key))
-
-            # The key is now closed and would normally be reflected to the
-            # 64-bit area, but let's make sure that didn't happen.
-            open_fail = lambda: OpenKeyEx(HKEY_CURRENT_USER,
-                                          test_reflect_key_name, 0,
-                                          KEY_READ | KEY_WOW64_64KEY)
-            self.assertRaises(WindowsError, open_fail)
-
-            # Make sure the 32-bit key is actually there
-            with OpenKeyEx(HKEY_CURRENT_USER, test_reflect_key_name, 0,
-                           KEY_READ | KEY_WOW64_32KEY) as key:
-                self.assertNotEqual(key.handle, 0)
-        finally:
-            DeleteKeyEx(HKEY_CURRENT_USER, test_reflect_key_name,
-                        KEY_WOW64_32KEY, 0)
-
-
-def test_main():
-    test_support.run_unittest(LocalWinregTests, RemoteWinregTests,
-                              Win64WinregTests)
-
-if __name__ == "__main__":
-    if not REMOTE_NAME:
-        print "Remote registry calls can be tested using",
-        print "'test_winreg.py --remote \\\\machine_name'"
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_winsound.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_winsound.py
deleted file mode 100644
index b93b621..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_winsound.py
+++ /dev/null
@@ -1,255 +0,0 @@
-# Ridiculously simple test of the winsound module for Windows.
-
-import unittest
-from test import test_support
-import time
-import os
-import subprocess
-
-winsound = test_support.import_module('winsound')
-ctypes = test_support.import_module('ctypes')
-import _winreg
-
-def has_sound(sound):
-    """Find out if a particular event is configured with a default sound"""
-    try:
-        # Ask the mixer API for the number of devices it knows about.
-        # When there are no devices, PlaySound will fail.
-        if ctypes.windll.winmm.mixerGetNumDevs() is 0:
-            return False
-
-        key = _winreg.OpenKeyEx(_winreg.HKEY_CURRENT_USER,
-                "AppEvents\Schemes\Apps\.Default\{0}\.Default".format(sound))
-        value = _winreg.EnumValue(key, 0)[1]
-        if value is not u"":
-            return True
-        else:
-            return False
-    except WindowsError:
-        return False
-
-class BeepTest(unittest.TestCase):
-    # As with PlaySoundTest, incorporate the _have_soundcard() check
-    # into our test methods.  If there's no audio device present,
-    # winsound.Beep returns 0 and GetLastError() returns 127, which
-    # is: ERROR_PROC_NOT_FOUND ("The specified procedure could not
-    # be found").  (FWIW, virtual/Hyper-V systems fall under this
-    # scenario as they have no sound devices whatsoever  (not even
-    # a legacy Beep device).)
-
-    def test_errors(self):
-        self.assertRaises(TypeError, winsound.Beep)
-        self.assertRaises(ValueError, winsound.Beep, 36, 75)
-        self.assertRaises(ValueError, winsound.Beep, 32768, 75)
-
-    def test_extremes(self):
-        self._beep(37, 75)
-        self._beep(32767, 75)
-
-    def test_increasingfrequency(self):
-        for i in xrange(100, 2000, 100):
-            self._beep(i, 75)
-
-    def _beep(self, *args):
-        # these tests used to use _have_soundcard(), but it's quite
-        # possible to have a soundcard, and yet have the beep driver
-        # disabled. So basically, we have no way of knowing whether
-        # a beep should be produced or not, so currently if these
-        # tests fail we're ignoring them
-        #
-        # XXX the right fix for this is to define something like
-        # _have_enabled_beep_driver() and use that instead of the
-        # try/except below
-        try:
-            winsound.Beep(*args)
-        except RuntimeError:
-            pass
-
-class MessageBeepTest(unittest.TestCase):
-
-    def tearDown(self):
-        time.sleep(0.5)
-
-    def test_default(self):
-        self.assertRaises(TypeError, winsound.MessageBeep, "bad")
-        self.assertRaises(TypeError, winsound.MessageBeep, 42, 42)
-        winsound.MessageBeep()
-
-    def test_ok(self):
-        winsound.MessageBeep(winsound.MB_OK)
-
-    def test_asterisk(self):
-        winsound.MessageBeep(winsound.MB_ICONASTERISK)
-
-    def test_exclamation(self):
-        winsound.MessageBeep(winsound.MB_ICONEXCLAMATION)
-
-    def test_hand(self):
-        winsound.MessageBeep(winsound.MB_ICONHAND)
-
-    def test_question(self):
-        winsound.MessageBeep(winsound.MB_ICONQUESTION)
-
-
-class PlaySoundTest(unittest.TestCase):
-
-    def test_errors(self):
-        self.assertRaises(TypeError, winsound.PlaySound)
-        self.assertRaises(TypeError, winsound.PlaySound, "bad", "bad")
-        self.assertRaises(
-            RuntimeError,
-            winsound.PlaySound,
-            "none", winsound.SND_ASYNC | winsound.SND_MEMORY
-        )
-
-    @unittest.skipUnless(has_sound("SystemAsterisk"), "No default SystemAsterisk")
-    def test_alias_asterisk(self):
-        if _have_soundcard():
-            winsound.PlaySound('SystemAsterisk', winsound.SND_ALIAS)
-        else:
-            self.assertRaises(
-                RuntimeError,
-                winsound.PlaySound,
-                'SystemAsterisk', winsound.SND_ALIAS
-            )
-
-    @unittest.skipUnless(has_sound("SystemExclamation"), "No default SystemExclamation")
-    def test_alias_exclamation(self):
-        if _have_soundcard():
-            winsound.PlaySound('SystemExclamation', winsound.SND_ALIAS)
-        else:
-            self.assertRaises(
-                RuntimeError,
-                winsound.PlaySound,
-                'SystemExclamation', winsound.SND_ALIAS
-            )
-
-    @unittest.skipUnless(has_sound("SystemExit"), "No default SystemExit")
-    def test_alias_exit(self):
-        if _have_soundcard():
-            winsound.PlaySound('SystemExit', winsound.SND_ALIAS)
-        else:
-            self.assertRaises(
-                RuntimeError,
-                winsound.PlaySound,
-                'SystemExit', winsound.SND_ALIAS
-            )
-
-    @unittest.skipUnless(has_sound("SystemHand"), "No default SystemHand")
-    def test_alias_hand(self):
-        if _have_soundcard():
-            winsound.PlaySound('SystemHand', winsound.SND_ALIAS)
-        else:
-            self.assertRaises(
-                RuntimeError,
-                winsound.PlaySound,
-                'SystemHand', winsound.SND_ALIAS
-            )
-
-    @unittest.skipUnless(has_sound("SystemQuestion"), "No default SystemQuestion")
-    def test_alias_question(self):
-        if _have_soundcard():
-            winsound.PlaySound('SystemQuestion', winsound.SND_ALIAS)
-        else:
-            self.assertRaises(
-                RuntimeError,
-                winsound.PlaySound,
-                'SystemQuestion', winsound.SND_ALIAS
-            )
-
-    def test_alias_fallback(self):
-        # This test can't be expected to work on all systems.  The MS
-        # PlaySound() docs say:
-        #
-        #     If it cannot find the specified sound, PlaySound uses the
-        #     default system event sound entry instead.  If the function
-        #     can find neither the system default entry nor the default
-        #     sound, it makes no sound and returns FALSE.
-        #
-        # It's known to return FALSE on some real systems.
-
-        # winsound.PlaySound('!"$%&/(#+*', winsound.SND_ALIAS)
-        return
-
-    def test_alias_nofallback(self):
-        if _have_soundcard():
-            # Note that this is not the same as asserting RuntimeError
-            # will get raised:  you cannot convert this to
-            # self.assertRaises(...) form.  The attempt may or may not
-            # raise RuntimeError, but it shouldn't raise anything other
-            # than RuntimeError, and that's all we're trying to test
-            # here.  The MS docs aren't clear about whether the SDK
-            # PlaySound() with SND_ALIAS and SND_NODEFAULT will return
-            # True or False when the alias is unknown.  On Tim's WinXP
-            # box today, it returns True (no exception is raised).  What
-            # we'd really like to test is that no sound is played, but
-            # that requires first wiring an eardrum class into unittest
-            # <wink>.
-            try:
-                winsound.PlaySound(
-                    '!"$%&/(#+*',
-                    winsound.SND_ALIAS | winsound.SND_NODEFAULT
-                )
-            except RuntimeError:
-                pass
-        else:
-            self.assertRaises(
-                RuntimeError,
-                winsound.PlaySound,
-                '!"$%&/(#+*', winsound.SND_ALIAS | winsound.SND_NODEFAULT
-            )
-
-    def test_stopasync(self):
-        if _have_soundcard():
-            winsound.PlaySound(
-                'SystemQuestion',
-                winsound.SND_ALIAS | winsound.SND_ASYNC | winsound.SND_LOOP
-            )
-            time.sleep(0.5)
-            try:
-                winsound.PlaySound(
-                    'SystemQuestion',
-                    winsound.SND_ALIAS | winsound.SND_NOSTOP
-                )
-            except RuntimeError:
-                pass
-            else: # the first sound might already be finished
-                pass
-            winsound.PlaySound(None, winsound.SND_PURGE)
-        else:
-            # Issue 8367: PlaySound(None, winsound.SND_PURGE)
-            # does not raise on systems without a sound card.
-            pass
-
-
-def _get_cscript_path():
-    """Return the full path to cscript.exe or None."""
-    for dir in os.environ.get("PATH", "").split(os.pathsep):
-        cscript_path = os.path.join(dir, "cscript.exe")
-        if os.path.exists(cscript_path):
-            return cscript_path
-
-__have_soundcard_cache = None
-def _have_soundcard():
-    """Return True iff this computer has a soundcard."""
-    global __have_soundcard_cache
-    if __have_soundcard_cache is None:
-        cscript_path = _get_cscript_path()
-        if cscript_path is None:
-            # Could not find cscript.exe to run our VBScript helper. Default
-            # to True: most computers these days *do* have a soundcard.
-            return True
-
-        check_script = os.path.join(os.path.dirname(__file__),
-                                    "check_soundcard.vbs")
-        p = subprocess.Popen([cscript_path, check_script],
-                             stdout=subprocess.PIPE)
-        __have_soundcard_cache = not p.wait()
-    return __have_soundcard_cache
-
-
-def test_main():
-    test_support.run_unittest(BeepTest, MessageBeepTest, PlaySoundTest)
-
-if __name__=="__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_with.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_with.py
deleted file mode 100644
index 2e420f2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_with.py
+++ /dev/null
@@ -1,750 +0,0 @@
-#!/usr/bin/env python
-
-"""Unit tests for the with statement specified in PEP 343."""
-
-
-__author__ = "Mike Bland"
-__email__ = "mbland at acm dot org"
-
-import sys
-import unittest
-from collections import deque
-from contextlib import GeneratorContextManager, contextmanager
-from test.test_support import run_unittest
-
-
-class MockContextManager(GeneratorContextManager):
-    def __init__(self, gen):
-        GeneratorContextManager.__init__(self, gen)
-        self.enter_called = False
-        self.exit_called = False
-        self.exit_args = None
-
-    def __enter__(self):
-        self.enter_called = True
-        return GeneratorContextManager.__enter__(self)
-
-    def __exit__(self, type, value, traceback):
-        self.exit_called = True
-        self.exit_args = (type, value, traceback)
-        return GeneratorContextManager.__exit__(self, type,
-                                                value, traceback)
-
-
-def mock_contextmanager(func):
-    def helper(*args, **kwds):
-        return MockContextManager(func(*args, **kwds))
-    return helper
-
-
-class MockResource(object):
-    def __init__(self):
-        self.yielded = False
-        self.stopped = False
-
-
-@mock_contextmanager
-def mock_contextmanager_generator():
-    mock = MockResource()
-    try:
-        mock.yielded = True
-        yield mock
-    finally:
-        mock.stopped = True
-
-
-class Nested(object):
-
-    def __init__(self, *managers):
-        self.managers = managers
-        self.entered = None
-
-    def __enter__(self):
-        if self.entered is not None:
-            raise RuntimeError("Context is not reentrant")
-        self.entered = deque()
-        vars = []
-        try:
-            for mgr in self.managers:
-                vars.append(mgr.__enter__())
-                self.entered.appendleft(mgr)
-        except:
-            if not self.__exit__(*sys.exc_info()):
-                raise
-        return vars
-
-    def __exit__(self, *exc_info):
-        # Behave like nested with statements
-        # first in, last out
-        # New exceptions override old ones
-        ex = exc_info
-        for mgr in self.entered:
-            try:
-                if mgr.__exit__(*ex):
-                    ex = (None, None, None)
-            except:
-                ex = sys.exc_info()
-        self.entered = None
-        if ex is not exc_info:
-            raise ex[0], ex[1], ex[2]
-
-
-class MockNested(Nested):
-    def __init__(self, *managers):
-        Nested.__init__(self, *managers)
-        self.enter_called = False
-        self.exit_called = False
-        self.exit_args = None
-
-    def __enter__(self):
-        self.enter_called = True
-        return Nested.__enter__(self)
-
-    def __exit__(self, *exc_info):
-        self.exit_called = True
-        self.exit_args = exc_info
-        return Nested.__exit__(self, *exc_info)
-
-
-class FailureTestCase(unittest.TestCase):
-    def testNameError(self):
-        def fooNotDeclared():
-            with foo: pass
-        self.assertRaises(NameError, fooNotDeclared)
-
-    def testEnterAttributeError(self):
-        class LacksEnter(object):
-            def __exit__(self, type, value, traceback):
-                pass
-
-        def fooLacksEnter():
-            foo = LacksEnter()
-            with foo: pass
-        self.assertRaises(AttributeError, fooLacksEnter)
-
-    def testExitAttributeError(self):
-        class LacksExit(object):
-            def __enter__(self):
-                pass
-
-        def fooLacksExit():
-            foo = LacksExit()
-            with foo: pass
-        self.assertRaises(AttributeError, fooLacksExit)
-
-    def assertRaisesSyntaxError(self, codestr):
-        def shouldRaiseSyntaxError(s):
-            compile(s, '', 'single')
-        self.assertRaises(SyntaxError, shouldRaiseSyntaxError, codestr)
-
-    def testAssignmentToNoneError(self):
-        self.assertRaisesSyntaxError('with mock as None:\n  pass')
-        self.assertRaisesSyntaxError(
-            'with mock as (None):\n'
-            '  pass')
-
-    def testAssignmentToEmptyTupleError(self):
-        self.assertRaisesSyntaxError(
-            'with mock as ():\n'
-            '  pass')
-
-    def testAssignmentToTupleOnlyContainingNoneError(self):
-        self.assertRaisesSyntaxError('with mock as None,:\n  pass')
-        self.assertRaisesSyntaxError(
-            'with mock as (None,):\n'
-            '  pass')
-
-    def testAssignmentToTupleContainingNoneError(self):
-        self.assertRaisesSyntaxError(
-            'with mock as (foo, None, bar):\n'
-            '  pass')
-
-    def testEnterThrows(self):
-        class EnterThrows(object):
-            def __enter__(self):
-                raise RuntimeError("Enter threw")
-            def __exit__(self, *args):
-                pass
-
-        def shouldThrow():
-            ct = EnterThrows()
-            self.foo = None
-            with ct as self.foo:
-                pass
-        self.assertRaises(RuntimeError, shouldThrow)
-        self.assertEqual(self.foo, None)
-
-    def testExitThrows(self):
-        class ExitThrows(object):
-            def __enter__(self):
-                return
-            def __exit__(self, *args):
-                raise RuntimeError(42)
-        def shouldThrow():
-            with ExitThrows():
-                pass
-        self.assertRaises(RuntimeError, shouldThrow)
-
-class ContextmanagerAssertionMixin(object):
-    TEST_EXCEPTION = RuntimeError("test exception")
-
-    def assertInWithManagerInvariants(self, mock_manager):
-        self.assertTrue(mock_manager.enter_called)
-        self.assertFalse(mock_manager.exit_called)
-        self.assertEqual(mock_manager.exit_args, None)
-
-    def assertAfterWithManagerInvariants(self, mock_manager, exit_args):
-        self.assertTrue(mock_manager.enter_called)
-        self.assertTrue(mock_manager.exit_called)
-        self.assertEqual(mock_manager.exit_args, exit_args)
-
-    def assertAfterWithManagerInvariantsNoError(self, mock_manager):
-        self.assertAfterWithManagerInvariants(mock_manager,
-            (None, None, None))
-
-    def assertInWithGeneratorInvariants(self, mock_generator):
-        self.assertTrue(mock_generator.yielded)
-        self.assertFalse(mock_generator.stopped)
-
-    def assertAfterWithGeneratorInvariantsNoError(self, mock_generator):
-        self.assertTrue(mock_generator.yielded)
-        self.assertTrue(mock_generator.stopped)
-
-    def raiseTestException(self):
-        raise self.TEST_EXCEPTION
-
-    def assertAfterWithManagerInvariantsWithError(self, mock_manager,
-                                                  exc_type=None):
-        self.assertTrue(mock_manager.enter_called)
-        self.assertTrue(mock_manager.exit_called)
-        if exc_type is None:
-            self.assertEqual(mock_manager.exit_args[1], self.TEST_EXCEPTION)
-            exc_type = type(self.TEST_EXCEPTION)
-        self.assertEqual(mock_manager.exit_args[0], exc_type)
-        # Test the __exit__ arguments. Issue #7853
-        self.assertIsInstance(mock_manager.exit_args[1], exc_type)
-        self.assertIsNot(mock_manager.exit_args[2], None)
-
-    def assertAfterWithGeneratorInvariantsWithError(self, mock_generator):
-        self.assertTrue(mock_generator.yielded)
-        self.assertTrue(mock_generator.stopped)
-
-
-class NonexceptionalTestCase(unittest.TestCase, ContextmanagerAssertionMixin):
-    def testInlineGeneratorSyntax(self):
-        with mock_contextmanager_generator():
-            pass
-
-    def testUnboundGenerator(self):
-        mock = mock_contextmanager_generator()
-        with mock:
-            pass
-        self.assertAfterWithManagerInvariantsNoError(mock)
-
-    def testInlineGeneratorBoundSyntax(self):
-        with mock_contextmanager_generator() as foo:
-            self.assertInWithGeneratorInvariants(foo)
-        # FIXME: In the future, we'll try to keep the bound names from leaking
-        self.assertAfterWithGeneratorInvariantsNoError(foo)
-
-    def testInlineGeneratorBoundToExistingVariable(self):
-        foo = None
-        with mock_contextmanager_generator() as foo:
-            self.assertInWithGeneratorInvariants(foo)
-        self.assertAfterWithGeneratorInvariantsNoError(foo)
-
-    def testInlineGeneratorBoundToDottedVariable(self):
-        with mock_contextmanager_generator() as self.foo:
-            self.assertInWithGeneratorInvariants(self.foo)
-        self.assertAfterWithGeneratorInvariantsNoError(self.foo)
-
-    def testBoundGenerator(self):
-        mock = mock_contextmanager_generator()
-        with mock as foo:
-            self.assertInWithGeneratorInvariants(foo)
-            self.assertInWithManagerInvariants(mock)
-        self.assertAfterWithGeneratorInvariantsNoError(foo)
-        self.assertAfterWithManagerInvariantsNoError(mock)
-
-    def testNestedSingleStatements(self):
-        mock_a = mock_contextmanager_generator()
-        with mock_a as foo:
-            mock_b = mock_contextmanager_generator()
-            with mock_b as bar:
-                self.assertInWithManagerInvariants(mock_a)
-                self.assertInWithManagerInvariants(mock_b)
-                self.assertInWithGeneratorInvariants(foo)
-                self.assertInWithGeneratorInvariants(bar)
-            self.assertAfterWithManagerInvariantsNoError(mock_b)
-            self.assertAfterWithGeneratorInvariantsNoError(bar)
-            self.assertInWithManagerInvariants(mock_a)
-            self.assertInWithGeneratorInvariants(foo)
-        self.assertAfterWithManagerInvariantsNoError(mock_a)
-        self.assertAfterWithGeneratorInvariantsNoError(foo)
-
-
-class NestedNonexceptionalTestCase(unittest.TestCase,
-    ContextmanagerAssertionMixin):
-    def testSingleArgInlineGeneratorSyntax(self):
-        with Nested(mock_contextmanager_generator()):
-            pass
-
-    def testSingleArgBoundToNonTuple(self):
-        m = mock_contextmanager_generator()
-        # This will bind all the arguments to nested() into a single list
-        # assigned to foo.
-        with Nested(m) as foo:
-            self.assertInWithManagerInvariants(m)
-        self.assertAfterWithManagerInvariantsNoError(m)
-
-    def testSingleArgBoundToSingleElementParenthesizedList(self):
-        m = mock_contextmanager_generator()
-        # This will bind all the arguments to nested() into a single list
-        # assigned to foo.
-        with Nested(m) as (foo):
-            self.assertInWithManagerInvariants(m)
-        self.assertAfterWithManagerInvariantsNoError(m)
-
-    def testSingleArgBoundToMultipleElementTupleError(self):
-        def shouldThrowValueError():
-            with Nested(mock_contextmanager_generator()) as (foo, bar):
-                pass
-        self.assertRaises(ValueError, shouldThrowValueError)
-
-    def testSingleArgUnbound(self):
-        mock_contextmanager = mock_contextmanager_generator()
-        mock_nested = MockNested(mock_contextmanager)
-        with mock_nested:
-            self.assertInWithManagerInvariants(mock_contextmanager)
-            self.assertInWithManagerInvariants(mock_nested)
-        self.assertAfterWithManagerInvariantsNoError(mock_contextmanager)
-        self.assertAfterWithManagerInvariantsNoError(mock_nested)
-
-    def testMultipleArgUnbound(self):
-        m = mock_contextmanager_generator()
-        n = mock_contextmanager_generator()
-        o = mock_contextmanager_generator()
-        mock_nested = MockNested(m, n, o)
-        with mock_nested:
-            self.assertInWithManagerInvariants(m)
-            self.assertInWithManagerInvariants(n)
-            self.assertInWithManagerInvariants(o)
-            self.assertInWithManagerInvariants(mock_nested)
-        self.assertAfterWithManagerInvariantsNoError(m)
-        self.assertAfterWithManagerInvariantsNoError(n)
-        self.assertAfterWithManagerInvariantsNoError(o)
-        self.assertAfterWithManagerInvariantsNoError(mock_nested)
-
-    def testMultipleArgBound(self):
-        mock_nested = MockNested(mock_contextmanager_generator(),
-            mock_contextmanager_generator(), mock_contextmanager_generator())
-        with mock_nested as (m, n, o):
-            self.assertInWithGeneratorInvariants(m)
-            self.assertInWithGeneratorInvariants(n)
-            self.assertInWithGeneratorInvariants(o)
-            self.assertInWithManagerInvariants(mock_nested)
-        self.assertAfterWithGeneratorInvariantsNoError(m)
-        self.assertAfterWithGeneratorInvariantsNoError(n)
-        self.assertAfterWithGeneratorInvariantsNoError(o)
-        self.assertAfterWithManagerInvariantsNoError(mock_nested)
-
-
-class ExceptionalTestCase(unittest.TestCase, ContextmanagerAssertionMixin):
-    def testSingleResource(self):
-        cm = mock_contextmanager_generator()
-        def shouldThrow():
-            with cm as self.resource:
-                self.assertInWithManagerInvariants(cm)
-                self.assertInWithGeneratorInvariants(self.resource)
-                self.raiseTestException()
-        self.assertRaises(RuntimeError, shouldThrow)
-        self.assertAfterWithManagerInvariantsWithError(cm)
-        self.assertAfterWithGeneratorInvariantsWithError(self.resource)
-
-    def testExceptionNormalized(self):
-        cm = mock_contextmanager_generator()
-        def shouldThrow():
-            with cm as self.resource:
-                # Note this relies on the fact that 1 // 0 produces an exception
-                # that is not normalized immediately.
-                1 // 0
-        self.assertRaises(ZeroDivisionError, shouldThrow)
-        self.assertAfterWithManagerInvariantsWithError(cm, ZeroDivisionError)
-
-    def testNestedSingleStatements(self):
-        mock_a = mock_contextmanager_generator()
-        mock_b = mock_contextmanager_generator()
-        def shouldThrow():
-            with mock_a as self.foo:
-                with mock_b as self.bar:
-                    self.assertInWithManagerInvariants(mock_a)
-                    self.assertInWithManagerInvariants(mock_b)
-                    self.assertInWithGeneratorInvariants(self.foo)
-                    self.assertInWithGeneratorInvariants(self.bar)
-                    self.raiseTestException()
-        self.assertRaises(RuntimeError, shouldThrow)
-        self.assertAfterWithManagerInvariantsWithError(mock_a)
-        self.assertAfterWithManagerInvariantsWithError(mock_b)
-        self.assertAfterWithGeneratorInvariantsWithError(self.foo)
-        self.assertAfterWithGeneratorInvariantsWithError(self.bar)
-
-    def testMultipleResourcesInSingleStatement(self):
-        cm_a = mock_contextmanager_generator()
-        cm_b = mock_contextmanager_generator()
-        mock_nested = MockNested(cm_a, cm_b)
-        def shouldThrow():
-            with mock_nested as (self.resource_a, self.resource_b):
-                self.assertInWithManagerInvariants(cm_a)
-                self.assertInWithManagerInvariants(cm_b)
-                self.assertInWithManagerInvariants(mock_nested)
-                self.assertInWithGeneratorInvariants(self.resource_a)
-                self.assertInWithGeneratorInvariants(self.resource_b)
-                self.raiseTestException()
-        self.assertRaises(RuntimeError, shouldThrow)
-        self.assertAfterWithManagerInvariantsWithError(cm_a)
-        self.assertAfterWithManagerInvariantsWithError(cm_b)
-        self.assertAfterWithManagerInvariantsWithError(mock_nested)
-        self.assertAfterWithGeneratorInvariantsWithError(self.resource_a)
-        self.assertAfterWithGeneratorInvariantsWithError(self.resource_b)
-
-    def testNestedExceptionBeforeInnerStatement(self):
-        mock_a = mock_contextmanager_generator()
-        mock_b = mock_contextmanager_generator()
-        self.bar = None
-        def shouldThrow():
-            with mock_a as self.foo:
-                self.assertInWithManagerInvariants(mock_a)
-                self.assertInWithGeneratorInvariants(self.foo)
-                self.raiseTestException()
-                with mock_b as self.bar:
-                    pass
-        self.assertRaises(RuntimeError, shouldThrow)
-        self.assertAfterWithManagerInvariantsWithError(mock_a)
-        self.assertAfterWithGeneratorInvariantsWithError(self.foo)
-
-        # The inner statement stuff should never have been touched
-        self.assertEqual(self.bar, None)
-        self.assertFalse(mock_b.enter_called)
-        self.assertFalse(mock_b.exit_called)
-        self.assertEqual(mock_b.exit_args, None)
-
-    def testNestedExceptionAfterInnerStatement(self):
-        mock_a = mock_contextmanager_generator()
-        mock_b = mock_contextmanager_generator()
-        def shouldThrow():
-            with mock_a as self.foo:
-                with mock_b as self.bar:
-                    self.assertInWithManagerInvariants(mock_a)
-                    self.assertInWithManagerInvariants(mock_b)
-                    self.assertInWithGeneratorInvariants(self.foo)
-                    self.assertInWithGeneratorInvariants(self.bar)
-                self.raiseTestException()
-        self.assertRaises(RuntimeError, shouldThrow)
-        self.assertAfterWithManagerInvariantsWithError(mock_a)
-        self.assertAfterWithManagerInvariantsNoError(mock_b)
-        self.assertAfterWithGeneratorInvariantsWithError(self.foo)
-        self.assertAfterWithGeneratorInvariantsNoError(self.bar)
-
-    def testRaisedStopIteration1(self):
-        # From bug 1462485
-        @contextmanager
-        def cm():
-            yield
-
-        def shouldThrow():
-            with cm():
-                raise StopIteration("from with")
-
-        self.assertRaises(StopIteration, shouldThrow)
-
-    def testRaisedStopIteration2(self):
-        # From bug 1462485
-        class cm(object):
-            def __enter__(self):
-                pass
-            def __exit__(self, type, value, traceback):
-                pass
-
-        def shouldThrow():
-            with cm():
-                raise StopIteration("from with")
-
-        self.assertRaises(StopIteration, shouldThrow)
-
-    def testRaisedStopIteration3(self):
-        # Another variant where the exception hasn't been instantiated
-        # From bug 1705170
-        @contextmanager
-        def cm():
-            yield
-
-        def shouldThrow():
-            with cm():
-                raise iter([]).next()
-
-        self.assertRaises(StopIteration, shouldThrow)
-
-    def testRaisedGeneratorExit1(self):
-        # From bug 1462485
-        @contextmanager
-        def cm():
-            yield
-
-        def shouldThrow():
-            with cm():
-                raise GeneratorExit("from with")
-
-        self.assertRaises(GeneratorExit, shouldThrow)
-
-    def testRaisedGeneratorExit2(self):
-        # From bug 1462485
-        class cm (object):
-            def __enter__(self):
-                pass
-            def __exit__(self, type, value, traceback):
-                pass
-
-        def shouldThrow():
-            with cm():
-                raise GeneratorExit("from with")
-
-        self.assertRaises(GeneratorExit, shouldThrow)
-
-    def testErrorsInBool(self):
-        # issue4589: __exit__ return code may raise an exception
-        # when looking at its truth value.
-
-        class cm(object):
-            def __init__(self, bool_conversion):
-                class Bool:
-                    def __nonzero__(self):
-                        return bool_conversion()
-                self.exit_result = Bool()
-            def __enter__(self):
-                return 3
-            def __exit__(self, a, b, c):
-                return self.exit_result
-
-        def trueAsBool():
-            with cm(lambda: True):
-                self.fail("Should NOT see this")
-        trueAsBool()
-
-        def falseAsBool():
-            with cm(lambda: False):
-                self.fail("Should raise")
-        self.assertRaises(AssertionError, falseAsBool)
-
-        def failAsBool():
-            with cm(lambda: 1 // 0):
-                self.fail("Should NOT see this")
-        self.assertRaises(ZeroDivisionError, failAsBool)
-
-
-class NonLocalFlowControlTestCase(unittest.TestCase):
-
-    def testWithBreak(self):
-        counter = 0
-        while True:
-            counter += 1
-            with mock_contextmanager_generator():
-                counter += 10
-                break
-            counter += 100 # Not reached
-        self.assertEqual(counter, 11)
-
-    def testWithContinue(self):
-        counter = 0
-        while True:
-            counter += 1
-            if counter > 2:
-                break
-            with mock_contextmanager_generator():
-                counter += 10
-                continue
-            counter += 100 # Not reached
-        self.assertEqual(counter, 12)
-
-    def testWithReturn(self):
-        def foo():
-            counter = 0
-            while True:
-                counter += 1
-                with mock_contextmanager_generator():
-                    counter += 10
-                    return counter
-                counter += 100 # Not reached
-        self.assertEqual(foo(), 11)
-
-    def testWithYield(self):
-        def gen():
-            with mock_contextmanager_generator():
-                yield 12
-                yield 13
-        x = list(gen())
-        self.assertEqual(x, [12, 13])
-
-    def testWithRaise(self):
-        counter = 0
-        try:
-            counter += 1
-            with mock_contextmanager_generator():
-                counter += 10
-                raise RuntimeError
-            counter += 100 # Not reached
-        except RuntimeError:
-            self.assertEqual(counter, 11)
-        else:
-            self.fail("Didn't raise RuntimeError")
-
-
-class AssignmentTargetTestCase(unittest.TestCase):
-
-    def testSingleComplexTarget(self):
-        targets = {1: [0, 1, 2]}
-        with mock_contextmanager_generator() as targets[1][0]:
-            self.assertEqual(targets.keys(), [1])
-            self.assertEqual(targets[1][0].__class__, MockResource)
-        with mock_contextmanager_generator() as targets.values()[0][1]:
-            self.assertEqual(targets.keys(), [1])
-            self.assertEqual(targets[1][1].__class__, MockResource)
-        with mock_contextmanager_generator() as targets[2]:
-            keys = targets.keys()
-            keys.sort()
-            self.assertEqual(keys, [1, 2])
-        class C: pass
-        blah = C()
-        with mock_contextmanager_generator() as blah.foo:
-            self.assertEqual(hasattr(blah, "foo"), True)
-
-    def testMultipleComplexTargets(self):
-        class C:
-            def __enter__(self): return 1, 2, 3
-            def __exit__(self, t, v, tb): pass
-        targets = {1: [0, 1, 2]}
-        with C() as (targets[1][0], targets[1][1], targets[1][2]):
-            self.assertEqual(targets, {1: [1, 2, 3]})
-        with C() as (targets.values()[0][2], targets.values()[0][1], targets.values()[0][0]):
-            self.assertEqual(targets, {1: [3, 2, 1]})
-        with C() as (targets[1], targets[2], targets[3]):
-            self.assertEqual(targets, {1: 1, 2: 2, 3: 3})
-        class B: pass
-        blah = B()
-        with C() as (blah.one, blah.two, blah.three):
-            self.assertEqual(blah.one, 1)
-            self.assertEqual(blah.two, 2)
-            self.assertEqual(blah.three, 3)
-
-
-class ExitSwallowsExceptionTestCase(unittest.TestCase):
-
-    def testExitTrueSwallowsException(self):
-        class AfricanSwallow:
-            def __enter__(self): pass
-            def __exit__(self, t, v, tb): return True
-        try:
-            with AfricanSwallow():
-                1 // 0
-        except ZeroDivisionError:
-            self.fail("ZeroDivisionError should have been swallowed")
-
-    def testExitFalseDoesntSwallowException(self):
-        class EuropeanSwallow:
-            def __enter__(self): pass
-            def __exit__(self, t, v, tb): return False
-        try:
-            with EuropeanSwallow():
-                1 // 0
-        except ZeroDivisionError:
-            pass
-        else:
-            self.fail("ZeroDivisionError should have been raised")
-
-
-class NestedWith(unittest.TestCase):
-
-    class Dummy(object):
-        def __init__(self, value=None, gobble=False):
-            if value is None:
-                value = self
-            self.value = value
-            self.gobble = gobble
-            self.enter_called = False
-            self.exit_called = False
-
-        def __enter__(self):
-            self.enter_called = True
-            return self.value
-
-        def __exit__(self, *exc_info):
-            self.exit_called = True
-            self.exc_info = exc_info
-            if self.gobble:
-                return True
-
-    class InitRaises(object):
-        def __init__(self): raise RuntimeError()
-
-    class EnterRaises(object):
-        def __enter__(self): raise RuntimeError()
-        def __exit__(self, *exc_info): pass
-
-    class ExitRaises(object):
-        def __enter__(self): pass
-        def __exit__(self, *exc_info): raise RuntimeError()
-
-    def testNoExceptions(self):
-        with self.Dummy() as a, self.Dummy() as b:
-            self.assertTrue(a.enter_called)
-            self.assertTrue(b.enter_called)
-        self.assertTrue(a.exit_called)
-        self.assertTrue(b.exit_called)
-
-    def testExceptionInExprList(self):
-        try:
-            with self.Dummy() as a, self.InitRaises():
-                pass
-        except:
-            pass
-        self.assertTrue(a.enter_called)
-        self.assertTrue(a.exit_called)
-
-    def testExceptionInEnter(self):
-        try:
-            with self.Dummy() as a, self.EnterRaises():
-                self.fail('body of bad with executed')
-        except RuntimeError:
-            pass
-        else:
-            self.fail('RuntimeError not reraised')
-        self.assertTrue(a.enter_called)
-        self.assertTrue(a.exit_called)
-
-    def testExceptionInExit(self):
-        body_executed = False
-        with self.Dummy(gobble=True) as a, self.ExitRaises():
-            body_executed = True
-        self.assertTrue(a.enter_called)
-        self.assertTrue(a.exit_called)
-        self.assertTrue(body_executed)
-        self.assertNotEqual(a.exc_info[0], None)
-
-    def testEnterReturnsTuple(self):
-        with self.Dummy(value=(1,2)) as (a1, a2), \
-             self.Dummy(value=(10, 20)) as (b1, b2):
-            self.assertEqual(1, a1)
-            self.assertEqual(2, a2)
-            self.assertEqual(10, b1)
-            self.assertEqual(20, b2)
-
-def test_main():
-    run_unittest(FailureTestCase, NonexceptionalTestCase,
-                 NestedNonexceptionalTestCase, ExceptionalTestCase,
-                 NonLocalFlowControlTestCase,
-                 AssignmentTargetTestCase,
-                 ExitSwallowsExceptionTestCase,
-                 NestedWith)
-
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wsgiref.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wsgiref.py
deleted file mode 100644
index e973a68..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_wsgiref.py
+++ /dev/null
@@ -1,630 +0,0 @@
-from __future__ import nested_scopes    # Backward compat for 2.1
-from unittest import TestCase
-from wsgiref.util import setup_testing_defaults
-from wsgiref.headers import Headers
-from wsgiref.handlers import BaseHandler, BaseCGIHandler
-from wsgiref import util
-from wsgiref.validate import validator
-from wsgiref.simple_server import WSGIServer, WSGIRequestHandler, demo_app
-from wsgiref.simple_server import make_server
-from StringIO import StringIO
-from SocketServer import BaseServer
-import os
-import re
-import sys
-
-from test import test_support
-
-class MockServer(WSGIServer):
-    """Non-socket HTTP server"""
-
-    def __init__(self, server_address, RequestHandlerClass):
-        BaseServer.__init__(self, server_address, RequestHandlerClass)
-        self.server_bind()
-
-    def server_bind(self):
-        host, port = self.server_address
-        self.server_name = host
-        self.server_port = port
-        self.setup_environ()
-
-
-class MockHandler(WSGIRequestHandler):
-    """Non-socket HTTP handler"""
-    def setup(self):
-        self.connection = self.request
-        self.rfile, self.wfile = self.connection
-
-    def finish(self):
-        pass
-
-
-
-
-
-def hello_app(environ,start_response):
-    start_response("200 OK", [
-        ('Content-Type','text/plain'),
-        ('Date','Mon, 05 Jun 2006 18:49:54 GMT')
-    ])
-    return ["Hello, world!"]
-
-def run_amock(app=hello_app, data="GET / HTTP/1.0\n\n"):
-    server = make_server("", 80, app, MockServer, MockHandler)
-    inp, out, err, olderr = StringIO(data), StringIO(), StringIO(), sys.stderr
-    sys.stderr = err
-
-    try:
-        server.finish_request((inp,out), ("127.0.0.1",8888))
-    finally:
-        sys.stderr = olderr
-
-    return out.getvalue(), err.getvalue()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def compare_generic_iter(make_it,match):
-    """Utility to compare a generic 2.1/2.2+ iterator with an iterable
-
-    If running under Python 2.2+, this tests the iterator using iter()/next(),
-    as well as __getitem__.  'make_it' must be a function returning a fresh
-    iterator to be tested (since this may test the iterator twice)."""
-
-    it = make_it()
-    n = 0
-    for item in match:
-        if not it[n]==item: raise AssertionError
-        n+=1
-    try:
-        it[n]
-    except IndexError:
-        pass
-    else:
-        raise AssertionError("Too many items from __getitem__",it)
-
-    try:
-        iter, StopIteration
-    except NameError:
-        pass
-    else:
-        # Only test iter mode under 2.2+
-        it = make_it()
-        if not iter(it) is it: raise AssertionError
-        for item in match:
-            if not it.next()==item: raise AssertionError
-        try:
-            it.next()
-        except StopIteration:
-            pass
-        else:
-            raise AssertionError("Too many items from .next()",it)
-
-
-
-
-
-
-class IntegrationTests(TestCase):
-
-    def check_hello(self, out, has_length=True):
-        self.assertEqual(out,
-            "HTTP/1.0 200 OK\r\n"
-            "Server: WSGIServer/0.1 Python/"+sys.version.split()[0]+"\r\n"
-            "Content-Type: text/plain\r\n"
-            "Date: Mon, 05 Jun 2006 18:49:54 GMT\r\n" +
-            (has_length and  "Content-Length: 13\r\n" or "") +
-            "\r\n"
-            "Hello, world!"
-        )
-
-    def test_plain_hello(self):
-        out, err = run_amock()
-        self.check_hello(out)
-
-    def test_validated_hello(self):
-        out, err = run_amock(validator(hello_app))
-        # the middleware doesn't support len(), so content-length isn't there
-        self.check_hello(out, has_length=False)
-
-    def test_simple_validation_error(self):
-        def bad_app(environ,start_response):
-            start_response("200 OK", ('Content-Type','text/plain'))
-            return ["Hello, world!"]
-        out, err = run_amock(validator(bad_app))
-        self.assertTrue(out.endswith(
-            "A server error occurred.  Please contact the administrator."
-        ))
-        self.assertEqual(
-            err.splitlines()[-2],
-            "AssertionError: Headers (('Content-Type', 'text/plain')) must"
-            " be of type list: <type 'tuple'>"
-        )
-
-
-
-
-
-
-class UtilityTests(TestCase):
-
-    def checkShift(self,sn_in,pi_in,part,sn_out,pi_out):
-        env = {'SCRIPT_NAME':sn_in,'PATH_INFO':pi_in}
-        util.setup_testing_defaults(env)
-        self.assertEqual(util.shift_path_info(env),part)
-        self.assertEqual(env['PATH_INFO'],pi_out)
-        self.assertEqual(env['SCRIPT_NAME'],sn_out)
-        return env
-
-    def checkDefault(self, key, value, alt=None):
-        # Check defaulting when empty
-        env = {}
-        util.setup_testing_defaults(env)
-        if isinstance(value, StringIO):
-            self.assertIsInstance(env[key], StringIO)
-        else:
-            self.assertEqual(env[key], value)
-
-        # Check existing value
-        env = {key:alt}
-        util.setup_testing_defaults(env)
-        self.assertTrue(env[key] is alt)
-
-    def checkCrossDefault(self,key,value,**kw):
-        util.setup_testing_defaults(kw)
-        self.assertEqual(kw[key],value)
-
-    def checkAppURI(self,uri,**kw):
-        util.setup_testing_defaults(kw)
-        self.assertEqual(util.application_uri(kw),uri)
-
-    def checkReqURI(self,uri,query=1,**kw):
-        util.setup_testing_defaults(kw)
-        self.assertEqual(util.request_uri(kw,query),uri)
-
-
-
-
-
-
-    def checkFW(self,text,size,match):
-
-        def make_it(text=text,size=size):
-            return util.FileWrapper(StringIO(text),size)
-
-        compare_generic_iter(make_it,match)
-
-        it = make_it()
-        self.assertFalse(it.filelike.closed)
-
-        for item in it:
-            pass
-
-        self.assertFalse(it.filelike.closed)
-
-        it.close()
-        self.assertTrue(it.filelike.closed)
-
-
-    def testSimpleShifts(self):
-        self.checkShift('','/', '', '/', '')
-        self.checkShift('','/x', 'x', '/x', '')
-        self.checkShift('/','', None, '/', '')
-        self.checkShift('/a','/x/y', 'x', '/a/x', '/y')
-        self.checkShift('/a','/x/',  'x', '/a/x', '/')
-
-
-    def testNormalizedShifts(self):
-        self.checkShift('/a/b', '/../y', '..', '/a', '/y')
-        self.checkShift('', '/../y', '..', '', '/y')
-        self.checkShift('/a/b', '//y', 'y', '/a/b/y', '')
-        self.checkShift('/a/b', '//y/', 'y', '/a/b/y', '/')
-        self.checkShift('/a/b', '/./y', 'y', '/a/b/y', '')
-        self.checkShift('/a/b', '/./y/', 'y', '/a/b/y', '/')
-        self.checkShift('/a/b', '///./..//y/.//', '..', '/a', '/y/')
-        self.checkShift('/a/b', '///', '', '/a/b/', '')
-        self.checkShift('/a/b', '/.//', '', '/a/b/', '')
-        self.checkShift('/a/b', '/x//', 'x', '/a/b/x', '/')
-        self.checkShift('/a/b', '/.', None, '/a/b', '')
-
-
-    def testDefaults(self):
-        for key, value in [
-            ('SERVER_NAME','127.0.0.1'),
-            ('SERVER_PORT', '80'),
-            ('SERVER_PROTOCOL','HTTP/1.0'),
-            ('HTTP_HOST','127.0.0.1'),
-            ('REQUEST_METHOD','GET'),
-            ('SCRIPT_NAME',''),
-            ('PATH_INFO','/'),
-            ('wsgi.version', (1,0)),
-            ('wsgi.run_once', 0),
-            ('wsgi.multithread', 0),
-            ('wsgi.multiprocess', 0),
-            ('wsgi.input', StringIO("")),
-            ('wsgi.errors', StringIO()),
-            ('wsgi.url_scheme','http'),
-        ]:
-            self.checkDefault(key,value)
-
-
-    def testCrossDefaults(self):
-        self.checkCrossDefault('HTTP_HOST',"foo.bar",SERVER_NAME="foo.bar")
-        self.checkCrossDefault('wsgi.url_scheme',"https",HTTPS="on")
-        self.checkCrossDefault('wsgi.url_scheme',"https",HTTPS="1")
-        self.checkCrossDefault('wsgi.url_scheme',"https",HTTPS="yes")
-        self.checkCrossDefault('wsgi.url_scheme',"http",HTTPS="foo")
-        self.checkCrossDefault('SERVER_PORT',"80",HTTPS="foo")
-        self.checkCrossDefault('SERVER_PORT',"443",HTTPS="on")
-
-
-    def testGuessScheme(self):
-        self.assertEqual(util.guess_scheme({}), "http")
-        self.assertEqual(util.guess_scheme({'HTTPS':"foo"}), "http")
-        self.assertEqual(util.guess_scheme({'HTTPS':"on"}), "https")
-        self.assertEqual(util.guess_scheme({'HTTPS':"yes"}), "https")
-        self.assertEqual(util.guess_scheme({'HTTPS':"1"}), "https")
-
-
-
-
-
-    def testAppURIs(self):
-        self.checkAppURI("http://127.0.0.1/")
-        self.checkAppURI("http://127.0.0.1/spam", SCRIPT_NAME="/spam")
-        self.checkAppURI("http://spam.example.com:2071/",
-            HTTP_HOST="spam.example.com:2071", SERVER_PORT="2071")
-        self.checkAppURI("http://spam.example.com/",
-            SERVER_NAME="spam.example.com")
-        self.checkAppURI("http://127.0.0.1/",
-            HTTP_HOST="127.0.0.1", SERVER_NAME="spam.example.com")
-        self.checkAppURI("https://127.0.0.1/", HTTPS="on")
-        self.checkAppURI("http://127.0.0.1:8000/", SERVER_PORT="8000",
-            HTTP_HOST=None)
-
-    def testReqURIs(self):
-        self.checkReqURI("http://127.0.0.1/")
-        self.checkReqURI("http://127.0.0.1/spam", SCRIPT_NAME="/spam")
-        self.checkReqURI("http://127.0.0.1/spammity/spam",
-            SCRIPT_NAME="/spammity", PATH_INFO="/spam")
-        self.checkReqURI("http://127.0.0.1/spammity/spam;ham",
-            SCRIPT_NAME="/spammity", PATH_INFO="/spam;ham")
-        self.checkReqURI("http://127.0.0.1/spammity/spam;cookie=1234,5678",
-            SCRIPT_NAME="/spammity", PATH_INFO="/spam;cookie=1234,5678")
-        self.checkReqURI("http://127.0.0.1/spammity/spam?say=ni",
-            SCRIPT_NAME="/spammity", PATH_INFO="/spam",QUERY_STRING="say=ni")
-        self.checkReqURI("http://127.0.0.1/spammity/spam", 0,
-            SCRIPT_NAME="/spammity", PATH_INFO="/spam",QUERY_STRING="say=ni")
-
-    def testFileWrapper(self):
-        self.checkFW("xyz"*50, 120, ["xyz"*40,"xyz"*10])
-
-    def testHopByHop(self):
-        for hop in (
-            "Connection Keep-Alive Proxy-Authenticate Proxy-Authorization "
-            "TE Trailers Transfer-Encoding Upgrade"
-        ).split():
-            for alt in hop, hop.title(), hop.upper(), hop.lower():
-                self.assertTrue(util.is_hop_by_hop(alt))
-
-        # Not comprehensive, just a few random header names
-        for hop in (
-            "Accept Cache-Control Date Pragma Trailer Via Warning"
-        ).split():
-            for alt in hop, hop.title(), hop.upper(), hop.lower():
-                self.assertFalse(util.is_hop_by_hop(alt))
-
-class HeaderTests(TestCase):
-
-    def testMappingInterface(self):
-        test = [('x','y')]
-        self.assertEqual(len(Headers([])),0)
-        self.assertEqual(len(Headers(test[:])),1)
-        self.assertEqual(Headers(test[:]).keys(), ['x'])
-        self.assertEqual(Headers(test[:]).values(), ['y'])
-        self.assertEqual(Headers(test[:]).items(), test)
-        self.assertFalse(Headers(test).items() is test)  # must be copy!
-
-        h=Headers([])
-        del h['foo']   # should not raise an error
-
-        h['Foo'] = 'bar'
-        for m in h.has_key, h.__contains__, h.get, h.get_all, h.__getitem__:
-            self.assertTrue(m('foo'))
-            self.assertTrue(m('Foo'))
-            self.assertTrue(m('FOO'))
-            self.assertFalse(m('bar'))
-
-        self.assertEqual(h['foo'],'bar')
-        h['foo'] = 'baz'
-        self.assertEqual(h['FOO'],'baz')
-        self.assertEqual(h.get_all('foo'),['baz'])
-
-        self.assertEqual(h.get("foo","whee"), "baz")
-        self.assertEqual(h.get("zoo","whee"), "whee")
-        self.assertEqual(h.setdefault("foo","whee"), "baz")
-        self.assertEqual(h.setdefault("zoo","whee"), "whee")
-        self.assertEqual(h["foo"],"baz")
-        self.assertEqual(h["zoo"],"whee")
-
-    def testRequireList(self):
-        self.assertRaises(TypeError, Headers, "foo")
-
-
-    def testExtras(self):
-        h = Headers([])
-        self.assertEqual(str(h),'\r\n')
-
-        h.add_header('foo','bar',baz="spam")
-        self.assertEqual(h['foo'], 'bar; baz="spam"')
-        self.assertEqual(str(h),'foo: bar; baz="spam"\r\n\r\n')
-
-        h.add_header('Foo','bar',cheese=None)
-        self.assertEqual(h.get_all('foo'),
-            ['bar; baz="spam"', 'bar; cheese'])
-
-        self.assertEqual(str(h),
-            'foo: bar; baz="spam"\r\n'
-            'Foo: bar; cheese\r\n'
-            '\r\n'
-        )
-
-
-class ErrorHandler(BaseCGIHandler):
-    """Simple handler subclass for testing BaseHandler"""
-
-    # BaseHandler records the OS environment at import time, but envvars
-    # might have been changed later by other tests, which trips up
-    # HandlerTests.testEnviron().
-    os_environ = dict(os.environ.items())
-
-    def __init__(self,**kw):
-        setup_testing_defaults(kw)
-        BaseCGIHandler.__init__(
-            self, StringIO(''), StringIO(), StringIO(), kw,
-            multithread=True, multiprocess=True
-        )
-
-class TestHandler(ErrorHandler):
-    """Simple handler subclass for testing BaseHandler, w/error passthru"""
-
-    def handle_error(self):
-        raise   # for testing, we want to see what's happening
-
-
-
-
-
-
-
-
-
-
-
-class HandlerTests(TestCase):
-
-    def checkEnvironAttrs(self, handler):
-        env = handler.environ
-        for attr in [
-            'version','multithread','multiprocess','run_once','file_wrapper'
-        ]:
-            if attr=='file_wrapper' and handler.wsgi_file_wrapper is None:
-                continue
-            self.assertEqual(getattr(handler,'wsgi_'+attr),env['wsgi.'+attr])
-
-    def checkOSEnviron(self,handler):
-        empty = {}; setup_testing_defaults(empty)
-        env = handler.environ
-        from os import environ
-        for k,v in environ.items():
-            if k not in empty:
-                self.assertEqual(env[k],v)
-        for k,v in empty.items():
-            self.assertIn(k, env)
-
-    def testEnviron(self):
-        h = TestHandler(X="Y")
-        h.setup_environ()
-        self.checkEnvironAttrs(h)
-        self.checkOSEnviron(h)
-        self.assertEqual(h.environ["X"],"Y")
-
-    def testCGIEnviron(self):
-        h = BaseCGIHandler(None,None,None,{})
-        h.setup_environ()
-        for key in 'wsgi.url_scheme', 'wsgi.input', 'wsgi.errors':
-            self.assertIn(key, h.environ)
-
-    def testScheme(self):
-        h=TestHandler(HTTPS="on"); h.setup_environ()
-        self.assertEqual(h.environ['wsgi.url_scheme'],'https')
-        h=TestHandler(); h.setup_environ()
-        self.assertEqual(h.environ['wsgi.url_scheme'],'http')
-
-
-    def testAbstractMethods(self):
-        h = BaseHandler()
-        for name in [
-            '_flush','get_stdin','get_stderr','add_cgi_vars'
-        ]:
-            self.assertRaises(NotImplementedError, getattr(h,name))
-        self.assertRaises(NotImplementedError, h._write, "test")
-
-
-    def testContentLength(self):
-        # Demo one reason iteration is better than write()...  ;)
-
-        def trivial_app1(e,s):
-            s('200 OK',[])
-            return [e['wsgi.url_scheme']]
-
-        def trivial_app2(e,s):
-            s('200 OK',[])(e['wsgi.url_scheme'])
-            return []
-
-        def trivial_app4(e,s):
-            # Simulate a response to a HEAD request
-            s('200 OK',[('Content-Length', '12345')])
-            return []
-
-        h = TestHandler()
-        h.run(trivial_app1)
-        self.assertEqual(h.stdout.getvalue(),
-            "Status: 200 OK\r\n"
-            "Content-Length: 4\r\n"
-            "\r\n"
-            "http")
-
-        h = TestHandler()
-        h.run(trivial_app2)
-        self.assertEqual(h.stdout.getvalue(),
-            "Status: 200 OK\r\n"
-            "\r\n"
-            "http")
-
-
-        h = TestHandler()
-        h.run(trivial_app4)
-        self.assertEqual(h.stdout.getvalue(),
-            b'Status: 200 OK\r\n'
-            b'Content-Length: 12345\r\n'
-            b'\r\n')
-
-    def testBasicErrorOutput(self):
-
-        def non_error_app(e,s):
-            s('200 OK',[])
-            return []
-
-        def error_app(e,s):
-            raise AssertionError("This should be caught by handler")
-
-        h = ErrorHandler()
-        h.run(non_error_app)
-        self.assertEqual(h.stdout.getvalue(),
-            "Status: 200 OK\r\n"
-            "Content-Length: 0\r\n"
-            "\r\n")
-        self.assertEqual(h.stderr.getvalue(),"")
-
-        h = ErrorHandler()
-        h.run(error_app)
-        self.assertEqual(h.stdout.getvalue(),
-            "Status: %s\r\n"
-            "Content-Type: text/plain\r\n"
-            "Content-Length: %d\r\n"
-            "\r\n%s" % (h.error_status,len(h.error_body),h.error_body))
-
-        self.assertNotEqual(h.stderr.getvalue().find("AssertionError"), -1)
-
-    def testErrorAfterOutput(self):
-        MSG = "Some output has been sent"
-        def error_app(e,s):
-            s("200 OK",[])(MSG)
-            raise AssertionError("This should be caught by handler")
-
-        h = ErrorHandler()
-        h.run(error_app)
-        self.assertEqual(h.stdout.getvalue(),
-            "Status: 200 OK\r\n"
-            "\r\n"+MSG)
-        self.assertNotEqual(h.stderr.getvalue().find("AssertionError"), -1)
-
-
-    def testHeaderFormats(self):
-
-        def non_error_app(e,s):
-            s('200 OK',[])
-            return []
-
-        stdpat = (
-            r"HTTP/%s 200 OK\r\n"
-            r"Date: \w{3}, [ 0123]\d \w{3} \d{4} \d\d:\d\d:\d\d GMT\r\n"
-            r"%s" r"Content-Length: 0\r\n" r"\r\n"
-        )
-        shortpat = (
-            "Status: 200 OK\r\n" "Content-Length: 0\r\n" "\r\n"
-        )
-
-        for ssw in "FooBar/1.0", None:
-            sw = ssw and "Server: %s\r\n" % ssw or ""
-
-            for version in "1.0", "1.1":
-                for proto in "HTTP/0.9", "HTTP/1.0", "HTTP/1.1":
-
-                    h = TestHandler(SERVER_PROTOCOL=proto)
-                    h.origin_server = False
-                    h.http_version = version
-                    h.server_software = ssw
-                    h.run(non_error_app)
-                    self.assertEqual(shortpat,h.stdout.getvalue())
-
-                    h = TestHandler(SERVER_PROTOCOL=proto)
-                    h.origin_server = True
-                    h.http_version = version
-                    h.server_software = ssw
-                    h.run(non_error_app)
-                    if proto=="HTTP/0.9":
-                        self.assertEqual(h.stdout.getvalue(),"")
-                    else:
-                        self.assertTrue(
-                            re.match(stdpat%(version,sw), h.stdout.getvalue()),
-                            (stdpat%(version,sw), h.stdout.getvalue())
-                        )
-
-# This epilogue is needed for compatibility with the Python 2.5 regrtest module
-
-def test_main():
-    test_support.run_unittest(__name__)
-
-if __name__ == "__main__":
-    test_main()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# the above lines intentionally left blank
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xdrlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xdrlib.py
deleted file mode 100644
index 070536f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xdrlib.py
+++ /dev/null
@@ -1,58 +0,0 @@
-from test import test_support
-import unittest
-
-import xdrlib
-
-class XDRTest(unittest.TestCase):
-
-    def test_xdr(self):
-        p = xdrlib.Packer()
-
-        s = 'hello world'
-        a = ['what', 'is', 'hapnin', 'doctor']
-
-        p.pack_int(42)
-        p.pack_int(-17)
-        p.pack_uint(9)
-        p.pack_bool(True)
-        p.pack_bool(False)
-        p.pack_uhyper(45L)
-        p.pack_float(1.9)
-        p.pack_double(1.9)
-        p.pack_string(s)
-        p.pack_list(range(5), p.pack_uint)
-        p.pack_array(a, p.pack_string)
-
-        # now verify
-        data = p.get_buffer()
-        up = xdrlib.Unpacker(data)
-
-        self.assertEqual(up.get_position(), 0)
-
-        self.assertEqual(up.unpack_int(), 42)
-        self.assertEqual(up.unpack_int(), -17)
-        self.assertEqual(up.unpack_uint(), 9)
-        self.assertTrue(up.unpack_bool() is True)
-
-        # remember position
-        pos = up.get_position()
-        self.assertTrue(up.unpack_bool() is False)
-
-        # rewind and unpack again
-        up.set_position(pos)
-        self.assertTrue(up.unpack_bool() is False)
-
-        self.assertEqual(up.unpack_uhyper(), 45L)
-        self.assertAlmostEqual(up.unpack_float(), 1.9)
-        self.assertAlmostEqual(up.unpack_double(), 1.9)
-        self.assertEqual(up.unpack_string(), s)
-        self.assertEqual(up.unpack_list(up.unpack_uint), range(5))
-        self.assertEqual(up.unpack_array(up.unpack_string), a)
-        up.done()
-        self.assertRaises(EOFError, up.unpack_uint)
-
-def test_main():
-    test_support.run_unittest(XDRTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xml_etree.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xml_etree.py
deleted file mode 100644
index 3b9ffa2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xml_etree.py
+++ /dev/null
@@ -1,1886 +0,0 @@
-# xml.etree test.  This file contains enough tests to make sure that
-# all included components work as they should.
-# Large parts are extracted from the upstream test suite.
-
-# IMPORTANT: the same doctests are run from "test_xml_etree_c" in
-# order to ensure consistency between the C implementation and the
-# Python implementation.
-#
-# For this purpose, the module-level "ET" symbol is temporarily
-# monkey-patched when running the "test_xml_etree_c" test suite.
-# Don't re-import "xml.etree.ElementTree" module in the docstring,
-# except if the test is specific to the Python implementation.
-
-import sys
-import cgi
-
-from test import test_support
-from test.test_support import findfile
-
-from xml.etree import ElementTree as ET
-
-SIMPLE_XMLFILE = findfile("simple.xml", subdir="xmltestdata")
-SIMPLE_NS_XMLFILE = findfile("simple-ns.xml", subdir="xmltestdata")
-
-SAMPLE_XML = """\
-<body>
-  <tag class='a'>text</tag>
-  <tag class='b' />
-  <section>
-    <tag class='b' id='inner'>subtext</tag>
-  </section>
-</body>
-"""
-
-SAMPLE_SECTION = """\
-<section>
-  <tag class='b' id='inner'>subtext</tag>
-  <nexttag />
-  <nextsection>
-    <tag />
-  </nextsection>
-</section>
-"""
-
-SAMPLE_XML_NS = """
-<body xmlns="http://effbot.org/ns">
-  <tag>text</tag>
-  <tag />
-  <section>
-    <tag>subtext</tag>
-  </section>
-</body>
-"""
-
-
-def sanity():
-    """
-    Import sanity.
-
-    >>> from xml.etree import ElementTree
-    >>> from xml.etree import ElementInclude
-    >>> from xml.etree import ElementPath
-    """
-
-def check_method(method):
-    if not hasattr(method, '__call__'):
-        print method, "not callable"
-
-def serialize(elem, to_string=True, **options):
-    import StringIO
-    file = StringIO.StringIO()
-    tree = ET.ElementTree(elem)
-    tree.write(file, **options)
-    if to_string:
-        return file.getvalue()
-    else:
-        file.seek(0)
-        return file
-
-def summarize(elem):
-    if elem.tag == ET.Comment:
-        return "<Comment>"
-    return elem.tag
-
-def summarize_list(seq):
-    return [summarize(elem) for elem in seq]
-
-def normalize_crlf(tree):
-    for elem in tree.iter():
-        if elem.text:
-            elem.text = elem.text.replace("\r\n", "\n")
-        if elem.tail:
-            elem.tail = elem.tail.replace("\r\n", "\n")
-
-def check_string(string):
-    len(string)
-    for char in string:
-        if len(char) != 1:
-            print "expected one-character string, got %r" % char
-    new_string = string + ""
-    new_string = string + " "
-    string[:0]
-
-def check_mapping(mapping):
-    len(mapping)
-    keys = mapping.keys()
-    items = mapping.items()
-    for key in keys:
-        item = mapping[key]
-    mapping["key"] = "value"
-    if mapping["key"] != "value":
-        print "expected value string, got %r" % mapping["key"]
-
-def check_element(element):
-    if not ET.iselement(element):
-        print "not an element"
-    if not hasattr(element, "tag"):
-        print "no tag member"
-    if not hasattr(element, "attrib"):
-        print "no attrib member"
-    if not hasattr(element, "text"):
-        print "no text member"
-    if not hasattr(element, "tail"):
-        print "no tail member"
-
-    check_string(element.tag)
-    check_mapping(element.attrib)
-    if element.text is not None:
-        check_string(element.text)
-    if element.tail is not None:
-        check_string(element.tail)
-    for elem in element:
-        check_element(elem)
-
-# --------------------------------------------------------------------
-# element tree tests
-
-def interface():
-    r"""
-    Test element tree interface.
-
-    >>> element = ET.Element("tag")
-    >>> check_element(element)
-    >>> tree = ET.ElementTree(element)
-    >>> check_element(tree.getroot())
-
-    >>> element = ET.Element("t\xe4g", key="value")
-    >>> tree = ET.ElementTree(element)
-    >>> repr(element)   # doctest: +ELLIPSIS
-    "<Element 't\\xe4g' at 0x...>"
-    >>> element = ET.Element("tag", key="value")
-
-    Make sure all standard element methods exist.
-
-    >>> check_method(element.append)
-    >>> check_method(element.extend)
-    >>> check_method(element.insert)
-    >>> check_method(element.remove)
-    >>> check_method(element.getchildren)
-    >>> check_method(element.find)
-    >>> check_method(element.iterfind)
-    >>> check_method(element.findall)
-    >>> check_method(element.findtext)
-    >>> check_method(element.clear)
-    >>> check_method(element.get)
-    >>> check_method(element.set)
-    >>> check_method(element.keys)
-    >>> check_method(element.items)
-    >>> check_method(element.iter)
-    >>> check_method(element.itertext)
-    >>> check_method(element.getiterator)
-
-    These methods return an iterable. See bug 6472.
-
-    >>> check_method(element.iter("tag").next)
-    >>> check_method(element.iterfind("tag").next)
-    >>> check_method(element.iterfind("*").next)
-    >>> check_method(tree.iter("tag").next)
-    >>> check_method(tree.iterfind("tag").next)
-    >>> check_method(tree.iterfind("*").next)
-
-    These aliases are provided:
-
-    >>> assert ET.XML == ET.fromstring
-    >>> assert ET.PI == ET.ProcessingInstruction
-    >>> assert ET.XMLParser == ET.XMLTreeBuilder
-    """
-
-def simpleops():
-    """
-    Basic method sanity checks.
-
-    >>> elem = ET.XML("<body><tag/></body>")
-    >>> serialize(elem)
-    '<body><tag /></body>'
-    >>> e = ET.Element("tag2")
-    >>> elem.append(e)
-    >>> serialize(elem)
-    '<body><tag /><tag2 /></body>'
-    >>> elem.remove(e)
-    >>> serialize(elem)
-    '<body><tag /></body>'
-    >>> elem.insert(0, e)
-    >>> serialize(elem)
-    '<body><tag2 /><tag /></body>'
-    >>> elem.remove(e)
-    >>> elem.extend([e])
-    >>> serialize(elem)
-    '<body><tag /><tag2 /></body>'
-    >>> elem.remove(e)
-
-    >>> element = ET.Element("tag", key="value")
-    >>> serialize(element) # 1
-    '<tag key="value" />'
-    >>> subelement = ET.Element("subtag")
-    >>> element.append(subelement)
-    >>> serialize(element) # 2
-    '<tag key="value"><subtag /></tag>'
-    >>> element.insert(0, subelement)
-    >>> serialize(element) # 3
-    '<tag key="value"><subtag /><subtag /></tag>'
-    >>> element.remove(subelement)
-    >>> serialize(element) # 4
-    '<tag key="value"><subtag /></tag>'
-    >>> element.remove(subelement)
-    >>> serialize(element) # 5
-    '<tag key="value" />'
-    >>> element.remove(subelement)
-    Traceback (most recent call last):
-    ValueError: list.remove(x): x not in list
-    >>> serialize(element) # 6
-    '<tag key="value" />'
-    >>> element[0:0] = [subelement, subelement, subelement]
-    >>> serialize(element[1])
-    '<subtag />'
-    >>> element[1:9] == [element[1], element[2]]
-    True
-    >>> element[:9:2] == [element[0], element[2]]
-    True
-    >>> del element[1:2]
-    >>> serialize(element)
-    '<tag key="value"><subtag /><subtag /></tag>'
-    """
-
-def cdata():
-    """
-    Test CDATA handling (etc).
-
-    >>> serialize(ET.XML("<tag>hello</tag>"))
-    '<tag>hello</tag>'
-    >>> serialize(ET.XML("<tag>&#104;&#101;&#108;&#108;&#111;</tag>"))
-    '<tag>hello</tag>'
-    >>> serialize(ET.XML("<tag><![CDATA[hello]]></tag>"))
-    '<tag>hello</tag>'
-    """
-
-# Only with Python implementation
-def simplefind():
-    """
-    Test find methods using the elementpath fallback.
-
-    >>> from xml.etree import ElementTree
-
-    >>> CurrentElementPath = ElementTree.ElementPath
-    >>> ElementTree.ElementPath = ElementTree._SimpleElementPath()
-    >>> elem = ElementTree.XML(SAMPLE_XML)
-    >>> elem.find("tag").tag
-    'tag'
-    >>> ElementTree.ElementTree(elem).find("tag").tag
-    'tag'
-    >>> elem.findtext("tag")
-    'text'
-    >>> elem.findtext("tog")
-    >>> elem.findtext("tog", "default")
-    'default'
-    >>> ElementTree.ElementTree(elem).findtext("tag")
-    'text'
-    >>> summarize_list(elem.findall("tag"))
-    ['tag', 'tag']
-    >>> summarize_list(elem.findall(".//tag"))
-    ['tag', 'tag', 'tag']
-
-    Path syntax doesn't work in this case.
-
-    >>> elem.find("section/tag")
-    >>> elem.findtext("section/tag")
-    >>> summarize_list(elem.findall("section/tag"))
-    []
-
-    >>> ElementTree.ElementPath = CurrentElementPath
-    """
-
-def find():
-    """
-    Test find methods (including xpath syntax).
-
-    >>> elem = ET.XML(SAMPLE_XML)
-    >>> elem.find("tag").tag
-    'tag'
-    >>> ET.ElementTree(elem).find("tag").tag
-    'tag'
-    >>> elem.find("section/tag").tag
-    'tag'
-    >>> elem.find("./tag").tag
-    'tag'
-    >>> ET.ElementTree(elem).find("./tag").tag
-    'tag'
-    >>> ET.ElementTree(elem).find("/tag").tag
-    'tag'
-    >>> elem[2] = ET.XML(SAMPLE_SECTION)
-    >>> elem.find("section/nexttag").tag
-    'nexttag'
-    >>> ET.ElementTree(elem).find("section/tag").tag
-    'tag'
-    >>> ET.ElementTree(elem).find("tog")
-    >>> ET.ElementTree(elem).find("tog/foo")
-    >>> elem.findtext("tag")
-    'text'
-    >>> elem.findtext("section/nexttag")
-    ''
-    >>> elem.findtext("section/nexttag", "default")
-    ''
-    >>> elem.findtext("tog")
-    >>> elem.findtext("tog", "default")
-    'default'
-    >>> ET.ElementTree(elem).findtext("tag")
-    'text'
-    >>> ET.ElementTree(elem).findtext("tog/foo")
-    >>> ET.ElementTree(elem).findtext("tog/foo", "default")
-    'default'
-    >>> ET.ElementTree(elem).findtext("./tag")
-    'text'
-    >>> ET.ElementTree(elem).findtext("/tag")
-    'text'
-    >>> elem.findtext("section/tag")
-    'subtext'
-    >>> ET.ElementTree(elem).findtext("section/tag")
-    'subtext'
-    >>> summarize_list(elem.findall("."))
-    ['body']
-    >>> summarize_list(elem.findall("tag"))
-    ['tag', 'tag']
-    >>> summarize_list(elem.findall("tog"))
-    []
-    >>> summarize_list(elem.findall("tog/foo"))
-    []
-    >>> summarize_list(elem.findall("*"))
-    ['tag', 'tag', 'section']
-    >>> summarize_list(elem.findall(".//tag"))
-    ['tag', 'tag', 'tag', 'tag']
-    >>> summarize_list(elem.findall("section/tag"))
-    ['tag']
-    >>> summarize_list(elem.findall("section//tag"))
-    ['tag', 'tag']
-    >>> summarize_list(elem.findall("section/*"))
-    ['tag', 'nexttag', 'nextsection']
-    >>> summarize_list(elem.findall("section//*"))
-    ['tag', 'nexttag', 'nextsection', 'tag']
-    >>> summarize_list(elem.findall("section/.//*"))
-    ['tag', 'nexttag', 'nextsection', 'tag']
-    >>> summarize_list(elem.findall("*/*"))
-    ['tag', 'nexttag', 'nextsection']
-    >>> summarize_list(elem.findall("*//*"))
-    ['tag', 'nexttag', 'nextsection', 'tag']
-    >>> summarize_list(elem.findall("*/tag"))
-    ['tag']
-    >>> summarize_list(elem.findall("*/./tag"))
-    ['tag']
-    >>> summarize_list(elem.findall("./tag"))
-    ['tag', 'tag']
-    >>> summarize_list(elem.findall(".//tag"))
-    ['tag', 'tag', 'tag', 'tag']
-    >>> summarize_list(elem.findall("././tag"))
-    ['tag', 'tag']
-    >>> summarize_list(elem.findall(".//tag[@class]"))
-    ['tag', 'tag', 'tag']
-    >>> summarize_list(elem.findall(".//tag[@class='a']"))
-    ['tag']
-    >>> summarize_list(elem.findall(".//tag[@class='b']"))
-    ['tag', 'tag']
-    >>> summarize_list(elem.findall(".//tag[@id]"))
-    ['tag']
-    >>> summarize_list(elem.findall(".//section[tag]"))
-    ['section']
-    >>> summarize_list(elem.findall(".//section[element]"))
-    []
-    >>> summarize_list(elem.findall("../tag"))
-    []
-    >>> summarize_list(elem.findall("section/../tag"))
-    ['tag', 'tag']
-    >>> summarize_list(ET.ElementTree(elem).findall("./tag"))
-    ['tag', 'tag']
-
-    Following example is invalid in 1.2.
-    A leading '*' is assumed in 1.3.
-
-    >>> elem.findall("section//") == elem.findall("section//*")
-    True
-
-    ET's Path module handles this case incorrectly; this gives
-    a warning in 1.3, and the behaviour will be modified in 1.4.
-
-    >>> summarize_list(ET.ElementTree(elem).findall("/tag"))
-    ['tag', 'tag']
-
-    >>> elem = ET.XML(SAMPLE_XML_NS)
-    >>> summarize_list(elem.findall("tag"))
-    []
-    >>> summarize_list(elem.findall("{http://effbot.org/ns}tag"))
-    ['{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag']
-    >>> summarize_list(elem.findall(".//{http://effbot.org/ns}tag"))
-    ['{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag']
-    """
-
-def file_init():
-    """
-    >>> import StringIO
-
-    >>> stringfile = StringIO.StringIO(SAMPLE_XML)
-    >>> tree = ET.ElementTree(file=stringfile)
-    >>> tree.find("tag").tag
-    'tag'
-    >>> tree.find("section/tag").tag
-    'tag'
-
-    >>> tree = ET.ElementTree(file=SIMPLE_XMLFILE)
-    >>> tree.find("element").tag
-    'element'
-    >>> tree.find("element/../empty-element").tag
-    'empty-element'
-    """
-
-def bad_find():
-    """
-    Check bad or unsupported path expressions.
-
-    >>> elem = ET.XML(SAMPLE_XML)
-    >>> elem.findall("/tag")
-    Traceback (most recent call last):
-    SyntaxError: cannot use absolute path on element
-    """
-
-def path_cache():
-    """
-    Check that the path cache behaves sanely.
-
-    >>> elem = ET.XML(SAMPLE_XML)
-    >>> for i in range(10): ET.ElementTree(elem).find('./'+str(i))
-    >>> cache_len_10 = len(ET.ElementPath._cache)
-    >>> for i in range(10): ET.ElementTree(elem).find('./'+str(i))
-    >>> len(ET.ElementPath._cache) == cache_len_10
-    True
-    >>> for i in range(20): ET.ElementTree(elem).find('./'+str(i))
-    >>> len(ET.ElementPath._cache) > cache_len_10
-    True
-    >>> for i in range(600): ET.ElementTree(elem).find('./'+str(i))
-    >>> len(ET.ElementPath._cache) < 500
-    True
-    """
-
-def copy():
-    """
-    Test copy handling (etc).
-
-    >>> import copy
-    >>> e1 = ET.XML("<tag>hello<foo/></tag>")
-    >>> e2 = copy.copy(e1)
-    >>> e3 = copy.deepcopy(e1)
-    >>> e1.find("foo").tag = "bar"
-    >>> serialize(e1)
-    '<tag>hello<bar /></tag>'
-    >>> serialize(e2)
-    '<tag>hello<bar /></tag>'
-    >>> serialize(e3)
-    '<tag>hello<foo /></tag>'
-
-    """
-
-def attrib():
-    """
-    Test attribute handling.
-
-    >>> elem = ET.Element("tag")
-    >>> elem.get("key") # 1.1
-    >>> elem.get("key", "default") # 1.2
-    'default'
-    >>> elem.set("key", "value")
-    >>> elem.get("key") # 1.3
-    'value'
-
-    >>> elem = ET.Element("tag", key="value")
-    >>> elem.get("key") # 2.1
-    'value'
-    >>> elem.attrib # 2.2
-    {'key': 'value'}
-
-    >>> attrib = {"key": "value"}
-    >>> elem = ET.Element("tag", attrib)
-    >>> attrib.clear() # check for aliasing issues
-    >>> elem.get("key") # 3.1
-    'value'
-    >>> elem.attrib # 3.2
-    {'key': 'value'}
-
-    >>> attrib = {"key": "value"}
-    >>> elem = ET.Element("tag", **attrib)
-    >>> attrib.clear() # check for aliasing issues
-    >>> elem.get("key") # 4.1
-    'value'
-    >>> elem.attrib # 4.2
-    {'key': 'value'}
-
-    >>> elem = ET.Element("tag", {"key": "other"}, key="value")
-    >>> elem.get("key") # 5.1
-    'value'
-    >>> elem.attrib # 5.2
-    {'key': 'value'}
-
-    >>> elem = ET.Element('test')
-    >>> elem.text = "aa"
-    >>> elem.set('testa', 'testval')
-    >>> elem.set('testb', 'test2')
-    >>> ET.tostring(elem)
-    '<test testa="testval" testb="test2">aa</test>'
-    >>> sorted(elem.keys())
-    ['testa', 'testb']
-    >>> sorted(elem.items())
-    [('testa', 'testval'), ('testb', 'test2')]
-    >>> elem.attrib['testb']
-    'test2'
-    >>> elem.attrib['testb'] = 'test1'
-    >>> elem.attrib['testc'] = 'test2'
-    >>> ET.tostring(elem)
-    '<test testa="testval" testb="test1" testc="test2">aa</test>'
-    """
-
-def makeelement():
-    """
-    Test makeelement handling.
-
-    >>> elem = ET.Element("tag")
-    >>> attrib = {"key": "value"}
-    >>> subelem = elem.makeelement("subtag", attrib)
-    >>> if subelem.attrib is attrib:
-    ...     print "attrib aliasing"
-    >>> elem.append(subelem)
-    >>> serialize(elem)
-    '<tag><subtag key="value" /></tag>'
-
-    >>> elem.clear()
-    >>> serialize(elem)
-    '<tag />'
-    >>> elem.append(subelem)
-    >>> serialize(elem)
-    '<tag><subtag key="value" /></tag>'
-    >>> elem.extend([subelem, subelem])
-    >>> serialize(elem)
-    '<tag><subtag key="value" /><subtag key="value" /><subtag key="value" /></tag>'
-    >>> elem[:] = [subelem]
-    >>> serialize(elem)
-    '<tag><subtag key="value" /></tag>'
-    >>> elem[:] = tuple([subelem])
-    >>> serialize(elem)
-    '<tag><subtag key="value" /></tag>'
-
-    """
-
-def parsefile():
-    """
-    Test parsing from file.
-
-    >>> tree = ET.parse(SIMPLE_XMLFILE)
-    >>> normalize_crlf(tree)
-    >>> tree.write(sys.stdout)
-    <root>
-       <element key="value">text</element>
-       <element>text</element>tail
-       <empty-element />
-    </root>
-    >>> tree = ET.parse(SIMPLE_NS_XMLFILE)
-    >>> normalize_crlf(tree)
-    >>> tree.write(sys.stdout)
-    <ns0:root xmlns:ns0="namespace">
-       <ns0:element key="value">text</ns0:element>
-       <ns0:element>text</ns0:element>tail
-       <ns0:empty-element />
-    </ns0:root>
-
-    >>> with open(SIMPLE_XMLFILE) as f:
-    ...     data = f.read()
-
-    >>> parser = ET.XMLParser()
-    >>> parser.version  # doctest: +ELLIPSIS
-    'Expat ...'
-    >>> parser.feed(data)
-    >>> print serialize(parser.close())
-    <root>
-       <element key="value">text</element>
-       <element>text</element>tail
-       <empty-element />
-    </root>
-
-    >>> parser = ET.XMLTreeBuilder() # 1.2 compatibility
-    >>> parser.feed(data)
-    >>> print serialize(parser.close())
-    <root>
-       <element key="value">text</element>
-       <element>text</element>tail
-       <empty-element />
-    </root>
-
-    >>> target = ET.TreeBuilder()
-    >>> parser = ET.XMLParser(target=target)
-    >>> parser.feed(data)
-    >>> print serialize(parser.close())
-    <root>
-       <element key="value">text</element>
-       <element>text</element>tail
-       <empty-element />
-    </root>
-    """
-
-def parseliteral():
-    """
-    >>> element = ET.XML("<html><body>text</body></html>")
-    >>> ET.ElementTree(element).write(sys.stdout)
-    <html><body>text</body></html>
-    >>> element = ET.fromstring("<html><body>text</body></html>")
-    >>> ET.ElementTree(element).write(sys.stdout)
-    <html><body>text</body></html>
-    >>> sequence = ["<html><body>", "text</bo", "dy></html>"]
-    >>> element = ET.fromstringlist(sequence)
-    >>> print ET.tostring(element)
-    <html><body>text</body></html>
-    >>> print "".join(ET.tostringlist(element))
-    <html><body>text</body></html>
-    >>> ET.tostring(element, "ascii")
-    "<?xml version='1.0' encoding='ascii'?>\\n<html><body>text</body></html>"
-    >>> _, ids = ET.XMLID("<html><body>text</body></html>")
-    >>> len(ids)
-    0
-    >>> _, ids = ET.XMLID("<html><body id='body'>text</body></html>")
-    >>> len(ids)
-    1
-    >>> ids["body"].tag
-    'body'
-    """
-
-def iterparse():
-    """
-    Test iterparse interface.
-
-    >>> iterparse = ET.iterparse
-
-    >>> context = iterparse(SIMPLE_XMLFILE)
-    >>> action, elem = next(context)
-    >>> print action, elem.tag
-    end element
-    >>> for action, elem in context:
-    ...   print action, elem.tag
-    end element
-    end empty-element
-    end root
-    >>> context.root.tag
-    'root'
-
-    >>> context = iterparse(SIMPLE_NS_XMLFILE)
-    >>> for action, elem in context:
-    ...   print action, elem.tag
-    end {namespace}element
-    end {namespace}element
-    end {namespace}empty-element
-    end {namespace}root
-
-    >>> events = ()
-    >>> context = iterparse(SIMPLE_XMLFILE, events)
-    >>> for action, elem in context:
-    ...   print action, elem.tag
-
-    >>> events = ()
-    >>> context = iterparse(SIMPLE_XMLFILE, events=events)
-    >>> for action, elem in context:
-    ...   print action, elem.tag
-
-    >>> events = ("start", "end")
-    >>> context = iterparse(SIMPLE_XMLFILE, events)
-    >>> for action, elem in context:
-    ...   print action, elem.tag
-    start root
-    start element
-    end element
-    start element
-    end element
-    start empty-element
-    end empty-element
-    end root
-
-    >>> events = ("start", "end", "start-ns", "end-ns")
-    >>> context = iterparse(SIMPLE_NS_XMLFILE, events)
-    >>> for action, elem in context:
-    ...   if action in ("start", "end"):
-    ...     print action, elem.tag
-    ...   else:
-    ...     print action, elem
-    start-ns ('', 'namespace')
-    start {namespace}root
-    start {namespace}element
-    end {namespace}element
-    start {namespace}element
-    end {namespace}element
-    start {namespace}empty-element
-    end {namespace}empty-element
-    end {namespace}root
-    end-ns None
-
-    >>> events = ("start", "end", "bogus")
-    >>> with open(SIMPLE_XMLFILE, "rb") as f:
-    ...     iterparse(f, events)
-    Traceback (most recent call last):
-    ValueError: unknown event 'bogus'
-
-    >>> import StringIO
-
-    >>> source = StringIO.StringIO(
-    ...     "<?xml version='1.0' encoding='iso-8859-1'?>\\n"
-    ...     "<body xmlns='http://&#233;ffbot.org/ns'\\n"
-    ...     "      xmlns:cl\\xe9='http://effbot.org/ns'>text</body>\\n")
-    >>> events = ("start-ns",)
-    >>> context = iterparse(source, events)
-    >>> for action, elem in context:
-    ...     print action, elem
-    start-ns ('', u'http://\\xe9ffbot.org/ns')
-    start-ns (u'cl\\xe9', 'http://effbot.org/ns')
-
-    >>> source = StringIO.StringIO("<document />junk")
-    >>> try:
-    ...   for action, elem in iterparse(source):
-    ...     print action, elem.tag
-    ... except ET.ParseError, v:
-    ...   print v
-    junk after document element: line 1, column 12
-    """
-
-def writefile():
-    """
-    >>> elem = ET.Element("tag")
-    >>> elem.text = "text"
-    >>> serialize(elem)
-    '<tag>text</tag>'
-    >>> ET.SubElement(elem, "subtag").text = "subtext"
-    >>> serialize(elem)
-    '<tag>text<subtag>subtext</subtag></tag>'
-
-    Test tag suppression
-    >>> elem.tag = None
-    >>> serialize(elem)
-    'text<subtag>subtext</subtag>'
-    >>> elem.insert(0, ET.Comment("comment"))
-    >>> serialize(elem)     # assumes 1.3
-    'text<!--comment--><subtag>subtext</subtag>'
-    >>> elem[0] = ET.PI("key", "value")
-    >>> serialize(elem)
-    'text<?key value?><subtag>subtext</subtag>'
-    """
-
-def custom_builder():
-    """
-    Test parser w. custom builder.
-
-    >>> with open(SIMPLE_XMLFILE) as f:
-    ...     data = f.read()
-    >>> class Builder:
-    ...     def start(self, tag, attrib):
-    ...         print "start", tag
-    ...     def end(self, tag):
-    ...         print "end", tag
-    ...     def data(self, text):
-    ...         pass
-    >>> builder = Builder()
-    >>> parser = ET.XMLParser(target=builder)
-    >>> parser.feed(data)
-    start root
-    start element
-    end element
-    start element
-    end element
-    start empty-element
-    end empty-element
-    end root
-
-    >>> with open(SIMPLE_NS_XMLFILE) as f:
-    ...     data = f.read()
-    >>> class Builder:
-    ...     def start(self, tag, attrib):
-    ...         print "start", tag
-    ...     def end(self, tag):
-    ...         print "end", tag
-    ...     def data(self, text):
-    ...         pass
-    ...     def pi(self, target, data):
-    ...         print "pi", target, repr(data)
-    ...     def comment(self, data):
-    ...         print "comment", repr(data)
-    >>> builder = Builder()
-    >>> parser = ET.XMLParser(target=builder)
-    >>> parser.feed(data)
-    pi pi 'data'
-    comment ' comment '
-    start {namespace}root
-    start {namespace}element
-    end {namespace}element
-    start {namespace}element
-    end {namespace}element
-    start {namespace}empty-element
-    end {namespace}empty-element
-    end {namespace}root
-
-    """
-
-def getchildren():
-    """
-    Test Element.getchildren()
-
-    >>> with open(SIMPLE_XMLFILE, "r") as f:
-    ...     tree = ET.parse(f)
-    >>> for elem in tree.getroot().iter():
-    ...     summarize_list(elem.getchildren())
-    ['element', 'element', 'empty-element']
-    []
-    []
-    []
-    >>> for elem in tree.getiterator():
-    ...     summarize_list(elem.getchildren())
-    ['element', 'element', 'empty-element']
-    []
-    []
-    []
-
-    >>> elem = ET.XML(SAMPLE_XML)
-    >>> len(elem.getchildren())
-    3
-    >>> len(elem[2].getchildren())
-    1
-    >>> elem[:] == elem.getchildren()
-    True
-    >>> child1 = elem[0]
-    >>> child2 = elem[2]
-    >>> del elem[1:2]
-    >>> len(elem.getchildren())
-    2
-    >>> child1 == elem[0]
-    True
-    >>> child2 == elem[1]
-    True
-    >>> elem[0:2] = [child2, child1]
-    >>> child2 == elem[0]
-    True
-    >>> child1 == elem[1]
-    True
-    >>> child1 == elem[0]
-    False
-    >>> elem.clear()
-    >>> elem.getchildren()
-    []
-    """
-
-def writestring():
-    """
-    >>> elem = ET.XML("<html><body>text</body></html>")
-    >>> ET.tostring(elem)
-    '<html><body>text</body></html>'
-    >>> elem = ET.fromstring("<html><body>text</body></html>")
-    >>> ET.tostring(elem)
-    '<html><body>text</body></html>'
-    """
-
-def check_encoding(encoding):
-    """
-    >>> check_encoding("ascii")
-    >>> check_encoding("us-ascii")
-    >>> check_encoding("iso-8859-1")
-    >>> check_encoding("iso-8859-15")
-    >>> check_encoding("cp437")
-    >>> check_encoding("mac-roman")
-    """
-    ET.XML("<?xml version='1.0' encoding='%s'?><xml />" % encoding)
-
-def encoding():
-    r"""
-    Test encoding issues.
-
-    >>> elem = ET.Element("tag")
-    >>> elem.text = u"abc"
-    >>> serialize(elem)
-    '<tag>abc</tag>'
-    >>> serialize(elem, encoding="utf-8")
-    '<tag>abc</tag>'
-    >>> serialize(elem, encoding="us-ascii")
-    '<tag>abc</tag>'
-    >>> serialize(elem, encoding="iso-8859-1")
-    "<?xml version='1.0' encoding='iso-8859-1'?>\n<tag>abc</tag>"
-
-    >>> elem.text = "<&\"\'>"
-    >>> serialize(elem)
-    '<tag>&lt;&amp;"\'&gt;</tag>'
-    >>> serialize(elem, encoding="utf-8")
-    '<tag>&lt;&amp;"\'&gt;</tag>'
-    >>> serialize(elem, encoding="us-ascii") # cdata characters
-    '<tag>&lt;&amp;"\'&gt;</tag>'
-    >>> serialize(elem, encoding="iso-8859-1")
-    '<?xml version=\'1.0\' encoding=\'iso-8859-1\'?>\n<tag>&lt;&amp;"\'&gt;</tag>'
-
-    >>> elem.attrib["key"] = "<&\"\'>"
-    >>> elem.text = None
-    >>> serialize(elem)
-    '<tag key="&lt;&amp;&quot;\'&gt;" />'
-    >>> serialize(elem, encoding="utf-8")
-    '<tag key="&lt;&amp;&quot;\'&gt;" />'
-    >>> serialize(elem, encoding="us-ascii")
-    '<tag key="&lt;&amp;&quot;\'&gt;" />'
-    >>> serialize(elem, encoding="iso-8859-1")
-    '<?xml version=\'1.0\' encoding=\'iso-8859-1\'?>\n<tag key="&lt;&amp;&quot;\'&gt;" />'
-
-    >>> elem.text = u'\xe5\xf6\xf6<>'
-    >>> elem.attrib.clear()
-    >>> serialize(elem)
-    '<tag>&#229;&#246;&#246;&lt;&gt;</tag>'
-    >>> serialize(elem, encoding="utf-8")
-    '<tag>\xc3\xa5\xc3\xb6\xc3\xb6&lt;&gt;</tag>'
-    >>> serialize(elem, encoding="us-ascii")
-    '<tag>&#229;&#246;&#246;&lt;&gt;</tag>'
-    >>> serialize(elem, encoding="iso-8859-1")
-    "<?xml version='1.0' encoding='iso-8859-1'?>\n<tag>\xe5\xf6\xf6&lt;&gt;</tag>"
-
-    >>> elem.attrib["key"] = u'\xe5\xf6\xf6<>'
-    >>> elem.text = None
-    >>> serialize(elem)
-    '<tag key="&#229;&#246;&#246;&lt;&gt;" />'
-    >>> serialize(elem, encoding="utf-8")
-    '<tag key="\xc3\xa5\xc3\xb6\xc3\xb6&lt;&gt;" />'
-    >>> serialize(elem, encoding="us-ascii")
-    '<tag key="&#229;&#246;&#246;&lt;&gt;" />'
-    >>> serialize(elem, encoding="iso-8859-1")
-    '<?xml version=\'1.0\' encoding=\'iso-8859-1\'?>\n<tag key="\xe5\xf6\xf6&lt;&gt;" />'
-    """
-
-def methods():
-    r"""
-    Test serialization methods.
-
-    >>> e = ET.XML("<html><link/><script>1 &lt; 2</script></html>")
-    >>> e.tail = "\n"
-    >>> serialize(e)
-    '<html><link /><script>1 &lt; 2</script></html>\n'
-    >>> serialize(e, method=None)
-    '<html><link /><script>1 &lt; 2</script></html>\n'
-    >>> serialize(e, method="xml")
-    '<html><link /><script>1 &lt; 2</script></html>\n'
-    >>> serialize(e, method="html")
-    '<html><link><script>1 < 2</script></html>\n'
-    >>> serialize(e, method="text")
-    '1 < 2\n'
-    """
-
-def iterators():
-    """
-    Test iterators.
-
-    >>> e = ET.XML("<html><body>this is a <i>paragraph</i>.</body>..</html>")
-    >>> summarize_list(e.iter())
-    ['html', 'body', 'i']
-    >>> summarize_list(e.find("body").iter())
-    ['body', 'i']
-    >>> summarize(next(e.iter()))
-    'html'
-    >>> "".join(e.itertext())
-    'this is a paragraph...'
-    >>> "".join(e.find("body").itertext())
-    'this is a paragraph.'
-    >>> next(e.itertext())
-    'this is a '
-
-    Method iterparse should return an iterator. See bug 6472.
-
-    >>> sourcefile = serialize(e, to_string=False)
-    >>> next(ET.iterparse(sourcefile))  # doctest: +ELLIPSIS
-    ('end', <Element 'i' at 0x...>)
-
-    >>> tree = ET.ElementTree(None)
-    >>> tree.iter()
-    Traceback (most recent call last):
-    AttributeError: 'NoneType' object has no attribute 'iter'
-    """
-
-ENTITY_XML = """\
-<!DOCTYPE points [
-<!ENTITY % user-entities SYSTEM 'user-entities.xml'>
-%user-entities;
-]>
-<document>&entity;</document>
-"""
-
-def entity():
-    """
-    Test entity handling.
-
-    1) good entities
-
-    >>> e = ET.XML("<document title='&#x8230;'>test</document>")
-    >>> serialize(e)
-    '<document title="&#33328;">test</document>'
-
-    2) bad entities
-
-    >>> ET.XML("<document>&entity;</document>")
-    Traceback (most recent call last):
-    ParseError: undefined entity: line 1, column 10
-
-    >>> ET.XML(ENTITY_XML)
-    Traceback (most recent call last):
-    ParseError: undefined entity &entity;: line 5, column 10
-
-    3) custom entity
-
-    >>> parser = ET.XMLParser()
-    >>> parser.entity["entity"] = "text"
-    >>> parser.feed(ENTITY_XML)
-    >>> root = parser.close()
-    >>> serialize(root)
-    '<document>text</document>'
-    """
-
-def error(xml):
-    """
-
-    Test error handling.
-
-    >>> issubclass(ET.ParseError, SyntaxError)
-    True
-    >>> error("foo").position
-    (1, 0)
-    >>> error("<tag>&foo;</tag>").position
-    (1, 5)
-    >>> error("foobar<").position
-    (1, 6)
-
-    """
-    try:
-        ET.XML(xml)
-    except ET.ParseError:
-        return sys.exc_value
-
-def namespace():
-    """
-    Test namespace issues.
-
-    1) xml namespace
-
-    >>> elem = ET.XML("<tag xml:lang='en' />")
-    >>> serialize(elem) # 1.1
-    '<tag xml:lang="en" />'
-
-    2) other "well-known" namespaces
-
-    >>> elem = ET.XML("<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' />")
-    >>> serialize(elem) # 2.1
-    '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" />'
-
-    >>> elem = ET.XML("<html:html xmlns:html='http://www.w3.org/1999/xhtml' />")
-    >>> serialize(elem) # 2.2
-    '<html:html xmlns:html="http://www.w3.org/1999/xhtml" />'
-
-    >>> elem = ET.XML("<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope' />")
-    >>> serialize(elem) # 2.3
-    '<ns0:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope" />'
-
-    3) unknown namespaces
-    >>> elem = ET.XML(SAMPLE_XML_NS)
-    >>> print serialize(elem)
-    <ns0:body xmlns:ns0="http://effbot.org/ns">
-      <ns0:tag>text</ns0:tag>
-      <ns0:tag />
-      <ns0:section>
-        <ns0:tag>subtext</ns0:tag>
-      </ns0:section>
-    </ns0:body>
-    """
-
-def qname():
-    """
-    Test QName handling.
-
-    1) decorated tags
-
-    >>> elem = ET.Element("{uri}tag")
-    >>> serialize(elem) # 1.1
-    '<ns0:tag xmlns:ns0="uri" />'
-    >>> elem = ET.Element(ET.QName("{uri}tag"))
-    >>> serialize(elem) # 1.2
-    '<ns0:tag xmlns:ns0="uri" />'
-    >>> elem = ET.Element(ET.QName("uri", "tag"))
-    >>> serialize(elem) # 1.3
-    '<ns0:tag xmlns:ns0="uri" />'
-    >>> elem = ET.Element(ET.QName("uri", "tag"))
-    >>> subelem = ET.SubElement(elem, ET.QName("uri", "tag1"))
-    >>> subelem = ET.SubElement(elem, ET.QName("uri", "tag2"))
-    >>> serialize(elem) # 1.4
-    '<ns0:tag xmlns:ns0="uri"><ns0:tag1 /><ns0:tag2 /></ns0:tag>'
-
-    2) decorated attributes
-
-    >>> elem.clear()
-    >>> elem.attrib["{uri}key"] = "value"
-    >>> serialize(elem) # 2.1
-    '<ns0:tag xmlns:ns0="uri" ns0:key="value" />'
-
-    >>> elem.clear()
-    >>> elem.attrib[ET.QName("{uri}key")] = "value"
-    >>> serialize(elem) # 2.2
-    '<ns0:tag xmlns:ns0="uri" ns0:key="value" />'
-
-    3) decorated values are not converted by default, but the
-       QName wrapper can be used for values
-
-    >>> elem.clear()
-    >>> elem.attrib["{uri}key"] = "{uri}value"
-    >>> serialize(elem) # 3.1
-    '<ns0:tag xmlns:ns0="uri" ns0:key="{uri}value" />'
-
-    >>> elem.clear()
-    >>> elem.attrib["{uri}key"] = ET.QName("{uri}value")
-    >>> serialize(elem) # 3.2
-    '<ns0:tag xmlns:ns0="uri" ns0:key="ns0:value" />'
-
-    >>> elem.clear()
-    >>> subelem = ET.Element("tag")
-    >>> subelem.attrib["{uri1}key"] = ET.QName("{uri2}value")
-    >>> elem.append(subelem)
-    >>> elem.append(subelem)
-    >>> serialize(elem) # 3.3
-    '<ns0:tag xmlns:ns0="uri" xmlns:ns1="uri1" xmlns:ns2="uri2"><tag ns1:key="ns2:value" /><tag ns1:key="ns2:value" /></ns0:tag>'
-
-    4) Direct QName tests
-
-    >>> str(ET.QName('ns', 'tag'))
-    '{ns}tag'
-    >>> str(ET.QName('{ns}tag'))
-    '{ns}tag'
-    >>> q1 = ET.QName('ns', 'tag')
-    >>> q2 = ET.QName('ns', 'tag')
-    >>> q1 == q2
-    True
-    >>> q2 = ET.QName('ns', 'other-tag')
-    >>> q1 == q2
-    False
-    >>> q1 == 'ns:tag'
-    False
-    >>> q1 == '{ns}tag'
-    True
-    """
-
-def doctype_public():
-    """
-    Test PUBLIC doctype.
-
-    >>> elem = ET.XML('<!DOCTYPE html PUBLIC'
-    ...   ' "-//W3C//DTD XHTML 1.0 Transitional//EN"'
-    ...   ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
-    ...   '<html>text</html>')
-
-    """
-
-def xpath_tokenizer(p):
-    """
-    Test the XPath tokenizer.
-
-    >>> # tests from the xml specification
-    >>> xpath_tokenizer("*")
-    ['*']
-    >>> xpath_tokenizer("text()")
-    ['text', '()']
-    >>> xpath_tokenizer("@name")
-    ['@', 'name']
-    >>> xpath_tokenizer("@*")
-    ['@', '*']
-    >>> xpath_tokenizer("para[1]")
-    ['para', '[', '1', ']']
-    >>> xpath_tokenizer("para[last()]")
-    ['para', '[', 'last', '()', ']']
-    >>> xpath_tokenizer("*/para")
-    ['*', '/', 'para']
-    >>> xpath_tokenizer("/doc/chapter[5]/section[2]")
-    ['/', 'doc', '/', 'chapter', '[', '5', ']', '/', 'section', '[', '2', ']']
-    >>> xpath_tokenizer("chapter//para")
-    ['chapter', '//', 'para']
-    >>> xpath_tokenizer("//para")
-    ['//', 'para']
-    >>> xpath_tokenizer("//olist/item")
-    ['//', 'olist', '/', 'item']
-    >>> xpath_tokenizer(".")
-    ['.']
-    >>> xpath_tokenizer(".//para")
-    ['.', '//', 'para']
-    >>> xpath_tokenizer("..")
-    ['..']
-    >>> xpath_tokenizer("../@lang")
-    ['..', '/', '@', 'lang']
-    >>> xpath_tokenizer("chapter[title]")
-    ['chapter', '[', 'title', ']']
-    >>> xpath_tokenizer("employee[@secretary and @assistant]")
-    ['employee', '[', '@', 'secretary', '', 'and', '', '@', 'assistant', ']']
-
-    >>> # additional tests
-    >>> xpath_tokenizer("{http://spam}egg")
-    ['{http://spam}egg']
-    >>> xpath_tokenizer("./spam.egg")
-    ['.', '/', 'spam.egg']
-    >>> xpath_tokenizer(".//{http://spam}egg")
-    ['.', '//', '{http://spam}egg']
-    """
-    from xml.etree import ElementPath
-    out = []
-    for op, tag in ElementPath.xpath_tokenizer(p):
-        out.append(op or tag)
-    return out
-
-def processinginstruction():
-    """
-    Test ProcessingInstruction directly
-
-    >>> ET.tostring(ET.ProcessingInstruction('test', 'instruction'))
-    '<?test instruction?>'
-    >>> ET.tostring(ET.PI('test', 'instruction'))
-    '<?test instruction?>'
-
-    Issue #2746
-
-    >>> ET.tostring(ET.PI('test', '<testing&>'))
-    '<?test <testing&>?>'
-    >>> ET.tostring(ET.PI('test', u'<testing&>\xe3'), 'latin1')
-    "<?xml version='1.0' encoding='latin1'?>\\n<?test <testing&>\\xe3?>"
-    """
-
-#
-# xinclude tests (samples from appendix C of the xinclude specification)
-
-XINCLUDE = {}
-
-XINCLUDE["C1.xml"] = """\
-<?xml version='1.0'?>
-<document xmlns:xi="http://www.w3.org/2001/XInclude">
-  <p>120 Mz is adequate for an average home user.</p>
-  <xi:include href="disclaimer.xml"/>
-</document>
-"""
-
-XINCLUDE["disclaimer.xml"] = """\
-<?xml version='1.0'?>
-<disclaimer>
-  <p>The opinions represented herein represent those of the individual
-  and should not be interpreted as official policy endorsed by this
-  organization.</p>
-</disclaimer>
-"""
-
-XINCLUDE["C2.xml"] = """\
-<?xml version='1.0'?>
-<document xmlns:xi="http://www.w3.org/2001/XInclude">
-  <p>This document has been accessed
-  <xi:include href="count.txt" parse="text"/> times.</p>
-</document>
-"""
-
-XINCLUDE["count.txt"] = "324387"
-
-XINCLUDE["C2b.xml"] = """\
-<?xml version='1.0'?>
-<document xmlns:xi="http://www.w3.org/2001/XInclude">
-  <p>This document has been <em>accessed</em>
-  <xi:include href="count.txt" parse="text"/> times.</p>
-</document>
-"""
-
-XINCLUDE["C3.xml"] = """\
-<?xml version='1.0'?>
-<document xmlns:xi="http://www.w3.org/2001/XInclude">
-  <p>The following is the source of the "data.xml" resource:</p>
-  <example><xi:include href="data.xml" parse="text"/></example>
-</document>
-"""
-
-XINCLUDE["data.xml"] = """\
-<?xml version='1.0'?>
-<data>
-  <item><![CDATA[Brooks & Shields]]></item>
-</data>
-"""
-
-XINCLUDE["C5.xml"] = """\
-<?xml version='1.0'?>
-<div xmlns:xi="http://www.w3.org/2001/XInclude">
-  <xi:include href="example.txt" parse="text">
-    <xi:fallback>
-      <xi:include href="fallback-example.txt" parse="text">
-        <xi:fallback><a href="mailto:bob@example.org">Report error</a></xi:fallback>
-      </xi:include>
-    </xi:fallback>
-  </xi:include>
-</div>
-"""
-
-XINCLUDE["default.xml"] = """\
-<?xml version='1.0'?>
-<document xmlns:xi="http://www.w3.org/2001/XInclude">
-  <p>Example.</p>
-  <xi:include href="{}"/>
-</document>
-""".format(cgi.escape(SIMPLE_XMLFILE, True))
-
-def xinclude_loader(href, parse="xml", encoding=None):
-    try:
-        data = XINCLUDE[href]
-    except KeyError:
-        raise IOError("resource not found")
-    if parse == "xml":
-        from xml.etree.ElementTree import XML
-        return XML(data)
-    return data
-
-def xinclude():
-    r"""
-    Basic inclusion example (XInclude C.1)
-
-    >>> from xml.etree import ElementTree as ET
-    >>> from xml.etree import ElementInclude
-
-    >>> document = xinclude_loader("C1.xml")
-    >>> ElementInclude.include(document, xinclude_loader)
-    >>> print serialize(document) # C1
-    <document>
-      <p>120 Mz is adequate for an average home user.</p>
-      <disclaimer>
-      <p>The opinions represented herein represent those of the individual
-      and should not be interpreted as official policy endorsed by this
-      organization.</p>
-    </disclaimer>
-    </document>
-
-    Textual inclusion example (XInclude C.2)
-
-    >>> document = xinclude_loader("C2.xml")
-    >>> ElementInclude.include(document, xinclude_loader)
-    >>> print serialize(document) # C2
-    <document>
-      <p>This document has been accessed
-      324387 times.</p>
-    </document>
-
-    Textual inclusion after sibling element (based on modified XInclude C.2)
-
-    >>> document = xinclude_loader("C2b.xml")
-    >>> ElementInclude.include(document, xinclude_loader)
-    >>> print(serialize(document)) # C2b
-    <document>
-      <p>This document has been <em>accessed</em>
-      324387 times.</p>
-    </document>
-
-    Textual inclusion of XML example (XInclude C.3)
-
-    >>> document = xinclude_loader("C3.xml")
-    >>> ElementInclude.include(document, xinclude_loader)
-    >>> print serialize(document) # C3
-    <document>
-      <p>The following is the source of the "data.xml" resource:</p>
-      <example>&lt;?xml version='1.0'?&gt;
-    &lt;data&gt;
-      &lt;item&gt;&lt;![CDATA[Brooks &amp; Shields]]&gt;&lt;/item&gt;
-    &lt;/data&gt;
-    </example>
-    </document>
-
-    Fallback example (XInclude C.5)
-    Note! Fallback support is not yet implemented
-
-    >>> document = xinclude_loader("C5.xml")
-    >>> ElementInclude.include(document, xinclude_loader)
-    Traceback (most recent call last):
-    IOError: resource not found
-    >>> # print serialize(document) # C5
-    """
-
-def xinclude_default():
-    """
-    >>> from xml.etree import ElementInclude
-
-    >>> document = xinclude_loader("default.xml")
-    >>> ElementInclude.include(document)
-    >>> print serialize(document) # default
-    <document>
-      <p>Example.</p>
-      <root>
-       <element key="value">text</element>
-       <element>text</element>tail
-       <empty-element />
-    </root>
-    </document>
-    """
-
-#
-# badly formatted xi:include tags
-
-XINCLUDE_BAD = {}
-
-XINCLUDE_BAD["B1.xml"] = """\
-<?xml version='1.0'?>
-<document xmlns:xi="http://www.w3.org/2001/XInclude">
-  <p>120 Mz is adequate for an average home user.</p>
-  <xi:include href="disclaimer.xml" parse="BAD_TYPE"/>
-</document>
-"""
-
-XINCLUDE_BAD["B2.xml"] = """\
-<?xml version='1.0'?>
-<div xmlns:xi="http://www.w3.org/2001/XInclude">
-    <xi:fallback></xi:fallback>
-</div>
-"""
-
-def xinclude_failures():
-    r"""
-    Test failure to locate included XML file.
-
-    >>> from xml.etree import ElementInclude
-
-    >>> def none_loader(href, parser, encoding=None):
-    ...     return None
-
-    >>> document = ET.XML(XINCLUDE["C1.xml"])
-    >>> ElementInclude.include(document, loader=none_loader)
-    Traceback (most recent call last):
-    FatalIncludeError: cannot load 'disclaimer.xml' as 'xml'
-
-    Test failure to locate included text file.
-
-    >>> document = ET.XML(XINCLUDE["C2.xml"])
-    >>> ElementInclude.include(document, loader=none_loader)
-    Traceback (most recent call last):
-    FatalIncludeError: cannot load 'count.txt' as 'text'
-
-    Test bad parse type.
-
-    >>> document = ET.XML(XINCLUDE_BAD["B1.xml"])
-    >>> ElementInclude.include(document, loader=none_loader)
-    Traceback (most recent call last):
-    FatalIncludeError: unknown parse type in xi:include tag ('BAD_TYPE')
-
-    Test xi:fallback outside xi:include.
-
-    >>> document = ET.XML(XINCLUDE_BAD["B2.xml"])
-    >>> ElementInclude.include(document, loader=none_loader)
-    Traceback (most recent call last):
-    FatalIncludeError: xi:fallback tag must be child of xi:include ('{http://www.w3.org/2001/XInclude}fallback')
-    """
-
-# --------------------------------------------------------------------
-# reported bugs
-
-def bug_xmltoolkit21():
-    """
-
-    marshaller gives obscure errors for non-string values
-
-    >>> elem = ET.Element(123)
-    >>> serialize(elem) # tag
-    Traceback (most recent call last):
-    TypeError: cannot serialize 123 (type int)
-    >>> elem = ET.Element("elem")
-    >>> elem.text = 123
-    >>> serialize(elem) # text
-    Traceback (most recent call last):
-    TypeError: cannot serialize 123 (type int)
-    >>> elem = ET.Element("elem")
-    >>> elem.tail = 123
-    >>> serialize(elem) # tail
-    Traceback (most recent call last):
-    TypeError: cannot serialize 123 (type int)
-    >>> elem = ET.Element("elem")
-    >>> elem.set(123, "123")
-    >>> serialize(elem) # attribute key
-    Traceback (most recent call last):
-    TypeError: cannot serialize 123 (type int)
-    >>> elem = ET.Element("elem")
-    >>> elem.set("123", 123)
-    >>> serialize(elem) # attribute value
-    Traceback (most recent call last):
-    TypeError: cannot serialize 123 (type int)
-
-    """
-
-def bug_xmltoolkit25():
-    """
-
-    typo in ElementTree.findtext
-
-    >>> elem = ET.XML(SAMPLE_XML)
-    >>> tree = ET.ElementTree(elem)
-    >>> tree.findtext("tag")
-    'text'
-    >>> tree.findtext("section/tag")
-    'subtext'
-
-    """
-
-def bug_xmltoolkit28():
-    """
-
-    .//tag causes exceptions
-
-    >>> tree = ET.XML("<doc><table><tbody/></table></doc>")
-    >>> summarize_list(tree.findall(".//thead"))
-    []
-    >>> summarize_list(tree.findall(".//tbody"))
-    ['tbody']
-
-    """
-
-def bug_xmltoolkitX1():
-    """
-
-    dump() doesn't flush the output buffer
-
-    >>> tree = ET.XML("<doc><table><tbody/></table></doc>")
-    >>> ET.dump(tree); sys.stdout.write("tail")
-    <doc><table><tbody /></table></doc>
-    tail
-
-    """
-
-def bug_xmltoolkit39():
-    """
-
-    non-ascii element and attribute names doesn't work
-
-    >>> tree = ET.XML("<?xml version='1.0' encoding='iso-8859-1'?><t\xe4g />")
-    >>> ET.tostring(tree, "utf-8")
-    '<t\\xc3\\xa4g />'
-
-    >>> tree = ET.XML("<?xml version='1.0' encoding='iso-8859-1'?><tag \xe4ttr='v&#228;lue' />")
-    >>> tree.attrib
-    {u'\\xe4ttr': u'v\\xe4lue'}
-    >>> ET.tostring(tree, "utf-8")
-    '<tag \\xc3\\xa4ttr="v\\xc3\\xa4lue" />'
-
-    >>> tree = ET.XML("<?xml version='1.0' encoding='iso-8859-1'?><t\xe4g>text</t\xe4g>")
-    >>> ET.tostring(tree, "utf-8")
-    '<t\\xc3\\xa4g>text</t\\xc3\\xa4g>'
-
-    >>> tree = ET.Element(u"t\u00e4g")
-    >>> ET.tostring(tree, "utf-8")
-    '<t\\xc3\\xa4g />'
-
-    >>> tree = ET.Element("tag")
-    >>> tree.set(u"\u00e4ttr", u"v\u00e4lue")
-    >>> ET.tostring(tree, "utf-8")
-    '<tag \\xc3\\xa4ttr="v\\xc3\\xa4lue" />'
-
-    """
-
-def bug_xmltoolkit54():
-    """
-
-    problems handling internally defined entities
-
-    >>> e = ET.XML("<!DOCTYPE doc [<!ENTITY ldots '&#x8230;'>]><doc>&ldots;</doc>")
-    >>> serialize(e)
-    '<doc>&#33328;</doc>'
-
-    """
-
-def bug_xmltoolkit55():
-    """
-
-    make sure we're reporting the first error, not the last
-
-    >>> e = ET.XML("<!DOCTYPE doc SYSTEM 'doc.dtd'><doc>&ldots;&ndots;&rdots;</doc>")
-    Traceback (most recent call last):
-    ParseError: undefined entity &ldots;: line 1, column 36
-
-    """
-
-class ExceptionFile:
-    def read(self, x):
-        raise IOError
-
-def xmltoolkit60():
-    """
-
-    Handle crash in stream source.
-    >>> tree = ET.parse(ExceptionFile())
-    Traceback (most recent call last):
-    IOError
-
-    """
-
-XMLTOOLKIT62_DOC = """<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE patent-application-publication SYSTEM "pap-v15-2001-01-31.dtd" []>
-<patent-application-publication>
-<subdoc-abstract>
-<paragraph id="A-0001" lvl="0">A new cultivar of Begonia plant named &lsquo;BCT9801BEG&rsquo;.</paragraph>
-</subdoc-abstract>
-</patent-application-publication>"""
-
-
-def xmltoolkit62():
-    """
-
-    Don't crash when using custom entities.
-
-    >>> xmltoolkit62()
-    u'A new cultivar of Begonia plant named \u2018BCT9801BEG\u2019.'
-
-    """
-    ENTITIES = {u'rsquo': u'\u2019', u'lsquo': u'\u2018'}
-    parser = ET.XMLTreeBuilder()
-    parser.entity.update(ENTITIES)
-    parser.feed(XMLTOOLKIT62_DOC)
-    t = parser.close()
-    return t.find('.//paragraph').text
-
-def xmltoolkit63():
-    """
-
-    Check reference leak.
-    >>> xmltoolkit63()
-    >>> count = sys.getrefcount(None)
-    >>> for i in range(1000):
-    ...     xmltoolkit63()
-    >>> sys.getrefcount(None) - count
-    0
-
-    """
-    tree = ET.TreeBuilder()
-    tree.start("tag", {})
-    tree.data("text")
-    tree.end("tag")
-
-# --------------------------------------------------------------------
-
-
-def bug_200708_newline():
-    r"""
-
-    Preserve newlines in attributes.
-
-    >>> e = ET.Element('SomeTag', text="def _f():\n  return 3\n")
-    >>> ET.tostring(e)
-    '<SomeTag text="def _f():&#10;  return 3&#10;" />'
-    >>> ET.XML(ET.tostring(e)).get("text")
-    'def _f():\n  return 3\n'
-    >>> ET.tostring(ET.XML(ET.tostring(e)))
-    '<SomeTag text="def _f():&#10;  return 3&#10;" />'
-
-    """
-
-def bug_200708_close():
-    """
-
-    Test default builder.
-    >>> parser = ET.XMLParser() # default
-    >>> parser.feed("<element>some text</element>")
-    >>> summarize(parser.close())
-    'element'
-
-    Test custom builder.
-    >>> class EchoTarget:
-    ...     def close(self):
-    ...         return ET.Element("element") # simulate root
-    >>> parser = ET.XMLParser(EchoTarget())
-    >>> parser.feed("<element>some text</element>")
-    >>> summarize(parser.close())
-    'element'
-
-    """
-
-def bug_200709_default_namespace():
-    """
-
-    >>> e = ET.Element("{default}elem")
-    >>> s = ET.SubElement(e, "{default}elem")
-    >>> serialize(e, default_namespace="default") # 1
-    '<elem xmlns="default"><elem /></elem>'
-
-    >>> e = ET.Element("{default}elem")
-    >>> s = ET.SubElement(e, "{default}elem")
-    >>> s = ET.SubElement(e, "{not-default}elem")
-    >>> serialize(e, default_namespace="default") # 2
-    '<elem xmlns="default" xmlns:ns1="not-default"><elem /><ns1:elem /></elem>'
-
-    >>> e = ET.Element("{default}elem")
-    >>> s = ET.SubElement(e, "{default}elem")
-    >>> s = ET.SubElement(e, "elem") # unprefixed name
-    >>> serialize(e, default_namespace="default") # 3
-    Traceback (most recent call last):
-    ValueError: cannot use non-qualified names with default_namespace option
-
-    """
-
-def bug_200709_register_namespace():
-    """
-
-    >>> ET.tostring(ET.Element("{http://namespace.invalid/does/not/exist/}title"))
-    '<ns0:title xmlns:ns0="http://namespace.invalid/does/not/exist/" />'
-    >>> ET.register_namespace("foo", "http://namespace.invalid/does/not/exist/")
-    >>> ET.tostring(ET.Element("{http://namespace.invalid/does/not/exist/}title"))
-    '<foo:title xmlns:foo="http://namespace.invalid/does/not/exist/" />'
-
-    And the Dublin Core namespace is in the default list:
-
-    >>> ET.tostring(ET.Element("{http://purl.org/dc/elements/1.1/}title"))
-    '<dc:title xmlns:dc="http://purl.org/dc/elements/1.1/" />'
-
-    """
-
-def bug_200709_element_comment():
-    """
-
-    Not sure if this can be fixed, really (since the serializer needs
-    ET.Comment, not cET.comment).
-
-    >>> a = ET.Element('a')
-    >>> a.append(ET.Comment('foo'))
-    >>> a[0].tag == ET.Comment
-    True
-
-    >>> a = ET.Element('a')
-    >>> a.append(ET.PI('foo'))
-    >>> a[0].tag == ET.PI
-    True
-
-    """
-
-def bug_200709_element_insert():
-    """
-
-    >>> a = ET.Element('a')
-    >>> b = ET.SubElement(a, 'b')
-    >>> c = ET.SubElement(a, 'c')
-    >>> d = ET.Element('d')
-    >>> a.insert(0, d)
-    >>> summarize_list(a)
-    ['d', 'b', 'c']
-    >>> a.insert(-1, d)
-    >>> summarize_list(a)
-    ['d', 'b', 'd', 'c']
-
-    """
-
-def bug_200709_iter_comment():
-    """
-
-    >>> a = ET.Element('a')
-    >>> b = ET.SubElement(a, 'b')
-    >>> comment_b = ET.Comment("TEST-b")
-    >>> b.append(comment_b)
-    >>> summarize_list(a.iter(ET.Comment))
-    ['<Comment>']
-
-    """
-
-# --------------------------------------------------------------------
-# reported on bugs.python.org
-
-def bug_1534630():
-    """
-
-    >>> bob = ET.TreeBuilder()
-    >>> e = bob.data("data")
-    >>> e = bob.start("tag", {})
-    >>> e = bob.end("tag")
-    >>> e = bob.close()
-    >>> serialize(e)
-    '<tag />'
-
-    """
-
-def check_issue6233():
-    """
-
-    >>> e = ET.XML("<?xml version='1.0' encoding='utf-8'?><body>t\\xc3\\xa3g</body>")
-    >>> ET.tostring(e, 'ascii')
-    "<?xml version='1.0' encoding='ascii'?>\\n<body>t&#227;g</body>"
-    >>> e = ET.XML("<?xml version='1.0' encoding='iso-8859-1'?><body>t\\xe3g</body>")
-    >>> ET.tostring(e, 'ascii')
-    "<?xml version='1.0' encoding='ascii'?>\\n<body>t&#227;g</body>"
-
-    """
-
-def check_issue3151():
-    """
-
-    >>> e = ET.XML('<prefix:localname xmlns:prefix="${stuff}"/>')
-    >>> e.tag
-    '{${stuff}}localname'
-    >>> t = ET.ElementTree(e)
-    >>> ET.tostring(e)
-    '<ns0:localname xmlns:ns0="${stuff}" />'
-
-    """
-
-def check_issue6565():
-    """
-
-    >>> elem = ET.XML("<body><tag/></body>")
-    >>> summarize_list(elem)
-    ['tag']
-    >>> newelem = ET.XML(SAMPLE_XML)
-    >>> elem[:] = newelem[:]
-    >>> summarize_list(elem)
-    ['tag', 'tag', 'section']
-
-    """
-
-# --------------------------------------------------------------------
-
-
-class CleanContext(object):
-    """Provide default namespace mapping and path cache."""
-    checkwarnings = None
-
-    def __init__(self, quiet=False):
-        if sys.flags.optimize >= 2:
-            # under -OO, doctests cannot be run and therefore not all warnings
-            # will be emitted
-            quiet = True
-        deprecations = (
-            # Search behaviour is broken if search path starts with "/".
-            ("This search is broken in 1.3 and earlier, and will be fixed "
-             "in a future version.  If you rely on the current behaviour, "
-             "change it to '.+'", FutureWarning),
-            # Element.getchildren() and Element.getiterator() are deprecated.
-            ("This method will be removed in future versions.  "
-             "Use .+ instead.", DeprecationWarning),
-            ("This method will be removed in future versions.  "
-             "Use .+ instead.", PendingDeprecationWarning),
-            # XMLParser.doctype() is deprecated.
-            ("This method of XMLParser is deprecated.  Define doctype.. "
-             "method on the TreeBuilder target.", DeprecationWarning))
-        self.checkwarnings = test_support.check_warnings(*deprecations,
-                                                         quiet=quiet)
-
-    def __enter__(self):
-        from xml.etree import ElementTree
-        self._nsmap = ElementTree._namespace_map
-        self._path_cache = ElementTree.ElementPath._cache
-        # Copy the default namespace mapping
-        ElementTree._namespace_map = self._nsmap.copy()
-        # Copy the path cache (should be empty)
-        ElementTree.ElementPath._cache = self._path_cache.copy()
-        self.checkwarnings.__enter__()
-
-    def __exit__(self, *args):
-        from xml.etree import ElementTree
-        # Restore mapping and path cache
-        ElementTree._namespace_map = self._nsmap
-        ElementTree.ElementPath._cache = self._path_cache
-        self.checkwarnings.__exit__(*args)
-
-
-def test_main(module_name='xml.etree.ElementTree'):
-    from test import test_xml_etree
-
-    use_py_module = (module_name == 'xml.etree.ElementTree')
-
-    # The same doctests are used for both the Python and the C implementations
-    assert test_xml_etree.ET.__name__ == module_name
-
-    # XXX the C module should give the same warnings as the Python module
-    with CleanContext(quiet=not use_py_module):
-        test_support.run_doctest(test_xml_etree, verbosity=True)
-
-    # The module should not be changed by the tests
-    assert test_xml_etree.ET.__name__ == module_name
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xml_etree_c.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xml_etree_c.py
deleted file mode 100644
index a96fb50..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xml_etree_c.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# xml.etree test for cElementTree
-
-from test import test_support
-from test.test_support import precisionbigmemtest, _2G
-import unittest
-
-cET = test_support.import_module('xml.etree.cElementTree')
-
-
-# cElementTree specific tests
-
-def sanity():
-    """
-    Import sanity.
-
-    >>> from xml.etree import cElementTree
-    """
-
-
-class MiscTests(unittest.TestCase):
-    # Issue #8651.
-    @precisionbigmemtest(size=_2G + 100, memuse=1)
-    def test_length_overflow(self, size):
-        if size < _2G + 100:
-            self.skipTest("not enough free memory, need at least 2 GB")
-        data = b'x' * size
-        parser = cET.XMLParser()
-        try:
-            self.assertRaises(OverflowError, parser.feed, data)
-        finally:
-            data = None
-
-
-def test_main():
-    from test import test_xml_etree, test_xml_etree_c
-
-    # Run the tests specific to the C implementation
-    test_support.run_doctest(test_xml_etree_c, verbosity=True)
-
-    # Assign the C implementation before running the doctests
-    # Patch the __name__, to prevent confusion with the pure Python test
-    pyET = test_xml_etree.ET
-    py__name__ = test_xml_etree.__name__
-    test_xml_etree.ET = cET
-    if __name__ != '__main__':
-        test_xml_etree.__name__ = __name__
-    try:
-        # Run the same test suite as xml.etree.ElementTree
-        test_xml_etree.test_main(module_name='xml.etree.cElementTree')
-    finally:
-        test_xml_etree.ET = pyET
-        test_xml_etree.__name__ = py__name__
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xmllib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xmllib.py
deleted file mode 100644
index 510ec2a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xmllib.py
+++ /dev/null
@@ -1,48 +0,0 @@
-'''Test module to thest the xmllib module.
-   Sjoerd Mullender
-'''
-
-testdoc = """\
-<?xml version="1.0" encoding="UTF-8" standalone='yes' ?>
-<!-- comments aren't allowed before the <?xml?> tag,
-     but they are allowed before the <!DOCTYPE> tag -->
-<?processing instructions are allowed in the same places as comments ?>
-<!DOCTYPE greeting [
-  <!ELEMENT greeting (#PCDATA)>
-]>
-<greeting>Hello, world!</greeting>
-"""
-
-nsdoc = "<foo xmlns='URI' attr='val'/>"
-
-from test import test_support
-import unittest
-# Silence Py3k warning
-xmllib = test_support.import_module('xmllib', deprecated=True)
-
-class XMLParserTestCase(unittest.TestCase):
-
-    def test_simple(self):
-        parser = xmllib.XMLParser()
-        for c in testdoc:
-            parser.feed(c)
-        parser.close()
-
-    def test_default_namespace(self):
-        class H(xmllib.XMLParser):
-            def unknown_starttag(self, name, attr):
-                self.name, self.attr = name, attr
-        h=H()
-        h.feed(nsdoc)
-        h.close()
-        # The default namespace applies to elements...
-        self.assertEqual(h.name, "URI foo")
-        # but not to attributes
-        self.assertEqual(h.attr, {'attr':'val'})
-
-
-def test_main():
-    test_support.run_unittest(XMLParserTestCase)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xmlrpc.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xmlrpc.py
deleted file mode 100644
index 5e3bc1f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xmlrpc.py
+++ /dev/null
@@ -1,1018 +0,0 @@
-import base64
-import datetime
-import sys
-import time
-import unittest
-import xmlrpclib
-import SimpleXMLRPCServer
-import mimetools
-import httplib
-import socket
-import StringIO
-import os
-import re
-from test import test_support
-
-try:
-    import threading
-except ImportError:
-    threading = None
-
-try:
-    unicode
-except NameError:
-    have_unicode = False
-else:
-    have_unicode = True
-
-alist = [{'astring': 'foo@bar.baz.spam',
-          'afloat': 7283.43,
-          'anint': 2**20,
-          'ashortlong': 2L,
-          'anotherlist': ['.zyx.41'],
-          'abase64': xmlrpclib.Binary("my dog has fleas"),
-          'boolean': xmlrpclib.False,
-          'unicode': u'\u4000\u6000\u8000',
-          u'ukey\u4000': 'regular value',
-          'datetime1': xmlrpclib.DateTime('20050210T11:41:23'),
-          'datetime2': xmlrpclib.DateTime(
-                        (2005, 02, 10, 11, 41, 23, 0, 1, -1)),
-          'datetime3': xmlrpclib.DateTime(
-                        datetime.datetime(2005, 02, 10, 11, 41, 23)),
-          }]
-
-class XMLRPCTestCase(unittest.TestCase):
-
-    def test_dump_load(self):
-        self.assertEqual(alist,
-                         xmlrpclib.loads(xmlrpclib.dumps((alist,)))[0][0])
-
-    def test_dump_bare_datetime(self):
-        # This checks that an unwrapped datetime.date object can be handled
-        # by the marshalling code.  This can't be done via test_dump_load()
-        # since with use_datetime set to 1 the unmarshaller would create
-        # datetime objects for the 'datetime[123]' keys as well
-        dt = datetime.datetime(2005, 02, 10, 11, 41, 23)
-        s = xmlrpclib.dumps((dt,))
-        (newdt,), m = xmlrpclib.loads(s, use_datetime=1)
-        self.assertEqual(newdt, dt)
-        self.assertEqual(m, None)
-
-        (newdt,), m = xmlrpclib.loads(s, use_datetime=0)
-        self.assertEqual(newdt, xmlrpclib.DateTime('20050210T11:41:23'))
-
-    def test_datetime_before_1900(self):
-        # same as before but with a date before 1900
-        dt = datetime.datetime(1, 02, 10, 11, 41, 23)
-        s = xmlrpclib.dumps((dt,))
-        (newdt,), m = xmlrpclib.loads(s, use_datetime=1)
-        self.assertEqual(newdt, dt)
-        self.assertEqual(m, None)
-
-        (newdt,), m = xmlrpclib.loads(s, use_datetime=0)
-        self.assertEqual(newdt, xmlrpclib.DateTime('00010210T11:41:23'))
-
-    def test_cmp_datetime_DateTime(self):
-        now = datetime.datetime.now()
-        dt = xmlrpclib.DateTime(now.timetuple())
-        self.assertTrue(dt == now)
-        self.assertTrue(now == dt)
-        then = now + datetime.timedelta(seconds=4)
-        self.assertTrue(then >= dt)
-        self.assertTrue(dt < then)
-
-    def test_bug_1164912 (self):
-        d = xmlrpclib.DateTime()
-        ((new_d,), dummy) = xmlrpclib.loads(xmlrpclib.dumps((d,),
-                                            methodresponse=True))
-        self.assertIsInstance(new_d.value, str)
-
-        # Check that the output of dumps() is still an 8-bit string
-        s = xmlrpclib.dumps((new_d,), methodresponse=True)
-        self.assertIsInstance(s, str)
-
-    def test_newstyle_class(self):
-        class T(object):
-            pass
-        t = T()
-        t.x = 100
-        t.y = "Hello"
-        ((t2,), dummy) = xmlrpclib.loads(xmlrpclib.dumps((t,)))
-        self.assertEqual(t2, t.__dict__)
-
-    def test_dump_big_long(self):
-        self.assertRaises(OverflowError, xmlrpclib.dumps, (2L**99,))
-
-    def test_dump_bad_dict(self):
-        self.assertRaises(TypeError, xmlrpclib.dumps, ({(1,2,3): 1},))
-
-    def test_dump_recursive_seq(self):
-        l = [1,2,3]
-        t = [3,4,5,l]
-        l.append(t)
-        self.assertRaises(TypeError, xmlrpclib.dumps, (l,))
-
-    def test_dump_recursive_dict(self):
-        d = {'1':1, '2':1}
-        t = {'3':3, 'd':d}
-        d['t'] = t
-        self.assertRaises(TypeError, xmlrpclib.dumps, (d,))
-
-    def test_dump_big_int(self):
-        if sys.maxint > 2L**31-1:
-            self.assertRaises(OverflowError, xmlrpclib.dumps,
-                              (int(2L**34),))
-
-        xmlrpclib.dumps((xmlrpclib.MAXINT, xmlrpclib.MININT))
-        self.assertRaises(OverflowError, xmlrpclib.dumps, (xmlrpclib.MAXINT+1,))
-        self.assertRaises(OverflowError, xmlrpclib.dumps, (xmlrpclib.MININT-1,))
-
-        def dummy_write(s):
-            pass
-
-        m = xmlrpclib.Marshaller()
-        m.dump_int(xmlrpclib.MAXINT, dummy_write)
-        m.dump_int(xmlrpclib.MININT, dummy_write)
-        self.assertRaises(OverflowError, m.dump_int, xmlrpclib.MAXINT+1, dummy_write)
-        self.assertRaises(OverflowError, m.dump_int, xmlrpclib.MININT-1, dummy_write)
-
-
-    def test_dump_none(self):
-        value = alist + [None]
-        arg1 = (alist + [None],)
-        strg = xmlrpclib.dumps(arg1, allow_none=True)
-        self.assertEqual(value,
-                         xmlrpclib.loads(strg)[0][0])
-        self.assertRaises(TypeError, xmlrpclib.dumps, (arg1,))
-
-    def test_default_encoding_issues(self):
-        # SF bug #1115989: wrong decoding in '_stringify'
-        utf8 = """<?xml version='1.0' encoding='iso-8859-1'?>
-                  <params>
-                    <param><value>
-                      <string>abc \x95</string>
-                      </value></param>
-                    <param><value>
-                      <struct>
-                        <member>
-                          <name>def \x96</name>
-                          <value><string>ghi \x97</string></value>
-                          </member>
-                        </struct>
-                      </value></param>
-                  </params>
-                  """
-
-        # sys.setdefaultencoding() normally doesn't exist after site.py is
-        # loaded.  Import a temporary fresh copy to get access to it
-        # but then restore the original copy to avoid messing with
-        # other potentially modified sys module attributes
-        old_encoding = sys.getdefaultencoding()
-        with test_support.CleanImport('sys'):
-            import sys as temp_sys
-            temp_sys.setdefaultencoding("iso-8859-1")
-            try:
-                (s, d), m = xmlrpclib.loads(utf8)
-            finally:
-                temp_sys.setdefaultencoding(old_encoding)
-
-        items = d.items()
-        if have_unicode:
-            self.assertEqual(s, u"abc \x95")
-            self.assertIsInstance(s, unicode)
-            self.assertEqual(items, [(u"def \x96", u"ghi \x97")])
-            self.assertIsInstance(items[0][0], unicode)
-            self.assertIsInstance(items[0][1], unicode)
-        else:
-            self.assertEqual(s, "abc \xc2\x95")
-            self.assertEqual(items, [("def \xc2\x96", "ghi \xc2\x97")])
-
-
-class HelperTestCase(unittest.TestCase):
-    def test_escape(self):
-        self.assertEqual(xmlrpclib.escape("a&b"), "a&amp;b")
-        self.assertEqual(xmlrpclib.escape("a<b"), "a&lt;b")
-        self.assertEqual(xmlrpclib.escape("a>b"), "a&gt;b")
-
-class FaultTestCase(unittest.TestCase):
-    def test_repr(self):
-        f = xmlrpclib.Fault(42, 'Test Fault')
-        self.assertEqual(repr(f), "<Fault 42: 'Test Fault'>")
-        self.assertEqual(repr(f), str(f))
-
-    def test_dump_fault(self):
-        f = xmlrpclib.Fault(42, 'Test Fault')
-        s = xmlrpclib.dumps((f,))
-        (newf,), m = xmlrpclib.loads(s)
-        self.assertEqual(newf, {'faultCode': 42, 'faultString': 'Test Fault'})
-        self.assertEqual(m, None)
-
-        s = xmlrpclib.Marshaller().dumps(f)
-        self.assertRaises(xmlrpclib.Fault, xmlrpclib.loads, s)
-
-
-class DateTimeTestCase(unittest.TestCase):
-    def test_default(self):
-        t = xmlrpclib.DateTime()
-
-    def test_time(self):
-        d = 1181399930.036952
-        t = xmlrpclib.DateTime(d)
-        self.assertEqual(str(t), time.strftime("%Y%m%dT%H:%M:%S", time.localtime(d)))
-
-    def test_time_tuple(self):
-        d = (2007,6,9,10,38,50,5,160,0)
-        t = xmlrpclib.DateTime(d)
-        self.assertEqual(str(t), '20070609T10:38:50')
-
-    def test_time_struct(self):
-        d = time.localtime(1181399930.036952)
-        t = xmlrpclib.DateTime(d)
-        self.assertEqual(str(t),  time.strftime("%Y%m%dT%H:%M:%S", d))
-
-    def test_datetime_datetime(self):
-        d = datetime.datetime(2007,1,2,3,4,5)
-        t = xmlrpclib.DateTime(d)
-        self.assertEqual(str(t), '20070102T03:04:05')
-
-    def test_repr(self):
-        d = datetime.datetime(2007,1,2,3,4,5)
-        t = xmlrpclib.DateTime(d)
-        val ="<DateTime '20070102T03:04:05' at %x>" % id(t)
-        self.assertEqual(repr(t), val)
-
-    def test_decode(self):
-        d = ' 20070908T07:11:13  '
-        t1 = xmlrpclib.DateTime()
-        t1.decode(d)
-        tref = xmlrpclib.DateTime(datetime.datetime(2007,9,8,7,11,13))
-        self.assertEqual(t1, tref)
-
-        t2 = xmlrpclib._datetime(d)
-        self.assertEqual(t1, tref)
-
-class BinaryTestCase(unittest.TestCase):
-    def test_default(self):
-        t = xmlrpclib.Binary()
-        self.assertEqual(str(t), '')
-
-    def test_string(self):
-        d = '\x01\x02\x03abc123\xff\xfe'
-        t = xmlrpclib.Binary(d)
-        self.assertEqual(str(t), d)
-
-    def test_decode(self):
-        d = '\x01\x02\x03abc123\xff\xfe'
-        de = base64.encodestring(d)
-        t1 = xmlrpclib.Binary()
-        t1.decode(de)
-        self.assertEqual(str(t1), d)
-
-        t2 = xmlrpclib._binary(de)
-        self.assertEqual(str(t2), d)
-
-
-ADDR = PORT = URL = None
-
-# The evt is set twice.  First when the server is ready to serve.
-# Second when the server has been shutdown.  The user must clear
-# the event after it has been set the first time to catch the second set.
-def http_server(evt, numrequests, requestHandler=None):
-    class TestInstanceClass:
-        def div(self, x, y):
-            return x // y
-
-        def _methodHelp(self, name):
-            if name == 'div':
-                return 'This is the div function'
-
-    def my_function():
-        '''This is my function'''
-        return True
-
-    class MyXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer):
-        def get_request(self):
-            # Ensure the socket is always non-blocking.  On Linux, socket
-            # attributes are not inherited like they are on *BSD and Windows.
-            s, port = self.socket.accept()
-            s.setblocking(True)
-            return s, port
-
-    if not requestHandler:
-        requestHandler = SimpleXMLRPCServer.SimpleXMLRPCRequestHandler
-    serv = MyXMLRPCServer(("localhost", 0), requestHandler,
-                          logRequests=False, bind_and_activate=False)
-    try:
-        serv.socket.settimeout(3)
-        serv.server_bind()
-        global ADDR, PORT, URL
-        ADDR, PORT = serv.socket.getsockname()
-        #connect to IP address directly.  This avoids socket.create_connection()
-        #trying to connect to to "localhost" using all address families, which
-        #causes slowdown e.g. on vista which supports AF_INET6.  The server listens
-        #on AF_INET only.
-        URL = "http://%s:%d"%(ADDR, PORT)
-        serv.server_activate()
-        serv.register_introspection_functions()
-        serv.register_multicall_functions()
-        serv.register_function(pow)
-        serv.register_function(lambda x,y: x+y, 'add')
-        serv.register_function(my_function)
-        serv.register_instance(TestInstanceClass())
-        evt.set()
-
-        # handle up to 'numrequests' requests
-        while numrequests > 0:
-            serv.handle_request()
-            numrequests -= 1
-
-    except socket.timeout:
-        pass
-    finally:
-        serv.socket.close()
-        PORT = None
-        evt.set()
-
-def http_multi_server(evt, numrequests, requestHandler=None):
-    class TestInstanceClass:
-        def div(self, x, y):
-            return x // y
-
-        def _methodHelp(self, name):
-            if name == 'div':
-                return 'This is the div function'
-
-    def my_function():
-        '''This is my function'''
-        return True
-
-    class MyXMLRPCServer(SimpleXMLRPCServer.MultiPathXMLRPCServer):
-        def get_request(self):
-            # Ensure the socket is always non-blocking.  On Linux, socket
-            # attributes are not inherited like they are on *BSD and Windows.
-            s, port = self.socket.accept()
-            s.setblocking(True)
-            return s, port
-
-    if not requestHandler:
-        requestHandler = SimpleXMLRPCServer.SimpleXMLRPCRequestHandler
-    class MyRequestHandler(requestHandler):
-        rpc_paths = []
-
-    serv = MyXMLRPCServer(("localhost", 0), MyRequestHandler,
-                          logRequests=False, bind_and_activate=False)
-    serv.socket.settimeout(3)
-    serv.server_bind()
-    try:
-        global ADDR, PORT, URL
-        ADDR, PORT = serv.socket.getsockname()
-        #connect to IP address directly.  This avoids socket.create_connection()
-        #trying to connect to to "localhost" using all address families, which
-        #causes slowdown e.g. on vista which supports AF_INET6.  The server listens
-        #on AF_INET only.
-        URL = "http://%s:%d"%(ADDR, PORT)
-        serv.server_activate()
-        paths = ["/foo", "/foo/bar"]
-        for path in paths:
-            d = serv.add_dispatcher(path, SimpleXMLRPCServer.SimpleXMLRPCDispatcher())
-            d.register_introspection_functions()
-            d.register_multicall_functions()
-        serv.get_dispatcher(paths[0]).register_function(pow)
-        serv.get_dispatcher(paths[1]).register_function(lambda x,y: x+y, 'add')
-        evt.set()
-
-        # handle up to 'numrequests' requests
-        while numrequests > 0:
-            serv.handle_request()
-            numrequests -= 1
-
-    except socket.timeout:
-        pass
-    finally:
-        serv.socket.close()
-        PORT = None
-        evt.set()
-
-# This function prevents errors like:
-#    <ProtocolError for localhost:57527/RPC2: 500 Internal Server Error>
-def is_unavailable_exception(e):
-    '''Returns True if the given ProtocolError is the product of a server-side
-       exception caused by the 'temporarily unavailable' response sometimes
-       given by operations on non-blocking sockets.'''
-
-    # sometimes we get a -1 error code and/or empty headers
-    try:
-        if e.errcode == -1 or e.headers is None:
-            return True
-        exc_mess = e.headers.get('X-exception')
-    except AttributeError:
-        # Ignore socket.errors here.
-        exc_mess = str(e)
-
-    if exc_mess and 'temporarily unavailable' in exc_mess.lower():
-        return True
-
-    return False
-
-@unittest.skipUnless(threading, 'Threading required for this test.')
-class BaseServerTestCase(unittest.TestCase):
-    requestHandler = None
-    request_count = 1
-    threadFunc = staticmethod(http_server)
-
-    def setUp(self):
-        # enable traceback reporting
-        SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = True
-
-        self.evt = threading.Event()
-        # start server thread to handle requests
-        serv_args = (self.evt, self.request_count, self.requestHandler)
-        threading.Thread(target=self.threadFunc, args=serv_args).start()
-
-        # wait for the server to be ready
-        self.evt.wait(10)
-        self.evt.clear()
-
-    def tearDown(self):
-        # wait on the server thread to terminate
-        self.evt.wait(10)
-
-        # disable traceback reporting
-        SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = False
-
-# NOTE: The tests in SimpleServerTestCase will ignore failures caused by
-# "temporarily unavailable" exceptions raised in SimpleXMLRPCServer.  This
-# condition occurs infrequently on some platforms, frequently on others, and
-# is apparently caused by using SimpleXMLRPCServer with a non-blocking socket
-# If the server class is updated at some point in the future to handle this
-# situation more gracefully, these tests should be modified appropriately.
-
-class SimpleServerTestCase(BaseServerTestCase):
-    def test_simple1(self):
-        try:
-            p = xmlrpclib.ServerProxy(URL)
-            self.assertEqual(p.pow(6,8), 6**8)
-        except (xmlrpclib.ProtocolError, socket.error), e:
-            # ignore failures due to non-blocking socket 'unavailable' errors
-            if not is_unavailable_exception(e):
-                # protocol error; provide additional information in test output
-                self.fail("%s\n%s" % (e, getattr(e, "headers", "")))
-
-    def test_nonascii(self):
-        start_string = 'P\N{LATIN SMALL LETTER Y WITH CIRCUMFLEX}t'
-        end_string = 'h\N{LATIN SMALL LETTER O WITH HORN}n'
-
-        try:
-            p = xmlrpclib.ServerProxy(URL)
-            self.assertEqual(p.add(start_string, end_string),
-                             start_string + end_string)
-        except (xmlrpclib.ProtocolError, socket.error) as e:
-            # ignore failures due to non-blocking socket unavailable errors.
-            if not is_unavailable_exception(e):
-                # protocol error; provide additional information in test output
-                self.fail("%s\n%s" % (e, getattr(e, "headers", "")))
-
-
-    # [ch] The test 404 is causing lots of false alarms.
-    def XXXtest_404(self):
-        # send POST with httplib, it should return 404 header and
-        # 'Not Found' message.
-        conn = httplib.HTTPConnection(ADDR, PORT)
-        conn.request('POST', '/this-is-not-valid')
-        response = conn.getresponse()
-        conn.close()
-
-        self.assertEqual(response.status, 404)
-        self.assertEqual(response.reason, 'Not Found')
-
-    def test_introspection1(self):
-        try:
-            p = xmlrpclib.ServerProxy(URL)
-            meth = p.system.listMethods()
-            expected_methods = set(['pow', 'div', 'my_function', 'add',
-                                    'system.listMethods', 'system.methodHelp',
-                                    'system.methodSignature', 'system.multicall'])
-            self.assertEqual(set(meth), expected_methods)
-        except (xmlrpclib.ProtocolError, socket.error), e:
-            # ignore failures due to non-blocking socket 'unavailable' errors
-            if not is_unavailable_exception(e):
-                # protocol error; provide additional information in test output
-                self.fail("%s\n%s" % (e, getattr(e, "headers", "")))
-
-    def test_introspection2(self):
-        try:
-            # test _methodHelp()
-            p = xmlrpclib.ServerProxy(URL)
-            divhelp = p.system.methodHelp('div')
-            self.assertEqual(divhelp, 'This is the div function')
-        except (xmlrpclib.ProtocolError, socket.error), e:
-            # ignore failures due to non-blocking socket 'unavailable' errors
-            if not is_unavailable_exception(e):
-                # protocol error; provide additional information in test output
-                self.fail("%s\n%s" % (e, getattr(e, "headers", "")))
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def test_introspection3(self):
-        try:
-            # test native doc
-            p = xmlrpclib.ServerProxy(URL)
-            myfunction = p.system.methodHelp('my_function')
-            self.assertEqual(myfunction, 'This is my function')
-        except (xmlrpclib.ProtocolError, socket.error), e:
-            # ignore failures due to non-blocking socket 'unavailable' errors
-            if not is_unavailable_exception(e):
-                # protocol error; provide additional information in test output
-                self.fail("%s\n%s" % (e, getattr(e, "headers", "")))
-
-    def test_introspection4(self):
-        # the SimpleXMLRPCServer doesn't support signatures, but
-        # at least check that we can try making the call
-        try:
-            p = xmlrpclib.ServerProxy(URL)
-            divsig = p.system.methodSignature('div')
-            self.assertEqual(divsig, 'signatures not supported')
-        except (xmlrpclib.ProtocolError, socket.error), e:
-            # ignore failures due to non-blocking socket 'unavailable' errors
-            if not is_unavailable_exception(e):
-                # protocol error; provide additional information in test output
-                self.fail("%s\n%s" % (e, getattr(e, "headers", "")))
-
-    def test_multicall(self):
-        try:
-            p = xmlrpclib.ServerProxy(URL)
-            multicall = xmlrpclib.MultiCall(p)
-            multicall.add(2,3)
-            multicall.pow(6,8)
-            multicall.div(127,42)
-            add_result, pow_result, div_result = multicall()
-            self.assertEqual(add_result, 2+3)
-            self.assertEqual(pow_result, 6**8)
-            self.assertEqual(div_result, 127//42)
-        except (xmlrpclib.ProtocolError, socket.error), e:
-            # ignore failures due to non-blocking socket 'unavailable' errors
-            if not is_unavailable_exception(e):
-                # protocol error; provide additional information in test output
-                self.fail("%s\n%s" % (e, getattr(e, "headers", "")))
-
-    def test_non_existing_multicall(self):
-        try:
-            p = xmlrpclib.ServerProxy(URL)
-            multicall = xmlrpclib.MultiCall(p)
-            multicall.this_is_not_exists()
-            result = multicall()
-
-            # result.results contains;
-            # [{'faultCode': 1, 'faultString': '<type \'exceptions.Exception\'>:'
-            #   'method "this_is_not_exists" is not supported'>}]
-
-            self.assertEqual(result.results[0]['faultCode'], 1)
-            self.assertEqual(result.results[0]['faultString'],
-                '<type \'exceptions.Exception\'>:method "this_is_not_exists" '
-                'is not supported')
-        except (xmlrpclib.ProtocolError, socket.error), e:
-            # ignore failures due to non-blocking socket 'unavailable' errors
-            if not is_unavailable_exception(e):
-                # protocol error; provide additional information in test output
-                self.fail("%s\n%s" % (e, getattr(e, "headers", "")))
-
-    def test_dotted_attribute(self):
-        # Raises an AttributeError because private methods are not allowed.
-        self.assertRaises(AttributeError,
-                          SimpleXMLRPCServer.resolve_dotted_attribute, str, '__add')
-
-        self.assertTrue(SimpleXMLRPCServer.resolve_dotted_attribute(str, 'title'))
-        # Get the test to run faster by sending a request with test_simple1.
-        # This avoids waiting for the socket timeout.
-        self.test_simple1()
-
-class MultiPathServerTestCase(BaseServerTestCase):
-    threadFunc = staticmethod(http_multi_server)
-    request_count = 2
-    def test_path1(self):
-        p = xmlrpclib.ServerProxy(URL+"/foo")
-        self.assertEqual(p.pow(6,8), 6**8)
-        self.assertRaises(xmlrpclib.Fault, p.add, 6, 8)
-    def test_path2(self):
-        p = xmlrpclib.ServerProxy(URL+"/foo/bar")
-        self.assertEqual(p.add(6,8), 6+8)
-        self.assertRaises(xmlrpclib.Fault, p.pow, 6, 8)
-
-#A test case that verifies that a server using the HTTP/1.1 keep-alive mechanism
-#does indeed serve subsequent requests on the same connection
-class BaseKeepaliveServerTestCase(BaseServerTestCase):
-    #a request handler that supports keep-alive and logs requests into a
-    #class variable
-    class RequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
-        parentClass = SimpleXMLRPCServer.SimpleXMLRPCRequestHandler
-        protocol_version = 'HTTP/1.1'
-        myRequests = []
-        def handle(self):
-            self.myRequests.append([])
-            self.reqidx = len(self.myRequests)-1
-            return self.parentClass.handle(self)
-        def handle_one_request(self):
-            result = self.parentClass.handle_one_request(self)
-            self.myRequests[self.reqidx].append(self.raw_requestline)
-            return result
-
-    requestHandler = RequestHandler
-    def setUp(self):
-        #clear request log
-        self.RequestHandler.myRequests = []
-        return BaseServerTestCase.setUp(self)
-
-#A test case that verifies that a server using the HTTP/1.1 keep-alive mechanism
-#does indeed serve subsequent requests on the same connection
-class KeepaliveServerTestCase1(BaseKeepaliveServerTestCase):
-    def test_two(self):
-        p = xmlrpclib.ServerProxy(URL)
-        #do three requests.
-        self.assertEqual(p.pow(6,8), 6**8)
-        self.assertEqual(p.pow(6,8), 6**8)
-        self.assertEqual(p.pow(6,8), 6**8)
-
-        #they should have all been handled by a single request handler
-        self.assertEqual(len(self.RequestHandler.myRequests), 1)
-
-        #check that we did at least two (the third may be pending append
-        #due to thread scheduling)
-        self.assertGreaterEqual(len(self.RequestHandler.myRequests[-1]), 2)
-
-#test special attribute access on the serverproxy, through the __call__
-#function.
-class KeepaliveServerTestCase2(BaseKeepaliveServerTestCase):
-    #ask for two keepalive requests to be handled.
-    request_count=2
-
-    def test_close(self):
-        p = xmlrpclib.ServerProxy(URL)
-        #do some requests with close.
-        self.assertEqual(p.pow(6,8), 6**8)
-        self.assertEqual(p.pow(6,8), 6**8)
-        self.assertEqual(p.pow(6,8), 6**8)
-        p("close")() #this should trigger a new keep-alive request
-        self.assertEqual(p.pow(6,8), 6**8)
-        self.assertEqual(p.pow(6,8), 6**8)
-        self.assertEqual(p.pow(6,8), 6**8)
-
-        #they should have all been two request handlers, each having logged at least
-        #two complete requests
-        self.assertEqual(len(self.RequestHandler.myRequests), 2)
-        self.assertGreaterEqual(len(self.RequestHandler.myRequests[-1]), 2)
-        self.assertGreaterEqual(len(self.RequestHandler.myRequests[-2]), 2)
-
-    def test_transport(self):
-        p = xmlrpclib.ServerProxy(URL)
-        #do some requests with close.
-        self.assertEqual(p.pow(6,8), 6**8)
-        p("transport").close() #same as above, really.
-        self.assertEqual(p.pow(6,8), 6**8)
-        self.assertEqual(len(self.RequestHandler.myRequests), 2)
-
-#A test case that verifies that gzip encoding works in both directions
-#(for a request and the response)
-class GzipServerTestCase(BaseServerTestCase):
-    #a request handler that supports keep-alive and logs requests into a
-    #class variable
-    class RequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
-        parentClass = SimpleXMLRPCServer.SimpleXMLRPCRequestHandler
-        protocol_version = 'HTTP/1.1'
-
-        def do_POST(self):
-            #store content of last request in class
-            self.__class__.content_length = int(self.headers["content-length"])
-            return self.parentClass.do_POST(self)
-    requestHandler = RequestHandler
-
-    class Transport(xmlrpclib.Transport):
-        #custom transport, stores the response length for our perusal
-        fake_gzip = False
-        def parse_response(self, response):
-            self.response_length=int(response.getheader("content-length", 0))
-            return xmlrpclib.Transport.parse_response(self, response)
-
-        def send_content(self, connection, body):
-            if self.fake_gzip:
-                #add a lone gzip header to induce decode error remotely
-                connection.putheader("Content-Encoding", "gzip")
-            return xmlrpclib.Transport.send_content(self, connection, body)
-
-    def setUp(self):
-        BaseServerTestCase.setUp(self)
-
-    def test_gzip_request(self):
-        t = self.Transport()
-        t.encode_threshold = None
-        p = xmlrpclib.ServerProxy(URL, transport=t)
-        self.assertEqual(p.pow(6,8), 6**8)
-        a = self.RequestHandler.content_length
-        t.encode_threshold = 0 #turn on request encoding
-        self.assertEqual(p.pow(6,8), 6**8)
-        b = self.RequestHandler.content_length
-        self.assertTrue(a>b)
-
-    def test_bad_gzip_request(self):
-        t = self.Transport()
-        t.encode_threshold = None
-        t.fake_gzip = True
-        p = xmlrpclib.ServerProxy(URL, transport=t)
-        cm = self.assertRaisesRegexp(xmlrpclib.ProtocolError,
-                                     re.compile(r"\b400\b"))
-        with cm:
-            p.pow(6, 8)
-
-    def test_gsip_response(self):
-        t = self.Transport()
-        p = xmlrpclib.ServerProxy(URL, transport=t)
-        old = self.requestHandler.encode_threshold
-        self.requestHandler.encode_threshold = None #no encoding
-        self.assertEqual(p.pow(6,8), 6**8)
-        a = t.response_length
-        self.requestHandler.encode_threshold = 0 #always encode
-        self.assertEqual(p.pow(6,8), 6**8)
-        b = t.response_length
-        self.requestHandler.encode_threshold = old
-        self.assertTrue(a>b)
-
-#Test special attributes of the ServerProxy object
-class ServerProxyTestCase(unittest.TestCase):
-    def setUp(self):
-        unittest.TestCase.setUp(self)
-        if threading:
-            self.url = URL
-        else:
-            # Without threading, http_server() and http_multi_server() will not
-            # be executed and URL is still equal to None. 'http://' is a just
-            # enough to choose the scheme (HTTP)
-            self.url = 'http://'
-
-    def test_close(self):
-        p = xmlrpclib.ServerProxy(self.url)
-        self.assertEqual(p('close')(), None)
-
-    def test_transport(self):
-        t = xmlrpclib.Transport()
-        p = xmlrpclib.ServerProxy(self.url, transport=t)
-        self.assertEqual(p('transport'), t)
-
-# This is a contrived way to make a failure occur on the server side
-# in order to test the _send_traceback_header flag on the server
-class FailingMessageClass(mimetools.Message):
-    def __getitem__(self, key):
-        key = key.lower()
-        if key == 'content-length':
-            return 'I am broken'
-        return mimetools.Message.__getitem__(self, key)
-
-
-@unittest.skipUnless(threading, 'Threading required for this test.')
-class FailingServerTestCase(unittest.TestCase):
-    def setUp(self):
-        self.evt = threading.Event()
-        # start server thread to handle requests
-        serv_args = (self.evt, 1)
-        threading.Thread(target=http_server, args=serv_args).start()
-
-        # wait for the server to be ready
-        self.evt.wait()
-        self.evt.clear()
-
-    def tearDown(self):
-        # wait on the server thread to terminate
-        self.evt.wait()
-        # reset flag
-        SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = False
-        # reset message class
-        SimpleXMLRPCServer.SimpleXMLRPCRequestHandler.MessageClass = mimetools.Message
-
-    def test_basic(self):
-        # check that flag is false by default
-        flagval = SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header
-        self.assertEqual(flagval, False)
-
-        # enable traceback reporting
-        SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = True
-
-        # test a call that shouldn't fail just as a smoke test
-        try:
-            p = xmlrpclib.ServerProxy(URL)
-            self.assertEqual(p.pow(6,8), 6**8)
-        except (xmlrpclib.ProtocolError, socket.error), e:
-            # ignore failures due to non-blocking socket 'unavailable' errors
-            if not is_unavailable_exception(e):
-                # protocol error; provide additional information in test output
-                self.fail("%s\n%s" % (e, getattr(e, "headers", "")))
-
-    def test_fail_no_info(self):
-        # use the broken message class
-        SimpleXMLRPCServer.SimpleXMLRPCRequestHandler.MessageClass = FailingMessageClass
-
-        try:
-            p = xmlrpclib.ServerProxy(URL)
-            p.pow(6,8)
-        except (xmlrpclib.ProtocolError, socket.error), e:
-            # ignore failures due to non-blocking socket 'unavailable' errors
-            if not is_unavailable_exception(e) and hasattr(e, "headers"):
-                # The two server-side error headers shouldn't be sent back in this case
-                self.assertTrue(e.headers.get("X-exception") is None)
-                self.assertTrue(e.headers.get("X-traceback") is None)
-        else:
-            self.fail('ProtocolError not raised')
-
-    def test_fail_with_info(self):
-        # use the broken message class
-        SimpleXMLRPCServer.SimpleXMLRPCRequestHandler.MessageClass = FailingMessageClass
-
-        # Check that errors in the server send back exception/traceback
-        # info when flag is set
-        SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = True
-
-        try:
-            p = xmlrpclib.ServerProxy(URL)
-            p.pow(6,8)
-        except (xmlrpclib.ProtocolError, socket.error), e:
-            # ignore failures due to non-blocking socket 'unavailable' errors
-            if not is_unavailable_exception(e) and hasattr(e, "headers"):
-                # We should get error info in the response
-                expected_err = "invalid literal for int() with base 10: 'I am broken'"
-                self.assertEqual(e.headers.get("x-exception"), expected_err)
-                self.assertTrue(e.headers.get("x-traceback") is not None)
-        else:
-            self.fail('ProtocolError not raised')
-
-class CGIHandlerTestCase(unittest.TestCase):
-    def setUp(self):
-        self.cgi = SimpleXMLRPCServer.CGIXMLRPCRequestHandler()
-
-    def tearDown(self):
-        self.cgi = None
-
-    def test_cgi_get(self):
-        with test_support.EnvironmentVarGuard() as env:
-            env['REQUEST_METHOD'] = 'GET'
-            # if the method is GET and no request_text is given, it runs handle_get
-            # get sysout output
-            with test_support.captured_stdout() as data_out:
-                self.cgi.handle_request()
-
-            # parse Status header
-            data_out.seek(0)
-            handle = data_out.read()
-            status = handle.split()[1]
-            message = ' '.join(handle.split()[2:4])
-
-            self.assertEqual(status, '400')
-            self.assertEqual(message, 'Bad Request')
-
-
-    def test_cgi_xmlrpc_response(self):
-        data = """<?xml version='1.0'?>
-        <methodCall>
-            <methodName>test_method</methodName>
-            <params>
-                <param>
-                    <value><string>foo</string></value>
-                </param>
-                <param>
-                    <value><string>bar</string></value>
-                </param>
-            </params>
-        </methodCall>
-        """
-
-        with test_support.EnvironmentVarGuard() as env, \
-             test_support.captured_stdout() as data_out, \
-             test_support.captured_stdin() as data_in:
-            data_in.write(data)
-            data_in.seek(0)
-            env['CONTENT_LENGTH'] = str(len(data))
-            self.cgi.handle_request()
-        data_out.seek(0)
-
-        # will respond exception, if so, our goal is achieved ;)
-        handle = data_out.read()
-
-        # start with 44th char so as not to get http header, we just need only xml
-        self.assertRaises(xmlrpclib.Fault, xmlrpclib.loads, handle[44:])
-
-        # Also test the content-length returned  by handle_request
-        # Using the same test method inorder to avoid all the datapassing
-        # boilerplate code.
-        # Test for bug: http://bugs.python.org/issue5040
-
-        content = handle[handle.find("<?xml"):]
-
-        self.assertEqual(
-            int(re.search('Content-Length: (\d+)', handle).group(1)),
-            len(content))
-
-
-class FakeSocket:
-
-    def __init__(self):
-        self.data = StringIO.StringIO()
-
-    def send(self, buf):
-        self.data.write(buf)
-        return len(buf)
-
-    def sendall(self, buf):
-        self.data.write(buf)
-
-    def getvalue(self):
-        return self.data.getvalue()
-
-    def makefile(self, x='r', y=-1):
-        raise RuntimeError
-
-    def close(self):
-        pass
-
-class FakeTransport(xmlrpclib.Transport):
-    """A Transport instance that records instead of sending a request.
-
-    This class replaces the actual socket used by httplib with a
-    FakeSocket object that records the request.  It doesn't provide a
-    response.
-    """
-
-    def make_connection(self, host):
-        conn = xmlrpclib.Transport.make_connection(self, host)
-        conn.sock = self.fake_socket = FakeSocket()
-        return conn
-
-class TransportSubclassTestCase(unittest.TestCase):
-
-    def issue_request(self, transport_class):
-        """Return an HTTP request made via transport_class."""
-        transport = transport_class()
-        proxy = xmlrpclib.ServerProxy("http://example.com/",
-                                      transport=transport)
-        try:
-            proxy.pow(6, 8)
-        except RuntimeError:
-            return transport.fake_socket.getvalue()
-        return None
-
-    def test_custom_user_agent(self):
-        class TestTransport(FakeTransport):
-
-            def send_user_agent(self, conn):
-                xmlrpclib.Transport.send_user_agent(self, conn)
-                conn.putheader("X-Test", "test_custom_user_agent")
-
-        req = self.issue_request(TestTransport)
-        self.assertIn("X-Test: test_custom_user_agent\r\n", req)
-
-    def test_send_host(self):
-        class TestTransport(FakeTransport):
-
-            def send_host(self, conn, host):
-                xmlrpclib.Transport.send_host(self, conn, host)
-                conn.putheader("X-Test", "test_send_host")
-
-        req = self.issue_request(TestTransport)
-        self.assertIn("X-Test: test_send_host\r\n", req)
-
-    def test_send_request(self):
-        class TestTransport(FakeTransport):
-
-            def send_request(self, conn, url, body):
-                xmlrpclib.Transport.send_request(self, conn, url, body)
-                conn.putheader("X-Test", "test_send_request")
-
-        req = self.issue_request(TestTransport)
-        self.assertIn("X-Test: test_send_request\r\n", req)
-
-    def test_send_content(self):
-        class TestTransport(FakeTransport):
-
-            def send_content(self, conn, body):
-                conn.putheader("X-Test", "test_send_content")
-                xmlrpclib.Transport.send_content(self, conn, body)
-
-        req = self.issue_request(TestTransport)
-        self.assertIn("X-Test: test_send_content\r\n", req)
-
-@test_support.reap_threads
-def test_main():
-    xmlrpc_tests = [XMLRPCTestCase, HelperTestCase, DateTimeTestCase,
-         BinaryTestCase, FaultTestCase, TransportSubclassTestCase]
-    xmlrpc_tests.append(SimpleServerTestCase)
-    xmlrpc_tests.append(KeepaliveServerTestCase1)
-    xmlrpc_tests.append(KeepaliveServerTestCase2)
-    try:
-        import gzip
-        xmlrpc_tests.append(GzipServerTestCase)
-    except ImportError:
-        pass #gzip not supported in this build
-    xmlrpc_tests.append(MultiPathServerTestCase)
-    xmlrpc_tests.append(ServerProxyTestCase)
-    xmlrpc_tests.append(FailingServerTestCase)
-    xmlrpc_tests.append(CGIHandlerTestCase)
-
-    test_support.run_unittest(*xmlrpc_tests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xpickle.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xpickle.py
deleted file mode 100644
index 3f97785..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xpickle.py
+++ /dev/null
@@ -1,260 +0,0 @@
-# test_pickle dumps and loads pickles via pickle.py.
-# test_cpickle does the same, but via the cPickle module.
-# This test covers the other two cases, making pickles with one module and
-# loading them via the other. It also tests backwards compatibility with
-# previous version of Python by bouncing pickled objects through Python 2.4
-# and Python 2.5 running this file.
-
-import cPickle
-import os
-import os.path
-import pickle
-import subprocess
-import sys
-import types
-import unittest
-
-from test import test_support
-
-# Most distro-supplied Pythons don't include the tests
-# or test support files, and some don't include a way to get these back even if
-# you're will to install extra packages (like Ubuntu). Doing things like this
-# "provides" a pickletester module for older versions of Python that may be
-# installed without it. Note that one other design for this involves messing
-# with sys.path, which is less precise.
-mod_path = os.path.abspath(os.path.join(os.path.dirname(__file__),
-                                        "pickletester.py"))
-pickletester = types.ModuleType("test.pickletester")
-exec compile(open(mod_path).read(), mod_path, 'exec') in pickletester.__dict__
-AbstractPickleTests = pickletester.AbstractPickleTests
-if pickletester.__name__ in sys.modules:
-    raise RuntimeError("Did not expect to find test.pickletester loaded")
-sys.modules[pickletester.__name__] = pickletester
-
-
-class DumpCPickle_LoadPickle(AbstractPickleTests):
-
-    error = KeyError
-
-    def dumps(self, arg, proto=0, fast=False):
-        # Ignore fast
-        return cPickle.dumps(arg, proto)
-
-    def loads(self, buf):
-        # Ignore fast
-        return pickle.loads(buf)
-
-class DumpPickle_LoadCPickle(AbstractPickleTests):
-
-    error = cPickle.BadPickleGet
-
-    def dumps(self, arg, proto=0, fast=False):
-        # Ignore fast
-        return pickle.dumps(arg, proto)
-
-    def loads(self, buf):
-        # Ignore fast
-        return cPickle.loads(buf)
-
-def have_python_version(name):
-    """Check whether the given name is a valid Python binary and has
-    test.test_support.
-
-    This respects your PATH.
-
-    Args:
-        name: short string name of a Python binary such as "python2.4".
-
-    Returns:
-        True if the name is valid, False otherwise.
-    """
-    return os.system(name + " -c 'import test.test_support'") == 0
-
-
-class AbstractCompatTests(AbstractPickleTests):
-
-    module = None
-    python = None
-    error = None
-
-    def setUp(self):
-        self.assertTrue(self.python)
-        self.assertTrue(self.module)
-        self.assertTrue(self.error)
-
-    def send_to_worker(self, python, obj, proto):
-        """Bounce a pickled object through another version of Python.
-
-        This will pickle the object, send it to a child process where it will be
-        unpickled, then repickled and sent back to the parent process.
-
-        Args:
-            python: the name of the Python binary to start.
-            obj: object to pickle.
-            proto: pickle protocol number to use.
-
-        Returns:
-            The pickled data received from the child process.
-        """
-        # Prevent the subprocess from picking up invalid .pyc files.
-        target = __file__
-        if target[-1] in ("c", "o"):
-            target = target[:-1]
-
-        data = self.module.dumps((proto, obj), proto)
-        worker = subprocess.Popen([python, target, "worker"],
-                                  stdin=subprocess.PIPE,
-                                  stdout=subprocess.PIPE,
-                                  stderr=subprocess.PIPE)
-        stdout, stderr = worker.communicate(data)
-        if worker.returncode != 0:
-            raise RuntimeError(stderr)
-        return stdout
-
-    def dumps(self, arg, proto=0, fast=False):
-        return self.send_to_worker(self.python, arg, proto)
-
-    def loads(self, input):
-        return self.module.loads(input)
-
-    # These tests are disabled because they require some special setup
-    # on the worker that's hard to keep in sync.
-    def test_global_ext1(self):
-        pass
-
-    def test_global_ext2(self):
-        pass
-
-    def test_global_ext4(self):
-        pass
-
-    # This is a cut-down version of pickletester's test_float. Backwards
-    # compatibility for the values in for_bin_protos was explicitly broken in
-    # r68903 to fix a bug.
-    def test_float(self):
-        for_bin_protos = [4.94e-324, 1e-310]
-        neg_for_bin_protos = [-x for x in for_bin_protos]
-        test_values = [0.0, 7e-308, 6.626e-34, 0.1, 0.5,
-                       3.14, 263.44582062374053, 6.022e23, 1e30]
-        test_proto0_values = test_values + [-x for x in test_values]
-        test_values = test_proto0_values + for_bin_protos + neg_for_bin_protos
-
-        for value in test_proto0_values:
-            pickle = self.dumps(value, 0)
-            got = self.loads(pickle)
-            self.assertEqual(value, got)
-
-        for proto in pickletester.protocols[1:]:
-            for value in test_values:
-                pickle = self.dumps(value, proto)
-                got = self.loads(pickle)
-                self.assertEqual(value, got)
-
-    # Backwards compatibility was explicitly broken in r67934 to fix a bug.
-    def test_unicode_high_plane(self):
-        pass
-
-    if test_support.have_unicode:
-        # This is a cut-down version of pickletester's test_unicode. Backwards
-        # compatibility was explicitly broken in r67934 to fix a bug.
-        def test_unicode(self):
-            endcases = [u'', u'<\\u>', u'<\\\u1234>', u'<\n>', u'<\\>']
-            for proto in pickletester.protocols:
-                for u in endcases:
-                    p = self.dumps(u, proto)
-                    u2 = self.loads(p)
-                    self.assertEqual(u2, u)
-
-
-def run_compat_test(python_name):
-    return (test_support.is_resource_enabled("xpickle") and
-            have_python_version(python_name))
-
-
-# Test backwards compatibility with Python 2.4.
-if not run_compat_test("python2.4"):
-    class CPicklePython24Compat(unittest.TestCase):
-        pass
-else:
-    class CPicklePython24Compat(AbstractCompatTests):
-
-        module = cPickle
-        python = "python2.4"
-        error = cPickle.BadPickleGet
-
-        # Disable these tests for Python 2.4. Making them pass would require
-        # nontrivially monkeypatching the pickletester module in the worker.
-        def test_reduce_calls_base(self):
-            pass
-
-        def test_reduce_ex_calls_base(self):
-            pass
-
-class PicklePython24Compat(CPicklePython24Compat):
-
-    module = pickle
-    error = KeyError
-
-
-# Test backwards compatibility with Python 2.5.
-if not run_compat_test("python2.5"):
-    class CPicklePython25Compat(unittest.TestCase):
-        pass
-else:
-    class CPicklePython25Compat(AbstractCompatTests):
-
-        module = cPickle
-        python = "python2.5"
-        error = cPickle.BadPickleGet
-
-class PicklePython25Compat(CPicklePython25Compat):
-
-    module = pickle
-    error = KeyError
-
-
-# Test backwards compatibility with Python 2.6.
-if not run_compat_test("python2.6"):
-    class CPicklePython26Compat(unittest.TestCase):
-        pass
-else:
-    class CPicklePython26Compat(AbstractCompatTests):
-
-        module = cPickle
-        python = "python2.6"
-        error = cPickle.BadPickleGet
-
-class PicklePython26Compat(CPicklePython26Compat):
-
-    module = pickle
-    error = KeyError
-
-
-def worker_main(in_stream, out_stream):
-    message = cPickle.load(in_stream)
-    protocol, obj = message
-    cPickle.dump(obj, out_stream, protocol)
-
-
-def test_main():
-    if not test_support.is_resource_enabled("xpickle"):
-        print >>sys.stderr, "test_xpickle -- skipping backwards compat tests."
-        print >>sys.stderr, "Use 'regrtest.py -u xpickle' to run them."
-        sys.stderr.flush()
-
-    test_support.run_unittest(
-        DumpCPickle_LoadPickle,
-        DumpPickle_LoadCPickle,
-        CPicklePython24Compat,
-        CPicklePython25Compat,
-        CPicklePython26Compat,
-        PicklePython24Compat,
-        PicklePython25Compat,
-        PicklePython26Compat,
-    )
-
-if __name__ == "__main__":
-    if "worker" in sys.argv:
-        worker_main(sys.stdin, sys.stdout)
-    else:
-        test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xrange.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xrange.py
deleted file mode 100644
index 1c9dd59..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_xrange.py
+++ /dev/null
@@ -1,143 +0,0 @@
-# Python test set -- built-in functions
-
-import test.test_support, unittest
-import sys
-import pickle
-import itertools
-
-import warnings
-warnings.filterwarnings("ignore", "integer argument expected",
-                        DeprecationWarning, "unittest")
-
-# pure Python implementations (3 args only), for comparison
-def pyrange(start, stop, step):
-    if (start - stop) // step < 0:
-        # replace stop with next element in the sequence of integers
-        # that are congruent to start modulo step.
-        stop += (start - stop) % step
-        while start != stop:
-            yield start
-            start += step
-
-def pyrange_reversed(start, stop, step):
-    stop += (start - stop) % step
-    return pyrange(stop - step, start - step, -step)
-
-
-class XrangeTest(unittest.TestCase):
-    def assert_iterators_equal(self, xs, ys, test_id, limit=None):
-        # check that an iterator xs matches the expected results ys,
-        # up to a given limit.
-        if limit is not None:
-            xs = itertools.islice(xs, limit)
-            ys = itertools.islice(ys, limit)
-        sentinel = object()
-        pairs = itertools.izip_longest(xs, ys, fillvalue=sentinel)
-        for i, (x, y) in enumerate(pairs):
-            if x == y:
-                continue
-            elif x == sentinel:
-                self.fail('{}: iterator ended unexpectedly '
-                          'at position {}; expected {}'.format(test_id, i, y))
-            elif y == sentinel:
-                self.fail('{}: unexpected excess element {} at '
-                          'position {}'.format(test_id, x, i))
-            else:
-                self.fail('{}: wrong element at position {};'
-                          'expected {}, got {}'.format(test_id, i, y, x))
-
-    def test_xrange(self):
-        self.assertEqual(list(xrange(3)), [0, 1, 2])
-        self.assertEqual(list(xrange(1, 5)), [1, 2, 3, 4])
-        self.assertEqual(list(xrange(0)), [])
-        self.assertEqual(list(xrange(-3)), [])
-        self.assertEqual(list(xrange(1, 10, 3)), [1, 4, 7])
-        self.assertEqual(list(xrange(5, -5, -3)), [5, 2, -1, -4])
-
-        a = 10
-        b = 100
-        c = 50
-
-        self.assertEqual(list(xrange(a, a+2)), [a, a+1])
-        self.assertEqual(list(xrange(a+2, a, -1L)), [a+2, a+1])
-        self.assertEqual(list(xrange(a+4, a, -2)), [a+4, a+2])
-
-        seq = list(xrange(a, b, c))
-        self.assertIn(a, seq)
-        self.assertNotIn(b, seq)
-        self.assertEqual(len(seq), 2)
-
-        seq = list(xrange(b, a, -c))
-        self.assertIn(b, seq)
-        self.assertNotIn(a, seq)
-        self.assertEqual(len(seq), 2)
-
-        seq = list(xrange(-a, -b, -c))
-        self.assertIn(-a, seq)
-        self.assertNotIn(-b, seq)
-        self.assertEqual(len(seq), 2)
-
-        self.assertRaises(TypeError, xrange)
-        self.assertRaises(TypeError, xrange, 1, 2, 3, 4)
-        self.assertRaises(ValueError, xrange, 1, 2, 0)
-
-        self.assertRaises(OverflowError, xrange, 10**100, 10**101, 10**101)
-
-        self.assertRaises(TypeError, xrange, 0, "spam")
-        self.assertRaises(TypeError, xrange, 0, 42, "spam")
-
-        self.assertEqual(len(xrange(0, sys.maxint, sys.maxint-1)), 2)
-
-        self.assertRaises(OverflowError, xrange, -sys.maxint, sys.maxint)
-        self.assertRaises(OverflowError, xrange, 0, 2*sys.maxint)
-
-        r = xrange(-sys.maxint, sys.maxint, 2)
-        self.assertEqual(len(r), sys.maxint)
-        self.assertRaises(OverflowError, xrange, -sys.maxint-1, sys.maxint, 2)
-
-    def test_pickling(self):
-        testcases = [(13,), (0, 11), (-22, 10), (20, 3, -1),
-                     (13, 21, 3), (-2, 2, 2)]
-        for proto in range(pickle.HIGHEST_PROTOCOL + 1):
-            for t in testcases:
-                r = xrange(*t)
-                self.assertEqual(list(pickle.loads(pickle.dumps(r, proto))),
-                                 list(r))
-
-    def test_range_iterators(self):
-        # see issue 7298
-        limits = [base + jiggle
-                  for M in (2**32, 2**64)
-                  for base in (-M, -M//2, 0, M//2, M)
-                  for jiggle in (-2, -1, 0, 1, 2)]
-        test_ranges = [(start, end, step)
-                       for start in limits
-                       for end in limits
-                       for step in (-2**63, -2**31, -2, -1, 1, 2)]
-
-        for start, end, step in test_ranges:
-            try:
-                iter1 = xrange(start, end, step)
-            except OverflowError:
-                pass
-            else:
-                iter2 = pyrange(start, end, step)
-                test_id = "xrange({}, {}, {})".format(start, end, step)
-                # check first 100 entries
-                self.assert_iterators_equal(iter1, iter2, test_id, limit=100)
-
-            try:
-                iter1 = reversed(xrange(start, end, step))
-            except OverflowError:
-                pass
-            else:
-                iter2 = pyrange_reversed(start, end, step)
-                test_id = "reversed(xrange({}, {}, {}))".format(start, end, step)
-                self.assert_iterators_equal(iter1, iter2, test_id, limit=100)
-
-
-def test_main():
-    test.test_support.run_unittest(XrangeTest)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipfile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipfile.py
deleted file mode 100644
index 7507a2a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipfile.py
+++ /dev/null
@@ -1,1362 +0,0 @@
-# We can test part of the module without zlib.
-try:
-    import zlib
-except ImportError:
-    zlib = None
-
-import os
-import io
-import sys
-import time
-import shutil
-import struct
-import zipfile
-import unittest
-
-from StringIO import StringIO
-from tempfile import TemporaryFile
-from random import randint, random
-from unittest import skipUnless
-
-from test.test_support import TESTFN, run_unittest, findfile, unlink
-
-TESTFN2 = TESTFN + "2"
-TESTFNDIR = TESTFN + "d"
-FIXEDTEST_SIZE = 1000
-
-SMALL_TEST_DATA = [('_ziptest1', '1q2w3e4r5t'),
-                   ('ziptest2dir/_ziptest2', 'qawsedrftg'),
-                   ('/ziptest2dir/ziptest3dir/_ziptest3', 'azsxdcfvgb'),
-                   ('ziptest2dir/ziptest3dir/ziptest4dir/_ziptest3', '6y7u8i9o0p')]
-
-
-class TestsWithSourceFile(unittest.TestCase):
-    def setUp(self):
-        self.line_gen = ["Zipfile test line %d. random float: %f" % (i, random())
-                         for i in xrange(FIXEDTEST_SIZE)]
-        self.data = '\n'.join(self.line_gen) + '\n'
-
-        # Make a source file with some lines
-        with open(TESTFN, "wb") as fp:
-            fp.write(self.data)
-
-    def make_test_archive(self, f, compression):
-        # Create the ZIP archive
-        with zipfile.ZipFile(f, "w", compression) as zipfp:
-            zipfp.write(TESTFN, "another.name")
-            zipfp.write(TESTFN, TESTFN)
-            zipfp.writestr("strfile", self.data)
-
-    def zip_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r", compression) as zipfp:
-            self.assertEqual(zipfp.read(TESTFN), self.data)
-            self.assertEqual(zipfp.read("another.name"), self.data)
-            self.assertEqual(zipfp.read("strfile"), self.data)
-
-            # Print the ZIP directory
-            fp = StringIO()
-            stdout = sys.stdout
-            try:
-                sys.stdout = fp
-                zipfp.printdir()
-            finally:
-                sys.stdout = stdout
-
-            directory = fp.getvalue()
-            lines = directory.splitlines()
-            self.assertEqual(len(lines), 4) # Number of files + header
-
-            self.assertIn('File Name', lines[0])
-            self.assertIn('Modified', lines[0])
-            self.assertIn('Size', lines[0])
-
-            fn, date, time_, size = lines[1].split()
-            self.assertEqual(fn, 'another.name')
-            self.assertTrue(time.strptime(date, '%Y-%m-%d'))
-            self.assertTrue(time.strptime(time_, '%H:%M:%S'))
-            self.assertEqual(size, str(len(self.data)))
-
-            # Check the namelist
-            names = zipfp.namelist()
-            self.assertEqual(len(names), 3)
-            self.assertIn(TESTFN, names)
-            self.assertIn("another.name", names)
-            self.assertIn("strfile", names)
-
-            # Check infolist
-            infos = zipfp.infolist()
-            names = [i.filename for i in infos]
-            self.assertEqual(len(names), 3)
-            self.assertIn(TESTFN, names)
-            self.assertIn("another.name", names)
-            self.assertIn("strfile", names)
-            for i in infos:
-                self.assertEqual(i.file_size, len(self.data))
-
-            # check getinfo
-            for nm in (TESTFN, "another.name", "strfile"):
-                info = zipfp.getinfo(nm)
-                self.assertEqual(info.filename, nm)
-                self.assertEqual(info.file_size, len(self.data))
-
-            # Check that testzip doesn't raise an exception
-            zipfp.testzip()
-
-    def test_stored(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_test(f, zipfile.ZIP_STORED)
-
-    def zip_open_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r", compression) as zipfp:
-            zipdata1 = []
-            with zipfp.open(TESTFN) as zipopen1:
-                while True:
-                    read_data = zipopen1.read(256)
-                    if not read_data:
-                        break
-                    zipdata1.append(read_data)
-
-            zipdata2 = []
-            with zipfp.open("another.name") as zipopen2:
-                while True:
-                    read_data = zipopen2.read(256)
-                    if not read_data:
-                        break
-                    zipdata2.append(read_data)
-
-            self.assertEqual(''.join(zipdata1), self.data)
-            self.assertEqual(''.join(zipdata2), self.data)
-
-    def test_open_stored(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_open_test(f, zipfile.ZIP_STORED)
-
-    def test_open_via_zip_info(self):
-        # Create the ZIP archive
-        with zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_STORED) as zipfp:
-            zipfp.writestr("name", "foo")
-            zipfp.writestr("name", "bar")
-
-        with zipfile.ZipFile(TESTFN2, "r") as zipfp:
-            infos = zipfp.infolist()
-            data = ""
-            for info in infos:
-                with zipfp.open(info) as f:
-                    data += f.read()
-            self.assertTrue(data == "foobar" or data == "barfoo")
-            data = ""
-            for info in infos:
-                data += zipfp.read(info)
-            self.assertTrue(data == "foobar" or data == "barfoo")
-
-    def zip_random_open_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r", compression) as zipfp:
-            zipdata1 = []
-            with zipfp.open(TESTFN) as zipopen1:
-                while True:
-                    read_data = zipopen1.read(randint(1, 1024))
-                    if not read_data:
-                        break
-                    zipdata1.append(read_data)
-
-            self.assertEqual(''.join(zipdata1), self.data)
-
-    def test_random_open_stored(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_random_open_test(f, zipfile.ZIP_STORED)
-
-    def test_univeral_readaheads(self):
-        f = StringIO()
-
-        data = 'a\r\n' * 16 * 1024
-        with zipfile.ZipFile(f, 'w', zipfile.ZIP_STORED) as zipfp:
-            zipfp.writestr(TESTFN, data)
-
-        data2 = ''
-        with zipfile.ZipFile(f, 'r') as zipfp:
-            with zipfp.open(TESTFN, 'rU') as zipopen:
-                for line in zipopen:
-                    data2 += line
-
-        self.assertEqual(data, data2.replace('\n', '\r\n'))
-
-    def zip_readline_read_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r") as zipfp:
-            with zipfp.open(TESTFN) as zipopen:
-                data = ''
-                while True:
-                    read = zipopen.readline()
-                    if not read:
-                        break
-                    data += read
-
-                    read = zipopen.read(100)
-                    if not read:
-                        break
-                    data += read
-
-        self.assertEqual(data, self.data)
-
-    def zip_readline_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r") as zipfp:
-            with zipfp.open(TESTFN) as zipopen:
-                for line in self.line_gen:
-                    linedata = zipopen.readline()
-                    self.assertEqual(linedata, line + '\n')
-
-    def zip_readlines_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r") as zipfp:
-            with zipfp.open(TESTFN) as zo:
-                ziplines = zo.readlines()
-                for line, zipline in zip(self.line_gen, ziplines):
-                    self.assertEqual(zipline, line + '\n')
-
-    def zip_iterlines_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r") as zipfp:
-            for line, zipline in zip(self.line_gen, zipfp.open(TESTFN)):
-                self.assertEqual(zipline, line + '\n')
-
-    def test_readline_read_stored(self):
-        # Issue #7610: calls to readline() interleaved with calls to read().
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_readline_read_test(f, zipfile.ZIP_STORED)
-
-    def test_readline_stored(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_readline_test(f, zipfile.ZIP_STORED)
-
-    def test_readlines_stored(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_readlines_test(f, zipfile.ZIP_STORED)
-
-    def test_iterlines_stored(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_iterlines_test(f, zipfile.ZIP_STORED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_deflated(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_test(f, zipfile.ZIP_DEFLATED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_open_deflated(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_open_test(f, zipfile.ZIP_DEFLATED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_random_open_deflated(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_random_open_test(f, zipfile.ZIP_DEFLATED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_readline_read_deflated(self):
-        # Issue #7610: calls to readline() interleaved with calls to read().
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_readline_read_test(f, zipfile.ZIP_DEFLATED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_readline_deflated(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_readline_test(f, zipfile.ZIP_DEFLATED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_readlines_deflated(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_readlines_test(f, zipfile.ZIP_DEFLATED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_iterlines_deflated(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_iterlines_test(f, zipfile.ZIP_DEFLATED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_low_compression(self):
-        """Check for cases where compressed data is larger than original."""
-        # Create the ZIP archive
-        with zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_DEFLATED) as zipfp:
-            zipfp.writestr("strfile", '12')
-
-        # Get an open object for strfile
-        with zipfile.ZipFile(TESTFN2, "r", zipfile.ZIP_DEFLATED) as zipfp:
-            with zipfp.open("strfile") as openobj:
-                self.assertEqual(openobj.read(1), '1')
-                self.assertEqual(openobj.read(1), '2')
-
-    def test_absolute_arcnames(self):
-        with zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_STORED) as zipfp:
-            zipfp.write(TESTFN, "/absolute")
-
-        with zipfile.ZipFile(TESTFN2, "r", zipfile.ZIP_STORED) as zipfp:
-            self.assertEqual(zipfp.namelist(), ["absolute"])
-
-    def test_append_to_zip_file(self):
-        """Test appending to an existing zipfile."""
-        with zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_STORED) as zipfp:
-            zipfp.write(TESTFN, TESTFN)
-
-        with zipfile.ZipFile(TESTFN2, "a", zipfile.ZIP_STORED) as zipfp:
-            zipfp.writestr("strfile", self.data)
-            self.assertEqual(zipfp.namelist(), [TESTFN, "strfile"])
-
-    def test_append_to_non_zip_file(self):
-        """Test appending to an existing file that is not a zipfile."""
-        # NOTE: this test fails if len(d) < 22 because of the first
-        # line "fpin.seek(-22, 2)" in _EndRecData
-        data = 'I am not a ZipFile!'*10
-        with open(TESTFN2, 'wb') as f:
-            f.write(data)
-
-        with zipfile.ZipFile(TESTFN2, "a", zipfile.ZIP_STORED) as zipfp:
-            zipfp.write(TESTFN, TESTFN)
-
-        with open(TESTFN2, 'rb') as f:
-            f.seek(len(data))
-            with zipfile.ZipFile(f, "r") as zipfp:
-                self.assertEqual(zipfp.namelist(), [TESTFN])
-
-    def test_write_default_name(self):
-        """Check that calling ZipFile.write without arcname specified
-        produces the expected result."""
-        with zipfile.ZipFile(TESTFN2, "w") as zipfp:
-            zipfp.write(TESTFN)
-            self.assertEqual(zipfp.read(TESTFN), open(TESTFN).read())
-
-    @skipUnless(zlib, "requires zlib")
-    def test_per_file_compression(self):
-        """Check that files within a Zip archive can have different
-        compression options."""
-        with zipfile.ZipFile(TESTFN2, "w") as zipfp:
-            zipfp.write(TESTFN, 'storeme', zipfile.ZIP_STORED)
-            zipfp.write(TESTFN, 'deflateme', zipfile.ZIP_DEFLATED)
-            sinfo = zipfp.getinfo('storeme')
-            dinfo = zipfp.getinfo('deflateme')
-            self.assertEqual(sinfo.compress_type, zipfile.ZIP_STORED)
-            self.assertEqual(dinfo.compress_type, zipfile.ZIP_DEFLATED)
-
-    def test_write_to_readonly(self):
-        """Check that trying to call write() on a readonly ZipFile object
-        raises a RuntimeError."""
-        with zipfile.ZipFile(TESTFN2, mode="w") as zipfp:
-            zipfp.writestr("somefile.txt", "bogus")
-
-        with zipfile.ZipFile(TESTFN2, mode="r") as zipfp:
-            self.assertRaises(RuntimeError, zipfp.write, TESTFN)
-
-    def test_extract(self):
-        with zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_STORED) as zipfp:
-            for fpath, fdata in SMALL_TEST_DATA:
-                zipfp.writestr(fpath, fdata)
-
-        with zipfile.ZipFile(TESTFN2, "r") as zipfp:
-            for fpath, fdata in SMALL_TEST_DATA:
-                writtenfile = zipfp.extract(fpath)
-
-                # make sure it was written to the right place
-                if os.path.isabs(fpath):
-                    correctfile = os.path.join(os.getcwd(), fpath[1:])
-                else:
-                    correctfile = os.path.join(os.getcwd(), fpath)
-                correctfile = os.path.normpath(correctfile)
-
-                self.assertEqual(writtenfile, correctfile)
-
-                # make sure correct data is in correct file
-                self.assertEqual(fdata, open(writtenfile, "rb").read())
-                os.remove(writtenfile)
-
-        # remove the test file subdirectories
-        shutil.rmtree(os.path.join(os.getcwd(), 'ziptest2dir'))
-
-    def test_extract_all(self):
-        with zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_STORED) as zipfp:
-            for fpath, fdata in SMALL_TEST_DATA:
-                zipfp.writestr(fpath, fdata)
-
-        with zipfile.ZipFile(TESTFN2, "r") as zipfp:
-            zipfp.extractall()
-            for fpath, fdata in SMALL_TEST_DATA:
-                if os.path.isabs(fpath):
-                    outfile = os.path.join(os.getcwd(), fpath[1:])
-                else:
-                    outfile = os.path.join(os.getcwd(), fpath)
-
-                self.assertEqual(fdata, open(outfile, "rb").read())
-                os.remove(outfile)
-
-        # remove the test file subdirectories
-        shutil.rmtree(os.path.join(os.getcwd(), 'ziptest2dir'))
-
-    def test_writestr_compression(self):
-        zipfp = zipfile.ZipFile(TESTFN2, "w")
-        zipfp.writestr("a.txt", "hello world", compress_type=zipfile.ZIP_STORED)
-        if zlib:
-            zipfp.writestr("b.txt", "hello world", compress_type=zipfile.ZIP_DEFLATED)
-
-        info = zipfp.getinfo('a.txt')
-        self.assertEqual(info.compress_type, zipfile.ZIP_STORED)
-
-        if zlib:
-            info = zipfp.getinfo('b.txt')
-            self.assertEqual(info.compress_type, zipfile.ZIP_DEFLATED)
-
-
-    def zip_test_writestr_permissions(self, f, compression):
-        # Make sure that writestr creates files with mode 0600,
-        # when it is passed a name rather than a ZipInfo instance.
-
-        self.make_test_archive(f, compression)
-        with zipfile.ZipFile(f, "r") as zipfp:
-            zinfo = zipfp.getinfo('strfile')
-            self.assertEqual(zinfo.external_attr, 0600 << 16)
-
-    def test_writestr_permissions(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_test_writestr_permissions(f, zipfile.ZIP_STORED)
-
-    def test_close(self):
-        """Check that the zipfile is closed after the 'with' block."""
-        with zipfile.ZipFile(TESTFN2, "w") as zipfp:
-            for fpath, fdata in SMALL_TEST_DATA:
-                zipfp.writestr(fpath, fdata)
-                self.assertTrue(zipfp.fp is not None, 'zipfp is not open')
-        self.assertTrue(zipfp.fp is None, 'zipfp is not closed')
-
-        with zipfile.ZipFile(TESTFN2, "r") as zipfp:
-            self.assertTrue(zipfp.fp is not None, 'zipfp is not open')
-        self.assertTrue(zipfp.fp is None, 'zipfp is not closed')
-
-    def test_close_on_exception(self):
-        """Check that the zipfile is closed if an exception is raised in the
-        'with' block."""
-        with zipfile.ZipFile(TESTFN2, "w") as zipfp:
-            for fpath, fdata in SMALL_TEST_DATA:
-                zipfp.writestr(fpath, fdata)
-
-        try:
-            with zipfile.ZipFile(TESTFN2, "r") as zipfp2:
-                raise zipfile.BadZipfile()
-        except zipfile.BadZipfile:
-            self.assertTrue(zipfp2.fp is None, 'zipfp is not closed')
-
-    def tearDown(self):
-        unlink(TESTFN)
-        unlink(TESTFN2)
-
-
-class TestZip64InSmallFiles(unittest.TestCase):
-    # These tests test the ZIP64 functionality without using large files,
-    # see test_zipfile64 for proper tests.
-
-    def setUp(self):
-        self._limit = zipfile.ZIP64_LIMIT
-        zipfile.ZIP64_LIMIT = 5
-
-        line_gen = ("Test of zipfile line %d." % i
-                    for i in range(0, FIXEDTEST_SIZE))
-        self.data = '\n'.join(line_gen)
-
-        # Make a source file with some lines
-        with open(TESTFN, "wb") as fp:
-            fp.write(self.data)
-
-    def large_file_exception_test(self, f, compression):
-        with zipfile.ZipFile(f, "w", compression) as zipfp:
-            self.assertRaises(zipfile.LargeZipFile,
-                              zipfp.write, TESTFN, "another.name")
-
-    def large_file_exception_test2(self, f, compression):
-        with zipfile.ZipFile(f, "w", compression) as zipfp:
-            self.assertRaises(zipfile.LargeZipFile,
-                              zipfp.writestr, "another.name", self.data)
-
-    def test_large_file_exception(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.large_file_exception_test(f, zipfile.ZIP_STORED)
-            self.large_file_exception_test2(f, zipfile.ZIP_STORED)
-
-    def zip_test(self, f, compression):
-        # Create the ZIP archive
-        with zipfile.ZipFile(f, "w", compression, allowZip64=True) as zipfp:
-            zipfp.write(TESTFN, "another.name")
-            zipfp.write(TESTFN, TESTFN)
-            zipfp.writestr("strfile", self.data)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r", compression) as zipfp:
-            self.assertEqual(zipfp.read(TESTFN), self.data)
-            self.assertEqual(zipfp.read("another.name"), self.data)
-            self.assertEqual(zipfp.read("strfile"), self.data)
-
-            # Print the ZIP directory
-            fp = StringIO()
-            stdout = sys.stdout
-            try:
-                sys.stdout = fp
-                zipfp.printdir()
-            finally:
-                sys.stdout = stdout
-
-            directory = fp.getvalue()
-            lines = directory.splitlines()
-            self.assertEqual(len(lines), 4) # Number of files + header
-
-            self.assertIn('File Name', lines[0])
-            self.assertIn('Modified', lines[0])
-            self.assertIn('Size', lines[0])
-
-            fn, date, time_, size = lines[1].split()
-            self.assertEqual(fn, 'another.name')
-            self.assertTrue(time.strptime(date, '%Y-%m-%d'))
-            self.assertTrue(time.strptime(time_, '%H:%M:%S'))
-            self.assertEqual(size, str(len(self.data)))
-
-            # Check the namelist
-            names = zipfp.namelist()
-            self.assertEqual(len(names), 3)
-            self.assertIn(TESTFN, names)
-            self.assertIn("another.name", names)
-            self.assertIn("strfile", names)
-
-            # Check infolist
-            infos = zipfp.infolist()
-            names = [i.filename for i in infos]
-            self.assertEqual(len(names), 3)
-            self.assertIn(TESTFN, names)
-            self.assertIn("another.name", names)
-            self.assertIn("strfile", names)
-            for i in infos:
-                self.assertEqual(i.file_size, len(self.data))
-
-            # check getinfo
-            for nm in (TESTFN, "another.name", "strfile"):
-                info = zipfp.getinfo(nm)
-                self.assertEqual(info.filename, nm)
-                self.assertEqual(info.file_size, len(self.data))
-
-            # Check that testzip doesn't raise an exception
-            zipfp.testzip()
-
-    def test_stored(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_test(f, zipfile.ZIP_STORED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_deflated(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_test(f, zipfile.ZIP_DEFLATED)
-
-    def test_absolute_arcnames(self):
-        with zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_STORED,
-                             allowZip64=True) as zipfp:
-            zipfp.write(TESTFN, "/absolute")
-
-        with zipfile.ZipFile(TESTFN2, "r", zipfile.ZIP_STORED) as zipfp:
-            self.assertEqual(zipfp.namelist(), ["absolute"])
-
-    def tearDown(self):
-        zipfile.ZIP64_LIMIT = self._limit
-        unlink(TESTFN)
-        unlink(TESTFN2)
-
-
-class PyZipFileTests(unittest.TestCase):
-    def test_write_pyfile(self):
-        with zipfile.PyZipFile(TemporaryFile(), "w") as zipfp:
-            fn = __file__
-            if fn.endswith('.pyc') or fn.endswith('.pyo'):
-                fn = fn[:-1]
-
-            zipfp.writepy(fn)
-
-            bn = os.path.basename(fn)
-            self.assertNotIn(bn, zipfp.namelist())
-            self.assertTrue(bn + 'o' in zipfp.namelist() or
-                            bn + 'c' in zipfp.namelist())
-
-        with zipfile.PyZipFile(TemporaryFile(), "w") as zipfp:
-            fn = __file__
-            if fn.endswith(('.pyc', '.pyo')):
-                fn = fn[:-1]
-
-            zipfp.writepy(fn, "testpackage")
-
-            bn = "%s/%s" % ("testpackage", os.path.basename(fn))
-            self.assertNotIn(bn, zipfp.namelist())
-            self.assertTrue(bn + 'o' in zipfp.namelist() or
-                            bn + 'c' in zipfp.namelist())
-
-    def test_write_python_package(self):
-        import email
-        packagedir = os.path.dirname(email.__file__)
-
-        with zipfile.PyZipFile(TemporaryFile(), "w") as zipfp:
-            zipfp.writepy(packagedir)
-
-            # Check for a couple of modules at different levels of the
-            # hierarchy
-            names = zipfp.namelist()
-            self.assertTrue('email/__init__.pyo' in names or
-                            'email/__init__.pyc' in names)
-            self.assertTrue('email/mime/text.pyo' in names or
-                            'email/mime/text.pyc' in names)
-
-    def test_write_python_directory(self):
-        os.mkdir(TESTFN2)
-        try:
-            with open(os.path.join(TESTFN2, "mod1.py"), "w") as fp:
-                fp.write("print(42)\n")
-
-            with open(os.path.join(TESTFN2, "mod2.py"), "w") as fp:
-                fp.write("print(42 * 42)\n")
-
-            with open(os.path.join(TESTFN2, "mod2.txt"), "w") as fp:
-                fp.write("bla bla bla\n")
-
-            zipfp  = zipfile.PyZipFile(TemporaryFile(), "w")
-            zipfp.writepy(TESTFN2)
-
-            names = zipfp.namelist()
-            self.assertTrue('mod1.pyc' in names or 'mod1.pyo' in names)
-            self.assertTrue('mod2.pyc' in names or 'mod2.pyo' in names)
-            self.assertNotIn('mod2.txt', names)
-
-        finally:
-            shutil.rmtree(TESTFN2)
-
-    def test_write_non_pyfile(self):
-        with zipfile.PyZipFile(TemporaryFile(), "w") as zipfp:
-            open(TESTFN, 'w').write('most definitely not a python file')
-            self.assertRaises(RuntimeError, zipfp.writepy, TESTFN)
-            os.remove(TESTFN)
-
-
-class OtherTests(unittest.TestCase):
-    zips_with_bad_crc = {
-        zipfile.ZIP_STORED: (
-            b'PK\003\004\024\0\0\0\0\0 \213\212;:r'
-            b'\253\377\f\0\0\0\f\0\0\0\005\0\0\000af'
-            b'ilehello,AworldP'
-            b'K\001\002\024\003\024\0\0\0\0\0 \213\212;:'
-            b'r\253\377\f\0\0\0\f\0\0\0\005\0\0\0\0'
-            b'\0\0\0\0\0\0\0\200\001\0\0\0\000afi'
-            b'lePK\005\006\0\0\0\0\001\0\001\0003\000'
-            b'\0\0/\0\0\0\0\0'),
-        zipfile.ZIP_DEFLATED: (
-            b'PK\x03\x04\x14\x00\x00\x00\x08\x00n}\x0c=FA'
-            b'KE\x10\x00\x00\x00n\x00\x00\x00\x05\x00\x00\x00af'
-            b'ile\xcbH\xcd\xc9\xc9W(\xcf/\xcaI\xc9\xa0'
-            b'=\x13\x00PK\x01\x02\x14\x03\x14\x00\x00\x00\x08\x00n'
-            b'}\x0c=FAKE\x10\x00\x00\x00n\x00\x00\x00\x05'
-            b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00'
-            b'\x00afilePK\x05\x06\x00\x00\x00\x00\x01\x00'
-            b'\x01\x003\x00\x00\x003\x00\x00\x00\x00\x00'),
-    }
-
-    def test_unicode_filenames(self):
-        with zipfile.ZipFile(TESTFN, "w") as zf:
-            zf.writestr(u"foo.txt", "Test for unicode filename")
-            zf.writestr(u"\xf6.txt", "Test for unicode filename")
-            self.assertIsInstance(zf.infolist()[0].filename, unicode)
-
-        with zipfile.ZipFile(TESTFN, "r") as zf:
-            self.assertEqual(zf.filelist[0].filename, "foo.txt")
-            self.assertEqual(zf.filelist[1].filename, u"\xf6.txt")
-
-    def test_create_non_existent_file_for_append(self):
-        if os.path.exists(TESTFN):
-            os.unlink(TESTFN)
-
-        filename = 'testfile.txt'
-        content = 'hello, world. this is some content.'
-
-        try:
-            with zipfile.ZipFile(TESTFN, 'a') as zf:
-                zf.writestr(filename, content)
-        except IOError:
-            self.fail('Could not append data to a non-existent zip file.')
-
-        self.assertTrue(os.path.exists(TESTFN))
-
-        with zipfile.ZipFile(TESTFN, 'r') as zf:
-            self.assertEqual(zf.read(filename), content)
-
-    def test_close_erroneous_file(self):
-        # This test checks that the ZipFile constructor closes the file object
-        # it opens if there's an error in the file.  If it doesn't, the
-        # traceback holds a reference to the ZipFile object and, indirectly,
-        # the file object.
-        # On Windows, this causes the os.unlink() call to fail because the
-        # underlying file is still open.  This is SF bug #412214.
-        #
-        with open(TESTFN, "w") as fp:
-            fp.write("this is not a legal zip file\n")
-        try:
-            zf = zipfile.ZipFile(TESTFN)
-        except zipfile.BadZipfile:
-            pass
-
-    def test_is_zip_erroneous_file(self):
-        """Check that is_zipfile() correctly identifies non-zip files."""
-        # - passing a filename
-        with open(TESTFN, "w") as fp:
-            fp.write("this is not a legal zip file\n")
-        chk = zipfile.is_zipfile(TESTFN)
-        self.assertFalse(chk)
-        # - passing a file object
-        with open(TESTFN, "rb") as fp:
-            chk = zipfile.is_zipfile(fp)
-            self.assertTrue(not chk)
-        # - passing a file-like object
-        fp = StringIO()
-        fp.write("this is not a legal zip file\n")
-        chk = zipfile.is_zipfile(fp)
-        self.assertTrue(not chk)
-        fp.seek(0, 0)
-        chk = zipfile.is_zipfile(fp)
-        self.assertTrue(not chk)
-
-    def test_is_zip_valid_file(self):
-        """Check that is_zipfile() correctly identifies zip files."""
-        # - passing a filename
-        with zipfile.ZipFile(TESTFN, mode="w") as zipf:
-            zipf.writestr("foo.txt", "O, for a Muse of Fire!")
-        chk = zipfile.is_zipfile(TESTFN)
-        self.assertTrue(chk)
-        # - passing a file object
-        with open(TESTFN, "rb") as fp:
-            chk = zipfile.is_zipfile(fp)
-            self.assertTrue(chk)
-            fp.seek(0, 0)
-            zip_contents = fp.read()
-        # - passing a file-like object
-        fp = StringIO()
-        fp.write(zip_contents)
-        chk = zipfile.is_zipfile(fp)
-        self.assertTrue(chk)
-        fp.seek(0, 0)
-        chk = zipfile.is_zipfile(fp)
-        self.assertTrue(chk)
-
-    def test_non_existent_file_raises_IOError(self):
-        # make sure we don't raise an AttributeError when a partially-constructed
-        # ZipFile instance is finalized; this tests for regression on SF tracker
-        # bug #403871.
-
-        # The bug we're testing for caused an AttributeError to be raised
-        # when a ZipFile instance was created for a file that did not
-        # exist; the .fp member was not initialized but was needed by the
-        # __del__() method.  Since the AttributeError is in the __del__(),
-        # it is ignored, but the user should be sufficiently annoyed by
-        # the message on the output that regression will be noticed
-        # quickly.
-        self.assertRaises(IOError, zipfile.ZipFile, TESTFN)
-
-    def test_empty_file_raises_BadZipFile(self):
-        with open(TESTFN, 'w') as f:
-            pass
-        self.assertRaises(zipfile.BadZipfile, zipfile.ZipFile, TESTFN)
-
-        with open(TESTFN, 'w') as fp:
-            fp.write("short file")
-        self.assertRaises(zipfile.BadZipfile, zipfile.ZipFile, TESTFN)
-
-    def test_closed_zip_raises_RuntimeError(self):
-        """Verify that testzip() doesn't swallow inappropriate exceptions."""
-        data = StringIO()
-        with zipfile.ZipFile(data, mode="w") as zipf:
-            zipf.writestr("foo.txt", "O, for a Muse of Fire!")
-
-        # This is correct; calling .read on a closed ZipFile should throw
-        # a RuntimeError, and so should calling .testzip.  An earlier
-        # version of .testzip would swallow this exception (and any other)
-        # and report that the first file in the archive was corrupt.
-        self.assertRaises(RuntimeError, zipf.read, "foo.txt")
-        self.assertRaises(RuntimeError, zipf.open, "foo.txt")
-        self.assertRaises(RuntimeError, zipf.testzip)
-        self.assertRaises(RuntimeError, zipf.writestr, "bogus.txt", "bogus")
-        open(TESTFN, 'w').write('zipfile test data')
-        self.assertRaises(RuntimeError, zipf.write, TESTFN)
-
-    def test_bad_constructor_mode(self):
-        """Check that bad modes passed to ZipFile constructor are caught."""
-        self.assertRaises(RuntimeError, zipfile.ZipFile, TESTFN, "q")
-
-    def test_bad_open_mode(self):
-        """Check that bad modes passed to ZipFile.open are caught."""
-        with zipfile.ZipFile(TESTFN, mode="w") as zipf:
-            zipf.writestr("foo.txt", "O, for a Muse of Fire!")
-
-        with zipfile.ZipFile(TESTFN, mode="r") as zipf:
-        # read the data to make sure the file is there
-            zipf.read("foo.txt")
-            self.assertRaises(RuntimeError, zipf.open, "foo.txt", "q")
-
-    def test_read0(self):
-        """Check that calling read(0) on a ZipExtFile object returns an empty
-        string and doesn't advance file pointer."""
-        with zipfile.ZipFile(TESTFN, mode="w") as zipf:
-            zipf.writestr("foo.txt", "O, for a Muse of Fire!")
-            # read the data to make sure the file is there
-            with zipf.open("foo.txt") as f:
-                for i in xrange(FIXEDTEST_SIZE):
-                    self.assertEqual(f.read(0), '')
-
-                self.assertEqual(f.read(), "O, for a Muse of Fire!")
-
-    def test_open_non_existent_item(self):
-        """Check that attempting to call open() for an item that doesn't
-        exist in the archive raises a RuntimeError."""
-        with zipfile.ZipFile(TESTFN, mode="w") as zipf:
-            self.assertRaises(KeyError, zipf.open, "foo.txt", "r")
-
-    def test_bad_compression_mode(self):
-        """Check that bad compression methods passed to ZipFile.open are
-        caught."""
-        self.assertRaises(RuntimeError, zipfile.ZipFile, TESTFN, "w", -1)
-
-    def test_null_byte_in_filename(self):
-        """Check that a filename containing a null byte is properly
-        terminated."""
-        with zipfile.ZipFile(TESTFN, mode="w") as zipf:
-            zipf.writestr("foo.txt\x00qqq", "O, for a Muse of Fire!")
-            self.assertEqual(zipf.namelist(), ['foo.txt'])
-
-    def test_struct_sizes(self):
-        """Check that ZIP internal structure sizes are calculated correctly."""
-        self.assertEqual(zipfile.sizeEndCentDir, 22)
-        self.assertEqual(zipfile.sizeCentralDir, 46)
-        self.assertEqual(zipfile.sizeEndCentDir64, 56)
-        self.assertEqual(zipfile.sizeEndCentDir64Locator, 20)
-
-    def test_comments(self):
-        """Check that comments on the archive are handled properly."""
-
-        # check default comment is empty
-        with zipfile.ZipFile(TESTFN, mode="w") as zipf:
-            self.assertEqual(zipf.comment, '')
-            zipf.writestr("foo.txt", "O, for a Muse of Fire!")
-
-        with zipfile.ZipFile(TESTFN, mode="r") as zipf:
-            self.assertEqual(zipf.comment, '')
-
-        # check a simple short comment
-        comment = 'Bravely taking to his feet, he beat a very brave retreat.'
-        with zipfile.ZipFile(TESTFN, mode="w") as zipf:
-            zipf.comment = comment
-            zipf.writestr("foo.txt", "O, for a Muse of Fire!")
-        with zipfile.ZipFile(TESTFN, mode="r") as zipf:
-            self.assertEqual(zipf.comment, comment)
-
-        # check a comment of max length
-        comment2 = ''.join(['%d' % (i**3 % 10) for i in xrange((1 << 16)-1)])
-        with zipfile.ZipFile(TESTFN, mode="w") as zipf:
-            zipf.comment = comment2
-            zipf.writestr("foo.txt", "O, for a Muse of Fire!")
-
-        with zipfile.ZipFile(TESTFN, mode="r") as zipf:
-            self.assertEqual(zipf.comment, comment2)
-
-        # check a comment that is too long is truncated
-        with zipfile.ZipFile(TESTFN, mode="w") as zipf:
-            zipf.comment = comment2 + 'oops'
-            zipf.writestr("foo.txt", "O, for a Muse of Fire!")
-        with zipfile.ZipFile(TESTFN, mode="r") as zipf:
-            self.assertEqual(zipf.comment, comment2)
-
-    def check_testzip_with_bad_crc(self, compression):
-        """Tests that files with bad CRCs return their name from testzip."""
-        zipdata = self.zips_with_bad_crc[compression]
-
-        with zipfile.ZipFile(io.BytesIO(zipdata), mode="r") as zipf:
-            # testzip returns the name of the first corrupt file, or None
-            self.assertEqual('afile', zipf.testzip())
-
-    def test_testzip_with_bad_crc_stored(self):
-        self.check_testzip_with_bad_crc(zipfile.ZIP_STORED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_testzip_with_bad_crc_deflated(self):
-        self.check_testzip_with_bad_crc(zipfile.ZIP_DEFLATED)
-
-    def check_read_with_bad_crc(self, compression):
-        """Tests that files with bad CRCs raise a BadZipfile exception when read."""
-        zipdata = self.zips_with_bad_crc[compression]
-
-        # Using ZipFile.read()
-        with zipfile.ZipFile(io.BytesIO(zipdata), mode="r") as zipf:
-            self.assertRaises(zipfile.BadZipfile, zipf.read, 'afile')
-
-        # Using ZipExtFile.read()
-        with zipfile.ZipFile(io.BytesIO(zipdata), mode="r") as zipf:
-            with zipf.open('afile', 'r') as corrupt_file:
-                self.assertRaises(zipfile.BadZipfile, corrupt_file.read)
-
-        # Same with small reads (in order to exercise the buffering logic)
-        with zipfile.ZipFile(io.BytesIO(zipdata), mode="r") as zipf:
-            with zipf.open('afile', 'r') as corrupt_file:
-                corrupt_file.MIN_READ_SIZE = 2
-                with self.assertRaises(zipfile.BadZipfile):
-                    while corrupt_file.read(2):
-                        pass
-
-    def test_read_with_bad_crc_stored(self):
-        self.check_read_with_bad_crc(zipfile.ZIP_STORED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_read_with_bad_crc_deflated(self):
-        self.check_read_with_bad_crc(zipfile.ZIP_DEFLATED)
-
-    def check_read_return_size(self, compression):
-        # Issue #9837: ZipExtFile.read() shouldn't return more bytes
-        # than requested.
-        for test_size in (1, 4095, 4096, 4097, 16384):
-            file_size = test_size + 1
-            junk = b''.join(struct.pack('B', randint(0, 255))
-                            for x in range(file_size))
-            with zipfile.ZipFile(io.BytesIO(), "w", compression) as zipf:
-                zipf.writestr('foo', junk)
-                with zipf.open('foo', 'r') as fp:
-                    buf = fp.read(test_size)
-                    self.assertEqual(len(buf), test_size)
-
-    def test_read_return_size_stored(self):
-        self.check_read_return_size(zipfile.ZIP_STORED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_read_return_size_deflated(self):
-        self.check_read_return_size(zipfile.ZIP_DEFLATED)
-
-    def test_empty_zipfile(self):
-        # Check that creating a file in 'w' or 'a' mode and closing without
-        # adding any files to the archives creates a valid empty ZIP file
-        with zipfile.ZipFile(TESTFN, mode="w") as zipf:
-            pass
-        try:
-            zipf = zipfile.ZipFile(TESTFN, mode="r")
-        except zipfile.BadZipfile:
-            self.fail("Unable to create empty ZIP file in 'w' mode")
-
-        with zipfile.ZipFile(TESTFN, mode="a") as zipf:
-            pass
-        try:
-            zipf = zipfile.ZipFile(TESTFN, mode="r")
-        except:
-            self.fail("Unable to create empty ZIP file in 'a' mode")
-
-    def test_open_empty_file(self):
-        # Issue 1710703: Check that opening a file with less than 22 bytes
-        # raises a BadZipfile exception (rather than the previously unhelpful
-        # IOError)
-        with open(TESTFN, 'w') as f:
-            pass
-        self.assertRaises(zipfile.BadZipfile, zipfile.ZipFile, TESTFN, 'r')
-
-    def tearDown(self):
-        unlink(TESTFN)
-        unlink(TESTFN2)
-
-
-class DecryptionTests(unittest.TestCase):
-    """Check that ZIP decryption works. Since the library does not
-    support encryption at the moment, we use a pre-generated encrypted
-    ZIP file."""
-
-    data = (
-    'PK\x03\x04\x14\x00\x01\x00\x00\x00n\x92i.#y\xef?&\x00\x00\x00\x1a\x00'
-    '\x00\x00\x08\x00\x00\x00test.txt\xfa\x10\xa0gly|\xfa-\xc5\xc0=\xf9y'
-    '\x18\xe0\xa8r\xb3Z}Lg\xbc\xae\xf9|\x9b\x19\xe4\x8b\xba\xbb)\x8c\xb0\xdbl'
-    'PK\x01\x02\x14\x00\x14\x00\x01\x00\x00\x00n\x92i.#y\xef?&\x00\x00\x00'
-    '\x1a\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x01\x00 \x00\xb6\x81'
-    '\x00\x00\x00\x00test.txtPK\x05\x06\x00\x00\x00\x00\x01\x00\x01\x006\x00'
-    '\x00\x00L\x00\x00\x00\x00\x00' )
-    data2 = (
-    'PK\x03\x04\x14\x00\t\x00\x08\x00\xcf}38xu\xaa\xb2\x14\x00\x00\x00\x00\x02'
-    '\x00\x00\x04\x00\x15\x00zeroUT\t\x00\x03\xd6\x8b\x92G\xda\x8b\x92GUx\x04'
-    '\x00\xe8\x03\xe8\x03\xc7<M\xb5a\xceX\xa3Y&\x8b{oE\xd7\x9d\x8c\x98\x02\xc0'
-    'PK\x07\x08xu\xaa\xb2\x14\x00\x00\x00\x00\x02\x00\x00PK\x01\x02\x17\x03'
-    '\x14\x00\t\x00\x08\x00\xcf}38xu\xaa\xb2\x14\x00\x00\x00\x00\x02\x00\x00'
-    '\x04\x00\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00ze'
-    'roUT\x05\x00\x03\xd6\x8b\x92GUx\x00\x00PK\x05\x06\x00\x00\x00\x00\x01'
-    '\x00\x01\x00?\x00\x00\x00[\x00\x00\x00\x00\x00' )
-
-    plain = 'zipfile.py encryption test'
-    plain2 = '\x00'*512
-
-    def setUp(self):
-        with open(TESTFN, "wb") as fp:
-            fp.write(self.data)
-        self.zip = zipfile.ZipFile(TESTFN, "r")
-        with open(TESTFN2, "wb") as fp:
-            fp.write(self.data2)
-        self.zip2 = zipfile.ZipFile(TESTFN2, "r")
-
-    def tearDown(self):
-        self.zip.close()
-        os.unlink(TESTFN)
-        self.zip2.close()
-        os.unlink(TESTFN2)
-
-    def test_no_password(self):
-        # Reading the encrypted file without password
-        # must generate a RunTime exception
-        self.assertRaises(RuntimeError, self.zip.read, "test.txt")
-        self.assertRaises(RuntimeError, self.zip2.read, "zero")
-
-    def test_bad_password(self):
-        self.zip.setpassword("perl")
-        self.assertRaises(RuntimeError, self.zip.read, "test.txt")
-        self.zip2.setpassword("perl")
-        self.assertRaises(RuntimeError, self.zip2.read, "zero")
-
-    @skipUnless(zlib, "requires zlib")
-    def test_good_password(self):
-        self.zip.setpassword("python")
-        self.assertEqual(self.zip.read("test.txt"), self.plain)
-        self.zip2.setpassword("12345")
-        self.assertEqual(self.zip2.read("zero"), self.plain2)
-
-
-class TestsWithRandomBinaryFiles(unittest.TestCase):
-    def setUp(self):
-        datacount = randint(16, 64)*1024 + randint(1, 1024)
-        self.data = ''.join(struct.pack('<f', random()*randint(-1000, 1000))
-                            for i in xrange(datacount))
-
-        # Make a source file with some lines
-        with open(TESTFN, "wb") as fp:
-            fp.write(self.data)
-
-    def tearDown(self):
-        unlink(TESTFN)
-        unlink(TESTFN2)
-
-    def make_test_archive(self, f, compression):
-        # Create the ZIP archive
-        with zipfile.ZipFile(f, "w", compression) as zipfp:
-            zipfp.write(TESTFN, "another.name")
-            zipfp.write(TESTFN, TESTFN)
-
-    def zip_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r", compression) as zipfp:
-            testdata = zipfp.read(TESTFN)
-            self.assertEqual(len(testdata), len(self.data))
-            self.assertEqual(testdata, self.data)
-            self.assertEqual(zipfp.read("another.name"), self.data)
-
-    def test_stored(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_test(f, zipfile.ZIP_STORED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_deflated(self):
-        for f in (TESTFN2, TemporaryFile(), io.BytesIO()):
-            self.zip_test(f, zipfile.ZIP_DEFLATED)
-
-    def zip_open_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r", compression) as zipfp:
-            zipdata1 = []
-            with zipfp.open(TESTFN) as zipopen1:
-                while True:
-                    read_data = zipopen1.read(256)
-                    if not read_data:
-                        break
-                    zipdata1.append(read_data)
-
-            zipdata2 = []
-            with zipfp.open("another.name") as zipopen2:
-                while True:
-                    read_data = zipopen2.read(256)
-                    if not read_data:
-                        break
-                    zipdata2.append(read_data)
-
-            testdata1 = ''.join(zipdata1)
-            self.assertEqual(len(testdata1), len(self.data))
-            self.assertEqual(testdata1, self.data)
-
-            testdata2 = ''.join(zipdata2)
-            self.assertEqual(len(testdata2), len(self.data))
-            self.assertEqual(testdata2, self.data)
-
-    def test_open_stored(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_open_test(f, zipfile.ZIP_STORED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_open_deflated(self):
-        for f in (TESTFN2, TemporaryFile(), io.BytesIO()):
-            self.zip_open_test(f, zipfile.ZIP_DEFLATED)
-
-    def zip_random_open_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r", compression) as zipfp:
-            zipdata1 = []
-            with zipfp.open(TESTFN) as zipopen1:
-                while True:
-                    read_data = zipopen1.read(randint(1, 1024))
-                    if not read_data:
-                        break
-                    zipdata1.append(read_data)
-
-            testdata = ''.join(zipdata1)
-            self.assertEqual(len(testdata), len(self.data))
-            self.assertEqual(testdata, self.data)
-
-    def test_random_open_stored(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.zip_random_open_test(f, zipfile.ZIP_STORED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_random_open_deflated(self):
-        for f in (TESTFN2, TemporaryFile(), io.BytesIO()):
-            self.zip_random_open_test(f, zipfile.ZIP_DEFLATED)
-
-
-@skipUnless(zlib, "requires zlib")
-class TestsWithMultipleOpens(unittest.TestCase):
-    def setUp(self):
-        # Create the ZIP archive
-        with zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_DEFLATED) as zipfp:
-            zipfp.writestr('ones', '1'*FIXEDTEST_SIZE)
-            zipfp.writestr('twos', '2'*FIXEDTEST_SIZE)
-
-    def test_same_file(self):
-        # Verify that (when the ZipFile is in control of creating file objects)
-        # multiple open() calls can be made without interfering with each other.
-        with zipfile.ZipFile(TESTFN2, mode="r") as zipf:
-            zopen1 = zipf.open('ones')
-            zopen2 = zipf.open('ones')
-            data1 = zopen1.read(500)
-            data2 = zopen2.read(500)
-            data1 += zopen1.read(500)
-            data2 += zopen2.read(500)
-            self.assertEqual(data1, data2)
-
-    def test_different_file(self):
-        # Verify that (when the ZipFile is in control of creating file objects)
-        # multiple open() calls can be made without interfering with each other.
-        with zipfile.ZipFile(TESTFN2, mode="r") as zipf:
-            with zipf.open('ones') as zopen1, zipf.open('twos') as zopen2:
-                data1 = zopen1.read(500)
-                data2 = zopen2.read(500)
-                data1 += zopen1.read(500)
-                data2 += zopen2.read(500)
-            self.assertEqual(data1, '1'*FIXEDTEST_SIZE)
-            self.assertEqual(data2, '2'*FIXEDTEST_SIZE)
-
-    def test_interleaved(self):
-        # Verify that (when the ZipFile is in control of creating file objects)
-        # multiple open() calls can be made without interfering with each other.
-        with zipfile.ZipFile(TESTFN2, mode="r") as zipf:
-            with zipf.open('ones') as zopen1, zipf.open('twos') as zopen2:
-                data1 = zopen1.read(500)
-                data2 = zopen2.read(500)
-                data1 += zopen1.read(500)
-                data2 += zopen2.read(500)
-            self.assertEqual(data1, '1'*FIXEDTEST_SIZE)
-            self.assertEqual(data2, '2'*FIXEDTEST_SIZE)
-
-    def tearDown(self):
-        unlink(TESTFN2)
-
-
-class TestWithDirectory(unittest.TestCase):
-    def setUp(self):
-        os.mkdir(TESTFN2)
-
-    def test_extract_dir(self):
-        with zipfile.ZipFile(findfile("zipdir.zip")) as zipf:
-            zipf.extractall(TESTFN2)
-        self.assertTrue(os.path.isdir(os.path.join(TESTFN2, "a")))
-        self.assertTrue(os.path.isdir(os.path.join(TESTFN2, "a", "b")))
-        self.assertTrue(os.path.exists(os.path.join(TESTFN2, "a", "b", "c")))
-
-    def test_bug_6050(self):
-        # Extraction should succeed if directories already exist
-        os.mkdir(os.path.join(TESTFN2, "a"))
-        self.test_extract_dir()
-
-    def test_store_dir(self):
-        os.mkdir(os.path.join(TESTFN2, "x"))
-        zipf = zipfile.ZipFile(TESTFN, "w")
-        zipf.write(os.path.join(TESTFN2, "x"), "x")
-        self.assertTrue(zipf.filelist[0].filename.endswith("x/"))
-
-    def tearDown(self):
-        shutil.rmtree(TESTFN2)
-        if os.path.exists(TESTFN):
-            unlink(TESTFN)
-
-
-class UniversalNewlineTests(unittest.TestCase):
-    def setUp(self):
-        self.line_gen = ["Test of zipfile line %d." % i
-                         for i in xrange(FIXEDTEST_SIZE)]
-        self.seps = ('\r', '\r\n', '\n')
-        self.arcdata, self.arcfiles = {}, {}
-        for n, s in enumerate(self.seps):
-            self.arcdata[s] = s.join(self.line_gen) + s
-            self.arcfiles[s] = '%s-%d' % (TESTFN, n)
-            open(self.arcfiles[s], "wb").write(self.arcdata[s])
-
-    def make_test_archive(self, f, compression):
-        # Create the ZIP archive
-        with zipfile.ZipFile(f, "w", compression) as zipfp:
-            for fn in self.arcfiles.values():
-                zipfp.write(fn, fn)
-
-    def read_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r") as zipfp:
-            for sep, fn in self.arcfiles.items():
-                with zipfp.open(fn, "rU") as fp:
-                    zipdata = fp.read()
-                self.assertEqual(self.arcdata[sep], zipdata)
-
-    def readline_read_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        zipfp = zipfile.ZipFile(f, "r")
-        for sep, fn in self.arcfiles.items():
-            with zipfp.open(fn, "rU") as zipopen:
-                data = ''
-                while True:
-                    read = zipopen.readline()
-                    if not read:
-                        break
-                    data += read
-
-                    read = zipopen.read(5)
-                    if not read:
-                        break
-                    data += read
-
-            self.assertEqual(data, self.arcdata['\n'])
-
-        zipfp.close()
-
-    def readline_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r") as zipfp:
-            for sep, fn in self.arcfiles.items():
-                with zipfp.open(fn, "rU") as zipopen:
-                    for line in self.line_gen:
-                        linedata = zipopen.readline()
-                        self.assertEqual(linedata, line + '\n')
-
-    def readlines_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r") as zipfp:
-            for sep, fn in self.arcfiles.items():
-                with zipfp.open(fn, "rU") as fp:
-                    ziplines = fp.readlines()
-                for line, zipline in zip(self.line_gen, ziplines):
-                    self.assertEqual(zipline, line + '\n')
-
-    def iterlines_test(self, f, compression):
-        self.make_test_archive(f, compression)
-
-        # Read the ZIP archive
-        with zipfile.ZipFile(f, "r") as zipfp:
-            for sep, fn in self.arcfiles.items():
-                for line, zipline in zip(self.line_gen, zipfp.open(fn, "rU")):
-                    self.assertEqual(zipline, line + '\n')
-
-    def test_read_stored(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.read_test(f, zipfile.ZIP_STORED)
-
-    def test_readline_read_stored(self):
-        # Issue #7610: calls to readline() interleaved with calls to read().
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.readline_read_test(f, zipfile.ZIP_STORED)
-
-    def test_readline_stored(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.readline_test(f, zipfile.ZIP_STORED)
-
-    def test_readlines_stored(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.readlines_test(f, zipfile.ZIP_STORED)
-
-    def test_iterlines_stored(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.iterlines_test(f, zipfile.ZIP_STORED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_read_deflated(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.read_test(f, zipfile.ZIP_DEFLATED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_readline_read_deflated(self):
-        # Issue #7610: calls to readline() interleaved with calls to read().
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.readline_read_test(f, zipfile.ZIP_DEFLATED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_readline_deflated(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.readline_test(f, zipfile.ZIP_DEFLATED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_readlines_deflated(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.readlines_test(f, zipfile.ZIP_DEFLATED)
-
-    @skipUnless(zlib, "requires zlib")
-    def test_iterlines_deflated(self):
-        for f in (TESTFN2, TemporaryFile(), StringIO()):
-            self.iterlines_test(f, zipfile.ZIP_DEFLATED)
-
-    def tearDown(self):
-        for sep, fn in self.arcfiles.items():
-            os.remove(fn)
-        unlink(TESTFN)
-        unlink(TESTFN2)
-
-
-def test_main():
-    run_unittest(TestsWithSourceFile, TestZip64InSmallFiles, OtherTests,
-                 PyZipFileTests, DecryptionTests, TestsWithMultipleOpens,
-                 TestWithDirectory, UniversalNewlineTests,
-                 TestsWithRandomBinaryFiles)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipfile64.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipfile64.py
deleted file mode 100644
index 8cd97a7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipfile64.py
+++ /dev/null
@@ -1,124 +0,0 @@
-# Tests of the full ZIP64 functionality of zipfile
-# The test_support.requires call is the only reason for keeping this separate
-# from test_zipfile
-from test import test_support
-
-# XXX(nnorwitz): disable this test by looking for extra largfile resource
-# which doesn't exist.  This test takes over 30 minutes to run in general
-# and requires more disk space than most of the buildbots.
-test_support.requires(
-        'extralargefile',
-        'test requires loads of disk-space bytes and a long time to run'
-    )
-
-# We can test part of the module without zlib.
-try:
-    import zlib
-except ImportError:
-    zlib = None
-
-import zipfile, os, unittest
-import time
-import sys
-
-from tempfile import TemporaryFile
-
-from test.test_support import TESTFN, run_unittest
-
-TESTFN2 = TESTFN + "2"
-
-# How much time in seconds can pass before we print a 'Still working' message.
-_PRINT_WORKING_MSG_INTERVAL = 5 * 60
-
-class TestsWithSourceFile(unittest.TestCase):
-    def setUp(self):
-        # Create test data.
-        # xrange() is important here -- don't want to create immortal space
-        # for a million ints.
-        line_gen = ("Test of zipfile line %d." % i for i in xrange(1000000))
-        self.data = '\n'.join(line_gen)
-
-        # And write it to a file.
-        fp = open(TESTFN, "wb")
-        fp.write(self.data)
-        fp.close()
-
-    def zipTest(self, f, compression):
-        # Create the ZIP archive.
-        zipfp = zipfile.ZipFile(f, "w", compression, allowZip64=True)
-
-        # It will contain enough copies of self.data to reach about 6GB of
-        # raw data to store.
-        filecount = 6*1024**3 // len(self.data)
-
-        next_time = time.time() + _PRINT_WORKING_MSG_INTERVAL
-        for num in range(filecount):
-            zipfp.writestr("testfn%d" % num, self.data)
-            # Print still working message since this test can be really slow
-            if next_time <= time.time():
-                next_time = time.time() + _PRINT_WORKING_MSG_INTERVAL
-                print >>sys.__stdout__, (
-                   '  zipTest still writing %d of %d, be patient...' %
-                   (num, filecount))
-                sys.__stdout__.flush()
-        zipfp.close()
-
-        # Read the ZIP archive
-        zipfp = zipfile.ZipFile(f, "r", compression)
-        for num in range(filecount):
-            self.assertEqual(zipfp.read("testfn%d" % num), self.data)
-            # Print still working message since this test can be really slow
-            if next_time <= time.time():
-                next_time = time.time() + _PRINT_WORKING_MSG_INTERVAL
-                print >>sys.__stdout__, (
-                   '  zipTest still reading %d of %d, be patient...' %
-                   (num, filecount))
-                sys.__stdout__.flush()
-        zipfp.close()
-
-    def testStored(self):
-        # Try the temp file first.  If we do TESTFN2 first, then it hogs
-        # gigabytes of disk space for the duration of the test.
-        for f in TemporaryFile(), TESTFN2:
-            self.zipTest(f, zipfile.ZIP_STORED)
-
-    if zlib:
-        def testDeflated(self):
-            # Try the temp file first.  If we do TESTFN2 first, then it hogs
-            # gigabytes of disk space for the duration of the test.
-            for f in TemporaryFile(), TESTFN2:
-                self.zipTest(f, zipfile.ZIP_DEFLATED)
-
-    def tearDown(self):
-        for fname in TESTFN, TESTFN2:
-            if os.path.exists(fname):
-                os.remove(fname)
-
-
-class OtherTests(unittest.TestCase):
-    def testMoreThan64kFiles(self):
-        # This test checks that more than 64k files can be added to an archive,
-        # and that the resulting archive can be read properly by ZipFile
-        zipf = zipfile.ZipFile(TESTFN, mode="w")
-        zipf.debug = 100
-        numfiles = (1 << 16) * 3/2
-        for i in xrange(numfiles):
-            zipf.writestr("foo%08d" % i, "%d" % (i**3 % 57))
-        self.assertEqual(len(zipf.namelist()), numfiles)
-        zipf.close()
-
-        zipf2 = zipfile.ZipFile(TESTFN, mode="r")
-        self.assertEqual(len(zipf2.namelist()), numfiles)
-        for i in xrange(numfiles):
-            self.assertEqual(zipf2.read("foo%08d" % i), "%d" % (i**3 % 57))
-        zipf.close()
-
-    def tearDown(self):
-        test_support.unlink(TESTFN)
-        test_support.unlink(TESTFN2)
-
-def test_main():
-    run_unittest(TestsWithSourceFile, OtherTests)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipimport.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipimport.py
deleted file mode 100644
index cd934bc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipimport.py
+++ /dev/null
@@ -1,472 +0,0 @@
-import sys
-import os
-import marshal
-import imp
-import struct
-import time
-import unittest
-
-from test import test_support
-from test.test_importhooks import ImportHooksBaseTestCase, test_src, test_co
-
-# some tests can be ran even without zlib
-try:
-    import zlib
-except ImportError:
-    zlib = None
-
-from zipfile import ZipFile, ZipInfo, ZIP_STORED, ZIP_DEFLATED
-
-import zipimport
-import linecache
-import doctest
-import inspect
-import StringIO
-from traceback import extract_tb, extract_stack, print_tb
-raise_src = 'def do_raise(): raise TypeError\n'
-
-def make_pyc(co, mtime):
-    data = marshal.dumps(co)
-    if type(mtime) is type(0.0):
-        # Mac mtimes need a bit of special casing
-        if mtime < 0x7fffffff:
-            mtime = int(mtime)
-        else:
-            mtime = int(-0x100000000L + long(mtime))
-    pyc = imp.get_magic() + struct.pack("<i", int(mtime)) + data
-    return pyc
-
-def module_path_to_dotted_name(path):
-    return path.replace(os.sep, '.')
-
-NOW = time.time()
-test_pyc = make_pyc(test_co, NOW)
-
-
-if __debug__:
-    pyc_ext = ".pyc"
-else:
-    pyc_ext = ".pyo"
-
-
-TESTMOD = "ziptestmodule"
-TESTPACK = "ziptestpackage"
-TESTPACK2 = "ziptestpackage2"
-TEMP_ZIP = os.path.abspath("junk95142" + os.extsep + "zip")
-
-
-class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
-
-    compression = ZIP_STORED
-
-    def setUp(self):
-        # We're reusing the zip archive path, so we must clear the
-        # cached directory info and linecache
-        linecache.clearcache()
-        zipimport._zip_directory_cache.clear()
-        ImportHooksBaseTestCase.setUp(self)
-
-    def doTest(self, expected_ext, files, *modules, **kw):
-        z = ZipFile(TEMP_ZIP, "w")
-        try:
-            for name, (mtime, data) in files.items():
-                zinfo = ZipInfo(name, time.localtime(mtime))
-                zinfo.compress_type = self.compression
-                z.writestr(zinfo, data)
-            z.close()
-
-            stuff = kw.get("stuff", None)
-            if stuff is not None:
-                # Prepend 'stuff' to the start of the zipfile
-                f = open(TEMP_ZIP, "rb")
-                data = f.read()
-                f.close()
-
-                f = open(TEMP_ZIP, "wb")
-                f.write(stuff)
-                f.write(data)
-                f.close()
-
-            sys.path.insert(0, TEMP_ZIP)
-
-            mod = __import__(".".join(modules), globals(), locals(),
-                             ["__dummy__"])
-
-            call = kw.get('call')
-            if call is not None:
-                call(mod)
-
-            if expected_ext:
-                file = mod.get_file()
-                self.assertEqual(file, os.path.join(TEMP_ZIP,
-                                 *modules) + expected_ext)
-        finally:
-            z.close()
-            os.remove(TEMP_ZIP)
-
-    def testAFakeZlib(self):
-        #
-        # This could cause a stack overflow before: importing zlib.py
-        # from a compressed archive would cause zlib to be imported
-        # which would find zlib.py in the archive, which would... etc.
-        #
-        # This test *must* be executed first: it must be the first one
-        # to trigger zipimport to import zlib (zipimport caches the
-        # zlib.decompress function object, after which the problem being
-        # tested here wouldn't be a problem anymore...
-        # (Hence the 'A' in the test method name: to make it the first
-        # item in a list sorted by name, like unittest.makeSuite() does.)
-        #
-        # This test fails on platforms on which the zlib module is
-        # statically linked, but the problem it tests for can't
-        # occur in that case (builtin modules are always found first),
-        # so we'll simply skip it then. Bug #765456.
-        #
-        if "zlib" in sys.builtin_module_names:
-            return
-        if "zlib" in sys.modules:
-            del sys.modules["zlib"]
-        files = {"zlib.py": (NOW, test_src)}
-        try:
-            self.doTest(".py", files, "zlib")
-        except ImportError:
-            if self.compression != ZIP_DEFLATED:
-                self.fail("expected test to not raise ImportError")
-        else:
-            if self.compression != ZIP_STORED:
-                self.fail("expected test to raise ImportError")
-
-    def testPy(self):
-        files = {TESTMOD + ".py": (NOW, test_src)}
-        self.doTest(".py", files, TESTMOD)
-
-    def testPyc(self):
-        files = {TESTMOD + pyc_ext: (NOW, test_pyc)}
-        self.doTest(pyc_ext, files, TESTMOD)
-
-    def testBoth(self):
-        files = {TESTMOD + ".py": (NOW, test_src),
-                 TESTMOD + pyc_ext: (NOW, test_pyc)}
-        self.doTest(pyc_ext, files, TESTMOD)
-
-    def testEmptyPy(self):
-        files = {TESTMOD + ".py": (NOW, "")}
-        self.doTest(None, files, TESTMOD)
-
-    def testBadMagic(self):
-        # make pyc magic word invalid, forcing loading from .py
-        m0 = ord(test_pyc[0])
-        m0 ^= 0x04  # flip an arbitrary bit
-        badmagic_pyc = chr(m0) + test_pyc[1:]
-        files = {TESTMOD + ".py": (NOW, test_src),
-                 TESTMOD + pyc_ext: (NOW, badmagic_pyc)}
-        self.doTest(".py", files, TESTMOD)
-
-    def testBadMagic2(self):
-        # make pyc magic word invalid, causing an ImportError
-        m0 = ord(test_pyc[0])
-        m0 ^= 0x04  # flip an arbitrary bit
-        badmagic_pyc = chr(m0) + test_pyc[1:]
-        files = {TESTMOD + pyc_ext: (NOW, badmagic_pyc)}
-        try:
-            self.doTest(".py", files, TESTMOD)
-        except ImportError:
-            pass
-        else:
-            self.fail("expected ImportError; import from bad pyc")
-
-    def testBadMTime(self):
-        t3 = ord(test_pyc[7])
-        t3 ^= 0x02  # flip the second bit -- not the first as that one
-                    # isn't stored in the .py's mtime in the zip archive.
-        badtime_pyc = test_pyc[:7] + chr(t3) + test_pyc[8:]
-        files = {TESTMOD + ".py": (NOW, test_src),
-                 TESTMOD + pyc_ext: (NOW, badtime_pyc)}
-        self.doTest(".py", files, TESTMOD)
-
-    def testPackage(self):
-        packdir = TESTPACK + os.sep
-        files = {packdir + "__init__" + pyc_ext: (NOW, test_pyc),
-                 packdir + TESTMOD + pyc_ext: (NOW, test_pyc)}
-        self.doTest(pyc_ext, files, TESTPACK, TESTMOD)
-
-    def testDeepPackage(self):
-        packdir = TESTPACK + os.sep
-        packdir2 = packdir + TESTPACK2 + os.sep
-        files = {packdir + "__init__" + pyc_ext: (NOW, test_pyc),
-                 packdir2 + "__init__" + pyc_ext: (NOW, test_pyc),
-                 packdir2 + TESTMOD + pyc_ext: (NOW, test_pyc)}
-        self.doTest(pyc_ext, files, TESTPACK, TESTPACK2, TESTMOD)
-
-    def testZipImporterMethods(self):
-        packdir = TESTPACK + os.sep
-        packdir2 = packdir + TESTPACK2 + os.sep
-        files = {packdir + "__init__" + pyc_ext: (NOW, test_pyc),
-                 packdir2 + "__init__" + pyc_ext: (NOW, test_pyc),
-                 packdir2 + TESTMOD + pyc_ext: (NOW, test_pyc)}
-
-        z = ZipFile(TEMP_ZIP, "w")
-        try:
-            for name, (mtime, data) in files.items():
-                zinfo = ZipInfo(name, time.localtime(mtime))
-                zinfo.compress_type = self.compression
-                z.writestr(zinfo, data)
-            z.close()
-
-            zi = zipimport.zipimporter(TEMP_ZIP)
-            self.assertEqual(zi.archive, TEMP_ZIP)
-            self.assertEqual(zi.is_package(TESTPACK), True)
-            mod = zi.load_module(TESTPACK)
-            self.assertEqual(zi.get_filename(TESTPACK), mod.__file__)
-
-            self.assertEqual(zi.is_package(packdir + '__init__'), False)
-            self.assertEqual(zi.is_package(packdir + TESTPACK2), True)
-            self.assertEqual(zi.is_package(packdir2 + TESTMOD), False)
-
-            mod_path = packdir2 + TESTMOD
-            mod_name = module_path_to_dotted_name(mod_path)
-            __import__(mod_name)
-            mod = sys.modules[mod_name]
-            self.assertEqual(zi.get_source(TESTPACK), None)
-            self.assertEqual(zi.get_source(mod_path), None)
-            self.assertEqual(zi.get_filename(mod_path), mod.__file__)
-            # To pass in the module name instead of the path, we must use the right importer
-            loader = mod.__loader__
-            self.assertEqual(loader.get_source(mod_name), None)
-            self.assertEqual(loader.get_filename(mod_name), mod.__file__)
-
-            # test prefix and archivepath members
-            zi2 = zipimport.zipimporter(TEMP_ZIP + os.sep + TESTPACK)
-            self.assertEqual(zi2.archive, TEMP_ZIP)
-            self.assertEqual(zi2.prefix, TESTPACK + os.sep)
-        finally:
-            z.close()
-            os.remove(TEMP_ZIP)
-
-    def testZipImporterMethodsInSubDirectory(self):
-        packdir = TESTPACK + os.sep
-        packdir2 = packdir + TESTPACK2 + os.sep
-        files = {packdir2 + "__init__" + pyc_ext: (NOW, test_pyc),
-                 packdir2 + TESTMOD + pyc_ext: (NOW, test_pyc)}
-
-        z = ZipFile(TEMP_ZIP, "w")
-        try:
-            for name, (mtime, data) in files.items():
-                zinfo = ZipInfo(name, time.localtime(mtime))
-                zinfo.compress_type = self.compression
-                z.writestr(zinfo, data)
-            z.close()
-
-            zi = zipimport.zipimporter(TEMP_ZIP + os.sep + packdir)
-            self.assertEqual(zi.archive, TEMP_ZIP)
-            self.assertEqual(zi.prefix, packdir)
-            self.assertEqual(zi.is_package(TESTPACK2), True)
-            mod = zi.load_module(TESTPACK2)
-            self.assertEqual(zi.get_filename(TESTPACK2), mod.__file__)
-
-            self.assertEqual(zi.is_package(TESTPACK2 + os.sep + '__init__'), False)
-            self.assertEqual(zi.is_package(TESTPACK2 + os.sep + TESTMOD), False)
-
-            mod_path = TESTPACK2 + os.sep + TESTMOD
-            mod_name = module_path_to_dotted_name(mod_path)
-            __import__(mod_name)
-            mod = sys.modules[mod_name]
-            self.assertEqual(zi.get_source(TESTPACK2), None)
-            self.assertEqual(zi.get_source(mod_path), None)
-            self.assertEqual(zi.get_filename(mod_path), mod.__file__)
-            # To pass in the module name instead of the path, we must use the right importer
-            loader = mod.__loader__
-            self.assertEqual(loader.get_source(mod_name), None)
-            self.assertEqual(loader.get_filename(mod_name), mod.__file__)
-        finally:
-            z.close()
-            os.remove(TEMP_ZIP)
-
-    def testGetData(self):
-        z = ZipFile(TEMP_ZIP, "w")
-        z.compression = self.compression
-        try:
-            name = "testdata.dat"
-            data = "".join([chr(x) for x in range(256)]) * 500
-            z.writestr(name, data)
-            z.close()
-            zi = zipimport.zipimporter(TEMP_ZIP)
-            self.assertEqual(data, zi.get_data(name))
-            self.assertIn('zipimporter object', repr(zi))
-        finally:
-            z.close()
-            os.remove(TEMP_ZIP)
-
-    def testImporterAttr(self):
-        src = """if 1:  # indent hack
-        def get_file():
-            return __file__
-        if __loader__.get_data("some.data") != "some data":
-            raise AssertionError, "bad data"\n"""
-        pyc = make_pyc(compile(src, "<???>", "exec"), NOW)
-        files = {TESTMOD + pyc_ext: (NOW, pyc),
-                 "some.data": (NOW, "some data")}
-        self.doTest(pyc_ext, files, TESTMOD)
-
-    def testImport_WithStuff(self):
-        # try importing from a zipfile which contains additional
-        # stuff at the beginning of the file
-        files = {TESTMOD + ".py": (NOW, test_src)}
-        self.doTest(".py", files, TESTMOD,
-                    stuff="Some Stuff"*31)
-
-    def assertModuleSource(self, module):
-        self.assertEqual(inspect.getsource(module), test_src)
-
-    def testGetSource(self):
-        files = {TESTMOD + ".py": (NOW, test_src)}
-        self.doTest(".py", files, TESTMOD, call=self.assertModuleSource)
-
-    def testGetCompiledSource(self):
-        pyc = make_pyc(compile(test_src, "<???>", "exec"), NOW)
-        files = {TESTMOD + ".py": (NOW, test_src),
-                 TESTMOD + pyc_ext: (NOW, pyc)}
-        self.doTest(pyc_ext, files, TESTMOD, call=self.assertModuleSource)
-
-    def runDoctest(self, callback):
-        files = {TESTMOD + ".py": (NOW, test_src),
-                 "xyz.txt": (NOW, ">>> log.append(True)\n")}
-        self.doTest(".py", files, TESTMOD, call=callback)
-
-    def doDoctestFile(self, module):
-        log = []
-        old_master, doctest.master = doctest.master, None
-        try:
-            doctest.testfile(
-                'xyz.txt', package=module, module_relative=True,
-                globs=locals()
-            )
-        finally:
-            doctest.master = old_master
-        self.assertEqual(log,[True])
-
-    def testDoctestFile(self):
-        self.runDoctest(self.doDoctestFile)
-
-    def doDoctestSuite(self, module):
-        log = []
-        doctest.DocFileTest(
-            'xyz.txt', package=module, module_relative=True,
-            globs=locals()
-        ).run()
-        self.assertEqual(log,[True])
-
-    def testDoctestSuite(self):
-        self.runDoctest(self.doDoctestSuite)
-
-    def doTraceback(self, module):
-        try:
-            module.do_raise()
-        except:
-            tb = sys.exc_info()[2].tb_next
-
-            f,lno,n,line = extract_tb(tb, 1)[0]
-            self.assertEqual(line, raise_src.strip())
-
-            f,lno,n,line = extract_stack(tb.tb_frame, 1)[0]
-            self.assertEqual(line, raise_src.strip())
-
-            s = StringIO.StringIO()
-            print_tb(tb, 1, s)
-            self.assertTrue(s.getvalue().endswith(raise_src))
-        else:
-            raise AssertionError("This ought to be impossible")
-
-    def testTraceback(self):
-        files = {TESTMOD + ".py": (NOW, raise_src)}
-        self.doTest(None, files, TESTMOD, call=self.doTraceback)
-
-
-@unittest.skipUnless(zlib, "requires zlib")
-class CompressedZipImportTestCase(UncompressedZipImportTestCase):
-    compression = ZIP_DEFLATED
-
-
-class BadFileZipImportTestCase(unittest.TestCase):
-    def assertZipFailure(self, filename):
-        self.assertRaises(zipimport.ZipImportError,
-                          zipimport.zipimporter, filename)
-
-    def testNoFile(self):
-        self.assertZipFailure('AdfjdkFJKDFJjdklfjs')
-
-    def testEmptyFilename(self):
-        self.assertZipFailure('')
-
-    def testBadArgs(self):
-        self.assertRaises(TypeError, zipimport.zipimporter, None)
-        self.assertRaises(TypeError, zipimport.zipimporter, TESTMOD, kwd=None)
-
-    def testFilenameTooLong(self):
-        self.assertZipFailure('A' * 33000)
-
-    def testEmptyFile(self):
-        test_support.unlink(TESTMOD)
-        open(TESTMOD, 'w+').close()
-        self.assertZipFailure(TESTMOD)
-
-    def testFileUnreadable(self):
-        test_support.unlink(TESTMOD)
-        fd = os.open(TESTMOD, os.O_CREAT, 000)
-        try:
-            os.close(fd)
-            self.assertZipFailure(TESTMOD)
-        finally:
-            # If we leave "the read-only bit" set on Windows, nothing can
-            # delete TESTMOD, and later tests suffer bogus failures.
-            os.chmod(TESTMOD, 0666)
-            test_support.unlink(TESTMOD)
-
-    def testNotZipFile(self):
-        test_support.unlink(TESTMOD)
-        fp = open(TESTMOD, 'w+')
-        fp.write('a' * 22)
-        fp.close()
-        self.assertZipFailure(TESTMOD)
-
-    # XXX: disabled until this works on Big-endian machines
-    def _testBogusZipFile(self):
-        test_support.unlink(TESTMOD)
-        fp = open(TESTMOD, 'w+')
-        fp.write(struct.pack('=I', 0x06054B50))
-        fp.write('a' * 18)
-        fp.close()
-        z = zipimport.zipimporter(TESTMOD)
-
-        try:
-            self.assertRaises(TypeError, z.find_module, None)
-            self.assertRaises(TypeError, z.load_module, None)
-            self.assertRaises(TypeError, z.is_package, None)
-            self.assertRaises(TypeError, z.get_code, None)
-            self.assertRaises(TypeError, z.get_data, None)
-            self.assertRaises(TypeError, z.get_source, None)
-
-            error = zipimport.ZipImportError
-            self.assertEqual(z.find_module('abc'), None)
-
-            self.assertRaises(error, z.load_module, 'abc')
-            self.assertRaises(error, z.get_code, 'abc')
-            self.assertRaises(IOError, z.get_data, 'abc')
-            self.assertRaises(error, z.get_source, 'abc')
-            self.assertRaises(error, z.is_package, 'abc')
-        finally:
-            zipimport._zip_directory_cache.clear()
-
-
-def test_main():
-    try:
-        test_support.run_unittest(
-              UncompressedZipImportTestCase,
-              CompressedZipImportTestCase,
-              BadFileZipImportTestCase,
-            )
-    finally:
-        test_support.unlink(TESTMOD)
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipimport_support.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipimport_support.py
deleted file mode 100644
index 91b599f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zipimport_support.py
+++ /dev/null
@@ -1,238 +0,0 @@
-# This test module covers support in various parts of the standard library
-# for working with modules located inside zipfiles
-# The tests are centralised in this fashion to make it easy to drop them
-# if a platform doesn't support zipimport
-import test.test_support
-import os
-import os.path
-import sys
-import textwrap
-import zipfile
-import zipimport
-import doctest
-import inspect
-import linecache
-import pdb
-import warnings
-from test.script_helper import (spawn_python, kill_python, run_python,
-                                temp_dir, make_script, make_zip_script)
-
-verbose = test.test_support.verbose
-
-# Library modules covered by this test set
-#  pdb (Issue 4201)
-#  inspect (Issue 4223)
-#  doctest (Issue 4197)
-
-# Other test modules with zipimport related tests
-#  test_zipimport (of course!)
-#  test_cmd_line_script (covers the zipimport support in runpy)
-
-# Retrieve some helpers from other test cases
-from test import test_doctest, sample_doctest
-from test.test_importhooks import ImportHooksBaseTestCase
-
-
-def _run_object_doctest(obj, module):
-    # Direct doctest output (normally just errors) to real stdout; doctest
-    # output shouldn't be compared by regrtest.
-    save_stdout = sys.stdout
-    sys.stdout = test.test_support.get_original_stdout()
-    try:
-        finder = doctest.DocTestFinder(verbose=verbose, recurse=False)
-        runner = doctest.DocTestRunner(verbose=verbose)
-        # Use the object's fully qualified name if it has one
-        # Otherwise, use the module's name
-        try:
-            name = "%s.%s" % (obj.__module__, obj.__name__)
-        except AttributeError:
-            name = module.__name__
-        for example in finder.find(obj, name, module):
-            runner.run(example)
-        f, t = runner.failures, runner.tries
-        if f:
-            raise test.test_support.TestFailed("%d of %d doctests failed" % (f, t))
-    finally:
-        sys.stdout = save_stdout
-    if verbose:
-        print 'doctest (%s) ... %d tests with zero failures' % (module.__name__, t)
-    return f, t
-
-
-
-class ZipSupportTests(ImportHooksBaseTestCase):
-    # We use the ImportHooksBaseTestCase to restore
-    # the state of the import related information
-    # in the sys module after each test
-    # We also clear the linecache and zipimport cache
-    # just to avoid any bogus errors due to name reuse in the tests
-    def setUp(self):
-        linecache.clearcache()
-        zipimport._zip_directory_cache.clear()
-        ImportHooksBaseTestCase.setUp(self)
-
-
-    def test_inspect_getsource_issue4223(self):
-        test_src = "def foo(): pass\n"
-        with temp_dir() as d:
-            init_name = make_script(d, '__init__', test_src)
-            name_in_zip = os.path.join('zip_pkg',
-                                       os.path.basename(init_name))
-            zip_name, run_name = make_zip_script(d, 'test_zip',
-                                                init_name, name_in_zip)
-            os.remove(init_name)
-            sys.path.insert(0, zip_name)
-            import zip_pkg
-            self.assertEqual(inspect.getsource(zip_pkg.foo), test_src)
-
-    def test_doctest_issue4197(self):
-        # To avoid having to keep two copies of the doctest module's
-        # unit tests in sync, this test works by taking the source of
-        # test_doctest itself, rewriting it a bit to cope with a new
-        # location, and then throwing it in a zip file to make sure
-        # everything still works correctly
-        test_src = inspect.getsource(test_doctest)
-        test_src = test_src.replace(
-                         "from test import test_doctest",
-                         "import test_zipped_doctest as test_doctest")
-        test_src = test_src.replace("test.test_doctest",
-                                    "test_zipped_doctest")
-        test_src = test_src.replace("test.sample_doctest",
-                                    "sample_zipped_doctest")
-        sample_src = inspect.getsource(sample_doctest)
-        sample_src = sample_src.replace("test.test_doctest",
-                                        "test_zipped_doctest")
-        with temp_dir() as d:
-            script_name = make_script(d, 'test_zipped_doctest',
-                                            test_src)
-            zip_name, run_name = make_zip_script(d, 'test_zip',
-                                                script_name)
-            z = zipfile.ZipFile(zip_name, 'a')
-            z.writestr("sample_zipped_doctest.py", sample_src)
-            z.close()
-            if verbose:
-                zip_file = zipfile.ZipFile(zip_name, 'r')
-                print 'Contents of %r:' % zip_name
-                zip_file.printdir()
-                zip_file.close()
-            os.remove(script_name)
-            sys.path.insert(0, zip_name)
-            import test_zipped_doctest
-            # Some of the doc tests depend on the colocated text files
-            # which aren't available to the zipped version (the doctest
-            # module currently requires real filenames for non-embedded
-            # tests). So we're forced to be selective about which tests
-            # to run.
-            # doctest could really use some APIs which take a text
-            # string or a file object instead of a filename...
-            known_good_tests = [
-                test_zipped_doctest.SampleClass,
-                test_zipped_doctest.SampleClass.NestedClass,
-                test_zipped_doctest.SampleClass.NestedClass.__init__,
-                test_zipped_doctest.SampleClass.__init__,
-                test_zipped_doctest.SampleClass.a_classmethod,
-                test_zipped_doctest.SampleClass.a_property,
-                test_zipped_doctest.SampleClass.a_staticmethod,
-                test_zipped_doctest.SampleClass.double,
-                test_zipped_doctest.SampleClass.get,
-                test_zipped_doctest.SampleNewStyleClass,
-                test_zipped_doctest.SampleNewStyleClass.__init__,
-                test_zipped_doctest.SampleNewStyleClass.double,
-                test_zipped_doctest.SampleNewStyleClass.get,
-                test_zipped_doctest.old_test1,
-                test_zipped_doctest.old_test2,
-                test_zipped_doctest.old_test3,
-                test_zipped_doctest.old_test4,
-                test_zipped_doctest.sample_func,
-                test_zipped_doctest.test_DocTest,
-                test_zipped_doctest.test_DocTestParser,
-                test_zipped_doctest.test_DocTestRunner.basics,
-                test_zipped_doctest.test_DocTestRunner.exceptions,
-                test_zipped_doctest.test_DocTestRunner.option_directives,
-                test_zipped_doctest.test_DocTestRunner.optionflags,
-                test_zipped_doctest.test_DocTestRunner.verbose_flag,
-                test_zipped_doctest.test_Example,
-                test_zipped_doctest.test_debug,
-                test_zipped_doctest.test_pdb_set_trace,
-                test_zipped_doctest.test_pdb_set_trace_nested,
-                test_zipped_doctest.test_testsource,
-                test_zipped_doctest.test_trailing_space_in_test,
-                test_zipped_doctest.test_DocTestSuite,
-                test_zipped_doctest.test_DocTestFinder,
-            ]
-            # These remaining tests are the ones which need access
-            # to the data files, so we don't run them
-            fail_due_to_missing_data_files = [
-                test_zipped_doctest.test_DocFileSuite,
-                test_zipped_doctest.test_testfile,
-                test_zipped_doctest.test_unittest_reportflags,
-            ]
-            # Needed for test_DocTestParser and test_debug
-            deprecations = [
-                # Ignore all warnings about the use of class Tester in this module.
-                ("class Tester is deprecated", DeprecationWarning)]
-            if sys.py3kwarning:
-                deprecations += [
-                    ("backquote not supported", SyntaxWarning),
-                    ("execfile.. not supported", DeprecationWarning)]
-            with test.test_support.check_warnings(*deprecations):
-                for obj in known_good_tests:
-                    _run_object_doctest(obj, test_zipped_doctest)
-
-    def test_doctest_main_issue4197(self):
-        test_src = textwrap.dedent("""\
-                    class Test:
-                        ">>> 'line 2'"
-                        pass
-
-                    import doctest
-                    doctest.testmod()
-                    """)
-        pattern = 'File "%s", line 2, in %s'
-        with temp_dir() as d:
-            script_name = make_script(d, 'script', test_src)
-            exit_code, data = run_python(script_name)
-            expected = pattern % (script_name, "__main__.Test")
-            if verbose:
-                print "Expected line", expected
-                print "Got stdout:"
-                print data
-            self.assertIn(expected, data)
-            zip_name, run_name = make_zip_script(d, "test_zip",
-                                                script_name, '__main__.py')
-            exit_code, data = run_python(zip_name)
-            expected = pattern % (run_name, "__main__.Test")
-            if verbose:
-                print "Expected line", expected
-                print "Got stdout:"
-                print data
-            self.assertIn(expected, data)
-
-    def test_pdb_issue4201(self):
-        test_src = textwrap.dedent("""\
-                    def f():
-                        pass
-
-                    import pdb
-                    pdb.runcall(f)
-                    """)
-        with temp_dir() as d:
-            script_name = make_script(d, 'script', test_src)
-            p = spawn_python(script_name)
-            p.stdin.write('l\n')
-            data = kill_python(p)
-            self.assertIn(script_name, data)
-            zip_name, run_name = make_zip_script(d, "test_zip",
-                                                script_name, '__main__.py')
-            p = spawn_python(zip_name)
-            p.stdin.write('l\n')
-            data = kill_python(p)
-            self.assertIn(run_name, data)
-
-
-def test_main():
-    test.test_support.run_unittest(ZipSupportTests)
-    test.test_support.reap_children()
-
-if __name__ == '__main__':
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zlib.py
deleted file mode 100644
index 5d222e5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_zlib.py
+++ /dev/null
@@ -1,572 +0,0 @@
-import unittest
-from test.test_support import TESTFN, run_unittest, import_module, unlink, requires
-import binascii
-import random
-from test.test_support import precisionbigmemtest, _1G, _4G
-import sys
-
-try:
-    import mmap
-except ImportError:
-    mmap = None
-
-zlib = import_module('zlib')
-
-
-class ChecksumTestCase(unittest.TestCase):
-    # checksum test cases
-    def test_crc32start(self):
-        self.assertEqual(zlib.crc32(""), zlib.crc32("", 0))
-        self.assertTrue(zlib.crc32("abc", 0xffffffff))
-
-    def test_crc32empty(self):
-        self.assertEqual(zlib.crc32("", 0), 0)
-        self.assertEqual(zlib.crc32("", 1), 1)
-        self.assertEqual(zlib.crc32("", 432), 432)
-
-    def test_adler32start(self):
-        self.assertEqual(zlib.adler32(""), zlib.adler32("", 1))
-        self.assertTrue(zlib.adler32("abc", 0xffffffff))
-
-    def test_adler32empty(self):
-        self.assertEqual(zlib.adler32("", 0), 0)
-        self.assertEqual(zlib.adler32("", 1), 1)
-        self.assertEqual(zlib.adler32("", 432), 432)
-
-    def assertEqual32(self, seen, expected):
-        # 32-bit values masked -- checksums on 32- vs 64- bit machines
-        # This is important if bit 31 (0x08000000L) is set.
-        self.assertEqual(seen & 0x0FFFFFFFFL, expected & 0x0FFFFFFFFL)
-
-    def test_penguins(self):
-        self.assertEqual32(zlib.crc32("penguin", 0), 0x0e5c1a120L)
-        self.assertEqual32(zlib.crc32("penguin", 1), 0x43b6aa94)
-        self.assertEqual32(zlib.adler32("penguin", 0), 0x0bcf02f6)
-        self.assertEqual32(zlib.adler32("penguin", 1), 0x0bd602f7)
-
-        self.assertEqual(zlib.crc32("penguin"), zlib.crc32("penguin", 0))
-        self.assertEqual(zlib.adler32("penguin"),zlib.adler32("penguin",1))
-
-    def test_abcdefghijklmnop(self):
-        """test issue1202 compliance: signed crc32, adler32 in 2.x"""
-        foo = 'abcdefghijklmnop'
-        # explicitly test signed behavior
-        self.assertEqual(zlib.crc32(foo), -1808088941)
-        self.assertEqual(zlib.crc32('spam'), 1138425661)
-        self.assertEqual(zlib.adler32(foo+foo), -721416943)
-        self.assertEqual(zlib.adler32('spam'), 72286642)
-
-    def test_same_as_binascii_crc32(self):
-        foo = 'abcdefghijklmnop'
-        self.assertEqual(binascii.crc32(foo), zlib.crc32(foo))
-        self.assertEqual(binascii.crc32('spam'), zlib.crc32('spam'))
-
-    def test_negative_crc_iv_input(self):
-        # The range of valid input values for the crc state should be
-        # -2**31 through 2**32-1 to allow inputs artifically constrained
-        # to a signed 32-bit integer.
-        self.assertEqual(zlib.crc32('ham', -1), zlib.crc32('ham', 0xffffffffL))
-        self.assertEqual(zlib.crc32('spam', -3141593),
-                         zlib.crc32('spam',  0xffd01027L))
-        self.assertEqual(zlib.crc32('spam', -(2**31)),
-                         zlib.crc32('spam',  (2**31)))
-
-
-class ExceptionTestCase(unittest.TestCase):
-    # make sure we generate some expected errors
-    def test_badlevel(self):
-        # specifying compression level out of range causes an error
-        # (but -1 is Z_DEFAULT_COMPRESSION and apparently the zlib
-        # accepts 0 too)
-        self.assertRaises(zlib.error, zlib.compress, 'ERROR', 10)
-
-    def test_badcompressobj(self):
-        # verify failure on building compress object with bad params
-        self.assertRaises(ValueError, zlib.compressobj, 1, zlib.DEFLATED, 0)
-        # specifying total bits too large causes an error
-        self.assertRaises(ValueError,
-                zlib.compressobj, 1, zlib.DEFLATED, zlib.MAX_WBITS + 1)
-
-    def test_baddecompressobj(self):
-        # verify failure on building decompress object with bad params
-        self.assertRaises(ValueError, zlib.decompressobj, -1)
-
-    def test_decompressobj_badflush(self):
-        # verify failure on calling decompressobj.flush with bad params
-        self.assertRaises(ValueError, zlib.decompressobj().flush, 0)
-        self.assertRaises(ValueError, zlib.decompressobj().flush, -1)
-
-
-class BaseCompressTestCase(object):
-    def check_big_compress_buffer(self, size, compress_func):
-        _1M = 1024 * 1024
-        fmt = "%%0%dx" % (2 * _1M)
-        # Generate 10MB worth of random, and expand it by repeating it.
-        # The assumption is that zlib's memory is not big enough to exploit
-        # such spread out redundancy.
-        data = ''.join([binascii.a2b_hex(fmt % random.getrandbits(8 * _1M))
-                        for i in range(10)])
-        data = data * (size // len(data) + 1)
-        try:
-            compress_func(data)
-        finally:
-            # Release memory
-            data = None
-
-    def check_big_decompress_buffer(self, size, decompress_func):
-        data = 'x' * size
-        try:
-            compressed = zlib.compress(data, 1)
-        finally:
-            # Release memory
-            data = None
-        data = decompress_func(compressed)
-        # Sanity check
-        try:
-            self.assertEqual(len(data), size)
-            self.assertEqual(len(data.strip('x')), 0)
-        finally:
-            data = None
-
-
-class CompressTestCase(BaseCompressTestCase, unittest.TestCase):
-    # Test compression in one go (whole message compression)
-    def test_speech(self):
-        x = zlib.compress(HAMLET_SCENE)
-        self.assertEqual(zlib.decompress(x), HAMLET_SCENE)
-
-    def test_speech128(self):
-        # compress more data
-        data = HAMLET_SCENE * 128
-        x = zlib.compress(data)
-        self.assertEqual(zlib.decompress(x), data)
-
-    def test_incomplete_stream(self):
-        # An useful error message is given
-        x = zlib.compress(HAMLET_SCENE)
-        self.assertRaisesRegexp(zlib.error,
-            "Error -5 while decompressing data: incomplete or truncated stream",
-            zlib.decompress, x[:-1])
-
-    # Memory use of the following functions takes into account overallocation
-
-    @precisionbigmemtest(size=_1G + 1024 * 1024, memuse=3)
-    def test_big_compress_buffer(self, size):
-        compress = lambda s: zlib.compress(s, 1)
-        self.check_big_compress_buffer(size, compress)
-
-    @precisionbigmemtest(size=_1G + 1024 * 1024, memuse=2)
-    def test_big_decompress_buffer(self, size):
-        self.check_big_decompress_buffer(size, zlib.decompress)
-
-
-class CompressObjectTestCase(BaseCompressTestCase, unittest.TestCase):
-    # Test compression object
-    def test_pair(self):
-        # straightforward compress/decompress objects
-        data = HAMLET_SCENE * 128
-        co = zlib.compressobj()
-        x1 = co.compress(data)
-        x2 = co.flush()
-        self.assertRaises(zlib.error, co.flush) # second flush should not work
-        dco = zlib.decompressobj()
-        y1 = dco.decompress(x1 + x2)
-        y2 = dco.flush()
-        self.assertEqual(data, y1 + y2)
-
-    def test_compressoptions(self):
-        # specify lots of options to compressobj()
-        level = 2
-        method = zlib.DEFLATED
-        wbits = -12
-        memlevel = 9
-        strategy = zlib.Z_FILTERED
-        co = zlib.compressobj(level, method, wbits, memlevel, strategy)
-        x1 = co.compress(HAMLET_SCENE)
-        x2 = co.flush()
-        dco = zlib.decompressobj(wbits)
-        y1 = dco.decompress(x1 + x2)
-        y2 = dco.flush()
-        self.assertEqual(HAMLET_SCENE, y1 + y2)
-
-    def test_compressincremental(self):
-        # compress object in steps, decompress object as one-shot
-        data = HAMLET_SCENE * 128
-        co = zlib.compressobj()
-        bufs = []
-        for i in range(0, len(data), 256):
-            bufs.append(co.compress(data[i:i+256]))
-        bufs.append(co.flush())
-        combuf = ''.join(bufs)
-
-        dco = zlib.decompressobj()
-        y1 = dco.decompress(''.join(bufs))
-        y2 = dco.flush()
-        self.assertEqual(data, y1 + y2)
-
-    def test_decompinc(self, flush=False, source=None, cx=256, dcx=64):
-        # compress object in steps, decompress object in steps
-        source = source or HAMLET_SCENE
-        data = source * 128
-        co = zlib.compressobj()
-        bufs = []
-        for i in range(0, len(data), cx):
-            bufs.append(co.compress(data[i:i+cx]))
-        bufs.append(co.flush())
-        combuf = ''.join(bufs)
-
-        self.assertEqual(data, zlib.decompress(combuf))
-
-        dco = zlib.decompressobj()
-        bufs = []
-        for i in range(0, len(combuf), dcx):
-            bufs.append(dco.decompress(combuf[i:i+dcx]))
-            self.assertEqual('', dco.unconsumed_tail, ########
-                             "(A) uct should be '': not %d long" %
-                                       len(dco.unconsumed_tail))
-        if flush:
-            bufs.append(dco.flush())
-        else:
-            while True:
-                chunk = dco.decompress('')
-                if chunk:
-                    bufs.append(chunk)
-                else:
-                    break
-        self.assertEqual('', dco.unconsumed_tail, ########
-                         "(B) uct should be '': not %d long" %
-                                       len(dco.unconsumed_tail))
-        self.assertEqual(data, ''.join(bufs))
-        # Failure means: "decompressobj with init options failed"
-
-    def test_decompincflush(self):
-        self.test_decompinc(flush=True)
-
-    def test_decompimax(self, source=None, cx=256, dcx=64):
-        # compress in steps, decompress in length-restricted steps
-        source = source or HAMLET_SCENE
-        # Check a decompression object with max_length specified
-        data = source * 128
-        co = zlib.compressobj()
-        bufs = []
-        for i in range(0, len(data), cx):
-            bufs.append(co.compress(data[i:i+cx]))
-        bufs.append(co.flush())
-        combuf = ''.join(bufs)
-        self.assertEqual(data, zlib.decompress(combuf),
-                         'compressed data failure')
-
-        dco = zlib.decompressobj()
-        bufs = []
-        cb = combuf
-        while cb:
-            #max_length = 1 + len(cb)//10
-            chunk = dco.decompress(cb, dcx)
-            self.assertFalse(len(chunk) > dcx,
-                    'chunk too big (%d>%d)' % (len(chunk), dcx))
-            bufs.append(chunk)
-            cb = dco.unconsumed_tail
-        bufs.append(dco.flush())
-        self.assertEqual(data, ''.join(bufs), 'Wrong data retrieved')
-
-    def test_decompressmaxlen(self, flush=False):
-        # Check a decompression object with max_length specified
-        data = HAMLET_SCENE * 128
-        co = zlib.compressobj()
-        bufs = []
-        for i in range(0, len(data), 256):
-            bufs.append(co.compress(data[i:i+256]))
-        bufs.append(co.flush())
-        combuf = ''.join(bufs)
-        self.assertEqual(data, zlib.decompress(combuf),
-                         'compressed data failure')
-
-        dco = zlib.decompressobj()
-        bufs = []
-        cb = combuf
-        while cb:
-            max_length = 1 + len(cb)//10
-            chunk = dco.decompress(cb, max_length)
-            self.assertFalse(len(chunk) > max_length,
-                        'chunk too big (%d>%d)' % (len(chunk),max_length))
-            bufs.append(chunk)
-            cb = dco.unconsumed_tail
-        if flush:
-            bufs.append(dco.flush())
-        else:
-            while chunk:
-                chunk = dco.decompress('', max_length)
-                self.assertFalse(len(chunk) > max_length,
-                            'chunk too big (%d>%d)' % (len(chunk),max_length))
-                bufs.append(chunk)
-        self.assertEqual(data, ''.join(bufs), 'Wrong data retrieved')
-
-    def test_decompressmaxlenflush(self):
-        self.test_decompressmaxlen(flush=True)
-
-    def test_maxlenmisc(self):
-        # Misc tests of max_length
-        dco = zlib.decompressobj()
-        self.assertRaises(ValueError, dco.decompress, "", -1)
-        self.assertEqual('', dco.unconsumed_tail)
-
-    def test_clear_unconsumed_tail(self):
-        # Issue #12050: calling decompress() without providing max_length
-        # should clear the unconsumed_tail attribute.
-        cdata = "x\x9cKLJ\x06\x00\x02M\x01"     # "abc"
-        dco = zlib.decompressobj()
-        ddata = dco.decompress(cdata, 1)
-        ddata += dco.decompress(dco.unconsumed_tail)
-        self.assertEqual(dco.unconsumed_tail, "")
-
-    def test_flushes(self):
-        # Test flush() with the various options, using all the
-        # different levels in order to provide more variations.
-        sync_opt = ['Z_NO_FLUSH', 'Z_SYNC_FLUSH', 'Z_FULL_FLUSH']
-        sync_opt = [getattr(zlib, opt) for opt in sync_opt
-                    if hasattr(zlib, opt)]
-        data = HAMLET_SCENE * 8
-
-        for sync in sync_opt:
-            for level in range(10):
-                obj = zlib.compressobj( level )
-                a = obj.compress( data[:3000] )
-                b = obj.flush( sync )
-                c = obj.compress( data[3000:] )
-                d = obj.flush()
-                self.assertEqual(zlib.decompress(''.join([a,b,c,d])),
-                                 data, ("Decompress failed: flush "
-                                        "mode=%i, level=%i") % (sync, level))
-                del obj
-
-    def test_odd_flush(self):
-        # Test for odd flushing bugs noted in 2.0, and hopefully fixed in 2.1
-        import random
-
-        if hasattr(zlib, 'Z_SYNC_FLUSH'):
-            # Testing on 17K of "random" data
-
-            # Create compressor and decompressor objects
-            co = zlib.compressobj(zlib.Z_BEST_COMPRESSION)
-            dco = zlib.decompressobj()
-
-            # Try 17K of data
-            # generate random data stream
-            try:
-                # In 2.3 and later, WichmannHill is the RNG of the bug report
-                gen = random.WichmannHill()
-            except AttributeError:
-                try:
-                    # 2.2 called it Random
-                    gen = random.Random()
-                except AttributeError:
-                    # others might simply have a single RNG
-                    gen = random
-            gen.seed(1)
-            data = genblock(1, 17 * 1024, generator=gen)
-
-            # compress, sync-flush, and decompress
-            first = co.compress(data)
-            second = co.flush(zlib.Z_SYNC_FLUSH)
-            expanded = dco.decompress(first + second)
-
-            # if decompressed data is different from the input data, choke.
-            self.assertEqual(expanded, data, "17K random source doesn't match")
-
-    def test_empty_flush(self):
-        # Test that calling .flush() on unused objects works.
-        # (Bug #1083110 -- calling .flush() on decompress objects
-        # caused a core dump.)
-
-        co = zlib.compressobj(zlib.Z_BEST_COMPRESSION)
-        self.assertTrue(co.flush())  # Returns a zlib header
-        dco = zlib.decompressobj()
-        self.assertEqual(dco.flush(), "") # Returns nothing
-
-    def test_decompress_incomplete_stream(self):
-        # This is 'foo', deflated
-        x = 'x\x9cK\xcb\xcf\x07\x00\x02\x82\x01E'
-        # For the record
-        self.assertEqual(zlib.decompress(x), 'foo')
-        self.assertRaises(zlib.error, zlib.decompress, x[:-5])
-        # Omitting the stream end works with decompressor objects
-        # (see issue #8672).
-        dco = zlib.decompressobj()
-        y = dco.decompress(x[:-5])
-        y += dco.flush()
-        self.assertEqual(y, 'foo')
-
-    if hasattr(zlib.compressobj(), "copy"):
-        def test_compresscopy(self):
-            # Test copying a compression object
-            data0 = HAMLET_SCENE
-            data1 = HAMLET_SCENE.swapcase()
-            c0 = zlib.compressobj(zlib.Z_BEST_COMPRESSION)
-            bufs0 = []
-            bufs0.append(c0.compress(data0))
-
-            c1 = c0.copy()
-            bufs1 = bufs0[:]
-
-            bufs0.append(c0.compress(data0))
-            bufs0.append(c0.flush())
-            s0 = ''.join(bufs0)
-
-            bufs1.append(c1.compress(data1))
-            bufs1.append(c1.flush())
-            s1 = ''.join(bufs1)
-
-            self.assertEqual(zlib.decompress(s0),data0+data0)
-            self.assertEqual(zlib.decompress(s1),data0+data1)
-
-        def test_badcompresscopy(self):
-            # Test copying a compression object in an inconsistent state
-            c = zlib.compressobj()
-            c.compress(HAMLET_SCENE)
-            c.flush()
-            self.assertRaises(ValueError, c.copy)
-
-    if hasattr(zlib.decompressobj(), "copy"):
-        def test_decompresscopy(self):
-            # Test copying a decompression object
-            data = HAMLET_SCENE
-            comp = zlib.compress(data)
-
-            d0 = zlib.decompressobj()
-            bufs0 = []
-            bufs0.append(d0.decompress(comp[:32]))
-
-            d1 = d0.copy()
-            bufs1 = bufs0[:]
-
-            bufs0.append(d0.decompress(comp[32:]))
-            s0 = ''.join(bufs0)
-
-            bufs1.append(d1.decompress(comp[32:]))
-            s1 = ''.join(bufs1)
-
-            self.assertEqual(s0,s1)
-            self.assertEqual(s0,data)
-
-        def test_baddecompresscopy(self):
-            # Test copying a compression object in an inconsistent state
-            data = zlib.compress(HAMLET_SCENE)
-            d = zlib.decompressobj()
-            d.decompress(data)
-            d.flush()
-            self.assertRaises(ValueError, d.copy)
-
-    # Memory use of the following functions takes into account overallocation
-
-    @precisionbigmemtest(size=_1G + 1024 * 1024, memuse=3)
-    def test_big_compress_buffer(self, size):
-        c = zlib.compressobj(1)
-        compress = lambda s: c.compress(s) + c.flush()
-        self.check_big_compress_buffer(size, compress)
-
-    @precisionbigmemtest(size=_1G + 1024 * 1024, memuse=2)
-    def test_big_decompress_buffer(self, size):
-        d = zlib.decompressobj()
-        decompress = lambda s: d.decompress(s) + d.flush()
-        self.check_big_decompress_buffer(size, decompress)
-
-
-def genblock(seed, length, step=1024, generator=random):
-    """length-byte stream of random data from a seed (in step-byte blocks)."""
-    if seed is not None:
-        generator.seed(seed)
-    randint = generator.randint
-    if length < step or step < 2:
-        step = length
-    blocks = []
-    for i in range(0, length, step):
-        blocks.append(''.join([chr(randint(0,255))
-                               for x in range(step)]))
-    return ''.join(blocks)[:length]
-
-
-
-def choose_lines(source, number, seed=None, generator=random):
-    """Return a list of number lines randomly chosen from the source"""
-    if seed is not None:
-        generator.seed(seed)
-    sources = source.split('\n')
-    return [generator.choice(sources) for n in range(number)]
-
-
-
-HAMLET_SCENE = """
-LAERTES
-
-       O, fear me not.
-       I stay too long: but here my father comes.
-
-       Enter POLONIUS
-
-       A double blessing is a double grace,
-       Occasion smiles upon a second leave.
-
-LORD POLONIUS
-
-       Yet here, Laertes! aboard, aboard, for shame!
-       The wind sits in the shoulder of your sail,
-       And you are stay'd for. There; my blessing with thee!
-       And these few precepts in thy memory
-       See thou character. Give thy thoughts no tongue,
-       Nor any unproportioned thought his act.
-       Be thou familiar, but by no means vulgar.
-       Those friends thou hast, and their adoption tried,
-       Grapple them to thy soul with hoops of steel;
-       But do not dull thy palm with entertainment
-       Of each new-hatch'd, unfledged comrade. Beware
-       Of entrance to a quarrel, but being in,
-       Bear't that the opposed may beware of thee.
-       Give every man thy ear, but few thy voice;
-       Take each man's censure, but reserve thy judgment.
-       Costly thy habit as thy purse can buy,
-       But not express'd in fancy; rich, not gaudy;
-       For the apparel oft proclaims the man,
-       And they in France of the best rank and station
-       Are of a most select and generous chief in that.
-       Neither a borrower nor a lender be;
-       For loan oft loses both itself and friend,
-       And borrowing dulls the edge of husbandry.
-       This above all: to thine ownself be true,
-       And it must follow, as the night the day,
-       Thou canst not then be false to any man.
-       Farewell: my blessing season this in thee!
-
-LAERTES
-
-       Most humbly do I take my leave, my lord.
-
-LORD POLONIUS
-
-       The time invites you; go; your servants tend.
-
-LAERTES
-
-       Farewell, Ophelia; and remember well
-       What I have said to you.
-
-OPHELIA
-
-       'Tis in my memory lock'd,
-       And you yourself shall keep the key of it.
-
-LAERTES
-
-       Farewell.
-"""
-
-
-def test_main():
-    run_unittest(
-        ChecksumTestCase,
-        ExceptionTestCase,
-        CompressTestCase,
-        CompressObjectTestCase
-    )
-
-if __name__ == "__main__":
-    test_main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testall.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testall.py
deleted file mode 100644
index 9a1b724..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testall.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Backward compatibility -- you should use regrtest instead of this module.
-from warnings import warnpy3k
-warnpy3k("the test.testall module has been removed in Python 3.0",
-            stacklevel=2)
-del warnpy3k
-
-
-import sys, regrtest
-sys.argv[1:] = ["-vv"]
-regrtest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testcodec.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testcodec.py
deleted file mode 100644
index dc1340e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testcodec.py
+++ /dev/null
@@ -1,48 +0,0 @@
-""" Test Codecs (used by test_charmapcodec)
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright 2000 Guido van Rossum.
-
-"""#"
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-
-        return codecs.charmap_encode(input,errors,encoding_map)
-
-    def decode(self,input,errors='strict'):
-
-        return codecs.charmap_decode(input,errors,decoding_map)
-
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-
-    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
-
-### Decoding Map
-
-decoding_map = codecs.make_identity_dict(range(256))
-decoding_map.update({
-        0x78: u"abc", # 1-n decoding mapping
-        "abc": 0x0078,# 1-n encoding mapping
-        0x01: None,   # decoding mapping to <undefined>
-        0x79: u"",    # decoding mapping to <remove character>
-})
-
-### Encoding Map
-
-encoding_map = {}
-for k,v in decoding_map.items():
-    encoding_map[v] = k
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testimg.uue b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testimg.uue
deleted file mode 100644
index 1c0b494..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testimg.uue
+++ /dev/null
@@ -1,1170 +0,0 @@
-begin 755 test.rawimg
-M___Y^/\A$Q3_*1LC_QL4'/\;%AS_%Q(6_QP7&?\B&AW_'A<7_QT5&/\7$A3_
-M&108_Q84%O\7%1?_$Q 6_Q<3'/\:$Q__'1<;_R$:&O\5$Q7_'!D8_SHW-O\\
-M.CW_141*_TE)3/]/3U+_'1DA_R,<)O\B'"3_249,_T=$2O]$0D7_.3<Z_T1"
-M1?].3$__44]2_QD2'/\;%![_*24M_U166_]55US_55=<_UQ>8_]<7F/_%1$9
-M_QH6'O\B(2C_65A>_U587?]87%[_65M>_Q@5&_\@'"3_%Q8<_U%34?]<6E7_
-M5U9/_U-14_\:%A__'AHB_TA&2/\]/CC_24I$_RDG*O\B'B;_)",I_UI;7/];
-M65;_7EA6_X%\?/^!?GW_7E]@_U!45O]45US_4U5:_U)46_].4%?_2TU4_T9(
-M3_]#14S_1$E/_TA)4/](1T[_1D=._TI/5?])2E'_2$=._T-%3/])2U+_2$E0
-M_T9'3O]#1$O_0D1,_T!"2O]#14S_1DE._T5(3?]$1TS_0$-(_T1'3/]!0TC_
-M0T)(_S\^1/]#0DC_04-(_SD\0?\[0$7_0#]%_SY 1?\Z/$'_.CQ!_SH\0?\[
-M.S[_/SU _Q43%O\E(R;_%Q48_S0R-?\7%1C_)R4H_Q02%?\2$!/_%!(5_Q,1
-M%/\5$Q;_^>[U_SXT/O\F'"O_'QDA_QD4&/\6$17_%1 4_Q<2%O\:%1G_&!,7
-M_Q40%/\8$Q?_%Q03_Q<3%?\:%1O_'1<?_QL4'O\L)RW_(1T?_QP7&_\5$Q;_
-M'AP?_QT;'O\<&AW_03]"_TE'2O\:%A[_'AHC_QT8'/\8%!;_'!@:_Q\;'?\@
-M&Q__(ATA_R0?(_\H(R?_&1,;_Q@4'/\='R3_2T]1_TU/4O]04%/_45%4_U14
-M5_\7$QO_&14=_R\M,/]I:6;_5597_U%34?]14$__'!<=_R,<*/\8%1O_6%A5
-M_UA85?];6%/_5%!2_QL7(/\;&B'_6%98_UM:4_];653_)2(A_R$=)?\<&1__
-M7UU@_T=%1_\M*RW_(B B_R@G)O]24TW_>7YX_Y&1CO]O:FS_5U=:_U)45_]1
-M4U;_4%)7_TY/5O])4%;_2$]5_T1(4/]%1E'_1DA0_T=)4/]&2$__1$9-_T%#
-M2O]$1DW_04-*_T!"2?] 0DG_04-*_T1&3?]!0TK_/D%&_T)%2O]!1$G_1$=,
-M_T%#2O]!0TK_/3]&_T!"2?] 0D?_/D!%_S]!1O\^0$7_.3M _ST_1/\\/D/_
-M.CQ!_ST[/O\W-3?_,C R_S N,/\M*2O_)B(D_Q82%/\7$Q7_%1 4_Q(-$?\7
-M$A;_%1 4_Q81%?__]?K_+R4N_T<^2_\A'"+_&A49_Q81%?\5$!3_&!,7_Q81
-M%?\6$17_%1 4_Q@3%_\7$1G_%Q(8_PT(#/]V<G3_241*_QD5%_\:&!/_&!44
-M_Q(0$_\5$Q;_%1,6_Q,1%/\3$13_#0L._QD5'?\=&2+_'1@<_Q@4%O\3#Q'_
-M%! 2_Q<2%O\6$17_&108_QP7&_\4$!C_%Q,;_QX;(?\=&Q[_(1\A_S$O,?\_
-M/3__3$I,_Q<3&_\9%1W_)2,F_U%13O]14U'_3U),_U)23_\=&!S_(QPF_QH7
-M'?]965;_5552_U933O]85%;_&Q<@_QD8'_]85U;_65I4_UA94O\E(R7_'!LA
-M_QL:(/]<6V'_75QB_V%@9O\7%AS_)"0G_U=86?]04$W_5U%/_UY65/]64E#_
-M>GUW_V!C7?]765?_5E=8_TQ15O]+3U?_2E!:_T=*5O].4%C_2DQ3_T=)4/]'
-M25#_14=._T9(3_]'25#_1$9-_SY 1_] 0DG_.SU$_T-%3/] 0TC_041)_TI-
-M4O\^04;_/T%(_S]!2/\^0$?_0D1+_SY 1?\^0$7_/T%&_SY 1?\Z.CW_,C(U
-M_RTM,/\G)RK_*RDK_R@F*/\J*"K_(R$C_R4A(_\I)2?_(AX@_RXJ+/\9%!C_
-M% \3_Q@3%_\3#A+_&!,7__KQ\?\@%Q[_&Q0<_QL6&O\8$Q?_%1 4_Q40%/\5
-M$!3_%1 4_Q40%/\4#Q/_%Q(6_Q<3%?\7$A;_$PX2_Q@3&?\<%1__&!,7_Q42
-M$?\4$!+_$0\2_Q(0$_\3$13_$Q$4_Q,1%/\4$A7_%A(:_QP8(?\;%AK_'!@:
-M_Q\;'?\;%QG_%Q(6_Q40%/\5$!3_% \3_Q,/%_\7$QO_'AD?_Q\9'?\=&1O_
-M(R ?_R<D(_\A'AW_%A(:_Q@4'/\@'B'_2TM(_TU/3/].4DK_3D](_QP8&O\>
-M%R'_&Q@>_U964_]:6E?_7%E4_UE55_\8%!W_&AD@_V!?9?]=7E__86)C_ST\
-M0_\6%Q[_&QTB_V%B:?]B8FO_86%L_Q<7(/\B(RK_3E!5_U-56O]74EC_)Q\C
-M_R4D(_];6UC_75Y8_VMJ:?^5DY7_A(""_UE65?]86%O_4U5:_U!26?].4%?_
-M2TU4_TE+4O]+353_1TE0_T)$2_]$1DW_1$9-_T-%3/]!0TK_04-*_SY!1O] 
-M0TC_0$-(_T%$2?\\/D7_/3]&_ST_1O\^0$?_/3]$_SP^0_\]/T3_.#H__S(P
-M,_\J*"K_*RDK_R@F*/\H)BC_*2<I_R<E)_\D(B3_)R,E_R@D)O\I)2?_*24G
-M_R4@)/\8$Q?_%Q(6_Q@3%_\4#Q/_^_+R_R8;(/\;$AG_%Q,5_Q@3%_\5$!3_
-M%1 4_Q40%/\5$!3_%1 4_Q0/$_\7$A;_%Q,5_Q<3%?\5$!3_&!$;_S0J.?\:
-M$QO_%1 4_Q0/%?\1#Q+_$A 3_Q$/$O\/#1#_#0T0_Q 0$_\?'"+_&Q<?_Q81
-M%?\5$1/_$P\1_Q00$O\2#1'_$PX2_Q(-$?\3#A+_$1 7_Q<3&_\8$AK_&1$5
-M_QD4%O\M*"C_14$__STZ.?\6$AK_&!0=_RDF+/]245#_35%/_U%34/]24TW_
-M)R0C_R <)?\='"+_6UU;_V-B8?]=6UC_9V-E_QD5'O\:&"'_6EIC_V)C:O]H
-M:7#_1450_Q46'?\:'"'_7U]H_V1D;_]B8FW_$A(=_QL;)/]A8FG_7F!H_V%?
-M:/\?&R/_'!XC_SY /O\Z.#K_'AP?_R@E*_]:55#_8%M6_W9R</]D86#_5EA;
-M_U=97/]:7&'_45-8_TQ15_]*3E;_14E1_TA*4?]%1T[_149-_T-%3/]%1T[_
-M0D5*_SP_1/\]0$7_041)_SU 1?\^0$?_/#Y%_SP^1?\X.C__.CD__RPK,?\I
-M*"[_+BPN_RHH*O\J*"K_)R4G_RDG*?\E(R7_*"8H_R4C)?\F(B3_)R,E_R(>
-M(/\E(2/_)B$E_R,>(O\W,C;_)!\C_Q81%?_\\//_'A07_S$I+/\L)RG_'!<;
-M_Q0/$_\5$!3_% \3_Q40%/\5$!3_% \3_Q<2%O\3#QC_%Q(8_Q@3%_\8$1G_
-M$PP3_Q<1%?\5$!3_$1$4_Q(0$_\2$!/_$0\2_Q$/$O\0$!/_#0\2_Q43%O\@
-M&Q__%1,6_Q(0$_\1#Q+_$0\2_Q$/$O\0#A'_$0\2_Q .$?\1$A/_&!<>_Q@4
-M'/\A'1__$0\1_TI&1/]54$K_(R(A_Q,1&O\5$QS_+2PR_U-45?]-4%7_5EE>
-M_UY=8_\P+3/_'!@@_Q<8'_]>8VG_8F%H_V)A9_]C8FG_&!8?_Q<4(/]>7V;_
-M8&%H_V!A:/]45EO_&QHA_Q@7'O]E9&K_961J_U]>9/\9%R#_'!HC_TU-4/\Q
-M,S#_)R<J_QL:(?\9&![_04 __RTK+O\@'"3_)R0J_T ]./]"/D#_(1XD_Q\?
-M(O]D95__@H-]_Y:5E/]G96C_55E;_U587?].4%?_2DI3_TA'3O]&1T[_14=.
-M_T%&3/\^0TC_0$5*_SY#2/\]0D?_/D!#_SX^0?\T-#?_+R\R_RPJ+?\K*2S_
-M*B@K_RHH*_\K*2O_*"8H_RDG*?\H)BC_*2<J_R8D)_\E(R;_)2,F_R8D)O\D
-M(B3_)"(D_R0B)/\D(B3_)"(D_R(@(O\F)";_$@X0___V^?\@&!O_'AD;_QD5
-M%_\9%!C_%Q(6_QP7&_\9%!C_%A$5_Q81%?\5$!3_&!,7_Q<1%?\@&QO_%Q03
-M_Q<4&O\>("7_'B C_R@L+O\;'R'_$1$4_Q$1%/\0$!/_$! 3_Q(0$_\3#A+_
-M&A08_W!H;/\7$A;_$A 3_Q$/$O\1#Q+_$0\2_Q .$?\1#Q+_$ X1_QD9'/]/
-M2U/_-S(X_R,@&_\].S/_5U!$_UI00?]>5TO_&A4;_Q@4'/\X-CG_/#LZ_SY!
-M0O]14UC_45)9_RPM-/\?&R/_%Q@?_V%F;/]H9V[_;6QR_V]N=?\6%!W_&Q@D
-M_UU;9/]F9FG_9VAI_UM:8/\8%A__&AD@_V-C9O]H:FC_969G_Q85'/\4$QK_
-M5E=8_U]A7O]65EG_%A4<_QD8'O] /S[_)R4H_QH6'O\B'R7_9V-A_V%<8/\<
-M&"#_(2 F_T=%1_\>'![_*"8H_UY<7O]Z=7#_J:&=_W=R=/];6%[_5%5<_TY.
-M5_]$1D[_/4-+_S@[0/\Y/$'_+S(W_RDL,?\K*2S_+RHN_RTH+/\M*"S_*RDL
-M_R@H*_\F)BG_)B8I_R8F*?\E)2C_*"@K_R<G*O\G)RK_)"0G_R0D)_\E)2C_
-M*"8H_R<E)_\E(R7_)2,E_R4C)?\E(R7_*"8H_R(@(O\M*2O_^/#S_RDD)O\=
-M&1O_&QD;_WQW>_\6$17_&A49_QD4&/\8$Q?_&!,7_Q\:'O\F(27_2T5#_Y"+
-MA?^+B83_'Q\B_V)G;/]26%K_2DY0_S<W.O\K+3#_*"HM_R0F*?\:'!__%148
-M_Q04%_\9%!C_$PT1_Q(0$_\3$13_$0\2_Q$/$O\0#A'_$0\2_Q$/$O\0#A'_
-M$0X4_SXX0/\=%QO_)R,;_TI%.?]>4D/_;%E'_W5@5/\I(27_,BTS_T1 0O]"
-M0#W_55!*_U%,1O]'0D+_.C4Y_Q\;(_\7&!__4UA>_U-26?]/3E3_5U9=_Q@6
-M'_\[.$3_,R\X_UM96_];7%;_6%99_QH7(_\9&!__6UQ=_U]C6_]@8F#_&!<=
-M_QH9'_]?85__8&)?_UY>8?\8%Q[_%Q8<_T5$0_\V-#?_&!0<_QT:(/]K9F;_
-M;6AN_QD5'O\<&R+_;VQR_QT:(/\C(23_5U57_R8@)/\L)"C_4DU-_UM65O^ 
-M>WO_A8""_T1 0O\T,C3_)"0G_Q\>)/\;&B#_$A$7_R(B)?\H)BG_*RDL_S(P
-M,_\R-#?_-SD\_SD[/O\Z/#__.3M _S@Z/_\V.#W_-3<\_S(T-_\L+C'_*"HM
-M_R<I+/\J*"K_*"8H_R@F*/\H)BC_)R4G_R<E)_\F)";_*"8H_QD5%__\]/?_
-M)R(D_QD7&?\6%QC_DI"3_Q\:'O\8$Q?_&!,7_Q<2%O\4$A7_%1,6_QD4&/]$
-M/#C_EY&'_YF8D?_!Q,7_M+F^_Z^SM?^VM+?_P;F]_V5C9?]G:FO_76!A_S,V
-M-_\D*2G_(28F_R C)/\C)"7_(B B_QT;'O\8%AG_%A07_Q .$?\3#A+_$PX2
-M_Q(-$?\B'2'_/SD]_RPF)/]>5TO_:V%6_UU/0/]\9%7_?F19_RT>(O\H(RG_
-M-S,U_SX[-O]E6D__85=)_U=,1?\\-C3_&A8>_Q<8'_\\/T3_/3Q"_QX;(?\<
-M&R'_#PT6_R8B*_\M(B?_)2(=_UI<4_]3453_&Q@D_QD9(O]97%W_5UQ6_UI<
-M6?\9&1S_&1@>_UYB8/]O<6__9&1G_Q@7'O\<&R'_/T$__RDI+/\9%1W_'1DA
-M_S\]/_\=&B#_&14>_Q<6'?\Q,#;_&Q@>_QP:'?]J:6C_(A\K_R =*?]02T__
-M3$9$_RHB'O\H(!S_3TI%_VAE8/^)A8?_6%99_TE'2O\5%!K_24Q1_T9)3O\\
-M/T3_0$-(_SY!1O]"14K_14A-_T!#2/]!1$G_/T!'_SH[0O\\/43_.3M _SL]
-M0/\]/T+_+S$T_RLL+?\L*BS_*2<I_RDG*?\H)BC_*"8H_R@F*/\=&QW_%A(4
-M__;R\/\_.CK_+2LM_R<G*O^:F)O_&!,7_Q@3%_\9%!C_'!@:_Q43%?\:'1[_
-M&!89_Q\;&?^:E8__F92._];9VO_/T]7_T-#3_\W(RO_+O\#_8E97_T="0O]_
-M@7__8E]>_U-34/]"0C__,S,P_RXN*_\X.S7_-#8S_RLM*_\C(R;_'!D8_Q83
-M$O\1#!#_%1 6_R 9&?]%0SS_5E-(_VUC5?^ <F/_<V56_VY<3O]O6TW_74Y/
-M_UM77_\H*S#_14(]_V=;4O]F64S_6U!%_TI&1/\C'R?_&A@;_U554O\>'1S_
-M&A45_QD6'/\8%Q[_'QD=_T@N(?]*."K_4E-,_T9%2_\@&R?_%QDA_UYG;?]B
-M9VS_:&=F_QT:(/\;&R;_0D1,_S@Z/?\M+#/_&!8?_Q85&_\\03W_#0\2_Q01
-M'?\8%A__$1D=_T5'3/\8%1O_%!8;_TQ.3/\:&!O_(R F_V9D9O\L*#'_'QLC
-M_VAF:/]=6F#_(R F_T9$1_\A'R+_)"(E_U!*2/]%/SW_1D1'_Q45'O]B9&G_
-M4$]5_TQ+4?])2$[_24M0_T9(3?\_04;_0$)'_TU,4O\U-#K_,"\U_RTL,O\K
-M*C#_*RHP_RHI+_\I*"[_)R<J_RDJ*_\I*BO_*2HK_RLI+/\I)RK_*B@K_QL9
-M'/\9%1?_\_7R_SP^//\A'R'_CXJ._T]-4/\6%!?_%Q48_Q43%O\C&Q__&108
-M_QT@(?\6&!;_&Q\=_Y"1B_^BFY7_U<_-_];+RO_5R<7_T\K$_\W'O_^>DI/_
-M% \1_QD:&_\;%QG_&!,3_QD4%/\>&1G_%A$1_R4F(/\R-2__0$,]_T)%/_\R
-M,B__+BXK_R$@'_\1#Q'_(!L;_T1"._]$03;_7%)$_WIK7O]31#?_0C,F_U-"
-M-?]:2TO_'AD?_R,E*/]234?_;6)7_V582_]K7E'_95Q5_U)-4?].2TK_:FAC
-M_Q41$_\6$A3_&A<=_Q83&?\J'A__6#TL_TTX)O]H7UC_;FIL_QX7(?\@'R;_
-M4UM?_V%E9_^)B(?_%!$7_Q<3'/^"@(/_?X%^_V-C9O\8%A__%!,9_TY,1_\6
-M$Q+_&14>_Q@7'O\8("3_5%9;_Q,0%O\@(B?_65I;_Q,2&/\H)R[_9&1G_S0P
-M.?\?&R/_9V5G_V%>9/\3$!;_5U58_QX<'_\C(23_96-F_QP;(?\6%A__1TI5
-M_R <'O]D7U__@GU]_UU86/].3$__2DI-_T]/4O]&1DG_0$)'_T)$2?\^0$7_
-M/3]$_SY 1?\Y.T#_/D!%_ST_1/\]/4#_/S]"_SX^0?\_/T+_/CY!_SP\/_\S
-M,S;_(" C_QH6&/_\^O?_*R@G_Q@6&/\;&1S_+2TP_Q@8&_\6%AG_%!07_QX=
-M)/\4%AO_%1@9_RDF(?\>'R#_CXZ-_YZ8D/_3SLG_T\O)_]7+Q__3RL3_R\6]
-M_Z.7F/\8$A;_&1D<_Q@3%_\<&!K_&A88_QP8&O\7$Q7_$1(3_QT>'_\;'1K_
-M)"<A_QP@&/] 0SW_)2<D_Q47%?\>&AC_24= _U932/]I7U'_>&9<_UA(/O]%
-M."W_4D<\_V)34_\:$A;_&!H8_W)L9/]E6U'_;6!3_VI:2O]S9EO_55!+_VEG
-M8/]:6%'_$PX0_Q40%/\5$AC_'QH<_T4V,?];/BS_2C =_Y:&??^&?W__)!TD
-M_RDF+/]B:&K_?'^ _XF*B_\7%!K_&Q8<_WMW=?]O<6C_8F1A_QH9(/\7%AS_
-M14 [_T])1_\;%1W_%1<<_QHB)O\Y.T#_&18<_Q06&_]'24S_#Q 7_QP<)?]0
-M4E?_-C$]_Q\;(_]A7V'_6%5;_Q,0%O]85EG_'AP?_Q\=(/\[.D#_&!<=_Q01
-M%_\6$QG_&108_Q(,$/\J)"C_2D1(_U)04O]T<G3_7%I<_UA66/]+35+_1TI/
-M_T9)3O]"14K_/T)'_SL^0_\X.T#_,S8[_RXP-?\N+3/_+BTS_RXM,_\K+3#_
-M*RTP_RXP,_\K+3#_(!X@___T]?\O)RK_&1D<_WM^?_^3E)7_%Q<:_QT=(/]I
-M96?_;6QR_Q(5&O\F)RC_'!00_RPH*O^0BXO_F)2,_\[-QO_4T=#_T<S,_];0
-MSO_*P+S_IIJ=_QX7'O\;&![_%1(8_Q46%_\3%!7_%A<8_Q 1$O\.#1/_'!LA
-M_Q@9&O\>(![_*"TG_SQ!._\K,"S_*S L_R\K*?]!/#;_5U%'_VA>4/]B4$;_
-M4$ V_T4Z+_]=4TC_7U)-_Q40$O\0$!/_;FEC_VQB6/][;F'_>6M<_X1W:O]C
-M7%;_8%Q4_W%L9O\>%AG_%1 6_Q(0$_\@&1G_5$$Y_V%#+?]4-R7_D'UU_X^'
-MA?\K)"O_8%]E_U!45O]04U3_3$U._P<&#/\C(23_14$__U)63?\F*"7_'ATC
-M_Q@7'?]-1D#_6%!._QL6'/\7%AS_*# T_U987?\;&![_%!8;_T1&2?\4%AO_
-M'1TH_T1&2_\M*S3_'QPB_TY,3O]/3%+_%!$7_UA66?\>'!__%A07_Q$,$/\:
-M%AC_&!,5_R$:&O\;%AS_$P\7_QL7'_\=&2'_'!H=_R >(?\?'2#_4E!3_V]Q
-M=/]565O_35%3_TI.4/]#2$W_/T1)_SY#2/\_1$G_0$%(_T-"2?]"04C_0D%(
-M_ST_1/\]04/_.CY _S8Z//\5$Q7_^O+U_S0O-?\D(RG_;VIJ_Y:2D/\>&1W_
-M+2@L_Z"5E/^+?WO_'1<;_QH9'_\=&QW_'1X?_Y60D/^>E8[_S\K%_];/S__8
-MS\__U,K&_]C,Q_^=E)3_&A47_QT9&_\5$Q7_%Q47_Q@6&/\:&!K_$Q$3_Q,1
-M$_\;&1O_'!H<_QP:'/\G+";_.3X\_RHO+_\F+"C_-30M_R\J)/]+13W_6U-)
-M_W]S:O]-03C_13LQ_TU%._]P8U;_(1D5_R\K+?]/1#W_<F58_WUP8_]]<F?_
-MAGMP_W!H7O]E8E?_<G!H_S8R-/\<&1__&QD;_RTH(O\Z*![_8D(L_T@O'O^^
-MKZK_:6%?_S$M+_]C9VG_86QM_UE?8?]46ES_-ST__SM!0_\L,C3_3U-5_Q$3
-M%O\-#1#_(!XA_SPY-/^-B(C_(1LC_R,@)O\Q-CO_7F!E_Q83&?\9&R#_2DM,
-M_R =(_\<&"#_)B0G_R$?(O\<&AW_2$9)_TI(2_\4$1?_44Y4_Q\<(O\0#1/_
-M%A$5_Q@3%_\4#Q/_&Q8:_QD6'/\5$AC_%A,9_QX;(?\:%QW_%!$7_QL8'O\;
-M&![_)2,E_R4C)?]'14?_=7-U_U]?8O].4%7_2DQ1_T-%2O]!0TC_/D!%_SP^
-M0_\[/4+_,3,V_S$S-O\T-CG_+S$T_QD7&O_X\//_1T)(_RLJ,/\?&AK_;V=E
-M_R0?(_\@(B7_(" =_R$>&?\5$Q;_&AD?_Q\7&O\N+"[_C8B(_YZ5CO_/RL7_
-MTLO+_]?.SO_<TL[_ULK%_Z"7E_\D'R'_'1D;_Q84%O\7%1?_&1<9_QH8&O\3
-M$1/_$A 2_QH8&O\<&AS_&A@:_R<L)O\W/#K_*B\O_R4K)_\O,2[_*"8C_SPY
-M-/]$/SG_1S\]_QL2$O\C'!S_'AD9_S,J)/]$/#C_4DU-_VA?6?]F6E'_<69;
-M_WIM8/^%=VC_>7%G_V9C6/]L:V#_-3,P_R >(?\B("+_*"0B_RT>&/]&*QK_
-M."$5_]3&P_^4C(K_'AH8_UU?7/]A;&?_6F!<_U]E8?]I;VO_76-?_SU#/_]*
-M3T__$1,6_P\/$O\6%!?_-S0O_TQ'1_\@&B+_&!4;_S0Y/O]<7F/_659<_S R
-M-_]045+_$@\5_R <)/\7%1C_%A07_QL9'/\6%!?_(!XA_Q42&/\D(2?_%!$7
-M_QX;(?\:%1G_&A49_Q81%?\4#Q/_%Q0:_Q83&?\8%1O_%1(8_Q83&?\4$1?_
-M%A,9_QD6'/\4$!C_(!PD_Q41&?\C'R?_-38W_U-54_]E9V7_2DQ*_TI,3_]$
-M1DG_04-&_SY 0_]"1$?_/T%$_SL]0/\^0$/_.3D\__OS]O\G(BC_(2 F_XZ)
-MB?]U;VW_*B4I_Q@6&?^]M[7_O;6Q_QP7&_\8%QW_&147_Q43%?^2C8W_GI6.
-M_\K%P/_6S\__W=34_]S2SO_2QL'_H)>7_Q\:'/\7$Q7_%1,5_Q84%O\9%QG_
-M'!H<_Q,1$_\3$1/_&A@:_QL9&_\;&1O_)"DC_S4Z./\N,S/_)BPH_S0U+_\L
-M*23_2T9 _TE#._]C657_65%-_TI%0/\Y-C'_,"PN_R0B)?\8%AG_&!89_QL7
-M&?\?&QG_+"4?_X!V;/]G6US_8EQ:_VEF8?] /3S_'AH<_QD7&?\T,B__)QP;
-M_THS)_\Y)1W_RKV\_X-Y=?\@&1G_+"HL_S,Z.O](2TS_*2HK_V%B8_]]?G__
-M$1(3_[.UN/\;'2#_%A89_QP:'?\I)B'_O;BX_V!:8O\;&![_,C<\_S@Z/_\?
-M'"+_*"HO_T!!0O\7%!K_)R,K_Q,1%/\,"@W_,C S_Q84%_\2$!/_'QPB_Q@5
-M&_\3$!;_$0X4_Q@3%_\9%!C_%A$5_Q40%/\2#Q7_&A<=_Q,0%O\2#Q7_&18<
-M_Q$.%/\:%QW_$Q 6_Q82&O\7$QO_%1$9_Q82&O\?'2#_+"HM_RTK+O]24%/_
-M24I+_T5(2?]$1TC_0T9'_S]!1/\^0$/_04-&_T)$1_] 0D7___C[_R(?)?\5
-M%AW_'QP;_SPV-/\@&Q__(QTA_RX?'_\G%Q3_(AH>_Q,5&O\1%!7_0$%"_XB&
-M@_^;E8W_Q\*]_];/S__=U-3_V]'-_]'%P?^>EY?_'!<9_Q82%/\4$A3_$ X0
-M_Q43%?\=&QW_$Q$3_Q<5%_\9%QG_,"XP_QH8&O\E*B;_,C<U_S,X./\D*B;_
-M/#@P_R@D'/]O;&?_8EQ4_W]U<?]L8US_;6A<_W!J8/]U:F/_<F9=_W-F6_]J
-M7%/_4DY,_U).4/]=6%/_;61=_VI>8?]%.C__'QH:_RXJ+/\;%1G_%Q,5_R0C
-M(O\?&AS_-"4?_R<9%O]74E3_>W-Q_R4=(/\E)"K_)BHL_R @(_\H)BG_&18<
-M_VAG;?\@'R7_G)ZA_Q<9'/\:&AW_'1L>_R,>&?_$P<#_:&=M_R,@)O\7&A__
-M%QD>_Q(/%?\8%QW_*RPM_QT;'O\@'"3_$Q$4_Q84%_\U,S;_#0L._Q84%_\Q
-M+C3_.#0\_QH6'O\;%Q__%Q(6_QH5&?\6$17_%1 4_Q83&?\7%!K_%!$7_Q83
-M&?\1#A3_$0X4_Q83&?\5$AC_%A,9_QL9'/\9%QK_&1<9_Q$-%?\3#Q?_.#0\
-M_RLH+O\G*2S_<G9T_U)44O]*34[_1$A*_T1&2?]#14C_1D9)_T9(2___\O/_
-M*B4I_R B*?]"/D#_0SLY_S4O,_\7%!K_DXN._YJ2D/\J)2G_%QD>_QP:'/\I
-M)B7_CXZ'_Y65C/_$PKW_UL[,_]7*R?_:S\[_S<+!_Z&=F_\G)"/_%A(4_Q<2
-M%O\3$13_%Q47_Q84%O\5$Q7_%1,5_Q@6&/\C(2/_&QD;_R0H)O\Y/CS_+S0R
-M_R0I)_\[.SC_&R,M_S9&8/]#3VK_-3I3_S Z3O\]3UW_+#Q,_R<L/O\K,D#_
-M.D1/_UYB:O]H9V;_;F=O_X!Y<_^$>F__<V1>_Y^7E?]/34__24=$_Q\;'?\<
-M&!K_(R4H_SY*4_\6+3+_3V)N_XZHM?\<)27_)2 @_SP_0/](34O_5E93_TU,
-M2_],34[_LK2W_Q@;(/^TK[/_'AP>_Q\B(_\>&AS_(1\<_[FUL_]84U?_%A4<
-M_Q(/%?\2$!/_$ X1_Q84%_\?'2#_%1,6_Q43%O\4$A7_$Q$4_Q$/$O\3$13_
-M$A 3_S<S._\R+C?_'1DB_QH6'_\2#Q7_%Q48_Q<5&/\7%1C_#PT0_R >(?\7
-M%1C_$ X1_QH8&_\4$A7_%!(5_Q02%?\3$AG_$Q(8_Q04%_\3%!7_%!4<_Q .
-M%_]13U+_'QP;_VYO</]F9&'_A8!Z_U134O],4%+_14E+_TA(2_]*2$O_1T5(
-M___P[/\[-#3_*2HK_TU'1?\U+2O_-C T_QH7'?]9453_8UM9_R<B)O\;'2+_
-M)B0F_S8S,O^/CH?_F)B/_\3"O?_9T<__U\S+_]K/SO_%NKG_JJ:D_T],2_\5
-M$1/_%A$5_Q,1%/\7%1?_%A06_Q43%?\5$Q7_%A06_QX<'O\:&!K_(B8D_S@]
-M._\P-3/_(R@F_S4Y-_\7'RG_"Q<R_PP3-_\($S+_*SQJ_QXY=O\I2WW_)U"!
-M_SYLGO\L6HS_,EN,_T5HD/].9HW_3%1>_Y>-@O]W:V+_.#(P_S] 0?](2$7_
-M:FYE_VIN9O]U@X;_.UUQ_WVOQ/^@Q^#_>**R_W6$A/^$>WO_0S]!_QLC(/\M
-M,R__0TA&_W5Z>O^XP,+_%1\C_[V[OO\<&AS_&AT>_QX:'/\5&!+_MZFF_YN 
-MAO\4#Q7_$1$4_Q02%?\4$A7_$ X1_Q02%?\3$13_$Q$4_Q$/$O\2$!/_%1,6
-M_Q,1%/\4$A7_'ALA_Q,/%_\1#17_$ P4_Q$/$O\:&!O_&1<:_Q@6&?\2$!/_
-M'1L>_Q02%?\:&!O_$@\5_Q(/%?\5$AC_%1(8_Q,2&/\1$QC_$Q4:_Q<9'O\1
-M$AG_$Q(8_S(P,O\?'1K_H9R<_X^$@_]H7%?_9EU=_V!<7O]>6ES_2D9(_U%-
-M3_]24%/___3T_RPG*?\>("7_(1X=_RXF)/],1DK_(R F_R8>(?\J(B#_'1@<
-M_Q@:'_\<&AS_=G-R_X.">_^8F(__O+JU_]C0SO_>T]+_V<[-_\6ZN?^JIJ3_
-M1T1#_Q82%/\7$A;_%Q48_QH8&O\7%1?_&!88_Q<5%_\7%1?_&QD;_QT;'?\?
-M(R'_,38T_S,X-O\=(B#_.#8Q_R0B'_\?'"+_%A,?_Q01*/\P-U7_'S%5_R V
-M7/\O5'?_.VJ-_RU:@O\>16__+%5Y_RY(;_]\@XG_GI"!_VQ@5_]%03__+C$R
-M_RHO*_]?8UK_@7]Z_UUF;?]9?)/_;YZV_Y_!V_^#I;G_H::K_S,L+/\T-3;_
-M55I8_WZ ??]L:VK_*2PM_Z"DIO]>8VC_PL##_Q,1$_\0$Q3_'AH<_R,A&O^X
-MKZG_BWQ\_Q<1%?\6%!?_%!(5_Q02%?\3$13_$Q$4_Q,1%/\2$!/_$A 3_Q,1
-M%/\2$!/_$Q$4_QH8&_])1TK_%1,6_Q .$?\2$!/_$A 3_R >(?\B("/_(R$D
-M_Q<5&/]$0D7_%!(5_Q .$?\4$!C_$@X6_QH6'O\G(RO_,2XT_S@S.?].2%#_
-M85ID_Q$.&_\4$1W_'!@@_T(]0?^MJ*K_LJJH_WMO:O]L967_BX*"_W!G9_]L
-M967_7%=7_T,^0O__^?K_)R8M_RHO._\U-#K_*"(@_U=15?\>&R'_EI&3_[2L
-MJO\^.3W_#A 5_QH8&O\>&QK_@'YW_Y63B_^\NK7_U]'/_]O0S__7S,O_PK>V
-M_ZVII_\D(2#_&A88_Q40%/\3$13_&1<9_Q<5%_\8%AC_%Q47_Q<5%_\;&1O_
-M'QT?_Q\C(?\O-S3_.#T[_QPA'_\T.#K_'R$F_QH='O\1%AS_%QHL_Q<B(_]#
-M6%+_>8^7_Y:QO/]\F*#_7GB#_T-79?](97'_,D=D_WE[>?^6A';_<&5:_TM'
-M1?]"14;_,38R_XZ/B/]Z=W;_'!DF_T%:<?^!L,+_F<79_XRWR?^JN;G_.#4T
-M_SD^/O]D:6?_S<G'_X^*BO\<&!K_CHZ1_V%C:/^FI*?_$Q,6_S S-/\E(B'_
-MDH:!_V1?6?\;'1K_&Q<9_QD4&/\=&Q[_%1,6_Q(0$_\2$!/_$A 3_Q$/$O\1
-M#Q+_$A 3_Q(0$_\-"P[_&QD<_U!/5?](1TW_%!(5_Q(0$_\/#1#_$ X1_QH8
-M&_\7%1C_$0\2_P@&"?\2$!/_&A49_T9"2O\_/4;_.CI%_Q$/&/\R*3#_0#4Z
-M_XE^@_]81U'_:5UL_V1::_]W;GO_;VAO_Z.>H/^=EY7_2D="_U535?_6RLO_
-M6U-1_TI#0_\:%17_'!8:___X\_]!/4;_4UAJ_Q02%?\D)"'_;V1I_Q<4&O\3
-M%!7_*!T<_Q80%/\7%AS_&A88_X^*BO]_>'+_G9>/_ZVKIO_2T,W_V-#,_]?+
-MQ_^MJ*/_JZFF_QD6%?\;%QG_&A49_Q,1%/\7%1C_$0\2_Q02%?\5$AC_%A07
-M_Q84%O\Y.#?_)",B_RDX-/\U.3?_&1T;_R\T,/\E(BC_'1\<_Q0:(O\7&SO_
-M'!XA_UM95O^+F)W_B:.F_X69G?]E;6__6&)?_U=O;/\E0G+_>'U[_XMU<_]O
-M95K_3TE'_R0E)O\C)2+_G92-_UUL<?\?+D7_$"M#_WVENO^;R^?_H<SD_[S 
-MPO]01T?_*2<I_V!D8O_.R,;_F924_QL9&_^[N[[_2DQ1_[BWOO\9&Q[_8&-D
-M_Q@4$O\A'1O_)B$A_QD4%O\4#Q7_&!89_R(@(_\=&Q[_$A 3_Q$/$O\2$!/_
-M%A07_Q,1%/\1#Q'_$0\1_PT+#O\<&1__,SM+_Q(2'_\5#Q/_$A,4_Q 0$_\8
-M%AG_)"(E_Q<5&/\8%AC_%Q47_Q@4%O\:%1?_'!<=_PT/%O\'#!+_" <._Q,.
-M$O\<&A?_'QL3_WYI9_]]8G+_2"Y)_U,]5_]"-C__C8*!_U914?\Y.S[_+2\T
-M_\["P_\N,S'_3$U._QT8'/\7%!K___3Q_SDT.O\7%R3_)B$E_RDK*/]]<G?_
-M&A<=_XJ+C/^RIZ;_<&IN_Q,2&/\:%AC_%Q(2_W=P:O^;E8W_N+:Q_[V]NO_!
-MOKG_J:&=_YR:E?^<FI?_)2(A_R <'O\<%QO_$Q$4_QH8&_\3$13_%Q48_Q<4
-M&O\7%1C_(!X@_QD8%_\?'AW_*CDU_S<[.?\8'!K_+C8R_R<B)O\G)A__)"DU
-M_QPF2_\4&R'_/SLY_X2)CO^7K*[_@9:8_WB&A?]E;6G_771O_R1!<?]Y?GS_
-ME7]]_W=M8O](0D#_*2HK_R,E(O^?D(O_&2,G_S9?<O];C:C_99.O_UV1LO]0
-M?9O_JK"Z_U]56/\L*BS_%!@6_]#*R/^@FYO_'AP>_["PL_]"1$G_LK"S_QH:
-M'?]S=7C_%1(8_QXB)/\E*2O_%!07_Q,.$O\6%!?_&A@;_Q<5&/\2$!/_%1,6
-M_Q,1%/\0#A'_$0\2_Q$/$?\1#Q'_#PT0_QL8'O\?)CS_%!8E_QT8&O\E("3_
-M$A 3_QD7&O\L*BW_'1L>_Q<5%_\5$Q7_34E+_RDD)O\:$A;_%A(4_Q(1$/\A
-M'R+_$18<_Q@>(/\L*2C_'Q,6_V1:;?\;$BK_C("5_X%V??]%/#S_(1X=_SQ 
-M/O\P,C#_S\3#_S U,_]'2$G_(!L?_QH8&___\_+_*" C_R0A)_\A'!S_/T$^
-M_W1I;O\0#1/_)28G_S4J*?\G(27_%!,9_QL7&?];5E;_9V!:_Z":DO^EHY[_
-M@(6!_YR=E_^2D(O_=GES_WAX=?\7%!/_&!06_Q<2%O\1#Q+_%A07_Q02%?\7
-M%1C_%1(8_Q84%_\C(2/_&QH9_QP;&O\G-C+_.#PZ_Q@<&O\O.SC_)2(A_S8P
-M)O\F+#S_'B=0_Q4;(_\B'AS_5%M;_U1G9_]TBHG_>XZ(_V!J8?]9<&O_+DM[
-M_W=\>O^9@X'_=6M@_W9P;O\J*RS_,#(O_X^.@_]J8F#_#"<R_W&HP/^#L<W_
-M8I:W_WFBP/^SL[S_;F)C_R0B)/\N,C#_S\G'_Y^:FO\L*BS_IJ:I_RHL,?^Q
-MK:O_&Q@7_V)C:O\G)#'_/#E%_R$B*?\4$QG_$1$4_Q,1%/\6%!?_$A 3_Q,1
-M%/\:&!O_%Q48_Q$/$O\1#Q+_$A 2_Q(0$O\0#A'_'!D?_QPC0?\*#1__$ L+
-M_R@C)?\8%1O_&1<:_R0B)?\@'B'_'1L=_R(@(O]J9FC_)B$C_Q,/'_\8&"/_
-M%1@=_QHE,/\>)CK_.3U%_R<B'?\U+R?_;&MJ_PP-#O^DHI__-3 K_R$<'/\6
-M&!;_/D,__TQ*1?_%N;7_1TQ*_RXO,/\9%!C_&!89__GM[O\G'R+_%A$5_QX;
-M&O\='1K_FHZ1_R@E*_\H*2K_,2DG_RHE)_\5$AC_(B B_WYY>?];5E#_HYJ3
-M_Y22C?]N=6[_D9:0_WI]=_]N=6[_<G-M_Q01$/\9%!C_&108_Q84%_\8%AG_
-M&!89_QD7&O\9%QK_%A07_R >(/\7%A7_&QH9_R<S,/\T.3?_%AH8_S@^0/\A
-M'QS_'A<1_T9.7O\D+5S_&ALF_R >&_\F-#/_AIN=_W.)B_]A=W7_6V1=_UYU
-M</\N3WK_>'Q^_YR'@O]G6DW_BH)^_Q\@(?\O,2__AXZ"_ZF5C?]06&+_9)2I
-M_WFHP/^;S>C_6WR3_[RWO?^"=G?_'R A_SL^/__/R<?_J*&A_S$O,?\O+S+_
-M*BDO_UQ85O\=&AG_0T)(_PD(%?\=%B+_(!HB_QD6'/\0$Q3_%148_Q02%?\1
-M#Q+_%A07_Q\=(/\6%!?_$0\2_Q$/$O\2$!/_$A 2_Q(0$_\5$AC_'2-#_Q$6
-M,/\1#Q+_%Q$5_RDE+O\G)"K_,"TS_RXL+_\Q+S'_)B0F_QX:'/]"/3__(B4^
-M_TI19_\4'BS_(S--_TI6=?\+#!W_(1D5_V%<2O]#/CG_&!,5_Z*=G_\J)"S_
-M&A4;_Q47%?])3$;_4$](_ZRBGO\9'1O_&!D:_R@F*?\P+C#___KY_RLC)_\2
-M$1?_'!T>_WEW=/^FEYC_%1,5_RDM+_^[M;/_G)>9_Q@3&?\=&Q[_%Q(2_T5)
-M0?^HG9;_A8-^_V5O9O^%C8/_;'1J_V=O9?]I;67_%Q47_QH7'?\:&!O_&!88
-M_QL9&_\>'![_'!H<_Q@6&/\:&!K_&A@:_Q@6&/\7&!G_*"\O_S([._\4&1G_
-M-3 \_R(F'?\@%A__'2DP_R$V;/\6%"3_(A\>_R$M-/^*I*?_@IVD_UUT>?]&
-M4D__46IO_RU5?/]T>8O_D8!R_W-@5O^>DHW_(2(C_Q\;'?^2BH;_IYV2_YFJ
-MM_]VHKS_F,38_ZG-XO\J.TC_B(.#_YV8D_\>'B'_2TI0_\7 PO^NIJG_.C@Z
-M_S@[//]+3D__/D-#_QH='O^"?H#_&!D:_QD9'/\<'!__$Q,6_Q04%_\6%AG_
-M%A89_QH:'?\]/4#_'Q\B_QD9'/\?'R+_#@X1_Q0.%O\4#Q/_$0\2_Q(0&?\8
-M(CW_(BI6_Q8<-O\8&"'_5$QG_T ^1_\K)R__&QHA_X.!?O]23T[_&A88_R<B
-M)O\-$B3_'",Q_S(U0/]G;8/_=H&@_Q\D-O\=%A;_."TF_R,?'?\=%A;_K:>E
-M_RLH+O\?&R/_%!(4_V)C7?\;&QC_,S$L_QL8%_\5$Q;_*2TK_Q@6&/__^/?_
-M0SL__Q\>)/\5%A?_)24B_[&EIO\;&1O_&1L>_QD3$?\6$1/_'!<=_QL9'/^2
-MC8W_14E!_Z*7D/]_?7C_7&5>_V9M9?]@9U__86A@_V1H8/\8%AC_&18<_Q84
-M%_\6%!;_&A@:_QT;'?\6%!;_%1,5_Q(0$O\9%QG_%Q47_Q<8&?\F+2W_-#T]
-M_Q09&?\S,#S_(2@>_QH0&?\)$AG_&REA_QL7)_\G(1__&!H=_S1+2O^%H:3_
-M9'A\_TU65O]2:6C_,UAW_W%R??^7@&W_A7=N_ZB@GO\A'R+_'QT?_XV*A?^H
-MH97_D:*O_R5/:?^SS^3_M<K<_Q,=)_^*A7__@X![_QXB)/]96V#_O[N]_[VY
-MN_\L,3'_-$ __S0]/?],6%?_)"<H_Y2,C_\9$13_%A07_QH:'?\0$!/_&!@;
-M_Q45&/\>'B'_'AXA_T-#1O\J*BW_(" C_RHJ+?\2$A7_% X6_Q0/$_\.# __
-M$Q$:_Q4A//\:)53_'"=*_S(U3O]B5'K_@'Z'_PT0%?\5$A[_$ T,_U!-3/\9
-M%1?_(!L?_T-"2/]65%;_8UQ<_Z:BJO]N;W;_%A07_QD2$O\Q)2'_'QH:_QL4
-M%/^IHZ'_%!$7_Q,/%_\/#0__8F-=_YN;F/\]/3K_'1L=_QL9'/\M+BC_&A88
-M___X]_],1$C_)20J_QX?(/\O-##_O[:V_QD7&?\D)"?_LZNI_[JUM_\;%AS_
-M$0\2_QX9&?\?(QO_H9:/_X!^>?\T/#C_.3\[_RTS+_\U.S?_76!:_Q@6&/\4
-M$1?_%!(5_Q,1$_\5$Q7_%1,5_Q43%?\3$1/_%!(4_QD7&?\9%QG_%A<8_R$H
-M*/\Q.CK_$A<7_RTM./\C*R'_(QDB_Q\E+?\?+67_-C5&_S<X,O\_03[_,S@R
-M_YFEI/^9I:G_;G5U_T]E8_\S67G_='R0_XB ?O^&@8'_K*:J_QL6'/\>'![_
-MC8Z(_YV8C/](66;_1VV(_Z_/Y?]TCJ/_1%1>_X2$@?^9FI3_)RTO_S U.O^P
-MKK#_P[_!_V1I:?]<:&?_='M[_X2)B?^1CY'_J*"C_Q@3%?\5$Q;_&AH=_Q 0
-M$_\7%QK_#@X1_Q86&?\='2#_'AXA_Q\?(O\9&1S_&1D<_P\/$O\3#17_$PX2
-M_Q .$?\4$AO_%1XV_QDC4/\;)4K_%!DW_V5/?/]^>87_$!@:_QH:)_\=&1O_
-M55)1_R@D)O\P*R__)R,E_R(8&_\R)2K_>7!W_T$V-?]@5EG_$0X4_Q00$O\6
-M$A3_&1(2_Y6/C?\5$AC_%! 8_Q<5%_]=7EC_GIZ;_S$R,_\<'!__'1L=_TM*
-M0_^'A(/___7R_T Z/O\;'"/_&!D:_WAZ=_^\M;7_&A@:_Q43%O\F'Q__&A88
-M_Q83&?\='"+_BX:&_RHK)/^=E(W_@X%\_R\W-/\H+2O_&1\;_RTS+_]365'_
-M&!88_Q01%_\4$A7_%1,5_Q02%/\3$1/_%!(4_Q43%?\4$A3_&1<9_QD7&?\7
-M&!G_(B<G_RPU-?\;("#_-3<__Q8>&O\=%1G_&1\G_R0V;O\9'R__)BHB_RTP
-M*O\V+2;_.S8V_VUP<?]&3T__,%%C_QM0AO\;.W/_.$]Z_UQH=_^ZLK;_(ATC
-M_R <'O^-CX;_HI^4_U-@:_]+;(/_1VN _R%"6/\A-D+_*2LI_Y^AGO_#QL?_
-MA(F._\/$Q?^_O+O_6EU>_[[#P_\^04+_S<G+_V%97/^7CY+_&1<9_R4E*/\9
-M&1S_$Q,6_Q<7&O\0$!/_'AXA_R,C)O\H*"O_&1D<_QL;'O\5%1C_$! 3_Q,.
-M%/\3#A+_$A 3_QL:(?\5'##_&B%+_Q8=0?\;'#O_9D]Y_W-P??\J-3;_'R K
-M_WUZ>?]'1$/_&!06_RTH+/]'0DC_13M$_T,T/_^$?(;_85-4_Z&9G?\4$AO_
-M$Q48_Q,1$_\<%Q?_EY&/_PT+#O\5$AC_&!<6_V5F8/]K:6;_-38W_QH<(?\4
-M$A3_5%)*_[VZN?__]O#_54]3_S4Z1O\H)2O_)" >_[&NK?\9%1?_&A49_V%6
-M5?]C657_&Q<5_QT<&_\J'!W_*"DB_Y64B?^'B(+_)2PL_Q\F)O\>)B/_*C(N
-M_TI63?\8&1K_%A$7_Q,1%/\6%!?_%A07_Q84%_\3$13_%!(4_Q02%/\6%!;_
-M&1<9_Q<5%_\?(B/_)S,R_PL2$O\M-3+_#Q$@_QL8$_\7(2S_&3!E_QXA,_\A
-M'QC_+"HE_SPZ*_\G(AW_2D<\_X*(A/\C0F3_+%>%_QQ B_\M3I;_26=]_\"N
-MLO\:'R3_(QD<_Y"0@?^>G)7_C(Z3_YFDJ_^7H[+_1UAE_SI&2O^.AH+_J*6D
-M_]W5V/^3F)C_J:JK_\&_O/^ZN;C_V-/7_[JVM/_)PL+_<VYN_X6"@?\O+BW_
-M&!H=_QH<'_\2$A7_&!89_PT.#_]86US_4515_R(E)O\@'B'_)"(E_QT;'O\3
-M$13_%A 4_Q0/$_\1#Q+_%!07_QTF/O\<(U'_%!U"_QP@//\N'CK_869R_UE>
-M7O]K;6K_E9.._U%-2_\7$A;_+"@P_QX=(_\R*S+_.C$X_WYY?_]42TO_J:"@
-M_QP7&?\8%AG_$Q(8_QD4%O^EGYW_&!,7_Q43%O\:&1C_@8%X_YF6D?\\.#;_
-M)B(D_QD8%_]334/_P+V\___T\/]]=G;_&1HA_Q .$?^(A(+_JJ>F_QX:'/\=
-M&!S_=&EH_VYF9/\:%17_'1L=_R\G*O\7(!G_-CTS_SI"/O\F+2W_(R8G_QD=
-M&_\I+BK_1E!'_QL<'?\9%!K_%1,6_Q@6&?\8%AG_&!89_Q02%?\6%!;_%1,5
-M_Q84%O\9%QG_%1,5_QXA(O\C+R[_$!<7_RLS,/\4%B7_&Q@3_Q0>*?\9,6C_
-M+S-(_TA&0_\D)"'_+2LC_SHP,_\Y,RO_/STZ_R1 8O\L5X7_'D:1_RI+D_]$
-M7W?_MZ6I_Q,:&O\B%QS_C9!^_Z.@E/]X<&[_P;6X_]++U?\<'B;_.#L\_[6H
-MH_^II*3_V<_2_WV"@O^;GI__RL7 _[JTLO_<TM7_R+ZZ_\[&Q/]^>7G_B8:%
-M_Q\>'?\7&1S_%1<:_Q$1%/\7%1C_%!46_PX/$/\_0$'_'A\@_R<E*/\E(R;_
-M(!XA_Q02%?\6$!3_% \3_P\-$/\/#Q+_'"4]_QLA4?\3'D#_%ALT_R\@.?]I
-M;GK_9&EI_VAJ9_^)AX+_4DY,_R0?(_\\.$#_1D5+_Q$*$?\Z,3C_C(>-_V-:
-M6O^BF9G_'QH<_Q84%_\3$AC_'!<9_ZJDHO\T+S/_&A@;_R<F)?]_?W;_?7IU
-M_S\V,/\K)B'_'QH4_U9,0?_+P<3___3Q_Z&6E?\:%Q;_'AH<_S<T,_^VL[+_
-M%A(4_Q\:'O\>&1__%1(8_Q<9(/\4&B+_=W!W_QPD(/^*CXG_>7Y\_S5!0/\Y
-M0D+_.4- _SM&0?]"3D7_$A,4_QD4&O\5$Q;_%1,6_Q84%_\7%1C_%!(5_Q84
-M%O\7%1?_%A06_QD7&?\8%AC_'2 A_R(N+?\@)R?_+#0Q_Q,5)/\<&13_"Q4@
-M_QHR:_\9'S7_0#\^_T!"0/\K,"K_'QPB_S8T+?\W.3;_'S99_RE7A/\:1I#_
-M*TJ2_SE2;_^QGZ'_%AX:_R8;(/^*BW[_I9^7_VA:6__JV=G_Z-C<_SDT-O]Y
-M>7;_U<G$_Z6>GO_8S,__C9*2_WR#@__(QK__O;BS_^#7U__*P;O_O[>U_XJ%
-MA?]Q;FW_+BTL_QH<'_\6&!O_%!07_Q@6&?\/#0__$Q$3_Q,1$_\D(B3_'AP?
-M_QP:'?\9%QK_%!(5_Q4/$_\4#Q/_$ X1_Q,3%O\8'RO_'R5%_Q$7,?\:%RW_
-M6$EB_V1I=?]D:6G_5EA5_X6#?O]134O_&A49_U).5O]_?H3_?WA__X!W?O^V
-ML;?_A7Q\_Z:=G?\<%QG_'!H=_QP;(?\<%QG_K:>E_X:!A?\[.3S_+RXM_X:&
-M??^=FI7_244]_QH8$_\:&!7_-"TG_[ZXO/__^OK_O+&P_R<B(O\D("+_)!\?
-M_XV*B?\/"PW_%1 4_[*HI/^WJZ?_'Q<5_QP9&/\?%1C_("0B_Y:6D_]?8F/_
-M-$)!_SA&1?\Z247_/DU(_T-/1O\1%!7_&Q8<_Q,1%/\8%AG_&1<:_Q<5&/\4
-M$A7_&1<9_Q84%O\<&AS_%1,5_Q@6&/\<(2'_)C(Q_R(I*?\E+"S_&1TL_Q\;
-M&?\.%2'_(3MT_QH?./\G)B7_*RTJ_S0[-/\U.#G_+S,K_S$V,/\<,5/_*U:$
-M_Q9$CO\N397_.%%T_ZN8F/\:(A__'A07_WQ[=/^BFI;_8%17_^77V/_KW-W_
-M+BHH_\#!N_^PJ:/_J*&A_]S-T?^&BXO_86IJ_]74S?^]NK7_W]G7_\O$OO^\
-MM[+_C8B*_V!=7/\S,C'_&AP?_Q88'?\4%!?_&!89_Q(0$_\2$!/_$Q$4_R8D
-M)O\>'B'_&AH=_Q04%_\1$13_% \3_Q0/$_\3$13_$A(5_Q<:&_\:'2[_#1$@
-M_Q@1(O\E&BW_)RTU_S8[.?]45E/_55)-_U103O\9%!C_44Y4_RXK,?\B'2/_
-M+B4L_VYI;_]-1$3_KJ6E_Q@3%?\5$Q;_#@T4_Q0/$_^LIZ?_?'AZ_S@V./\P
-M,"W_EI:-_Z&<EO],2D/_'AX;_R,A(_\H(R/_M[6X___Q[?^JGJ'_(1XD_QH:
-M'?^%@(#_MK&Q_Q(.$/\8%AG_'186_RLD)/\9%1?_%1<:_VAB9O\5'!S_FIV>
-M_SH]/O\N/S__,4)"_S1&1/\Z3$C_2E-,_Q05%O\6$QG_'!8:_QD7&O\>'!__
-M%1,6_Q,1%/\6%!?_%!(5_QP:'?\:&!O_%148_QH>(/\B+S#_&B(D_R(J+O\3
-M'2?_(AX@_QH=*?\A.G7_)"9!_RHE(/]144;_.SLN_UA93/\Q-"C_'B =_Q@O
-M3/\?2G3_"39]_RI+E/\B/V__Q*^K_Q08(/\F(1O_='1Q_ZBCG?])/SO_ZMO;
-M__+<W?\B(!W_GY>5_];'Q_^YN;;_V\_0_YB9FO]67%[_S\C(_[JRL/_:TM#_
-MPKJX_[NSK_^EFZ3_4DU-_R(@'?\>'23_%!8;_Q<5&/\<&!K_$ T3_Q,0%O\3
-M$13_*RDK_RLK+O\9&R#_%!8;_Q$3&/\D)2;_-38W_SX_0/]+3$W_*"8I_Q88
-M&_\L,3'_9FAF_U!44O\\/CO_5U)-_VQ@6_]_<VS_<FIH_QX9'?]02D[_(1PB
-M_Q *$O\L)B[_;&9N_UQ34_^MI*3_&A47_Q<5&/\/#QK_$A$>_R(?*_\6#QG_
-M%10:_Q<8&?^BG9W_IIZ<_TI(0?]&1#W_3DE#_U),1/]_=W/___#L_[&EJ/\>
-M&R'_&QL>_R4@(/]U<'#_&147_Q$/$O^JHZ/_LJNK_Q<3%?\3%1C_'AH<_R$I
-M)O^QKJW_P;R\_W=\@?])457_0TM-_T)+2_]*3TG_%Q47_Q,0%O\2$!/_&A@;
-M_Q02%?\5$Q;_$Q$4_Q04%_\2$A7_&1D<_QH:'?\8&!O_&Q\A_R M+O\B*BS_
-M(RDK_QHE+/\C)2/_)28Q_R9">_\?)#[_)R,A_S4V,/]'13W_5E9+_TU/1O\A
-M(R'_%2Q)_R!+=?\)-GW_)D>0_QPY:?^QG)C_%1DA_R8A&_]34U#_G)>1_T V
-M,O_NW]__[]G:_S N*__9T<__W]#0_WMY=O_;S<[_GYV?_T5)2__3T,__K:NH
-M_]73T/^\NK?_HYZ9_ZF?J/\T+R__'!H7_S4X/?\>(R/_%AH8_S@Z-_\S+S'_
-M&A88_W!M;/]&1$'_*"<F_S0V-/^BI*+_(R4C_U]A7O]*3$G_04- _S]!/O]9
-M6UC_3DY+_V%<5_^9C8C_MZ6A_\BTL/_1N+/_T;6N_\VTI_]40SW_(QHA_U5/
-M5_]X<GK_>'%[_WYW@?^NI['_J)^?_Z^FIO\:%1?_%Q48_Q<9(/\4%2#_(R(S
-M_QH7+O\:%RW_$Q B_QD5)?\4#!K_$ P4_S0Q,/\_/C/_2T@\_S@V+___\^__
-MMZNN_Q42&/\7%QK_=7!P_STX./\6$A3_&!89_R8?'_\;%!3_&Q<9_Q47&O]*
-M24C_-#PX_\.[N?_JV]O_X-'2_^+0U/_9R,C_T\/ _Y^:E/\?&QW_%1(8_Q,3
-M%O\8%AG_$Q$4_QD7&O\5$Q;_$! 3_Q 2%?\9&Q[_%QD<_Q45&/\9'1__("TN
-M_R,K+?\H*RS_'2HO_R4K)_\L+C;_)$%W_R4K1?\C'R'_)"8D_S\]-O]144C_
-M75Y7_Q@9&O\.)$3_&41N_P8S>O\H29+_'CMK_[NFHO\@)"S_)2 :_TM+2/^A
-MG);_.C L_^76UO_PVMO_-C0Q_]C0SO_>S\__FI:4_][/T/^EH:/_2DQ/_]#)
-MR?^LIJ3_U,[,_\"ZN/_$O+C_O;.\_S(M+?\R,"W_2$9(_YN;F/^8EI'_/3LT
-M_ZFEH_\S+RW_KZRG_T ^-_^<FI7_.3HT_W5V</\G*"+_14E!_S8Z,O]$2$#_
-M0D8^_T9,1/]44$C_RK>O_\JRJ?_)L:C_PZF@_[RAEO_5N*S_OZRB_T,W,_\>
-M&1W_1T)(_Q<3%?\?&QW_)2$C_T(^0/\_-S7_HYJ:_QL6&/\7%1C_%!$7_Q<3
-M'/\-#!G_%!(E_QT9,_\<&#+_&Q@O_Q42*/\?&C3_)B,P_S0R+?\T,BO_4%53
-M___V\O_!M+/_'QXD_Q(4%_\=&1?_)!\?_R$='_\5$Q;_-"DH_T,X-_\?&AS_
-M&AH=_T1&1/\P.#3_P[FU__'<VO_GV]?_X=71_]W0R__9S<;_GI>1_R,@'_\6
-M&!W_%QL=_Q\B(_\='2#_(" C_R(B)?\E*2O_)2LM_R8L+O\J,#+_+# R_S(X
-M.O\E,C/_)C$R_RHO+?\?*C'_)3 I_R4G+O\D/W7_*3%+_R0B)/\G*"G_1T=$
-M_U153_]254__)B@K_P\D0/\80V__!C)\_R9'C_\C/FW_N*>G_S O-?\K)B'_
-M,S$N_Z";E?\T+"C_Z]S=_^_9VO\L*2C_ULW-_]O,S/][<V__U\;&_["KJ_]*
-M2DW_V]/1_[JOKO_*O[[_Q;BW_\:\N/_)O\C_+"@J_\"\NO]Z='+_L:RG_STX
-M,O^*@7K_3DQ%_V5>6/^,AG[_1$$V_Z&@F?\N+RC_JJFB_RPK)/]>8%?_0$0[
-M_T-'/O]!13S_6%]3_Z6>DO_)KZ;_Q:J?_\JRJ?_*LJG_Q["D_\JSI_\[+RO_
-M/CH\_Q\=(/\M*BG_2$E#_TI+1?]24TW_4E--_TQ(1O]+1D;_&147_Q45&/\7
-M$A3_%@X8_Q80'O\7%1[_%A,J_Q41*_\7%2__&ALT_R$://\>&"S_'1P;_R4D
-M(_^(@X?___+R_\V\MO\@'R;_%ALA_T-!/O\E)"/_%A06_QH8&_^,?W[_FHR-
-M_R$7&O\@&R'_.C\__S4W-?^_NK7_\.'<_^W?W/_CU=+_VLK'_^'1SO^RJZ7_
-M/T$__R\Z._\N.CG_+3DX_RTY./\N.CG_+SLZ_RTX.?\N.3K_-#] _S(]/O\N
-M.SS_+SP]_R8S-/\@+2[_'2XD_R$E-/\;*BG_,#@Z_R4]=/\H,TS_'R A_RDF
-M)?\I*2;_2DU'_SH^-O\V-SC_%R$P_Q\[9_\0/(#_'D!__RH]9_^?FZ/_0S@W
-M_R<E*/\K)B#_GYV6_S,N*?_KW-W_[]C9_RLF*O_/Q\O_Y,[/_[ROJO_)O[O_
-MM[&O_TY+2O_;TLS_M*RH_\G P/_6Q\+_T,"]_\W%R?\H*"O_R<&__]/%PO_!
-MO;O_.3TU_Z&8D?\K,B;_M*RB_T,],_^.C8+_H)Z7_UU;5/^LIZ'_0CLU_U]?
-M5O])3$#_8&-7_U583/])3$#_P[>N_]2YLO^LEH[_OZ:?_^'(P__:P<#_T[V_
-M_QL4%/\?'!O_7UU:_R8D'_\[/SW_+"\P_SL^/_\W.CO_.3T[_UY@7O]?8&'_
-M2TM._Q00&/\4#QO_#Q00_QD7*O\6$2W_%Q,M_Q44,?\3$C?_.35+_S,R.?]$
-M1D3_0T5#_]'(R/__\_?_SKRY_Q\<*?\<'RO_3$E(_QP;&O\9%QG_&1<:_QP6
-M'O\@&B+_'!<=_Q@6&?]'3$S_/3\]_[^ZM?_LW=C_\-W7_]"]M__HU]'_X-'+
-M_ZNJH_\Y0$#_+SL__R@P,O\L-37_*34T_R@T,_\G,S+_)"\P_R,N+_\C+B__
-M(BTN_R8Q,O\K-C?_*C4V_R<R,_\L-BW_-459_Q >)_\?(23_+4A^_RHT3_\C
-M(R;_+"@J_R\M)O]85TS_8V)7_UQ85O\-%B?_#"91_Q$Z?/\>1(+_)SE?_[*M
-ML_\K)BC_'ATC_R0?&?^<G)/_,2\H_^[BW?_QV]S_.3<Z_\K$R/_?S,S_N:RG
-M_\&WL__ NKC_4D]._]K1R_^\M+#_NK.S_\S#O?_6R,7_SL;*_R4E*/_,Q,+_
-MVLS)_UM34?\Y.#'_P;VU_R(G&_^ ?7+_.3PP_[>\L/]=6%+_I9Z8_YB/B?]Y
-M;6C_1$0[_U)52?]*34'_14@\_V%A5O_&N*__[]/,_^#'P/_ERK__\-?0_]+#
-MP_\@%A__%1 6_Q@4%O\E(B'_+RTJ_Q83$O\U,3/_0S]!_QH6&/\F(2'_6%-3
-M_W5P<O^+A8G_$AT8_Q@4._\L'UK_'!I!_Q@9,O\3$"W_&18Z_R<E1O\R,$#_
-M)B4K_R<G*O\H*2K_V,K+__[O\/_&M+#_/CQ%_R0H,/\8%A/_&!<6_Q43%?\5
-M$Q;_HIV?_Z^GJO\9%!C_%A89_R4J*O\U-S7_M;"K_]S-R/_@T='_CX:&_VIE
-M9?]=7%O_24]+_RLV-_\N.C__+C8Z_RHS,_\J-C7_)C(Q_R(N+?\F,3+_(BTN
-M_R(M+O\C+B__%AX@_QLC)?\=)2?_("@J_R\Q*/\D0%O_#!<O_R$='_\@.W'_
-M)"U+_QH9'_\C'B+_'QL9_SDW,/]*2$#_3$='_Q49+O\<+5'_'3=C_RE :O\?
-M*43_6E18_R@E*_\?("?_'AH<_R0B)/\H)B/_YMS8_^_<W/]#0T;_:V9J_]C)
-MR?^_LJW_MZVI_\2^O/]13DW_T\K$_[VSK_^HI:3_RL6__[&EH?_$O,#_+2TP
-M_[>OK?_>T,W_,R@G_Z&<EO]45$O_:FI?_\"VK/\V.R__G:*6_T$_./^[NK/_
-M03\X_ZZIH_]45$O_.SXR_U993?]254G_3DU"_]?'OO_TU<__ZL_(_]:_NO^I
-MEY/_2#\__Q,0%O\5$AC_&108_Q<3%?\P+2S_%A,2_QT9&_\G(R7_&!06_QP9
-M&/\M*"C_3DE+_YN5F?\/"S__IZ+,_[:SO_^NH]C_%!$\_R >/_\I)D/_8F-N
-M_SH[//\F)BG_)",J_RPL+__2RLC___+M_X1R:/\6%!?_%!8;_UY=5O])1T3_
-M'!@:_QP7&_\B%13_'1$,_QL6%O\4%!?_$Q@8_RDM*_^KIJ;_W]#+_[*KJ_\P
-M-#;_*C(T_RLX.?\J-C/_+SP]_RHV._\K,S?_*3(R_RDU-/\D,"__)# O_RHR
-M-/\J,C3_("@J_Q@C)/\:(B3_("8H_R@N,/\F+"[_+"PC_QP[7?\'$R[_'148
-M_QTW</\G,U+_)R4H_QX9'_\D'R/_'QP;_R0C(O\H)BG_(QPC_QT;)/\C(RS_
-M(R ?_QP=*/\H(R?_)B4K_RPH,/\S+#/_+BDM_S<U./_5S,S_Z-;3_XZ/D/^9
-ME)C_U,7%_\>XL_^NI*#_QKZ\_UY96?_,PK[_D(J(_T=(2?_'Q<#_,BHH_\S$
-MR/\D)"?_N+"L_]C*Q__.P<#_A'UW_R(D&__*QK[_2#PU_ZRLH_^LK*/_,"\H
-M_ZNLI?\W.S/_D)*)_S\_-/]$13C_<7%D_V9G6O^1BX/_V,6__]["O_^ID8[_
-M)Q@8_RD=(/\2#0__$0\,_RLK'/\R-1__,30=_R\S'?\N,"W_,C,T_S$R,_\Q
-M,C/_*BDH_Q43%?\8%AC_3DQ/_Q48._^AG+;_9F%<_Z>BNO\<&S__(R(__UM;
-M;O\S.#+_.3TU_R ?)?\K*#3_961J_\C"P/_TZO3_5T9&_R4A*?\;'27_'1P;
-M_QD7&O\;&![_&Q<@_QP8(?\;%Q__&18<_QD7&O\@'B'_&QH9_QH8%?\R*"O_
-MVL[*_TE24O\U/4'_-3T__S$\/?\O-SG_*C(T_R<O,?\?)RG_&R,E_QDA(_\9
-M(2/_("0F_QP>(?\7'1__&2$C_QHE)O\>*2K_(2PM_R$L+?\N-2G_-TEE_Q$9
-M*?\:&1C_(BQ._RLT1?\@(B#_'AHC_Q\A)O\B)2;_(R8G_R@M+?\P-3/_,C4V
-M_S0S.?\\.$'_/C8Y_UA33O^&?GK_M*BK_\&\OO^FFY3_1T1*_^3=W?_RV];_
-M>71T_]K2U?_9R,C_T+NY_X)Z=O_$N+G_)B$C_\+!P/]03E'_-#8[_[^]O_]?
-M75__O+&X_RLG*?^[LJS_WL[+_V%95_\V-2[_R<6]_V=F7_\_.C3_P[JT_SDW
-M,/^NHIW_;&9>_SHZ+_]T=&?_:6=8_X![:?]W;UO_='!A_RXI)/\@&QO_$PX2
-M_Q$0%O\3%!7_&!4;_Q@2%O\7$@S_-S$A_SLW(?\T-"'_-C0L_Q<6%?\D(B3_
-M)"(D_R$?(?\7%1C_$A 3_Q,3%O\?(23_!@HP_S<N8_^TH]G_13AK_U%,9/\<
-M&27_/D%&_QL@'O\M,2__G9VF_WMYB?\J*S+_Q+^Z__#F[_]"+B;_-RLD_S0K
-M)?\\+2?_138P_S@K(/]$."G_3CTP_U5"-O]92#C_:UM(_W9<3O^#9TS_@VY1
-M_X5\=?_AS\S_RL;(_S<Y/O\C*2O_(RLM_RPR-/\G+2__)2LM_R(H*O\:("+_
-M(RDK_P\5%_\C)2C_#Q$4_QLA(_\9(2/_&R,E_Q\G*?\B*BS_)2TO_RD]+O]H
-M;WO_)R,S_QTF+?\@*4'_)3-*_Q8A,O\].#[_0S\]_W!L:O^FGIS_R[Z]_]7*
-MR?_FU]'_[=?/_^[3TO_MV-;_Z=;,_]G)O_\G)"/_*"LP_Z"7D/]84U7_Y-O;
-M_^S4T?]Z=77_T<G,_]C'Q__9QL;_(R ?_[^ZO/].3E'_@X%\_YJ6E/^;F9O_
-MR\?%_W9W<?_!N+C_*B8H_[JQJ__@T,W_L*BF_\' N?]H9%S_/#<Q_ZJHH?]3
-M3DC_-C0M_\"[M?\R+B;_P;ZS_WIW:_][>6K_?WEI_WQV9O\\.C/_-#DU_P\5
-M$?\@)"+_&QP=_R(@(O\H)BC_)R8E_R@F(?\W-3#_'1H5_R0@'O]*1T;_$A 3
-M_Q(0$_\7%1C_$A 3_Q84%_\5$Q;_$1$4_Q@:'?\]0C[_(R<V_UQ><_^=D8S_
-M;&-=_TI%1?^1E)7_,SP\_T9+2?^1D9K_'APL_R@I,/^0CXC__^_B_[R2:O^Y
-MCV'_K8E<_ZZ#5?^WBU__M(E9_[2+5_^WBUG_O(Y;_[>*5/^WBU/_O8E7_ZF 
-M5O^1>5[_V,J[_^31R_\L+2[_$Q4:_Q(6&/\6&AS_$Q48_R@J+?\0$A7_)RDL
-M_QD;'O\F*"O_%!89_R4G*O\1$Q;_&R$C_QHB)/\?)2?_(2<I_R,I*_\I+S'_
-M+#LZ_R B*?\@+D?_.DEL_RDY9?]37X3_SLC6_]_-R?_IT,O_\-31__79UO_U
-MV=;_\M;9__36U/_KU,__X]O?_XV/GO_/Q\O_3CPX_S(Q-_\7(BG_GIB._W5K
-M9__EV=S_\-C5_WUX>/_*PL7_V<C(_][*QO^*A7__S\?#_W=U<O_*QK[_?G=Q
-M_XZ*B/_(O[C_;V]F_[^WL_\C(!__N[&M_][.R_]_=W7_3TY'_SHV+O_!NK3_
-M?7MT_S$P*?^SKJC_34Q%_WAV;O^!>6__=W)F_WYZ:_][=&;_;&9<_Q\='_]0
-M3$K_4TM'_R$;&?\@&QO_+BDM_SP\.?]04TW_-#<X_Q\C(?\;'2+_$@X6_QP8
-M&O\;&1S_&18<_QH7'?\6$QG_&!89_Q@6&?\6%AG_&!H=_U!$6?]%/DC_8%Y9
-M_[FGL?\N(RC_GIN:_Y^@H?\C)B?_*"PJ_XF)DO\G)37_)R@O_S0X-O__\./_
-MS)UM_\J:9__+G&7_PY1:_\:46__"D%?_P8]8_\"35__ CUS_P8Q6_[Z04_^I
-M?4O_1B\8_V%C8?_,Q<7_W='-_QXG)_\0%1K_'1\D_QP@(O\8&AW_)RDL_Q08
-M&O\G*RW_&1T?_RDK+O\5%QK_*"HO_Q(4&?\=("7_'B(D_R,H*/\L,3'_,C@Z
-M_RLP-?\]0TO_H:*M_R@]6O]=9H__V<S?__#9VO_UU<O_\-G:__#:V/_QV=;_
-M[MS8_^_@V__MX=C_X]C7_UUEA?\^49?_+4Q\_[W#T_]01$?_3DQ5_QTH+_^?
-MF8__?G5O_^79W/_LT]+_4D]._T(]/__8R<G_YM',_YJ/A/_+P;?_*B@A_[^Y
-MK_^.A7[_=W)L_\:^M/]>7E'_@'IR_R(@&_^QJJ3_X,[+_X1Y>/^HHYW_M;&I
-M_S(P*/\V-2[_O;RU_Z2?FO\C)!W_F96-_W%E7/]U;F+_:V9:_WET:/\@'1C_
-M'1\B_QD7%/\^/3;_,#,M_TU33_]G96?_8F)?_T9+1?\I+B[_(BDI_RHM,O\8
-M%Q[_&QD;_YJ2E?^@F)O_HYN>_ZZFJ?^SJJK_N[*R_[RUM?_$O[__Q,Z]_UM@
-M6O]866#_J[.O_RLM,/^6DIK_,2PP_S8R-/]W=7?_B8F4_R0B,O\='B7_+3,U
-M___T[O_4FV'_S)YQ_[Z%0__"DUW_OY!6_\256__ D5?_OY%7_[^,5__!D5+_
-MDFQ%_RT;#?]<4U/_8&!7_]+'P/_=SL__*S$S_RTR./\^0$7_)2DK_R8H*_\M
-M,S7_(BHL_R0L+O\6'![_+# R_Q06&?\I*S#_%!,9_S0S.?\A'R+_&!X@_R,K
-M+?\F+C+_*S V_S@T-O_4R<[_X,_7_^G7U/_MV='_\=K5__'9UO_SVMG_^-S9
-M__/7T__AR<;_^./?_Z.9E?\V,T#_)52._QXS@?\K4XK_P<+-_U=05_\G&"/_
-M='AZ_Y^7C?^'@GW_W=/6_][)SO\9'1__F9>9_\[ P?_8Q\?_9EE4_\_)P?\H
-M)R;_14(]_X)[=?\^/#7_6UI3_T$\-_\3$0S_# H'_ZJBH/_.P\+_Q+RX_U!.
-M1_] 1#O_6E1,_[:JI?]*0SW_+"TF_[>PI/^">&K_E8N _Y2)?O]A64__+RTJ
-M_S@[0/]A8V;_8F5?_U-43?\R,2K_3$I#_RXL*?\R-#+_(RHJ_QD='_\;'2#_
-M%QD<_Q\A)/\M+S+_EXV)_Z&4C_^CEI'_FXZ)_Y6,AO^1B(+_C(-]_XR#??^$
-M?7?_*B8H_V%A:O^VLKO_,BXV_XZ+D?\6%!?_$ X0_X5_@_]Z=8'_*BDZ_RDI
-M,O],45;___'K_\6,4O_ DF7_SY94_\*37?_)F6+_R)AA_\657O_*EU;_R)EI
-M_V!%(/\F&A7_(AP@_R$?*/]/3TS_S\.\_^?6UO\O,S7_%QD@_QT<(O\C)RG_
-M&QT@_R,I*_\P.#K_*"\O_Q@='?\K+B__&!D:_SL\-O]&24/_*3 P_QDC)_\<
-M(R__(R8Q_S8S.?_1R,C_Z-;2_^W:U/_VW]K_^-_:__+<U/_SW-?_]]O8__;7
-MU__LU-'_QK&O_R49'/\O*3'_9FAO_Q 4*?\A5Y'_)#N(_R-,B/^]O<S_7UA?
-M_VA79_\?(B?_HIJ0_Y"+AO_=T];_V<G-_SI!0?_%PL'_WLO+_\F]OO\Z-S;_
-M'!T>_QX;(?\G(B;_)" B_QP:'/\9&AO_(!TC_Q@8&_\7%1C_<6=J_XN#AO^>
-MF9G_='!N_ZNHH__.O+C_+B@@_R\R)?_'O:[_GX]\_YN.??^1B('_75Q;_TY1
-M5O\Y04O_-3]*_SD^1/\I,2[_+S<S_SY#/_\\/CO_(R(A_RXS,_\G+S'_*2XS
-M_QTA(_\A)RG_'R<I_RLX.?]B9&?_<G!S_VUK;O]H9FG_8&1F_UA>8/]46ES_
-M4%98_U%24_]/3E7_9F9U_Z^IM_]X='W_B(6+_X:$A_^IIZG_BH2(_W]ZAO\E
-M)#7_.#A!_VQN<?__].[_UYYD_\Z@<__6G5O_S9UJ_\J99/_,FV;_S9QG_[:/
-M7O]@/S__'1 C_Q\A'_]64$C_:F1H_S] .?_3Q\#_Y]/5_S@Z/?\='"/_&18<
-M_RTQ,_\V.#O_)RTO_RDQ,_\M,C+_%!@6_S4W-?]%1$/_+B\P_Q04%_\;'2#_
-M*BPO_U-.5/_/Q,G_Z]C8__3=V/_WW-7_]]W2__;<T__YW=K_\-?2_^_8T__J
-MU='_II21_WEQ=/\S+C3_+2\W_VYT?O]M;W+_'B O_QA,A?\A/(G_)$R*_[Z_
-MRO]\=W?_(Q,A_Q 3&/^:DHC_AX)]_]#&R?_?R<O_FYV;_\G%P__4Q,'_V<K%
-M_SLS-O\5%Q[_&!@;_R4C)O\>'B'_(2,F_RDM+_\H*C'_3E%6_Q46%_^1B8?_
-MT\# _]"]O?^DF)3_3$,]_T-$/?]35T[_BH1\_YR+A?]I8V'_6EI=_SQ$3O\W
-M1%7_-T=;_S%"6?\Z25S_,SQ#_RHP,O\A)RG_-CH\_Q88&_\G)RK_,C@Z_S,_
-M0_\K,CC_+CH^_RPW./\9(2/_*"PN_]K2U?_;TM+_X=C8_][5U?_HV=K_Y]77
-M_^C6V/_GU=?_]./C_]3)SO]X<W__L*VY_WIV?O^ ?8/_L[&T_ZVKK?^"?(#_
-MA'^+_R<F-_\E)2[_;&IL___RZ?_?J&[_Q)EM_]VF9O_'FVG_SIIH_\.06_^_
-MDFG_0!\W_S$B0?\-%!3_'1L=_YF)@/^-@7S_3DM _];)Q/_QV]S_-#<X_R ?
-M)?\:%QW_+# R_Q,5&O\A)2?_'",C_S U,?]$24/_,C(O_QH8%?\H)R[_&Q<?
-M_VYE;/_=SM+_]-[<__G?W/_XW-C__^#<__C<V/_XWM7_]]_6__'8V?_QU]3_
-M;EI6_S$H(O\M)Q__+"@J_RTD'O\J(1K_-3 K_R@B&O\<'2C_'4R"_RA&D/\F
-M38C_O<+(_Y:4C?\D&2#_&!H?_X^)?_^'A'__R\+"_]W$Q?^\M;7_R,+ _]'$
-MO__9Q+__64Q+_R@L+O\B)R?_'R(C_Q<:&_\?)"3_+S8V_Q,8'?\3&1O_%1D7
-M_S<R+/_.P;S_P;FU_SD[,O][A'?_CXV(_RX@'?\<%!+_#1P<_R] 3O\U157_
-M-TMA_S)'8_\N0U__,49>_S%"6?\T/$;_%A@;_Q06'?\Z-SW_&18<_Q<9'O\O
-M-SO_'2DM_R$J,?\C,33_(S Q_S R-?\K)2G_Y]//__+;UO_OVM7_]^+=__?B
-MWO_ZY>'_]>#;__?BW?_]XMO_S[FZ_VAB:O^IJ[#_D8V5_WY[@?^XM;O_IZ6H
-M_VUG:_]Z=X/_(R0U_R@I,/\I)RG___7K_]FE;/_-IGS_VJ1A_\JA8/_%E5[_
-MO91C_Q\- /\@&#K_,"I&_RHI,/\\/#G_3TI%_SDT+O\]-3'_U,3!_^W9U?\V
-M.SG_(R@M_R0D)_\M,C+_%AH8_S$S,?\_/CW_+3(R_R(F*/\G*2S_'1@>_VQF
-M9/_$M[+_[M;3__'7U/_VW=C_\][9__'>V/_XW]K_[MO3__G<V/_BT]/_4DI.
-M_QT;)/\L-TC_'"(L_VMB6_\@+$G_*20D_R<I)O\S/5+_)R<T_Q@M1O\]:)S_
-M,UB9_RU+@__$QM7_GIZ;_QT5&/\9%QK_@H5Y_X>%@O_)O[O_ULC%_[ROM/]J
-M8&/_T<7!_\R]N/]M9V7_)B@K_R(G+?\V.3[_)BHL_TI.4/\[/T'_1TQ,_SL^
-M/_\@(2+_'QT?_];*S?_&O+__&A88_QX:'/\Q-CO_*B0H_Q8>(O\N/TW_,3]8
-M_SE#3?\]4&+_,$1@_R8S1O\1%Q__.D=8_RXY1/\=&AG_*S \_RPL+_]A863_
-M+#0^_S=!1?\@+"O_+#4[_R0Q-O\K-SO_)BPN_RTK+?_GV-/_[]K5__+=V?_U
-MW]W_^.'B__;@WO_VX=W_^.'<___GX/_FU=7_<G%X_ZVOM/^9E)K_<6QR_["K
-ML?^HHZG_@GU__UI<9/\?)C3_,#$X_XN,C?_]\.O_X:MQ_\ZC<__=HU[_VJ=K
-M_ZV%:_\H&Q;_&!,7_Q )%?\8$QG_-C,N_SDT+_\Q*2?_&Q<5_S K)O_+O;K_
-M[=O8_SD^/O\<(2?_(!\E_S$W+_]'2T+_,S0N_QP9&/\I)2?_)R @_XU_?/_8
-MP[[_[MC/__?=U/_[W]?_\]W4__C>U?_TWM7_\N+8__7BV/_AS\O_V,7+_SQ$
-M5/\M057_.T5:_R=!;/\7("[_GY.$_R Q5?];763_%QXD_QLS6O\C,$G_$BQ-
-M_R=6C?\L69G_,4V&_[Z^S?^NL*W_0#@[_QD4&/^!A'C_@'Y[_\:\N/_5QL'_
-MNJZQ_X%Y??_&O;W_R;V^_T1 0O\/%1?_&!HA_R,G*?\3%QG_%!@:_Q@<'O\1
-M%!7_'A\@_S$O,?\Y-3?_-C$W_S@Y0/\W.4#_'!LB_R8O+_\B(2?_'2HW_RT^
-M5O\Q/E'_)2HO_QXH-_]%3V3_EI6;_ZZII/]W?HK_,#I(_[*MK?\Y/TG_04)#
-M_]'-S_\P-#S_-3U!_QLD)/\L,SG_("TR_S$]0?\8'B#_%187_]_0R__RW=C_
-M]=O8__G<V__WV]W_]MW>__#9VO_OVMC_[]G7_YJ.D?^$AHW_J*NP_Z";G_]F
-M867_K*>K_Z:AI?]S;G#_$1(=_R F-O\N+C?_H9V?__SPZ__=IVW_RJ!R_\:7
-M7?^ND'K_.2(S_QX7-?\K)$+_*"$S_QP7'?\?&AK_(!D9_QH3&O\=&!S_*24C
-M_\["O?_SW-?_/STZ_SDW.?]A6EK_-C@U_QP<&?\G)2+_+RHJ_YB,A?^FEHW_
-MT[VT_^_3R__ES\;_\-C/_^W1R?_LULW_\M;3_^+)R/^RH)W_N*:C_T8Z-O_6
-MSMC_-$=9_S1.7/\[/DG_.%:"_Q\?(O^QFGW_)3MB_T-%3/\Z/S__'#%4_Q8@
-M-/\@,D[_%SAM_R=,C?\L0'K_N[G)_X**AO\D("+_&!,7_W=Z;O]V=''_M:NG
-M_]?'OO^^L;#_8%M?_U)-3_^PJJ[_B(J/_R$F*_\<'R3_&1T?_RTQ,_\R-CC_
-M)RLM_R4F)_\>'![_'QL=_YF4EO\X-SW_1DM1_R\T.O\7$QO_("0B_R$>)/\A
-M+CO_,$!0_SD[0_^IHJ+_H**Q_TU79O][>W[_YN#>_Y*9I_\V/TW_P[BW_S@]
-M0_\Y/CS_S,C&_S<Y0?\Z/T3_&B$A_S U._\3&B#_'B,H_RPJ+?\I(23_Y]//
-M_^W8T__KV=7_\N3A__KDW/_VW=;_\=S7_][,R/_IU]G_24-+_WR%C/^8FZ#_
-MI:.E_TI&2/^DH*+_HIZ@_WES=_\G)S3_(R@Z_RPL-_^MI:C___+I_]FC:O_ 
-MEVW_?5PX_QT;%O\1#AO_%!$>_QD1)?\T+D+_$ T9_Q84%_\8$QG_% T5_Q(/
-M%?\K*"?_Q;NW__#6S?^KHIO_:V5C_R,9%?\E("3_&10:_Q,.$/\<%Q?_$@T-
-M_R(='_\?&!__(QPD_RH?'O\T)"'_.",A_RX<&?\G&1K_(AT?_QTB(/]U>7?_
-M0T5#_];1T_]::WO_&B8J_Q89)/\F3H;_&A\K_W)B4O\=-%[_<W-\_U953O\B
-M,$?_7&)L_RDP1O\+'TS_(CQ[_R@Z=/^XM<?_76-?_S<X.?\4$A7_='9M_U)0
-M3?]G7UO_T<*\_[JOKO]*2$K_B(6$_XB#A_]*3%'_+#$V_RTP-?\E*2O_*2LN
-M_R$C)O\3%A?_&QT;_Q\='_\?&QW_BX2$_S,S-O\Q-#G_*R\Q_Q@3%_\4$@__
-M(!L?_QPF,/\@+#/_O;>[_^C;VO]\?8[_/$Q6_W%X?O_?VM[_-SU-_S8]2__'
-MN[?_049,_SD_.__8TM#_,C,Z_S(U.O\K+S'_*RTT_RHJ,_\;'2+_O+2X_X1X
-M>__CSLG_D7UU_SXU+_]&1#__\N'4_Y^'>/^LFHS_@W=N_]_0U/]!0$?_769M
-M_T!#2/^;F9O_&147_YJ6F/^GHZ7_<&MO_R(B,?\E*#K_+R\X_ZZFJO__[M;_
-MQYMS_SX>!/\<%17_&108_Q40%/\7$A;_%A$5_Q,1%/\6%!?_%1,6_Q43%O\4
-M$A3_%!,9_QD4&/^^LJ[_Z-7-_VI=6/\E'!S_2D \_TI%1?\9%1?_%A(4_QH6
-M&/]12T__-2\S_R8@)/\Y,S?_%A$5_Q<2%O\9%!C_&A49_QL9'/\5&1O_.D1!
-M_U%64/\R-T/_[-O._S5#6/\G(R'_$!8F_S1:C?\;&RK_4T X_QTI1O\9'"[_
-M&AH=_Q4=,?\;)3#_'2 Y_Q <.?\C-V3_(#UW_ZVQQO^2C8__+2\T_Q89&O]P
-M<F__-#4O_TA&/__+N[C_KZ6H_RDK*?] .S7_N[.O_XF$A/]]?G__*2TO_QL?
-M(?\>&R'_)R(D_TA#/?\9&A3_$1$4_RDG*O^&?GS_+RTP_Q,6&_\0$Q3_*BXL
-M_V=F9?\P,3+_'2 E_SD^1/\U,S;_+2PK_T!#5?\Q04K_@I"/_]W9V_\P-$G_
-M-D!/_[^WL_\U.D#_/$$__\W)Q_\O,3C_-C<^_SX^1_\G*C7_)24R_QDB*/^'
-M@H3_M:ZU_][3R/^&<67_4U)'_RTL)?_?T,O_CGEM_ZF8B/]H9%S_TL+&_S]!
-M2/\V.D+_0T)(_YB6F/\B'B#_E9&3_Y>3E?]J:&O_)24P_R$C,O\T-#?_K:BN
-M___MX/\L'P[_'QPB_QT:(/\A'AW_'AD=_QD4&/\9%!C_%A07_R >(?\O+3#_
-M-S4X_SD[0/\_0$?_5E%7_\:YM/_NV]/_BGQY_T4V.O\I%QG_%@\/_Q,/$?\8
-M%!;_7%A:_VME:?]=5UO_2$)&_UM56?]54%3_%1 4_QX9'?\2#1'_C8>%_ZVE
-MH_^]N+/_N+"L_Z6DJ__"L:3_4F)\_R,@'_\3&2/_1EN+_QD;(_]>4TC_$Q@Q
-M_QH<*_\2$A7_%ATK_RHS.O\5%RS_#A4I_Q ;/?\C07G_HZF__XJ"AO\I(2O_
-M%1,6_V9E9/\B(A__,S0N_XZ%?_^BG)K_%Q47_RHG(O^(@'S_C(6%_Q\:'/\9
-M%QK_%A06_Q04%_\8%13_,28?_V5=6?]84U?_-#(U_XB ?O]544__@()__X:(
-MA?\W/#C_&!L@_V-C9O]N:6G_L*RN_[VZN?]W=V[_.SY#_SA#1/]\B(7_W-C:
-M_SD]4O\Q.TK_OK:R_S,X/O\^0T'_S\O)_S(T._]"0TK_-S= _RTP._\E*#/_
-M(RTQ_[RSL_^VJ[#_X-/&_XAN8/]223O_8EA-__'<U_^/>F[_G(]^_VEC6__4
-MQ,C_.#I!_S@\1/\^/4/_D(Z0_R <'O]>6ES_-# R_VUK;O\F)C'_(2,R_S,S
-M-O^OJK#_^-?H_Q@:&/\6$AO_& X7_Q02%/\5$!3_$PX2_Q@3%_\Y-SK_/SU 
-M_TI(2_]%0T;_0$))_T-%3?]'0DC_T+^Y_^W7S_^$=7;_(!@<_QP7&?\7$Q7_
-M&!06_R\K+?],2$K_6U59_TQ&2O\4#A+_(QTA_S$L,/] .S__&A49_Q0/$_^Z
-MKZC_Q;&I_Z")A/^ ;&C_:V-F_[BFF/\S1F3_&!D:_Q(7'/\C)E#_%1@=_UQ8
-M2?\:&"O_'1TH_QH8&O\6&"#_(RPR_Q86)?\4%A[_&!PQ_R(Z:_^4EZC_I)N;
-M_T,^0O\<%AK_03Q _QH8&O\;'1K_2DA _Z&>F?\:%AC_+"LJ_T! /?\R+R[_
-M$P\1_QH5&?\>&QK_*"PJ_VEI9O]B4DG_MZJE_\*ZOO\E("3_9U]=_Y^7D__B
-MWMS_<7-Q_TM/4?\V.#W_7UI5_V)64?]/35#_6%)6_TU-0O]+2DG_&1P=_W5^
-M?O_=V=O_/$!5_RHT0_^_M[/_1$E/_S@].__/R\G_*2LR_ST^1?] 0$G_*RXY
-M_R8L-/\9)"7_P;:U_\*RMO_CU,[_=5U4_U!&._];44/_Z]3/_W]L8/^+@G'_
-M9F!8_]3"QO]!0TK_.CY&_T5$2O]^?'[_(Q\A_Q\;'?\B'B#_:6=J_Q@8(_\5
-M%R;_3$Q/_[*ML?_YV/?_%A$5_R$1%?\=#QC_%!(5_Q40%/\8$Q?_%Q(8_PX)
-M#?\U,#3_1D1'_U!-4_]&1U+_5EED_TQ'3?_&M:__Y]+._XQ_?O\;&1O_%1@9
-M_Q43%?\8%!;_&A88_Q82%/\1"P__#@@,_R :'O\;%1G_% \3_R ;'_\4#Q/_
-M'AD=_S\^,_^]M*;_P+*I_[RVKO_'O[O_JIN._TA;>?]34%;_&A\?_RLF2O\<
-M'B'_6%9'_QX8)O\?'2;_&1<:_Q04'?\E+#+_$Q8B_PP-%/\:&B?_#!I!_T9&
-M4?_ N;/_)B@F_QX9'?\6$17_%A89_Q(5%O\E)A__5E-._R,?(?\A(R'_)"DE
-M_S]$0O\?(R'_4U%3_VYL:?^*B8C_'1\=_XMX;O_(M+#_UL?+_R,=(?]:5%+_
-MP[V[_^+:W?^!?H3_*"HQ_R ;(?]Q96'_?G-L_SH\0?\7$AC_6%9._S0Q,/\Z
-M.#O_;7%S_]G6U?\Z/U'_,3M)_\*ZMO] 14O_.3X\_\C#P_\G*RW_/D!#_T9'
-M3O\H*S;_,C8^_Q<B(__#N;7_QK2V_]?.R/]20SW_0CXV_U!(/O_LU-'_<&%4
-M_W9R7?]A6U/_U</'_T5(3?\Y/47_-C,Y_V]M</\E(2/_'AH<_R <'O]U<W;_
-M@'^,_RPM/O\Q,SC_L*NO_^W;Z?\B&"+_#Q 7_Q 2%_\:%1?_&106_Q40$O\9
-M%!;_(!H8_S(N+/]*14G_.S<__TM(5/])25;_.34^_[FLJ_]K75[_2T,__V]J
-M9/]?6UG_%Q(6_T5 1/^CGJ+_&108_R4?(_])0T?_A'Z"_V]I;?]G867_9V%E
-M_X!Z?O\>&!S_+RHD_ZF?E?^/@7C_:V-9_W%@6O^2C8C_0%-E_R$9)_\9&1S_
-M(R$T_R A*/]F85O_%A(:_Q\?*O\6%B'_'AXI_R<J-O\M,#S_%!0A_Q03(/\7
-M&2[_'R$I_X>$@_\6&!W_&1@>_R<E*/\P+C'_'1L>_QX='/\M+"O_-#,R_T)!
-M0/\N+2S_*RTJ_WA]=_^@GI?_CHB&_^#5VO\;'!W_;5Q/_]W(P__MU=K_,2DM
-M_T$\//^UM[7_XMC;_X:$A_\R.C[_'1LD_VID:/]H96#_4590_VEG8O]$03S_
-M8U]=_R4B(?^)B8S_X]W;_SQ 3_\\1E3_M[*M_T%&3/\]0$'_H)ZA_S Z-_] 
-M1D+_24A._S8Y1/\I*C7_(BHL_\2YN/_$M;G_V<W(_TU$/?]!.S/_4D= _^33
-MT_]<4DC_9V13_U=*1?_5P,;_1$=,_X&$B?]V<7?_6%):_U505/\=&AG_'1@>
-M_V]J;O]Q;7W_*"E"_RPN-O]I;&W_XMCA_R@C)_\>(![_,S$L_S<S,?]!/3O_
-M3TI%_U502O]&03O_03XY_T9$0?\\.CS_*BDP_S(S/O\X-C__,BLK_]7(Q_^H
-MGYG_=G!H_VED7_\=&!K_(!L?_Q(-$?]P:V__'1<;_T$[/_\;%1G_65-7_Q80
-M%/\E'R/_:6-G_QT7&_\='AC_96-<_Y")@_^;FI/_C7MX_Z:<F/\_4%[_%1,C
-M_QD;'O\@'C'_&1DB_R4C(/\M*S3_+2TX_RLK-O\E)3#_("$L_R8G,O\4%!__
-M$Q <_Q@7*/\<'2C_6UU@_R,B*/\D(A__-C,N_T9#/O]"/SK_/CPY_QX>&_\_
-M/SS_0T- _R0B)/\?(1__/T1 _V=D7__-R,/_ZMO@_R<G*O\]-2O_U\; __/;
-MX/\G'R/_-"\O_[BUM/_AU=C_EY>:_TM56?\6&!__)R@I_VUL9?]+3T?_8F-<
-M_RHK)?]?9&#_45E6_XJ.D/_AV]G_/T-2_SQ&5/^ZM;#_049,_T!#1/_+R<S_
-M.$%!_T%&1O]*25#_,30__R@J,O\D+"[_P[BW_[ZOL__/QL;_0S\]_SLY-O].
-M2$;_V-#3_T='1/]04TW_249%_]/"RO]15%G_MKF^_VED:O^DGJ;_)B$E_VIG
-M9O^AG*+_<6QP_W=S@_\L+4;_+C X_V%@7__GVMG_/C@V_S8U-/\Y-SG_/3]'
-M_QXA+/\;&B#_(Q\A_S(K*_\U,#+_.S<Y_SLZ.?\S,S;_+2TV_S<Y0?\J*"O_
-M:EU<_UI/2/]V;F3_AG]Y_QX9&_\8$Q?_'1@<_QT8'/\;%1G_7%9:_QX8'/\:
-M%!C_'A@<_R<A)?\F("3_(AP@_Q4.#O^>D9#_,R0D_R09&/\G&1K_3D=!_SA#
-M3O\:$R3_%!46_Q<4)_\I+#?_,3,V_R0D+_\='2C_(2$L_QP<)_\4%A[_$! 9
-M_Q,1&O\3#QC_%A,@_Q<:)?\H+3/_/#H]_S\].O\].S;_/3LV_S\]./\Q+S'_
-M'AP?_QH8&_\<&AW_'!H=_Q<7&O\8&QS_BX>%_]#(Q/_IU]O_*28L_S4S+O_4
-MQ\+_[]?<_RXF*O\Q+"S_MK&Q_^G9W?^8F)O_6&9I_YRDKO\3%AO_3DY+_WM]
-M>O]76%G_*RTP_RDS-_\X1TS_@XB-_]O5T_] 1%/_.4-1_XN&@?\^0TG_1DE*
-M_\O)S/\Q.#[_0D5*_SX]1/\I+#?_-3<__R@P,O_!MK7_OJ^S_]/1SO]#0T#_
-M04=#_UI:5__,RL?_3U%._UA=6?];75K_T+_%_TI-4O^TM[S_:F5K_YR6GO\F
-M(27_IJ.B_YV8GO]J96G_=7&!_RDJ0_\R-#S_B82(_]C0WO\3%B?_.4=<_Q$>
-M._]!3&7_*"]%_QL=+/\<'"?_(1HB_RTF+?\P*S'_,S$T_S0O,_\_04;_-CA 
-M_SHX.__8R<G_S+VW_WEN8_]Y;6C_&A47_V!;7_]13%#_%Q(6_R(<(/\E'R/_
-M3DA,_UI46/^ >G[_,"HN_Q80%/\W,37_&1<9_QP8&O\B'1__'QT?_Q00$O\N
-M*2/_/45/_Q0*&?\3$13_$Q B_R$D+_\@(2C_'!PE_Q<7(/\<'"7_&AHC_R(B
-M*_\;&R3_%A0=_Q<3'/\5$A[_%!0A_Q49(?](24K_24M)_RHM+O\<'R#_&AT>
-M_Q@:'_\8%Q[_&A8>_QX?)O\F)2O_.#H]_QPA(?\Z.SS_O+FT_^?5V?\F("C_
-M+C(P_\*VL?_UW>#_*B(F_R\J*O^SK*S_V,O*_Z*=H?]7:V__FZ*N_Y>9H?\G
-M)BS_'ATC_R(F+O]E9FW_L;;"_T9=:?^"BY'_V]73_T-&4O\Z1%+_LZZI_T-%
-M3/\[/C__OKR__S$V//\[/47_0#Y'_R<K,_\N,#C_)2TO_X%Y=_^[K[+_W,K&
-M_][+Q?_>S<?_W<G!_^+)PO_0N[;_V,3 _]&ZM?_?R<O_4U9;_Z6HK?]74EC_
-MBH:._R4@)/^BGY[_FY::_V5@9/]P;G[_)RA!_S,U/?]N<WG_Y]3D_R,=*_\P
-M.DC_&R R_R$F./\8&RS_%14@_QL6'/\9%1?_'!@:_R<C)?\U,3/_0SP\_S8Q
-M-_\Q,#?_+B@L_V5=6_]P:6/_3$D^_TY+1O\B'1__&1,7_Q<1%?\4#A+_&!(6
-M_R,=(?\9$Q?_%A 4_Q\4&?\7#Q/_%Q$5_QH5&?\6$1/_)!\A_R0?(?\D'R'_
-M$A 2_QP7$O\,$1W_#Q,B_Q(.%_\8$Q__%A$=_QP7(_\<&B/_%Q8=_Q85'/\9
-M&!__'1TF_QL;)O\;&R;_%14@_Q(0&?\3$1K_%A4;_RPM+O\N,#/_&1L>_R,E
-M*/\F*"O_("@J_RHN,/\M+3#_*R\Q_RDJ*_\O+S+_'B(D_T-(3?]%2DC_T+_%
-M_R\F+?\H*2K_KJ*=__7=X/\I(27_+"<I_[RPL__2T<K_LZ*M_TIG<O]RAHK_
-M25QD_VYWA?]24E__5%QL_SY*4?]XDJ7_3FAV_WJ @O_;T\__:&=T_S [1O^@
-MGI;_0#]&_SM!0_^^NKS_+"\T_SD[0O]+25+_*RXY_R4H,_\C+S/_@7Q\_\>\
-MP?^GDXO_O:.6_["6B/_!J)?_R+&?_\VRH?_!I9?_R;*F_]O'P_]:7%__KK"X
-M_UA56_]U<7G_)R(F_YN9EO^/BXW_75A:_VMK>O\I+$7_-#0]_VA=8O_MV>/_
-M(A@A_QT<(_\='"/_*2,K_Q@2&O\8$Q?_'QT?_R0@(O\>&AS_'!@:_QH6&/\>
-M%Q?_)2 F_ST\0_\F("3_HYF<_[2NK/^)AH'_+"DH_QX8'/\4#A+_KZFM_QL5
-M&?]P:F[_*"(F_UM56?\W,37_F8Z3_V1<8/^"?(#_$PX2_Q40$O\F(2/_)R(D
-M_Q\:'/\.#A'_%A(4_Q(>,_\H-5+_$A$>_Q(/&_\4$1W_%Q0@_QL8)/\>&R?_
-M'QPH_QH7(_\@'B?_'QTF_QH8(?\2$!G_$1 7_Q(1&/\3$AC_%!,9_R$C)O\>
-M("/_.CP__SH\/_\4&AS_-SD\_U!+3_^4B8[_:V1K_X)]@_]"0$/_8V%C_Z6C
-MH/_IVMO_*R4I_RXN*__-P;S_\MK=_R8>(O\I)";_L*"H_\# O?^ZJ;G_,TQ=
-M_V9U>_]OA)#_;H:9_UEXBO]RD*;_;Y"<_V*-G_\H/$K_@H2'_]C0S/].35K_
-M.41/_UQ>5?\Z.T+_,S<Y_W)S=/\P,SC_/#Y%_T$_2/\R-4#_*RPW_R0N,O^[
-MLK+_S<#%_\"LI/^WG9#_LYF+_\.JF?_$JI7_S:^:_\.DDO_)L)__X,G$_W1U
-M=O^IJK'_7UI>_V9B:O\E("3_E9.0_XR(BO]E8&+_=76$_RTP2?\P,#G_KZBH
-M_^G<Y_\;$1K_)A\F_R ;'_\B'2/_)!\E_R<D*O\M*C#_&!,7_QT9&_\7$Q7_
-M%1$3_Q<0$/\<%QW_/3Q#_R0>(O]",CK_,2 F_R$5%O\F&R#_'!,:_QT7&_]-
-M1TO_&A08_Q<1%?\<%AK_*B0H_QP6&O\>$QC_% P0_QP6&O\7$A;_%A$3_QT8
-M&O\G(B3_'QH<_QL9'/\>&AC_$AHJ_Q8=,?\7%R+_&QLF_QL;)O\;&R;_'!HC
-M_QT;)/\>'"7_*2<P_RXK,?\P+3/_%Q0:_Q,0%O\3$Q;_$A(5_Q44&_\4$AO_
-M(B0I_SY 0_\J+"__*BPO_RXN,?]45EG_0T5(_Q</$_\7$QO_-#,Z_S$L,/]+
-M1D;_J:*<_^O8V/\J)BC_+2HE_\F]MO_KT];_+24I_S(M+_^SI*G_?()Z_[NQ
-MN_] 5&+_DXB/_[Z]RO]"5VG_1W*$_T=]A_^TO\;_8%AL_RY#3_]N>7K_WM;2
-M_TE(5?\M.$/_+#0J_TU.5?\[/4#_+S(S_R<L,?\Y.T+_2DA1_S(U0/\K+#?_
-M&R,G_YR0D?_,O<+_PZ^G_[ZDE_^]HY7_OZ:5_\:NF__%JYC_Q*:6_\2MH/_?
-MQL'_<7!O_[.SMO]13$[_65-;_R8A)?^0CHO_B(2&_V9A8_]F9G7_*RY'_S(R
-M._^HH*/_Y=OL_S0L-O\M)R__'ALA_RHL,?\C)2S_(1\H_RXI-?\?&B#_'AH<
-M_Q@3%?\:%AC_)B$C_R4C)O]!0$;_)R,E_Q@3&?\7%1C_%A<8_Q06&_\0"P__
-M&A08_QD3%_\9$Q?_$@P0_QH4&/\3#1'_&Q49_QL3%_\1"0W_$0L/_Q$,$/\6
-M$1/_'!<9_R,>(/\C'B#_'1@:_R,<%O\<'B/_*",I_QX:(O\='2;_'1TF_QP=
-M*/\L*S+_,C$W_R ?)?\8%QW_&A<=_QH7'?\9%AS_%Q0:_Q<7&O\='"+_)B4L
-M_QT:)O\7%AS_7EYA_S P,_],3$__+BHL_QT@(?\Z0D3_&1L>_Q47'_\<'"7_
-M$Q87_V-?7?_$O;?_ZMK7_RHF*/\G(1__LJ:?_^/+SO\P*"S_,"PN_\.WL_]N
-M=W#_N[6Y_S]27/^0D9+_PL3)_S<]3?\Y057_>H&'_]3,RO]H:'?_/$95_SQ"
-M1/]T;&C_3$M8_RXY1/\1&Q+_(B0I_S@Z/?\5&AK_)BLP_SD\0?])2$__,C8^
-M_S0U0/\@)2K_JZ*B_\:WO/^LFY7_JI2+_ZB3A_^?BWW_EXA[_Y>%>_][:&#_
-MBGQS_^?2S?]C8V#_JZNN_TI%1?](14O_(!L?_X)_?O]I96?_9%]C_UU=;/\C
-M)SW_/#U$_Y60EO_DT>?_*28L_S V0/\V,S__(R,L_Q,4'_\3%!__.SQ'_RLD
-M+/\N+"[_/S0S_UI25O]965S_-#<X_RTR,O\F)23_(AT?_R4@(O\B'1__)2 B
-M_RPD)_\D'!__*2$D_RLC)O\I)";_(QX@_R@C)?\F(2/_)B$A_R$<'/\D'Q__
-M)!\?_QH5%?\B'1W_)R(B_R0?'_\B&A[_(QP<_R$?(O\8(3+_$!<I_QX>)_\L
-M*2__(" I_QX;)_\6$1W_%Q(>_Q<2'O\6%!W_&1<@_QT;)/\?'2;_&AHC_Q<7
-M(/\<'"7_,S,\_U=46O\J*"O_$ X1_QH8&_]@8%W_>'IW_SP_0/\5%QK_'B E
-M_T- 1O\9)B?_65M>_\6RLO_RU='_-R<O_R,C)O^)BX+_R[>Y_S4J+_\Q+S'_
-MSL*Y_V]UA?_,P<#_.TA9_Y".D?_*Q<7_-#Y-_R\[2O]Y?G[_V];1_VUO?O\R
-M0E7_+3LZ_U122_]245[_,CQ*_QD='_\5&1O_,C8X_SH^0/\Z/T7_/3]"_TQ.
-M4?\P-#S_)2LU_R$D*?]K:&?_N["U_]/(Q__-P[__U,K&_]S2SO_EV=7_Z-K7
-M_^77U/_JW-G_]N+>_UQ>7/]L;G'_)"$@_SLY._\?'2#_1D1'_QH8&_];6F'_
-M'A\P_R0G./\T.#K_@H""_^'3[_\K+37_2%%?_RXP/_\:'2C_)BHY_QTA,/\0
-M%"/_5U!:_VEK;O^^L+'_Q+G _V5E;O].4%C_1DE._RHE)_\E'A[_(1H:_R,<
-M'/\C'!S_*"$A_R$:&O\I(B+_+B<G_S$J*O\F'Q__*B,C_RTF)O\J)27_)R(B
-M_RTH*/\K)B;_-"\O_RDD)/\E("#_(1P<_Q\A'_],/S[_/#4__T-GC/]4;(W_
-M#10H_Q<4(/\7%1[_&!4A_Q,0'/\8%2'_'1HF_QH7)/\?'"G_&18C_R =*O\T
-M,CO_*2@O_TA'3O\?'B7_'AP?_Q,1%/\/#1#_"PD,_Q<2&/]".#O_'A00_Q@:
-M%_\6%Q#_-C4N_R$X,_]-7V/_/T%(_]?(P_\R)R[_'!\D_SA"./]E65K_-2\S
-M_S@T-O_*OK7_)2L[_\_$P_\V0U3_F9>:_\W(R/] 2EG_.454_VIS<_]S<&O_
-M?7^._S% 4_\T0#__1T4^_U958O\B+#K_/D)$_SD]/_\_0T7_/4%#_SQ!1_\W
-M.3S_/D!#_S T//\G+3?_(20I_R4G)?^BG*#_YM'/__OBW?_XW]K_^N'<__WF
-MX?_ZX][_^.'<__GBW?_TV-K_;6MM_R8F*?\X-3#_DY*1_R4C)?\B("+_(1\A
-M_U-26?\N+T#_)"<X_S8Z//]/34__XM'I_S0S.O]57&C_(!\L_QP;(O\B("G_
-M(1\H_R$?*/\R+C?_&QXC_]#!Q?_9R-+_7%ML_TQ/8/\_/TC_*R,F_RL@'_\L
-M)"+_*2$?_RLC(?\L)B3_+RDG_RDC(?\F(![_)!P:_RTE(_\N)B3_+24C_R\H
-M*/\T+R__(QX>_RTH*/\U,##_'AD9_RTH*/\D'Q__)"(D_XM^>?]%-SC_)C15
-M_Q(>._\8&2K_%A,?_Q85(O\>'2K_&AHE_QX>*?\8&"/_%!,:_S(Q./\?'B7_
-M(!\F_QX<'_\>'!__'!H=_R<E*/\I)RK_$Q$4_R$?(O\F)"?_'!LA_V)64O_#
-MLJS_8VEK_QXY.O\*)"?_'D=,_V2%D?]:?8K_HZZI_S8Q,_\M*"[_MKJR_\RZ
-MO/]'/$'_*2<I_\J^M?]$2EK_U<K)_SA%5O^+B8S_R,/#_T),6_\W0U+_*C8U
-M_TQ*1?^#A93_)"Y"_R8R,?]!/SC_3TY;_QLE,_\P-#;_*BXP_R\S-?\G*RW_
-M*2XT_R\Q-/\K+3#_+3$Y_RHP.O\A)"G_)"@F_S4U./_(NKO_QK2V_\&OL?^]
-MJZW_K9^@_Z&5EO^AE9;_F8V._Y-X?O]*14G_-C0V_U-.2/]N;FO_&AD8_R8E
-M)/]B86#_6%=>_R@I.O\D)SC_-#@Z_TA&2/_AS^/_,2PP_R(C*O\R+C;_)2 B
-M_Q0/$_\>&1W_,2PP_T,_1_\H*B__S+_$_]G(TO]85FG_1DE;_T-#3O\I(27_
-M*A\>_S0I*/\N(R+_*R ?_S H)/\L)R+_-"\J_R@C'O\R*B;_,B<F_R\D(_\N
-M(R+_*2(B_RHE)?\<%Q?_%Q(2_QT8&O\=&!K_'1@8_RLF)O\=%AW_A7IS_W9I
-M7/]'.$/_,BDZ_R4>*/\>&B/_&ADF_QD:)?\8&"'_*2DR_S$Q.O\K+"W_(R(A
-M_R$?(?\?'1__'QT@_QP:'?\7%1C_-30Z_Q<4&O\5%1C_'R A_R\I+?\C)"7_
-M4TI$_X5V</]M='K_5Y&G_TB(I_\P<(__.F:(_RHP1O]P6EO_-R(G_R0A)_^V
-MKZG_T+FZ_V%46?\O+2__S<&X_VIK=O_:T='_04M:_U!.4?_ OL#_1E!?_SY*
-M6?\7(R+_1D1!_X2"DO\D+3[_+#4U_R4B'?]+2E?_+#5#_SD\0?\Z/D#_14E+
-M_S,Y._\W/$'_,3,V_Q$3%O\Q-CS_)"<R_R,F*_\;("#_,#,T_[.NKO_5SL[_
-MV<_2_]?0T/_@T-3_Y-+6_\&PMO^RHZ?_[]78_][3V/]K9FC_=&]I_RPN*_\G
-M)B7_@7]Z_VMI9/]&14O_*2LZ_QH=+O\Q-3?_149'_][1X_\H("K_(!L?_R$=
-M)?\B'2/_&Q8:_Q\:'O\H(R?_&Q@>_QD5%_^EGI[_VL_6_T-#3O\\/$O_0#I(
-M_S$J,?\G("#_(QP<_RLD)/\F'Q__+",C_S4L+/\X+R__,"<G_S(K*_\K)"3_
-M)R @_RLD)/\K(R?_%1 4_Q45&/\;%1G_'!4<_QP7&_\@&!O_*R(B_R,A(_]R
-M;6?_1STO_Z&3D/_2Q=#_8EMG_QD:)?\>(2S_,S(X_R4C)O\@'B'_'AP?_R,@
-M'_\A'AW_(1P@_R$<(O\F'R;_'AD=_QP;(O\O,SO_FI&8_YRAH?\V3T[_15]H
-M_SHW1/^3@XO_N:JN_V%:8?_DW>?_?H&2_T%)7?\N*C+_FY::_\_ NO\W+#'_
-M*R@N_[:II/^]KJ__?7)Y_R@C(__%N;#_FY&-_\C'SO],3E7_%A06_W^!B/]#
-M35O_.D95_QTL*/],3E/_CXJ<_R@R1O\?(R7_2DM,_QX@*/\H*SS_.SU$_S0X
-M.O]"2$K_.T%#_RXQ-O\N,3;_*2PQ_RHM,O\F*S'_*"LP_S0V.?\D)2;_PKBM
-M_[>CF__@R<3_BWEO_Z"-A?^[JZC_8UM9_U-+0?_FU-#_XLW+_Y:+BO\U.CK_
-M,S@]_R$>'?^0BH+_>WEQ_R8F*?\E*#3_*RX__U-26/^%A8+_V,O=_RXF,/\Q
-M+##_'QLC_QL7'_\B'R7_'1H@_S M,_\Q,3K_%Q0:_S<P,/_CU-G_.SA$_S\_
-M3O\^.$;_,RPS_R8?'_\G("#_+28F_R8?'_\V+C'_,BHM_S8N,?\B&AW_'A<7
-M_RHC(_\I(B+_*2(B_R4@)/\>&R'_'!D?_QT:(/\H(RG_*R8J_RLC)O\M)"3_
-M)",B_V=E8/]F85O_*!T<_[*GKO]S;77_)B<N_QT<(_\B'2'_(!L?_QX9'?\A
-M'"#_(QXD_R(=(_\?&B#_&A0<_R4?(_\A'"#_)B4L_RLO-_^BF9G_IZFL_WR9
-MI?]<AY__0#M5_VE3:/^OGJG_:%YA_]S/SO^-CI7_.TM5_S="0_^.CY#_U<; 
-M_SXS./\G)"K_F).._Y^4D_^6BHW_'AD;_\:ZL_\Z,"S_O[[%_T%#2O]>7%[_
-M-#8]_SQ'4O\\2U'_'RD?_T5(0O^5E)O_*2\Y_UQ?9/\;("7_+C9 _Q@B,/\]
-M1DS_-#H\_T!"1?\9%QK_%QD>_RTP-?\I+#'_+C$V_R$F+/\B)2K_+C S_SDZ
-M._^^M*G_K9F1_^++QO^,>G#_F(A^_\"TK?]_<VS_J)6)_^?7U/_.OL+_13H_
-M_R\R-_]!1D;_0T$\_XV-@/]E9U[_*BDH_RTM./]W=(;_1C]'_[NQM/_AU.;_
-M,BHT_R4@)/\6$AK_&1@?_Q\>)?\='"/_(!\F_QX>*_\G*"__95Y>_]_0T?\W
-M-3[_,# __T0^3/]".T+_+28F_R4>'O\E'A[_(AL;_S J+O\9%!C_%1 4_Q<2
-M%O\:$A7_(AL;_RLD)/\K)"3_-C$Q_R4=(/]^<G7_85E<_R0?(_\A'"#_*R,F
-M_R\F)O\G)B7_76%?_WR ?O^:DY/_+R4H_Q\;'?\9&AO_'QH<_R :'O\B'"#_
-M'QD=_R,=(?\8$Q?_'!<;_QT:&?]44D__CXJ,_T]*3O\?'B7_/4%)_U=<6/_ 
-MPL7_T]'A_[RWR?\C'"W_24-1_]7.V/_JW=S_ZM;8_Z><J?]*0E;_/",T_W=N
-M=?_#M*[_2T!%_R$>)/]L:VK_,"LF_YN.C?\I(R?_N*VF_R@>&O]I:&__1$9-
-M_QL?)_\W0$[_1D]@_S]"3O\0#1K_"0 2_R(7+O\.!QG_*20P_QL;)/\Q-$#_
-M*"\]_R0F+?\9&1S_24E,_Q04%_\;'2+_*2PQ_R\R-_\N,3;_)"DO_R,F*_\F
-M*"O_/3X__[ZTJ?^SGY?_YL_*_Y.!=_^.>W/_P;*M_VE?6_]>4DG_[M_:_^33
-MT__7R,G_14!$_SDZ._\C(1[_85]:_RLP+O\I+2O_1TE1_S0T1_\T+SO_TL;/
-M_]3$V/]%/D;_(R F_R$?*/\W-T+_.3I%_U-47_\F)B__*"@S_Q\?*/](0$/_
-MWL_/_T,_2/]#0U+_/#E&_T [0?\D'!__*2 @_S(I*?\S*BK_&1,7_QH5&_\>
-M&1__'1@<_QL3%O\@&1G_)1X>_R@A(?\P*"3_D8B"_]?(P_]J7EK_)R(D_R$;
-M'_\H("/_,2@H_R0B'_]>8V/_8F9H_XJ%A?]02$;_(!T<_Q\='_\C'!S_)1TA
-M_R$;'_\F("3_*B(E_T])1_^1CHG_G)>1_[2PJ/\V,3'_,"LO_W]^A?\T.$#_
-M9&9D_[NVNO_<UM[_U-31_[W#O_^KL;/_U-'7_^S;V__RW-3_N;6W_S]05O\5
-M)"3_=WAY_[JMJ/]=4U;_'AP?_QT<&_^0BHC_13DU_R,>(O^EF93_@GEY_R\Q
-M.?\R-#S_+35%_SI%5O\(#R/_)1TX_VIDGO]13I#_.#AQ_Q@;2O\:$BW_+RD_
-M_Q01)/\7%R+_&!,7_QL8'O\A(23_J*BK_RLN,_\L+C/_-CD^_RPN-?\C*"[_
-M'B$F_R4G*O\S,3/_P+:L_[*?E__>QL/_DX%W_X5T;O^MFY__;&IL_X)[=?_D
-MU];_X\[,_["?G_^[LK+_)R4H_R\J+O\T,3#_("8H_U]F9O\L-#[_,C=)_S P
-M.__3R]7_U<GB_T=+3?\G,SS_%!XM_S P/?\>'RK_&ALF_R0=)_\8$1C_&1,;
-M_RXG+__DU=G_1T!*_ST]3/\V-D/_3TI0_RH>)_\I'"'_+2,?_R\C)/\:%!C_
-M(AP@_R(='_\J(B7_)R @_RDB(O\K)"3_*2(B_S0J)O]E9F#_X-/2_X%O<?\E
-M'2#_)1T@_RPE)?\J)"+_*R<E_U]?8O]97F/_'!<9_\B\N/\E'A[_(R F_R(<
-M(/\5#@[_&108_VAC9_\H'AK_KZ":_\&_M__$N+/_P+*O_S4T,_\C'R'_&Q<?
-M_S<Z1?]-4$K_R</'_^37XO_FU]C_95]5_VA@7/_CU-C_\M_?__/=V__%O,/_
-M/$%-_R4D*_\^-C3_65-1_VQG9_\A'1__<6=C_RL@'_\E'R/_'ATD_Y.'B/\Q
-M,#?_04Q=_SD]3/\\2$W_!@LG_V9CF/\Y-F;_&! L_QL,'O\>$!G_'Q8=_QL9
-M,_]75X#_4E)Y_P\/'O\E("#_+C0\_T-!0__;TM+_*BDP_RXM-/\V.$#_*RXY
-M_R8J,O\A)"G_*RDL_SHU-_^_L*K_UL.]_^W8UO^>BX/_A8!T_]C S_] 3E?_
-M+ATC_W9VA?_6Q\?_.# S_V]L<O\U-#O_-3 R_[NSK_^0EY#_041%_UI=:/\S
-M.$K_+RLT_Z2=J?_&P=G_,C4Z_QP@*/\3$A__&Q<9_Q,3%O\6%Q[_'!<C_QP7
-M'?\2#A;_*B0L_]#$Q_]33%;_0$!/_T%!3O]02U'_+"(E_RL?(O],04#_-RPK
-M_UA-3/^7CXW_-"TM_R0?(?\F'Q__*R0D_RLD)/\H(2'_,B@D_XF*A/_AU-/_
-MBWE[_R,;'O\E'2#_*R0D_RTG)?\M*2?_8&!C_U-87?\G(B3_FY&-_R0='?\:
-M%QW_(QXB_YB,A_^FFYK_5U!0_RP@'/^^LJ[_@8.!_Z^EJ/_:S]3_,C R_R4A
-M(_\?&R/_-CE$_SX_.?_)O[O_XM/4_^/6T?]13T?_/#@V_\S!QO_GV-S_]=_=
-M_\S#RO\X/4G_&QHA_S(J*/\W,2__0CT]_QD5%_\A&AK_)1X>_R <'O\@'2/_
-M>G)P_SP^1?]'5V?_.T53_SE"0O\;%C+_:5:$_Q4,'?\3%!O_$@X6_Q80&/\4
-M$1[_%Q8=_PH&%O\Q*T'_&14>_R4<'/\_0TO_24=)_];1T?\@'R7_+BTS_S$S
-M.O\N,CK_,#4[_R4H+?\P+C'_(1P>_XM[<O_!K:7_Z=30_YB%>_]Q;67_R[;,
-M_Q<I-_\F'BC_'R4U_\>_O?\M*"K_1#]%_RTI,?\X,3'_GY6+_X6$??^-BHG_
-M9F9O_RHM/O]%04G_Q+W'_]K#X/\E'"/_&!$8_R$0&O\A&B'_&QLD_R(H,/\M
-M,#O_)20J_RXM-/]545G_ULS/_T([1?\[.TK_4U-@_U-.5/\P*";_(148_RP@
-M(?].13__O[.L_]S/RO]&/CS_*"(F_R,;'O\I(B+_)1X>_RDB(O\S*27_B8J$
-M_][1T/^@CI#_*" C_R<?(O\H(2'_+"8D_S L*O]?7V+_76)G_R4@(O^PHIG_
-M95A3_Z:>G/^FG)C_P[>P_YZ6E/\H(R7_*B(E_U=(2/^4DH__WM+5_^+3V/\O
-M+BW_)" B_R(>)O\W.D7_/4!!_[RTLO_:R\O_XM[<_U5:5/\U,S7_8%E@_Z.8
-MG?_MU]C_SL7,_SQ!3?\<&R+_8EI8_U5/3?\:%17_(Q\A_R$?(?\<&AS_'QT?
-M_Q\='_]834S_2$E0_T939/]!2%;_)QTP_STK+?^KDH'_=EI7_UH]//^8=6[_
-MA6%7_X1B7_\K&!+_EH%__Z>1D_\4!@/_-RDF_T)$3/])2DO_U=+1_QP>(?\L
-M+2[_/T)'_S U._\L,3?_)"<L_QP:'?\<%QG_B'9L_\&KHO_JU,S_E8!T_W=O
-M9?_5O=+_&"HX_RPE+_\C,#W_I*">_RPH*O\\-SW_+R@R_T X-O^@E(7_@GES
-M_XE]?O]?6V/_)BDU_SLZ0/^\M[W_S+S8_RDJ,?\4'R;_&QTD_R(B+?\E*C;_
-M/$1._Q,:(/\E)"K_*RHP_SDV//\?&!C_/3E"_SL[2O]*2EG_4U!6_RLC(?\X
-M+"W_*AXA_RLD'O^7BX+_V,S%_UE.3?\J)BC_(!L=_RHC(_\J(R/_*"$A_S F
-M(O^)BH3_WM'0_Z22E/\H("/_)Q\B_RHC(_\K)2/_+RDG_VUN;_]@96K_)B$C
-M_Z21A?_ K:7_Q[NT_\6YL/_(N[;_JJ.C_R@E*_\E(R;_1C@U_[>PJO_?T-#_
-MZMO<_S0Q,/\D("+_'AHB_S<Z1?]&3E+_9EYA_]/'RO][>7O_>GU^_W5[??]H
-M96O_KJ.H__/AWO_8S=3_24Y:_QD:(?\H(B#_)A\?_R8A(?\A'1__'!P?_R >
-M(?\A'R'_'AL:_T8W-_]!.T/_1T]?_U9;9_],3E7_#0,,_RL4'_\R(2?_%0H7
-M_R$4'_\G%Q__&0T6_R$:(O\8"QC_)A@G_R :(O^6BHO_1$)+_T=(2?_1T,__
-M+"XQ_TQ.3/\9'!W_("4J_SQ!1_\I+C/_2$-'_][6V?^)>&O_P:NB_^G3R_^8
-MA';_?W1I_]>[S_\<+CC_+"4L_R8Q//^1D(__*28E_S8P-/\I(RO_1S\[_YN+
-M>_^1AG__D8.$_TE$2O\B)3#_(R,F_ZZLKO_=SN;_)RLS_SM)6/\G*S/_-C8S
-M_T) /?\_.SG_&Q,1_RPM)_\M,R__66%=_]72T?\X.4#_+3 \_SHW1/]I9&C_
-M+"(E_RXD)_\F'Q__)B(@_ST\-?_7R\?_;%M;_R8?'_\A'AW_)R @_R\F)O\M
-M(2+_-2@G_XZ.B__>T=#_LZ*B_RDD)/\D'Q__*",C_RHE)?\X,"[_96=E_V)I
-M:?\B'2'_F8R!_\.RLO^#?';_:6=B_^76VO^MH:+_*28E_R4@(/\X,RW_O;2N
-M_]3(Q/_DW-K_.#4T_R0@(O\@'"3_,C5 _SY%1?_"L[/_S+^^_^_DX_]Q:G;_
-M1U-<_UY=8_^YJZS_Z=K4_^70U?]%15+_&!HA_R0?(?\F(B3_(Q\A_R <'O\@
-M'![_(1T?_R(>(/\>&AS_-2<H_TM&3/]58&O_45ME_T=-7?\H*#?_8%UO_W)N
-ME/\C(CG_$! ?_PT-&O\*"1;_&QDZ_RPG4?\Y-%;_'R$H_Z>EHO]955[_0D5&
-M_];3TO\K+3#_.#HX_S4W-/\R-3K_,#$\_R@P-/_&NKO_Y]C=_Y5_=O_)L*O_
-MY<S+_YZ&=_][<6?_U\#3_R S/_\A&R/_+S4__V)F:/\E)R7_,2PN_R$@)_].
-M1D3_B'EL_XA]=O^1@H/_2T1+_R,E+/\U-3C_H9R<_\3#T/\>'!G_(QL?_Q<;
-M&?\?)1?_/D,W_SE"-?\M.BW_(RX;_R)"+?]ICX#_QL7$_TE$2O] /D?_-2\W
-M_T Y.?\N(B/_)1L>_RLD)/\E(1__("0<_\C#OO^#<'#_,B0E_R0='?\G("#_
-M,RHJ_RTA(O\P(R+_AX>$_]K-S/^_KJ[_*20D_R0?'_\M*"C_,"LK_S8N+/]E
-M9V7_7V9F_R,>(O]V;&'_:EU<_XR*@_^,CXG_Y]C<_["DI?\O+"O_)B$A_RLJ
-M(_^MIJ#_R+JW_^O@W_\Q+BW_(Q\A_QL7'_\P,S[_/$-#_[^NKO^_L+#_\N7D
-M_VYH=O])5F'_5E=>_[*FJ?_AU<[_Y]+7_S\_3/\@(BG_)2 B_R,?(?\C'R'_
-M(!P>_R <'O\A'1__(AX@_QX:'/\K(R'_24M._T926_]:96S_1$]:_SE#3O\J
-M,3__,C%._S G8_\T*F__/S9\_UM1FO\8%4G_95^+_T$]7?\Y04O_E923_UA4
-M7?],3U#_V=;5_S R-_\P,3+_24M)_S R.?\Q,CW_)R\S_\.WN/_DU=K_?G%L
-M_\"KJ?_<R<G_AG)N_W=N9__4O=#_%"<S_R4?)_\W0$[_.3]'_R$C)O\P+#3_
-M(20O_TQ(2O]X:F'_=FMD_Y*!@?]&/43_(R0K_SX\/_^VJZK_O\3*_SY(-_\V
-M0C/_+T P_TQC4/\Y5$/_#"D7_SY?3?\S3CW_/%I*_YBMH?_9T<W_2T=/_S0U
-M0/\M*C;_0SY _R8='?\E&Q[_)R @_R<C(?].3TC_T<?#_YR)B?\F'1W_(AT=
-M_R<@(/\L(R/_+B(C_S(E)/][>WC_U\K)_\BWM_\H(R/_)2 @_R<B(O\I)"3_
-M+B8D_ST_/?]=9&3_'QH>_WMP9?]H65G_LJNE_YN9E/_DU=G_MZNL_S,P+_\G
-M(B+_(2(;_ZZIH_^MGYS_Y=C7_S,N+O\E(2/_)" H_SD\1_\Y/C[_P*VM_Z>6
-MEO_NW]__8UUK_SA)5O]#1T__JZ"E_^'4S__FT=;_/3U*_R B*?\H(R7_)B(D
-M_R4A(_\B'B#_(AX@_R(>(/\B'B#_(AX@_R,;%_]14$__/$5,_XB*D?^+B8O_
-M24]1_SM'3/] 2%+_>'I__T9'3O\H+CC_'"4S_TQ55?]Y>GO_Q\')_SD^2O^+
-MB8O_3TM4_T)%1O_)QL7_+S W_RDI+/^8F9K_/#Y&_S<X0_\O-SO_OK*S_^+3
-MV/]W<FS_R;ZW_]_2S?^9CXO_FI6/_]['VO\U2%3_)B H_SI"3/\N,SC_:&EJ
-M_T(]0?\U-#O_4DQ*_[6IHO]=6%C_D(2'_SHU._\A*"[_0T5(_ZFDI/_&R,__
-M+D4R_TQO5_]UCWK_*#\L_R L*_\Q.C/_-T0Y_R@T/?\_0E3_RL+%_^?8TO\[
-M.T3_/$!/_TM)6?]&0DK_+B0G_RTC)O\G'A[_,"HH_V-<5O_>T,W_J9B8_R8C
-M(O\A'AW_)R @_RXE)?\N(B/_,20C_T1%/__7R,C_S+N[_R@C(_\E("#_)!\?
-M_R8A(?\N)R?_*RDK_SH_/_\?&A[_;U]6_W]O;/^1B(+_I)^:_^C9VO^ZKJ__
-M+2HI_R,>'O\D)1[_KZFA_Y.'@__BU=3_/CDY_R,?(?\C(";_1$=2_T1(2O^\
-MK*G_DX*"_^?8V/^#?8O_-TA6_U]B;?^<E)C_VL[)_^;4UO\V-T+_+C W_R@D
-M)O\G(R7_(AX@_R,?(?\B'B#_(AX@_R$='_\C'R'_*!T<_T=#1?]14%;_P+G 
-M_^K9X_]=5F?_/4)4_T))6_]]=H#_M:FR_^?=[/]44F7_86%P_XR"B__@T]C_
-M/#]$_XZ0CO]03E?_0D5&_\[+RO\H*3#_*RHP_XF(CO\S-#__+C X_RXV.O_$
-MN+G_YM;:_]'!N/_3N:S_U[>O_\RPK/^9C8;_V<37_R,Q0/\E(2G_)BLQ_WAX
-M=?^=F)+_D(N+_X![>_^(@7O_9V!:_UQ=9/^5D)3_*"HM_S=#1_\[1$3_9FMK
-M_][;S_\M*BG_,"XW_S@^.O]_?HO_9D.*_Z-[K_]%+$O_JHJ]_WM8F/_3PLS_
-M[-K0_TI&3_\^/DO_4U)?_ST\0_\K(R'_+R,D_S D)?\^-##_<F9?_]?(P_^L
-MG9W_*R,F_R ;'?\G'R+_,RHJ_R\D(_\Q)2#_B8> _]W+R/_2P<'_)B$A_R0?
-M'_\H(R/_*R8F_R@C)_\I)"C_)B$E_Q\:'O]S8V#_C(![_WIW<O^GH9__X=/0
-M_\J_OO\O+"O_)2 B_RPH)O_$MJ?_=6UI_^?>WO\Z-37_)R,E_R0B)?]256#_
-M1$=3_[JKI?]U9V3_Z=O<_Y6)DO] 2EC_7%]J_Z.;GO^?F)C_Z-O6_T-#3O\N
-M,3S_*B8H_R8B)/\C'R'_)" B_R(>(/\B'B#_(!P>_R(>(/\7$!C_*2XT_\K%
-MR_^\M+C_W-/3_U%59/\A*3/_0$=3_VQN=?^7CH[_W,W2_TY17?]L;G7_=VUP
-M_]W.T_]$1U+_AHN+_V%?:/\^04+_QL'!_R<F+?\K*C'_DY&:_S<X0_\W.C__
-M)BPV_[BKJO_-N;O_MZ*6_\2HFO^[GI+_P:67_YN*>O_4R-?_+BY!_R$C*_\Y
-M-3?_C7QV_]K#M_]!-3;_)R,E_V!>6?^$A7__B(B+_Y2/D_]P<7+_2E-3_U5:
-M6O^'B8S_Z+O?_XA.H/^F9-'_QYS2_UQ(4?\U&3/_1S [_S4N*/^)?7G_FHF4
-M_]3(Q/_MVM3_4T]7_S<W1/]44V#_6UIA_RHB(/\K'R#_+R,D_STS+_^#=W#_
-MU,7 _\2UM?\K(R;_(!L=_RDA)/\T*RO_,28E_SPP*_^*B('_W,K'_]3#P_\N
-M*2G_)B$A_R,>'O\J)27_)R(F_QH5&?\A'"#_'!<;_U1$0?^6BH7_8V!;_ZFC
-MH?_;S<K_U<K)_S$N+?\H(R7_+2DG_\6WJ/]>5E+_Y-O;_SPW-_\G(R7_'1L>
-M_T!#3O\[/DK_L*&;_U]13O_DUM?_K:&J_T)-6/]35U__7E=7_X%Z>O_DU]+_
-M3T]:_RTP._\D("+_)2$C_R,?(?\D("+_(AX@_R,?(?\F(B3_(1T?_RLC(?\S
-M,2S_74Y._ZB>FO_7S\W_3U-B_RLS/?] 1U/_7%YE_X^&AO_FU]S_24Q8_U)4
-M6_]C65S_VLO0_SH]2/]^@X/_85]H_TE,3?_>V=G_+RXU_R\N-?^4DIO_/#U(
-M_SU 1?\N-#[_MJFH_\"LKO^JD8K_HHA]_ZJ4C/^YGY3_CG]R_\K#S_\P,S[_
-M(R8G_XU_@/^3@7W_WLO%_TH\/?\<%A[_(1\B_UQ>6_]K;VW_='%P_W]^??]W
-M?'K_9VMI_UU@8?_FQ=;_;DAI_]RUV/_[XMW_54A-_RDB+/\I)C+_-35 _WIS
-M9_^5C7W_R[^Z_^30S/]'1$K_,S- _S@W1/]655S_*2$?_S(F)_\S)RC_-"HF
-M_Y&%?O_9RL7_Q;:V_RLC)O\B'1__)1T@_RXE)?\K(!__-BHE_X* >?_2P+W_
-MTL'!_RDD)/\E("#_)B$A_R(='?\<%QO_%A$5_Q<2%O\;%AK_134R_Z>;EO].
-M2T;_IJ">_]W/S/_7S,O_,"TL_R8A(_\R+BS_Q+:G_U5-2?_BV=G_.C4U_R8B
-M)/\:&!O_(R8Q_T)%4?^FEY'_4D1!_^'3U/^WK+/_/$A1_U9;8?^9DY'_D(F)
-M_^G<U_]&1E'_.#M&_R<C)?\G(R7_)2$C_R8B)/\M*2O_KJJL_R,?(?\H)";_
-M;6!5_X-[:_^>AWO_<&-8_]K2T/]35V;_+34__T5,6/]:7&/_?71T_^G:W_]%
-M2%3_3U%8_V!66?_>S]3_1$=2_XZ3D_]T<GO_14A)_\G$Q/\T,SK_+"LR_YJ8
-MH?\S-#__.#M _R0J-/^KGIW_KIJ<_XY]=_]P9%W_0CLU_Y*$>_][:&#_R[_(
-M_T$_0?\X,R[_9EM:_SX\.?\J+"K_-C0V_R =(_\V-SC_='AV_VIM<O^9EI7_
-M:&9C_W!U<?]45E/_5%5/_^C;UO];44?_Y-?2_^+.U_]>4E/_-#$E_RPH)O]$
-M.T+_>FYE_XZ%=__)O+O_W<G%_T$_0?\Q,3[_1$11_TA'3O\P*BC_*AX?_S,G
-M*/\W+BC_F(V&_]C)Q/_3PL+_*B(E_R,>(/\F'B'_+20D_RXF)/\V+2?_;FEC
-M_]K(Q?_/OK[_*R8F_R4@(/\D'Q__*",C_Q0/$_\4$!+_%A$5_Q@3%_\P)B+_
-MLJ6@_T-!.O^ZL*S_T\?#_]S1T/\T+R__)R(D_S@T,O^_LZ3_23\[_^79VO]"
-M/3__)B(D_R ;'_\C)C'_0D-._ZB<E_\T*"3_WM'0_\:YOO\\2%'_5EUC_Y60
-MB_^;E)3_Z][9_U!06_\]0$O_)B$C_R<C)?\I)2?_5E)4_V=B9/]33U'_(QXB
-M_RLG*?\J)B3_1T=$_V=87/^$@8?_V-#3_UA@:O]-5EW_2$];_U5:8/]T:VO_
-MYMG>_T-&4O]46V'_1CY!_]O/TO] 1E#_<'-T_VEH;_]'2DO_GIJ<_S0V._\M
-M+#+_IJ*K_S8Y1/\O,C?_+C0^_Y^2D?^QGZ'_:U]:_UQ74?]H:6/_;FIB_WUK
-M9__#LKC_ULS(_]&_O/]V85__JJ&A_R0C*?\_-SO_)B0A_XN.B/]G;&K_455=
-M_W%P;_]^?'?_5UE6_U!12_]344G_X]/*_V=84__ATM+_Y=#+_VQ@8?\Q*C'_
-M.3,[_SPX0?^+@GO_?G5N_[ZRK?_@S,3_349-_SL]3/])2UK_.C8__S H*_\L
-M)27_+RHE_R\J)/^/BX/_S<&Z_]+ O?\N)27_)!\?_RDB(O\J(R/_*"$A_R<D
-M'_]D6U7_PK.N_\S N_\M)2/_)A\?_R0='?\J(R/_(QDC_R,<'/\@&2'_*"$K
-M_Q\D(/^]IJ'_>WMP_\"KI__&P;S_V]/1_S0M+?\D'R'_/34S_ZJDE/]5247_
-MY]C9_TI$2/\I(R?_(AP@_R >)_\M+S3_B(6$_T Z,O_BU-'_R;C _TM48O]$
-M257_E8^-_Z.<G/_FU-#_7%5A_SH[1O\M)RO_,"HN_ZJEI_\[-C;_AWM\_YN2
-MF?\A'27_(AP@_R,=&_\K+2K_-RXN_R ;'__0Q<K_5V%E_TM77O])4%S_4UM?
-M_VUH:/_>T]C_0$-/_S]+5/\T,C3_S<;&_SQ!3?]*1T;_8&%B_T-(3?]02T__
-M+3$S_RTM,/^JI*S_045-_SM 1?\I,3O_6E)0_]#$Q?^*C8[_?W^"_Y^=IO]6
-M76/_+C<^_SL]0O\N)R?_,2@H_[2GHO\J)2?_(" I_TQ'2?^'A'G_I:29_V=L
-M:/]L='C_8W9^_X:(C?^"@G__1T5"_UI54/_8R+[_<6)<_]W/S/_FTLK_=VII
-M_S4M,?\_.#__0SU%_V=@6O]N9V'_K**>_][+Q?]M9F[_0T15_U97:/]'0D[_
-M+24H_RTF)O\K)B'_-C$K_VQH8/_)O;;_U,*__RLB(O\D'Q__)A\?_RTF)O\J
-M(R/_+2<E_TI"/O\J(!S_R[^[_RLB(O\D'1W_(AL;_RLD)/\E%Q__(QL7_R(;
-M(O\N)BG_("$:_\ZRKO]S<F?_PZFF_[BSKO_=U=/_-B\O_R,>(/\_-S7_E8]_
-M_W!D8/_:R\S_95]C_RDC)_\C'2'_(!XG_ST_1/]%0D'_M:^G_]C*Q__1P,C_
-M04I8_U199?^0BHC_H)F9_^/1S?]W<'S_1D=2_R@C)?\J)2?_K*6E_Y2,BO^+
-M?GW_G)&6_R4@)O\J(B7_?W1S_UI<6O_$O;W_MK.R_[RNMO]-55__0DQ:_TE.
-M8/]'3E3_<6QL_^+7W/],3UO_.45._X2"A/_:T]/_.3Y*_ST^/_]765S_/3]&
-M_R@G+?\4&!K_)"0G_[NUO?]"1D[_049+_S$Y0_^1B8?_W]/4_U=I=_\W36/_
-M)SQ5_S!%7?](7'#_%R$O_QT?(O\F)23_4$5*_S G+O\?&A[_I9^7_["EGO^.
-MAX'_;6]M_VYV>O]6:(S_2%%B_U!:2_],3$G_4TY._]?(N_]Z;&/_V<W&_^72
-MR/^ <F__*B$A_T$Y/?])0DG_:F-=_V=B7?]/1T7_T\2__V%<8/\Y/$?_8V9R
-M_T- 1O\N)R?_*R0D_RXI)/\H(QW_<V]G_[VQJO_6Q,'_*R(B_R$<'/\C'!S_
-M*B,C_RLD)/\S*BK_(1P<_R0?'__,P,'_+20D_R4>'O\G("#_*"$A_R@='/\B
-M(1K_%A8C_RDE+?\<'1?_RJVI_W-P9?_,L*W_L*BD_]_7U?\V+R__)!\A_S H
-M)O]X<F+_A'AT_][/T/]L9FK_*"(F_R8@)/\=&R3_/D!%_SPY./^UKZ?_X=/0
-M_]7$S/],56/_1$E5_X1^?/^*@X/_UL3 _XJ#C_]'2%/_+"@J_R\H*/^OI*/_
-MJYV:_X=W=/^BEI?_+RDM_RLC(?^JDI7_44E,_\N_P/^_L+#_N*>M_UAA9_]+
-M5V#_/T94_T=/4_]234W_W-'6_U-68O]#3UC_A(*$_]3-S?\]0D[_'2,E_R\Q
-M-O]/3UC_)B<N_SI 0O\H*"O_OKC _TI.5O\R-SS_,3E#_WUU<__9S<[_-$-0
-M_R<[3_]!5&S_,3]6_V%B<_\C'";_+B4E_R@A(?]@6%S_,BHN_\K"OO^BEY#_
-MBHB#_T]34?\]0D+_<WM]_SI+6?]A8&;_65Q0_U!.1_]C6U'_TL:W_VE=5/_7
-MR,+_XL_%_X5W=/\L(R/_,RLN_T4_0_]H8U[_,2TK_R4>'O_6R<3_AH."_UI@
-M8O^/EYO_8F-D_RLF)O\N)R?_+24A_RLF(?]A757_HY>0_]3"O_\I("#_(AT=
-M_R0='?\K)"3_+R@H_RXE)?\B'AS_3TU(_\O O_\M)"3_(QP<_RLD)/\M)B;_
-M(14>_U588_\@)%'_-S!?_QX<'__'JZ?_<FI@_\>MJO^4CXK_W-'0_S@O+_\D
-M'R'_*B(@_UU62/]V:F7_V\S-_X5]@/\H(B;_(!H>_QD9(O\^/T;_.3@W_[6O
-MI__3QL'_V,?-_T--6/]%2U7_?G9T_UE45/_(N;3_B8.+_T]27?\E(R7_+"<G
-M_ZF=F?^SI)__FHN&_ZN=GO\D'!__+28F_S$F*_]"24G_GJ*@_ZVKIO]B6EC_
-M3%A7_T515O]!2%3_3%18_T(_/O_EV=S_1DE5_T),5O]K:6O_RL/#_S@]2?\J
-M,3?_$1(9_TA(4?])2U+_04=)_RHJ+?^WL;G_/$!(_RPQ-O\P-C[_>W5S_]K.
-MS_\C)2K_'"$G_U-68O\I)##_(ATA_R(@'?\D(AW_(B<E_UI96/]M96/_W=',
-M_[*HI/],4U/_,CX]_XF0D/]>86;_<7AL_Y*(?O^2AH'_?G-L_ZZBD__,Q[O_
-M7%%*_Z:2CO_AR<#_F8B(_S$I+/\X-3O_1#U%_R8A(?\@'Q[_+BPN_[^VL/^(
-M@X/_/$)$_V9R=O]O<7C_+RHJ_S$F)?\K(!__)" >_UM94O]".3/_T,*__S H
-M)O\B&QO_)1X>_S I*?\H(2'_*B,C_R\I(?^0B7O_R;VX_RLD)/\B'1W_*",C
-M_RDD)/\K(BG_6&)?_R I6/\\/&?_'!X<_[VHH_]B4DG_MZJE_W1Q;/_=S,S_
-M/C4U_R,A(_\H("/_/C@V_SLT+O]G6US_E(N+_RLD)/\>&1__&AHC_SQ 2/\\
-M.CS_IYN6_\>YL/_;R<W_2%!:_TE07O]/1TO_(B$G_U!%/O^!>W__0D)/_QT;
-M'O\G'2#_IIB5_]'%OO^JFI?_MJ>G_S$H*/\G(R7_-CP^_TQ04O]85%;_IIZ<
-M_S4Z-O\B*RO_2%%8_T9/7?]045S_AXF,_^/4V/]24&#_-T%+_U]@8?^^N[K_
-M-CE%_R@K-_\_04G_1DA/_T5(3?](3E#_*2DL_ZVIL?])25+_,3@^_S$U-_]+
-M24;_R\+"_R4@(O\B&AW_N:VP_R@C)?\@'2/_'!LA_Q86&?\E*"G_LZRF_]C+
-MQO_BUM+_N[>U_T)'1_]P=G+_4EA4_SD^0__CU]/_[]S4_^S9T?_SX-C_^^??
-M_\2[M?]%.S?_>FQI_]2^M?^:BH?_+28F_S\]0/\V+S;_'!T>_SP[.O^4D([_
-ML:6@_W!H;/\G)S3_0DA8_V9D=/\E'2#_+B,B_RTB(?\E(1__)2,>_R 8%/_/
-MPL'_+28F_Q\8&/\B&QO_*2(B_R\H*/\M)B;_,"HB_Y.,?O_,P+O_*R0D_R(=
-M'?\E("#_+2@H_RLB(O]?9%[_7F5S_UI:9?\;&13_PJVH_T<Y,/^FG9?_85]:
-M_][-S?]$.SO_(B B_QX9'?\N*RK_,BXL_W=O<O^BF9G_+28F_R$<(O\>'B?_
-M04=1_T='2O^;D8W_M:FB_]K(RO]26F3_1$Q@_Q\>*_\6&R#_4TQ&_V5?9_\I
-M)##_*B(F_S@I+?^LEY7_V<C"_Y>%@O]Y:FK_*R(B_R<C)?\O,C?_3E%6_S<W
-M.O^&@8/_'!\@_P\5%_]+45G_0$=3_T=(4_^)BX[_V\S0_T5#4_\W04O_(B,D
-M_S@U-/\L+SO_/4!,_T)$3/],3E7_2TY3_T)(2O\E)2C_L:VU_T%!2O\O,SO_
-M-CD^_TE+2?^0BXW_(1T?_R\H*/\X+R__0CT]_TA&2/]J967_D8F'_ZF=F?_K
-MW-;_U<C#_UI03/]S;6O_:&=F_T]44O\^1D/_3E)0_\>RK?_XW=;_^=[7__[C
-MW/_]Y-W_P+*S_RLC)O\A&QG_K9J0_Z>8D_\P*BC_04 __S8Q,_]%2TW_1$A&
-M_Y&(@O^:C(G_CH.(_RPJ.O]$15S_<6U]_RLC)O\M(B'_,"4D_QX:&/\>'!?_
-M&A02_\B_O_\G(B3_(AT=_R$:&O\G("#_*R0D_RXG)_\M)Q__AX!R_\_#OO\H
-M(2'_(!L;_R8A(?\F(2'_)B0A_UQ@7O]G;&K_9&-B_R(>'/^]J*/_-RTC_YV8
-MDO\].S;_WLW-_V%86/\C(2/_*",E_S8S+O^ >W7_3$1 _ZJBH/\J(R/_(!LA
-M_QD9(O\]1%#_/3Y%_X^'A?]934G_X,[2_T1,5O] 2%C_+BDO_TI&2/^!>'+_
-M(2$L_S4R/O\H(R7_,2<J_Z&1CO_ L:O_J):3_[6FIO\L(R/_)B(D_S<Y0/].
-M4%?_&!H?_TY.4?\>("7_0$-(_TQ06/\[04O_3E!8_VIL;__4Q<G_.SE)_RDS
-M/?]'2$G_;VQK_R4H-/\S-D+_/D!(_UQ>9?]+3E/_-#H\_QP<'_^>FJ+_1D9/
-M_RPO._\N,#?_,30U_TM*4/^KI*3_V\[-_^G8V/_KWMW_XM31_[^MJ?^5A'[_
-M=V1<_^?2S?_MV]?_T\O'_];+RO_3S\W_/T)#_V]Q;__JV];_^=[7___DW?__
-MY=[__^7>___GX/^BD9?_(QL?_QD4%/^,>V[_I)2+_R4@(/\^.SK_1#\__S=!
-M1?]$247_CH-\_X^!?O^IH*#_/SQ(_SY 5?]84F#_+B<G_RTA(O\M(B'_*B4@
-M_QP:%?]G8EW_R[_ _RHE)_\A'![_'Q@8_R<@(/\R*RO_+"4E_RPH(/^!?'#_
-MQ[NV_RDB(O\A'!S_(QX>_RXI*?\H*"7_8&)E_V5K9_]D9&?_(AT=_\*NIO\_
-M-"W_@X)[_QL<%O_:R\S_<F9G_RDE)_\P*"3_4DI _WIQ8_]:3TC_KZ2C_S$L
-M+/\<%QW_+"HS_SE#3?\I*C'_?W9V_R8@'O_6R<[_2DU8_T5(4_^'?'O_7EA6
-M_R@@'O],3UK_.CQ$_QX:'/\K)BC_G9*1_[*GH/^\JJ;_O:ZN_RPC(_\F(B3_
-M-38]_U988/\@(BG_'!XC_XR-E/]*3%/_0$%(_V9G<O]&253_;G!S_Z^CI/]%
-M0U/_*# Z_VAJ;?\Z.#O_)2@T_R8I-?] 0DK_5EA?_T-%2O\W/3__+2TP_VEE
-M;?\_0$?_,#$\_S4W/O]&2DS_+S$V_WYR;O^@BXG_T;FV_W5B7/_8RM+_6$Y8
-M_R@A*_\@&R'_Z=32_^'/R_]%/CC_3D9"_TU-2O]]?'O_W,_.__C9T___Z>'_
-M_^;?___GX/__YM___>3=_YR$C?\J&B+_03LY_WUL7O][:V'_)!\C_T$Y-_]"
-M.CC_+S@^_S(U-O^+@GO_>6QG_[ZTL/\V-3S_3U)D_TQ(6/\K(R;_*R$D_R\C
-M)/\L(1K_*B0<_WAP9O_2Q\#_,B@K_R :'O\A&1S_+R8F_RXC(O\N)27_)R,A
-M_VMJ7_^XKZG_*"$A_R$<'O\C'A[_+"@F_RPC(_]B8V3_8FMK_V%D9?\@'AO_
-MNJF;_R4=&_]W>'G_&!<6_\2]O?^4AH?_*" >_R8>&O];44?_95Q._V)>5O^Y
-MK*O_*RHI_R8?)O\9%1[_.$%(_R<F+?\P*B[_)B@F_WMS<?\_.T3_-3M+_U15
-M7/]/453_14M3_TQ27/\Z.4#_'A@<_RLC)O^QIZ/_J)V6_[BDG/^WIZ3_+2(G
-M_R4?(_\P+S7_3D]6_R0F+O]L;WK_75YI_U9?9?]545G_-S5%_T!*6?\W/#S_
-M+2LF_S] 2_\G+S__+S9$_S$V0O\<'BW_&ATH_T1&3O\\/D/_-34X_SP_1/\E
-M)"K_*B<M_S]!1O\T.$#_-C@__S@Z/_\F)BG_H):'_\6MJO_GT,/_HY-__]/'
-MR/\^-S__)1\G_RDB(O_KT];_U</%_T,_0?]H:FW_4UUA_[6QK__XX=S__.7@
-M___GWO__Y=S__^;=___DW?__Z.'_MYV@_S$?(?])/3G_=F%5_W]M8_\B'2'_
-M-BXL_S\W-?\D)BW_)"(D_WUY<?]M85S_K*"<_S(N-O]66VW_24E8_S$L+O\H
-M'B'_,"0E_S,H(?\N*"#_;65;_\F^M_\S*2S_(!H>_R$9'/\P)R?_+R0C_R\F
-M)O\A'1O_7UY3_XZ%?_\G("#_(QX@_Q\:&O\J)B3_+20D_UE:6_]:8V/_:6QM
-M_QX=(_^QI9[_'Q<:_S<W.O]#0#O_O;6S_Z.7F/\J(B7_*2,A_U5,1?].1SO_
-M;6MD_\:YN/\N+2S_(!D@_RDE+O]03%S_+BXW_Q4=&?]$/SG_;&!<_S@S.?])
-M4%[_14Y<_T%&3/]"2%+_/D51_T!$3/\=&QW_)1X>_["DG_^<C(/_M*"8_[.C
-MH/\I'B/_)!XB_S8U._]55U[_*S$Y_UYF</]?8&O_769L_UE57?\O+3W_.$),
-M_SD]._^HJ:/_)"LQ_QXH/?\F+4'_'2(N_QTB)_\P-CC_.3Q!_QD;'O\:&AW_
-M-SH__RHI+_\B'R7_.CQ!_RLO-_\R-#O_+S$V_S<W.O^<DX+_QJVH_^C0P?^D
-MDWS_S+^^_SLT._\A'RC_)B$G_^70S/_/P;[_6EQ?_SD]/_^ >7G_\>#:__OB
-MU?__Y-G__^7A___CW___Y=[__^7<__WDW?^FD8W_+B(>_S\X,O]D447_=F9<
-M_QH5&?] .#;_,"@F_RDE+?\E(R7_:&A?_UM23/^XJJ?_,"HR_TY18_]&2%?_
-M,"LM_RLA)/\T*"G_,"4>_R@B&O^-A7O_QKNT_RXD)_\?&1W_'Q<:_RPC(_\M
-M(B'_+",C_R8B(/\Z.2[_7U90_R8?'_\?&AS_*",C_R <&O\M)"3_4U15_UYG
-M9_]B96;_(!TC_ZJ9D_\X*RK_6E12_W%K8_^TJJ;_IYN<_R8@)/\F(R+_65),
-M_T,],_]V=&__R[Z]_RDH)_\A&B'_(!PE_SD^2O] 0D7_@H!X_YB.BO\@'2/_
-M6EQD_TA/6_]-5V7_045-_T-&4O],5F3_355?_R A(O\O*2?_J9V6_Z*,@_^L
-MEH[_HY.0_RD>(_\D'B+_*BPQ_TE05O]+5%O_2U5?_U!17/]<96O_M[.[_T$_
-M3_\I+SG_EY.;_R(?)?\K-4#_)BX^_QH>+?\A(";_A8" _TY24/\U.CC_&1L>
-M_SDX/O]!1$G_'ATC_S4R./\A(RC_*"PT_R4G+O\\/D/_/CY!_YF/>__!II__
-MY,NZ_YF&;O_3P[K_EHB)_S,M,?\G(B3_Y]+&_\:]M_]/5UO_86=I_^',T?_V
-MWMO__N?;___HW__[WMW_PZ6G__S@W/__Y][__^;?_[.DGO\F'AK_.30N_U=*
-M/?]Q8UK_&!(6_S(I*?\F'1W_*"$I_QT9&_]+3$7_44A!_\BVL_\H'B?_861U
-M_T5(5/\X,S/_)QT@_S,G*O\S*"'_*R4=_VYE7O^_M*W_,BDI_R$<'O\?%QK_
-M*R(B_S$F)?\J(2'_)R$?_RHH(/\_.#+_(!@;_R ;'?\G(B+_)2$?_RHC(_]/
-M4%'_769F_V%D9?\C'B+_IY2*_VY=5_]<4$?_<&9;_ZJ>F?^SI:;_)R(F_R0@
-M(O])1#__,BTG_W-Q;O_+P+__+"DH_R,=(?\A'27_(R\V_SH\.O]J75C_(QX@
-M_T1)5?]#2E;_04E3_T--6/]/4EW_2U!<_TM59/],5V+_(20E_RTH(_^GEX[_
-MNJ69_Z6/A_]$-C/_)QT@_R8@)/\N+C'_/$-)_T=05_]C9V__HJ*K_U1=9/\N
-M*S'_-31!_S4Z1O\:&"C_.3='_RHR0O\<("C_(" C_XR(AO]G6U;_BHZ&_X:+
-MA_]\?'__-SD^_TY15O\;'2+_*B<M_S8X/?\?(RO_+3(X_S,U.O\_/T+_AWIG
-M_[ZCF/_6NZK_@W!8_\6MI/^ADHW_,2HJ_RHC(__IS<__Q[K'_S0Y4O\_/U3_
-M4$1=_UE39_]@7&S_:V=W_WMF<O^.=GO__.+?___HW?__ZN'_HY*2_R@<'?\X
-M,"[_2#XT_V9:5?\;$A+_*R,F_R,=(?\K)2G_(AX@_SX[-O]#-S#_RK6S_RXF
-M*O]-3EG_9V1P_S$I)?\O(R3_*APD_RLB'/\E'AC_;&-<_[.HH?\V+2W_'QH<
-M_QP4%_\M)"3_+2(A_RTD)/\E'A[_(1X9_RLJ(_\6$A3_'AD=_RDA)/\F'1W_
-M*"0B_S]!/_]@:6G_8V=I_R >(?^@C8'_8%!&_SDM)O]?54O_D(1__[6HI_\F
-M'B'_)AP?_S4P,O\N+"[_85U?_\>^OO\N)27_(QX@_R$?(O\;'2+_-C<^_TU1
-M6?\^1$[_+C(Z_TE/6?]"257_14Y<_T!*5?]&4%O_/DA3_TE37O\A(RC_*2$=
-M_ZB8CO^XI9O_:EI7_X5X=_\B&QO_)"(D_R@C(_\T.3__0DA2_["GI_^EH*#_
-M24Y:_TU+3?\X.D+_(2LZ_SA#5/\H,4+_'1TH_RDD*/^AG9O_6%-'_Z><D?^)
-MB7[_75M8_]?1V?\Y/$'_2TY3_R$C*/\M+S3_+2\T_RHN-O\K,#;_.#M _S]!
-M1/]K7U#_K9B&_[JBD_]C4D3_LYR=_R\C)O\@(2+_)B$C_^S0T_^[KK/_9W)Y
-M_T=(3__FV.#_Z=GA_^K:XO_FUM[_YMGD_]S,U/_ZY>'__^C;___FV_^CE)7_
-M(QD<_R\H*/] -S#_8%92_QH1$?\F'B'_(!H>_R0>(O\>&AS_+2LH_R,;%__"
-MLZW_.34S_T)'3/]L<'+_-BXL_RXB(_\Q)2C_,RHD_R0=%_\Q*"'_DXB!_SDP
-M,/\A'![_'Q<:_RHA(?\P)23_+R8F_R4>'O\8%!+_'!H7_Q40%/\;%AK_)AXA
-M_R@?'_\J)B3_14=%_V-L;/]@9&;_(!\E_XIX;O]00CG_*Q\;_T4[,?]U:63_
-MNJVL_RDA)/\F&R+_+R@O_QP>(?\/$A/_44M)_RD@(/\A'![_(!XA_QL=(O\I
-M*C'_/$!(_T9,5O\M,3G_6F!J_S]&4O])4F#_35=B_T--6/]"3%?_45MF_R$C
-M*/\J(B#_I):-_TH\,_^)?GW_& \/_R0?(?\A'"#_4$='_T)$2?]%2U/_9U]=
-M_W)M;?\]0D[_+RTO_S]!2?]%4F7_+#9%_R@H,?]12$C_M+"N_V1;5/^]K)__
-MHX^'_U=84?]H;6G_O[W _S(T.?]/45;_(2,H_S R-_\K+3+_(2,K_RTO-O\Z
-M/$'_-C8Y_V1;5/^#<VG_?FYE_WQQ:O\N("'_)1T@_R,A(_\H(R7_\-;3_\6X
-MM_]775__,BTM__G=V?__X=O__^';___BW/__YM___^;B___JX___Z>#__^7>
-M_Z"1E?\B&A[_*20F_S(K)?]734G_'!,3_R4=(/\>&!S_'A8:_QL7&?\D)2;_
-M'AD;_[VPJ_\Q+RS_66%E_X*'C/\X,#/_-"@I_R\D(_\Q*"+_'A82_T(Y,O]3
-M2$'_*R(B_R(='_\>%AG_*B$A_RH?'O\K(R'_)1X>_Q0/$?\7$A;_%1 6_Q0/
-M$_\E'2#_*R(B_RLG)?\J+"K_9W!P_VEM;_\?'B7_?&QC_UI.1_\Q)B7_1#LT
-M_UQ02__"M;3_+"0G_R8=)/\C'2'_*2<D_WQU;_]N9&#_(1@8_QT8&O\8%AG_
-M'!XC_Q87'O] 1$S_45=A_R(F+O],4ES_/T92_T=07O\]1U+_14]:_T1.6?])
-M4U[_)R4N_RD='O]83$7_A'MU_QX9&?\G(R7_(QXB_R$<(O]P86'_CHF-_T%&
-M3/]=6%/_HY^=_SQ!3?\O+2__.CQ$_T5.7/\J*S+_8%I8_ZB=G/];5E#_P+.H
-M_Z62AO^/@WK_0DI&_U-;5_]P<G#_-C<^_TY/5O\H*B__.CQ!_RPN,_\>("C_
-M("$H_SLZ0/\D(B7_'AH8_T(Z-O]0143_(1T?_R4A(_\B'B#_(Q\A_R8B)/_I
-MU-#_HYV;_VQT=O]234__]=_=__KAX/_[XN'__N7D___IXO__Z>+__^KB___K
-MYO__Z^;_E8B-_R$8'_\A'"#_*B4@_TI"0/\5#@[_)!P?_QT7&_\@&!O_'AL:
-M_R@D)O]33$S_M*>F_S(P,O]A:&[_2D]5_R\G*_\S*"?_+B0@_R\E(?\;%1/_
-M+B@@_S\W+?\;$Q'_*20F_QX9&_\K(B+_,28E_RD@(/\H("/_%A 4_QP6'O\3
-M#A3_% \3_R$<'O\E'A[_*B4E_S@Z./]I<G+_8V=I_QL:(?]N8EG_8550_S G
-M)_\[-R__-RXG_\>YMO\Q*2S_)2 B_SLV,?^+@GO_:5E/_QT1#?\I("#_*B4G
-M_S0R-?\7&1[_)"4L_TE-5?]67&;_1$I4_T]48/\Z04W_0DM9_U-:9O]#35C_
-M1E%<_TY79?\B'B?_+"(E_W5K9_\;%A'_)B(D_R >(?\A'"#_'18=_YJ-C/_@
-MV-O_/D%&_V!;5O^8E)+_-3M#_S P,_]+3U?_&A\E_XN)AO^QIZ/_8UI:_ZJD
-MG/^:BW[_IYB+_V5E7/\\2DG_*S<T_T]44/] 0D?_4E5:_QL=(O\Z.3__*BPQ
-M_R,D*_\G)S#_0T%$_RLG*?\E(2/_.3(R_\&YO/\J*"O_'AXA_R$@'_\H(R/_
-M*20D_[JKJ_]S<&__765I_R\I+?_VX-C__>/8___HW?__Z^#_^^3?___KY___
-MZN;__^WG__WJY/^-?(;_(!<>_QT;'O\?&AS_.30V_Q<3%?\<&!K_'AH<_R,?
-M'?]S;FG_M*NE_U!#/O]22DC_*2<I_T1,3O]#2$W_,"LM_RHC(_\F'Q__*2(B
-M_Q@2%O\C(!O_)248_Q82$/\C'B+_'AH<_RLD)/\L)"+_)R(D_R<B)O\6$17_
-M%1 4_Q00$O\<&!K_)" B_R0@(O\J(B7_+2LM_VAQ<?]=9&3_'ALA_U9/0_]R
-M9&'_(ATA_S@^.O\C'AC_Q+>R_R\G*O\C(!__?75S_R,6%?\E'1O_(ATA_R0<
-M'_\H(2'_(1TE_Q@8(?\A(2K_1TA3_TY17?]-4V/_1DY>_T5-7?\Z0E+_6U]N
-M_T]99_]'5F/_3UAF_R<F+?\D'R/_(!L?_R0?(_\F)";_'AH<_QL7&?\7$A3_
-MNK:T_][1UO]%1$K_6E)._Y>1C_\Y.3S_;W!W_U!06?]E:&G_?W]\_X!X=/^\
-MJZ7_GY2-_Y>,A?]D7%C_1TU)_S="0_\J-3;_-#L[_X.)A?])3U'_)20J_S(O
-M-?\A(RC_)RTO_R,D+_\Z/#G_Y.'@_RLH+O\A'![_IIN:_R$9'/\?'"+_+BLJ
-M_Z.AF?^<F93_ULG(_[FMJ?_AU]/_^.;C__OBV___Y][__^?>___HW___ZN+_
-M_^OC__[JXO__Z^/__NOC_WUL=O\>%1S_&!89_Q@3%?\M*"K_&!06_QH6&/\<
-M&!K_65!*_S@O*?\T+BS_03P^_T5 0O\B("/_04E-_U9;8?\H(R7_*R0D_R8?
-M'_\L)27_%A 4_QH7%O\<&A7_%1$3_Q82%/\;%QG_)A\?_RXF)/\F'Q__)2 B
-M_Q81$_\;%AC_)2 @_RDD)/\F(2'_)B$A_R<?(O\F)";_9W!P_V-J:O\>&R'_
-M3D<[_V]A7O\;%AK_0$5%_QL:&?]G8ES_)B0?_QX?(/\7$A;_(AH>_R$?(O\A
-M'B3_(1D<_R(;&_\;%Q__("(J_SD[0_\_14__2E%=_T)+6?\Z0U'_1D]=_U9?
-M;?\_3%G_2%5B_TE47_]-5V'_-S8\_R@C)_\@&Q__(!L?_X%Y?/\I(23_'!<9
-M_QL7&?^>F);_KI^D_T-%2O]74DW_D8J*_TA"1O_CU=W_Y=KA_Y&/F/]<5%?_
-MO*RC_[RIG?]]>W3_24Q&_S]$0O\Y1T;_+C<W_SE"0O^.E97_+C4U_S<]/_\Y
-M.#[_&!4;_S$S./\U.SW_*BLV_U!.2__<U=7_)28M_Q87&/\W,##_)R$E_Q@3
-M%_\>(!W_9VID_WEV<?_@T,?_SKBO__SDV__XWM7__.+9___FW?__Y][__^C?
-M___JXO__Z^/__NKB__[JXO__Z^/_;EUG_R$8'_\3$13_&106_R ;'?\5$1/_
-M&A88_QH6&/\D'!K_*!\?_T,^/O\]/#O_0SU!_QX;(?])4%;_3E):_S8P-/\I
-M(B+_*R0D_RHC(_\6$A3_%1,5_Q,1$_\4$A3_$@X0_R <'O\C'!S_-"PJ_R8?
-M'_\I(B+_)!T=_R@A(?\I(R'_*2,A_RDC(?\L)B3_*B(E_RXL+O]B:VO_96QL
-M_R =(_\[-"C_AGAU_Q@3%_\7%Q3_7UU8_UI84?\C'!S_&A@;_R(=(?\C&Q__
-M(!L?_R(=(_\@&!O_*2(B_R4A*?\D)B[_+C0\_SM#3?\\1E'_0DQ7_TI47_]$
-M3EG_1U%<_SY(5O]!2%3_7EYG_Y&3F/]!/T+_(ATA_RDD*/\E("3_3T-&_R@9
-M'?\>%AG_'AH<_]S4TO_PW^7_0T5*_V5C7O^"@(+_8%I>_^C6VO_IW=[_V-+:
-M_^[@X?^]KJ'_BH)X_TU/3?\X04'_.$='_R\Y/?]%2DK_B9&._S Y.?]!3$W_
-M/T=+_R,B*/^?G*+_,S4Z_RPT-O\Q,CW_75E7_^;8V?]*04C_F)*0_YF4C_^/
-MCHW_C8N(_V1I9_]=9&3_9F5>_^W=T__VW-'__]_5__[CV/__YMW__^;=___E
-MW/__Z-___^OC__SHX/_ZYM[__NKB___JXO]:25/_(1@?_QL9'/\=&!K_&!,5
-M_Q41$_\6$A3_%A(4_QT6'?\E'R/_/#<W_T5"/?\<%!C_&A8>_TU36_](2U;_
-M/SD]_R<@(/\B&QO_*"$A_Q42$?\3$13_&!89_Q(0$O\3#Q'_'1D;_R4>'O\R
-M*BC_*2$?_S H)O\J(B#_+"0B_R@@'/\O)R/_+B8B_RHB'O\J(R/_(R$C_UIC
-M8_]C:FK_)2(H_S I'?^8BH?_-3 T_W5P:O]%0C?_(QL7_QP-$O\B&AW_(1L9
-M_R<<&_\A'1O_'QH>_R,;'O\E'A[_)2$I_S0V/O\T.D+_0TM5_SU'4O\U/TG_
-M0$I4_T]98_\X0DS_,3M)_SX^3?^KH:O_I)ZB_SLV.O\F(27_(1P@_QP7&_]2
-M0T?_,B,G_R(8&_\/#0__J9Z=_^/2V/];76+_7%I5_W%V=O]A7&#_Y-+4_^/9
-MU?_HX.3_NJVH_XA^</],44O_.C\__S]'2?\A+S+_459<_XB,BO\V/#C_0TM-
-M_SI&2O\Z0D;_'QXD_]C5V_\V.#W_+C8X_R\P._]=65?_Z=?9_UU+3?_@T<O_
-MGI2)_U]@6?]=7%7_6%U=_U9B8?]O;F?_[-_4__??UO_]W=7_^]_7__SBV?__
->YMW__N3;___GWO__ZN+_^^??__[JXO_]Z>'__^CA
- 
-end
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testimgr.uue b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testimgr.uue
deleted file mode 100644
index c2a6114..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testimgr.uue
+++ /dev/null
@@ -1,1170 +0,0 @@
-begin 755 test.rawimg.rev
-M_UI)4_\A&!__&QD<_QT8&O\8$Q7_%1$3_Q82%/\6$A3_'18=_R4?(_\\-S?_
-M14(]_QP4&/\:%A[_35-;_TA+5O\_.3W_)R @_R(;&_\H(2'_%1(1_Q,1%/\8
-M%AG_$A 2_Q,/$?\=&1O_)1X>_S(J*/\I(1__,"@F_RHB(/\L)"+_*" <_R\G
-M(_\N)B+_*B(>_RHC(_\C(2/_6F-C_V-J:O\E(BC_,"D=_YB*A_\U,#3_=7!J
-M_T5"-_\C&Q?_' T2_R(:'?\A&QG_)QP;_R$=&_\?&A[_(QL>_R4>'O\E(2G_
-M-#8^_S0Z0O]#2U7_/4=2_S4_2?] 2E3_3UEC_SA"3/\Q.TG_/CY-_ZNAJ_^D
-MGJ+_.S8Z_R8A)?\A'"#_'!<;_U)#1_\R(R?_(A@;_P\-#_^IGIW_X]+8_UM=
-M8O]<6E7_<79V_V%<8/_DTM3_X]G5_^C@Y/^ZK:C_B'YP_TQ12_\Z/S__/T=)
-M_R$O,O]15ES_B(R*_S8\./]#2TW_.D9*_SI"1O\?'B3_V-7;_S8X/?\N-CC_
-M+S [_UU95__IU]G_74M-_^#1R_^>E(G_7V!9_UU<5?]875W_5F)A_V]N9__L
-MW]3_]]_6__W=U?_[W]?__.+9___FW?_^Y-O__^?>___JXO_[Y]___NKB__WI
-MX?__Z.'_;EUG_R$8'_\3$13_&106_R ;'?\5$1/_&A88_QH6&/\D'!K_*!\?
-M_T,^/O\]/#O_0SU!_QX;(?])4%;_3E):_S8P-/\I(B+_*R0D_RHC(_\6$A3_
-M%1,5_Q,1$_\4$A3_$@X0_R <'O\C'!S_-"PJ_R8?'_\I(B+_)!T=_R@A(?\I
-M(R'_*2,A_RDC(?\L)B3_*B(E_RXL+O]B:VO_96QL_R =(_\[-"C_AGAU_Q@3
-M%_\7%Q3_7UU8_UI84?\C'!S_&A@;_R(=(?\C&Q__(!L?_R(=(_\@&!O_*2(B
-M_R4A*?\D)B[_+C0\_SM#3?\\1E'_0DQ7_TI47_]$3EG_1U%<_SY(5O]!2%3_
-M7EYG_Y&3F/]!/T+_(ATA_RDD*/\E("3_3T-&_R@9'?\>%AG_'AH<_]S4TO_P
-MW^7_0T5*_V5C7O^"@(+_8%I>_^C6VO_IW=[_V-+:_^[@X?^]KJ'_BH)X_TU/
-M3?\X04'_.$='_R\Y/?]%2DK_B9&._S Y.?]!3$W_/T=+_R,B*/^?G*+_,S4Z
-M_RPT-O\Q,CW_75E7_^;8V?]*04C_F)*0_YF4C_^/CHW_C8N(_V1I9_]=9&3_
-M9F5>_^W=T__VW-'__]_5__[CV/__YMW__^;=___EW/__Z-___^OC__SHX/_Z
-MYM[__NKB___JXO]];';_'A4<_Q@6&?\8$Q7_+2@J_Q@4%O\:%AC_'!@:_UE0
-M2O\X+RG_-"XL_T$\/O]%0$+_(B C_T%)3?]66V'_*",E_RLD)/\F'Q__+"4E
-M_Q80%/\:%Q;_'!H5_Q41$_\6$A3_&Q<9_R8?'_\N)B3_)A\?_R4@(O\6$1/_
-M&Q88_R4@(/\I)"3_)B$A_R8A(?\G'R+_)B0F_V=P</]C:FK_'ALA_TY'._]O
-M85[_&Q8:_T!%1?\;&AG_9V)<_R8D'_\>'R#_%Q(6_R(:'O\A'R+_(1XD_R$9
-M'/\B&QO_&Q<?_R B*O\Y.T/_/T5/_TI17?]"2UG_.D-1_T9/7?]67VW_/TQ9
-M_TA58O])5%__35=A_S<V//\H(R?_(!L?_R ;'_^!>7S_*2$D_QP7&?\;%QG_
-MGIB6_ZZ?I/]#14K_5U)-_Y&*BO](0D;_X]7=_^7:X?^1CYC_7%17_[RLH_^\
-MJ9W_?7MT_TE,1O\_1$+_.4=&_RXW-_\Y0D+_CI65_RXU-?\W/3__.3@^_Q@5
-M&_\Q,SC_-3L]_RHK-O]03DO_W-75_R4F+?\6%QC_-S P_R<A)?\8$Q?_'B =
-M_V=J9/]Y=G'_X-#'_\ZXK__\Y-O_^-[5__SBV?__YMW__^?>___HW___ZN+_
-M_^OC__[JXO_^ZN+__^OC_XU\AO\@%Q[_'1L>_Q\:'/\Y-#;_%Q,5_QP8&O\>
-M&AS_(Q\=_W-N:?^TJZ7_4$,^_U)*2/\I)RG_1$Q._T-(3?\P*RW_*B,C_R8?
-M'_\I(B+_&!(6_R,@&_\E)1C_%A(0_R,>(O\>&AS_*R0D_RPD(O\G(B3_)R(F
-M_Q81%?\5$!3_%! 2_QP8&O\D("+_)" B_RHB)?\M*RW_:'%Q_UUD9/\>&R'_
-M5D]#_W)D8?\B'2'_.#XZ_R,>&/_$M[+_+R<J_R,@'_]]=7/_(Q85_R4=&_\B
-M'2'_)!P?_R@A(?\A'27_&!@A_R$A*O]'2%/_3E%=_TU38_]&3E[_14U=_SI"
-M4O];7V[_3UEG_T=68_]/6&;_)R8M_R0?(_\@&Q__)!\C_R8D)O\>&AS_&Q<9
-M_Q<2%/^ZMK3_WM'6_T5$2O]:4D[_EY&/_SDY//]O<'?_4%!9_V5H:?]_?WS_
-M@'AT_[RKI?^?E(W_EXR%_V1<6/]'34G_-T)#_RHU-O\T.SO_@XF%_TE/4?\E
-M)"K_,B\U_R$C*/\G+2__(R0O_SH\.?_DX>#_*R@N_R$<'O^FFYK_(1D<_Q\<
-M(O\N*RK_HZ&9_YR9E/_6R<C_N:VI_^'7T__XYN/_^^+;___GWO__Y][__^C?
-M___JXO__Z^/__NKB___KX__^Z^/_E8B-_R$8'_\A'"#_*B4@_TI"0/\5#@[_
-M)!P?_QT7&_\@&!O_'AL:_R@D)O]33$S_M*>F_S(P,O]A:&[_2D]5_R\G*_\S
-M*"?_+B0@_R\E(?\;%1/_+B@@_S\W+?\;$Q'_*20F_QX9&_\K(B+_,28E_RD@
-M(/\H("/_%A 4_QP6'O\3#A3_% \3_R$<'O\E'A[_*B4E_S@Z./]I<G+_8V=I
-M_QL:(?]N8EG_8550_S G)_\[-R__-RXG_\>YMO\Q*2S_)2 B_SLV,?^+@GO_
-M:5E/_QT1#?\I("#_*B4G_S0R-?\7&1[_)"4L_TE-5?]67&;_1$I4_T]48/\Z
-M04W_0DM9_U-:9O]#35C_1E%<_TY79?\B'B?_+"(E_W5K9_\;%A'_)B(D_R >
-M(?\A'"#_'18=_YJ-C/_@V-O_/D%&_V!;5O^8E)+_-3M#_S P,_]+3U?_&A\E
-M_XN)AO^QIZ/_8UI:_ZJDG/^:BW[_IYB+_V5E7/\\2DG_*S<T_T]44/] 0D?_
-M4E5:_QL=(O\Z.3__*BPQ_R,D*_\G)S#_0T%$_RLG*?\E(2/_.3(R_\&YO/\J
-M*"O_'AXA_R$@'_\H(R/_*20D_[JKJ_]S<&__765I_R\I+?_VX-C__>/8___H
-MW?__Z^#_^^3?___KY___ZN;__^WG__WJY/^@D97_(AH>_RDD)O\R*R7_5TU)
-M_QP3$_\E'2#_'A@<_QX6&O\;%QG_)"4F_QX9&_^]L*O_,2\L_UEA9?^"AXS_
-M.# S_S0H*?\O)"/_,2@B_QX6$O]".3+_4TA!_RLB(O\B'1__'A89_RHA(?\J
-M'Q[_*R,A_R4>'O\4#Q'_%Q(6_Q40%O\4#Q/_)1T@_RLB(O\K)R7_*BPJ_V=P
-M</]I;6__'QXE_WQL8_]:3D?_,28E_T0[-/]<4$O_PK6T_RPD)_\F'23_(QTA
-M_RDG)/]\=6__;F1@_R$8&/\=&!K_&!89_QP>(_\6%Q[_0$1,_U%78?\B)B[_
-M3%)<_S]&4O]'4%[_/4=2_T5/6O]$3EG_25->_R<E+O\I'1[_6$Q%_X1[=?\>
-M&1G_)R,E_R,>(O\A'"+_<&%A_XZ)C?]!1DS_75A3_Z.?G?\\04W_+RTO_SH\
-M1/]%3ES_*BLR_V!:6/^HG9S_6U90_\"SJ/^EDH;_CX-Z_T)*1O]36U?_<')P
-M_S8W/O].3U;_*"HO_SH\0?\L+C/_'B H_R A*/\[.D#_)"(E_QX:&/]".C;_
-M4$5$_R$='_\E(2/_(AX@_R,?(?\F(B3_Z=30_Z.=F_]L=';_4DU/__7?W?_Z
-MX>#_^^+A__[EY/__Z>+__^GB___JXO__Z^;__^OF_Z.4E?\C&1S_+R@H_T W
-M,/]@5E+_&A$1_R8>(?\@&A[_)!XB_QX:'/\M*RC_(QL7_\*SK?\Y-3/_0D=,
-M_VQP<O\V+BS_+B(C_S$E*/\S*B3_)!T7_S$H(?^3B('_.3 P_R$<'O\?%QK_
-M*B$A_S E)/\O)B;_)1X>_Q@4$O\<&A?_%1 4_QL6&O\F'B'_*!\?_RHF)/]%
-M1T7_8VQL_V!D9O\@'R7_BGAN_U!".?\K'QO_13LQ_W5I9/^ZK:S_*2$D_R8;
-M(O\O*"__'!XA_P\2$_]12TG_*2 @_R$<'O\@'B'_&QTB_RDJ,?\\0$C_1DQ6
-M_RTQ.?]:8&K_/T92_TE28/]-5V+_0TU8_T),5_]16V;_(2,H_RHB(/^DEHW_
-M2CPS_XE^??\8#P__)!\A_R$<(/]01T?_0D1)_T5+4_]G7UW_<FUM_SU"3O\O
-M+2__/T%)_T529?\L-D7_*"@Q_U%(2/^TL*[_9%M4_[VLG_^CCX?_5UA1_VAM
-M:?^_O<#_,C0Y_T]15O\A(RC_,#(W_RLM,O\A(RO_+2\V_SH\0?\V-CG_9%M4
-M_X-S:?]^;F7_?'%J_RX@(?\E'2#_(R$C_R@C)?_PUM/_Q;BW_U==7_\R+2W_
-M^=W9___AV___X=O__^+<___FW___YN+__^KC___IX/__Y=[_HY*2_R@<'?\X
-M,"[_2#XT_V9:5?\;$A+_*R,F_R,=(?\K)2G_(AX@_SX[-O]#-S#_RK6S_RXF
-M*O]-3EG_9V1P_S$I)?\O(R3_*APD_RLB'/\E'AC_;&-<_[.HH?\V+2W_'QH<
-M_QP4%_\M)"3_+2(A_RTD)/\E'A[_(1X9_RLJ(_\6$A3_'AD=_RDA)/\F'1W_
-M*"0B_S]!/_]@:6G_8V=I_R >(?^@C8'_8%!&_SDM)O]?54O_D(1__[6HI_\F
-M'B'_)AP?_S4P,O\N+"[_85U?_\>^OO\N)27_(QX@_R$?(O\;'2+_-C<^_TU1
-M6?\^1$[_+C(Z_TE/6?]"257_14Y<_T!*5?]&4%O_/DA3_TE37O\A(RC_*2$=
-M_ZB8CO^XI9O_:EI7_X5X=_\B&QO_)"(D_R@C(_\T.3__0DA2_["GI_^EH*#_
-M24Y:_TU+3?\X.D+_(2LZ_SA#5/\H,4+_'1TH_RDD*/^AG9O_6%-'_Z><D?^)
-MB7[_75M8_]?1V?\Y/$'_2TY3_R$C*/\M+S3_+2\T_RHN-O\K,#;_.#M _S]!
-M1/]K7U#_K9B&_[JBD_]C4D3_LYR=_R\C)O\@(2+_)B$C_^S0T_^[KK/_9W)Y
-M_T=(3__FV.#_Z=GA_^K:XO_FUM[_YMGD_]S,U/_ZY>'__^C;___FV_^SI)[_
-M)AX:_SDT+O]72CW_<6-:_Q@2%O\R*2G_)AT=_R@A*?\=&1O_2TQ%_U%(0?_(
-MMK/_*!XG_V%D=?]%2%3_.#,S_R<=(/\S)RK_,R@A_RLE'?]N95[_O[2M_S(I
-M*?\A'![_'Q<:_RLB(O\Q)B7_*B$A_R<A'_\J*"#_/S@R_R 8&_\@&QW_)R(B
-M_R4A'_\J(R/_3U!1_UUF9O]A9&7_(QXB_Z>4BO]N75?_7%!'_W!F6_^JGIG_
-MLZ6F_R<B)O\D("+_240__S(M)_]S<6[_R\"__RPI*/\C'2'_(1TE_R,O-O\Z
-M/#K_:EU8_R,>(/]$257_0TI6_T%)4_]#35C_3U)=_TM07/]+563_3%=B_R$D
-M)?\M*"/_IY>._[JEF?^ECX?_1#8S_R<=(/\F("3_+BXQ_SQ#2?]'4%?_8V=O
-M_Z*BJ_]4763_+BLQ_S4T0?\U.D;_&A@H_SDW1_\J,D+_'" H_R @(_^,B(;_
-M9UM6_XJ.AO^&BX?_?'Q__S<Y/O].45;_&QTB_RHG+?\V.#W_'R,K_RTR./\S
-M-3K_/S]"_X=Z9_^^HYC_UKNJ_X-P6/_%K:3_H9*-_S$J*O\J(R/_Z<W/_\>Z
-MQ_\T.5+_/S]4_U!$7?]94V?_8%QL_VMG=_][9G+_CG9[__SBW___Z-W__^KA
-M_Z:1C?\N(A[_/S@R_V111?]V9ES_&A49_T X-O\P*";_*24M_R4C)?]H:%__
-M6U),_[BJI_\P*C+_3E%C_T9(5_\P*RW_*R$D_S0H*?\P)1[_*"(:_XV%>__&
-MN[3_+B0G_Q\9'?\?%QK_+",C_RTB(?\L(R/_)B(@_SHY+O]?5E#_)A\?_Q\:
-M'/\H(R/_(!P:_RTD)/]35%7_7F=G_V)E9O\@'2/_JIF3_S@K*O]:5%+_<6MC
-M_[2JIO^GFYS_)B D_R8C(O]94DS_0STS_W9T;__+OKW_*2@G_R$:(?\@'"7_
-M.3Y*_T!"1?^"@'C_F(Z*_R =(_]:7&3_2$];_TU79?]!14W_0T92_TQ69/]-
-M55__("$B_R\I)_^IG9;_HHR#_ZR6CO^CDY#_*1XC_R0>(O\J+#'_25!6_TM4
-M6_]+55__4%%<_UQE:_^WL[O_03]/_RDO.?^7DYO_(A\E_RLU0/\F+C[_&AXM
-M_R$@)O^%@(#_3E)0_S4Z./\9&Q[_.3@^_T%$2?\>'2/_-3(X_R$C*/\H+#3_
-M)2<N_SP^0_\^/D'_F8][_\&FG__DR[K_F89N_]/#NO^6B(G_,RTQ_R<B)/_G
-MTL;_QKVW_T]76_]A9VG_X<S1__;>V__^Y]O__^C?__O>W?_#I:?__.#<___G
-MWO__YM__MYV@_S$?(?])/3G_=F%5_W]M8_\B'2'_-BXL_S\W-?\D)BW_)"(D
-M_WUY<?]M85S_K*"<_S(N-O]66VW_24E8_S$L+O\H'B'_,"0E_S,H(?\N*"#_
-M;65;_\F^M_\S*2S_(!H>_R$9'/\P)R?_+R0C_R\F)O\A'1O_7UY3_XZ%?_\G
-M("#_(QX@_Q\:&O\J)B3_+20D_UE:6_]:8V/_:6QM_QX=(_^QI9[_'Q<:_S<W
-M.O]#0#O_O;6S_Z.7F/\J(B7_*2,A_U5,1?].1SO_;6MD_\:YN/\N+2S_(!D@
-M_RDE+O]03%S_+BXW_Q4=&?]$/SG_;&!<_S@S.?])4%[_14Y<_T%&3/]"2%+_
-M/D51_T!$3/\=&QW_)1X>_["DG_^<C(/_M*"8_[.CH/\I'B/_)!XB_S8U._]5
-M5U[_*S$Y_UYF</]?8&O_769L_UE57?\O+3W_.$),_SD]._^HJ:/_)"LQ_QXH
-M/?\F+4'_'2(N_QTB)_\P-CC_.3Q!_QD;'O\:&AW_-SH__RHI+_\B'R7_.CQ!
-M_RLO-_\R-#O_+S$V_S<W.O^<DX+_QJVH_^C0P?^DDWS_S+^^_SLT._\A'RC_
-M)B$G_^70S/_/P;[_6EQ?_SD]/_^ >7G_\>#:__OBU?__Y-G__^7A___CW___
-MY=[__^7<__WDW?^<A(W_*AHB_T$[.?]];%[_>VMA_R0?(_]!.3?_0CHX_R\X
-M/O\R-3;_BX)[_WEL9_^^M+#_-C4\_T]29/],2%C_*R,F_RLA)/\O(R3_+"$:
-M_RHD'/]X<&;_TL? _S(H*_\@&A[_(1D<_R\F)O\N(R+_+B4E_R<C(?]K:E__
-MN*^I_R@A(?\A'![_(QX>_RPH)O\L(R/_8F-D_V)K:_]A9&7_(!X;_[JIF_\E
-M'1O_=WAY_Q@7%O_$O;W_E(:'_R@@'O\F'AK_6U%'_V5<3O]B7E;_N:RK_RLJ
-M*?\F'R;_&14>_SA!2/\G)BW_,"HN_R8H)O][<W'_/SM$_S4[2_]455S_3U%4
-M_T5+4_],4ES_.CE _QX8'/\K(R;_L:>C_ZB=EO^XI)S_MZ>D_RTB)_\E'R/_
-M,"\U_TY/5O\D)B[_;&]Z_UU>:?]67V7_55%9_S<U1?] 2EG_-SP\_RTK)O\_
-M0$O_)R\__R\V1/\Q-D+_'!XM_QH=*/]$1D[_/#Y#_S4U./\\/T3_)20J_RHG
-M+?\_04;_-#A _S8X/_\X.C__)B8I_Z"6A__%K:K_Y]##_Z.3?__3Q\C_/C<_
-M_R4?)_\I(B+_Z]/6_]7#Q?]#/T'_:&IM_U-=8?^UL:__^.'<__SEX/__Y][_
-M_^7<___FW?__Y-W__^CA_Z*1E_\C&Q__&104_XQ[;O^DE(O_)2 @_SX[.O]$
-M/S__-T%%_T1)1?^.@WS_CX%^_ZF@H/\_/$C_/D!5_UA28/\N)R?_+2$B_RTB
-M(?\J)2#_'!H5_V=B7?_+O\#_*B4G_R$<'O\?&!C_)R @_S(K*_\L)27_+"@@
-M_X%\</_'N[;_*2(B_R$<'/\C'A[_+BDI_R@H)?]@8F7_96MG_V1D9_\B'1W_
-MPJZF_S\T+?^#@GO_&QP6_]K+S/]R9F?_*24G_S H)/]22D#_>G%C_UI/2/^O
-MI*/_,2PL_QP7'?\L*C/_.4--_RDJ,?]_=G;_)B >_];)SO]*35C_14A3_X=\
-M>_]>6%;_*" >_TQ/6O\Z/$3_'AH<_RLF*/^=DI'_LJ>@_[RJIO^]KJ[_+",C
-M_R8B)/\U-CW_5EA@_R B*?\<'B/_C(V4_TI,4_] 04C_9F=R_T9)5/]N<'/_
-MKZ.D_T5#4_\H,#K_:&IM_SHX._\E*#3_)BDU_T!"2O]66%__0T5*_S<]/_\M
-M+3#_:65M_S] 1_\P,3S_-3<^_T9*3/\O,3;_?G)N_Z"+B?_1N;;_=6)<_]C*
-MTO]83EC_*"$K_R ;(?_IU-+_X<_+_T4^./].1D+_34U*_WU\>__<S\[_^-G3
-M___IX?__YM___^?@___FW__]Y-W_P+*S_RLC)O\A&QG_K9J0_Z>8D_\P*BC_
-M04 __S8Q,_]%2TW_1$A&_Y&(@O^:C(G_CH.(_RPJ.O]$15S_<6U]_RLC)O\M
-M(B'_,"4D_QX:&/\>'!?_&A02_\B_O_\G(B3_(AT=_R$:&O\G("#_*R0D_RXG
-M)_\M)Q__AX!R_\_#OO\H(2'_(!L;_R8A(?\F(2'_)B0A_UQ@7O]G;&K_9&-B
-M_R(>'/^]J*/_-RTC_YV8DO\].S;_WLW-_V%86/\C(2/_*",E_S8S+O^ >W7_
-M3$1 _ZJBH/\J(R/_(!LA_QD9(O\]1%#_/3Y%_X^'A?]934G_X,[2_T1,5O] 
-M2%C_+BDO_TI&2/^!>'+_(2$L_S4R/O\H(R7_,2<J_Z&1CO_ L:O_J):3_[6F
-MIO\L(R/_)B(D_S<Y0/].4%?_&!H?_TY.4?\>("7_0$-(_TQ06/\[04O_3E!8
-M_VIL;__4Q<G_.SE)_RDS/?]'2$G_;VQK_R4H-/\S-D+_/D!(_UQ>9?]+3E/_
-M-#H\_QP<'_^>FJ+_1D9/_RPO._\N,#?_,30U_TM*4/^KI*3_V\[-_^G8V/_K
-MWMW_XM31_[^MJ?^5A'[_=V1<_^?2S?_MV]?_T\O'_];+RO_3S\W_/T)#_V]Q
-M;__JV];_^=[7___DW?__Y=[__^7>___GX/_$N[7_13LW_WIL:?_4OK7_FHJ'
-M_RTF)O\_/4#_-B\V_QP='O\\.SK_E)"._[&EH/]P:&S_)R<T_T)(6/]F9'3_
-M)1T@_RXC(O\M(B'_)2$?_R4C'O\@&!3_S\+!_RTF)O\?&!C_(AL;_RDB(O\O
-M*"C_+28F_S J(O^3C'[_S,"[_RLD)/\B'1W_)2 @_RTH*/\K(B+_7V1>_UYE
-M<_]:6F7_&QD4_\*MJ/]'.3#_IIV7_V%?6O_>S<W_1#L[_R(@(O\>&1W_+BLJ
-M_S(N+/]W;W+_HIF9_RTF)O\A'"+_'AXG_T%'4?]'1TK_FY&-_[6IHO_:R,K_
-M4EID_T1,8/\?'BO_%AL@_U-,1O]E7V?_*20P_RHB)O\X*2W_K)>5_]G(PO^7
-MA8+_>6IJ_RLB(O\G(R7_+S(W_TY15O\W-SK_AH&#_QP?(/\/%1?_2U%9_T!'
-M4_]'2%/_B8N._]O,T/]%0U/_-T%+_R(C)/\X-33_+"\[_SU 3/]"1$S_3$Y5
-M_TM.4_]"2$K_)24H_[&MM?]!04K_+S,[_S8Y/O])2TG_D(N-_R$='_\O*"C_
-M."\O_T(]/?](1DC_:F5E_Y&)A_^IG9G_Z]S6_]7(P_]:4$S_<VUK_VAG9O]/
-M5%+_/D9#_TY24/_'LJW_^-W6__G>U__^X]S__>3=_\S'N_]<44K_II*._^')
-MP/^9B(C_,2DL_S@U._]$/47_)B$A_R ?'O\N+"[_O[:P_XB#@_\\0D3_9G)V
-M_V]Q>/\O*BK_,28E_RL@'_\D(![_6UE2_T(Y,__0PK__,"@F_R(;&_\E'A[_
-M,"DI_R@A(?\J(R/_+RDA_Y")>__)O;C_*R0D_R(='?\H(R/_*20D_RLB*?]8
-M8E__("E8_SP\9_\<'AS_O:BC_V)22?^WJJ7_='%L_]W,S/\^-37_(R$C_R@@
-M(_\^.#;_.S0N_V=;7/^4BXO_*R0D_QX9'_\:&B/_/$!(_SPZ//^GFY;_Q[FP
-M_]O)S?](4%K_25!>_T]'2_\B(2?_4$4^_X%[?_]"0D__'1L>_R<=(/^FF)7_
-MT<6^_ZJ:E_^VIZ?_,2@H_R<C)?\V/#[_3%!2_UA45O^FGIS_-3HV_R(K*_](
-M45C_1D]=_U!17/^'B8S_X]38_U)08/\W04O_7V!A_[Z[NO\V.47_*"LW_S]!
-M2?]&2$__14A-_TA.4/\I*2S_K:FQ_TE)4O\Q.#[_,34W_TM)1O_+PL+_)2 B
-M_R(:'?^YK;#_*",E_R =(_\<&R'_%A89_R4H*?^SK*;_V,O&_^+6TO^[M[7_
-M0D='_W!V<O]26%3_.3Y#_^/7T__OW-3_[-G1__/@V/_[Y]__TL:W_VE=5/_7
-MR,+_XL_%_X5W=/\L(R/_,RLN_T4_0_]H8U[_,2TK_R4>'O_6R<3_AH."_UI@
-M8O^/EYO_8F-D_RLF)O\N)R?_+24A_RLF(?]A757_HY>0_]3"O_\I("#_(AT=
-M_R0='?\K)"3_+R@H_RXE)?\B'AS_3TU(_\O O_\M)"3_(QP<_RLD)/\M)B;_
-M(14>_U588_\@)%'_-S!?_QX<'__'JZ?_<FI@_\>MJO^4CXK_W-'0_S@O+_\D
-M'R'_*B(@_UU62/]V:F7_V\S-_X5]@/\H(B;_(!H>_QD9(O\^/T;_.3@W_[6O
-MI__3QL'_V,?-_T--6/]%2U7_?G9T_UE45/_(N;3_B8.+_T]27?\E(R7_+"<G
-M_ZF=F?^SI)__FHN&_ZN=GO\D'!__+28F_S$F*_]"24G_GJ*@_ZVKIO]B6EC_
-M3%A7_T515O]!2%3_3%18_T(_/O_EV=S_1DE5_T),5O]K:6O_RL/#_S@]2?\J
-M,3?_$1(9_TA(4?])2U+_04=)_RHJ+?^WL;G_/$!(_RPQ-O\P-C[_>W5S_]K.
-MS_\C)2K_'"$G_U-68O\I)##_(ATA_R(@'?\D(AW_(B<E_UI96/]M96/_W=',
-M_[*HI/],4U/_,CX]_XF0D/]>86;_<7AL_Y*(?O^2AH'_?G-L_ZZBD__7R+O_
-M>FQC_]G-QO_ETLC_@')O_RHA(?]!.3W_24))_VIC7?]G8EW_3T=%_]/$O_]A
-M7&#_.3Q'_V-F<O]#0$;_+B<G_RLD)/\N*23_*",=_W-O9_^]L:K_UL3!_RLB
-M(O\A'!S_(QP<_RHC(_\K)"3_,RHJ_R$<'/\D'Q__S,#!_RTD)/\E'A[_)R @
-M_R@A(?\H'1S_(B$:_Q86(_\I)2W_'!T7_\JMJ?]S<&7_S+"M_["HI/_?U]7_
-M-B\O_R0?(?\P*";_>')B_X1X=/_>S]#_;&9J_R@B)O\F("3_'1LD_SY 1?\\
-M.3C_M:^G_^'3T/_5Q,S_3%5C_T1)5?^$?GS_BH.#_];$P/^*@X__1TA3_RPH
-M*O\O*"C_KZ2C_ZN=FO^'=W3_HI:7_R\I+?\K(R'_JI*5_U%)3/_+O\#_O["P
-M_[BGK?]886?_2U=@_S]&5/]'3U/_4DU-_]S1UO]35F+_0T]8_X2"A/_4S<W_
-M/4)._QTC)?\O,3;_3T]8_R8G+O\Z0$+_*"@K_[ZXP/]*3E;_,C<\_S$Y0_]]
-M=7/_V<W._S1#4/\G.T__051L_S$_5O]A8G/_(QPF_RXE)?\H(2'_8%A<_S(J
-M+O_*PK[_HI>0_XJ(@_]/4U'_/4)"_W-[??\Z2UG_86!F_UE<4/]03D?_8UM1
-M_]C(OO]Q8ES_W<_,_^;2RO]W:FG_-2TQ_S\X/_]#/47_9V!:_VYG8?^LHI[_
-MWLO%_VUF;O]#1%7_5E=H_T="3O\M)2C_+28F_RLF(?\V,2O_;&A@_\F]MO_4
-MPK__*R(B_R0?'_\F'Q__+28F_RHC(_\M)R7_2D(^_RH@'/_+O[O_*R(B_R0=
-M'?\B&QO_*R0D_R47'_\C&Q?_(ALB_RXF*?\@(1K_SK*N_W-R9__#J:;_N+.N
-M_]W5T_\V+R__(QX@_S\W-?^5CW__<&1@_]K+S/]E7V/_*2,G_R,=(?\@'B?_
-M/3]$_T5"0?^UKZ?_V,K'_]' R/]!2EC_5%EE_Y"*B/^@F9G_X]'-_W=P?/]&
-M1U+_*",E_RHE)_^LI:7_E(R*_XM^??^<D9;_)2 F_RHB)?]_='/_6EQ:_\2]
-MO?^VL[+_O*ZV_TU57_]"3%K_24Y@_T=.5/]Q;&S_XM?<_TQ/6_\Y14[_A(*$
-M_]K3T_\Y/DK_/3X__U=97/\]/T;_*"<M_Q08&O\D)"?_N[6]_T)&3O]!1DO_
-M,3E#_Y&)A__?T]3_5VEW_S=-8_\G/%7_,$5=_TA<</\7(2__'1\B_R8E)/]0
-M14K_,"<N_Q\:'O^EGY?_L*6>_XZ'@?]M;VW_;G9Z_U9HC/](46+_4%I+_TQ,
-M2?]33D[_X]/*_V=84__ATM+_Y=#+_VQ@8?\Q*C'_.3,[_SPX0?^+@GO_?G5N
-M_[ZRK?_@S,3_349-_SL]3/])2UK_.C8__S H*_\L)27_+RHE_R\J)/^/BX/_
-MS<&Z_]+ O?\N)27_)!\?_RDB(O\J(R/_*"$A_R<D'_]D6U7_PK.N_\S N_\M
-M)2/_)A\?_R0='?\J(R/_(QDC_R,<'/\@&2'_*"$K_Q\D(/^]IJ'_>WMP_\"K
-MI__&P;S_V]/1_S0M+?\D'R'_/34S_ZJDE/]5247_Y]C9_TI$2/\I(R?_(AP@
-M_R >)_\M+S3_B(6$_T Z,O_BU-'_R;C _TM48O]$257_E8^-_Z.<G/_FU-#_
-M7%5A_SH[1O\M)RO_,"HN_ZJEI_\[-C;_AWM\_YN2F?\A'27_(AP@_R,=&_\K
-M+2K_-RXN_R ;'__0Q<K_5V%E_TM77O])4%S_4UM?_VUH:/_>T]C_0$-/_S]+
-M5/\T,C3_S<;&_SQ!3?]*1T;_8&%B_T-(3?]02T__+3$S_RTM,/^JI*S_045-
-M_SM 1?\I,3O_6E)0_]#$Q?^*C8[_?W^"_Y^=IO]676/_+C<^_SL]0O\N)R?_
-M,2@H_[2GHO\J)2?_(" I_TQ'2?^'A'G_I:29_V=L:/]L='C_8W9^_X:(C?^"
-M@G__1T5"_UI54/_HV];_6U%'_^37TO_BSM?_7E)3_S0Q)?\L*";_1#M"_WIN
-M9?^.A7?_R;R[_]W)Q?]!/T'_,3$^_T1$4?](1T[_,"HH_RH>'_\S)RC_-RXH
-M_YB-AO_8R<3_T\+"_RHB)?\C'B#_)AXA_RTD)/\N)B3_-BTG_VYI8__:R,7_
-MS[Z^_RLF)O\E("#_)!\?_R@C(_\4#Q/_%! 2_Q81%?\8$Q?_,"8B_[*EH/]#
-M03K_NK"L_]/'P__<T=#_-"\O_R<B)/\X-#+_O[.D_TD_.__EV=K_0CT__R8B
-M)/\@&Q__(R8Q_T)#3O^HG)?_-"@D_][1T/_&N;[_/$A1_U9=8_^5D(O_FY24
-M_^O>V?]04%O_/4!+_R8A(_\G(R7_*24G_U925/]G8F3_4T]1_R,>(O\K)RG_
-M*B8D_T='1/]G6%S_A(&'_]C0T_]88&K_359=_TA/6_]56F#_=&MK_^;9WO]#
-M1E+_5%MA_T8^0?_;S]+_0$90_W!S=/]I:&__1TI+_YZ:G/\T-CO_+2PR_Z:B
-MJ_\V.43_+S(W_RXT/O^?DI'_L9^A_VM?6O]<5U'_:&EC_VYJ8O]]:V?_P[*X
-M_];,R/_1O[S_=F%?_ZJAH?\D(RG_/S<[_R8D(?^+CHC_9VQJ_U%57?]Q<&__
-M?GQW_U=95O]044O_4U%)_^;%UO]N2&G_W+78__OBW?]52$W_*2(L_RDF,O\U
-M-4#_>G-G_Y6-??_+O[K_Y-#,_T=$2O\S,T#_.#=$_U957/\I(1__,B8G_S,G
-M*/\T*B;_D85^_]G*Q?_%MK;_*R,F_R(='_\E'2#_+B4E_RL@'_\V*B7_@H!Y
-M_]+ O?_2P<'_*20D_R4@(/\F(2'_(AT=_QP7&_\6$17_%Q(6_QL6&O]%-3+_
-MIYN6_TY+1O^FH)[_W<_,_]?,R_\P+2S_)B$C_S(N+/_$MJ?_54U)_^+9V?\Z
-M-37_)B(D_QH8&_\C)C'_0D51_Z:7D?]21$'_X=/4_[>LL_\\2%'_5EMA_YF3
-MD?^0B8G_Z=S7_T9&4?\X.T;_)R,E_R<C)?\E(2/_)B(D_RTI*_^NJJS_(Q\A
-M_R@D)O]M8%7_@WMK_YZ'>_]P8UC_VM+0_U-79O\M-3__14Q8_UI<8_]]='3_
-MZ=K?_T5(5/]/45C_8%99_][/U/]$1U+_CI.3_W1R>_]%2$G_R<3$_S0S.O\L
-M*S+_FIBA_S,T/_\X.T#_)"HT_ZN>G?^NFIS_CGUW_W!D7?]".S7_DH1[_WMH
-M8/_+O\C_03]!_S@S+O]F6UK_/CPY_RHL*O\V-#;_(!TC_S8W./]T>';_:FUR
-M_YF6E?]H9F/_<'5Q_U164_]454__Z+O?_XA.H/^F9-'_QYS2_UQ(4?\U&3/_
-M1S [_S4N*/^)?7G_FHF4_]3(Q/_MVM3_4T]7_S<W1/]44V#_6UIA_RHB(/\K
-M'R#_+R,D_STS+_^#=W#_U,7 _\2UM?\K(R;_(!L=_RDA)/\T*RO_,28E_SPP
-M*_^*B('_W,K'_]3#P_\N*2G_)B$A_R,>'O\J)27_)R(F_QH5&?\A'"#_'!<;
-M_U1$0?^6BH7_8V!;_ZFCH?_;S<K_U<K)_S$N+?\H(R7_+2DG_\6WJ/]>5E+_
-MY-O;_SPW-_\G(R7_'1L>_T!#3O\[/DK_L*&;_U]13O_DUM?_K:&J_T)-6/]3
-M5U__7E=7_X%Z>O_DU]+_3T]:_RTP._\D("+_)2$C_R,?(?\D("+_(AX@_R,?
-M(?\F(B3_(1T?_RLC(?\S,2S_74Y._ZB>FO_7S\W_3U-B_RLS/?] 1U/_7%YE
-M_X^&AO_FU]S_24Q8_U)46_]C65S_VLO0_SH]2/]^@X/_85]H_TE,3?_>V=G_
-M+RXU_R\N-?^4DIO_/#U(_SU 1?\N-#[_MJFH_\"LKO^JD8K_HHA]_ZJ4C/^Y
-MGY3_CG]R_\K#S_\P,S[_(R8G_XU_@/^3@7W_WLO%_TH\/?\<%A[_(1\B_UQ>
-M6_]K;VW_='%P_W]^??]W?'K_9VMI_UU@8?_>V\__+2HI_S N-_\X/CK_?WZ+
-M_V9#BO^C>Z__12Q+_ZJ*O?][6)C_T\+,_^S:T/]*1D__/CY+_U-27_\]/$/_
-M*R,A_R\C)/\P)"7_/C0P_W)F7__7R,/_K)V=_RLC)O\@&QW_)Q\B_S,J*O\O
-M)"/_,24@_XF'@/_=R\C_TL'!_R8A(?\D'Q__*",C_RLF)O\H(R?_*20H_R8A
-M)?\?&A[_<V-@_XR >_]Z=W+_IZ&?_^'3T/_*O[[_+RPK_R4@(O\L*";_Q+:G
-M_W5M:?_GWM[_.C4U_R<C)?\D(B7_4E5@_T1'4_^ZJZ7_=6=D_^G;W/^5B9+_
-M0$I8_UQ?:O^CFY[_GYB8_^C;UO]#0T[_+C$\_RHF*/\F(B3_(Q\A_R0@(O\B
-M'B#_(AX@_R <'O\B'B#_%Q 8_RDN-/_*Q<O_O+2X_]S3T_]1563_(2DS_T!'
-M4_]L;G7_EXZ._]S-TO].45W_;&YU_W=M</_=SM/_1$=2_X:+B_]A7VC_/D%"
-M_\;!P?\G)BW_*RHQ_Y.1FO\W.$/_-SH__R8L-O^XJZK_S;F[_[>BEO_$J)K_
-MNYZ2_\&EE_^;BGK_U,C7_RXN0?\A(RO_.34W_XU\=O_:P[?_034V_R<C)?]@
-M7EG_A(5__XB(B_^4CY/_<'%R_TI34_]56EK_AXF,_\;(S_\N13+_3&]7_W6/
-M>O\H/RS_("PK_S$Z,_\W1#G_*#0]_S]"5/_*PL7_Y]C2_SL[1/\\0$__2TE9
-M_T9"2O\N)"?_+2,F_R<>'O\P*BC_8UQ6_][0S?^IF)C_)B,B_R$>'?\G("#_
-M+B4E_RXB(_\Q)"/_1$4__]?(R/_,N[O_*",C_R4@(/\D'Q__)B$A_RXG)_\K
-M*2O_.C\__Q\:'O]O7U;_?V]L_Y&(@O^DGYK_Z-G:_[JNK_\M*BG_(QX>_R0E
-M'O^OJ:'_DX>#_^+5U/\^.3G_(Q\A_R,@)O]$1U+_1$A*_[RLJ?^3@H+_Y]C8
-M_X-]B_\W2%;_7V)M_YR4F/_:SLG_YM36_S8W0O\N,#?_*"0F_R<C)?\B'B#_
-M(Q\A_R(>(/\B'B#_(1T?_R,?(?\H'1S_1T-%_U%05O_ N<#_ZMGC_UU69_\]
-M0E3_0DE;_WUV@/^UJ;+_Y]WL_U129?]A87#_C(*+_^#3V/\\/T3_CI"._U!.
-M5_]"14;_SLO*_R@I,/\K*C#_B8B._S,T/_\N,#C_+C8Z_\2XN?_FUMK_T<&X
-M_].YK/_7MZ__S+"L_YF-AO_9Q-?_(S% _R4A*?\F*S'_>'AU_YV8DO^0BXO_
-M@'M[_XB!>_]G8%K_7%UD_Y60E/\H*BW_-T-'_SM$1/]F:VO_O\3*_SY(-_\V
-M0C/_+T P_TQC4/\Y5$/_#"D7_SY?3?\S3CW_/%I*_YBMH?_9T<W_2T=/_S0U
-M0/\M*C;_0SY _R8='?\E&Q[_)R @_R<C(?].3TC_T<?#_YR)B?\F'1W_(AT=
-M_R<@(/\L(R/_+B(C_S(E)/][>WC_U\K)_\BWM_\H(R/_)2 @_R<B(O\I)"3_
-M+B8D_ST_/?]=9&3_'QH>_WMP9?]H65G_LJNE_YN9E/_DU=G_MZNL_S,P+_\G
-M(B+_(2(;_ZZIH_^MGYS_Y=C7_S,N+O\E(2/_)" H_SD\1_\Y/C[_P*VM_Z>6
-MEO_NW]__8UUK_SA)5O]#1T__JZ"E_^'4S__FT=;_/3U*_R B*?\H(R7_)B(D
-M_R4A(_\B'B#_(AX@_R(>(/\B'B#_(AX@_R,;%_]14$__/$5,_XB*D?^+B8O_
-M24]1_SM'3/] 2%+_>'I__T9'3O\H+CC_'"4S_TQ55?]Y>GO_Q\')_SD^2O^+
-MB8O_3TM4_T)%1O_)QL7_+S W_RDI+/^8F9K_/#Y&_S<X0_\O-SO_OK*S_^+3
-MV/]W<FS_R;ZW_]_2S?^9CXO_FI6/_]['VO\U2%3_)B H_SI"3/\N,SC_:&EJ
-M_T(]0?\U-#O_4DQ*_[6IHO]=6%C_D(2'_SHU._\A*"[_0T5(_ZFDI/_$P]#_
-M'AP9_R,;'_\7&QG_'R47_SY#-_\Y0C7_+3HM_R,N&_\B0BW_:8^ _\;%Q/])
-M1$K_0#Y'_S4O-_] .3G_+B(C_R4;'O\K)"3_)2$?_R D'/_(P[[_@W!P_S(D
-M)?\D'1W_)R @_S,J*O\M(2+_,",B_X>'A/_:S<S_OZZN_RDD)/\D'Q__+2@H
-M_S K*_\V+BS_96=E_U]F9O\C'B+_=FQA_VI=7/^,BH/_C(^)_^?8W/^PI*7_
-M+RPK_R8A(?\K*B/_K::@_\BZM__KX-__,2XM_R,?(?\;%Q__,#,^_SQ#0_^_
-MKJ[_O["P__+EY/]N:';_259A_U977O^RIJG_X=7._^?2U_\_/TS_("(I_R4@
-M(O\C'R'_(Q\A_R <'O\@'![_(1T?_R(>(/\>&AS_*R,A_TE+3O]&4EO_6F5L
-M_T1/6O\Y0T[_*C$__S(Q3O\P)V/_-"IO_S\V?/];49K_&!5)_V5?B_]!/5W_
-M.4%+_Y64D_]85%W_3$]0_]G6U?\P,C?_,#$R_TE+2?\P,CG_,3(]_R<O,__#
-MM[C_Y-7:_WYQ;/_ JZG_W,G)_X9R;O]W;F?_U+W0_Q0G,_\E'R?_-T!._SD_
-M1_\A(R;_,"PT_R$D+_],2$K_>&IA_W9K9/^2@8'_1CU$_R,D*_\^/#__MJNJ
-M_]W.YO\G*S/_.TE8_R<K,_\V-C/_0D ]_S\[.?\;$Q'_+"TG_RTS+_]985W_
-MU=+1_S@Y0/\M,#S_.C=$_VED:/\L(B7_+B0G_R8?'_\F(B#_/3PU_]?+Q_]L
-M6UO_)A\?_R$>'?\G("#_+R8F_RTA(O\U*"?_CHZ+_][1T/^SHJ+_*20D_R0?
-M'_\H(R/_*B4E_S@P+O]E9V7_8FEI_R(=(?^9C('_P[*R_X-\=O]I9V+_Y=;:
-M_ZVAHO\I)B7_)2 @_S@S+?^]M*[_U,C$_^3<VO\X-33_)" B_R <)/\R-4#_
-M/D5%_\*SL__,O[[_[^3C_W%J=O]'4US_7EUC_[FKK/_IVM3_Y=#5_T5%4O\8
-M&B'_)!\A_R8B)/\C'R'_(!P>_R <'O\A'1__(AX@_QX:'/\U)RC_2T9,_U5@
-M:_]16V7_1TU=_R@H-_]@76__<FZ4_R,B.?\0$!__#0T:_PH)%O\;&3K_+"=1
-M_SDT5O\?(2C_IZ6B_UE57O]"14;_UM/2_RLM,/\X.CC_-3<T_S(U.O\P,3S_
-M*# T_\:ZN__GV-W_E7]V_\FPJ__ES,O_GH9W_WMQ9__7P-/_(#,__R$;(_\O
-M-3__8F9H_R4G)?\Q+"[_(2 G_TY&1/^(>6S_B'UV_Y&"@_]+1$O_(R4L_S4U
-M./^AG)S_S+S8_RDJ,?\4'R;_&QTD_R(B+?\E*C;_/$1._Q,:(/\E)"K_*RHP
-M_SDV//\?&!C_/3E"_SL[2O]*2EG_4U!6_RLC(?\X+"W_*AXA_RLD'O^7BX+_
-MV,S%_UE.3?\J)BC_(!L=_RHC(_\J(R/_*"$A_S F(O^)BH3_WM'0_Z22E/\H
-M("/_)Q\B_RHC(_\K)2/_+RDG_VUN;_]@96K_)B$C_Z21A?_ K:7_Q[NT_\6Y
-ML/_(N[;_JJ.C_R@E*_\E(R;_1C@U_[>PJO_?T-#_ZMO<_S0Q,/\D("+_'AHB
-M_S<Z1?]&3E+_9EYA_]/'RO][>7O_>GU^_W5[??]H96O_KJ.H__/AWO_8S=3_
-M24Y:_QD:(?\H(B#_)A\?_R8A(?\A'1__'!P?_R >(?\A'R'_'AL:_T8W-_]!
-M.T/_1T]?_U9;9_],3E7_#0,,_RL4'_\R(2?_%0H7_R$4'_\G%Q__&0T6_R$:
-M(O\8"QC_)A@G_R :(O^6BHO_1$)+_T=(2?_1T,__+"XQ_TQ.3/\9'!W_("4J
-M_SQ!1_\I+C/_2$-'_][6V?^)>&O_P:NB_^G3R_^8A';_?W1I_]>[S_\<+CC_
-M+"4L_R8Q//^1D(__*28E_S8P-/\I(RO_1S\[_YN+>_^1AG__D8.$_TE$2O\B
-M)3#_(R,F_ZZLKO_:P^#_)1PC_Q@1&/\A$!K_(1HA_QL;)/\B*##_+3 [_R4D
-M*O\N+33_55%9_];,S_]".T7_.SM*_U-38/]33E3_,"@F_R$5&/\L("'_3D4_
-M_[^SK/_<S\K_1CX\_R@B)O\C&Q[_*2(B_R4>'O\I(B+_,RDE_XF*A/_>T=#_
-MH(Z0_R@@(_\G'R+_*"$A_RPF)/\P+"K_7U]B_UUB9_\E("+_L**9_V584_^F
-MGIS_IIR8_\.WL/^>EI3_*",E_RHB)?]72$C_E)*/_][2U?_BT]C_+RXM_R0@
-M(O\B'B;_-SI%_SU 0?^\M++_VLO+_^+>W/]56E3_-3,U_V!98/^CF)W_[=?8
-M_\[%S/\\04W_'!LB_V):6/]53TW_&A45_R,?(?\A'R'_'!H<_Q\='_\?'1__
-M6$U,_TA)4/]&4V3_04A6_R<=,/\]*RW_JY*!_W9:5_]:/3S_F'5N_X5A5_^$
-M8E__*Q@2_Y:!?_^GD9/_% 8#_S<I)O]"1$S_24I+_]72T?\<'B'_+"TN_S]"
-M1_\P-3O_+#$W_R0G+/\<&AW_'!<9_XAV;/_!JZ+_ZM3,_Y6 =/]W;V7_U;W2
-M_Q@J./\L)2__(S ]_Z2@GO\L*"K_/#<]_R\H,O] .#;_H)2%_X)Y<_^)?7[_
-M7UMC_R8I-?\[.D#_O+>]_\;!V?\R-3K_'" H_Q,2'_\;%QG_$Q,6_Q87'O\<
-M%R/_'!<=_Q(.%O\J)"S_T,3'_U-,5O] 0$__04%._U!+4?\L(B7_*Q\B_TQ!
-M0/\W+"O_6$U,_Y>/C?\T+2W_)!\A_R8?'_\K)"3_*R0D_R@A(?\R*"3_B8J$
-M_^'4T_^+>7O_(QL>_R4=(/\K)"3_+2<E_RTI)_]@8&/_4UA=_R<B)/^;D8W_
-M)!T=_QH7'?\C'B+_F(R'_Z:;FO]74%#_+" <_[ZRKO^!@X'_KZ6H_]K/U/\R
-M,#+_)2$C_Q\;(_\V.43_/C\Y_\F_N__BT]3_X];1_U%/1_\\.#;_S,'&_^?8
-MW/_UW]W_S,/*_S@]2?\;&B'_,BHH_S<Q+_]"/3W_&147_R$:&O\E'A[_(!P>
-M_R =(_]Z<G#_/#Y%_T=79_\[15/_.4)"_QL6,O]I5H3_%0P=_Q,4&_\2#A;_
-M%A 8_Q01'O\7%AW_"@86_S$K0?\9%1[_)1P<_S]#2_])1TG_UM'1_R ?)?\N
-M+3/_,3,Z_RXR.O\P-3O_)2@M_S N,?\A'![_BWMR_\&MI?_IU-#_F(5[_W%M
-M9?_+MLS_%RDW_R8>*/\?)37_Q[^]_RTH*O]$/T7_+2DQ_S@Q,?^?E8O_A81]
-M_XV*B?]F9F__*BT^_T5!2?_$O<?_U<GB_T=+3?\G,SS_%!XM_S P/?\>'RK_
-M&ALF_R0=)_\8$1C_&1,;_RXG+__DU=G_1T!*_ST]3/\V-D/_3TI0_RH>)_\I
-M'"'_+2,?_R\C)/\:%!C_(AP@_R(='_\J(B7_)R @_RDB(O\K)"3_*2(B_S0J
-M)O]E9F#_X-/2_X%O<?\E'2#_)1T@_RPE)?\J)"+_*R<E_U]?8O]97F/_'!<9
-M_\B\N/\E'A[_(R F_R(<(/\5#@[_&108_VAC9_\H'AK_KZ":_\&_M__$N+/_
-MP+*O_S4T,_\C'R'_&Q<?_S<Z1?]-4$K_R</'_^37XO_FU]C_95]5_VA@7/_C
-MU-C_\M_?__/=V__%O,/_/$%-_R4D*_\^-C3_65-1_VQG9_\A'1__<6=C_RL@
-M'_\E'R/_'ATD_Y.'B/\Q,#?_04Q=_SD]3/\\2$W_!@LG_V9CF/\Y-F;_&! L
-M_QL,'O\>$!G_'Q8=_QL9,_]75X#_4E)Y_P\/'O\E("#_+C0\_T-!0__;TM+_
-M*BDP_RXM-/\V.$#_*RXY_R8J,O\A)"G_*RDL_SHU-_^_L*K_UL.]_^W8UO^>
-MBX/_A8!T_]C S_] 3E?_+ATC_W9VA?_6Q\?_.# S_V]L<O\U-#O_-3 R_[NS
-MK_^0EY#_041%_UI=:/\S.$K_+RLT_Z2=J?_4Q-C_13Y&_R,@)O\A'RC_-S="
-M_SDZ1?]35%__)B8O_R@H,_\?'RC_2$!#_][/S_]#/TC_0T-2_SPY1O] .T'_
-M)!P?_RD@(/\R*2G_,RHJ_QD3%_\:%1O_'AD?_QT8'/\;$Q;_(!D9_R4>'O\H
-M(2'_,"@D_Y&(@O_7R,/_:EY:_R<B)/\A&Q__*" C_S$H*/\D(A__7F-C_V)F
-M:/^*A87_4$A&_R ='/\?'1__(QP<_R4=(?\A&Q__)B D_RHB)?]/24?_D8Z)
-M_YR7D?^TL*C_-C$Q_S K+_]_?H7_-#A _V1F9/^[MKK_W-;>_]34T?^]P[__
-MJ[&S_]31U__LV]O_\MS4_[FUM_\_4%;_%20D_W=X>?^ZK:C_75-6_QX<'_\=
-M'!O_D(J(_T4Y-?\C'B+_I9F4_X)Y>?\O,3G_,C0\_RTU1?\Z15;_" \C_R4=
-M./]J9)[_44Z0_S@X<?\8&TK_&A(M_R\I/_\4$23_%Q<B_Q@3%_\;&![_(2$D
-M_ZBHJ_\K+C/_+"XS_S8Y/O\L+C7_(R@N_QXA)O\E)RK_,S$S_\"VK/^RGY?_
-MWL;#_Y.!=_^%=&[_K9N?_VQJ;/^">W7_Y-?6_^/.S/^PGY__N[*R_R<E*/\O
-M*B[_-#$P_R F*/]?9F;_+#0^_S(W2?\P,#O_T\O5_^'4YO\R*C3_)2 D_Q82
-M&O\9&!__'QXE_QT<(_\@'R;_'AXK_R<H+_]E7E[_W]#1_S<U/O\P,#__1#Y,
-M_T([0O\M)B;_)1X>_R4>'O\B&QO_,"HN_QD4&/\5$!3_%Q(6_QH2%?\B&QO_
-M*R0D_RLD)/\V,3'_)1T@_WYR=?]A65S_)!\C_R$<(/\K(R;_+R8F_R<F)?]=
-M85__?(!^_YJ3D_\O)2C_'QL=_QD:&_\?&AS_(!H>_R(<(/\?&1W_(QTA_Q@3
-M%_\<%QO_'1H9_U123_^/BHS_3TI._Q\>)?\]04G_5UQ8_\#"Q?_3T>'_O+?)
-M_R,<+?])0U'_U<[8_^K=W/_JUMC_IYRI_TI"5O\\(S3_=VYU_\.TKO]+0$7_
-M(1XD_VQK:O\P*R;_FXZ-_RDC)_^XK:;_*!X:_VEH;_]$1DW_&Q\G_S= 3O]&
-M3V#_/T)._Q -&O\) !+_(A<N_PX'&?\I)##_&QLD_S$T0/\H+SW_)"8M_QD9
-M'/])24S_%!07_QL=(O\I+#'_+S(W_RXQ-O\D*2__(R8K_R8H*_\]/C__OK2I
-M_[.?E__FS\K_DX%W_XY[<__!LJW_:5];_UY22?_NW]K_Y-/3_]?(R?]%0$3_
-M.3H[_R,A'O]A7UK_*S N_RDM*_]'25'_-#1'_S0O.__2QL__V,O=_RXF,/\Q
-M+##_'QLC_QL7'_\B'R7_'1H@_S M,_\Q,3K_%Q0:_S<P,/_CU-G_.SA$_S\_
-M3O\^.$;_,RPS_R8?'_\G("#_+28F_R8?'_\V+C'_,BHM_S8N,?\B&AW_'A<7
-M_RHC(_\I(B+_*2(B_R4@)/\>&R'_'!D?_QT:(/\H(RG_*R8J_RLC)O\M)"3_
-M)",B_V=E8/]F85O_*!T<_[*GKO]S;77_)B<N_QT<(_\B'2'_(!L?_QX9'?\A
-M'"#_(QXD_R(=(_\?&B#_&A0<_R4?(_\A'"#_)B4L_RLO-_^BF9G_IZFL_WR9
-MI?]<AY__0#M5_VE3:/^OGJG_:%YA_]S/SO^-CI7_.TM5_S="0_^.CY#_U<; 
-M_SXS./\G)"K_F).._Y^4D_^6BHW_'AD;_\:ZL_\Z,"S_O[[%_T%#2O]>7%[_
-M-#8]_SQ'4O\\2U'_'RD?_T5(0O^5E)O_*2\Y_UQ?9/\;("7_+C9 _Q@B,/\]
-M1DS_-#H\_T!"1?\9%QK_%QD>_RTP-?\I+#'_+C$V_R$F+/\B)2K_+C S_SDZ
-M._^^M*G_K9F1_^++QO^,>G#_F(A^_\"TK?]_<VS_J)6)_^?7U/_.OL+_13H_
-M_R\R-_]!1D;_0T$\_XV-@/]E9U[_*BDH_RTM./]W=(;_1C]'_[NQM/_>T>/_
-M*" J_R ;'_\A'27_(ATC_QL6&O\?&A[_*",G_QL8'O\9%1?_I9Z>_]K/UO]#
-M0T[_/#Q+_T Z2/\Q*C'_)R @_R,<'/\K)"3_)A\?_RPC(_\U+"S_."\O_S G
-M)_\R*RO_*R0D_R<@(/\K)"3_*R,G_Q40%/\5%1C_&Q49_QP5'/\<%QO_(!@;
-M_RLB(O\C(2/_<FUG_T<]+_^ADY#_TL70_V);9_\9&B7_'B$L_S,R./\E(R;_
-M(!XA_QX<'_\C(!__(1X=_R$<(/\A'"+_)A\F_QX9'?\<&R+_+S,[_YJ1F/^<
-MH:'_-D]._T5?:/\Z-T3_DX.+_[FJKO]A6F'_Y-WG_WZ!DO]!25W_+BHR_YN6
-MFO_/P+K_-RPQ_RLH+O^VJ:3_O:ZO_WUR>?\H(R/_Q;FP_YN1C?_(Q\[_3$Y5
-M_Q84%O]_@8C_0TU;_SI&5?\=+"C_3$Y3_X^*G/\H,D;_'R,E_TI+3/\>("C_
-M*"L\_SL]1/\T.#K_0DA*_SM!0_\N,3;_+C$V_RDL,?\J+3+_)BLQ_R@K,/\T
-M-CG_)"4F_\*XK?^WHYO_X,G$_XMY;_^@C87_NZNH_V-;6?]32T'_YM30_^+-
-MR_^6BXK_-3HZ_S,X/?\A'AW_D(J"_WMY<?\F)BG_)2@T_RLN/_]34EC_A86"
-M_^'/X_\Q+##_(B,J_S(N-O\E("+_% \3_QX9'?\Q+##_0S]'_R@J+__,O\3_
-MV<C2_UA6:?]&25O_0T-._RDA)?\J'Q[_-"DH_RXC(O\K(!__,"@D_RPG(O\T
-M+RK_*",>_S(J)O\R)R;_+R0C_RXC(O\I(B+_*B4E_QP7%_\7$A+_'1@:_QT8
-M&O\=&!C_*R8F_QT6'?^%>G/_=FE<_T<X0_\R*3K_)1XH_QX:(_\:&2;_&1HE
-M_Q@8(?\I*3+_,3$Z_RLL+?\C(B'_(1\A_Q\='_\?'2#_'!H=_Q<5&/\U-#K_
-M%Q0:_Q45&/\?("'_+RDM_R,D)?]32D3_A79P_VUT>O]7D:?_2(BG_S!PC_\Z
-M9HC_*C!&_W!:6_\W(B?_)"$G_[:OJ?_0N;K_8519_R\M+__-P;C_:FMV_]K1
-MT?]!2UK_4$Y1_\"^P/]&4%__/DI9_Q<C(O]&1$'_A(*2_R0M/O\L-37_)2(=
-M_TM*5_\L-4/_.3Q!_SH^0/]%24O_,SD[_S<\0?\Q,S;_$1,6_S$V//\D)S+_
-M(R8K_QL@(/\P,S3_LZZN_]7.SO_9S]+_U]#0_^#0U/_DTM;_P;"V_[*CI__O
-MU=C_WM/8_VMF:/]T;VG_+"XK_R<F)?^!?WK_:VED_T9%2_\I*SK_&ATN_S$U
-M-_]%1D?_XM'I_S0S.O]57&C_(!\L_QP;(O\B("G_(1\H_R$?*/\R+C?_&QXC
-M_]#!Q?_9R-+_7%ML_TQ/8/\_/TC_*R,F_RL@'_\L)"+_*2$?_RLC(?\L)B3_
-M+RDG_RDC(?\F(![_)!P:_RTE(_\N)B3_+24C_R\H*/\T+R__(QX>_RTH*/\U
-M,##_'AD9_RTH*/\D'Q__)"(D_XM^>?]%-SC_)C15_Q(>._\8&2K_%A,?_Q85
-M(O\>'2K_&AHE_QX>*?\8&"/_%!,:_S(Q./\?'B7_(!\F_QX<'_\>'!__'!H=
-M_R<E*/\I)RK_$Q$4_R$?(O\F)"?_'!LA_V)64O_#LJS_8VEK_QXY.O\*)"?_
-M'D=,_V2%D?]:?8K_HZZI_S8Q,_\M*"[_MKJR_\RZO/]'/$'_*2<I_\J^M?]$
-M2EK_U<K)_SA%5O^+B8S_R,/#_T),6_\W0U+_*C8U_TQ*1?^#A93_)"Y"_R8R
-M,?]!/SC_3TY;_QLE,_\P-#;_*BXP_R\S-?\G*RW_*2XT_R\Q-/\K+3#_+3$Y
-M_RHP.O\A)"G_)"@F_S4U./_(NKO_QK2V_\&OL?^]JZW_K9^@_Z&5EO^AE9;_
-MF8V._Y-X?O]*14G_-C0V_U-.2/]N;FO_&AD8_R8E)/]B86#_6%=>_R@I.O\D
-M)SC_-#@Z_TA&2/_AT^__*RTU_TA17_\N,#__&ATH_R8J.?\=(3#_$!0C_U=0
-M6O]I:V[_OK"Q_\2YP/]E96[_3E!8_T9)3O\J)2?_)1X>_R$:&O\C'!S_(QP<
-M_R@A(?\A&AK_*2(B_RXG)_\Q*BK_)A\?_RHC(_\M)B;_*B4E_R<B(O\M*"C_
-M*R8F_S0O+_\I)"3_)2 @_R$<'/\?(1__3#\^_SPU/_]#9XS_5&R-_PT4*/\7
-M%"#_%Q4>_Q@5(?\3$!S_&!4A_QT:)O\:%R3_'QPI_QD6(_\@'2K_-#([_RDH
-M+_](1T[_'QXE_QX<'_\3$13_#PT0_PL)#/\7$AC_0C@[_QX4$/\8&A?_%A<0
-M_S8U+O\A.#/_35]C_S]!2/_7R,/_,B<N_QP?)/\X0CC_95E:_S4O,_\X-#;_
-MRKZU_R4K.__/Q,/_-D-4_YF7FO_-R,C_0$I9_SE%5/]J<W/_<W!K_WU_CO\Q
-M0%/_-$ __T=%/O]656+_(BPZ_SY"1/\Y/3__/T-%_SU!0_\\04?_-SD\_SY 
-M0_\P-#S_)RTW_R$D*?\E)R7_HIR@_^;1S__[XMW_^-_:__KAW/_]YN'_^N/>
-M__CAW/_YXMW_]-C:_VUK;?\F)BG_.#4P_Y.2D?\E(R7_(B B_R$?(?]34EG_
-M+B] _R0G./\V.CS_3TU/_^31Y_\I)BS_,#9 _S8S/_\C(RS_$Q0?_Q,4'_\[
-M/$?_*R0L_RXL+O\_-#/_6E)6_UE97/\T-SC_+3(R_R8E)/\B'1__)2 B_R(=
-M'_\E("+_+"0G_R0<'_\I(23_*R,F_RDD)O\C'B#_*",E_R8A(_\F(2'_(1P<
-M_R0?'_\D'Q__&A45_R(='?\G(B+_)!\?_R(:'O\C'!S_(1\B_Q@A,O\0%RG_
-M'AXG_RPI+_\@("G_'ALG_Q81'?\7$A[_%Q(>_Q84'?\9%R#_'1LD_Q\=)O\:
-M&B/_%Q<@_QP<)?\S,SS_5U1:_RHH*_\0#A'_&A@;_V!@7?]X>G?_/#] _Q47
-M&O\>("7_0T!&_QDF)_]96U[_Q;*R__+5T?\W)R__(R,F_XF+@O_+M[G_-2HO
-M_S$O,?_.PKG_;W6%_\S!P/\[2%G_D(Z1_\K%Q?\T/DW_+SM*_WE^?O_;UM'_
-M;6]^_S)"5?\M.SK_5%)+_U)17O\R/$K_&1T?_Q49&_\R-CC_.CY _SH_1?\]
-M/T+_3$Y1_S T//\E*S7_(20I_VMH9_^[L+7_T\C'_\W#O__4RL;_W-+._^79
-MU?_HVM?_Y=?4_^K<V?_VXM[_7%Y<_VQN<?\D(2#_.SD[_Q\=(/]&1$?_&A@;
-M_UM:8?\>'S#_)"<X_S0X.O^"@(+_Y=OL_S0L-O\M)R__'ALA_RHL,?\C)2S_
-M(1\H_RXI-?\?&B#_'AH<_Q@3%?\:%AC_)B$C_R4C)O]!0$;_)R,E_Q@3&?\7
-M%1C_%A<8_Q06&_\0"P__&A08_QD3%_\9$Q?_$@P0_QH4&/\3#1'_&Q49_QL3
-M%_\1"0W_$0L/_Q$,$/\6$1/_'!<9_R,>(/\C'B#_'1@:_R,<%O\<'B/_*",I
-M_QX:(O\='2;_'1TF_QP=*/\L*S+_,C$W_R ?)?\8%QW_&A<=_QH7'?\9%AS_
-M%Q0:_Q<7&O\='"+_)B4L_QT:)O\7%AS_7EYA_S P,_],3$__+BHL_QT@(?\Z
-M0D3_&1L>_Q47'_\<'"7_$Q87_V-?7?_$O;?_ZMK7_RHF*/\G(1__LJ:?_^/+
-MSO\P*"S_,"PN_\.WL_]N=W#_N[6Y_S]27/^0D9+_PL3)_S<]3?\Y057_>H&'
-M_]3,RO]H:'?_/$95_SQ"1/]T;&C_3$M8_RXY1/\1&Q+_(B0I_S@Z/?\5&AK_
-M)BLP_SD\0?])2$__,C8^_S0U0/\@)2K_JZ*B_\:WO/^LFY7_JI2+_ZB3A_^?
-MBWW_EXA[_Y>%>_][:&#_BGQS_^?2S?]C8V#_JZNN_TI%1?](14O_(!L?_X)_
-M?O]I96?_9%]C_UU=;/\C)SW_/#U$_Y60EO_IW.?_&Q$:_R8?)O\@&Q__(ATC
-M_R0?)?\G)"K_+2HP_Q@3%_\=&1O_%Q,5_Q41$_\7$!#_'!<=_ST\0_\D'B+_
-M0C(Z_S$@)O\A%1;_)AL@_QP3&O\=%QO_34=+_QH4&/\7$17_'!8:_RHD*/\<
-M%AK_'A,8_Q0,$/\<%AK_%Q(6_Q81$_\=&!K_)R(D_Q\:'/\;&1S_'AH8_Q(:
-M*O\6'3'_%Q<B_QL;)O\;&R;_&QLF_QP:(_\=&R3_'APE_RDG,/\N*S'_,"TS
-M_Q<4&O\3$!;_$Q,6_Q(2%?\5%!O_%!(;_R(D*?\^0$/_*BPO_RHL+_\N+C'_
-M5%99_T-%2/\7#Q/_%Q,;_S0S.O\Q+##_2T9&_ZFBG/_KV-C_*B8H_RTJ)?_)
-MO;;_Z]/6_RTE*?\R+2__LZ2I_WR">O^[L;O_0%1B_Y.(C_^^O<K_0E=I_T=R
-MA/]'?8?_M+_&_V!8;/\N0T__;GEZ_][6TO])2%7_+3A#_RPT*O]-3E7_.SU 
-M_R\R,_\G+#'_.3M"_TI(4?\R-4#_*RPW_QLC)_^<D)'_S+W"_\.OI_^^I)?_
-MO:.5_[^FE?_&KIO_Q:N8_\2FEO_$K:#_W\;!_W%P;_^SL[;_44Q._UE36_\F
-M(27_D(Z+_XB$AO]F86/_9F9U_RLN1_\R,CO_J*"C_^W9X_\B&"'_'1PC_QT<
-M(_\I(RO_&!(:_Q@3%_\?'1__)" B_QX:'/\<&!K_&A88_QX7%_\E(";_/3Q#
-M_R8@)/^CF9S_M*ZL_XF&@?\L*2C_'A@<_Q0.$O^OJ:W_&Q49_W!J;O\H(B;_
-M6U59_S<Q-?^9CI/_9%Q@_X)\@/\3#A+_%1 2_R8A(_\G(B3_'QH<_PX.$?\6
-M$A3_$AXS_R@U4O\2$1[_$@\;_Q01'?\7%"#_&Q@D_QX;)_\?'"C_&A<C_R >
-M)_\?'2;_&A@A_Q(0&?\1$!?_$A$8_Q,2&/\4$QG_(2,F_QX@(_\Z/#__.CP_
-M_Q0:'/\W.3S_4$M/_Y2)CO]K9&O_@GV#_T) 0_]C86/_I:.@_^G:V_\K)2G_
-M+BXK_\W!O/_RVMW_)AXB_RDD)O^PH*C_P,"]_[JIN?\S3%W_9G5[_V^$D/]N
-MAIG_67B*_W*0IO]OD)S_8HV?_R@\2O^"A(?_V-#,_TY-6O\Y1$__7%Y5_SH[
-M0O\S-SG_<G-T_S S./\\/D7_03](_S(U0/\K+#?_)"XR_[NRLO_-P,7_P*RD
-M_[>=D/^SF8O_PZJ9_\2JE?_-KYK_PZ22_\FPG__@R<3_='5V_ZFJL?]?6E[_
-M9F)J_R4@)/^5DY#_C(B*_V5@8O]U=83_+3!)_S P.?^OJ*C_Y]3D_R,=*_\P
-M.DC_&R R_R$F./\8&RS_%14@_QL6'/\9%1?_'!@:_R<C)?\U,3/_0SP\_S8Q
-M-_\Q,#?_+B@L_V5=6_]P:6/_3$D^_TY+1O\B'1__&1,7_Q<1%?\4#A+_&!(6
-M_R,=(?\9$Q?_%A 4_Q\4&?\7#Q/_%Q$5_QH5&?\6$1/_)!\A_R0?(?\D'R'_
-M$A 2_QP7$O\,$1W_#Q,B_Q(.%_\8$Q__%A$=_QP7(_\<&B/_%Q8=_Q85'/\9
-M&!__'1TF_QL;)O\;&R;_%14@_Q(0&?\3$1K_%A4;_RPM+O\N,#/_&1L>_R,E
-M*/\F*"O_("@J_RHN,/\M+3#_*R\Q_RDJ*_\O+S+_'B(D_T-(3?]%2DC_T+_%
-M_R\F+?\H*2K_KJ*=__7=X/\I(27_+"<I_[RPL__2T<K_LZ*M_TIG<O]RAHK_
-M25QD_VYWA?]24E__5%QL_SY*4?]XDJ7_3FAV_WJ @O_;T\__:&=T_S [1O^@
-MGI;_0#]&_SM!0_^^NKS_+"\T_SD[0O]+25+_*RXY_R4H,_\C+S/_@7Q\_\>\
-MP?^GDXO_O:.6_["6B/_!J)?_R+&?_\VRH?_!I9?_R;*F_]O'P_]:7%__KK"X
-M_UA56_]U<7G_)R(F_YN9EO^/BXW_75A:_VMK>O\I+$7_-#0]_VA=8O_8T-[_
-M$Q8G_SE'7/\1'CO_04QE_R@O1?\;'2S_'!PG_R$:(O\M)BW_,"LQ_S,Q-/\T
-M+S/_/T%&_S8X0/\Z.#O_V,G)_\R]M_]Y;F/_>6UH_QH5%_]@6U__44Q0_Q<2
-M%O\B'"#_)1\C_TY(3/]:5%C_@'I^_S J+O\6$!3_-S$U_QD7&?\<&!K_(AT?
-M_Q\='_\4$!+_+BDC_SU%3_\4"AG_$Q$4_Q,0(O\A)"__("$H_QP<)?\7%R#_
-M'!PE_QH:(_\B(BO_&QLD_Q84'?\7$QS_%1(>_Q04(?\5&2'_2$E*_TE+2?\J
-M+2[_'!\@_QH='O\8&A__&!<>_QH6'O\>'R;_)B4K_S@Z/?\<(2'_.CL\_[RY
-MM/_GU=G_)B H_RXR,/_"MK'_]=W@_RHB)O\O*BK_LZRL_]C+RO^BG:'_5VMO
-M_YNBKO^7F:'_)R8L_QX=(_\B)B[_969M_[&VPO]&76G_@HN1_]O5T_]#1E+_
-M.D12_[.NJ?]#14S_.SX__[Z\O_\Q-CS_.SU%_T ^1_\G*S/_+C X_R4M+_^!
-M>7?_NZ^R_]S*QO_>R\7_WLW'_]W)P?_BR<+_T+NV_]C$P/_1NK7_W\G+_U-6
-M6_^EJ*W_5U)8_XJ&CO\E("3_HI^>_YN6FO]E8&3_<&Y^_R<H0?\S-3W_;G-Y
-M_^?:V?\^.#;_-C4T_SDW.?\]/T?_'B$L_QL:(/\C'R'_,BLK_S4P,O\[-SG_
-M.SHY_S,S-O\M+3;_-SE!_RHH*_]J75S_6D](_W9N9/^&?WG_'AD;_Q@3%_\=
-M&!S_'1@<_QL5&?]<5EK_'A@<_QH4&/\>&!S_)R$E_R8@)/\B'"#_%0X._YZ1
-MD/\S)"3_)!D8_R<9&O].1T'_.$-._QH3)/\4%1;_%Q0G_RDL-_\Q,S;_)"0O
-M_QT=*/\A(2S_'!PG_Q06'O\0$!G_$Q$:_Q,/&/\6$R#_%QHE_R@M,_\\.CW_
-M/STZ_ST[-O\].S;_/STX_S$O,?\>'!__&A@;_QP:'?\<&AW_%Q<:_Q@;'/^+
-MAX7_T,C$_^G7V_\I)BS_-3,N_]3'PO_OU]S_+B8J_S$L+/^VL;'_Z=G=_YB8
-MF_]89FG_G*2N_Q,6&_].3DO_>WUZ_U=86?\K+3#_*3,W_SA'3/^#B(W_V]73
-M_T!$4_\Y0U'_BX:!_SY#2?]&24K_R\G,_S$X/O]"14K_/CU$_RDL-_\U-S__
-M*# R_\&VM?^^K[/_T]'._T-#0/]!1T/_6EI7_\S*Q_]/44[_6%U9_UM=6O_0
-MO\7_2DU2_[2WO/]J96O_G):>_R8A)?^FHZ+_G9B>_VIE:?]U<8'_*2I#_S(T
-M//^)A(C_XMCA_R@C)_\>(![_,S$L_S<S,?]!/3O_3TI%_U502O]&03O_03XY
-M_T9$0?\\.CS_*BDP_S(S/O\X-C__,BLK_]7(Q_^HGYG_=G!H_VED7_\=&!K_
-M(!L?_Q(-$?]P:V__'1<;_T$[/_\;%1G_65-7_Q80%/\E'R/_:6-G_QT7&_\=
-M'AC_96-<_Y")@_^;FI/_C7MX_Z:<F/\_4%[_%1,C_QD;'O\@'C'_&1DB_R4C
-M(/\M*S3_+2TX_RLK-O\E)3#_("$L_R8G,O\4%!__$Q <_Q@7*/\<'2C_6UU@
-M_R,B*/\D(A__-C,N_T9#/O]"/SK_/CPY_QX>&_\_/SS_0T- _R0B)/\?(1__
-M/T1 _V=D7__-R,/_ZMO@_R<G*O\]-2O_U\; __/;X/\G'R/_-"\O_[BUM/_A
-MU=C_EY>:_TM56?\6&!__)R@I_VUL9?]+3T?_8F-<_RHK)?]?9&#_45E6_XJ.
-MD/_AV]G_/T-2_SQ&5/^ZM;#_049,_T!#1/_+R<S_.$%!_T%&1O]*25#_,30_
-M_R@J,O\D+"[_P[BW_[ZOL__/QL;_0S\]_SLY-O].2$;_V-#3_T='1/]04TW_
-M249%_]/"RO]15%G_MKF^_VED:O^DGJ;_)B$E_VIG9O^AG*+_<6QP_W=S@_\L
-M+4;_+C X_V%@7__MV^G_(A@B_P\0%_\0$A?_&A47_QD4%O\5$!+_&106_R :
-M&/\R+BS_2D5)_SLW/_]+2%3_24E6_SDU/O^YK*O_:UU>_TM#/_]O:F3_7UM9
-M_Q<2%O]%0$3_HYZB_QD4&/\E'R/_24-'_X1^@O]O:6W_9V%E_V=A9?^ >G[_
-M'A@<_R\J)/^IGY7_CX%X_VMC6?]Q8%K_DHV(_T!39?\A&2?_&1D<_R,A-/\@
-M(2C_9F%;_Q82&O\?'RK_%A8A_QX>*?\G*C;_+3 \_Q04(?\4$R#_%QDN_Q\A
-M*?^'A(/_%A@=_QD8'O\G)2C_,"XQ_QT;'O\>'1S_+2PK_S0S,O]"04#_+BTL
-M_RLM*O]X?7?_H)Z7_XZ(AO_@U=K_&QP=_VU<3__=R,/_[=7:_S$I+?]!/#S_
-MM;>U_^+8V_^&A(?_,CH^_QT;)/]J9&C_:&5@_U%64/]I9V+_1$$\_V-?7?\E
-M(B'_B8F,_^/=V_\\0$__/$94_[>RK?]!1DS_/4!!_Z">H?\P.C?_0$9"_TE(
-M3O\V.43_*2HU_R(J+/_$N;C_Q+6Y_]G-R/]-1#W_03LS_U)'0/_DT]/_7%)(
-M_V=D4_]72D7_U<#&_T1'3/^!A(G_=G%W_UA26O]54%3_'1H9_QT8'O]O:F[_
-M<6U]_R@I0O\L+C;_:6QM__G8]_\6$17_(1$5_QT/&/\4$A7_%1 4_Q@3%_\7
-M$AC_#@D-_S4P-/]&1$?_4$U3_T9'4O]6663_3$=-_\:UK__GTL[_C']^_QL9
-M&_\5&!G_%1,5_Q@4%O\:%AC_%A(4_Q$+#_\." S_(!H>_QL5&?\4#Q/_(!L?
-M_Q0/$_\>&1W_/SXS_[VTIO_ LJG_O+:N_\>_N_^JFX[_2%MY_U-05O\:'Q__
-M*R9*_QP>(?]85D?_'A@F_Q\=)O\9%QK_%!0=_R4L,O\3%B+_# T4_QH:)_\,
-M&D'_1D91_\"YL_\F*";_'AD=_Q81%?\6%AG_$A46_R4F'_]64T[_(Q\A_R$C
-M(?\D*27_/T1"_Q\C(?]345/_;FQI_XJ)B/\='QW_BWAN_\BTL/_6Q\O_(QTA
-M_UI44O_#O;O_XMK=_X%^A/\H*C'_(!LA_W%E8?]^<VS_.CQ!_Q<2&/]85D[_
-M-#$P_SHX._]M<7/_V=;5_SH_4?\Q.TG_PKJV_T!%2_\Y/CS_R,/#_R<K+?\^
-M0$/_1D=._R@K-O\R-C[_%R(C_\.YM?_&M+;_U\[(_U)#/?]"/C;_4$@^_^S4
-MT?]P853_=G)=_V%;4__5P\?_14A-_SD]1?\V,SG_;VUP_R4A(_\>&AS_(!P>
-M_W5S=O^ ?XS_+"T^_S$S./^PJZ__^-?H_Q@:&/\6$AO_& X7_Q02%/\5$!3_
-M$PX2_Q@3%_\Y-SK_/SU _TI(2_]%0T;_0$))_T-%3?]'0DC_T+^Y_^W7S_^$
-M=7;_(!@<_QP7&?\7$Q7_&!06_R\K+?],2$K_6U59_TQ&2O\4#A+_(QTA_S$L
-M,/] .S__&A49_Q0/$_^ZKZC_Q;&I_Z")A/^ ;&C_:V-F_[BFF/\S1F3_&!D:
-M_Q(7'/\C)E#_%1@=_UQ82?\:&"O_'1TH_QH8&O\6&"#_(RPR_Q86)?\4%A[_
-M&!PQ_R(Z:_^4EZC_I)N;_T,^0O\<%AK_03Q _QH8&O\;'1K_2DA _Z&>F?\:
-M%AC_+"LJ_T! /?\R+R[_$P\1_QH5&?\>&QK_*"PJ_VEI9O]B4DG_MZJE_\*Z
-MOO\E("3_9U]=_Y^7D__BWMS_<7-Q_TM/4?\V.#W_7UI5_V)64?]/35#_6%)6
-M_TU-0O]+2DG_&1P=_W5^?O_=V=O_/$!5_RHT0_^_M[/_1$E/_S@].__/R\G_
-M*2LR_ST^1?] 0$G_*RXY_R8L-/\9)"7_P;:U_\*RMO_CU,[_=5U4_U!&._];
-M44/_Z]3/_W]L8/^+@G'_9F!8_]3"QO]!0TK_.CY&_T5$2O]^?'[_(Q\A_Q\;
-M'?\B'B#_:6=J_Q@8(_\5%R;_3$Q/_[*ML?__[>#_+!\._Q\<(O\=&B#_(1X=
-M_QX9'?\9%!C_&108_Q84%_\@'B'_+RTP_S<U./\Y.T#_/T!'_U915__&N;3_
-M[MO3_XI\>?]%-CK_*1<9_Q8/#_\3#Q'_&!06_UQ86O]K96G_75=;_TA"1O];
-M55G_55!4_Q40%/\>&1W_$@T1_XV'A?^MI:/_O;BS_[BPK/^EI*O_PK&D_U)B
-M?/\C(!__$QDC_T9;B_\9&R/_7E-(_Q,8,?\:'"O_$A(5_Q8=*_\J,SK_%1<L
-M_PX5*?\0&SW_(T%Y_Z.IO_^*@H;_*2$K_Q43%O]F963_(B(?_S,T+O^.A7__
-MHIR:_Q<5%_\J)R+_B(!\_XR%A?\?&AS_&1<:_Q84%O\4%!?_&!44_S$F'_]E
-M75G_6%-7_S0R-?^(@'[_55%/_X""?_^&B(7_-SPX_Q@;(/]C8V;_;FEI_["L
-MKO^]NKG_=W=N_SL^0_\X0T3_?(B%_]S8VO\Y/5+_,3M*_[ZVLO\S.#[_/D-!
-M_\_+R?\R-#O_0D-*_S<W0/\M,#O_)2@S_R,M,?^\L[/_MJNP_^#3QO^(;F#_
-M4DD[_V)83?_QW-?_CWIN_YR/?O]I8UO_U,3(_S@Z0?\X/$3_/CU#_Y".D/\@
-M'![_7EI<_S0P,O]M:V[_)B8Q_R$C,O\S,S;_KZJP___NUO_'FW/_/AX$_QP5
-M%?\9%!C_%1 4_Q<2%O\6$17_$Q$4_Q84%_\5$Q;_%1,6_Q02%/\4$QG_&108
-M_[ZRKO_HU<W_:EU8_R4<'/]*0#S_2D5%_QD5%_\6$A3_&A88_U%+3_\U+S/_
-M)B D_SDS-_\6$17_%Q(6_QD4&/\:%1G_&QD<_Q49&_\Z1$'_4590_S(W0__L
-MV\[_-4-8_R<C(?\0%B;_-%J-_QL;*O]30#C_'2E&_QD<+O\:&AW_%1TQ_QLE
-M,/\=(#G_$!PY_R,W9/\@/7?_K;'&_Y*-C_\M+S3_%AD:_W!R;_\T-2__2$8_
-M_\N[N/^OI:C_*2LI_T [-?^[LZ__B82$_WU^?_\I+2__&Q\A_QX;(?\G(B3_
-M2$,]_QD:%/\1$13_*2<J_X9^?/\O+3#_$Q8;_Q 3%/\J+BS_9V9E_S Q,O\=
-M("7_.3Y$_S4S-O\M+"O_0$-5_S%!2O^"D(__W=G;_S T2?\V0$__O[>S_S4Z
-M0/\\03__S<G'_R\Q./\V-S[_/CY'_R<J-?\E)3+_&2(H_X>"A/^UKK7_WM/(
-M_X9Q9?]34D?_+2PE_]_0R_^.>6W_J9B(_VAD7/_2PL;_/T%(_S8Z0O]#0DC_
-MF):8_R(>(/^5D9/_EY.5_VIH:_\E)3#_(2,R_S0T-_^MJ*[___+I_]FC:O_ 
-MEVW_?5PX_QT;%O\1#AO_%!$>_QD1)?\T+D+_$ T9_Q84%_\8$QG_% T5_Q(/
-M%?\K*"?_Q;NW__#6S?^KHIO_:V5C_R,9%?\E("3_&10:_Q,.$/\<%Q?_$@T-
-M_R(='_\?&!__(QPD_RH?'O\T)"'_.",A_RX<&?\G&1K_(AT?_QTB(/]U>7?_
-M0T5#_];1T_]::WO_&B8J_Q89)/\F3H;_&A\K_W)B4O\=-%[_<W-\_U953O\B
-M,$?_7&)L_RDP1O\+'TS_(CQ[_R@Z=/^XM<?_76-?_S<X.?\4$A7_='9M_U)0
-M3?]G7UO_T<*\_[JOKO]*2$K_B(6$_XB#A_]*3%'_+#$V_RTP-?\E*2O_*2LN
-M_R$C)O\3%A?_&QT;_Q\='_\?&QW_BX2$_S,S-O\Q-#G_*R\Q_Q@3%_\4$@__
-M(!L?_QPF,/\@+#/_O;>[_^C;VO]\?8[_/$Q6_W%X?O_?VM[_-SU-_S8]2__'
-MN[?_049,_SD_.__8TM#_,C,Z_S(U.O\K+S'_*RTT_RHJ,_\;'2+_O+2X_X1X
-M>__CSLG_D7UU_SXU+_]&1#__\N'4_Y^'>/^LFHS_@W=N_]_0U/]!0$?_769M
-M_T!#2/^;F9O_&147_YJ6F/^GHZ7_<&MO_R(B,?\E*#K_+R\X_ZZFJO_\\.O_
-MW:=M_\J@<O_&EUW_KI!Z_SDB,_\>%S7_*R1"_R@A,_\<%QW_'QH:_R 9&?\:
-M$QK_'1@<_RDE(__.PKW_\]S7_S\].O\Y-SG_85I:_S8X-?\<'!G_)R4B_R\J
-M*O^8C(7_II:-_].]M/_OT\O_Y<_&__#8S__MT<G_[-;-__+6T__BR<C_LJ"=
-M_[BFH_]&.C;_UL[8_S1'6?\T3ES_.SY)_SA6@O\?'R+_L9I]_R4[8O]#14S_
-M.C\__QPQ5/\6(#3_(#)._Q<X;?\G3(W_+$!Z_[NYR?^"BH;_)" B_Q@3%_]W
-M>F[_=G1Q_[6KI__7Q[[_OK&P_V!;7_]234__L*JN_XB*C_\A)BO_'!\D_QD=
-M'_\M,3/_,C8X_R<K+?\E)B?_'AP>_Q\;'?^9E);_.#<]_T9+4?\O-#K_%Q,;
-M_R D(O\A'B3_(2X[_S! 4/\Y.T/_J:*B_Z"BL?]-5V;_>WM^_^;@WO^2F:?_
-M-C]-_\.XM_\X/4/_.3X\_\S(QO\W.4'_.C]$_QHA(?\P-3O_$QH@_QXC*/\L
-M*BW_*2$D_^?3S__MV-/_Z]G5__+DX?_ZY-S_]MW6__'<U__>S,C_Z=?9_TE#
-M2_]\A8S_F)N@_Z6CI?]*1DC_I*"B_Z*>H/]Y<W?_)R<T_R,H.O\L+#?_K:6H
-M__WPZ__AJW'_SJ-S_]VC7O_:IVO_K85K_R@;%O\8$Q?_$ D5_Q@3&?\V,R[_
-M.30O_S$I)_\;%Q7_,"LF_\N]NO_MV]C_.3X^_QPA)_\@'R7_,3<O_T=+0O\S
-M-"[_'!D8_RDE)_\G("#_C7]\_]C#OO_NV,__]]W4__O?U__SW=3_^-[5__3>
-MU?_RXMC_]>+8_^'/R__8Q<O_/$14_RU!5?\[15K_)T%L_Q<@+O^?DX3_(#%5
-M_UM=9/\7'B3_&S-:_R,P2?\2+$W_)U:-_RQ9F?\Q38;_OK[-_ZZPK?] .#O_
-M&108_X&$>/^ ?GO_QKRX_]7&P?^ZKK'_@7E]_\:]O?_)O;[_1$!"_P\5%_\8
-M&B'_(R<I_Q,7&?\4&!K_&!P>_Q$4%?\>'R#_,2\Q_SDU-_\V,3?_.#E _S<Y
-M0/\<&R+_)B\O_R(A)_\=*C?_+3Y6_S$^4?\E*B__'B@W_T5/9/^6E9O_KJFD
-M_W=^BO\P.DC_LJVM_SD_2?]!0D/_T<W/_S T//\U/4'_&R0D_RPS.?\@+3+_
-M,3U!_Q@>(/\5%A?_W]#+__+=V/_UV]C_^=S;__?;W?_VW=[_\-G:_^_:V/_O
-MV=?_FHZ1_X2&C?^HJ[#_H)N?_V9A9?^LIZO_IJ&E_W-N</\1$AW_("8V_RXN
-M-_^AG9____7K_]FE;/_-IGS_VJ1A_\JA8/_%E5[_O91C_Q\- /\@&#K_,"I&
-M_RHI,/\\/#G_3TI%_SDT+O\]-3'_U,3!_^W9U?\V.SG_(R@M_R0D)_\M,C+_
-M%AH8_S$S,?\_/CW_+3(R_R(F*/\G*2S_'1@>_VQF9/_$M[+_[M;3__'7U/_V
-MW=C_\][9__'>V/_XW]K_[MO3__G<V/_BT]/_4DI._QT;)/\L-TC_'"(L_VMB
-M6_\@+$G_*20D_R<I)O\S/5+_)R<T_Q@M1O\]:)S_,UB9_RU+@__$QM7_GIZ;
-M_QT5&/\9%QK_@H5Y_X>%@O_)O[O_ULC%_[ROM/]J8&/_T<7!_\R]N/]M9V7_
-M)B@K_R(G+?\V.3[_)BHL_TI.4/\[/T'_1TQ,_SL^/_\@(2+_'QT?_];*S?_&
-MO+__&A88_QX:'/\Q-CO_*B0H_Q8>(O\N/TW_,3]8_SE#3?\]4&+_,$1@_R8S
-M1O\1%Q__.D=8_RXY1/\=&AG_*S \_RPL+_]A863_+#0^_S=!1?\@+"O_+#4[
-M_R0Q-O\K-SO_)BPN_RTK+?_GV-/_[]K5__+=V?_UW]W_^.'B__;@WO_VX=W_
-M^.'<___GX/_FU=7_<G%X_ZVOM/^9E)K_<6QR_["KL?^HHZG_@GU__UI<9/\?
-M)C3_,#$X_XN,C?__\NG_WZAN_\29;?_=IF;_QYMI_\Z::/_#D%O_OY)I_T ?
-M-_\Q(D'_#104_QT;'?^9B8#_C8%\_TY+0/_6R<3_\=O<_S0W./\@'R7_&A<=
-M_RPP,O\3%1K_(24G_QPC(_\P-3'_1$E#_S(R+_\:&!7_*"<N_QL7'_]N96S_
-MW<[2__3>W/_YW]S_^-S8___@W/_XW-C_^-[5__??UO_QV-G_\=?4_VY:5O\Q
-M*"+_+2<?_RPH*O\M)![_*B$:_S4P*_\H(AK_'!TH_QU,@O\H1I#_)DV(_[W"
-MR/^6E(W_)!D@_Q@:'_^/B7__AX1__\O"PO_=Q,7_O+6U_\C"P/_1Q+__V<2_
-M_UE,2_\H+"[_(B<G_Q\B(_\7&AO_'R0D_R\V-O\3&!W_$QD;_Q49%_\W,BS_
-MSL&\_\&YM?\Y.S+_>X1W_X^-B/\N(!W_'!02_PT<'/\O0$[_-455_S=+8?\R
-M1V/_+D-?_S%&7O\Q0EG_-#Q&_Q88&_\4%AW_.C<]_QD6'/\7&1[_+S<[_QTI
-M+?\A*C'_(S$T_R,P,?\P,C7_*R4I_^?3S__RV];_[]K5__?BW?_WXM[_^N7A
-M__7@V__WXMW__>+;_\^YNO]H8FK_J:NP_Y&-E?]^>X'_N+6[_Z>EJ/]M9VO_
-M>G>#_R,D-?\H*3#_*2<I___T[O_7GF3_SJ!S_]:=6__-G6K_RIED_\R;9O_-
-MG&?_MH]>_V _/_\=$"/_'R$?_U902/]J9&C_/T Y_]/'P/_GT]7_.#H]_QT<
-M(_\9%AS_+3$S_S8X._\G+2__*3$S_RTR,O\4&!;_-3<U_T5$0_\N+S#_%!07
-M_QL=(/\J+"__4TY4_\_$R?_KV-C_]-W8__?<U?_WW=+_]MS3__G=VO_PU]+_
-M[]C3_^K5T?^FE)'_>7%T_S,N-/\M+S?_;G1^_VUO<O\>("__&$R%_R$\B?\D
-M3(K_OK_*_WQW=_\C$R'_$!,8_YJ2B/^'@GW_T,;)_]_)R_^;G9O_R<7#_]3$
-MP?_9RL7_.S,V_Q47'O\8&!O_)2,F_QX>(?\A(R;_*2TO_R@J,?].45;_%187
-M_Y&)A__3P,#_T+V]_Z28E/],0SW_0T0]_U-73O^*A'S_G(N%_VEC8?]:6EW_
-M/$1._S=$5?\W1UO_,4)9_SI)7/\S/$/_*C R_R$G*?\V.CS_%A@;_R<G*O\R
-M.#K_,S]#_RLR./\N.C[_+#<X_QDA(_\H+"[_VM+5_]O2TO_AV-C_WM75_^C9
-MVO_GU=?_Z-;8_^?5U__TX^/_U,G._WAS?_^PK;G_>G9^_X!]@_^SL;3_K:NM
-M_X)\@/^$?XO_)R8W_R4E+O]L:FS___'K_\6,4O_ DF7_SY94_\*37?_)F6+_
-MR)AA_\657O_*EU;_R)EI_V!%(/\F&A7_(AP@_R$?*/]/3TS_S\.\_^?6UO\O
-M,S7_%QD@_QT<(O\C)RG_&QT@_R,I*_\P.#K_*"\O_Q@='?\K+B__&!D:_SL\
-M-O]&24/_*3 P_QDC)_\<(R__(R8Q_S8S.?_1R,C_Z-;2_^W:U/_VW]K_^-_:
-M__+<U/_SW-?_]]O8__;7U__LU-'_QK&O_R49'/\O*3'_9FAO_Q 4*?\A5Y'_
-M)#N(_R-,B/^]O<S_7UA?_VA79_\?(B?_HIJ0_Y"+AO_=T];_V<G-_SI!0?_%
-MPL'_WLO+_\F]OO\Z-S;_'!T>_QX;(?\G(B;_)" B_QP:'/\9&AO_(!TC_Q@8
-M&_\7%1C_<6=J_XN#AO^>F9G_='!N_ZNHH__.O+C_+B@@_R\R)?_'O:[_GX]\
-M_YN.??^1B('_75Q;_TY15O\Y04O_-3]*_SD^1/\I,2[_+S<S_SY#/_\\/CO_
-M(R(A_RXS,_\G+S'_*2XS_QTA(_\A)RG_'R<I_RLX.?]B9&?_<G!S_VUK;O]H
-M9FG_8&1F_UA>8/]46ES_4%98_U%24_]/3E7_9F9U_Z^IM_]X='W_B(6+_X:$
-MA_^IIZG_BH2(_W]ZAO\E)#7_.#A!_VQN<?__].[_U)MA_\R><?^^A4/_PI-=
-M_[^05O_$E5O_P)%7_[^15_^_C%?_P9%2_Y)L1?\M&PW_7%-3_V!@5__2Q\#_
-MW<[/_RLQ,_\M,CC_/D!%_R4I*_\F*"O_+3,U_R(J+/\D+"[_%AP>_RPP,O\4
-M%AG_*2LP_Q03&?\T,SG_(1\B_Q@>(/\C*RW_)BXR_RLP-O\X-#;_U,G._^#/
-MU__IU]3_[=G1__':U?_QV=;_\]K9__C<V?_SU]/_X<G&__CCW_^CF97_-C- 
-M_R54CO\>,X'_*U.*_\'"S?]74%?_)Q@C_W1X>O^?EXW_AX)]_]W3UO_>R<[_
-M&1T?_YF7F?_.P,'_V,?'_V995/_/R<'_*"<F_T5"/?^">W7_/CPU_UM:4_]!
-M/#?_$Q$,_PP*!_^JHJ#_SL/"_\2\N/]03D?_0$0[_UI43/^VJJ7_2D,]_RPM
-M)O^WL*3_@GAJ_Y6+@/^4B7[_85E/_R\M*O\X.T#_86-F_V)E7_]35$W_,C$J
-M_TQ*0_\N+"G_,C0R_R,J*O\9'1__&QT@_Q<9'/\?(23_+2\R_Y>-B?^AE(__
-MHY:1_YN.B?^5C(;_D8B"_XR#??^,@WW_A'UW_RHF*/]A86K_MK*[_S(N-O^.
-MBY'_%A07_Q .$/^%?X/_>G6!_RHI.O\I*3+_3%%6___PX__,G6W_RIIG_\N<
-M9?_#E%K_QI1;_\*05__!CUC_P)-7_\"/7/_!C%;_OI!3_ZE]2_]&+QC_86-A
-M_\S%Q?_=T<W_'B<G_Q 5&O\='R3_'" B_Q@:'?\G*2S_%!@:_R<K+?\9'1__
-M*2LN_Q47&O\H*B__$A09_QT@)?\>(B3_(R@H_RPQ,?\R.#K_*S U_SU#2_^A
-MHJW_*#U:_UUFC__9S-__\-G:__75R__PV=K_\-K8__'9UO_NW-C_[^#;_^WA
-MV/_CV-?_766%_SY1E_\M3'S_O</3_U!$1_].3%7_'2@O_Y^9C_]^=6__Y=G<
-M_^S3TO]23T[_0CT__]C)R?_FT<S_FH^$_\O!M_\J*"'_O[FO_XZ%?O]W<FS_
-MQKZT_UY>4?^ >G+_(B ;_[&JI/_@SLO_A'EX_ZBCG?^UL:G_,C H_S8U+O^]
-MO+7_I)^:_R,D'?^9E8W_<65<_W5N8O]K9EK_>71H_R =&/\='R+_&1<4_SX]
-M-O\P,RW_35-/_V=E9_]B8E__1DM%_RDN+O\B*2G_*BTR_Q@7'O\;&1O_FI*5
-M_Z"8F_^CFY[_KJ:I_[.JJO^[LK+_O+6U_\2_O__$SKW_6V!:_UA98/^KLZ__
-M*RTP_Y:2FO\Q+##_-C(T_W=U=_^)B93_)"(R_QT>)?\M,S7__^_B_[R2:O^Y
-MCV'_K8E<_ZZ#5?^WBU__M(E9_[2+5_^WBUG_O(Y;_[>*5/^WBU/_O8E7_ZF 
-M5O^1>5[_V,J[_^31R_\L+2[_$Q4:_Q(6&/\6&AS_$Q48_R@J+?\0$A7_)RDL
-M_QD;'O\F*"O_%!89_R4G*O\1$Q;_&R$C_QHB)/\?)2?_(2<I_R,I*_\I+S'_
-M+#LZ_R B*?\@+D?_.DEL_RDY9?]37X3_SLC6_]_-R?_IT,O_\-31__79UO_U
-MV=;_\M;9__36U/_KU,__X]O?_XV/GO_/Q\O_3CPX_S(Q-_\7(BG_GIB._W5K
-M9__EV=S_\-C5_WUX>/_*PL7_V<C(_][*QO^*A7__S\?#_W=U<O_*QK[_?G=Q
-M_XZ*B/_(O[C_;V]F_[^WL_\C(!__N[&M_][.R_]_=W7_3TY'_SHV+O_!NK3_
-M?7MT_S$P*?^SKJC_34Q%_WAV;O^!>6__=W)F_WYZ:_][=&;_;&9<_Q\='_]0
-M3$K_4TM'_R$;&?\@&QO_+BDM_SP\.?]04TW_-#<X_Q\C(?\;'2+_$@X6_QP8
-M&O\;&1S_&18<_QH7'?\6$QG_&!89_Q@6&?\6%AG_&!H=_U!$6?]%/DC_8%Y9
-M_[FGL?\N(RC_GIN:_Y^@H?\C)B?_*"PJ_XF)DO\G)37_)R@O_S0X-O_PYN__
-M0BXF_S<K)/\T*R7_/"TG_T4V,/\X*R#_1#@I_TX],/]50C;_64@X_VM;2/]V
-M7$[_@V=,_X-N4?^%?'7_X<_,_\K&R/\W.3[_(RDK_R,K+?\L,C3_)RTO_R4K
-M+?\B*"K_&B B_R,I*_\/%1?_(R4H_P\1%/\;(2/_&2$C_QLC)?\?)RG_(BHL
-M_R4M+_\I/2[_:&][_R<C,_\=)BW_("E!_R4S2O\6(3+_/3@^_T,_/?]P;&K_
-MIIZ<_\N^O?_5RLG_YM?1_^W7S__NT]+_[=C6_^G6S/_9R;__)R0C_R@K,/^@
-MEY#_6%-5_^3;V__LU-'_>G5U_]')S/_8Q\?_V<;&_R,@'_^_NKS_3DY1_X.!
-M?/^:EI3_FYF;_\O'Q?]V=W'_P;BX_RHF*/^ZL:O_X-#-_["HIO_!P+G_:&1<
-M_SPW,?^JJ*'_4TY(_S8T+?_ N[7_,BXF_\&^L_]Z=VO_>WEJ_W]Y:?]\=F;_
-M/#HS_S0Y-?\/%1'_("0B_QL<'?\B("+_*"8H_R<F)?\H)B'_-S4P_QT:%?\D
-M(![_2D=&_Q(0$_\2$!/_%Q48_Q(0$_\6%!?_%1,6_Q$1%/\8&AW_/4(^_R,G
-M-O]<7G/_G9&,_VQC7?]*147_D925_S,\//]&2TG_D9&:_QX<+/\H*3#_D(^(
-M__3J]/]71D;_)2$I_QL=)?\='!O_&1<:_QL8'O\;%R#_'!@A_QL7'_\9%AS_
-M&1<:_R >(?\;&AG_&A@5_S(H*__:SLK_25)2_S4]0?\U/3__,3P]_R\W.?\J
-M,C3_)R\Q_Q\G*?\;(R7_&2$C_QDA(_\@)";_'!XA_Q<='_\9(2/_&B4F_QXI
-M*O\A+"W_(2PM_RXU*?\W267_$1DI_QH9&/\B+$[_*S1%_R B(/\>&B/_'R$F
-M_R(E)O\C)B?_*"TM_S U,_\R-3;_-#,Y_SPX0?\^-CG_6%-._X9^>O^TJ*O_
-MP;R^_Z:;E/]'1$K_Y-W=__+;UO]Y='3_VM+5_]G(R/_0N[G_@GIV_\2XN?\F
-M(2/_PL' _U!.4?\T-CO_O[V__U]=7_^\L;C_*R<I_[NRK/_>SLO_85E7_S8U
-M+O_)Q;W_9V9?_S\Z-/_#NK3_.3<P_ZZBG?]L9E[_.CHO_W1T9_]I9UC_@'MI
-M_W=O6_]T<&'_+BDD_R ;&_\3#A+_$1 6_Q,4%?\8%1O_&!(6_Q<2#/\W,2'_
-M.S<A_S0T(?\V-"S_%Q85_R0B)/\D(B3_(1\A_Q<5&/\2$!/_$Q,6_Q\A)/\&
-M"C#_-RYC_[2CV?]%.&O_44QD_QP9)?\^04;_&R >_RTQ+_^=G:;_>WF)_RHK
-M,O_$O[K___+M_X1R:/\6%!?_%!8;_UY=5O])1T3_'!@:_QP7&_\B%13_'1$,
-M_QL6%O\4%!?_$Q@8_RDM*_^KIJ;_W]#+_[*KJ_\P-#;_*C(T_RLX.?\J-C/_
-M+SP]_RHV._\K,S?_*3(R_RDU-/\D,"__)# O_RHR-/\J,C3_("@J_Q@C)/\:
-M(B3_("8H_R@N,/\F+"[_+"PC_QP[7?\'$R[_'148_QTW</\G,U+_)R4H_QX9
-M'_\D'R/_'QP;_R0C(O\H)BG_(QPC_QT;)/\C(RS_(R ?_QP=*/\H(R?_)B4K
-M_RPH,/\S+#/_+BDM_S<U./_5S,S_Z-;3_XZ/D/^9E)C_U,7%_\>XL_^NI*#_
-MQKZ\_UY96?_,PK[_D(J(_T=(2?_'Q<#_,BHH_\S$R/\D)"?_N+"L_]C*Q__.
-MP<#_A'UW_R(D&__*QK[_2#PU_ZRLH_^LK*/_,"\H_ZNLI?\W.S/_D)*)_S\_
-M-/]$13C_<7%D_V9G6O^1BX/_V,6__]["O_^ID8[_)Q@8_RD=(/\2#0__$0\,
-M_RLK'/\R-1__,30=_R\S'?\N,"W_,C,T_S$R,_\Q,C/_*BDH_Q43%?\8%AC_
-M3DQ/_Q48._^AG+;_9F%<_Z>BNO\<&S__(R(__UM;;O\S.#+_.3TU_R ?)?\K
-M*#3_961J_\C"P/_^[_#_QK2P_SX\1?\D*##_&!83_Q@7%O\5$Q7_%1,6_Z*=
-MG_^OIZK_&108_Q86&?\E*BK_-3<U_[6PJ__<S<C_X-'1_X^&AO]J967_75Q;
-M_TE/2_\K-C?_+CH__RXV.O\J,S/_*C8U_R8R,?\B+BW_)C$R_R(M+O\B+2[_
-M(RXO_Q8>(/\;(R7_'24G_R H*O\O,2C_)$!;_PP7+_\A'1__(#MQ_R0M2_\:
-M&1__(QXB_Q\;&?\Y-S#_2DA _TQ'1_\5&2[_'"U1_QTW8_\I0&K_'RE$_UI4
-M6/\H)2O_'R G_QX:'/\D(B3_*"8C_^;<V/_OW-S_0T-&_VMF:O_8R<G_O[*M
-M_[>MJ?_$OKS_44Y-_]/*Q/^]LZ__J*6D_\K%O_^QI:'_Q+S _RTM,/^WKZW_
-MWM#-_S,H)_^AG);_5%1+_VIJ7__ MJS_-CLO_YVBEO]!/SC_N[JS_T$_./^N
-MJ:/_5%1+_SL^,O]664W_4E5)_TY-0O_7Q[[_]-7/_^K/R/_6O[K_J9>3_T@_
-M/_\3$!;_%1(8_QD4&/\7$Q7_,"TL_Q83$O\=&1O_)R,E_Q@4%O\<&1C_+2@H
-M_TY)2_^;E9G_#PL__Z>BS/^VL[__KJ/8_Q01//\@'C__*29#_V)C;O\Z.SS_
-M)B8I_R0C*O\L+"__TLK(___S]__.O+G_'QPI_QP?*_],24C_'!L:_QD7&?\9
-M%QK_'!8>_R :(O\<%QW_&!89_T=,3/\]/SW_O[JU_^S=V/_PW=?_T+VW_^C7
-MT?_@T<O_JZJC_SE 0/\O.S__*# R_RPU-?\I-33_*#0S_R<S,O\D+S#_(RXO
-M_R,N+_\B+2[_)C$R_RLV-_\J-3;_)S(S_RPV+?\U15G_$!XG_Q\A)/\M2'[_
-M*C1/_R,C)O\L*"K_+RTF_UA73/]C8E?_7%A6_PT6)_\,)E'_$3I\_QY$@O\G
-M.5__LJVS_RLF*/\>'2/_)!\9_YR<D_\Q+RC_[N+=__';W/\Y-SK_RL3(_]_,
-MS/^YK*?_P;>S_\"ZN/]23T[_VM'+_[RTL/^ZL[/_S,.]_];(Q?_.QLK_)24H
-M_\S$PO_:S,G_6U-1_SDX,?_!O;7_(B<;_X!]<O\Y/##_M[RP_UU84O^EGIC_
-MF(^)_WEM:/]$1#O_4E5)_TI-0?]%2#S_86%6_\:XK__OT\S_X,? _^7*O__P
-MU]#_TL/#_R 6'_\5$!;_&!06_R4B(?\O+2K_%A,2_S4Q,_]#/T'_&A88_R8A
-M(?]84U/_=7!R_XN%B?\2'1C_&!0[_RP?6O\<&D'_&!DR_Q,0+?\9%CK_)R5&
-M_S(P0/\F)2O_)R<J_R@I*O_8RLO___+R_\V\MO\@'R;_%ALA_T-!/O\E)"/_
-M%A06_QH8&_^,?W[_FHR-_R$7&O\@&R'_.C\__S4W-?^_NK7_\.'<_^W?W/_C
-MU=+_VLK'_^'1SO^RJZ7_/T$__R\Z._\N.CG_+3DX_RTY./\N.CG_+SLZ_RTX
-M.?\N.3K_-#] _S(]/O\N.SS_+SP]_R8S-/\@+2[_'2XD_R$E-/\;*BG_,#@Z
-M_R4]=/\H,TS_'R A_RDF)?\I*2;_2DU'_SH^-O\V-SC_%R$P_Q\[9_\0/(#_
-M'D!__RH]9_^?FZ/_0S@W_R<E*/\K)B#_GYV6_S,N*?_KW-W_[]C9_RLF*O_/
-MQ\O_Y,[/_[ROJO_)O[O_M[&O_TY+2O_;TLS_M*RH_\G P/_6Q\+_T,"]_\W%
-MR?\H*"O_R<&__]/%PO_!O;O_.3TU_Z&8D?\K,B;_M*RB_T,],_^.C8+_H)Z7
-M_UU;5/^LIZ'_0CLU_U]?5O])3$#_8&-7_U583/])3$#_P[>N_]2YLO^LEH[_
-MOZ:?_^'(P__:P<#_T[V__QL4%/\?'!O_7UU:_R8D'_\[/SW_+"\P_SL^/_\W
-M.CO_.3T[_UY@7O]?8&'_2TM._Q00&/\4#QO_#Q00_QD7*O\6$2W_%Q,M_Q44
-M,?\3$C?_.35+_S,R.?]$1D3_0T5#_]'(R/__]O+_P;2S_Q\>)/\2%!?_'1D7
-M_R0?'_\A'1__%1,6_S0I*/]#.#?_'QH<_QH:'?]$1D3_,#@T_\.YM?_QW-K_
-MY]O7_^'5T?_=T,O_V<W&_YZ7D?\C(!__%A@=_Q<;'?\?(B/_'1T@_R @(_\B
-M(B7_)2DK_R4K+?\F+"[_*C R_RPP,O\R.#K_)3(S_R8Q,O\J+RW_'RHQ_R4P
-M*?\E)R[_)#]U_RDQ2_\D(B3_)R@I_T='1/]454__4E5/_R8H*_\/)$#_&$-O
-M_P8R?/\F1X__(SYM_[BGI_\P+S7_*R8A_S,Q+O^@FY7_-"PH_^O<W?_OV=K_
-M+"DH_];-S?_;S,S_>W-O_]?&QO^PJZO_2DI-_]O3T?^ZKZ[_RK^^_\6XM__&
-MO+C_R;_(_RPH*O_ O+K_>G1R_[&LI_\].#+_BH%Z_TY,1?]E7EC_C(9^_T1!
-M-O^AH)G_+B\H_ZJIHO\L*R3_7F!7_T!$._]#1S[_044\_UA?4_^EGI+_R:^F
-M_\6JG__*LJG_RK*I_\>PI/_*LZ?_.R\K_SXZ//\?'2#_+2HI_TA)0_]*2T7_
-M4E--_U)33?],2$;_2T9&_QD5%_\5%1C_%Q(4_Q8.&/\6$![_%Q4>_Q83*O\5
-M$2O_%Q4O_QH;-/\A&CS_'A@L_QT<&_\E)"/_B(.'___S[_^WJZ[_%1(8_Q<7
-M&O]U<'#_/3@X_Q82%/\8%AG_)A\?_QL4%/\;%QG_%1<:_TI)2/\T/#C_P[NY
-M_^K;V__@T=+_XM#4_]G(R/_3P\#_GYJ4_Q\;'?\5$AC_$Q,6_Q@6&?\3$13_
-M&1<:_Q43%O\0$!/_$!(5_QD;'O\7&1S_%148_QD='_\@+2[_(RLM_R@K+/\=
-M*B__)2LG_RPN-O\D07?_)2M%_R,?(?\D)B3_/STV_U%12/]=7E?_&!D:_PXD
-M1/\91&[_!C-Z_RA)DO\>.VO_NZ:B_R D+/\E(!K_2TM(_Z&<EO\Z,"S_Y=;6
-M__#:V_\V-#'_V-#._][/S_^:EI3_WL_0_Z6AH_]*3$__T,G)_ZRFI/_4SLS_
-MP+JX_\2\N/^]L[S_,BTM_S(P+?](1DC_FYN8_YB6D?\].S3_J:6C_S,O+?^O
-MK*?_0#XW_YR:E?\Y.C3_=79P_R<H(O]%24'_-CHR_T1(0/]"1C[_1DQ$_U10
-M2/_*MZ__RK*I_\FQJ/_#J:#_O*&6_]6XK/^_K*+_0S<S_QX9'?]'0DC_%Q,5
-M_Q\;'?\E(2/_0CY _S\W-?^CFIK_&Q88_Q<5&/\4$1?_%Q,<_PT,&?\4$B7_
-M'1DS_QP8,O\;&"__%1(H_Q\:-/\F(S#_-#(M_S0R*_]055/___#L_[&EJ/\>
-M&R'_&QL>_R4@(/]U<'#_&147_Q$/$O^JHZ/_LJNK_Q<3%?\3%1C_'AH<_R$I
-M)O^QKJW_P;R\_W=\@?])457_0TM-_T)+2_]*3TG_%Q47_Q,0%O\2$!/_&A@;
-M_Q02%?\5$Q;_$Q$4_Q04%_\2$A7_&1D<_QH:'?\8&!O_&Q\A_R M+O\B*BS_
-M(RDK_QHE+/\C)2/_)28Q_R9">_\?)#[_)R,A_S4V,/]'13W_5E9+_TU/1O\A
-M(R'_%2Q)_R!+=?\)-GW_)D>0_QPY:?^QG)C_%1DA_R8A&_]34U#_G)>1_T V
-M,O_NW]__[]G:_S N*__9T<__W]#0_WMY=O_;S<[_GYV?_T5)2__3T,__K:NH
-M_]73T/^\NK?_HYZ9_ZF?J/\T+R__'!H7_S4X/?\>(R/_%AH8_S@Z-_\S+S'_
-M&A88_W!M;/]&1$'_*"<F_S0V-/^BI*+_(R4C_U]A7O]*3$G_04- _S]!/O]9
-M6UC_3DY+_V%<5_^9C8C_MZ6A_\BTL/_1N+/_T;6N_\VTI_]40SW_(QHA_U5/
-M5_]X<GK_>'%[_WYW@?^NI['_J)^?_Z^FIO\:%1?_%Q48_Q<9(/\4%2#_(R(S
-M_QH7+O\:%RW_$Q B_QD5)?\4#!K_$ P4_S0Q,/\_/C/_2T@\_S@V+___\>W_
-MJIZA_R$>)/\:&AW_A8" _[:QL?\2#A#_&!89_QT6%O\K)"3_&147_Q47&O]H
-M8F;_%1P<_YJ=GO\Z/3[_+C\__S%"0O\T1D3_.DQ(_TI33/\4%1;_%A,9_QP6
-M&O\9%QK_'AP?_Q43%O\3$13_%A07_Q02%?\<&AW_&A@;_Q45&/\:'B#_(B\P
-M_QHB)/\B*B[_$QTG_R(>(/\:'2G_(3IU_R0F0?\J)2#_45%&_SL[+O]864S_
-M,30H_QX@'?\8+TS_'TIT_PDV??\J2Y3_(C]O_\2OJ_\4&"#_)B$;_W1T<?^H
-MHYW_23\[_^K;V__RW-W_(B =_Y^7E?_6Q\?_N;FV_]O/T/^8F9K_5EQ>_\_(
-MR/^ZLK#_VM+0_\*ZN/^[LZ__I9ND_U)-3?\B(!W_'ATD_Q06&_\7%1C_'!@:
-M_Q -$_\3$!;_$Q$4_RLI*_\K*R[_&1L@_Q06&_\1$QC_)"4F_S4V-_\^/T#_
-M2TQ-_R@F*?\6&!O_+#$Q_V9H9O]05%+_/#X[_U=23?]L8%O_?W-L_W)J:/\>
-M&1W_4$I._R$<(O\0"A+_+"8N_VQF;O]<4U/_K:2D_QH5%_\7%1C_#P\:_Q(1
-M'O\B'RO_%@\9_Q44&O\7&!G_HIV=_Z:>G/]*2$'_1D0]_TY)0_]23$3_?W=S
-M___Z^O^\L;#_)R(B_R0@(O\D'Q__C8J)_P\+#?\5$!3_LJBD_[>KI_\?%Q7_
-M'!D8_Q\5&/\@)"+_EI:3_U]B8_\T0D'_.$9%_SI)1?\^34C_0T]&_Q$4%?\;
-M%AS_$Q$4_Q@6&?\9%QK_%Q48_Q02%?\9%QG_%A06_QP:'/\5$Q7_&!88_QPA
-M(?\F,C'_(BDI_R4L+/\9'2S_'QL9_PX5(?\A.W3_&A\X_R<F)?\K+2K_-#LT
-M_S4X.?\O,RO_,38P_QPQ4_\K5H3_%D2._RY-E?\X473_JYB8_QHB'_\>%!?_
-M?'MT_Z*:EO]@5%?_Y=?8_^O<W?\N*BC_P,&[_["IH_^HH:'_W,W1_X:+B_]A
-M:FK_U=3-_[VZM?_?V=?_R\2^_[RWLO^-B(K_8%U<_S,R,?\:'!__%A@=_Q04
-M%_\8%AG_$A 3_Q(0$_\3$13_)B0F_QX>(?\:&AW_%!07_Q$1%/\4#Q/_% \3
-M_Q,1%/\2$A7_%QH;_QH=+O\-$2#_&!$B_R4:+?\G+37_-CLY_U164_]54DW_
-M5%!._QD4&/]13E3_+BLQ_R(=(_\N)2S_;FEO_TU$1/^NI:7_&!,5_Q43%O\.
-M#13_% \3_ZRGI_]\>'K_.#8X_S P+?^6EHW_H9R6_TQ*0_\>'AO_(R$C_R@C
-M(_^WM;C___3Q_Z&6E?\:%Q;_'AH<_S<T,_^VL[+_%A(4_Q\:'O\>&1__%1(8
-M_Q<9(/\4&B+_=W!W_QPD(/^*CXG_>7Y\_S5!0/\Y0D+_.4- _SM&0?]"3D7_
-M$A,4_QD4&O\5$Q;_%1,6_Q84%_\7%1C_%!(5_Q84%O\7%1?_%A06_QD7&?\8
-M%AC_'2 A_R(N+?\@)R?_+#0Q_Q,5)/\<&13_"Q4@_QHR:_\9'S7_0#\^_T!"
-M0/\K,"K_'QPB_S8T+?\W.3;_'S99_RE7A/\:1I#_*TJ2_SE2;_^QGZ'_%AX:
-M_R8;(/^*BW[_I9^7_VA:6__JV=G_Z-C<_SDT-O]Y>7;_U<G$_Z6>GO_8S,__
-MC9*2_WR#@__(QK__O;BS_^#7U__*P;O_O[>U_XJ%A?]Q;FW_+BTL_QH<'_\6
-M&!O_%!07_Q@6&?\/#0__$Q$3_Q,1$_\D(B3_'AP?_QP:'?\9%QK_%!(5_Q4/
-M$_\4#Q/_$ X1_Q,3%O\8'RO_'R5%_Q$7,?\:%RW_6$EB_V1I=?]D:6G_5EA5
-M_X6#?O]134O_&A49_U).5O]_?H3_?WA__X!W?O^VL;?_A7Q\_Z:=G?\<%QG_
-M'!H=_QP;(?\<%QG_K:>E_X:!A?\[.3S_+RXM_X:&??^=FI7_244]_QH8$_\:
-M&!7_-"TG_[ZXO/__]/#_?79V_QD:(?\0#A'_B(2"_ZJGIO\>&AS_'1@<_W1I
-M:/]N9F3_&A45_QT;'?\O)RK_%R 9_S8],_\Z0C[_)BTM_R,F)_\9'1O_*2XJ
-M_T901_\;'!W_&10:_Q43%O\8%AG_&!89_Q@6&?\4$A7_%A06_Q43%?\6%!;_
-M&1<9_Q43%?\>(2+_(R\N_Q 7%_\K,S#_%!8E_QL8$_\4'BG_&3%H_R\S2/](
-M1D/_)"0A_RTK(_\Z,#/_.3,K_S\].O\D0&+_+%>%_QY&D?\J2Y/_1%]W_[>E
-MJ?\3&AK_(A<<_XV0?O^CH)3_>'!N_\&UN/_2R]7_'!XF_S@[//^UJ*/_J:2D
-M_]G/TO]]@H+_FYZ?_\K%P/^ZM++_W-+5_\B^NO_.QL3_?GEY_XF&A?\?'AW_
-M%QD<_Q47&O\1$13_%Q48_Q05%O\.#Q#_/T!!_QX?(/\G)2C_)2,F_R >(?\4
-M$A7_%A 4_Q0/$_\/#1#_#P\2_QPE/?\;(5'_$QY _Q8;-/\O(#G_:6YZ_V1I
-M:?]H:F?_B8>"_U).3/\D'R/_/#A _T9%2_\1"A'_.C$X_XR'C?]C6EK_HIF9
-M_Q\:'/\6%!?_$Q(8_QP7&?^JI*+_-"\S_QH8&_\G)B7_?W]V_WUZ=?\_-C#_
-M*R8A_Q\:%/]63$'_R\'$___V\/]53U/_-3I&_R@E*_\D(![_L:ZM_QD5%_\:
-M%1G_8595_V-95?\;%Q7_'1P;_RH<'?\H*2+_E92)_X>(@O\E+"S_'R8F_QXF
-M(_\J,B[_2E9-_Q@9&O\6$1?_$Q$4_Q84%_\6%!?_%A07_Q,1%/\4$A3_%!(4
-M_Q84%O\9%QG_%Q47_Q\B(_\G,S+_"Q(2_RTU,O\/$2#_&Q@3_Q<A+/\9,&7_
-M'B$S_R$?&/\L*B7_/#HK_R<B'?]*1SS_@HB$_R-"9/\L5X7_'$"+_RU.EO])
-M9WW_P*ZR_QH?)/\C&1S_D)"!_YZ<E?^,CI/_F:2K_Y>CLO]'6&7_.D9*_XZ&
-M@O^HI:3_W=78_Y.8F/^IJJO_P;^\_[JYN/_8T]?_NK:T_\G"PO]S;F[_A8*!
-M_R\N+?\8&AW_&AP?_Q(2%?\8%AG_#0X/_UA;7/]15%7_(B4F_R >(?\D(B7_
-M'1L>_Q,1%/\6$!3_% \3_Q$/$O\4%!?_'28^_QPC4?\4'4+_'" \_RX>.O]A
-M9G+_65Y>_VMM:O^5DX[_44U+_Q<2%O\L*##_'ATC_S(K,O\Z,3C_?GE__U1+
-M2_^IH*#_'!<9_Q@6&?\3$AC_&106_Z6?G?\8$Q?_%1,6_QH9&/^!@7C_F9:1
-M_SPX-O\F(B3_&1@7_U--0__ O;S___7R_T Z/O\;'"/_&!D:_WAZ=_^\M;7_
-M&A@:_Q43%O\F'Q__&A88_Q83&?\='"+_BX:&_RHK)/^=E(W_@X%\_R\W-/\H
-M+2O_&1\;_RTS+_]365'_&!88_Q01%_\4$A7_%1,5_Q02%/\3$1/_%!(4_Q43
-M%?\4$A3_&1<9_QD7&?\7&!G_(B<G_RPU-?\;("#_-3<__Q8>&O\=%1G_&1\G
-M_R0V;O\9'R__)BHB_RTP*O\V+2;_.S8V_VUP<?]&3T__,%%C_QM0AO\;.W/_
-M.$]Z_UQH=_^ZLK;_(ATC_R <'O^-CX;_HI^4_U-@:_]+;(/_1VN _R%"6/\A
-M-D+_*2LI_Y^AGO_#QL?_A(F._\/$Q?^_O+O_6EU>_[[#P_\^04+_S<G+_V%9
-M7/^7CY+_&1<9_R4E*/\9&1S_$Q,6_Q<7&O\0$!/_'AXA_R,C)O\H*"O_&1D<
-M_QL;'O\5%1C_$! 3_Q,.%/\3#A+_$A 3_QL:(?\5'##_&B%+_Q8=0?\;'#O_
-M9D]Y_W-P??\J-3;_'R K_WUZ>?]'1$/_&!06_RTH+/]'0DC_13M$_T,T/_^$
-M?(;_85-4_Z&9G?\4$AO_$Q48_Q,1$_\<%Q?_EY&/_PT+#O\5$AC_&!<6_V5F
-M8/]K:6;_-38W_QH<(?\4$A3_5%)*_[VZN?__^/?_3$1(_R4D*O\>'R#_+S0P
-M_[^VMO\9%QG_)"0G_[.KJ?^ZM;?_&Q8<_Q$/$O\>&1G_'R,;_Z&6C_^ ?GG_
-M-#PX_SD_._\M,R__-3LW_UU@6O\8%AC_%!$7_Q02%?\3$1/_%1,5_Q43%?\5
-M$Q7_$Q$3_Q02%/\9%QG_&1<9_Q87&/\A*"C_,3HZ_Q(7%_\M+3C_(RLA_R,9
-M(O\?)2W_'RUE_S8U1O\W.#+_/T$^_S,X,O^9I:3_F:6I_VYU=?]/96/_,UEY
-M_W1\D/^(@'[_AH&!_ZRFJO\;%AS_'AP>_XV.B/^=F(S_2%EF_T=MB/^OS^7_
-M=(ZC_T147O^$A('_F9J4_R<M+_\P-3K_L*ZP_\._P?]D:6G_7&AG_W1[>_^$
-MB8G_D8^1_ZB@H_\8$Q7_%1,6_QH:'?\0$!/_%Q<:_PX.$?\6%AG_'1T@_QX>
-M(?\?'R+_&1D<_QD9'/\/#Q+_$PT5_Q,.$O\0#A'_%!(;_Q4>-O\9(U#_&R5*
-M_Q09-_]E3WS_?GF%_Q 8&O\:&B?_'1D;_U524?\H)";_,"LO_R<C)?\B&!O_
-M,B4J_WEP=_]!-C7_8%99_Q$.%/\4$!+_%A(4_QD2$O^5CXW_%1(8_Q00&/\7
-M%1?_75Y8_YZ>F_\Q,C/_'!P?_QT;'?]+2D/_AX2#___X]_]#.S__'QXD_Q46
-M%_\E)2+_L:6F_QL9&_\9&Q[_&1,1_Q81$_\<%QW_&QD<_Y*-C?]%24'_HI>0
-M_W]]>/]<95[_9FUE_V!G7_]A:&#_9&A@_Q@6&/\9%AS_%A07_Q84%O\:&!K_
-M'1L=_Q84%O\5$Q7_$A 2_QD7&?\7%1?_%Q@9_R8M+?\T/3W_%!D9_S,P//\A
-M*![_&A 9_PD2&?\;*6'_&Q<G_R<A'_\8&AW_-$M*_X6AI/]D>'S_3596_U)I
-M:/\S6'?_<7)]_Y> ;?^%=V[_J*">_R$?(O\?'1__C8J%_ZBAE?^1HJ__)4]I
-M_[//Y/^URMS_$QTG_XJ%?_^#@'O_'B(D_UE;8/^_N[W_O;F[_RPQ,?\T0#__
-M-#T]_TQ85_\D)RC_E(R/_QD1%/\6%!?_&AH=_Q 0$_\8&!O_%148_QX>(?\>
-M'B'_0T-&_RHJ+?\@("/_*BHM_Q(2%?\4#A;_% \3_PX,#_\3$1K_%2$\_QHE
-M5/\<)TK_,C5._V)4>O^ ?H?_#1 5_Q42'O\0#0S_4$U,_QD5%_\@&Q__0T)(
-M_U945O]C7%S_IJ*J_VYO=O\6%!?_&1(2_S$E(?\?&AK_&Q04_ZFCH?\4$1?_
-M$P\7_P\-#_]B8UW_FYN8_ST].O\=&QW_&QD<_RTN*/\:%AC___KY_RLC)_\2
-M$1?_'!T>_WEW=/^FEYC_%1,5_RDM+_^[M;/_G)>9_Q@3&?\=&Q[_%Q(2_T5)
-M0?^HG9;_A8-^_V5O9O^%C8/_;'1J_V=O9?]I;67_%Q47_QH7'?\:&!O_&!88
-M_QL9&_\>'![_'!H<_Q@6&/\:&!K_&A@:_Q@6&/\7&!G_*"\O_S([._\4&1G_
-M-3 \_R(F'?\@%A__'2DP_R$V;/\6%"3_(A\>_R$M-/^*I*?_@IVD_UUT>?]&
-M4D__46IO_RU5?/]T>8O_D8!R_W-@5O^>DHW_(2(C_Q\;'?^2BH;_IYV2_YFJ
-MM_]VHKS_F,38_ZG-XO\J.TC_B(.#_YV8D_\>'B'_2TI0_\7 PO^NIJG_.C@Z
-M_S@[//]+3D__/D-#_QH='O^"?H#_&!D:_QD9'/\<'!__$Q,6_Q04%_\6%AG_
-M%A89_QH:'?\]/4#_'Q\B_QD9'/\?'R+_#@X1_Q0.%O\4#Q/_$0\2_Q(0&?\8
-M(CW_(BI6_Q8<-O\8&"'_5$QG_T ^1_\K)R__&QHA_X.!?O]23T[_&A88_R<B
-M)O\-$B3_'",Q_S(U0/]G;8/_=H&@_Q\D-O\=%A;_."TF_R,?'?\=%A;_K:>E
-M_RLH+O\?&R/_%!(4_V)C7?\;&QC_,S$L_QL8%_\5$Q;_*2TK_Q@6&/_Y[>[_
-M)Q\B_Q81%?\>&QK_'1T:_YJ.D?\H)2O_*"DJ_S$I)_\J)2?_%1(8_R(@(O]^
-M>7G_6U90_Z.:D_^4DHW_;G5N_Y&6D/]Z?7?_;G5N_W)S;?\4$1#_&108_QD4
-M&/\6%!?_&!89_Q@6&?\9%QK_&1<:_Q84%_\@'B#_%Q85_QL:&?\G,S#_-#DW
-M_Q8:&/\X/D#_(1\<_QX7$?]&3E[_)"U<_QH;)O\@'AO_)C0S_X:;G?]SB8O_
-M87=U_UMD7?]>=7#_+D]Z_WA\?O^<AX+_9UI-_XJ"?O\?("'_+S$O_X>.@O^I
-ME8W_4%AB_V24J?]YJ,#_F\WH_UM\D_^\M[W_@G9W_Q\@(?\[/C__S\G'_ZBA
-MH?\Q+S'_+R\R_RHI+_]<6%;_'1H9_T-"2/\)"!7_'18B_R :(O\9%AS_$!,4
-M_Q45&/\4$A7_$0\2_Q84%_\?'2#_%A07_Q$/$O\1#Q+_$A 3_Q(0$O\2$!/_
-M%1(8_QTC0_\1%C#_$0\2_Q<1%?\I)2[_)R0J_S M,_\N+"__,2\Q_R8D)O\>
-M&AS_0CT__R(E/O]*46?_%!XL_R,S3?]*5G7_"PP=_R$9%?]A7$K_0SXY_Q@3
-M%?^BG9__*B0L_QH5&_\5%Q7_24Q&_U!/2/^LHI[_&1T;_Q@9&O\H)BG_,"XP
-M___S\O\H("/_)"$G_R$<'/\_03[_=&EN_Q -$_\E)B?_-2HI_R<A)?\4$QG_
-M&Q<9_UM65O]G8%K_H)J2_Z6CGO^ A8'_G)V7_Y*0B_]V>7/_>'AU_Q<4$_\8
-M%!;_%Q(6_Q$/$O\6%!?_%!(5_Q<5&/\5$AC_%A07_R,A(_\;&AG_'!L:_R<V
-M,O\X/#K_&!P:_R\[./\E(B'_-C F_R8L//\>)U#_%1LC_R(>'/]46UO_5&=G
-M_W2*B?][CHC_8&IA_UEP:_\N2WO_=WQZ_YF#@?]U:V#_=G!N_RHK+/\P,B__
-MCXZ#_VIB8/\,)S+_<:C _X.QS?]BEK?_>:+ _[.SO/]N8F/_)"(D_RXR,/_/
-MR<?_GYJ:_RPJ+/^FIJG_*BPQ_[&MJ_\;&!?_8F-J_R<D,?\\.47_(2(I_Q03
-M&?\1$13_$Q$4_Q84%_\2$!/_$Q$4_QH8&_\7%1C_$0\2_Q$/$O\2$!+_$A 2
-M_Q .$?\<&1__'"-!_PH-'_\0"PO_*",E_Q@5&_\9%QK_)"(E_R >(?\=&QW_
-M(B B_VIF:/\F(2/_$P\?_Q@8(_\5&!W_&B4P_QXF.O\Y/47_)R(=_S4O)_]L
-M:VK_# T._Z2BG_\U,"O_(1P<_Q88%O\^0S__3$I%_\6YM?]'3$K_+B\P_QD4
-M&/\8%AG___3Q_SDT.O\7%R3_)B$E_RDK*/]]<G?_&A<=_XJ+C/^RIZ;_<&IN
-M_Q,2&/\:%AC_%Q(2_W=P:O^;E8W_N+:Q_[V]NO_!OKG_J:&=_YR:E?^<FI?_
-M)2(A_R <'O\<%QO_$Q$4_QH8&_\3$13_%Q48_Q<4&O\7%1C_(!X@_QD8%_\?
-M'AW_*CDU_S<[.?\8'!K_+C8R_R<B)O\G)A__)"DU_QPF2_\4&R'_/SLY_X2)
-MCO^7K*[_@9:8_WB&A?]E;6G_771O_R1!<?]Y?GS_E7]]_W=M8O](0D#_*2HK
-M_R,E(O^?D(O_&2,G_S9?<O];C:C_99.O_UV1LO]0?9O_JK"Z_U]56/\L*BS_
-M%!@6_]#*R/^@FYO_'AP>_["PL_]"1$G_LK"S_QH:'?]S=7C_%1(8_QXB)/\E
-M*2O_%!07_Q,.$O\6%!?_&A@;_Q<5&/\2$!/_%1,6_Q,1%/\0#A'_$0\2_Q$/
-M$?\1#Q'_#PT0_QL8'O\?)CS_%!8E_QT8&O\E("3_$A 3_QD7&O\L*BW_'1L>
-M_Q<5%_\5$Q7_34E+_RDD)O\:$A;_%A(4_Q(1$/\A'R+_$18<_Q@>(/\L*2C_
-M'Q,6_V1:;?\;$BK_C("5_X%V??]%/#S_(1X=_SQ /O\P,C#_S\3#_S U,_]'
-M2$G_(!L?_QH8&___^//_03U&_U-8:O\4$A7_)"0A_V]D:?\7%!K_$Q05_R@=
-M'/\6$!3_%Q8<_QH6&/^/BHK_?WAR_YV7C_^MJZ;_TM#-_]C0S/_7R\?_K:BC
-M_ZNIIO\9%A7_&Q<9_QH5&?\3$13_%Q48_Q$/$O\4$A7_%1(8_Q84%_\6%!;_
-M.3@W_R0C(O\I.#3_-3DW_QD=&_\O-##_)2(H_QT?'/\4&B+_%QL[_QP>(?];
-M65;_BYB=_XFCIO^%F9W_96UO_UAB7_]7;VS_)4)R_WA]>_^+=7/_;V5:_T])
-M1_\D)2;_(R4B_YV4C?]=;''_'RY%_Q K0_]]I;K_F\OG_Z',Y/^\P,+_4$='
-M_RDG*?]@9&+_SLC&_YF4E/\;&1O_N[N^_TI,4?^XM[[_&1L>_V!C9/\8%!+_
-M(1T;_R8A(?\9%!;_% \5_Q@6&?\B("/_'1L>_Q(0$_\1#Q+_$A 3_Q84%_\3
-M$13_$0\1_Q$/$?\-"P[_'!D?_S,[2_\2$A__%0\3_Q(3%/\0$!/_&!89_R0B
-M)?\7%1C_&!88_Q<5%_\8%!;_&A47_QP7'?\-#Q;_!PP2_P@'#O\3#A+_'!H7
-M_Q\;$_]^:6?_?6)R_T@N2?]3/5?_0C8__XV"@?]645'_.3L^_RTO-/_.PL/_
-M+C,Q_TQ-3O\=&!S_%Q0:___Y^O\G)BW_*B\[_S4T.O\H(B#_5U%5_QX;(?^6
-MD9/_M*RJ_SXY/?\.$!7_&A@:_QX;&O^ ?G?_E9.+_[RZM?_7T<__V]#/_]?,
-MR__"M[;_K:FG_R0A(/\:%AC_%1 4_Q,1%/\9%QG_%Q47_Q@6&/\7%1?_%Q47
-M_QL9&_\?'1__'R,A_R\W-/\X/3O_'"$?_S0X.O\?(2;_&AT>_Q$6'/\7&BS_
-M%R(C_T-84O]YCY?_EK&\_WR8H/]>>(/_0U=E_TAE<?\R1V3_>7MY_Y:$=O]P
-M95K_2T=%_T)%1O\Q-C+_CH^(_WIW=O\<&2;_05IQ_X&PPO^9Q=G_C+?)_ZJY
-MN?\X-33_.3X^_V1I9__-R<?_CXJ*_QP8&O^.CI'_86-H_Z:DI_\3$Q;_,#,T
-M_R4B(?^2AH'_9%]9_QL=&O\;%QG_&108_QT;'O\5$Q;_$A 3_Q(0$_\2$!/_
-M$0\2_Q$/$O\2$!/_$A 3_PT+#O\;&1S_4$]5_TA'3?\4$A7_$A 3_P\-$/\0
-M#A'_&A@;_Q<5&/\1#Q+_" 8)_Q(0$_\:%1G_1D)*_S\]1O\Z.D7_$0\8_S(I
-M,/] -3K_B7Z#_UA'4?]I76S_9%IK_W=N>_]O:&__HYZ@_YV7E?]*1T+_55-5
-M_];*R_];4U'_2D-#_QH5%?\<%AK___3T_RPG*?\>("7_(1X=_RXF)/],1DK_
-M(R F_R8>(?\J(B#_'1@<_Q@:'_\<&AS_=G-R_X.">_^8F(__O+JU_]C0SO_>
-MT]+_V<[-_\6ZN?^JIJ3_1T1#_Q82%/\7$A;_%Q48_QH8&O\7%1?_&!88_Q<5
-M%_\7%1?_&QD;_QT;'?\?(R'_,38T_S,X-O\=(B#_.#8Q_R0B'_\?'"+_%A,?
-M_Q01*/\P-U7_'S%5_R V7/\O5'?_.VJ-_RU:@O\>16__+%5Y_RY(;_]\@XG_
-MGI"!_VQ@5_]%03__+C$R_RHO*_]?8UK_@7]Z_UUF;?]9?)/_;YZV_Y_!V_^#
-MI;G_H::K_S,L+/\T-3;_55I8_WZ ??]L:VK_*2PM_Z"DIO]>8VC_PL##_Q,1
-M$_\0$Q3_'AH<_R,A&O^XKZG_BWQ\_Q<1%?\6%!?_%!(5_Q02%?\3$13_$Q$4
-M_Q,1%/\2$!/_$A 3_Q,1%/\2$!/_$Q$4_QH8&_])1TK_%1,6_Q .$?\2$!/_
-M$A 3_R >(?\B("/_(R$D_Q<5&/]$0D7_%!(5_Q .$?\4$!C_$@X6_QH6'O\G
-M(RO_,2XT_S@S.?].2%#_85ID_Q$.&_\4$1W_'!@@_T(]0?^MJ*K_LJJH_WMO
-M:O]L967_BX*"_W!G9_]L967_7%=7_T,^0O__\.S_.S0T_RDJ*_]-1T7_-2TK
-M_S8P-/\:%QW_65%4_V-;6?\G(B;_&QTB_R8D)O\V,S+_CXZ'_YB8C__$PKW_
-MV='/_]?,R__:S\[_Q;JY_ZJFI/]/3$O_%1$3_Q81%?\3$13_%Q47_Q84%O\5
-M$Q7_%1,5_Q84%O\>'![_&A@:_R(F)/\X/3O_,#4S_R,H)O\U.3?_%Q\I_PL7
-M,O\,$S?_"!,R_RL\:O\>.7;_*4M]_R=0@?\^;)[_+%J,_S);C/]%:)#_3F:-
-M_TQ47O^7C8+_=VMB_S@R,/\_0$'_2$A%_VIN9?]J;F;_=8.&_SM=<?]]K\3_
-MH,?@_WBBLO]UA(3_A'M[_T,_0?\;(R#_+3,O_T-(1O]U>GK_N,#"_Q4?(_^]
-MN[[_'!H<_QH='O\>&AS_%1@2_[>IIO^;@(;_% \5_Q$1%/\4$A7_%!(5_Q .
-M$?\4$A7_$Q$4_Q,1%/\1#Q+_$A 3_Q43%O\3$13_%!(5_QX;(?\3#Q?_$0T5
-M_Q ,%/\1#Q+_&A@;_QD7&O\8%AG_$A 3_QT;'O\4$A7_&A@;_Q(/%?\2#Q7_
-M%1(8_Q42&/\3$AC_$1,8_Q,5&O\7&1[_$1(9_Q,2&/\R,#+_'QT:_Z&<G/^/
-MA(/_:%Q7_V9=7?]@7%[_7EI<_TI&2/]134__4E!3___R\_\J)2G_("(I_T(^
-M0/]#.SG_-2\S_Q<4&O^3BX[_FI*0_RHE*?\7&1[_'!H<_RDF)?^/CH?_E96,
-M_\3"O?_6SLS_U<K)_]K/SO_-PL'_H9V;_R<D(_\6$A3_%Q(6_Q,1%/\7%1?_
-M%A06_Q43%?\5$Q7_&!88_R,A(_\;&1O_)"@F_SD^//\O-#+_)"DG_SL[./\;
-M(RW_-D9@_T-/:O\U.E/_,#I._SU/7?\L/$S_)RP^_RLR0/\Z1$__7F)J_VAG
-M9O]N9V__@'ES_X1Z;_]S9%[_GY>5_T]-3_])1T3_'QL=_QP8&O\C)2C_/DI3
-M_Q8M,O]/8F[_CJBU_QPE)?\E("#_/#] _TA-2_]65E/_34Q+_TQ-3O^RM+?_
-M&!L@_[2OL_\>'![_'R(C_QX:'/\A'QS_N;6S_UA35_\6%1S_$@\5_Q(0$_\0
-M#A'_%A07_Q\=(/\5$Q;_%1,6_Q02%?\3$13_$0\2_Q,1%/\2$!/_-S,[_S(N
-M-_\=&2+_&A8?_Q(/%?\7%1C_%Q48_Q<5&/\/#1#_(!XA_Q<5&/\0#A'_&A@;
-M_Q02%?\4$A7_%!(5_Q,2&?\3$AC_%!07_Q,4%?\4%1S_$ X7_U%/4O\?'!O_
-M;F]P_V9D8?^%@'K_5%-2_TQ04O]%24O_2$A+_TI(2_]'14C___C[_R(?)?\5
-M%AW_'QP;_SPV-/\@&Q__(QTA_RX?'_\G%Q3_(AH>_Q,5&O\1%!7_0$%"_XB&
-M@_^;E8W_Q\*]_];/S__=U-3_V]'-_]'%P?^>EY?_'!<9_Q82%/\4$A3_$ X0
-M_Q43%?\=&QW_$Q$3_Q<5%_\9%QG_,"XP_QH8&O\E*B;_,C<U_S,X./\D*B;_
-M/#@P_R@D'/]O;&?_8EQ4_W]U<?]L8US_;6A<_W!J8/]U:F/_<F9=_W-F6_]J
-M7%/_4DY,_U).4/]=6%/_;61=_VI>8?]%.C__'QH:_RXJ+/\;%1G_%Q,5_R0C
-M(O\?&AS_-"4?_R<9%O]74E3_>W-Q_R4=(/\E)"K_)BHL_R @(_\H)BG_&18<
-M_VAG;?\@'R7_G)ZA_Q<9'/\:&AW_'1L>_R,>&?_$P<#_:&=M_R,@)O\7&A__
-M%QD>_Q(/%?\8%QW_*RPM_QT;'O\@'"3_$Q$4_Q84%_\U,S;_#0L._Q84%_\Q
-M+C3_.#0\_QH6'O\;%Q__%Q(6_QH5&?\6$17_%1 4_Q83&?\7%!K_%!$7_Q83
-M&?\1#A3_$0X4_Q83&?\5$AC_%A,9_QL9'/\9%QK_&1<9_Q$-%?\3#Q?_.#0\
-M_RLH+O\G*2S_<G9T_U)44O]*34[_1$A*_T1&2?]#14C_1D9)_T9(2__[\_;_
-M)R(H_R$@)O^.B8G_=6]M_RHE*?\8%AG_O;>U_[VUL?\<%QO_&!<=_QD5%_\5
-M$Q7_DHV-_YZ5CO_*Q<#_UL_/_]W4U/_<TL[_TL;!_Z"7E_\?&AS_%Q,5_Q43
-M%?\6%!;_&1<9_QP:'/\3$1/_$Q$3_QH8&O\;&1O_&QD;_R0I(_\U.CC_+C,S
-M_R8L*/\T-2__+"DD_TM&0/])0SO_8UE5_UE13?]*14#_.38Q_S L+O\D(B7_
-M&!89_Q@6&?\;%QG_'QL9_RPE'_^ =FS_9UM<_V)<6O]I9F'_0#T\_QX:'/\9
-M%QG_-#(O_R<<&_]*,R?_.24=_\J]O/^#>77_(!D9_RPJ+/\S.CK_2$M,_RDJ
-M*_]A8F/_?7Y__Q$2$_^SM;C_&QT@_Q86&?\<&AW_*28A_[VXN/]@6F+_&Q@>
-M_S(W//\X.C__'QPB_R@J+_] 04+_%Q0:_R<C*_\3$13_# H-_S(P,_\6%!?_
-M$A 3_Q\<(O\8%1O_$Q 6_Q$.%/\8$Q?_&108_Q81%?\5$!3_$@\5_QH7'?\3
-M$!;_$@\5_QD6'/\1#A3_&A<=_Q,0%O\6$AK_%Q,;_Q41&?\6$AK_'QT@_RPJ
-M+?\M*R[_4E!3_TE*2_]%2$G_1$=(_T-&1_\_043_/D!#_T%#1O]"1$?_0$)%
-M__CP\_]'0DC_*RHP_Q\:&O]O9V7_)!\C_R B)?\@(!W_(1X9_Q43%O\:&1__
-M'Q<:_RXL+O^-B(C_GI6._\_*Q?_2R\O_U\[._]S2SO_6RL7_H)>7_R0?(?\=
-M&1O_%A06_Q<5%_\9%QG_&A@:_Q,1$_\2$!+_&A@:_QP:'/\:&!K_)RPF_S<\
-M.O\J+R__)2LG_R\Q+O\H)B/_/#DT_T0_.?]'/SW_&Q(2_R,<'/\>&1G_,RHD
-M_T0\./]234W_:%]9_V9:4?]Q9EO_>FU@_X5W:/]Y<6?_9F-8_VQK8/\U,S#_
-M(!XA_R(@(O\H)"+_+1X8_T8K&O\X(17_U,;#_Y2,BO\>&AC_75]<_V%L9_]:
-M8%S_7V5A_VEO:_]=8U__/4,__TI/3_\1$Q;_#P\2_Q84%_\W-"__3$='_R :
-M(O\8%1O_-#D^_UQ>8_]95ES_,#(W_U!14O\2#Q7_(!PD_Q<5&/\6%!?_&QD<
-M_Q84%_\@'B'_%1(8_R0A)_\4$1?_'ALA_QH5&?\:%1G_%A$5_Q0/$_\7%!K_
-M%A,9_Q@5&_\5$AC_%A,9_Q01%_\6$QG_&18<_Q00&/\@'"3_%1$9_R,?)_\U
-M-C?_4U53_V5G9?]*3$K_2DQ/_T1&2?]!0T;_/D!#_T)$1_\_043_.SU _SY 
-M0_\Y.3S_^O+U_S0O-?\D(RG_;VIJ_Y:2D/\>&1W_+2@L_Z"5E/^+?WO_'1<;
-M_QH9'_\=&QW_'1X?_Y60D/^>E8[_S\K%_];/S__8S\__U,K&_]C,Q_^=E)3_
-M&A47_QT9&_\5$Q7_%Q47_Q@6&/\:&!K_$Q$3_Q,1$_\;&1O_'!H<_QP:'/\G
-M+";_.3X\_RHO+_\F+"C_-30M_R\J)/]+13W_6U-)_W]S:O]-03C_13LQ_TU%
-M._]P8U;_(1D5_R\K+?]/1#W_<F58_WUP8_]]<F?_AGMP_W!H7O]E8E?_<G!H
-M_S8R-/\<&1__&QD;_RTH(O\Z*![_8D(L_T@O'O^^KZK_:6%?_S$M+_]C9VG_
-M86QM_UE?8?]46ES_-ST__SM!0_\L,C3_3U-5_Q$3%O\-#1#_(!XA_SPY-/^-
-MB(C_(1LC_R,@)O\Q-CO_7F!E_Q83&?\9&R#_2DM,_R =(_\<&"#_)B0G_R$?
-M(O\<&AW_2$9)_TI(2_\4$1?_44Y4_Q\<(O\0#1/_%A$5_Q@3%_\4#Q/_&Q8:
-M_QD6'/\5$AC_%A,9_QX;(?\:%QW_%!$7_QL8'O\;&![_)2,E_R4C)?]'14?_
-M=7-U_U]?8O].4%7_2DQ1_T-%2O]!0TC_/D!%_SP^0_\[/4+_,3,V_S$S-O\T
-M-CG_+S$T_QD7&O__]/7_+R<J_QD9'/][?G__DY25_Q<7&O\='2#_:65G_VUL
-M<O\2%1K_)B<H_QP4$/\L*"K_D(N+_YB4C/_.S<;_U-'0_]',S/_6T,[_RL"\
-M_Z::G?\>%Q[_&Q@>_Q42&/\5%A?_$Q05_Q87&/\0$1+_#@T3_QP;(?\8&1K_
-M'B >_R@M)_\\03O_*S L_RLP+/\O*RG_03PV_U=11_]H7E#_8E!&_U! -O]%
-M.B__75-(_U]23?\5$!+_$! 3_VYI8_]L8EC_>VYA_WEK7/^$=VK_8UQ6_V!<
-M5/]Q;&;_'A89_Q40%O\2$!/_(!D9_U1!.?]A0RW_5#<E_Y!]=?^/AX7_*R0K
-M_V!?9?]05%;_4%-4_TQ-3O\'!@S_(R$D_T5!/_]25DW_)B@E_QX=(_\8%QW_
-M349 _UA03O\;%AS_%Q8<_R@P-/]66%W_&Q@>_Q06&_]$1DG_%!8;_QT=*/]$
-M1DO_+2LT_Q\<(O].3$[_3TQ2_Q01%_]85EG_'AP?_Q84%_\1#!#_&A88_Q@3
-M%?\A&AK_&Q8<_Q,/%_\;%Q__'1DA_QP:'?\@'B'_'QT@_U)04_]O<73_55E;
-M_TU14_]*3E#_0TA-_S]$2?\^0TC_/T1)_T!!2/]#0DG_0D%(_T)!2/\]/T3_
-M/4%#_SH^0/\V.CS_%1,5__SZ]_\K*"?_&!88_QL9'/\M+3#_&!@;_Q86&?\4
-M%!?_'ATD_Q06&_\5&!G_*28A_QX?(/^/CHW_GIB0_]/.R?_3R\G_U<O'_]/*
-MQ/_+Q;W_HY>8_Q@2%O\9&1S_&!,7_QP8&O\:%AC_'!@:_Q<3%?\1$A/_'1X?
-M_QL=&O\D)R'_'" 8_T!#/?\E)R3_%1<5_QX:&/])1T#_5E-(_VE?4?]X9ES_
-M6$@^_T4X+?]21SS_8E-3_QH2%O\8&AC_<FQD_V5;4?]M8%/_:EI*_W-F6_]5
-M4$O_:6=@_UI84?\3#A#_%1 4_Q42&/\?&AS_138Q_UL^+/]*,!W_EH9]_X9_
-M?_\D'23_*28L_V)H:O]\?X#_B8J+_Q<4&O\;%AS_>W=U_V]Q:/]B9&'_&AD@
-M_Q<6'/]%0#O_3TE'_QL5'?\5%QS_&B(F_SD[0/\9%AS_%!8;_T=)3/\/$!?_
-M'!PE_U!25_\V,3W_'QLC_V%?8?]855O_$Q 6_UA66?\>'!__'QT@_SLZ0/\8
-M%QW_%!$7_Q83&?\9%!C_$@P0_RHD*/]*1$C_4E!2_W1R=/]<6ES_6%98_TM-
-M4O]'2D__1DE._T)%2O\_0D?_.SY#_S@[0/\S-CO_+C U_RXM,_\N+3/_+BTS
-M_RLM,/\K+3#_+C S_RLM,/\@'B#_\_7R_SP^//\A'R'_CXJ._T]-4/\6%!?_
-M%Q48_Q43%O\C&Q__&108_QT@(?\6&!;_&Q\=_Y"1B_^BFY7_U<_-_];+RO_5
-MR<7_T\K$_\W'O_^>DI/_% \1_QD:&_\;%QG_&!,3_QD4%/\>&1G_%A$1_R4F
-M(/\R-2__0$,]_T)%/_\R,B__+BXK_R$@'_\1#Q'_(!L;_T1"._]$03;_7%)$
-M_WIK7O]31#?_0C,F_U-"-?]:2TO_'AD?_R,E*/]234?_;6)7_V582_]K7E'_
-M95Q5_U)-4?].2TK_:FAC_Q41$_\6$A3_&A<=_Q83&?\J'A__6#TL_TTX)O]H
-M7UC_;FIL_QX7(?\@'R;_4UM?_V%E9_^)B(?_%!$7_Q<3'/^"@(/_?X%^_V-C
-M9O\8%A__%!,9_TY,1_\6$Q+_&14>_Q@7'O\8("3_5%9;_Q,0%O\@(B?_65I;
-M_Q,2&/\H)R[_9&1G_S0P.?\?&R/_9V5G_V%>9/\3$!;_5U58_QX<'_\C(23_
-M96-F_QP;(?\6%A__1TI5_R <'O]D7U__@GU]_UU86/].3$__2DI-_T]/4O]&
-M1DG_0$)'_T)$2?\^0$7_/3]$_SY 1?\Y.T#_/D!%_ST_1/\]/4#_/S]"_SX^
-M0?\_/T+_/CY!_SP\/_\S,S;_(" C_QH6&/_V\O#_/SHZ_RTK+?\G)RK_FIB;
-M_Q@3%_\8$Q?_&108_QP8&O\5$Q7_&AT>_Q@6&?\?&QG_FI6/_YF4CO_6V=K_
-MS]/5_]#0T__-R,K_R[_ _V)65_]'0D+_?X%__V)?7O]34U#_0D(__S,S,/\N
-M+BO_.#LU_S0V,_\K+2O_(R,F_QP9&/\6$Q+_$0P0_Q40%O\@&1G_14,\_U93
-M2/]M8U7_@')C_W-E5O]N7$[_;UM-_UU.3_];5U__*"LP_T5"/?]G6U+_9EE,
-M_UM01?]*1D3_(Q\G_QH8&_]555+_'AT<_QH5%?\9%AS_&!<>_Q\9'?](+B'_
-M2C@J_U)33/]&14O_(!LG_Q<9(?]>9VW_8F=L_VAG9O\=&B#_&QLF_T)$3/\X
-M.CW_+2PS_Q@6'_\6%1O_/$$]_PT/$O\4$1W_&!8?_Q$9'?]%1TS_&!4;_Q06
-M&_],3DS_&A@;_R,@)O]F9&;_+"@Q_Q\;(_]H9FC_75I@_R,@)O]&1$?_(1\B
-M_R0B)?]02DC_13\]_T9$1_\5%1[_8F1I_U!/5?],2U'_24A._TE+4/]&2$W_
-M/T%&_T!"1_]-3%+_-30Z_S O-?\M+#+_*RHP_RLJ,/\J*2__*2@N_R<G*O\I
-M*BO_*2HK_RDJ*_\K*2S_*2<J_RHH*_\;&1S_&147__ST]_\G(B3_&1<9_Q87
-M&/^2D)/_'QH>_Q@3%_\8$Q?_%Q(6_Q02%?\5$Q;_&108_T0\./^7D8?_F9B1
-M_\'$Q?^TN;[_K[.U_[:TM__!N;W_96-E_V=J:_]=8&'_,S8W_R0I*?\A)B;_
-M(",D_R,D)?\B("+_'1L>_Q@6&?\6%!?_$ X1_Q,.$O\3#A+_$@T1_R(=(?\_
-M.3W_+"8D_UY72_]K85;_74] _WQD5?]^9%G_+1XB_R@C*?\W,S7_/CLV_V5:
-M3_]A5TG_5TQ%_SPV-/\:%A[_%Q@?_SP_1/\]/$+_'ALA_QP;(?\/#1;_)B(K
-M_RTB)_\E(AW_6EQ3_U-15/\;&"3_&1DB_UE<7?]77%;_6EQ9_QD9'/\9&![_
-M7F)@_V]Q;_]D9&?_&!<>_QP;(?\_03__*2DL_QD5'?\=&2'_/ST__QT:(/\9
-M%1[_%Q8=_S$P-O\;&![_'!H=_VII:/\B'RO_(!TI_U!+3_],1D3_*B(>_R@@
-M'/]/2D7_:&5@_XF%A_]85EG_24=*_Q44&O])3%'_1DE._SP_1/] 0TC_/D%&
-M_T)%2O]%2$W_0$-(_T%$2?\_0$?_.CM"_SP]1/\Y.T#_.SU _ST_0O\O,33_
-M*RPM_RPJ+/\I)RG_*2<I_R@F*/\H)BC_*"8H_QT;'?\6$A3_^/#S_RDD)O\=
-M&1O_&QD;_WQW>_\6$17_&A49_QD4&/\8$Q?_&!,7_Q\:'O\F(27_2T5#_Y"+
-MA?^+B83_'Q\B_V)G;/]26%K_2DY0_S<W.O\K+3#_*"HM_R0F*?\:'!__%148
-M_Q04%_\9%!C_$PT1_Q(0$_\3$13_$0\2_Q$/$O\0#A'_$0\2_Q$/$O\0#A'_
-M$0X4_SXX0/\=%QO_)R,;_TI%.?]>4D/_;%E'_W5@5/\I(27_,BTS_T1 0O]"
-M0#W_55!*_U%,1O]'0D+_.C4Y_Q\;(_\7&!__4UA>_U-26?]/3E3_5U9=_Q@6
-M'_\[.$3_,R\X_UM96_];7%;_6%99_QH7(_\9&!__6UQ=_U]C6_]@8F#_&!<=
-M_QH9'_]?85__8&)?_UY>8?\8%Q[_%Q8<_T5$0_\V-#?_&!0<_QT:(/]K9F;_
-M;6AN_QD5'O\<&R+_;VQR_QT:(/\C(23_5U57_R8@)/\L)"C_4DU-_UM65O^ 
-M>WO_A8""_T1 0O\T,C3_)"0G_Q\>)/\;&B#_$A$7_R(B)?\H)BG_*RDL_S(P
-M,_\R-#?_-SD\_SD[/O\Z/#__.3M _S@Z/_\V.#W_-3<\_S(T-_\L+C'_*"HM
-M_R<I+/\J*"K_*"8H_R@F*/\H)BC_)R4G_R<E)_\F)";_*"8H_QD5%___]OG_
-M(!@;_QX9&_\9%1?_&108_Q<2%O\<%QO_&108_Q81%?\6$17_%1 4_Q@3%_\7
-M$17_(!L;_Q<4$_\7%!K_'B E_QX@(_\H+"[_&Q\A_Q$1%/\1$13_$! 3_Q 0
-M$_\2$!/_$PX2_QH4&/]P:&S_%Q(6_Q(0$_\1#Q+_$0\2_Q$/$O\0#A'_$0\2
-M_Q .$?\9&1S_3TM3_S<R./\C(!O_/3LS_U=01/]:4$'_7E=+_QH5&_\8%!S_
-M.#8Y_SP[.O\^04+_45-8_U%26?\L+33_'QLC_Q<8'_]A9FS_:&=N_VUL<O]O
-M;G7_%A0=_QL8)/]=6V3_9F9I_V=H:?];6F#_&!8?_QH9(/]C8V;_:&IH_V5F
-M9_\6%1S_%!,:_U976/]?85[_5E99_Q85'/\9&![_0#\^_R<E*/\:%A[_(A\E
-M_V=C8?]A7&#_'!@@_R$@)O]'14?_'AP>_R@F*/]>7%[_>G5P_ZFAG?]W<G3_
-M6UA>_U157/].3E?_1$9._SU#2_\X.T#_.3Q!_R\R-_\I+#'_*RDL_R\J+O\M
-M*"S_+2@L_RLI+/\H*"O_)B8I_R8F*?\F)BG_)24H_R@H*_\G)RK_)R<J_R0D
-M)_\D)"?_)24H_R@F*/\G)2?_)2,E_R4C)?\E(R7_)2,E_R@F*/\B("+_+2DK
-M__SP\_\>%!?_,2DL_RPG*?\<%QO_% \3_Q40%/\4#Q/_%1 4_Q40%/\4#Q/_
-M%Q(6_Q,/&/\7$AC_&!,7_Q@1&?\3#!/_%Q$5_Q40%/\1$13_$A 3_Q(0$_\1
-M#Q+_$0\2_Q 0$_\-#Q+_%1,6_R ;'_\5$Q;_$A 3_Q$/$O\1#Q+_$0\2_Q .
-M$?\1#Q+_$ X1_Q$2$_\8%Q[_&!0<_R$='_\1#Q'_2D9$_U502O\C(B'_$Q$:
-M_Q43'/\M+#+_4U15_TU05?]665[_7EUC_S M,_\<&"#_%Q@?_UYC:?]B86C_
-M8F%G_V-B:?\8%A__%Q0@_UY?9O]@86C_8&%H_U166_\;&B'_&!<>_V5D:O]E
-M9&K_7UYD_QD7(/\<&B/_34U0_S$S,/\G)RK_&QHA_QD8'O]!0#__+2LN_R <
-M)/\G)"K_0#TX_T(^0/\A'B3_'Q\B_V1E7_^"@WW_EI64_V=E:/]565O_55A=
-M_TY05_]*2E/_2$=._T9'3O]%1T[_049,_SY#2/] 14K_/D-(_SU"1_\^0$/_
-M/CY!_S0T-_\O+S+_+"HM_RLI+/\J*"O_*B@K_RLI*_\H)BC_*2<I_R@F*/\I
-M)RK_)B0G_R4C)O\E(R;_)B0F_R0B)/\D(B3_)"(D_R0B)/\D(B3_(B B_R8D
-M)O\2#A#_^_+R_R8;(/\;$AG_%Q,5_Q@3%_\5$!3_%1 4_Q40%/\5$!3_%1 4
-M_Q0/$_\7$A;_%Q,5_Q<3%?\5$!3_&!$;_S0J.?\:$QO_%1 4_Q0/%?\1#Q+_
-M$A 3_Q$/$O\/#1#_#0T0_Q 0$_\?'"+_&Q<?_Q81%?\5$1/_$P\1_Q00$O\2
-M#1'_$PX2_Q(-$?\3#A+_$1 7_Q<3&_\8$AK_&1$5_QD4%O\M*"C_14$__STZ
-M.?\6$AK_&!0=_RDF+/]245#_35%/_U%34/]24TW_)R0C_R <)?\='"+_6UU;
-M_V-B8?]=6UC_9V-E_QD5'O\:&"'_6EIC_V)C:O]H:7#_1450_Q46'?\:'"'_
-M7U]H_V1D;_]B8FW_$A(=_QL;)/]A8FG_7F!H_V%?:/\?&R/_'!XC_SY /O\Z
-M.#K_'AP?_R@E*_]:55#_8%M6_W9R</]D86#_5EA;_U=97/]:7&'_45-8_TQ1
-M5_]*3E;_14E1_TA*4?]%1T[_149-_T-%3/]%1T[_0D5*_SP_1/\]0$7_041)
-M_SU 1?\^0$?_/#Y%_SP^1?\X.C__.CD__RPK,?\I*"[_+BPN_RHH*O\J*"K_
-M)R4G_RDG*?\E(R7_*"8H_R4C)?\F(B3_)R,E_R(>(/\E(2/_)B$E_R,>(O\W
-M,C;_)!\C_Q81%?_Z\?'_(!<>_QL4'/\;%AK_&!,7_Q40%/\5$!3_%1 4_Q40
-M%/\5$!3_% \3_Q<2%O\7$Q7_%Q(6_Q,.$O\8$QG_'!4?_Q@3%_\5$A'_%! 2
-M_Q$/$O\2$!/_$Q$4_Q,1%/\3$13_%!(5_Q82&O\<&"'_&Q8:_QP8&O\?&QW_
-M&Q<9_Q<2%O\5$!3_%1 4_Q0/$_\3#Q?_%Q,;_QX9'_\?&1W_'1D;_R,@'_\G
-M)"/_(1X=_Q82&O\8%!S_(!XA_TM+2/]-3TS_3E)*_TY/2/\<&!K_'A<A_QL8
-M'O]65E/_6EI7_UQ95/]955?_&!0=_QH9(/]@7V7_75Y?_V%B8_\]/$/_%A<>
-M_QL=(O]A8FG_8F)K_V%A;/\7%R#_(B,J_TY05?]355K_5U)8_R<?(_\E)"/_
-M6UM8_UU>6/]K:FG_E9.5_X2 @O]95E7_6%A;_U-56O]04EG_3E!7_TM-5/])
-M2U+_2TU4_T=)4/]"1$O_1$9-_T1&3?]#14S_04-*_T%#2O\^04;_0$-(_T!#
-M2/]!1$G_/#Y%_ST_1O\]/T;_/D!'_ST_1/\\/D/_/3]$_S@Z/_\R,#/_*B@J
-M_RLI*_\H)BC_*"8H_RDG*?\G)2?_)"(D_R<C)?\H)";_*24G_RDE)_\E("3_
-M&!,7_Q<2%O\8$Q?_% \3___U^O\O)2[_1SY+_R$<(O\:%1G_%A$5_Q40%/\8
-M$Q?_%A$5_Q81%?\5$!3_&!,7_Q<1&?\7$AC_#0@,_W9R=/])1$K_&147_QH8
-M$_\8%13_$A 3_Q43%O\5$Q;_$Q$4_Q,1%/\-"P[_&14=_QT9(O\=&!S_&!06
-M_Q,/$?\4$!+_%Q(6_Q81%?\9%!C_'!<;_Q00&/\7$QO_'ALA_QT;'O\A'R'_
-M,2\Q_S\]/_],2DS_%Q,;_QD5'?\E(R;_45%._U%34?]/4DS_4E)/_QT8'/\C
-M'";_&A<=_UE95O]555+_5E-._UA45O\;%R#_&1@?_UA75O]96E3_6%E2_R4C
-M)?\<&R'_&QH@_UQ;8?]=7&+_86!F_Q<6'/\D)"?_5UA9_U!03?]744__7E94
-M_U924/]Z?7?_8&-=_U=95_]65UC_3%%6_TM/5_]*4%K_1TI6_TY06/]*3%/_
-M1TE0_T=)4/]%1T[_1DA/_T=)4/]$1DW_/D!'_T!"2?\[/43_0T5,_T!#2/]!
-M1$G_2DU2_SY!1O\_04C_/T%(_SY 1_]"1$O_/D!%_SY 1?\_04;_/D!%_SHZ
-M/?\R,C7_+2TP_R<G*O\K*2O_*"8H_RHH*O\C(2/_)2$C_RDE)_\B'B#_+BHL
-M_QD4&/\4#Q/_&!,7_Q,.$O\8$Q?_^>[U_SXT/O\F'"O_'QDA_QD4&/\6$17_
-M%1 4_Q<2%O\:%1G_&!,7_Q40%/\8$Q?_%Q03_Q<3%?\:%1O_'1<?_QL4'O\L
-M)RW_(1T?_QP7&_\5$Q;_'AP?_QT;'O\<&AW_03]"_TE'2O\:%A[_'AHC_QT8
-M'/\8%!;_'!@:_Q\;'?\@&Q__(ATA_R0?(_\H(R?_&1,;_Q@4'/\='R3_2T]1
-M_TU/4O]04%/_45%4_U145_\7$QO_&14=_R\M,/]I:6;_5597_U%34?]14$__
-M'!<=_R,<*/\8%1O_6%A5_UA85?];6%/_5%!2_QL7(/\;&B'_6%98_UM:4_];
-M653_)2(A_R$=)?\<&1__7UU@_T=%1_\M*RW_(B B_R@G)O]24TW_>7YX_Y&1
-MCO]O:FS_5U=:_U)45_]14U;_4%)7_TY/5O])4%;_2$]5_T1(4/]%1E'_1DA0
-M_T=)4/]&2$__1$9-_T%#2O]$1DW_04-*_T!"2?] 0DG_04-*_T1&3?]!0TK_
-M/D%&_T)%2O]!1$G_1$=,_T%#2O]!0TK_/3]&_T!"2?] 0D?_/D!%_S]!1O\^
-M0$7_.3M _ST_1/\\/D/_.CQ!_ST[/O\W-3?_,C R_S N,/\M*2O_)B(D_Q82
-M%/\7$Q7_%1 4_Q(-$?\7$A;_%1 4_Q81%?__^?C_(1,4_RD;(_\;%!S_&Q8<
-M_Q<2%O\<%QG_(AH=_QX7%_\=%1C_%Q(4_QD4&/\6%!;_%Q47_Q,0%O\7$QS_
-M&A,?_QT7&_\A&AK_%1,5_QP9&/\Z-S;_/#H]_T5$2O])24S_3T]2_QT9(?\C
-M'";_(APD_TE&3/]'1$K_1$)%_SDW.O]$0D7_3DQ/_U%/4O\9$AS_&Q0>_RDE
-M+?]45EO_55=<_U577/]<7F/_7%YC_Q41&?\:%A[_(B$H_UE87O]56%W_6%Q>
-M_UE;7O\8%1O_(!PD_Q<6'/]14U'_7%I5_U=63_]345/_&A8?_QX:(O](1DC_
-M/3XX_TE*1/\I)RK_(AXF_R0C*?]:6US_6UE6_UY85O^!?'S_@7Y]_UY?8/]0
-M5%;_5%=<_U-56O]25%O_3E!7_TM-5/]&2$__0T5,_T1)3_](25#_2$=._T9'
-M3O]*3U7_24I1_TA'3O]#14S_24M2_TA)4/]&1T[_0T1+_T)$3/] 0DK_0T5,
-M_T9)3O]%2$W_1$=,_T!#2/]$1TS_04-(_T-"2/\_/D3_0T)(_T%#2/\Y/$'_
-M.T!%_T _1?\^0$7_.CQ!_SH\0?\Z/$'_.SL^_S\]0/\5$Q;_)2,F_Q<5&/\T
->,C7_%Q48_R<E*/\4$A7_$A 3_Q02%?\3$13_%1,6
- 
-end
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testrgb.uue b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testrgb.uue
deleted file mode 100644
index dc11fc2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testrgb.uue
+++ /dev/null
@@ -1,971 +0,0 @@
-begin 644 test.rgb
-M =H! 0 # 'T :0 #         /\     3FEE=7=E(%-P:65G96QS=')A870 
-M                                                            
-M                                                            
-M                                                            
-M                                                            
-M                                                            
-M                                                            
-M                                                            
-M                                                            
-M                                                            
-M                                                            
-M                          O8   -6@  #MT  !!@   1W0  $UH  !36
-M   65@  %]D  !E9   :W   '%\  !W?   ?8@  (.4  ")H   CZ@  )6L 
-M ";J   H;   *>\  "MR   L]0  +G@  "_Z   Q?0  ,P   #2#   V!@  
-M-XD  #D+   ZC@  /!   #V3   _%@  0)D  $(<  !#GP  12(  $:E  !(
-M*   2:L  $LN  !,L0  3C,  $^V  !1.0  4KP  %0_  !5P@  5T4  %C(
-M  !:2P  6\X  %U1  !>U   8%<  &':  !C70  9.   &9C  !GY@  :6D 
-M &KL  !L;P  ;?(  &]U  !P^   <GL  '/^  !U@0  =P0  'B'  !Z"@  
-M>XT  'T0  !^DP  @!8  (&9  "#'   A)D  (8<  "'GP  B2(  (JC  ",
-M)   C:<  (\J  "0K0  DC   ).S  "5-@  EK4  )@U  "9LP  FS(  )RS
-M  ">-   G[,  *$N  "BIP  I"@  *6E  "G)@  J*(   Q8   -VP  #UX 
-M !#?   27   $]@  !56   6UP  &%D  !G:   ;70  '.   !Y@   ?XP  
-M(68  "+H   D:P  )>H  "=J   H[0  *G   "OS   M=@  +O@  #![   Q
-M_@  ,X$  #4$   VAP  . D  #F,   [#P  /)$  #X4   _EP  01H  $*=
-M  !$(   1:,  $<F  !(J0  2BP  $NO  !-,0  3K0  % W  !1N@  4ST 
-M %3   !60P  5\8  %E)  !:S   7$\  %W2  !?50  8-@  &);  !CW@  
-M96$  &;D  !H9P  :>H  &MM  !L\   ;G,  &_V  !Q>0  <OP  '1_  !V
-M @  =X4  'D(  !ZBP  ? X  'V1  !_%   @)<  ((:  "#FP  A1H  (:=
-M  "((   B:,  (LD  ",I0  CB@  (^K  "1+@  DK$  )0T  "5MP  ES8 
-M )BV  ":-   F[,  )TT  ">LP  H#0  *&L  "C*   I*<  *8F  "GI   
-MJ2$   S9   .7   #]\  !%>   2VP  %%<  !76   76   &-D  !I;   ;
-MW@  '5\  ![A   @9   (><  "-I   D[   )FD  "?K   I;@  *O$  "QT
-M   M]P  +WD  ##\   R?P  - (  #6%   W"   .(H  #H-   [D   /1( 
-M #Z5  ! &   09L  $,>  !$H0  1B0  $>G  !)*@  2JT  $PP  !-L@  
-M3S4  %"X  !2.P  4[X  %5!  !6Q   6$<  %G*  !;30  7-   %Y3  !?
-MU@  85D  &+<  !D7P  9>(  &=E  !HZ   :FL  &ON  !M<0  ;O0  '!W
-M  !Q^@  <WT  '4   !V@P  > 8  'F)  ![#   ?(\  'X2  !_E0  @1@ 
-M (*;  "$&@  A9L  (<>  "(H0  BB0  (NC  "-)@  CJD  ) L  "1KP  
-MDS(  )2U  "6.   E[<  )DW  ":M0  G#0  )VU  "?-   H+4  *(K  "C
-MJ0  I28  *:G  "H(P  J:(   "     @0   ($   !_    ?P   'X   " 
-M    @0   (    "!    @0   ($   "!    @0   ($   "     @0   '\ 
-M  "     @0   ($   "!    @0   (    "!    @0   ($   "!    @0  
-M (    "!    @0   ($   "!    @0   ($   "!    @0   ($   "!    
-M@0   ($   "!    @    ($   "!    @0   ($   "!    @0   ($   "!
-M    @0   ($   "!    @0   ($   "!    @0   ($   "!    @0   ($ 
-M  "!    @0   ($   "!    @0   ($   "!    @0   ($   "!    @0  
-M ($   "!    @0   ($   "!    ?P   ($   "!    @0   ($   "!    
-M@0   ($   "!    @0   ($   "!    @0   ($   "!    @0   ($   "!
-M    ?P   ($   !^    @0   '\   "!    ?@   '\   "!    @0   ($ 
-M  !_    ?P   '\   "     @0   (    "!    @0   '\   "!    @0  
-M ($   "!    @0   '\   "!    @0   ($   "!    @0   ($   "!    
-M@0   ($   "!    @0   ($   "!    @0   ($   "!    @0   ($   "!
-M    @0   ($   "!    @0   ($   "!    @0   ($   "!    @0   ($ 
-M  "!    @0   ($   "!    @0   ($   "!    @0   ($   "!    @0  
-M ($   "!    @0   ($   "!    @0   ($   "!    @0   ($   "!    
-M@0   ($   "!    @0   ($   "!    @0   ($   "!    ?P   ($   "!
-M    @0   ($   !_    @0   ($   "!    @0   ($   "!    @0   ($ 
-M  "!    @0   ($   "!    @0   ($   !_    @0   '\   "!    ?P  
-M ($   "!    @0   ($   !_    ?P   '\   "     @0   (    "!    
-M@0   (    "!    @0   ($   "!    ?P   ($   "!    @0   ($   "!
-M    @0   ($   "!    @0   ($   "!    @0   ($   "!    @    ($ 
-M  "!    @0   ($   "!    @0   ($   "!    @0   ($   "!    @0  
-M ($   "!    @0   ($   "!    @0   ($   "!    @0   ($   "!    
-M@0   ($   "!    @0   ($   "!    @0   ($   "!    @0   ($   "!
-M    @0   ($   "!    @0   ($   "!    @0   ($   "!    @0   ($ 
-M  "!    ?P   ($   "!    @0   '\   "!    @0   ($   "!    @0  
-M ($   "!    ?0   'X   !\    ?0   '\   !_    ?P   'D   !\    
-M?P   '\   !_    ?P   ('J^!0C'!P6&1T7&!08%A<6'!\;&A48-CU*3%(A
-M)B1,2D4Z14]2'!XM6UQ<8V,9'BA>75Y>&R0<455/4Q\B2#A$*B8I7%96?'U@
-M5EQ:6U=43TQ/4$Y.55%.3%)03DM,2DQ.34Q(3$A(1$A(00-% T&+/D 6)A@U
-M&"@5$Q4!% $6 .WY$QL4%A(7&A<5$A04%1 3$Q<:$QDW.D1)3QD<'$9$0C="
-M3$\2%"565U=>7A$6(5A87%L5'!936E91%AI&/DHG'B-;65A\?E]45U544$U(
-M14E)1T=/2D=%2TE'1$1"14E(1T-'0T(^0D,\0#]  SR+.ST3(Q4R%242$!(!
-M$0$3 .W_(2D;&Q<<(AX=%QD6%Q,7&ATA%1PZ/$5)3QTC(DE'1#E$3E$9&RE4
-M555<7!4:(EE56%D8(!=17%=3&AY(/4DI(B1:6UZ!@5Y05%-23DM&0T1(2$9*
-M24A#24A&0T) 0T9%1$!$04,_0T$Y.T ^ SJ+.S\5)1<T%R<4$A0!$P$5 /OU
-M/BLA&!44%AD7%!<3%1L?'BT?&Q8?'AU"2AXC'!8:'1\A(R<;'"114E-45QL=
-M,&9744\=*!M555-2("%84U0A)1]@1RTB)DUXCFQ:5U975E954%%04$]-2DU*
-M24E*34I&2DE,2DI&24=%1D5 1$-!/C<R,"LD%!44$18!% $5 +;N-!P9%!$0
-M$A43$!,4$Q47%"<=%Q,<&QH_1Q8:&!08&QL='R,3%!]/3U!15!,5+6E64U 7
-M'!4#6,)0%QI66EDB'1E=12L@)U-^D6I75%-23U!/2$9(24A&0T9#0D)#1D-!
-M141'0T,_0D) 04 [/SX\.S4P+BDB$A,0#1(!$ $1 /OY/B8?&185%QH8%1@7
-M%QH=&RPA'!4>'1Q!21H>'1@<'R B)"@9&!U+35!15!<9+VE545$<(QA86%M4
-M&QM86ULE(1Q?1RTB*%)YD6]74E%03DE(1$5&1T9$041!0$!!1$$^0D%$04$]
-M0$ ^/SXY/3PZ/3<R,"TF%A<5$A<!%0$6 /OZ+DLB&144%Q45%!<9& QT2A<3
-M%!,6%A04#ATB'!81$A85&!L8&R$>(3$_3!L=)DY13$\<)AU64DY6(!]65%(E
-M(2!A8F8<)UE-3U10=UU76%976E984U!03D]034=)1$Q(25)&2$A'2T5%1D4]
-M-3 J*R@J(R,G("P8$Q<!$@$7 ./U)3X<%1$0$Q$1$!,1$@AR1!48%1 3$Q$1
-M"Q49&!0/$!(1%!<0$QL;'R\]2A,5(U%34E(8'!=955-4%QA76EDC&QI;7& 6
-M)%A04592?6-95U%/4$I03$E)1TA)1D!"/45#1$T#095 1$! 04 Z,BTG*28H
-M(2$E'BH4#Q,!#@$3 /O_+T<A&A85&!86%1@7%PUV21D:&!(5%1,3#1D='1@3
-M%!<6&1P4%QX=(3$_3!<9)5%13U(=(QI95598&QE865@E'!M<76$7)%=05UY6
-M>F!75DQ+2D=.2D='149'1#Y .T- 04H^/S\^0CX^/SXZ,BTG*R@J(R4I(BX9
-M%!@!$P$8 (7Q'AP:%P44C!,6%182&1\7$1(2$P,4XA4:(1H:'1D6%!03%QL?
-M'1L?(QT:'"%(3$I(&B$>4U=45QT@95]C0QXB:6ML("I56E@C(UA8:96"55M:
-M65=44E102TU-3$I*1DA(245&1D=$0T0_,RHK*"@I)R0E)B<G)!<6 1<!$P"%
-M\1<4%A,%$(P/$A,2#A,5$Q(0#Q #$8T2$A@6&!L7$A 0#P\3 QG2("0>$A0>
-M2T]23Q@7&%9:6544&5]>8CP7'6)B81<C4%52'R1;7FJ3@%9855)034M-241&
-M1D5#0T%#0T0^/S] /SX_.C H*28F)R4B(R0E)2 3$@$3 0\ A?H@&QL8!16!
-M% ,7B!,8'!@5%!$2 Q/B%!8<&QP?&Q<5%103%QX?'2,G(188($M-3DX<'AM6
-M6EQ9&!I@76$]%AMA8F$7(DY35R<E6UUKE8196%-03DM)2T="1$1#04$^0$!!
-M/#T]/CT\/3@R*BLH*"DG)"<H*2DE&!<!& $4 (7R(!D5%P44\1,6%144&SD;
-M%!42$Q(0$!,B'Q43$1(1$A$2%QL:%18H/SD:'2Q03U!-(R4B6V%891XA8VIP
-M4!TA:&]M'21I:&@C(SXZ'RM05G!@6UQA6%=645%.34Q.2D1%245'144_/S$N
-M+BHJ)RDE*"4D)2 C)2(V 2,!%0"%\AL2$Q,%$/$/$A,3$!$J$Q /#Q /#0T0
-M'!<1$0\0#0X-#A 3$A$4*$$Z$A0F45%34R0<'%UB6V,5&%IC:446'%]D8A(;
-M8F!?&QY .!PE55MR85A97%-13DE*1T9%1T4_0$1 0#X^.CDK*"PH*"4G(R8C
-M(B,>(2$>,@$? 1$ A?LF&Q<8!16!% ,7[148-!H5%!$2$0\-$!\;%A43%!(3
-M$A,1%Q@9&2U%/188*5)-45(G(!U;8UUG&1I:8FA%%1I?9&(2&V%>81\</CH>
-M*%I@=F165UI13$I%2$5%0T5"/#U!/3X\/#@Z+"DN*BHG*24H)28G(B4F(S<!
-M) $6 )[S%RPI&Q,4$Q04$Q88&!<9$Q44%!,3$A(3$A8?%A,#$KL1$A$3'AP?
-M$41*(1H<,E557F,S(!]I:&=I'R!F:&A;(1YJ:F0@(U P*B$>/RXD*CA )")?
-M?91H6UU74P-.BTQ(2DA'0T$W,BTL RN%*"DH*B<#)@4D@2(!)@$0 )[P%"DG
-M%P\0#Q 0#Q(/$A,1#!$0$1 0#P\0#Q,;$Q ##[L.#PX2%Q0=#T90(A$3+%10
-M65TM&!AC86%B%A1?86%6&A=D9%X7&DTS)QH80"L<)#T^'A]E@Y5E65A02@-'
-MED9#14-"0#XT+RHI*"@I)B<F)R0C(R0%(H$@ 20!#@">_!XQ+!P4%105%107
-M$Q<8&!,7%1$2$A$1$ T5(!42 Q'4$!$0$1@8(1%*52,3%2U3359>,!P77F)B
-M8Q@77F!@5!L8965?&1Q-,2<;&4$M("= 0B$?9(*69U553DI(1D5!/D ^/3X^
-M-"\L*RHJ*R@I*"DF)24F!22!(@$F 1( EOD;&Q<8%AL8%144%Q4;$QHE(RXA
-M%!0#$X42&&P6$P,2Q1$2$1Q3.!LS1$%+&QPY.D)8630C'VQN<G4=)&1I:6 ?
-M(&9H9QP:6%Y9'!X^*!XE86 @)D<>*%YPG71>7%=.2T!!-S$L+@,L@2L#*8DH
-M*RHJ)R<H*"<$)8$H 2(!*P"6]A@9%102%Q01$1 3$1L4%" @+!\1$0,0A0X4
-M:!(0 P_)#@\.&4LR(#M04%<5%#8[05-2+1L89F=L;A086V9H6A898VIF%1-7
-M8585&#\E%A]C7!@@11PF7'6A<EA53D9#.SPR+"DJ*"@I* ,FB24H)R<D)"4F
-M)00C@28!( $I )[_(!X9&1<<&186%1@7(!<7'AXH&Q$1$! 2$QIP%Q(#$<D0
-M$1 93S<C/5=:7AH8.#P^45$L'Q=A:&UO%AM=9F=;&!IC:&46%%9?5A890"<:
-M(F=A'"%''BA>>JEW6U1.1#TX.2\I*R\M+2LH R:))2@G)R0D)2@G!"6!* $B
-M 2T ]?,F&QM[%1D8%Q<>)4.%A")L6E Z,"TI'Q@7&!$3%!(2$1(2$11 &QLY
-M0T=4)3-"/4I&0CDC'UY95%T?1#A;5EDC'UU;8!T?7U]A'AQ#-QP@9FX>(G(@
-M)%<D*$U6>X)"-"<D(!<E*2PS-SP^/T _/3PW,2TL*@,H@R<G)@$H 1< ]? D
-M&1EW$144$Q,:(46+B1]G6$XW+2HF'!44% T0$0\/#@\/#@XX%R-%4EE@(2U 
-M0%!,0C4;&%A23E86."]97%87&%QC8A<986)>%Q9$-!0:9F@5&VP:(54@)$U6
-M>X! ,B0>&A$B)BDP-#D[/#LZ.#<T+BHI* ,F@R4E) $F 14 ]?@I'1M\%AH9
-M&!@?)DN0BQ]B4DHW*R@D&A44&1,2$Q$1$!$1$!$^'2=*7FQU*3)$0E511SH?
-M%U-33U<8.S-;6U@:&5M?8!@:7V!>&!=%-A@=:VT9'&\=(U<F+%);@(5$-"0?
-M&Q(B*"LR,C<Y.CDX-C4R+"@G*@,H@R<G)@$H 1D ^/<D&1B3'A<7%A46&#B'
-MD<6^M;>]96MA-RDF)"4B'AD7$1(2$2$])$M60%59(BDU-D])130>'T1"(2$6
-M*R<=4U0D(EU661P>8&]G'B$_+!TA/R >'38>'6@K*4]$'AQ%8(=92AI13D1(
-M1DI-2$E'0D1 0$(T+2PI*0,H 1T!% "@]"(7%Y :$Q,2$A,4/)&8Q+FSM+EC
-M:F V*28C)" ;%A0##I@-'3DF5V%/9&0>(S,[6E=,-A88/SP;&PT#(H1<41@9
-M URS&1AB<607&T$I%1D]&A46,!@::1\=2T8B($IEA59'%$Q)/T-!14A#1$ [
-M/3L]/S$L*B<G R8!&P$2 /C\)QD6DA\8&!<4%1E$EYG!M*^VP65G73,D(2 C
-M(AT8%A 3$Q(B/RQ>:UU\?BTH-SYE85<\&A<\/1X<#R8M)5I3&QE95UH9&5YO
-M9!@</RD9'3\=&1<Q&QQJ(B!03"HH3VB)6$D5248\0#Y"14!!/SH\.3L]+RLL
-M*2D#* $= 18 ]? Z+2J;%Q<8&A4>&1F/CMK5T\K 5T)_7E _,"LU,RLF&!(0
-M%AD\2%5C5DY-3U\P/5),140G&U(<%1P>'2$J3$LG(6UL9B F3#TS'QL]$AT?
-M'4P;&TP;)F8Q(VA@)D<B)4@]1QYI55%.4$U&1U(Z-3(P,"\N*@,K@RPJ*P$<
-M 1< PO(Z*R>8$Q,4&!,=%AN5E-G3T,B_5D*!7U-",RX[-BTC&1,,$!E#4V-R
-M95Q;3E<K0EM94$8?&%4=%187&2XX4T4;&0-GL!H;1#HL%A5!#Q$6&4<5%DX8
-M(&0H&V9:($0?(DH_1!5D3TM(2TA!0DPT+RPJ*BDH)P,J@RDG* $9 14 ]?8_
-M+2>:&!@9'!4:&!^:F=;/T,W+8D=_8E-",RXX-"LC'!81%2!%5FV <VYO75LH
-M16=F6THC&E4>&AD8'TA*4D8@%UYB:!T;0C@M&!8\#108$448%$P:(V8L'VA=
-M(T8A)%!%1A5B4$Q)248_0$TU,"TK*RHI)P,I@RLI*@$; 1D ^_(\(8Y0%Q@6
-M'Q@A%AV+E<W*Q<2_DQ$;&1,4&1$@+ST_+RL?$1L[-D1>-R8U2Q\H1U=+4551
-M2F,3%!T9'RPF6&PA)E]GAQ<<@WYF'QE'$AX>)%L6)UL8+F<Y(V=D%E@?)&8A
-M'U4>7WU83TU224=)141%0$5$0$)!0D$_-@$C 1@ ^_4^'XI-%!43&Q0@&!^1
-MF\_+R<K'D@\:%Q,4&1$F-4-%,BX@#QM"05)K1#-"2QDE36)87EQ-2V@1$A<3
-M'CTX7VH7'UMEB!$3@(%C%A-,$Q47(%80(EH2)V0P&V5>$%4<(6,;%DH<7WU8
-M3$I/1D)$0#] .T _/3\^/SX\,P$@ 18 ^_,\(8]/%A<5(QD=%AN0HM76U=/-
-MGA09&Q@9'A8E,D!",BXA$2!$1%QZ4T)36AXC4FUE:V523FH5%AH6*EA-:&X>
-M(%-AB107@G]C&!1.%AD8&%03(%D3*&0T'V=A$U<>(V4<%D<@9()=3DI/1D!"
-M/CT^.3X]/3\^/SX\,P$@ 1H ]?<G&!PP&QD7)!L9(2"-D,G)Q\2]F!8<%QH8
-M&A43'QHA&#TD%1A 2%%</BT\4Q889%%32EM+8%$0%!@<,2P=?7\D+&J BQH<
-M=6AA(!P[1QT<)D <&TP7)5<](V%;%ED?($ =%QD8$"A(4G1<6%)/3DI'0T [
-M-0,S@S P,P$P 2  ]?HH%ADM&!84'188)A^.F,[+R\K%EQ(9$Q@6&!,2'ATG
-M($,G%QI'4U]F2#A'4Q(:;%M@6F909U@.$!(:-CXPAG\=)FA_BA06=W%D&19 
-M2147(CL6%DD0'%(Q&U]5$%8<'3H7$1,4#"1$4'):5DU*245"/CLV, 4M@3 !
-M+0$> /3\*Q@;+1@6%!X4%2D>CY[3T]73RZ,8&1@<&AP7$1T;)!Q )14>259I
-M>%A%4F(:&')E;6IS56E:$Q45'T5;2I:&)"EB?(D7&WMO8AH714\;%1HY&11'
-M#QQ0-A]A6!-8'A\[&!06&1(J2E)T7%A+1T9"/SLX,P0N@RLK+@$K 2  ^_4J
-M''^5&B!G<AHH$"J+C,;0S,Z\G1X>&!<5&!(3(1H>)SLL+"DV1U!&-B](31(3
-M8UAA7&I65&89%A,9.2TE=84K95943@PD/TTE(QU 3AP<-%T>&TD;*$LT(DY2
-M%UD?%Q 8%1H<%Q\A'2$@4W1;4U!-24A)2$E(2$1#0 $\ 14 ^_0G&7Z4%QUE
-M;!4G%"B+E,W1S-# FA<8$A84%Q$-&QD@+4$P,"L\45Y00#I34A 0:6)N:W=<
-M7&P6$! 904,W?8<D7U13308A058H'1=&4!86,%@8%D86'48K'$Q,$58<% P6
-M$QH6#Q<9&AX=4'%944Y(1$-$04)!03]!/@$Z 1, ^_\O&7N3%QUI;1(F'"R0
-MF,[4T=;*IAX;%143%A .'!@>*#PK*R]!5VAB4$5=7Q40;FQ[>81C8'$>%1(@
-M5&%4D(\K8%!03 <C15(F'AA-6!L7*%8;%$04'40M'TY/%%@>%A$:&"$;$QL=
-M'" ?4F]534I#/SX_0$-"0CT].@$V 14 ^_4U*6J0'2R4>QL?'1^0CL7/S\;'
-ME!<;%1<8&A,3&QP<)CPO*"TD/4EJ.#$[5A4M/5AC9W!>5V@T'QLB'BP>JE\O
-M:6UA7#]#-%46$"$TB",F.V49($PC("<B'4E+%U0B$Q47$QH<&!DA'1<>'B4E
-M1W5B55%*2$5#0C8V.0$T 1H ^_(O(VJ2&2B5?Q<9&QZ0E<K/S\K,E!49$Q46
-M&!$1&1H:+#XO+#0J15-S03M%8QDK1&5P<GMH8G R&1DH*$(OKV$M9VQ?6CU!
-M,E,3#1XYB!L@-F 3&TL=&"0?&D9($4X<#1$3#Q86$A,;%Q$8&",C17-?4$Q%
-M0T ^/3,S-@$Q 1< ^_HT)&^6'BV@BQT:'1V5GL_6V-38G1H=%1<8&A,3&QP<
-M)SDJ)C4O2UM_345-<"$O3W)]?89P97(V'!LM.F)(OFDQ8V%95#<[+$\1#2 \
-MC2$C,5X6&4H@'"8A'$A*%%$?$!88%!L9%18>&A0;&R4E1W5?3DI#03X\.S$Q
-M- $O 1D ^_-(,!IE(R4=&18?&BZ(CL7+SL[%ER$;%A<9&A,2&AP:)CHO)RXC
-M-#D]$AP9)#A-65%;8&AG6& P(2(B&!H5PXH87&=<86M?/T\6$A<O1R(;/F-<
-M-U(5)!@7'!<A&"<7(1D9%1,:&1L8&1<9'!@D&2<W4V5*3TE&0T=$0 %# 3P 
-M^_!"*AIG'R(@'A,9%RR(E<K+SM+*EQ\9%!47&!$0&!H8+#PO*S$F.3\_$AP9
-M*CQ-7UIF;7=Q8VLS'B D'BLAQHP:7VQ@96]C0T\3#Q0T1QH5.5Y6,E$/'!44
-M&10>$B$1&Q45$0\4$Q42$Q$3%A <$1\V56=,3$9#0$1!/0%  3D ^_A'*Q]O
-M)" @(14:'RZ-GL_2U]S6H"0=%A<9&A,2&AP:)S<J)2\H/$1'&R,>,T12:&9Q
-M>H5Y9FPU("(H+48XU)0>76%:7VE=/4H1#Q8W3" 8-%Q9,% 2(!<6&Q8@%204
-M'AH:%A07%A@5%A06&10@%2,U4V5*2D1!/D(_.P$^ 3D KO8H)HEM*1FUL1L=
-M%Q6-CL#/U,[!EQP5%189'!,3&AL;(S@S*"\D0#M534 Q+B4$&<D?;%Q:83P<
-M&2\;)QV\=1DL.DPK8W\3N" 9'2&X8AX\/R(O0AHK% TS%Q,B&Q84%Q@5%!4=
-M%A4<%!T6&AL9&B M+E-+24A'1$-& 4<!10#[\R(@B6\E%K>U%Q<5$XV5Q<_4
-MTL:7&A,3%!<:$1$8&1DI.C,L-2E&0UE1138L(A86%QLE=EM<9CT:%S(<,R6]
-M>1DJ.DLJ8GX2M1T6&B:X6A@W.APJ010C$0HP%! <%1 .$Q01$ \7$ \6#A<0
-M$A,1$ATJ*U!*2$=&04!# 40!0@#[^R<ACG4J&+V]'!@9%9*>RM;=W-*@'Q<5
-M%AD<$Q,:&QLD-2XF-"Q+26-92CDP)!@8&Q\L@&=B:4 >&30G2CG*@R L,T@I
-M87T1LQL6'"F]8!LR.!\H0!<G$PPR%A(?&!,1&!D6%1(:$Q(9$1H3%A<5%A\L
-M+5))141#/SY! 4(!0 #[^R4=&S0?(1\4'AH50H.-O<_4S<&7&104$!4=$Q<9
-M,!HF-3@F,!QG5'%<7&!C75M33%!376$_&BP9%2(<'Q94<2 J+",I'&TEH1P=
-M'AG ;28?'A4=+1XD%!<V#A<T/!X?%AD5%!D:%QD4%!D8&1P:&147/"XL=%).
-M2DE( 4D!2P#[^!\6'#8;'1\7&A4408:5PL_4T<67%Q(2#A,;$147+A@J-S@J
-M."1L7'5C:&IJ9F9<3DY89%XZ&BH5$R,:)1E2<QTD*B F%F<?GAD:&Q[!9R :
-M&0\7+!L<$10S"Q0N-!87$A41$!,4$1,.#A,2$QD7%PT/-"@I=E1-2$9% 48!
-M2 #[_R(5'SP@(RXG(A,10(B;Q];=V]&>'!84$!4=$Q<9,!HE,C,D/"AO8G]L
-M;7!U<G-J4E)=;6I%'RX;%R0?-"=7>R4E)B H&6@@G!<:'2/$:",7%Q(8*QT@
-M$Q8U#18Q.!H;%QH6%187%!81$185%AL9&1$3."LG<E)*1$1# D8 X?,I*4 Y
-M,QJ.D"D>'"6'C+W,R<[!FR,4%A07%A45&",;)CPR)S@M8&I33EU,/D!/:F9O
-M<V]>E4]$'1HH4S)NM24@0$M32TZW(+,>(QP<LU<<%1,1%R 6%A44$A03.S<B
-M'Q4#&(40(1@1&P,5C1D8%Q4<%U(;<&%Z4E(#2P%( .'R)2(^.R\4BY(E&1HF
-MCI7"SLK/PITD$A(1%103$Q8A&2@^-"D[(T9/.CI//"PR1&)G9WEZ9)=-1QL8
-M)4HM8J@E(#]-5DQ-M!NO'"(:'[53%0\0#A0=$Q,2$0\1$#,N&18/ Q6%#1X5
-M#A@%$HT4%!4.3QQO9(!34$E( 4@!10#A_RH@0D,U%Y.:*A<<*8^5Q-;5VLVA
-M)Q87$Q<6%148(QLD.2\D.QLV0S4P/2PG*SI>:&Z A'.?3TD?'",^%D^.'"4\
-M2%9-3+(8M!X?'B&Y6!82$A 6'Q45%!,1$Q(W,AT:$@,7A0\@%Q : Q2/$Q,4
-M$Q0041]N9H543$5( 4H!1P#J[#0K12LT'519)B(F,H>/O<_+SKFD2Q,5%!<6
-M%146'AHD.S,F-RDR-S)J=GV!GHR,D(U>@F(P045E9H9QQ."RA'M!("]&>L(C
-MOAP>'!*FAA44%141%104$A,6%!4A%Q44$AL:&1,>%1L5%008C1H>&1@R&IR#
-M5UU>7$@!3P%3 );P-"I'+3 745LB'20SCIC"T<S/NJ9, Q'1%103$Q0<&"8]
-M-2@Y'Q<3$SPY2U!L6EMH9E2-:S) 2&YN@UVOQZ*$>S\C,TAZP!^[&AT:&*F 
-M#Q$2$@X2$1$/$!,1$AL/#0P/&!<6$!L2& \/ Q*.$Q49$A(P'9R$7%U<6D8!
-M30%0 /O_.RE--38:66,G&R8VCYC$V=?:Q:I/%183%Q85%18>&B(X,",U%PL,
-M""L>*2<^+#)%3DR7=S@_2&IJ=3M]H'AUA$,;+4-UN!6]'!H>%;>;%!$4%! 4
-M$Q,1$A43%!X3$1 1&AD8$AT4&A(2%143$1,7$1,R'Z&/:&9@7DH!40%2 -/T
-M*24=)$HF(2 <'QQR>X^USM+-N:1#%!88&A<8%Q<;'2$T-B Q'R(?*%557'>-
-M@F]Y;XF!5S\R*UIZ;9.VV[FK+#98?6HMIFC#$Q0<&JE\%1<5%0,4I1,3%!,4
-M&TH6$1,3(2,D&$45$1@6'BLT.5!D&QT@0:JH:F6"9V4!5P%" -/T)R >)D8@
-M'B(8&AIS@IBZT-/.NJ9$$A(5&!46%149&R,V."(V(AP3$3<Q-E1J6D552(.0
-M8$$Q+V-_9GR>P:6F+#5:@&LLI&/ $1,:(:]\$102$@,1I1 0$1 1&$<3#A 0
-M'B A%4(2#A .%B,N,TA:#A$8/:BJ;V6"9V4!5P$^ -/_+!XA+DPC)BH=&!QV
-M@YB\V-[9Q:I'%A<7&A<8%Q<;'1\Q,QTX)!\6%# ?("\[+1XL+GR>;$4N*E^!
-M75EOGX.A,S15?FPIH%["$Q >([B+%Q84% ,3I1(2$Q(3&DD5$!(2("(C%T04
-M$!02&B<Q.$YA$10<0JVR>VR+<&P!7 %# -/Z+3LZ(%4ADZH]%1H:=XNUS\_+
-MMJ<@&!04&1<8%Q<;'R$T.Q\Z)AX<+"-2E[R@@V5Q9'EV6D5&,HAV)G'"V<FY
-M-#YGQXH:D6BG%C0A@5D:&1@>%@,3I1(2$Q,.'%5-%1,0$1L8$@D3&4I&11@P
-M.H-1;&M[;Z"50E7+44,!%0$: -/Y)B\T(E$;D:PY$!@;?I.ZT=#,MZDA%A 1
-M%Q46%149'2,W/2$X(1T6&B)8C[&8>%=E1WN$94=%-H]W&5JPQ;>Y-3YIR8H8
-MCF.D$S,BAE\=%Q0;$P,0I0\/$! +&4]'$A -#A@5#P80%4(].@\I-7Y'75IN
-M:)Z71U/*4T,!%0$6 -/_)RHU*%<>EK0^#AH>@)6\U]O7PJTD&A43&1<8%Q<;
-M'Q\O.!PT'QH1%Q=#>99\7D-(,GF6<$M",8YZ'$&!F8RJ.#EDS8\<CF&F$S E
-MDF0;&QD=%0,2I1$1$A(-&U!(%!(/$!H7$0@2&D8_.A$R0(E8:61W;Z.=2E76
-M6TH!&@$< /OS1FH5(6D:%1P4'!B*<H^FS<S'HZ85&1D4&!(5&!<6-R(T-QLP
-M*!PB.R%6G::=;U]L<GMS6D<F(HUQ14.ZY^3"1REBQI0;OE&^'F02&R$6%1DC
-M'A,2$Q<4$1$.'TL?$Q03&248&!<6%QT6$@X2%Q-G<DE7/X%1/C3#,4X!' $:
-M /OX/5@2)&04%!T0%A:*>)>KT-#+J*D6%Q41%0\2$A04.",X.1TT(A\:&QY9
-MF*.9;6)O0GUU94DE)91L+BNER\S 1R=DR)09NTRW&V,4'2$4#Q8@&Q /$!01
-M#P\+&3L2#Q,0%B(5%A44%1</# <.&AMI8BX]-H)1.R_",TT!& $4 /O_05,4
-M)&\7$R@6%QJ/?YVMTMC7K:L9&QH3%Q$4%186.20I-1DO)1T4%QQ;BXF%95A7
-M)7B+;T\D(YU='Q!]FZ&\4"E@SID;NTJX&6 8(289%!@B'1(1$A83$1$-'#,2
-M%1(0&"07&!<8&AP-!P@3'!]^?4A30HU6.2W.+DP!'0$7 /OQ.B0E*'<=C*9N
-M&!@2:HVQNKF=E9<A'AL4&Q08&A@@%QTU.1HR)A\U2R$YCJZ8A6EO<7Q]8D K
-M(HLG<JBOLINZ6"P6R)L>LTFS'7@8)"L7$A<;&!,6%!$2$1$0'CPE&B03&BT>
-M%Q5+)A84$"(<("@6;2J5?3P=/C##,TD!'P$; -?T-!<A*W(7BZ=J$A82<)6V
-MO;ZAFIHB'!<1&!$5%!4>&!XY.QPV(B8I)AL[B:R6AFUT07Y_;4(J)9 C7XV3
-MD7VP52H8RIL<L$2P&G42(BD4#A08%1 3$0X##Z$-&"86&" 0%RH;%1-))!(2
-M$1\6'BD36A* =CP>0#+$-4@!&P$8 )O_.1<F*7T:BK)P$QH7=YNXO<&IG)PE
-M(!P3&A,#%[D@&1\J-Q@N)R<D'!0_A)>!>&5=)'F5=T@I(Y\9-EME75"J7RP4
-MT* >L$*R&G,5'B44$Q8:%Q(5$Q #$:$/&Q\4'242&2P=%Q5-*1H6$B$1&"P?
-M9!N,@44A/##/,$<!( $: -;R(R<</FX3)RDE&1E66I*>@9>+<W43%A82%Q48
-M&!<C&1HR.AHX(28\4",<6V>)B&%K>WJ!8&XL+X-@,L#-M\"\8R0PQYHLJ3&K
-M%VHQ12D9%!07$Q0;& 02H1$?01\+)1L:)2$=(F@C'R,=,#I%'2=J#I\K'!8_
-M1;5*, $8 1D ^_,@(1Q!:0TF*B$3%U9@FJ.%G9!Y>!04$@\4$A42%"$:&S8\
-M'#LB,"PG&QY;9XJ.:G!+?(-K<"LRCF(GJ+&6HK-B(C+)FBJF+*T88R0Y(A,1
-M$100$1@5#P\0$ X9(PT+(Q47(AX;(&8A#Q@8)28](B]K#:(P'!A#2KE,+P$4
-M 18 ^_\H)"$_=! E-2<4&UMGH*6 G))V>!<8%Q$6%!<5%B,;'"<X&"\E-B8>
-M%2)45'1[8%DN=YEU=BHPCVH,<8-B>;-N)"[/GRRF*K$;8B<\(101$Q82$QH7
-M$1$2$A <' H0*!@9)" =(FHF$Q@5&AXY)S5L#*0U(18^3,5'+@$9 1@ ^^XB
-M%1H:D2LJ)R<8(GE0DXUND'=N;1 8&!<9&1H:%R 5&3 W&$ <$5Y<)ALSG8MU
-M77!Z?H)-?B$O@HUBJ<#HD[UW(3_'H3$R+U892!4B(AP4&!42%R 7$A(3$A,8
-M0S 2%2XJ,R\Q)AP_/F<L374=%4HY%9\L&Q5&2)X;&@$I 3  ENT?$1L=CB4I
-M*242('E6FI)UEGUU<Q$#%+\6%A<7%!X6&C,Y&CX?%TXM&QXTFXEW9'5/?(=:
-M@B QCI58E*C-?+=V(#[)H2\O*5@:0@@6&A83%1(/%!T4#P\#$* 2(Q8/$24D
-M+2PO)!H])5$>,U8,&5P^$YTD%1=,3Z(=&0$F 2X V/DG%AX=FB@H,2H5(GY;
-MHY1ND7IN<A09&188&!D9%B 7&R<T%C@A'D8D&B FAG-A6UXN>)QGBA\OAZE0
-M9'F;6[R"'SO/J#$O*EP=0PD=(!D0%101%A\6$1$#$J 5'1$1%RDG,"XQ)AY"
-M(DH4(TH+(6%#&*(J&A5)4*P9& $H 3  ^_DG%QYTF!4OLYD9'A)!EGYF@VIE
-M91<=&Q@;'AP8&AH8&2\[&3P='S!L)!XTIZ1Y3V]\BW)6C2,=AI*WO-CB2(.3
-M(5#"J3H\3T,>@!H<'Q87&1D=0"(<(A$6$Q(9/58V(6='+R%^3A@F)#% @Z V
-M%B8=%J4N(Q1=&"P7%@$K 1@ ^_HC$1UWEQ,MM9<3&Q))G8-OC71O;147&!89
-M'!H6&!@6&"\[&3 F%BDV%!\MI)UT4FI5>8!@DB(;BIVJHL3-.X.8'DK IC@[
-M3D,=?AD9'!,4%A8:/1\9'PX.#P\0(BH<&$P^)QJ!3Q8B$B,U;8$D%BT?%J<H
-M&Q)C&S$8$P$M 18 ^_\K$AQYIA4INYP8'1=%J(5EA6QG:1<:&A@;'AP8&AH8
-M%R@R%#4B(!TA%B(ABH)=1E$M=)%SGB$?DJ>9=IBI*HB='DO%KCHX2SX:@A@9
-M'!,4%A8:/1\9'PX4%!$2&"(6&%1 *QN#4AHG#1PR9W8?'3@C':TK'Q1B&S,;
-M%0$I 1@ ^_<_)!<BIAL>$1,='(U!D'A>95]@8!@<%Q8:'185$AD7&2T]&3P>
-M&1EA)Q\=2J1\5FAW?6UNGB(?A96O:>3<)W][)&"]NS$_/5<HCQ07'1,;&"$A
-M1BTC+146$P\:/%1*3GJ'%1X,3!<?2%9<JG87$B$:%*$7%P]=F#H=' $H 1@ 
-M^_@['A8EI1D;$Q$7&8U)EWUE;6=H:!86%!08&Q03$!<5&"T]&3 H$!(I%R$:
-M2Z%X5FE8<H!WH!\=BJ&B3\_*'86 (EN[N3% /5@GC!$4&A 8%1X>0RH@*A(.
-M#PP1(24G-51^$!(-314;0E1<HF\4$B4:%*,1#PUCFST;&0$N 18 ^_]#'Q4E
-ML1L9&18<&Y)%HG]<9F!A9!@9%A8:'185$AD7%R8T%#,A&@D;&R<8-(5D35(S
-M<9>%J"$?C:B1);.U$XJ#'EF_O2PT-$PDE!D6&A 8%1X>0RH@*A(4% X3%1H<
-M,F* #1404!D@0U9CIFX6&3$?&ZD4$P]BFST=&P$M 1H F?=(*B PMADGJ;<<
-M$AD;CWDX.R\W6A@7%1,#%=\3%!D9&"@Z%S@A(BUE1C(^,J2I=6-YD'Z!JAP>
-MB(QFB.6C7H&4+SJPP6EG>XF1HQ46'1,:$1D@(2(<'!(5$A$;-E!*-WR%&B<;
-M428O)1LJ=S59%!(4$HT8&!=8FS,?'0%# 8, F?A$)!\TMA<DJ[46#QDCEGX\
-M/S,[8!81$A$#$X(1$@,7VB@Z%RTK&24M-3A!.*6E=659?("!IA8<CIA9;<^.
-M5(2:+36NOVEH>XF/H!,3&A 7#A8='A\9&0\-#@X2'B,E&4]Y&!H94B0K(Q@E
-M<#96#A 2$H\2$!5>GC(<&P%* 80 F?],)1XOOQDDL[H;$1X?H8 T.2TU71@4
-M%!,#%=\3%!D9%B$Q$BTC(Q\?-C<_,YF9;D\S=(B&K!L>C9U(1Z]T1(29)S"P
-MPV1<=(21J!@5&A 7#A8='A\9&0\3$Q 4%1D;%&5^$!H=52@P)R(R>4%@$106
-M&945%!==GC$<'0%+ 8< GO(^(QIWM1H6'Q@9(H8DC7PT*QLO41@7%144$Q05
-M% ,9VB<U(#\:&2=N+R(J)C9Q3V.&<WIWMB,>AI1K@X!80BF>QX[%NU[#0LM<
-MDADH'!8:$R$F*QP>&!,4$A,A,$M!.WE]-BMY0Q8L2$0_AE2=&Q@3%X\.&!9@
-M9C<A% %* ;D ^_4Z'!EZM1@3'Q83'(8KE($W+1\S6181$A,2$1(3$A<7&"<U
-M(#<>%1\V'RHP+39P3U%0.T]HLAT<CY]@;&M"-BNAQHG$O%W#0<E9CQ<E&1,7
-M$!XC*!D;%1 .#A :'"$='$]P-2!Z1!0H0CLT?%.9$A41%Y$+$A=F:38<$@%2
-M ;H ^_] &QAXO!H5)AH6'8LJG8,O*!DM4Q@4%!44$Q05%!D9%R(L&S46'1DD
-M&28M-CMM1C ;&SA<NB(@C:)32T<A(2F?PX3#OUJ^/LUAEQDE&1,7$!XC*!D;
-M%1 3$Q(;%1H6&V9S*A]]1Q@M1T5#A&&A%!,3')<-%1AE:S4:% %4 ;T F/!3
-M1BL>K1<95545&QTBB8(L)B,N31H7% ,7 Q3=%AD7(S(2,B 3+&4S&"4K'3R$
-M9(6+EGVR)!R!E9.KLF5*@J38F*N\N->TPFZ!+1T?%1D/7%4F(24>%!03$A<^
-M44(\.G)>:HY+%C C,CA_2Z 9&1@6G1<6&'B1-B07 4,!O "8]D\Z)2"N%156
-M61<<'"F4B"PF)C)6&1$1 Q3@$1(2%!<5(C,2-1$8(3 A'RHZ(D>(0E= 3F>N
-M'QF0G(ZDHUA&AJ75F*J_N=.VPFZ"+AH<$A8.6U0E'B(;$1 /#Q0F(QT@'F9>
-M;9--$B@=*S%Y2Z 7%A(4GQ,3&8&6."(8 4T!O0"8_U4U*"2Q&1IA8QL=*BB5
-MAR4?'BI*&!83 Q;@$Q04%AD7'R<++0\;%QD>(2P\)TJ"(RP<+4G &B.0GHR9
-MET<ZCJC=DZG!NMBZR7.%+Q@:$A@-6%$B("0=$Q84$10='!0<+F%9:Y51%RP>
-M,CI^5*D<&!,9I1@5&H&9/"89 5,!P "8\'8A$8*F'!QH9!4=*ADS/BTG&RI'
-M'1H6 QG@%185%AD5(BX7,"43*6A(0R$C,RLZ8H61DW>I&AQ^E&ZXU28\HZ32
-M@I_ LM6ZQ'F%'1P:%!@6$$$@*"8A%103$!(]44 T.7II9X),(T!+$3B-6ID<
-M%Q@9HC,;)79U,"$4 4$!Q "8]'8:#H2G&AAI9A4;)R ]0BTF'2Y0'!03 Q;@
-M$A03%!<3(2\7,Q88'C$S1B0K,#,]0%=&2U^E&A>0H'"URQX[J*3/@I[%M-*^
-MQGF&'AD7$145#T ?)2,>$A /#0\E(1X;(&YI:H=.'SA%"C&'6ID:%!(7I"\8
-M)G]Z-B8: 4P!P0"8_WT9$(BJ'AUT;AH=+Q<V.B8C&2E&&QD5 QC@%!85%AD5
-M'B,0*Q0;%!DO2"0M.CD_)"P>*D2W$R*-HWC!TAPXM:G9?9O*NMS(SGZ)'Q<5
-M$1<4#C\>)R4@%!84#P\<&Q,6+VED:(E2)#Q&$3J,8Z(?%A,<JC0:)W]]/RL?
-M 58!RP#[\946'#.R%!X?&" B=R")?$!"0$%%%!H6%A<8%187%AD8(2TG,204
-M(&LU/D J(BTV6820DF^A&B!^EUO9W#9VQ)[/DH._L]>[M85M+!\;%QD/$Q,D
-M'QT:%1,3$18K13$M8G5I57Y+&5:$?WZW?)T9'2$9I84\+7V5/1,5 2<!O #[
-M])87&C2S$AH9$AD:<"2/?D%"0T9.$Q03$Q05$A05%!<6("XG-!49%3(?/T(P
-M'#0Y-E=&2E*?'AN+GUK9V#1YR9[,DH/&N-?!MX5N+1P8%!8-$1$B'!H7$@\/
-M#A,?)1<726EI6(--%4Y^>'>Q?)T7&AL7IX$Y+H::11@8 2T!N #N_Z$:'C>V
-M%A\>%1<4=QR*>34Y.3M"$AD5%187%!87%AD8'2(@+!,<"QH90$ K'S8W'RD:
-M*SFQ%B:*I6CJZ#EYU:78C7S(O>#*OXIQ+AH6%!@/$Q,D'AP9%!44$!,8'Q$:
-M6&1D5H51&E)_?X"VA:8$'(FMACLOAIU)&AH!- &^ /OZL"(B'XD-%*2G%1@8
-M(I-C045%2$85'!09&A@5&18<%1@A,2DL+!DA=#@E*C0Y*S!3A(Z5=)@?%W26
-M5]C=*+NCH=&+:LVUU[ZRBEPQ'QT7&1,3%"8A'1<4$Q,4%1LN("(M-3E334X8
-M5#$C+&]$I146%!.G>C@MC99#&R,!(P&X /OZL2(@'XH+$*BK%QD5))9B0D9)
-M34\4%A$6%Q42%Q0:$Q8A,BDL'1L5.Q\F+3LX,S8Q5D1-49@B%'N:5-?<*L&I
-MH<V+:M2ZV<2WB%TR'!@4%A 0$20>&A01#P\1$AH=$1$:+3M64E 43BL=)6E$
-MI1,3#0^G>#8PEIQ*'B$!(P&U /O_O"<D)(T/%;*W'QP?()9?-#@Z/D,1&Q,8
-M&1<4&18<%1@<)B(E&1\.(1HG*S0U+S$<*Q8N.*L:'GRB8.7K+L"PJ-R&8=6]
-MW\N\C6 S&A84&!(2$R8>&A01%!03$A<:#1@E)S94550942XB+FY-KA@5#A2L
-M?#@PEJ%,'B,!* &W /OMH20=@+$0&18D%QIF')X^/T)$2$P6&1H:'Q84%Q4=
-M&Q@@,"0N)R I=4$@1BY,*!U,='V4;ZL@&W&=.]O='97'MM":7LBPT+BOI$T=
-M)!L8&A,6%"LN(!L8)C= 32D;,692.TU;;&@=3B(2+FY3I!<8&AXK&1H9G9Q!
-M/4,!1 %S /OQGAX:@+$.%A8D%1=B')T]/T)&3%,5$Q87'!,1%!(:&!4>+R(J
-M'1X=.B8E43M9-" O2C9+/Z\8(72C/]O<()?'N<^97,BRTKJSFTT@'185& T0
-M$2DK&Q83)38_3"88,6A4/E)@<VH92AP*)F93I!45#Q$?#Q08G9Y(1$D!3 %W
-M /O_JB$:A;82&!TK&15H%9HZ+C$T.DH4%AP9'A43%A0<&A4:(AHB$R(:(20J
-M43M8,1X8'PDJ(L04)G2H2>KR(I_6N=N85L^ZVL*[I5(B'A07'! 3$RLK&101
-M)#4^2R@6+&90/%=L?W(>4"$0+&Q<K1H7#Q(B%A47HJ9*1DX!4@%_ /OLJ"$>
-M(' 7$J.K%1@<)JV\@55-2TD7%A,;%184%Q4<'1LA+BPK+",Q>SXA,#U+1B%)
-M=7V0:9@A&U"1,M_:*\_0=LZ?2\^HT+>9J"\7/2,8-S$8;$$F-*(C7DE /EA+
-M5XBAL+.NISTA5WI[@;&?IA<8(" S+BTB)1H4,#,!/ $O /OPI1L;(' 5#Z.K
-M$Q4:*:Z\?%%+2T\5$! 8$A,1%!(9&A@?+2HI)24F0B0C-D563R,L2S9'.9P9
-M(5.7-M_9+M'0><V=2="KT[J>GR\:.",:.B\6;40G-J0E84Q#05M.7(VEM+BU
-MM$,:3W)Q=Z>?IA45&14B%Q<0%0P,,3X!2 $V /O_L1X;)749$:JR%Q,>(;'!
-M=TE#0DH7$Q(:%!43%!(9&A@;("(C&B,E)A\G-4=632$5( DF'+$5)E.<0.[O
-M,-G?>]N?1=.MU;RCJ30<-1X6.#,:<$8H-*(C7TI!/UE.89FWR-'1S50C57AX
-M?JZHKQH7%Q0C&AH3&100-#\!2P$X /OOKA@:<#@4&1\4&1I(.+G;TM3(P)0=
-M&!89%!H6$Q4>'!@?+BTL+R<V=T4A)#9(5QI$;GJ2:Z(L&DB6+-;;,<[/E-"C
-M3\FDS+BXO"TM2)B1-*,MIS>5-' B03) /D1(KZFHH):LHC,=2!4=(T UFA@8
-M%QP9)3,R+R@T,"T!*P%3 /OSJQ(7<#@2%A\4%Q=)/+O;T=#(PYH;$A,6$1<3
-M$!(;&14=+2LK*BLN02L?)CU17ADD1#-).Z8D($N<,-;:--#/EL^A3,FFSKJ\
-MLRTP1IN6.Z4OK#Z:.G8H23I(1DQ0M[*QJ:&XK#<90A,;(3XWFA85$1,,$AD8
-M&!(:(S(!,@%5 /O_MQ47=3T6&"8;&Q5*-,/JX.+9TY\?%1,8$QD5$! 9%Q49
-M(",H'24L)"4C)#]171@.&08H'KL@)4NA.N7P-MC>FMZE2M"LU,#$O3(R2)N8
-M/:DSKT"<.74G139$0D94RLK)P[S5OT,>1Q<?)4(_HQL7%!<-%!T<&Q4?)C0!
-M- %0 /ORLR07%Q\?%B@W'!U$-+7:U]'+QI$?'1TC(",E*RTN,C(Z,S(M,2DN
-M=4LD*41/3RM ;WR/;:<U(2Z5*-W:*,W,;\:K3=&NOK>XR"JZ<J<R>D58?C:9
-M**(D5SL^/%.2II^IJ:2G*SP@*4-%34U&1A<8%!@>'BHK+S0\+!L!(P&' /OV
-MM!X4&1\=$RDX&AI&.+G<V]70S9<@&!LB'2 B*2LL,# X,C$O*C G/S$B*$=5
-M52@D0S)'/J<O)C&;+-S9*<W,<\:K2M.OO[B\ORB\=*PX@4Q>AD&@+ZDK8$1'
-M15^>KZJRLK"S+SH=*DE+4U-(1A45$@X0%1,1%1L:&!P!) &# /O_P1\2'20A
-M%31#'QI$,,/QY^'=V9XC%A<?'2 B)24F*BPR)28J'R4E)"DD)T=44B8/& 8F
-M([@P*S.@-.OO+-;;>]>P2MNZRL7&R2S >K$]BDYEC$2A+JHL7D!#05BER<7*
-MRL?*.SX?+4A*4E),2QD5%Q86%Q85%QHA'AT!)0&( /ORMB8A/B,6&WZ-&B$_
-M-;7<W-+'SJ4_.SDX.#DZ.3I /CP]-"XD-"DZ=$PA)29'-C@P9X!_9Z,W*""6
-M*=W9*LO/JKNO2LRHP,*]R2N_PKLUD2:B,X*75*$U5D!73$"NLHZ?P\"_%!M:
-M'STP/SL[7F%.&!L0*BTM,3=+.40!0P'( /ORO!\;0204&'^,%QL_-[KAW]7*
-MT:M!.CHY.3H[.#D_/3L\,RTN)2HX/3,@)BE-/C<A.SQ /9LX)2:=+MS8)L?.
-MK[^Q2]*LP,? Q2C!Q;T]F#*L/8V>6Z<[7TQC6$RWN9:FR,&]%!Q=)#\O/CH]
-M8&!+$ \4%Q$3%!(U,D8!10'( /O_S2 60R46&HR:(2 Z-;_P[>/:X;(_+RXM
-M+2XO+2XT,BXO)B =(1LP)2@?*2E*.C87'Q >*I]#)RN?,^OO*\_DO,FW3MNT
-MR=;0S2C)T\$YH2NT0XZ@7:Q"7TE@54G#U*R_X=K3&Q]?)CLL.S<Y7E]+%!0/
-M&187%1,Y,T0!0P'1 /OWN2DK2!H9&AXB'1E,/;78U[?1RZ- /S(U-#,R,"\O
-M+C(W-C,M62<D?D\F*B9,5U8G47R"7[,H(QF3*-W<.LC,I[.X3LNPL[W%RBC"
-MR5$QM1MR,+!2F(EH.TE!/%:OS,"_T,,?%A8A*A(S01@A4W*)&#M:03(M.D9 
-M*RH!*@'+ /OSO!P?21L7%Q8:%Q9,/[K=W;W7T:I .S U-30S+RXN+3$V-3(V
-M11XA2#0C*"U78E@6)CI$.:TF'1^<+^+;-\3,K+>Z3]&TL\/(QB7$S%,XO2=]
-M/+Q8GH]M1%5-2&&XT\?*U\,6$!0B+1,Q/Q8A4W"%'10?&AD0%B4P)2<!*0'*
-M /O_SA\<3!P9&1P@'!A'/;_L\-#HX*LY+R@L*2@G)",C(B8K*B<L-1 ?+2HC
-M+"]88UP-#!$>)[(K'B2<,>[Q.<K?N<' 4MJ\NLS6SB7,VELYP2* .;==I9AY
-M1%)*16'&[^#E\-(@%1@E+Q8U0QHF6'6+$A@L'!@3&2<R)B<!* '8 /OPL$4P
-M$Q85%I^J&!DJ-:O(T89E6TLW/SHS-3$M,BXN+R E)RHH6R\?<4L?(ADP0$<N
-M46-J1%@K)QPD(]C<1FK)K:F\3<2OI+^AP#"MS2>62U^L+Y8XLSBC2S)-24*^
-MS\BZDS\6&!@5+!(;)188*$N9/\R_V#P_0VX\*2H!+P'( /OOM#PH%A<3$YVG
-M%!8J-[#-T89E7$\V.C8S-C(N,2TM+AXC)2@Q0!<=.RT9'ALW2$<9+3= *50E
-M(!HB)MS<0V;)LJV^3LJSI<6EO"VOT"B<5&JV.Z(_NC^I5#Y954W'U<^_ES\0
-M$A03+1,9(Q09*$F5"Z*SHQ$>)F,[)B,!+ '* /O^QCXD&!@5%:*O&18E-;7<
-MX(]J74DK+BXJ*B8B)B(B(Q8;'2 O) PA("0:(Q\Y2DP5'!TI'UHH'QXD*.;O
-M0VO8O[?$4=.]J,JQQ"VWWC.A5&K -IU!NT&N5#M64D[7].K6J4@3%1D7,!8=
-M)Q@<+4Z;#Z>VKA0@*6(Z)B0!+ '2 /OM:!<;5D0:&Q0,%A<8*Z;+JS8T.3,]
-M.S<R-"\O-#0J)"0H,"XC72X8<%(H'R,;(BDC)"P?*"<K,#,M.,S3D)C%LZ"\
-M6;Z(2< HR">LQ\!W&[XUHZ,HI3.)-#AD6H._OXX8( \,'!\='2TT,S,H%1A/
-M.[9<NC\_;C(U)30!:@'  /OR<A0674<8%Q41%A08+:;0JS0R.#8\-C,R-3 P
-M,C(H(R(F+BPL.Q,5-S,E&1\<(R8<&R,@'2,E*"PI-<S6CY3%N*2^6<**2,4J
-MQ"2PRL%]),8\K*POK#N2/T5Q9XO%PI$8'0T/*S4T,S S,C(I$Q9,&)QAHALB
-M6S@]'R@!9 '" /O_A!847DD<'"(=&Q03*:O?LC J*RHO*BLI*20D*BH@&!H@
-M*"8L' <='2<G'B0?)"@C'2,C'"@F+#,N-]7HCIG4QZ[&7LR01\<RS"2XV,Z$
-M(LI(K*PPJS>0/T1Q9I'8WJDG*1(1*S(Q+RXR,3$J%1A.%:%FIQPC6S,Y("L!
-M90'( .3T1BDE&QH>("$?'!HA&14KRE)!/STY-#$I)2,C)B$?(R8J+2TI92D8
-M3D4@(R8F)RTS-CE!.4YZJ[Z42MW6=-7(N7:Y(\!1.[]?N"FLRU<NO5\TM#"=
-M7B]G6&E;820;$A85&Q8, R&4+!4D)"$8$Q8D,&/9:V0E1AXOIHD!,@&Z /OJ
-M1B$='!<8%Q@7%A<>&A@HSE(]/3PW,B\G(R$A)!X=(24I+"PU21D9+#0B&B$E
-M)BTU-3,X-E-^J+R;1-W;=-+(NWJX(<%.-KU=L2>RSEDUQ68ZNC>B9CIT9WMO
-M<"D;#A 4%1(2,3<T-!8B(A\5$!,A"BZC.$P902 QG7D!*P&_ /OT5R4;'1D;
-M&QP;&1D@&QHRVDDU-3$O*B<?&QD9(!P7&1H>(2$N-Q$:(BL@'A\B(R@P,C0\
-M/EB&M,&F1^3R>=K9T(+$)L)0-+]?O"N[WF$VR6<_PSFN;#IT:8!W="X@$Q$3
-M&!@7-SLT-A<D)"$7$A,?!C>T15$</ALMG7L!*@'$ /OO)B0E)S @*3 V.$A.
-M3%%US,@^*RTT+RTJ(BL7*!0C(R4I+"\N>S,M04HR/CUJG+W)T<_2ULR_(S"0
-M5=O1=<S'QA^\47R4F\5QN"BKS::Y7#&A2"VU)K-K:FEF,S41(ATB*"4A,!4>
-M1A,3&!,7%A0=/C9SC%U%E3Q)FBP!, &( .'F+BLK+38K.#U"2%M<9VY\S\8Y
-M*2LR+2LH("D5)1$A(2,G*BT];R,F*3,A.#]LGK[*U]?3V-;))"N74]O4=<G'
-MQB"Z3H&6F<=WN":QT*C 9#>H3C2[+KYW>7EV.CD5)!P@ R:7-1H@1Q 0%1 4
-M$Q$:0B=>D6-%E#Q+D1P!*0&/ /OP0C<T/$4X1$Y566MV@X.%X<HW(R,L)R4B
-M&B,/(P\;&1L?(B4I:"<=("46/4-PILO5YNWN[>G9)RB@6.3L>M'8V2._3H.:
-MF\MVP2JZX+#!:#RJ4S; ,L%Z>W]\/#0/(!LB*"<H-QTD2A(2%Q(6%1$8/2-<
-MG6Q*D3-&D1X!* &0 .OB:F%<55]95UE;5%-75EZ[RRX:&!P8+14L'BL9*A8C
-M)"<I*S$Z*4=L9836R<O1UM;9U,_?GLLX-RF.9]S5>,7(QG_#<KYQB+AFLQ^M
-MRW5'+K1T*:A%;F]F:V9<'TI'&1LM.4TX(2(6&AP<'009C!U92%FQ*)JA)RJ2
-M-0$O 38 [.^2CXF#BXF+BXZ*BXF ><K1+146&A4J$BD;*!8G$R$B)2<I+SLB
-M+DDY7\C-T-39V=;6U-N/QSPQ(IAKV=AXPLC*A<=UQG>*OV^W(+'.=TXVNGLP
-MKDQV>7)Z=&8=3$L;&RD\4S<C'0X8&187$P,6C!I$/EZG(YN@)BR))0$H 3@ 
-M^_^\N:VNM[2TM[RWM[VID=CD+!,2%A,H$"<9)A0E$1L:'R$C*2P@(#HI4\[?
-MZ?#U]?+TZ^.-STXR%YYUY?!]RMG>BL]WRGZ.R&^_([O>?T\ZP7TQLTUX@7=^
-M>VP?4%,A("X\4#0?&Q(<&QD:%A@8%AA016"Y+IZ?(RB))P$G 30 ^^-M9V5:
-M6U=85UQ64TL88<7-)QHD(ATL&BT?+AHO&24D*#$Z-4NM6H_?VLO:V-;8V]C7
-MA9=\TT=5+X]OW-)./\G,A+<AKWYLM%%R&Z3+>)VI*"ZUFAV-7&)::!@B%#8M
-M3V=?12XI,AX;E9N>J:JRM;^]6F"O,)HP-'>4,@$E 34 ^_"=FIR4E)"/DX^,
-MD'TO8\71)Q4?(!HI&"L=*Q<J%" B*#$X,$.B/6;,V=79VMG<X.'895%,PT1,
-M*)EUV=-//<G1C\$HN85ROEYZ(*K.>:.Q,#6\GR2596YF=!T?%STS4V5B2RXI
-M+1<9DIB;IJJRM;_.8%FS+9(L,G6)(@$> 3, ^__,RLO#QL+!P,#!OJE&8<S=
-M'A ='!@G%"<9*14H$AT>(RPR*SVA*%W9\/7P\/'N[^WC73XMO5!.'9]^Y>Q2
-M0MCFFLLJOXYWQEZ (K'@A*BU,C:]I".9<75K>2 =&3XP36=B1BDB*A@;FJ"C
-MKK.[O,3$6UBK*Y8Q-G>)) $= 2T A^YA<4-=5EL#5_%210U35\#/,SA%*RLU
-M+"X>,ADP&3DB("TR-C;.U]31U=;9V=/&WY5 CH&*S5<C>HU]ULX?F<''5,$F
-M/74U4S<,!Z#"N$<[3*4])J1J@'Y/*D!F7TTJ0RDR*A\@'"0RB8^1B8:"?7UW
-M*&J[-I$7$(.!.@$R 58 ^_2;GH63D)61D8R1;!M38,?.,3) *2@S*BP<,!8K
-M$S,?'BLN,#3)S]?9VMG:W-?)XYDS5#-3PE 8>)>"T\D=E\#'6<DG0GL\6CP1
-M"J+#O$Y$5*I#+;!XBXE9+3MC950Q2BPT*AT=&2$OC926CHR(@X-])F&R+HL4
-M#G]U*0$I 5$ ^__4S+["O\3 O[_!DBU<8-+=*RT^)28M(B06+!0I%#0A&",F
-M*SC4X.GM\?'S^//A^*,V)1XKP5<G=)^'W=X9F<[89L\H18(^6T$3#*K.Q%! 
-M6K9*++>"E91A+SAA8E,R3"XR(QD;%Q\MEZ&CFY61C(R$*F&V,HX6$(5Z*@$I
-M 4P ^^M2951=8F%>5FD@%2 H3+S6-2 B*2 K.B\=+QHV0S G+S$YR-+4VMK4
-MU]C7T:\<,6\ID8B(S%]G)Y"&ULU!P<N^-AXA)B(<&R,;&&J&F6ZCN" EKGQ]
-M@5M62TI$+C,_.R$S,3,C*2DY9W-N:69@7%A3576W?8N'J8B&-0%! 7$ ^_&,
-MDI:3F9B5EYE%&AP?3\/6,QD<)QTI."\=+AD\23 C(R8SR-;:W]_<W-O7U+$9
-M*6@45SM,O5A7(IJ+T\E!PLN]-QT;(B :&AT8%6>#F7"HO"@RO8^.B%Q103\^
-M,3=#/B(S+RXA)R<X9'!K9F1>6E923F:I=(6$IX1Z) $X 6X ^__%P,_"R<C%
-MRLA@)B(A3\_G+Q<=(QLC,"@8*Q@[1BD9'",VT>CM]OCR\_?V[,8E+V80(20C
-MO5]H'Z*0W=DZQ=[).AP>)R0<&2 8%W&+GG2KSBXOQY^;D5U..34Y*2\^/",N
-M)RD=(1\K8G)M:&!85%!13V:O>(B&J8I_)0$X 6P ^^YD<UMJ9&9G7C\C'TAH
-M.<#5/2,<,SLO,S(6-4,P%R O5,G8V-72T]K2T]&1=#0W?G(OA8F*RG<A&(A]
-MR<N;P\'%-AX;)B$F+S%6%X? O90]/4Y\A6%=3E5;65Q#,BD\&RHZ0S@^.",N
-MU=+8U=K7V-?CSG^Y?H.TK8"+-P$N 6P ^_2>H)V=F9N<CS\0(5!D0,?3.AP6
-M,3@M,3(8-T0O%!TL3L38W=S=W-W7V-64<2XO=&\@3#Q,OW<3$Y*"QLF=Q<3*
-M,Q<8(QXC+2I1%HG O9A#1%>$BV-:1$1'0DD\,"<Z&"<X/S(Z-R$LTM+8U=G5
-MUM7CR7.M=GVQJWQ_)@$E 6H ^__7SM;-RLS-MF ='U9J/]/G.!T9+38G*2T4
-M-44N%!LJ4\_K]/?W]OGP[^JF>3,M;FT>&"$DOGPC$)J'T-^;R=39.Q48)1XA
-M*2A.%9'3T*1,0U.*G&E:/#<W,3HS*B$V%B<R,RLN+!DHVMOAWNCGZ.?TU'BP
-M>H"SK8*$)P$E 6P ^^EN;69I:%MI-T$4'8!\0,3<."4=,AHG(S%#+Q4N'VS2
-MW-S8W-C5UMG45B(?*AX:*QHH@I"(R(T@'W]_PL6UP+^_2RXG(QLD-AT;%RR\
-MM3)WB!T2'$Y586-?7EE&&QT]'!X[+3$T,34IS];5W=[AV]W;NFJPE8&[J&N#
-M-0$P 2D ^_*HF::;FI"2'R(4&XF!2\G;-Q\7,!4E(S5),A@G%V7.WM_<X-S>
-MW]C76B@G*"0A,"(=3$9-PI09&HF$PL2UPL3$3"PG(AHD-A@9&3+!N3N$C2 4
-M'$!%2T=#1D(\&!8W%ADW*2HQ,#(ET]O:XN+EX.+BN6*KC7NUI6=W) $I 2< 
-M^__?Q-W'SL._0#$-'9F-3M;Q-" :+!,A'#!$,AHH&V[=]/GX__CX]_'Q;C$M
-M+"TJ-2@<'2@FO98D&(^'R]V\R-'962@B'Q<?+Q,3%3?.P3E[CRX<#2\U-S(N
-M,3$T%A0Z&1<O'2$C(S KY_+O]_?Z]??]SVBID7ZXIVUZ(P$H 2D ^^ML?&%@
-M7F, .D8P.44N,<'5.2TG,A@Q/3(H+!YDLM/4V-G8VM/8TTXD2"Q;220F4C1&
-MG)F#U9L8&GF"N\6T8\&X92LM/BQ004P_(A_-OQ@<.R@B35A-8F!&'UA$&3PO
-M9#Y%*SLV.RXMT]79W>+>W=S@U7BTFG*QJ7]D- $X 8T ^_6EIJ2AE90-&"HI
-M/$HT-<39.R@D,AHS/C(F*1AFM];7W=[>W]O<TTH;-R)B+"0I/2<M:%A+QIX5
-M%X6%O\BO8,6]9R@G.2I./TP^(1W*O!8:-B0>/S]#4$0S%T<Y&C L831!+#4Q
-M-RPKV-K=W^'@X>'GU7&OE&RKHWU<)@$Q 8P ^__9S=K*Q;T?(# J/$\Y/=3M
-M-B,D+18Q/RTB)QULQ.[Q]O/Q^.[YXE(=+!QK("DG,R<8/3,MQ)X=&8*'R=:\
-M:M',;28B-B9*.T<[(!_6QAH>,2H6+C$Y/3 F$3HN'2LL82PW("PD*R8MY^_R
-M]?CV]OC_YG*MF7&PJ():'P$P 8L ^^MQ<UYK:Q87%1DN+R<5)KK8/B<E+T(N
-M&"<@?+[/U-?4U=78V,O+5%5:;"Z$560D6DE-C9F&S:T[&'A[N,&Q?;V^0A<A
-M*1D:'A4@,3<W0$ B+R<W5E$O-V2;I(I(K4E#SSQ!)#DR02 7R]C8V]W>VMC7
-MD8VPGV6KI7 =-@$W 9\ ^_"KHZ.GA1L3"1,S-"D7*[W;/B$?-TLT&24@?\/8
-MW=_=WM[BXL_%1$%%02"3,5T>,S L5EE-OK X%(1^O,:N>;V]0!4:)Q<8'!0?
-M+S4Q.3D;+R$J/CXJ*$^5J7XZK3]"S30])#,M/1X6T-W;W-O=V=K9CH:KFV&G
-MH6X2)@$N 9T ^_WASMW:K2@8$!@V.3$;,,OM.1P@,4<S'"DGC=CN]_OS^/3R
-M]>'8/"T[)Q>?(%L7&R,2)RPQOJY &8& QM6Z@<;)1 \8(Q,4&!$>,3DV.#<<
-M)B(=+3$E'D66KG<PLCE!T3 U&RP@,1@5W_+U^??V\._OFH2HH&:LIG,1( $N
-M :$ ^^MM<EUZ,S5",QT:&1H<([W7.CE:-1DB*H6-M,O&S\G-T\B=HS;865Q)
-M@B)]8DP_5#1.;8UZR88B%VYQI[ZP7T^NCRLD'S,X+2<>'98]43H;(B0[4$.B
-ML69^WJ=-MT,\QD%$(3L@*"TDS]/5X=S6U\C92XR@I4BBH'<T.@$W :@ ^_"G
-MH)>0(A<D(1<:&1,8)<+</3=:.!PE*HR6O=//V-'6ULF@ICK.1TX^5A^:.T4_
-M,2 R.$Q N8H@$WITJ\>Q6TVJBB8?'3$V*R8<&Y0W2S03)!XN0#NBHE=[X)D_
-MN#T^R#D_(34:(RHAT]C9Y.3=W,S70X6;HT:@GG,G* $L :4 ^_S=RL:N.1XK
-M*!P?(!H=*<[S/SEA-APG+YBFT^_E\.WL\N*RN$;6-#0[.!^Q)4,Z'!8@%R<L
-MNX(D&'=VM=>^8%*PB"$<&2TR)R4>'YDX1B\7("$A,#FIH$U[YI(VPS@YS#<Z
-M&C 3'BPIY^WK\OKV\=[I27R8I4JDHGDG(P$L :T ^^EJ;3@6&QXE0AD7&145
-M)[?-FV,5)!H0%PT?'R0>(2$9&A\@=T/3>RHDABM27GQ.1VQ&3'MTQU\Y%6U-
-M6[RN2H2'438U*RXF%QL?'80V.3$7#Q\P,[O:CE9^WDU+MTP[T#HZ,30S(KA[
-MR74O/]1XC&[41VU(FQ>8I6\Q.@$X :H ^_*CEUP;#A$1+@T4$PT/*+O6HF49
-M(!0.%PT=&!P?)",<&1TB>471:R893A]B-'-5,&(P'SPZM6,X$G907\*O2(6#
-M3#$P*2LC%AT=&X0S-"\3$ALF++?;?4QXVCT]NT8_TC,U+RTJ';1XSGTU1.&'
-MFG?00&9#F166HVLB* $O :8 ^__9P'T=$109-! 6&!02*\7PJVLC)1D3'!(B
-M'R,J-#@N)R(==4/66AH6)AIR'7-6(EPI"R(HN%TW%'129]&Z2HB(2BPM)2DA
-M$QL?'XLS,2L8%" <(+WH?#QQWS<VQT$YV#(R*RLJ&[R$XY$^1O*?K(/?05U 
-MFQF:IW B)0$O :X ^]9S!!48%!85%!<6%A09&*[-6!P\11<4&$\S)#<5%A@9
-M'!M!4$/.6"$FC2HX1BX=,3 Y.61WQH\T&F\O/[BH*36OA'\O(2$D/104*GPP
-M&Q0L93(E1#8K54J/VTE/LT _QS@^1S4R*(2UR&5')<MMB%S&2$)(F""3E6LP
-M,@$W :X ^^Z;'A44$!(1$103$Q(3%++571Q 1142%DLO(#,1$A05&1E$5C?;
-M0R,66AM *1P:'24@'#<]L8TO&7(U1KNE*SNSA'XM'QLB0QH1)WXM%A,N9C$@
-M/C,L0T&0V31 MSI!R3$W/BHE(H*NTW%2+-!YF&3"03I"EAZ1DV@E(P$T :@ 
-M^__'/AP9%1<6$Q85%104&;[H:B5*2AD6&E$U)CD6%QD:&Q4Z43+L-2<0-!M3
-M'1D:%1L=$",@K9(M%G T2,NO*4"[B7TI&QXG2!D1*88O$Q J9S =.34M0#&"
-MW3 VOS4\S2\V/B<E&8>UWH93+=^.J6C2/S9#F"*5EVHE(0$T :T ^^ .(B =
-M'1@8%R$P.$!'5[33>3H9#Q$66FE;1EE4%!T1A:.SK*ND?!\CBR-(,2L5*SHL
-M*3UYOX8K%F0?+G^:%R)\A1P:%A<4'UE7-7Y/?X4X(&9IKKEN0T2%VE)*LCY!
-MR3M*0#LS,;.PQF [3==N?EO(041#D!Y<,FXQ,@$V ;  ANT?'!H>&0,4\AXM
-M-3M 4;G;?#87#P\46&570E50$!D-AZ6XL*2Q8B 96QM3&!P2'3,7%1M!J8(A
-M$V4B-(6<%2> A1H7%!05)EU3,H!1@H@\&V-IK+IW/D.(V#T[MCA#RS1#-S H
-M+;.KTVY)6-QZCV/$.CP]CAQ:,&LF(P$S :H ^_\L'QTA'AD9%B O-SD_5L;N
-MBD4I%A,87&M=2%M5%1X2C:V]N*7"4B,31AE>$QH2%BH5#A CHXHI%68B,XZB
-M%RJ(C!\9%A08,658-(A5@(8W&&-NL+UW.SA\W#DQOC,^SS)"-RTE([RVX(A2
-M8O&/G&G4.#@^D"!>-&TF(0$S :\ ^^@8&Q<4%!(7.D!+1DE-2+G/=AP9%18M
-M2EE*$B$P/QD3J*F$:&:89!H<4!U)*R@:(#(E'C%KJ)M"&D :&D"9&"H]+A$9
-M&BIF2:6^)%V3W'%1/5514%9"21U^VU5#LT\[R3)%23DT);6VSE0[0\]@<5C&
-M2D9*?B$=(&HC)@%/ ;$ ^]<:$@X2$ X3-SU(0T)%0K_7=1@7$Q0K2%5&#ATL
-M.Q4/K[&);&.F1AD7)AA8&!T8&"P6%APZEYL^%CP8'4B>%BM +P\5&RQI4JJZ
-M(%^7WG-/.%I635)-2AQ^V4 TMTD]RRL^0"XL)+:RU%U&4=1L@F#"0SY$?!\;
-M'F<8%P%, :T ^_@8%A@4%1,8.3]*14!#1]#MA" <%Q@O3%M,%",Q0!H4NL6@
-M@&NX,Q@2(Q5<&AT:%B,6%!@BE*1#'$$:&TJA&BQ ,A,:'BAI8K?")6>?XG%+
-M-E]B3UA-2QEUW3PJOT0XSRD]0"LF&<'"XW506^M_BV;403I%?B,?(FD8%0%,
-M ;( ^_<5%1@5%!<8#31'4U)D3:_.?AL9%188% \,'AD3'Q,=,Z:IKKN.>58?
-M2B%')B8:'3(B%"=!4;,F'149%A].(2$E0B%3:8@=;K#+(5*[W80Q(6%L01A.
-M,#MSU5%)MDL\PRU#3C8^([6VR#TV/M%475/'344Y<",<'G:,/@$X :\ ^]@1
-M$0\2$!,2"3!$34=91[72?QD8$Q06$@L(&A4/&P\9/K2RMK^;6U ?)AY6&!T7
-M%"P6#1H:1KDH&1$6%293'R,I1"-1;(D?>+3''52]VGXJ&V5S/!)6,3AQUC\[
-MND4^PRM 1RLV(KFTSD,^2-1A<EO#2#TS;2$:''-_+0$S :L ^_D6(1T4%1@7
-M#C5&4$963,;GC!L5%1@:%A$.(!L4(!0>/[W O,>J2%,:*QQ8'A\9%"43#!H,
-M1L F'A86$B56(R$D/Q]3;HH=B\C6(UK#XH$H('%^.A=8-#IMV3HQPD YR"<^
-M1B@R%\/&UU)"4.QP=F'513DV;R4>('6 + $Q ;  @NDB Q?V%A(6&"Q)/U16
-M/JM>/V19%D2B&"-'@FUE97X<))5X65J(92<<-"A;&BHA*38\(2 N*8,='B@Q
-M'APK,D L*G>7AMH=3\/:+3RUVX<^)&A@4&(\72&,VT]4K4Q!H3="3D0U++BY
-MR#TS0--(4T7&3(EW6E09'FY]0@$V 6T ^]L8$!(5%! 4&BY%-TA)-:Q=0VI;
-M$D">%!]#?FEA87H8*I^!8V"-4QD9(2%A$A\6'BHP%!,9(808&"4N&QTL,T$M
-M+7V>B-4<7,C5*3RWV(0Z&V1E5F=!7R*)W4!&LD9 GCI&2#DJ*KFUS40[1]-2
-M9$K 1X1Q4E :&&IM*0$N 6P ^^TB#Q :&149(#)*.TM).;EK2V]?%T6C&25)
-MA&]G9X >+ZF/:W&20"$9(R!F%A\6'B<M%!07'X<6&2<P'1XM-$(N*WB@CN ;
-M;=WM,4&UXH8R'6IH46E$8R6)XSP\MT$]H#! 238I(L3$V4U!4N1<9U?51(%V
-M6%4='6]Q* $L 6D ^^$G'BPQ.T5*.SE!/# ^/RO'F6A?&A\1;QL_&5<4(V<;
-M&%R#DWB87B,>,2(@-#@V,"PR'QPH*& H'RX^.CD;/$ D'T!?P^ J*\#@(R^T
-MV)I9'REE1UPE8%:0V5)4L$Q$S$%&4#\R+K>SQCTV1M-$347*6;YJIB5FHG"#
-M1@$X 5\ ^]@C(#$S/4I003Y$.BDS-BO(GW!D&!L-:Q<[%5,0'V,7'F.)FGN<
-M4!,;'ADC*RTK)2$G%! 7'5TB(C-#/SP>/T,B(41DR-LG-<;;'R^UU9=5&"AL
-M3V,K9%F.VT-&M49#R4%&230J++BOQC\Y2-!'4T;"5+EDGB%GG&QS+0$P 6  
-M^^(H'C,W04]51D%&/"HR.#+5J'9I'2 2<!U!&UD6)6D='660FXVF/Q49(!DE
-M+2TK)2 F%!,8'%LC)#9&0CX>/T,D'S]GS>HG/=?S)S2XX9=+%B=M2V(J7U&*
-MX3\\ND% RSA!2C$H),.^ST,[3MA'4$G34;9II"9JH7%W+ $N 6$ ^]DV-#E'
-M+" A*S(Y.38V02M<2&1Y&Q<<'!E:'!@<)20@#I D&!I!3B06)S<V+R@L)QX9
-M&A@@)3,].C8V.#$?&QT=&AR%Q-LL+L+<*BRQW9MIKAM+>EDP-TR-TU-1@4E*
-MS#Y*1#<_,K6SSD!#5\=.65K%4KQKGB6BGFF!0P$\ 8@ ^]HX-3<_(1H?*S W
-M.C,M.2A=3VY_&1,8&!56&!08(2 <#I$D&1E'0Q,5%"PS)!TA'!80$0\3&BTZ
-M/3L[/2\<&!H:%QN'R-<F,\?7)BRQV9AFI!9.?5@M,T>(U41#AD-)R3A%/2PW
-M,+:OT4-'6LI175V_3;=EEB&CF&5Q*@$T 80 ^^<^-CD]'ALC,C4[.S,M-RIJ
-M6G:&'A@='1M<'AH>)R8B%9XS)"=..!H4%RDQ)!TA'!00$Q,6%R@\/ST]/S$>
-M&AP<%QB+T.DI-=3O+C&VZ9A8G!-.>U<K*3B#VT YBSY&RS%"/BDU*,&^TT-!
-M6LQ/6%O02K1JG":FG6IU*0$R 8D ^]XG7#ME12PG(BTQ-#-&0#O)MV-H%U]0
-M%B C3%A^+A0U&1H?'Q(C3QD4(B\H)2 E(RLD'1P>(2%*22X@'A\>'B8K/2$\
-MM-DH,+'@)BJLRJ%OKJ$L(RYMPFF1TU)2J4P_OSQ%1S,X+W>RQL7'P<*VP+7+
-M6ZU8CB2>FF1^00$] 7D ^] 61QY,+QT<&B8K,2]!.#C)O6YM%5M,$AP?2%1Z
-M*A Q%Q@='1 I10H1$"0A'!<<&B(;%!,2%!E)2RT?'1H7%A\E.B$[N=4@,K;=
-M(BJLRYUKHIDF'29FMEV+U49$KD4^O#8]/BLP+7FORLO-R<F[Q+K)5JA2AB"?
-MEF!N* $U 7, ^]@3.1%!*!L<(2TP,S0_-CK8S'EY&F!1%R(E3EJ ,!8W&1PB
-M'Q0N/103$R$@'!<<&B(;%A<5%!5(22H<&A@8&AXF.!PZO.<F+L+U*B^SV*)7
-MFY<G'B)EL4:"VT,ZLT,[OC$[0"<N)8&[W-[>W>+0V-'?4Z57BB6BFV5P)P$S
-M 6X H>0K2#(X+" <%QHE,SPW-RQ;8SY&'Q<5$A8A%Q09$Q49$P,AC!(2'2(7
-M'QTC(QT<'P,FR" 9&ALN,QXH*RHP,#$K,B1-2,4M*IW@)2FSRJURBF2%7VQ1
-MI7:"SW1&ED9#O#1"4CDS,WS!BY:(EY^AEZ;#7[A;>2:6C5IZ10$] 6( H=0=
-M.B F&Q46%1@C,3PQ,"A=:4E+'1,1#A(=$Q 4#Q$5$0,?UQ 7$1,.$Q$7&A85
-M&!T;&Q40$14M,!LE*"@N+2\J+R)(2K\F*:+=(2>PT:)GAEQW4EQ*DFB TV<[
-MGC]!NB\[22XH+WR\DZ.6J+&RI;+'7+!5<2*9BUAK+ $T 5T H><C,!LA&!4;
-M&1PG-4,V,2YE<$Q.(AD7%!@C&18?%Q<:%@,DUQ(<# \2&!8<'!<6&1T;&Q42
-M$Q8L+ADC)B J+2LI+QY#1= O**[U*2R\TK-*<DEN4E0^>$YZVV@PH$ [OBPY
-M2RLE(X''I[VPP<C-P<G;6JY8=2>;CUUK*0$T 6@ ^^,A(R,K&A<?(AP:&!<F
-M0R2<K($H'!*M&6XF63638( 2$B,D'!$4,U(>&QT@)"<H(R<F(1D7&!@9)B,_
-M/QP\3XYK@T-CH-LI*[S=(B:HO;E=>Y"9BJ:<GTJ'S%I/54(Y=#A%2$ W,K+%
-MI)"+F96:DI_$=K%>:B20BF*$20$Y :@ ^]D8'!PC$A,=(!H8%A<@/""9KH8I
-M& ZI%6HB53&.7'P.$"$B&@X2'C41#Q$4&!L<%QX=&! 0$1(3(R \/!HY2XED
-M?4!AH]HE+L':'B2@P*E,=82&>)"0C3R$T$U$7CLW<S,^/S4L+K+ K)V9JJJO
-MI+#)=:I:8B"3B&!U, $P :@ ^^TB'1TI&!@?)!X<&AXE/2:CM(DL'A2O&W H
-M6S>99((3%28G'PX6$B@2$A07&QX?&B ?&A(1$A,4(1XZ.A0W4)1K@D)CI>DK
-M+LWR)BFPP+HS9F]N67)O8BB"V$XY7#HS<C \03(K)+O-P+>SP\3-P\G@=*E?
-M9B65C&5U+0$P :\ J><:)A\C)2HP%QL5$Q =0R(Z)A8@&AM+&!4:*!H8$!H6
-M$QHD'!P8*C$B R;/(R0E,#$S&A86%1L;*4,O+S%92!,;.C!&G-@H);;6*2^I
-M>KMBC\IIA(?&;$]ZTE5#*E5 ,S%"44 W)Y'"IY>5E9N8EJ#!;[9.6R6+AF-U
-M1P$[ :, J=P1'QL='R0J$QD3$1 7/!XR(!4;$Q='%!$6)!83#!82$1@B&AD:
-M&AT7 QO/&AL<)RLM%! 3$A02)$ L+"Y610\3,RQ&HM@F*KW3)2VD@K%4B+U7
-M<GV_6$-YUD@X-$X],BP[2#4L(Y"]KZ2CIJZKIJW&<+-,4R&.A&%F+@$R :  
-MJ>D;)B B)"<M&!T7%1<</21",2$F'!U-&A<<*AP>%!P7%ATG'QL>$A87 QO/
-M'!T>*2XP%Q,3$A44(CXJ*BY40Q<7-#%+J>LJ+<GK+3*S?+M D[Y"1T>T8"YN
-MWDDM+$T[+R<Y2C(K&YS,P[Z]O\;%Q,3?<;-162:0B&9F*P$R :@ K^PV+R$Q
-M+"@U(!P5&",F1B49&!@;#Q@7%Q 8$1D7#0\0$QD@(!H6(RDB)B8H,C<E QW)
-M'!H:(BPF'&$S3RPA1!X?)1==M]<H'Y_.+"ZS<+E<DLE-58?*=U5$:%A$$BD]
-M&C!!3SY *J*\E8N'?7M[8'/-8*Y%2Q]^9V-L/0%$ 98 J=LL)QLL)1\I&AH3
-M%B$C0",3%1<6"Q03$PP4#143"0L,$1<>'A@<'B,: QV#*S$? Q?)%A07'"4:
-M%EXP3"H@0AL7'!9?O=HF(:;+*"RW=[52D<0]08',:$9";$LY&R0Z&BL\2#8U
-M):*WFY23BXB%:'S28ZM%11M_95]=)P$] 9  G>4T+1XJ(R$N'QX8&B8E02<8
-M%Q84$!H9&1(:$QL; Q';%APC(QTC'"@>'1T<+#(@&!H:&1<7'28=%UXP3"X=
-M.AD5'!-CQ.HJ)[+C,###;KL_D,(W.7K4:#P\=$PN$2(X%28Y23(T(*O&K*JH
-MGY>7>XKG8ZM*2""":61=(P$\ 94 ^^<L0#\L'Q]'+"XS5EPX,B0?(A\B)Q\D
-M)B8@)2,A'!\?%1TB'QX<(C(I)R\I)QT>'AT@)"8C("4\6BL1&UUW0!HE1B=>
-MLM$O)H*Y+S&YA<!9D<5-2G[1?E4Z2UY*'QLX0$5"43PU*6>UQ[_&SM77U-G>
-M7'$@.R!'&V$P. $Z 8( ^]$F-C,C%!0\)"PT4EDW,B4=(!T@)!PA(R0>(R$A
-M'!\?%1TB'QH<'R$7'BD@&Q$2$A07&QT:%QPS5"@.&&!Z/Q<@0"9;LM4G(XNW
-M*B_"=<%(CL4^.W[6;T([4E$\'1DV/C\_3C0K)&BPR,/*TMG:U]SB7FXA.1U$
-M&%H?)P$X 8  ^^0I,#8C$Q,[*RX_6EDT+28B)2(E+"0I*RDC*"8F(20D&B(G
-M)"(C(1@0'BP@'A87%Q89'1\:%QPS5RH0&F!X/!4>0QE9Q?(W(XG+-3'.;\P[
-MD,HT+WG;;3(M5%(R&14R.CH]3# E(6N[T\W4W.7HY>KV7&PD.Q]&&EL>) $T
-M 8( ^^\U7S\H.3 C6FZQP&Y83B<>&AP<(1HB)RH?(R8E(B@F+R0@'!\^/XR-
-M*" >(1PA)B0I(RH[+TXE'Q00#!@[$!<0+C-C2,,N)#A:,S:U.\-4FLA95'-K
-MCE,_/F(Z1#]%0T<\0SPW*26@S]W:W.'>W-W:;2DPD24B(5E . $\ 4\ ^],M
-M43 =*B$44&NPN650224>&AP<(1HB)RH?(R8E(B@F+R0@'"$_-6=L%!05%1 5
-M&A<<%ATR*$<>'!$-"1(X%!H7-3A?0<@G'T)9+S2^*\1#E\A*17-P?T! 154L
-M0CU#04$Y0#0M)"><T>+?X>;CX>+8:R8UDB,@'U(O)P$Z 4T ^^$K2"X:)AT0
-M5VF^Q&5.1BHE(2,C*"$I+C$F*BTJ)RTK-"DE(1],/$-4#1<7&!,8'1H?&2 T
-M*4@?'A,/"Q="'A@6-B%-/]<R'#AE-3C*)<\VF<U .6IS?3$T1U8B/CD_/3PW
-M/C G(26BYOOX^OWZ^/GT;28XDR4B(5,N) $V 4\ ^^DZ:"PB*2@H-R/%TFQ@
-M2"8?(A\A)"<A'AHC)",H+QXH,!DH'R1Y.%4[*A\B*B4I(QHX)28?'QTH*A0B
-M)R%2K&LZ)TR1BJDS+K*\02FU6LE6C,-;4C5%E$(Q.%LS-C U+30T,#DZ*28X
-MN[:QK:"6EHY^239(:Q@D8%XZ. $Z 4@ ^]$S7!\;(!\?+A[!R%M//R,@)"$C
-M)BDC(!PE)B4H+QXH,!DH'R)^-S0>&1,5'1H>&!,Q'A\<'!HE)Q$?)!M6LFDY
-M)$>%?:XQ*+JZ/">^2LI%B<-,0S9*A2XR/TXE-"XS*RXQ+3$P)"@UNK2OJY^5
-ME8UX131.;ADE85<I)P$X 48 ^^(T52 <(B$A,AO0V5Q,/RLK+"DK+"\I)B0M
-M+BTO-",M-1XM)"2+1282&!86'AH>&!0R'R >'APG*1,A)AQBPV,>"AYD6J,V
-M+;;,1RG*1-4XB\A"-RI,@R0F04\;,"HO)RDO*RTJ(20UR,;!O:VAH9F32C93
-M;AHF8E@H) $T 4@ ^^,P*C8B$QTP1R_$TFE;3B4>*"(?)"(J'B8F(R(B)1<2
-M&AH8)AUS7$,Z*",F)2$R.BTA(1\@'1@Z&A@A+25$<'JGIX^(1ELG)ZFZ62^X
-M=M%:4<!?62)!DCXU'5=#04!+.T$V%CPR*R TKL[2T-36MJ?8V&AI*R5Z9$LZ
-M+@$W 4< H,\L(RX@#QDL/RJ_R%9)0R$?*2,@*"<O(RHG)",B)1<2 QC8)A9Z
-M:3@I'AH9&A@I,2PB'QT=&A4T%!4@*21*=G21B'!F,%HB(:^Y5"W!:]%+3KY0
-M2B-$@BTU(DHU/#Y).3PS$S8G)B SKL[/T-#2L*/5TV9O+B9_:44K'0$U 48 
-MH.$Q(C(E%!XQ0RC,V5A&0RDJ-"XK,"PT*#(R+RXI*AP7 QW8*QV%=D<R)1X:
-M&1@I,2LC(1\?'!<U%Q4?+R-3A6U72# Z*G W)+;082_-:MI!4,!&/A=&A"0L
-M)4LL.3I%,S<Q$3$D(QLPL]79U^#DP;+OWFMT+">!:T8I&@$Q 44 ^^,J'R4C
-M&AXG'A>>UDY+2#$@'"0?(RPO)RLD("0G%!@9'!L;(B-G+Y#09R4L."8A'Q\=
-M("(F'2([F*%.:$2+KF'GDETRFKHQ+J2O>2.PC<Y5%HA;52A3G$8E3"@\1#I*
-M0S8V,3(Q,#DFK9O$;X6H64'0RXHZ/1V"<2DT/P%8 8( GM$@&QT=%AHC&!6>
-MST,\.BH@'"0?(RPO)RLD("0C$ ,5VA<8(B%M/9/%6QHA,B,>'" >'!P?&1LS
-MD:%/7S>#JEK=@4DJEL L**FN<B.YD<=.%(%-1BQ.BC(C2R K/3A(03$Q+"TK
-M*S8EN*/)>8VK6TO4S8LZ.!Z*>28H+@%2 84 L=XH("$B&Q\H&QFEVD,\0#$G
-M(RLF+#4X,#(K)RLK%14;'!P@*R-R1Z'28AD>,R4@'B,#(<<F'APOFIPV13J3
-MN6'D?D$NF\\W*[:]?2C%F\A,%G]#.AU,CR@?2AXH.S1".RXN*2HF*#0DPK?@
-MBZ"[8U/FXI8U,R&0>R8E*P%3 84 ^]TP,",?)2 S.AHPV41.1C,?("8?,2TQ
-M'1<C(B(D(1\@*2HF)")@6QRN=2XC(1\=("0C(!PC("PWF:REGU5HJ6'.E55#
-MD, X*HZ3C1NS+,5*7CU241]"FSED)4 P3#Q%&AXU,38L*C,[J9'&<'ZM;(G4
-MPC\W1CR 7B@XA@%' ;0 ^\LF+!L7'QHM,10PU#@_."P?("8?+BHN&A<C(B(@
-M&QD:(R8C)"-E81VG;2<<'1L9'!X=&A0?'"4OF:F9ASM3GE[/CDM"C\8S)).4
-MBAFZ,+Y#7#9'2RE(E"]?(#8B1CI"%QDP+#$F)3 ZM)G+>HBT<Y77OCHR1D&-
-M9RDM= $_ ;$ ^]@N,1\;(ATP,1<WXSL_/C,F)RTF-C(V(AXJ*2DE'AP=*"LK
-M+21G9BBR<R8=(B >(2,B'QHE(28KHJ=\7$!IKVC<C3LWCM4^)YB?EA[&.K]!
-M7C0\/!]%E2E<&RX8/31 &1<M*2XA(BXYOJWBC)C ?ZCGSD4O04.-92HM=P%&
-M ;L ^^8T)!H?)2,F*R]>T3X_3$(F'AX;+A@4%A4;)"0Q('5<(R F)B5??I,H
-M'1L<'B =(1<;&4^,3B5)6,7AR2U1V-S8J58T=:Y%)&HFC2>F&F]-)TY@3AH2
-M+ADP)$ ]+1Q,%R(Q-S8O*RL_J9?*=W.M6TG:T\E$.QY:+BM11P$[ <\ JM0J
-M(!(8'AP?'BA>T#4P/CLF'AX;*A00$A(;)"0Q'7)9'QPC)B9A@),E&P,:SAP9
-M'1,7&E**2AY!7,+1MQQ#SMW6G$(C;K1 'FLKCB.M'FA&'T!/0@T %P<D&S0O
-M)AE)%!TL,C$I)B@^M)_/@7NR7U+?T\A .B%?,"U)- $O <8 ^^$R)189'QT@
-M'B=EWS<P1$(M)24B,!D5%QHB*RLV)7YA)"$K+R==?)HO'QD?("(?(Q@<'52/
-M3Q\]5\#3O"-)U>KJITH\=\-+(6PPFRFX*&E$&S=&/Q )(@XI&S$H)!E)%!LI
-M+RXD(R8]OK/FDX[!:5[NY-=%.2-A*RE'- $T =( ^]A&)BA"15\O,RA#STA2
-M1D$?("DJ%QL?'!89'B$D@L-:)!\C*!]C:(5&'!\<(1\D)4>)D:@Q+X5 9+K>
-MT;^SU]O4MU8D>:A6'QN(-2*4>3D\158C.)Z0<4HM/R0B%QXDJS,S/C4N)BHS
-MK)?#=VZ?;'76S)^R*"XP*&8^20$[ =4 ^\0^(!\W.E0F*!] SS]#.3L<("DJ
-M$Q49&!,9'B$HB,A>(AL@*")C9H5('1T<'1L@(DF.E[ Q*WXX9K;6U,.QT=O<
-MM5 D>*U3'!R*.1Z9>3$T-44/'61..!L2*1$7$Q@AJ"XN.2XH(2<QMI_&@72;
-M:GO7SI^R)2HQ)F8T-P$P <L ^]1%(R$W.5,F*!](WD-#/$ D*3(S&1H>'1L@
-M)2@PD==J)R$H,21>8HI0(!\C)2$F*D^1G+0V,'\T9+O<U+VKU.SRN3\5=[I=
-M'AV012.E@B\R+3H()6I1.!@:+Q07&!LAJ"LL-BPC'B4SP++>DX6M;(+DX["[
-M)R\T(%\L,@$P =, ^^)-/"T]*B8G&!LOV4I,0U G(1\D&" ?)2 B)"(F8-)Q
-M(" E(B5B8QFX'B8@#AAG&IJWLZ\S(1]%2L?BV%5<V-_;PTTK-%%G'V,?(R2(
-M-UU,32>89BP>&1TS@'D>(#Q#TC T0#DR*2PWJKW6@W3/5R.%QS-R.S*OD$5H
-M2@$T :D ^\E+,QXP'QL=$1,GU4 ]-DH>'",C%!P=(B B)"(J9M-O'1TE)"=?
-M7A>\'B <#A1C'J"_N+(T'Q<Z4,/7UU]@U-_=O$$D-E-G'6<@'QV',$P]2 MC
-M-A ,$!895U(/(#1!TBDM."XJ)"DUL,/8BX# 3AUVQS!L-#"SET1=. $K 9T 
-M^]5')Q0P'AHD&!DNY$<]-D\J*2TO&B(B*B<I*RDT9>"!)24L*BM?61S()2,B
-M%1EH**_!Q, U(QLW3<GDYF5HX_+SQ3PE/EEL(7$K)1Z3,4$Y/ 9F.1@;'A\;
-M5U(/)2Y#VRHN-BLF(2LZO];MGH780"YVUCAO-36[D$%:,P$O :0 ^]DZ*!\9
-M%AXC'18LQU9/3E$E(D K3(TM(1\D)"$DA--['B D)2=C722-'1TBAYI0'*Z!
-MJ-0R(R-$.;O4T4<VQMS=RDDA*"\]%QH>'B-P16=30C*$'1L6&!X=%D$>'$M)
-MT24S.CH[+3$><J70>V7,-R@UO2I%,3&+?8EO/@%) << AL$U(!(7$P,7\@XD
-MQ$Q 04LB'T$L38\M'Q\D)"$HBM1Y&QTD)RE@6"*1'1<>C)M0(+*#I<\P(1LY
-M/[_3UD\XP=C?PST:*C$]%1H>'!UR/E=%0A96#!0.$!$6!BL5'$-'T1\M,S(U
-M*"X<>ZW4A6VV*1XEOR@_*3&5A(IF+0%! ;T ^\8R'!,;$Q8<'!(JT%- 05 L
-M*TPW6)<T)"8K*R@RB>&+(R4K+2U@4R>;)!HCF*97++Z!K]HR)1\V/LGBXU$\
-MS.?US#@;,C="&2$E("!Z/$<[.1MI%1,2%A07"C$9)3])UB N,2XP)3 AB\'I
-MF''+%R8?QRU$+3B?A8UF*@%% <0 ^^ C&!HA)# [*C19ST5*8%0F&"$_K,H\
-M)AXB'B(EA-"0(R(A)"IB9R*94YR8L)0E)4B/U=@M(B9%0;++W%0U8)W8S$TB
-M6$T5(2$<'Q],4&16,"V!5SQN5U\2?Y,#)DQ+T2$N1SLW+!T9;*+,=&72."\]
-MGBH],C:%<WYC-0%  ;T ^\,<$1 :&R@P)"U1S#L[4TXH%2!%L\\^(ALB'B(I
-MBM&.(!\A)BQ?8B"B6)Z<MY8C(DB2TM,N(!XZ0+3+WEHS69C7Q4$;6D\5'Q\:
-M'1U-25-('2N26CUU86(8@9$&*41*TAXM0C4Q)QH7=JO4@&^]*B4PH"@W*#B4
-M>7U;*0$Z ;< ^]HE&"$A&R(M)2Y5UD([4U,P(2Q.O]Q&*",I)2DSB=Z@*"<H
-M+#!?726P9::FPYXH*E>4WN(O)"(W/;S:XE4U8*/MSCP<8E4:(R$<'Q]82$9!
-M)SVK=EJ8A80KEJ<4-T))U1PL/S L)!P<B,'JE7?5&"PCI"P\+T"@@HE?)@$[
-M ;P ^]@Q)B0M-DX@*C \&$)*658A+2$>@L5-*!TC(R$BA-"4(R(C(R=O:B.%
-MI;2PMJ,K)C6JT-PP(B)%4F'*>WY]:ZC>U%HA(!\A'Q\A(1HW0U]G50P?)Q<?
-M'Q8B&"<BBTM)SS%,'2I',T?9:Z++=FG/."P\CR4T*SM[?X1*, $F :X ^[PJ
-M'QTB*D0:)"HV&#D[2E C+!XDB\Q.)ALC(R$FBM&2(!\C)2EN92&1K;NYNZ,E
-M(SBPT-LQ(!HZ3E['>7U[9:/AS4X:(A\A'1P>'QLW.T];3@,4(0H4%PT:"Q@:
-MBD)(T"Y.'"5!+D/6>*O3A'2[+B4QD"8P(S^+AH-$)0$C :P ^\PI%!LB)3P3
-M)2LY'ST[2E,K."HKE]A9*B J*B@PB=ZD*"<J*R]M8":DP,?%R*HH)4:WW^HT
-M)!XW1F;3>WIU:*[SV$D9*"8F(1P@(1Y&04=63 TK,A4A)QDA&"8@ED1'T2Q,
-M&2 \*4C>B<'IF'_7'"PFD2DV*4>;D9%)(@$C :X ^^8S6#,S/3D1)R]=T4 \
-M1&@E)Q\@-<=;'QT@)B(GB]"B)!\C)2YE:2&!LG9BVJ(E("VNQ-HT(B1 1;.^
-MXW9<8ZS4U5(A(20A'AX?(!PH3&ME73=OE#D?&A8Z458HHEY&TC X-#H\-+O=
-M=JO+=V?3/R,_:"4N)T1L=H-++ $X 9P ^\XK22LV0#L3+3-ATCDP-V0B)!\B
-M/,M;'QX@)B$HCM&B)!\C)3!G:1V,LGQGUJ$F(#.TR-PU(!PU1;._Y&I37:O:
-MT$4:'R(?'!P='AHG1F!;32A=;B(0#0D9)S0AI55%TRTZ-S4Q,+K8?[#,AG' 
-M,QLU9B<L($9Y?8)$)0$U 9P ^]TG.R<V0C\;+"U9U3@M.FDL+B8F/==L)B$G
-M+RTUCMZS*20H*CAE8B*9PX-IY:TI)3B]U.0X)" R/L+,[W%'7KGIY448)"8C
-M(" A(AXU2U511RA@<B,0#0H;+#D?IUE"UBLX-3(P*,;GE<GEGGO7("$O8B4Q
-M(4Z(B)%+(P$U :$ ^] 9'QD7-S4M&RV Q$I'-SDC'B0?'+YP)1T@*B(BA,RN
-M)!\H*RQE9B)A7(.)W*4K(2.@M]\M(1\^0ZZPY'9A7JG.UTPI(B$A'AX?(!PA
-M3EML6DX_3F-O?)I)BUU+DUU0U3<R23D],[C:;*G);F?0,R=.1R8T+TIA9(%$
-M*P$_ :H ^\,<&QLE0T(Z+D*/Q40^+SDB&R0A),-P)!T@*B$CA\VN)!\H*RYG
-M9AYL78J/V*0L(2JFNN N'Q<S0ZZPY6A65Z;5TC\B(!\?'!P='AHC2U)E3T,Q
-M,2<J-E$57SU!E%1/UC(Q2S(R+[?5<:O)<FZ])Q] /R,L)$AJ:X$]) $\ :L 
-M^\0>(Q<?/CDM(R)IQDE -4 N)2LE(,B#,B0G,RTPA]J_*20M,#9E7R-V:HR,
-MY[ O)BNMR.LQ(QLP/+^_\FY)5K+AYS\@)2,C(" A(AXK249:1#DJ,C T/UL8
-M94$YE5A,V3 P23 Q)\/D?L#<AG?4%"4W.2$P(4QX=I)&(P$^ ;8 Q\HW,S!0
-M0Q=-/4JAS4] -D ='B A2,.)'1T@(R,D>,FW(R B)"0]9!YE6:64V:PO(ANC
-MG-<N(RA'/JV6WVM63Z7/UDHI)20C!2"O%T],D8M13%)_3C@S57O)2HM41L4W
-M+)I&0SNSV&RWS8N/VE0H3#AJ03M*HEB'.RX!2 &D ,?$2$) 8U0I7TY:K=%'
-M-2H^'1L@(T_'B1T=(",B)7O*MR,@(B0F/V0:<%FKF=6K,"(BJ9_8+B$@/#ZM
-MEM]=24>@U-$](B,B(04>KQM018J)3T=(>D<N)55ZP3Z)2T7&,"F9/C@WLM-R
-MOM*/E<=(($(S:3TT3*E8A#4H 44!I #'OSXV+TPY##XS/)C92S0M0R8E)R=.
-MT9PF(B<L+C)[U\@H)2<I+CU='WMHLIODMS,G(:ZMY3,E)#DYP*?N8SA#J^'F
-M/2 H)B4%(J\C43R(BTD[0'A&*!Q,><<YBT]"R2\IF#PW+[[B=\G?F9K>-28Z
-M+FA"-5*U79 Z(0%# :D ^\\R5WHL*S,Y/53%TD1/64HG)AXH5LV8(AT@)2,C
-M/\B[(R ?(2<K/QY6;(*:VJ\I'AZA@]0Y(2922JF"V(M6;9C)UD(W)B4@(2 @
-M'R$<15; XV=46X"R[&5PB]A$CE=&RC PCC\X.KG:N*ROK(;70"DQ=9*+>WM:
-M9)0M1P%$ 6L ^\A%;X\_+#I$-$+"V#M 24(D(QXJ7-"8(QX@)2(D1<B[(R ?
-M(2<I/QI?;XB?V:XJ'B6IA]4Y'R!'2*R"V'U(8I3.U#<P)",>'QX>'1\=0U"Y
-MV59"27:IW5)A@M,_D$Y%RRDJB#0P-KC6P;FWL(W$,2$K>)B+>X%@79 J0P%$
-M 6L ^\8N3'4H(#$W*#_*YSL\2T8N+2<P8]ZI)B$G+BXQ1-?,*"4D)BXK.A]O
-M?Y&DZ+HM(R2OD^(^(R-$1+R3YX,W7YS:YC8N*"<B(R(B(2,H1U' ZET]0GVU
-MYU1AC. \CE!"SB@KB3,N+L3FT=/7S)G9(R4F>)V0@(AG7)4H-P$[ 68 ^\\I
-M-SJ+BJ]+O9C,T$]+7T,A)"4P7\.=)ATB*B,@@,C!(1\C)B<H)1Y@>W*?T+XK
-M(B:G:=XU)25@4Z5DW))8:IZ8UDX\*"0A(B @'B 8-,NXTV0S4W6.TEUU<--2
-MBVA"P2TQFD,_-JJ[EIJ2EWK702LW=K<V)5E_BY-R4P%: 8P ^]LJ+CY^0WLL
-MBEC"VD8^4CPC(R0T9LB=(QL?*B0EA\O!(1\C)B,D(1IC@'>AT[\L("BV;=XU
-M(R)51ZMGVXE*7YN8VT,Q)B(?(!X>'!X0+L6TTU4I1VZ.S5%N;<Y'BU]!P28J
-MD3@Z+*NYHJB>I8K(+B,U?,,U(UZ%B(]Q4P%: 8D ^]XM,#A_9J-%JGO3[$H^
-M4STK+S ^<M>L*R G,R\QB=W2)B0H*R@I)A]SC'JGX<HO)2S$=><Z)R121+IU
-MZ95 7*.?Z$,N*B8C)"(B("(7*<J\W%$A0&R7W$YL=]U$AF$^QB<KDS<W)KC-
-MM\2[P9O4+B$YC=I!)V"$B)1P2@%5 8< ^]^@T=)1,SLH>93$U%=$8&$@("0O
-M<,"U)ATD*R4K@<?#*2$>)289(!M!A5NARLDM)2>H4MLW)1Y.2IM.UZI87U=Z
-MTEH[(B,A(B A)!\A+$Z:S6(]4V6&W%A;7-!(@VA-V34UFTA%/JBNBGV,E'+/
-M/B> ?<4]'B);;7!]>@%I 6$ ^[M.9)Q(&3 N?8G(VD\W4UHB'R,S=\6U(QLA
-M*R8PB,K#*2$>)2(5'!=$BF"CS<HN(RFW5MLW(QM#/J%1UJ%-5U=ZUT\P("$?
-M(!X?(ATC,4Z>SU,S1UZ&UTQ46<L]@U],V2XNDCU -*FLD8B4GW_#,R9_@<L\
-M%A]>;W%^? %K 6  ^^B(IL=<-4<UB9K4[5,W5%LJ*R\]@]3$*R I-#$\BMS4
-M+B8C*B<:(1Q4EF.IV]4Q*"W%7N0\)QU .[!?Y*U"4UZ!Y$\M)"4C)"(C)B$K
-M,UVHUT\K0%R/YDE28]HZ?F%)WB\OE#P]+K; JJ*JN8[*,".-D]Y*'"%<:W1_
-M=P%G 5T ^]9IV-U-+#) 9WVZS$I 1%P?)R@F?L6V)A\@)1\E>;W!)" A'1L5
-M%AHRED:>S,LL(RRG2=DU)!LQ49%!U+-189&)UU%&)24C)"NL(295:WM8T&8_
-M6&-TWU186=12DWM)Q#HRH3] -)V<=UTU>V#(02Y:.2HV(SAV<I5C<0%3 4\ 
-M^\5(M>)((B8U<XV_T$0S-U4A)B<JA<JV(QT=)2 J@,#!)" A'1<1$A8UFTN@
-MS\PM(2ZV3=DU(A@F19=$TZQ(6Y.)W$8[(R,A(BFJ'R1@>X=CTE<U3%QTVDA1
-M5L]'DW)(Q#,KF#0[*IZ:?60[A&B_/S-;/"PT'3=X;99F=0%6 54 ^^9NW/M5
-M*2DU>I7+Y$<S.%8I,C,TD=G%*R(E+BLV@M+2*24F(AP6%QM%ITZFW=<P)C+$
-M5>(Z)AHC0J92X;<\5IF0Z48X)R<E)BVN(RAM@YYPVE,M15I]Z45/8-Y$CG1%
-MR30LFC,X)*NNCG!"DGO+03AF/BHV(#9T:IEH< )4 /O61]+74R4F0F5WN\5!
-M/E%.*!\H*(;$PB4@(20D)V/%OB8@'R,3$A47(J ZK,/0+R0RI#O:/R0?,4Z7
-M)-"^46.+E-E;2R,E)U1D42(I)$1<A]-J75M@:]Y284'24'1O2YP[,JM$-SZ1
-MH5I18V)GN,B\7Z$I.R&(:EUO=U8!2P%) /O;4=?.4C$H.VZ%O,D_,41'*AXG
-M+HW)PB(>'B0F+6G(OB8@'R,/$!$3)J5!L,?1+R(TLS_9/2(;)D.<*-&Y2%V0
-ME-Y00"$C)5)B3QXG)D=8@=!@5D]::]E&6S[/1G-H2IHV+*(Y,C22GU]7:6IK
-MLLR_8:$C-R2.;%5P?%D"40#[Z%ODXEXT+$1ZCLG=03%$2# J,S>8V-,J(R8M
-M+C9NVL\K)20H%!06&#"R0[K3W#0G.+])Y4(F("-"J#3>QCQ6E9OK4#TF)RE6
-M9U,C*RI'9X386$U(573F0U1&VT!P:4>>-"VF-B\NG[%K7&AN?</6T7:J)#\F
-MBV=1<7Y7 5 !4P#[RE/2RV$Q.T%[;JW$34Q:/RLE)22#NKTE'R(C(1]5KKLC
-M'QTC(QPA*R"A<*>\T2TA,Y1%V4@G("<TA#+1P&)5C9S0848K+J<V?)DE(!LJ
-M+A_*95Y<7VC83U0TQDU&8DU/,S"L344[4,6.@J9C/D(G**(G*4EYF6AX?HU_
-M 4(!4 #[TUC2T& J,SB"=;+,1CU+-B@E*BJ+P< E'R(C(21;L\ E'QTC&1P9
-M(22F>ZO!TRT?-:1)V$0C'!XOA3K4N%1)CYS453LG*J4V>Y(='!TM+AO%85=0
-M6VC30TLRQD%'84A+,2VD14 Q4L2-?YU=-STG**<E($>$I&QT=HB" 44!50#[
-MXV?AY6PQ.3R+?K[@33M).C L+R^/S=(N)"DJ*"=DPLPM)B0J(R,@*!^]>\#&
-MVS0D/:I5YTHI(B MB$#BR4M$E:/F7#HM,*H[AYLA(B,K-R#05TM)4VW>0#\T
-MS3Q*8$-0+2VJ03LI6M"*?Y]6+CLN,;0J($R'I6=L8X:" 4<!6@#[OES,RFDQ
-M/T5:89[%;E5H3B@F(2M@MK\B'Q\F(R4^'+LB'1LD'Q<B*1JN9Z:NTR\@-7]@
-MS&,G(2=$0:?'R%AEB)G-?%(E)Z6*?98F)7-:O;*V7UI@5&S<6TZ$TTH_7$8M
-M&B>]3DM#A]1W8U5=<"\B)$HN'I>>@6UZC&)+ 4D!3@#[R&+/TFHM.#U@9Z++
-M9D170B4F)C%HO<(B'Q\F(R="(+\B'1LD%QL;)B&R<JFSU2\>-X]DRU\C'1X_
-M0J_*P$I9BIG1<$<C):6,?I$@(G1<O;.N54Q.3FS73T6"TSX^63\G&"2U1D8Y
-MB=-I33Q%7"$?)44G&I^EAV]V:%%: 4P!3@#[V''=YG<U/T-G;JS>;4-61RTM
-M*S9LR=0K)"8M*BU**LLK)"(K)2,B+B#.<\.XW38C/Y5PVF4I(R ]1;78T4%4
-MD*#C=T8H*JR4BYPE*G]:Q+:\34))1W'B3#F$VCD]5STH%"2[0D$QD=]7-R<P
-M2!<=)E P'Z6PCFUN5DA0 4P!4P#[NV/&R&\A/4E=746_8$=R1B<D)!UGJL$B
-M'!PC)"H<'\$D'B A'!HC+1>I9:VDU2\A)F)TT&HF)"1%.*?0S&-5?(/ CU,J
-M**.:=)<M(95,P+"M9V!44TW68EB$S4XE-E@N0BO 5CQ#<\Y03VQ6<R8E(5PN
-MOI"#44)]6690 4<!40#[R&S-TG(A.4)C8D?$7#QF0"<D*2-OL<0B'!PC)"H<
-M'\ D'B A'2$6)1VM<+"HUR\?*')XSV8B(!M .:_3Q%5)?H/$@T@H**2==Y8I
-M(Y))O["G85=&3TW15D^"S4(C,4\G0"BX3C<Y=<U#.U0_8APE(5@JPI>(4T)[
-M2V!< 4X!6P#[UWK9Y8 J04EJ9T_383EC0RXK+BASO=8K(2,J*S,A),PM)2<H
-M*"(6*1S*<\RPWS8D,'B$WFPH)AT^/+7AU4Q$A(K6BD<L+Z^KAZ(O*ZI1R[^X
-M6$L_1U+<4T.$U#T=+T\F.BB^2C(Q?=DT)T$Q82,N*& RRJ**3SUS.F%9 5 !
-M8P#[MU3"Q70C+D->*Q[$@F*;9"8G(2%5D+\@'1TD*"4<2+\D'"0F'F-17Q^G
-M8*J*T"\A($AES8 F'B)&-Z?!S5A5=%2TBUTE)YF?AIX?)BM)H*985U946#[<
-M559KPTDW&5%222VY2#8^<\\J)V(P(1T=)5ACS*13/9!F;'Z! 6P!DP#[QEW(
-MSW<C*S]C+1[)@V"78R8G)29=E\(@'1TD*"4>3< D'"0F%5@D,!RK:JV/T2\?
-M(E9JS'TB&AD_.*_&QTU+=E2Y@U(C)YVDBYT<)B9)HJM:6%%(5#_924QIPSTQ
-M$DA+1RJQ0#$V=<XE(58D'2 B)UEET:A3/I!A>(B& 7,!H@#[TFG7XH4L,T5H
-M,276AEJ/8BLN+2MAH]0I(B0K+RXB3\LM(RLM(54@-Q['<L>4W#@D*EUVVX4H
-M(!D^.;73V$-%?EG(B4\E+*FSFJLD+3%"GJUB3$5!3$+E1D)KRC@J$4A)02JW
-M/"PP>]HC'%,I(B(D(EIMW;),,HE><9*2 7X!K@#[NTJ.P(@L.T4A'BZP@T1V
-M>"HE'QY2,[\F&QXI(2,A>[@D'2,D*5]89QRC2:5LS#4C(S8N7(LD'R-(/):P
-MS5I>2R<^?T\>()6^EZ<H)3Y25IPV*UA=7(S88$MAND4W24]-4"RQ4CXW1L(B
-M'; E(R$9*:;&TK5'<E1#T]31 =@!WP#[QU&2R8@I-3TA'RRV@T)R<2HF("!9
-M.<(H&QXI(2,IB;TD'2,D(F(I/!ZH4JIQS#4A(#@T6XLD&1I .INYR5!01R%%
-M>T(;'9C%FJ<H(SQ05)XZ*U%/48G44$%@NSDK04A(3BFI23@U2<(@&JTC'1L6
-M**S+UK='=E@^U]S9 > !YP#[S%RFX9DQ.$0F("Z_B#QF;R\Q*R1;0M P(B4P
-M*"HOD,DK(B@I*U@@/!R]8K=TW3XC*#X[9Y0K'AH\/*?'VTA)3R)0@4(=)Z;1
-MJK8Q)S9,6*8U(DA&4(?C4C=?OC8H/T9%2"FM23$Q2\LE(KDH(!P6);/8XKM"
-M<%(YX^_L ?,!^P#[M3=IM8<F0#8>.HZ@;#18=" B(1\>%,$F&!LB*"8B?KLD
-M'2 H(EYS912H,)=:S3LB'2HL<IDF(B=12HVBRF1@*R!&9S F+97"@FHB)3=6
-M.H,@%UE34X[04TLD-#M,3%532BBU2CL^28T?*"\]2&6'F=;#3&MF4D-0K=;7
-M =P!W0#[NSMLOHHF/2\=.Y"E:"=(9!TC(B$C&,(F&!LB*"8JC, D'2 H(F1E
-M6AFM.9U?S3L@&2LN;YDF'!Y'1Y&IR%I,'AM,7R0B*9?(A6HB(S)1-X$?%5%'
-M2(O,0T$C-2] 1$Y.2"6M03,Y2XL=*"\]1F6)G=S(4&UG5$92LMW> >,!Y #[
-MQ$5ZU)HM/S8</)2Q<"="9B4N+24E(,\M'R(I+RTPD\PK(B4M*U]>6AO"1Z9A
-MWD0B'BXR=Z(M(1Y!1YNUVE)$'Q9392DJ.*S9EWDK)R].-X8<#TM 1XG;13<B
-M."P]0DQ+0B6Q02\V29 A+SA"2&J1J>O56G-H3SY.Q_CY ?X!_0"BLR89D),H
-M/S--1H*)B#I<?28A)!@7$K\D'1H@)"<?<KXA&P,AUEYJ8ARC(Y(VS5@C)2YU
-M0* C(2)0185)TE98+TAR+#XE*HZKDZ8C)$!7'U$E2%A+6&_)23U):S1"2&53
-M/!^B3SLW-5"DS=C=T:E^7,W7Q\K-0V_6U]W> =X!X #[LB,;FI@J0#%+2(B,
-M@RI%;2,B)1H<%+\B'1H@)"<G@,,A&R$A)&!L8QZH+9@[S5@A(S-[1*(C&QE$
-M/H=-SDQ(*49X(3(C)Y&QEJ8C(CE0&DX@0U!!4&S%.3-(;"@V0%Y..AR:1B\P
-M-$JDSMC>U*V$9-+;R\O/0G';WN3E >4!YP"BP"LAK:<P039%1)&:CBQ$<2LM
-M,!X>&L@G(B$G*RXMA\\H( ,FU%QG9"*]-YT]WF$C*#: 3*HJ(!D]/8]9X$1 
-M+DJ!(34H,:' J+4L)C=.&$X>0$P[3FK4.RE';R4S/EQ+-!R>1BPN,4NKV^GK
-MXK^5=^?MT];3/V_J^03_ /N7'Q1NBR Z/T5%?'Z@2%5@)R(A(!5=P"<>&" K
-M)2!PMB(<'BDE96=G':8M>Q;,9R<D0&-(HRP=,TTQ=A[.6%-[5AY:1!PHD:"F
-MKB,D/6 I(Y132')4<Z13.FT[-#5*7TH_,&U'/#Y,-FZ)MES26"LATLLX0DI[
-MSM/AW^ !WP'= /N1&Q1[E" [/T%)@X&@/$!2)R$B)1IBOR4<&" K)2A\NR(<
-M'BDH8FMD':XT@AS+9B4H2G%/I"P7*D,J=B#)34A\6"!//!HFDJ>JKB,B-E@B
-M'HU,06=)<*-#,&HX*"E"6$4]+65 ,3=*,7*+N6+*3B$;U,\^1DU\S]GIYN<!
-MY@'D /BB(QF,I"4^1#=$CH^I/SY8+BTM*AQGRRHA'R<R+"R!QRDA(RXH8&5D
-M(L(_@QO:<BDP4GI:KS$<+#DI?R;62D6'7BA,.AXKG;*\O2PF-58@'(Q*0&9&
-M;J]%*&@Z)29 5D,W+6D_,#5&+WZ@T7786"@@Z>%%3DU]W/@$_P'] /N-(CE>
-M82,W.#XV>V>P/&18)B0D&AQFP"L>'"8B)2%?J2$>'B8C9&ME&YL;>1:]AQX:
-M1TY6JRDF'D@M+B9Q1$M<5%-<0!PFHY:<I"<C-58N>FEE6459/"9+/T1"+2A.
-M0SA$*BU&0#\_*8>JPW_(/R<BUL5!;6&OW.#>W-T!W0'A /N$&CML:Q\Y.C@U
-M@FRT-5)((R$C(21PQR@:&28C)2-JKR$<'B@C8VMD'JD=>!>]AB >45Q>K"H?
-M%4$F*BAS.SM544M2.1@CIYVDIR(?+T\F;UY?435*/"M +S8V'AU&/C4_)"=!
-M.#@Z)I:MT)/'-Q\BT\,_:EVQX>7GY>8!Y 'H /B<*D%]>R1!0B\RBWF^-D],
-M*RLO+"IXTC(@(2\N+B=KN"@A(RPL8F)A(+HE=QC$E"@F6V5BN2LF&3@G,"9[
-M/S543T5,.AXKL:BXMRTE,$XD;%U653= -RT_)R\Q'!I$/#4\)2H_-#8X)J#%
-MYZ/3/B4IZ]5#:%.U^/P%_P#[H"$Y56,A+#4M)'%<G#9M6"XA)2$@6[<L'APG
-M(R8;4W\@(!HD)%MC;2.>&CH[LY@E(44[9+@L("Y<-QDY7#E>7$Q244P='I^#
-MF* C(CM>.7!K;%T]3#NC,3U!+B<X01X=/R\E03<[-CJ"J,%\OCLH)\R^7S]Y
-MVM79X=_> =P!W0#[G1\]86T=+C<F(GEAH"Y;22P>)"@H9;XI&ADG)"8=7H4@
-M'AHF)%IC;!VE%S= M9<B(TQ':[DM&25,+AT_8#-03D9(140;'J2,H*,>'C57
-M,69@9E4M0CVI*R@M(B(V/!L:.BD?/"\T,3>3K="3OS0?(=#!7#UYX.+DY>/E
-M >4!Y #WMS%)=G\B-C\D)'UMK#)623$H,#,N;<DS("$P+R\A7XXG(Q\J+5E:
-M:1ZQ'S=#O:,J*55.;<8N("E0+A5$;#A)14%"/D =);"<M+,I)#95*UY?75DO
-M.#FH)!XF'1TP.1D:-RHB.BLR+S><QNBDS#LA)N7/6CF \?L%_P'] /N-'C)%
-M7!DV)BTE7TRG,F-7+20I'AI[M"<=&B,A(R N4!\<(QHD56=F(Y,J4F.FG"0B
-M3#-OO2<A)4I%>(HC9%ME35)D7R(GEH..D",B,59;7UQKNT\YFR5 /BTF@% X
-M'CY)(S@H-"Y#07N?NFZZB3$DQK=;:=';V]_=I]P!W@'? /N1(CA19A4X*"4C
-M:%*J*E%(*R$H)2*%NR09%R,B(R(Y5A\:(QPD5&=E'9DK5&NJFR C4CUTOB@:
-M'#Y"@(X=7$]7149652$IG8R6DQX>+%!455%ELS\ODQ\U+AX@@%(Z&SA$'3(C
-M+"<^/H^FRX;#B"TBTKU79\S>Y^C>I> !YP'F /NF+C]D=AI ,"DE:%NX,$Y&
-M,"LT,"B-QBX?'RPM+"8Z7R8?*" M4UYB(*HX6G&TIR8F64-VRRDA(#E @I@@
-M6DA-04-,32 OJ:*LHRDD*DE+2U!<MT$IER(K)AHAA4XU&3E!'C4A*"4\/IG!
-MY)G3EC,GY\9/8>'V_O_[P_P"_P#[GAHN/5H6*1TI&T5!LR=U5#,@*B$=7JTI
-M'AHB)2$?(#(;'2(?(U%F92**5T=;F:8F(C\G;K\H(24V.E@@55936%U<9&(E
-M(XZ9AS,@)#%)5V^K9#%!1BA'0B@CAE:&AW\^5B(M/2LX.D)GF*I8I(TJ(\_'
-M4E1=9VQW<GO? =T!X0#[I!XT2F,2*1TA&4Q(MAYD2#,=)R@E9;0I'!<B)B$A
-M*#@8&R(A(U!F9!Z475!FGJ4B($0M<< I'1TO/%T>24I)35)055<D*)>ECS8=
-M("Y#4&>B72LT.A@W,B @B%N.BWPY41TG.",R-3]ZH[MPK9(J(\VZ.3]$4UQG
-M9G;B >@!Z@#[LR8Y5W$8,B8H'4M1R"AA13@G,S,K;K\R(1\K,2HG*C\@("<E
-M*D]=82.G;EQPJK,G)$DR<\LL(R$C.FHC1$-!0T]+2TPA+:>ZI40G)BX\1V.B
-M5"XU-1HY*AP@C&>*AGPW3ALJ-A\M,S^'OM:#Q:$Q*NG'-#]066!K>X[\ O\ 
-M^Y(=+C15$B8A*2 V,+,J67 E)"0<&%RA+1P7)"$D'ADC%!TD'2(_:6DA@48F
-M2W^G(1\R+E^^)2 B(CY93CI955Q56U->*!V.FU=W&R0C/U*GH%I-0CI40B@H
-MFT>1?EC905,H-#0V-D!$4(:31)TF(B/3LWE/X.'BWN34X0+; /N2'# ^6A(C
-M'24>.S>U)DYD*2,<(AYCJ"T:%"0B)!X>*A(9(1TD06EG'HU0+56$J!X<,"Q=
-MOB4>'QTW440R3TE.2E!(4R,AF*5:>!LB(SE(IZ!.2SHK0S$=))U3G(E;T3Q.
-M(R\O+C [05^8HE*<(R$AT*YR2-C9VM;9S.4!Z 'F )JC*#A(9ALK(RLB/D/*
-M+DUG,2\J*R5LLS8?' ,MWB4A*Q8>*28H/V!C(*!@.5^0M28F-2YAQRXC(1LV
-M33XN24)%0$8^22$IJ+AJA2(D*#1"L*5)33@A."@=*:%8IXE=USE+(2TM*BLX
-M/VNMNF.S+R F[+MG1^;IZN;FW/H"_P#[E1PH,%(1(1XB'"@7K3-,<BPC*"07
-M(8$P'AHA)"8>$A<4&B$?)$5L9B5N.1LQ9*PD(B\A$TD@'B$B,4A6.6I28&)8
-M5V8H((TS?0\A($=)4UUM3B])944Q2*Y4GX=1:< Y5B@W,BLV03E4:65J(2 C
-M)=.W7RW9V]O<W^+C > !W@#[E!DH-U81'AH>&BL;LS5'<"XB)2H=*(@P'!<A
-M)28>%!H0%AX?)D=L9!]X0A\[::TA&R@>$DL@'!X=*D!,,6!&4E=-3%LC(I8\
-M?@\?'$=$2U]M0BU!4C8H2+!;K(]8;;TT42,R+2,O/#9;<VYQ(!TA(]:X72W=
-MX>'BYN;J >D!Y0#UHR,O0& :)B D'BTCPCE";#8N,3,D,9,Y(1\J,"\E&!P5
-M&R8H*D5C8""*4"M%=;HI)B\<#U$I(2 ;*3Q&+5H_24U#0E$A*J1*B1@D(5!"
-M16=R/2\_12PH4;1DO:-7:+\R3R$P*R$M.C9D@WY\+B4C*/#%5S+Y"/\ ^)4>
-M)B5)$R <&ADF&ZLL98PS*2,B$C)!(A\9(1XA'A$6%A,@(B4J<&\E8T<E-$NT
-M)R0A)&]@&!H9(QY,82Y<4EY26EE>+AY%=1DE(B)AC4Q3G4TO1%PR6)Q0J(9Z
-M1E=P/E8O03,H*$ E&#9$'R,@(230FW9/W>#AY /B N8 ^Y$:)"M-$QT8%A<E
-M&; O88<P*"0H%CE((AT6(1\C'@\2$ \=(B<L<&T>;$XF.U"U)!T=)W5D&!@6
-M'A=$5R921E!'3TY3)1U,>QDC'AQAB498GT$M/$XK6IU6LY*#2EMR-T\J/"X@
-M(3HB&CI%'2$>'R+4G71-W^'BY>GIZ@+K /B@(BDR5QPE'AX;)!Z],5F".#0O
-M,1Y"4RLB'BHJ*R44%Q44)2LK*F=I'WQ:,41<PBPF(RE\;B$=&!P60%$B3#]'
-M/45$22<I6(0>)R,A<(Y!7:,\+SI%*F"H6\"ECT)3<#9.*#HL'B [)!Y"4"$E
-M(B,FZ:-L4O7Z^_X%_P#[C1\@($ .'QL;&B9,IC)N52LG("$3("T1)ALB)2 C
-M%!X4$QX>)3AR:2%94"<O)[8L(C%[3PT@)S4>+%5F5&!-66987&4G)6<1)"$@
-M'8S;1E:20S-7)8:C6IQ^BUQ)-%!'6B(_,2LP1"DC,KPK(1\C)*MO:2W8V-W@
-MW^?F ><!Y #[B!@<)4(.'!<8&R1,IS!H3R<H)"45*#<3)!DB)B @$!8.#QP>
-M)3IR9QIB52<W+KDI(#:"61$@)3(9)4U<2E1!2UI-45<>(FL6(AX<%HW805N4
-M.S!/'XFG6J2+F&5*-U1"51TY+"0G02<A,KDH'B C)*MP92G@X^CKY.OJ >T!
-MZ@#YE2$A*DH5)!T@'BA3M#)A2B\S+B\;+C\;*1XK,2DH%AP3%"$E*CAI8QMN
-M83 [-\<Q)3N+:1TI*C07)$E61$\Z0E-#1DXB+'4;)B A'9K@/F"8-3!+&HNQ
-M8ZJ:IV4\*T] 4ALZ*B,G0RLE.<$J'B$H*;IS72_V_?__^P/_ ?T ^X8>'APV
-M%1H<'6FE/D@I3DTM(Q\B%AL8$"(<)"(D)A44$AHB(B4M<60A0V$A.ABR*A]S
-M%1LA'R$E(2I376->75)N9V-F+2,?(R8<&12TUDI.CSQW66E\=*6-A5A)0S8[
-MA5$J-2@O+SG@+AZ:'"(JF93(J=/CV][>W^+CX@+C /M\%QL:-!,8&A]NJT-*
-M)TQ(*R,?(A(@)1(>&B0D(B(1$! 8(" B*W%D&T]D'3X>MR<@=18='1PA'1@A
-M2%%33DU"7UE66"8?&Q\D&A<2MM%$4I$Y<%!H?WBKE(Q<34(U.XE/)"\C+20\
-MX2@<FQD<*Z&9R:W7YN+GY^CJZ^H"ZP#UC2 ='SD7'!XC<[104BE$0S J)BD8
-M(R46(QXK+"<G%A44'"0D*BUH71Y6<B(X(\0O(WTC)2(D*"$8(4=.349%.EM/
-M1T\G)" D)AX;%[K>15J7.6]097^ O)^79$<W*C2#224R(2<C.N0K(:8A'RZC
-MG-:YX?C[!?^!_@'_ ?X ^W8<&14J%A@:2BDL/D(C36$E)!\E%!85$Q09'R0?
-M(A,8("0A(2(F<&HA.UX:11E<'R 6'B(D'!L?*D-/75E176U98E]A/"<?'WPD
-M&1F6I$I-BD;=X9A7HYUT1D)&-T*5-3\^&S@]-DO5+1@P)1<=9'''K]O5V=W>
-MW^+CX@'B >, ^VP5%A,H%!884"\N/$ @25LC)!\E$!<:$1(7'R8?(!$6("0A
-M(1\D<&H;1V$611IB)!\2&A\>&1L7(CM%44M#3U],5517-B,;&WDA%Q>8GT52
-MBD+5VH]4K*E[3$1'-T*5-3TX%3,[*T[5)A<P(1,@:G;0N.3>XN;GZ.KKZ@'J
-M >L LWT>&!@M&!H<63@T044B058H*R8L%AH<%18;)BXF)18;)2DF)B<F9V,>
-M3F\;0!MG)AX7(@,AOR(;(#D_2D(Z1E8_2$E--R@@(($I'!N>KD-7D4CCY9%<
-MO+Q]23\Y+CF.+C<Y&#$U*E#<)18W)Q@>9WG@SOSX_ 7_@?X!_@'_ )]G'Q06
-M'1,8&!H?/CM!(59:-"(D(Q05$Q00'APJ'R(=!"'8)"4N:VPC*'47%%A1'!LA
-M'Q\C&R(I+CQ-45=?65Q65&>80B$H)$8=&1S2Y4I>@E[:WMKAH7A-04<]2HXY
-M34LHHCHV/5?92)"/C8AG9%[3T=78W=W<W^/@W@+B *!=&!$4&Q$6%AP?/CP]
-M&U!2,"(D(Q(3$1(.'!PL'R(=(0,CV"8B+&ML'31X$Q==6!P8'1L;'1@B(28T
-M0T9,5$Y12$A>DS\=)"!#&18:U-]%8X!:UMW2X*Z"3T%'.4J1.4Q'(IPU-#)9
-MV$&2E(Z+:61EW=S?X^;FY>CKZ.8"Z@"@;B$3&2 5&AHD*$,]0QY)3C8I*RH6
-M%1,4$B C-"8I)"@#*=$L*BYB92 [AA@77UHC&B(C("(@*24D+CL\0DI$1SY!
-M7I%!(BDE3R@>'MSP0V6"8.CIV.Z]BDTX."]%B3!!/R.?,RPQ7>9*F)F/C61=
-M9NWV__X%_X+\^@'^ ?\ M%,?'!H5$Q04'2,W/1@>6U8](!LA$109$A$;'B@?
-M)B B'",B'B,C8VHH'8<T:C<7$AT9&QL#'L0I/D)54DE48TQ)3:NB.B4@&T<G
-M&P^=V&)5=F#4U>2H<$L_23)<BCA-2D8DVSTX.U?93<N)655=86?4UM77V=W;
-MWN+?X@+A /M)&!D8$Q$2$A8?-T(4%E-+.2 ;(1(1%A /&1XJ(2@B)" G)B(C
-M(6-J(BF*,'!"&PT:&QP=&AL>(38Z2T<_2EE".SZAGC8A'!=#(Q@-GM)=6G9<
-MTMG@K7Y1/T<O5HP\2T9"'M4X-C!9UTO1E&!<76)NW]_=W^+FY.?JY^H!Z0'H
-M /M:(1L=&!46%ATE/$4<&DU(/R<B*!43&!(3'24R*3 J+"@O+BHJ(UIC)3"8
-M-75%(QPB(2<A'R,E)30T0STU0$\X,3ZKI#LF(1Q2,B(/J>-;7'%AY./HNHA,
-H.C\A48@V0SHZ']@V+B]=Z5W@GE]=6%9O[/?]^_S__O__^_X!_0'_    
- 
-end
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testtar.tar b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/testtar.tar
deleted file mode 100644
index bac0e2628f35243f236db2fac82737882699b2f0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 281088
zcmeHw&2k(^k|y?=PZ5H(HA$NSP=#NTV{O(HC8{ygY;h#EG}>EKW>i%QnHkv`nN_Sl
z?=$Ra&Gxd-u&2HCJj0yEY%cQ*bDG0`pGRh)Kni552~eQqv~B^Y%8c;%{5RY^GP}^)
z<{<S|+pcT3b1VPG_;-4Iyn`Q;vy(A@jwkVN{&sS5e6%w@I~|`+j!sV}XFK?4ayHp9
zXSYJlYlC(K03_kRv%I(-fp>k+Md6<;jz2$=f6sj5R=&y1%r|EDMdRm<Ez7)`n-}YL
z;j3M9e-c{bvi%21@+9=1-U}veoNawGGUxX)Q{)%UwB7`}HrCAC%5cnJ?9_Ly$=hIj
zlh5-ijEv1Pj&74_-WoqMwQGW}Y+>p}Uijea#d<$UzFfM-g#49RJKJEKxgVLlGM~BB
zl~a5*dGzoRrZy`ZOyT_nhvW*Z*<JYQbiHfp%cUgv{d<?Trd`+;lyyaBE}W}P>5Na)
zuFhR%vaaDE?ZTOra~H-ozN<3xbkXFYEp6C0&)1-LmZvVcZ_V6;!m4ytyVrD;X<PuI
z>B1CtN<yEMp><7W%Ln~@Q)f~v&t)Ss1tjNYVKY#>@TE&qU)CKi2RN9q@~tU54CRUd
z`YKbdadDM_f^(C(G|xaSuwFHJ>u?9A!@YIm@Lyt(a0wMy5Yi^ETP~`w)x5KF*H1fj
zuEIj|N??mTDs1bD^<$8fxsbXlvlZEsJo)tLHf*-89e9Q5|5)X(4xWOt^a30tZRrB*
z>jlJsFP1_eQ?z+oxD9PRHvohqaX`zOP~`JPTdYmqG!DoDS5tbQnfrvqnrROHVyzIE
z=de}lBuXdb@L93uC{Oby?ZN|y&P$)!HDx2k^})`tERjoLe!LA-Lx2J598dz@BA+>~
zU}2XI(=H>xHp%kYEYd;)nOC5SmxUVm@V;Svm@ojhr7L_L@ooTiSVIQNfCcu{j?8KS
z<j?Pw!em0ntHI))EDCTHR!$@_ezw;*vL-XGw0W^_UM@gTVw(-nFZaSCZ(3*;sR;{T
z<5ylQgg|zwbCicLheX$djI9VN6lXtq*4XNz0Ag5>uK-q8&AI}%u)wUVJS<Ee$nXfx
z+SGa4c9<VzQ_^M)pfNS23*y30{s7tg4z!q;dFdb-pF-ZJ4w6avo4Xc_X&S1WUBO%c
zy9}m;CTC>0IA|XJPa~4Fc?K&HI7fMDd1@P4@cFzowkQnEH}P5J?ZQA>x!RSlGS^@g
zrgb)jpl_*wh(T1pg)3^@DVEG7kV8@rH3kNb;+T_qOhY3hdWI{re9Es2H>ZM7IBO4v
zajrqjMv2A3vAh;+uJ$1AGZ#W0ja+Y)L}fm6p%xv+GPuk*YD%T<hvjdAsa=Ajb_%Yx
zv_izEan9srT{s#c+hY6?*AG_Hc1~StVcu$AcZF@JWLR9%D=j3Y$SBEF5#c#RI>m)F
zC}OgS1h@jr4Dq4CB4?m&R!lt*@RfTklu<`=+}qO?tvk)nZr$W%-sVfUYdoyHkSLM_
zDlc(ON?&;_YmuiTvm0$>uR6PsX>wI4Bt@l%E1KGnr{?_N%dJr#lUN|0gjRG%1crA&
zZ-Xx!28z}a;u6ig7iRZg6N<sI()>0KR<6bJAo(R!$ilk;!KjfCy-!_$6~<b40nIOr
z1K}U6dew=O0-rpH0QwoA6#oQ<HLx#anV|;}iA~6F3YmizHPp4XS(Cofz<utUXRr(K
zovp1>tOV$R5gVz?Y-<f;H;~gcmCF*kT#NyaQ$X&FBY$#E2+^<L+~9N|_Pr^Qd0X#$
zms8d-jaZbg$Xuvwo2Sq+@Ee|_gypxz9Im`wlr$?Kn{c_xck>0Nuc&Es!|-TeE5s{^
z3MIA(9vWTrE;zvJQHtYIX22Q-g#%vd%@Tfg<HMmX;2>=SSCjzyys^{hQiPB9L2UKO
zgUAc|N84psGKRn`?iHj@{>lcg1tv(GLp4mc;eFiG1djQzu2M>E3UP#ny@D@-qIU3r
z4Ht$GVhu&g!Y2>@-f%?;95Bq7FZ_IM?z{c@K7*0fUh8*-eUwm;1HJI6L%88~aU(GV
z@j^LBf+eF2cVc2;^s`)ItQE8ab{ICI3!oWX5LE!+kf9(9LTE##_MRjLIq)58=ofJ7
zjWzWjQ_UKf(0&r30D7>DLQJ5+Udm8(&%9+1Hlf1cPhgFp2Q!<tBcXbhH_*tdR!Af&
zgMHwn);zZ<H0BBP1k4u!rBIIsLLqAnTw8Miey*cY6Xh*!C5DdJ&{6MoHKcNeSZSaX
z!Z@&T+rYzQzZA8Ej<{xFaa-0&a0>s15QTDuaoj6Q+Zi5XnNgV`jN${~I~h~WicSQG
zdimUEFphgimqS~~JvDo<`H2{+%}U@##6xV`@)0Aed=3pYQ%1=F>QszqkUW;RivAY<
zs!Z++b0I1#gonLRDd9K!5EZv}Wl6Kbz^{V)ujy+(`<!;+>ptlCst-t$r{JqxYhKvG
zn<qu<AHd#~7U4KTT}H%LWJcUPLu$||VSPS}BtVcdCqV%?X=fai%n^|aaHX&fkmaYK
z3Sp1UJ~8*dqfVbA%xD_;NNh3a#t}|>KT7CR#I94Q3z$cQ1qdW)9Gj4Xx0hA{>;UUT
z>4lGA8`W=^{NQOaXuIrDAUAoH<;y(lFpM~N7-tFjIM=0S!zj|`fM{$2VD;#rA%ncA
z-`pgO6Jbif$0jkKiAfF!6kqgm6>$UT!ml4BpRrS~wv;*$26l)i6gvr<ju4TyS%Nc(
zfugP>et~X7cJl^17f}s>H+W95&@O?95QRYqLCJs`J_loQ89Wb6t2hLJxWHcwVG&%z
zrwzL~AfLHtC+J4SvI6vWg-r$`TR0%9dDM8=9~!akg&-*EQVh1tgCJgXErdgyTAZa<
z(_j#tB38pbr(JZ^d)!CW<r*yR5ig498eXb$uHWYL&No50DvlpEPxg(ZdEb2P06X?n
z6v?9SEBfSZzY$#^W2Fr6ArgmoDlwNJjY}H`U33+eOhPO;31f*Vco|f4Eun)L-?$Xa
z1L4al`#zDFgO;Dhj=ME5Ad+?eDYkR~eiWVl#&?srcEQLEPIBhE2K?=}7+aPth6=Kf
z!eYZq`2gnA27fT#Ffde%Yh!d24G3*v4LYhePz%Hax=U{^@zD@JLM$q8Y|5=9cQi20
zj030KBk#ex<3lQcziAxxyBB(A(FT}BP|kp#ByJQ86gI94B0Uj>&*4)H%m+daFb5%+
zZ(RbTJmX$G^J%w<T;=;-nh|FJH;y3T>B2S{#Gm_T#B!h*VzZej!RUDl*kjZdWfwd3
z-g#^kbWjUPA}|BNc#WF<!@9}oE5zoI1zbbU4>nTBT3~Ykk_KJry+Y$=1r{a}m|P|^
z$T@K>QLpJvBw`%ITNt_R$mo4AO3jd{rTmoGP{b$!Q&2u@N(EvZLqg2b!c)=LrU>-0
zJ%G3UO0+m`7HBG9tSd-4{3!2(#BWrut16^aLa+!pm$<zbk$v+m0;;6;*ta0g64meH
z{{ThdCw{ujJ+zp6IDjO;SnLBE1WdB!AcPWRM0}tv(M(WiE(7G~ks<MRV+sZ^pk#1>
zG-3?i2SdS$A|N@!GkSuk^W4tE-HP3#Gc}T`fR<rvS>)IPfk=2xu@{@b0cMI^<k&eB
z;X63l!Lx&WY!%?9dP&*HQe^uET+x9TR=_0CJl0)>@GTm7dItIwMnVL{HA{T46an7~
zWDxCCu7TikgA+GPNaTcdIrRmU6Fk4NjA~7bBOwPidmMXd=MVz83J(vR3eAu^k&gg~
zeUZTGEuy!B?sI=uI?H%H#Em`Bkqv|87DB8RVt9tW0HHQ%*I;3Q7$yh?JR}ks{Px$s
z`h**CPy)Q?g{7j}44b~lhCZ$kbHk6g3d9CjB2s3uS9mi;wa<M$?qG%u=^tL`8U%m1
zotq2@CU=C~;_mhQC-Z0|R)h)rSf<!8R|5Oim9nRe!-xREwooA<sBs4{#8lKcW`SsY
zIDJ%^%FU6Nq6SEg4iiY`jVsv_Qn}~SVGVgXq!it>i-JXS43(Kd28iS+p-|KN2r7^$
z<T310xWO$sI8j=<w{MXX<u$k*|Kln}j01!|B++0)n3%k|#F}E(n@MCsa^gq%gWhZq
zfCZ3{h3dt4F9DOWG^)Tkq^Y-$Od}zf8pgxcg9G#v0YQdgOa$%i0ne!ur%wq)Y>M=u
z$lw;y*gZ1h6nU}mt=N@|4Gr*GVq`?<Hd+R`bJe_E&^2W-aG*d!Ug7&F^O8!FZ5Ln_
zC8Wn-z$WQUa)DM4OO;3+QOxfUghFl@EFcu=QrbPj+OreZiEb8w2A9Av1F%YViOUvc
z<CQT#WHW4txf3IV$cQmohS)<+V~Wqn&M2un1QrO6vjH}G9oj#KaEc4#?E$%4Yz_H2
z_mi8XIk|=p^Tzm9mAGn|W2ZouNrUQ;)Wok$VaIFg#^#VL_+!}0G!G?WkGQdhS@=^2
ztpjp2o(wcLmaPwf;gn+%p2^ojc*l6oZe<;j?WDX?)kTgxLYIJ)Ye)zx^qwgsiBkqq
zj7!~4MS@gBrAVN9;1FPJhkPVm1CvkKL?bY&x(vYu6)_Hh(!l}&gG9o##!+(+&gNhe
z_X=>RU3BR)q{)DG3Ecrk$dt-<CMLX@<md%DuHS=yuzO64Twsi0&rqzP2KQjm#PLgP
z_bPSBe;~z^U_;OKKE_=T9cEAweb^4x3Em3A$IBs*8##VWT*z~`Wa1feflw_Ga~AzQ
zL<Jyl78q`pH6ZNB`H0#|9`-)(h7LGnIxq*8Moz?_mF5oeOk2gRQcV2=s|_u(O#BBn
zl7rHekOTN0pdfCCB;+C4WPYKi%-i;<9n^#*LIyD6R77)oO}|7!Y*X}2vNeUwQ7x(j
zmZA}RA7Md?Vc|fDlq)U^Kv!~O$b{1gAXV&eT_3xM@Fy=N9S2X1&|_piZ<sjbx;*MH
zn6g2R68hvC>_E?FX6-w~n$<lB8<WDa_(*aAXOvKhxX&NSg_IUvy0R_C0;^(XOG*xd
z3O5c;NrLPzx;*o6y_NY2fl^l@?g}m0_sx?LV$e0JRF6)R<W5%trTlr&xcTjsf2Ab)
z<LbZ1XJ^Md=7SVbwf?L1U#<UQx3BeIiG>jvYyDU2zgqugeoO1WTL0DhuhxIH{;Tz0
zt^YF1p!HwLZ)yEk>%Xyhq4i&;nvt*7`Y+3BTL0DhuhxHK3%AyPVHSs?wbp-enu={Y
zELCa!SL?r8|JC~MPhT32^<VT>u>N~+JM{2e?Agf)>%c#7{+Hk4*zDEwzvJV>9dmL!
z<Xj!~7heCp!hf7XXcv1S|MSgC0vY@^{vVy;%=Z=kpN+?;|11Bmit26r75QIO7e875
z2c_e6{XaW79PgM(B<^;bQ&j)){0DRz-!lKtsN;XN{XadPobH&z+vR*zC*?o*KP_%u
z|4-%77=NYzKZXI=F~_%I@LnJDX8Df?nZ$puPjgrQjwUu;Nc?w8L=utH)6*ZJ|Ho&i
z@c&1*M9-CBZ<ha)p8p?&^egN58~=#>pW(pU?KuG9|FzHm5q)_r{yUi*!v3HBjcfW*
zx7{rNKf34tME>K<C61;1DBOO;#c$>R;R(NfjsM3d2p6>f_eWr?mns5^fFhs>C<2Or
zBA^H;0*Zhlpa>`eihv?;9RheX(Py7O`{H-!|L~8$fBuIrU;NWoU%&k0H{bsAcmLf^
z)6C80i~ReGqO5%VC!C${maA9mKaVGeN5?0pXAd9!-GSb(_^JG;{;2&>`>Fmz{intc
z8b4|LsPVJzA9Vku`^US#f4(j+pr0!Oihv@Z2q*%IfFhs>C<2OrBA^H;0*b)T2LY|$
zYyDp9_gcT#`n}fgwSKSld#&GV{a)+$TEEx&z1Huwet-At_wT!Z|M_GxbR~*_BA^H;
z0*Zhlpa>`eihv@Z2q*%IfFf`m0`HqY(EGK2K>G)@e?a>Ow0}VR2ef}c`v<gtK>G)@
ze?a>Ow0}VR2kw6Vz;$^6{ag`H1QY>9KoL*`6ahs*5l{pa0YyL&Py~KH2x$FY>-So}
z*ZRHI@3nrf^?R+~YyDp9_gcT#`n}fgwSKSl`@3Jif8YK4&nJ_iD^Ua#0YyL&Py`eK
zML-cy1QY>9KoL*`6oKmyc;Ebi-mm=w+CQNE1KK~J{R7%Rp#1~dKcM{s+CQNE1KK~J
z{R7%RaQFKMuFDJP=Zb(Lpa>`eihv@Z2q*%IfFhs>C<2OrBJlG;K<oEfzt{S`*6+1`
zul0Ma-)sF|>-So}*ZRHI@3nrf^?R+~-~Iai`|jU=KA8+%i6Wo~C<2OrBA^H;0*Zhl
zpa>`eihv@Z2waE2`{obye(fL7{sHYD(Eb7KAJF~*?H|zo0qq~q{sHYD(Eb7KAJG1R
zyWc->U0y&xR|FIRML-cy1QY>9KoL*`6ahs*5l{pafu9coTEEx&z1Huwey{a=t>0_?
zUhDT-zt{S`*6+1`ul0Ma-)sH;?$__%cmMwL$z<qC6ahs*5l{pa0YyL&Py`eKML-cy
z1QY>9;5r1}H-Dh_YyW`u4`}~@_77<Pfc6h)|A6)nX#arr4`}~@_77<Pfc6jE{r-XL
z@&fv~BA^H;0*Zhlpa>`eihv@Z2q*%IfFhs>{Cp75`n}fgwSKSld#&GV{a)+$TEEx&
zz1Huwey{a=t>0_?UhDUFzkdI|`}dzuCPP=E2q*%IfFhs>C<2OrBA^H;0*Zhlpa>`e
z*CEh_);0%SS=g=(d;jvU|MnmM`CtEj-Nk?7=VSakJwD#SkIC7|m_Nsp_&0w$IXOPs
z8K0ewPbWvGr<1dt@!@!Kbhcy0f8%^V>NWuYBmst5Ubt)Teb@I~6#mKL`12$A_slnL
z<(tgRd}DTBG=ARLvdpWwd9iL6zS=eSC!sYi+kcQGPeT9cy<pPD+158BbAB%~MSkH-
z>rJq0W6jL1495({PJP#!ybZ=T`8=<}$k;67=r)<=t?@HcyC(R`7N%b0g%7@7toM`T
z%cW~f$X}VYvkk_X`;o~j^O;LsImK6#M-LxiYO}Jz6y9HONUp$|-G!e{*Sn^^TuOr9
zzjtYC+J$XFSyyD{!nxX%&iFL#>fB`}>lzNyE}U68cVTSfyDBqJ7fl}8(uRHWd<}YM
zdFqn;*33O9tV&n4dreoF#sv_XE=*ykB=kucTGwQ@e9+G~btc8~TsAUOKyq#tHUqT_
zU%DjqW!>R&fP)z;-<q<+P_77|uQKHt7grf5I5(L~^9<Ai>s6Dt4tHQW+*>ye|0M<q
zmr#KPA#L)y<)R8(%{x1H{j^i(Dl9aw1h&Yd!nUqhKL$ye3#qFzTai5p@{8NB*}8V%
z6{i1VmA^W83d+(8aFDd63#_jf5Cgtg3V}?~=566NwDsHo5RSwFEo(xN&lhd6HhI%H
zAPZbg>3wGI6B28tIrxjULSUZzs$C~hIw6P8iZw@hnm1_|9zb+n`pm8=8!4_2c7|n%
zTnh8!ZJ-(g3{dBQ67UxJ%y9(^yL6a#83DFQmd|F9mK2lb6{zB6p$0y@Z&)8D48U#a
z3SURO8-N|wkbyE_fjzY&vswW8^LwQ*nb7fSu(&6S0$hca6G@Dp?KO_9$&4#)UhJEf
z3lNmpW&`xgy|Boe7MewB!ot`1mDdU(kX`B=<sr-=(e)r>D}oBe*-xG|wz?>Q7#8F!
zfYnvAu7E8pFzYH03zG*jJc6?}b)L2z<_Fo7v{?gaOik&6xbTxdK=!@^E#_rjI!MN+
zkoT#BWK#a-t_5S7hAL-QFc-isgDIiO85u4Pnuq_>h$L;E!Ab<qQC?b}+J+W<K5vaJ
z3Pb-zd{%k8FpyTRcIB(gHCTmdolPO=TPh%85Y=ztiW+x{C36Ynkkmtsfq|nq=A<6e
z(8!3M;mRzZ^6SFQsUQ^2+Jj-7YtXV$VzF>6uLYZ{J&60vg^))h*IOk~na^CPMTfBr
zE;EjrQmOl4`I}&Bm*A+Kf~zg95b<f8GkIATjz-9~7=Og|gVnU1Q<qwpx7ycTVH+wL
z7MJu&3rQ(5N-|YMcn*<HaUl(gm~0{euD~)wd}y%98EBgoQx61u<sJ)V)R7$b_H;$-
zPV=){H+h-2`O@tg4=XPuiX?%`OI(xES02k+<mt%lMjP3y&Mst{TonpQQR(4|rZ(iM
zIY0PvYt+Xi7KkUI72Oem;T_Q1;0uR=qP2v$L^JP&+5OjqVz8_<zm0>HYq2~?ehC$_
z@NPgbY9vJOQx{-`u@+uH^9$oZ_y?<Ab>gJJCl4Zkeg-JTKY?Kl><d|D=s`qc6Y`rv
z=AcClb**jIq^~q^pZn$+>;imeYpWD10eWD>M(Q%#TGOs;lG8Pn%M!X=i~)~RK<<nq
ze{xO;(XZg#;B+ANy(y7-Tkm_9Q`RtzSd_2GT&QfDr_eI+8=j<u<+sHguDo58G%FyR
zaJkBN^981_sA+V=@MvHw#4CsjCAJ728eQ}*IKb;sisMpdz#0aH177OQ5`K2$!=WwU
zAZ-IzlmPm?vD4^Mgpc<@Z1u^5$P4;M+htfXhQKWD6{Ju8$_B3mCP<t^HB7eQecaOo
zj`^^zQc7(KafF7wf-i!icJP1=7lsgG4MobrClCJKa776mFwB@Q{CsWhyZ!k-gOSx<
z>vx5Hlu(cZz3{0+xZ!qjBQXT=LODo+C8G>?Vq#(Rvs_}V6|@6(7&f8{pcz~cRRG|S
zp&$%GXhWv<o+Ji2@EvRD7jWy1HT54;%^H}{eiESoda#T_OrXJD%20IAyk!qIp~B!#
zV2z*$Gn=*}p?a1#(8#M+NF*wQec+_lJhv${<_Yu!%ohQrP>%*eA!`j>TXO+^uA@;C
z<t=R`hK|_KQSWs%q;iH>X`mFsIIwZsz{6y}6t#qoxMpE-Th>W%3jc->g>r>)+$&4l
z86IPqQJEo(;sfD38B@)QP6UX0`P^qPj(bO!LtDr_HG8o6i5RNQO5jGsLu}jf5hJU7
z4h=O^M#%x{RE%hlJeIeL{uchKOzsPFAu20`hrLlL;Wzsb6}NU}NwdPhuY&up>1#gw
zoOa>sKIr(W4@i@z;Hz9~Uf9B$Cq?TYz}}S>;W$EFM#NWSM%+9@YS1ZReLjmMK#(#g
zK>;{vXB?Ew5s?aTrLYZ<<)@$uVUNu|G55ctPM;&pXd3uPY%%D@5l(tPO6XI>u2ZNB
zm`8*K2qb76n~;OImsSDn0P95Qg^yqx)o+;m;At{wyX;XQH+hxi%RK8aj5v1~X9@W@
z*QI8|DAMMDXlw#t_2{4>gS@EU+$4+>VM@QpCNZChNe&1UU-WVnaRcbWuOB3zu~V<M
zlsXUwc8DhwI|-YP5RtZ7f-{MMqOK!;fo?-~^9DN?Q4N4Mcuuj<E`f*;g+T~G$$%O@
z2V-#=JP%B(I0S&Wz+Vhu5nRKk4ZArYpSfr!=tjk|0`zu;O$H)cI3TKd)Ogq*8nNw#
zASmim47SXJAYODWghQNKoTXROU=W=mR>MB0U3AoY+(*^r8Z7P+FN)|IUaE4g-{$nr
zH$k{6jvqEp_Kl=@-+b)=JN8r*$)fNp`s8iD5nUi-r3~;P5{GvxF_$2XOB)AWbQP9N
zLM%85V~Htv8B}vEp@SITxD?C-;maxeK9QJ%mY>FsyEQN%l6C(nwsZh~6rKLYcaykw
z!N?6xa^|}R{Oz|GTb3<`3bK&GV#7=M0Or#Me=y!KFjS0dV{{Y^2yI~vI;u8M3&aGv
zOK&dm(GWjEEGlno%B>`KG%(JL1E<_0@4>s{Ln?p2X&m*t7kX#W2AD-q&VZjJZWIg@
zHm(aIJrRY^;ZqFE2SN@o2O*emT>_&#<6b=TX}5`7<@;Wm5oZ85jv(Rb!ZsPipZjOT
za-bMuvzaKt=y?m+W7HO97d!Rdd2AGPPzy;SFayDOjhg+#y2<G)#O9C%Ttm(eHd4r1
zU~>SH23_gBLgQuy7A6vyTqZNfIdLsfujx)CVjRR<7`g4p=zTCs&5)?2{FK;G#3%t%
zP(Eu)1!5dSLd?>_Q_<I^2=uW%fVcfhv^Z`SXewZ=D@Zx~DDQ*BZ&a_VDx_3Gun0Jp
zxV;yVee*2>s-*VVw;;|E)$il~07c;^e!9#(w3vH1fF!_J>;oGFOtR%5gc4*#e4s7S
zOi*Yp1LWwDA@O!&3I;HsWN?5qVhr8~L&1q6AUVP_dV;9)+|I+@iru3#HIk};mSJmI
z<k$j%NO(@M7n{HVW{O<o*f|v8J2=_Fvx9tW72u|NN!iF!WcvnO(SaCNz$DN-)?J10
zEgE@x2Kp36LIlJ$OMI~u0pAK_5bad1f#7n36E{mp<b-uO^#zm@JioGxYE6qHAqO^l
z9D8Z!5CXUg4-cIR&5%2hj{t~$k-+LLqPK(YbAMJk%XmG+jXltj4TI$tLaY{Ic!s_J
zp*CsPU}1n5CI|*RBoZ0?_Se7qgd1^C0=(yirJ~vlo4&|~KCTdR!;iQM#0FR*Qf9JO
zcr!({&wV}aV1^CpA71Dh1b?`ln+ymhcZA&H?)Cg9^JpYigbDjtrr0o70{hmLvZsy1
zhycO1P$40xaR)HORMa?TfoOa<eN>ss&5@U)21t$$6G-NbE7=lKx#!Yh4S6}F6y3Co
zf<<!-m6<^Xh~y}tP}BPeDv&7TG3-*f!7VvBQChmUZ;=z_HMkuA<0?gr1B5;#(O^TE
zn7p~fnqt<QNn}ED;z#*|-fR$n1(1-1>cx030h6&bs=zs<ske_zBO#a?#>3Ww1N0LC
zL55*W1nuns&#4oqPYFb9iu9q#;1<!?Ju>1Hd9m=V*p-V74e(lGWJKsTS_Zju)x2HM
zHDxhypg=-i;rl4_l1h_p7hn}7q{m>uCh1LbfmRPol}H^?%<m9{LT(r=AQb6R+C9SB
zvlG^dZWe(Cm%uOsuu67`%NAwhl`%hLGi->t6C;Gkh%s7**h5ZZiqFW-D5*OH76^{B
z0XBLa+CPVIiVNfI0l8aj4f#3ulbfVDxrPt(#`sm0xN4bWr$CoUgX)mf#IH<Y$7|}w
z=8!D-W7x_x4<%xcxUq&=_)`b119CK;3^X>Dtq*|Vlw%T}$=5=7$9T?eWgU_2q`Xqq
zMUFf|mw=RONC+zQo+%`WQwC9tOWjUIf>cDMNT7P)5MXSFd?Z~1lTX-0BQUDE48a8z
zF%E&!!2$t;M8dSjQF9Q^=3o-{3UH`hbm=ps$$)kV-2q0(l*)D{CcK&C=mk2i--Ca!
zdrXU5V2okUP^_T__h8Y)@k?y?Ds{+zAjOklL(la-#$6B{W>67*pmv7HRyMx890IwK
z<JZK6Ja<bbo*@?q)e<ph(ceQ<00L)$;bvI_!j7DesIBB-@AGcxfJ3GOb6{!YL=0MK
z?jX;!Rop7Y)IYG=&?3vke_$gyC`}1DfbRhc;&w<v9+FMw7kbLPZJ*jfO-LeS03%LC
zG`H9EOC-cLMc*V_Q^*|EqDo*X8nO2g7Ni&!4wOi_;<5mAB{zmlIGq4e#SYi?v5N?Q
z@>0@q@YD!BM&|Q|i9@c-qyB;^8{{aVPp-iZ^n7O4zC)~8-Gi_(DJ+YRBo}Z-36+TZ
z{E=KpY2l?S+hQ!RDrUB%<S?jk<KUDe$o`_sGY{8WnXeEibtU4i(2{-MJQ*PdU873%
z=rl?0bR}?dcyxSna0~xEJv*QTSI9!ME{giE!4KAd`IGfu`PtWh%~t)_jE_$akB&ah
z`ftCeF}x)U>$d>x`;WOTkk7E85U+!sh1P$y{;Tz0t^aEMSL?rsr?4y0`mff1wf?L1
zU#<UY{a5S1%ra>GSMpn0|JC|$EM92+H`X^1E^GZ)>%Ut6)%tHdm!b7vG_qV4t+oD(
z(^NwruGW9G{;Tz0t^aOU;(nUn_YY#B5=|W!Y|T16K-U?MliVOVtoNRs;aqR5|MDm6
zzw(p6<KJuNe<w$WsQ(`B?;i|wO%572zhSy$iL!iScHVWq_g&xLAYLDGsH@z+9hAx7
zA9enFa&kO5{E+qkUoQW({;%i1dDsh0f9S{5^WQvVs^`D;{I{O}*80D+`0Dv@ITfkr
zzxDjLp8wt)Egw#a4TmK4{5Q@^@OXlr|Gsj3of&YR?uf^x_58P<|3(vup8wYK-#CjD
z&ywo-Z#<Dj&wuOr@A!y9J^!uezbhQ6)$`wY41%8jmV>=|{u{^c@f=P)|ILRV==txP
ztPj6g|1Z!8aP#&5>+8R)4!>Ui$DwpQ|9kQ}ako*P{)N~7_Yd|De*1eI)c-viKyFg7
zw#E_;Z#^3QwZA9m2D#b`GQl(9Pj<}jx5l`&UkCm--nVa?<Xzvt?cO{5-Ms4fKmq;#
zFARg>*&KIRG?laufWU{)f7<)&{r?ZW|KsosuL1dh@Bh&LFM0Z!zW+n^oBI9_eg6la
z7OL<6h<OLpFad`=Ne>U*)AxVq`#<#kA9%tlpB&2aJ|7?$AKR$!|G@Jo`5-wy8WN}7
z^!*?D{ttcsNB=G-egB8P|6}{HDYTP#MyS63L-t(y{trBs8xJ35AffO7(D#4n`#<=G
zD}DcmzW+nt|Do^ykQayP`#<#k9}JK5{U7@N558<i-~Vv~_2E0)|8u-!{_zIZ_s$`-
z|3`a&eqp^o?Dx|CpLbe@U&IA>*8Xe%=LeC$57Gan{iS!Wzn1o&&(`}OLZ*}4Sp+_W
z{=dEdQ%(b1eg5Oo@#zWAe|!kyhWP(o&v$&+_ji`VZzqfp2fVdA+~fm4Uz_r+{GS~1
z>#O`fJU%>z|Nr{6ac<?$pPc_9|6?42*_@Es{{85h&rh!T{Opa-{~JFUAI2NrfKa}i
zY|ps$`{bJ0C)dnAd2{wS`PP`*D?Pks{GM33H~!}hy7hybLEy=!Pe1$o*%!Y%|A&A4
z{qsM3`Qo3x`ugP`zxno`zx(fYnr3b`U*z9k6lLY>KjGcE-E#G6{pYc~)%5i2;iJDh
z(EAlXl^@j~wI6Cf)qkk})c8T;CygI9e%Aei?w@r3sQYKlA87tW^GBLL)BK_4Pc?t6
z`E#uwX#GU%M|i&FiPq1weyH_RtsiUsSnJ1HKi2xO){nJ*to389A8Y+s>&IF@*7~v5
zkF|cR^<%9cYyDX3$67zu`mxrJwSKJiW33-+{aEYAT0hqMx%Lle|A6)nX#arr4`}~@
z_77<Pfc6h)|A6)nX#arr4`}~@_77<Pfc6h)|A6)nX#arr4`}~@_77<Pfc6h)|A6)n
zX#arr4`}~@_77<Pfc6h)|A6)nX#arr4`}~@_77<Pfc6h)|A6)nX#arr4`}~@_77<P
zfc6h)|A6)nX#arr4`}~@_77<Pfc6h)|A6)nX#arr4`}~@_77<Pfc6h)|A6)nX#arr
z4`}~@_77<Pfc6h)|A6)nX#arr4`}~@_77<Pfc6h)|A6)nX#arr4`}~@_77<Pfc6h)
z|A6)nX#arr4`}~@_77<Pfc6h)|A6)n{M7veWggOl#?9Mx?e=_;?JduCZu*}w=Jfd3
z>=-jSI~nt*nZ&>Go0*)P93L5Tb~-+t9G#v{&dhjxc6xfaV{V!b9q&y9p83YDe3O}(
zZ_MtC#?KpDmU%TdFV^kCSG(r^B(%n5`wx=jN$5Yl7fjkX+xli?&hKTW$S<5}y$N=0
zteLr$;h4eLsqb2ox54-(pXXH=8JlGs-6qq#HGXDl*92eL!qkhr@WI!M^?s6kxpa*Q
z`75(_w!t`aKQeh`K69xnr}%2}=;0$wZB{mz!utyj$rV_$yYSQLde_vKOG)ti_bzQs
zyRa=N>x#@=I9Hp}8K0(Iox99rUBf}zg)=MXE{tt_S7qkuqRB&B+OTh)uR-rDPhE1~
znz;vsRq3jBujwk&xBx=ag(>Wmggz-l>zd4#5BmA0&ZJnL%SL7jNY2f|W}tTAOP8d+
ztUFu|a4=)#TT^xz$`t|hRi<3y;wl3L=O%M$o`G6my=wB-;SNlPd+WyGzr-Nn5-PAD
zq)lG8TvTDJd1vRYpLXh8g@xvoz!rH_*wz*6#~>+lA$3(|E3zknecFc2*0lq#F#R8^
z{MErzP?lbRgQP88V12!S81ThX2xN*jZwt4ft>*@Sa3l_BSrdwUzG#cJ$(zOjS>S3)
z?=y3skXSR#!C$Nu0`uHg?K+9l2|0XLtU1clyh*$80HX8KXLe25NO66zGb~HwQkWla
z1Jw{<fI0`1fVaqJjw@K$rNgw#2(V4Ed^U@;q?k0XKou_wHSpnm!}>5`0B%cH_&Va<
z0PL`a43q&2?5Q1@)dI+$-z$a5gpOB(#XVUR;3}+~NMihKuW@8eW?X6WV&A-6fS|-S
z8=znAg+<=9&@56D7QV)>yjBQ->{90_4`B|8t_K-g5mYG7e)6ob)kOisupnOntgf1M
z#Vjuh%(}|M!sLMrkKn9Lou_Sw`9U@%ZPox9Q&YMiF8t&VkiG9fi+P!s4wCUH<bCQO
znUue|Yr&YNp~~46%muK^U`l9mMuv-n=HdS|B1xNPuo8iDl$VyLwxI=|&s$@Q!i3f~
z#AlVa3j=B8YFEC>T!U4Z*4Y$-zNG>p22uSMuBdURSTdJD4oN-K7#KK;V@~QZ4ULTG
z8LrIoDZeh<oC-qWtUVaUxdts8B^C?E@>;OD+Jm^yTnKqIa=ld&mHEttT67r8;4<T=
zDV4e(mcI$6b_tH!DY)9w3K5^iIg^)l;b??xi}6QXKUhuMId!Rpd8>Wh6}F+0VR1>X
zw2+h{qa;&Bgy#_H6c^H<h{+}r;0i1=#D@lpoPoAkG4(*eSMIS;Mjgp<Z%<dW?leEU
zb(5EQn=jq2@v!njqDT^`yu>vredV#NMV^k#ZnTlT>g+<M$yK3{6qO#XXlg^An)8D%
zw?=(TVu5%PTG1U57~TQB4Zd&~C|XO1OEmLdnB9L(C<e<)^V>LBxfaWV<Rd_8Exa2L
zj2a2i`_u(kVXTE0(EP$U5dOicSDiR1@X3P+pq~Ls@lRk_1N%aj8F~<r*o6G1kU3~k
zLtSf|HR&r2+~>Y|2D<>?+1e__N`M|1v5~sWw$?Cu136t&xh$c}#Tf871?0{+@+aqn
z5d8|y4NeDQ-<uMdxAnevIb{vgh(-B|%!SIfc?vB9zu`$rSbkf~;mX@ZNwWg7374yU
zH(y}-ike0@437r3LcD^gP-2VVq0vR}f&;uBr8q8S2CQLFIN+t;Ea7K2J{;Nt4$?Mo
zMG2tK8#|3IMfi9h#8#g?h`gYGv|WZJV+hRRUP1cguWayIV1mRsRKsK&-p4&n;Fu5V
zDy7t>5Jza(EBGQPY6lP4aA61`)=;D@eDdJ$4Of)F0mF>>!q3;{zT2PgGZ<OzwSHIF
zM+pTv&<meBgd1)bHxfe-FO-8MSTf3RCngp~Kg%V?T0uKthhZbS0Gh!CQ3U`F84AK6
zgf?Vq?@3~i1K+WRegU`MSX2Ko)vSRD?I#fmpa;t+!~`1br3^*)%v<(g6Dkb;1l9<8
zFtcep5~^o;1C6|Dg+!t<*auE(&2yVVW1c`yz<d!<3iW6p6tdR9wKW&u=Q<iSQQp#4
zV(5qs9ra#ULn>#8l?F;7i~}3D4LnTtOHoVch-(%Ww`H9Kr|@qGQ7Bg!$Gx(&o#8Q-
z8I>8rC_WIrlQGq-=tO|1m(P6$<G6QpIkbh`Q?mz~pNOH_tORaEJjAvwA2G7Z=g?3y
zWt1GCPQ{1@$zyq|=x^b#%H+N<7oxI4c-R}25`MD}QE_WmmNY92{3^Krn!e_<&uJIF
z?t_l6`hYZf3ckv<=7lZ1c~Z3g0qk9A5so9&Wkh^MX2i`iqz0W5*5|WG0t6{@5)^=w
zcE&-;91*DiR|?wzS$+zt5cb&Y6LbGN>hw9njHZE)#1?~Y9O0z*ql7+1>^g<IfO$k%
zfIx!Au?abNdubKG4zNy?Uib*MQT>L=51uB2w#yy`a+6nCzRa@@!-#W-ah8yeb6sjS
zj3R9gh{h%WR*w!EGRTYi%}v5M5vKI}F0}bfOmaY=_@bAqh#No`e*GZ%jGcP5rPP5i
zutPkd*h$!Qgow1w5}Zj46m=c(3v?T@n>X0Gh-v`5!E=g*b_qm;C=5afN(R*MIT(w}
z;CWzL#UTL11^!|Pi{KhQZP?8L`OHN-K{qOv6`;2(Y%&np!U0juqsGJj(1>j>1VK@k
zVz6Z%1o5J4Asph=;w-(I27~Anu^RR{?V_XJ<36e`*I;pvcu_>x@KTj?{Whm}z6rur
zas04(vTr2K`{rv0*s-UgNEU@((I;>FjpzayD`kKWkvP0liMa%6T-rG3qN}iE5@Nwg
z7)wmS%b=QT2_3}v#-(5$2wzUw_ld+DwEQ%7+^vBDk*xbqv84m>qv-TEzMI6g3r22m
zk~7~m;BUXh*s^RfRFH)f78_p52QZ&D_=E9=fuUkt8>6FWKxhkV&{4I4S|BFSU3zng
zkB0aWVo`ZxQ*I@>qk(Z|96043c@N$lA5!`IP2;HFz0f<0Hoz=`at8b)aid_MuyI`w
z>4_+O4xeIRJ`i$%IS9dg>k=5{8TaCuPrFUzD&P0gj5q_haRdoZ7q-bD{@gz!mIK8Q
zo6STCM$cQo9;3D>yV$As&SRsXgIY)uff)$KYt-x?)=f@dAvT9B;2Ls%u#rO60-FPn
zH0Vn26&g1yurQIp<T9B-&WUS@dQEpC5#u1<!pLn$M(=}BYKBBD<)_4kB1Q?Ag7R5Y
zDiGrs5@MDXo{GLUMWB!E0le*3qQ!BuKvMx@T|vs>M|mG4exrI_RUxGkf<?f&#O=L^
z?3-^9P$jj;z6EiXsD2;+2Pg_Z@zZ7Qp~c+80VDy&VjtKbV3I8dA(S8^;sb4oW`aU<
z86ZcG42icJQ!s!5C4&Q`5o7Q^7z$1l0m%`b(Gx_S=XM_MR_q>~sgYC#v<zFzBF7d8
zM8b25z1Rc}FjM3r$IhV$-@(Zao*m?4s{l9EOUg!;BHK6MiVnoE0w#gxvF<8_Z_&up
zGtj3n5+We3S>lVO2>4bYgJ`F64Fs1PoVZy+A}6fNsV|_M;Q5thRBKus2|2LY<Je0(
zhY-M3czEbkXolR0d;~!3iv(705xpIBpZl}YS;p%jZtQ`MY#1!J5Ms3u!!z^+2(?MO
z1`7kkFhMZjA(6=7x4-_?C)|jG65u^AEEUye*z`p<^l^ol8-B!9AU41fkusCL!ka0o
zeeUaV2QzF)|L{WBAo#=W++;v7xg+EjcdzF^nMWhBB23uFGR20u64<w{ls#=6Mg$19
zg$fBljXQuLrlQ6%3q<3?>7&Y2ZjQVZH9&H7m_RabT*;P@$~~73YskwXrRb(z6fBx!
zsLTv9KqN;Ag__<+P=Q1tk71X>4Q|Q7iPF-&eT$qZufgT`A6F@293b=|i3S_O#N^E-
z))ceeOd=DK6F<ry^k#zqEP#Y8R4>MR37CwfQ3cK+O}%|&8VSMFFdnuZ9H5^F2r>*~
zB4}?9cut)-eM%r=Q=|_?2DgaD?vW9v$cu$<#jadzXn@xeBO^k$(K5)LtLE*3t|^Ow
z0|gTD3g1VWmsFZ;y8x>wAw32IHc4-i3$%JzszmCDVt$7p6mr900ij5j((Vz~o}I8x
zbh8LFxCDk7fK{?fT(&41uZ;O2n_)xDofsiRMvT!i#2#`QQ+!5tMoHZvut0E}4Y1Mc
z(Ed4uQ(PEt56InOYsk;JpWGzP$u)eKH^#53#8t~2I|aH-8dQg*CVpiKJ6=;aHiu-v
zAH!Crc_<Nk#Emt~!k;>59gw5(WT3IJY<&O>ryP^;OuiPvJH~T%E9;1CC*_r@E^_1%
zx&)+LLqbrY_e>#4oHB@FT<Ufz5~Lz3MFQ0WhX7+c<Rj@Cn0&$}8i7&OWe6^)h;ay%
z4i*R)Bod}Ij+%pTHV2cqSAaw9qD!A4O$M|}=ngPKrc|~wG2zW5M=#KE{T}>--D6th
z0%Ht&hGGphxCe_Sj$dNCSE)n(11X*a8+xwyG46usFoTNd!*;Mv@Kz8$UJilW$nk69
zLY})N6VH$fgldVHv*_<3Dgc4Az;Lsy0bxhZN7PpGu=ja4big6gfjO`=av}z;G<T3^
z+A409V(K4QZD^5Y;y<vF9F(Sn9KiPg1#vqhArHwW^9wy?-nLKepe7^{GJp}MBAVN4
z`Xv%#o1$-$ttn)VYEdPy6ph&X2n$jS3kOQ1Tya?dx{@11CY(+HsbYug`q)K;KY1zX
zICyG=9wYO4!^9!i<xzjZlnru}&?nbm2YNm;Yu_Q(tnNYBm=u=9N0JLTql8Mtef~%;
zq_ptTm2EK=SQRr{QgRqnxN&ew5@dhT<(Y@;t;|;ll)4geS7^z;Z=Q@0gRW7fdUTp3
zZx-F|&?i^wzl*wiwHI>~d+Fi=OWOOFfBm=r_|O0P_xGZBjDIKq@8Aau!2CHz0a$+G
zH`af5Q1Tt>zdPf@@%Z>~XJ`Cgv;LJgV{304kb?iB=Hafr>s{Y-QTW#{>VuGeEv-M|
zi)YwSh}Xf+LhHX;|JC}h)_=ABtMy;RQ`nVg{a5S1TL0DhuhxIH{;Tz0W*M~pEBP(0
z|7!g=7B95^8|#}0m$m+@^<S<3YW+8!%h38S8d)xj)>{9?X)3nquvDe>U#<UY{a5S1
zKcY}~OP5}$|HkvbH(mk8A>SW&{&#XXIhpAB-&<n&m0`91tLJ}t*auBt=*QFZzdU59
z=YRG5ub%(a`meNj>iJ(e6{qKa_581%|J@ud9!?1jhvfA9FZ$)#p04MAuN+@y29(|X
z@z|`M|JC!q$p7m3Up@bevncT_p`QQ66FKz!ub%&nkEql0zk2?+!jVcn|BGYrdj40c
z<$C@X$FA`lMm_(_!|!_j_eufpJ^zsUFOJr4J^%UOJ%@bbc5^&FJ2|=T`Oka?^!Ux^
zKc8v+_YEL#;e#vn|Ip##WX+AwGM;SCf8*TuNjxGwIUJ5kkH<%+JCpIr$@pw?e0s(s
z)Q984v!k7VzHv%^V8G%0Hy)l8e&FlPM>r-vn{EDj^A|b&ecYe_o}BF*v}Jwp!oK>Q
zJc}UgADumX^QNEvlcTXI`2d^WOvcBPhvSE550Ca`Dg4jfessZ458ls!f)A|!*FOK@
zs{T(-CzHuX`22@0{r^a0L;HWU|3~|O^!fk#{Qv%8WATAq`uu-={)0aMAJ2x;=l|>T
z|MmI*`uu;J>GL1-`44zDzCQn7pZ~AV|JUdL>+}Ed#xrzx@;G<@S|NS@zdrx}^1Yn;
z{0DvhgFgQsPnXB5Qt+61KJOmJQlI~?&;Qrw|KFYB;FbFCD|r_FjT6UK0zLo&Kja1Q
z{F^U;=g<E6|7Pp?|M>iHd^9;SALJqWe{KH<Hok9d5Q&Q!_lv???tl7!S1`SNzruzz
z_WEf3SL?r8|JC}h)_=AB%V)so```8b@5pND```8b@B03CzED=*|E}+U*Z05Uy@~N9
zi(3EH_rL4=-}U|P`u=ykA6o0b`u_LE==<OG{qOqzcYXi6zW=@Tcn09wR}POZX<ei5
zf4}?hf8RgYKlttDnELJ1ELj>o9bcA4Un`YPE^EQ^4N9n!qtl}!^XhiUxjO1l|82Z)
zuYPm&uXla_+M>+WyYK8@IR9_2KmU(!)3<*6mS+c?93J9zVC~{JwS9FkIXu$;|H3dR
zd^N9Z>GUZQcUJp%c0Pn+(lq|4{-48RKK|vy_Wz(6W|kN3T2{U5`;XNAYyXe-|7ib@
z_Wx-AkM{p){|}zYU1|T1_WzhX)BYdr|Iz-R3#4+j|3~|OwEw5H7kEuY-Wu)y(f%Lp
z|Iz**?f?1huYaZeKidDZx2OF-+W({dKidDJ{Xe1g)yRDFWMrP(wV7!D59_H?|GmEd
z=Wud*I6O9im-hWX$J+mMZ87@hzR><3?Mu3)z9jbl;L%SP$;sg<9{*HbXgAm`A^jnm
zc;0so?FPF!qkV%Ty)Rq;n)}87U;F$gehZ(!^?V|{5A5*haK}tOMCa(x|NE}~u6KPe
z%h(EXZjeW}ITRt@w10>F$>GDv@j+J>wrj)Qzx?aJ{l|a)*T28-{DcPme~bfv;Qded
zaB>vi|8{zMc655SgR72D(Es;A`@e5ukyxMvyZrf){5v|iY|<Xs{+Ivpm;d>f|Mi#u
z^Oyhom;d*d|D7CeTEr)(508${CX+*c);EUBXAe)$j<wDABVqX!GO7Oq-)~6WuZ+(>
zpbl@*|H;Y8@zKtf{ipt)oJ~H?{@;&H|F!>D`+v3nSNngp|5y8ewf|T9f9nNaZ==uu
z)BfMqX#cPF|7!oQK~Y=#f3^Qt`+sd-;&oTvIPL${{$K6?)&5`Y|1C?W{lD7(o2T0U
ztNp*)|EvAKA6@_NL0i@bUle|7i{Ck$?H`_wkH-6xH)^==^TFHezxWmpdzy?-P7Wt0
z_!TV_lfyIif6U)!(!ciJq5tQvz5crExJdl_*y_J{&7M4@?Ke}~B>1D_6We|>^FF}?
z7{B@a51)Pc)qdX}@SE5ALaswXKmUjjVE;$s=Iy$6H>>np7*H>+@BjLt{*PlA0`33U
zg7DUU)&39d|Iq#q?f=mJ5AFZZ{txZ{(Eg84pWefBe)Rco+W&z<r@sGDpZ}))AJ1~_
z|Iq#q?f<Au>N95+x%Pi(|A+Q}X#a=ye>Bc$|A+Q}tc~`6X#a=ye|-G?A4iWKKK#)A
zACpPn|8a~bznn_{$Jw#=f81KpcWdBBeaDABy<-cMU(l~x{U3+7wd}v8|6?-N{*T+@
z$M(3||DpXK+W(>bAKL$+{U6%@q5U7)|DpXKdAndppwIu%{ttcrhd%#f-)R5G!f5}8
z_J3&qhczL`TOHg;`#-e*L;F9p|3mvfys5SSL;F8`qx~P+|DpXK+r`EH_qW%7@$K>9
zYyBTb_)z;legMiF|7dd7H-Pl-H%jn9d?3j1!HrL;1KuG7w)#JgZi}q9>;Dfw{{t;y
z=7YRMX?Xt6yWa2huJ5@>{QKCR|D*jM+W(>bAKL$+{U6%@q5U7)|DpXK+W(>bA11G6
zMW@gI$hH4N`#-e*BTu#eqcYn6q5U7)|6v+DCf!c+Li<0o|3mvfwEsi<KbEf1{txZ{
zxZqaFR%>55?4MiLxX>b@mRCvPY*V3c)Vx^ZXh}6PtA%S9cy-ncsMW3szOseM%ewJP
zSGuY-_}m6#O==s5>s+<4IE=xs_LG;EyVBO!l||P2^CnM62BYDgbb%=wYcOBtnorFA
z^O;%u&Sbv2*P_mi4?}CK442~_$At}T5-=q9`6Ib-VV91Vu5633GR*6{`NBN+RlDwq
zhyQQ7D(pW<k}tYE^JZx)^OX;wE0eD<J(u^*laYCD*JkqQ(P?tGpRBNduz&E|7xooj
z{^FY3sQ|MsdO98({=~o6e~u?-C&Op)`^nMi(dmwPbvxu-9d)SxHr}^azq$I?yS|sD
zZ7uHV-FNn{qp`7Vj#s`+#>bO~<A-MtkM{eejK>MSP2c)$dHuJOiGhCnW^#Cx;Me)^
z>k&H0|LlHqHl9rGwr1Q}mfa{}Tm2u$H#+dvV3a4k|AjgZRgd~ViGL5G_L}}5pPih1
zoc$leLd@3s@A9wO|DpXK+W(>bAKL$+{U6%@q5U7)|DpXK+W(>bAD(YCFSP$7X#a=y
ze`x;)vi92l0Sxs0FZ%os?f(dgL<ZXbq5U7)|DpXK+W*m^twEpvq5U5pU;js$hxEYt
z*=^P+`}*%rU;pLLG3vkalfUEN&iL$fe2Tu0)5#g%|8jKvLC^miv-7U={qOqzHUZSJ
N6#+#+5x4~e{y$T2;IRMz

diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/tf_inherit_check.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/tf_inherit_check.py
deleted file mode 100644
index 1542ede..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/tf_inherit_check.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# Helper script for test_tempfile.py.  argv[2] is the number of a file
-# descriptor which should _not_ be open.  Check this by attempting to
-# write to it -- if we succeed, something is wrong.
-
-import sys
-import os
-
-verbose = (sys.argv[1] == 'v')
-try:
-    fd = int(sys.argv[2])
-
-    try:
-        os.write(fd, "blat")
-    except os.error:
-        # Success -- could not write to fd.
-        sys.exit(0)
-    else:
-        if verbose:
-            sys.stderr.write("fd %d is open in child" % fd)
-        sys.exit(1)
-
-except StandardError:
-    if verbose:
-        raise
-    sys.exit(1)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/threaded_import_hangers.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/threaded_import_hangers.py
deleted file mode 100644
index 018b6c2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/threaded_import_hangers.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# This is a helper module for test_threaded_import.  The test imports this
-# module, and this module tries to run various Python library functions in
-# their own thread, as a side effect of being imported.  If the spawned
-# thread doesn't complete in TIMEOUT seconds, an "appeared to hang" message
-# is appended to the module-global `errors` list.  That list remains empty
-# if (and only if) all functions tested complete.
-
-TIMEOUT = 10
-
-import threading
-
-import tempfile
-import os.path
-
-errors = []
-
-# This class merely runs a function in its own thread T.  The thread importing
-# this module holds the import lock, so if the function called by T tries
-# to do its own imports it will block waiting for this module's import
-# to complete.
-class Worker(threading.Thread):
-    def __init__(self, function, args):
-        threading.Thread.__init__(self)
-        self.function = function
-        self.args = args
-
-    def run(self):
-        self.function(*self.args)
-
-for name, func, args in [
-        # Bug 147376:  TemporaryFile hung on Windows, starting in Python 2.4.
-        ("tempfile.TemporaryFile", tempfile.TemporaryFile, ()),
-
-        # The real cause for bug 147376:  ntpath.abspath() caused the hang.
-        ("os.path.abspath", os.path.abspath, ('.',)),
-        ]:
-
-    t = Worker(func, args)
-    t.start()
-    t.join(TIMEOUT)
-    if t.is_alive():
-        errors.append("%s appeared to hang" % name)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/time_hashlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/time_hashlib.py
deleted file mode 100644
index 3fee8f4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/time_hashlib.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# It's intended that this script be run by hand.  It runs speed tests on
-# hashlib functions; it does not test for correctness.
-
-import sys, time
-import hashlib
-
-
-def creatorFunc():
-    raise RuntimeError, "eek, creatorFunc not overridden"
-
-def test_scaled_msg(scale, name):
-    iterations = 106201/scale * 20
-    longStr = 'Z'*scale
-
-    localCF = creatorFunc
-    start = time.time()
-    for f in xrange(iterations):
-        x = localCF(longStr).digest()
-    end = time.time()
-
-    print ('%2.2f' % (end-start)), "seconds", iterations, "x", len(longStr), "bytes", name
-
-def test_create():
-    start = time.time()
-    for f in xrange(20000):
-        d = creatorFunc()
-    end = time.time()
-
-    print ('%2.2f' % (end-start)), "seconds", '[20000 creations]'
-
-def test_zero():
-    start = time.time()
-    for f in xrange(20000):
-        x = creatorFunc().digest()
-    end = time.time()
-
-    print ('%2.2f' % (end-start)), "seconds", '[20000 "" digests]'
-
-
-
-hName = sys.argv[1]
-
-#
-# setup our creatorFunc to test the requested hash
-#
-if hName in ('_md5', '_sha'):
-    exec 'import '+hName
-    exec 'creatorFunc = '+hName+'.new'
-    print "testing speed of old", hName, "legacy interface"
-elif hName == '_hashlib' and len(sys.argv) > 3:
-    import _hashlib
-    exec 'creatorFunc = _hashlib.%s' % sys.argv[2]
-    print "testing speed of _hashlib.%s" % sys.argv[2], getattr(_hashlib, sys.argv[2])
-elif hName == '_hashlib' and len(sys.argv) == 3:
-    import _hashlib
-    exec 'creatorFunc = lambda x=_hashlib.new : x(%r)' % sys.argv[2]
-    print "testing speed of _hashlib.new(%r)" % sys.argv[2]
-elif hasattr(hashlib, hName) and callable(getattr(hashlib, hName)):
-    creatorFunc = getattr(hashlib, hName)
-    print "testing speed of hashlib."+hName, getattr(hashlib, hName)
-else:
-    exec "creatorFunc = lambda x=hashlib.new : x(%r)" % hName
-    print "testing speed of hashlib.new(%r)" % hName
-
-try:
-    test_create()
-except ValueError:
-    print
-    print "pass argument(s) naming the hash to run a speed test on:"
-    print " '_md5' and '_sha' test the legacy builtin md5 and sha"
-    print " '_hashlib' 'openssl_hName' 'fast' tests the builtin _hashlib"
-    print " '_hashlib' 'hName' tests builtin _hashlib.new(shaFOO)"
-    print " 'hName' tests the hashlib.hName() implementation if it exists"
-    print "         otherwise it uses hashlib.new(hName)."
-    print
-    raise
-
-test_zero()
-test_scaled_msg(scale=106201, name='[huge data]')
-test_scaled_msg(scale=10620, name='[large data]')
-test_scaled_msg(scale=1062, name='[medium data]')
-test_scaled_msg(scale=424, name='[4*small data]')
-test_scaled_msg(scale=336, name='[3*small data]')
-test_scaled_msg(scale=212, name='[2*small data]')
-test_scaled_msg(scale=106, name='[small data]')
-test_scaled_msg(scale=creatorFunc().digest_size, name='[digest_size data]')
-test_scaled_msg(scale=10, name='[tiny data]')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/tokenize_tests.txt b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/tokenize_tests.txt
deleted file mode 100644
index b1b970e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/tokenize_tests.txt
+++ /dev/null
@@ -1,178 +0,0 @@
-# Tests for the 'tokenize' module.
-# Large bits stolen from test_grammar.py. 
-
-# Comments
-"#"
-#'
-#"
-#\
-       #
-    # abc
-'''#
-#'''
-
-x = 1  #
-
-# Balancing continuation
-
-a = (3, 4,
-  5, 6)
-y = [3, 4,
-  5]
-z = {'a':5,
-  'b':6}
-x = (len(`y`) + 5*x - a[
-   3 ]
-   - x + len({
-   }
-    )
-  )
-
-# Backslash means line continuation:
-x = 1 \
-+ 1
-
-# Backslash does not means continuation in comments :\
-x = 0
-
-# Ordinary integers
-0xff <> 255
-0377 <> 255
-2147483647   != 017777777777
--2147483647-1 != 020000000000
-037777777777 != -1
-0xffffffff != -1
-
-# Long integers
-x = 0L
-x = 0l
-x = 0xffffffffffffffffL
-x = 0xffffffffffffffffl
-x = 077777777777777777L
-x = 077777777777777777l
-x = 123456789012345678901234567890L
-x = 123456789012345678901234567890l
-
-# Floating-point numbers
-x = 3.14
-x = 314.
-x = 0.314
-# XXX x = 000.314
-x = .314
-x = 3e14
-x = 3E14
-x = 3e-14
-x = 3e+14
-x = 3.e14
-x = .3e14
-x = 3.1e4
-
-# String literals
-x = ''; y = "";
-x = '\''; y = "'";
-x = '"'; y = "\"";
-x = "doesn't \"shrink\" does it"
-y = 'doesn\'t "shrink" does it'
-x = "does \"shrink\" doesn't it"
-y = 'does "shrink" doesn\'t it'
-x = """
-The "quick"
-brown fox
-jumps over
-the 'lazy' dog.
-"""
-y = '\nThe "quick"\nbrown fox\njumps over\nthe \'lazy\' dog.\n'
-y = '''
-The "quick"
-brown fox
-jumps over
-the 'lazy' dog.
-''';
-y = "\n\
-The \"quick\"\n\
-brown fox\n\
-jumps over\n\
-the 'lazy' dog.\n\
-";
-y = '\n\
-The \"quick\"\n\
-brown fox\n\
-jumps over\n\
-the \'lazy\' dog.\n\
-';
-x = r'\\' + R'\\'
-x = r'\'' + ''
-y = r'''
-foo bar \\
-baz''' + R'''
-foo'''
-y = r"""foo
-bar \\ baz
-""" + R'''spam
-'''
-x = u'abc' + U'ABC'
-y = u"abc" + U"ABC"
-x = ur'abc' + Ur'ABC' + uR'ABC' + UR'ABC'
-y = ur"abc" + Ur"ABC" + uR"ABC" + UR"ABC"
-x = ur'\\' + UR'\\'
-x = ur'\'' + ''
-y = ur'''
-foo bar \\
-baz''' + UR'''
-foo'''
-y = Ur"""foo
-bar \\ baz
-""" + uR'''spam
-'''
-
-# Indentation
-if 1:
-    x = 2
-if 1:
-        x = 2
-if 1:
-    while 0:
-     if 0:
-           x = 2
-     x = 2
-if 0:
-  if 2:
-   while 0:
-        if 1:
-          x = 2
-
-# Operators
-
-def d22(a, b, c=1, d=2): pass
-def d01v(a=1, *restt, **restd): pass
-
-(x, y) <> ({'a':1}, {'b':2})
-
-# comparison
-if 1 < 1 > 1 == 1 >= 1 <= 1 <> 1 != 1 in 1 not in 1 is 1 is not 1: pass
-
-# binary
-x = 1 & 1
-x = 1 ^ 1
-x = 1 | 1
-
-# shift
-x = 1 << 1 >> 1
-
-# additive
-x = 1 - 1 + 1 - 1 + 1
-
-# multiplicative
-x = 1 / 1 * 1 % 1
-
-# unary
-x = ~1 ^ 1 & 1 | 1 & 1 ^ -1
-x = -1*1/1 + 1*1 - ---1*1
-
-# selector
-import sys, time
-x = sys.modules['time'].time()
-
-@staticmethod
-def foo(): pass
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/tracedmodules/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/tracedmodules/__init__.py
deleted file mode 100644
index 7f16357..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/tracedmodules/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-"""This package contains modules that help testing the trace.py module. Note
-that the exact location of functions in these modules is important, as trace.py
-takes the real line numbers into account.
-"""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/tracedmodules/testmod.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/tracedmodules/testmod.py
deleted file mode 100644
index 06c93f6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/tracedmodules/testmod.py
+++ /dev/null
@@ -1,9 +0,0 @@
-def func(x):
-    b = x + 1
-    return b + 2
-
-def func2():
-    """Test function for issue 9936 """
-    return (1,
-            2,
-            3)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/warning_tests.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/warning_tests.py
deleted file mode 100644
index aeee3d1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/warning_tests.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Helper module for testing the skipmodules argument of warnings.warn()
-
-import warnings
-
-def outer(message, stacklevel=1):
-    inner(message, stacklevel)
-
-def inner(message, stacklevel=1):
-    warnings.warn(message, stacklevel=stacklevel)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/win_console_handler.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/win_console_handler.py
deleted file mode 100644
index bb68a85..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/win_console_handler.py
+++ /dev/null
@@ -1,49 +0,0 @@
-"""Script used to test os.kill on Windows, for issue #1220212
-
-This script is started as a subprocess in test_os and is used to test the
-CTRL_C_EVENT and CTRL_BREAK_EVENT signals, which requires a custom handler
-to be written into the kill target.
-
-See http://msdn.microsoft.com/en-us/library/ms685049%28v=VS.85%29.aspx for a
-similar example in C.
-"""
-
-from ctypes import wintypes, WINFUNCTYPE
-import signal
-import ctypes
-import mmap
-import sys
-
-# Function prototype for the handler function. Returns BOOL, takes a DWORD.
-HandlerRoutine = WINFUNCTYPE(wintypes.BOOL, wintypes.DWORD)
-
-def _ctrl_handler(sig):
-    """Handle a sig event and return 0 to terminate the process"""
-    if sig == signal.CTRL_C_EVENT:
-        pass
-    elif sig == signal.CTRL_BREAK_EVENT:
-        pass
-    else:
-        print("UNKNOWN EVENT")
-    return 0
-
-ctrl_handler = HandlerRoutine(_ctrl_handler)
-
-
-SetConsoleCtrlHandler = ctypes.windll.kernel32.SetConsoleCtrlHandler
-SetConsoleCtrlHandler.argtypes = (HandlerRoutine, wintypes.BOOL)
-SetConsoleCtrlHandler.restype = wintypes.BOOL
-
-if __name__ == "__main__":
-    # Add our console control handling function with value 1
-    if not SetConsoleCtrlHandler(ctrl_handler, 1):
-        print("Unable to add SetConsoleCtrlHandler")
-        exit(-1)
-
-    # Awaken mail process
-    m = mmap.mmap(-1, 1, sys.argv[1])
-    m[0] = '1'
-
-    # Do nothing but wait for the signal
-    while True:
-        pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/wrongcert.pem b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/wrongcert.pem
deleted file mode 100644
index ddfdb85..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/wrongcert.pem
+++ /dev/null
@@ -1,32 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQC89ZNxjTgWgq7Z1g0tJ65w+k7lNAj5IgjLb155UkUrz0XsHDnH
-FlbsVUg2Xtk6+bo2UEYIzN7cIm5ImpmyW/2z0J1IDVDlvR2xJ659xrE0v5c2cB6T
-f9lnNTwpSoeK24Nd7Jwq4j9vk95fLrdqsBq0/KVlsCXeixS/CaqqduXfvwIDAQAB
-AoGAQFko4uyCgzfxr4Ezb4Mp5pN3Npqny5+Jey3r8EjSAX9Ogn+CNYgoBcdtFgbq
-1yif/0sK7ohGBJU9FUCAwrqNBI9ZHB6rcy7dx+gULOmRBGckln1o5S1+smVdmOsW
-7zUVLBVByKuNWqTYFlzfVd6s4iiXtAE2iHn3GCyYdlICwrECQQDhMQVxHd3EFbzg
-SFmJBTARlZ2GKA3c1g/h9/XbkEPQ9/RwI3vnjJ2RaSnjlfoLl8TOcf0uOGbOEyFe
-19RvCLXjAkEA1s+UE5ziF+YVkW3WolDCQ2kQ5WG9+ccfNebfh6b67B7Ln5iG0Sbg
-ky9cjsO3jbMJQtlzAQnH1850oRD5Gi51dQJAIbHCDLDZU9Ok1TI+I2BhVuA6F666
-lEZ7TeZaJSYq34OaUYUdrwG9OdqwZ9sy9LUav4ESzu2lhEQchCJrKMn23QJAReqs
-ZLHUeTjfXkVk7dHhWPWSlUZ6AhmIlA/AQ7Payg2/8wM/JkZEJEPvGVykms9iPUrv
-frADRr+hAGe43IewnQJBAJWKZllPgKuEBPwoEldHNS8nRu61D7HzxEzQ2xnfj+Nk
-2fgf1MAzzTRsikfGENhVsVWeqOcijWb6g5gsyCmlRpc=
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIICsDCCAhmgAwIBAgIJAOqYOYFJfEEoMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
-BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
-aWRnaXRzIFB0eSBMdGQwHhcNMDgwNjI2MTgxNTUyWhcNMDkwNjI2MTgxNTUyWjBF
-MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
-ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
-gQC89ZNxjTgWgq7Z1g0tJ65w+k7lNAj5IgjLb155UkUrz0XsHDnHFlbsVUg2Xtk6
-+bo2UEYIzN7cIm5ImpmyW/2z0J1IDVDlvR2xJ659xrE0v5c2cB6Tf9lnNTwpSoeK
-24Nd7Jwq4j9vk95fLrdqsBq0/KVlsCXeixS/CaqqduXfvwIDAQABo4GnMIGkMB0G
-A1UdDgQWBBTctMtI3EO9OjLI0x9Zo2ifkwIiNjB1BgNVHSMEbjBsgBTctMtI3EO9
-OjLI0x9Zo2ifkwIiNqFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUt
-U3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAOqYOYFJ
-fEEoMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAQwa7jya/DfhaDn7E
-usPkpgIX8WCL2B1SqnRTXEZfBPPVq/cUmFGyEVRVATySRuMwi8PXbVcOhXXuocA+
-43W+iIsD9pXapCZhhOerCq18TC1dWK98vLUsoK8PMjB6e5H/O8bqojv0EeC+fyCw
-eSHj5jpC8iZKjCHBn+mAi4cQ514=
------END CERTIFICATE-----
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/simple-ns.xml b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/simple-ns.xml
deleted file mode 100644
index e4c1ac6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/simple-ns.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?pi data?>
-<!-- comment -->
-<root xmlns='namespace'>
-   <element key='value'>text</element>
-   <element>text</element>tail
-   <empty-element/>
-</root>
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/simple.xml b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/simple.xml
deleted file mode 100644
index 2315e78..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/simple.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<!-- comment -->
-<root>
-   <element key='value'>text</element>
-   <element>text</element>tail
-   <empty-element/>
-</root>
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/test.xml b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/test.xml
deleted file mode 100644
index a6d389e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/test.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0"?>
-<HTML xmlns:pp="http://www.isogen.com/paul/post-processor">
-<TITLE>Introduction to XSL</TITLE>
-<H1>Introduction to XSL</H1>
-	
-
-	
-		<HR/>
-		<H2>Overview
-</H2>
-		<UL>
-		
-	<LI>1.Intro</LI>
-
-	<LI>2.History</LI>
-
-	<LI>3.XSL Basics</LI>
-
-	<LI>Lunch</LI>
-
-	<LI>4.An XML Data Model</LI>
-
-	<LI>5.XSL Patterns</LI>
-
-	<LI>6.XSL Templates</LI>
-
-	<LI>7.XSL Formatting Model
-</LI>
-
-		</UL>
-	
-
-
-	
-
-	
-		<HR/>
-		<H2>Intro</H2>
-		<UL>
-		
-	<LI>Who am I?</LI>
-
-	<LI>Who are you?</LI>
-
-	<LI>Why are we here?
-</LI>
-
-		</UL>
-	
-
-
-	
-
-	
-		<HR/>
-		<H2>History: XML and SGML</H2>
-		<UL>
-		
-	<LI>XML is a subset of SGML.</LI>
-
-	<LI>SGML allows the separation of abstract content from formatting.</LI>
-
-	<LI>Also one of XML's primary virtues (in the doc publishing domain).
-</LI>
-
-		</UL>
-	
-
-
-	
-
-	
-		<HR/>
-		<H2>History: What are stylesheets?</H2>
-		<UL>
-		
-	<LI>Stylesheets specify the formatting of SGML/XML documents.</LI>
-
-	<LI>Stylesheets put the &quot;style&quot; back into documents.</LI>
-
-	<LI>New York Times content+NYT Stylesheet = NYT paper
-</LI>
-
-		</UL>
-	
-
-
-	
-
-	
-		<HR/>
-		<H2>History: FOSI</H2>
-		<UL>
-		
-	<LI>FOSI: &quot;Formatted Output Specification Instance&quot;
-<UL>
-	<LI>MIL-STD-28001
-	</LI>
-
-	<LI>FOSI's are SGML documents
-	</LI>
-
-	<LI>A stylesheet for another document
-	</LI>
-</UL></LI>
-
-	<LI>Obsolete but implemented...
-</LI>
-
-		</UL>
-	
-
-
-	
-</HTML>
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/test.xml.out b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/test.xml.out
deleted file mode 100644
index 30beed7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltestdata/test.xml.out
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<HTML xmlns:pp="http://www.isogen.com/paul/post-processor">
-<TITLE>Introduction to XSL</TITLE>
-<H1>Introduction to XSL</H1>
-	
-
-	
-		<HR></HR>
-		<H2>Overview
-</H2>
-		<UL>
-		
-	<LI>1.Intro</LI>
-
-	<LI>2.History</LI>
-
-	<LI>3.XSL Basics</LI>
-
-	<LI>Lunch</LI>
-
-	<LI>4.An XML Data Model</LI>
-
-	<LI>5.XSL Patterns</LI>
-
-	<LI>6.XSL Templates</LI>
-
-	<LI>7.XSL Formatting Model
-</LI>
-
-		</UL>
-	
-
-
-	
-
-	
-		<HR></HR>
-		<H2>Intro</H2>
-		<UL>
-		
-	<LI>Who am I?</LI>
-
-	<LI>Who are you?</LI>
-
-	<LI>Why are we here?
-</LI>
-
-		</UL>
-	
-
-
-	
-
-	
-		<HR></HR>
-		<H2>History: XML and SGML</H2>
-		<UL>
-		
-	<LI>XML is a subset of SGML.</LI>
-
-	<LI>SGML allows the separation of abstract content from formatting.</LI>
-
-	<LI>Also one of XML's primary virtues (in the doc publishing domain).
-</LI>
-
-		</UL>
-	
-
-
-	
-
-	
-		<HR></HR>
-		<H2>History: What are stylesheets?</H2>
-		<UL>
-		
-	<LI>Stylesheets specify the formatting of SGML/XML documents.</LI>
-
-	<LI>Stylesheets put the "style" back into documents.</LI>
-
-	<LI>New York Times content+NYT Stylesheet = NYT paper
-</LI>
-
-		</UL>
-	
-
-
-	
-
-	
-		<HR></HR>
-		<H2>History: FOSI</H2>
-		<UL>
-		
-	<LI>FOSI: "Formatted Output Specification Instance"
-<UL>
-	<LI>MIL-STD-28001
-	</LI>
-
-	<LI>FOSI's are SGML documents
-	</LI>
-
-	<LI>A stylesheet for another document
-	</LI>
-</UL></LI>
-
-	<LI>Obsolete but implemented...
-</LI>
-
-		</UL>
-	
-
-
-	
-</HTML>
\ No newline at end of file
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltests.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltests.py
deleted file mode 100644
index f5eba69..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/xmltests.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Convenience test module to run all of the XML-related tests in the
-# standard library.
-
-import sys
-import test.test_support
-
-test.test_support.verbose = 0
-
-def runtest(name):
-    __import__(name)
-    module = sys.modules[name]
-    if hasattr(module, "test_main"):
-        module.test_main()
-
-runtest("test.test_minidom")
-runtest("test.test_pyexpat")
-runtest("test.test_sax")
-runtest("test.test_xml_etree")
-runtest("test.test_xml_etree_c")
-runtest("test.test_xmllib")
-runtest("test.test_xmlrpc")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/zipdir.zip b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/zipdir.zip
deleted file mode 100644
index ac21d7a1edd2ca1177f071465ca141ab405b1927..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 374
zcmWIWW@h1H0D-@|RIR`aD8a-a%8;lZ8p6rIT-%Z4IUR^YD_9s_Fu!09fNNshjjD+S
ztSJeit&wPLtWa&qVCz8oKp0^iBa=8YE?4qG-7CQG))B-6xtSH>=FkcTh5&DbW=z*2
uYc>UI2Du%m9b!Lz?W_zi?F<Y{8gro9fqp>I&&mdJ6*Ca-0n$rA90maKRyZ91

diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/textwrap.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/textwrap.py
deleted file mode 100644
index 21e1d06..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/textwrap.py
+++ /dev/null
@@ -1,417 +0,0 @@
-"""Text wrapping and filling.
-"""
-
-# Copyright (C) 1999-2001 Gregory P. Ward.
-# Copyright (C) 2002, 2003 Python Software Foundation.
-# Written by Greg Ward <gward@python.net>
-
-__revision__ = "$Id$"
-
-import string, re
-
-# Do the right thing with boolean values for all known Python versions
-# (so this module can be copied to projects that don't depend on Python
-# 2.3, e.g. Optik and Docutils) by uncommenting the block of code below.
-#try:
-#    True, False
-#except NameError:
-#    (True, False) = (1, 0)
-
-__all__ = ['TextWrapper', 'wrap', 'fill', 'dedent']
-
-# Hardcode the recognized whitespace characters to the US-ASCII
-# whitespace characters.  The main reason for doing this is that in
-# ISO-8859-1, 0xa0 is non-breaking whitespace, so in certain locales
-# that character winds up in string.whitespace.  Respecting
-# string.whitespace in those cases would 1) make textwrap treat 0xa0 the
-# same as any other whitespace char, which is clearly wrong (it's a
-# *non-breaking* space), 2) possibly cause problems with Unicode,
-# since 0xa0 is not in range(128).
-_whitespace = '\t\n\x0b\x0c\r '
-
-class TextWrapper:
-    """
-    Object for wrapping/filling text.  The public interface consists of
-    the wrap() and fill() methods; the other methods are just there for
-    subclasses to override in order to tweak the default behaviour.
-    If you want to completely replace the main wrapping algorithm,
-    you'll probably have to override _wrap_chunks().
-
-    Several instance attributes control various aspects of wrapping:
-      width (default: 70)
-        the maximum width of wrapped lines (unless break_long_words
-        is false)
-      initial_indent (default: "")
-        string that will be prepended to the first line of wrapped
-        output.  Counts towards the line's width.
-      subsequent_indent (default: "")
-        string that will be prepended to all lines save the first
-        of wrapped output; also counts towards each line's width.
-      expand_tabs (default: true)
-        Expand tabs in input text to spaces before further processing.
-        Each tab will become 1 .. 8 spaces, depending on its position in
-        its line.  If false, each tab is treated as a single character.
-      replace_whitespace (default: true)
-        Replace all whitespace characters in the input text by spaces
-        after tab expansion.  Note that if expand_tabs is false and
-        replace_whitespace is true, every tab will be converted to a
-        single space!
-      fix_sentence_endings (default: false)
-        Ensure that sentence-ending punctuation is always followed
-        by two spaces.  Off by default because the algorithm is
-        (unavoidably) imperfect.
-      break_long_words (default: true)
-        Break words longer than 'width'.  If false, those words will not
-        be broken, and some lines might be longer than 'width'.
-      break_on_hyphens (default: true)
-        Allow breaking hyphenated words. If true, wrapping will occur
-        preferably on whitespaces and right after hyphens part of
-        compound words.
-      drop_whitespace (default: true)
-        Drop leading and trailing whitespace from lines.
-    """
-
-    whitespace_trans = string.maketrans(_whitespace, ' ' * len(_whitespace))
-
-    unicode_whitespace_trans = {}
-    uspace = ord(u' ')
-    for x in map(ord, _whitespace):
-        unicode_whitespace_trans[x] = uspace
-
-    # This funky little regex is just the trick for splitting
-    # text up into word-wrappable chunks.  E.g.
-    #   "Hello there -- you goof-ball, use the -b option!"
-    # splits into
-    #   Hello/ /there/ /--/ /you/ /goof-/ball,/ /use/ /the/ /-b/ /option!
-    # (after stripping out empty strings).
-    wordsep_re = re.compile(
-        r'(\s+|'                                  # any whitespace
-        r'[^\s\w]*\w+[^0-9\W]-(?=\w+[^0-9\W])|'   # hyphenated words
-        r'(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))')   # em-dash
-
-    # This less funky little regex just split on recognized spaces. E.g.
-    #   "Hello there -- you goof-ball, use the -b option!"
-    # splits into
-    #   Hello/ /there/ /--/ /you/ /goof-ball,/ /use/ /the/ /-b/ /option!/
-    wordsep_simple_re = re.compile(r'(\s+)')
-
-    # XXX this is not locale- or charset-aware -- string.lowercase
-    # is US-ASCII only (and therefore English-only)
-    sentence_end_re = re.compile(r'[%s]'              # lowercase letter
-                                 r'[\.\!\?]'          # sentence-ending punct.
-                                 r'[\"\']?'           # optional end-of-quote
-                                 r'\Z'                # end of chunk
-                                 % string.lowercase)
-
-
-    def __init__(self,
-                 width=70,
-                 initial_indent="",
-                 subsequent_indent="",
-                 expand_tabs=True,
-                 replace_whitespace=True,
-                 fix_sentence_endings=False,
-                 break_long_words=True,
-                 drop_whitespace=True,
-                 break_on_hyphens=True):
-        self.width = width
-        self.initial_indent = initial_indent
-        self.subsequent_indent = subsequent_indent
-        self.expand_tabs = expand_tabs
-        self.replace_whitespace = replace_whitespace
-        self.fix_sentence_endings = fix_sentence_endings
-        self.break_long_words = break_long_words
-        self.drop_whitespace = drop_whitespace
-        self.break_on_hyphens = break_on_hyphens
-
-        # recompile the regexes for Unicode mode -- done in this clumsy way for
-        # backwards compatibility because it's rather common to monkey-patch
-        # the TextWrapper class' wordsep_re attribute.
-        self.wordsep_re_uni = re.compile(self.wordsep_re.pattern, re.U)
-        self.wordsep_simple_re_uni = re.compile(
-            self.wordsep_simple_re.pattern, re.U)
-
-
-    # -- Private methods -----------------------------------------------
-    # (possibly useful for subclasses to override)
-
-    def _munge_whitespace(self, text):
-        """_munge_whitespace(text : string) -> string
-
-        Munge whitespace in text: expand tabs and convert all other
-        whitespace characters to spaces.  Eg. " foo\tbar\n\nbaz"
-        becomes " foo    bar  baz".
-        """
-        if self.expand_tabs:
-            text = text.expandtabs()
-        if self.replace_whitespace:
-            if isinstance(text, str):
-                text = text.translate(self.whitespace_trans)
-            elif isinstance(text, unicode):
-                text = text.translate(self.unicode_whitespace_trans)
-        return text
-
-
-    def _split(self, text):
-        """_split(text : string) -> [string]
-
-        Split the text to wrap into indivisible chunks.  Chunks are
-        not quite the same as words; see _wrap_chunks() for full
-        details.  As an example, the text
-          Look, goof-ball -- use the -b option!
-        breaks into the following chunks:
-          'Look,', ' ', 'goof-', 'ball', ' ', '--', ' ',
-          'use', ' ', 'the', ' ', '-b', ' ', 'option!'
-        if break_on_hyphens is True, or in:
-          'Look,', ' ', 'goof-ball', ' ', '--', ' ',
-          'use', ' ', 'the', ' ', '-b', ' ', option!'
-        otherwise.
-        """
-        if isinstance(text, unicode):
-            if self.break_on_hyphens:
-                pat = self.wordsep_re_uni
-            else:
-                pat = self.wordsep_simple_re_uni
-        else:
-            if self.break_on_hyphens:
-                pat = self.wordsep_re
-            else:
-                pat = self.wordsep_simple_re
-        chunks = pat.split(text)
-        chunks = filter(None, chunks)  # remove empty chunks
-        return chunks
-
-    def _fix_sentence_endings(self, chunks):
-        """_fix_sentence_endings(chunks : [string])
-
-        Correct for sentence endings buried in 'chunks'.  Eg. when the
-        original text contains "... foo.\nBar ...", munge_whitespace()
-        and split() will convert that to [..., "foo.", " ", "Bar", ...]
-        which has one too few spaces; this method simply changes the one
-        space to two.
-        """
-        i = 0
-        patsearch = self.sentence_end_re.search
-        while i < len(chunks)-1:
-            if chunks[i+1] == " " and patsearch(chunks[i]):
-                chunks[i+1] = "  "
-                i += 2
-            else:
-                i += 1
-
-    def _handle_long_word(self, reversed_chunks, cur_line, cur_len, width):
-        """_handle_long_word(chunks : [string],
-                             cur_line : [string],
-                             cur_len : int, width : int)
-
-        Handle a chunk of text (most likely a word, not whitespace) that
-        is too long to fit in any line.
-        """
-        # Figure out when indent is larger than the specified width, and make
-        # sure at least one character is stripped off on every pass
-        if width < 1:
-            space_left = 1
-        else:
-            space_left = width - cur_len
-
-        # If we're allowed to break long words, then do so: put as much
-        # of the next chunk onto the current line as will fit.
-        if self.break_long_words:
-            cur_line.append(reversed_chunks[-1][:space_left])
-            reversed_chunks[-1] = reversed_chunks[-1][space_left:]
-
-        # Otherwise, we have to preserve the long word intact.  Only add
-        # it to the current line if there's nothing already there --
-        # that minimizes how much we violate the width constraint.
-        elif not cur_line:
-            cur_line.append(reversed_chunks.pop())
-
-        # If we're not allowed to break long words, and there's already
-        # text on the current line, do nothing.  Next time through the
-        # main loop of _wrap_chunks(), we'll wind up here again, but
-        # cur_len will be zero, so the next line will be entirely
-        # devoted to the long word that we can't handle right now.
-
-    def _wrap_chunks(self, chunks):
-        """_wrap_chunks(chunks : [string]) -> [string]
-
-        Wrap a sequence of text chunks and return a list of lines of
-        length 'self.width' or less.  (If 'break_long_words' is false,
-        some lines may be longer than this.)  Chunks correspond roughly
-        to words and the whitespace between them: each chunk is
-        indivisible (modulo 'break_long_words'), but a line break can
-        come between any two chunks.  Chunks should not have internal
-        whitespace; ie. a chunk is either all whitespace or a "word".
-        Whitespace chunks will be removed from the beginning and end of
-        lines, but apart from that whitespace is preserved.
-        """
-        lines = []
-        if self.width <= 0:
-            raise ValueError("invalid width %r (must be > 0)" % self.width)
-
-        # Arrange in reverse order so items can be efficiently popped
-        # from a stack of chucks.
-        chunks.reverse()
-
-        while chunks:
-
-            # Start the list of chunks that will make up the current line.
-            # cur_len is just the length of all the chunks in cur_line.
-            cur_line = []
-            cur_len = 0
-
-            # Figure out which static string will prefix this line.
-            if lines:
-                indent = self.subsequent_indent
-            else:
-                indent = self.initial_indent
-
-            # Maximum width for this line.
-            width = self.width - len(indent)
-
-            # First chunk on line is whitespace -- drop it, unless this
-            # is the very beginning of the text (ie. no lines started yet).
-            if self.drop_whitespace and chunks[-1].strip() == '' and lines:
-                del chunks[-1]
-
-            while chunks:
-                l = len(chunks[-1])
-
-                # Can at least squeeze this chunk onto the current line.
-                if cur_len + l <= width:
-                    cur_line.append(chunks.pop())
-                    cur_len += l
-
-                # Nope, this line is full.
-                else:
-                    break
-
-            # The current line is full, and the next chunk is too big to
-            # fit on *any* line (not just this one).
-            if chunks and len(chunks[-1]) > width:
-                self._handle_long_word(chunks, cur_line, cur_len, width)
-
-            # If the last chunk on this line is all whitespace, drop it.
-            if self.drop_whitespace and cur_line and cur_line[-1].strip() == '':
-                del cur_line[-1]
-
-            # Convert current line back to a string and store it in list
-            # of all lines (return value).
-            if cur_line:
-                lines.append(indent + ''.join(cur_line))
-
-        return lines
-
-
-    # -- Public interface ----------------------------------------------
-
-    def wrap(self, text):
-        """wrap(text : string) -> [string]
-
-        Reformat the single paragraph in 'text' so it fits in lines of
-        no more than 'self.width' columns, and return a list of wrapped
-        lines.  Tabs in 'text' are expanded with string.expandtabs(),
-        and all other whitespace characters (including newline) are
-        converted to space.
-        """
-        text = self._munge_whitespace(text)
-        chunks = self._split(text)
-        if self.fix_sentence_endings:
-            self._fix_sentence_endings(chunks)
-        return self._wrap_chunks(chunks)
-
-    def fill(self, text):
-        """fill(text : string) -> string
-
-        Reformat the single paragraph in 'text' to fit in lines of no
-        more than 'self.width' columns, and return a new string
-        containing the entire wrapped paragraph.
-        """
-        return "\n".join(self.wrap(text))
-
-
-# -- Convenience interface ---------------------------------------------
-
-def wrap(text, width=70, **kwargs):
-    """Wrap a single paragraph of text, returning a list of wrapped lines.
-
-    Reformat the single paragraph in 'text' so it fits in lines of no
-    more than 'width' columns, and return a list of wrapped lines.  By
-    default, tabs in 'text' are expanded with string.expandtabs(), and
-    all other whitespace characters (including newline) are converted to
-    space.  See TextWrapper class for available keyword args to customize
-    wrapping behaviour.
-    """
-    w = TextWrapper(width=width, **kwargs)
-    return w.wrap(text)
-
-def fill(text, width=70, **kwargs):
-    """Fill a single paragraph of text, returning a new string.
-
-    Reformat the single paragraph in 'text' to fit in lines of no more
-    than 'width' columns, and return a new string containing the entire
-    wrapped paragraph.  As with wrap(), tabs are expanded and other
-    whitespace characters converted to space.  See TextWrapper class for
-    available keyword args to customize wrapping behaviour.
-    """
-    w = TextWrapper(width=width, **kwargs)
-    return w.fill(text)
-
-
-# -- Loosely related functionality -------------------------------------
-
-_whitespace_only_re = re.compile('^[ \t]+$', re.MULTILINE)
-_leading_whitespace_re = re.compile('(^[ \t]*)(?:[^ \t\n])', re.MULTILINE)
-
-def dedent(text):
-    """Remove any common leading whitespace from every line in `text`.
-
-    This can be used to make triple-quoted strings line up with the left
-    edge of the display, while still presenting them in the source code
-    in indented form.
-
-    Note that tabs and spaces are both treated as whitespace, but they
-    are not equal: the lines "  hello" and "\thello" are
-    considered to have no common leading whitespace.  (This behaviour is
-    new in Python 2.5; older versions of this module incorrectly
-    expanded tabs before searching for common leading whitespace.)
-    """
-    # Look for the longest leading string of spaces and tabs common to
-    # all lines.
-    margin = None
-    text = _whitespace_only_re.sub('', text)
-    indents = _leading_whitespace_re.findall(text)
-    for indent in indents:
-        if margin is None:
-            margin = indent
-
-        # Current line more deeply indented than previous winner:
-        # no change (previous winner is still on top).
-        elif indent.startswith(margin):
-            pass
-
-        # Current line consistent with and no deeper than previous winner:
-        # it's the new winner.
-        elif margin.startswith(indent):
-            margin = indent
-
-        # Current line and previous winner have no common whitespace:
-        # there is no margin.
-        else:
-            margin = ""
-            break
-
-    # sanity check (testing/debugging only)
-    if 0 and margin:
-        for line in text.split("\n"):
-            assert not line or line.startswith(margin), \
-                   "line = %r, margin = %r" % (line, margin)
-
-    if margin:
-        text = re.sub(r'(?m)^' + margin, '', text)
-    return text
-
-if __name__ == "__main__":
-    #print dedent("\tfoo\n\tbar")
-    #print dedent("  \thello there\n  \t  how are you?")
-    print dedent("Hello there.\n  This is indented.")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/this.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/this.py
deleted file mode 100644
index d4749c9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/this.py
+++ /dev/null
@@ -1,28 +0,0 @@
-s = """Gur Mra bs Clguba, ol Gvz Crgref
-
-Ornhgvshy vf orggre guna htyl.
-Rkcyvpvg vf orggre guna vzcyvpvg.
-Fvzcyr vf orggre guna pbzcyrk.
-Pbzcyrk vf orggre guna pbzcyvpngrq.
-Syng vf orggre guna arfgrq.
-Fcnefr vf orggre guna qrafr.
-Ernqnovyvgl pbhagf.
-Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
-Nygubhtu cenpgvpnyvgl orngf chevgl.
-Reebef fubhyq arire cnff fvyragyl.
-Hayrff rkcyvpvgyl fvyraprq.
-Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
-Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
-Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
-Abj vf orggre guna arire.
-Nygubhtu arire vf bsgra orggre guna *evtug* abj.
-Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
-Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
-Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!"""
-
-d = {}
-for c in (65, 97):
-    for i in range(26):
-        d[chr(i+c)] = chr((i+13) % 26 + c)
-
-print "".join([d.get(c, c) for c in s])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/timeit.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/timeit.py
deleted file mode 100644
index 1ec4137..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/timeit.py
+++ /dev/null
@@ -1,328 +0,0 @@
-#! /usr/bin/env python
-
-"""Tool for measuring execution time of small code snippets.
-
-This module avoids a number of common traps for measuring execution
-times.  See also Tim Peters' introduction to the Algorithms chapter in
-the Python Cookbook, published by O'Reilly.
-
-Library usage: see the Timer class.
-
-Command line usage:
-    python timeit.py [-n N] [-r N] [-s S] [-t] [-c] [-h] [--] [statement]
-
-Options:
-  -n/--number N: how many times to execute 'statement' (default: see below)
-  -r/--repeat N: how many times to repeat the timer (default 3)
-  -s/--setup S: statement to be executed once initially (default 'pass')
-  -t/--time: use time.time() (default on Unix)
-  -c/--clock: use time.clock() (default on Windows)
-  -v/--verbose: print raw timing results; repeat for more digits precision
-  -h/--help: print this usage message and exit
-  --: separate options from statement, use when statement starts with -
-  statement: statement to be timed (default 'pass')
-
-A multi-line statement may be given by specifying each line as a
-separate argument; indented lines are possible by enclosing an
-argument in quotes and using leading spaces.  Multiple -s options are
-treated similarly.
-
-If -n is not given, a suitable number of loops is calculated by trying
-successive powers of 10 until the total time is at least 0.2 seconds.
-
-The difference in default timer function is because on Windows,
-clock() has microsecond granularity but time()'s granularity is 1/60th
-of a second; on Unix, clock() has 1/100th of a second granularity and
-time() is much more precise.  On either platform, the default timer
-functions measure wall clock time, not the CPU time.  This means that
-other processes running on the same computer may interfere with the
-timing.  The best thing to do when accurate timing is necessary is to
-repeat the timing a few times and use the best time.  The -r option is
-good for this; the default of 3 repetitions is probably enough in most
-cases.  On Unix, you can use clock() to measure CPU time.
-
-Note: there is a certain baseline overhead associated with executing a
-pass statement.  The code here doesn't try to hide it, but you should
-be aware of it.  The baseline overhead can be measured by invoking the
-program without arguments.
-
-The baseline overhead differs between Python versions!  Also, to
-fairly compare older Python versions to Python 2.3, you may want to
-use python -O for the older versions to avoid timing SET_LINENO
-instructions.
-"""
-
-import gc
-import sys
-import time
-try:
-    import itertools
-except ImportError:
-    # Must be an older Python version (see timeit() below)
-    itertools = None
-
-__all__ = ["Timer"]
-
-dummy_src_name = "<timeit-src>"
-default_number = 1000000
-default_repeat = 3
-
-if sys.platform == "win32":
-    # On Windows, the best timer is time.clock()
-    default_timer = time.clock
-else:
-    # On most other platforms the best timer is time.time()
-    default_timer = time.time
-
-# Don't change the indentation of the template; the reindent() calls
-# in Timer.__init__() depend on setup being indented 4 spaces and stmt
-# being indented 8 spaces.
-template = """
-def inner(_it, _timer):
-    %(setup)s
-    _t0 = _timer()
-    for _i in _it:
-        %(stmt)s
-    _t1 = _timer()
-    return _t1 - _t0
-"""
-
-def reindent(src, indent):
-    """Helper to reindent a multi-line statement."""
-    return src.replace("\n", "\n" + " "*indent)
-
-def _template_func(setup, func):
-    """Create a timer function. Used if the "statement" is a callable."""
-    def inner(_it, _timer, _func=func):
-        setup()
-        _t0 = _timer()
-        for _i in _it:
-            _func()
-        _t1 = _timer()
-        return _t1 - _t0
-    return inner
-
-class Timer:
-    """Class for timing execution speed of small code snippets.
-
-    The constructor takes a statement to be timed, an additional
-    statement used for setup, and a timer function.  Both statements
-    default to 'pass'; the timer function is platform-dependent (see
-    module doc string).
-
-    To measure the execution time of the first statement, use the
-    timeit() method.  The repeat() method is a convenience to call
-    timeit() multiple times and return a list of results.
-
-    The statements may contain newlines, as long as they don't contain
-    multi-line string literals.
-    """
-
-    def __init__(self, stmt="pass", setup="pass", timer=default_timer):
-        """Constructor.  See class doc string."""
-        self.timer = timer
-        ns = {}
-        if isinstance(stmt, basestring):
-            stmt = reindent(stmt, 8)
-            if isinstance(setup, basestring):
-                setup = reindent(setup, 4)
-                src = template % {'stmt': stmt, 'setup': setup}
-            elif hasattr(setup, '__call__'):
-                src = template % {'stmt': stmt, 'setup': '_setup()'}
-                ns['_setup'] = setup
-            else:
-                raise ValueError("setup is neither a string nor callable")
-            self.src = src # Save for traceback display
-            code = compile(src, dummy_src_name, "exec")
-            exec code in globals(), ns
-            self.inner = ns["inner"]
-        elif hasattr(stmt, '__call__'):
-            self.src = None
-            if isinstance(setup, basestring):
-                _setup = setup
-                def setup():
-                    exec _setup in globals(), ns
-            elif not hasattr(setup, '__call__'):
-                raise ValueError("setup is neither a string nor callable")
-            self.inner = _template_func(setup, stmt)
-        else:
-            raise ValueError("stmt is neither a string nor callable")
-
-    def print_exc(self, file=None):
-        """Helper to print a traceback from the timed code.
-
-        Typical use:
-
-            t = Timer(...)       # outside the try/except
-            try:
-                t.timeit(...)    # or t.repeat(...)
-            except:
-                t.print_exc()
-
-        The advantage over the standard traceback is that source lines
-        in the compiled template will be displayed.
-
-        The optional file argument directs where the traceback is
-        sent; it defaults to sys.stderr.
-        """
-        import linecache, traceback
-        if self.src is not None:
-            linecache.cache[dummy_src_name] = (len(self.src),
-                                               None,
-                                               self.src.split("\n"),
-                                               dummy_src_name)
-        # else the source is already stored somewhere else
-
-        traceback.print_exc(file=file)
-
-    def timeit(self, number=default_number):
-        """Time 'number' executions of the main statement.
-
-        To be precise, this executes the setup statement once, and
-        then returns the time it takes to execute the main statement
-        a number of times, as a float measured in seconds.  The
-        argument is the number of times through the loop, defaulting
-        to one million.  The main statement, the setup statement and
-        the timer function to be used are passed to the constructor.
-        """
-        if itertools:
-            it = itertools.repeat(None, number)
-        else:
-            it = [None] * number
-        gcold = gc.isenabled()
-        gc.disable()
-        timing = self.inner(it, self.timer)
-        if gcold:
-            gc.enable()
-        return timing
-
-    def repeat(self, repeat=default_repeat, number=default_number):
-        """Call timeit() a few times.
-
-        This is a convenience function that calls the timeit()
-        repeatedly, returning a list of results.  The first argument
-        specifies how many times to call timeit(), defaulting to 3;
-        the second argument specifies the timer argument, defaulting
-        to one million.
-
-        Note: it's tempting to calculate mean and standard deviation
-        from the result vector and report these.  However, this is not
-        very useful.  In a typical case, the lowest value gives a
-        lower bound for how fast your machine can run the given code
-        snippet; higher values in the result vector are typically not
-        caused by variability in Python's speed, but by other
-        processes interfering with your timing accuracy.  So the min()
-        of the result is probably the only number you should be
-        interested in.  After that, you should look at the entire
-        vector and apply common sense rather than statistics.
-        """
-        r = []
-        for i in range(repeat):
-            t = self.timeit(number)
-            r.append(t)
-        return r
-
-def timeit(stmt="pass", setup="pass", timer=default_timer,
-           number=default_number):
-    """Convenience function to create Timer object and call timeit method."""
-    return Timer(stmt, setup, timer).timeit(number)
-
-def repeat(stmt="pass", setup="pass", timer=default_timer,
-           repeat=default_repeat, number=default_number):
-    """Convenience function to create Timer object and call repeat method."""
-    return Timer(stmt, setup, timer).repeat(repeat, number)
-
-def main(args=None):
-    """Main program, used when run as a script.
-
-    The optional argument specifies the command line to be parsed,
-    defaulting to sys.argv[1:].
-
-    The return value is an exit code to be passed to sys.exit(); it
-    may be None to indicate success.
-
-    When an exception happens during timing, a traceback is printed to
-    stderr and the return value is 1.  Exceptions at other times
-    (including the template compilation) are not caught.
-    """
-    if args is None:
-        args = sys.argv[1:]
-    import getopt
-    try:
-        opts, args = getopt.getopt(args, "n:s:r:tcvh",
-                                   ["number=", "setup=", "repeat=",
-                                    "time", "clock", "verbose", "help"])
-    except getopt.error, err:
-        print err
-        print "use -h/--help for command line help"
-        return 2
-    timer = default_timer
-    stmt = "\n".join(args) or "pass"
-    number = 0 # auto-determine
-    setup = []
-    repeat = default_repeat
-    verbose = 0
-    precision = 3
-    for o, a in opts:
-        if o in ("-n", "--number"):
-            number = int(a)
-        if o in ("-s", "--setup"):
-            setup.append(a)
-        if o in ("-r", "--repeat"):
-            repeat = int(a)
-            if repeat <= 0:
-                repeat = 1
-        if o in ("-t", "--time"):
-            timer = time.time
-        if o in ("-c", "--clock"):
-            timer = time.clock
-        if o in ("-v", "--verbose"):
-            if verbose:
-                precision += 1
-            verbose += 1
-        if o in ("-h", "--help"):
-            print __doc__,
-            return 0
-    setup = "\n".join(setup) or "pass"
-    # Include the current directory, so that local imports work (sys.path
-    # contains the directory of this script, rather than the current
-    # directory)
-    import os
-    sys.path.insert(0, os.curdir)
-    t = Timer(stmt, setup, timer)
-    if number == 0:
-        # determine number so that 0.2 <= total time < 2.0
-        for i in range(1, 10):
-            number = 10**i
-            try:
-                x = t.timeit(number)
-            except:
-                t.print_exc()
-                return 1
-            if verbose:
-                print "%d loops -> %.*g secs" % (number, precision, x)
-            if x >= 0.2:
-                break
-    try:
-        r = t.repeat(repeat, number)
-    except:
-        t.print_exc()
-        return 1
-    best = min(r)
-    if verbose:
-        print "raw times:", " ".join(["%.*g" % (precision, x) for x in r])
-    print "%d loops," % number,
-    usec = best * 1e6 / number
-    if usec < 1000:
-        print "best of %d: %.*g usec per loop" % (repeat, precision, usec)
-    else:
-        msec = usec / 1000
-        if msec < 1000:
-            print "best of %d: %.*g msec per loop" % (repeat, precision, msec)
-        else:
-            sec = msec / 1000
-            print "best of %d: %.*g sec per loop" % (repeat, precision, sec)
-    return None
-
-if __name__ == "__main__":
-    sys.exit(main())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/toaiff.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/toaiff.py
deleted file mode 100644
index 7198751..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/toaiff.py
+++ /dev/null
@@ -1,110 +0,0 @@
-"""Convert "arbitrary" sound files to AIFF (Apple and SGI's audio format).
-
-Input may be compressed.
-Uncompressed file type may be AIFF, WAV, VOC, 8SVX, NeXT/Sun, and others.
-An exception is raised if the file is not of a recognized type.
-Returned filename is either the input filename or a temporary filename;
-in the latter case the caller must ensure that it is removed.
-Other temporary files used are removed by the function.
-"""
-from warnings import warnpy3k
-warnpy3k("the toaiff module has been removed in Python 3.0", stacklevel=2)
-del warnpy3k
-
-import os
-import tempfile
-import pipes
-import sndhdr
-
-__all__ = ["error", "toaiff"]
-
-table = {}
-
-t = pipes.Template()
-t.append('sox -t au - -t aiff -r 8000 -', '--')
-table['au'] = t
-
-# XXX The following is actually sub-optimal.
-# XXX The HCOM sampling rate can be 22k, 22k/2, 22k/3 or 22k/4.
-# XXX We must force the output sampling rate else the SGI won't play
-# XXX files sampled at 5.5k or 7.333k; however this means that files
-# XXX sampled at 11k are unnecessarily expanded.
-# XXX Similar comments apply to some other file types.
-t = pipes.Template()
-t.append('sox -t hcom - -t aiff -r 22050 -', '--')
-table['hcom'] = t
-
-t = pipes.Template()
-t.append('sox -t voc - -t aiff -r 11025 -', '--')
-table['voc'] = t
-
-t = pipes.Template()
-t.append('sox -t wav - -t aiff -', '--')
-table['wav'] = t
-
-t = pipes.Template()
-t.append('sox -t 8svx - -t aiff -r 16000 -', '--')
-table['8svx'] = t
-
-t = pipes.Template()
-t.append('sox -t sndt - -t aiff -r 16000 -', '--')
-table['sndt'] = t
-
-t = pipes.Template()
-t.append('sox -t sndr - -t aiff -r 16000 -', '--')
-table['sndr'] = t
-
-uncompress = pipes.Template()
-uncompress.append('uncompress', '--')
-
-
-class error(Exception):
-    pass
-
-def toaiff(filename):
-    temps = []
-    ret = None
-    try:
-        ret = _toaiff(filename, temps)
-    finally:
-        for temp in temps[:]:
-            if temp != ret:
-                try:
-                    os.unlink(temp)
-                except os.error:
-                    pass
-                temps.remove(temp)
-    return ret
-
-def _toaiff(filename, temps):
-    if filename[-2:] == '.Z':
-        (fd, fname) = tempfile.mkstemp()
-        os.close(fd)
-        temps.append(fname)
-        sts = uncompress.copy(filename, fname)
-        if sts:
-            raise error, filename + ': uncompress failed'
-    else:
-        fname = filename
-    try:
-        ftype = sndhdr.whathdr(fname)
-        if ftype:
-            ftype = ftype[0] # All we're interested in
-    except IOError, msg:
-        if type(msg) == type(()) and len(msg) == 2 and \
-                type(msg[0]) == type(0) and type(msg[1]) == type(''):
-            msg = msg[1]
-        if type(msg) != type(''):
-            msg = repr(msg)
-        raise error, filename + ': ' + msg
-    if ftype == 'aiff':
-        return fname
-    if ftype is None or not ftype in table:
-        raise error, '%s: unsupported audio file type %r' % (filename, ftype)
-    (fd, temp) = tempfile.mkstemp()
-    os.close(fd)
-    temps.append(temp)
-    sts = table[ftype].copy(fname, temp)
-    if sts:
-        raise error, filename + ': conversion to aiff failed'
-    return temp
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/token.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/token.py
deleted file mode 100644
index 8617062..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/token.py
+++ /dev/null
@@ -1,142 +0,0 @@
-#! /usr/bin/env python
-
-"""Token constants (from "token.h")."""
-
-#  This file is automatically generated; please don't muck it up!
-#
-#  To update the symbols in this file, 'cd' to the top directory of
-#  the python source tree after building the interpreter and run:
-#
-#    python Lib/token.py
-
-#--start constants--
-ENDMARKER = 0
-NAME = 1
-NUMBER = 2
-STRING = 3
-NEWLINE = 4
-INDENT = 5
-DEDENT = 6
-LPAR = 7
-RPAR = 8
-LSQB = 9
-RSQB = 10
-COLON = 11
-COMMA = 12
-SEMI = 13
-PLUS = 14
-MINUS = 15
-STAR = 16
-SLASH = 17
-VBAR = 18
-AMPER = 19
-LESS = 20
-GREATER = 21
-EQUAL = 22
-DOT = 23
-PERCENT = 24
-BACKQUOTE = 25
-LBRACE = 26
-RBRACE = 27
-EQEQUAL = 28
-NOTEQUAL = 29
-LESSEQUAL = 30
-GREATEREQUAL = 31
-TILDE = 32
-CIRCUMFLEX = 33
-LEFTSHIFT = 34
-RIGHTSHIFT = 35
-DOUBLESTAR = 36
-PLUSEQUAL = 37
-MINEQUAL = 38
-STAREQUAL = 39
-SLASHEQUAL = 40
-PERCENTEQUAL = 41
-AMPEREQUAL = 42
-VBAREQUAL = 43
-CIRCUMFLEXEQUAL = 44
-LEFTSHIFTEQUAL = 45
-RIGHTSHIFTEQUAL = 46
-DOUBLESTAREQUAL = 47
-DOUBLESLASH = 48
-DOUBLESLASHEQUAL = 49
-AT = 50
-OP = 51
-ERRORTOKEN = 52
-N_TOKENS = 53
-NT_OFFSET = 256
-#--end constants--
-
-tok_name = {}
-for _name, _value in globals().items():
-    if type(_value) is type(0):
-        tok_name[_value] = _name
-del _name, _value
-
-
-def ISTERMINAL(x):
-    return x < NT_OFFSET
-
-def ISNONTERMINAL(x):
-    return x >= NT_OFFSET
-
-def ISEOF(x):
-    return x == ENDMARKER
-
-
-def main():
-    import re
-    import sys
-    args = sys.argv[1:]
-    inFileName = args and args[0] or "Include/token.h"
-    outFileName = "Lib/token.py"
-    if len(args) > 1:
-        outFileName = args[1]
-    try:
-        fp = open(inFileName)
-    except IOError, err:
-        sys.stdout.write("I/O error: %s\n" % str(err))
-        sys.exit(1)
-    lines = fp.read().split("\n")
-    fp.close()
-    prog = re.compile(
-        "#define[ \t][ \t]*([A-Z0-9][A-Z0-9_]*)[ \t][ \t]*([0-9][0-9]*)",
-        re.IGNORECASE)
-    tokens = {}
-    for line in lines:
-        match = prog.match(line)
-        if match:
-            name, val = match.group(1, 2)
-            val = int(val)
-            tokens[val] = name          # reverse so we can sort them...
-    keys = tokens.keys()
-    keys.sort()
-    # load the output skeleton from the target:
-    try:
-        fp = open(outFileName)
-    except IOError, err:
-        sys.stderr.write("I/O error: %s\n" % str(err))
-        sys.exit(2)
-    format = fp.read().split("\n")
-    fp.close()
-    try:
-        start = format.index("#--start constants--") + 1
-        end = format.index("#--end constants--")
-    except ValueError:
-        sys.stderr.write("target does not contain format markers")
-        sys.exit(3)
-    lines = []
-    for val in keys:
-        lines.append("%s = %d" % (tokens[val], val))
-    format[start:end] = lines
-    try:
-        fp = open(outFileName, 'w')
-    except IOError, err:
-        sys.stderr.write("I/O error: %s\n" % str(err))
-        sys.exit(4)
-    fp.write("\n".join(format))
-    fp.close()
-
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/tokenize.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/tokenize.py
deleted file mode 100644
index ed482a4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/tokenize.py
+++ /dev/null
@@ -1,424 +0,0 @@
-"""Tokenization help for Python programs.
-
-generate_tokens(readline) is a generator that breaks a stream of
-text into Python tokens.  It accepts a readline-like method which is called
-repeatedly to get the next line of input (or "" for EOF).  It generates
-5-tuples with these members:
-
-    the token type (see token.py)
-    the token (a string)
-    the starting (row, column) indices of the token (a 2-tuple of ints)
-    the ending (row, column) indices of the token (a 2-tuple of ints)
-    the original line (string)
-
-It is designed to match the working of the Python tokenizer exactly, except
-that it produces COMMENT tokens for comments and gives type OP for all
-operators
-
-Older entry points
-    tokenize_loop(readline, tokeneater)
-    tokenize(readline, tokeneater=printtoken)
-are the same, except instead of generating tokens, tokeneater is a callback
-function to which the 5 fields described above are passed as 5 arguments,
-each time a new token is found."""
-
-__author__ = 'Ka-Ping Yee <ping@lfw.org>'
-__credits__ = ('GvR, ESR, Tim Peters, Thomas Wouters, Fred Drake, '
-               'Skip Montanaro, Raymond Hettinger')
-
-import string, re
-from token import *
-
-import token
-__all__ = [x for x in dir(token) if not x.startswith("_")]
-__all__ += ["COMMENT", "tokenize", "generate_tokens", "NL", "untokenize"]
-del x
-del token
-
-COMMENT = N_TOKENS
-tok_name[COMMENT] = 'COMMENT'
-NL = N_TOKENS + 1
-tok_name[NL] = 'NL'
-N_TOKENS += 2
-
-def group(*choices): return '(' + '|'.join(choices) + ')'
-def any(*choices): return group(*choices) + '*'
-def maybe(*choices): return group(*choices) + '?'
-
-Whitespace = r'[ \f\t]*'
-Comment = r'#[^\r\n]*'
-Ignore = Whitespace + any(r'\\\r?\n' + Whitespace) + maybe(Comment)
-Name = r'[a-zA-Z_]\w*'
-
-Hexnumber = r'0[xX][\da-fA-F]+[lL]?'
-Octnumber = r'(0[oO][0-7]+)|(0[0-7]*)[lL]?'
-Binnumber = r'0[bB][01]+[lL]?'
-Decnumber = r'[1-9]\d*[lL]?'
-Intnumber = group(Hexnumber, Binnumber, Octnumber, Decnumber)
-Exponent = r'[eE][-+]?\d+'
-Pointfloat = group(r'\d+\.\d*', r'\.\d+') + maybe(Exponent)
-Expfloat = r'\d+' + Exponent
-Floatnumber = group(Pointfloat, Expfloat)
-Imagnumber = group(r'\d+[jJ]', Floatnumber + r'[jJ]')
-Number = group(Imagnumber, Floatnumber, Intnumber)
-
-# Tail end of ' string.
-Single = r"[^'\\]*(?:\\.[^'\\]*)*'"
-# Tail end of " string.
-Double = r'[^"\\]*(?:\\.[^"\\]*)*"'
-# Tail end of ''' string.
-Single3 = r"[^'\\]*(?:(?:\\.|'(?!''))[^'\\]*)*'''"
-# Tail end of """ string.
-Double3 = r'[^"\\]*(?:(?:\\.|"(?!""))[^"\\]*)*"""'
-Triple = group("[uU]?[rR]?'''", '[uU]?[rR]?"""')
-# Single-line ' or " string.
-String = group(r"[uU]?[rR]?'[^\n'\\]*(?:\\.[^\n'\\]*)*'",
-               r'[uU]?[rR]?"[^\n"\\]*(?:\\.[^\n"\\]*)*"')
-
-# Because of leftmost-then-longest match semantics, be sure to put the
-# longest operators first (e.g., if = came before ==, == would get
-# recognized as two instances of =).
-Operator = group(r"\*\*=?", r">>=?", r"<<=?", r"<>", r"!=",
-                 r"//=?",
-                 r"[+\-*/%&|^=<>]=?",
-                 r"~")
-
-Bracket = '[][(){}]'
-Special = group(r'\r?\n', r'[:;.,`@]')
-Funny = group(Operator, Bracket, Special)
-
-PlainToken = group(Number, Funny, String, Name)
-Token = Ignore + PlainToken
-
-# First (or only) line of ' or " string.
-ContStr = group(r"[uU]?[rR]?'[^\n'\\]*(?:\\.[^\n'\\]*)*" +
-                group("'", r'\\\r?\n'),
-                r'[uU]?[rR]?"[^\n"\\]*(?:\\.[^\n"\\]*)*' +
-                group('"', r'\\\r?\n'))
-PseudoExtras = group(r'\\\r?\n', Comment, Triple)
-PseudoToken = Whitespace + group(PseudoExtras, Number, Funny, ContStr, Name)
-
-tokenprog, pseudoprog, single3prog, double3prog = map(
-    re.compile, (Token, PseudoToken, Single3, Double3))
-endprogs = {"'": re.compile(Single), '"': re.compile(Double),
-            "'''": single3prog, '"""': double3prog,
-            "r'''": single3prog, 'r"""': double3prog,
-            "u'''": single3prog, 'u"""': double3prog,
-            "ur'''": single3prog, 'ur"""': double3prog,
-            "R'''": single3prog, 'R"""': double3prog,
-            "U'''": single3prog, 'U"""': double3prog,
-            "uR'''": single3prog, 'uR"""': double3prog,
-            "Ur'''": single3prog, 'Ur"""': double3prog,
-            "UR'''": single3prog, 'UR"""': double3prog,
-            "b'''": single3prog, 'b"""': double3prog,
-            "br'''": single3prog, 'br"""': double3prog,
-            "B'''": single3prog, 'B"""': double3prog,
-            "bR'''": single3prog, 'bR"""': double3prog,
-            "Br'''": single3prog, 'Br"""': double3prog,
-            "BR'''": single3prog, 'BR"""': double3prog,
-            'r': None, 'R': None, 'u': None, 'U': None,
-            'b': None, 'B': None}
-
-triple_quoted = {}
-for t in ("'''", '"""',
-          "r'''", 'r"""', "R'''", 'R"""',
-          "u'''", 'u"""', "U'''", 'U"""',
-          "ur'''", 'ur"""', "Ur'''", 'Ur"""',
-          "uR'''", 'uR"""', "UR'''", 'UR"""',
-          "b'''", 'b"""', "B'''", 'B"""',
-          "br'''", 'br"""', "Br'''", 'Br"""',
-          "bR'''", 'bR"""', "BR'''", 'BR"""'):
-    triple_quoted[t] = t
-single_quoted = {}
-for t in ("'", '"',
-          "r'", 'r"', "R'", 'R"',
-          "u'", 'u"', "U'", 'U"',
-          "ur'", 'ur"', "Ur'", 'Ur"',
-          "uR'", 'uR"', "UR'", 'UR"',
-          "b'", 'b"', "B'", 'B"',
-          "br'", 'br"', "Br'", 'Br"',
-          "bR'", 'bR"', "BR'", 'BR"' ):
-    single_quoted[t] = t
-
-tabsize = 8
-
-class TokenError(Exception): pass
-
-class StopTokenizing(Exception): pass
-
-def printtoken(type, token, srow_scol, erow_ecol, line): # for testing
-    srow, scol = srow_scol
-    erow, ecol = erow_ecol
-    print "%d,%d-%d,%d:\t%s\t%s" % \
-        (srow, scol, erow, ecol, tok_name[type], repr(token))
-
-def tokenize(readline, tokeneater=printtoken):
-    """
-    The tokenize() function accepts two parameters: one representing the
-    input stream, and one providing an output mechanism for tokenize().
-
-    The first parameter, readline, must be a callable object which provides
-    the same interface as the readline() method of built-in file objects.
-    Each call to the function should return one line of input as a string.
-
-    The second parameter, tokeneater, must also be a callable object. It is
-    called once for each token, with five arguments, corresponding to the
-    tuples generated by generate_tokens().
-    """
-    try:
-        tokenize_loop(readline, tokeneater)
-    except StopTokenizing:
-        pass
-
-# backwards compatible interface
-def tokenize_loop(readline, tokeneater):
-    for token_info in generate_tokens(readline):
-        tokeneater(*token_info)
-
-class Untokenizer:
-
-    def __init__(self):
-        self.tokens = []
-        self.prev_row = 1
-        self.prev_col = 0
-
-    def add_whitespace(self, start):
-        row, col = start
-        assert row <= self.prev_row
-        col_offset = col - self.prev_col
-        if col_offset:
-            self.tokens.append(" " * col_offset)
-
-    def untokenize(self, iterable):
-        for t in iterable:
-            if len(t) == 2:
-                self.compat(t, iterable)
-                break
-            tok_type, token, start, end, line = t
-            self.add_whitespace(start)
-            self.tokens.append(token)
-            self.prev_row, self.prev_col = end
-            if tok_type in (NEWLINE, NL):
-                self.prev_row += 1
-                self.prev_col = 0
-        return "".join(self.tokens)
-
-    def compat(self, token, iterable):
-        startline = False
-        indents = []
-        toks_append = self.tokens.append
-        toknum, tokval = token
-        if toknum in (NAME, NUMBER):
-            tokval += ' '
-        if toknum in (NEWLINE, NL):
-            startline = True
-        prevstring = False
-        for tok in iterable:
-            toknum, tokval = tok[:2]
-
-            if toknum in (NAME, NUMBER):
-                tokval += ' '
-
-            # Insert a space between two consecutive strings
-            if toknum == STRING:
-                if prevstring:
-                    tokval = ' ' + tokval
-                prevstring = True
-            else:
-                prevstring = False
-
-            if toknum == INDENT:
-                indents.append(tokval)
-                continue
-            elif toknum == DEDENT:
-                indents.pop()
-                continue
-            elif toknum in (NEWLINE, NL):
-                startline = True
-            elif startline and indents:
-                toks_append(indents[-1])
-                startline = False
-            toks_append(tokval)
-
-def untokenize(iterable):
-    """Transform tokens back into Python source code.
-
-    Each element returned by the iterable must be a token sequence
-    with at least two elements, a token number and token value.  If
-    only two tokens are passed, the resulting output is poor.
-
-    Round-trip invariant for full input:
-        Untokenized source will match input source exactly
-
-    Round-trip invariant for limited intput:
-        # Output text will tokenize the back to the input
-        t1 = [tok[:2] for tok in generate_tokens(f.readline)]
-        newcode = untokenize(t1)
-        readline = iter(newcode.splitlines(1)).next
-        t2 = [tok[:2] for tok in generate_tokens(readline)]
-        assert t1 == t2
-    """
-    ut = Untokenizer()
-    return ut.untokenize(iterable)
-
-def generate_tokens(readline):
-    """
-    The generate_tokens() generator requires one argment, readline, which
-    must be a callable object which provides the same interface as the
-    readline() method of built-in file objects. Each call to the function
-    should return one line of input as a string.  Alternately, readline
-    can be a callable function terminating with StopIteration:
-        readline = open(myfile).next    # Example of alternate readline
-
-    The generator produces 5-tuples with these members: the token type; the
-    token string; a 2-tuple (srow, scol) of ints specifying the row and
-    column where the token begins in the source; a 2-tuple (erow, ecol) of
-    ints specifying the row and column where the token ends in the source;
-    and the line on which the token was found. The line passed is the
-    logical line; continuation lines are included.
-    """
-    lnum = parenlev = continued = 0
-    namechars, numchars = string.ascii_letters + '_', '0123456789'
-    contstr, needcont = '', 0
-    contline = None
-    indents = [0]
-
-    while 1:                                   # loop over lines in stream
-        try:
-            line = readline()
-        except StopIteration:
-            line = ''
-        lnum += 1
-        pos, max = 0, len(line)
-
-        if contstr:                            # continued string
-            if not line:
-                raise TokenError, ("EOF in multi-line string", strstart)
-            endmatch = endprog.match(line)
-            if endmatch:
-                pos = end = endmatch.end(0)
-                yield (STRING, contstr + line[:end],
-                       strstart, (lnum, end), contline + line)
-                contstr, needcont = '', 0
-                contline = None
-            elif needcont and line[-2:] != '\\\n' and line[-3:] != '\\\r\n':
-                yield (ERRORTOKEN, contstr + line,
-                           strstart, (lnum, len(line)), contline)
-                contstr = ''
-                contline = None
-                continue
-            else:
-                contstr = contstr + line
-                contline = contline + line
-                continue
-
-        elif parenlev == 0 and not continued:  # new statement
-            if not line: break
-            column = 0
-            while pos < max:                   # measure leading whitespace
-                if line[pos] == ' ':
-                    column += 1
-                elif line[pos] == '\t':
-                    column = (column//tabsize + 1)*tabsize
-                elif line[pos] == '\f':
-                    column = 0
-                else:
-                    break
-                pos += 1
-            if pos == max:
-                break
-
-            if line[pos] in '#\r\n':           # skip comments or blank lines
-                if line[pos] == '#':
-                    comment_token = line[pos:].rstrip('\r\n')
-                    nl_pos = pos + len(comment_token)
-                    yield (COMMENT, comment_token,
-                           (lnum, pos), (lnum, pos + len(comment_token)), line)
-                    yield (NL, line[nl_pos:],
-                           (lnum, nl_pos), (lnum, len(line)), line)
-                else:
-                    yield ((NL, COMMENT)[line[pos] == '#'], line[pos:],
-                           (lnum, pos), (lnum, len(line)), line)
-                continue
-
-            if column > indents[-1]:           # count indents or dedents
-                indents.append(column)
-                yield (INDENT, line[:pos], (lnum, 0), (lnum, pos), line)
-            while column < indents[-1]:
-                if column not in indents:
-                    raise IndentationError(
-                        "unindent does not match any outer indentation level",
-                        ("<tokenize>", lnum, pos, line))
-                indents = indents[:-1]
-                yield (DEDENT, '', (lnum, pos), (lnum, pos), line)
-
-        else:                                  # continued statement
-            if not line:
-                raise TokenError, ("EOF in multi-line statement", (lnum, 0))
-            continued = 0
-
-        while pos < max:
-            pseudomatch = pseudoprog.match(line, pos)
-            if pseudomatch:                                # scan for tokens
-                start, end = pseudomatch.span(1)
-                spos, epos, pos = (lnum, start), (lnum, end), end
-                token, initial = line[start:end], line[start]
-
-                if initial in numchars or \
-                   (initial == '.' and token != '.'):      # ordinary number
-                    yield (NUMBER, token, spos, epos, line)
-                elif initial in '\r\n':
-                    yield (NL if parenlev > 0 else NEWLINE,
-                           token, spos, epos, line)
-                elif initial == '#':
-                    assert not token.endswith("\n")
-                    yield (COMMENT, token, spos, epos, line)
-                elif token in triple_quoted:
-                    endprog = endprogs[token]
-                    endmatch = endprog.match(line, pos)
-                    if endmatch:                           # all on one line
-                        pos = endmatch.end(0)
-                        token = line[start:pos]
-                        yield (STRING, token, spos, (lnum, pos), line)
-                    else:
-                        strstart = (lnum, start)           # multiple lines
-                        contstr = line[start:]
-                        contline = line
-                        break
-                elif initial in single_quoted or \
-                    token[:2] in single_quoted or \
-                    token[:3] in single_quoted:
-                    if token[-1] == '\n':                  # continued string
-                        strstart = (lnum, start)
-                        endprog = (endprogs[initial] or endprogs[token[1]] or
-                                   endprogs[token[2]])
-                        contstr, needcont = line[start:], 1
-                        contline = line
-                        break
-                    else:                                  # ordinary string
-                        yield (STRING, token, spos, epos, line)
-                elif initial in namechars:                 # ordinary name
-                    yield (NAME, token, spos, epos, line)
-                elif initial == '\\':                      # continued stmt
-                    continued = 1
-                else:
-                    if initial in '([{':
-                        parenlev += 1
-                    elif initial in ')]}':
-                        parenlev -= 1
-                    yield (OP, token, spos, epos, line)
-            else:
-                yield (ERRORTOKEN, line[pos],
-                           (lnum, pos), (lnum, pos+1), line)
-                pos += 1
-
-    for indent in indents[1:]:                 # pop remaining indent levels
-        yield (DEDENT, '', (lnum, 0), (lnum, 0), '')
-    yield (ENDMARKER, '', (lnum, 0), (lnum, 0), '')
-
-if __name__ == '__main__':                     # testing
-    import sys
-    if len(sys.argv) > 1:
-        tokenize(open(sys.argv[1]).readline)
-    else:
-        tokenize(sys.stdin.readline)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/trace.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/trace.py
deleted file mode 100644
index 8f01ede..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/trace.py
+++ /dev/null
@@ -1,827 +0,0 @@
-#!/usr/bin/env python
-
-# portions copyright 2001, Autonomous Zones Industries, Inc., all rights...
-# err...  reserved and offered to the public under the terms of the
-# Python 2.2 license.
-# Author: Zooko O'Whielacronx
-# http://zooko.com/
-# mailto:zooko@zooko.com
-#
-# Copyright 2000, Mojam Media, Inc., all rights reserved.
-# Author: Skip Montanaro
-#
-# Copyright 1999, Bioreason, Inc., all rights reserved.
-# Author: Andrew Dalke
-#
-# Copyright 1995-1997, Automatrix, Inc., all rights reserved.
-# Author: Skip Montanaro
-#
-# Copyright 1991-1995, Stichting Mathematisch Centrum, all rights reserved.
-#
-#
-# Permission to use, copy, modify, and distribute this Python software and
-# its associated documentation for any purpose without fee is hereby
-# granted, provided that the above copyright notice appears in all copies,
-# and that both that copyright notice and this permission notice appear in
-# supporting documentation, and that the name of neither Automatrix,
-# Bioreason or Mojam Media be used in advertising or publicity pertaining to
-# distribution of the software without specific, written prior permission.
-#
-"""program/module to trace Python program or function execution
-
-Sample use, command line:
-  trace.py -c -f counts --ignore-dir '$prefix' spam.py eggs
-  trace.py -t --ignore-dir '$prefix' spam.py eggs
-  trace.py --trackcalls spam.py eggs
-
-Sample use, programmatically
-  import sys
-
-  # create a Trace object, telling it what to ignore, and whether to
-  # do tracing or line-counting or both.
-  tracer = trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix,], trace=0,
-                    count=1)
-  # run the new command using the given tracer
-  tracer.run('main()')
-  # make a report, placing output in /tmp
-  r = tracer.results()
-  r.write_results(show_missing=True, coverdir="/tmp")
-"""
-
-import linecache
-import os
-import re
-import sys
-import time
-import token
-import tokenize
-import inspect
-import gc
-import dis
-try:
-    import cPickle
-    pickle = cPickle
-except ImportError:
-    import pickle
-
-try:
-    import threading
-except ImportError:
-    _settrace = sys.settrace
-
-    def _unsettrace():
-        sys.settrace(None)
-else:
-    def _settrace(func):
-        threading.settrace(func)
-        sys.settrace(func)
-
-    def _unsettrace():
-        sys.settrace(None)
-        threading.settrace(None)
-
-def usage(outfile):
-    outfile.write("""Usage: %s [OPTIONS] <file> [ARGS]
-
-Meta-options:
---help                Display this help then exit.
---version             Output version information then exit.
-
-Otherwise, exactly one of the following three options must be given:
--t, --trace           Print each line to sys.stdout before it is executed.
--c, --count           Count the number of times each line is executed
-                      and write the counts to <module>.cover for each
-                      module executed, in the module's directory.
-                      See also `--coverdir', `--file', `--no-report' below.
--l, --listfuncs       Keep track of which functions are executed at least
-                      once and write the results to sys.stdout after the
-                      program exits.
--T, --trackcalls      Keep track of caller/called pairs and write the
-                      results to sys.stdout after the program exits.
--r, --report          Generate a report from a counts file; do not execute
-                      any code.  `--file' must specify the results file to
-                      read, which must have been created in a previous run
-                      with `--count --file=FILE'.
-
-Modifiers:
--f, --file=<file>     File to accumulate counts over several runs.
--R, --no-report       Do not generate the coverage report files.
-                      Useful if you want to accumulate over several runs.
--C, --coverdir=<dir>  Directory where the report files.  The coverage
-                      report for <package>.<module> is written to file
-                      <dir>/<package>/<module>.cover.
--m, --missing         Annotate executable lines that were not executed
-                      with '>>>>>> '.
--s, --summary         Write a brief summary on stdout for each file.
-                      (Can only be used with --count or --report.)
--g, --timing          Prefix each line with the time since the program started.
-                      Only used while tracing.
-
-Filters, may be repeated multiple times:
---ignore-module=<mod> Ignore the given module(s) and its submodules
-                      (if it is a package).  Accepts comma separated
-                      list of module names
---ignore-dir=<dir>    Ignore files in the given directory (multiple
-                      directories can be joined by os.pathsep).
-""" % sys.argv[0])
-
-PRAGMA_NOCOVER = "#pragma NO COVER"
-
-# Simple rx to find lines with no code.
-rx_blank = re.compile(r'^\s*(#.*)?$')
-
-class Ignore:
-    def __init__(self, modules = None, dirs = None):
-        self._mods = modules or []
-        self._dirs = dirs or []
-
-        self._dirs = map(os.path.normpath, self._dirs)
-        self._ignore = { '<string>': 1 }
-
-    def names(self, filename, modulename):
-        if modulename in self._ignore:
-            return self._ignore[modulename]
-
-        # haven't seen this one before, so see if the module name is
-        # on the ignore list.  Need to take some care since ignoring
-        # "cmp" musn't mean ignoring "cmpcache" but ignoring
-        # "Spam" must also mean ignoring "Spam.Eggs".
-        for mod in self._mods:
-            if mod == modulename:  # Identical names, so ignore
-                self._ignore[modulename] = 1
-                return 1
-            # check if the module is a proper submodule of something on
-            # the ignore list
-            n = len(mod)
-            # (will not overflow since if the first n characters are the
-            # same and the name has not already occurred, then the size
-            # of "name" is greater than that of "mod")
-            if mod == modulename[:n] and modulename[n] == '.':
-                self._ignore[modulename] = 1
-                return 1
-
-        # Now check that __file__ isn't in one of the directories
-        if filename is None:
-            # must be a built-in, so we must ignore
-            self._ignore[modulename] = 1
-            return 1
-
-        # Ignore a file when it contains one of the ignorable paths
-        for d in self._dirs:
-            # The '+ os.sep' is to ensure that d is a parent directory,
-            # as compared to cases like:
-            #  d = "/usr/local"
-            #  filename = "/usr/local.py"
-            # or
-            #  d = "/usr/local.py"
-            #  filename = "/usr/local.py"
-            if filename.startswith(d + os.sep):
-                self._ignore[modulename] = 1
-                return 1
-
-        # Tried the different ways, so we don't ignore this module
-        self._ignore[modulename] = 0
-        return 0
-
-def modname(path):
-    """Return a plausible module name for the patch."""
-
-    base = os.path.basename(path)
-    filename, ext = os.path.splitext(base)
-    return filename
-
-def fullmodname(path):
-    """Return a plausible module name for the path."""
-
-    # If the file 'path' is part of a package, then the filename isn't
-    # enough to uniquely identify it.  Try to do the right thing by
-    # looking in sys.path for the longest matching prefix.  We'll
-    # assume that the rest is the package name.
-
-    comparepath = os.path.normcase(path)
-    longest = ""
-    for dir in sys.path:
-        dir = os.path.normcase(dir)
-        if comparepath.startswith(dir) and comparepath[len(dir)] == os.sep:
-            if len(dir) > len(longest):
-                longest = dir
-
-    if longest:
-        base = path[len(longest) + 1:]
-    else:
-        base = path
-    # the drive letter is never part of the module name
-    drive, base = os.path.splitdrive(base)
-    base = base.replace(os.sep, ".")
-    if os.altsep:
-        base = base.replace(os.altsep, ".")
-    filename, ext = os.path.splitext(base)
-    return filename.lstrip(".")
-
-class CoverageResults:
-    def __init__(self, counts=None, calledfuncs=None, infile=None,
-                 callers=None, outfile=None):
-        self.counts = counts
-        if self.counts is None:
-            self.counts = {}
-        self.counter = self.counts.copy() # map (filename, lineno) to count
-        self.calledfuncs = calledfuncs
-        if self.calledfuncs is None:
-            self.calledfuncs = {}
-        self.calledfuncs = self.calledfuncs.copy()
-        self.callers = callers
-        if self.callers is None:
-            self.callers = {}
-        self.callers = self.callers.copy()
-        self.infile = infile
-        self.outfile = outfile
-        if self.infile:
-            # Try to merge existing counts file.
-            try:
-                counts, calledfuncs, callers = \
-                        pickle.load(open(self.infile, 'rb'))
-                self.update(self.__class__(counts, calledfuncs, callers))
-            except (IOError, EOFError, ValueError), err:
-                print >> sys.stderr, ("Skipping counts file %r: %s"
-                                      % (self.infile, err))
-
-    def update(self, other):
-        """Merge in the data from another CoverageResults"""
-        counts = self.counts
-        calledfuncs = self.calledfuncs
-        callers = self.callers
-        other_counts = other.counts
-        other_calledfuncs = other.calledfuncs
-        other_callers = other.callers
-
-        for key in other_counts.keys():
-            counts[key] = counts.get(key, 0) + other_counts[key]
-
-        for key in other_calledfuncs.keys():
-            calledfuncs[key] = 1
-
-        for key in other_callers.keys():
-            callers[key] = 1
-
-    def write_results(self, show_missing=True, summary=False, coverdir=None):
-        """
-        @param coverdir
-        """
-        if self.calledfuncs:
-            print
-            print "functions called:"
-            calls = self.calledfuncs.keys()
-            calls.sort()
-            for filename, modulename, funcname in calls:
-                print ("filename: %s, modulename: %s, funcname: %s"
-                       % (filename, modulename, funcname))
-
-        if self.callers:
-            print
-            print "calling relationships:"
-            calls = self.callers.keys()
-            calls.sort()
-            lastfile = lastcfile = ""
-            for ((pfile, pmod, pfunc), (cfile, cmod, cfunc)) in calls:
-                if pfile != lastfile:
-                    print
-                    print "***", pfile, "***"
-                    lastfile = pfile
-                    lastcfile = ""
-                if cfile != pfile and lastcfile != cfile:
-                    print "  -->", cfile
-                    lastcfile = cfile
-                print "    %s.%s -> %s.%s" % (pmod, pfunc, cmod, cfunc)
-
-        # turn the counts data ("(filename, lineno) = count") into something
-        # accessible on a per-file basis
-        per_file = {}
-        for filename, lineno in self.counts.keys():
-            lines_hit = per_file[filename] = per_file.get(filename, {})
-            lines_hit[lineno] = self.counts[(filename, lineno)]
-
-        # accumulate summary info, if needed
-        sums = {}
-
-        for filename, count in per_file.iteritems():
-            # skip some "files" we don't care about...
-            if filename == "<string>":
-                continue
-            if filename.startswith("<doctest "):
-                continue
-
-            if filename.endswith((".pyc", ".pyo")):
-                filename = filename[:-1]
-
-            if coverdir is None:
-                dir = os.path.dirname(os.path.abspath(filename))
-                modulename = modname(filename)
-            else:
-                dir = coverdir
-                if not os.path.exists(dir):
-                    os.makedirs(dir)
-                modulename = fullmodname(filename)
-
-            # If desired, get a list of the line numbers which represent
-            # executable content (returned as a dict for better lookup speed)
-            if show_missing:
-                lnotab = find_executable_linenos(filename)
-            else:
-                lnotab = {}
-
-            source = linecache.getlines(filename)
-            coverpath = os.path.join(dir, modulename + ".cover")
-            n_hits, n_lines = self.write_results_file(coverpath, source,
-                                                      lnotab, count)
-
-            if summary and n_lines:
-                percent = 100 * n_hits // n_lines
-                sums[modulename] = n_lines, percent, modulename, filename
-
-        if summary and sums:
-            mods = sums.keys()
-            mods.sort()
-            print "lines   cov%   module   (path)"
-            for m in mods:
-                n_lines, percent, modulename, filename = sums[m]
-                print "%5d   %3d%%   %s   (%s)" % sums[m]
-
-        if self.outfile:
-            # try and store counts and module info into self.outfile
-            try:
-                pickle.dump((self.counts, self.calledfuncs, self.callers),
-                            open(self.outfile, 'wb'), 1)
-            except IOError, err:
-                print >> sys.stderr, "Can't save counts files because %s" % err
-
-    def write_results_file(self, path, lines, lnotab, lines_hit):
-        """Return a coverage results file in path."""
-
-        try:
-            outfile = open(path, "w")
-        except IOError, err:
-            print >> sys.stderr, ("trace: Could not open %r for writing: %s"
-                                  "- skipping" % (path, err))
-            return 0, 0
-
-        n_lines = 0
-        n_hits = 0
-        for i, line in enumerate(lines):
-            lineno = i + 1
-            # do the blank/comment match to try to mark more lines
-            # (help the reader find stuff that hasn't been covered)
-            if lineno in lines_hit:
-                outfile.write("%5d: " % lines_hit[lineno])
-                n_hits += 1
-                n_lines += 1
-            elif rx_blank.match(line):
-                outfile.write("       ")
-            else:
-                # lines preceded by no marks weren't hit
-                # Highlight them if so indicated, unless the line contains
-                # #pragma: NO COVER
-                if lineno in lnotab and not PRAGMA_NOCOVER in lines[i]:
-                    outfile.write(">>>>>> ")
-                    n_lines += 1
-                else:
-                    outfile.write("       ")
-            outfile.write(lines[i].expandtabs(8))
-        outfile.close()
-
-        return n_hits, n_lines
-
-def find_lines_from_code(code, strs):
-    """Return dict where keys are lines in the line number table."""
-    linenos = {}
-
-    for _, lineno in dis.findlinestarts(code):
-        if lineno not in strs:
-            linenos[lineno] = 1
-
-    return linenos
-
-def find_lines(code, strs):
-    """Return lineno dict for all code objects reachable from code."""
-    # get all of the lineno information from the code of this scope level
-    linenos = find_lines_from_code(code, strs)
-
-    # and check the constants for references to other code objects
-    for c in code.co_consts:
-        if inspect.iscode(c):
-            # find another code object, so recurse into it
-            linenos.update(find_lines(c, strs))
-    return linenos
-
-def find_strings(filename):
-    """Return a dict of possible docstring positions.
-
-    The dict maps line numbers to strings.  There is an entry for
-    line that contains only a string or a part of a triple-quoted
-    string.
-    """
-    d = {}
-    # If the first token is a string, then it's the module docstring.
-    # Add this special case so that the test in the loop passes.
-    prev_ttype = token.INDENT
-    f = open(filename)
-    for ttype, tstr, start, end, line in tokenize.generate_tokens(f.readline):
-        if ttype == token.STRING:
-            if prev_ttype == token.INDENT:
-                sline, scol = start
-                eline, ecol = end
-                for i in range(sline, eline + 1):
-                    d[i] = 1
-        prev_ttype = ttype
-    f.close()
-    return d
-
-def find_executable_linenos(filename):
-    """Return dict where keys are line numbers in the line number table."""
-    try:
-        prog = open(filename, "rU").read()
-    except IOError, err:
-        print >> sys.stderr, ("Not printing coverage data for %r: %s"
-                              % (filename, err))
-        return {}
-    code = compile(prog, filename, "exec")
-    strs = find_strings(filename)
-    return find_lines(code, strs)
-
-class Trace:
-    def __init__(self, count=1, trace=1, countfuncs=0, countcallers=0,
-                 ignoremods=(), ignoredirs=(), infile=None, outfile=None,
-                 timing=False):
-        """
-        @param count true iff it should count number of times each
-                     line is executed
-        @param trace true iff it should print out each line that is
-                     being counted
-        @param countfuncs true iff it should just output a list of
-                     (filename, modulename, funcname,) for functions
-                     that were called at least once;  This overrides
-                     `count' and `trace'
-        @param ignoremods a list of the names of modules to ignore
-        @param ignoredirs a list of the names of directories to ignore
-                     all of the (recursive) contents of
-        @param infile file from which to read stored counts to be
-                     added into the results
-        @param outfile file in which to write the results
-        @param timing true iff timing information be displayed
-        """
-        self.infile = infile
-        self.outfile = outfile
-        self.ignore = Ignore(ignoremods, ignoredirs)
-        self.counts = {}   # keys are (filename, linenumber)
-        self.blabbed = {} # for debugging
-        self.pathtobasename = {} # for memoizing os.path.basename
-        self.donothing = 0
-        self.trace = trace
-        self._calledfuncs = {}
-        self._callers = {}
-        self._caller_cache = {}
-        self.start_time = None
-        if timing:
-            self.start_time = time.time()
-        if countcallers:
-            self.globaltrace = self.globaltrace_trackcallers
-        elif countfuncs:
-            self.globaltrace = self.globaltrace_countfuncs
-        elif trace and count:
-            self.globaltrace = self.globaltrace_lt
-            self.localtrace = self.localtrace_trace_and_count
-        elif trace:
-            self.globaltrace = self.globaltrace_lt
-            self.localtrace = self.localtrace_trace
-        elif count:
-            self.globaltrace = self.globaltrace_lt
-            self.localtrace = self.localtrace_count
-        else:
-            # Ahem -- do nothing?  Okay.
-            self.donothing = 1
-
-    def run(self, cmd):
-        import __main__
-        dict = __main__.__dict__
-        if not self.donothing:
-            threading.settrace(self.globaltrace)
-            sys.settrace(self.globaltrace)
-        try:
-            exec cmd in dict, dict
-        finally:
-            if not self.donothing:
-                sys.settrace(None)
-                threading.settrace(None)
-
-    def runctx(self, cmd, globals=None, locals=None):
-        if globals is None: globals = {}
-        if locals is None: locals = {}
-        if not self.donothing:
-            _settrace(self.globaltrace)
-        try:
-            exec cmd in globals, locals
-        finally:
-            if not self.donothing:
-                _unsettrace()
-
-    def runfunc(self, func, *args, **kw):
-        result = None
-        if not self.donothing:
-            sys.settrace(self.globaltrace)
-        try:
-            result = func(*args, **kw)
-        finally:
-            if not self.donothing:
-                sys.settrace(None)
-        return result
-
-    def file_module_function_of(self, frame):
-        code = frame.f_code
-        filename = code.co_filename
-        if filename:
-            modulename = modname(filename)
-        else:
-            modulename = None
-
-        funcname = code.co_name
-        clsname = None
-        if code in self._caller_cache:
-            if self._caller_cache[code] is not None:
-                clsname = self._caller_cache[code]
-        else:
-            self._caller_cache[code] = None
-            ## use of gc.get_referrers() was suggested by Michael Hudson
-            # all functions which refer to this code object
-            funcs = [f for f in gc.get_referrers(code)
-                         if inspect.isfunction(f)]
-            # require len(func) == 1 to avoid ambiguity caused by calls to
-            # new.function(): "In the face of ambiguity, refuse the
-            # temptation to guess."
-            if len(funcs) == 1:
-                dicts = [d for d in gc.get_referrers(funcs[0])
-                             if isinstance(d, dict)]
-                if len(dicts) == 1:
-                    classes = [c for c in gc.get_referrers(dicts[0])
-                                   if hasattr(c, "__bases__")]
-                    if len(classes) == 1:
-                        # ditto for new.classobj()
-                        clsname = classes[0].__name__
-                        # cache the result - assumption is that new.* is
-                        # not called later to disturb this relationship
-                        # _caller_cache could be flushed if functions in
-                        # the new module get called.
-                        self._caller_cache[code] = clsname
-        if clsname is not None:
-            funcname = "%s.%s" % (clsname, funcname)
-
-        return filename, modulename, funcname
-
-    def globaltrace_trackcallers(self, frame, why, arg):
-        """Handler for call events.
-
-        Adds information about who called who to the self._callers dict.
-        """
-        if why == 'call':
-            # XXX Should do a better job of identifying methods
-            this_func = self.file_module_function_of(frame)
-            parent_func = self.file_module_function_of(frame.f_back)
-            self._callers[(parent_func, this_func)] = 1
-
-    def globaltrace_countfuncs(self, frame, why, arg):
-        """Handler for call events.
-
-        Adds (filename, modulename, funcname) to the self._calledfuncs dict.
-        """
-        if why == 'call':
-            this_func = self.file_module_function_of(frame)
-            self._calledfuncs[this_func] = 1
-
-    def globaltrace_lt(self, frame, why, arg):
-        """Handler for call events.
-
-        If the code block being entered is to be ignored, returns `None',
-        else returns self.localtrace.
-        """
-        if why == 'call':
-            code = frame.f_code
-            filename = frame.f_globals.get('__file__', None)
-            if filename:
-                # XXX modname() doesn't work right for packages, so
-                # the ignore support won't work right for packages
-                modulename = modname(filename)
-                if modulename is not None:
-                    ignore_it = self.ignore.names(filename, modulename)
-                    if not ignore_it:
-                        if self.trace:
-                            print (" --- modulename: %s, funcname: %s"
-                                   % (modulename, code.co_name))
-                        return self.localtrace
-            else:
-                return None
-
-    def localtrace_trace_and_count(self, frame, why, arg):
-        if why == "line":
-            # record the file name and line number of every trace
-            filename = frame.f_code.co_filename
-            lineno = frame.f_lineno
-            key = filename, lineno
-            self.counts[key] = self.counts.get(key, 0) + 1
-
-            if self.start_time:
-                print '%.2f' % (time.time() - self.start_time),
-            bname = os.path.basename(filename)
-            print "%s(%d): %s" % (bname, lineno,
-                                  linecache.getline(filename, lineno)),
-        return self.localtrace
-
-    def localtrace_trace(self, frame, why, arg):
-        if why == "line":
-            # record the file name and line number of every trace
-            filename = frame.f_code.co_filename
-            lineno = frame.f_lineno
-
-            if self.start_time:
-                print '%.2f' % (time.time() - self.start_time),
-            bname = os.path.basename(filename)
-            print "%s(%d): %s" % (bname, lineno,
-                                  linecache.getline(filename, lineno)),
-        return self.localtrace
-
-    def localtrace_count(self, frame, why, arg):
-        if why == "line":
-            filename = frame.f_code.co_filename
-            lineno = frame.f_lineno
-            key = filename, lineno
-            self.counts[key] = self.counts.get(key, 0) + 1
-        return self.localtrace
-
-    def results(self):
-        return CoverageResults(self.counts, infile=self.infile,
-                               outfile=self.outfile,
-                               calledfuncs=self._calledfuncs,
-                               callers=self._callers)
-
-def _err_exit(msg):
-    sys.stderr.write("%s: %s\n" % (sys.argv[0], msg))
-    sys.exit(1)
-
-def main(argv=None):
-    import getopt
-
-    if argv is None:
-        argv = sys.argv
-    try:
-        opts, prog_argv = getopt.getopt(argv[1:], "tcrRf:d:msC:lTg",
-                                        ["help", "version", "trace", "count",
-                                         "report", "no-report", "summary",
-                                         "file=", "missing",
-                                         "ignore-module=", "ignore-dir=",
-                                         "coverdir=", "listfuncs",
-                                         "trackcalls", "timing"])
-
-    except getopt.error, msg:
-        sys.stderr.write("%s: %s\n" % (sys.argv[0], msg))
-        sys.stderr.write("Try `%s --help' for more information\n"
-                         % sys.argv[0])
-        sys.exit(1)
-
-    trace = 0
-    count = 0
-    report = 0
-    no_report = 0
-    counts_file = None
-    missing = 0
-    ignore_modules = []
-    ignore_dirs = []
-    coverdir = None
-    summary = 0
-    listfuncs = False
-    countcallers = False
-    timing = False
-
-    for opt, val in opts:
-        if opt == "--help":
-            usage(sys.stdout)
-            sys.exit(0)
-
-        if opt == "--version":
-            sys.stdout.write("trace 2.0\n")
-            sys.exit(0)
-
-        if opt == "-T" or opt == "--trackcalls":
-            countcallers = True
-            continue
-
-        if opt == "-l" or opt == "--listfuncs":
-            listfuncs = True
-            continue
-
-        if opt == "-g" or opt == "--timing":
-            timing = True
-            continue
-
-        if opt == "-t" or opt == "--trace":
-            trace = 1
-            continue
-
-        if opt == "-c" or opt == "--count":
-            count = 1
-            continue
-
-        if opt == "-r" or opt == "--report":
-            report = 1
-            continue
-
-        if opt == "-R" or opt == "--no-report":
-            no_report = 1
-            continue
-
-        if opt == "-f" or opt == "--file":
-            counts_file = val
-            continue
-
-        if opt == "-m" or opt == "--missing":
-            missing = 1
-            continue
-
-        if opt == "-C" or opt == "--coverdir":
-            coverdir = val
-            continue
-
-        if opt == "-s" or opt == "--summary":
-            summary = 1
-            continue
-
-        if opt == "--ignore-module":
-            for mod in val.split(","):
-                ignore_modules.append(mod.strip())
-            continue
-
-        if opt == "--ignore-dir":
-            for s in val.split(os.pathsep):
-                s = os.path.expandvars(s)
-                # should I also call expanduser? (after all, could use $HOME)
-
-                s = s.replace("$prefix",
-                              os.path.join(sys.prefix, "lib",
-                                           "python" + sys.version[:3]))
-                s = s.replace("$exec_prefix",
-                              os.path.join(sys.exec_prefix, "lib",
-                                           "python" + sys.version[:3]))
-                s = os.path.normpath(s)
-                ignore_dirs.append(s)
-            continue
-
-        assert 0, "Should never get here"
-
-    if listfuncs and (count or trace):
-        _err_exit("cannot specify both --listfuncs and (--trace or --count)")
-
-    if not (count or trace or report or listfuncs or countcallers):
-        _err_exit("must specify one of --trace, --count, --report, "
-                  "--listfuncs, or --trackcalls")
-
-    if report and no_report:
-        _err_exit("cannot specify both --report and --no-report")
-
-    if report and not counts_file:
-        _err_exit("--report requires a --file")
-
-    if no_report and len(prog_argv) == 0:
-        _err_exit("missing name of file to run")
-
-    # everything is ready
-    if report:
-        results = CoverageResults(infile=counts_file, outfile=counts_file)
-        results.write_results(missing, summary=summary, coverdir=coverdir)
-    else:
-        sys.argv = prog_argv
-        progname = prog_argv[0]
-        sys.path[0] = os.path.split(progname)[0]
-
-        t = Trace(count, trace, countfuncs=listfuncs,
-                  countcallers=countcallers, ignoremods=ignore_modules,
-                  ignoredirs=ignore_dirs, infile=counts_file,
-                  outfile=counts_file, timing=timing)
-        try:
-            with open(progname) as fp:
-                code = compile(fp.read(), progname, 'exec')
-            # try to emulate __main__ namespace as much as possible
-            globs = {
-                '__file__': progname,
-                '__name__': '__main__',
-                '__package__': None,
-                '__cached__': None,
-            }
-            t.runctx(code, globs, globs)
-        except IOError, err:
-            _err_exit("Cannot run file %r because: %s" % (sys.argv[0], err))
-        except SystemExit:
-            pass
-
-        results = t.results()
-
-        if not no_report:
-            results.write_results(missing, summary=summary, coverdir=coverdir)
-
-if __name__=='__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/traceback.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/traceback.py
deleted file mode 100644
index d0f2995..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/traceback.py
+++ /dev/null
@@ -1,319 +0,0 @@
-"""Extract, format and print information about Python stack traces."""
-
-import linecache
-import sys
-import types
-
-__all__ = ['extract_stack', 'extract_tb', 'format_exception',
-           'format_exception_only', 'format_list', 'format_stack',
-           'format_tb', 'print_exc', 'format_exc', 'print_exception',
-           'print_last', 'print_stack', 'print_tb', 'tb_lineno']
-
-def _print(file, str='', terminator='\n'):
-    file.write(str+terminator)
-
-
-def print_list(extracted_list, file=None):
-    """Print the list of tuples as returned by extract_tb() or
-    extract_stack() as a formatted stack trace to the given file."""
-    if file is None:
-        file = sys.stderr
-    for filename, lineno, name, line in extracted_list:
-        _print(file,
-               '  File "%s", line %d, in %s' % (filename,lineno,name))
-        if line:
-            _print(file, '    %s' % line.strip())
-
-def format_list(extracted_list):
-    """Format a list of traceback entry tuples for printing.
-
-    Given a list of tuples as returned by extract_tb() or
-    extract_stack(), return a list of strings ready for printing.
-    Each string in the resulting list corresponds to the item with the
-    same index in the argument list.  Each string ends in a newline;
-    the strings may contain internal newlines as well, for those items
-    whose source text line is not None.
-    """
-    list = []
-    for filename, lineno, name, line in extracted_list:
-        item = '  File "%s", line %d, in %s\n' % (filename,lineno,name)
-        if line:
-            item = item + '    %s\n' % line.strip()
-        list.append(item)
-    return list
-
-
-def print_tb(tb, limit=None, file=None):
-    """Print up to 'limit' stack trace entries from the traceback 'tb'.
-
-    If 'limit' is omitted or None, all entries are printed.  If 'file'
-    is omitted or None, the output goes to sys.stderr; otherwise
-    'file' should be an open file or file-like object with a write()
-    method.
-    """
-    if file is None:
-        file = sys.stderr
-    if limit is None:
-        if hasattr(sys, 'tracebacklimit'):
-            limit = sys.tracebacklimit
-    n = 0
-    while tb is not None and (limit is None or n < limit):
-        f = tb.tb_frame
-        lineno = tb.tb_lineno
-        co = f.f_code
-        filename = co.co_filename
-        name = co.co_name
-        _print(file,
-               '  File "%s", line %d, in %s' % (filename, lineno, name))
-        linecache.checkcache(filename)
-        line = linecache.getline(filename, lineno, f.f_globals)
-        if line: _print(file, '    ' + line.strip())
-        tb = tb.tb_next
-        n = n+1
-
-def format_tb(tb, limit = None):
-    """A shorthand for 'format_list(extract_stack(f, limit))."""
-    return format_list(extract_tb(tb, limit))
-
-def extract_tb(tb, limit = None):
-    """Return list of up to limit pre-processed entries from traceback.
-
-    This is useful for alternate formatting of stack traces.  If
-    'limit' is omitted or None, all entries are extracted.  A
-    pre-processed stack trace entry is a quadruple (filename, line
-    number, function name, text) representing the information that is
-    usually printed for a stack trace.  The text is a string with
-    leading and trailing whitespace stripped; if the source is not
-    available it is None.
-    """
-    if limit is None:
-        if hasattr(sys, 'tracebacklimit'):
-            limit = sys.tracebacklimit
-    list = []
-    n = 0
-    while tb is not None and (limit is None or n < limit):
-        f = tb.tb_frame
-        lineno = tb.tb_lineno
-        co = f.f_code
-        filename = co.co_filename
-        name = co.co_name
-        linecache.checkcache(filename)
-        line = linecache.getline(filename, lineno, f.f_globals)
-        if line: line = line.strip()
-        else: line = None
-        list.append((filename, lineno, name, line))
-        tb = tb.tb_next
-        n = n+1
-    return list
-
-
-def print_exception(etype, value, tb, limit=None, file=None):
-    """Print exception up to 'limit' stack trace entries from 'tb' to 'file'.
-
-    This differs from print_tb() in the following ways: (1) if
-    traceback is not None, it prints a header "Traceback (most recent
-    call last):"; (2) it prints the exception type and value after the
-    stack trace; (3) if type is SyntaxError and value has the
-    appropriate format, it prints the line where the syntax error
-    occurred with a caret on the next line indicating the approximate
-    position of the error.
-    """
-    if file is None:
-        file = sys.stderr
-    if tb:
-        _print(file, 'Traceback (most recent call last):')
-        print_tb(tb, limit, file)
-    lines = format_exception_only(etype, value)
-    for line in lines:
-        _print(file, line, '')
-
-def format_exception(etype, value, tb, limit = None):
-    """Format a stack trace and the exception information.
-
-    The arguments have the same meaning as the corresponding arguments
-    to print_exception().  The return value is a list of strings, each
-    ending in a newline and some containing internal newlines.  When
-    these lines are concatenated and printed, exactly the same text is
-    printed as does print_exception().
-    """
-    if tb:
-        list = ['Traceback (most recent call last):\n']
-        list = list + format_tb(tb, limit)
-    else:
-        list = []
-    list = list + format_exception_only(etype, value)
-    return list
-
-def format_exception_only(etype, value):
-    """Format the exception part of a traceback.
-
-    The arguments are the exception type and value such as given by
-    sys.last_type and sys.last_value. The return value is a list of
-    strings, each ending in a newline.
-
-    Normally, the list contains a single string; however, for
-    SyntaxError exceptions, it contains several lines that (when
-    printed) display detailed information about where the syntax
-    error occurred.
-
-    The message indicating which exception occurred is always the last
-    string in the list.
-
-    """
-
-    # An instance should not have a meaningful value parameter, but
-    # sometimes does, particularly for string exceptions, such as
-    # >>> raise string1, string2  # deprecated
-    #
-    # Clear these out first because issubtype(string1, SyntaxError)
-    # would throw another exception and mask the original problem.
-    if (isinstance(etype, BaseException) or
-        isinstance(etype, types.InstanceType) or
-        etype is None or type(etype) is str):
-        return [_format_final_exc_line(etype, value)]
-
-    stype = etype.__name__
-
-    if not issubclass(etype, SyntaxError):
-        return [_format_final_exc_line(stype, value)]
-
-    # It was a syntax error; show exactly where the problem was found.
-    lines = []
-    try:
-        msg, (filename, lineno, offset, badline) = value.args
-    except Exception:
-        pass
-    else:
-        filename = filename or "<string>"
-        lines.append('  File "%s", line %d\n' % (filename, lineno))
-        if badline is not None:
-            lines.append('    %s\n' % badline.strip())
-            if offset is not None:
-                caretspace = badline.rstrip('\n')[:offset].lstrip()
-                # non-space whitespace (likes tabs) must be kept for alignment
-                caretspace = ((c.isspace() and c or ' ') for c in caretspace)
-                # only three spaces to account for offset1 == pos 0
-                lines.append('   %s^\n' % ''.join(caretspace))
-        value = msg
-
-    lines.append(_format_final_exc_line(stype, value))
-    return lines
-
-def _format_final_exc_line(etype, value):
-    """Return a list of a single line -- normal case for format_exception_only"""
-    valuestr = _some_str(value)
-    if value is None or not valuestr:
-        line = "%s\n" % etype
-    else:
-        line = "%s: %s\n" % (etype, valuestr)
-    return line
-
-def _some_str(value):
-    try:
-        return str(value)
-    except Exception:
-        pass
-    try:
-        value = unicode(value)
-        return value.encode("ascii", "backslashreplace")
-    except Exception:
-        pass
-    return '<unprintable %s object>' % type(value).__name__
-
-
-def print_exc(limit=None, file=None):
-    """Shorthand for 'print_exception(sys.exc_type, sys.exc_value, sys.exc_traceback, limit, file)'.
-    (In fact, it uses sys.exc_info() to retrieve the same information
-    in a thread-safe way.)"""
-    if file is None:
-        file = sys.stderr
-    try:
-        etype, value, tb = sys.exc_info()
-        print_exception(etype, value, tb, limit, file)
-    finally:
-        etype = value = tb = None
-
-
-def format_exc(limit=None):
-    """Like print_exc() but return a string."""
-    try:
-        etype, value, tb = sys.exc_info()
-        return ''.join(format_exception(etype, value, tb, limit))
-    finally:
-        etype = value = tb = None
-
-
-def print_last(limit=None, file=None):
-    """This is a shorthand for 'print_exception(sys.last_type,
-    sys.last_value, sys.last_traceback, limit, file)'."""
-    if not hasattr(sys, "last_type"):
-        raise ValueError("no last exception")
-    if file is None:
-        file = sys.stderr
-    print_exception(sys.last_type, sys.last_value, sys.last_traceback,
-                    limit, file)
-
-
-def print_stack(f=None, limit=None, file=None):
-    """Print a stack trace from its invocation point.
-
-    The optional 'f' argument can be used to specify an alternate
-    stack frame at which to start. The optional 'limit' and 'file'
-    arguments have the same meaning as for print_exception().
-    """
-    if f is None:
-        try:
-            raise ZeroDivisionError
-        except ZeroDivisionError:
-            f = sys.exc_info()[2].tb_frame.f_back
-    print_list(extract_stack(f, limit), file)
-
-def format_stack(f=None, limit=None):
-    """Shorthand for 'format_list(extract_stack(f, limit))'."""
-    if f is None:
-        try:
-            raise ZeroDivisionError
-        except ZeroDivisionError:
-            f = sys.exc_info()[2].tb_frame.f_back
-    return format_list(extract_stack(f, limit))
-
-def extract_stack(f=None, limit = None):
-    """Extract the raw traceback from the current stack frame.
-
-    The return value has the same format as for extract_tb().  The
-    optional 'f' and 'limit' arguments have the same meaning as for
-    print_stack().  Each item in the list is a quadruple (filename,
-    line number, function name, text), and the entries are in order
-    from oldest to newest stack frame.
-    """
-    if f is None:
-        try:
-            raise ZeroDivisionError
-        except ZeroDivisionError:
-            f = sys.exc_info()[2].tb_frame.f_back
-    if limit is None:
-        if hasattr(sys, 'tracebacklimit'):
-            limit = sys.tracebacklimit
-    list = []
-    n = 0
-    while f is not None and (limit is None or n < limit):
-        lineno = f.f_lineno
-        co = f.f_code
-        filename = co.co_filename
-        name = co.co_name
-        linecache.checkcache(filename)
-        line = linecache.getline(filename, lineno, f.f_globals)
-        if line: line = line.strip()
-        else: line = None
-        list.append((filename, lineno, name, line))
-        f = f.f_back
-        n = n+1
-    list.reverse()
-    return list
-
-def tb_lineno(tb):
-    """Calculate correct line number of traceback given in tb.
-
-    Obsolete in 2.3.
-    """
-    return tb.tb_lineno
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/tty.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/tty.py
deleted file mode 100644
index 3bd1c07..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/tty.py
+++ /dev/null
@@ -1,36 +0,0 @@
-"""Terminal utilities."""
-
-# Author: Steen Lumholt.
-
-from termios import *
-
-__all__ = ["setraw", "setcbreak"]
-
-# Indexes for termios list.
-IFLAG = 0
-OFLAG = 1
-CFLAG = 2
-LFLAG = 3
-ISPEED = 4
-OSPEED = 5
-CC = 6
-
-def setraw(fd, when=TCSAFLUSH):
-    """Put terminal into a raw mode."""
-    mode = tcgetattr(fd)
-    mode[IFLAG] = mode[IFLAG] & ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON)
-    mode[OFLAG] = mode[OFLAG] & ~(OPOST)
-    mode[CFLAG] = mode[CFLAG] & ~(CSIZE | PARENB)
-    mode[CFLAG] = mode[CFLAG] | CS8
-    mode[LFLAG] = mode[LFLAG] & ~(ECHO | ICANON | IEXTEN | ISIG)
-    mode[CC][VMIN] = 1
-    mode[CC][VTIME] = 0
-    tcsetattr(fd, when, mode)
-
-def setcbreak(fd, when=TCSAFLUSH):
-    """Put terminal into a cbreak mode."""
-    mode = tcgetattr(fd)
-    mode[LFLAG] = mode[LFLAG] & ~(ECHO | ICANON)
-    mode[CC][VMIN] = 1
-    mode[CC][VTIME] = 0
-    tcsetattr(fd, when, mode)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/types.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/types.py
deleted file mode 100644
index 236555c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/types.py
+++ /dev/null
@@ -1,84 +0,0 @@
-"""Define names for all type symbols known in the standard interpreter.
-
-Types that are part of optional modules (e.g. array) are not listed.
-"""
-import sys
-
-# Iterators in Python aren't a matter of type but of protocol.  A large
-# and changing number of builtin types implement *some* flavor of
-# iterator.  Don't check the type!  Use hasattr to check for both
-# "__iter__" and "next" attributes instead.
-
-NoneType = type(None)
-TypeType = type
-ObjectType = object
-
-IntType = int
-LongType = long
-FloatType = float
-BooleanType = bool
-try:
-    ComplexType = complex
-except NameError:
-    pass
-
-StringType = str
-
-# StringTypes is already outdated.  Instead of writing "type(x) in
-# types.StringTypes", you should use "isinstance(x, basestring)".  But
-# we keep around for compatibility with Python 2.2.
-try:
-    UnicodeType = unicode
-    StringTypes = (StringType, UnicodeType)
-except NameError:
-    StringTypes = (StringType,)
-
-BufferType = buffer
-
-TupleType = tuple
-ListType = list
-DictType = DictionaryType = dict
-
-def _f(): pass
-FunctionType = type(_f)
-LambdaType = type(lambda: None)         # Same as FunctionType
-CodeType = type(_f.func_code)
-
-def _g():
-    yield 1
-GeneratorType = type(_g())
-
-class _C:
-    def _m(self): pass
-ClassType = type(_C)
-UnboundMethodType = type(_C._m)         # Same as MethodType
-_x = _C()
-InstanceType = type(_x)
-MethodType = type(_x._m)
-
-BuiltinFunctionType = type(len)
-BuiltinMethodType = type([].append)     # Same as BuiltinFunctionType
-
-ModuleType = type(sys)
-FileType = file
-XRangeType = xrange
-
-try:
-    raise TypeError
-except TypeError:
-    tb = sys.exc_info()[2]
-    TracebackType = type(tb)
-    FrameType = type(tb.tb_frame)
-    del tb
-
-SliceType = slice
-EllipsisType = type(Ellipsis)
-
-DictProxyType = type(TypeType.__dict__)
-NotImplementedType = type(NotImplemented)
-
-# For Jython, the following two types are identical
-GetSetDescriptorType = type(FunctionType.func_code)
-MemberDescriptorType = type(FunctionType.func_globals)
-
-del sys, _f, _g, _C, _x                           # Not for export
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/__init__.py
deleted file mode 100644
index f798427..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/__init__.py
+++ /dev/null
@@ -1,69 +0,0 @@
-"""
-Python unit testing framework, based on Erich Gamma's JUnit and Kent Beck's
-Smalltalk testing framework.
-
-This module contains the core framework classes that form the basis of
-specific test cases and suites (TestCase, TestSuite etc.), and also a
-text-based utility class for running the tests and reporting the results
- (TextTestRunner).
-
-Simple usage:
-
-    import unittest
-
-    class IntegerArithmenticTestCase(unittest.TestCase):
-        def testAdd(self):  ## test method names begin 'test*'
-            self.assertEqual((1 + 2), 3)
-            self.assertEqual(0 + 1, 1)
-        def testMultiply(self):
-            self.assertEqual((0 * 10), 0)
-            self.assertEqual((5 * 8), 40)
-
-    if __name__ == '__main__':
-        unittest.main()
-
-Further information is available in the bundled documentation, and from
-
-  http://docs.python.org/library/unittest.html
-
-Copyright (c) 1999-2003 Steve Purcell
-Copyright (c) 2003-2010 Python Software Foundation
-This module is free software, and you may redistribute it and/or modify
-it under the same terms as Python itself, so long as this copyright message
-and disclaimer are retained in their original form.
-
-IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
-SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
-THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE.  THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
-AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
-SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-"""
-
-__all__ = ['TestResult', 'TestCase', 'TestSuite',
-           'TextTestRunner', 'TestLoader', 'FunctionTestCase', 'main',
-           'defaultTestLoader', 'SkipTest', 'skip', 'skipIf', 'skipUnless',
-           'expectedFailure', 'TextTestResult', 'installHandler',
-           'registerResult', 'removeResult', 'removeHandler']
-
-# Expose obsolete functions for backwards compatibility
-__all__.extend(['getTestCaseNames', 'makeSuite', 'findTestCases'])
-
-__unittest = True
-
-from .result import TestResult
-from .case import (TestCase, FunctionTestCase, SkipTest, skip, skipIf,
-                   skipUnless, expectedFailure)
-from .suite import BaseTestSuite, TestSuite
-from .loader import (TestLoader, defaultTestLoader, makeSuite, getTestCaseNames,
-                     findTestCases)
-from .main import TestProgram, main
-from .runner import TextTestRunner, TextTestResult
-from .signals import installHandler, registerResult, removeResult, removeHandler
-
-# deprecated
-_TextTestResult = TextTestResult
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/__main__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/__main__.py
deleted file mode 100644
index 363174d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/__main__.py
+++ /dev/null
@@ -1,12 +0,0 @@
-"""Main entry point"""
-
-import sys
-if sys.argv[0].endswith("__main__.py"):
-    sys.argv[0] = "python -m unittest"
-
-__unittest = True
-
-from .main import main, TestProgram, USAGE_AS_MAIN
-TestProgram.USAGE = USAGE_AS_MAIN
-
-main(module=None)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/case.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/case.py
deleted file mode 100644
index 6991ef9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/case.py
+++ /dev/null
@@ -1,1070 +0,0 @@
-"""Test case implementation"""
-
-import collections
-import sys
-import functools
-import difflib
-import pprint
-import re
-import warnings
-
-from . import result
-from .util import (
-    strclass, safe_repr, unorderable_list_difference,
-    _count_diff_all_purpose, _count_diff_hashable
-)
-
-
-__unittest = True
-
-
-DIFF_OMITTED = ('\nDiff is %s characters long. '
-                 'Set self.maxDiff to None to see it.')
-
-class SkipTest(Exception):
-    """
-    Raise this exception in a test to skip it.
-
-    Usually you can use TestResult.skip() or one of the skipping decorators
-    instead of raising this directly.
-    """
-    pass
-
-class _ExpectedFailure(Exception):
-    """
-    Raise this when a test is expected to fail.
-
-    This is an implementation detail.
-    """
-
-    def __init__(self, exc_info):
-        super(_ExpectedFailure, self).__init__()
-        self.exc_info = exc_info
-
-class _UnexpectedSuccess(Exception):
-    """
-    The test was supposed to fail, but it didn't!
-    """
-    pass
-
-def _id(obj):
-    return obj
-
-def skip(reason):
-    """
-    Unconditionally skip a test.
-    """
-    def decorator(test_item):
-        if not (isinstance(test_item, type) and issubclass(test_item, TestCase)):
-            @functools.wraps(test_item)
-            def skip_wrapper(*args, **kwargs):
-                raise SkipTest(reason)
-            test_item = skip_wrapper
-
-        test_item.__unittest_skip__ = True
-        test_item.__unittest_skip_why__ = reason
-        return test_item
-    return decorator
-
-def skipIf(condition, reason):
-    """
-    Skip a test if the condition is true.
-    """
-    if condition:
-        return skip(reason)
-    return _id
-
-def skipUnless(condition, reason):
-    """
-    Skip a test unless the condition is true.
-    """
-    if not condition:
-        return skip(reason)
-    return _id
-
-
-def expectedFailure(func):
-    @functools.wraps(func)
-    def wrapper(*args, **kwargs):
-        try:
-            func(*args, **kwargs)
-        except Exception:
-            raise _ExpectedFailure(sys.exc_info())
-        raise _UnexpectedSuccess
-    return wrapper
-
-
-class _AssertRaisesContext(object):
-    """A context manager used to implement TestCase.assertRaises* methods."""
-
-    def __init__(self, expected, test_case, expected_regexp=None):
-        self.expected = expected
-        self.failureException = test_case.failureException
-        self.expected_regexp = expected_regexp
-
-    def __enter__(self):
-        return self
-
-    def __exit__(self, exc_type, exc_value, tb):
-        if exc_type is None:
-            try:
-                exc_name = self.expected.__name__
-            except AttributeError:
-                exc_name = str(self.expected)
-            raise self.failureException(
-                "{0} not raised".format(exc_name))
-        if not issubclass(exc_type, self.expected):
-            # let unexpected exceptions pass through
-            return False
-        self.exception = exc_value # store for later retrieval
-        if self.expected_regexp is None:
-            return True
-
-        expected_regexp = self.expected_regexp
-        if isinstance(expected_regexp, basestring):
-            expected_regexp = re.compile(expected_regexp)
-        if not expected_regexp.search(str(exc_value)):
-            raise self.failureException('"%s" does not match "%s"' %
-                     (expected_regexp.pattern, str(exc_value)))
-        return True
-
-
-class TestCase(object):
-    """A class whose instances are single test cases.
-
-    By default, the test code itself should be placed in a method named
-    'runTest'.
-
-    If the fixture may be used for many test cases, create as
-    many test methods as are needed. When instantiating such a TestCase
-    subclass, specify in the constructor arguments the name of the test method
-    that the instance is to execute.
-
-    Test authors should subclass TestCase for their own tests. Construction
-    and deconstruction of the test's environment ('fixture') can be
-    implemented by overriding the 'setUp' and 'tearDown' methods respectively.
-
-    If it is necessary to override the __init__ method, the base class
-    __init__ method must always be called. It is important that subclasses
-    should not change the signature of their __init__ method, since instances
-    of the classes are instantiated automatically by parts of the framework
-    in order to be run.
-    """
-
-    # This attribute determines which exception will be raised when
-    # the instance's assertion methods fail; test methods raising this
-    # exception will be deemed to have 'failed' rather than 'errored'
-
-    failureException = AssertionError
-
-    # This attribute determines whether long messages (including repr of
-    # objects used in assert methods) will be printed on failure in *addition*
-    # to any explicit message passed.
-
-    longMessage = False
-
-    # This attribute sets the maximum length of a diff in failure messages
-    # by assert methods using difflib. It is looked up as an instance attribute
-    # so can be configured by individual tests if required.
-
-    maxDiff = 80*8
-
-    # If a string is longer than _diffThreshold, use normal comparison instead
-    # of difflib.  See #11763.
-    _diffThreshold = 2**16
-
-    # Attribute used by TestSuite for classSetUp
-
-    _classSetupFailed = False
-
-    def __init__(self, methodName='runTest'):
-        """Create an instance of the class that will use the named test
-           method when executed. Raises a ValueError if the instance does
-           not have a method with the specified name.
-        """
-        self._testMethodName = methodName
-        self._resultForDoCleanups = None
-        try:
-            testMethod = getattr(self, methodName)
-        except AttributeError:
-            raise ValueError("no such test method in %s: %s" %
-                  (self.__class__, methodName))
-        self._testMethodDoc = testMethod.__doc__
-        self._cleanups = []
-
-        # Map types to custom assertEqual functions that will compare
-        # instances of said type in more detail to generate a more useful
-        # error message.
-        self._type_equality_funcs = {}
-        self.addTypeEqualityFunc(dict, self.assertDictEqual)
-        self.addTypeEqualityFunc(list, self.assertListEqual)
-        self.addTypeEqualityFunc(tuple, self.assertTupleEqual)
-        self.addTypeEqualityFunc(set, self.assertSetEqual)
-        self.addTypeEqualityFunc(frozenset, self.assertSetEqual)
-        self.addTypeEqualityFunc(unicode, self.assertMultiLineEqual)
-
-    def addTypeEqualityFunc(self, typeobj, function):
-        """Add a type specific assertEqual style function to compare a type.
-
-        This method is for use by TestCase subclasses that need to register
-        their own type equality functions to provide nicer error messages.
-
-        Args:
-            typeobj: The data type to call this function on when both values
-                    are of the same type in assertEqual().
-            function: The callable taking two arguments and an optional
-                    msg= argument that raises self.failureException with a
-                    useful error message when the two arguments are not equal.
-        """
-        self._type_equality_funcs[typeobj] = function
-
-    def addCleanup(self, function, *args, **kwargs):
-        """Add a function, with arguments, to be called when the test is
-        completed. Functions added are called on a LIFO basis and are
-        called after tearDown on test failure or success.
-
-        Cleanup items are called even if setUp fails (unlike tearDown)."""
-        self._cleanups.append((function, args, kwargs))
-
-    def setUp(self):
-        "Hook method for setting up the test fixture before exercising it."
-        pass
-
-    def tearDown(self):
-        "Hook method for deconstructing the test fixture after testing it."
-        pass
-
-    @classmethod
-    def setUpClass(cls):
-        "Hook method for setting up class fixture before running tests in the class."
-
-    @classmethod
-    def tearDownClass(cls):
-        "Hook method for deconstructing the class fixture after running all tests in the class."
-
-    def countTestCases(self):
-        return 1
-
-    def defaultTestResult(self):
-        return result.TestResult()
-
-    def shortDescription(self):
-        """Returns a one-line description of the test, or None if no
-        description has been provided.
-
-        The default implementation of this method returns the first line of
-        the specified test method's docstring.
-        """
-        doc = self._testMethodDoc
-        return doc and doc.split("\n")[0].strip() or None
-
-
-    def id(self):
-        return "%s.%s" % (strclass(self.__class__), self._testMethodName)
-
-    def __eq__(self, other):
-        if type(self) is not type(other):
-            return NotImplemented
-
-        return self._testMethodName == other._testMethodName
-
-    def __ne__(self, other):
-        return not self == other
-
-    def __hash__(self):
-        return hash((type(self), self._testMethodName))
-
-    def __str__(self):
-        return "%s (%s)" % (self._testMethodName, strclass(self.__class__))
-
-    def __repr__(self):
-        return "<%s testMethod=%s>" % \
-               (strclass(self.__class__), self._testMethodName)
-
-    def _addSkip(self, result, reason):
-        addSkip = getattr(result, 'addSkip', None)
-        if addSkip is not None:
-            addSkip(self, reason)
-        else:
-            warnings.warn("TestResult has no addSkip method, skips not reported",
-                          RuntimeWarning, 2)
-            result.addSuccess(self)
-
-    def run(self, result=None):
-        orig_result = result
-        if result is None:
-            result = self.defaultTestResult()
-            startTestRun = getattr(result, 'startTestRun', None)
-            if startTestRun is not None:
-                startTestRun()
-
-        self._resultForDoCleanups = result
-        result.startTest(self)
-
-        testMethod = getattr(self, self._testMethodName)
-        if (getattr(self.__class__, "__unittest_skip__", False) or
-            getattr(testMethod, "__unittest_skip__", False)):
-            # If the class or method was skipped.
-            try:
-                skip_why = (getattr(self.__class__, '__unittest_skip_why__', '')
-                            or getattr(testMethod, '__unittest_skip_why__', ''))
-                self._addSkip(result, skip_why)
-            finally:
-                result.stopTest(self)
-            return
-        try:
-            success = False
-            try:
-                self.setUp()
-            except SkipTest as e:
-                self._addSkip(result, str(e))
-            except KeyboardInterrupt:
-                raise
-            except:
-                result.addError(self, sys.exc_info())
-            else:
-                try:
-                    testMethod()
-                except KeyboardInterrupt:
-                    raise
-                except self.failureException:
-                    result.addFailure(self, sys.exc_info())
-                except _ExpectedFailure as e:
-                    addExpectedFailure = getattr(result, 'addExpectedFailure', None)
-                    if addExpectedFailure is not None:
-                        addExpectedFailure(self, e.exc_info)
-                    else:
-                        warnings.warn("TestResult has no addExpectedFailure method, reporting as passes",
-                                      RuntimeWarning)
-                        result.addSuccess(self)
-                except _UnexpectedSuccess:
-                    addUnexpectedSuccess = getattr(result, 'addUnexpectedSuccess', None)
-                    if addUnexpectedSuccess is not None:
-                        addUnexpectedSuccess(self)
-                    else:
-                        warnings.warn("TestResult has no addUnexpectedSuccess method, reporting as failures",
-                                      RuntimeWarning)
-                        result.addFailure(self, sys.exc_info())
-                except SkipTest as e:
-                    self._addSkip(result, str(e))
-                except:
-                    result.addError(self, sys.exc_info())
-                else:
-                    success = True
-
-                try:
-                    self.tearDown()
-                except KeyboardInterrupt:
-                    raise
-                except:
-                    result.addError(self, sys.exc_info())
-                    success = False
-
-            cleanUpSuccess = self.doCleanups()
-            success = success and cleanUpSuccess
-            if success:
-                result.addSuccess(self)
-        finally:
-            result.stopTest(self)
-            if orig_result is None:
-                stopTestRun = getattr(result, 'stopTestRun', None)
-                if stopTestRun is not None:
-                    stopTestRun()
-
-    def doCleanups(self):
-        """Execute all cleanup functions. Normally called for you after
-        tearDown."""
-        result = self._resultForDoCleanups
-        ok = True
-        while self._cleanups:
-            function, args, kwargs = self._cleanups.pop(-1)
-            try:
-                function(*args, **kwargs)
-            except KeyboardInterrupt:
-                raise
-            except:
-                ok = False
-                result.addError(self, sys.exc_info())
-        return ok
-
-    def __call__(self, *args, **kwds):
-        return self.run(*args, **kwds)
-
-    def debug(self):
-        """Run the test without collecting errors in a TestResult"""
-        self.setUp()
-        getattr(self, self._testMethodName)()
-        self.tearDown()
-        while self._cleanups:
-            function, args, kwargs = self._cleanups.pop(-1)
-            function(*args, **kwargs)
-
-    def skipTest(self, reason):
-        """Skip this test."""
-        raise SkipTest(reason)
-
-    def fail(self, msg=None):
-        """Fail immediately, with the given message."""
-        raise self.failureException(msg)
-
-    def assertFalse(self, expr, msg=None):
-        """Check that the expression is false."""
-        if expr:
-            msg = self._formatMessage(msg, "%s is not false" % safe_repr(expr))
-            raise self.failureException(msg)
-
-    def assertTrue(self, expr, msg=None):
-        """Check that the expression is true."""
-        if not expr:
-            msg = self._formatMessage(msg, "%s is not true" % safe_repr(expr))
-            raise self.failureException(msg)
-
-    def _formatMessage(self, msg, standardMsg):
-        """Honour the longMessage attribute when generating failure messages.
-        If longMessage is False this means:
-        * Use only an explicit message if it is provided
-        * Otherwise use the standard message for the assert
-
-        If longMessage is True:
-        * Use the standard message
-        * If an explicit message is provided, plus ' : ' and the explicit message
-        """
-        if not self.longMessage:
-            return msg or standardMsg
-        if msg is None:
-            return standardMsg
-        try:
-            # don't switch to '{}' formatting in Python 2.X
-            # it changes the way unicode input is handled
-            return '%s : %s' % (standardMsg, msg)
-        except UnicodeDecodeError:
-            return  '%s : %s' % (safe_repr(standardMsg), safe_repr(msg))
-
-
-    def assertRaises(self, excClass, callableObj=None, *args, **kwargs):
-        """Fail unless an exception of class excClass is thrown
-           by callableObj when invoked with arguments args and keyword
-           arguments kwargs. If a different type of exception is
-           thrown, it will not be caught, and the test case will be
-           deemed to have suffered an error, exactly as for an
-           unexpected exception.
-
-           If called with callableObj omitted or None, will return a
-           context object used like this::
-
-                with self.assertRaises(SomeException):
-                    do_something()
-
-           The context manager keeps a reference to the exception as
-           the 'exception' attribute. This allows you to inspect the
-           exception after the assertion::
-
-               with self.assertRaises(SomeException) as cm:
-                   do_something()
-               the_exception = cm.exception
-               self.assertEqual(the_exception.error_code, 3)
-        """
-        context = _AssertRaisesContext(excClass, self)
-        if callableObj is None:
-            return context
-        with context:
-            callableObj(*args, **kwargs)
-
-    def _getAssertEqualityFunc(self, first, second):
-        """Get a detailed comparison function for the types of the two args.
-
-        Returns: A callable accepting (first, second, msg=None) that will
-        raise a failure exception if first != second with a useful human
-        readable error message for those types.
-        """
-        #
-        # NOTE(gregory.p.smith): I considered isinstance(first, type(second))
-        # and vice versa.  I opted for the conservative approach in case
-        # subclasses are not intended to be compared in detail to their super
-        # class instances using a type equality func.  This means testing
-        # subtypes won't automagically use the detailed comparison.  Callers
-        # should use their type specific assertSpamEqual method to compare
-        # subclasses if the detailed comparison is desired and appropriate.
-        # See the discussion in http://bugs.python.org/issue2578.
-        #
-        if type(first) is type(second):
-            asserter = self._type_equality_funcs.get(type(first))
-            if asserter is not None:
-                return asserter
-
-        return self._baseAssertEqual
-
-    def _baseAssertEqual(self, first, second, msg=None):
-        """The default assertEqual implementation, not type specific."""
-        if not first == second:
-            standardMsg = '%s != %s' % (safe_repr(first), safe_repr(second))
-            msg = self._formatMessage(msg, standardMsg)
-            raise self.failureException(msg)
-
-    def assertEqual(self, first, second, msg=None):
-        """Fail if the two objects are unequal as determined by the '=='
-           operator.
-        """
-        assertion_func = self._getAssertEqualityFunc(first, second)
-        assertion_func(first, second, msg=msg)
-
-    def assertNotEqual(self, first, second, msg=None):
-        """Fail if the two objects are equal as determined by the '=='
-           operator.
-        """
-        if not first != second:
-            msg = self._formatMessage(msg, '%s == %s' % (safe_repr(first),
-                                                          safe_repr(second)))
-            raise self.failureException(msg)
-
-
-    def assertAlmostEqual(self, first, second, places=None, msg=None, delta=None):
-        """Fail if the two objects are unequal as determined by their
-           difference rounded to the given number of decimal places
-           (default 7) and comparing to zero, or by comparing that the
-           between the two objects is more than the given delta.
-
-           Note that decimal places (from zero) are usually not the same
-           as significant digits (measured from the most signficant digit).
-
-           If the two objects compare equal then they will automatically
-           compare almost equal.
-        """
-        if first == second:
-            # shortcut
-            return
-        if delta is not None and places is not None:
-            raise TypeError("specify delta or places not both")
-
-        if delta is not None:
-            if abs(first - second) <= delta:
-                return
-
-            standardMsg = '%s != %s within %s delta' % (safe_repr(first),
-                                                        safe_repr(second),
-                                                        safe_repr(delta))
-        else:
-            if places is None:
-                places = 7
-
-            if round(abs(second-first), places) == 0:
-                return
-
-            standardMsg = '%s != %s within %r places' % (safe_repr(first),
-                                                          safe_repr(second),
-                                                          places)
-        msg = self._formatMessage(msg, standardMsg)
-        raise self.failureException(msg)
-
-    def assertNotAlmostEqual(self, first, second, places=None, msg=None, delta=None):
-        """Fail if the two objects are equal as determined by their
-           difference rounded to the given number of decimal places
-           (default 7) and comparing to zero, or by comparing that the
-           between the two objects is less than the given delta.
-
-           Note that decimal places (from zero) are usually not the same
-           as significant digits (measured from the most signficant digit).
-
-           Objects that are equal automatically fail.
-        """
-        if delta is not None and places is not None:
-            raise TypeError("specify delta or places not both")
-        if delta is not None:
-            if not (first == second) and abs(first - second) > delta:
-                return
-            standardMsg = '%s == %s within %s delta' % (safe_repr(first),
-                                                        safe_repr(second),
-                                                        safe_repr(delta))
-        else:
-            if places is None:
-                places = 7
-            if not (first == second) and round(abs(second-first), places) != 0:
-                return
-            standardMsg = '%s == %s within %r places' % (safe_repr(first),
-                                                         safe_repr(second),
-                                                         places)
-
-        msg = self._formatMessage(msg, standardMsg)
-        raise self.failureException(msg)
-
-    # Synonyms for assertion methods
-
-    # The plurals are undocumented.  Keep them that way to discourage use.
-    # Do not add more.  Do not remove.
-    # Going through a deprecation cycle on these would annoy many people.
-    assertEquals = assertEqual
-    assertNotEquals = assertNotEqual
-    assertAlmostEquals = assertAlmostEqual
-    assertNotAlmostEquals = assertNotAlmostEqual
-    assert_ = assertTrue
-
-    # These fail* assertion method names are pending deprecation and will
-    # be a DeprecationWarning in 3.2; http://bugs.python.org/issue2578
-    def _deprecate(original_func):
-        def deprecated_func(*args, **kwargs):
-            warnings.warn(
-                'Please use {0} instead.'.format(original_func.__name__),
-                PendingDeprecationWarning, 2)
-            return original_func(*args, **kwargs)
-        return deprecated_func
-
-    failUnlessEqual = _deprecate(assertEqual)
-    failIfEqual = _deprecate(assertNotEqual)
-    failUnlessAlmostEqual = _deprecate(assertAlmostEqual)
-    failIfAlmostEqual = _deprecate(assertNotAlmostEqual)
-    failUnless = _deprecate(assertTrue)
-    failUnlessRaises = _deprecate(assertRaises)
-    failIf = _deprecate(assertFalse)
-
-    def assertSequenceEqual(self, seq1, seq2, msg=None, seq_type=None):
-        """An equality assertion for ordered sequences (like lists and tuples).
-
-        For the purposes of this function, a valid ordered sequence type is one
-        which can be indexed, has a length, and has an equality operator.
-
-        Args:
-            seq1: The first sequence to compare.
-            seq2: The second sequence to compare.
-            seq_type: The expected datatype of the sequences, or None if no
-                    datatype should be enforced.
-            msg: Optional message to use on failure instead of a list of
-                    differences.
-        """
-        if seq_type is not None:
-            seq_type_name = seq_type.__name__
-            if not isinstance(seq1, seq_type):
-                raise self.failureException('First sequence is not a %s: %s'
-                                        % (seq_type_name, safe_repr(seq1)))
-            if not isinstance(seq2, seq_type):
-                raise self.failureException('Second sequence is not a %s: %s'
-                                        % (seq_type_name, safe_repr(seq2)))
-        else:
-            seq_type_name = "sequence"
-
-        differing = None
-        try:
-            len1 = len(seq1)
-        except (TypeError, NotImplementedError):
-            differing = 'First %s has no length.    Non-sequence?' % (
-                    seq_type_name)
-
-        if differing is None:
-            try:
-                len2 = len(seq2)
-            except (TypeError, NotImplementedError):
-                differing = 'Second %s has no length.    Non-sequence?' % (
-                        seq_type_name)
-
-        if differing is None:
-            if seq1 == seq2:
-                return
-
-            seq1_repr = safe_repr(seq1)
-            seq2_repr = safe_repr(seq2)
-            if len(seq1_repr) > 30:
-                seq1_repr = seq1_repr[:30] + '...'
-            if len(seq2_repr) > 30:
-                seq2_repr = seq2_repr[:30] + '...'
-            elements = (seq_type_name.capitalize(), seq1_repr, seq2_repr)
-            differing = '%ss differ: %s != %s\n' % elements
-
-            for i in xrange(min(len1, len2)):
-                try:
-                    item1 = seq1[i]
-                except (TypeError, IndexError, NotImplementedError):
-                    differing += ('\nUnable to index element %d of first %s\n' %
-                                 (i, seq_type_name))
-                    break
-
-                try:
-                    item2 = seq2[i]
-                except (TypeError, IndexError, NotImplementedError):
-                    differing += ('\nUnable to index element %d of second %s\n' %
-                                 (i, seq_type_name))
-                    break
-
-                if item1 != item2:
-                    differing += ('\nFirst differing element %d:\n%s\n%s\n' %
-                                 (i, item1, item2))
-                    break
-            else:
-                if (len1 == len2 and seq_type is None and
-                    type(seq1) != type(seq2)):
-                    # The sequences are the same, but have differing types.
-                    return
-
-            if len1 > len2:
-                differing += ('\nFirst %s contains %d additional '
-                             'elements.\n' % (seq_type_name, len1 - len2))
-                try:
-                    differing += ('First extra element %d:\n%s\n' %
-                                  (len2, seq1[len2]))
-                except (TypeError, IndexError, NotImplementedError):
-                    differing += ('Unable to index element %d '
-                                  'of first %s\n' % (len2, seq_type_name))
-            elif len1 < len2:
-                differing += ('\nSecond %s contains %d additional '
-                             'elements.\n' % (seq_type_name, len2 - len1))
-                try:
-                    differing += ('First extra element %d:\n%s\n' %
-                                  (len1, seq2[len1]))
-                except (TypeError, IndexError, NotImplementedError):
-                    differing += ('Unable to index element %d '
-                                  'of second %s\n' % (len1, seq_type_name))
-        standardMsg = differing
-        diffMsg = '\n' + '\n'.join(
-            difflib.ndiff(pprint.pformat(seq1).splitlines(),
-                          pprint.pformat(seq2).splitlines()))
-        standardMsg = self._truncateMessage(standardMsg, diffMsg)
-        msg = self._formatMessage(msg, standardMsg)
-        self.fail(msg)
-
-    def _truncateMessage(self, message, diff):
-        max_diff = self.maxDiff
-        if max_diff is None or len(diff) <= max_diff:
-            return message + diff
-        return message + (DIFF_OMITTED % len(diff))
-
-    def assertListEqual(self, list1, list2, msg=None):
-        """A list-specific equality assertion.
-
-        Args:
-            list1: The first list to compare.
-            list2: The second list to compare.
-            msg: Optional message to use on failure instead of a list of
-                    differences.
-
-        """
-        self.assertSequenceEqual(list1, list2, msg, seq_type=list)
-
-    def assertTupleEqual(self, tuple1, tuple2, msg=None):
-        """A tuple-specific equality assertion.
-
-        Args:
-            tuple1: The first tuple to compare.
-            tuple2: The second tuple to compare.
-            msg: Optional message to use on failure instead of a list of
-                    differences.
-        """
-        self.assertSequenceEqual(tuple1, tuple2, msg, seq_type=tuple)
-
-    def assertSetEqual(self, set1, set2, msg=None):
-        """A set-specific equality assertion.
-
-        Args:
-            set1: The first set to compare.
-            set2: The second set to compare.
-            msg: Optional message to use on failure instead of a list of
-                    differences.
-
-        assertSetEqual uses ducktyping to support different types of sets, and
-        is optimized for sets specifically (parameters must support a
-        difference method).
-        """
-        try:
-            difference1 = set1.difference(set2)
-        except TypeError, e:
-            self.fail('invalid type when attempting set difference: %s' % e)
-        except AttributeError, e:
-            self.fail('first argument does not support set difference: %s' % e)
-
-        try:
-            difference2 = set2.difference(set1)
-        except TypeError, e:
-            self.fail('invalid type when attempting set difference: %s' % e)
-        except AttributeError, e:
-            self.fail('second argument does not support set difference: %s' % e)
-
-        if not (difference1 or difference2):
-            return
-
-        lines = []
-        if difference1:
-            lines.append('Items in the first set but not the second:')
-            for item in difference1:
-                lines.append(repr(item))
-        if difference2:
-            lines.append('Items in the second set but not the first:')
-            for item in difference2:
-                lines.append(repr(item))
-
-        standardMsg = '\n'.join(lines)
-        self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertIn(self, member, container, msg=None):
-        """Just like self.assertTrue(a in b), but with a nicer default message."""
-        if member not in container:
-            standardMsg = '%s not found in %s' % (safe_repr(member),
-                                                  safe_repr(container))
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertNotIn(self, member, container, msg=None):
-        """Just like self.assertTrue(a not in b), but with a nicer default message."""
-        if member in container:
-            standardMsg = '%s unexpectedly found in %s' % (safe_repr(member),
-                                                        safe_repr(container))
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertIs(self, expr1, expr2, msg=None):
-        """Just like self.assertTrue(a is b), but with a nicer default message."""
-        if expr1 is not expr2:
-            standardMsg = '%s is not %s' % (safe_repr(expr1),
-                                             safe_repr(expr2))
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertIsNot(self, expr1, expr2, msg=None):
-        """Just like self.assertTrue(a is not b), but with a nicer default message."""
-        if expr1 is expr2:
-            standardMsg = 'unexpectedly identical: %s' % (safe_repr(expr1),)
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertDictEqual(self, d1, d2, msg=None):
-        self.assertIsInstance(d1, dict, 'First argument is not a dictionary')
-        self.assertIsInstance(d2, dict, 'Second argument is not a dictionary')
-
-        if d1 != d2:
-            standardMsg = '%s != %s' % (safe_repr(d1, True), safe_repr(d2, True))
-            diff = ('\n' + '\n'.join(difflib.ndiff(
-                           pprint.pformat(d1).splitlines(),
-                           pprint.pformat(d2).splitlines())))
-            standardMsg = self._truncateMessage(standardMsg, diff)
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertDictContainsSubset(self, expected, actual, msg=None):
-        """Checks whether actual is a superset of expected."""
-        missing = []
-        mismatched = []
-        for key, value in expected.iteritems():
-            if key not in actual:
-                missing.append(key)
-            elif value != actual[key]:
-                mismatched.append('%s, expected: %s, actual: %s' %
-                                  (safe_repr(key), safe_repr(value),
-                                   safe_repr(actual[key])))
-
-        if not (missing or mismatched):
-            return
-
-        standardMsg = ''
-        if missing:
-            standardMsg = 'Missing: %s' % ','.join(safe_repr(m) for m in
-                                                    missing)
-        if mismatched:
-            if standardMsg:
-                standardMsg += '; '
-            standardMsg += 'Mismatched values: %s' % ','.join(mismatched)
-
-        self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertItemsEqual(self, expected_seq, actual_seq, msg=None):
-        """An unordered sequence specific comparison. It asserts that
-        actual_seq and expected_seq have the same element counts.
-        Equivalent to::
-
-            self.assertEqual(Counter(iter(actual_seq)),
-                             Counter(iter(expected_seq)))
-
-        Asserts that each element has the same count in both sequences.
-        Example:
-            - [0, 1, 1] and [1, 0, 1] compare equal.
-            - [0, 0, 1] and [0, 1] compare unequal.
-        """
-        first_seq, second_seq = list(actual_seq), list(expected_seq)
-        with warnings.catch_warnings():
-            if sys.py3kwarning:
-                # Silence Py3k warning raised during the sorting
-                for _msg in ["(code|dict|type) inequality comparisons",
-                             "builtin_function_or_method order comparisons",
-                             "comparing unequal types"]:
-                    warnings.filterwarnings("ignore", _msg, DeprecationWarning)
-            try:
-                first = collections.Counter(first_seq)
-                second = collections.Counter(second_seq)
-            except TypeError:
-                # Handle case with unhashable elements
-                differences = _count_diff_all_purpose(first_seq, second_seq)
-            else:
-                if first == second:
-                    return
-                differences = _count_diff_hashable(first_seq, second_seq)
-
-        if differences:
-            standardMsg = 'Element counts were not equal:\n'
-            lines = ['First has %d, Second has %d:  %r' % diff for diff in differences]
-            diffMsg = '\n'.join(lines)
-            standardMsg = self._truncateMessage(standardMsg, diffMsg)
-            msg = self._formatMessage(msg, standardMsg)
-            self.fail(msg)
-
-    def assertMultiLineEqual(self, first, second, msg=None):
-        """Assert that two multi-line strings are equal."""
-        self.assertIsInstance(first, basestring,
-                'First argument is not a string')
-        self.assertIsInstance(second, basestring,
-                'Second argument is not a string')
-
-        if first != second:
-            # don't use difflib if the strings are too long
-            if (len(first) > self._diffThreshold or
-                len(second) > self._diffThreshold):
-                self._baseAssertEqual(first, second, msg)
-            firstlines = first.splitlines(True)
-            secondlines = second.splitlines(True)
-            if len(firstlines) == 1 and first.strip('\r\n') == first:
-                firstlines = [first + '\n']
-                secondlines = [second + '\n']
-            standardMsg = '%s != %s' % (safe_repr(first, True),
-                                        safe_repr(second, True))
-            diff = '\n' + ''.join(difflib.ndiff(firstlines, secondlines))
-            standardMsg = self._truncateMessage(standardMsg, diff)
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertLess(self, a, b, msg=None):
-        """Just like self.assertTrue(a < b), but with a nicer default message."""
-        if not a < b:
-            standardMsg = '%s not less than %s' % (safe_repr(a), safe_repr(b))
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertLessEqual(self, a, b, msg=None):
-        """Just like self.assertTrue(a <= b), but with a nicer default message."""
-        if not a <= b:
-            standardMsg = '%s not less than or equal to %s' % (safe_repr(a), safe_repr(b))
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertGreater(self, a, b, msg=None):
-        """Just like self.assertTrue(a > b), but with a nicer default message."""
-        if not a > b:
-            standardMsg = '%s not greater than %s' % (safe_repr(a), safe_repr(b))
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertGreaterEqual(self, a, b, msg=None):
-        """Just like self.assertTrue(a >= b), but with a nicer default message."""
-        if not a >= b:
-            standardMsg = '%s not greater than or equal to %s' % (safe_repr(a), safe_repr(b))
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertIsNone(self, obj, msg=None):
-        """Same as self.assertTrue(obj is None), with a nicer default message."""
-        if obj is not None:
-            standardMsg = '%s is not None' % (safe_repr(obj),)
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertIsNotNone(self, obj, msg=None):
-        """Included for symmetry with assertIsNone."""
-        if obj is None:
-            standardMsg = 'unexpectedly None'
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertIsInstance(self, obj, cls, msg=None):
-        """Same as self.assertTrue(isinstance(obj, cls)), with a nicer
-        default message."""
-        if not isinstance(obj, cls):
-            standardMsg = '%s is not an instance of %r' % (safe_repr(obj), cls)
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertNotIsInstance(self, obj, cls, msg=None):
-        """Included for symmetry with assertIsInstance."""
-        if isinstance(obj, cls):
-            standardMsg = '%s is an instance of %r' % (safe_repr(obj), cls)
-            self.fail(self._formatMessage(msg, standardMsg))
-
-    def assertRaisesRegexp(self, expected_exception, expected_regexp,
-                           callable_obj=None, *args, **kwargs):
-        """Asserts that the message in a raised exception matches a regexp.
-
-        Args:
-            expected_exception: Exception class expected to be raised.
-            expected_regexp: Regexp (re pattern object or string) expected
-                    to be found in error message.
-            callable_obj: Function to be called.
-            args: Extra args.
-            kwargs: Extra kwargs.
-        """
-        context = _AssertRaisesContext(expected_exception, self, expected_regexp)
-        if callable_obj is None:
-            return context
-        with context:
-            callable_obj(*args, **kwargs)
-
-    def assertRegexpMatches(self, text, expected_regexp, msg=None):
-        """Fail the test unless the text matches the regular expression."""
-        if isinstance(expected_regexp, basestring):
-            expected_regexp = re.compile(expected_regexp)
-        if not expected_regexp.search(text):
-            msg = msg or "Regexp didn't match"
-            msg = '%s: %r not found in %r' % (msg, expected_regexp.pattern, text)
-            raise self.failureException(msg)
-
-    def assertNotRegexpMatches(self, text, unexpected_regexp, msg=None):
-        """Fail the test if the text matches the regular expression."""
-        if isinstance(unexpected_regexp, basestring):
-            unexpected_regexp = re.compile(unexpected_regexp)
-        match = unexpected_regexp.search(text)
-        if match:
-            msg = msg or "Regexp matched"
-            msg = '%s: %r matches %r in %r' % (msg,
-                                               text[match.start():match.end()],
-                                               unexpected_regexp.pattern,
-                                               text)
-            raise self.failureException(msg)
-
-
-class FunctionTestCase(TestCase):
-    """A test case that wraps a test function.
-
-    This is useful for slipping pre-existing test functions into the
-    unittest framework. Optionally, set-up and tidy-up functions can be
-    supplied. As with TestCase, the tidy-up ('tearDown') function will
-    always be called if the set-up ('setUp') function ran successfully.
-    """
-
-    def __init__(self, testFunc, setUp=None, tearDown=None, description=None):
-        super(FunctionTestCase, self).__init__()
-        self._setUpFunc = setUp
-        self._tearDownFunc = tearDown
-        self._testFunc = testFunc
-        self._description = description
-
-    def setUp(self):
-        if self._setUpFunc is not None:
-            self._setUpFunc()
-
-    def tearDown(self):
-        if self._tearDownFunc is not None:
-            self._tearDownFunc()
-
-    def runTest(self):
-        self._testFunc()
-
-    def id(self):
-        return self._testFunc.__name__
-
-    def __eq__(self, other):
-        if not isinstance(other, self.__class__):
-            return NotImplemented
-
-        return self._setUpFunc == other._setUpFunc and \
-               self._tearDownFunc == other._tearDownFunc and \
-               self._testFunc == other._testFunc and \
-               self._description == other._description
-
-    def __ne__(self, other):
-        return not self == other
-
-    def __hash__(self):
-        return hash((type(self), self._setUpFunc, self._tearDownFunc,
-                     self._testFunc, self._description))
-
-    def __str__(self):
-        return "%s (%s)" % (strclass(self.__class__),
-                            self._testFunc.__name__)
-
-    def __repr__(self):
-        return "<%s tec=%s>" % (strclass(self.__class__),
-                                     self._testFunc)
-
-    def shortDescription(self):
-        if self._description is not None:
-            return self._description
-        doc = self._testFunc.__doc__
-        return doc and doc.split("\n")[0].strip() or None
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/loader.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/loader.py
deleted file mode 100644
index 13aa7d8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/loader.py
+++ /dev/null
@@ -1,314 +0,0 @@
-"""Loading unittests."""
-
-import os
-import re
-import sys
-import traceback
-import types
-
-from functools import cmp_to_key as _CmpToKey
-from fnmatch import fnmatch
-
-from . import case, suite
-
-__unittest = True
-
-# what about .pyc or .pyo (etc)
-# we would need to avoid loading the same tests multiple times
-# from '.py', '.pyc' *and* '.pyo'
-VALID_MODULE_NAME = re.compile(r'[_a-z]\w*\.py$', re.IGNORECASE)
-
-
-def _make_failed_import_test(name, suiteClass):
-    message = 'Failed to import test module: %s\n%s' % (name, traceback.format_exc())
-    return _make_failed_test('ModuleImportFailure', name, ImportError(message),
-                             suiteClass)
-
-def _make_failed_load_tests(name, exception, suiteClass):
-    return _make_failed_test('LoadTestsFailure', name, exception, suiteClass)
-
-def _make_failed_test(classname, methodname, exception, suiteClass):
-    def testFailure(self):
-        raise exception
-    attrs = {methodname: testFailure}
-    TestClass = type(classname, (case.TestCase,), attrs)
-    return suiteClass((TestClass(methodname),))
-
-
-class TestLoader(object):
-    """
-    This class is responsible for loading tests according to various criteria
-    and returning them wrapped in a TestSuite
-    """
-    testMethodPrefix = 'test'
-    sortTestMethodsUsing = cmp
-    suiteClass = suite.TestSuite
-    _top_level_dir = None
-
-    def loadTestsFromTestCase(self, testCaseClass):
-        """Return a suite of all tests cases contained in testCaseClass"""
-        if issubclass(testCaseClass, suite.TestSuite):
-            raise TypeError("Test cases should not be derived from TestSuite." \
-                                " Maybe you meant to derive from TestCase?")
-        testCaseNames = self.getTestCaseNames(testCaseClass)
-        if not testCaseNames and hasattr(testCaseClass, 'runTest'):
-            testCaseNames = ['runTest']
-        loaded_suite = self.suiteClass(map(testCaseClass, testCaseNames))
-        return loaded_suite
-
-    def loadTestsFromModule(self, module, use_load_tests=True):
-        """Return a suite of all tests cases contained in the given module"""
-        tests = []
-        for name in dir(module):
-            obj = getattr(module, name)
-            if isinstance(obj, type) and issubclass(obj, case.TestCase):
-                tests.append(self.loadTestsFromTestCase(obj))
-
-        load_tests = getattr(module, 'load_tests', None)
-        tests = self.suiteClass(tests)
-        if use_load_tests and load_tests is not None:
-            try:
-                return load_tests(self, tests, None)
-            except Exception, e:
-                return _make_failed_load_tests(module.__name__, e,
-                                               self.suiteClass)
-        return tests
-
-    def loadTestsFromName(self, name, module=None):
-        """Return a suite of all tests cases given a string specifier.
-
-        The name may resolve either to a module, a test case class, a
-        test method within a test case class, or a callable object which
-        returns a TestCase or TestSuite instance.
-
-        The method optionally resolves the names relative to a given module.
-        """
-        parts = name.split('.')
-        if module is None:
-            parts_copy = parts[:]
-            while parts_copy:
-                try:
-                    module = __import__('.'.join(parts_copy))
-                    break
-                except ImportError:
-                    del parts_copy[-1]
-                    if not parts_copy:
-                        raise
-            parts = parts[1:]
-        obj = module
-        for part in parts:
-            parent, obj = obj, getattr(obj, part)
-
-        if isinstance(obj, types.ModuleType):
-            return self.loadTestsFromModule(obj)
-        elif isinstance(obj, type) and issubclass(obj, case.TestCase):
-            return self.loadTestsFromTestCase(obj)
-        elif (isinstance(obj, types.UnboundMethodType) and
-              isinstance(parent, type) and
-              issubclass(parent, case.TestCase)):
-            return self.suiteClass([parent(obj.__name__)])
-        elif isinstance(obj, suite.TestSuite):
-            return obj
-        elif hasattr(obj, '__call__'):
-            test = obj()
-            if isinstance(test, suite.TestSuite):
-                return test
-            elif isinstance(test, case.TestCase):
-                return self.suiteClass([test])
-            else:
-                raise TypeError("calling %s returned %s, not a test" %
-                                (obj, test))
-        else:
-            raise TypeError("don't know how to make test from: %s" % obj)
-
-    def loadTestsFromNames(self, names, module=None):
-        """Return a suite of all tests cases found using the given sequence
-        of string specifiers. See 'loadTestsFromName()'.
-        """
-        suites = [self.loadTestsFromName(name, module) for name in names]
-        return self.suiteClass(suites)
-
-    def getTestCaseNames(self, testCaseClass):
-        """Return a sorted sequence of method names found within testCaseClass
-        """
-        def isTestMethod(attrname, testCaseClass=testCaseClass,
-                         prefix=self.testMethodPrefix):
-            return attrname.startswith(prefix) and \
-                hasattr(getattr(testCaseClass, attrname), '__call__')
-        testFnNames = filter(isTestMethod, dir(testCaseClass))
-        if self.sortTestMethodsUsing:
-            testFnNames.sort(key=_CmpToKey(self.sortTestMethodsUsing))
-        return testFnNames
-
-    def discover(self, start_dir, pattern='test*.py', top_level_dir=None):
-        """Find and return all test modules from the specified start
-        directory, recursing into subdirectories to find them. Only test files
-        that match the pattern will be loaded. (Using shell style pattern
-        matching.)
-
-        All test modules must be importable from the top level of the project.
-        If the start directory is not the top level directory then the top
-        level directory must be specified separately.
-
-        If a test package name (directory with '__init__.py') matches the
-        pattern then the package will be checked for a 'load_tests' function. If
-        this exists then it will be called with loader, tests, pattern.
-
-        If load_tests exists then discovery does  *not* recurse into the package,
-        load_tests is responsible for loading all tests in the package.
-
-        The pattern is deliberately not stored as a loader attribute so that
-        packages can continue discovery themselves. top_level_dir is stored so
-        load_tests does not need to pass this argument in to loader.discover().
-        """
-        set_implicit_top = False
-        if top_level_dir is None and self._top_level_dir is not None:
-            # make top_level_dir optional if called from load_tests in a package
-            top_level_dir = self._top_level_dir
-        elif top_level_dir is None:
-            set_implicit_top = True
-            top_level_dir = start_dir
-
-        top_level_dir = os.path.abspath(top_level_dir)
-
-        if not top_level_dir in sys.path:
-            # all test modules must be importable from the top level directory
-            # should we *unconditionally* put the start directory in first
-            # in sys.path to minimise likelihood of conflicts between installed
-            # modules and development versions?
-            sys.path.insert(0, top_level_dir)
-        self._top_level_dir = top_level_dir
-
-        is_not_importable = False
-        if os.path.isdir(os.path.abspath(start_dir)):
-            start_dir = os.path.abspath(start_dir)
-            if start_dir != top_level_dir:
-                is_not_importable = not os.path.isfile(os.path.join(start_dir, '__init__.py'))
-        else:
-            # support for discovery from dotted module names
-            try:
-                __import__(start_dir)
-            except ImportError:
-                is_not_importable = True
-            else:
-                the_module = sys.modules[start_dir]
-                top_part = start_dir.split('.')[0]
-                start_dir = os.path.abspath(os.path.dirname((the_module.__file__)))
-                if set_implicit_top:
-                    self._top_level_dir = self._get_directory_containing_module(top_part)
-                    sys.path.remove(top_level_dir)
-
-        if is_not_importable:
-            raise ImportError('Start directory is not importable: %r' % start_dir)
-
-        tests = list(self._find_tests(start_dir, pattern))
-        return self.suiteClass(tests)
-
-    def _get_directory_containing_module(self, module_name):
-        module = sys.modules[module_name]
-        full_path = os.path.abspath(module.__file__)
-
-        if os.path.basename(full_path).lower().startswith('__init__.py'):
-            return os.path.dirname(os.path.dirname(full_path))
-        else:
-            # here we have been given a module rather than a package - so
-            # all we can do is search the *same* directory the module is in
-            # should an exception be raised instead
-            return os.path.dirname(full_path)
-
-    def _get_name_from_path(self, path):
-        path = os.path.splitext(os.path.normpath(path))[0]
-
-        _relpath = os.path.relpath(path, self._top_level_dir)
-        assert not os.path.isabs(_relpath), "Path must be within the project"
-        assert not _relpath.startswith('..'), "Path must be within the project"
-
-        name = _relpath.replace(os.path.sep, '.')
-        return name
-
-    def _get_module_from_name(self, name):
-        __import__(name)
-        return sys.modules[name]
-
-    def _match_path(self, path, full_path, pattern):
-        # override this method to use alternative matching strategy
-        return fnmatch(path, pattern)
-
-    def _find_tests(self, start_dir, pattern):
-        """Used by discovery. Yields test suites it loads."""
-        paths = os.listdir(start_dir)
-
-        for path in paths:
-            full_path = os.path.join(start_dir, path)
-            if os.path.isfile(full_path):
-                if not VALID_MODULE_NAME.match(path):
-                    # valid Python identifiers only
-                    continue
-                if not self._match_path(path, full_path, pattern):
-                    continue
-                # if the test file matches, load it
-                name = self._get_name_from_path(full_path)
-                try:
-                    module = self._get_module_from_name(name)
-                except:
-                    yield _make_failed_import_test(name, self.suiteClass)
-                else:
-                    mod_file = os.path.abspath(getattr(module, '__file__', full_path))
-                    realpath = os.path.splitext(mod_file)[0]
-                    fullpath_noext = os.path.splitext(full_path)[0]
-                    if realpath.lower() != fullpath_noext.lower():
-                        module_dir = os.path.dirname(realpath)
-                        mod_name = os.path.splitext(os.path.basename(full_path))[0]
-                        expected_dir = os.path.dirname(full_path)
-                        msg = ("%r module incorrectly imported from %r. Expected %r. "
-                               "Is this module globally installed?")
-                        raise ImportError(msg % (mod_name, module_dir, expected_dir))
-                    yield self.loadTestsFromModule(module)
-            elif os.path.isdir(full_path):
-                if not os.path.isfile(os.path.join(full_path, '__init__.py')):
-                    continue
-
-                load_tests = None
-                tests = None
-                if fnmatch(path, pattern):
-                    # only check load_tests if the package directory itself matches the filter
-                    name = self._get_name_from_path(full_path)
-                    package = self._get_module_from_name(name)
-                    load_tests = getattr(package, 'load_tests', None)
-                    tests = self.loadTestsFromModule(package, use_load_tests=False)
-
-                if load_tests is None:
-                    if tests is not None:
-                        # tests loaded from package file
-                        yield tests
-                    # recurse into the package
-                    for test in self._find_tests(full_path, pattern):
-                        yield test
-                else:
-                    try:
-                        yield load_tests(self, tests, pattern)
-                    except Exception, e:
-                        yield _make_failed_load_tests(package.__name__, e,
-                                                      self.suiteClass)
-
-defaultTestLoader = TestLoader()
-
-
-def _makeLoader(prefix, sortUsing, suiteClass=None):
-    loader = TestLoader()
-    loader.sortTestMethodsUsing = sortUsing
-    loader.testMethodPrefix = prefix
-    if suiteClass:
-        loader.suiteClass = suiteClass
-    return loader
-
-def getTestCaseNames(testCaseClass, prefix, sortUsing=cmp):
-    return _makeLoader(prefix, sortUsing).getTestCaseNames(testCaseClass)
-
-def makeSuite(testCaseClass, prefix='test', sortUsing=cmp,
-              suiteClass=suite.TestSuite):
-    return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromTestCase(testCaseClass)
-
-def findTestCases(module, prefix='test', sortUsing=cmp,
-                  suiteClass=suite.TestSuite):
-    return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/main.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/main.py
deleted file mode 100644
index b05b467..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/main.py
+++ /dev/null
@@ -1,233 +0,0 @@
-"""Unittest main program"""
-
-import sys
-import os
-import types
-
-from . import loader, runner
-from .signals import installHandler
-
-__unittest = True
-
-FAILFAST     = "  -f, --failfast   Stop on first failure\n"
-CATCHBREAK   = "  -c, --catch      Catch control-C and display results\n"
-BUFFEROUTPUT = "  -b, --buffer     Buffer stdout and stderr during test runs\n"
-
-USAGE_AS_MAIN = """\
-Usage: %(progName)s [options] [tests]
-
-Options:
-  -h, --help       Show this message
-  -v, --verbose    Verbose output
-  -q, --quiet      Minimal output
-%(failfast)s%(catchbreak)s%(buffer)s
-Examples:
-  %(progName)s test_module               - run tests from test_module
-  %(progName)s module.TestClass          - run tests from module.TestClass
-  %(progName)s module.Class.test_method  - run specified test method
-
-[tests] can be a list of any number of test modules, classes and test
-methods.
-
-Alternative Usage: %(progName)s discover [options]
-
-Options:
-  -v, --verbose    Verbose output
-%(failfast)s%(catchbreak)s%(buffer)s  -s directory     Directory to start discovery ('.' default)
-  -p pattern       Pattern to match test files ('test*.py' default)
-  -t directory     Top level directory of project (default to
-                   start directory)
-
-For test discovery all test modules must be importable from the top
-level directory of the project.
-"""
-
-USAGE_FROM_MODULE = """\
-Usage: %(progName)s [options] [test] [...]
-
-Options:
-  -h, --help       Show this message
-  -v, --verbose    Verbose output
-  -q, --quiet      Minimal output
-%(failfast)s%(catchbreak)s%(buffer)s
-Examples:
-  %(progName)s                               - run default set of tests
-  %(progName)s MyTestSuite                   - run suite 'MyTestSuite'
-  %(progName)s MyTestCase.testSomething      - run MyTestCase.testSomething
-  %(progName)s MyTestCase                    - run all 'test*' test methods
-                                               in MyTestCase
-"""
-
-
-
-class TestProgram(object):
-    """A command-line program that runs a set of tests; this is primarily
-       for making test modules conveniently executable.
-    """
-    USAGE = USAGE_FROM_MODULE
-
-    # defaults for testing
-    failfast = catchbreak = buffer = progName = None
-
-    def __init__(self, module='__main__', defaultTest=None, argv=None,
-                    testRunner=None, testLoader=loader.defaultTestLoader,
-                    exit=True, verbosity=1, failfast=None, catchbreak=None,
-                    buffer=None):
-        if isinstance(module, basestring):
-            self.module = __import__(module)
-            for part in module.split('.')[1:]:
-                self.module = getattr(self.module, part)
-        else:
-            self.module = module
-        if argv is None:
-            argv = sys.argv
-
-        self.exit = exit
-        self.failfast = failfast
-        self.catchbreak = catchbreak
-        self.verbosity = verbosity
-        self.buffer = buffer
-        self.defaultTest = defaultTest
-        self.testRunner = testRunner
-        self.testLoader = testLoader
-        self.progName = os.path.basename(argv[0])
-        self.parseArgs(argv)
-        self.runTests()
-
-    def usageExit(self, msg=None):
-        if msg:
-            print msg
-        usage = {'progName': self.progName, 'catchbreak': '', 'failfast': '',
-                 'buffer': ''}
-        if self.failfast != False:
-            usage['failfast'] = FAILFAST
-        if self.catchbreak != False:
-            usage['catchbreak'] = CATCHBREAK
-        if self.buffer != False:
-            usage['buffer'] = BUFFEROUTPUT
-        print self.USAGE % usage
-        sys.exit(2)
-
-    def parseArgs(self, argv):
-        if len(argv) > 1 and argv[1].lower() == 'discover':
-            self._do_discovery(argv[2:])
-            return
-
-        import getopt
-        long_opts = ['help', 'verbose', 'quiet', 'failfast', 'catch', 'buffer']
-        try:
-            options, args = getopt.getopt(argv[1:], 'hHvqfcb', long_opts)
-            for opt, value in options:
-                if opt in ('-h','-H','--help'):
-                    self.usageExit()
-                if opt in ('-q','--quiet'):
-                    self.verbosity = 0
-                if opt in ('-v','--verbose'):
-                    self.verbosity = 2
-                if opt in ('-f','--failfast'):
-                    if self.failfast is None:
-                        self.failfast = True
-                    # Should this raise an exception if -f is not valid?
-                if opt in ('-c','--catch'):
-                    if self.catchbreak is None:
-                        self.catchbreak = True
-                    # Should this raise an exception if -c is not valid?
-                if opt in ('-b','--buffer'):
-                    if self.buffer is None:
-                        self.buffer = True
-                    # Should this raise an exception if -b is not valid?
-            if len(args) == 0 and self.defaultTest is None:
-                # createTests will load tests from self.module
-                self.testNames = None
-            elif len(args) > 0:
-                self.testNames = args
-                if __name__ == '__main__':
-                    # to support python -m unittest ...
-                    self.module = None
-            else:
-                self.testNames = (self.defaultTest,)
-            self.createTests()
-        except getopt.error, msg:
-            self.usageExit(msg)
-
-    def createTests(self):
-        if self.testNames is None:
-            self.test = self.testLoader.loadTestsFromModule(self.module)
-        else:
-            self.test = self.testLoader.loadTestsFromNames(self.testNames,
-                                                           self.module)
-
-    def _do_discovery(self, argv, Loader=loader.TestLoader):
-        # handle command line args for test discovery
-        self.progName = '%s discover' % self.progName
-        import optparse
-        parser = optparse.OptionParser()
-        parser.prog = self.progName
-        parser.add_option('-v', '--verbose', dest='verbose', default=False,
-                          help='Verbose output', action='store_true')
-        if self.failfast != False:
-            parser.add_option('-f', '--failfast', dest='failfast', default=False,
-                              help='Stop on first fail or error',
-                              action='store_true')
-        if self.catchbreak != False:
-            parser.add_option('-c', '--catch', dest='catchbreak', default=False,
-                              help='Catch ctrl-C and display results so far',
-                              action='store_true')
-        if self.buffer != False:
-            parser.add_option('-b', '--buffer', dest='buffer', default=False,
-                              help='Buffer stdout and stderr during tests',
-                              action='store_true')
-        parser.add_option('-s', '--start-directory', dest='start', default='.',
-                          help="Directory to start discovery ('.' default)")
-        parser.add_option('-p', '--pattern', dest='pattern', default='test*.py',
-                          help="Pattern to match tests ('test*.py' default)")
-        parser.add_option('-t', '--top-level-directory', dest='top', default=None,
-                          help='Top level directory of project (defaults to start directory)')
-
-        options, args = parser.parse_args(argv)
-        if len(args) > 3:
-            self.usageExit()
-
-        for name, value in zip(('start', 'pattern', 'top'), args):
-            setattr(options, name, value)
-
-        # only set options from the parsing here
-        # if they weren't set explicitly in the constructor
-        if self.failfast is None:
-            self.failfast = options.failfast
-        if self.catchbreak is None:
-            self.catchbreak = options.catchbreak
-        if self.buffer is None:
-            self.buffer = options.buffer
-
-        if options.verbose:
-            self.verbosity = 2
-
-        start_dir = options.start
-        pattern = options.pattern
-        top_level_dir = options.top
-
-        loader = Loader()
-        self.test = loader.discover(start_dir, pattern, top_level_dir)
-
-    def runTests(self):
-        if self.catchbreak:
-            installHandler()
-        if self.testRunner is None:
-            self.testRunner = runner.TextTestRunner
-        if isinstance(self.testRunner, (type, types.ClassType)):
-            try:
-                testRunner = self.testRunner(verbosity=self.verbosity,
-                                             failfast=self.failfast,
-                                             buffer=self.buffer)
-            except TypeError:
-                # didn't accept the verbosity, buffer or failfast arguments
-                testRunner = self.testRunner()
-        else:
-            # it is assumed to be a TestRunner instance
-            testRunner = self.testRunner
-        self.result = testRunner.run(self.test)
-        if self.exit:
-            sys.exit(not self.result.wasSuccessful())
-
-main = TestProgram
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/result.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/result.py
deleted file mode 100644
index 78a9950..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/result.py
+++ /dev/null
@@ -1,193 +0,0 @@
-"""Test result object"""
-
-import os
-import sys
-import traceback
-
-from StringIO import StringIO
-
-from . import util
-from functools import wraps
-
-__unittest = True
-
-def failfast(method):
-    @wraps(method)
-    def inner(self, *args, **kw):
-        if getattr(self, 'failfast', False):
-            self.stop()
-        return method(self, *args, **kw)
-    return inner
-
-STDOUT_LINE = '\nStdout:\n%s'
-STDERR_LINE = '\nStderr:\n%s'
-
-
-class TestResult(object):
-    """Holder for test result information.
-
-    Test results are automatically managed by the TestCase and TestSuite
-    classes, and do not need to be explicitly manipulated by writers of tests.
-
-    Each instance holds the total number of tests run, and collections of
-    failures and errors that occurred among those test runs. The collections
-    contain tuples of (testcase, exceptioninfo), where exceptioninfo is the
-    formatted traceback of the error that occurred.
-    """
-    _previousTestClass = None
-    _testRunEntered = False
-    _moduleSetUpFailed = False
-    def __init__(self, stream=None, descriptions=None, verbosity=None):
-        self.failfast = False
-        self.failures = []
-        self.errors = []
-        self.testsRun = 0
-        self.skipped = []
-        self.expectedFailures = []
-        self.unexpectedSuccesses = []
-        self.shouldStop = False
-        self.buffer = False
-        self._stdout_buffer = None
-        self._stderr_buffer = None
-        self._original_stdout = sys.stdout
-        self._original_stderr = sys.stderr
-        self._mirrorOutput = False
-
-    def printErrors(self):
-        "Called by TestRunner after test run"
-
-    def startTest(self, test):
-        "Called when the given test is about to be run"
-        self.testsRun += 1
-        self._mirrorOutput = False
-        self._setupStdout()
-
-    def _setupStdout(self):
-        if self.buffer:
-            if self._stderr_buffer is None:
-                self._stderr_buffer = StringIO()
-                self._stdout_buffer = StringIO()
-            sys.stdout = self._stdout_buffer
-            sys.stderr = self._stderr_buffer
-
-    def startTestRun(self):
-        """Called once before any tests are executed.
-
-        See startTest for a method called before each test.
-        """
-
-    def stopTest(self, test):
-        """Called when the given test has been run"""
-        self._restoreStdout()
-        self._mirrorOutput = False
-
-    def _restoreStdout(self):
-        if self.buffer:
-            if self._mirrorOutput:
-                output = sys.stdout.getvalue()
-                error = sys.stderr.getvalue()
-                if output:
-                    if not output.endswith('\n'):
-                        output += '\n'
-                    self._original_stdout.write(STDOUT_LINE % output)
-                if error:
-                    if not error.endswith('\n'):
-                        error += '\n'
-                    self._original_stderr.write(STDERR_LINE % error)
-
-            sys.stdout = self._original_stdout
-            sys.stderr = self._original_stderr
-            self._stdout_buffer.seek(0)
-            self._stdout_buffer.truncate()
-            self._stderr_buffer.seek(0)
-            self._stderr_buffer.truncate()
-
-    def stopTestRun(self):
-        """Called once after all tests are executed.
-
-        See stopTest for a method called after each test.
-        """
-
-    @failfast
-    def addError(self, test, err):
-        """Called when an error has occurred. 'err' is a tuple of values as
-        returned by sys.exc_info().
-        """
-        self.errors.append((test, self._exc_info_to_string(err, test)))
-        self._mirrorOutput = True
-
-    @failfast
-    def addFailure(self, test, err):
-        """Called when an error has occurred. 'err' is a tuple of values as
-        returned by sys.exc_info()."""
-        self.failures.append((test, self._exc_info_to_string(err, test)))
-        self._mirrorOutput = True
-
-    def addSuccess(self, test):
-        "Called when a test has completed successfully"
-        pass
-
-    def addSkip(self, test, reason):
-        """Called when a test is skipped."""
-        self.skipped.append((test, reason))
-
-    def addExpectedFailure(self, test, err):
-        """Called when an expected failure/error occured."""
-        self.expectedFailures.append(
-            (test, self._exc_info_to_string(err, test)))
-
-    @failfast
-    def addUnexpectedSuccess(self, test):
-        """Called when a test was expected to fail, but succeed."""
-        self.unexpectedSuccesses.append(test)
-
-    def wasSuccessful(self):
-        "Tells whether or not this result was a success"
-        return len(self.failures) == len(self.errors) == 0
-
-    def stop(self):
-        "Indicates that the tests should be aborted"
-        self.shouldStop = True
-
-    def _exc_info_to_string(self, err, test):
-        """Converts a sys.exc_info()-style tuple of values into a string."""
-        exctype, value, tb = err
-        # Skip test runner traceback levels
-        while tb and self._is_relevant_tb_level(tb):
-            tb = tb.tb_next
-
-        if exctype is test.failureException:
-            # Skip assert*() traceback levels
-            length = self._count_relevant_tb_levels(tb)
-            msgLines = traceback.format_exception(exctype, value, tb, length)
-        else:
-            msgLines = traceback.format_exception(exctype, value, tb)
-
-        if self.buffer:
-            output = sys.stdout.getvalue()
-            error = sys.stderr.getvalue()
-            if output:
-                if not output.endswith('\n'):
-                    output += '\n'
-                msgLines.append(STDOUT_LINE % output)
-            if error:
-                if not error.endswith('\n'):
-                    error += '\n'
-                msgLines.append(STDERR_LINE % error)
-        return ''.join(msgLines)
-
-
-    def _is_relevant_tb_level(self, tb):
-        return '__unittest' in tb.tb_frame.f_globals
-
-    def _count_relevant_tb_levels(self, tb):
-        length = 0
-        while tb and not self._is_relevant_tb_level(tb):
-            length += 1
-            tb = tb.tb_next
-        return length
-
-    def __repr__(self):
-        return ("<%s run=%i errors=%i failures=%i>" %
-               (util.strclass(self.__class__), self.testsRun, len(self.errors),
-                len(self.failures)))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/runner.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/runner.py
deleted file mode 100644
index 79be670..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/runner.py
+++ /dev/null
@@ -1,196 +0,0 @@
-"""Running tests"""
-
-import sys
-import time
-
-from . import result
-from .signals import registerResult
-
-__unittest = True
-
-
-class _WritelnDecorator(object):
-    """Used to decorate file-like objects with a handy 'writeln' method"""
-    def __init__(self,stream):
-        self.stream = stream
-
-    def __getattr__(self, attr):
-        if attr in ('stream', '__getstate__'):
-            raise AttributeError(attr)
-        return getattr(self.stream,attr)
-
-    def writeln(self, arg=None):
-        if arg:
-            self.write(arg)
-        self.write('\n') # text-mode streams translate to \r\n if needed
-
-
-class TextTestResult(result.TestResult):
-    """A test result class that can print formatted text results to a stream.
-
-    Used by TextTestRunner.
-    """
-    separator1 = '=' * 70
-    separator2 = '-' * 70
-
-    def __init__(self, stream, descriptions, verbosity):
-        super(TextTestResult, self).__init__()
-        self.stream = stream
-        self.showAll = verbosity > 1
-        self.dots = verbosity == 1
-        self.descriptions = descriptions
-
-    def getDescription(self, test):
-        doc_first_line = test.shortDescription()
-        if self.descriptions and doc_first_line:
-            return '\n'.join((str(test), doc_first_line))
-        else:
-            return str(test)
-
-    def startTest(self, test):
-        super(TextTestResult, self).startTest(test)
-        if self.showAll:
-            self.stream.write(self.getDescription(test))
-            self.stream.write(" ... ")
-            self.stream.flush()
-
-    def addSuccess(self, test):
-        super(TextTestResult, self).addSuccess(test)
-        if self.showAll:
-            self.stream.writeln("ok")
-        elif self.dots:
-            self.stream.write('.')
-            self.stream.flush()
-
-    def addError(self, test, err):
-        super(TextTestResult, self).addError(test, err)
-        if self.showAll:
-            self.stream.writeln("ERROR")
-        elif self.dots:
-            self.stream.write('E')
-            self.stream.flush()
-
-    def addFailure(self, test, err):
-        super(TextTestResult, self).addFailure(test, err)
-        if self.showAll:
-            self.stream.writeln("FAIL")
-        elif self.dots:
-            self.stream.write('F')
-            self.stream.flush()
-
-    def addSkip(self, test, reason):
-        super(TextTestResult, self).addSkip(test, reason)
-        if self.showAll:
-            self.stream.writeln("skipped {0!r}".format(reason))
-        elif self.dots:
-            self.stream.write("s")
-            self.stream.flush()
-
-    def addExpectedFailure(self, test, err):
-        super(TextTestResult, self).addExpectedFailure(test, err)
-        if self.showAll:
-            self.stream.writeln("expected failure")
-        elif self.dots:
-            self.stream.write("x")
-            self.stream.flush()
-
-    def addUnexpectedSuccess(self, test):
-        super(TextTestResult, self).addUnexpectedSuccess(test)
-        if self.showAll:
-            self.stream.writeln("unexpected success")
-        elif self.dots:
-            self.stream.write("u")
-            self.stream.flush()
-
-    def printErrors(self):
-        if self.dots or self.showAll:
-            self.stream.writeln()
-        self.printErrorList('ERROR', self.errors)
-        self.printErrorList('FAIL', self.failures)
-
-    def printErrorList(self, flavour, errors):
-        for test, err in errors:
-            self.stream.writeln(self.separator1)
-            self.stream.writeln("%s: %s" % (flavour,self.getDescription(test)))
-            self.stream.writeln(self.separator2)
-            self.stream.writeln("%s" % err)
-
-
-class TextTestRunner(object):
-    """A test runner class that displays results in textual form.
-
-    It prints out the names of tests as they are run, errors as they
-    occur, and a summary of the results at the end of the test run.
-    """
-    resultclass = TextTestResult
-
-    def __init__(self, stream=sys.stderr, descriptions=True, verbosity=1,
-                 failfast=False, buffer=False, resultclass=None):
-        self.stream = _WritelnDecorator(stream)
-        self.descriptions = descriptions
-        self.verbosity = verbosity
-        self.failfast = failfast
-        self.buffer = buffer
-        if resultclass is not None:
-            self.resultclass = resultclass
-
-    def _makeResult(self):
-        return self.resultclass(self.stream, self.descriptions, self.verbosity)
-
-    def run(self, test):
-        "Run the given test case or test suite."
-        result = self._makeResult()
-        registerResult(result)
-        result.failfast = self.failfast
-        result.buffer = self.buffer
-        startTime = time.time()
-        startTestRun = getattr(result, 'startTestRun', None)
-        if startTestRun is not None:
-            startTestRun()
-        try:
-            test(result)
-        finally:
-            stopTestRun = getattr(result, 'stopTestRun', None)
-            if stopTestRun is not None:
-                stopTestRun()
-        stopTime = time.time()
-        timeTaken = stopTime - startTime
-        result.printErrors()
-        if hasattr(result, 'separator2'):
-            self.stream.writeln(result.separator2)
-        run = result.testsRun
-        self.stream.writeln("Ran %d test%s in %.3fs" %
-                            (run, run != 1 and "s" or "", timeTaken))
-        self.stream.writeln()
-
-        expectedFails = unexpectedSuccesses = skipped = 0
-        try:
-            results = map(len, (result.expectedFailures,
-                                result.unexpectedSuccesses,
-                                result.skipped))
-        except AttributeError:
-            pass
-        else:
-            expectedFails, unexpectedSuccesses, skipped = results
-
-        infos = []
-        if not result.wasSuccessful():
-            self.stream.write("FAILED")
-            failed, errored = map(len, (result.failures, result.errors))
-            if failed:
-                infos.append("failures=%d" % failed)
-            if errored:
-                infos.append("errors=%d" % errored)
-        else:
-            self.stream.write("OK")
-        if skipped:
-            infos.append("skipped=%d" % skipped)
-        if expectedFails:
-            infos.append("expected failures=%d" % expectedFails)
-        if unexpectedSuccesses:
-            infos.append("unexpected successes=%d" % unexpectedSuccesses)
-        if infos:
-            self.stream.writeln(" (%s)" % (", ".join(infos),))
-        else:
-            self.stream.write("\n")
-        return result
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/signals.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/signals.py
deleted file mode 100644
index ca084ef..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/signals.py
+++ /dev/null
@@ -1,57 +0,0 @@
-import signal
-import weakref
-
-from functools import wraps
-
-__unittest = True
-
-
-class _InterruptHandler(object):
-    def __init__(self, default_handler):
-        self.called = False
-        self.default_handler = default_handler
-
-    def __call__(self, signum, frame):
-        installed_handler = signal.getsignal(signal.SIGINT)
-        if installed_handler is not self:
-            # if we aren't the installed handler, then delegate immediately
-            # to the default handler
-            self.default_handler(signum, frame)
-
-        if self.called:
-            self.default_handler(signum, frame)
-        self.called = True
-        for result in _results.keys():
-            result.stop()
-
-_results = weakref.WeakKeyDictionary()
-def registerResult(result):
-    _results[result] = 1
-
-def removeResult(result):
-    return bool(_results.pop(result, None))
-
-_interrupt_handler = None
-def installHandler():
-    global _interrupt_handler
-    if _interrupt_handler is None:
-        default_handler = signal.getsignal(signal.SIGINT)
-        _interrupt_handler = _InterruptHandler(default_handler)
-        signal.signal(signal.SIGINT, _interrupt_handler)
-
-
-def removeHandler(method=None):
-    if method is not None:
-        @wraps(method)
-        def inner(*args, **kwargs):
-            initial = signal.getsignal(signal.SIGINT)
-            removeHandler()
-            try:
-                return method(*args, **kwargs)
-            finally:
-                signal.signal(signal.SIGINT, initial)
-        return inner
-
-    global _interrupt_handler
-    if _interrupt_handler is not None:
-        signal.signal(signal.SIGINT, _interrupt_handler.default_handler)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/suite.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/suite.py
deleted file mode 100644
index 7e4a6b7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/suite.py
+++ /dev/null
@@ -1,303 +0,0 @@
-"""TestSuite"""
-
-import sys
-
-from . import case
-from . import util
-
-__unittest = True
-
-
-def _call_if_exists(parent, attr):
-    func = getattr(parent, attr, lambda: None)
-    func()
-
-
-class BaseTestSuite(object):
-    """A simple test suite that doesn't provide class or module shared fixtures.
-    """
-    def __init__(self, tests=()):
-        self._tests = []
-        self.addTests(tests)
-
-    def __repr__(self):
-        return "<%s tests=%s>" % (util.strclass(self.__class__), list(self))
-
-    def __eq__(self, other):
-        if not isinstance(other, self.__class__):
-            return NotImplemented
-        return list(self) == list(other)
-
-    def __ne__(self, other):
-        return not self == other
-
-    # Can't guarantee hash invariant, so flag as unhashable
-    __hash__ = None
-
-    def __iter__(self):
-        return iter(self._tests)
-
-    def countTestCases(self):
-        cases = 0
-        for test in self:
-            cases += test.countTestCases()
-        return cases
-
-    def addTest(self, test):
-        # sanity checks
-        if not hasattr(test, '__call__'):
-            raise TypeError("{} is not callable".format(repr(test)))
-        if isinstance(test, type) and issubclass(test,
-                                                 (case.TestCase, TestSuite)):
-            raise TypeError("TestCases and TestSuites must be instantiated "
-                            "before passing them to addTest()")
-        self._tests.append(test)
-
-    def addTests(self, tests):
-        if isinstance(tests, basestring):
-            raise TypeError("tests must be an iterable of tests, not a string")
-        for test in tests:
-            self.addTest(test)
-
-    def run(self, result):
-        for test in self:
-            if result.shouldStop:
-                break
-            test(result)
-        return result
-
-    def __call__(self, *args, **kwds):
-        return self.run(*args, **kwds)
-
-    def debug(self):
-        """Run the tests without collecting errors in a TestResult"""
-        for test in self:
-            test.debug()
-
-
-class TestSuite(BaseTestSuite):
-    """A test suite is a composite test consisting of a number of TestCases.
-
-    For use, create an instance of TestSuite, then add test case instances.
-    When all tests have been added, the suite can be passed to a test
-    runner, such as TextTestRunner. It will run the individual test cases
-    in the order in which they were added, aggregating the results. When
-    subclassing, do not forget to call the base class constructor.
-    """
-
-    def run(self, result, debug=False):
-        topLevel = False
-        if getattr(result, '_testRunEntered', False) is False:
-            result._testRunEntered = topLevel = True
-
-        for test in self:
-            if result.shouldStop:
-                break
-
-            if _isnotsuite(test):
-                self._tearDownPreviousClass(test, result)
-                self._handleModuleFixture(test, result)
-                self._handleClassSetUp(test, result)
-                result._previousTestClass = test.__class__
-
-                if (getattr(test.__class__, '_classSetupFailed', False) or
-                    getattr(result, '_moduleSetUpFailed', False)):
-                    continue
-
-            if not debug:
-                test(result)
-            else:
-                test.debug()
-
-        if topLevel:
-            self._tearDownPreviousClass(None, result)
-            self._handleModuleTearDown(result)
-            result._testRunEntered = False
-        return result
-
-    def debug(self):
-        """Run the tests without collecting errors in a TestResult"""
-        debug = _DebugResult()
-        self.run(debug, True)
-
-    ################################
-
-    def _handleClassSetUp(self, test, result):
-        previousClass = getattr(result, '_previousTestClass', None)
-        currentClass = test.__class__
-        if currentClass == previousClass:
-            return
-        if result._moduleSetUpFailed:
-            return
-        if getattr(currentClass, "__unittest_skip__", False):
-            return
-
-        try:
-            currentClass._classSetupFailed = False
-        except TypeError:
-            # test may actually be a function
-            # so its class will be a builtin-type
-            pass
-
-        setUpClass = getattr(currentClass, 'setUpClass', None)
-        if setUpClass is not None:
-            _call_if_exists(result, '_setupStdout')
-            try:
-                setUpClass()
-            except Exception as e:
-                if isinstance(result, _DebugResult):
-                    raise
-                currentClass._classSetupFailed = True
-                className = util.strclass(currentClass)
-                errorName = 'setUpClass (%s)' % className
-                self._addClassOrModuleLevelException(result, e, errorName)
-            finally:
-                _call_if_exists(result, '_restoreStdout')
-
-    def _get_previous_module(self, result):
-        previousModule = None
-        previousClass = getattr(result, '_previousTestClass', None)
-        if previousClass is not None:
-            previousModule = previousClass.__module__
-        return previousModule
-
-
-    def _handleModuleFixture(self, test, result):
-        previousModule = self._get_previous_module(result)
-        currentModule = test.__class__.__module__
-        if currentModule == previousModule:
-            return
-
-        self._handleModuleTearDown(result)
-
-        result._moduleSetUpFailed = False
-        try:
-            module = sys.modules[currentModule]
-        except KeyError:
-            return
-        setUpModule = getattr(module, 'setUpModule', None)
-        if setUpModule is not None:
-            _call_if_exists(result, '_setupStdout')
-            try:
-                setUpModule()
-            except Exception, e:
-                if isinstance(result, _DebugResult):
-                    raise
-                result._moduleSetUpFailed = True
-                errorName = 'setUpModule (%s)' % currentModule
-                self._addClassOrModuleLevelException(result, e, errorName)
-            finally:
-                _call_if_exists(result, '_restoreStdout')
-
-    def _addClassOrModuleLevelException(self, result, exception, errorName):
-        error = _ErrorHolder(errorName)
-        addSkip = getattr(result, 'addSkip', None)
-        if addSkip is not None and isinstance(exception, case.SkipTest):
-            addSkip(error, str(exception))
-        else:
-            result.addError(error, sys.exc_info())
-
-    def _handleModuleTearDown(self, result):
-        previousModule = self._get_previous_module(result)
-        if previousModule is None:
-            return
-        if result._moduleSetUpFailed:
-            return
-
-        try:
-            module = sys.modules[previousModule]
-        except KeyError:
-            return
-
-        tearDownModule = getattr(module, 'tearDownModule', None)
-        if tearDownModule is not None:
-            _call_if_exists(result, '_setupStdout')
-            try:
-                tearDownModule()
-            except Exception as e:
-                if isinstance(result, _DebugResult):
-                    raise
-                errorName = 'tearDownModule (%s)' % previousModule
-                self._addClassOrModuleLevelException(result, e, errorName)
-            finally:
-                _call_if_exists(result, '_restoreStdout')
-
-    def _tearDownPreviousClass(self, test, result):
-        previousClass = getattr(result, '_previousTestClass', None)
-        currentClass = test.__class__
-        if currentClass == previousClass:
-            return
-        if getattr(previousClass, '_classSetupFailed', False):
-            return
-        if getattr(result, '_moduleSetUpFailed', False):
-            return
-        if getattr(previousClass, "__unittest_skip__", False):
-            return
-
-        tearDownClass = getattr(previousClass, 'tearDownClass', None)
-        if tearDownClass is not None:
-            _call_if_exists(result, '_setupStdout')
-            try:
-                tearDownClass()
-            except Exception, e:
-                if isinstance(result, _DebugResult):
-                    raise
-                className = util.strclass(previousClass)
-                errorName = 'tearDownClass (%s)' % className
-                self._addClassOrModuleLevelException(result, e, errorName)
-            finally:
-                _call_if_exists(result, '_restoreStdout')
-
-
-class _ErrorHolder(object):
-    """
-    Placeholder for a TestCase inside a result. As far as a TestResult
-    is concerned, this looks exactly like a unit test. Used to insert
-    arbitrary errors into a test suite run.
-    """
-    # Inspired by the ErrorHolder from Twisted:
-    # http://twistedmatrix.com/trac/browser/trunk/twisted/trial/runner.py
-
-    # attribute used by TestResult._exc_info_to_string
-    failureException = None
-
-    def __init__(self, description):
-        self.description = description
-
-    def id(self):
-        return self.description
-
-    def shortDescription(self):
-        return None
-
-    def __repr__(self):
-        return "<ErrorHolder description=%r>" % (self.description,)
-
-    def __str__(self):
-        return self.id()
-
-    def run(self, result):
-        # could call result.addError(...) - but this test-like object
-        # shouldn't be run anyway
-        pass
-
-    def __call__(self, result):
-        return self.run(result)
-
-    def countTestCases(self):
-        return 0
-
-def _isnotsuite(test):
-    "A crude way to tell apart testcases and suites with duck-typing"
-    try:
-        iter(test)
-    except TypeError:
-        return True
-    return False
-
-
-class _DebugResult(object):
-    "Used by the TestSuite to hold previous class when running in debug."
-    _previousTestClass = None
-    _moduleSetUpFailed = False
-    shouldStop = False
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/__init__.py
deleted file mode 100644
index 020cfd6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/__init__.py
+++ /dev/null
@@ -1,21 +0,0 @@
-import os
-import sys
-import unittest
-
-
-here = os.path.dirname(__file__)
-loader = unittest.defaultTestLoader
-
-def suite():
-    suite = unittest.TestSuite()
-    for fn in os.listdir(here):
-        if fn.startswith("test") and fn.endswith(".py"):
-            modname = "unittest.test." + fn[:-3]
-            __import__(modname)
-            module = sys.modules[modname]
-            suite.addTest(loader.loadTestsFromModule(module))
-    return suite
-
-
-if __name__ == "__main__":
-    unittest.main(defaultTest="suite")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/dummy.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/dummy.py
deleted file mode 100644
index 2c75dfc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/dummy.py
+++ /dev/null
@@ -1 +0,0 @@
-# Empty module for testing the loading of modules
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/support.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/support.py
deleted file mode 100644
index 5d65f60..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/support.py
+++ /dev/null
@@ -1,119 +0,0 @@
-import unittest
-
-
-class TestHashing(object):
-    """Used as a mixin for TestCase"""
-
-    # Check for a valid __hash__ implementation
-    def test_hash(self):
-        for obj_1, obj_2 in self.eq_pairs:
-            try:
-                if not hash(obj_1) == hash(obj_2):
-                    self.fail("%r and %r do not hash equal" % (obj_1, obj_2))
-            except KeyboardInterrupt:
-                raise
-            except Exception, e:
-                self.fail("Problem hashing %r and %r: %s" % (obj_1, obj_2, e))
-
-        for obj_1, obj_2 in self.ne_pairs:
-            try:
-                if hash(obj_1) == hash(obj_2):
-                    self.fail("%s and %s hash equal, but shouldn't" %
-                              (obj_1, obj_2))
-            except KeyboardInterrupt:
-                raise
-            except Exception, e:
-                self.fail("Problem hashing %s and %s: %s" % (obj_1, obj_2, e))
-
-
-class TestEquality(object):
-    """Used as a mixin for TestCase"""
-
-    # Check for a valid __eq__ implementation
-    def test_eq(self):
-        for obj_1, obj_2 in self.eq_pairs:
-            self.assertEqual(obj_1, obj_2)
-            self.assertEqual(obj_2, obj_1)
-
-    # Check for a valid __ne__ implementation
-    def test_ne(self):
-        for obj_1, obj_2 in self.ne_pairs:
-            self.assertNotEqual(obj_1, obj_2)
-            self.assertNotEqual(obj_2, obj_1)
-
-
-class LoggingResult(unittest.TestResult):
-    def __init__(self, log):
-        self._events = log
-        super(LoggingResult, self).__init__()
-
-    def startTest(self, test):
-        self._events.append('startTest')
-        super(LoggingResult, self).startTest(test)
-
-    def startTestRun(self):
-        self._events.append('startTestRun')
-        super(LoggingResult, self).startTestRun()
-
-    def stopTest(self, test):
-        self._events.append('stopTest')
-        super(LoggingResult, self).stopTest(test)
-
-    def stopTestRun(self):
-        self._events.append('stopTestRun')
-        super(LoggingResult, self).stopTestRun()
-
-    def addFailure(self, *args):
-        self._events.append('addFailure')
-        super(LoggingResult, self).addFailure(*args)
-
-    def addSuccess(self, *args):
-        self._events.append('addSuccess')
-        super(LoggingResult, self).addSuccess(*args)
-
-    def addError(self, *args):
-        self._events.append('addError')
-        super(LoggingResult, self).addError(*args)
-
-    def addSkip(self, *args):
-        self._events.append('addSkip')
-        super(LoggingResult, self).addSkip(*args)
-
-    def addExpectedFailure(self, *args):
-        self._events.append('addExpectedFailure')
-        super(LoggingResult, self).addExpectedFailure(*args)
-
-    def addUnexpectedSuccess(self, *args):
-        self._events.append('addUnexpectedSuccess')
-        super(LoggingResult, self).addUnexpectedSuccess(*args)
-
-
-class ResultWithNoStartTestRunStopTestRun(object):
-    """An object honouring TestResult before startTestRun/stopTestRun."""
-
-    def __init__(self):
-        self.failures = []
-        self.errors = []
-        self.testsRun = 0
-        self.skipped = []
-        self.expectedFailures = []
-        self.unexpectedSuccesses = []
-        self.shouldStop = False
-
-    def startTest(self, test):
-        pass
-
-    def stopTest(self, test):
-        pass
-
-    def addError(self, test):
-        pass
-
-    def addFailure(self, test):
-        pass
-
-    def addSuccess(self, test):
-        pass
-
-    def wasSuccessful(self):
-        return True
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_assertions.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_assertions.py
deleted file mode 100644
index 3d47127..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_assertions.py
+++ /dev/null
@@ -1,286 +0,0 @@
-import datetime
-
-import unittest
-
-
-class Test_Assertions(unittest.TestCase):
-    def test_AlmostEqual(self):
-        self.assertAlmostEqual(1.00000001, 1.0)
-        self.assertNotAlmostEqual(1.0000001, 1.0)
-        self.assertRaises(self.failureException,
-                          self.assertAlmostEqual, 1.0000001, 1.0)
-        self.assertRaises(self.failureException,
-                          self.assertNotAlmostEqual, 1.00000001, 1.0)
-
-        self.assertAlmostEqual(1.1, 1.0, places=0)
-        self.assertRaises(self.failureException,
-                          self.assertAlmostEqual, 1.1, 1.0, places=1)
-
-        self.assertAlmostEqual(0, .1+.1j, places=0)
-        self.assertNotAlmostEqual(0, .1+.1j, places=1)
-        self.assertRaises(self.failureException,
-                          self.assertAlmostEqual, 0, .1+.1j, places=1)
-        self.assertRaises(self.failureException,
-                          self.assertNotAlmostEqual, 0, .1+.1j, places=0)
-
-        self.assertAlmostEqual(float('inf'), float('inf'))
-        self.assertRaises(self.failureException, self.assertNotAlmostEqual,
-                          float('inf'), float('inf'))
-
-    def test_AmostEqualWithDelta(self):
-        self.assertAlmostEqual(1.1, 1.0, delta=0.5)
-        self.assertAlmostEqual(1.0, 1.1, delta=0.5)
-        self.assertNotAlmostEqual(1.1, 1.0, delta=0.05)
-        self.assertNotAlmostEqual(1.0, 1.1, delta=0.05)
-
-        self.assertRaises(self.failureException, self.assertAlmostEqual,
-                          1.1, 1.0, delta=0.05)
-        self.assertRaises(self.failureException, self.assertNotAlmostEqual,
-                          1.1, 1.0, delta=0.5)
-
-        self.assertRaises(TypeError, self.assertAlmostEqual,
-                          1.1, 1.0, places=2, delta=2)
-        self.assertRaises(TypeError, self.assertNotAlmostEqual,
-                          1.1, 1.0, places=2, delta=2)
-
-        first = datetime.datetime.now()
-        second = first + datetime.timedelta(seconds=10)
-        self.assertAlmostEqual(first, second,
-                               delta=datetime.timedelta(seconds=20))
-        self.assertNotAlmostEqual(first, second,
-                                  delta=datetime.timedelta(seconds=5))
-
-    def test_assertRaises(self):
-        def _raise(e):
-            raise e
-        self.assertRaises(KeyError, _raise, KeyError)
-        self.assertRaises(KeyError, _raise, KeyError("key"))
-        try:
-            self.assertRaises(KeyError, lambda: None)
-        except self.failureException as e:
-            self.assertIn("KeyError not raised", e.args)
-        else:
-            self.fail("assertRaises() didn't fail")
-        try:
-            self.assertRaises(KeyError, _raise, ValueError)
-        except ValueError:
-            pass
-        else:
-            self.fail("assertRaises() didn't let exception pass through")
-        with self.assertRaises(KeyError) as cm:
-            try:
-                raise KeyError
-            except Exception, e:
-                raise
-        self.assertIs(cm.exception, e)
-
-        with self.assertRaises(KeyError):
-            raise KeyError("key")
-        try:
-            with self.assertRaises(KeyError):
-                pass
-        except self.failureException as e:
-            self.assertIn("KeyError not raised", e.args)
-        else:
-            self.fail("assertRaises() didn't fail")
-        try:
-            with self.assertRaises(KeyError):
-                raise ValueError
-        except ValueError:
-            pass
-        else:
-            self.fail("assertRaises() didn't let exception pass through")
-
-    def testAssertNotRegexpMatches(self):
-        self.assertNotRegexpMatches('Ala ma kota', r'r+')
-        try:
-            self.assertNotRegexpMatches('Ala ma kota', r'k.t', 'Message')
-        except self.failureException, e:
-            self.assertIn("'kot'", e.args[0])
-            self.assertIn('Message', e.args[0])
-        else:
-            self.fail('assertNotRegexpMatches should have failed.')
-
-
-class TestLongMessage(unittest.TestCase):
-    """Test that the individual asserts honour longMessage.
-    This actually tests all the message behaviour for
-    asserts that use longMessage."""
-
-    def setUp(self):
-        class TestableTestFalse(unittest.TestCase):
-            longMessage = False
-            failureException = self.failureException
-
-            def testTest(self):
-                pass
-
-        class TestableTestTrue(unittest.TestCase):
-            longMessage = True
-            failureException = self.failureException
-
-            def testTest(self):
-                pass
-
-        self.testableTrue = TestableTestTrue('testTest')
-        self.testableFalse = TestableTestFalse('testTest')
-
-    def testDefault(self):
-        self.assertFalse(unittest.TestCase.longMessage)
-
-    def test_formatMsg(self):
-        self.assertEqual(self.testableFalse._formatMessage(None, "foo"), "foo")
-        self.assertEqual(self.testableFalse._formatMessage("foo", "bar"), "foo")
-
-        self.assertEqual(self.testableTrue._formatMessage(None, "foo"), "foo")
-        self.assertEqual(self.testableTrue._formatMessage("foo", "bar"), "bar : foo")
-
-        # This blows up if _formatMessage uses string concatenation
-        self.testableTrue._formatMessage(object(), 'foo')
-
-    def test_formatMessage_unicode_error(self):
-        one = ''.join(chr(i) for i in range(255))
-        # this used to cause a UnicodeDecodeError constructing msg
-        self.testableTrue._formatMessage(one, u'\uFFFD')
-
-    def assertMessages(self, methodName, args, errors):
-        def getMethod(i):
-            useTestableFalse  = i < 2
-            if useTestableFalse:
-                test = self.testableFalse
-            else:
-                test = self.testableTrue
-            return getattr(test, methodName)
-
-        for i, expected_regexp in enumerate(errors):
-            testMethod = getMethod(i)
-            kwargs = {}
-            withMsg = i % 2
-            if withMsg:
-                kwargs = {"msg": "oops"}
-
-            with self.assertRaisesRegexp(self.failureException,
-                                         expected_regexp=expected_regexp):
-                testMethod(*args, **kwargs)
-
-    def testAssertTrue(self):
-        self.assertMessages('assertTrue', (False,),
-                            ["^False is not true$", "^oops$", "^False is not true$",
-                             "^False is not true : oops$"])
-
-    def testAssertFalse(self):
-        self.assertMessages('assertFalse', (True,),
-                            ["^True is not false$", "^oops$", "^True is not false$",
-                             "^True is not false : oops$"])
-
-    def testNotEqual(self):
-        self.assertMessages('assertNotEqual', (1, 1),
-                            ["^1 == 1$", "^oops$", "^1 == 1$",
-                             "^1 == 1 : oops$"])
-
-    def testAlmostEqual(self):
-        self.assertMessages('assertAlmostEqual', (1, 2),
-                            ["^1 != 2 within 7 places$", "^oops$",
-                             "^1 != 2 within 7 places$", "^1 != 2 within 7 places : oops$"])
-
-    def testNotAlmostEqual(self):
-        self.assertMessages('assertNotAlmostEqual', (1, 1),
-                            ["^1 == 1 within 7 places$", "^oops$",
-                             "^1 == 1 within 7 places$", "^1 == 1 within 7 places : oops$"])
-
-    def test_baseAssertEqual(self):
-        self.assertMessages('_baseAssertEqual', (1, 2),
-                            ["^1 != 2$", "^oops$", "^1 != 2$", "^1 != 2 : oops$"])
-
-    def testAssertSequenceEqual(self):
-        # Error messages are multiline so not testing on full message
-        # assertTupleEqual and assertListEqual delegate to this method
-        self.assertMessages('assertSequenceEqual', ([], [None]),
-                            ["\+ \[None\]$", "^oops$", r"\+ \[None\]$",
-                             r"\+ \[None\] : oops$"])
-
-    def testAssertSetEqual(self):
-        self.assertMessages('assertSetEqual', (set(), set([None])),
-                            ["None$", "^oops$", "None$",
-                             "None : oops$"])
-
-    def testAssertIn(self):
-        self.assertMessages('assertIn', (None, []),
-                            ['^None not found in \[\]$', "^oops$",
-                             '^None not found in \[\]$',
-                             '^None not found in \[\] : oops$'])
-
-    def testAssertNotIn(self):
-        self.assertMessages('assertNotIn', (None, [None]),
-                            ['^None unexpectedly found in \[None\]$', "^oops$",
-                             '^None unexpectedly found in \[None\]$',
-                             '^None unexpectedly found in \[None\] : oops$'])
-
-    def testAssertDictEqual(self):
-        self.assertMessages('assertDictEqual', ({}, {'key': 'value'}),
-                            [r"\+ \{'key': 'value'\}$", "^oops$",
-                             "\+ \{'key': 'value'\}$",
-                             "\+ \{'key': 'value'\} : oops$"])
-
-    def testAssertDictContainsSubset(self):
-        self.assertMessages('assertDictContainsSubset', ({'key': 'value'}, {}),
-                            ["^Missing: 'key'$", "^oops$",
-                             "^Missing: 'key'$",
-                             "^Missing: 'key' : oops$"])
-
-    def testAssertMultiLineEqual(self):
-        self.assertMessages('assertMultiLineEqual', ("", "foo"),
-                            [r"\+ foo$", "^oops$",
-                             r"\+ foo$",
-                             r"\+ foo : oops$"])
-
-    def testAssertLess(self):
-        self.assertMessages('assertLess', (2, 1),
-                            ["^2 not less than 1$", "^oops$",
-                             "^2 not less than 1$", "^2 not less than 1 : oops$"])
-
-    def testAssertLessEqual(self):
-        self.assertMessages('assertLessEqual', (2, 1),
-                            ["^2 not less than or equal to 1$", "^oops$",
-                             "^2 not less than or equal to 1$",
-                             "^2 not less than or equal to 1 : oops$"])
-
-    def testAssertGreater(self):
-        self.assertMessages('assertGreater', (1, 2),
-                            ["^1 not greater than 2$", "^oops$",
-                             "^1 not greater than 2$",
-                             "^1 not greater than 2 : oops$"])
-
-    def testAssertGreaterEqual(self):
-        self.assertMessages('assertGreaterEqual', (1, 2),
-                            ["^1 not greater than or equal to 2$", "^oops$",
-                             "^1 not greater than or equal to 2$",
-                             "^1 not greater than or equal to 2 : oops$"])
-
-    def testAssertIsNone(self):
-        self.assertMessages('assertIsNone', ('not None',),
-                            ["^'not None' is not None$", "^oops$",
-                             "^'not None' is not None$",
-                             "^'not None' is not None : oops$"])
-
-    def testAssertIsNotNone(self):
-        self.assertMessages('assertIsNotNone', (None,),
-                            ["^unexpectedly None$", "^oops$",
-                             "^unexpectedly None$",
-                             "^unexpectedly None : oops$"])
-
-    def testAssertIs(self):
-        self.assertMessages('assertIs', (None, 'foo'),
-                            ["^None is not 'foo'$", "^oops$",
-                             "^None is not 'foo'$",
-                             "^None is not 'foo' : oops$"])
-
-    def testAssertIsNot(self):
-        self.assertMessages('assertIsNot', (None, None),
-                            ["^unexpectedly identical: None$", "^oops$",
-                             "^unexpectedly identical: None$",
-                             "^unexpectedly identical: None : oops$"])
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_break.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_break.py
deleted file mode 100644
index ddac35a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_break.py
+++ /dev/null
@@ -1,252 +0,0 @@
-import gc
-import os
-import sys
-import signal
-import weakref
-
-from cStringIO import StringIO
-
-
-import unittest
-
-
-@unittest.skipUnless(hasattr(os, 'kill'), "Test requires os.kill")
-@unittest.skipIf(sys.platform =="win32", "Test cannot run on Windows")
-@unittest.skipIf(sys.platform == 'freebsd6', "Test kills regrtest on freebsd6 "
-    "if threads have been used")
-class TestBreak(unittest.TestCase):
-
-    def setUp(self):
-        self._default_handler = signal.getsignal(signal.SIGINT)
-
-    def tearDown(self):
-        signal.signal(signal.SIGINT, self._default_handler)
-        unittest.signals._results = weakref.WeakKeyDictionary()
-        unittest.signals._interrupt_handler = None
-
-
-    def testInstallHandler(self):
-        default_handler = signal.getsignal(signal.SIGINT)
-        unittest.installHandler()
-        self.assertNotEqual(signal.getsignal(signal.SIGINT), default_handler)
-
-        try:
-            pid = os.getpid()
-            os.kill(pid, signal.SIGINT)
-        except KeyboardInterrupt:
-            self.fail("KeyboardInterrupt not handled")
-
-        self.assertTrue(unittest.signals._interrupt_handler.called)
-
-    def testRegisterResult(self):
-        result = unittest.TestResult()
-        unittest.registerResult(result)
-
-        for ref in unittest.signals._results:
-            if ref is result:
-                break
-            elif ref is not result:
-                self.fail("odd object in result set")
-        else:
-            self.fail("result not found")
-
-
-    def testInterruptCaught(self):
-        default_handler = signal.getsignal(signal.SIGINT)
-
-        result = unittest.TestResult()
-        unittest.installHandler()
-        unittest.registerResult(result)
-
-        self.assertNotEqual(signal.getsignal(signal.SIGINT), default_handler)
-
-        def test(result):
-            pid = os.getpid()
-            os.kill(pid, signal.SIGINT)
-            result.breakCaught = True
-            self.assertTrue(result.shouldStop)
-
-        try:
-            test(result)
-        except KeyboardInterrupt:
-            self.fail("KeyboardInterrupt not handled")
-        self.assertTrue(result.breakCaught)
-
-
-    def testSecondInterrupt(self):
-        result = unittest.TestResult()
-        unittest.installHandler()
-        unittest.registerResult(result)
-
-        def test(result):
-            pid = os.getpid()
-            os.kill(pid, signal.SIGINT)
-            result.breakCaught = True
-            self.assertTrue(result.shouldStop)
-            os.kill(pid, signal.SIGINT)
-            self.fail("Second KeyboardInterrupt not raised")
-
-        try:
-            test(result)
-        except KeyboardInterrupt:
-            pass
-        else:
-            self.fail("Second KeyboardInterrupt not raised")
-        self.assertTrue(result.breakCaught)
-
-
-    def testTwoResults(self):
-        unittest.installHandler()
-
-        result = unittest.TestResult()
-        unittest.registerResult(result)
-        new_handler = signal.getsignal(signal.SIGINT)
-
-        result2 = unittest.TestResult()
-        unittest.registerResult(result2)
-        self.assertEqual(signal.getsignal(signal.SIGINT), new_handler)
-
-        result3 = unittest.TestResult()
-
-        def test(result):
-            pid = os.getpid()
-            os.kill(pid, signal.SIGINT)
-
-        try:
-            test(result)
-        except KeyboardInterrupt:
-            self.fail("KeyboardInterrupt not handled")
-
-        self.assertTrue(result.shouldStop)
-        self.assertTrue(result2.shouldStop)
-        self.assertFalse(result3.shouldStop)
-
-
-    def testHandlerReplacedButCalled(self):
-        # If our handler has been replaced (is no longer installed) but is
-        # called by the *new* handler, then it isn't safe to delay the
-        # SIGINT and we should immediately delegate to the default handler
-        unittest.installHandler()
-
-        handler = signal.getsignal(signal.SIGINT)
-        def new_handler(frame, signum):
-            handler(frame, signum)
-        signal.signal(signal.SIGINT, new_handler)
-
-        try:
-            pid = os.getpid()
-            os.kill(pid, signal.SIGINT)
-        except KeyboardInterrupt:
-            pass
-        else:
-            self.fail("replaced but delegated handler doesn't raise interrupt")
-
-    def testRunner(self):
-        # Creating a TextTestRunner with the appropriate argument should
-        # register the TextTestResult it creates
-        runner = unittest.TextTestRunner(stream=StringIO())
-
-        result = runner.run(unittest.TestSuite())
-        self.assertIn(result, unittest.signals._results)
-
-    def testWeakReferences(self):
-        # Calling registerResult on a result should not keep it alive
-        result = unittest.TestResult()
-        unittest.registerResult(result)
-
-        ref = weakref.ref(result)
-        del result
-
-        # For non-reference counting implementations
-        gc.collect();gc.collect()
-        self.assertIsNone(ref())
-
-
-    def testRemoveResult(self):
-        result = unittest.TestResult()
-        unittest.registerResult(result)
-
-        unittest.installHandler()
-        self.assertTrue(unittest.removeResult(result))
-
-        # Should this raise an error instead?
-        self.assertFalse(unittest.removeResult(unittest.TestResult()))
-
-        try:
-            pid = os.getpid()
-            os.kill(pid, signal.SIGINT)
-        except KeyboardInterrupt:
-            pass
-
-        self.assertFalse(result.shouldStop)
-
-    def testMainInstallsHandler(self):
-        failfast = object()
-        test = object()
-        verbosity = object()
-        result = object()
-        default_handler = signal.getsignal(signal.SIGINT)
-
-        class FakeRunner(object):
-            initArgs = []
-            runArgs = []
-            def __init__(self, *args, **kwargs):
-                self.initArgs.append((args, kwargs))
-            def run(self, test):
-                self.runArgs.append(test)
-                return result
-
-        class Program(unittest.TestProgram):
-            def __init__(self, catchbreak):
-                self.exit = False
-                self.verbosity = verbosity
-                self.failfast = failfast
-                self.catchbreak = catchbreak
-                self.testRunner = FakeRunner
-                self.test = test
-                self.result = None
-
-        p = Program(False)
-        p.runTests()
-
-        self.assertEqual(FakeRunner.initArgs, [((), {'buffer': None,
-                                                     'verbosity': verbosity,
-                                                     'failfast': failfast})])
-        self.assertEqual(FakeRunner.runArgs, [test])
-        self.assertEqual(p.result, result)
-
-        self.assertEqual(signal.getsignal(signal.SIGINT), default_handler)
-
-        FakeRunner.initArgs = []
-        FakeRunner.runArgs = []
-        p = Program(True)
-        p.runTests()
-
-        self.assertEqual(FakeRunner.initArgs, [((), {'buffer': None,
-                                                     'verbosity': verbosity,
-                                                     'failfast': failfast})])
-        self.assertEqual(FakeRunner.runArgs, [test])
-        self.assertEqual(p.result, result)
-
-        self.assertNotEqual(signal.getsignal(signal.SIGINT), default_handler)
-
-    def testRemoveHandler(self):
-        default_handler = signal.getsignal(signal.SIGINT)
-        unittest.installHandler()
-        unittest.removeHandler()
-        self.assertEqual(signal.getsignal(signal.SIGINT), default_handler)
-
-        # check that calling removeHandler multiple times has no ill-effect
-        unittest.removeHandler()
-        self.assertEqual(signal.getsignal(signal.SIGINT), default_handler)
-
-    def testRemoveHandlerAsDecorator(self):
-        default_handler = signal.getsignal(signal.SIGINT)
-        unittest.installHandler()
-
-        @unittest.removeHandler
-        def test():
-            self.assertEqual(signal.getsignal(signal.SIGINT), default_handler)
-
-        test()
-        self.assertNotEqual(signal.getsignal(signal.SIGINT), default_handler)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_case.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_case.py
deleted file mode 100644
index 726c952..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_case.py
+++ /dev/null
@@ -1,1109 +0,0 @@
-import difflib
-import pprint
-import re
-import sys
-
-from copy import deepcopy
-from test import test_support
-
-import unittest
-
-from .support import (
-    TestEquality, TestHashing, LoggingResult, ResultWithNoStartTestRunStopTestRun
-)
-
-
-class Test(object):
-    "Keep these TestCase classes out of the main namespace"
-
-    class Foo(unittest.TestCase):
-        def runTest(self): pass
-        def test1(self): pass
-
-    class Bar(Foo):
-        def test2(self): pass
-
-    class LoggingTestCase(unittest.TestCase):
-        """A test case which logs its calls."""
-
-        def __init__(self, events):
-            super(Test.LoggingTestCase, self).__init__('test')
-            self.events = events
-
-        def setUp(self):
-            self.events.append('setUp')
-
-        def test(self):
-            self.events.append('test')
-
-        def tearDown(self):
-            self.events.append('tearDown')
-
-
-class Test_TestCase(unittest.TestCase, TestEquality, TestHashing):
-
-    ### Set up attributes used by inherited tests
-    ################################################################
-
-    # Used by TestHashing.test_hash and TestEquality.test_eq
-    eq_pairs = [(Test.Foo('test1'), Test.Foo('test1'))]
-
-    # Used by TestEquality.test_ne
-    ne_pairs = [(Test.Foo('test1'), Test.Foo('runTest'))
-               ,(Test.Foo('test1'), Test.Bar('test1'))
-               ,(Test.Foo('test1'), Test.Bar('test2'))]
-
-    ################################################################
-    ### /Set up attributes used by inherited tests
-
-
-    # "class TestCase([methodName])"
-    # ...
-    # "Each instance of TestCase will run a single test method: the
-    # method named methodName."
-    # ...
-    # "methodName defaults to "runTest"."
-    #
-    # Make sure it really is optional, and that it defaults to the proper
-    # thing.
-    def test_init__no_test_name(self):
-        class Test(unittest.TestCase):
-            def runTest(self): raise TypeError()
-            def test(self): pass
-
-        self.assertEqual(Test().id()[-13:], '.Test.runTest')
-
-    # "class TestCase([methodName])"
-    # ...
-    # "Each instance of TestCase will run a single test method: the
-    # method named methodName."
-    def test_init__test_name__valid(self):
-        class Test(unittest.TestCase):
-            def runTest(self): raise TypeError()
-            def test(self): pass
-
-        self.assertEqual(Test('test').id()[-10:], '.Test.test')
-
-    # "class TestCase([methodName])"
-    # ...
-    # "Each instance of TestCase will run a single test method: the
-    # method named methodName."
-    def test_init__test_name__invalid(self):
-        class Test(unittest.TestCase):
-            def runTest(self): raise TypeError()
-            def test(self): pass
-
-        try:
-            Test('testfoo')
-        except ValueError:
-            pass
-        else:
-            self.fail("Failed to raise ValueError")
-
-    # "Return the number of tests represented by the this test object. For
-    # TestCase instances, this will always be 1"
-    def test_countTestCases(self):
-        class Foo(unittest.TestCase):
-            def test(self): pass
-
-        self.assertEqual(Foo('test').countTestCases(), 1)
-
-    # "Return the default type of test result object to be used to run this
-    # test. For TestCase instances, this will always be
-    # unittest.TestResult;  subclasses of TestCase should
-    # override this as necessary."
-    def test_defaultTestResult(self):
-        class Foo(unittest.TestCase):
-            def runTest(self):
-                pass
-
-        result = Foo().defaultTestResult()
-        self.assertEqual(type(result), unittest.TestResult)
-
-    # "When a setUp() method is defined, the test runner will run that method
-    # prior to each test. Likewise, if a tearDown() method is defined, the
-    # test runner will invoke that method after each test. In the example,
-    # setUp() was used to create a fresh sequence for each test."
-    #
-    # Make sure the proper call order is maintained, even if setUp() raises
-    # an exception.
-    def test_run_call_order__error_in_setUp(self):
-        events = []
-        result = LoggingResult(events)
-
-        class Foo(Test.LoggingTestCase):
-            def setUp(self):
-                super(Foo, self).setUp()
-                raise RuntimeError('raised by Foo.setUp')
-
-        Foo(events).run(result)
-        expected = ['startTest', 'setUp', 'addError', 'stopTest']
-        self.assertEqual(events, expected)
-
-    # "With a temporary result stopTestRun is called when setUp errors.
-    def test_run_call_order__error_in_setUp_default_result(self):
-        events = []
-
-        class Foo(Test.LoggingTestCase):
-            def defaultTestResult(self):
-                return LoggingResult(self.events)
-
-            def setUp(self):
-                super(Foo, self).setUp()
-                raise RuntimeError('raised by Foo.setUp')
-
-        Foo(events).run()
-        expected = ['startTestRun', 'startTest', 'setUp', 'addError',
-                    'stopTest', 'stopTestRun']
-        self.assertEqual(events, expected)
-
-    # "When a setUp() method is defined, the test runner will run that method
-    # prior to each test. Likewise, if a tearDown() method is defined, the
-    # test runner will invoke that method after each test. In the example,
-    # setUp() was used to create a fresh sequence for each test."
-    #
-    # Make sure the proper call order is maintained, even if the test raises
-    # an error (as opposed to a failure).
-    def test_run_call_order__error_in_test(self):
-        events = []
-        result = LoggingResult(events)
-
-        class Foo(Test.LoggingTestCase):
-            def test(self):
-                super(Foo, self).test()
-                raise RuntimeError('raised by Foo.test')
-
-        expected = ['startTest', 'setUp', 'test', 'addError', 'tearDown',
-                    'stopTest']
-        Foo(events).run(result)
-        self.assertEqual(events, expected)
-
-    # "With a default result, an error in the test still results in stopTestRun
-    # being called."
-    def test_run_call_order__error_in_test_default_result(self):
-        events = []
-
-        class Foo(Test.LoggingTestCase):
-            def defaultTestResult(self):
-                return LoggingResult(self.events)
-
-            def test(self):
-                super(Foo, self).test()
-                raise RuntimeError('raised by Foo.test')
-
-        expected = ['startTestRun', 'startTest', 'setUp', 'test', 'addError',
-                    'tearDown', 'stopTest', 'stopTestRun']
-        Foo(events).run()
-        self.assertEqual(events, expected)
-
-    # "When a setUp() method is defined, the test runner will run that method
-    # prior to each test. Likewise, if a tearDown() method is defined, the
-    # test runner will invoke that method after each test. In the example,
-    # setUp() was used to create a fresh sequence for each test."
-    #
-    # Make sure the proper call order is maintained, even if the test signals
-    # a failure (as opposed to an error).
-    def test_run_call_order__failure_in_test(self):
-        events = []
-        result = LoggingResult(events)
-
-        class Foo(Test.LoggingTestCase):
-            def test(self):
-                super(Foo, self).test()
-                self.fail('raised by Foo.test')
-
-        expected = ['startTest', 'setUp', 'test', 'addFailure', 'tearDown',
-                    'stopTest']
-        Foo(events).run(result)
-        self.assertEqual(events, expected)
-
-    # "When a test fails with a default result stopTestRun is still called."
-    def test_run_call_order__failure_in_test_default_result(self):
-
-        class Foo(Test.LoggingTestCase):
-            def defaultTestResult(self):
-                return LoggingResult(self.events)
-            def test(self):
-                super(Foo, self).test()
-                self.fail('raised by Foo.test')
-
-        expected = ['startTestRun', 'startTest', 'setUp', 'test', 'addFailure',
-                    'tearDown', 'stopTest', 'stopTestRun']
-        events = []
-        Foo(events).run()
-        self.assertEqual(events, expected)
-
-    # "When a setUp() method is defined, the test runner will run that method
-    # prior to each test. Likewise, if a tearDown() method is defined, the
-    # test runner will invoke that method after each test. In the example,
-    # setUp() was used to create a fresh sequence for each test."
-    #
-    # Make sure the proper call order is maintained, even if tearDown() raises
-    # an exception.
-    def test_run_call_order__error_in_tearDown(self):
-        events = []
-        result = LoggingResult(events)
-
-        class Foo(Test.LoggingTestCase):
-            def tearDown(self):
-                super(Foo, self).tearDown()
-                raise RuntimeError('raised by Foo.tearDown')
-
-        Foo(events).run(result)
-        expected = ['startTest', 'setUp', 'test', 'tearDown', 'addError',
-                    'stopTest']
-        self.assertEqual(events, expected)
-
-    # "When tearDown errors with a default result stopTestRun is still called."
-    def test_run_call_order__error_in_tearDown_default_result(self):
-
-        class Foo(Test.LoggingTestCase):
-            def defaultTestResult(self):
-                return LoggingResult(self.events)
-            def tearDown(self):
-                super(Foo, self).tearDown()
-                raise RuntimeError('raised by Foo.tearDown')
-
-        events = []
-        Foo(events).run()
-        expected = ['startTestRun', 'startTest', 'setUp', 'test', 'tearDown',
-                    'addError', 'stopTest', 'stopTestRun']
-        self.assertEqual(events, expected)
-
-    # "TestCase.run() still works when the defaultTestResult is a TestResult
-    # that does not support startTestRun and stopTestRun.
-    def test_run_call_order_default_result(self):
-
-        class Foo(unittest.TestCase):
-            def defaultTestResult(self):
-                return ResultWithNoStartTestRunStopTestRun()
-            def test(self):
-                pass
-
-        Foo('test').run()
-
-    # "This class attribute gives the exception raised by the test() method.
-    # If a test framework needs to use a specialized exception, possibly to
-    # carry additional information, it must subclass this exception in
-    # order to ``play fair'' with the framework.  The initial value of this
-    # attribute is AssertionError"
-    def test_failureException__default(self):
-        class Foo(unittest.TestCase):
-            def test(self):
-                pass
-
-        self.assertTrue(Foo('test').failureException is AssertionError)
-
-    # "This class attribute gives the exception raised by the test() method.
-    # If a test framework needs to use a specialized exception, possibly to
-    # carry additional information, it must subclass this exception in
-    # order to ``play fair'' with the framework."
-    #
-    # Make sure TestCase.run() respects the designated failureException
-    def test_failureException__subclassing__explicit_raise(self):
-        events = []
-        result = LoggingResult(events)
-
-        class Foo(unittest.TestCase):
-            def test(self):
-                raise RuntimeError()
-
-            failureException = RuntimeError
-
-        self.assertTrue(Foo('test').failureException is RuntimeError)
-
-
-        Foo('test').run(result)
-        expected = ['startTest', 'addFailure', 'stopTest']
-        self.assertEqual(events, expected)
-
-    # "This class attribute gives the exception raised by the test() method.
-    # If a test framework needs to use a specialized exception, possibly to
-    # carry additional information, it must subclass this exception in
-    # order to ``play fair'' with the framework."
-    #
-    # Make sure TestCase.run() respects the designated failureException
-    def test_failureException__subclassing__implicit_raise(self):
-        events = []
-        result = LoggingResult(events)
-
-        class Foo(unittest.TestCase):
-            def test(self):
-                self.fail("foo")
-
-            failureException = RuntimeError
-
-        self.assertTrue(Foo('test').failureException is RuntimeError)
-
-
-        Foo('test').run(result)
-        expected = ['startTest', 'addFailure', 'stopTest']
-        self.assertEqual(events, expected)
-
-    # "The default implementation does nothing."
-    def test_setUp(self):
-        class Foo(unittest.TestCase):
-            def runTest(self):
-                pass
-
-        # ... and nothing should happen
-        Foo().setUp()
-
-    # "The default implementation does nothing."
-    def test_tearDown(self):
-        class Foo(unittest.TestCase):
-            def runTest(self):
-                pass
-
-        # ... and nothing should happen
-        Foo().tearDown()
-
-    # "Return a string identifying the specific test case."
-    #
-    # Because of the vague nature of the docs, I'm not going to lock this
-    # test down too much. Really all that can be asserted is that the id()
-    # will be a string (either 8-byte or unicode -- again, because the docs
-    # just say "string")
-    def test_id(self):
-        class Foo(unittest.TestCase):
-            def runTest(self):
-                pass
-
-        self.assertIsInstance(Foo().id(), basestring)
-
-    # "If result is omitted or None, a temporary result object is created
-    # and used, but is not made available to the caller. As TestCase owns the
-    # temporary result startTestRun and stopTestRun are called.
-
-    def test_run__uses_defaultTestResult(self):
-        events = []
-
-        class Foo(unittest.TestCase):
-            def test(self):
-                events.append('test')
-
-            def defaultTestResult(self):
-                return LoggingResult(events)
-
-        # Make run() find a result object on its own
-        Foo('test').run()
-
-        expected = ['startTestRun', 'startTest', 'test', 'addSuccess',
-            'stopTest', 'stopTestRun']
-        self.assertEqual(events, expected)
-
-    def testShortDescriptionWithoutDocstring(self):
-        self.assertIsNone(self.shortDescription())
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def testShortDescriptionWithOneLineDocstring(self):
-        """Tests shortDescription() for a method with a docstring."""
-        self.assertEqual(
-                self.shortDescription(),
-                'Tests shortDescription() for a method with a docstring.')
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def testShortDescriptionWithMultiLineDocstring(self):
-        """Tests shortDescription() for a method with a longer docstring.
-
-        This method ensures that only the first line of a docstring is
-        returned used in the short description, no matter how long the
-        whole thing is.
-        """
-        self.assertEqual(
-                self.shortDescription(),
-                 'Tests shortDescription() for a method with a longer '
-                 'docstring.')
-
-    def testAddTypeEqualityFunc(self):
-        class SadSnake(object):
-            """Dummy class for test_addTypeEqualityFunc."""
-        s1, s2 = SadSnake(), SadSnake()
-        self.assertNotEqual(s1, s2)
-        def AllSnakesCreatedEqual(a, b, msg=None):
-            return type(a) is type(b) is SadSnake
-        self.addTypeEqualityFunc(SadSnake, AllSnakesCreatedEqual)
-        self.assertEqual(s1, s2)
-        # No this doesn't clean up and remove the SadSnake equality func
-        # from this TestCase instance but since its a local nothing else
-        # will ever notice that.
-
-    def testAssertIs(self):
-        thing = object()
-        self.assertIs(thing, thing)
-        self.assertRaises(self.failureException, self.assertIs, thing, object())
-
-    def testAssertIsNot(self):
-        thing = object()
-        self.assertIsNot(thing, object())
-        self.assertRaises(self.failureException, self.assertIsNot, thing, thing)
-
-    def testAssertIsInstance(self):
-        thing = []
-        self.assertIsInstance(thing, list)
-        self.assertRaises(self.failureException, self.assertIsInstance,
-                          thing, dict)
-
-    def testAssertNotIsInstance(self):
-        thing = []
-        self.assertNotIsInstance(thing, dict)
-        self.assertRaises(self.failureException, self.assertNotIsInstance,
-                          thing, list)
-
-    def testAssertIn(self):
-        animals = {'monkey': 'banana', 'cow': 'grass', 'seal': 'fish'}
-
-        self.assertIn('a', 'abc')
-        self.assertIn(2, [1, 2, 3])
-        self.assertIn('monkey', animals)
-
-        self.assertNotIn('d', 'abc')
-        self.assertNotIn(0, [1, 2, 3])
-        self.assertNotIn('otter', animals)
-
-        self.assertRaises(self.failureException, self.assertIn, 'x', 'abc')
-        self.assertRaises(self.failureException, self.assertIn, 4, [1, 2, 3])
-        self.assertRaises(self.failureException, self.assertIn, 'elephant',
-                          animals)
-
-        self.assertRaises(self.failureException, self.assertNotIn, 'c', 'abc')
-        self.assertRaises(self.failureException, self.assertNotIn, 1, [1, 2, 3])
-        self.assertRaises(self.failureException, self.assertNotIn, 'cow',
-                          animals)
-
-    def testAssertDictContainsSubset(self):
-        self.assertDictContainsSubset({}, {})
-        self.assertDictContainsSubset({}, {'a': 1})
-        self.assertDictContainsSubset({'a': 1}, {'a': 1})
-        self.assertDictContainsSubset({'a': 1}, {'a': 1, 'b': 2})
-        self.assertDictContainsSubset({'a': 1, 'b': 2}, {'a': 1, 'b': 2})
-
-        with self.assertRaises(self.failureException):
-            self.assertDictContainsSubset({1: "one"}, {})
-
-        with self.assertRaises(self.failureException):
-            self.assertDictContainsSubset({'a': 2}, {'a': 1})
-
-        with self.assertRaises(self.failureException):
-            self.assertDictContainsSubset({'c': 1}, {'a': 1})
-
-        with self.assertRaises(self.failureException):
-            self.assertDictContainsSubset({'a': 1, 'c': 1}, {'a': 1})
-
-        with self.assertRaises(self.failureException):
-            self.assertDictContainsSubset({'a': 1, 'c': 1}, {'a': 1})
-
-        with test_support.check_warnings(("", UnicodeWarning)):
-            one = ''.join(chr(i) for i in range(255))
-            # this used to cause a UnicodeDecodeError constructing the failure msg
-            with self.assertRaises(self.failureException):
-                self.assertDictContainsSubset({'foo': one}, {'foo': u'\uFFFD'})
-
-    def testAssertEqual(self):
-        equal_pairs = [
-                ((), ()),
-                ({}, {}),
-                ([], []),
-                (set(), set()),
-                (frozenset(), frozenset())]
-        for a, b in equal_pairs:
-            # This mess of try excepts is to test the assertEqual behavior
-            # itself.
-            try:
-                self.assertEqual(a, b)
-            except self.failureException:
-                self.fail('assertEqual(%r, %r) failed' % (a, b))
-            try:
-                self.assertEqual(a, b, msg='foo')
-            except self.failureException:
-                self.fail('assertEqual(%r, %r) with msg= failed' % (a, b))
-            try:
-                self.assertEqual(a, b, 'foo')
-            except self.failureException:
-                self.fail('assertEqual(%r, %r) with third parameter failed' %
-                          (a, b))
-
-        unequal_pairs = [
-               ((), []),
-               ({}, set()),
-               (set([4,1]), frozenset([4,2])),
-               (frozenset([4,5]), set([2,3])),
-               (set([3,4]), set([5,4]))]
-        for a, b in unequal_pairs:
-            self.assertRaises(self.failureException, self.assertEqual, a, b)
-            self.assertRaises(self.failureException, self.assertEqual, a, b,
-                              'foo')
-            self.assertRaises(self.failureException, self.assertEqual, a, b,
-                              msg='foo')
-
-    def testEquality(self):
-        self.assertListEqual([], [])
-        self.assertTupleEqual((), ())
-        self.assertSequenceEqual([], ())
-
-        a = [0, 'a', []]
-        b = []
-        self.assertRaises(unittest.TestCase.failureException,
-                          self.assertListEqual, a, b)
-        self.assertRaises(unittest.TestCase.failureException,
-                          self.assertListEqual, tuple(a), tuple(b))
-        self.assertRaises(unittest.TestCase.failureException,
-                          self.assertSequenceEqual, a, tuple(b))
-
-        b.extend(a)
-        self.assertListEqual(a, b)
-        self.assertTupleEqual(tuple(a), tuple(b))
-        self.assertSequenceEqual(a, tuple(b))
-        self.assertSequenceEqual(tuple(a), b)
-
-        self.assertRaises(self.failureException, self.assertListEqual,
-                          a, tuple(b))
-        self.assertRaises(self.failureException, self.assertTupleEqual,
-                          tuple(a), b)
-        self.assertRaises(self.failureException, self.assertListEqual, None, b)
-        self.assertRaises(self.failureException, self.assertTupleEqual, None,
-                          tuple(b))
-        self.assertRaises(self.failureException, self.assertSequenceEqual,
-                          None, tuple(b))
-        self.assertRaises(self.failureException, self.assertListEqual, 1, 1)
-        self.assertRaises(self.failureException, self.assertTupleEqual, 1, 1)
-        self.assertRaises(self.failureException, self.assertSequenceEqual,
-                          1, 1)
-
-        self.assertDictEqual({}, {})
-
-        c = { 'x': 1 }
-        d = {}
-        self.assertRaises(unittest.TestCase.failureException,
-                          self.assertDictEqual, c, d)
-
-        d.update(c)
-        self.assertDictEqual(c, d)
-
-        d['x'] = 0
-        self.assertRaises(unittest.TestCase.failureException,
-                          self.assertDictEqual, c, d, 'These are unequal')
-
-        self.assertRaises(self.failureException, self.assertDictEqual, None, d)
-        self.assertRaises(self.failureException, self.assertDictEqual, [], d)
-        self.assertRaises(self.failureException, self.assertDictEqual, 1, 1)
-
-    def testAssertSequenceEqualMaxDiff(self):
-        self.assertEqual(self.maxDiff, 80*8)
-        seq1 = 'a' + 'x' * 80**2
-        seq2 = 'b' + 'x' * 80**2
-        diff = '\n'.join(difflib.ndiff(pprint.pformat(seq1).splitlines(),
-                                       pprint.pformat(seq2).splitlines()))
-        # the +1 is the leading \n added by assertSequenceEqual
-        omitted = unittest.case.DIFF_OMITTED % (len(diff) + 1,)
-
-        self.maxDiff = len(diff)//2
-        try:
-            self.assertSequenceEqual(seq1, seq2)
-        except self.failureException as e:
-            msg = e.args[0]
-        else:
-            self.fail('assertSequenceEqual did not fail.')
-        self.assertTrue(len(msg) < len(diff))
-        self.assertIn(omitted, msg)
-
-        self.maxDiff = len(diff) * 2
-        try:
-            self.assertSequenceEqual(seq1, seq2)
-        except self.failureException as e:
-            msg = e.args[0]
-        else:
-            self.fail('assertSequenceEqual did not fail.')
-        self.assertTrue(len(msg) > len(diff))
-        self.assertNotIn(omitted, msg)
-
-        self.maxDiff = None
-        try:
-            self.assertSequenceEqual(seq1, seq2)
-        except self.failureException as e:
-            msg = e.args[0]
-        else:
-            self.fail('assertSequenceEqual did not fail.')
-        self.assertTrue(len(msg) > len(diff))
-        self.assertNotIn(omitted, msg)
-
-    def testTruncateMessage(self):
-        self.maxDiff = 1
-        message = self._truncateMessage('foo', 'bar')
-        omitted = unittest.case.DIFF_OMITTED % len('bar')
-        self.assertEqual(message, 'foo' + omitted)
-
-        self.maxDiff = None
-        message = self._truncateMessage('foo', 'bar')
-        self.assertEqual(message, 'foobar')
-
-        self.maxDiff = 4
-        message = self._truncateMessage('foo', 'bar')
-        self.assertEqual(message, 'foobar')
-
-    def testAssertDictEqualTruncates(self):
-        test = unittest.TestCase('assertEqual')
-        def truncate(msg, diff):
-            return 'foo'
-        test._truncateMessage = truncate
-        try:
-            test.assertDictEqual({}, {1: 0})
-        except self.failureException as e:
-            self.assertEqual(str(e), 'foo')
-        else:
-            self.fail('assertDictEqual did not fail')
-
-    def testAssertMultiLineEqualTruncates(self):
-        test = unittest.TestCase('assertEqual')
-        def truncate(msg, diff):
-            return 'foo'
-        test._truncateMessage = truncate
-        try:
-            test.assertMultiLineEqual('foo', 'bar')
-        except self.failureException as e:
-            self.assertEqual(str(e), 'foo')
-        else:
-            self.fail('assertMultiLineEqual did not fail')
-
-    def testAssertEqual_diffThreshold(self):
-        # check threshold value
-        self.assertEqual(self._diffThreshold, 2**16)
-        # disable madDiff to get diff markers
-        self.maxDiff = None
-
-        # set a lower threshold value and add a cleanup to restore it
-        old_threshold = self._diffThreshold
-        self._diffThreshold = 2**8
-        self.addCleanup(lambda: setattr(self, '_diffThreshold', old_threshold))
-
-        # under the threshold: diff marker (^) in error message
-        s = u'x' * (2**7)
-        with self.assertRaises(self.failureException) as cm:
-            self.assertEqual(s + 'a', s + 'b')
-        self.assertIn('^', str(cm.exception))
-        self.assertEqual(s + 'a', s + 'a')
-
-        # over the threshold: diff not used and marker (^) not in error message
-        s = u'x' * (2**9)
-        # if the path that uses difflib is taken, _truncateMessage will be
-        # called -- replace it with explodingTruncation to verify that this
-        # doesn't happen
-        def explodingTruncation(message, diff):
-            raise SystemError('this should not be raised')
-        old_truncate = self._truncateMessage
-        self._truncateMessage = explodingTruncation
-        self.addCleanup(lambda: setattr(self, '_truncateMessage', old_truncate))
-
-        s1, s2 = s + 'a', s + 'b'
-        with self.assertRaises(self.failureException) as cm:
-            self.assertEqual(s1, s2)
-        self.assertNotIn('^', str(cm.exception))
-        self.assertEqual(str(cm.exception), '%r != %r' % (s1, s2))
-        self.assertEqual(s + 'a', s + 'a')
-
-    def testAssertItemsEqual(self):
-        a = object()
-        self.assertItemsEqual([1, 2, 3], [3, 2, 1])
-        self.assertItemsEqual(['foo', 'bar', 'baz'], ['bar', 'baz', 'foo'])
-        self.assertItemsEqual([a, a, 2, 2, 3], (a, 2, 3, a, 2))
-        self.assertItemsEqual([1, "2", "a", "a"], ["a", "2", True, "a"])
-        self.assertRaises(self.failureException, self.assertItemsEqual,
-                          [1, 2] + [3] * 100, [1] * 100 + [2, 3])
-        self.assertRaises(self.failureException, self.assertItemsEqual,
-                          [1, "2", "a", "a"], ["a", "2", True, 1])
-        self.assertRaises(self.failureException, self.assertItemsEqual,
-                          [10], [10, 11])
-        self.assertRaises(self.failureException, self.assertItemsEqual,
-                          [10, 11], [10])
-        self.assertRaises(self.failureException, self.assertItemsEqual,
-                          [10, 11, 10], [10, 11])
-
-        # Test that sequences of unhashable objects can be tested for sameness:
-        self.assertItemsEqual([[1, 2], [3, 4], 0], [False, [3, 4], [1, 2]])
-        # Test that iterator of unhashable objects can be tested for sameness:
-        self.assertItemsEqual(iter([1, 2, [], 3, 4]),
-                              iter([1, 2, [], 3, 4]))
-
-        # hashable types, but not orderable
-        self.assertRaises(self.failureException, self.assertItemsEqual,
-                          [], [divmod, 'x', 1, 5j, 2j, frozenset()])
-        # comparing dicts
-        self.assertItemsEqual([{'a': 1}, {'b': 2}], [{'b': 2}, {'a': 1}])
-        # comparing heterogenous non-hashable sequences
-        self.assertItemsEqual([1, 'x', divmod, []], [divmod, [], 'x', 1])
-        self.assertRaises(self.failureException, self.assertItemsEqual,
-                          [], [divmod, [], 'x', 1, 5j, 2j, set()])
-        self.assertRaises(self.failureException, self.assertItemsEqual,
-                          [[1]], [[2]])
-
-        # Same elements, but not same sequence length
-        self.assertRaises(self.failureException, self.assertItemsEqual,
-                          [1, 1, 2], [2, 1])
-        self.assertRaises(self.failureException, self.assertItemsEqual,
-                          [1, 1, "2", "a", "a"], ["2", "2", True, "a"])
-        self.assertRaises(self.failureException, self.assertItemsEqual,
-                          [1, {'b': 2}, None, True], [{'b': 2}, True, None])
-
-        # Same elements which don't reliably compare, in
-        # different order, see issue 10242
-        a = [{2,4}, {1,2}]
-        b = a[::-1]
-        self.assertItemsEqual(a, b)
-
-        # test utility functions supporting assertItemsEqual()
-
-        diffs = set(unittest.util._count_diff_all_purpose('aaabccd', 'abbbcce'))
-        expected = {(3,1,'a'), (1,3,'b'), (1,0,'d'), (0,1,'e')}
-        self.assertEqual(diffs, expected)
-
-        diffs = unittest.util._count_diff_all_purpose([[]], [])
-        self.assertEqual(diffs, [(1, 0, [])])
-
-        diffs = set(unittest.util._count_diff_hashable('aaabccd', 'abbbcce'))
-        expected = {(3,1,'a'), (1,3,'b'), (1,0,'d'), (0,1,'e')}
-        self.assertEqual(diffs, expected)
-
-    def testAssertSetEqual(self):
-        set1 = set()
-        set2 = set()
-        self.assertSetEqual(set1, set2)
-
-        self.assertRaises(self.failureException, self.assertSetEqual, None, set2)
-        self.assertRaises(self.failureException, self.assertSetEqual, [], set2)
-        self.assertRaises(self.failureException, self.assertSetEqual, set1, None)
-        self.assertRaises(self.failureException, self.assertSetEqual, set1, [])
-
-        set1 = set(['a'])
-        set2 = set()
-        self.assertRaises(self.failureException, self.assertSetEqual, set1, set2)
-
-        set1 = set(['a'])
-        set2 = set(['a'])
-        self.assertSetEqual(set1, set2)
-
-        set1 = set(['a'])
-        set2 = set(['a', 'b'])
-        self.assertRaises(self.failureException, self.assertSetEqual, set1, set2)
-
-        set1 = set(['a'])
-        set2 = frozenset(['a', 'b'])
-        self.assertRaises(self.failureException, self.assertSetEqual, set1, set2)
-
-        set1 = set(['a', 'b'])
-        set2 = frozenset(['a', 'b'])
-        self.assertSetEqual(set1, set2)
-
-        set1 = set()
-        set2 = "foo"
-        self.assertRaises(self.failureException, self.assertSetEqual, set1, set2)
-        self.assertRaises(self.failureException, self.assertSetEqual, set2, set1)
-
-        # make sure any string formatting is tuple-safe
-        set1 = set([(0, 1), (2, 3)])
-        set2 = set([(4, 5)])
-        self.assertRaises(self.failureException, self.assertSetEqual, set1, set2)
-
-    def testInequality(self):
-        # Try ints
-        self.assertGreater(2, 1)
-        self.assertGreaterEqual(2, 1)
-        self.assertGreaterEqual(1, 1)
-        self.assertLess(1, 2)
-        self.assertLessEqual(1, 2)
-        self.assertLessEqual(1, 1)
-        self.assertRaises(self.failureException, self.assertGreater, 1, 2)
-        self.assertRaises(self.failureException, self.assertGreater, 1, 1)
-        self.assertRaises(self.failureException, self.assertGreaterEqual, 1, 2)
-        self.assertRaises(self.failureException, self.assertLess, 2, 1)
-        self.assertRaises(self.failureException, self.assertLess, 1, 1)
-        self.assertRaises(self.failureException, self.assertLessEqual, 2, 1)
-
-        # Try Floats
-        self.assertGreater(1.1, 1.0)
-        self.assertGreaterEqual(1.1, 1.0)
-        self.assertGreaterEqual(1.0, 1.0)
-        self.assertLess(1.0, 1.1)
-        self.assertLessEqual(1.0, 1.1)
-        self.assertLessEqual(1.0, 1.0)
-        self.assertRaises(self.failureException, self.assertGreater, 1.0, 1.1)
-        self.assertRaises(self.failureException, self.assertGreater, 1.0, 1.0)
-        self.assertRaises(self.failureException, self.assertGreaterEqual, 1.0, 1.1)
-        self.assertRaises(self.failureException, self.assertLess, 1.1, 1.0)
-        self.assertRaises(self.failureException, self.assertLess, 1.0, 1.0)
-        self.assertRaises(self.failureException, self.assertLessEqual, 1.1, 1.0)
-
-        # Try Strings
-        self.assertGreater('bug', 'ant')
-        self.assertGreaterEqual('bug', 'ant')
-        self.assertGreaterEqual('ant', 'ant')
-        self.assertLess('ant', 'bug')
-        self.assertLessEqual('ant', 'bug')
-        self.assertLessEqual('ant', 'ant')
-        self.assertRaises(self.failureException, self.assertGreater, 'ant', 'bug')
-        self.assertRaises(self.failureException, self.assertGreater, 'ant', 'ant')
-        self.assertRaises(self.failureException, self.assertGreaterEqual, 'ant', 'bug')
-        self.assertRaises(self.failureException, self.assertLess, 'bug', 'ant')
-        self.assertRaises(self.failureException, self.assertLess, 'ant', 'ant')
-        self.assertRaises(self.failureException, self.assertLessEqual, 'bug', 'ant')
-
-        # Try Unicode
-        self.assertGreater(u'bug', u'ant')
-        self.assertGreaterEqual(u'bug', u'ant')
-        self.assertGreaterEqual(u'ant', u'ant')
-        self.assertLess(u'ant', u'bug')
-        self.assertLessEqual(u'ant', u'bug')
-        self.assertLessEqual(u'ant', u'ant')
-        self.assertRaises(self.failureException, self.assertGreater, u'ant', u'bug')
-        self.assertRaises(self.failureException, self.assertGreater, u'ant', u'ant')
-        self.assertRaises(self.failureException, self.assertGreaterEqual, u'ant',
-                          u'bug')
-        self.assertRaises(self.failureException, self.assertLess, u'bug', u'ant')
-        self.assertRaises(self.failureException, self.assertLess, u'ant', u'ant')
-        self.assertRaises(self.failureException, self.assertLessEqual, u'bug', u'ant')
-
-        # Try Mixed String/Unicode
-        self.assertGreater('bug', u'ant')
-        self.assertGreater(u'bug', 'ant')
-        self.assertGreaterEqual('bug', u'ant')
-        self.assertGreaterEqual(u'bug', 'ant')
-        self.assertGreaterEqual('ant', u'ant')
-        self.assertGreaterEqual(u'ant', 'ant')
-        self.assertLess('ant', u'bug')
-        self.assertLess(u'ant', 'bug')
-        self.assertLessEqual('ant', u'bug')
-        self.assertLessEqual(u'ant', 'bug')
-        self.assertLessEqual('ant', u'ant')
-        self.assertLessEqual(u'ant', 'ant')
-        self.assertRaises(self.failureException, self.assertGreater, 'ant', u'bug')
-        self.assertRaises(self.failureException, self.assertGreater, u'ant', 'bug')
-        self.assertRaises(self.failureException, self.assertGreater, 'ant', u'ant')
-        self.assertRaises(self.failureException, self.assertGreater, u'ant', 'ant')
-        self.assertRaises(self.failureException, self.assertGreaterEqual, 'ant',
-                          u'bug')
-        self.assertRaises(self.failureException, self.assertGreaterEqual, u'ant',
-                          'bug')
-        self.assertRaises(self.failureException, self.assertLess, 'bug', u'ant')
-        self.assertRaises(self.failureException, self.assertLess, u'bug', 'ant')
-        self.assertRaises(self.failureException, self.assertLess, 'ant', u'ant')
-        self.assertRaises(self.failureException, self.assertLess, u'ant', 'ant')
-        self.assertRaises(self.failureException, self.assertLessEqual, 'bug', u'ant')
-        self.assertRaises(self.failureException, self.assertLessEqual, u'bug', 'ant')
-
-    def testAssertMultiLineEqual(self):
-        sample_text = b"""\
-http://www.python.org/doc/2.3/lib/module-unittest.html
-test case
-    A test case is the smallest unit of testing. [...]
-"""
-        revised_sample_text = b"""\
-http://www.python.org/doc/2.4.1/lib/module-unittest.html
-test case
-    A test case is the smallest unit of testing. [...] You may provide your
-    own implementation that does not subclass from TestCase, of course.
-"""
-        sample_text_error = b"""\
-- http://www.python.org/doc/2.3/lib/module-unittest.html
-?                             ^
-+ http://www.python.org/doc/2.4.1/lib/module-unittest.html
-?                             ^^^
-  test case
--     A test case is the smallest unit of testing. [...]
-+     A test case is the smallest unit of testing. [...] You may provide your
-?                                                       +++++++++++++++++++++
-+     own implementation that does not subclass from TestCase, of course.
-"""
-        self.maxDiff = None
-        for type_changer in (lambda x: x, lambda x: x.decode('utf8')):
-            try:
-                self.assertMultiLineEqual(type_changer(sample_text),
-                                          type_changer(revised_sample_text))
-            except self.failureException, e:
-                # need to remove the first line of the error message
-                error = str(e).encode('utf8').split('\n', 1)[1]
-
-                # assertMultiLineEqual is hooked up as the default for
-                # unicode strings - so we can't use it for this check
-                self.assertTrue(sample_text_error == error)
-
-    def testAsertEqualSingleLine(self):
-        sample_text = u"laden swallows fly slowly"
-        revised_sample_text = u"unladen swallows fly quickly"
-        sample_text_error = """\
-- laden swallows fly slowly
-?                    ^^^^
-+ unladen swallows fly quickly
-? ++                   ^^^^^
-"""
-        try:
-            self.assertEqual(sample_text, revised_sample_text)
-        except self.failureException as e:
-            error = str(e).split('\n', 1)[1]
-            self.assertTrue(sample_text_error == error)
-
-    def testAssertIsNone(self):
-        self.assertIsNone(None)
-        self.assertRaises(self.failureException, self.assertIsNone, False)
-        self.assertIsNotNone('DjZoPloGears on Rails')
-        self.assertRaises(self.failureException, self.assertIsNotNone, None)
-
-    def testAssertRegexpMatches(self):
-        self.assertRegexpMatches('asdfabasdf', r'ab+')
-        self.assertRaises(self.failureException, self.assertRegexpMatches,
-                          'saaas', r'aaaa')
-
-    def testAssertRaisesRegexp(self):
-        class ExceptionMock(Exception):
-            pass
-
-        def Stub():
-            raise ExceptionMock('We expect')
-
-        self.assertRaisesRegexp(ExceptionMock, re.compile('expect$'), Stub)
-        self.assertRaisesRegexp(ExceptionMock, 'expect$', Stub)
-        self.assertRaisesRegexp(ExceptionMock, u'expect$', Stub)
-
-    def testAssertNotRaisesRegexp(self):
-        self.assertRaisesRegexp(
-                self.failureException, '^Exception not raised$',
-                self.assertRaisesRegexp, Exception, re.compile('x'),
-                lambda: None)
-        self.assertRaisesRegexp(
-                self.failureException, '^Exception not raised$',
-                self.assertRaisesRegexp, Exception, 'x',
-                lambda: None)
-        self.assertRaisesRegexp(
-                self.failureException, '^Exception not raised$',
-                self.assertRaisesRegexp, Exception, u'x',
-                lambda: None)
-
-    def testAssertRaisesRegexpMismatch(self):
-        def Stub():
-            raise Exception('Unexpected')
-
-        self.assertRaisesRegexp(
-                self.failureException,
-                r'"\^Expected\$" does not match "Unexpected"',
-                self.assertRaisesRegexp, Exception, '^Expected$',
-                Stub)
-        self.assertRaisesRegexp(
-                self.failureException,
-                r'"\^Expected\$" does not match "Unexpected"',
-                self.assertRaisesRegexp, Exception, u'^Expected$',
-                Stub)
-        self.assertRaisesRegexp(
-                self.failureException,
-                r'"\^Expected\$" does not match "Unexpected"',
-                self.assertRaisesRegexp, Exception,
-                re.compile('^Expected$'), Stub)
-
-    def testAssertRaisesExcValue(self):
-        class ExceptionMock(Exception):
-            pass
-
-        def Stub(foo):
-            raise ExceptionMock(foo)
-        v = "particular value"
-
-        ctx = self.assertRaises(ExceptionMock)
-        with ctx:
-            Stub(v)
-        e = ctx.exception
-        self.assertIsInstance(e, ExceptionMock)
-        self.assertEqual(e.args[0], v)
-
-    def testSynonymAssertMethodNames(self):
-        """Test undocumented method name synonyms.
-
-        Please do not use these methods names in your own code.
-
-        This test confirms their continued existence and functionality
-        in order to avoid breaking existing code.
-        """
-        self.assertNotEquals(3, 5)
-        self.assertEquals(3, 3)
-        self.assertAlmostEquals(2.0, 2.0)
-        self.assertNotAlmostEquals(3.0, 5.0)
-        self.assert_(True)
-
-    def testPendingDeprecationMethodNames(self):
-        """Test fail* methods pending deprecation, they will warn in 3.2.
-
-        Do not use these methods.  They will go away in 3.3.
-        """
-        with test_support.check_warnings():
-            self.failIfEqual(3, 5)
-            self.failUnlessEqual(3, 3)
-            self.failUnlessAlmostEqual(2.0, 2.0)
-            self.failIfAlmostEqual(3.0, 5.0)
-            self.failUnless(True)
-            self.failUnlessRaises(TypeError, lambda _: 3.14 + u'spam')
-            self.failIf(False)
-
-    def testDeepcopy(self):
-        # Issue: 5660
-        class TestableTest(unittest.TestCase):
-            def testNothing(self):
-                pass
-
-        test = TestableTest('testNothing')
-
-        # This shouldn't blow up
-        deepcopy(test)
-
-    def testKeyboardInterrupt(self):
-        def _raise(self=None):
-            raise KeyboardInterrupt
-        def nothing(self):
-            pass
-
-        class Test1(unittest.TestCase):
-            test_something = _raise
-
-        class Test2(unittest.TestCase):
-            setUp = _raise
-            test_something = nothing
-
-        class Test3(unittest.TestCase):
-            test_something = nothing
-            tearDown = _raise
-
-        class Test4(unittest.TestCase):
-            def test_something(self):
-                self.addCleanup(_raise)
-
-        for klass in (Test1, Test2, Test3, Test4):
-            with self.assertRaises(KeyboardInterrupt):
-                klass('test_something').run()
-
-    def testSystemExit(self):
-        def _raise(self=None):
-            raise SystemExit
-        def nothing(self):
-            pass
-
-        class Test1(unittest.TestCase):
-            test_something = _raise
-
-        class Test2(unittest.TestCase):
-            setUp = _raise
-            test_something = nothing
-
-        class Test3(unittest.TestCase):
-            test_something = nothing
-            tearDown = _raise
-
-        class Test4(unittest.TestCase):
-            def test_something(self):
-                self.addCleanup(_raise)
-
-        for klass in (Test1, Test2, Test3, Test4):
-            result = unittest.TestResult()
-            klass('test_something').run(result)
-            self.assertEqual(len(result.errors), 1)
-            self.assertEqual(result.testsRun, 1)
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_discovery.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_discovery.py
deleted file mode 100644
index e45419c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_discovery.py
+++ /dev/null
@@ -1,362 +0,0 @@
-import os
-import re
-import sys
-
-import unittest
-
-
-class TestDiscovery(unittest.TestCase):
-
-    # Heavily mocked tests so I can avoid hitting the filesystem
-    def test_get_name_from_path(self):
-        loader = unittest.TestLoader()
-
-        loader._top_level_dir = '/foo'
-        name = loader._get_name_from_path('/foo/bar/baz.py')
-        self.assertEqual(name, 'bar.baz')
-
-        if not __debug__:
-            # asserts are off
-            return
-
-        with self.assertRaises(AssertionError):
-            loader._get_name_from_path('/bar/baz.py')
-
-    def test_find_tests(self):
-        loader = unittest.TestLoader()
-
-        original_listdir = os.listdir
-        def restore_listdir():
-            os.listdir = original_listdir
-        original_isfile = os.path.isfile
-        def restore_isfile():
-            os.path.isfile = original_isfile
-        original_isdir = os.path.isdir
-        def restore_isdir():
-            os.path.isdir = original_isdir
-
-        path_lists = [['test1.py', 'test2.py', 'not_a_test.py', 'test_dir',
-                       'test.foo', 'test-not-a-module.py', 'another_dir'],
-                      ['test3.py', 'test4.py', ]]
-        os.listdir = lambda path: path_lists.pop(0)
-        self.addCleanup(restore_listdir)
-
-        def isdir(path):
-            return path.endswith('dir')
-        os.path.isdir = isdir
-        self.addCleanup(restore_isdir)
-
-        def isfile(path):
-            # another_dir is not a package and so shouldn't be recursed into
-            return not path.endswith('dir') and not 'another_dir' in path
-        os.path.isfile = isfile
-        self.addCleanup(restore_isfile)
-
-        loader._get_module_from_name = lambda path: path + ' module'
-        loader.loadTestsFromModule = lambda module: module + ' tests'
-
-        top_level = os.path.abspath('/foo')
-        loader._top_level_dir = top_level
-        suite = list(loader._find_tests(top_level, 'test*.py'))
-
-        expected = [name + ' module tests' for name in
-                    ('test1', 'test2')]
-        expected.extend([('test_dir.%s' % name) + ' module tests' for name in
-                    ('test3', 'test4')])
-        self.assertEqual(suite, expected)
-
-    def test_find_tests_with_package(self):
-        loader = unittest.TestLoader()
-
-        original_listdir = os.listdir
-        def restore_listdir():
-            os.listdir = original_listdir
-        original_isfile = os.path.isfile
-        def restore_isfile():
-            os.path.isfile = original_isfile
-        original_isdir = os.path.isdir
-        def restore_isdir():
-            os.path.isdir = original_isdir
-
-        directories = ['a_directory', 'test_directory', 'test_directory2']
-        path_lists = [directories, [], [], []]
-        os.listdir = lambda path: path_lists.pop(0)
-        self.addCleanup(restore_listdir)
-
-        os.path.isdir = lambda path: True
-        self.addCleanup(restore_isdir)
-
-        os.path.isfile = lambda path: os.path.basename(path) not in directories
-        self.addCleanup(restore_isfile)
-
-        class Module(object):
-            paths = []
-            load_tests_args = []
-
-            def __init__(self, path):
-                self.path = path
-                self.paths.append(path)
-                if os.path.basename(path) == 'test_directory':
-                    def load_tests(loader, tests, pattern):
-                        self.load_tests_args.append((loader, tests, pattern))
-                        return 'load_tests'
-                    self.load_tests = load_tests
-
-            def __eq__(self, other):
-                return self.path == other.path
-
-            # Silence py3k warning
-            __hash__ = None
-
-        loader._get_module_from_name = lambda name: Module(name)
-        def loadTestsFromModule(module, use_load_tests):
-            if use_load_tests:
-                raise self.failureException('use_load_tests should be False for packages')
-            return module.path + ' module tests'
-        loader.loadTestsFromModule = loadTestsFromModule
-
-        loader._top_level_dir = '/foo'
-        # this time no '.py' on the pattern so that it can match
-        # a test package
-        suite = list(loader._find_tests('/foo', 'test*'))
-
-        # We should have loaded tests from the test_directory package by calling load_tests
-        # and directly from the test_directory2 package
-        self.assertEqual(suite,
-                         ['load_tests', 'test_directory2' + ' module tests'])
-        self.assertEqual(Module.paths, ['test_directory', 'test_directory2'])
-
-        # load_tests should have been called once with loader, tests and pattern
-        self.assertEqual(Module.load_tests_args,
-                         [(loader, 'test_directory' + ' module tests', 'test*')])
-
-    def test_discover(self):
-        loader = unittest.TestLoader()
-
-        original_isfile = os.path.isfile
-        original_isdir = os.path.isdir
-        def restore_isfile():
-            os.path.isfile = original_isfile
-
-        os.path.isfile = lambda path: False
-        self.addCleanup(restore_isfile)
-
-        orig_sys_path = sys.path[:]
-        def restore_path():
-            sys.path[:] = orig_sys_path
-        self.addCleanup(restore_path)
-
-        full_path = os.path.abspath(os.path.normpath('/foo'))
-        with self.assertRaises(ImportError):
-            loader.discover('/foo/bar', top_level_dir='/foo')
-
-        self.assertEqual(loader._top_level_dir, full_path)
-        self.assertIn(full_path, sys.path)
-
-        os.path.isfile = lambda path: True
-        os.path.isdir = lambda path: True
-
-        def restore_isdir():
-            os.path.isdir = original_isdir
-        self.addCleanup(restore_isdir)
-
-        _find_tests_args = []
-        def _find_tests(start_dir, pattern):
-            _find_tests_args.append((start_dir, pattern))
-            return ['tests']
-        loader._find_tests = _find_tests
-        loader.suiteClass = str
-
-        suite = loader.discover('/foo/bar/baz', 'pattern', '/foo/bar')
-
-        top_level_dir = os.path.abspath('/foo/bar')
-        start_dir = os.path.abspath('/foo/bar/baz')
-        self.assertEqual(suite, "['tests']")
-        self.assertEqual(loader._top_level_dir, top_level_dir)
-        self.assertEqual(_find_tests_args, [(start_dir, 'pattern')])
-        self.assertIn(top_level_dir, sys.path)
-
-    def test_discover_with_modules_that_fail_to_import(self):
-        loader = unittest.TestLoader()
-
-        listdir = os.listdir
-        os.listdir = lambda _: ['test_this_does_not_exist.py']
-        isfile = os.path.isfile
-        os.path.isfile = lambda _: True
-        orig_sys_path = sys.path[:]
-        def restore():
-            os.path.isfile = isfile
-            os.listdir = listdir
-            sys.path[:] = orig_sys_path
-        self.addCleanup(restore)
-
-        suite = loader.discover('.')
-        self.assertIn(os.getcwd(), sys.path)
-        self.assertEqual(suite.countTestCases(), 1)
-        test = list(list(suite)[0])[0] # extract test from suite
-
-        with self.assertRaises(ImportError):
-            test.test_this_does_not_exist()
-
-    def test_command_line_handling_parseArgs(self):
-        # Haha - take that uninstantiable class
-        program = object.__new__(unittest.TestProgram)
-
-        args = []
-        def do_discovery(argv):
-            args.extend(argv)
-        program._do_discovery = do_discovery
-        program.parseArgs(['something', 'discover'])
-        self.assertEqual(args, [])
-
-        program.parseArgs(['something', 'discover', 'foo', 'bar'])
-        self.assertEqual(args, ['foo', 'bar'])
-
-    def test_command_line_handling_do_discovery_too_many_arguments(self):
-        class Stop(Exception):
-            pass
-        def usageExit():
-            raise Stop
-
-        program = object.__new__(unittest.TestProgram)
-        program.usageExit = usageExit
-
-        with self.assertRaises(Stop):
-            # too many args
-            program._do_discovery(['one', 'two', 'three', 'four'])
-
-
-    def test_command_line_handling_do_discovery_calls_loader(self):
-        program = object.__new__(unittest.TestProgram)
-
-        class Loader(object):
-            args = []
-            def discover(self, start_dir, pattern, top_level_dir):
-                self.args.append((start_dir, pattern, top_level_dir))
-                return 'tests'
-
-        program._do_discovery(['-v'], Loader=Loader)
-        self.assertEqual(program.verbosity, 2)
-        self.assertEqual(program.test, 'tests')
-        self.assertEqual(Loader.args, [('.', 'test*.py', None)])
-
-        Loader.args = []
-        program = object.__new__(unittest.TestProgram)
-        program._do_discovery(['--verbose'], Loader=Loader)
-        self.assertEqual(program.test, 'tests')
-        self.assertEqual(Loader.args, [('.', 'test*.py', None)])
-
-        Loader.args = []
-        program = object.__new__(unittest.TestProgram)
-        program._do_discovery([], Loader=Loader)
-        self.assertEqual(program.test, 'tests')
-        self.assertEqual(Loader.args, [('.', 'test*.py', None)])
-
-        Loader.args = []
-        program = object.__new__(unittest.TestProgram)
-        program._do_discovery(['fish'], Loader=Loader)
-        self.assertEqual(program.test, 'tests')
-        self.assertEqual(Loader.args, [('fish', 'test*.py', None)])
-
-        Loader.args = []
-        program = object.__new__(unittest.TestProgram)
-        program._do_discovery(['fish', 'eggs'], Loader=Loader)
-        self.assertEqual(program.test, 'tests')
-        self.assertEqual(Loader.args, [('fish', 'eggs', None)])
-
-        Loader.args = []
-        program = object.__new__(unittest.TestProgram)
-        program._do_discovery(['fish', 'eggs', 'ham'], Loader=Loader)
-        self.assertEqual(program.test, 'tests')
-        self.assertEqual(Loader.args, [('fish', 'eggs', 'ham')])
-
-        Loader.args = []
-        program = object.__new__(unittest.TestProgram)
-        program._do_discovery(['-s', 'fish'], Loader=Loader)
-        self.assertEqual(program.test, 'tests')
-        self.assertEqual(Loader.args, [('fish', 'test*.py', None)])
-
-        Loader.args = []
-        program = object.__new__(unittest.TestProgram)
-        program._do_discovery(['-t', 'fish'], Loader=Loader)
-        self.assertEqual(program.test, 'tests')
-        self.assertEqual(Loader.args, [('.', 'test*.py', 'fish')])
-
-        Loader.args = []
-        program = object.__new__(unittest.TestProgram)
-        program._do_discovery(['-p', 'fish'], Loader=Loader)
-        self.assertEqual(program.test, 'tests')
-        self.assertEqual(Loader.args, [('.', 'fish', None)])
-        self.assertFalse(program.failfast)
-        self.assertFalse(program.catchbreak)
-
-        Loader.args = []
-        program = object.__new__(unittest.TestProgram)
-        program._do_discovery(['-p', 'eggs', '-s', 'fish', '-v', '-f', '-c'],
-                              Loader=Loader)
-        self.assertEqual(program.test, 'tests')
-        self.assertEqual(Loader.args, [('fish', 'eggs', None)])
-        self.assertEqual(program.verbosity, 2)
-        self.assertTrue(program.failfast)
-        self.assertTrue(program.catchbreak)
-
-    def test_detect_module_clash(self):
-        class Module(object):
-            __file__ = 'bar/foo.py'
-        sys.modules['foo'] = Module
-        full_path = os.path.abspath('foo')
-        original_listdir = os.listdir
-        original_isfile = os.path.isfile
-        original_isdir = os.path.isdir
-
-        def cleanup():
-            os.listdir = original_listdir
-            os.path.isfile = original_isfile
-            os.path.isdir = original_isdir
-            del sys.modules['foo']
-            if full_path in sys.path:
-                sys.path.remove(full_path)
-        self.addCleanup(cleanup)
-
-        def listdir(_):
-            return ['foo.py']
-        def isfile(_):
-            return True
-        def isdir(_):
-            return True
-        os.listdir = listdir
-        os.path.isfile = isfile
-        os.path.isdir = isdir
-
-        loader = unittest.TestLoader()
-
-        mod_dir = os.path.abspath('bar')
-        expected_dir = os.path.abspath('foo')
-        msg = re.escape(r"'foo' module incorrectly imported from %r. Expected %r. "
-                "Is this module globally installed?" % (mod_dir, expected_dir))
-        self.assertRaisesRegexp(
-            ImportError, '^%s$' % msg, loader.discover,
-            start_dir='foo', pattern='foo.py'
-        )
-        self.assertEqual(sys.path[0], full_path)
-
-
-    def test_discovery_from_dotted_path(self):
-        loader = unittest.TestLoader()
-
-        tests = [self]
-        expectedPath = os.path.abspath(os.path.dirname(unittest.test.__file__))
-
-        self.wasRun = False
-        def _find_tests(start_dir, pattern):
-            self.wasRun = True
-            self.assertEqual(start_dir, expectedPath)
-            return tests
-        loader._find_tests = _find_tests
-        suite = loader.discover('unittest.test')
-        self.assertTrue(self.wasRun)
-        self.assertEqual(suite._tests, tests)
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_functiontestcase.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_functiontestcase.py
deleted file mode 100644
index b96ff05..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_functiontestcase.py
+++ /dev/null
@@ -1,148 +0,0 @@
-import unittest
-
-from .support import LoggingResult
-
-
-class Test_FunctionTestCase(unittest.TestCase):
-
-    # "Return the number of tests represented by the this test object. For
-    # TestCase instances, this will always be 1"
-    def test_countTestCases(self):
-        test = unittest.FunctionTestCase(lambda: None)
-
-        self.assertEqual(test.countTestCases(), 1)
-
-    # "When a setUp() method is defined, the test runner will run that method
-    # prior to each test. Likewise, if a tearDown() method is defined, the
-    # test runner will invoke that method after each test. In the example,
-    # setUp() was used to create a fresh sequence for each test."
-    #
-    # Make sure the proper call order is maintained, even if setUp() raises
-    # an exception.
-    def test_run_call_order__error_in_setUp(self):
-        events = []
-        result = LoggingResult(events)
-
-        def setUp():
-            events.append('setUp')
-            raise RuntimeError('raised by setUp')
-
-        def test():
-            events.append('test')
-
-        def tearDown():
-            events.append('tearDown')
-
-        expected = ['startTest', 'setUp', 'addError', 'stopTest']
-        unittest.FunctionTestCase(test, setUp, tearDown).run(result)
-        self.assertEqual(events, expected)
-
-    # "When a setUp() method is defined, the test runner will run that method
-    # prior to each test. Likewise, if a tearDown() method is defined, the
-    # test runner will invoke that method after each test. In the example,
-    # setUp() was used to create a fresh sequence for each test."
-    #
-    # Make sure the proper call order is maintained, even if the test raises
-    # an error (as opposed to a failure).
-    def test_run_call_order__error_in_test(self):
-        events = []
-        result = LoggingResult(events)
-
-        def setUp():
-            events.append('setUp')
-
-        def test():
-            events.append('test')
-            raise RuntimeError('raised by test')
-
-        def tearDown():
-            events.append('tearDown')
-
-        expected = ['startTest', 'setUp', 'test', 'addError', 'tearDown',
-                    'stopTest']
-        unittest.FunctionTestCase(test, setUp, tearDown).run(result)
-        self.assertEqual(events, expected)
-
-    # "When a setUp() method is defined, the test runner will run that method
-    # prior to each test. Likewise, if a tearDown() method is defined, the
-    # test runner will invoke that method after each test. In the example,
-    # setUp() was used to create a fresh sequence for each test."
-    #
-    # Make sure the proper call order is maintained, even if the test signals
-    # a failure (as opposed to an error).
-    def test_run_call_order__failure_in_test(self):
-        events = []
-        result = LoggingResult(events)
-
-        def setUp():
-            events.append('setUp')
-
-        def test():
-            events.append('test')
-            self.fail('raised by test')
-
-        def tearDown():
-            events.append('tearDown')
-
-        expected = ['startTest', 'setUp', 'test', 'addFailure', 'tearDown',
-                    'stopTest']
-        unittest.FunctionTestCase(test, setUp, tearDown).run(result)
-        self.assertEqual(events, expected)
-
-    # "When a setUp() method is defined, the test runner will run that method
-    # prior to each test. Likewise, if a tearDown() method is defined, the
-    # test runner will invoke that method after each test. In the example,
-    # setUp() was used to create a fresh sequence for each test."
-    #
-    # Make sure the proper call order is maintained, even if tearDown() raises
-    # an exception.
-    def test_run_call_order__error_in_tearDown(self):
-        events = []
-        result = LoggingResult(events)
-
-        def setUp():
-            events.append('setUp')
-
-        def test():
-            events.append('test')
-
-        def tearDown():
-            events.append('tearDown')
-            raise RuntimeError('raised by tearDown')
-
-        expected = ['startTest', 'setUp', 'test', 'tearDown', 'addError',
-                    'stopTest']
-        unittest.FunctionTestCase(test, setUp, tearDown).run(result)
-        self.assertEqual(events, expected)
-
-    # "Return a string identifying the specific test case."
-    #
-    # Because of the vague nature of the docs, I'm not going to lock this
-    # test down too much. Really all that can be asserted is that the id()
-    # will be a string (either 8-byte or unicode -- again, because the docs
-    # just say "string")
-    def test_id(self):
-        test = unittest.FunctionTestCase(lambda: None)
-
-        self.assertIsInstance(test.id(), basestring)
-
-    # "Returns a one-line description of the test, or None if no description
-    # has been provided. The default implementation of this method returns
-    # the first line of the test method's docstring, if available, or None."
-    def test_shortDescription__no_docstring(self):
-        test = unittest.FunctionTestCase(lambda: None)
-
-        self.assertEqual(test.shortDescription(), None)
-
-    # "Returns a one-line description of the test, or None if no description
-    # has been provided. The default implementation of this method returns
-    # the first line of the test method's docstring, if available, or None."
-    def test_shortDescription__singleline_docstring(self):
-        desc = "this tests foo"
-        test = unittest.FunctionTestCase(lambda: None, description=desc)
-
-        self.assertEqual(test.shortDescription(), "this tests foo")
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_loader.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_loader.py
deleted file mode 100644
index de806ed..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_loader.py
+++ /dev/null
@@ -1,1286 +0,0 @@
-import sys
-import types
-
-
-import unittest
-
-
-class Test_TestLoader(unittest.TestCase):
-
-    ### Tests for TestLoader.loadTestsFromTestCase
-    ################################################################
-
-    # "Return a suite of all tests cases contained in the TestCase-derived
-    # class testCaseClass"
-    def test_loadTestsFromTestCase(self):
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-            def foo_bar(self): pass
-
-        tests = unittest.TestSuite([Foo('test_1'), Foo('test_2')])
-
-        loader = unittest.TestLoader()
-        self.assertEqual(loader.loadTestsFromTestCase(Foo), tests)
-
-    # "Return a suite of all tests cases contained in the TestCase-derived
-    # class testCaseClass"
-    #
-    # Make sure it does the right thing even if no tests were found
-    def test_loadTestsFromTestCase__no_matches(self):
-        class Foo(unittest.TestCase):
-            def foo_bar(self): pass
-
-        empty_suite = unittest.TestSuite()
-
-        loader = unittest.TestLoader()
-        self.assertEqual(loader.loadTestsFromTestCase(Foo), empty_suite)
-
-    # "Return a suite of all tests cases contained in the TestCase-derived
-    # class testCaseClass"
-    #
-    # What happens if loadTestsFromTestCase() is given an object
-    # that isn't a subclass of TestCase? Specifically, what happens
-    # if testCaseClass is a subclass of TestSuite?
-    #
-    # This is checked for specifically in the code, so we better add a
-    # test for it.
-    def test_loadTestsFromTestCase__TestSuite_subclass(self):
-        class NotATestCase(unittest.TestSuite):
-            pass
-
-        loader = unittest.TestLoader()
-        try:
-            loader.loadTestsFromTestCase(NotATestCase)
-        except TypeError:
-            pass
-        else:
-            self.fail('Should raise TypeError')
-
-    # "Return a suite of all tests cases contained in the TestCase-derived
-    # class testCaseClass"
-    #
-    # Make sure loadTestsFromTestCase() picks up the default test method
-    # name (as specified by TestCase), even though the method name does
-    # not match the default TestLoader.testMethodPrefix string
-    def test_loadTestsFromTestCase__default_method_name(self):
-        class Foo(unittest.TestCase):
-            def runTest(self):
-                pass
-
-        loader = unittest.TestLoader()
-        # This has to be false for the test to succeed
-        self.assertFalse('runTest'.startswith(loader.testMethodPrefix))
-
-        suite = loader.loadTestsFromTestCase(Foo)
-        self.assertIsInstance(suite, loader.suiteClass)
-        self.assertEqual(list(suite), [Foo('runTest')])
-
-    ################################################################
-    ### /Tests for TestLoader.loadTestsFromTestCase
-
-    ### Tests for TestLoader.loadTestsFromModule
-    ################################################################
-
-    # "This method searches `module` for classes derived from TestCase"
-    def test_loadTestsFromModule__TestCase_subclass(self):
-        m = types.ModuleType('m')
-        class MyTestCase(unittest.TestCase):
-            def test(self):
-                pass
-        m.testcase_1 = MyTestCase
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromModule(m)
-        self.assertIsInstance(suite, loader.suiteClass)
-
-        expected = [loader.suiteClass([MyTestCase('test')])]
-        self.assertEqual(list(suite), expected)
-
-    # "This method searches `module` for classes derived from TestCase"
-    #
-    # What happens if no tests are found (no TestCase instances)?
-    def test_loadTestsFromModule__no_TestCase_instances(self):
-        m = types.ModuleType('m')
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromModule(m)
-        self.assertIsInstance(suite, loader.suiteClass)
-        self.assertEqual(list(suite), [])
-
-    # "This method searches `module` for classes derived from TestCase"
-    #
-    # What happens if no tests are found (TestCases instances, but no tests)?
-    def test_loadTestsFromModule__no_TestCase_tests(self):
-        m = types.ModuleType('m')
-        class MyTestCase(unittest.TestCase):
-            pass
-        m.testcase_1 = MyTestCase
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromModule(m)
-        self.assertIsInstance(suite, loader.suiteClass)
-
-        self.assertEqual(list(suite), [loader.suiteClass()])
-
-    # "This method searches `module` for classes derived from TestCase"s
-    #
-    # What happens if loadTestsFromModule() is given something other
-    # than a module?
-    #
-    # XXX Currently, it succeeds anyway. This flexibility
-    # should either be documented or loadTestsFromModule() should
-    # raise a TypeError
-    #
-    # XXX Certain people are using this behaviour. We'll add a test for it
-    def test_loadTestsFromModule__not_a_module(self):
-        class MyTestCase(unittest.TestCase):
-            def test(self):
-                pass
-
-        class NotAModule(object):
-            test_2 = MyTestCase
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromModule(NotAModule)
-
-        reference = [unittest.TestSuite([MyTestCase('test')])]
-        self.assertEqual(list(suite), reference)
-
-
-    # Check that loadTestsFromModule honors (or not) a module
-    # with a load_tests function.
-    def test_loadTestsFromModule__load_tests(self):
-        m = types.ModuleType('m')
-        class MyTestCase(unittest.TestCase):
-            def test(self):
-                pass
-        m.testcase_1 = MyTestCase
-
-        load_tests_args = []
-        def load_tests(loader, tests, pattern):
-            self.assertIsInstance(tests, unittest.TestSuite)
-            load_tests_args.extend((loader, tests, pattern))
-            return tests
-        m.load_tests = load_tests
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromModule(m)
-        self.assertIsInstance(suite, unittest.TestSuite)
-        self.assertEqual(load_tests_args, [loader, suite, None])
-
-        load_tests_args = []
-        suite = loader.loadTestsFromModule(m, use_load_tests=False)
-        self.assertEqual(load_tests_args, [])
-
-    def test_loadTestsFromModule__faulty_load_tests(self):
-        m = types.ModuleType('m')
-
-        def load_tests(loader, tests, pattern):
-            raise TypeError('some failure')
-        m.load_tests = load_tests
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromModule(m)
-        self.assertIsInstance(suite, unittest.TestSuite)
-        self.assertEqual(suite.countTestCases(), 1)
-        test = list(suite)[0]
-
-        self.assertRaisesRegexp(TypeError, "some failure", test.m)
-
-    ################################################################
-    ### /Tests for TestLoader.loadTestsFromModule()
-
-    ### Tests for TestLoader.loadTestsFromName()
-    ################################################################
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    #
-    # Is ValueError raised in response to an empty name?
-    def test_loadTestsFromName__empty_name(self):
-        loader = unittest.TestLoader()
-
-        try:
-            loader.loadTestsFromName('')
-        except ValueError, e:
-            self.assertEqual(str(e), "Empty module name")
-        else:
-            self.fail("TestLoader.loadTestsFromName failed to raise ValueError")
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    #
-    # What happens when the name contains invalid characters?
-    def test_loadTestsFromName__malformed_name(self):
-        loader = unittest.TestLoader()
-
-        # XXX Should this raise ValueError or ImportError?
-        try:
-            loader.loadTestsFromName('abc () //')
-        except ValueError:
-            pass
-        except ImportError:
-            pass
-        else:
-            self.fail("TestLoader.loadTestsFromName failed to raise ValueError")
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to a
-    # module"
-    #
-    # What happens when a module by that name can't be found?
-    def test_loadTestsFromName__unknown_module_name(self):
-        loader = unittest.TestLoader()
-
-        try:
-            loader.loadTestsFromName('sdasfasfasdf')
-        except ImportError, e:
-            self.assertEqual(str(e), "No module named sdasfasfasdf")
-        else:
-            self.fail("TestLoader.loadTestsFromName failed to raise ImportError")
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    #
-    # What happens when the module is found, but the attribute can't?
-    def test_loadTestsFromName__unknown_attr_name(self):
-        loader = unittest.TestLoader()
-
-        try:
-            loader.loadTestsFromName('unittest.sdasfasfasdf')
-        except AttributeError, e:
-            self.assertEqual(str(e), "'module' object has no attribute 'sdasfasfasdf'")
-        else:
-            self.fail("TestLoader.loadTestsFromName failed to raise AttributeError")
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    #
-    # What happens when we provide the module, but the attribute can't be
-    # found?
-    def test_loadTestsFromName__relative_unknown_name(self):
-        loader = unittest.TestLoader()
-
-        try:
-            loader.loadTestsFromName('sdasfasfasdf', unittest)
-        except AttributeError, e:
-            self.assertEqual(str(e), "'module' object has no attribute 'sdasfasfasdf'")
-        else:
-            self.fail("TestLoader.loadTestsFromName failed to raise AttributeError")
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    # ...
-    # "The method optionally resolves name relative to the given module"
-    #
-    # Does loadTestsFromName raise ValueError when passed an empty
-    # name relative to a provided module?
-    #
-    # XXX Should probably raise a ValueError instead of an AttributeError
-    def test_loadTestsFromName__relative_empty_name(self):
-        loader = unittest.TestLoader()
-
-        try:
-            loader.loadTestsFromName('', unittest)
-        except AttributeError:
-            pass
-        else:
-            self.fail("Failed to raise AttributeError")
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    # ...
-    # "The method optionally resolves name relative to the given module"
-    #
-    # What happens when an impossible name is given, relative to the provided
-    # `module`?
-    def test_loadTestsFromName__relative_malformed_name(self):
-        loader = unittest.TestLoader()
-
-        # XXX Should this raise AttributeError or ValueError?
-        try:
-            loader.loadTestsFromName('abc () //', unittest)
-        except ValueError:
-            pass
-        except AttributeError:
-            pass
-        else:
-            self.fail("TestLoader.loadTestsFromName failed to raise ValueError")
-
-    # "The method optionally resolves name relative to the given module"
-    #
-    # Does loadTestsFromName raise TypeError when the `module` argument
-    # isn't a module object?
-    #
-    # XXX Accepts the not-a-module object, ignorning the object's type
-    # This should raise an exception or the method name should be changed
-    #
-    # XXX Some people are relying on this, so keep it for now
-    def test_loadTestsFromName__relative_not_a_module(self):
-        class MyTestCase(unittest.TestCase):
-            def test(self):
-                pass
-
-        class NotAModule(object):
-            test_2 = MyTestCase
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromName('test_2', NotAModule)
-
-        reference = [MyTestCase('test')]
-        self.assertEqual(list(suite), reference)
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    #
-    # Does it raise an exception if the name resolves to an invalid
-    # object?
-    def test_loadTestsFromName__relative_bad_object(self):
-        m = types.ModuleType('m')
-        m.testcase_1 = object()
-
-        loader = unittest.TestLoader()
-        try:
-            loader.loadTestsFromName('testcase_1', m)
-        except TypeError:
-            pass
-        else:
-            self.fail("Should have raised TypeError")
-
-    # "The specifier name is a ``dotted name'' that may
-    # resolve either to ... a test case class"
-    def test_loadTestsFromName__relative_TestCase_subclass(self):
-        m = types.ModuleType('m')
-        class MyTestCase(unittest.TestCase):
-            def test(self):
-                pass
-        m.testcase_1 = MyTestCase
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromName('testcase_1', m)
-        self.assertIsInstance(suite, loader.suiteClass)
-        self.assertEqual(list(suite), [MyTestCase('test')])
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    def test_loadTestsFromName__relative_TestSuite(self):
-        m = types.ModuleType('m')
-        class MyTestCase(unittest.TestCase):
-            def test(self):
-                pass
-        m.testsuite = unittest.TestSuite([MyTestCase('test')])
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromName('testsuite', m)
-        self.assertIsInstance(suite, loader.suiteClass)
-
-        self.assertEqual(list(suite), [MyTestCase('test')])
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to
-    # ... a test method within a test case class"
-    def test_loadTestsFromName__relative_testmethod(self):
-        m = types.ModuleType('m')
-        class MyTestCase(unittest.TestCase):
-            def test(self):
-                pass
-        m.testcase_1 = MyTestCase
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromName('testcase_1.test', m)
-        self.assertIsInstance(suite, loader.suiteClass)
-
-        self.assertEqual(list(suite), [MyTestCase('test')])
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    #
-    # Does loadTestsFromName() raise the proper exception when trying to
-    # resolve "a test method within a test case class" that doesn't exist
-    # for the given name (relative to a provided module)?
-    def test_loadTestsFromName__relative_invalid_testmethod(self):
-        m = types.ModuleType('m')
-        class MyTestCase(unittest.TestCase):
-            def test(self):
-                pass
-        m.testcase_1 = MyTestCase
-
-        loader = unittest.TestLoader()
-        try:
-            loader.loadTestsFromName('testcase_1.testfoo', m)
-        except AttributeError, e:
-            self.assertEqual(str(e), "type object 'MyTestCase' has no attribute 'testfoo'")
-        else:
-            self.fail("Failed to raise AttributeError")
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to
-    # ... a callable object which returns a ... TestSuite instance"
-    def test_loadTestsFromName__callable__TestSuite(self):
-        m = types.ModuleType('m')
-        testcase_1 = unittest.FunctionTestCase(lambda: None)
-        testcase_2 = unittest.FunctionTestCase(lambda: None)
-        def return_TestSuite():
-            return unittest.TestSuite([testcase_1, testcase_2])
-        m.return_TestSuite = return_TestSuite
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromName('return_TestSuite', m)
-        self.assertIsInstance(suite, loader.suiteClass)
-        self.assertEqual(list(suite), [testcase_1, testcase_2])
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to
-    # ... a callable object which returns a TestCase ... instance"
-    def test_loadTestsFromName__callable__TestCase_instance(self):
-        m = types.ModuleType('m')
-        testcase_1 = unittest.FunctionTestCase(lambda: None)
-        def return_TestCase():
-            return testcase_1
-        m.return_TestCase = return_TestCase
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromName('return_TestCase', m)
-        self.assertIsInstance(suite, loader.suiteClass)
-        self.assertEqual(list(suite), [testcase_1])
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to
-    # ... a callable object which returns a TestCase ... instance"
-    #*****************************************************************
-    #Override the suiteClass attribute to ensure that the suiteClass
-    #attribute is used
-    def test_loadTestsFromName__callable__TestCase_instance_ProperSuiteClass(self):
-        class SubTestSuite(unittest.TestSuite):
-            pass
-        m = types.ModuleType('m')
-        testcase_1 = unittest.FunctionTestCase(lambda: None)
-        def return_TestCase():
-            return testcase_1
-        m.return_TestCase = return_TestCase
-
-        loader = unittest.TestLoader()
-        loader.suiteClass = SubTestSuite
-        suite = loader.loadTestsFromName('return_TestCase', m)
-        self.assertIsInstance(suite, loader.suiteClass)
-        self.assertEqual(list(suite), [testcase_1])
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to
-    # ... a test method within a test case class"
-    #*****************************************************************
-    #Override the suiteClass attribute to ensure that the suiteClass
-    #attribute is used
-    def test_loadTestsFromName__relative_testmethod_ProperSuiteClass(self):
-        class SubTestSuite(unittest.TestSuite):
-            pass
-        m = types.ModuleType('m')
-        class MyTestCase(unittest.TestCase):
-            def test(self):
-                pass
-        m.testcase_1 = MyTestCase
-
-        loader = unittest.TestLoader()
-        loader.suiteClass=SubTestSuite
-        suite = loader.loadTestsFromName('testcase_1.test', m)
-        self.assertIsInstance(suite, loader.suiteClass)
-
-        self.assertEqual(list(suite), [MyTestCase('test')])
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to
-    # ... a callable object which returns a TestCase or TestSuite instance"
-    #
-    # What happens if the callable returns something else?
-    def test_loadTestsFromName__callable__wrong_type(self):
-        m = types.ModuleType('m')
-        def return_wrong():
-            return 6
-        m.return_wrong = return_wrong
-
-        loader = unittest.TestLoader()
-        try:
-            loader.loadTestsFromName('return_wrong', m)
-        except TypeError:
-            pass
-        else:
-            self.fail("TestLoader.loadTestsFromName failed to raise TypeError")
-
-    # "The specifier can refer to modules and packages which have not been
-    # imported; they will be imported as a side-effect"
-    def test_loadTestsFromName__module_not_loaded(self):
-        # We're going to try to load this module as a side-effect, so it
-        # better not be loaded before we try.
-        #
-        module_name = 'unittest.test.dummy'
-        sys.modules.pop(module_name, None)
-
-        loader = unittest.TestLoader()
-        try:
-            suite = loader.loadTestsFromName(module_name)
-
-            self.assertIsInstance(suite, loader.suiteClass)
-            self.assertEqual(list(suite), [])
-
-            # module should now be loaded, thanks to loadTestsFromName()
-            self.assertIn(module_name, sys.modules)
-        finally:
-            if module_name in sys.modules:
-                del sys.modules[module_name]
-
-    ################################################################
-    ### Tests for TestLoader.loadTestsFromName()
-
-    ### Tests for TestLoader.loadTestsFromNames()
-    ################################################################
-
-    # "Similar to loadTestsFromName(), but takes a sequence of names rather
-    # than a single name."
-    #
-    # What happens if that sequence of names is empty?
-    def test_loadTestsFromNames__empty_name_list(self):
-        loader = unittest.TestLoader()
-
-        suite = loader.loadTestsFromNames([])
-        self.assertIsInstance(suite, loader.suiteClass)
-        self.assertEqual(list(suite), [])
-
-    # "Similar to loadTestsFromName(), but takes a sequence of names rather
-    # than a single name."
-    # ...
-    # "The method optionally resolves name relative to the given module"
-    #
-    # What happens if that sequence of names is empty?
-    #
-    # XXX Should this raise a ValueError or just return an empty TestSuite?
-    def test_loadTestsFromNames__relative_empty_name_list(self):
-        loader = unittest.TestLoader()
-
-        suite = loader.loadTestsFromNames([], unittest)
-        self.assertIsInstance(suite, loader.suiteClass)
-        self.assertEqual(list(suite), [])
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    #
-    # Is ValueError raised in response to an empty name?
-    def test_loadTestsFromNames__empty_name(self):
-        loader = unittest.TestLoader()
-
-        try:
-            loader.loadTestsFromNames([''])
-        except ValueError, e:
-            self.assertEqual(str(e), "Empty module name")
-        else:
-            self.fail("TestLoader.loadTestsFromNames failed to raise ValueError")
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    #
-    # What happens when presented with an impossible module name?
-    def test_loadTestsFromNames__malformed_name(self):
-        loader = unittest.TestLoader()
-
-        # XXX Should this raise ValueError or ImportError?
-        try:
-            loader.loadTestsFromNames(['abc () //'])
-        except ValueError:
-            pass
-        except ImportError:
-            pass
-        else:
-            self.fail("TestLoader.loadTestsFromNames failed to raise ValueError")
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    #
-    # What happens when no module can be found for the given name?
-    def test_loadTestsFromNames__unknown_module_name(self):
-        loader = unittest.TestLoader()
-
-        try:
-            loader.loadTestsFromNames(['sdasfasfasdf'])
-        except ImportError, e:
-            self.assertEqual(str(e), "No module named sdasfasfasdf")
-        else:
-            self.fail("TestLoader.loadTestsFromNames failed to raise ImportError")
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    #
-    # What happens when the module can be found, but not the attribute?
-    def test_loadTestsFromNames__unknown_attr_name(self):
-        loader = unittest.TestLoader()
-
-        try:
-            loader.loadTestsFromNames(['unittest.sdasfasfasdf', 'unittest'])
-        except AttributeError, e:
-            self.assertEqual(str(e), "'module' object has no attribute 'sdasfasfasdf'")
-        else:
-            self.fail("TestLoader.loadTestsFromNames failed to raise AttributeError")
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    # ...
-    # "The method optionally resolves name relative to the given module"
-    #
-    # What happens when given an unknown attribute on a specified `module`
-    # argument?
-    def test_loadTestsFromNames__unknown_name_relative_1(self):
-        loader = unittest.TestLoader()
-
-        try:
-            loader.loadTestsFromNames(['sdasfasfasdf'], unittest)
-        except AttributeError, e:
-            self.assertEqual(str(e), "'module' object has no attribute 'sdasfasfasdf'")
-        else:
-            self.fail("TestLoader.loadTestsFromName failed to raise AttributeError")
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    # ...
-    # "The method optionally resolves name relative to the given module"
-    #
-    # Do unknown attributes (relative to a provided module) still raise an
-    # exception even in the presence of valid attribute names?
-    def test_loadTestsFromNames__unknown_name_relative_2(self):
-        loader = unittest.TestLoader()
-
-        try:
-            loader.loadTestsFromNames(['TestCase', 'sdasfasfasdf'], unittest)
-        except AttributeError, e:
-            self.assertEqual(str(e), "'module' object has no attribute 'sdasfasfasdf'")
-        else:
-            self.fail("TestLoader.loadTestsFromName failed to raise AttributeError")
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    # ...
-    # "The method optionally resolves name relative to the given module"
-    #
-    # What happens when faced with the empty string?
-    #
-    # XXX This currently raises AttributeError, though ValueError is probably
-    # more appropriate
-    def test_loadTestsFromNames__relative_empty_name(self):
-        loader = unittest.TestLoader()
-
-        try:
-            loader.loadTestsFromNames([''], unittest)
-        except AttributeError:
-            pass
-        else:
-            self.fail("Failed to raise ValueError")
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    # ...
-    # "The method optionally resolves name relative to the given module"
-    #
-    # What happens when presented with an impossible attribute name?
-    def test_loadTestsFromNames__relative_malformed_name(self):
-        loader = unittest.TestLoader()
-
-        # XXX Should this raise AttributeError or ValueError?
-        try:
-            loader.loadTestsFromNames(['abc () //'], unittest)
-        except AttributeError:
-            pass
-        except ValueError:
-            pass
-        else:
-            self.fail("TestLoader.loadTestsFromNames failed to raise ValueError")
-
-    # "The method optionally resolves name relative to the given module"
-    #
-    # Does loadTestsFromNames() make sure the provided `module` is in fact
-    # a module?
-    #
-    # XXX This validation is currently not done. This flexibility should
-    # either be documented or a TypeError should be raised.
-    def test_loadTestsFromNames__relative_not_a_module(self):
-        class MyTestCase(unittest.TestCase):
-            def test(self):
-                pass
-
-        class NotAModule(object):
-            test_2 = MyTestCase
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromNames(['test_2'], NotAModule)
-
-        reference = [unittest.TestSuite([MyTestCase('test')])]
-        self.assertEqual(list(suite), reference)
-
-    # "The specifier name is a ``dotted name'' that may resolve either to
-    # a module, a test case class, a TestSuite instance, a test method
-    # within a test case class, or a callable object which returns a
-    # TestCase or TestSuite instance."
-    #
-    # Does it raise an exception if the name resolves to an invalid
-    # object?
-    def test_loadTestsFromNames__relative_bad_object(self):
-        m = types.ModuleType('m')
-        m.testcase_1 = object()
-
-        loader = unittest.TestLoader()
-        try:
-            loader.loadTestsFromNames(['testcase_1'], m)
-        except TypeError:
-            pass
-        else:
-            self.fail("Should have raised TypeError")
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to
-    # ... a test case class"
-    def test_loadTestsFromNames__relative_TestCase_subclass(self):
-        m = types.ModuleType('m')
-        class MyTestCase(unittest.TestCase):
-            def test(self):
-                pass
-        m.testcase_1 = MyTestCase
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromNames(['testcase_1'], m)
-        self.assertIsInstance(suite, loader.suiteClass)
-
-        expected = loader.suiteClass([MyTestCase('test')])
-        self.assertEqual(list(suite), [expected])
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to
-    # ... a TestSuite instance"
-    def test_loadTestsFromNames__relative_TestSuite(self):
-        m = types.ModuleType('m')
-        class MyTestCase(unittest.TestCase):
-            def test(self):
-                pass
-        m.testsuite = unittest.TestSuite([MyTestCase('test')])
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromNames(['testsuite'], m)
-        self.assertIsInstance(suite, loader.suiteClass)
-
-        self.assertEqual(list(suite), [m.testsuite])
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to ... a
-    # test method within a test case class"
-    def test_loadTestsFromNames__relative_testmethod(self):
-        m = types.ModuleType('m')
-        class MyTestCase(unittest.TestCase):
-            def test(self):
-                pass
-        m.testcase_1 = MyTestCase
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromNames(['testcase_1.test'], m)
-        self.assertIsInstance(suite, loader.suiteClass)
-
-        ref_suite = unittest.TestSuite([MyTestCase('test')])
-        self.assertEqual(list(suite), [ref_suite])
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to ... a
-    # test method within a test case class"
-    #
-    # Does the method gracefully handle names that initially look like they
-    # resolve to "a test method within a test case class" but don't?
-    def test_loadTestsFromNames__relative_invalid_testmethod(self):
-        m = types.ModuleType('m')
-        class MyTestCase(unittest.TestCase):
-            def test(self):
-                pass
-        m.testcase_1 = MyTestCase
-
-        loader = unittest.TestLoader()
-        try:
-            loader.loadTestsFromNames(['testcase_1.testfoo'], m)
-        except AttributeError, e:
-            self.assertEqual(str(e), "type object 'MyTestCase' has no attribute 'testfoo'")
-        else:
-            self.fail("Failed to raise AttributeError")
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to
-    # ... a callable object which returns a ... TestSuite instance"
-    def test_loadTestsFromNames__callable__TestSuite(self):
-        m = types.ModuleType('m')
-        testcase_1 = unittest.FunctionTestCase(lambda: None)
-        testcase_2 = unittest.FunctionTestCase(lambda: None)
-        def return_TestSuite():
-            return unittest.TestSuite([testcase_1, testcase_2])
-        m.return_TestSuite = return_TestSuite
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromNames(['return_TestSuite'], m)
-        self.assertIsInstance(suite, loader.suiteClass)
-
-        expected = unittest.TestSuite([testcase_1, testcase_2])
-        self.assertEqual(list(suite), [expected])
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to
-    # ... a callable object which returns a TestCase ... instance"
-    def test_loadTestsFromNames__callable__TestCase_instance(self):
-        m = types.ModuleType('m')
-        testcase_1 = unittest.FunctionTestCase(lambda: None)
-        def return_TestCase():
-            return testcase_1
-        m.return_TestCase = return_TestCase
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromNames(['return_TestCase'], m)
-        self.assertIsInstance(suite, loader.suiteClass)
-
-        ref_suite = unittest.TestSuite([testcase_1])
-        self.assertEqual(list(suite), [ref_suite])
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to
-    # ... a callable object which returns a TestCase or TestSuite instance"
-    #
-    # Are staticmethods handled correctly?
-    def test_loadTestsFromNames__callable__call_staticmethod(self):
-        m = types.ModuleType('m')
-        class Test1(unittest.TestCase):
-            def test(self):
-                pass
-
-        testcase_1 = Test1('test')
-        class Foo(unittest.TestCase):
-            @staticmethod
-            def foo():
-                return testcase_1
-        m.Foo = Foo
-
-        loader = unittest.TestLoader()
-        suite = loader.loadTestsFromNames(['Foo.foo'], m)
-        self.assertIsInstance(suite, loader.suiteClass)
-
-        ref_suite = unittest.TestSuite([testcase_1])
-        self.assertEqual(list(suite), [ref_suite])
-
-    # "The specifier name is a ``dotted name'' that may resolve ... to
-    # ... a callable object which returns a TestCase or TestSuite instance"
-    #
-    # What happens when the callable returns something else?
-    def test_loadTestsFromNames__callable__wrong_type(self):
-        m = types.ModuleType('m')
-        def return_wrong():
-            return 6
-        m.return_wrong = return_wrong
-
-        loader = unittest.TestLoader()
-        try:
-            loader.loadTestsFromNames(['return_wrong'], m)
-        except TypeError:
-            pass
-        else:
-            self.fail("TestLoader.loadTestsFromNames failed to raise TypeError")
-
-    # "The specifier can refer to modules and packages which have not been
-    # imported; they will be imported as a side-effect"
-    def test_loadTestsFromNames__module_not_loaded(self):
-        # We're going to try to load this module as a side-effect, so it
-        # better not be loaded before we try.
-        #
-        module_name = 'unittest.test.dummy'
-        sys.modules.pop(module_name, None)
-
-        loader = unittest.TestLoader()
-        try:
-            suite = loader.loadTestsFromNames([module_name])
-
-            self.assertIsInstance(suite, loader.suiteClass)
-            self.assertEqual(list(suite), [unittest.TestSuite()])
-
-            # module should now be loaded, thanks to loadTestsFromName()
-            self.assertIn(module_name, sys.modules)
-        finally:
-            if module_name in sys.modules:
-                del sys.modules[module_name]
-
-    ################################################################
-    ### /Tests for TestLoader.loadTestsFromNames()
-
-    ### Tests for TestLoader.getTestCaseNames()
-    ################################################################
-
-    # "Return a sorted sequence of method names found within testCaseClass"
-    #
-    # Test.foobar is defined to make sure getTestCaseNames() respects
-    # loader.testMethodPrefix
-    def test_getTestCaseNames(self):
-        class Test(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-            def foobar(self): pass
-
-        loader = unittest.TestLoader()
-
-        self.assertEqual(loader.getTestCaseNames(Test), ['test_1', 'test_2'])
-
-    # "Return a sorted sequence of method names found within testCaseClass"
-    #
-    # Does getTestCaseNames() behave appropriately if no tests are found?
-    def test_getTestCaseNames__no_tests(self):
-        class Test(unittest.TestCase):
-            def foobar(self): pass
-
-        loader = unittest.TestLoader()
-
-        self.assertEqual(loader.getTestCaseNames(Test), [])
-
-    # "Return a sorted sequence of method names found within testCaseClass"
-    #
-    # Are not-TestCases handled gracefully?
-    #
-    # XXX This should raise a TypeError, not return a list
-    #
-    # XXX It's too late in the 2.5 release cycle to fix this, but it should
-    # probably be revisited for 2.6
-    def test_getTestCaseNames__not_a_TestCase(self):
-        class BadCase(int):
-            def test_foo(self):
-                pass
-
-        loader = unittest.TestLoader()
-        names = loader.getTestCaseNames(BadCase)
-
-        self.assertEqual(names, ['test_foo'])
-
-    # "Return a sorted sequence of method names found within testCaseClass"
-    #
-    # Make sure inherited names are handled.
-    #
-    # TestP.foobar is defined to make sure getTestCaseNames() respects
-    # loader.testMethodPrefix
-    def test_getTestCaseNames__inheritance(self):
-        class TestP(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-            def foobar(self): pass
-
-        class TestC(TestP):
-            def test_1(self): pass
-            def test_3(self): pass
-
-        loader = unittest.TestLoader()
-
-        names = ['test_1', 'test_2', 'test_3']
-        self.assertEqual(loader.getTestCaseNames(TestC), names)
-
-    ################################################################
-    ### /Tests for TestLoader.getTestCaseNames()
-
-    ### Tests for TestLoader.testMethodPrefix
-    ################################################################
-
-    # "String giving the prefix of method names which will be interpreted as
-    # test methods"
-    #
-    # Implicit in the documentation is that testMethodPrefix is respected by
-    # all loadTestsFrom* methods.
-    def test_testMethodPrefix__loadTestsFromTestCase(self):
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-            def foo_bar(self): pass
-
-        tests_1 = unittest.TestSuite([Foo('foo_bar')])
-        tests_2 = unittest.TestSuite([Foo('test_1'), Foo('test_2')])
-
-        loader = unittest.TestLoader()
-        loader.testMethodPrefix = 'foo'
-        self.assertEqual(loader.loadTestsFromTestCase(Foo), tests_1)
-
-        loader.testMethodPrefix = 'test'
-        self.assertEqual(loader.loadTestsFromTestCase(Foo), tests_2)
-
-    # "String giving the prefix of method names which will be interpreted as
-    # test methods"
-    #
-    # Implicit in the documentation is that testMethodPrefix is respected by
-    # all loadTestsFrom* methods.
-    def test_testMethodPrefix__loadTestsFromModule(self):
-        m = types.ModuleType('m')
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-            def foo_bar(self): pass
-        m.Foo = Foo
-
-        tests_1 = [unittest.TestSuite([Foo('foo_bar')])]
-        tests_2 = [unittest.TestSuite([Foo('test_1'), Foo('test_2')])]
-
-        loader = unittest.TestLoader()
-        loader.testMethodPrefix = 'foo'
-        self.assertEqual(list(loader.loadTestsFromModule(m)), tests_1)
-
-        loader.testMethodPrefix = 'test'
-        self.assertEqual(list(loader.loadTestsFromModule(m)), tests_2)
-
-    # "String giving the prefix of method names which will be interpreted as
-    # test methods"
-    #
-    # Implicit in the documentation is that testMethodPrefix is respected by
-    # all loadTestsFrom* methods.
-    def test_testMethodPrefix__loadTestsFromName(self):
-        m = types.ModuleType('m')
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-            def foo_bar(self): pass
-        m.Foo = Foo
-
-        tests_1 = unittest.TestSuite([Foo('foo_bar')])
-        tests_2 = unittest.TestSuite([Foo('test_1'), Foo('test_2')])
-
-        loader = unittest.TestLoader()
-        loader.testMethodPrefix = 'foo'
-        self.assertEqual(loader.loadTestsFromName('Foo', m), tests_1)
-
-        loader.testMethodPrefix = 'test'
-        self.assertEqual(loader.loadTestsFromName('Foo', m), tests_2)
-
-    # "String giving the prefix of method names which will be interpreted as
-    # test methods"
-    #
-    # Implicit in the documentation is that testMethodPrefix is respected by
-    # all loadTestsFrom* methods.
-    def test_testMethodPrefix__loadTestsFromNames(self):
-        m = types.ModuleType('m')
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-            def foo_bar(self): pass
-        m.Foo = Foo
-
-        tests_1 = unittest.TestSuite([unittest.TestSuite([Foo('foo_bar')])])
-        tests_2 = unittest.TestSuite([Foo('test_1'), Foo('test_2')])
-        tests_2 = unittest.TestSuite([tests_2])
-
-        loader = unittest.TestLoader()
-        loader.testMethodPrefix = 'foo'
-        self.assertEqual(loader.loadTestsFromNames(['Foo'], m), tests_1)
-
-        loader.testMethodPrefix = 'test'
-        self.assertEqual(loader.loadTestsFromNames(['Foo'], m), tests_2)
-
-    # "The default value is 'test'"
-    def test_testMethodPrefix__default_value(self):
-        loader = unittest.TestLoader()
-        self.assertTrue(loader.testMethodPrefix == 'test')
-
-    ################################################################
-    ### /Tests for TestLoader.testMethodPrefix
-
-    ### Tests for TestLoader.sortTestMethodsUsing
-    ################################################################
-
-    # "Function to be used to compare method names when sorting them in
-    # getTestCaseNames() and all the loadTestsFromX() methods"
-    def test_sortTestMethodsUsing__loadTestsFromTestCase(self):
-        def reversed_cmp(x, y):
-            return -cmp(x, y)
-
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-
-        loader = unittest.TestLoader()
-        loader.sortTestMethodsUsing = reversed_cmp
-
-        tests = loader.suiteClass([Foo('test_2'), Foo('test_1')])
-        self.assertEqual(loader.loadTestsFromTestCase(Foo), tests)
-
-    # "Function to be used to compare method names when sorting them in
-    # getTestCaseNames() and all the loadTestsFromX() methods"
-    def test_sortTestMethodsUsing__loadTestsFromModule(self):
-        def reversed_cmp(x, y):
-            return -cmp(x, y)
-
-        m = types.ModuleType('m')
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-        m.Foo = Foo
-
-        loader = unittest.TestLoader()
-        loader.sortTestMethodsUsing = reversed_cmp
-
-        tests = [loader.suiteClass([Foo('test_2'), Foo('test_1')])]
-        self.assertEqual(list(loader.loadTestsFromModule(m)), tests)
-
-    # "Function to be used to compare method names when sorting them in
-    # getTestCaseNames() and all the loadTestsFromX() methods"
-    def test_sortTestMethodsUsing__loadTestsFromName(self):
-        def reversed_cmp(x, y):
-            return -cmp(x, y)
-
-        m = types.ModuleType('m')
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-        m.Foo = Foo
-
-        loader = unittest.TestLoader()
-        loader.sortTestMethodsUsing = reversed_cmp
-
-        tests = loader.suiteClass([Foo('test_2'), Foo('test_1')])
-        self.assertEqual(loader.loadTestsFromName('Foo', m), tests)
-
-    # "Function to be used to compare method names when sorting them in
-    # getTestCaseNames() and all the loadTestsFromX() methods"
-    def test_sortTestMethodsUsing__loadTestsFromNames(self):
-        def reversed_cmp(x, y):
-            return -cmp(x, y)
-
-        m = types.ModuleType('m')
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-        m.Foo = Foo
-
-        loader = unittest.TestLoader()
-        loader.sortTestMethodsUsing = reversed_cmp
-
-        tests = [loader.suiteClass([Foo('test_2'), Foo('test_1')])]
-        self.assertEqual(list(loader.loadTestsFromNames(['Foo'], m)), tests)
-
-    # "Function to be used to compare method names when sorting them in
-    # getTestCaseNames()"
-    #
-    # Does it actually affect getTestCaseNames()?
-    def test_sortTestMethodsUsing__getTestCaseNames(self):
-        def reversed_cmp(x, y):
-            return -cmp(x, y)
-
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-
-        loader = unittest.TestLoader()
-        loader.sortTestMethodsUsing = reversed_cmp
-
-        test_names = ['test_2', 'test_1']
-        self.assertEqual(loader.getTestCaseNames(Foo), test_names)
-
-    # "The default value is the built-in cmp() function"
-    def test_sortTestMethodsUsing__default_value(self):
-        loader = unittest.TestLoader()
-        self.assertTrue(loader.sortTestMethodsUsing is cmp)
-
-    # "it can be set to None to disable the sort."
-    #
-    # XXX How is this different from reassigning cmp? Are the tests returned
-    # in a random order or something? This behaviour should die
-    def test_sortTestMethodsUsing__None(self):
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-
-        loader = unittest.TestLoader()
-        loader.sortTestMethodsUsing = None
-
-        test_names = ['test_2', 'test_1']
-        self.assertEqual(set(loader.getTestCaseNames(Foo)), set(test_names))
-
-    ################################################################
-    ### /Tests for TestLoader.sortTestMethodsUsing
-
-    ### Tests for TestLoader.suiteClass
-    ################################################################
-
-    # "Callable object that constructs a test suite from a list of tests."
-    def test_suiteClass__loadTestsFromTestCase(self):
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-            def foo_bar(self): pass
-
-        tests = [Foo('test_1'), Foo('test_2')]
-
-        loader = unittest.TestLoader()
-        loader.suiteClass = list
-        self.assertEqual(loader.loadTestsFromTestCase(Foo), tests)
-
-    # It is implicit in the documentation for TestLoader.suiteClass that
-    # all TestLoader.loadTestsFrom* methods respect it. Let's make sure
-    def test_suiteClass__loadTestsFromModule(self):
-        m = types.ModuleType('m')
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-            def foo_bar(self): pass
-        m.Foo = Foo
-
-        tests = [[Foo('test_1'), Foo('test_2')]]
-
-        loader = unittest.TestLoader()
-        loader.suiteClass = list
-        self.assertEqual(loader.loadTestsFromModule(m), tests)
-
-    # It is implicit in the documentation for TestLoader.suiteClass that
-    # all TestLoader.loadTestsFrom* methods respect it. Let's make sure
-    def test_suiteClass__loadTestsFromName(self):
-        m = types.ModuleType('m')
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-            def foo_bar(self): pass
-        m.Foo = Foo
-
-        tests = [Foo('test_1'), Foo('test_2')]
-
-        loader = unittest.TestLoader()
-        loader.suiteClass = list
-        self.assertEqual(loader.loadTestsFromName('Foo', m), tests)
-
-    # It is implicit in the documentation for TestLoader.suiteClass that
-    # all TestLoader.loadTestsFrom* methods respect it. Let's make sure
-    def test_suiteClass__loadTestsFromNames(self):
-        m = types.ModuleType('m')
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-            def foo_bar(self): pass
-        m.Foo = Foo
-
-        tests = [[Foo('test_1'), Foo('test_2')]]
-
-        loader = unittest.TestLoader()
-        loader.suiteClass = list
-        self.assertEqual(loader.loadTestsFromNames(['Foo'], m), tests)
-
-    # "The default value is the TestSuite class"
-    def test_suiteClass__default_value(self):
-        loader = unittest.TestLoader()
-        self.assertTrue(loader.suiteClass is unittest.TestSuite)
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_program.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_program.py
deleted file mode 100644
index a3cb9a5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_program.py
+++ /dev/null
@@ -1,255 +0,0 @@
-from cStringIO import StringIO
-
-import os
-import sys
-import unittest
-
-
-class Test_TestProgram(unittest.TestCase):
-
-    def test_discovery_from_dotted_path(self):
-        loader = unittest.TestLoader()
-
-        tests = [self]
-        expectedPath = os.path.abspath(os.path.dirname(unittest.test.__file__))
-
-        self.wasRun = False
-        def _find_tests(start_dir, pattern):
-            self.wasRun = True
-            self.assertEqual(start_dir, expectedPath)
-            return tests
-        loader._find_tests = _find_tests
-        suite = loader.discover('unittest.test')
-        self.assertTrue(self.wasRun)
-        self.assertEqual(suite._tests, tests)
-
-    # Horrible white box test
-    def testNoExit(self):
-        result = object()
-        test = object()
-
-        class FakeRunner(object):
-            def run(self, test):
-                self.test = test
-                return result
-
-        runner = FakeRunner()
-
-        oldParseArgs = unittest.TestProgram.parseArgs
-        def restoreParseArgs():
-            unittest.TestProgram.parseArgs = oldParseArgs
-        unittest.TestProgram.parseArgs = lambda *args: None
-        self.addCleanup(restoreParseArgs)
-
-        def removeTest():
-            del unittest.TestProgram.test
-        unittest.TestProgram.test = test
-        self.addCleanup(removeTest)
-
-        program = unittest.TestProgram(testRunner=runner, exit=False, verbosity=2)
-
-        self.assertEqual(program.result, result)
-        self.assertEqual(runner.test, test)
-        self.assertEqual(program.verbosity, 2)
-
-    class FooBar(unittest.TestCase):
-        def testPass(self):
-            assert True
-        def testFail(self):
-            assert False
-
-    class FooBarLoader(unittest.TestLoader):
-        """Test loader that returns a suite containing FooBar."""
-        def loadTestsFromModule(self, module):
-            return self.suiteClass(
-                [self.loadTestsFromTestCase(Test_TestProgram.FooBar)])
-
-
-    def test_NonExit(self):
-        program = unittest.main(exit=False,
-                                argv=["foobar"],
-                                testRunner=unittest.TextTestRunner(stream=StringIO()),
-                                testLoader=self.FooBarLoader())
-        self.assertTrue(hasattr(program, 'result'))
-
-
-    def test_Exit(self):
-        self.assertRaises(
-            SystemExit,
-            unittest.main,
-            argv=["foobar"],
-            testRunner=unittest.TextTestRunner(stream=StringIO()),
-            exit=True,
-            testLoader=self.FooBarLoader())
-
-
-    def test_ExitAsDefault(self):
-        self.assertRaises(
-            SystemExit,
-            unittest.main,
-            argv=["foobar"],
-            testRunner=unittest.TextTestRunner(stream=StringIO()),
-            testLoader=self.FooBarLoader())
-
-
-class InitialisableProgram(unittest.TestProgram):
-    exit = False
-    result = None
-    verbosity = 1
-    defaultTest = None
-    testRunner = None
-    testLoader = unittest.defaultTestLoader
-    progName = 'test'
-    test = 'test'
-    def __init__(self, *args):
-        pass
-
-RESULT = object()
-
-class FakeRunner(object):
-    initArgs = None
-    test = None
-    raiseError = False
-
-    def __init__(self, **kwargs):
-        FakeRunner.initArgs = kwargs
-        if FakeRunner.raiseError:
-            FakeRunner.raiseError = False
-            raise TypeError
-
-    def run(self, test):
-        FakeRunner.test = test
-        return RESULT
-
-class TestCommandLineArgs(unittest.TestCase):
-
-    def setUp(self):
-        self.program = InitialisableProgram()
-        self.program.createTests = lambda: None
-        FakeRunner.initArgs = None
-        FakeRunner.test = None
-        FakeRunner.raiseError = False
-
-    def testHelpAndUnknown(self):
-        program = self.program
-        def usageExit(msg=None):
-            program.msg = msg
-            program.exit = True
-        program.usageExit = usageExit
-
-        for opt in '-h', '-H', '--help':
-            program.exit = False
-            program.parseArgs([None, opt])
-            self.assertTrue(program.exit)
-            self.assertIsNone(program.msg)
-
-        program.parseArgs([None, '-$'])
-        self.assertTrue(program.exit)
-        self.assertIsNotNone(program.msg)
-
-    def testVerbosity(self):
-        program = self.program
-
-        for opt in '-q', '--quiet':
-            program.verbosity = 1
-            program.parseArgs([None, opt])
-            self.assertEqual(program.verbosity, 0)
-
-        for opt in '-v', '--verbose':
-            program.verbosity = 1
-            program.parseArgs([None, opt])
-            self.assertEqual(program.verbosity, 2)
-
-    def testBufferCatchFailfast(self):
-        program = self.program
-        for arg, attr in (('buffer', 'buffer'), ('failfast', 'failfast'),
-                      ('catch', 'catchbreak')):
-            if attr == 'catch' and not hasInstallHandler:
-                continue
-
-            short_opt = '-%s' % arg[0]
-            long_opt = '--%s' % arg
-            for opt in short_opt, long_opt:
-                setattr(program, attr, None)
-
-                program.parseArgs([None, opt])
-                self.assertTrue(getattr(program, attr))
-
-            for opt in short_opt, long_opt:
-                not_none = object()
-                setattr(program, attr, not_none)
-
-                program.parseArgs([None, opt])
-                self.assertEqual(getattr(program, attr), not_none)
-
-    def testRunTestsRunnerClass(self):
-        program = self.program
-
-        program.testRunner = FakeRunner
-        program.verbosity = 'verbosity'
-        program.failfast = 'failfast'
-        program.buffer = 'buffer'
-
-        program.runTests()
-
-        self.assertEqual(FakeRunner.initArgs, {'verbosity': 'verbosity',
-                                                'failfast': 'failfast',
-                                                'buffer': 'buffer'})
-        self.assertEqual(FakeRunner.test, 'test')
-        self.assertIs(program.result, RESULT)
-
-    def testRunTestsRunnerInstance(self):
-        program = self.program
-
-        program.testRunner = FakeRunner()
-        FakeRunner.initArgs = None
-
-        program.runTests()
-
-        # A new FakeRunner should not have been instantiated
-        self.assertIsNone(FakeRunner.initArgs)
-
-        self.assertEqual(FakeRunner.test, 'test')
-        self.assertIs(program.result, RESULT)
-
-    def testRunTestsOldRunnerClass(self):
-        program = self.program
-
-        FakeRunner.raiseError = True
-        program.testRunner = FakeRunner
-        program.verbosity = 'verbosity'
-        program.failfast = 'failfast'
-        program.buffer = 'buffer'
-        program.test = 'test'
-
-        program.runTests()
-
-        # If initializing raises a type error it should be retried
-        # without the new keyword arguments
-        self.assertEqual(FakeRunner.initArgs, {})
-        self.assertEqual(FakeRunner.test, 'test')
-        self.assertIs(program.result, RESULT)
-
-    def testCatchBreakInstallsHandler(self):
-        module = sys.modules['unittest.main']
-        original = module.installHandler
-        def restore():
-            module.installHandler = original
-        self.addCleanup(restore)
-
-        self.installed = False
-        def fakeInstallHandler():
-            self.installed = True
-        module.installHandler = fakeInstallHandler
-
-        program = self.program
-        program.catchbreak = True
-
-        program.testRunner = FakeRunner
-
-        program.runTests()
-        self.assertTrue(self.installed)
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_result.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_result.py
deleted file mode 100644
index 042af04..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_result.py
+++ /dev/null
@@ -1,567 +0,0 @@
-import sys
-import textwrap
-from StringIO import StringIO
-from test import test_support
-
-import traceback
-import unittest
-
-
-class Test_TestResult(unittest.TestCase):
-    # Note: there are not separate tests for TestResult.wasSuccessful(),
-    # TestResult.errors, TestResult.failures, TestResult.testsRun or
-    # TestResult.shouldStop because these only have meaning in terms of
-    # other TestResult methods.
-    #
-    # Accordingly, tests for the aforenamed attributes are incorporated
-    # in with the tests for the defining methods.
-    ################################################################
-
-    def test_init(self):
-        result = unittest.TestResult()
-
-        self.assertTrue(result.wasSuccessful())
-        self.assertEqual(len(result.errors), 0)
-        self.assertEqual(len(result.failures), 0)
-        self.assertEqual(result.testsRun, 0)
-        self.assertEqual(result.shouldStop, False)
-        self.assertIsNone(result._stdout_buffer)
-        self.assertIsNone(result._stderr_buffer)
-
-
-    # "This method can be called to signal that the set of tests being
-    # run should be aborted by setting the TestResult's shouldStop
-    # attribute to True."
-    def test_stop(self):
-        result = unittest.TestResult()
-
-        result.stop()
-
-        self.assertEqual(result.shouldStop, True)
-
-    # "Called when the test case test is about to be run. The default
-    # implementation simply increments the instance's testsRun counter."
-    def test_startTest(self):
-        class Foo(unittest.TestCase):
-            def test_1(self):
-                pass
-
-        test = Foo('test_1')
-
-        result = unittest.TestResult()
-
-        result.startTest(test)
-
-        self.assertTrue(result.wasSuccessful())
-        self.assertEqual(len(result.errors), 0)
-        self.assertEqual(len(result.failures), 0)
-        self.assertEqual(result.testsRun, 1)
-        self.assertEqual(result.shouldStop, False)
-
-        result.stopTest(test)
-
-    # "Called after the test case test has been executed, regardless of
-    # the outcome. The default implementation does nothing."
-    def test_stopTest(self):
-        class Foo(unittest.TestCase):
-            def test_1(self):
-                pass
-
-        test = Foo('test_1')
-
-        result = unittest.TestResult()
-
-        result.startTest(test)
-
-        self.assertTrue(result.wasSuccessful())
-        self.assertEqual(len(result.errors), 0)
-        self.assertEqual(len(result.failures), 0)
-        self.assertEqual(result.testsRun, 1)
-        self.assertEqual(result.shouldStop, False)
-
-        result.stopTest(test)
-
-        # Same tests as above; make sure nothing has changed
-        self.assertTrue(result.wasSuccessful())
-        self.assertEqual(len(result.errors), 0)
-        self.assertEqual(len(result.failures), 0)
-        self.assertEqual(result.testsRun, 1)
-        self.assertEqual(result.shouldStop, False)
-
-    # "Called before and after tests are run. The default implementation does nothing."
-    def test_startTestRun_stopTestRun(self):
-        result = unittest.TestResult()
-        result.startTestRun()
-        result.stopTestRun()
-
-    # "addSuccess(test)"
-    # ...
-    # "Called when the test case test succeeds"
-    # ...
-    # "wasSuccessful() - Returns True if all tests run so far have passed,
-    # otherwise returns False"
-    # ...
-    # "testsRun - The total number of tests run so far."
-    # ...
-    # "errors - A list containing 2-tuples of TestCase instances and
-    # formatted tracebacks. Each tuple represents a test which raised an
-    # unexpected exception. Contains formatted
-    # tracebacks instead of sys.exc_info() results."
-    # ...
-    # "failures - A list containing 2-tuples of TestCase instances and
-    # formatted tracebacks. Each tuple represents a test where a failure was
-    # explicitly signalled using the TestCase.fail*() or TestCase.assert*()
-    # methods. Contains formatted tracebacks instead
-    # of sys.exc_info() results."
-    def test_addSuccess(self):
-        class Foo(unittest.TestCase):
-            def test_1(self):
-                pass
-
-        test = Foo('test_1')
-
-        result = unittest.TestResult()
-
-        result.startTest(test)
-        result.addSuccess(test)
-        result.stopTest(test)
-
-        self.assertTrue(result.wasSuccessful())
-        self.assertEqual(len(result.errors), 0)
-        self.assertEqual(len(result.failures), 0)
-        self.assertEqual(result.testsRun, 1)
-        self.assertEqual(result.shouldStop, False)
-
-    # "addFailure(test, err)"
-    # ...
-    # "Called when the test case test signals a failure. err is a tuple of
-    # the form returned by sys.exc_info(): (type, value, traceback)"
-    # ...
-    # "wasSuccessful() - Returns True if all tests run so far have passed,
-    # otherwise returns False"
-    # ...
-    # "testsRun - The total number of tests run so far."
-    # ...
-    # "errors - A list containing 2-tuples of TestCase instances and
-    # formatted tracebacks. Each tuple represents a test which raised an
-    # unexpected exception. Contains formatted
-    # tracebacks instead of sys.exc_info() results."
-    # ...
-    # "failures - A list containing 2-tuples of TestCase instances and
-    # formatted tracebacks. Each tuple represents a test where a failure was
-    # explicitly signalled using the TestCase.fail*() or TestCase.assert*()
-    # methods. Contains formatted tracebacks instead
-    # of sys.exc_info() results."
-    def test_addFailure(self):
-        class Foo(unittest.TestCase):
-            def test_1(self):
-                pass
-
-        test = Foo('test_1')
-        try:
-            test.fail("foo")
-        except:
-            exc_info_tuple = sys.exc_info()
-
-        result = unittest.TestResult()
-
-        result.startTest(test)
-        result.addFailure(test, exc_info_tuple)
-        result.stopTest(test)
-
-        self.assertFalse(result.wasSuccessful())
-        self.assertEqual(len(result.errors), 0)
-        self.assertEqual(len(result.failures), 1)
-        self.assertEqual(result.testsRun, 1)
-        self.assertEqual(result.shouldStop, False)
-
-        test_case, formatted_exc = result.failures[0]
-        self.assertTrue(test_case is test)
-        self.assertIsInstance(formatted_exc, str)
-
-    # "addError(test, err)"
-    # ...
-    # "Called when the test case test raises an unexpected exception err
-    # is a tuple of the form returned by sys.exc_info():
-    # (type, value, traceback)"
-    # ...
-    # "wasSuccessful() - Returns True if all tests run so far have passed,
-    # otherwise returns False"
-    # ...
-    # "testsRun - The total number of tests run so far."
-    # ...
-    # "errors - A list containing 2-tuples of TestCase instances and
-    # formatted tracebacks. Each tuple represents a test which raised an
-    # unexpected exception. Contains formatted
-    # tracebacks instead of sys.exc_info() results."
-    # ...
-    # "failures - A list containing 2-tuples of TestCase instances and
-    # formatted tracebacks. Each tuple represents a test where a failure was
-    # explicitly signalled using the TestCase.fail*() or TestCase.assert*()
-    # methods. Contains formatted tracebacks instead
-    # of sys.exc_info() results."
-    def test_addError(self):
-        class Foo(unittest.TestCase):
-            def test_1(self):
-                pass
-
-        test = Foo('test_1')
-        try:
-            raise TypeError()
-        except:
-            exc_info_tuple = sys.exc_info()
-
-        result = unittest.TestResult()
-
-        result.startTest(test)
-        result.addError(test, exc_info_tuple)
-        result.stopTest(test)
-
-        self.assertFalse(result.wasSuccessful())
-        self.assertEqual(len(result.errors), 1)
-        self.assertEqual(len(result.failures), 0)
-        self.assertEqual(result.testsRun, 1)
-        self.assertEqual(result.shouldStop, False)
-
-        test_case, formatted_exc = result.errors[0]
-        self.assertTrue(test_case is test)
-        self.assertIsInstance(formatted_exc, str)
-
-    def testGetDescriptionWithoutDocstring(self):
-        result = unittest.TextTestResult(None, True, 1)
-        self.assertEqual(
-                result.getDescription(self),
-                'testGetDescriptionWithoutDocstring (' + __name__ +
-                '.Test_TestResult)')
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def testGetDescriptionWithOneLineDocstring(self):
-        """Tests getDescription() for a method with a docstring."""
-        result = unittest.TextTestResult(None, True, 1)
-        self.assertEqual(
-                result.getDescription(self),
-               ('testGetDescriptionWithOneLineDocstring '
-                '(' + __name__ + '.Test_TestResult)\n'
-                'Tests getDescription() for a method with a docstring.'))
-
-    @unittest.skipIf(sys.flags.optimize >= 2,
-                     "Docstrings are omitted with -O2 and above")
-    def testGetDescriptionWithMultiLineDocstring(self):
-        """Tests getDescription() for a method with a longer docstring.
-        The second line of the docstring.
-        """
-        result = unittest.TextTestResult(None, True, 1)
-        self.assertEqual(
-                result.getDescription(self),
-               ('testGetDescriptionWithMultiLineDocstring '
-                '(' + __name__ + '.Test_TestResult)\n'
-                'Tests getDescription() for a method with a longer '
-                'docstring.'))
-
-    def testStackFrameTrimming(self):
-        class Frame(object):
-            class tb_frame(object):
-                f_globals = {}
-        result = unittest.TestResult()
-        self.assertFalse(result._is_relevant_tb_level(Frame))
-
-        Frame.tb_frame.f_globals['__unittest'] = True
-        self.assertTrue(result._is_relevant_tb_level(Frame))
-
-    def testFailFast(self):
-        result = unittest.TestResult()
-        result._exc_info_to_string = lambda *_: ''
-        result.failfast = True
-        result.addError(None, None)
-        self.assertTrue(result.shouldStop)
-
-        result = unittest.TestResult()
-        result._exc_info_to_string = lambda *_: ''
-        result.failfast = True
-        result.addFailure(None, None)
-        self.assertTrue(result.shouldStop)
-
-        result = unittest.TestResult()
-        result._exc_info_to_string = lambda *_: ''
-        result.failfast = True
-        result.addUnexpectedSuccess(None)
-        self.assertTrue(result.shouldStop)
-
-    def testFailFastSetByRunner(self):
-        runner = unittest.TextTestRunner(stream=StringIO(), failfast=True)
-        def test(result):
-            self.assertTrue(result.failfast)
-        runner.run(test)
-
-
-classDict = dict(unittest.TestResult.__dict__)
-for m in ('addSkip', 'addExpectedFailure', 'addUnexpectedSuccess',
-           '__init__'):
-    del classDict[m]
-
-def __init__(self, stream=None, descriptions=None, verbosity=None):
-    self.failures = []
-    self.errors = []
-    self.testsRun = 0
-    self.shouldStop = False
-    self.buffer = False
-
-classDict['__init__'] = __init__
-OldResult = type('OldResult', (object,), classDict)
-
-class Test_OldTestResult(unittest.TestCase):
-
-    def assertOldResultWarning(self, test, failures):
-        with test_support.check_warnings(("TestResult has no add.+ method,",
-                                          RuntimeWarning)):
-            result = OldResult()
-            test.run(result)
-            self.assertEqual(len(result.failures), failures)
-
-    def testOldTestResult(self):
-        class Test(unittest.TestCase):
-            def testSkip(self):
-                self.skipTest('foobar')
-            @unittest.expectedFailure
-            def testExpectedFail(self):
-                raise TypeError
-            @unittest.expectedFailure
-            def testUnexpectedSuccess(self):
-                pass
-
-        for test_name, should_pass in (('testSkip', True),
-                                       ('testExpectedFail', True),
-                                       ('testUnexpectedSuccess', False)):
-            test = Test(test_name)
-            self.assertOldResultWarning(test, int(not should_pass))
-
-    def testOldTestTesultSetup(self):
-        class Test(unittest.TestCase):
-            def setUp(self):
-                self.skipTest('no reason')
-            def testFoo(self):
-                pass
-        self.assertOldResultWarning(Test('testFoo'), 0)
-
-    def testOldTestResultClass(self):
-        @unittest.skip('no reason')
-        class Test(unittest.TestCase):
-            def testFoo(self):
-                pass
-        self.assertOldResultWarning(Test('testFoo'), 0)
-
-    def testOldResultWithRunner(self):
-        class Test(unittest.TestCase):
-            def testFoo(self):
-                pass
-        runner = unittest.TextTestRunner(resultclass=OldResult,
-                                          stream=StringIO())
-        # This will raise an exception if TextTestRunner can't handle old
-        # test result objects
-        runner.run(Test('testFoo'))
-
-
-class MockTraceback(object):
-    @staticmethod
-    def format_exception(*_):
-        return ['A traceback']
-
-def restore_traceback():
-    unittest.result.traceback = traceback
-
-
-class TestOutputBuffering(unittest.TestCase):
-
-    def setUp(self):
-        self._real_out = sys.stdout
-        self._real_err = sys.stderr
-
-    def tearDown(self):
-        sys.stdout = self._real_out
-        sys.stderr = self._real_err
-
-    def testBufferOutputOff(self):
-        real_out = self._real_out
-        real_err = self._real_err
-
-        result = unittest.TestResult()
-        self.assertFalse(result.buffer)
-
-        self.assertIs(real_out, sys.stdout)
-        self.assertIs(real_err, sys.stderr)
-
-        result.startTest(self)
-
-        self.assertIs(real_out, sys.stdout)
-        self.assertIs(real_err, sys.stderr)
-
-    def testBufferOutputStartTestAddSuccess(self):
-        real_out = self._real_out
-        real_err = self._real_err
-
-        result = unittest.TestResult()
-        self.assertFalse(result.buffer)
-
-        result.buffer = True
-
-        self.assertIs(real_out, sys.stdout)
-        self.assertIs(real_err, sys.stderr)
-
-        result.startTest(self)
-
-        self.assertIsNot(real_out, sys.stdout)
-        self.assertIsNot(real_err, sys.stderr)
-        self.assertIsInstance(sys.stdout, StringIO)
-        self.assertIsInstance(sys.stderr, StringIO)
-        self.assertIsNot(sys.stdout, sys.stderr)
-
-        out_stream = sys.stdout
-        err_stream = sys.stderr
-
-        result._original_stdout = StringIO()
-        result._original_stderr = StringIO()
-
-        print 'foo'
-        print >> sys.stderr, 'bar'
-
-        self.assertEqual(out_stream.getvalue(), 'foo\n')
-        self.assertEqual(err_stream.getvalue(), 'bar\n')
-
-        self.assertEqual(result._original_stdout.getvalue(), '')
-        self.assertEqual(result._original_stderr.getvalue(), '')
-
-        result.addSuccess(self)
-        result.stopTest(self)
-
-        self.assertIs(sys.stdout, result._original_stdout)
-        self.assertIs(sys.stderr, result._original_stderr)
-
-        self.assertEqual(result._original_stdout.getvalue(), '')
-        self.assertEqual(result._original_stderr.getvalue(), '')
-
-        self.assertEqual(out_stream.getvalue(), '')
-        self.assertEqual(err_stream.getvalue(), '')
-
-
-    def getStartedResult(self):
-        result = unittest.TestResult()
-        result.buffer = True
-        result.startTest(self)
-        return result
-
-    def testBufferOutputAddErrorOrFailure(self):
-        unittest.result.traceback = MockTraceback
-        self.addCleanup(restore_traceback)
-
-        for message_attr, add_attr, include_error in [
-            ('errors', 'addError', True),
-            ('failures', 'addFailure', False),
-            ('errors', 'addError', True),
-            ('failures', 'addFailure', False)
-        ]:
-            result = self.getStartedResult()
-            buffered_out = sys.stdout
-            buffered_err = sys.stderr
-            result._original_stdout = StringIO()
-            result._original_stderr = StringIO()
-
-            print >> sys.stdout, 'foo'
-            if include_error:
-                print >> sys.stderr, 'bar'
-
-
-            addFunction = getattr(result, add_attr)
-            addFunction(self, (None, None, None))
-            result.stopTest(self)
-
-            result_list = getattr(result, message_attr)
-            self.assertEqual(len(result_list), 1)
-
-            test, message = result_list[0]
-            expectedOutMessage = textwrap.dedent("""
-                Stdout:
-                foo
-            """)
-            expectedErrMessage = ''
-            if include_error:
-                expectedErrMessage = textwrap.dedent("""
-                Stderr:
-                bar
-            """)
-            expectedFullMessage = 'A traceback%s%s' % (expectedOutMessage, expectedErrMessage)
-
-            self.assertIs(test, self)
-            self.assertEqual(result._original_stdout.getvalue(), expectedOutMessage)
-            self.assertEqual(result._original_stderr.getvalue(), expectedErrMessage)
-            self.assertMultiLineEqual(message, expectedFullMessage)
-
-    def testBufferSetupClass(self):
-        result = unittest.TestResult()
-        result.buffer = True
-
-        class Foo(unittest.TestCase):
-            @classmethod
-            def setUpClass(cls):
-                1//0
-            def test_foo(self):
-                pass
-        suite = unittest.TestSuite([Foo('test_foo')])
-        suite(result)
-        self.assertEqual(len(result.errors), 1)
-
-    def testBufferTearDownClass(self):
-        result = unittest.TestResult()
-        result.buffer = True
-
-        class Foo(unittest.TestCase):
-            @classmethod
-            def tearDownClass(cls):
-                1//0
-            def test_foo(self):
-                pass
-        suite = unittest.TestSuite([Foo('test_foo')])
-        suite(result)
-        self.assertEqual(len(result.errors), 1)
-
-    def testBufferSetUpModule(self):
-        result = unittest.TestResult()
-        result.buffer = True
-
-        class Foo(unittest.TestCase):
-            def test_foo(self):
-                pass
-        class Module(object):
-            @staticmethod
-            def setUpModule():
-                1//0
-
-        Foo.__module__ = 'Module'
-        sys.modules['Module'] = Module
-        self.addCleanup(sys.modules.pop, 'Module')
-        suite = unittest.TestSuite([Foo('test_foo')])
-        suite(result)
-        self.assertEqual(len(result.errors), 1)
-
-    def testBufferTearDownModule(self):
-        result = unittest.TestResult()
-        result.buffer = True
-
-        class Foo(unittest.TestCase):
-            def test_foo(self):
-                pass
-        class Module(object):
-            @staticmethod
-            def tearDownModule():
-                1//0
-
-        Foo.__module__ = 'Module'
-        sys.modules['Module'] = Module
-        self.addCleanup(sys.modules.pop, 'Module')
-        suite = unittest.TestSuite([Foo('test_foo')])
-        suite(result)
-        self.assertEqual(len(result.errors), 1)
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_runner.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_runner.py
deleted file mode 100644
index 0cd82c4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_runner.py
+++ /dev/null
@@ -1,253 +0,0 @@
-import unittest
-
-from cStringIO import StringIO
-import pickle
-
-from .support import LoggingResult, ResultWithNoStartTestRunStopTestRun
-
-
-class TestCleanUp(unittest.TestCase):
-
-    def testCleanUp(self):
-        class TestableTest(unittest.TestCase):
-            def testNothing(self):
-                pass
-
-        test = TestableTest('testNothing')
-        self.assertEqual(test._cleanups, [])
-
-        cleanups = []
-
-        def cleanup1(*args, **kwargs):
-            cleanups.append((1, args, kwargs))
-
-        def cleanup2(*args, **kwargs):
-            cleanups.append((2, args, kwargs))
-
-        test.addCleanup(cleanup1, 1, 2, 3, four='hello', five='goodbye')
-        test.addCleanup(cleanup2)
-
-        self.assertEqual(test._cleanups,
-                         [(cleanup1, (1, 2, 3), dict(four='hello', five='goodbye')),
-                          (cleanup2, (), {})])
-
-        result = test.doCleanups()
-        self.assertTrue(result)
-
-        self.assertEqual(cleanups, [(2, (), {}), (1, (1, 2, 3),
-                                    dict(four='hello', five='goodbye'))])
-
-    def testCleanUpWithErrors(self):
-        class TestableTest(unittest.TestCase):
-            def testNothing(self):
-                pass
-
-        class MockResult(object):
-            errors = []
-            def addError(self, test, exc_info):
-                self.errors.append((test, exc_info))
-
-        result = MockResult()
-        test = TestableTest('testNothing')
-        test._resultForDoCleanups = result
-
-        exc1 = Exception('foo')
-        exc2 = Exception('bar')
-        def cleanup1():
-            raise exc1
-
-        def cleanup2():
-            raise exc2
-
-        test.addCleanup(cleanup1)
-        test.addCleanup(cleanup2)
-
-        self.assertFalse(test.doCleanups())
-
-        (test1, (Type1, instance1, _)), (test2, (Type2, instance2, _)) = reversed(MockResult.errors)
-        self.assertEqual((test1, Type1, instance1), (test, Exception, exc1))
-        self.assertEqual((test2, Type2, instance2), (test, Exception, exc2))
-
-    def testCleanupInRun(self):
-        blowUp = False
-        ordering = []
-
-        class TestableTest(unittest.TestCase):
-            def setUp(self):
-                ordering.append('setUp')
-                if blowUp:
-                    raise Exception('foo')
-
-            def testNothing(self):
-                ordering.append('test')
-
-            def tearDown(self):
-                ordering.append('tearDown')
-
-        test = TestableTest('testNothing')
-
-        def cleanup1():
-            ordering.append('cleanup1')
-        def cleanup2():
-            ordering.append('cleanup2')
-        test.addCleanup(cleanup1)
-        test.addCleanup(cleanup2)
-
-        def success(some_test):
-            self.assertEqual(some_test, test)
-            ordering.append('success')
-
-        result = unittest.TestResult()
-        result.addSuccess = success
-
-        test.run(result)
-        self.assertEqual(ordering, ['setUp', 'test', 'tearDown',
-                                    'cleanup2', 'cleanup1', 'success'])
-
-        blowUp = True
-        ordering = []
-        test = TestableTest('testNothing')
-        test.addCleanup(cleanup1)
-        test.run(result)
-        self.assertEqual(ordering, ['setUp', 'cleanup1'])
-
-    def testTestCaseDebugExecutesCleanups(self):
-        ordering = []
-
-        class TestableTest(unittest.TestCase):
-            def setUp(self):
-                ordering.append('setUp')
-                self.addCleanup(cleanup1)
-
-            def testNothing(self):
-                ordering.append('test')
-
-            def tearDown(self):
-                ordering.append('tearDown')
-
-        test = TestableTest('testNothing')
-
-        def cleanup1():
-            ordering.append('cleanup1')
-            test.addCleanup(cleanup2)
-        def cleanup2():
-            ordering.append('cleanup2')
-
-        test.debug()
-        self.assertEqual(ordering, ['setUp', 'test', 'tearDown', 'cleanup1', 'cleanup2'])
-
-
-class Test_TextTestRunner(unittest.TestCase):
-    """Tests for TextTestRunner."""
-
-    def test_init(self):
-        runner = unittest.TextTestRunner()
-        self.assertFalse(runner.failfast)
-        self.assertFalse(runner.buffer)
-        self.assertEqual(runner.verbosity, 1)
-        self.assertTrue(runner.descriptions)
-        self.assertEqual(runner.resultclass, unittest.TextTestResult)
-
-
-    def testBufferAndFailfast(self):
-        class Test(unittest.TestCase):
-            def testFoo(self):
-                pass
-        result = unittest.TestResult()
-        runner = unittest.TextTestRunner(stream=StringIO(), failfast=True,
-                                           buffer=True)
-        # Use our result object
-        runner._makeResult = lambda: result
-        runner.run(Test('testFoo'))
-
-        self.assertTrue(result.failfast)
-        self.assertTrue(result.buffer)
-
-    def testRunnerRegistersResult(self):
-        class Test(unittest.TestCase):
-            def testFoo(self):
-                pass
-        originalRegisterResult = unittest.runner.registerResult
-        def cleanup():
-            unittest.runner.registerResult = originalRegisterResult
-        self.addCleanup(cleanup)
-
-        result = unittest.TestResult()
-        runner = unittest.TextTestRunner(stream=StringIO())
-        # Use our result object
-        runner._makeResult = lambda: result
-
-        self.wasRegistered = 0
-        def fakeRegisterResult(thisResult):
-            self.wasRegistered += 1
-            self.assertEqual(thisResult, result)
-        unittest.runner.registerResult = fakeRegisterResult
-
-        runner.run(unittest.TestSuite())
-        self.assertEqual(self.wasRegistered, 1)
-
-    def test_works_with_result_without_startTestRun_stopTestRun(self):
-        class OldTextResult(ResultWithNoStartTestRunStopTestRun):
-            separator2 = ''
-            def printErrors(self):
-                pass
-
-        class Runner(unittest.TextTestRunner):
-            def __init__(self):
-                super(Runner, self).__init__(StringIO())
-
-            def _makeResult(self):
-                return OldTextResult()
-
-        runner = Runner()
-        runner.run(unittest.TestSuite())
-
-    def test_startTestRun_stopTestRun_called(self):
-        class LoggingTextResult(LoggingResult):
-            separator2 = ''
-            def printErrors(self):
-                pass
-
-        class LoggingRunner(unittest.TextTestRunner):
-            def __init__(self, events):
-                super(LoggingRunner, self).__init__(StringIO())
-                self._events = events
-
-            def _makeResult(self):
-                return LoggingTextResult(self._events)
-
-        events = []
-        runner = LoggingRunner(events)
-        runner.run(unittest.TestSuite())
-        expected = ['startTestRun', 'stopTestRun']
-        self.assertEqual(events, expected)
-
-    def test_pickle_unpickle(self):
-        # Issue #7197: a TextTestRunner should be (un)pickleable. This is
-        # required by test_multiprocessing under Windows (in verbose mode).
-        from StringIO import StringIO as PickleableIO
-        # cStringIO objects are not pickleable, but StringIO objects are.
-        stream = PickleableIO("foo")
-        runner = unittest.TextTestRunner(stream)
-        for protocol in range(pickle.HIGHEST_PROTOCOL + 1):
-            s = pickle.dumps(runner, protocol=protocol)
-            obj = pickle.loads(s)
-            # StringIO objects never compare equal, a cheap test instead.
-            self.assertEqual(obj.stream.getvalue(), stream.getvalue())
-
-    def test_resultclass(self):
-        def MockResultClass(*args):
-            return args
-        STREAM = object()
-        DESCRIPTIONS = object()
-        VERBOSITY = object()
-        runner = unittest.TextTestRunner(STREAM, DESCRIPTIONS, VERBOSITY,
-                                         resultclass=MockResultClass)
-        self.assertEqual(runner.resultclass, MockResultClass)
-
-        expectedresult = (runner.stream, DESCRIPTIONS, VERBOSITY)
-        self.assertEqual(runner._makeResult(), expectedresult)
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_setups.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_setups.py
deleted file mode 100644
index fde264b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_setups.py
+++ /dev/null
@@ -1,508 +0,0 @@
-import sys
-
-from cStringIO import StringIO
-
-import unittest
-
-
-def resultFactory(*_):
-    return unittest.TestResult()
-
-
-class TestSetups(unittest.TestCase):
-
-    def getRunner(self):
-        return unittest.TextTestRunner(resultclass=resultFactory,
-                                          stream=StringIO())
-    def runTests(self, *cases):
-        suite = unittest.TestSuite()
-        for case in cases:
-            tests = unittest.defaultTestLoader.loadTestsFromTestCase(case)
-            suite.addTests(tests)
-
-        runner = self.getRunner()
-
-        # creating a nested suite exposes some potential bugs
-        realSuite = unittest.TestSuite()
-        realSuite.addTest(suite)
-        # adding empty suites to the end exposes potential bugs
-        suite.addTest(unittest.TestSuite())
-        realSuite.addTest(unittest.TestSuite())
-        return runner.run(realSuite)
-
-    def test_setup_class(self):
-        class Test(unittest.TestCase):
-            setUpCalled = 0
-            @classmethod
-            def setUpClass(cls):
-                Test.setUpCalled += 1
-                unittest.TestCase.setUpClass()
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-
-        result = self.runTests(Test)
-
-        self.assertEqual(Test.setUpCalled, 1)
-        self.assertEqual(result.testsRun, 2)
-        self.assertEqual(len(result.errors), 0)
-
-    def test_teardown_class(self):
-        class Test(unittest.TestCase):
-            tearDownCalled = 0
-            @classmethod
-            def tearDownClass(cls):
-                Test.tearDownCalled += 1
-                unittest.TestCase.tearDownClass()
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-
-        result = self.runTests(Test)
-
-        self.assertEqual(Test.tearDownCalled, 1)
-        self.assertEqual(result.testsRun, 2)
-        self.assertEqual(len(result.errors), 0)
-
-    def test_teardown_class_two_classes(self):
-        class Test(unittest.TestCase):
-            tearDownCalled = 0
-            @classmethod
-            def tearDownClass(cls):
-                Test.tearDownCalled += 1
-                unittest.TestCase.tearDownClass()
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-
-        class Test2(unittest.TestCase):
-            tearDownCalled = 0
-            @classmethod
-            def tearDownClass(cls):
-                Test2.tearDownCalled += 1
-                unittest.TestCase.tearDownClass()
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-
-        result = self.runTests(Test, Test2)
-
-        self.assertEqual(Test.tearDownCalled, 1)
-        self.assertEqual(Test2.tearDownCalled, 1)
-        self.assertEqual(result.testsRun, 4)
-        self.assertEqual(len(result.errors), 0)
-
-    def test_error_in_setupclass(self):
-        class BrokenTest(unittest.TestCase):
-            @classmethod
-            def setUpClass(cls):
-                raise TypeError('foo')
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-
-        result = self.runTests(BrokenTest)
-
-        self.assertEqual(result.testsRun, 0)
-        self.assertEqual(len(result.errors), 1)
-        error, _ = result.errors[0]
-        self.assertEqual(str(error),
-                    'setUpClass (%s.BrokenTest)' % __name__)
-
-    def test_error_in_teardown_class(self):
-        class Test(unittest.TestCase):
-            tornDown = 0
-            @classmethod
-            def tearDownClass(cls):
-                Test.tornDown += 1
-                raise TypeError('foo')
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-
-        class Test2(unittest.TestCase):
-            tornDown = 0
-            @classmethod
-            def tearDownClass(cls):
-                Test2.tornDown += 1
-                raise TypeError('foo')
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-
-        result = self.runTests(Test, Test2)
-        self.assertEqual(result.testsRun, 4)
-        self.assertEqual(len(result.errors), 2)
-        self.assertEqual(Test.tornDown, 1)
-        self.assertEqual(Test2.tornDown, 1)
-
-        error, _ = result.errors[0]
-        self.assertEqual(str(error),
-                    'tearDownClass (%s.Test)' % __name__)
-
-    def test_class_not_torndown_when_setup_fails(self):
-        class Test(unittest.TestCase):
-            tornDown = False
-            @classmethod
-            def setUpClass(cls):
-                raise TypeError
-            @classmethod
-            def tearDownClass(cls):
-                Test.tornDown = True
-                raise TypeError('foo')
-            def test_one(self):
-                pass
-
-        self.runTests(Test)
-        self.assertFalse(Test.tornDown)
-
-    def test_class_not_setup_or_torndown_when_skipped(self):
-        class Test(unittest.TestCase):
-            classSetUp = False
-            tornDown = False
-            @classmethod
-            def setUpClass(cls):
-                Test.classSetUp = True
-            @classmethod
-            def tearDownClass(cls):
-                Test.tornDown = True
-            def test_one(self):
-                pass
-
-        Test = unittest.skip("hop")(Test)
-        self.runTests(Test)
-        self.assertFalse(Test.classSetUp)
-        self.assertFalse(Test.tornDown)
-
-    def test_setup_teardown_order_with_pathological_suite(self):
-        results = []
-
-        class Module1(object):
-            @staticmethod
-            def setUpModule():
-                results.append('Module1.setUpModule')
-            @staticmethod
-            def tearDownModule():
-                results.append('Module1.tearDownModule')
-
-        class Module2(object):
-            @staticmethod
-            def setUpModule():
-                results.append('Module2.setUpModule')
-            @staticmethod
-            def tearDownModule():
-                results.append('Module2.tearDownModule')
-
-        class Test1(unittest.TestCase):
-            @classmethod
-            def setUpClass(cls):
-                results.append('setup 1')
-            @classmethod
-            def tearDownClass(cls):
-                results.append('teardown 1')
-            def testOne(self):
-                results.append('Test1.testOne')
-            def testTwo(self):
-                results.append('Test1.testTwo')
-
-        class Test2(unittest.TestCase):
-            @classmethod
-            def setUpClass(cls):
-                results.append('setup 2')
-            @classmethod
-            def tearDownClass(cls):
-                results.append('teardown 2')
-            def testOne(self):
-                results.append('Test2.testOne')
-            def testTwo(self):
-                results.append('Test2.testTwo')
-
-        class Test3(unittest.TestCase):
-            @classmethod
-            def setUpClass(cls):
-                results.append('setup 3')
-            @classmethod
-            def tearDownClass(cls):
-                results.append('teardown 3')
-            def testOne(self):
-                results.append('Test3.testOne')
-            def testTwo(self):
-                results.append('Test3.testTwo')
-
-        Test1.__module__ = Test2.__module__ = 'Module'
-        Test3.__module__ = 'Module2'
-        sys.modules['Module'] = Module1
-        sys.modules['Module2'] = Module2
-
-        first = unittest.TestSuite((Test1('testOne'),))
-        second = unittest.TestSuite((Test1('testTwo'),))
-        third = unittest.TestSuite((Test2('testOne'),))
-        fourth = unittest.TestSuite((Test2('testTwo'),))
-        fifth = unittest.TestSuite((Test3('testOne'),))
-        sixth = unittest.TestSuite((Test3('testTwo'),))
-        suite = unittest.TestSuite((first, second, third, fourth, fifth, sixth))
-
-        runner = self.getRunner()
-        result = runner.run(suite)
-        self.assertEqual(result.testsRun, 6)
-        self.assertEqual(len(result.errors), 0)
-
-        self.assertEqual(results,
-                         ['Module1.setUpModule', 'setup 1',
-                          'Test1.testOne', 'Test1.testTwo', 'teardown 1',
-                          'setup 2', 'Test2.testOne', 'Test2.testTwo',
-                          'teardown 2', 'Module1.tearDownModule',
-                          'Module2.setUpModule', 'setup 3',
-                          'Test3.testOne', 'Test3.testTwo',
-                          'teardown 3', 'Module2.tearDownModule'])
-
-    def test_setup_module(self):
-        class Module(object):
-            moduleSetup = 0
-            @staticmethod
-            def setUpModule():
-                Module.moduleSetup += 1
-
-        class Test(unittest.TestCase):
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-        Test.__module__ = 'Module'
-        sys.modules['Module'] = Module
-
-        result = self.runTests(Test)
-        self.assertEqual(Module.moduleSetup, 1)
-        self.assertEqual(result.testsRun, 2)
-        self.assertEqual(len(result.errors), 0)
-
-    def test_error_in_setup_module(self):
-        class Module(object):
-            moduleSetup = 0
-            moduleTornDown = 0
-            @staticmethod
-            def setUpModule():
-                Module.moduleSetup += 1
-                raise TypeError('foo')
-            @staticmethod
-            def tearDownModule():
-                Module.moduleTornDown += 1
-
-        class Test(unittest.TestCase):
-            classSetUp = False
-            classTornDown = False
-            @classmethod
-            def setUpClass(cls):
-                Test.classSetUp = True
-            @classmethod
-            def tearDownClass(cls):
-                Test.classTornDown = True
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-
-        class Test2(unittest.TestCase):
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-        Test.__module__ = 'Module'
-        Test2.__module__ = 'Module'
-        sys.modules['Module'] = Module
-
-        result = self.runTests(Test, Test2)
-        self.assertEqual(Module.moduleSetup, 1)
-        self.assertEqual(Module.moduleTornDown, 0)
-        self.assertEqual(result.testsRun, 0)
-        self.assertFalse(Test.classSetUp)
-        self.assertFalse(Test.classTornDown)
-        self.assertEqual(len(result.errors), 1)
-        error, _ = result.errors[0]
-        self.assertEqual(str(error), 'setUpModule (Module)')
-
-    def test_testcase_with_missing_module(self):
-        class Test(unittest.TestCase):
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-        Test.__module__ = 'Module'
-        sys.modules.pop('Module', None)
-
-        result = self.runTests(Test)
-        self.assertEqual(result.testsRun, 2)
-
-    def test_teardown_module(self):
-        class Module(object):
-            moduleTornDown = 0
-            @staticmethod
-            def tearDownModule():
-                Module.moduleTornDown += 1
-
-        class Test(unittest.TestCase):
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-        Test.__module__ = 'Module'
-        sys.modules['Module'] = Module
-
-        result = self.runTests(Test)
-        self.assertEqual(Module.moduleTornDown, 1)
-        self.assertEqual(result.testsRun, 2)
-        self.assertEqual(len(result.errors), 0)
-
-    def test_error_in_teardown_module(self):
-        class Module(object):
-            moduleTornDown = 0
-            @staticmethod
-            def tearDownModule():
-                Module.moduleTornDown += 1
-                raise TypeError('foo')
-
-        class Test(unittest.TestCase):
-            classSetUp = False
-            classTornDown = False
-            @classmethod
-            def setUpClass(cls):
-                Test.classSetUp = True
-            @classmethod
-            def tearDownClass(cls):
-                Test.classTornDown = True
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-
-        class Test2(unittest.TestCase):
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-        Test.__module__ = 'Module'
-        Test2.__module__ = 'Module'
-        sys.modules['Module'] = Module
-
-        result = self.runTests(Test, Test2)
-        self.assertEqual(Module.moduleTornDown, 1)
-        self.assertEqual(result.testsRun, 4)
-        self.assertTrue(Test.classSetUp)
-        self.assertTrue(Test.classTornDown)
-        self.assertEqual(len(result.errors), 1)
-        error, _ = result.errors[0]
-        self.assertEqual(str(error), 'tearDownModule (Module)')
-
-    def test_skiptest_in_setupclass(self):
-        class Test(unittest.TestCase):
-            @classmethod
-            def setUpClass(cls):
-                raise unittest.SkipTest('foo')
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-
-        result = self.runTests(Test)
-        self.assertEqual(result.testsRun, 0)
-        self.assertEqual(len(result.errors), 0)
-        self.assertEqual(len(result.skipped), 1)
-        skipped = result.skipped[0][0]
-        self.assertEqual(str(skipped), 'setUpClass (%s.Test)' % __name__)
-
-    def test_skiptest_in_setupmodule(self):
-        class Test(unittest.TestCase):
-            def test_one(self):
-                pass
-            def test_two(self):
-                pass
-
-        class Module(object):
-            @staticmethod
-            def setUpModule():
-                raise unittest.SkipTest('foo')
-
-        Test.__module__ = 'Module'
-        sys.modules['Module'] = Module
-
-        result = self.runTests(Test)
-        self.assertEqual(result.testsRun, 0)
-        self.assertEqual(len(result.errors), 0)
-        self.assertEqual(len(result.skipped), 1)
-        skipped = result.skipped[0][0]
-        self.assertEqual(str(skipped), 'setUpModule (Module)')
-
-    def test_suite_debug_executes_setups_and_teardowns(self):
-        ordering = []
-
-        class Module(object):
-            @staticmethod
-            def setUpModule():
-                ordering.append('setUpModule')
-            @staticmethod
-            def tearDownModule():
-                ordering.append('tearDownModule')
-
-        class Test(unittest.TestCase):
-            @classmethod
-            def setUpClass(cls):
-                ordering.append('setUpClass')
-            @classmethod
-            def tearDownClass(cls):
-                ordering.append('tearDownClass')
-            def test_something(self):
-                ordering.append('test_something')
-
-        Test.__module__ = 'Module'
-        sys.modules['Module'] = Module
-
-        suite = unittest.defaultTestLoader.loadTestsFromTestCase(Test)
-        suite.debug()
-        expectedOrder = ['setUpModule', 'setUpClass', 'test_something', 'tearDownClass', 'tearDownModule']
-        self.assertEqual(ordering, expectedOrder)
-
-    def test_suite_debug_propagates_exceptions(self):
-        class Module(object):
-            @staticmethod
-            def setUpModule():
-                if phase == 0:
-                    raise Exception('setUpModule')
-            @staticmethod
-            def tearDownModule():
-                if phase == 1:
-                    raise Exception('tearDownModule')
-
-        class Test(unittest.TestCase):
-            @classmethod
-            def setUpClass(cls):
-                if phase == 2:
-                    raise Exception('setUpClass')
-            @classmethod
-            def tearDownClass(cls):
-                if phase == 3:
-                    raise Exception('tearDownClass')
-            def test_something(self):
-                if phase == 4:
-                    raise Exception('test_something')
-
-        Test.__module__ = 'Module'
-        sys.modules['Module'] = Module
-
-        _suite = unittest.defaultTestLoader.loadTestsFromTestCase(Test)
-        suite = unittest.TestSuite()
-        suite.addTest(_suite)
-
-        messages = ('setUpModule', 'tearDownModule', 'setUpClass', 'tearDownClass', 'test_something')
-        for phase, msg in enumerate(messages):
-            with self.assertRaisesRegexp(Exception, msg):
-                suite.debug()
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_skipping.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_skipping.py
deleted file mode 100644
index 4da69aa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_skipping.py
+++ /dev/null
@@ -1,138 +0,0 @@
-import unittest
-
-from .support import LoggingResult
-
-
-class Test_TestSkipping(unittest.TestCase):
-
-    def test_skipping(self):
-        class Foo(unittest.TestCase):
-            def test_skip_me(self):
-                self.skipTest("skip")
-        events = []
-        result = LoggingResult(events)
-        test = Foo("test_skip_me")
-        test.run(result)
-        self.assertEqual(events, ['startTest', 'addSkip', 'stopTest'])
-        self.assertEqual(result.skipped, [(test, "skip")])
-
-        # Try letting setUp skip the test now.
-        class Foo(unittest.TestCase):
-            def setUp(self):
-                self.skipTest("testing")
-            def test_nothing(self): pass
-        events = []
-        result = LoggingResult(events)
-        test = Foo("test_nothing")
-        test.run(result)
-        self.assertEqual(events, ['startTest', 'addSkip', 'stopTest'])
-        self.assertEqual(result.skipped, [(test, "testing")])
-        self.assertEqual(result.testsRun, 1)
-
-    def test_skipping_decorators(self):
-        op_table = ((unittest.skipUnless, False, True),
-                    (unittest.skipIf, True, False))
-        for deco, do_skip, dont_skip in op_table:
-            class Foo(unittest.TestCase):
-                @deco(do_skip, "testing")
-                def test_skip(self): pass
-
-                @deco(dont_skip, "testing")
-                def test_dont_skip(self): pass
-            test_do_skip = Foo("test_skip")
-            test_dont_skip = Foo("test_dont_skip")
-            suite = unittest.TestSuite([test_do_skip, test_dont_skip])
-            events = []
-            result = LoggingResult(events)
-            suite.run(result)
-            self.assertEqual(len(result.skipped), 1)
-            expected = ['startTest', 'addSkip', 'stopTest',
-                        'startTest', 'addSuccess', 'stopTest']
-            self.assertEqual(events, expected)
-            self.assertEqual(result.testsRun, 2)
-            self.assertEqual(result.skipped, [(test_do_skip, "testing")])
-            self.assertTrue(result.wasSuccessful())
-
-    def test_skip_class(self):
-        @unittest.skip("testing")
-        class Foo(unittest.TestCase):
-            def test_1(self):
-                record.append(1)
-        record = []
-        result = unittest.TestResult()
-        test = Foo("test_1")
-        suite = unittest.TestSuite([test])
-        suite.run(result)
-        self.assertEqual(result.skipped, [(test, "testing")])
-        self.assertEqual(record, [])
-
-    def test_expected_failure(self):
-        class Foo(unittest.TestCase):
-            @unittest.expectedFailure
-            def test_die(self):
-                self.fail("help me!")
-        events = []
-        result = LoggingResult(events)
-        test = Foo("test_die")
-        test.run(result)
-        self.assertEqual(events,
-                         ['startTest', 'addExpectedFailure', 'stopTest'])
-        self.assertEqual(result.expectedFailures[0][0], test)
-        self.assertTrue(result.wasSuccessful())
-
-    def test_unexpected_success(self):
-        class Foo(unittest.TestCase):
-            @unittest.expectedFailure
-            def test_die(self):
-                pass
-        events = []
-        result = LoggingResult(events)
-        test = Foo("test_die")
-        test.run(result)
-        self.assertEqual(events,
-                         ['startTest', 'addUnexpectedSuccess', 'stopTest'])
-        self.assertFalse(result.failures)
-        self.assertEqual(result.unexpectedSuccesses, [test])
-        self.assertTrue(result.wasSuccessful())
-
-    def test_skip_doesnt_run_setup(self):
-        class Foo(unittest.TestCase):
-            wasSetUp = False
-            wasTornDown = False
-            def setUp(self):
-                Foo.wasSetUp = True
-            def tornDown(self):
-                Foo.wasTornDown = True
-            @unittest.skip('testing')
-            def test_1(self):
-                pass
-
-        result = unittest.TestResult()
-        test = Foo("test_1")
-        suite = unittest.TestSuite([test])
-        suite.run(result)
-        self.assertEqual(result.skipped, [(test, "testing")])
-        self.assertFalse(Foo.wasSetUp)
-        self.assertFalse(Foo.wasTornDown)
-
-    def test_decorated_skip(self):
-        def decorator(func):
-            def inner(*a):
-                return func(*a)
-            return inner
-
-        class Foo(unittest.TestCase):
-            @decorator
-            @unittest.skip('testing')
-            def test_1(self):
-                pass
-
-        result = unittest.TestResult()
-        test = Foo("test_1")
-        suite = unittest.TestSuite([test])
-        suite.run(result)
-        self.assertEqual(result.skipped, [(test, "testing")])
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_suite.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_suite.py
deleted file mode 100644
index 243d184..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/test/test_suite.py
+++ /dev/null
@@ -1,367 +0,0 @@
-import unittest
-
-import sys
-from .support import LoggingResult, TestEquality
-
-
-### Support code for Test_TestSuite
-################################################################
-
-class Test(object):
-    class Foo(unittest.TestCase):
-        def test_1(self): pass
-        def test_2(self): pass
-        def test_3(self): pass
-        def runTest(self): pass
-
-def _mk_TestSuite(*names):
-    return unittest.TestSuite(Test.Foo(n) for n in names)
-
-################################################################
-
-
-class Test_TestSuite(unittest.TestCase, TestEquality):
-
-    ### Set up attributes needed by inherited tests
-    ################################################################
-
-    # Used by TestEquality.test_eq
-    eq_pairs = [(unittest.TestSuite(), unittest.TestSuite()),
-                (unittest.TestSuite(), unittest.TestSuite([])),
-               (_mk_TestSuite('test_1'), _mk_TestSuite('test_1'))]
-
-    # Used by TestEquality.test_ne
-    ne_pairs = [(unittest.TestSuite(), _mk_TestSuite('test_1')),
-                (unittest.TestSuite([]), _mk_TestSuite('test_1')),
-                (_mk_TestSuite('test_1', 'test_2'), _mk_TestSuite('test_1', 'test_3')),
-                (_mk_TestSuite('test_1'), _mk_TestSuite('test_2'))]
-
-    ################################################################
-    ### /Set up attributes needed by inherited tests
-
-    ### Tests for TestSuite.__init__
-    ################################################################
-
-    # "class TestSuite([tests])"
-    #
-    # The tests iterable should be optional
-    def test_init__tests_optional(self):
-        suite = unittest.TestSuite()
-
-        self.assertEqual(suite.countTestCases(), 0)
-
-    # "class TestSuite([tests])"
-    # ...
-    # "If tests is given, it must be an iterable of individual test cases
-    # or other test suites that will be used to build the suite initially"
-    #
-    # TestSuite should deal with empty tests iterables by allowing the
-    # creation of an empty suite
-    def test_init__empty_tests(self):
-        suite = unittest.TestSuite([])
-
-        self.assertEqual(suite.countTestCases(), 0)
-
-    # "class TestSuite([tests])"
-    # ...
-    # "If tests is given, it must be an iterable of individual test cases
-    # or other test suites that will be used to build the suite initially"
-    #
-    # TestSuite should allow any iterable to provide tests
-    def test_init__tests_from_any_iterable(self):
-        def tests():
-            yield unittest.FunctionTestCase(lambda: None)
-            yield unittest.FunctionTestCase(lambda: None)
-
-        suite_1 = unittest.TestSuite(tests())
-        self.assertEqual(suite_1.countTestCases(), 2)
-
-        suite_2 = unittest.TestSuite(suite_1)
-        self.assertEqual(suite_2.countTestCases(), 2)
-
-        suite_3 = unittest.TestSuite(set(suite_1))
-        self.assertEqual(suite_3.countTestCases(), 2)
-
-    # "class TestSuite([tests])"
-    # ...
-    # "If tests is given, it must be an iterable of individual test cases
-    # or other test suites that will be used to build the suite initially"
-    #
-    # Does TestSuite() also allow other TestSuite() instances to be present
-    # in the tests iterable?
-    def test_init__TestSuite_instances_in_tests(self):
-        def tests():
-            ftc = unittest.FunctionTestCase(lambda: None)
-            yield unittest.TestSuite([ftc])
-            yield unittest.FunctionTestCase(lambda: None)
-
-        suite = unittest.TestSuite(tests())
-        self.assertEqual(suite.countTestCases(), 2)
-
-    ################################################################
-    ### /Tests for TestSuite.__init__
-
-    # Container types should support the iter protocol
-    def test_iter(self):
-        test1 = unittest.FunctionTestCase(lambda: None)
-        test2 = unittest.FunctionTestCase(lambda: None)
-        suite = unittest.TestSuite((test1, test2))
-
-        self.assertEqual(list(suite), [test1, test2])
-
-    # "Return the number of tests represented by the this test object.
-    # ...this method is also implemented by the TestSuite class, which can
-    # return larger [greater than 1] values"
-    #
-    # Presumably an empty TestSuite returns 0?
-    def test_countTestCases_zero_simple(self):
-        suite = unittest.TestSuite()
-
-        self.assertEqual(suite.countTestCases(), 0)
-
-    # "Return the number of tests represented by the this test object.
-    # ...this method is also implemented by the TestSuite class, which can
-    # return larger [greater than 1] values"
-    #
-    # Presumably an empty TestSuite (even if it contains other empty
-    # TestSuite instances) returns 0?
-    def test_countTestCases_zero_nested(self):
-        class Test1(unittest.TestCase):
-            def test(self):
-                pass
-
-        suite = unittest.TestSuite([unittest.TestSuite()])
-
-        self.assertEqual(suite.countTestCases(), 0)
-
-    # "Return the number of tests represented by the this test object.
-    # ...this method is also implemented by the TestSuite class, which can
-    # return larger [greater than 1] values"
-    def test_countTestCases_simple(self):
-        test1 = unittest.FunctionTestCase(lambda: None)
-        test2 = unittest.FunctionTestCase(lambda: None)
-        suite = unittest.TestSuite((test1, test2))
-
-        self.assertEqual(suite.countTestCases(), 2)
-
-    # "Return the number of tests represented by the this test object.
-    # ...this method is also implemented by the TestSuite class, which can
-    # return larger [greater than 1] values"
-    #
-    # Make sure this holds for nested TestSuite instances, too
-    def test_countTestCases_nested(self):
-        class Test1(unittest.TestCase):
-            def test1(self): pass
-            def test2(self): pass
-
-        test2 = unittest.FunctionTestCase(lambda: None)
-        test3 = unittest.FunctionTestCase(lambda: None)
-        child = unittest.TestSuite((Test1('test2'), test2))
-        parent = unittest.TestSuite((test3, child, Test1('test1')))
-
-        self.assertEqual(parent.countTestCases(), 4)
-
-    # "Run the tests associated with this suite, collecting the result into
-    # the test result object passed as result."
-    #
-    # And if there are no tests? What then?
-    def test_run__empty_suite(self):
-        events = []
-        result = LoggingResult(events)
-
-        suite = unittest.TestSuite()
-
-        suite.run(result)
-
-        self.assertEqual(events, [])
-
-    # "Note that unlike TestCase.run(), TestSuite.run() requires the
-    # "result object to be passed in."
-    def test_run__requires_result(self):
-        suite = unittest.TestSuite()
-
-        try:
-            suite.run()
-        except TypeError:
-            pass
-        else:
-            self.fail("Failed to raise TypeError")
-
-    # "Run the tests associated with this suite, collecting the result into
-    # the test result object passed as result."
-    def test_run(self):
-        events = []
-        result = LoggingResult(events)
-
-        class LoggingCase(unittest.TestCase):
-            def run(self, result):
-                events.append('run %s' % self._testMethodName)
-
-            def test1(self): pass
-            def test2(self): pass
-
-        tests = [LoggingCase('test1'), LoggingCase('test2')]
-
-        unittest.TestSuite(tests).run(result)
-
-        self.assertEqual(events, ['run test1', 'run test2'])
-
-    # "Add a TestCase ... to the suite"
-    def test_addTest__TestCase(self):
-        class Foo(unittest.TestCase):
-            def test(self): pass
-
-        test = Foo('test')
-        suite = unittest.TestSuite()
-
-        suite.addTest(test)
-
-        self.assertEqual(suite.countTestCases(), 1)
-        self.assertEqual(list(suite), [test])
-
-    # "Add a ... TestSuite to the suite"
-    def test_addTest__TestSuite(self):
-        class Foo(unittest.TestCase):
-            def test(self): pass
-
-        suite_2 = unittest.TestSuite([Foo('test')])
-
-        suite = unittest.TestSuite()
-        suite.addTest(suite_2)
-
-        self.assertEqual(suite.countTestCases(), 1)
-        self.assertEqual(list(suite), [suite_2])
-
-    # "Add all the tests from an iterable of TestCase and TestSuite
-    # instances to this test suite."
-    #
-    # "This is equivalent to iterating over tests, calling addTest() for
-    # each element"
-    def test_addTests(self):
-        class Foo(unittest.TestCase):
-            def test_1(self): pass
-            def test_2(self): pass
-
-        test_1 = Foo('test_1')
-        test_2 = Foo('test_2')
-        inner_suite = unittest.TestSuite([test_2])
-
-        def gen():
-            yield test_1
-            yield test_2
-            yield inner_suite
-
-        suite_1 = unittest.TestSuite()
-        suite_1.addTests(gen())
-
-        self.assertEqual(list(suite_1), list(gen()))
-
-        # "This is equivalent to iterating over tests, calling addTest() for
-        # each element"
-        suite_2 = unittest.TestSuite()
-        for t in gen():
-            suite_2.addTest(t)
-
-        self.assertEqual(suite_1, suite_2)
-
-    # "Add all the tests from an iterable of TestCase and TestSuite
-    # instances to this test suite."
-    #
-    # What happens if it doesn't get an iterable?
-    def test_addTest__noniterable(self):
-        suite = unittest.TestSuite()
-
-        try:
-            suite.addTests(5)
-        except TypeError:
-            pass
-        else:
-            self.fail("Failed to raise TypeError")
-
-    def test_addTest__noncallable(self):
-        suite = unittest.TestSuite()
-        self.assertRaises(TypeError, suite.addTest, 5)
-
-    def test_addTest__casesuiteclass(self):
-        suite = unittest.TestSuite()
-        self.assertRaises(TypeError, suite.addTest, Test_TestSuite)
-        self.assertRaises(TypeError, suite.addTest, unittest.TestSuite)
-
-    def test_addTests__string(self):
-        suite = unittest.TestSuite()
-        self.assertRaises(TypeError, suite.addTests, "foo")
-
-    def test_function_in_suite(self):
-        def f(_):
-            pass
-        suite = unittest.TestSuite()
-        suite.addTest(f)
-
-        # when the bug is fixed this line will not crash
-        suite.run(unittest.TestResult())
-
-
-
-    def test_basetestsuite(self):
-        class Test(unittest.TestCase):
-            wasSetUp = False
-            wasTornDown = False
-            @classmethod
-            def setUpClass(cls):
-                cls.wasSetUp = True
-            @classmethod
-            def tearDownClass(cls):
-                cls.wasTornDown = True
-            def testPass(self):
-                pass
-            def testFail(self):
-                fail
-        class Module(object):
-            wasSetUp = False
-            wasTornDown = False
-            @staticmethod
-            def setUpModule():
-                Module.wasSetUp = True
-            @staticmethod
-            def tearDownModule():
-                Module.wasTornDown = True
-
-        Test.__module__ = 'Module'
-        sys.modules['Module'] = Module
-        self.addCleanup(sys.modules.pop, 'Module')
-
-        suite = unittest.BaseTestSuite()
-        suite.addTests([Test('testPass'), Test('testFail')])
-        self.assertEqual(suite.countTestCases(), 2)
-
-        result = unittest.TestResult()
-        suite.run(result)
-        self.assertFalse(Module.wasSetUp)
-        self.assertFalse(Module.wasTornDown)
-        self.assertFalse(Test.wasSetUp)
-        self.assertFalse(Test.wasTornDown)
-        self.assertEqual(len(result.errors), 1)
-        self.assertEqual(len(result.failures), 0)
-        self.assertEqual(result.testsRun, 2)
-
-
-    def test_overriding_call(self):
-        class MySuite(unittest.TestSuite):
-            called = False
-            def __call__(self, *args, **kw):
-                self.called = True
-                unittest.TestSuite.__call__(self, *args, **kw)
-
-        suite = MySuite()
-        result = unittest.TestResult()
-        wrapper = unittest.TestSuite()
-        wrapper.addTest(suite)
-        wrapper(result)
-        self.assertTrue(suite.called)
-
-        # reusing results should be permitted even if abominable
-        self.assertFalse(result._testRunEntered)
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/util.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/util.py
deleted file mode 100644
index 702e99f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/unittest/util.py
+++ /dev/null
@@ -1,156 +0,0 @@
-"""Various utility functions."""
-from collections import namedtuple, OrderedDict
-
-
-__unittest = True
-
-_MAX_LENGTH = 80
-def safe_repr(obj, short=False):
-    try:
-        result = repr(obj)
-    except Exception:
-        result = object.__repr__(obj)
-    if not short or len(result) < _MAX_LENGTH:
-        return result
-    return result[:_MAX_LENGTH] + ' [truncated]...'
-
-
-def strclass(cls):
-    return "%s.%s" % (cls.__module__, cls.__name__)
-
-def sorted_list_difference(expected, actual):
-    """Finds elements in only one or the other of two, sorted input lists.
-
-    Returns a two-element tuple of lists.    The first list contains those
-    elements in the "expected" list but not in the "actual" list, and the
-    second contains those elements in the "actual" list but not in the
-    "expected" list.    Duplicate elements in either input list are ignored.
-    """
-    i = j = 0
-    missing = []
-    unexpected = []
-    while True:
-        try:
-            e = expected[i]
-            a = actual[j]
-            if e < a:
-                missing.append(e)
-                i += 1
-                while expected[i] == e:
-                    i += 1
-            elif e > a:
-                unexpected.append(a)
-                j += 1
-                while actual[j] == a:
-                    j += 1
-            else:
-                i += 1
-                try:
-                    while expected[i] == e:
-                        i += 1
-                finally:
-                    j += 1
-                    while actual[j] == a:
-                        j += 1
-        except IndexError:
-            missing.extend(expected[i:])
-            unexpected.extend(actual[j:])
-            break
-    return missing, unexpected
-
-
-def unorderable_list_difference(expected, actual, ignore_duplicate=False):
-    """Same behavior as sorted_list_difference but
-    for lists of unorderable items (like dicts).
-
-    As it does a linear search per item (remove) it
-    has O(n*n) performance.
-    """
-    missing = []
-    unexpected = []
-    while expected:
-        item = expected.pop()
-        try:
-            actual.remove(item)
-        except ValueError:
-            missing.append(item)
-        if ignore_duplicate:
-            for lst in expected, actual:
-                try:
-                    while True:
-                        lst.remove(item)
-                except ValueError:
-                    pass
-    if ignore_duplicate:
-        while actual:
-            item = actual.pop()
-            unexpected.append(item)
-            try:
-                while True:
-                    actual.remove(item)
-            except ValueError:
-                pass
-        return missing, unexpected
-
-    # anything left in actual is unexpected
-    return missing, actual
-
-_Mismatch = namedtuple('Mismatch', 'actual expected value')
-
-def _count_diff_all_purpose(actual, expected):
-    'Returns list of (cnt_act, cnt_exp, elem) triples where the counts differ'
-    # elements need not be hashable
-    s, t = list(actual), list(expected)
-    m, n = len(s), len(t)
-    NULL = object()
-    result = []
-    for i, elem in enumerate(s):
-        if elem is NULL:
-            continue
-        cnt_s = cnt_t = 0
-        for j in range(i, m):
-            if s[j] == elem:
-                cnt_s += 1
-                s[j] = NULL
-        for j, other_elem in enumerate(t):
-            if other_elem == elem:
-                cnt_t += 1
-                t[j] = NULL
-        if cnt_s != cnt_t:
-            diff = _Mismatch(cnt_s, cnt_t, elem)
-            result.append(diff)
-
-    for i, elem in enumerate(t):
-        if elem is NULL:
-            continue
-        cnt_t = 0
-        for j in range(i, n):
-            if t[j] == elem:
-                cnt_t += 1
-                t[j] = NULL
-        diff = _Mismatch(0, cnt_t, elem)
-        result.append(diff)
-    return result
-
-def _ordered_count(iterable):
-    'Return dict of element counts, in the order they were first seen'
-    c = OrderedDict()
-    for elem in iterable:
-        c[elem] = c.get(elem, 0) + 1
-    return c
-
-def _count_diff_hashable(actual, expected):
-    'Returns list of (cnt_act, cnt_exp, elem) triples where the counts differ'
-    # elements must be hashable
-    s, t = _ordered_count(actual), _ordered_count(expected)
-    result = []
-    for elem, cnt_s in s.items():
-        cnt_t = t.get(elem, 0)
-        if cnt_s != cnt_t:
-            diff = _Mismatch(cnt_s, cnt_t, elem)
-            result.append(diff)
-    for elem, cnt_t in t.items():
-        if elem not in s:
-            diff = _Mismatch(0, cnt_t, elem)
-            result.append(diff)
-    return result
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/urllib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/urllib.py
deleted file mode 100644
index 6ee0ffa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/urllib.py
+++ /dev/null
@@ -1,1646 +0,0 @@
-"""Open an arbitrary URL.
-
-See the following document for more info on URLs:
-"Names and Addresses, URIs, URLs, URNs, URCs", at
-http://www.w3.org/pub/WWW/Addressing/Overview.html
-
-See also the HTTP spec (from which the error codes are derived):
-"HTTP - Hypertext Transfer Protocol", at
-http://www.w3.org/pub/WWW/Protocols/
-
-Related standards and specs:
-- RFC1808: the "relative URL" spec. (authoritative status)
-- RFC1738 - the "URL standard". (authoritative status)
-- RFC1630 - the "URI spec". (informational status)
-
-The object returned by URLopener().open(file) will differ per
-protocol.  All you know is that is has methods read(), readline(),
-readlines(), fileno(), close() and info().  The read*(), fileno()
-and close() methods work like those of open files.
-The info() method returns a mimetools.Message object which can be
-used to query various info about the object, if available.
-(mimetools.Message objects are queried with the getheader() method.)
-"""
-
-import string
-import socket
-import os
-import time
-import sys
-from urlparse import urljoin as basejoin
-
-__all__ = ["urlopen", "URLopener", "FancyURLopener", "urlretrieve",
-           "urlcleanup", "quote", "quote_plus", "unquote", "unquote_plus",
-           "urlencode", "url2pathname", "pathname2url", "splittag",
-           "localhost", "thishost", "ftperrors", "basejoin", "unwrap",
-           "splittype", "splithost", "splituser", "splitpasswd", "splitport",
-           "splitnport", "splitquery", "splitattr", "splitvalue",
-           "getproxies"]
-
-__version__ = '1.17'    # XXX This version is not always updated :-(
-
-MAXFTPCACHE = 10        # Trim the ftp cache beyond this size
-
-# Helper for non-unix systems
-if os.name == 'nt':
-    from nturl2path import url2pathname, pathname2url
-elif os.name == 'riscos':
-    from rourl2path import url2pathname, pathname2url
-else:
-    def url2pathname(pathname):
-        """OS-specific conversion from a relative URL of the 'file' scheme
-        to a file system path; not recommended for general use."""
-        return unquote(pathname)
-
-    def pathname2url(pathname):
-        """OS-specific conversion from a file system path to a relative URL
-        of the 'file' scheme; not recommended for general use."""
-        return quote(pathname)
-
-# This really consists of two pieces:
-# (1) a class which handles opening of all sorts of URLs
-#     (plus assorted utilities etc.)
-# (2) a set of functions for parsing URLs
-# XXX Should these be separated out into different modules?
-
-
-# Shortcut for basic usage
-_urlopener = None
-def urlopen(url, data=None, proxies=None):
-    """Create a file-like object for the specified URL to read from."""
-    from warnings import warnpy3k
-    warnpy3k("urllib.urlopen() has been removed in Python 3.0 in "
-             "favor of urllib2.urlopen()", stacklevel=2)
-
-    global _urlopener
-    if proxies is not None:
-        opener = FancyURLopener(proxies=proxies)
-    elif not _urlopener:
-        opener = FancyURLopener()
-        _urlopener = opener
-    else:
-        opener = _urlopener
-    if data is None:
-        return opener.open(url)
-    else:
-        return opener.open(url, data)
-def urlretrieve(url, filename=None, reporthook=None, data=None):
-    global _urlopener
-    if not _urlopener:
-        _urlopener = FancyURLopener()
-    return _urlopener.retrieve(url, filename, reporthook, data)
-def urlcleanup():
-    if _urlopener:
-        _urlopener.cleanup()
-    _safe_quoters.clear()
-    ftpcache.clear()
-
-# check for SSL
-try:
-    import ssl
-except:
-    _have_ssl = False
-else:
-    _have_ssl = True
-
-# exception raised when downloaded size does not match content-length
-class ContentTooShortError(IOError):
-    def __init__(self, message, content):
-        IOError.__init__(self, message)
-        self.content = content
-
-ftpcache = {}
-class URLopener:
-    """Class to open URLs.
-    This is a class rather than just a subroutine because we may need
-    more than one set of global protocol-specific options.
-    Note -- this is a base class for those who don't want the
-    automatic handling of errors type 302 (relocated) and 401
-    (authorization needed)."""
-
-    __tempfiles = None
-
-    version = "Python-urllib/%s" % __version__
-
-    # Constructor
-    def __init__(self, proxies=None, **x509):
-        if proxies is None:
-            proxies = getproxies()
-        assert hasattr(proxies, 'has_key'), "proxies must be a mapping"
-        self.proxies = proxies
-        self.key_file = x509.get('key_file')
-        self.cert_file = x509.get('cert_file')
-        self.addheaders = [('User-Agent', self.version)]
-        self.__tempfiles = []
-        self.__unlink = os.unlink # See cleanup()
-        self.tempcache = None
-        # Undocumented feature: if you assign {} to tempcache,
-        # it is used to cache files retrieved with
-        # self.retrieve().  This is not enabled by default
-        # since it does not work for changing documents (and I
-        # haven't got the logic to check expiration headers
-        # yet).
-        self.ftpcache = ftpcache
-        # Undocumented feature: you can use a different
-        # ftp cache by assigning to the .ftpcache member;
-        # in case you want logically independent URL openers
-        # XXX This is not threadsafe.  Bah.
-
-    def __del__(self):
-        self.close()
-
-    def close(self):
-        self.cleanup()
-
-    def cleanup(self):
-        # This code sometimes runs when the rest of this module
-        # has already been deleted, so it can't use any globals
-        # or import anything.
-        if self.__tempfiles:
-            for file in self.__tempfiles:
-                try:
-                    self.__unlink(file)
-                except OSError:
-                    pass
-            del self.__tempfiles[:]
-        if self.tempcache:
-            self.tempcache.clear()
-
-    def addheader(self, *args):
-        """Add a header to be used by the HTTP interface only
-        e.g. u.addheader('Accept', 'sound/basic')"""
-        self.addheaders.append(args)
-
-    # External interface
-    def open(self, fullurl, data=None):
-        """Use URLopener().open(file) instead of open(file, 'r')."""
-        fullurl = unwrap(toBytes(fullurl))
-        # percent encode url, fixing lame server errors for e.g, like space
-        # within url paths.
-        fullurl = quote(fullurl, safe="%/:=&?~#+!$,;'@()*[]|")
-        if self.tempcache and fullurl in self.tempcache:
-            filename, headers = self.tempcache[fullurl]
-            fp = open(filename, 'rb')
-            return addinfourl(fp, headers, fullurl)
-        urltype, url = splittype(fullurl)
-        if not urltype:
-            urltype = 'file'
-        if urltype in self.proxies:
-            proxy = self.proxies[urltype]
-            urltype, proxyhost = splittype(proxy)
-            host, selector = splithost(proxyhost)
-            url = (host, fullurl) # Signal special case to open_*()
-        else:
-            proxy = None
-        name = 'open_' + urltype
-        self.type = urltype
-        name = name.replace('-', '_')
-        if not hasattr(self, name):
-            if proxy:
-                return self.open_unknown_proxy(proxy, fullurl, data)
-            else:
-                return self.open_unknown(fullurl, data)
-        try:
-            if data is None:
-                return getattr(self, name)(url)
-            else:
-                return getattr(self, name)(url, data)
-        except socket.error, msg:
-            raise IOError, ('socket error', msg), sys.exc_info()[2]
-
-    def open_unknown(self, fullurl, data=None):
-        """Overridable interface to open unknown URL type."""
-        type, url = splittype(fullurl)
-        raise IOError, ('url error', 'unknown url type', type)
-
-    def open_unknown_proxy(self, proxy, fullurl, data=None):
-        """Overridable interface to open unknown URL type."""
-        type, url = splittype(fullurl)
-        raise IOError, ('url error', 'invalid proxy for %s' % type, proxy)
-
-    # External interface
-    def retrieve(self, url, filename=None, reporthook=None, data=None):
-        """retrieve(url) returns (filename, headers) for a local object
-        or (tempfilename, headers) for a remote object."""
-        url = unwrap(toBytes(url))
-        if self.tempcache and url in self.tempcache:
-            return self.tempcache[url]
-        type, url1 = splittype(url)
-        if filename is None and (not type or type == 'file'):
-            try:
-                fp = self.open_local_file(url1)
-                hdrs = fp.info()
-                fp.close()
-                return url2pathname(splithost(url1)[1]), hdrs
-            except IOError:
-                pass
-        fp = self.open(url, data)
-        try:
-            headers = fp.info()
-            if filename:
-                tfp = open(filename, 'wb')
-            else:
-                import tempfile
-                garbage, path = splittype(url)
-                garbage, path = splithost(path or "")
-                path, garbage = splitquery(path or "")
-                path, garbage = splitattr(path or "")
-                suffix = os.path.splitext(path)[1]
-                (fd, filename) = tempfile.mkstemp(suffix)
-                self.__tempfiles.append(filename)
-                tfp = os.fdopen(fd, 'wb')
-            try:
-                result = filename, headers
-                if self.tempcache is not None:
-                    self.tempcache[url] = result
-                bs = 1024*8
-                size = -1
-                read = 0
-                blocknum = 0
-                if reporthook:
-                    if "content-length" in headers:
-                        size = int(headers["Content-Length"])
-                    reporthook(blocknum, bs, size)
-                while 1:
-                    block = fp.read(bs)
-                    if block == "":
-                        break
-                    read += len(block)
-                    tfp.write(block)
-                    blocknum += 1
-                    if reporthook:
-                        reporthook(blocknum, bs, size)
-            finally:
-                tfp.close()
-        finally:
-            fp.close()
-
-        # raise exception if actual size does not match content-length header
-        if size >= 0 and read < size:
-            raise ContentTooShortError("retrieval incomplete: got only %i out "
-                                       "of %i bytes" % (read, size), result)
-
-        return result
-
-    # Each method named open_<type> knows how to open that type of URL
-
-    def open_http(self, url, data=None):
-        """Use HTTP protocol."""
-        import httplib
-        user_passwd = None
-        proxy_passwd= None
-        if isinstance(url, str):
-            host, selector = splithost(url)
-            if host:
-                user_passwd, host = splituser(host)
-                host = unquote(host)
-            realhost = host
-        else:
-            host, selector = url
-            # check whether the proxy contains authorization information
-            proxy_passwd, host = splituser(host)
-            # now we proceed with the url we want to obtain
-            urltype, rest = splittype(selector)
-            url = rest
-            user_passwd = None
-            if urltype.lower() != 'http':
-                realhost = None
-            else:
-                realhost, rest = splithost(rest)
-                if realhost:
-                    user_passwd, realhost = splituser(realhost)
-                if user_passwd:
-                    selector = "%s://%s%s" % (urltype, realhost, rest)
-                if proxy_bypass(realhost):
-                    host = realhost
-
-            #print "proxy via http:", host, selector
-        if not host: raise IOError, ('http error', 'no host given')
-
-        if proxy_passwd:
-            import base64
-            proxy_auth = base64.b64encode(proxy_passwd).strip()
-        else:
-            proxy_auth = None
-
-        if user_passwd:
-            import base64
-            auth = base64.b64encode(user_passwd).strip()
-        else:
-            auth = None
-        h = httplib.HTTP(host)
-        if data is not None:
-            h.putrequest('POST', selector)
-            h.putheader('Content-Type', 'application/x-www-form-urlencoded')
-            h.putheader('Content-Length', '%d' % len(data))
-        else:
-            h.putrequest('GET', selector)
-        if proxy_auth: h.putheader('Proxy-Authorization', 'Basic %s' % proxy_auth)
-        if auth: h.putheader('Authorization', 'Basic %s' % auth)
-        if realhost: h.putheader('Host', realhost)
-        for args in self.addheaders: h.putheader(*args)
-        h.endheaders(data)
-        errcode, errmsg, headers = h.getreply()
-        fp = h.getfile()
-        if errcode == -1:
-            if fp: fp.close()
-            # something went wrong with the HTTP status line
-            raise IOError, ('http protocol error', 0,
-                            'got a bad status line', None)
-        # According to RFC 2616, "2xx" code indicates that the client's
-        # request was successfully received, understood, and accepted.
-        if (200 <= errcode < 300):
-            return addinfourl(fp, headers, "http:" + url, errcode)
-        else:
-            if data is None:
-                return self.http_error(url, fp, errcode, errmsg, headers)
-            else:
-                return self.http_error(url, fp, errcode, errmsg, headers, data)
-
-    def http_error(self, url, fp, errcode, errmsg, headers, data=None):
-        """Handle http errors.
-        Derived class can override this, or provide specific handlers
-        named http_error_DDD where DDD is the 3-digit error code."""
-        # First check if there's a specific handler for this error
-        name = 'http_error_%d' % errcode
-        if hasattr(self, name):
-            method = getattr(self, name)
-            if data is None:
-                result = method(url, fp, errcode, errmsg, headers)
-            else:
-                result = method(url, fp, errcode, errmsg, headers, data)
-            if result: return result
-        return self.http_error_default(url, fp, errcode, errmsg, headers)
-
-    def http_error_default(self, url, fp, errcode, errmsg, headers):
-        """Default error handler: close the connection and raise IOError."""
-        void = fp.read()
-        fp.close()
-        raise IOError, ('http error', errcode, errmsg, headers)
-
-    if _have_ssl:
-        def open_https(self, url, data=None):
-            """Use HTTPS protocol."""
-
-            import httplib
-            user_passwd = None
-            proxy_passwd = None
-            if isinstance(url, str):
-                host, selector = splithost(url)
-                if host:
-                    user_passwd, host = splituser(host)
-                    host = unquote(host)
-                realhost = host
-            else:
-                host, selector = url
-                # here, we determine, whether the proxy contains authorization information
-                proxy_passwd, host = splituser(host)
-                urltype, rest = splittype(selector)
-                url = rest
-                user_passwd = None
-                if urltype.lower() != 'https':
-                    realhost = None
-                else:
-                    realhost, rest = splithost(rest)
-                    if realhost:
-                        user_passwd, realhost = splituser(realhost)
-                    if user_passwd:
-                        selector = "%s://%s%s" % (urltype, realhost, rest)
-                #print "proxy via https:", host, selector
-            if not host: raise IOError, ('https error', 'no host given')
-            if proxy_passwd:
-                import base64
-                proxy_auth = base64.b64encode(proxy_passwd).strip()
-            else:
-                proxy_auth = None
-            if user_passwd:
-                import base64
-                auth = base64.b64encode(user_passwd).strip()
-            else:
-                auth = None
-            h = httplib.HTTPS(host, 0,
-                              key_file=self.key_file,
-                              cert_file=self.cert_file)
-            if data is not None:
-                h.putrequest('POST', selector)
-                h.putheader('Content-Type',
-                            'application/x-www-form-urlencoded')
-                h.putheader('Content-Length', '%d' % len(data))
-            else:
-                h.putrequest('GET', selector)
-            if proxy_auth: h.putheader('Proxy-Authorization', 'Basic %s' % proxy_auth)
-            if auth: h.putheader('Authorization', 'Basic %s' % auth)
-            if realhost: h.putheader('Host', realhost)
-            for args in self.addheaders: h.putheader(*args)
-            h.endheaders(data)
-            errcode, errmsg, headers = h.getreply()
-            fp = h.getfile()
-            if errcode == -1:
-                if fp: fp.close()
-                # something went wrong with the HTTP status line
-                raise IOError, ('http protocol error', 0,
-                                'got a bad status line', None)
-            # According to RFC 2616, "2xx" code indicates that the client's
-            # request was successfully received, understood, and accepted.
-            if (200 <= errcode < 300):
-                return addinfourl(fp, headers, "https:" + url, errcode)
-            else:
-                if data is None:
-                    return self.http_error(url, fp, errcode, errmsg, headers)
-                else:
-                    return self.http_error(url, fp, errcode, errmsg, headers,
-                                           data)
-
-    def open_file(self, url):
-        """Use local file or FTP depending on form of URL."""
-        if not isinstance(url, str):
-            raise IOError, ('file error', 'proxy support for file protocol currently not implemented')
-        if url[:2] == '//' and url[2:3] != '/' and url[2:12].lower() != 'localhost/':
-            return self.open_ftp(url)
-        else:
-            return self.open_local_file(url)
-
-    def open_local_file(self, url):
-        """Use local file."""
-        import mimetypes, mimetools, email.utils
-        try:
-            from cStringIO import StringIO
-        except ImportError:
-            from StringIO import StringIO
-        host, file = splithost(url)
-        localname = url2pathname(file)
-        try:
-            stats = os.stat(localname)
-        except OSError, e:
-            raise IOError(e.errno, e.strerror, e.filename)
-        size = stats.st_size
-        modified = email.utils.formatdate(stats.st_mtime, usegmt=True)
-        mtype = mimetypes.guess_type(url)[0]
-        headers = mimetools.Message(StringIO(
-            'Content-Type: %s\nContent-Length: %d\nLast-modified: %s\n' %
-            (mtype or 'text/plain', size, modified)))
-        if not host:
-            urlfile = file
-            if file[:1] == '/':
-                urlfile = 'file://' + file
-            return addinfourl(open(localname, 'rb'),
-                              headers, urlfile)
-        host, port = splitport(host)
-        if not port \
-           and socket.gethostbyname(host) in (localhost(), thishost()):
-            urlfile = file
-            if file[:1] == '/':
-                urlfile = 'file://' + file
-            return addinfourl(open(localname, 'rb'),
-                              headers, urlfile)
-        raise IOError, ('local file error', 'not on local host')
-
-    def open_ftp(self, url):
-        """Use FTP protocol."""
-        if not isinstance(url, str):
-            raise IOError, ('ftp error', 'proxy support for ftp protocol currently not implemented')
-        import mimetypes, mimetools
-        try:
-            from cStringIO import StringIO
-        except ImportError:
-            from StringIO import StringIO
-        host, path = splithost(url)
-        if not host: raise IOError, ('ftp error', 'no host given')
-        host, port = splitport(host)
-        user, host = splituser(host)
-        if user: user, passwd = splitpasswd(user)
-        else: passwd = None
-        host = unquote(host)
-        user = user or ''
-        passwd = passwd or ''
-        host = socket.gethostbyname(host)
-        if not port:
-            import ftplib
-            port = ftplib.FTP_PORT
-        else:
-            port = int(port)
-        path, attrs = splitattr(path)
-        path = unquote(path)
-        dirs = path.split('/')
-        dirs, file = dirs[:-1], dirs[-1]
-        if dirs and not dirs[0]: dirs = dirs[1:]
-        if dirs and not dirs[0]: dirs[0] = '/'
-        key = user, host, port, '/'.join(dirs)
-        # XXX thread unsafe!
-        if len(self.ftpcache) > MAXFTPCACHE:
-            # Prune the cache, rather arbitrarily
-            for k in self.ftpcache.keys():
-                if k != key:
-                    v = self.ftpcache[k]
-                    del self.ftpcache[k]
-                    v.close()
-        try:
-            if not key in self.ftpcache:
-                self.ftpcache[key] = \
-                    ftpwrapper(user, passwd, host, port, dirs)
-            if not file: type = 'D'
-            else: type = 'I'
-            for attr in attrs:
-                attr, value = splitvalue(attr)
-                if attr.lower() == 'type' and \
-                   value in ('a', 'A', 'i', 'I', 'd', 'D'):
-                    type = value.upper()
-            (fp, retrlen) = self.ftpcache[key].retrfile(file, type)
-            mtype = mimetypes.guess_type("ftp:" + url)[0]
-            headers = ""
-            if mtype:
-                headers += "Content-Type: %s\n" % mtype
-            if retrlen is not None and retrlen >= 0:
-                headers += "Content-Length: %d\n" % retrlen
-            headers = mimetools.Message(StringIO(headers))
-            return addinfourl(fp, headers, "ftp:" + url)
-        except ftperrors(), msg:
-            raise IOError, ('ftp error', msg), sys.exc_info()[2]
-
-    def open_data(self, url, data=None):
-        """Use "data" URL."""
-        if not isinstance(url, str):
-            raise IOError, ('data error', 'proxy support for data protocol currently not implemented')
-        # ignore POSTed data
-        #
-        # syntax of data URLs:
-        # dataurl   := "data:" [ mediatype ] [ ";base64" ] "," data
-        # mediatype := [ type "/" subtype ] *( ";" parameter )
-        # data      := *urlchar
-        # parameter := attribute "=" value
-        import mimetools
-        try:
-            from cStringIO import StringIO
-        except ImportError:
-            from StringIO import StringIO
-        try:
-            [type, data] = url.split(',', 1)
-        except ValueError:
-            raise IOError, ('data error', 'bad data URL')
-        if not type:
-            type = 'text/plain;charset=US-ASCII'
-        semi = type.rfind(';')
-        if semi >= 0 and '=' not in type[semi:]:
-            encoding = type[semi+1:]
-            type = type[:semi]
-        else:
-            encoding = ''
-        msg = []
-        msg.append('Date: %s'%time.strftime('%a, %d %b %Y %H:%M:%S GMT',
-                                            time.gmtime(time.time())))
-        msg.append('Content-type: %s' % type)
-        if encoding == 'base64':
-            import base64
-            data = base64.decodestring(data)
-        else:
-            data = unquote(data)
-        msg.append('Content-Length: %d' % len(data))
-        msg.append('')
-        msg.append(data)
-        msg = '\n'.join(msg)
-        f = StringIO(msg)
-        headers = mimetools.Message(f, 0)
-        #f.fileno = None     # needed for addinfourl
-        return addinfourl(f, headers, url)
-
-
-class FancyURLopener(URLopener):
-    """Derived class with handlers for errors we can handle (perhaps)."""
-
-    def __init__(self, *args, **kwargs):
-        URLopener.__init__(self, *args, **kwargs)
-        self.auth_cache = {}
-        self.tries = 0
-        self.maxtries = 10
-
-    def http_error_default(self, url, fp, errcode, errmsg, headers):
-        """Default error handling -- don't raise an exception."""
-        return addinfourl(fp, headers, "http:" + url, errcode)
-
-    def http_error_302(self, url, fp, errcode, errmsg, headers, data=None):
-        """Error 302 -- relocated (temporarily)."""
-        self.tries += 1
-        if self.maxtries and self.tries >= self.maxtries:
-            if hasattr(self, "http_error_500"):
-                meth = self.http_error_500
-            else:
-                meth = self.http_error_default
-            self.tries = 0
-            return meth(url, fp, 500,
-                        "Internal Server Error: Redirect Recursion", headers)
-        result = self.redirect_internal(url, fp, errcode, errmsg, headers,
-                                        data)
-        self.tries = 0
-        return result
-
-    def redirect_internal(self, url, fp, errcode, errmsg, headers, data):
-        if 'location' in headers:
-            newurl = headers['location']
-        elif 'uri' in headers:
-            newurl = headers['uri']
-        else:
-            return
-        void = fp.read()
-        fp.close()
-        # In case the server sent a relative URL, join with original:
-        newurl = basejoin(self.type + ":" + url, newurl)
-
-        # For security reasons we do not allow redirects to protocols
-        # other than HTTP, HTTPS or FTP.
-        newurl_lower = newurl.lower()
-        if not (newurl_lower.startswith('http://') or
-                newurl_lower.startswith('https://') or
-                newurl_lower.startswith('ftp://')):
-            raise IOError('redirect error', errcode,
-                          errmsg + " - Redirection to url '%s' is not allowed" %
-                          newurl,
-                          headers)
-
-        return self.open(newurl)
-
-    def http_error_301(self, url, fp, errcode, errmsg, headers, data=None):
-        """Error 301 -- also relocated (permanently)."""
-        return self.http_error_302(url, fp, errcode, errmsg, headers, data)
-
-    def http_error_303(self, url, fp, errcode, errmsg, headers, data=None):
-        """Error 303 -- also relocated (essentially identical to 302)."""
-        return self.http_error_302(url, fp, errcode, errmsg, headers, data)
-
-    def http_error_307(self, url, fp, errcode, errmsg, headers, data=None):
-        """Error 307 -- relocated, but turn POST into error."""
-        if data is None:
-            return self.http_error_302(url, fp, errcode, errmsg, headers, data)
-        else:
-            return self.http_error_default(url, fp, errcode, errmsg, headers)
-
-    def http_error_401(self, url, fp, errcode, errmsg, headers, data=None):
-        """Error 401 -- authentication required.
-        This function supports Basic authentication only."""
-        if not 'www-authenticate' in headers:
-            URLopener.http_error_default(self, url, fp,
-                                         errcode, errmsg, headers)
-        stuff = headers['www-authenticate']
-        import re
-        match = re.match('[ \t]*([^ \t]+)[ \t]+realm="([^"]*)"', stuff)
-        if not match:
-            URLopener.http_error_default(self, url, fp,
-                                         errcode, errmsg, headers)
-        scheme, realm = match.groups()
-        if scheme.lower() != 'basic':
-            URLopener.http_error_default(self, url, fp,
-                                         errcode, errmsg, headers)
-        name = 'retry_' + self.type + '_basic_auth'
-        if data is None:
-            return getattr(self,name)(url, realm)
-        else:
-            return getattr(self,name)(url, realm, data)
-
-    def http_error_407(self, url, fp, errcode, errmsg, headers, data=None):
-        """Error 407 -- proxy authentication required.
-        This function supports Basic authentication only."""
-        if not 'proxy-authenticate' in headers:
-            URLopener.http_error_default(self, url, fp,
-                                         errcode, errmsg, headers)
-        stuff = headers['proxy-authenticate']
-        import re
-        match = re.match('[ \t]*([^ \t]+)[ \t]+realm="([^"]*)"', stuff)
-        if not match:
-            URLopener.http_error_default(self, url, fp,
-                                         errcode, errmsg, headers)
-        scheme, realm = match.groups()
-        if scheme.lower() != 'basic':
-            URLopener.http_error_default(self, url, fp,
-                                         errcode, errmsg, headers)
-        name = 'retry_proxy_' + self.type + '_basic_auth'
-        if data is None:
-            return getattr(self,name)(url, realm)
-        else:
-            return getattr(self,name)(url, realm, data)
-
-    def retry_proxy_http_basic_auth(self, url, realm, data=None):
-        host, selector = splithost(url)
-        newurl = 'http://' + host + selector
-        proxy = self.proxies['http']
-        urltype, proxyhost = splittype(proxy)
-        proxyhost, proxyselector = splithost(proxyhost)
-        i = proxyhost.find('@') + 1
-        proxyhost = proxyhost[i:]
-        user, passwd = self.get_user_passwd(proxyhost, realm, i)
-        if not (user or passwd): return None
-        proxyhost = quote(user, safe='') + ':' + quote(passwd, safe='') + '@' + proxyhost
-        self.proxies['http'] = 'http://' + proxyhost + proxyselector
-        if data is None:
-            return self.open(newurl)
-        else:
-            return self.open(newurl, data)
-
-    def retry_proxy_https_basic_auth(self, url, realm, data=None):
-        host, selector = splithost(url)
-        newurl = 'https://' + host + selector
-        proxy = self.proxies['https']
-        urltype, proxyhost = splittype(proxy)
-        proxyhost, proxyselector = splithost(proxyhost)
-        i = proxyhost.find('@') + 1
-        proxyhost = proxyhost[i:]
-        user, passwd = self.get_user_passwd(proxyhost, realm, i)
-        if not (user or passwd): return None
-        proxyhost = quote(user, safe='') + ':' + quote(passwd, safe='') + '@' + proxyhost
-        self.proxies['https'] = 'https://' + proxyhost + proxyselector
-        if data is None:
-            return self.open(newurl)
-        else:
-            return self.open(newurl, data)
-
-    def retry_http_basic_auth(self, url, realm, data=None):
-        host, selector = splithost(url)
-        i = host.find('@') + 1
-        host = host[i:]
-        user, passwd = self.get_user_passwd(host, realm, i)
-        if not (user or passwd): return None
-        host = quote(user, safe='') + ':' + quote(passwd, safe='') + '@' + host
-        newurl = 'http://' + host + selector
-        if data is None:
-            return self.open(newurl)
-        else:
-            return self.open(newurl, data)
-
-    def retry_https_basic_auth(self, url, realm, data=None):
-        host, selector = splithost(url)
-        i = host.find('@') + 1
-        host = host[i:]
-        user, passwd = self.get_user_passwd(host, realm, i)
-        if not (user or passwd): return None
-        host = quote(user, safe='') + ':' + quote(passwd, safe='') + '@' + host
-        newurl = 'https://' + host + selector
-        if data is None:
-            return self.open(newurl)
-        else:
-            return self.open(newurl, data)
-
-    def get_user_passwd(self, host, realm, clear_cache=0):
-        key = realm + '@' + host.lower()
-        if key in self.auth_cache:
-            if clear_cache:
-                del self.auth_cache[key]
-            else:
-                return self.auth_cache[key]
-        user, passwd = self.prompt_user_passwd(host, realm)
-        if user or passwd: self.auth_cache[key] = (user, passwd)
-        return user, passwd
-
-    def prompt_user_passwd(self, host, realm):
-        """Override this in a GUI environment!"""
-        import getpass
-        try:
-            user = raw_input("Enter username for %s at %s: " % (realm,
-                                                                host))
-            passwd = getpass.getpass("Enter password for %s in %s at %s: " %
-                (user, realm, host))
-            return user, passwd
-        except KeyboardInterrupt:
-            print
-            return None, None
-
-
-# Utility functions
-
-_localhost = None
-def localhost():
-    """Return the IP address of the magic hostname 'localhost'."""
-    global _localhost
-    if _localhost is None:
-        _localhost = socket.gethostbyname('localhost')
-    return _localhost
-
-_thishost = None
-def thishost():
-    """Return the IP address of the current host."""
-    global _thishost
-    if _thishost is None:
-        _thishost = socket.gethostbyname(socket.gethostname())
-    return _thishost
-
-_ftperrors = None
-def ftperrors():
-    """Return the set of errors raised by the FTP class."""
-    global _ftperrors
-    if _ftperrors is None:
-        import ftplib
-        _ftperrors = ftplib.all_errors
-    return _ftperrors
-
-_noheaders = None
-def noheaders():
-    """Return an empty mimetools.Message object."""
-    global _noheaders
-    if _noheaders is None:
-        import mimetools
-        try:
-            from cStringIO import StringIO
-        except ImportError:
-            from StringIO import StringIO
-        _noheaders = mimetools.Message(StringIO(), 0)
-        _noheaders.fp.close()   # Recycle file descriptor
-    return _noheaders
-
-
-# Utility classes
-
-class ftpwrapper:
-    """Class used by open_ftp() for cache of open FTP connections."""
-
-    def __init__(self, user, passwd, host, port, dirs,
-                 timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
-        self.user = user
-        self.passwd = passwd
-        self.host = host
-        self.port = port
-        self.dirs = dirs
-        self.timeout = timeout
-        self.init()
-
-    def init(self):
-        import ftplib
-        self.busy = 0
-        self.ftp = ftplib.FTP()
-        self.ftp.connect(self.host, self.port, self.timeout)
-        self.ftp.login(self.user, self.passwd)
-        for dir in self.dirs:
-            self.ftp.cwd(dir)
-
-    def retrfile(self, file, type):
-        import ftplib
-        self.endtransfer()
-        if type in ('d', 'D'): cmd = 'TYPE A'; isdir = 1
-        else: cmd = 'TYPE ' + type; isdir = 0
-        try:
-            self.ftp.voidcmd(cmd)
-        except ftplib.all_errors:
-            self.init()
-            self.ftp.voidcmd(cmd)
-        conn = None
-        if file and not isdir:
-            # Try to retrieve as a file
-            try:
-                cmd = 'RETR ' + file
-                conn = self.ftp.ntransfercmd(cmd)
-            except ftplib.error_perm, reason:
-                if str(reason)[:3] != '550':
-                    raise IOError, ('ftp error', reason), sys.exc_info()[2]
-        if not conn:
-            # Set transfer mode to ASCII!
-            self.ftp.voidcmd('TYPE A')
-            # Try a directory listing. Verify that directory exists.
-            if file:
-                pwd = self.ftp.pwd()
-                try:
-                    try:
-                        self.ftp.cwd(file)
-                    except ftplib.error_perm, reason:
-                        raise IOError, ('ftp error', reason), sys.exc_info()[2]
-                finally:
-                    self.ftp.cwd(pwd)
-                cmd = 'LIST ' + file
-            else:
-                cmd = 'LIST'
-            conn = self.ftp.ntransfercmd(cmd)
-        self.busy = 1
-        # Pass back both a suitably decorated object and a retrieval length
-        return (addclosehook(conn[0].makefile('rb'),
-                             self.endtransfer), conn[1])
-    def endtransfer(self):
-        if not self.busy:
-            return
-        self.busy = 0
-        try:
-            self.ftp.voidresp()
-        except ftperrors():
-            pass
-
-    def close(self):
-        self.endtransfer()
-        try:
-            self.ftp.close()
-        except ftperrors():
-            pass
-
-class addbase:
-    """Base class for addinfo and addclosehook."""
-
-    def __init__(self, fp):
-        self.fp = fp
-        self.read = self.fp.read
-        self.readline = self.fp.readline
-        if hasattr(self.fp, "readlines"): self.readlines = self.fp.readlines
-        if hasattr(self.fp, "fileno"):
-            self.fileno = self.fp.fileno
-        else:
-            self.fileno = lambda: None
-        if hasattr(self.fp, "__iter__"):
-            self.__iter__ = self.fp.__iter__
-            if hasattr(self.fp, "next"):
-                self.next = self.fp.next
-
-    def __repr__(self):
-        return '<%s at %r whose fp = %r>' % (self.__class__.__name__,
-                                             id(self), self.fp)
-
-    def close(self):
-        self.read = None
-        self.readline = None
-        self.readlines = None
-        self.fileno = None
-        if self.fp: self.fp.close()
-        self.fp = None
-
-class addclosehook(addbase):
-    """Class to add a close hook to an open file."""
-
-    def __init__(self, fp, closehook, *hookargs):
-        addbase.__init__(self, fp)
-        self.closehook = closehook
-        self.hookargs = hookargs
-
-    def close(self):
-        addbase.close(self)
-        if self.closehook:
-            self.closehook(*self.hookargs)
-            self.closehook = None
-            self.hookargs = None
-
-class addinfo(addbase):
-    """class to add an info() method to an open file."""
-
-    def __init__(self, fp, headers):
-        addbase.__init__(self, fp)
-        self.headers = headers
-
-    def info(self):
-        return self.headers
-
-class addinfourl(addbase):
-    """class to add info() and geturl() methods to an open file."""
-
-    def __init__(self, fp, headers, url, code=None):
-        addbase.__init__(self, fp)
-        self.headers = headers
-        self.url = url
-        self.code = code
-
-    def info(self):
-        return self.headers
-
-    def getcode(self):
-        return self.code
-
-    def geturl(self):
-        return self.url
-
-
-# Utilities to parse URLs (most of these return None for missing parts):
-# unwrap('<URL:type://host/path>') --> 'type://host/path'
-# splittype('type:opaquestring') --> 'type', 'opaquestring'
-# splithost('//host[:port]/path') --> 'host[:port]', '/path'
-# splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'
-# splitpasswd('user:passwd') -> 'user', 'passwd'
-# splitport('host:port') --> 'host', 'port'
-# splitquery('/path?query') --> '/path', 'query'
-# splittag('/path#tag') --> '/path', 'tag'
-# splitattr('/path;attr1=value1;attr2=value2;...') ->
-#   '/path', ['attr1=value1', 'attr2=value2', ...]
-# splitvalue('attr=value') --> 'attr', 'value'
-# unquote('abc%20def') -> 'abc def'
-# quote('abc def') -> 'abc%20def')
-
-try:
-    unicode
-except NameError:
-    def _is_unicode(x):
-        return 0
-else:
-    def _is_unicode(x):
-        return isinstance(x, unicode)
-
-def toBytes(url):
-    """toBytes(u"URL") --> 'URL'."""
-    # Most URL schemes require ASCII. If that changes, the conversion
-    # can be relaxed
-    if _is_unicode(url):
-        try:
-            url = url.encode("ASCII")
-        except UnicodeError:
-            raise UnicodeError("URL " + repr(url) +
-                               " contains non-ASCII characters")
-    return url
-
-def unwrap(url):
-    """unwrap('<URL:type://host/path>') --> 'type://host/path'."""
-    url = url.strip()
-    if url[:1] == '<' and url[-1:] == '>':
-        url = url[1:-1].strip()
-    if url[:4] == 'URL:': url = url[4:].strip()
-    return url
-
-_typeprog = None
-def splittype(url):
-    """splittype('type:opaquestring') --> 'type', 'opaquestring'."""
-    global _typeprog
-    if _typeprog is None:
-        import re
-        _typeprog = re.compile('^([^/:]+):')
-
-    match = _typeprog.match(url)
-    if match:
-        scheme = match.group(1)
-        return scheme.lower(), url[len(scheme) + 1:]
-    return None, url
-
-_hostprog = None
-def splithost(url):
-    """splithost('//host[:port]/path') --> 'host[:port]', '/path'."""
-    global _hostprog
-    if _hostprog is None:
-        import re
-        _hostprog = re.compile('^//([^/?]*)(.*)$')
-
-    match = _hostprog.match(url)
-    if match:
-        host_port = match.group(1)
-        path = match.group(2)
-        if path and not path.startswith('/'):
-            path = '/' + path
-        return host_port, path
-    return None, url
-
-_userprog = None
-def splituser(host):
-    """splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'."""
-    global _userprog
-    if _userprog is None:
-        import re
-        _userprog = re.compile('^(.*)@(.*)$')
-
-    match = _userprog.match(host)
-    if match: return match.group(1, 2)
-    return None, host
-
-_passwdprog = None
-def splitpasswd(user):
-    """splitpasswd('user:passwd') -> 'user', 'passwd'."""
-    global _passwdprog
-    if _passwdprog is None:
-        import re
-        _passwdprog = re.compile('^([^:]*):(.*)$',re.S)
-
-    match = _passwdprog.match(user)
-    if match: return match.group(1, 2)
-    return user, None
-
-# splittag('/path#tag') --> '/path', 'tag'
-_portprog = None
-def splitport(host):
-    """splitport('host:port') --> 'host', 'port'."""
-    global _portprog
-    if _portprog is None:
-        import re
-        _portprog = re.compile('^(.*):([0-9]+)$')
-
-    match = _portprog.match(host)
-    if match: return match.group(1, 2)
-    return host, None
-
-_nportprog = None
-def splitnport(host, defport=-1):
-    """Split host and port, returning numeric port.
-    Return given default port if no ':' found; defaults to -1.
-    Return numerical port if a valid number are found after ':'.
-    Return None if ':' but not a valid number."""
-    global _nportprog
-    if _nportprog is None:
-        import re
-        _nportprog = re.compile('^(.*):(.*)$')
-
-    match = _nportprog.match(host)
-    if match:
-        host, port = match.group(1, 2)
-        try:
-            if not port: raise ValueError, "no digits"
-            nport = int(port)
-        except ValueError:
-            nport = None
-        return host, nport
-    return host, defport
-
-_queryprog = None
-def splitquery(url):
-    """splitquery('/path?query') --> '/path', 'query'."""
-    global _queryprog
-    if _queryprog is None:
-        import re
-        _queryprog = re.compile('^(.*)\?([^?]*)$')
-
-    match = _queryprog.match(url)
-    if match: return match.group(1, 2)
-    return url, None
-
-_tagprog = None
-def splittag(url):
-    """splittag('/path#tag') --> '/path', 'tag'."""
-    global _tagprog
-    if _tagprog is None:
-        import re
-        _tagprog = re.compile('^(.*)#([^#]*)$')
-
-    match = _tagprog.match(url)
-    if match: return match.group(1, 2)
-    return url, None
-
-def splitattr(url):
-    """splitattr('/path;attr1=value1;attr2=value2;...') ->
-        '/path', ['attr1=value1', 'attr2=value2', ...]."""
-    words = url.split(';')
-    return words[0], words[1:]
-
-_valueprog = None
-def splitvalue(attr):
-    """splitvalue('attr=value') --> 'attr', 'value'."""
-    global _valueprog
-    if _valueprog is None:
-        import re
-        _valueprog = re.compile('^([^=]*)=(.*)$')
-
-    match = _valueprog.match(attr)
-    if match: return match.group(1, 2)
-    return attr, None
-
-# urlparse contains a duplicate of this method to avoid a circular import.  If
-# you update this method, also update the copy in urlparse.  This code
-# duplication does not exist in Python3.
-
-_hexdig = '0123456789ABCDEFabcdef'
-_hextochr = dict((a + b, chr(int(a + b, 16)))
-                 for a in _hexdig for b in _hexdig)
-
-def unquote(s):
-    """unquote('abc%20def') -> 'abc def'."""
-    res = s.split('%')
-    # fastpath
-    if len(res) == 1:
-        return s
-    s = res[0]
-    for item in res[1:]:
-        try:
-            s += _hextochr[item[:2]] + item[2:]
-        except KeyError:
-            s += '%' + item
-        except UnicodeDecodeError:
-            s += unichr(int(item[:2], 16)) + item[2:]
-    return s
-
-def unquote_plus(s):
-    """unquote('%7e/abc+def') -> '~/abc def'"""
-    s = s.replace('+', ' ')
-    return unquote(s)
-
-always_safe = ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-               'abcdefghijklmnopqrstuvwxyz'
-               '0123456789' '_.-')
-_safe_map = {}
-for i, c in zip(xrange(256), str(bytearray(xrange(256)))):
-    _safe_map[c] = c if (i < 128 and c in always_safe) else '%{:02X}'.format(i)
-_safe_quoters = {}
-
-def quote(s, safe='/'):
-    """quote('abc def') -> 'abc%20def'
-
-    Each part of a URL, e.g. the path info, the query, etc., has a
-    different set of reserved characters that must be quoted.
-
-    RFC 2396 Uniform Resource Identifiers (URI): Generic Syntax lists
-    the following reserved characters.
-
-    reserved    = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
-                  "$" | ","
-
-    Each of these characters is reserved in some component of a URL,
-    but not necessarily in all of them.
-
-    By default, the quote function is intended for quoting the path
-    section of a URL.  Thus, it will not encode '/'.  This character
-    is reserved, but in typical usage the quote function is being
-    called on a path where the existing slash characters are used as
-    reserved characters.
-    """
-    # fastpath
-    if not s:
-        if s is None:
-            raise TypeError('None object cannot be quoted')
-        return s
-    cachekey = (safe, always_safe)
-    try:
-        (quoter, safe) = _safe_quoters[cachekey]
-    except KeyError:
-        safe_map = _safe_map.copy()
-        safe_map.update([(c, c) for c in safe])
-        quoter = safe_map.__getitem__
-        safe = always_safe + safe
-        _safe_quoters[cachekey] = (quoter, safe)
-    if not s.rstrip(safe):
-        return s
-    return ''.join(map(quoter, s))
-
-def quote_plus(s, safe=''):
-    """Quote the query fragment of a URL; replacing ' ' with '+'"""
-    if ' ' in s:
-        s = quote(s, safe + ' ')
-        return s.replace(' ', '+')
-    return quote(s, safe)
-
-def urlencode(query, doseq=0):
-    """Encode a sequence of two-element tuples or dictionary into a URL query string.
-
-    If any values in the query arg are sequences and doseq is true, each
-    sequence element is converted to a separate parameter.
-
-    If the query arg is a sequence of two-element tuples, the order of the
-    parameters in the output will match the order of parameters in the
-    input.
-    """
-
-    if hasattr(query,"items"):
-        # mapping objects
-        query = query.items()
-    else:
-        # it's a bother at times that strings and string-like objects are
-        # sequences...
-        try:
-            # non-sequence items should not work with len()
-            # non-empty strings will fail this
-            if len(query) and not isinstance(query[0], tuple):
-                raise TypeError
-            # zero-length sequences of all types will get here and succeed,
-            # but that's a minor nit - since the original implementation
-            # allowed empty dicts that type of behavior probably should be
-            # preserved for consistency
-        except TypeError:
-            ty,va,tb = sys.exc_info()
-            raise TypeError, "not a valid non-string sequence or mapping object", tb
-
-    l = []
-    if not doseq:
-        # preserve old behavior
-        for k, v in query:
-            k = quote_plus(str(k))
-            v = quote_plus(str(v))
-            l.append(k + '=' + v)
-    else:
-        for k, v in query:
-            k = quote_plus(str(k))
-            if isinstance(v, str):
-                v = quote_plus(v)
-                l.append(k + '=' + v)
-            elif _is_unicode(v):
-                # is there a reasonable way to convert to ASCII?
-                # encode generates a string, but "replace" or "ignore"
-                # lose information and "strict" can raise UnicodeError
-                v = quote_plus(v.encode("ASCII","replace"))
-                l.append(k + '=' + v)
-            else:
-                try:
-                    # is this a sufficient test for sequence-ness?
-                    len(v)
-                except TypeError:
-                    # not a sequence
-                    v = quote_plus(str(v))
-                    l.append(k + '=' + v)
-                else:
-                    # loop over the sequence
-                    for elt in v:
-                        l.append(k + '=' + quote_plus(str(elt)))
-    return '&'.join(l)
-
-# Proxy handling
-def getproxies_environment():
-    """Return a dictionary of scheme -> proxy server URL mappings.
-
-    Scan the environment for variables named <scheme>_proxy;
-    this seems to be the standard convention.  If you need a
-    different way, you can pass a proxies dictionary to the
-    [Fancy]URLopener constructor.
-
-    """
-    proxies = {}
-    for name, value in os.environ.items():
-        name = name.lower()
-        if value and name[-6:] == '_proxy':
-            proxies[name[:-6]] = value
-    return proxies
-
-def proxy_bypass_environment(host):
-    """Test if proxies should not be used for a particular host.
-
-    Checks the environment for a variable named no_proxy, which should
-    be a list of DNS suffixes separated by commas, or '*' for all hosts.
-    """
-    no_proxy = os.environ.get('no_proxy', '') or os.environ.get('NO_PROXY', '')
-    # '*' is special case for always bypass
-    if no_proxy == '*':
-        return 1
-    # strip port off host
-    hostonly, port = splitport(host)
-    # check if the host ends with any of the DNS suffixes
-    for name in no_proxy.split(','):
-        if name and (hostonly.endswith(name) or host.endswith(name)):
-            return 1
-    # otherwise, don't bypass
-    return 0
-
-
-if sys.platform == 'darwin':
-    from _scproxy import _get_proxy_settings, _get_proxies
-
-    def proxy_bypass_macosx_sysconf(host):
-        """
-        Return True iff this host shouldn't be accessed using a proxy
-
-        This function uses the MacOSX framework SystemConfiguration
-        to fetch the proxy information.
-        """
-        import re
-        import socket
-        from fnmatch import fnmatch
-
-        hostonly, port = splitport(host)
-
-        def ip2num(ipAddr):
-            parts = ipAddr.split('.')
-            parts = map(int, parts)
-            if len(parts) != 4:
-                parts = (parts + [0, 0, 0, 0])[:4]
-            return (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8) | parts[3]
-
-        proxy_settings = _get_proxy_settings()
-
-        # Check for simple host names:
-        if '.' not in host:
-            if proxy_settings['exclude_simple']:
-                return True
-
-        hostIP = None
-
-        for value in proxy_settings.get('exceptions', ()):
-            # Items in the list are strings like these: *.local, 169.254/16
-            if not value: continue
-
-            m = re.match(r"(\d+(?:\.\d+)*)(/\d+)?", value)
-            if m is not None:
-                if hostIP is None:
-                    try:
-                        hostIP = socket.gethostbyname(hostonly)
-                        hostIP = ip2num(hostIP)
-                    except socket.error:
-                        continue
-
-                base = ip2num(m.group(1))
-                mask = m.group(2)
-                if mask is None:
-                    mask = 8 * (m.group(1).count('.') + 1)
-
-                else:
-                    mask = int(mask[1:])
-                mask = 32 - mask
-
-                if (hostIP >> mask) == (base >> mask):
-                    return True
-
-            elif fnmatch(host, value):
-                return True
-
-        return False
-
-    def getproxies_macosx_sysconf():
-        """Return a dictionary of scheme -> proxy server URL mappings.
-
-        This function uses the MacOSX framework SystemConfiguration
-        to fetch the proxy information.
-        """
-        return _get_proxies()
-
-    def proxy_bypass(host):
-        if getproxies_environment():
-            return proxy_bypass_environment(host)
-        else:
-            return proxy_bypass_macosx_sysconf(host)
-
-    def getproxies():
-        return getproxies_environment() or getproxies_macosx_sysconf()
-
-elif os.name == 'nt':
-    def getproxies_registry():
-        """Return a dictionary of scheme -> proxy server URL mappings.
-
-        Win32 uses the registry to store proxies.
-
-        """
-        proxies = {}
-        try:
-            import _winreg
-        except ImportError:
-            # Std module, so should be around - but you never know!
-            return proxies
-        try:
-            internetSettings = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,
-                r'Software\Microsoft\Windows\CurrentVersion\Internet Settings')
-            proxyEnable = _winreg.QueryValueEx(internetSettings,
-                                               'ProxyEnable')[0]
-            if proxyEnable:
-                # Returned as Unicode but problems if not converted to ASCII
-                proxyServer = str(_winreg.QueryValueEx(internetSettings,
-                                                       'ProxyServer')[0])
-                if '=' in proxyServer:
-                    # Per-protocol settings
-                    for p in proxyServer.split(';'):
-                        protocol, address = p.split('=', 1)
-                        # See if address has a type:// prefix
-                        import re
-                        if not re.match('^([^/:]+)://', address):
-                            address = '%s://%s' % (protocol, address)
-                        proxies[protocol] = address
-                else:
-                    # Use one setting for all protocols
-                    if proxyServer[:5] == 'http:':
-                        proxies['http'] = proxyServer
-                    else:
-                        proxies['http'] = 'http://%s' % proxyServer
-                        proxies['https'] = 'https://%s' % proxyServer
-                        proxies['ftp'] = 'ftp://%s' % proxyServer
-            internetSettings.Close()
-        except (WindowsError, ValueError, TypeError):
-            # Either registry key not found etc, or the value in an
-            # unexpected format.
-            # proxies already set up to be empty so nothing to do
-            pass
-        return proxies
-
-    def getproxies():
-        """Return a dictionary of scheme -> proxy server URL mappings.
-
-        Returns settings gathered from the environment, if specified,
-        or the registry.
-
-        """
-        return getproxies_environment() or getproxies_registry()
-
-    def proxy_bypass_registry(host):
-        try:
-            import _winreg
-            import re
-        except ImportError:
-            # Std modules, so should be around - but you never know!
-            return 0
-        try:
-            internetSettings = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,
-                r'Software\Microsoft\Windows\CurrentVersion\Internet Settings')
-            proxyEnable = _winreg.QueryValueEx(internetSettings,
-                                               'ProxyEnable')[0]
-            proxyOverride = str(_winreg.QueryValueEx(internetSettings,
-                                                     'ProxyOverride')[0])
-            # ^^^^ Returned as Unicode but problems if not converted to ASCII
-        except WindowsError:
-            return 0
-        if not proxyEnable or not proxyOverride:
-            return 0
-        # try to make a host list from name and IP address.
-        rawHost, port = splitport(host)
-        host = [rawHost]
-        try:
-            addr = socket.gethostbyname(rawHost)
-            if addr != rawHost:
-                host.append(addr)
-        except socket.error:
-            pass
-        try:
-            fqdn = socket.getfqdn(rawHost)
-            if fqdn != rawHost:
-                host.append(fqdn)
-        except socket.error:
-            pass
-        # make a check value list from the registry entry: replace the
-        # '<local>' string by the localhost entry and the corresponding
-        # canonical entry.
-        proxyOverride = proxyOverride.split(';')
-        # now check if we match one of the registry values.
-        for test in proxyOverride:
-            if test == '<local>':
-                if '.' not in rawHost:
-                    return 1
-            test = test.replace(".", r"\.")     # mask dots
-            test = test.replace("*", r".*")     # change glob sequence
-            test = test.replace("?", r".")      # change glob char
-            for val in host:
-                # print "%s <--> %s" %( test, val )
-                if re.match(test, val, re.I):
-                    return 1
-        return 0
-
-    def proxy_bypass(host):
-        """Return a dictionary of scheme -> proxy server URL mappings.
-
-        Returns settings gathered from the environment, if specified,
-        or the registry.
-
-        """
-        if getproxies_environment():
-            return proxy_bypass_environment(host)
-        else:
-            return proxy_bypass_registry(host)
-
-else:
-    # By default use environment variables
-    getproxies = getproxies_environment
-    proxy_bypass = proxy_bypass_environment
-
-# Test and time quote() and unquote()
-def test1():
-    s = ''
-    for i in range(256): s = s + chr(i)
-    s = s*4
-    t0 = time.time()
-    qs = quote(s)
-    uqs = unquote(qs)
-    t1 = time.time()
-    if uqs != s:
-        print 'Wrong!'
-    print repr(s)
-    print repr(qs)
-    print repr(uqs)
-    print round(t1 - t0, 3), 'sec'
-
-
-def reporthook(blocknum, blocksize, totalsize):
-    # Report during remote transfers
-    print "Block number: %d, Block size: %d, Total size: %d" % (
-        blocknum, blocksize, totalsize)
-
-# Test program
-def test(args=[]):
-    if not args:
-        args = [
-            '/etc/passwd',
-            'file:/etc/passwd',
-            'file://localhost/etc/passwd',
-            'ftp://ftp.gnu.org/pub/README',
-            'http://www.python.org/index.html',
-            ]
-        if hasattr(URLopener, "open_https"):
-            args.append('https://synergy.as.cmu.edu/~geek/')
-    try:
-        for url in args:
-            print '-'*10, url, '-'*10
-            fn, h = urlretrieve(url, None, reporthook)
-            print fn
-            if h:
-                print '======'
-                for k in h.keys(): print k + ':', h[k]
-                print '======'
-            with open(fn, 'rb') as fp:
-                data = fp.read()
-            if '\r' in data:
-                table = string.maketrans("", "")
-                data = data.translate(table, "\r")
-            print data
-            fn, h = None, None
-        print '-'*40
-    finally:
-        urlcleanup()
-
-def main():
-    import getopt, sys
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "th")
-    except getopt.error, msg:
-        print msg
-        print "Use -h for help"
-        return
-    t = 0
-    for o, a in opts:
-        if o == '-t':
-            t = t + 1
-        if o == '-h':
-            print "Usage: python urllib.py [-t] [url ...]"
-            print "-t runs self-test;",
-            print "otherwise, contents of urls are printed"
-            return
-    if t:
-        if t > 1:
-            test1()
-        test(args)
-    else:
-        if not args:
-            print "Use -h for help"
-        for url in args:
-            print urlopen(url).read(),
-
-# Run test program when run as a script
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/urllib2.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/urllib2.py
deleted file mode 100644
index 62820e6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/urllib2.py
+++ /dev/null
@@ -1,1448 +0,0 @@
-"""An extensible library for opening URLs using a variety of protocols
-
-The simplest way to use this module is to call the urlopen function,
-which accepts a string containing a URL or a Request object (described
-below).  It opens the URL and returns the results as file-like
-object; the returned object has some extra methods described below.
-
-The OpenerDirector manages a collection of Handler objects that do
-all the actual work.  Each Handler implements a particular protocol or
-option.  The OpenerDirector is a composite object that invokes the
-Handlers needed to open the requested URL.  For example, the
-HTTPHandler performs HTTP GET and POST requests and deals with
-non-error returns.  The HTTPRedirectHandler automatically deals with
-HTTP 301, 302, 303 and 307 redirect errors, and the HTTPDigestAuthHandler
-deals with digest authentication.
-
-urlopen(url, data=None) -- Basic usage is the same as original
-urllib.  pass the url and optionally data to post to an HTTP URL, and
-get a file-like object back.  One difference is that you can also pass
-a Request instance instead of URL.  Raises a URLError (subclass of
-IOError); for HTTP errors, raises an HTTPError, which can also be
-treated as a valid response.
-
-build_opener -- Function that creates a new OpenerDirector instance.
-Will install the default handlers.  Accepts one or more Handlers as
-arguments, either instances or Handler classes that it will
-instantiate.  If one of the argument is a subclass of the default
-handler, the argument will be installed instead of the default.
-
-install_opener -- Installs a new opener as the default opener.
-
-objects of interest:
-
-OpenerDirector -- Sets up the User Agent as the Python-urllib client and manages
-the Handler classes, while dealing with requests and responses.
-
-Request -- An object that encapsulates the state of a request.  The
-state can be as simple as the URL.  It can also include extra HTTP
-headers, e.g. a User-Agent.
-
-BaseHandler --
-
-exceptions:
-URLError -- A subclass of IOError, individual protocols have their own
-specific subclass.
-
-HTTPError -- Also a valid HTTP response, so you can treat an HTTP error
-as an exceptional event or valid response.
-
-internals:
-BaseHandler and parent
-_call_chain conventions
-
-Example usage:
-
-import urllib2
-
-# set up authentication info
-authinfo = urllib2.HTTPBasicAuthHandler()
-authinfo.add_password(realm='PDQ Application',
-                      uri='https://mahler:8092/site-updates.py',
-                      user='klem',
-                      passwd='geheim$parole')
-
-proxy_support = urllib2.ProxyHandler({"http" : "http://ahad-haam:3128"})
-
-# build a new opener that adds authentication and caching FTP handlers
-opener = urllib2.build_opener(proxy_support, authinfo, urllib2.CacheFTPHandler)
-
-# install it
-urllib2.install_opener(opener)
-
-f = urllib2.urlopen('http://www.python.org/')
-
-
-"""
-
-# XXX issues:
-# If an authentication error handler that tries to perform
-# authentication for some reason but fails, how should the error be
-# signalled?  The client needs to know the HTTP error code.  But if
-# the handler knows that the problem was, e.g., that it didn't know
-# that hash algo that requested in the challenge, it would be good to
-# pass that information along to the client, too.
-# ftp errors aren't handled cleanly
-# check digest against correct (i.e. non-apache) implementation
-
-# Possible extensions:
-# complex proxies  XXX not sure what exactly was meant by this
-# abstract factory for opener
-
-import base64
-import hashlib
-import httplib
-import mimetools
-import os
-import posixpath
-import random
-import re
-import socket
-import sys
-import time
-import urlparse
-import bisect
-
-try:
-    from cStringIO import StringIO
-except ImportError:
-    from StringIO import StringIO
-
-from urllib import (unwrap, unquote, splittype, splithost, quote,
-     addinfourl, splitport, splittag,
-     splitattr, ftpwrapper, splituser, splitpasswd, splitvalue)
-
-# support for FileHandler, proxies via environment variables
-from urllib import localhost, url2pathname, getproxies, proxy_bypass
-
-# used in User-Agent header sent
-__version__ = sys.version[:3]
-
-_opener = None
-def urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
-    global _opener
-    if _opener is None:
-        _opener = build_opener()
-    return _opener.open(url, data, timeout)
-
-def install_opener(opener):
-    global _opener
-    _opener = opener
-
-# do these error classes make sense?
-# make sure all of the IOError stuff is overridden.  we just want to be
-# subtypes.
-
-class URLError(IOError):
-    # URLError is a sub-type of IOError, but it doesn't share any of
-    # the implementation.  need to override __init__ and __str__.
-    # It sets self.args for compatibility with other EnvironmentError
-    # subclasses, but args doesn't have the typical format with errno in
-    # slot 0 and strerror in slot 1.  This may be better than nothing.
-    def __init__(self, reason):
-        self.args = reason,
-        self.reason = reason
-
-    def __str__(self):
-        return '<urlopen error %s>' % self.reason
-
-class HTTPError(URLError, addinfourl):
-    """Raised when HTTP error occurs, but also acts like non-error return"""
-    __super_init = addinfourl.__init__
-
-    def __init__(self, url, code, msg, hdrs, fp):
-        self.code = code
-        self.msg = msg
-        self.hdrs = hdrs
-        self.fp = fp
-        self.filename = url
-        # The addinfourl classes depend on fp being a valid file
-        # object.  In some cases, the HTTPError may not have a valid
-        # file object.  If this happens, the simplest workaround is to
-        # not initialize the base classes.
-        if fp is not None:
-            self.__super_init(fp, hdrs, url, code)
-
-    def __str__(self):
-        return 'HTTP Error %s: %s' % (self.code, self.msg)
-
-# copied from cookielib.py
-_cut_port_re = re.compile(r":\d+$")
-def request_host(request):
-    """Return request-host, as defined by RFC 2965.
-
-    Variation from RFC: returned value is lowercased, for convenient
-    comparison.
-
-    """
-    url = request.get_full_url()
-    host = urlparse.urlparse(url)[1]
-    if host == "":
-        host = request.get_header("Host", "")
-
-    # remove port, if present
-    host = _cut_port_re.sub("", host, 1)
-    return host.lower()
-
-class Request:
-
-    def __init__(self, url, data=None, headers={},
-                 origin_req_host=None, unverifiable=False):
-        # unwrap('<URL:type://host/path>') --> 'type://host/path'
-        self.__original = unwrap(url)
-        self.__original, self.__fragment = splittag(self.__original)
-        self.type = None
-        # self.__r_type is what's left after doing the splittype
-        self.host = None
-        self.port = None
-        self._tunnel_host = None
-        self.data = data
-        self.headers = {}
-        for key, value in headers.items():
-            self.add_header(key, value)
-        self.unredirected_hdrs = {}
-        if origin_req_host is None:
-            origin_req_host = request_host(self)
-        self.origin_req_host = origin_req_host
-        self.unverifiable = unverifiable
-
-    def __getattr__(self, attr):
-        # XXX this is a fallback mechanism to guard against these
-        # methods getting called in a non-standard order.  this may be
-        # too complicated and/or unnecessary.
-        # XXX should the __r_XXX attributes be public?
-        if attr[:12] == '_Request__r_':
-            name = attr[12:]
-            if hasattr(Request, 'get_' + name):
-                getattr(self, 'get_' + name)()
-                return getattr(self, attr)
-        raise AttributeError, attr
-
-    def get_method(self):
-        if self.has_data():
-            return "POST"
-        else:
-            return "GET"
-
-    # XXX these helper methods are lame
-
-    def add_data(self, data):
-        self.data = data
-
-    def has_data(self):
-        return self.data is not None
-
-    def get_data(self):
-        return self.data
-
-    def get_full_url(self):
-        if self.__fragment:
-            return '%s#%s' % (self.__original, self.__fragment)
-        else:
-            return self.__original
-
-    def get_type(self):
-        if self.type is None:
-            self.type, self.__r_type = splittype(self.__original)
-            if self.type is None:
-                raise ValueError, "unknown url type: %s" % self.__original
-        return self.type
-
-    def get_host(self):
-        if self.host is None:
-            self.host, self.__r_host = splithost(self.__r_type)
-            if self.host:
-                self.host = unquote(self.host)
-        return self.host
-
-    def get_selector(self):
-        return self.__r_host
-
-    def set_proxy(self, host, type):
-        if self.type == 'https' and not self._tunnel_host:
-            self._tunnel_host = self.host
-        else:
-            self.type = type
-            self.__r_host = self.__original
-
-        self.host = host
-
-    def has_proxy(self):
-        return self.__r_host == self.__original
-
-    def get_origin_req_host(self):
-        return self.origin_req_host
-
-    def is_unverifiable(self):
-        return self.unverifiable
-
-    def add_header(self, key, val):
-        # useful for something like authentication
-        self.headers[key.capitalize()] = val
-
-    def add_unredirected_header(self, key, val):
-        # will not be added to a redirected request
-        self.unredirected_hdrs[key.capitalize()] = val
-
-    def has_header(self, header_name):
-        return (header_name in self.headers or
-                header_name in self.unredirected_hdrs)
-
-    def get_header(self, header_name, default=None):
-        return self.headers.get(
-            header_name,
-            self.unredirected_hdrs.get(header_name, default))
-
-    def header_items(self):
-        hdrs = self.unredirected_hdrs.copy()
-        hdrs.update(self.headers)
-        return hdrs.items()
-
-class OpenerDirector:
-    def __init__(self):
-        client_version = "Python-urllib/%s" % __version__
-        self.addheaders = [('User-agent', client_version)]
-        # self.handlers is retained only for backward compatibility
-        self.handlers = []
-        # manage the individual handlers
-        self.handle_open = {}
-        self.handle_error = {}
-        self.process_response = {}
-        self.process_request = {}
-
-    def add_handler(self, handler):
-        if not hasattr(handler, "add_parent"):
-            raise TypeError("expected BaseHandler instance, got %r" %
-                            type(handler))
-
-        added = False
-        for meth in dir(handler):
-            if meth in ["redirect_request", "do_open", "proxy_open"]:
-                # oops, coincidental match
-                continue
-
-            i = meth.find("_")
-            protocol = meth[:i]
-            condition = meth[i+1:]
-
-            if condition.startswith("error"):
-                j = condition.find("_") + i + 1
-                kind = meth[j+1:]
-                try:
-                    kind = int(kind)
-                except ValueError:
-                    pass
-                lookup = self.handle_error.get(protocol, {})
-                self.handle_error[protocol] = lookup
-            elif condition == "open":
-                kind = protocol
-                lookup = self.handle_open
-            elif condition == "response":
-                kind = protocol
-                lookup = self.process_response
-            elif condition == "request":
-                kind = protocol
-                lookup = self.process_request
-            else:
-                continue
-
-            handlers = lookup.setdefault(kind, [])
-            if handlers:
-                bisect.insort(handlers, handler)
-            else:
-                handlers.append(handler)
-            added = True
-
-        if added:
-            bisect.insort(self.handlers, handler)
-            handler.add_parent(self)
-
-    def close(self):
-        # Only exists for backwards compatibility.
-        pass
-
-    def _call_chain(self, chain, kind, meth_name, *args):
-        # Handlers raise an exception if no one else should try to handle
-        # the request, or return None if they can't but another handler
-        # could.  Otherwise, they return the response.
-        handlers = chain.get(kind, ())
-        for handler in handlers:
-            func = getattr(handler, meth_name)
-
-            result = func(*args)
-            if result is not None:
-                return result
-
-    def open(self, fullurl, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
-        # accept a URL or a Request object
-        if isinstance(fullurl, basestring):
-            req = Request(fullurl, data)
-        else:
-            req = fullurl
-            if data is not None:
-                req.add_data(data)
-
-        req.timeout = timeout
-        protocol = req.get_type()
-
-        # pre-process request
-        meth_name = protocol+"_request"
-        for processor in self.process_request.get(protocol, []):
-            meth = getattr(processor, meth_name)
-            req = meth(req)
-
-        response = self._open(req, data)
-
-        # post-process response
-        meth_name = protocol+"_response"
-        for processor in self.process_response.get(protocol, []):
-            meth = getattr(processor, meth_name)
-            response = meth(req, response)
-
-        return response
-
-    def _open(self, req, data=None):
-        result = self._call_chain(self.handle_open, 'default',
-                                  'default_open', req)
-        if result:
-            return result
-
-        protocol = req.get_type()
-        result = self._call_chain(self.handle_open, protocol, protocol +
-                                  '_open', req)
-        if result:
-            return result
-
-        return self._call_chain(self.handle_open, 'unknown',
-                                'unknown_open', req)
-
-    def error(self, proto, *args):
-        if proto in ('http', 'https'):
-            # XXX http[s] protocols are special-cased
-            dict = self.handle_error['http'] # https is not different than http
-            proto = args[2]  # YUCK!
-            meth_name = 'http_error_%s' % proto
-            http_err = 1
-            orig_args = args
-        else:
-            dict = self.handle_error
-            meth_name = proto + '_error'
-            http_err = 0
-        args = (dict, proto, meth_name) + args
-        result = self._call_chain(*args)
-        if result:
-            return result
-
-        if http_err:
-            args = (dict, 'default', 'http_error_default') + orig_args
-            return self._call_chain(*args)
-
-# XXX probably also want an abstract factory that knows when it makes
-# sense to skip a superclass in favor of a subclass and when it might
-# make sense to include both
-
-def build_opener(*handlers):
-    """Create an opener object from a list of handlers.
-
-    The opener will use several default handlers, including support
-    for HTTP, FTP and when applicable, HTTPS.
-
-    If any of the handlers passed as arguments are subclasses of the
-    default handlers, the default handlers will not be used.
-    """
-    import types
-    def isclass(obj):
-        return isinstance(obj, (types.ClassType, type))
-
-    opener = OpenerDirector()
-    default_classes = [ProxyHandler, UnknownHandler, HTTPHandler,
-                       HTTPDefaultErrorHandler, HTTPRedirectHandler,
-                       FTPHandler, FileHandler, HTTPErrorProcessor]
-    if hasattr(httplib, 'HTTPS'):
-        default_classes.append(HTTPSHandler)
-    skip = set()
-    for klass in default_classes:
-        for check in handlers:
-            if isclass(check):
-                if issubclass(check, klass):
-                    skip.add(klass)
-            elif isinstance(check, klass):
-                skip.add(klass)
-    for klass in skip:
-        default_classes.remove(klass)
-
-    for klass in default_classes:
-        opener.add_handler(klass())
-
-    for h in handlers:
-        if isclass(h):
-            h = h()
-        opener.add_handler(h)
-    return opener
-
-class BaseHandler:
-    handler_order = 500
-
-    def add_parent(self, parent):
-        self.parent = parent
-
-    def close(self):
-        # Only exists for backwards compatibility
-        pass
-
-    def __lt__(self, other):
-        if not hasattr(other, "handler_order"):
-            # Try to preserve the old behavior of having custom classes
-            # inserted after default ones (works only for custom user
-            # classes which are not aware of handler_order).
-            return True
-        return self.handler_order < other.handler_order
-
-
-class HTTPErrorProcessor(BaseHandler):
-    """Process HTTP error responses."""
-    handler_order = 1000  # after all other processing
-
-    def http_response(self, request, response):
-        code, msg, hdrs = response.code, response.msg, response.info()
-
-        # According to RFC 2616, "2xx" code indicates that the client's
-        # request was successfully received, understood, and accepted.
-        if not (200 <= code < 300):
-            response = self.parent.error(
-                'http', request, response, code, msg, hdrs)
-
-        return response
-
-    https_response = http_response
-
-class HTTPDefaultErrorHandler(BaseHandler):
-    def http_error_default(self, req, fp, code, msg, hdrs):
-        raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
-
-class HTTPRedirectHandler(BaseHandler):
-    # maximum number of redirections to any single URL
-    # this is needed because of the state that cookies introduce
-    max_repeats = 4
-    # maximum total number of redirections (regardless of URL) before
-    # assuming we're in a loop
-    max_redirections = 10
-
-    def redirect_request(self, req, fp, code, msg, headers, newurl):
-        """Return a Request or None in response to a redirect.
-
-        This is called by the http_error_30x methods when a
-        redirection response is received.  If a redirection should
-        take place, return a new Request to allow http_error_30x to
-        perform the redirect.  Otherwise, raise HTTPError if no-one
-        else should try to handle this url.  Return None if you can't
-        but another Handler might.
-        """
-        m = req.get_method()
-        if (code in (301, 302, 303, 307) and m in ("GET", "HEAD")
-            or code in (301, 302, 303) and m == "POST"):
-            # Strictly (according to RFC 2616), 301 or 302 in response
-            # to a POST MUST NOT cause a redirection without confirmation
-            # from the user (of urllib2, in this case).  In practice,
-            # essentially all clients do redirect in this case, so we
-            # do the same.
-            # be conciliant with URIs containing a space
-            newurl = newurl.replace(' ', '%20')
-            newheaders = dict((k,v) for k,v in req.headers.items()
-                              if k.lower() not in ("content-length", "content-type")
-                             )
-            return Request(newurl,
-                           headers=newheaders,
-                           origin_req_host=req.get_origin_req_host(),
-                           unverifiable=True)
-        else:
-            raise HTTPError(req.get_full_url(), code, msg, headers, fp)
-
-    # Implementation note: To avoid the server sending us into an
-    # infinite loop, the request object needs to track what URLs we
-    # have already seen.  Do this by adding a handler-specific
-    # attribute to the Request object.
-    def http_error_302(self, req, fp, code, msg, headers):
-        # Some servers (incorrectly) return multiple Location headers
-        # (so probably same goes for URI).  Use first header.
-        if 'location' in headers:
-            newurl = headers.getheaders('location')[0]
-        elif 'uri' in headers:
-            newurl = headers.getheaders('uri')[0]
-        else:
-            return
-
-        # fix a possible malformed URL
-        urlparts = urlparse.urlparse(newurl)
-        if not urlparts.path:
-            urlparts = list(urlparts)
-            urlparts[2] = "/"
-        newurl = urlparse.urlunparse(urlparts)
-
-        newurl = urlparse.urljoin(req.get_full_url(), newurl)
-
-        # For security reasons we do not allow redirects to protocols
-        # other than HTTP, HTTPS or FTP.
-        newurl_lower = newurl.lower()
-        if not (newurl_lower.startswith('http://') or
-                newurl_lower.startswith('https://') or
-                newurl_lower.startswith('ftp://')):
-            raise HTTPError(newurl, code,
-                            msg + " - Redirection to url '%s' is not allowed" %
-                            newurl,
-                            headers, fp)
-
-        # XXX Probably want to forget about the state of the current
-        # request, although that might interact poorly with other
-        # handlers that also use handler-specific request attributes
-        new = self.redirect_request(req, fp, code, msg, headers, newurl)
-        if new is None:
-            return
-
-        # loop detection
-        # .redirect_dict has a key url if url was previously visited.
-        if hasattr(req, 'redirect_dict'):
-            visited = new.redirect_dict = req.redirect_dict
-            if (visited.get(newurl, 0) >= self.max_repeats or
-                len(visited) >= self.max_redirections):
-                raise HTTPError(req.get_full_url(), code,
-                                self.inf_msg + msg, headers, fp)
-        else:
-            visited = new.redirect_dict = req.redirect_dict = {}
-        visited[newurl] = visited.get(newurl, 0) + 1
-
-        # Don't close the fp until we are sure that we won't use it
-        # with HTTPError.
-        fp.read()
-        fp.close()
-
-        return self.parent.open(new, timeout=req.timeout)
-
-    http_error_301 = http_error_303 = http_error_307 = http_error_302
-
-    inf_msg = "The HTTP server returned a redirect error that would " \
-              "lead to an infinite loop.\n" \
-              "The last 30x error message was:\n"
-
-
-def _parse_proxy(proxy):
-    """Return (scheme, user, password, host/port) given a URL or an authority.
-
-    If a URL is supplied, it must have an authority (host:port) component.
-    According to RFC 3986, having an authority component means the URL must
-    have two slashes after the scheme:
-
-    >>> _parse_proxy('file:/ftp.example.com/')
-    Traceback (most recent call last):
-    ValueError: proxy URL with no authority: 'file:/ftp.example.com/'
-
-    The first three items of the returned tuple may be None.
-
-    Examples of authority parsing:
-
-    >>> _parse_proxy('proxy.example.com')
-    (None, None, None, 'proxy.example.com')
-    >>> _parse_proxy('proxy.example.com:3128')
-    (None, None, None, 'proxy.example.com:3128')
-
-    The authority component may optionally include userinfo (assumed to be
-    username:password):
-
-    >>> _parse_proxy('joe:password@proxy.example.com')
-    (None, 'joe', 'password', 'proxy.example.com')
-    >>> _parse_proxy('joe:password@proxy.example.com:3128')
-    (None, 'joe', 'password', 'proxy.example.com:3128')
-
-    Same examples, but with URLs instead:
-
-    >>> _parse_proxy('http://proxy.example.com/')
-    ('http', None, None, 'proxy.example.com')
-    >>> _parse_proxy('http://proxy.example.com:3128/')
-    ('http', None, None, 'proxy.example.com:3128')
-    >>> _parse_proxy('http://joe:password@proxy.example.com/')
-    ('http', 'joe', 'password', 'proxy.example.com')
-    >>> _parse_proxy('http://joe:password@proxy.example.com:3128')
-    ('http', 'joe', 'password', 'proxy.example.com:3128')
-
-    Everything after the authority is ignored:
-
-    >>> _parse_proxy('ftp://joe:password@proxy.example.com/rubbish:3128')
-    ('ftp', 'joe', 'password', 'proxy.example.com')
-
-    Test for no trailing '/' case:
-
-    >>> _parse_proxy('http://joe:password@proxy.example.com')
-    ('http', 'joe', 'password', 'proxy.example.com')
-
-    """
-    scheme, r_scheme = splittype(proxy)
-    if not r_scheme.startswith("/"):
-        # authority
-        scheme = None
-        authority = proxy
-    else:
-        # URL
-        if not r_scheme.startswith("//"):
-            raise ValueError("proxy URL with no authority: %r" % proxy)
-        # We have an authority, so for RFC 3986-compliant URLs (by ss 3.
-        # and 3.3.), path is empty or starts with '/'
-        end = r_scheme.find("/", 2)
-        if end == -1:
-            end = None
-        authority = r_scheme[2:end]
-    userinfo, hostport = splituser(authority)
-    if userinfo is not None:
-        user, password = splitpasswd(userinfo)
-    else:
-        user = password = None
-    return scheme, user, password, hostport
-
-class ProxyHandler(BaseHandler):
-    # Proxies must be in front
-    handler_order = 100
-
-    def __init__(self, proxies=None):
-        if proxies is None:
-            proxies = getproxies()
-        assert hasattr(proxies, 'has_key'), "proxies must be a mapping"
-        self.proxies = proxies
-        for type, url in proxies.items():
-            setattr(self, '%s_open' % type,
-                    lambda r, proxy=url, type=type, meth=self.proxy_open: \
-                    meth(r, proxy, type))
-
-    def proxy_open(self, req, proxy, type):
-        orig_type = req.get_type()
-        proxy_type, user, password, hostport = _parse_proxy(proxy)
-
-        if proxy_type is None:
-            proxy_type = orig_type
-
-        if req.host and proxy_bypass(req.host):
-            return None
-
-        if user and password:
-            user_pass = '%s:%s' % (unquote(user), unquote(password))
-            creds = base64.b64encode(user_pass).strip()
-            req.add_header('Proxy-authorization', 'Basic ' + creds)
-        hostport = unquote(hostport)
-        req.set_proxy(hostport, proxy_type)
-
-        if orig_type == proxy_type or orig_type == 'https':
-            # let other handlers take care of it
-            return None
-        else:
-            # need to start over, because the other handlers don't
-            # grok the proxy's URL type
-            # e.g. if we have a constructor arg proxies like so:
-            # {'http': 'ftp://proxy.example.com'}, we may end up turning
-            # a request for http://acme.example.com/a into one for
-            # ftp://proxy.example.com/a
-            return self.parent.open(req, timeout=req.timeout)
-
-class HTTPPasswordMgr:
-
-    def __init__(self):
-        self.passwd = {}
-
-    def add_password(self, realm, uri, user, passwd):
-        # uri could be a single URI or a sequence
-        if isinstance(uri, basestring):
-            uri = [uri]
-        if not realm in self.passwd:
-            self.passwd[realm] = {}
-        for default_port in True, False:
-            reduced_uri = tuple(
-                [self.reduce_uri(u, default_port) for u in uri])
-            self.passwd[realm][reduced_uri] = (user, passwd)
-
-    def find_user_password(self, realm, authuri):
-        domains = self.passwd.get(realm, {})
-        for default_port in True, False:
-            reduced_authuri = self.reduce_uri(authuri, default_port)
-            for uris, authinfo in domains.iteritems():
-                for uri in uris:
-                    if self.is_suburi(uri, reduced_authuri):
-                        return authinfo
-        return None, None
-
-    def reduce_uri(self, uri, default_port=True):
-        """Accept authority or URI and extract only the authority and path."""
-        # note HTTP URLs do not have a userinfo component
-        parts = urlparse.urlsplit(uri)
-        if parts[1]:
-            # URI
-            scheme = parts[0]
-            authority = parts[1]
-            path = parts[2] or '/'
-        else:
-            # host or host:port
-            scheme = None
-            authority = uri
-            path = '/'
-        host, port = splitport(authority)
-        if default_port and port is None and scheme is not None:
-            dport = {"http": 80,
-                     "https": 443,
-                     }.get(scheme)
-            if dport is not None:
-                authority = "%s:%d" % (host, dport)
-        return authority, path
-
-    def is_suburi(self, base, test):
-        """Check if test is below base in a URI tree
-
-        Both args must be URIs in reduced form.
-        """
-        if base == test:
-            return True
-        if base[0] != test[0]:
-            return False
-        common = posixpath.commonprefix((base[1], test[1]))
-        if len(common) == len(base[1]):
-            return True
-        return False
-
-
-class HTTPPasswordMgrWithDefaultRealm(HTTPPasswordMgr):
-
-    def find_user_password(self, realm, authuri):
-        user, password = HTTPPasswordMgr.find_user_password(self, realm,
-                                                            authuri)
-        if user is not None:
-            return user, password
-        return HTTPPasswordMgr.find_user_password(self, None, authuri)
-
-
-class AbstractBasicAuthHandler:
-
-    # XXX this allows for multiple auth-schemes, but will stupidly pick
-    # the last one with a realm specified.
-
-    # allow for double- and single-quoted realm values
-    # (single quotes are a violation of the RFC, but appear in the wild)
-    rx = re.compile('(?:.*,)*[ \t]*([^ \t]+)[ \t]+'
-                    'realm=(["\'])(.*?)\\2', re.I)
-
-    # XXX could pre-emptively send auth info already accepted (RFC 2617,
-    # end of section 2, and section 1.2 immediately after "credentials"
-    # production).
-
-    def __init__(self, password_mgr=None):
-        if password_mgr is None:
-            password_mgr = HTTPPasswordMgr()
-        self.passwd = password_mgr
-        self.add_password = self.passwd.add_password
-        self.retried = 0
-
-    def reset_retry_count(self):
-        self.retried = 0
-
-    def http_error_auth_reqed(self, authreq, host, req, headers):
-        # host may be an authority (without userinfo) or a URL with an
-        # authority
-        # XXX could be multiple headers
-        authreq = headers.get(authreq, None)
-
-        if self.retried > 5:
-            # retry sending the username:password 5 times before failing.
-            raise HTTPError(req.get_full_url(), 401, "basic auth failed",
-                            headers, None)
-        else:
-            self.retried += 1
-
-        if authreq:
-            mo = AbstractBasicAuthHandler.rx.search(authreq)
-            if mo:
-                scheme, quote, realm = mo.groups()
-                if scheme.lower() == 'basic':
-                    response = self.retry_http_basic_auth(host, req, realm)
-                    if response and response.code != 401:
-                        self.retried = 0
-                    return response
-
-    def retry_http_basic_auth(self, host, req, realm):
-        user, pw = self.passwd.find_user_password(realm, host)
-        if pw is not None:
-            raw = "%s:%s" % (user, pw)
-            auth = 'Basic %s' % base64.b64encode(raw).strip()
-            if req.headers.get(self.auth_header, None) == auth:
-                return None
-            req.add_unredirected_header(self.auth_header, auth)
-            return self.parent.open(req, timeout=req.timeout)
-        else:
-            return None
-
-
-class HTTPBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler):
-
-    auth_header = 'Authorization'
-
-    def http_error_401(self, req, fp, code, msg, headers):
-        url = req.get_full_url()
-        response = self.http_error_auth_reqed('www-authenticate',
-                                              url, req, headers)
-        self.reset_retry_count()
-        return response
-
-
-class ProxyBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler):
-
-    auth_header = 'Proxy-authorization'
-
-    def http_error_407(self, req, fp, code, msg, headers):
-        # http_error_auth_reqed requires that there is no userinfo component in
-        # authority.  Assume there isn't one, since urllib2 does not (and
-        # should not, RFC 3986 s. 3.2.1) support requests for URLs containing
-        # userinfo.
-        authority = req.get_host()
-        response = self.http_error_auth_reqed('proxy-authenticate',
-                                          authority, req, headers)
-        self.reset_retry_count()
-        return response
-
-
-def randombytes(n):
-    """Return n random bytes."""
-    # Use /dev/urandom if it is available.  Fall back to random module
-    # if not.  It might be worthwhile to extend this function to use
-    # other platform-specific mechanisms for getting random bytes.
-    if os.path.exists("/dev/urandom"):
-        f = open("/dev/urandom")
-        s = f.read(n)
-        f.close()
-        return s
-    else:
-        L = [chr(random.randrange(0, 256)) for i in range(n)]
-        return "".join(L)
-
-class AbstractDigestAuthHandler:
-    # Digest authentication is specified in RFC 2617.
-
-    # XXX The client does not inspect the Authentication-Info header
-    # in a successful response.
-
-    # XXX It should be possible to test this implementation against
-    # a mock server that just generates a static set of challenges.
-
-    # XXX qop="auth-int" supports is shaky
-
-    def __init__(self, passwd=None):
-        if passwd is None:
-            passwd = HTTPPasswordMgr()
-        self.passwd = passwd
-        self.add_password = self.passwd.add_password
-        self.retried = 0
-        self.nonce_count = 0
-        self.last_nonce = None
-
-    def reset_retry_count(self):
-        self.retried = 0
-
-    def http_error_auth_reqed(self, auth_header, host, req, headers):
-        authreq = headers.get(auth_header, None)
-        if self.retried > 5:
-            # Don't fail endlessly - if we failed once, we'll probably
-            # fail a second time. Hm. Unless the Password Manager is
-            # prompting for the information. Crap. This isn't great
-            # but it's better than the current 'repeat until recursion
-            # depth exceeded' approach <wink>
-            raise HTTPError(req.get_full_url(), 401, "digest auth failed",
-                            headers, None)
-        else:
-            self.retried += 1
-        if authreq:
-            scheme = authreq.split()[0]
-            if scheme.lower() == 'digest':
-                return self.retry_http_digest_auth(req, authreq)
-
-    def retry_http_digest_auth(self, req, auth):
-        token, challenge = auth.split(' ', 1)
-        chal = parse_keqv_list(parse_http_list(challenge))
-        auth = self.get_authorization(req, chal)
-        if auth:
-            auth_val = 'Digest %s' % auth
-            if req.headers.get(self.auth_header, None) == auth_val:
-                return None
-            req.add_unredirected_header(self.auth_header, auth_val)
-            resp = self.parent.open(req, timeout=req.timeout)
-            return resp
-
-    def get_cnonce(self, nonce):
-        # The cnonce-value is an opaque
-        # quoted string value provided by the client and used by both client
-        # and server to avoid chosen plaintext attacks, to provide mutual
-        # authentication, and to provide some message integrity protection.
-        # This isn't a fabulous effort, but it's probably Good Enough.
-        dig = hashlib.sha1("%s:%s:%s:%s" % (self.nonce_count, nonce, time.ctime(),
-                                            randombytes(8))).hexdigest()
-        return dig[:16]
-
-    def get_authorization(self, req, chal):
-        try:
-            realm = chal['realm']
-            nonce = chal['nonce']
-            qop = chal.get('qop')
-            algorithm = chal.get('algorithm', 'MD5')
-            # mod_digest doesn't send an opaque, even though it isn't
-            # supposed to be optional
-            opaque = chal.get('opaque', None)
-        except KeyError:
-            return None
-
-        H, KD = self.get_algorithm_impls(algorithm)
-        if H is None:
-            return None
-
-        user, pw = self.passwd.find_user_password(realm, req.get_full_url())
-        if user is None:
-            return None
-
-        # XXX not implemented yet
-        if req.has_data():
-            entdig = self.get_entity_digest(req.get_data(), chal)
-        else:
-            entdig = None
-
-        A1 = "%s:%s:%s" % (user, realm, pw)
-        A2 = "%s:%s" % (req.get_method(),
-                        # XXX selector: what about proxies and full urls
-                        req.get_selector())
-        if qop == 'auth':
-            if nonce == self.last_nonce:
-                self.nonce_count += 1
-            else:
-                self.nonce_count = 1
-                self.last_nonce = nonce
-
-            ncvalue = '%08x' % self.nonce_count
-            cnonce = self.get_cnonce(nonce)
-            noncebit = "%s:%s:%s:%s:%s" % (nonce, ncvalue, cnonce, qop, H(A2))
-            respdig = KD(H(A1), noncebit)
-        elif qop is None:
-            respdig = KD(H(A1), "%s:%s" % (nonce, H(A2)))
-        else:
-            # XXX handle auth-int.
-            raise URLError("qop '%s' is not supported." % qop)
-
-        # XXX should the partial digests be encoded too?
-
-        base = 'username="%s", realm="%s", nonce="%s", uri="%s", ' \
-               'response="%s"' % (user, realm, nonce, req.get_selector(),
-                                  respdig)
-        if opaque:
-            base += ', opaque="%s"' % opaque
-        if entdig:
-            base += ', digest="%s"' % entdig
-        base += ', algorithm="%s"' % algorithm
-        if qop:
-            base += ', qop=auth, nc=%s, cnonce="%s"' % (ncvalue, cnonce)
-        return base
-
-    def get_algorithm_impls(self, algorithm):
-        # algorithm should be case-insensitive according to RFC2617
-        algorithm = algorithm.upper()
-        # lambdas assume digest modules are imported at the top level
-        if algorithm == 'MD5':
-            H = lambda x: hashlib.md5(x).hexdigest()
-        elif algorithm == 'SHA':
-            H = lambda x: hashlib.sha1(x).hexdigest()
-        # XXX MD5-sess
-        KD = lambda s, d: H("%s:%s" % (s, d))
-        return H, KD
-
-    def get_entity_digest(self, data, chal):
-        # XXX not implemented yet
-        return None
-
-
-class HTTPDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler):
-    """An authentication protocol defined by RFC 2069
-
-    Digest authentication improves on basic authentication because it
-    does not transmit passwords in the clear.
-    """
-
-    auth_header = 'Authorization'
-    handler_order = 490  # before Basic auth
-
-    def http_error_401(self, req, fp, code, msg, headers):
-        host = urlparse.urlparse(req.get_full_url())[1]
-        retry = self.http_error_auth_reqed('www-authenticate',
-                                           host, req, headers)
-        self.reset_retry_count()
-        return retry
-
-
-class ProxyDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler):
-
-    auth_header = 'Proxy-Authorization'
-    handler_order = 490  # before Basic auth
-
-    def http_error_407(self, req, fp, code, msg, headers):
-        host = req.get_host()
-        retry = self.http_error_auth_reqed('proxy-authenticate',
-                                           host, req, headers)
-        self.reset_retry_count()
-        return retry
-
-class AbstractHTTPHandler(BaseHandler):
-
-    def __init__(self, debuglevel=0):
-        self._debuglevel = debuglevel
-
-    def set_http_debuglevel(self, level):
-        self._debuglevel = level
-
-    def do_request_(self, request):
-        host = request.get_host()
-        if not host:
-            raise URLError('no host given')
-
-        if request.has_data():  # POST
-            data = request.get_data()
-            if not request.has_header('Content-type'):
-                request.add_unredirected_header(
-                    'Content-type',
-                    'application/x-www-form-urlencoded')
-            if not request.has_header('Content-length'):
-                request.add_unredirected_header(
-                    'Content-length', '%d' % len(data))
-
-        sel_host = host
-        if request.has_proxy():
-            scheme, sel = splittype(request.get_selector())
-            sel_host, sel_path = splithost(sel)
-
-        if not request.has_header('Host'):
-            request.add_unredirected_header('Host', sel_host)
-        for name, value in self.parent.addheaders:
-            name = name.capitalize()
-            if not request.has_header(name):
-                request.add_unredirected_header(name, value)
-
-        return request
-
-    def do_open(self, http_class, req):
-        """Return an addinfourl object for the request, using http_class.
-
-        http_class must implement the HTTPConnection API from httplib.
-        The addinfourl return value is a file-like object.  It also
-        has methods and attributes including:
-            - info(): return a mimetools.Message object for the headers
-            - geturl(): return the original request URL
-            - code: HTTP status code
-        """
-        host = req.get_host()
-        if not host:
-            raise URLError('no host given')
-
-        h = http_class(host, timeout=req.timeout) # will parse host:port
-        h.set_debuglevel(self._debuglevel)
-
-        headers = dict(req.unredirected_hdrs)
-        headers.update(dict((k, v) for k, v in req.headers.items()
-                            if k not in headers))
-
-        # We want to make an HTTP/1.1 request, but the addinfourl
-        # class isn't prepared to deal with a persistent connection.
-        # It will try to read all remaining data from the socket,
-        # which will block while the server waits for the next request.
-        # So make sure the connection gets closed after the (only)
-        # request.
-        headers["Connection"] = "close"
-        headers = dict(
-            (name.title(), val) for name, val in headers.items())
-
-        if req._tunnel_host:
-            tunnel_headers = {}
-            proxy_auth_hdr = "Proxy-Authorization"
-            if proxy_auth_hdr in headers:
-                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]
-                # Proxy-Authorization should not be sent to origin
-                # server.
-                del headers[proxy_auth_hdr]
-            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)
-
-        try:
-            h.request(req.get_method(), req.get_selector(), req.data, headers)
-            try:
-                r = h.getresponse(buffering=True)
-            except TypeError: #buffering kw not supported
-                r = h.getresponse()
-        except socket.error, err: # XXX what error?
-            raise URLError(err)
-
-        # Pick apart the HTTPResponse object to get the addinfourl
-        # object initialized properly.
-
-        # Wrap the HTTPResponse object in socket's file object adapter
-        # for Windows.  That adapter calls recv(), so delegate recv()
-        # to read().  This weird wrapping allows the returned object to
-        # have readline() and readlines() methods.
-
-        # XXX It might be better to extract the read buffering code
-        # out of socket._fileobject() and into a base class.
-
-        r.recv = r.read
-        fp = socket._fileobject(r, close=True)
-
-        resp = addinfourl(fp, r.msg, req.get_full_url())
-        resp.code = r.status
-        resp.msg = r.reason
-        return resp
-
-
-class HTTPHandler(AbstractHTTPHandler):
-
-    def http_open(self, req):
-        return self.do_open(httplib.HTTPConnection, req)
-
-    http_request = AbstractHTTPHandler.do_request_
-
-if hasattr(httplib, 'HTTPS'):
-    class HTTPSHandler(AbstractHTTPHandler):
-
-        def https_open(self, req):
-            return self.do_open(httplib.HTTPSConnection, req)
-
-        https_request = AbstractHTTPHandler.do_request_
-
-class HTTPCookieProcessor(BaseHandler):
-    def __init__(self, cookiejar=None):
-        import cookielib
-        if cookiejar is None:
-            cookiejar = cookielib.CookieJar()
-        self.cookiejar = cookiejar
-
-    def http_request(self, request):
-        self.cookiejar.add_cookie_header(request)
-        return request
-
-    def http_response(self, request, response):
-        self.cookiejar.extract_cookies(response, request)
-        return response
-
-    https_request = http_request
-    https_response = http_response
-
-class UnknownHandler(BaseHandler):
-    def unknown_open(self, req):
-        type = req.get_type()
-        raise URLError('unknown url type: %s' % type)
-
-def parse_keqv_list(l):
-    """Parse list of key=value strings where keys are not duplicated."""
-    parsed = {}
-    for elt in l:
-        k, v = elt.split('=', 1)
-        if v[0] == '"' and v[-1] == '"':
-            v = v[1:-1]
-        parsed[k] = v
-    return parsed
-
-def parse_http_list(s):
-    """Parse lists as described by RFC 2068 Section 2.
-
-    In particular, parse comma-separated lists where the elements of
-    the list may include quoted-strings.  A quoted-string could
-    contain a comma.  A non-quoted string could have quotes in the
-    middle.  Neither commas nor quotes count if they are escaped.
-    Only double-quotes count, not single-quotes.
-    """
-    res = []
-    part = ''
-
-    escape = quote = False
-    for cur in s:
-        if escape:
-            part += cur
-            escape = False
-            continue
-        if quote:
-            if cur == '\\':
-                escape = True
-                continue
-            elif cur == '"':
-                quote = False
-            part += cur
-            continue
-
-        if cur == ',':
-            res.append(part)
-            part = ''
-            continue
-
-        if cur == '"':
-            quote = True
-
-        part += cur
-
-    # append last part
-    if part:
-        res.append(part)
-
-    return [part.strip() for part in res]
-
-def _safe_gethostbyname(host):
-    try:
-        return socket.gethostbyname(host)
-    except socket.gaierror:
-        return None
-
-class FileHandler(BaseHandler):
-    # Use local file or FTP depending on form of URL
-    def file_open(self, req):
-        url = req.get_selector()
-        if url[:2] == '//' and url[2:3] != '/' and (req.host and
-                req.host != 'localhost'):
-            req.type = 'ftp'
-            return self.parent.open(req)
-        else:
-            return self.open_local_file(req)
-
-    # names for the localhost
-    names = None
-    def get_names(self):
-        if FileHandler.names is None:
-            try:
-                FileHandler.names = tuple(
-                    socket.gethostbyname_ex('localhost')[2] +
-                    socket.gethostbyname_ex(socket.gethostname())[2])
-            except socket.gaierror:
-                FileHandler.names = (socket.gethostbyname('localhost'),)
-        return FileHandler.names
-
-    # not entirely sure what the rules are here
-    def open_local_file(self, req):
-        import email.utils
-        import mimetypes
-        host = req.get_host()
-        filename = req.get_selector()
-        localfile = url2pathname(filename)
-        try:
-            stats = os.stat(localfile)
-            size = stats.st_size
-            modified = email.utils.formatdate(stats.st_mtime, usegmt=True)
-            mtype = mimetypes.guess_type(filename)[0]
-            headers = mimetools.Message(StringIO(
-                'Content-type: %s\nContent-length: %d\nLast-modified: %s\n' %
-                (mtype or 'text/plain', size, modified)))
-            if host:
-                host, port = splitport(host)
-            if not host or \
-                (not port and _safe_gethostbyname(host) in self.get_names()):
-                if host:
-                    origurl = 'file://' + host + filename
-                else:
-                    origurl = 'file://' + filename
-                return addinfourl(open(localfile, 'rb'), headers, origurl)
-        except OSError, msg:
-            # urllib2 users shouldn't expect OSErrors coming from urlopen()
-            raise URLError(msg)
-        raise URLError('file not on local host')
-
-class FTPHandler(BaseHandler):
-    def ftp_open(self, req):
-        import ftplib
-        import mimetypes
-        host = req.get_host()
-        if not host:
-            raise URLError('ftp error: no host given')
-        host, port = splitport(host)
-        if port is None:
-            port = ftplib.FTP_PORT
-        else:
-            port = int(port)
-
-        # username/password handling
-        user, host = splituser(host)
-        if user:
-            user, passwd = splitpasswd(user)
-        else:
-            passwd = None
-        host = unquote(host)
-        user = user or ''
-        passwd = passwd or ''
-
-        try:
-            host = socket.gethostbyname(host)
-        except socket.error, msg:
-            raise URLError(msg)
-        path, attrs = splitattr(req.get_selector())
-        dirs = path.split('/')
-        dirs = map(unquote, dirs)
-        dirs, file = dirs[:-1], dirs[-1]
-        if dirs and not dirs[0]:
-            dirs = dirs[1:]
-        try:
-            fw = self.connect_ftp(user, passwd, host, port, dirs, req.timeout)
-            type = file and 'I' or 'D'
-            for attr in attrs:
-                attr, value = splitvalue(attr)
-                if attr.lower() == 'type' and \
-                   value in ('a', 'A', 'i', 'I', 'd', 'D'):
-                    type = value.upper()
-            fp, retrlen = fw.retrfile(file, type)
-            headers = ""
-            mtype = mimetypes.guess_type(req.get_full_url())[0]
-            if mtype:
-                headers += "Content-type: %s\n" % mtype
-            if retrlen is not None and retrlen >= 0:
-                headers += "Content-length: %d\n" % retrlen
-            sf = StringIO(headers)
-            headers = mimetools.Message(sf)
-            return addinfourl(fp, headers, req.get_full_url())
-        except ftplib.all_errors, msg:
-            raise URLError, ('ftp error: %s' % msg), sys.exc_info()[2]
-
-    def connect_ftp(self, user, passwd, host, port, dirs, timeout):
-        fw = ftpwrapper(user, passwd, host, port, dirs, timeout)
-##        fw.ftp.set_debuglevel(1)
-        return fw
-
-class CacheFTPHandler(FTPHandler):
-    # XXX would be nice to have pluggable cache strategies
-    # XXX this stuff is definitely not thread safe
-    def __init__(self):
-        self.cache = {}
-        self.timeout = {}
-        self.soonest = 0
-        self.delay = 60
-        self.max_conns = 16
-
-    def setTimeout(self, t):
-        self.delay = t
-
-    def setMaxConns(self, m):
-        self.max_conns = m
-
-    def connect_ftp(self, user, passwd, host, port, dirs, timeout):
-        key = user, host, port, '/'.join(dirs), timeout
-        if key in self.cache:
-            self.timeout[key] = time.time() + self.delay
-        else:
-            self.cache[key] = ftpwrapper(user, passwd, host, port, dirs, timeout)
-            self.timeout[key] = time.time() + self.delay
-        self.check_cache()
-        return self.cache[key]
-
-    def check_cache(self):
-        # first check for old ones
-        t = time.time()
-        if self.soonest <= t:
-            for k, v in self.timeout.items():
-                if v < t:
-                    self.cache[k].close()
-                    del self.cache[k]
-                    del self.timeout[k]
-        self.soonest = min(self.timeout.values())
-
-        # then check the size
-        if len(self.cache) == self.max_conns:
-            for k, v in self.timeout.items():
-                if v == self.soonest:
-                    del self.cache[k]
-                    del self.timeout[k]
-                    break
-            self.soonest = min(self.timeout.values())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/urlparse.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/urlparse.py
deleted file mode 100644
index c169724..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/urlparse.py
+++ /dev/null
@@ -1,397 +0,0 @@
-"""Parse (absolute and relative) URLs.
-
-urlparse module is based upon the following RFC specifications.
-
-RFC 3986 (STD66): "Uniform Resource Identifiers" by T. Berners-Lee, R. Fielding
-and L.  Masinter, January 2005.
-
-RFC 2732 : "Format for Literal IPv6 Addresses in URL's by R.Hinden, B.Carpenter
-and L.Masinter, December 1999.
-
-RFC 2396:  "Uniform Resource Identifiers (URI)": Generic Syntax by T.
-Berners-Lee, R. Fielding, and L. Masinter, August 1998.
-
-RFC 2368: "The mailto URL scheme", by P.Hoffman , L Masinter, J. Zwinski, July 1998.
-
-RFC 1808: "Relative Uniform Resource Locators", by R. Fielding, UC Irvine, June
-1995.
-
-RFC 1738: "Uniform Resource Locators (URL)" by T. Berners-Lee, L. Masinter, M.
-McCahill, December 1994
-
-RFC 3986 is considered the current standard and any future changes to
-urlparse module should conform with it.  The urlparse module is
-currently not entirely compliant with this RFC due to defacto
-scenarios for parsing, and for backward compatibility purposes, some
-parsing quirks from older RFCs are retained. The testcases in
-test_urlparse.py provides a good indicator of parsing behavior.
-
-"""
-
-__all__ = ["urlparse", "urlunparse", "urljoin", "urldefrag",
-           "urlsplit", "urlunsplit", "parse_qs", "parse_qsl"]
-
-# A classification of schemes ('' means apply by default)
-uses_relative = ['ftp', 'http', 'gopher', 'nntp', 'imap',
-                 'wais', 'file', 'https', 'shttp', 'mms',
-                 'prospero', 'rtsp', 'rtspu', '', 'sftp']
-uses_netloc = ['ftp', 'http', 'gopher', 'nntp', 'telnet',
-               'imap', 'wais', 'file', 'mms', 'https', 'shttp',
-               'snews', 'prospero', 'rtsp', 'rtspu', 'rsync', '',
-               'svn', 'svn+ssh', 'sftp','nfs','git', 'git+ssh']
-non_hierarchical = ['gopher', 'hdl', 'mailto', 'news',
-                    'telnet', 'wais', 'imap', 'snews', 'sip', 'sips']
-uses_params = ['ftp', 'hdl', 'prospero', 'http', 'imap',
-               'https', 'shttp', 'rtsp', 'rtspu', 'sip', 'sips',
-               'mms', '', 'sftp']
-uses_query = ['http', 'wais', 'imap', 'https', 'shttp', 'mms',
-              'gopher', 'rtsp', 'rtspu', 'sip', 'sips', '']
-uses_fragment = ['ftp', 'hdl', 'http', 'gopher', 'news',
-                 'nntp', 'wais', 'https', 'shttp', 'snews',
-                 'file', 'prospero', '']
-
-# Characters valid in scheme names
-scheme_chars = ('abcdefghijklmnopqrstuvwxyz'
-                'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-                '0123456789'
-                '+-.')
-
-MAX_CACHE_SIZE = 20
-_parse_cache = {}
-
-def clear_cache():
-    """Clear the parse cache."""
-    _parse_cache.clear()
-
-
-class ResultMixin(object):
-    """Shared methods for the parsed result objects."""
-
-    @property
-    def username(self):
-        netloc = self.netloc
-        if "@" in netloc:
-            userinfo = netloc.rsplit("@", 1)[0]
-            if ":" in userinfo:
-                userinfo = userinfo.split(":", 1)[0]
-            return userinfo
-        return None
-
-    @property
-    def password(self):
-        netloc = self.netloc
-        if "@" in netloc:
-            userinfo = netloc.rsplit("@", 1)[0]
-            if ":" in userinfo:
-                return userinfo.split(":", 1)[1]
-        return None
-
-    @property
-    def hostname(self):
-        netloc = self.netloc.split('@')[-1]
-        if '[' in netloc and ']' in netloc:
-            return netloc.split(']')[0][1:].lower()
-        elif ':' in netloc:
-            return netloc.split(':')[0].lower()
-        elif netloc == '':
-            return None
-        else:
-            return netloc.lower()
-
-    @property
-    def port(self):
-        netloc = self.netloc.split('@')[-1].split(']')[-1]
-        if ':' in netloc:
-            port = netloc.split(':')[1]
-            return int(port, 10)
-        else:
-            return None
-
-from collections import namedtuple
-
-class SplitResult(namedtuple('SplitResult', 'scheme netloc path query fragment'), ResultMixin):
-
-    __slots__ = ()
-
-    def geturl(self):
-        return urlunsplit(self)
-
-
-class ParseResult(namedtuple('ParseResult', 'scheme netloc path params query fragment'), ResultMixin):
-
-    __slots__ = ()
-
-    def geturl(self):
-        return urlunparse(self)
-
-
-def urlparse(url, scheme='', allow_fragments=True):
-    """Parse a URL into 6 components:
-    <scheme>://<netloc>/<path>;<params>?<query>#<fragment>
-    Return a 6-tuple: (scheme, netloc, path, params, query, fragment).
-    Note that we don't break the components up in smaller bits
-    (e.g. netloc is a single string) and we don't expand % escapes."""
-    tuple = urlsplit(url, scheme, allow_fragments)
-    scheme, netloc, url, query, fragment = tuple
-    if scheme in uses_params and ';' in url:
-        url, params = _splitparams(url)
-    else:
-        params = ''
-    return ParseResult(scheme, netloc, url, params, query, fragment)
-
-def _splitparams(url):
-    if '/'  in url:
-        i = url.find(';', url.rfind('/'))
-        if i < 0:
-            return url, ''
-    else:
-        i = url.find(';')
-    return url[:i], url[i+1:]
-
-def _splitnetloc(url, start=0):
-    delim = len(url)   # position of end of domain part of url, default is end
-    for c in '/?#':    # look for delimiters; the order is NOT important
-        wdelim = url.find(c, start)        # find first of this delim
-        if wdelim >= 0:                    # if found
-            delim = min(delim, wdelim)     # use earliest delim position
-    return url[start:delim], url[delim:]   # return (domain, rest)
-
-def urlsplit(url, scheme='', allow_fragments=True):
-    """Parse a URL into 5 components:
-    <scheme>://<netloc>/<path>?<query>#<fragment>
-    Return a 5-tuple: (scheme, netloc, path, query, fragment).
-    Note that we don't break the components up in smaller bits
-    (e.g. netloc is a single string) and we don't expand % escapes."""
-    allow_fragments = bool(allow_fragments)
-    key = url, scheme, allow_fragments, type(url), type(scheme)
-    cached = _parse_cache.get(key, None)
-    if cached:
-        return cached
-    if len(_parse_cache) >= MAX_CACHE_SIZE: # avoid runaway growth
-        clear_cache()
-    netloc = query = fragment = ''
-    i = url.find(':')
-    if i > 0:
-        if url[:i] == 'http': # optimize the common case
-            scheme = url[:i].lower()
-            url = url[i+1:]
-            if url[:2] == '//':
-                netloc, url = _splitnetloc(url, 2)
-                if (('[' in netloc and ']' not in netloc) or
-                        (']' in netloc and '[' not in netloc)):
-                    raise ValueError("Invalid IPv6 URL")
-            if allow_fragments and '#' in url:
-                url, fragment = url.split('#', 1)
-            if '?' in url:
-                url, query = url.split('?', 1)
-            v = SplitResult(scheme, netloc, url, query, fragment)
-            _parse_cache[key] = v
-            return v
-        for c in url[:i]:
-            if c not in scheme_chars:
-                break
-        else:
-            try:
-                # make sure "url" is not actually a port number (in which case
-                # "scheme" is really part of the path
-                _testportnum = int(url[i+1:])
-            except ValueError:
-                scheme, url = url[:i].lower(), url[i+1:]
-
-    if url[:2] == '//':
-        netloc, url = _splitnetloc(url, 2)
-        if (('[' in netloc and ']' not in netloc) or
-                (']' in netloc and '[' not in netloc)):
-            raise ValueError("Invalid IPv6 URL")
-    if allow_fragments and scheme in uses_fragment and '#' in url:
-        url, fragment = url.split('#', 1)
-    if scheme in uses_query and '?' in url:
-        url, query = url.split('?', 1)
-    v = SplitResult(scheme, netloc, url, query, fragment)
-    _parse_cache[key] = v
-    return v
-
-def urlunparse(data):
-    """Put a parsed URL back together again.  This may result in a
-    slightly different, but equivalent URL, if the URL that was parsed
-    originally had redundant delimiters, e.g. a ? with an empty query
-    (the draft states that these are equivalent)."""
-    scheme, netloc, url, params, query, fragment = data
-    if params:
-        url = "%s;%s" % (url, params)
-    return urlunsplit((scheme, netloc, url, query, fragment))
-
-def urlunsplit(data):
-    """Combine the elements of a tuple as returned by urlsplit() into a
-    complete URL as a string. The data argument can be any five-item iterable.
-    This may result in a slightly different, but equivalent URL, if the URL that
-    was parsed originally had unnecessary delimiters (for example, a ? with an
-    empty query; the RFC states that these are equivalent)."""
-    scheme, netloc, url, query, fragment = data
-    if netloc or (scheme and scheme in uses_netloc and url[:2] != '//'):
-        if url and url[:1] != '/': url = '/' + url
-        url = '//' + (netloc or '') + url
-    if scheme:
-        url = scheme + ':' + url
-    if query:
-        url = url + '?' + query
-    if fragment:
-        url = url + '#' + fragment
-    return url
-
-def urljoin(base, url, allow_fragments=True):
-    """Join a base URL and a possibly relative URL to form an absolute
-    interpretation of the latter."""
-    if not base:
-        return url
-    if not url:
-        return base
-    bscheme, bnetloc, bpath, bparams, bquery, bfragment = \
-            urlparse(base, '', allow_fragments)
-    scheme, netloc, path, params, query, fragment = \
-            urlparse(url, bscheme, allow_fragments)
-    if scheme != bscheme or scheme not in uses_relative:
-        return url
-    if scheme in uses_netloc:
-        if netloc:
-            return urlunparse((scheme, netloc, path,
-                               params, query, fragment))
-        netloc = bnetloc
-    if path[:1] == '/':
-        return urlunparse((scheme, netloc, path,
-                           params, query, fragment))
-    if not path and not params:
-        path = bpath
-        params = bparams
-        if not query:
-            query = bquery
-        return urlunparse((scheme, netloc, path,
-                           params, query, fragment))
-    segments = bpath.split('/')[:-1] + path.split('/')
-    # XXX The stuff below is bogus in various ways...
-    if segments[-1] == '.':
-        segments[-1] = ''
-    while '.' in segments:
-        segments.remove('.')
-    while 1:
-        i = 1
-        n = len(segments) - 1
-        while i < n:
-            if (segments[i] == '..'
-                and segments[i-1] not in ('', '..')):
-                del segments[i-1:i+1]
-                break
-            i = i+1
-        else:
-            break
-    if segments == ['', '..']:
-        segments[-1] = ''
-    elif len(segments) >= 2 and segments[-1] == '..':
-        segments[-2:] = ['']
-    return urlunparse((scheme, netloc, '/'.join(segments),
-                       params, query, fragment))
-
-def urldefrag(url):
-    """Removes any existing fragment from URL.
-
-    Returns a tuple of the defragmented URL and the fragment.  If
-    the URL contained no fragments, the second element is the
-    empty string.
-    """
-    if '#' in url:
-        s, n, p, a, q, frag = urlparse(url)
-        defrag = urlunparse((s, n, p, a, q, ''))
-        return defrag, frag
-    else:
-        return url, ''
-
-# unquote method for parse_qs and parse_qsl
-# Cannot use directly from urllib as it would create a circular reference
-# because urllib uses urlparse methods (urljoin).  If you update this function,
-# update it also in urllib.  This code duplication does not existin in Python3.
-
-_hexdig = '0123456789ABCDEFabcdef'
-_hextochr = dict((a+b, chr(int(a+b,16)))
-                 for a in _hexdig for b in _hexdig)
-
-def unquote(s):
-    """unquote('abc%20def') -> 'abc def'."""
-    res = s.split('%')
-    # fastpath
-    if len(res) == 1:
-        return s
-    s = res[0]
-    for item in res[1:]:
-        try:
-            s += _hextochr[item[:2]] + item[2:]
-        except KeyError:
-            s += '%' + item
-        except UnicodeDecodeError:
-            s += unichr(int(item[:2], 16)) + item[2:]
-    return s
-
-def parse_qs(qs, keep_blank_values=0, strict_parsing=0):
-    """Parse a query given as a string argument.
-
-        Arguments:
-
-        qs: percent-encoded query string to be parsed
-
-        keep_blank_values: flag indicating whether blank values in
-            percent-encoded queries should be treated as blank strings.
-            A true value indicates that blanks should be retained as
-            blank strings.  The default false value indicates that
-            blank values are to be ignored and treated as if they were
-            not included.
-
-        strict_parsing: flag indicating what to do with parsing errors.
-            If false (the default), errors are silently ignored.
-            If true, errors raise a ValueError exception.
-    """
-    dict = {}
-    for name, value in parse_qsl(qs, keep_blank_values, strict_parsing):
-        if name in dict:
-            dict[name].append(value)
-        else:
-            dict[name] = [value]
-    return dict
-
-def parse_qsl(qs, keep_blank_values=0, strict_parsing=0):
-    """Parse a query given as a string argument.
-
-    Arguments:
-
-    qs: percent-encoded query string to be parsed
-
-    keep_blank_values: flag indicating whether blank values in
-        percent-encoded queries should be treated as blank strings.  A
-        true value indicates that blanks should be retained as blank
-        strings.  The default false value indicates that blank values
-        are to be ignored and treated as if they were  not included.
-
-    strict_parsing: flag indicating what to do with parsing errors. If
-        false (the default), errors are silently ignored. If true,
-        errors raise a ValueError exception.
-
-    Returns a list, as G-d intended.
-    """
-    pairs = [s2 for s1 in qs.split('&') for s2 in s1.split(';')]
-    r = []
-    for name_value in pairs:
-        if not name_value and not strict_parsing:
-            continue
-        nv = name_value.split('=', 1)
-        if len(nv) != 2:
-            if strict_parsing:
-                raise ValueError, "bad query field: %r" % (name_value,)
-            # Handle case of a control-name with no equal sign
-            if keep_blank_values:
-                nv.append('')
-            else:
-                continue
-        if len(nv[1]) or keep_blank_values:
-            name = unquote(nv[0].replace('+', ' '))
-            value = unquote(nv[1].replace('+', ' '))
-            r.append((name, value))
-
-    return r
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/user.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/user.py
deleted file mode 100644
index 320fe52..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/user.py
+++ /dev/null
@@ -1,48 +0,0 @@
-"""Hook to allow user-specified customization code to run.
-
-As a policy, Python doesn't run user-specified code on startup of
-Python programs (interactive sessions execute the script specified in
-the PYTHONSTARTUP environment variable if it exists).
-
-However, some programs or sites may find it convenient to allow users
-to have a standard customization file, which gets run when a program
-requests it.  This module implements such a mechanism.  A program
-that wishes to use the mechanism must execute the statement
-
-    import user
-
-The user module looks for a file .pythonrc.py in the user's home
-directory and if it can be opened, execfile()s it in its own global
-namespace.  Errors during this phase are not caught; that's up to the
-program that imports the user module, if it wishes.
-
-The user's .pythonrc.py could conceivably test for sys.version if it
-wishes to do different things depending on the Python version.
-
-"""
-from warnings import warnpy3k
-warnpy3k("the user module has been removed in Python 3.0", stacklevel=2)
-del warnpy3k
-
-import os
-
-home = os.curdir                        # Default
-if 'HOME' in os.environ:
-    home = os.environ['HOME']
-elif os.name == 'posix':
-    home = os.path.expanduser("~/")
-elif os.name == 'nt':                   # Contributed by Jeff Bauer
-    if 'HOMEPATH' in os.environ:
-        if 'HOMEDRIVE' in os.environ:
-            home = os.environ['HOMEDRIVE'] + os.environ['HOMEPATH']
-        else:
-            home = os.environ['HOMEPATH']
-
-pythonrc = os.path.join(home, ".pythonrc.py")
-try:
-    f = open(pythonrc)
-except IOError:
-    pass
-else:
-    f.close()
-    execfile(pythonrc)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/uu.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/uu.py
deleted file mode 100644
index 87820ad..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/uu.py
+++ /dev/null
@@ -1,196 +0,0 @@
-#! /usr/bin/env python
-
-# Copyright 1994 by Lance Ellinghouse
-# Cathedral City, California Republic, United States of America.
-#                        All Rights Reserved
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted,
-# provided that the above copyright notice appear in all copies and that
-# both that copyright notice and this permission notice appear in
-# supporting documentation, and that the name of Lance Ellinghouse
-# not be used in advertising or publicity pertaining to distribution
-# of the software without specific, written prior permission.
-# LANCE ELLINGHOUSE DISCLAIMS ALL WARRANTIES WITH REGARD TO
-# THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-# FITNESS, IN NO EVENT SHALL LANCE ELLINGHOUSE CENTRUM BE LIABLE
-# FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Modified by Jack Jansen, CWI, July 1995:
-# - Use binascii module to do the actual line-by-line conversion
-#   between ascii and binary. This results in a 1000-fold speedup. The C
-#   version is still 5 times faster, though.
-# - Arguments more compliant with python standard
-
-"""Implementation of the UUencode and UUdecode functions.
-
-encode(in_file, out_file [,name, mode])
-decode(in_file [, out_file, mode])
-"""
-
-import binascii
-import os
-import sys
-
-__all__ = ["Error", "encode", "decode"]
-
-class Error(Exception):
-    pass
-
-def encode(in_file, out_file, name=None, mode=None):
-    """Uuencode file"""
-    #
-    # If in_file is a pathname open it and change defaults
-    #
-    opened_files = []
-    try:
-        if in_file == '-':
-            in_file = sys.stdin
-        elif isinstance(in_file, basestring):
-            if name is None:
-                name = os.path.basename(in_file)
-            if mode is None:
-                try:
-                    mode = os.stat(in_file).st_mode
-                except AttributeError:
-                    pass
-            in_file = open(in_file, 'rb')
-            opened_files.append(in_file)
-        #
-        # Open out_file if it is a pathname
-        #
-        if out_file == '-':
-            out_file = sys.stdout
-        elif isinstance(out_file, basestring):
-            out_file = open(out_file, 'wb')
-            opened_files.append(out_file)
-        #
-        # Set defaults for name and mode
-        #
-        if name is None:
-            name = '-'
-        if mode is None:
-            mode = 0666
-        #
-        # Write the data
-        #
-        out_file.write('begin %o %s\n' % ((mode&0777),name))
-        data = in_file.read(45)
-        while len(data) > 0:
-            out_file.write(binascii.b2a_uu(data))
-            data = in_file.read(45)
-        out_file.write(' \nend\n')
-    finally:
-        for f in opened_files:
-            f.close()
-
-
-def decode(in_file, out_file=None, mode=None, quiet=0):
-    """Decode uuencoded file"""
-    #
-    # Open the input file, if needed.
-    #
-    opened_files = []
-    if in_file == '-':
-        in_file = sys.stdin
-    elif isinstance(in_file, basestring):
-        in_file = open(in_file)
-        opened_files.append(in_file)
-    try:
-        #
-        # Read until a begin is encountered or we've exhausted the file
-        #
-        while True:
-            hdr = in_file.readline()
-            if not hdr:
-                raise Error('No valid begin line found in input file')
-            if not hdr.startswith('begin'):
-                continue
-            hdrfields = hdr.split(' ', 2)
-            if len(hdrfields) == 3 and hdrfields[0] == 'begin':
-                try:
-                    int(hdrfields[1], 8)
-                    break
-                except ValueError:
-                    pass
-        if out_file is None:
-            out_file = hdrfields[2].rstrip()
-            if os.path.exists(out_file):
-                raise Error('Cannot overwrite existing file: %s' % out_file)
-        if mode is None:
-            mode = int(hdrfields[1], 8)
-        #
-        # Open the output file
-        #
-        if out_file == '-':
-            out_file = sys.stdout
-        elif isinstance(out_file, basestring):
-            fp = open(out_file, 'wb')
-            try:
-                os.path.chmod(out_file, mode)
-            except AttributeError:
-                pass
-            out_file = fp
-            opened_files.append(out_file)
-        #
-        # Main decoding loop
-        #
-        s = in_file.readline()
-        while s and s.strip() != 'end':
-            try:
-                data = binascii.a2b_uu(s)
-            except binascii.Error, v:
-                # Workaround for broken uuencoders by /Fredrik Lundh
-                nbytes = (((ord(s[0])-32) & 63) * 4 + 5) // 3
-                data = binascii.a2b_uu(s[:nbytes])
-                if not quiet:
-                    sys.stderr.write("Warning: %s\n" % v)
-            out_file.write(data)
-            s = in_file.readline()
-        if not s:
-            raise Error('Truncated input file')
-    finally:
-        for f in opened_files:
-            f.close()
-
-def test():
-    """uuencode/uudecode main program"""
-
-    import optparse
-    parser = optparse.OptionParser(usage='usage: %prog [-d] [-t] [input [output]]')
-    parser.add_option('-d', '--decode', dest='decode', help='Decode (instead of encode)?', default=False, action='store_true')
-    parser.add_option('-t', '--text', dest='text', help='data is text, encoded format unix-compatible text?', default=False, action='store_true')
-
-    (options, args) = parser.parse_args()
-    if len(args) > 2:
-        parser.error('incorrect number of arguments')
-        sys.exit(1)
-
-    input = sys.stdin
-    output = sys.stdout
-    if len(args) > 0:
-        input = args[0]
-    if len(args) > 1:
-        output = args[1]
-
-    if options.decode:
-        if options.text:
-            if isinstance(output, basestring):
-                output = open(output, 'w')
-            else:
-                print sys.argv[0], ': cannot do -t to stdout'
-                sys.exit(1)
-        decode(input, output)
-    else:
-        if options.text:
-            if isinstance(input, basestring):
-                input = open(input, 'r')
-            else:
-                print sys.argv[0], ': cannot do -t from stdin'
-                sys.exit(1)
-        encode(input, output)
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/uuid.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/uuid.py
deleted file mode 100644
index f0d6a24..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/uuid.py
+++ /dev/null
@@ -1,560 +0,0 @@
-r"""UUID objects (universally unique identifiers) according to RFC 4122.
-
-This module provides immutable UUID objects (class UUID) and the functions
-uuid1(), uuid3(), uuid4(), uuid5() for generating version 1, 3, 4, and 5
-UUIDs as specified in RFC 4122.
-
-If all you want is a unique ID, you should probably call uuid1() or uuid4().
-Note that uuid1() may compromise privacy since it creates a UUID containing
-the computer's network address.  uuid4() creates a random UUID.
-
-Typical usage:
-
-    >>> import uuid
-
-    # make a UUID based on the host ID and current time
-    >>> uuid.uuid1()
-    UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
-
-    # make a UUID using an MD5 hash of a namespace UUID and a name
-    >>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
-    UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')
-
-    # make a random UUID
-    >>> uuid.uuid4()
-    UUID('16fd2706-8baf-433b-82eb-8c7fada847da')
-
-    # make a UUID using a SHA-1 hash of a namespace UUID and a name
-    >>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
-    UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')
-
-    # make a UUID from a string of hex digits (braces and hyphens ignored)
-    >>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')
-
-    # convert a UUID to a string of hex digits in standard form
-    >>> str(x)
-    '00010203-0405-0607-0809-0a0b0c0d0e0f'
-
-    # get the raw 16 bytes of the UUID
-    >>> x.bytes
-    '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f'
-
-    # make a UUID from a 16-byte string
-    >>> uuid.UUID(bytes=x.bytes)
-    UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')
-"""
-
-__author__ = 'Ka-Ping Yee <ping@zesty.ca>'
-
-RESERVED_NCS, RFC_4122, RESERVED_MICROSOFT, RESERVED_FUTURE = [
-    'reserved for NCS compatibility', 'specified in RFC 4122',
-    'reserved for Microsoft compatibility', 'reserved for future definition']
-
-class UUID(object):
-    """Instances of the UUID class represent UUIDs as specified in RFC 4122.
-    UUID objects are immutable, hashable, and usable as dictionary keys.
-    Converting a UUID to a string with str() yields something in the form
-    '12345678-1234-1234-1234-123456789abc'.  The UUID constructor accepts
-    five possible forms: a similar string of hexadecimal digits, or a tuple
-    of six integer fields (with 32-bit, 16-bit, 16-bit, 8-bit, 8-bit, and
-    48-bit values respectively) as an argument named 'fields', or a string
-    of 16 bytes (with all the integer fields in big-endian order) as an
-    argument named 'bytes', or a string of 16 bytes (with the first three
-    fields in little-endian order) as an argument named 'bytes_le', or a
-    single 128-bit integer as an argument named 'int'.
-
-    UUIDs have these read-only attributes:
-
-        bytes       the UUID as a 16-byte string (containing the six
-                    integer fields in big-endian byte order)
-
-        bytes_le    the UUID as a 16-byte string (with time_low, time_mid,
-                    and time_hi_version in little-endian byte order)
-
-        fields      a tuple of the six integer fields of the UUID,
-                    which are also available as six individual attributes
-                    and two derived attributes:
-
-            time_low                the first 32 bits of the UUID
-            time_mid                the next 16 bits of the UUID
-            time_hi_version         the next 16 bits of the UUID
-            clock_seq_hi_variant    the next 8 bits of the UUID
-            clock_seq_low           the next 8 bits of the UUID
-            node                    the last 48 bits of the UUID
-
-            time                    the 60-bit timestamp
-            clock_seq               the 14-bit sequence number
-
-        hex         the UUID as a 32-character hexadecimal string
-
-        int         the UUID as a 128-bit integer
-
-        urn         the UUID as a URN as specified in RFC 4122
-
-        variant     the UUID variant (one of the constants RESERVED_NCS,
-                    RFC_4122, RESERVED_MICROSOFT, or RESERVED_FUTURE)
-
-        version     the UUID version number (1 through 5, meaningful only
-                    when the variant is RFC_4122)
-    """
-
-    def __init__(self, hex=None, bytes=None, bytes_le=None, fields=None,
-                       int=None, version=None):
-        r"""Create a UUID from either a string of 32 hexadecimal digits,
-        a string of 16 bytes as the 'bytes' argument, a string of 16 bytes
-        in little-endian order as the 'bytes_le' argument, a tuple of six
-        integers (32-bit time_low, 16-bit time_mid, 16-bit time_hi_version,
-        8-bit clock_seq_hi_variant, 8-bit clock_seq_low, 48-bit node) as
-        the 'fields' argument, or a single 128-bit integer as the 'int'
-        argument.  When a string of hex digits is given, curly braces,
-        hyphens, and a URN prefix are all optional.  For example, these
-        expressions all yield the same UUID:
-
-        UUID('{12345678-1234-5678-1234-567812345678}')
-        UUID('12345678123456781234567812345678')
-        UUID('urn:uuid:12345678-1234-5678-1234-567812345678')
-        UUID(bytes='\x12\x34\x56\x78'*4)
-        UUID(bytes_le='\x78\x56\x34\x12\x34\x12\x78\x56' +
-                      '\x12\x34\x56\x78\x12\x34\x56\x78')
-        UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678))
-        UUID(int=0x12345678123456781234567812345678)
-
-        Exactly one of 'hex', 'bytes', 'bytes_le', 'fields', or 'int' must
-        be given.  The 'version' argument is optional; if given, the resulting
-        UUID will have its variant and version set according to RFC 4122,
-        overriding the given 'hex', 'bytes', 'bytes_le', 'fields', or 'int'.
-        """
-
-        if [hex, bytes, bytes_le, fields, int].count(None) != 4:
-            raise TypeError('need one of hex, bytes, bytes_le, fields, or int')
-        if hex is not None:
-            hex = hex.replace('urn:', '').replace('uuid:', '')
-            hex = hex.strip('{}').replace('-', '')
-            if len(hex) != 32:
-                raise ValueError('badly formed hexadecimal UUID string')
-            int = long(hex, 16)
-        if bytes_le is not None:
-            if len(bytes_le) != 16:
-                raise ValueError('bytes_le is not a 16-char string')
-            bytes = (bytes_le[3] + bytes_le[2] + bytes_le[1] + bytes_le[0] +
-                     bytes_le[5] + bytes_le[4] + bytes_le[7] + bytes_le[6] +
-                     bytes_le[8:])
-        if bytes is not None:
-            if len(bytes) != 16:
-                raise ValueError('bytes is not a 16-char string')
-            int = long(('%02x'*16) % tuple(map(ord, bytes)), 16)
-        if fields is not None:
-            if len(fields) != 6:
-                raise ValueError('fields is not a 6-tuple')
-            (time_low, time_mid, time_hi_version,
-             clock_seq_hi_variant, clock_seq_low, node) = fields
-            if not 0 <= time_low < 1<<32L:
-                raise ValueError('field 1 out of range (need a 32-bit value)')
-            if not 0 <= time_mid < 1<<16L:
-                raise ValueError('field 2 out of range (need a 16-bit value)')
-            if not 0 <= time_hi_version < 1<<16L:
-                raise ValueError('field 3 out of range (need a 16-bit value)')
-            if not 0 <= clock_seq_hi_variant < 1<<8L:
-                raise ValueError('field 4 out of range (need an 8-bit value)')
-            if not 0 <= clock_seq_low < 1<<8L:
-                raise ValueError('field 5 out of range (need an 8-bit value)')
-            if not 0 <= node < 1<<48L:
-                raise ValueError('field 6 out of range (need a 48-bit value)')
-            clock_seq = (clock_seq_hi_variant << 8L) | clock_seq_low
-            int = ((time_low << 96L) | (time_mid << 80L) |
-                   (time_hi_version << 64L) | (clock_seq << 48L) | node)
-        if int is not None:
-            if not 0 <= int < 1<<128L:
-                raise ValueError('int is out of range (need a 128-bit value)')
-        if version is not None:
-            if not 1 <= version <= 5:
-                raise ValueError('illegal version number')
-            # Set the variant to RFC 4122.
-            int &= ~(0xc000 << 48L)
-            int |= 0x8000 << 48L
-            # Set the version number.
-            int &= ~(0xf000 << 64L)
-            int |= version << 76L
-        self.__dict__['int'] = int
-
-    def __cmp__(self, other):
-        if isinstance(other, UUID):
-            return cmp(self.int, other.int)
-        return NotImplemented
-
-    def __hash__(self):
-        return hash(self.int)
-
-    def __int__(self):
-        return self.int
-
-    def __repr__(self):
-        return 'UUID(%r)' % str(self)
-
-    def __setattr__(self, name, value):
-        raise TypeError('UUID objects are immutable')
-
-    def __str__(self):
-        hex = '%032x' % self.int
-        return '%s-%s-%s-%s-%s' % (
-            hex[:8], hex[8:12], hex[12:16], hex[16:20], hex[20:])
-
-    def get_bytes(self):
-        bytes = ''
-        for shift in range(0, 128, 8):
-            bytes = chr((self.int >> shift) & 0xff) + bytes
-        return bytes
-
-    bytes = property(get_bytes)
-
-    def get_bytes_le(self):
-        bytes = self.bytes
-        return (bytes[3] + bytes[2] + bytes[1] + bytes[0] +
-                bytes[5] + bytes[4] + bytes[7] + bytes[6] + bytes[8:])
-
-    bytes_le = property(get_bytes_le)
-
-    def get_fields(self):
-        return (self.time_low, self.time_mid, self.time_hi_version,
-                self.clock_seq_hi_variant, self.clock_seq_low, self.node)
-
-    fields = property(get_fields)
-
-    def get_time_low(self):
-        return self.int >> 96L
-
-    time_low = property(get_time_low)
-
-    def get_time_mid(self):
-        return (self.int >> 80L) & 0xffff
-
-    time_mid = property(get_time_mid)
-
-    def get_time_hi_version(self):
-        return (self.int >> 64L) & 0xffff
-
-    time_hi_version = property(get_time_hi_version)
-
-    def get_clock_seq_hi_variant(self):
-        return (self.int >> 56L) & 0xff
-
-    clock_seq_hi_variant = property(get_clock_seq_hi_variant)
-
-    def get_clock_seq_low(self):
-        return (self.int >> 48L) & 0xff
-
-    clock_seq_low = property(get_clock_seq_low)
-
-    def get_time(self):
-        return (((self.time_hi_version & 0x0fffL) << 48L) |
-                (self.time_mid << 32L) | self.time_low)
-
-    time = property(get_time)
-
-    def get_clock_seq(self):
-        return (((self.clock_seq_hi_variant & 0x3fL) << 8L) |
-                self.clock_seq_low)
-
-    clock_seq = property(get_clock_seq)
-
-    def get_node(self):
-        return self.int & 0xffffffffffff
-
-    node = property(get_node)
-
-    def get_hex(self):
-        return '%032x' % self.int
-
-    hex = property(get_hex)
-
-    def get_urn(self):
-        return 'urn:uuid:' + str(self)
-
-    urn = property(get_urn)
-
-    def get_variant(self):
-        if not self.int & (0x8000 << 48L):
-            return RESERVED_NCS
-        elif not self.int & (0x4000 << 48L):
-            return RFC_4122
-        elif not self.int & (0x2000 << 48L):
-            return RESERVED_MICROSOFT
-        else:
-            return RESERVED_FUTURE
-
-    variant = property(get_variant)
-
-    def get_version(self):
-        # The version bits are only meaningful for RFC 4122 UUIDs.
-        if self.variant == RFC_4122:
-            return int((self.int >> 76L) & 0xf)
-
-    version = property(get_version)
-
-def _find_mac(command, args, hw_identifiers, get_index):
-    import os
-    for dir in ['', '/sbin/', '/usr/sbin']:
-        executable = os.path.join(dir, command)
-        if not os.path.exists(executable):
-            continue
-
-        try:
-            # LC_ALL to get English output, 2>/dev/null to
-            # prevent output on stderr
-            cmd = 'LC_ALL=C %s %s 2>/dev/null' % (executable, args)
-            with os.popen(cmd) as pipe:
-                for line in pipe:
-                    words = line.lower().split()
-                    for i in range(len(words)):
-                        if words[i] in hw_identifiers:
-                            return int(
-                                words[get_index(i)].replace(':', ''), 16)
-        except IOError:
-            continue
-    return None
-
-def _ifconfig_getnode():
-    """Get the hardware address on Unix by running ifconfig."""
-
-    # This works on Linux ('' or '-a'), Tru64 ('-av'), but not all Unixes.
-    for args in ('', '-a', '-av'):
-        mac = _find_mac('ifconfig', args, ['hwaddr', 'ether'], lambda i: i+1)
-        if mac:
-            return mac
-
-    import socket
-    ip_addr = socket.gethostbyname(socket.gethostname())
-
-    # Try getting the MAC addr from arp based on our IP address (Solaris).
-    mac = _find_mac('arp', '-an', [ip_addr], lambda i: -1)
-    if mac:
-        return mac
-
-    # This might work on HP-UX.
-    mac = _find_mac('lanscan', '-ai', ['lan0'], lambda i: 0)
-    if mac:
-        return mac
-
-    return None
-
-def _ipconfig_getnode():
-    """Get the hardware address on Windows by running ipconfig.exe."""
-    import os, re
-    dirs = ['', r'c:\windows\system32', r'c:\winnt\system32']
-    try:
-        import ctypes
-        buffer = ctypes.create_string_buffer(300)
-        ctypes.windll.kernel32.GetSystemDirectoryA(buffer, 300)
-        dirs.insert(0, buffer.value.decode('mbcs'))
-    except:
-        pass
-    for dir in dirs:
-        try:
-            pipe = os.popen(os.path.join(dir, 'ipconfig') + ' /all')
-        except IOError:
-            continue
-        else:
-            for line in pipe:
-                value = line.split(':')[-1].strip().lower()
-                if re.match('([0-9a-f][0-9a-f]-){5}[0-9a-f][0-9a-f]', value):
-                    return int(value.replace('-', ''), 16)
-        finally:
-            pipe.close()
-
-def _netbios_getnode():
-    """Get the hardware address on Windows using NetBIOS calls.
-    See http://support.microsoft.com/kb/118623 for details."""
-    import win32wnet, netbios
-    ncb = netbios.NCB()
-    ncb.Command = netbios.NCBENUM
-    ncb.Buffer = adapters = netbios.LANA_ENUM()
-    adapters._pack()
-    if win32wnet.Netbios(ncb) != 0:
-        return
-    adapters._unpack()
-    for i in range(adapters.length):
-        ncb.Reset()
-        ncb.Command = netbios.NCBRESET
-        ncb.Lana_num = ord(adapters.lana[i])
-        if win32wnet.Netbios(ncb) != 0:
-            continue
-        ncb.Reset()
-        ncb.Command = netbios.NCBASTAT
-        ncb.Lana_num = ord(adapters.lana[i])
-        ncb.Callname = '*'.ljust(16)
-        ncb.Buffer = status = netbios.ADAPTER_STATUS()
-        if win32wnet.Netbios(ncb) != 0:
-            continue
-        status._unpack()
-        bytes = map(ord, status.adapter_address)
-        return ((bytes[0]<<40L) + (bytes[1]<<32L) + (bytes[2]<<24L) +
-                (bytes[3]<<16L) + (bytes[4]<<8L) + bytes[5])
-
-# Thanks to Thomas Heller for ctypes and for his help with its use here.
-
-# If ctypes is available, use it to find system routines for UUID generation.
-_uuid_generate_random = _uuid_generate_time = _UuidCreate = None
-try:
-    import ctypes, ctypes.util
-
-    # The uuid_generate_* routines are provided by libuuid on at least
-    # Linux and FreeBSD, and provided by libc on Mac OS X.
-    for libname in ['uuid', 'c']:
-        try:
-            lib = ctypes.CDLL(ctypes.util.find_library(libname))
-        except:
-            continue
-        if hasattr(lib, 'uuid_generate_random'):
-            _uuid_generate_random = lib.uuid_generate_random
-        if hasattr(lib, 'uuid_generate_time'):
-            _uuid_generate_time = lib.uuid_generate_time
-
-    # The uuid_generate_* functions are broken on MacOS X 10.5, as noted
-    # in issue #8621 the function generates the same sequence of values
-    # in the parent process and all children created using fork (unless
-    # those children use exec as well).
-    #
-    # Assume that the uuid_generate functions are broken from 10.5 onward,
-    # the test can be adjusted when a later version is fixed.
-    import sys
-    if sys.platform == 'darwin':
-        import os
-        if int(os.uname()[2].split('.')[0]) >= 9:
-            _uuid_generate_random = _uuid_generate_time = None
-
-    # On Windows prior to 2000, UuidCreate gives a UUID containing the
-    # hardware address.  On Windows 2000 and later, UuidCreate makes a
-    # random UUID and UuidCreateSequential gives a UUID containing the
-    # hardware address.  These routines are provided by the RPC runtime.
-    # NOTE:  at least on Tim's WinXP Pro SP2 desktop box, while the last
-    # 6 bytes returned by UuidCreateSequential are fixed, they don't appear
-    # to bear any relationship to the MAC address of any network device
-    # on the box.
-    try:
-        lib = ctypes.windll.rpcrt4
-    except:
-        lib = None
-    _UuidCreate = getattr(lib, 'UuidCreateSequential',
-                          getattr(lib, 'UuidCreate', None))
-except:
-    pass
-
-def _unixdll_getnode():
-    """Get the hardware address on Unix using ctypes."""
-    _buffer = ctypes.create_string_buffer(16)
-    _uuid_generate_time(_buffer)
-    return UUID(bytes=_buffer.raw).node
-
-def _windll_getnode():
-    """Get the hardware address on Windows using ctypes."""
-    _buffer = ctypes.create_string_buffer(16)
-    if _UuidCreate(_buffer) == 0:
-        return UUID(bytes=_buffer.raw).node
-
-def _random_getnode():
-    """Get a random node ID, with eighth bit set as suggested by RFC 4122."""
-    import random
-    return random.randrange(0, 1<<48L) | 0x010000000000L
-
-_node = None
-
-def getnode():
-    """Get the hardware address as a 48-bit positive integer.
-
-    The first time this runs, it may launch a separate program, which could
-    be quite slow.  If all attempts to obtain the hardware address fail, we
-    choose a random 48-bit number with its eighth bit set to 1 as recommended
-    in RFC 4122.
-    """
-
-    global _node
-    if _node is not None:
-        return _node
-
-    import sys
-    if sys.platform == 'win32':
-        getters = [_windll_getnode, _netbios_getnode, _ipconfig_getnode]
-    else:
-        getters = [_unixdll_getnode, _ifconfig_getnode]
-
-    for getter in getters + [_random_getnode]:
-        try:
-            _node = getter()
-        except:
-            continue
-        if _node is not None:
-            return _node
-
-_last_timestamp = None
-
-def uuid1(node=None, clock_seq=None):
-    """Generate a UUID from a host ID, sequence number, and the current time.
-    If 'node' is not given, getnode() is used to obtain the hardware
-    address.  If 'clock_seq' is given, it is used as the sequence number;
-    otherwise a random 14-bit sequence number is chosen."""
-
-    # When the system provides a version-1 UUID generator, use it (but don't
-    # use UuidCreate here because its UUIDs don't conform to RFC 4122).
-    if _uuid_generate_time and node is clock_seq is None:
-        _buffer = ctypes.create_string_buffer(16)
-        _uuid_generate_time(_buffer)
-        return UUID(bytes=_buffer.raw)
-
-    global _last_timestamp
-    import time
-    nanoseconds = int(time.time() * 1e9)
-    # 0x01b21dd213814000 is the number of 100-ns intervals between the
-    # UUID epoch 1582-10-15 00:00:00 and the Unix epoch 1970-01-01 00:00:00.
-    timestamp = int(nanoseconds//100) + 0x01b21dd213814000L
-    if _last_timestamp is not None and timestamp <= _last_timestamp:
-        timestamp = _last_timestamp + 1
-    _last_timestamp = timestamp
-    if clock_seq is None:
-        import random
-        clock_seq = random.randrange(1<<14L) # instead of stable storage
-    time_low = timestamp & 0xffffffffL
-    time_mid = (timestamp >> 32L) & 0xffffL
-    time_hi_version = (timestamp >> 48L) & 0x0fffL
-    clock_seq_low = clock_seq & 0xffL
-    clock_seq_hi_variant = (clock_seq >> 8L) & 0x3fL
-    if node is None:
-        node = getnode()
-    return UUID(fields=(time_low, time_mid, time_hi_version,
-                        clock_seq_hi_variant, clock_seq_low, node), version=1)
-
-def uuid3(namespace, name):
-    """Generate a UUID from the MD5 hash of a namespace UUID and a name."""
-    from hashlib import md5
-    hash = md5(namespace.bytes + name).digest()
-    return UUID(bytes=hash[:16], version=3)
-
-def uuid4():
-    """Generate a random UUID."""
-
-    # When the system provides a version-4 UUID generator, use it.
-    if _uuid_generate_random:
-        _buffer = ctypes.create_string_buffer(16)
-        _uuid_generate_random(_buffer)
-        return UUID(bytes=_buffer.raw)
-
-    # Otherwise, get randomness from urandom or the 'random' module.
-    try:
-        import os
-        return UUID(bytes=os.urandom(16), version=4)
-    except:
-        import random
-        bytes = [chr(random.randrange(256)) for i in range(16)]
-        return UUID(bytes=bytes, version=4)
-
-def uuid5(namespace, name):
-    """Generate a UUID from the SHA-1 hash of a namespace UUID and a name."""
-    from hashlib import sha1
-    hash = sha1(namespace.bytes + name).digest()
-    return UUID(bytes=hash[:16], version=5)
-
-# The following standard UUIDs are for use with uuid3() or uuid5().
-
-NAMESPACE_DNS = UUID('6ba7b810-9dad-11d1-80b4-00c04fd430c8')
-NAMESPACE_URL = UUID('6ba7b811-9dad-11d1-80b4-00c04fd430c8')
-NAMESPACE_OID = UUID('6ba7b812-9dad-11d1-80b4-00c04fd430c8')
-NAMESPACE_X500 = UUID('6ba7b814-9dad-11d1-80b4-00c04fd430c8')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/warnings.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/warnings.py
deleted file mode 100644
index 9aed27f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/warnings.py
+++ /dev/null
@@ -1,400 +0,0 @@
-"""Python part of the warnings subsystem."""
-
-# Note: function level imports should *not* be used
-# in this module as it may cause import lock deadlock.
-# See bug 683658.
-import linecache
-import sys
-import types
-
-__all__ = ["warn", "showwarning", "formatwarning", "filterwarnings",
-           "resetwarnings", "catch_warnings"]
-
-
-def warnpy3k(message, category=None, stacklevel=1):
-    """Issue a deprecation warning for Python 3.x related changes.
-
-    Warnings are omitted unless Python is started with the -3 option.
-    """
-    if sys.py3kwarning:
-        if category is None:
-            category = DeprecationWarning
-        warn(message, category, stacklevel+1)
-
-def _show_warning(message, category, filename, lineno, file=None, line=None):
-    """Hook to write a warning to a file; replace if you like."""
-    if file is None:
-        file = sys.stderr
-    try:
-        file.write(formatwarning(message, category, filename, lineno, line))
-    except IOError:
-        pass # the file (probably stderr) is invalid - this warning gets lost.
-# Keep a working version around in case the deprecation of the old API is
-# triggered.
-showwarning = _show_warning
-
-def formatwarning(message, category, filename, lineno, line=None):
-    """Function to format a warning the standard way."""
-    s =  "%s:%s: %s: %s\n" % (filename, lineno, category.__name__, message)
-    line = linecache.getline(filename, lineno) if line is None else line
-    if line:
-        line = line.strip()
-        s += "  %s\n" % line
-    return s
-
-def filterwarnings(action, message="", category=Warning, module="", lineno=0,
-                   append=0):
-    """Insert an entry into the list of warnings filters (at the front).
-
-    'action' -- one of "error", "ignore", "always", "default", "module",
-                or "once"
-    'message' -- a regex that the warning message must match
-    'category' -- a class that the warning must be a subclass of
-    'module' -- a regex that the module name must match
-    'lineno' -- an integer line number, 0 matches all warnings
-    'append' -- if true, append to the list of filters
-    """
-    import re
-    assert action in ("error", "ignore", "always", "default", "module",
-                      "once"), "invalid action: %r" % (action,)
-    assert isinstance(message, basestring), "message must be a string"
-    assert isinstance(category, (type, types.ClassType)), \
-           "category must be a class"
-    assert issubclass(category, Warning), "category must be a Warning subclass"
-    assert isinstance(module, basestring), "module must be a string"
-    assert isinstance(lineno, int) and lineno >= 0, \
-           "lineno must be an int >= 0"
-    item = (action, re.compile(message, re.I), category,
-            re.compile(module), lineno)
-    if append:
-        filters.append(item)
-    else:
-        filters.insert(0, item)
-
-def simplefilter(action, category=Warning, lineno=0, append=0):
-    """Insert a simple entry into the list of warnings filters (at the front).
-
-    A simple filter matches all modules and messages.
-    'action' -- one of "error", "ignore", "always", "default", "module",
-                or "once"
-    'category' -- a class that the warning must be a subclass of
-    'lineno' -- an integer line number, 0 matches all warnings
-    'append' -- if true, append to the list of filters
-    """
-    assert action in ("error", "ignore", "always", "default", "module",
-                      "once"), "invalid action: %r" % (action,)
-    assert isinstance(lineno, int) and lineno >= 0, \
-           "lineno must be an int >= 0"
-    item = (action, None, category, None, lineno)
-    if append:
-        filters.append(item)
-    else:
-        filters.insert(0, item)
-
-def resetwarnings():
-    """Clear the list of warning filters, so that no filters are active."""
-    filters[:] = []
-
-class _OptionError(Exception):
-    """Exception used by option processing helpers."""
-    pass
-
-# Helper to process -W options passed via sys.warnoptions
-def _processoptions(args):
-    for arg in args:
-        try:
-            _setoption(arg)
-        except _OptionError, msg:
-            print >>sys.stderr, "Invalid -W option ignored:", msg
-
-# Helper for _processoptions()
-def _setoption(arg):
-    import re
-    parts = arg.split(':')
-    if len(parts) > 5:
-        raise _OptionError("too many fields (max 5): %r" % (arg,))
-    while len(parts) < 5:
-        parts.append('')
-    action, message, category, module, lineno = [s.strip()
-                                                 for s in parts]
-    action = _getaction(action)
-    message = re.escape(message)
-    category = _getcategory(category)
-    module = re.escape(module)
-    if module:
-        module = module + '$'
-    if lineno:
-        try:
-            lineno = int(lineno)
-            if lineno < 0:
-                raise ValueError
-        except (ValueError, OverflowError):
-            raise _OptionError("invalid lineno %r" % (lineno,))
-    else:
-        lineno = 0
-    filterwarnings(action, message, category, module, lineno)
-
-# Helper for _setoption()
-def _getaction(action):
-    if not action:
-        return "default"
-    if action == "all": return "always" # Alias
-    for a in ('default', 'always', 'ignore', 'module', 'once', 'error'):
-        if a.startswith(action):
-            return a
-    raise _OptionError("invalid action: %r" % (action,))
-
-# Helper for _setoption()
-def _getcategory(category):
-    import re
-    if not category:
-        return Warning
-    if re.match("^[a-zA-Z0-9_]+$", category):
-        try:
-            cat = eval(category)
-        except NameError:
-            raise _OptionError("unknown warning category: %r" % (category,))
-    else:
-        i = category.rfind(".")
-        module = category[:i]
-        klass = category[i+1:]
-        try:
-            m = __import__(module, None, None, [klass])
-        except ImportError:
-            raise _OptionError("invalid module name: %r" % (module,))
-        try:
-            cat = getattr(m, klass)
-        except AttributeError:
-            raise _OptionError("unknown warning category: %r" % (category,))
-    if not issubclass(cat, Warning):
-        raise _OptionError("invalid warning category: %r" % (category,))
-    return cat
-
-
-# Code typically replaced by _warnings
-def warn(message, category=None, stacklevel=1):
-    """Issue a warning, or maybe ignore it or raise an exception."""
-    # Check if message is already a Warning object
-    if isinstance(message, Warning):
-        category = message.__class__
-    # Check category argument
-    if category is None:
-        category = UserWarning
-    assert issubclass(category, Warning)
-    # Get context information
-    try:
-        caller = sys._getframe(stacklevel)
-    except ValueError:
-        globals = sys.__dict__
-        lineno = 1
-    else:
-        globals = caller.f_globals
-        lineno = caller.f_lineno
-    if '__name__' in globals:
-        module = globals['__name__']
-    else:
-        module = "<string>"
-    filename = globals.get('__file__')
-    if filename:
-        fnl = filename.lower()
-        if fnl.endswith((".pyc", ".pyo")):
-            filename = filename[:-1]
-    else:
-        if module == "__main__":
-            try:
-                filename = sys.argv[0]
-            except AttributeError:
-                # embedded interpreters don't have sys.argv, see bug #839151
-                filename = '__main__'
-        if not filename:
-            filename = module
-    registry = globals.setdefault("__warningregistry__", {})
-    warn_explicit(message, category, filename, lineno, module, registry,
-                  globals)
-
-def warn_explicit(message, category, filename, lineno,
-                  module=None, registry=None, module_globals=None):
-    lineno = int(lineno)
-    if module is None:
-        module = filename or "<unknown>"
-        if module[-3:].lower() == ".py":
-            module = module[:-3] # XXX What about leading pathname?
-    if registry is None:
-        registry = {}
-    if isinstance(message, Warning):
-        text = str(message)
-        category = message.__class__
-    else:
-        text = message
-        message = category(message)
-    key = (text, category, lineno)
-    # Quick test for common case
-    if registry.get(key):
-        return
-    # Search the filters
-    for item in filters:
-        action, msg, cat, mod, ln = item
-        if ((msg is None or msg.match(text)) and
-            issubclass(category, cat) and
-            (mod is None or mod.match(module)) and
-            (ln == 0 or lineno == ln)):
-            break
-    else:
-        action = defaultaction
-    # Early exit actions
-    if action == "ignore":
-        registry[key] = 1
-        return
-
-    # Prime the linecache for formatting, in case the
-    # "file" is actually in a zipfile or something.
-    linecache.getlines(filename, module_globals)
-
-    if action == "error":
-        raise message
-    # Other actions
-    if action == "once":
-        registry[key] = 1
-        oncekey = (text, category)
-        if onceregistry.get(oncekey):
-            return
-        onceregistry[oncekey] = 1
-    elif action == "always":
-        pass
-    elif action == "module":
-        registry[key] = 1
-        altkey = (text, category, 0)
-        if registry.get(altkey):
-            return
-        registry[altkey] = 1
-    elif action == "default":
-        registry[key] = 1
-    else:
-        # Unrecognized actions are errors
-        raise RuntimeError(
-              "Unrecognized action (%r) in warnings.filters:\n %s" %
-              (action, item))
-    # Print message and context
-    showwarning(message, category, filename, lineno)
-
-
-class WarningMessage(object):
-
-    """Holds the result of a single showwarning() call."""
-
-    _WARNING_DETAILS = ("message", "category", "filename", "lineno", "file",
-                        "line")
-
-    def __init__(self, message, category, filename, lineno, file=None,
-                    line=None):
-        local_values = locals()
-        for attr in self._WARNING_DETAILS:
-            setattr(self, attr, local_values[attr])
-        self._category_name = category.__name__ if category else None
-
-    def __str__(self):
-        return ("{message : %r, category : %r, filename : %r, lineno : %s, "
-                    "line : %r}" % (self.message, self._category_name,
-                                    self.filename, self.lineno, self.line))
-
-
-class catch_warnings(object):
-
-    """A context manager that copies and restores the warnings filter upon
-    exiting the context.
-
-    The 'record' argument specifies whether warnings should be captured by a
-    custom implementation of warnings.showwarning() and be appended to a list
-    returned by the context manager. Otherwise None is returned by the context
-    manager. The objects appended to the list are arguments whose attributes
-    mirror the arguments to showwarning().
-
-    The 'module' argument is to specify an alternative module to the module
-    named 'warnings' and imported under that name. This argument is only useful
-    when testing the warnings module itself.
-
-    """
-
-    def __init__(self, record=False, module=None):
-        """Specify whether to record warnings and if an alternative module
-        should be used other than sys.modules['warnings'].
-
-        For compatibility with Python 3.0, please consider all arguments to be
-        keyword-only.
-
-        """
-        self._record = record
-        self._module = sys.modules['warnings'] if module is None else module
-        self._entered = False
-
-    def __repr__(self):
-        args = []
-        if self._record:
-            args.append("record=True")
-        if self._module is not sys.modules['warnings']:
-            args.append("module=%r" % self._module)
-        name = type(self).__name__
-        return "%s(%s)" % (name, ", ".join(args))
-
-    def __enter__(self):
-        if self._entered:
-            raise RuntimeError("Cannot enter %r twice" % self)
-        self._entered = True
-        self._filters = self._module.filters
-        self._module.filters = self._filters[:]
-        self._showwarning = self._module.showwarning
-        if self._record:
-            log = []
-            def showwarning(*args, **kwargs):
-                log.append(WarningMessage(*args, **kwargs))
-            self._module.showwarning = showwarning
-            return log
-        else:
-            return None
-
-    def __exit__(self, *exc_info):
-        if not self._entered:
-            raise RuntimeError("Cannot exit %r without entering first" % self)
-        self._module.filters = self._filters
-        self._module.showwarning = self._showwarning
-
-
-# filters contains a sequence of filter 5-tuples
-# The components of the 5-tuple are:
-# - an action: error, ignore, always, default, module, or once
-# - a compiled regex that must match the warning message
-# - a class representing the warning category
-# - a compiled regex that must match the module that is being warned
-# - a line number for the line being warning, or 0 to mean any line
-# If either if the compiled regexs are None, match anything.
-_warnings_defaults = False
-try:
-    from _warnings import (filters, default_action, once_registry,
-                            warn, warn_explicit)
-    defaultaction = default_action
-    onceregistry = once_registry
-    _warnings_defaults = True
-except ImportError:
-    filters = []
-    defaultaction = "default"
-    onceregistry = {}
-
-
-# Module initialization
-_processoptions(sys.warnoptions)
-if not _warnings_defaults:
-    silence = [ImportWarning, PendingDeprecationWarning]
-    # Don't silence DeprecationWarning if -3 or -Q was used.
-    if not sys.py3kwarning and not sys.flags.division_warning:
-        silence.append(DeprecationWarning)
-    for cls in silence:
-        simplefilter("ignore", category=cls)
-    bytes_warning = sys.flags.bytes_warning
-    if bytes_warning > 1:
-        bytes_action = "error"
-    elif bytes_warning:
-        bytes_action = "default"
-    else:
-        bytes_action = "ignore"
-    simplefilter(bytes_action, category=BytesWarning, append=1)
-del _warnings_defaults
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/wave.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/wave.py
deleted file mode 100644
index 52f9c1c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/wave.py
+++ /dev/null
@@ -1,504 +0,0 @@
-"""Stuff to parse WAVE files.
-
-Usage.
-
-Reading WAVE files:
-      f = wave.open(file, 'r')
-where file is either the name of a file or an open file pointer.
-The open file pointer must have methods read(), seek(), and close().
-When the setpos() and rewind() methods are not used, the seek()
-method is not  necessary.
-
-This returns an instance of a class with the following public methods:
-      getnchannels()  -- returns number of audio channels (1 for
-                         mono, 2 for stereo)
-      getsampwidth()  -- returns sample width in bytes
-      getframerate()  -- returns sampling frequency
-      getnframes()    -- returns number of audio frames
-      getcomptype()   -- returns compression type ('NONE' for linear samples)
-      getcompname()   -- returns human-readable version of
-                         compression type ('not compressed' linear samples)
-      getparams()     -- returns a tuple consisting of all of the
-                         above in the above order
-      getmarkers()    -- returns None (for compatibility with the
-                         aifc module)
-      getmark(id)     -- raises an error since the mark does not
-                         exist (for compatibility with the aifc module)
-      readframes(n)   -- returns at most n frames of audio
-      rewind()        -- rewind to the beginning of the audio stream
-      setpos(pos)     -- seek to the specified position
-      tell()          -- return the current position
-      close()         -- close the instance (make it unusable)
-The position returned by tell() and the position given to setpos()
-are compatible and have nothing to do with the actual position in the
-file.
-The close() method is called automatically when the class instance
-is destroyed.
-
-Writing WAVE files:
-      f = wave.open(file, 'w')
-where file is either the name of a file or an open file pointer.
-The open file pointer must have methods write(), tell(), seek(), and
-close().
-
-This returns an instance of a class with the following public methods:
-      setnchannels(n) -- set the number of channels
-      setsampwidth(n) -- set the sample width
-      setframerate(n) -- set the frame rate
-      setnframes(n)   -- set the number of frames
-      setcomptype(type, name)
-                      -- set the compression type and the
-                         human-readable compression type
-      setparams(tuple)
-                      -- set all parameters at once
-      tell()          -- return current position in output file
-      writeframesraw(data)
-                      -- write audio frames without pathing up the
-                         file header
-      writeframes(data)
-                      -- write audio frames and patch up the file header
-      close()         -- patch up the file header and close the
-                         output file
-You should set the parameters before the first writeframesraw or
-writeframes.  The total number of frames does not need to be set,
-but when it is set to the correct value, the header does not have to
-be patched up.
-It is best to first set all parameters, perhaps possibly the
-compression type, and then write audio frames using writeframesraw.
-When all frames have been written, either call writeframes('') or
-close() to patch up the sizes in the header.
-The close() method is called automatically when the class instance
-is destroyed.
-"""
-
-import __builtin__
-
-__all__ = ["open", "openfp", "Error"]
-
-class Error(Exception):
-    pass
-
-WAVE_FORMAT_PCM = 0x0001
-
-_array_fmts = None, 'b', 'h', None, 'l'
-
-# Determine endian-ness
-import struct
-if struct.pack("h", 1) == "\000\001":
-    big_endian = 1
-else:
-    big_endian = 0
-
-from chunk import Chunk
-
-class Wave_read:
-    """Variables used in this class:
-
-    These variables are available to the user though appropriate
-    methods of this class:
-    _file -- the open file with methods read(), close(), and seek()
-              set through the __init__() method
-    _nchannels -- the number of audio channels
-              available through the getnchannels() method
-    _nframes -- the number of audio frames
-              available through the getnframes() method
-    _sampwidth -- the number of bytes per audio sample
-              available through the getsampwidth() method
-    _framerate -- the sampling frequency
-              available through the getframerate() method
-    _comptype -- the AIFF-C compression type ('NONE' if AIFF)
-              available through the getcomptype() method
-    _compname -- the human-readable AIFF-C compression type
-              available through the getcomptype() method
-    _soundpos -- the position in the audio stream
-              available through the tell() method, set through the
-              setpos() method
-
-    These variables are used internally only:
-    _fmt_chunk_read -- 1 iff the FMT chunk has been read
-    _data_seek_needed -- 1 iff positioned correctly in audio
-              file for readframes()
-    _data_chunk -- instantiation of a chunk class for the DATA chunk
-    _framesize -- size of one frame in the file
-    """
-
-    def initfp(self, file):
-        self._convert = None
-        self._soundpos = 0
-        self._file = Chunk(file, bigendian = 0)
-        if self._file.getname() != 'RIFF':
-            raise Error, 'file does not start with RIFF id'
-        if self._file.read(4) != 'WAVE':
-            raise Error, 'not a WAVE file'
-        self._fmt_chunk_read = 0
-        self._data_chunk = None
-        while 1:
-            self._data_seek_needed = 1
-            try:
-                chunk = Chunk(self._file, bigendian = 0)
-            except EOFError:
-                break
-            chunkname = chunk.getname()
-            if chunkname == 'fmt ':
-                self._read_fmt_chunk(chunk)
-                self._fmt_chunk_read = 1
-            elif chunkname == 'data':
-                if not self._fmt_chunk_read:
-                    raise Error, 'data chunk before fmt chunk'
-                self._data_chunk = chunk
-                self._nframes = chunk.chunksize // self._framesize
-                self._data_seek_needed = 0
-                break
-            chunk.skip()
-        if not self._fmt_chunk_read or not self._data_chunk:
-            raise Error, 'fmt chunk and/or data chunk missing'
-
-    def __init__(self, f):
-        self._i_opened_the_file = None
-        if isinstance(f, basestring):
-            f = __builtin__.open(f, 'rb')
-            self._i_opened_the_file = f
-        # else, assume it is an open file object already
-        try:
-            self.initfp(f)
-        except:
-            if self._i_opened_the_file:
-                f.close()
-            raise
-
-    def __del__(self):
-        self.close()
-    #
-    # User visible methods.
-    #
-    def getfp(self):
-        return self._file
-
-    def rewind(self):
-        self._data_seek_needed = 1
-        self._soundpos = 0
-
-    def close(self):
-        if self._i_opened_the_file:
-            self._i_opened_the_file.close()
-            self._i_opened_the_file = None
-        self._file = None
-
-    def tell(self):
-        return self._soundpos
-
-    def getnchannels(self):
-        return self._nchannels
-
-    def getnframes(self):
-        return self._nframes
-
-    def getsampwidth(self):
-        return self._sampwidth
-
-    def getframerate(self):
-        return self._framerate
-
-    def getcomptype(self):
-        return self._comptype
-
-    def getcompname(self):
-        return self._compname
-
-    def getparams(self):
-        return self.getnchannels(), self.getsampwidth(), \
-               self.getframerate(), self.getnframes(), \
-               self.getcomptype(), self.getcompname()
-
-    def getmarkers(self):
-        return None
-
-    def getmark(self, id):
-        raise Error, 'no marks'
-
-    def setpos(self, pos):
-        if pos < 0 or pos > self._nframes:
-            raise Error, 'position not in range'
-        self._soundpos = pos
-        self._data_seek_needed = 1
-
-    def readframes(self, nframes):
-        if self._data_seek_needed:
-            self._data_chunk.seek(0, 0)
-            pos = self._soundpos * self._framesize
-            if pos:
-                self._data_chunk.seek(pos, 0)
-            self._data_seek_needed = 0
-        if nframes == 0:
-            return ''
-        if self._sampwidth > 1 and big_endian:
-            # unfortunately the fromfile() method does not take
-            # something that only looks like a file object, so
-            # we have to reach into the innards of the chunk object
-            import array
-            chunk = self._data_chunk
-            data = array.array(_array_fmts[self._sampwidth])
-            nitems = nframes * self._nchannels
-            if nitems * self._sampwidth > chunk.chunksize - chunk.size_read:
-                nitems = (chunk.chunksize - chunk.size_read) / self._sampwidth
-            data.fromfile(chunk.file.file, nitems)
-            # "tell" data chunk how much was read
-            chunk.size_read = chunk.size_read + nitems * self._sampwidth
-            # do the same for the outermost chunk
-            chunk = chunk.file
-            chunk.size_read = chunk.size_read + nitems * self._sampwidth
-            data.byteswap()
-            data = data.tostring()
-        else:
-            data = self._data_chunk.read(nframes * self._framesize)
-        if self._convert and data:
-            data = self._convert(data)
-        self._soundpos = self._soundpos + len(data) // (self._nchannels * self._sampwidth)
-        return data
-
-    #
-    # Internal methods.
-    #
-
-    def _read_fmt_chunk(self, chunk):
-        wFormatTag, self._nchannels, self._framerate, dwAvgBytesPerSec, wBlockAlign = struct.unpack('<hhllh', chunk.read(14))
-        if wFormatTag == WAVE_FORMAT_PCM:
-            sampwidth = struct.unpack('<h', chunk.read(2))[0]
-            self._sampwidth = (sampwidth + 7) // 8
-        else:
-            raise Error, 'unknown format: %r' % (wFormatTag,)
-        self._framesize = self._nchannels * self._sampwidth
-        self._comptype = 'NONE'
-        self._compname = 'not compressed'
-
-class Wave_write:
-    """Variables used in this class:
-
-    These variables are user settable through appropriate methods
-    of this class:
-    _file -- the open file with methods write(), close(), tell(), seek()
-              set through the __init__() method
-    _comptype -- the AIFF-C compression type ('NONE' in AIFF)
-              set through the setcomptype() or setparams() method
-    _compname -- the human-readable AIFF-C compression type
-              set through the setcomptype() or setparams() method
-    _nchannels -- the number of audio channels
-              set through the setnchannels() or setparams() method
-    _sampwidth -- the number of bytes per audio sample
-              set through the setsampwidth() or setparams() method
-    _framerate -- the sampling frequency
-              set through the setframerate() or setparams() method
-    _nframes -- the number of audio frames written to the header
-              set through the setnframes() or setparams() method
-
-    These variables are used internally only:
-    _datalength -- the size of the audio samples written to the header
-    _nframeswritten -- the number of frames actually written
-    _datawritten -- the size of the audio samples actually written
-    """
-
-    def __init__(self, f):
-        self._i_opened_the_file = None
-        if isinstance(f, basestring):
-            f = __builtin__.open(f, 'wb')
-            self._i_opened_the_file = f
-        try:
-            self.initfp(f)
-        except:
-            if self._i_opened_the_file:
-                f.close()
-            raise
-
-    def initfp(self, file):
-        self._file = file
-        self._convert = None
-        self._nchannels = 0
-        self._sampwidth = 0
-        self._framerate = 0
-        self._nframes = 0
-        self._nframeswritten = 0
-        self._datawritten = 0
-        self._datalength = 0
-        self._headerwritten = False
-
-    def __del__(self):
-        self.close()
-
-    #
-    # User visible methods.
-    #
-    def setnchannels(self, nchannels):
-        if self._datawritten:
-            raise Error, 'cannot change parameters after starting to write'
-        if nchannels < 1:
-            raise Error, 'bad # of channels'
-        self._nchannels = nchannels
-
-    def getnchannels(self):
-        if not self._nchannels:
-            raise Error, 'number of channels not set'
-        return self._nchannels
-
-    def setsampwidth(self, sampwidth):
-        if self._datawritten:
-            raise Error, 'cannot change parameters after starting to write'
-        if sampwidth < 1 or sampwidth > 4:
-            raise Error, 'bad sample width'
-        self._sampwidth = sampwidth
-
-    def getsampwidth(self):
-        if not self._sampwidth:
-            raise Error, 'sample width not set'
-        return self._sampwidth
-
-    def setframerate(self, framerate):
-        if self._datawritten:
-            raise Error, 'cannot change parameters after starting to write'
-        if framerate <= 0:
-            raise Error, 'bad frame rate'
-        self._framerate = framerate
-
-    def getframerate(self):
-        if not self._framerate:
-            raise Error, 'frame rate not set'
-        return self._framerate
-
-    def setnframes(self, nframes):
-        if self._datawritten:
-            raise Error, 'cannot change parameters after starting to write'
-        self._nframes = nframes
-
-    def getnframes(self):
-        return self._nframeswritten
-
-    def setcomptype(self, comptype, compname):
-        if self._datawritten:
-            raise Error, 'cannot change parameters after starting to write'
-        if comptype not in ('NONE',):
-            raise Error, 'unsupported compression type'
-        self._comptype = comptype
-        self._compname = compname
-
-    def getcomptype(self):
-        return self._comptype
-
-    def getcompname(self):
-        return self._compname
-
-    def setparams(self, params):
-        nchannels, sampwidth, framerate, nframes, comptype, compname = params
-        if self._datawritten:
-            raise Error, 'cannot change parameters after starting to write'
-        self.setnchannels(nchannels)
-        self.setsampwidth(sampwidth)
-        self.setframerate(framerate)
-        self.setnframes(nframes)
-        self.setcomptype(comptype, compname)
-
-    def getparams(self):
-        if not self._nchannels or not self._sampwidth or not self._framerate:
-            raise Error, 'not all parameters set'
-        return self._nchannels, self._sampwidth, self._framerate, \
-              self._nframes, self._comptype, self._compname
-
-    def setmark(self, id, pos, name):
-        raise Error, 'setmark() not supported'
-
-    def getmark(self, id):
-        raise Error, 'no marks'
-
-    def getmarkers(self):
-        return None
-
-    def tell(self):
-        return self._nframeswritten
-
-    def writeframesraw(self, data):
-        self._ensure_header_written(len(data))
-        nframes = len(data) // (self._sampwidth * self._nchannels)
-        if self._convert:
-            data = self._convert(data)
-        if self._sampwidth > 1 and big_endian:
-            import array
-            data = array.array(_array_fmts[self._sampwidth], data)
-            data.byteswap()
-            data.tofile(self._file)
-            self._datawritten = self._datawritten + len(data) * self._sampwidth
-        else:
-            self._file.write(data)
-            self._datawritten = self._datawritten + len(data)
-        self._nframeswritten = self._nframeswritten + nframes
-
-    def writeframes(self, data):
-        self.writeframesraw(data)
-        if self._datalength != self._datawritten:
-            self._patchheader()
-
-    def close(self):
-        if self._file:
-            self._ensure_header_written(0)
-            if self._datalength != self._datawritten:
-                self._patchheader()
-            self._file.flush()
-            self._file = None
-        if self._i_opened_the_file:
-            self._i_opened_the_file.close()
-            self._i_opened_the_file = None
-
-    #
-    # Internal methods.
-    #
-
-    def _ensure_header_written(self, datasize):
-        if not self._headerwritten:
-            if not self._nchannels:
-                raise Error, '# channels not specified'
-            if not self._sampwidth:
-                raise Error, 'sample width not specified'
-            if not self._framerate:
-                raise Error, 'sampling rate not specified'
-            self._write_header(datasize)
-
-    def _write_header(self, initlength):
-        assert not self._headerwritten
-        self._file.write('RIFF')
-        if not self._nframes:
-            self._nframes = initlength / (self._nchannels * self._sampwidth)
-        self._datalength = self._nframes * self._nchannels * self._sampwidth
-        self._form_length_pos = self._file.tell()
-        self._file.write(struct.pack('<l4s4slhhllhh4s',
-            36 + self._datalength, 'WAVE', 'fmt ', 16,
-            WAVE_FORMAT_PCM, self._nchannels, self._framerate,
-            self._nchannels * self._framerate * self._sampwidth,
-            self._nchannels * self._sampwidth,
-            self._sampwidth * 8, 'data'))
-        self._data_length_pos = self._file.tell()
-        self._file.write(struct.pack('<l', self._datalength))
-        self._headerwritten = True
-
-    def _patchheader(self):
-        assert self._headerwritten
-        if self._datawritten == self._datalength:
-            return
-        curpos = self._file.tell()
-        self._file.seek(self._form_length_pos, 0)
-        self._file.write(struct.pack('<l', 36 + self._datawritten))
-        self._file.seek(self._data_length_pos, 0)
-        self._file.write(struct.pack('<l', self._datawritten))
-        self._file.seek(curpos, 0)
-        self._datalength = self._datawritten
-
-def open(f, mode=None):
-    if mode is None:
-        if hasattr(f, 'mode'):
-            mode = f.mode
-        else:
-            mode = 'rb'
-    if mode in ('r', 'rb'):
-        return Wave_read(f)
-    elif mode in ('w', 'wb'):
-        return Wave_write(f)
-    else:
-        raise Error, "mode must be 'r', 'rb', 'w', or 'wb'"
-
-openfp = open # B/W compatibility
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/weakref.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/weakref.py
deleted file mode 100644
index 24274ac..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/weakref.py
+++ /dev/null
@@ -1,379 +0,0 @@
-"""Weak reference support for Python.
-
-This module is an implementation of PEP 205:
-
-http://www.python.org/dev/peps/pep-0205/
-"""
-
-# Naming convention: Variables named "wr" are weak reference objects;
-# they are called this instead of "ref" to avoid name collisions with
-# the module-global ref() function imported from _weakref.
-
-import UserDict
-
-from _weakref import (
-     getweakrefcount,
-     getweakrefs,
-     ref,
-     proxy,
-     CallableProxyType,
-     ProxyType,
-     ReferenceType)
-
-from _weakrefset import WeakSet
-
-from exceptions import ReferenceError
-
-
-ProxyTypes = (ProxyType, CallableProxyType)
-
-__all__ = ["ref", "proxy", "getweakrefcount", "getweakrefs",
-           "WeakKeyDictionary", "ReferenceError", "ReferenceType", "ProxyType",
-           "CallableProxyType", "ProxyTypes", "WeakValueDictionary", 'WeakSet']
-
-
-class WeakValueDictionary(UserDict.UserDict):
-    """Mapping class that references values weakly.
-
-    Entries in the dictionary will be discarded when no strong
-    reference to the value exists anymore
-    """
-    # We inherit the constructor without worrying about the input
-    # dictionary; since it uses our .update() method, we get the right
-    # checks (if the other dictionary is a WeakValueDictionary,
-    # objects are unwrapped on the way out, and we always wrap on the
-    # way in).
-
-    def __init__(self, *args, **kw):
-        def remove(wr, selfref=ref(self)):
-            self = selfref()
-            if self is not None:
-                del self.data[wr.key]
-        self._remove = remove
-        UserDict.UserDict.__init__(self, *args, **kw)
-
-    def __getitem__(self, key):
-        o = self.data[key]()
-        if o is None:
-            raise KeyError, key
-        else:
-            return o
-
-    def __contains__(self, key):
-        try:
-            o = self.data[key]()
-        except KeyError:
-            return False
-        return o is not None
-
-    def has_key(self, key):
-        try:
-            o = self.data[key]()
-        except KeyError:
-            return False
-        return o is not None
-
-    def __repr__(self):
-        return "<WeakValueDictionary at %s>" % id(self)
-
-    def __setitem__(self, key, value):
-        self.data[key] = KeyedRef(value, self._remove, key)
-
-    def copy(self):
-        new = WeakValueDictionary()
-        for key, wr in self.data.items():
-            o = wr()
-            if o is not None:
-                new[key] = o
-        return new
-
-    __copy__ = copy
-
-    def __deepcopy__(self, memo):
-        from copy import deepcopy
-        new = self.__class__()
-        for key, wr in self.data.items():
-            o = wr()
-            if o is not None:
-                new[deepcopy(key, memo)] = o
-        return new
-
-    def get(self, key, default=None):
-        try:
-            wr = self.data[key]
-        except KeyError:
-            return default
-        else:
-            o = wr()
-            if o is None:
-                # This should only happen
-                return default
-            else:
-                return o
-
-    def items(self):
-        L = []
-        for key, wr in self.data.items():
-            o = wr()
-            if o is not None:
-                L.append((key, o))
-        return L
-
-    def iteritems(self):
-        for wr in self.data.itervalues():
-            value = wr()
-            if value is not None:
-                yield wr.key, value
-
-    def iterkeys(self):
-        return self.data.iterkeys()
-
-    def __iter__(self):
-        return self.data.iterkeys()
-
-    def itervaluerefs(self):
-        """Return an iterator that yields the weak references to the values.
-
-        The references are not guaranteed to be 'live' at the time
-        they are used, so the result of calling the references needs
-        to be checked before being used.  This can be used to avoid
-        creating references that will cause the garbage collector to
-        keep the values around longer than needed.
-
-        """
-        return self.data.itervalues()
-
-    def itervalues(self):
-        for wr in self.data.itervalues():
-            obj = wr()
-            if obj is not None:
-                yield obj
-
-    def popitem(self):
-        while 1:
-            key, wr = self.data.popitem()
-            o = wr()
-            if o is not None:
-                return key, o
-
-    def pop(self, key, *args):
-        try:
-            o = self.data.pop(key)()
-        except KeyError:
-            if args:
-                return args[0]
-            raise
-        if o is None:
-            raise KeyError, key
-        else:
-            return o
-
-    def setdefault(self, key, default=None):
-        try:
-            wr = self.data[key]
-        except KeyError:
-            self.data[key] = KeyedRef(default, self._remove, key)
-            return default
-        else:
-            return wr()
-
-    def update(self, dict=None, **kwargs):
-        d = self.data
-        if dict is not None:
-            if not hasattr(dict, "items"):
-                dict = type({})(dict)
-            for key, o in dict.items():
-                d[key] = KeyedRef(o, self._remove, key)
-        if len(kwargs):
-            self.update(kwargs)
-
-    def valuerefs(self):
-        """Return a list of weak references to the values.
-
-        The references are not guaranteed to be 'live' at the time
-        they are used, so the result of calling the references needs
-        to be checked before being used.  This can be used to avoid
-        creating references that will cause the garbage collector to
-        keep the values around longer than needed.
-
-        """
-        return self.data.values()
-
-    def values(self):
-        L = []
-        for wr in self.data.values():
-            o = wr()
-            if o is not None:
-                L.append(o)
-        return L
-
-
-class KeyedRef(ref):
-    """Specialized reference that includes a key corresponding to the value.
-
-    This is used in the WeakValueDictionary to avoid having to create
-    a function object for each key stored in the mapping.  A shared
-    callback object can use the 'key' attribute of a KeyedRef instead
-    of getting a reference to the key from an enclosing scope.
-
-    """
-
-    __slots__ = "key",
-
-    def __new__(type, ob, callback, key):
-        self = ref.__new__(type, ob, callback)
-        self.key = key
-        return self
-
-    def __init__(self, ob, callback, key):
-        super(KeyedRef,  self).__init__(ob, callback)
-
-
-class WeakKeyDictionary(UserDict.UserDict):
-    """ Mapping class that references keys weakly.
-
-    Entries in the dictionary will be discarded when there is no
-    longer a strong reference to the key. This can be used to
-    associate additional data with an object owned by other parts of
-    an application without adding attributes to those objects. This
-    can be especially useful with objects that override attribute
-    accesses.
-    """
-
-    def __init__(self, dict=None):
-        self.data = {}
-        def remove(k, selfref=ref(self)):
-            self = selfref()
-            if self is not None:
-                del self.data[k]
-        self._remove = remove
-        if dict is not None: self.update(dict)
-
-    def __delitem__(self, key):
-        del self.data[ref(key)]
-
-    def __getitem__(self, key):
-        return self.data[ref(key)]
-
-    def __repr__(self):
-        return "<WeakKeyDictionary at %s>" % id(self)
-
-    def __setitem__(self, key, value):
-        self.data[ref(key, self._remove)] = value
-
-    def copy(self):
-        new = WeakKeyDictionary()
-        for key, value in self.data.items():
-            o = key()
-            if o is not None:
-                new[o] = value
-        return new
-
-    __copy__ = copy
-
-    def __deepcopy__(self, memo):
-        from copy import deepcopy
-        new = self.__class__()
-        for key, value in self.data.items():
-            o = key()
-            if o is not None:
-                new[o] = deepcopy(value, memo)
-        return new
-
-    def get(self, key, default=None):
-        return self.data.get(ref(key),default)
-
-    def has_key(self, key):
-        try:
-            wr = ref(key)
-        except TypeError:
-            return 0
-        return wr in self.data
-
-    def __contains__(self, key):
-        try:
-            wr = ref(key)
-        except TypeError:
-            return 0
-        return wr in self.data
-
-    def items(self):
-        L = []
-        for key, value in self.data.items():
-            o = key()
-            if o is not None:
-                L.append((o, value))
-        return L
-
-    def iteritems(self):
-        for wr, value in self.data.iteritems():
-            key = wr()
-            if key is not None:
-                yield key, value
-
-    def iterkeyrefs(self):
-        """Return an iterator that yields the weak references to the keys.
-
-        The references are not guaranteed to be 'live' at the time
-        they are used, so the result of calling the references needs
-        to be checked before being used.  This can be used to avoid
-        creating references that will cause the garbage collector to
-        keep the keys around longer than needed.
-
-        """
-        return self.data.iterkeys()
-
-    def iterkeys(self):
-        for wr in self.data.iterkeys():
-            obj = wr()
-            if obj is not None:
-                yield obj
-
-    def __iter__(self):
-        return self.iterkeys()
-
-    def itervalues(self):
-        return self.data.itervalues()
-
-    def keyrefs(self):
-        """Return a list of weak references to the keys.
-
-        The references are not guaranteed to be 'live' at the time
-        they are used, so the result of calling the references needs
-        to be checked before being used.  This can be used to avoid
-        creating references that will cause the garbage collector to
-        keep the keys around longer than needed.
-
-        """
-        return self.data.keys()
-
-    def keys(self):
-        L = []
-        for wr in self.data.keys():
-            o = wr()
-            if o is not None:
-                L.append(o)
-        return L
-
-    def popitem(self):
-        while 1:
-            key, value = self.data.popitem()
-            o = key()
-            if o is not None:
-                return o, value
-
-    def pop(self, key, *args):
-        return self.data.pop(ref(key), *args)
-
-    def setdefault(self, key, default=None):
-        return self.data.setdefault(ref(key, self._remove),default)
-
-    def update(self, dict=None, **kwargs):
-        d = self.data
-        if dict is not None:
-            if not hasattr(dict, "items"):
-                dict = type({})(dict)
-            for key, value in dict.items():
-                d[ref(key, self._remove)] = value
-        if len(kwargs):
-            self.update(kwargs)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/webbrowser.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/webbrowser.py
deleted file mode 100644
index 7f06d3c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/webbrowser.py
+++ /dev/null
@@ -1,673 +0,0 @@
-#! /usr/bin/env python
-"""Interfaces for launching and remotely controlling Web browsers."""
-# Maintained by Georg Brandl.
-
-import os
-import shlex
-import sys
-import stat
-import subprocess
-import time
-
-__all__ = ["Error", "open", "open_new", "open_new_tab", "get", "register"]
-
-class Error(Exception):
-    pass
-
-_browsers = {}          # Dictionary of available browser controllers
-_tryorder = []          # Preference order of available browsers
-
-def register(name, klass, instance=None, update_tryorder=1):
-    """Register a browser connector and, optionally, connection."""
-    _browsers[name.lower()] = [klass, instance]
-    if update_tryorder > 0:
-        _tryorder.append(name)
-    elif update_tryorder < 0:
-        _tryorder.insert(0, name)
-
-def get(using=None):
-    """Return a browser launcher instance appropriate for the environment."""
-    if using is not None:
-        alternatives = [using]
-    else:
-        alternatives = _tryorder
-    for browser in alternatives:
-        if '%s' in browser:
-            # User gave us a command line, split it into name and args
-            browser = shlex.split(browser)
-            if browser[-1] == '&':
-                return BackgroundBrowser(browser[:-1])
-            else:
-                return GenericBrowser(browser)
-        else:
-            # User gave us a browser name or path.
-            try:
-                command = _browsers[browser.lower()]
-            except KeyError:
-                command = _synthesize(browser)
-            if command[1] is not None:
-                return command[1]
-            elif command[0] is not None:
-                return command[0]()
-    raise Error("could not locate runnable browser")
-
-# Please note: the following definition hides a builtin function.
-# It is recommended one does "import webbrowser" and uses webbrowser.open(url)
-# instead of "from webbrowser import *".
-
-def open(url, new=0, autoraise=True):
-    for name in _tryorder:
-        browser = get(name)
-        if browser.open(url, new, autoraise):
-            return True
-    return False
-
-def open_new(url):
-    return open(url, 1)
-
-def open_new_tab(url):
-    return open(url, 2)
-
-
-def _synthesize(browser, update_tryorder=1):
-    """Attempt to synthesize a controller base on existing controllers.
-
-    This is useful to create a controller when a user specifies a path to
-    an entry in the BROWSER environment variable -- we can copy a general
-    controller to operate using a specific installation of the desired
-    browser in this way.
-
-    If we can't create a controller in this way, or if there is no
-    executable for the requested browser, return [None, None].
-
-    """
-    cmd = browser.split()[0]
-    if not _iscommand(cmd):
-        return [None, None]
-    name = os.path.basename(cmd)
-    try:
-        command = _browsers[name.lower()]
-    except KeyError:
-        return [None, None]
-    # now attempt to clone to fit the new name:
-    controller = command[1]
-    if controller and name.lower() == controller.basename:
-        import copy
-        controller = copy.copy(controller)
-        controller.name = browser
-        controller.basename = os.path.basename(browser)
-        register(browser, None, controller, update_tryorder)
-        return [None, controller]
-    return [None, None]
-
-
-if sys.platform[:3] == "win":
-    def _isexecutable(cmd):
-        cmd = cmd.lower()
-        if os.path.isfile(cmd) and cmd.endswith((".exe", ".bat")):
-            return True
-        for ext in ".exe", ".bat":
-            if os.path.isfile(cmd + ext):
-                return True
-        return False
-else:
-    def _isexecutable(cmd):
-        if os.path.isfile(cmd):
-            mode = os.stat(cmd)[stat.ST_MODE]
-            if mode & stat.S_IXUSR or mode & stat.S_IXGRP or mode & stat.S_IXOTH:
-                return True
-        return False
-
-def _iscommand(cmd):
-    """Return True if cmd is executable or can be found on the executable
-    search path."""
-    if _isexecutable(cmd):
-        return True
-    path = os.environ.get("PATH")
-    if not path:
-        return False
-    for d in path.split(os.pathsep):
-        exe = os.path.join(d, cmd)
-        if _isexecutable(exe):
-            return True
-    return False
-
-
-# General parent classes
-
-class BaseBrowser(object):
-    """Parent class for all browsers. Do not use directly."""
-
-    args = ['%s']
-
-    def __init__(self, name=""):
-        self.name = name
-        self.basename = name
-
-    def open(self, url, new=0, autoraise=True):
-        raise NotImplementedError
-
-    def open_new(self, url):
-        return self.open(url, 1)
-
-    def open_new_tab(self, url):
-        return self.open(url, 2)
-
-
-class GenericBrowser(BaseBrowser):
-    """Class for all browsers started with a command
-       and without remote functionality."""
-
-    def __init__(self, name):
-        if isinstance(name, basestring):
-            self.name = name
-            self.args = ["%s"]
-        else:
-            # name should be a list with arguments
-            self.name = name[0]
-            self.args = name[1:]
-        self.basename = os.path.basename(self.name)
-
-    def open(self, url, new=0, autoraise=True):
-        cmdline = [self.name] + [arg.replace("%s", url)
-                                 for arg in self.args]
-        try:
-            if sys.platform[:3] == 'win':
-                p = subprocess.Popen(cmdline)
-            else:
-                p = subprocess.Popen(cmdline, close_fds=True)
-            return not p.wait()
-        except OSError:
-            return False
-
-
-class BackgroundBrowser(GenericBrowser):
-    """Class for all browsers which are to be started in the
-       background."""
-
-    def open(self, url, new=0, autoraise=True):
-        cmdline = [self.name] + [arg.replace("%s", url)
-                                 for arg in self.args]
-        try:
-            if sys.platform[:3] == 'win':
-                p = subprocess.Popen(cmdline)
-            else:
-                setsid = getattr(os, 'setsid', None)
-                if not setsid:
-                    setsid = getattr(os, 'setpgrp', None)
-                p = subprocess.Popen(cmdline, close_fds=True, preexec_fn=setsid)
-            return (p.poll() is None)
-        except OSError:
-            return False
-
-
-class UnixBrowser(BaseBrowser):
-    """Parent class for all Unix browsers with remote functionality."""
-
-    raise_opts = None
-    remote_args = ['%action', '%s']
-    remote_action = None
-    remote_action_newwin = None
-    remote_action_newtab = None
-    background = False
-    redirect_stdout = True
-
-    def _invoke(self, args, remote, autoraise):
-        raise_opt = []
-        if remote and self.raise_opts:
-            # use autoraise argument only for remote invocation
-            autoraise = int(autoraise)
-            opt = self.raise_opts[autoraise]
-            if opt: raise_opt = [opt]
-
-        cmdline = [self.name] + raise_opt + args
-
-        if remote or self.background:
-            inout = file(os.devnull, "r+")
-        else:
-            # for TTY browsers, we need stdin/out
-            inout = None
-        # if possible, put browser in separate process group, so
-        # keyboard interrupts don't affect browser as well as Python
-        setsid = getattr(os, 'setsid', None)
-        if not setsid:
-            setsid = getattr(os, 'setpgrp', None)
-
-        p = subprocess.Popen(cmdline, close_fds=True, stdin=inout,
-                             stdout=(self.redirect_stdout and inout or None),
-                             stderr=inout, preexec_fn=setsid)
-        if remote:
-            # wait five secons. If the subprocess is not finished, the
-            # remote invocation has (hopefully) started a new instance.
-            time.sleep(1)
-            rc = p.poll()
-            if rc is None:
-                time.sleep(4)
-                rc = p.poll()
-                if rc is None:
-                    return True
-            # if remote call failed, open() will try direct invocation
-            return not rc
-        elif self.background:
-            if p.poll() is None:
-                return True
-            else:
-                return False
-        else:
-            return not p.wait()
-
-    def open(self, url, new=0, autoraise=True):
-        if new == 0:
-            action = self.remote_action
-        elif new == 1:
-            action = self.remote_action_newwin
-        elif new == 2:
-            if self.remote_action_newtab is None:
-                action = self.remote_action_newwin
-            else:
-                action = self.remote_action_newtab
-        else:
-            raise Error("Bad 'new' parameter to open(); " +
-                        "expected 0, 1, or 2, got %s" % new)
-
-        args = [arg.replace("%s", url).replace("%action", action)
-                for arg in self.remote_args]
-        success = self._invoke(args, True, autoraise)
-        if not success:
-            # remote invocation failed, try straight way
-            args = [arg.replace("%s", url) for arg in self.args]
-            return self._invoke(args, False, False)
-        else:
-            return True
-
-
-class Mozilla(UnixBrowser):
-    """Launcher class for Mozilla/Netscape browsers."""
-
-    raise_opts = ["-noraise", "-raise"]
-    remote_args = ['-remote', 'openURL(%s%action)']
-    remote_action = ""
-    remote_action_newwin = ",new-window"
-    remote_action_newtab = ",new-tab"
-    background = True
-
-Netscape = Mozilla
-
-
-class Galeon(UnixBrowser):
-    """Launcher class for Galeon/Epiphany browsers."""
-
-    raise_opts = ["-noraise", ""]
-    remote_args = ['%action', '%s']
-    remote_action = "-n"
-    remote_action_newwin = "-w"
-    background = True
-
-
-class Opera(UnixBrowser):
-    "Launcher class for Opera browser."
-
-    raise_opts = ["-noraise", ""]
-    remote_args = ['-remote', 'openURL(%s%action)']
-    remote_action = ""
-    remote_action_newwin = ",new-window"
-    remote_action_newtab = ",new-page"
-    background = True
-
-
-class Elinks(UnixBrowser):
-    "Launcher class for Elinks browsers."
-
-    remote_args = ['-remote', 'openURL(%s%action)']
-    remote_action = ""
-    remote_action_newwin = ",new-window"
-    remote_action_newtab = ",new-tab"
-    background = False
-
-    # elinks doesn't like its stdout to be redirected -
-    # it uses redirected stdout as a signal to do -dump
-    redirect_stdout = False
-
-
-class Konqueror(BaseBrowser):
-    """Controller for the KDE File Manager (kfm, or Konqueror).
-
-    See the output of ``kfmclient --commands``
-    for more information on the Konqueror remote-control interface.
-    """
-
-    def open(self, url, new=0, autoraise=True):
-        # XXX Currently I know no way to prevent KFM from opening a new win.
-        if new == 2:
-            action = "newTab"
-        else:
-            action = "openURL"
-
-        devnull = file(os.devnull, "r+")
-        # if possible, put browser in separate process group, so
-        # keyboard interrupts don't affect browser as well as Python
-        setsid = getattr(os, 'setsid', None)
-        if not setsid:
-            setsid = getattr(os, 'setpgrp', None)
-
-        try:
-            p = subprocess.Popen(["kfmclient", action, url],
-                                 close_fds=True, stdin=devnull,
-                                 stdout=devnull, stderr=devnull)
-        except OSError:
-            # fall through to next variant
-            pass
-        else:
-            p.wait()
-            # kfmclient's return code unfortunately has no meaning as it seems
-            return True
-
-        try:
-            p = subprocess.Popen(["konqueror", "--silent", url],
-                                 close_fds=True, stdin=devnull,
-                                 stdout=devnull, stderr=devnull,
-                                 preexec_fn=setsid)
-        except OSError:
-            # fall through to next variant
-            pass
-        else:
-            if p.poll() is None:
-                # Should be running now.
-                return True
-
-        try:
-            p = subprocess.Popen(["kfm", "-d", url],
-                                 close_fds=True, stdin=devnull,
-                                 stdout=devnull, stderr=devnull,
-                                 preexec_fn=setsid)
-        except OSError:
-            return False
-        else:
-            return (p.poll() is None)
-
-
-class Grail(BaseBrowser):
-    # There should be a way to maintain a connection to Grail, but the
-    # Grail remote control protocol doesn't really allow that at this
-    # point.  It probably never will!
-    def _find_grail_rc(self):
-        import glob
-        import pwd
-        import socket
-        import tempfile
-        tempdir = os.path.join(tempfile.gettempdir(),
-                               ".grail-unix")
-        user = pwd.getpwuid(os.getuid())[0]
-        filename = os.path.join(tempdir, user + "-*")
-        maybes = glob.glob(filename)
-        if not maybes:
-            return None
-        s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
-        for fn in maybes:
-            # need to PING each one until we find one that's live
-            try:
-                s.connect(fn)
-            except socket.error:
-                # no good; attempt to clean it out, but don't fail:
-                try:
-                    os.unlink(fn)
-                except IOError:
-                    pass
-            else:
-                return s
-
-    def _remote(self, action):
-        s = self._find_grail_rc()
-        if not s:
-            return 0
-        s.send(action)
-        s.close()
-        return 1
-
-    def open(self, url, new=0, autoraise=True):
-        if new:
-            ok = self._remote("LOADNEW " + url)
-        else:
-            ok = self._remote("LOAD " + url)
-        return ok
-
-
-#
-# Platform support for Unix
-#
-
-# These are the right tests because all these Unix browsers require either
-# a console terminal or an X display to run.
-
-def register_X_browsers():
-
-    # The default GNOME browser
-    if "GNOME_DESKTOP_SESSION_ID" in os.environ and _iscommand("gnome-open"):
-        register("gnome-open", None, BackgroundBrowser("gnome-open"))
-
-    # The default KDE browser
-    if "KDE_FULL_SESSION" in os.environ and _iscommand("kfmclient"):
-        register("kfmclient", Konqueror, Konqueror("kfmclient"))
-
-    # The Mozilla/Netscape browsers
-    for browser in ("mozilla-firefox", "firefox",
-                    "mozilla-firebird", "firebird",
-                    "seamonkey", "mozilla", "netscape"):
-        if _iscommand(browser):
-            register(browser, None, Mozilla(browser))
-
-    # Konqueror/kfm, the KDE browser.
-    if _iscommand("kfm"):
-        register("kfm", Konqueror, Konqueror("kfm"))
-    elif _iscommand("konqueror"):
-        register("konqueror", Konqueror, Konqueror("konqueror"))
-
-    # Gnome's Galeon and Epiphany
-    for browser in ("galeon", "epiphany"):
-        if _iscommand(browser):
-            register(browser, None, Galeon(browser))
-
-    # Skipstone, another Gtk/Mozilla based browser
-    if _iscommand("skipstone"):
-        register("skipstone", None, BackgroundBrowser("skipstone"))
-
-    # Opera, quite popular
-    if _iscommand("opera"):
-        register("opera", None, Opera("opera"))
-
-    # Next, Mosaic -- old but still in use.
-    if _iscommand("mosaic"):
-        register("mosaic", None, BackgroundBrowser("mosaic"))
-
-    # Grail, the Python browser. Does anybody still use it?
-    if _iscommand("grail"):
-        register("grail", Grail, None)
-
-# Prefer X browsers if present
-if os.environ.get("DISPLAY"):
-    register_X_browsers()
-
-# Also try console browsers
-if os.environ.get("TERM"):
-    # The Links/elinks browsers <http://artax.karlin.mff.cuni.cz/~mikulas/links/>
-    if _iscommand("links"):
-        register("links", None, GenericBrowser("links"))
-    if _iscommand("elinks"):
-        register("elinks", None, Elinks("elinks"))
-    # The Lynx browser <http://lynx.isc.org/>, <http://lynx.browser.org/>
-    if _iscommand("lynx"):
-        register("lynx", None, GenericBrowser("lynx"))
-    # The w3m browser <http://w3m.sourceforge.net/>
-    if _iscommand("w3m"):
-        register("w3m", None, GenericBrowser("w3m"))
-
-#
-# Platform support for Windows
-#
-
-if sys.platform[:3] == "win":
-    class WindowsDefault(BaseBrowser):
-        def open(self, url, new=0, autoraise=True):
-            try:
-                os.startfile(url)
-            except WindowsError:
-                # [Error 22] No application is associated with the specified
-                # file for this operation: '<URL>'
-                return False
-            else:
-                return True
-
-    _tryorder = []
-    _browsers = {}
-
-    # First try to use the default Windows browser
-    register("windows-default", WindowsDefault)
-
-    # Detect some common Windows browsers, fallback to IE
-    iexplore = os.path.join(os.environ.get("PROGRAMFILES", "C:\\Program Files"),
-                            "Internet Explorer\\IEXPLORE.EXE")
-    for browser in ("firefox", "firebird", "seamonkey", "mozilla",
-                    "netscape", "opera", iexplore):
-        if _iscommand(browser):
-            register(browser, None, BackgroundBrowser(browser))
-
-#
-# Platform support for MacOS
-#
-
-if sys.platform == 'darwin':
-    # Adapted from patch submitted to SourceForge by Steven J. Burr
-    class MacOSX(BaseBrowser):
-        """Launcher class for Aqua browsers on Mac OS X
-
-        Optionally specify a browser name on instantiation.  Note that this
-        will not work for Aqua browsers if the user has moved the application
-        package after installation.
-
-        If no browser is specified, the default browser, as specified in the
-        Internet System Preferences panel, will be used.
-        """
-        def __init__(self, name):
-            self.name = name
-
-        def open(self, url, new=0, autoraise=True):
-            assert "'" not in url
-            # hack for local urls
-            if not ':' in url:
-                url = 'file:'+url
-
-            # new must be 0 or 1
-            new = int(bool(new))
-            if self.name == "default":
-                # User called open, open_new or get without a browser parameter
-                script = 'open location "%s"' % url.replace('"', '%22') # opens in default browser
-            else:
-                # User called get and chose a browser
-                if self.name == "OmniWeb":
-                    toWindow = ""
-                else:
-                    # Include toWindow parameter of OpenURL command for browsers
-                    # that support it.  0 == new window; -1 == existing
-                    toWindow = "toWindow %d" % (new - 1)
-                cmd = 'OpenURL "%s"' % url.replace('"', '%22')
-                script = '''tell application "%s"
-                                activate
-                                %s %s
-                            end tell''' % (self.name, cmd, toWindow)
-            # Open pipe to AppleScript through osascript command
-            osapipe = os.popen("osascript", "w")
-            if osapipe is None:
-                return False
-            # Write script to osascript's stdin
-            osapipe.write(script)
-            rc = osapipe.close()
-            return not rc
-
-    class MacOSXOSAScript(BaseBrowser):
-        def __init__(self, name):
-            self._name = name
-
-        def open(self, url, new=0, autoraise=True):
-            if self._name == 'default':
-                script = 'open location "%s"' % url.replace('"', '%22') # opens in default browser
-            else:
-                script = '''
-                   tell application "%s"
-                       activate
-                       open location "%s"
-                   end
-                   '''%(self._name, url.replace('"', '%22'))
-
-            osapipe = os.popen("osascript", "w")
-            if osapipe is None:
-                return False
-
-            osapipe.write(script)
-            rc = osapipe.close()
-            return not rc
-
-
-    # Don't clear _tryorder or _browsers since OS X can use above Unix support
-    # (but we prefer using the OS X specific stuff)
-    register("safari", None, MacOSXOSAScript('safari'), -1)
-    register("firefox", None, MacOSXOSAScript('firefox'), -1)
-    register("MacOSX", None, MacOSXOSAScript('default'), -1)
-
-
-#
-# Platform support for OS/2
-#
-
-if sys.platform[:3] == "os2" and _iscommand("netscape"):
-    _tryorder = []
-    _browsers = {}
-    register("os2netscape", None,
-             GenericBrowser(["start", "netscape", "%s"]), -1)
-
-
-# OK, now that we know what the default preference orders for each
-# platform are, allow user to override them with the BROWSER variable.
-if "BROWSER" in os.environ:
-    _userchoices = os.environ["BROWSER"].split(os.pathsep)
-    _userchoices.reverse()
-
-    # Treat choices in same way as if passed into get() but do register
-    # and prepend to _tryorder
-    for cmdline in _userchoices:
-        if cmdline != '':
-            cmd = _synthesize(cmdline, -1)
-            if cmd[1] is None:
-                register(cmdline, None, GenericBrowser(cmdline), -1)
-    cmdline = None # to make del work if _userchoices was empty
-    del cmdline
-    del _userchoices
-
-# what to do if _tryorder is now empty?
-
-
-def main():
-    import getopt
-    usage = """Usage: %s [-n | -t] url
-    -n: open new window
-    -t: open new tab""" % sys.argv[0]
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'ntd')
-    except getopt.error, msg:
-        print >>sys.stderr, msg
-        print >>sys.stderr, usage
-        sys.exit(1)
-    new_win = 0
-    for o, a in opts:
-        if o == '-n': new_win = 1
-        elif o == '-t': new_win = 2
-    if len(args) != 1:
-        print >>sys.stderr, usage
-        sys.exit(1)
-
-    url = args[0]
-    open(url, new_win)
-
-    print "\a"
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/whichdb.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/whichdb.py
deleted file mode 100644
index 06a1c61..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/whichdb.py
+++ /dev/null
@@ -1,117 +0,0 @@
-# !/usr/bin/env python
-"""Guess which db package to use to open a db file."""
-
-import os
-import struct
-import sys
-
-try:
-    import dbm
-    _dbmerror = dbm.error
-except ImportError:
-    dbm = None
-    # just some sort of valid exception which might be raised in the
-    # dbm test
-    _dbmerror = IOError
-
-def whichdb(filename):
-    """Guess which db package to use to open a db file.
-
-    Return values:
-
-    - None if the database file can't be read;
-    - empty string if the file can be read but can't be recognized
-    - the module name (e.g. "dbm" or "gdbm") if recognized.
-
-    Importing the given module may still fail, and opening the
-    database using that module may still fail.
-    """
-
-    # Check for dbm first -- this has a .pag and a .dir file
-    try:
-        f = open(filename + os.extsep + "pag", "rb")
-        f.close()
-        # dbm linked with gdbm on OS/2 doesn't have .dir file
-        if not (dbm.library == "GNU gdbm" and sys.platform == "os2emx"):
-            f = open(filename + os.extsep + "dir", "rb")
-            f.close()
-        return "dbm"
-    except IOError:
-        # some dbm emulations based on Berkeley DB generate a .db file
-        # some do not, but they should be caught by the dbhash checks
-        try:
-            f = open(filename + os.extsep + "db", "rb")
-            f.close()
-            # guarantee we can actually open the file using dbm
-            # kind of overkill, but since we are dealing with emulations
-            # it seems like a prudent step
-            if dbm is not None:
-                d = dbm.open(filename)
-                d.close()
-                return "dbm"
-        except (IOError, _dbmerror):
-            pass
-
-    # Check for dumbdbm next -- this has a .dir and a .dat file
-    try:
-        # First check for presence of files
-        os.stat(filename + os.extsep + "dat")
-        size = os.stat(filename + os.extsep + "dir").st_size
-        # dumbdbm files with no keys are empty
-        if size == 0:
-            return "dumbdbm"
-        f = open(filename + os.extsep + "dir", "rb")
-        try:
-            if f.read(1) in ("'", '"'):
-                return "dumbdbm"
-        finally:
-            f.close()
-    except (OSError, IOError):
-        pass
-
-    # See if the file exists, return None if not
-    try:
-        f = open(filename, "rb")
-    except IOError:
-        return None
-
-    # Read the start of the file -- the magic number
-    s16 = f.read(16)
-    f.close()
-    s = s16[0:4]
-
-    # Return "" if not at least 4 bytes
-    if len(s) != 4:
-        return ""
-
-    # Convert to 4-byte int in native byte order -- return "" if impossible
-    try:
-        (magic,) = struct.unpack("=l", s)
-    except struct.error:
-        return ""
-
-    # Check for GNU dbm
-    if magic == 0x13579ace:
-        return "gdbm"
-
-    # Check for old Berkeley db hash file format v2
-    if magic in (0x00061561, 0x61150600):
-        return "bsddb185"
-
-    # Later versions of Berkeley db hash file have a 12-byte pad in
-    # front of the file type
-    try:
-        (magic,) = struct.unpack("=l", s16[-4:])
-    except struct.error:
-        return ""
-
-    # Check for BSD hash
-    if magic in (0x00061561, 0x61150600):
-        return "dbhash"
-
-    # Unknown
-    return ""
-
-if __name__ == "__main__":
-    for filename in sys.argv[1:]:
-        print whichdb(filename) or "UNKNOWN", filename
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref.egg-info b/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref.egg-info
deleted file mode 100644
index e598dde..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref.egg-info
+++ /dev/null
@@ -1,8 +0,0 @@
-Metadata-Version: 1.0
-Name: wsgiref
-Version: 0.1.2
-Summary: WSGI (PEP 333) Reference Library
-Author: Phillip J. Eby
-Author-email: web-sig@python.org
-License: PSF or ZPL
-Platform: UNKNOWN
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/__init__.py
deleted file mode 100644
index 9a5c743..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/__init__.py
+++ /dev/null
@@ -1,23 +0,0 @@
-"""wsgiref -- a WSGI (PEP 333) Reference Library
-
-Current Contents:
-
-* util -- Miscellaneous useful functions and wrappers
-
-* headers -- Manage response headers
-
-* handlers -- base classes for server/gateway implementations
-
-* simple_server -- a simple BaseHTTPServer that supports WSGI
-
-* validate -- validation wrapper that sits between an app and a server
-  to detect errors in either
-
-To-Do:
-
-* cgi_gateway -- Run WSGI apps under CGI (pending a deployment standard)
-
-* cgi_wrapper -- Run CGI apps under WSGI
-
-* router -- a simple middleware component that handles URL traversal
-"""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/handlers.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/handlers.py
deleted file mode 100644
index 5bb8b6d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/handlers.py
+++ /dev/null
@@ -1,448 +0,0 @@
-"""Base classes for server/gateway implementations"""
-
-from types import StringType
-from util import FileWrapper, guess_scheme, is_hop_by_hop
-from headers import Headers
-
-import sys, os, time
-
-__all__ = ['BaseHandler', 'SimpleHandler', 'BaseCGIHandler', 'CGIHandler']
-
-try:
-    dict
-except NameError:
-    def dict(items):
-        d = {}
-        for k,v in items:
-            d[k] = v
-        return d
-
-# Uncomment for 2.2 compatibility.
-#try:
-#    True
-#    False
-#except NameError:
-#    True = not None
-#    False = not True
-
-
-# Weekday and month names for HTTP date/time formatting; always English!
-_weekdayname = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
-_monthname = [None, # Dummy so we can use 1-based month numbers
-              "Jan", "Feb", "Mar", "Apr", "May", "Jun",
-              "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
-
-def format_date_time(timestamp):
-    year, month, day, hh, mm, ss, wd, y, z = time.gmtime(timestamp)
-    return "%s, %02d %3s %4d %02d:%02d:%02d GMT" % (
-        _weekdayname[wd], day, _monthname[month], year, hh, mm, ss
-    )
-
-
-class BaseHandler:
-    """Manage the invocation of a WSGI application"""
-
-    # Configuration parameters; can override per-subclass or per-instance
-    wsgi_version = (1,0)
-    wsgi_multithread = True
-    wsgi_multiprocess = True
-    wsgi_run_once = False
-
-    origin_server = True    # We are transmitting direct to client
-    http_version  = "1.0"   # Version that should be used for response
-    server_software = None  # String name of server software, if any
-
-    # os_environ is used to supply configuration from the OS environment:
-    # by default it's a copy of 'os.environ' as of import time, but you can
-    # override this in e.g. your __init__ method.
-    os_environ = dict(os.environ.items())
-
-    # Collaborator classes
-    wsgi_file_wrapper = FileWrapper     # set to None to disable
-    headers_class = Headers             # must be a Headers-like class
-
-    # Error handling (also per-subclass or per-instance)
-    traceback_limit = None  # Print entire traceback to self.get_stderr()
-    error_status = "500 Internal Server Error"
-    error_headers = [('Content-Type','text/plain')]
-    error_body = "A server error occurred.  Please contact the administrator."
-
-    # State variables (don't mess with these)
-    status = result = None
-    headers_sent = False
-    headers = None
-    bytes_sent = 0
-
-    def run(self, application):
-        """Invoke the application"""
-        # Note to self: don't move the close()!  Asynchronous servers shouldn't
-        # call close() from finish_response(), so if you close() anywhere but
-        # the double-error branch here, you'll break asynchronous servers by
-        # prematurely closing.  Async servers must return from 'run()' without
-        # closing if there might still be output to iterate over.
-        try:
-            self.setup_environ()
-            self.result = application(self.environ, self.start_response)
-            self.finish_response()
-        except:
-            try:
-                self.handle_error()
-            except:
-                # If we get an error handling an error, just give up already!
-                self.close()
-                raise   # ...and let the actual server figure it out.
-
-
-    def setup_environ(self):
-        """Set up the environment for one request"""
-
-        env = self.environ = self.os_environ.copy()
-        self.add_cgi_vars()
-
-        env['wsgi.input']        = self.get_stdin()
-        env['wsgi.errors']       = self.get_stderr()
-        env['wsgi.version']      = self.wsgi_version
-        env['wsgi.run_once']     = self.wsgi_run_once
-        env['wsgi.url_scheme']   = self.get_scheme()
-        env['wsgi.multithread']  = self.wsgi_multithread
-        env['wsgi.multiprocess'] = self.wsgi_multiprocess
-
-        if self.wsgi_file_wrapper is not None:
-            env['wsgi.file_wrapper'] = self.wsgi_file_wrapper
-
-        if self.origin_server and self.server_software:
-            env.setdefault('SERVER_SOFTWARE',self.server_software)
-
-
-    def finish_response(self):
-        """Send any iterable data, then close self and the iterable
-
-        Subclasses intended for use in asynchronous servers will
-        want to redefine this method, such that it sets up callbacks
-        in the event loop to iterate over the data, and to call
-        'self.close()' once the response is finished.
-        """
-        if not self.result_is_file() or not self.sendfile():
-            for data in self.result:
-                self.write(data)
-            self.finish_content()
-        self.close()
-
-
-    def get_scheme(self):
-        """Return the URL scheme being used"""
-        return guess_scheme(self.environ)
-
-
-    def set_content_length(self):
-        """Compute Content-Length or switch to chunked encoding if possible"""
-        try:
-            blocks = len(self.result)
-        except (TypeError,AttributeError,NotImplementedError):
-            pass
-        else:
-            if blocks==1:
-                self.headers['Content-Length'] = str(self.bytes_sent)
-                return
-        # XXX Try for chunked encoding if origin server and client is 1.1
-
-
-    def cleanup_headers(self):
-        """Make any necessary header changes or defaults
-
-        Subclasses can extend this to add other defaults.
-        """
-        if 'Content-Length' not in self.headers:
-            self.set_content_length()
-
-    def start_response(self, status, headers,exc_info=None):
-        """'start_response()' callable as specified by PEP 333"""
-
-        if exc_info:
-            try:
-                if self.headers_sent:
-                    # Re-raise original exception if headers sent
-                    raise exc_info[0], exc_info[1], exc_info[2]
-            finally:
-                exc_info = None        # avoid dangling circular ref
-        elif self.headers is not None:
-            raise AssertionError("Headers already set!")
-
-        assert type(status) is StringType,"Status must be a string"
-        assert len(status)>=4,"Status must be at least 4 characters"
-        assert int(status[:3]),"Status message must begin w/3-digit code"
-        assert status[3]==" ", "Status message must have a space after code"
-        if __debug__:
-            for name,val in headers:
-                assert type(name) is StringType,"Header names must be strings"
-                assert type(val) is StringType,"Header values must be strings"
-                assert not is_hop_by_hop(name),"Hop-by-hop headers not allowed"
-        self.status = status
-        self.headers = self.headers_class(headers)
-        return self.write
-
-
-    def send_preamble(self):
-        """Transmit version/status/date/server, via self._write()"""
-        if self.origin_server:
-            if self.client_is_modern():
-                self._write('HTTP/%s %s\r\n' % (self.http_version,self.status))
-                if 'Date' not in self.headers:
-                    self._write(
-                        'Date: %s\r\n' % format_date_time(time.time())
-                    )
-                if self.server_software and 'Server' not in self.headers:
-                    self._write('Server: %s\r\n' % self.server_software)
-        else:
-            self._write('Status: %s\r\n' % self.status)
-
-    def write(self, data):
-        """'write()' callable as specified by PEP 333"""
-
-        assert type(data) is StringType,"write() argument must be string"
-
-        if not self.status:
-            raise AssertionError("write() before start_response()")
-
-        elif not self.headers_sent:
-            # Before the first output, send the stored headers
-            self.bytes_sent = len(data)    # make sure we know content-length
-            self.send_headers()
-        else:
-            self.bytes_sent += len(data)
-
-        # XXX check Content-Length and truncate if too many bytes written?
-        self._write(data)
-        self._flush()
-
-
-    def sendfile(self):
-        """Platform-specific file transmission
-
-        Override this method in subclasses to support platform-specific
-        file transmission.  It is only called if the application's
-        return iterable ('self.result') is an instance of
-        'self.wsgi_file_wrapper'.
-
-        This method should return a true value if it was able to actually
-        transmit the wrapped file-like object using a platform-specific
-        approach.  It should return a false value if normal iteration
-        should be used instead.  An exception can be raised to indicate
-        that transmission was attempted, but failed.
-
-        NOTE: this method should call 'self.send_headers()' if
-        'self.headers_sent' is false and it is going to attempt direct
-        transmission of the file.
-        """
-        return False   # No platform-specific transmission by default
-
-
-    def finish_content(self):
-        """Ensure headers and content have both been sent"""
-        if not self.headers_sent:
-            # Only zero Content-Length if not set by the application (so
-            # that HEAD requests can be satisfied properly, see #3839)
-            self.headers.setdefault('Content-Length', "0")
-            self.send_headers()
-        else:
-            pass # XXX check if content-length was too short?
-
-    def close(self):
-        """Close the iterable (if needed) and reset all instance vars
-
-        Subclasses may want to also drop the client connection.
-        """
-        try:
-            if hasattr(self.result,'close'):
-                self.result.close()
-        finally:
-            self.result = self.headers = self.status = self.environ = None
-            self.bytes_sent = 0; self.headers_sent = False
-
-
-    def send_headers(self):
-        """Transmit headers to the client, via self._write()"""
-        self.cleanup_headers()
-        self.headers_sent = True
-        if not self.origin_server or self.client_is_modern():
-            self.send_preamble()
-            self._write(str(self.headers))
-
-
-    def result_is_file(self):
-        """True if 'self.result' is an instance of 'self.wsgi_file_wrapper'"""
-        wrapper = self.wsgi_file_wrapper
-        return wrapper is not None and isinstance(self.result,wrapper)
-
-
-    def client_is_modern(self):
-        """True if client can accept status and headers"""
-        return self.environ['SERVER_PROTOCOL'].upper() != 'HTTP/0.9'
-
-
-    def log_exception(self,exc_info):
-        """Log the 'exc_info' tuple in the server log
-
-        Subclasses may override to retarget the output or change its format.
-        """
-        try:
-            from traceback import print_exception
-            stderr = self.get_stderr()
-            print_exception(
-                exc_info[0], exc_info[1], exc_info[2],
-                self.traceback_limit, stderr
-            )
-            stderr.flush()
-        finally:
-            exc_info = None
-
-    def handle_error(self):
-        """Log current error, and send error output to client if possible"""
-        self.log_exception(sys.exc_info())
-        if not self.headers_sent:
-            self.result = self.error_output(self.environ, self.start_response)
-            self.finish_response()
-        # XXX else: attempt advanced recovery techniques for HTML or text?
-
-    def error_output(self, environ, start_response):
-        """WSGI mini-app to create error output
-
-        By default, this just uses the 'error_status', 'error_headers',
-        and 'error_body' attributes to generate an output page.  It can
-        be overridden in a subclass to dynamically generate diagnostics,
-        choose an appropriate message for the user's preferred language, etc.
-
-        Note, however, that it's not recommended from a security perspective to
-        spit out diagnostics to any old user; ideally, you should have to do
-        something special to enable diagnostic output, which is why we don't
-        include any here!
-        """
-        start_response(self.error_status,self.error_headers[:],sys.exc_info())
-        return [self.error_body]
-
-
-    # Pure abstract methods; *must* be overridden in subclasses
-
-    def _write(self,data):
-        """Override in subclass to buffer data for send to client
-
-        It's okay if this method actually transmits the data; BaseHandler
-        just separates write and flush operations for greater efficiency
-        when the underlying system actually has such a distinction.
-        """
-        raise NotImplementedError
-
-    def _flush(self):
-        """Override in subclass to force sending of recent '_write()' calls
-
-        It's okay if this method is a no-op (i.e., if '_write()' actually
-        sends the data.
-        """
-        raise NotImplementedError
-
-    def get_stdin(self):
-        """Override in subclass to return suitable 'wsgi.input'"""
-        raise NotImplementedError
-
-    def get_stderr(self):
-        """Override in subclass to return suitable 'wsgi.errors'"""
-        raise NotImplementedError
-
-    def add_cgi_vars(self):
-        """Override in subclass to insert CGI variables in 'self.environ'"""
-        raise NotImplementedError
-
-
-class SimpleHandler(BaseHandler):
-    """Handler that's just initialized with streams, environment, etc.
-
-    This handler subclass is intended for synchronous HTTP/1.0 origin servers,
-    and handles sending the entire response output, given the correct inputs.
-
-    Usage::
-
-        handler = SimpleHandler(
-            inp,out,err,env, multithread=False, multiprocess=True
-        )
-        handler.run(app)"""
-
-    def __init__(self,stdin,stdout,stderr,environ,
-        multithread=True, multiprocess=False
-    ):
-        self.stdin = stdin
-        self.stdout = stdout
-        self.stderr = stderr
-        self.base_env = environ
-        self.wsgi_multithread = multithread
-        self.wsgi_multiprocess = multiprocess
-
-    def get_stdin(self):
-        return self.stdin
-
-    def get_stderr(self):
-        return self.stderr
-
-    def add_cgi_vars(self):
-        self.environ.update(self.base_env)
-
-    def _write(self,data):
-        self.stdout.write(data)
-        self._write = self.stdout.write
-
-    def _flush(self):
-        self.stdout.flush()
-        self._flush = self.stdout.flush
-
-
-class BaseCGIHandler(SimpleHandler):
-
-    """CGI-like systems using input/output/error streams and environ mapping
-
-    Usage::
-
-        handler = BaseCGIHandler(inp,out,err,env)
-        handler.run(app)
-
-    This handler class is useful for gateway protocols like ReadyExec and
-    FastCGI, that have usable input/output/error streams and an environment
-    mapping.  It's also the base class for CGIHandler, which just uses
-    sys.stdin, os.environ, and so on.
-
-    The constructor also takes keyword arguments 'multithread' and
-    'multiprocess' (defaulting to 'True' and 'False' respectively) to control
-    the configuration sent to the application.  It sets 'origin_server' to
-    False (to enable CGI-like output), and assumes that 'wsgi.run_once' is
-    False.
-    """
-
-    origin_server = False
-
-
-class CGIHandler(BaseCGIHandler):
-
-    """CGI-based invocation via sys.stdin/stdout/stderr and os.environ
-
-    Usage::
-
-        CGIHandler().run(app)
-
-    The difference between this class and BaseCGIHandler is that it always
-    uses 'wsgi.run_once' of 'True', 'wsgi.multithread' of 'False', and
-    'wsgi.multiprocess' of 'True'.  It does not take any initialization
-    parameters, but always uses 'sys.stdin', 'os.environ', and friends.
-
-    If you need to override any of these parameters, use BaseCGIHandler
-    instead.
-    """
-
-    wsgi_run_once = True
-    # Do not allow os.environ to leak between requests in Google App Engine
-    # and other multi-run CGI use cases.  This is not easily testable.
-    # See http://bugs.python.org/issue7250
-    os_environ = {}
-
-    def __init__(self):
-        BaseCGIHandler.__init__(
-            self, sys.stdin, sys.stdout, sys.stderr, dict(os.environ.items()),
-            multithread=False, multiprocess=True
-        )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/headers.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/headers.py
deleted file mode 100644
index c2faeca..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/headers.py
+++ /dev/null
@@ -1,169 +0,0 @@
-"""Manage HTTP Response Headers
-
-Much of this module is red-handedly pilfered from email.message in the stdlib,
-so portions are Copyright (C) 2001,2002 Python Software Foundation, and were
-written by Barry Warsaw.
-"""
-
-from types import ListType, TupleType
-
-# Regular expression that matches `special' characters in parameters, the
-# existence of which force quoting of the parameter value.
-import re
-tspecials = re.compile(r'[ \(\)<>@,;:\\"/\[\]\?=]')
-
-def _formatparam(param, value=None, quote=1):
-    """Convenience function to format and return a key=value pair.
-
-    This will quote the value if needed or if quote is true.
-    """
-    if value is not None and len(value) > 0:
-        if quote or tspecials.search(value):
-            value = value.replace('\\', '\\\\').replace('"', r'\"')
-            return '%s="%s"' % (param, value)
-        else:
-            return '%s=%s' % (param, value)
-    else:
-        return param
-
-
-class Headers:
-
-    """Manage a collection of HTTP response headers"""
-
-    def __init__(self,headers):
-        if type(headers) is not ListType:
-            raise TypeError("Headers must be a list of name/value tuples")
-        self._headers = headers
-
-    def __len__(self):
-        """Return the total number of headers, including duplicates."""
-        return len(self._headers)
-
-    def __setitem__(self, name, val):
-        """Set the value of a header."""
-        del self[name]
-        self._headers.append((name, val))
-
-    def __delitem__(self,name):
-        """Delete all occurrences of a header, if present.
-
-        Does *not* raise an exception if the header is missing.
-        """
-        name = name.lower()
-        self._headers[:] = [kv for kv in self._headers if kv[0].lower() != name]
-
-    def __getitem__(self,name):
-        """Get the first header value for 'name'
-
-        Return None if the header is missing instead of raising an exception.
-
-        Note that if the header appeared multiple times, the first exactly which
-        occurrance gets returned is undefined.  Use getall() to get all
-        the values matching a header field name.
-        """
-        return self.get(name)
-
-    def has_key(self, name):
-        """Return true if the message contains the header."""
-        return self.get(name) is not None
-
-    __contains__ = has_key
-
-
-    def get_all(self, name):
-        """Return a list of all the values for the named field.
-
-        These will be sorted in the order they appeared in the original header
-        list or were added to this instance, and may contain duplicates.  Any
-        fields deleted and re-inserted are always appended to the header list.
-        If no fields exist with the given name, returns an empty list.
-        """
-        name = name.lower()
-        return [kv[1] for kv in self._headers if kv[0].lower()==name]
-
-
-    def get(self,name,default=None):
-        """Get the first header value for 'name', or return 'default'"""
-        name = name.lower()
-        for k,v in self._headers:
-            if k.lower()==name:
-                return v
-        return default
-
-
-    def keys(self):
-        """Return a list of all the header field names.
-
-        These will be sorted in the order they appeared in the original header
-        list, or were added to this instance, and may contain duplicates.
-        Any fields deleted and re-inserted are always appended to the header
-        list.
-        """
-        return [k for k, v in self._headers]
-
-    def values(self):
-        """Return a list of all header values.
-
-        These will be sorted in the order they appeared in the original header
-        list, or were added to this instance, and may contain duplicates.
-        Any fields deleted and re-inserted are always appended to the header
-        list.
-        """
-        return [v for k, v in self._headers]
-
-    def items(self):
-        """Get all the header fields and values.
-
-        These will be sorted in the order they were in the original header
-        list, or were added to this instance, and may contain duplicates.
-        Any fields deleted and re-inserted are always appended to the header
-        list.
-        """
-        return self._headers[:]
-
-    def __repr__(self):
-        return "Headers(%r)" % self._headers
-
-    def __str__(self):
-        """str() returns the formatted headers, complete with end line,
-        suitable for direct HTTP transmission."""
-        return '\r\n'.join(["%s: %s" % kv for kv in self._headers]+['',''])
-
-    def setdefault(self,name,value):
-        """Return first matching header value for 'name', or 'value'
-
-        If there is no header named 'name', add a new header with name 'name'
-        and value 'value'."""
-        result = self.get(name)
-        if result is None:
-            self._headers.append((name,value))
-            return value
-        else:
-            return result
-
-    def add_header(self, _name, _value, **_params):
-        """Extended header setting.
-
-        _name is the header field to add.  keyword arguments can be used to set
-        additional parameters for the header field, with underscores converted
-        to dashes.  Normally the parameter will be added as key="value" unless
-        value is None, in which case only the key will be added.
-
-        Example:
-
-        h.add_header('content-disposition', 'attachment', filename='bud.gif')
-
-        Note that unlike the corresponding 'email.message' method, this does
-        *not* handle '(charset, language, value)' tuples: all values must be
-        strings or None.
-        """
-        parts = []
-        if _value is not None:
-            parts.append(_value)
-        for k, v in _params.items():
-            if v is None:
-                parts.append(k.replace('_', '-'))
-            else:
-                parts.append(_formatparam(k.replace('_', '-'), v))
-        self._headers.append((_name, "; ".join(parts)))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/simple_server.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/simple_server.py
deleted file mode 100644
index 3dfce90..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/simple_server.py
+++ /dev/null
@@ -1,155 +0,0 @@
-"""BaseHTTPServer that implements the Python WSGI protocol (PEP 333, rev 1.21)
-
-This is both an example of how WSGI can be implemented, and a basis for running
-simple web applications on a local machine, such as might be done when testing
-or debugging an application.  It has not been reviewed for security issues,
-however, and we strongly recommend that you use a "real" web server for
-production use.
-
-For example usage, see the 'if __name__=="__main__"' block at the end of the
-module.  See also the BaseHTTPServer module docs for other API information.
-"""
-
-from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
-import urllib, sys
-from wsgiref.handlers import SimpleHandler
-
-__version__ = "0.1"
-__all__ = ['WSGIServer', 'WSGIRequestHandler', 'demo_app', 'make_server']
-
-
-server_version = "WSGIServer/" + __version__
-sys_version = "Python/" + sys.version.split()[0]
-software_version = server_version + ' ' + sys_version
-
-
-class ServerHandler(SimpleHandler):
-
-    server_software = software_version
-
-    def close(self):
-        try:
-            self.request_handler.log_request(
-                self.status.split(' ',1)[0], self.bytes_sent
-            )
-        finally:
-            SimpleHandler.close(self)
-
-
-
-class WSGIServer(HTTPServer):
-
-    """BaseHTTPServer that implements the Python WSGI protocol"""
-
-    application = None
-
-    def server_bind(self):
-        """Override server_bind to store the server name."""
-        HTTPServer.server_bind(self)
-        self.setup_environ()
-
-    def setup_environ(self):
-        # Set up base environment
-        env = self.base_environ = {}
-        env['SERVER_NAME'] = self.server_name
-        env['GATEWAY_INTERFACE'] = 'CGI/1.1'
-        env['SERVER_PORT'] = str(self.server_port)
-        env['REMOTE_HOST']=''
-        env['CONTENT_LENGTH']=''
-        env['SCRIPT_NAME'] = ''
-
-    def get_app(self):
-        return self.application
-
-    def set_app(self,application):
-        self.application = application
-
-
-
-class WSGIRequestHandler(BaseHTTPRequestHandler):
-
-    server_version = "WSGIServer/" + __version__
-
-    def get_environ(self):
-        env = self.server.base_environ.copy()
-        env['SERVER_PROTOCOL'] = self.request_version
-        env['REQUEST_METHOD'] = self.command
-        if '?' in self.path:
-            path,query = self.path.split('?',1)
-        else:
-            path,query = self.path,''
-
-        env['PATH_INFO'] = urllib.unquote(path)
-        env['QUERY_STRING'] = query
-
-        host = self.address_string()
-        if host != self.client_address[0]:
-            env['REMOTE_HOST'] = host
-        env['REMOTE_ADDR'] = self.client_address[0]
-
-        if self.headers.typeheader is None:
-            env['CONTENT_TYPE'] = self.headers.type
-        else:
-            env['CONTENT_TYPE'] = self.headers.typeheader
-
-        length = self.headers.getheader('content-length')
-        if length:
-            env['CONTENT_LENGTH'] = length
-
-        for h in self.headers.headers:
-            k,v = h.split(':',1)
-            k=k.replace('-','_').upper(); v=v.strip()
-            if k in env:
-                continue                    # skip content length, type,etc.
-            if 'HTTP_'+k in env:
-                env['HTTP_'+k] += ','+v     # comma-separate multiple headers
-            else:
-                env['HTTP_'+k] = v
-        return env
-
-    def get_stderr(self):
-        return sys.stderr
-
-    def handle(self):
-        """Handle a single HTTP request"""
-
-        self.raw_requestline = self.rfile.readline()
-        if not self.parse_request(): # An error code has been sent, just exit
-            return
-
-        handler = ServerHandler(
-            self.rfile, self.wfile, self.get_stderr(), self.get_environ()
-        )
-        handler.request_handler = self      # backpointer for logging
-        handler.run(self.server.get_app())
-
-
-
-def demo_app(environ,start_response):
-    from StringIO import StringIO
-    stdout = StringIO()
-    print >>stdout, "Hello world!"
-    print >>stdout
-    h = environ.items(); h.sort()
-    for k,v in h:
-        print >>stdout, k,'=', repr(v)
-    start_response("200 OK", [('Content-Type','text/plain')])
-    return [stdout.getvalue()]
-
-
-def make_server(
-    host, port, app, server_class=WSGIServer, handler_class=WSGIRequestHandler
-):
-    """Create a new WSGI server listening on `host` and `port` for `app`"""
-    server = server_class((host, port), handler_class)
-    server.set_app(app)
-    return server
-
-
-if __name__ == '__main__':
-    httpd = make_server('', 8000, demo_app)
-    sa = httpd.socket.getsockname()
-    print "Serving HTTP on", sa[0], "port", sa[1], "..."
-    import webbrowser
-    webbrowser.open('http://localhost:8000/xyz?abc')
-    httpd.handle_request()  # serve one request, then exit
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/util.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/util.py
deleted file mode 100644
index 2264857..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/util.py
+++ /dev/null
@@ -1,165 +0,0 @@
-"""Miscellaneous WSGI-related Utilities"""
-
-import posixpath
-
-__all__ = [
-    'FileWrapper', 'guess_scheme', 'application_uri', 'request_uri',
-    'shift_path_info', 'setup_testing_defaults',
-]
-
-
-class FileWrapper:
-    """Wrapper to convert file-like objects to iterables"""
-
-    def __init__(self, filelike, blksize=8192):
-        self.filelike = filelike
-        self.blksize = blksize
-        if hasattr(filelike,'close'):
-            self.close = filelike.close
-
-    def __getitem__(self,key):
-        data = self.filelike.read(self.blksize)
-        if data:
-            return data
-        raise IndexError
-
-    def __iter__(self):
-        return self
-
-    def next(self):
-        data = self.filelike.read(self.blksize)
-        if data:
-            return data
-        raise StopIteration
-
-def guess_scheme(environ):
-    """Return a guess for whether 'wsgi.url_scheme' should be 'http' or 'https'
-    """
-    if environ.get("HTTPS") in ('yes','on','1'):
-        return 'https'
-    else:
-        return 'http'
-
-def application_uri(environ):
-    """Return the application's base URI (no PATH_INFO or QUERY_STRING)"""
-    url = environ['wsgi.url_scheme']+'://'
-    from urllib import quote
-
-    if environ.get('HTTP_HOST'):
-        url += environ['HTTP_HOST']
-    else:
-        url += environ['SERVER_NAME']
-
-        if environ['wsgi.url_scheme'] == 'https':
-            if environ['SERVER_PORT'] != '443':
-                url += ':' + environ['SERVER_PORT']
-        else:
-            if environ['SERVER_PORT'] != '80':
-                url += ':' + environ['SERVER_PORT']
-
-    url += quote(environ.get('SCRIPT_NAME') or '/')
-    return url
-
-def request_uri(environ, include_query=1):
-    """Return the full request URI, optionally including the query string"""
-    url = application_uri(environ)
-    from urllib import quote
-    path_info = quote(environ.get('PATH_INFO',''),safe='/;=,')
-    if not environ.get('SCRIPT_NAME'):
-        url += path_info[1:]
-    else:
-        url += path_info
-    if include_query and environ.get('QUERY_STRING'):
-        url += '?' + environ['QUERY_STRING']
-    return url
-
-def shift_path_info(environ):
-    """Shift a name from PATH_INFO to SCRIPT_NAME, returning it
-
-    If there are no remaining path segments in PATH_INFO, return None.
-    Note: 'environ' is modified in-place; use a copy if you need to keep
-    the original PATH_INFO or SCRIPT_NAME.
-
-    Note: when PATH_INFO is just a '/', this returns '' and appends a trailing
-    '/' to SCRIPT_NAME, even though empty path segments are normally ignored,
-    and SCRIPT_NAME doesn't normally end in a '/'.  This is intentional
-    behavior, to ensure that an application can tell the difference between
-    '/x' and '/x/' when traversing to objects.
-    """
-    path_info = environ.get('PATH_INFO','')
-    if not path_info:
-        return None
-
-    path_parts = path_info.split('/')
-    path_parts[1:-1] = [p for p in path_parts[1:-1] if p and p != '.']
-    name = path_parts[1]
-    del path_parts[1]
-
-    script_name = environ.get('SCRIPT_NAME','')
-    script_name = posixpath.normpath(script_name+'/'+name)
-    if script_name.endswith('/'):
-        script_name = script_name[:-1]
-    if not name and not script_name.endswith('/'):
-        script_name += '/'
-
-    environ['SCRIPT_NAME'] = script_name
-    environ['PATH_INFO']   = '/'.join(path_parts)
-
-    # Special case: '/.' on PATH_INFO doesn't get stripped,
-    # because we don't strip the last element of PATH_INFO
-    # if there's only one path part left.  Instead of fixing this
-    # above, we fix it here so that PATH_INFO gets normalized to
-    # an empty string in the environ.
-    if name=='.':
-        name = None
-    return name
-
-def setup_testing_defaults(environ):
-    """Update 'environ' with trivial defaults for testing purposes
-
-    This adds various parameters required for WSGI, including HTTP_HOST,
-    SERVER_NAME, SERVER_PORT, REQUEST_METHOD, SCRIPT_NAME, PATH_INFO,
-    and all of the wsgi.* variables.  It only supplies default values,
-    and does not replace any existing settings for these variables.
-
-    This routine is intended to make it easier for unit tests of WSGI
-    servers and applications to set up dummy environments.  It should *not*
-    be used by actual WSGI servers or applications, since the data is fake!
-    """
-
-    environ.setdefault('SERVER_NAME','127.0.0.1')
-    environ.setdefault('SERVER_PROTOCOL','HTTP/1.0')
-
-    environ.setdefault('HTTP_HOST',environ['SERVER_NAME'])
-    environ.setdefault('REQUEST_METHOD','GET')
-
-    if 'SCRIPT_NAME' not in environ and 'PATH_INFO' not in environ:
-        environ.setdefault('SCRIPT_NAME','')
-        environ.setdefault('PATH_INFO','/')
-
-    environ.setdefault('wsgi.version', (1,0))
-    environ.setdefault('wsgi.run_once', 0)
-    environ.setdefault('wsgi.multithread', 0)
-    environ.setdefault('wsgi.multiprocess', 0)
-
-    from StringIO import StringIO
-    environ.setdefault('wsgi.input', StringIO(""))
-    environ.setdefault('wsgi.errors', StringIO())
-    environ.setdefault('wsgi.url_scheme',guess_scheme(environ))
-
-    if environ['wsgi.url_scheme']=='http':
-        environ.setdefault('SERVER_PORT', '80')
-    elif environ['wsgi.url_scheme']=='https':
-        environ.setdefault('SERVER_PORT', '443')
-
-
-
-_hoppish = {
-    'connection':1, 'keep-alive':1, 'proxy-authenticate':1,
-    'proxy-authorization':1, 'te':1, 'trailers':1, 'transfer-encoding':1,
-    'upgrade':1
-}.__contains__
-
-def is_hop_by_hop(header_name):
-    """Return true if 'header_name' is an HTTP/1.1 "Hop-by-Hop" header"""
-    return _hoppish(header_name.lower())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/validate.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/validate.py
deleted file mode 100644
index 6ca5bc7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/wsgiref/validate.py
+++ /dev/null
@@ -1,432 +0,0 @@
-# (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org)
-# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
-# Also licenced under the Apache License, 2.0: http://opensource.org/licenses/apache2.0.php
-# Licensed to PSF under a Contributor Agreement
-"""
-Middleware to check for obedience to the WSGI specification.
-
-Some of the things this checks:
-
-* Signature of the application and start_response (including that
-  keyword arguments are not used).
-
-* Environment checks:
-
-  - Environment is a dictionary (and not a subclass).
-
-  - That all the required keys are in the environment: REQUEST_METHOD,
-    SERVER_NAME, SERVER_PORT, wsgi.version, wsgi.input, wsgi.errors,
-    wsgi.multithread, wsgi.multiprocess, wsgi.run_once
-
-  - That HTTP_CONTENT_TYPE and HTTP_CONTENT_LENGTH are not in the
-    environment (these headers should appear as CONTENT_LENGTH and
-    CONTENT_TYPE).
-
-  - Warns if QUERY_STRING is missing, as the cgi module acts
-    unpredictably in that case.
-
-  - That CGI-style variables (that don't contain a .) have
-    (non-unicode) string values
-
-  - That wsgi.version is a tuple
-
-  - That wsgi.url_scheme is 'http' or 'https' (@@: is this too
-    restrictive?)
-
-  - Warns if the REQUEST_METHOD is not known (@@: probably too
-    restrictive).
-
-  - That SCRIPT_NAME and PATH_INFO are empty or start with /
-
-  - That at least one of SCRIPT_NAME or PATH_INFO are set.
-
-  - That CONTENT_LENGTH is a positive integer.
-
-  - That SCRIPT_NAME is not '/' (it should be '', and PATH_INFO should
-    be '/').
-
-  - That wsgi.input has the methods read, readline, readlines, and
-    __iter__
-
-  - That wsgi.errors has the methods flush, write, writelines
-
-* The status is a string, contains a space, starts with an integer,
-  and that integer is in range (> 100).
-
-* That the headers is a list (not a subclass, not another kind of
-  sequence).
-
-* That the items of the headers are tuples of strings.
-
-* That there is no 'status' header (that is used in CGI, but not in
-  WSGI).
-
-* That the headers don't contain newlines or colons, end in _ or -, or
-  contain characters codes below 037.
-
-* That Content-Type is given if there is content (CGI often has a
-  default content type, but WSGI does not).
-
-* That no Content-Type is given when there is no content (@@: is this
-  too restrictive?)
-
-* That the exc_info argument to start_response is a tuple or None.
-
-* That all calls to the writer are with strings, and no other methods
-  on the writer are accessed.
-
-* That wsgi.input is used properly:
-
-  - .read() is called with zero or one argument
-
-  - That it returns a string
-
-  - That readline, readlines, and __iter__ return strings
-
-  - That .close() is not called
-
-  - No other methods are provided
-
-* That wsgi.errors is used properly:
-
-  - .write() and .writelines() is called with a string
-
-  - That .close() is not called, and no other methods are provided.
-
-* The response iterator:
-
-  - That it is not a string (it should be a list of a single string; a
-    string will work, but perform horribly).
-
-  - That .next() returns a string
-
-  - That the iterator is not iterated over until start_response has
-    been called (that can signal either a server or application
-    error).
-
-  - That .close() is called (doesn't raise exception, only prints to
-    sys.stderr, because we only know it isn't called when the object
-    is garbage collected).
-"""
-__all__ = ['validator']
-
-
-import re
-import sys
-from types import DictType, StringType, TupleType, ListType
-import warnings
-
-header_re = re.compile(r'^[a-zA-Z][a-zA-Z0-9\-_]*$')
-bad_header_value_re = re.compile(r'[\000-\037]')
-
-class WSGIWarning(Warning):
-    """
-    Raised in response to WSGI-spec-related warnings
-    """
-
-def assert_(cond, *args):
-    if not cond:
-        raise AssertionError(*args)
-
-def validator(application):
-
-    """
-    When applied between a WSGI server and a WSGI application, this
-    middleware will check for WSGI compliancy on a number of levels.
-    This middleware does not modify the request or response in any
-    way, but will throw an AssertionError if anything seems off
-    (except for a failure to close the application iterator, which
-    will be printed to stderr -- there's no way to throw an exception
-    at that point).
-    """
-
-    def lint_app(*args, **kw):
-        assert_(len(args) == 2, "Two arguments required")
-        assert_(not kw, "No keyword arguments allowed")
-        environ, start_response = args
-
-        check_environ(environ)
-
-        # We use this to check if the application returns without
-        # calling start_response:
-        start_response_started = []
-
-        def start_response_wrapper(*args, **kw):
-            assert_(len(args) == 2 or len(args) == 3, (
-                "Invalid number of arguments: %s" % (args,)))
-            assert_(not kw, "No keyword arguments allowed")
-            status = args[0]
-            headers = args[1]
-            if len(args) == 3:
-                exc_info = args[2]
-            else:
-                exc_info = None
-
-            check_status(status)
-            check_headers(headers)
-            check_content_type(status, headers)
-            check_exc_info(exc_info)
-
-            start_response_started.append(None)
-            return WriteWrapper(start_response(*args))
-
-        environ['wsgi.input'] = InputWrapper(environ['wsgi.input'])
-        environ['wsgi.errors'] = ErrorWrapper(environ['wsgi.errors'])
-
-        iterator = application(environ, start_response_wrapper)
-        assert_(iterator is not None and iterator != False,
-            "The application must return an iterator, if only an empty list")
-
-        check_iterator(iterator)
-
-        return IteratorWrapper(iterator, start_response_started)
-
-    return lint_app
-
-class InputWrapper:
-
-    def __init__(self, wsgi_input):
-        self.input = wsgi_input
-
-    def read(self, *args):
-        assert_(len(args) <= 1)
-        v = self.input.read(*args)
-        assert_(type(v) is type(""))
-        return v
-
-    def readline(self):
-        v = self.input.readline()
-        assert_(type(v) is type(""))
-        return v
-
-    def readlines(self, *args):
-        assert_(len(args) <= 1)
-        lines = self.input.readlines(*args)
-        assert_(type(lines) is type([]))
-        for line in lines:
-            assert_(type(line) is type(""))
-        return lines
-
-    def __iter__(self):
-        while 1:
-            line = self.readline()
-            if not line:
-                return
-            yield line
-
-    def close(self):
-        assert_(0, "input.close() must not be called")
-
-class ErrorWrapper:
-
-    def __init__(self, wsgi_errors):
-        self.errors = wsgi_errors
-
-    def write(self, s):
-        assert_(type(s) is type(""))
-        self.errors.write(s)
-
-    def flush(self):
-        self.errors.flush()
-
-    def writelines(self, seq):
-        for line in seq:
-            self.write(line)
-
-    def close(self):
-        assert_(0, "errors.close() must not be called")
-
-class WriteWrapper:
-
-    def __init__(self, wsgi_writer):
-        self.writer = wsgi_writer
-
-    def __call__(self, s):
-        assert_(type(s) is type(""))
-        self.writer(s)
-
-class PartialIteratorWrapper:
-
-    def __init__(self, wsgi_iterator):
-        self.iterator = wsgi_iterator
-
-    def __iter__(self):
-        # We want to make sure __iter__ is called
-        return IteratorWrapper(self.iterator, None)
-
-class IteratorWrapper:
-
-    def __init__(self, wsgi_iterator, check_start_response):
-        self.original_iterator = wsgi_iterator
-        self.iterator = iter(wsgi_iterator)
-        self.closed = False
-        self.check_start_response = check_start_response
-
-    def __iter__(self):
-        return self
-
-    def next(self):
-        assert_(not self.closed,
-            "Iterator read after closed")
-        v = self.iterator.next()
-        if self.check_start_response is not None:
-            assert_(self.check_start_response,
-                "The application returns and we started iterating over its body, but start_response has not yet been called")
-            self.check_start_response = None
-        return v
-
-    def close(self):
-        self.closed = True
-        if hasattr(self.original_iterator, 'close'):
-            self.original_iterator.close()
-
-    def __del__(self):
-        if not self.closed:
-            sys.stderr.write(
-                "Iterator garbage collected without being closed")
-        assert_(self.closed,
-            "Iterator garbage collected without being closed")
-
-def check_environ(environ):
-    assert_(type(environ) is DictType,
-        "Environment is not of the right type: %r (environment: %r)"
-        % (type(environ), environ))
-
-    for key in ['REQUEST_METHOD', 'SERVER_NAME', 'SERVER_PORT',
-                'wsgi.version', 'wsgi.input', 'wsgi.errors',
-                'wsgi.multithread', 'wsgi.multiprocess',
-                'wsgi.run_once']:
-        assert_(key in environ,
-            "Environment missing required key: %r" % (key,))
-
-    for key in ['HTTP_CONTENT_TYPE', 'HTTP_CONTENT_LENGTH']:
-        assert_(key not in environ,
-            "Environment should not have the key: %s "
-            "(use %s instead)" % (key, key[5:]))
-
-    if 'QUERY_STRING' not in environ:
-        warnings.warn(
-            'QUERY_STRING is not in the WSGI environment; the cgi '
-            'module will use sys.argv when this variable is missing, '
-            'so application errors are more likely',
-            WSGIWarning)
-
-    for key in environ.keys():
-        if '.' in key:
-            # Extension, we don't care about its type
-            continue
-        assert_(type(environ[key]) is StringType,
-            "Environmental variable %s is not a string: %r (value: %r)"
-            % (key, type(environ[key]), environ[key]))
-
-    assert_(type(environ['wsgi.version']) is TupleType,
-        "wsgi.version should be a tuple (%r)" % (environ['wsgi.version'],))
-    assert_(environ['wsgi.url_scheme'] in ('http', 'https'),
-        "wsgi.url_scheme unknown: %r" % environ['wsgi.url_scheme'])
-
-    check_input(environ['wsgi.input'])
-    check_errors(environ['wsgi.errors'])
-
-    # @@: these need filling out:
-    if environ['REQUEST_METHOD'] not in (
-        'GET', 'HEAD', 'POST', 'OPTIONS','PUT','DELETE','TRACE'):
-        warnings.warn(
-            "Unknown REQUEST_METHOD: %r" % environ['REQUEST_METHOD'],
-            WSGIWarning)
-
-    assert_(not environ.get('SCRIPT_NAME')
-            or environ['SCRIPT_NAME'].startswith('/'),
-        "SCRIPT_NAME doesn't start with /: %r" % environ['SCRIPT_NAME'])
-    assert_(not environ.get('PATH_INFO')
-            or environ['PATH_INFO'].startswith('/'),
-        "PATH_INFO doesn't start with /: %r" % environ['PATH_INFO'])
-    if environ.get('CONTENT_LENGTH'):
-        assert_(int(environ['CONTENT_LENGTH']) >= 0,
-            "Invalid CONTENT_LENGTH: %r" % environ['CONTENT_LENGTH'])
-
-    if not environ.get('SCRIPT_NAME'):
-        assert_('PATH_INFO' in environ,
-            "One of SCRIPT_NAME or PATH_INFO are required (PATH_INFO "
-            "should at least be '/' if SCRIPT_NAME is empty)")
-    assert_(environ.get('SCRIPT_NAME') != '/',
-        "SCRIPT_NAME cannot be '/'; it should instead be '', and "
-        "PATH_INFO should be '/'")
-
-def check_input(wsgi_input):
-    for attr in ['read', 'readline', 'readlines', '__iter__']:
-        assert_(hasattr(wsgi_input, attr),
-            "wsgi.input (%r) doesn't have the attribute %s"
-            % (wsgi_input, attr))
-
-def check_errors(wsgi_errors):
-    for attr in ['flush', 'write', 'writelines']:
-        assert_(hasattr(wsgi_errors, attr),
-            "wsgi.errors (%r) doesn't have the attribute %s"
-            % (wsgi_errors, attr))
-
-def check_status(status):
-    assert_(type(status) is StringType,
-        "Status must be a string (not %r)" % status)
-    # Implicitly check that we can turn it into an integer:
-    status_code = status.split(None, 1)[0]
-    assert_(len(status_code) == 3,
-        "Status codes must be three characters: %r" % status_code)
-    status_int = int(status_code)
-    assert_(status_int >= 100, "Status code is invalid: %r" % status_int)
-    if len(status) < 4 or status[3] != ' ':
-        warnings.warn(
-            "The status string (%r) should be a three-digit integer "
-            "followed by a single space and a status explanation"
-            % status, WSGIWarning)
-
-def check_headers(headers):
-    assert_(type(headers) is ListType,
-        "Headers (%r) must be of type list: %r"
-        % (headers, type(headers)))
-    header_names = {}
-    for item in headers:
-        assert_(type(item) is TupleType,
-            "Individual headers (%r) must be of type tuple: %r"
-            % (item, type(item)))
-        assert_(len(item) == 2)
-        name, value = item
-        assert_(name.lower() != 'status',
-            "The Status header cannot be used; it conflicts with CGI "
-            "script, and HTTP status is not given through headers "
-            "(value: %r)." % value)
-        header_names[name.lower()] = None
-        assert_('\n' not in name and ':' not in name,
-            "Header names may not contain ':' or '\\n': %r" % name)
-        assert_(header_re.search(name), "Bad header name: %r" % name)
-        assert_(not name.endswith('-') and not name.endswith('_'),
-            "Names may not end in '-' or '_': %r" % name)
-        if bad_header_value_re.search(value):
-            assert_(0, "Bad header value: %r (bad char: %r)"
-            % (value, bad_header_value_re.search(value).group(0)))
-
-def check_content_type(status, headers):
-    code = int(status.split(None, 1)[0])
-    # @@: need one more person to verify this interpretation of RFC 2616
-    #     http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
-    NO_MESSAGE_BODY = (204, 304)
-    for name, value in headers:
-        if name.lower() == 'content-type':
-            if code not in NO_MESSAGE_BODY:
-                return
-            assert_(0, ("Content-Type header found in a %s response, "
-                        "which must not return content.") % code)
-    if code not in NO_MESSAGE_BODY:
-        assert_(0, "No Content-Type header found in headers (%s)" % headers)
-
-def check_exc_info(exc_info):
-    assert_(exc_info is None or type(exc_info) is type(()),
-        "exc_info (%r) is not a tuple: %r" % (exc_info, type(exc_info)))
-    # More exc_info checks?
-
-def check_iterator(iterator):
-    # Technically a string is legal, which is why it's a really bad
-    # idea, because it may cause the response to be returned
-    # character-by-character
-    assert_(not isinstance(iterator, str),
-        "You should not return a string as your application iterator, "
-        "instead return a single-item list containing that string.")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xdrlib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xdrlib.py
deleted file mode 100644
index 4d45473..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xdrlib.py
+++ /dev/null
@@ -1,231 +0,0 @@
-"""Implements (a subset of) Sun XDR -- eXternal Data Representation.
-
-See: RFC 1014
-
-"""
-
-import struct
-try:
-    from cStringIO import StringIO as _StringIO
-except ImportError:
-    from StringIO import StringIO as _StringIO
-
-__all__ = ["Error", "Packer", "Unpacker", "ConversionError"]
-
-# exceptions
-class Error(Exception):
-    """Exception class for this module. Use:
-
-    except xdrlib.Error, var:
-        # var has the Error instance for the exception
-
-    Public ivars:
-        msg -- contains the message
-
-    """
-    def __init__(self, msg):
-        self.msg = msg
-    def __repr__(self):
-        return repr(self.msg)
-    def __str__(self):
-        return str(self.msg)
-
-
-class ConversionError(Error):
-    pass
-
-
-
-class Packer:
-    """Pack various data representations into a buffer."""
-
-    def __init__(self):
-        self.reset()
-
-    def reset(self):
-        self.__buf = _StringIO()
-
-    def get_buffer(self):
-        return self.__buf.getvalue()
-    # backwards compatibility
-    get_buf = get_buffer
-
-    def pack_uint(self, x):
-        self.__buf.write(struct.pack('>L', x))
-
-    def pack_int(self, x):
-        self.__buf.write(struct.pack('>l', x))
-
-    pack_enum = pack_int
-
-    def pack_bool(self, x):
-        if x: self.__buf.write('\0\0\0\1')
-        else: self.__buf.write('\0\0\0\0')
-
-    def pack_uhyper(self, x):
-        self.pack_uint(x>>32 & 0xffffffffL)
-        self.pack_uint(x & 0xffffffffL)
-
-    pack_hyper = pack_uhyper
-
-    def pack_float(self, x):
-        try: self.__buf.write(struct.pack('>f', x))
-        except struct.error, msg:
-            raise ConversionError, msg
-
-    def pack_double(self, x):
-        try: self.__buf.write(struct.pack('>d', x))
-        except struct.error, msg:
-            raise ConversionError, msg
-
-    def pack_fstring(self, n, s):
-        if n < 0:
-            raise ValueError, 'fstring size must be nonnegative'
-        data = s[:n]
-        n = ((n+3)//4)*4
-        data = data + (n - len(data)) * '\0'
-        self.__buf.write(data)
-
-    pack_fopaque = pack_fstring
-
-    def pack_string(self, s):
-        n = len(s)
-        self.pack_uint(n)
-        self.pack_fstring(n, s)
-
-    pack_opaque = pack_string
-    pack_bytes = pack_string
-
-    def pack_list(self, list, pack_item):
-        for item in list:
-            self.pack_uint(1)
-            pack_item(item)
-        self.pack_uint(0)
-
-    def pack_farray(self, n, list, pack_item):
-        if len(list) != n:
-            raise ValueError, 'wrong array size'
-        for item in list:
-            pack_item(item)
-
-    def pack_array(self, list, pack_item):
-        n = len(list)
-        self.pack_uint(n)
-        self.pack_farray(n, list, pack_item)
-
-
-
-class Unpacker:
-    """Unpacks various data representations from the given buffer."""
-
-    def __init__(self, data):
-        self.reset(data)
-
-    def reset(self, data):
-        self.__buf = data
-        self.__pos = 0
-
-    def get_position(self):
-        return self.__pos
-
-    def set_position(self, position):
-        self.__pos = position
-
-    def get_buffer(self):
-        return self.__buf
-
-    def done(self):
-        if self.__pos < len(self.__buf):
-            raise Error('unextracted data remains')
-
-    def unpack_uint(self):
-        i = self.__pos
-        self.__pos = j = i+4
-        data = self.__buf[i:j]
-        if len(data) < 4:
-            raise EOFError
-        x = struct.unpack('>L', data)[0]
-        try:
-            return int(x)
-        except OverflowError:
-            return x
-
-    def unpack_int(self):
-        i = self.__pos
-        self.__pos = j = i+4
-        data = self.__buf[i:j]
-        if len(data) < 4:
-            raise EOFError
-        return struct.unpack('>l', data)[0]
-
-    unpack_enum = unpack_int
-
-    def unpack_bool(self):
-        return bool(self.unpack_int())
-
-    def unpack_uhyper(self):
-        hi = self.unpack_uint()
-        lo = self.unpack_uint()
-        return long(hi)<<32 | lo
-
-    def unpack_hyper(self):
-        x = self.unpack_uhyper()
-        if x >= 0x8000000000000000L:
-            x = x - 0x10000000000000000L
-        return x
-
-    def unpack_float(self):
-        i = self.__pos
-        self.__pos = j = i+4
-        data = self.__buf[i:j]
-        if len(data) < 4:
-            raise EOFError
-        return struct.unpack('>f', data)[0]
-
-    def unpack_double(self):
-        i = self.__pos
-        self.__pos = j = i+8
-        data = self.__buf[i:j]
-        if len(data) < 8:
-            raise EOFError
-        return struct.unpack('>d', data)[0]
-
-    def unpack_fstring(self, n):
-        if n < 0:
-            raise ValueError, 'fstring size must be nonnegative'
-        i = self.__pos
-        j = i + (n+3)//4*4
-        if j > len(self.__buf):
-            raise EOFError
-        self.__pos = j
-        return self.__buf[i:i+n]
-
-    unpack_fopaque = unpack_fstring
-
-    def unpack_string(self):
-        n = self.unpack_uint()
-        return self.unpack_fstring(n)
-
-    unpack_opaque = unpack_string
-    unpack_bytes = unpack_string
-
-    def unpack_list(self, unpack_item):
-        list = []
-        while 1:
-            x = self.unpack_uint()
-            if x == 0: break
-            if x != 1:
-                raise ConversionError, '0 or 1 expected, got %r' % (x,)
-            item = unpack_item()
-            list.append(item)
-        return list
-
-    def unpack_farray(self, n, unpack_item):
-        list = []
-        for i in range(n):
-            list.append(unpack_item())
-        return list
-
-    def unpack_array(self, unpack_item):
-        n = self.unpack_uint()
-        return self.unpack_farray(n, unpack_item)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/__init__.py
deleted file mode 100644
index 086543a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/__init__.py
+++ /dev/null
@@ -1,41 +0,0 @@
-"""Core XML support for Python.
-
-This package contains four sub-packages:
-
-dom -- The W3C Document Object Model.  This supports DOM Level 1 +
-       Namespaces.
-
-parsers -- Python wrappers for XML parsers (currently only supports Expat).
-
-sax -- The Simple API for XML, developed by XML-Dev, led by David
-       Megginson and ported to Python by Lars Marius Garshol.  This
-       supports the SAX 2 API.
-
-etree -- The ElementTree XML library.  This is a subset of the full
-       ElementTree XML release.
-
-"""
-
-
-__all__ = ["dom", "parsers", "sax", "etree"]
-
-_MINIMUM_XMLPLUS_VERSION = (0, 8, 4)
-
-
-try:
-    import _xmlplus
-except ImportError:
-    pass
-else:
-    try:
-        v = _xmlplus.version_info
-    except AttributeError:
-        # _xmlplus is too old; ignore it
-        pass
-    else:
-        if v >= _MINIMUM_XMLPLUS_VERSION:
-            import sys
-            _xmlplus.__path__.extend(__path__)
-            sys.modules[__name__] = _xmlplus
-        else:
-            del v
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/NodeFilter.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/NodeFilter.py
deleted file mode 100644
index 07886e0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/NodeFilter.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# This is the Python mapping for interface NodeFilter from
-# DOM2-Traversal-Range. It contains only constants.
-
-class NodeFilter:
-    """
-    This is the DOM2 NodeFilter interface. It contains only constants.
-    """
-    FILTER_ACCEPT = 1
-    FILTER_REJECT = 2
-    FILTER_SKIP   = 3
-
-    SHOW_ALL                    = 0xFFFFFFFFL
-    SHOW_ELEMENT                = 0x00000001
-    SHOW_ATTRIBUTE              = 0x00000002
-    SHOW_TEXT                   = 0x00000004
-    SHOW_CDATA_SECTION          = 0x00000008
-    SHOW_ENTITY_REFERENCE       = 0x00000010
-    SHOW_ENTITY                 = 0x00000020
-    SHOW_PROCESSING_INSTRUCTION = 0x00000040
-    SHOW_COMMENT                = 0x00000080
-    SHOW_DOCUMENT               = 0x00000100
-    SHOW_DOCUMENT_TYPE          = 0x00000200
-    SHOW_DOCUMENT_FRAGMENT      = 0x00000400
-    SHOW_NOTATION               = 0x00000800
-
-    def acceptNode(self, node):
-        raise NotImplementedError
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/__init__.py
deleted file mode 100644
index 5da489d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/__init__.py
+++ /dev/null
@@ -1,139 +0,0 @@
-"""W3C Document Object Model implementation for Python.
-
-The Python mapping of the Document Object Model is documented in the
-Python Library Reference in the section on the xml.dom package.
-
-This package contains the following modules:
-
-minidom -- A simple implementation of the Level 1 DOM with namespace
-           support added (based on the Level 2 specification) and other
-           minor Level 2 functionality.
-
-pulldom -- DOM builder supporting on-demand tree-building for selected
-           subtrees of the document.
-
-"""
-
-
-class Node:
-    """Class giving the NodeType constants."""
-
-    # DOM implementations may use this as a base class for their own
-    # Node implementations.  If they don't, the constants defined here
-    # should still be used as the canonical definitions as they match
-    # the values given in the W3C recommendation.  Client code can
-    # safely refer to these values in all tests of Node.nodeType
-    # values.
-
-    ELEMENT_NODE                = 1
-    ATTRIBUTE_NODE              = 2
-    TEXT_NODE                   = 3
-    CDATA_SECTION_NODE          = 4
-    ENTITY_REFERENCE_NODE       = 5
-    ENTITY_NODE                 = 6
-    PROCESSING_INSTRUCTION_NODE = 7
-    COMMENT_NODE                = 8
-    DOCUMENT_NODE               = 9
-    DOCUMENT_TYPE_NODE          = 10
-    DOCUMENT_FRAGMENT_NODE      = 11
-    NOTATION_NODE               = 12
-
-
-#ExceptionCode
-INDEX_SIZE_ERR                 = 1
-DOMSTRING_SIZE_ERR             = 2
-HIERARCHY_REQUEST_ERR          = 3
-WRONG_DOCUMENT_ERR             = 4
-INVALID_CHARACTER_ERR          = 5
-NO_DATA_ALLOWED_ERR            = 6
-NO_MODIFICATION_ALLOWED_ERR    = 7
-NOT_FOUND_ERR                  = 8
-NOT_SUPPORTED_ERR              = 9
-INUSE_ATTRIBUTE_ERR            = 10
-INVALID_STATE_ERR              = 11
-SYNTAX_ERR                     = 12
-INVALID_MODIFICATION_ERR       = 13
-NAMESPACE_ERR                  = 14
-INVALID_ACCESS_ERR             = 15
-VALIDATION_ERR                 = 16
-
-
-class DOMException(Exception):
-    """Abstract base class for DOM exceptions.
-    Exceptions with specific codes are specializations of this class."""
-
-    def __init__(self, *args, **kw):
-        if self.__class__ is DOMException:
-            raise RuntimeError(
-                "DOMException should not be instantiated directly")
-        Exception.__init__(self, *args, **kw)
-
-    def _get_code(self):
-        return self.code
-
-
-class IndexSizeErr(DOMException):
-    code = INDEX_SIZE_ERR
-
-class DomstringSizeErr(DOMException):
-    code = DOMSTRING_SIZE_ERR
-
-class HierarchyRequestErr(DOMException):
-    code = HIERARCHY_REQUEST_ERR
-
-class WrongDocumentErr(DOMException):
-    code = WRONG_DOCUMENT_ERR
-
-class InvalidCharacterErr(DOMException):
-    code = INVALID_CHARACTER_ERR
-
-class NoDataAllowedErr(DOMException):
-    code = NO_DATA_ALLOWED_ERR
-
-class NoModificationAllowedErr(DOMException):
-    code = NO_MODIFICATION_ALLOWED_ERR
-
-class NotFoundErr(DOMException):
-    code = NOT_FOUND_ERR
-
-class NotSupportedErr(DOMException):
-    code = NOT_SUPPORTED_ERR
-
-class InuseAttributeErr(DOMException):
-    code = INUSE_ATTRIBUTE_ERR
-
-class InvalidStateErr(DOMException):
-    code = INVALID_STATE_ERR
-
-class SyntaxErr(DOMException):
-    code = SYNTAX_ERR
-
-class InvalidModificationErr(DOMException):
-    code = INVALID_MODIFICATION_ERR
-
-class NamespaceErr(DOMException):
-    code = NAMESPACE_ERR
-
-class InvalidAccessErr(DOMException):
-    code = INVALID_ACCESS_ERR
-
-class ValidationErr(DOMException):
-    code = VALIDATION_ERR
-
-class UserDataHandler:
-    """Class giving the operation constants for UserDataHandler.handle()."""
-
-    # Based on DOM Level 3 (WD 9 April 2002)
-
-    NODE_CLONED   = 1
-    NODE_IMPORTED = 2
-    NODE_DELETED  = 3
-    NODE_RENAMED  = 4
-
-XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace"
-XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/"
-XHTML_NAMESPACE = "http://www.w3.org/1999/xhtml"
-EMPTY_NAMESPACE = None
-EMPTY_PREFIX = None
-
-from domreg import getDOMImplementation,registerDOMImplementation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/domreg.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/domreg.py
deleted file mode 100644
index 751f54a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/domreg.py
+++ /dev/null
@@ -1,99 +0,0 @@
-"""Registration facilities for DOM. This module should not be used
-directly. Instead, the functions getDOMImplementation and
-registerDOMImplementation should be imported from xml.dom."""
-
-from xml.dom.minicompat import *  # isinstance, StringTypes
-
-# This is a list of well-known implementations.  Well-known names
-# should be published by posting to xml-sig@python.org, and are
-# subsequently recorded in this file.
-
-well_known_implementations = {
-    'minidom':'xml.dom.minidom',
-    '4DOM': 'xml.dom.DOMImplementation',
-    }
-
-# DOM implementations not officially registered should register
-# themselves with their
-
-registered = {}
-
-def registerDOMImplementation(name, factory):
-    """registerDOMImplementation(name, factory)
-
-    Register the factory function with the name. The factory function
-    should return an object which implements the DOMImplementation
-    interface. The factory function can either return the same object,
-    or a new one (e.g. if that implementation supports some
-    customization)."""
-
-    registered[name] = factory
-
-def _good_enough(dom, features):
-    "_good_enough(dom, features) -> Return 1 if the dom offers the features"
-    for f,v in features:
-        if not dom.hasFeature(f,v):
-            return 0
-    return 1
-
-def getDOMImplementation(name = None, features = ()):
-    """getDOMImplementation(name = None, features = ()) -> DOM implementation.
-
-    Return a suitable DOM implementation. The name is either
-    well-known, the module name of a DOM implementation, or None. If
-    it is not None, imports the corresponding module and returns
-    DOMImplementation object if the import succeeds.
-
-    If name is not given, consider the available implementations to
-    find one with the required feature set. If no implementation can
-    be found, raise an ImportError. The features list must be a sequence
-    of (feature, version) pairs which are passed to hasFeature."""
-
-    import os
-    creator = None
-    mod = well_known_implementations.get(name)
-    if mod:
-        mod = __import__(mod, {}, {}, ['getDOMImplementation'])
-        return mod.getDOMImplementation()
-    elif name:
-        return registered[name]()
-    elif "PYTHON_DOM" in os.environ:
-        return getDOMImplementation(name = os.environ["PYTHON_DOM"])
-
-    # User did not specify a name, try implementations in arbitrary
-    # order, returning the one that has the required features
-    if isinstance(features, StringTypes):
-        features = _parse_feature_string(features)
-    for creator in registered.values():
-        dom = creator()
-        if _good_enough(dom, features):
-            return dom
-
-    for creator in well_known_implementations.keys():
-        try:
-            dom = getDOMImplementation(name = creator)
-        except StandardError: # typically ImportError, or AttributeError
-            continue
-        if _good_enough(dom, features):
-            return dom
-
-    raise ImportError,"no suitable DOM implementation found"
-
-def _parse_feature_string(s):
-    features = []
-    parts = s.split()
-    i = 0
-    length = len(parts)
-    while i < length:
-        feature = parts[i]
-        if feature[0] in "0123456789":
-            raise ValueError, "bad feature name: %r" % (feature,)
-        i = i + 1
-        version = None
-        if i < length:
-            v = parts[i]
-            if v[0] in "0123456789":
-                i = i + 1
-                version = v
-        features.append((feature, version))
-    return tuple(features)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/expatbuilder.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/expatbuilder.py
deleted file mode 100644
index 95c23a0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/expatbuilder.py
+++ /dev/null
@@ -1,983 +0,0 @@
-"""Facility to use the Expat parser to load a minidom instance
-from a string or file.
-
-This avoids all the overhead of SAX and pulldom to gain performance.
-"""
-
-# Warning!
-#
-# This module is tightly bound to the implementation details of the
-# minidom DOM and can't be used with other DOM implementations.  This
-# is due, in part, to a lack of appropriate methods in the DOM (there is
-# no way to create Entity and Notation nodes via the DOM Level 2
-# interface), and for performance.  The later is the cause of some fairly
-# cryptic code.
-#
-# Performance hacks:
-#
-#   -  .character_data_handler() has an extra case in which continuing
-#      data is appended to an existing Text node; this can be a
-#      speedup since pyexpat can break up character data into multiple
-#      callbacks even though we set the buffer_text attribute on the
-#      parser.  This also gives us the advantage that we don't need a
-#      separate normalization pass.
-#
-#   -  Determining that a node exists is done using an identity comparison
-#      with None rather than a truth test; this avoids searching for and
-#      calling any methods on the node object if it exists.  (A rather
-#      nice speedup is achieved this way as well!)
-
-from xml.dom import xmlbuilder, minidom, Node
-from xml.dom import EMPTY_NAMESPACE, EMPTY_PREFIX, XMLNS_NAMESPACE
-from xml.parsers import expat
-from xml.dom.minidom import _append_child, _set_attribute_node
-from xml.dom.NodeFilter import NodeFilter
-
-from xml.dom.minicompat import *
-
-TEXT_NODE = Node.TEXT_NODE
-CDATA_SECTION_NODE = Node.CDATA_SECTION_NODE
-DOCUMENT_NODE = Node.DOCUMENT_NODE
-
-FILTER_ACCEPT = xmlbuilder.DOMBuilderFilter.FILTER_ACCEPT
-FILTER_REJECT = xmlbuilder.DOMBuilderFilter.FILTER_REJECT
-FILTER_SKIP = xmlbuilder.DOMBuilderFilter.FILTER_SKIP
-FILTER_INTERRUPT = xmlbuilder.DOMBuilderFilter.FILTER_INTERRUPT
-
-theDOMImplementation = minidom.getDOMImplementation()
-
-# Expat typename -> TypeInfo
-_typeinfo_map = {
-    "CDATA":    minidom.TypeInfo(None, "cdata"),
-    "ENUM":     minidom.TypeInfo(None, "enumeration"),
-    "ENTITY":   minidom.TypeInfo(None, "entity"),
-    "ENTITIES": minidom.TypeInfo(None, "entities"),
-    "ID":       minidom.TypeInfo(None, "id"),
-    "IDREF":    minidom.TypeInfo(None, "idref"),
-    "IDREFS":   minidom.TypeInfo(None, "idrefs"),
-    "NMTOKEN":  minidom.TypeInfo(None, "nmtoken"),
-    "NMTOKENS": minidom.TypeInfo(None, "nmtokens"),
-    }
-
-class ElementInfo(object):
-    __slots__ = '_attr_info', '_model', 'tagName'
-
-    def __init__(self, tagName, model=None):
-        self.tagName = tagName
-        self._attr_info = []
-        self._model = model
-
-    def __getstate__(self):
-        return self._attr_info, self._model, self.tagName
-
-    def __setstate__(self, state):
-        self._attr_info, self._model, self.tagName = state
-
-    def getAttributeType(self, aname):
-        for info in self._attr_info:
-            if info[1] == aname:
-                t = info[-2]
-                if t[0] == "(":
-                    return _typeinfo_map["ENUM"]
-                else:
-                    return _typeinfo_map[info[-2]]
-        return minidom._no_type
-
-    def getAttributeTypeNS(self, namespaceURI, localName):
-        return minidom._no_type
-
-    def isElementContent(self):
-        if self._model:
-            type = self._model[0]
-            return type not in (expat.model.XML_CTYPE_ANY,
-                                expat.model.XML_CTYPE_MIXED)
-        else:
-            return False
-
-    def isEmpty(self):
-        if self._model:
-            return self._model[0] == expat.model.XML_CTYPE_EMPTY
-        else:
-            return False
-
-    def isId(self, aname):
-        for info in self._attr_info:
-            if info[1] == aname:
-                return info[-2] == "ID"
-        return False
-
-    def isIdNS(self, euri, ename, auri, aname):
-        # not sure this is meaningful
-        return self.isId((auri, aname))
-
-def _intern(builder, s):
-    return builder._intern_setdefault(s, s)
-
-def _parse_ns_name(builder, name):
-    assert ' ' in name
-    parts = name.split(' ')
-    intern = builder._intern_setdefault
-    if len(parts) == 3:
-        uri, localname, prefix = parts
-        prefix = intern(prefix, prefix)
-        qname = "%s:%s" % (prefix, localname)
-        qname = intern(qname, qname)
-        localname = intern(localname, localname)
-    else:
-        uri, localname = parts
-        prefix = EMPTY_PREFIX
-        qname = localname = intern(localname, localname)
-    return intern(uri, uri), localname, prefix, qname
-
-
-class ExpatBuilder:
-    """Document builder that uses Expat to build a ParsedXML.DOM document
-    instance."""
-
-    def __init__(self, options=None):
-        if options is None:
-            options = xmlbuilder.Options()
-        self._options = options
-        if self._options.filter is not None:
-            self._filter = FilterVisibilityController(self._options.filter)
-        else:
-            self._filter = None
-            # This *really* doesn't do anything in this case, so
-            # override it with something fast & minimal.
-            self._finish_start_element = id
-        self._parser = None
-        self.reset()
-
-    def createParser(self):
-        """Create a new parser object."""
-        return expat.ParserCreate()
-
-    def getParser(self):
-        """Return the parser object, creating a new one if needed."""
-        if not self._parser:
-            self._parser = self.createParser()
-            self._intern_setdefault = self._parser.intern.setdefault
-            self._parser.buffer_text = True
-            self._parser.ordered_attributes = True
-            self._parser.specified_attributes = True
-            self.install(self._parser)
-        return self._parser
-
-    def reset(self):
-        """Free all data structures used during DOM construction."""
-        self.document = theDOMImplementation.createDocument(
-            EMPTY_NAMESPACE, None, None)
-        self.curNode = self.document
-        self._elem_info = self.document._elem_info
-        self._cdata = False
-
-    def install(self, parser):
-        """Install the callbacks needed to build the DOM into the parser."""
-        # This creates circular references!
-        parser.StartDoctypeDeclHandler = self.start_doctype_decl_handler
-        parser.StartElementHandler = self.first_element_handler
-        parser.EndElementHandler = self.end_element_handler
-        parser.ProcessingInstructionHandler = self.pi_handler
-        if self._options.entities:
-            parser.EntityDeclHandler = self.entity_decl_handler
-        parser.NotationDeclHandler = self.notation_decl_handler
-        if self._options.comments:
-            parser.CommentHandler = self.comment_handler
-        if self._options.cdata_sections:
-            parser.StartCdataSectionHandler = self.start_cdata_section_handler
-            parser.EndCdataSectionHandler = self.end_cdata_section_handler
-            parser.CharacterDataHandler = self.character_data_handler_cdata
-        else:
-            parser.CharacterDataHandler = self.character_data_handler
-        parser.ExternalEntityRefHandler = self.external_entity_ref_handler
-        parser.XmlDeclHandler = self.xml_decl_handler
-        parser.ElementDeclHandler = self.element_decl_handler
-        parser.AttlistDeclHandler = self.attlist_decl_handler
-
-    def parseFile(self, file):
-        """Parse a document from a file object, returning the document
-        node."""
-        parser = self.getParser()
-        first_buffer = True
-        try:
-            while 1:
-                buffer = file.read(16*1024)
-                if not buffer:
-                    break
-                parser.Parse(buffer, 0)
-                if first_buffer and self.document.documentElement:
-                    self._setup_subset(buffer)
-                first_buffer = False
-            parser.Parse("", True)
-        except ParseEscape:
-            pass
-        doc = self.document
-        self.reset()
-        self._parser = None
-        return doc
-
-    def parseString(self, string):
-        """Parse a document from a string, returning the document node."""
-        parser = self.getParser()
-        try:
-            parser.Parse(string, True)
-            self._setup_subset(string)
-        except ParseEscape:
-            pass
-        doc = self.document
-        self.reset()
-        self._parser = None
-        return doc
-
-    def _setup_subset(self, buffer):
-        """Load the internal subset if there might be one."""
-        if self.document.doctype:
-            extractor = InternalSubsetExtractor()
-            extractor.parseString(buffer)
-            subset = extractor.getSubset()
-            self.document.doctype.internalSubset = subset
-
-    def start_doctype_decl_handler(self, doctypeName, systemId, publicId,
-                                   has_internal_subset):
-        doctype = self.document.implementation.createDocumentType(
-            doctypeName, publicId, systemId)
-        doctype.ownerDocument = self.document
-        _append_child(self.document, doctype)
-        self.document.doctype = doctype
-        if self._filter and self._filter.acceptNode(doctype) == FILTER_REJECT:
-            self.document.doctype = None
-            del self.document.childNodes[-1]
-            doctype = None
-            self._parser.EntityDeclHandler = None
-            self._parser.NotationDeclHandler = None
-        if has_internal_subset:
-            if doctype is not None:
-                doctype.entities._seq = []
-                doctype.notations._seq = []
-            self._parser.CommentHandler = None
-            self._parser.ProcessingInstructionHandler = None
-            self._parser.EndDoctypeDeclHandler = self.end_doctype_decl_handler
-
-    def end_doctype_decl_handler(self):
-        if self._options.comments:
-            self._parser.CommentHandler = self.comment_handler
-        self._parser.ProcessingInstructionHandler = self.pi_handler
-        if not (self._elem_info or self._filter):
-            self._finish_end_element = id
-
-    def pi_handler(self, target, data):
-        node = self.document.createProcessingInstruction(target, data)
-        _append_child(self.curNode, node)
-        if self._filter and self._filter.acceptNode(node) == FILTER_REJECT:
-            self.curNode.removeChild(node)
-
-    def character_data_handler_cdata(self, data):
-        childNodes = self.curNode.childNodes
-        if self._cdata:
-            if (  self._cdata_continue
-                  and childNodes[-1].nodeType == CDATA_SECTION_NODE):
-                childNodes[-1].appendData(data)
-                return
-            node = self.document.createCDATASection(data)
-            self._cdata_continue = True
-        elif childNodes and childNodes[-1].nodeType == TEXT_NODE:
-            node = childNodes[-1]
-            value = node.data + data
-            d = node.__dict__
-            d['data'] = d['nodeValue'] = value
-            return
-        else:
-            node = minidom.Text()
-            d = node.__dict__
-            d['data'] = d['nodeValue'] = data
-            d['ownerDocument'] = self.document
-        _append_child(self.curNode, node)
-
-    def character_data_handler(self, data):
-        childNodes = self.curNode.childNodes
-        if childNodes and childNodes[-1].nodeType == TEXT_NODE:
-            node = childNodes[-1]
-            d = node.__dict__
-            d['data'] = d['nodeValue'] = node.data + data
-            return
-        node = minidom.Text()
-        d = node.__dict__
-        d['data'] = d['nodeValue'] = node.data + data
-        d['ownerDocument'] = self.document
-        _append_child(self.curNode, node)
-
-    def entity_decl_handler(self, entityName, is_parameter_entity, value,
-                            base, systemId, publicId, notationName):
-        if is_parameter_entity:
-            # we don't care about parameter entities for the DOM
-            return
-        if not self._options.entities:
-            return
-        node = self.document._create_entity(entityName, publicId,
-                                            systemId, notationName)
-        if value is not None:
-            # internal entity
-            # node *should* be readonly, but we'll cheat
-            child = self.document.createTextNode(value)
-            node.childNodes.append(child)
-        self.document.doctype.entities._seq.append(node)
-        if self._filter and self._filter.acceptNode(node) == FILTER_REJECT:
-            del self.document.doctype.entities._seq[-1]
-
-    def notation_decl_handler(self, notationName, base, systemId, publicId):
-        node = self.document._create_notation(notationName, publicId, systemId)
-        self.document.doctype.notations._seq.append(node)
-        if self._filter and self._filter.acceptNode(node) == FILTER_ACCEPT:
-            del self.document.doctype.notations._seq[-1]
-
-    def comment_handler(self, data):
-        node = self.document.createComment(data)
-        _append_child(self.curNode, node)
-        if self._filter and self._filter.acceptNode(node) == FILTER_REJECT:
-            self.curNode.removeChild(node)
-
-    def start_cdata_section_handler(self):
-        self._cdata = True
-        self._cdata_continue = False
-
-    def end_cdata_section_handler(self):
-        self._cdata = False
-        self._cdata_continue = False
-
-    def external_entity_ref_handler(self, context, base, systemId, publicId):
-        return 1
-
-    def first_element_handler(self, name, attributes):
-        if self._filter is None and not self._elem_info:
-            self._finish_end_element = id
-        self.getParser().StartElementHandler = self.start_element_handler
-        self.start_element_handler(name, attributes)
-
-    def start_element_handler(self, name, attributes):
-        node = self.document.createElement(name)
-        _append_child(self.curNode, node)
-        self.curNode = node
-
-        if attributes:
-            for i in range(0, len(attributes), 2):
-                a = minidom.Attr(attributes[i], EMPTY_NAMESPACE,
-                                 None, EMPTY_PREFIX)
-                value = attributes[i+1]
-                d = a.childNodes[0].__dict__
-                d['data'] = d['nodeValue'] = value
-                d = a.__dict__
-                d['value'] = d['nodeValue'] = value
-                d['ownerDocument'] = self.document
-                _set_attribute_node(node, a)
-
-        if node is not self.document.documentElement:
-            self._finish_start_element(node)
-
-    def _finish_start_element(self, node):
-        if self._filter:
-            # To be general, we'd have to call isSameNode(), but this
-            # is sufficient for minidom:
-            if node is self.document.documentElement:
-                return
-            filt = self._filter.startContainer(node)
-            if filt == FILTER_REJECT:
-                # ignore this node & all descendents
-                Rejecter(self)
-            elif filt == FILTER_SKIP:
-                # ignore this node, but make it's children become
-                # children of the parent node
-                Skipper(self)
-            else:
-                return
-            self.curNode = node.parentNode
-            node.parentNode.removeChild(node)
-            node.unlink()
-
-    # If this ever changes, Namespaces.end_element_handler() needs to
-    # be changed to match.
-    #
-    def end_element_handler(self, name):
-        curNode = self.curNode
-        self.curNode = curNode.parentNode
-        self._finish_end_element(curNode)
-
-    def _finish_end_element(self, curNode):
-        info = self._elem_info.get(curNode.tagName)
-        if info:
-            self._handle_white_text_nodes(curNode, info)
-        if self._filter:
-            if curNode is self.document.documentElement:
-                return
-            if self._filter.acceptNode(curNode) == FILTER_REJECT:
-                self.curNode.removeChild(curNode)
-                curNode.unlink()
-
-    def _handle_white_text_nodes(self, node, info):
-        if (self._options.whitespace_in_element_content
-            or not info.isElementContent()):
-            return
-
-        # We have element type information and should remove ignorable
-        # whitespace; identify for text nodes which contain only
-        # whitespace.
-        L = []
-        for child in node.childNodes:
-            if child.nodeType == TEXT_NODE and not child.data.strip():
-                L.append(child)
-
-        # Remove ignorable whitespace from the tree.
-        for child in L:
-            node.removeChild(child)
-
-    def element_decl_handler(self, name, model):
-        info = self._elem_info.get(name)
-        if info is None:
-            self._elem_info[name] = ElementInfo(name, model)
-        else:
-            assert info._model is None
-            info._model = model
-
-    def attlist_decl_handler(self, elem, name, type, default, required):
-        info = self._elem_info.get(elem)
-        if info is None:
-            info = ElementInfo(elem)
-            self._elem_info[elem] = info
-        info._attr_info.append(
-            [None, name, None, None, default, 0, type, required])
-
-    def xml_decl_handler(self, version, encoding, standalone):
-        self.document.version = version
-        self.document.encoding = encoding
-        # This is still a little ugly, thanks to the pyexpat API. ;-(
-        if standalone >= 0:
-            if standalone:
-                self.document.standalone = True
-            else:
-                self.document.standalone = False
-
-
-# Don't include FILTER_INTERRUPT, since that's checked separately
-# where allowed.
-_ALLOWED_FILTER_RETURNS = (FILTER_ACCEPT, FILTER_REJECT, FILTER_SKIP)
-
-class FilterVisibilityController(object):
-    """Wrapper around a DOMBuilderFilter which implements the checks
-    to make the whatToShow filter attribute work."""
-
-    __slots__ = 'filter',
-
-    def __init__(self, filter):
-        self.filter = filter
-
-    def startContainer(self, node):
-        mask = self._nodetype_mask[node.nodeType]
-        if self.filter.whatToShow & mask:
-            val = self.filter.startContainer(node)
-            if val == FILTER_INTERRUPT:
-                raise ParseEscape
-            if val not in _ALLOWED_FILTER_RETURNS:
-                raise ValueError, \
-                      "startContainer() returned illegal value: " + repr(val)
-            return val
-        else:
-            return FILTER_ACCEPT
-
-    def acceptNode(self, node):
-        mask = self._nodetype_mask[node.nodeType]
-        if self.filter.whatToShow & mask:
-            val = self.filter.acceptNode(node)
-            if val == FILTER_INTERRUPT:
-                raise ParseEscape
-            if val == FILTER_SKIP:
-                # move all child nodes to the parent, and remove this node
-                parent = node.parentNode
-                for child in node.childNodes[:]:
-                    parent.appendChild(child)
-                # node is handled by the caller
-                return FILTER_REJECT
-            if val not in _ALLOWED_FILTER_RETURNS:
-                raise ValueError, \
-                      "acceptNode() returned illegal value: " + repr(val)
-            return val
-        else:
-            return FILTER_ACCEPT
-
-    _nodetype_mask = {
-        Node.ELEMENT_NODE:                NodeFilter.SHOW_ELEMENT,
-        Node.ATTRIBUTE_NODE:              NodeFilter.SHOW_ATTRIBUTE,
-        Node.TEXT_NODE:                   NodeFilter.SHOW_TEXT,
-        Node.CDATA_SECTION_NODE:          NodeFilter.SHOW_CDATA_SECTION,
-        Node.ENTITY_REFERENCE_NODE:       NodeFilter.SHOW_ENTITY_REFERENCE,
-        Node.ENTITY_NODE:                 NodeFilter.SHOW_ENTITY,
-        Node.PROCESSING_INSTRUCTION_NODE: NodeFilter.SHOW_PROCESSING_INSTRUCTION,
-        Node.COMMENT_NODE:                NodeFilter.SHOW_COMMENT,
-        Node.DOCUMENT_NODE:               NodeFilter.SHOW_DOCUMENT,
-        Node.DOCUMENT_TYPE_NODE:          NodeFilter.SHOW_DOCUMENT_TYPE,
-        Node.DOCUMENT_FRAGMENT_NODE:      NodeFilter.SHOW_DOCUMENT_FRAGMENT,
-        Node.NOTATION_NODE:               NodeFilter.SHOW_NOTATION,
-        }
-
-
-class FilterCrutch(object):
-    __slots__ = '_builder', '_level', '_old_start', '_old_end'
-
-    def __init__(self, builder):
-        self._level = 0
-        self._builder = builder
-        parser = builder._parser
-        self._old_start = parser.StartElementHandler
-        self._old_end = parser.EndElementHandler
-        parser.StartElementHandler = self.start_element_handler
-        parser.EndElementHandler = self.end_element_handler
-
-class Rejecter(FilterCrutch):
-    __slots__ = ()
-
-    def __init__(self, builder):
-        FilterCrutch.__init__(self, builder)
-        parser = builder._parser
-        for name in ("ProcessingInstructionHandler",
-                     "CommentHandler",
-                     "CharacterDataHandler",
-                     "StartCdataSectionHandler",
-                     "EndCdataSectionHandler",
-                     "ExternalEntityRefHandler",
-                     ):
-            setattr(parser, name, None)
-
-    def start_element_handler(self, *args):
-        self._level = self._level + 1
-
-    def end_element_handler(self, *args):
-        if self._level == 0:
-            # restore the old handlers
-            parser = self._builder._parser
-            self._builder.install(parser)
-            parser.StartElementHandler = self._old_start
-            parser.EndElementHandler = self._old_end
-        else:
-            self._level = self._level - 1
-
-class Skipper(FilterCrutch):
-    __slots__ = ()
-
-    def start_element_handler(self, *args):
-        node = self._builder.curNode
-        self._old_start(*args)
-        if self._builder.curNode is not node:
-            self._level = self._level + 1
-
-    def end_element_handler(self, *args):
-        if self._level == 0:
-            # We're popping back out of the node we're skipping, so we
-            # shouldn't need to do anything but reset the handlers.
-            self._builder._parser.StartElementHandler = self._old_start
-            self._builder._parser.EndElementHandler = self._old_end
-            self._builder = None
-        else:
-            self._level = self._level - 1
-            self._old_end(*args)
-
-
-# framework document used by the fragment builder.
-# Takes a string for the doctype, subset string, and namespace attrs string.
-
-_FRAGMENT_BUILDER_INTERNAL_SYSTEM_ID = \
-    "http://xml.python.org/entities/fragment-builder/internal"
-
-_FRAGMENT_BUILDER_TEMPLATE = (
-    '''\
-<!DOCTYPE wrapper
-  %%s [
-  <!ENTITY fragment-builder-internal
-    SYSTEM "%s">
-%%s
-]>
-<wrapper %%s
->&fragment-builder-internal;</wrapper>'''
-    % _FRAGMENT_BUILDER_INTERNAL_SYSTEM_ID)
-
-
-class FragmentBuilder(ExpatBuilder):
-    """Builder which constructs document fragments given XML source
-    text and a context node.
-
-    The context node is expected to provide information about the
-    namespace declarations which are in scope at the start of the
-    fragment.
-    """
-
-    def __init__(self, context, options=None):
-        if context.nodeType == DOCUMENT_NODE:
-            self.originalDocument = context
-            self.context = context
-        else:
-            self.originalDocument = context.ownerDocument
-            self.context = context
-        ExpatBuilder.__init__(self, options)
-
-    def reset(self):
-        ExpatBuilder.reset(self)
-        self.fragment = None
-
-    def parseFile(self, file):
-        """Parse a document fragment from a file object, returning the
-        fragment node."""
-        return self.parseString(file.read())
-
-    def parseString(self, string):
-        """Parse a document fragment from a string, returning the
-        fragment node."""
-        self._source = string
-        parser = self.getParser()
-        doctype = self.originalDocument.doctype
-        ident = ""
-        if doctype:
-            subset = doctype.internalSubset or self._getDeclarations()
-            if doctype.publicId:
-                ident = ('PUBLIC "%s" "%s"'
-                         % (doctype.publicId, doctype.systemId))
-            elif doctype.systemId:
-                ident = 'SYSTEM "%s"' % doctype.systemId
-        else:
-            subset = ""
-        nsattrs = self._getNSattrs() # get ns decls from node's ancestors
-        document = _FRAGMENT_BUILDER_TEMPLATE % (ident, subset, nsattrs)
-        try:
-            parser.Parse(document, 1)
-        except:
-            self.reset()
-            raise
-        fragment = self.fragment
-        self.reset()
-##         self._parser = None
-        return fragment
-
-    def _getDeclarations(self):
-        """Re-create the internal subset from the DocumentType node.
-
-        This is only needed if we don't already have the
-        internalSubset as a string.
-        """
-        doctype = self.context.ownerDocument.doctype
-        s = ""
-        if doctype:
-            for i in range(doctype.notations.length):
-                notation = doctype.notations.item(i)
-                if s:
-                    s = s + "\n  "
-                s = "%s<!NOTATION %s" % (s, notation.nodeName)
-                if notation.publicId:
-                    s = '%s PUBLIC "%s"\n             "%s">' \
-                        % (s, notation.publicId, notation.systemId)
-                else:
-                    s = '%s SYSTEM "%s">' % (s, notation.systemId)
-            for i in range(doctype.entities.length):
-                entity = doctype.entities.item(i)
-                if s:
-                    s = s + "\n  "
-                s = "%s<!ENTITY %s" % (s, entity.nodeName)
-                if entity.publicId:
-                    s = '%s PUBLIC "%s"\n             "%s"' \
-                        % (s, entity.publicId, entity.systemId)
-                elif entity.systemId:
-                    s = '%s SYSTEM "%s"' % (s, entity.systemId)
-                else:
-                    s = '%s "%s"' % (s, entity.firstChild.data)
-                if entity.notationName:
-                    s = "%s NOTATION %s" % (s, entity.notationName)
-                s = s + ">"
-        return s
-
-    def _getNSattrs(self):
-        return ""
-
-    def external_entity_ref_handler(self, context, base, systemId, publicId):
-        if systemId == _FRAGMENT_BUILDER_INTERNAL_SYSTEM_ID:
-            # this entref is the one that we made to put the subtree
-            # in; all of our given input is parsed in here.
-            old_document = self.document
-            old_cur_node = self.curNode
-            parser = self._parser.ExternalEntityParserCreate(context)
-            # put the real document back, parse into the fragment to return
-            self.document = self.originalDocument
-            self.fragment = self.document.createDocumentFragment()
-            self.curNode = self.fragment
-            try:
-                parser.Parse(self._source, 1)
-            finally:
-                self.curNode = old_cur_node
-                self.document = old_document
-                self._source = None
-            return -1
-        else:
-            return ExpatBuilder.external_entity_ref_handler(
-                self, context, base, systemId, publicId)
-
-
-class Namespaces:
-    """Mix-in class for builders; adds support for namespaces."""
-
-    def _initNamespaces(self):
-        # list of (prefix, uri) ns declarations.  Namespace attrs are
-        # constructed from this and added to the element's attrs.
-        self._ns_ordered_prefixes = []
-
-    def createParser(self):
-        """Create a new namespace-handling parser."""
-        parser = expat.ParserCreate(namespace_separator=" ")
-        parser.namespace_prefixes = True
-        return parser
-
-    def install(self, parser):
-        """Insert the namespace-handlers onto the parser."""
-        ExpatBuilder.install(self, parser)
-        if self._options.namespace_declarations:
-            parser.StartNamespaceDeclHandler = (
-                self.start_namespace_decl_handler)
-
-    def start_namespace_decl_handler(self, prefix, uri):
-        """Push this namespace declaration on our storage."""
-        self._ns_ordered_prefixes.append((prefix, uri))
-
-    def start_element_handler(self, name, attributes):
-        if ' ' in name:
-            uri, localname, prefix, qname = _parse_ns_name(self, name)
-        else:
-            uri = EMPTY_NAMESPACE
-            qname = name
-            localname = None
-            prefix = EMPTY_PREFIX
-        node = minidom.Element(qname, uri, prefix, localname)
-        node.ownerDocument = self.document
-        _append_child(self.curNode, node)
-        self.curNode = node
-
-        if self._ns_ordered_prefixes:
-            for prefix, uri in self._ns_ordered_prefixes:
-                if prefix:
-                    a = minidom.Attr(_intern(self, 'xmlns:' + prefix),
-                                     XMLNS_NAMESPACE, prefix, "xmlns")
-                else:
-                    a = minidom.Attr("xmlns", XMLNS_NAMESPACE,
-                                     "xmlns", EMPTY_PREFIX)
-                d = a.childNodes[0].__dict__
-                d['data'] = d['nodeValue'] = uri
-                d = a.__dict__
-                d['value'] = d['nodeValue'] = uri
-                d['ownerDocument'] = self.document
-                _set_attribute_node(node, a)
-            del self._ns_ordered_prefixes[:]
-
-        if attributes:
-            _attrs = node._attrs
-            _attrsNS = node._attrsNS
-            for i in range(0, len(attributes), 2):
-                aname = attributes[i]
-                value = attributes[i+1]
-                if ' ' in aname:
-                    uri, localname, prefix, qname = _parse_ns_name(self, aname)
-                    a = minidom.Attr(qname, uri, localname, prefix)
-                    _attrs[qname] = a
-                    _attrsNS[(uri, localname)] = a
-                else:
-                    a = minidom.Attr(aname, EMPTY_NAMESPACE,
-                                     aname, EMPTY_PREFIX)
-                    _attrs[aname] = a
-                    _attrsNS[(EMPTY_NAMESPACE, aname)] = a
-                d = a.childNodes[0].__dict__
-                d['data'] = d['nodeValue'] = value
-                d = a.__dict__
-                d['ownerDocument'] = self.document
-                d['value'] = d['nodeValue'] = value
-                d['ownerElement'] = node
-
-    if __debug__:
-        # This only adds some asserts to the original
-        # end_element_handler(), so we only define this when -O is not
-        # used.  If changing one, be sure to check the other to see if
-        # it needs to be changed as well.
-        #
-        def end_element_handler(self, name):
-            curNode = self.curNode
-            if ' ' in name:
-                uri, localname, prefix, qname = _parse_ns_name(self, name)
-                assert (curNode.namespaceURI == uri
-                        and curNode.localName == localname
-                        and curNode.prefix == prefix), \
-                        "element stack messed up! (namespace)"
-            else:
-                assert curNode.nodeName == name, \
-                       "element stack messed up - bad nodeName"
-                assert curNode.namespaceURI == EMPTY_NAMESPACE, \
-                       "element stack messed up - bad namespaceURI"
-            self.curNode = curNode.parentNode
-            self._finish_end_element(curNode)
-
-
-class ExpatBuilderNS(Namespaces, ExpatBuilder):
-    """Document builder that supports namespaces."""
-
-    def reset(self):
-        ExpatBuilder.reset(self)
-        self._initNamespaces()
-
-
-class FragmentBuilderNS(Namespaces, FragmentBuilder):
-    """Fragment builder that supports namespaces."""
-
-    def reset(self):
-        FragmentBuilder.reset(self)
-        self._initNamespaces()
-
-    def _getNSattrs(self):
-        """Return string of namespace attributes from this element and
-        ancestors."""
-        # XXX This needs to be re-written to walk the ancestors of the
-        # context to build up the namespace information from
-        # declarations, elements, and attributes found in context.
-        # Otherwise we have to store a bunch more data on the DOM
-        # (though that *might* be more reliable -- not clear).
-        attrs = ""
-        context = self.context
-        L = []
-        while context:
-            if hasattr(context, '_ns_prefix_uri'):
-                for prefix, uri in context._ns_prefix_uri.items():
-                    # add every new NS decl from context to L and attrs string
-                    if prefix in L:
-                        continue
-                    L.append(prefix)
-                    if prefix:
-                        declname = "xmlns:" + prefix
-                    else:
-                        declname = "xmlns"
-                    if attrs:
-                        attrs = "%s\n    %s='%s'" % (attrs, declname, uri)
-                    else:
-                        attrs = " %s='%s'" % (declname, uri)
-            context = context.parentNode
-        return attrs
-
-
-class ParseEscape(Exception):
-    """Exception raised to short-circuit parsing in InternalSubsetExtractor."""
-    pass
-
-class InternalSubsetExtractor(ExpatBuilder):
-    """XML processor which can rip out the internal document type subset."""
-
-    subset = None
-
-    def getSubset(self):
-        """Return the internal subset as a string."""
-        return self.subset
-
-    def parseFile(self, file):
-        try:
-            ExpatBuilder.parseFile(self, file)
-        except ParseEscape:
-            pass
-
-    def parseString(self, string):
-        try:
-            ExpatBuilder.parseString(self, string)
-        except ParseEscape:
-            pass
-
-    def install(self, parser):
-        parser.StartDoctypeDeclHandler = self.start_doctype_decl_handler
-        parser.StartElementHandler = self.start_element_handler
-
-    def start_doctype_decl_handler(self, name, publicId, systemId,
-                                   has_internal_subset):
-        if has_internal_subset:
-            parser = self.getParser()
-            self.subset = []
-            parser.DefaultHandler = self.subset.append
-            parser.EndDoctypeDeclHandler = self.end_doctype_decl_handler
-        else:
-            raise ParseEscape()
-
-    def end_doctype_decl_handler(self):
-        s = ''.join(self.subset).replace('\r\n', '\n').replace('\r', '\n')
-        self.subset = s
-        raise ParseEscape()
-
-    def start_element_handler(self, name, attrs):
-        raise ParseEscape()
-
-
-def parse(file, namespaces=True):
-    """Parse a document, returning the resulting Document node.
-
-    'file' may be either a file name or an open file object.
-    """
-    if namespaces:
-        builder = ExpatBuilderNS()
-    else:
-        builder = ExpatBuilder()
-
-    if isinstance(file, StringTypes):
-        fp = open(file, 'rb')
-        try:
-            result = builder.parseFile(fp)
-        finally:
-            fp.close()
-    else:
-        result = builder.parseFile(file)
-    return result
-
-
-def parseString(string, namespaces=True):
-    """Parse a document from a string, returning the resulting
-    Document node.
-    """
-    if namespaces:
-        builder = ExpatBuilderNS()
-    else:
-        builder = ExpatBuilder()
-    return builder.parseString(string)
-
-
-def parseFragment(file, context, namespaces=True):
-    """Parse a fragment of a document, given the context from which it
-    was originally extracted.  context should be the parent of the
-    node(s) which are in the fragment.
-
-    'file' may be either a file name or an open file object.
-    """
-    if namespaces:
-        builder = FragmentBuilderNS(context)
-    else:
-        builder = FragmentBuilder(context)
-
-    if isinstance(file, StringTypes):
-        fp = open(file, 'rb')
-        try:
-            result = builder.parseFile(fp)
-        finally:
-            fp.close()
-    else:
-        result = builder.parseFile(file)
-    return result
-
-
-def parseFragmentString(string, context, namespaces=True):
-    """Parse a fragment of a document from a string, given the context
-    from which it was originally extracted.  context should be the
-    parent of the node(s) which are in the fragment.
-    """
-    if namespaces:
-        builder = FragmentBuilderNS(context)
-    else:
-        builder = FragmentBuilder(context)
-    return builder.parseString(string)
-
-
-def makeBuilder(options):
-    """Create a builder based on an Options object."""
-    if options.namespaces:
-        return ExpatBuilderNS(options)
-    else:
-        return ExpatBuilder(options)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/minicompat.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/minicompat.py
deleted file mode 100644
index a5fcee0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/minicompat.py
+++ /dev/null
@@ -1,110 +0,0 @@
-"""Python version compatibility support for minidom."""
-
-# This module should only be imported using "import *".
-#
-# The following names are defined:
-#
-#   NodeList      -- lightest possible NodeList implementation
-#
-#   EmptyNodeList -- lightest possible NodeList that is guaranteed to
-#                    remain empty (immutable)
-#
-#   StringTypes   -- tuple of defined string types
-#
-#   defproperty   -- function used in conjunction with GetattrMagic;
-#                    using these together is needed to make them work
-#                    as efficiently as possible in both Python 2.2+
-#                    and older versions.  For example:
-#
-#                        class MyClass(GetattrMagic):
-#                            def _get_myattr(self):
-#                                return something
-#
-#                        defproperty(MyClass, "myattr",
-#                                    "return some value")
-#
-#                    For Python 2.2 and newer, this will construct a
-#                    property object on the class, which avoids
-#                    needing to override __getattr__().  It will only
-#                    work for read-only attributes.
-#
-#                    For older versions of Python, inheriting from
-#                    GetattrMagic will use the traditional
-#                    __getattr__() hackery to achieve the same effect,
-#                    but less efficiently.
-#
-#                    defproperty() should be used for each version of
-#                    the relevant _get_<property>() function.
-
-__all__ = ["NodeList", "EmptyNodeList", "StringTypes", "defproperty"]
-
-import xml.dom
-
-try:
-    unicode
-except NameError:
-    StringTypes = type(''),
-else:
-    StringTypes = type(''), type(unicode(''))
-
-
-class NodeList(list):
-    __slots__ = ()
-
-    def item(self, index):
-        if 0 <= index < len(self):
-            return self[index]
-
-    def _get_length(self):
-        return len(self)
-
-    def _set_length(self, value):
-        raise xml.dom.NoModificationAllowedErr(
-            "attempt to modify read-only attribute 'length'")
-
-    length = property(_get_length, _set_length,
-                      doc="The number of nodes in the NodeList.")
-
-    def __getstate__(self):
-        return list(self)
-
-    def __setstate__(self, state):
-        self[:] = state
-
-
-class EmptyNodeList(tuple):
-    __slots__ = ()
-
-    def __add__(self, other):
-        NL = NodeList()
-        NL.extend(other)
-        return NL
-
-    def __radd__(self, other):
-        NL = NodeList()
-        NL.extend(other)
-        return NL
-
-    def item(self, index):
-        return None
-
-    def _get_length(self):
-        return 0
-
-    def _set_length(self, value):
-        raise xml.dom.NoModificationAllowedErr(
-            "attempt to modify read-only attribute 'length'")
-
-    length = property(_get_length, _set_length,
-                      doc="The number of nodes in the NodeList.")
-
-
-def defproperty(klass, name, doc):
-    get = getattr(klass, ("_get_" + name)).im_func
-    def set(self, value, name=name):
-        raise xml.dom.NoModificationAllowedErr(
-            "attempt to modify read-only attribute " + repr(name))
-    assert not hasattr(klass, "_set_" + name), \
-           "expected not to find _set_" + name
-    prop = property(get, set, doc=doc)
-    setattr(klass, name, prop)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/minidom.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/minidom.py
deleted file mode 100644
index ab12a40..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/minidom.py
+++ /dev/null
@@ -1,1937 +0,0 @@
-"""\
-minidom.py -- a lightweight DOM implementation.
-
-parse("foo.xml")
-
-parseString("<foo><bar/></foo>")
-
-Todo:
-=====
- * convenience methods for getting elements and text.
- * more testing
- * bring some of the writer and linearizer code into conformance with this
-        interface
- * SAX 2 namespaces
-"""
-
-import xml.dom
-
-from xml.dom import EMPTY_NAMESPACE, EMPTY_PREFIX, XMLNS_NAMESPACE, domreg
-from xml.dom.minicompat import *
-from xml.dom.xmlbuilder import DOMImplementationLS, DocumentLS
-
-# This is used by the ID-cache invalidation checks; the list isn't
-# actually complete, since the nodes being checked will never be the
-# DOCUMENT_NODE or DOCUMENT_FRAGMENT_NODE.  (The node being checked is
-# the node being added or removed, not the node being modified.)
-#
-_nodeTypes_with_children = (xml.dom.Node.ELEMENT_NODE,
-                            xml.dom.Node.ENTITY_REFERENCE_NODE)
-
-
-class Node(xml.dom.Node):
-    namespaceURI = None # this is non-null only for elements and attributes
-    parentNode = None
-    ownerDocument = None
-    nextSibling = None
-    previousSibling = None
-
-    prefix = EMPTY_PREFIX # non-null only for NS elements and attributes
-
-    def __nonzero__(self):
-        return True
-
-    def toxml(self, encoding = None):
-        return self.toprettyxml("", "", encoding)
-
-    def toprettyxml(self, indent="\t", newl="\n", encoding = None):
-        # indent = the indentation string to prepend, per level
-        # newl = the newline string to append
-        writer = _get_StringIO()
-        if encoding is not None:
-            import codecs
-            # Can't use codecs.getwriter to preserve 2.0 compatibility
-            writer = codecs.lookup(encoding)[3](writer)
-        if self.nodeType == Node.DOCUMENT_NODE:
-            # Can pass encoding only to document, to put it into XML header
-            self.writexml(writer, "", indent, newl, encoding)
-        else:
-            self.writexml(writer, "", indent, newl)
-        return writer.getvalue()
-
-    def hasChildNodes(self):
-        if self.childNodes:
-            return True
-        else:
-            return False
-
-    def _get_childNodes(self):
-        return self.childNodes
-
-    def _get_firstChild(self):
-        if self.childNodes:
-            return self.childNodes[0]
-
-    def _get_lastChild(self):
-        if self.childNodes:
-            return self.childNodes[-1]
-
-    def insertBefore(self, newChild, refChild):
-        if newChild.nodeType == self.DOCUMENT_FRAGMENT_NODE:
-            for c in tuple(newChild.childNodes):
-                self.insertBefore(c, refChild)
-            ### The DOM does not clearly specify what to return in this case
-            return newChild
-        if newChild.nodeType not in self._child_node_types:
-            raise xml.dom.HierarchyRequestErr(
-                "%s cannot be child of %s" % (repr(newChild), repr(self)))
-        if newChild.parentNode is not None:
-            newChild.parentNode.removeChild(newChild)
-        if refChild is None:
-            self.appendChild(newChild)
-        else:
-            try:
-                index = self.childNodes.index(refChild)
-            except ValueError:
-                raise xml.dom.NotFoundErr()
-            if newChild.nodeType in _nodeTypes_with_children:
-                _clear_id_cache(self)
-            self.childNodes.insert(index, newChild)
-            newChild.nextSibling = refChild
-            refChild.previousSibling = newChild
-            if index:
-                node = self.childNodes[index-1]
-                node.nextSibling = newChild
-                newChild.previousSibling = node
-            else:
-                newChild.previousSibling = None
-            newChild.parentNode = self
-        return newChild
-
-    def appendChild(self, node):
-        if node.nodeType == self.DOCUMENT_FRAGMENT_NODE:
-            for c in tuple(node.childNodes):
-                self.appendChild(c)
-            ### The DOM does not clearly specify what to return in this case
-            return node
-        if node.nodeType not in self._child_node_types:
-            raise xml.dom.HierarchyRequestErr(
-                "%s cannot be child of %s" % (repr(node), repr(self)))
-        elif node.nodeType in _nodeTypes_with_children:
-            _clear_id_cache(self)
-        if node.parentNode is not None:
-            node.parentNode.removeChild(node)
-        _append_child(self, node)
-        node.nextSibling = None
-        return node
-
-    def replaceChild(self, newChild, oldChild):
-        if newChild.nodeType == self.DOCUMENT_FRAGMENT_NODE:
-            refChild = oldChild.nextSibling
-            self.removeChild(oldChild)
-            return self.insertBefore(newChild, refChild)
-        if newChild.nodeType not in self._child_node_types:
-            raise xml.dom.HierarchyRequestErr(
-                "%s cannot be child of %s" % (repr(newChild), repr(self)))
-        if newChild is oldChild:
-            return
-        if newChild.parentNode is not None:
-            newChild.parentNode.removeChild(newChild)
-        try:
-            index = self.childNodes.index(oldChild)
-        except ValueError:
-            raise xml.dom.NotFoundErr()
-        self.childNodes[index] = newChild
-        newChild.parentNode = self
-        oldChild.parentNode = None
-        if (newChild.nodeType in _nodeTypes_with_children
-            or oldChild.nodeType in _nodeTypes_with_children):
-            _clear_id_cache(self)
-        newChild.nextSibling = oldChild.nextSibling
-        newChild.previousSibling = oldChild.previousSibling
-        oldChild.nextSibling = None
-        oldChild.previousSibling = None
-        if newChild.previousSibling:
-            newChild.previousSibling.nextSibling = newChild
-        if newChild.nextSibling:
-            newChild.nextSibling.previousSibling = newChild
-        return oldChild
-
-    def removeChild(self, oldChild):
-        try:
-            self.childNodes.remove(oldChild)
-        except ValueError:
-            raise xml.dom.NotFoundErr()
-        if oldChild.nextSibling is not None:
-            oldChild.nextSibling.previousSibling = oldChild.previousSibling
-        if oldChild.previousSibling is not None:
-            oldChild.previousSibling.nextSibling = oldChild.nextSibling
-        oldChild.nextSibling = oldChild.previousSibling = None
-        if oldChild.nodeType in _nodeTypes_with_children:
-            _clear_id_cache(self)
-
-        oldChild.parentNode = None
-        return oldChild
-
-    def normalize(self):
-        L = []
-        for child in self.childNodes:
-            if child.nodeType == Node.TEXT_NODE:
-                if not child.data:
-                    # empty text node; discard
-                    if L:
-                        L[-1].nextSibling = child.nextSibling
-                    if child.nextSibling:
-                        child.nextSibling.previousSibling = child.previousSibling
-                    child.unlink()
-                elif L and L[-1].nodeType == child.nodeType:
-                    # collapse text node
-                    node = L[-1]
-                    node.data = node.data + child.data
-                    node.nextSibling = child.nextSibling
-                    if child.nextSibling:
-                        child.nextSibling.previousSibling = node
-                    child.unlink()
-                else:
-                    L.append(child)
-            else:
-                L.append(child)
-                if child.nodeType == Node.ELEMENT_NODE:
-                    child.normalize()
-        self.childNodes[:] = L
-
-    def cloneNode(self, deep):
-        return _clone_node(self, deep, self.ownerDocument or self)
-
-    def isSupported(self, feature, version):
-        return self.ownerDocument.implementation.hasFeature(feature, version)
-
-    def _get_localName(self):
-        # Overridden in Element and Attr where localName can be Non-Null
-        return None
-
-    # Node interfaces from Level 3 (WD 9 April 2002)
-
-    def isSameNode(self, other):
-        return self is other
-
-    def getInterface(self, feature):
-        if self.isSupported(feature, None):
-            return self
-        else:
-            return None
-
-    # The "user data" functions use a dictionary that is only present
-    # if some user data has been set, so be careful not to assume it
-    # exists.
-
-    def getUserData(self, key):
-        try:
-            return self._user_data[key][0]
-        except (AttributeError, KeyError):
-            return None
-
-    def setUserData(self, key, data, handler):
-        old = None
-        try:
-            d = self._user_data
-        except AttributeError:
-            d = {}
-            self._user_data = d
-        if key in d:
-            old = d[key][0]
-        if data is None:
-            # ignore handlers passed for None
-            handler = None
-            if old is not None:
-                del d[key]
-        else:
-            d[key] = (data, handler)
-        return old
-
-    def _call_user_data_handler(self, operation, src, dst):
-        if hasattr(self, "_user_data"):
-            for key, (data, handler) in self._user_data.items():
-                if handler is not None:
-                    handler.handle(operation, key, data, src, dst)
-
-    # minidom-specific API:
-
-    def unlink(self):
-        self.parentNode = self.ownerDocument = None
-        if self.childNodes:
-            for child in self.childNodes:
-                child.unlink()
-            self.childNodes = NodeList()
-        self.previousSibling = None
-        self.nextSibling = None
-
-defproperty(Node, "firstChild", doc="First child node, or None.")
-defproperty(Node, "lastChild",  doc="Last child node, or None.")
-defproperty(Node, "localName",  doc="Namespace-local name of this node.")
-
-
-def _append_child(self, node):
-    # fast path with less checks; usable by DOM builders if careful
-    childNodes = self.childNodes
-    if childNodes:
-        last = childNodes[-1]
-        node.__dict__["previousSibling"] = last
-        last.__dict__["nextSibling"] = node
-    childNodes.append(node)
-    node.__dict__["parentNode"] = self
-
-def _in_document(node):
-    # return True iff node is part of a document tree
-    while node is not None:
-        if node.nodeType == Node.DOCUMENT_NODE:
-            return True
-        node = node.parentNode
-    return False
-
-def _write_data(writer, data):
-    "Writes datachars to writer."
-    if data:
-        data = data.replace("&", "&amp;").replace("<", "&lt;"). \
-                    replace("\"", "&quot;").replace(">", "&gt;")
-        writer.write(data)
-
-def _get_elements_by_tagName_helper(parent, name, rc):
-    for node in parent.childNodes:
-        if node.nodeType == Node.ELEMENT_NODE and \
-            (name == "*" or node.tagName == name):
-            rc.append(node)
-        _get_elements_by_tagName_helper(node, name, rc)
-    return rc
-
-def _get_elements_by_tagName_ns_helper(parent, nsURI, localName, rc):
-    for node in parent.childNodes:
-        if node.nodeType == Node.ELEMENT_NODE:
-            if ((localName == "*" or node.localName == localName) and
-                (nsURI == "*" or node.namespaceURI == nsURI)):
-                rc.append(node)
-            _get_elements_by_tagName_ns_helper(node, nsURI, localName, rc)
-    return rc
-
-class DocumentFragment(Node):
-    nodeType = Node.DOCUMENT_FRAGMENT_NODE
-    nodeName = "#document-fragment"
-    nodeValue = None
-    attributes = None
-    parentNode = None
-    _child_node_types = (Node.ELEMENT_NODE,
-                         Node.TEXT_NODE,
-                         Node.CDATA_SECTION_NODE,
-                         Node.ENTITY_REFERENCE_NODE,
-                         Node.PROCESSING_INSTRUCTION_NODE,
-                         Node.COMMENT_NODE,
-                         Node.NOTATION_NODE)
-
-    def __init__(self):
-        self.childNodes = NodeList()
-
-
-class Attr(Node):
-    nodeType = Node.ATTRIBUTE_NODE
-    attributes = None
-    ownerElement = None
-    specified = False
-    _is_id = False
-
-    _child_node_types = (Node.TEXT_NODE, Node.ENTITY_REFERENCE_NODE)
-
-    def __init__(self, qName, namespaceURI=EMPTY_NAMESPACE, localName=None,
-                 prefix=None):
-        # skip setattr for performance
-        d = self.__dict__
-        d["nodeName"] = d["name"] = qName
-        d["namespaceURI"] = namespaceURI
-        d["prefix"] = prefix
-        d['childNodes'] = NodeList()
-
-        # Add the single child node that represents the value of the attr
-        self.childNodes.append(Text())
-
-        # nodeValue and value are set elsewhere
-
-    def _get_localName(self):
-        return self.nodeName.split(":", 1)[-1]
-
-    def _get_name(self):
-        return self.name
-
-    def _get_specified(self):
-        return self.specified
-
-    def __setattr__(self, name, value):
-        d = self.__dict__
-        if name in ("value", "nodeValue"):
-            d["value"] = d["nodeValue"] = value
-            d2 = self.childNodes[0].__dict__
-            d2["data"] = d2["nodeValue"] = value
-            if self.ownerElement is not None:
-                _clear_id_cache(self.ownerElement)
-        elif name in ("name", "nodeName"):
-            d["name"] = d["nodeName"] = value
-            if self.ownerElement is not None:
-                _clear_id_cache(self.ownerElement)
-        else:
-            d[name] = value
-
-    def _set_prefix(self, prefix):
-        nsuri = self.namespaceURI
-        if prefix == "xmlns":
-            if nsuri and nsuri != XMLNS_NAMESPACE:
-                raise xml.dom.NamespaceErr(
-                    "illegal use of 'xmlns' prefix for the wrong namespace")
-        d = self.__dict__
-        d['prefix'] = prefix
-        if prefix is None:
-            newName = self.localName
-        else:
-            newName = "%s:%s" % (prefix, self.localName)
-        if self.ownerElement:
-            _clear_id_cache(self.ownerElement)
-        d['nodeName'] = d['name'] = newName
-
-    def _set_value(self, value):
-        d = self.__dict__
-        d['value'] = d['nodeValue'] = value
-        if self.ownerElement:
-            _clear_id_cache(self.ownerElement)
-        self.childNodes[0].data = value
-
-    def unlink(self):
-        # This implementation does not call the base implementation
-        # since most of that is not needed, and the expense of the
-        # method call is not warranted.  We duplicate the removal of
-        # children, but that's all we needed from the base class.
-        elem = self.ownerElement
-        if elem is not None:
-            del elem._attrs[self.nodeName]
-            del elem._attrsNS[(self.namespaceURI, self.localName)]
-            if self._is_id:
-                self._is_id = False
-                elem._magic_id_nodes -= 1
-                self.ownerDocument._magic_id_count -= 1
-        for child in self.childNodes:
-            child.unlink()
-        del self.childNodes[:]
-
-    def _get_isId(self):
-        if self._is_id:
-            return True
-        doc = self.ownerDocument
-        elem = self.ownerElement
-        if doc is None or elem is None:
-            return False
-
-        info = doc._get_elem_info(elem)
-        if info is None:
-            return False
-        if self.namespaceURI:
-            return info.isIdNS(self.namespaceURI, self.localName)
-        else:
-            return info.isId(self.nodeName)
-
-    def _get_schemaType(self):
-        doc = self.ownerDocument
-        elem = self.ownerElement
-        if doc is None or elem is None:
-            return _no_type
-
-        info = doc._get_elem_info(elem)
-        if info is None:
-            return _no_type
-        if self.namespaceURI:
-            return info.getAttributeTypeNS(self.namespaceURI, self.localName)
-        else:
-            return info.getAttributeType(self.nodeName)
-
-defproperty(Attr, "isId",       doc="True if this attribute is an ID.")
-defproperty(Attr, "localName",  doc="Namespace-local name of this attribute.")
-defproperty(Attr, "schemaType", doc="Schema type for this attribute.")
-
-
-class NamedNodeMap(object):
-    """The attribute list is a transient interface to the underlying
-    dictionaries.  Mutations here will change the underlying element's
-    dictionary.
-
-    Ordering is imposed artificially and does not reflect the order of
-    attributes as found in an input document.
-    """
-
-    __slots__ = ('_attrs', '_attrsNS', '_ownerElement')
-
-    def __init__(self, attrs, attrsNS, ownerElement):
-        self._attrs = attrs
-        self._attrsNS = attrsNS
-        self._ownerElement = ownerElement
-
-    def _get_length(self):
-        return len(self._attrs)
-
-    def item(self, index):
-        try:
-            return self[self._attrs.keys()[index]]
-        except IndexError:
-            return None
-
-    def items(self):
-        L = []
-        for node in self._attrs.values():
-            L.append((node.nodeName, node.value))
-        return L
-
-    def itemsNS(self):
-        L = []
-        for node in self._attrs.values():
-            L.append(((node.namespaceURI, node.localName), node.value))
-        return L
-
-    def has_key(self, key):
-        if isinstance(key, StringTypes):
-            return key in self._attrs
-        else:
-            return key in self._attrsNS
-
-    def keys(self):
-        return self._attrs.keys()
-
-    def keysNS(self):
-        return self._attrsNS.keys()
-
-    def values(self):
-        return self._attrs.values()
-
-    def get(self, name, value=None):
-        return self._attrs.get(name, value)
-
-    __len__ = _get_length
-
-    __hash__ = None # Mutable type can't be correctly hashed
-    def __cmp__(self, other):
-        if self._attrs is getattr(other, "_attrs", None):
-            return 0
-        else:
-            return cmp(id(self), id(other))
-
-    def __getitem__(self, attname_or_tuple):
-        if isinstance(attname_or_tuple, tuple):
-            return self._attrsNS[attname_or_tuple]
-        else:
-            return self._attrs[attname_or_tuple]
-
-    # same as set
-    def __setitem__(self, attname, value):
-        if isinstance(value, StringTypes):
-            try:
-                node = self._attrs[attname]
-            except KeyError:
-                node = Attr(attname)
-                node.ownerDocument = self._ownerElement.ownerDocument
-                self.setNamedItem(node)
-            node.value = value
-        else:
-            if not isinstance(value, Attr):
-                raise TypeError, "value must be a string or Attr object"
-            node = value
-            self.setNamedItem(node)
-
-    def getNamedItem(self, name):
-        try:
-            return self._attrs[name]
-        except KeyError:
-            return None
-
-    def getNamedItemNS(self, namespaceURI, localName):
-        try:
-            return self._attrsNS[(namespaceURI, localName)]
-        except KeyError:
-            return None
-
-    def removeNamedItem(self, name):
-        n = self.getNamedItem(name)
-        if n is not None:
-            _clear_id_cache(self._ownerElement)
-            del self._attrs[n.nodeName]
-            del self._attrsNS[(n.namespaceURI, n.localName)]
-            if 'ownerElement' in n.__dict__:
-                n.__dict__['ownerElement'] = None
-            return n
-        else:
-            raise xml.dom.NotFoundErr()
-
-    def removeNamedItemNS(self, namespaceURI, localName):
-        n = self.getNamedItemNS(namespaceURI, localName)
-        if n is not None:
-            _clear_id_cache(self._ownerElement)
-            del self._attrsNS[(n.namespaceURI, n.localName)]
-            del self._attrs[n.nodeName]
-            if 'ownerElement' in n.__dict__:
-                n.__dict__['ownerElement'] = None
-            return n
-        else:
-            raise xml.dom.NotFoundErr()
-
-    def setNamedItem(self, node):
-        if not isinstance(node, Attr):
-            raise xml.dom.HierarchyRequestErr(
-                "%s cannot be child of %s" % (repr(node), repr(self)))
-        old = self._attrs.get(node.name)
-        if old:
-            old.unlink()
-        self._attrs[node.name] = node
-        self._attrsNS[(node.namespaceURI, node.localName)] = node
-        node.ownerElement = self._ownerElement
-        _clear_id_cache(node.ownerElement)
-        return old
-
-    def setNamedItemNS(self, node):
-        return self.setNamedItem(node)
-
-    def __delitem__(self, attname_or_tuple):
-        node = self[attname_or_tuple]
-        _clear_id_cache(node.ownerElement)
-        node.unlink()
-
-    def __getstate__(self):
-        return self._attrs, self._attrsNS, self._ownerElement
-
-    def __setstate__(self, state):
-        self._attrs, self._attrsNS, self._ownerElement = state
-
-defproperty(NamedNodeMap, "length",
-            doc="Number of nodes in the NamedNodeMap.")
-
-AttributeList = NamedNodeMap
-
-
-class TypeInfo(object):
-    __slots__ = 'namespace', 'name'
-
-    def __init__(self, namespace, name):
-        self.namespace = namespace
-        self.name = name
-
-    def __repr__(self):
-        if self.namespace:
-            return "<TypeInfo %r (from %r)>" % (self.name, self.namespace)
-        else:
-            return "<TypeInfo %r>" % self.name
-
-    def _get_name(self):
-        return self.name
-
-    def _get_namespace(self):
-        return self.namespace
-
-_no_type = TypeInfo(None, None)
-
-class Element(Node):
-    nodeType = Node.ELEMENT_NODE
-    nodeValue = None
-    schemaType = _no_type
-
-    _magic_id_nodes = 0
-
-    _child_node_types = (Node.ELEMENT_NODE,
-                         Node.PROCESSING_INSTRUCTION_NODE,
-                         Node.COMMENT_NODE,
-                         Node.TEXT_NODE,
-                         Node.CDATA_SECTION_NODE,
-                         Node.ENTITY_REFERENCE_NODE)
-
-    def __init__(self, tagName, namespaceURI=EMPTY_NAMESPACE, prefix=None,
-                 localName=None):
-        self.tagName = self.nodeName = tagName
-        self.prefix = prefix
-        self.namespaceURI = namespaceURI
-        self.childNodes = NodeList()
-
-        self._attrs = {}   # attributes are double-indexed:
-        self._attrsNS = {} #    tagName -> Attribute
-                           #    URI,localName -> Attribute
-                           # in the future: consider lazy generation
-                           # of attribute objects this is too tricky
-                           # for now because of headaches with
-                           # namespaces.
-
-    def _get_localName(self):
-        return self.tagName.split(":", 1)[-1]
-
-    def _get_tagName(self):
-        return self.tagName
-
-    def unlink(self):
-        for attr in self._attrs.values():
-            attr.unlink()
-        self._attrs = None
-        self._attrsNS = None
-        Node.unlink(self)
-
-    def getAttribute(self, attname):
-        try:
-            return self._attrs[attname].value
-        except KeyError:
-            return ""
-
-    def getAttributeNS(self, namespaceURI, localName):
-        try:
-            return self._attrsNS[(namespaceURI, localName)].value
-        except KeyError:
-            return ""
-
-    def setAttribute(self, attname, value):
-        attr = self.getAttributeNode(attname)
-        if attr is None:
-            attr = Attr(attname)
-            # for performance
-            d = attr.__dict__
-            d["value"] = d["nodeValue"] = value
-            d["ownerDocument"] = self.ownerDocument
-            self.setAttributeNode(attr)
-        elif value != attr.value:
-            d = attr.__dict__
-            d["value"] = d["nodeValue"] = value
-            if attr.isId:
-                _clear_id_cache(self)
-
-    def setAttributeNS(self, namespaceURI, qualifiedName, value):
-        prefix, localname = _nssplit(qualifiedName)
-        attr = self.getAttributeNodeNS(namespaceURI, localname)
-        if attr is None:
-            # for performance
-            attr = Attr(qualifiedName, namespaceURI, localname, prefix)
-            d = attr.__dict__
-            d["prefix"] = prefix
-            d["nodeName"] = qualifiedName
-            d["value"] = d["nodeValue"] = value
-            d["ownerDocument"] = self.ownerDocument
-            self.setAttributeNode(attr)
-        else:
-            d = attr.__dict__
-            if value != attr.value:
-                d["value"] = d["nodeValue"] = value
-                if attr.isId:
-                    _clear_id_cache(self)
-            if attr.prefix != prefix:
-                d["prefix"] = prefix
-                d["nodeName"] = qualifiedName
-
-    def getAttributeNode(self, attrname):
-        return self._attrs.get(attrname)
-
-    def getAttributeNodeNS(self, namespaceURI, localName):
-        return self._attrsNS.get((namespaceURI, localName))
-
-    def setAttributeNode(self, attr):
-        if attr.ownerElement not in (None, self):
-            raise xml.dom.InuseAttributeErr("attribute node already owned")
-        old1 = self._attrs.get(attr.name, None)
-        if old1 is not None:
-            self.removeAttributeNode(old1)
-        old2 = self._attrsNS.get((attr.namespaceURI, attr.localName), None)
-        if old2 is not None and old2 is not old1:
-            self.removeAttributeNode(old2)
-        _set_attribute_node(self, attr)
-
-        if old1 is not attr:
-            # It might have already been part of this node, in which case
-            # it doesn't represent a change, and should not be returned.
-            return old1
-        if old2 is not attr:
-            return old2
-
-    setAttributeNodeNS = setAttributeNode
-
-    def removeAttribute(self, name):
-        try:
-            attr = self._attrs[name]
-        except KeyError:
-            raise xml.dom.NotFoundErr()
-        self.removeAttributeNode(attr)
-
-    def removeAttributeNS(self, namespaceURI, localName):
-        try:
-            attr = self._attrsNS[(namespaceURI, localName)]
-        except KeyError:
-            raise xml.dom.NotFoundErr()
-        self.removeAttributeNode(attr)
-
-    def removeAttributeNode(self, node):
-        if node is None:
-            raise xml.dom.NotFoundErr()
-        try:
-            self._attrs[node.name]
-        except KeyError:
-            raise xml.dom.NotFoundErr()
-        _clear_id_cache(self)
-        node.unlink()
-        # Restore this since the node is still useful and otherwise
-        # unlinked
-        node.ownerDocument = self.ownerDocument
-
-    removeAttributeNodeNS = removeAttributeNode
-
-    def hasAttribute(self, name):
-        return name in self._attrs
-
-    def hasAttributeNS(self, namespaceURI, localName):
-        return (namespaceURI, localName) in self._attrsNS
-
-    def getElementsByTagName(self, name):
-        return _get_elements_by_tagName_helper(self, name, NodeList())
-
-    def getElementsByTagNameNS(self, namespaceURI, localName):
-        return _get_elements_by_tagName_ns_helper(
-            self, namespaceURI, localName, NodeList())
-
-    def __repr__(self):
-        return "<DOM Element: %s at %#x>" % (self.tagName, id(self))
-
-    def writexml(self, writer, indent="", addindent="", newl=""):
-        # indent = current indentation
-        # addindent = indentation to add to higher levels
-        # newl = newline string
-        writer.write(indent+"<" + self.tagName)
-
-        attrs = self._get_attributes()
-        a_names = attrs.keys()
-        a_names.sort()
-
-        for a_name in a_names:
-            writer.write(" %s=\"" % a_name)
-            _write_data(writer, attrs[a_name].value)
-            writer.write("\"")
-        if self.childNodes:
-            writer.write(">%s"%(newl))
-            for node in self.childNodes:
-                node.writexml(writer,indent+addindent,addindent,newl)
-            writer.write("%s</%s>%s" % (indent,self.tagName,newl))
-        else:
-            writer.write("/>%s"%(newl))
-
-    def _get_attributes(self):
-        return NamedNodeMap(self._attrs, self._attrsNS, self)
-
-    def hasAttributes(self):
-        if self._attrs:
-            return True
-        else:
-            return False
-
-    # DOM Level 3 attributes, based on the 22 Oct 2002 draft
-
-    def setIdAttribute(self, name):
-        idAttr = self.getAttributeNode(name)
-        self.setIdAttributeNode(idAttr)
-
-    def setIdAttributeNS(self, namespaceURI, localName):
-        idAttr = self.getAttributeNodeNS(namespaceURI, localName)
-        self.setIdAttributeNode(idAttr)
-
-    def setIdAttributeNode(self, idAttr):
-        if idAttr is None or not self.isSameNode(idAttr.ownerElement):
-            raise xml.dom.NotFoundErr()
-        if _get_containing_entref(self) is not None:
-            raise xml.dom.NoModificationAllowedErr()
-        if not idAttr._is_id:
-            idAttr.__dict__['_is_id'] = True
-            self._magic_id_nodes += 1
-            self.ownerDocument._magic_id_count += 1
-            _clear_id_cache(self)
-
-defproperty(Element, "attributes",
-            doc="NamedNodeMap of attributes on the element.")
-defproperty(Element, "localName",
-            doc="Namespace-local name of this element.")
-
-
-def _set_attribute_node(element, attr):
-    _clear_id_cache(element)
-    element._attrs[attr.name] = attr
-    element._attrsNS[(attr.namespaceURI, attr.localName)] = attr
-
-    # This creates a circular reference, but Element.unlink()
-    # breaks the cycle since the references to the attribute
-    # dictionaries are tossed.
-    attr.__dict__['ownerElement'] = element
-
-
-class Childless:
-    """Mixin that makes childless-ness easy to implement and avoids
-    the complexity of the Node methods that deal with children.
-    """
-
-    attributes = None
-    childNodes = EmptyNodeList()
-    firstChild = None
-    lastChild = None
-
-    def _get_firstChild(self):
-        return None
-
-    def _get_lastChild(self):
-        return None
-
-    def appendChild(self, node):
-        raise xml.dom.HierarchyRequestErr(
-            self.nodeName + " nodes cannot have children")
-
-    def hasChildNodes(self):
-        return False
-
-    def insertBefore(self, newChild, refChild):
-        raise xml.dom.HierarchyRequestErr(
-            self.nodeName + " nodes do not have children")
-
-    def removeChild(self, oldChild):
-        raise xml.dom.NotFoundErr(
-            self.nodeName + " nodes do not have children")
-
-    def normalize(self):
-        # For childless nodes, normalize() has nothing to do.
-        pass
-
-    def replaceChild(self, newChild, oldChild):
-        raise xml.dom.HierarchyRequestErr(
-            self.nodeName + " nodes do not have children")
-
-
-class ProcessingInstruction(Childless, Node):
-    nodeType = Node.PROCESSING_INSTRUCTION_NODE
-
-    def __init__(self, target, data):
-        self.target = self.nodeName = target
-        self.data = self.nodeValue = data
-
-    def _get_data(self):
-        return self.data
-    def _set_data(self, value):
-        d = self.__dict__
-        d['data'] = d['nodeValue'] = value
-
-    def _get_target(self):
-        return self.target
-    def _set_target(self, value):
-        d = self.__dict__
-        d['target'] = d['nodeName'] = value
-
-    def __setattr__(self, name, value):
-        if name == "data" or name == "nodeValue":
-            self.__dict__['data'] = self.__dict__['nodeValue'] = value
-        elif name == "target" or name == "nodeName":
-            self.__dict__['target'] = self.__dict__['nodeName'] = value
-        else:
-            self.__dict__[name] = value
-
-    def writexml(self, writer, indent="", addindent="", newl=""):
-        writer.write("%s<?%s %s?>%s" % (indent,self.target, self.data, newl))
-
-
-class CharacterData(Childless, Node):
-    def _get_length(self):
-        return len(self.data)
-    __len__ = _get_length
-
-    def _get_data(self):
-        return self.__dict__['data']
-    def _set_data(self, data):
-        d = self.__dict__
-        d['data'] = d['nodeValue'] = data
-
-    _get_nodeValue = _get_data
-    _set_nodeValue = _set_data
-
-    def __setattr__(self, name, value):
-        if name == "data" or name == "nodeValue":
-            self.__dict__['data'] = self.__dict__['nodeValue'] = value
-        else:
-            self.__dict__[name] = value
-
-    def __repr__(self):
-        data = self.data
-        if len(data) > 10:
-            dotdotdot = "..."
-        else:
-            dotdotdot = ""
-        return '<DOM %s node "%r%s">' % (
-            self.__class__.__name__, data[0:10], dotdotdot)
-
-    def substringData(self, offset, count):
-        if offset < 0:
-            raise xml.dom.IndexSizeErr("offset cannot be negative")
-        if offset >= len(self.data):
-            raise xml.dom.IndexSizeErr("offset cannot be beyond end of data")
-        if count < 0:
-            raise xml.dom.IndexSizeErr("count cannot be negative")
-        return self.data[offset:offset+count]
-
-    def appendData(self, arg):
-        self.data = self.data + arg
-
-    def insertData(self, offset, arg):
-        if offset < 0:
-            raise xml.dom.IndexSizeErr("offset cannot be negative")
-        if offset >= len(self.data):
-            raise xml.dom.IndexSizeErr("offset cannot be beyond end of data")
-        if arg:
-            self.data = "%s%s%s" % (
-                self.data[:offset], arg, self.data[offset:])
-
-    def deleteData(self, offset, count):
-        if offset < 0:
-            raise xml.dom.IndexSizeErr("offset cannot be negative")
-        if offset >= len(self.data):
-            raise xml.dom.IndexSizeErr("offset cannot be beyond end of data")
-        if count < 0:
-            raise xml.dom.IndexSizeErr("count cannot be negative")
-        if count:
-            self.data = self.data[:offset] + self.data[offset+count:]
-
-    def replaceData(self, offset, count, arg):
-        if offset < 0:
-            raise xml.dom.IndexSizeErr("offset cannot be negative")
-        if offset >= len(self.data):
-            raise xml.dom.IndexSizeErr("offset cannot be beyond end of data")
-        if count < 0:
-            raise xml.dom.IndexSizeErr("count cannot be negative")
-        if count:
-            self.data = "%s%s%s" % (
-                self.data[:offset], arg, self.data[offset+count:])
-
-defproperty(CharacterData, "length", doc="Length of the string data.")
-
-
-class Text(CharacterData):
-    # Make sure we don't add an instance __dict__ if we don't already
-    # have one, at least when that's possible:
-    # XXX this does not work, CharacterData is an old-style class
-    # __slots__ = ()
-
-    nodeType = Node.TEXT_NODE
-    nodeName = "#text"
-    attributes = None
-
-    def splitText(self, offset):
-        if offset < 0 or offset > len(self.data):
-            raise xml.dom.IndexSizeErr("illegal offset value")
-        newText = self.__class__()
-        newText.data = self.data[offset:]
-        newText.ownerDocument = self.ownerDocument
-        next = self.nextSibling
-        if self.parentNode and self in self.parentNode.childNodes:
-            if next is None:
-                self.parentNode.appendChild(newText)
-            else:
-                self.parentNode.insertBefore(newText, next)
-        self.data = self.data[:offset]
-        return newText
-
-    def writexml(self, writer, indent="", addindent="", newl=""):
-        _write_data(writer, "%s%s%s"%(indent, self.data, newl))
-
-    # DOM Level 3 (WD 9 April 2002)
-
-    def _get_wholeText(self):
-        L = [self.data]
-        n = self.previousSibling
-        while n is not None:
-            if n.nodeType in (Node.TEXT_NODE, Node.CDATA_SECTION_NODE):
-                L.insert(0, n.data)
-                n = n.previousSibling
-            else:
-                break
-        n = self.nextSibling
-        while n is not None:
-            if n.nodeType in (Node.TEXT_NODE, Node.CDATA_SECTION_NODE):
-                L.append(n.data)
-                n = n.nextSibling
-            else:
-                break
-        return ''.join(L)
-
-    def replaceWholeText(self, content):
-        # XXX This needs to be seriously changed if minidom ever
-        # supports EntityReference nodes.
-        parent = self.parentNode
-        n = self.previousSibling
-        while n is not None:
-            if n.nodeType in (Node.TEXT_NODE, Node.CDATA_SECTION_NODE):
-                next = n.previousSibling
-                parent.removeChild(n)
-                n = next
-            else:
-                break
-        n = self.nextSibling
-        if not content:
-            parent.removeChild(self)
-        while n is not None:
-            if n.nodeType in (Node.TEXT_NODE, Node.CDATA_SECTION_NODE):
-                next = n.nextSibling
-                parent.removeChild(n)
-                n = next
-            else:
-                break
-        if content:
-            d = self.__dict__
-            d['data'] = content
-            d['nodeValue'] = content
-            return self
-        else:
-            return None
-
-    def _get_isWhitespaceInElementContent(self):
-        if self.data.strip():
-            return False
-        elem = _get_containing_element(self)
-        if elem is None:
-            return False
-        info = self.ownerDocument._get_elem_info(elem)
-        if info is None:
-            return False
-        else:
-            return info.isElementContent()
-
-defproperty(Text, "isWhitespaceInElementContent",
-            doc="True iff this text node contains only whitespace"
-                " and is in element content.")
-defproperty(Text, "wholeText",
-            doc="The text of all logically-adjacent text nodes.")
-
-
-def _get_containing_element(node):
-    c = node.parentNode
-    while c is not None:
-        if c.nodeType == Node.ELEMENT_NODE:
-            return c
-        c = c.parentNode
-    return None
-
-def _get_containing_entref(node):
-    c = node.parentNode
-    while c is not None:
-        if c.nodeType == Node.ENTITY_REFERENCE_NODE:
-            return c
-        c = c.parentNode
-    return None
-
-
-class Comment(Childless, CharacterData):
-    nodeType = Node.COMMENT_NODE
-    nodeName = "#comment"
-
-    def __init__(self, data):
-        self.data = self.nodeValue = data
-
-    def writexml(self, writer, indent="", addindent="", newl=""):
-        if "--" in self.data:
-            raise ValueError("'--' is not allowed in a comment node")
-        writer.write("%s<!--%s-->%s" % (indent, self.data, newl))
-
-
-class CDATASection(Text):
-    # Make sure we don't add an instance __dict__ if we don't already
-    # have one, at least when that's possible:
-    # XXX this does not work, Text is an old-style class
-    # __slots__ = ()
-
-    nodeType = Node.CDATA_SECTION_NODE
-    nodeName = "#cdata-section"
-
-    def writexml(self, writer, indent="", addindent="", newl=""):
-        if self.data.find("]]>") >= 0:
-            raise ValueError("']]>' not allowed in a CDATA section")
-        writer.write("<![CDATA[%s]]>" % self.data)
-
-
-class ReadOnlySequentialNamedNodeMap(object):
-    __slots__ = '_seq',
-
-    def __init__(self, seq=()):
-        # seq should be a list or tuple
-        self._seq = seq
-
-    def __len__(self):
-        return len(self._seq)
-
-    def _get_length(self):
-        return len(self._seq)
-
-    def getNamedItem(self, name):
-        for n in self._seq:
-            if n.nodeName == name:
-                return n
-
-    def getNamedItemNS(self, namespaceURI, localName):
-        for n in self._seq:
-            if n.namespaceURI == namespaceURI and n.localName == localName:
-                return n
-
-    def __getitem__(self, name_or_tuple):
-        if isinstance(name_or_tuple, tuple):
-            node = self.getNamedItemNS(*name_or_tuple)
-        else:
-            node = self.getNamedItem(name_or_tuple)
-        if node is None:
-            raise KeyError, name_or_tuple
-        return node
-
-    def item(self, index):
-        if index < 0:
-            return None
-        try:
-            return self._seq[index]
-        except IndexError:
-            return None
-
-    def removeNamedItem(self, name):
-        raise xml.dom.NoModificationAllowedErr(
-            "NamedNodeMap instance is read-only")
-
-    def removeNamedItemNS(self, namespaceURI, localName):
-        raise xml.dom.NoModificationAllowedErr(
-            "NamedNodeMap instance is read-only")
-
-    def setNamedItem(self, node):
-        raise xml.dom.NoModificationAllowedErr(
-            "NamedNodeMap instance is read-only")
-
-    def setNamedItemNS(self, node):
-        raise xml.dom.NoModificationAllowedErr(
-            "NamedNodeMap instance is read-only")
-
-    def __getstate__(self):
-        return [self._seq]
-
-    def __setstate__(self, state):
-        self._seq = state[0]
-
-defproperty(ReadOnlySequentialNamedNodeMap, "length",
-            doc="Number of entries in the NamedNodeMap.")
-
-
-class Identified:
-    """Mix-in class that supports the publicId and systemId attributes."""
-
-    # XXX this does not work, this is an old-style class
-    # __slots__ = 'publicId', 'systemId'
-
-    def _identified_mixin_init(self, publicId, systemId):
-        self.publicId = publicId
-        self.systemId = systemId
-
-    def _get_publicId(self):
-        return self.publicId
-
-    def _get_systemId(self):
-        return self.systemId
-
-class DocumentType(Identified, Childless, Node):
-    nodeType = Node.DOCUMENT_TYPE_NODE
-    nodeValue = None
-    name = None
-    publicId = None
-    systemId = None
-    internalSubset = None
-
-    def __init__(self, qualifiedName):
-        self.entities = ReadOnlySequentialNamedNodeMap()
-        self.notations = ReadOnlySequentialNamedNodeMap()
-        if qualifiedName:
-            prefix, localname = _nssplit(qualifiedName)
-            self.name = localname
-        self.nodeName = self.name
-
-    def _get_internalSubset(self):
-        return self.internalSubset
-
-    def cloneNode(self, deep):
-        if self.ownerDocument is None:
-            # it's ok
-            clone = DocumentType(None)
-            clone.name = self.name
-            clone.nodeName = self.name
-            operation = xml.dom.UserDataHandler.NODE_CLONED
-            if deep:
-                clone.entities._seq = []
-                clone.notations._seq = []
-                for n in self.notations._seq:
-                    notation = Notation(n.nodeName, n.publicId, n.systemId)
-                    clone.notations._seq.append(notation)
-                    n._call_user_data_handler(operation, n, notation)
-                for e in self.entities._seq:
-                    entity = Entity(e.nodeName, e.publicId, e.systemId,
-                                    e.notationName)
-                    entity.actualEncoding = e.actualEncoding
-                    entity.encoding = e.encoding
-                    entity.version = e.version
-                    clone.entities._seq.append(entity)
-                    e._call_user_data_handler(operation, n, entity)
-            self._call_user_data_handler(operation, self, clone)
-            return clone
-        else:
-            return None
-
-    def writexml(self, writer, indent="", addindent="", newl=""):
-        writer.write("<!DOCTYPE ")
-        writer.write(self.name)
-        if self.publicId:
-            writer.write("%s  PUBLIC '%s'%s  '%s'"
-                         % (newl, self.publicId, newl, self.systemId))
-        elif self.systemId:
-            writer.write("%s  SYSTEM '%s'" % (newl, self.systemId))
-        if self.internalSubset is not None:
-            writer.write(" [")
-            writer.write(self.internalSubset)
-            writer.write("]")
-        writer.write(">"+newl)
-
-class Entity(Identified, Node):
-    attributes = None
-    nodeType = Node.ENTITY_NODE
-    nodeValue = None
-
-    actualEncoding = None
-    encoding = None
-    version = None
-
-    def __init__(self, name, publicId, systemId, notation):
-        self.nodeName = name
-        self.notationName = notation
-        self.childNodes = NodeList()
-        self._identified_mixin_init(publicId, systemId)
-
-    def _get_actualEncoding(self):
-        return self.actualEncoding
-
-    def _get_encoding(self):
-        return self.encoding
-
-    def _get_version(self):
-        return self.version
-
-    def appendChild(self, newChild):
-        raise xml.dom.HierarchyRequestErr(
-            "cannot append children to an entity node")
-
-    def insertBefore(self, newChild, refChild):
-        raise xml.dom.HierarchyRequestErr(
-            "cannot insert children below an entity node")
-
-    def removeChild(self, oldChild):
-        raise xml.dom.HierarchyRequestErr(
-            "cannot remove children from an entity node")
-
-    def replaceChild(self, newChild, oldChild):
-        raise xml.dom.HierarchyRequestErr(
-            "cannot replace children of an entity node")
-
-class Notation(Identified, Childless, Node):
-    nodeType = Node.NOTATION_NODE
-    nodeValue = None
-
-    def __init__(self, name, publicId, systemId):
-        self.nodeName = name
-        self._identified_mixin_init(publicId, systemId)
-
-
-class DOMImplementation(DOMImplementationLS):
-    _features = [("core", "1.0"),
-                 ("core", "2.0"),
-                 ("core", None),
-                 ("xml", "1.0"),
-                 ("xml", "2.0"),
-                 ("xml", None),
-                 ("ls-load", "3.0"),
-                 ("ls-load", None),
-                 ]
-
-    def hasFeature(self, feature, version):
-        if version == "":
-            version = None
-        return (feature.lower(), version) in self._features
-
-    def createDocument(self, namespaceURI, qualifiedName, doctype):
-        if doctype and doctype.parentNode is not None:
-            raise xml.dom.WrongDocumentErr(
-                "doctype object owned by another DOM tree")
-        doc = self._create_document()
-
-        add_root_element = not (namespaceURI is None
-                                and qualifiedName is None
-                                and doctype is None)
-
-        if not qualifiedName and add_root_element:
-            # The spec is unclear what to raise here; SyntaxErr
-            # would be the other obvious candidate. Since Xerces raises
-            # InvalidCharacterErr, and since SyntaxErr is not listed
-            # for createDocument, that seems to be the better choice.
-            # XXX: need to check for illegal characters here and in
-            # createElement.
-
-            # DOM Level III clears this up when talking about the return value
-            # of this function.  If namespaceURI, qName and DocType are
-            # Null the document is returned without a document element
-            # Otherwise if doctype or namespaceURI are not None
-            # Then we go back to the above problem
-            raise xml.dom.InvalidCharacterErr("Element with no name")
-
-        if add_root_element:
-            prefix, localname = _nssplit(qualifiedName)
-            if prefix == "xml" \
-               and namespaceURI != "http://www.w3.org/XML/1998/namespace":
-                raise xml.dom.NamespaceErr("illegal use of 'xml' prefix")
-            if prefix and not namespaceURI:
-                raise xml.dom.NamespaceErr(
-                    "illegal use of prefix without namespaces")
-            element = doc.createElementNS(namespaceURI, qualifiedName)
-            if doctype:
-                doc.appendChild(doctype)
-            doc.appendChild(element)
-
-        if doctype:
-            doctype.parentNode = doctype.ownerDocument = doc
-
-        doc.doctype = doctype
-        doc.implementation = self
-        return doc
-
-    def createDocumentType(self, qualifiedName, publicId, systemId):
-        doctype = DocumentType(qualifiedName)
-        doctype.publicId = publicId
-        doctype.systemId = systemId
-        return doctype
-
-    # DOM Level 3 (WD 9 April 2002)
-
-    def getInterface(self, feature):
-        if self.hasFeature(feature, None):
-            return self
-        else:
-            return None
-
-    # internal
-    def _create_document(self):
-        return Document()
-
-class ElementInfo(object):
-    """Object that represents content-model information for an element.
-
-    This implementation is not expected to be used in practice; DOM
-    builders should provide implementations which do the right thing
-    using information available to it.
-
-    """
-
-    __slots__ = 'tagName',
-
-    def __init__(self, name):
-        self.tagName = name
-
-    def getAttributeType(self, aname):
-        return _no_type
-
-    def getAttributeTypeNS(self, namespaceURI, localName):
-        return _no_type
-
-    def isElementContent(self):
-        return False
-
-    def isEmpty(self):
-        """Returns true iff this element is declared to have an EMPTY
-        content model."""
-        return False
-
-    def isId(self, aname):
-        """Returns true iff the named attribute is a DTD-style ID."""
-        return False
-
-    def isIdNS(self, namespaceURI, localName):
-        """Returns true iff the identified attribute is a DTD-style ID."""
-        return False
-
-    def __getstate__(self):
-        return self.tagName
-
-    def __setstate__(self, state):
-        self.tagName = state
-
-def _clear_id_cache(node):
-    if node.nodeType == Node.DOCUMENT_NODE:
-        node._id_cache.clear()
-        node._id_search_stack = None
-    elif _in_document(node):
-        node.ownerDocument._id_cache.clear()
-        node.ownerDocument._id_search_stack= None
-
-class Document(Node, DocumentLS):
-    _child_node_types = (Node.ELEMENT_NODE, Node.PROCESSING_INSTRUCTION_NODE,
-                         Node.COMMENT_NODE, Node.DOCUMENT_TYPE_NODE)
-
-    nodeType = Node.DOCUMENT_NODE
-    nodeName = "#document"
-    nodeValue = None
-    attributes = None
-    doctype = None
-    parentNode = None
-    previousSibling = nextSibling = None
-
-    implementation = DOMImplementation()
-
-    # Document attributes from Level 3 (WD 9 April 2002)
-
-    actualEncoding = None
-    encoding = None
-    standalone = None
-    version = None
-    strictErrorChecking = False
-    errorHandler = None
-    documentURI = None
-
-    _magic_id_count = 0
-
-    def __init__(self):
-        self.childNodes = NodeList()
-        # mapping of (namespaceURI, localName) -> ElementInfo
-        #        and tagName -> ElementInfo
-        self._elem_info = {}
-        self._id_cache = {}
-        self._id_search_stack = None
-
-    def _get_elem_info(self, element):
-        if element.namespaceURI:
-            key = element.namespaceURI, element.localName
-        else:
-            key = element.tagName
-        return self._elem_info.get(key)
-
-    def _get_actualEncoding(self):
-        return self.actualEncoding
-
-    def _get_doctype(self):
-        return self.doctype
-
-    def _get_documentURI(self):
-        return self.documentURI
-
-    def _get_encoding(self):
-        return self.encoding
-
-    def _get_errorHandler(self):
-        return self.errorHandler
-
-    def _get_standalone(self):
-        return self.standalone
-
-    def _get_strictErrorChecking(self):
-        return self.strictErrorChecking
-
-    def _get_version(self):
-        return self.version
-
-    def appendChild(self, node):
-        if node.nodeType not in self._child_node_types:
-            raise xml.dom.HierarchyRequestErr(
-                "%s cannot be child of %s" % (repr(node), repr(self)))
-        if node.parentNode is not None:
-            # This needs to be done before the next test since this
-            # may *be* the document element, in which case it should
-            # end up re-ordered to the end.
-            node.parentNode.removeChild(node)
-
-        if node.nodeType == Node.ELEMENT_NODE \
-           and self._get_documentElement():
-            raise xml.dom.HierarchyRequestErr(
-                "two document elements disallowed")
-        return Node.appendChild(self, node)
-
-    def removeChild(self, oldChild):
-        try:
-            self.childNodes.remove(oldChild)
-        except ValueError:
-            raise xml.dom.NotFoundErr()
-        oldChild.nextSibling = oldChild.previousSibling = None
-        oldChild.parentNode = None
-        if self.documentElement is oldChild:
-            self.documentElement = None
-
-        return oldChild
-
-    def _get_documentElement(self):
-        for node in self.childNodes:
-            if node.nodeType == Node.ELEMENT_NODE:
-                return node
-
-    def unlink(self):
-        if self.doctype is not None:
-            self.doctype.unlink()
-            self.doctype = None
-        Node.unlink(self)
-
-    def cloneNode(self, deep):
-        if not deep:
-            return None
-        clone = self.implementation.createDocument(None, None, None)
-        clone.encoding = self.encoding
-        clone.standalone = self.standalone
-        clone.version = self.version
-        for n in self.childNodes:
-            childclone = _clone_node(n, deep, clone)
-            assert childclone.ownerDocument.isSameNode(clone)
-            clone.childNodes.append(childclone)
-            if childclone.nodeType == Node.DOCUMENT_NODE:
-                assert clone.documentElement is None
-            elif childclone.nodeType == Node.DOCUMENT_TYPE_NODE:
-                assert clone.doctype is None
-                clone.doctype = childclone
-            childclone.parentNode = clone
-        self._call_user_data_handler(xml.dom.UserDataHandler.NODE_CLONED,
-                                     self, clone)
-        return clone
-
-    def createDocumentFragment(self):
-        d = DocumentFragment()
-        d.ownerDocument = self
-        return d
-
-    def createElement(self, tagName):
-        e = Element(tagName)
-        e.ownerDocument = self
-        return e
-
-    def createTextNode(self, data):
-        if not isinstance(data, StringTypes):
-            raise TypeError, "node contents must be a string"
-        t = Text()
-        t.data = data
-        t.ownerDocument = self
-        return t
-
-    def createCDATASection(self, data):
-        if not isinstance(data, StringTypes):
-            raise TypeError, "node contents must be a string"
-        c = CDATASection()
-        c.data = data
-        c.ownerDocument = self
-        return c
-
-    def createComment(self, data):
-        c = Comment(data)
-        c.ownerDocument = self
-        return c
-
-    def createProcessingInstruction(self, target, data):
-        p = ProcessingInstruction(target, data)
-        p.ownerDocument = self
-        return p
-
-    def createAttribute(self, qName):
-        a = Attr(qName)
-        a.ownerDocument = self
-        a.value = ""
-        return a
-
-    def createElementNS(self, namespaceURI, qualifiedName):
-        prefix, localName = _nssplit(qualifiedName)
-        e = Element(qualifiedName, namespaceURI, prefix)
-        e.ownerDocument = self
-        return e
-
-    def createAttributeNS(self, namespaceURI, qualifiedName):
-        prefix, localName = _nssplit(qualifiedName)
-        a = Attr(qualifiedName, namespaceURI, localName, prefix)
-        a.ownerDocument = self
-        a.value = ""
-        return a
-
-    # A couple of implementation-specific helpers to create node types
-    # not supported by the W3C DOM specs:
-
-    def _create_entity(self, name, publicId, systemId, notationName):
-        e = Entity(name, publicId, systemId, notationName)
-        e.ownerDocument = self
-        return e
-
-    def _create_notation(self, name, publicId, systemId):
-        n = Notation(name, publicId, systemId)
-        n.ownerDocument = self
-        return n
-
-    def getElementById(self, id):
-        if id in self._id_cache:
-            return self._id_cache[id]
-        if not (self._elem_info or self._magic_id_count):
-            return None
-
-        stack = self._id_search_stack
-        if stack is None:
-            # we never searched before, or the cache has been cleared
-            stack = [self.documentElement]
-            self._id_search_stack = stack
-        elif not stack:
-            # Previous search was completed and cache is still valid;
-            # no matching node.
-            return None
-
-        result = None
-        while stack:
-            node = stack.pop()
-            # add child elements to stack for continued searching
-            stack.extend([child for child in node.childNodes
-                          if child.nodeType in _nodeTypes_with_children])
-            # check this node
-            info = self._get_elem_info(node)
-            if info:
-                # We have to process all ID attributes before
-                # returning in order to get all the attributes set to
-                # be IDs using Element.setIdAttribute*().
-                for attr in node.attributes.values():
-                    if attr.namespaceURI:
-                        if info.isIdNS(attr.namespaceURI, attr.localName):
-                            self._id_cache[attr.value] = node
-                            if attr.value == id:
-                                result = node
-                            elif not node._magic_id_nodes:
-                                break
-                    elif info.isId(attr.name):
-                        self._id_cache[attr.value] = node
-                        if attr.value == id:
-                            result = node
-                        elif not node._magic_id_nodes:
-                            break
-                    elif attr._is_id:
-                        self._id_cache[attr.value] = node
-                        if attr.value == id:
-                            result = node
-                        elif node._magic_id_nodes == 1:
-                            break
-            elif node._magic_id_nodes:
-                for attr in node.attributes.values():
-                    if attr._is_id:
-                        self._id_cache[attr.value] = node
-                        if attr.value == id:
-                            result = node
-            if result is not None:
-                break
-        return result
-
-    def getElementsByTagName(self, name):
-        return _get_elements_by_tagName_helper(self, name, NodeList())
-
-    def getElementsByTagNameNS(self, namespaceURI, localName):
-        return _get_elements_by_tagName_ns_helper(
-            self, namespaceURI, localName, NodeList())
-
-    def isSupported(self, feature, version):
-        return self.implementation.hasFeature(feature, version)
-
-    def importNode(self, node, deep):
-        if node.nodeType == Node.DOCUMENT_NODE:
-            raise xml.dom.NotSupportedErr("cannot import document nodes")
-        elif node.nodeType == Node.DOCUMENT_TYPE_NODE:
-            raise xml.dom.NotSupportedErr("cannot import document type nodes")
-        return _clone_node(node, deep, self)
-
-    def writexml(self, writer, indent="", addindent="", newl="",
-                 encoding = None):
-        if encoding is None:
-            writer.write('<?xml version="1.0" ?>'+newl)
-        else:
-            writer.write('<?xml version="1.0" encoding="%s"?>%s' % (encoding, newl))
-        for node in self.childNodes:
-            node.writexml(writer, indent, addindent, newl)
-
-    # DOM Level 3 (WD 9 April 2002)
-
-    def renameNode(self, n, namespaceURI, name):
-        if n.ownerDocument is not self:
-            raise xml.dom.WrongDocumentErr(
-                "cannot rename nodes from other documents;\n"
-                "expected %s,\nfound %s" % (self, n.ownerDocument))
-        if n.nodeType not in (Node.ELEMENT_NODE, Node.ATTRIBUTE_NODE):
-            raise xml.dom.NotSupportedErr(
-                "renameNode() only applies to element and attribute nodes")
-        if namespaceURI != EMPTY_NAMESPACE:
-            if ':' in name:
-                prefix, localName = name.split(':', 1)
-                if (  prefix == "xmlns"
-                      and namespaceURI != xml.dom.XMLNS_NAMESPACE):
-                    raise xml.dom.NamespaceErr(
-                        "illegal use of 'xmlns' prefix")
-            else:
-                if (  name == "xmlns"
-                      and namespaceURI != xml.dom.XMLNS_NAMESPACE
-                      and n.nodeType == Node.ATTRIBUTE_NODE):
-                    raise xml.dom.NamespaceErr(
-                        "illegal use of the 'xmlns' attribute")
-                prefix = None
-                localName = name
-        else:
-            prefix = None
-            localName = None
-        if n.nodeType == Node.ATTRIBUTE_NODE:
-            element = n.ownerElement
-            if element is not None:
-                is_id = n._is_id
-                element.removeAttributeNode(n)
-        else:
-            element = None
-        # avoid __setattr__
-        d = n.__dict__
-        d['prefix'] = prefix
-        d['localName'] = localName
-        d['namespaceURI'] = namespaceURI
-        d['nodeName'] = name
-        if n.nodeType == Node.ELEMENT_NODE:
-            d['tagName'] = name
-        else:
-            # attribute node
-            d['name'] = name
-            if element is not None:
-                element.setAttributeNode(n)
-                if is_id:
-                    element.setIdAttributeNode(n)
-        # It's not clear from a semantic perspective whether we should
-        # call the user data handlers for the NODE_RENAMED event since
-        # we're re-using the existing node.  The draft spec has been
-        # interpreted as meaning "no, don't call the handler unless a
-        # new node is created."
-        return n
-
-defproperty(Document, "documentElement",
-            doc="Top-level element of this document.")
-
-
-def _clone_node(node, deep, newOwnerDocument):
-    """
-    Clone a node and give it the new owner document.
-    Called by Node.cloneNode and Document.importNode
-    """
-    if node.ownerDocument.isSameNode(newOwnerDocument):
-        operation = xml.dom.UserDataHandler.NODE_CLONED
-    else:
-        operation = xml.dom.UserDataHandler.NODE_IMPORTED
-    if node.nodeType == Node.ELEMENT_NODE:
-        clone = newOwnerDocument.createElementNS(node.namespaceURI,
-                                                 node.nodeName)
-        for attr in node.attributes.values():
-            clone.setAttributeNS(attr.namespaceURI, attr.nodeName, attr.value)
-            a = clone.getAttributeNodeNS(attr.namespaceURI, attr.localName)
-            a.specified = attr.specified
-
-        if deep:
-            for child in node.childNodes:
-                c = _clone_node(child, deep, newOwnerDocument)
-                clone.appendChild(c)
-
-    elif node.nodeType == Node.DOCUMENT_FRAGMENT_NODE:
-        clone = newOwnerDocument.createDocumentFragment()
-        if deep:
-            for child in node.childNodes:
-                c = _clone_node(child, deep, newOwnerDocument)
-                clone.appendChild(c)
-
-    elif node.nodeType == Node.TEXT_NODE:
-        clone = newOwnerDocument.createTextNode(node.data)
-    elif node.nodeType == Node.CDATA_SECTION_NODE:
-        clone = newOwnerDocument.createCDATASection(node.data)
-    elif node.nodeType == Node.PROCESSING_INSTRUCTION_NODE:
-        clone = newOwnerDocument.createProcessingInstruction(node.target,
-                                                             node.data)
-    elif node.nodeType == Node.COMMENT_NODE:
-        clone = newOwnerDocument.createComment(node.data)
-    elif node.nodeType == Node.ATTRIBUTE_NODE:
-        clone = newOwnerDocument.createAttributeNS(node.namespaceURI,
-                                                   node.nodeName)
-        clone.specified = True
-        clone.value = node.value
-    elif node.nodeType == Node.DOCUMENT_TYPE_NODE:
-        assert node.ownerDocument is not newOwnerDocument
-        operation = xml.dom.UserDataHandler.NODE_IMPORTED
-        clone = newOwnerDocument.implementation.createDocumentType(
-            node.name, node.publicId, node.systemId)
-        clone.ownerDocument = newOwnerDocument
-        if deep:
-            clone.entities._seq = []
-            clone.notations._seq = []
-            for n in node.notations._seq:
-                notation = Notation(n.nodeName, n.publicId, n.systemId)
-                notation.ownerDocument = newOwnerDocument
-                clone.notations._seq.append(notation)
-                if hasattr(n, '_call_user_data_handler'):
-                    n._call_user_data_handler(operation, n, notation)
-            for e in node.entities._seq:
-                entity = Entity(e.nodeName, e.publicId, e.systemId,
-                                e.notationName)
-                entity.actualEncoding = e.actualEncoding
-                entity.encoding = e.encoding
-                entity.version = e.version
-                entity.ownerDocument = newOwnerDocument
-                clone.entities._seq.append(entity)
-                if hasattr(e, '_call_user_data_handler'):
-                    e._call_user_data_handler(operation, n, entity)
-    else:
-        # Note the cloning of Document and DocumentType nodes is
-        # implementation specific.  minidom handles those cases
-        # directly in the cloneNode() methods.
-        raise xml.dom.NotSupportedErr("Cannot clone node %s" % repr(node))
-
-    # Check for _call_user_data_handler() since this could conceivably
-    # used with other DOM implementations (one of the FourThought
-    # DOMs, perhaps?).
-    if hasattr(node, '_call_user_data_handler'):
-        node._call_user_data_handler(operation, node, clone)
-    return clone
-
-
-def _nssplit(qualifiedName):
-    fields = qualifiedName.split(':', 1)
-    if len(fields) == 2:
-        return fields
-    else:
-        return (None, fields[0])
-
-
-def _get_StringIO():
-    # we can't use cStringIO since it doesn't support Unicode strings
-    from StringIO import StringIO
-    return StringIO()
-
-def _do_pulldom_parse(func, args, kwargs):
-    events = func(*args, **kwargs)
-    toktype, rootNode = events.getEvent()
-    events.expandNode(rootNode)
-    events.clear()
-    return rootNode
-
-def parse(file, parser=None, bufsize=None):
-    """Parse a file into a DOM by filename or file object."""
-    if parser is None and not bufsize:
-        from xml.dom import expatbuilder
-        return expatbuilder.parse(file)
-    else:
-        from xml.dom import pulldom
-        return _do_pulldom_parse(pulldom.parse, (file,),
-            {'parser': parser, 'bufsize': bufsize})
-
-def parseString(string, parser=None):
-    """Parse a file into a DOM from a string."""
-    if parser is None:
-        from xml.dom import expatbuilder
-        return expatbuilder.parseString(string)
-    else:
-        from xml.dom import pulldom
-        return _do_pulldom_parse(pulldom.parseString, (string,),
-                                 {'parser': parser})
-
-def getDOMImplementation(features=None):
-    if features:
-        if isinstance(features, StringTypes):
-            features = domreg._parse_feature_string(features)
-        for f, v in features:
-            if not Document.implementation.hasFeature(f, v):
-                return None
-    return Document.implementation
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/pulldom.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/pulldom.py
deleted file mode 100644
index cdec746..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/pulldom.py
+++ /dev/null
@@ -1,351 +0,0 @@
-import xml.sax
-import xml.sax.handler
-import types
-
-try:
-    _StringTypes = [types.StringType, types.UnicodeType]
-except AttributeError:
-    _StringTypes = [types.StringType]
-
-START_ELEMENT = "START_ELEMENT"
-END_ELEMENT = "END_ELEMENT"
-COMMENT = "COMMENT"
-START_DOCUMENT = "START_DOCUMENT"
-END_DOCUMENT = "END_DOCUMENT"
-PROCESSING_INSTRUCTION = "PROCESSING_INSTRUCTION"
-IGNORABLE_WHITESPACE = "IGNORABLE_WHITESPACE"
-CHARACTERS = "CHARACTERS"
-
-class PullDOM(xml.sax.ContentHandler):
-    _locator = None
-    document = None
-
-    def __init__(self, documentFactory=None):
-        from xml.dom import XML_NAMESPACE
-        self.documentFactory = documentFactory
-        self.firstEvent = [None, None]
-        self.lastEvent = self.firstEvent
-        self.elementStack = []
-        self.push = self.elementStack.append
-        try:
-            self.pop = self.elementStack.pop
-        except AttributeError:
-            # use class' pop instead
-            pass
-        self._ns_contexts = [{XML_NAMESPACE:'xml'}] # contains uri -> prefix dicts
-        self._current_context = self._ns_contexts[-1]
-        self.pending_events = []
-
-    def pop(self):
-        result = self.elementStack[-1]
-        del self.elementStack[-1]
-        return result
-
-    def setDocumentLocator(self, locator):
-        self._locator = locator
-
-    def startPrefixMapping(self, prefix, uri):
-        if not hasattr(self, '_xmlns_attrs'):
-            self._xmlns_attrs = []
-        self._xmlns_attrs.append((prefix or 'xmlns', uri))
-        self._ns_contexts.append(self._current_context.copy())
-        self._current_context[uri] = prefix or None
-
-    def endPrefixMapping(self, prefix):
-        self._current_context = self._ns_contexts.pop()
-
-    def startElementNS(self, name, tagName , attrs):
-        # Retrieve xml namespace declaration attributes.
-        xmlns_uri = 'http://www.w3.org/2000/xmlns/'
-        xmlns_attrs = getattr(self, '_xmlns_attrs', None)
-        if xmlns_attrs is not None:
-            for aname, value in xmlns_attrs:
-                attrs._attrs[(xmlns_uri, aname)] = value
-            self._xmlns_attrs = []
-        uri, localname = name
-        if uri:
-            # When using namespaces, the reader may or may not
-            # provide us with the original name. If not, create
-            # *a* valid tagName from the current context.
-            if tagName is None:
-                prefix = self._current_context[uri]
-                if prefix:
-                    tagName = prefix + ":" + localname
-                else:
-                    tagName = localname
-            if self.document:
-                node = self.document.createElementNS(uri, tagName)
-            else:
-                node = self.buildDocument(uri, tagName)
-        else:
-            # When the tagname is not prefixed, it just appears as
-            # localname
-            if self.document:
-                node = self.document.createElement(localname)
-            else:
-                node = self.buildDocument(None, localname)
-
-        for aname,value in attrs.items():
-            a_uri, a_localname = aname
-            if a_uri == xmlns_uri:
-                if a_localname == 'xmlns':
-                    qname = a_localname
-                else:
-                    qname = 'xmlns:' + a_localname
-                attr = self.document.createAttributeNS(a_uri, qname)
-                node.setAttributeNodeNS(attr)
-            elif a_uri:
-                prefix = self._current_context[a_uri]
-                if prefix:
-                    qname = prefix + ":" + a_localname
-                else:
-                    qname = a_localname
-                attr = self.document.createAttributeNS(a_uri, qname)
-                node.setAttributeNodeNS(attr)
-            else:
-                attr = self.document.createAttribute(a_localname)
-                node.setAttributeNode(attr)
-            attr.value = value
-
-        self.lastEvent[1] = [(START_ELEMENT, node), None]
-        self.lastEvent = self.lastEvent[1]
-        self.push(node)
-
-    def endElementNS(self, name, tagName):
-        self.lastEvent[1] = [(END_ELEMENT, self.pop()), None]
-        self.lastEvent = self.lastEvent[1]
-
-    def startElement(self, name, attrs):
-        if self.document:
-            node = self.document.createElement(name)
-        else:
-            node = self.buildDocument(None, name)
-
-        for aname,value in attrs.items():
-            attr = self.document.createAttribute(aname)
-            attr.value = value
-            node.setAttributeNode(attr)
-
-        self.lastEvent[1] = [(START_ELEMENT, node), None]
-        self.lastEvent = self.lastEvent[1]
-        self.push(node)
-
-    def endElement(self, name):
-        self.lastEvent[1] = [(END_ELEMENT, self.pop()), None]
-        self.lastEvent = self.lastEvent[1]
-
-    def comment(self, s):
-        if self.document:
-            node = self.document.createComment(s)
-            self.lastEvent[1] = [(COMMENT, node), None]
-            self.lastEvent = self.lastEvent[1]
-        else:
-            event = [(COMMENT, s), None]
-            self.pending_events.append(event)
-
-    def processingInstruction(self, target, data):
-        if self.document:
-            node = self.document.createProcessingInstruction(target, data)
-            self.lastEvent[1] = [(PROCESSING_INSTRUCTION, node), None]
-            self.lastEvent = self.lastEvent[1]
-        else:
-            event = [(PROCESSING_INSTRUCTION, target, data), None]
-            self.pending_events.append(event)
-
-    def ignorableWhitespace(self, chars):
-        node = self.document.createTextNode(chars)
-        self.lastEvent[1] = [(IGNORABLE_WHITESPACE, node), None]
-        self.lastEvent = self.lastEvent[1]
-
-    def characters(self, chars):
-        node = self.document.createTextNode(chars)
-        self.lastEvent[1] = [(CHARACTERS, node), None]
-        self.lastEvent = self.lastEvent[1]
-
-    def startDocument(self):
-        if self.documentFactory is None:
-            import xml.dom.minidom
-            self.documentFactory = xml.dom.minidom.Document.implementation
-
-    def buildDocument(self, uri, tagname):
-        # Can't do that in startDocument, since we need the tagname
-        # XXX: obtain DocumentType
-        node = self.documentFactory.createDocument(uri, tagname, None)
-        self.document = node
-        self.lastEvent[1] = [(START_DOCUMENT, node), None]
-        self.lastEvent = self.lastEvent[1]
-        self.push(node)
-        # Put everything we have seen so far into the document
-        for e in self.pending_events:
-            if e[0][0] == PROCESSING_INSTRUCTION:
-                _,target,data = e[0]
-                n = self.document.createProcessingInstruction(target, data)
-                e[0] = (PROCESSING_INSTRUCTION, n)
-            elif e[0][0] == COMMENT:
-                n = self.document.createComment(e[0][1])
-                e[0] = (COMMENT, n)
-            else:
-                raise AssertionError("Unknown pending event ",e[0][0])
-            self.lastEvent[1] = e
-            self.lastEvent = e
-        self.pending_events = None
-        return node.firstChild
-
-    def endDocument(self):
-        self.lastEvent[1] = [(END_DOCUMENT, self.document), None]
-        self.pop()
-
-    def clear(self):
-        "clear(): Explicitly release parsing structures"
-        self.document = None
-
-class ErrorHandler:
-    def warning(self, exception):
-        print exception
-    def error(self, exception):
-        raise exception
-    def fatalError(self, exception):
-        raise exception
-
-class DOMEventStream:
-    def __init__(self, stream, parser, bufsize):
-        self.stream = stream
-        self.parser = parser
-        self.bufsize = bufsize
-        if not hasattr(self.parser, 'feed'):
-            self.getEvent = self._slurp
-        self.reset()
-
-    def reset(self):
-        self.pulldom = PullDOM()
-        # This content handler relies on namespace support
-        self.parser.setFeature(xml.sax.handler.feature_namespaces, 1)
-        self.parser.setContentHandler(self.pulldom)
-
-    def __getitem__(self, pos):
-        rc = self.getEvent()
-        if rc:
-            return rc
-        raise IndexError
-
-    def next(self):
-        rc = self.getEvent()
-        if rc:
-            return rc
-        raise StopIteration
-
-    def __iter__(self):
-        return self
-
-    def expandNode(self, node):
-        event = self.getEvent()
-        parents = [node]
-        while event:
-            token, cur_node = event
-            if cur_node is node:
-                return
-            if token != END_ELEMENT:
-                parents[-1].appendChild(cur_node)
-            if token == START_ELEMENT:
-                parents.append(cur_node)
-            elif token == END_ELEMENT:
-                del parents[-1]
-            event = self.getEvent()
-
-    def getEvent(self):
-        # use IncrementalParser interface, so we get the desired
-        # pull effect
-        if not self.pulldom.firstEvent[1]:
-            self.pulldom.lastEvent = self.pulldom.firstEvent
-        while not self.pulldom.firstEvent[1]:
-            buf = self.stream.read(self.bufsize)
-            if not buf:
-                self.parser.close()
-                return None
-            self.parser.feed(buf)
-        rc = self.pulldom.firstEvent[1][0]
-        self.pulldom.firstEvent[1] = self.pulldom.firstEvent[1][1]
-        return rc
-
-    def _slurp(self):
-        """ Fallback replacement for getEvent() using the
-            standard SAX2 interface, which means we slurp the
-            SAX events into memory (no performance gain, but
-            we are compatible to all SAX parsers).
-        """
-        self.parser.parse(self.stream)
-        self.getEvent = self._emit
-        return self._emit()
-
-    def _emit(self):
-        """ Fallback replacement for getEvent() that emits
-            the events that _slurp() read previously.
-        """
-        rc = self.pulldom.firstEvent[1][0]
-        self.pulldom.firstEvent[1] = self.pulldom.firstEvent[1][1]
-        return rc
-
-    def clear(self):
-        """clear(): Explicitly release parsing objects"""
-        self.pulldom.clear()
-        del self.pulldom
-        self.parser = None
-        self.stream = None
-
-class SAX2DOM(PullDOM):
-
-    def startElementNS(self, name, tagName , attrs):
-        PullDOM.startElementNS(self, name, tagName, attrs)
-        curNode = self.elementStack[-1]
-        parentNode = self.elementStack[-2]
-        parentNode.appendChild(curNode)
-
-    def startElement(self, name, attrs):
-        PullDOM.startElement(self, name, attrs)
-        curNode = self.elementStack[-1]
-        parentNode = self.elementStack[-2]
-        parentNode.appendChild(curNode)
-
-    def processingInstruction(self, target, data):
-        PullDOM.processingInstruction(self, target, data)
-        node = self.lastEvent[0][1]
-        parentNode = self.elementStack[-1]
-        parentNode.appendChild(node)
-
-    def ignorableWhitespace(self, chars):
-        PullDOM.ignorableWhitespace(self, chars)
-        node = self.lastEvent[0][1]
-        parentNode = self.elementStack[-1]
-        parentNode.appendChild(node)
-
-    def characters(self, chars):
-        PullDOM.characters(self, chars)
-        node = self.lastEvent[0][1]
-        parentNode = self.elementStack[-1]
-        parentNode.appendChild(node)
-
-
-default_bufsize = (2 ** 14) - 20
-
-def parse(stream_or_string, parser=None, bufsize=None):
-    if bufsize is None:
-        bufsize = default_bufsize
-    if type(stream_or_string) in _StringTypes:
-        stream = open(stream_or_string)
-    else:
-        stream = stream_or_string
-    if not parser:
-        parser = xml.sax.make_parser()
-    return DOMEventStream(stream, parser, bufsize)
-
-def parseString(string, parser=None):
-    try:
-        from cStringIO import StringIO
-    except ImportError:
-        from StringIO import StringIO
-
-    bufsize = len(string)
-    buf = StringIO(string)
-    if not parser:
-        parser = xml.sax.make_parser()
-    return DOMEventStream(buf, parser, bufsize)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/xmlbuilder.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/xmlbuilder.py
deleted file mode 100644
index c386b26..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/dom/xmlbuilder.py
+++ /dev/null
@@ -1,386 +0,0 @@
-"""Implementation of the DOM Level 3 'LS-Load' feature."""
-
-import copy
-import xml.dom
-
-from xml.dom.NodeFilter import NodeFilter
-
-
-__all__ = ["DOMBuilder", "DOMEntityResolver", "DOMInputSource"]
-
-
-class Options:
-    """Features object that has variables set for each DOMBuilder feature.
-
-    The DOMBuilder class uses an instance of this class to pass settings to
-    the ExpatBuilder class.
-    """
-
-    # Note that the DOMBuilder class in LoadSave constrains which of these
-    # values can be set using the DOM Level 3 LoadSave feature.
-
-    namespaces = 1
-    namespace_declarations = True
-    validation = False
-    external_parameter_entities = True
-    external_general_entities = True
-    external_dtd_subset = True
-    validate_if_schema = False
-    validate = False
-    datatype_normalization = False
-    create_entity_ref_nodes = True
-    entities = True
-    whitespace_in_element_content = True
-    cdata_sections = True
-    comments = True
-    charset_overrides_xml_encoding = True
-    infoset = False
-    supported_mediatypes_only = False
-
-    errorHandler = None
-    filter = None
-
-
-class DOMBuilder:
-    entityResolver = None
-    errorHandler = None
-    filter = None
-
-    ACTION_REPLACE = 1
-    ACTION_APPEND_AS_CHILDREN = 2
-    ACTION_INSERT_AFTER = 3
-    ACTION_INSERT_BEFORE = 4
-
-    _legal_actions = (ACTION_REPLACE, ACTION_APPEND_AS_CHILDREN,
-                      ACTION_INSERT_AFTER, ACTION_INSERT_BEFORE)
-
-    def __init__(self):
-        self._options = Options()
-
-    def _get_entityResolver(self):
-        return self.entityResolver
-    def _set_entityResolver(self, entityResolver):
-        self.entityResolver = entityResolver
-
-    def _get_errorHandler(self):
-        return self.errorHandler
-    def _set_errorHandler(self, errorHandler):
-        self.errorHandler = errorHandler
-
-    def _get_filter(self):
-        return self.filter
-    def _set_filter(self, filter):
-        self.filter = filter
-
-    def setFeature(self, name, state):
-        if self.supportsFeature(name):
-            state = state and 1 or 0
-            try:
-                settings = self._settings[(_name_xform(name), state)]
-            except KeyError:
-                raise xml.dom.NotSupportedErr(
-                    "unsupported feature: %r" % (name,))
-            else:
-                for name, value in settings:
-                    setattr(self._options, name, value)
-        else:
-            raise xml.dom.NotFoundErr("unknown feature: " + repr(name))
-
-    def supportsFeature(self, name):
-        return hasattr(self._options, _name_xform(name))
-
-    def canSetFeature(self, name, state):
-        key = (_name_xform(name), state and 1 or 0)
-        return key in self._settings
-
-    # This dictionary maps from (feature,value) to a list of
-    # (option,value) pairs that should be set on the Options object.
-    # If a (feature,value) setting is not in this dictionary, it is
-    # not supported by the DOMBuilder.
-    #
-    _settings = {
-        ("namespace_declarations", 0): [
-            ("namespace_declarations", 0)],
-        ("namespace_declarations", 1): [
-            ("namespace_declarations", 1)],
-        ("validation", 0): [
-            ("validation", 0)],
-        ("external_general_entities", 0): [
-            ("external_general_entities", 0)],
-        ("external_general_entities", 1): [
-            ("external_general_entities", 1)],
-        ("external_parameter_entities", 0): [
-            ("external_parameter_entities", 0)],
-        ("external_parameter_entities", 1): [
-            ("external_parameter_entities", 1)],
-        ("validate_if_schema", 0): [
-            ("validate_if_schema", 0)],
-        ("create_entity_ref_nodes", 0): [
-            ("create_entity_ref_nodes", 0)],
-        ("create_entity_ref_nodes", 1): [
-            ("create_entity_ref_nodes", 1)],
-        ("entities", 0): [
-            ("create_entity_ref_nodes", 0),
-            ("entities", 0)],
-        ("entities", 1): [
-            ("entities", 1)],
-        ("whitespace_in_element_content", 0): [
-            ("whitespace_in_element_content", 0)],
-        ("whitespace_in_element_content", 1): [
-            ("whitespace_in_element_content", 1)],
-        ("cdata_sections", 0): [
-            ("cdata_sections", 0)],
-        ("cdata_sections", 1): [
-            ("cdata_sections", 1)],
-        ("comments", 0): [
-            ("comments", 0)],
-        ("comments", 1): [
-            ("comments", 1)],
-        ("charset_overrides_xml_encoding", 0): [
-            ("charset_overrides_xml_encoding", 0)],
-        ("charset_overrides_xml_encoding", 1): [
-            ("charset_overrides_xml_encoding", 1)],
-        ("infoset", 0): [],
-        ("infoset", 1): [
-            ("namespace_declarations", 0),
-            ("validate_if_schema", 0),
-            ("create_entity_ref_nodes", 0),
-            ("entities", 0),
-            ("cdata_sections", 0),
-            ("datatype_normalization", 1),
-            ("whitespace_in_element_content", 1),
-            ("comments", 1),
-            ("charset_overrides_xml_encoding", 1)],
-        ("supported_mediatypes_only", 0): [
-            ("supported_mediatypes_only", 0)],
-        ("namespaces", 0): [
-            ("namespaces", 0)],
-        ("namespaces", 1): [
-            ("namespaces", 1)],
-    }
-
-    def getFeature(self, name):
-        xname = _name_xform(name)
-        try:
-            return getattr(self._options, xname)
-        except AttributeError:
-            if name == "infoset":
-                options = self._options
-                return (options.datatype_normalization
-                        and options.whitespace_in_element_content
-                        and options.comments
-                        and options.charset_overrides_xml_encoding
-                        and not (options.namespace_declarations
-                                 or options.validate_if_schema
-                                 or options.create_entity_ref_nodes
-                                 or options.entities
-                                 or options.cdata_sections))
-            raise xml.dom.NotFoundErr("feature %s not known" % repr(name))
-
-    def parseURI(self, uri):
-        if self.entityResolver:
-            input = self.entityResolver.resolveEntity(None, uri)
-        else:
-            input = DOMEntityResolver().resolveEntity(None, uri)
-        return self.parse(input)
-
-    def parse(self, input):
-        options = copy.copy(self._options)
-        options.filter = self.filter
-        options.errorHandler = self.errorHandler
-        fp = input.byteStream
-        if fp is None and options.systemId:
-            import urllib2
-            fp = urllib2.urlopen(input.systemId)
-        return self._parse_bytestream(fp, options)
-
-    def parseWithContext(self, input, cnode, action):
-        if action not in self._legal_actions:
-            raise ValueError("not a legal action")
-        raise NotImplementedError("Haven't written this yet...")
-
-    def _parse_bytestream(self, stream, options):
-        import xml.dom.expatbuilder
-        builder = xml.dom.expatbuilder.makeBuilder(options)
-        return builder.parseFile(stream)
-
-
-def _name_xform(name):
-    return name.lower().replace('-', '_')
-
-
-class DOMEntityResolver(object):
-    __slots__ = '_opener',
-
-    def resolveEntity(self, publicId, systemId):
-        assert systemId is not None
-        source = DOMInputSource()
-        source.publicId = publicId
-        source.systemId = systemId
-        source.byteStream = self._get_opener().open(systemId)
-
-        # determine the encoding if the transport provided it
-        source.encoding = self._guess_media_encoding(source)
-
-        # determine the base URI is we can
-        import posixpath, urlparse
-        parts = urlparse.urlparse(systemId)
-        scheme, netloc, path, params, query, fragment = parts
-        # XXX should we check the scheme here as well?
-        if path and not path.endswith("/"):
-            path = posixpath.dirname(path) + "/"
-            parts = scheme, netloc, path, params, query, fragment
-            source.baseURI = urlparse.urlunparse(parts)
-
-        return source
-
-    def _get_opener(self):
-        try:
-            return self._opener
-        except AttributeError:
-            self._opener = self._create_opener()
-            return self._opener
-
-    def _create_opener(self):
-        import urllib2
-        return urllib2.build_opener()
-
-    def _guess_media_encoding(self, source):
-        info = source.byteStream.info()
-        if "Content-Type" in info:
-            for param in info.getplist():
-                if param.startswith("charset="):
-                    return param.split("=", 1)[1].lower()
-
-
-class DOMInputSource(object):
-    __slots__ = ('byteStream', 'characterStream', 'stringData',
-                 'encoding', 'publicId', 'systemId', 'baseURI')
-
-    def __init__(self):
-        self.byteStream = None
-        self.characterStream = None
-        self.stringData = None
-        self.encoding = None
-        self.publicId = None
-        self.systemId = None
-        self.baseURI = None
-
-    def _get_byteStream(self):
-        return self.byteStream
-    def _set_byteStream(self, byteStream):
-        self.byteStream = byteStream
-
-    def _get_characterStream(self):
-        return self.characterStream
-    def _set_characterStream(self, characterStream):
-        self.characterStream = characterStream
-
-    def _get_stringData(self):
-        return self.stringData
-    def _set_stringData(self, data):
-        self.stringData = data
-
-    def _get_encoding(self):
-        return self.encoding
-    def _set_encoding(self, encoding):
-        self.encoding = encoding
-
-    def _get_publicId(self):
-        return self.publicId
-    def _set_publicId(self, publicId):
-        self.publicId = publicId
-
-    def _get_systemId(self):
-        return self.systemId
-    def _set_systemId(self, systemId):
-        self.systemId = systemId
-
-    def _get_baseURI(self):
-        return self.baseURI
-    def _set_baseURI(self, uri):
-        self.baseURI = uri
-
-
-class DOMBuilderFilter:
-    """Element filter which can be used to tailor construction of
-    a DOM instance.
-    """
-
-    # There's really no need for this class; concrete implementations
-    # should just implement the endElement() and startElement()
-    # methods as appropriate.  Using this makes it easy to only
-    # implement one of them.
-
-    FILTER_ACCEPT = 1
-    FILTER_REJECT = 2
-    FILTER_SKIP = 3
-    FILTER_INTERRUPT = 4
-
-    whatToShow = NodeFilter.SHOW_ALL
-
-    def _get_whatToShow(self):
-        return self.whatToShow
-
-    def acceptNode(self, element):
-        return self.FILTER_ACCEPT
-
-    def startContainer(self, element):
-        return self.FILTER_ACCEPT
-
-del NodeFilter
-
-
-class DocumentLS:
-    """Mixin to create documents that conform to the load/save spec."""
-
-    async = False
-
-    def _get_async(self):
-        return False
-    def _set_async(self, async):
-        if async:
-            raise xml.dom.NotSupportedErr(
-                "asynchronous document loading is not supported")
-
-    def abort(self):
-        # What does it mean to "clear" a document?  Does the
-        # documentElement disappear?
-        raise NotImplementedError(
-            "haven't figured out what this means yet")
-
-    def load(self, uri):
-        raise NotImplementedError("haven't written this yet")
-
-    def loadXML(self, source):
-        raise NotImplementedError("haven't written this yet")
-
-    def saveXML(self, snode):
-        if snode is None:
-            snode = self
-        elif snode.ownerDocument is not self:
-            raise xml.dom.WrongDocumentErr()
-        return snode.toxml()
-
-
-class DOMImplementationLS:
-    MODE_SYNCHRONOUS = 1
-    MODE_ASYNCHRONOUS = 2
-
-    def createDOMBuilder(self, mode, schemaType):
-        if schemaType is not None:
-            raise xml.dom.NotSupportedErr(
-                "schemaType not yet supported")
-        if mode == self.MODE_SYNCHRONOUS:
-            return DOMBuilder()
-        if mode == self.MODE_ASYNCHRONOUS:
-            raise xml.dom.NotSupportedErr(
-                "asynchronous builders are not supported")
-        raise ValueError("unknown value for mode")
-
-    def createDOMWriter(self):
-        raise NotImplementedError(
-            "the writer interface hasn't been written yet!")
-
-    def createDOMInputSource(self):
-        return DOMInputSource()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementInclude.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementInclude.py
deleted file mode 100644
index 967d85c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementInclude.py
+++ /dev/null
@@ -1,143 +0,0 @@
-#
-# ElementTree
-# $Id: ElementInclude.py 3375 2008-02-13 08:05:08Z fredrik $
-#
-# limited xinclude support for element trees
-#
-# history:
-# 2003-08-15 fl   created
-# 2003-11-14 fl   fixed default loader
-#
-# Copyright (c) 2003-2004 by Fredrik Lundh.  All rights reserved.
-#
-# fredrik@pythonware.com
-# http://www.pythonware.com
-#
-# --------------------------------------------------------------------
-# The ElementTree toolkit is
-#
-# Copyright (c) 1999-2008 by Fredrik Lundh
-#
-# By obtaining, using, and/or copying this software and/or its
-# associated documentation, you agree that you have read, understood,
-# and will comply with the following terms and conditions:
-#
-# Permission to use, copy, modify, and distribute this software and
-# its associated documentation for any purpose and without fee is
-# hereby granted, provided that the above copyright notice appears in
-# all copies, and that both that copyright notice and this permission
-# notice appear in supporting documentation, and that the name of
-# Secret Labs AB or the author not be used in advertising or publicity
-# pertaining to distribution of the software without specific, written
-# prior permission.
-#
-# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
-# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
-# ABILITY AND FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
-# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
-# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-# OF THIS SOFTWARE.
-# --------------------------------------------------------------------
-
-# Licensed to PSF under a Contributor Agreement.
-# See http://www.python.org/psf/license for licensing details.
-
-##
-# Limited XInclude support for the ElementTree package.
-##
-
-import copy
-from . import ElementTree
-
-XINCLUDE = "{http://www.w3.org/2001/XInclude}"
-
-XINCLUDE_INCLUDE = XINCLUDE + "include"
-XINCLUDE_FALLBACK = XINCLUDE + "fallback"
-
-##
-# Fatal include error.
-
-class FatalIncludeError(SyntaxError):
-    pass
-
-##
-# Default loader.  This loader reads an included resource from disk.
-#
-# @param href Resource reference.
-# @param parse Parse mode.  Either "xml" or "text".
-# @param encoding Optional text encoding.
-# @return The expanded resource.  If the parse mode is "xml", this
-#    is an ElementTree instance.  If the parse mode is "text", this
-#    is a Unicode string.  If the loader fails, it can return None
-#    or raise an IOError exception.
-# @throws IOError If the loader fails to load the resource.
-
-def default_loader(href, parse, encoding=None):
-    file = open(href)
-    if parse == "xml":
-        data = ElementTree.parse(file).getroot()
-    else:
-        data = file.read()
-        if encoding:
-            data = data.decode(encoding)
-    file.close()
-    return data
-
-##
-# Expand XInclude directives.
-#
-# @param elem Root element.
-# @param loader Optional resource loader.  If omitted, it defaults
-#     to {@link default_loader}.  If given, it should be a callable
-#     that implements the same interface as <b>default_loader</b>.
-# @throws FatalIncludeError If the function fails to include a given
-#     resource, or if the tree contains malformed XInclude elements.
-# @throws IOError If the function fails to load a given resource.
-
-def include(elem, loader=None):
-    if loader is None:
-        loader = default_loader
-    # look for xinclude elements
-    i = 0
-    while i < len(elem):
-        e = elem[i]
-        if e.tag == XINCLUDE_INCLUDE:
-            # process xinclude directive
-            href = e.get("href")
-            parse = e.get("parse", "xml")
-            if parse == "xml":
-                node = loader(href, parse)
-                if node is None:
-                    raise FatalIncludeError(
-                        "cannot load %r as %r" % (href, parse)
-                        )
-                node = copy.copy(node)
-                if e.tail:
-                    node.tail = (node.tail or "") + e.tail
-                elem[i] = node
-            elif parse == "text":
-                text = loader(href, parse, e.get("encoding"))
-                if text is None:
-                    raise FatalIncludeError(
-                        "cannot load %r as %r" % (href, parse)
-                        )
-                if i:
-                    node = elem[i-1]
-                    node.tail = (node.tail or "") + text + (e.tail or "")
-                else:
-                    elem.text = (elem.text or "") + text + (e.tail or "")
-                del elem[i]
-                continue
-            else:
-                raise FatalIncludeError(
-                    "unknown parse type in xi:include tag (%r)" % parse
-                )
-        elif e.tag == XINCLUDE_FALLBACK:
-            raise FatalIncludeError(
-                "xi:fallback tag must be child of xi:include (%r)" % e.tag
-                )
-        else:
-            include(e, loader)
-        i = i + 1
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementPath.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementPath.py
deleted file mode 100644
index 5c117c3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementPath.py
+++ /dev/null
@@ -1,303 +0,0 @@
-#
-# ElementTree
-# $Id: ElementPath.py 3375 2008-02-13 08:05:08Z fredrik $
-#
-# limited xpath support for element trees
-#
-# history:
-# 2003-05-23 fl   created
-# 2003-05-28 fl   added support for // etc
-# 2003-08-27 fl   fixed parsing of periods in element names
-# 2007-09-10 fl   new selection engine
-# 2007-09-12 fl   fixed parent selector
-# 2007-09-13 fl   added iterfind; changed findall to return a list
-# 2007-11-30 fl   added namespaces support
-# 2009-10-30 fl   added child element value filter
-#
-# Copyright (c) 2003-2009 by Fredrik Lundh.  All rights reserved.
-#
-# fredrik@pythonware.com
-# http://www.pythonware.com
-#
-# --------------------------------------------------------------------
-# The ElementTree toolkit is
-#
-# Copyright (c) 1999-2009 by Fredrik Lundh
-#
-# By obtaining, using, and/or copying this software and/or its
-# associated documentation, you agree that you have read, understood,
-# and will comply with the following terms and conditions:
-#
-# Permission to use, copy, modify, and distribute this software and
-# its associated documentation for any purpose and without fee is
-# hereby granted, provided that the above copyright notice appears in
-# all copies, and that both that copyright notice and this permission
-# notice appear in supporting documentation, and that the name of
-# Secret Labs AB or the author not be used in advertising or publicity
-# pertaining to distribution of the software without specific, written
-# prior permission.
-#
-# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
-# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
-# ABILITY AND FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
-# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
-# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-# OF THIS SOFTWARE.
-# --------------------------------------------------------------------
-
-# Licensed to PSF under a Contributor Agreement.
-# See http://www.python.org/psf/license for licensing details.
-
-##
-# Implementation module for XPath support.  There's usually no reason
-# to import this module directly; the <b>ElementTree</b> does this for
-# you, if needed.
-##
-
-import re
-
-xpath_tokenizer_re = re.compile(
-    "("
-    "'[^']*'|\"[^\"]*\"|"
-    "::|"
-    "//?|"
-    "\.\.|"
-    "\(\)|"
-    "[/.*:\[\]\(\)@=])|"
-    "((?:\{[^}]+\})?[^/\[\]\(\)@=\s]+)|"
-    "\s+"
-    )
-
-def xpath_tokenizer(pattern, namespaces=None):
-    for token in xpath_tokenizer_re.findall(pattern):
-        tag = token[1]
-        if tag and tag[0] != "{" and ":" in tag:
-            try:
-                prefix, uri = tag.split(":", 1)
-                if not namespaces:
-                    raise KeyError
-                yield token[0], "{%s}%s" % (namespaces[prefix], uri)
-            except KeyError:
-                raise SyntaxError("prefix %r not found in prefix map" % prefix)
-        else:
-            yield token
-
-def get_parent_map(context):
-    parent_map = context.parent_map
-    if parent_map is None:
-        context.parent_map = parent_map = {}
-        for p in context.root.iter():
-            for e in p:
-                parent_map[e] = p
-    return parent_map
-
-def prepare_child(next, token):
-    tag = token[1]
-    def select(context, result):
-        for elem in result:
-            for e in elem:
-                if e.tag == tag:
-                    yield e
-    return select
-
-def prepare_star(next, token):
-    def select(context, result):
-        for elem in result:
-            for e in elem:
-                yield e
-    return select
-
-def prepare_self(next, token):
-    def select(context, result):
-        for elem in result:
-            yield elem
-    return select
-
-def prepare_descendant(next, token):
-    token = next()
-    if token[0] == "*":
-        tag = "*"
-    elif not token[0]:
-        tag = token[1]
-    else:
-        raise SyntaxError("invalid descendant")
-    def select(context, result):
-        for elem in result:
-            for e in elem.iter(tag):
-                if e is not elem:
-                    yield e
-    return select
-
-def prepare_parent(next, token):
-    def select(context, result):
-        # FIXME: raise error if .. is applied at toplevel?
-        parent_map = get_parent_map(context)
-        result_map = {}
-        for elem in result:
-            if elem in parent_map:
-                parent = parent_map[elem]
-                if parent not in result_map:
-                    result_map[parent] = None
-                    yield parent
-    return select
-
-def prepare_predicate(next, token):
-    # FIXME: replace with real parser!!! refs:
-    # http://effbot.org/zone/simple-iterator-parser.htm
-    # http://javascript.crockford.com/tdop/tdop.html
-    signature = []
-    predicate = []
-    while 1:
-        token = next()
-        if token[0] == "]":
-            break
-        if token[0] and token[0][:1] in "'\"":
-            token = "'", token[0][1:-1]
-        signature.append(token[0] or "-")
-        predicate.append(token[1])
-    signature = "".join(signature)
-    # use signature to determine predicate type
-    if signature == "@-":
-        # [@attribute] predicate
-        key = predicate[1]
-        def select(context, result):
-            for elem in result:
-                if elem.get(key) is not None:
-                    yield elem
-        return select
-    if signature == "@-='":
-        # [@attribute='value']
-        key = predicate[1]
-        value = predicate[-1]
-        def select(context, result):
-            for elem in result:
-                if elem.get(key) == value:
-                    yield elem
-        return select
-    if signature == "-" and not re.match("\d+$", predicate[0]):
-        # [tag]
-        tag = predicate[0]
-        def select(context, result):
-            for elem in result:
-                if elem.find(tag) is not None:
-                    yield elem
-        return select
-    if signature == "-='" and not re.match("\d+$", predicate[0]):
-        # [tag='value']
-        tag = predicate[0]
-        value = predicate[-1]
-        def select(context, result):
-            for elem in result:
-                for e in elem.findall(tag):
-                    if "".join(e.itertext()) == value:
-                        yield elem
-                        break
-        return select
-    if signature == "-" or signature == "-()" or signature == "-()-":
-        # [index] or [last()] or [last()-index]
-        if signature == "-":
-            index = int(predicate[0]) - 1
-        else:
-            if predicate[0] != "last":
-                raise SyntaxError("unsupported function")
-            if signature == "-()-":
-                try:
-                    index = int(predicate[2]) - 1
-                except ValueError:
-                    raise SyntaxError("unsupported expression")
-            else:
-                index = -1
-        def select(context, result):
-            parent_map = get_parent_map(context)
-            for elem in result:
-                try:
-                    parent = parent_map[elem]
-                    # FIXME: what if the selector is "*" ?
-                    elems = list(parent.findall(elem.tag))
-                    if elems[index] is elem:
-                        yield elem
-                except (IndexError, KeyError):
-                    pass
-        return select
-    raise SyntaxError("invalid predicate")
-
-ops = {
-    "": prepare_child,
-    "*": prepare_star,
-    ".": prepare_self,
-    "..": prepare_parent,
-    "//": prepare_descendant,
-    "[": prepare_predicate,
-    }
-
-_cache = {}
-
-class _SelectorContext:
-    parent_map = None
-    def __init__(self, root):
-        self.root = root
-
-# --------------------------------------------------------------------
-
-##
-# Generate all matching objects.
-
-def iterfind(elem, path, namespaces=None):
-    # compile selector pattern
-    if path[-1:] == "/":
-        path = path + "*" # implicit all (FIXME: keep this?)
-    try:
-        selector = _cache[path]
-    except KeyError:
-        if len(_cache) > 100:
-            _cache.clear()
-        if path[:1] == "/":
-            raise SyntaxError("cannot use absolute path on element")
-        next = iter(xpath_tokenizer(path, namespaces)).next
-        token = next()
-        selector = []
-        while 1:
-            try:
-                selector.append(ops[token[0]](next, token))
-            except StopIteration:
-                raise SyntaxError("invalid path")
-            try:
-                token = next()
-                if token[0] == "/":
-                    token = next()
-            except StopIteration:
-                break
-        _cache[path] = selector
-    # execute selector pattern
-    result = [elem]
-    context = _SelectorContext(elem)
-    for select in selector:
-        result = select(context, result)
-    return result
-
-##
-# Find first matching object.
-
-def find(elem, path, namespaces=None):
-    try:
-        return iterfind(elem, path, namespaces).next()
-    except StopIteration:
-        return None
-
-##
-# Find all matching objects.
-
-def findall(elem, path, namespaces=None):
-    return list(iterfind(elem, path, namespaces))
-
-##
-# Find text for first matching object.
-
-def findtext(elem, path, default=None, namespaces=None):
-    try:
-        elem = iterfind(elem, path, namespaces).next()
-        return elem.text or ""
-    except StopIteration:
-        return default
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementTree.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementTree.py
deleted file mode 100644
index 65bb3a8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/ElementTree.py
+++ /dev/null
@@ -1,1649 +0,0 @@
-#
-# ElementTree
-# $Id: ElementTree.py 3440 2008-07-18 14:45:01Z fredrik $
-#
-# light-weight XML support for Python 2.3 and later.
-#
-# history (since 1.2.6):
-# 2005-11-12 fl   added tostringlist/fromstringlist helpers
-# 2006-07-05 fl   merged in selected changes from the 1.3 sandbox
-# 2006-07-05 fl   removed support for 2.1 and earlier
-# 2007-06-21 fl   added deprecation/future warnings
-# 2007-08-25 fl   added doctype hook, added parser version attribute etc
-# 2007-08-26 fl   added new serializer code (better namespace handling, etc)
-# 2007-08-27 fl   warn for broken /tag searches on tree level
-# 2007-09-02 fl   added html/text methods to serializer (experimental)
-# 2007-09-05 fl   added method argument to tostring/tostringlist
-# 2007-09-06 fl   improved error handling
-# 2007-09-13 fl   added itertext, iterfind; assorted cleanups
-# 2007-12-15 fl   added C14N hooks, copy method (experimental)
-#
-# Copyright (c) 1999-2008 by Fredrik Lundh.  All rights reserved.
-#
-# fredrik@pythonware.com
-# http://www.pythonware.com
-#
-# --------------------------------------------------------------------
-# The ElementTree toolkit is
-#
-# Copyright (c) 1999-2008 by Fredrik Lundh
-#
-# By obtaining, using, and/or copying this software and/or its
-# associated documentation, you agree that you have read, understood,
-# and will comply with the following terms and conditions:
-#
-# Permission to use, copy, modify, and distribute this software and
-# its associated documentation for any purpose and without fee is
-# hereby granted, provided that the above copyright notice appears in
-# all copies, and that both that copyright notice and this permission
-# notice appear in supporting documentation, and that the name of
-# Secret Labs AB or the author not be used in advertising or publicity
-# pertaining to distribution of the software without specific, written
-# prior permission.
-#
-# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
-# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
-# ABILITY AND FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
-# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
-# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-# OF THIS SOFTWARE.
-# --------------------------------------------------------------------
-
-# Licensed to PSF under a Contributor Agreement.
-# See http://www.python.org/psf/license for licensing details.
-
-__all__ = [
-    # public symbols
-    "Comment",
-    "dump",
-    "Element", "ElementTree",
-    "fromstring", "fromstringlist",
-    "iselement", "iterparse",
-    "parse", "ParseError",
-    "PI", "ProcessingInstruction",
-    "QName",
-    "SubElement",
-    "tostring", "tostringlist",
-    "TreeBuilder",
-    "VERSION",
-    "XML",
-    "XMLParser", "XMLTreeBuilder",
-    ]
-
-VERSION = "1.3.0"
-
-##
-# The <b>Element</b> type is a flexible container object, designed to
-# store hierarchical data structures in memory. The type can be
-# described as a cross between a list and a dictionary.
-# <p>
-# Each element has a number of properties associated with it:
-# <ul>
-# <li>a <i>tag</i>. This is a string identifying what kind of data
-# this element represents (the element type, in other words).</li>
-# <li>a number of <i>attributes</i>, stored in a Python dictionary.</li>
-# <li>a <i>text</i> string.</li>
-# <li>an optional <i>tail</i> string.</li>
-# <li>a number of <i>child elements</i>, stored in a Python sequence</li>
-# </ul>
-#
-# To create an element instance, use the {@link #Element} constructor
-# or the {@link #SubElement} factory function.
-# <p>
-# The {@link #ElementTree} class can be used to wrap an element
-# structure, and convert it from and to XML.
-##
-
-import sys
-import re
-import warnings
-
-
-class _SimpleElementPath(object):
-    # emulate pre-1.2 find/findtext/findall behaviour
-    def find(self, element, tag, namespaces=None):
-        for elem in element:
-            if elem.tag == tag:
-                return elem
-        return None
-    def findtext(self, element, tag, default=None, namespaces=None):
-        elem = self.find(element, tag)
-        if elem is None:
-            return default
-        return elem.text or ""
-    def iterfind(self, element, tag, namespaces=None):
-        if tag[:3] == ".//":
-            for elem in element.iter(tag[3:]):
-                yield elem
-        for elem in element:
-            if elem.tag == tag:
-                yield elem
-    def findall(self, element, tag, namespaces=None):
-        return list(self.iterfind(element, tag, namespaces))
-
-try:
-    from . import ElementPath
-except ImportError:
-    ElementPath = _SimpleElementPath()
-
-##
-# Parser error.  This is a subclass of <b>SyntaxError</b>.
-# <p>
-# In addition to the exception value, an exception instance contains a
-# specific exception code in the <b>code</b> attribute, and the line and
-# column of the error in the <b>position</b> attribute.
-
-class ParseError(SyntaxError):
-    pass
-
-# --------------------------------------------------------------------
-
-##
-# Checks if an object appears to be a valid element object.
-#
-# @param An element instance.
-# @return A true value if this is an element object.
-# @defreturn flag
-
-def iselement(element):
-    # FIXME: not sure about this; might be a better idea to look
-    # for tag/attrib/text attributes
-    return isinstance(element, Element) or hasattr(element, "tag")
-
-##
-# Element class.  This class defines the Element interface, and
-# provides a reference implementation of this interface.
-# <p>
-# The element name, attribute names, and attribute values can be
-# either ASCII strings (ordinary Python strings containing only 7-bit
-# ASCII characters) or Unicode strings.
-#
-# @param tag The element name.
-# @param attrib An optional dictionary, containing element attributes.
-# @param **extra Additional attributes, given as keyword arguments.
-# @see Element
-# @see SubElement
-# @see Comment
-# @see ProcessingInstruction
-
-class Element(object):
-    # <tag attrib>text<child/>...</tag>tail
-
-    ##
-    # (Attribute) Element tag.
-
-    tag = None
-
-    ##
-    # (Attribute) Element attribute dictionary.  Where possible, use
-    # {@link #Element.get},
-    # {@link #Element.set},
-    # {@link #Element.keys}, and
-    # {@link #Element.items} to access
-    # element attributes.
-
-    attrib = None
-
-    ##
-    # (Attribute) Text before first subelement.  This is either a
-    # string or the value None.  Note that if there was no text, this
-    # attribute may be either None or an empty string, depending on
-    # the parser.
-
-    text = None
-
-    ##
-    # (Attribute) Text after this element's end tag, but before the
-    # next sibling element's start tag.  This is either a string or
-    # the value None.  Note that if there was no text, this attribute
-    # may be either None or an empty string, depending on the parser.
-
-    tail = None # text after end tag, if any
-
-    # constructor
-
-    def __init__(self, tag, attrib={}, **extra):
-        attrib = attrib.copy()
-        attrib.update(extra)
-        self.tag = tag
-        self.attrib = attrib
-        self._children = []
-
-    def __repr__(self):
-        return "<Element %s at 0x%x>" % (repr(self.tag), id(self))
-
-    ##
-    # Creates a new element object of the same type as this element.
-    #
-    # @param tag Element tag.
-    # @param attrib Element attributes, given as a dictionary.
-    # @return A new element instance.
-
-    def makeelement(self, tag, attrib):
-        return self.__class__(tag, attrib)
-
-    ##
-    # (Experimental) Copies the current element.  This creates a
-    # shallow copy; subelements will be shared with the original tree.
-    #
-    # @return A new element instance.
-
-    def copy(self):
-        elem = self.makeelement(self.tag, self.attrib)
-        elem.text = self.text
-        elem.tail = self.tail
-        elem[:] = self
-        return elem
-
-    ##
-    # Returns the number of subelements.  Note that this only counts
-    # full elements; to check if there's any content in an element, you
-    # have to check both the length and the <b>text</b> attribute.
-    #
-    # @return The number of subelements.
-
-    def __len__(self):
-        return len(self._children)
-
-    def __nonzero__(self):
-        warnings.warn(
-            "The behavior of this method will change in future versions.  "
-            "Use specific 'len(elem)' or 'elem is not None' test instead.",
-            FutureWarning, stacklevel=2
-            )
-        return len(self._children) != 0 # emulate old behaviour, for now
-
-    ##
-    # Returns the given subelement, by index.
-    #
-    # @param index What subelement to return.
-    # @return The given subelement.
-    # @exception IndexError If the given element does not exist.
-
-    def __getitem__(self, index):
-        return self._children[index]
-
-    ##
-    # Replaces the given subelement, by index.
-    #
-    # @param index What subelement to replace.
-    # @param element The new element value.
-    # @exception IndexError If the given element does not exist.
-
-    def __setitem__(self, index, element):
-        # if isinstance(index, slice):
-        #     for elt in element:
-        #         assert iselement(elt)
-        # else:
-        #     assert iselement(element)
-        self._children[index] = element
-
-    ##
-    # Deletes the given subelement, by index.
-    #
-    # @param index What subelement to delete.
-    # @exception IndexError If the given element does not exist.
-
-    def __delitem__(self, index):
-        del self._children[index]
-
-    ##
-    # Adds a subelement to the end of this element.  In document order,
-    # the new element will appear after the last existing subelement (or
-    # directly after the text, if it's the first subelement), but before
-    # the end tag for this element.
-    #
-    # @param element The element to add.
-
-    def append(self, element):
-        # assert iselement(element)
-        self._children.append(element)
-
-    ##
-    # Appends subelements from a sequence.
-    #
-    # @param elements A sequence object with zero or more elements.
-    # @since 1.3
-
-    def extend(self, elements):
-        # for element in elements:
-        #     assert iselement(element)
-        self._children.extend(elements)
-
-    ##
-    # Inserts a subelement at the given position in this element.
-    #
-    # @param index Where to insert the new subelement.
-
-    def insert(self, index, element):
-        # assert iselement(element)
-        self._children.insert(index, element)
-
-    ##
-    # Removes a matching subelement.  Unlike the <b>find</b> methods,
-    # this method compares elements based on identity, not on tag
-    # value or contents.  To remove subelements by other means, the
-    # easiest way is often to use a list comprehension to select what
-    # elements to keep, and use slice assignment to update the parent
-    # element.
-    #
-    # @param element What element to remove.
-    # @exception ValueError If a matching element could not be found.
-
-    def remove(self, element):
-        # assert iselement(element)
-        self._children.remove(element)
-
-    ##
-    # (Deprecated) Returns all subelements.  The elements are returned
-    # in document order.
-    #
-    # @return A list of subelements.
-    # @defreturn list of Element instances
-
-    def getchildren(self):
-        warnings.warn(
-            "This method will be removed in future versions.  "
-            "Use 'list(elem)' or iteration over elem instead.",
-            DeprecationWarning, stacklevel=2
-            )
-        return self._children
-
-    ##
-    # Finds the first matching subelement, by tag name or path.
-    #
-    # @param path What element to look for.
-    # @keyparam namespaces Optional namespace prefix map.
-    # @return The first matching element, or None if no element was found.
-    # @defreturn Element or None
-
-    def find(self, path, namespaces=None):
-        return ElementPath.find(self, path, namespaces)
-
-    ##
-    # Finds text for the first matching subelement, by tag name or path.
-    #
-    # @param path What element to look for.
-    # @param default What to return if the element was not found.
-    # @keyparam namespaces Optional namespace prefix map.
-    # @return The text content of the first matching element, or the
-    #     default value no element was found.  Note that if the element
-    #     is found, but has no text content, this method returns an
-    #     empty string.
-    # @defreturn string
-
-    def findtext(self, path, default=None, namespaces=None):
-        return ElementPath.findtext(self, path, default, namespaces)
-
-    ##
-    # Finds all matching subelements, by tag name or path.
-    #
-    # @param path What element to look for.
-    # @keyparam namespaces Optional namespace prefix map.
-    # @return A list or other sequence containing all matching elements,
-    #    in document order.
-    # @defreturn list of Element instances
-
-    def findall(self, path, namespaces=None):
-        return ElementPath.findall(self, path, namespaces)
-
-    ##
-    # Finds all matching subelements, by tag name or path.
-    #
-    # @param path What element to look for.
-    # @keyparam namespaces Optional namespace prefix map.
-    # @return An iterator or sequence containing all matching elements,
-    #    in document order.
-    # @defreturn a generated sequence of Element instances
-
-    def iterfind(self, path, namespaces=None):
-        return ElementPath.iterfind(self, path, namespaces)
-
-    ##
-    # Resets an element.  This function removes all subelements, clears
-    # all attributes, and sets the <b>text</b> and <b>tail</b> attributes
-    # to None.
-
-    def clear(self):
-        self.attrib.clear()
-        self._children = []
-        self.text = self.tail = None
-
-    ##
-    # Gets an element attribute.  Equivalent to <b>attrib.get</b>, but
-    # some implementations may handle this a bit more efficiently.
-    #
-    # @param key What attribute to look for.
-    # @param default What to return if the attribute was not found.
-    # @return The attribute value, or the default value, if the
-    #     attribute was not found.
-    # @defreturn string or None
-
-    def get(self, key, default=None):
-        return self.attrib.get(key, default)
-
-    ##
-    # Sets an element attribute.  Equivalent to <b>attrib[key] = value</b>,
-    # but some implementations may handle this a bit more efficiently.
-    #
-    # @param key What attribute to set.
-    # @param value The attribute value.
-
-    def set(self, key, value):
-        self.attrib[key] = value
-
-    ##
-    # Gets a list of attribute names.  The names are returned in an
-    # arbitrary order (just like for an ordinary Python dictionary).
-    # Equivalent to <b>attrib.keys()</b>.
-    #
-    # @return A list of element attribute names.
-    # @defreturn list of strings
-
-    def keys(self):
-        return self.attrib.keys()
-
-    ##
-    # Gets element attributes, as a sequence.  The attributes are
-    # returned in an arbitrary order.  Equivalent to <b>attrib.items()</b>.
-    #
-    # @return A list of (name, value) tuples for all attributes.
-    # @defreturn list of (string, string) tuples
-
-    def items(self):
-        return self.attrib.items()
-
-    ##
-    # Creates a tree iterator.  The iterator loops over this element
-    # and all subelements, in document order, and returns all elements
-    # with a matching tag.
-    # <p>
-    # If the tree structure is modified during iteration, new or removed
-    # elements may or may not be included.  To get a stable set, use the
-    # list() function on the iterator, and loop over the resulting list.
-    #
-    # @param tag What tags to look for (default is to return all elements).
-    # @return An iterator containing all the matching elements.
-    # @defreturn iterator
-
-    def iter(self, tag=None):
-        if tag == "*":
-            tag = None
-        if tag is None or self.tag == tag:
-            yield self
-        for e in self._children:
-            for e in e.iter(tag):
-                yield e
-
-    # compatibility
-    def getiterator(self, tag=None):
-        # Change for a DeprecationWarning in 1.4
-        warnings.warn(
-            "This method will be removed in future versions.  "
-            "Use 'elem.iter()' or 'list(elem.iter())' instead.",
-            PendingDeprecationWarning, stacklevel=2
-        )
-        return list(self.iter(tag))
-
-    ##
-    # Creates a text iterator.  The iterator loops over this element
-    # and all subelements, in document order, and returns all inner
-    # text.
-    #
-    # @return An iterator containing all inner text.
-    # @defreturn iterator
-
-    def itertext(self):
-        tag = self.tag
-        if not isinstance(tag, basestring) and tag is not None:
-            return
-        if self.text:
-            yield self.text
-        for e in self:
-            for s in e.itertext():
-                yield s
-            if e.tail:
-                yield e.tail
-
-# compatibility
-_Element = _ElementInterface = Element
-
-##
-# Subelement factory.  This function creates an element instance, and
-# appends it to an existing element.
-# <p>
-# The element name, attribute names, and attribute values can be
-# either 8-bit ASCII strings or Unicode strings.
-#
-# @param parent The parent element.
-# @param tag The subelement name.
-# @param attrib An optional dictionary, containing element attributes.
-# @param **extra Additional attributes, given as keyword arguments.
-# @return An element instance.
-# @defreturn Element
-
-def SubElement(parent, tag, attrib={}, **extra):
-    attrib = attrib.copy()
-    attrib.update(extra)
-    element = parent.makeelement(tag, attrib)
-    parent.append(element)
-    return element
-
-##
-# Comment element factory.  This factory function creates a special
-# element that will be serialized as an XML comment by the standard
-# serializer.
-# <p>
-# The comment string can be either an 8-bit ASCII string or a Unicode
-# string.
-#
-# @param text A string containing the comment string.
-# @return An element instance, representing a comment.
-# @defreturn Element
-
-def Comment(text=None):
-    element = Element(Comment)
-    element.text = text
-    return element
-
-##
-# PI element factory.  This factory function creates a special element
-# that will be serialized as an XML processing instruction by the standard
-# serializer.
-#
-# @param target A string containing the PI target.
-# @param text A string containing the PI contents, if any.
-# @return An element instance, representing a PI.
-# @defreturn Element
-
-def ProcessingInstruction(target, text=None):
-    element = Element(ProcessingInstruction)
-    element.text = target
-    if text:
-        element.text = element.text + " " + text
-    return element
-
-PI = ProcessingInstruction
-
-##
-# QName wrapper.  This can be used to wrap a QName attribute value, in
-# order to get proper namespace handling on output.
-#
-# @param text A string containing the QName value, in the form {uri}local,
-#     or, if the tag argument is given, the URI part of a QName.
-# @param tag Optional tag.  If given, the first argument is interpreted as
-#     an URI, and this argument is interpreted as a local name.
-# @return An opaque object, representing the QName.
-
-class QName(object):
-    def __init__(self, text_or_uri, tag=None):
-        if tag:
-            text_or_uri = "{%s}%s" % (text_or_uri, tag)
-        self.text = text_or_uri
-    def __str__(self):
-        return self.text
-    def __hash__(self):
-        return hash(self.text)
-    def __cmp__(self, other):
-        if isinstance(other, QName):
-            return cmp(self.text, other.text)
-        return cmp(self.text, other)
-
-# --------------------------------------------------------------------
-
-##
-# ElementTree wrapper class.  This class represents an entire element
-# hierarchy, and adds some extra support for serialization to and from
-# standard XML.
-#
-# @param element Optional root element.
-# @keyparam file Optional file handle or file name.  If given, the
-#     tree is initialized with the contents of this XML file.
-
-class ElementTree(object):
-
-    def __init__(self, element=None, file=None):
-        # assert element is None or iselement(element)
-        self._root = element # first node
-        if file:
-            self.parse(file)
-
-    ##
-    # Gets the root element for this tree.
-    #
-    # @return An element instance.
-    # @defreturn Element
-
-    def getroot(self):
-        return self._root
-
-    ##
-    # Replaces the root element for this tree.  This discards the
-    # current contents of the tree, and replaces it with the given
-    # element.  Use with care.
-    #
-    # @param element An element instance.
-
-    def _setroot(self, element):
-        # assert iselement(element)
-        self._root = element
-
-    ##
-    # Loads an external XML document into this element tree.
-    #
-    # @param source A file name or file object.  If a file object is
-    #     given, it only has to implement a <b>read(n)</b> method.
-    # @keyparam parser An optional parser instance.  If not given, the
-    #     standard {@link XMLParser} parser is used.
-    # @return The document root element.
-    # @defreturn Element
-    # @exception ParseError If the parser fails to parse the document.
-
-    def parse(self, source, parser=None):
-        if not hasattr(source, "read"):
-            source = open(source, "rb")
-        if not parser:
-            parser = XMLParser(target=TreeBuilder())
-        while 1:
-            data = source.read(65536)
-            if not data:
-                break
-            parser.feed(data)
-        self._root = parser.close()
-        return self._root
-
-    ##
-    # Creates a tree iterator for the root element.  The iterator loops
-    # over all elements in this tree, in document order.
-    #
-    # @param tag What tags to look for (default is to return all elements)
-    # @return An iterator.
-    # @defreturn iterator
-
-    def iter(self, tag=None):
-        # assert self._root is not None
-        return self._root.iter(tag)
-
-    # compatibility
-    def getiterator(self, tag=None):
-        # Change for a DeprecationWarning in 1.4
-        warnings.warn(
-            "This method will be removed in future versions.  "
-            "Use 'tree.iter()' or 'list(tree.iter())' instead.",
-            PendingDeprecationWarning, stacklevel=2
-        )
-        return list(self.iter(tag))
-
-    ##
-    # Finds the first toplevel element with given tag.
-    # Same as getroot().find(path).
-    #
-    # @param path What element to look for.
-    # @keyparam namespaces Optional namespace prefix map.
-    # @return The first matching element, or None if no element was found.
-    # @defreturn Element or None
-
-    def find(self, path, namespaces=None):
-        # assert self._root is not None
-        if path[:1] == "/":
-            path = "." + path
-            warnings.warn(
-                "This search is broken in 1.3 and earlier, and will be "
-                "fixed in a future version.  If you rely on the current "
-                "behaviour, change it to %r" % path,
-                FutureWarning, stacklevel=2
-                )
-        return self._root.find(path, namespaces)
-
-    ##
-    # Finds the element text for the first toplevel element with given
-    # tag.  Same as getroot().findtext(path).
-    #
-    # @param path What toplevel element to look for.
-    # @param default What to return if the element was not found.
-    # @keyparam namespaces Optional namespace prefix map.
-    # @return The text content of the first matching element, or the
-    #     default value no element was found.  Note that if the element
-    #     is found, but has no text content, this method returns an
-    #     empty string.
-    # @defreturn string
-
-    def findtext(self, path, default=None, namespaces=None):
-        # assert self._root is not None
-        if path[:1] == "/":
-            path = "." + path
-            warnings.warn(
-                "This search is broken in 1.3 and earlier, and will be "
-                "fixed in a future version.  If you rely on the current "
-                "behaviour, change it to %r" % path,
-                FutureWarning, stacklevel=2
-                )
-        return self._root.findtext(path, default, namespaces)
-
-    ##
-    # Finds all toplevel elements with the given tag.
-    # Same as getroot().findall(path).
-    #
-    # @param path What element to look for.
-    # @keyparam namespaces Optional namespace prefix map.
-    # @return A list or iterator containing all matching elements,
-    #    in document order.
-    # @defreturn list of Element instances
-
-    def findall(self, path, namespaces=None):
-        # assert self._root is not None
-        if path[:1] == "/":
-            path = "." + path
-            warnings.warn(
-                "This search is broken in 1.3 and earlier, and will be "
-                "fixed in a future version.  If you rely on the current "
-                "behaviour, change it to %r" % path,
-                FutureWarning, stacklevel=2
-                )
-        return self._root.findall(path, namespaces)
-
-    ##
-    # Finds all matching subelements, by tag name or path.
-    # Same as getroot().iterfind(path).
-    #
-    # @param path What element to look for.
-    # @keyparam namespaces Optional namespace prefix map.
-    # @return An iterator or sequence containing all matching elements,
-    #    in document order.
-    # @defreturn a generated sequence of Element instances
-
-    def iterfind(self, path, namespaces=None):
-        # assert self._root is not None
-        if path[:1] == "/":
-            path = "." + path
-            warnings.warn(
-                "This search is broken in 1.3 and earlier, and will be "
-                "fixed in a future version.  If you rely on the current "
-                "behaviour, change it to %r" % path,
-                FutureWarning, stacklevel=2
-                )
-        return self._root.iterfind(path, namespaces)
-
-    ##
-    # Writes the element tree to a file, as XML.
-    #
-    # @def write(file, **options)
-    # @param file A file name, or a file object opened for writing.
-    # @param **options Options, given as keyword arguments.
-    # @keyparam encoding Optional output encoding (default is US-ASCII).
-    # @keyparam method Optional output method ("xml", "html", "text" or
-    #     "c14n"; default is "xml").
-    # @keyparam xml_declaration Controls if an XML declaration should
-    #     be added to the file.  Use False for never, True for always,
-    #     None for only if not US-ASCII or UTF-8.  None is default.
-
-    def write(self, file_or_filename,
-              # keyword arguments
-              encoding=None,
-              xml_declaration=None,
-              default_namespace=None,
-              method=None):
-        # assert self._root is not None
-        if not method:
-            method = "xml"
-        elif method not in _serialize:
-            # FIXME: raise an ImportError for c14n if ElementC14N is missing?
-            raise ValueError("unknown method %r" % method)
-        if hasattr(file_or_filename, "write"):
-            file = file_or_filename
-        else:
-            file = open(file_or_filename, "wb")
-        write = file.write
-        if not encoding:
-            if method == "c14n":
-                encoding = "utf-8"
-            else:
-                encoding = "us-ascii"
-        elif xml_declaration or (xml_declaration is None and
-                                 encoding not in ("utf-8", "us-ascii")):
-            if method == "xml":
-                write("<?xml version='1.0' encoding='%s'?>\n" % encoding)
-        if method == "text":
-            _serialize_text(write, self._root, encoding)
-        else:
-            qnames, namespaces = _namespaces(
-                self._root, encoding, default_namespace
-                )
-            serialize = _serialize[method]
-            serialize(write, self._root, encoding, qnames, namespaces)
-        if file_or_filename is not file:
-            file.close()
-
-    def write_c14n(self, file):
-        # lxml.etree compatibility.  use output method instead
-        return self.write(file, method="c14n")
-
-# --------------------------------------------------------------------
-# serialization support
-
-def _namespaces(elem, encoding, default_namespace=None):
-    # identify namespaces used in this tree
-
-    # maps qnames to *encoded* prefix:local names
-    qnames = {None: None}
-
-    # maps uri:s to prefixes
-    namespaces = {}
-    if default_namespace:
-        namespaces[default_namespace] = ""
-
-    def encode(text):
-        return text.encode(encoding)
-
-    def add_qname(qname):
-        # calculate serialized qname representation
-        try:
-            if qname[:1] == "{":
-                uri, tag = qname[1:].rsplit("}", 1)
-                prefix = namespaces.get(uri)
-                if prefix is None:
-                    prefix = _namespace_map.get(uri)
-                    if prefix is None:
-                        prefix = "ns%d" % len(namespaces)
-                    if prefix != "xml":
-                        namespaces[uri] = prefix
-                if prefix:
-                    qnames[qname] = encode("%s:%s" % (prefix, tag))
-                else:
-                    qnames[qname] = encode(tag) # default element
-            else:
-                if default_namespace:
-                    # FIXME: can this be handled in XML 1.0?
-                    raise ValueError(
-                        "cannot use non-qualified names with "
-                        "default_namespace option"
-                        )
-                qnames[qname] = encode(qname)
-        except TypeError:
-            _raise_serialization_error(qname)
-
-    # populate qname and namespaces table
-    try:
-        iterate = elem.iter
-    except AttributeError:
-        iterate = elem.getiterator # cET compatibility
-    for elem in iterate():
-        tag = elem.tag
-        if isinstance(tag, QName):
-            if tag.text not in qnames:
-                add_qname(tag.text)
-        elif isinstance(tag, basestring):
-            if tag not in qnames:
-                add_qname(tag)
-        elif tag is not None and tag is not Comment and tag is not PI:
-            _raise_serialization_error(tag)
-        for key, value in elem.items():
-            if isinstance(key, QName):
-                key = key.text
-            if key not in qnames:
-                add_qname(key)
-            if isinstance(value, QName) and value.text not in qnames:
-                add_qname(value.text)
-        text = elem.text
-        if isinstance(text, QName) and text.text not in qnames:
-            add_qname(text.text)
-    return qnames, namespaces
-
-def _serialize_xml(write, elem, encoding, qnames, namespaces):
-    tag = elem.tag
-    text = elem.text
-    if tag is Comment:
-        write("<!--%s-->" % _encode(text, encoding))
-    elif tag is ProcessingInstruction:
-        write("<?%s?>" % _encode(text, encoding))
-    else:
-        tag = qnames[tag]
-        if tag is None:
-            if text:
-                write(_escape_cdata(text, encoding))
-            for e in elem:
-                _serialize_xml(write, e, encoding, qnames, None)
-        else:
-            write("<" + tag)
-            items = elem.items()
-            if items or namespaces:
-                if namespaces:
-                    for v, k in sorted(namespaces.items(),
-                                       key=lambda x: x[1]):  # sort on prefix
-                        if k:
-                            k = ":" + k
-                        write(" xmlns%s=\"%s\"" % (
-                            k.encode(encoding),
-                            _escape_attrib(v, encoding)
-                            ))
-                for k, v in sorted(items):  # lexical order
-                    if isinstance(k, QName):
-                        k = k.text
-                    if isinstance(v, QName):
-                        v = qnames[v.text]
-                    else:
-                        v = _escape_attrib(v, encoding)
-                    write(" %s=\"%s\"" % (qnames[k], v))
-            if text or len(elem):
-                write(">")
-                if text:
-                    write(_escape_cdata(text, encoding))
-                for e in elem:
-                    _serialize_xml(write, e, encoding, qnames, None)
-                write("</" + tag + ">")
-            else:
-                write(" />")
-    if elem.tail:
-        write(_escape_cdata(elem.tail, encoding))
-
-HTML_EMPTY = ("area", "base", "basefont", "br", "col", "frame", "hr",
-              "img", "input", "isindex", "link", "meta" "param")
-
-try:
-    HTML_EMPTY = set(HTML_EMPTY)
-except NameError:
-    pass
-
-def _serialize_html(write, elem, encoding, qnames, namespaces):
-    tag = elem.tag
-    text = elem.text
-    if tag is Comment:
-        write("<!--%s-->" % _escape_cdata(text, encoding))
-    elif tag is ProcessingInstruction:
-        write("<?%s?>" % _escape_cdata(text, encoding))
-    else:
-        tag = qnames[tag]
-        if tag is None:
-            if text:
-                write(_escape_cdata(text, encoding))
-            for e in elem:
-                _serialize_html(write, e, encoding, qnames, None)
-        else:
-            write("<" + tag)
-            items = elem.items()
-            if items or namespaces:
-                if namespaces:
-                    for v, k in sorted(namespaces.items(),
-                                       key=lambda x: x[1]):  # sort on prefix
-                        if k:
-                            k = ":" + k
-                        write(" xmlns%s=\"%s\"" % (
-                            k.encode(encoding),
-                            _escape_attrib(v, encoding)
-                            ))
-                for k, v in sorted(items):  # lexical order
-                    if isinstance(k, QName):
-                        k = k.text
-                    if isinstance(v, QName):
-                        v = qnames[v.text]
-                    else:
-                        v = _escape_attrib_html(v, encoding)
-                    # FIXME: handle boolean attributes
-                    write(" %s=\"%s\"" % (qnames[k], v))
-            write(">")
-            tag = tag.lower()
-            if text:
-                if tag == "script" or tag == "style":
-                    write(_encode(text, encoding))
-                else:
-                    write(_escape_cdata(text, encoding))
-            for e in elem:
-                _serialize_html(write, e, encoding, qnames, None)
-            if tag not in HTML_EMPTY:
-                write("</" + tag + ">")
-    if elem.tail:
-        write(_escape_cdata(elem.tail, encoding))
-
-def _serialize_text(write, elem, encoding):
-    for part in elem.itertext():
-        write(part.encode(encoding))
-    if elem.tail:
-        write(elem.tail.encode(encoding))
-
-_serialize = {
-    "xml": _serialize_xml,
-    "html": _serialize_html,
-    "text": _serialize_text,
-# this optional method is imported at the end of the module
-#   "c14n": _serialize_c14n,
-}
-
-##
-# Registers a namespace prefix.  The registry is global, and any
-# existing mapping for either the given prefix or the namespace URI
-# will be removed.
-#
-# @param prefix Namespace prefix.
-# @param uri Namespace uri.  Tags and attributes in this namespace
-#     will be serialized with the given prefix, if at all possible.
-# @exception ValueError If the prefix is reserved, or is otherwise
-#     invalid.
-
-def register_namespace(prefix, uri):
-    if re.match("ns\d+$", prefix):
-        raise ValueError("Prefix format reserved for internal use")
-    for k, v in _namespace_map.items():
-        if k == uri or v == prefix:
-            del _namespace_map[k]
-    _namespace_map[uri] = prefix
-
-_namespace_map = {
-    # "well-known" namespace prefixes
-    "http://www.w3.org/XML/1998/namespace": "xml",
-    "http://www.w3.org/1999/xhtml": "html",
-    "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf",
-    "http://schemas.xmlsoap.org/wsdl/": "wsdl",
-    # xml schema
-    "http://www.w3.org/2001/XMLSchema": "xs",
-    "http://www.w3.org/2001/XMLSchema-instance": "xsi",
-    # dublin core
-    "http://purl.org/dc/elements/1.1/": "dc",
-}
-
-def _raise_serialization_error(text):
-    raise TypeError(
-        "cannot serialize %r (type %s)" % (text, type(text).__name__)
-        )
-
-def _encode(text, encoding):
-    try:
-        return text.encode(encoding, "xmlcharrefreplace")
-    except (TypeError, AttributeError):
-        _raise_serialization_error(text)
-
-def _escape_cdata(text, encoding):
-    # escape character data
-    try:
-        # it's worth avoiding do-nothing calls for strings that are
-        # shorter than 500 character, or so.  assume that's, by far,
-        # the most common case in most applications.
-        if "&" in text:
-            text = text.replace("&", "&amp;")
-        if "<" in text:
-            text = text.replace("<", "&lt;")
-        if ">" in text:
-            text = text.replace(">", "&gt;")
-        return text.encode(encoding, "xmlcharrefreplace")
-    except (TypeError, AttributeError):
-        _raise_serialization_error(text)
-
-def _escape_attrib(text, encoding):
-    # escape attribute value
-    try:
-        if "&" in text:
-            text = text.replace("&", "&amp;")
-        if "<" in text:
-            text = text.replace("<", "&lt;")
-        if ">" in text:
-            text = text.replace(">", "&gt;")
-        if "\"" in text:
-            text = text.replace("\"", "&quot;")
-        if "\n" in text:
-            text = text.replace("\n", "&#10;")
-        return text.encode(encoding, "xmlcharrefreplace")
-    except (TypeError, AttributeError):
-        _raise_serialization_error(text)
-
-def _escape_attrib_html(text, encoding):
-    # escape attribute value
-    try:
-        if "&" in text:
-            text = text.replace("&", "&amp;")
-        if ">" in text:
-            text = text.replace(">", "&gt;")
-        if "\"" in text:
-            text = text.replace("\"", "&quot;")
-        return text.encode(encoding, "xmlcharrefreplace")
-    except (TypeError, AttributeError):
-        _raise_serialization_error(text)
-
-# --------------------------------------------------------------------
-
-##
-# Generates a string representation of an XML element, including all
-# subelements.
-#
-# @param element An Element instance.
-# @keyparam encoding Optional output encoding (default is US-ASCII).
-# @keyparam method Optional output method ("xml", "html", "text" or
-#     "c14n"; default is "xml").
-# @return An encoded string containing the XML data.
-# @defreturn string
-
-def tostring(element, encoding=None, method=None):
-    class dummy:
-        pass
-    data = []
-    file = dummy()
-    file.write = data.append
-    ElementTree(element).write(file, encoding, method=method)
-    return "".join(data)
-
-##
-# Generates a string representation of an XML element, including all
-# subelements.  The string is returned as a sequence of string fragments.
-#
-# @param element An Element instance.
-# @keyparam encoding Optional output encoding (default is US-ASCII).
-# @keyparam method Optional output method ("xml", "html", "text" or
-#     "c14n"; default is "xml").
-# @return A sequence object containing the XML data.
-# @defreturn sequence
-# @since 1.3
-
-def tostringlist(element, encoding=None, method=None):
-    class dummy:
-        pass
-    data = []
-    file = dummy()
-    file.write = data.append
-    ElementTree(element).write(file, encoding, method=method)
-    # FIXME: merge small fragments into larger parts
-    return data
-
-##
-# Writes an element tree or element structure to sys.stdout.  This
-# function should be used for debugging only.
-# <p>
-# The exact output format is implementation dependent.  In this
-# version, it's written as an ordinary XML file.
-#
-# @param elem An element tree or an individual element.
-
-def dump(elem):
-    # debugging
-    if not isinstance(elem, ElementTree):
-        elem = ElementTree(elem)
-    elem.write(sys.stdout)
-    tail = elem.getroot().tail
-    if not tail or tail[-1] != "\n":
-        sys.stdout.write("\n")
-
-# --------------------------------------------------------------------
-# parsing
-
-##
-# Parses an XML document into an element tree.
-#
-# @param source A filename or file object containing XML data.
-# @param parser An optional parser instance.  If not given, the
-#     standard {@link XMLParser} parser is used.
-# @return An ElementTree instance
-
-def parse(source, parser=None):
-    tree = ElementTree()
-    tree.parse(source, parser)
-    return tree
-
-##
-# Parses an XML document into an element tree incrementally, and reports
-# what's going on to the user.
-#
-# @param source A filename or file object containing XML data.
-# @param events A list of events to report back.  If omitted, only "end"
-#     events are reported.
-# @param parser An optional parser instance.  If not given, the
-#     standard {@link XMLParser} parser is used.
-# @return A (event, elem) iterator.
-
-def iterparse(source, events=None, parser=None):
-    if not hasattr(source, "read"):
-        source = open(source, "rb")
-    if not parser:
-        parser = XMLParser(target=TreeBuilder())
-    return _IterParseIterator(source, events, parser)
-
-class _IterParseIterator(object):
-
-    def __init__(self, source, events, parser):
-        self._file = source
-        self._events = []
-        self._index = 0
-        self.root = self._root = None
-        self._parser = parser
-        # wire up the parser for event reporting
-        parser = self._parser._parser
-        append = self._events.append
-        if events is None:
-            events = ["end"]
-        for event in events:
-            if event == "start":
-                try:
-                    parser.ordered_attributes = 1
-                    parser.specified_attributes = 1
-                    def handler(tag, attrib_in, event=event, append=append,
-                                start=self._parser._start_list):
-                        append((event, start(tag, attrib_in)))
-                    parser.StartElementHandler = handler
-                except AttributeError:
-                    def handler(tag, attrib_in, event=event, append=append,
-                                start=self._parser._start):
-                        append((event, start(tag, attrib_in)))
-                    parser.StartElementHandler = handler
-            elif event == "end":
-                def handler(tag, event=event, append=append,
-                            end=self._parser._end):
-                    append((event, end(tag)))
-                parser.EndElementHandler = handler
-            elif event == "start-ns":
-                def handler(prefix, uri, event=event, append=append):
-                    try:
-                        uri = (uri or "").encode("ascii")
-                    except UnicodeError:
-                        pass
-                    append((event, (prefix or "", uri or "")))
-                parser.StartNamespaceDeclHandler = handler
-            elif event == "end-ns":
-                def handler(prefix, event=event, append=append):
-                    append((event, None))
-                parser.EndNamespaceDeclHandler = handler
-            else:
-                raise ValueError("unknown event %r" % event)
-
-    def next(self):
-        while 1:
-            try:
-                item = self._events[self._index]
-            except IndexError:
-                if self._parser is None:
-                    self.root = self._root
-                    raise StopIteration
-                # load event buffer
-                del self._events[:]
-                self._index = 0
-                data = self._file.read(16384)
-                if data:
-                    self._parser.feed(data)
-                else:
-                    self._root = self._parser.close()
-                    self._parser = None
-            else:
-                self._index = self._index + 1
-                return item
-
-    def __iter__(self):
-        return self
-
-##
-# Parses an XML document from a string constant.  This function can
-# be used to embed "XML literals" in Python code.
-#
-# @param source A string containing XML data.
-# @param parser An optional parser instance.  If not given, the
-#     standard {@link XMLParser} parser is used.
-# @return An Element instance.
-# @defreturn Element
-
-def XML(text, parser=None):
-    if not parser:
-        parser = XMLParser(target=TreeBuilder())
-    parser.feed(text)
-    return parser.close()
-
-##
-# Parses an XML document from a string constant, and also returns
-# a dictionary which maps from element id:s to elements.
-#
-# @param source A string containing XML data.
-# @param parser An optional parser instance.  If not given, the
-#     standard {@link XMLParser} parser is used.
-# @return A tuple containing an Element instance and a dictionary.
-# @defreturn (Element, dictionary)
-
-def XMLID(text, parser=None):
-    if not parser:
-        parser = XMLParser(target=TreeBuilder())
-    parser.feed(text)
-    tree = parser.close()
-    ids = {}
-    for elem in tree.iter():
-        id = elem.get("id")
-        if id:
-            ids[id] = elem
-    return tree, ids
-
-##
-# Parses an XML document from a string constant.  Same as {@link #XML}.
-#
-# @def fromstring(text)
-# @param source A string containing XML data.
-# @return An Element instance.
-# @defreturn Element
-
-fromstring = XML
-
-##
-# Parses an XML document from a sequence of string fragments.
-#
-# @param sequence A list or other sequence containing XML data fragments.
-# @param parser An optional parser instance.  If not given, the
-#     standard {@link XMLParser} parser is used.
-# @return An Element instance.
-# @defreturn Element
-# @since 1.3
-
-def fromstringlist(sequence, parser=None):
-    if not parser:
-        parser = XMLParser(target=TreeBuilder())
-    for text in sequence:
-        parser.feed(text)
-    return parser.close()
-
-# --------------------------------------------------------------------
-
-##
-# Generic element structure builder.  This builder converts a sequence
-# of {@link #TreeBuilder.start}, {@link #TreeBuilder.data}, and {@link
-# #TreeBuilder.end} method calls to a well-formed element structure.
-# <p>
-# You can use this class to build an element structure using a custom XML
-# parser, or a parser for some other XML-like format.
-#
-# @param element_factory Optional element factory.  This factory
-#    is called to create new Element instances, as necessary.
-
-class TreeBuilder(object):
-
-    def __init__(self, element_factory=None):
-        self._data = [] # data collector
-        self._elem = [] # element stack
-        self._last = None # last element
-        self._tail = None # true if we're after an end tag
-        if element_factory is None:
-            element_factory = Element
-        self._factory = element_factory
-
-    ##
-    # Flushes the builder buffers, and returns the toplevel document
-    # element.
-    #
-    # @return An Element instance.
-    # @defreturn Element
-
-    def close(self):
-        assert len(self._elem) == 0, "missing end tags"
-        assert self._last is not None, "missing toplevel element"
-        return self._last
-
-    def _flush(self):
-        if self._data:
-            if self._last is not None:
-                text = "".join(self._data)
-                if self._tail:
-                    assert self._last.tail is None, "internal error (tail)"
-                    self._last.tail = text
-                else:
-                    assert self._last.text is None, "internal error (text)"
-                    self._last.text = text
-            self._data = []
-
-    ##
-    # Adds text to the current element.
-    #
-    # @param data A string.  This should be either an 8-bit string
-    #    containing ASCII text, or a Unicode string.
-
-    def data(self, data):
-        self._data.append(data)
-
-    ##
-    # Opens a new element.
-    #
-    # @param tag The element name.
-    # @param attrib A dictionary containing element attributes.
-    # @return The opened element.
-    # @defreturn Element
-
-    def start(self, tag, attrs):
-        self._flush()
-        self._last = elem = self._factory(tag, attrs)
-        if self._elem:
-            self._elem[-1].append(elem)
-        self._elem.append(elem)
-        self._tail = 0
-        return elem
-
-    ##
-    # Closes the current element.
-    #
-    # @param tag The element name.
-    # @return The closed element.
-    # @defreturn Element
-
-    def end(self, tag):
-        self._flush()
-        self._last = self._elem.pop()
-        assert self._last.tag == tag,\
-               "end tag mismatch (expected %s, got %s)" % (
-                   self._last.tag, tag)
-        self._tail = 1
-        return self._last
-
-##
-# Element structure builder for XML source data, based on the
-# <b>expat</b> parser.
-#
-# @keyparam target Target object.  If omitted, the builder uses an
-#     instance of the standard {@link #TreeBuilder} class.
-# @keyparam html Predefine HTML entities.  This flag is not supported
-#     by the current implementation.
-# @keyparam encoding Optional encoding.  If given, the value overrides
-#     the encoding specified in the XML file.
-# @see #ElementTree
-# @see #TreeBuilder
-
-class XMLParser(object):
-
-    def __init__(self, html=0, target=None, encoding=None):
-        try:
-            from xml.parsers import expat
-        except ImportError:
-            try:
-                import pyexpat as expat
-            except ImportError:
-                raise ImportError(
-                    "No module named expat; use SimpleXMLTreeBuilder instead"
-                    )
-        parser = expat.ParserCreate(encoding, "}")
-        if target is None:
-            target = TreeBuilder()
-        # underscored names are provided for compatibility only
-        self.parser = self._parser = parser
-        self.target = self._target = target
-        self._error = expat.error
-        self._names = {} # name memo cache
-        # callbacks
-        parser.DefaultHandlerExpand = self._default
-        parser.StartElementHandler = self._start
-        parser.EndElementHandler = self._end
-        parser.CharacterDataHandler = self._data
-        # optional callbacks
-        parser.CommentHandler = self._comment
-        parser.ProcessingInstructionHandler = self._pi
-        # let expat do the buffering, if supported
-        try:
-            self._parser.buffer_text = 1
-        except AttributeError:
-            pass
-        # use new-style attribute handling, if supported
-        try:
-            self._parser.ordered_attributes = 1
-            self._parser.specified_attributes = 1
-            parser.StartElementHandler = self._start_list
-        except AttributeError:
-            pass
-        self._doctype = None
-        self.entity = {}
-        try:
-            self.version = "Expat %d.%d.%d" % expat.version_info
-        except AttributeError:
-            pass # unknown
-
-    def _raiseerror(self, value):
-        err = ParseError(value)
-        err.code = value.code
-        err.position = value.lineno, value.offset
-        raise err
-
-    def _fixtext(self, text):
-        # convert text string to ascii, if possible
-        try:
-            return text.encode("ascii")
-        except UnicodeError:
-            return text
-
-    def _fixname(self, key):
-        # expand qname, and convert name string to ascii, if possible
-        try:
-            name = self._names[key]
-        except KeyError:
-            name = key
-            if "}" in name:
-                name = "{" + name
-            self._names[key] = name = self._fixtext(name)
-        return name
-
-    def _start(self, tag, attrib_in):
-        fixname = self._fixname
-        fixtext = self._fixtext
-        tag = fixname(tag)
-        attrib = {}
-        for key, value in attrib_in.items():
-            attrib[fixname(key)] = fixtext(value)
-        return self.target.start(tag, attrib)
-
-    def _start_list(self, tag, attrib_in):
-        fixname = self._fixname
-        fixtext = self._fixtext
-        tag = fixname(tag)
-        attrib = {}
-        if attrib_in:
-            for i in range(0, len(attrib_in), 2):
-                attrib[fixname(attrib_in[i])] = fixtext(attrib_in[i+1])
-        return self.target.start(tag, attrib)
-
-    def _data(self, text):
-        return self.target.data(self._fixtext(text))
-
-    def _end(self, tag):
-        return self.target.end(self._fixname(tag))
-
-    def _comment(self, data):
-        try:
-            comment = self.target.comment
-        except AttributeError:
-            pass
-        else:
-            return comment(self._fixtext(data))
-
-    def _pi(self, target, data):
-        try:
-            pi = self.target.pi
-        except AttributeError:
-            pass
-        else:
-            return pi(self._fixtext(target), self._fixtext(data))
-
-    def _default(self, text):
-        prefix = text[:1]
-        if prefix == "&":
-            # deal with undefined entities
-            try:
-                self.target.data(self.entity[text[1:-1]])
-            except KeyError:
-                from xml.parsers import expat
-                err = expat.error(
-                    "undefined entity %s: line %d, column %d" %
-                    (text, self._parser.ErrorLineNumber,
-                    self._parser.ErrorColumnNumber)
-                    )
-                err.code = 11 # XML_ERROR_UNDEFINED_ENTITY
-                err.lineno = self._parser.ErrorLineNumber
-                err.offset = self._parser.ErrorColumnNumber
-                raise err
-        elif prefix == "<" and text[:9] == "<!DOCTYPE":
-            self._doctype = [] # inside a doctype declaration
-        elif self._doctype is not None:
-            # parse doctype contents
-            if prefix == ">":
-                self._doctype = None
-                return
-            text = text.strip()
-            if not text:
-                return
-            self._doctype.append(text)
-            n = len(self._doctype)
-            if n > 2:
-                type = self._doctype[1]
-                if type == "PUBLIC" and n == 4:
-                    name, type, pubid, system = self._doctype
-                elif type == "SYSTEM" and n == 3:
-                    name, type, system = self._doctype
-                    pubid = None
-                else:
-                    return
-                if pubid:
-                    pubid = pubid[1:-1]
-                if hasattr(self.target, "doctype"):
-                    self.target.doctype(name, pubid, system[1:-1])
-                elif self.doctype is not self._XMLParser__doctype:
-                    # warn about deprecated call
-                    self._XMLParser__doctype(name, pubid, system[1:-1])
-                    self.doctype(name, pubid, system[1:-1])
-                self._doctype = None
-
-    ##
-    # (Deprecated) Handles a doctype declaration.
-    #
-    # @param name Doctype name.
-    # @param pubid Public identifier.
-    # @param system System identifier.
-
-    def doctype(self, name, pubid, system):
-        """This method of XMLParser is deprecated."""
-        warnings.warn(
-            "This method of XMLParser is deprecated.  Define doctype() "
-            "method on the TreeBuilder target.",
-            DeprecationWarning,
-            )
-
-    # sentinel, if doctype is redefined in a subclass
-    __doctype = doctype
-
-    ##
-    # Feeds data to the parser.
-    #
-    # @param data Encoded data.
-
-    def feed(self, data):
-        try:
-            self._parser.Parse(data, 0)
-        except self._error, v:
-            self._raiseerror(v)
-
-    ##
-    # Finishes feeding data to the parser.
-    #
-    # @return An element structure.
-    # @defreturn Element
-
-    def close(self):
-        try:
-            self._parser.Parse("", 1) # end of data
-        except self._error, v:
-            self._raiseerror(v)
-        tree = self.target.close()
-        del self.target, self._parser # get rid of circular references
-        return tree
-
-# compatibility
-XMLTreeBuilder = XMLParser
-
-# workaround circular import.
-try:
-    from ElementC14N import _serialize_c14n
-    _serialize["c14n"] = _serialize_c14n
-except ImportError:
-    pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/__init__.py
deleted file mode 100644
index 1fd62da..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/__init__.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# $Id: __init__.py 3375 2008-02-13 08:05:08Z fredrik $
-# elementtree package
-
-# --------------------------------------------------------------------
-# The ElementTree toolkit is
-#
-# Copyright (c) 1999-2008 by Fredrik Lundh
-#
-# By obtaining, using, and/or copying this software and/or its
-# associated documentation, you agree that you have read, understood,
-# and will comply with the following terms and conditions:
-#
-# Permission to use, copy, modify, and distribute this software and
-# its associated documentation for any purpose and without fee is
-# hereby granted, provided that the above copyright notice appears in
-# all copies, and that both that copyright notice and this permission
-# notice appear in supporting documentation, and that the name of
-# Secret Labs AB or the author not be used in advertising or publicity
-# pertaining to distribution of the software without specific, written
-# prior permission.
-#
-# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
-# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
-# ABILITY AND FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
-# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
-# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-# OF THIS SOFTWARE.
-# --------------------------------------------------------------------
-
-# Licensed to PSF under a Contributor Agreement.
-# See http://www.python.org/psf/license for licensing details.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/cElementTree.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/cElementTree.py
deleted file mode 100644
index db12fde..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/etree/cElementTree.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# Wrapper module for _elementtree
-
-from _elementtree import *
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/parsers/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/parsers/__init__.py
deleted file mode 100644
index ee4380b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/parsers/__init__.py
+++ /dev/null
@@ -1,8 +0,0 @@
-"""Python interfaces to XML parsers.
-
-This package contains one module:
-
-expat -- Python wrapper for James Clark's Expat parser, with namespace
-         support.
-
-"""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/parsers/expat.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/parsers/expat.py
deleted file mode 100644
index d583881..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/parsers/expat.py
+++ /dev/null
@@ -1,4 +0,0 @@
-"""Interface to the Expat non-validating XML parser."""
-__version__ = '$Revision$'
-
-from pyexpat import *
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/__init__.py
deleted file mode 100644
index 2686c38..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/__init__.py
+++ /dev/null
@@ -1,108 +0,0 @@
-"""Simple API for XML (SAX) implementation for Python.
-
-This module provides an implementation of the SAX 2 interface;
-information about the Java version of the interface can be found at
-http://www.megginson.com/SAX/.  The Python version of the interface is
-documented at <...>.
-
-This package contains the following modules:
-
-handler -- Base classes and constants which define the SAX 2 API for
-           the 'client-side' of SAX for Python.
-
-saxutils -- Implementation of the convenience classes commonly used to
-            work with SAX.
-
-xmlreader -- Base classes and constants which define the SAX 2 API for
-             the parsers used with SAX for Python.
-
-expatreader -- Driver that allows use of the Expat parser with SAX.
-"""
-
-from xmlreader import InputSource
-from handler import ContentHandler, ErrorHandler
-from _exceptions import SAXException, SAXNotRecognizedException, \
-                        SAXParseException, SAXNotSupportedException, \
-                        SAXReaderNotAvailable
-
-
-def parse(source, handler, errorHandler=ErrorHandler()):
-    parser = make_parser()
-    parser.setContentHandler(handler)
-    parser.setErrorHandler(errorHandler)
-    parser.parse(source)
-
-def parseString(string, handler, errorHandler=ErrorHandler()):
-    try:
-        from cStringIO import StringIO
-    except ImportError:
-        from StringIO import StringIO
-
-    if errorHandler is None:
-        errorHandler = ErrorHandler()
-    parser = make_parser()
-    parser.setContentHandler(handler)
-    parser.setErrorHandler(errorHandler)
-
-    inpsrc = InputSource()
-    inpsrc.setByteStream(StringIO(string))
-    parser.parse(inpsrc)
-
-# this is the parser list used by the make_parser function if no
-# alternatives are given as parameters to the function
-
-default_parser_list = ["xml.sax.expatreader"]
-
-# tell modulefinder that importing sax potentially imports expatreader
-_false = 0
-if _false:
-    import xml.sax.expatreader
-
-import os, sys
-if "PY_SAX_PARSER" in os.environ:
-    default_parser_list = os.environ["PY_SAX_PARSER"].split(",")
-del os
-
-_key = "python.xml.sax.parser"
-if sys.platform[:4] == "java" and sys.registry.containsKey(_key):
-    default_parser_list = sys.registry.getProperty(_key).split(",")
-
-
-def make_parser(parser_list = []):
-    """Creates and returns a SAX parser.
-
-    Creates the first parser it is able to instantiate of the ones
-    given in the list created by doing parser_list +
-    default_parser_list.  The lists must contain the names of Python
-    modules containing both a SAX parser and a create_parser function."""
-
-    for parser_name in parser_list + default_parser_list:
-        try:
-            return _create_parser(parser_name)
-        except ImportError,e:
-            import sys
-            if parser_name in sys.modules:
-                # The parser module was found, but importing it
-                # failed unexpectedly, pass this exception through
-                raise
-        except SAXReaderNotAvailable:
-            # The parser module detected that it won't work properly,
-            # so try the next one
-            pass
-
-    raise SAXReaderNotAvailable("No parsers found", None)
-
-# --- Internal utility methods used by make_parser
-
-if sys.platform[ : 4] == "java":
-    def _create_parser(parser_name):
-        from org.python.core import imp
-        drv_module = imp.importName(parser_name, 0, globals())
-        return drv_module.create_parser()
-
-else:
-    def _create_parser(parser_name):
-        drv_module = __import__(parser_name,{},{},['create_parser'])
-        return drv_module.create_parser()
-
-del sys
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/_exceptions.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/_exceptions.py
deleted file mode 100644
index 5a18234..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/_exceptions.py
+++ /dev/null
@@ -1,131 +0,0 @@
-"""Different kinds of SAX Exceptions"""
-import sys
-if sys.platform[:4] == "java":
-    from java.lang import Exception
-del sys
-
-# ===== SAXEXCEPTION =====
-
-class SAXException(Exception):
-    """Encapsulate an XML error or warning. This class can contain
-    basic error or warning information from either the XML parser or
-    the application: you can subclass it to provide additional
-    functionality, or to add localization. Note that although you will
-    receive a SAXException as the argument to the handlers in the
-    ErrorHandler interface, you are not actually required to throw
-    the exception; instead, you can simply read the information in
-    it."""
-
-    def __init__(self, msg, exception=None):
-        """Creates an exception. The message is required, but the exception
-        is optional."""
-        self._msg = msg
-        self._exception = exception
-        Exception.__init__(self, msg)
-
-    def getMessage(self):
-        "Return a message for this exception."
-        return self._msg
-
-    def getException(self):
-        "Return the embedded exception, or None if there was none."
-        return self._exception
-
-    def __str__(self):
-        "Create a string representation of the exception."
-        return self._msg
-
-    def __getitem__(self, ix):
-        """Avoids weird error messages if someone does exception[ix] by
-        mistake, since Exception has __getitem__ defined."""
-        raise AttributeError("__getitem__")
-
-
-# ===== SAXPARSEEXCEPTION =====
-
-class SAXParseException(SAXException):
-    """Encapsulate an XML parse error or warning.
-
-    This exception will include information for locating the error in
-    the original XML document. Note that although the application will
-    receive a SAXParseException as the argument to the handlers in the
-    ErrorHandler interface, the application is not actually required
-    to throw the exception; instead, it can simply read the
-    information in it and take a different action.
-
-    Since this exception is a subclass of SAXException, it inherits
-    the ability to wrap another exception."""
-
-    def __init__(self, msg, exception, locator):
-        "Creates the exception. The exception parameter is allowed to be None."
-        SAXException.__init__(self, msg, exception)
-        self._locator = locator
-
-        # We need to cache this stuff at construction time.
-        # If this exception is thrown, the objects through which we must
-        # traverse to get this information may be deleted by the time
-        # it gets caught.
-        self._systemId = self._locator.getSystemId()
-        self._colnum = self._locator.getColumnNumber()
-        self._linenum = self._locator.getLineNumber()
-
-    def getColumnNumber(self):
-        """The column number of the end of the text where the exception
-        occurred."""
-        return self._colnum
-
-    def getLineNumber(self):
-        "The line number of the end of the text where the exception occurred."
-        return self._linenum
-
-    def getPublicId(self):
-        "Get the public identifier of the entity where the exception occurred."
-        return self._locator.getPublicId()
-
-    def getSystemId(self):
-        "Get the system identifier of the entity where the exception occurred."
-        return self._systemId
-
-    def __str__(self):
-        "Create a string representation of the exception."
-        sysid = self.getSystemId()
-        if sysid is None:
-            sysid = "<unknown>"
-        linenum = self.getLineNumber()
-        if linenum is None:
-            linenum = "?"
-        colnum = self.getColumnNumber()
-        if colnum is None:
-            colnum = "?"
-        return "%s:%s:%s: %s" % (sysid, linenum, colnum, self._msg)
-
-
-# ===== SAXNOTRECOGNIZEDEXCEPTION =====
-
-class SAXNotRecognizedException(SAXException):
-    """Exception class for an unrecognized identifier.
-
-    An XMLReader will raise this exception when it is confronted with an
-    unrecognized feature or property. SAX applications and extensions may
-    use this class for similar purposes."""
-
-
-# ===== SAXNOTSUPPORTEDEXCEPTION =====
-
-class SAXNotSupportedException(SAXException):
-    """Exception class for an unsupported operation.
-
-    An XMLReader will raise this exception when a service it cannot
-    perform is requested (specifically setting a state or value). SAX
-    applications and extensions may use this class for similar
-    purposes."""
-
-# ===== SAXNOTSUPPORTEDEXCEPTION =====
-
-class SAXReaderNotAvailable(SAXNotSupportedException):
-    """Exception class for a missing driver.
-
-    An XMLReader module (driver) should raise this exception when it
-    is first imported, e.g. when a support module cannot be imported.
-    It also may be raised during parsing, e.g. if executing an external
-    program is not permitted."""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/expatreader.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/expatreader.py
deleted file mode 100644
index a90f31a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/expatreader.py
+++ /dev/null
@@ -1,414 +0,0 @@
-"""
-SAX driver for the pyexpat C module.  This driver works with
-pyexpat.__version__ == '2.22'.
-"""
-
-version = "0.20"
-
-from xml.sax._exceptions import *
-from xml.sax.handler import feature_validation, feature_namespaces
-from xml.sax.handler import feature_namespace_prefixes
-from xml.sax.handler import feature_external_ges, feature_external_pes
-from xml.sax.handler import feature_string_interning
-from xml.sax.handler import property_xml_string, property_interning_dict
-
-# xml.parsers.expat does not raise ImportError in Jython
-import sys
-if sys.platform[:4] == "java":
-    raise SAXReaderNotAvailable("expat not available in Java", None)
-del sys
-
-try:
-    from xml.parsers import expat
-except ImportError:
-    raise SAXReaderNotAvailable("expat not supported", None)
-else:
-    if not hasattr(expat, "ParserCreate"):
-        raise SAXReaderNotAvailable("expat not supported", None)
-from xml.sax import xmlreader, saxutils, handler
-
-AttributesImpl = xmlreader.AttributesImpl
-AttributesNSImpl = xmlreader.AttributesNSImpl
-
-# If we're using a sufficiently recent version of Python, we can use
-# weak references to avoid cycles between the parser and content
-# handler, otherwise we'll just have to pretend.
-try:
-    import _weakref
-except ImportError:
-    def _mkproxy(o):
-        return o
-else:
-    import weakref
-    _mkproxy = weakref.proxy
-    del weakref, _weakref
-
-# --- ExpatLocator
-
-class ExpatLocator(xmlreader.Locator):
-    """Locator for use with the ExpatParser class.
-
-    This uses a weak reference to the parser object to avoid creating
-    a circular reference between the parser and the content handler.
-    """
-    def __init__(self, parser):
-        self._ref = _mkproxy(parser)
-
-    def getColumnNumber(self):
-        parser = self._ref
-        if parser._parser is None:
-            return None
-        return parser._parser.ErrorColumnNumber
-
-    def getLineNumber(self):
-        parser = self._ref
-        if parser._parser is None:
-            return 1
-        return parser._parser.ErrorLineNumber
-
-    def getPublicId(self):
-        parser = self._ref
-        if parser is None:
-            return None
-        return parser._source.getPublicId()
-
-    def getSystemId(self):
-        parser = self._ref
-        if parser is None:
-            return None
-        return parser._source.getSystemId()
-
-
-# --- ExpatParser
-
-class ExpatParser(xmlreader.IncrementalParser, xmlreader.Locator):
-    """SAX driver for the pyexpat C module."""
-
-    def __init__(self, namespaceHandling=0, bufsize=2**16-20):
-        xmlreader.IncrementalParser.__init__(self, bufsize)
-        self._source = xmlreader.InputSource()
-        self._parser = None
-        self._namespaces = namespaceHandling
-        self._lex_handler_prop = None
-        self._parsing = 0
-        self._entity_stack = []
-        self._external_ges = 1
-        self._interning = None
-
-    # XMLReader methods
-
-    def parse(self, source):
-        "Parse an XML document from a URL or an InputSource."
-        source = saxutils.prepare_input_source(source)
-
-        self._source = source
-        self.reset()
-        self._cont_handler.setDocumentLocator(ExpatLocator(self))
-        xmlreader.IncrementalParser.parse(self, source)
-
-    def prepareParser(self, source):
-        if source.getSystemId() is not None:
-            self._parser.SetBase(source.getSystemId())
-
-    # Redefined setContentHandler to allow changing handlers during parsing
-
-    def setContentHandler(self, handler):
-        xmlreader.IncrementalParser.setContentHandler(self, handler)
-        if self._parsing:
-            self._reset_cont_handler()
-
-    def getFeature(self, name):
-        if name == feature_namespaces:
-            return self._namespaces
-        elif name == feature_string_interning:
-            return self._interning is not None
-        elif name in (feature_validation, feature_external_pes,
-                      feature_namespace_prefixes):
-            return 0
-        elif name == feature_external_ges:
-            return self._external_ges
-        raise SAXNotRecognizedException("Feature '%s' not recognized" % name)
-
-    def setFeature(self, name, state):
-        if self._parsing:
-            raise SAXNotSupportedException("Cannot set features while parsing")
-
-        if name == feature_namespaces:
-            self._namespaces = state
-        elif name == feature_external_ges:
-            self._external_ges = state
-        elif name == feature_string_interning:
-            if state:
-                if self._interning is None:
-                    self._interning = {}
-            else:
-                self._interning = None
-        elif name == feature_validation:
-            if state:
-                raise SAXNotSupportedException(
-                    "expat does not support validation")
-        elif name == feature_external_pes:
-            if state:
-                raise SAXNotSupportedException(
-                    "expat does not read external parameter entities")
-        elif name == feature_namespace_prefixes:
-            if state:
-                raise SAXNotSupportedException(
-                    "expat does not report namespace prefixes")
-        else:
-            raise SAXNotRecognizedException(
-                "Feature '%s' not recognized" % name)
-
-    def getProperty(self, name):
-        if name == handler.property_lexical_handler:
-            return self._lex_handler_prop
-        elif name == property_interning_dict:
-            return self._interning
-        elif name == property_xml_string:
-            if self._parser:
-                if hasattr(self._parser, "GetInputContext"):
-                    return self._parser.GetInputContext()
-                else:
-                    raise SAXNotRecognizedException(
-                        "This version of expat does not support getting"
-                        " the XML string")
-            else:
-                raise SAXNotSupportedException(
-                    "XML string cannot be returned when not parsing")
-        raise SAXNotRecognizedException("Property '%s' not recognized" % name)
-
-    def setProperty(self, name, value):
-        if name == handler.property_lexical_handler:
-            self._lex_handler_prop = value
-            if self._parsing:
-                self._reset_lex_handler_prop()
-        elif name == property_interning_dict:
-            self._interning = value
-        elif name == property_xml_string:
-            raise SAXNotSupportedException("Property '%s' cannot be set" %
-                                           name)
-        else:
-            raise SAXNotRecognizedException("Property '%s' not recognized" %
-                                            name)
-
-    # IncrementalParser methods
-
-    def feed(self, data, isFinal = 0):
-        if not self._parsing:
-            self.reset()
-            self._parsing = 1
-            self._cont_handler.startDocument()
-
-        try:
-            # The isFinal parameter is internal to the expat reader.
-            # If it is set to true, expat will check validity of the entire
-            # document. When feeding chunks, they are not normally final -
-            # except when invoked from close.
-            self._parser.Parse(data, isFinal)
-        except expat.error, e:
-            exc = SAXParseException(expat.ErrorString(e.code), e, self)
-            # FIXME: when to invoke error()?
-            self._err_handler.fatalError(exc)
-
-    def close(self):
-        if self._entity_stack:
-            # If we are completing an external entity, do nothing here
-            return
-        self.feed("", isFinal = 1)
-        self._cont_handler.endDocument()
-        self._parsing = 0
-        # break cycle created by expat handlers pointing to our methods
-        self._parser = None
-
-    def _reset_cont_handler(self):
-        self._parser.ProcessingInstructionHandler = \
-                                    self._cont_handler.processingInstruction
-        self._parser.CharacterDataHandler = self._cont_handler.characters
-
-    def _reset_lex_handler_prop(self):
-        lex = self._lex_handler_prop
-        parser = self._parser
-        if lex is None:
-            parser.CommentHandler = None
-            parser.StartCdataSectionHandler = None
-            parser.EndCdataSectionHandler = None
-            parser.StartDoctypeDeclHandler = None
-            parser.EndDoctypeDeclHandler = None
-        else:
-            parser.CommentHandler = lex.comment
-            parser.StartCdataSectionHandler = lex.startCDATA
-            parser.EndCdataSectionHandler = lex.endCDATA
-            parser.StartDoctypeDeclHandler = self.start_doctype_decl
-            parser.EndDoctypeDeclHandler = lex.endDTD
-
-    def reset(self):
-        if self._namespaces:
-            self._parser = expat.ParserCreate(self._source.getEncoding(), " ",
-                                              intern=self._interning)
-            self._parser.namespace_prefixes = 1
-            self._parser.StartElementHandler = self.start_element_ns
-            self._parser.EndElementHandler = self.end_element_ns
-        else:
-            self._parser = expat.ParserCreate(self._source.getEncoding(),
-                                              intern = self._interning)
-            self._parser.StartElementHandler = self.start_element
-            self._parser.EndElementHandler = self.end_element
-
-        self._reset_cont_handler()
-        self._parser.UnparsedEntityDeclHandler = self.unparsed_entity_decl
-        self._parser.NotationDeclHandler = self.notation_decl
-        self._parser.StartNamespaceDeclHandler = self.start_namespace_decl
-        self._parser.EndNamespaceDeclHandler = self.end_namespace_decl
-
-        self._decl_handler_prop = None
-        if self._lex_handler_prop:
-            self._reset_lex_handler_prop()
-#         self._parser.DefaultHandler =
-#         self._parser.DefaultHandlerExpand =
-#         self._parser.NotStandaloneHandler =
-        self._parser.ExternalEntityRefHandler = self.external_entity_ref
-        try:
-            self._parser.SkippedEntityHandler = self.skipped_entity_handler
-        except AttributeError:
-            # This pyexpat does not support SkippedEntity
-            pass
-        self._parser.SetParamEntityParsing(
-            expat.XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE)
-
-        self._parsing = 0
-        self._entity_stack = []
-
-    # Locator methods
-
-    def getColumnNumber(self):
-        if self._parser is None:
-            return None
-        return self._parser.ErrorColumnNumber
-
-    def getLineNumber(self):
-        if self._parser is None:
-            return 1
-        return self._parser.ErrorLineNumber
-
-    def getPublicId(self):
-        return self._source.getPublicId()
-
-    def getSystemId(self):
-        return self._source.getSystemId()
-
-    # event handlers
-    def start_element(self, name, attrs):
-        self._cont_handler.startElement(name, AttributesImpl(attrs))
-
-    def end_element(self, name):
-        self._cont_handler.endElement(name)
-
-    def start_element_ns(self, name, attrs):
-        pair = name.split()
-        if len(pair) == 1:
-            # no namespace
-            pair = (None, name)
-        elif len(pair) == 3:
-            pair = pair[0], pair[1]
-        else:
-            # default namespace
-            pair = tuple(pair)
-
-        newattrs = {}
-        qnames = {}
-        for (aname, value) in attrs.items():
-            parts = aname.split()
-            length = len(parts)
-            if length == 1:
-                # no namespace
-                qname = aname
-                apair = (None, aname)
-            elif length == 3:
-                qname = "%s:%s" % (parts[2], parts[1])
-                apair = parts[0], parts[1]
-            else:
-                # default namespace
-                qname = parts[1]
-                apair = tuple(parts)
-
-            newattrs[apair] = value
-            qnames[apair] = qname
-
-        self._cont_handler.startElementNS(pair, None,
-                                          AttributesNSImpl(newattrs, qnames))
-
-    def end_element_ns(self, name):
-        pair = name.split()
-        if len(pair) == 1:
-            pair = (None, name)
-        elif len(pair) == 3:
-            pair = pair[0], pair[1]
-        else:
-            pair = tuple(pair)
-
-        self._cont_handler.endElementNS(pair, None)
-
-    # this is not used (call directly to ContentHandler)
-    def processing_instruction(self, target, data):
-        self._cont_handler.processingInstruction(target, data)
-
-    # this is not used (call directly to ContentHandler)
-    def character_data(self, data):
-        self._cont_handler.characters(data)
-
-    def start_namespace_decl(self, prefix, uri):
-        self._cont_handler.startPrefixMapping(prefix, uri)
-
-    def end_namespace_decl(self, prefix):
-        self._cont_handler.endPrefixMapping(prefix)
-
-    def start_doctype_decl(self, name, sysid, pubid, has_internal_subset):
-        self._lex_handler_prop.startDTD(name, pubid, sysid)
-
-    def unparsed_entity_decl(self, name, base, sysid, pubid, notation_name):
-        self._dtd_handler.unparsedEntityDecl(name, pubid, sysid, notation_name)
-
-    def notation_decl(self, name, base, sysid, pubid):
-        self._dtd_handler.notationDecl(name, pubid, sysid)
-
-    def external_entity_ref(self, context, base, sysid, pubid):
-        if not self._external_ges:
-            return 1
-
-        source = self._ent_handler.resolveEntity(pubid, sysid)
-        source = saxutils.prepare_input_source(source,
-                                               self._source.getSystemId() or
-                                               "")
-
-        self._entity_stack.append((self._parser, self._source))
-        self._parser = self._parser.ExternalEntityParserCreate(context)
-        self._source = source
-
-        try:
-            xmlreader.IncrementalParser.parse(self, source)
-        except:
-            return 0  # FIXME: save error info here?
-
-        (self._parser, self._source) = self._entity_stack[-1]
-        del self._entity_stack[-1]
-        return 1
-
-    def skipped_entity_handler(self, name, is_pe):
-        if is_pe:
-            # The SAX spec requires to report skipped PEs with a '%'
-            name = '%'+name
-        self._cont_handler.skippedEntity(name)
-
-# ---
-
-def create_parser(*args, **kwargs):
-    return ExpatParser(*args, **kwargs)
-
-# ---
-
-if __name__ == "__main__":
-    import xml.sax.saxutils
-    p = create_parser()
-    p.setContentHandler(xml.sax.saxutils.XMLGenerator())
-    p.setErrorHandler(xml.sax.ErrorHandler())
-    p.parse("http://www.ibiblio.org/xml/examples/shakespeare/hamlet.xml")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/handler.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/handler.py
deleted file mode 100644
index 378f4f1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/handler.py
+++ /dev/null
@@ -1,342 +0,0 @@
-"""
-This module contains the core classes of version 2.0 of SAX for Python.
-This file provides only default classes with absolutely minimum
-functionality, from which drivers and applications can be subclassed.
-
-Many of these classes are empty and are included only as documentation
-of the interfaces.
-
-$Id$
-"""
-
-version = '2.0beta'
-
-#============================================================================
-#
-# HANDLER INTERFACES
-#
-#============================================================================
-
-# ===== ERRORHANDLER =====
-
-class ErrorHandler:
-    """Basic interface for SAX error handlers.
-
-    If you create an object that implements this interface, then
-    register the object with your XMLReader, the parser will call the
-    methods in your object to report all warnings and errors. There
-    are three levels of errors available: warnings, (possibly)
-    recoverable errors, and unrecoverable errors. All methods take a
-    SAXParseException as the only parameter."""
-
-    def error(self, exception):
-        "Handle a recoverable error."
-        raise exception
-
-    def fatalError(self, exception):
-        "Handle a non-recoverable error."
-        raise exception
-
-    def warning(self, exception):
-        "Handle a warning."
-        print exception
-
-
-# ===== CONTENTHANDLER =====
-
-class ContentHandler:
-    """Interface for receiving logical document content events.
-
-    This is the main callback interface in SAX, and the one most
-    important to applications. The order of events in this interface
-    mirrors the order of the information in the document."""
-
-    def __init__(self):
-        self._locator = None
-
-    def setDocumentLocator(self, locator):
-        """Called by the parser to give the application a locator for
-        locating the origin of document events.
-
-        SAX parsers are strongly encouraged (though not absolutely
-        required) to supply a locator: if it does so, it must supply
-        the locator to the application by invoking this method before
-        invoking any of the other methods in the DocumentHandler
-        interface.
-
-        The locator allows the application to determine the end
-        position of any document-related event, even if the parser is
-        not reporting an error. Typically, the application will use
-        this information for reporting its own errors (such as
-        character content that does not match an application's
-        business rules). The information returned by the locator is
-        probably not sufficient for use with a search engine.
-
-        Note that the locator will return correct information only
-        during the invocation of the events in this interface. The
-        application should not attempt to use it at any other time."""
-        self._locator = locator
-
-    def startDocument(self):
-        """Receive notification of the beginning of a document.
-
-        The SAX parser will invoke this method only once, before any
-        other methods in this interface or in DTDHandler (except for
-        setDocumentLocator)."""
-
-    def endDocument(self):
-        """Receive notification of the end of a document.
-
-        The SAX parser will invoke this method only once, and it will
-        be the last method invoked during the parse. The parser shall
-        not invoke this method until it has either abandoned parsing
-        (because of an unrecoverable error) or reached the end of
-        input."""
-
-    def startPrefixMapping(self, prefix, uri):
-        """Begin the scope of a prefix-URI Namespace mapping.
-
-        The information from this event is not necessary for normal
-        Namespace processing: the SAX XML reader will automatically
-        replace prefixes for element and attribute names when the
-        http://xml.org/sax/features/namespaces feature is true (the
-        default).
-
-        There are cases, however, when applications need to use
-        prefixes in character data or in attribute values, where they
-        cannot safely be expanded automatically; the
-        start/endPrefixMapping event supplies the information to the
-        application to expand prefixes in those contexts itself, if
-        necessary.
-
-        Note that start/endPrefixMapping events are not guaranteed to
-        be properly nested relative to each-other: all
-        startPrefixMapping events will occur before the corresponding
-        startElement event, and all endPrefixMapping events will occur
-        after the corresponding endElement event, but their order is
-        not guaranteed."""
-
-    def endPrefixMapping(self, prefix):
-        """End the scope of a prefix-URI mapping.
-
-        See startPrefixMapping for details. This event will always
-        occur after the corresponding endElement event, but the order
-        of endPrefixMapping events is not otherwise guaranteed."""
-
-    def startElement(self, name, attrs):
-        """Signals the start of an element in non-namespace mode.
-
-        The name parameter contains the raw XML 1.0 name of the
-        element type as a string and the attrs parameter holds an
-        instance of the Attributes class containing the attributes of
-        the element."""
-
-    def endElement(self, name):
-        """Signals the end of an element in non-namespace mode.
-
-        The name parameter contains the name of the element type, just
-        as with the startElement event."""
-
-    def startElementNS(self, name, qname, attrs):
-        """Signals the start of an element in namespace mode.
-
-        The name parameter contains the name of the element type as a
-        (uri, localname) tuple, the qname parameter the raw XML 1.0
-        name used in the source document, and the attrs parameter
-        holds an instance of the Attributes class containing the
-        attributes of the element.
-
-        The uri part of the name tuple is None for elements which have
-        no namespace."""
-
-    def endElementNS(self, name, qname):
-        """Signals the end of an element in namespace mode.
-
-        The name parameter contains the name of the element type, just
-        as with the startElementNS event."""
-
-    def characters(self, content):
-        """Receive notification of character data.
-
-        The Parser will call this method to report each chunk of
-        character data. SAX parsers may return all contiguous
-        character data in a single chunk, or they may split it into
-        several chunks; however, all of the characters in any single
-        event must come from the same external entity so that the
-        Locator provides useful information."""
-
-    def ignorableWhitespace(self, whitespace):
-        """Receive notification of ignorable whitespace in element content.
-
-        Validating Parsers must use this method to report each chunk
-        of ignorable whitespace (see the W3C XML 1.0 recommendation,
-        section 2.10): non-validating parsers may also use this method
-        if they are capable of parsing and using content models.
-
-        SAX parsers may return all contiguous whitespace in a single
-        chunk, or they may split it into several chunks; however, all
-        of the characters in any single event must come from the same
-        external entity, so that the Locator provides useful
-        information."""
-
-    def processingInstruction(self, target, data):
-        """Receive notification of a processing instruction.
-
-        The Parser will invoke this method once for each processing
-        instruction found: note that processing instructions may occur
-        before or after the main document element.
-
-        A SAX parser should never report an XML declaration (XML 1.0,
-        section 2.8) or a text declaration (XML 1.0, section 4.3.1)
-        using this method."""
-
-    def skippedEntity(self, name):
-        """Receive notification of a skipped entity.
-
-        The Parser will invoke this method once for each entity
-        skipped. Non-validating processors may skip entities if they
-        have not seen the declarations (because, for example, the
-        entity was declared in an external DTD subset). All processors
-        may skip external entities, depending on the values of the
-        http://xml.org/sax/features/external-general-entities and the
-        http://xml.org/sax/features/external-parameter-entities
-        properties."""
-
-
-# ===== DTDHandler =====
-
-class DTDHandler:
-    """Handle DTD events.
-
-    This interface specifies only those DTD events required for basic
-    parsing (unparsed entities and attributes)."""
-
-    def notationDecl(self, name, publicId, systemId):
-        "Handle a notation declaration event."
-
-    def unparsedEntityDecl(self, name, publicId, systemId, ndata):
-        "Handle an unparsed entity declaration event."
-
-
-# ===== ENTITYRESOLVER =====
-
-class EntityResolver:
-    """Basic interface for resolving entities. If you create an object
-    implementing this interface, then register the object with your
-    Parser, the parser will call the method in your object to
-    resolve all external entities. Note that DefaultHandler implements
-    this interface with the default behaviour."""
-
-    def resolveEntity(self, publicId, systemId):
-        """Resolve the system identifier of an entity and return either
-        the system identifier to read from as a string, or an InputSource
-        to read from."""
-        return systemId
-
-
-#============================================================================
-#
-# CORE FEATURES
-#
-#============================================================================
-
-feature_namespaces = "http://xml.org/sax/features/namespaces"
-# true: Perform Namespace processing (default).
-# false: Optionally do not perform Namespace processing
-#        (implies namespace-prefixes).
-# access: (parsing) read-only; (not parsing) read/write
-
-feature_namespace_prefixes = "http://xml.org/sax/features/namespace-prefixes"
-# true: Report the original prefixed names and attributes used for Namespace
-#       declarations.
-# false: Do not report attributes used for Namespace declarations, and
-#        optionally do not report original prefixed names (default).
-# access: (parsing) read-only; (not parsing) read/write
-
-feature_string_interning = "http://xml.org/sax/features/string-interning"
-# true: All element names, prefixes, attribute names, Namespace URIs, and
-#       local names are interned using the built-in intern function.
-# false: Names are not necessarily interned, although they may be (default).
-# access: (parsing) read-only; (not parsing) read/write
-
-feature_validation = "http://xml.org/sax/features/validation"
-# true: Report all validation errors (implies external-general-entities and
-#       external-parameter-entities).
-# false: Do not report validation errors.
-# access: (parsing) read-only; (not parsing) read/write
-
-feature_external_ges = "http://xml.org/sax/features/external-general-entities"
-# true: Include all external general (text) entities.
-# false: Do not include external general entities.
-# access: (parsing) read-only; (not parsing) read/write
-
-feature_external_pes = "http://xml.org/sax/features/external-parameter-entities"
-# true: Include all external parameter entities, including the external
-#       DTD subset.
-# false: Do not include any external parameter entities, even the external
-#        DTD subset.
-# access: (parsing) read-only; (not parsing) read/write
-
-all_features = [feature_namespaces,
-                feature_namespace_prefixes,
-                feature_string_interning,
-                feature_validation,
-                feature_external_ges,
-                feature_external_pes]
-
-
-#============================================================================
-#
-# CORE PROPERTIES
-#
-#============================================================================
-
-property_lexical_handler = "http://xml.org/sax/properties/lexical-handler"
-# data type: xml.sax.sax2lib.LexicalHandler
-# description: An optional extension handler for lexical events like comments.
-# access: read/write
-
-property_declaration_handler = "http://xml.org/sax/properties/declaration-handler"
-# data type: xml.sax.sax2lib.DeclHandler
-# description: An optional extension handler for DTD-related events other
-#              than notations and unparsed entities.
-# access: read/write
-
-property_dom_node = "http://xml.org/sax/properties/dom-node"
-# data type: org.w3c.dom.Node
-# description: When parsing, the current DOM node being visited if this is
-#              a DOM iterator; when not parsing, the root DOM node for
-#              iteration.
-# access: (parsing) read-only; (not parsing) read/write
-
-property_xml_string = "http://xml.org/sax/properties/xml-string"
-# data type: String
-# description: The literal string of characters that was the source for
-#              the current event.
-# access: read-only
-
-property_encoding = "http://www.python.org/sax/properties/encoding"
-# data type: String
-# description: The name of the encoding to assume for input data.
-# access: write: set the encoding, e.g. established by a higher-level
-#                protocol. May change during parsing (e.g. after
-#                processing a META tag)
-#         read:  return the current encoding (possibly established through
-#                auto-detection.
-# initial value: UTF-8
-#
-
-property_interning_dict = "http://www.python.org/sax/properties/interning-dict"
-# data type: Dictionary
-# description: The dictionary used to intern common strings in the document
-# access: write: Request that the parser uses a specific dictionary, to
-#                allow interning across different documents
-#         read:  return the current interning dictionary, or None
-#
-
-all_properties = [property_lexical_handler,
-                  property_dom_node,
-                  property_declaration_handler,
-                  property_xml_string,
-                  property_encoding,
-                  property_interning_dict]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/saxutils.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/saxutils.py
deleted file mode 100644
index fa9feed..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/saxutils.py
+++ /dev/null
@@ -1,308 +0,0 @@
-"""\
-A library of useful helper classes to the SAX classes, for the
-convenience of application and driver writers.
-"""
-
-import os, urlparse, urllib, types
-import handler
-import xmlreader
-
-try:
-    _StringTypes = [types.StringType, types.UnicodeType]
-except AttributeError:
-    _StringTypes = [types.StringType]
-
-# See whether the xmlcharrefreplace error handler is
-# supported
-try:
-    from codecs import xmlcharrefreplace_errors
-    _error_handling = "xmlcharrefreplace"
-    del xmlcharrefreplace_errors
-except ImportError:
-    _error_handling = "strict"
-
-def __dict_replace(s, d):
-    """Replace substrings of a string using a dictionary."""
-    for key, value in d.items():
-        s = s.replace(key, value)
-    return s
-
-def escape(data, entities={}):
-    """Escape &, <, and > in a string of data.
-
-    You can escape other strings of data by passing a dictionary as
-    the optional entities parameter.  The keys and values must all be
-    strings; each key will be replaced with its corresponding value.
-    """
-
-    # must do ampersand first
-    data = data.replace("&", "&amp;")
-    data = data.replace(">", "&gt;")
-    data = data.replace("<", "&lt;")
-    if entities:
-        data = __dict_replace(data, entities)
-    return data
-
-def unescape(data, entities={}):
-    """Unescape &amp;, &lt;, and &gt; in a string of data.
-
-    You can unescape other strings of data by passing a dictionary as
-    the optional entities parameter.  The keys and values must all be
-    strings; each key will be replaced with its corresponding value.
-    """
-    data = data.replace("&lt;", "<")
-    data = data.replace("&gt;", ">")
-    if entities:
-        data = __dict_replace(data, entities)
-    # must do ampersand last
-    return data.replace("&amp;", "&")
-
-def quoteattr(data, entities={}):
-    """Escape and quote an attribute value.
-
-    Escape &, <, and > in a string of data, then quote it for use as
-    an attribute value.  The \" character will be escaped as well, if
-    necessary.
-
-    You can escape other strings of data by passing a dictionary as
-    the optional entities parameter.  The keys and values must all be
-    strings; each key will be replaced with its corresponding value.
-    """
-    entities = entities.copy()
-    entities.update({'\n': '&#10;', '\r': '&#13;', '\t':'&#9;'})
-    data = escape(data, entities)
-    if '"' in data:
-        if "'" in data:
-            data = '"%s"' % data.replace('"', "&quot;")
-        else:
-            data = "'%s'" % data
-    else:
-        data = '"%s"' % data
-    return data
-
-
-class XMLGenerator(handler.ContentHandler):
-
-    def __init__(self, out=None, encoding="iso-8859-1"):
-        if out is None:
-            import sys
-            out = sys.stdout
-        handler.ContentHandler.__init__(self)
-        self._out = out
-        self._ns_contexts = [{}] # contains uri -> prefix dicts
-        self._current_context = self._ns_contexts[-1]
-        self._undeclared_ns_maps = []
-        self._encoding = encoding
-
-    def _write(self, text):
-        if isinstance(text, str):
-            self._out.write(text)
-        else:
-            self._out.write(text.encode(self._encoding, _error_handling))
-
-    def _qname(self, name):
-        """Builds a qualified name from a (ns_url, localname) pair"""
-        if name[0]:
-            # Per http://www.w3.org/XML/1998/namespace, The 'xml' prefix is
-            # bound by definition to http://www.w3.org/XML/1998/namespace.  It
-            # does not need to be declared and will not usually be found in
-            # self._current_context.
-            if 'http://www.w3.org/XML/1998/namespace' == name[0]:
-                return 'xml:' + name[1]
-            # The name is in a non-empty namespace
-            prefix = self._current_context[name[0]]
-            if prefix:
-                # If it is not the default namespace, prepend the prefix
-                return prefix + ":" + name[1]
-        # Return the unqualified name
-        return name[1]
-
-    # ContentHandler methods
-
-    def startDocument(self):
-        self._write('<?xml version="1.0" encoding="%s"?>\n' %
-                        self._encoding)
-
-    def startPrefixMapping(self, prefix, uri):
-        self._ns_contexts.append(self._current_context.copy())
-        self._current_context[uri] = prefix
-        self._undeclared_ns_maps.append((prefix, uri))
-
-    def endPrefixMapping(self, prefix):
-        self._current_context = self._ns_contexts[-1]
-        del self._ns_contexts[-1]
-
-    def startElement(self, name, attrs):
-        self._write('<' + name)
-        for (name, value) in attrs.items():
-            self._write(' %s=%s' % (name, quoteattr(value)))
-        self._write('>')
-
-    def endElement(self, name):
-        self._write('</%s>' % name)
-
-    def startElementNS(self, name, qname, attrs):
-        self._write('<' + self._qname(name))
-
-        for prefix, uri in self._undeclared_ns_maps:
-            if prefix:
-                self._out.write(' xmlns:%s="%s"' % (prefix, uri))
-            else:
-                self._out.write(' xmlns="%s"' % uri)
-        self._undeclared_ns_maps = []
-
-        for (name, value) in attrs.items():
-            self._write(' %s=%s' % (self._qname(name), quoteattr(value)))
-        self._write('>')
-
-    def endElementNS(self, name, qname):
-        self._write('</%s>' % self._qname(name))
-
-    def characters(self, content):
-        self._write(escape(content))
-
-    def ignorableWhitespace(self, content):
-        self._write(content)
-
-    def processingInstruction(self, target, data):
-        self._write('<?%s %s?>' % (target, data))
-
-
-class XMLFilterBase(xmlreader.XMLReader):
-    """This class is designed to sit between an XMLReader and the
-    client application's event handlers.  By default, it does nothing
-    but pass requests up to the reader and events on to the handlers
-    unmodified, but subclasses can override specific methods to modify
-    the event stream or the configuration requests as they pass
-    through."""
-
-    def __init__(self, parent = None):
-        xmlreader.XMLReader.__init__(self)
-        self._parent = parent
-
-    # ErrorHandler methods
-
-    def error(self, exception):
-        self._err_handler.error(exception)
-
-    def fatalError(self, exception):
-        self._err_handler.fatalError(exception)
-
-    def warning(self, exception):
-        self._err_handler.warning(exception)
-
-    # ContentHandler methods
-
-    def setDocumentLocator(self, locator):
-        self._cont_handler.setDocumentLocator(locator)
-
-    def startDocument(self):
-        self._cont_handler.startDocument()
-
-    def endDocument(self):
-        self._cont_handler.endDocument()
-
-    def startPrefixMapping(self, prefix, uri):
-        self._cont_handler.startPrefixMapping(prefix, uri)
-
-    def endPrefixMapping(self, prefix):
-        self._cont_handler.endPrefixMapping(prefix)
-
-    def startElement(self, name, attrs):
-        self._cont_handler.startElement(name, attrs)
-
-    def endElement(self, name):
-        self._cont_handler.endElement(name)
-
-    def startElementNS(self, name, qname, attrs):
-        self._cont_handler.startElementNS(name, qname, attrs)
-
-    def endElementNS(self, name, qname):
-        self._cont_handler.endElementNS(name, qname)
-
-    def characters(self, content):
-        self._cont_handler.characters(content)
-
-    def ignorableWhitespace(self, chars):
-        self._cont_handler.ignorableWhitespace(chars)
-
-    def processingInstruction(self, target, data):
-        self._cont_handler.processingInstruction(target, data)
-
-    def skippedEntity(self, name):
-        self._cont_handler.skippedEntity(name)
-
-    # DTDHandler methods
-
-    def notationDecl(self, name, publicId, systemId):
-        self._dtd_handler.notationDecl(name, publicId, systemId)
-
-    def unparsedEntityDecl(self, name, publicId, systemId, ndata):
-        self._dtd_handler.unparsedEntityDecl(name, publicId, systemId, ndata)
-
-    # EntityResolver methods
-
-    def resolveEntity(self, publicId, systemId):
-        return self._ent_handler.resolveEntity(publicId, systemId)
-
-    # XMLReader methods
-
-    def parse(self, source):
-        self._parent.setContentHandler(self)
-        self._parent.setErrorHandler(self)
-        self._parent.setEntityResolver(self)
-        self._parent.setDTDHandler(self)
-        self._parent.parse(source)
-
-    def setLocale(self, locale):
-        self._parent.setLocale(locale)
-
-    def getFeature(self, name):
-        return self._parent.getFeature(name)
-
-    def setFeature(self, name, state):
-        self._parent.setFeature(name, state)
-
-    def getProperty(self, name):
-        return self._parent.getProperty(name)
-
-    def setProperty(self, name, value):
-        self._parent.setProperty(name, value)
-
-    # XMLFilter methods
-
-    def getParent(self):
-        return self._parent
-
-    def setParent(self, parent):
-        self._parent = parent
-
-# --- Utility functions
-
-def prepare_input_source(source, base = ""):
-    """This function takes an InputSource and an optional base URL and
-    returns a fully resolved InputSource object ready for reading."""
-
-    if type(source) in _StringTypes:
-        source = xmlreader.InputSource(source)
-    elif hasattr(source, "read"):
-        f = source
-        source = xmlreader.InputSource()
-        source.setByteStream(f)
-        if hasattr(f, "name"):
-            source.setSystemId(f.name)
-
-    if source.getByteStream() is None:
-        sysid = source.getSystemId()
-        basehead = os.path.dirname(os.path.normpath(base))
-        sysidfilename = os.path.join(basehead, sysid)
-        if os.path.isfile(sysidfilename):
-            source.setSystemId(sysidfilename)
-            f = open(sysidfilename, "rb")
-        else:
-            source.setSystemId(urlparse.urljoin(base, sysid))
-            f = urllib.urlopen(source.getSystemId())
-
-        source.setByteStream(f)
-
-    return source
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/xmlreader.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/xmlreader.py
deleted file mode 100644
index 276b462..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xml/sax/xmlreader.py
+++ /dev/null
@@ -1,381 +0,0 @@
-"""An XML Reader is the SAX 2 name for an XML parser. XML Parsers
-should be based on this code. """
-
-import handler
-
-from _exceptions import SAXNotSupportedException, SAXNotRecognizedException
-
-
-# ===== XMLREADER =====
-
-class XMLReader:
-    """Interface for reading an XML document using callbacks.
-
-    XMLReader is the interface that an XML parser's SAX2 driver must
-    implement. This interface allows an application to set and query
-    features and properties in the parser, to register event handlers
-    for document processing, and to initiate a document parse.
-
-    All SAX interfaces are assumed to be synchronous: the parse
-    methods must not return until parsing is complete, and readers
-    must wait for an event-handler callback to return before reporting
-    the next event."""
-
-    def __init__(self):
-        self._cont_handler = handler.ContentHandler()
-        self._dtd_handler = handler.DTDHandler()
-        self._ent_handler = handler.EntityResolver()
-        self._err_handler = handler.ErrorHandler()
-
-    def parse(self, source):
-        "Parse an XML document from a system identifier or an InputSource."
-        raise NotImplementedError("This method must be implemented!")
-
-    def getContentHandler(self):
-        "Returns the current ContentHandler."
-        return self._cont_handler
-
-    def setContentHandler(self, handler):
-        "Registers a new object to receive document content events."
-        self._cont_handler = handler
-
-    def getDTDHandler(self):
-        "Returns the current DTD handler."
-        return self._dtd_handler
-
-    def setDTDHandler(self, handler):
-        "Register an object to receive basic DTD-related events."
-        self._dtd_handler = handler
-
-    def getEntityResolver(self):
-        "Returns the current EntityResolver."
-        return self._ent_handler
-
-    def setEntityResolver(self, resolver):
-        "Register an object to resolve external entities."
-        self._ent_handler = resolver
-
-    def getErrorHandler(self):
-        "Returns the current ErrorHandler."
-        return self._err_handler
-
-    def setErrorHandler(self, handler):
-        "Register an object to receive error-message events."
-        self._err_handler = handler
-
-    def setLocale(self, locale):
-        """Allow an application to set the locale for errors and warnings.
-
-        SAX parsers are not required to provide localization for errors
-        and warnings; if they cannot support the requested locale,
-        however, they must throw a SAX exception. Applications may
-        request a locale change in the middle of a parse."""
-        raise SAXNotSupportedException("Locale support not implemented")
-
-    def getFeature(self, name):
-        "Looks up and returns the state of a SAX2 feature."
-        raise SAXNotRecognizedException("Feature '%s' not recognized" % name)
-
-    def setFeature(self, name, state):
-        "Sets the state of a SAX2 feature."
-        raise SAXNotRecognizedException("Feature '%s' not recognized" % name)
-
-    def getProperty(self, name):
-        "Looks up and returns the value of a SAX2 property."
-        raise SAXNotRecognizedException("Property '%s' not recognized" % name)
-
-    def setProperty(self, name, value):
-        "Sets the value of a SAX2 property."
-        raise SAXNotRecognizedException("Property '%s' not recognized" % name)
-
-class IncrementalParser(XMLReader):
-    """This interface adds three extra methods to the XMLReader
-    interface that allow XML parsers to support incremental
-    parsing. Support for this interface is optional, since not all
-    underlying XML parsers support this functionality.
-
-    When the parser is instantiated it is ready to begin accepting
-    data from the feed method immediately. After parsing has been
-    finished with a call to close the reset method must be called to
-    make the parser ready to accept new data, either from feed or
-    using the parse method.
-
-    Note that these methods must _not_ be called during parsing, that
-    is, after parse has been called and before it returns.
-
-    By default, the class also implements the parse method of the XMLReader
-    interface using the feed, close and reset methods of the
-    IncrementalParser interface as a convenience to SAX 2.0 driver
-    writers."""
-
-    def __init__(self, bufsize=2**16):
-        self._bufsize = bufsize
-        XMLReader.__init__(self)
-
-    def parse(self, source):
-        import saxutils
-        source = saxutils.prepare_input_source(source)
-
-        self.prepareParser(source)
-        file = source.getByteStream()
-        buffer = file.read(self._bufsize)
-        while buffer != "":
-            self.feed(buffer)
-            buffer = file.read(self._bufsize)
-        self.close()
-
-    def feed(self, data):
-        """This method gives the raw XML data in the data parameter to
-        the parser and makes it parse the data, emitting the
-        corresponding events. It is allowed for XML constructs to be
-        split across several calls to feed.
-
-        feed may raise SAXException."""
-        raise NotImplementedError("This method must be implemented!")
-
-    def prepareParser(self, source):
-        """This method is called by the parse implementation to allow
-        the SAX 2.0 driver to prepare itself for parsing."""
-        raise NotImplementedError("prepareParser must be overridden!")
-
-    def close(self):
-        """This method is called when the entire XML document has been
-        passed to the parser through the feed method, to notify the
-        parser that there are no more data. This allows the parser to
-        do the final checks on the document and empty the internal
-        data buffer.
-
-        The parser will not be ready to parse another document until
-        the reset method has been called.
-
-        close may raise SAXException."""
-        raise NotImplementedError("This method must be implemented!")
-
-    def reset(self):
-        """This method is called after close has been called to reset
-        the parser so that it is ready to parse new documents. The
-        results of calling parse or feed after close without calling
-        reset are undefined."""
-        raise NotImplementedError("This method must be implemented!")
-
-# ===== LOCATOR =====
-
-class Locator:
-    """Interface for associating a SAX event with a document
-    location. A locator object will return valid results only during
-    calls to DocumentHandler methods; at any other time, the
-    results are unpredictable."""
-
-    def getColumnNumber(self):
-        "Return the column number where the current event ends."
-        return -1
-
-    def getLineNumber(self):
-        "Return the line number where the current event ends."
-        return -1
-
-    def getPublicId(self):
-        "Return the public identifier for the current event."
-        return None
-
-    def getSystemId(self):
-        "Return the system identifier for the current event."
-        return None
-
-# ===== INPUTSOURCE =====
-
-class InputSource:
-    """Encapsulation of the information needed by the XMLReader to
-    read entities.
-
-    This class may include information about the public identifier,
-    system identifier, byte stream (possibly with character encoding
-    information) and/or the character stream of an entity.
-
-    Applications will create objects of this class for use in the
-    XMLReader.parse method and for returning from
-    EntityResolver.resolveEntity.
-
-    An InputSource belongs to the application, the XMLReader is not
-    allowed to modify InputSource objects passed to it from the
-    application, although it may make copies and modify those."""
-
-    def __init__(self, system_id = None):
-        self.__system_id = system_id
-        self.__public_id = None
-        self.__encoding  = None
-        self.__bytefile  = None
-        self.__charfile  = None
-
-    def setPublicId(self, public_id):
-        "Sets the public identifier of this InputSource."
-        self.__public_id = public_id
-
-    def getPublicId(self):
-        "Returns the public identifier of this InputSource."
-        return self.__public_id
-
-    def setSystemId(self, system_id):
-        "Sets the system identifier of this InputSource."
-        self.__system_id = system_id
-
-    def getSystemId(self):
-        "Returns the system identifier of this InputSource."
-        return self.__system_id
-
-    def setEncoding(self, encoding):
-        """Sets the character encoding of this InputSource.
-
-        The encoding must be a string acceptable for an XML encoding
-        declaration (see section 4.3.3 of the XML recommendation).
-
-        The encoding attribute of the InputSource is ignored if the
-        InputSource also contains a character stream."""
-        self.__encoding = encoding
-
-    def getEncoding(self):
-        "Get the character encoding of this InputSource."
-        return self.__encoding
-
-    def setByteStream(self, bytefile):
-        """Set the byte stream (a Python file-like object which does
-        not perform byte-to-character conversion) for this input
-        source.
-
-        The SAX parser will ignore this if there is also a character
-        stream specified, but it will use a byte stream in preference
-        to opening a URI connection itself.
-
-        If the application knows the character encoding of the byte
-        stream, it should set it with the setEncoding method."""
-        self.__bytefile = bytefile
-
-    def getByteStream(self):
-        """Get the byte stream for this input source.
-
-        The getEncoding method will return the character encoding for
-        this byte stream, or None if unknown."""
-        return self.__bytefile
-
-    def setCharacterStream(self, charfile):
-        """Set the character stream for this input source. (The stream
-        must be a Python 2.0 Unicode-wrapped file-like that performs
-        conversion to Unicode strings.)
-
-        If there is a character stream specified, the SAX parser will
-        ignore any byte stream and will not attempt to open a URI
-        connection to the system identifier."""
-        self.__charfile = charfile
-
-    def getCharacterStream(self):
-        "Get the character stream for this input source."
-        return self.__charfile
-
-# ===== ATTRIBUTESIMPL =====
-
-class AttributesImpl:
-
-    def __init__(self, attrs):
-        """Non-NS-aware implementation.
-
-        attrs should be of the form {name : value}."""
-        self._attrs = attrs
-
-    def getLength(self):
-        return len(self._attrs)
-
-    def getType(self, name):
-        return "CDATA"
-
-    def getValue(self, name):
-        return self._attrs[name]
-
-    def getValueByQName(self, name):
-        return self._attrs[name]
-
-    def getNameByQName(self, name):
-        if not name in self._attrs:
-            raise KeyError, name
-        return name
-
-    def getQNameByName(self, name):
-        if not name in self._attrs:
-            raise KeyError, name
-        return name
-
-    def getNames(self):
-        return self._attrs.keys()
-
-    def getQNames(self):
-        return self._attrs.keys()
-
-    def __len__(self):
-        return len(self._attrs)
-
-    def __getitem__(self, name):
-        return self._attrs[name]
-
-    def keys(self):
-        return self._attrs.keys()
-
-    def has_key(self, name):
-        return name in self._attrs
-
-    def __contains__(self, name):
-        return name in self._attrs
-
-    def get(self, name, alternative=None):
-        return self._attrs.get(name, alternative)
-
-    def copy(self):
-        return self.__class__(self._attrs)
-
-    def items(self):
-        return self._attrs.items()
-
-    def values(self):
-        return self._attrs.values()
-
-# ===== ATTRIBUTESNSIMPL =====
-
-class AttributesNSImpl(AttributesImpl):
-
-    def __init__(self, attrs, qnames):
-        """NS-aware implementation.
-
-        attrs should be of the form {(ns_uri, lname): value, ...}.
-        qnames of the form {(ns_uri, lname): qname, ...}."""
-        self._attrs = attrs
-        self._qnames = qnames
-
-    def getValueByQName(self, name):
-        for (nsname, qname) in self._qnames.items():
-            if qname == name:
-                return self._attrs[nsname]
-
-        raise KeyError, name
-
-    def getNameByQName(self, name):
-        for (nsname, qname) in self._qnames.items():
-            if qname == name:
-                return nsname
-
-        raise KeyError, name
-
-    def getQNameByName(self, name):
-        return self._qnames[name]
-
-    def getQNames(self):
-        return self._qnames.values()
-
-    def copy(self):
-        return self.__class__(self._attrs, self._qnames)
-
-
-def _test():
-    XMLReader()
-    IncrementalParser()
-    Locator()
-
-if __name__ == "__main__":
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xmllib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xmllib.py
deleted file mode 100644
index 79cd9c3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xmllib.py
+++ /dev/null
@@ -1,930 +0,0 @@
-"""A parser for XML, using the derived class as static DTD."""
-
-# Author: Sjoerd Mullender.
-
-import re
-import string
-
-import warnings
-warnings.warn("The xmllib module is obsolete.  Use xml.sax instead.",
-              DeprecationWarning, 2)
-del warnings
-
-version = '0.3'
-
-class Error(RuntimeError):
-    pass
-
-# Regular expressions used for parsing
-
-_S = '[ \t\r\n]+'                       # white space
-_opS = '[ \t\r\n]*'                     # optional white space
-_Name = '[a-zA-Z_:][-a-zA-Z0-9._:]*'    # valid XML name
-_QStr = "(?:'[^']*'|\"[^\"]*\")"        # quoted XML string
-illegal = re.compile('[^\t\r\n -\176\240-\377]') # illegal chars in content
-interesting = re.compile('[]&<]')
-
-amp = re.compile('&')
-ref = re.compile('&(' + _Name + '|#[0-9]+|#x[0-9a-fA-F]+)[^-a-zA-Z0-9._:]')
-entityref = re.compile('&(?P<name>' + _Name + ')[^-a-zA-Z0-9._:]')
-charref = re.compile('&#(?P<char>[0-9]+[^0-9]|x[0-9a-fA-F]+[^0-9a-fA-F])')
-space = re.compile(_S + '$')
-newline = re.compile('\n')
-
-attrfind = re.compile(
-    _S + '(?P<name>' + _Name + ')'
-    '(' + _opS + '=' + _opS +
-    '(?P<value>'+_QStr+'|[-a-zA-Z0-9.:+*%?!\(\)_#=~]+))?')
-starttagopen = re.compile('<' + _Name)
-starttagend = re.compile(_opS + '(?P<slash>/?)>')
-starttagmatch = re.compile('<(?P<tagname>'+_Name+')'
-                      '(?P<attrs>(?:'+attrfind.pattern+')*)'+
-                      starttagend.pattern)
-endtagopen = re.compile('</')
-endbracket = re.compile(_opS + '>')
-endbracketfind = re.compile('(?:[^>\'"]|'+_QStr+')*>')
-tagfind = re.compile(_Name)
-cdataopen = re.compile(r'<!\[CDATA\[')
-cdataclose = re.compile(r'\]\]>')
-# this matches one of the following:
-# SYSTEM SystemLiteral
-# PUBLIC PubidLiteral SystemLiteral
-_SystemLiteral = '(?P<%s>'+_QStr+')'
-_PublicLiteral = '(?P<%s>"[-\'\(\)+,./:=?;!*#@$_%% \n\ra-zA-Z0-9]*"|' \
-                        "'[-\(\)+,./:=?;!*#@$_%% \n\ra-zA-Z0-9]*')"
-_ExternalId = '(?:SYSTEM|' \
-                 'PUBLIC'+_S+_PublicLiteral%'pubid'+ \
-              ')'+_S+_SystemLiteral%'syslit'
-doctype = re.compile('<!DOCTYPE'+_S+'(?P<name>'+_Name+')'
-                     '(?:'+_S+_ExternalId+')?'+_opS)
-xmldecl = re.compile('<\?xml'+_S+
-                     'version'+_opS+'='+_opS+'(?P<version>'+_QStr+')'+
-                     '(?:'+_S+'encoding'+_opS+'='+_opS+
-                        "(?P<encoding>'[A-Za-z][-A-Za-z0-9._]*'|"
-                        '"[A-Za-z][-A-Za-z0-9._]*"))?'
-                     '(?:'+_S+'standalone'+_opS+'='+_opS+
-                        '(?P<standalone>\'(?:yes|no)\'|"(?:yes|no)"))?'+
-                     _opS+'\?>')
-procopen = re.compile(r'<\?(?P<proc>' + _Name + ')' + _opS)
-procclose = re.compile(_opS + r'\?>')
-commentopen = re.compile('<!--')
-commentclose = re.compile('-->')
-doubledash = re.compile('--')
-attrtrans = string.maketrans(' \r\n\t', '    ')
-
-# definitions for XML namespaces
-_NCName = '[a-zA-Z_][-a-zA-Z0-9._]*'    # XML Name, minus the ":"
-ncname = re.compile(_NCName + '$')
-qname = re.compile('(?:(?P<prefix>' + _NCName + '):)?' # optional prefix
-                   '(?P<local>' + _NCName + ')$')
-
-xmlns = re.compile('xmlns(?::(?P<ncname>'+_NCName+'))?$')
-
-# XML parser base class -- find tags and call handler functions.
-# Usage: p = XMLParser(); p.feed(data); ...; p.close().
-# The dtd is defined by deriving a class which defines methods with
-# special names to handle tags: start_foo and end_foo to handle <foo>
-# and </foo>, respectively.  The data between tags is passed to the
-# parser by calling self.handle_data() with some data as argument (the
-# data may be split up in arbitrary chunks).
-
-class XMLParser:
-    attributes = {}                     # default, to be overridden
-    elements = {}                       # default, to be overridden
-
-    # parsing options, settable using keyword args in __init__
-    __accept_unquoted_attributes = 0
-    __accept_missing_endtag_name = 0
-    __map_case = 0
-    __accept_utf8 = 0
-    __translate_attribute_references = 1
-
-    # Interface -- initialize and reset this instance
-    def __init__(self, **kw):
-        self.__fixed = 0
-        if 'accept_unquoted_attributes' in kw:
-            self.__accept_unquoted_attributes = kw['accept_unquoted_attributes']
-        if 'accept_missing_endtag_name' in kw:
-            self.__accept_missing_endtag_name = kw['accept_missing_endtag_name']
-        if 'map_case' in kw:
-            self.__map_case = kw['map_case']
-        if 'accept_utf8' in kw:
-            self.__accept_utf8 = kw['accept_utf8']
-        if 'translate_attribute_references' in kw:
-            self.__translate_attribute_references = kw['translate_attribute_references']
-        self.reset()
-
-    def __fixelements(self):
-        self.__fixed = 1
-        self.elements = {}
-        self.__fixdict(self.__dict__)
-        self.__fixclass(self.__class__)
-
-    def __fixclass(self, kl):
-        self.__fixdict(kl.__dict__)
-        for k in kl.__bases__:
-            self.__fixclass(k)
-
-    def __fixdict(self, dict):
-        for key in dict.keys():
-            if key[:6] == 'start_':
-                tag = key[6:]
-                start, end = self.elements.get(tag, (None, None))
-                if start is None:
-                    self.elements[tag] = getattr(self, key), end
-            elif key[:4] == 'end_':
-                tag = key[4:]
-                start, end = self.elements.get(tag, (None, None))
-                if end is None:
-                    self.elements[tag] = start, getattr(self, key)
-
-    # Interface -- reset this instance.  Loses all unprocessed data
-    def reset(self):
-        self.rawdata = ''
-        self.stack = []
-        self.nomoretags = 0
-        self.literal = 0
-        self.lineno = 1
-        self.__at_start = 1
-        self.__seen_doctype = None
-        self.__seen_starttag = 0
-        self.__use_namespaces = 0
-        self.__namespaces = {'xml':None}   # xml is implicitly declared
-        # backward compatibility hack: if elements not overridden,
-        # fill it in ourselves
-        if self.elements is XMLParser.elements:
-            self.__fixelements()
-
-    # For derived classes only -- enter literal mode (CDATA) till EOF
-    def setnomoretags(self):
-        self.nomoretags = self.literal = 1
-
-    # For derived classes only -- enter literal mode (CDATA)
-    def setliteral(self, *args):
-        self.literal = 1
-
-    # Interface -- feed some data to the parser.  Call this as
-    # often as you want, with as little or as much text as you
-    # want (may include '\n').  (This just saves the text, all the
-    # processing is done by goahead().)
-    def feed(self, data):
-        self.rawdata = self.rawdata + data
-        self.goahead(0)
-
-    # Interface -- handle the remaining data
-    def close(self):
-        self.goahead(1)
-        if self.__fixed:
-            self.__fixed = 0
-            # remove self.elements so that we don't leak
-            del self.elements
-
-    # Interface -- translate references
-    def translate_references(self, data, all = 1):
-        if not self.__translate_attribute_references:
-            return data
-        i = 0
-        while 1:
-            res = amp.search(data, i)
-            if res is None:
-                return data
-            s = res.start(0)
-            res = ref.match(data, s)
-            if res is None:
-                self.syntax_error("bogus `&'")
-                i = s+1
-                continue
-            i = res.end(0)
-            str = res.group(1)
-            rescan = 0
-            if str[0] == '#':
-                if str[1] == 'x':
-                    str = chr(int(str[2:], 16))
-                else:
-                    str = chr(int(str[1:]))
-                if data[i - 1] != ';':
-                    self.syntax_error("`;' missing after char reference")
-                    i = i-1
-            elif all:
-                if str in self.entitydefs:
-                    str = self.entitydefs[str]
-                    rescan = 1
-                elif data[i - 1] != ';':
-                    self.syntax_error("bogus `&'")
-                    i = s + 1 # just past the &
-                    continue
-                else:
-                    self.syntax_error("reference to unknown entity `&%s;'" % str)
-                    str = '&' + str + ';'
-            elif data[i - 1] != ';':
-                self.syntax_error("bogus `&'")
-                i = s + 1 # just past the &
-                continue
-
-            # when we get here, str contains the translated text and i points
-            # to the end of the string that is to be replaced
-            data = data[:s] + str + data[i:]
-            if rescan:
-                i = s
-            else:
-                i = s + len(str)
-
-    # Interface - return a dictionary of all namespaces currently valid
-    def getnamespace(self):
-        nsdict = {}
-        for t, d, nst in self.stack:
-            nsdict.update(d)
-        return nsdict
-
-    # Internal -- handle data as far as reasonable.  May leave state
-    # and data to be processed by a subsequent call.  If 'end' is
-    # true, force handling all data as if followed by EOF marker.
-    def goahead(self, end):
-        rawdata = self.rawdata
-        i = 0
-        n = len(rawdata)
-        while i < n:
-            if i > 0:
-                self.__at_start = 0
-            if self.nomoretags:
-                data = rawdata[i:n]
-                self.handle_data(data)
-                self.lineno = self.lineno + data.count('\n')
-                i = n
-                break
-            res = interesting.search(rawdata, i)
-            if res:
-                j = res.start(0)
-            else:
-                j = n
-            if i < j:
-                data = rawdata[i:j]
-                if self.__at_start and space.match(data) is None:
-                    self.syntax_error('illegal data at start of file')
-                self.__at_start = 0
-                if not self.stack and space.match(data) is None:
-                    self.syntax_error('data not in content')
-                if not self.__accept_utf8 and illegal.search(data):
-                    self.syntax_error('illegal character in content')
-                self.handle_data(data)
-                self.lineno = self.lineno + data.count('\n')
-            i = j
-            if i == n: break
-            if rawdata[i] == '<':
-                if starttagopen.match(rawdata, i):
-                    if self.literal:
-                        data = rawdata[i]
-                        self.handle_data(data)
-                        self.lineno = self.lineno + data.count('\n')
-                        i = i+1
-                        continue
-                    k = self.parse_starttag(i)
-                    if k < 0: break
-                    self.__seen_starttag = 1
-                    self.lineno = self.lineno + rawdata[i:k].count('\n')
-                    i = k
-                    continue
-                if endtagopen.match(rawdata, i):
-                    k = self.parse_endtag(i)
-                    if k < 0: break
-                    self.lineno = self.lineno + rawdata[i:k].count('\n')
-                    i =  k
-                    continue
-                if commentopen.match(rawdata, i):
-                    if self.literal:
-                        data = rawdata[i]
-                        self.handle_data(data)
-                        self.lineno = self.lineno + data.count('\n')
-                        i = i+1
-                        continue
-                    k = self.parse_comment(i)
-                    if k < 0: break
-                    self.lineno = self.lineno + rawdata[i:k].count('\n')
-                    i = k
-                    continue
-                if cdataopen.match(rawdata, i):
-                    k = self.parse_cdata(i)
-                    if k < 0: break
-                    self.lineno = self.lineno + rawdata[i:k].count('\n')
-                    i = k
-                    continue
-                res = xmldecl.match(rawdata, i)
-                if res:
-                    if not self.__at_start:
-                        self.syntax_error("<?xml?> declaration not at start of document")
-                    version, encoding, standalone = res.group('version',
-                                                              'encoding',
-                                                              'standalone')
-                    if version[1:-1] != '1.0':
-                        raise Error('only XML version 1.0 supported')
-                    if encoding: encoding = encoding[1:-1]
-                    if standalone: standalone = standalone[1:-1]
-                    self.handle_xml(encoding, standalone)
-                    i = res.end(0)
-                    continue
-                res = procopen.match(rawdata, i)
-                if res:
-                    k = self.parse_proc(i)
-                    if k < 0: break
-                    self.lineno = self.lineno + rawdata[i:k].count('\n')
-                    i = k
-                    continue
-                res = doctype.match(rawdata, i)
-                if res:
-                    if self.literal:
-                        data = rawdata[i]
-                        self.handle_data(data)
-                        self.lineno = self.lineno + data.count('\n')
-                        i = i+1
-                        continue
-                    if self.__seen_doctype:
-                        self.syntax_error('multiple DOCTYPE elements')
-                    if self.__seen_starttag:
-                        self.syntax_error('DOCTYPE not at beginning of document')
-                    k = self.parse_doctype(res)
-                    if k < 0: break
-                    self.__seen_doctype = res.group('name')
-                    if self.__map_case:
-                        self.__seen_doctype = self.__seen_doctype.lower()
-                    self.lineno = self.lineno + rawdata[i:k].count('\n')
-                    i = k
-                    continue
-            elif rawdata[i] == '&':
-                if self.literal:
-                    data = rawdata[i]
-                    self.handle_data(data)
-                    i = i+1
-                    continue
-                res = charref.match(rawdata, i)
-                if res is not None:
-                    i = res.end(0)
-                    if rawdata[i-1] != ';':
-                        self.syntax_error("`;' missing in charref")
-                        i = i-1
-                    if not self.stack:
-                        self.syntax_error('data not in content')
-                    self.handle_charref(res.group('char')[:-1])
-                    self.lineno = self.lineno + res.group(0).count('\n')
-                    continue
-                res = entityref.match(rawdata, i)
-                if res is not None:
-                    i = res.end(0)
-                    if rawdata[i-1] != ';':
-                        self.syntax_error("`;' missing in entityref")
-                        i = i-1
-                    name = res.group('name')
-                    if self.__map_case:
-                        name = name.lower()
-                    if name in self.entitydefs:
-                        self.rawdata = rawdata = rawdata[:res.start(0)] + self.entitydefs[name] + rawdata[i:]
-                        n = len(rawdata)
-                        i = res.start(0)
-                    else:
-                        self.unknown_entityref(name)
-                    self.lineno = self.lineno + res.group(0).count('\n')
-                    continue
-            elif rawdata[i] == ']':
-                if self.literal:
-                    data = rawdata[i]
-                    self.handle_data(data)
-                    i = i+1
-                    continue
-                if n-i < 3:
-                    break
-                if cdataclose.match(rawdata, i):
-                    self.syntax_error("bogus `]]>'")
-                self.handle_data(rawdata[i])
-                i = i+1
-                continue
-            else:
-                raise Error('neither < nor & ??')
-            # We get here only if incomplete matches but
-            # nothing else
-            break
-        # end while
-        if i > 0:
-            self.__at_start = 0
-        if end and i < n:
-            data = rawdata[i]
-            self.syntax_error("bogus `%s'" % data)
-            if not self.__accept_utf8 and illegal.search(data):
-                self.syntax_error('illegal character in content')
-            self.handle_data(data)
-            self.lineno = self.lineno + data.count('\n')
-            self.rawdata = rawdata[i+1:]
-            return self.goahead(end)
-        self.rawdata = rawdata[i:]
-        if end:
-            if not self.__seen_starttag:
-                self.syntax_error('no elements in file')
-            if self.stack:
-                self.syntax_error('missing end tags')
-                while self.stack:
-                    self.finish_endtag(self.stack[-1][0])
-
-    # Internal -- parse comment, return length or -1 if not terminated
-    def parse_comment(self, i):
-        rawdata = self.rawdata
-        if rawdata[i:i+4] != '<!--':
-            raise Error('unexpected call to handle_comment')
-        res = commentclose.search(rawdata, i+4)
-        if res is None:
-            return -1
-        if doubledash.search(rawdata, i+4, res.start(0)):
-            self.syntax_error("`--' inside comment")
-        if rawdata[res.start(0)-1] == '-':
-            self.syntax_error('comment cannot end in three dashes')
-        if not self.__accept_utf8 and \
-           illegal.search(rawdata, i+4, res.start(0)):
-            self.syntax_error('illegal character in comment')
-        self.handle_comment(rawdata[i+4: res.start(0)])
-        return res.end(0)
-
-    # Internal -- handle DOCTYPE tag, return length or -1 if not terminated
-    def parse_doctype(self, res):
-        rawdata = self.rawdata
-        n = len(rawdata)
-        name = res.group('name')
-        if self.__map_case:
-            name = name.lower()
-        pubid, syslit = res.group('pubid', 'syslit')
-        if pubid is not None:
-            pubid = pubid[1:-1]         # remove quotes
-            pubid = ' '.join(pubid.split()) # normalize
-        if syslit is not None: syslit = syslit[1:-1] # remove quotes
-        j = k = res.end(0)
-        if k >= n:
-            return -1
-        if rawdata[k] == '[':
-            level = 0
-            k = k+1
-            dq = sq = 0
-            while k < n:
-                c = rawdata[k]
-                if not sq and c == '"':
-                    dq = not dq
-                elif not dq and c == "'":
-                    sq = not sq
-                elif sq or dq:
-                    pass
-                elif level <= 0 and c == ']':
-                    res = endbracket.match(rawdata, k+1)
-                    if res is None:
-                        return -1
-                    self.handle_doctype(name, pubid, syslit, rawdata[j+1:k])
-                    return res.end(0)
-                elif c == '<':
-                    level = level + 1
-                elif c == '>':
-                    level = level - 1
-                    if level < 0:
-                        self.syntax_error("bogus `>' in DOCTYPE")
-                k = k+1
-        res = endbracketfind.match(rawdata, k)
-        if res is None:
-            return -1
-        if endbracket.match(rawdata, k) is None:
-            self.syntax_error('garbage in DOCTYPE')
-        self.handle_doctype(name, pubid, syslit, None)
-        return res.end(0)
-
-    # Internal -- handle CDATA tag, return length or -1 if not terminated
-    def parse_cdata(self, i):
-        rawdata = self.rawdata
-        if rawdata[i:i+9] != '<![CDATA[':
-            raise Error('unexpected call to parse_cdata')
-        res = cdataclose.search(rawdata, i+9)
-        if res is None:
-            return -1
-        if not self.__accept_utf8 and \
-           illegal.search(rawdata, i+9, res.start(0)):
-            self.syntax_error('illegal character in CDATA')
-        if not self.stack:
-            self.syntax_error('CDATA not in content')
-        self.handle_cdata(rawdata[i+9:res.start(0)])
-        return res.end(0)
-
-    __xml_namespace_attributes = {'ns':None, 'src':None, 'prefix':None}
-    # Internal -- handle a processing instruction tag
-    def parse_proc(self, i):
-        rawdata = self.rawdata
-        end = procclose.search(rawdata, i)
-        if end is None:
-            return -1
-        j = end.start(0)
-        if not self.__accept_utf8 and illegal.search(rawdata, i+2, j):
-            self.syntax_error('illegal character in processing instruction')
-        res = tagfind.match(rawdata, i+2)
-        if res is None:
-            raise Error('unexpected call to parse_proc')
-        k = res.end(0)
-        name = res.group(0)
-        if self.__map_case:
-            name = name.lower()
-        if name == 'xml:namespace':
-            self.syntax_error('old-fashioned namespace declaration')
-            self.__use_namespaces = -1
-            # namespace declaration
-            # this must come after the <?xml?> declaration (if any)
-            # and before the <!DOCTYPE> (if any).
-            if self.__seen_doctype or self.__seen_starttag:
-                self.syntax_error('xml:namespace declaration too late in document')
-            attrdict, namespace, k = self.parse_attributes(name, k, j)
-            if namespace:
-                self.syntax_error('namespace declaration inside namespace declaration')
-            for attrname in attrdict.keys():
-                if not attrname in self.__xml_namespace_attributes:
-                    self.syntax_error("unknown attribute `%s' in xml:namespace tag" % attrname)
-            if not 'ns' in attrdict or not 'prefix' in attrdict:
-                self.syntax_error('xml:namespace without required attributes')
-            prefix = attrdict.get('prefix')
-            if ncname.match(prefix) is None:
-                self.syntax_error('xml:namespace illegal prefix value')
-                return end.end(0)
-            if prefix in self.__namespaces:
-                self.syntax_error('xml:namespace prefix not unique')
-            self.__namespaces[prefix] = attrdict['ns']
-        else:
-            if name.lower() == 'xml':
-                self.syntax_error('illegal processing instruction target name')
-            self.handle_proc(name, rawdata[k:j])
-        return end.end(0)
-
-    # Internal -- parse attributes between i and j
-    def parse_attributes(self, tag, i, j):
-        rawdata = self.rawdata
-        attrdict = {}
-        namespace = {}
-        while i < j:
-            res = attrfind.match(rawdata, i)
-            if res is None:
-                break
-            attrname, attrvalue = res.group('name', 'value')
-            if self.__map_case:
-                attrname = attrname.lower()
-            i = res.end(0)
-            if attrvalue is None:
-                self.syntax_error("no value specified for attribute `%s'" % attrname)
-                attrvalue = attrname
-            elif attrvalue[:1] == "'" == attrvalue[-1:] or \
-                 attrvalue[:1] == '"' == attrvalue[-1:]:
-                attrvalue = attrvalue[1:-1]
-            elif not self.__accept_unquoted_attributes:
-                self.syntax_error("attribute `%s' value not quoted" % attrname)
-            res = xmlns.match(attrname)
-            if res is not None:
-                # namespace declaration
-                ncname = res.group('ncname')
-                namespace[ncname or ''] = attrvalue or None
-                if not self.__use_namespaces:
-                    self.__use_namespaces = len(self.stack)+1
-                continue
-            if '<' in attrvalue:
-                self.syntax_error("`<' illegal in attribute value")
-            if attrname in attrdict:
-                self.syntax_error("attribute `%s' specified twice" % attrname)
-            attrvalue = attrvalue.translate(attrtrans)
-            attrdict[attrname] = self.translate_references(attrvalue)
-        return attrdict, namespace, i
-
-    # Internal -- handle starttag, return length or -1 if not terminated
-    def parse_starttag(self, i):
-        rawdata = self.rawdata
-        # i points to start of tag
-        end = endbracketfind.match(rawdata, i+1)
-        if end is None:
-            return -1
-        tag = starttagmatch.match(rawdata, i)
-        if tag is None or tag.end(0) != end.end(0):
-            self.syntax_error('garbage in starttag')
-            return end.end(0)
-        nstag = tagname = tag.group('tagname')
-        if self.__map_case:
-            nstag = tagname = nstag.lower()
-        if not self.__seen_starttag and self.__seen_doctype and \
-           tagname != self.__seen_doctype:
-            self.syntax_error('starttag does not match DOCTYPE')
-        if self.__seen_starttag and not self.stack:
-            self.syntax_error('multiple elements on top level')
-        k, j = tag.span('attrs')
-        attrdict, nsdict, k = self.parse_attributes(tagname, k, j)
-        self.stack.append((tagname, nsdict, nstag))
-        if self.__use_namespaces:
-            res = qname.match(tagname)
-        else:
-            res = None
-        if res is not None:
-            prefix, nstag = res.group('prefix', 'local')
-            if prefix is None:
-                prefix = ''
-            ns = None
-            for t, d, nst in self.stack:
-                if prefix in d:
-                    ns = d[prefix]
-            if ns is None and prefix != '':
-                ns = self.__namespaces.get(prefix)
-            if ns is not None:
-                nstag = ns + ' ' + nstag
-            elif prefix != '':
-                nstag = prefix + ':' + nstag # undo split
-            self.stack[-1] = tagname, nsdict, nstag
-        # translate namespace of attributes
-        attrnamemap = {} # map from new name to old name (used for error reporting)
-        for key in attrdict.keys():
-            attrnamemap[key] = key
-        if self.__use_namespaces:
-            nattrdict = {}
-            for key, val in attrdict.items():
-                okey = key
-                res = qname.match(key)
-                if res is not None:
-                    aprefix, key = res.group('prefix', 'local')
-                    if self.__map_case:
-                        key = key.lower()
-                    if aprefix is not None:
-                        ans = None
-                        for t, d, nst in self.stack:
-                            if aprefix in d:
-                                ans = d[aprefix]
-                        if ans is None:
-                            ans = self.__namespaces.get(aprefix)
-                        if ans is not None:
-                            key = ans + ' ' + key
-                        else:
-                            key = aprefix + ':' + key
-                nattrdict[key] = val
-                attrnamemap[key] = okey
-            attrdict = nattrdict
-        attributes = self.attributes.get(nstag)
-        if attributes is not None:
-            for key in attrdict.keys():
-                if not key in attributes:
-                    self.syntax_error("unknown attribute `%s' in tag `%s'" % (attrnamemap[key], tagname))
-            for key, val in attributes.items():
-                if val is not None and not key in attrdict:
-                    attrdict[key] = val
-        method = self.elements.get(nstag, (None, None))[0]
-        self.finish_starttag(nstag, attrdict, method)
-        if tag.group('slash') == '/':
-            self.finish_endtag(tagname)
-        return tag.end(0)
-
-    # Internal -- parse endtag
-    def parse_endtag(self, i):
-        rawdata = self.rawdata
-        end = endbracketfind.match(rawdata, i+1)
-        if end is None:
-            return -1
-        res = tagfind.match(rawdata, i+2)
-        if res is None:
-            if self.literal:
-                self.handle_data(rawdata[i])
-                return i+1
-            if not self.__accept_missing_endtag_name:
-                self.syntax_error('no name specified in end tag')
-            tag = self.stack[-1][0]
-            k = i+2
-        else:
-            tag = res.group(0)
-            if self.__map_case:
-                tag = tag.lower()
-            if self.literal:
-                if not self.stack or tag != self.stack[-1][0]:
-                    self.handle_data(rawdata[i])
-                    return i+1
-            k = res.end(0)
-        if endbracket.match(rawdata, k) is None:
-            self.syntax_error('garbage in end tag')
-        self.finish_endtag(tag)
-        return end.end(0)
-
-    # Internal -- finish processing of start tag
-    def finish_starttag(self, tagname, attrdict, method):
-        if method is not None:
-            self.handle_starttag(tagname, method, attrdict)
-        else:
-            self.unknown_starttag(tagname, attrdict)
-
-    # Internal -- finish processing of end tag
-    def finish_endtag(self, tag):
-        self.literal = 0
-        if not tag:
-            self.syntax_error('name-less end tag')
-            found = len(self.stack) - 1
-            if found < 0:
-                self.unknown_endtag(tag)
-                return
-        else:
-            found = -1
-            for i in range(len(self.stack)):
-                if tag == self.stack[i][0]:
-                    found = i
-            if found == -1:
-                self.syntax_error('unopened end tag')
-                return
-        while len(self.stack) > found:
-            if found < len(self.stack) - 1:
-                self.syntax_error('missing close tag for %s' % self.stack[-1][2])
-            nstag = self.stack[-1][2]
-            method = self.elements.get(nstag, (None, None))[1]
-            if method is not None:
-                self.handle_endtag(nstag, method)
-            else:
-                self.unknown_endtag(nstag)
-            if self.__use_namespaces == len(self.stack):
-                self.__use_namespaces = 0
-            del self.stack[-1]
-
-    # Overridable -- handle xml processing instruction
-    def handle_xml(self, encoding, standalone):
-        pass
-
-    # Overridable -- handle DOCTYPE
-    def handle_doctype(self, tag, pubid, syslit, data):
-        pass
-
-    # Overridable -- handle start tag
-    def handle_starttag(self, tag, method, attrs):
-        method(attrs)
-
-    # Overridable -- handle end tag
-    def handle_endtag(self, tag, method):
-        method()
-
-    # Example -- handle character reference, no need to override
-    def handle_charref(self, name):
-        try:
-            if name[0] == 'x':
-                n = int(name[1:], 16)
-            else:
-                n = int(name)
-        except ValueError:
-            self.unknown_charref(name)
-            return
-        if not 0 <= n <= 255:
-            self.unknown_charref(name)
-            return
-        self.handle_data(chr(n))
-
-    # Definition of entities -- derived classes may override
-    entitydefs = {'lt': '&#60;',        # must use charref
-                  'gt': '&#62;',
-                  'amp': '&#38;',       # must use charref
-                  'quot': '&#34;',
-                  'apos': '&#39;',
-                  }
-
-    # Example -- handle data, should be overridden
-    def handle_data(self, data):
-        pass
-
-    # Example -- handle cdata, could be overridden
-    def handle_cdata(self, data):
-        pass
-
-    # Example -- handle comment, could be overridden
-    def handle_comment(self, data):
-        pass
-
-    # Example -- handle processing instructions, could be overridden
-    def handle_proc(self, name, data):
-        pass
-
-    # Example -- handle relatively harmless syntax errors, could be overridden
-    def syntax_error(self, message):
-        raise Error('Syntax error at line %d: %s' % (self.lineno, message))
-
-    # To be overridden -- handlers for unknown objects
-    def unknown_starttag(self, tag, attrs): pass
-    def unknown_endtag(self, tag): pass
-    def unknown_charref(self, ref): pass
-    def unknown_entityref(self, name):
-        self.syntax_error("reference to unknown entity `&%s;'" % name)
-
-
-class TestXMLParser(XMLParser):
-
-    def __init__(self, **kw):
-        self.testdata = ""
-        XMLParser.__init__(self, **kw)
-
-    def handle_xml(self, encoding, standalone):
-        self.flush()
-        print 'xml: encoding =',encoding,'standalone =',standalone
-
-    def handle_doctype(self, tag, pubid, syslit, data):
-        self.flush()
-        print 'DOCTYPE:',tag, repr(data)
-
-    def handle_data(self, data):
-        self.testdata = self.testdata + data
-        if len(repr(self.testdata)) >= 70:
-            self.flush()
-
-    def flush(self):
-        data = self.testdata
-        if data:
-            self.testdata = ""
-            print 'data:', repr(data)
-
-    def handle_cdata(self, data):
-        self.flush()
-        print 'cdata:', repr(data)
-
-    def handle_proc(self, name, data):
-        self.flush()
-        print 'processing:',name,repr(data)
-
-    def handle_comment(self, data):
-        self.flush()
-        r = repr(data)
-        if len(r) > 68:
-            r = r[:32] + '...' + r[-32:]
-        print 'comment:', r
-
-    def syntax_error(self, message):
-        print 'error at line %d:' % self.lineno, message
-
-    def unknown_starttag(self, tag, attrs):
-        self.flush()
-        if not attrs:
-            print 'start tag: <' + tag + '>'
-        else:
-            print 'start tag: <' + tag,
-            for name, value in attrs.items():
-                print name + '=' + '"' + value + '"',
-            print '>'
-
-    def unknown_endtag(self, tag):
-        self.flush()
-        print 'end tag: </' + tag + '>'
-
-    def unknown_entityref(self, ref):
-        self.flush()
-        print '*** unknown entity ref: &' + ref + ';'
-
-    def unknown_charref(self, ref):
-        self.flush()
-        print '*** unknown char ref: &#' + ref + ';'
-
-    def close(self):
-        XMLParser.close(self)
-        self.flush()
-
-def test(args = None):
-    import sys, getopt
-    from time import time
-
-    if not args:
-        args = sys.argv[1:]
-
-    opts, args = getopt.getopt(args, 'st')
-    klass = TestXMLParser
-    do_time = 0
-    for o, a in opts:
-        if o == '-s':
-            klass = XMLParser
-        elif o == '-t':
-            do_time = 1
-
-    if args:
-        file = args[0]
-    else:
-        file = 'test.xml'
-
-    if file == '-':
-        f = sys.stdin
-    else:
-        try:
-            f = open(file, 'r')
-        except IOError, msg:
-            print file, ":", msg
-            sys.exit(1)
-
-    data = f.read()
-    if f is not sys.stdin:
-        f.close()
-
-    x = klass()
-    t0 = time()
-    try:
-        if do_time:
-            x.feed(data)
-            x.close()
-        else:
-            for c in data:
-                x.feed(c)
-            x.close()
-    except Error, msg:
-        t1 = time()
-        print msg
-        if do_time:
-            print 'total time: %g' % (t1-t0)
-        sys.exit(1)
-    t1 = time()
-    if do_time:
-        print 'total time: %g' % (t1-t0)
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/xmlrpclib.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/xmlrpclib.py
deleted file mode 100644
index 34c63a7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/xmlrpclib.py
+++ /dev/null
@@ -1,1636 +0,0 @@
-#
-# XML-RPC CLIENT LIBRARY
-# $Id$
-#
-# an XML-RPC client interface for Python.
-#
-# the marshalling and response parser code can also be used to
-# implement XML-RPC servers.
-#
-# Notes:
-# this version is designed to work with Python 2.1 or newer.
-#
-# History:
-# 1999-01-14 fl  Created
-# 1999-01-15 fl  Changed dateTime to use localtime
-# 1999-01-16 fl  Added Binary/base64 element, default to RPC2 service
-# 1999-01-19 fl  Fixed array data element (from Skip Montanaro)
-# 1999-01-21 fl  Fixed dateTime constructor, etc.
-# 1999-02-02 fl  Added fault handling, handle empty sequences, etc.
-# 1999-02-10 fl  Fixed problem with empty responses (from Skip Montanaro)
-# 1999-06-20 fl  Speed improvements, pluggable parsers/transports (0.9.8)
-# 2000-11-28 fl  Changed boolean to check the truth value of its argument
-# 2001-02-24 fl  Added encoding/Unicode/SafeTransport patches
-# 2001-02-26 fl  Added compare support to wrappers (0.9.9/1.0b1)
-# 2001-03-28 fl  Make sure response tuple is a singleton
-# 2001-03-29 fl  Don't require empty params element (from Nicholas Riley)
-# 2001-06-10 fl  Folded in _xmlrpclib accelerator support (1.0b2)
-# 2001-08-20 fl  Base xmlrpclib.Error on built-in Exception (from Paul Prescod)
-# 2001-09-03 fl  Allow Transport subclass to override getparser
-# 2001-09-10 fl  Lazy import of urllib, cgi, xmllib (20x import speedup)
-# 2001-10-01 fl  Remove containers from memo cache when done with them
-# 2001-10-01 fl  Use faster escape method (80% dumps speedup)
-# 2001-10-02 fl  More dumps microtuning
-# 2001-10-04 fl  Make sure import expat gets a parser (from Guido van Rossum)
-# 2001-10-10 sm  Allow long ints to be passed as ints if they don't overflow
-# 2001-10-17 sm  Test for int and long overflow (allows use on 64-bit systems)
-# 2001-11-12 fl  Use repr() to marshal doubles (from Paul Felix)
-# 2002-03-17 fl  Avoid buffered read when possible (from James Rucker)
-# 2002-04-07 fl  Added pythondoc comments
-# 2002-04-16 fl  Added __str__ methods to datetime/binary wrappers
-# 2002-05-15 fl  Added error constants (from Andrew Kuchling)
-# 2002-06-27 fl  Merged with Python CVS version
-# 2002-10-22 fl  Added basic authentication (based on code from Phillip Eby)
-# 2003-01-22 sm  Add support for the bool type
-# 2003-02-27 gvr Remove apply calls
-# 2003-04-24 sm  Use cStringIO if available
-# 2003-04-25 ak  Add support for nil
-# 2003-06-15 gn  Add support for time.struct_time
-# 2003-07-12 gp  Correct marshalling of Faults
-# 2003-10-31 mvl Add multicall support
-# 2004-08-20 mvl Bump minimum supported Python version to 2.1
-#
-# Copyright (c) 1999-2002 by Secret Labs AB.
-# Copyright (c) 1999-2002 by Fredrik Lundh.
-#
-# info@pythonware.com
-# http://www.pythonware.com
-#
-# --------------------------------------------------------------------
-# The XML-RPC client interface is
-#
-# Copyright (c) 1999-2002 by Secret Labs AB
-# Copyright (c) 1999-2002 by Fredrik Lundh
-#
-# By obtaining, using, and/or copying this software and/or its
-# associated documentation, you agree that you have read, understood,
-# and will comply with the following terms and conditions:
-#
-# Permission to use, copy, modify, and distribute this software and
-# its associated documentation for any purpose and without fee is
-# hereby granted, provided that the above copyright notice appears in
-# all copies, and that both that copyright notice and this permission
-# notice appear in supporting documentation, and that the name of
-# Secret Labs AB or the author not be used in advertising or publicity
-# pertaining to distribution of the software without specific, written
-# prior permission.
-#
-# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
-# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
-# ABILITY AND FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
-# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
-# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-# OF THIS SOFTWARE.
-# --------------------------------------------------------------------
-
-#
-# things to look into some day:
-
-# TODO: sort out True/False/boolean issues for Python 2.3
-
-"""
-An XML-RPC client interface for Python.
-
-The marshalling and response parser code can also be used to
-implement XML-RPC servers.
-
-Exported exceptions:
-
-  Error          Base class for client errors
-  ProtocolError  Indicates an HTTP protocol error
-  ResponseError  Indicates a broken response package
-  Fault          Indicates an XML-RPC fault package
-
-Exported classes:
-
-  ServerProxy    Represents a logical connection to an XML-RPC server
-
-  MultiCall      Executor of boxcared xmlrpc requests
-  Boolean        boolean wrapper to generate a "boolean" XML-RPC value
-  DateTime       dateTime wrapper for an ISO 8601 string or time tuple or
-                 localtime integer value to generate a "dateTime.iso8601"
-                 XML-RPC value
-  Binary         binary data wrapper
-
-  SlowParser     Slow but safe standard parser (based on xmllib)
-  Marshaller     Generate an XML-RPC params chunk from a Python data structure
-  Unmarshaller   Unmarshal an XML-RPC response from incoming XML event message
-  Transport      Handles an HTTP transaction to an XML-RPC server
-  SafeTransport  Handles an HTTPS transaction to an XML-RPC server
-
-Exported constants:
-
-  True
-  False
-
-Exported functions:
-
-  boolean        Convert any Python value to an XML-RPC boolean
-  getparser      Create instance of the fastest available parser & attach
-                 to an unmarshalling object
-  dumps          Convert an argument tuple or a Fault instance to an XML-RPC
-                 request (or response, if the methodresponse option is used).
-  loads          Convert an XML-RPC packet to unmarshalled data plus a method
-                 name (None if not present).
-"""
-
-import re, string, time, operator
-
-from types import *
-import socket
-import errno
-import httplib
-try:
-    import gzip
-except ImportError:
-    gzip = None #python can be built without zlib/gzip support
-
-# --------------------------------------------------------------------
-# Internal stuff
-
-try:
-    unicode
-except NameError:
-    unicode = None # unicode support not available
-
-try:
-    import datetime
-except ImportError:
-    datetime = None
-
-try:
-    _bool_is_builtin = False.__class__.__name__ == "bool"
-except NameError:
-    _bool_is_builtin = 0
-
-def _decode(data, encoding, is8bit=re.compile("[\x80-\xff]").search):
-    # decode non-ascii string (if possible)
-    if unicode and encoding and is8bit(data):
-        data = unicode(data, encoding)
-    return data
-
-def escape(s, replace=string.replace):
-    s = replace(s, "&", "&amp;")
-    s = replace(s, "<", "&lt;")
-    return replace(s, ">", "&gt;",)
-
-if unicode:
-    def _stringify(string):
-        # convert to 7-bit ascii if possible
-        try:
-            return string.encode("ascii")
-        except UnicodeError:
-            return string
-else:
-    def _stringify(string):
-        return string
-
-__version__ = "1.0.1"
-
-# xmlrpc integer limits
-MAXINT =  2L**31-1
-MININT = -2L**31
-
-# --------------------------------------------------------------------
-# Error constants (from Dan Libby's specification at
-# http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php)
-
-# Ranges of errors
-PARSE_ERROR       = -32700
-SERVER_ERROR      = -32600
-APPLICATION_ERROR = -32500
-SYSTEM_ERROR      = -32400
-TRANSPORT_ERROR   = -32300
-
-# Specific errors
-NOT_WELLFORMED_ERROR  = -32700
-UNSUPPORTED_ENCODING  = -32701
-INVALID_ENCODING_CHAR = -32702
-INVALID_XMLRPC        = -32600
-METHOD_NOT_FOUND      = -32601
-INVALID_METHOD_PARAMS = -32602
-INTERNAL_ERROR        = -32603
-
-# --------------------------------------------------------------------
-# Exceptions
-
-##
-# Base class for all kinds of client-side errors.
-
-class Error(Exception):
-    """Base class for client errors."""
-    def __str__(self):
-        return repr(self)
-
-##
-# Indicates an HTTP-level protocol error.  This is raised by the HTTP
-# transport layer, if the server returns an error code other than 200
-# (OK).
-#
-# @param url The target URL.
-# @param errcode The HTTP error code.
-# @param errmsg The HTTP error message.
-# @param headers The HTTP header dictionary.
-
-class ProtocolError(Error):
-    """Indicates an HTTP protocol error."""
-    def __init__(self, url, errcode, errmsg, headers):
-        Error.__init__(self)
-        self.url = url
-        self.errcode = errcode
-        self.errmsg = errmsg
-        self.headers = headers
-    def __repr__(self):
-        return (
-            "<ProtocolError for %s: %s %s>" %
-            (self.url, self.errcode, self.errmsg)
-            )
-
-##
-# Indicates a broken XML-RPC response package.  This exception is
-# raised by the unmarshalling layer, if the XML-RPC response is
-# malformed.
-
-class ResponseError(Error):
-    """Indicates a broken response package."""
-    pass
-
-##
-# Indicates an XML-RPC fault response package.  This exception is
-# raised by the unmarshalling layer, if the XML-RPC response contains
-# a fault string.  This exception can also used as a class, to
-# generate a fault XML-RPC message.
-#
-# @param faultCode The XML-RPC fault code.
-# @param faultString The XML-RPC fault string.
-
-class Fault(Error):
-    """Indicates an XML-RPC fault package."""
-    def __init__(self, faultCode, faultString, **extra):
-        Error.__init__(self)
-        self.faultCode = faultCode
-        self.faultString = faultString
-    def __repr__(self):
-        return (
-            "<Fault %s: %s>" %
-            (self.faultCode, repr(self.faultString))
-            )
-
-# --------------------------------------------------------------------
-# Special values
-
-##
-# Wrapper for XML-RPC boolean values.  Use the xmlrpclib.True and
-# xmlrpclib.False constants, or the xmlrpclib.boolean() function, to
-# generate boolean XML-RPC values.
-#
-# @param value A boolean value.  Any true value is interpreted as True,
-#              all other values are interpreted as False.
-
-from sys import modules
-mod_dict = modules[__name__].__dict__
-if _bool_is_builtin:
-    boolean = Boolean = bool
-    # to avoid breaking code which references xmlrpclib.{True,False}
-    mod_dict['True'] = True
-    mod_dict['False'] = False
-else:
-    class Boolean:
-        """Boolean-value wrapper.
-
-        Use True or False to generate a "boolean" XML-RPC value.
-        """
-
-        def __init__(self, value = 0):
-            self.value = operator.truth(value)
-
-        def encode(self, out):
-            out.write("<value><boolean>%d</boolean></value>\n" % self.value)
-
-        def __cmp__(self, other):
-            if isinstance(other, Boolean):
-                other = other.value
-            return cmp(self.value, other)
-
-        def __repr__(self):
-            if self.value:
-                return "<Boolean True at %x>" % id(self)
-            else:
-                return "<Boolean False at %x>" % id(self)
-
-        def __int__(self):
-            return self.value
-
-        def __nonzero__(self):
-            return self.value
-
-    mod_dict['True'] = Boolean(1)
-    mod_dict['False'] = Boolean(0)
-
-    ##
-    # Map true or false value to XML-RPC boolean values.
-    #
-    # @def boolean(value)
-    # @param value A boolean value.  Any true value is mapped to True,
-    #              all other values are mapped to False.
-    # @return xmlrpclib.True or xmlrpclib.False.
-    # @see Boolean
-    # @see True
-    # @see False
-
-    def boolean(value, _truefalse=(False, True)):
-        """Convert any Python value to XML-RPC 'boolean'."""
-        return _truefalse[operator.truth(value)]
-
-del modules, mod_dict
-
-##
-# Wrapper for XML-RPC DateTime values.  This converts a time value to
-# the format used by XML-RPC.
-# <p>
-# The value can be given as a string in the format
-# "yyyymmddThh:mm:ss", as a 9-item time tuple (as returned by
-# time.localtime()), or an integer value (as returned by time.time()).
-# The wrapper uses time.localtime() to convert an integer to a time
-# tuple.
-#
-# @param value The time, given as an ISO 8601 string, a time
-#              tuple, or a integer time value.
-
-def _strftime(value):
-    if datetime:
-        if isinstance(value, datetime.datetime):
-            return "%04d%02d%02dT%02d:%02d:%02d" % (
-                value.year, value.month, value.day,
-                value.hour, value.minute, value.second)
-
-    if not isinstance(value, (TupleType, time.struct_time)):
-        if value == 0:
-            value = time.time()
-        value = time.localtime(value)
-
-    return "%04d%02d%02dT%02d:%02d:%02d" % value[:6]
-
-class DateTime:
-    """DateTime wrapper for an ISO 8601 string or time tuple or
-    localtime integer value to generate 'dateTime.iso8601' XML-RPC
-    value.
-    """
-
-    def __init__(self, value=0):
-        if isinstance(value, StringType):
-            self.value = value
-        else:
-            self.value = _strftime(value)
-
-    def make_comparable(self, other):
-        if isinstance(other, DateTime):
-            s = self.value
-            o = other.value
-        elif datetime and isinstance(other, datetime.datetime):
-            s = self.value
-            o = other.strftime("%Y%m%dT%H:%M:%S")
-        elif isinstance(other, (str, unicode)):
-            s = self.value
-            o = other
-        elif hasattr(other, "timetuple"):
-            s = self.timetuple()
-            o = other.timetuple()
-        else:
-            otype = (hasattr(other, "__class__")
-                     and other.__class__.__name__
-                     or type(other))
-            raise TypeError("Can't compare %s and %s" %
-                            (self.__class__.__name__, otype))
-        return s, o
-
-    def __lt__(self, other):
-        s, o = self.make_comparable(other)
-        return s < o
-
-    def __le__(self, other):
-        s, o = self.make_comparable(other)
-        return s <= o
-
-    def __gt__(self, other):
-        s, o = self.make_comparable(other)
-        return s > o
-
-    def __ge__(self, other):
-        s, o = self.make_comparable(other)
-        return s >= o
-
-    def __eq__(self, other):
-        s, o = self.make_comparable(other)
-        return s == o
-
-    def __ne__(self, other):
-        s, o = self.make_comparable(other)
-        return s != o
-
-    def timetuple(self):
-        return time.strptime(self.value, "%Y%m%dT%H:%M:%S")
-
-    def __cmp__(self, other):
-        s, o = self.make_comparable(other)
-        return cmp(s, o)
-
-    ##
-    # Get date/time value.
-    #
-    # @return Date/time value, as an ISO 8601 string.
-
-    def __str__(self):
-        return self.value
-
-    def __repr__(self):
-        return "<DateTime %s at %x>" % (repr(self.value), id(self))
-
-    def decode(self, data):
-        data = str(data)
-        self.value = string.strip(data)
-
-    def encode(self, out):
-        out.write("<value><dateTime.iso8601>")
-        out.write(self.value)
-        out.write("</dateTime.iso8601></value>\n")
-
-def _datetime(data):
-    # decode xml element contents into a DateTime structure.
-    value = DateTime()
-    value.decode(data)
-    return value
-
-def _datetime_type(data):
-    t = time.strptime(data, "%Y%m%dT%H:%M:%S")
-    return datetime.datetime(*tuple(t)[:6])
-
-##
-# Wrapper for binary data.  This can be used to transport any kind
-# of binary data over XML-RPC, using BASE64 encoding.
-#
-# @param data An 8-bit string containing arbitrary data.
-
-import base64
-try:
-    import cStringIO as StringIO
-except ImportError:
-    import StringIO
-
-class Binary:
-    """Wrapper for binary data."""
-
-    def __init__(self, data=None):
-        self.data = data
-
-    ##
-    # Get buffer contents.
-    #
-    # @return Buffer contents, as an 8-bit string.
-
-    def __str__(self):
-        return self.data or ""
-
-    def __cmp__(self, other):
-        if isinstance(other, Binary):
-            other = other.data
-        return cmp(self.data, other)
-
-    def decode(self, data):
-        self.data = base64.decodestring(data)
-
-    def encode(self, out):
-        out.write("<value><base64>\n")
-        base64.encode(StringIO.StringIO(self.data), out)
-        out.write("</base64></value>\n")
-
-def _binary(data):
-    # decode xml element contents into a Binary structure
-    value = Binary()
-    value.decode(data)
-    return value
-
-WRAPPERS = (DateTime, Binary)
-if not _bool_is_builtin:
-    WRAPPERS = WRAPPERS + (Boolean,)
-
-# --------------------------------------------------------------------
-# XML parsers
-
-try:
-    # optional xmlrpclib accelerator
-    import _xmlrpclib
-    FastParser = _xmlrpclib.Parser
-    FastUnmarshaller = _xmlrpclib.Unmarshaller
-except (AttributeError, ImportError):
-    FastParser = FastUnmarshaller = None
-
-try:
-    import _xmlrpclib
-    FastMarshaller = _xmlrpclib.Marshaller
-except (AttributeError, ImportError):
-    FastMarshaller = None
-
-try:
-    from xml.parsers import expat
-    if not hasattr(expat, "ParserCreate"):
-        raise ImportError
-except ImportError:
-    ExpatParser = None # expat not available
-else:
-    class ExpatParser:
-        # fast expat parser for Python 2.0 and later.
-        def __init__(self, target):
-            self._parser = parser = expat.ParserCreate(None, None)
-            self._target = target
-            parser.StartElementHandler = target.start
-            parser.EndElementHandler = target.end
-            parser.CharacterDataHandler = target.data
-            encoding = None
-            if not parser.returns_unicode:
-                encoding = "utf-8"
-            target.xml(encoding, None)
-
-        def feed(self, data):
-            self._parser.Parse(data, 0)
-
-        def close(self):
-            self._parser.Parse("", 1) # end of data
-            del self._target, self._parser # get rid of circular references
-
-class SlowParser:
-    """Default XML parser (based on xmllib.XMLParser)."""
-    # this is the slowest parser.
-    def __init__(self, target):
-        import xmllib # lazy subclassing (!)
-        if xmllib.XMLParser not in SlowParser.__bases__:
-            SlowParser.__bases__ = (xmllib.XMLParser,)
-        self.handle_xml = target.xml
-        self.unknown_starttag = target.start
-        self.handle_data = target.data
-        self.handle_cdata = target.data
-        self.unknown_endtag = target.end
-        try:
-            xmllib.XMLParser.__init__(self, accept_utf8=1)
-        except TypeError:
-            xmllib.XMLParser.__init__(self) # pre-2.0
-
-# --------------------------------------------------------------------
-# XML-RPC marshalling and unmarshalling code
-
-##
-# XML-RPC marshaller.
-#
-# @param encoding Default encoding for 8-bit strings.  The default
-#     value is None (interpreted as UTF-8).
-# @see dumps
-
-class Marshaller:
-    """Generate an XML-RPC params chunk from a Python data structure.
-
-    Create a Marshaller instance for each set of parameters, and use
-    the "dumps" method to convert your data (represented as a tuple)
-    to an XML-RPC params chunk.  To write a fault response, pass a
-    Fault instance instead.  You may prefer to use the "dumps" module
-    function for this purpose.
-    """
-
-    # by the way, if you don't understand what's going on in here,
-    # that's perfectly ok.
-
-    def __init__(self, encoding=None, allow_none=0):
-        self.memo = {}
-        self.data = None
-        self.encoding = encoding
-        self.allow_none = allow_none
-
-    dispatch = {}
-
-    def dumps(self, values):
-        out = []
-        write = out.append
-        dump = self.__dump
-        if isinstance(values, Fault):
-            # fault instance
-            write("<fault>\n")
-            dump({'faultCode': values.faultCode,
-                  'faultString': values.faultString},
-                 write)
-            write("</fault>\n")
-        else:
-            # parameter block
-            # FIXME: the xml-rpc specification allows us to leave out
-            # the entire <params> block if there are no parameters.
-            # however, changing this may break older code (including
-            # old versions of xmlrpclib.py), so this is better left as
-            # is for now.  See @XMLRPC3 for more information. /F
-            write("<params>\n")
-            for v in values:
-                write("<param>\n")
-                dump(v, write)
-                write("</param>\n")
-            write("</params>\n")
-        result = string.join(out, "")
-        return result
-
-    def __dump(self, value, write):
-        try:
-            f = self.dispatch[type(value)]
-        except KeyError:
-            # check if this object can be marshalled as a structure
-            try:
-                value.__dict__
-            except:
-                raise TypeError, "cannot marshal %s objects" % type(value)
-            # check if this class is a sub-class of a basic type,
-            # because we don't know how to marshal these types
-            # (e.g. a string sub-class)
-            for type_ in type(value).__mro__:
-                if type_ in self.dispatch.keys():
-                    raise TypeError, "cannot marshal %s objects" % type(value)
-            f = self.dispatch[InstanceType]
-        f(self, value, write)
-
-    def dump_nil (self, value, write):
-        if not self.allow_none:
-            raise TypeError, "cannot marshal None unless allow_none is enabled"
-        write("<value><nil/></value>")
-    dispatch[NoneType] = dump_nil
-
-    def dump_int(self, value, write):
-        # in case ints are > 32 bits
-        if value > MAXINT or value < MININT:
-            raise OverflowError, "int exceeds XML-RPC limits"
-        write("<value><int>")
-        write(str(value))
-        write("</int></value>\n")
-    dispatch[IntType] = dump_int
-
-    if _bool_is_builtin:
-        def dump_bool(self, value, write):
-            write("<value><boolean>")
-            write(value and "1" or "0")
-            write("</boolean></value>\n")
-        dispatch[bool] = dump_bool
-
-    def dump_long(self, value, write):
-        if value > MAXINT or value < MININT:
-            raise OverflowError, "long int exceeds XML-RPC limits"
-        write("<value><int>")
-        write(str(int(value)))
-        write("</int></value>\n")
-    dispatch[LongType] = dump_long
-
-    def dump_double(self, value, write):
-        write("<value><double>")
-        write(repr(value))
-        write("</double></value>\n")
-    dispatch[FloatType] = dump_double
-
-    def dump_string(self, value, write, escape=escape):
-        write("<value><string>")
-        write(escape(value))
-        write("</string></value>\n")
-    dispatch[StringType] = dump_string
-
-    if unicode:
-        def dump_unicode(self, value, write, escape=escape):
-            value = value.encode(self.encoding)
-            write("<value><string>")
-            write(escape(value))
-            write("</string></value>\n")
-        dispatch[UnicodeType] = dump_unicode
-
-    def dump_array(self, value, write):
-        i = id(value)
-        if i in self.memo:
-            raise TypeError, "cannot marshal recursive sequences"
-        self.memo[i] = None
-        dump = self.__dump
-        write("<value><array><data>\n")
-        for v in value:
-            dump(v, write)
-        write("</data></array></value>\n")
-        del self.memo[i]
-    dispatch[TupleType] = dump_array
-    dispatch[ListType] = dump_array
-
-    def dump_struct(self, value, write, escape=escape):
-        i = id(value)
-        if i in self.memo:
-            raise TypeError, "cannot marshal recursive dictionaries"
-        self.memo[i] = None
-        dump = self.__dump
-        write("<value><struct>\n")
-        for k, v in value.items():
-            write("<member>\n")
-            if type(k) is not StringType:
-                if unicode and type(k) is UnicodeType:
-                    k = k.encode(self.encoding)
-                else:
-                    raise TypeError, "dictionary key must be string"
-            write("<name>%s</name>\n" % escape(k))
-            dump(v, write)
-            write("</member>\n")
-        write("</struct></value>\n")
-        del self.memo[i]
-    dispatch[DictType] = dump_struct
-
-    if datetime:
-        def dump_datetime(self, value, write):
-            write("<value><dateTime.iso8601>")
-            write(_strftime(value))
-            write("</dateTime.iso8601></value>\n")
-        dispatch[datetime.datetime] = dump_datetime
-
-    def dump_instance(self, value, write):
-        # check for special wrappers
-        if value.__class__ in WRAPPERS:
-            self.write = write
-            value.encode(self)
-            del self.write
-        else:
-            # store instance attributes as a struct (really?)
-            self.dump_struct(value.__dict__, write)
-    dispatch[InstanceType] = dump_instance
-
-##
-# XML-RPC unmarshaller.
-#
-# @see loads
-
-class Unmarshaller:
-    """Unmarshal an XML-RPC response, based on incoming XML event
-    messages (start, data, end).  Call close() to get the resulting
-    data structure.
-
-    Note that this reader is fairly tolerant, and gladly accepts bogus
-    XML-RPC data without complaining (but not bogus XML).
-    """
-
-    # and again, if you don't understand what's going on in here,
-    # that's perfectly ok.
-
-    def __init__(self, use_datetime=0):
-        self._type = None
-        self._stack = []
-        self._marks = []
-        self._data = []
-        self._methodname = None
-        self._encoding = "utf-8"
-        self.append = self._stack.append
-        self._use_datetime = use_datetime
-        if use_datetime and not datetime:
-            raise ValueError, "the datetime module is not available"
-
-    def close(self):
-        # return response tuple and target method
-        if self._type is None or self._marks:
-            raise ResponseError()
-        if self._type == "fault":
-            raise Fault(**self._stack[0])
-        return tuple(self._stack)
-
-    def getmethodname(self):
-        return self._methodname
-
-    #
-    # event handlers
-
-    def xml(self, encoding, standalone):
-        self._encoding = encoding
-        # FIXME: assert standalone == 1 ???
-
-    def start(self, tag, attrs):
-        # prepare to handle this element
-        if tag == "array" or tag == "struct":
-            self._marks.append(len(self._stack))
-        self._data = []
-        self._value = (tag == "value")
-
-    def data(self, text):
-        self._data.append(text)
-
-    def end(self, tag, join=string.join):
-        # call the appropriate end tag handler
-        try:
-            f = self.dispatch[tag]
-        except KeyError:
-            pass # unknown tag ?
-        else:
-            return f(self, join(self._data, ""))
-
-    #
-    # accelerator support
-
-    def end_dispatch(self, tag, data):
-        # dispatch data
-        try:
-            f = self.dispatch[tag]
-        except KeyError:
-            pass # unknown tag ?
-        else:
-            return f(self, data)
-
-    #
-    # element decoders
-
-    dispatch = {}
-
-    def end_nil (self, data):
-        self.append(None)
-        self._value = 0
-    dispatch["nil"] = end_nil
-
-    def end_boolean(self, data):
-        if data == "0":
-            self.append(False)
-        elif data == "1":
-            self.append(True)
-        else:
-            raise TypeError, "bad boolean value"
-        self._value = 0
-    dispatch["boolean"] = end_boolean
-
-    def end_int(self, data):
-        self.append(int(data))
-        self._value = 0
-    dispatch["i4"] = end_int
-    dispatch["i8"] = end_int
-    dispatch["int"] = end_int
-
-    def end_double(self, data):
-        self.append(float(data))
-        self._value = 0
-    dispatch["double"] = end_double
-
-    def end_string(self, data):
-        if self._encoding:
-            data = _decode(data, self._encoding)
-        self.append(_stringify(data))
-        self._value = 0
-    dispatch["string"] = end_string
-    dispatch["name"] = end_string # struct keys are always strings
-
-    def end_array(self, data):
-        mark = self._marks.pop()
-        # map arrays to Python lists
-        self._stack[mark:] = [self._stack[mark:]]
-        self._value = 0
-    dispatch["array"] = end_array
-
-    def end_struct(self, data):
-        mark = self._marks.pop()
-        # map structs to Python dictionaries
-        dict = {}
-        items = self._stack[mark:]
-        for i in range(0, len(items), 2):
-            dict[_stringify(items[i])] = items[i+1]
-        self._stack[mark:] = [dict]
-        self._value = 0
-    dispatch["struct"] = end_struct
-
-    def end_base64(self, data):
-        value = Binary()
-        value.decode(data)
-        self.append(value)
-        self._value = 0
-    dispatch["base64"] = end_base64
-
-    def end_dateTime(self, data):
-        value = DateTime()
-        value.decode(data)
-        if self._use_datetime:
-            value = _datetime_type(data)
-        self.append(value)
-    dispatch["dateTime.iso8601"] = end_dateTime
-
-    def end_value(self, data):
-        # if we stumble upon a value element with no internal
-        # elements, treat it as a string element
-        if self._value:
-            self.end_string(data)
-    dispatch["value"] = end_value
-
-    def end_params(self, data):
-        self._type = "params"
-    dispatch["params"] = end_params
-
-    def end_fault(self, data):
-        self._type = "fault"
-    dispatch["fault"] = end_fault
-
-    def end_methodName(self, data):
-        if self._encoding:
-            data = _decode(data, self._encoding)
-        self._methodname = data
-        self._type = "methodName" # no params
-    dispatch["methodName"] = end_methodName
-
-## Multicall support
-#
-
-class _MultiCallMethod:
-    # some lesser magic to store calls made to a MultiCall object
-    # for batch execution
-    def __init__(self, call_list, name):
-        self.__call_list = call_list
-        self.__name = name
-    def __getattr__(self, name):
-        return _MultiCallMethod(self.__call_list, "%s.%s" % (self.__name, name))
-    def __call__(self, *args):
-        self.__call_list.append((self.__name, args))
-
-class MultiCallIterator:
-    """Iterates over the results of a multicall. Exceptions are
-    thrown in response to xmlrpc faults."""
-
-    def __init__(self, results):
-        self.results = results
-
-    def __getitem__(self, i):
-        item = self.results[i]
-        if type(item) == type({}):
-            raise Fault(item['faultCode'], item['faultString'])
-        elif type(item) == type([]):
-            return item[0]
-        else:
-            raise ValueError,\
-                  "unexpected type in multicall result"
-
-class MultiCall:
-    """server -> a object used to boxcar method calls
-
-    server should be a ServerProxy object.
-
-    Methods can be added to the MultiCall using normal
-    method call syntax e.g.:
-
-    multicall = MultiCall(server_proxy)
-    multicall.add(2,3)
-    multicall.get_address("Guido")
-
-    To execute the multicall, call the MultiCall object e.g.:
-
-    add_result, address = multicall()
-    """
-
-    def __init__(self, server):
-        self.__server = server
-        self.__call_list = []
-
-    def __repr__(self):
-        return "<MultiCall at %x>" % id(self)
-
-    __str__ = __repr__
-
-    def __getattr__(self, name):
-        return _MultiCallMethod(self.__call_list, name)
-
-    def __call__(self):
-        marshalled_list = []
-        for name, args in self.__call_list:
-            marshalled_list.append({'methodName' : name, 'params' : args})
-
-        return MultiCallIterator(self.__server.system.multicall(marshalled_list))
-
-# --------------------------------------------------------------------
-# convenience functions
-
-##
-# Create a parser object, and connect it to an unmarshalling instance.
-# This function picks the fastest available XML parser.
-#
-# return A (parser, unmarshaller) tuple.
-
-def getparser(use_datetime=0):
-    """getparser() -> parser, unmarshaller
-
-    Create an instance of the fastest available parser, and attach it
-    to an unmarshalling object.  Return both objects.
-    """
-    if use_datetime and not datetime:
-        raise ValueError, "the datetime module is not available"
-    if FastParser and FastUnmarshaller:
-        if use_datetime:
-            mkdatetime = _datetime_type
-        else:
-            mkdatetime = _datetime
-        target = FastUnmarshaller(True, False, _binary, mkdatetime, Fault)
-        parser = FastParser(target)
-    else:
-        target = Unmarshaller(use_datetime=use_datetime)
-        if FastParser:
-            parser = FastParser(target)
-        elif ExpatParser:
-            parser = ExpatParser(target)
-        else:
-            parser = SlowParser(target)
-    return parser, target
-
-##
-# Convert a Python tuple or a Fault instance to an XML-RPC packet.
-#
-# @def dumps(params, **options)
-# @param params A tuple or Fault instance.
-# @keyparam methodname If given, create a methodCall request for
-#     this method name.
-# @keyparam methodresponse If given, create a methodResponse packet.
-#     If used with a tuple, the tuple must be a singleton (that is,
-#     it must contain exactly one element).
-# @keyparam encoding The packet encoding.
-# @return A string containing marshalled data.
-
-def dumps(params, methodname=None, methodresponse=None, encoding=None,
-          allow_none=0):
-    """data [,options] -> marshalled data
-
-    Convert an argument tuple or a Fault instance to an XML-RPC
-    request (or response, if the methodresponse option is used).
-
-    In addition to the data object, the following options can be given
-    as keyword arguments:
-
-        methodname: the method name for a methodCall packet
-
-        methodresponse: true to create a methodResponse packet.
-        If this option is used with a tuple, the tuple must be
-        a singleton (i.e. it can contain only one element).
-
-        encoding: the packet encoding (default is UTF-8)
-
-    All 8-bit strings in the data structure are assumed to use the
-    packet encoding.  Unicode strings are automatically converted,
-    where necessary.
-    """
-
-    assert isinstance(params, TupleType) or isinstance(params, Fault),\
-           "argument must be tuple or Fault instance"
-
-    if isinstance(params, Fault):
-        methodresponse = 1
-    elif methodresponse and isinstance(params, TupleType):
-        assert len(params) == 1, "response tuple must be a singleton"
-
-    if not encoding:
-        encoding = "utf-8"
-
-    if FastMarshaller:
-        m = FastMarshaller(encoding)
-    else:
-        m = Marshaller(encoding, allow_none)
-
-    data = m.dumps(params)
-
-    if encoding != "utf-8":
-        xmlheader = "<?xml version='1.0' encoding='%s'?>\n" % str(encoding)
-    else:
-        xmlheader = "<?xml version='1.0'?>\n" # utf-8 is default
-
-    # standard XML-RPC wrappings
-    if methodname:
-        # a method call
-        if not isinstance(methodname, StringType):
-            methodname = methodname.encode(encoding)
-        data = (
-            xmlheader,
-            "<methodCall>\n"
-            "<methodName>", methodname, "</methodName>\n",
-            data,
-            "</methodCall>\n"
-            )
-    elif methodresponse:
-        # a method response, or a fault structure
-        data = (
-            xmlheader,
-            "<methodResponse>\n",
-            data,
-            "</methodResponse>\n"
-            )
-    else:
-        return data # return as is
-    return string.join(data, "")
-
-##
-# Convert an XML-RPC packet to a Python object.  If the XML-RPC packet
-# represents a fault condition, this function raises a Fault exception.
-#
-# @param data An XML-RPC packet, given as an 8-bit string.
-# @return A tuple containing the unpacked data, and the method name
-#     (None if not present).
-# @see Fault
-
-def loads(data, use_datetime=0):
-    """data -> unmarshalled data, method name
-
-    Convert an XML-RPC packet to unmarshalled data plus a method
-    name (None if not present).
-
-    If the XML-RPC packet represents a fault condition, this function
-    raises a Fault exception.
-    """
-    p, u = getparser(use_datetime=use_datetime)
-    p.feed(data)
-    p.close()
-    return u.close(), u.getmethodname()
-
-##
-# Encode a string using the gzip content encoding such as specified by the
-# Content-Encoding: gzip
-# in the HTTP header, as described in RFC 1952
-#
-# @param data the unencoded data
-# @return the encoded data
-
-def gzip_encode(data):
-    """data -> gzip encoded data
-
-    Encode data using the gzip content encoding as described in RFC 1952
-    """
-    if not gzip:
-        raise NotImplementedError
-    f = StringIO.StringIO()
-    gzf = gzip.GzipFile(mode="wb", fileobj=f, compresslevel=1)
-    gzf.write(data)
-    gzf.close()
-    encoded = f.getvalue()
-    f.close()
-    return encoded
-
-##
-# Decode a string using the gzip content encoding such as specified by the
-# Content-Encoding: gzip
-# in the HTTP header, as described in RFC 1952
-#
-# @param data The encoded data
-# @return the unencoded data
-# @raises ValueError if data is not correctly coded.
-
-def gzip_decode(data):
-    """gzip encoded data -> unencoded data
-
-    Decode data using the gzip content encoding as described in RFC 1952
-    """
-    if not gzip:
-        raise NotImplementedError
-    f = StringIO.StringIO(data)
-    gzf = gzip.GzipFile(mode="rb", fileobj=f)
-    try:
-        decoded = gzf.read()
-    except IOError:
-        raise ValueError("invalid data")
-    f.close()
-    gzf.close()
-    return decoded
-
-##
-# Return a decoded file-like object for the gzip encoding
-# as described in RFC 1952.
-#
-# @param response A stream supporting a read() method
-# @return a file-like object that the decoded data can be read() from
-
-class GzipDecodedResponse(gzip.GzipFile if gzip else object):
-    """a file-like object to decode a response encoded with the gzip
-    method, as described in RFC 1952.
-    """
-    def __init__(self, response):
-        #response doesn't support tell() and read(), required by
-        #GzipFile
-        if not gzip:
-            raise NotImplementedError
-        self.stringio = StringIO.StringIO(response.read())
-        gzip.GzipFile.__init__(self, mode="rb", fileobj=self.stringio)
-
-    def close(self):
-        gzip.GzipFile.close(self)
-        self.stringio.close()
-
-
-# --------------------------------------------------------------------
-# request dispatcher
-
-class _Method:
-    # some magic to bind an XML-RPC method to an RPC server.
-    # supports "nested" methods (e.g. examples.getStateName)
-    def __init__(self, send, name):
-        self.__send = send
-        self.__name = name
-    def __getattr__(self, name):
-        return _Method(self.__send, "%s.%s" % (self.__name, name))
-    def __call__(self, *args):
-        return self.__send(self.__name, args)
-
-##
-# Standard transport class for XML-RPC over HTTP.
-# <p>
-# You can create custom transports by subclassing this method, and
-# overriding selected methods.
-
-class Transport:
-    """Handles an HTTP transaction to an XML-RPC server."""
-
-    # client identifier (may be overridden)
-    user_agent = "xmlrpclib.py/%s (by www.pythonware.com)" % __version__
-
-    #if true, we'll request gzip encoding
-    accept_gzip_encoding = True
-
-    # if positive, encode request using gzip if it exceeds this threshold
-    # note that many server will get confused, so only use it if you know
-    # that they can decode such a request
-    encode_threshold = None #None = don't encode
-
-    def __init__(self, use_datetime=0):
-        self._use_datetime = use_datetime
-        self._connection = (None, None)
-        self._extra_headers = []
-    ##
-    # Send a complete request, and parse the response.
-    # Retry request if a cached connection has disconnected.
-    #
-    # @param host Target host.
-    # @param handler Target PRC handler.
-    # @param request_body XML-RPC request body.
-    # @param verbose Debugging flag.
-    # @return Parsed response.
-
-    def request(self, host, handler, request_body, verbose=0):
-        #retry request once if cached connection has gone cold
-        for i in (0, 1):
-            try:
-                return self.single_request(host, handler, request_body, verbose)
-            except socket.error, e:
-                if i or e.errno not in (errno.ECONNRESET, errno.ECONNABORTED, errno.EPIPE):
-                    raise
-            except httplib.BadStatusLine: #close after we sent request
-                if i:
-                    raise
-
-    ##
-    # Send a complete request, and parse the response.
-    #
-    # @param host Target host.
-    # @param handler Target PRC handler.
-    # @param request_body XML-RPC request body.
-    # @param verbose Debugging flag.
-    # @return Parsed response.
-
-    def single_request(self, host, handler, request_body, verbose=0):
-        # issue XML-RPC request
-
-        h = self.make_connection(host)
-        if verbose:
-            h.set_debuglevel(1)
-
-        try:
-            self.send_request(h, handler, request_body)
-            self.send_host(h, host)
-            self.send_user_agent(h)
-            self.send_content(h, request_body)
-
-            response = h.getresponse(buffering=True)
-            if response.status == 200:
-                self.verbose = verbose
-                return self.parse_response(response)
-        except Fault:
-            raise
-        except Exception:
-            # All unexpected errors leave connection in
-            # a strange state, so we clear it.
-            self.close()
-            raise
-
-        #discard any response data and raise exception
-        if (response.getheader("content-length", 0)):
-            response.read()
-        raise ProtocolError(
-            host + handler,
-            response.status, response.reason,
-            response.msg,
-            )
-
-    ##
-    # Create parser.
-    #
-    # @return A 2-tuple containing a parser and a unmarshaller.
-
-    def getparser(self):
-        # get parser and unmarshaller
-        return getparser(use_datetime=self._use_datetime)
-
-    ##
-    # Get authorization info from host parameter
-    # Host may be a string, or a (host, x509-dict) tuple; if a string,
-    # it is checked for a "user:pw@host" format, and a "Basic
-    # Authentication" header is added if appropriate.
-    #
-    # @param host Host descriptor (URL or (URL, x509 info) tuple).
-    # @return A 3-tuple containing (actual host, extra headers,
-    #     x509 info).  The header and x509 fields may be None.
-
-    def get_host_info(self, host):
-
-        x509 = {}
-        if isinstance(host, TupleType):
-            host, x509 = host
-
-        import urllib
-        auth, host = urllib.splituser(host)
-
-        if auth:
-            import base64
-            auth = base64.encodestring(urllib.unquote(auth))
-            auth = string.join(string.split(auth), "") # get rid of whitespace
-            extra_headers = [
-                ("Authorization", "Basic " + auth)
-                ]
-        else:
-            extra_headers = None
-
-        return host, extra_headers, x509
-
-    ##
-    # Connect to server.
-    #
-    # @param host Target host.
-    # @return A connection handle.
-
-    def make_connection(self, host):
-        #return an existing connection if possible.  This allows
-        #HTTP/1.1 keep-alive.
-        if self._connection and host == self._connection[0]:
-            return self._connection[1]
-
-        # create a HTTP connection object from a host descriptor
-        chost, self._extra_headers, x509 = self.get_host_info(host)
-        #store the host argument along with the connection object
-        self._connection = host, httplib.HTTPConnection(chost)
-        return self._connection[1]
-
-    ##
-    # Clear any cached connection object.
-    # Used in the event of socket errors.
-    #
-    def close(self):
-        if self._connection[1]:
-            self._connection[1].close()
-            self._connection = (None, None)
-
-    ##
-    # Send request header.
-    #
-    # @param connection Connection handle.
-    # @param handler Target RPC handler.
-    # @param request_body XML-RPC body.
-
-    def send_request(self, connection, handler, request_body):
-        if (self.accept_gzip_encoding and gzip):
-            connection.putrequest("POST", handler, skip_accept_encoding=True)
-            connection.putheader("Accept-Encoding", "gzip")
-        else:
-            connection.putrequest("POST", handler)
-
-    ##
-    # Send host name.
-    #
-    # @param connection Connection handle.
-    # @param host Host name.
-    #
-    # Note: This function doesn't actually add the "Host"
-    # header anymore, it is done as part of the connection.putrequest() in
-    # send_request() above.
-
-    def send_host(self, connection, host):
-        extra_headers = self._extra_headers
-        if extra_headers:
-            if isinstance(extra_headers, DictType):
-                extra_headers = extra_headers.items()
-            for key, value in extra_headers:
-                connection.putheader(key, value)
-
-    ##
-    # Send user-agent identifier.
-    #
-    # @param connection Connection handle.
-
-    def send_user_agent(self, connection):
-        connection.putheader("User-Agent", self.user_agent)
-
-    ##
-    # Send request body.
-    #
-    # @param connection Connection handle.
-    # @param request_body XML-RPC request body.
-
-    def send_content(self, connection, request_body):
-        connection.putheader("Content-Type", "text/xml")
-
-        #optionally encode the request
-        if (self.encode_threshold is not None and
-            self.encode_threshold < len(request_body) and
-            gzip):
-            connection.putheader("Content-Encoding", "gzip")
-            request_body = gzip_encode(request_body)
-
-        connection.putheader("Content-Length", str(len(request_body)))
-        connection.endheaders(request_body)
-
-    ##
-    # Parse response.
-    #
-    # @param file Stream.
-    # @return Response tuple and target method.
-
-    def parse_response(self, response):
-        # read response data from httpresponse, and parse it
-
-        # Check for new http response object, else it is a file object
-        if hasattr(response,'getheader'):
-            if response.getheader("Content-Encoding", "") == "gzip":
-                stream = GzipDecodedResponse(response)
-            else:
-                stream = response
-        else:
-            stream = response
-
-        p, u = self.getparser()
-
-        while 1:
-            data = stream.read(1024)
-            if not data:
-                break
-            if self.verbose:
-                print "body:", repr(data)
-            p.feed(data)
-
-        if stream is not response:
-            stream.close()
-        p.close()
-
-        return u.close()
-
-##
-# Standard transport class for XML-RPC over HTTPS.
-
-class SafeTransport(Transport):
-    """Handles an HTTPS transaction to an XML-RPC server."""
-
-    # FIXME: mostly untested
-
-    def make_connection(self, host):
-        if self._connection and host == self._connection[0]:
-            return self._connection[1]
-        # create a HTTPS connection object from a host descriptor
-        # host may be a string, or a (host, x509-dict) tuple
-        try:
-            HTTPS = httplib.HTTPSConnection
-        except AttributeError:
-            raise NotImplementedError(
-                "your version of httplib doesn't support HTTPS"
-                )
-        else:
-            chost, self._extra_headers, x509 = self.get_host_info(host)
-            self._connection = host, HTTPS(chost, None, **(x509 or {}))
-            return self._connection[1]
-
-##
-# Standard server proxy.  This class establishes a virtual connection
-# to an XML-RPC server.
-# <p>
-# This class is available as ServerProxy and Server.  New code should
-# use ServerProxy, to avoid confusion.
-#
-# @def ServerProxy(uri, **options)
-# @param uri The connection point on the server.
-# @keyparam transport A transport factory, compatible with the
-#    standard transport class.
-# @keyparam encoding The default encoding used for 8-bit strings
-#    (default is UTF-8).
-# @keyparam verbose Use a true value to enable debugging output.
-#    (printed to standard output).
-# @see Transport
-
-class ServerProxy:
-    """uri [,options] -> a logical connection to an XML-RPC server
-
-    uri is the connection point on the server, given as
-    scheme://host/target.
-
-    The standard implementation always supports the "http" scheme.  If
-    SSL socket support is available (Python 2.0), it also supports
-    "https".
-
-    If the target part and the slash preceding it are both omitted,
-    "/RPC2" is assumed.
-
-    The following options can be given as keyword arguments:
-
-        transport: a transport factory
-        encoding: the request encoding (default is UTF-8)
-
-    All 8-bit strings passed to the server proxy are assumed to use
-    the given encoding.
-    """
-
-    def __init__(self, uri, transport=None, encoding=None, verbose=0,
-                 allow_none=0, use_datetime=0):
-        # establish a "logical" server connection
-
-        # get the url
-        import urllib
-        type, uri = urllib.splittype(uri)
-        if type not in ("http", "https"):
-            raise IOError, "unsupported XML-RPC protocol"
-        self.__host, self.__handler = urllib.splithost(uri)
-        if not self.__handler:
-            self.__handler = "/RPC2"
-
-        if transport is None:
-            if type == "https":
-                transport = SafeTransport(use_datetime=use_datetime)
-            else:
-                transport = Transport(use_datetime=use_datetime)
-        self.__transport = transport
-
-        self.__encoding = encoding
-        self.__verbose = verbose
-        self.__allow_none = allow_none
-
-    def __close(self):
-        self.__transport.close()
-
-    def __request(self, methodname, params):
-        # call a method on the remote server
-
-        request = dumps(params, methodname, encoding=self.__encoding,
-                        allow_none=self.__allow_none)
-
-        response = self.__transport.request(
-            self.__host,
-            self.__handler,
-            request,
-            verbose=self.__verbose
-            )
-
-        if len(response) == 1:
-            response = response[0]
-
-        return response
-
-    def __repr__(self):
-        return (
-            "<ServerProxy for %s%s>" %
-            (self.__host, self.__handler)
-            )
-
-    __str__ = __repr__
-
-    def __getattr__(self, name):
-        # magic method dispatcher
-        return _Method(self.__request, name)
-
-    # note: to call a remote object with an non-standard name, use
-    # result getattr(server, "strange-python-name")(args)
-
-    def __call__(self, attr):
-        """A workaround to get special attributes on the ServerProxy
-           without interfering with the magic __getattr__
-        """
-        if attr == "close":
-            return self.__close
-        elif attr == "transport":
-            return self.__transport
-        raise AttributeError("Attribute %r not found" % (attr,))
-
-# compatibility
-
-Server = ServerProxy
-
-# --------------------------------------------------------------------
-# test code
-
-if __name__ == "__main__":
-
-    # simple test program (from the XML-RPC specification)
-
-    # server = ServerProxy("http://localhost:8000") # local server
-    server = ServerProxy("http://time.xmlrpc.com/RPC2")
-
-    print server
-
-    try:
-        print server.currentTime.getCurrentTime()
-    except Error, v:
-        print "ERROR", v
-
-    multi = MultiCall(server)
-    multi.currentTime.getCurrentTime()
-    multi.currentTime.getCurrentTime()
-    try:
-        for response in multi():
-            print response
-    except Error, v:
-        print "ERROR", v
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/zipfile.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/zipfile.py
deleted file mode 100644
index 1f39937..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Lib/zipfile.py
+++ /dev/null
@@ -1,1437 +0,0 @@
-"""
-Read and write ZIP files.
-"""
-import struct, os, time, sys, shutil
-import binascii, cStringIO, stat
-import io
-import re
-
-try:
-    import zlib # We may need its compression method
-    crc32 = zlib.crc32
-except ImportError:
-    zlib = None
-    crc32 = binascii.crc32
-
-__all__ = ["BadZipfile", "error", "ZIP_STORED", "ZIP_DEFLATED", "is_zipfile",
-           "ZipInfo", "ZipFile", "PyZipFile", "LargeZipFile" ]
-
-class BadZipfile(Exception):
-    pass
-
-
-class LargeZipFile(Exception):
-    """
-    Raised when writing a zipfile, the zipfile requires ZIP64 extensions
-    and those extensions are disabled.
-    """
-
-error = BadZipfile      # The exception raised by this module
-
-ZIP64_LIMIT = (1 << 31) - 1
-ZIP_FILECOUNT_LIMIT = 1 << 16
-ZIP_MAX_COMMENT = (1 << 16) - 1
-
-# constants for Zip file compression methods
-ZIP_STORED = 0
-ZIP_DEFLATED = 8
-# Other ZIP compression methods not supported
-
-# Below are some formats and associated data for reading/writing headers using
-# the struct module.  The names and structures of headers/records are those used
-# in the PKWARE description of the ZIP file format:
-#     http://www.pkware.com/documents/casestudies/APPNOTE.TXT
-# (URL valid as of January 2008)
-
-# The "end of central directory" structure, magic number, size, and indices
-# (section V.I in the format document)
-structEndArchive = "<4s4H2LH"
-stringEndArchive = "PK\005\006"
-sizeEndCentDir = struct.calcsize(structEndArchive)
-
-_ECD_SIGNATURE = 0
-_ECD_DISK_NUMBER = 1
-_ECD_DISK_START = 2
-_ECD_ENTRIES_THIS_DISK = 3
-_ECD_ENTRIES_TOTAL = 4
-_ECD_SIZE = 5
-_ECD_OFFSET = 6
-_ECD_COMMENT_SIZE = 7
-# These last two indices are not part of the structure as defined in the
-# spec, but they are used internally by this module as a convenience
-_ECD_COMMENT = 8
-_ECD_LOCATION = 9
-
-# The "central directory" structure, magic number, size, and indices
-# of entries in the structure (section V.F in the format document)
-structCentralDir = "<4s4B4HL2L5H2L"
-stringCentralDir = "PK\001\002"
-sizeCentralDir = struct.calcsize(structCentralDir)
-
-# indexes of entries in the central directory structure
-_CD_SIGNATURE = 0
-_CD_CREATE_VERSION = 1
-_CD_CREATE_SYSTEM = 2
-_CD_EXTRACT_VERSION = 3
-_CD_EXTRACT_SYSTEM = 4
-_CD_FLAG_BITS = 5
-_CD_COMPRESS_TYPE = 6
-_CD_TIME = 7
-_CD_DATE = 8
-_CD_CRC = 9
-_CD_COMPRESSED_SIZE = 10
-_CD_UNCOMPRESSED_SIZE = 11
-_CD_FILENAME_LENGTH = 12
-_CD_EXTRA_FIELD_LENGTH = 13
-_CD_COMMENT_LENGTH = 14
-_CD_DISK_NUMBER_START = 15
-_CD_INTERNAL_FILE_ATTRIBUTES = 16
-_CD_EXTERNAL_FILE_ATTRIBUTES = 17
-_CD_LOCAL_HEADER_OFFSET = 18
-
-# The "local file header" structure, magic number, size, and indices
-# (section V.A in the format document)
-structFileHeader = "<4s2B4HL2L2H"
-stringFileHeader = "PK\003\004"
-sizeFileHeader = struct.calcsize(structFileHeader)
-
-_FH_SIGNATURE = 0
-_FH_EXTRACT_VERSION = 1
-_FH_EXTRACT_SYSTEM = 2
-_FH_GENERAL_PURPOSE_FLAG_BITS = 3
-_FH_COMPRESSION_METHOD = 4
-_FH_LAST_MOD_TIME = 5
-_FH_LAST_MOD_DATE = 6
-_FH_CRC = 7
-_FH_COMPRESSED_SIZE = 8
-_FH_UNCOMPRESSED_SIZE = 9
-_FH_FILENAME_LENGTH = 10
-_FH_EXTRA_FIELD_LENGTH = 11
-
-# The "Zip64 end of central directory locator" structure, magic number, and size
-structEndArchive64Locator = "<4sLQL"
-stringEndArchive64Locator = "PK\x06\x07"
-sizeEndCentDir64Locator = struct.calcsize(structEndArchive64Locator)
-
-# The "Zip64 end of central directory" record, magic number, size, and indices
-# (section V.G in the format document)
-structEndArchive64 = "<4sQ2H2L4Q"
-stringEndArchive64 = "PK\x06\x06"
-sizeEndCentDir64 = struct.calcsize(structEndArchive64)
-
-_CD64_SIGNATURE = 0
-_CD64_DIRECTORY_RECSIZE = 1
-_CD64_CREATE_VERSION = 2
-_CD64_EXTRACT_VERSION = 3
-_CD64_DISK_NUMBER = 4
-_CD64_DISK_NUMBER_START = 5
-_CD64_NUMBER_ENTRIES_THIS_DISK = 6
-_CD64_NUMBER_ENTRIES_TOTAL = 7
-_CD64_DIRECTORY_SIZE = 8
-_CD64_OFFSET_START_CENTDIR = 9
-
-def _check_zipfile(fp):
-    try:
-        if _EndRecData(fp):
-            return True         # file has correct magic number
-    except IOError:
-        pass
-    return False
-
-def is_zipfile(filename):
-    """Quickly see if a file is a ZIP file by checking the magic number.
-
-    The filename argument may be a file or file-like object too.
-    """
-    result = False
-    try:
-        if hasattr(filename, "read"):
-            result = _check_zipfile(fp=filename)
-        else:
-            with open(filename, "rb") as fp:
-                result = _check_zipfile(fp)
-    except IOError:
-        pass
-    return result
-
-def _EndRecData64(fpin, offset, endrec):
-    """
-    Read the ZIP64 end-of-archive records and use that to update endrec
-    """
-    try:
-        fpin.seek(offset - sizeEndCentDir64Locator, 2)
-    except IOError:
-        # If the seek fails, the file is not large enough to contain a ZIP64
-        # end-of-archive record, so just return the end record we were given.
-        return endrec
-
-    data = fpin.read(sizeEndCentDir64Locator)
-    sig, diskno, reloff, disks = struct.unpack(structEndArchive64Locator, data)
-    if sig != stringEndArchive64Locator:
-        return endrec
-
-    if diskno != 0 or disks != 1:
-        raise BadZipfile("zipfiles that span multiple disks are not supported")
-
-    # Assume no 'zip64 extensible data'
-    fpin.seek(offset - sizeEndCentDir64Locator - sizeEndCentDir64, 2)
-    data = fpin.read(sizeEndCentDir64)
-    sig, sz, create_version, read_version, disk_num, disk_dir, \
-            dircount, dircount2, dirsize, diroffset = \
-            struct.unpack(structEndArchive64, data)
-    if sig != stringEndArchive64:
-        return endrec
-
-    # Update the original endrec using data from the ZIP64 record
-    endrec[_ECD_SIGNATURE] = sig
-    endrec[_ECD_DISK_NUMBER] = disk_num
-    endrec[_ECD_DISK_START] = disk_dir
-    endrec[_ECD_ENTRIES_THIS_DISK] = dircount
-    endrec[_ECD_ENTRIES_TOTAL] = dircount2
-    endrec[_ECD_SIZE] = dirsize
-    endrec[_ECD_OFFSET] = diroffset
-    return endrec
-
-
-def _EndRecData(fpin):
-    """Return data from the "End of Central Directory" record, or None.
-
-    The data is a list of the nine items in the ZIP "End of central dir"
-    record followed by a tenth item, the file seek offset of this record."""
-
-    # Determine file size
-    fpin.seek(0, 2)
-    filesize = fpin.tell()
-
-    # Check to see if this is ZIP file with no archive comment (the
-    # "end of central directory" structure should be the last item in the
-    # file if this is the case).
-    try:
-        fpin.seek(-sizeEndCentDir, 2)
-    except IOError:
-        return None
-    data = fpin.read()
-    if data[0:4] == stringEndArchive and data[-2:] == "\000\000":
-        # the signature is correct and there's no comment, unpack structure
-        endrec = struct.unpack(structEndArchive, data)
-        endrec=list(endrec)
-
-        # Append a blank comment and record start offset
-        endrec.append("")
-        endrec.append(filesize - sizeEndCentDir)
-
-        # Try to read the "Zip64 end of central directory" structure
-        return _EndRecData64(fpin, -sizeEndCentDir, endrec)
-
-    # Either this is not a ZIP file, or it is a ZIP file with an archive
-    # comment.  Search the end of the file for the "end of central directory"
-    # record signature. The comment is the last item in the ZIP file and may be
-    # up to 64K long.  It is assumed that the "end of central directory" magic
-    # number does not appear in the comment.
-    maxCommentStart = max(filesize - (1 << 16) - sizeEndCentDir, 0)
-    fpin.seek(maxCommentStart, 0)
-    data = fpin.read()
-    start = data.rfind(stringEndArchive)
-    if start >= 0:
-        # found the magic number; attempt to unpack and interpret
-        recData = data[start:start+sizeEndCentDir]
-        endrec = list(struct.unpack(structEndArchive, recData))
-        comment = data[start+sizeEndCentDir:]
-        # check that comment length is correct
-        if endrec[_ECD_COMMENT_SIZE] == len(comment):
-            # Append the archive comment and start offset
-            endrec.append(comment)
-            endrec.append(maxCommentStart + start)
-
-            # Try to read the "Zip64 end of central directory" structure
-            return _EndRecData64(fpin, maxCommentStart + start - filesize,
-                                 endrec)
-
-    # Unable to find a valid end of central directory structure
-    return
-
-
-class ZipInfo (object):
-    """Class with attributes describing each file in the ZIP archive."""
-
-    __slots__ = (
-            'orig_filename',
-            'filename',
-            'date_time',
-            'compress_type',
-            'comment',
-            'extra',
-            'create_system',
-            'create_version',
-            'extract_version',
-            'reserved',
-            'flag_bits',
-            'volume',
-            'internal_attr',
-            'external_attr',
-            'header_offset',
-            'CRC',
-            'compress_size',
-            'file_size',
-            '_raw_time',
-        )
-
-    def __init__(self, filename="NoName", date_time=(1980,1,1,0,0,0)):
-        self.orig_filename = filename   # Original file name in archive
-
-        # Terminate the file name at the first null byte.  Null bytes in file
-        # names are used as tricks by viruses in archives.
-        null_byte = filename.find(chr(0))
-        if null_byte >= 0:
-            filename = filename[0:null_byte]
-        # This is used to ensure paths in generated ZIP files always use
-        # forward slashes as the directory separator, as required by the
-        # ZIP format specification.
-        if os.sep != "/" and os.sep in filename:
-            filename = filename.replace(os.sep, "/")
-
-        self.filename = filename        # Normalized file name
-        self.date_time = date_time      # year, month, day, hour, min, sec
-        # Standard values:
-        self.compress_type = ZIP_STORED # Type of compression for the file
-        self.comment = ""               # Comment for each file
-        self.extra = ""                 # ZIP extra data
-        if sys.platform == 'win32':
-            self.create_system = 0          # System which created ZIP archive
-        else:
-            # Assume everything else is unix-y
-            self.create_system = 3          # System which created ZIP archive
-        self.create_version = 20        # Version which created ZIP archive
-        self.extract_version = 20       # Version needed to extract archive
-        self.reserved = 0               # Must be zero
-        self.flag_bits = 0              # ZIP flag bits
-        self.volume = 0                 # Volume number of file header
-        self.internal_attr = 0          # Internal attributes
-        self.external_attr = 0          # External file attributes
-        # Other attributes are set by class ZipFile:
-        # header_offset         Byte offset to the file header
-        # CRC                   CRC-32 of the uncompressed file
-        # compress_size         Size of the compressed file
-        # file_size             Size of the uncompressed file
-
-    def FileHeader(self):
-        """Return the per-file header as a string."""
-        dt = self.date_time
-        dosdate = (dt[0] - 1980) << 9 | dt[1] << 5 | dt[2]
-        dostime = dt[3] << 11 | dt[4] << 5 | (dt[5] // 2)
-        if self.flag_bits & 0x08:
-            # Set these to zero because we write them after the file data
-            CRC = compress_size = file_size = 0
-        else:
-            CRC = self.CRC
-            compress_size = self.compress_size
-            file_size = self.file_size
-
-        extra = self.extra
-
-        if file_size > ZIP64_LIMIT or compress_size > ZIP64_LIMIT:
-            # File is larger than what fits into a 4 byte integer,
-            # fall back to the ZIP64 extension
-            fmt = '<HHQQ'
-            extra = extra + struct.pack(fmt,
-                    1, struct.calcsize(fmt)-4, file_size, compress_size)
-            file_size = 0xffffffff
-            compress_size = 0xffffffff
-            self.extract_version = max(45, self.extract_version)
-            self.create_version = max(45, self.extract_version)
-
-        filename, flag_bits = self._encodeFilenameFlags()
-        header = struct.pack(structFileHeader, stringFileHeader,
-                 self.extract_version, self.reserved, flag_bits,
-                 self.compress_type, dostime, dosdate, CRC,
-                 compress_size, file_size,
-                 len(filename), len(extra))
-        return header + filename + extra
-
-    def _encodeFilenameFlags(self):
-        if isinstance(self.filename, unicode):
-            try:
-                return self.filename.encode('ascii'), self.flag_bits
-            except UnicodeEncodeError:
-                return self.filename.encode('utf-8'), self.flag_bits | 0x800
-        else:
-            return self.filename, self.flag_bits
-
-    def _decodeFilename(self):
-        if self.flag_bits & 0x800:
-            return self.filename.decode('utf-8')
-        else:
-            return self.filename
-
-    def _decodeExtra(self):
-        # Try to decode the extra field.
-        extra = self.extra
-        unpack = struct.unpack
-        while extra:
-            tp, ln = unpack('<HH', extra[:4])
-            if tp == 1:
-                if ln >= 24:
-                    counts = unpack('<QQQ', extra[4:28])
-                elif ln == 16:
-                    counts = unpack('<QQ', extra[4:20])
-                elif ln == 8:
-                    counts = unpack('<Q', extra[4:12])
-                elif ln == 0:
-                    counts = ()
-                else:
-                    raise RuntimeError, "Corrupt extra field %s"%(ln,)
-
-                idx = 0
-
-                # ZIP64 extension (large files and/or large archives)
-                if self.file_size in (0xffffffffffffffffL, 0xffffffffL):
-                    self.file_size = counts[idx]
-                    idx += 1
-
-                if self.compress_size == 0xFFFFFFFFL:
-                    self.compress_size = counts[idx]
-                    idx += 1
-
-                if self.header_offset == 0xffffffffL:
-                    old = self.header_offset
-                    self.header_offset = counts[idx]
-                    idx+=1
-
-            extra = extra[ln+4:]
-
-
-class _ZipDecrypter:
-    """Class to handle decryption of files stored within a ZIP archive.
-
-    ZIP supports a password-based form of encryption. Even though known
-    plaintext attacks have been found against it, it is still useful
-    to be able to get data out of such a file.
-
-    Usage:
-        zd = _ZipDecrypter(mypwd)
-        plain_char = zd(cypher_char)
-        plain_text = map(zd, cypher_text)
-    """
-
-    def _GenerateCRCTable():
-        """Generate a CRC-32 table.
-
-        ZIP encryption uses the CRC32 one-byte primitive for scrambling some
-        internal keys. We noticed that a direct implementation is faster than
-        relying on binascii.crc32().
-        """
-        poly = 0xedb88320
-        table = [0] * 256
-        for i in range(256):
-            crc = i
-            for j in range(8):
-                if crc & 1:
-                    crc = ((crc >> 1) & 0x7FFFFFFF) ^ poly
-                else:
-                    crc = ((crc >> 1) & 0x7FFFFFFF)
-            table[i] = crc
-        return table
-    crctable = _GenerateCRCTable()
-
-    def _crc32(self, ch, crc):
-        """Compute the CRC32 primitive on one byte."""
-        return ((crc >> 8) & 0xffffff) ^ self.crctable[(crc ^ ord(ch)) & 0xff]
-
-    def __init__(self, pwd):
-        self.key0 = 305419896
-        self.key1 = 591751049
-        self.key2 = 878082192
-        for p in pwd:
-            self._UpdateKeys(p)
-
-    def _UpdateKeys(self, c):
-        self.key0 = self._crc32(c, self.key0)
-        self.key1 = (self.key1 + (self.key0 & 255)) & 4294967295
-        self.key1 = (self.key1 * 134775813 + 1) & 4294967295
-        self.key2 = self._crc32(chr((self.key1 >> 24) & 255), self.key2)
-
-    def __call__(self, c):
-        """Decrypt a single character."""
-        c = ord(c)
-        k = self.key2 | 2
-        c = c ^ (((k * (k^1)) >> 8) & 255)
-        c = chr(c)
-        self._UpdateKeys(c)
-        return c
-
-class ZipExtFile(io.BufferedIOBase):
-    """File-like object for reading an archive member.
-       Is returned by ZipFile.open().
-    """
-
-    # Max size supported by decompressor.
-    MAX_N = 1 << 31 - 1
-
-    # Read from compressed files in 4k blocks.
-    MIN_READ_SIZE = 4096
-
-    # Search for universal newlines or line chunks.
-    PATTERN = re.compile(r'^(?P<chunk>[^\r\n]+)|(?P<newline>\n|\r\n?)')
-
-    def __init__(self, fileobj, mode, zipinfo, decrypter=None):
-        self._fileobj = fileobj
-        self._decrypter = decrypter
-
-        self._compress_type = zipinfo.compress_type
-        self._compress_size = zipinfo.compress_size
-        self._compress_left = zipinfo.compress_size
-
-        if self._compress_type == ZIP_DEFLATED:
-            self._decompressor = zlib.decompressobj(-15)
-        self._unconsumed = ''
-
-        self._readbuffer = ''
-        self._offset = 0
-
-        self._universal = 'U' in mode
-        self.newlines = None
-
-        # Adjust read size for encrypted files since the first 12 bytes
-        # are for the encryption/password information.
-        if self._decrypter is not None:
-            self._compress_left -= 12
-
-        self.mode = mode
-        self.name = zipinfo.filename
-
-        if hasattr(zipinfo, 'CRC'):
-            self._expected_crc = zipinfo.CRC
-            self._running_crc = crc32(b'') & 0xffffffff
-        else:
-            self._expected_crc = None
-
-    def readline(self, limit=-1):
-        """Read and return a line from the stream.
-
-        If limit is specified, at most limit bytes will be read.
-        """
-
-        if not self._universal and limit < 0:
-            # Shortcut common case - newline found in buffer.
-            i = self._readbuffer.find('\n', self._offset) + 1
-            if i > 0:
-                line = self._readbuffer[self._offset: i]
-                self._offset = i
-                return line
-
-        if not self._universal:
-            return io.BufferedIOBase.readline(self, limit)
-
-        line = ''
-        while limit < 0 or len(line) < limit:
-            readahead = self.peek(2)
-            if readahead == '':
-                return line
-
-            #
-            # Search for universal newlines or line chunks.
-            #
-            # The pattern returns either a line chunk or a newline, but not
-            # both. Combined with peek(2), we are assured that the sequence
-            # '\r\n' is always retrieved completely and never split into
-            # separate newlines - '\r', '\n' due to coincidental readaheads.
-            #
-            match = self.PATTERN.search(readahead)
-            newline = match.group('newline')
-            if newline is not None:
-                if self.newlines is None:
-                    self.newlines = []
-                if newline not in self.newlines:
-                    self.newlines.append(newline)
-                self._offset += len(newline)
-                return line + '\n'
-
-            chunk = match.group('chunk')
-            if limit >= 0:
-                chunk = chunk[: limit - len(line)]
-
-            self._offset += len(chunk)
-            line += chunk
-
-        return line
-
-    def peek(self, n=1):
-        """Returns buffered bytes without advancing the position."""
-        if n > len(self._readbuffer) - self._offset:
-            chunk = self.read(n)
-            self._offset -= len(chunk)
-
-        # Return up to 512 bytes to reduce allocation overhead for tight loops.
-        return self._readbuffer[self._offset: self._offset + 512]
-
-    def readable(self):
-        return True
-
-    def read(self, n=-1):
-        """Read and return up to n bytes.
-        If the argument is omitted, None, or negative, data is read and returned until EOF is reached..
-        """
-        buf = ''
-        if n is None:
-            n = -1
-        while True:
-            if n < 0:
-                data = self.read1(n)
-            elif n > len(buf):
-                data = self.read1(n - len(buf))
-            else:
-                return buf
-            if len(data) == 0:
-                return buf
-            buf += data
-
-    def _update_crc(self, newdata, eof):
-        # Update the CRC using the given data.
-        if self._expected_crc is None:
-            # No need to compute the CRC if we don't have a reference value
-            return
-        self._running_crc = crc32(newdata, self._running_crc) & 0xffffffff
-        # Check the CRC if we're at the end of the file
-        if eof and self._running_crc != self._expected_crc:
-            raise BadZipfile("Bad CRC-32 for file %r" % self.name)
-
-    def read1(self, n):
-        """Read up to n bytes with at most one read() system call."""
-
-        # Simplify algorithm (branching) by transforming negative n to large n.
-        if n < 0 or n is None:
-            n = self.MAX_N
-
-        # Bytes available in read buffer.
-        len_readbuffer = len(self._readbuffer) - self._offset
-
-        # Read from file.
-        if self._compress_left > 0 and n > len_readbuffer + len(self._unconsumed):
-            nbytes = n - len_readbuffer - len(self._unconsumed)
-            nbytes = max(nbytes, self.MIN_READ_SIZE)
-            nbytes = min(nbytes, self._compress_left)
-
-            data = self._fileobj.read(nbytes)
-            self._compress_left -= len(data)
-
-            if data and self._decrypter is not None:
-                data = ''.join(map(self._decrypter, data))
-
-            if self._compress_type == ZIP_STORED:
-                self._update_crc(data, eof=(self._compress_left==0))
-                self._readbuffer = self._readbuffer[self._offset:] + data
-                self._offset = 0
-            else:
-                # Prepare deflated bytes for decompression.
-                self._unconsumed += data
-
-        # Handle unconsumed data.
-        if (len(self._unconsumed) > 0 and n > len_readbuffer and
-            self._compress_type == ZIP_DEFLATED):
-            data = self._decompressor.decompress(
-                self._unconsumed,
-                max(n - len_readbuffer, self.MIN_READ_SIZE)
-            )
-
-            self._unconsumed = self._decompressor.unconsumed_tail
-            eof = len(self._unconsumed) == 0 and self._compress_left == 0
-            if eof:
-                data += self._decompressor.flush()
-
-            self._update_crc(data, eof=eof)
-            self._readbuffer = self._readbuffer[self._offset:] + data
-            self._offset = 0
-
-        # Read from buffer.
-        data = self._readbuffer[self._offset: self._offset + n]
-        self._offset += len(data)
-        return data
-
-
-
-class ZipFile:
-    """ Class with methods to open, read, write, close, list zip files.
-
-    z = ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=False)
-
-    file: Either the path to the file, or a file-like object.
-          If it is a path, the file will be opened and closed by ZipFile.
-    mode: The mode can be either read "r", write "w" or append "a".
-    compression: ZIP_STORED (no compression) or ZIP_DEFLATED (requires zlib).
-    allowZip64: if True ZipFile will create files with ZIP64 extensions when
-                needed, otherwise it will raise an exception when this would
-                be necessary.
-
-    """
-
-    fp = None                   # Set here since __del__ checks it
-
-    def __init__(self, file, mode="r", compression=ZIP_STORED, allowZip64=False):
-        """Open the ZIP file with mode read "r", write "w" or append "a"."""
-        if mode not in ("r", "w", "a"):
-            raise RuntimeError('ZipFile() requires mode "r", "w", or "a"')
-
-        if compression == ZIP_STORED:
-            pass
-        elif compression == ZIP_DEFLATED:
-            if not zlib:
-                raise RuntimeError,\
-                      "Compression requires the (missing) zlib module"
-        else:
-            raise RuntimeError, "That compression method is not supported"
-
-        self._allowZip64 = allowZip64
-        self._didModify = False
-        self.debug = 0  # Level of printing: 0 through 3
-        self.NameToInfo = {}    # Find file info given name
-        self.filelist = []      # List of ZipInfo instances for archive
-        self.compression = compression  # Method of compression
-        self.mode = key = mode.replace('b', '')[0]
-        self.pwd = None
-        self.comment = ''
-
-        # Check if we were passed a file-like object
-        if isinstance(file, basestring):
-            self._filePassed = 0
-            self.filename = file
-            modeDict = {'r' : 'rb', 'w': 'wb', 'a' : 'r+b'}
-            try:
-                self.fp = open(file, modeDict[mode])
-            except IOError:
-                if mode == 'a':
-                    mode = key = 'w'
-                    self.fp = open(file, modeDict[mode])
-                else:
-                    raise
-        else:
-            self._filePassed = 1
-            self.fp = file
-            self.filename = getattr(file, 'name', None)
-
-        if key == 'r':
-            self._GetContents()
-        elif key == 'w':
-            # set the modified flag so central directory gets written
-            # even if no files are added to the archive
-            self._didModify = True
-        elif key == 'a':
-            try:
-                # See if file is a zip file
-                self._RealGetContents()
-                # seek to start of directory and overwrite
-                self.fp.seek(self.start_dir, 0)
-            except BadZipfile:
-                # file is not a zip file, just append
-                self.fp.seek(0, 2)
-
-                # set the modified flag so central directory gets written
-                # even if no files are added to the archive
-                self._didModify = True
-        else:
-            if not self._filePassed:
-                self.fp.close()
-                self.fp = None
-            raise RuntimeError, 'Mode must be "r", "w" or "a"'
-
-    def __enter__(self):
-        return self
-
-    def __exit__(self, type, value, traceback):
-        self.close()
-
-    def _GetContents(self):
-        """Read the directory, making sure we close the file if the format
-        is bad."""
-        try:
-            self._RealGetContents()
-        except BadZipfile:
-            if not self._filePassed:
-                self.fp.close()
-                self.fp = None
-            raise
-
-    def _RealGetContents(self):
-        """Read in the table of contents for the ZIP file."""
-        fp = self.fp
-        try:
-            endrec = _EndRecData(fp)
-        except IOError:
-            raise BadZipfile("File is not a zip file")
-        if not endrec:
-            raise BadZipfile, "File is not a zip file"
-        if self.debug > 1:
-            print endrec
-        size_cd = endrec[_ECD_SIZE]             # bytes in central directory
-        offset_cd = endrec[_ECD_OFFSET]         # offset of central directory
-        self.comment = endrec[_ECD_COMMENT]     # archive comment
-
-        # "concat" is zero, unless zip was concatenated to another file
-        concat = endrec[_ECD_LOCATION] - size_cd - offset_cd
-        if endrec[_ECD_SIGNATURE] == stringEndArchive64:
-            # If Zip64 extension structures are present, account for them
-            concat -= (sizeEndCentDir64 + sizeEndCentDir64Locator)
-
-        if self.debug > 2:
-            inferred = concat + offset_cd
-            print "given, inferred, offset", offset_cd, inferred, concat
-        # self.start_dir:  Position of start of central directory
-        self.start_dir = offset_cd + concat
-        fp.seek(self.start_dir, 0)
-        data = fp.read(size_cd)
-        fp = cStringIO.StringIO(data)
-        total = 0
-        while total < size_cd:
-            centdir = fp.read(sizeCentralDir)
-            if centdir[0:4] != stringCentralDir:
-                raise BadZipfile, "Bad magic number for central directory"
-            centdir = struct.unpack(structCentralDir, centdir)
-            if self.debug > 2:
-                print centdir
-            filename = fp.read(centdir[_CD_FILENAME_LENGTH])
-            # Create ZipInfo instance to store file information
-            x = ZipInfo(filename)
-            x.extra = fp.read(centdir[_CD_EXTRA_FIELD_LENGTH])
-            x.comment = fp.read(centdir[_CD_COMMENT_LENGTH])
-            x.header_offset = centdir[_CD_LOCAL_HEADER_OFFSET]
-            (x.create_version, x.create_system, x.extract_version, x.reserved,
-                x.flag_bits, x.compress_type, t, d,
-                x.CRC, x.compress_size, x.file_size) = centdir[1:12]
-            x.volume, x.internal_attr, x.external_attr = centdir[15:18]
-            # Convert date/time code to (year, month, day, hour, min, sec)
-            x._raw_time = t
-            x.date_time = ( (d>>9)+1980, (d>>5)&0xF, d&0x1F,
-                                     t>>11, (t>>5)&0x3F, (t&0x1F) * 2 )
-
-            x._decodeExtra()
-            x.header_offset = x.header_offset + concat
-            x.filename = x._decodeFilename()
-            self.filelist.append(x)
-            self.NameToInfo[x.filename] = x
-
-            # update total bytes read from central directory
-            total = (total + sizeCentralDir + centdir[_CD_FILENAME_LENGTH]
-                     + centdir[_CD_EXTRA_FIELD_LENGTH]
-                     + centdir[_CD_COMMENT_LENGTH])
-
-            if self.debug > 2:
-                print "total", total
-
-
-    def namelist(self):
-        """Return a list of file names in the archive."""
-        l = []
-        for data in self.filelist:
-            l.append(data.filename)
-        return l
-
-    def infolist(self):
-        """Return a list of class ZipInfo instances for files in the
-        archive."""
-        return self.filelist
-
-    def printdir(self):
-        """Print a table of contents for the zip file."""
-        print "%-46s %19s %12s" % ("File Name", "Modified    ", "Size")
-        for zinfo in self.filelist:
-            date = "%d-%02d-%02d %02d:%02d:%02d" % zinfo.date_time[:6]
-            print "%-46s %s %12d" % (zinfo.filename, date, zinfo.file_size)
-
-    def testzip(self):
-        """Read all the files and check the CRC."""
-        chunk_size = 2 ** 20
-        for zinfo in self.filelist:
-            try:
-                # Read by chunks, to avoid an OverflowError or a
-                # MemoryError with very large embedded files.
-                f = self.open(zinfo.filename, "r")
-                while f.read(chunk_size):     # Check CRC-32
-                    pass
-            except BadZipfile:
-                return zinfo.filename
-
-    def getinfo(self, name):
-        """Return the instance of ZipInfo given 'name'."""
-        info = self.NameToInfo.get(name)
-        if info is None:
-            raise KeyError(
-                'There is no item named %r in the archive' % name)
-
-        return info
-
-    def setpassword(self, pwd):
-        """Set default password for encrypted files."""
-        self.pwd = pwd
-
-    def read(self, name, pwd=None):
-        """Return file bytes (as a string) for name."""
-        return self.open(name, "r", pwd).read()
-
-    def open(self, name, mode="r", pwd=None):
-        """Return file-like object for 'name'."""
-        if mode not in ("r", "U", "rU"):
-            raise RuntimeError, 'open() requires mode "r", "U", or "rU"'
-        if not self.fp:
-            raise RuntimeError, \
-                  "Attempt to read ZIP archive that was already closed"
-
-        # Only open a new file for instances where we were not
-        # given a file object in the constructor
-        if self._filePassed:
-            zef_file = self.fp
-        else:
-            zef_file = open(self.filename, 'rb')
-
-        # Make sure we have an info object
-        if isinstance(name, ZipInfo):
-            # 'name' is already an info object
-            zinfo = name
-        else:
-            # Get info object for name
-            zinfo = self.getinfo(name)
-
-        zef_file.seek(zinfo.header_offset, 0)
-
-        # Skip the file header:
-        fheader = zef_file.read(sizeFileHeader)
-        if fheader[0:4] != stringFileHeader:
-            raise BadZipfile, "Bad magic number for file header"
-
-        fheader = struct.unpack(structFileHeader, fheader)
-        fname = zef_file.read(fheader[_FH_FILENAME_LENGTH])
-        if fheader[_FH_EXTRA_FIELD_LENGTH]:
-            zef_file.read(fheader[_FH_EXTRA_FIELD_LENGTH])
-
-        if fname != zinfo.orig_filename:
-            raise BadZipfile, \
-                      'File name in directory "%s" and header "%s" differ.' % (
-                          zinfo.orig_filename, fname)
-
-        # check for encrypted flag & handle password
-        is_encrypted = zinfo.flag_bits & 0x1
-        zd = None
-        if is_encrypted:
-            if not pwd:
-                pwd = self.pwd
-            if not pwd:
-                raise RuntimeError, "File %s is encrypted, " \
-                      "password required for extraction" % name
-
-            zd = _ZipDecrypter(pwd)
-            # The first 12 bytes in the cypher stream is an encryption header
-            #  used to strengthen the algorithm. The first 11 bytes are
-            #  completely random, while the 12th contains the MSB of the CRC,
-            #  or the MSB of the file time depending on the header type
-            #  and is used to check the correctness of the password.
-            bytes = zef_file.read(12)
-            h = map(zd, bytes[0:12])
-            if zinfo.flag_bits & 0x8:
-                # compare against the file type from extended local headers
-                check_byte = (zinfo._raw_time >> 8) & 0xff
-            else:
-                # compare against the CRC otherwise
-                check_byte = (zinfo.CRC >> 24) & 0xff
-            if ord(h[11]) != check_byte:
-                raise RuntimeError("Bad password for file", name)
-
-        return  ZipExtFile(zef_file, mode, zinfo, zd)
-
-    def extract(self, member, path=None, pwd=None):
-        """Extract a member from the archive to the current working directory,
-           using its full name. Its file information is extracted as accurately
-           as possible. `member' may be a filename or a ZipInfo object. You can
-           specify a different directory using `path'.
-        """
-        if not isinstance(member, ZipInfo):
-            member = self.getinfo(member)
-
-        if path is None:
-            path = os.getcwd()
-
-        return self._extract_member(member, path, pwd)
-
-    def extractall(self, path=None, members=None, pwd=None):
-        """Extract all members from the archive to the current working
-           directory. `path' specifies a different directory to extract to.
-           `members' is optional and must be a subset of the list returned
-           by namelist().
-        """
-        if members is None:
-            members = self.namelist()
-
-        for zipinfo in members:
-            self.extract(zipinfo, path, pwd)
-
-    def _extract_member(self, member, targetpath, pwd):
-        """Extract the ZipInfo object 'member' to a physical
-           file on the path targetpath.
-        """
-        # build the destination pathname, replacing
-        # forward slashes to platform specific separators.
-        # Strip trailing path separator, unless it represents the root.
-        if (targetpath[-1:] in (os.path.sep, os.path.altsep)
-            and len(os.path.splitdrive(targetpath)[1]) > 1):
-            targetpath = targetpath[:-1]
-
-        # don't include leading "/" from file name if present
-        if member.filename[0] == '/':
-            targetpath = os.path.join(targetpath, member.filename[1:])
-        else:
-            targetpath = os.path.join(targetpath, member.filename)
-
-        targetpath = os.path.normpath(targetpath)
-
-        # Create all upper directories if necessary.
-        upperdirs = os.path.dirname(targetpath)
-        if upperdirs and not os.path.exists(upperdirs):
-            os.makedirs(upperdirs)
-
-        if member.filename[-1] == '/':
-            if not os.path.isdir(targetpath):
-                os.mkdir(targetpath)
-            return targetpath
-
-        source = self.open(member, pwd=pwd)
-        target = file(targetpath, "wb")
-        shutil.copyfileobj(source, target)
-        source.close()
-        target.close()
-
-        return targetpath
-
-    def _writecheck(self, zinfo):
-        """Check for errors before writing a file to the archive."""
-        if zinfo.filename in self.NameToInfo:
-            if self.debug:      # Warning for duplicate names
-                print "Duplicate name:", zinfo.filename
-        if self.mode not in ("w", "a"):
-            raise RuntimeError, 'write() requires mode "w" or "a"'
-        if not self.fp:
-            raise RuntimeError, \
-                  "Attempt to write ZIP archive that was already closed"
-        if zinfo.compress_type == ZIP_DEFLATED and not zlib:
-            raise RuntimeError, \
-                  "Compression requires the (missing) zlib module"
-        if zinfo.compress_type not in (ZIP_STORED, ZIP_DEFLATED):
-            raise RuntimeError, \
-                  "That compression method is not supported"
-        if zinfo.file_size > ZIP64_LIMIT:
-            if not self._allowZip64:
-                raise LargeZipFile("Filesize would require ZIP64 extensions")
-        if zinfo.header_offset > ZIP64_LIMIT:
-            if not self._allowZip64:
-                raise LargeZipFile("Zipfile size would require ZIP64 extensions")
-
-    def write(self, filename, arcname=None, compress_type=None):
-        """Put the bytes from filename into the archive under the name
-        arcname."""
-        if not self.fp:
-            raise RuntimeError(
-                  "Attempt to write to ZIP archive that was already closed")
-
-        st = os.stat(filename)
-        isdir = stat.S_ISDIR(st.st_mode)
-        mtime = time.localtime(st.st_mtime)
-        date_time = mtime[0:6]
-        # Create ZipInfo instance to store file information
-        if arcname is None:
-            arcname = filename
-        arcname = os.path.normpath(os.path.splitdrive(arcname)[1])
-        while arcname[0] in (os.sep, os.altsep):
-            arcname = arcname[1:]
-        if isdir:
-            arcname += '/'
-        zinfo = ZipInfo(arcname, date_time)
-        zinfo.external_attr = (st[0] & 0xFFFF) << 16L      # Unix attributes
-        if compress_type is None:
-            zinfo.compress_type = self.compression
-        else:
-            zinfo.compress_type = compress_type
-
-        zinfo.file_size = st.st_size
-        zinfo.flag_bits = 0x00
-        zinfo.header_offset = self.fp.tell()    # Start of header bytes
-
-        self._writecheck(zinfo)
-        self._didModify = True
-
-        if isdir:
-            zinfo.file_size = 0
-            zinfo.compress_size = 0
-            zinfo.CRC = 0
-            self.filelist.append(zinfo)
-            self.NameToInfo[zinfo.filename] = zinfo
-            self.fp.write(zinfo.FileHeader())
-            return
-
-        with open(filename, "rb") as fp:
-            # Must overwrite CRC and sizes with correct data later
-            zinfo.CRC = CRC = 0
-            zinfo.compress_size = compress_size = 0
-            zinfo.file_size = file_size = 0
-            self.fp.write(zinfo.FileHeader())
-            if zinfo.compress_type == ZIP_DEFLATED:
-                cmpr = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION,
-                     zlib.DEFLATED, -15)
-            else:
-                cmpr = None
-            while 1:
-                buf = fp.read(1024 * 8)
-                if not buf:
-                    break
-                file_size = file_size + len(buf)
-                CRC = crc32(buf, CRC) & 0xffffffff
-                if cmpr:
-                    buf = cmpr.compress(buf)
-                    compress_size = compress_size + len(buf)
-                self.fp.write(buf)
-        if cmpr:
-            buf = cmpr.flush()
-            compress_size = compress_size + len(buf)
-            self.fp.write(buf)
-            zinfo.compress_size = compress_size
-        else:
-            zinfo.compress_size = file_size
-        zinfo.CRC = CRC
-        zinfo.file_size = file_size
-        # Seek backwards and write CRC and file sizes
-        position = self.fp.tell()       # Preserve current position in file
-        self.fp.seek(zinfo.header_offset + 14, 0)
-        self.fp.write(struct.pack("<LLL", zinfo.CRC, zinfo.compress_size,
-              zinfo.file_size))
-        self.fp.seek(position, 0)
-        self.filelist.append(zinfo)
-        self.NameToInfo[zinfo.filename] = zinfo
-
-    def writestr(self, zinfo_or_arcname, bytes, compress_type=None):
-        """Write a file into the archive.  The contents is the string
-        'bytes'.  'zinfo_or_arcname' is either a ZipInfo instance or
-        the name of the file in the archive."""
-        if not isinstance(zinfo_or_arcname, ZipInfo):
-            zinfo = ZipInfo(filename=zinfo_or_arcname,
-                            date_time=time.localtime(time.time())[:6])
-
-            zinfo.compress_type = self.compression
-            zinfo.external_attr = 0600 << 16
-        else:
-            zinfo = zinfo_or_arcname
-
-        if not self.fp:
-            raise RuntimeError(
-                  "Attempt to write to ZIP archive that was already closed")
-
-        if compress_type is not None:
-            zinfo.compress_type = compress_type
-
-        zinfo.file_size = len(bytes)            # Uncompressed size
-        zinfo.header_offset = self.fp.tell()    # Start of header bytes
-        self._writecheck(zinfo)
-        self._didModify = True
-        zinfo.CRC = crc32(bytes) & 0xffffffff       # CRC-32 checksum
-        if zinfo.compress_type == ZIP_DEFLATED:
-            co = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION,
-                 zlib.DEFLATED, -15)
-            bytes = co.compress(bytes) + co.flush()
-            zinfo.compress_size = len(bytes)    # Compressed size
-        else:
-            zinfo.compress_size = zinfo.file_size
-        zinfo.header_offset = self.fp.tell()    # Start of header bytes
-        self.fp.write(zinfo.FileHeader())
-        self.fp.write(bytes)
-        self.fp.flush()
-        if zinfo.flag_bits & 0x08:
-            # Write CRC and file sizes after the file data
-            self.fp.write(struct.pack("<LLL", zinfo.CRC, zinfo.compress_size,
-                  zinfo.file_size))
-        self.filelist.append(zinfo)
-        self.NameToInfo[zinfo.filename] = zinfo
-
-    def __del__(self):
-        """Call the "close()" method in case the user forgot."""
-        self.close()
-
-    def close(self):
-        """Close the file, and for mode "w" and "a" write the ending
-        records."""
-        if self.fp is None:
-            return
-
-        if self.mode in ("w", "a") and self._didModify: # write ending records
-            count = 0
-            pos1 = self.fp.tell()
-            for zinfo in self.filelist:         # write central directory
-                count = count + 1
-                dt = zinfo.date_time
-                dosdate = (dt[0] - 1980) << 9 | dt[1] << 5 | dt[2]
-                dostime = dt[3] << 11 | dt[4] << 5 | (dt[5] // 2)
-                extra = []
-                if zinfo.file_size > ZIP64_LIMIT \
-                        or zinfo.compress_size > ZIP64_LIMIT:
-                    extra.append(zinfo.file_size)
-                    extra.append(zinfo.compress_size)
-                    file_size = 0xffffffff
-                    compress_size = 0xffffffff
-                else:
-                    file_size = zinfo.file_size
-                    compress_size = zinfo.compress_size
-
-                if zinfo.header_offset > ZIP64_LIMIT:
-                    extra.append(zinfo.header_offset)
-                    header_offset = 0xffffffffL
-                else:
-                    header_offset = zinfo.header_offset
-
-                extra_data = zinfo.extra
-                if extra:
-                    # Append a ZIP64 field to the extra's
-                    extra_data = struct.pack(
-                            '<HH' + 'Q'*len(extra),
-                            1, 8*len(extra), *extra) + extra_data
-
-                    extract_version = max(45, zinfo.extract_version)
-                    create_version = max(45, zinfo.create_version)
-                else:
-                    extract_version = zinfo.extract_version
-                    create_version = zinfo.create_version
-
-                try:
-                    filename, flag_bits = zinfo._encodeFilenameFlags()
-                    centdir = struct.pack(structCentralDir,
-                     stringCentralDir, create_version,
-                     zinfo.create_system, extract_version, zinfo.reserved,
-                     flag_bits, zinfo.compress_type, dostime, dosdate,
-                     zinfo.CRC, compress_size, file_size,
-                     len(filename), len(extra_data), len(zinfo.comment),
-                     0, zinfo.internal_attr, zinfo.external_attr,
-                     header_offset)
-                except DeprecationWarning:
-                    print >>sys.stderr, (structCentralDir,
-                     stringCentralDir, create_version,
-                     zinfo.create_system, extract_version, zinfo.reserved,
-                     zinfo.flag_bits, zinfo.compress_type, dostime, dosdate,
-                     zinfo.CRC, compress_size, file_size,
-                     len(zinfo.filename), len(extra_data), len(zinfo.comment),
-                     0, zinfo.internal_attr, zinfo.external_attr,
-                     header_offset)
-                    raise
-                self.fp.write(centdir)
-                self.fp.write(filename)
-                self.fp.write(extra_data)
-                self.fp.write(zinfo.comment)
-
-            pos2 = self.fp.tell()
-            # Write end-of-zip-archive record
-            centDirCount = count
-            centDirSize = pos2 - pos1
-            centDirOffset = pos1
-            if (centDirCount >= ZIP_FILECOUNT_LIMIT or
-                centDirOffset > ZIP64_LIMIT or
-                centDirSize > ZIP64_LIMIT):
-                # Need to write the ZIP64 end-of-archive records
-                zip64endrec = struct.pack(
-                        structEndArchive64, stringEndArchive64,
-                        44, 45, 45, 0, 0, centDirCount, centDirCount,
-                        centDirSize, centDirOffset)
-                self.fp.write(zip64endrec)
-
-                zip64locrec = struct.pack(
-                        structEndArchive64Locator,
-                        stringEndArchive64Locator, 0, pos2, 1)
-                self.fp.write(zip64locrec)
-                centDirCount = min(centDirCount, 0xFFFF)
-                centDirSize = min(centDirSize, 0xFFFFFFFF)
-                centDirOffset = min(centDirOffset, 0xFFFFFFFF)
-
-            # check for valid comment length
-            if len(self.comment) >= ZIP_MAX_COMMENT:
-                if self.debug > 0:
-                    msg = 'Archive comment is too long; truncating to %d bytes' \
-                          % ZIP_MAX_COMMENT
-                self.comment = self.comment[:ZIP_MAX_COMMENT]
-
-            endrec = struct.pack(structEndArchive, stringEndArchive,
-                                 0, 0, centDirCount, centDirCount,
-                                 centDirSize, centDirOffset, len(self.comment))
-            self.fp.write(endrec)
-            self.fp.write(self.comment)
-            self.fp.flush()
-
-        if not self._filePassed:
-            self.fp.close()
-        self.fp = None
-
-
-class PyZipFile(ZipFile):
-    """Class to create ZIP archives with Python library files and packages."""
-
-    def writepy(self, pathname, basename = ""):
-        """Add all files from "pathname" to the ZIP archive.
-
-        If pathname is a package directory, search the directory and
-        all package subdirectories recursively for all *.py and enter
-        the modules into the archive.  If pathname is a plain
-        directory, listdir *.py and enter all modules.  Else, pathname
-        must be a Python *.py file and the module will be put into the
-        archive.  Added modules are always module.pyo or module.pyc.
-        This method will compile the module.py into module.pyc if
-        necessary.
-        """
-        dir, name = os.path.split(pathname)
-        if os.path.isdir(pathname):
-            initname = os.path.join(pathname, "__init__.py")
-            if os.path.isfile(initname):
-                # This is a package directory, add it
-                if basename:
-                    basename = "%s/%s" % (basename, name)
-                else:
-                    basename = name
-                if self.debug:
-                    print "Adding package in", pathname, "as", basename
-                fname, arcname = self._get_codename(initname[0:-3], basename)
-                if self.debug:
-                    print "Adding", arcname
-                self.write(fname, arcname)
-                dirlist = os.listdir(pathname)
-                dirlist.remove("__init__.py")
-                # Add all *.py files and package subdirectories
-                for filename in dirlist:
-                    path = os.path.join(pathname, filename)
-                    root, ext = os.path.splitext(filename)
-                    if os.path.isdir(path):
-                        if os.path.isfile(os.path.join(path, "__init__.py")):
-                            # This is a package directory, add it
-                            self.writepy(path, basename)  # Recursive call
-                    elif ext == ".py":
-                        fname, arcname = self._get_codename(path[0:-3],
-                                         basename)
-                        if self.debug:
-                            print "Adding", arcname
-                        self.write(fname, arcname)
-            else:
-                # This is NOT a package directory, add its files at top level
-                if self.debug:
-                    print "Adding files from directory", pathname
-                for filename in os.listdir(pathname):
-                    path = os.path.join(pathname, filename)
-                    root, ext = os.path.splitext(filename)
-                    if ext == ".py":
-                        fname, arcname = self._get_codename(path[0:-3],
-                                         basename)
-                        if self.debug:
-                            print "Adding", arcname
-                        self.write(fname, arcname)
-        else:
-            if pathname[-3:] != ".py":
-                raise RuntimeError, \
-                      'Files added with writepy() must end with ".py"'
-            fname, arcname = self._get_codename(pathname[0:-3], basename)
-            if self.debug:
-                print "Adding file", arcname
-            self.write(fname, arcname)
-
-    def _get_codename(self, pathname, basename):
-        """Return (filename, archivename) for the path.
-
-        Given a module name path, return the correct file path and
-        archive name, compiling if necessary.  For example, given
-        /python/lib/string, return (/python/lib/string.pyc, string).
-        """
-        file_py  = pathname + ".py"
-        file_pyc = pathname + ".pyc"
-        file_pyo = pathname + ".pyo"
-        if os.path.isfile(file_pyo) and \
-                            os.stat(file_pyo).st_mtime >= os.stat(file_py).st_mtime:
-            fname = file_pyo    # Use .pyo file
-        elif not os.path.isfile(file_pyc) or \
-             os.stat(file_pyc).st_mtime < os.stat(file_py).st_mtime:
-            import py_compile
-            if self.debug:
-                print "Compiling", file_py
-            try:
-                py_compile.compile(file_py, file_pyc, None, True)
-            except py_compile.PyCompileError,err:
-                print err.msg
-            fname = file_pyc
-        else:
-            fname = file_pyc
-        archivename = os.path.split(fname)[1]
-        if basename:
-            archivename = "%s/%s" % (basename, archivename)
-        return (fname, archivename)
-
-
-def main(args = None):
-    import textwrap
-    USAGE=textwrap.dedent("""\
-        Usage:
-            zipfile.py -l zipfile.zip        # Show listing of a zipfile
-            zipfile.py -t zipfile.zip        # Test if a zipfile is valid
-            zipfile.py -e zipfile.zip target # Extract zipfile into target dir
-            zipfile.py -c zipfile.zip src ... # Create zipfile from sources
-        """)
-    if args is None:
-        args = sys.argv[1:]
-
-    if not args or args[0] not in ('-l', '-c', '-e', '-t'):
-        print USAGE
-        sys.exit(1)
-
-    if args[0] == '-l':
-        if len(args) != 2:
-            print USAGE
-            sys.exit(1)
-        zf = ZipFile(args[1], 'r')
-        zf.printdir()
-        zf.close()
-
-    elif args[0] == '-t':
-        if len(args) != 2:
-            print USAGE
-            sys.exit(1)
-        zf = ZipFile(args[1], 'r')
-        badfile = zf.testzip()
-        if badfile:
-            print("The following enclosed file is corrupted: {!r}".format(badfile))
-        print "Done testing"
-
-    elif args[0] == '-e':
-        if len(args) != 3:
-            print USAGE
-            sys.exit(1)
-
-        zf = ZipFile(args[1], 'r')
-        out = args[2]
-        for path in zf.namelist():
-            if path.startswith('./'):
-                tgt = os.path.join(out, path[2:])
-            else:
-                tgt = os.path.join(out, path)
-
-            tgtdir = os.path.dirname(tgt)
-            if not os.path.exists(tgtdir):
-                os.makedirs(tgtdir)
-            with open(tgt, 'wb') as fp:
-                fp.write(zf.read(path))
-        zf.close()
-
-    elif args[0] == '-c':
-        if len(args) < 3:
-            print USAGE
-            sys.exit(1)
-
-        def addToZip(zf, path, zippath):
-            if os.path.isfile(path):
-                zf.write(path, zippath, ZIP_DEFLATED)
-            elif os.path.isdir(path):
-                for nm in os.listdir(path):
-                    addToZip(zf,
-                            os.path.join(path, nm), os.path.join(zippath, nm))
-            # else: ignore
-
-        zf = ZipFile(args[1], 'w', allowZip64=True)
-        for src in args[2:]:
-            addToZip(zf, src, os.path.basename(src))
-
-        zf.close()
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_bisectmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_bisectmodule.c
deleted file mode 100644
index 5ce1d18..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_bisectmodule.c
+++ /dev/null
@@ -1,241 +0,0 @@
-/* Bisection algorithms. Drop in replacement for bisect.py
-
-Converted to C by Dmitry Vasiliev (dima at hlabs.spb.ru).
-*/
-
-#include "Python.h"
-
-static Py_ssize_t
-internal_bisect_right(PyObject *list, PyObject *item, Py_ssize_t lo, Py_ssize_t hi)
-{
-    PyObject *litem;
-    Py_ssize_t mid, res;
-
-    if (lo < 0) {
-        PyErr_SetString(PyExc_ValueError, "lo must be non-negative");
-        return -1;
-    }
-    if (hi == -1) {
-        hi = PySequence_Size(list);
-        if (hi < 0)
-            return -1;
-    }
-    while (lo < hi) {
-        mid = (lo + hi) / 2;
-        litem = PySequence_GetItem(list, mid);
-        if (litem == NULL)
-            return -1;
-        res = PyObject_RichCompareBool(item, litem, Py_LT);
-        Py_DECREF(litem);
-        if (res < 0)
-            return -1;
-        if (res)
-            hi = mid;
-        else
-            lo = mid + 1;
-    }
-    return lo;
-}
-
-static PyObject *
-bisect_right(PyObject *self, PyObject *args, PyObject *kw)
-{
-    PyObject *list, *item;
-    Py_ssize_t lo = 0;
-    Py_ssize_t hi = -1;
-    Py_ssize_t index;
-    static char *keywords[] = {"a", "x", "lo", "hi", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|nn:bisect_right",
-        keywords, &list, &item, &lo, &hi))
-        return NULL;
-    index = internal_bisect_right(list, item, lo, hi);
-    if (index < 0)
-        return NULL;
-    return PyInt_FromSsize_t(index);
-}
-
-PyDoc_STRVAR(bisect_right_doc,
-"bisect_right(a, x[, lo[, hi]]) -> index\n\
-\n\
-Return the index where to insert item x in list a, assuming a is sorted.\n\
-\n\
-The return value i is such that all e in a[:i] have e <= x, and all e in\n\
-a[i:] have e > x.  So if x already appears in the list, i points just\n\
-beyond the rightmost x already there\n\
-\n\
-Optional args lo (default 0) and hi (default len(a)) bound the\n\
-slice of a to be searched.\n");
-
-static PyObject *
-insort_right(PyObject *self, PyObject *args, PyObject *kw)
-{
-    PyObject *list, *item, *result;
-    Py_ssize_t lo = 0;
-    Py_ssize_t hi = -1;
-    Py_ssize_t index;
-    static char *keywords[] = {"a", "x", "lo", "hi", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|nn:insort_right",
-        keywords, &list, &item, &lo, &hi))
-        return NULL;
-    index = internal_bisect_right(list, item, lo, hi);
-    if (index < 0)
-        return NULL;
-    if (PyList_CheckExact(list)) {
-        if (PyList_Insert(list, index, item) < 0)
-            return NULL;
-    } else {
-        result = PyObject_CallMethod(list, "insert", "nO",
-                                     index, item);
-        if (result == NULL)
-            return NULL;
-        Py_DECREF(result);
-    }
-
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(insort_right_doc,
-"insort_right(a, x[, lo[, hi]])\n\
-\n\
-Insert item x in list a, and keep it sorted assuming a is sorted.\n\
-\n\
-If x is already in a, insert it to the right of the rightmost x.\n\
-\n\
-Optional args lo (default 0) and hi (default len(a)) bound the\n\
-slice of a to be searched.\n");
-
-static Py_ssize_t
-internal_bisect_left(PyObject *list, PyObject *item, Py_ssize_t lo, Py_ssize_t hi)
-{
-    PyObject *litem;
-    Py_ssize_t mid, res;
-
-    if (lo < 0) {
-        PyErr_SetString(PyExc_ValueError, "lo must be non-negative");
-        return -1;
-    }
-    if (hi == -1) {
-        hi = PySequence_Size(list);
-        if (hi < 0)
-            return -1;
-    }
-    while (lo < hi) {
-        mid = (lo + hi) / 2;
-        litem = PySequence_GetItem(list, mid);
-        if (litem == NULL)
-            return -1;
-        res = PyObject_RichCompareBool(litem, item, Py_LT);
-        Py_DECREF(litem);
-        if (res < 0)
-            return -1;
-        if (res)
-            lo = mid + 1;
-        else
-            hi = mid;
-    }
-    return lo;
-}
-
-static PyObject *
-bisect_left(PyObject *self, PyObject *args, PyObject *kw)
-{
-    PyObject *list, *item;
-    Py_ssize_t lo = 0;
-    Py_ssize_t hi = -1;
-    Py_ssize_t index;
-    static char *keywords[] = {"a", "x", "lo", "hi", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|nn:bisect_left",
-        keywords, &list, &item, &lo, &hi))
-        return NULL;
-    index = internal_bisect_left(list, item, lo, hi);
-    if (index < 0)
-        return NULL;
-    return PyInt_FromSsize_t(index);
-}
-
-PyDoc_STRVAR(bisect_left_doc,
-"bisect_left(a, x[, lo[, hi]]) -> index\n\
-\n\
-Return the index where to insert item x in list a, assuming a is sorted.\n\
-\n\
-The return value i is such that all e in a[:i] have e < x, and all e in\n\
-a[i:] have e >= x.  So if x already appears in the list, i points just\n\
-before the leftmost x already there.\n\
-\n\
-Optional args lo (default 0) and hi (default len(a)) bound the\n\
-slice of a to be searched.\n");
-
-static PyObject *
-insort_left(PyObject *self, PyObject *args, PyObject *kw)
-{
-    PyObject *list, *item, *result;
-    Py_ssize_t lo = 0;
-    Py_ssize_t hi = -1;
-    Py_ssize_t index;
-    static char *keywords[] = {"a", "x", "lo", "hi", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|nn:insort_left",
-        keywords, &list, &item, &lo, &hi))
-        return NULL;
-    index = internal_bisect_left(list, item, lo, hi);
-    if (index < 0)
-        return NULL;
-    if (PyList_CheckExact(list)) {
-        if (PyList_Insert(list, index, item) < 0)
-            return NULL;
-    } else {
-        result = PyObject_CallMethod(list, "insert", "iO",
-                                     index, item);
-        if (result == NULL)
-            return NULL;
-        Py_DECREF(result);
-    }
-
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(insort_left_doc,
-"insort_left(a, x[, lo[, hi]])\n\
-\n\
-Insert item x in list a, and keep it sorted assuming a is sorted.\n\
-\n\
-If x is already in a, insert it to the left of the leftmost x.\n\
-\n\
-Optional args lo (default 0) and hi (default len(a)) bound the\n\
-slice of a to be searched.\n");
-
-PyDoc_STRVAR(bisect_doc, "Alias for bisect_right().\n");
-PyDoc_STRVAR(insort_doc, "Alias for insort_right().\n");
-
-static PyMethodDef bisect_methods[] = {
-    {"bisect_right", (PyCFunction)bisect_right,
-        METH_VARARGS|METH_KEYWORDS, bisect_right_doc},
-    {"bisect", (PyCFunction)bisect_right,
-        METH_VARARGS|METH_KEYWORDS, bisect_doc},
-    {"insort_right", (PyCFunction)insort_right,
-        METH_VARARGS|METH_KEYWORDS, insort_right_doc},
-    {"insort", (PyCFunction)insort_right,
-        METH_VARARGS|METH_KEYWORDS, insort_doc},
-    {"bisect_left", (PyCFunction)bisect_left,
-        METH_VARARGS|METH_KEYWORDS, bisect_left_doc},
-    {"insort_left", (PyCFunction)insort_left,
-        METH_VARARGS|METH_KEYWORDS, insort_left_doc},
-    {NULL, NULL} /* sentinel */
-};
-
-PyDoc_STRVAR(module_doc,
-"Bisection algorithms.\n\
-\n\
-This module provides support for maintaining a list in sorted order without\n\
-having to sort the list after each insertion. For long lists of items with\n\
-expensive comparison operations, this can be an improvement over the more\n\
-common approach.\n");
-
-PyMODINIT_FUNC
-init_bisect(void)
-{
-    Py_InitModule3("_bisect", bisect_methods, module_doc);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_codecsmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_codecsmodule.c
deleted file mode 100644
index b1e6f16..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_codecsmodule.c
+++ /dev/null
@@ -1,1116 +0,0 @@
-/* ------------------------------------------------------------------------
-
-   _codecs -- Provides access to the codec registry and the builtin
-              codecs.
-
-   This module should never be imported directly. The standard library
-   module "codecs" wraps this builtin module for use within Python.
-
-   The codec registry is accessible via:
-
-     register(search_function) -> None
-
-     lookup(encoding) -> CodecInfo object
-
-   The builtin Unicode codecs use the following interface:
-
-     <encoding>_encode(Unicode_object[,errors='strict']) ->
-        (string object, bytes consumed)
-
-     <encoding>_decode(char_buffer_obj[,errors='strict']) ->
-        (Unicode object, bytes consumed)
-
-   <encoding>_encode() interfaces also accept non-Unicode object as
-   input. The objects are then converted to Unicode using
-   PyUnicode_FromObject() prior to applying the conversion.
-
-   These <encoding>s are available: utf_8, unicode_escape,
-   raw_unicode_escape, unicode_internal, latin_1, ascii (7-bit),
-   mbcs (on win32).
-
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-Copyright (c) Corporation for National Research Initiatives.
-
-   ------------------------------------------------------------------------ */
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-
-/* --- Registry ----------------------------------------------------------- */
-
-PyDoc_STRVAR(register__doc__,
-"register(search_function)\n\
-\n\
-Register a codec search function. Search functions are expected to take\n\
-one argument, the encoding name in all lower case letters, and return\n\
-a tuple of functions (encoder, decoder, stream_reader, stream_writer)\n\
-(or a CodecInfo object).");
-
-static
-PyObject *codec_register(PyObject *self, PyObject *search_function)
-{
-    if (PyCodec_Register(search_function))
-        return NULL;
-
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(lookup__doc__,
-"lookup(encoding) -> CodecInfo\n\
-\n\
-Looks up a codec tuple in the Python codec registry and returns\n\
-a CodecInfo object.");
-
-static
-PyObject *codec_lookup(PyObject *self, PyObject *args)
-{
-    char *encoding;
-
-    if (!PyArg_ParseTuple(args, "s:lookup", &encoding))
-        return NULL;
-
-    return _PyCodec_Lookup(encoding);
-}
-
-PyDoc_STRVAR(encode__doc__,
-"encode(obj, [encoding[,errors]]) -> object\n\
-\n\
-Encodes obj using the codec registered for encoding. encoding defaults\n\
-to the default encoding. errors may be given to set a different error\n\
-handling scheme. Default is 'strict' meaning that encoding errors raise\n\
-a ValueError. Other possible values are 'ignore', 'replace' and\n\
-'xmlcharrefreplace' as well as any other name registered with\n\
-codecs.register_error that can handle ValueErrors.");
-
-static PyObject *
-codec_encode(PyObject *self, PyObject *args)
-{
-    const char *encoding = NULL;
-    const char *errors = NULL;
-    PyObject *v;
-
-    if (!PyArg_ParseTuple(args, "O|ss:encode", &v, &encoding, &errors))
-        return NULL;
-
-#ifdef Py_USING_UNICODE
-    if (encoding == NULL)
-        encoding = PyUnicode_GetDefaultEncoding();
-#else
-    if (encoding == NULL) {
-        PyErr_SetString(PyExc_ValueError, "no encoding specified");
-        return NULL;
-    }
-#endif
-
-    /* Encode via the codec registry */
-    return PyCodec_Encode(v, encoding, errors);
-}
-
-PyDoc_STRVAR(decode__doc__,
-"decode(obj, [encoding[,errors]]) -> object\n\
-\n\
-Decodes obj using the codec registered for encoding. encoding defaults\n\
-to the default encoding. errors may be given to set a different error\n\
-handling scheme. Default is 'strict' meaning that encoding errors raise\n\
-a ValueError. Other possible values are 'ignore' and 'replace'\n\
-as well as any other name registered with codecs.register_error that is\n\
-able to handle ValueErrors.");
-
-static PyObject *
-codec_decode(PyObject *self, PyObject *args)
-{
-    const char *encoding = NULL;
-    const char *errors = NULL;
-    PyObject *v;
-
-    if (!PyArg_ParseTuple(args, "O|ss:decode", &v, &encoding, &errors))
-        return NULL;
-
-#ifdef Py_USING_UNICODE
-    if (encoding == NULL)
-        encoding = PyUnicode_GetDefaultEncoding();
-#else
-    if (encoding == NULL) {
-        PyErr_SetString(PyExc_ValueError, "no encoding specified");
-        return NULL;
-    }
-#endif
-
-    /* Decode via the codec registry */
-    return PyCodec_Decode(v, encoding, errors);
-}
-
-/* --- Helpers ------------------------------------------------------------ */
-
-static
-PyObject *codec_tuple(PyObject *unicode,
-                      Py_ssize_t len)
-{
-    PyObject *v;
-    if (unicode == NULL)
-        return NULL;
-    v = Py_BuildValue("On", unicode, len);
-    Py_DECREF(unicode);
-    return v;
-}
-
-/* --- String codecs ------------------------------------------------------ */
-static PyObject *
-escape_decode(PyObject *self,
-              PyObject *args)
-{
-    const char *errors = NULL;
-    const char *data;
-    Py_ssize_t size;
-
-    if (!PyArg_ParseTuple(args, "s#|z:escape_decode",
-                          &data, &size, &errors))
-        return NULL;
-    return codec_tuple(PyString_DecodeEscape(data, size, errors, 0, NULL),
-                       size);
-}
-
-static PyObject *
-escape_encode(PyObject *self,
-              PyObject *args)
-{
-    PyObject *str;
-    const char *errors = NULL;
-    char *buf;
-    Py_ssize_t consumed, len;
-
-    if (!PyArg_ParseTuple(args, "S|z:escape_encode",
-                          &str, &errors))
-        return NULL;
-
-    consumed = PyString_GET_SIZE(str);
-    str = PyString_Repr(str, 0);
-    if (!str)
-        return NULL;
-
-    /* The string will be quoted. Unquote, similar to unicode-escape. */
-    buf = PyString_AS_STRING (str);
-    len = PyString_GET_SIZE (str);
-    memmove(buf, buf+1, len-2);
-    if (_PyString_Resize(&str, len-2) < 0)
-        return NULL;
-
-    return codec_tuple(str, consumed);
-}
-
-#ifdef Py_USING_UNICODE
-/* --- Decoder ------------------------------------------------------------ */
-
-static PyObject *
-unicode_internal_decode(PyObject *self,
-                        PyObject *args)
-{
-    PyObject *obj;
-    const char *errors = NULL;
-    const char *data;
-    Py_ssize_t size;
-
-    if (!PyArg_ParseTuple(args, "O|z:unicode_internal_decode",
-                          &obj, &errors))
-        return NULL;
-
-    if (PyUnicode_Check(obj)) {
-        Py_INCREF(obj);
-        return codec_tuple(obj, PyUnicode_GET_SIZE(obj));
-    }
-    else {
-        if (PyObject_AsReadBuffer(obj, (const void **)&data, &size))
-            return NULL;
-
-        return codec_tuple(_PyUnicode_DecodeUnicodeInternal(data, size, errors),
-                           size);
-    }
-}
-
-static PyObject *
-utf_7_decode(PyObject *self,
-             PyObject *args)
-{
-    Py_buffer pbuf;
-    const char *errors = NULL;
-    int final = 0;
-    Py_ssize_t consumed;
-    PyObject *decoded = NULL;
-
-    if (!PyArg_ParseTuple(args, "s*|zi:utf_7_decode",
-                          &pbuf, &errors, &final))
-        return NULL;
-    consumed = pbuf.len;
-
-    decoded = PyUnicode_DecodeUTF7Stateful(pbuf.buf, pbuf.len, errors,
-                                           final ? NULL : &consumed);
-    PyBuffer_Release(&pbuf);
-    if (decoded == NULL)
-        return NULL;
-    return codec_tuple(decoded, consumed);
-}
-
-static PyObject *
-utf_8_decode(PyObject *self,
-            PyObject *args)
-{
-    Py_buffer pbuf;
-    const char *errors = NULL;
-    int final = 0;
-    Py_ssize_t consumed;
-    PyObject *decoded = NULL;
-
-    if (!PyArg_ParseTuple(args, "s*|zi:utf_8_decode",
-                          &pbuf, &errors, &final))
-        return NULL;
-    consumed = pbuf.len;
-
-    decoded = PyUnicode_DecodeUTF8Stateful(pbuf.buf, pbuf.len, errors,
-                                           final ? NULL : &consumed);
-    PyBuffer_Release(&pbuf);
-    if (decoded == NULL)
-        return NULL;
-    return codec_tuple(decoded, consumed);
-}
-
-static PyObject *
-utf_16_decode(PyObject *self,
-            PyObject *args)
-{
-    Py_buffer pbuf;
-    const char *errors = NULL;
-    int byteorder = 0;
-    int final = 0;
-    Py_ssize_t consumed;
-    PyObject *decoded;
-
-    if (!PyArg_ParseTuple(args, "s*|zi:utf_16_decode",
-                          &pbuf, &errors, &final))
-        return NULL;
-    consumed = pbuf.len; /* This is overwritten unless final is true. */
-    decoded = PyUnicode_DecodeUTF16Stateful(pbuf.buf, pbuf.len, errors,
-                                        &byteorder, final ? NULL : &consumed);
-    PyBuffer_Release(&pbuf);
-    if (decoded == NULL)
-        return NULL;
-    return codec_tuple(decoded, consumed);
-}
-
-static PyObject *
-utf_16_le_decode(PyObject *self,
-                 PyObject *args)
-{
-    Py_buffer pbuf;
-    const char *errors = NULL;
-    int byteorder = -1;
-    int final = 0;
-    Py_ssize_t consumed;
-    PyObject *decoded = NULL;
-
-    if (!PyArg_ParseTuple(args, "s*|zi:utf_16_le_decode",
-                          &pbuf, &errors, &final))
-        return NULL;
-
-    consumed = pbuf.len; /* This is overwritten unless final is true. */
-    decoded = PyUnicode_DecodeUTF16Stateful(pbuf.buf, pbuf.len, errors,
-        &byteorder, final ? NULL : &consumed);
-    PyBuffer_Release(&pbuf);
-    if (decoded == NULL)
-        return NULL;
-    return codec_tuple(decoded, consumed);
-}
-
-static PyObject *
-utf_16_be_decode(PyObject *self,
-                 PyObject *args)
-{
-    Py_buffer pbuf;
-    const char *errors = NULL;
-    int byteorder = 1;
-    int final = 0;
-    Py_ssize_t consumed;
-    PyObject *decoded = NULL;
-
-    if (!PyArg_ParseTuple(args, "s*|zi:utf_16_be_decode",
-                          &pbuf, &errors, &final))
-        return NULL;
-
-    consumed = pbuf.len; /* This is overwritten unless final is true. */
-    decoded = PyUnicode_DecodeUTF16Stateful(pbuf.buf, pbuf.len, errors,
-        &byteorder, final ? NULL : &consumed);
-    PyBuffer_Release(&pbuf);
-    if (decoded == NULL)
-        return NULL;
-    return codec_tuple(decoded, consumed);
-}
-
-/* This non-standard version also provides access to the byteorder
-   parameter of the builtin UTF-16 codec.
-
-   It returns a tuple (unicode, bytesread, byteorder) with byteorder
-   being the value in effect at the end of data.
-
-*/
-
-static PyObject *
-utf_16_ex_decode(PyObject *self,
-                 PyObject *args)
-{
-    Py_buffer pbuf;
-    const char *errors = NULL;
-    int byteorder = 0;
-    PyObject *unicode, *tuple;
-    int final = 0;
-    Py_ssize_t consumed;
-
-    if (!PyArg_ParseTuple(args, "s*|zii:utf_16_ex_decode",
-                          &pbuf, &errors, &byteorder, &final))
-        return NULL;
-    consumed = pbuf.len; /* This is overwritten unless final is true. */
-    unicode = PyUnicode_DecodeUTF16Stateful(pbuf.buf, pbuf.len, errors,
-                                        &byteorder, final ? NULL : &consumed);
-    PyBuffer_Release(&pbuf);
-    if (unicode == NULL)
-        return NULL;
-    tuple = Py_BuildValue("Oni", unicode, consumed, byteorder);
-    Py_DECREF(unicode);
-    return tuple;
-}
-
-static PyObject *
-utf_32_decode(PyObject *self,
-            PyObject *args)
-{
-    Py_buffer pbuf;
-    const char *errors = NULL;
-    int byteorder = 0;
-    int final = 0;
-    Py_ssize_t consumed;
-    PyObject *decoded;
-
-    if (!PyArg_ParseTuple(args, "s*|zi:utf_32_decode",
-                          &pbuf, &errors, &final))
-        return NULL;
-    consumed = pbuf.len; /* This is overwritten unless final is true. */
-    decoded = PyUnicode_DecodeUTF32Stateful(pbuf.buf, pbuf.len, errors,
-                                        &byteorder, final ? NULL : &consumed);
-    PyBuffer_Release(&pbuf);
-    if (decoded == NULL)
-        return NULL;
-    return codec_tuple(decoded, consumed);
-}
-
-static PyObject *
-utf_32_le_decode(PyObject *self,
-                 PyObject *args)
-{
-    Py_buffer pbuf;
-    const char *errors = NULL;
-    int byteorder = -1;
-    int final = 0;
-    Py_ssize_t consumed;
-    PyObject *decoded;
-
-    if (!PyArg_ParseTuple(args, "s*|zi:utf_32_le_decode",
-                          &pbuf, &errors, &final))
-        return NULL;
-    consumed = pbuf.len; /* This is overwritten unless final is true. */
-    decoded = PyUnicode_DecodeUTF32Stateful(pbuf.buf, pbuf.len, errors,
-                                        &byteorder, final ? NULL : &consumed);
-    PyBuffer_Release(&pbuf);
-    if (decoded == NULL)
-        return NULL;
-    return codec_tuple(decoded, consumed);
-}
-
-static PyObject *
-utf_32_be_decode(PyObject *self,
-                 PyObject *args)
-{
-    Py_buffer pbuf;
-    const char *errors = NULL;
-    int byteorder = 1;
-    int final = 0;
-    Py_ssize_t consumed;
-    PyObject *decoded;
-
-    if (!PyArg_ParseTuple(args, "s*|zi:utf_32_be_decode",
-                          &pbuf, &errors, &final))
-        return NULL;
-    consumed = pbuf.len; /* This is overwritten unless final is true. */
-    decoded = PyUnicode_DecodeUTF32Stateful(pbuf.buf, pbuf.len, errors,
-                                        &byteorder, final ? NULL : &consumed);
-    PyBuffer_Release(&pbuf);
-    if (decoded == NULL)
-        return NULL;
-    return codec_tuple(decoded, consumed);
-}
-
-/* This non-standard version also provides access to the byteorder
-   parameter of the builtin UTF-32 codec.
-
-   It returns a tuple (unicode, bytesread, byteorder) with byteorder
-   being the value in effect at the end of data.
-
-*/
-
-static PyObject *
-utf_32_ex_decode(PyObject *self,
-                 PyObject *args)
-{
-    Py_buffer pbuf;
-    const char *errors = NULL;
-    int byteorder = 0;
-    PyObject *unicode, *tuple;
-    int final = 0;
-    Py_ssize_t consumed;
-
-    if (!PyArg_ParseTuple(args, "s*|zii:utf_32_ex_decode",
-                          &pbuf, &errors, &byteorder, &final))
-        return NULL;
-    consumed = pbuf.len; /* This is overwritten unless final is true. */
-    unicode = PyUnicode_DecodeUTF32Stateful(pbuf.buf, pbuf.len, errors,
-                                        &byteorder, final ? NULL : &consumed);
-    PyBuffer_Release(&pbuf);
-    if (unicode == NULL)
-        return NULL;
-    tuple = Py_BuildValue("Oni", unicode, consumed, byteorder);
-    Py_DECREF(unicode);
-    return tuple;
-}
-
-static PyObject *
-unicode_escape_decode(PyObject *self,
-                     PyObject *args)
-{
-    Py_buffer pbuf;
-    const char *errors = NULL;
-        PyObject *unicode;
-
-    if (!PyArg_ParseTuple(args, "s*|z:unicode_escape_decode",
-                          &pbuf, &errors))
-        return NULL;
-
-    unicode = PyUnicode_DecodeUnicodeEscape(pbuf.buf, pbuf.len, errors);
-    PyBuffer_Release(&pbuf);
-    return codec_tuple(unicode, pbuf.len);
-}
-
-static PyObject *
-raw_unicode_escape_decode(PyObject *self,
-                        PyObject *args)
-{
-    Py_buffer pbuf;
-    const char *errors = NULL;
-    PyObject *unicode;
-
-    if (!PyArg_ParseTuple(args, "s*|z:raw_unicode_escape_decode",
-                          &pbuf, &errors))
-        return NULL;
-
-    unicode = PyUnicode_DecodeRawUnicodeEscape(pbuf.buf, pbuf.len, errors);
-    PyBuffer_Release(&pbuf);
-    return codec_tuple(unicode, pbuf.len);
-}
-
-static PyObject *
-latin_1_decode(PyObject *self,
-               PyObject *args)
-{
-    Py_buffer pbuf;
-    PyObject *unicode;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "s*|z:latin_1_decode",
-                          &pbuf, &errors))
-        return NULL;
-
-    unicode = PyUnicode_DecodeLatin1(pbuf.buf, pbuf.len, errors);
-    PyBuffer_Release(&pbuf);
-    return codec_tuple(unicode, pbuf.len);
-}
-
-static PyObject *
-ascii_decode(PyObject *self,
-             PyObject *args)
-{
-    Py_buffer pbuf;
-    PyObject *unicode;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "s*|z:ascii_decode",
-                          &pbuf, &errors))
-        return NULL;
-
-    unicode = PyUnicode_DecodeASCII(pbuf.buf, pbuf.len, errors);
-    PyBuffer_Release(&pbuf);
-    return codec_tuple(unicode, pbuf.len);
-}
-
-static PyObject *
-charmap_decode(PyObject *self,
-               PyObject *args)
-{
-    Py_buffer pbuf;
-    PyObject *unicode;
-    const char *errors = NULL;
-    PyObject *mapping = NULL;
-
-    if (!PyArg_ParseTuple(args, "s*|zO:charmap_decode",
-                          &pbuf, &errors, &mapping))
-        return NULL;
-    if (mapping == Py_None)
-        mapping = NULL;
-
-    unicode = PyUnicode_DecodeCharmap(pbuf.buf, pbuf.len, mapping, errors);
-    PyBuffer_Release(&pbuf);
-    return codec_tuple(unicode, pbuf.len);
-}
-
-#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
-
-static PyObject *
-mbcs_decode(PyObject *self,
-            PyObject *args)
-{
-    Py_buffer pbuf;
-    const char *errors = NULL;
-    int final = 0;
-    Py_ssize_t consumed;
-    PyObject *decoded = NULL;
-
-    if (!PyArg_ParseTuple(args, "s*|zi:mbcs_decode",
-                          &pbuf, &errors, &final))
-        return NULL;
-    consumed = pbuf.len;
-
-    decoded = PyUnicode_DecodeMBCSStateful(pbuf.buf, pbuf.len, errors,
-                                           final ? NULL : &consumed);
-    PyBuffer_Release(&pbuf);
-    if (decoded == NULL)
-        return NULL;
-    return codec_tuple(decoded, consumed);
-}
-
-#endif /* MS_WINDOWS */
-
-/* --- Encoder ------------------------------------------------------------ */
-
-static PyObject *
-readbuffer_encode(PyObject *self,
-                  PyObject *args)
-{
-    const char *data;
-    Py_ssize_t size;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "s#|z:readbuffer_encode",
-                          &data, &size, &errors))
-        return NULL;
-
-    return codec_tuple(PyString_FromStringAndSize(data, size),
-                       size);
-}
-
-static PyObject *
-charbuffer_encode(PyObject *self,
-                  PyObject *args)
-{
-    const char *data;
-    Py_ssize_t size;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "t#|z:charbuffer_encode",
-                          &data, &size, &errors))
-        return NULL;
-
-    return codec_tuple(PyString_FromStringAndSize(data, size),
-                       size);
-}
-
-static PyObject *
-unicode_internal_encode(PyObject *self,
-                        PyObject *args)
-{
-    PyObject *obj;
-    const char *errors = NULL;
-    const char *data;
-    Py_ssize_t size;
-
-    if (!PyArg_ParseTuple(args, "O|z:unicode_internal_encode",
-                          &obj, &errors))
-        return NULL;
-
-    if (PyUnicode_Check(obj)) {
-        data = PyUnicode_AS_DATA(obj);
-        size = PyUnicode_GET_DATA_SIZE(obj);
-        return codec_tuple(PyString_FromStringAndSize(data, size),
-                           PyUnicode_GET_SIZE(obj));
-    }
-    else {
-        if (PyObject_AsReadBuffer(obj, (const void **)&data, &size))
-            return NULL;
-        return codec_tuple(PyString_FromStringAndSize(data, size),
-                           size);
-    }
-}
-
-static PyObject *
-utf_7_encode(PyObject *self,
-            PyObject *args)
-{
-    PyObject *str, *v;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|z:utf_7_encode",
-                          &str, &errors))
-        return NULL;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return NULL;
-    v = codec_tuple(PyUnicode_EncodeUTF7(PyUnicode_AS_UNICODE(str),
-                                         PyUnicode_GET_SIZE(str),
-                                         0,
-                                         0,
-                                         errors),
-                    PyUnicode_GET_SIZE(str));
-    Py_DECREF(str);
-    return v;
-}
-
-static PyObject *
-utf_8_encode(PyObject *self,
-            PyObject *args)
-{
-    PyObject *str, *v;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|z:utf_8_encode",
-                          &str, &errors))
-        return NULL;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return NULL;
-    v = codec_tuple(PyUnicode_EncodeUTF8(PyUnicode_AS_UNICODE(str),
-                                         PyUnicode_GET_SIZE(str),
-                                         errors),
-                    PyUnicode_GET_SIZE(str));
-    Py_DECREF(str);
-    return v;
-}
-
-/* This version provides access to the byteorder parameter of the
-   builtin UTF-16 codecs as optional third argument. It defaults to 0
-   which means: use the native byte order and prepend the data with a
-   BOM mark.
-
-*/
-
-static PyObject *
-utf_16_encode(PyObject *self,
-            PyObject *args)
-{
-    PyObject *str, *v;
-    const char *errors = NULL;
-    int byteorder = 0;
-
-    if (!PyArg_ParseTuple(args, "O|zi:utf_16_encode",
-                          &str, &errors, &byteorder))
-        return NULL;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return NULL;
-    v = codec_tuple(PyUnicode_EncodeUTF16(PyUnicode_AS_UNICODE(str),
-                                          PyUnicode_GET_SIZE(str),
-                                          errors,
-                                          byteorder),
-                    PyUnicode_GET_SIZE(str));
-    Py_DECREF(str);
-    return v;
-}
-
-static PyObject *
-utf_16_le_encode(PyObject *self,
-                 PyObject *args)
-{
-    PyObject *str, *v;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|z:utf_16_le_encode",
-                          &str, &errors))
-        return NULL;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return NULL;
-    v = codec_tuple(PyUnicode_EncodeUTF16(PyUnicode_AS_UNICODE(str),
-                                             PyUnicode_GET_SIZE(str),
-                                             errors,
-                                             -1),
-                       PyUnicode_GET_SIZE(str));
-    Py_DECREF(str);
-    return v;
-}
-
-static PyObject *
-utf_16_be_encode(PyObject *self,
-                 PyObject *args)
-{
-    PyObject *str, *v;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|z:utf_16_be_encode",
-                          &str, &errors))
-        return NULL;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return NULL;
-    v = codec_tuple(PyUnicode_EncodeUTF16(PyUnicode_AS_UNICODE(str),
-                                          PyUnicode_GET_SIZE(str),
-                                          errors,
-                                          +1),
-                    PyUnicode_GET_SIZE(str));
-    Py_DECREF(str);
-    return v;
-}
-
-/* This version provides access to the byteorder parameter of the
-   builtin UTF-32 codecs as optional third argument. It defaults to 0
-   which means: use the native byte order and prepend the data with a
-   BOM mark.
-
-*/
-
-static PyObject *
-utf_32_encode(PyObject *self,
-            PyObject *args)
-{
-    PyObject *str, *v;
-    const char *errors = NULL;
-    int byteorder = 0;
-
-    if (!PyArg_ParseTuple(args, "O|zi:utf_32_encode",
-                          &str, &errors, &byteorder))
-        return NULL;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return NULL;
-    v = codec_tuple(PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(str),
-                                          PyUnicode_GET_SIZE(str),
-                                          errors,
-                                          byteorder),
-                    PyUnicode_GET_SIZE(str));
-    Py_DECREF(str);
-    return v;
-}
-
-static PyObject *
-utf_32_le_encode(PyObject *self,
-                 PyObject *args)
-{
-    PyObject *str, *v;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|z:utf_32_le_encode",
-                          &str, &errors))
-        return NULL;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return NULL;
-    v = codec_tuple(PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(str),
-                                             PyUnicode_GET_SIZE(str),
-                                             errors,
-                                             -1),
-                       PyUnicode_GET_SIZE(str));
-    Py_DECREF(str);
-    return v;
-}
-
-static PyObject *
-utf_32_be_encode(PyObject *self,
-                 PyObject *args)
-{
-    PyObject *str, *v;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|z:utf_32_be_encode",
-                          &str, &errors))
-        return NULL;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return NULL;
-    v = codec_tuple(PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(str),
-                                          PyUnicode_GET_SIZE(str),
-                                          errors,
-                                          +1),
-                    PyUnicode_GET_SIZE(str));
-    Py_DECREF(str);
-    return v;
-}
-
-static PyObject *
-unicode_escape_encode(PyObject *self,
-                     PyObject *args)
-{
-    PyObject *str, *v;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|z:unicode_escape_encode",
-                          &str, &errors))
-        return NULL;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return NULL;
-    v = codec_tuple(PyUnicode_EncodeUnicodeEscape(PyUnicode_AS_UNICODE(str),
-                                                  PyUnicode_GET_SIZE(str)),
-                    PyUnicode_GET_SIZE(str));
-    Py_DECREF(str);
-    return v;
-}
-
-static PyObject *
-raw_unicode_escape_encode(PyObject *self,
-                        PyObject *args)
-{
-    PyObject *str, *v;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|z:raw_unicode_escape_encode",
-                          &str, &errors))
-        return NULL;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return NULL;
-    v = codec_tuple(PyUnicode_EncodeRawUnicodeEscape(
-                               PyUnicode_AS_UNICODE(str),
-                               PyUnicode_GET_SIZE(str)),
-                    PyUnicode_GET_SIZE(str));
-    Py_DECREF(str);
-    return v;
-}
-
-static PyObject *
-latin_1_encode(PyObject *self,
-               PyObject *args)
-{
-    PyObject *str, *v;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|z:latin_1_encode",
-                          &str, &errors))
-        return NULL;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return NULL;
-    v = codec_tuple(PyUnicode_EncodeLatin1(
-                               PyUnicode_AS_UNICODE(str),
-                               PyUnicode_GET_SIZE(str),
-                               errors),
-                    PyUnicode_GET_SIZE(str));
-    Py_DECREF(str);
-    return v;
-}
-
-static PyObject *
-ascii_encode(PyObject *self,
-             PyObject *args)
-{
-    PyObject *str, *v;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|z:ascii_encode",
-                          &str, &errors))
-        return NULL;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return NULL;
-    v = codec_tuple(PyUnicode_EncodeASCII(
-                               PyUnicode_AS_UNICODE(str),
-                               PyUnicode_GET_SIZE(str),
-                               errors),
-                    PyUnicode_GET_SIZE(str));
-    Py_DECREF(str);
-    return v;
-}
-
-static PyObject *
-charmap_encode(PyObject *self,
-             PyObject *args)
-{
-    PyObject *str, *v;
-    const char *errors = NULL;
-    PyObject *mapping = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|zO:charmap_encode",
-                          &str, &errors, &mapping))
-        return NULL;
-    if (mapping == Py_None)
-        mapping = NULL;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return NULL;
-    v = codec_tuple(PyUnicode_EncodeCharmap(
-                               PyUnicode_AS_UNICODE(str),
-                               PyUnicode_GET_SIZE(str),
-                               mapping,
-                               errors),
-                    PyUnicode_GET_SIZE(str));
-    Py_DECREF(str);
-    return v;
-}
-
-static PyObject*
-charmap_build(PyObject *self, PyObject *args)
-{
-    PyObject *map;
-    if (!PyArg_ParseTuple(args, "U:charmap_build", &map))
-        return NULL;
-    return PyUnicode_BuildEncodingMap(map);
-}
-
-#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
-
-static PyObject *
-mbcs_encode(PyObject *self,
-            PyObject *args)
-{
-    PyObject *str, *v;
-    const char *errors = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|z:mbcs_encode",
-                          &str, &errors))
-        return NULL;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return NULL;
-    v = codec_tuple(PyUnicode_EncodeMBCS(
-                               PyUnicode_AS_UNICODE(str),
-                               PyUnicode_GET_SIZE(str),
-                               errors),
-                    PyUnicode_GET_SIZE(str));
-    Py_DECREF(str);
-    return v;
-}
-
-#endif /* MS_WINDOWS */
-#endif /* Py_USING_UNICODE */
-
-/* --- Error handler registry --------------------------------------------- */
-
-PyDoc_STRVAR(register_error__doc__,
-"register_error(errors, handler)\n\
-\n\
-Register the specified error handler under the name\n\
-errors. handler must be a callable object, that\n\
-will be called with an exception instance containing\n\
-information about the location of the encoding/decoding\n\
-error and must return a (replacement, new position) tuple.");
-
-static PyObject *register_error(PyObject *self, PyObject *args)
-{
-    const char *name;
-    PyObject *handler;
-
-    if (!PyArg_ParseTuple(args, "sO:register_error",
-                          &name, &handler))
-        return NULL;
-    if (PyCodec_RegisterError(name, handler))
-        return NULL;
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(lookup_error__doc__,
-"lookup_error(errors) -> handler\n\
-\n\
-Return the error handler for the specified error handling name\n\
-or raise a LookupError, if no handler exists under this name.");
-
-static PyObject *lookup_error(PyObject *self, PyObject *args)
-{
-    const char *name;
-
-    if (!PyArg_ParseTuple(args, "s:lookup_error",
-                          &name))
-        return NULL;
-    return PyCodec_LookupError(name);
-}
-
-/* --- Module API --------------------------------------------------------- */
-
-static PyMethodDef _codecs_functions[] = {
-    {"register",                codec_register,                 METH_O,
-        register__doc__},
-    {"lookup",                  codec_lookup,                   METH_VARARGS,
-        lookup__doc__},
-    {"encode",                  codec_encode,                   METH_VARARGS,
-        encode__doc__},
-    {"decode",                  codec_decode,                   METH_VARARGS,
-        decode__doc__},
-    {"escape_encode",           escape_encode,                  METH_VARARGS},
-    {"escape_decode",           escape_decode,                  METH_VARARGS},
-#ifdef Py_USING_UNICODE
-    {"utf_8_encode",            utf_8_encode,                   METH_VARARGS},
-    {"utf_8_decode",            utf_8_decode,                   METH_VARARGS},
-    {"utf_7_encode",            utf_7_encode,                   METH_VARARGS},
-    {"utf_7_decode",            utf_7_decode,                   METH_VARARGS},
-    {"utf_16_encode",           utf_16_encode,                  METH_VARARGS},
-    {"utf_16_le_encode",        utf_16_le_encode,               METH_VARARGS},
-    {"utf_16_be_encode",        utf_16_be_encode,               METH_VARARGS},
-    {"utf_16_decode",           utf_16_decode,                  METH_VARARGS},
-    {"utf_16_le_decode",        utf_16_le_decode,               METH_VARARGS},
-    {"utf_16_be_decode",        utf_16_be_decode,               METH_VARARGS},
-    {"utf_16_ex_decode",        utf_16_ex_decode,               METH_VARARGS},
-    {"utf_32_encode",           utf_32_encode,                  METH_VARARGS},
-    {"utf_32_le_encode",        utf_32_le_encode,               METH_VARARGS},
-    {"utf_32_be_encode",        utf_32_be_encode,               METH_VARARGS},
-    {"utf_32_decode",           utf_32_decode,                  METH_VARARGS},
-    {"utf_32_le_decode",        utf_32_le_decode,               METH_VARARGS},
-    {"utf_32_be_decode",        utf_32_be_decode,               METH_VARARGS},
-    {"utf_32_ex_decode",        utf_32_ex_decode,               METH_VARARGS},
-    {"unicode_escape_encode",   unicode_escape_encode,          METH_VARARGS},
-    {"unicode_escape_decode",   unicode_escape_decode,          METH_VARARGS},
-    {"unicode_internal_encode", unicode_internal_encode,        METH_VARARGS},
-    {"unicode_internal_decode", unicode_internal_decode,        METH_VARARGS},
-    {"raw_unicode_escape_encode", raw_unicode_escape_encode,    METH_VARARGS},
-    {"raw_unicode_escape_decode", raw_unicode_escape_decode,    METH_VARARGS},
-    {"latin_1_encode",          latin_1_encode,                 METH_VARARGS},
-    {"latin_1_decode",          latin_1_decode,                 METH_VARARGS},
-    {"ascii_encode",            ascii_encode,                   METH_VARARGS},
-    {"ascii_decode",            ascii_decode,                   METH_VARARGS},
-    {"charmap_encode",          charmap_encode,                 METH_VARARGS},
-    {"charmap_decode",          charmap_decode,                 METH_VARARGS},
-    {"charmap_build",           charmap_build,                  METH_VARARGS},
-    {"readbuffer_encode",       readbuffer_encode,              METH_VARARGS},
-    {"charbuffer_encode",       charbuffer_encode,              METH_VARARGS},
-#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
-    {"mbcs_encode",             mbcs_encode,                    METH_VARARGS},
-    {"mbcs_decode",             mbcs_decode,                    METH_VARARGS},
-#endif
-#endif /* Py_USING_UNICODE */
-    {"register_error",          register_error,                 METH_VARARGS,
-        register_error__doc__},
-    {"lookup_error",            lookup_error,                   METH_VARARGS,
-        lookup_error__doc__},
-    {NULL, NULL}                /* sentinel */
-};
-
-PyMODINIT_FUNC
-init_codecs(void)
-{
-    Py_InitModule("_codecs", _codecs_functions);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_collectionsmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_collectionsmodule.c
deleted file mode 100644
index a805ae3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_collectionsmodule.c
+++ /dev/null
@@ -1,1634 +0,0 @@
-#include "Python.h"
-#include "structmember.h"
-
-/* collections module implementation of a deque() datatype
-   Written and maintained by Raymond D. Hettinger <python@rcn.com>
-   Copyright (c) 2004 Python Software Foundation.
-   All rights reserved.
-*/
-
-/* The block length may be set to any number over 1.  Larger numbers
- * reduce the number of calls to the memory allocator but take more
- * memory.  Ideally, BLOCKLEN should be set with an eye to the
- * length of a cache line.
- */
-
-#define BLOCKLEN 62
-#define CENTER ((BLOCKLEN - 1) / 2)
-
-/* A `dequeobject` is composed of a doubly-linked list of `block` nodes.
- * This list is not circular (the leftmost block has leftlink==NULL,
- * and the rightmost block has rightlink==NULL).  A deque d's first
- * element is at d.leftblock[leftindex] and its last element is at
- * d.rightblock[rightindex]; note that, unlike as for Python slice
- * indices, these indices are inclusive on both ends.  By being inclusive
- * on both ends, algorithms for left and right operations become
- * symmetrical which simplifies the design.
- *
- * The list of blocks is never empty, so d.leftblock and d.rightblock
- * are never equal to NULL.
- *
- * The indices, d.leftindex and d.rightindex are always in the range
- *     0 <= index < BLOCKLEN.
- * Their exact relationship is:
- *     (d.leftindex + d.len - 1) % BLOCKLEN == d.rightindex.
- *
- * Empty deques have d.len == 0; d.leftblock==d.rightblock;
- * d.leftindex == CENTER+1; and d.rightindex == CENTER.
- * Checking for d.len == 0 is the intended way to see whether d is empty.
- *
- * Whenever d.leftblock == d.rightblock,
- *     d.leftindex + d.len - 1 == d.rightindex.
- *
- * However, when d.leftblock != d.rightblock, d.leftindex and d.rightindex
- * become indices into distinct blocks and either may be larger than the
- * other.
- */
-
-typedef struct BLOCK {
-    struct BLOCK *leftlink;
-    struct BLOCK *rightlink;
-    PyObject *data[BLOCKLEN];
-} block;
-
-#define MAXFREEBLOCKS 10
-static Py_ssize_t numfreeblocks = 0;
-static block *freeblocks[MAXFREEBLOCKS];
-
-static block *
-newblock(block *leftlink, block *rightlink, Py_ssize_t len) {
-    block *b;
-    /* To prevent len from overflowing PY_SSIZE_T_MAX on 64-bit machines, we
-     * refuse to allocate new blocks if the current len is dangerously
-     * close.  There is some extra margin to prevent spurious arithmetic
-     * overflows at various places.  The following check ensures that
-     * the blocks allocated to the deque, in the worst case, can only
-     * have PY_SSIZE_T_MAX-2 entries in total.
-     */
-    if (len >= PY_SSIZE_T_MAX - 2*BLOCKLEN) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "cannot add more blocks to the deque");
-        return NULL;
-    }
-    if (numfreeblocks) {
-        numfreeblocks -= 1;
-        b = freeblocks[numfreeblocks];
-    } else {
-        b = PyMem_Malloc(sizeof(block));
-        if (b == NULL) {
-            PyErr_NoMemory();
-            return NULL;
-        }
-    }
-    b->leftlink = leftlink;
-    b->rightlink = rightlink;
-    return b;
-}
-
-static void
-freeblock(block *b)
-{
-    if (numfreeblocks < MAXFREEBLOCKS) {
-        freeblocks[numfreeblocks] = b;
-        numfreeblocks++;
-    } else {
-        PyMem_Free(b);
-    }
-}
-
-typedef struct {
-    PyObject_HEAD
-    block *leftblock;
-    block *rightblock;
-    Py_ssize_t leftindex;       /* in range(BLOCKLEN) */
-    Py_ssize_t rightindex;      /* in range(BLOCKLEN) */
-    Py_ssize_t len;
-    Py_ssize_t maxlen;
-    long state;         /* incremented whenever the indices move */
-    PyObject *weakreflist; /* List of weak references */
-} dequeobject;
-
-/* The deque's size limit is d.maxlen.  The limit can be zero or positive.
- * If there is no limit, then d.maxlen == -1.
- *
- * After an item is added to a deque, we check to see if the size has grown past
- * the limit. If it has, we get the size back down to the limit by popping an
- * item off of the opposite end.  The methods that can trigger this are append(),
- * appendleft(), extend(), and extendleft().
- */
-
-#define TRIM(d, popfunction)                                    \
-    if (d->maxlen != -1 && d->len > d->maxlen) {                \
-        PyObject *rv = popfunction(d, NULL);                \
-        assert(rv != NULL  &&  d->len <= d->maxlen);        \
-        Py_DECREF(rv);                                      \
-    }
-
-static PyTypeObject deque_type;
-
-static PyObject *
-deque_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    dequeobject *deque;
-    block *b;
-
-    /* create dequeobject structure */
-    deque = (dequeobject *)type->tp_alloc(type, 0);
-    if (deque == NULL)
-        return NULL;
-
-    b = newblock(NULL, NULL, 0);
-    if (b == NULL) {
-        Py_DECREF(deque);
-        return NULL;
-    }
-
-    assert(BLOCKLEN >= 2);
-    deque->leftblock = b;
-    deque->rightblock = b;
-    deque->leftindex = CENTER + 1;
-    deque->rightindex = CENTER;
-    deque->len = 0;
-    deque->state = 0;
-    deque->weakreflist = NULL;
-    deque->maxlen = -1;
-
-    return (PyObject *)deque;
-}
-
-static PyObject *
-deque_pop(dequeobject *deque, PyObject *unused)
-{
-    PyObject *item;
-    block *prevblock;
-
-    if (deque->len == 0) {
-        PyErr_SetString(PyExc_IndexError, "pop from an empty deque");
-        return NULL;
-    }
-    item = deque->rightblock->data[deque->rightindex];
-    deque->rightindex--;
-    deque->len--;
-    deque->state++;
-
-    if (deque->rightindex == -1) {
-        if (deque->len == 0) {
-            assert(deque->leftblock == deque->rightblock);
-            assert(deque->leftindex == deque->rightindex+1);
-            /* re-center instead of freeing a block */
-            deque->leftindex = CENTER + 1;
-            deque->rightindex = CENTER;
-        } else {
-            prevblock = deque->rightblock->leftlink;
-            assert(deque->leftblock != deque->rightblock);
-            freeblock(deque->rightblock);
-            prevblock->rightlink = NULL;
-            deque->rightblock = prevblock;
-            deque->rightindex = BLOCKLEN - 1;
-        }
-    }
-    return item;
-}
-
-PyDoc_STRVAR(pop_doc, "Remove and return the rightmost element.");
-
-static PyObject *
-deque_popleft(dequeobject *deque, PyObject *unused)
-{
-    PyObject *item;
-    block *prevblock;
-
-    if (deque->len == 0) {
-        PyErr_SetString(PyExc_IndexError, "pop from an empty deque");
-        return NULL;
-    }
-    assert(deque->leftblock != NULL);
-    item = deque->leftblock->data[deque->leftindex];
-    deque->leftindex++;
-    deque->len--;
-    deque->state++;
-
-    if (deque->leftindex == BLOCKLEN) {
-        if (deque->len == 0) {
-            assert(deque->leftblock == deque->rightblock);
-            assert(deque->leftindex == deque->rightindex+1);
-            /* re-center instead of freeing a block */
-            deque->leftindex = CENTER + 1;
-            deque->rightindex = CENTER;
-        } else {
-            assert(deque->leftblock != deque->rightblock);
-            prevblock = deque->leftblock->rightlink;
-            freeblock(deque->leftblock);
-            assert(prevblock != NULL);
-            prevblock->leftlink = NULL;
-            deque->leftblock = prevblock;
-            deque->leftindex = 0;
-        }
-    }
-    return item;
-}
-
-PyDoc_STRVAR(popleft_doc, "Remove and return the leftmost element.");
-
-static PyObject *
-deque_append(dequeobject *deque, PyObject *item)
-{
-    deque->state++;
-    if (deque->rightindex == BLOCKLEN-1) {
-        block *b = newblock(deque->rightblock, NULL, deque->len);
-        if (b == NULL)
-            return NULL;
-        assert(deque->rightblock->rightlink == NULL);
-        deque->rightblock->rightlink = b;
-        deque->rightblock = b;
-        deque->rightindex = -1;
-    }
-    Py_INCREF(item);
-    deque->len++;
-    deque->rightindex++;
-    deque->rightblock->data[deque->rightindex] = item;
-    TRIM(deque, deque_popleft);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(append_doc, "Add an element to the right side of the deque.");
-
-static PyObject *
-deque_appendleft(dequeobject *deque, PyObject *item)
-{
-    deque->state++;
-    if (deque->leftindex == 0) {
-        block *b = newblock(NULL, deque->leftblock, deque->len);
-        if (b == NULL)
-            return NULL;
-        assert(deque->leftblock->leftlink == NULL);
-        deque->leftblock->leftlink = b;
-        deque->leftblock = b;
-        deque->leftindex = BLOCKLEN;
-    }
-    Py_INCREF(item);
-    deque->len++;
-    deque->leftindex--;
-    deque->leftblock->data[deque->leftindex] = item;
-    TRIM(deque, deque_pop);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(appendleft_doc, "Add an element to the left side of the deque.");
-
-
-/* Run an iterator to exhaustion.  Shortcut for
-   the extend/extendleft methods when maxlen == 0. */
-static PyObject*
-consume_iterator(PyObject *it)
-{
-    PyObject *item;
-
-    while ((item = PyIter_Next(it)) != NULL) {
-        Py_DECREF(item);
-    }
-    Py_DECREF(it);
-    if (PyErr_Occurred())
-        return NULL;
-    Py_RETURN_NONE;
-}
-
-static PyObject *
-deque_extend(dequeobject *deque, PyObject *iterable)
-{
-    PyObject *it, *item;
-
-    /* Handle case where id(deque) == id(iterable) */
-    if ((PyObject *)deque == iterable) {
-        PyObject *result;
-        PyObject *s = PySequence_List(iterable);
-        if (s == NULL)
-            return NULL;
-        result = deque_extend(deque, s);
-        Py_DECREF(s);
-        return result;
-    }
-
-    it = PyObject_GetIter(iterable);
-    if (it == NULL)
-        return NULL;
-
-    if (deque->maxlen == 0)
-        return consume_iterator(it);
-
-    while ((item = PyIter_Next(it)) != NULL) {
-        deque->state++;
-        if (deque->rightindex == BLOCKLEN-1) {
-            block *b = newblock(deque->rightblock, NULL,
-                                deque->len);
-            if (b == NULL) {
-                Py_DECREF(item);
-                Py_DECREF(it);
-                return NULL;
-            }
-            assert(deque->rightblock->rightlink == NULL);
-            deque->rightblock->rightlink = b;
-            deque->rightblock = b;
-            deque->rightindex = -1;
-        }
-        deque->len++;
-        deque->rightindex++;
-        deque->rightblock->data[deque->rightindex] = item;
-        TRIM(deque, deque_popleft);
-    }
-    Py_DECREF(it);
-    if (PyErr_Occurred())
-        return NULL;
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(extend_doc,
-"Extend the right side of the deque with elements from the iterable");
-
-static PyObject *
-deque_extendleft(dequeobject *deque, PyObject *iterable)
-{
-    PyObject *it, *item;
-
-    /* Handle case where id(deque) == id(iterable) */
-    if ((PyObject *)deque == iterable) {
-        PyObject *result;
-        PyObject *s = PySequence_List(iterable);
-        if (s == NULL)
-            return NULL;
-        result = deque_extendleft(deque, s);
-        Py_DECREF(s);
-        return result;
-    }
-
-    it = PyObject_GetIter(iterable);
-    if (it == NULL)
-        return NULL;
-
-    if (deque->maxlen == 0)
-        return consume_iterator(it);
-
-    while ((item = PyIter_Next(it)) != NULL) {
-        deque->state++;
-        if (deque->leftindex == 0) {
-            block *b = newblock(NULL, deque->leftblock,
-                                deque->len);
-            if (b == NULL) {
-                Py_DECREF(item);
-                Py_DECREF(it);
-                return NULL;
-            }
-            assert(deque->leftblock->leftlink == NULL);
-            deque->leftblock->leftlink = b;
-            deque->leftblock = b;
-            deque->leftindex = BLOCKLEN;
-        }
-        deque->len++;
-        deque->leftindex--;
-        deque->leftblock->data[deque->leftindex] = item;
-        TRIM(deque, deque_pop);
-    }
-    Py_DECREF(it);
-    if (PyErr_Occurred())
-        return NULL;
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(extendleft_doc,
-"Extend the left side of the deque with elements from the iterable");
-
-static PyObject *
-deque_inplace_concat(dequeobject *deque, PyObject *other)
-{
-    PyObject *result;
-
-    result = deque_extend(deque, other);
-    if (result == NULL)
-        return result;
-    Py_DECREF(result);
-    Py_INCREF(deque);
-    return (PyObject *)deque;
-}
-
-static int
-_deque_rotate(dequeobject *deque, Py_ssize_t n)
-{
-    Py_ssize_t i, len=deque->len, halflen=(len+1)>>1;
-    PyObject *item, *rv;
-
-    if (len == 0)
-        return 0;
-    if (n > halflen || n < -halflen) {
-        n %= len;
-        if (n > halflen)
-            n -= len;
-        else if (n < -halflen)
-            n += len;
-    }
-
-    for (i=0 ; i<n ; i++) {
-        item = deque_pop(deque, NULL);
-        assert (item != NULL);
-        rv = deque_appendleft(deque, item);
-        Py_DECREF(item);
-        if (rv == NULL)
-            return -1;
-        Py_DECREF(rv);
-    }
-    for (i=0 ; i>n ; i--) {
-        item = deque_popleft(deque, NULL);
-        assert (item != NULL);
-        rv = deque_append(deque, item);
-        Py_DECREF(item);
-        if (rv == NULL)
-            return -1;
-        Py_DECREF(rv);
-    }
-    return 0;
-}
-
-static PyObject *
-deque_rotate(dequeobject *deque, PyObject *args)
-{
-    Py_ssize_t n=1;
-
-    if (!PyArg_ParseTuple(args, "|n:rotate", &n))
-        return NULL;
-    if (_deque_rotate(deque, n) == 0)
-        Py_RETURN_NONE;
-    return NULL;
-}
-
-PyDoc_STRVAR(rotate_doc,
-"Rotate the deque n steps to the right (default n=1).  If n is negative, rotates left.");
-
-static PyObject *
-deque_reverse(dequeobject *deque, PyObject *unused)
-{
-    block *leftblock = deque->leftblock;
-    block *rightblock = deque->rightblock;
-    Py_ssize_t leftindex = deque->leftindex;
-    Py_ssize_t rightindex = deque->rightindex;
-    Py_ssize_t n = (deque->len)/2;
-    Py_ssize_t i;
-    PyObject *tmp;
-
-    for (i=0 ; i<n ; i++) {
-        /* Validate that pointers haven't met in the middle */
-        assert(leftblock != rightblock || leftindex < rightindex);
-
-        /* Swap */
-        tmp = leftblock->data[leftindex];
-        leftblock->data[leftindex] = rightblock->data[rightindex];
-        rightblock->data[rightindex] = tmp;
-
-        /* Advance left block/index pair */
-        leftindex++;
-        if (leftindex == BLOCKLEN) {
-            if (leftblock->rightlink == NULL)
-                break;
-            leftblock = leftblock->rightlink;
-            leftindex = 0;
-        }
-
-        /* Step backwards with the right block/index pair */
-        rightindex--;
-        if (rightindex == -1) {
-            if (rightblock->leftlink == NULL)
-                break;
-            rightblock = rightblock->leftlink;
-            rightindex = BLOCKLEN - 1;
-        }
-    }
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(reverse_doc,
-"D.reverse() -- reverse *IN PLACE*");
-
-static PyObject *
-deque_count(dequeobject *deque, PyObject *v)
-{
-    block *leftblock = deque->leftblock;
-    Py_ssize_t leftindex = deque->leftindex;
-    Py_ssize_t n = deque->len;
-    Py_ssize_t i;
-    Py_ssize_t count = 0;
-    PyObject *item;
-    long start_state = deque->state;
-    int cmp;
-
-    for (i=0 ; i<n ; i++) {
-        item = leftblock->data[leftindex];
-        cmp = PyObject_RichCompareBool(item, v, Py_EQ);
-        if (cmp > 0)
-            count++;
-        else if (cmp < 0)
-            return NULL;
-
-        if (start_state != deque->state) {
-            PyErr_SetString(PyExc_RuntimeError,
-                            "deque mutated during iteration");
-            return NULL;
-        }
-
-        /* Advance left block/index pair */
-        leftindex++;
-        if (leftindex == BLOCKLEN) {
-            if (leftblock->rightlink == NULL)  /* can occur when i==n-1 */
-                break;
-            leftblock = leftblock->rightlink;
-            leftindex = 0;
-        }
-    }
-    return PyInt_FromSsize_t(count);
-}
-
-PyDoc_STRVAR(count_doc,
-"D.count(value) -> integer -- return number of occurrences of value");
-
-static Py_ssize_t
-deque_len(dequeobject *deque)
-{
-    return deque->len;
-}
-
-static PyObject *
-deque_remove(dequeobject *deque, PyObject *value)
-{
-    Py_ssize_t i, n=deque->len;
-
-    for (i=0 ; i<n ; i++) {
-        PyObject *item = deque->leftblock->data[deque->leftindex];
-        int cmp = PyObject_RichCompareBool(item, value, Py_EQ);
-
-        if (deque->len != n) {
-            PyErr_SetString(PyExc_IndexError,
-                "deque mutated during remove().");
-            return NULL;
-        }
-        if (cmp > 0) {
-            PyObject *tgt = deque_popleft(deque, NULL);
-            assert (tgt != NULL);
-            Py_DECREF(tgt);
-            if (_deque_rotate(deque, i) == -1)
-                return NULL;
-            Py_RETURN_NONE;
-        }
-        else if (cmp < 0) {
-            _deque_rotate(deque, i);
-            return NULL;
-        }
-        _deque_rotate(deque, -1);
-    }
-    PyErr_SetString(PyExc_ValueError, "deque.remove(x): x not in deque");
-    return NULL;
-}
-
-PyDoc_STRVAR(remove_doc,
-"D.remove(value) -- remove first occurrence of value.");
-
-static int
-deque_clear(dequeobject *deque)
-{
-    PyObject *item;
-
-    while (deque->len) {
-        item = deque_pop(deque, NULL);
-        assert (item != NULL);
-        Py_DECREF(item);
-    }
-    assert(deque->leftblock == deque->rightblock &&
-           deque->leftindex - 1 == deque->rightindex &&
-           deque->len == 0);
-    return 0;
-}
-
-static PyObject *
-deque_item(dequeobject *deque, Py_ssize_t i)
-{
-    block *b;
-    PyObject *item;
-    Py_ssize_t n, index=i;
-
-    if (i < 0 || i >= deque->len) {
-        PyErr_SetString(PyExc_IndexError,
-                        "deque index out of range");
-        return NULL;
-    }
-
-    if (i == 0) {
-        i = deque->leftindex;
-        b = deque->leftblock;
-    } else if (i == deque->len - 1) {
-        i = deque->rightindex;
-        b = deque->rightblock;
-    } else {
-        i += deque->leftindex;
-        n = i / BLOCKLEN;
-        i %= BLOCKLEN;
-        if (index < (deque->len >> 1)) {
-            b = deque->leftblock;
-            while (n--)
-                b = b->rightlink;
-        } else {
-            n = (deque->leftindex + deque->len - 1) / BLOCKLEN - n;
-            b = deque->rightblock;
-            while (n--)
-                b = b->leftlink;
-        }
-    }
-    item = b->data[i];
-    Py_INCREF(item);
-    return item;
-}
-
-/* delitem() implemented in terms of rotate for simplicity and reasonable
-   performance near the end points.  If for some reason this method becomes
-   popular, it is not hard to re-implement this using direct data movement
-   (similar to code in list slice assignment) and achieve a two or threefold
-   performance boost.
-*/
-
-static int
-deque_del_item(dequeobject *deque, Py_ssize_t i)
-{
-    PyObject *item;
-
-    assert (i >= 0 && i < deque->len);
-    if (_deque_rotate(deque, -i) == -1)
-        return -1;
-
-    item = deque_popleft(deque, NULL);
-    assert (item != NULL);
-    Py_DECREF(item);
-
-    return _deque_rotate(deque, i);
-}
-
-static int
-deque_ass_item(dequeobject *deque, Py_ssize_t i, PyObject *v)
-{
-    PyObject *old_value;
-    block *b;
-    Py_ssize_t n, len=deque->len, halflen=(len+1)>>1, index=i;
-
-    if (i < 0 || i >= len) {
-        PyErr_SetString(PyExc_IndexError,
-                        "deque index out of range");
-        return -1;
-    }
-    if (v == NULL)
-        return deque_del_item(deque, i);
-
-    i += deque->leftindex;
-    n = i / BLOCKLEN;
-    i %= BLOCKLEN;
-    if (index <= halflen) {
-        b = deque->leftblock;
-        while (n--)
-            b = b->rightlink;
-    } else {
-        n = (deque->leftindex + len - 1) / BLOCKLEN - n;
-        b = deque->rightblock;
-        while (n--)
-            b = b->leftlink;
-    }
-    Py_INCREF(v);
-    old_value = b->data[i];
-    b->data[i] = v;
-    Py_DECREF(old_value);
-    return 0;
-}
-
-static PyObject *
-deque_clearmethod(dequeobject *deque)
-{
-    int rv;
-
-    rv = deque_clear(deque);
-    assert (rv != -1);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(clear_doc, "Remove all elements from the deque.");
-
-static void
-deque_dealloc(dequeobject *deque)
-{
-    PyObject_GC_UnTrack(deque);
-    if (deque->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) deque);
-    if (deque->leftblock != NULL) {
-        deque_clear(deque);
-        assert(deque->leftblock != NULL);
-        freeblock(deque->leftblock);
-    }
-    deque->leftblock = NULL;
-    deque->rightblock = NULL;
-    Py_TYPE(deque)->tp_free(deque);
-}
-
-static int
-deque_traverse(dequeobject *deque, visitproc visit, void *arg)
-{
-    block *b;
-    PyObject *item;
-    Py_ssize_t index;
-    Py_ssize_t indexlo = deque->leftindex;
-
-    for (b = deque->leftblock; b != NULL; b = b->rightlink) {
-        const Py_ssize_t indexhi = b == deque->rightblock ?
-                                 deque->rightindex :
-                     BLOCKLEN - 1;
-
-        for (index = indexlo; index <= indexhi; ++index) {
-            item = b->data[index];
-            Py_VISIT(item);
-        }
-        indexlo = 0;
-    }
-    return 0;
-}
-
-static PyObject *
-deque_copy(PyObject *deque)
-{
-    if (((dequeobject *)deque)->maxlen == -1)
-        return PyObject_CallFunction((PyObject *)(Py_TYPE(deque)), "O", deque, NULL);
-    else
-        return PyObject_CallFunction((PyObject *)(Py_TYPE(deque)), "Oi",
-            deque, ((dequeobject *)deque)->maxlen, NULL);
-}
-
-PyDoc_STRVAR(copy_doc, "Return a shallow copy of a deque.");
-
-static PyObject *
-deque_reduce(dequeobject *deque)
-{
-    PyObject *dict, *result, *aslist;
-
-    dict = PyObject_GetAttrString((PyObject *)deque, "__dict__");
-    if (dict == NULL)
-        PyErr_Clear();
-    aslist = PySequence_List((PyObject *)deque);
-    if (aslist == NULL) {
-        Py_XDECREF(dict);
-        return NULL;
-    }
-    if (dict == NULL) {
-        if (deque->maxlen == -1)
-            result = Py_BuildValue("O(O)", Py_TYPE(deque), aslist);
-        else
-            result = Py_BuildValue("O(On)", Py_TYPE(deque), aslist, deque->maxlen);
-    } else {
-        if (deque->maxlen == -1)
-            result = Py_BuildValue("O(OO)O", Py_TYPE(deque), aslist, Py_None, dict);
-        else
-            result = Py_BuildValue("O(On)O", Py_TYPE(deque), aslist, deque->maxlen, dict);
-    }
-    Py_XDECREF(dict);
-    Py_DECREF(aslist);
-    return result;
-}
-
-PyDoc_STRVAR(reduce_doc, "Return state information for pickling.");
-
-static PyObject *
-deque_repr(PyObject *deque)
-{
-    PyObject *aslist, *result, *fmt;
-    int i;
-
-    i = Py_ReprEnter(deque);
-    if (i != 0) {
-        if (i < 0)
-            return NULL;
-        return PyString_FromString("[...]");
-    }
-
-    aslist = PySequence_List(deque);
-    if (aslist == NULL) {
-        Py_ReprLeave(deque);
-        return NULL;
-    }
-    if (((dequeobject *)deque)->maxlen != -1)
-        fmt = PyString_FromFormat("deque(%%r, maxlen=%zd)",
-                                ((dequeobject *)deque)->maxlen);
-    else
-        fmt = PyString_FromString("deque(%r)");
-    if (fmt == NULL) {
-        Py_DECREF(aslist);
-        Py_ReprLeave(deque);
-        return NULL;
-    }
-    result = PyString_Format(fmt, aslist);
-    Py_DECREF(fmt);
-    Py_DECREF(aslist);
-    Py_ReprLeave(deque);
-    return result;
-}
-
-static int
-deque_tp_print(PyObject *deque, FILE *fp, int flags)
-{
-    PyObject *it, *item;
-    char *emit = "";            /* No separator emitted on first pass */
-    char *separator = ", ";
-    int i;
-
-    i = Py_ReprEnter(deque);
-    if (i != 0) {
-        if (i < 0)
-            return i;
-        Py_BEGIN_ALLOW_THREADS
-        fputs("[...]", fp);
-        Py_END_ALLOW_THREADS
-        return 0;
-    }
-
-    it = PyObject_GetIter(deque);
-    if (it == NULL)
-        return -1;
-
-    Py_BEGIN_ALLOW_THREADS
-    fputs("deque([", fp);
-    Py_END_ALLOW_THREADS
-    while ((item = PyIter_Next(it)) != NULL) {
-        Py_BEGIN_ALLOW_THREADS
-        fputs(emit, fp);
-        Py_END_ALLOW_THREADS
-        emit = separator;
-        if (PyObject_Print(item, fp, 0) != 0) {
-            Py_DECREF(item);
-            Py_DECREF(it);
-            Py_ReprLeave(deque);
-            return -1;
-        }
-        Py_DECREF(item);
-    }
-    Py_ReprLeave(deque);
-    Py_DECREF(it);
-    if (PyErr_Occurred())
-        return -1;
-
-    Py_BEGIN_ALLOW_THREADS
-    if (((dequeobject *)deque)->maxlen == -1)
-        fputs("])", fp);
-    else
-        fprintf(fp, "], maxlen=%" PY_FORMAT_SIZE_T "d)", ((dequeobject *)deque)->maxlen);
-    Py_END_ALLOW_THREADS
-    return 0;
-}
-
-static PyObject *
-deque_richcompare(PyObject *v, PyObject *w, int op)
-{
-    PyObject *it1=NULL, *it2=NULL, *x, *y;
-    Py_ssize_t vs, ws;
-    int b, cmp=-1;
-
-    if (!PyObject_TypeCheck(v, &deque_type) ||
-        !PyObject_TypeCheck(w, &deque_type)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-
-    /* Shortcuts */
-    vs = ((dequeobject *)v)->len;
-    ws = ((dequeobject *)w)->len;
-    if (op == Py_EQ) {
-        if (v == w)
-            Py_RETURN_TRUE;
-        if (vs != ws)
-            Py_RETURN_FALSE;
-    }
-    if (op == Py_NE) {
-        if (v == w)
-            Py_RETURN_FALSE;
-        if (vs != ws)
-            Py_RETURN_TRUE;
-    }
-
-    /* Search for the first index where items are different */
-    it1 = PyObject_GetIter(v);
-    if (it1 == NULL)
-        goto done;
-    it2 = PyObject_GetIter(w);
-    if (it2 == NULL)
-        goto done;
-    for (;;) {
-        x = PyIter_Next(it1);
-        if (x == NULL && PyErr_Occurred())
-            goto done;
-        y = PyIter_Next(it2);
-        if (x == NULL || y == NULL)
-            break;
-        b = PyObject_RichCompareBool(x, y, Py_EQ);
-        if (b == 0) {
-            cmp = PyObject_RichCompareBool(x, y, op);
-            Py_DECREF(x);
-            Py_DECREF(y);
-            goto done;
-        }
-        Py_DECREF(x);
-        Py_DECREF(y);
-        if (b == -1)
-            goto done;
-    }
-    /* We reached the end of one deque or both */
-    Py_XDECREF(x);
-    Py_XDECREF(y);
-    if (PyErr_Occurred())
-        goto done;
-    switch (op) {
-    case Py_LT: cmp = y != NULL; break;  /* if w was longer */
-    case Py_LE: cmp = x == NULL; break;  /* if v was not longer */
-    case Py_EQ: cmp = x == y;    break;  /* if we reached the end of both */
-    case Py_NE: cmp = x != y;    break;  /* if one deque continues */
-    case Py_GT: cmp = x != NULL; break;  /* if v was longer */
-    case Py_GE: cmp = y == NULL; break;  /* if w was not longer */
-    }
-
-done:
-    Py_XDECREF(it1);
-    Py_XDECREF(it2);
-    if (cmp == 1)
-        Py_RETURN_TRUE;
-    if (cmp == 0)
-        Py_RETURN_FALSE;
-    return NULL;
-}
-
-static int
-deque_init(dequeobject *deque, PyObject *args, PyObject *kwdargs)
-{
-    PyObject *iterable = NULL;
-    PyObject *maxlenobj = NULL;
-    Py_ssize_t maxlen = -1;
-    char *kwlist[] = {"iterable", "maxlen", 0};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwdargs, "|OO:deque", kwlist, &iterable, &maxlenobj))
-        return -1;
-    if (maxlenobj != NULL && maxlenobj != Py_None) {
-        maxlen = PyInt_AsSsize_t(maxlenobj);
-        if (maxlen == -1 && PyErr_Occurred())
-            return -1;
-        if (maxlen < 0) {
-            PyErr_SetString(PyExc_ValueError, "maxlen must be non-negative");
-            return -1;
-        }
-    }
-    deque->maxlen = maxlen;
-    deque_clear(deque);
-    if (iterable != NULL) {
-        PyObject *rv = deque_extend(deque, iterable);
-        if (rv == NULL)
-            return -1;
-        Py_DECREF(rv);
-    }
-    return 0;
-}
-
-static PyObject *
-deque_get_maxlen(dequeobject *deque)
-{
-    if (deque->maxlen == -1)
-        Py_RETURN_NONE;
-    return PyInt_FromSsize_t(deque->maxlen);
-}
-
-static PyGetSetDef deque_getset[] = {
-    {"maxlen", (getter)deque_get_maxlen, (setter)NULL,
-     "maximum size of a deque or None if unbounded"},
-    {0}
-};
-
-static PySequenceMethods deque_as_sequence = {
-    (lenfunc)deque_len,                 /* sq_length */
-    0,                                  /* sq_concat */
-    0,                                  /* sq_repeat */
-    (ssizeargfunc)deque_item,           /* sq_item */
-    0,                                  /* sq_slice */
-    (ssizeobjargproc)deque_ass_item,            /* sq_ass_item */
-    0,                                  /* sq_ass_slice */
-    0,                                  /* sq_contains */
-    (binaryfunc)deque_inplace_concat,           /* sq_inplace_concat */
-    0,                                  /* sq_inplace_repeat */
-
-};
-
-/* deque object ********************************************************/
-
-static PyObject *deque_iter(dequeobject *deque);
-static PyObject *deque_reviter(dequeobject *deque);
-PyDoc_STRVAR(reversed_doc,
-    "D.__reversed__() -- return a reverse iterator over the deque");
-
-static PyMethodDef deque_methods[] = {
-    {"append",                  (PyCFunction)deque_append,
-        METH_O,                  append_doc},
-    {"appendleft",              (PyCFunction)deque_appendleft,
-        METH_O,                  appendleft_doc},
-    {"clear",                   (PyCFunction)deque_clearmethod,
-        METH_NOARGS,             clear_doc},
-    {"__copy__",                (PyCFunction)deque_copy,
-        METH_NOARGS,             copy_doc},
-    {"count",                   (PyCFunction)deque_count,
-        METH_O,                         count_doc},
-    {"extend",                  (PyCFunction)deque_extend,
-        METH_O,                  extend_doc},
-    {"extendleft",              (PyCFunction)deque_extendleft,
-        METH_O,                  extendleft_doc},
-    {"pop",                     (PyCFunction)deque_pop,
-        METH_NOARGS,             pop_doc},
-    {"popleft",                 (PyCFunction)deque_popleft,
-        METH_NOARGS,             popleft_doc},
-    {"__reduce__",      (PyCFunction)deque_reduce,
-        METH_NOARGS,             reduce_doc},
-    {"remove",                  (PyCFunction)deque_remove,
-        METH_O,                  remove_doc},
-    {"__reversed__",            (PyCFunction)deque_reviter,
-        METH_NOARGS,             reversed_doc},
-    {"reverse",                 (PyCFunction)deque_reverse,
-        METH_NOARGS,             reverse_doc},
-    {"rotate",                  (PyCFunction)deque_rotate,
-        METH_VARARGS,           rotate_doc},
-    {NULL,              NULL}   /* sentinel */
-};
-
-PyDoc_STRVAR(deque_doc,
-"deque(iterable[, maxlen]) --> deque object\n\
-\n\
-Build an ordered collection with optimized access from its endpoints.");
-
-static PyTypeObject deque_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "collections.deque",                /* tp_name */
-    sizeof(dequeobject),                /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)deque_dealloc,          /* tp_dealloc */
-    deque_tp_print,                     /* tp_print */
-    0,                                  /* tp_getattr */
-    0,                                  /* tp_setattr */
-    0,                                  /* tp_compare */
-    deque_repr,                         /* tp_repr */
-    0,                                  /* tp_as_number */
-    &deque_as_sequence,                 /* tp_as_sequence */
-    0,                                  /* tp_as_mapping */
-    (hashfunc)PyObject_HashNotImplemented,      /* tp_hash */
-    0,                                  /* tp_call */
-    0,                                  /* tp_str */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_HAVE_WEAKREFS,               /* tp_flags */
-    deque_doc,                          /* tp_doc */
-    (traverseproc)deque_traverse,       /* tp_traverse */
-    (inquiry)deque_clear,               /* tp_clear */
-    (richcmpfunc)deque_richcompare,     /* tp_richcompare */
-    offsetof(dequeobject, weakreflist),         /* tp_weaklistoffset*/
-    (getiterfunc)deque_iter,            /* tp_iter */
-    0,                                  /* tp_iternext */
-    deque_methods,                      /* tp_methods */
-    0,                                  /* tp_members */
-    deque_getset,       /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    (initproc)deque_init,               /* tp_init */
-    PyType_GenericAlloc,                /* tp_alloc */
-    deque_new,                          /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-/*********************** Deque Iterator **************************/
-
-typedef struct {
-    PyObject_HEAD
-    Py_ssize_t index;
-    block *b;
-    dequeobject *deque;
-    long state;         /* state when the iterator is created */
-    Py_ssize_t counter;    /* number of items remaining for iteration */
-} dequeiterobject;
-
-static PyTypeObject dequeiter_type;
-
-static PyObject *
-deque_iter(dequeobject *deque)
-{
-    dequeiterobject *it;
-
-    it = PyObject_GC_New(dequeiterobject, &dequeiter_type);
-    if (it == NULL)
-        return NULL;
-    it->b = deque->leftblock;
-    it->index = deque->leftindex;
-    Py_INCREF(deque);
-    it->deque = deque;
-    it->state = deque->state;
-    it->counter = deque->len;
-    PyObject_GC_Track(it);
-    return (PyObject *)it;
-}
-
-static int
-dequeiter_traverse(dequeiterobject *dio, visitproc visit, void *arg)
-{
-    Py_VISIT(dio->deque);
-    return 0;
-}
-
-static void
-dequeiter_dealloc(dequeiterobject *dio)
-{
-    Py_XDECREF(dio->deque);
-    PyObject_GC_Del(dio);
-}
-
-static PyObject *
-dequeiter_next(dequeiterobject *it)
-{
-    PyObject *item;
-
-    if (it->deque->state != it->state) {
-        it->counter = 0;
-        PyErr_SetString(PyExc_RuntimeError,
-                        "deque mutated during iteration");
-        return NULL;
-    }
-    if (it->counter == 0)
-        return NULL;
-    assert (!(it->b == it->deque->rightblock &&
-              it->index > it->deque->rightindex));
-
-    item = it->b->data[it->index];
-    it->index++;
-    it->counter--;
-    if (it->index == BLOCKLEN && it->counter > 0) {
-        assert (it->b->rightlink != NULL);
-        it->b = it->b->rightlink;
-        it->index = 0;
-    }
-    Py_INCREF(item);
-    return item;
-}
-
-static PyObject *
-dequeiter_len(dequeiterobject *it)
-{
-    return PyInt_FromLong(it->counter);
-}
-
-PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
-
-static PyMethodDef dequeiter_methods[] = {
-    {"__length_hint__", (PyCFunction)dequeiter_len, METH_NOARGS, length_hint_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyTypeObject dequeiter_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "deque_iterator",                           /* tp_name */
-    sizeof(dequeiterobject),                    /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)dequeiter_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)dequeiter_traverse,           /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    PyObject_SelfIter,                          /* tp_iter */
-    (iternextfunc)dequeiter_next,               /* tp_iternext */
-    dequeiter_methods,                          /* tp_methods */
-    0,
-};
-
-/*********************** Deque Reverse Iterator **************************/
-
-static PyTypeObject dequereviter_type;
-
-static PyObject *
-deque_reviter(dequeobject *deque)
-{
-    dequeiterobject *it;
-
-    it = PyObject_GC_New(dequeiterobject, &dequereviter_type);
-    if (it == NULL)
-        return NULL;
-    it->b = deque->rightblock;
-    it->index = deque->rightindex;
-    Py_INCREF(deque);
-    it->deque = deque;
-    it->state = deque->state;
-    it->counter = deque->len;
-    PyObject_GC_Track(it);
-    return (PyObject *)it;
-}
-
-static PyObject *
-dequereviter_next(dequeiterobject *it)
-{
-    PyObject *item;
-    if (it->counter == 0)
-        return NULL;
-
-    if (it->deque->state != it->state) {
-        it->counter = 0;
-        PyErr_SetString(PyExc_RuntimeError,
-                        "deque mutated during iteration");
-        return NULL;
-    }
-    assert (!(it->b == it->deque->leftblock &&
-              it->index < it->deque->leftindex));
-
-    item = it->b->data[it->index];
-    it->index--;
-    it->counter--;
-    if (it->index == -1 && it->counter > 0) {
-        assert (it->b->leftlink != NULL);
-        it->b = it->b->leftlink;
-        it->index = BLOCKLEN - 1;
-    }
-    Py_INCREF(item);
-    return item;
-}
-
-static PyTypeObject dequereviter_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "deque_reverse_iterator",                   /* tp_name */
-    sizeof(dequeiterobject),                    /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)dequeiter_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)dequeiter_traverse,           /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    PyObject_SelfIter,                          /* tp_iter */
-    (iternextfunc)dequereviter_next,            /* tp_iternext */
-    dequeiter_methods,                          /* tp_methods */
-    0,
-};
-
-/* defaultdict type *********************************************************/
-
-typedef struct {
-    PyDictObject dict;
-    PyObject *default_factory;
-} defdictobject;
-
-static PyTypeObject defdict_type; /* Forward */
-
-PyDoc_STRVAR(defdict_missing_doc,
-"__missing__(key) # Called by __getitem__ for missing key; pseudo-code:\n\
-  if self.default_factory is None: raise KeyError((key,))\n\
-  self[key] = value = self.default_factory()\n\
-  return value\n\
-");
-
-static PyObject *
-defdict_missing(defdictobject *dd, PyObject *key)
-{
-    PyObject *factory = dd->default_factory;
-    PyObject *value;
-    if (factory == NULL || factory == Py_None) {
-        /* XXX Call dict.__missing__(key) */
-        PyObject *tup;
-        tup = PyTuple_Pack(1, key);
-        if (!tup) return NULL;
-        PyErr_SetObject(PyExc_KeyError, tup);
-        Py_DECREF(tup);
-        return NULL;
-    }
-    value = PyEval_CallObject(factory, NULL);
-    if (value == NULL)
-        return value;
-    if (PyObject_SetItem((PyObject *)dd, key, value) < 0) {
-        Py_DECREF(value);
-        return NULL;
-    }
-    return value;
-}
-
-PyDoc_STRVAR(defdict_copy_doc, "D.copy() -> a shallow copy of D.");
-
-static PyObject *
-defdict_copy(defdictobject *dd)
-{
-    /* This calls the object's class.  That only works for subclasses
-       whose class constructor has the same signature.  Subclasses that
-       define a different constructor signature must override copy().
-    */
-
-    if (dd->default_factory == NULL)
-        return PyObject_CallFunctionObjArgs((PyObject*)Py_TYPE(dd), Py_None, dd, NULL);
-    return PyObject_CallFunctionObjArgs((PyObject*)Py_TYPE(dd),
-                                        dd->default_factory, dd, NULL);
-}
-
-static PyObject *
-defdict_reduce(defdictobject *dd)
-{
-    /* __reduce__ must return a 5-tuple as follows:
-
-       - factory function
-       - tuple of args for the factory function
-       - additional state (here None)
-       - sequence iterator (here None)
-       - dictionary iterator (yielding successive (key, value) pairs
-
-       This API is used by pickle.py and copy.py.
-
-       For this to be useful with pickle.py, the default_factory
-       must be picklable; e.g., None, a built-in, or a global
-       function in a module or package.
-
-       Both shallow and deep copying are supported, but for deep
-       copying, the default_factory must be deep-copyable; e.g. None,
-       or a built-in (functions are not copyable at this time).
-
-       This only works for subclasses as long as their constructor
-       signature is compatible; the first argument must be the
-       optional default_factory, defaulting to None.
-    */
-    PyObject *args;
-    PyObject *items;
-    PyObject *result;
-    if (dd->default_factory == NULL || dd->default_factory == Py_None)
-        args = PyTuple_New(0);
-    else
-        args = PyTuple_Pack(1, dd->default_factory);
-    if (args == NULL)
-        return NULL;
-    items = PyObject_CallMethod((PyObject *)dd, "iteritems", "()");
-    if (items == NULL) {
-        Py_DECREF(args);
-        return NULL;
-    }
-    result = PyTuple_Pack(5, Py_TYPE(dd), args,
-                          Py_None, Py_None, items);
-    Py_DECREF(items);
-    Py_DECREF(args);
-    return result;
-}
-
-static PyMethodDef defdict_methods[] = {
-    {"__missing__", (PyCFunction)defdict_missing, METH_O,
-     defdict_missing_doc},
-    {"copy", (PyCFunction)defdict_copy, METH_NOARGS,
-     defdict_copy_doc},
-    {"__copy__", (PyCFunction)defdict_copy, METH_NOARGS,
-     defdict_copy_doc},
-    {"__reduce__", (PyCFunction)defdict_reduce, METH_NOARGS,
-     reduce_doc},
-    {NULL}
-};
-
-static PyMemberDef defdict_members[] = {
-    {"default_factory", T_OBJECT,
-     offsetof(defdictobject, default_factory), 0,
-     PyDoc_STR("Factory for default value called by __missing__().")},
-    {NULL}
-};
-
-static void
-defdict_dealloc(defdictobject *dd)
-{
-    Py_CLEAR(dd->default_factory);
-    PyDict_Type.tp_dealloc((PyObject *)dd);
-}
-
-static int
-defdict_print(defdictobject *dd, FILE *fp, int flags)
-{
-    int sts;
-    Py_BEGIN_ALLOW_THREADS
-    fprintf(fp, "defaultdict(");
-    Py_END_ALLOW_THREADS
-    if (dd->default_factory == NULL) {
-        Py_BEGIN_ALLOW_THREADS
-        fprintf(fp, "None");
-        Py_END_ALLOW_THREADS
-    } else {
-        PyObject_Print(dd->default_factory, fp, 0);
-    }
-    Py_BEGIN_ALLOW_THREADS
-    fprintf(fp, ", ");
-    Py_END_ALLOW_THREADS
-    sts = PyDict_Type.tp_print((PyObject *)dd, fp, 0);
-    Py_BEGIN_ALLOW_THREADS
-    fprintf(fp, ")");
-    Py_END_ALLOW_THREADS
-    return sts;
-}
-
-static PyObject *
-defdict_repr(defdictobject *dd)
-{
-    PyObject *defrepr;
-    PyObject *baserepr;
-    PyObject *result;
-    baserepr = PyDict_Type.tp_repr((PyObject *)dd);
-    if (baserepr == NULL)
-        return NULL;
-    if (dd->default_factory == NULL)
-        defrepr = PyString_FromString("None");
-    else
-    {
-        int status = Py_ReprEnter(dd->default_factory);
-        if (status != 0) {
-            if (status < 0)
-                return NULL;
-            defrepr = PyString_FromString("...");
-        }
-        else
-            defrepr = PyObject_Repr(dd->default_factory);
-        Py_ReprLeave(dd->default_factory);
-    }
-    if (defrepr == NULL) {
-        Py_DECREF(baserepr);
-        return NULL;
-    }
-    result = PyString_FromFormat("defaultdict(%s, %s)",
-                                 PyString_AS_STRING(defrepr),
-                                 PyString_AS_STRING(baserepr));
-    Py_DECREF(defrepr);
-    Py_DECREF(baserepr);
-    return result;
-}
-
-static int
-defdict_traverse(PyObject *self, visitproc visit, void *arg)
-{
-    Py_VISIT(((defdictobject *)self)->default_factory);
-    return PyDict_Type.tp_traverse(self, visit, arg);
-}
-
-static int
-defdict_tp_clear(defdictobject *dd)
-{
-    Py_CLEAR(dd->default_factory);
-    return PyDict_Type.tp_clear((PyObject *)dd);
-}
-
-static int
-defdict_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    defdictobject *dd = (defdictobject *)self;
-    PyObject *olddefault = dd->default_factory;
-    PyObject *newdefault = NULL;
-    PyObject *newargs;
-    int result;
-    if (args == NULL || !PyTuple_Check(args))
-        newargs = PyTuple_New(0);
-    else {
-        Py_ssize_t n = PyTuple_GET_SIZE(args);
-        if (n > 0) {
-            newdefault = PyTuple_GET_ITEM(args, 0);
-            if (!PyCallable_Check(newdefault) && newdefault != Py_None) {
-                PyErr_SetString(PyExc_TypeError,
-                    "first argument must be callable");
-                return -1;
-            }
-        }
-        newargs = PySequence_GetSlice(args, 1, n);
-    }
-    if (newargs == NULL)
-        return -1;
-    Py_XINCREF(newdefault);
-    dd->default_factory = newdefault;
-    result = PyDict_Type.tp_init(self, newargs, kwds);
-    Py_DECREF(newargs);
-    Py_XDECREF(olddefault);
-    return result;
-}
-
-PyDoc_STRVAR(defdict_doc,
-"defaultdict(default_factory) --> dict with default factory\n\
-\n\
-The default factory is called without arguments to produce\n\
-a new value when a key is not present, in __getitem__ only.\n\
-A defaultdict compares equal to a dict with the same items.\n\
-");
-
-/* See comment in xxsubtype.c */
-#define DEFERRED_ADDRESS(ADDR) 0
-
-static PyTypeObject defdict_type = {
-    PyVarObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type), 0)
-    "collections.defaultdict",          /* tp_name */
-    sizeof(defdictobject),              /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)defdict_dealloc,        /* tp_dealloc */
-    (printfunc)defdict_print,           /* tp_print */
-    0,                                  /* tp_getattr */
-    0,                                  /* tp_setattr */
-    0,                                  /* tp_compare */
-    (reprfunc)defdict_repr,             /* tp_repr */
-    0,                                  /* tp_as_number */
-    0,                                  /* tp_as_sequence */
-    0,                                  /* tp_as_mapping */
-    0,                                  /* tp_hash */
-    0,                                  /* tp_call */
-    0,                                  /* tp_str */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_HAVE_WEAKREFS,               /* tp_flags */
-    defdict_doc,                        /* tp_doc */
-    defdict_traverse,                   /* tp_traverse */
-    (inquiry)defdict_tp_clear,          /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset*/
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iternext */
-    defdict_methods,                    /* tp_methods */
-    defdict_members,                    /* tp_members */
-    0,                                  /* tp_getset */
-    DEFERRED_ADDRESS(&PyDict_Type),     /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    defdict_init,                       /* tp_init */
-    PyType_GenericAlloc,                /* tp_alloc */
-    0,                                  /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-/* module level code ********************************************************/
-
-PyDoc_STRVAR(module_doc,
-"High performance data structures.\n\
-- deque:        ordered collection accessible from endpoints only\n\
-- defaultdict:  dict subclass with a default value factory\n\
-");
-
-PyMODINIT_FUNC
-init_collections(void)
-{
-    PyObject *m;
-
-    m = Py_InitModule3("_collections", NULL, module_doc);
-    if (m == NULL)
-        return;
-
-    if (PyType_Ready(&deque_type) < 0)
-        return;
-    Py_INCREF(&deque_type);
-    PyModule_AddObject(m, "deque", (PyObject *)&deque_type);
-
-    defdict_type.tp_base = &PyDict_Type;
-    if (PyType_Ready(&defdict_type) < 0)
-        return;
-    Py_INCREF(&defdict_type);
-    PyModule_AddObject(m, "defaultdict", (PyObject *)&defdict_type);
-
-    if (PyType_Ready(&dequeiter_type) < 0)
-        return;
-
-    if (PyType_Ready(&dequereviter_type) < 0)
-        return;
-
-    return;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_csv.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_csv.c
deleted file mode 100644
index fc9e454..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_csv.c
+++ /dev/null
@@ -1,1611 +0,0 @@
-/* csv module */
-
-/*
-
-This module provides the low-level underpinnings of a CSV reading/writing
-module.  Users should not use this module directly, but import the csv.py
-module instead.
-
-**** For people modifying this code, please note that as of this writing
-**** (2003-03-23), it is intended that this code should work with Python
-**** 2.2.
-
-*/
-
-#define MODULE_VERSION "1.0"
-
-#include "Python.h"
-#include "structmember.h"
-
-
-/* begin 2.2 compatibility macros */
-#ifndef PyDoc_STRVAR
-/* Define macros for inline documentation. */
-#define PyDoc_VAR(name) static char name[]
-#define PyDoc_STRVAR(name,str) PyDoc_VAR(name) = PyDoc_STR(str)
-#ifdef WITH_DOC_STRINGS
-#define PyDoc_STR(str) str
-#else
-#define PyDoc_STR(str) ""
-#endif
-#endif /* ifndef PyDoc_STRVAR */
-
-#ifndef PyMODINIT_FUNC
-#       if defined(__cplusplus)
-#               define PyMODINIT_FUNC extern "C" void
-#       else /* __cplusplus */
-#               define PyMODINIT_FUNC void
-#       endif /* __cplusplus */
-#endif
-
-#ifndef Py_CLEAR
-#define Py_CLEAR(op)                                            \
-    do {                                                        \
-        if (op) {                                               \
-            PyObject *tmp = (PyObject *)(op);                   \
-            (op) = NULL;                                        \
-            Py_DECREF(tmp);                                     \
-        }                                                       \
-    } while (0)
-#endif
-#ifndef Py_VISIT
-#define Py_VISIT(op)                                                    \
-    do {                                                                \
-        if (op) {                                                       \
-            int vret = visit((PyObject *)(op), arg);                    \
-            if (vret)                                                   \
-                return vret;                                            \
-        }                                                               \
-    } while (0)
-#endif
-
-/* end 2.2 compatibility macros */
-
-#define IS_BASESTRING(o) \
-    PyObject_TypeCheck(o, &PyBaseString_Type)
-
-static PyObject *error_obj;     /* CSV exception */
-static PyObject *dialects;      /* Dialect registry */
-static long field_limit = 128 * 1024;   /* max parsed field size */
-
-typedef enum {
-    START_RECORD, START_FIELD, ESCAPED_CHAR, IN_FIELD,
-    IN_QUOTED_FIELD, ESCAPE_IN_QUOTED_FIELD, QUOTE_IN_QUOTED_FIELD,
-    EAT_CRNL
-} ParserState;
-
-typedef enum {
-    QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE
-} QuoteStyle;
-
-typedef struct {
-    QuoteStyle style;
-    char *name;
-} StyleDesc;
-
-static StyleDesc quote_styles[] = {
-    { QUOTE_MINIMAL,    "QUOTE_MINIMAL" },
-    { QUOTE_ALL,        "QUOTE_ALL" },
-    { QUOTE_NONNUMERIC, "QUOTE_NONNUMERIC" },
-    { QUOTE_NONE,       "QUOTE_NONE" },
-    { 0 }
-};
-
-typedef struct {
-    PyObject_HEAD
-
-    int doublequote;            /* is " represented by ""? */
-    char delimiter;             /* field separator */
-    char quotechar;             /* quote character */
-    char escapechar;            /* escape character */
-    int skipinitialspace;       /* ignore spaces following delimiter? */
-    PyObject *lineterminator; /* string to write between records */
-    int quoting;                /* style of quoting to write */
-
-    int strict;                 /* raise exception on bad CSV */
-} DialectObj;
-
-staticforward PyTypeObject Dialect_Type;
-
-typedef struct {
-    PyObject_HEAD
-
-    PyObject *input_iter;   /* iterate over this for input lines */
-
-    DialectObj *dialect;    /* parsing dialect */
-
-    PyObject *fields;           /* field list for current record */
-    ParserState state;          /* current CSV parse state */
-    char *field;                /* build current field in here */
-    int field_size;             /* size of allocated buffer */
-    int field_len;              /* length of current field */
-    int numeric_field;          /* treat field as numeric */
-    unsigned long line_num;     /* Source-file line number */
-} ReaderObj;
-
-staticforward PyTypeObject Reader_Type;
-
-#define ReaderObject_Check(v)   (Py_TYPE(v) == &Reader_Type)
-
-typedef struct {
-    PyObject_HEAD
-
-    PyObject *writeline;    /* write output lines to this file */
-
-    DialectObj *dialect;    /* parsing dialect */
-
-    char *rec;                  /* buffer for parser.join */
-    int rec_size;               /* size of allocated record */
-    int rec_len;                /* length of record */
-    int num_fields;             /* number of fields in record */
-} WriterObj;
-
-staticforward PyTypeObject Writer_Type;
-
-/*
- * DIALECT class
- */
-
-static PyObject *
-get_dialect_from_registry(PyObject * name_obj)
-{
-    PyObject *dialect_obj;
-
-    dialect_obj = PyDict_GetItem(dialects, name_obj);
-    if (dialect_obj == NULL) {
-        if (!PyErr_Occurred())
-            PyErr_Format(error_obj, "unknown dialect");
-    }
-    else
-        Py_INCREF(dialect_obj);
-    return dialect_obj;
-}
-
-static PyObject *
-get_string(PyObject *str)
-{
-    Py_XINCREF(str);
-    return str;
-}
-
-static PyObject *
-get_nullchar_as_None(char c)
-{
-    if (c == '\0') {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    else
-        return PyString_FromStringAndSize((char*)&c, 1);
-}
-
-static PyObject *
-Dialect_get_lineterminator(DialectObj *self)
-{
-    return get_string(self->lineterminator);
-}
-
-static PyObject *
-Dialect_get_escapechar(DialectObj *self)
-{
-    return get_nullchar_as_None(self->escapechar);
-}
-
-static PyObject *
-Dialect_get_quotechar(DialectObj *self)
-{
-    return get_nullchar_as_None(self->quotechar);
-}
-
-static PyObject *
-Dialect_get_quoting(DialectObj *self)
-{
-    return PyInt_FromLong(self->quoting);
-}
-
-static int
-_set_bool(const char *name, int *target, PyObject *src, int dflt)
-{
-    if (src == NULL)
-        *target = dflt;
-    else
-        *target = PyObject_IsTrue(src);
-    return 0;
-}
-
-static int
-_set_int(const char *name, int *target, PyObject *src, int dflt)
-{
-    if (src == NULL)
-        *target = dflt;
-    else {
-        if (!PyInt_Check(src)) {
-            PyErr_Format(PyExc_TypeError,
-                         "\"%s\" must be an integer", name);
-            return -1;
-        }
-        *target = PyInt_AsLong(src);
-    }
-    return 0;
-}
-
-static int
-_set_char(const char *name, char *target, PyObject *src, char dflt)
-{
-    if (src == NULL)
-        *target = dflt;
-    else {
-        if (src == Py_None || PyString_Size(src) == 0)
-            *target = '\0';
-        else if (!PyString_Check(src) || PyString_Size(src) != 1) {
-            PyErr_Format(PyExc_TypeError,
-                         "\"%s\" must be an 1-character string",
-                         name);
-            return -1;
-        }
-        else {
-            char *s = PyString_AsString(src);
-            if (s == NULL)
-                return -1;
-            *target = s[0];
-        }
-    }
-    return 0;
-}
-
-static int
-_set_str(const char *name, PyObject **target, PyObject *src, const char *dflt)
-{
-    if (src == NULL)
-        *target = PyString_FromString(dflt);
-    else {
-        if (src == Py_None)
-            *target = NULL;
-        else if (!IS_BASESTRING(src)) {
-            PyErr_Format(PyExc_TypeError,
-                         "\"%s\" must be an string", name);
-            return -1;
-        }
-        else {
-            Py_XDECREF(*target);
-            Py_INCREF(src);
-            *target = src;
-        }
-    }
-    return 0;
-}
-
-static int
-dialect_check_quoting(int quoting)
-{
-    StyleDesc *qs = quote_styles;
-
-    for (qs = quote_styles; qs->name; qs++) {
-        if (qs->style == quoting)
-            return 0;
-    }
-    PyErr_Format(PyExc_TypeError, "bad \"quoting\" value");
-    return -1;
-}
-
-#define D_OFF(x) offsetof(DialectObj, x)
-
-static struct PyMemberDef Dialect_memberlist[] = {
-    { "delimiter",          T_CHAR, D_OFF(delimiter), READONLY },
-    { "skipinitialspace",   T_INT, D_OFF(skipinitialspace), READONLY },
-    { "doublequote",        T_INT, D_OFF(doublequote), READONLY },
-    { "strict",             T_INT, D_OFF(strict), READONLY },
-    { NULL }
-};
-
-static PyGetSetDef Dialect_getsetlist[] = {
-    { "escapechar",             (getter)Dialect_get_escapechar},
-    { "lineterminator",         (getter)Dialect_get_lineterminator},
-    { "quotechar",              (getter)Dialect_get_quotechar},
-    { "quoting",                (getter)Dialect_get_quoting},
-    {NULL},
-};
-
-static void
-Dialect_dealloc(DialectObj *self)
-{
-    Py_XDECREF(self->lineterminator);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-static char *dialect_kws[] = {
-    "dialect",
-    "delimiter",
-    "doublequote",
-    "escapechar",
-    "lineterminator",
-    "quotechar",
-    "quoting",
-    "skipinitialspace",
-    "strict",
-    NULL
-};
-
-static PyObject *
-dialect_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
-{
-    DialectObj *self;
-    PyObject *ret = NULL;
-    PyObject *dialect = NULL;
-    PyObject *delimiter = NULL;
-    PyObject *doublequote = NULL;
-    PyObject *escapechar = NULL;
-    PyObject *lineterminator = NULL;
-    PyObject *quotechar = NULL;
-    PyObject *quoting = NULL;
-    PyObject *skipinitialspace = NULL;
-    PyObject *strict = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "|OOOOOOOOO", dialect_kws,
-                                     &dialect,
-                                     &delimiter,
-                                     &doublequote,
-                                     &escapechar,
-                                     &lineterminator,
-                                     &quotechar,
-                                     &quoting,
-                                     &skipinitialspace,
-                                     &strict))
-        return NULL;
-
-    if (dialect != NULL) {
-        if (IS_BASESTRING(dialect)) {
-            dialect = get_dialect_from_registry(dialect);
-            if (dialect == NULL)
-                return NULL;
-        }
-        else
-            Py_INCREF(dialect);
-        /* Can we reuse this instance? */
-        if (PyObject_TypeCheck(dialect, &Dialect_Type) &&
-            delimiter == 0 &&
-            doublequote == 0 &&
-            escapechar == 0 &&
-            lineterminator == 0 &&
-            quotechar == 0 &&
-            quoting == 0 &&
-            skipinitialspace == 0 &&
-            strict == 0)
-            return dialect;
-    }
-
-    self = (DialectObj *)type->tp_alloc(type, 0);
-    if (self == NULL) {
-        Py_XDECREF(dialect);
-        return NULL;
-    }
-    self->lineterminator = NULL;
-
-    Py_XINCREF(delimiter);
-    Py_XINCREF(doublequote);
-    Py_XINCREF(escapechar);
-    Py_XINCREF(lineterminator);
-    Py_XINCREF(quotechar);
-    Py_XINCREF(quoting);
-    Py_XINCREF(skipinitialspace);
-    Py_XINCREF(strict);
-    if (dialect != NULL) {
-#define DIALECT_GETATTR(v, n) \
-        if (v == NULL) \
-            v = PyObject_GetAttrString(dialect, n)
-        DIALECT_GETATTR(delimiter, "delimiter");
-        DIALECT_GETATTR(doublequote, "doublequote");
-        DIALECT_GETATTR(escapechar, "escapechar");
-        DIALECT_GETATTR(lineterminator, "lineterminator");
-        DIALECT_GETATTR(quotechar, "quotechar");
-        DIALECT_GETATTR(quoting, "quoting");
-        DIALECT_GETATTR(skipinitialspace, "skipinitialspace");
-        DIALECT_GETATTR(strict, "strict");
-        PyErr_Clear();
-    }
-
-    /* check types and convert to C values */
-#define DIASET(meth, name, target, src, dflt) \
-    if (meth(name, target, src, dflt)) \
-        goto err
-    DIASET(_set_char, "delimiter", &self->delimiter, delimiter, ',');
-    DIASET(_set_bool, "doublequote", &self->doublequote, doublequote, 1);
-    DIASET(_set_char, "escapechar", &self->escapechar, escapechar, 0);
-    DIASET(_set_str, "lineterminator", &self->lineterminator, lineterminator, "\r\n");
-    DIASET(_set_char, "quotechar", &self->quotechar, quotechar, '"');
-    DIASET(_set_int, "quoting", &self->quoting, quoting, QUOTE_MINIMAL);
-    DIASET(_set_bool, "skipinitialspace", &self->skipinitialspace, skipinitialspace, 0);
-    DIASET(_set_bool, "strict", &self->strict, strict, 0);
-
-    /* validate options */
-    if (dialect_check_quoting(self->quoting))
-        goto err;
-    if (self->delimiter == 0) {
-        PyErr_SetString(PyExc_TypeError, "delimiter must be set");
-        goto err;
-    }
-    if (quotechar == Py_None && quoting == NULL)
-        self->quoting = QUOTE_NONE;
-    if (self->quoting != QUOTE_NONE && self->quotechar == 0) {
-        PyErr_SetString(PyExc_TypeError,
-                        "quotechar must be set if quoting enabled");
-        goto err;
-    }
-    if (self->lineterminator == 0) {
-        PyErr_SetString(PyExc_TypeError, "lineterminator must be set");
-        goto err;
-    }
-
-    ret = (PyObject *)self;
-    Py_INCREF(self);
-err:
-    Py_XDECREF(self);
-    Py_XDECREF(dialect);
-    Py_XDECREF(delimiter);
-    Py_XDECREF(doublequote);
-    Py_XDECREF(escapechar);
-    Py_XDECREF(lineterminator);
-    Py_XDECREF(quotechar);
-    Py_XDECREF(quoting);
-    Py_XDECREF(skipinitialspace);
-    Py_XDECREF(strict);
-    return ret;
-}
-
-
-PyDoc_STRVAR(Dialect_Type_doc,
-"CSV dialect\n"
-"\n"
-"The Dialect type records CSV parsing and generation options.\n");
-
-static PyTypeObject Dialect_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_csv.Dialect",                         /* tp_name */
-    sizeof(DialectObj),                     /* tp_basicsize */
-    0,                                      /* tp_itemsize */
-    /*  methods  */
-    (destructor)Dialect_dealloc,            /* tp_dealloc */
-    (printfunc)0,                           /* tp_print */
-    (getattrfunc)0,                         /* tp_getattr */
-    (setattrfunc)0,                         /* tp_setattr */
-    (cmpfunc)0,                             /* tp_compare */
-    (reprfunc)0,                            /* tp_repr */
-    0,                                      /* tp_as_number */
-    0,                                      /* tp_as_sequence */
-    0,                                      /* tp_as_mapping */
-    (hashfunc)0,                            /* tp_hash */
-    (ternaryfunc)0,                         /* tp_call */
-    (reprfunc)0,                                /* tp_str */
-    0,                                      /* tp_getattro */
-    0,                                      /* tp_setattro */
-    0,                                      /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
-    Dialect_Type_doc,                       /* tp_doc */
-    0,                                      /* tp_traverse */
-    0,                                      /* tp_clear */
-    0,                                      /* tp_richcompare */
-    0,                                      /* tp_weaklistoffset */
-    0,                                      /* tp_iter */
-    0,                                      /* tp_iternext */
-    0,                                          /* tp_methods */
-    Dialect_memberlist,                     /* tp_members */
-    Dialect_getsetlist,                     /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    dialect_new,                                /* tp_new */
-    0,                                          /* tp_free */
-};
-
-/*
- * Return an instance of the dialect type, given a Python instance or kwarg
- * description of the dialect
- */
-static PyObject *
-_call_dialect(PyObject *dialect_inst, PyObject *kwargs)
-{
-    PyObject *ctor_args;
-    PyObject *dialect;
-
-    ctor_args = Py_BuildValue(dialect_inst ? "(O)" : "()", dialect_inst);
-    if (ctor_args == NULL)
-        return NULL;
-    dialect = PyObject_Call((PyObject *)&Dialect_Type, ctor_args, kwargs);
-    Py_DECREF(ctor_args);
-    return dialect;
-}
-
-/*
- * READER
- */
-static int
-parse_save_field(ReaderObj *self)
-{
-    PyObject *field;
-
-    field = PyString_FromStringAndSize(self->field, self->field_len);
-    if (field == NULL)
-        return -1;
-    self->field_len = 0;
-    if (self->numeric_field) {
-        PyObject *tmp;
-
-        self->numeric_field = 0;
-        tmp = PyNumber_Float(field);
-        if (tmp == NULL) {
-            Py_DECREF(field);
-            return -1;
-        }
-        Py_DECREF(field);
-        field = tmp;
-    }
-    PyList_Append(self->fields, field);
-    Py_DECREF(field);
-    return 0;
-}
-
-static int
-parse_grow_buff(ReaderObj *self)
-{
-    if (self->field_size == 0) {
-        self->field_size = 4096;
-        if (self->field != NULL)
-            PyMem_Free(self->field);
-        self->field = PyMem_Malloc(self->field_size);
-    }
-    else {
-        if (self->field_size > INT_MAX / 2) {
-            PyErr_NoMemory();
-            return 0;
-        }
-        self->field_size *= 2;
-        self->field = PyMem_Realloc(self->field, self->field_size);
-    }
-    if (self->field == NULL) {
-        PyErr_NoMemory();
-        return 0;
-    }
-    return 1;
-}
-
-static int
-parse_add_char(ReaderObj *self, char c)
-{
-    if (self->field_len >= field_limit) {
-        PyErr_Format(error_obj, "field larger than field limit (%ld)",
-                     field_limit);
-        return -1;
-    }
-    if (self->field_len == self->field_size && !parse_grow_buff(self))
-        return -1;
-    self->field[self->field_len++] = c;
-    return 0;
-}
-
-static int
-parse_process_char(ReaderObj *self, char c)
-{
-    DialectObj *dialect = self->dialect;
-
-    switch (self->state) {
-    case START_RECORD:
-        /* start of record */
-        if (c == '\0')
-            /* empty line - return [] */
-            break;
-        else if (c == '\n' || c == '\r') {
-            self->state = EAT_CRNL;
-            break;
-        }
-        /* normal character - handle as START_FIELD */
-        self->state = START_FIELD;
-        /* fallthru */
-    case START_FIELD:
-        /* expecting field */
-        if (c == '\n' || c == '\r' || c == '\0') {
-            /* save empty field - return [fields] */
-            if (parse_save_field(self) < 0)
-                return -1;
-            self->state = (c == '\0' ? START_RECORD : EAT_CRNL);
-        }
-        else if (c == dialect->quotechar &&
-                 dialect->quoting != QUOTE_NONE) {
-            /* start quoted field */
-            self->state = IN_QUOTED_FIELD;
-        }
-        else if (c == dialect->escapechar) {
-            /* possible escaped character */
-            self->state = ESCAPED_CHAR;
-        }
-        else if (c == ' ' && dialect->skipinitialspace)
-            /* ignore space at start of field */
-            ;
-        else if (c == dialect->delimiter) {
-            /* save empty field */
-            if (parse_save_field(self) < 0)
-                return -1;
-        }
-        else {
-            /* begin new unquoted field */
-            if (dialect->quoting == QUOTE_NONNUMERIC)
-                self->numeric_field = 1;
-            if (parse_add_char(self, c) < 0)
-                return -1;
-            self->state = IN_FIELD;
-        }
-        break;
-
-    case ESCAPED_CHAR:
-        if (c == '\0')
-            c = '\n';
-        if (parse_add_char(self, c) < 0)
-            return -1;
-        self->state = IN_FIELD;
-        break;
-
-    case IN_FIELD:
-        /* in unquoted field */
-        if (c == '\n' || c == '\r' || c == '\0') {
-            /* end of line - return [fields] */
-            if (parse_save_field(self) < 0)
-                return -1;
-            self->state = (c == '\0' ? START_RECORD : EAT_CRNL);
-        }
-        else if (c == dialect->escapechar) {
-            /* possible escaped character */
-            self->state = ESCAPED_CHAR;
-        }
-        else if (c == dialect->delimiter) {
-            /* save field - wait for new field */
-            if (parse_save_field(self) < 0)
-                return -1;
-            self->state = START_FIELD;
-        }
-        else {
-            /* normal character - save in field */
-            if (parse_add_char(self, c) < 0)
-                return -1;
-        }
-        break;
-
-    case IN_QUOTED_FIELD:
-        /* in quoted field */
-        if (c == '\0')
-            ;
-        else if (c == dialect->escapechar) {
-            /* Possible escape character */
-            self->state = ESCAPE_IN_QUOTED_FIELD;
-        }
-        else if (c == dialect->quotechar &&
-                 dialect->quoting != QUOTE_NONE) {
-            if (dialect->doublequote) {
-                /* doublequote; " represented by "" */
-                self->state = QUOTE_IN_QUOTED_FIELD;
-            }
-            else {
-                /* end of quote part of field */
-                self->state = IN_FIELD;
-            }
-        }
-        else {
-            /* normal character - save in field */
-            if (parse_add_char(self, c) < 0)
-                return -1;
-        }
-        break;
-
-    case ESCAPE_IN_QUOTED_FIELD:
-        if (c == '\0')
-            c = '\n';
-        if (parse_add_char(self, c) < 0)
-            return -1;
-        self->state = IN_QUOTED_FIELD;
-        break;
-
-    case QUOTE_IN_QUOTED_FIELD:
-        /* doublequote - seen a quote in an quoted field */
-        if (dialect->quoting != QUOTE_NONE &&
-            c == dialect->quotechar) {
-            /* save "" as " */
-            if (parse_add_char(self, c) < 0)
-                return -1;
-            self->state = IN_QUOTED_FIELD;
-        }
-        else if (c == dialect->delimiter) {
-            /* save field - wait for new field */
-            if (parse_save_field(self) < 0)
-                return -1;
-            self->state = START_FIELD;
-        }
-        else if (c == '\n' || c == '\r' || c == '\0') {
-            /* end of line - return [fields] */
-            if (parse_save_field(self) < 0)
-                return -1;
-            self->state = (c == '\0' ? START_RECORD : EAT_CRNL);
-        }
-        else if (!dialect->strict) {
-            if (parse_add_char(self, c) < 0)
-                return -1;
-            self->state = IN_FIELD;
-        }
-        else {
-            /* illegal */
-            PyErr_Format(error_obj, "'%c' expected after '%c'",
-                            dialect->delimiter,
-                            dialect->quotechar);
-            return -1;
-        }
-        break;
-
-    case EAT_CRNL:
-        if (c == '\n' || c == '\r')
-            ;
-        else if (c == '\0')
-            self->state = START_RECORD;
-        else {
-            PyErr_Format(error_obj, "new-line character seen in unquoted field - do you need to open the file in universal-newline mode?");
-            return -1;
-        }
-        break;
-
-    }
-    return 0;
-}
-
-static int
-parse_reset(ReaderObj *self)
-{
-    Py_XDECREF(self->fields);
-    self->fields = PyList_New(0);
-    if (self->fields == NULL)
-        return -1;
-    self->field_len = 0;
-    self->state = START_RECORD;
-    self->numeric_field = 0;
-    return 0;
-}
-
-static PyObject *
-Reader_iternext(ReaderObj *self)
-{
-    PyObject *lineobj;
-    PyObject *fields = NULL;
-    char *line, c;
-    int linelen;
-
-    if (parse_reset(self) < 0)
-        return NULL;
-    do {
-        lineobj = PyIter_Next(self->input_iter);
-        if (lineobj == NULL) {
-            /* End of input OR exception */
-            if (!PyErr_Occurred() && self->field_len != 0)
-                PyErr_Format(error_obj,
-                             "newline inside string");
-            return NULL;
-        }
-        ++self->line_num;
-
-        line = PyString_AsString(lineobj);
-        linelen = PyString_Size(lineobj);
-
-        if (line == NULL || linelen < 0) {
-            Py_DECREF(lineobj);
-            return NULL;
-        }
-        while (linelen--) {
-            c = *line++;
-            if (c == '\0') {
-                Py_DECREF(lineobj);
-                PyErr_Format(error_obj,
-                             "line contains NULL byte");
-                goto err;
-            }
-            if (parse_process_char(self, c) < 0) {
-                Py_DECREF(lineobj);
-                goto err;
-            }
-        }
-        Py_DECREF(lineobj);
-        if (parse_process_char(self, 0) < 0)
-            goto err;
-    } while (self->state != START_RECORD);
-
-    fields = self->fields;
-    self->fields = NULL;
-err:
-    return fields;
-}
-
-static void
-Reader_dealloc(ReaderObj *self)
-{
-    PyObject_GC_UnTrack(self);
-    Py_XDECREF(self->dialect);
-    Py_XDECREF(self->input_iter);
-    Py_XDECREF(self->fields);
-    if (self->field != NULL)
-        PyMem_Free(self->field);
-    PyObject_GC_Del(self);
-}
-
-static int
-Reader_traverse(ReaderObj *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->dialect);
-    Py_VISIT(self->input_iter);
-    Py_VISIT(self->fields);
-    return 0;
-}
-
-static int
-Reader_clear(ReaderObj *self)
-{
-    Py_CLEAR(self->dialect);
-    Py_CLEAR(self->input_iter);
-    Py_CLEAR(self->fields);
-    return 0;
-}
-
-PyDoc_STRVAR(Reader_Type_doc,
-"CSV reader\n"
-"\n"
-"Reader objects are responsible for reading and parsing tabular data\n"
-"in CSV format.\n"
-);
-
-static struct PyMethodDef Reader_methods[] = {
-    { NULL, NULL }
-};
-#define R_OFF(x) offsetof(ReaderObj, x)
-
-static struct PyMemberDef Reader_memberlist[] = {
-    { "dialect", T_OBJECT, R_OFF(dialect), RO },
-    { "line_num", T_ULONG, R_OFF(line_num), RO },
-    { NULL }
-};
-
-
-static PyTypeObject Reader_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_csv.reader",                          /*tp_name*/
-    sizeof(ReaderObj),                      /*tp_basicsize*/
-    0,                                      /*tp_itemsize*/
-    /* methods */
-    (destructor)Reader_dealloc,             /*tp_dealloc*/
-    (printfunc)0,                           /*tp_print*/
-    (getattrfunc)0,                         /*tp_getattr*/
-    (setattrfunc)0,                         /*tp_setattr*/
-    (cmpfunc)0,                             /*tp_compare*/
-    (reprfunc)0,                            /*tp_repr*/
-    0,                                      /*tp_as_number*/
-    0,                                      /*tp_as_sequence*/
-    0,                                      /*tp_as_mapping*/
-    (hashfunc)0,                            /*tp_hash*/
-    (ternaryfunc)0,                         /*tp_call*/
-    (reprfunc)0,                                /*tp_str*/
-    0,                                      /*tp_getattro*/
-    0,                                      /*tp_setattro*/
-    0,                                      /*tp_as_buffer*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |
-        Py_TPFLAGS_HAVE_GC,                     /*tp_flags*/
-    Reader_Type_doc,                        /*tp_doc*/
-    (traverseproc)Reader_traverse,          /*tp_traverse*/
-    (inquiry)Reader_clear,                  /*tp_clear*/
-    0,                                      /*tp_richcompare*/
-    0,                                      /*tp_weaklistoffset*/
-    PyObject_SelfIter,                          /*tp_iter*/
-    (getiterfunc)Reader_iternext,           /*tp_iternext*/
-    Reader_methods,                         /*tp_methods*/
-    Reader_memberlist,                      /*tp_members*/
-    0,                                      /*tp_getset*/
-
-};
-
-static PyObject *
-csv_reader(PyObject *module, PyObject *args, PyObject *keyword_args)
-{
-    PyObject * iterator, * dialect = NULL;
-    ReaderObj * self = PyObject_GC_New(ReaderObj, &Reader_Type);
-
-    if (!self)
-        return NULL;
-
-    self->dialect = NULL;
-    self->fields = NULL;
-    self->input_iter = NULL;
-    self->field = NULL;
-    self->field_size = 0;
-    self->line_num = 0;
-
-    if (parse_reset(self) < 0) {
-        Py_DECREF(self);
-        return NULL;
-    }
-
-    if (!PyArg_UnpackTuple(args, "", 1, 2, &iterator, &dialect)) {
-        Py_DECREF(self);
-        return NULL;
-    }
-    self->input_iter = PyObject_GetIter(iterator);
-    if (self->input_iter == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "argument 1 must be an iterator");
-        Py_DECREF(self);
-        return NULL;
-    }
-    self->dialect = (DialectObj *)_call_dialect(dialect, keyword_args);
-    if (self->dialect == NULL) {
-        Py_DECREF(self);
-        return NULL;
-    }
-
-    PyObject_GC_Track(self);
-    return (PyObject *)self;
-}
-
-/*
- * WRITER
- */
-/* ---------------------------------------------------------------- */
-static void
-join_reset(WriterObj *self)
-{
-    self->rec_len = 0;
-    self->num_fields = 0;
-}
-
-#define MEM_INCR 32768
-
-/* Calculate new record length or append field to record.  Return new
- * record length.
- */
-static int
-join_append_data(WriterObj *self, char *field, int quote_empty,
-                 int *quoted, int copy_phase)
-{
-    DialectObj *dialect = self->dialect;
-    int i, rec_len;
-    char *lineterm;
-
-#define ADDCH(c) \
-    do {\
-        if (copy_phase) \
-            self->rec[rec_len] = c;\
-        rec_len++;\
-    } while(0)
-
-    lineterm = PyString_AsString(dialect->lineterminator);
-    if (lineterm == NULL)
-        return -1;
-
-    rec_len = self->rec_len;
-
-    /* If this is not the first field we need a field separator */
-    if (self->num_fields > 0)
-        ADDCH(dialect->delimiter);
-
-    /* Handle preceding quote */
-    if (copy_phase && *quoted)
-        ADDCH(dialect->quotechar);
-
-    /* Copy/count field data */
-    for (i = 0;; i++) {
-        char c = field[i];
-        int want_escape = 0;
-
-        if (c == '\0')
-            break;
-
-        if (c == dialect->delimiter ||
-            c == dialect->escapechar ||
-            c == dialect->quotechar ||
-            strchr(lineterm, c)) {
-            if (dialect->quoting == QUOTE_NONE)
-                want_escape = 1;
-            else {
-                if (c == dialect->quotechar) {
-                    if (dialect->doublequote)
-                        ADDCH(dialect->quotechar);
-                    else
-                        want_escape = 1;
-                }
-                if (!want_escape)
-                    *quoted = 1;
-            }
-            if (want_escape) {
-                if (!dialect->escapechar) {
-                    PyErr_Format(error_obj,
-                                 "need to escape, but no escapechar set");
-                    return -1;
-                }
-                ADDCH(dialect->escapechar);
-            }
-        }
-        /* Copy field character into record buffer.
-         */
-        ADDCH(c);
-    }
-
-    /* If field is empty check if it needs to be quoted.
-     */
-    if (i == 0 && quote_empty) {
-        if (dialect->quoting == QUOTE_NONE) {
-            PyErr_Format(error_obj,
-                         "single empty field record must be quoted");
-            return -1;
-        }
-        else
-            *quoted = 1;
-    }
-
-    if (*quoted) {
-        if (copy_phase)
-            ADDCH(dialect->quotechar);
-        else
-            rec_len += 2;
-    }
-    return rec_len;
-#undef ADDCH
-}
-
-static int
-join_check_rec_size(WriterObj *self, int rec_len)
-{
-
-    if (rec_len < 0 || rec_len > INT_MAX - MEM_INCR) {
-        PyErr_NoMemory();
-        return 0;
-    }
-
-    if (rec_len > self->rec_size) {
-        if (self->rec_size == 0) {
-            self->rec_size = (rec_len / MEM_INCR + 1) * MEM_INCR;
-            if (self->rec != NULL)
-                PyMem_Free(self->rec);
-            self->rec = PyMem_Malloc(self->rec_size);
-        }
-        else {
-            char *old_rec = self->rec;
-
-            self->rec_size = (rec_len / MEM_INCR + 1) * MEM_INCR;
-            self->rec = PyMem_Realloc(self->rec, self->rec_size);
-            if (self->rec == NULL)
-                PyMem_Free(old_rec);
-        }
-        if (self->rec == NULL) {
-            PyErr_NoMemory();
-            return 0;
-        }
-    }
-    return 1;
-}
-
-static int
-join_append(WriterObj *self, char *field, int *quoted, int quote_empty)
-{
-    int rec_len;
-
-    rec_len = join_append_data(self, field, quote_empty, quoted, 0);
-    if (rec_len < 0)
-        return 0;
-
-    /* grow record buffer if necessary */
-    if (!join_check_rec_size(self, rec_len))
-        return 0;
-
-    self->rec_len = join_append_data(self, field, quote_empty, quoted, 1);
-    self->num_fields++;
-
-    return 1;
-}
-
-static int
-join_append_lineterminator(WriterObj *self)
-{
-    int terminator_len;
-    char *terminator;
-
-    terminator_len = PyString_Size(self->dialect->lineterminator);
-    if (terminator_len == -1)
-        return 0;
-
-    /* grow record buffer if necessary */
-    if (!join_check_rec_size(self, self->rec_len + terminator_len))
-        return 0;
-
-    terminator = PyString_AsString(self->dialect->lineterminator);
-    if (terminator == NULL)
-        return 0;
-    memmove(self->rec + self->rec_len, terminator, terminator_len);
-    self->rec_len += terminator_len;
-
-    return 1;
-}
-
-PyDoc_STRVAR(csv_writerow_doc,
-"writerow(sequence)\n"
-"\n"
-"Construct and write a CSV record from a sequence of fields.  Non-string\n"
-"elements will be converted to string.");
-
-static PyObject *
-csv_writerow(WriterObj *self, PyObject *seq)
-{
-    DialectObj *dialect = self->dialect;
-    int len, i;
-
-    if (!PySequence_Check(seq))
-        return PyErr_Format(error_obj, "sequence expected");
-
-    len = PySequence_Length(seq);
-    if (len < 0)
-        return NULL;
-
-    /* Join all fields in internal buffer.
-     */
-    join_reset(self);
-    for (i = 0; i < len; i++) {
-        PyObject *field;
-        int append_ok;
-        int quoted;
-
-        field = PySequence_GetItem(seq, i);
-        if (field == NULL)
-            return NULL;
-
-        switch (dialect->quoting) {
-        case QUOTE_NONNUMERIC:
-            quoted = !PyNumber_Check(field);
-            break;
-        case QUOTE_ALL:
-            quoted = 1;
-            break;
-        default:
-            quoted = 0;
-            break;
-        }
-
-        if (PyString_Check(field)) {
-            append_ok = join_append(self,
-                                    PyString_AS_STRING(field),
-                                    &quoted, len == 1);
-            Py_DECREF(field);
-        }
-        else if (field == Py_None) {
-            append_ok = join_append(self, "", &quoted, len == 1);
-            Py_DECREF(field);
-        }
-        else {
-            PyObject *str;
-
-            str = PyObject_Str(field);
-            Py_DECREF(field);
-            if (str == NULL)
-                return NULL;
-
-            append_ok = join_append(self, PyString_AS_STRING(str),
-                                    &quoted, len == 1);
-            Py_DECREF(str);
-        }
-        if (!append_ok)
-            return NULL;
-    }
-
-    /* Add line terminator.
-     */
-    if (!join_append_lineterminator(self))
-        return 0;
-
-    return PyObject_CallFunction(self->writeline,
-                                 "(s#)", self->rec, self->rec_len);
-}
-
-PyDoc_STRVAR(csv_writerows_doc,
-"writerows(sequence of sequences)\n"
-"\n"
-"Construct and write a series of sequences to a csv file.  Non-string\n"
-"elements will be converted to string.");
-
-static PyObject *
-csv_writerows(WriterObj *self, PyObject *seqseq)
-{
-    PyObject *row_iter, *row_obj, *result;
-
-    row_iter = PyObject_GetIter(seqseq);
-    if (row_iter == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "writerows() argument must be iterable");
-        return NULL;
-    }
-    while ((row_obj = PyIter_Next(row_iter))) {
-        result = csv_writerow(self, row_obj);
-        Py_DECREF(row_obj);
-        if (!result) {
-            Py_DECREF(row_iter);
-            return NULL;
-        }
-        else
-             Py_DECREF(result);
-    }
-    Py_DECREF(row_iter);
-    if (PyErr_Occurred())
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static struct PyMethodDef Writer_methods[] = {
-    { "writerow", (PyCFunction)csv_writerow, METH_O, csv_writerow_doc},
-    { "writerows", (PyCFunction)csv_writerows, METH_O, csv_writerows_doc},
-    { NULL, NULL }
-};
-
-#define W_OFF(x) offsetof(WriterObj, x)
-
-static struct PyMemberDef Writer_memberlist[] = {
-    { "dialect", T_OBJECT, W_OFF(dialect), RO },
-    { NULL }
-};
-
-static void
-Writer_dealloc(WriterObj *self)
-{
-    PyObject_GC_UnTrack(self);
-    Py_XDECREF(self->dialect);
-    Py_XDECREF(self->writeline);
-    if (self->rec != NULL)
-        PyMem_Free(self->rec);
-    PyObject_GC_Del(self);
-}
-
-static int
-Writer_traverse(WriterObj *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->dialect);
-    Py_VISIT(self->writeline);
-    return 0;
-}
-
-static int
-Writer_clear(WriterObj *self)
-{
-    Py_CLEAR(self->dialect);
-    Py_CLEAR(self->writeline);
-    return 0;
-}
-
-PyDoc_STRVAR(Writer_Type_doc,
-"CSV writer\n"
-"\n"
-"Writer objects are responsible for generating tabular data\n"
-"in CSV format from sequence input.\n"
-);
-
-static PyTypeObject Writer_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_csv.writer",                          /*tp_name*/
-    sizeof(WriterObj),                      /*tp_basicsize*/
-    0,                                      /*tp_itemsize*/
-    /* methods */
-    (destructor)Writer_dealloc,             /*tp_dealloc*/
-    (printfunc)0,                           /*tp_print*/
-    (getattrfunc)0,                         /*tp_getattr*/
-    (setattrfunc)0,                         /*tp_setattr*/
-    (cmpfunc)0,                             /*tp_compare*/
-    (reprfunc)0,                            /*tp_repr*/
-    0,                                      /*tp_as_number*/
-    0,                                      /*tp_as_sequence*/
-    0,                                      /*tp_as_mapping*/
-    (hashfunc)0,                            /*tp_hash*/
-    (ternaryfunc)0,                         /*tp_call*/
-    (reprfunc)0,                            /*tp_str*/
-    0,                                      /*tp_getattro*/
-    0,                                      /*tp_setattro*/
-    0,                                      /*tp_as_buffer*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |
-        Py_TPFLAGS_HAVE_GC,                     /*tp_flags*/
-    Writer_Type_doc,
-    (traverseproc)Writer_traverse,          /*tp_traverse*/
-    (inquiry)Writer_clear,                  /*tp_clear*/
-    0,                                      /*tp_richcompare*/
-    0,                                      /*tp_weaklistoffset*/
-    (getiterfunc)0,                         /*tp_iter*/
-    (getiterfunc)0,                         /*tp_iternext*/
-    Writer_methods,                         /*tp_methods*/
-    Writer_memberlist,                      /*tp_members*/
-    0,                                      /*tp_getset*/
-};
-
-static PyObject *
-csv_writer(PyObject *module, PyObject *args, PyObject *keyword_args)
-{
-    PyObject * output_file, * dialect = NULL;
-    WriterObj * self = PyObject_GC_New(WriterObj, &Writer_Type);
-
-    if (!self)
-        return NULL;
-
-    self->dialect = NULL;
-    self->writeline = NULL;
-
-    self->rec = NULL;
-    self->rec_size = 0;
-    self->rec_len = 0;
-    self->num_fields = 0;
-
-    if (!PyArg_UnpackTuple(args, "", 1, 2, &output_file, &dialect)) {
-        Py_DECREF(self);
-        return NULL;
-    }
-    self->writeline = PyObject_GetAttrString(output_file, "write");
-    if (self->writeline == NULL || !PyCallable_Check(self->writeline)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "argument 1 must have a \"write\" method");
-        Py_DECREF(self);
-        return NULL;
-    }
-    self->dialect = (DialectObj *)_call_dialect(dialect, keyword_args);
-    if (self->dialect == NULL) {
-        Py_DECREF(self);
-        return NULL;
-    }
-    PyObject_GC_Track(self);
-    return (PyObject *)self;
-}
-
-/*
- * DIALECT REGISTRY
- */
-static PyObject *
-csv_list_dialects(PyObject *module, PyObject *args)
-{
-    return PyDict_Keys(dialects);
-}
-
-static PyObject *
-csv_register_dialect(PyObject *module, PyObject *args, PyObject *kwargs)
-{
-    PyObject *name_obj, *dialect_obj = NULL;
-    PyObject *dialect;
-
-    if (!PyArg_UnpackTuple(args, "", 1, 2, &name_obj, &dialect_obj))
-        return NULL;
-    if (!IS_BASESTRING(name_obj)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "dialect name must be a string or unicode");
-        return NULL;
-    }
-    dialect = _call_dialect(dialect_obj, kwargs);
-    if (dialect == NULL)
-        return NULL;
-    if (PyDict_SetItem(dialects, name_obj, dialect) < 0) {
-        Py_DECREF(dialect);
-        return NULL;
-    }
-    Py_DECREF(dialect);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-csv_unregister_dialect(PyObject *module, PyObject *name_obj)
-{
-    if (PyDict_DelItem(dialects, name_obj) < 0)
-        return PyErr_Format(error_obj, "unknown dialect");
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-csv_get_dialect(PyObject *module, PyObject *name_obj)
-{
-    return get_dialect_from_registry(name_obj);
-}
-
-static PyObject *
-csv_field_size_limit(PyObject *module, PyObject *args)
-{
-    PyObject *new_limit = NULL;
-    long old_limit = field_limit;
-
-    if (!PyArg_UnpackTuple(args, "field_size_limit", 0, 1, &new_limit))
-        return NULL;
-    if (new_limit != NULL) {
-        if (!PyInt_Check(new_limit)) {
-            PyErr_Format(PyExc_TypeError,
-                         "limit must be an integer");
-            return NULL;
-        }
-        field_limit = PyInt_AsLong(new_limit);
-    }
-    return PyInt_FromLong(old_limit);
-}
-
-/*
- * MODULE
- */
-
-PyDoc_STRVAR(csv_module_doc,
-"CSV parsing and writing.\n"
-"\n"
-"This module provides classes that assist in the reading and writing\n"
-"of Comma Separated Value (CSV) files, and implements the interface\n"
-"described by PEP 305.  Although many CSV files are simple to parse,\n"
-"the format is not formally defined by a stable specification and\n"
-"is subtle enough that parsing lines of a CSV file with something\n"
-"like line.split(\",\") is bound to fail.  The module supports three\n"
-"basic APIs: reading, writing, and registration of dialects.\n"
-"\n"
-"\n"
-"DIALECT REGISTRATION:\n"
-"\n"
-"Readers and writers support a dialect argument, which is a convenient\n"
-"handle on a group of settings.  When the dialect argument is a string,\n"
-"it identifies one of the dialects previously registered with the module.\n"
-"If it is a class or instance, the attributes of the argument are used as\n"
-"the settings for the reader or writer:\n"
-"\n"
-"    class excel:\n"
-"        delimiter = ','\n"
-"        quotechar = '\"'\n"
-"        escapechar = None\n"
-"        doublequote = True\n"
-"        skipinitialspace = False\n"
-"        lineterminator = '\\r\\n'\n"
-"        quoting = QUOTE_MINIMAL\n"
-"\n"
-"SETTINGS:\n"
-"\n"
-"    * quotechar - specifies a one-character string to use as the \n"
-"        quoting character.  It defaults to '\"'.\n"
-"    * delimiter - specifies a one-character string to use as the \n"
-"        field separator.  It defaults to ','.\n"
-"    * skipinitialspace - specifies how to interpret whitespace which\n"
-"        immediately follows a delimiter.  It defaults to False, which\n"
-"        means that whitespace immediately following a delimiter is part\n"
-"        of the following field.\n"
-"    * lineterminator -  specifies the character sequence which should \n"
-"        terminate rows.\n"
-"    * quoting - controls when quotes should be generated by the writer.\n"
-"        It can take on any of the following module constants:\n"
-"\n"
-"        csv.QUOTE_MINIMAL means only when required, for example, when a\n"
-"            field contains either the quotechar or the delimiter\n"
-"        csv.QUOTE_ALL means that quotes are always placed around fields.\n"
-"        csv.QUOTE_NONNUMERIC means that quotes are always placed around\n"
-"            fields which do not parse as integers or floating point\n"
-"            numbers.\n"
-"        csv.QUOTE_NONE means that quotes are never placed around fields.\n"
-"    * escapechar - specifies a one-character string used to escape \n"
-"        the delimiter when quoting is set to QUOTE_NONE.\n"
-"    * doublequote - controls the handling of quotes inside fields.  When\n"
-"        True, two consecutive quotes are interpreted as one during read,\n"
-"        and when writing, each quote character embedded in the data is\n"
-"        written as two quotes\n");
-
-PyDoc_STRVAR(csv_reader_doc,
-"    csv_reader = reader(iterable [, dialect='excel']\n"
-"                        [optional keyword args])\n"
-"    for row in csv_reader:\n"
-"        process(row)\n"
-"\n"
-"The \"iterable\" argument can be any object that returns a line\n"
-"of input for each iteration, such as a file object or a list.  The\n"
-"optional \"dialect\" parameter is discussed below.  The function\n"
-"also accepts optional keyword arguments which override settings\n"
-"provided by the dialect.\n"
-"\n"
-"The returned object is an iterator.  Each iteration returns a row\n"
-"of the CSV file (which can span multiple input lines):\n");
-
-PyDoc_STRVAR(csv_writer_doc,
-"    csv_writer = csv.writer(fileobj [, dialect='excel']\n"
-"                            [optional keyword args])\n"
-"    for row in sequence:\n"
-"        csv_writer.writerow(row)\n"
-"\n"
-"    [or]\n"
-"\n"
-"    csv_writer = csv.writer(fileobj [, dialect='excel']\n"
-"                            [optional keyword args])\n"
-"    csv_writer.writerows(rows)\n"
-"\n"
-"The \"fileobj\" argument can be any object that supports the file API.\n");
-
-PyDoc_STRVAR(csv_list_dialects_doc,
-"Return a list of all know dialect names.\n"
-"    names = csv.list_dialects()");
-
-PyDoc_STRVAR(csv_get_dialect_doc,
-"Return the dialect instance associated with name.\n"
-"    dialect = csv.get_dialect(name)");
-
-PyDoc_STRVAR(csv_register_dialect_doc,
-"Create a mapping from a string name to a dialect class.\n"
-"    dialect = csv.register_dialect(name, dialect)");
-
-PyDoc_STRVAR(csv_unregister_dialect_doc,
-"Delete the name/dialect mapping associated with a string name.\n"
-"    csv.unregister_dialect(name)");
-
-PyDoc_STRVAR(csv_field_size_limit_doc,
-"Sets an upper limit on parsed fields.\n"
-"    csv.field_size_limit([limit])\n"
-"\n"
-"Returns old limit. If limit is not given, no new limit is set and\n"
-"the old limit is returned");
-
-static struct PyMethodDef csv_methods[] = {
-    { "reader", (PyCFunction)csv_reader,
-        METH_VARARGS | METH_KEYWORDS, csv_reader_doc},
-    { "writer", (PyCFunction)csv_writer,
-        METH_VARARGS | METH_KEYWORDS, csv_writer_doc},
-    { "list_dialects", (PyCFunction)csv_list_dialects,
-        METH_NOARGS, csv_list_dialects_doc},
-    { "register_dialect", (PyCFunction)csv_register_dialect,
-        METH_VARARGS | METH_KEYWORDS, csv_register_dialect_doc},
-    { "unregister_dialect", (PyCFunction)csv_unregister_dialect,
-        METH_O, csv_unregister_dialect_doc},
-    { "get_dialect", (PyCFunction)csv_get_dialect,
-        METH_O, csv_get_dialect_doc},
-    { "field_size_limit", (PyCFunction)csv_field_size_limit,
-        METH_VARARGS, csv_field_size_limit_doc},
-    { NULL, NULL }
-};
-
-PyMODINIT_FUNC
-init_csv(void)
-{
-    PyObject *module;
-    StyleDesc *style;
-
-    if (PyType_Ready(&Dialect_Type) < 0)
-        return;
-
-    if (PyType_Ready(&Reader_Type) < 0)
-        return;
-
-    if (PyType_Ready(&Writer_Type) < 0)
-        return;
-
-    /* Create the module and add the functions */
-    module = Py_InitModule3("_csv", csv_methods, csv_module_doc);
-    if (module == NULL)
-        return;
-
-    /* Add version to the module. */
-    if (PyModule_AddStringConstant(module, "__version__",
-                                   MODULE_VERSION) == -1)
-        return;
-
-    /* Add _dialects dictionary */
-    dialects = PyDict_New();
-    if (dialects == NULL)
-        return;
-    if (PyModule_AddObject(module, "_dialects", dialects))
-        return;
-
-    /* Add quote styles into dictionary */
-    for (style = quote_styles; style->name; style++) {
-        if (PyModule_AddIntConstant(module, style->name,
-                                    style->style) == -1)
-            return;
-    }
-
-    /* Add the Dialect type */
-    Py_INCREF(&Dialect_Type);
-    if (PyModule_AddObject(module, "Dialect", (PyObject *)&Dialect_Type))
-        return;
-
-    /* Add the CSV exception object to the module. */
-    error_obj = PyErr_NewException("_csv.Error", NULL, NULL);
-    if (error_obj == NULL)
-        return;
-    PyModule_AddObject(module, "Error", error_obj);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_elementtree.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_elementtree.c
deleted file mode 100644
index f465321..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_elementtree.c
+++ /dev/null
@@ -1,3079 +0,0 @@
-/*
- * ElementTree
- * $Id: _elementtree.c 3473 2009-01-11 22:53:55Z fredrik $
- *
- * elementtree accelerator
- *
- * History:
- * 1999-06-20 fl  created (as part of sgmlop)
- * 2001-05-29 fl  effdom edition
- * 2003-02-27 fl  elementtree edition (alpha)
- * 2004-06-03 fl  updates for elementtree 1.2
- * 2005-01-05 fl  major optimization effort
- * 2005-01-11 fl  first public release (cElementTree 0.8)
- * 2005-01-12 fl  split element object into base and extras
- * 2005-01-13 fl  use tagged pointers for tail/text (cElementTree 0.9)
- * 2005-01-17 fl  added treebuilder close method
- * 2005-01-17 fl  fixed crash in getchildren
- * 2005-01-18 fl  removed observer api, added iterparse (cElementTree 0.9.3)
- * 2005-01-23 fl  revised iterparse api; added namespace event support (0.9.8)
- * 2005-01-26 fl  added VERSION module property (cElementTree 1.0)
- * 2005-01-28 fl  added remove method (1.0.1)
- * 2005-03-01 fl  added iselement function; fixed makeelement aliasing (1.0.2)
- * 2005-03-13 fl  export Comment and ProcessingInstruction/PI helpers
- * 2005-03-26 fl  added Comment and PI support to XMLParser
- * 2005-03-27 fl  event optimizations; complain about bogus events
- * 2005-08-08 fl  fixed read error handling in parse
- * 2005-08-11 fl  added runtime test for copy workaround (1.0.3)
- * 2005-12-13 fl  added expat_capi support (for xml.etree) (1.0.4)
- * 2005-12-16 fl  added support for non-standard encodings
- * 2006-03-08 fl  fixed a couple of potential null-refs and leaks
- * 2006-03-12 fl  merge in 2.5 ssize_t changes
- * 2007-08-25 fl  call custom builder's close method from XMLParser
- * 2007-08-31 fl  added iter, extend from ET 1.3
- * 2007-09-01 fl  fixed ParseError exception, setslice source type, etc
- * 2007-09-03 fl  fixed handling of negative insert indexes
- * 2007-09-04 fl  added itertext from ET 1.3
- * 2007-09-06 fl  added position attribute to ParseError exception
- * 2008-06-06 fl  delay error reporting in iterparse (from Hrvoje Niksic)
- *
- * Copyright (c) 1999-2009 by Secret Labs AB.  All rights reserved.
- * Copyright (c) 1999-2009 by Fredrik Lundh.
- *
- * info@pythonware.com
- * http://www.pythonware.com
- */
-
-/* Licensed to PSF under a Contributor Agreement. */
-/* See http://www.python.org/psf/license for licensing details. */
-
-#include "Python.h"
-
-#define VERSION "1.0.6"
-
-/* -------------------------------------------------------------------- */
-/* configuration */
-
-/* Leave defined to include the expat-based XMLParser type */
-#define USE_EXPAT
-
-/* Define to do all expat calls via pyexpat's embedded expat library */
-/* #define USE_PYEXPAT_CAPI */
-
-/* An element can hold this many children without extra memory
-   allocations. */
-#define STATIC_CHILDREN 4
-
-/* For best performance, chose a value so that 80-90% of all nodes
-   have no more than the given number of children.  Set this to zero
-   to minimize the size of the element structure itself (this only
-   helps if you have lots of leaf nodes with attributes). */
-
-/* Also note that pymalloc always allocates blocks in multiples of
-   eight bytes.  For the current version of cElementTree, this means
-   that the number of children should be an even number, at least on
-   32-bit platforms. */
-
-/* -------------------------------------------------------------------- */
-
-#if 0
-static int memory = 0;
-#define ALLOC(size, comment)\
-do { memory += size; printf("%8d - %s\n", memory, comment); } while (0)
-#define RELEASE(size, comment)\
-do { memory -= size; printf("%8d - %s\n", memory, comment); } while (0)
-#else
-#define ALLOC(size, comment)
-#define RELEASE(size, comment)
-#endif
-
-/* compiler tweaks */
-#if defined(_MSC_VER)
-#define LOCAL(type) static __inline type __fastcall
-#else
-#define LOCAL(type) static type
-#endif
-
-/* compatibility macros */
-#if (PY_VERSION_HEX < 0x02060000)
-#define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
-#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
-#endif
-
-#if (PY_VERSION_HEX < 0x02050000)
-typedef int Py_ssize_t;
-#define lenfunc inquiry
-#endif
-
-#if (PY_VERSION_HEX < 0x02040000)
-#define PyDict_CheckExact PyDict_Check
-
-#if !defined(Py_RETURN_NONE)
-#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None
-#endif
-#endif
-
-/* macros used to store 'join' flags in string object pointers.  note
-   that all use of text and tail as object pointers must be wrapped in
-   JOIN_OBJ.  see comments in the ElementObject definition for more
-   info. */
-#define JOIN_GET(p) ((Py_uintptr_t) (p) & 1)
-#define JOIN_SET(p, flag) ((void*) ((Py_uintptr_t) (JOIN_OBJ(p)) | (flag)))
-#define JOIN_OBJ(p) ((PyObject*) ((Py_uintptr_t) (p) & ~1))
-
-/* glue functions (see the init function for details) */
-static PyObject* elementtree_parseerror_obj;
-static PyObject* elementtree_copyelement_obj;
-static PyObject* elementtree_deepcopy_obj;
-static PyObject* elementtree_iter_obj;
-static PyObject* elementtree_itertext_obj;
-static PyObject* elementpath_obj;
-
-/* helpers */
-
-LOCAL(PyObject*)
-deepcopy(PyObject* object, PyObject* memo)
-{
-    /* do a deep copy of the given object */
-
-    PyObject* args;
-    PyObject* result;
-
-    if (!elementtree_deepcopy_obj) {
-        PyErr_SetString(
-            PyExc_RuntimeError,
-            "deepcopy helper not found"
-            );
-        return NULL;
-    }
-
-    args = PyTuple_New(2);
-    if (!args)
-        return NULL;
-
-    Py_INCREF(object); PyTuple_SET_ITEM(args, 0, (PyObject*) object);
-    Py_INCREF(memo);   PyTuple_SET_ITEM(args, 1, (PyObject*) memo);
-
-    result = PyObject_CallObject(elementtree_deepcopy_obj, args);
-
-    Py_DECREF(args);
-
-    return result;
-}
-
-LOCAL(PyObject*)
-list_join(PyObject* list)
-{
-    /* join list elements (destroying the list in the process) */
-
-    PyObject* joiner;
-    PyObject* function;
-    PyObject* args;
-    PyObject* result;
-
-    switch (PyList_GET_SIZE(list)) {
-    case 0:
-        Py_DECREF(list);
-        return PyString_FromString("");
-    case 1:
-        result = PyList_GET_ITEM(list, 0);
-        Py_INCREF(result);
-        Py_DECREF(list);
-        return result;
-    }
-
-    /* two or more elements: slice out a suitable separator from the
-       first member, and use that to join the entire list */
-
-    joiner = PySequence_GetSlice(PyList_GET_ITEM(list, 0), 0, 0);
-    if (!joiner)
-        return NULL;
-
-    function = PyObject_GetAttrString(joiner, "join");
-    if (!function) {
-        Py_DECREF(joiner);
-        return NULL;
-    }
-
-    args = PyTuple_New(1);
-    if (!args)
-        return NULL;
-
-    PyTuple_SET_ITEM(args, 0, list);
-
-    result = PyObject_CallObject(function, args);
-
-    Py_DECREF(args); /* also removes list */
-    Py_DECREF(function);
-    Py_DECREF(joiner);
-
-    return result;
-}
-
-/* -------------------------------------------------------------------- */
-/* the element type */
-
-typedef struct {
-
-    /* attributes (a dictionary object), or None if no attributes */
-    PyObject* attrib;
-
-    /* child elements */
-    int length; /* actual number of items */
-    int allocated; /* allocated items */
-
-    /* this either points to _children or to a malloced buffer */
-    PyObject* *children;
-
-    PyObject* _children[STATIC_CHILDREN];
-    
-} ElementObjectExtra;
-
-typedef struct {
-    PyObject_HEAD
-
-    /* element tag (a string). */
-    PyObject* tag;
-
-    /* text before first child.  note that this is a tagged pointer;
-       use JOIN_OBJ to get the object pointer.  the join flag is used
-       to distinguish lists created by the tree builder from lists
-       assigned to the attribute by application code; the former
-       should be joined before being returned to the user, the latter
-       should be left intact. */
-    PyObject* text;
-
-    /* text after this element, in parent.  note that this is a tagged
-       pointer; use JOIN_OBJ to get the object pointer. */
-    PyObject* tail;
-
-    ElementObjectExtra* extra;
-
-} ElementObject;
-
-staticforward PyTypeObject Element_Type;
-
-#define Element_CheckExact(op) (Py_TYPE(op) == &Element_Type)
-
-/* -------------------------------------------------------------------- */
-/* element constructor and destructor */
-
-LOCAL(int)
-element_new_extra(ElementObject* self, PyObject* attrib)
-{
-    self->extra = PyObject_Malloc(sizeof(ElementObjectExtra));
-    if (!self->extra)
-        return -1;
-
-    if (!attrib)
-        attrib = Py_None;
-
-    Py_INCREF(attrib);
-    self->extra->attrib = attrib;
-
-    self->extra->length = 0;
-    self->extra->allocated = STATIC_CHILDREN;
-    self->extra->children = self->extra->_children;
-
-    return 0;
-}
-
-LOCAL(void)
-element_dealloc_extra(ElementObject* self)
-{
-    int i;
-
-    Py_DECREF(self->extra->attrib);
-
-    for (i = 0; i < self->extra->length; i++)
-        Py_DECREF(self->extra->children[i]);
-
-    if (self->extra->children != self->extra->_children)
-        PyObject_Free(self->extra->children);
-
-    PyObject_Free(self->extra);
-}
-
-LOCAL(PyObject*)
-element_new(PyObject* tag, PyObject* attrib)
-{
-    ElementObject* self;
-
-    self = PyObject_New(ElementObject, &Element_Type);
-    if (self == NULL)
-        return NULL;
-
-    /* use None for empty dictionaries */
-    if (PyDict_CheckExact(attrib) && !PyDict_Size(attrib))
-        attrib = Py_None;
-
-    self->extra = NULL;
-
-    if (attrib != Py_None) {
-
-        if (element_new_extra(self, attrib) < 0) {
-            PyObject_Del(self);
-            return NULL;
-        }
-
-        self->extra->length = 0;
-        self->extra->allocated = STATIC_CHILDREN;
-        self->extra->children = self->extra->_children;
-
-    }
-
-    Py_INCREF(tag);
-    self->tag = tag;
-
-    Py_INCREF(Py_None);
-    self->text = Py_None;
-
-    Py_INCREF(Py_None);
-    self->tail = Py_None;
-
-    ALLOC(sizeof(ElementObject), "create element");
-
-    return (PyObject*) self;
-}
-
-LOCAL(int)
-element_resize(ElementObject* self, int extra)
-{
-    int size;
-    PyObject* *children;
-
-    /* make sure self->children can hold the given number of extra
-       elements.  set an exception and return -1 if allocation failed */
-
-    if (!self->extra)
-        element_new_extra(self, NULL);
-
-    size = self->extra->length + extra;
-
-    if (size > self->extra->allocated) {
-        /* use Python 2.4's list growth strategy */
-        size = (size >> 3) + (size < 9 ? 3 : 6) + size;
-        /* Coverity CID #182 size_error: Allocating 1 bytes to pointer "children"
-         * which needs at least 4 bytes. 
-         * Although it's a false alarm always assume at least one child to 
-         * be safe.
-         */
-        size = size ? size : 1;
-        if (self->extra->children != self->extra->_children) {
-            /* Coverity CID #182 size_error: Allocating 1 bytes to pointer
-             * "children", which needs at least 4 bytes. Although it's a 
-             * false alarm always assume at least one child to be safe.
-             */
-            children = PyObject_Realloc(self->extra->children,
-                                        size * sizeof(PyObject*));
-            if (!children)
-                goto nomemory;
-        } else {
-            children = PyObject_Malloc(size * sizeof(PyObject*));
-            if (!children)
-                goto nomemory;
-            /* copy existing children from static area to malloc buffer */
-            memcpy(children, self->extra->children,
-                   self->extra->length * sizeof(PyObject*));
-        }
-        self->extra->children = children;
-        self->extra->allocated = size;
-    }
-
-    return 0;
-
-  nomemory:
-    PyErr_NoMemory();
-    return -1;
-}
-
-LOCAL(int)
-element_add_subelement(ElementObject* self, PyObject* element)
-{
-    /* add a child element to a parent */
-
-    if (element_resize(self, 1) < 0)
-        return -1;
-
-    Py_INCREF(element);
-    self->extra->children[self->extra->length] = element;
-
-    self->extra->length++;
-
-    return 0;
-}
-
-LOCAL(PyObject*)
-element_get_attrib(ElementObject* self)
-{
-    /* return borrowed reference to attrib dictionary */
-    /* note: this function assumes that the extra section exists */
-
-    PyObject* res = self->extra->attrib;
-
-    if (res == Py_None) {
-        Py_DECREF(res);
-        /* create missing dictionary */
-        res = PyDict_New();
-        if (!res)
-            return NULL;
-        self->extra->attrib = res;
-    }
-
-    return res;
-}
-
-LOCAL(PyObject*)
-element_get_text(ElementObject* self)
-{
-    /* return borrowed reference to text attribute */
-
-    PyObject* res = self->text;
-
-    if (JOIN_GET(res)) {
-        res = JOIN_OBJ(res);
-        if (PyList_CheckExact(res)) {
-            res = list_join(res);
-            if (!res)
-                return NULL;
-            self->text = res;
-        }
-    }
-
-    return res;
-}
-
-LOCAL(PyObject*)
-element_get_tail(ElementObject* self)
-{
-    /* return borrowed reference to text attribute */
-
-    PyObject* res = self->tail;
-
-    if (JOIN_GET(res)) {
-        res = JOIN_OBJ(res);
-        if (PyList_CheckExact(res)) {
-            res = list_join(res);
-            if (!res)
-                return NULL;
-            self->tail = res;
-        }
-    }
-
-    return res;
-}
-
-static PyObject*
-element(PyObject* self, PyObject* args, PyObject* kw)
-{
-    PyObject* elem;
-
-    PyObject* tag;
-    PyObject* attrib = NULL;
-    if (!PyArg_ParseTuple(args, "O|O!:Element", &tag,
-                          &PyDict_Type, &attrib))
-        return NULL;
-
-    if (attrib || kw) {
-        attrib = (attrib) ? PyDict_Copy(attrib) : PyDict_New();
-        if (!attrib)
-            return NULL;
-        if (kw)
-            PyDict_Update(attrib, kw);
-    } else {
-        Py_INCREF(Py_None);
-        attrib = Py_None;
-    }
-
-    elem = element_new(tag, attrib);
-
-    Py_DECREF(attrib);
-
-    return elem;
-}
-
-static PyObject*
-subelement(PyObject* self, PyObject* args, PyObject* kw)
-{
-    PyObject* elem;
-
-    ElementObject* parent;
-    PyObject* tag;
-    PyObject* attrib = NULL;
-    if (!PyArg_ParseTuple(args, "O!O|O!:SubElement",
-                          &Element_Type, &parent, &tag,
-                          &PyDict_Type, &attrib))
-        return NULL;
-
-    if (attrib || kw) {
-        attrib = (attrib) ? PyDict_Copy(attrib) : PyDict_New();
-        if (!attrib)
-            return NULL;
-        if (kw)
-            PyDict_Update(attrib, kw);
-    } else {
-        Py_INCREF(Py_None);
-        attrib = Py_None;
-    }
-
-    elem = element_new(tag, attrib);
-
-    Py_DECREF(attrib);
-
-    if (element_add_subelement(parent, elem) < 0) {
-        Py_DECREF(elem);
-        return NULL;
-    }
-
-    return elem;
-}
-
-static void
-element_dealloc(ElementObject* self)
-{
-    if (self->extra)
-        element_dealloc_extra(self);
-
-    /* discard attributes */
-    Py_DECREF(self->tag);
-    Py_DECREF(JOIN_OBJ(self->text));
-    Py_DECREF(JOIN_OBJ(self->tail));
-
-    RELEASE(sizeof(ElementObject), "destroy element");
-
-    PyObject_Del(self);
-}
-
-/* -------------------------------------------------------------------- */
-/* methods (in alphabetical order) */
-
-static PyObject*
-element_append(ElementObject* self, PyObject* args)
-{
-    PyObject* element;
-    if (!PyArg_ParseTuple(args, "O!:append", &Element_Type, &element))
-        return NULL;
-
-    if (element_add_subelement(self, element) < 0)
-        return NULL;
-
-    Py_RETURN_NONE;
-}
-
-static PyObject*
-element_clear(ElementObject* self, PyObject* args)
-{
-    if (!PyArg_ParseTuple(args, ":clear"))
-        return NULL;
-
-    if (self->extra) {
-        element_dealloc_extra(self);
-        self->extra = NULL;
-    }
-
-    Py_INCREF(Py_None);
-    Py_DECREF(JOIN_OBJ(self->text));
-    self->text = Py_None;
-
-    Py_INCREF(Py_None);
-    Py_DECREF(JOIN_OBJ(self->tail));
-    self->tail = Py_None;
-
-    Py_RETURN_NONE;
-}
-
-static PyObject*
-element_copy(ElementObject* self, PyObject* args)
-{
-    int i;
-    ElementObject* element;
-
-    if (!PyArg_ParseTuple(args, ":__copy__"))
-        return NULL;
-
-    element = (ElementObject*) element_new(
-        self->tag, (self->extra) ? self->extra->attrib : Py_None
-        );
-    if (!element)
-        return NULL;
-
-    Py_DECREF(JOIN_OBJ(element->text));
-    element->text = self->text;
-    Py_INCREF(JOIN_OBJ(element->text));
-
-    Py_DECREF(JOIN_OBJ(element->tail));
-    element->tail = self->tail;
-    Py_INCREF(JOIN_OBJ(element->tail));
-
-    if (self->extra) {
-        
-        if (element_resize(element, self->extra->length) < 0) {
-            Py_DECREF(element);
-            return NULL;
-        }
-
-        for (i = 0; i < self->extra->length; i++) {
-            Py_INCREF(self->extra->children[i]);
-            element->extra->children[i] = self->extra->children[i];
-        }
-
-        element->extra->length = self->extra->length;
-        
-    }
-
-    return (PyObject*) element;
-}
-
-static PyObject*
-element_deepcopy(ElementObject* self, PyObject* args)
-{
-    int i;
-    ElementObject* element;
-    PyObject* tag;
-    PyObject* attrib;
-    PyObject* text;
-    PyObject* tail;
-    PyObject* id;
-
-    PyObject* memo;
-    if (!PyArg_ParseTuple(args, "O:__deepcopy__", &memo))
-        return NULL;
-
-    tag = deepcopy(self->tag, memo);
-    if (!tag)
-        return NULL;
-
-    if (self->extra) {
-        attrib = deepcopy(self->extra->attrib, memo);
-        if (!attrib) {
-            Py_DECREF(tag);
-            return NULL;
-        }
-    } else {
-        Py_INCREF(Py_None);
-        attrib = Py_None;
-    }
-
-    element = (ElementObject*) element_new(tag, attrib);
-
-    Py_DECREF(tag);
-    Py_DECREF(attrib);
-
-    if (!element)
-        return NULL;
-    
-    text = deepcopy(JOIN_OBJ(self->text), memo);
-    if (!text)
-        goto error;
-    Py_DECREF(element->text);
-    element->text = JOIN_SET(text, JOIN_GET(self->text));
-
-    tail = deepcopy(JOIN_OBJ(self->tail), memo);
-    if (!tail)
-        goto error;
-    Py_DECREF(element->tail);
-    element->tail = JOIN_SET(tail, JOIN_GET(self->tail));
-
-    if (self->extra) {
-        
-        if (element_resize(element, self->extra->length) < 0)
-            goto error;
-
-        for (i = 0; i < self->extra->length; i++) {
-            PyObject* child = deepcopy(self->extra->children[i], memo);
-            if (!child) {
-                element->extra->length = i;
-                goto error;
-            }
-            element->extra->children[i] = child;
-        }
-
-        element->extra->length = self->extra->length;
-        
-    }
-
-    /* add object to memo dictionary (so deepcopy won't visit it again) */
-    id = PyInt_FromLong((Py_uintptr_t) self);
-    if (!id)
-        goto error;
-
-    i = PyDict_SetItem(memo, id, (PyObject*) element);
-
-    Py_DECREF(id);
-
-    if (i < 0)
-        goto error;
-
-    return (PyObject*) element;
-
-  error:
-    Py_DECREF(element);
-    return NULL;
-}
-
-LOCAL(int)
-checkpath(PyObject* tag)
-{
-    Py_ssize_t i;
-    int check = 1;
-
-    /* check if a tag contains an xpath character */
-
-#define PATHCHAR(ch) \
-    (ch == '/' || ch == '*' || ch == '[' || ch == '@' || ch == '.')
-
-#if defined(Py_USING_UNICODE)
-    if (PyUnicode_Check(tag)) {
-        Py_UNICODE *p = PyUnicode_AS_UNICODE(tag);
-        for (i = 0; i < PyUnicode_GET_SIZE(tag); i++) {
-            if (p[i] == '{')
-                check = 0;
-            else if (p[i] == '}')
-                check = 1;
-            else if (check && PATHCHAR(p[i]))
-                return 1;
-        }
-        return 0;
-    }
-#endif
-    if (PyString_Check(tag)) {
-        char *p = PyString_AS_STRING(tag);
-        for (i = 0; i < PyString_GET_SIZE(tag); i++) {
-            if (p[i] == '{')
-                check = 0;
-            else if (p[i] == '}')
-                check = 1;
-            else if (check && PATHCHAR(p[i]))
-                return 1;
-        }
-        return 0;
-    }
-
-    return 1; /* unknown type; might be path expression */
-}
-
-static PyObject*
-element_extend(ElementObject* self, PyObject* args)
-{
-    PyObject* seq;
-    Py_ssize_t i, seqlen = 0;
-
-    PyObject* seq_in;
-    if (!PyArg_ParseTuple(args, "O:extend", &seq_in))
-        return NULL;
-
-    seq = PySequence_Fast(seq_in, "");
-    if (!seq) {
-        PyErr_Format(
-            PyExc_TypeError,
-            "expected sequence, not \"%.200s\"", Py_TYPE(seq_in)->tp_name
-            );
-        return NULL;
-    }
-
-    seqlen = PySequence_Size(seq);
-    for (i = 0; i < seqlen; i++) {
-        PyObject* element = PySequence_Fast_GET_ITEM(seq, i);
-        if (element_add_subelement(self, element) < 0) {
-            Py_DECREF(seq);
-            return NULL;
-        }
-    }
-
-    Py_DECREF(seq);
-
-    Py_RETURN_NONE;
-}
-
-static PyObject*
-element_find(ElementObject* self, PyObject* args)
-{
-    int i;
-
-    PyObject* tag;
-    PyObject* namespaces = Py_None;
-    if (!PyArg_ParseTuple(args, "O|O:find", &tag, &namespaces))
-        return NULL;
-
-    if (checkpath(tag) || namespaces != Py_None)
-        return PyObject_CallMethod(
-            elementpath_obj, "find", "OOO", self, tag, namespaces
-            );
-
-    if (!self->extra)
-        Py_RETURN_NONE;
-        
-    for (i = 0; i < self->extra->length; i++) {
-        PyObject* item = self->extra->children[i];
-        if (Element_CheckExact(item) &&
-            PyObject_Compare(((ElementObject*)item)->tag, tag) == 0) {
-            Py_INCREF(item);
-            return item;
-        }
-    }
-
-    Py_RETURN_NONE;
-}
-
-static PyObject*
-element_findtext(ElementObject* self, PyObject* args)
-{
-    int i;
-
-    PyObject* tag;
-    PyObject* default_value = Py_None;
-    PyObject* namespaces = Py_None;
-    if (!PyArg_ParseTuple(args, "O|OO:findtext", &tag, &default_value, &namespaces))
-        return NULL;
-
-    if (checkpath(tag) || namespaces != Py_None)
-        return PyObject_CallMethod(
-            elementpath_obj, "findtext", "OOOO", self, tag, default_value, namespaces
-            );
-
-    if (!self->extra) {
-        Py_INCREF(default_value);
-        return default_value;
-    }
-
-    for (i = 0; i < self->extra->length; i++) {
-        ElementObject* item = (ElementObject*) self->extra->children[i];
-        if (Element_CheckExact(item) && !PyObject_Compare(item->tag, tag)) {
-            PyObject* text = element_get_text(item);
-            if (text == Py_None)
-                return PyString_FromString("");
-            Py_XINCREF(text);
-            return text;
-        }
-    }
-
-    Py_INCREF(default_value);
-    return default_value;
-}
-
-static PyObject*
-element_findall(ElementObject* self, PyObject* args)
-{
-    int i;
-    PyObject* out;
-
-    PyObject* tag;
-    PyObject* namespaces = Py_None;
-    if (!PyArg_ParseTuple(args, "O|O:findall", &tag, &namespaces))
-        return NULL;
-
-    if (checkpath(tag) || namespaces != Py_None)
-        return PyObject_CallMethod(
-            elementpath_obj, "findall", "OOO", self, tag, namespaces
-            );
-
-    out = PyList_New(0);
-    if (!out)
-        return NULL;
-
-    if (!self->extra)
-        return out;
-
-    for (i = 0; i < self->extra->length; i++) {
-        PyObject* item = self->extra->children[i];
-        if (Element_CheckExact(item) &&
-            PyObject_Compare(((ElementObject*)item)->tag, tag) == 0) {
-            if (PyList_Append(out, item) < 0) {
-                Py_DECREF(out);
-                return NULL;
-            }
-        }
-    }
-
-    return out;
-}
-
-static PyObject*
-element_iterfind(ElementObject* self, PyObject* args)
-{
-    PyObject* tag;
-    PyObject* namespaces = Py_None;
-    if (!PyArg_ParseTuple(args, "O|O:iterfind", &tag, &namespaces))
-        return NULL;
-
-    return PyObject_CallMethod(
-        elementpath_obj, "iterfind", "OOO", self, tag, namespaces
-        );
-}
-
-static PyObject*
-element_get(ElementObject* self, PyObject* args)
-{
-    PyObject* value;
-
-    PyObject* key;
-    PyObject* default_value = Py_None;
-    if (!PyArg_ParseTuple(args, "O|O:get", &key, &default_value))
-        return NULL;
-
-    if (!self->extra || self->extra->attrib == Py_None)
-        value = default_value;
-    else {
-        value = PyDict_GetItem(self->extra->attrib, key);
-        if (!value)
-            value = default_value;
-    }
-
-    Py_INCREF(value);
-    return value;
-}
-
-static PyObject*
-element_getchildren(ElementObject* self, PyObject* args)
-{
-    int i;
-    PyObject* list;
-
-    /* FIXME: report as deprecated? */
-
-    if (!PyArg_ParseTuple(args, ":getchildren"))
-        return NULL;
-
-    if (!self->extra)
-        return PyList_New(0);
-
-    list = PyList_New(self->extra->length);
-    if (!list)
-        return NULL;
-
-    for (i = 0; i < self->extra->length; i++) {
-        PyObject* item = self->extra->children[i];
-        Py_INCREF(item);
-        PyList_SET_ITEM(list, i, item);
-    }
-
-    return list;
-}
-
-static PyObject*
-element_iter(ElementObject* self, PyObject* args)
-{
-    PyObject* result;
-    
-    PyObject* tag = Py_None;
-    if (!PyArg_ParseTuple(args, "|O:iter", &tag))
-        return NULL;
-
-    if (!elementtree_iter_obj) {
-        PyErr_SetString(
-            PyExc_RuntimeError,
-            "iter helper not found"
-            );
-        return NULL;
-    }
-
-    args = PyTuple_New(2);
-    if (!args)
-        return NULL;
-
-    Py_INCREF(self); PyTuple_SET_ITEM(args, 0, (PyObject*) self);
-    Py_INCREF(tag);  PyTuple_SET_ITEM(args, 1, (PyObject*) tag);
-
-    result = PyObject_CallObject(elementtree_iter_obj, args);
-
-    Py_DECREF(args);
-
-    return result;
-}
-
-
-static PyObject*
-element_itertext(ElementObject* self, PyObject* args)
-{
-    PyObject* result;
-    
-    if (!PyArg_ParseTuple(args, ":itertext"))
-        return NULL;
-
-    if (!elementtree_itertext_obj) {
-        PyErr_SetString(
-            PyExc_RuntimeError,
-            "itertext helper not found"
-            );
-        return NULL;
-    }
-
-    args = PyTuple_New(1);
-    if (!args)
-        return NULL;
-
-    Py_INCREF(self); PyTuple_SET_ITEM(args, 0, (PyObject*) self);
-
-    result = PyObject_CallObject(elementtree_itertext_obj, args);
-
-    Py_DECREF(args);
-
-    return result;
-}
-
-static PyObject*
-element_getitem(PyObject* self_, Py_ssize_t index)
-{
-    ElementObject* self = (ElementObject*) self_;
-
-    if (!self->extra || index < 0 || index >= self->extra->length) {
-        PyErr_SetString(
-            PyExc_IndexError,
-            "child index out of range"
-            );
-        return NULL;
-    }
-
-    Py_INCREF(self->extra->children[index]);
-    return self->extra->children[index];
-}
-
-static PyObject*
-element_insert(ElementObject* self, PyObject* args)
-{
-    int i;
-
-    int index;
-    PyObject* element;
-    if (!PyArg_ParseTuple(args, "iO!:insert", &index,
-                          &Element_Type, &element))
-        return NULL;
-
-    if (!self->extra)
-        element_new_extra(self, NULL);
-
-    if (index < 0) {
-        index += self->extra->length;
-        if (index < 0)
-            index = 0;
-    }
-    if (index > self->extra->length)
-        index = self->extra->length;
-
-    if (element_resize(self, 1) < 0)
-        return NULL;
-
-    for (i = self->extra->length; i > index; i--)
-        self->extra->children[i] = self->extra->children[i-1];
-
-    Py_INCREF(element);
-    self->extra->children[index] = element;
-
-    self->extra->length++;
-
-    Py_RETURN_NONE;
-}
-
-static PyObject*
-element_items(ElementObject* self, PyObject* args)
-{
-    if (!PyArg_ParseTuple(args, ":items"))
-        return NULL;
-
-    if (!self->extra || self->extra->attrib == Py_None)
-        return PyList_New(0);
-
-    return PyDict_Items(self->extra->attrib);
-}
-
-static PyObject*
-element_keys(ElementObject* self, PyObject* args)
-{
-    if (!PyArg_ParseTuple(args, ":keys"))
-        return NULL;
-
-    if (!self->extra || self->extra->attrib == Py_None)
-        return PyList_New(0);
-
-    return PyDict_Keys(self->extra->attrib);
-}
-
-static Py_ssize_t
-element_length(ElementObject* self)
-{
-    if (!self->extra)
-        return 0;
-
-    return self->extra->length;
-}
-
-static PyObject*
-element_makeelement(PyObject* self, PyObject* args, PyObject* kw)
-{
-    PyObject* elem;
-
-    PyObject* tag;
-    PyObject* attrib;
-    if (!PyArg_ParseTuple(args, "OO:makeelement", &tag, &attrib))
-        return NULL;
-
-    attrib = PyDict_Copy(attrib);
-    if (!attrib)
-        return NULL;
-
-    elem = element_new(tag, attrib);
-
-    Py_DECREF(attrib);
-
-    return elem;
-}
-
-static PyObject*
-element_reduce(ElementObject* self, PyObject* args)
-{
-    if (!PyArg_ParseTuple(args, ":__reduce__"))
-        return NULL;
-
-    /* Hack alert: This method is used to work around a __copy__
-       problem on certain 2.3 and 2.4 versions.  To save time and
-       simplify the code, we create the copy in here, and use a dummy
-       copyelement helper to trick the copy module into doing the
-       right thing. */
-
-    if (!elementtree_copyelement_obj) {
-        PyErr_SetString(
-            PyExc_RuntimeError,
-            "copyelement helper not found"
-            );
-        return NULL;
-    }
-
-    return Py_BuildValue(
-        "O(N)", elementtree_copyelement_obj, element_copy(self, args)
-        );
-}
-
-static PyObject*
-element_remove(ElementObject* self, PyObject* args)
-{
-    int i;
-
-    PyObject* element;
-    if (!PyArg_ParseTuple(args, "O!:remove", &Element_Type, &element))
-        return NULL;
-
-    if (!self->extra) {
-        /* element has no children, so raise exception */
-        PyErr_SetString(
-            PyExc_ValueError,
-            "list.remove(x): x not in list"
-            );
-        return NULL;
-    }
-
-    for (i = 0; i < self->extra->length; i++) {
-        if (self->extra->children[i] == element)
-            break;
-        if (PyObject_Compare(self->extra->children[i], element) == 0)
-            break;
-    }
-
-    if (i == self->extra->length) {
-        /* element is not in children, so raise exception */
-        PyErr_SetString(
-            PyExc_ValueError,
-            "list.remove(x): x not in list"
-            );
-        return NULL;
-    }
-
-    Py_DECREF(self->extra->children[i]);
-
-    self->extra->length--;
-
-    for (; i < self->extra->length; i++)
-        self->extra->children[i] = self->extra->children[i+1];
-
-    Py_RETURN_NONE;
-}
-
-static PyObject*
-element_repr(ElementObject* self)
-{
-    PyObject *repr, *tag;
-
-    tag = PyObject_Repr(self->tag);
-    if (!tag)
-        return NULL;
-
-    repr = PyString_FromFormat("<Element %s at %p>",
-                               PyString_AS_STRING(tag), self);
-
-    Py_DECREF(tag);
-
-    return repr;
-}
-
-static PyObject*
-element_set(ElementObject* self, PyObject* args)
-{
-    PyObject* attrib;
-
-    PyObject* key;
-    PyObject* value;
-    if (!PyArg_ParseTuple(args, "OO:set", &key, &value))
-        return NULL;
-
-    if (!self->extra)
-        element_new_extra(self, NULL);
-
-    attrib = element_get_attrib(self);
-    if (!attrib)
-        return NULL;
-
-    if (PyDict_SetItem(attrib, key, value) < 0)
-        return NULL;
-
-    Py_RETURN_NONE;
-}
-
-static int
-element_setitem(PyObject* self_, Py_ssize_t index, PyObject* item)
-{
-    ElementObject* self = (ElementObject*) self_;
-    int i;
-    PyObject* old;
-
-    if (!self->extra || index < 0 || index >= self->extra->length) {
-        PyErr_SetString(
-            PyExc_IndexError,
-            "child assignment index out of range");
-        return -1;
-    }
-
-    old = self->extra->children[index];
-
-    if (item) {
-        Py_INCREF(item);
-        self->extra->children[index] = item;
-    } else {
-        self->extra->length--;
-        for (i = index; i < self->extra->length; i++)
-            self->extra->children[i] = self->extra->children[i+1];
-    }
-
-    Py_DECREF(old);
-
-    return 0;
-}
-
-static PyObject*
-element_subscr(PyObject* self_, PyObject* item)
-{
-    ElementObject* self = (ElementObject*) self_;
-
-#if (PY_VERSION_HEX < 0x02050000)
-    if (PyInt_Check(item) || PyLong_Check(item)) {
-        long i = PyInt_AsLong(item);
-#else
-    if (PyIndex_Check(item)) {
-        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-#endif
-
-        if (i == -1 && PyErr_Occurred()) {
-            return NULL;
-        }
-        if (i < 0 && self->extra)
-            i += self->extra->length;
-        return element_getitem(self_, i);
-    }
-    else if (PySlice_Check(item)) {
-        Py_ssize_t start, stop, step, slicelen, cur, i;
-        PyObject* list;
-
-        if (!self->extra)
-            return PyList_New(0);
-
-        if (PySlice_GetIndicesEx((PySliceObject *)item,
-                self->extra->length,
-                &start, &stop, &step, &slicelen) < 0) {
-            return NULL;
-        }
-
-        if (slicelen <= 0)
-            return PyList_New(0);
-        else {
-            list = PyList_New(slicelen);
-            if (!list)
-                return NULL;
-
-            for (cur = start, i = 0; i < slicelen;
-                 cur += step, i++) {
-                PyObject* item = self->extra->children[cur];
-                Py_INCREF(item);
-                PyList_SET_ITEM(list, i, item);
-            }
-
-            return list;
-        }
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                "element indices must be integers");
-        return NULL;
-    }
-}
-
-static int
-element_ass_subscr(PyObject* self_, PyObject* item, PyObject* value)
-{
-    ElementObject* self = (ElementObject*) self_;
-
-#if (PY_VERSION_HEX < 0x02050000)
-    if (PyInt_Check(item) || PyLong_Check(item)) {
-        long i = PyInt_AsLong(item);
-#else
-    if (PyIndex_Check(item)) {
-        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-#endif
-
-        if (i == -1 && PyErr_Occurred()) {
-            return -1;
-        }
-        if (i < 0 && self->extra)
-            i += self->extra->length;
-        return element_setitem(self_, i, value);
-    }
-    else if (PySlice_Check(item)) {
-        Py_ssize_t start, stop, step, slicelen, newlen, cur, i;
-
-        PyObject* recycle = NULL;
-        PyObject* seq = NULL;
-
-        if (!self->extra)
-            element_new_extra(self, NULL);
-
-        if (PySlice_GetIndicesEx((PySliceObject *)item,
-                self->extra->length,
-                &start, &stop, &step, &slicelen) < 0) {
-            return -1;
-        }
-
-        if (value == NULL)
-            newlen = 0;
-        else {
-            seq = PySequence_Fast(value, "");
-            if (!seq) {
-                PyErr_Format(
-                    PyExc_TypeError,
-                    "expected sequence, not \"%.200s\"", Py_TYPE(value)->tp_name
-                    );
-                return -1;
-            }
-            newlen = PySequence_Size(seq);
-        }
-
-        if (step !=  1 && newlen != slicelen)
-        {
-            PyErr_Format(PyExc_ValueError,
-#if (PY_VERSION_HEX < 0x02050000)
-                "attempt to assign sequence of size %d "
-                "to extended slice of size %d",
-#else
-                "attempt to assign sequence of size %zd "
-                "to extended slice of size %zd",
-#endif
-                newlen, slicelen
-                );
-            return -1;
-        }
-
-
-        /* Resize before creating the recycle bin, to prevent refleaks. */
-        if (newlen > slicelen) {
-            if (element_resize(self, newlen - slicelen) < 0) {
-                if (seq) {
-                    Py_DECREF(seq);
-                }
-                return -1;
-            }
-        }
-
-        if (slicelen > 0) {
-            /* to avoid recursive calls to this method (via decref), move
-               old items to the recycle bin here, and get rid of them when
-               we're done modifying the element */
-            recycle = PyList_New(slicelen);
-            if (!recycle) {
-                if (seq) {
-                    Py_DECREF(seq);
-                }
-                return -1;
-            }
-            for (cur = start, i = 0; i < slicelen;
-                 cur += step, i++)
-                PyList_SET_ITEM(recycle, i, self->extra->children[cur]);
-        }
-
-        if (newlen < slicelen) {
-            /* delete slice */
-            for (i = stop; i < self->extra->length; i++)
-                self->extra->children[i + newlen - slicelen] = self->extra->children[i];
-        } else if (newlen > slicelen) {
-            /* insert slice */
-            for (i = self->extra->length-1; i >= stop; i--)
-                self->extra->children[i + newlen - slicelen] = self->extra->children[i];
-        }
-
-        /* replace the slice */
-        for (cur = start, i = 0; i < newlen;
-             cur += step, i++) {
-            PyObject* element = PySequence_Fast_GET_ITEM(seq, i);
-            Py_INCREF(element);
-            self->extra->children[cur] = element;
-        }
-
-        self->extra->length += newlen - slicelen;
-
-        if (seq) {
-            Py_DECREF(seq);
-        }
-
-        /* discard the recycle bin, and everything in it */
-        Py_XDECREF(recycle);
-
-        return 0;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                "element indices must be integers");
-        return -1;
-    }
-}
-
-static PyMethodDef element_methods[] = {
-
-    {"clear", (PyCFunction) element_clear, METH_VARARGS},
-
-    {"get", (PyCFunction) element_get, METH_VARARGS},
-    {"set", (PyCFunction) element_set, METH_VARARGS},
-
-    {"find", (PyCFunction) element_find, METH_VARARGS},
-    {"findtext", (PyCFunction) element_findtext, METH_VARARGS},
-    {"findall", (PyCFunction) element_findall, METH_VARARGS},
-
-    {"append", (PyCFunction) element_append, METH_VARARGS},
-    {"extend", (PyCFunction) element_extend, METH_VARARGS},
-    {"insert", (PyCFunction) element_insert, METH_VARARGS},
-    {"remove", (PyCFunction) element_remove, METH_VARARGS},
-
-    {"iter", (PyCFunction) element_iter, METH_VARARGS},
-    {"itertext", (PyCFunction) element_itertext, METH_VARARGS},
-    {"iterfind", (PyCFunction) element_iterfind, METH_VARARGS},
-
-    {"getiterator", (PyCFunction) element_iter, METH_VARARGS},
-    {"getchildren", (PyCFunction) element_getchildren, METH_VARARGS},
-
-    {"items", (PyCFunction) element_items, METH_VARARGS},
-    {"keys", (PyCFunction) element_keys, METH_VARARGS},
-
-    {"makeelement", (PyCFunction) element_makeelement, METH_VARARGS},
-
-    {"__copy__", (PyCFunction) element_copy, METH_VARARGS},
-    {"__deepcopy__", (PyCFunction) element_deepcopy, METH_VARARGS},
-
-    /* Some 2.3 and 2.4 versions do not handle the __copy__ method on
-       C objects correctly, so we have to fake it using a __reduce__-
-       based hack (see the element_reduce implementation above for
-       details). */
-
-    /* The behaviour has been changed in 2.3.5 and 2.4.1, so we're
-       using a runtime test to figure out if we need to fake things
-       or now (see the init code below).  The following entry is
-       enabled only if the hack is needed. */
-
-    {"!__reduce__", (PyCFunction) element_reduce, METH_VARARGS},
-
-    {NULL, NULL}
-};
-
-static PyObject*  
-element_getattr(ElementObject* self, char* name)
-{
-    PyObject* res;
-
-    /* handle common attributes first */
-    if (strcmp(name, "tag") == 0) {
-        res = self->tag;
-        Py_INCREF(res);
-        return res;
-    } else if (strcmp(name, "text") == 0) {
-        res = element_get_text(self);
-        Py_INCREF(res);
-        return res;
-    }
-
-    /* methods */
-    res = Py_FindMethod(element_methods, (PyObject*) self, name);
-    if (res)
-        return res;
-
-    PyErr_Clear();
-
-    /* less common attributes */
-    if (strcmp(name, "tail") == 0) {
-        res = element_get_tail(self);
-    } else if (strcmp(name, "attrib") == 0) {
-        if (!self->extra)
-            element_new_extra(self, NULL);
-        res = element_get_attrib(self);
-    } else {
-        PyErr_SetString(PyExc_AttributeError, name);
-        return NULL;
-    }
-
-    if (!res)
-        return NULL;
-
-    Py_INCREF(res);
-    return res;
-}
-
-static int
-element_setattr(ElementObject* self, const char* name, PyObject* value)
-{
-    if (value == NULL) {
-        PyErr_SetString(
-            PyExc_AttributeError,
-            "can't delete element attributes"
-            );
-        return -1;
-    }
-
-    if (strcmp(name, "tag") == 0) {
-        Py_DECREF(self->tag);
-        self->tag = value;
-        Py_INCREF(self->tag);
-    } else if (strcmp(name, "text") == 0) {
-        Py_DECREF(JOIN_OBJ(self->text));
-        self->text = value;
-        Py_INCREF(self->text);
-    } else if (strcmp(name, "tail") == 0) {
-        Py_DECREF(JOIN_OBJ(self->tail));
-        self->tail = value;
-        Py_INCREF(self->tail);
-    } else if (strcmp(name, "attrib") == 0) {
-        if (!self->extra)
-            element_new_extra(self, NULL);
-        Py_DECREF(self->extra->attrib);
-        self->extra->attrib = value;
-        Py_INCREF(self->extra->attrib);
-    } else {
-        PyErr_SetString(PyExc_AttributeError, name);
-        return -1;
-    }
-
-    return 0;
-}
-
-static PySequenceMethods element_as_sequence = {
-    (lenfunc) element_length,
-    0, /* sq_concat */
-    0, /* sq_repeat */
-    element_getitem,
-    0,
-    element_setitem,
-    0,
-};
-
-static PyMappingMethods element_as_mapping = {
-    (lenfunc) element_length,
-    (binaryfunc) element_subscr,
-    (objobjargproc) element_ass_subscr,
-};
-
-statichere PyTypeObject Element_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0, "Element", sizeof(ElementObject), 0,
-    /* methods */
-    (destructor)element_dealloc, /* tp_dealloc */
-    0, /* tp_print */
-    (getattrfunc)element_getattr, /* tp_getattr */
-    (setattrfunc)element_setattr, /* tp_setattr */
-    0, /* tp_compare */
-    (reprfunc)element_repr, /* tp_repr */
-    0, /* tp_as_number */
-    &element_as_sequence, /* tp_as_sequence */
-    &element_as_mapping, /* tp_as_mapping */
-};
-
-/* ==================================================================== */
-/* the tree builder type */
-
-typedef struct {
-    PyObject_HEAD
-
-    PyObject* root; /* root node (first created node) */
-
-    ElementObject* this; /* current node */
-    ElementObject* last; /* most recently created node */
-
-    PyObject* data; /* data collector (string or list), or NULL */
-
-    PyObject* stack; /* element stack */
-    Py_ssize_t index; /* current stack size (0=empty) */
-
-    /* element tracing */
-    PyObject* events; /* list of events, or NULL if not collecting */
-    PyObject* start_event_obj; /* event objects (NULL to ignore) */
-    PyObject* end_event_obj;
-    PyObject* start_ns_event_obj;
-    PyObject* end_ns_event_obj;
-
-} TreeBuilderObject;
-
-staticforward PyTypeObject TreeBuilder_Type;
-
-#define TreeBuilder_CheckExact(op) (Py_TYPE(op) == &TreeBuilder_Type)
-
-/* -------------------------------------------------------------------- */
-/* constructor and destructor */
-
-LOCAL(PyObject*)
-treebuilder_new(void)
-{
-    TreeBuilderObject* self;
-
-    self = PyObject_New(TreeBuilderObject, &TreeBuilder_Type);
-    if (self == NULL)
-        return NULL;
-
-    self->root = NULL;
-
-    Py_INCREF(Py_None);
-    self->this = (ElementObject*) Py_None;
-
-    Py_INCREF(Py_None);
-    self->last = (ElementObject*) Py_None;
-
-    self->data = NULL;
-
-    self->stack = PyList_New(20);
-    self->index = 0;
-
-    self->events = NULL;
-    self->start_event_obj = self->end_event_obj = NULL;
-    self->start_ns_event_obj = self->end_ns_event_obj = NULL;
-
-    ALLOC(sizeof(TreeBuilderObject), "create treebuilder");
-
-    return (PyObject*) self;
-}
-
-static PyObject*
-treebuilder(PyObject* self_, PyObject* args)
-{
-    if (!PyArg_ParseTuple(args, ":TreeBuilder"))
-        return NULL;
-
-    return treebuilder_new();
-}
-
-static void
-treebuilder_dealloc(TreeBuilderObject* self)
-{
-    Py_XDECREF(self->end_ns_event_obj);
-    Py_XDECREF(self->start_ns_event_obj);
-    Py_XDECREF(self->end_event_obj);
-    Py_XDECREF(self->start_event_obj);
-    Py_XDECREF(self->events);
-    Py_DECREF(self->stack);
-    Py_XDECREF(self->data);
-    Py_DECREF(self->last);
-    Py_DECREF(self->this);
-    Py_XDECREF(self->root);
-
-    RELEASE(sizeof(TreeBuilderObject), "destroy treebuilder");
-
-    PyObject_Del(self);
-}
-
-/* -------------------------------------------------------------------- */
-/* handlers */
-
-LOCAL(PyObject*)
-treebuilder_handle_xml(TreeBuilderObject* self, PyObject* encoding,
-                       PyObject* standalone)
-{
-    Py_RETURN_NONE;
-}
-
-LOCAL(PyObject*)
-treebuilder_handle_start(TreeBuilderObject* self, PyObject* tag,
-                         PyObject* attrib)
-{
-    PyObject* node;
-    PyObject* this;
-
-    if (self->data) {
-        if (self->this == self->last) {
-            Py_DECREF(JOIN_OBJ(self->last->text));
-            self->last->text = JOIN_SET(
-                self->data, PyList_CheckExact(self->data)
-                );
-        } else {
-            Py_DECREF(JOIN_OBJ(self->last->tail));
-            self->last->tail = JOIN_SET(
-                self->data, PyList_CheckExact(self->data)
-                );
-        }
-        self->data = NULL;
-    }
-
-    node = element_new(tag, attrib);
-    if (!node)
-        return NULL;
-
-    this = (PyObject*) self->this;
-
-    if (this != Py_None) {
-        if (element_add_subelement((ElementObject*) this, node) < 0)
-            goto error;
-    } else {
-        if (self->root) {
-            PyErr_SetString(
-                elementtree_parseerror_obj,
-                "multiple elements on top level"
-                );
-            goto error;
-        }
-        Py_INCREF(node);
-        self->root = node;
-    }
-
-    if (self->index < PyList_GET_SIZE(self->stack)) {
-        if (PyList_SetItem(self->stack, self->index, this) < 0)
-            goto error;
-        Py_INCREF(this);
-    } else {
-        if (PyList_Append(self->stack, this) < 0)
-            goto error;
-    }
-    self->index++;
-
-    Py_DECREF(this);
-    Py_INCREF(node);
-    self->this = (ElementObject*) node;
-
-    Py_DECREF(self->last);
-    Py_INCREF(node);
-    self->last = (ElementObject*) node;
-
-    if (self->start_event_obj) {
-        PyObject* res;
-        PyObject* action = self->start_event_obj;
-        res = PyTuple_New(2);
-        if (res) {
-            Py_INCREF(action); PyTuple_SET_ITEM(res, 0, (PyObject*) action);
-            Py_INCREF(node);   PyTuple_SET_ITEM(res, 1, (PyObject*) node);
-            PyList_Append(self->events, res);
-            Py_DECREF(res);
-        } else
-            PyErr_Clear(); /* FIXME: propagate error */
-    }
-
-    return node;
-
-  error:
-    Py_DECREF(node);
-    return NULL;
-}
-
-LOCAL(PyObject*)
-treebuilder_handle_data(TreeBuilderObject* self, PyObject* data)
-{
-    if (!self->data) {
-        if (self->last == (ElementObject*) Py_None) {
-            /* ignore calls to data before the first call to start */
-            Py_RETURN_NONE;
-        }
-        /* store the first item as is */
-        Py_INCREF(data); self->data = data;
-    } else {
-        /* more than one item; use a list to collect items */
-        if (PyString_CheckExact(self->data) && Py_REFCNT(self->data) == 1 &&
-            PyString_CheckExact(data) && PyString_GET_SIZE(data) == 1) {
-            /* expat often generates single character data sections; handle
-               the most common case by resizing the existing string... */
-            Py_ssize_t size = PyString_GET_SIZE(self->data);
-            if (_PyString_Resize(&self->data, size + 1) < 0)
-                return NULL;
-            PyString_AS_STRING(self->data)[size] = PyString_AS_STRING(data)[0];
-        } else if (PyList_CheckExact(self->data)) {
-            if (PyList_Append(self->data, data) < 0)
-                return NULL;
-        } else {
-            PyObject* list = PyList_New(2);
-            if (!list)
-                return NULL;
-            PyList_SET_ITEM(list, 0, self->data);
-            Py_INCREF(data); PyList_SET_ITEM(list, 1, data);
-            self->data = list;
-        }
-    }
-
-    Py_RETURN_NONE;
-}
-
-LOCAL(PyObject*)
-treebuilder_handle_end(TreeBuilderObject* self, PyObject* tag)
-{
-    PyObject* item;
-
-    if (self->data) {
-        if (self->this == self->last) {
-            Py_DECREF(JOIN_OBJ(self->last->text));
-            self->last->text = JOIN_SET(
-                self->data, PyList_CheckExact(self->data)
-                );
-        } else {
-            Py_DECREF(JOIN_OBJ(self->last->tail));
-            self->last->tail = JOIN_SET(
-                self->data, PyList_CheckExact(self->data)
-                );
-        }
-        self->data = NULL;
-    }
-
-    if (self->index == 0) {
-        PyErr_SetString(
-            PyExc_IndexError,
-            "pop from empty stack"
-            );
-        return NULL;
-    }
-
-    self->index--;
-
-    item = PyList_GET_ITEM(self->stack, self->index);
-    Py_INCREF(item);
-
-    Py_DECREF(self->last);
-
-    self->last = (ElementObject*) self->this;
-    self->this = (ElementObject*) item;
-
-    if (self->end_event_obj) {
-        PyObject* res;
-        PyObject* action = self->end_event_obj;
-        PyObject* node = (PyObject*) self->last;
-        res = PyTuple_New(2);
-        if (res) {
-            Py_INCREF(action); PyTuple_SET_ITEM(res, 0, (PyObject*) action);
-            Py_INCREF(node);   PyTuple_SET_ITEM(res, 1, (PyObject*) node);
-            PyList_Append(self->events, res);
-            Py_DECREF(res);
-        } else
-            PyErr_Clear(); /* FIXME: propagate error */
-    }
-
-    Py_INCREF(self->last);
-    return (PyObject*) self->last;
-}
-
-LOCAL(void)
-treebuilder_handle_namespace(TreeBuilderObject* self, int start,
-                             PyObject *prefix, PyObject *uri)
-{
-    PyObject* res;
-    PyObject* action;
-    PyObject* parcel;
-
-    if (!self->events)
-        return;
-
-    if (start) {
-        if (!self->start_ns_event_obj)
-            return;
-        action = self->start_ns_event_obj;
-        parcel = Py_BuildValue("OO", prefix, uri);
-        if (!parcel)
-            return;
-        Py_INCREF(action);
-    } else {
-        if (!self->end_ns_event_obj)
-            return;
-        action = self->end_ns_event_obj;
-        Py_INCREF(action);
-        parcel = Py_None;
-        Py_INCREF(parcel);
-    }
-
-    res = PyTuple_New(2);
-
-    if (res) {
-        PyTuple_SET_ITEM(res, 0, action);
-        PyTuple_SET_ITEM(res, 1, parcel);
-        PyList_Append(self->events, res);
-        Py_DECREF(res);
-    } else
-        PyErr_Clear(); /* FIXME: propagate error */
-}
-
-/* -------------------------------------------------------------------- */
-/* methods (in alphabetical order) */
-
-static PyObject*
-treebuilder_data(TreeBuilderObject* self, PyObject* args)
-{
-    PyObject* data;
-    if (!PyArg_ParseTuple(args, "O:data", &data))
-        return NULL;
-
-    return treebuilder_handle_data(self, data);
-}
-
-static PyObject*
-treebuilder_end(TreeBuilderObject* self, PyObject* args)
-{
-    PyObject* tag;
-    if (!PyArg_ParseTuple(args, "O:end", &tag))
-        return NULL;
-
-    return treebuilder_handle_end(self, tag);
-}
-
-LOCAL(PyObject*)
-treebuilder_done(TreeBuilderObject* self)
-{
-    PyObject* res;
-
-    /* FIXME: check stack size? */
-
-    if (self->root)
-        res = self->root;
-    else
-        res = Py_None;
-
-    Py_INCREF(res);
-    return res;
-}
-
-static PyObject*
-treebuilder_close(TreeBuilderObject* self, PyObject* args)
-{
-    if (!PyArg_ParseTuple(args, ":close"))
-        return NULL;
-
-    return treebuilder_done(self);
-}
-
-static PyObject*
-treebuilder_start(TreeBuilderObject* self, PyObject* args)
-{
-    PyObject* tag;
-    PyObject* attrib = Py_None;
-    if (!PyArg_ParseTuple(args, "O|O:start", &tag, &attrib))
-        return NULL;
-
-    return treebuilder_handle_start(self, tag, attrib);
-}
-
-static PyObject*
-treebuilder_xml(TreeBuilderObject* self, PyObject* args)
-{
-    PyObject* encoding;
-    PyObject* standalone;
-    if (!PyArg_ParseTuple(args, "OO:xml", &encoding, &standalone))
-        return NULL;
-
-    return treebuilder_handle_xml(self, encoding, standalone);
-}
-
-static PyMethodDef treebuilder_methods[] = {
-    {"data", (PyCFunction) treebuilder_data, METH_VARARGS},
-    {"start", (PyCFunction) treebuilder_start, METH_VARARGS},
-    {"end", (PyCFunction) treebuilder_end, METH_VARARGS},
-    {"xml", (PyCFunction) treebuilder_xml, METH_VARARGS},
-    {"close", (PyCFunction) treebuilder_close, METH_VARARGS},
-    {NULL, NULL}
-};
-
-static PyObject*  
-treebuilder_getattr(TreeBuilderObject* self, char* name)
-{
-    return Py_FindMethod(treebuilder_methods, (PyObject*) self, name);
-}
-
-statichere PyTypeObject TreeBuilder_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0, "TreeBuilder", sizeof(TreeBuilderObject), 0,
-    /* methods */
-    (destructor)treebuilder_dealloc, /* tp_dealloc */
-    0, /* tp_print */
-    (getattrfunc)treebuilder_getattr, /* tp_getattr */
-};
-
-/* ==================================================================== */
-/* the expat interface */
-
-#if defined(USE_EXPAT)
-
-#include "expat.h"
-
-#if defined(USE_PYEXPAT_CAPI)
-#include "pyexpat.h"
-static struct PyExpat_CAPI* expat_capi;
-#define EXPAT(func) (expat_capi->func)
-#else
-#define EXPAT(func) (XML_##func)
-#endif
-
-typedef struct {
-    PyObject_HEAD
-
-    XML_Parser parser;
-
-    PyObject* target;
-    PyObject* entity;
-
-    PyObject* names;
-
-    PyObject* handle_xml;
-
-    PyObject* handle_start;
-    PyObject* handle_data;
-    PyObject* handle_end;
-
-    PyObject* handle_comment;
-    PyObject* handle_pi;
-
-    PyObject* handle_close;
-
-} XMLParserObject;
-
-staticforward PyTypeObject XMLParser_Type;
-
-/* helpers */
-
-#if defined(Py_USING_UNICODE)
-LOCAL(int)
-checkstring(const char* string, int size)
-{
-    int i;
-
-    /* check if an 8-bit string contains UTF-8 characters */
-    for (i = 0; i < size; i++)
-        if (string[i] & 0x80)
-            return 1;
-
-    return 0;
-}
-#endif
-
-LOCAL(PyObject*)
-makestring(const char* string, int size)
-{
-    /* convert a UTF-8 string to either a 7-bit ascii string or a
-       Unicode string */
-
-#if defined(Py_USING_UNICODE)
-    if (checkstring(string, size))
-        return PyUnicode_DecodeUTF8(string, size, "strict");
-#endif
-
-    return PyString_FromStringAndSize(string, size);
-}
-
-LOCAL(PyObject*)
-makeuniversal(XMLParserObject* self, const char* string)
-{
-    /* convert a UTF-8 tag/attribute name from the expat parser
-       to a universal name string */
-
-    int size = strlen(string);
-    PyObject* key;
-    PyObject* value;
-
-    /* look the 'raw' name up in the names dictionary */
-    key = PyString_FromStringAndSize(string, size);
-    if (!key)
-        return NULL;
-
-    value = PyDict_GetItem(self->names, key);
-
-    if (value) {
-        Py_INCREF(value);
-    } else {
-        /* new name.  convert to universal name, and decode as
-           necessary */
-
-        PyObject* tag;
-        char* p;
-        int i;
-
-        /* look for namespace separator */
-        for (i = 0; i < size; i++)
-            if (string[i] == '}')
-                break;
-        if (i != size) {
-            /* convert to universal name */
-            tag = PyString_FromStringAndSize(NULL, size+1);
-            p = PyString_AS_STRING(tag);
-            p[0] = '{';
-            memcpy(p+1, string, size);
-            size++;
-        } else {
-            /* plain name; use key as tag */
-            Py_INCREF(key);
-            tag = key;
-        }
-        
-        /* decode universal name */
-#if defined(Py_USING_UNICODE)
-        /* inline makestring, to avoid duplicating the source string if
-           it's not an utf-8 string */
-        p = PyString_AS_STRING(tag);
-        if (checkstring(p, size)) {
-            value = PyUnicode_DecodeUTF8(p, size, "strict");
-            Py_DECREF(tag);
-            if (!value) {
-                Py_DECREF(key);
-                return NULL;
-            }
-        } else
-#endif
-            value = tag; /* use tag as is */
-
-        /* add to names dictionary */
-        if (PyDict_SetItem(self->names, key, value) < 0) {
-            Py_DECREF(key);
-            Py_DECREF(value);
-            return NULL;
-        }
-    }
-
-    Py_DECREF(key);
-    return value;
-}
-
-static void
-expat_set_error(const char* message, int line, int column)
-{
-    PyObject *error;
-    PyObject *position;
-    char buffer[256];
-
-    sprintf(buffer, "%s: line %d, column %d", message, line, column);
-
-    error = PyObject_CallFunction(elementtree_parseerror_obj, "s", buffer);
-    if (!error)
-        return;
-
-    /* add position attribute */
-    position = Py_BuildValue("(ii)", line, column);
-    if (!position) {
-        Py_DECREF(error);
-        return;
-    }
-    if (PyObject_SetAttrString(error, "position", position) == -1) {
-        Py_DECREF(error);
-        Py_DECREF(position);
-        return;
-    }
-    Py_DECREF(position);
-
-    PyErr_SetObject(elementtree_parseerror_obj, error);
-    Py_DECREF(error);
-}
-
-/* -------------------------------------------------------------------- */
-/* handlers */
-
-static void
-expat_default_handler(XMLParserObject* self, const XML_Char* data_in,
-                      int data_len)
-{
-    PyObject* key;
-    PyObject* value;
-    PyObject* res;
-
-    if (data_len < 2 || data_in[0] != '&')
-        return;
-
-    key = makestring(data_in + 1, data_len - 2);
-    if (!key)
-        return;
-
-    value = PyDict_GetItem(self->entity, key);
-
-    if (value) {
-        if (TreeBuilder_CheckExact(self->target))
-            res = treebuilder_handle_data(
-                (TreeBuilderObject*) self->target, value
-                );
-        else if (self->handle_data)
-            res = PyObject_CallFunction(self->handle_data, "O", value);
-        else
-            res = NULL;
-        Py_XDECREF(res);
-    } else if (!PyErr_Occurred()) {
-        /* Report the first error, not the last */
-        char message[128];
-        sprintf(message, "undefined entity &%.100s;", PyString_AS_STRING(key));
-        expat_set_error(
-            message,
-            EXPAT(GetErrorLineNumber)(self->parser),
-            EXPAT(GetErrorColumnNumber)(self->parser)
-            );
-    }
-
-    Py_DECREF(key);
-}
-
-static void
-expat_start_handler(XMLParserObject* self, const XML_Char* tag_in,
-                    const XML_Char **attrib_in)
-{
-    PyObject* res;
-    PyObject* tag;
-    PyObject* attrib;
-    int ok;
-
-    /* tag name */
-    tag = makeuniversal(self, tag_in);
-    if (!tag)
-        return; /* parser will look for errors */
-
-    /* attributes */
-    if (attrib_in[0]) {
-        attrib = PyDict_New();
-        if (!attrib)
-            return;
-        while (attrib_in[0] && attrib_in[1]) {
-            PyObject* key = makeuniversal(self, attrib_in[0]);
-            PyObject* value = makestring(attrib_in[1], strlen(attrib_in[1]));
-            if (!key || !value) {
-                Py_XDECREF(value);
-                Py_XDECREF(key);
-                Py_DECREF(attrib);
-                return;
-            }
-            ok = PyDict_SetItem(attrib, key, value);
-            Py_DECREF(value);
-            Py_DECREF(key);
-            if (ok < 0) {
-                Py_DECREF(attrib);
-                return;
-            }
-            attrib_in += 2;
-        }
-    } else {
-        Py_INCREF(Py_None);
-        attrib = Py_None;
-    }
-
-    if (TreeBuilder_CheckExact(self->target))
-        /* shortcut */
-        res = treebuilder_handle_start((TreeBuilderObject*) self->target,
-                                       tag, attrib);
-    else if (self->handle_start) {
-        if (attrib == Py_None) {
-            Py_DECREF(attrib);
-            attrib = PyDict_New();
-            if (!attrib)
-                return;
-        }
-        res = PyObject_CallFunction(self->handle_start, "OO", tag, attrib);
-    } else
-        res = NULL;
-
-    Py_DECREF(tag);
-    Py_DECREF(attrib);
-
-    Py_XDECREF(res);
-}
-
-static void
-expat_data_handler(XMLParserObject* self, const XML_Char* data_in,
-                   int data_len)
-{
-    PyObject* data;
-    PyObject* res;
-
-    data = makestring(data_in, data_len);
-    if (!data)
-        return; /* parser will look for errors */
-
-    if (TreeBuilder_CheckExact(self->target))
-        /* shortcut */
-        res = treebuilder_handle_data((TreeBuilderObject*) self->target, data);
-    else if (self->handle_data)
-        res = PyObject_CallFunction(self->handle_data, "O", data);
-    else
-        res = NULL;
-
-    Py_DECREF(data);
-
-    Py_XDECREF(res);
-}
-
-static void
-expat_end_handler(XMLParserObject* self, const XML_Char* tag_in)
-{
-    PyObject* tag;
-    PyObject* res = NULL;
-
-    if (TreeBuilder_CheckExact(self->target))
-        /* shortcut */
-        /* the standard tree builder doesn't look at the end tag */
-        res = treebuilder_handle_end(
-            (TreeBuilderObject*) self->target, Py_None
-            );
-    else if (self->handle_end) {
-        tag = makeuniversal(self, tag_in);
-        if (tag) {
-            res = PyObject_CallFunction(self->handle_end, "O", tag);
-            Py_DECREF(tag);
-        }
-    }
-
-    Py_XDECREF(res);
-}
-
-static void
-expat_start_ns_handler(XMLParserObject* self, const XML_Char* prefix,
-                       const XML_Char *uri)
-{
-    PyObject* sprefix = NULL;
-    PyObject* suri = NULL;
-
-    suri = makestring(uri, strlen(uri));
-    if (!suri)
-        return;
-
-    if (prefix)
-        sprefix = makestring(prefix, strlen(prefix));
-    else
-        sprefix = PyString_FromStringAndSize("", 0);
-    if (!sprefix) {
-        Py_DECREF(suri);
-        return;
-    }
-
-    treebuilder_handle_namespace(
-        (TreeBuilderObject*) self->target, 1, sprefix, suri
-        );
-
-    Py_DECREF(sprefix);
-    Py_DECREF(suri);
-}
-
-static void
-expat_end_ns_handler(XMLParserObject* self, const XML_Char* prefix_in)
-{
-    treebuilder_handle_namespace(
-        (TreeBuilderObject*) self->target, 0, NULL, NULL
-        );
-}
-
-static void
-expat_comment_handler(XMLParserObject* self, const XML_Char* comment_in)
-{
-    PyObject* comment;
-    PyObject* res;
-
-    if (self->handle_comment) {
-        comment = makestring(comment_in, strlen(comment_in));
-        if (comment) {
-            res = PyObject_CallFunction(self->handle_comment, "O", comment);
-            Py_XDECREF(res);
-            Py_DECREF(comment);
-        }
-    }
-}
-
-static void
-expat_pi_handler(XMLParserObject* self, const XML_Char* target_in,
-                 const XML_Char* data_in)
-{
-    PyObject* target;
-    PyObject* data;
-    PyObject* res;
-
-    if (self->handle_pi) {
-        target = makestring(target_in, strlen(target_in));
-        data = makestring(data_in, strlen(data_in));
-        if (target && data) {
-            res = PyObject_CallFunction(self->handle_pi, "OO", target, data);
-            Py_XDECREF(res);
-            Py_DECREF(data);
-            Py_DECREF(target);
-        } else {
-            Py_XDECREF(data);
-            Py_XDECREF(target);
-        }
-    }
-}
-
-#if defined(Py_USING_UNICODE)
-static int
-expat_unknown_encoding_handler(XMLParserObject *self, const XML_Char *name,
-                               XML_Encoding *info)
-{
-    PyObject* u;
-    Py_UNICODE* p;
-    unsigned char s[256];
-    int i;
-
-    memset(info, 0, sizeof(XML_Encoding));
-
-    for (i = 0; i < 256; i++)
-        s[i] = i;
-    
-    u = PyUnicode_Decode((char*) s, 256, name, "replace");
-    if (!u)
-        return XML_STATUS_ERROR;
-
-    if (PyUnicode_GET_SIZE(u) != 256) {
-        Py_DECREF(u);
-        return XML_STATUS_ERROR;
-    }
-
-    p = PyUnicode_AS_UNICODE(u);
-
-    for (i = 0; i < 256; i++) {
-        if (p[i] != Py_UNICODE_REPLACEMENT_CHARACTER)
-            info->map[i] = p[i];
-        else
-            info->map[i] = -1;
-    }
-
-    Py_DECREF(u);
-
-    return XML_STATUS_OK;
-}
-#endif
-
-/* -------------------------------------------------------------------- */
-/* constructor and destructor */
-
-static PyObject*
-xmlparser(PyObject* self_, PyObject* args, PyObject* kw)
-{
-    XMLParserObject* self;
-    /* FIXME: does this need to be static? */
-    static XML_Memory_Handling_Suite memory_handler;
-
-    PyObject* target = NULL;
-    char* encoding = NULL;
-    static char* kwlist[] = { "target", "encoding", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "|Oz:XMLParser", kwlist,
-                                     &target, &encoding))
-        return NULL;
-
-#if defined(USE_PYEXPAT_CAPI)
-    if (!expat_capi) {
-        PyErr_SetString(
-            PyExc_RuntimeError, "cannot load dispatch table from pyexpat"
-            );
-        return NULL;
-    }
-#endif
-
-    self = PyObject_New(XMLParserObject, &XMLParser_Type);
-    if (self == NULL)
-        return NULL;
-
-    self->entity = PyDict_New();
-    if (!self->entity) {
-        PyObject_Del(self);
-        return NULL;
-    }
-     
-    self->names = PyDict_New();
-    if (!self->names) {
-        PyObject_Del(self->entity);
-        PyObject_Del(self);
-        return NULL;
-    }
-
-    memory_handler.malloc_fcn = PyObject_Malloc;
-    memory_handler.realloc_fcn = PyObject_Realloc;
-    memory_handler.free_fcn = PyObject_Free;
-
-    self->parser = EXPAT(ParserCreate_MM)(encoding, &memory_handler, "}");
-    if (!self->parser) {
-        PyObject_Del(self->names);
-        PyObject_Del(self->entity);
-        PyObject_Del(self);
-        PyErr_NoMemory();
-        return NULL;
-    }
-
-    /* setup target handlers */
-    if (!target) {
-        target = treebuilder_new();
-        if (!target) {
-            EXPAT(ParserFree)(self->parser);
-            PyObject_Del(self->names);
-            PyObject_Del(self->entity);
-            PyObject_Del(self);
-            return NULL;
-        }
-    } else
-        Py_INCREF(target);
-    self->target = target;
-
-    self->handle_xml = PyObject_GetAttrString(target, "xml");
-    self->handle_start = PyObject_GetAttrString(target, "start");
-    self->handle_data = PyObject_GetAttrString(target, "data");
-    self->handle_end = PyObject_GetAttrString(target, "end");
-    self->handle_comment = PyObject_GetAttrString(target, "comment");
-    self->handle_pi = PyObject_GetAttrString(target, "pi");
-    self->handle_close = PyObject_GetAttrString(target, "close");
-
-    PyErr_Clear();
-
-    /* configure parser */
-    EXPAT(SetUserData)(self->parser, self);
-    EXPAT(SetElementHandler)(
-        self->parser,
-        (XML_StartElementHandler) expat_start_handler,
-        (XML_EndElementHandler) expat_end_handler
-        );
-    EXPAT(SetDefaultHandlerExpand)(
-        self->parser,
-        (XML_DefaultHandler) expat_default_handler
-        );
-    EXPAT(SetCharacterDataHandler)(
-        self->parser,
-        (XML_CharacterDataHandler) expat_data_handler
-        );
-    if (self->handle_comment)
-        EXPAT(SetCommentHandler)(
-            self->parser,
-            (XML_CommentHandler) expat_comment_handler
-            );
-    if (self->handle_pi)
-        EXPAT(SetProcessingInstructionHandler)(
-            self->parser,
-            (XML_ProcessingInstructionHandler) expat_pi_handler
-            );
-#if defined(Py_USING_UNICODE)
-    EXPAT(SetUnknownEncodingHandler)(
-        self->parser,
-        (XML_UnknownEncodingHandler) expat_unknown_encoding_handler, NULL
-        );
-#endif
-
-    ALLOC(sizeof(XMLParserObject), "create expatparser");
-
-    return (PyObject*) self;
-}
-
-static void
-xmlparser_dealloc(XMLParserObject* self)
-{
-    EXPAT(ParserFree)(self->parser);
-
-    Py_XDECREF(self->handle_close);
-    Py_XDECREF(self->handle_pi);
-    Py_XDECREF(self->handle_comment);
-    Py_XDECREF(self->handle_end);
-    Py_XDECREF(self->handle_data);
-    Py_XDECREF(self->handle_start);
-    Py_XDECREF(self->handle_xml);
-
-    Py_DECREF(self->target);
-    Py_DECREF(self->entity);
-    Py_DECREF(self->names);
-
-    RELEASE(sizeof(XMLParserObject), "destroy expatparser");
-
-    PyObject_Del(self);
-}
-
-/* -------------------------------------------------------------------- */
-/* methods (in alphabetical order) */
-
-LOCAL(PyObject*)
-expat_parse(XMLParserObject* self, char* data, int data_len, int final)
-{
-    int ok;
-
-    ok = EXPAT(Parse)(self->parser, data, data_len, final);
-
-    if (PyErr_Occurred())
-        return NULL;
-
-    if (!ok) {
-        expat_set_error(
-            EXPAT(ErrorString)(EXPAT(GetErrorCode)(self->parser)),
-            EXPAT(GetErrorLineNumber)(self->parser),
-            EXPAT(GetErrorColumnNumber)(self->parser)
-            );
-        return NULL;
-    }
-
-    Py_RETURN_NONE;
-}
-
-static PyObject*
-xmlparser_close(XMLParserObject* self, PyObject* args)
-{
-    /* end feeding data to parser */
-
-    PyObject* res;
-    if (!PyArg_ParseTuple(args, ":close"))
-        return NULL;
-
-    res = expat_parse(self, "", 0, 1);
-    if (!res)
-        return NULL;
-
-    if (TreeBuilder_CheckExact(self->target)) {
-        Py_DECREF(res);
-        return treebuilder_done((TreeBuilderObject*) self->target);
-    } if (self->handle_close) {
-        Py_DECREF(res);
-        return PyObject_CallFunction(self->handle_close, "");
-    } else
-        return res;
-}
-
-static PyObject*
-xmlparser_feed(XMLParserObject* self, PyObject* args)
-{
-    /* feed data to parser */
-
-    char* data;
-    int data_len;
-    if (!PyArg_ParseTuple(args, "s#:feed", &data, &data_len))
-        return NULL;
-
-    return expat_parse(self, data, data_len, 0);
-}
-
-static PyObject*
-xmlparser_parse(XMLParserObject* self, PyObject* args)
-{
-    /* (internal) parse until end of input stream */
-
-    PyObject* reader;
-    PyObject* buffer;
-    PyObject* res;
-
-    PyObject* fileobj;
-    if (!PyArg_ParseTuple(args, "O:_parse", &fileobj))
-        return NULL;
-
-    reader = PyObject_GetAttrString(fileobj, "read");
-    if (!reader)
-        return NULL;
-    
-    /* read from open file object */
-    for (;;) {
-
-        buffer = PyObject_CallFunction(reader, "i", 64*1024);
-
-        if (!buffer) {
-            /* read failed (e.g. due to KeyboardInterrupt) */
-            Py_DECREF(reader);
-            return NULL;
-        }
-
-        if (!PyString_CheckExact(buffer) || PyString_GET_SIZE(buffer) == 0) {
-            Py_DECREF(buffer);
-            break;
-        }
-
-        res = expat_parse(
-            self, PyString_AS_STRING(buffer), PyString_GET_SIZE(buffer), 0
-            );
-
-        Py_DECREF(buffer);
-
-        if (!res) {
-            Py_DECREF(reader);
-            return NULL;
-        }
-        Py_DECREF(res);
-
-    }
-
-    Py_DECREF(reader);
-
-    res = expat_parse(self, "", 0, 1);
-
-    if (res && TreeBuilder_CheckExact(self->target)) {
-        Py_DECREF(res);
-        return treebuilder_done((TreeBuilderObject*) self->target);
-    }
-
-    return res;
-}
-
-static PyObject*
-xmlparser_setevents(XMLParserObject* self, PyObject* args)
-{
-    /* activate element event reporting */
-
-    Py_ssize_t i;
-    TreeBuilderObject* target;
-
-    PyObject* events; /* event collector */
-    PyObject* event_set = Py_None;
-    if (!PyArg_ParseTuple(args, "O!|O:_setevents",  &PyList_Type, &events,
-                          &event_set))
-        return NULL;
-
-    if (!TreeBuilder_CheckExact(self->target)) {
-        PyErr_SetString(
-            PyExc_TypeError,
-            "event handling only supported for cElementTree.Treebuilder "
-            "targets"
-            );
-        return NULL;
-    }
-
-    target = (TreeBuilderObject*) self->target;
-
-    Py_INCREF(events);
-    Py_XDECREF(target->events);
-    target->events = events;
-
-    /* clear out existing events */
-    Py_XDECREF(target->start_event_obj); target->start_event_obj = NULL;
-    Py_XDECREF(target->end_event_obj); target->end_event_obj = NULL;
-    Py_XDECREF(target->start_ns_event_obj); target->start_ns_event_obj = NULL;
-    Py_XDECREF(target->end_ns_event_obj); target->end_ns_event_obj = NULL;
-
-    if (event_set == Py_None) {
-        /* default is "end" only */
-        target->end_event_obj = PyString_FromString("end");
-        Py_RETURN_NONE;
-    }
-
-    if (!PyTuple_Check(event_set)) /* FIXME: handle arbitrary sequences */
-        goto error;
-
-    for (i = 0; i < PyTuple_GET_SIZE(event_set); i++) {
-        PyObject* item = PyTuple_GET_ITEM(event_set, i);
-        char* event;
-        if (!PyString_Check(item))
-            goto error;
-        event = PyString_AS_STRING(item);
-        if (strcmp(event, "start") == 0) {
-            Py_INCREF(item);
-            target->start_event_obj = item;
-        } else if (strcmp(event, "end") == 0) {
-            Py_INCREF(item);
-            Py_XDECREF(target->end_event_obj);
-            target->end_event_obj = item;
-        } else if (strcmp(event, "start-ns") == 0) {
-            Py_INCREF(item);
-            Py_XDECREF(target->start_ns_event_obj);
-            target->start_ns_event_obj = item;
-            EXPAT(SetNamespaceDeclHandler)(
-                self->parser,
-                (XML_StartNamespaceDeclHandler) expat_start_ns_handler,
-                (XML_EndNamespaceDeclHandler) expat_end_ns_handler
-                );
-        } else if (strcmp(event, "end-ns") == 0) {
-            Py_INCREF(item);
-            Py_XDECREF(target->end_ns_event_obj);
-            target->end_ns_event_obj = item;
-            EXPAT(SetNamespaceDeclHandler)(
-                self->parser,
-                (XML_StartNamespaceDeclHandler) expat_start_ns_handler,
-                (XML_EndNamespaceDeclHandler) expat_end_ns_handler
-                );
-        } else {
-            PyErr_Format(
-                PyExc_ValueError,
-                "unknown event '%s'", event
-                );
-            return NULL;
-        }
-    }
-
-    Py_RETURN_NONE;
-
-  error:
-    PyErr_SetString(
-        PyExc_TypeError,
-        "invalid event tuple"
-        );
-    return NULL;
-}
-
-static PyMethodDef xmlparser_methods[] = {
-    {"feed", (PyCFunction) xmlparser_feed, METH_VARARGS},
-    {"close", (PyCFunction) xmlparser_close, METH_VARARGS},
-    {"_parse", (PyCFunction) xmlparser_parse, METH_VARARGS},
-    {"_setevents", (PyCFunction) xmlparser_setevents, METH_VARARGS},
-    {NULL, NULL}
-};
-
-static PyObject*  
-xmlparser_getattr(XMLParserObject* self, char* name)
-{
-    PyObject* res;
-
-    res = Py_FindMethod(xmlparser_methods, (PyObject*) self, name);
-    if (res)
-        return res;
-
-    PyErr_Clear();
-
-    if (strcmp(name, "entity") == 0)
-        res = self->entity;
-    else if (strcmp(name, "target") == 0)
-        res = self->target;
-    else if (strcmp(name, "version") == 0) {
-        char buffer[100];
-        sprintf(buffer, "Expat %d.%d.%d", XML_MAJOR_VERSION,
-                XML_MINOR_VERSION, XML_MICRO_VERSION);
-        return PyString_FromString(buffer);
-    } else {
-        PyErr_SetString(PyExc_AttributeError, name);
-        return NULL;
-    }
-
-    Py_INCREF(res);
-    return res;
-}
-
-statichere PyTypeObject XMLParser_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0, "XMLParser", sizeof(XMLParserObject), 0,
-    /* methods */
-    (destructor)xmlparser_dealloc, /* tp_dealloc */
-    0, /* tp_print */
-    (getattrfunc)xmlparser_getattr, /* tp_getattr */
-};
-
-#endif
-
-/* ==================================================================== */
-/* python module interface */
-
-static PyMethodDef _functions[] = {
-    {"Element", (PyCFunction) element, METH_VARARGS|METH_KEYWORDS},
-    {"SubElement", (PyCFunction) subelement, METH_VARARGS|METH_KEYWORDS},
-    {"TreeBuilder", (PyCFunction) treebuilder, METH_VARARGS},
-#if defined(USE_EXPAT)
-    {"XMLParser", (PyCFunction) xmlparser, METH_VARARGS|METH_KEYWORDS},
-    {"XMLTreeBuilder", (PyCFunction) xmlparser, METH_VARARGS|METH_KEYWORDS},
-#endif
-    {NULL, NULL}
-};
-
-DL_EXPORT(void)
-init_elementtree(void)
-{
-    PyObject* m;
-    PyObject* g;
-    char* bootstrap;
-
-    /* Patch object type */
-    Py_TYPE(&Element_Type) = Py_TYPE(&TreeBuilder_Type) = &PyType_Type;
-#if defined(USE_EXPAT)
-    Py_TYPE(&XMLParser_Type) = &PyType_Type;
-#endif
-
-    m = Py_InitModule("_elementtree", _functions);
-    if (!m)
-        return;
-
-    /* python glue code */
-
-    g = PyDict_New();
-    if (!g)
-        return;
-
-    PyDict_SetItemString(g, "__builtins__", PyEval_GetBuiltins());
-
-    bootstrap = (
-
-        "from copy import copy, deepcopy\n"
-
-        "try:\n"
-        "  from xml.etree import ElementTree\n"
-        "except ImportError:\n"
-        "  import ElementTree\n"
-        "ET = ElementTree\n"
-        "del ElementTree\n"
-
-        "import _elementtree as cElementTree\n"
-
-        "try:\n" /* check if copy works as is */
-        "  copy(cElementTree.Element('x'))\n"
-        "except:\n"
-        "  def copyelement(elem):\n"
-        "    return elem\n"
-
-        "class CommentProxy:\n"
-        " def __call__(self, text=None):\n"
-        "  element = cElementTree.Element(ET.Comment)\n"
-        "  element.text = text\n"
-        "  return element\n"
-        " def __cmp__(self, other):\n"
-        "  return cmp(ET.Comment, other)\n"
-        "cElementTree.Comment = CommentProxy()\n"
-
-        "class ElementTree(ET.ElementTree):\n" /* public */
-        "  def parse(self, source, parser=None):\n"
-        "    if not hasattr(source, 'read'):\n"
-        "      source = open(source, 'rb')\n"
-        "    if parser is not None:\n"
-        "      while 1:\n"
-        "        data = source.read(65536)\n"
-        "        if not data:\n"
-        "          break\n"
-        "        parser.feed(data)\n"
-        "      self._root = parser.close()\n"
-        "    else:\n" 
-        "      parser = cElementTree.XMLParser()\n"
-        "      self._root = parser._parse(source)\n"
-        "    return self._root\n"
-        "cElementTree.ElementTree = ElementTree\n"
-
-        "def iter(node, tag=None):\n" /* helper */
-        "  if tag == '*':\n"
-        "    tag = None\n"
-        "  if tag is None or node.tag == tag:\n"
-        "    yield node\n"
-        "  for node in node:\n"
-        "    for node in iter(node, tag):\n"
-        "      yield node\n"
-
-        "def itertext(node):\n" /* helper */
-        "  if node.text:\n"
-        "    yield node.text\n"
-        "  for e in node:\n"
-        "    for s in e.itertext():\n"
-        "      yield s\n"
-        "    if e.tail:\n"
-        "      yield e.tail\n"
-
-        "def parse(source, parser=None):\n" /* public */
-        "  tree = ElementTree()\n"
-        "  tree.parse(source, parser)\n"
-        "  return tree\n"
-        "cElementTree.parse = parse\n"
-
-        "class iterparse(object):\n"
-        " root = None\n"
-        " def __init__(self, file, events=None):\n"
-        "  if not hasattr(file, 'read'):\n"
-        "    file = open(file, 'rb')\n"
-        "  self._file = file\n"
-        "  self._events = []\n"
-        "  self._index = 0\n"
-        "  self.root = self._root = None\n"
-        "  b = cElementTree.TreeBuilder()\n"
-        "  self._parser = cElementTree.XMLParser(b)\n"
-        "  self._parser._setevents(self._events, events)\n"
-        " def next(self):\n"
-        "  while 1:\n"
-        "    try:\n"
-        "      item = self._events[self._index]\n"
-        "    except IndexError:\n"
-        "      if self._parser is None:\n"
-        "        self.root = self._root\n"
-        "        raise StopIteration\n"
-        "      # load event buffer\n"
-        "      del self._events[:]\n"
-        "      self._index = 0\n"
-        "      data = self._file.read(16384)\n"
-        "      if data:\n"
-        "        self._parser.feed(data)\n"
-        "      else:\n"
-        "        self._root = self._parser.close()\n"
-        "        self._parser = None\n"
-        "    else:\n"
-        "      self._index = self._index + 1\n"
-        "      return item\n"
-        " def __iter__(self):\n"
-        "  return self\n"
-        "cElementTree.iterparse = iterparse\n"
-
-        "class PIProxy:\n"
-        " def __call__(self, target, text=None):\n"
-        "  element = cElementTree.Element(ET.PI)\n"
-        "  element.text = target\n"
-        "  if text:\n"
-        "    element.text = element.text + ' ' + text\n"
-        "  return element\n"
-        " def __cmp__(self, other):\n"
-        "  return cmp(ET.PI, other)\n"
-        "cElementTree.PI = cElementTree.ProcessingInstruction = PIProxy()\n"
-
-        "def XML(text):\n" /* public */
-        "  parser = cElementTree.XMLParser()\n"
-        "  parser.feed(text)\n"
-        "  return parser.close()\n"
-        "cElementTree.XML = cElementTree.fromstring = XML\n"
-
-        "def XMLID(text):\n" /* public */
-        "  tree = XML(text)\n"
-        "  ids = {}\n"
-        "  for elem in tree.iter():\n"
-        "    id = elem.get('id')\n"
-        "    if id:\n"
-        "      ids[id] = elem\n"
-        "  return tree, ids\n"
-        "cElementTree.XMLID = XMLID\n"
-
-        "try:\n"
-        " register_namespace = ET.register_namespace\n"
-        "except AttributeError:\n"
-        " def register_namespace(prefix, uri):\n"
-        "  ET._namespace_map[uri] = prefix\n"
-        "cElementTree.register_namespace = register_namespace\n"
-
-        "cElementTree.dump = ET.dump\n"
-        "cElementTree.ElementPath = ElementPath = ET.ElementPath\n"
-        "cElementTree.iselement = ET.iselement\n"
-        "cElementTree.QName = ET.QName\n"
-        "cElementTree.tostring = ET.tostring\n"
-        "cElementTree.fromstringlist = ET.fromstringlist\n"
-        "cElementTree.tostringlist = ET.tostringlist\n"
-        "cElementTree.VERSION = '" VERSION "'\n"
-        "cElementTree.__version__ = '" VERSION "'\n"
-
-       );
-
-    if (!PyRun_String(bootstrap, Py_file_input, g, NULL))
-        return;
-
-    elementpath_obj = PyDict_GetItemString(g, "ElementPath");
-
-    elementtree_copyelement_obj = PyDict_GetItemString(g, "copyelement");
-    if (elementtree_copyelement_obj) {
-        /* reduce hack needed; enable reduce method */
-        PyMethodDef* mp;
-        for (mp = element_methods; mp->ml_name; mp++)
-            if (mp->ml_meth == (PyCFunction) element_reduce) {
-                mp->ml_name = "__reduce__";
-                break;
-            }
-    } else
-        PyErr_Clear();
-
-    elementtree_deepcopy_obj = PyDict_GetItemString(g, "deepcopy");
-    elementtree_iter_obj = PyDict_GetItemString(g, "iter");
-    elementtree_itertext_obj = PyDict_GetItemString(g, "itertext");
-
-#if defined(USE_PYEXPAT_CAPI)
-    /* link against pyexpat, if possible */
-    expat_capi = PyCapsule_Import(PyExpat_CAPSULE_NAME, 0);
-    if (expat_capi) {
-        /* check that it's usable */
-        if (strcmp(expat_capi->magic, PyExpat_CAPI_MAGIC) != 0 ||
-            expat_capi->size < sizeof(struct PyExpat_CAPI) ||
-            expat_capi->MAJOR_VERSION != XML_MAJOR_VERSION ||
-            expat_capi->MINOR_VERSION != XML_MINOR_VERSION ||
-            expat_capi->MICRO_VERSION != XML_MICRO_VERSION)
-            expat_capi = NULL;
-    }
-#endif
-
-    elementtree_parseerror_obj = PyErr_NewException(
-        "cElementTree.ParseError", PyExc_SyntaxError, NULL
-        );
-    Py_INCREF(elementtree_parseerror_obj);
-    PyModule_AddObject(m, "ParseError", elementtree_parseerror_obj);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_functoolsmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_functoolsmodule.c
deleted file mode 100644
index daf76d1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_functoolsmodule.c
+++ /dev/null
@@ -1,402 +0,0 @@
-
-#include "Python.h"
-#include "structmember.h"
-
-/* _functools module written and maintained
-   by Hye-Shik Chang <perky@FreeBSD.org>
-   with adaptations by Raymond Hettinger <python@rcn.com>
-   Copyright (c) 2004, 2005, 2006 Python Software Foundation.
-   All rights reserved.
-*/
-
-/* reduce() *************************************************************/
-
-static PyObject *
-functools_reduce(PyObject *self, PyObject *args)
-{
-    PyObject *seq, *func, *result = NULL, *it;
-
-    if (!PyArg_UnpackTuple(args, "reduce", 2, 3, &func, &seq, &result))
-        return NULL;
-    if (result != NULL)
-        Py_INCREF(result);
-
-    it = PyObject_GetIter(seq);
-    if (it == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-            "reduce() arg 2 must support iteration");
-        Py_XDECREF(result);
-        return NULL;
-    }
-
-    if ((args = PyTuple_New(2)) == NULL)
-        goto Fail;
-
-    for (;;) {
-        PyObject *op2;
-
-        if (args->ob_refcnt > 1) {
-            Py_DECREF(args);
-            if ((args = PyTuple_New(2)) == NULL)
-                goto Fail;
-        }
-
-        op2 = PyIter_Next(it);
-        if (op2 == NULL) {
-            if (PyErr_Occurred())
-                goto Fail;
-            break;
-        }
-
-        if (result == NULL)
-            result = op2;
-        else {
-            PyTuple_SetItem(args, 0, result);
-            PyTuple_SetItem(args, 1, op2);
-            if ((result = PyEval_CallObject(func, args)) == NULL)
-                goto Fail;
-        }
-    }
-
-    Py_DECREF(args);
-
-    if (result == NULL)
-        PyErr_SetString(PyExc_TypeError,
-                   "reduce() of empty sequence with no initial value");
-
-    Py_DECREF(it);
-    return result;
-
-Fail:
-    Py_XDECREF(args);
-    Py_XDECREF(result);
-    Py_DECREF(it);
-    return NULL;
-}
-
-PyDoc_STRVAR(reduce_doc,
-"reduce(function, sequence[, initial]) -> value\n\
-\n\
-Apply a function of two arguments cumulatively to the items of a sequence,\n\
-from left to right, so as to reduce the sequence to a single value.\n\
-For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates\n\
-((((1+2)+3)+4)+5).  If initial is present, it is placed before the items\n\
-of the sequence in the calculation, and serves as a default when the\n\
-sequence is empty.");
-
-
-
-
-/* partial object **********************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *fn;
-    PyObject *args;
-    PyObject *kw;
-    PyObject *dict;
-    PyObject *weakreflist; /* List of weak references */
-} partialobject;
-
-static PyTypeObject partial_type;
-
-static PyObject *
-partial_new(PyTypeObject *type, PyObject *args, PyObject *kw)
-{
-    PyObject *func;
-    partialobject *pto;
-
-    if (PyTuple_GET_SIZE(args) < 1) {
-        PyErr_SetString(PyExc_TypeError,
-                        "type 'partial' takes at least one argument");
-        return NULL;
-    }
-
-    func = PyTuple_GET_ITEM(args, 0);
-    if (!PyCallable_Check(func)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "the first argument must be callable");
-        return NULL;
-    }
-
-    /* create partialobject structure */
-    pto = (partialobject *)type->tp_alloc(type, 0);
-    if (pto == NULL)
-        return NULL;
-
-    pto->fn = func;
-    Py_INCREF(func);
-    pto->args = PyTuple_GetSlice(args, 1, PY_SSIZE_T_MAX);
-    if (pto->args == NULL) {
-        pto->kw = NULL;
-        Py_DECREF(pto);
-        return NULL;
-    }
-    if (kw != NULL) {
-        pto->kw = PyDict_Copy(kw);
-        if (pto->kw == NULL) {
-            Py_DECREF(pto);
-            return NULL;
-        }
-    } else {
-        pto->kw = Py_None;
-        Py_INCREF(Py_None);
-    }
-
-    pto->weakreflist = NULL;
-    pto->dict = NULL;
-
-    return (PyObject *)pto;
-}
-
-static void
-partial_dealloc(partialobject *pto)
-{
-    PyObject_GC_UnTrack(pto);
-    if (pto->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) pto);
-    Py_XDECREF(pto->fn);
-    Py_XDECREF(pto->args);
-    Py_XDECREF(pto->kw);
-    Py_XDECREF(pto->dict);
-    Py_TYPE(pto)->tp_free(pto);
-}
-
-static PyObject *
-partial_call(partialobject *pto, PyObject *args, PyObject *kw)
-{
-    PyObject *ret;
-    PyObject *argappl = NULL, *kwappl = NULL;
-
-    assert (PyCallable_Check(pto->fn));
-    assert (PyTuple_Check(pto->args));
-    assert (pto->kw == Py_None  ||  PyDict_Check(pto->kw));
-
-    if (PyTuple_GET_SIZE(pto->args) == 0) {
-        argappl = args;
-        Py_INCREF(args);
-    } else if (PyTuple_GET_SIZE(args) == 0) {
-        argappl = pto->args;
-        Py_INCREF(pto->args);
-    } else {
-        argappl = PySequence_Concat(pto->args, args);
-        if (argappl == NULL)
-            return NULL;
-    }
-
-    if (pto->kw == Py_None) {
-        kwappl = kw;
-        Py_XINCREF(kw);
-    } else {
-        kwappl = PyDict_Copy(pto->kw);
-        if (kwappl == NULL) {
-            Py_DECREF(argappl);
-            return NULL;
-        }
-        if (kw != NULL) {
-            if (PyDict_Merge(kwappl, kw, 1) != 0) {
-                Py_DECREF(argappl);
-                Py_DECREF(kwappl);
-                return NULL;
-            }
-        }
-    }
-
-    ret = PyObject_Call(pto->fn, argappl, kwappl);
-    Py_DECREF(argappl);
-    Py_XDECREF(kwappl);
-    return ret;
-}
-
-static int
-partial_traverse(partialobject *pto, visitproc visit, void *arg)
-{
-    Py_VISIT(pto->fn);
-    Py_VISIT(pto->args);
-    Py_VISIT(pto->kw);
-    Py_VISIT(pto->dict);
-    return 0;
-}
-
-PyDoc_STRVAR(partial_doc,
-"partial(func, *args, **keywords) - new function with partial application\n\
-    of the given arguments and keywords.\n");
-
-#define OFF(x) offsetof(partialobject, x)
-static PyMemberDef partial_memberlist[] = {
-    {"func",            T_OBJECT,       OFF(fn),        READONLY,
-     "function object to use in future partial calls"},
-    {"args",            T_OBJECT,       OFF(args),      READONLY,
-     "tuple of arguments to future partial calls"},
-    {"keywords",        T_OBJECT,       OFF(kw),        READONLY,
-     "dictionary of keyword arguments to future partial calls"},
-    {NULL}  /* Sentinel */
-};
-
-static PyObject *
-partial_get_dict(partialobject *pto)
-{
-    if (pto->dict == NULL) {
-        pto->dict = PyDict_New();
-        if (pto->dict == NULL)
-            return NULL;
-    }
-    Py_INCREF(pto->dict);
-    return pto->dict;
-}
-
-static int
-partial_set_dict(partialobject *pto, PyObject *value)
-{
-    PyObject *tmp;
-
-    /* It is illegal to del p.__dict__ */
-    if (value == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "a partial object's dictionary may not be deleted");
-        return -1;
-    }
-    /* Can only set __dict__ to a dictionary */
-    if (!PyDict_Check(value)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "setting partial object's dictionary to a non-dict");
-        return -1;
-    }
-    tmp = pto->dict;
-    Py_INCREF(value);
-    pto->dict = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-
-static PyGetSetDef partial_getsetlist[] = {
-    {"__dict__", (getter)partial_get_dict, (setter)partial_set_dict},
-    {NULL} /* Sentinel */
-};
-
-/* Pickle strategy:
-   __reduce__ by itself doesn't support getting kwargs in the unpickle
-   operation so we define a __setstate__ that replaces all the information
-   about the partial.  If we only replaced part of it someone would use
-   it as a hook to do strange things.
- */
-
-PyObject *
-partial_reduce(partialobject *pto, PyObject *unused)
-{
-    return Py_BuildValue("O(O)(OOOO)", Py_TYPE(pto), pto->fn, pto->fn,
-                         pto->args, pto->kw,
-                         pto->dict ? pto->dict : Py_None);
-}
-
-PyObject *
-partial_setstate(partialobject *pto, PyObject *args)
-{
-    PyObject *fn, *fnargs, *kw, *dict;
-    if (!PyArg_ParseTuple(args, "(OOOO):__setstate__",
-                          &fn, &fnargs, &kw, &dict))
-        return NULL;
-    Py_XDECREF(pto->fn);
-    Py_XDECREF(pto->args);
-    Py_XDECREF(pto->kw);
-    Py_XDECREF(pto->dict);
-    pto->fn = fn;
-    pto->args = fnargs;
-    pto->kw = kw;
-    if (dict != Py_None) {
-      pto->dict = dict;
-      Py_INCREF(dict);
-    } else {
-      pto->dict = NULL;
-    }
-    Py_INCREF(fn);
-    Py_INCREF(fnargs);
-    Py_INCREF(kw);
-    Py_RETURN_NONE;
-}
-
-static PyMethodDef partial_methods[] = {
-    {"__reduce__", (PyCFunction)partial_reduce, METH_NOARGS},
-    {"__setstate__", (PyCFunction)partial_setstate, METH_VARARGS},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyTypeObject partial_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "functools.partial",                /* tp_name */
-    sizeof(partialobject),              /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)partial_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 */
-    (ternaryfunc)partial_call,          /* tp_call */
-    0,                                  /* tp_str */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    PyObject_GenericSetAttr,            /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_WEAKREFS,         /* tp_flags */
-    partial_doc,                        /* tp_doc */
-    (traverseproc)partial_traverse,     /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    offsetof(partialobject, weakreflist),       /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iternext */
-    partial_methods,                    /* tp_methods */
-    partial_memberlist,                 /* tp_members */
-    partial_getsetlist,                 /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    offsetof(partialobject, dict),      /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    partial_new,                        /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* module level code ********************************************************/
-
-PyDoc_STRVAR(module_doc,
-"Tools that operate on functions.");
-
-static PyMethodDef module_methods[] = {
-    {"reduce",          functools_reduce,     METH_VARARGS, reduce_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyMODINIT_FUNC
-init_functools(void)
-{
-    int i;
-    PyObject *m;
-    char *name;
-    PyTypeObject *typelist[] = {
-        &partial_type,
-        NULL
-    };
-
-    m = Py_InitModule3("_functools", module_methods, module_doc);
-    if (m == NULL)
-        return;
-
-    for (i=0 ; typelist[i] != NULL ; i++) {
-        if (PyType_Ready(typelist[i]) < 0)
-            return;
-        name = strchr(typelist[i]->tp_name, '.');
-        assert (name != NULL);
-        Py_INCREF(typelist[i]);
-        PyModule_AddObject(m, name+1, (PyObject *)typelist[i]);
-    }
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_hashopenssl.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_hashopenssl.c
deleted file mode 100644
index 3b84923..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_hashopenssl.c
+++ /dev/null
@@ -1,597 +0,0 @@
-/* Module that wraps all OpenSSL hash algorithms */
-
-/*
- * Copyright (C) 2005-2010   Gregory P. Smith (greg@krypto.org)
- * Licensed to PSF under a Contributor Agreement.
- *
- * Derived from a skeleton of shamodule.c containing work performed by:
- *
- * Andrew Kuchling (amk@amk.ca)
- * Greg Stein (gstein@lyra.org)
- *
- */
-
-#define PY_SSIZE_T_CLEAN
-
-#include "Python.h"
-#include "structmember.h"
-
-#ifdef WITH_THREAD
-#include "pythread.h"
-    #define ENTER_HASHLIB(obj) \
-        if ((obj)->lock) { \
-            if (!PyThread_acquire_lock((obj)->lock, 0)) { \
-                Py_BEGIN_ALLOW_THREADS \
-                PyThread_acquire_lock((obj)->lock, 1); \
-                Py_END_ALLOW_THREADS \
-            } \
-        }
-    #define LEAVE_HASHLIB(obj) \
-        if ((obj)->lock) { \
-            PyThread_release_lock((obj)->lock); \
-        }
-#else
-    #define ENTER_HASHLIB(obj)
-    #define LEAVE_HASHLIB(obj)
-#endif
-
-/* EVP is the preferred interface to hashing in OpenSSL */
-#include <openssl/evp.h>
-
-#define MUNCH_SIZE INT_MAX
-
-/* TODO(gps): We should probably make this a module or EVPobject attribute
- * to allow the user to optimize based on the platform they're using. */
-#define HASHLIB_GIL_MINSIZE 2048
-
-#ifndef HASH_OBJ_CONSTRUCTOR
-#define HASH_OBJ_CONSTRUCTOR 0
-#endif
-
-/* Minimum OpenSSL version needed to support sha224 and higher. */
-#if defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER >= 0x00908000)
-#define _OPENSSL_SUPPORTS_SHA2
-#endif
-
-typedef struct {
-    PyObject_HEAD
-    PyObject            *name;  /* name of this hash algorithm */
-    EVP_MD_CTX          ctx;    /* OpenSSL message digest context */
-#ifdef WITH_THREAD
-    PyThread_type_lock  lock;   /* OpenSSL context lock */
-#endif
-} EVPobject;
-
-
-static PyTypeObject EVPtype;
-
-
-#define DEFINE_CONSTS_FOR_NEW(Name)  \
-    static PyObject *CONST_ ## Name ## _name_obj; \
-    static EVP_MD_CTX CONST_new_ ## Name ## _ctx; \
-    static EVP_MD_CTX *CONST_new_ ## Name ## _ctx_p = NULL;
-
-DEFINE_CONSTS_FOR_NEW(md5)
-DEFINE_CONSTS_FOR_NEW(sha1)
-#ifdef _OPENSSL_SUPPORTS_SHA2
-DEFINE_CONSTS_FOR_NEW(sha224)
-DEFINE_CONSTS_FOR_NEW(sha256)
-DEFINE_CONSTS_FOR_NEW(sha384)
-DEFINE_CONSTS_FOR_NEW(sha512)
-#endif
-
-
-static EVPobject *
-newEVPobject(PyObject *name)
-{
-    EVPobject *retval = (EVPobject *)PyObject_New(EVPobject, &EVPtype);
-
-    /* save the name for .name to return */
-    if (retval != NULL) {
-        Py_INCREF(name);
-        retval->name = name;
-#ifdef WITH_THREAD
-        retval->lock = NULL;
-#endif
-    }
-
-    return retval;
-}
-
-static void
-EVP_hash(EVPobject *self, const void *vp, Py_ssize_t len)
-{
-    unsigned int process;
-    const unsigned char *cp = (const unsigned char *)vp;
-    while (0 < len)
-    {
-        if (len > (Py_ssize_t)MUNCH_SIZE)
-            process = MUNCH_SIZE;
-        else
-            process = Py_SAFE_DOWNCAST(len, Py_ssize_t, unsigned int);
-        EVP_DigestUpdate(&self->ctx, (const void*)cp, process);
-        len -= process;
-        cp += process;
-    }
-}
-
-/* Internal methods for a hash object */
-
-static void
-EVP_dealloc(EVPobject *self)
-{
-#ifdef WITH_THREAD
-    if (self->lock != NULL)
-        PyThread_free_lock(self->lock);
-#endif
-    EVP_MD_CTX_cleanup(&self->ctx);
-    Py_XDECREF(self->name);
-    PyObject_Del(self);
-}
-
-static void locked_EVP_MD_CTX_copy(EVP_MD_CTX *new_ctx_p, EVPobject *self)
-{
-    ENTER_HASHLIB(self);
-    EVP_MD_CTX_copy(new_ctx_p, &self->ctx);
-    LEAVE_HASHLIB(self);
-}
-
-/* External methods for a hash object */
-
-PyDoc_STRVAR(EVP_copy__doc__, "Return a copy of the hash object.");
-
-
-static PyObject *
-EVP_copy(EVPobject *self, PyObject *unused)
-{
-    EVPobject *newobj;
-
-    if ( (newobj = newEVPobject(self->name))==NULL)
-        return NULL;
-
-    locked_EVP_MD_CTX_copy(&newobj->ctx, self);
-    return (PyObject *)newobj;
-}
-
-PyDoc_STRVAR(EVP_digest__doc__,
-"Return the digest value as a string of binary data.");
-
-static PyObject *
-EVP_digest(EVPobject *self, PyObject *unused)
-{
-    unsigned char digest[EVP_MAX_MD_SIZE];
-    EVP_MD_CTX temp_ctx;
-    PyObject *retval;
-    unsigned int digest_size;
-
-    locked_EVP_MD_CTX_copy(&temp_ctx, self);
-    digest_size = EVP_MD_CTX_size(&temp_ctx);
-    EVP_DigestFinal(&temp_ctx, digest, NULL);
-
-    retval = PyString_FromStringAndSize((const char *)digest, digest_size);
-    EVP_MD_CTX_cleanup(&temp_ctx);
-    return retval;
-}
-
-PyDoc_STRVAR(EVP_hexdigest__doc__,
-"Return the digest value as a string of hexadecimal digits.");
-
-static PyObject *
-EVP_hexdigest(EVPobject *self, PyObject *unused)
-{
-    unsigned char digest[EVP_MAX_MD_SIZE];
-    EVP_MD_CTX temp_ctx;
-    PyObject *retval;
-    char *hex_digest;
-    unsigned int i, j, digest_size;
-
-    /* Get the raw (binary) digest value */
-    locked_EVP_MD_CTX_copy(&temp_ctx, self);
-    digest_size = EVP_MD_CTX_size(&temp_ctx);
-    EVP_DigestFinal(&temp_ctx, digest, NULL);
-
-    EVP_MD_CTX_cleanup(&temp_ctx);
-
-    /* Create a new string */
-    /* NOTE: not thread safe! modifying an already created string object */
-    /* (not a problem because we hold the GIL by default) */
-    retval = PyString_FromStringAndSize(NULL, digest_size * 2);
-    if (!retval)
-            return NULL;
-    hex_digest = PyString_AsString(retval);
-    if (!hex_digest) {
-            Py_DECREF(retval);
-            return NULL;
-    }
-
-    /* Make hex version of the digest */
-    for(i=j=0; i<digest_size; i++) {
-        char c;
-        c = (digest[i] >> 4) & 0xf;
-        c = (c>9) ? c+'a'-10 : c + '0';
-        hex_digest[j++] = c;
-        c = (digest[i] & 0xf);
-        c = (c>9) ? c+'a'-10 : c + '0';
-        hex_digest[j++] = c;
-    }
-    return retval;
-}
-
-PyDoc_STRVAR(EVP_update__doc__,
-"Update this hash object's state with the provided string.");
-
-static PyObject *
-EVP_update(EVPobject *self, PyObject *args)
-{
-    Py_buffer view;
-
-    if (!PyArg_ParseTuple(args, "s*:update", &view))
-        return NULL;
-
-#ifdef WITH_THREAD
-    if (self->lock == NULL && view.len >= HASHLIB_GIL_MINSIZE) {
-        self->lock = PyThread_allocate_lock();
-        /* fail? lock = NULL and we fail over to non-threaded code. */
-    }
-
-    if (self->lock != NULL) {
-        Py_BEGIN_ALLOW_THREADS
-        PyThread_acquire_lock(self->lock, 1);
-        EVP_hash(self, view.buf, view.len);
-        PyThread_release_lock(self->lock);
-        Py_END_ALLOW_THREADS
-    }
-    else
-#endif
-    {
-        EVP_hash(self, view.buf, view.len);
-    }
-
-    PyBuffer_Release(&view);
-
-    Py_RETURN_NONE;
-}
-
-static PyMethodDef EVP_methods[] = {
-    {"update",    (PyCFunction)EVP_update,    METH_VARARGS, EVP_update__doc__},
-    {"digest",    (PyCFunction)EVP_digest,    METH_NOARGS,  EVP_digest__doc__},
-    {"hexdigest", (PyCFunction)EVP_hexdigest, METH_NOARGS,  EVP_hexdigest__doc__},
-    {"copy",      (PyCFunction)EVP_copy,      METH_NOARGS,  EVP_copy__doc__},
-    {NULL,        NULL}         /* sentinel */
-};
-
-static PyObject *
-EVP_get_block_size(EVPobject *self, void *closure)
-{
-    long block_size;
-    block_size = EVP_MD_CTX_block_size(&self->ctx);
-    return PyLong_FromLong(block_size);
-}
-
-static PyObject *
-EVP_get_digest_size(EVPobject *self, void *closure)
-{
-    long size;
-    size = EVP_MD_CTX_size(&self->ctx);
-    return PyLong_FromLong(size);
-}
-
-static PyMemberDef EVP_members[] = {
-    {"name", T_OBJECT, offsetof(EVPobject, name), READONLY, PyDoc_STR("algorithm name.")},
-    {NULL}  /* Sentinel */
-};
-
-static PyGetSetDef EVP_getseters[] = {
-    {"digest_size",
-     (getter)EVP_get_digest_size, NULL,
-     NULL,
-     NULL},
-    {"block_size",
-     (getter)EVP_get_block_size, NULL,
-     NULL,
-     NULL},
-    /* the old md5 and sha modules support 'digest_size' as in PEP 247.
-     * the old sha module also supported 'digestsize'.  ugh. */
-    {"digestsize",
-     (getter)EVP_get_digest_size, NULL,
-     NULL,
-     NULL},
-    {NULL}  /* Sentinel */
-};
-
-
-static PyObject *
-EVP_repr(PyObject *self)
-{
-    char buf[100];
-    PyOS_snprintf(buf, sizeof(buf), "<%s HASH object @ %p>",
-            PyString_AsString(((EVPobject *)self)->name), self);
-    return PyString_FromString(buf);
-}
-
-#if HASH_OBJ_CONSTRUCTOR
-static int
-EVP_tp_init(EVPobject *self, PyObject *args, PyObject *kwds)
-{
-    static char *kwlist[] = {"name", "string", NULL};
-    PyObject *name_obj = NULL;
-    Py_buffer view = { 0 };
-    char *nameStr;
-    const EVP_MD *digest;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|s*:HASH", kwlist,
-                                     &name_obj, &view)) {
-        return -1;
-    }
-
-    if (!PyArg_Parse(name_obj, "s", &nameStr)) {
-        PyErr_SetString(PyExc_TypeError, "name must be a string");
-        PyBuffer_Release(&view);
-        return -1;
-    }
-
-    digest = EVP_get_digestbyname(nameStr);
-    if (!digest) {
-        PyErr_SetString(PyExc_ValueError, "unknown hash function");
-        PyBuffer_Release(&view);
-        return -1;
-    }
-    EVP_DigestInit(&self->ctx, digest);
-
-    self->name = name_obj;
-    Py_INCREF(self->name);
-
-    if (view.obj) {
-        if (view.len >= HASHLIB_GIL_MINSIZE) {
-            Py_BEGIN_ALLOW_THREADS
-            EVP_hash(self, view.buf, view.len);
-            Py_END_ALLOW_THREADS
-        } else {
-            EVP_hash(self, view.buf, view.len);
-        }
-        PyBuffer_Release(&view);
-    }
-
-    return 0;
-}
-#endif
-
-
-PyDoc_STRVAR(hashtype_doc,
-"A hash represents the object used to calculate a checksum of a\n\
-string of information.\n\
-\n\
-Methods:\n\
-\n\
-update() -- updates the current digest with an additional string\n\
-digest() -- return the current digest value\n\
-hexdigest() -- return the current digest as a string of hexadecimal digits\n\
-copy() -- return a copy of the current hash object\n\
-\n\
-Attributes:\n\
-\n\
-name -- the hash algorithm being used by this object\n\
-digest_size -- number of bytes in this hashes output\n");
-
-static PyTypeObject EVPtype = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_hashlib.HASH",    /*tp_name*/
-    sizeof(EVPobject),  /*tp_basicsize*/
-    0,                  /*tp_itemsize*/
-    /* methods */
-    (destructor)EVP_dealloc,    /*tp_dealloc*/
-    0,                  /*tp_print*/
-    0,                  /*tp_getattr*/
-    0,                  /*tp_setattr*/
-    0,                  /*tp_compare*/
-    EVP_repr,           /*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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
-    hashtype_doc,       /*tp_doc*/
-    0,                  /*tp_traverse*/
-    0,                  /*tp_clear*/
-    0,                  /*tp_richcompare*/
-    0,                  /*tp_weaklistoffset*/
-    0,                  /*tp_iter*/
-    0,                  /*tp_iternext*/
-    EVP_methods,        /* tp_methods */
-    EVP_members,        /* tp_members */
-    EVP_getseters,      /* tp_getset */
-#if 1
-    0,                  /* tp_base */
-    0,                  /* tp_dict */
-    0,                  /* tp_descr_get */
-    0,                  /* tp_descr_set */
-    0,                  /* tp_dictoffset */
-#endif
-#if HASH_OBJ_CONSTRUCTOR
-    (initproc)EVP_tp_init, /* tp_init */
-#endif
-};
-
-static PyObject *
-EVPnew(PyObject *name_obj,
-       const EVP_MD *digest, const EVP_MD_CTX *initial_ctx,
-       const unsigned char *cp, Py_ssize_t len)
-{
-    EVPobject *self;
-
-    if (!digest && !initial_ctx) {
-        PyErr_SetString(PyExc_ValueError, "unsupported hash type");
-        return NULL;
-    }
-
-    if ((self = newEVPobject(name_obj)) == NULL)
-        return NULL;
-
-    if (initial_ctx) {
-        EVP_MD_CTX_copy(&self->ctx, initial_ctx);
-    } else {
-        EVP_DigestInit(&self->ctx, digest);
-    }
-
-    if (cp && len) {
-        if (len >= HASHLIB_GIL_MINSIZE) {
-            Py_BEGIN_ALLOW_THREADS
-            EVP_hash(self, cp, len);
-            Py_END_ALLOW_THREADS
-        } else {
-            EVP_hash(self, cp, len);
-        }
-    }
-
-    return (PyObject *)self;
-}
-
-
-/* The module-level function: new() */
-
-PyDoc_STRVAR(EVP_new__doc__,
-"Return a new hash object using the named algorithm.\n\
-An optional string argument may be provided and will be\n\
-automatically hashed.\n\
-\n\
-The MD5 and SHA1 algorithms are always supported.\n");
-
-static PyObject *
-EVP_new(PyObject *self, PyObject *args, PyObject *kwdict)
-{
-    static char *kwlist[] = {"name", "string", NULL};
-    PyObject *name_obj = NULL;
-    Py_buffer view = { 0 };
-    PyObject *ret_obj;
-    char *name;
-    const EVP_MD *digest;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwdict, "O|s*:new", kwlist,
-                                     &name_obj, &view)) {
-        return NULL;
-    }
-
-    if (!PyArg_Parse(name_obj, "s", &name)) {
-        PyErr_SetString(PyExc_TypeError, "name must be a string");
-        return NULL;
-    }
-
-    digest = EVP_get_digestbyname(name);
-
-    ret_obj = EVPnew(name_obj, digest, NULL, (unsigned char*)view.buf,
-                     view.len);
-    PyBuffer_Release(&view);
-
-    return ret_obj;
-}
-
-/*
- *  This macro generates constructor function definitions for specific
- *  hash algorithms.  These constructors are much faster than calling
- *  the generic one passing it a python string and are noticably
- *  faster than calling a python new() wrapper.  Thats important for
- *  code that wants to make hashes of a bunch of small strings.
- */
-#define GEN_CONSTRUCTOR(NAME)  \
-    static PyObject * \
-    EVP_new_ ## NAME (PyObject *self, PyObject *args) \
-    { \
-        Py_buffer view = { 0 }; \
-        PyObject *ret_obj; \
-     \
-        if (!PyArg_ParseTuple(args, "|s*:" #NAME , &view)) { \
-            return NULL; \
-        } \
-     \
-        ret_obj = EVPnew( \
-                    CONST_ ## NAME ## _name_obj, \
-                    NULL, \
-                    CONST_new_ ## NAME ## _ctx_p, \
-                    (unsigned char*)view.buf, view.len); \
-        PyBuffer_Release(&view); \
-        return ret_obj; \
-    }
-
-/* a PyMethodDef structure for the constructor */
-#define CONSTRUCTOR_METH_DEF(NAME)  \
-    {"openssl_" #NAME, (PyCFunction)EVP_new_ ## NAME, METH_VARARGS, \
-        PyDoc_STR("Returns a " #NAME \
-                  " hash object; optionally initialized with a string") \
-    }
-
-/* used in the init function to setup a constructor */
-#define INIT_CONSTRUCTOR_CONSTANTS(NAME)  do { \
-    CONST_ ## NAME ## _name_obj = PyString_FromString(#NAME); \
-    if (EVP_get_digestbyname(#NAME)) { \
-        CONST_new_ ## NAME ## _ctx_p = &CONST_new_ ## NAME ## _ctx; \
-        EVP_DigestInit(CONST_new_ ## NAME ## _ctx_p, EVP_get_digestbyname(#NAME)); \
-    } \
-} while (0);
-
-GEN_CONSTRUCTOR(md5)
-GEN_CONSTRUCTOR(sha1)
-#ifdef _OPENSSL_SUPPORTS_SHA2
-GEN_CONSTRUCTOR(sha224)
-GEN_CONSTRUCTOR(sha256)
-GEN_CONSTRUCTOR(sha384)
-GEN_CONSTRUCTOR(sha512)
-#endif
-
-/* List of functions exported by this module */
-
-static struct PyMethodDef EVP_functions[] = {
-    {"new", (PyCFunction)EVP_new, METH_VARARGS|METH_KEYWORDS, EVP_new__doc__},
-    CONSTRUCTOR_METH_DEF(md5),
-    CONSTRUCTOR_METH_DEF(sha1),
-#ifdef _OPENSSL_SUPPORTS_SHA2
-    CONSTRUCTOR_METH_DEF(sha224),
-    CONSTRUCTOR_METH_DEF(sha256),
-    CONSTRUCTOR_METH_DEF(sha384),
-    CONSTRUCTOR_METH_DEF(sha512),
-#endif
-    {NULL,      NULL}            /* Sentinel */
-};
-
-
-/* Initialize this module. */
-
-PyMODINIT_FUNC
-init_hashlib(void)
-{
-    PyObject *m;
-
-    OpenSSL_add_all_digests();
-
-    /* TODO build EVP_functions openssl_* entries dynamically based
-     * on what hashes are supported rather than listing many
-     * but having some be unsupported.  Only init appropriate
-     * constants. */
-
-    Py_TYPE(&EVPtype) = &PyType_Type;
-    if (PyType_Ready(&EVPtype) < 0)
-        return;
-
-    m = Py_InitModule("_hashlib", EVP_functions);
-    if (m == NULL)
-        return;
-
-#if HASH_OBJ_CONSTRUCTOR
-    Py_INCREF(&EVPtype);
-    PyModule_AddObject(m, "HASH", (PyObject *)&EVPtype);
-#endif
-
-    /* these constants are used by the convenience constructors */
-    INIT_CONSTRUCTOR_CONSTANTS(md5);
-    INIT_CONSTRUCTOR_CONSTANTS(sha1);
-#ifdef _OPENSSL_SUPPORTS_SHA2
-    INIT_CONSTRUCTOR_CONSTANTS(sha224);
-    INIT_CONSTRUCTOR_CONSTANTS(sha256);
-    INIT_CONSTRUCTOR_CONSTANTS(sha384);
-    INIT_CONSTRUCTOR_CONSTANTS(sha512);
-#endif
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_heapqmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_heapqmodule.c
deleted file mode 100644
index c5bfc45..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_heapqmodule.c
+++ /dev/null
@@ -1,697 +0,0 @@
-/* Drop in replacement for heapq.py
-
-C implementation derived directly from heapq.py in Py2.3
-which was written by Kevin O'Connor, augmented by Tim Peters,
-annotated by François Pinard, and converted to C by Raymond Hettinger.
-
-*/
-
-#include "Python.h"
-
-/* Older implementations of heapq used Py_LE for comparisons.  Now, it uses
-   Py_LT so it will match min(), sorted(), and bisect().  Unfortunately, some
-   client code (Twisted for example) relied on Py_LE, so this little function
-   restores compatibility by trying both.
-*/
-static int
-cmp_lt(PyObject *x, PyObject *y)
-{
-    int cmp;
-    static PyObject *lt = NULL;
-
-    if (lt == NULL) {
-        lt = PyString_FromString("__lt__");
-        if (lt == NULL)
-            return -1;
-    }
-    if (PyObject_HasAttr(x, lt))
-        return PyObject_RichCompareBool(x, y, Py_LT);
-    cmp = PyObject_RichCompareBool(y, x, Py_LE);
-    if (cmp != -1)
-        cmp = 1 - cmp;
-    return cmp;
-}
-
-static int
-_siftdown(PyListObject *heap, Py_ssize_t startpos, Py_ssize_t pos)
-{
-    PyObject *newitem, *parent;
-    int cmp;
-    Py_ssize_t parentpos;
-
-    assert(PyList_Check(heap));
-    if (pos >= PyList_GET_SIZE(heap)) {
-        PyErr_SetString(PyExc_IndexError, "index out of range");
-        return -1;
-    }
-
-    newitem = PyList_GET_ITEM(heap, pos);
-    Py_INCREF(newitem);
-    /* Follow the path to the root, moving parents down until finding
-       a place newitem fits. */
-    while (pos > startpos){
-        parentpos = (pos - 1) >> 1;
-        parent = PyList_GET_ITEM(heap, parentpos);
-        cmp = cmp_lt(newitem, parent);
-        if (cmp == -1) {
-            Py_DECREF(newitem);
-            return -1;
-        }
-        if (cmp == 0)
-            break;
-        Py_INCREF(parent);
-        Py_DECREF(PyList_GET_ITEM(heap, pos));
-        PyList_SET_ITEM(heap, pos, parent);
-        pos = parentpos;
-    }
-    Py_DECREF(PyList_GET_ITEM(heap, pos));
-    PyList_SET_ITEM(heap, pos, newitem);
-    return 0;
-}
-
-static int
-_siftup(PyListObject *heap, Py_ssize_t pos)
-{
-    Py_ssize_t startpos, endpos, childpos, rightpos;
-    int cmp;
-    PyObject *newitem, *tmp;
-
-    assert(PyList_Check(heap));
-    endpos = PyList_GET_SIZE(heap);
-    startpos = pos;
-    if (pos >= endpos) {
-        PyErr_SetString(PyExc_IndexError, "index out of range");
-        return -1;
-    }
-    newitem = PyList_GET_ITEM(heap, pos);
-    Py_INCREF(newitem);
-
-    /* Bubble up the smaller child until hitting a leaf. */
-    childpos = 2*pos + 1;    /* leftmost child position  */
-    while (childpos < endpos) {
-        /* Set childpos to index of smaller child.   */
-        rightpos = childpos + 1;
-        if (rightpos < endpos) {
-            cmp = cmp_lt(
-                PyList_GET_ITEM(heap, childpos),
-                PyList_GET_ITEM(heap, rightpos));
-            if (cmp == -1) {
-                Py_DECREF(newitem);
-                return -1;
-            }
-            if (cmp == 0)
-                childpos = rightpos;
-        }
-        /* Move the smaller child up. */
-        tmp = PyList_GET_ITEM(heap, childpos);
-        Py_INCREF(tmp);
-        Py_DECREF(PyList_GET_ITEM(heap, pos));
-        PyList_SET_ITEM(heap, pos, tmp);
-        pos = childpos;
-        childpos = 2*pos + 1;
-    }
-
-    /* The leaf at pos is empty now.  Put newitem there, and and bubble
-       it up to its final resting place (by sifting its parents down). */
-    Py_DECREF(PyList_GET_ITEM(heap, pos));
-    PyList_SET_ITEM(heap, pos, newitem);
-    return _siftdown(heap, startpos, pos);
-}
-
-static PyObject *
-heappush(PyObject *self, PyObject *args)
-{
-    PyObject *heap, *item;
-
-    if (!PyArg_UnpackTuple(args, "heappush", 2, 2, &heap, &item))
-        return NULL;
-
-    if (!PyList_Check(heap)) {
-        PyErr_SetString(PyExc_TypeError, "heap argument must be a list");
-        return NULL;
-    }
-
-    if (PyList_Append(heap, item) == -1)
-        return NULL;
-
-    if (_siftdown((PyListObject *)heap, 0, PyList_GET_SIZE(heap)-1) == -1)
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(heappush_doc,
-"Push item onto heap, maintaining the heap invariant.");
-
-static PyObject *
-heappop(PyObject *self, PyObject *heap)
-{
-    PyObject *lastelt, *returnitem;
-    Py_ssize_t n;
-
-    if (!PyList_Check(heap)) {
-        PyErr_SetString(PyExc_TypeError, "heap argument must be a list");
-        return NULL;
-    }
-
-    /* # raises appropriate IndexError if heap is empty */
-    n = PyList_GET_SIZE(heap);
-    if (n == 0) {
-        PyErr_SetString(PyExc_IndexError, "index out of range");
-        return NULL;
-    }
-
-    lastelt = PyList_GET_ITEM(heap, n-1) ;
-    Py_INCREF(lastelt);
-    PyList_SetSlice(heap, n-1, n, NULL);
-    n--;
-
-    if (!n)
-        return lastelt;
-    returnitem = PyList_GET_ITEM(heap, 0);
-    PyList_SET_ITEM(heap, 0, lastelt);
-    if (_siftup((PyListObject *)heap, 0) == -1) {
-        Py_DECREF(returnitem);
-        return NULL;
-    }
-    return returnitem;
-}
-
-PyDoc_STRVAR(heappop_doc,
-"Pop the smallest item off the heap, maintaining the heap invariant.");
-
-static PyObject *
-heapreplace(PyObject *self, PyObject *args)
-{
-    PyObject *heap, *item, *returnitem;
-
-    if (!PyArg_UnpackTuple(args, "heapreplace", 2, 2, &heap, &item))
-        return NULL;
-
-    if (!PyList_Check(heap)) {
-        PyErr_SetString(PyExc_TypeError, "heap argument must be a list");
-        return NULL;
-    }
-
-    if (PyList_GET_SIZE(heap) < 1) {
-        PyErr_SetString(PyExc_IndexError, "index out of range");
-        return NULL;
-    }
-
-    returnitem = PyList_GET_ITEM(heap, 0);
-    Py_INCREF(item);
-    PyList_SET_ITEM(heap, 0, item);
-    if (_siftup((PyListObject *)heap, 0) == -1) {
-        Py_DECREF(returnitem);
-        return NULL;
-    }
-    return returnitem;
-}
-
-PyDoc_STRVAR(heapreplace_doc,
-"Pop and return the current smallest value, and add the new item.\n\
-\n\
-This is more efficient than heappop() followed by heappush(), and can be\n\
-more appropriate when using a fixed-size heap.  Note that the value\n\
-returned may be larger than item!  That constrains reasonable uses of\n\
-this routine unless written as part of a conditional replacement:\n\n\
-    if item > heap[0]:\n\
-        item = heapreplace(heap, item)\n");
-
-static PyObject *
-heappushpop(PyObject *self, PyObject *args)
-{
-    PyObject *heap, *item, *returnitem;
-    int cmp;
-
-    if (!PyArg_UnpackTuple(args, "heappushpop", 2, 2, &heap, &item))
-        return NULL;
-
-    if (!PyList_Check(heap)) {
-        PyErr_SetString(PyExc_TypeError, "heap argument must be a list");
-        return NULL;
-    }
-
-    if (PyList_GET_SIZE(heap) < 1) {
-        Py_INCREF(item);
-        return item;
-    }
-
-    cmp = cmp_lt(PyList_GET_ITEM(heap, 0), item);
-    if (cmp == -1)
-        return NULL;
-    if (cmp == 0) {
-        Py_INCREF(item);
-        return item;
-    }
-
-    returnitem = PyList_GET_ITEM(heap, 0);
-    Py_INCREF(item);
-    PyList_SET_ITEM(heap, 0, item);
-    if (_siftup((PyListObject *)heap, 0) == -1) {
-        Py_DECREF(returnitem);
-        return NULL;
-    }
-    return returnitem;
-}
-
-PyDoc_STRVAR(heappushpop_doc,
-"Push item on the heap, then pop and return the smallest item\n\
-from the heap. The combined action runs more efficiently than\n\
-heappush() followed by a separate call to heappop().");
-
-static PyObject *
-heapify(PyObject *self, PyObject *heap)
-{
-    Py_ssize_t i, n;
-
-    if (!PyList_Check(heap)) {
-        PyErr_SetString(PyExc_TypeError, "heap argument must be a list");
-        return NULL;
-    }
-
-    n = PyList_GET_SIZE(heap);
-    /* Transform bottom-up.  The largest index there's any point to
-       looking at is the largest with a child index in-range, so must
-       have 2*i + 1 < n, or i < (n-1)/2.  If n is even = 2*j, this is
-       (2*j-1)/2 = j-1/2 so j-1 is the largest, which is n//2 - 1.  If
-       n is odd = 2*j+1, this is (2*j+1-1)/2 = j so j-1 is the largest,
-       and that's again n//2-1.
-    */
-    for (i=n/2-1 ; i>=0 ; i--)
-        if(_siftup((PyListObject *)heap, i) == -1)
-            return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(heapify_doc,
-"Transform list into a heap, in-place, in O(len(heap)) time.");
-
-static PyObject *
-nlargest(PyObject *self, PyObject *args)
-{
-    PyObject *heap=NULL, *elem, *iterable, *sol, *it, *oldelem;
-    Py_ssize_t i, n;
-    int cmp;
-
-    if (!PyArg_ParseTuple(args, "nO:nlargest", &n, &iterable))
-        return NULL;
-
-    it = PyObject_GetIter(iterable);
-    if (it == NULL)
-        return NULL;
-
-    heap = PyList_New(0);
-    if (heap == NULL)
-        goto fail;
-
-    for (i=0 ; i<n ; i++ ){
-        elem = PyIter_Next(it);
-        if (elem == NULL) {
-            if (PyErr_Occurred())
-                goto fail;
-            else
-                goto sortit;
-        }
-        if (PyList_Append(heap, elem) == -1) {
-            Py_DECREF(elem);
-            goto fail;
-        }
-        Py_DECREF(elem);
-    }
-    if (PyList_GET_SIZE(heap) == 0)
-        goto sortit;
-
-    for (i=n/2-1 ; i>=0 ; i--)
-        if(_siftup((PyListObject *)heap, i) == -1)
-            goto fail;
-
-    sol = PyList_GET_ITEM(heap, 0);
-    while (1) {
-        elem = PyIter_Next(it);
-        if (elem == NULL) {
-            if (PyErr_Occurred())
-                goto fail;
-            else
-                goto sortit;
-        }
-        cmp = cmp_lt(sol, elem);
-        if (cmp == -1) {
-            Py_DECREF(elem);
-            goto fail;
-        }
-        if (cmp == 0) {
-            Py_DECREF(elem);
-            continue;
-        }
-        oldelem = PyList_GET_ITEM(heap, 0);
-        PyList_SET_ITEM(heap, 0, elem);
-        Py_DECREF(oldelem);
-        if (_siftup((PyListObject *)heap, 0) == -1)
-            goto fail;
-        sol = PyList_GET_ITEM(heap, 0);
-    }
-sortit:
-    if (PyList_Sort(heap) == -1)
-        goto fail;
-    if (PyList_Reverse(heap) == -1)
-        goto fail;
-    Py_DECREF(it);
-    return heap;
-
-fail:
-    Py_DECREF(it);
-    Py_XDECREF(heap);
-    return NULL;
-}
-
-PyDoc_STRVAR(nlargest_doc,
-"Find the n largest elements in a dataset.\n\
-\n\
-Equivalent to:  sorted(iterable, reverse=True)[:n]\n");
-
-static int
-_siftdownmax(PyListObject *heap, Py_ssize_t startpos, Py_ssize_t pos)
-{
-    PyObject *newitem, *parent;
-    int cmp;
-    Py_ssize_t parentpos;
-
-    assert(PyList_Check(heap));
-    if (pos >= PyList_GET_SIZE(heap)) {
-        PyErr_SetString(PyExc_IndexError, "index out of range");
-        return -1;
-    }
-
-    newitem = PyList_GET_ITEM(heap, pos);
-    Py_INCREF(newitem);
-    /* Follow the path to the root, moving parents down until finding
-       a place newitem fits. */
-    while (pos > startpos){
-        parentpos = (pos - 1) >> 1;
-        parent = PyList_GET_ITEM(heap, parentpos);
-        cmp = cmp_lt(parent, newitem);
-        if (cmp == -1) {
-            Py_DECREF(newitem);
-            return -1;
-        }
-        if (cmp == 0)
-            break;
-        Py_INCREF(parent);
-        Py_DECREF(PyList_GET_ITEM(heap, pos));
-        PyList_SET_ITEM(heap, pos, parent);
-        pos = parentpos;
-    }
-    Py_DECREF(PyList_GET_ITEM(heap, pos));
-    PyList_SET_ITEM(heap, pos, newitem);
-    return 0;
-}
-
-static int
-_siftupmax(PyListObject *heap, Py_ssize_t pos)
-{
-    Py_ssize_t startpos, endpos, childpos, rightpos;
-    int cmp;
-    PyObject *newitem, *tmp;
-
-    assert(PyList_Check(heap));
-    endpos = PyList_GET_SIZE(heap);
-    startpos = pos;
-    if (pos >= endpos) {
-        PyErr_SetString(PyExc_IndexError, "index out of range");
-        return -1;
-    }
-    newitem = PyList_GET_ITEM(heap, pos);
-    Py_INCREF(newitem);
-
-    /* Bubble up the smaller child until hitting a leaf. */
-    childpos = 2*pos + 1;    /* leftmost child position  */
-    while (childpos < endpos) {
-        /* Set childpos to index of smaller child.   */
-        rightpos = childpos + 1;
-        if (rightpos < endpos) {
-            cmp = cmp_lt(
-                PyList_GET_ITEM(heap, rightpos),
-                PyList_GET_ITEM(heap, childpos));
-            if (cmp == -1) {
-                Py_DECREF(newitem);
-                return -1;
-            }
-            if (cmp == 0)
-                childpos = rightpos;
-        }
-        /* Move the smaller child up. */
-        tmp = PyList_GET_ITEM(heap, childpos);
-        Py_INCREF(tmp);
-        Py_DECREF(PyList_GET_ITEM(heap, pos));
-        PyList_SET_ITEM(heap, pos, tmp);
-        pos = childpos;
-        childpos = 2*pos + 1;
-    }
-
-    /* The leaf at pos is empty now.  Put newitem there, and and bubble
-       it up to its final resting place (by sifting its parents down). */
-    Py_DECREF(PyList_GET_ITEM(heap, pos));
-    PyList_SET_ITEM(heap, pos, newitem);
-    return _siftdownmax(heap, startpos, pos);
-}
-
-static PyObject *
-nsmallest(PyObject *self, PyObject *args)
-{
-    PyObject *heap=NULL, *elem, *iterable, *los, *it, *oldelem;
-    Py_ssize_t i, n;
-    int cmp;
-
-    if (!PyArg_ParseTuple(args, "nO:nsmallest", &n, &iterable))
-        return NULL;
-
-    it = PyObject_GetIter(iterable);
-    if (it == NULL)
-        return NULL;
-
-    heap = PyList_New(0);
-    if (heap == NULL)
-        goto fail;
-
-    for (i=0 ; i<n ; i++ ){
-        elem = PyIter_Next(it);
-        if (elem == NULL) {
-            if (PyErr_Occurred())
-                goto fail;
-            else
-                goto sortit;
-        }
-        if (PyList_Append(heap, elem) == -1) {
-            Py_DECREF(elem);
-            goto fail;
-        }
-        Py_DECREF(elem);
-    }
-    n = PyList_GET_SIZE(heap);
-    if (n == 0)
-        goto sortit;
-
-    for (i=n/2-1 ; i>=0 ; i--)
-        if(_siftupmax((PyListObject *)heap, i) == -1)
-            goto fail;
-
-    los = PyList_GET_ITEM(heap, 0);
-    while (1) {
-        elem = PyIter_Next(it);
-        if (elem == NULL) {
-            if (PyErr_Occurred())
-                goto fail;
-            else
-                goto sortit;
-        }
-        cmp = cmp_lt(elem, los);
-        if (cmp == -1) {
-            Py_DECREF(elem);
-            goto fail;
-        }
-        if (cmp == 0) {
-            Py_DECREF(elem);
-            continue;
-        }
-
-        oldelem = PyList_GET_ITEM(heap, 0);
-        PyList_SET_ITEM(heap, 0, elem);
-        Py_DECREF(oldelem);
-        if (_siftupmax((PyListObject *)heap, 0) == -1)
-            goto fail;
-        los = PyList_GET_ITEM(heap, 0);
-    }
-
-sortit:
-    if (PyList_Sort(heap) == -1)
-        goto fail;
-    Py_DECREF(it);
-    return heap;
-
-fail:
-    Py_DECREF(it);
-    Py_XDECREF(heap);
-    return NULL;
-}
-
-PyDoc_STRVAR(nsmallest_doc,
-"Find the n smallest elements in a dataset.\n\
-\n\
-Equivalent to:  sorted(iterable)[:n]\n");
-
-static PyMethodDef heapq_methods[] = {
-    {"heappush",        (PyCFunction)heappush,
-        METH_VARARGS,           heappush_doc},
-    {"heappushpop",     (PyCFunction)heappushpop,
-        METH_VARARGS,           heappushpop_doc},
-    {"heappop",         (PyCFunction)heappop,
-        METH_O,                 heappop_doc},
-    {"heapreplace",     (PyCFunction)heapreplace,
-        METH_VARARGS,           heapreplace_doc},
-    {"heapify",         (PyCFunction)heapify,
-        METH_O,                 heapify_doc},
-    {"nlargest",        (PyCFunction)nlargest,
-        METH_VARARGS,           nlargest_doc},
-    {"nsmallest",       (PyCFunction)nsmallest,
-        METH_VARARGS,           nsmallest_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyDoc_STRVAR(module_doc,
-"Heap queue algorithm (a.k.a. priority queue).\n\
-\n\
-Heaps are arrays for which a[k] <= a[2*k+1] and a[k] <= a[2*k+2] for\n\
-all k, counting elements from 0.  For the sake of comparison,\n\
-non-existing elements are considered to be infinite.  The interesting\n\
-property of a heap is that a[0] is always its smallest element.\n\
-\n\
-Usage:\n\
-\n\
-heap = []            # creates an empty heap\n\
-heappush(heap, item) # pushes a new item on the heap\n\
-item = heappop(heap) # pops the smallest item from the heap\n\
-item = heap[0]       # smallest item on the heap without popping it\n\
-heapify(x)           # transforms list into a heap, in-place, in linear time\n\
-item = heapreplace(heap, item) # pops and returns smallest item, and adds\n\
-                               # new item; the heap size is unchanged\n\
-\n\
-Our API differs from textbook heap algorithms as follows:\n\
-\n\
-- We use 0-based indexing.  This makes the relationship between the\n\
-  index for a node and the indexes for its children slightly less\n\
-  obvious, but is more suitable since Python uses 0-based indexing.\n\
-\n\
-- Our heappop() method returns the smallest item, not the largest.\n\
-\n\
-These two make it possible to view the heap as a regular Python list\n\
-without surprises: heap[0] is the smallest item, and heap.sort()\n\
-maintains the heap invariant!\n");
-
-
-PyDoc_STRVAR(__about__,
-"Heap queues\n\
-\n\
-[explanation by François Pinard]\n\
-\n\
-Heaps are arrays for which a[k] <= a[2*k+1] and a[k] <= a[2*k+2] for\n\
-all k, counting elements from 0.  For the sake of comparison,\n\
-non-existing elements are considered to be infinite.  The interesting\n\
-property of a heap is that a[0] is always its smallest element.\n"
-"\n\
-The strange invariant above is meant to be an efficient memory\n\
-representation for a tournament.  The numbers below are `k', not a[k]:\n\
-\n\
-                                   0\n\
-\n\
-                  1                                 2\n\
-\n\
-          3               4                5               6\n\
-\n\
-      7       8       9       10      11      12      13      14\n\
-\n\
-    15 16   17 18   19 20   21 22   23 24   25 26   27 28   29 30\n\
-\n\
-\n\
-In the tree above, each cell `k' is topping `2*k+1' and `2*k+2'.  In\n\
-an usual binary tournament we see in sports, each cell is the winner\n\
-over the two cells it tops, and we can trace the winner down the tree\n\
-to see all opponents s/he had.  However, in many computer applications\n\
-of such tournaments, we do not need to trace the history of a winner.\n\
-To be more memory efficient, when a winner is promoted, we try to\n\
-replace it by something else at a lower level, and the rule becomes\n\
-that a cell and the two cells it tops contain three different items,\n\
-but the top cell \"wins\" over the two topped cells.\n"
-"\n\
-If this heap invariant is protected at all time, index 0 is clearly\n\
-the overall winner.  The simplest algorithmic way to remove it and\n\
-find the \"next\" winner is to move some loser (let's say cell 30 in the\n\
-diagram above) into the 0 position, and then percolate this new 0 down\n\
-the tree, exchanging values, until the invariant is re-established.\n\
-This is clearly logarithmic on the total number of items in the tree.\n\
-By iterating over all items, you get an O(n ln n) sort.\n"
-"\n\
-A nice feature of this sort is that you can efficiently insert new\n\
-items while the sort is going on, provided that the inserted items are\n\
-not \"better\" than the last 0'th element you extracted.  This is\n\
-especially useful in simulation contexts, where the tree holds all\n\
-incoming events, and the \"win\" condition means the smallest scheduled\n\
-time.  When an event schedule other events for execution, they are\n\
-scheduled into the future, so they can easily go into the heap.  So, a\n\
-heap is a good structure for implementing schedulers (this is what I\n\
-used for my MIDI sequencer :-).\n"
-"\n\
-Various structures for implementing schedulers have been extensively\n\
-studied, and heaps are good for this, as they are reasonably speedy,\n\
-the speed is almost constant, and the worst case is not much different\n\
-than the average case.  However, there are other representations which\n\
-are more efficient overall, yet the worst cases might be terrible.\n"
-"\n\
-Heaps are also very useful in big disk sorts.  You most probably all\n\
-know that a big sort implies producing \"runs\" (which are pre-sorted\n\
-sequences, which size is usually related to the amount of CPU memory),\n\
-followed by a merging passes for these runs, which merging is often\n\
-very cleverly organised[1].  It is very important that the initial\n\
-sort produces the longest runs possible.  Tournaments are a good way\n\
-to that.  If, using all the memory available to hold a tournament, you\n\
-replace and percolate items that happen to fit the current run, you'll\n\
-produce runs which are twice the size of the memory for random input,\n\
-and much better for input fuzzily ordered.\n"
-"\n\
-Moreover, if you output the 0'th item on disk and get an input which\n\
-may not fit in the current tournament (because the value \"wins\" over\n\
-the last output value), it cannot fit in the heap, so the size of the\n\
-heap decreases.  The freed memory could be cleverly reused immediately\n\
-for progressively building a second heap, which grows at exactly the\n\
-same rate the first heap is melting.  When the first heap completely\n\
-vanishes, you switch heaps and start a new run.  Clever and quite\n\
-effective!\n\
-\n\
-In a word, heaps are useful memory structures to know.  I use them in\n\
-a few applications, and I think it is good to keep a `heap' module\n\
-around. :-)\n"
-"\n\
---------------------\n\
-[1] The disk balancing algorithms which are current, nowadays, are\n\
-more annoying than clever, and this is a consequence of the seeking\n\
-capabilities of the disks.  On devices which cannot seek, like big\n\
-tape drives, the story was quite different, and one had to be very\n\
-clever to ensure (far in advance) that each tape movement will be the\n\
-most effective possible (that is, will best participate at\n\
-\"progressing\" the merge).  Some tapes were even able to read\n\
-backwards, and this was also used to avoid the rewinding time.\n\
-Believe me, real good tape sorts were quite spectacular to watch!\n\
-From all times, sorting has always been a Great Art! :-)\n");
-
-PyMODINIT_FUNC
-init_heapq(void)
-{
-    PyObject *m;
-
-    m = Py_InitModule3("_heapq", heapq_methods, module_doc);
-    if (m == NULL)
-        return;
-    PyModule_AddObject(m, "__about__", PyString_FromString(__about__));
-}
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_hotshot.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_hotshot.c
deleted file mode 100644
index 4f2a1a6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_hotshot.c
+++ /dev/null
@@ -1,1643 +0,0 @@
-/*
- * This is the High Performance Python Profiler portion of HotShot.
- */
-
-#include "Python.h"
-#include "code.h"
-#include "eval.h"
-#include "frameobject.h"
-#include "structmember.h"
-
-/*
- * Which timer to use should be made more configurable, but that should not
- * be difficult.  This will do for now.
- */
-#ifdef MS_WINDOWS
-#include <windows.h>
-
-#ifdef HAVE_DIRECT_H
-#include <direct.h>    /* for getcwd() */
-#endif
-
-typedef __int64 hs_time;
-#define GETTIMEOFDAY(P_HS_TIME) \
-        { LARGE_INTEGER _temp; \
-          QueryPerformanceCounter(&_temp); \
-          *(P_HS_TIME) = _temp.QuadPart; }
-
-
-#else
-#ifndef HAVE_GETTIMEOFDAY
-#error "This module requires gettimeofday() on non-Windows platforms!"
-#endif
-#if (defined(PYOS_OS2) && defined(PYCC_GCC)) || defined(__QNX__)
-#include <sys/time.h>
-#else
-#include <sys/resource.h>
-#include <sys/times.h>
-#endif
-typedef struct timeval hs_time;
-#endif
-
-#if !defined(__cplusplus) && !defined(inline)
-#ifdef __GNUC__
-#define inline __inline
-#endif
-#endif
-
-#ifndef inline
-#define inline
-#endif
-
-#define BUFFERSIZE 10240
-
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-#define PATH_MAX 260
-#endif
-
-#if defined(__sgi) && _COMPILER_VERSION>700 && !defined(PATH_MAX)
-/* fix PATH_MAX not being defined with MIPSPro 7.x
-   if mode is ANSI C (default) */
-#define PATH_MAX 1024
-#endif
-
-#ifndef PATH_MAX
-#   ifdef MAX_PATH
-#       define PATH_MAX MAX_PATH
-#   elif defined (_POSIX_PATH_MAX)
-#       define PATH_MAX _POSIX_PATH_MAX
-#   else
-#       error "Need a defn. for PATH_MAX in _hotshot.c"
-#   endif
-#endif
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *filemap;
-    PyObject *logfilename;
-    Py_ssize_t index;
-    unsigned char buffer[BUFFERSIZE];
-    FILE *logfp;
-    int lineevents;
-    int linetimings;
-    int frametimings;
-    /* size_t filled; */
-    int active;
-    int next_fileno;
-    hs_time prev_timeofday;
-} ProfilerObject;
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *info;
-    FILE *logfp;
-    int linetimings;
-    int frametimings;
-} LogReaderObject;
-
-static PyObject * ProfilerError = NULL;
-
-
-#ifndef MS_WINDOWS
-#ifdef GETTIMEOFDAY_NO_TZ
-#define GETTIMEOFDAY(ptv) gettimeofday((ptv))
-#else
-#define GETTIMEOFDAY(ptv) gettimeofday((ptv), (struct timezone *)NULL)
-#endif
-#endif
-
-
-/* The log reader... */
-
-PyDoc_STRVAR(logreader_close__doc__,
-"close()\n"
-"Close the log file, preventing additional records from being read.");
-
-static PyObject *
-logreader_close(LogReaderObject *self, PyObject *args)
-{
-    if (self->logfp != NULL) {
-        fclose(self->logfp);
-        self->logfp = NULL;
-    }
-    Py_INCREF(Py_None);
-
-    return Py_None;
-}
-
-PyDoc_STRVAR(logreader_fileno__doc__,
-"fileno() -> file descriptor\n"
-"Returns the file descriptor for the log file, if open.\n"
-"Raises ValueError if the log file is closed.");
-
-static PyObject *
-logreader_fileno(LogReaderObject *self)
-{
-    if (self->logfp == NULL) {
-        PyErr_SetString(PyExc_ValueError,
-                        "logreader's file object already closed");
-        return NULL;
-    }
-    return PyInt_FromLong(fileno(self->logfp));
-}
-
-
-/* Log File Format
- * ---------------
- *
- * The log file consists of a sequence of variable-length records.
- * Each record is identified with a record type identifier in two
- * bits of the first byte.  The two bits are the "least significant"
- * bits of the byte.
- *
- * Low bits:    Opcode:        Meaning:
- *       0x00         ENTER     enter a frame
- *       0x01          EXIT     exit a frame
- *       0x02        LINENO     execution moved onto a different line
- *       0x03         OTHER     more bits are needed to deecode
- *
- * If the type is OTHER, the record is not packed so tightly, and the
- * remaining bits are used to disambiguate the record type.  These
- * records are not used as frequently so compaction is not an issue.
- * Each of the first three record types has a highly tailored
- * structure that allows it to be packed tightly.
- *
- * The OTHER records have the following identifiers:
- *
- * First byte:  Opcode:        Meaning:
- *       0x13      ADD_INFO     define a key/value pair
- *       0x23   DEFINE_FILE     define an int->filename mapping
- *       0x33    LINE_TIMES     indicates if LINENO events have tdeltas
- *       0x43   DEFINE_FUNC     define a (fileno,lineno)->funcname mapping
- *       0x53   FRAME_TIMES     indicates if ENTER/EXIT events have tdeltas
- *
- * Packed Integers
- *
- * "Packed integers" are non-negative integer values encoded as a
- * sequence of bytes.  Each byte is encoded such that the most
- * significant bit is set if the next byte is also part of the
- * integer.  Each byte provides bits to the least-significant end of
- * the result; the accumulated value must be shifted up to place the
- * new bits into the result.
- *
- * "Modified packed integers" are packed integers where only a portion
- * of the first byte is used.  In the rest of the specification, these
- * are referred to as "MPI(n,name)", where "n" is the number of bits
- * discarded from the least-signicant positions of the byte, and
- * "name" is a name being given to those "discarded" bits, since they
- * are a field themselves.
- *
- * ENTER records:
- *
- *      MPI(2,type)  fileno          -- type is 0x00
- *      PI           lineno
- *      PI           tdelta          -- iff frame times are enabled
- *
- * EXIT records
- *
- *      MPI(2,type)  tdelta          -- type is 0x01; tdelta will be 0
- *                                      if frame times are disabled
- *
- * LINENO records
- *
- *      MPI(2,type)  lineno          -- type is 0x02
- *      PI           tdelta          -- iff LINENO includes it
- *
- * ADD_INFO records
- *
- *      BYTE         type            -- always 0x13
- *      PI           len1            -- length of first string
- *      BYTE         string1[len1]   -- len1 bytes of string data
- *      PI           len2            -- length of second string
- *      BYTE         string2[len2]   -- len2 bytes of string data
- *
- * DEFINE_FILE records
- *
- *      BYTE         type            -- always 0x23
- *      PI           fileno
- *      PI           len             -- length of filename
- *      BYTE         filename[len]   -- len bytes of string data
- *
- * DEFINE_FUNC records
- *
- *      BYTE         type            -- always 0x43
- *      PI           fileno
- *      PI           lineno
- *      PI           len             -- length of funcname
- *      BYTE         funcname[len]   -- len bytes of string data
- *
- * LINE_TIMES records
- *
- * This record can be used only before the start of ENTER/EXIT/LINENO
- * records.  If have_tdelta is true, LINENO records will include the
- * tdelta field, otherwise it will be omitted.  If this record is not
- * given, LINENO records will not contain the tdelta field.
- *
- *      BYTE         type            -- always 0x33
- *      BYTE         have_tdelta     -- 0 if LINENO does *not* have
- *                                      timing information
- * FRAME_TIMES records
- *
- * This record can be used only before the start of ENTER/EXIT/LINENO
- * records.  If have_tdelta is true, ENTER and EXIT records will
- * include the tdelta field, otherwise it will be omitted.  If this
- * record is not given, ENTER and EXIT records will contain the tdelta
- * field.
- *
- *      BYTE         type            -- always 0x53
- *      BYTE         have_tdelta     -- 0 if ENTER/EXIT do *not* have
- *                                      timing information
- */
-
-#define WHAT_ENTER        0x00
-#define WHAT_EXIT         0x01
-#define WHAT_LINENO       0x02
-#define WHAT_OTHER        0x03  /* only used in decoding */
-#define WHAT_ADD_INFO     0x13
-#define WHAT_DEFINE_FILE  0x23
-#define WHAT_LINE_TIMES   0x33
-#define WHAT_DEFINE_FUNC  0x43
-#define WHAT_FRAME_TIMES  0x53
-
-#define ERR_NONE          0
-#define ERR_EOF          -1
-#define ERR_EXCEPTION    -2
-#define ERR_BAD_RECTYPE  -3
-
-#define PISIZE            (sizeof(int) + 1)
-#define MPISIZE           (PISIZE + 1)
-
-/* Maximum size of "normal" events -- nothing that contains string data */
-#define MAXEVENTSIZE      (MPISIZE + PISIZE*2)
-
-
-/* Unpack a packed integer; if "discard" is non-zero, unpack a modified
- * packed integer with "discard" discarded bits.
- */
-static int
-unpack_packed_int(LogReaderObject *self, int *pvalue, int discard)
-{
-    int c;
-    int accum = 0;
-    int bits = 0;
-    int cont;
-
-    do {
-        /* read byte */
-        if ((c = fgetc(self->logfp)) == EOF)
-            return ERR_EOF;
-        accum |= ((c & 0x7F) >> discard) << bits;
-        bits += (7 - discard);
-        cont = c & 0x80;
-        discard = 0;
-    } while (cont);
-
-    *pvalue = accum;
-
-    return 0;
-}
-
-/* Unpack a string, which is encoded as a packed integer giving the
- * length of the string, followed by the string data.
- */
-static int
-unpack_string(LogReaderObject *self, PyObject **pvalue)
-{
-    int i;
-    int len;
-    int err;
-    int ch;
-    char *buf;
-
-    if ((err = unpack_packed_int(self, &len, 0)))
-        return err;
-
-    buf = (char *)malloc(len);
-    if (!buf) {
-        PyErr_NoMemory();
-        return ERR_EXCEPTION;
-    }
-
-    for (i=0; i < len; i++) {
-        ch = fgetc(self->logfp);
-        buf[i] = ch;
-        if (ch == EOF) {
-            free(buf);
-            return ERR_EOF;
-        }
-    }
-    *pvalue = PyString_FromStringAndSize(buf, len);
-    free(buf);
-    if (*pvalue == NULL) {
-        return ERR_EXCEPTION;
-    }
-    return 0;
-}
-
-
-static int
-unpack_add_info(LogReaderObject *self)
-{
-    PyObject *key;
-    PyObject *value = NULL;
-    int err;
-
-    err = unpack_string(self, &key);
-    if (!err) {
-        err = unpack_string(self, &value);
-        if (err)
-            Py_DECREF(key);
-        else {
-            PyObject *list = PyDict_GetItem(self->info, key);
-            if (list == NULL) {
-                list = PyList_New(0);
-                if (list == NULL) {
-                    err = ERR_EXCEPTION;
-                    goto finally;
-                }
-                if (PyDict_SetItem(self->info, key, list)) {
-                    Py_DECREF(list);
-                    err = ERR_EXCEPTION;
-                    goto finally;
-                }
-                Py_DECREF(list);
-            }
-            if (PyList_Append(list, value))
-                err = ERR_EXCEPTION;
-        }
-    }
- finally:
-    Py_XDECREF(key);
-    Py_XDECREF(value);
-    return err;
-}
-
-
-static void
-eof_error(LogReaderObject *self)
-{
-    fclose(self->logfp);
-    self->logfp = NULL;
-    PyErr_SetString(PyExc_EOFError,
-                    "end of file with incomplete profile record");
-}
-
-static PyObject *
-logreader_tp_iternext(LogReaderObject *self)
-{
-    int c;
-    int what;
-    int err = ERR_NONE;
-    int lineno = -1;
-    int fileno = -1;
-    int tdelta = -1;
-    PyObject *s1 = NULL, *s2 = NULL;
-    PyObject *result = NULL;
-#if 0
-    unsigned char b0, b1;
-#endif
-
-    if (self->logfp == NULL) {
-        PyErr_SetString(ProfilerError,
-                        "cannot iterate over closed LogReader object");
-        return NULL;
-    }
-
-restart:
-    /* decode the record type */
-    if ((c = fgetc(self->logfp)) == EOF) {
-        fclose(self->logfp);
-        self->logfp = NULL;
-        return NULL;
-    }
-    what = c & WHAT_OTHER;
-    if (what == WHAT_OTHER)
-        what = c; /* need all the bits for type */
-    else
-        ungetc(c, self->logfp); /* type byte includes packed int */
-
-    switch (what) {
-    case WHAT_ENTER:
-        err = unpack_packed_int(self, &fileno, 2);
-        if (!err) {
-            err = unpack_packed_int(self, &lineno, 0);
-            if (self->frametimings && !err)
-                err = unpack_packed_int(self, &tdelta, 0);
-        }
-        break;
-    case WHAT_EXIT:
-        err = unpack_packed_int(self, &tdelta, 2);
-        break;
-    case WHAT_LINENO:
-        err = unpack_packed_int(self, &lineno, 2);
-        if (self->linetimings && !err)
-            err = unpack_packed_int(self, &tdelta, 0);
-        break;
-    case WHAT_ADD_INFO:
-        err = unpack_add_info(self);
-        break;
-    case WHAT_DEFINE_FILE:
-        err = unpack_packed_int(self, &fileno, 0);
-        if (!err) {
-            err = unpack_string(self, &s1);
-            if (!err) {
-                Py_INCREF(Py_None);
-                s2 = Py_None;
-            }
-        }
-        break;
-    case WHAT_DEFINE_FUNC:
-        err = unpack_packed_int(self, &fileno, 0);
-        if (!err) {
-            err = unpack_packed_int(self, &lineno, 0);
-            if (!err)
-                err = unpack_string(self, &s1);
-        }
-        break;
-    case WHAT_LINE_TIMES:
-        if ((c = fgetc(self->logfp)) == EOF)
-            err = ERR_EOF;
-        else {
-            self->linetimings = c ? 1 : 0;
-            goto restart;
-        }
-        break;
-    case WHAT_FRAME_TIMES:
-        if ((c = fgetc(self->logfp)) == EOF)
-            err = ERR_EOF;
-        else {
-            self->frametimings = c ? 1 : 0;
-            goto restart;
-        }
-        break;
-    default:
-        err = ERR_BAD_RECTYPE;
-    }
-    if (err == ERR_BAD_RECTYPE) {
-        PyErr_SetString(PyExc_ValueError,
-                        "unknown record type in log file");
-    }
-    else if (err == ERR_EOF) {
-        eof_error(self);
-    }
-    else if (!err) {
-        result = PyTuple_New(4);
-        if (result == NULL)
-            return NULL;
-        PyTuple_SET_ITEM(result, 0, PyInt_FromLong(what));
-        PyTuple_SET_ITEM(result, 2, PyInt_FromLong(fileno));
-        if (s1 == NULL)
-            PyTuple_SET_ITEM(result, 1, PyInt_FromLong(tdelta));
-        else
-            PyTuple_SET_ITEM(result, 1, s1);
-        if (s2 == NULL)
-            PyTuple_SET_ITEM(result, 3, PyInt_FromLong(lineno));
-        else
-            PyTuple_SET_ITEM(result, 3, s2);
-    }
-    /* The only other case is err == ERR_EXCEPTION, in which case the
-     * exception is already set.
-     */
-#if 0
-    b0 = self->buffer[self->index];
-    b1 = self->buffer[self->index + 1];
-    if (b0 & 1) {
-        /* This is a line-number event. */
-        what = PyTrace_LINE;
-        lineno = ((b0 & ~1) << 7) + b1;
-        self->index += 2;
-    }
-    else {
-        what = (b0 & 0x0E) >> 1;
-        tdelta = ((b0 & 0xF0) << 4) + b1;
-        if (what == PyTrace_CALL) {
-            /* we know there's a 2-byte file ID & 2-byte line number */
-            fileno = ((self->buffer[self->index + 2] << 8)
-                      + self->buffer[self->index + 3]);
-            lineno = ((self->buffer[self->index + 4] << 8)
-                      + self->buffer[self->index + 5]);
-            self->index += 6;
-        }
-        else
-            self->index += 2;
-    }
-#endif
-    return result;
-}
-
-static void
-logreader_dealloc(LogReaderObject *self)
-{
-    if (self->logfp != NULL) {
-        fclose(self->logfp);
-        self->logfp = NULL;
-    }
-    Py_XDECREF(self->info);
-    PyObject_Del(self);
-}
-
-static PyObject *
-logreader_sq_item(LogReaderObject *self, Py_ssize_t index)
-{
-    PyObject *result = logreader_tp_iternext(self);
-    if (result == NULL && !PyErr_Occurred()) {
-        PyErr_SetString(PyExc_IndexError, "no more events in log");
-        return NULL;
-    }
-    return result;
-}
-
-static void
-do_stop(ProfilerObject *self);
-
-static int
-flush_data(ProfilerObject *self)
-{
-    /* Need to dump data to the log file... */
-    size_t written = fwrite(self->buffer, 1, self->index, self->logfp);
-    if (written == (size_t)self->index)
-        self->index = 0;
-    else {
-        memmove(self->buffer, &self->buffer[written],
-                self->index - written);
-        self->index -= written;
-        if (written == 0) {
-            char *s = PyString_AsString(self->logfilename);
-            PyErr_SetFromErrnoWithFilename(PyExc_IOError, s);
-            do_stop(self);
-            return -1;
-        }
-    }
-    if (written > 0) {
-        if (fflush(self->logfp)) {
-            char *s = PyString_AsString(self->logfilename);
-            PyErr_SetFromErrnoWithFilename(PyExc_IOError, s);
-            do_stop(self);
-            return -1;
-        }
-    }
-    return 0;
-}
-
-static inline int
-pack_packed_int(ProfilerObject *self, int value)
-{
-    unsigned char partial;
-
-    do {
-        partial = value & 0x7F;
-        value >>= 7;
-        if (value)
-            partial |= 0x80;
-        self->buffer[self->index] = partial;
-        self->index++;
-    } while (value);
-    return 0;
-}
-
-/* Encode a modified packed integer, with a subfield of modsize bits
- * containing the value "subfield".  The value of subfield is not
- * checked to ensure it actually fits in modsize bits.
- */
-static inline int
-pack_modified_packed_int(ProfilerObject *self, int value,
-                         int modsize, int subfield)
-{
-    const int maxvalues[] = {-1, 1, 3, 7, 15, 31, 63, 127};
-
-    int bits = 7 - modsize;
-    int partial = value & maxvalues[bits];
-    unsigned char b = subfield | (partial << modsize);
-
-    if (partial != value) {
-        b |= 0x80;
-        self->buffer[self->index] = b;
-        self->index++;
-        return pack_packed_int(self, value >> bits);
-    }
-    self->buffer[self->index] = b;
-    self->index++;
-    return 0;
-}
-
-static int
-pack_string(ProfilerObject *self, const char *s, Py_ssize_t len)
-{
-    if (len + PISIZE + self->index >= BUFFERSIZE) {
-        if (flush_data(self) < 0)
-            return -1;
-    }
-    assert(len < INT_MAX);
-    if (pack_packed_int(self, (int)len) < 0)
-        return -1;
-    memcpy(self->buffer + self->index, s, len);
-    self->index += len;
-    return 0;
-}
-
-static int
-pack_add_info(ProfilerObject *self, const char *s1, const char *s2)
-{
-    Py_ssize_t len1 = strlen(s1);
-    Py_ssize_t len2 = strlen(s2);
-
-    if (len1 + len2 + PISIZE*2 + 1 + self->index >= BUFFERSIZE) {
-        if (flush_data(self) < 0)
-            return -1;
-    }
-    self->buffer[self->index] = WHAT_ADD_INFO;
-    self->index++;
-    if (pack_string(self, s1, len1) < 0)
-        return -1;
-    return pack_string(self, s2, len2);
-}
-
-static int
-pack_define_file(ProfilerObject *self, int fileno, const char *filename)
-{
-    Py_ssize_t len = strlen(filename);
-
-    if (len + PISIZE*2 + 1 + self->index >= BUFFERSIZE) {
-        if (flush_data(self) < 0)
-            return -1;
-    }
-    self->buffer[self->index] = WHAT_DEFINE_FILE;
-    self->index++;
-    if (pack_packed_int(self, fileno) < 0)
-        return -1;
-    return pack_string(self, filename, len);
-}
-
-static int
-pack_define_func(ProfilerObject *self, int fileno, int lineno,
-                 const char *funcname)
-{
-    Py_ssize_t len = strlen(funcname);
-
-    if (len + PISIZE*3 + 1 + self->index >= BUFFERSIZE) {
-        if (flush_data(self) < 0)
-            return -1;
-    }
-    self->buffer[self->index] = WHAT_DEFINE_FUNC;
-    self->index++;
-    if (pack_packed_int(self, fileno) < 0)
-        return -1;
-    if (pack_packed_int(self, lineno) < 0)
-        return -1;
-    return pack_string(self, funcname, len);
-}
-
-static int
-pack_line_times(ProfilerObject *self)
-{
-    if (2 + self->index >= BUFFERSIZE) {
-        if (flush_data(self) < 0)
-            return -1;
-    }
-    self->buffer[self->index] = WHAT_LINE_TIMES;
-    self->buffer[self->index + 1] = self->linetimings ? 1 : 0;
-    self->index += 2;
-    return 0;
-}
-
-static int
-pack_frame_times(ProfilerObject *self)
-{
-    if (2 + self->index >= BUFFERSIZE) {
-        if (flush_data(self) < 0)
-            return -1;
-    }
-    self->buffer[self->index] = WHAT_FRAME_TIMES;
-    self->buffer[self->index + 1] = self->frametimings ? 1 : 0;
-    self->index += 2;
-    return 0;
-}
-
-static inline int
-pack_enter(ProfilerObject *self, int fileno, int tdelta, int lineno)
-{
-    if (MPISIZE + PISIZE*2 + self->index >= BUFFERSIZE) {
-        if (flush_data(self) < 0)
-            return -1;
-    }
-    pack_modified_packed_int(self, fileno, 2, WHAT_ENTER);
-    pack_packed_int(self, lineno);
-    if (self->frametimings)
-        return pack_packed_int(self, tdelta);
-    else
-        return 0;
-}
-
-static inline int
-pack_exit(ProfilerObject *self, int tdelta)
-{
-    if (MPISIZE + self->index >= BUFFERSIZE) {
-        if (flush_data(self) < 0)
-            return -1;
-    }
-    if (self->frametimings)
-        return pack_modified_packed_int(self, tdelta, 2, WHAT_EXIT);
-    self->buffer[self->index] = WHAT_EXIT;
-    self->index++;
-    return 0;
-}
-
-static inline int
-pack_lineno(ProfilerObject *self, int lineno)
-{
-    if (MPISIZE + self->index >= BUFFERSIZE) {
-        if (flush_data(self) < 0)
-            return -1;
-    }
-    return pack_modified_packed_int(self, lineno, 2, WHAT_LINENO);
-}
-
-static inline int
-pack_lineno_tdelta(ProfilerObject *self, int lineno, int tdelta)
-{
-    if (MPISIZE + PISIZE + self->index >= BUFFERSIZE) {
-        if (flush_data(self) < 0)
-            return 0;
-    }
-    if (pack_modified_packed_int(self, lineno, 2, WHAT_LINENO) < 0)
-        return -1;
-    return pack_packed_int(self, tdelta);
-}
-
-static inline int
-get_fileno(ProfilerObject *self, PyCodeObject *fcode)
-{
-    /* This is only used for ENTER events. */
-
-    PyObject *obj;
-    PyObject *dict;
-    int fileno;
-
-    obj = PyDict_GetItem(self->filemap, fcode->co_filename);
-    if (obj == NULL) {
-        /* first sighting of this file */
-        dict = PyDict_New();
-        if (dict == NULL) {
-            return -1;
-        }
-        fileno = self->next_fileno;
-        obj = Py_BuildValue("iN", fileno, dict);
-        if (obj == NULL) {
-            return -1;
-        }
-        if (PyDict_SetItem(self->filemap, fcode->co_filename, obj)) {
-            Py_DECREF(obj);
-            return -1;
-        }
-        self->next_fileno++;
-        Py_DECREF(obj);
-        if (pack_define_file(self, fileno,
-                             PyString_AS_STRING(fcode->co_filename)) < 0)
-            return -1;
-    }
-    else {
-        /* already know this ID */
-        fileno = PyInt_AS_LONG(PyTuple_GET_ITEM(obj, 0));
-        dict = PyTuple_GET_ITEM(obj, 1);
-    }
-    /* make sure we save a function name for this (fileno, lineno) */
-    obj = PyInt_FromLong(fcode->co_firstlineno);
-    if (obj == NULL) {
-        /* We just won't have it saved; too bad. */
-        PyErr_Clear();
-    }
-    else {
-        PyObject *name = PyDict_GetItem(dict, obj);
-        if (name == NULL) {
-            if (pack_define_func(self, fileno, fcode->co_firstlineno,
-                                 PyString_AS_STRING(fcode->co_name)) < 0) {
-                Py_DECREF(obj);
-                return -1;
-            }
-            if (PyDict_SetItem(dict, obj, fcode->co_name)) {
-                Py_DECREF(obj);
-                return -1;
-            }
-        }
-        Py_DECREF(obj);
-    }
-    return fileno;
-}
-
-static inline int
-get_tdelta(ProfilerObject *self)
-{
-    int tdelta;
-#ifdef MS_WINDOWS
-    hs_time tv;
-    hs_time diff;
-
-    GETTIMEOFDAY(&tv);
-    diff = tv - self->prev_timeofday;
-    tdelta = (int)diff;
-#else
-    struct timeval tv;
-
-    GETTIMEOFDAY(&tv);
-
-    tdelta = tv.tv_usec - self->prev_timeofday.tv_usec;
-    if (tv.tv_sec != self->prev_timeofday.tv_sec)
-        tdelta += (tv.tv_sec - self->prev_timeofday.tv_sec) * 1000000;
-#endif
-    /* time can go backwards on some multiprocessor systems or by NTP */
-    if (tdelta < 0)
-        return 0;
-
-    self->prev_timeofday = tv;
-    return tdelta;
-}
-
-
-/* The workhorse:  the profiler callback function. */
-
-static int
-tracer_callback(ProfilerObject *self, PyFrameObject *frame, int what,
-                PyObject *arg)
-{
-    int fileno;
-
-    switch (what) {
-    case PyTrace_CALL:
-        fileno = get_fileno(self, frame->f_code);
-        if (fileno < 0)
-            return -1;
-        return pack_enter(self, fileno,
-                          self->frametimings ? get_tdelta(self) : -1,
-                          frame->f_code->co_firstlineno);
-
-    case PyTrace_RETURN:
-        return pack_exit(self, get_tdelta(self));
-
-    case PyTrace_LINE:  /* we only get these events if we asked for them */
-        if (self->linetimings)
-            return pack_lineno_tdelta(self, frame->f_lineno,
-                                      get_tdelta(self));
-        else
-            return pack_lineno(self, frame->f_lineno);
-
-    default:
-        /* ignore PyTrace_EXCEPTION */
-        break;
-    }
-    return 0;
-}
-
-
-/* A couple of useful helper functions. */
-
-#ifdef MS_WINDOWS
-static LARGE_INTEGER frequency = {0, 0};
-#endif
-
-static unsigned long timeofday_diff = 0;
-static unsigned long rusage_diff = 0;
-
-static void
-calibrate(void)
-{
-    hs_time tv1, tv2;
-
-#ifdef MS_WINDOWS
-    hs_time diff;
-    QueryPerformanceFrequency(&frequency);
-#endif
-
-    GETTIMEOFDAY(&tv1);
-    while (1) {
-        GETTIMEOFDAY(&tv2);
-#ifdef MS_WINDOWS
-        diff = tv2 - tv1;
-        if (diff != 0) {
-            timeofday_diff = (unsigned long)diff;
-            break;
-        }
-#else
-        if (tv1.tv_sec != tv2.tv_sec || tv1.tv_usec != tv2.tv_usec) {
-            if (tv1.tv_sec == tv2.tv_sec)
-                timeofday_diff = tv2.tv_usec - tv1.tv_usec;
-            else
-                timeofday_diff = (1000000 - tv1.tv_usec) + tv2.tv_usec;
-            break;
-        }
-#endif
-    }
-#if defined(MS_WINDOWS) || defined(PYOS_OS2) || \
-    defined(__VMS) || defined (__QNX__)
-    rusage_diff = -1;
-#else
-    {
-        struct rusage ru1, ru2;
-
-        getrusage(RUSAGE_SELF, &ru1);
-        while (1) {
-            getrusage(RUSAGE_SELF, &ru2);
-            if (ru1.ru_utime.tv_sec != ru2.ru_utime.tv_sec) {
-                rusage_diff = ((1000000 - ru1.ru_utime.tv_usec)
-                               + ru2.ru_utime.tv_usec);
-                break;
-            }
-            else if (ru1.ru_utime.tv_usec != ru2.ru_utime.tv_usec) {
-                rusage_diff = ru2.ru_utime.tv_usec - ru1.ru_utime.tv_usec;
-                break;
-            }
-            else if (ru1.ru_stime.tv_sec != ru2.ru_stime.tv_sec) {
-                rusage_diff = ((1000000 - ru1.ru_stime.tv_usec)
-                               + ru2.ru_stime.tv_usec);
-                break;
-            }
-            else if (ru1.ru_stime.tv_usec != ru2.ru_stime.tv_usec) {
-                rusage_diff = ru2.ru_stime.tv_usec - ru1.ru_stime.tv_usec;
-                break;
-            }
-        }
-    }
-#endif
-}
-
-static void
-do_start(ProfilerObject *self)
-{
-    self->active = 1;
-    GETTIMEOFDAY(&self->prev_timeofday);
-    if (self->lineevents)
-        PyEval_SetTrace((Py_tracefunc) tracer_callback, (PyObject *)self);
-    else
-        PyEval_SetProfile((Py_tracefunc) tracer_callback, (PyObject *)self);
-}
-
-static void
-do_stop(ProfilerObject *self)
-{
-    if (self->active) {
-        self->active = 0;
-        if (self->lineevents)
-            PyEval_SetTrace(NULL, NULL);
-        else
-            PyEval_SetProfile(NULL, NULL);
-    }
-    if (self->index > 0) {
-        /* Best effort to dump out any remaining data. */
-        flush_data(self);
-    }
-}
-
-static int
-is_available(ProfilerObject *self)
-{
-    if (self->active) {
-        PyErr_SetString(ProfilerError, "profiler already active");
-        return 0;
-    }
-    if (self->logfp == NULL) {
-        PyErr_SetString(ProfilerError, "profiler already closed");
-        return 0;
-    }
-    return 1;
-}
-
-
-/* Profiler object interface methods. */
-
-PyDoc_STRVAR(addinfo__doc__,
-"addinfo(key, value)\n"
-"Insert an ADD_INFO record into the log.");
-
-static PyObject *
-profiler_addinfo(ProfilerObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-    char *key, *value;
-
-    if (PyArg_ParseTuple(args, "ss:addinfo", &key, &value)) {
-        if (self->logfp == NULL)
-            PyErr_SetString(ProfilerError, "profiler already closed");
-        else {
-            if (pack_add_info(self, key, value) == 0) {
-                result = Py_None;
-                Py_INCREF(result);
-            }
-        }
-    }
-    return result;
-}
-
-PyDoc_STRVAR(close__doc__,
-"close()\n"
-"Shut down this profiler and close the log files, even if its active.");
-
-static PyObject *
-profiler_close(ProfilerObject *self)
-{
-    do_stop(self);
-    if (self->logfp != NULL) {
-        fclose(self->logfp);
-        self->logfp = NULL;
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-#define fileno__doc__ logreader_fileno__doc__
-
-static PyObject *
-profiler_fileno(ProfilerObject *self)
-{
-    if (self->logfp == NULL) {
-        PyErr_SetString(PyExc_ValueError,
-                        "profiler's file object already closed");
-        return NULL;
-    }
-    return PyInt_FromLong(fileno(self->logfp));
-}
-
-PyDoc_STRVAR(runcall__doc__,
-"runcall(callable[, args[, kw]]) -> callable()\n"
-"Profile a specific function call, returning the result of that call.");
-
-static PyObject *
-profiler_runcall(ProfilerObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-    PyObject *callargs = NULL;
-    PyObject *callkw = NULL;
-    PyObject *callable;
-
-    if (PyArg_UnpackTuple(args, "runcall", 1, 3,
-                         &callable, &callargs, &callkw)) {
-        if (is_available(self)) {
-            do_start(self);
-            result = PyEval_CallObjectWithKeywords(callable, callargs, callkw);
-            do_stop(self);
-        }
-    }
-    return result;
-}
-
-PyDoc_STRVAR(runcode__doc__,
-"runcode(code, globals[, locals])\n"
-"Execute a code object while collecting profile data.  If locals is\n"
-"omitted, globals is used for the locals as well.");
-
-static PyObject *
-profiler_runcode(ProfilerObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-    PyCodeObject *code;
-    PyObject *globals;
-    PyObject *locals = NULL;
-
-    if (PyArg_ParseTuple(args, "O!O!|O:runcode",
-                         &PyCode_Type, &code,
-                         &PyDict_Type, &globals,
-                         &locals)) {
-        if (is_available(self)) {
-            if (locals == NULL || locals == Py_None)
-                locals = globals;
-            else if (!PyDict_Check(locals)) {
-                PyErr_SetString(PyExc_TypeError,
-                                "locals must be a dictionary or None");
-                return NULL;
-            }
-            do_start(self);
-            result = PyEval_EvalCode(code, globals, locals);
-            do_stop(self);
-#if 0
-            if (!PyErr_Occurred()) {
-                result = Py_None;
-                Py_INCREF(result);
-            }
-#endif
-        }
-    }
-    return result;
-}
-
-PyDoc_STRVAR(start__doc__,
-"start()\n"
-"Install this profiler for the current thread.");
-
-static PyObject *
-profiler_start(ProfilerObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-
-    if (is_available(self)) {
-        do_start(self);
-        result = Py_None;
-        Py_INCREF(result);
-    }
-    return result;
-}
-
-PyDoc_STRVAR(stop__doc__,
-"stop()\n"
-"Remove this profiler from the current thread.");
-
-static PyObject *
-profiler_stop(ProfilerObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-
-    if (!self->active)
-        PyErr_SetString(ProfilerError, "profiler not active");
-    else {
-        do_stop(self);
-        result = Py_None;
-        Py_INCREF(result);
-    }
-    return result;
-}
-
-
-/* Python API support. */
-
-static void
-profiler_dealloc(ProfilerObject *self)
-{
-    do_stop(self);
-    if (self->logfp != NULL)
-        fclose(self->logfp);
-    Py_XDECREF(self->filemap);
-    Py_XDECREF(self->logfilename);
-    PyObject_Del((PyObject *)self);
-}
-
-static PyMethodDef profiler_methods[] = {
-    {"addinfo", (PyCFunction)profiler_addinfo, METH_VARARGS, addinfo__doc__},
-    {"close",   (PyCFunction)profiler_close,   METH_NOARGS,  close__doc__},
-    {"fileno",  (PyCFunction)profiler_fileno,  METH_NOARGS,  fileno__doc__},
-    {"runcall", (PyCFunction)profiler_runcall, METH_VARARGS, runcall__doc__},
-    {"runcode", (PyCFunction)profiler_runcode, METH_VARARGS, runcode__doc__},
-    {"start",   (PyCFunction)profiler_start,   METH_NOARGS,  start__doc__},
-    {"stop",    (PyCFunction)profiler_stop,    METH_NOARGS,  stop__doc__},
-    {NULL, NULL}
-};
-
-static PyMemberDef profiler_members[] = {
-    {"frametimings", T_LONG, offsetof(ProfilerObject, linetimings), READONLY},
-    {"lineevents",   T_LONG, offsetof(ProfilerObject, lineevents), READONLY},
-    {"linetimings",  T_LONG, offsetof(ProfilerObject, linetimings), READONLY},
-    {NULL}
-};
-
-static PyObject *
-profiler_get_closed(ProfilerObject *self, void *closure)
-{
-    PyObject *result = (self->logfp == NULL) ? Py_True : Py_False;
-    Py_INCREF(result);
-    return result;
-}
-
-static PyGetSetDef profiler_getsets[] = {
-    {"closed", (getter)profiler_get_closed, NULL,
-     PyDoc_STR("True if the profiler's output file has already been closed.")},
-    {NULL}
-};
-
-
-PyDoc_STRVAR(profiler_object__doc__,
-"High-performance profiler object.\n"
-"\n"
-"Methods:\n"
-"\n"
-"close():      Stop the profiler and close the log files.\n"
-"fileno():     Returns the file descriptor of the log file.\n"
-"runcall():    Run a single function call with profiling enabled.\n"
-"runcode():    Execute a code object with profiling enabled.\n"
-"start():      Install the profiler and return.\n"
-"stop():       Remove the profiler.\n"
-"\n"
-"Attributes (read-only):\n"
-"\n"
-"closed:       True if the profiler has already been closed.\n"
-"frametimings: True if ENTER/EXIT events collect timing information.\n"
-"lineevents:   True if line events are reported to the profiler.\n"
-"linetimings:  True if line events collect timing information.");
-
-static PyTypeObject ProfilerType = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_hotshot.ProfilerType",            /* tp_name              */
-    (int) sizeof(ProfilerObject),       /* tp_basicsize         */
-    0,                                  /* tp_itemsize          */
-    (destructor)profiler_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               */
-    PyObject_GenericGetAttr,            /* tp_getattro          */
-    0,                                  /* tp_setattro          */
-    0,                                  /* tp_as_buffer         */
-    Py_TPFLAGS_DEFAULT,                 /* tp_flags             */
-    profiler_object__doc__,             /* tp_doc               */
-    0,                                  /* tp_traverse          */
-    0,                                  /* tp_clear             */
-    0,                                  /* tp_richcompare       */
-    0,                                  /* tp_weaklistoffset    */
-    0,                                  /* tp_iter              */
-    0,                                  /* tp_iternext          */
-    profiler_methods,                   /* tp_methods           */
-    profiler_members,                   /* tp_members           */
-    profiler_getsets,                   /* tp_getset            */
-    0,                                  /* tp_base              */
-    0,                                  /* tp_dict              */
-    0,                                  /* tp_descr_get         */
-    0,                                  /* tp_descr_set         */
-};
-
-
-static PyMethodDef logreader_methods[] = {
-    {"close",   (PyCFunction)logreader_close,  METH_NOARGS,
-     logreader_close__doc__},
-    {"fileno",  (PyCFunction)logreader_fileno, METH_NOARGS,
-     logreader_fileno__doc__},
-    {NULL, NULL}
-};
-
-static PyMemberDef logreader_members[] = {
-    {"info", T_OBJECT, offsetof(LogReaderObject, info), RO,
-     PyDoc_STR("Dictionary mapping informational keys to lists of values.")},
-    {NULL}
-};
-
-
-PyDoc_STRVAR(logreader__doc__,
-"logreader(filename) --> log-iterator\n\
-Create a log-reader for the timing information file.");
-
-static PySequenceMethods logreader_as_sequence = {
-    0,                                  /* sq_length */
-    0,                                  /* sq_concat */
-    0,                                  /* sq_repeat */
-    (ssizeargfunc)logreader_sq_item,    /* sq_item */
-    0,                                  /* sq_slice */
-    0,                                  /* sq_ass_item */
-    0,                                  /* sq_ass_slice */
-    0,                                  /* sq_contains */
-    0,                                  /* sq_inplace_concat */
-    0,                                  /* sq_inplace_repeat */
-};
-
-static PyObject *
-logreader_get_closed(LogReaderObject *self, void *closure)
-{
-    PyObject *result = (self->logfp == NULL) ? Py_True : Py_False;
-    Py_INCREF(result);
-    return result;
-}
-
-static PyGetSetDef logreader_getsets[] = {
-    {"closed", (getter)logreader_get_closed, NULL,
-     PyDoc_STR("True if the logreader's input file has already been closed.")},
-    {NULL}
-};
-
-static PyTypeObject LogReaderType = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_hotshot.LogReaderType",           /* tp_name              */
-    (int) sizeof(LogReaderObject),      /* tp_basicsize         */
-    0,                                  /* tp_itemsize          */
-    (destructor)logreader_dealloc,      /* tp_dealloc           */
-    0,                                  /* tp_print             */
-    0,                                  /* tp_getattr           */
-    0,                                  /* tp_setattr           */
-    0,                                  /* tp_compare           */
-    0,                                  /* tp_repr              */
-    0,                                  /* tp_as_number         */
-    &logreader_as_sequence,             /* tp_as_sequence       */
-    0,                                  /* tp_as_mapping        */
-    0,                                  /* tp_hash              */
-    0,                                  /* tp_call              */
-    0,                                  /* tp_str               */
-    PyObject_GenericGetAttr,            /* tp_getattro          */
-    0,                                  /* tp_setattro          */
-    0,                                  /* tp_as_buffer         */
-    Py_TPFLAGS_DEFAULT,                 /* tp_flags             */
-    logreader__doc__,                   /* tp_doc               */
-    0,                                  /* tp_traverse          */
-    0,                                  /* tp_clear             */
-    0,                                  /* tp_richcompare       */
-    0,                                  /* tp_weaklistoffset    */
-    PyObject_SelfIter,                  /* tp_iter              */
-    (iternextfunc)logreader_tp_iternext,/* tp_iternext          */
-    logreader_methods,                  /* tp_methods           */
-    logreader_members,                  /* tp_members           */
-    logreader_getsets,                  /* tp_getset            */
-    0,                                  /* tp_base              */
-    0,                                  /* tp_dict              */
-    0,                                  /* tp_descr_get         */
-    0,                                  /* tp_descr_set         */
-};
-
-static PyObject *
-hotshot_logreader(PyObject *unused, PyObject *args)
-{
-    LogReaderObject *self = NULL;
-    char *filename;
-    int c;
-    int err = 0;
-
-    if (PyArg_ParseTuple(args, "s:logreader", &filename)) {
-        self = PyObject_New(LogReaderObject, &LogReaderType);
-        if (self != NULL) {
-            self->frametimings = 1;
-            self->linetimings = 0;
-            self->info = NULL;
-            self->logfp = fopen(filename, "rb");
-            if (self->logfp == NULL) {
-                PyErr_SetFromErrnoWithFilename(PyExc_IOError, filename);
-                goto error;
-            }
-            self->info = PyDict_New();
-            if (self->info == NULL)
-                goto error;
-            /* read initial info */
-            for (;;) {
-                if ((c = fgetc(self->logfp)) == EOF) {
-                    eof_error(self);
-                    goto error;
-                }
-                if (c != WHAT_ADD_INFO) {
-                    ungetc(c, self->logfp);
-                    break;
-                }
-                err = unpack_add_info(self);
-                if (err) {
-                    if (err == ERR_EOF)
-                        eof_error(self);
-                    else
-                        PyErr_SetString(PyExc_RuntimeError,
-                                        "unexpected error");
-                    goto error;
-                }
-            }
-        }
-    }
-    return (PyObject *) self;
-  error:
-    Py_DECREF(self);
-    return NULL;
-}
-
-
-/* Return a Python string that represents the version number without the
- * extra cruft added by revision control, even if the right options were
- * given to the "cvs export" command to make it not include the extra
- * cruft.
- */
-static char *
-get_version_string(void)
-{
-    static char *rcsid = "$Revision$";
-    char *rev = rcsid;
-    char *buffer;
-    int i = 0;
-
-    while (*rev && !isdigit(Py_CHARMASK(*rev)))
-        ++rev;
-    while (rev[i] != ' ' && rev[i] != '\0')
-        ++i;
-    buffer = (char *)malloc(i + 1);
-    if (buffer != NULL) {
-        memmove(buffer, rev, i);
-        buffer[i] = '\0';
-    }
-    return buffer;
-}
-
-/* Write out a RFC 822-style header with various useful bits of
- * information to make the output easier to manage.
- */
-static int
-write_header(ProfilerObject *self)
-{
-    char *buffer;
-    char cwdbuffer[PATH_MAX];
-    PyObject *temp;
-    Py_ssize_t i, len;
-
-    buffer = get_version_string();
-    if (buffer == NULL) {
-        PyErr_NoMemory();
-        return -1;
-    }
-    pack_add_info(self, "hotshot-version", buffer);
-    pack_add_info(self, "requested-frame-timings",
-                  (self->frametimings ? "yes" : "no"));
-    pack_add_info(self, "requested-line-events",
-                  (self->lineevents ? "yes" : "no"));
-    pack_add_info(self, "requested-line-timings",
-                  (self->linetimings ? "yes" : "no"));
-    pack_add_info(self, "platform", Py_GetPlatform());
-    pack_add_info(self, "executable", Py_GetProgramFullPath());
-    free(buffer);
-    buffer = (char *) Py_GetVersion();
-    if (buffer == NULL)
-        PyErr_Clear();
-    else
-        pack_add_info(self, "executable-version", buffer);
-
-#ifdef MS_WINDOWS
-    PyOS_snprintf(cwdbuffer, sizeof(cwdbuffer), "%I64d", frequency.QuadPart);
-    pack_add_info(self, "reported-performance-frequency", cwdbuffer);
-#else
-    PyOS_snprintf(cwdbuffer, sizeof(cwdbuffer), "%lu", rusage_diff);
-    pack_add_info(self, "observed-interval-getrusage", cwdbuffer);
-    PyOS_snprintf(cwdbuffer, sizeof(cwdbuffer), "%lu", timeofday_diff);
-    pack_add_info(self, "observed-interval-gettimeofday", cwdbuffer);
-#endif
-
-    pack_add_info(self, "current-directory",
-                  getcwd(cwdbuffer, sizeof cwdbuffer));
-
-    temp = PySys_GetObject("path");
-    if (temp == NULL || !PyList_Check(temp)) {
-        PyErr_SetString(PyExc_RuntimeError, "sys.path must be a list");
-        return -1;
-    }
-    len = PyList_GET_SIZE(temp);
-    for (i = 0; i < len; ++i) {
-        PyObject *item = PyList_GET_ITEM(temp, i);
-        buffer = PyString_AsString(item);
-        if (buffer == NULL) {
-            pack_add_info(self, "sys-path-entry", "<non-string-path-entry>");
-            PyErr_Clear();
-        }
-        else {
-            pack_add_info(self, "sys-path-entry", buffer);
-        }
-    }
-    pack_frame_times(self);
-    pack_line_times(self);
-
-    return 0;
-}
-
-PyDoc_STRVAR(profiler__doc__,
-"profiler(logfilename[, lineevents[, linetimes]]) -> profiler\n\
-Create a new profiler object.");
-
-static PyObject *
-hotshot_profiler(PyObject *unused, PyObject *args)
-{
-    char *logfilename;
-    ProfilerObject *self = NULL;
-    int lineevents = 0;
-    int linetimings = 1;
-
-    if (PyArg_ParseTuple(args, "s|ii:profiler", &logfilename,
-                         &lineevents, &linetimings)) {
-        self = PyObject_New(ProfilerObject, &ProfilerType);
-        if (self == NULL)
-            return NULL;
-        self->frametimings = 1;
-        self->lineevents = lineevents ? 1 : 0;
-        self->linetimings = (lineevents && linetimings) ? 1 : 0;
-        self->index = 0;
-        self->active = 0;
-        self->next_fileno = 0;
-        self->logfp = NULL;
-        self->logfilename = PyTuple_GET_ITEM(args, 0);
-        Py_INCREF(self->logfilename);
-        self->filemap = PyDict_New();
-        if (self->filemap == NULL) {
-            Py_DECREF(self);
-            return NULL;
-        }
-        self->logfp = fopen(logfilename, "wb");
-        if (self->logfp == NULL) {
-            Py_DECREF(self);
-            PyErr_SetFromErrnoWithFilename(PyExc_IOError, logfilename);
-            return NULL;
-        }
-        if (timeofday_diff == 0) {
-            /* Run this several times since sometimes the first
-             * doesn't give the lowest values, and we're really trying
-             * to determine the lowest.
-             */
-            calibrate();
-            calibrate();
-            calibrate();
-        }
-        if (write_header(self)) {
-            /* some error occurred, exception has been set */
-            Py_DECREF(self);
-            self = NULL;
-        }
-    }
-    return (PyObject *) self;
-}
-
-PyDoc_STRVAR(coverage__doc__,
-"coverage(logfilename) -> profiler\n\
-Returns a profiler that doesn't collect any timing information, which is\n\
-useful in building a coverage analysis tool.");
-
-static PyObject *
-hotshot_coverage(PyObject *unused, PyObject *args)
-{
-    char *logfilename;
-    PyObject *result = NULL;
-
-    if (PyArg_ParseTuple(args, "s:coverage", &logfilename)) {
-        result = hotshot_profiler(unused, args);
-        if (result != NULL) {
-            ProfilerObject *self = (ProfilerObject *) result;
-            self->frametimings = 0;
-            self->linetimings = 0;
-            self->lineevents = 1;
-        }
-    }
-    return result;
-}
-
-PyDoc_VAR(resolution__doc__) =
-#ifdef MS_WINDOWS
-PyDoc_STR(
-"resolution() -> (performance-counter-ticks, update-frequency)\n"
-"Return the resolution of the timer provided by the QueryPerformanceCounter()\n"
-"function.  The first value is the smallest observed change, and the second\n"
-"is the result of QueryPerformanceFrequency()."
-)
-#else
-PyDoc_STR(
-"resolution() -> (gettimeofday-usecs, getrusage-usecs)\n"
-"Return the resolution of the timers provided by the gettimeofday() and\n"
-"getrusage() system calls, or -1 if the call is not supported."
-)
-#endif
-;
-
-static PyObject *
-hotshot_resolution(PyObject *self, PyObject *unused)
-{
-    if (timeofday_diff == 0) {
-        calibrate();
-        calibrate();
-        calibrate();
-    }
-#ifdef MS_WINDOWS
-    return Py_BuildValue("ii", timeofday_diff, frequency.LowPart);
-#else
-    return Py_BuildValue("ii", timeofday_diff, rusage_diff);
-#endif
-}
-
-
-static PyMethodDef functions[] = {
-    {"coverage",   hotshot_coverage,   METH_VARARGS, coverage__doc__},
-    {"profiler",   hotshot_profiler,   METH_VARARGS, profiler__doc__},
-    {"logreader",  hotshot_logreader,  METH_VARARGS, logreader__doc__},
-    {"resolution", hotshot_resolution, METH_NOARGS,  resolution__doc__},
-    {NULL, NULL}
-};
-
-
-void
-init_hotshot(void)
-{
-    PyObject *module;
-
-    Py_TYPE(&LogReaderType) = &PyType_Type;
-    Py_TYPE(&ProfilerType) = &PyType_Type;
-    module = Py_InitModule("_hotshot", functions);
-    if (module != NULL) {
-        char *s = get_version_string();
-
-        PyModule_AddStringConstant(module, "__version__", s);
-        free(s);
-        Py_INCREF(&LogReaderType);
-        PyModule_AddObject(module, "LogReaderType",
-                           (PyObject *)&LogReaderType);
-        Py_INCREF(&ProfilerType);
-        PyModule_AddObject(module, "ProfilerType",
-                           (PyObject *)&ProfilerType);
-
-        if (ProfilerError == NULL)
-            ProfilerError = PyErr_NewException("hotshot.ProfilerError",
-                                               NULL, NULL);
-        if (ProfilerError != NULL) {
-            Py_INCREF(ProfilerError);
-            PyModule_AddObject(module, "ProfilerError", ProfilerError);
-        }
-        PyModule_AddIntConstant(module, "WHAT_ENTER", WHAT_ENTER);
-        PyModule_AddIntConstant(module, "WHAT_EXIT", WHAT_EXIT);
-        PyModule_AddIntConstant(module, "WHAT_LINENO", WHAT_LINENO);
-        PyModule_AddIntConstant(module, "WHAT_OTHER", WHAT_OTHER);
-        PyModule_AddIntConstant(module, "WHAT_ADD_INFO", WHAT_ADD_INFO);
-        PyModule_AddIntConstant(module, "WHAT_DEFINE_FILE", WHAT_DEFINE_FILE);
-        PyModule_AddIntConstant(module, "WHAT_DEFINE_FUNC", WHAT_DEFINE_FUNC);
-        PyModule_AddIntConstant(module, "WHAT_LINE_TIMES", WHAT_LINE_TIMES);
-    }
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/_iomodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/_iomodule.c
deleted file mode 100644
index 0aa45bd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/_iomodule.c
+++ /dev/null
@@ -1,768 +0,0 @@
-/*
-    An implementation of the new I/O lib as defined by PEP 3116 - "New I/O"
-    
-    Classes defined here: UnsupportedOperation, BlockingIOError.
-    Functions defined here: open().
-    
-    Mostly written by Amaury Forgeot d'Arc
-*/
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#include "structmember.h"
-#include "_iomodule.h"
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif /* HAVE_SYS_TYPES_H */
-
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif /* HAVE_SYS_STAT_H */
-
-
-/* Various interned strings */
-
-PyObject *_PyIO_str_close;
-PyObject *_PyIO_str_closed;
-PyObject *_PyIO_str_decode;
-PyObject *_PyIO_str_encode;
-PyObject *_PyIO_str_fileno;
-PyObject *_PyIO_str_flush;
-PyObject *_PyIO_str_getstate;
-PyObject *_PyIO_str_isatty;
-PyObject *_PyIO_str_newlines;
-PyObject *_PyIO_str_nl;
-PyObject *_PyIO_str_read;
-PyObject *_PyIO_str_read1;
-PyObject *_PyIO_str_readable;
-PyObject *_PyIO_str_readinto;
-PyObject *_PyIO_str_readline;
-PyObject *_PyIO_str_reset;
-PyObject *_PyIO_str_seek;
-PyObject *_PyIO_str_seekable;
-PyObject *_PyIO_str_setstate;
-PyObject *_PyIO_str_tell;
-PyObject *_PyIO_str_truncate;
-PyObject *_PyIO_str_writable;
-PyObject *_PyIO_str_write;
-
-PyObject *_PyIO_empty_str;
-PyObject *_PyIO_empty_bytes;
-PyObject *_PyIO_zero;
-
-\f
-PyDoc_STRVAR(module_doc,
-"The io module provides the Python interfaces to stream handling. The\n"
-"builtin open function is defined in this module.\n"
-"\n"
-"At the top of the I/O hierarchy is the abstract base class IOBase. It\n"
-"defines the basic interface to a stream. Note, however, that there is no\n"
-"seperation between reading and writing to streams; implementations are\n"
-"allowed to throw an IOError if they do not support a given operation.\n"
-"\n"
-"Extending IOBase is RawIOBase which deals simply with the reading and\n"
-"writing of raw bytes to a stream. FileIO subclasses RawIOBase to provide\n"
-"an interface to OS files.\n"
-"\n"
-"BufferedIOBase deals with buffering on a raw byte stream (RawIOBase). Its\n"
-"subclasses, BufferedWriter, BufferedReader, and BufferedRWPair buffer\n"
-"streams that are readable, writable, and both respectively.\n"
-"BufferedRandom provides a buffered interface to random access\n"
-"streams. BytesIO is a simple stream of in-memory bytes.\n"
-"\n"
-"Another IOBase subclass, TextIOBase, deals with the encoding and decoding\n"
-"of streams into text. TextIOWrapper, which extends it, is a buffered text\n"
-"interface to a buffered raw stream (`BufferedIOBase`). Finally, StringIO\n"
-"is a in-memory stream for text.\n"
-"\n"
-"Argument names are not part of the specification, and only the arguments\n"
-"of open() are intended to be used as keyword arguments.\n"
-"\n"
-"data:\n"
-"\n"
-"DEFAULT_BUFFER_SIZE\n"
-"\n"
-"   An int containing the default buffer size used by the module's buffered\n"
-"   I/O classes. open() uses the file's blksize (as obtained by os.stat) if\n"
-"   possible.\n"
-    );
-\f
-
-/*
- * BlockingIOError extends IOError
- */
-
-static int
-blockingioerror_init(PyBlockingIOErrorObject *self, PyObject *args,
-                     PyObject *kwds)
-{
-    PyObject *myerrno = NULL, *strerror = NULL;
-    PyObject *baseargs = NULL;
-    Py_ssize_t written = 0;
-
-    assert(PyTuple_Check(args));
-
-    self->written = 0;
-    if (!PyArg_ParseTuple(args, "OO|n:BlockingIOError",
-                          &myerrno, &strerror, &written))
-        return -1;
-
-    baseargs = PyTuple_Pack(2, myerrno, strerror);
-    if (baseargs == NULL)
-        return -1;
-    /* This will take care of initializing of myerrno and strerror members */
-    if (((PyTypeObject *)PyExc_IOError)->tp_init(
-                (PyObject *)self, baseargs, kwds) == -1) {
-        Py_DECREF(baseargs);
-        return -1;
-    }
-    Py_DECREF(baseargs);
-
-    self->written = written;
-    return 0;
-}
-
-static PyMemberDef blockingioerror_members[] = {
-    {"characters_written", T_PYSSIZET, offsetof(PyBlockingIOErrorObject, written), 0},
-    {NULL}  /* Sentinel */
-};
-
-static PyTypeObject _PyExc_BlockingIOError = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "BlockingIOError", /*tp_name*/
-    sizeof(PyBlockingIOErrorObject), /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    0,                          /*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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
-    PyDoc_STR("Exception raised when I/O would block "
-              "on a non-blocking I/O stream"), /* tp_doc */
-    0,                          /* tp_traverse */
-    0,                          /* tp_clear */
-    0,                          /* tp_richcompare */
-    0,                          /* tp_weaklistoffset */
-    0,                          /* tp_iter */
-    0,                          /* tp_iternext */
-    0,                          /* tp_methods */
-    blockingioerror_members,    /* tp_members */
-    0,                          /* tp_getset */
-    0,                          /* tp_base */
-    0,                          /* tp_dict */
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    0,                          /* tp_dictoffset */
-    (initproc)blockingioerror_init, /* tp_init */
-    0,                          /* tp_alloc */
-    0,                          /* tp_new */
-};
-PyObject *PyExc_BlockingIOError = (PyObject *)&_PyExc_BlockingIOError;
-\f
-
-/*
- * The main open() function
- */
-PyDoc_STRVAR(open_doc,
-"Open file and return a stream.  Raise IOError upon failure.\n"
-"\n"
-"file is either a text or byte string giving the name (and the path\n"
-"if the file isn't in the current working directory) of the file to\n"
-"be opened or an integer file descriptor of the file to be\n"
-"wrapped. (If a file descriptor is given, it is closed when the\n"
-"returned I/O object is closed, unless closefd is set to False.)\n"
-"\n"
-"mode is an optional string that specifies the mode in which the file\n"
-"is opened. It defaults to 'r' which means open for reading in text\n"
-"mode.  Other common values are 'w' for writing (truncating the file if\n"
-"it already exists), and 'a' for appending (which on some Unix systems,\n"
-"means that all writes append to the end of the file regardless of the\n"
-"current seek position). In text mode, if encoding is not specified the\n"
-"encoding used is platform dependent. (For reading and writing raw\n"
-"bytes use binary mode and leave encoding unspecified.) The available\n"
-"modes are:\n"
-"\n"
-"========= ===============================================================\n"
-"Character Meaning\n"
-"--------- ---------------------------------------------------------------\n"
-"'r'       open for reading (default)\n"
-"'w'       open for writing, truncating the file first\n"
-"'a'       open for writing, appending to the end of the file if it exists\n"
-"'b'       binary mode\n"
-"'t'       text mode (default)\n"
-"'+'       open a disk file for updating (reading and writing)\n"
-"'U'       universal newline mode (for backwards compatibility; unneeded\n"
-"          for new code)\n"
-"========= ===============================================================\n"
-"\n"
-"The default mode is 'rt' (open for reading text). For binary random\n"
-"access, the mode 'w+b' opens and truncates the file to 0 bytes, while\n"
-"'r+b' opens the file without truncation.\n"
-"\n"
-"Python distinguishes between files opened in binary and text modes,\n"
-"even when the underlying operating system doesn't. Files opened in\n"
-"binary mode (appending 'b' to the mode argument) return contents as\n"
-"bytes objects without any decoding. In text mode (the default, or when\n"
-"'t' is appended to the mode argument), the contents of the file are\n"
-"returned as strings, the bytes having been first decoded using a\n"
-"platform-dependent encoding or using the specified encoding if given.\n"
-"\n"
-"buffering is an optional integer used to set the buffering policy.\n"
-"Pass 0 to switch buffering off (only allowed in binary mode), 1 to select\n"
-"line buffering (only usable in text mode), and an integer > 1 to indicate\n"
-"the size of a fixed-size chunk buffer.  When no buffering argument is\n"
-"given, the default buffering policy works as follows:\n"
-"\n"
-"* Binary files are buffered in fixed-size chunks; the size of the buffer\n"
-"  is chosen using a heuristic trying to determine the underlying device's\n"
-"  \"block size\" and falling back on `io.DEFAULT_BUFFER_SIZE`.\n"
-"  On many systems, the buffer will typically be 4096 or 8192 bytes long.\n"
-"\n"
-"* \"Interactive\" text files (files for which isatty() returns True)\n"
-"  use line buffering.  Other text files use the policy described above\n"
-"  for binary files.\n"
-"\n"
-"encoding is the name of the encoding used to decode or encode the\n"
-"file. This should only be used in text mode. The default encoding is\n"
-"platform dependent, but any encoding supported by Python can be\n"
-"passed.  See the codecs module for the list of supported encodings.\n"
-"\n"
-"errors is an optional string that specifies how encoding errors are to\n"
-"be handled---this argument should not be used in binary mode. Pass\n"
-"'strict' to raise a ValueError exception if there is an encoding error\n"
-"(the default of None has the same effect), or pass 'ignore' to ignore\n"
-"errors. (Note that ignoring encoding errors can lead to data loss.)\n"
-"See the documentation for codecs.register for a list of the permitted\n"
-"encoding error strings.\n"
-"\n"
-"newline controls how universal newlines works (it only applies to text\n"
-"mode). It can be None, '', '\\n', '\\r', and '\\r\\n'.  It works as\n"
-"follows:\n"
-"\n"
-"* On input, if newline is None, universal newlines mode is\n"
-"  enabled. Lines in the input can end in '\\n', '\\r', or '\\r\\n', and\n"
-"  these are translated into '\\n' before being returned to the\n"
-"  caller. If it is '', universal newline mode is enabled, but line\n"
-"  endings are returned to the caller untranslated. If it has any of\n"
-"  the other legal values, input lines are only terminated by the given\n"
-"  string, and the line ending is returned to the caller untranslated.\n"
-"\n"
-"* On output, if newline is None, any '\\n' characters written are\n"
-"  translated to the system default line separator, os.linesep. If\n"
-"  newline is '', no translation takes place. If newline is any of the\n"
-"  other legal values, any '\\n' characters written are translated to\n"
-"  the given string.\n"
-"\n"
-"If closefd is False, the underlying file descriptor will be kept open\n"
-"when the file is closed. This does not work when a file name is given\n"
-"and must be True in that case.\n"
-"\n"
-"open() returns a file object whose type depends on the mode, and\n"
-"through which the standard file operations such as reading and writing\n"
-"are performed. When open() is used to open a file in a text mode ('w',\n"
-"'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open\n"
-"a file in a binary mode, the returned class varies: in read binary\n"
-"mode, it returns a BufferedReader; in write binary and append binary\n"
-"modes, it returns a BufferedWriter, and in read/write mode, it returns\n"
-"a BufferedRandom.\n"
-"\n"
-"It is also possible to use a string or bytearray as a file for both\n"
-"reading and writing. For strings StringIO can be used like a file\n"
-"opened in a text mode, and for bytes a BytesIO can be used like a file\n"
-"opened in a binary mode.\n"
-    );
-
-static PyObject *
-io_open(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    char *kwlist[] = {"file", "mode", "buffering",
-                      "encoding", "errors", "newline",
-                      "closefd", NULL};
-    PyObject *file;
-    char *mode = "r";
-    int buffering = -1, closefd = 1;
-    char *encoding = NULL, *errors = NULL, *newline = NULL;
-    unsigned i;
-
-    int reading = 0, writing = 0, appending = 0, updating = 0;
-    int text = 0, binary = 0, universal = 0;
-
-    char rawmode[5], *m;
-    int line_buffering, isatty;
-
-    PyObject *raw, *modeobj = NULL, *buffer = NULL, *wrapper = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|sizzzi:open", kwlist,
-                                     &file, &mode, &buffering,
-                                     &encoding, &errors, &newline,
-                                     &closefd)) {
-        return NULL;
-    }
-
-    if (!PyUnicode_Check(file) &&
-	!PyBytes_Check(file) &&
-	!PyNumber_Check(file)) {
-        PyObject *repr = PyObject_Repr(file);
-        if (repr != NULL) {
-            PyErr_Format(PyExc_TypeError, "invalid file: %s",
-                         PyString_AS_STRING(repr));
-            Py_DECREF(repr);
-        }
-        return NULL;
-    }
-
-    /* Decode mode */
-    for (i = 0; i < strlen(mode); i++) {
-        char c = mode[i];
-
-        switch (c) {
-        case 'r':
-            reading = 1;
-            break;
-        case 'w':
-            writing = 1;
-            break;
-        case 'a':
-            appending = 1;
-            break;
-        case '+':
-            updating = 1;
-            break;
-        case 't':
-            text = 1;
-            break;
-        case 'b':
-            binary = 1;
-            break;
-        case 'U':
-            universal = 1;
-            reading = 1;
-            break;
-        default:
-            goto invalid_mode;
-        }
-
-        /* c must not be duplicated */
-        if (strchr(mode+i+1, c)) {
-          invalid_mode:
-            PyErr_Format(PyExc_ValueError, "invalid mode: '%s'", mode);
-            return NULL;
-        }
-
-    }
-
-    m = rawmode;
-    if (reading)   *(m++) = 'r';
-    if (writing)   *(m++) = 'w';
-    if (appending) *(m++) = 'a';
-    if (updating)  *(m++) = '+';
-    *m = '\0';
-
-    /* Parameters validation */
-    if (universal) {
-        if (writing || appending) {
-            PyErr_SetString(PyExc_ValueError,
-                            "can't use U and writing mode at once");
-            return NULL;
-        }
-        reading = 1;
-    }
-
-    if (text && binary) {
-        PyErr_SetString(PyExc_ValueError,
-                        "can't have text and binary mode at once");
-        return NULL;
-    }
-
-    if (reading + writing + appending > 1) {
-        PyErr_SetString(PyExc_ValueError,
-                        "must have exactly one of read/write/append mode");
-        return NULL;
-    }
-
-    if (binary && encoding != NULL) {
-        PyErr_SetString(PyExc_ValueError,
-                        "binary mode doesn't take an encoding argument");
-        return NULL;
-    }
-
-    if (binary && errors != NULL) {
-        PyErr_SetString(PyExc_ValueError,
-                        "binary mode doesn't take an errors argument");
-        return NULL;
-    }
-
-    if (binary && newline != NULL) {
-        PyErr_SetString(PyExc_ValueError,
-                        "binary mode doesn't take a newline argument");
-        return NULL;
-    }
-
-    /* Create the Raw file stream */
-    raw = PyObject_CallFunction((PyObject *)&PyFileIO_Type,
-				"Osi", file, rawmode, closefd);
-    if (raw == NULL)
-        return NULL;
-
-    modeobj = PyUnicode_FromString(mode);
-    if (modeobj == NULL)
-        goto error;
-
-    /* buffering */
-    {
-        PyObject *res = PyObject_CallMethod(raw, "isatty", NULL);
-        if (res == NULL)
-            goto error;
-        isatty = PyLong_AsLong(res);
-        Py_DECREF(res);
-        if (isatty == -1 && PyErr_Occurred())
-            goto error;
-    }
-
-    if (buffering == 1 || (buffering < 0 && isatty)) {
-        buffering = -1;
-        line_buffering = 1;
-    }
-    else
-        line_buffering = 0;
-
-    if (buffering < 0) {
-        buffering = DEFAULT_BUFFER_SIZE;
-#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
-        {
-            struct stat st;
-            long fileno;
-            PyObject *res = PyObject_CallMethod(raw, "fileno", NULL);
-            if (res == NULL)
-                goto error;
-
-            fileno = PyInt_AsLong(res);
-            Py_DECREF(res);
-            if (fileno == -1 && PyErr_Occurred())
-                goto error;
-
-            if (fstat(fileno, &st) >= 0 && st.st_blksize > 1)
-                buffering = st.st_blksize;
-        }
-#endif
-    }
-    if (buffering < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "invalid buffering size");
-        goto error;
-    }
-
-    /* if not buffering, returns the raw file object */
-    if (buffering == 0) {
-        if (!binary) {
-            PyErr_SetString(PyExc_ValueError,
-                            "can't have unbuffered text I/O");
-            goto error;
-        }
-
-        Py_DECREF(modeobj);
-        return raw;
-    }
-
-    /* wraps into a buffered file */
-    {
-        PyObject *Buffered_class;
-
-        if (updating)
-            Buffered_class = (PyObject *)&PyBufferedRandom_Type;
-        else if (writing || appending)
-            Buffered_class = (PyObject *)&PyBufferedWriter_Type;
-        else if (reading)
-            Buffered_class = (PyObject *)&PyBufferedReader_Type;
-        else {
-            PyErr_Format(PyExc_ValueError,
-                         "unknown mode: '%s'", mode);
-            goto error;
-        }
-
-        buffer = PyObject_CallFunction(Buffered_class, "Oi", raw, buffering);
-    }
-    Py_CLEAR(raw);
-    if (buffer == NULL)
-        goto error;
-
-
-    /* if binary, returns the buffered file */
-    if (binary) {
-        Py_DECREF(modeobj);
-        return buffer;
-    }
-
-    /* wraps into a TextIOWrapper */
-    wrapper = PyObject_CallFunction((PyObject *)&PyTextIOWrapper_Type,
-				    "Osssi",
-				    buffer,
-				    encoding, errors, newline,
-				    line_buffering);
-    Py_CLEAR(buffer);
-    if (wrapper == NULL)
-        goto error;
-
-    if (PyObject_SetAttrString(wrapper, "mode", modeobj) < 0)
-        goto error;
-    Py_DECREF(modeobj);
-    return wrapper;
-
-  error:
-    Py_XDECREF(raw);
-    Py_XDECREF(modeobj);
-    Py_XDECREF(buffer);
-    Py_XDECREF(wrapper);
-    return NULL;
-}
-\f
-/*
- * Private helpers for the io module.
- */
-
-Py_off_t
-PyNumber_AsOff_t(PyObject *item, PyObject *err)
-{
-    Py_off_t result;
-    PyObject *runerr;
-    PyObject *value = PyNumber_Index(item);
-    if (value == NULL)
-        return -1;
-
-    if (PyInt_Check(value)) {
-        /* We assume a long always fits in a Py_off_t... */
-        result = (Py_off_t) PyInt_AS_LONG(value);
-        goto finish;
-    }
-
-    /* We're done if PyLong_AsSsize_t() returns without error. */
-    result = PyLong_AsOff_t(value);
-    if (result != -1 || !(runerr = PyErr_Occurred()))
-        goto finish;
-
-    /* Error handling code -- only manage OverflowError differently */
-    if (!PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError))
-        goto finish;
-
-    PyErr_Clear();
-    /* If no error-handling desired then the default clipping
-       is sufficient.
-     */
-    if (!err) {
-        assert(PyLong_Check(value));
-        /* Whether or not it is less than or equal to
-           zero is determined by the sign of ob_size
-        */
-        if (_PyLong_Sign(value) < 0)
-            result = PY_OFF_T_MIN;
-        else
-            result = PY_OFF_T_MAX;
-    }
-    else {
-        /* Otherwise replace the error with caller's error object. */
-        PyErr_Format(err,
-                     "cannot fit '%.200s' into an offset-sized integer",
-                     item->ob_type->tp_name);
-    }
-
- finish:
-    Py_DECREF(value);
-    return result;
-}
-
-
-/* Basically the "n" format code with the ability to turn None into -1. */
-int 
-_PyIO_ConvertSsize_t(PyObject *obj, void *result) {
-    Py_ssize_t limit;
-    if (obj == Py_None) {
-        limit = -1;
-    }
-    else if (PyNumber_Check(obj)) {
-        limit = PyNumber_AsSsize_t(obj, PyExc_OverflowError);
-        if (limit == -1 && PyErr_Occurred())
-            return 0;
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-                     "integer argument expected, got '%.200s'",
-                     Py_TYPE(obj)->tp_name);
-        return 0;
-    }
-    *((Py_ssize_t *)result) = limit;
-    return 1;
-}
-
-
-/*
- * Module definition
- */
-
-PyObject *_PyIO_os_module = NULL;
-PyObject *_PyIO_locale_module = NULL;
-PyObject *_PyIO_unsupported_operation = NULL;
-
-static PyMethodDef module_methods[] = {
-    {"open", (PyCFunction)io_open, METH_VARARGS|METH_KEYWORDS, open_doc},
-    {NULL, NULL}
-};
-
-PyMODINIT_FUNC
-init_io(void)
-{
-    PyObject *m = Py_InitModule4("_io", module_methods,
-                                 module_doc, NULL, PYTHON_API_VERSION);
-    if (m == NULL)
-        return;
-
-    /* put os in the module state */
-    _PyIO_os_module = PyImport_ImportModule("os");
-    if (_PyIO_os_module == NULL)
-        goto fail;
-
-#define ADD_TYPE(type, name) \
-    if (PyType_Ready(type) < 0) \
-        goto fail; \
-    Py_INCREF(type); \
-    if (PyModule_AddObject(m, name, (PyObject *)type) < 0) {  \
-        Py_DECREF(type); \
-        goto fail; \
-    }
-
-    /* DEFAULT_BUFFER_SIZE */
-    if (PyModule_AddIntMacro(m, DEFAULT_BUFFER_SIZE) < 0)
-        goto fail;
-
-    /* UnsupportedOperation inherits from ValueError and IOError */
-    _PyIO_unsupported_operation = PyObject_CallFunction(
-        (PyObject *)&PyType_Type, "s(OO){}",
-        "UnsupportedOperation", PyExc_ValueError, PyExc_IOError);
-    if (_PyIO_unsupported_operation == NULL)
-        goto fail;
-    Py_INCREF(_PyIO_unsupported_operation);
-    if (PyModule_AddObject(m, "UnsupportedOperation",
-                           _PyIO_unsupported_operation) < 0)
-        goto fail;
-
-    /* BlockingIOError */
-    _PyExc_BlockingIOError.tp_base = (PyTypeObject *) PyExc_IOError;
-    ADD_TYPE(&_PyExc_BlockingIOError, "BlockingIOError");
-
-    /* Concrete base types of the IO ABCs.
-       (the ABCs themselves are declared through inheritance in io.py)
-    */
-    ADD_TYPE(&PyIOBase_Type, "_IOBase");
-    ADD_TYPE(&PyRawIOBase_Type, "_RawIOBase");
-    ADD_TYPE(&PyBufferedIOBase_Type, "_BufferedIOBase");
-    ADD_TYPE(&PyTextIOBase_Type, "_TextIOBase");
-
-    /* Implementation of concrete IO objects. */
-    /* FileIO */
-    PyFileIO_Type.tp_base = &PyRawIOBase_Type;
-    ADD_TYPE(&PyFileIO_Type, "FileIO");
-
-    /* BytesIO */
-    PyBytesIO_Type.tp_base = &PyBufferedIOBase_Type;
-    ADD_TYPE(&PyBytesIO_Type, "BytesIO");
-
-    /* StringIO */
-    PyStringIO_Type.tp_base = &PyTextIOBase_Type;
-    ADD_TYPE(&PyStringIO_Type, "StringIO");
-
-    /* BufferedReader */
-    PyBufferedReader_Type.tp_base = &PyBufferedIOBase_Type;
-    ADD_TYPE(&PyBufferedReader_Type, "BufferedReader");
-
-    /* BufferedWriter */
-    PyBufferedWriter_Type.tp_base = &PyBufferedIOBase_Type;
-    ADD_TYPE(&PyBufferedWriter_Type, "BufferedWriter");
-
-    /* BufferedRWPair */
-    PyBufferedRWPair_Type.tp_base = &PyBufferedIOBase_Type;
-    ADD_TYPE(&PyBufferedRWPair_Type, "BufferedRWPair");
-
-    /* BufferedRandom */
-    PyBufferedRandom_Type.tp_base = &PyBufferedIOBase_Type;
-    ADD_TYPE(&PyBufferedRandom_Type, "BufferedRandom");
-
-    /* TextIOWrapper */
-    PyTextIOWrapper_Type.tp_base = &PyTextIOBase_Type;
-    ADD_TYPE(&PyTextIOWrapper_Type, "TextIOWrapper");
-
-    /* IncrementalNewlineDecoder */
-    ADD_TYPE(&PyIncrementalNewlineDecoder_Type, "IncrementalNewlineDecoder");
-
-    /* Interned strings */
-    if (!(_PyIO_str_close = PyString_InternFromString("close")))
-        goto fail;
-    if (!(_PyIO_str_closed = PyString_InternFromString("closed")))
-        goto fail;
-    if (!(_PyIO_str_decode = PyString_InternFromString("decode")))
-        goto fail;
-    if (!(_PyIO_str_encode = PyString_InternFromString("encode")))
-        goto fail;
-    if (!(_PyIO_str_fileno = PyString_InternFromString("fileno")))
-        goto fail;
-    if (!(_PyIO_str_flush = PyString_InternFromString("flush")))
-        goto fail;
-    if (!(_PyIO_str_getstate = PyString_InternFromString("getstate")))
-        goto fail;
-    if (!(_PyIO_str_isatty = PyString_InternFromString("isatty")))
-        goto fail;
-    if (!(_PyIO_str_newlines = PyString_InternFromString("newlines")))
-        goto fail;
-    if (!(_PyIO_str_nl = PyString_InternFromString("\n")))
-        goto fail;
-    if (!(_PyIO_str_read = PyString_InternFromString("read")))
-        goto fail;
-    if (!(_PyIO_str_read1 = PyString_InternFromString("read1")))
-        goto fail;
-    if (!(_PyIO_str_readable = PyString_InternFromString("readable")))
-        goto fail;
-    if (!(_PyIO_str_readinto = PyString_InternFromString("readinto")))
-        goto fail;
-    if (!(_PyIO_str_readline = PyString_InternFromString("readline")))
-        goto fail;
-    if (!(_PyIO_str_reset = PyString_InternFromString("reset")))
-        goto fail;
-    if (!(_PyIO_str_seek = PyString_InternFromString("seek")))
-        goto fail;
-    if (!(_PyIO_str_seekable = PyString_InternFromString("seekable")))
-        goto fail;
-    if (!(_PyIO_str_setstate = PyString_InternFromString("setstate")))
-        goto fail;
-    if (!(_PyIO_str_tell = PyString_InternFromString("tell")))
-        goto fail;
-    if (!(_PyIO_str_truncate = PyString_InternFromString("truncate")))
-        goto fail;
-    if (!(_PyIO_str_write = PyString_InternFromString("write")))
-        goto fail;
-    if (!(_PyIO_str_writable = PyString_InternFromString("writable")))
-        goto fail;
-    
-    if (!(_PyIO_empty_str = PyUnicode_FromStringAndSize(NULL, 0)))
-        goto fail;
-    if (!(_PyIO_empty_bytes = PyBytes_FromStringAndSize(NULL, 0)))
-        goto fail;
-    if (!(_PyIO_zero = PyLong_FromLong(0L)))
-        goto fail;
-
-    return;
-
-  fail:
-    Py_CLEAR(_PyIO_os_module);
-    Py_CLEAR(_PyIO_unsupported_operation);
-    Py_DECREF(m);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/_iomodule.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/_iomodule.h
deleted file mode 100644
index 4bb86e2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/_iomodule.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Declarations shared between the different parts of the io module
- */
-
-/* ABCs */
-extern PyTypeObject PyIOBase_Type;
-extern PyTypeObject PyRawIOBase_Type;
-extern PyTypeObject PyBufferedIOBase_Type;
-extern PyTypeObject PyTextIOBase_Type;
-
-/* Concrete classes */
-extern PyTypeObject PyFileIO_Type;
-extern PyTypeObject PyBytesIO_Type;
-extern PyTypeObject PyStringIO_Type;
-extern PyTypeObject PyBufferedReader_Type;
-extern PyTypeObject PyBufferedWriter_Type;
-extern PyTypeObject PyBufferedRWPair_Type;
-extern PyTypeObject PyBufferedRandom_Type;
-extern PyTypeObject PyTextIOWrapper_Type;
-extern PyTypeObject PyIncrementalNewlineDecoder_Type;
-
-
-extern int _PyIO_ConvertSsize_t(PyObject *, void *);
-
-/* These functions are used as METH_NOARGS methods, are normally called
- * with args=NULL, and return a new reference.
- * BUT when args=Py_True is passed, they return a borrowed reference.
- */
-extern PyObject* _PyIOBase_check_readable(PyObject *self, PyObject *args);
-extern PyObject* _PyIOBase_check_writable(PyObject *self, PyObject *args);
-extern PyObject* _PyIOBase_check_seekable(PyObject *self, PyObject *args);
-extern PyObject* _PyIOBase_check_closed(PyObject *self, PyObject *args);
-
-/* Helper for finalization.
-   This function will revive an object ready to be deallocated and try to
-   close() it. It returns 0 if the object can be destroyed, or -1 if it
-   is alive again. */
-extern int _PyIOBase_finalize(PyObject *self);
-
-/* Returns true if the given FileIO object is closed.
-   Doesn't check the argument type, so be careful! */
-extern int _PyFileIO_closed(PyObject *self);
-
-/* Shortcut to the core of the IncrementalNewlineDecoder.decode method */
-extern PyObject *_PyIncrementalNewlineDecoder_decode(
-    PyObject *self, PyObject *input, int final);
-
-/* Finds the first line ending between `start` and `end`.
-   If found, returns the index after the line ending and doesn't touch
-   `*consumed`.
-   If not found, returns -1 and sets `*consumed` to the number of characters
-   which can be safely put aside until another search.
-   
-   NOTE: for performance reasons, `end` must point to a NUL character ('\0'). 
-   Otherwise, the function will scan further and return garbage. */
-extern Py_ssize_t _PyIO_find_line_ending(
-    int translated, int universal, PyObject *readnl,
-    Py_UNICODE *start, Py_UNICODE *end, Py_ssize_t *consumed);
-
-
-#define DEFAULT_BUFFER_SIZE (8 * 1024)  /* bytes */
-
-typedef struct {
-    /* This is the equivalent of PyException_HEAD in 3.x */
-    PyObject_HEAD
-    PyObject *dict;
-    PyObject *args;
-    PyObject *message;
-
-    PyObject *myerrno;
-    PyObject *strerror;
-    PyObject *filename; /* Not used, but part of the IOError object */
-    Py_ssize_t written;
-} PyBlockingIOErrorObject;
-PyAPI_DATA(PyObject *) PyExc_BlockingIOError;
-
-/*
- * Offset type for positioning.
- */
-
-/* Printing a variable of type off_t (with e.g., PyString_FromFormat)
-   correctly and without producing compiler warnings is surprisingly painful.
-   We identify an integer type whose size matches off_t and then: (1) cast the
-   off_t to that integer type and (2) use the appropriate conversion
-   specification.  The cast is necessary: gcc complains about formatting a
-   long with "%lld" even when both long and long long have the same
-   precision. */
-
-#if defined(MS_WIN64) || defined(MS_WINDOWS)
-
-/* Windows uses long long for offsets */
-typedef PY_LONG_LONG Py_off_t;
-# define PyLong_AsOff_t     PyLong_AsLongLong
-# define PyLong_FromOff_t   PyLong_FromLongLong
-# define PY_OFF_T_MAX       PY_LLONG_MAX
-# define PY_OFF_T_MIN       PY_LLONG_MIN
-# define PY_OFF_T_COMPAT    PY_LONG_LONG /* type compatible with off_t */
-# define PY_PRIdOFF         "lld"        /* format to use for that type */
-
-#else
-
-/* Other platforms use off_t */
-typedef off_t Py_off_t;
-#if (SIZEOF_OFF_T == SIZEOF_SIZE_T)
-# define PyLong_AsOff_t     PyLong_AsSsize_t
-# define PyLong_FromOff_t   PyLong_FromSsize_t
-# define PY_OFF_T_MAX       PY_SSIZE_T_MAX
-# define PY_OFF_T_MIN       PY_SSIZE_T_MIN
-# define PY_OFF_T_COMPAT    Py_ssize_t
-# define PY_PRIdOFF         "zd"
-#elif (HAVE_LONG_LONG && SIZEOF_OFF_T == SIZEOF_LONG_LONG)
-# define PyLong_AsOff_t     PyLong_AsLongLong
-# define PyLong_FromOff_t   PyLong_FromLongLong
-# define PY_OFF_T_MAX       PY_LLONG_MAX
-# define PY_OFF_T_MIN       PY_LLONG_MIN
-# define PY_OFF_T_COMPAT    PY_LONG_LONG
-# define PY_PRIdOFF         "lld"
-#elif (SIZEOF_OFF_T == SIZEOF_LONG)
-# define PyLong_AsOff_t     PyLong_AsLong
-# define PyLong_FromOff_t   PyLong_FromLong
-# define PY_OFF_T_MAX       LONG_MAX
-# define PY_OFF_T_MIN       LONG_MIN
-# define PY_OFF_T_COMPAT    long
-# define PY_PRIdOFF         "ld"
-#else
-# error off_t does not match either size_t, long, or long long!
-#endif
-
-#endif
-
-extern Py_off_t PyNumber_AsOff_t(PyObject *item, PyObject *err);
-
-/* Implementation details */
-
-extern PyObject *_PyIO_os_module;
-extern PyObject *_PyIO_locale_module;
-extern PyObject *_PyIO_unsupported_operation;
-
-extern PyObject *_PyIO_str_close;
-extern PyObject *_PyIO_str_closed;
-extern PyObject *_PyIO_str_decode;
-extern PyObject *_PyIO_str_encode;
-extern PyObject *_PyIO_str_fileno;
-extern PyObject *_PyIO_str_flush;
-extern PyObject *_PyIO_str_getstate;
-extern PyObject *_PyIO_str_isatty;
-extern PyObject *_PyIO_str_newlines;
-extern PyObject *_PyIO_str_nl;
-extern PyObject *_PyIO_str_read;
-extern PyObject *_PyIO_str_read1;
-extern PyObject *_PyIO_str_readable;
-extern PyObject *_PyIO_str_readinto;
-extern PyObject *_PyIO_str_readline;
-extern PyObject *_PyIO_str_reset;
-extern PyObject *_PyIO_str_seek;
-extern PyObject *_PyIO_str_seekable;
-extern PyObject *_PyIO_str_setstate;
-extern PyObject *_PyIO_str_tell;
-extern PyObject *_PyIO_str_truncate;
-extern PyObject *_PyIO_str_writable;
-extern PyObject *_PyIO_str_write;
-
-extern PyObject *_PyIO_empty_str;
-extern PyObject *_PyIO_empty_bytes;
-extern PyObject *_PyIO_zero;
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/bufferedio.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/bufferedio.c
deleted file mode 100644
index 0403027..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/bufferedio.c
+++ /dev/null
@@ -1,2389 +0,0 @@
-/*
-    An implementation of Buffered I/O as defined by PEP 3116 - "New I/O"
-    
-    Classes defined here: BufferedIOBase, BufferedReader, BufferedWriter,
-    BufferedRandom.
-    
-    Written by Amaury Forgeot d'Arc and Antoine Pitrou
-*/
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#include "structmember.h"
-#include "pythread.h"
-#include "_iomodule.h"
-
-/*
- * BufferedIOBase class, inherits from IOBase.
- */
-PyDoc_STRVAR(bufferediobase_doc,
-    "Base class for buffered IO objects.\n"
-    "\n"
-    "The main difference with RawIOBase is that the read() method\n"
-    "supports omitting the size argument, and does not have a default\n"
-    "implementation that defers to readinto().\n"
-    "\n"
-    "In addition, read(), readinto() and write() may raise\n"
-    "BlockingIOError if the underlying raw stream is in non-blocking\n"
-    "mode and not ready; unlike their raw counterparts, they will never\n"
-    "return None.\n"
-    "\n"
-    "A typical implementation should not inherit from a RawIOBase\n"
-    "implementation, but wrap one.\n"
-    );
-
-static PyObject *
-bufferediobase_readinto(PyObject *self, PyObject *args)
-{
-    Py_buffer buf;
-    Py_ssize_t len;
-    PyObject *data;
-
-    if (!PyArg_ParseTuple(args, "w*:readinto", &buf)) {
-        return NULL;
-    }
-
-    data = PyObject_CallMethod(self, "read", "n", buf.len);
-    if (data == NULL)
-        goto error;
-
-    if (!PyBytes_Check(data)) {
-        Py_DECREF(data);
-        PyErr_SetString(PyExc_TypeError, "read() should return bytes");
-        goto error;
-    }
-
-    len = Py_SIZE(data);
-    memcpy(buf.buf, PyBytes_AS_STRING(data), len);
-
-    PyBuffer_Release(&buf);
-    Py_DECREF(data);
-
-    return PyLong_FromSsize_t(len);
-
-  error:
-    PyBuffer_Release(&buf);
-    return NULL;
-}
-
-static PyObject *
-bufferediobase_unsupported(const char *message)
-{
-    PyErr_SetString(_PyIO_unsupported_operation, message);
-    return NULL;
-}
-
-PyDoc_STRVAR(bufferediobase_detach_doc,
-    "Disconnect this buffer from its underlying raw stream and return it.\n"
-    "\n"
-    "After the raw stream has been detached, the buffer is in an unusable\n"
-    "state.\n");
-
-static PyObject *
-bufferediobase_detach(PyObject *self)
-{
-    return bufferediobase_unsupported("detach");
-}
-
-PyDoc_STRVAR(bufferediobase_read_doc,
-    "Read and return up to n bytes.\n"
-    "\n"
-    "If the argument is omitted, None, or negative, reads and\n"
-    "returns all data until EOF.\n"
-    "\n"
-    "If the argument is positive, and the underlying raw stream is\n"
-    "not 'interactive', multiple raw reads may be issued to satisfy\n"
-    "the byte count (unless EOF is reached first).  But for\n"
-    "interactive raw streams (as well as sockets and pipes), at most\n"
-    "one raw read will be issued, and a short result does not imply\n"
-    "that EOF is imminent.\n"
-    "\n"
-    "Returns an empty bytes object on EOF.\n"
-    "\n"
-    "Returns None if the underlying raw stream was open in non-blocking\n"
-    "mode and no data is available at the moment.\n");
-
-static PyObject *
-bufferediobase_read(PyObject *self, PyObject *args)
-{
-    return bufferediobase_unsupported("read");
-}
-
-PyDoc_STRVAR(bufferediobase_read1_doc,
-    "Read and return up to n bytes, with at most one read() call\n"
-    "to the underlying raw stream. A short result does not imply\n"
-    "that EOF is imminent.\n"
-    "\n"
-    "Returns an empty bytes object on EOF.\n");
-
-static PyObject *
-bufferediobase_read1(PyObject *self, PyObject *args)
-{
-    return bufferediobase_unsupported("read1");
-}
-
-PyDoc_STRVAR(bufferediobase_write_doc,
-    "Write the given buffer to the IO stream.\n"
-    "\n"
-    "Returns the number of bytes written, which is never less than\n"
-    "len(b).\n"
-    "\n"
-    "Raises BlockingIOError if the buffer is full and the\n"
-    "underlying raw stream cannot accept more data at the moment.\n");
-
-static PyObject *
-bufferediobase_write(PyObject *self, PyObject *args)
-{
-    return bufferediobase_unsupported("write");
-}
-
-
-static PyMethodDef bufferediobase_methods[] = {
-    {"detach", (PyCFunction)bufferediobase_detach, METH_NOARGS, bufferediobase_detach_doc},
-    {"read", bufferediobase_read, METH_VARARGS, bufferediobase_read_doc},
-    {"read1", bufferediobase_read1, METH_VARARGS, bufferediobase_read1_doc},
-    {"readinto", bufferediobase_readinto, METH_VARARGS, NULL},
-    {"write", bufferediobase_write, METH_VARARGS, bufferediobase_write_doc},
-    {NULL, NULL}
-};
-
-PyTypeObject PyBufferedIOBase_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_io._BufferedIOBase",      /*tp_name*/
-    0,                          /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    0,                          /*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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,  /*tp_flags*/
-    bufferediobase_doc,         /* tp_doc */
-    0,                          /* tp_traverse */
-    0,                          /* tp_clear */
-    0,                          /* tp_richcompare */
-    0,                          /* tp_weaklistoffset */
-    0,                          /* tp_iter */
-    0,                          /* tp_iternext */
-    bufferediobase_methods,     /* tp_methods */
-    0,                          /* tp_members */
-    0,                          /* tp_getset */
-    &PyIOBase_Type,             /* tp_base */
-    0,                          /* tp_dict */
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    0,                          /* tp_dictoffset */
-    0,                          /* tp_init */
-    0,                          /* tp_alloc */
-    0,                          /* tp_new */
-};
-
-
-typedef struct {
-    PyObject_HEAD
-
-    PyObject *raw;
-    int ok;    /* Initialized? */
-    int detached;
-    int readable;
-    int writable;
-    
-    /* True if this is a vanilla Buffered object (rather than a user derived
-       class) *and* the raw stream is a vanilla FileIO object. */
-    int fast_closed_checks;
-
-    /* Absolute position inside the raw stream (-1 if unknown). */
-    Py_off_t abs_pos;
-
-    /* A static buffer of size `buffer_size` */
-    char *buffer;
-    /* Current logical position in the buffer. */
-    Py_off_t pos;
-    /* Position of the raw stream in the buffer. */
-    Py_off_t raw_pos;
-
-    /* Just after the last buffered byte in the buffer, or -1 if the buffer
-       isn't ready for reading. */
-    Py_off_t read_end;
-
-    /* Just after the last byte actually written */
-    Py_off_t write_pos;
-    /* Just after the last byte waiting to be written, or -1 if the buffer
-       isn't ready for writing. */
-    Py_off_t write_end;
-
-#ifdef WITH_THREAD
-    PyThread_type_lock lock;
-    volatile long owner;
-#endif
-
-    Py_ssize_t buffer_size;
-    Py_ssize_t buffer_mask;
-
-    PyObject *dict;
-    PyObject *weakreflist;
-} buffered;
-
-/*
-    Implementation notes:
-    
-    * BufferedReader, BufferedWriter and BufferedRandom try to share most
-      methods (this is helped by the members `readable` and `writable`, which
-      are initialized in the respective constructors)
-    * They also share a single buffer for reading and writing. This enables
-      interleaved reads and writes without flushing. It also makes the logic
-      a bit trickier to get right.
-    * The absolute position of the raw stream is cached, if possible, in the
-      `abs_pos` member. It must be updated every time an operation is done
-      on the raw stream. If not sure, it can be reinitialized by calling
-      _buffered_raw_tell(), which queries the raw stream (_buffered_raw_seek()
-      also does it). To read it, use RAW_TELL().
-    * Three helpers, _bufferedreader_raw_read, _bufferedwriter_raw_write and
-      _bufferedwriter_flush_unlocked do a lot of useful housekeeping.
-
-    NOTE: we should try to maintain block alignment of reads and writes to the
-    raw stream (according to the buffer size), but for now it is only done
-    in read() and friends.
-    
-*/
-
-/* These macros protect the buffered object against concurrent operations. */
-
-#ifdef WITH_THREAD
-
-static int
-_enter_buffered_busy(buffered *self)
-{
-    if (self->owner == PyThread_get_thread_ident()) {
-        PyObject *r = PyObject_Repr((PyObject *) self);
-        if (r != NULL) {
-            PyErr_Format(PyExc_RuntimeError,
-                         "reentrant call inside %s",
-                         PyString_AS_STRING(r));
-            Py_DECREF(r);
-        }
-        return 0;
-    }
-    Py_BEGIN_ALLOW_THREADS
-    PyThread_acquire_lock(self->lock, 1);
-    Py_END_ALLOW_THREADS
-    return 1;
-}
-
-#define ENTER_BUFFERED(self) \
-    ( (PyThread_acquire_lock(self->lock, 0) ? \
-       1 : _enter_buffered_busy(self)) \
-     && (self->owner = PyThread_get_thread_ident(), 1) )
-
-#define LEAVE_BUFFERED(self) \
-    do { \
-        self->owner = 0; \
-        PyThread_release_lock(self->lock); \
-    } while(0);
-
-#else
-#define ENTER_BUFFERED(self) 1
-#define LEAVE_BUFFERED(self)
-#endif
-
-#define CHECK_INITIALIZED(self) \
-    if (self->ok <= 0) { \
-        if (self->detached) { \
-            PyErr_SetString(PyExc_ValueError, \
-                 "raw stream has been detached"); \
-        } else { \
-            PyErr_SetString(PyExc_ValueError, \
-                "I/O operation on uninitialized object"); \
-        } \
-        return NULL; \
-    }
-
-#define CHECK_INITIALIZED_INT(self) \
-    if (self->ok <= 0) { \
-        if (self->detached) { \
-            PyErr_SetString(PyExc_ValueError, \
-                 "raw stream has been detached"); \
-        } else { \
-            PyErr_SetString(PyExc_ValueError, \
-                "I/O operation on uninitialized object"); \
-        } \
-        return -1; \
-    }
-
-#define IS_CLOSED(self) \
-    (self->fast_closed_checks \
-     ? _PyFileIO_closed(self->raw) \
-     : buffered_closed(self))
-
-#define CHECK_CLOSED(self, error_msg) \
-    if (IS_CLOSED(self)) { \
-        PyErr_SetString(PyExc_ValueError, error_msg); \
-        return NULL; \
-    }
-
-
-#define VALID_READ_BUFFER(self) \
-    (self->readable && self->read_end != -1)
-
-#define VALID_WRITE_BUFFER(self) \
-    (self->writable && self->write_end != -1)
-
-#define ADJUST_POSITION(self, _new_pos) \
-    do { \
-        self->pos = _new_pos; \
-        if (VALID_READ_BUFFER(self) && self->read_end < self->pos) \
-            self->read_end = self->pos; \
-    } while(0)
-
-#define READAHEAD(self) \
-    ((self->readable && VALID_READ_BUFFER(self)) \
-        ? (self->read_end - self->pos) : 0)
-
-#define RAW_OFFSET(self) \
-    (((VALID_READ_BUFFER(self) || VALID_WRITE_BUFFER(self)) \
-        && self->raw_pos >= 0) ? self->raw_pos - self->pos : 0)
-
-#define RAW_TELL(self) \
-    (self->abs_pos != -1 ? self->abs_pos : _buffered_raw_tell(self))
-
-#define MINUS_LAST_BLOCK(self, size) \
-    (self->buffer_mask ? \
-        (size & ~self->buffer_mask) : \
-        (self->buffer_size * (size / self->buffer_size)))
-
-
-static void
-buffered_dealloc(buffered *self)
-{
-    if (self->ok && _PyIOBase_finalize((PyObject *) self) < 0)
-        return;
-    _PyObject_GC_UNTRACK(self);
-    self->ok = 0;
-    if (self->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *)self);
-    Py_CLEAR(self->raw);
-    if (self->buffer) {
-        PyMem_Free(self->buffer);
-        self->buffer = NULL;
-    }
-#ifdef WITH_THREAD
-    if (self->lock) {
-        PyThread_free_lock(self->lock);
-        self->lock = NULL;
-    }
-#endif
-    Py_CLEAR(self->dict);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-static int
-buffered_traverse(buffered *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->raw);
-    Py_VISIT(self->dict);
-    return 0;
-}
-
-static int
-buffered_clear(buffered *self)
-{
-    if (self->ok && _PyIOBase_finalize((PyObject *) self) < 0)
-        return -1;
-    self->ok = 0;
-    Py_CLEAR(self->raw);
-    Py_CLEAR(self->dict);
-    return 0;
-}
-
-/*
- * _BufferedIOMixin methods
- * This is not a class, just a collection of methods that will be reused
- * by BufferedReader and BufferedWriter
- */
-
-/* Flush and close */
-
-static PyObject *
-buffered_simple_flush(buffered *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self)
-    return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_flush, NULL);
-}
-
-static int
-buffered_closed(buffered *self)
-{
-    int closed;
-    PyObject *res;
-    CHECK_INITIALIZED_INT(self)
-    res = PyObject_GetAttr(self->raw, _PyIO_str_closed);
-    if (res == NULL)
-        return -1;
-    closed = PyObject_IsTrue(res);
-    Py_DECREF(res);
-    return closed;
-}
-
-static PyObject *
-buffered_closed_get(buffered *self, void *context)
-{
-    CHECK_INITIALIZED(self)
-    return PyObject_GetAttr(self->raw, _PyIO_str_closed);
-}
-
-static PyObject *
-buffered_close(buffered *self, PyObject *args)
-{
-    PyObject *res = NULL;
-    int r;
-
-    CHECK_INITIALIZED(self)
-    if (!ENTER_BUFFERED(self))
-        return NULL;
-
-    r = buffered_closed(self);
-    if (r < 0)
-        goto end;
-    if (r > 0) {
-        res = Py_None;
-        Py_INCREF(res);
-        goto end;
-    }
-    /* flush() will most probably re-take the lock, so drop it first */
-    LEAVE_BUFFERED(self)
-    res = PyObject_CallMethodObjArgs((PyObject *)self, _PyIO_str_flush, NULL);
-    if (!ENTER_BUFFERED(self))
-        return NULL;
-    if (res == NULL) {
-        goto end;
-    }
-    Py_XDECREF(res);
-
-    res = PyObject_CallMethodObjArgs(self->raw, _PyIO_str_close, NULL);
-
-end:
-    LEAVE_BUFFERED(self)
-    return res;
-}
-
-/* detach */
-
-static PyObject *
-buffered_detach(buffered *self, PyObject *args)
-{
-    PyObject *raw, *res;
-    CHECK_INITIALIZED(self)
-    res = PyObject_CallMethodObjArgs((PyObject *)self, _PyIO_str_flush, NULL);
-    if (res == NULL)
-        return NULL;
-    Py_DECREF(res);
-    raw = self->raw;
-    self->raw = NULL;
-    self->detached = 1;
-    self->ok = 0;
-    return raw;
-}
-
-/* Inquiries */
-
-static PyObject *
-buffered_seekable(buffered *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self)
-    return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_seekable, NULL);
-}
-
-static PyObject *
-buffered_readable(buffered *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self)
-    return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_readable, NULL);
-}
-
-static PyObject *
-buffered_writable(buffered *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self)
-    return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_writable, NULL);
-}
-
-static PyObject *
-buffered_name_get(buffered *self, void *context)
-{
-    CHECK_INITIALIZED(self)
-    return PyObject_GetAttrString(self->raw, "name");
-}
-
-static PyObject *
-buffered_mode_get(buffered *self, void *context)
-{
-    CHECK_INITIALIZED(self)
-    return PyObject_GetAttrString(self->raw, "mode");
-}
-
-/* Lower-level APIs */
-
-static PyObject *
-buffered_fileno(buffered *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self)
-    return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_fileno, NULL);
-}
-
-static PyObject *
-buffered_isatty(buffered *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self)
-    return PyObject_CallMethodObjArgs(self->raw, _PyIO_str_isatty, NULL);
-}
-
-
-/* Forward decls */
-static PyObject *
-_bufferedwriter_flush_unlocked(buffered *, int);
-static Py_ssize_t
-_bufferedreader_fill_buffer(buffered *self);
-static void
-_bufferedreader_reset_buf(buffered *self);
-static void
-_bufferedwriter_reset_buf(buffered *self);
-static PyObject *
-_bufferedreader_peek_unlocked(buffered *self, Py_ssize_t);
-static PyObject *
-_bufferedreader_read_all(buffered *self);
-static PyObject *
-_bufferedreader_read_fast(buffered *self, Py_ssize_t);
-static PyObject *
-_bufferedreader_read_generic(buffered *self, Py_ssize_t);
-
-
-/*
- * Helpers
- */
-
-/* Returns the address of the `written` member if a BlockingIOError was
-   raised, NULL otherwise. The error is always re-raised. */
-static Py_ssize_t *
-_buffered_check_blocking_error(void)
-{
-    PyObject *t, *v, *tb;
-    PyBlockingIOErrorObject *err;
-
-    PyErr_Fetch(&t, &v, &tb);
-    if (v == NULL || !PyErr_GivenExceptionMatches(v, PyExc_BlockingIOError)) {
-        PyErr_Restore(t, v, tb);
-        return NULL;
-    }
-    err = (PyBlockingIOErrorObject *) v;
-    /* TODO: sanity check (err->written >= 0) */
-    PyErr_Restore(t, v, tb);
-    return &err->written;
-}
-
-static Py_off_t
-_buffered_raw_tell(buffered *self)
-{
-    Py_off_t n;
-    PyObject *res;
-    res = PyObject_CallMethodObjArgs(self->raw, _PyIO_str_tell, NULL);
-    if (res == NULL)
-        return -1;
-    n = PyNumber_AsOff_t(res, PyExc_ValueError);
-    Py_DECREF(res);
-    if (n < 0) {
-        if (!PyErr_Occurred())
-            PyErr_Format(PyExc_IOError,
-                         "Raw stream returned invalid position %" PY_PRIdOFF,
-			 (PY_OFF_T_COMPAT)n);
-        return -1;
-    }
-    self->abs_pos = n;
-    return n;
-}
-
-static Py_off_t
-_buffered_raw_seek(buffered *self, Py_off_t target, int whence)
-{
-    PyObject *res, *posobj, *whenceobj;
-    Py_off_t n;
-
-    posobj = PyLong_FromOff_t(target);
-    if (posobj == NULL)
-        return -1;
-    whenceobj = PyLong_FromLong(whence);
-    if (whenceobj == NULL) {
-        Py_DECREF(posobj);
-        return -1;
-    }
-    res = PyObject_CallMethodObjArgs(self->raw, _PyIO_str_seek,
-                                     posobj, whenceobj, NULL);
-    Py_DECREF(posobj);
-    Py_DECREF(whenceobj);
-    if (res == NULL)
-        return -1;
-    n = PyNumber_AsOff_t(res, PyExc_ValueError);
-    Py_DECREF(res);
-    if (n < 0) {
-        if (!PyErr_Occurred())
-            PyErr_Format(PyExc_IOError,
-                         "Raw stream returned invalid position %" PY_PRIdOFF,
-			 (PY_OFF_T_COMPAT)n);
-        return -1;
-    }
-    self->abs_pos = n;
-    return n;
-}
-
-static int
-_buffered_init(buffered *self)
-{
-    Py_ssize_t n;
-    if (self->buffer_size <= 0) {
-        PyErr_SetString(PyExc_ValueError,
-            "buffer size must be strictly positive");
-        return -1;
-    }
-    if (self->buffer)
-        PyMem_Free(self->buffer);
-    self->buffer = PyMem_Malloc(self->buffer_size);
-    if (self->buffer == NULL) {
-        PyErr_NoMemory();
-        return -1;
-    }
-#ifdef WITH_THREAD
-    if (self->lock)
-        PyThread_free_lock(self->lock);
-    self->lock = PyThread_allocate_lock();
-    if (self->lock == NULL) {
-        PyErr_SetString(PyExc_RuntimeError, "can't allocate read lock");
-        return -1;
-    }
-    self->owner = 0;
-#endif
-    /* Find out whether buffer_size is a power of 2 */
-    /* XXX is this optimization useful? */
-    for (n = self->buffer_size - 1; n & 1; n >>= 1)
-        ;
-    if (n == 0)
-        self->buffer_mask = self->buffer_size - 1;
-    else
-        self->buffer_mask = 0;
-    if (_buffered_raw_tell(self) == -1)
-        PyErr_Clear();
-    return 0;
-}
-
-/* Return 1 if an EnvironmentError with errno == EINTR is set (and then
-   clears the error indicator), 0 otherwise.
-   Should only be called when PyErr_Occurred() is true.
-*/
-static int
-_trap_eintr(void)
-{
-    static PyObject *eintr_int = NULL;
-    PyObject *typ, *val, *tb;
-    PyEnvironmentErrorObject *env_err;
-
-    if (eintr_int == NULL) {
-        eintr_int = PyLong_FromLong(EINTR);
-        assert(eintr_int != NULL);
-    }
-    if (!PyErr_ExceptionMatches(PyExc_EnvironmentError))
-        return 0;
-    PyErr_Fetch(&typ, &val, &tb);
-    PyErr_NormalizeException(&typ, &val, &tb);
-    env_err = (PyEnvironmentErrorObject *) val;
-    assert(env_err != NULL);
-    if (env_err->myerrno != NULL &&
-        PyObject_RichCompareBool(env_err->myerrno, eintr_int, Py_EQ) > 0) {
-        Py_DECREF(typ);
-        Py_DECREF(val);
-        Py_XDECREF(tb);
-        return 1;
-    }
-    /* This silences any error set by PyObject_RichCompareBool() */
-    PyErr_Restore(typ, val, tb);
-    return 0;
-}
-
-/*
- * Shared methods and wrappers
- */
-
-static PyObject *
-buffered_flush(buffered *self, PyObject *args)
-{
-    PyObject *res;
-
-    CHECK_INITIALIZED(self)
-    CHECK_CLOSED(self, "flush of closed file")
-
-    if (!ENTER_BUFFERED(self))
-        return NULL;
-    res = _bufferedwriter_flush_unlocked(self, 0);
-    if (res != NULL && self->readable) {
-        /* Rewind the raw stream so that its position corresponds to
-           the current logical position. */
-        Py_off_t n;
-        n = _buffered_raw_seek(self, -RAW_OFFSET(self), 1);
-        if (n == -1)
-            Py_CLEAR(res);
-        _bufferedreader_reset_buf(self);
-    }
-    LEAVE_BUFFERED(self)
-
-    return res;
-}
-
-static PyObject *
-buffered_peek(buffered *self, PyObject *args)
-{
-    Py_ssize_t n = 0;
-    PyObject *res = NULL;
-
-    CHECK_INITIALIZED(self)
-    if (!PyArg_ParseTuple(args, "|n:peek", &n)) {
-        return NULL;
-    }
-
-    if (!ENTER_BUFFERED(self))
-        return NULL;
-
-    if (self->writable) {
-        res = _bufferedwriter_flush_unlocked(self, 1);
-        if (res == NULL)
-            goto end;
-        Py_CLEAR(res);
-    }
-    res = _bufferedreader_peek_unlocked(self, n);
-
-end:
-    LEAVE_BUFFERED(self)
-    return res;
-}
-
-static PyObject *
-buffered_read(buffered *self, PyObject *args)
-{
-    Py_ssize_t n = -1;
-    PyObject *res;
-
-    CHECK_INITIALIZED(self)
-    if (!PyArg_ParseTuple(args, "|O&:read", &_PyIO_ConvertSsize_t, &n)) {
-        return NULL;
-    }
-    if (n < -1) {
-        PyErr_SetString(PyExc_ValueError,
-                        "read length must be positive or -1");
-        return NULL;
-    }
-
-    CHECK_CLOSED(self, "read of closed file")
-
-    if (n == -1) {
-        /* The number of bytes is unspecified, read until the end of stream */
-        if (!ENTER_BUFFERED(self))
-            return NULL;
-        res = _bufferedreader_read_all(self);
-        LEAVE_BUFFERED(self)
-    }
-    else {
-        res = _bufferedreader_read_fast(self, n);
-        if (res == Py_None) {
-            Py_DECREF(res);
-            if (!ENTER_BUFFERED(self))
-                return NULL;
-            res = _bufferedreader_read_generic(self, n);
-            LEAVE_BUFFERED(self)
-        }
-    }
-
-    return res;
-}
-
-static PyObject *
-buffered_read1(buffered *self, PyObject *args)
-{
-    Py_ssize_t n, have, r;
-    PyObject *res = NULL;
-
-    CHECK_INITIALIZED(self)
-    if (!PyArg_ParseTuple(args, "n:read1", &n)) {
-        return NULL;
-    }
-
-    if (n < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "read length must be positive");
-        return NULL;
-    }
-    if (n == 0)
-        return PyBytes_FromStringAndSize(NULL, 0);
-
-    if (!ENTER_BUFFERED(self))
-        return NULL;
-    
-    if (self->writable) {
-        res = _bufferedwriter_flush_unlocked(self, 1);
-        if (res == NULL)
-            goto end;
-        Py_CLEAR(res);
-    }
-
-    /* Return up to n bytes.  If at least one byte is buffered, we
-       only return buffered bytes.  Otherwise, we do one raw read. */
-
-    /* XXX: this mimicks the io.py implementation but is probably wrong.
-       If we need to read from the raw stream, then we could actually read
-       all `n` bytes asked by the caller (and possibly more, so as to fill
-       our buffer for the next reads). */
-
-    have = Py_SAFE_DOWNCAST(READAHEAD(self), Py_off_t, Py_ssize_t);
-    if (have > 0) {
-        if (n > have)
-            n = have;
-        res = PyBytes_FromStringAndSize(self->buffer + self->pos, n);
-        if (res == NULL)
-            goto end;
-        self->pos += n;
-        goto end;
-    }
-
-    /* Fill the buffer from the raw stream, and copy it to the result. */
-    _bufferedreader_reset_buf(self);
-    r = _bufferedreader_fill_buffer(self);
-    if (r == -1)
-        goto end;
-    if (r == -2)
-        r = 0;
-    if (n > r)
-        n = r;
-    res = PyBytes_FromStringAndSize(self->buffer, n);
-    if (res == NULL)
-        goto end;
-    self->pos = n;
-
-end:
-    LEAVE_BUFFERED(self)
-    return res;
-}
-
-static PyObject *
-buffered_readinto(buffered *self, PyObject *args)
-{
-    PyObject *res = NULL;
-
-    CHECK_INITIALIZED(self)
-    
-    /* TODO: use raw.readinto() instead! */
-    if (self->writable) {
-        if (!ENTER_BUFFERED(self))
-            return NULL;
-        res = _bufferedwriter_flush_unlocked(self, 0);
-        LEAVE_BUFFERED(self)
-        if (res == NULL)
-            goto end;
-        Py_DECREF(res);
-    }
-    res = bufferediobase_readinto((PyObject *)self, args);
-
-end:
-    return res;
-}
-
-static PyObject *
-_buffered_readline(buffered *self, Py_ssize_t limit)
-{
-    PyObject *res = NULL;
-    PyObject *chunks = NULL;
-    Py_ssize_t n, written = 0;
-    const char *start, *s, *end;
-
-    CHECK_CLOSED(self, "readline of closed file")
-
-    /* First, try to find a line in the buffer. This can run unlocked because
-       the calls to the C API are simple enough that they can't trigger
-       any thread switch. */
-    n = Py_SAFE_DOWNCAST(READAHEAD(self), Py_off_t, Py_ssize_t);
-    if (limit >= 0 && n > limit)
-        n = limit;
-    start = self->buffer + self->pos;
-    s = memchr(start, '\n', n);
-    if (s != NULL) {
-        res = PyBytes_FromStringAndSize(start, s - start + 1);
-        if (res != NULL)
-            self->pos += s - start + 1;
-        goto end_unlocked;
-    }
-    if (n == limit) {
-        res = PyBytes_FromStringAndSize(start, n);
-        if (res != NULL)
-            self->pos += n;
-        goto end_unlocked;
-    }
-
-    if (!ENTER_BUFFERED(self))
-        goto end_unlocked;
-
-    /* Now we try to get some more from the raw stream */
-    if (self->writable) {
-        res = _bufferedwriter_flush_unlocked(self, 1);
-        if (res == NULL)
-            goto end;
-        Py_CLEAR(res);
-    }
-    chunks = PyList_New(0);
-    if (chunks == NULL)
-        goto end;
-    if (n > 0) {
-        res = PyBytes_FromStringAndSize(start, n);
-        if (res == NULL)
-            goto end;
-        if (PyList_Append(chunks, res) < 0) {
-            Py_CLEAR(res);
-            goto end;
-        }
-        Py_CLEAR(res);
-        written += n;
-        if (limit >= 0)
-            limit -= n;
-    }
-
-    for (;;) {
-        _bufferedreader_reset_buf(self);
-        n = _bufferedreader_fill_buffer(self);
-        if (n == -1)
-            goto end;
-        if (n <= 0)
-            break;
-        if (limit >= 0 && n > limit)
-            n = limit;
-        start = self->buffer;
-        end = start + n;
-        s = start;
-        while (s < end) {
-            if (*s++ == '\n') {
-                res = PyBytes_FromStringAndSize(start, s - start);
-                if (res == NULL)
-                    goto end;
-                self->pos = s - start;
-                goto found;
-            }
-        }
-        res = PyBytes_FromStringAndSize(start, n);
-        if (res == NULL)
-            goto end;
-        if (n == limit) {
-            self->pos = n;
-            break;
-        }
-        if (PyList_Append(chunks, res) < 0) {
-            Py_CLEAR(res);
-            goto end;
-        }
-        Py_CLEAR(res);
-        written += n;
-        if (limit >= 0)
-            limit -= n;
-    }
-found:
-    if (res != NULL && PyList_Append(chunks, res) < 0) {
-        Py_CLEAR(res);
-        goto end;
-    }
-    Py_CLEAR(res);
-    res = _PyBytes_Join(_PyIO_empty_bytes, chunks);
-
-end:
-    LEAVE_BUFFERED(self)
-end_unlocked:
-    Py_XDECREF(chunks);
-    return res;
-}
-
-static PyObject *
-buffered_readline(buffered *self, PyObject *args)
-{
-    Py_ssize_t limit = -1;
-
-    CHECK_INITIALIZED(self)
-    if (!PyArg_ParseTuple(args, "|O&:readline", &_PyIO_ConvertSsize_t, &limit))
-        return NULL;
-    return _buffered_readline(self, limit);
-}
-
-
-static PyObject *
-buffered_tell(buffered *self, PyObject *args)
-{
-    Py_off_t pos;
-
-    CHECK_INITIALIZED(self)
-    pos = _buffered_raw_tell(self);
-    if (pos == -1)
-        return NULL;
-    pos -= RAW_OFFSET(self);
-    /* TODO: sanity check (pos >= 0) */
-    return PyLong_FromOff_t(pos);
-}
-
-static PyObject *
-buffered_seek(buffered *self, PyObject *args)
-{
-    Py_off_t target, n;
-    int whence = 0;
-    PyObject *targetobj, *res = NULL;
-
-    CHECK_INITIALIZED(self)
-    if (!PyArg_ParseTuple(args, "O|i:seek", &targetobj, &whence)) {
-        return NULL;
-    }
-    if (whence < 0 || whence > 2) {
-        PyErr_Format(PyExc_ValueError,
-                     "whence must be between 0 and 2, not %d", whence);
-        return NULL;
-    }
-
-    CHECK_CLOSED(self, "seek of closed file")
-
-    target = PyNumber_AsOff_t(targetobj, PyExc_ValueError);
-    if (target == -1 && PyErr_Occurred())
-        return NULL;
-
-    if (whence != 2 && self->readable) {
-        Py_off_t current, avail;
-        /* Check if seeking leaves us inside the current buffer,
-           so as to return quickly if possible. Also, we needn't take the
-           lock in this fast path.
-           Don't know how to do that when whence == 2, though. */
-        /* NOTE: RAW_TELL() can release the GIL but the object is in a stable
-           state at this point. */
-        current = RAW_TELL(self);
-        avail = READAHEAD(self);
-        if (avail > 0) {
-            Py_off_t offset;
-            if (whence == 0)
-                offset = target - (current - RAW_OFFSET(self));
-            else
-                offset = target;
-            if (offset >= -self->pos && offset <= avail) {
-                self->pos += offset;
-                return PyLong_FromOff_t(current - avail + offset);
-            }
-        }
-    }
-
-    if (!ENTER_BUFFERED(self))
-        return NULL;
-
-    /* Fallback: invoke raw seek() method and clear buffer */
-    if (self->writable) {
-        res = _bufferedwriter_flush_unlocked(self, 0);
-        if (res == NULL)
-            goto end;
-        Py_CLEAR(res);
-        _bufferedwriter_reset_buf(self);
-    }
-
-    /* TODO: align on block boundary and read buffer if needed? */
-    if (whence == 1)
-        target -= RAW_OFFSET(self);
-    n = _buffered_raw_seek(self, target, whence);
-    if (n == -1)
-        goto end;
-    self->raw_pos = -1;
-    res = PyLong_FromOff_t(n);
-    if (res != NULL && self->readable)
-        _bufferedreader_reset_buf(self);
-
-end:
-    LEAVE_BUFFERED(self)
-    return res;
-}
-
-static PyObject *
-buffered_truncate(buffered *self, PyObject *args)
-{
-    PyObject *pos = Py_None;
-    PyObject *res = NULL;
-
-    CHECK_INITIALIZED(self)
-    if (!PyArg_ParseTuple(args, "|O:truncate", &pos)) {
-        return NULL;
-    }
-
-    if (!ENTER_BUFFERED(self))
-        return NULL;
-
-    if (self->writable) {
-        res = _bufferedwriter_flush_unlocked(self, 0);
-        if (res == NULL)
-            goto end;
-        Py_CLEAR(res);
-    }
-    if (self->readable) {
-        if (pos == Py_None) {
-            /* Rewind the raw stream so that its position corresponds to
-               the current logical position. */
-            if (_buffered_raw_seek(self, -RAW_OFFSET(self), 1) == -1)
-                goto end;
-        }
-        _bufferedreader_reset_buf(self);
-    }
-    res = PyObject_CallMethodObjArgs(self->raw, _PyIO_str_truncate, pos, NULL);
-    if (res == NULL)
-        goto end;
-    /* Reset cached position */
-    if (_buffered_raw_tell(self) == -1)
-        PyErr_Clear();
-
-end:
-    LEAVE_BUFFERED(self)
-    return res;
-}
-
-static PyObject *
-buffered_iternext(buffered *self)
-{
-    PyObject *line;
-    PyTypeObject *tp;
-
-    CHECK_INITIALIZED(self);
-
-    tp = Py_TYPE(self);
-    if (tp == &PyBufferedReader_Type ||
-        tp == &PyBufferedRandom_Type) {
-        /* Skip method call overhead for speed */
-        line = _buffered_readline(self, -1);
-    }
-    else {
-        line = PyObject_CallMethodObjArgs((PyObject *)self,
-                                           _PyIO_str_readline, NULL);
-        if (line && !PyBytes_Check(line)) {
-            PyErr_Format(PyExc_IOError,
-                         "readline() should have returned a bytes object, "
-                         "not '%.200s'", Py_TYPE(line)->tp_name);
-            Py_DECREF(line);
-            return NULL;
-        }
-    }
-
-    if (line == NULL)
-        return NULL;
-
-    if (PyBytes_GET_SIZE(line) == 0) {
-        /* Reached EOF or would have blocked */
-        Py_DECREF(line);
-        return NULL;
-    }
-
-    return line;
-}
-
-static PyObject *
-buffered_repr(buffered *self)
-{
-    PyObject *nameobj, *res;
-
-    nameobj = PyObject_GetAttrString((PyObject *) self, "name");
-    if (nameobj == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_AttributeError))
-            PyErr_Clear();
-        else
-            return NULL;
-        res = PyString_FromFormat("<%s>", Py_TYPE(self)->tp_name);
-    }
-    else {
-        PyObject *repr = PyObject_Repr(nameobj);
-        Py_DECREF(nameobj);
-        if (repr == NULL)
-            return NULL;
-        res = PyString_FromFormat("<%s name=%s>",
-                                   Py_TYPE(self)->tp_name,
-                                   PyString_AS_STRING(repr));
-        Py_DECREF(repr);
-    }
-    return res;
-}
-
-/*
- * class BufferedReader
- */
-
-PyDoc_STRVAR(bufferedreader_doc,
-             "Create a new buffered reader using the given readable raw IO object.");
-
-static void _bufferedreader_reset_buf(buffered *self)
-{
-    self->read_end = -1;
-}
-
-static int
-bufferedreader_init(buffered *self, PyObject *args, PyObject *kwds)
-{
-    char *kwlist[] = {"raw", "buffer_size", NULL};
-    Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE;
-    PyObject *raw;
-
-    self->ok = 0;
-    self->detached = 0;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|n:BufferedReader", kwlist,
-                                     &raw, &buffer_size)) {
-        return -1;
-    }
-
-    if (_PyIOBase_check_readable(raw, Py_True) == NULL)
-        return -1;
-
-    Py_CLEAR(self->raw);
-    Py_INCREF(raw);
-    self->raw = raw;
-    self->buffer_size = buffer_size;
-    self->readable = 1;
-    self->writable = 0;
-
-    if (_buffered_init(self) < 0)
-        return -1;
-    _bufferedreader_reset_buf(self);
-
-    self->fast_closed_checks = (Py_TYPE(self) == &PyBufferedReader_Type &&
-                                Py_TYPE(raw) == &PyFileIO_Type);
-
-    self->ok = 1;
-    return 0;
-}
-
-static Py_ssize_t
-_bufferedreader_raw_read(buffered *self, char *start, Py_ssize_t len)
-{
-    Py_buffer buf;
-    PyObject *memobj, *res;
-    Py_ssize_t n;
-    /* NOTE: the buffer needn't be released as its object is NULL. */
-    if (PyBuffer_FillInfo(&buf, NULL, start, len, 0, PyBUF_CONTIG) == -1)
-        return -1;
-    memobj = PyMemoryView_FromBuffer(&buf);
-    if (memobj == NULL)
-        return -1;
-    /* NOTE: PyErr_SetFromErrno() calls PyErr_CheckSignals() when EINTR
-       occurs so we needn't do it ourselves.
-       We then retry reading, ignoring the signal if no handler has
-       raised (see issue #10956).
-    */
-    do {
-        res = PyObject_CallMethodObjArgs(self->raw, _PyIO_str_readinto, memobj, NULL);
-    } while (res == NULL && _trap_eintr());
-    Py_DECREF(memobj);
-    if (res == NULL)
-        return -1;
-    if (res == Py_None) {
-        /* Non-blocking stream would have blocked. Special return code! */
-        Py_DECREF(res);
-        return -2;
-    }
-    n = PyNumber_AsSsize_t(res, PyExc_ValueError);
-    Py_DECREF(res);
-    if (n < 0 || n > len) {
-        PyErr_Format(PyExc_IOError,
-                     "raw readinto() returned invalid length %zd "
-                     "(should have been between 0 and %zd)", n, len);
-        return -1;
-    }
-    if (n > 0 && self->abs_pos != -1)
-        self->abs_pos += n;
-    return n;
-}
-
-static Py_ssize_t
-_bufferedreader_fill_buffer(buffered *self)
-{
-    Py_ssize_t start, len, n;
-    if (VALID_READ_BUFFER(self))
-        start = Py_SAFE_DOWNCAST(self->read_end, Py_off_t, Py_ssize_t);
-    else
-        start = 0;
-    len = self->buffer_size - start;
-    n = _bufferedreader_raw_read(self, self->buffer + start, len);
-    if (n <= 0)
-        return n;
-    self->read_end = start + n;
-    self->raw_pos = start + n;
-    return n;
-}
-
-static PyObject *
-_bufferedreader_read_all(buffered *self)
-{
-    Py_ssize_t current_size;
-    PyObject *res, *data = NULL;
-    PyObject *chunks = PyList_New(0);
-
-    if (chunks == NULL)
-        return NULL;
-
-    /* First copy what we have in the current buffer. */
-    current_size = Py_SAFE_DOWNCAST(READAHEAD(self), Py_off_t, Py_ssize_t);
-    if (current_size) {
-        data = PyBytes_FromStringAndSize(
-            self->buffer + self->pos, current_size);
-        if (data == NULL) {
-            Py_DECREF(chunks);
-            return NULL;
-        }
-    }
-    _bufferedreader_reset_buf(self);
-    /* We're going past the buffer's bounds, flush it */
-    if (self->writable) {
-        res = _bufferedwriter_flush_unlocked(self, 1);
-        if (res == NULL) {
-            Py_DECREF(chunks);
-            return NULL;
-        }
-        Py_CLEAR(res);
-    }
-    while (1) {
-        if (data) {
-            if (PyList_Append(chunks, data) < 0) {
-                Py_DECREF(data);
-                Py_DECREF(chunks);
-                return NULL;
-            }
-            Py_DECREF(data);
-        }
-
-        /* Read until EOF or until read() would block. */
-        data = PyObject_CallMethodObjArgs(self->raw, _PyIO_str_read, NULL);
-        if (data == NULL) {
-            Py_DECREF(chunks);
-            return NULL;
-        }
-        if (data != Py_None && !PyBytes_Check(data)) {
-            Py_DECREF(data);
-            Py_DECREF(chunks);
-            PyErr_SetString(PyExc_TypeError, "read() should return bytes");
-            return NULL;
-        }
-        if (data == Py_None || PyBytes_GET_SIZE(data) == 0) {
-            if (current_size == 0) {
-                Py_DECREF(chunks);
-                return data;
-            }
-            else {
-                res = _PyBytes_Join(_PyIO_empty_bytes, chunks);
-                Py_DECREF(data);
-                Py_DECREF(chunks);
-                return res;
-            }
-        }
-        current_size += PyBytes_GET_SIZE(data);
-        if (self->abs_pos != -1)
-            self->abs_pos += PyBytes_GET_SIZE(data);
-    }
-}
-
-/* Read n bytes from the buffer if it can, otherwise return None.
-   This function is simple enough that it can run unlocked. */
-static PyObject *
-_bufferedreader_read_fast(buffered *self, Py_ssize_t n)
-{
-    Py_ssize_t current_size;
-
-    current_size = Py_SAFE_DOWNCAST(READAHEAD(self), Py_off_t, Py_ssize_t);
-    if (n <= current_size) {
-        /* Fast path: the data to read is fully buffered. */
-        PyObject *res = PyBytes_FromStringAndSize(self->buffer + self->pos, n);
-        if (res != NULL)
-            self->pos += n;
-        return res;
-    }
-    Py_RETURN_NONE;
-}
-
-/* Generic read function: read from the stream until enough bytes are read,
- * or until an EOF occurs or until read() would block.
- */
-static PyObject *
-_bufferedreader_read_generic(buffered *self, Py_ssize_t n)
-{
-    PyObject *res = NULL;
-    Py_ssize_t current_size, remaining, written;
-    char *out;
-
-    current_size = Py_SAFE_DOWNCAST(READAHEAD(self), Py_off_t, Py_ssize_t);
-    if (n <= current_size)
-        return _bufferedreader_read_fast(self, n);
-
-    res = PyBytes_FromStringAndSize(NULL, n);
-    if (res == NULL)
-        goto error;
-    out = PyBytes_AS_STRING(res);
-    remaining = n;
-    written = 0;
-    if (current_size > 0) {
-        memcpy(out, self->buffer + self->pos, current_size);
-        remaining -= current_size;
-        written += current_size;
-    }
-    _bufferedreader_reset_buf(self);
-    while (remaining > 0) {
-        /* We want to read a whole block at the end into buffer.
-           If we had readv() we could do this in one pass. */
-        Py_ssize_t r = MINUS_LAST_BLOCK(self, remaining);
-        if (r == 0)
-            break;
-        r = _bufferedreader_raw_read(self, out + written, r);
-        if (r == -1)
-            goto error;
-        if (r == 0 || r == -2) {
-            /* EOF occurred or read() would block. */
-            if (r == 0 || written > 0) {
-                if (_PyBytes_Resize(&res, written))
-                    goto error;
-                return res;
-            }
-            Py_DECREF(res);
-            Py_INCREF(Py_None);
-            return Py_None;
-        }
-        remaining -= r;
-        written += r;
-    }
-    assert(remaining <= self->buffer_size);
-    self->pos = 0;
-    self->raw_pos = 0;
-    self->read_end = 0;
-    /* NOTE: when the read is satisfied, we avoid issuing any additional
-       reads, which could block indefinitely (e.g. on a socket).
-       See issue #9550. */
-    while (remaining > 0 && self->read_end < self->buffer_size) {
-        Py_ssize_t r = _bufferedreader_fill_buffer(self);
-        if (r == -1)
-            goto error;
-        if (r == 0 || r == -2) {
-            /* EOF occurred or read() would block. */
-            if (r == 0 || written > 0) {
-                if (_PyBytes_Resize(&res, written))
-                    goto error;
-                return res;
-            }
-            Py_DECREF(res);
-            Py_INCREF(Py_None);
-            return Py_None;
-        }
-        if (remaining > r) {
-            memcpy(out + written, self->buffer + self->pos, r);
-            written += r;
-            self->pos += r;
-            remaining -= r;
-        }
-        else if (remaining > 0) {
-            memcpy(out + written, self->buffer + self->pos, remaining);
-            written += remaining;
-            self->pos += remaining;
-            remaining = 0;
-        }
-        if (remaining == 0)
-            break;
-    }
-
-    return res;
-
-error:
-    Py_XDECREF(res);
-    return NULL;
-}
-
-static PyObject *
-_bufferedreader_peek_unlocked(buffered *self, Py_ssize_t n)
-{
-    Py_ssize_t have, r;
-
-    have = Py_SAFE_DOWNCAST(READAHEAD(self), Py_off_t, Py_ssize_t);
-    /* Constraints:
-       1. we don't want to advance the file position.
-       2. we don't want to lose block alignment, so we can't shift the buffer
-          to make some place.
-       Therefore, we either return `have` bytes (if > 0), or a full buffer.
-    */
-    if (have > 0) {
-        return PyBytes_FromStringAndSize(self->buffer + self->pos, have);
-    }
-
-    /* Fill the buffer from the raw stream, and copy it to the result. */
-    _bufferedreader_reset_buf(self);
-    r = _bufferedreader_fill_buffer(self);
-    if (r == -1)
-        return NULL;
-    if (r == -2)
-        r = 0;
-    self->pos = 0;
-    return PyBytes_FromStringAndSize(self->buffer, r);
-}
-
-static PyMethodDef bufferedreader_methods[] = {
-    /* BufferedIOMixin methods */
-    {"detach", (PyCFunction)buffered_detach, METH_NOARGS},
-    {"flush", (PyCFunction)buffered_simple_flush, METH_NOARGS},
-    {"close", (PyCFunction)buffered_close, METH_NOARGS},
-    {"seekable", (PyCFunction)buffered_seekable, METH_NOARGS},
-    {"readable", (PyCFunction)buffered_readable, METH_NOARGS},
-    {"writable", (PyCFunction)buffered_writable, METH_NOARGS},
-    {"fileno", (PyCFunction)buffered_fileno, METH_NOARGS},
-    {"isatty", (PyCFunction)buffered_isatty, METH_NOARGS},
-
-    {"read", (PyCFunction)buffered_read, METH_VARARGS},
-    {"peek", (PyCFunction)buffered_peek, METH_VARARGS},
-    {"read1", (PyCFunction)buffered_read1, METH_VARARGS},
-    {"readline", (PyCFunction)buffered_readline, METH_VARARGS},
-    {"seek", (PyCFunction)buffered_seek, METH_VARARGS},
-    {"tell", (PyCFunction)buffered_tell, METH_NOARGS},
-    {"truncate", (PyCFunction)buffered_truncate, METH_VARARGS},
-    {NULL, NULL}
-};
-
-static PyMemberDef bufferedreader_members[] = {
-    {"raw", T_OBJECT, offsetof(buffered, raw), READONLY},
-    {NULL}
-};
-
-static PyGetSetDef bufferedreader_getset[] = {
-    {"closed", (getter)buffered_closed_get, NULL, NULL},
-    {"name", (getter)buffered_name_get, NULL, NULL},
-    {"mode", (getter)buffered_mode_get, NULL, NULL},
-    {NULL}
-};
-
-
-PyTypeObject PyBufferedReader_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_io.BufferedReader",       /*tp_name*/
-    sizeof(buffered),           /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    (destructor)buffered_dealloc,     /*tp_dealloc*/
-    0,                          /*tp_print*/
-    0,                          /*tp_getattr*/
-    0,                          /*tp_setattr*/
-    0,                          /*tp_compare */
-    (reprfunc)buffered_repr,    /*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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
-            | Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-    bufferedreader_doc,         /* tp_doc */
-    (traverseproc)buffered_traverse, /* tp_traverse */
-    (inquiry)buffered_clear,    /* tp_clear */
-    0,                          /* tp_richcompare */
-    offsetof(buffered, weakreflist), /*tp_weaklistoffset*/
-    0,                          /* tp_iter */
-    (iternextfunc)buffered_iternext, /* tp_iternext */
-    bufferedreader_methods,     /* tp_methods */
-    bufferedreader_members,     /* tp_members */
-    bufferedreader_getset,      /* tp_getset */
-    0,                          /* tp_base */
-    0,                          /* tp_dict */
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    offsetof(buffered, dict), /* tp_dictoffset */
-    (initproc)bufferedreader_init, /* tp_init */
-    0,                          /* tp_alloc */
-    PyType_GenericNew,          /* tp_new */
-};
-\f
-
-
-static int
-complain_about_max_buffer_size(void)
-{
-    if (PyErr_WarnEx(PyExc_DeprecationWarning,
-                     "max_buffer_size is deprecated", 1) < 0)
-        return 0;
-    return 1;
-}
-
-/*
- * class BufferedWriter
- */
-PyDoc_STRVAR(bufferedwriter_doc,
-    "A buffer for a writeable sequential RawIO object.\n"
-    "\n"
-    "The constructor creates a BufferedWriter for the given writeable raw\n"
-    "stream. If the buffer_size is not given, it defaults to\n"
-    "DEFAULT_BUFFER_SIZE. max_buffer_size isn't used anymore.\n"
-    );
-
-static void
-_bufferedwriter_reset_buf(buffered *self)
-{
-    self->write_pos = 0;
-    self->write_end = -1;
-}
-
-static int
-bufferedwriter_init(buffered *self, PyObject *args, PyObject *kwds)
-{
-    /* TODO: properly deprecate max_buffer_size */
-    char *kwlist[] = {"raw", "buffer_size", "max_buffer_size", NULL};
-    Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE;
-    Py_ssize_t max_buffer_size = -234;
-    PyObject *raw;
-
-    self->ok = 0;
-    self->detached = 0;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|nn:BufferedReader", kwlist,
-                                     &raw, &buffer_size, &max_buffer_size)) {
-        return -1;
-    }
-
-    if (max_buffer_size != -234 && !complain_about_max_buffer_size())
-        return -1;
-
-    if (_PyIOBase_check_writable(raw, Py_True) == NULL)
-        return -1;
-
-    Py_CLEAR(self->raw);
-    Py_INCREF(raw);
-    self->raw = raw;
-    self->readable = 0;
-    self->writable = 1;
-
-    self->buffer_size = buffer_size;
-    if (_buffered_init(self) < 0)
-        return -1;
-    _bufferedwriter_reset_buf(self);
-    self->pos = 0;
-
-    self->fast_closed_checks = (Py_TYPE(self) == &PyBufferedWriter_Type &&
-                                Py_TYPE(raw) == &PyFileIO_Type);
-
-    self->ok = 1;
-    return 0;
-}
-
-static Py_ssize_t
-_bufferedwriter_raw_write(buffered *self, char *start, Py_ssize_t len)
-{
-    Py_buffer buf;
-    PyObject *memobj, *res;
-    Py_ssize_t n;
-    /* NOTE: the buffer needn't be released as its object is NULL. */
-    if (PyBuffer_FillInfo(&buf, NULL, start, len, 1, PyBUF_CONTIG_RO) == -1)
-        return -1;
-    memobj = PyMemoryView_FromBuffer(&buf);
-    if (memobj == NULL)
-        return -1;
-    /* NOTE: PyErr_SetFromErrno() calls PyErr_CheckSignals() when EINTR
-       occurs so we needn't do it ourselves.
-       We then retry writing, ignoring the signal if no handler has
-       raised (see issue #10956).
-    */
-    do {
-        res = PyObject_CallMethodObjArgs(self->raw, _PyIO_str_write, memobj, NULL);
-    } while (res == NULL && _trap_eintr());
-    Py_DECREF(memobj);
-    if (res == NULL)
-        return -1;
-    n = PyNumber_AsSsize_t(res, PyExc_ValueError);
-    Py_DECREF(res);
-    if (n < 0 || n > len) {
-        PyErr_Format(PyExc_IOError,
-                     "raw write() returned invalid length %zd "
-                     "(should have been between 0 and %zd)", n, len);
-        return -1;
-    }
-    if (n > 0 && self->abs_pos != -1)
-        self->abs_pos += n;
-    return n;
-}
-
-/* `restore_pos` is 1 if we need to restore the raw stream position at
-   the end, 0 otherwise. */
-static PyObject *
-_bufferedwriter_flush_unlocked(buffered *self, int restore_pos)
-{
-    Py_ssize_t written = 0;
-    Py_off_t n, rewind;
-
-    if (!VALID_WRITE_BUFFER(self) || self->write_pos == self->write_end)
-        goto end;
-    /* First, rewind */
-    rewind = RAW_OFFSET(self) + (self->pos - self->write_pos);
-    if (rewind != 0) {
-        n = _buffered_raw_seek(self, -rewind, 1);
-        if (n < 0) {
-            goto error;
-        }
-        self->raw_pos -= rewind;
-    }
-    while (self->write_pos < self->write_end) {
-        n = _bufferedwriter_raw_write(self,
-            self->buffer + self->write_pos,
-            Py_SAFE_DOWNCAST(self->write_end - self->write_pos,
-                             Py_off_t, Py_ssize_t));
-        if (n == -1) {
-            Py_ssize_t *w = _buffered_check_blocking_error();
-            if (w == NULL)
-                goto error;
-            self->write_pos += *w;
-            self->raw_pos = self->write_pos;
-            written += *w;
-            *w = written;
-            /* Already re-raised */
-            goto error;
-        }
-        self->write_pos += n;
-        self->raw_pos = self->write_pos;
-        written += Py_SAFE_DOWNCAST(n, Py_off_t, Py_ssize_t);
-        /* Partial writes can return successfully when interrupted by a
-           signal (see write(2)).  We must run signal handlers before
-           blocking another time, possibly indefinitely. */
-        if (PyErr_CheckSignals() < 0)
-            goto error;
-    }
-
-    if (restore_pos) {
-        Py_off_t forward = rewind - written;
-        if (forward != 0) {
-            n = _buffered_raw_seek(self, forward, 1);
-            if (n < 0) {
-                goto error;
-            }
-            self->raw_pos += forward;
-        }
-    }
-    _bufferedwriter_reset_buf(self);
-
-end:
-    Py_RETURN_NONE;
-
-error:
-    return NULL;
-}
-
-static PyObject *
-bufferedwriter_write(buffered *self, PyObject *args)
-{
-    PyObject *res = NULL;
-    Py_buffer buf;
-    Py_ssize_t written, avail, remaining;
-    Py_off_t offset;
-
-    CHECK_INITIALIZED(self)
-    if (!PyArg_ParseTuple(args, "s*:write", &buf)) {
-        return NULL;
-    }
-
-    if (IS_CLOSED(self)) {
-        PyErr_SetString(PyExc_ValueError, "write to closed file");
-        PyBuffer_Release(&buf);
-        return NULL;
-    }
-
-    if (!ENTER_BUFFERED(self)) {
-        PyBuffer_Release(&buf);
-        return NULL;
-    }
-
-    /* Fast path: the data to write can be fully buffered. */
-    if (!VALID_READ_BUFFER(self) && !VALID_WRITE_BUFFER(self)) {
-        self->pos = 0;
-        self->raw_pos = 0;
-    }
-    avail = Py_SAFE_DOWNCAST(self->buffer_size - self->pos, Py_off_t, Py_ssize_t);
-    if (buf.len <= avail) {
-        memcpy(self->buffer + self->pos, buf.buf, buf.len);
-        if (!VALID_WRITE_BUFFER(self) || self->write_pos > self->pos) {
-            self->write_pos = self->pos;
-        }
-        ADJUST_POSITION(self, self->pos + buf.len);
-        if (self->pos > self->write_end)
-            self->write_end = self->pos;
-        written = buf.len;
-        goto end;
-    }
-
-    /* First write the current buffer */
-    res = _bufferedwriter_flush_unlocked(self, 0);
-    if (res == NULL) {
-        Py_ssize_t *w = _buffered_check_blocking_error();
-        if (w == NULL)
-            goto error;
-        if (self->readable)
-            _bufferedreader_reset_buf(self);
-        /* Make some place by shifting the buffer. */
-        assert(VALID_WRITE_BUFFER(self));
-        memmove(self->buffer, self->buffer + self->write_pos,
-                Py_SAFE_DOWNCAST(self->write_end - self->write_pos,
-                                 Py_off_t, Py_ssize_t));
-        self->write_end -= self->write_pos;
-        self->raw_pos -= self->write_pos;
-        self->pos -= self->write_pos;
-        self->write_pos = 0;
-        avail = Py_SAFE_DOWNCAST(self->buffer_size - self->write_end,
-                                 Py_off_t, Py_ssize_t);
-        if (buf.len <= avail) {
-            /* Everything can be buffered */
-            PyErr_Clear();
-            memcpy(self->buffer + self->write_end, buf.buf, buf.len);
-            self->write_end += buf.len;
-            written = buf.len;
-            goto end;
-        }
-        /* Buffer as much as possible. */
-        memcpy(self->buffer + self->write_end, buf.buf, avail);
-        self->write_end += avail;
-        /* Already re-raised */
-        *w = avail;
-        goto error;
-    }
-    Py_CLEAR(res);
-
-    /* Adjust the raw stream position if it is away from the logical stream
-       position. This happens if the read buffer has been filled but not
-       modified (and therefore _bufferedwriter_flush_unlocked() didn't rewind
-       the raw stream by itself).
-       Fixes issue #6629.
-    */
-    offset = RAW_OFFSET(self);
-    if (offset != 0) {
-        if (_buffered_raw_seek(self, -offset, 1) < 0)
-            goto error;
-        self->raw_pos -= offset;
-    }
-
-    /* Then write buf itself. At this point the buffer has been emptied. */
-    remaining = buf.len;
-    written = 0;
-    while (remaining > self->buffer_size) {
-        Py_ssize_t n = _bufferedwriter_raw_write(
-            self, (char *) buf.buf + written, buf.len - written);
-        if (n == -1) {
-            Py_ssize_t *w = _buffered_check_blocking_error();
-            if (w == NULL)
-                goto error;
-            written += *w;
-            remaining -= *w;
-            if (remaining > self->buffer_size) {
-                /* Can't buffer everything, still buffer as much as possible */
-                memcpy(self->buffer,
-                       (char *) buf.buf + written, self->buffer_size);
-                self->raw_pos = 0;
-                ADJUST_POSITION(self, self->buffer_size);
-                self->write_end = self->buffer_size;
-                *w = written + self->buffer_size;
-                /* Already re-raised */
-                goto error;
-            }
-            PyErr_Clear();
-            break;
-        }
-        written += n;
-        remaining -= n;
-        /* Partial writes can return successfully when interrupted by a
-           signal (see write(2)).  We must run signal handlers before
-           blocking another time, possibly indefinitely. */
-        if (PyErr_CheckSignals() < 0)
-            goto error;
-    }
-    if (self->readable)
-        _bufferedreader_reset_buf(self);
-    if (remaining > 0) {
-        memcpy(self->buffer, (char *) buf.buf + written, remaining);
-        written += remaining;
-    }
-    self->write_pos = 0;
-    /* TODO: sanity check (remaining >= 0) */
-    self->write_end = remaining;
-    ADJUST_POSITION(self, remaining);
-    self->raw_pos = 0;
-
-end:
-    res = PyLong_FromSsize_t(written);
-
-error:
-    LEAVE_BUFFERED(self)
-    PyBuffer_Release(&buf);
-    return res;
-}
-
-static PyMethodDef bufferedwriter_methods[] = {
-    /* BufferedIOMixin methods */
-    {"close", (PyCFunction)buffered_close, METH_NOARGS},
-    {"detach", (PyCFunction)buffered_detach, METH_NOARGS},
-    {"seekable", (PyCFunction)buffered_seekable, METH_NOARGS},
-    {"readable", (PyCFunction)buffered_readable, METH_NOARGS},
-    {"writable", (PyCFunction)buffered_writable, METH_NOARGS},
-    {"fileno", (PyCFunction)buffered_fileno, METH_NOARGS},
-    {"isatty", (PyCFunction)buffered_isatty, METH_NOARGS},
-
-    {"write", (PyCFunction)bufferedwriter_write, METH_VARARGS},
-    {"truncate", (PyCFunction)buffered_truncate, METH_VARARGS},
-    {"flush", (PyCFunction)buffered_flush, METH_NOARGS},
-    {"seek", (PyCFunction)buffered_seek, METH_VARARGS},
-    {"tell", (PyCFunction)buffered_tell, METH_NOARGS},
-    {NULL, NULL}
-};
-
-static PyMemberDef bufferedwriter_members[] = {
-    {"raw", T_OBJECT, offsetof(buffered, raw), READONLY},
-    {NULL}
-};
-
-static PyGetSetDef bufferedwriter_getset[] = {
-    {"closed", (getter)buffered_closed_get, NULL, NULL},
-    {"name", (getter)buffered_name_get, NULL, NULL},
-    {"mode", (getter)buffered_mode_get, NULL, NULL},
-    {NULL}
-};
-
-
-PyTypeObject PyBufferedWriter_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_io.BufferedWriter",       /*tp_name*/
-    sizeof(buffered),           /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    (destructor)buffered_dealloc,     /*tp_dealloc*/
-    0,                          /*tp_print*/
-    0,                          /*tp_getattr*/
-    0,                          /*tp_setattr*/
-    0,                          /*tp_compare */
-    (reprfunc)buffered_repr,    /*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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
-        | Py_TPFLAGS_HAVE_GC,   /*tp_flags*/
-    bufferedwriter_doc,         /* tp_doc */
-    (traverseproc)buffered_traverse, /* tp_traverse */
-    (inquiry)buffered_clear,    /* tp_clear */
-    0,                          /* tp_richcompare */
-    offsetof(buffered, weakreflist), /*tp_weaklistoffset*/
-    0,                          /* tp_iter */
-    0,                          /* tp_iternext */
-    bufferedwriter_methods,     /* tp_methods */
-    bufferedwriter_members,     /* tp_members */
-    bufferedwriter_getset,      /* tp_getset */
-    0,                          /* tp_base */
-    0,                          /* tp_dict */
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    offsetof(buffered, dict),   /* tp_dictoffset */
-    (initproc)bufferedwriter_init, /* tp_init */
-    0,                          /* tp_alloc */
-    PyType_GenericNew,          /* tp_new */
-};
-\f
-
-
-/*
- * BufferedRWPair
- */
-
-PyDoc_STRVAR(bufferedrwpair_doc,
-    "A buffered reader and writer object together.\n"
-    "\n"
-    "A buffered reader object and buffered writer object put together to\n"
-    "form a sequential IO object that can read and write. This is typically\n"
-    "used with a socket or two-way pipe.\n"
-    "\n"
-    "reader and writer are RawIOBase objects that are readable and\n"
-    "writeable respectively. If the buffer_size is omitted it defaults to\n"
-    "DEFAULT_BUFFER_SIZE.\n"
-    );
-
-/* XXX The usefulness of this (compared to having two separate IO objects) is
- * questionable.
- */
-
-typedef struct {
-    PyObject_HEAD
-    buffered *reader;
-    buffered *writer;
-    PyObject *dict;
-    PyObject *weakreflist;
-} rwpair;
-
-static int
-bufferedrwpair_init(rwpair *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *reader, *writer;
-    Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE;
-    Py_ssize_t max_buffer_size = -234;
-
-    if (!PyArg_ParseTuple(args, "OO|nn:BufferedRWPair", &reader, &writer,
-                          &buffer_size, &max_buffer_size)) {
-        return -1;
-    }
-
-    if (max_buffer_size != -234 && !complain_about_max_buffer_size())
-        return -1;
-
-    if (_PyIOBase_check_readable(reader, Py_True) == NULL)
-        return -1;
-    if (_PyIOBase_check_writable(writer, Py_True) == NULL)
-        return -1;
-
-    self->reader = (buffered *) PyObject_CallFunction(
-            (PyObject *) &PyBufferedReader_Type, "On", reader, buffer_size);
-    if (self->reader == NULL)
-        return -1;
-
-    self->writer = (buffered *) PyObject_CallFunction(
-            (PyObject *) &PyBufferedWriter_Type, "On", writer, buffer_size);
-    if (self->writer == NULL) {
-        Py_CLEAR(self->reader);
-        return -1;
-    }
-
-    return 0;
-}
-
-static int
-bufferedrwpair_traverse(rwpair *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->dict);
-    return 0;
-}
-
-static int
-bufferedrwpair_clear(rwpair *self)
-{
-    Py_CLEAR(self->reader);
-    Py_CLEAR(self->writer);
-    Py_CLEAR(self->dict);
-    return 0;
-}
-
-static void
-bufferedrwpair_dealloc(rwpair *self)
-{
-    _PyObject_GC_UNTRACK(self);
-    Py_CLEAR(self->reader);
-    Py_CLEAR(self->writer);
-    Py_CLEAR(self->dict);
-    Py_TYPE(self)->tp_free((PyObject *) self);
-}
-
-static PyObject *
-_forward_call(buffered *self, const char *name, PyObject *args)
-{
-    PyObject *func = PyObject_GetAttrString((PyObject *)self, name);
-    PyObject *ret;
-
-    if (func == NULL) {
-        PyErr_SetString(PyExc_AttributeError, name);
-        return NULL;
-    }
-
-    ret = PyObject_CallObject(func, args);
-    Py_DECREF(func);
-    return ret;
-}
-
-static PyObject *
-bufferedrwpair_read(rwpair *self, PyObject *args)
-{
-    return _forward_call(self->reader, "read", args);
-}
-
-static PyObject *
-bufferedrwpair_peek(rwpair *self, PyObject *args)
-{
-    return _forward_call(self->reader, "peek", args);
-}
-
-static PyObject *
-bufferedrwpair_read1(rwpair *self, PyObject *args)
-{
-    return _forward_call(self->reader, "read1", args);
-}
-
-static PyObject *
-bufferedrwpair_readinto(rwpair *self, PyObject *args)
-{
-    return _forward_call(self->reader, "readinto", args);
-}
-
-static PyObject *
-bufferedrwpair_write(rwpair *self, PyObject *args)
-{
-    return _forward_call(self->writer, "write", args);
-}
-
-static PyObject *
-bufferedrwpair_flush(rwpair *self, PyObject *args)
-{
-    return _forward_call(self->writer, "flush", args);
-}
-
-static PyObject *
-bufferedrwpair_readable(rwpair *self, PyObject *args)
-{
-    return _forward_call(self->reader, "readable", args);
-}
-
-static PyObject *
-bufferedrwpair_writable(rwpair *self, PyObject *args)
-{
-    return _forward_call(self->writer, "writable", args);
-}
-
-static PyObject *
-bufferedrwpair_close(rwpair *self, PyObject *args)
-{
-    PyObject *ret = _forward_call(self->writer, "close", args);
-    if (ret == NULL)
-        return NULL;
-    Py_DECREF(ret);
-
-    return _forward_call(self->reader, "close", args);
-}
-
-static PyObject *
-bufferedrwpair_isatty(rwpair *self, PyObject *args)
-{
-    PyObject *ret = _forward_call(self->writer, "isatty", args);
-
-    if (ret != Py_False) {
-        /* either True or exception */
-        return ret;
-    }
-    Py_DECREF(ret);
-
-    return _forward_call(self->reader, "isatty", args);
-}
-
-static PyObject *
-bufferedrwpair_closed_get(rwpair *self, void *context)
-{
-    return PyObject_GetAttr((PyObject *) self->writer, _PyIO_str_closed);
-}
-
-static PyMethodDef bufferedrwpair_methods[] = {
-    {"read", (PyCFunction)bufferedrwpair_read, METH_VARARGS},
-    {"peek", (PyCFunction)bufferedrwpair_peek, METH_VARARGS},
-    {"read1", (PyCFunction)bufferedrwpair_read1, METH_VARARGS},
-    {"readinto", (PyCFunction)bufferedrwpair_readinto, METH_VARARGS},
-
-    {"write", (PyCFunction)bufferedrwpair_write, METH_VARARGS},
-    {"flush", (PyCFunction)bufferedrwpair_flush, METH_NOARGS},
-
-    {"readable", (PyCFunction)bufferedrwpair_readable, METH_NOARGS},
-    {"writable", (PyCFunction)bufferedrwpair_writable, METH_NOARGS},
-
-    {"close", (PyCFunction)bufferedrwpair_close, METH_NOARGS},
-    {"isatty", (PyCFunction)bufferedrwpair_isatty, METH_NOARGS},
-
-    {NULL, NULL}
-};
-
-static PyGetSetDef bufferedrwpair_getset[] = {
-    {"closed", (getter)bufferedrwpair_closed_get, NULL, NULL},
-    {NULL}
-};
-
-PyTypeObject PyBufferedRWPair_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_io.BufferedRWPair",       /*tp_name*/
-    sizeof(rwpair),            /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    (destructor)bufferedrwpair_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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
-        | Py_TPFLAGS_HAVE_GC,   /* tp_flags */
-    bufferedrwpair_doc,         /* tp_doc */
-    (traverseproc)bufferedrwpair_traverse, /* tp_traverse */
-    (inquiry)bufferedrwpair_clear, /* tp_clear */
-    0,                          /* tp_richcompare */
-    offsetof(rwpair, weakreflist), /*tp_weaklistoffset*/
-    0,                          /* tp_iter */
-    0,                          /* tp_iternext */
-    bufferedrwpair_methods,     /* tp_methods */
-    0,                          /* tp_members */
-    bufferedrwpair_getset,      /* tp_getset */
-    0,                          /* tp_base */
-    0,                          /* tp_dict */
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    offsetof(rwpair, dict),     /* tp_dictoffset */
-    (initproc)bufferedrwpair_init, /* tp_init */
-    0,                          /* tp_alloc */
-    PyType_GenericNew,          /* tp_new */
-};
-\f
-
-
-/*
- * BufferedRandom
- */
-
-PyDoc_STRVAR(bufferedrandom_doc,
-    "A buffered interface to random access streams.\n"
-    "\n"
-    "The constructor creates a reader and writer for a seekable stream,\n"
-    "raw, given in the first argument. If the buffer_size is omitted it\n"
-    "defaults to DEFAULT_BUFFER_SIZE. max_buffer_size isn't used anymore.\n"
-    );
-
-static int
-bufferedrandom_init(buffered *self, PyObject *args, PyObject *kwds)
-{
-    char *kwlist[] = {"raw", "buffer_size", "max_buffer_size", NULL};
-    Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE;
-    Py_ssize_t max_buffer_size = -234;
-    PyObject *raw;
-
-    self->ok = 0;
-    self->detached = 0;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|nn:BufferedReader", kwlist,
-                                     &raw, &buffer_size, &max_buffer_size)) {
-        return -1;
-    }
-
-    if (max_buffer_size != -234 && !complain_about_max_buffer_size())
-        return -1;
-
-    if (_PyIOBase_check_seekable(raw, Py_True) == NULL)
-        return -1;
-    if (_PyIOBase_check_readable(raw, Py_True) == NULL)
-        return -1;
-    if (_PyIOBase_check_writable(raw, Py_True) == NULL)
-        return -1;
-
-    Py_CLEAR(self->raw);
-    Py_INCREF(raw);
-    self->raw = raw;
-    self->buffer_size = buffer_size;
-    self->readable = 1;
-    self->writable = 1;
-
-    if (_buffered_init(self) < 0)
-        return -1;
-    _bufferedreader_reset_buf(self);
-    _bufferedwriter_reset_buf(self);
-    self->pos = 0;
-
-    self->fast_closed_checks = (Py_TYPE(self) == &PyBufferedRandom_Type &&
-                                Py_TYPE(raw) == &PyFileIO_Type);
-
-    self->ok = 1;
-    return 0;
-}
-
-static PyMethodDef bufferedrandom_methods[] = {
-    /* BufferedIOMixin methods */
-    {"close", (PyCFunction)buffered_close, METH_NOARGS},
-    {"detach", (PyCFunction)buffered_detach, METH_NOARGS},
-    {"seekable", (PyCFunction)buffered_seekable, METH_NOARGS},
-    {"readable", (PyCFunction)buffered_readable, METH_NOARGS},
-    {"writable", (PyCFunction)buffered_writable, METH_NOARGS},
-    {"fileno", (PyCFunction)buffered_fileno, METH_NOARGS},
-    {"isatty", (PyCFunction)buffered_isatty, METH_NOARGS},
-
-    {"flush", (PyCFunction)buffered_flush, METH_NOARGS},
-
-    {"seek", (PyCFunction)buffered_seek, METH_VARARGS},
-    {"tell", (PyCFunction)buffered_tell, METH_NOARGS},
-    {"truncate", (PyCFunction)buffered_truncate, METH_VARARGS},
-    {"read", (PyCFunction)buffered_read, METH_VARARGS},
-    {"read1", (PyCFunction)buffered_read1, METH_VARARGS},
-    {"readinto", (PyCFunction)buffered_readinto, METH_VARARGS},
-    {"readline", (PyCFunction)buffered_readline, METH_VARARGS},
-    {"peek", (PyCFunction)buffered_peek, METH_VARARGS},
-    {"write", (PyCFunction)bufferedwriter_write, METH_VARARGS},
-    {NULL, NULL}
-};
-
-static PyMemberDef bufferedrandom_members[] = {
-    {"raw", T_OBJECT, offsetof(buffered, raw), READONLY},
-    {NULL}
-};
-
-static PyGetSetDef bufferedrandom_getset[] = {
-    {"closed", (getter)buffered_closed_get, NULL, NULL},
-    {"name", (getter)buffered_name_get, NULL, NULL},
-    {"mode", (getter)buffered_mode_get, NULL, NULL},
-    {NULL}
-};
-
-
-PyTypeObject PyBufferedRandom_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_io.BufferedRandom",       /*tp_name*/
-    sizeof(buffered),           /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    (destructor)buffered_dealloc,     /*tp_dealloc*/
-    0,                          /*tp_print*/
-    0,                          /*tp_getattr*/
-    0,                          /*tp_setattr*/
-    0,                          /*tp_compare */
-    (reprfunc)buffered_repr,    /*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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
-        | Py_TPFLAGS_HAVE_GC,   /*tp_flags*/
-    bufferedrandom_doc,         /* tp_doc */
-    (traverseproc)buffered_traverse, /* tp_traverse */
-    (inquiry)buffered_clear,    /* tp_clear */
-    0,                          /* tp_richcompare */
-    offsetof(buffered, weakreflist), /*tp_weaklistoffset*/
-    0,                          /* tp_iter */
-    (iternextfunc)buffered_iternext, /* tp_iternext */
-    bufferedrandom_methods,     /* tp_methods */
-    bufferedrandom_members,     /* tp_members */
-    bufferedrandom_getset,      /* tp_getset */
-    0,                          /* tp_base */
-    0,                          /*tp_dict*/
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    offsetof(buffered, dict), /*tp_dictoffset*/
-    (initproc)bufferedrandom_init, /* tp_init */
-    0,                          /* tp_alloc */
-    PyType_GenericNew,          /* tp_new */
-};
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/bytesio.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/bytesio.c
deleted file mode 100644
index 558287d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/bytesio.c
+++ /dev/null
@@ -1,887 +0,0 @@
-#include "Python.h"
-#include "structmember.h"       /* for offsetof() */
-#include "_iomodule.h"
-
-typedef struct {
-    PyObject_HEAD
-    char *buf;
-    Py_ssize_t pos;
-    Py_ssize_t string_size;
-    size_t buf_size;
-    PyObject *dict;
-    PyObject *weakreflist;
-} bytesio;
-
-#define CHECK_CLOSED(self)                                  \
-    if ((self)->buf == NULL) {                              \
-        PyErr_SetString(PyExc_ValueError,                   \
-                        "I/O operation on closed file.");   \
-        return NULL;                                        \
-    }
-
-/* Internal routine to get a line from the buffer of a BytesIO
-   object. Returns the length between the current position to the
-   next newline character. */
-static Py_ssize_t
-get_line(bytesio *self, char **output)
-{
-    char *n;
-    const char *str_end;
-    Py_ssize_t len;
-
-    assert(self->buf != NULL);
-
-    /* Move to the end of the line, up to the end of the string, s. */
-    str_end = self->buf + self->string_size;
-    for (n = self->buf + self->pos;
-         n < str_end && *n != '\n';
-         n++);
-
-    /* Skip the newline character */
-    if (n < str_end)
-        n++;
-
-    /* Get the length from the current position to the end of the line. */
-    len = n - (self->buf + self->pos);
-    *output = self->buf + self->pos;
-
-    assert(len >= 0);
-    assert(self->pos < PY_SSIZE_T_MAX - len);
-    self->pos += len;
-
-    return len;
-}
-
-/* Internal routine for changing the size of the buffer of BytesIO objects.
-   The caller should ensure that the 'size' argument is non-negative.  Returns
-   0 on success, -1 otherwise. */
-static int
-resize_buffer(bytesio *self, size_t size)
-{
-    /* Here, unsigned types are used to avoid dealing with signed integer
-       overflow, which is undefined in C. */
-    size_t alloc = self->buf_size;
-    char *new_buf = NULL;
-
-    assert(self->buf != NULL);
-
-    /* For simplicity, stay in the range of the signed type. Anyway, Python
-       doesn't allow strings to be longer than this. */
-    if (size > PY_SSIZE_T_MAX)
-        goto overflow;
-
-    if (size < alloc / 2) {
-        /* Major downsize; resize down to exact size. */
-        alloc = size + 1;
-    }
-    else if (size < alloc) {
-        /* Within allocated size; quick exit */
-        return 0;
-    }
-    else if (size <= alloc * 1.125) {
-        /* Moderate upsize; overallocate similar to list_resize() */
-        alloc = size + (size >> 3) + (size < 9 ? 3 : 6);
-    }
-    else {
-        /* Major upsize; resize up to exact size */
-        alloc = size + 1;
-    }
-
-    if (alloc > ((size_t)-1) / sizeof(char))
-        goto overflow;
-    new_buf = (char *)PyMem_Realloc(self->buf, alloc * sizeof(char));
-    if (new_buf == NULL) {
-        PyErr_NoMemory();
-        return -1;
-    }
-    self->buf_size = alloc;
-    self->buf = new_buf;
-
-    return 0;
-
-  overflow:
-    PyErr_SetString(PyExc_OverflowError,
-                    "new buffer size too large");
-    return -1;
-}
-
-/* Internal routine for writing a string of bytes to the buffer of a BytesIO
-   object. Returns the number of bytes wrote, or -1 on error. */
-static Py_ssize_t
-write_bytes(bytesio *self, const char *bytes, Py_ssize_t len)
-{
-    assert(self->buf != NULL);
-    assert(self->pos >= 0);
-    assert(len >= 0);
-
-    if ((size_t)self->pos + len > self->buf_size) {
-        if (resize_buffer(self, (size_t)self->pos + len) < 0)
-            return -1;
-    }
-
-    if (self->pos > self->string_size) {
-        /* In case of overseek, pad with null bytes the buffer region between
-           the end of stream and the current position.
-
-          0   lo      string_size                           hi
-          |   |<---used--->|<----------available----------->|
-          |   |            <--to pad-->|<---to write--->    |
-          0   buf                   position
-        */
-        memset(self->buf + self->string_size, '\0',
-               (self->pos - self->string_size) * sizeof(char));
-    }
-
-    /* Copy the data to the internal buffer, overwriting some of the existing
-       data if self->pos < self->string_size. */
-    memcpy(self->buf + self->pos, bytes, len);
-    self->pos += len;
-
-    /* Set the new length of the internal string if it has changed. */
-    if (self->string_size < self->pos) {
-        self->string_size = self->pos;
-    }
-
-    return len;
-}
-
-static PyObject *
-bytesio_get_closed(bytesio *self)
-{
-    if (self->buf == NULL) {
-        Py_RETURN_TRUE;
-    }
-    else {
-        Py_RETURN_FALSE;
-    }
-}
-
-/* Generic getter for the writable, readable and seekable properties */
-static PyObject *
-return_true(bytesio *self)
-{
-    Py_RETURN_TRUE;
-}
-
-PyDoc_STRVAR(flush_doc,
-"flush() -> None.  Does nothing.");
-
-static PyObject *
-bytesio_flush(bytesio *self)
-{
-    CHECK_CLOSED(self);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(getval_doc,
-"getvalue() -> bytes.\n"
-"\n"
-"Retrieve the entire contents of the BytesIO object.");
-
-static PyObject *
-bytesio_getvalue(bytesio *self)
-{
-    CHECK_CLOSED(self);
-    return PyBytes_FromStringAndSize(self->buf, self->string_size);
-}
-
-PyDoc_STRVAR(isatty_doc,
-"isatty() -> False.\n"
-"\n"
-"Always returns False since BytesIO objects are not connected\n"
-"to a tty-like device.");
-
-static PyObject *
-bytesio_isatty(bytesio *self)
-{
-    CHECK_CLOSED(self);
-    Py_RETURN_FALSE;
-}
-
-PyDoc_STRVAR(tell_doc,
-"tell() -> current file position, an integer\n");
-
-static PyObject *
-bytesio_tell(bytesio *self)
-{
-    CHECK_CLOSED(self);
-    return PyLong_FromSsize_t(self->pos);
-}
-
-PyDoc_STRVAR(read_doc,
-"read([size]) -> read at most size bytes, returned as a string.\n"
-"\n"
-"If the size argument is negative, read until EOF is reached.\n"
-"Return an empty string at EOF.");
-
-static PyObject *
-bytesio_read(bytesio *self, PyObject *args)
-{
-    Py_ssize_t size, n;
-    char *output;
-    PyObject *arg = Py_None;
-
-    CHECK_CLOSED(self);
-
-    if (!PyArg_ParseTuple(args, "|O:read", &arg))
-        return NULL;
-
-    if (PyNumber_Check(arg)) {
-        size = PyNumber_AsSsize_t(arg, PyExc_OverflowError);
-        if (size == -1 && PyErr_Occurred())
-            return NULL;
-    }
-    else if (arg == Py_None) {
-        /* Read until EOF is reached, by default. */
-        size = -1;
-    }
-    else {
-        PyErr_Format(PyExc_TypeError, "integer argument expected, got '%s'",
-                     Py_TYPE(arg)->tp_name);
-        return NULL;
-    }
-
-    /* adjust invalid sizes */
-    n = self->string_size - self->pos;
-    if (size < 0 || size > n) {
-        size = n;
-        if (size < 0)
-            size = 0;
-    }
-
-    assert(self->buf != NULL);
-    output = self->buf + self->pos;
-    self->pos += size;
-
-    return PyBytes_FromStringAndSize(output, size);
-}
-
-
-PyDoc_STRVAR(read1_doc,
-"read1(size) -> read at most size bytes, returned as a string.\n"
-"\n"
-"If the size argument is negative or omitted, read until EOF is reached.\n"
-"Return an empty string at EOF.");
-
-static PyObject *
-bytesio_read1(bytesio *self, PyObject *n)
-{
-    PyObject *arg, *res;
-
-    arg = PyTuple_Pack(1, n);
-    if (arg == NULL)
-        return NULL;
-    res  = bytesio_read(self, arg);
-    Py_DECREF(arg);
-    return res;
-}
-
-PyDoc_STRVAR(readline_doc,
-"readline([size]) -> next line from the file, as a string.\n"
-"\n"
-"Retain newline.  A non-negative size argument limits the maximum\n"
-"number of bytes to return (an incomplete line may be returned then).\n"
-"Return an empty string at EOF.\n");
-
-static PyObject *
-bytesio_readline(bytesio *self, PyObject *args)
-{
-    Py_ssize_t size, n;
-    char *output;
-    PyObject *arg = Py_None;
-
-    CHECK_CLOSED(self);
-
-    if (!PyArg_ParseTuple(args, "|O:readline", &arg))
-        return NULL;
-
-    if (PyNumber_Check(arg)) {
-        size = PyNumber_AsSsize_t(arg, PyExc_OverflowError);
-        if (size == -1 && PyErr_Occurred())
-            return NULL;
-    }
-    else if (arg == Py_None) {
-        /* No size limit, by default. */
-        size = -1;
-    }
-    else {
-        PyErr_Format(PyExc_TypeError, "integer argument expected, got '%s'",
-                     Py_TYPE(arg)->tp_name);
-        return NULL;
-    }
-
-    n = get_line(self, &output);
-
-    if (size >= 0 && size < n) {
-        size = n - size;
-        n -= size;
-        self->pos -= size;
-    }
-
-    return PyBytes_FromStringAndSize(output, n);
-}
-
-PyDoc_STRVAR(readlines_doc,
-"readlines([size]) -> list of strings, each a line from the file.\n"
-"\n"
-"Call readline() repeatedly and return a list of the lines so read.\n"
-"The optional size argument, if given, is an approximate bound on the\n"
-"total number of bytes in the lines returned.\n");
-
-static PyObject *
-bytesio_readlines(bytesio *self, PyObject *args)
-{
-    Py_ssize_t maxsize, size, n;
-    PyObject *result, *line;
-    char *output;
-    PyObject *arg = Py_None;
-
-    CHECK_CLOSED(self);
-
-    if (!PyArg_ParseTuple(args, "|O:readlines", &arg))
-        return NULL;
-
-    if (PyNumber_Check(arg)) {
-        maxsize = PyNumber_AsSsize_t(arg, PyExc_OverflowError);
-        if (maxsize == -1 && PyErr_Occurred())
-            return NULL;
-    }
-    else if (arg == Py_None) {
-        /* No size limit, by default. */
-        maxsize = -1;
-    }
-    else {
-        PyErr_Format(PyExc_TypeError, "integer argument expected, got '%s'",
-                     Py_TYPE(arg)->tp_name);
-        return NULL;
-    }
-
-    size = 0;
-    result = PyList_New(0);
-    if (!result)
-        return NULL;
-
-    while ((n = get_line(self, &output)) != 0) {
-        line = PyBytes_FromStringAndSize(output, n);
-        if (!line)
-            goto on_error;
-        if (PyList_Append(result, line) == -1) {
-            Py_DECREF(line);
-            goto on_error;
-        }
-        Py_DECREF(line);
-        size += n;
-        if (maxsize > 0 && size >= maxsize)
-            break;
-    }
-    return result;
-
-  on_error:
-    Py_DECREF(result);
-    return NULL;
-}
-
-PyDoc_STRVAR(readinto_doc,
-"readinto(bytearray) -> int.  Read up to len(b) bytes into b.\n"
-"\n"
-"Returns number of bytes read (0 for EOF), or None if the object\n"
-"is set not to block as has no data to read.");
-
-static PyObject *
-bytesio_readinto(bytesio *self, PyObject *args)
-{
-    Py_buffer buf;
-    Py_ssize_t len, n;
-
-    CHECK_CLOSED(self);
-
-    if (!PyArg_ParseTuple(args, "w*", &buf))
-        return NULL;
-
-    len = buf.len;
-    /* adjust invalid sizes */
-    n = self->string_size - self->pos;
-    if (len > n) {
-        len = n;
-        if (len < 0)
-            len = 0;
-    }
-
-    memcpy(buf.buf, self->buf + self->pos, len);
-    assert(self->pos + len < PY_SSIZE_T_MAX);
-    assert(len >= 0);
-    self->pos += len;
-
-    PyBuffer_Release(&buf);
-    return PyLong_FromSsize_t(len);
-}
-
-PyDoc_STRVAR(truncate_doc,
-"truncate([size]) -> int.  Truncate the file to at most size bytes.\n"
-"\n"
-"Size defaults to the current file position, as returned by tell().\n"
-"The current file position is unchanged.  Returns the new size.\n");
-
-static PyObject *
-bytesio_truncate(bytesio *self, PyObject *args)
-{
-    Py_ssize_t size;
-    PyObject *arg = Py_None;
-
-    CHECK_CLOSED(self);
-
-    if (!PyArg_ParseTuple(args, "|O:truncate", &arg))
-        return NULL;
-
-    if (PyNumber_Check(arg)) {
-        size = PyNumber_AsSsize_t(arg, PyExc_OverflowError);
-        if (size == -1 && PyErr_Occurred())
-            return NULL;
-    }
-    else if (arg == Py_None) {
-        /* Truncate to current position if no argument is passed. */
-        size = self->pos;
-    }
-    else {
-        PyErr_Format(PyExc_TypeError, "integer argument expected, got '%s'",
-                     Py_TYPE(arg)->tp_name);
-        return NULL;
-    }
-
-    if (size < 0) {
-        PyErr_Format(PyExc_ValueError,
-                     "negative size value %zd", size);
-        return NULL;
-    }
-
-    if (size < self->string_size) {
-        self->string_size = size;
-        if (resize_buffer(self, size) < 0)
-            return NULL;
-    }
-
-    return PyLong_FromSsize_t(size);
-}
-
-static PyObject *
-bytesio_iternext(bytesio *self)
-{
-    char *next;
-    Py_ssize_t n;
-
-    CHECK_CLOSED(self);
-
-    n = get_line(self, &next);
-
-    if (!next || n == 0)
-        return NULL;
-
-    return PyBytes_FromStringAndSize(next, n);
-}
-
-PyDoc_STRVAR(seek_doc,
-"seek(pos, whence=0) -> int.  Change stream position.\n"
-"\n"
-"Seek to byte offset pos relative to position indicated by whence:\n"
-"     0  Start of stream (the default).  pos should be >= 0;\n"
-"     1  Current position - pos may be negative;\n"
-"     2  End of stream - pos usually negative.\n"
-"Returns the new absolute position.");
-
-static PyObject *
-bytesio_seek(bytesio *self, PyObject *args)
-{
-    PyObject *posobj;
-    Py_ssize_t pos;
-    int mode = 0;
-
-    CHECK_CLOSED(self);
-
-    if (!PyArg_ParseTuple(args, "O|i:seek", &posobj, &mode))
-        return NULL;
-
-    pos = PyNumber_AsSsize_t(posobj, PyExc_OverflowError);
-    if (pos == -1 && PyErr_Occurred())
-        return NULL;
-    
-    if (pos < 0 && mode == 0) {
-        PyErr_Format(PyExc_ValueError,
-                     "negative seek value %zd", pos);
-        return NULL;
-    }
-
-    /* mode 0: offset relative to beginning of the string.
-       mode 1: offset relative to current position.
-       mode 2: offset relative the end of the string. */
-    if (mode == 1) {
-        if (pos > PY_SSIZE_T_MAX - self->pos) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "new position too large");
-            return NULL;
-        }
-        pos += self->pos;
-    }
-    else if (mode == 2) {
-        if (pos > PY_SSIZE_T_MAX - self->string_size) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "new position too large");
-            return NULL;
-        }
-        pos += self->string_size;
-    }
-    else if (mode != 0) {
-        PyErr_Format(PyExc_ValueError,
-                     "invalid whence (%i, should be 0, 1 or 2)", mode);
-        return NULL;
-    }
-
-    if (pos < 0)
-        pos = 0;
-    self->pos = pos;
-
-    return PyLong_FromSsize_t(self->pos);
-}
-
-PyDoc_STRVAR(write_doc,
-"write(bytes) -> int.  Write bytes to file.\n"
-"\n"
-"Return the number of bytes written.");
-
-static PyObject *
-bytesio_write(bytesio *self, PyObject *obj)
-{
-    Py_ssize_t n = 0;
-    Py_buffer buf;
-    PyObject *result = NULL;
-
-    CHECK_CLOSED(self);
-
-    if (PyObject_GetBuffer(obj, &buf, PyBUF_CONTIG_RO) < 0)
-        return NULL;
-
-    if (buf.len != 0)
-        n = write_bytes(self, buf.buf, buf.len);
-    if (n >= 0)
-        result = PyLong_FromSsize_t(n);
-
-    PyBuffer_Release(&buf);
-    return result;
-}
-
-PyDoc_STRVAR(writelines_doc,
-"writelines(sequence_of_strings) -> None.  Write strings to the file.\n"
-"\n"
-"Note that newlines are not added.  The sequence can be any iterable\n"
-"object producing strings. This is equivalent to calling write() for\n"
-"each string.");
-
-static PyObject *
-bytesio_writelines(bytesio *self, PyObject *v)
-{
-    PyObject *it, *item;
-    PyObject *ret;
-
-    CHECK_CLOSED(self);
-
-    it = PyObject_GetIter(v);
-    if (it == NULL)
-        return NULL;
-
-    while ((item = PyIter_Next(it)) != NULL) {
-        ret = bytesio_write(self, item);
-        Py_DECREF(item);
-        if (ret == NULL) {
-            Py_DECREF(it);
-            return NULL;
-        }
-        Py_DECREF(ret);
-    }
-    Py_DECREF(it);
-
-    /* See if PyIter_Next failed */
-    if (PyErr_Occurred())
-        return NULL;
-
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(close_doc,
-"close() -> None.  Disable all I/O operations.");
-
-static PyObject *
-bytesio_close(bytesio *self)
-{
-    if (self->buf != NULL) {
-        PyMem_Free(self->buf);
-        self->buf = NULL;
-    }
-    Py_RETURN_NONE;
-}
-
-/* Pickling support.
-
-   Note that only pickle protocol 2 and onward are supported since we use
-   extended __reduce__ API of PEP 307 to make BytesIO instances picklable.
-
-   Providing support for protocol < 2 would require the __reduce_ex__ method
-   which is notably long-winded when defined properly.
-
-   For BytesIO, the implementation would similar to one coded for
-   object.__reduce_ex__, but slightly less general. To be more specific, we
-   could call bytesio_getstate directly and avoid checking for the presence of
-   a fallback __reduce__ method. However, we would still need a __newobj__
-   function to use the efficient instance representation of PEP 307.
- */
-
-static PyObject *
-bytesio_getstate(bytesio *self)
-{
-    PyObject *initvalue = bytesio_getvalue(self);
-    PyObject *dict;
-    PyObject *state;
-
-    if (initvalue == NULL)
-        return NULL;
-    if (self->dict == NULL) {
-        Py_INCREF(Py_None);
-        dict = Py_None;
-    }
-    else {
-        dict = PyDict_Copy(self->dict);
-        if (dict == NULL)
-            return NULL;
-    }
-
-    state = Py_BuildValue("(OnN)", initvalue, self->pos, dict);
-    Py_DECREF(initvalue);
-    return state;
-}
-
-static PyObject *
-bytesio_setstate(bytesio *self, PyObject *state)
-{
-    PyObject *result;
-    PyObject *position_obj;
-    PyObject *dict;
-    Py_ssize_t pos;
-
-    assert(state != NULL);
-
-    /* We allow the state tuple to be longer than 3, because we may need
-       someday to extend the object's state without breaking
-       backward-compatibility. */
-    if (!PyTuple_Check(state) || Py_SIZE(state) < 3) {
-        PyErr_Format(PyExc_TypeError,
-                     "%.200s.__setstate__ argument should be 3-tuple, got %.200s",
-                     Py_TYPE(self)->tp_name, Py_TYPE(state)->tp_name);
-        return NULL;
-    }
-    /* Reset the object to its default state. This is only needed to handle
-       the case of repeated calls to __setstate__. */
-    self->string_size = 0;
-    self->pos = 0;
-
-    /* Set the value of the internal buffer. If state[0] does not support the
-       buffer protocol, bytesio_write will raise the appropriate TypeError. */
-    result = bytesio_write(self, PyTuple_GET_ITEM(state, 0));
-    if (result == NULL)
-        return NULL;
-    Py_DECREF(result);
-
-    /* Set carefully the position value. Alternatively, we could use the seek
-       method instead of modifying self->pos directly to better protect the
-       object internal state against errneous (or malicious) inputs. */
-    position_obj = PyTuple_GET_ITEM(state, 1);
-    if (!PyIndex_Check(position_obj)) {
-        PyErr_Format(PyExc_TypeError,
-                     "second item of state must be an integer, not %.200s",
-                     Py_TYPE(position_obj)->tp_name);
-        return NULL;
-    }
-    pos = PyNumber_AsSsize_t(position_obj, PyExc_OverflowError);
-    if (pos == -1 && PyErr_Occurred())
-        return NULL;
-    if (pos < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "position value cannot be negative");
-        return NULL;
-    }
-    self->pos = pos;
-
-    /* Set the dictionary of the instance variables. */
-    dict = PyTuple_GET_ITEM(state, 2);
-    if (dict != Py_None) {
-        if (!PyDict_Check(dict)) {
-            PyErr_Format(PyExc_TypeError,
-                         "third item of state should be a dict, got a %.200s",
-                         Py_TYPE(dict)->tp_name);
-            return NULL;
-        }
-        if (self->dict) {
-            /* Alternatively, we could replace the internal dictionary
-               completely. However, it seems more practical to just update it. */
-            if (PyDict_Update(self->dict, dict) < 0)
-                return NULL;
-        }
-        else {
-            Py_INCREF(dict);
-            self->dict = dict;
-        }
-    }
-
-    Py_RETURN_NONE;
-}
-
-static void
-bytesio_dealloc(bytesio *self)
-{
-    _PyObject_GC_UNTRACK(self);
-    if (self->buf != NULL) {
-        PyMem_Free(self->buf);
-        self->buf = NULL;
-    }
-    Py_CLEAR(self->dict);
-    if (self->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) self);
-    Py_TYPE(self)->tp_free(self);
-}
-
-static PyObject *
-bytesio_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    bytesio *self;
-
-    assert(type != NULL && type->tp_alloc != NULL);
-    self = (bytesio *)type->tp_alloc(type, 0);
-    if (self == NULL)
-        return NULL;
-
-    /* tp_alloc initializes all the fields to zero. So we don't have to
-       initialize them here. */
-
-    self->buf = (char *)PyMem_Malloc(0);
-    if (self->buf == NULL) {
-        Py_DECREF(self);
-        return PyErr_NoMemory();
-    }
-
-    return (PyObject *)self;
-}
-
-static int
-bytesio_init(bytesio *self, PyObject *args, PyObject *kwds)
-{
-    char *kwlist[] = {"initial_bytes", NULL};
-    PyObject *initvalue = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:BytesIO", kwlist,
-                                     &initvalue))
-        return -1;
-
-    /* In case, __init__ is called multiple times. */
-    self->string_size = 0;
-    self->pos = 0;
-
-    if (initvalue && initvalue != Py_None) {
-        PyObject *res;
-        res = bytesio_write(self, initvalue);
-        if (res == NULL)
-            return -1;
-        Py_DECREF(res);
-        self->pos = 0;
-    }
-
-    return 0;
-}
-
-static int
-bytesio_traverse(bytesio *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->dict);
-    return 0;
-}
-
-static int
-bytesio_clear(bytesio *self)
-{
-    Py_CLEAR(self->dict);
-    return 0;
-}
-
-
-static PyGetSetDef bytesio_getsetlist[] = {
-    {"closed",  (getter)bytesio_get_closed, NULL,
-     "True if the file is closed."},
-    {NULL},            /* sentinel */
-};
-
-static struct PyMethodDef bytesio_methods[] = {
-    {"readable",   (PyCFunction)return_true,        METH_NOARGS, NULL},
-    {"seekable",   (PyCFunction)return_true,        METH_NOARGS, NULL},
-    {"writable",   (PyCFunction)return_true,        METH_NOARGS, NULL},
-    {"close",      (PyCFunction)bytesio_close,      METH_NOARGS, close_doc},
-    {"flush",      (PyCFunction)bytesio_flush,      METH_NOARGS, flush_doc},
-    {"isatty",     (PyCFunction)bytesio_isatty,     METH_NOARGS, isatty_doc},
-    {"tell",       (PyCFunction)bytesio_tell,       METH_NOARGS, tell_doc},
-    {"write",      (PyCFunction)bytesio_write,      METH_O, write_doc},
-    {"writelines", (PyCFunction)bytesio_writelines, METH_O, writelines_doc},
-    {"read1",      (PyCFunction)bytesio_read1,      METH_O, read1_doc},
-    {"readinto",   (PyCFunction)bytesio_readinto,   METH_VARARGS, readinto_doc},
-    {"readline",   (PyCFunction)bytesio_readline,   METH_VARARGS, readline_doc},
-    {"readlines",  (PyCFunction)bytesio_readlines,  METH_VARARGS, readlines_doc},
-    {"read",       (PyCFunction)bytesio_read,       METH_VARARGS, read_doc},
-    {"getvalue",   (PyCFunction)bytesio_getvalue,   METH_NOARGS,  getval_doc},
-    {"seek",       (PyCFunction)bytesio_seek,       METH_VARARGS, seek_doc},
-    {"truncate",   (PyCFunction)bytesio_truncate,   METH_VARARGS, truncate_doc},
-    {"__getstate__",  (PyCFunction)bytesio_getstate,  METH_NOARGS, NULL},
-    {"__setstate__",  (PyCFunction)bytesio_setstate,  METH_O, NULL},
-    {NULL, NULL}        /* sentinel */
-};
-
-PyDoc_STRVAR(bytesio_doc,
-"BytesIO([buffer]) -> object\n"
-"\n"
-"Create a buffered I/O implementation using an in-memory bytes\n"
-"buffer, ready for reading and writing.");
-
-PyTypeObject PyBytesIO_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_io.BytesIO",                             /*tp_name*/
-    sizeof(bytesio),                     /*tp_basicsize*/
-    0,                                         /*tp_itemsize*/
-    (destructor)bytesio_dealloc,               /*tp_dealloc*/
-    0,                                         /*tp_print*/
-    0,                                         /*tp_getattr*/
-    0,                                         /*tp_setattr*/
-    0,                                         /*tp_reserved*/
-    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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |
-    Py_TPFLAGS_HAVE_GC,                        /*tp_flags*/
-    bytesio_doc,                               /*tp_doc*/
-    (traverseproc)bytesio_traverse,            /*tp_traverse*/
-    (inquiry)bytesio_clear,                    /*tp_clear*/
-    0,                                         /*tp_richcompare*/
-    offsetof(bytesio, weakreflist),      /*tp_weaklistoffset*/
-    PyObject_SelfIter,                         /*tp_iter*/
-    (iternextfunc)bytesio_iternext,            /*tp_iternext*/
-    bytesio_methods,                           /*tp_methods*/
-    0,                                         /*tp_members*/
-    bytesio_getsetlist,                        /*tp_getset*/
-    0,                                         /*tp_base*/
-    0,                                         /*tp_dict*/
-    0,                                         /*tp_descr_get*/
-    0,                                         /*tp_descr_set*/
-    offsetof(bytesio, dict),             /*tp_dictoffset*/
-    (initproc)bytesio_init,                    /*tp_init*/
-    0,                                         /*tp_alloc*/
-    bytesio_new,                               /*tp_new*/
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/fileio.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/fileio.c
deleted file mode 100644
index 6af6ec7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/fileio.c
+++ /dev/null
@@ -1,1095 +0,0 @@
-/* Author: Daniel Stutzbach */
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#include <stddef.h> /* For offsetof */
-#include "_iomodule.h"
-
-/*
- * Known likely problems:
- *
- * - Files larger then 2**32-1
- * - Files with unicode filenames
- * - Passing numbers greater than 2**32-1 when an integer is expected
- * - Making it work on Windows and other oddball platforms
- *
- * To Do:
- *
- * - autoconfify header file inclusion
- */
-
-#ifdef MS_WINDOWS
-/* can simulate truncate with Win32 API functions; see file_truncate */
-#define HAVE_FTRUNCATE
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#endif
-
-#if BUFSIZ < (8*1024)
-#define SMALLCHUNK (8*1024)
-#elif (BUFSIZ >= (2 << 25))
-#error "unreasonable BUFSIZ > 64MB defined"
-#else
-#define SMALLCHUNK BUFSIZ
-#endif
-
-#if SIZEOF_INT < 4
-#define BIGCHUNK  (512 * 32)
-#else
-#define BIGCHUNK  (512 * 1024)
-#endif
-
-typedef struct {
-    PyObject_HEAD
-    int fd;
-    unsigned int readable : 1;
-    unsigned int writable : 1;
-    signed int seekable : 2; /* -1 means unknown */
-    unsigned int closefd : 1;
-    PyObject *weakreflist;
-    PyObject *dict;
-} fileio;
-
-PyTypeObject PyFileIO_Type;
-
-#define PyFileIO_Check(op) (PyObject_TypeCheck((op), &PyFileIO_Type))
-
-int
-_PyFileIO_closed(PyObject *self)
-{
-    return ((fileio *)self)->fd < 0;
-}
-
-static PyObject *
-portable_lseek(int fd, PyObject *posobj, int whence);
-
-static PyObject *portable_lseek(int fd, PyObject *posobj, int whence);
-
-/* Returns 0 on success, -1 with exception set on failure. */
-static int
-internal_close(fileio *self)
-{
-    int err = 0;
-    int save_errno = 0;
-    if (self->fd >= 0) {
-        int fd = self->fd;
-        self->fd = -1;
-        /* fd is accessible and someone else may have closed it */
-        if (_PyVerify_fd(fd)) {
-            Py_BEGIN_ALLOW_THREADS
-            err = close(fd);
-            if (err < 0)
-                save_errno = errno;
-            Py_END_ALLOW_THREADS
-        } else {
-            save_errno = errno;
-            err = -1;
-        }
-    }
-    if (err < 0) {
-        errno = save_errno;
-        PyErr_SetFromErrno(PyExc_IOError);
-        return -1;
-    }
-    return 0;
-}
-
-static PyObject *
-fileio_close(fileio *self)
-{
-    if (!self->closefd) {
-        self->fd = -1;
-        Py_RETURN_NONE;
-    }
-    errno = internal_close(self);
-    if (errno < 0)
-        return NULL;
-
-    return PyObject_CallMethod((PyObject*)&PyRawIOBase_Type,
-                               "close", "O", self);
-}
-
-static PyObject *
-fileio_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    fileio *self;
-
-    assert(type != NULL && type->tp_alloc != NULL);
-
-    self = (fileio *) type->tp_alloc(type, 0);
-    if (self != NULL) {
-        self->fd = -1;
-        self->readable = 0;
-        self->writable = 0;
-        self->seekable = -1;
-        self->closefd = 1;
-        self->weakreflist = NULL;
-    }
-
-    return (PyObject *) self;
-}
-
-/* On Unix, open will succeed for directories.
-   In Python, there should be no file objects referring to
-   directories, so we need a check.  */
-
-static int
-dircheck(fileio* self, const char *name)
-{
-#if defined(HAVE_FSTAT) && defined(S_IFDIR) && defined(EISDIR)
-    struct stat buf;
-    if (self->fd < 0)
-        return 0;
-    if (fstat(self->fd, &buf) == 0 && S_ISDIR(buf.st_mode)) {
-        char *msg = strerror(EISDIR);
-        PyObject *exc;
-        if (internal_close(self))
-            return -1;
-
-        exc = PyObject_CallFunction(PyExc_IOError, "(iss)",
-                                    EISDIR, msg, name);
-        PyErr_SetObject(PyExc_IOError, exc);
-        Py_XDECREF(exc);
-        return -1;
-    }
-#endif
-    return 0;
-}
-
-static int
-check_fd(int fd)
-{
-#if defined(HAVE_FSTAT)
-    struct stat buf;
-    if (!_PyVerify_fd(fd) || (fstat(fd, &buf) < 0 && errno == EBADF)) {
-        PyObject *exc;
-        char *msg = strerror(EBADF);
-        exc = PyObject_CallFunction(PyExc_OSError, "(is)",
-                                    EBADF, msg);
-        PyErr_SetObject(PyExc_OSError, exc);
-        Py_XDECREF(exc);
-        return -1;
-    }
-#endif
-    return 0;
-}
-
-
-static int
-fileio_init(PyObject *oself, PyObject *args, PyObject *kwds)
-{
-    fileio *self = (fileio *) oself;
-    static char *kwlist[] = {"file", "mode", "closefd", NULL};
-    const char *name = NULL;
-    PyObject *nameobj, *stringobj = NULL;
-    char *mode = "r";
-    char *s;
-#ifdef MS_WINDOWS
-    Py_UNICODE *widename = NULL;
-#endif
-    int ret = 0;
-    int rwa = 0, plus = 0, append = 0;
-    int flags = 0;
-    int fd = -1;
-    int closefd = 1;
-
-    assert(PyFileIO_Check(oself));
-    if (self->fd >= 0) {
-        /* Have to close the existing file first. */
-        if (internal_close(self) < 0)
-            return -1;
-    }
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|si:fileio",
-                                     kwlist, &nameobj, &mode, &closefd))
-        return -1;
-
-    if (PyFloat_Check(nameobj)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "integer argument expected, got float");
-        return -1;
-    }
-
-    fd = PyLong_AsLong(nameobj);
-    if (fd < 0) {
-        if (!PyErr_Occurred()) {
-            PyErr_SetString(PyExc_ValueError,
-                            "Negative filedescriptor");
-            return -1;
-        }
-        PyErr_Clear();
-    }
-
-#ifdef MS_WINDOWS
-    if (PyUnicode_Check(nameobj))
-        widename = PyUnicode_AS_UNICODE(nameobj);
-    if (widename == NULL)
-#endif
-    if (fd < 0)
-    {
-        if (PyBytes_Check(nameobj) || PyByteArray_Check(nameobj)) {
-            Py_ssize_t namelen;
-            if (PyObject_AsCharBuffer(nameobj, &name, &namelen) < 0)
-                return -1;
-        }
-        else {
-            PyObject *u = PyUnicode_FromObject(nameobj);
-
-            if (u == NULL)
-                return -1;
-
-            stringobj = PyUnicode_AsEncodedString(
-                u, Py_FileSystemDefaultEncoding, NULL);
-            Py_DECREF(u);
-            if (stringobj == NULL)
-                return -1;
-            if (!PyBytes_Check(stringobj)) {
-                PyErr_SetString(PyExc_TypeError,
-                                "encoder failed to return bytes");
-                goto error;
-            }
-            name = PyBytes_AS_STRING(stringobj);
-        }
-    }
-
-    s = mode;
-    while (*s) {
-        switch (*s++) {
-        case 'r':
-            if (rwa) {
-            bad_mode:
-                PyErr_SetString(PyExc_ValueError,
-                                "Must have exactly one of read/write/append "
-                                "mode and at most one plus");
-                goto error;
-            }
-            rwa = 1;
-            self->readable = 1;
-            break;
-        case 'w':
-            if (rwa)
-                goto bad_mode;
-            rwa = 1;
-            self->writable = 1;
-            flags |= O_CREAT | O_TRUNC;
-            break;
-        case 'a':
-            if (rwa)
-                goto bad_mode;
-            rwa = 1;
-            self->writable = 1;
-            flags |= O_CREAT;
-            append = 1;
-            break;
-        case 'b':
-            break;
-        case '+':
-            if (plus)
-                goto bad_mode;
-            self->readable = self->writable = 1;
-            plus = 1;
-            break;
-        default:
-            PyErr_Format(PyExc_ValueError,
-                         "invalid mode: %.200s", mode);
-            goto error;
-        }
-    }
-
-    if (!rwa)
-        goto bad_mode;
-
-    if (self->readable && self->writable)
-        flags |= O_RDWR;
-    else if (self->readable)
-        flags |= O_RDONLY;
-    else
-        flags |= O_WRONLY;
-
-#ifdef O_BINARY
-    flags |= O_BINARY;
-#endif
-
-#ifdef O_APPEND
-    if (append)
-        flags |= O_APPEND;
-#endif
-
-    if (fd >= 0) {
-        if (check_fd(fd))
-            goto error;
-        self->fd = fd;
-        self->closefd = closefd;
-    }
-    else {
-        self->closefd = 1;
-        if (!closefd) {
-            PyErr_SetString(PyExc_ValueError,
-                "Cannot use closefd=False with file name");
-            goto error;
-        }
-
-        Py_BEGIN_ALLOW_THREADS
-        errno = 0;
-#ifdef MS_WINDOWS
-        if (widename != NULL)
-            self->fd = _wopen(widename, flags, 0666);
-        else
-#endif
-            self->fd = open(name, flags, 0666);
-        Py_END_ALLOW_THREADS
-        if (self->fd < 0) {
-#ifdef MS_WINDOWS
-            if (widename != NULL)
-                PyErr_SetFromErrnoWithUnicodeFilename(PyExc_IOError, widename);
-            else
-#endif
-                PyErr_SetFromErrnoWithFilename(PyExc_IOError, name);
-            goto error;
-        }
-        if(dircheck(self, name) < 0)
-            goto error;
-    }
-
-    if (PyObject_SetAttrString((PyObject *)self, "name", nameobj) < 0)
-        goto error;
-
-    if (append) {
-        /* For consistent behaviour, we explicitly seek to the
-           end of file (otherwise, it might be done only on the
-           first write()). */
-        PyObject *pos = portable_lseek(self->fd, NULL, 2);
-        if (pos == NULL) {
-            if (closefd) {
-                close(self->fd);
-                self->fd = -1;
-            }
-            goto error;
-        }
-        Py_DECREF(pos);
-    }
-
-    goto done;
-
- error:
-    ret = -1;
-
- done:
-    Py_CLEAR(stringobj);
-    return ret;
-}
-
-static int
-fileio_traverse(fileio *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->dict);
-    return 0;
-}
-
-static int
-fileio_clear(fileio *self)
-{
-    Py_CLEAR(self->dict);
-    return 0;
-}
-
-static void
-fileio_dealloc(fileio *self)
-{
-    if (_PyIOBase_finalize((PyObject *) self) < 0)
-        return;
-    _PyObject_GC_UNTRACK(self);
-    if (self->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) self);
-    Py_CLEAR(self->dict);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-static PyObject *
-err_closed(void)
-{
-    PyErr_SetString(PyExc_ValueError, "I/O operation on closed file");
-    return NULL;
-}
-
-static PyObject *
-err_mode(char *action)
-{
-    PyErr_Format(PyExc_ValueError, "File not open for %s", action);
-    return NULL;
-}
-
-static PyObject *
-fileio_fileno(fileio *self)
-{
-    if (self->fd < 0)
-        return err_closed();
-    return PyInt_FromLong((long) self->fd);
-}
-
-static PyObject *
-fileio_readable(fileio *self)
-{
-    if (self->fd < 0)
-        return err_closed();
-    return PyBool_FromLong((long) self->readable);
-}
-
-static PyObject *
-fileio_writable(fileio *self)
-{
-    if (self->fd < 0)
-        return err_closed();
-    return PyBool_FromLong((long) self->writable);
-}
-
-static PyObject *
-fileio_seekable(fileio *self)
-{
-    if (self->fd < 0)
-        return err_closed();
-    if (self->seekable < 0) {
-        PyObject *pos = portable_lseek(self->fd, NULL, SEEK_CUR);
-        if (pos == NULL) {
-            PyErr_Clear();
-            self->seekable = 0;
-        } else {
-            Py_DECREF(pos);
-            self->seekable = 1;
-        }
-    }
-    return PyBool_FromLong((long) self->seekable);
-}
-
-static PyObject *
-fileio_readinto(fileio *self, PyObject *args)
-{
-    Py_buffer pbuf;
-    Py_ssize_t n;
-
-    if (self->fd < 0)
-        return err_closed();
-    if (!self->readable)
-        return err_mode("reading");
-
-    if (!PyArg_ParseTuple(args, "w*", &pbuf))
-        return NULL;
-
-    if (_PyVerify_fd(self->fd)) {
-        Py_BEGIN_ALLOW_THREADS
-        errno = 0;
-        n = read(self->fd, pbuf.buf, pbuf.len);
-        Py_END_ALLOW_THREADS
-    } else
-        n = -1;
-    PyBuffer_Release(&pbuf);
-    if (n < 0) {
-        if (errno == EAGAIN)
-            Py_RETURN_NONE;
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-
-    return PyLong_FromSsize_t(n);
-}
-
-static size_t
-new_buffersize(fileio *self, size_t currentsize)
-{
-#ifdef HAVE_FSTAT
-    off_t pos, end;
-    struct stat st;
-    if (fstat(self->fd, &st) == 0) {
-        end = st.st_size;
-        pos = lseek(self->fd, 0L, SEEK_CUR);
-        /* Files claiming a size smaller than SMALLCHUNK may
-           actually be streaming pseudo-files. In this case, we
-           apply the more aggressive algorithm below.
-        */
-        if (end >= SMALLCHUNK && end >= pos && pos >= 0) {
-            /* Add 1 so if the file were to grow we'd notice. */
-            return currentsize + end - pos + 1;
-        }
-    }
-#endif
-    if (currentsize > SMALLCHUNK) {
-        /* Keep doubling until we reach BIGCHUNK;
-           then keep adding BIGCHUNK. */
-        if (currentsize <= BIGCHUNK)
-            return currentsize + currentsize;
-        else
-            return currentsize + BIGCHUNK;
-    }
-    return currentsize + SMALLCHUNK;
-}
-
-static PyObject *
-fileio_readall(fileio *self)
-{
-    PyObject *result;
-    Py_ssize_t total = 0;
-    int n;
-
-    if (self->fd < 0)
-        return err_closed();
-    if (!_PyVerify_fd(self->fd))
-        return PyErr_SetFromErrno(PyExc_IOError);
-
-    result = PyBytes_FromStringAndSize(NULL, SMALLCHUNK);
-    if (result == NULL)
-        return NULL;
-
-    while (1) {
-        size_t newsize = new_buffersize(self, total);
-        if (newsize > PY_SSIZE_T_MAX || newsize <= 0) {
-            PyErr_SetString(PyExc_OverflowError,
-                "unbounded read returned more bytes "
-                "than a Python string can hold ");
-            Py_DECREF(result);
-            return NULL;
-        }
-
-        if (PyBytes_GET_SIZE(result) < (Py_ssize_t)newsize) {
-            if (_PyBytes_Resize(&result, newsize) < 0) {
-                if (total == 0) {
-                    Py_DECREF(result);
-                    return NULL;
-                }
-                PyErr_Clear();
-                break;
-            }
-        }
-        Py_BEGIN_ALLOW_THREADS
-        errno = 0;
-        n = read(self->fd,
-                 PyBytes_AS_STRING(result) + total,
-                 newsize - total);
-        Py_END_ALLOW_THREADS
-        if (n == 0)
-            break;
-        if (n < 0) {
-            if (total > 0)
-                break;
-            if (errno == EAGAIN) {
-                Py_DECREF(result);
-                Py_RETURN_NONE;
-            }
-            Py_DECREF(result);
-            PyErr_SetFromErrno(PyExc_IOError);
-            return NULL;
-        }
-        total += n;
-    }
-
-    if (PyBytes_GET_SIZE(result) > total) {
-        if (_PyBytes_Resize(&result, total) < 0) {
-            /* This should never happen, but just in case */
-            Py_DECREF(result);
-            return NULL;
-        }
-    }
-    return result;
-}
-
-static PyObject *
-fileio_read(fileio *self, PyObject *args)
-{
-    char *ptr;
-    Py_ssize_t n;
-    Py_ssize_t size = -1;
-    PyObject *bytes;
-
-    if (self->fd < 0)
-        return err_closed();
-    if (!self->readable)
-        return err_mode("reading");
-
-    if (!PyArg_ParseTuple(args, "|O&", &_PyIO_ConvertSsize_t, &size))
-        return NULL;
-
-    if (size < 0) {
-        return fileio_readall(self);
-    }
-
-    bytes = PyBytes_FromStringAndSize(NULL, size);
-    if (bytes == NULL)
-        return NULL;
-    ptr = PyBytes_AS_STRING(bytes);
-
-    if (_PyVerify_fd(self->fd)) {
-        Py_BEGIN_ALLOW_THREADS
-        errno = 0;
-        n = read(self->fd, ptr, size);
-        Py_END_ALLOW_THREADS
-    } else
-        n = -1;
-
-    if (n < 0) {
-        Py_DECREF(bytes);
-        if (errno == EAGAIN)
-            Py_RETURN_NONE;
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-
-    if (n != size) {
-        if (_PyBytes_Resize(&bytes, n) < 0) {
-            Py_DECREF(bytes);
-            return NULL;
-        }
-    }
-
-    return (PyObject *) bytes;
-}
-
-static PyObject *
-fileio_write(fileio *self, PyObject *args)
-{
-    Py_buffer pbuf;
-    Py_ssize_t n;
-
-    if (self->fd < 0)
-        return err_closed();
-    if (!self->writable)
-        return err_mode("writing");
-
-    if (!PyArg_ParseTuple(args, "s*", &pbuf))
-        return NULL;
-
-    if (_PyVerify_fd(self->fd)) {
-        Py_BEGIN_ALLOW_THREADS
-        errno = 0;
-        n = write(self->fd, pbuf.buf, pbuf.len);
-        Py_END_ALLOW_THREADS
-    } else
-        n = -1;
-
-    PyBuffer_Release(&pbuf);
-
-    if (n < 0) {
-        if (errno == EAGAIN)
-            Py_RETURN_NONE;
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-
-    return PyLong_FromSsize_t(n);
-}
-
-/* XXX Windows support below is likely incomplete */
-
-/* Cribbed from posix_lseek() */
-static PyObject *
-portable_lseek(int fd, PyObject *posobj, int whence)
-{
-    Py_off_t pos, res;
-
-#ifdef SEEK_SET
-    /* Turn 0, 1, 2 into SEEK_{SET,CUR,END} */
-    switch (whence) {
-#if SEEK_SET != 0
-    case 0: whence = SEEK_SET; break;
-#endif
-#if SEEK_CUR != 1
-    case 1: whence = SEEK_CUR; break;
-#endif
-#if SEEK_END != 2
-    case 2: whence = SEEK_END; break;
-#endif
-    }
-#endif /* SEEK_SET */
-
-    if (posobj == NULL)
-        pos = 0;
-    else {
-        if(PyFloat_Check(posobj)) {
-            PyErr_SetString(PyExc_TypeError, "an integer is required");
-            return NULL;
-        }
-#if defined(HAVE_LARGEFILE_SUPPORT)
-        pos = PyLong_AsLongLong(posobj);
-#else
-        pos = PyLong_AsLong(posobj);
-#endif
-        if (PyErr_Occurred())
-            return NULL;
-    }
-
-    if (_PyVerify_fd(fd)) {
-        Py_BEGIN_ALLOW_THREADS
-#if defined(MS_WIN64) || defined(MS_WINDOWS)
-        res = _lseeki64(fd, pos, whence);
-#else
-        res = lseek(fd, pos, whence);
-#endif
-        Py_END_ALLOW_THREADS
-    } else
-        res = -1;
-    if (res < 0)
-        return PyErr_SetFromErrno(PyExc_IOError);
-
-#if defined(HAVE_LARGEFILE_SUPPORT)
-    return PyLong_FromLongLong(res);
-#else
-    return PyLong_FromLong(res);
-#endif
-}
-
-static PyObject *
-fileio_seek(fileio *self, PyObject *args)
-{
-    PyObject *posobj;
-    int whence = 0;
-
-    if (self->fd < 0)
-        return err_closed();
-
-    if (!PyArg_ParseTuple(args, "O|i", &posobj, &whence))
-        return NULL;
-
-    return portable_lseek(self->fd, posobj, whence);
-}
-
-static PyObject *
-fileio_tell(fileio *self, PyObject *args)
-{
-    if (self->fd < 0)
-        return err_closed();
-
-    return portable_lseek(self->fd, NULL, 1);
-}
-
-#ifdef HAVE_FTRUNCATE
-static PyObject *
-fileio_truncate(fileio *self, PyObject *args)
-{
-    PyObject *posobj = NULL; /* the new size wanted by the user */
-#ifndef MS_WINDOWS
-    Py_off_t pos;
-#endif
-    int ret;
-    int fd;
-
-    fd = self->fd;
-    if (fd < 0)
-        return err_closed();
-    if (!self->writable)
-        return err_mode("writing");
-
-    if (!PyArg_ParseTuple(args, "|O", &posobj))
-        return NULL;
-
-    if (posobj == Py_None || posobj == NULL) {
-        /* Get the current position. */
-        posobj = portable_lseek(fd, NULL, 1);
-        if (posobj == NULL)
-            return NULL;
-    }
-    else {
-        Py_INCREF(posobj);
-    }
-
-#ifdef MS_WINDOWS
-    /* MS _chsize doesn't work if newsize doesn't fit in 32 bits,
-       so don't even try using it. */
-    {
-        PyObject *oldposobj, *tempposobj;
-        HANDLE hFile;
-
-        /* we save the file pointer position */
-        oldposobj = portable_lseek(fd, NULL, 1);
-        if (oldposobj == NULL) {
-            Py_DECREF(posobj);
-            return NULL;
-        }
-
-        /* we then move to the truncation position */
-        tempposobj = portable_lseek(fd, posobj, 0);
-        if (tempposobj == NULL) {
-            Py_DECREF(oldposobj);
-            Py_DECREF(posobj);
-            return NULL;
-        }
-        Py_DECREF(tempposobj);
-
-        /* Truncate.  Note that this may grow the file! */
-        Py_BEGIN_ALLOW_THREADS
-        errno = 0;
-        hFile = (HANDLE)_get_osfhandle(fd);
-        ret = hFile == (HANDLE)-1; /* testing for INVALID_HANDLE value */
-        if (ret == 0) {
-            ret = SetEndOfFile(hFile) == 0;
-            if (ret)
-                errno = EACCES;
-        }
-        Py_END_ALLOW_THREADS
-
-        /* we restore the file pointer position in any case */
-        tempposobj = portable_lseek(fd, oldposobj, 0);
-        Py_DECREF(oldposobj);
-        if (tempposobj == NULL) {
-            Py_DECREF(posobj);
-            return NULL;
-        }
-        Py_DECREF(tempposobj);
-    }
-#else
-
-#if defined(HAVE_LARGEFILE_SUPPORT)
-    pos = PyLong_AsLongLong(posobj);
-#else
-    pos = PyLong_AsLong(posobj);
-#endif
-    if (PyErr_Occurred()){
-        Py_DECREF(posobj);
-        return NULL;
-    }
-
-    Py_BEGIN_ALLOW_THREADS
-    errno = 0;
-    ret = ftruncate(fd, pos);
-    Py_END_ALLOW_THREADS
-
-#endif /* !MS_WINDOWS */
-
-    if (ret != 0) {
-        Py_DECREF(posobj);
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-
-    return posobj;
-}
-#endif /* HAVE_FTRUNCATE */
-
-static char *
-mode_string(fileio *self)
-{
-    if (self->readable) {
-        if (self->writable)
-            return "rb+";
-        else
-            return "rb";
-    }
-    else
-        return "wb";
-}
-
-static PyObject *
-fileio_repr(fileio *self)
-{
-    PyObject *nameobj, *res;
-
-    if (self->fd < 0)
-        return PyString_FromFormat("<_io.FileIO [closed]>");
-
-    nameobj = PyObject_GetAttrString((PyObject *) self, "name");
-    if (nameobj == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_AttributeError))
-            PyErr_Clear();
-        else
-            return NULL;
-        res = PyString_FromFormat("<_io.FileIO fd=%d mode='%s'>",
-                                   self->fd, mode_string(self));
-    }
-    else {
-        PyObject *repr = PyObject_Repr(nameobj);
-        Py_DECREF(nameobj);
-        if (repr == NULL)
-            return NULL;
-        res = PyString_FromFormat("<_io.FileIO name=%s mode='%s'>",
-                                   PyString_AS_STRING(repr),
-                                   mode_string(self));
-        Py_DECREF(repr);
-    }
-    return res;
-}
-
-static PyObject *
-fileio_isatty(fileio *self)
-{
-    long res;
-
-    if (self->fd < 0)
-        return err_closed();
-    Py_BEGIN_ALLOW_THREADS
-    res = isatty(self->fd);
-    Py_END_ALLOW_THREADS
-    return PyBool_FromLong(res);
-}
-
-
-PyDoc_STRVAR(fileio_doc,
-"file(name: str[, mode: str]) -> file IO object\n"
-"\n"
-"Open a file.  The mode can be 'r', 'w' or 'a' for reading (default),\n"
-"writing or appending.  The file will be created if it doesn't exist\n"
-"when opened for writing or appending; it will be truncated when\n"
-"opened for writing.  Add a '+' to the mode to allow simultaneous\n"
-"reading and writing.");
-
-PyDoc_STRVAR(read_doc,
-"read(size: int) -> bytes.  read at most size bytes, returned as bytes.\n"
-"\n"
-"Only makes one system call, so less data may be returned than requested\n"
-"In non-blocking mode, returns None if no data is available.\n"
-"On end-of-file, returns ''.");
-
-PyDoc_STRVAR(readall_doc,
-"readall() -> bytes.  read all data from the file, returned as bytes.\n"
-"\n"
-"In non-blocking mode, returns as much as is immediately available,\n"
-"or None if no data is available.  On end-of-file, returns ''.");
-
-PyDoc_STRVAR(write_doc,
-"write(b: bytes) -> int.  Write bytes b to file, return number written.\n"
-"\n"
-"Only makes one system call, so not all of the data may be written.\n"
-"The number of bytes actually written is returned.");
-
-PyDoc_STRVAR(fileno_doc,
-"fileno() -> int. \"file descriptor\".\n"
-"\n"
-"This is needed for lower-level file interfaces, such the fcntl module.");
-
-PyDoc_STRVAR(seek_doc,
-"seek(offset: int[, whence: int]) -> None.  Move to new file position.\n"
-"\n"
-"Argument offset is a byte count.  Optional argument whence defaults to\n"
-"0 (offset from start of file, offset should be >= 0); other values are 1\n"
-"(move relative to current position, positive or negative), and 2 (move\n"
-"relative to end of file, usually negative, although many platforms allow\n"
-"seeking beyond the end of a file)."
-"\n"
-"Note that not all file objects are seekable.");
-
-#ifdef HAVE_FTRUNCATE
-PyDoc_STRVAR(truncate_doc,
-"truncate([size: int]) -> None.  Truncate the file to at most size bytes.\n"
-"\n"
-"Size defaults to the current file position, as returned by tell()."
-"The current file position is changed to the value of size.");
-#endif
-
-PyDoc_STRVAR(tell_doc,
-"tell() -> int.  Current file position");
-
-PyDoc_STRVAR(readinto_doc,
-"readinto() -> Same as RawIOBase.readinto().");
-
-PyDoc_STRVAR(close_doc,
-"close() -> None.  Close the file.\n"
-"\n"
-"A closed file cannot be used for further I/O operations.  close() may be\n"
-"called more than once without error.  Changes the fileno to -1.");
-
-PyDoc_STRVAR(isatty_doc,
-"isatty() -> bool.  True if the file is connected to a tty device.");
-
-PyDoc_STRVAR(seekable_doc,
-"seekable() -> bool.  True if file supports random-access.");
-
-PyDoc_STRVAR(readable_doc,
-"readable() -> bool.  True if file was opened in a read mode.");
-
-PyDoc_STRVAR(writable_doc,
-"writable() -> bool.  True if file was opened in a write mode.");
-
-static PyMethodDef fileio_methods[] = {
-    {"read",     (PyCFunction)fileio_read,         METH_VARARGS, read_doc},
-    {"readall",  (PyCFunction)fileio_readall,  METH_NOARGS,  readall_doc},
-    {"readinto", (PyCFunction)fileio_readinto, METH_VARARGS, readinto_doc},
-    {"write",    (PyCFunction)fileio_write,        METH_VARARGS, write_doc},
-    {"seek",     (PyCFunction)fileio_seek,         METH_VARARGS, seek_doc},
-    {"tell",     (PyCFunction)fileio_tell,         METH_VARARGS, tell_doc},
-#ifdef HAVE_FTRUNCATE
-    {"truncate", (PyCFunction)fileio_truncate, METH_VARARGS, truncate_doc},
-#endif
-    {"close",    (PyCFunction)fileio_close,        METH_NOARGS,  close_doc},
-    {"seekable", (PyCFunction)fileio_seekable, METH_NOARGS,      seekable_doc},
-    {"readable", (PyCFunction)fileio_readable, METH_NOARGS,      readable_doc},
-    {"writable", (PyCFunction)fileio_writable, METH_NOARGS,      writable_doc},
-    {"fileno",   (PyCFunction)fileio_fileno,   METH_NOARGS,      fileno_doc},
-    {"isatty",   (PyCFunction)fileio_isatty,   METH_NOARGS,      isatty_doc},
-    {NULL,           NULL}             /* sentinel */
-};
-
-/* 'closed' and 'mode' are attributes for backwards compatibility reasons. */
-
-static PyObject *
-get_closed(fileio *self, void *closure)
-{
-    return PyBool_FromLong((long)(self->fd < 0));
-}
-
-static PyObject *
-get_closefd(fileio *self, void *closure)
-{
-    return PyBool_FromLong((long)(self->closefd));
-}
-
-static PyObject *
-get_mode(fileio *self, void *closure)
-{
-    return PyUnicode_FromString(mode_string(self));
-}
-
-static PyGetSetDef fileio_getsetlist[] = {
-    {"closed", (getter)get_closed, NULL, "True if the file is closed"},
-    {"closefd", (getter)get_closefd, NULL,
-        "True if the file descriptor will be closed"},
-    {"mode", (getter)get_mode, NULL, "String giving the file mode"},
-    {NULL},
-};
-
-PyTypeObject PyFileIO_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_io.FileIO",
-    sizeof(fileio),
-    0,
-    (destructor)fileio_dealloc,                 /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_reserved */
-    (reprfunc)fileio_repr,                      /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
-                    | Py_TPFLAGS_HAVE_GC,       /* tp_flags */
-    fileio_doc,                                 /* tp_doc */
-    (traverseproc)fileio_traverse,              /* tp_traverse */
-    (inquiry)fileio_clear,                      /* tp_clear */
-    0,                                          /* tp_richcompare */
-    offsetof(fileio, weakreflist),      /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    fileio_methods,                             /* tp_methods */
-    0,                                          /* tp_members */
-    fileio_getsetlist,                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    offsetof(fileio, dict),         /* tp_dictoffset */
-    fileio_init,                                /* tp_init */
-    PyType_GenericAlloc,                        /* tp_alloc */
-    fileio_new,                                 /* tp_new */
-    PyObject_GC_Del,                            /* tp_free */
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/iobase.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/iobase.c
deleted file mode 100644
index 6e4bfd1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/iobase.c
+++ /dev/null
@@ -1,893 +0,0 @@
-/*
-    An implementation of the I/O abstract base classes hierarchy
-    as defined by PEP 3116 - "New I/O"
-    
-    Classes defined here: IOBase, RawIOBase.
-    
-    Written by Amaury Forgeot d'Arc and Antoine Pitrou
-*/
-
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#include "structmember.h"
-#include "_iomodule.h"
-
-/*
- * IOBase class, an abstract class
- */
-
-typedef struct {
-    PyObject_HEAD
-    
-    PyObject *dict;
-    PyObject *weakreflist;
-} iobase;
-
-PyDoc_STRVAR(iobase_doc,
-    "The abstract base class for all I/O classes, acting on streams of\n"
-    "bytes. There is no public constructor.\n"
-    "\n"
-    "This class provides dummy implementations for many methods that\n"
-    "derived classes can override selectively; the default implementations\n"
-    "represent a file that cannot be read, written or seeked.\n"
-    "\n"
-    "Even though IOBase does not declare read, readinto, or write because\n"
-    "their signatures will vary, implementations and clients should\n"
-    "consider those methods part of the interface. Also, implementations\n"
-    "may raise a IOError when operations they do not support are called.\n"
-    "\n"
-    "The basic type used for binary data read from or written to a file is\n"
-    "bytes. bytearrays are accepted too, and in some cases (such as\n"
-    "readinto) needed. Text I/O classes work with str data.\n"
-    "\n"
-    "Note that calling any method (even inquiries) on a closed stream is\n"
-    "undefined. Implementations may raise IOError in this case.\n"
-    "\n"
-    "IOBase (and its subclasses) support the iterator protocol, meaning\n"
-    "that an IOBase object can be iterated over yielding the lines in a\n"
-    "stream.\n"
-    "\n"
-    "IOBase also supports the :keyword:`with` statement. In this example,\n"
-    "fp is closed after the suite of the with statement is complete:\n"
-    "\n"
-    "with open('spam.txt', 'r') as fp:\n"
-    "    fp.write('Spam and eggs!')\n");
-
-/* Use this macro whenever you want to check the internal `closed` status
-   of the IOBase object rather than the virtual `closed` attribute as returned
-   by whatever subclass. */
-
-#define IS_CLOSED(self) \
-    PyObject_HasAttrString(self, "__IOBase_closed")
-
-/* Internal methods */
-static PyObject *
-iobase_unsupported(const char *message)
-{
-    PyErr_SetString(_PyIO_unsupported_operation, message);
-    return NULL;
-}
-
-/* Positionning */
-
-PyDoc_STRVAR(iobase_seek_doc,
-    "Change stream position.\n"
-    "\n"
-    "Change the stream position to byte offset offset. offset is\n"
-    "interpreted relative to the position indicated by whence.  Values\n"
-    "for whence are:\n"
-    "\n"
-    "* 0 -- start of stream (the default); offset should be zero or positive\n"
-    "* 1 -- current stream position; offset may be negative\n"
-    "* 2 -- end of stream; offset is usually negative\n"
-    "\n"
-    "Return the new absolute position.");
-
-static PyObject *
-iobase_seek(PyObject *self, PyObject *args)
-{
-    return iobase_unsupported("seek");
-}
-
-PyDoc_STRVAR(iobase_tell_doc,
-             "Return current stream position.");
-
-static PyObject *
-iobase_tell(PyObject *self, PyObject *args)
-{
-    return PyObject_CallMethod(self, "seek", "ii", 0, 1);
-}
-
-PyDoc_STRVAR(iobase_truncate_doc,
-    "Truncate file to size bytes.\n"
-    "\n"
-    "File pointer is left unchanged.  Size defaults to the current IO\n"
-    "position as reported by tell().  Returns the new size.");
-
-static PyObject *
-iobase_truncate(PyObject *self, PyObject *args)
-{
-    return iobase_unsupported("truncate");
-}
-
-/* Flush and close methods */
-
-PyDoc_STRVAR(iobase_flush_doc,
-    "Flush write buffers, if applicable.\n"
-    "\n"
-    "This is not implemented for read-only and non-blocking streams.\n");
-
-static PyObject *
-iobase_flush(PyObject *self, PyObject *args)
-{
-    /* XXX Should this return the number of bytes written??? */
-    if (IS_CLOSED(self)) {
-        PyErr_SetString(PyExc_ValueError, "I/O operation on closed file.");
-        return NULL;
-    }
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(iobase_close_doc,
-    "Flush and close the IO object.\n"
-    "\n"
-    "This method has no effect if the file is already closed.\n");
-
-static int
-iobase_closed(PyObject *self)
-{
-    PyObject *res;
-    int closed;
-    /* This gets the derived attribute, which is *not* __IOBase_closed
-       in most cases! */
-    res = PyObject_GetAttr(self, _PyIO_str_closed);
-    if (res == NULL)
-        return 0;
-    closed = PyObject_IsTrue(res);
-    Py_DECREF(res);
-    return closed;
-}
-
-static PyObject *
-iobase_closed_get(PyObject *self, void *context)
-{
-    return PyBool_FromLong(IS_CLOSED(self));
-}
-
-PyObject *
-_PyIOBase_check_closed(PyObject *self, PyObject *args)
-{
-    if (iobase_closed(self)) {
-        PyErr_SetString(PyExc_ValueError, "I/O operation on closed file.");
-        return NULL;
-    }
-    if (args == Py_True)
-        return Py_None;
-    else
-        Py_RETURN_NONE;
-}
-
-/* XXX: IOBase thinks it has to maintain its own internal state in
-   `__IOBase_closed` and call flush() by itself, but it is redundant with
-   whatever behaviour a non-trivial derived class will implement. */
-
-static PyObject *
-iobase_close(PyObject *self, PyObject *args)
-{
-    PyObject *res;
-
-    if (IS_CLOSED(self))
-        Py_RETURN_NONE;
-
-    res = PyObject_CallMethodObjArgs(self, _PyIO_str_flush, NULL);
-    PyObject_SetAttrString(self, "__IOBase_closed", Py_True);
-    if (res == NULL) {
-        return NULL;
-    }
-    Py_XDECREF(res);
-    Py_RETURN_NONE;
-}
-
-/* Finalization and garbage collection support */
-
-int
-_PyIOBase_finalize(PyObject *self)
-{
-    PyObject *res;
-    PyObject *tp, *v, *tb;
-    int closed = 1;
-    int is_zombie;
-
-    /* If _PyIOBase_finalize() is called from a destructor, we need to
-       resurrect the object as calling close() can invoke arbitrary code. */
-    is_zombie = (Py_REFCNT(self) == 0);
-    if (is_zombie) {
-        ++Py_REFCNT(self);
-    }
-    PyErr_Fetch(&tp, &v, &tb);
-    /* If `closed` doesn't exist or can't be evaluated as bool, then the
-       object is probably in an unusable state, so ignore. */
-    res = PyObject_GetAttr(self, _PyIO_str_closed);
-    if (res == NULL)
-        PyErr_Clear();
-    else {
-        closed = PyObject_IsTrue(res);
-        Py_DECREF(res);
-        if (closed == -1)
-            PyErr_Clear();
-    }
-    if (closed == 0) {
-        res = PyObject_CallMethodObjArgs((PyObject *) self, _PyIO_str_close,
-                                          NULL);
-        /* Silencing I/O errors is bad, but printing spurious tracebacks is
-           equally as bad, and potentially more frequent (because of
-           shutdown issues). */
-        if (res == NULL)
-            PyErr_Clear();
-        else
-            Py_DECREF(res);
-    }
-    PyErr_Restore(tp, v, tb);
-    if (is_zombie) {
-        if (--Py_REFCNT(self) != 0) {
-            /* The object lives again. The following code is taken from
-               slot_tp_del in typeobject.c. */
-            Py_ssize_t refcnt = Py_REFCNT(self);
-            _Py_NewReference(self);
-            Py_REFCNT(self) = refcnt;
-            /* If Py_REF_DEBUG, _Py_NewReference bumped _Py_RefTotal, so
-             * we need to undo that. */
-            _Py_DEC_REFTOTAL;
-            /* If Py_TRACE_REFS, _Py_NewReference re-added self to the object
-             * chain, so no more to do there.
-             * If COUNT_ALLOCS, the original decref bumped tp_frees, and
-             * _Py_NewReference bumped tp_allocs:  both of those need to be
-             * undone.
-             */
-#ifdef COUNT_ALLOCS
-            --Py_TYPE(self)->tp_frees;
-            --Py_TYPE(self)->tp_allocs;
-#endif
-            return -1;
-        }
-    }
-    return 0;
-}
-
-static int
-iobase_traverse(iobase *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->dict);
-    return 0;
-}
-
-static int
-iobase_clear(iobase *self)
-{
-    if (_PyIOBase_finalize((PyObject *) self) < 0)
-        return -1;
-    Py_CLEAR(self->dict);
-    return 0;
-}
-
-/* Destructor */
-
-static void
-iobase_dealloc(iobase *self)
-{
-    /* NOTE: since IOBaseObject has its own dict, Python-defined attributes
-       are still available here for close() to use.
-       However, if the derived class declares a __slots__, those slots are
-       already gone.
-    */
-    if (_PyIOBase_finalize((PyObject *) self) < 0) {
-        /* When called from a heap type's dealloc, the type will be
-           decref'ed on return (see e.g. subtype_dealloc in typeobject.c). */
-        if (PyType_HasFeature(Py_TYPE(self), Py_TPFLAGS_HEAPTYPE))
-            Py_INCREF(Py_TYPE(self));
-        return;
-    }
-    _PyObject_GC_UNTRACK(self);
-    if (self->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) self);
-    Py_CLEAR(self->dict);
-    Py_TYPE(self)->tp_free((PyObject *) self);
-}
-
-/* Inquiry methods */
-
-PyDoc_STRVAR(iobase_seekable_doc,
-    "Return whether object supports random access.\n"
-    "\n"
-    "If False, seek(), tell() and truncate() will raise IOError.\n"
-    "This method may need to do a test seek().");
-
-static PyObject *
-iobase_seekable(PyObject *self, PyObject *args)
-{
-    Py_RETURN_FALSE;
-}
-
-PyObject *
-_PyIOBase_check_seekable(PyObject *self, PyObject *args)
-{
-    PyObject *res  = PyObject_CallMethodObjArgs(self, _PyIO_str_seekable, NULL);
-    if (res == NULL)
-        return NULL;
-    if (res != Py_True) {
-        Py_CLEAR(res);
-        PyErr_SetString(PyExc_IOError, "File or stream is not seekable.");
-        return NULL;
-    }
-    if (args == Py_True) {
-        Py_DECREF(res);
-    }
-    return res;
-}
-
-PyDoc_STRVAR(iobase_readable_doc,
-    "Return whether object was opened for reading.\n"
-    "\n"
-    "If False, read() will raise IOError.");
-
-static PyObject *
-iobase_readable(PyObject *self, PyObject *args)
-{
-    Py_RETURN_FALSE;
-}
-
-/* May be called with any object */
-PyObject *
-_PyIOBase_check_readable(PyObject *self, PyObject *args)
-{
-    PyObject *res  = PyObject_CallMethodObjArgs(self, _PyIO_str_readable, NULL);
-    if (res == NULL)
-        return NULL;
-    if (res != Py_True) {
-        Py_CLEAR(res);
-        PyErr_SetString(PyExc_IOError, "File or stream is not readable.");
-        return NULL;
-    }
-    if (args == Py_True) {
-        Py_DECREF(res);
-    }
-    return res;
-}
-
-PyDoc_STRVAR(iobase_writable_doc,
-    "Return whether object was opened for writing.\n"
-    "\n"
-    "If False, read() will raise IOError.");
-
-static PyObject *
-iobase_writable(PyObject *self, PyObject *args)
-{
-    Py_RETURN_FALSE;
-}
-
-/* May be called with any object */
-PyObject *
-_PyIOBase_check_writable(PyObject *self, PyObject *args)
-{
-    PyObject *res  = PyObject_CallMethodObjArgs(self, _PyIO_str_writable, NULL);
-    if (res == NULL)
-        return NULL;
-    if (res != Py_True) {
-        Py_CLEAR(res);
-        PyErr_SetString(PyExc_IOError, "File or stream is not writable.");
-        return NULL;
-    }
-    if (args == Py_True) {
-        Py_DECREF(res);
-    }
-    return res;
-}
-
-/* Context manager */
-
-static PyObject *
-iobase_enter(PyObject *self, PyObject *args)
-{
-    if (_PyIOBase_check_closed(self, Py_True) == NULL)
-        return NULL;
-
-    Py_INCREF(self);
-    return self;
-}
-
-static PyObject *
-iobase_exit(PyObject *self, PyObject *args)
-{
-    return PyObject_CallMethodObjArgs(self, _PyIO_str_close, NULL);
-}
-
-/* Lower-level APIs */
-
-/* XXX Should these be present even if unimplemented? */
-
-PyDoc_STRVAR(iobase_fileno_doc,
-    "Returns underlying file descriptor if one exists.\n"
-    "\n"
-    "An IOError is raised if the IO object does not use a file descriptor.\n");
-
-static PyObject *
-iobase_fileno(PyObject *self, PyObject *args)
-{
-    return iobase_unsupported("fileno");
-}
-
-PyDoc_STRVAR(iobase_isatty_doc,
-    "Return whether this is an 'interactive' stream.\n"
-    "\n"
-    "Return False if it can't be determined.\n");
-
-static PyObject *
-iobase_isatty(PyObject *self, PyObject *args)
-{
-    if (_PyIOBase_check_closed(self, Py_True) == NULL)
-        return NULL;
-    Py_RETURN_FALSE;
-}
-
-/* Readline(s) and writelines */
-
-PyDoc_STRVAR(iobase_readline_doc,
-    "Read and return a line from the stream.\n"
-    "\n"
-    "If limit is specified, at most limit bytes will be read.\n"
-    "\n"
-    "The line terminator is always b'\n' for binary files; for text\n"
-    "files, the newlines argument to open can be used to select the line\n"
-    "terminator(s) recognized.\n");
-
-static PyObject *
-iobase_readline(PyObject *self, PyObject *args)
-{
-    /* For backwards compatibility, a (slowish) readline(). */
-
-    Py_ssize_t limit = -1;
-    int has_peek = 0;
-    PyObject *buffer, *result;
-    Py_ssize_t old_size = -1;
-
-    if (!PyArg_ParseTuple(args, "|O&:readline", &_PyIO_ConvertSsize_t, &limit)) {
-        return NULL;
-    }
-
-    if (PyObject_HasAttrString(self, "peek"))
-        has_peek = 1;
-
-    buffer = PyByteArray_FromStringAndSize(NULL, 0);
-    if (buffer == NULL)
-        return NULL;
-
-    while (limit < 0 || Py_SIZE(buffer) < limit) {
-        Py_ssize_t nreadahead = 1;
-        PyObject *b;
-
-        if (has_peek) {
-            PyObject *readahead = PyObject_CallMethod(self, "peek", "i", 1);
-            if (readahead == NULL)
-                goto fail;
-            if (!PyBytes_Check(readahead)) {
-                PyErr_Format(PyExc_IOError,
-                             "peek() should have returned a bytes object, "
-                             "not '%.200s'", Py_TYPE(readahead)->tp_name);
-                Py_DECREF(readahead);
-                goto fail;
-            }
-            if (PyBytes_GET_SIZE(readahead) > 0) {
-                Py_ssize_t n = 0;
-                const char *buf = PyBytes_AS_STRING(readahead);
-                if (limit >= 0) {
-                    do {
-                        if (n >= PyBytes_GET_SIZE(readahead) || n >= limit)
-                            break;
-                        if (buf[n++] == '\n')
-                            break;
-                    } while (1);
-                }
-                else {
-                    do {
-                        if (n >= PyBytes_GET_SIZE(readahead))
-                            break;
-                        if (buf[n++] == '\n')
-                            break;
-                    } while (1);
-                }
-                nreadahead = n;
-            }
-            Py_DECREF(readahead);
-        }
-
-        b = PyObject_CallMethod(self, "read", "n", nreadahead);
-        if (b == NULL)
-            goto fail;
-        if (!PyBytes_Check(b)) {
-            PyErr_Format(PyExc_IOError,
-                         "read() should have returned a bytes object, "
-                         "not '%.200s'", Py_TYPE(b)->tp_name);
-            Py_DECREF(b);
-            goto fail;
-        }
-        if (PyBytes_GET_SIZE(b) == 0) {
-            Py_DECREF(b);
-            break;
-        }
-
-        old_size = PyByteArray_GET_SIZE(buffer);
-        PyByteArray_Resize(buffer, old_size + PyBytes_GET_SIZE(b));
-        memcpy(PyByteArray_AS_STRING(buffer) + old_size,
-               PyBytes_AS_STRING(b), PyBytes_GET_SIZE(b));
-
-        Py_DECREF(b);
-
-        if (PyByteArray_AS_STRING(buffer)[PyByteArray_GET_SIZE(buffer) - 1] == '\n')
-            break;
-    }
-
-    result = PyBytes_FromStringAndSize(PyByteArray_AS_STRING(buffer),
-                                       PyByteArray_GET_SIZE(buffer));
-    Py_DECREF(buffer);
-    return result;
-  fail:
-    Py_DECREF(buffer);
-    return NULL;
-}
-
-static PyObject *
-iobase_iter(PyObject *self)
-{
-    if (_PyIOBase_check_closed(self, Py_True) == NULL)
-        return NULL;
-
-    Py_INCREF(self);
-    return self;
-}
-
-static PyObject *
-iobase_iternext(PyObject *self)
-{
-    PyObject *line = PyObject_CallMethodObjArgs(self, _PyIO_str_readline, NULL);
-
-    if (line == NULL)
-        return NULL;
-
-    if (PyObject_Size(line) == 0) {
-        Py_DECREF(line);
-        return NULL;
-    }
-
-    return line;
-}
-
-PyDoc_STRVAR(iobase_readlines_doc,
-    "Return a list of lines from the stream.\n"
-    "\n"
-    "hint can be specified to control the number of lines read: no more\n"
-    "lines will be read if the total size (in bytes/characters) of all\n"
-    "lines so far exceeds hint.");
-
-static PyObject *
-iobase_readlines(PyObject *self, PyObject *args)
-{
-    Py_ssize_t hint = -1, length = 0;
-    PyObject *result;
-
-    if (!PyArg_ParseTuple(args, "|O&:readlines", &_PyIO_ConvertSsize_t, &hint)) {
-        return NULL;
-    }
-
-    result = PyList_New(0);
-    if (result == NULL)
-        return NULL;
-
-    if (hint <= 0) {
-        /* XXX special-casing this made sense in the Python version in order
-           to remove the bytecode interpretation overhead, but it could
-           probably be removed here. */
-        PyObject *ret = PyObject_CallMethod(result, "extend", "O", self);
-        if (ret == NULL) {
-            Py_DECREF(result);
-            return NULL;
-        }
-        Py_DECREF(ret);
-        return result;
-    }
-
-    while (1) {
-        PyObject *line = PyIter_Next(self);
-        if (line == NULL) {
-            if (PyErr_Occurred()) {
-                Py_DECREF(result);
-                return NULL;
-            }
-            else
-                break; /* StopIteration raised */
-        }
-
-        if (PyList_Append(result, line) < 0) {
-            Py_DECREF(line);
-            Py_DECREF(result);
-            return NULL;
-        }
-        length += PyObject_Size(line);
-        Py_DECREF(line);
-
-        if (length > hint)
-            break;
-    }
-    return result;
-}
-
-static PyObject *
-iobase_writelines(PyObject *self, PyObject *args)
-{
-    PyObject *lines, *iter, *res;
-
-    if (!PyArg_ParseTuple(args, "O:writelines", &lines)) {
-        return NULL;
-    }
-
-    if (_PyIOBase_check_closed(self, Py_True) == NULL)
-        return NULL;
-
-    iter = PyObject_GetIter(lines);
-    if (iter == NULL)
-        return NULL;
-
-    while (1) {
-        PyObject *line = PyIter_Next(iter);
-        if (line == NULL) {
-            if (PyErr_Occurred()) {
-                Py_DECREF(iter);
-                return NULL;
-            }
-            else
-                break; /* Stop Iteration */
-        }
-
-        res = PyObject_CallMethodObjArgs(self, _PyIO_str_write, line, NULL);
-        Py_DECREF(line);
-        if (res == NULL) {
-            Py_DECREF(iter);
-            return NULL;
-        }
-        Py_DECREF(res);
-    }
-    Py_DECREF(iter);
-    Py_RETURN_NONE;
-}
-
-static PyMethodDef iobase_methods[] = {
-    {"seek", iobase_seek, METH_VARARGS, iobase_seek_doc},
-    {"tell", iobase_tell, METH_NOARGS, iobase_tell_doc},
-    {"truncate", iobase_truncate, METH_VARARGS, iobase_truncate_doc},
-    {"flush", iobase_flush, METH_NOARGS, iobase_flush_doc},
-    {"close", iobase_close, METH_NOARGS, iobase_close_doc},
-
-    {"seekable", iobase_seekable, METH_NOARGS, iobase_seekable_doc},
-    {"readable", iobase_readable, METH_NOARGS, iobase_readable_doc},
-    {"writable", iobase_writable, METH_NOARGS, iobase_writable_doc},
-
-    {"_checkClosed",   _PyIOBase_check_closed, METH_NOARGS},
-    {"_checkSeekable", _PyIOBase_check_seekable, METH_NOARGS},
-    {"_checkReadable", _PyIOBase_check_readable, METH_NOARGS},
-    {"_checkWritable", _PyIOBase_check_writable, METH_NOARGS},
-
-    {"fileno", iobase_fileno, METH_NOARGS, iobase_fileno_doc},
-    {"isatty", iobase_isatty, METH_NOARGS, iobase_isatty_doc},
-
-    {"__enter__", iobase_enter, METH_NOARGS},
-    {"__exit__", iobase_exit, METH_VARARGS},
-
-    {"readline", iobase_readline, METH_VARARGS, iobase_readline_doc},
-    {"readlines", iobase_readlines, METH_VARARGS, iobase_readlines_doc},
-    {"writelines", iobase_writelines, METH_VARARGS},
-
-    {NULL, NULL}
-};
-
-static PyGetSetDef iobase_getset[] = {
-    {"closed", (getter)iobase_closed_get, NULL, NULL},
-    {NULL}
-};
-
-
-PyTypeObject PyIOBase_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_io._IOBase",              /*tp_name*/
-    sizeof(iobase),             /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    (destructor)iobase_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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
-        | Py_TPFLAGS_HAVE_GC,   /*tp_flags*/
-    iobase_doc,                 /* tp_doc */
-    (traverseproc)iobase_traverse, /* tp_traverse */
-    (inquiry)iobase_clear,      /* tp_clear */
-    0,                          /* tp_richcompare */
-    offsetof(iobase, weakreflist), /* tp_weaklistoffset */
-    iobase_iter,                /* tp_iter */
-    iobase_iternext,            /* tp_iternext */
-    iobase_methods,             /* tp_methods */
-    0,                          /* tp_members */
-    iobase_getset,              /* tp_getset */
-    0,                          /* tp_base */
-    0,                          /* tp_dict */
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    offsetof(iobase, dict),     /* tp_dictoffset */
-    0,                          /* tp_init */
-    0,                          /* tp_alloc */
-    PyType_GenericNew,          /* tp_new */
-};
-
-
-/*
- * RawIOBase class, Inherits from IOBase.
- */
-PyDoc_STRVAR(rawiobase_doc,
-             "Base class for raw binary I/O.");
-
-/*
- * The read() method is implemented by calling readinto(); derived classes
- * that want to support read() only need to implement readinto() as a
- * primitive operation.  In general, readinto() can be more efficient than
- * read().
- *
- * (It would be tempting to also provide an implementation of readinto() in
- * terms of read(), in case the latter is a more suitable primitive operation,
- * but that would lead to nasty recursion in case a subclass doesn't implement
- * either.)
-*/
-
-static PyObject *
-rawiobase_read(PyObject *self, PyObject *args)
-{
-    Py_ssize_t n = -1;
-    PyObject *b, *res;
-
-    if (!PyArg_ParseTuple(args, "|n:read", &n)) {
-        return NULL;
-    }
-
-    if (n < 0)
-        return PyObject_CallMethod(self, "readall", NULL);
-
-    /* TODO: allocate a bytes object directly instead and manually construct
-       a writable memoryview pointing to it. */
-    b = PyByteArray_FromStringAndSize(NULL, n);
-    if (b == NULL)
-        return NULL;
-
-    res = PyObject_CallMethodObjArgs(self, _PyIO_str_readinto, b, NULL);
-    if (res == NULL || res == Py_None) {
-        Py_DECREF(b);
-        return res;
-    }
-
-    n = PyNumber_AsSsize_t(res, PyExc_ValueError);
-    Py_DECREF(res);
-    if (n == -1 && PyErr_Occurred()) {
-        Py_DECREF(b);
-        return NULL;
-    }
-
-    res = PyBytes_FromStringAndSize(PyByteArray_AsString(b), n);
-    Py_DECREF(b);
-    return res;
-}
-
-
-PyDoc_STRVAR(rawiobase_readall_doc,
-             "Read until EOF, using multiple read() call.");
-
-static PyObject *
-rawiobase_readall(PyObject *self, PyObject *args)
-{
-    int r;
-    PyObject *chunks = PyList_New(0);
-    PyObject *result;
-    
-    if (chunks == NULL)
-        return NULL;
-
-    while (1) {
-        PyObject *data = PyObject_CallMethod(self, "read",
-                                             "i", DEFAULT_BUFFER_SIZE);
-        if (!data) {
-            Py_DECREF(chunks);
-            return NULL;
-        }
-        if (data == Py_None) {
-            if (PyList_GET_SIZE(chunks) == 0) {
-                Py_DECREF(chunks);
-                return data;
-            }
-            Py_DECREF(data);
-            break;
-        }
-        if (!PyBytes_Check(data)) {
-            Py_DECREF(chunks);
-            Py_DECREF(data);
-            PyErr_SetString(PyExc_TypeError, "read() should return bytes");
-            return NULL;
-        }
-        if (PyBytes_GET_SIZE(data) == 0) {
-            /* EOF */
-            Py_DECREF(data);
-            break;
-        }
-        r = PyList_Append(chunks, data);
-        Py_DECREF(data);
-        if (r < 0) {
-            Py_DECREF(chunks);
-            return NULL;
-        }
-    }
-    result = _PyBytes_Join(_PyIO_empty_bytes, chunks);
-    Py_DECREF(chunks);
-    return result;
-}
-
-static PyMethodDef rawiobase_methods[] = {
-    {"read", rawiobase_read, METH_VARARGS},
-    {"readall", rawiobase_readall, METH_NOARGS, rawiobase_readall_doc},
-    {NULL, NULL}
-};
-
-PyTypeObject PyRawIOBase_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_io._RawIOBase",                /*tp_name*/
-    0,                          /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    0,                          /*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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,  /*tp_flags*/
-    rawiobase_doc,              /* tp_doc */
-    0,                          /* tp_traverse */
-    0,                          /* tp_clear */
-    0,                          /* tp_richcompare */
-    0,                          /* tp_weaklistoffset */
-    0,                          /* tp_iter */
-    0,                          /* tp_iternext */
-    rawiobase_methods,          /* tp_methods */
-    0,                          /* tp_members */
-    0,                          /* tp_getset */
-    &PyIOBase_Type,             /* tp_base */
-    0,                          /* tp_dict */
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    0,                          /* tp_dictoffset */
-    0,                          /* tp_init */
-    0,                          /* tp_alloc */
-    0,                          /* tp_new */
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/stringio.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/stringio.c
deleted file mode 100644
index c14899b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/stringio.c
+++ /dev/null
@@ -1,882 +0,0 @@
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#include "structmember.h"
-#include "_iomodule.h"
-
-/* Implementation note: the buffer is always at least one character longer
-   than the enclosed string, for proper functioning of _PyIO_find_line_ending.
-*/
-
-typedef struct {
-    PyObject_HEAD
-    Py_UNICODE *buf;
-    Py_ssize_t pos;
-    Py_ssize_t string_size;
-    size_t buf_size;
-
-    char ok; /* initialized? */
-    char closed;
-    char readuniversal;
-    char readtranslate;
-    PyObject *decoder;
-    PyObject *readnl;
-    PyObject *writenl;
-    
-    PyObject *dict;
-    PyObject *weakreflist;
-} stringio;
-
-#define CHECK_INITIALIZED(self) \
-    if (self->ok <= 0) { \
-        PyErr_SetString(PyExc_ValueError, \
-            "I/O operation on uninitialized object"); \
-        return NULL; \
-    }
-
-#define CHECK_CLOSED(self) \
-    if (self->closed) { \
-        PyErr_SetString(PyExc_ValueError, \
-            "I/O operation on closed file"); \
-        return NULL; \
-    }
-
-PyDoc_STRVAR(stringio_doc,
-    "Text I/O implementation using an in-memory buffer.\n"
-    "\n"
-    "The initial_value argument sets the value of object.  The newline\n"
-    "argument is like the one of TextIOWrapper's constructor.");
-
-
-/* Internal routine for changing the size, in terms of characters, of the
-   buffer of StringIO objects.  The caller should ensure that the 'size'
-   argument is non-negative.  Returns 0 on success, -1 otherwise. */
-static int
-resize_buffer(stringio *self, size_t size)
-{
-    /* Here, unsigned types are used to avoid dealing with signed integer
-       overflow, which is undefined in C. */
-    size_t alloc = self->buf_size;
-    Py_UNICODE *new_buf = NULL;
-
-    assert(self->buf != NULL);
-
-    /* Reserve one more char for line ending detection. */
-    size = size + 1;
-    /* For simplicity, stay in the range of the signed type. Anyway, Python
-       doesn't allow strings to be longer than this. */
-    if (size > PY_SSIZE_T_MAX)
-        goto overflow;
-
-    if (size < alloc / 2) {
-        /* Major downsize; resize down to exact size. */
-        alloc = size + 1;
-    }
-    else if (size < alloc) {
-        /* Within allocated size; quick exit */
-        return 0;
-    }
-    else if (size <= alloc * 1.125) {
-        /* Moderate upsize; overallocate similar to list_resize() */
-        alloc = size + (size >> 3) + (size < 9 ? 3 : 6);
-    }
-    else {
-        /* Major upsize; resize up to exact size */
-        alloc = size + 1;
-    }
-
-    if (alloc > ((size_t)-1) / sizeof(Py_UNICODE))
-        goto overflow;
-    new_buf = (Py_UNICODE *)PyMem_Realloc(self->buf,
-                                          alloc * sizeof(Py_UNICODE));
-    if (new_buf == NULL) {
-        PyErr_NoMemory();
-        return -1;
-    }
-    self->buf_size = alloc;
-    self->buf = new_buf;
-
-    return 0;
-
-  overflow:
-    PyErr_SetString(PyExc_OverflowError,
-                    "new buffer size too large");
-    return -1;
-}
-
-/* Internal routine for writing a whole PyUnicode object to the buffer of a
-   StringIO object. Returns 0 on success, or -1 on error. */
-static Py_ssize_t
-write_str(stringio *self, PyObject *obj)
-{
-    Py_UNICODE *str;
-    Py_ssize_t len;
-    PyObject *decoded = NULL;
-    assert(self->buf != NULL);
-    assert(self->pos >= 0);
-
-    if (self->decoder != NULL) {
-        decoded = _PyIncrementalNewlineDecoder_decode(
-            self->decoder, obj, 1 /* always final */);
-    }
-    else {
-        decoded = obj;
-        Py_INCREF(decoded);
-    }
-    if (self->writenl) {
-        PyObject *translated = PyUnicode_Replace(
-            decoded, _PyIO_str_nl, self->writenl, -1);
-        Py_DECREF(decoded);
-        decoded = translated;
-    }
-    if (decoded == NULL)
-        return -1;
-
-    assert(PyUnicode_Check(decoded));
-    str = PyUnicode_AS_UNICODE(decoded);
-    len = PyUnicode_GET_SIZE(decoded);
-
-    assert(len >= 0);
-
-    /* This overflow check is not strictly necessary. However, it avoids us to
-       deal with funky things like comparing an unsigned and a signed
-       integer. */
-    if (self->pos > PY_SSIZE_T_MAX - len) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "new position too large");
-        goto fail;
-    }
-    if (self->pos + len > self->string_size) {
-        if (resize_buffer(self, self->pos + len) < 0)
-            goto fail;
-    }
-
-    if (self->pos > self->string_size) {
-        /* In case of overseek, pad with null bytes the buffer region between
-           the end of stream and the current position.
-
-          0   lo      string_size                           hi
-          |   |<---used--->|<----------available----------->|
-          |   |            <--to pad-->|<---to write--->    |
-          0   buf                   position
-
-        */
-        memset(self->buf + self->string_size, '\0',
-               (self->pos - self->string_size) * sizeof(Py_UNICODE));
-    }
-
-    /* Copy the data to the internal buffer, overwriting some of the
-       existing data if self->pos < self->string_size. */
-    memcpy(self->buf + self->pos, str, len * sizeof(Py_UNICODE));
-    self->pos += len;
-
-    /* Set the new length of the internal string if it has changed. */
-    if (self->string_size < self->pos) {
-        self->string_size = self->pos;
-    }
-
-    Py_DECREF(decoded);
-    return 0;
-
-fail:
-    Py_XDECREF(decoded);
-    return -1;
-}
-
-PyDoc_STRVAR(stringio_getvalue_doc,
-    "Retrieve the entire contents of the object.");
-
-static PyObject *
-stringio_getvalue(stringio *self)
-{
-    CHECK_INITIALIZED(self);
-    CHECK_CLOSED(self);
-    return PyUnicode_FromUnicode(self->buf, self->string_size);
-}
-
-PyDoc_STRVAR(stringio_tell_doc,
-    "Tell the current file position.");
-
-static PyObject *
-stringio_tell(stringio *self)
-{
-    CHECK_INITIALIZED(self);
-    CHECK_CLOSED(self);
-    return PyLong_FromSsize_t(self->pos);
-}
-
-PyDoc_STRVAR(stringio_read_doc,
-    "Read at most n characters, returned as a string.\n"
-    "\n"
-    "If the argument is negative or omitted, read until EOF\n"
-    "is reached. Return an empty string at EOF.\n");
-
-static PyObject *
-stringio_read(stringio *self, PyObject *args)
-{
-    Py_ssize_t size, n;
-    Py_UNICODE *output;
-    PyObject *arg = Py_None;
-
-    CHECK_INITIALIZED(self);
-    if (!PyArg_ParseTuple(args, "|O:read", &arg))
-        return NULL;
-    CHECK_CLOSED(self);
-
-    if (PyNumber_Check(arg)) {
-        size = PyNumber_AsSsize_t(arg, PyExc_OverflowError);
-        if (size == -1 && PyErr_Occurred())
-            return NULL;
-    }
-    else if (arg == Py_None) {
-        /* Read until EOF is reached, by default. */
-        size = -1;
-    }
-    else {
-        PyErr_Format(PyExc_TypeError, "integer argument expected, got '%s'",
-                     Py_TYPE(arg)->tp_name);
-        return NULL;
-    }
-
-    /* adjust invalid sizes */
-    n = self->string_size - self->pos;
-    if (size < 0 || size > n) {
-        size = n;
-        if (size < 0)
-            size = 0;
-    }
-
-    output = self->buf + self->pos;
-    self->pos += size;
-    return PyUnicode_FromUnicode(output, size);
-}
-
-/* Internal helper, used by stringio_readline and stringio_iternext */
-static PyObject *
-_stringio_readline(stringio *self, Py_ssize_t limit)
-{
-    Py_UNICODE *start, *end, old_char;
-    Py_ssize_t len, consumed;
-
-    /* In case of overseek, return the empty string */
-    if (self->pos >= self->string_size)
-        return PyUnicode_FromString("");
-
-    start = self->buf + self->pos;
-    if (limit < 0 || limit > self->string_size - self->pos)
-        limit = self->string_size - self->pos;
-
-    end = start + limit;
-    old_char = *end;
-    *end = '\0';
-    len = _PyIO_find_line_ending(
-        self->readtranslate, self->readuniversal, self->readnl,
-        start, end, &consumed);
-    *end = old_char;
-    /* If we haven't found any line ending, we just return everything
-       (`consumed` is ignored). */
-    if (len < 0)
-        len = limit;
-    self->pos += len;
-    return PyUnicode_FromUnicode(start, len);
-}
-
-PyDoc_STRVAR(stringio_readline_doc,
-    "Read until newline or EOF.\n"
-    "\n"
-    "Returns an empty string if EOF is hit immediately.\n");
-
-static PyObject *
-stringio_readline(stringio *self, PyObject *args)
-{
-    PyObject *arg = Py_None;
-    Py_ssize_t limit = -1;
-
-    CHECK_INITIALIZED(self);
-    if (!PyArg_ParseTuple(args, "|O:readline", &arg))
-        return NULL;
-    CHECK_CLOSED(self);
-
-    if (PyNumber_Check(arg)) {
-        limit = PyNumber_AsSsize_t(arg, PyExc_OverflowError);
-        if (limit == -1 && PyErr_Occurred())
-            return NULL;
-    }
-    else if (arg != Py_None) {
-        PyErr_Format(PyExc_TypeError, "integer argument expected, got '%s'",
-                     Py_TYPE(arg)->tp_name);
-        return NULL;
-    }
-    return _stringio_readline(self, limit);
-}
-
-static PyObject *
-stringio_iternext(stringio *self)
-{
-    PyObject *line;
-
-    CHECK_INITIALIZED(self);
-    CHECK_CLOSED(self);
-
-    if (Py_TYPE(self) == &PyStringIO_Type) {
-        /* Skip method call overhead for speed */
-        line = _stringio_readline(self, -1);
-    }
-    else {
-        /* XXX is subclassing StringIO really supported? */
-        line = PyObject_CallMethodObjArgs((PyObject *)self,
-                                           _PyIO_str_readline, NULL);
-        if (line && !PyUnicode_Check(line)) {
-            PyErr_Format(PyExc_IOError,
-                         "readline() should have returned an str object, "
-                         "not '%.200s'", Py_TYPE(line)->tp_name);
-            Py_DECREF(line);
-            return NULL;
-        }
-    }
-
-    if (line == NULL)
-        return NULL;
-
-    if (PyUnicode_GET_SIZE(line) == 0) {
-        /* Reached EOF */
-        Py_DECREF(line);
-        return NULL;
-    }
-
-    return line;
-}
-
-PyDoc_STRVAR(stringio_truncate_doc,
-    "Truncate size to pos.\n"
-    "\n"
-    "The pos argument defaults to the current file position, as\n"
-    "returned by tell().  The current file position is unchanged.\n"
-    "Returns the new absolute position.\n");
-
-static PyObject *
-stringio_truncate(stringio *self, PyObject *args)
-{
-    Py_ssize_t size;
-    PyObject *arg = Py_None;
-
-    CHECK_INITIALIZED(self);
-    if (!PyArg_ParseTuple(args, "|O:truncate", &arg))
-        return NULL;
-    CHECK_CLOSED(self);
-
-    if (PyNumber_Check(arg)) {
-        size = PyNumber_AsSsize_t(arg, PyExc_OverflowError);
-        if (size == -1 && PyErr_Occurred())
-            return NULL;
-    }
-    else if (arg == Py_None) {
-        /* Truncate to current position if no argument is passed. */
-        size = self->pos;
-    }
-    else {
-        PyErr_Format(PyExc_TypeError, "integer argument expected, got '%s'",
-                     Py_TYPE(arg)->tp_name);
-        return NULL;
-    }
-
-    if (size < 0) {
-        PyErr_Format(PyExc_ValueError,
-                     "Negative size value %zd", size);
-        return NULL;
-    }
-
-    if (size < self->string_size) {
-        if (resize_buffer(self, size) < 0)
-            return NULL;
-        self->string_size = size;
-    }
-
-    return PyLong_FromSsize_t(size);
-}
-
-PyDoc_STRVAR(stringio_seek_doc,
-    "Change stream position.\n"
-    "\n"
-    "Seek to character offset pos relative to position indicated by whence:\n"
-    "    0  Start of stream (the default).  pos should be >= 0;\n"
-    "    1  Current position - pos must be 0;\n"
-    "    2  End of stream - pos must be 0.\n"
-    "Returns the new absolute position.\n");
-
-static PyObject *
-stringio_seek(stringio *self, PyObject *args)
-{
-    PyObject *posobj;
-    Py_ssize_t pos;
-    int mode = 0;
-
-    CHECK_INITIALIZED(self);
-    if (!PyArg_ParseTuple(args, "O|i:seek", &posobj, &mode))
-        return NULL;
-
-    pos = PyNumber_AsSsize_t(posobj, PyExc_OverflowError);
-    if (pos == -1 && PyErr_Occurred())
-        return NULL;
-    
-    CHECK_CLOSED(self);
-
-    if (mode != 0 && mode != 1 && mode != 2) {
-        PyErr_Format(PyExc_ValueError,
-                     "Invalid whence (%i, should be 0, 1 or 2)", mode);
-        return NULL;
-    }
-    else if (pos < 0 && mode == 0) {
-        PyErr_Format(PyExc_ValueError,
-                     "Negative seek position %zd", pos);
-        return NULL;
-    }
-    else if (mode != 0 && pos != 0) {
-        PyErr_SetString(PyExc_IOError,
-                        "Can't do nonzero cur-relative seeks");
-        return NULL;
-    }
-
-    /* mode 0: offset relative to beginning of the string.
-       mode 1: no change to current position.
-       mode 2: change position to end of file. */
-    if (mode == 1) {
-        pos = self->pos;
-    }
-    else if (mode == 2) {
-        pos = self->string_size;
-    }
-
-    self->pos = pos;
-
-    return PyLong_FromSsize_t(self->pos);
-}
-
-PyDoc_STRVAR(stringio_write_doc,
-    "Write string to file.\n"
-    "\n"
-    "Returns the number of characters written, which is always equal to\n"
-    "the length of the string.\n");
-
-static PyObject *
-stringio_write(stringio *self, PyObject *obj)
-{
-    Py_ssize_t size;
-
-    CHECK_INITIALIZED(self);
-    if (!PyUnicode_Check(obj)) {
-        PyErr_Format(PyExc_TypeError, "string argument expected, got '%s'",
-                     Py_TYPE(obj)->tp_name);
-        return NULL;
-    }
-    CHECK_CLOSED(self);
-    size = PyUnicode_GET_SIZE(obj);
-
-    if (size > 0 && write_str(self, obj) < 0)
-        return NULL;
-
-    return PyLong_FromSsize_t(size);
-}
-
-PyDoc_STRVAR(stringio_close_doc,
-    "Close the IO object. Attempting any further operation after the\n"
-    "object is closed will raise a ValueError.\n"
-    "\n"
-    "This method has no effect if the file is already closed.\n");
-
-static PyObject *
-stringio_close(stringio *self)
-{
-    self->closed = 1;
-    /* Free up some memory */
-    if (resize_buffer(self, 0) < 0)
-        return NULL;
-    Py_CLEAR(self->readnl);
-    Py_CLEAR(self->writenl);
-    Py_CLEAR(self->decoder);
-    Py_RETURN_NONE;
-}
-
-static int
-stringio_traverse(stringio *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->dict);
-    return 0;
-}
-
-static int
-stringio_clear(stringio *self)
-{
-    Py_CLEAR(self->dict);
-    return 0;
-}
-
-static void
-stringio_dealloc(stringio *self)
-{
-    _PyObject_GC_UNTRACK(self);
-    self->ok = 0;
-    if (self->buf) {
-        PyMem_Free(self->buf);
-        self->buf = NULL;
-    }
-    Py_CLEAR(self->readnl);
-    Py_CLEAR(self->writenl);
-    Py_CLEAR(self->decoder);
-    Py_CLEAR(self->dict);
-    if (self->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) self);
-    Py_TYPE(self)->tp_free(self);
-}
-
-static PyObject *
-stringio_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    stringio *self;
-
-    assert(type != NULL && type->tp_alloc != NULL);
-    self = (stringio *)type->tp_alloc(type, 0);
-    if (self == NULL)
-        return NULL;
-
-    /* tp_alloc initializes all the fields to zero. So we don't have to
-       initialize them here. */
-
-    self->buf = (Py_UNICODE *)PyMem_Malloc(0);
-    if (self->buf == NULL) {
-        Py_DECREF(self);
-        return PyErr_NoMemory();
-    }
-
-    return (PyObject *)self;
-}
-
-static int
-stringio_init(stringio *self, PyObject *args, PyObject *kwds)
-{
-    char *kwlist[] = {"initial_value", "newline", NULL};
-    PyObject *value = NULL;
-    char *newline = "\n";
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|Oz:__init__", kwlist,
-                                     &value, &newline))
-        return -1;
-
-    if (newline && newline[0] != '\0'
-        && !(newline[0] == '\n' && newline[1] == '\0')
-        && !(newline[0] == '\r' && newline[1] == '\0')
-        && !(newline[0] == '\r' && newline[1] == '\n' && newline[2] == '\0')) {
-        PyErr_Format(PyExc_ValueError,
-                     "illegal newline value: %s", newline);
-        return -1;
-    }
-    if (value && value != Py_None && !PyUnicode_Check(value)) {
-        PyErr_Format(PyExc_TypeError,
-                     "initial_value must be unicode or None, not %.200s",
-                     Py_TYPE(value)->tp_name);
-        return -1;
-    }
-
-    self->ok = 0;
-
-    Py_CLEAR(self->readnl);
-    Py_CLEAR(self->writenl);
-    Py_CLEAR(self->decoder);
-
-    if (newline) {
-        self->readnl = PyString_FromString(newline);
-        if (self->readnl == NULL)
-            return -1;
-    }
-    self->readuniversal = (newline == NULL || newline[0] == '\0');
-    self->readtranslate = (newline == NULL);
-    /* If newline == "", we don't translate anything.
-       If newline == "\n" or newline == None, we translate to "\n", which is
-       a no-op.
-       (for newline == None, TextIOWrapper translates to os.sepline, but it
-       is pointless for StringIO)
-    */
-    if (newline != NULL && newline[0] == '\r') {
-        self->writenl = PyUnicode_FromString(newline);
-    }
-
-    if (self->readuniversal) {
-        self->decoder = PyObject_CallFunction(
-            (PyObject *)&PyIncrementalNewlineDecoder_Type,
-            "Oi", Py_None, (int) self->readtranslate);
-        if (self->decoder == NULL)
-            return -1;
-    }
-
-    /* Now everything is set up, resize buffer to size of initial value,
-       and copy it */
-    self->string_size = 0;
-    if (value && value != Py_None) {
-        Py_ssize_t len = PyUnicode_GetSize(value);
-        /* This is a heuristic, for newline translation might change
-           the string length. */
-        if (resize_buffer(self, len) < 0)
-            return -1;
-        self->pos = 0;
-        if (write_str(self, value) < 0)
-            return -1;
-    }
-    else {
-        if (resize_buffer(self, 0) < 0)
-            return -1;
-    }
-    self->pos = 0;
-
-    self->closed = 0;
-    self->ok = 1;
-    return 0;
-}
-
-/* Properties and pseudo-properties */
-static PyObject *
-stringio_seekable(stringio *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self);
-    Py_RETURN_TRUE;
-}
-
-static PyObject *
-stringio_readable(stringio *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self);
-    Py_RETURN_TRUE;
-}
-
-static PyObject *
-stringio_writable(stringio *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self);
-    Py_RETURN_TRUE;
-}
-
-/* Pickling support.
-
-   The implementation of __getstate__ is similar to the one for BytesIO,
-   except that we also save the newline parameter. For __setstate__ and unlike
-   BytesIO, we call __init__ to restore the object's state. Doing so allows us
-   to avoid decoding the complex newline state while keeping the object
-   representation compact.
-
-   See comment in bytesio.c regarding why only pickle protocols and onward are
-   supported.
-*/
-
-static PyObject *
-stringio_getstate(stringio *self)
-{
-    PyObject *initvalue = stringio_getvalue(self);
-    PyObject *dict;
-    PyObject *state;
-
-    if (initvalue == NULL)
-        return NULL;
-    if (self->dict == NULL) {
-        Py_INCREF(Py_None);
-        dict = Py_None;
-    }
-    else {
-        dict = PyDict_Copy(self->dict);
-        if (dict == NULL)
-            return NULL;
-    }
-
-    state = Py_BuildValue("(OOnN)", initvalue,
-                          self->readnl ? self->readnl : Py_None,
-                          self->pos, dict);
-    Py_DECREF(initvalue);
-    return state;
-}
-
-static PyObject *
-stringio_setstate(stringio *self, PyObject *state)
-{
-    PyObject *initarg;
-    PyObject *position_obj;
-    PyObject *dict;
-    Py_ssize_t pos;
-
-    assert(state != NULL);
-    CHECK_CLOSED(self);
-
-    /* We allow the state tuple to be longer than 4, because we may need
-       someday to extend the object's state without breaking
-       backward-compatibility. */
-    if (!PyTuple_Check(state) || Py_SIZE(state) < 4) {
-        PyErr_Format(PyExc_TypeError,
-                     "%.200s.__setstate__ argument should be 4-tuple, got %.200s",
-                     Py_TYPE(self)->tp_name, Py_TYPE(state)->tp_name);
-        return NULL;
-    }
-
-    /* Initialize the object's state. */
-    initarg = PyTuple_GetSlice(state, 0, 2);
-    if (initarg == NULL)
-        return NULL;
-    if (stringio_init(self, initarg, NULL) < 0) {
-        Py_DECREF(initarg);
-        return NULL;
-    }
-    Py_DECREF(initarg);
-
-    /* Restore the buffer state. Even if __init__ did initialize the buffer,
-       we have to initialize it again since __init__ may translates the
-       newlines in the inital_value string. We clearly do not want that
-       because the string value in the state tuple has already been translated
-       once by __init__. So we do not take any chance and replace object's
-       buffer completely. */
-    {
-        Py_UNICODE *buf = PyUnicode_AS_UNICODE(PyTuple_GET_ITEM(state, 0));
-        Py_ssize_t bufsize = PyUnicode_GET_SIZE(PyTuple_GET_ITEM(state, 0));
-        if (resize_buffer(self, bufsize) < 0)
-            return NULL;
-        memcpy(self->buf, buf, bufsize * sizeof(Py_UNICODE));
-        self->string_size = bufsize;
-    }
-
-    /* Set carefully the position value. Alternatively, we could use the seek
-       method instead of modifying self->pos directly to better protect the
-       object internal state against errneous (or malicious) inputs. */
-    position_obj = PyTuple_GET_ITEM(state, 2);
-    if (!PyIndex_Check(position_obj)) {
-        PyErr_Format(PyExc_TypeError,
-                     "third item of state must be an integer, got %.200s",
-                     Py_TYPE(position_obj)->tp_name);
-        return NULL;
-    }
-    pos = PyNumber_AsSsize_t(position_obj, PyExc_OverflowError);
-    if (pos == -1 && PyErr_Occurred())
-        return NULL;
-    if (pos < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "position value cannot be negative");
-        return NULL;
-    }
-    self->pos = pos;
-
-    /* Set the dictionary of the instance variables. */
-    dict = PyTuple_GET_ITEM(state, 3);
-    if (dict != Py_None) {
-        if (!PyDict_Check(dict)) {
-            PyErr_Format(PyExc_TypeError,
-                         "fourth item of state should be a dict, got a %.200s",
-                         Py_TYPE(dict)->tp_name);
-            return NULL;
-        }
-        if (self->dict) {
-            /* Alternatively, we could replace the internal dictionary
-               completely. However, it seems more practical to just update it. */
-            if (PyDict_Update(self->dict, dict) < 0)
-                return NULL;
-        }
-        else {
-            Py_INCREF(dict);
-            self->dict = dict;
-        }
-    }
-
-    Py_RETURN_NONE;
-}
-
-
-static PyObject *
-stringio_closed(stringio *self, void *context)
-{
-    CHECK_INITIALIZED(self);
-    return PyBool_FromLong(self->closed);
-}
-
-static PyObject *
-stringio_line_buffering(stringio *self, void *context)
-{
-    CHECK_INITIALIZED(self);
-    CHECK_CLOSED(self);
-    Py_RETURN_FALSE;
-}
-
-static PyObject *
-stringio_newlines(stringio *self, void *context)
-{
-    CHECK_INITIALIZED(self);
-    CHECK_CLOSED(self);
-    if (self->decoder == NULL)
-        Py_RETURN_NONE;
-    return PyObject_GetAttr(self->decoder, _PyIO_str_newlines);
-}
-
-static struct PyMethodDef stringio_methods[] = {
-    {"close",    (PyCFunction)stringio_close,    METH_NOARGS,  stringio_close_doc},
-    {"getvalue", (PyCFunction)stringio_getvalue, METH_NOARGS,  stringio_getvalue_doc},
-    {"read",     (PyCFunction)stringio_read,     METH_VARARGS, stringio_read_doc},
-    {"readline", (PyCFunction)stringio_readline, METH_VARARGS, stringio_readline_doc},
-    {"tell",     (PyCFunction)stringio_tell,     METH_NOARGS,  stringio_tell_doc},
-    {"truncate", (PyCFunction)stringio_truncate, METH_VARARGS, stringio_truncate_doc},
-    {"seek",     (PyCFunction)stringio_seek,     METH_VARARGS, stringio_seek_doc},
-    {"write",    (PyCFunction)stringio_write,    METH_O,       stringio_write_doc},
-
-    {"seekable", (PyCFunction)stringio_seekable, METH_NOARGS},
-    {"readable", (PyCFunction)stringio_readable, METH_NOARGS},
-    {"writable", (PyCFunction)stringio_writable, METH_NOARGS},
-
-    {"__getstate__", (PyCFunction)stringio_getstate, METH_NOARGS},
-    {"__setstate__", (PyCFunction)stringio_setstate, METH_O},
-    {NULL, NULL}        /* sentinel */
-};
-
-static PyGetSetDef stringio_getset[] = {
-    {"closed",         (getter)stringio_closed,         NULL, NULL},
-    {"newlines",       (getter)stringio_newlines,       NULL, NULL},
-    /*  (following comments straight off of the original Python wrapper:)
-        XXX Cruft to support the TextIOWrapper API. This would only
-        be meaningful if StringIO supported the buffer attribute.
-        Hopefully, a better solution, than adding these pseudo-attributes,
-        will be found.
-    */
-    {"line_buffering", (getter)stringio_line_buffering, NULL, NULL},
-    {NULL}
-};
-
-PyTypeObject PyStringIO_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_io.StringIO",                            /*tp_name*/
-    sizeof(stringio),                    /*tp_basicsize*/
-    0,                                         /*tp_itemsize*/
-    (destructor)stringio_dealloc,              /*tp_dealloc*/
-    0,                                         /*tp_print*/
-    0,                                         /*tp_getattr*/
-    0,                                         /*tp_setattr*/
-    0,                                         /*tp_reserved*/
-    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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
-                       | Py_TPFLAGS_HAVE_GC,   /*tp_flags*/
-    stringio_doc,                              /*tp_doc*/
-    (traverseproc)stringio_traverse,           /*tp_traverse*/
-    (inquiry)stringio_clear,                   /*tp_clear*/
-    0,                                         /*tp_richcompare*/
-    offsetof(stringio, weakreflist),            /*tp_weaklistoffset*/
-    0,                                         /*tp_iter*/
-    (iternextfunc)stringio_iternext,           /*tp_iternext*/
-    stringio_methods,                          /*tp_methods*/
-    0,                                         /*tp_members*/
-    stringio_getset,                           /*tp_getset*/
-    0,                                         /*tp_base*/
-    0,                                         /*tp_dict*/
-    0,                                         /*tp_descr_get*/
-    0,                                         /*tp_descr_set*/
-    offsetof(stringio, dict),                  /*tp_dictoffset*/
-    (initproc)stringio_init,                   /*tp_init*/
-    0,                                         /*tp_alloc*/
-    stringio_new,                              /*tp_new*/
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/textio.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/textio.c
deleted file mode 100644
index e590b90..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_io/textio.c
+++ /dev/null
@@ -1,2617 +0,0 @@
-/*
-    An implementation of Text I/O as defined by PEP 3116 - "New I/O"
-
-    Classes defined here: TextIOBase, IncrementalNewlineDecoder, TextIOWrapper.
-
-    Written by Amaury Forgeot d'Arc and Antoine Pitrou
-*/
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#include "structmember.h"
-#include "_iomodule.h"
-
-/* TextIOBase */
-
-PyDoc_STRVAR(textiobase_doc,
-    "Base class for text I/O.\n"
-    "\n"
-    "This class provides a character and line based interface to stream\n"
-    "I/O. There is no readinto method because Python's character strings\n"
-    "are immutable. There is no public constructor.\n"
-    );
-
-static PyObject *
-_unsupported(const char *message)
-{
-    PyErr_SetString(_PyIO_unsupported_operation, message);
-    return NULL;
-}
-
-PyDoc_STRVAR(textiobase_detach_doc,
-    "Separate the underlying buffer from the TextIOBase and return it.\n"
-    "\n"
-    "After the underlying buffer has been detached, the TextIO is in an\n"
-    "unusable state.\n"
-    );
-
-static PyObject *
-textiobase_detach(PyObject *self)
-{
-    return _unsupported("detach");
-}
-
-PyDoc_STRVAR(textiobase_read_doc,
-    "Read at most n characters from stream.\n"
-    "\n"
-    "Read from underlying buffer until we have n characters or we hit EOF.\n"
-    "If n is negative or omitted, read until EOF.\n"
-    );
-
-static PyObject *
-textiobase_read(PyObject *self, PyObject *args)
-{
-    return _unsupported("read");
-}
-
-PyDoc_STRVAR(textiobase_readline_doc,
-    "Read until newline or EOF.\n"
-    "\n"
-    "Returns an empty string if EOF is hit immediately.\n"
-    );
-
-static PyObject *
-textiobase_readline(PyObject *self, PyObject *args)
-{
-    return _unsupported("readline");
-}
-
-PyDoc_STRVAR(textiobase_write_doc,
-    "Write string to stream.\n"
-    "Returns the number of characters written (which is always equal to\n"
-    "the length of the string).\n"
-    );
-
-static PyObject *
-textiobase_write(PyObject *self, PyObject *args)
-{
-    return _unsupported("write");
-}
-
-PyDoc_STRVAR(textiobase_encoding_doc,
-    "Encoding of the text stream.\n"
-    "\n"
-    "Subclasses should override.\n"
-    );
-
-static PyObject *
-textiobase_encoding_get(PyObject *self, void *context)
-{
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(textiobase_newlines_doc,
-    "Line endings translated so far.\n"
-    "\n"
-    "Only line endings translated during reading are considered.\n"
-    "\n"
-    "Subclasses should override.\n"
-    );
-
-static PyObject *
-textiobase_newlines_get(PyObject *self, void *context)
-{
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(textiobase_errors_doc,
-    "The error setting of the decoder or encoder.\n"
-    "\n"
-    "Subclasses should override.\n"
-    );
-
-static PyObject *
-textiobase_errors_get(PyObject *self, void *context)
-{
-    Py_RETURN_NONE;
-}
-
-
-static PyMethodDef textiobase_methods[] = {
-    {"detach", (PyCFunction)textiobase_detach, METH_NOARGS, textiobase_detach_doc},
-    {"read", textiobase_read, METH_VARARGS, textiobase_read_doc},
-    {"readline", textiobase_readline, METH_VARARGS, textiobase_readline_doc},
-    {"write", textiobase_write, METH_VARARGS, textiobase_write_doc},
-    {NULL, NULL}
-};
-
-static PyGetSetDef textiobase_getset[] = {
-    {"encoding", (getter)textiobase_encoding_get, NULL, textiobase_encoding_doc},
-    {"newlines", (getter)textiobase_newlines_get, NULL, textiobase_newlines_doc},
-    {"errors", (getter)textiobase_errors_get, NULL, textiobase_errors_doc},
-    {NULL}
-};
-
-PyTypeObject PyTextIOBase_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_io._TextIOBase",          /*tp_name*/
-    0,                          /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    0,                          /*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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,  /*tp_flags*/
-    textiobase_doc,             /* tp_doc */
-    0,                          /* tp_traverse */
-    0,                          /* tp_clear */
-    0,                          /* tp_richcompare */
-    0,                          /* tp_weaklistoffset */
-    0,                          /* tp_iter */
-    0,                          /* tp_iternext */
-    textiobase_methods,         /* tp_methods */
-    0,                          /* tp_members */
-    textiobase_getset,          /* tp_getset */
-    &PyIOBase_Type,             /* tp_base */
-    0,                          /* tp_dict */
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    0,                          /* tp_dictoffset */
-    0,                          /* tp_init */
-    0,                          /* tp_alloc */
-    0,                          /* tp_new */
-};
-
-
-/* IncrementalNewlineDecoder */
-
-PyDoc_STRVAR(incrementalnewlinedecoder_doc,
-    "Codec used when reading a file in universal newlines mode.  It wraps\n"
-    "another incremental decoder, translating \\r\\n and \\r into \\n.  It also\n"
-    "records the types of newlines encountered.  When used with\n"
-    "translate=False, it ensures that the newline sequence is returned in\n"
-    "one piece. When used with decoder=None, it expects unicode strings as\n"
-    "decode input and translates newlines without first invoking an external\n"
-    "decoder.\n"
-    );
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *decoder;
-    PyObject *errors;
-    signed int pendingcr: 1;
-    signed int translate: 1;
-    unsigned int seennl: 3;
-} nldecoder_object;
-
-static int
-incrementalnewlinedecoder_init(nldecoder_object *self,
-                               PyObject *args, PyObject *kwds)
-{
-    PyObject *decoder;
-    int translate;
-    PyObject *errors = NULL;
-    char *kwlist[] = {"decoder", "translate", "errors", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "Oi|O:IncrementalNewlineDecoder",
-                                     kwlist, &decoder, &translate, &errors))
-        return -1;
-
-    self->decoder = decoder;
-    Py_INCREF(decoder);
-
-    if (errors == NULL) {
-        self->errors = PyUnicode_FromString("strict");
-        if (self->errors == NULL)
-            return -1;
-    }
-    else {
-        Py_INCREF(errors);
-        self->errors = errors;
-    }
-
-    self->translate = translate;
-    self->seennl = 0;
-    self->pendingcr = 0;
-
-    return 0;
-}
-
-static void
-incrementalnewlinedecoder_dealloc(nldecoder_object *self)
-{
-    Py_CLEAR(self->decoder);
-    Py_CLEAR(self->errors);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-#define SEEN_CR   1
-#define SEEN_LF   2
-#define SEEN_CRLF 4
-#define SEEN_ALL (SEEN_CR | SEEN_LF | SEEN_CRLF)
-
-PyObject *
-_PyIncrementalNewlineDecoder_decode(PyObject *_self,
-                                    PyObject *input, int final)
-{
-    PyObject *output;
-    Py_ssize_t output_len;
-    nldecoder_object *self = (nldecoder_object *) _self;
-
-    if (self->decoder == NULL) {
-        PyErr_SetString(PyExc_ValueError,
-                        "IncrementalNewlineDecoder.__init__ not called");
-        return NULL;
-    }
-
-    /* decode input (with the eventual \r from a previous pass) */
-    if (self->decoder != Py_None) {
-        output = PyObject_CallMethodObjArgs(self->decoder,
-            _PyIO_str_decode, input, final ? Py_True : Py_False, NULL);
-    }
-    else {
-        output = input;
-        Py_INCREF(output);
-    }
-
-    if (output == NULL)
-        return NULL;
-
-    if (!PyUnicode_Check(output)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "decoder should return a string result");
-        goto error;
-    }
-
-    output_len = PyUnicode_GET_SIZE(output);
-    if (self->pendingcr && (final || output_len > 0)) {
-        Py_UNICODE *out;
-        PyObject *modified = PyUnicode_FromUnicode(NULL, output_len + 1);
-        if (modified == NULL)
-            goto error;
-        out = PyUnicode_AS_UNICODE(modified);
-        out[0] = '\r';
-        memcpy(out + 1, PyUnicode_AS_UNICODE(output),
-               output_len * sizeof(Py_UNICODE));
-        Py_DECREF(output);
-        output = modified;
-        self->pendingcr = 0;
-        output_len++;
-    }
-
-    /* retain last \r even when not translating data:
-     * then readline() is sure to get \r\n in one pass
-     */
-    if (!final) {
-        if (output_len > 0
-            && PyUnicode_AS_UNICODE(output)[output_len - 1] == '\r') {
-
-            if (Py_REFCNT(output) == 1) {
-                if (PyUnicode_Resize(&output, output_len - 1) < 0)
-                    goto error;
-            }
-            else {
-                PyObject *modified = PyUnicode_FromUnicode(
-                    PyUnicode_AS_UNICODE(output),
-                    output_len - 1);
-                if (modified == NULL)
-                    goto error;
-                Py_DECREF(output);
-                output = modified;
-            }
-            self->pendingcr = 1;
-        }
-    }
-
-    /* Record which newlines are read and do newline translation if desired,
-       all in one pass. */
-    {
-        Py_UNICODE *in_str;
-        Py_ssize_t len;
-        int seennl = self->seennl;
-        int only_lf = 0;
-
-        in_str = PyUnicode_AS_UNICODE(output);
-        len = PyUnicode_GET_SIZE(output);
-
-        if (len == 0)
-            return output;
-
-        /* If, up to now, newlines are consistently \n, do a quick check
-           for the \r *byte* with the libc's optimized memchr.
-           */
-        if (seennl == SEEN_LF || seennl == 0) {
-            only_lf = (memchr(in_str, '\r', len * sizeof(Py_UNICODE)) == NULL);
-        }
-
-        if (only_lf) {
-            /* If not already seen, quick scan for a possible "\n" character.
-               (there's nothing else to be done, even when in translation mode)
-            */
-            if (seennl == 0 &&
-                memchr(in_str, '\n', len * sizeof(Py_UNICODE)) != NULL) {
-                Py_UNICODE *s, *end;
-                s = in_str;
-                end = in_str + len;
-                for (;;) {
-                    Py_UNICODE c;
-                    /* Fast loop for non-control characters */
-                    while (*s > '\n')
-                        s++;
-                    c = *s++;
-                    if (c == '\n') {
-                        seennl |= SEEN_LF;
-                        break;
-                    }
-                    if (s > end)
-                        break;
-                }
-            }
-            /* Finished: we have scanned for newlines, and none of them
-               need translating */
-        }
-        else if (!self->translate) {
-            Py_UNICODE *s, *end;
-            /* We have already seen all newline types, no need to scan again */
-            if (seennl == SEEN_ALL)
-                goto endscan;
-            s = in_str;
-            end = in_str + len;
-            for (;;) {
-                Py_UNICODE c;
-                /* Fast loop for non-control characters */
-                while (*s > '\r')
-                    s++;
-                c = *s++;
-                if (c == '\n')
-                    seennl |= SEEN_LF;
-                else if (c == '\r') {
-                    if (*s == '\n') {
-                        seennl |= SEEN_CRLF;
-                        s++;
-                    }
-                    else
-                        seennl |= SEEN_CR;
-                }
-                if (s > end)
-                    break;
-                if (seennl == SEEN_ALL)
-                    break;
-            }
-        endscan:
-            ;
-        }
-        else {
-            PyObject *translated = NULL;
-            Py_UNICODE *out_str;
-            Py_UNICODE *in, *out, *end;
-            if (Py_REFCNT(output) != 1) {
-                /* We could try to optimize this so that we only do a copy
-                   when there is something to translate. On the other hand,
-                   most decoders should only output non-shared strings, i.e.
-                   translation is done in place. */
-                translated = PyUnicode_FromUnicode(NULL, len);
-                if (translated == NULL)
-                    goto error;
-                assert(Py_REFCNT(translated) == 1);
-                memcpy(PyUnicode_AS_UNICODE(translated),
-                       PyUnicode_AS_UNICODE(output),
-                       len * sizeof(Py_UNICODE));
-            }
-            else {
-                translated = output;
-            }
-            out_str = PyUnicode_AS_UNICODE(translated);
-            in = in_str;
-            out = out_str;
-            end = in_str + len;
-            for (;;) {
-                Py_UNICODE c;
-                /* Fast loop for non-control characters */
-                while ((c = *in++) > '\r')
-                    *out++ = c;
-                if (c == '\n') {
-                    *out++ = c;
-                    seennl |= SEEN_LF;
-                    continue;
-                }
-                if (c == '\r') {
-                    if (*in == '\n') {
-                        in++;
-                        seennl |= SEEN_CRLF;
-                    }
-                    else
-                        seennl |= SEEN_CR;
-                    *out++ = '\n';
-                    continue;
-                }
-                if (in > end)
-                    break;
-                *out++ = c;
-            }
-            if (translated != output) {
-                Py_DECREF(output);
-                output = translated;
-            }
-            if (out - out_str != len) {
-                if (PyUnicode_Resize(&output, out - out_str) < 0)
-                    goto error;
-            }
-        }
-        self->seennl |= seennl;
-    }
-
-    return output;
-
-  error:
-    Py_DECREF(output);
-    return NULL;
-}
-
-static PyObject *
-incrementalnewlinedecoder_decode(nldecoder_object *self,
-                                 PyObject *args, PyObject *kwds)
-{
-    char *kwlist[] = {"input", "final", NULL};
-    PyObject *input;
-    int final = 0;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|i:IncrementalNewlineDecoder",
-                                     kwlist, &input, &final))
-        return NULL;
-    return _PyIncrementalNewlineDecoder_decode((PyObject *) self, input, final);
-}
-
-static PyObject *
-incrementalnewlinedecoder_getstate(nldecoder_object *self, PyObject *args)
-{
-    PyObject *buffer;
-    unsigned PY_LONG_LONG flag;
-
-    if (self->decoder != Py_None) {
-        PyObject *state = PyObject_CallMethodObjArgs(self->decoder,
-           _PyIO_str_getstate, NULL);
-        if (state == NULL)
-            return NULL;
-        if (!PyArg_Parse(state, "(OK)", &buffer, &flag)) {
-            Py_DECREF(state);
-            return NULL;
-        }
-        Py_INCREF(buffer);
-        Py_DECREF(state);
-    }
-    else {
-        buffer = PyBytes_FromString("");
-        flag = 0;
-    }
-    flag <<= 1;
-    if (self->pendingcr)
-        flag |= 1;
-    return Py_BuildValue("NK", buffer, flag);
-}
-
-static PyObject *
-incrementalnewlinedecoder_setstate(nldecoder_object *self, PyObject *state)
-{
-    PyObject *buffer;
-    unsigned PY_LONG_LONG flag;
-
-    if (!PyArg_Parse(state, "(OK)", &buffer, &flag))
-        return NULL;
-
-    self->pendingcr = (int) flag & 1;
-    flag >>= 1;
-
-    if (self->decoder != Py_None)
-        return PyObject_CallMethod(self->decoder,
-                                   "setstate", "((OK))", buffer, flag);
-    else
-        Py_RETURN_NONE;
-}
-
-static PyObject *
-incrementalnewlinedecoder_reset(nldecoder_object *self, PyObject *args)
-{
-    self->seennl = 0;
-    self->pendingcr = 0;
-    if (self->decoder != Py_None)
-        return PyObject_CallMethodObjArgs(self->decoder, _PyIO_str_reset, NULL);
-    else
-        Py_RETURN_NONE;
-}
-
-static PyObject *
-incrementalnewlinedecoder_newlines_get(nldecoder_object *self, void *context)
-{
-    switch (self->seennl) {
-    case SEEN_CR:
-        return PyUnicode_FromString("\r");
-    case SEEN_LF:
-        return PyUnicode_FromString("\n");
-    case SEEN_CRLF:
-        return PyUnicode_FromString("\r\n");
-    case SEEN_CR | SEEN_LF:
-        return Py_BuildValue("ss", "\r", "\n");
-    case SEEN_CR | SEEN_CRLF:
-        return Py_BuildValue("ss", "\r", "\r\n");
-    case SEEN_LF | SEEN_CRLF:
-        return Py_BuildValue("ss", "\n", "\r\n");
-    case SEEN_CR | SEEN_LF | SEEN_CRLF:
-        return Py_BuildValue("sss", "\r", "\n", "\r\n");
-    default:
-        Py_RETURN_NONE;
-   }
-
-}
-
-
-static PyMethodDef incrementalnewlinedecoder_methods[] = {
-    {"decode", (PyCFunction)incrementalnewlinedecoder_decode, METH_VARARGS|METH_KEYWORDS},
-    {"getstate", (PyCFunction)incrementalnewlinedecoder_getstate, METH_NOARGS},
-    {"setstate", (PyCFunction)incrementalnewlinedecoder_setstate, METH_O},
-    {"reset", (PyCFunction)incrementalnewlinedecoder_reset, METH_NOARGS},
-    {NULL}
-};
-
-static PyGetSetDef incrementalnewlinedecoder_getset[] = {
-    {"newlines", (getter)incrementalnewlinedecoder_newlines_get, NULL, NULL},
-    {NULL}
-};
-
-PyTypeObject PyIncrementalNewlineDecoder_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_io.IncrementalNewlineDecoder", /*tp_name*/
-    sizeof(nldecoder_object), /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    (destructor)incrementalnewlinedecoder_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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,  /*tp_flags*/
-    incrementalnewlinedecoder_doc,          /* tp_doc */
-    0,                          /* tp_traverse */
-    0,                          /* tp_clear */
-    0,                          /* tp_richcompare */
-    0,                          /*tp_weaklistoffset*/
-    0,                          /* tp_iter */
-    0,                          /* tp_iternext */
-    incrementalnewlinedecoder_methods, /* tp_methods */
-    0,                          /* tp_members */
-    incrementalnewlinedecoder_getset, /* tp_getset */
-    0,                          /* tp_base */
-    0,                          /* tp_dict */
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    0,                          /* tp_dictoffset */
-    (initproc)incrementalnewlinedecoder_init, /* tp_init */
-    0,                          /* tp_alloc */
-    PyType_GenericNew,          /* tp_new */
-};
-
-
-/* TextIOWrapper */
-
-PyDoc_STRVAR(textiowrapper_doc,
-    "Character and line based layer over a BufferedIOBase object, buffer.\n"
-    "\n"
-    "encoding gives the name of the encoding that the stream will be\n"
-    "decoded or encoded with. It defaults to locale.getpreferredencoding.\n"
-    "\n"
-    "errors determines the strictness of encoding and decoding (see the\n"
-    "codecs.register) and defaults to \"strict\".\n"
-    "\n"
-    "newline can be None, '', '\\n', '\\r', or '\\r\\n'.  It controls the\n"
-    "handling of line endings. If it is None, universal newlines is\n"
-    "enabled.  With this enabled, on input, the lines endings '\\n', '\\r',\n"
-    "or '\\r\\n' are translated to '\\n' before being returned to the\n"
-    "caller. Conversely, on output, '\\n' is translated to the system\n"
-    "default line seperator, os.linesep. If newline is any other of its\n"
-    "legal values, that newline becomes the newline when the file is read\n"
-    "and it is returned untranslated. On output, '\\n' is converted to the\n"
-    "newline.\n"
-    "\n"
-    "If line_buffering is True, a call to flush is implied when a call to\n"
-    "write contains a newline character."
-    );
-
-typedef PyObject *
-        (*encodefunc_t)(PyObject *, PyObject *);
-
-typedef struct
-{
-    PyObject_HEAD
-    int ok; /* initialized? */
-    int detached;
-    Py_ssize_t chunk_size;
-    PyObject *buffer;
-    PyObject *encoding;
-    PyObject *encoder;
-    PyObject *decoder;
-    PyObject *readnl;
-    PyObject *errors;
-    const char *writenl; /* utf-8 encoded, NULL stands for \n */
-    char line_buffering;
-    char readuniversal;
-    char readtranslate;
-    char writetranslate;
-    char seekable;
-    char telling;
-    /* Specialized encoding func (see below) */
-    encodefunc_t encodefunc;
-    /* Whether or not it's the start of the stream */
-    char encoding_start_of_stream;
-
-    /* Reads and writes are internally buffered in order to speed things up.
-       However, any read will first flush the write buffer if itsn't empty.
-
-       Please also note that text to be written is first encoded before being
-       buffered. This is necessary so that encoding errors are immediately
-       reported to the caller, but it unfortunately means that the
-       IncrementalEncoder (whose encode() method is always written in Python)
-       becomes a bottleneck for small writes.
-    */
-    PyObject *decoded_chars;       /* buffer for text returned from decoder */
-    Py_ssize_t decoded_chars_used; /* offset into _decoded_chars for read() */
-    PyObject *pending_bytes;       /* list of bytes objects waiting to be
-                                      written, or NULL */
-    Py_ssize_t pending_bytes_count;
-    PyObject *snapshot;
-    /* snapshot is either None, or a tuple (dec_flags, next_input) where
-     * dec_flags is the second (integer) item of the decoder state and
-     * next_input is the chunk of input bytes that comes next after the
-     * snapshot point.  We use this to reconstruct decoder states in tell().
-     */
-
-    /* Cache raw object if it's a FileIO object */
-    PyObject *raw;
-
-    PyObject *weakreflist;
-    PyObject *dict;
-} textio;
-
-
-/* A couple of specialized cases in order to bypass the slow incremental
-   encoding methods for the most popular encodings. */
-
-static PyObject *
-ascii_encode(textio *self, PyObject *text)
-{
-    return PyUnicode_EncodeASCII(PyUnicode_AS_UNICODE(text),
-                                 PyUnicode_GET_SIZE(text),
-                                 PyBytes_AS_STRING(self->errors));
-}
-
-static PyObject *
-utf16be_encode(textio *self, PyObject *text)
-{
-    return PyUnicode_EncodeUTF16(PyUnicode_AS_UNICODE(text),
-                                 PyUnicode_GET_SIZE(text),
-                                 PyBytes_AS_STRING(self->errors), 1);
-}
-
-static PyObject *
-utf16le_encode(textio *self, PyObject *text)
-{
-    return PyUnicode_EncodeUTF16(PyUnicode_AS_UNICODE(text),
-                                 PyUnicode_GET_SIZE(text),
-                                 PyBytes_AS_STRING(self->errors), -1);
-}
-
-static PyObject *
-utf16_encode(textio *self, PyObject *text)
-{
-    if (!self->encoding_start_of_stream) {
-        /* Skip the BOM and use native byte ordering */
-#if defined(WORDS_BIGENDIAN)
-        return utf16be_encode(self, text);
-#else
-        return utf16le_encode(self, text);
-#endif
-    }
-    return PyUnicode_EncodeUTF16(PyUnicode_AS_UNICODE(text),
-                                 PyUnicode_GET_SIZE(text),
-                                 PyBytes_AS_STRING(self->errors), 0);
-}
-
-static PyObject *
-utf32be_encode(textio *self, PyObject *text)
-{
-    return PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(text),
-                                 PyUnicode_GET_SIZE(text),
-                                 PyBytes_AS_STRING(self->errors), 1);
-}
-
-static PyObject *
-utf32le_encode(textio *self, PyObject *text)
-{
-    return PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(text),
-                                 PyUnicode_GET_SIZE(text),
-                                 PyBytes_AS_STRING(self->errors), -1);
-}
-
-static PyObject *
-utf32_encode(textio *self, PyObject *text)
-{
-    if (!self->encoding_start_of_stream) {
-        /* Skip the BOM and use native byte ordering */
-#if defined(WORDS_BIGENDIAN)
-        return utf32be_encode(self, text);
-#else
-        return utf32le_encode(self, text);
-#endif
-    }
-    return PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(text),
-                                 PyUnicode_GET_SIZE(text),
-                                 PyBytes_AS_STRING(self->errors), 0);
-}
-
-static PyObject *
-utf8_encode(textio *self, PyObject *text)
-{
-    return PyUnicode_EncodeUTF8(PyUnicode_AS_UNICODE(text),
-                                PyUnicode_GET_SIZE(text),
-                                PyBytes_AS_STRING(self->errors));
-}
-
-static PyObject *
-latin1_encode(textio *self, PyObject *text)
-{
-    return PyUnicode_EncodeLatin1(PyUnicode_AS_UNICODE(text),
-                                  PyUnicode_GET_SIZE(text),
-                                  PyBytes_AS_STRING(self->errors));
-}
-
-/* Map normalized encoding names onto the specialized encoding funcs */
-
-typedef struct {
-    const char *name;
-    encodefunc_t encodefunc;
-} encodefuncentry;
-
-static encodefuncentry encodefuncs[] = {
-    {"ascii",       (encodefunc_t) ascii_encode},
-    {"iso8859-1",   (encodefunc_t) latin1_encode},
-    {"utf-8",       (encodefunc_t) utf8_encode},
-    {"utf-16-be",   (encodefunc_t) utf16be_encode},
-    {"utf-16-le",   (encodefunc_t) utf16le_encode},
-    {"utf-16",      (encodefunc_t) utf16_encode},
-    {"utf-32-be",   (encodefunc_t) utf32be_encode},
-    {"utf-32-le",   (encodefunc_t) utf32le_encode},
-    {"utf-32",      (encodefunc_t) utf32_encode},
-    {NULL, NULL}
-};
-
-
-static int
-textiowrapper_init(textio *self, PyObject *args, PyObject *kwds)
-{
-    char *kwlist[] = {"buffer", "encoding", "errors",
-                      "newline", "line_buffering",
-                      NULL};
-    PyObject *buffer, *raw;
-    char *encoding = NULL;
-    char *errors = NULL;
-    char *newline = NULL;
-    int line_buffering = 0;
-
-    PyObject *res;
-    int r;
-
-    self->ok = 0;
-    self->detached = 0;
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|zzzi:fileio",
-                                     kwlist, &buffer, &encoding, &errors,
-                                     &newline, &line_buffering))
-        return -1;
-
-    if (newline && newline[0] != '\0'
-        && !(newline[0] == '\n' && newline[1] == '\0')
-        && !(newline[0] == '\r' && newline[1] == '\0')
-        && !(newline[0] == '\r' && newline[1] == '\n' && newline[2] == '\0')) {
-        PyErr_Format(PyExc_ValueError,
-                     "illegal newline value: %s", newline);
-        return -1;
-    }
-
-    Py_CLEAR(self->buffer);
-    Py_CLEAR(self->encoding);
-    Py_CLEAR(self->encoder);
-    Py_CLEAR(self->decoder);
-    Py_CLEAR(self->readnl);
-    Py_CLEAR(self->decoded_chars);
-    Py_CLEAR(self->pending_bytes);
-    Py_CLEAR(self->snapshot);
-    Py_CLEAR(self->errors);
-    Py_CLEAR(self->raw);
-    self->decoded_chars_used = 0;
-    self->pending_bytes_count = 0;
-    self->encodefunc = NULL;
-    self->writenl = NULL;
-
-    if (encoding == NULL && self->encoding == NULL) {
-        if (_PyIO_locale_module == NULL) {
-            _PyIO_locale_module = PyImport_ImportModule("locale");
-            if (_PyIO_locale_module == NULL)
-                goto catch_ImportError;
-            else
-                goto use_locale;
-        }
-        else {
-          use_locale:
-            self->encoding = PyObject_CallMethod(
-                _PyIO_locale_module, "getpreferredencoding", NULL);
-            if (self->encoding == NULL) {
-              catch_ImportError:
-                /*
-                 Importing locale can raise a ImportError because of
-                 _functools, and locale.getpreferredencoding can raise a
-                 ImportError if _locale is not available.  These will happen
-                 during module building.
-                */
-                if (PyErr_ExceptionMatches(PyExc_ImportError)) {
-                    PyErr_Clear();
-                    self->encoding = PyString_FromString("ascii");
-                }
-                else
-                    goto error;
-            }
-            else if (!PyString_Check(self->encoding))
-                Py_CLEAR(self->encoding);
-        }
-    }
-    if (self->encoding != NULL)
-        encoding = PyString_AsString(self->encoding);
-    else if (encoding != NULL) {
-        self->encoding = PyString_FromString(encoding);
-        if (self->encoding == NULL)
-            goto error;
-    }
-    else {
-        PyErr_SetString(PyExc_IOError,
-                        "could not determine default encoding");
-    }
-
-    if (errors == NULL)
-        errors = "strict";
-    self->errors = PyBytes_FromString(errors);
-    if (self->errors == NULL)
-        goto error;
-
-    self->chunk_size = 8192;
-    self->readuniversal = (newline == NULL || newline[0] == '\0');
-    self->line_buffering = line_buffering;
-    self->readtranslate = (newline == NULL);
-    if (newline) {
-        self->readnl = PyString_FromString(newline);
-        if (self->readnl == NULL)
-            return -1;
-    }
-    self->writetranslate = (newline == NULL || newline[0] != '\0');
-    if (!self->readuniversal && self->writetranslate) {
-        self->writenl = PyString_AsString(self->readnl);
-        if (!strcmp(self->writenl, "\n"))
-            self->writenl = NULL;
-    }
-#ifdef MS_WINDOWS
-    else
-        self->writenl = "\r\n";
-#endif
-
-    /* Build the decoder object */
-    res = PyObject_CallMethod(buffer, "readable", NULL);
-    if (res == NULL)
-        goto error;
-    r = PyObject_IsTrue(res);
-    Py_DECREF(res);
-    if (r == -1)
-        goto error;
-    if (r == 1) {
-        self->decoder = PyCodec_IncrementalDecoder(
-            encoding, errors);
-        if (self->decoder == NULL)
-            goto error;
-
-        if (self->readuniversal) {
-            PyObject *incrementalDecoder = PyObject_CallFunction(
-                (PyObject *)&PyIncrementalNewlineDecoder_Type,
-                "Oi", self->decoder, (int)self->readtranslate);
-            if (incrementalDecoder == NULL)
-                goto error;
-            Py_CLEAR(self->decoder);
-            self->decoder = incrementalDecoder;
-        }
-    }
-
-    /* Build the encoder object */
-    res = PyObject_CallMethod(buffer, "writable", NULL);
-    if (res == NULL)
-        goto error;
-    r = PyObject_IsTrue(res);
-    Py_DECREF(res);
-    if (r == -1)
-        goto error;
-    if (r == 1) {
-        PyObject *ci;
-        self->encoder = PyCodec_IncrementalEncoder(
-            encoding, errors);
-        if (self->encoder == NULL)
-            goto error;
-        /* Get the normalized named of the codec */
-        ci = _PyCodec_Lookup(encoding);
-        if (ci == NULL)
-            goto error;
-        res = PyObject_GetAttrString(ci, "name");
-        Py_DECREF(ci);
-        if (res == NULL) {
-            if (PyErr_ExceptionMatches(PyExc_AttributeError))
-                PyErr_Clear();
-            else
-                goto error;
-        }
-        else if (PyString_Check(res)) {
-            encodefuncentry *e = encodefuncs;
-            while (e->name != NULL) {
-                if (!strcmp(PyString_AS_STRING(res), e->name)) {
-                    self->encodefunc = e->encodefunc;
-                    break;
-                }
-                e++;
-            }
-        }
-        Py_XDECREF(res);
-    }
-
-    self->buffer = buffer;
-    Py_INCREF(buffer);
-
-    if (Py_TYPE(buffer) == &PyBufferedReader_Type ||
-        Py_TYPE(buffer) == &PyBufferedWriter_Type ||
-        Py_TYPE(buffer) == &PyBufferedRandom_Type) {
-        raw = PyObject_GetAttrString(buffer, "raw");
-        /* Cache the raw FileIO object to speed up 'closed' checks */
-        if (raw == NULL) {
-            if (PyErr_ExceptionMatches(PyExc_AttributeError))
-                PyErr_Clear();
-            else
-                goto error;
-        }
-        else if (Py_TYPE(raw) == &PyFileIO_Type)
-            self->raw = raw;
-        else
-            Py_DECREF(raw);
-    }
-
-    res = PyObject_CallMethod(buffer, "seekable", NULL);
-    if (res == NULL)
-        goto error;
-    self->seekable = self->telling = PyObject_IsTrue(res);
-    Py_DECREF(res);
-
-    self->encoding_start_of_stream = 0;
-    if (self->seekable && self->encoder) {
-        PyObject *cookieObj;
-        int cmp;
-
-        self->encoding_start_of_stream = 1;
-
-        cookieObj = PyObject_CallMethodObjArgs(buffer, _PyIO_str_tell, NULL);
-        if (cookieObj == NULL)
-            goto error;
-
-        cmp = PyObject_RichCompareBool(cookieObj, _PyIO_zero, Py_EQ);
-        Py_DECREF(cookieObj);
-        if (cmp < 0) {
-            goto error;
-        }
-
-        if (cmp == 0) {
-            self->encoding_start_of_stream = 0;
-            res = PyObject_CallMethodObjArgs(self->encoder, _PyIO_str_setstate,
-                                             _PyIO_zero, NULL);
-            if (res == NULL)
-                goto error;
-            Py_DECREF(res);
-        }
-    }
-
-    self->ok = 1;
-    return 0;
-
-  error:
-    return -1;
-}
-
-static int
-_textiowrapper_clear(textio *self)
-{
-    if (self->ok && _PyIOBase_finalize((PyObject *) self) < 0)
-        return -1;
-    self->ok = 0;
-    Py_CLEAR(self->buffer);
-    Py_CLEAR(self->encoding);
-    Py_CLEAR(self->encoder);
-    Py_CLEAR(self->decoder);
-    Py_CLEAR(self->readnl);
-    Py_CLEAR(self->decoded_chars);
-    Py_CLEAR(self->pending_bytes);
-    Py_CLEAR(self->snapshot);
-    Py_CLEAR(self->errors);
-    Py_CLEAR(self->raw);
-    return 0;
-}
-
-static void
-textiowrapper_dealloc(textio *self)
-{
-    if (_textiowrapper_clear(self) < 0)
-        return;
-    _PyObject_GC_UNTRACK(self);
-    if (self->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *)self);
-    Py_CLEAR(self->dict);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-static int
-textiowrapper_traverse(textio *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->buffer);
-    Py_VISIT(self->encoding);
-    Py_VISIT(self->encoder);
-    Py_VISIT(self->decoder);
-    Py_VISIT(self->readnl);
-    Py_VISIT(self->decoded_chars);
-    Py_VISIT(self->pending_bytes);
-    Py_VISIT(self->snapshot);
-    Py_VISIT(self->errors);
-    Py_VISIT(self->raw);
-
-    Py_VISIT(self->dict);
-    return 0;
-}
-
-static int
-textiowrapper_clear(textio *self)
-{
-    if (_textiowrapper_clear(self) < 0)
-        return -1;
-    Py_CLEAR(self->dict);
-    return 0;
-}
-
-static PyObject *
-textiowrapper_closed_get(textio *self, void *context);
-
-/* This macro takes some shortcuts to make the common case faster. */
-#define CHECK_CLOSED(self) \
-    do { \
-        int r; \
-        PyObject *_res; \
-        if (Py_TYPE(self) == &PyTextIOWrapper_Type) { \
-            if (self->raw != NULL) \
-                r = _PyFileIO_closed(self->raw); \
-            else { \
-                _res = textiowrapper_closed_get(self, NULL); \
-                if (_res == NULL) \
-                    return NULL; \
-                r = PyObject_IsTrue(_res); \
-                Py_DECREF(_res); \
-                if (r < 0) \
-                    return NULL; \
-            } \
-            if (r > 0) { \
-                PyErr_SetString(PyExc_ValueError, \
-                                "I/O operation on closed file."); \
-                return NULL; \
-            } \
-        } \
-        else if (_PyIOBase_check_closed((PyObject *)self, Py_True) == NULL) \
-            return NULL; \
-    } while (0)
-
-#define CHECK_INITIALIZED(self) \
-    if (self->ok <= 0) { \
-        if (self->detached) { \
-            PyErr_SetString(PyExc_ValueError, \
-                 "underlying buffer has been detached"); \
-        } else {                                   \
-            PyErr_SetString(PyExc_ValueError, \
-                "I/O operation on uninitialized object"); \
-        } \
-        return NULL; \
-    }
-
-#define CHECK_INITIALIZED_INT(self) \
-    if (self->ok <= 0) { \
-        if (self->detached) { \
-            PyErr_SetString(PyExc_ValueError, \
-                 "underlying buffer has been detached"); \
-        } else {                                   \
-            PyErr_SetString(PyExc_ValueError, \
-                "I/O operation on uninitialized object"); \
-        } \
-        return -1; \
-    }
-
-
-static PyObject *
-textiowrapper_detach(textio *self)
-{
-    PyObject *buffer, *res;
-    CHECK_INITIALIZED(self);
-    res = PyObject_CallMethodObjArgs((PyObject *)self, _PyIO_str_flush, NULL);
-    if (res == NULL)
-        return NULL;
-    Py_DECREF(res);
-    buffer = self->buffer;
-    self->buffer = NULL;
-    self->detached = 1;
-    self->ok = 0;
-    return buffer;
-}
-
-Py_LOCAL_INLINE(const Py_UNICODE *)
-findchar(const Py_UNICODE *s, Py_ssize_t size, Py_UNICODE ch)
-{
-    /* like wcschr, but doesn't stop at NULL characters */
-    while (size-- > 0) {
-        if (*s == ch)
-            return s;
-        s++;
-    }
-    return NULL;
-}
-
-/* Flush the internal write buffer. This doesn't explicitly flush the
-   underlying buffered object, though. */
-static int
-_textiowrapper_writeflush(textio *self)
-{
-    PyObject *pending, *b, *ret;
-
-    if (self->pending_bytes == NULL)
-        return 0;
-
-    pending = self->pending_bytes;
-    Py_INCREF(pending);
-    self->pending_bytes_count = 0;
-    Py_CLEAR(self->pending_bytes);
-
-    b = _PyBytes_Join(_PyIO_empty_bytes, pending);
-    Py_DECREF(pending);
-    if (b == NULL)
-        return -1;
-    ret = PyObject_CallMethodObjArgs(self->buffer,
-                                     _PyIO_str_write, b, NULL);
-    Py_DECREF(b);
-    if (ret == NULL)
-        return -1;
-    Py_DECREF(ret);
-    return 0;
-}
-
-static PyObject *
-textiowrapper_write(textio *self, PyObject *args)
-{
-    PyObject *ret;
-    PyObject *text; /* owned reference */
-    PyObject *b;
-    Py_ssize_t textlen;
-    int haslf = 0;
-    int needflush = 0;
-
-    CHECK_INITIALIZED(self);
-
-    if (!PyArg_ParseTuple(args, "U:write", &text)) {
-        return NULL;
-    }
-
-    CHECK_CLOSED(self);
-
-    if (self->encoder == NULL) {
-        PyErr_SetString(PyExc_IOError, "not writable");
-        return NULL;
-    }
-
-    Py_INCREF(text);
-
-    textlen = PyUnicode_GetSize(text);
-
-    if ((self->writetranslate && self->writenl != NULL) || self->line_buffering)
-        if (findchar(PyUnicode_AS_UNICODE(text),
-                     PyUnicode_GET_SIZE(text), '\n'))
-            haslf = 1;
-
-    if (haslf && self->writetranslate && self->writenl != NULL) {
-        PyObject *newtext = PyObject_CallMethod(
-            text, "replace", "ss", "\n", self->writenl);
-        Py_DECREF(text);
-        if (newtext == NULL)
-            return NULL;
-        text = newtext;
-    }
-
-    if (self->line_buffering &&
-        (haslf ||
-         findchar(PyUnicode_AS_UNICODE(text),
-                  PyUnicode_GET_SIZE(text), '\r')))
-        needflush = 1;
-
-    /* XXX What if we were just reading? */
-    if (self->encodefunc != NULL) {
-        b = (*self->encodefunc)((PyObject *) self, text);
-        self->encoding_start_of_stream = 0;
-    }
-    else
-        b = PyObject_CallMethodObjArgs(self->encoder,
-                                       _PyIO_str_encode, text, NULL);
-    Py_DECREF(text);
-    if (b == NULL)
-        return NULL;
-
-    if (self->pending_bytes == NULL) {
-        self->pending_bytes = PyList_New(0);
-        if (self->pending_bytes == NULL) {
-            Py_DECREF(b);
-            return NULL;
-        }
-        self->pending_bytes_count = 0;
-    }
-    if (PyList_Append(self->pending_bytes, b) < 0) {
-        Py_DECREF(b);
-        return NULL;
-    }
-    self->pending_bytes_count += PyBytes_GET_SIZE(b);
-    Py_DECREF(b);
-    if (self->pending_bytes_count > self->chunk_size || needflush) {
-        if (_textiowrapper_writeflush(self) < 0)
-            return NULL;
-    }
-
-    if (needflush) {
-        ret = PyObject_CallMethodObjArgs(self->buffer, _PyIO_str_flush, NULL);
-        if (ret == NULL)
-            return NULL;
-        Py_DECREF(ret);
-    }
-
-    Py_CLEAR(self->snapshot);
-
-    if (self->decoder) {
-        ret = PyObject_CallMethod(self->decoder, "reset", NULL);
-        if (ret == NULL)
-            return NULL;
-        Py_DECREF(ret);
-    }
-
-    return PyLong_FromSsize_t(textlen);
-}
-
-/* Steal a reference to chars and store it in the decoded_char buffer;
- */
-static void
-textiowrapper_set_decoded_chars(textio *self, PyObject *chars)
-{
-    Py_CLEAR(self->decoded_chars);
-    self->decoded_chars = chars;
-    self->decoded_chars_used = 0;
-}
-
-static PyObject *
-textiowrapper_get_decoded_chars(textio *self, Py_ssize_t n)
-{
-    PyObject *chars;
-    Py_ssize_t avail;
-
-    if (self->decoded_chars == NULL)
-        return PyUnicode_FromStringAndSize(NULL, 0);
-
-    avail = (PyUnicode_GET_SIZE(self->decoded_chars)
-             - self->decoded_chars_used);
-
-    assert(avail >= 0);
-
-    if (n < 0 || n > avail)
-        n = avail;
-
-    if (self->decoded_chars_used > 0 || n < avail) {
-        chars = PyUnicode_FromUnicode(
-            PyUnicode_AS_UNICODE(self->decoded_chars)
-            + self->decoded_chars_used, n);
-        if (chars == NULL)
-            return NULL;
-    }
-    else {
-        chars = self->decoded_chars;
-        Py_INCREF(chars);
-    }
-
-    self->decoded_chars_used += n;
-    return chars;
-}
-
-/* Read and decode the next chunk of data from the BufferedReader.
- */
-static int
-textiowrapper_read_chunk(textio *self)
-{
-    PyObject *dec_buffer = NULL;
-    PyObject *dec_flags = NULL;
-    PyObject *input_chunk = NULL;
-    PyObject *decoded_chars, *chunk_size;
-    int eof;
-
-    /* The return value is True unless EOF was reached.  The decoded string is
-     * placed in self._decoded_chars (replacing its previous value).  The
-     * entire input chunk is sent to the decoder, though some of it may remain
-     * buffered in the decoder, yet to be converted.
-     */
-
-    if (self->decoder == NULL) {
-        PyErr_SetString(PyExc_IOError, "not readable");
-        return -1;
-    }
-
-    if (self->telling) {
-        /* To prepare for tell(), we need to snapshot a point in the file
-         * where the decoder's input buffer is empty.
-         */
-
-        PyObject *state = PyObject_CallMethodObjArgs(self->decoder,
-                                                     _PyIO_str_getstate, NULL);
-        if (state == NULL)
-            return -1;
-        /* Given this, we know there was a valid snapshot point
-         * len(dec_buffer) bytes ago with decoder state (b'', dec_flags).
-         */
-        if (PyArg_Parse(state, "(OO)", &dec_buffer, &dec_flags) < 0) {
-            Py_DECREF(state);
-            return -1;
-        }
-        Py_INCREF(dec_buffer);
-        Py_INCREF(dec_flags);
-        Py_DECREF(state);
-    }
-
-    /* Read a chunk, decode it, and put the result in self._decoded_chars. */
-    chunk_size = PyLong_FromSsize_t(self->chunk_size);
-    if (chunk_size == NULL)
-        goto fail;
-    input_chunk = PyObject_CallMethodObjArgs(self->buffer,
-        _PyIO_str_read1, chunk_size, NULL);
-    Py_DECREF(chunk_size);
-    if (input_chunk == NULL)
-        goto fail;
-    assert(PyBytes_Check(input_chunk));
-
-    eof = (PyBytes_Size(input_chunk) == 0);
-
-    if (Py_TYPE(self->decoder) == &PyIncrementalNewlineDecoder_Type) {
-        decoded_chars = _PyIncrementalNewlineDecoder_decode(
-            self->decoder, input_chunk, eof);
-    }
-    else {
-        decoded_chars = PyObject_CallMethodObjArgs(self->decoder,
-            _PyIO_str_decode, input_chunk, eof ? Py_True : Py_False, NULL);
-    }
-
-    /* TODO sanity check: isinstance(decoded_chars, unicode) */
-    if (decoded_chars == NULL)
-        goto fail;
-    textiowrapper_set_decoded_chars(self, decoded_chars);
-    if (PyUnicode_GET_SIZE(decoded_chars) > 0)
-        eof = 0;
-
-    if (self->telling) {
-        /* At the snapshot point, len(dec_buffer) bytes before the read, the
-         * next input to be decoded is dec_buffer + input_chunk.
-         */
-        PyObject *next_input = PyNumber_Add(dec_buffer, input_chunk);
-        if (next_input == NULL)
-            goto fail;
-        assert (PyBytes_Check(next_input));
-        Py_DECREF(dec_buffer);
-        Py_CLEAR(self->snapshot);
-        self->snapshot = Py_BuildValue("NN", dec_flags, next_input);
-    }
-    Py_DECREF(input_chunk);
-
-    return (eof == 0);
-
-  fail:
-    Py_XDECREF(dec_buffer);
-    Py_XDECREF(dec_flags);
-    Py_XDECREF(input_chunk);
-    return -1;
-}
-
-static PyObject *
-textiowrapper_read(textio *self, PyObject *args)
-{
-    Py_ssize_t n = -1;
-    PyObject *result = NULL, *chunks = NULL;
-
-    CHECK_INITIALIZED(self);
-
-    if (!PyArg_ParseTuple(args, "|O&:read", &_PyIO_ConvertSsize_t, &n))
-        return NULL;
-
-    CHECK_CLOSED(self);
-
-    if (self->decoder == NULL) {
-        PyErr_SetString(PyExc_IOError, "not readable");
-        return NULL;
-    }
-
-    if (_textiowrapper_writeflush(self) < 0)
-        return NULL;
-
-    if (n < 0) {
-        /* Read everything */
-        PyObject *bytes = PyObject_CallMethod(self->buffer, "read", NULL);
-        PyObject *decoded, *final;
-        if (bytes == NULL)
-            goto fail;
-        decoded = PyObject_CallMethodObjArgs(self->decoder, _PyIO_str_decode,
-                                             bytes, Py_True, NULL);
-        Py_DECREF(bytes);
-        if (decoded == NULL)
-            goto fail;
-
-        result = textiowrapper_get_decoded_chars(self, -1);
-
-        if (result == NULL) {
-            Py_DECREF(decoded);
-            return NULL;
-        }
-
-        final = PyUnicode_Concat(result, decoded);
-        Py_DECREF(result);
-        Py_DECREF(decoded);
-        if (final == NULL)
-            goto fail;
-
-        Py_CLEAR(self->snapshot);
-        return final;
-    }
-    else {
-        int res = 1;
-        Py_ssize_t remaining = n;
-
-        result = textiowrapper_get_decoded_chars(self, n);
-        if (result == NULL)
-            goto fail;
-        remaining -= PyUnicode_GET_SIZE(result);
-
-        /* Keep reading chunks until we have n characters to return */
-        while (remaining > 0) {
-            res = textiowrapper_read_chunk(self);
-            if (res < 0)
-                goto fail;
-            if (res == 0)  /* EOF */
-                break;
-            if (chunks == NULL) {
-                chunks = PyList_New(0);
-                if (chunks == NULL)
-                    goto fail;
-            }
-            if (PyList_Append(chunks, result) < 0)
-                goto fail;
-            Py_DECREF(result);
-            result = textiowrapper_get_decoded_chars(self, remaining);
-            if (result == NULL)
-                goto fail;
-            remaining -= PyUnicode_GET_SIZE(result);
-        }
-        if (chunks != NULL) {
-            if (result != NULL && PyList_Append(chunks, result) < 0)
-                goto fail;
-            Py_CLEAR(result);
-            result = PyUnicode_Join(_PyIO_empty_str, chunks);
-            if (result == NULL)
-                goto fail;
-            Py_CLEAR(chunks);
-        }
-        return result;
-    }
-  fail:
-    Py_XDECREF(result);
-    Py_XDECREF(chunks);
-    return NULL;
-}
-
-
-/* NOTE: `end` must point to the real end of the Py_UNICODE storage,
-   that is to the NUL character. Otherwise the function will produce
-   incorrect results. */
-static Py_UNICODE *
-find_control_char(Py_UNICODE *start, Py_UNICODE *end, Py_UNICODE ch)
-{
-    Py_UNICODE *s = start;
-    for (;;) {
-        while (*s > ch)
-            s++;
-        if (*s == ch)
-            return s;
-        if (s == end)
-            return NULL;
-        s++;
-    }
-}
-
-Py_ssize_t
-_PyIO_find_line_ending(
-    int translated, int universal, PyObject *readnl,
-    Py_UNICODE *start, Py_UNICODE *end, Py_ssize_t *consumed)
-{
-    Py_ssize_t len = end - start;
-
-    if (translated) {
-        /* Newlines are already translated, only search for \n */
-        Py_UNICODE *pos = find_control_char(start, end, '\n');
-        if (pos != NULL)
-            return pos - start + 1;
-        else {
-            *consumed = len;
-            return -1;
-        }
-    }
-    else if (universal) {
-        /* Universal newline search. Find any of \r, \r\n, \n
-         * The decoder ensures that \r\n are not split in two pieces
-         */
-        Py_UNICODE *s = start;
-        for (;;) {
-            Py_UNICODE ch;
-            /* Fast path for non-control chars. The loop always ends
-               since the Py_UNICODE storage is NUL-terminated. */
-            while (*s > '\r')
-                s++;
-            if (s >= end) {
-                *consumed = len;
-                return -1;
-            }
-            ch = *s++;
-            if (ch == '\n')
-                return s - start;
-            if (ch == '\r') {
-                if (*s == '\n')
-                    return s - start + 1;
-                else
-                    return s - start;
-            }
-        }
-    }
-    else {
-        /* Non-universal mode. */
-        Py_ssize_t readnl_len = PyString_GET_SIZE(readnl);
-        unsigned char *nl = (unsigned char *) PyString_AS_STRING(readnl);
-        if (readnl_len == 1) {
-            Py_UNICODE *pos = find_control_char(start, end, nl[0]);
-            if (pos != NULL)
-                return pos - start + 1;
-            *consumed = len;
-            return -1;
-        }
-        else {
-            Py_UNICODE *s = start;
-            Py_UNICODE *e = end - readnl_len + 1;
-            Py_UNICODE *pos;
-            if (e < s)
-                e = s;
-            while (s < e) {
-                Py_ssize_t i;
-                Py_UNICODE *pos = find_control_char(s, end, nl[0]);
-                if (pos == NULL || pos >= e)
-                    break;
-                for (i = 1; i < readnl_len; i++) {
-                    if (pos[i] != nl[i])
-                        break;
-                }
-                if (i == readnl_len)
-                    return pos - start + readnl_len;
-                s = pos + 1;
-            }
-            pos = find_control_char(e, end, nl[0]);
-            if (pos == NULL)
-                *consumed = len;
-            else
-                *consumed = pos - start;
-            return -1;
-        }
-    }
-}
-
-static PyObject *
-_textiowrapper_readline(textio *self, Py_ssize_t limit)
-{
-    PyObject *line = NULL, *chunks = NULL, *remaining = NULL;
-    Py_ssize_t start, endpos, chunked, offset_to_buffer;
-    int res;
-
-    CHECK_CLOSED(self);
-
-    if (_textiowrapper_writeflush(self) < 0)
-        return NULL;
-
-    chunked = 0;
-
-    while (1) {
-        Py_UNICODE *ptr;
-        Py_ssize_t line_len;
-        Py_ssize_t consumed = 0;
-
-        /* First, get some data if necessary */
-        res = 1;
-        while (!self->decoded_chars ||
-               !PyUnicode_GET_SIZE(self->decoded_chars)) {
-            res = textiowrapper_read_chunk(self);
-            if (res < 0)
-                goto error;
-            if (res == 0)
-                break;
-        }
-        if (res == 0) {
-            /* end of file */
-            textiowrapper_set_decoded_chars(self, NULL);
-            Py_CLEAR(self->snapshot);
-            start = endpos = offset_to_buffer = 0;
-            break;
-        }
-
-        if (remaining == NULL) {
-            line = self->decoded_chars;
-            start = self->decoded_chars_used;
-            offset_to_buffer = 0;
-            Py_INCREF(line);
-        }
-        else {
-            assert(self->decoded_chars_used == 0);
-            line = PyUnicode_Concat(remaining, self->decoded_chars);
-            start = 0;
-            offset_to_buffer = PyUnicode_GET_SIZE(remaining);
-            Py_CLEAR(remaining);
-            if (line == NULL)
-                goto error;
-        }
-
-        ptr = PyUnicode_AS_UNICODE(line);
-        line_len = PyUnicode_GET_SIZE(line);
-
-        endpos = _PyIO_find_line_ending(
-            self->readtranslate, self->readuniversal, self->readnl,
-            ptr + start, ptr + line_len, &consumed);
-        if (endpos >= 0) {
-            endpos += start;
-            if (limit >= 0 && (endpos - start) + chunked >= limit)
-                endpos = start + limit - chunked;
-            break;
-        }
-
-        /* We can put aside up to `endpos` */
-        endpos = consumed + start;
-        if (limit >= 0 && (endpos - start) + chunked >= limit) {
-            /* Didn't find line ending, but reached length limit */
-            endpos = start + limit - chunked;
-            break;
-        }
-
-        if (endpos > start) {
-            /* No line ending seen yet - put aside current data */
-            PyObject *s;
-            if (chunks == NULL) {
-                chunks = PyList_New(0);
-                if (chunks == NULL)
-                    goto error;
-            }
-            s = PyUnicode_FromUnicode(ptr + start, endpos - start);
-            if (s == NULL)
-                goto error;
-            if (PyList_Append(chunks, s) < 0) {
-                Py_DECREF(s);
-                goto error;
-            }
-            chunked += PyUnicode_GET_SIZE(s);
-            Py_DECREF(s);
-        }
-        /* There may be some remaining bytes we'll have to prepend to the
-           next chunk of data */
-        if (endpos < line_len) {
-            remaining = PyUnicode_FromUnicode(
-                    ptr + endpos, line_len - endpos);
-            if (remaining == NULL)
-                goto error;
-        }
-        Py_CLEAR(line);
-        /* We have consumed the buffer */
-        textiowrapper_set_decoded_chars(self, NULL);
-    }
-
-    if (line != NULL) {
-        /* Our line ends in the current buffer */
-        self->decoded_chars_used = endpos - offset_to_buffer;
-        if (start > 0 || endpos < PyUnicode_GET_SIZE(line)) {
-            if (start == 0 && Py_REFCNT(line) == 1) {
-                if (PyUnicode_Resize(&line, endpos) < 0)
-                    goto error;
-            }
-            else {
-                PyObject *s = PyUnicode_FromUnicode(
-                        PyUnicode_AS_UNICODE(line) + start, endpos - start);
-                Py_CLEAR(line);
-                if (s == NULL)
-                    goto error;
-                line = s;
-            }
-        }
-    }
-    if (remaining != NULL) {
-        if (chunks == NULL) {
-            chunks = PyList_New(0);
-            if (chunks == NULL)
-                goto error;
-        }
-        if (PyList_Append(chunks, remaining) < 0)
-            goto error;
-        Py_CLEAR(remaining);
-    }
-    if (chunks != NULL) {
-        if (line != NULL && PyList_Append(chunks, line) < 0)
-            goto error;
-        Py_CLEAR(line);
-        line = PyUnicode_Join(_PyIO_empty_str, chunks);
-        if (line == NULL)
-            goto error;
-        Py_DECREF(chunks);
-    }
-    if (line == NULL)
-        line = PyUnicode_FromStringAndSize(NULL, 0);
-
-    return line;
-
-  error:
-    Py_XDECREF(chunks);
-    Py_XDECREF(remaining);
-    Py_XDECREF(line);
-    return NULL;
-}
-
-static PyObject *
-textiowrapper_readline(textio *self, PyObject *args)
-{
-    PyObject *limitobj = NULL;
-    Py_ssize_t limit = -1;
-
-    CHECK_INITIALIZED(self);
-    if (!PyArg_ParseTuple(args, "|O:readline", &limitobj)) {
-        return NULL;
-    }
-    if (limitobj) {
-        if (!PyNumber_Check(limitobj)) {
-            PyErr_Format(PyExc_TypeError,
-                         "integer argument expected, got '%.200s'",
-                         Py_TYPE(limitobj)->tp_name);
-            return NULL;
-        }
-        limit = PyNumber_AsSsize_t(limitobj, PyExc_OverflowError);
-        if (limit == -1 && PyErr_Occurred())
-            return NULL;
-    }
-    return _textiowrapper_readline(self, limit);
-}
-
-/* Seek and Tell */
-
-typedef struct {
-    Py_off_t start_pos;
-    int dec_flags;
-    int bytes_to_feed;
-    int chars_to_skip;
-    char need_eof;
-} cookie_type;
-
-/*
-   To speed up cookie packing/unpacking, we store the fields in a temporary
-   string and call _PyLong_FromByteArray() or _PyLong_AsByteArray (resp.).
-   The following macros define at which offsets in the intermediary byte
-   string the various CookieStruct fields will be stored.
- */
-
-#define COOKIE_BUF_LEN      (sizeof(Py_off_t) + 3 * sizeof(int) + sizeof(char))
-
-#if defined(WORDS_BIGENDIAN)
-
-# define IS_LITTLE_ENDIAN   0
-
-/* We want the least significant byte of start_pos to also be the least
-   significant byte of the cookie, which means that in big-endian mode we
-   must copy the fields in reverse order. */
-
-# define OFF_START_POS      (sizeof(char) + 3 * sizeof(int))
-# define OFF_DEC_FLAGS      (sizeof(char) + 2 * sizeof(int))
-# define OFF_BYTES_TO_FEED  (sizeof(char) + sizeof(int))
-# define OFF_CHARS_TO_SKIP  (sizeof(char))
-# define OFF_NEED_EOF       0
-
-#else
-
-# define IS_LITTLE_ENDIAN   1
-
-/* Little-endian mode: the least significant byte of start_pos will
-   naturally end up the least significant byte of the cookie. */
-
-# define OFF_START_POS      0
-# define OFF_DEC_FLAGS      (sizeof(Py_off_t))
-# define OFF_BYTES_TO_FEED  (sizeof(Py_off_t) + sizeof(int))
-# define OFF_CHARS_TO_SKIP  (sizeof(Py_off_t) + 2 * sizeof(int))
-# define OFF_NEED_EOF       (sizeof(Py_off_t) + 3 * sizeof(int))
-
-#endif
-
-static int
-textiowrapper_parse_cookie(cookie_type *cookie, PyObject *cookieObj)
-{
-    unsigned char buffer[COOKIE_BUF_LEN];
-    PyLongObject *cookieLong = (PyLongObject *)PyNumber_Long(cookieObj);
-    if (cookieLong == NULL)
-        return -1;
-
-    if (_PyLong_AsByteArray(cookieLong, buffer, sizeof(buffer),
-                            IS_LITTLE_ENDIAN, 0) < 0) {
-        Py_DECREF(cookieLong);
-        return -1;
-    }
-    Py_DECREF(cookieLong);
-
-    memcpy(&cookie->start_pos, buffer + OFF_START_POS, sizeof(cookie->start_pos));
-    memcpy(&cookie->dec_flags, buffer + OFF_DEC_FLAGS, sizeof(cookie->dec_flags));
-    memcpy(&cookie->bytes_to_feed, buffer + OFF_BYTES_TO_FEED, sizeof(cookie->bytes_to_feed));
-    memcpy(&cookie->chars_to_skip, buffer + OFF_CHARS_TO_SKIP, sizeof(cookie->chars_to_skip));
-    memcpy(&cookie->need_eof, buffer + OFF_NEED_EOF, sizeof(cookie->need_eof));
-
-    return 0;
-}
-
-static PyObject *
-textiowrapper_build_cookie(cookie_type *cookie)
-{
-    unsigned char buffer[COOKIE_BUF_LEN];
-
-    memcpy(buffer + OFF_START_POS, &cookie->start_pos, sizeof(cookie->start_pos));
-    memcpy(buffer + OFF_DEC_FLAGS, &cookie->dec_flags, sizeof(cookie->dec_flags));
-    memcpy(buffer + OFF_BYTES_TO_FEED, &cookie->bytes_to_feed, sizeof(cookie->bytes_to_feed));
-    memcpy(buffer + OFF_CHARS_TO_SKIP, &cookie->chars_to_skip, sizeof(cookie->chars_to_skip));
-    memcpy(buffer + OFF_NEED_EOF, &cookie->need_eof, sizeof(cookie->need_eof));
-
-    return _PyLong_FromByteArray(buffer, sizeof(buffer), IS_LITTLE_ENDIAN, 0);
-}
-#undef IS_LITTLE_ENDIAN
-
-static int
-_textiowrapper_decoder_setstate(textio *self, cookie_type *cookie)
-{
-    PyObject *res;
-    /* When seeking to the start of the stream, we call decoder.reset()
-       rather than decoder.getstate().
-       This is for a few decoders such as utf-16 for which the state value
-       at start is not (b"", 0) but e.g. (b"", 2) (meaning, in the case of
-       utf-16, that we are expecting a BOM).
-    */
-    if (cookie->start_pos == 0 && cookie->dec_flags == 0)
-        res = PyObject_CallMethodObjArgs(self->decoder, _PyIO_str_reset, NULL);
-    else
-        res = PyObject_CallMethod(self->decoder, "setstate",
-                                  "((si))", "", cookie->dec_flags);
-    if (res == NULL)
-        return -1;
-    Py_DECREF(res);
-    return 0;
-}
-
-static int
-_textiowrapper_encoder_setstate(textio *self, cookie_type *cookie)
-{
-    PyObject *res;
-    /* Same as _textiowrapper_decoder_setstate() above. */
-    if (cookie->start_pos == 0 && cookie->dec_flags == 0) {
-        res = PyObject_CallMethodObjArgs(self->encoder, _PyIO_str_reset, NULL);
-        self->encoding_start_of_stream = 1;
-    }
-    else {
-        res = PyObject_CallMethodObjArgs(self->encoder, _PyIO_str_setstate,
-                                         _PyIO_zero, NULL);
-        self->encoding_start_of_stream = 0;
-    }
-    if (res == NULL)
-        return -1;
-    Py_DECREF(res);
-    return 0;
-}
-
-static PyObject *
-textiowrapper_seek(textio *self, PyObject *args)
-{
-    PyObject *cookieObj, *posobj;
-    cookie_type cookie;
-    int whence = 0;
-    PyObject *res;
-    int cmp;
-
-    CHECK_INITIALIZED(self);
-
-    if (!PyArg_ParseTuple(args, "O|i:seek", &cookieObj, &whence))
-        return NULL;
-    CHECK_CLOSED(self);
-
-    Py_INCREF(cookieObj);
-
-    if (!self->seekable) {
-        PyErr_SetString(PyExc_IOError,
-                        "underlying stream is not seekable");
-        goto fail;
-    }
-
-    if (whence == 1) {
-        /* seek relative to current position */
-        cmp = PyObject_RichCompareBool(cookieObj, _PyIO_zero, Py_EQ);
-        if (cmp < 0)
-            goto fail;
-
-        if (cmp == 0) {
-            PyErr_SetString(PyExc_IOError,
-                            "can't do nonzero cur-relative seeks");
-            goto fail;
-        }
-
-        /* Seeking to the current position should attempt to
-         * sync the underlying buffer with the current position.
-         */
-        Py_DECREF(cookieObj);
-        cookieObj = PyObject_CallMethod((PyObject *)self, "tell", NULL);
-        if (cookieObj == NULL)
-            goto fail;
-    }
-    else if (whence == 2) {
-        /* seek relative to end of file */
-
-        cmp = PyObject_RichCompareBool(cookieObj, _PyIO_zero, Py_EQ);
-        if (cmp < 0)
-            goto fail;
-
-        if (cmp == 0) {
-            PyErr_SetString(PyExc_IOError,
-                            "can't do nonzero end-relative seeks");
-            goto fail;
-        }
-
-        res = PyObject_CallMethod((PyObject *)self, "flush", NULL);
-        if (res == NULL)
-            goto fail;
-        Py_DECREF(res);
-
-        textiowrapper_set_decoded_chars(self, NULL);
-        Py_CLEAR(self->snapshot);
-        if (self->decoder) {
-            res = PyObject_CallMethod(self->decoder, "reset", NULL);
-            if (res == NULL)
-                goto fail;
-            Py_DECREF(res);
-        }
-
-        res = PyObject_CallMethod(self->buffer, "seek", "ii", 0, 2);
-        Py_XDECREF(cookieObj);
-        return res;
-    }
-    else if (whence != 0) {
-        PyErr_Format(PyExc_ValueError,
-                     "invalid whence (%d, should be 0, 1 or 2)", whence);
-        goto fail;
-    }
-
-    cmp = PyObject_RichCompareBool(cookieObj, _PyIO_zero, Py_LT);
-    if (cmp < 0)
-        goto fail;
-
-    if (cmp == 1) {
-        PyObject *repr = PyObject_Repr(cookieObj);
-        if (repr != NULL) {
-            PyErr_Format(PyExc_ValueError,
-                         "negative seek position %s",
-                         PyString_AS_STRING(repr));
-            Py_DECREF(repr);
-        }
-        goto fail;
-    }
-
-    res = PyObject_CallMethodObjArgs((PyObject *)self, _PyIO_str_flush, NULL);
-    if (res == NULL)
-        goto fail;
-    Py_DECREF(res);
-
-    /* The strategy of seek() is to go back to the safe start point
-     * and replay the effect of read(chars_to_skip) from there.
-     */
-    if (textiowrapper_parse_cookie(&cookie, cookieObj) < 0)
-        goto fail;
-
-    /* Seek back to the safe start point. */
-    posobj = PyLong_FromOff_t(cookie.start_pos);
-    if (posobj == NULL)
-        goto fail;
-    res = PyObject_CallMethodObjArgs(self->buffer,
-                                     _PyIO_str_seek, posobj, NULL);
-    Py_DECREF(posobj);
-    if (res == NULL)
-        goto fail;
-    Py_DECREF(res);
-
-    textiowrapper_set_decoded_chars(self, NULL);
-    Py_CLEAR(self->snapshot);
-
-    /* Restore the decoder to its state from the safe start point. */
-    if (self->decoder) {
-        if (_textiowrapper_decoder_setstate(self, &cookie) < 0)
-            goto fail;
-    }
-
-    if (cookie.chars_to_skip) {
-        /* Just like _read_chunk, feed the decoder and save a snapshot. */
-        PyObject *input_chunk = PyObject_CallMethod(
-            self->buffer, "read", "i", cookie.bytes_to_feed);
-        PyObject *decoded;
-
-        if (input_chunk == NULL)
-            goto fail;
-
-        assert (PyBytes_Check(input_chunk));
-
-        self->snapshot = Py_BuildValue("iN", cookie.dec_flags, input_chunk);
-        if (self->snapshot == NULL) {
-            Py_DECREF(input_chunk);
-            goto fail;
-        }
-
-        decoded = PyObject_CallMethod(self->decoder, "decode",
-                                      "Oi", input_chunk, (int)cookie.need_eof);
-
-        if (decoded == NULL)
-            goto fail;
-
-        textiowrapper_set_decoded_chars(self, decoded);
-
-        /* Skip chars_to_skip of the decoded characters. */
-        if (PyUnicode_GetSize(self->decoded_chars) < cookie.chars_to_skip) {
-            PyErr_SetString(PyExc_IOError, "can't restore logical file position");
-            goto fail;
-        }
-        self->decoded_chars_used = cookie.chars_to_skip;
-    }
-    else {
-        self->snapshot = Py_BuildValue("is", cookie.dec_flags, "");
-        if (self->snapshot == NULL)
-            goto fail;
-    }
-
-    /* Finally, reset the encoder (merely useful for proper BOM handling) */
-    if (self->encoder) {
-        if (_textiowrapper_encoder_setstate(self, &cookie) < 0)
-            goto fail;
-    }
-    return cookieObj;
-  fail:
-    Py_XDECREF(cookieObj);
-    return NULL;
-
-}
-
-static PyObject *
-textiowrapper_tell(textio *self, PyObject *args)
-{
-    PyObject *res;
-    PyObject *posobj = NULL;
-    cookie_type cookie = {0,0,0,0,0};
-    PyObject *next_input;
-    Py_ssize_t chars_to_skip, chars_decoded;
-    PyObject *saved_state = NULL;
-    char *input, *input_end;
-
-    CHECK_INITIALIZED(self);
-    CHECK_CLOSED(self);
-
-    if (!self->seekable) {
-        PyErr_SetString(PyExc_IOError,
-                        "underlying stream is not seekable");
-        goto fail;
-    }
-    if (!self->telling) {
-        PyErr_SetString(PyExc_IOError,
-                        "telling position disabled by next() call");
-        goto fail;
-    }
-
-    if (_textiowrapper_writeflush(self) < 0)
-        return NULL;
-    res = PyObject_CallMethod((PyObject *)self, "flush", NULL);
-    if (res == NULL)
-        goto fail;
-    Py_DECREF(res);
-
-    posobj = PyObject_CallMethod(self->buffer, "tell", NULL);
-    if (posobj == NULL)
-        goto fail;
-
-    if (self->decoder == NULL || self->snapshot == NULL) {
-        assert (self->decoded_chars == NULL || PyUnicode_GetSize(self->decoded_chars) == 0);
-        return posobj;
-    }
-
-#if defined(HAVE_LARGEFILE_SUPPORT)
-    cookie.start_pos = PyLong_AsLongLong(posobj);
-#else
-    cookie.start_pos = PyLong_AsLong(posobj);
-#endif
-    if (PyErr_Occurred())
-        goto fail;
-
-    /* Skip backward to the snapshot point (see _read_chunk). */
-    if (!PyArg_Parse(self->snapshot, "(iO)", &cookie.dec_flags, &next_input))
-        goto fail;
-
-    assert (PyBytes_Check(next_input));
-
-    cookie.start_pos -= PyBytes_GET_SIZE(next_input);
-
-    /* How many decoded characters have been used up since the snapshot? */
-    if (self->decoded_chars_used == 0)  {
-        /* We haven't moved from the snapshot point. */
-        Py_DECREF(posobj);
-        return textiowrapper_build_cookie(&cookie);
-    }
-
-    chars_to_skip = self->decoded_chars_used;
-
-    /* Starting from the snapshot position, we will walk the decoder
-     * forward until it gives us enough decoded characters.
-     */
-    saved_state = PyObject_CallMethodObjArgs(self->decoder,
-                                             _PyIO_str_getstate, NULL);
-    if (saved_state == NULL)
-        goto fail;
-
-    /* Note our initial start point. */
-    if (_textiowrapper_decoder_setstate(self, &cookie) < 0)
-        goto fail;
-
-    /* Feed the decoder one byte at a time.  As we go, note the
-     * nearest "safe start point" before the current location
-     * (a point where the decoder has nothing buffered, so seek()
-     * can safely start from there and advance to this location).
-     */
-    chars_decoded = 0;
-    input = PyBytes_AS_STRING(next_input);
-    input_end = input + PyBytes_GET_SIZE(next_input);
-    while (input < input_end) {
-        PyObject *state;
-        char *dec_buffer;
-        Py_ssize_t dec_buffer_len;
-        int dec_flags;
-
-        PyObject *decoded = PyObject_CallMethod(
-            self->decoder, "decode", "s#", input, 1);
-        if (decoded == NULL)
-            goto fail;
-        assert (PyUnicode_Check(decoded));
-        chars_decoded += PyUnicode_GET_SIZE(decoded);
-        Py_DECREF(decoded);
-
-        cookie.bytes_to_feed += 1;
-
-        state = PyObject_CallMethodObjArgs(self->decoder,
-                                           _PyIO_str_getstate, NULL);
-        if (state == NULL)
-            goto fail;
-        if (!PyArg_Parse(state, "(s#i)", &dec_buffer, &dec_buffer_len, &dec_flags)) {
-            Py_DECREF(state);
-            goto fail;
-        }
-        Py_DECREF(state);
-
-        if (dec_buffer_len == 0 && chars_decoded <= chars_to_skip) {
-            /* Decoder buffer is empty, so this is a safe start point. */
-            cookie.start_pos += cookie.bytes_to_feed;
-            chars_to_skip -= chars_decoded;
-            cookie.dec_flags = dec_flags;
-            cookie.bytes_to_feed = 0;
-            chars_decoded = 0;
-        }
-        if (chars_decoded >= chars_to_skip)
-            break;
-        input++;
-    }
-    if (input == input_end) {
-        /* We didn't get enough decoded data; signal EOF to get more. */
-        PyObject *decoded = PyObject_CallMethod(
-            self->decoder, "decode", "si", "", /* final = */ 1);
-        if (decoded == NULL)
-            goto fail;
-        assert (PyUnicode_Check(decoded));
-        chars_decoded += PyUnicode_GET_SIZE(decoded);
-        Py_DECREF(decoded);
-        cookie.need_eof = 1;
-
-        if (chars_decoded < chars_to_skip) {
-            PyErr_SetString(PyExc_IOError,
-                            "can't reconstruct logical file position");
-            goto fail;
-        }
-    }
-
-    /* finally */
-    Py_XDECREF(posobj);
-    res = PyObject_CallMethod(self->decoder, "setstate", "(O)", saved_state);
-    Py_DECREF(saved_state);
-    if (res == NULL)
-        return NULL;
-    Py_DECREF(res);
-
-    /* The returned cookie corresponds to the last safe start point. */
-    cookie.chars_to_skip = Py_SAFE_DOWNCAST(chars_to_skip, Py_ssize_t, int);
-    return textiowrapper_build_cookie(&cookie);
-
-  fail:
-    Py_XDECREF(posobj);
-    if (saved_state) {
-        PyObject *type, *value, *traceback;
-        PyErr_Fetch(&type, &value, &traceback);
-
-        res = PyObject_CallMethod(self->decoder, "setstate", "(O)", saved_state);
-        Py_DECREF(saved_state);
-        if (res == NULL)
-            return NULL;
-        Py_DECREF(res);
-
-        PyErr_Restore(type, value, traceback);
-    }
-    return NULL;
-}
-
-static PyObject *
-textiowrapper_truncate(textio *self, PyObject *args)
-{
-    PyObject *pos = Py_None;
-    PyObject *res;
-
-    CHECK_INITIALIZED(self)
-    if (!PyArg_ParseTuple(args, "|O:truncate", &pos)) {
-        return NULL;
-    }
-
-    res = PyObject_CallMethodObjArgs((PyObject *) self, _PyIO_str_flush, NULL);
-    if (res == NULL)
-        return NULL;
-    Py_DECREF(res);
-
-    return PyObject_CallMethodObjArgs(self->buffer, _PyIO_str_truncate, pos, NULL);
-}
-
-static PyObject *
-textiowrapper_repr(textio *self)
-{
-    PyObject *nameobj, *res;
-    PyObject *namerepr = NULL, *encrepr = NULL;
-
-    CHECK_INITIALIZED(self);
-
-    nameobj = PyObject_GetAttrString((PyObject *) self, "name");
-    if (nameobj == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_AttributeError))
-            PyErr_Clear();
-        else
-            goto error;
-        encrepr = PyObject_Repr(self->encoding);
-        res = PyString_FromFormat("<_io.TextIOWrapper encoding=%s>",
-                                   PyString_AS_STRING(encrepr));
-    }
-    else {
-        encrepr = PyObject_Repr(self->encoding);
-        namerepr = PyObject_Repr(nameobj);
-        res = PyString_FromFormat("<_io.TextIOWrapper name=%s encoding=%s>",
-                                   PyString_AS_STRING(namerepr),
-                                   PyString_AS_STRING(encrepr));
-        Py_DECREF(nameobj);
-    }
-    Py_XDECREF(namerepr);
-    Py_XDECREF(encrepr);
-    return res;
-
-error:
-    Py_XDECREF(namerepr);
-    Py_XDECREF(encrepr);
-    return NULL;
-}
-
-
-/* Inquiries */
-
-static PyObject *
-textiowrapper_fileno(textio *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self);
-    return PyObject_CallMethod(self->buffer, "fileno", NULL);
-}
-
-static PyObject *
-textiowrapper_seekable(textio *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self);
-    return PyObject_CallMethod(self->buffer, "seekable", NULL);
-}
-
-static PyObject *
-textiowrapper_readable(textio *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self);
-    return PyObject_CallMethod(self->buffer, "readable", NULL);
-}
-
-static PyObject *
-textiowrapper_writable(textio *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self);
-    return PyObject_CallMethod(self->buffer, "writable", NULL);
-}
-
-static PyObject *
-textiowrapper_isatty(textio *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self);
-    return PyObject_CallMethod(self->buffer, "isatty", NULL);
-}
-
-static PyObject *
-textiowrapper_flush(textio *self, PyObject *args)
-{
-    CHECK_INITIALIZED(self);
-    CHECK_CLOSED(self);
-    self->telling = self->seekable;
-    if (_textiowrapper_writeflush(self) < 0)
-        return NULL;
-    return PyObject_CallMethod(self->buffer, "flush", NULL);
-}
-
-static PyObject *
-textiowrapper_close(textio *self, PyObject *args)
-{
-    PyObject *res;
-    int r;
-    CHECK_INITIALIZED(self);
-
-    res = textiowrapper_closed_get(self, NULL);
-    if (res == NULL)
-        return NULL;
-    r = PyObject_IsTrue(res);
-    Py_DECREF(res);
-    if (r < 0)
-        return NULL;
-    
-    if (r > 0) {
-        Py_RETURN_NONE; /* stream already closed */
-    }
-    else {
-        res = PyObject_CallMethod((PyObject *)self, "flush", NULL);
-        if (res == NULL) {
-            return NULL;
-        }
-        else
-            Py_DECREF(res);
-
-        return PyObject_CallMethod(self->buffer, "close", NULL);
-    }
-}
-
-static PyObject *
-textiowrapper_iternext(textio *self)
-{
-    PyObject *line;
-
-    CHECK_INITIALIZED(self);
-
-    self->telling = 0;
-    if (Py_TYPE(self) == &PyTextIOWrapper_Type) {
-        /* Skip method call overhead for speed */
-        line = _textiowrapper_readline(self, -1);
-    }
-    else {
-        line = PyObject_CallMethodObjArgs((PyObject *)self,
-                                           _PyIO_str_readline, NULL);
-        if (line && !PyUnicode_Check(line)) {
-            PyErr_Format(PyExc_IOError,
-                         "readline() should have returned an str object, "
-                         "not '%.200s'", Py_TYPE(line)->tp_name);
-            Py_DECREF(line);
-            return NULL;
-        }
-    }
-
-    if (line == NULL)
-        return NULL;
-
-    if (PyUnicode_GET_SIZE(line) == 0) {
-        /* Reached EOF or would have blocked */
-        Py_DECREF(line);
-        Py_CLEAR(self->snapshot);
-        self->telling = self->seekable;
-        return NULL;
-    }
-
-    return line;
-}
-
-static PyObject *
-textiowrapper_name_get(textio *self, void *context)
-{
-    CHECK_INITIALIZED(self);
-    return PyObject_GetAttrString(self->buffer, "name");
-}
-
-static PyObject *
-textiowrapper_closed_get(textio *self, void *context)
-{
-    CHECK_INITIALIZED(self);
-    return PyObject_GetAttr(self->buffer, _PyIO_str_closed);
-}
-
-static PyObject *
-textiowrapper_newlines_get(textio *self, void *context)
-{
-    PyObject *res;
-    CHECK_INITIALIZED(self);
-    if (self->decoder == NULL)
-        Py_RETURN_NONE;
-    res = PyObject_GetAttr(self->decoder, _PyIO_str_newlines);
-    if (res == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
-            PyErr_Clear();
-            Py_RETURN_NONE;
-        }
-        else {
-            return NULL;
-        }
-    }
-    return res;
-}
-
-static PyObject *
-textiowrapper_errors_get(textio *self, void *context)
-{
-    CHECK_INITIALIZED(self);
-    Py_INCREF(self->errors);
-    return self->errors;
-}
-
-static PyObject *
-textiowrapper_chunk_size_get(textio *self, void *context)
-{
-    CHECK_INITIALIZED(self);
-    return PyLong_FromSsize_t(self->chunk_size);
-}
-
-static int
-textiowrapper_chunk_size_set(textio *self, PyObject *arg, void *context)
-{
-    Py_ssize_t n;
-    CHECK_INITIALIZED_INT(self);
-    n = PyNumber_AsSsize_t(arg, PyExc_TypeError);
-    if (n == -1 && PyErr_Occurred())
-        return -1;
-    if (n <= 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "a strictly positive integer is required");
-        return -1;
-    }
-    self->chunk_size = n;
-    return 0;
-}
-
-static PyMethodDef textiowrapper_methods[] = {
-    {"detach", (PyCFunction)textiowrapper_detach, METH_NOARGS},
-    {"write", (PyCFunction)textiowrapper_write, METH_VARARGS},
-    {"read", (PyCFunction)textiowrapper_read, METH_VARARGS},
-    {"readline", (PyCFunction)textiowrapper_readline, METH_VARARGS},
-    {"flush", (PyCFunction)textiowrapper_flush, METH_NOARGS},
-    {"close", (PyCFunction)textiowrapper_close, METH_NOARGS},
-
-    {"fileno", (PyCFunction)textiowrapper_fileno, METH_NOARGS},
-    {"seekable", (PyCFunction)textiowrapper_seekable, METH_NOARGS},
-    {"readable", (PyCFunction)textiowrapper_readable, METH_NOARGS},
-    {"writable", (PyCFunction)textiowrapper_writable, METH_NOARGS},
-    {"isatty", (PyCFunction)textiowrapper_isatty, METH_NOARGS},
-
-    {"seek", (PyCFunction)textiowrapper_seek, METH_VARARGS},
-    {"tell", (PyCFunction)textiowrapper_tell, METH_NOARGS},
-    {"truncate", (PyCFunction)textiowrapper_truncate, METH_VARARGS},
-    {NULL, NULL}
-};
-
-static PyMemberDef textiowrapper_members[] = {
-    {"encoding", T_OBJECT, offsetof(textio, encoding), READONLY},
-    {"buffer", T_OBJECT, offsetof(textio, buffer), READONLY},
-    {"line_buffering", T_BOOL, offsetof(textio, line_buffering), READONLY},
-    {NULL}
-};
-
-static PyGetSetDef textiowrapper_getset[] = {
-    {"name", (getter)textiowrapper_name_get, NULL, NULL},
-    {"closed", (getter)textiowrapper_closed_get, NULL, NULL},
-/*    {"mode", (getter)TextIOWrapper_mode_get, NULL, NULL},
-*/
-    {"newlines", (getter)textiowrapper_newlines_get, NULL, NULL},
-    {"errors", (getter)textiowrapper_errors_get, NULL, NULL},
-    {"_CHUNK_SIZE", (getter)textiowrapper_chunk_size_get,
-                    (setter)textiowrapper_chunk_size_set, NULL},
-    {NULL}
-};
-
-PyTypeObject PyTextIOWrapper_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_io.TextIOWrapper",        /*tp_name*/
-    sizeof(textio), /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    (destructor)textiowrapper_dealloc, /*tp_dealloc*/
-    0,                          /*tp_print*/
-    0,                          /*tp_getattr*/
-    0,                          /*tps_etattr*/
-    0,                          /*tp_compare */
-    (reprfunc)textiowrapper_repr,/*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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
-            | Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-    textiowrapper_doc,          /* tp_doc */
-    (traverseproc)textiowrapper_traverse, /* tp_traverse */
-    (inquiry)textiowrapper_clear, /* tp_clear */
-    0,                          /* tp_richcompare */
-    offsetof(textio, weakreflist), /*tp_weaklistoffset*/
-    0,                          /* tp_iter */
-    (iternextfunc)textiowrapper_iternext, /* tp_iternext */
-    textiowrapper_methods,      /* tp_methods */
-    textiowrapper_members,      /* tp_members */
-    textiowrapper_getset,       /* tp_getset */
-    0,                          /* tp_base */
-    0,                          /* tp_dict */
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    offsetof(textio, dict), /*tp_dictoffset*/
-    (initproc)textiowrapper_init, /* tp_init */
-    0,                          /* tp_alloc */
-    PyType_GenericNew,          /* tp_new */
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_json.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_json.c
deleted file mode 100644
index 0c7d06d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_json.c
+++ /dev/null
@@ -1,2421 +0,0 @@
-#include "Python.h"
-#include "structmember.h"
-#if PY_VERSION_HEX < 0x02060000 && !defined(Py_TYPE)
-#define Py_TYPE(ob)     (((PyObject*)(ob))->ob_type)
-#endif
-#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
-typedef int Py_ssize_t;
-#define PY_SSIZE_T_MAX INT_MAX
-#define PY_SSIZE_T_MIN INT_MIN
-#define PyInt_FromSsize_t PyInt_FromLong
-#define PyInt_AsSsize_t PyInt_AsLong
-#endif
-#ifndef Py_IS_FINITE
-#define Py_IS_FINITE(X) (!Py_IS_INFINITY(X) && !Py_IS_NAN(X))
-#endif
-
-#ifdef __GNUC__
-#define UNUSED __attribute__((__unused__))
-#else
-#define UNUSED
-#endif
-
-#define DEFAULT_ENCODING "utf-8"
-
-#define PyScanner_Check(op) PyObject_TypeCheck(op, &PyScannerType)
-#define PyScanner_CheckExact(op) (Py_TYPE(op) == &PyScannerType)
-#define PyEncoder_Check(op) PyObject_TypeCheck(op, &PyEncoderType)
-#define PyEncoder_CheckExact(op) (Py_TYPE(op) == &PyEncoderType)
-
-static PyTypeObject PyScannerType;
-static PyTypeObject PyEncoderType;
-
-typedef struct _PyScannerObject {
-    PyObject_HEAD
-    PyObject *encoding;
-    PyObject *strict;
-    PyObject *object_hook;
-    PyObject *pairs_hook;
-    PyObject *parse_float;
-    PyObject *parse_int;
-    PyObject *parse_constant;
-} PyScannerObject;
-
-static PyMemberDef scanner_members[] = {
-    {"encoding", T_OBJECT, offsetof(PyScannerObject, encoding), READONLY, "encoding"},
-    {"strict", T_OBJECT, offsetof(PyScannerObject, strict), READONLY, "strict"},
-    {"object_hook", T_OBJECT, offsetof(PyScannerObject, object_hook), READONLY, "object_hook"},
-    {"object_pairs_hook", T_OBJECT, offsetof(PyScannerObject, pairs_hook), READONLY, "object_pairs_hook"},
-    {"parse_float", T_OBJECT, offsetof(PyScannerObject, parse_float), READONLY, "parse_float"},
-    {"parse_int", T_OBJECT, offsetof(PyScannerObject, parse_int), READONLY, "parse_int"},
-    {"parse_constant", T_OBJECT, offsetof(PyScannerObject, parse_constant), READONLY, "parse_constant"},
-    {NULL}
-};
-
-typedef struct _PyEncoderObject {
-    PyObject_HEAD
-    PyObject *markers;
-    PyObject *defaultfn;
-    PyObject *encoder;
-    PyObject *indent;
-    PyObject *key_separator;
-    PyObject *item_separator;
-    PyObject *sort_keys;
-    PyObject *skipkeys;
-    int fast_encode;
-    int allow_nan;
-} PyEncoderObject;
-
-static PyMemberDef encoder_members[] = {
-    {"markers", T_OBJECT, offsetof(PyEncoderObject, markers), READONLY, "markers"},
-    {"default", T_OBJECT, offsetof(PyEncoderObject, defaultfn), READONLY, "default"},
-    {"encoder", T_OBJECT, offsetof(PyEncoderObject, encoder), READONLY, "encoder"},
-    {"indent", T_OBJECT, offsetof(PyEncoderObject, indent), READONLY, "indent"},
-    {"key_separator", T_OBJECT, offsetof(PyEncoderObject, key_separator), READONLY, "key_separator"},
-    {"item_separator", T_OBJECT, offsetof(PyEncoderObject, item_separator), READONLY, "item_separator"},
-    {"sort_keys", T_OBJECT, offsetof(PyEncoderObject, sort_keys), READONLY, "sort_keys"},
-    {"skipkeys", T_OBJECT, offsetof(PyEncoderObject, skipkeys), READONLY, "skipkeys"},
-    {NULL}
-};
-
-static Py_ssize_t
-ascii_escape_char(Py_UNICODE c, char *output, Py_ssize_t chars);
-static PyObject *
-ascii_escape_unicode(PyObject *pystr);
-static PyObject *
-ascii_escape_str(PyObject *pystr);
-static PyObject *
-py_encode_basestring_ascii(PyObject* self UNUSED, PyObject *pystr);
-void init_json(void);
-static PyObject *
-scan_once_str(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr);
-static PyObject *
-scan_once_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr);
-static PyObject *
-_build_rval_index_tuple(PyObject *rval, Py_ssize_t idx);
-static PyObject *
-scanner_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
-static int
-scanner_init(PyObject *self, PyObject *args, PyObject *kwds);
-static void
-scanner_dealloc(PyObject *self);
-static int
-scanner_clear(PyObject *self);
-static PyObject *
-encoder_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
-static int
-encoder_init(PyObject *self, PyObject *args, PyObject *kwds);
-static void
-encoder_dealloc(PyObject *self);
-static int
-encoder_clear(PyObject *self);
-static int
-encoder_listencode_list(PyEncoderObject *s, PyObject *rval, PyObject *seq, Py_ssize_t indent_level);
-static int
-encoder_listencode_obj(PyEncoderObject *s, PyObject *rval, PyObject *obj, Py_ssize_t indent_level);
-static int
-encoder_listencode_dict(PyEncoderObject *s, PyObject *rval, PyObject *dct, Py_ssize_t indent_level);
-static PyObject *
-_encoded_const(PyObject *obj);
-static void
-raise_errmsg(char *msg, PyObject *s, Py_ssize_t end);
-static PyObject *
-encoder_encode_string(PyEncoderObject *s, PyObject *obj);
-static int
-_convertPyInt_AsSsize_t(PyObject *o, Py_ssize_t *size_ptr);
-static PyObject *
-_convertPyInt_FromSsize_t(Py_ssize_t *size_ptr);
-static PyObject *
-encoder_encode_float(PyEncoderObject *s, PyObject *obj);
-
-#define S_CHAR(c) (c >= ' ' && c <= '~' && c != '\\' && c != '"')
-#define IS_WHITESPACE(c) (((c) == ' ') || ((c) == '\t') || ((c) == '\n') || ((c) == '\r'))
-
-#define MIN_EXPANSION 6
-#ifdef Py_UNICODE_WIDE
-#define MAX_EXPANSION (2 * MIN_EXPANSION)
-#else
-#define MAX_EXPANSION MIN_EXPANSION
-#endif
-
-static int
-_convertPyInt_AsSsize_t(PyObject *o, Py_ssize_t *size_ptr)
-{
-    /* PyObject to Py_ssize_t converter */
-    *size_ptr = PyInt_AsSsize_t(o);
-    if (*size_ptr == -1 && PyErr_Occurred())
-        return 0;
-    return 1;
-}
-
-static PyObject *
-_convertPyInt_FromSsize_t(Py_ssize_t *size_ptr)
-{
-    /* Py_ssize_t to PyObject converter */
-    return PyInt_FromSsize_t(*size_ptr);
-}
-
-static Py_ssize_t
-ascii_escape_char(Py_UNICODE c, char *output, Py_ssize_t chars)
-{
-    /* Escape unicode code point c to ASCII escape sequences
-    in char *output. output must have at least 12 bytes unused to
-    accommodate an escaped surrogate pair "\uXXXX\uXXXX" */
-    output[chars++] = '\\';
-    switch (c) {
-        case '\\': output[chars++] = (char)c; break;
-        case '"': output[chars++] = (char)c; break;
-        case '\b': output[chars++] = 'b'; break;
-        case '\f': output[chars++] = 'f'; break;
-        case '\n': output[chars++] = 'n'; break;
-        case '\r': output[chars++] = 'r'; break;
-        case '\t': output[chars++] = 't'; break;
-        default:
-#ifdef Py_UNICODE_WIDE
-            if (c >= 0x10000) {
-                /* UTF-16 surrogate pair */
-                Py_UNICODE v = c - 0x10000;
-                c = 0xd800 | ((v >> 10) & 0x3ff);
-                output[chars++] = 'u';
-                output[chars++] = "0123456789abcdef"[(c >> 12) & 0xf];
-                output[chars++] = "0123456789abcdef"[(c >>  8) & 0xf];
-                output[chars++] = "0123456789abcdef"[(c >>  4) & 0xf];
-                output[chars++] = "0123456789abcdef"[(c      ) & 0xf];
-                c = 0xdc00 | (v & 0x3ff);
-                output[chars++] = '\\';
-            }
-#endif
-            output[chars++] = 'u';
-            output[chars++] = "0123456789abcdef"[(c >> 12) & 0xf];
-            output[chars++] = "0123456789abcdef"[(c >>  8) & 0xf];
-            output[chars++] = "0123456789abcdef"[(c >>  4) & 0xf];
-            output[chars++] = "0123456789abcdef"[(c      ) & 0xf];
-    }
-    return chars;
-}
-
-static PyObject *
-ascii_escape_unicode(PyObject *pystr)
-{
-    /* Take a PyUnicode pystr and return a new ASCII-only escaped PyString */
-    Py_ssize_t i;
-    Py_ssize_t input_chars;
-    Py_ssize_t output_size;
-    Py_ssize_t max_output_size;
-    Py_ssize_t chars;
-    PyObject *rval;
-    char *output;
-    Py_UNICODE *input_unicode;
-
-    input_chars = PyUnicode_GET_SIZE(pystr);
-    input_unicode = PyUnicode_AS_UNICODE(pystr);
-
-    /* One char input can be up to 6 chars output, estimate 4 of these */
-    output_size = 2 + (MIN_EXPANSION * 4) + input_chars;
-    max_output_size = 2 + (input_chars * MAX_EXPANSION);
-    rval = PyString_FromStringAndSize(NULL, output_size);
-    if (rval == NULL) {
-        return NULL;
-    }
-    output = PyString_AS_STRING(rval);
-    chars = 0;
-    output[chars++] = '"';
-    for (i = 0; i < input_chars; i++) {
-        Py_UNICODE c = input_unicode[i];
-        if (S_CHAR(c)) {
-            output[chars++] = (char)c;
-        }
-        else {
-            chars = ascii_escape_char(c, output, chars);
-        }
-        if (output_size - chars < (1 + MAX_EXPANSION)) {
-            /* There's more than four, so let's resize by a lot */
-            Py_ssize_t new_output_size = output_size * 2;
-            /* This is an upper bound */
-            if (new_output_size > max_output_size) {
-                new_output_size = max_output_size;
-            }
-            /* Make sure that the output size changed before resizing */
-            if (new_output_size != output_size) {
-                output_size = new_output_size;
-                if (_PyString_Resize(&rval, output_size) == -1) {
-                    return NULL;
-                }
-                output = PyString_AS_STRING(rval);
-            }
-        }
-    }
-    output[chars++] = '"';
-    if (_PyString_Resize(&rval, chars) == -1) {
-        return NULL;
-    }
-    return rval;
-}
-
-static PyObject *
-ascii_escape_str(PyObject *pystr)
-{
-    /* Take a PyString pystr and return a new ASCII-only escaped PyString */
-    Py_ssize_t i;
-    Py_ssize_t input_chars;
-    Py_ssize_t output_size;
-    Py_ssize_t chars;
-    PyObject *rval;
-    char *output;
-    char *input_str;
-
-    input_chars = PyString_GET_SIZE(pystr);
-    input_str = PyString_AS_STRING(pystr);
-
-    /* Fast path for a string that's already ASCII */
-    for (i = 0; i < input_chars; i++) {
-        Py_UNICODE c = (Py_UNICODE)(unsigned char)input_str[i];
-        if (!S_CHAR(c)) {
-            /* If we have to escape something, scan the string for unicode */
-            Py_ssize_t j;
-            for (j = i; j < input_chars; j++) {
-                c = (Py_UNICODE)(unsigned char)input_str[j];
-                if (c > 0x7f) {
-                    /* We hit a non-ASCII character, bail to unicode mode */
-                    PyObject *uni;
-                    uni = PyUnicode_DecodeUTF8(input_str, input_chars, "strict");
-                    if (uni == NULL) {
-                        return NULL;
-                    }
-                    rval = ascii_escape_unicode(uni);
-                    Py_DECREF(uni);
-                    return rval;
-                }
-            }
-            break;
-        }
-    }
-
-    if (i == input_chars) {
-        /* Input is already ASCII */
-        output_size = 2 + input_chars;
-    }
-    else {
-        /* One char input can be up to 6 chars output, estimate 4 of these */
-        output_size = 2 + (MIN_EXPANSION * 4) + input_chars;
-    }
-    rval = PyString_FromStringAndSize(NULL, output_size);
-    if (rval == NULL) {
-        return NULL;
-    }
-    output = PyString_AS_STRING(rval);
-    output[0] = '"';
-
-    /* We know that everything up to i is ASCII already */
-    chars = i + 1;
-    memcpy(&output[1], input_str, i);
-
-    for (; i < input_chars; i++) {
-        Py_UNICODE c = (Py_UNICODE)(unsigned char)input_str[i];
-        if (S_CHAR(c)) {
-            output[chars++] = (char)c;
-        }
-        else {
-            chars = ascii_escape_char(c, output, chars);
-        }
-        /* An ASCII char can't possibly expand to a surrogate! */
-        if (output_size - chars < (1 + MIN_EXPANSION)) {
-            /* There's more than four, so let's resize by a lot */
-            output_size *= 2;
-            if (output_size > 2 + (input_chars * MIN_EXPANSION)) {
-                output_size = 2 + (input_chars * MIN_EXPANSION);
-            }
-            if (_PyString_Resize(&rval, output_size) == -1) {
-                return NULL;
-            }
-            output = PyString_AS_STRING(rval);
-        }
-    }
-    output[chars++] = '"';
-    if (_PyString_Resize(&rval, chars) == -1) {
-        return NULL;
-    }
-    return rval;
-}
-
-static void
-raise_errmsg(char *msg, PyObject *s, Py_ssize_t end)
-{
-    /* Use the Python function json.decoder.errmsg to raise a nice
-    looking ValueError exception */
-    static PyObject *errmsg_fn = NULL;
-    PyObject *pymsg;
-    if (errmsg_fn == NULL) {
-        PyObject *decoder = PyImport_ImportModule("json.decoder");
-        if (decoder == NULL)
-            return;
-        errmsg_fn = PyObject_GetAttrString(decoder, "errmsg");
-        Py_DECREF(decoder);
-        if (errmsg_fn == NULL)
-            return;
-    }
-    pymsg = PyObject_CallFunction(errmsg_fn, "(zOO&)", msg, s, _convertPyInt_FromSsize_t, &end);
-    if (pymsg) {
-        PyErr_SetObject(PyExc_ValueError, pymsg);
-        Py_DECREF(pymsg);
-    }
-}
-
-static PyObject *
-join_list_unicode(PyObject *lst)
-{
-    /* return u''.join(lst) */
-    static PyObject *joinfn = NULL;
-    if (joinfn == NULL) {
-        PyObject *ustr = PyUnicode_FromUnicode(NULL, 0);
-        if (ustr == NULL)
-            return NULL;
-
-        joinfn = PyObject_GetAttrString(ustr, "join");
-        Py_DECREF(ustr);
-        if (joinfn == NULL)
-            return NULL;
-    }
-    return PyObject_CallFunctionObjArgs(joinfn, lst, NULL);
-}
-
-static PyObject *
-_build_rval_index_tuple(PyObject *rval, Py_ssize_t idx) {
-    /* return (rval, idx) tuple, stealing reference to rval */
-    PyObject *tpl;
-    PyObject *pyidx;
-    /*
-    steal a reference to rval, returns (rval, idx)
-    */
-    if (rval == NULL) {
-        return NULL;
-    }
-    pyidx = PyInt_FromSsize_t(idx);
-    if (pyidx == NULL) {
-        Py_DECREF(rval);
-        return NULL;
-    }
-    tpl = PyTuple_New(2);
-    if (tpl == NULL) {
-        Py_DECREF(pyidx);
-        Py_DECREF(rval);
-        return NULL;
-    }
-    PyTuple_SET_ITEM(tpl, 0, rval);
-    PyTuple_SET_ITEM(tpl, 1, pyidx);
-    return tpl;
-}
-
-static PyObject *
-scanstring_str(PyObject *pystr, Py_ssize_t end, char *encoding, int strict, Py_ssize_t *next_end_ptr)
-{
-    /* Read the JSON string from PyString pystr.
-    end is the index of the first character after the quote.
-    encoding is the encoding of pystr (must be an ASCII superset)
-    if strict is zero then literal control characters are allowed
-    *next_end_ptr is a return-by-reference index of the character
-        after the end quote
-
-    Return value is a new PyString (if ASCII-only) or PyUnicode
-    */
-    PyObject *rval;
-    Py_ssize_t len = PyString_GET_SIZE(pystr);
-    Py_ssize_t begin = end - 1;
-    Py_ssize_t next;
-    char *buf = PyString_AS_STRING(pystr);
-    PyObject *chunks = PyList_New(0);
-    if (chunks == NULL) {
-        goto bail;
-    }
-    if (end < 0 || len <= end) {
-        PyErr_SetString(PyExc_ValueError, "end is out of bounds");
-        goto bail;
-    }
-    while (1) {
-        /* Find the end of the string or the next escape */
-        Py_UNICODE c = 0;
-        PyObject *chunk = NULL;
-        for (next = end; next < len; next++) {
-            c = (unsigned char)buf[next];
-            if (c == '"' || c == '\\') {
-                break;
-            }
-            else if (strict && c <= 0x1f) {
-                raise_errmsg("Invalid control character at", pystr, next);
-                goto bail;
-            }
-        }
-        if (!(c == '"' || c == '\\')) {
-            raise_errmsg("Unterminated string starting at", pystr, begin);
-            goto bail;
-        }
-        /* Pick up this chunk if it's not zero length */
-        if (next != end) {
-            PyObject *strchunk = PyString_FromStringAndSize(&buf[end], next - end);
-            if (strchunk == NULL) {
-                goto bail;
-            }
-            chunk = PyUnicode_FromEncodedObject(strchunk, encoding, NULL);
-            Py_DECREF(strchunk);
-            if (chunk == NULL) {
-                goto bail;
-            }
-            if (PyList_Append(chunks, chunk)) {
-                Py_DECREF(chunk);
-                goto bail;
-            }
-            Py_DECREF(chunk);
-        }
-        next++;
-        if (c == '"') {
-            end = next;
-            break;
-        }
-        if (next == len) {
-            raise_errmsg("Unterminated string starting at", pystr, begin);
-            goto bail;
-        }
-        c = buf[next];
-        if (c != 'u') {
-            /* Non-unicode backslash escapes */
-            end = next + 1;
-            switch (c) {
-                case '"': break;
-                case '\\': break;
-                case '/': break;
-                case 'b': c = '\b'; break;
-                case 'f': c = '\f'; break;
-                case 'n': c = '\n'; break;
-                case 'r': c = '\r'; break;
-                case 't': c = '\t'; break;
-                default: c = 0;
-            }
-            if (c == 0) {
-                raise_errmsg("Invalid \\escape", pystr, end - 2);
-                goto bail;
-            }
-        }
-        else {
-            c = 0;
-            next++;
-            end = next + 4;
-            if (end >= len) {
-                raise_errmsg("Invalid \\uXXXX escape", pystr, next - 1);
-                goto bail;
-            }
-            /* Decode 4 hex digits */
-            for (; next < end; next++) {
-                Py_UNICODE digit = buf[next];
-                c <<= 4;
-                switch (digit) {
-                    case '0': case '1': case '2': case '3': case '4':
-                    case '5': case '6': case '7': case '8': case '9':
-                        c |= (digit - '0'); break;
-                    case 'a': case 'b': case 'c': case 'd': case 'e':
-                    case 'f':
-                        c |= (digit - 'a' + 10); break;
-                    case 'A': case 'B': case 'C': case 'D': case 'E':
-                    case 'F':
-                        c |= (digit - 'A' + 10); break;
-                    default:
-                        raise_errmsg("Invalid \\uXXXX escape", pystr, end - 5);
-                        goto bail;
-                }
-            }
-#ifdef Py_UNICODE_WIDE
-            /* Surrogate pair */
-            if ((c & 0xfc00) == 0xd800) {
-                Py_UNICODE c2 = 0;
-                if (end + 6 >= len) {
-                    raise_errmsg("Unpaired high surrogate", pystr, end - 5);
-                    goto bail;
-                }
-                if (buf[next++] != '\\' || buf[next++] != 'u') {
-                    raise_errmsg("Unpaired high surrogate", pystr, end - 5);
-                    goto bail;
-                }
-                end += 6;
-                /* Decode 4 hex digits */
-                for (; next < end; next++) {
-                    Py_UNICODE digit = buf[next];
-                    c2 <<= 4;
-                    switch (digit) {
-                        case '0': case '1': case '2': case '3': case '4':
-                        case '5': case '6': case '7': case '8': case '9':
-                            c2 |= (digit - '0'); break;
-                        case 'a': case 'b': case 'c': case 'd': case 'e':
-                        case 'f':
-                            c2 |= (digit - 'a' + 10); break;
-                        case 'A': case 'B': case 'C': case 'D': case 'E':
-                        case 'F':
-                            c2 |= (digit - 'A' + 10); break;
-                        default:
-                            raise_errmsg("Invalid \\uXXXX escape", pystr, end - 5);
-                            goto bail;
-                    }
-                }
-                if ((c2 & 0xfc00) != 0xdc00) {
-                    raise_errmsg("Unpaired high surrogate", pystr, end - 5);
-                    goto bail;
-                }
-                c = 0x10000 + (((c - 0xd800) << 10) | (c2 - 0xdc00));
-            }
-            else if ((c & 0xfc00) == 0xdc00) {
-                raise_errmsg("Unpaired low surrogate", pystr, end - 5);
-                goto bail;
-            }
-#endif
-        }
-        chunk = PyUnicode_FromUnicode(&c, 1);
-        if (chunk == NULL) {
-            goto bail;
-        }
-        if (PyList_Append(chunks, chunk)) {
-            Py_DECREF(chunk);
-            goto bail;
-        }
-        Py_DECREF(chunk);
-    }
-
-    rval = join_list_unicode(chunks);
-    if (rval == NULL) {
-        goto bail;
-    }
-    Py_CLEAR(chunks);
-    *next_end_ptr = end;
-    return rval;
-bail:
-    *next_end_ptr = -1;
-    Py_XDECREF(chunks);
-    return NULL;
-}
-
-
-static PyObject *
-scanstring_unicode(PyObject *pystr, Py_ssize_t end, int strict, Py_ssize_t *next_end_ptr)
-{
-    /* Read the JSON string from PyUnicode pystr.
-    end is the index of the first character after the quote.
-    if strict is zero then literal control characters are allowed
-    *next_end_ptr is a return-by-reference index of the character
-        after the end quote
-
-    Return value is a new PyUnicode
-    */
-    PyObject *rval;
-    Py_ssize_t len = PyUnicode_GET_SIZE(pystr);
-    Py_ssize_t begin = end - 1;
-    Py_ssize_t next;
-    const Py_UNICODE *buf = PyUnicode_AS_UNICODE(pystr);
-    PyObject *chunks = PyList_New(0);
-    if (chunks == NULL) {
-        goto bail;
-    }
-    if (end < 0 || len <= end) {
-        PyErr_SetString(PyExc_ValueError, "end is out of bounds");
-        goto bail;
-    }
-    while (1) {
-        /* Find the end of the string or the next escape */
-        Py_UNICODE c = 0;
-        PyObject *chunk = NULL;
-        for (next = end; next < len; next++) {
-            c = buf[next];
-            if (c == '"' || c == '\\') {
-                break;
-            }
-            else if (strict && c <= 0x1f) {
-                raise_errmsg("Invalid control character at", pystr, next);
-                goto bail;
-            }
-        }
-        if (!(c == '"' || c == '\\')) {
-            raise_errmsg("Unterminated string starting at", pystr, begin);
-            goto bail;
-        }
-        /* Pick up this chunk if it's not zero length */
-        if (next != end) {
-            chunk = PyUnicode_FromUnicode(&buf[end], next - end);
-            if (chunk == NULL) {
-                goto bail;
-            }
-            if (PyList_Append(chunks, chunk)) {
-                Py_DECREF(chunk);
-                goto bail;
-            }
-            Py_DECREF(chunk);
-        }
-        next++;
-        if (c == '"') {
-            end = next;
-            break;
-        }
-        if (next == len) {
-            raise_errmsg("Unterminated string starting at", pystr, begin);
-            goto bail;
-        }
-        c = buf[next];
-        if (c != 'u') {
-            /* Non-unicode backslash escapes */
-            end = next + 1;
-            switch (c) {
-                case '"': break;
-                case '\\': break;
-                case '/': break;
-                case 'b': c = '\b'; break;
-                case 'f': c = '\f'; break;
-                case 'n': c = '\n'; break;
-                case 'r': c = '\r'; break;
-                case 't': c = '\t'; break;
-                default: c = 0;
-            }
-            if (c == 0) {
-                raise_errmsg("Invalid \\escape", pystr, end - 2);
-                goto bail;
-            }
-        }
-        else {
-            c = 0;
-            next++;
-            end = next + 4;
-            if (end >= len) {
-                raise_errmsg("Invalid \\uXXXX escape", pystr, next - 1);
-                goto bail;
-            }
-            /* Decode 4 hex digits */
-            for (; next < end; next++) {
-                Py_UNICODE digit = buf[next];
-                c <<= 4;
-                switch (digit) {
-                    case '0': case '1': case '2': case '3': case '4':
-                    case '5': case '6': case '7': case '8': case '9':
-                        c |= (digit - '0'); break;
-                    case 'a': case 'b': case 'c': case 'd': case 'e':
-                    case 'f':
-                        c |= (digit - 'a' + 10); break;
-                    case 'A': case 'B': case 'C': case 'D': case 'E':
-                    case 'F':
-                        c |= (digit - 'A' + 10); break;
-                    default:
-                        raise_errmsg("Invalid \\uXXXX escape", pystr, end - 5);
-                        goto bail;
-                }
-            }
-#ifdef Py_UNICODE_WIDE
-            /* Surrogate pair */
-            if ((c & 0xfc00) == 0xd800) {
-                Py_UNICODE c2 = 0;
-                if (end + 6 >= len) {
-                    raise_errmsg("Unpaired high surrogate", pystr, end - 5);
-                    goto bail;
-                }
-                if (buf[next++] != '\\' || buf[next++] != 'u') {
-                    raise_errmsg("Unpaired high surrogate", pystr, end - 5);
-                    goto bail;
-                }
-                end += 6;
-                /* Decode 4 hex digits */
-                for (; next < end; next++) {
-                    Py_UNICODE digit = buf[next];
-                    c2 <<= 4;
-                    switch (digit) {
-                        case '0': case '1': case '2': case '3': case '4':
-                        case '5': case '6': case '7': case '8': case '9':
-                            c2 |= (digit - '0'); break;
-                        case 'a': case 'b': case 'c': case 'd': case 'e':
-                        case 'f':
-                            c2 |= (digit - 'a' + 10); break;
-                        case 'A': case 'B': case 'C': case 'D': case 'E':
-                        case 'F':
-                            c2 |= (digit - 'A' + 10); break;
-                        default:
-                            raise_errmsg("Invalid \\uXXXX escape", pystr, end - 5);
-                            goto bail;
-                    }
-                }
-                if ((c2 & 0xfc00) != 0xdc00) {
-                    raise_errmsg("Unpaired high surrogate", pystr, end - 5);
-                    goto bail;
-                }
-                c = 0x10000 + (((c - 0xd800) << 10) | (c2 - 0xdc00));
-            }
-            else if ((c & 0xfc00) == 0xdc00) {
-                raise_errmsg("Unpaired low surrogate", pystr, end - 5);
-                goto bail;
-            }
-#endif
-        }
-        chunk = PyUnicode_FromUnicode(&c, 1);
-        if (chunk == NULL) {
-            goto bail;
-        }
-        if (PyList_Append(chunks, chunk)) {
-            Py_DECREF(chunk);
-            goto bail;
-        }
-        Py_DECREF(chunk);
-    }
-
-    rval = join_list_unicode(chunks);
-    if (rval == NULL) {
-        goto bail;
-    }
-    Py_DECREF(chunks);
-    *next_end_ptr = end;
-    return rval;
-bail:
-    *next_end_ptr = -1;
-    Py_XDECREF(chunks);
-    return NULL;
-}
-
-PyDoc_STRVAR(pydoc_scanstring,
-    "scanstring(basestring, end, encoding, strict=True) -> (str, end)\n"
-    "\n"
-    "Scan the string s for a JSON string. End is the index of the\n"
-    "character in s after the quote that started the JSON string.\n"
-    "Unescapes all valid JSON string escape sequences and raises ValueError\n"
-    "on attempt to decode an invalid string. If strict is False then literal\n"
-    "control characters are allowed in the string.\n"
-    "\n"
-    "Returns a tuple of the decoded string and the index of the character in s\n"
-    "after the end quote."
-);
-
-static PyObject *
-py_scanstring(PyObject* self UNUSED, PyObject *args)
-{
-    PyObject *pystr;
-    PyObject *rval;
-    Py_ssize_t end;
-    Py_ssize_t next_end = -1;
-    char *encoding = NULL;
-    int strict = 1;
-    if (!PyArg_ParseTuple(args, "OO&|zi:scanstring", &pystr, _convertPyInt_AsSsize_t, &end, &encoding, &strict)) {
-        return NULL;
-    }
-    if (encoding == NULL) {
-        encoding = DEFAULT_ENCODING;
-    }
-    if (PyString_Check(pystr)) {
-        rval = scanstring_str(pystr, end, encoding, strict, &next_end);
-    }
-    else if (PyUnicode_Check(pystr)) {
-        rval = scanstring_unicode(pystr, end, strict, &next_end);
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-                     "first argument must be a string, not %.80s",
-                     Py_TYPE(pystr)->tp_name);
-        return NULL;
-    }
-    return _build_rval_index_tuple(rval, next_end);
-}
-
-PyDoc_STRVAR(pydoc_encode_basestring_ascii,
-    "encode_basestring_ascii(basestring) -> str\n"
-    "\n"
-    "Return an ASCII-only JSON representation of a Python string"
-);
-
-static PyObject *
-py_encode_basestring_ascii(PyObject* self UNUSED, PyObject *pystr)
-{
-    /* Return an ASCII-only JSON representation of a Python string */
-    /* METH_O */
-    if (PyString_Check(pystr)) {
-        return ascii_escape_str(pystr);
-    }
-    else if (PyUnicode_Check(pystr)) {
-        return ascii_escape_unicode(pystr);
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-                     "first argument must be a string, not %.80s",
-                     Py_TYPE(pystr)->tp_name);
-        return NULL;
-    }
-}
-
-static void
-scanner_dealloc(PyObject *self)
-{
-    /* Deallocate scanner object */
-    scanner_clear(self);
-    Py_TYPE(self)->tp_free(self);
-}
-
-static int
-scanner_traverse(PyObject *self, visitproc visit, void *arg)
-{
-    PyScannerObject *s;
-    assert(PyScanner_Check(self));
-    s = (PyScannerObject *)self;
-    Py_VISIT(s->encoding);
-    Py_VISIT(s->strict);
-    Py_VISIT(s->object_hook);
-    Py_VISIT(s->pairs_hook);
-    Py_VISIT(s->parse_float);
-    Py_VISIT(s->parse_int);
-    Py_VISIT(s->parse_constant);
-    return 0;
-}
-
-static int
-scanner_clear(PyObject *self)
-{
-    PyScannerObject *s;
-    assert(PyScanner_Check(self));
-    s = (PyScannerObject *)self;
-    Py_CLEAR(s->encoding);
-    Py_CLEAR(s->strict);
-    Py_CLEAR(s->object_hook);
-    Py_CLEAR(s->pairs_hook);
-    Py_CLEAR(s->parse_float);
-    Py_CLEAR(s->parse_int);
-    Py_CLEAR(s->parse_constant);
-    return 0;
-}
-
-static PyObject *
-_parse_object_str(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr) {
-    /* Read a JSON object from PyString pystr.
-    idx is the index of the first character after the opening curly brace.
-    *next_idx_ptr is a return-by-reference index to the first character after
-        the closing curly brace.
-
-    Returns a new PyObject (usually a dict, but object_hook can change that)
-    */
-    char *str = PyString_AS_STRING(pystr);
-    Py_ssize_t end_idx = PyString_GET_SIZE(pystr) - 1;
-    PyObject *rval;
-    PyObject *pairs;
-    PyObject *item;
-    PyObject *key = NULL;
-    PyObject *val = NULL;
-    char *encoding = PyString_AS_STRING(s->encoding);
-    int strict = PyObject_IsTrue(s->strict);
-    Py_ssize_t next_idx;
-
-    pairs = PyList_New(0);
-    if (pairs == NULL)
-        return NULL;
-
-    /* skip whitespace after { */
-    while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-
-    /* only loop if the object is non-empty */
-    if (idx <= end_idx && str[idx] != '}') {
-        while (idx <= end_idx) {
-            /* read key */
-            if (str[idx] != '"') {
-                raise_errmsg("Expecting property name", pystr, idx);
-                goto bail;
-            }
-            key = scanstring_str(pystr, idx + 1, encoding, strict, &next_idx);
-            if (key == NULL)
-                goto bail;
-            idx = next_idx;
-
-            /* skip whitespace between key and : delimiter, read :, skip whitespace */
-            while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-            if (idx > end_idx || str[idx] != ':') {
-                raise_errmsg("Expecting : delimiter", pystr, idx);
-                goto bail;
-            }
-            idx++;
-            while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-
-            /* read any JSON data type */
-            val = scan_once_str(s, pystr, idx, &next_idx);
-            if (val == NULL)
-                goto bail;
-
-            item = PyTuple_Pack(2, key, val);
-            if (item == NULL)
-                goto bail;
-            Py_CLEAR(key);
-            Py_CLEAR(val);
-            if (PyList_Append(pairs, item) == -1) {
-                Py_DECREF(item);
-                goto bail;
-            }
-            Py_DECREF(item);
-            idx = next_idx;
-
-            /* skip whitespace before } or , */
-            while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-
-            /* bail if the object is closed or we didn't get the , delimiter */
-            if (idx > end_idx) break;
-            if (str[idx] == '}') {
-                break;
-            }
-            else if (str[idx] != ',') {
-                raise_errmsg("Expecting , delimiter", pystr, idx);
-                goto bail;
-            }
-            idx++;
-
-            /* skip whitespace after , delimiter */
-            while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-        }
-    }
-    /* verify that idx < end_idx, str[idx] should be '}' */
-    if (idx > end_idx || str[idx] != '}') {
-        raise_errmsg("Expecting object", pystr, end_idx);
-        goto bail;
-    }
-
-    /* if pairs_hook is not None: rval = object_pairs_hook(pairs) */
-    if (s->pairs_hook != Py_None) {
-        val = PyObject_CallFunctionObjArgs(s->pairs_hook, pairs, NULL);
-        if (val == NULL)
-            goto bail;
-        Py_DECREF(pairs);
-        *next_idx_ptr = idx + 1;
-        return val;
-    }
-
-    rval = PyObject_CallFunctionObjArgs((PyObject *)(&PyDict_Type), 
-                                         pairs, NULL);
-    if (rval == NULL)
-        goto bail;
-    Py_CLEAR(pairs);
-
-    /* if object_hook is not None: rval = object_hook(rval) */
-    if (s->object_hook != Py_None) {
-        val = PyObject_CallFunctionObjArgs(s->object_hook, rval, NULL);
-        if (val == NULL)
-            goto bail;
-        Py_DECREF(rval);
-        rval = val;
-        val = NULL;
-    }
-    *next_idx_ptr = idx + 1;
-    return rval;
-bail:
-    Py_XDECREF(key);
-    Py_XDECREF(val);
-    Py_XDECREF(pairs);
-    return NULL;
-}
-
-static PyObject *
-_parse_object_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr) {
-    /* Read a JSON object from PyUnicode pystr.
-    idx is the index of the first character after the opening curly brace.
-    *next_idx_ptr is a return-by-reference index to the first character after
-        the closing curly brace.
-
-    Returns a new PyObject (usually a dict, but object_hook can change that)
-    */
-    Py_UNICODE *str = PyUnicode_AS_UNICODE(pystr);
-    Py_ssize_t end_idx = PyUnicode_GET_SIZE(pystr) - 1;
-    PyObject *rval;
-    PyObject *pairs;
-    PyObject *item;
-    PyObject *key = NULL;
-    PyObject *val = NULL;
-    int strict = PyObject_IsTrue(s->strict);
-    Py_ssize_t next_idx;
-
-    pairs = PyList_New(0);
-    if (pairs == NULL)
-        return NULL;
-
-    /* skip whitespace after { */
-    while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-
-    /* only loop if the object is non-empty */
-    if (idx <= end_idx && str[idx] != '}') {
-        while (idx <= end_idx) {
-            /* read key */
-            if (str[idx] != '"') {
-                raise_errmsg("Expecting property name", pystr, idx);
-                goto bail;
-            }
-            key = scanstring_unicode(pystr, idx + 1, strict, &next_idx);
-            if (key == NULL)
-                goto bail;
-            idx = next_idx;
-
-            /* skip whitespace between key and : delimiter, read :, skip whitespace */
-            while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-            if (idx > end_idx || str[idx] != ':') {
-                raise_errmsg("Expecting : delimiter", pystr, idx);
-                goto bail;
-            }
-            idx++;
-            while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-
-            /* read any JSON term */
-            val = scan_once_unicode(s, pystr, idx, &next_idx);
-            if (val == NULL)
-                goto bail;
-
-            item = PyTuple_Pack(2, key, val);
-            if (item == NULL)
-                goto bail;
-            Py_CLEAR(key);
-            Py_CLEAR(val);
-            if (PyList_Append(pairs, item) == -1) {
-                Py_DECREF(item);
-                goto bail;
-            }
-            Py_DECREF(item);
-            idx = next_idx;
-
-            /* skip whitespace before } or , */
-            while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-
-            /* bail if the object is closed or we didn't get the , delimiter */
-            if (idx > end_idx) break;
-            if (str[idx] == '}') {
-                break;
-            }
-            else if (str[idx] != ',') {
-                raise_errmsg("Expecting , delimiter", pystr, idx);
-                goto bail;
-            }
-            idx++;
-
-            /* skip whitespace after , delimiter */
-            while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-        }
-    }
-
-    /* verify that idx < end_idx, str[idx] should be '}' */
-    if (idx > end_idx || str[idx] != '}') {
-        raise_errmsg("Expecting object", pystr, end_idx);
-        goto bail;
-    }
-
-    /* if pairs_hook is not None: rval = object_pairs_hook(pairs) */
-    if (s->pairs_hook != Py_None) {
-        val = PyObject_CallFunctionObjArgs(s->pairs_hook, pairs, NULL);
-        if (val == NULL)
-            goto bail;
-        Py_DECREF(pairs);
-        *next_idx_ptr = idx + 1;
-        return val;
-    }
-
-    rval = PyObject_CallFunctionObjArgs((PyObject *)(&PyDict_Type), 
-                                         pairs, NULL);
-    if (rval == NULL)
-        goto bail;
-    Py_CLEAR(pairs);
-
-    /* if object_hook is not None: rval = object_hook(rval) */
-    if (s->object_hook != Py_None) {
-        val = PyObject_CallFunctionObjArgs(s->object_hook, rval, NULL);
-        if (val == NULL)
-            goto bail;
-        Py_DECREF(rval);
-        rval = val;
-        val = NULL;
-    }
-    *next_idx_ptr = idx + 1;
-    return rval;
-bail:
-    Py_XDECREF(key);
-    Py_XDECREF(val);
-    Py_XDECREF(pairs);
-    return NULL;
-}
-
-static PyObject *
-_parse_array_str(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr) {
-    /* Read a JSON array from PyString pystr.
-    idx is the index of the first character after the opening brace.
-    *next_idx_ptr is a return-by-reference index to the first character after
-        the closing brace.
-
-    Returns a new PyList
-    */
-    char *str = PyString_AS_STRING(pystr);
-    Py_ssize_t end_idx = PyString_GET_SIZE(pystr) - 1;
-    PyObject *val = NULL;
-    PyObject *rval = PyList_New(0);
-    Py_ssize_t next_idx;
-    if (rval == NULL)
-        return NULL;
-
-    /* skip whitespace after [ */
-    while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-
-    /* only loop if the array is non-empty */
-    if (idx <= end_idx && str[idx] != ']') {
-        while (idx <= end_idx) {
-
-            /* read any JSON term and de-tuplefy the (rval, idx) */
-            val = scan_once_str(s, pystr, idx, &next_idx);
-            if (val == NULL)
-                goto bail;
-
-            if (PyList_Append(rval, val) == -1)
-                goto bail;
-
-            Py_CLEAR(val);
-            idx = next_idx;
-
-            /* skip whitespace between term and , */
-            while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-
-            /* bail if the array is closed or we didn't get the , delimiter */
-            if (idx > end_idx) break;
-            if (str[idx] == ']') {
-                break;
-            }
-            else if (str[idx] != ',') {
-                raise_errmsg("Expecting , delimiter", pystr, idx);
-                goto bail;
-            }
-            idx++;
-
-            /* skip whitespace after , */
-            while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-        }
-    }
-
-    /* verify that idx < end_idx, str[idx] should be ']' */
-    if (idx > end_idx || str[idx] != ']') {
-        raise_errmsg("Expecting object", pystr, end_idx);
-        goto bail;
-    }
-    *next_idx_ptr = idx + 1;
-    return rval;
-bail:
-    Py_XDECREF(val);
-    Py_DECREF(rval);
-    return NULL;
-}
-
-static PyObject *
-_parse_array_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr) {
-    /* Read a JSON array from PyString pystr.
-    idx is the index of the first character after the opening brace.
-    *next_idx_ptr is a return-by-reference index to the first character after
-        the closing brace.
-
-    Returns a new PyList
-    */
-    Py_UNICODE *str = PyUnicode_AS_UNICODE(pystr);
-    Py_ssize_t end_idx = PyUnicode_GET_SIZE(pystr) - 1;
-    PyObject *val = NULL;
-    PyObject *rval = PyList_New(0);
-    Py_ssize_t next_idx;
-    if (rval == NULL)
-        return NULL;
-
-    /* skip whitespace after [ */
-    while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-
-    /* only loop if the array is non-empty */
-    if (idx <= end_idx && str[idx] != ']') {
-        while (idx <= end_idx) {
-
-            /* read any JSON term  */
-            val = scan_once_unicode(s, pystr, idx, &next_idx);
-            if (val == NULL)
-                goto bail;
-
-            if (PyList_Append(rval, val) == -1)
-                goto bail;
-
-            Py_CLEAR(val);
-            idx = next_idx;
-
-            /* skip whitespace between term and , */
-            while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-
-            /* bail if the array is closed or we didn't get the , delimiter */
-            if (idx > end_idx) break;
-            if (str[idx] == ']') {
-                break;
-            }
-            else if (str[idx] != ',') {
-                raise_errmsg("Expecting , delimiter", pystr, idx);
-                goto bail;
-            }
-            idx++;
-
-            /* skip whitespace after , */
-            while (idx <= end_idx && IS_WHITESPACE(str[idx])) idx++;
-        }
-    }
-
-    /* verify that idx < end_idx, str[idx] should be ']' */
-    if (idx > end_idx || str[idx] != ']') {
-        raise_errmsg("Expecting object", pystr, end_idx);
-        goto bail;
-    }
-    *next_idx_ptr = idx + 1;
-    return rval;
-bail:
-    Py_XDECREF(val);
-    Py_DECREF(rval);
-    return NULL;
-}
-
-static PyObject *
-_parse_constant(PyScannerObject *s, char *constant, Py_ssize_t idx, Py_ssize_t *next_idx_ptr) {
-    /* Read a JSON constant from PyString pystr.
-    constant is the constant string that was found
-        ("NaN", "Infinity", "-Infinity").
-    idx is the index of the first character of the constant
-    *next_idx_ptr is a return-by-reference index to the first character after
-        the constant.
-
-    Returns the result of parse_constant
-    */
-    PyObject *cstr;
-    PyObject *rval;
-    /* constant is "NaN", "Infinity", or "-Infinity" */
-    cstr = PyString_InternFromString(constant);
-    if (cstr == NULL)
-        return NULL;
-
-    /* rval = parse_constant(constant) */
-    rval = PyObject_CallFunctionObjArgs(s->parse_constant, cstr, NULL);
-    idx += PyString_GET_SIZE(cstr);
-    Py_DECREF(cstr);
-    *next_idx_ptr = idx;
-    return rval;
-}
-
-static PyObject *
-_match_number_str(PyScannerObject *s, PyObject *pystr, Py_ssize_t start, Py_ssize_t *next_idx_ptr) {
-    /* Read a JSON number from PyString pystr.
-    idx is the index of the first character of the number
-    *next_idx_ptr is a return-by-reference index to the first character after
-        the number.
-
-    Returns a new PyObject representation of that number:
-        PyInt, PyLong, or PyFloat.
-        May return other types if parse_int or parse_float are set
-    */
-    char *str = PyString_AS_STRING(pystr);
-    Py_ssize_t end_idx = PyString_GET_SIZE(pystr) - 1;
-    Py_ssize_t idx = start;
-    int is_float = 0;
-    PyObject *rval;
-    PyObject *numstr;
-
-    /* read a sign if it's there, make sure it's not the end of the string */
-    if (str[idx] == '-') {
-        idx++;
-        if (idx > end_idx) {
-            PyErr_SetNone(PyExc_StopIteration);
-            return NULL;
-        }
-    }
-
-    /* read as many integer digits as we find as long as it doesn't start with 0 */
-    if (str[idx] >= '1' && str[idx] <= '9') {
-        idx++;
-        while (idx <= end_idx && str[idx] >= '0' && str[idx] <= '9') idx++;
-    }
-    /* if it starts with 0 we only expect one integer digit */
-    else if (str[idx] == '0') {
-        idx++;
-    }
-    /* no integer digits, error */
-    else {
-        PyErr_SetNone(PyExc_StopIteration);
-        return NULL;
-    }
-
-    /* if the next char is '.' followed by a digit then read all float digits */
-    if (idx < end_idx && str[idx] == '.' && str[idx + 1] >= '0' && str[idx + 1] <= '9') {
-        is_float = 1;
-        idx += 2;
-        while (idx <= end_idx && str[idx] >= '0' && str[idx] <= '9') idx++;
-    }
-
-    /* if the next char is 'e' or 'E' then maybe read the exponent (or backtrack) */
-    if (idx < end_idx && (str[idx] == 'e' || str[idx] == 'E')) {
-
-        /* save the index of the 'e' or 'E' just in case we need to backtrack */
-        Py_ssize_t e_start = idx;
-        idx++;
-
-        /* read an exponent sign if present */
-        if (idx < end_idx && (str[idx] == '-' || str[idx] == '+')) idx++;
-
-        /* read all digits */
-        while (idx <= end_idx && str[idx] >= '0' && str[idx] <= '9') idx++;
-
-        /* if we got a digit, then parse as float. if not, backtrack */
-        if (str[idx - 1] >= '0' && str[idx - 1] <= '9') {
-            is_float = 1;
-        }
-        else {
-            idx = e_start;
-        }
-    }
-
-    /* copy the section we determined to be a number */
-    numstr = PyString_FromStringAndSize(&str[start], idx - start);
-    if (numstr == NULL)
-        return NULL;
-    if (is_float) {
-        /* parse as a float using a fast path if available, otherwise call user defined method */
-        if (s->parse_float != (PyObject *)&PyFloat_Type) {
-            rval = PyObject_CallFunctionObjArgs(s->parse_float, numstr, NULL);
-        }
-        else {
-            double d = PyOS_string_to_double(PyString_AS_STRING(numstr),
-                                             NULL, NULL);
-            if (d == -1.0 && PyErr_Occurred())
-                return NULL;
-            rval = PyFloat_FromDouble(d);
-        }
-    }
-    else {
-        /* parse as an int using a fast path if available, otherwise call user defined method */
-        if (s->parse_int != (PyObject *)&PyInt_Type) {
-            rval = PyObject_CallFunctionObjArgs(s->parse_int, numstr, NULL);
-        }
-        else {
-            rval = PyInt_FromString(PyString_AS_STRING(numstr), NULL, 10);
-        }
-    }
-    Py_DECREF(numstr);
-    *next_idx_ptr = idx;
-    return rval;
-}
-
-static PyObject *
-_match_number_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t start, Py_ssize_t *next_idx_ptr) {
-    /* Read a JSON number from PyUnicode pystr.
-    idx is the index of the first character of the number
-    *next_idx_ptr is a return-by-reference index to the first character after
-        the number.
-
-    Returns a new PyObject representation of that number:
-        PyInt, PyLong, or PyFloat.
-        May return other types if parse_int or parse_float are set
-    */
-    Py_UNICODE *str = PyUnicode_AS_UNICODE(pystr);
-    Py_ssize_t end_idx = PyUnicode_GET_SIZE(pystr) - 1;
-    Py_ssize_t idx = start;
-    int is_float = 0;
-    PyObject *rval;
-    PyObject *numstr;
-
-    /* read a sign if it's there, make sure it's not the end of the string */
-    if (str[idx] == '-') {
-        idx++;
-        if (idx > end_idx) {
-            PyErr_SetNone(PyExc_StopIteration);
-            return NULL;
-        }
-    }
-
-    /* read as many integer digits as we find as long as it doesn't start with 0 */
-    if (str[idx] >= '1' && str[idx] <= '9') {
-        idx++;
-        while (idx <= end_idx && str[idx] >= '0' && str[idx] <= '9') idx++;
-    }
-    /* if it starts with 0 we only expect one integer digit */
-    else if (str[idx] == '0') {
-        idx++;
-    }
-    /* no integer digits, error */
-    else {
-        PyErr_SetNone(PyExc_StopIteration);
-        return NULL;
-    }
-
-    /* if the next char is '.' followed by a digit then read all float digits */
-    if (idx < end_idx && str[idx] == '.' && str[idx + 1] >= '0' && str[idx + 1] <= '9') {
-        is_float = 1;
-        idx += 2;
-        while (idx <= end_idx && str[idx] >= '0' && str[idx] <= '9') idx++;
-    }
-
-    /* if the next char is 'e' or 'E' then maybe read the exponent (or backtrack) */
-    if (idx < end_idx && (str[idx] == 'e' || str[idx] == 'E')) {
-        Py_ssize_t e_start = idx;
-        idx++;
-
-        /* read an exponent sign if present */
-        if (idx < end_idx && (str[idx] == '-' || str[idx] == '+')) idx++;
-
-        /* read all digits */
-        while (idx <= end_idx && str[idx] >= '0' && str[idx] <= '9') idx++;
-
-        /* if we got a digit, then parse as float. if not, backtrack */
-        if (str[idx - 1] >= '0' && str[idx - 1] <= '9') {
-            is_float = 1;
-        }
-        else {
-            idx = e_start;
-        }
-    }
-
-    /* copy the section we determined to be a number */
-    numstr = PyUnicode_FromUnicode(&str[start], idx - start);
-    if (numstr == NULL)
-        return NULL;
-    if (is_float) {
-        /* parse as a float using a fast path if available, otherwise call user defined method */
-        if (s->parse_float != (PyObject *)&PyFloat_Type) {
-            rval = PyObject_CallFunctionObjArgs(s->parse_float, numstr, NULL);
-        }
-        else {
-            rval = PyFloat_FromString(numstr, NULL);
-        }
-    }
-    else {
-        /* no fast path for unicode -> int, just call */
-        rval = PyObject_CallFunctionObjArgs(s->parse_int, numstr, NULL);
-    }
-    Py_DECREF(numstr);
-    *next_idx_ptr = idx;
-    return rval;
-}
-
-static PyObject *
-scan_once_str(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr)
-{
-    /* Read one JSON term (of any kind) from PyString pystr.
-    idx is the index of the first character of the term
-    *next_idx_ptr is a return-by-reference index to the first character after
-        the number.
-
-    Returns a new PyObject representation of the term.
-    */
-    PyObject *res;
-    char *str = PyString_AS_STRING(pystr);
-    Py_ssize_t length = PyString_GET_SIZE(pystr);
-    if (idx >= length) {
-        PyErr_SetNone(PyExc_StopIteration);
-        return NULL;
-    }
-    switch (str[idx]) {
-        case '"':
-            /* string */
-            return scanstring_str(pystr, idx + 1,
-                PyString_AS_STRING(s->encoding),
-                PyObject_IsTrue(s->strict),
-                next_idx_ptr);
-        case '{':
-            /* object */
-            if (Py_EnterRecursiveCall(" while decoding a JSON object "
-                                      "from a byte string"))
-                return NULL;
-            res = _parse_object_str(s, pystr, idx + 1, next_idx_ptr);
-            Py_LeaveRecursiveCall();
-            return res;
-        case '[':
-            /* array */
-            if (Py_EnterRecursiveCall(" while decoding a JSON array "
-                                      "from a byte string"))
-                return NULL;
-            res = _parse_array_str(s, pystr, idx + 1, next_idx_ptr);
-            Py_LeaveRecursiveCall();
-            return res;
-        case 'n':
-            /* null */
-            if ((idx + 3 < length) && str[idx + 1] == 'u' && str[idx + 2] == 'l' && str[idx + 3] == 'l') {
-                Py_INCREF(Py_None);
-                *next_idx_ptr = idx + 4;
-                return Py_None;
-            }
-            break;
-        case 't':
-            /* true */
-            if ((idx + 3 < length) && str[idx + 1] == 'r' && str[idx + 2] == 'u' && str[idx + 3] == 'e') {
-                Py_INCREF(Py_True);
-                *next_idx_ptr = idx + 4;
-                return Py_True;
-            }
-            break;
-        case 'f':
-            /* false */
-            if ((idx + 4 < length) && str[idx + 1] == 'a' && str[idx + 2] == 'l' && str[idx + 3] == 's' && str[idx + 4] == 'e') {
-                Py_INCREF(Py_False);
-                *next_idx_ptr = idx + 5;
-                return Py_False;
-            }
-            break;
-        case 'N':
-            /* NaN */
-            if ((idx + 2 < length) && str[idx + 1] == 'a' && str[idx + 2] == 'N') {
-                return _parse_constant(s, "NaN", idx, next_idx_ptr);
-            }
-            break;
-        case 'I':
-            /* Infinity */
-            if ((idx + 7 < length) && str[idx + 1] == 'n' && str[idx + 2] == 'f' && str[idx + 3] == 'i' && str[idx + 4] == 'n' && str[idx + 5] == 'i' && str[idx + 6] == 't' && str[idx + 7] == 'y') {
-                return _parse_constant(s, "Infinity", idx, next_idx_ptr);
-            }
-            break;
-        case '-':
-            /* -Infinity */
-            if ((idx + 8 < length) && str[idx + 1] == 'I' && str[idx + 2] == 'n' && str[idx + 3] == 'f' && str[idx + 4] == 'i' && str[idx + 5] == 'n' && str[idx + 6] == 'i' && str[idx + 7] == 't' && str[idx + 8] == 'y') {
-                return _parse_constant(s, "-Infinity", idx, next_idx_ptr);
-            }
-            break;
-    }
-    /* Didn't find a string, object, array, or named constant. Look for a number. */
-    return _match_number_str(s, pystr, idx, next_idx_ptr);
-}
-
-static PyObject *
-scan_once_unicode(PyScannerObject *s, PyObject *pystr, Py_ssize_t idx, Py_ssize_t *next_idx_ptr)
-{
-    /* Read one JSON term (of any kind) from PyUnicode pystr.
-    idx is the index of the first character of the term
-    *next_idx_ptr is a return-by-reference index to the first character after
-        the number.
-
-    Returns a new PyObject representation of the term.
-    */
-    PyObject *res;
-    Py_UNICODE *str = PyUnicode_AS_UNICODE(pystr);
-    Py_ssize_t length = PyUnicode_GET_SIZE(pystr);
-    if (idx >= length) {
-        PyErr_SetNone(PyExc_StopIteration);
-        return NULL;
-    }
-    switch (str[idx]) {
-        case '"':
-            /* string */
-            return scanstring_unicode(pystr, idx + 1,
-                PyObject_IsTrue(s->strict),
-                next_idx_ptr);
-        case '{':
-            /* object */
-            if (Py_EnterRecursiveCall(" while decoding a JSON object "
-                                      "from a unicode string"))
-                return NULL;
-            res = _parse_object_unicode(s, pystr, idx + 1, next_idx_ptr);
-            Py_LeaveRecursiveCall();
-            return res;
-        case '[':
-            /* array */
-            if (Py_EnterRecursiveCall(" while decoding a JSON array "
-                                      "from a unicode string"))
-                return NULL;
-            res = _parse_array_unicode(s, pystr, idx + 1, next_idx_ptr);
-            Py_LeaveRecursiveCall();
-            return res;
-        case 'n':
-            /* null */
-            if ((idx + 3 < length) && str[idx + 1] == 'u' && str[idx + 2] == 'l' && str[idx + 3] == 'l') {
-                Py_INCREF(Py_None);
-                *next_idx_ptr = idx + 4;
-                return Py_None;
-            }
-            break;
-        case 't':
-            /* true */
-            if ((idx + 3 < length) && str[idx + 1] == 'r' && str[idx + 2] == 'u' && str[idx + 3] == 'e') {
-                Py_INCREF(Py_True);
-                *next_idx_ptr = idx + 4;
-                return Py_True;
-            }
-            break;
-        case 'f':
-            /* false */
-            if ((idx + 4 < length) && str[idx + 1] == 'a' && str[idx + 2] == 'l' && str[idx + 3] == 's' && str[idx + 4] == 'e') {
-                Py_INCREF(Py_False);
-                *next_idx_ptr = idx + 5;
-                return Py_False;
-            }
-            break;
-        case 'N':
-            /* NaN */
-            if ((idx + 2 < length) && str[idx + 1] == 'a' && str[idx + 2] == 'N') {
-                return _parse_constant(s, "NaN", idx, next_idx_ptr);
-            }
-            break;
-        case 'I':
-            /* Infinity */
-            if ((idx + 7 < length) && str[idx + 1] == 'n' && str[idx + 2] == 'f' && str[idx + 3] == 'i' && str[idx + 4] == 'n' && str[idx + 5] == 'i' && str[idx + 6] == 't' && str[idx + 7] == 'y') {
-                return _parse_constant(s, "Infinity", idx, next_idx_ptr);
-            }
-            break;
-        case '-':
-            /* -Infinity */
-            if ((idx + 8 < length) && str[idx + 1] == 'I' && str[idx + 2] == 'n' && str[idx + 3] == 'f' && str[idx + 4] == 'i' && str[idx + 5] == 'n' && str[idx + 6] == 'i' && str[idx + 7] == 't' && str[idx + 8] == 'y') {
-                return _parse_constant(s, "-Infinity", idx, next_idx_ptr);
-            }
-            break;
-    }
-    /* Didn't find a string, object, array, or named constant. Look for a number. */
-    return _match_number_unicode(s, pystr, idx, next_idx_ptr);
-}
-
-static PyObject *
-scanner_call(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    /* Python callable interface to scan_once_{str,unicode} */
-    PyObject *pystr;
-    PyObject *rval;
-    Py_ssize_t idx;
-    Py_ssize_t next_idx = -1;
-    static char *kwlist[] = {"string", "idx", NULL};
-    PyScannerObject *s;
-    assert(PyScanner_Check(self));
-    s = (PyScannerObject *)self;
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO&:scan_once", kwlist, &pystr, _convertPyInt_AsSsize_t, &idx))
-        return NULL;
-
-    if (PyString_Check(pystr)) {
-        rval = scan_once_str(s, pystr, idx, &next_idx);
-    }
-    else if (PyUnicode_Check(pystr)) {
-        rval = scan_once_unicode(s, pystr, idx, &next_idx);
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-                 "first argument must be a string, not %.80s",
-                 Py_TYPE(pystr)->tp_name);
-        return NULL;
-    }
-    return _build_rval_index_tuple(rval, next_idx);
-}
-
-static PyObject *
-scanner_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyScannerObject *s;
-    s = (PyScannerObject *)type->tp_alloc(type, 0);
-    if (s != NULL) {
-        s->encoding = NULL;
-        s->strict = NULL;
-        s->object_hook = NULL;
-        s->pairs_hook = NULL;
-        s->parse_float = NULL;
-        s->parse_int = NULL;
-        s->parse_constant = NULL;
-    }
-    return (PyObject *)s;
-}
-
-static int
-scanner_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    /* Initialize Scanner object */
-    PyObject *ctx;
-    static char *kwlist[] = {"context", NULL};
-    PyScannerObject *s;
-
-    assert(PyScanner_Check(self));
-    s = (PyScannerObject *)self;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O:make_scanner", kwlist, &ctx))
-        return -1;
-
-    /* PyString_AS_STRING is used on encoding */
-    s->encoding = PyObject_GetAttrString(ctx, "encoding");
-    if (s->encoding == NULL)
-        goto bail;
-    if (s->encoding == Py_None) {
-        Py_DECREF(Py_None);
-        s->encoding = PyString_InternFromString(DEFAULT_ENCODING);
-    }
-    else if (PyUnicode_Check(s->encoding)) {
-        PyObject *tmp = PyUnicode_AsEncodedString(s->encoding, NULL, NULL);
-        Py_DECREF(s->encoding);
-        s->encoding = tmp;
-    }
-    if (s->encoding == NULL || !PyString_Check(s->encoding))
-        goto bail;
-
-    /* All of these will fail "gracefully" so we don't need to verify them */
-    s->strict = PyObject_GetAttrString(ctx, "strict");
-    if (s->strict == NULL)
-        goto bail;
-    s->object_hook = PyObject_GetAttrString(ctx, "object_hook");
-    if (s->object_hook == NULL)
-        goto bail;
-    s->pairs_hook = PyObject_GetAttrString(ctx, "object_pairs_hook");
-    if (s->pairs_hook == NULL)
-        goto bail;
-    s->parse_float = PyObject_GetAttrString(ctx, "parse_float");
-    if (s->parse_float == NULL)
-        goto bail;
-    s->parse_int = PyObject_GetAttrString(ctx, "parse_int");
-    if (s->parse_int == NULL)
-        goto bail;
-    s->parse_constant = PyObject_GetAttrString(ctx, "parse_constant");
-    if (s->parse_constant == NULL)
-        goto bail;
-
-    return 0;
-
-bail:
-    Py_CLEAR(s->encoding);
-    Py_CLEAR(s->strict);
-    Py_CLEAR(s->object_hook);
-    Py_CLEAR(s->pairs_hook);
-    Py_CLEAR(s->parse_float);
-    Py_CLEAR(s->parse_int);
-    Py_CLEAR(s->parse_constant);
-    return -1;
-}
-
-PyDoc_STRVAR(scanner_doc, "JSON scanner object");
-
-static
-PyTypeObject PyScannerType = {
-    PyObject_HEAD_INIT(NULL)
-    0,                    /* tp_internal */
-    "_json.Scanner",       /* tp_name */
-    sizeof(PyScannerObject), /* tp_basicsize */
-    0,                    /* tp_itemsize */
-    scanner_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 */
-    scanner_call,         /* tp_call */
-    0,                    /* tp_str */
-    0,/* PyObject_GenericGetAttr, */                    /* tp_getattro */
-    0,/* PyObject_GenericSetAttr, */                    /* tp_setattro */
-    0,                    /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,   /* tp_flags */
-    scanner_doc,          /* tp_doc */
-    scanner_traverse,                    /* tp_traverse */
-    scanner_clear,                    /* tp_clear */
-    0,                    /* tp_richcompare */
-    0,                    /* tp_weaklistoffset */
-    0,                    /* tp_iter */
-    0,                    /* tp_iternext */
-    0,                    /* tp_methods */
-    scanner_members,                    /* tp_members */
-    0,                    /* tp_getset */
-    0,                    /* tp_base */
-    0,                    /* tp_dict */
-    0,                    /* tp_descr_get */
-    0,                    /* tp_descr_set */
-    0,                    /* tp_dictoffset */
-    scanner_init,                    /* tp_init */
-    0,/* PyType_GenericAlloc, */        /* tp_alloc */
-    scanner_new,          /* tp_new */
-    0,/* PyObject_GC_Del, */              /* tp_free */
-};
-
-static PyObject *
-encoder_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyEncoderObject *s;
-    s = (PyEncoderObject *)type->tp_alloc(type, 0);
-    if (s != NULL) {
-        s->markers = NULL;
-        s->defaultfn = NULL;
-        s->encoder = NULL;
-        s->indent = NULL;
-        s->key_separator = NULL;
-        s->item_separator = NULL;
-        s->sort_keys = NULL;
-        s->skipkeys = NULL;
-    }
-    return (PyObject *)s;
-}
-
-static int
-encoder_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    /* initialize Encoder object */
-    static char *kwlist[] = {"markers", "default", "encoder", "indent", "key_separator", "item_separator", "sort_keys", "skipkeys", "allow_nan", NULL};
-
-    PyEncoderObject *s;
-    PyObject *markers, *defaultfn, *encoder, *indent, *key_separator;
-    PyObject *item_separator, *sort_keys, *skipkeys, *allow_nan;
-
-    assert(PyEncoder_Check(self));
-    s = (PyEncoderObject *)self;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "OOOOOOOOO:make_encoder", kwlist,
-        &markers, &defaultfn, &encoder, &indent, &key_separator, &item_separator,
-        &sort_keys, &skipkeys, &allow_nan))
-        return -1;
-
-    s->markers = markers;
-    s->defaultfn = defaultfn;
-    s->encoder = encoder;
-    s->indent = indent;
-    s->key_separator = key_separator;
-    s->item_separator = item_separator;
-    s->sort_keys = sort_keys;
-    s->skipkeys = skipkeys;
-    s->fast_encode = (PyCFunction_Check(s->encoder) && PyCFunction_GetFunction(s->encoder) == (PyCFunction)py_encode_basestring_ascii);
-    s->allow_nan = PyObject_IsTrue(allow_nan);
-
-    Py_INCREF(s->markers);
-    Py_INCREF(s->defaultfn);
-    Py_INCREF(s->encoder);
-    Py_INCREF(s->indent);
-    Py_INCREF(s->key_separator);
-    Py_INCREF(s->item_separator);
-    Py_INCREF(s->sort_keys);
-    Py_INCREF(s->skipkeys);
-    return 0;
-}
-
-static PyObject *
-encoder_call(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    /* Python callable interface to encode_listencode_obj */
-    static char *kwlist[] = {"obj", "_current_indent_level", NULL};
-    PyObject *obj;
-    PyObject *rval;
-    Py_ssize_t indent_level;
-    PyEncoderObject *s;
-    assert(PyEncoder_Check(self));
-    s = (PyEncoderObject *)self;
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO&:_iterencode", kwlist,
-        &obj, _convertPyInt_AsSsize_t, &indent_level))
-        return NULL;
-    rval = PyList_New(0);
-    if (rval == NULL)
-        return NULL;
-    if (encoder_listencode_obj(s, rval, obj, indent_level)) {
-        Py_DECREF(rval);
-        return NULL;
-    }
-    return rval;
-}
-
-static PyObject *
-_encoded_const(PyObject *obj)
-{
-    /* Return the JSON string representation of None, True, False */
-    if (obj == Py_None) {
-        static PyObject *s_null = NULL;
-        if (s_null == NULL) {
-            s_null = PyString_InternFromString("null");
-        }
-        Py_INCREF(s_null);
-        return s_null;
-    }
-    else if (obj == Py_True) {
-        static PyObject *s_true = NULL;
-        if (s_true == NULL) {
-            s_true = PyString_InternFromString("true");
-        }
-        Py_INCREF(s_true);
-        return s_true;
-    }
-    else if (obj == Py_False) {
-        static PyObject *s_false = NULL;
-        if (s_false == NULL) {
-            s_false = PyString_InternFromString("false");
-        }
-        Py_INCREF(s_false);
-        return s_false;
-    }
-    else {
-        PyErr_SetString(PyExc_ValueError, "not a const");
-        return NULL;
-    }
-}
-
-static PyObject *
-encoder_encode_float(PyEncoderObject *s, PyObject *obj)
-{
-    /* Return the JSON representation of a PyFloat */
-    double i = PyFloat_AS_DOUBLE(obj);
-    if (!Py_IS_FINITE(i)) {
-        if (!s->allow_nan) {
-            PyErr_SetString(PyExc_ValueError, "Out of range float values are not JSON compliant");
-            return NULL;
-        }
-        if (i > 0) {
-            return PyString_FromString("Infinity");
-        }
-        else if (i < 0) {
-            return PyString_FromString("-Infinity");
-        }
-        else {
-            return PyString_FromString("NaN");
-        }
-    }
-    /* Use a better float format here? */
-    return PyObject_Repr(obj);
-}
-
-static PyObject *
-encoder_encode_string(PyEncoderObject *s, PyObject *obj)
-{
-    /* Return the JSON representation of a string */
-    if (s->fast_encode)
-        return py_encode_basestring_ascii(NULL, obj);
-    else
-        return PyObject_CallFunctionObjArgs(s->encoder, obj, NULL);
-}
-
-static int
-_steal_list_append(PyObject *lst, PyObject *stolen)
-{
-    /* Append stolen and then decrement its reference count */
-    int rval = PyList_Append(lst, stolen);
-    Py_DECREF(stolen);
-    return rval;
-}
-
-static int
-encoder_listencode_obj(PyEncoderObject *s, PyObject *rval, PyObject *obj, Py_ssize_t indent_level)
-{
-    /* Encode Python object obj to a JSON term, rval is a PyList */
-    PyObject *newobj;
-    int rv;
-
-    if (obj == Py_None || obj == Py_True || obj == Py_False) {
-        PyObject *cstr = _encoded_const(obj);
-        if (cstr == NULL)
-            return -1;
-        return _steal_list_append(rval, cstr);
-    }
-    else if (PyString_Check(obj) || PyUnicode_Check(obj))
-    {
-        PyObject *encoded = encoder_encode_string(s, obj);
-        if (encoded == NULL)
-            return -1;
-        return _steal_list_append(rval, encoded);
-    }
-    else if (PyInt_Check(obj) || PyLong_Check(obj)) {
-        PyObject *encoded = PyObject_Str(obj);
-        if (encoded == NULL)
-            return -1;
-        return _steal_list_append(rval, encoded);
-    }
-    else if (PyFloat_Check(obj)) {
-        PyObject *encoded = encoder_encode_float(s, obj);
-        if (encoded == NULL)
-            return -1;
-        return _steal_list_append(rval, encoded);
-    }
-    else if (PyList_Check(obj) || PyTuple_Check(obj)) {
-        if (Py_EnterRecursiveCall(" while encoding a JSON object"))
-            return -1;
-        rv = encoder_listencode_list(s, rval, obj, indent_level);
-        Py_LeaveRecursiveCall();
-        return rv;
-    }
-    else if (PyDict_Check(obj)) {
-        if (Py_EnterRecursiveCall(" while encoding a JSON object"))
-            return -1;
-        rv = encoder_listencode_dict(s, rval, obj, indent_level);
-        Py_LeaveRecursiveCall();
-        return rv;
-    }
-    else {
-        PyObject *ident = NULL;
-        if (s->markers != Py_None) {
-            int has_key;
-            ident = PyLong_FromVoidPtr(obj);
-            if (ident == NULL)
-                return -1;
-            has_key = PyDict_Contains(s->markers, ident);
-            if (has_key) {
-                if (has_key != -1)
-                    PyErr_SetString(PyExc_ValueError, "Circular reference detected");
-                Py_DECREF(ident);
-                return -1;
-            }
-            if (PyDict_SetItem(s->markers, ident, obj)) {
-                Py_DECREF(ident);
-                return -1;
-            }
-        }
-        newobj = PyObject_CallFunctionObjArgs(s->defaultfn, obj, NULL);
-        if (newobj == NULL) {
-            Py_XDECREF(ident);
-            return -1;
-        }
-
-        if (Py_EnterRecursiveCall(" while encoding a JSON object"))
-            return -1;
-        rv = encoder_listencode_obj(s, rval, newobj, indent_level);
-        Py_LeaveRecursiveCall();
-
-        Py_DECREF(newobj);
-        if (rv) {
-            Py_XDECREF(ident);
-            return -1;
-        }
-        if (ident != NULL) {
-            if (PyDict_DelItem(s->markers, ident)) {
-                Py_XDECREF(ident);
-                return -1;
-            }
-            Py_XDECREF(ident);
-        }
-        return rv;
-    }
-}
-
-static int
-encoder_listencode_dict(PyEncoderObject *s, PyObject *rval, PyObject *dct, Py_ssize_t indent_level)
-{
-    /* Encode Python dict dct a JSON term, rval is a PyList */
-    static PyObject *open_dict = NULL;
-    static PyObject *close_dict = NULL;
-    static PyObject *empty_dict = NULL;
-    PyObject *kstr = NULL;
-    PyObject *ident = NULL;
-    PyObject *key = NULL;
-    PyObject *value = NULL;
-    PyObject *it = NULL;
-    int skipkeys;
-    Py_ssize_t idx;
-
-    if (open_dict == NULL || close_dict == NULL || empty_dict == NULL) {
-        open_dict = PyString_InternFromString("{");
-        close_dict = PyString_InternFromString("}");
-        empty_dict = PyString_InternFromString("{}");
-        if (open_dict == NULL || close_dict == NULL || empty_dict == NULL)
-            return -1;
-    }
-    if (Py_SIZE(dct) == 0)
-        return PyList_Append(rval, empty_dict);
-
-    if (s->markers != Py_None) {
-        int has_key;
-        ident = PyLong_FromVoidPtr(dct);
-        if (ident == NULL)
-            goto bail;
-        has_key = PyDict_Contains(s->markers, ident);
-        if (has_key) {
-            if (has_key != -1)
-                PyErr_SetString(PyExc_ValueError, "Circular reference detected");
-            goto bail;
-        }
-        if (PyDict_SetItem(s->markers, ident, dct)) {
-            goto bail;
-        }
-    }
-
-    if (PyList_Append(rval, open_dict))
-        goto bail;
-
-    if (s->indent != Py_None) {
-        /* TODO: DOES NOT RUN */
-        indent_level += 1;
-        /*
-            newline_indent = '\n' + (' ' * (_indent * _current_indent_level))
-            separator = _item_separator + newline_indent
-            buf += newline_indent
-        */
-    }
-
-    /* TODO: C speedup not implemented for sort_keys */
-
-    it = PyObject_GetIter(dct);
-    if (it == NULL)
-        goto bail;
-    skipkeys = PyObject_IsTrue(s->skipkeys);
-    idx = 0;
-    while ((key = PyIter_Next(it)) != NULL) {
-        PyObject *encoded;
-
-        if (PyString_Check(key) || PyUnicode_Check(key)) {
-            Py_INCREF(key);
-            kstr = key;
-        }
-        else if (PyFloat_Check(key)) {
-            kstr = encoder_encode_float(s, key);
-            if (kstr == NULL)
-                goto bail;
-        }
-        else if (PyInt_Check(key) || PyLong_Check(key)) {
-            kstr = PyObject_Str(key);
-            if (kstr == NULL)
-                goto bail;
-        }
-        else if (key == Py_True || key == Py_False || key == Py_None) {
-            kstr = _encoded_const(key);
-            if (kstr == NULL)
-                goto bail;
-        }
-        else if (skipkeys) {
-            Py_DECREF(key);
-            continue;
-        }
-        else {
-            /* TODO: include repr of key */
-            PyErr_SetString(PyExc_TypeError, "keys must be a string");
-            goto bail;
-        }
-
-        if (idx) {
-            if (PyList_Append(rval, s->item_separator))
-                goto bail;
-        }
-
-        value = PyObject_GetItem(dct, key);
-        if (value == NULL)
-            goto bail;
-
-        encoded = encoder_encode_string(s, kstr);
-        Py_CLEAR(kstr);
-        if (encoded == NULL)
-            goto bail;
-        if (PyList_Append(rval, encoded)) {
-            Py_DECREF(encoded);
-            goto bail;
-        }
-        Py_DECREF(encoded);
-        if (PyList_Append(rval, s->key_separator))
-            goto bail;
-        if (encoder_listencode_obj(s, rval, value, indent_level))
-            goto bail;
-        idx += 1;
-        Py_CLEAR(value);
-        Py_DECREF(key);
-    }
-    if (PyErr_Occurred())
-        goto bail;
-    Py_CLEAR(it);
-
-    if (ident != NULL) {
-        if (PyDict_DelItem(s->markers, ident))
-            goto bail;
-        Py_CLEAR(ident);
-    }
-    if (s->indent != Py_None) {
-        /* TODO: DOES NOT RUN */
-        /*
-            indent_level -= 1;
-
-            yield '\n' + (' ' * (_indent * _current_indent_level))
-        */
-    }
-    if (PyList_Append(rval, close_dict))
-        goto bail;
-    return 0;
-
-bail:
-    Py_XDECREF(it);
-    Py_XDECREF(key);
-    Py_XDECREF(value);
-    Py_XDECREF(kstr);
-    Py_XDECREF(ident);
-    return -1;
-}
-
-
-static int
-encoder_listencode_list(PyEncoderObject *s, PyObject *rval, PyObject *seq, Py_ssize_t indent_level)
-{
-    /* Encode Python list seq to a JSON term, rval is a PyList */
-    static PyObject *open_array = NULL;
-    static PyObject *close_array = NULL;
-    static PyObject *empty_array = NULL;
-    PyObject *ident = NULL;
-    PyObject *s_fast = NULL;
-    Py_ssize_t num_items;
-    PyObject **seq_items;
-    Py_ssize_t i;
-
-    if (open_array == NULL || close_array == NULL || empty_array == NULL) {
-        open_array = PyString_InternFromString("[");
-        close_array = PyString_InternFromString("]");
-        empty_array = PyString_InternFromString("[]");
-        if (open_array == NULL || close_array == NULL || empty_array == NULL)
-            return -1;
-    }
-    ident = NULL;
-    s_fast = PySequence_Fast(seq, "_iterencode_list needs a sequence");
-    if (s_fast == NULL)
-        return -1;
-    num_items = PySequence_Fast_GET_SIZE(s_fast);
-    if (num_items == 0) {
-        Py_DECREF(s_fast);
-        return PyList_Append(rval, empty_array);
-    }
-
-    if (s->markers != Py_None) {
-        int has_key;
-        ident = PyLong_FromVoidPtr(seq);
-        if (ident == NULL)
-            goto bail;
-        has_key = PyDict_Contains(s->markers, ident);
-        if (has_key) {
-            if (has_key != -1)
-                PyErr_SetString(PyExc_ValueError, "Circular reference detected");
-            goto bail;
-        }
-        if (PyDict_SetItem(s->markers, ident, seq)) {
-            goto bail;
-        }
-    }
-
-    seq_items = PySequence_Fast_ITEMS(s_fast);
-    if (PyList_Append(rval, open_array))
-        goto bail;
-    if (s->indent != Py_None) {
-        /* TODO: DOES NOT RUN */
-        indent_level += 1;
-        /*
-            newline_indent = '\n' + (' ' * (_indent * _current_indent_level))
-            separator = _item_separator + newline_indent
-            buf += newline_indent
-        */
-    }
-    for (i = 0; i < num_items; i++) {
-        PyObject *obj = seq_items[i];
-        if (i) {
-            if (PyList_Append(rval, s->item_separator))
-                goto bail;
-        }
-        if (encoder_listencode_obj(s, rval, obj, indent_level))
-            goto bail;
-    }
-    if (ident != NULL) {
-        if (PyDict_DelItem(s->markers, ident))
-            goto bail;
-        Py_CLEAR(ident);
-    }
-    if (s->indent != Py_None) {
-        /* TODO: DOES NOT RUN */
-        /*
-            indent_level -= 1;
-
-            yield '\n' + (' ' * (_indent * _current_indent_level))
-        */
-    }
-    if (PyList_Append(rval, close_array))
-        goto bail;
-    Py_DECREF(s_fast);
-    return 0;
-
-bail:
-    Py_XDECREF(ident);
-    Py_DECREF(s_fast);
-    return -1;
-}
-
-static void
-encoder_dealloc(PyObject *self)
-{
-    /* Deallocate Encoder */
-    encoder_clear(self);
-    Py_TYPE(self)->tp_free(self);
-}
-
-static int
-encoder_traverse(PyObject *self, visitproc visit, void *arg)
-{
-    PyEncoderObject *s;
-    assert(PyEncoder_Check(self));
-    s = (PyEncoderObject *)self;
-    Py_VISIT(s->markers);
-    Py_VISIT(s->defaultfn);
-    Py_VISIT(s->encoder);
-    Py_VISIT(s->indent);
-    Py_VISIT(s->key_separator);
-    Py_VISIT(s->item_separator);
-    Py_VISIT(s->sort_keys);
-    Py_VISIT(s->skipkeys);
-    return 0;
-}
-
-static int
-encoder_clear(PyObject *self)
-{
-    /* Deallocate Encoder */
-    PyEncoderObject *s;
-    assert(PyEncoder_Check(self));
-    s = (PyEncoderObject *)self;
-    Py_CLEAR(s->markers);
-    Py_CLEAR(s->defaultfn);
-    Py_CLEAR(s->encoder);
-    Py_CLEAR(s->indent);
-    Py_CLEAR(s->key_separator);
-    Py_CLEAR(s->item_separator);
-    Py_CLEAR(s->sort_keys);
-    Py_CLEAR(s->skipkeys);
-    return 0;
-}
-
-PyDoc_STRVAR(encoder_doc, "_iterencode(obj, _current_indent_level) -> iterable");
-
-static
-PyTypeObject PyEncoderType = {
-    PyObject_HEAD_INIT(NULL)
-    0,                    /* tp_internal */
-    "_json.Encoder",       /* tp_name */
-    sizeof(PyEncoderObject), /* tp_basicsize */
-    0,                    /* tp_itemsize */
-    encoder_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 */
-    encoder_call,         /* tp_call */
-    0,                    /* tp_str */
-    0,                    /* tp_getattro */
-    0,                    /* tp_setattro */
-    0,                    /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,   /* tp_flags */
-    encoder_doc,          /* tp_doc */
-    encoder_traverse,     /* tp_traverse */
-    encoder_clear,        /* tp_clear */
-    0,                    /* tp_richcompare */
-    0,                    /* tp_weaklistoffset */
-    0,                    /* tp_iter */
-    0,                    /* tp_iternext */
-    0,                    /* tp_methods */
-    encoder_members,      /* tp_members */
-    0,                    /* tp_getset */
-    0,                    /* tp_base */
-    0,                    /* tp_dict */
-    0,                    /* tp_descr_get */
-    0,                    /* tp_descr_set */
-    0,                    /* tp_dictoffset */
-    encoder_init,         /* tp_init */
-    0,                    /* tp_alloc */
-    encoder_new,          /* tp_new */
-    0,                    /* tp_free */
-};
-
-static PyMethodDef speedups_methods[] = {
-    {"encode_basestring_ascii",
-        (PyCFunction)py_encode_basestring_ascii,
-        METH_O,
-        pydoc_encode_basestring_ascii},
-    {"scanstring",
-        (PyCFunction)py_scanstring,
-        METH_VARARGS,
-        pydoc_scanstring},
-    {NULL, NULL, 0, NULL}
-};
-
-PyDoc_STRVAR(module_doc,
-"json speedups\n");
-
-void
-init_json(void)
-{
-    PyObject *m;
-    PyScannerType.tp_new = PyType_GenericNew;
-    if (PyType_Ready(&PyScannerType) < 0)
-        return;
-    PyEncoderType.tp_new = PyType_GenericNew;
-    if (PyType_Ready(&PyEncoderType) < 0)
-        return;
-    m = Py_InitModule3("_json", speedups_methods, module_doc);
-    Py_INCREF((PyObject*)&PyScannerType);
-    PyModule_AddObject(m, "make_scanner", (PyObject*)&PyScannerType);
-    Py_INCREF((PyObject*)&PyEncoderType);
-    PyModule_AddObject(m, "make_encoder", (PyObject*)&PyEncoderType);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_localemodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_localemodule.c
deleted file mode 100644
index 9005786..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_localemodule.c
+++ /dev/null
@@ -1,758 +0,0 @@
-/***********************************************************
-Copyright (C) 1997, 2002, 2003 Martin von Loewis
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies.
-
-This software comes with no warranty. Use at your own risk.
-
-******************************************************************/
-
-#include "Python.h"
-
-#include <stdio.h>
-#include <locale.h>
-#include <string.h>
-#include <ctype.h>
-
-#ifdef HAVE_ERRNO_H
-#include <errno.h>
-#endif
-
-#ifdef HAVE_LANGINFO_H
-#include <langinfo.h>
-#endif
-
-#ifdef HAVE_LIBINTL_H
-#include <libintl.h>
-#endif
-
-#ifdef HAVE_WCHAR_H
-#include <wchar.h>
-#endif
-
-#if defined(MS_WINDOWS)
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#endif
-
-#ifdef RISCOS
-char *strdup(const char *);
-#endif
-
-PyDoc_STRVAR(locale__doc__, "Support for POSIX locales.");
-
-static PyObject *Error;
-
-/* support functions for formatting floating point numbers */
-
-PyDoc_STRVAR(setlocale__doc__,
-"(integer,string=None) -> string. Activates/queries locale processing.");
-
-/* the grouping is terminated by either 0 or CHAR_MAX */
-static PyObject*
-copy_grouping(char* s)
-{
-    int i;
-    PyObject *result, *val = NULL;
-
-    if (s[0] == '\0')
-    /* empty string: no grouping at all */
-    return PyList_New(0);
-
-    for (i = 0; s[i] != '\0' && s[i] != CHAR_MAX; i++)
-        ; /* nothing */
-
-    result = PyList_New(i+1);
-    if (!result)
-        return NULL;
-
-    i = -1;
-    do {
-        i++;
-        val = PyInt_FromLong(s[i]);
-        if (!val)
-            break;
-        if (PyList_SetItem(result, i, val)) {
-            Py_DECREF(val);
-            val = NULL;
-            break;
-        }
-    } while (s[i] != '\0' && s[i] != CHAR_MAX);
-
-    if (!val) {
-        Py_DECREF(result);
-        return NULL;
-    }
-
-    return result;
-}
-
-static void
-fixup_ulcase(void)
-{
-    PyObject *mods, *strop, *string, *ulo;
-    unsigned char ul[256];
-    int n, c;
-
-    /* find the string and strop modules */
-    mods = PyImport_GetModuleDict();
-    if (!mods)
-        return;
-    string = PyDict_GetItemString(mods, "string");
-    if (string)
-        string = PyModule_GetDict(string);
-    strop=PyDict_GetItemString(mods, "strop");
-    if (strop)
-        strop = PyModule_GetDict(strop);
-    if (!string && !strop)
-        return;
-
-    /* create uppercase map string */
-    n = 0;
-    for (c = 0; c < 256; c++) {
-        if (isupper(c))
-            ul[n++] = c;
-    }
-    ulo = PyString_FromStringAndSize((const char *)ul, n);
-    if (!ulo)
-        return;
-    if (string)
-        PyDict_SetItemString(string, "uppercase", ulo);
-    if (strop)
-        PyDict_SetItemString(strop, "uppercase", ulo);
-    Py_DECREF(ulo);
-
-    /* create lowercase string */
-    n = 0;
-    for (c = 0; c < 256; c++) {
-        if (islower(c))
-            ul[n++] = c;
-    }
-    ulo = PyString_FromStringAndSize((const char *)ul, n);
-    if (!ulo)
-        return;
-    if (string)
-        PyDict_SetItemString(string, "lowercase", ulo);
-    if (strop)
-        PyDict_SetItemString(strop, "lowercase", ulo);
-    Py_DECREF(ulo);
-
-    /* create letters string */
-    n = 0;
-    for (c = 0; c < 256; c++) {
-        if (isalpha(c))
-            ul[n++] = c;
-    }
-    ulo = PyString_FromStringAndSize((const char *)ul, n);
-    if (!ulo)
-        return;
-    if (string)
-        PyDict_SetItemString(string, "letters", ulo);
-    Py_DECREF(ulo);
-}
-
-static PyObject*
-PyLocale_setlocale(PyObject* self, PyObject* args)
-{
-    int category;
-    char *locale = NULL, *result;
-    PyObject *result_object;
-
-    if (!PyArg_ParseTuple(args, "i|z:setlocale", &category, &locale))
-        return NULL;
-
-#if defined(MS_WINDOWS)
-    if (category < LC_MIN || category > LC_MAX)
-    {
-        PyErr_SetString(Error, "invalid locale category");
-        return NULL;
-    }
-#endif
-
-    if (locale) {
-    /* set locale */
-    result = setlocale(category, locale);
-    if (!result) {
-        /* operation failed, no setting was changed */
-        PyErr_SetString(Error, "unsupported locale setting");
-        return NULL;
-    }
-    result_object = PyString_FromString(result);
-    if (!result_object)
-        return NULL;
-    /* record changes to LC_CTYPE */
-    if (category == LC_CTYPE || category == LC_ALL)
-        fixup_ulcase();
-        /* things that got wrong up to here are ignored */
-        PyErr_Clear();
-    } else {
-    /* get locale */
-        result = setlocale(category, NULL);
-        if (!result) {
-            PyErr_SetString(Error, "locale query failed");
-            return NULL;
-        }
-        result_object = PyString_FromString(result);
-    }
-    return result_object;
-}
-
-PyDoc_STRVAR(localeconv__doc__,
-"() -> dict. Returns numeric and monetary locale-specific parameters.");
-
-static PyObject*
-PyLocale_localeconv(PyObject* self)
-{
-    PyObject* result;
-    struct lconv *l;
-    PyObject *x;
-
-    result = PyDict_New();
-    if (!result)
-        return NULL;
-
-    /* if LC_NUMERIC is different in the C library, use saved value */
-    l = localeconv();
-
-    /* hopefully, the localeconv result survives the C library calls
-       involved herein */
-
-#define RESULT_STRING(s)\
-    x = PyString_FromString(l->s);\
-    if (!x) goto failed;\
-    PyDict_SetItemString(result, #s, x);\
-    Py_XDECREF(x)
-
-#define RESULT_INT(i)\
-    x = PyInt_FromLong(l->i);\
-    if (!x) goto failed;\
-    PyDict_SetItemString(result, #i, x);\
-    Py_XDECREF(x)
-
-    /* Numeric information */
-    RESULT_STRING(decimal_point);
-    RESULT_STRING(thousands_sep);
-    x = copy_grouping(l->grouping);
-    if (!x)
-        goto failed;
-    PyDict_SetItemString(result, "grouping", x);
-    Py_XDECREF(x);
-
-    /* Monetary information */
-    RESULT_STRING(int_curr_symbol);
-    RESULT_STRING(currency_symbol);
-    RESULT_STRING(mon_decimal_point);
-    RESULT_STRING(mon_thousands_sep);
-    x = copy_grouping(l->mon_grouping);
-    if (!x)
-        goto failed;
-    PyDict_SetItemString(result, "mon_grouping", x);
-    Py_XDECREF(x);
-    RESULT_STRING(positive_sign);
-    RESULT_STRING(negative_sign);
-    RESULT_INT(int_frac_digits);
-    RESULT_INT(frac_digits);
-    RESULT_INT(p_cs_precedes);
-    RESULT_INT(p_sep_by_space);
-    RESULT_INT(n_cs_precedes);
-    RESULT_INT(n_sep_by_space);
-    RESULT_INT(p_sign_posn);
-    RESULT_INT(n_sign_posn);
-    return result;
-
-  failed:
-    Py_XDECREF(result);
-    Py_XDECREF(x);
-    return NULL;
-}
-
-PyDoc_STRVAR(strcoll__doc__,
-"string,string -> int. Compares two strings according to the locale.");
-
-static PyObject*
-PyLocale_strcoll(PyObject* self, PyObject* args)
-{
-#if !defined(HAVE_WCSCOLL) || !defined(Py_USING_UNICODE)
-    char *s1,*s2;
-
-    if (!PyArg_ParseTuple(args, "ss:strcoll", &s1, &s2))
-        return NULL;
-    return PyInt_FromLong(strcoll(s1, s2));
-#else
-    PyObject *os1, *os2, *result = NULL;
-    wchar_t *ws1 = NULL, *ws2 = NULL;
-    int rel1 = 0, rel2 = 0, len1, len2;
-
-    if (!PyArg_UnpackTuple(args, "strcoll", 2, 2, &os1, &os2))
-        return NULL;
-    /* If both arguments are byte strings, use strcoll.  */
-    if (PyString_Check(os1) && PyString_Check(os2))
-        return PyInt_FromLong(strcoll(PyString_AS_STRING(os1),
-                                      PyString_AS_STRING(os2)));
-    /* If neither argument is unicode, it's an error.  */
-    if (!PyUnicode_Check(os1) && !PyUnicode_Check(os2)) {
-        PyErr_SetString(PyExc_ValueError, "strcoll arguments must be strings");
-    }
-    /* Convert the non-unicode argument to unicode. */
-    if (!PyUnicode_Check(os1)) {
-    os1 = PyUnicode_FromObject(os1);
-    if (!os1)
-        return NULL;
-        rel1 = 1;
-    }
-    if (!PyUnicode_Check(os2)) {
-        os2 = PyUnicode_FromObject(os2);
-        if (!os2) {
-            if (rel1) {
-                Py_DECREF(os1);
-            }
-            return NULL;
-        }
-        rel2 = 1;
-    }
-    /* Convert the unicode strings to wchar[]. */
-    len1 = PyUnicode_GET_SIZE(os1) + 1;
-    ws1 = PyMem_MALLOC(len1 * sizeof(wchar_t));
-    if (!ws1) {
-        PyErr_NoMemory();
-        goto done;
-    }
-    if (PyUnicode_AsWideChar((PyUnicodeObject*)os1, ws1, len1) == -1)
-        goto done;
-    ws1[len1 - 1] = 0;
-    len2 = PyUnicode_GET_SIZE(os2) + 1;
-    ws2 = PyMem_MALLOC(len2 * sizeof(wchar_t));
-    if (!ws2) {
-        PyErr_NoMemory();
-        goto done;
-    }
-    if (PyUnicode_AsWideChar((PyUnicodeObject*)os2, ws2, len2) == -1)
-        goto done;
-    ws2[len2 - 1] = 0;
-    /* Collate the strings. */
-    result = PyInt_FromLong(wcscoll(ws1, ws2));
-  done:
-    /* Deallocate everything. */
-    if (ws1) PyMem_FREE(ws1);
-    if (ws2) PyMem_FREE(ws2);
-    if (rel1) {
-        Py_DECREF(os1);
-    }
-    if (rel2) {
-        Py_DECREF(os2);
-    }
-    return result;
-#endif
-}
-
-
-PyDoc_STRVAR(strxfrm__doc__,
-"string -> string. Returns a string that behaves for cmp locale-aware.");
-
-static PyObject*
-PyLocale_strxfrm(PyObject* self, PyObject* args)
-{
-    char *s, *buf;
-    size_t n1, n2;
-    PyObject *result;
-
-    if (!PyArg_ParseTuple(args, "s:strxfrm", &s))
-        return NULL;
-
-    /* assume no change in size, first */
-    n1 = strlen(s) + 1;
-    buf = PyMem_Malloc(n1);
-    if (!buf)
-        return PyErr_NoMemory();
-    n2 = strxfrm(buf, s, n1) + 1;
-    if (n2 > n1) {
-        /* more space needed */
-        buf = PyMem_Realloc(buf, n2);
-        if (!buf)
-            return PyErr_NoMemory();
-        strxfrm(buf, s, n2);
-    }
-    result = PyString_FromString(buf);
-    PyMem_Free(buf);
-    return result;
-}
-
-#if defined(MS_WINDOWS)
-static PyObject*
-PyLocale_getdefaultlocale(PyObject* self)
-{
-    char encoding[100];
-    char locale[100];
-
-    PyOS_snprintf(encoding, sizeof(encoding), "cp%d", GetACP());
-
-    if (GetLocaleInfo(LOCALE_USER_DEFAULT,
-                      LOCALE_SISO639LANGNAME,
-                      locale, sizeof(locale))) {
-        Py_ssize_t i = strlen(locale);
-        locale[i++] = '_';
-        if (GetLocaleInfo(LOCALE_USER_DEFAULT,
-                          LOCALE_SISO3166CTRYNAME,
-                          locale+i, (int)(sizeof(locale)-i)))
-            return Py_BuildValue("ss", locale, encoding);
-    }
-
-    /* If we end up here, this windows version didn't know about
-       ISO639/ISO3166 names (it's probably Windows 95).  Return the
-       Windows language identifier instead (a hexadecimal number) */
-
-    locale[0] = '0';
-    locale[1] = 'x';
-    if (GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_IDEFAULTLANGUAGE,
-                      locale+2, sizeof(locale)-2)) {
-        return Py_BuildValue("ss", locale, encoding);
-    }
-
-    /* cannot determine the language code (very unlikely) */
-    Py_INCREF(Py_None);
-    return Py_BuildValue("Os", Py_None, encoding);
-}
-#endif
-
-#ifdef HAVE_LANGINFO_H
-#define LANGINFO(X) {#X, X}
-static struct langinfo_constant{
-    char* name;
-    int value;
-} langinfo_constants[] =
-{
-    /* These constants should exist on any langinfo implementation */
-    LANGINFO(DAY_1),
-    LANGINFO(DAY_2),
-    LANGINFO(DAY_3),
-    LANGINFO(DAY_4),
-    LANGINFO(DAY_5),
-    LANGINFO(DAY_6),
-    LANGINFO(DAY_7),
-
-    LANGINFO(ABDAY_1),
-    LANGINFO(ABDAY_2),
-    LANGINFO(ABDAY_3),
-    LANGINFO(ABDAY_4),
-    LANGINFO(ABDAY_5),
-    LANGINFO(ABDAY_6),
-    LANGINFO(ABDAY_7),
-
-    LANGINFO(MON_1),
-    LANGINFO(MON_2),
-    LANGINFO(MON_3),
-    LANGINFO(MON_4),
-    LANGINFO(MON_5),
-    LANGINFO(MON_6),
-    LANGINFO(MON_7),
-    LANGINFO(MON_8),
-    LANGINFO(MON_9),
-    LANGINFO(MON_10),
-    LANGINFO(MON_11),
-    LANGINFO(MON_12),
-
-    LANGINFO(ABMON_1),
-    LANGINFO(ABMON_2),
-    LANGINFO(ABMON_3),
-    LANGINFO(ABMON_4),
-    LANGINFO(ABMON_5),
-    LANGINFO(ABMON_6),
-    LANGINFO(ABMON_7),
-    LANGINFO(ABMON_8),
-    LANGINFO(ABMON_9),
-    LANGINFO(ABMON_10),
-    LANGINFO(ABMON_11),
-    LANGINFO(ABMON_12),
-
-#ifdef RADIXCHAR
-    /* The following are not available with glibc 2.0 */
-    LANGINFO(RADIXCHAR),
-    LANGINFO(THOUSEP),
-    /* YESSTR and NOSTR are deprecated in glibc, since they are
-       a special case of message translation, which should be rather
-       done using gettext. So we don't expose it to Python in the
-       first place.
-    LANGINFO(YESSTR),
-    LANGINFO(NOSTR),
-    */
-    LANGINFO(CRNCYSTR),
-#endif
-
-    LANGINFO(D_T_FMT),
-    LANGINFO(D_FMT),
-    LANGINFO(T_FMT),
-    LANGINFO(AM_STR),
-    LANGINFO(PM_STR),
-
-    /* The following constants are available only with XPG4, but...
-       AIX 3.2. only has CODESET.
-       OpenBSD doesn't have CODESET but has T_FMT_AMPM, and doesn't have
-       a few of the others.
-       Solution: ifdef-test them all. */
-#ifdef CODESET
-    LANGINFO(CODESET),
-#endif
-#ifdef T_FMT_AMPM
-    LANGINFO(T_FMT_AMPM),
-#endif
-#ifdef ERA
-    LANGINFO(ERA),
-#endif
-#ifdef ERA_D_FMT
-    LANGINFO(ERA_D_FMT),
-#endif
-#ifdef ERA_D_T_FMT
-    LANGINFO(ERA_D_T_FMT),
-#endif
-#ifdef ERA_T_FMT
-    LANGINFO(ERA_T_FMT),
-#endif
-#ifdef ALT_DIGITS
-    LANGINFO(ALT_DIGITS),
-#endif
-#ifdef YESEXPR
-    LANGINFO(YESEXPR),
-#endif
-#ifdef NOEXPR
-    LANGINFO(NOEXPR),
-#endif
-#ifdef _DATE_FMT
-    /* This is not available in all glibc versions that have CODESET. */
-    LANGINFO(_DATE_FMT),
-#endif
-    {0, 0}
-};
-
-PyDoc_STRVAR(nl_langinfo__doc__,
-"nl_langinfo(key) -> string\n"
-"Return the value for the locale information associated with key.");
-
-static PyObject*
-PyLocale_nl_langinfo(PyObject* self, PyObject* args)
-{
-    int item, i;
-    if (!PyArg_ParseTuple(args, "i:nl_langinfo", &item))
-    return NULL;
-    /* Check whether this is a supported constant. GNU libc sometimes
-       returns numeric values in the char* return value, which would
-       crash PyString_FromString.  */
-    for (i = 0; langinfo_constants[i].name; i++)
-        if (langinfo_constants[i].value == item) {
-            /* Check NULL as a workaround for GNU libc's returning NULL
-               instead of an empty string for nl_langinfo(ERA).  */
-            const char *result = nl_langinfo(item);
-            return PyString_FromString(result != NULL ? result : "");
-        }
-    PyErr_SetString(PyExc_ValueError, "unsupported langinfo constant");
-    return NULL;
-}
-#endif /* HAVE_LANGINFO_H */
-
-#ifdef HAVE_LIBINTL_H
-
-PyDoc_STRVAR(gettext__doc__,
-"gettext(msg) -> string\n"
-"Return translation of msg.");
-
-static PyObject*
-PyIntl_gettext(PyObject* self, PyObject *args)
-{
-    char *in;
-    if (!PyArg_ParseTuple(args, "s", &in))
-        return 0;
-    return PyString_FromString(gettext(in));
-}
-
-PyDoc_STRVAR(dgettext__doc__,
-"dgettext(domain, msg) -> string\n"
-"Return translation of msg in domain.");
-
-static PyObject*
-PyIntl_dgettext(PyObject* self, PyObject *args)
-{
-    char *domain, *in;
-    if (!PyArg_ParseTuple(args, "zs", &domain, &in))
-        return 0;
-    return PyString_FromString(dgettext(domain, in));
-}
-
-PyDoc_STRVAR(dcgettext__doc__,
-"dcgettext(domain, msg, category) -> string\n"
-"Return translation of msg in domain and category.");
-
-static PyObject*
-PyIntl_dcgettext(PyObject *self, PyObject *args)
-{
-    char *domain, *msgid;
-    int category;
-    if (!PyArg_ParseTuple(args, "zsi", &domain, &msgid, &category))
-        return 0;
-    return PyString_FromString(dcgettext(domain,msgid,category));
-}
-
-PyDoc_STRVAR(textdomain__doc__,
-"textdomain(domain) -> string\n"
-"Set the C library's textdmain to domain, returning the new domain.");
-
-static PyObject*
-PyIntl_textdomain(PyObject* self, PyObject* args)
-{
-    char *domain;
-    if (!PyArg_ParseTuple(args, "z", &domain))
-        return 0;
-    domain = textdomain(domain);
-    if (!domain) {
-        PyErr_SetFromErrno(PyExc_OSError);
-        return NULL;
-    }
-    return PyString_FromString(domain);
-}
-
-PyDoc_STRVAR(bindtextdomain__doc__,
-"bindtextdomain(domain, dir) -> string\n"
-"Bind the C library's domain to dir.");
-
-static PyObject*
-PyIntl_bindtextdomain(PyObject* self,PyObject*args)
-{
-    char *domain, *dirname;
-    if (!PyArg_ParseTuple(args, "sz", &domain, &dirname))
-        return 0;
-    if (!strlen(domain)) {
-        PyErr_SetString(Error, "domain must be a non-empty string");
-        return 0;
-    }
-    dirname = bindtextdomain(domain, dirname);
-    if (!dirname) {
-        PyErr_SetFromErrno(PyExc_OSError);
-        return NULL;
-    }
-    return PyString_FromString(dirname);
-}
-
-#ifdef HAVE_BIND_TEXTDOMAIN_CODESET
-PyDoc_STRVAR(bind_textdomain_codeset__doc__,
-"bind_textdomain_codeset(domain, codeset) -> string\n"
-"Bind the C library's domain to codeset.");
-
-static PyObject*
-PyIntl_bind_textdomain_codeset(PyObject* self,PyObject*args)
-{
-    char *domain,*codeset;
-    if (!PyArg_ParseTuple(args, "sz", &domain, &codeset))
-        return NULL;
-    codeset = bind_textdomain_codeset(domain, codeset);
-    if (codeset)
-        return PyString_FromString(codeset);
-    Py_RETURN_NONE;
-}
-#endif
-
-#endif
-
-static struct PyMethodDef PyLocale_Methods[] = {
-  {"setlocale", (PyCFunction) PyLocale_setlocale,
-   METH_VARARGS, setlocale__doc__},
-  {"localeconv", (PyCFunction) PyLocale_localeconv,
-   METH_NOARGS, localeconv__doc__},
-  {"strcoll", (PyCFunction) PyLocale_strcoll,
-   METH_VARARGS, strcoll__doc__},
-  {"strxfrm", (PyCFunction) PyLocale_strxfrm,
-   METH_VARARGS, strxfrm__doc__},
-#if defined(MS_WINDOWS)
-  {"_getdefaultlocale", (PyCFunction) PyLocale_getdefaultlocale, METH_NOARGS},
-#endif
-#ifdef HAVE_LANGINFO_H
-  {"nl_langinfo", (PyCFunction) PyLocale_nl_langinfo,
-   METH_VARARGS, nl_langinfo__doc__},
-#endif
-#ifdef HAVE_LIBINTL_H
-  {"gettext",(PyCFunction)PyIntl_gettext,METH_VARARGS,
-    gettext__doc__},
-  {"dgettext",(PyCFunction)PyIntl_dgettext,METH_VARARGS,
-   dgettext__doc__},
-  {"dcgettext",(PyCFunction)PyIntl_dcgettext,METH_VARARGS,
-    dcgettext__doc__},
-  {"textdomain",(PyCFunction)PyIntl_textdomain,METH_VARARGS,
-   textdomain__doc__},
-  {"bindtextdomain",(PyCFunction)PyIntl_bindtextdomain,METH_VARARGS,
-   bindtextdomain__doc__},
-#ifdef HAVE_BIND_TEXTDOMAIN_CODESET
-  {"bind_textdomain_codeset",(PyCFunction)PyIntl_bind_textdomain_codeset,
-   METH_VARARGS, bind_textdomain_codeset__doc__},
-#endif
-#endif
-  {NULL, NULL}
-};
-
-PyMODINIT_FUNC
-init_locale(void)
-{
-    PyObject *m, *d, *x;
-#ifdef HAVE_LANGINFO_H
-    int i;
-#endif
-
-    m = Py_InitModule("_locale", PyLocale_Methods);
-    if (m == NULL)
-    return;
-
-    d = PyModule_GetDict(m);
-
-    x = PyInt_FromLong(LC_CTYPE);
-    PyDict_SetItemString(d, "LC_CTYPE", x);
-    Py_XDECREF(x);
-
-    x = PyInt_FromLong(LC_TIME);
-    PyDict_SetItemString(d, "LC_TIME", x);
-    Py_XDECREF(x);
-
-    x = PyInt_FromLong(LC_COLLATE);
-    PyDict_SetItemString(d, "LC_COLLATE", x);
-    Py_XDECREF(x);
-
-    x = PyInt_FromLong(LC_MONETARY);
-    PyDict_SetItemString(d, "LC_MONETARY", x);
-    Py_XDECREF(x);
-
-#ifdef LC_MESSAGES
-    x = PyInt_FromLong(LC_MESSAGES);
-    PyDict_SetItemString(d, "LC_MESSAGES", x);
-    Py_XDECREF(x);
-#endif /* LC_MESSAGES */
-
-    x = PyInt_FromLong(LC_NUMERIC);
-    PyDict_SetItemString(d, "LC_NUMERIC", x);
-    Py_XDECREF(x);
-
-    x = PyInt_FromLong(LC_ALL);
-    PyDict_SetItemString(d, "LC_ALL", x);
-    Py_XDECREF(x);
-
-    x = PyInt_FromLong(CHAR_MAX);
-    PyDict_SetItemString(d, "CHAR_MAX", x);
-    Py_XDECREF(x);
-
-    Error = PyErr_NewException("locale.Error", NULL, NULL);
-    PyDict_SetItemString(d, "Error", Error);
-
-    x = PyString_FromString(locale__doc__);
-    PyDict_SetItemString(d, "__doc__", x);
-    Py_XDECREF(x);
-
-#ifdef HAVE_LANGINFO_H
-    for (i = 0; langinfo_constants[i].name; i++) {
-        PyModule_AddIntConstant(m, langinfo_constants[i].name,
-                                langinfo_constants[i].value);
-    }
-#endif
-}
-
-/*
-Local variables:
-c-basic-offset: 4
-indent-tabs-mode: nil
-End:
-*/
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_lsprof.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_lsprof.c
deleted file mode 100644
index 4e9b77a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_lsprof.c
+++ /dev/null
@@ -1,892 +0,0 @@
-#include "Python.h"
-#include "compile.h"
-#include "frameobject.h"
-#include "structseq.h"
-#include "rotatingtree.h"
-
-#if !defined(HAVE_LONG_LONG)
-#error "This module requires long longs!"
-#endif
-
-/*** Selection of a high-precision timer ***/
-
-#ifdef MS_WINDOWS
-
-#include <windows.h>
-
-static PY_LONG_LONG
-hpTimer(void)
-{
-    LARGE_INTEGER li;
-    QueryPerformanceCounter(&li);
-    return li.QuadPart;
-}
-
-static double
-hpTimerUnit(void)
-{
-    LARGE_INTEGER li;
-    if (QueryPerformanceFrequency(&li))
-        return 1.0 / li.QuadPart;
-    else
-        return 0.000001;  /* unlikely */
-}
-
-#else  /* !MS_WINDOWS */
-
-#ifndef HAVE_GETTIMEOFDAY
-#error "This module requires gettimeofday() on non-Windows platforms!"
-#endif
-
-#if (defined(PYOS_OS2) && defined(PYCC_GCC))
-#include <sys/time.h>
-#else
-#include <sys/resource.h>
-#include <sys/times.h>
-#endif
-
-static PY_LONG_LONG
-hpTimer(void)
-{
-    struct timeval tv;
-    PY_LONG_LONG ret;
-#ifdef GETTIMEOFDAY_NO_TZ
-    gettimeofday(&tv);
-#else
-    gettimeofday(&tv, (struct timezone *)NULL);
-#endif
-    ret = tv.tv_sec;
-    ret = ret * 1000000 + tv.tv_usec;
-    return ret;
-}
-
-static double
-hpTimerUnit(void)
-{
-    return 0.000001;
-}
-
-#endif  /* MS_WINDOWS */
-
-/************************************************************/
-/* Written by Brett Rosen and Ted Czotter */
-
-struct _ProfilerEntry;
-
-/* represents a function called from another function */
-typedef struct _ProfilerSubEntry {
-    rotating_node_t header;
-    PY_LONG_LONG tt;
-    PY_LONG_LONG it;
-    long callcount;
-    long recursivecallcount;
-    long recursionLevel;
-} ProfilerSubEntry;
-
-/* represents a function or user defined block */
-typedef struct _ProfilerEntry {
-    rotating_node_t header;
-    PyObject *userObj; /* PyCodeObject, or a descriptive str for builtins */
-    PY_LONG_LONG tt; /* total time in this entry */
-    PY_LONG_LONG it; /* inline time in this entry (not in subcalls) */
-    long callcount; /* how many times this was called */
-    long recursivecallcount; /* how many times called recursively */
-    long recursionLevel;
-    rotating_node_t *calls;
-} ProfilerEntry;
-
-typedef struct _ProfilerContext {
-    PY_LONG_LONG t0;
-    PY_LONG_LONG subt;
-    struct _ProfilerContext *previous;
-    ProfilerEntry *ctxEntry;
-} ProfilerContext;
-
-typedef struct {
-    PyObject_HEAD
-    rotating_node_t *profilerEntries;
-    ProfilerContext *currentProfilerContext;
-    ProfilerContext *freelistProfilerContext;
-    int flags;
-    PyObject *externalTimer;
-    double externalTimerUnit;
-} ProfilerObject;
-
-#define POF_ENABLED     0x001
-#define POF_SUBCALLS    0x002
-#define POF_BUILTINS    0x004
-#define POF_NOMEMORY    0x100
-
-staticforward PyTypeObject PyProfiler_Type;
-
-#define PyProfiler_Check(op) PyObject_TypeCheck(op, &PyProfiler_Type)
-#define PyProfiler_CheckExact(op) (Py_TYPE(op) == &PyProfiler_Type)
-
-/*** External Timers ***/
-
-#define DOUBLE_TIMER_PRECISION   4294967296.0
-static PyObject *empty_tuple;
-
-static PY_LONG_LONG CallExternalTimer(ProfilerObject *pObj)
-{
-    PY_LONG_LONG result;
-    PyObject *o = PyObject_Call(pObj->externalTimer, empty_tuple, NULL);
-    if (o == NULL) {
-        PyErr_WriteUnraisable(pObj->externalTimer);
-        return 0;
-    }
-    if (pObj->externalTimerUnit > 0.0) {
-        /* interpret the result as an integer that will be scaled
-           in profiler_getstats() */
-        result = PyLong_AsLongLong(o);
-    }
-    else {
-        /* interpret the result as a double measured in seconds.
-           As the profiler works with PY_LONG_LONG internally
-           we convert it to a large integer */
-        double val = PyFloat_AsDouble(o);
-        /* error handling delayed to the code below */
-        result = (PY_LONG_LONG) (val * DOUBLE_TIMER_PRECISION);
-    }
-    Py_DECREF(o);
-    if (PyErr_Occurred()) {
-        PyErr_WriteUnraisable(pObj->externalTimer);
-        return 0;
-    }
-    return result;
-}
-
-#define CALL_TIMER(pObj)        ((pObj)->externalTimer ?                \
-                                        CallExternalTimer(pObj) :       \
-                                        hpTimer())
-
-/*** ProfilerObject ***/
-
-static PyObject *
-normalizeUserObj(PyObject *obj)
-{
-    PyCFunctionObject *fn;
-    if (!PyCFunction_Check(obj)) {
-        Py_INCREF(obj);
-        return obj;
-    }
-    /* Replace built-in function objects with a descriptive string
-       because of built-in methods -- keeping a reference to
-       __self__ is probably not a good idea. */
-    fn = (PyCFunctionObject *)obj;
-
-    if (fn->m_self == NULL) {
-        /* built-in function: look up the module name */
-        PyObject *mod = fn->m_module;
-        char *modname;
-        if (mod && PyString_Check(mod)) {
-            modname = PyString_AS_STRING(mod);
-        }
-        else if (mod && PyModule_Check(mod)) {
-            modname = PyModule_GetName(mod);
-            if (modname == NULL) {
-                PyErr_Clear();
-                modname = "__builtin__";
-            }
-        }
-        else {
-            modname = "__builtin__";
-        }
-        if (strcmp(modname, "__builtin__") != 0)
-            return PyString_FromFormat("<%s.%s>",
-                                       modname,
-                                       fn->m_ml->ml_name);
-        else
-            return PyString_FromFormat("<%s>",
-                                       fn->m_ml->ml_name);
-    }
-    else {
-        /* built-in method: try to return
-            repr(getattr(type(__self__), __name__))
-        */
-        PyObject *self = fn->m_self;
-        PyObject *name = PyString_FromString(fn->m_ml->ml_name);
-        if (name != NULL) {
-            PyObject *mo = _PyType_Lookup(Py_TYPE(self), name);
-            Py_XINCREF(mo);
-            Py_DECREF(name);
-            if (mo != NULL) {
-                PyObject *res = PyObject_Repr(mo);
-                Py_DECREF(mo);
-                if (res != NULL)
-                    return res;
-            }
-        }
-        PyErr_Clear();
-        return PyString_FromFormat("<built-in method %s>",
-                                   fn->m_ml->ml_name);
-    }
-}
-
-static ProfilerEntry*
-newProfilerEntry(ProfilerObject *pObj, void *key, PyObject *userObj)
-{
-    ProfilerEntry *self;
-    self = (ProfilerEntry*) malloc(sizeof(ProfilerEntry));
-    if (self == NULL) {
-        pObj->flags |= POF_NOMEMORY;
-        return NULL;
-    }
-    userObj = normalizeUserObj(userObj);
-    if (userObj == NULL) {
-        PyErr_Clear();
-        free(self);
-        pObj->flags |= POF_NOMEMORY;
-        return NULL;
-    }
-    self->header.key = key;
-    self->userObj = userObj;
-    self->tt = 0;
-    self->it = 0;
-    self->callcount = 0;
-    self->recursivecallcount = 0;
-    self->recursionLevel = 0;
-    self->calls = EMPTY_ROTATING_TREE;
-    RotatingTree_Add(&pObj->profilerEntries, &self->header);
-    return self;
-}
-
-static ProfilerEntry*
-getEntry(ProfilerObject *pObj, void *key)
-{
-    return (ProfilerEntry*) RotatingTree_Get(&pObj->profilerEntries, key);
-}
-
-static ProfilerSubEntry *
-getSubEntry(ProfilerObject *pObj, ProfilerEntry *caller, ProfilerEntry* entry)
-{
-    return (ProfilerSubEntry*) RotatingTree_Get(&caller->calls,
-                                                (void *)entry);
-}
-
-static ProfilerSubEntry *
-newSubEntry(ProfilerObject *pObj,  ProfilerEntry *caller, ProfilerEntry* entry)
-{
-    ProfilerSubEntry *self;
-    self = (ProfilerSubEntry*) malloc(sizeof(ProfilerSubEntry));
-    if (self == NULL) {
-        pObj->flags |= POF_NOMEMORY;
-        return NULL;
-    }
-    self->header.key = (void *)entry;
-    self->tt = 0;
-    self->it = 0;
-    self->callcount = 0;
-    self->recursivecallcount = 0;
-    self->recursionLevel = 0;
-    RotatingTree_Add(&caller->calls, &self->header);
-    return self;
-}
-
-static int freeSubEntry(rotating_node_t *header, void *arg)
-{
-    ProfilerSubEntry *subentry = (ProfilerSubEntry*) header;
-    free(subentry);
-    return 0;
-}
-
-static int freeEntry(rotating_node_t *header, void *arg)
-{
-    ProfilerEntry *entry = (ProfilerEntry*) header;
-    RotatingTree_Enum(entry->calls, freeSubEntry, NULL);
-    Py_DECREF(entry->userObj);
-    free(entry);
-    return 0;
-}
-
-static void clearEntries(ProfilerObject *pObj)
-{
-    RotatingTree_Enum(pObj->profilerEntries, freeEntry, NULL);
-    pObj->profilerEntries = EMPTY_ROTATING_TREE;
-    /* release the memory hold by the ProfilerContexts */
-    if (pObj->currentProfilerContext) {
-        free(pObj->currentProfilerContext);
-        pObj->currentProfilerContext = NULL;
-    }
-    while (pObj->freelistProfilerContext) {
-        ProfilerContext *c = pObj->freelistProfilerContext;
-        pObj->freelistProfilerContext = c->previous;
-        free(c);
-    }
-    pObj->freelistProfilerContext = NULL;
-}
-
-static void
-initContext(ProfilerObject *pObj, ProfilerContext *self, ProfilerEntry *entry)
-{
-    self->ctxEntry = entry;
-    self->subt = 0;
-    self->previous = pObj->currentProfilerContext;
-    pObj->currentProfilerContext = self;
-    ++entry->recursionLevel;
-    if ((pObj->flags & POF_SUBCALLS) && self->previous) {
-        /* find or create an entry for me in my caller's entry */
-        ProfilerEntry *caller = self->previous->ctxEntry;
-        ProfilerSubEntry *subentry = getSubEntry(pObj, caller, entry);
-        if (subentry == NULL)
-            subentry = newSubEntry(pObj, caller, entry);
-        if (subentry)
-            ++subentry->recursionLevel;
-    }
-    self->t0 = CALL_TIMER(pObj);
-}
-
-static void
-Stop(ProfilerObject *pObj, ProfilerContext *self, ProfilerEntry *entry)
-{
-    PY_LONG_LONG tt = CALL_TIMER(pObj) - self->t0;
-    PY_LONG_LONG it = tt - self->subt;
-    if (self->previous)
-        self->previous->subt += tt;
-    pObj->currentProfilerContext = self->previous;
-    if (--entry->recursionLevel == 0)
-        entry->tt += tt;
-    else
-        ++entry->recursivecallcount;
-    entry->it += it;
-    entry->callcount++;
-    if ((pObj->flags & POF_SUBCALLS) && self->previous) {
-        /* find or create an entry for me in my caller's entry */
-        ProfilerEntry *caller = self->previous->ctxEntry;
-        ProfilerSubEntry *subentry = getSubEntry(pObj, caller, entry);
-        if (subentry) {
-            if (--subentry->recursionLevel == 0)
-                subentry->tt += tt;
-            else
-                ++subentry->recursivecallcount;
-            subentry->it += it;
-            ++subentry->callcount;
-        }
-    }
-}
-
-static void
-ptrace_enter_call(PyObject *self, void *key, PyObject *userObj)
-{
-    /* entering a call to the function identified by 'key'
-       (which can be a PyCodeObject or a PyMethodDef pointer) */
-    ProfilerObject *pObj = (ProfilerObject*)self;
-    ProfilerEntry *profEntry;
-    ProfilerContext *pContext;
-
-    /* In the case of entering a generator expression frame via a
-     * throw (gen_send_ex(.., 1)), we may already have an
-     * Exception set here. We must not mess around with this
-     * exception, and some of the code under here assumes that
-     * PyErr_* is its own to mess around with, so we have to
-     * save and restore any current exception. */
-    PyObject *last_type, *last_value, *last_tb;
-    PyErr_Fetch(&last_type, &last_value, &last_tb);
-
-    profEntry = getEntry(pObj, key);
-    if (profEntry == NULL) {
-        profEntry = newProfilerEntry(pObj, key, userObj);
-        if (profEntry == NULL)
-            goto restorePyerr;
-    }
-    /* grab a ProfilerContext out of the free list */
-    pContext = pObj->freelistProfilerContext;
-    if (pContext) {
-        pObj->freelistProfilerContext = pContext->previous;
-    }
-    else {
-        /* free list exhausted, allocate a new one */
-        pContext = (ProfilerContext*)
-            malloc(sizeof(ProfilerContext));
-        if (pContext == NULL) {
-            pObj->flags |= POF_NOMEMORY;
-            goto restorePyerr;
-        }
-    }
-    initContext(pObj, pContext, profEntry);
-
-restorePyerr:
-    PyErr_Restore(last_type, last_value, last_tb);
-}
-
-static void
-ptrace_leave_call(PyObject *self, void *key)
-{
-    /* leaving a call to the function identified by 'key' */
-    ProfilerObject *pObj = (ProfilerObject*)self;
-    ProfilerEntry *profEntry;
-    ProfilerContext *pContext;
-
-    pContext = pObj->currentProfilerContext;
-    if (pContext == NULL)
-        return;
-    profEntry = getEntry(pObj, key);
-    if (profEntry) {
-        Stop(pObj, pContext, profEntry);
-    }
-    else {
-        pObj->currentProfilerContext = pContext->previous;
-    }
-    /* put pContext into the free list */
-    pContext->previous = pObj->freelistProfilerContext;
-    pObj->freelistProfilerContext = pContext;
-}
-
-static int
-profiler_callback(PyObject *self, PyFrameObject *frame, int what,
-                  PyObject *arg)
-{
-    switch (what) {
-
-    /* the 'frame' of a called function is about to start its execution */
-    case PyTrace_CALL:
-        ptrace_enter_call(self, (void *)frame->f_code,
-                                (PyObject *)frame->f_code);
-        break;
-
-    /* the 'frame' of a called function is about to finish
-       (either normally or with an exception) */
-    case PyTrace_RETURN:
-        ptrace_leave_call(self, (void *)frame->f_code);
-        break;
-
-    /* case PyTrace_EXCEPTION:
-        If the exception results in the function exiting, a
-        PyTrace_RETURN event will be generated, so we don't need to
-        handle it. */
-
-#ifdef PyTrace_C_CALL   /* not defined in Python <= 2.3 */
-    /* the Python function 'frame' is issuing a call to the built-in
-       function 'arg' */
-    case PyTrace_C_CALL:
-        if ((((ProfilerObject *)self)->flags & POF_BUILTINS)
-            && PyCFunction_Check(arg)) {
-            ptrace_enter_call(self,
-                              ((PyCFunctionObject *)arg)->m_ml,
-                              arg);
-        }
-        break;
-
-    /* the call to the built-in function 'arg' is returning into its
-       caller 'frame' */
-    case PyTrace_C_RETURN:              /* ...normally */
-    case PyTrace_C_EXCEPTION:           /* ...with an exception set */
-        if ((((ProfilerObject *)self)->flags & POF_BUILTINS)
-            && PyCFunction_Check(arg)) {
-            ptrace_leave_call(self,
-                              ((PyCFunctionObject *)arg)->m_ml);
-        }
-        break;
-#endif
-
-    default:
-        break;
-    }
-    return 0;
-}
-
-static int
-pending_exception(ProfilerObject *pObj)
-{
-    if (pObj->flags & POF_NOMEMORY) {
-        pObj->flags -= POF_NOMEMORY;
-        PyErr_SetString(PyExc_MemoryError,
-                        "memory was exhausted while profiling");
-        return -1;
-    }
-    return 0;
-}
-
-/************************************************************/
-
-static PyStructSequence_Field profiler_entry_fields[] = {
-    {"code",         "code object or built-in function name"},
-    {"callcount",    "how many times this was called"},
-    {"reccallcount", "how many times called recursively"},
-    {"totaltime",    "total time in this entry"},
-    {"inlinetime",   "inline time in this entry (not in subcalls)"},
-    {"calls",        "details of the calls"},
-    {0}
-};
-
-static PyStructSequence_Field profiler_subentry_fields[] = {
-    {"code",         "called code object or built-in function name"},
-    {"callcount",    "how many times this is called"},
-    {"reccallcount", "how many times this is called recursively"},
-    {"totaltime",    "total time spent in this call"},
-    {"inlinetime",   "inline time (not in further subcalls)"},
-    {0}
-};
-
-static PyStructSequence_Desc profiler_entry_desc = {
-    "_lsprof.profiler_entry", /* name */
-    NULL, /* doc */
-    profiler_entry_fields,
-    6
-};
-
-static PyStructSequence_Desc profiler_subentry_desc = {
-    "_lsprof.profiler_subentry", /* name */
-    NULL, /* doc */
-    profiler_subentry_fields,
-    5
-};
-
-static int initialized;
-static PyTypeObject StatsEntryType;
-static PyTypeObject StatsSubEntryType;
-
-
-typedef struct {
-    PyObject *list;
-    PyObject *sublist;
-    double factor;
-} statscollector_t;
-
-static int statsForSubEntry(rotating_node_t *node, void *arg)
-{
-    ProfilerSubEntry *sentry = (ProfilerSubEntry*) node;
-    statscollector_t *collect = (statscollector_t*) arg;
-    ProfilerEntry *entry = (ProfilerEntry*) sentry->header.key;
-    int err;
-    PyObject *sinfo;
-    sinfo = PyObject_CallFunction((PyObject*) &StatsSubEntryType,
-                                  "((Olldd))",
-                                  entry->userObj,
-                                  sentry->callcount,
-                                  sentry->recursivecallcount,
-                                  collect->factor * sentry->tt,
-                                  collect->factor * sentry->it);
-    if (sinfo == NULL)
-        return -1;
-    err = PyList_Append(collect->sublist, sinfo);
-    Py_DECREF(sinfo);
-    return err;
-}
-
-static int statsForEntry(rotating_node_t *node, void *arg)
-{
-    ProfilerEntry *entry = (ProfilerEntry*) node;
-    statscollector_t *collect = (statscollector_t*) arg;
-    PyObject *info;
-    int err;
-    if (entry->callcount == 0)
-        return 0;   /* skip */
-
-    if (entry->calls != EMPTY_ROTATING_TREE) {
-        collect->sublist = PyList_New(0);
-        if (collect->sublist == NULL)
-            return -1;
-        if (RotatingTree_Enum(entry->calls,
-                              statsForSubEntry, collect) != 0) {
-            Py_DECREF(collect->sublist);
-            return -1;
-        }
-    }
-    else {
-        Py_INCREF(Py_None);
-        collect->sublist = Py_None;
-    }
-
-    info = PyObject_CallFunction((PyObject*) &StatsEntryType,
-                                 "((OllddO))",
-                                 entry->userObj,
-                                 entry->callcount,
-                                 entry->recursivecallcount,
-                                 collect->factor * entry->tt,
-                                 collect->factor * entry->it,
-                                 collect->sublist);
-    Py_DECREF(collect->sublist);
-    if (info == NULL)
-        return -1;
-    err = PyList_Append(collect->list, info);
-    Py_DECREF(info);
-    return err;
-}
-
-PyDoc_STRVAR(getstats_doc, "\
-getstats() -> list of profiler_entry objects\n\
-\n\
-Return all information collected by the profiler.\n\
-Each profiler_entry is a tuple-like object with the\n\
-following attributes:\n\
-\n\
-    code          code object\n\
-    callcount     how many times this was called\n\
-    reccallcount  how many times called recursively\n\
-    totaltime     total time in this entry\n\
-    inlinetime    inline time in this entry (not in subcalls)\n\
-    calls         details of the calls\n\
-\n\
-The calls attribute is either None or a list of\n\
-profiler_subentry objects:\n\
-\n\
-    code          called code object\n\
-    callcount     how many times this is called\n\
-    reccallcount  how many times this is called recursively\n\
-    totaltime     total time spent in this call\n\
-    inlinetime    inline time (not in further subcalls)\n\
-");
-
-static PyObject*
-profiler_getstats(ProfilerObject *pObj, PyObject* noarg)
-{
-    statscollector_t collect;
-    if (pending_exception(pObj))
-        return NULL;
-    if (!pObj->externalTimer)
-        collect.factor = hpTimerUnit();
-    else if (pObj->externalTimerUnit > 0.0)
-        collect.factor = pObj->externalTimerUnit;
-    else
-        collect.factor = 1.0 / DOUBLE_TIMER_PRECISION;
-    collect.list = PyList_New(0);
-    if (collect.list == NULL)
-        return NULL;
-    if (RotatingTree_Enum(pObj->profilerEntries, statsForEntry, &collect)
-        != 0) {
-        Py_DECREF(collect.list);
-        return NULL;
-    }
-    return collect.list;
-}
-
-static int
-setSubcalls(ProfilerObject *pObj, int nvalue)
-{
-    if (nvalue == 0)
-        pObj->flags &= ~POF_SUBCALLS;
-    else if (nvalue > 0)
-        pObj->flags |=  POF_SUBCALLS;
-    return 0;
-}
-
-static int
-setBuiltins(ProfilerObject *pObj, int nvalue)
-{
-    if (nvalue == 0)
-        pObj->flags &= ~POF_BUILTINS;
-    else if (nvalue > 0) {
-#ifndef PyTrace_C_CALL
-        PyErr_SetString(PyExc_ValueError,
-                        "builtins=True requires Python >= 2.4");
-        return -1;
-#else
-        pObj->flags |=  POF_BUILTINS;
-#endif
-    }
-    return 0;
-}
-
-PyDoc_STRVAR(enable_doc, "\
-enable(subcalls=True, builtins=True)\n\
-\n\
-Start collecting profiling information.\n\
-If 'subcalls' is True, also records for each function\n\
-statistics separated according to its current caller.\n\
-If 'builtins' is True, records the time spent in\n\
-built-in functions separately from their caller.\n\
-");
-
-static PyObject*
-profiler_enable(ProfilerObject *self, PyObject *args, PyObject *kwds)
-{
-    int subcalls = -1;
-    int builtins = -1;
-    static char *kwlist[] = {"subcalls", "builtins", 0};
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|ii:enable",
-                                     kwlist, &subcalls, &builtins))
-        return NULL;
-    if (setSubcalls(self, subcalls) < 0 || setBuiltins(self, builtins) < 0)
-        return NULL;
-    PyEval_SetProfile(profiler_callback, (PyObject*)self);
-    self->flags |= POF_ENABLED;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static void
-flush_unmatched(ProfilerObject *pObj)
-{
-    while (pObj->currentProfilerContext) {
-        ProfilerContext *pContext = pObj->currentProfilerContext;
-        ProfilerEntry *profEntry= pContext->ctxEntry;
-        if (profEntry)
-            Stop(pObj, pContext, profEntry);
-        else
-            pObj->currentProfilerContext = pContext->previous;
-        if (pContext)
-            free(pContext);
-    }
-
-}
-
-PyDoc_STRVAR(disable_doc, "\
-disable()\n\
-\n\
-Stop collecting profiling information.\n\
-");
-
-static PyObject*
-profiler_disable(ProfilerObject *self, PyObject* noarg)
-{
-    self->flags &= ~POF_ENABLED;
-    PyEval_SetProfile(NULL, NULL);
-    flush_unmatched(self);
-    if (pending_exception(self))
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(clear_doc, "\
-clear()\n\
-\n\
-Clear all profiling information collected so far.\n\
-");
-
-static PyObject*
-profiler_clear(ProfilerObject *pObj, PyObject* noarg)
-{
-    clearEntries(pObj);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static void
-profiler_dealloc(ProfilerObject *op)
-{
-    if (op->flags & POF_ENABLED)
-        PyEval_SetProfile(NULL, NULL);
-    flush_unmatched(op);
-    clearEntries(op);
-    Py_XDECREF(op->externalTimer);
-    Py_TYPE(op)->tp_free(op);
-}
-
-static int
-profiler_init(ProfilerObject *pObj, PyObject *args, PyObject *kw)
-{
-    PyObject *o;
-    PyObject *timer = NULL;
-    double timeunit = 0.0;
-    int subcalls = 1;
-#ifdef PyTrace_C_CALL
-    int builtins = 1;
-#else
-    int builtins = 0;
-#endif
-    static char *kwlist[] = {"timer", "timeunit",
-                                   "subcalls", "builtins", 0};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "|Odii:Profiler", kwlist,
-                                     &timer, &timeunit,
-                                     &subcalls, &builtins))
-        return -1;
-
-    if (setSubcalls(pObj, subcalls) < 0 || setBuiltins(pObj, builtins) < 0)
-        return -1;
-    o = pObj->externalTimer;
-    pObj->externalTimer = timer;
-    Py_XINCREF(timer);
-    Py_XDECREF(o);
-    pObj->externalTimerUnit = timeunit;
-    return 0;
-}
-
-static PyMethodDef profiler_methods[] = {
-    {"getstats",    (PyCFunction)profiler_getstats,
-                    METH_NOARGS,                        getstats_doc},
-    {"enable",          (PyCFunction)profiler_enable,
-                    METH_VARARGS | METH_KEYWORDS,       enable_doc},
-    {"disable",         (PyCFunction)profiler_disable,
-                    METH_NOARGS,                        disable_doc},
-    {"clear",           (PyCFunction)profiler_clear,
-                    METH_NOARGS,                        clear_doc},
-    {NULL, NULL}
-};
-
-PyDoc_STRVAR(profiler_doc, "\
-Profiler(custom_timer=None, time_unit=None, subcalls=True, builtins=True)\n\
-\n\
-    Builds a profiler object using the specified timer function.\n\
-    The default timer is a fast built-in one based on real time.\n\
-    For custom timer functions returning integers, time_unit can\n\
-    be a float specifying a scale (i.e. how long each integer unit\n\
-    is, in seconds).\n\
-");
-
-statichere PyTypeObject PyProfiler_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0,                                      /* ob_size */
-    "_lsprof.Profiler",                     /* tp_name */
-    sizeof(ProfilerObject),                 /* tp_basicsize */
-    0,                                      /* tp_itemsize */
-    (destructor)profiler_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 */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
-    profiler_doc,                           /* tp_doc */
-    0,                                      /* tp_traverse */
-    0,                                      /* tp_clear */
-    0,                                      /* tp_richcompare */
-    0,                                      /* tp_weaklistoffset */
-    0,                                      /* tp_iter */
-    0,                                      /* tp_iternext */
-    profiler_methods,                       /* tp_methods */
-    0,                                      /* tp_members */
-    0,                                      /* tp_getset */
-    0,                                      /* tp_base */
-    0,                                      /* tp_dict */
-    0,                                      /* tp_descr_get */
-    0,                                      /* tp_descr_set */
-    0,                                      /* tp_dictoffset */
-    (initproc)profiler_init,                /* tp_init */
-    PyType_GenericAlloc,                    /* tp_alloc */
-    PyType_GenericNew,                      /* tp_new */
-    PyObject_Del,                           /* tp_free */
-};
-
-static PyMethodDef moduleMethods[] = {
-    {NULL, NULL}
-};
-
-PyMODINIT_FUNC
-init_lsprof(void)
-{
-    PyObject *module, *d;
-    module = Py_InitModule3("_lsprof", moduleMethods, "Fast profiler");
-    if (module == NULL)
-        return;
-    d = PyModule_GetDict(module);
-    if (PyType_Ready(&PyProfiler_Type) < 0)
-        return;
-    PyDict_SetItemString(d, "Profiler", (PyObject *)&PyProfiler_Type);
-
-    if (!initialized) {
-        PyStructSequence_InitType(&StatsEntryType,
-                                  &profiler_entry_desc);
-        PyStructSequence_InitType(&StatsSubEntryType,
-                                  &profiler_subentry_desc);
-    }
-    Py_INCREF((PyObject*) &StatsEntryType);
-    Py_INCREF((PyObject*) &StatsSubEntryType);
-    PyModule_AddObject(module, "profiler_entry",
-                       (PyObject*) &StatsEntryType);
-    PyModule_AddObject(module, "profiler_subentry",
-                       (PyObject*) &StatsSubEntryType);
-    empty_tuple = PyTuple_New(0);
-    initialized = 1;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_math.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_math.c
deleted file mode 100644
index cf089ef..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_math.c
+++ /dev/null
@@ -1,232 +0,0 @@
-/* Definitions of some C99 math library functions, for those platforms
-   that don't implement these functions already. */
-
-#include "Python.h"
-#include <float.h>
-#include "_math.h"
-
-/* The following copyright notice applies to the original
-   implementations of acosh, asinh and atanh. */
-
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-static const double ln2 = 6.93147180559945286227E-01;
-static const double two_pow_m28 = 3.7252902984619141E-09; /* 2**-28 */
-static const double two_pow_p28 = 268435456.0; /* 2**28 */
-static const double zero = 0.0;
-
-/* acosh(x)
- * Method :
- *      Based on
- *            acosh(x) = log [ x + sqrt(x*x-1) ]
- *      we have
- *            acosh(x) := log(x)+ln2, if x is large; else
- *            acosh(x) := log(2x-1/(sqrt(x*x-1)+x)) if x>2; else
- *            acosh(x) := log1p(t+sqrt(2.0*t+t*t)); where t=x-1.
- *
- * Special cases:
- *      acosh(x) is NaN with signal if x<1.
- *      acosh(NaN) is NaN without signal.
- */
-
-double
-_Py_acosh(double x)
-{
-    if (Py_IS_NAN(x)) {
-        return x+x;
-    }
-    if (x < 1.) {                       /* x < 1;  return a signaling NaN */
-        errno = EDOM;
-#ifdef Py_NAN
-        return Py_NAN;
-#else
-        return (x-x)/(x-x);
-#endif
-    }
-    else if (x >= two_pow_p28) {        /* x > 2**28 */
-        if (Py_IS_INFINITY(x)) {
-            return x+x;
-        }
-        else {
-            return log(x)+ln2;          /* acosh(huge)=log(2x) */
-        }
-    }
-    else if (x == 1.) {
-        return 0.0;                     /* acosh(1) = 0 */
-    }
-    else if (x > 2.) {                  /* 2 < x < 2**28 */
-        double t = x*x;
-        return log(2.0*x - 1.0 / (x + sqrt(t - 1.0)));
-    }
-    else {                              /* 1 < x <= 2 */
-        double t = x - 1.0;
-        return m_log1p(t + sqrt(2.0*t + t*t));
-    }
-}
-
-
-/* asinh(x)
- * Method :
- *      Based on
- *              asinh(x) = sign(x) * log [ |x| + sqrt(x*x+1) ]
- *      we have
- *      asinh(x) := x  if  1+x*x=1,
- *               := sign(x)*(log(x)+ln2)) for large |x|, else
- *               := sign(x)*log(2|x|+1/(|x|+sqrt(x*x+1))) if|x|>2, else
- *               := sign(x)*log1p(|x| + x^2/(1 + sqrt(1+x^2)))
- */
-
-double
-_Py_asinh(double x)
-{
-    double w;
-    double absx = fabs(x);
-
-    if (Py_IS_NAN(x) || Py_IS_INFINITY(x)) {
-        return x+x;
-    }
-    if (absx < two_pow_m28) {           /* |x| < 2**-28 */
-        return x;                       /* return x inexact except 0 */
-    }
-    if (absx > two_pow_p28) {           /* |x| > 2**28 */
-        w = log(absx)+ln2;
-    }
-    else if (absx > 2.0) {              /* 2 < |x| < 2**28 */
-        w = log(2.0*absx + 1.0 / (sqrt(x*x + 1.0) + absx));
-    }
-    else {                              /* 2**-28 <= |x| < 2= */
-        double t = x*x;
-        w = m_log1p(absx + t / (1.0 + sqrt(1.0 + t)));
-    }
-    return copysign(w, x);
-
-}
-
-/* atanh(x)
- * Method :
- *    1.Reduced x to positive by atanh(-x) = -atanh(x)
- *    2.For x>=0.5
- *                  1              2x                          x
- *      atanh(x) = --- * log(1 + -------) = 0.5 * log1p(2 * -------)
- *                  2             1 - x                      1 - x
- *
- *      For x<0.5
- *      atanh(x) = 0.5*log1p(2x+2x*x/(1-x))
- *
- * Special cases:
- *      atanh(x) is NaN if |x| >= 1 with signal;
- *      atanh(NaN) is that NaN with no signal;
- *
- */
-
-double
-_Py_atanh(double x)
-{
-    double absx;
-    double t;
-
-    if (Py_IS_NAN(x)) {
-        return x+x;
-    }
-    absx = fabs(x);
-    if (absx >= 1.) {                   /* |x| >= 1 */
-        errno = EDOM;
-#ifdef Py_NAN
-        return Py_NAN;
-#else
-        return x/zero;
-#endif
-    }
-    if (absx < two_pow_m28) {           /* |x| < 2**-28 */
-        return x;
-    }
-    if (absx < 0.5) {                   /* |x| < 0.5 */
-        t = absx+absx;
-        t = 0.5 * m_log1p(t + t*absx / (1.0 - absx));
-    }
-    else {                              /* 0.5 <= |x| <= 1.0 */
-        t = 0.5 * m_log1p((absx + absx) / (1.0 - absx));
-    }
-    return copysign(t, x);
-}
-
-/* Mathematically, expm1(x) = exp(x) - 1.  The expm1 function is designed
-   to avoid the significant loss of precision that arises from direct
-   evaluation of the expression exp(x) - 1, for x near 0. */
-
-double
-_Py_expm1(double x)
-{
-    /* For abs(x) >= log(2), it's safe to evaluate exp(x) - 1 directly; this
-       also works fine for infinities and nans.
-
-       For smaller x, we can use a method due to Kahan that achieves close to
-       full accuracy.
-    */
-
-    if (fabs(x) < 0.7) {
-        double u;
-        u = exp(x);
-        if (u == 1.0)
-            return x;
-        else
-            return (u - 1.0) * x / log(u);
-    }
-    else
-        return exp(x) - 1.0;
-}
-
-/* log1p(x) = log(1+x).  The log1p function is designed to avoid the
-   significant loss of precision that arises from direct evaluation when x is
-   small. */
-
-double
-_Py_log1p(double x)
-{
-    /* For x small, we use the following approach.  Let y be the nearest float
-       to 1+x, then
-
-         1+x = y * (1 - (y-1-x)/y)
-
-       so log(1+x) = log(y) + log(1-(y-1-x)/y).  Since (y-1-x)/y is tiny, the
-       second term is well approximated by (y-1-x)/y.  If abs(x) >=
-       DBL_EPSILON/2 or the rounding-mode is some form of round-to-nearest
-       then y-1-x will be exactly representable, and is computed exactly by
-       (y-1)-x.
-
-       If abs(x) < DBL_EPSILON/2 and the rounding mode is not known to be
-       round-to-nearest then this method is slightly dangerous: 1+x could be
-       rounded up to 1+DBL_EPSILON instead of down to 1, and in that case
-       y-1-x will not be exactly representable any more and the result can be
-       off by many ulps.  But this is easily fixed: for a floating-point
-       number |x| < DBL_EPSILON/2., the closest floating-point number to
-       log(1+x) is exactly x.
-    */
-
-    double y;
-    if (fabs(x) < DBL_EPSILON/2.) {
-        return x;
-    }
-    else if (-0.5 <= x && x <= 1.) {
-        /* WARNING: it's possible than an overeager compiler
-           will incorrectly optimize the following two lines
-           to the equivalent of "return log(1.+x)". If this
-           happens, then results from log1p will be inaccurate
-           for small x. */
-        y = 1.+x;
-        return log(y)-((y-1.)-x)/y;
-    }
-    else {
-        /* NaNs and infinities should end up here */
-        return log(1.+x);
-    }
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_math.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/_math.h
deleted file mode 100644
index aa16e6a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_math.h
+++ /dev/null
@@ -1,45 +0,0 @@
-double _Py_acosh(double x);
-double _Py_asinh(double x);
-double _Py_atanh(double x);
-double _Py_expm1(double x);
-double _Py_log1p(double x);
-
-#ifdef HAVE_ACOSH
-#define m_acosh acosh
-#else
-/* if the system doesn't have acosh, use the substitute
-   function defined in Modules/_math.c. */
-#define m_acosh _Py_acosh
-#endif
-
-#ifdef HAVE_ASINH
-#define m_asinh asinh
-#else
-/* if the system doesn't have asinh, use the substitute
-   function defined in Modules/_math.c. */
-#define m_asinh _Py_asinh
-#endif
-
-#ifdef HAVE_ATANH
-#define m_atanh atanh
-#else
-/* if the system doesn't have atanh, use the substitute
-   function defined in Modules/_math.c. */
-#define m_atanh _Py_atanh
-#endif
-
-#ifdef HAVE_EXPM1
-#define m_expm1 expm1
-#else
-/* if the system doesn't have expm1, use the substitute
-   function defined in Modules/_math.c. */
-#define m_expm1 _Py_expm1
-#endif
-
-#ifdef HAVE_LOG1P
-#define m_log1p log1p
-#else
-/* if the system doesn't have log1p, use the substitute
-   function defined in Modules/_math.c. */
-#define m_log1p _Py_log1p
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_randommodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_randommodule.c
deleted file mode 100644
index 91f9c3a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_randommodule.c
+++ /dev/null
@@ -1,580 +0,0 @@
-/* Random objects */
-
-/* ------------------------------------------------------------------
-   The code in this module was based on a download from:
-      http://www.math.keio.ac.jp/~matumoto/MT2002/emt19937ar.html
-
-   It was modified in 2002 by Raymond Hettinger as follows:
-
-    * the principal computational lines untouched.
-
-    * renamed genrand_res53() to random_random() and wrapped
-      in python calling/return code.
-
-    * genrand_int32() and the helper functions, init_genrand()
-      and init_by_array(), were declared static, wrapped in
-      Python calling/return code.  also, their global data
-      references were replaced with structure references.
-
-    * unused functions from the original were deleted.
-      new, original C python code was added to implement the
-      Random() interface.
-
-   The following are the verbatim comments from the original code:
-
-   A C-program for MT19937, with initialization improved 2002/1/26.
-   Coded by Takuji Nishimura and Makoto Matsumoto.
-
-   Before using, initialize the state by using init_genrand(seed)
-   or init_by_array(init_key, key_length).
-
-   Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions
-   are met:
-
-     1. Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-     2. Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-     3. The names of its contributors may not be used to endorse or promote
-    products derived from this software without specific prior written
-    permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-   Any feedback is very welcome.
-   http://www.math.keio.ac.jp/matumoto/emt.html
-   email: matumoto@math.keio.ac.jp
-*/
-
-/* ---------------------------------------------------------------*/
-
-#include "Python.h"
-#include <time.h>               /* for seeding to current time */
-
-/* Period parameters -- These are all magic.  Don't change. */
-#define N 624
-#define M 397
-#define MATRIX_A 0x9908b0dfUL   /* constant vector a */
-#define UPPER_MASK 0x80000000UL /* most significant w-r bits */
-#define LOWER_MASK 0x7fffffffUL /* least significant r bits */
-
-typedef struct {
-    PyObject_HEAD
-    unsigned long state[N];
-    int index;
-} RandomObject;
-
-static PyTypeObject Random_Type;
-
-#define RandomObject_Check(v)      (Py_TYPE(v) == &Random_Type)
-
-
-/* Random methods */
-
-
-/* generates a random number on [0,0xffffffff]-interval */
-static unsigned long
-genrand_int32(RandomObject *self)
-{
-    unsigned long y;
-    static unsigned long mag01[2]={0x0UL, MATRIX_A};
-    /* mag01[x] = x * MATRIX_A  for x=0,1 */
-    unsigned long *mt;
-
-    mt = self->state;
-    if (self->index >= N) { /* generate N words at one time */
-        int kk;
-
-        for (kk=0;kk<N-M;kk++) {
-            y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
-            mt[kk] = mt[kk+M] ^ (y >> 1) ^ mag01[y & 0x1UL];
-        }
-        for (;kk<N-1;kk++) {
-            y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
-            mt[kk] = mt[kk+(M-N)] ^ (y >> 1) ^ mag01[y & 0x1UL];
-        }
-        y = (mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK);
-        mt[N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1UL];
-
-        self->index = 0;
-    }
-
-    y = mt[self->index++];
-    y ^= (y >> 11);
-    y ^= (y << 7) & 0x9d2c5680UL;
-    y ^= (y << 15) & 0xefc60000UL;
-    y ^= (y >> 18);
-    return y;
-}
-
-/* random_random is the function named genrand_res53 in the original code;
- * generates a random number on [0,1) with 53-bit resolution; note that
- * 9007199254740992 == 2**53; I assume they're spelling "/2**53" as
- * multiply-by-reciprocal in the (likely vain) hope that the compiler will
- * optimize the division away at compile-time.  67108864 is 2**26.  In
- * effect, a contains 27 random bits shifted left 26, and b fills in the
- * lower 26 bits of the 53-bit numerator.
- * The orginal code credited Isaku Wada for this algorithm, 2002/01/09.
- */
-static PyObject *
-random_random(RandomObject *self)
-{
-    unsigned long a=genrand_int32(self)>>5, b=genrand_int32(self)>>6;
-    return PyFloat_FromDouble((a*67108864.0+b)*(1.0/9007199254740992.0));
-}
-
-/* initializes mt[N] with a seed */
-static void
-init_genrand(RandomObject *self, unsigned long s)
-{
-    int mti;
-    unsigned long *mt;
-
-    mt = self->state;
-    mt[0]= s & 0xffffffffUL;
-    for (mti=1; mti<N; mti++) {
-        mt[mti] =
-        (1812433253UL * (mt[mti-1] ^ (mt[mti-1] >> 30)) + mti);
-        /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */
-        /* In the previous versions, MSBs of the seed affect   */
-        /* only MSBs of the array mt[].                                */
-        /* 2002/01/09 modified by Makoto Matsumoto                     */
-        mt[mti] &= 0xffffffffUL;
-        /* for >32 bit machines */
-    }
-    self->index = mti;
-    return;
-}
-
-/* initialize by an array with array-length */
-/* init_key is the array for initializing keys */
-/* key_length is its length */
-static PyObject *
-init_by_array(RandomObject *self, unsigned long init_key[], unsigned long key_length)
-{
-    unsigned int i, j, k;       /* was signed in the original code. RDH 12/16/2002 */
-    unsigned long *mt;
-
-    mt = self->state;
-    init_genrand(self, 19650218UL);
-    i=1; j=0;
-    k = (N>key_length ? N : key_length);
-    for (; k; k--) {
-        mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525UL))
-                 + init_key[j] + j; /* non linear */
-        mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */
-        i++; j++;
-        if (i>=N) { mt[0] = mt[N-1]; i=1; }
-        if (j>=key_length) j=0;
-    }
-    for (k=N-1; k; k--) {
-        mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941UL))
-                 - i; /* non linear */
-        mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */
-        i++;
-        if (i>=N) { mt[0] = mt[N-1]; i=1; }
-    }
-
-    mt[0] = 0x80000000UL; /* MSB is 1; assuring non-zero initial array */
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/*
- * The rest is Python-specific code, neither part of, nor derived from, the
- * Twister download.
- */
-
-static PyObject *
-random_seed(RandomObject *self, PyObject *args)
-{
-    PyObject *result = NULL;            /* guilty until proved innocent */
-    PyObject *masklower = NULL;
-    PyObject *thirtytwo = NULL;
-    PyObject *n = NULL;
-    unsigned long *key = NULL;
-    unsigned long keymax;               /* # of allocated slots in key */
-    unsigned long keyused;              /* # of used slots in key */
-    int err;
-
-    PyObject *arg = NULL;
-
-    if (!PyArg_UnpackTuple(args, "seed", 0, 1, &arg))
-        return NULL;
-
-    if (arg == NULL || arg == Py_None) {
-        time_t now;
-
-        time(&now);
-        init_genrand(self, (unsigned long)now);
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    /* If the arg is an int or long, use its absolute value; else use
-     * the absolute value of its hash code.
-     */
-    if (PyInt_Check(arg) || PyLong_Check(arg))
-        n = PyNumber_Absolute(arg);
-    else {
-        long hash = PyObject_Hash(arg);
-        if (hash == -1)
-            goto Done;
-        n = PyLong_FromUnsignedLong((unsigned long)hash);
-    }
-    if (n == NULL)
-        goto Done;
-
-    /* Now split n into 32-bit chunks, from the right.  Each piece is
-     * stored into key, which has a capacity of keymax chunks, of which
-     * keyused are filled.  Alas, the repeated shifting makes this a
-     * quadratic-time algorithm; we'd really like to use
-     * _PyLong_AsByteArray here, but then we'd have to break into the
-     * long representation to figure out how big an array was needed
-     * in advance.
-     */
-    keymax = 8;         /* arbitrary; grows later if needed */
-    keyused = 0;
-    key = (unsigned long *)PyMem_Malloc(keymax * sizeof(*key));
-    if (key == NULL)
-        goto Done;
-
-    masklower = PyLong_FromUnsignedLong(0xffffffffU);
-    if (masklower == NULL)
-        goto Done;
-    thirtytwo = PyInt_FromLong(32L);
-    if (thirtytwo == NULL)
-        goto Done;
-    while ((err=PyObject_IsTrue(n))) {
-        PyObject *newn;
-        PyObject *pychunk;
-        unsigned long chunk;
-
-        if (err == -1)
-            goto Done;
-        pychunk = PyNumber_And(n, masklower);
-        if (pychunk == NULL)
-            goto Done;
-        chunk = PyLong_AsUnsignedLong(pychunk);
-        Py_DECREF(pychunk);
-        if (chunk == (unsigned long)-1 && PyErr_Occurred())
-            goto Done;
-        newn = PyNumber_Rshift(n, thirtytwo);
-        if (newn == NULL)
-            goto Done;
-        Py_DECREF(n);
-        n = newn;
-        if (keyused >= keymax) {
-            unsigned long bigger = keymax << 1;
-            if ((bigger >> 1) != keymax) {
-                PyErr_NoMemory();
-                goto Done;
-            }
-            key = (unsigned long *)PyMem_Realloc(key,
-                                    bigger * sizeof(*key));
-            if (key == NULL)
-                goto Done;
-            keymax = bigger;
-        }
-        assert(keyused < keymax);
-        key[keyused++] = chunk;
-    }
-
-    if (keyused == 0)
-        key[keyused++] = 0UL;
-    result = init_by_array(self, key, keyused);
-Done:
-    Py_XDECREF(masklower);
-    Py_XDECREF(thirtytwo);
-    Py_XDECREF(n);
-    PyMem_Free(key);
-    return result;
-}
-
-static PyObject *
-random_getstate(RandomObject *self)
-{
-    PyObject *state;
-    PyObject *element;
-    int i;
-
-    state = PyTuple_New(N+1);
-    if (state == NULL)
-        return NULL;
-    for (i=0; i<N ; i++) {
-        element = PyLong_FromUnsignedLong(self->state[i]);
-        if (element == NULL)
-            goto Fail;
-        PyTuple_SET_ITEM(state, i, element);
-    }
-    element = PyLong_FromLong((long)(self->index));
-    if (element == NULL)
-        goto Fail;
-    PyTuple_SET_ITEM(state, i, element);
-    return state;
-
-Fail:
-    Py_DECREF(state);
-    return NULL;
-}
-
-static PyObject *
-random_setstate(RandomObject *self, PyObject *state)
-{
-    int i;
-    unsigned long element;
-    long index;
-
-    if (!PyTuple_Check(state)) {
-        PyErr_SetString(PyExc_TypeError,
-            "state vector must be a tuple");
-        return NULL;
-    }
-    if (PyTuple_Size(state) != N+1) {
-        PyErr_SetString(PyExc_ValueError,
-            "state vector is the wrong size");
-        return NULL;
-    }
-
-    for (i=0; i<N ; i++) {
-        element = PyLong_AsUnsignedLong(PyTuple_GET_ITEM(state, i));
-        if (element == (unsigned long)-1 && PyErr_Occurred())
-            return NULL;
-        self->state[i] = element & 0xffffffffUL; /* Make sure we get sane state */
-    }
-
-    index = PyLong_AsLong(PyTuple_GET_ITEM(state, i));
-    if (index == -1 && PyErr_Occurred())
-        return NULL;
-    self->index = (int)index;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/*
-Jumpahead should be a fast way advance the generator n-steps ahead, but
-lacking a formula for that, the next best is to use n and the existing
-state to create a new state far away from the original.
-
-The generator uses constant spaced additive feedback, so shuffling the
-state elements ought to produce a state which would not be encountered
-(in the near term) by calls to random().  Shuffling is normally
-implemented by swapping the ith element with another element ranging
-from 0 to i inclusive.  That allows the element to have the possibility
-of not being moved.  Since the goal is to produce a new, different
-state, the swap element is ranged from 0 to i-1 inclusive.  This assures
-that each element gets moved at least once.
-
-To make sure that consecutive calls to jumpahead(n) produce different
-states (even in the rare case of involutory shuffles), i+1 is added to
-each element at position i.  Successive calls are then guaranteed to
-have changing (growing) values as well as shuffled positions.
-
-Finally, the self->index value is set to N so that the generator itself
-kicks in on the next call to random().  This assures that all results
-have been through the generator and do not just reflect alterations to
-the underlying state.
-*/
-
-static PyObject *
-random_jumpahead(RandomObject *self, PyObject *n)
-{
-    long i, j;
-    PyObject *iobj;
-    PyObject *remobj;
-    unsigned long *mt, tmp;
-
-    if (!PyInt_Check(n) && !PyLong_Check(n)) {
-        PyErr_Format(PyExc_TypeError, "jumpahead requires an "
-                     "integer, not '%s'",
-                     Py_TYPE(n)->tp_name);
-        return NULL;
-    }
-
-    mt = self->state;
-    for (i = N-1; i > 1; i--) {
-        iobj = PyInt_FromLong(i);
-        if (iobj == NULL)
-            return NULL;
-        remobj = PyNumber_Remainder(n, iobj);
-        Py_DECREF(iobj);
-        if (remobj == NULL)
-            return NULL;
-        j = PyInt_AsLong(remobj);
-        Py_DECREF(remobj);
-        if (j == -1L && PyErr_Occurred())
-            return NULL;
-        tmp = mt[i];
-        mt[i] = mt[j];
-        mt[j] = tmp;
-    }
-
-    for (i = 0; i < N; i++)
-        mt[i] += i+1;
-
-    self->index = N;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-random_getrandbits(RandomObject *self, PyObject *args)
-{
-    int k, i, bytes;
-    unsigned long r;
-    unsigned char *bytearray;
-    PyObject *result;
-
-    if (!PyArg_ParseTuple(args, "i:getrandbits", &k))
-        return NULL;
-
-    if (k <= 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "number of bits must be greater than zero");
-        return NULL;
-    }
-
-    bytes = ((k - 1) / 32 + 1) * 4;
-    bytearray = (unsigned char *)PyMem_Malloc(bytes);
-    if (bytearray == NULL) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-
-    /* Fill-out whole words, byte-by-byte to avoid endianness issues */
-    for (i=0 ; i<bytes ; i+=4, k-=32) {
-        r = genrand_int32(self);
-        if (k < 32)
-            r >>= (32 - k);
-        bytearray[i+0] = (unsigned char)r;
-        bytearray[i+1] = (unsigned char)(r >> 8);
-        bytearray[i+2] = (unsigned char)(r >> 16);
-        bytearray[i+3] = (unsigned char)(r >> 24);
-    }
-
-    /* little endian order to match bytearray assignment order */
-    result = _PyLong_FromByteArray(bytearray, bytes, 1, 0);
-    PyMem_Free(bytearray);
-    return result;
-}
-
-static PyObject *
-random_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    RandomObject *self;
-    PyObject *tmp;
-
-    if (type == &Random_Type && !_PyArg_NoKeywords("Random()", kwds))
-        return NULL;
-
-    self = (RandomObject *)type->tp_alloc(type, 0);
-    if (self == NULL)
-        return NULL;
-    tmp = random_seed(self, args);
-    if (tmp == NULL) {
-        Py_DECREF(self);
-        return NULL;
-    }
-    Py_DECREF(tmp);
-    return (PyObject *)self;
-}
-
-static PyMethodDef random_methods[] = {
-    {"random",          (PyCFunction)random_random,  METH_NOARGS,
-        PyDoc_STR("random() -> x in the interval [0, 1).")},
-    {"seed",            (PyCFunction)random_seed,  METH_VARARGS,
-        PyDoc_STR("seed([n]) -> None.  Defaults to current time.")},
-    {"getstate",        (PyCFunction)random_getstate,  METH_NOARGS,
-        PyDoc_STR("getstate() -> tuple containing the current state.")},
-    {"setstate",          (PyCFunction)random_setstate,  METH_O,
-        PyDoc_STR("setstate(state) -> None.  Restores generator state.")},
-    {"jumpahead",       (PyCFunction)random_jumpahead,  METH_O,
-        PyDoc_STR("jumpahead(int) -> None.  Create new state from "
-                  "existing state and integer.")},
-    {"getrandbits",     (PyCFunction)random_getrandbits,  METH_VARARGS,
-        PyDoc_STR("getrandbits(k) -> x.  Generates a long int with "
-                  "k random bits.")},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyDoc_STRVAR(random_doc,
-"Random() -> create a random number generator with its own internal state.");
-
-static PyTypeObject Random_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_random.Random",                   /*tp_name*/
-    sizeof(RandomObject),               /*tp_basicsize*/
-    0,                                  /*tp_itemsize*/
-    /* methods */
-    0,                                  /*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*/
-    PyObject_GenericGetAttr,            /*tp_getattro*/
-    0,                                  /*tp_setattro*/
-    0,                                  /*tp_as_buffer*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,           /*tp_flags*/
-    random_doc,                         /*tp_doc*/
-    0,                                  /*tp_traverse*/
-    0,                                  /*tp_clear*/
-    0,                                  /*tp_richcompare*/
-    0,                                  /*tp_weaklistoffset*/
-    0,                                  /*tp_iter*/
-    0,                                  /*tp_iternext*/
-    random_methods,                     /*tp_methods*/
-    0,                                  /*tp_members*/
-    0,                                  /*tp_getset*/
-    0,                                  /*tp_base*/
-    0,                                  /*tp_dict*/
-    0,                                  /*tp_descr_get*/
-    0,                                  /*tp_descr_set*/
-    0,                                  /*tp_dictoffset*/
-    0,                                  /*tp_init*/
-    0,                                  /*tp_alloc*/
-    random_new,                         /*tp_new*/
-    _PyObject_Del,                      /*tp_free*/
-    0,                                  /*tp_is_gc*/
-};
-
-PyDoc_STRVAR(module_doc,
-"Module implements the Mersenne Twister random number generator.");
-
-PyMODINIT_FUNC
-init_random(void)
-{
-    PyObject *m;
-
-    if (PyType_Ready(&Random_Type) < 0)
-        return;
-    m = Py_InitModule3("_random", NULL, module_doc);
-    if (m == NULL)
-        return;
-    Py_INCREF(&Random_Type);
-    PyModule_AddObject(m, "Random", (PyObject *)&Random_Type);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cache.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cache.c
deleted file mode 100644
index c5ff8ab..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cache.c
+++ /dev/null
@@ -1,375 +0,0 @@
-/* cache .c - a LRU cache
- *
- * Copyright (C) 2004-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#include "sqlitecompat.h"
-#include "cache.h"
-#include <limits.h>
-
-/* only used internally */
-pysqlite_Node* pysqlite_new_node(PyObject* key, PyObject* data)
-{
-    pysqlite_Node* node;
-
-    node = (pysqlite_Node*) (pysqlite_NodeType.tp_alloc(&pysqlite_NodeType, 0));
-    if (!node) {
-        return NULL;
-    }
-
-    Py_INCREF(key);
-    node->key = key;
-
-    Py_INCREF(data);
-    node->data = data;
-
-    node->prev = NULL;
-    node->next = NULL;
-
-    return node;
-}
-
-void pysqlite_node_dealloc(pysqlite_Node* self)
-{
-    Py_DECREF(self->key);
-    Py_DECREF(self->data);
-
-    Py_TYPE(self)->tp_free((PyObject*)self);
-}
-
-int pysqlite_cache_init(pysqlite_Cache* self, PyObject* args, PyObject* kwargs)
-{
-    PyObject* factory;
-    int size = 10;
-
-    self->factory = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|i", &factory, &size)) {
-        return -1;
-    }
-
-    /* minimum cache size is 5 entries */
-    if (size < 5) {
-        size = 5;
-    }
-    self->size = size;
-    self->first = NULL;
-    self->last = NULL;
-
-    self->mapping = PyDict_New();
-    if (!self->mapping) {
-        return -1;
-    }
-
-    Py_INCREF(factory);
-    self->factory = factory;
-
-    self->decref_factory = 1;
-
-    return 0;
-}
-
-void pysqlite_cache_dealloc(pysqlite_Cache* self)
-{
-    pysqlite_Node* node;
-    pysqlite_Node* delete_node;
-
-    if (!self->factory) {
-        /* constructor failed, just get out of here */
-        return;
-    }
-
-    /* iterate over all nodes and deallocate them */
-    node = self->first;
-    while (node) {
-        delete_node = node;
-        node = node->next;
-        Py_DECREF(delete_node);
-    }
-
-    if (self->decref_factory) {
-        Py_DECREF(self->factory);
-    }
-    Py_DECREF(self->mapping);
-
-    Py_TYPE(self)->tp_free((PyObject*)self);
-}
-
-PyObject* pysqlite_cache_get(pysqlite_Cache* self, PyObject* args)
-{
-    PyObject* key = args;
-    pysqlite_Node* node;
-    pysqlite_Node* ptr;
-    PyObject* data;
-
-    node = (pysqlite_Node*)PyDict_GetItem(self->mapping, key);
-    if (node) {
-        /* an entry for this key already exists in the cache */
-
-        /* increase usage counter of the node found */
-        if (node->count < LONG_MAX) {
-            node->count++;
-        }
-
-        /* if necessary, reorder entries in the cache by swapping positions */
-        if (node->prev && node->count > node->prev->count) {
-            ptr = node->prev;
-
-            while (ptr->prev && node->count > ptr->prev->count) {
-                ptr = ptr->prev;
-            }
-
-            if (node->next) {
-                node->next->prev = node->prev;
-            } else {
-                self->last = node->prev;
-            }
-            if (node->prev) {
-                node->prev->next = node->next;
-            }
-            if (ptr->prev) {
-                ptr->prev->next = node;
-            } else {
-                self->first = node;
-            }
-
-            node->next = ptr;
-            node->prev = ptr->prev;
-            if (!node->prev) {
-                self->first = node;
-            }
-            ptr->prev = node;
-        }
-    } else {
-        /* There is no entry for this key in the cache, yet. We'll insert a new
-         * entry in the cache, and make space if necessary by throwing the
-         * least used item out of the cache. */
-
-        if (PyDict_Size(self->mapping) == self->size) {
-            if (self->last) {
-                node = self->last;
-
-                if (PyDict_DelItem(self->mapping, self->last->key) != 0) {
-                    return NULL;
-                }
-
-                if (node->prev) {
-                    node->prev->next = NULL;
-                }
-                self->last = node->prev;
-                node->prev = NULL;
-
-                Py_DECREF(node);
-            }
-        }
-
-        data = PyObject_CallFunction(self->factory, "O", key);
-
-        if (!data) {
-            return NULL;
-        }
-
-        node = pysqlite_new_node(key, data);
-        if (!node) {
-            return NULL;
-        }
-        node->prev = self->last;
-
-        Py_DECREF(data);
-
-        if (PyDict_SetItem(self->mapping, key, (PyObject*)node) != 0) {
-            Py_DECREF(node);
-            return NULL;
-        }
-
-        if (self->last) {
-            self->last->next = node;
-        } else {
-            self->first = node;
-        }
-        self->last = node;
-    }
-
-    Py_INCREF(node->data);
-    return node->data;
-}
-
-PyObject* pysqlite_cache_display(pysqlite_Cache* self, PyObject* args)
-{
-    pysqlite_Node* ptr;
-    PyObject* prevkey;
-    PyObject* nextkey;
-    PyObject* fmt_args;
-    PyObject* template;
-    PyObject* display_str;
-
-    ptr = self->first;
-
-    while (ptr) {
-        if (ptr->prev) {
-            prevkey = ptr->prev->key;
-        } else {
-            prevkey = Py_None;
-        }
-        Py_INCREF(prevkey);
-
-        if (ptr->next) {
-            nextkey = ptr->next->key;
-        } else {
-            nextkey = Py_None;
-        }
-        Py_INCREF(nextkey);
-
-        fmt_args = Py_BuildValue("OOO", prevkey, ptr->key, nextkey);
-        if (!fmt_args) {
-            return NULL;
-        }
-        template = PyString_FromString("%s <- %s ->%s\n");
-        if (!template) {
-            Py_DECREF(fmt_args);
-            return NULL;
-        }
-        display_str = PyString_Format(template, fmt_args);
-        Py_DECREF(template);
-        Py_DECREF(fmt_args);
-        if (!display_str) {
-            return NULL;
-        }
-        PyObject_Print(display_str, stdout, Py_PRINT_RAW);
-        Py_DECREF(display_str);
-
-        Py_DECREF(prevkey);
-        Py_DECREF(nextkey);
-
-        ptr = ptr->next;
-    }
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyMethodDef cache_methods[] = {
-    {"get", (PyCFunction)pysqlite_cache_get, METH_O,
-        PyDoc_STR("Gets an entry from the cache or calls the factory function to produce one.")},
-    {"display", (PyCFunction)pysqlite_cache_display, METH_NOARGS,
-        PyDoc_STR("For debugging only.")},
-    {NULL, NULL}
-};
-
-PyTypeObject pysqlite_NodeType = {
-        PyVarObject_HEAD_INIT(NULL, 0)
-        MODULE_NAME "Node",                             /* tp_name */
-        sizeof(pysqlite_Node),                          /* tp_basicsize */
-        0,                                              /* tp_itemsize */
-        (destructor)pysqlite_node_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 */
-        Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE,         /* tp_flags */
-        0,                                              /* tp_doc */
-        0,                                              /* tp_traverse */
-        0,                                              /* tp_clear */
-        0,                                              /* tp_richcompare */
-        0,                                              /* tp_weaklistoffset */
-        0,                                              /* tp_iter */
-        0,                                              /* tp_iternext */
-        0,                                              /* tp_methods */
-        0,                                              /* tp_members */
-        0,                                              /* tp_getset */
-        0,                                              /* tp_base */
-        0,                                              /* tp_dict */
-        0,                                              /* tp_descr_get */
-        0,                                              /* tp_descr_set */
-        0,                                              /* tp_dictoffset */
-        (initproc)0,                                    /* tp_init */
-        0,                                              /* tp_alloc */
-        0,                                              /* tp_new */
-        0                                               /* tp_free */
-};
-
-PyTypeObject pysqlite_CacheType = {
-        PyVarObject_HEAD_INIT(NULL, 0)
-        MODULE_NAME ".Cache",                           /* tp_name */
-        sizeof(pysqlite_Cache),                         /* tp_basicsize */
-        0,                                              /* tp_itemsize */
-        (destructor)pysqlite_cache_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 */
-        Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE,         /* tp_flags */
-        0,                                              /* tp_doc */
-        0,                                              /* tp_traverse */
-        0,                                              /* tp_clear */
-        0,                                              /* tp_richcompare */
-        0,                                              /* tp_weaklistoffset */
-        0,                                              /* tp_iter */
-        0,                                              /* tp_iternext */
-        cache_methods,                                  /* tp_methods */
-        0,                                              /* tp_members */
-        0,                                              /* tp_getset */
-        0,                                              /* tp_base */
-        0,                                              /* tp_dict */
-        0,                                              /* tp_descr_get */
-        0,                                              /* tp_descr_set */
-        0,                                              /* tp_dictoffset */
-        (initproc)pysqlite_cache_init,                  /* tp_init */
-        0,                                              /* tp_alloc */
-        0,                                              /* tp_new */
-        0                                               /* tp_free */
-};
-
-extern int pysqlite_cache_setup_types(void)
-{
-    int rc;
-
-    pysqlite_NodeType.tp_new = PyType_GenericNew;
-    pysqlite_CacheType.tp_new = PyType_GenericNew;
-
-    rc = PyType_Ready(&pysqlite_NodeType);
-    if (rc < 0) {
-        return rc;
-    }
-
-    rc = PyType_Ready(&pysqlite_CacheType);
-    return rc;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cache.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cache.h
deleted file mode 100644
index 880727d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cache.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* cache.h - definitions for the LRU cache
- *
- * Copyright (C) 2004-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#ifndef PYSQLITE_CACHE_H
-#define PYSQLITE_CACHE_H
-#include "Python.h"
-
-/* The LRU cache is implemented as a combination of a doubly-linked with a
- * dictionary. The list items are of type 'Node' and the dictionary has the
- * nodes as values. */
-
-typedef struct _pysqlite_Node
-{
-    PyObject_HEAD
-    PyObject* key;
-    PyObject* data;
-    long count;
-    struct _pysqlite_Node* prev;
-    struct _pysqlite_Node* next;
-} pysqlite_Node;
-
-typedef struct
-{
-    PyObject_HEAD
-    int size;
-
-    /* a dictionary mapping keys to Node entries */
-    PyObject* mapping;
-
-    /* the factory callable */
-    PyObject* factory;
-
-    pysqlite_Node* first;
-    pysqlite_Node* last;
-
-    /* if set, decrement the factory function when the Cache is deallocated.
-     * this is almost always desirable, but not in the pysqlite context */
-    int decref_factory;
-} pysqlite_Cache;
-
-extern PyTypeObject pysqlite_NodeType;
-extern PyTypeObject pysqlite_CacheType;
-
-int pysqlite_node_init(pysqlite_Node* self, PyObject* args, PyObject* kwargs);
-void pysqlite_node_dealloc(pysqlite_Node* self);
-
-int pysqlite_cache_init(pysqlite_Cache* self, PyObject* args, PyObject* kwargs);
-void pysqlite_cache_dealloc(pysqlite_Cache* self);
-PyObject* pysqlite_cache_get(pysqlite_Cache* self, PyObject* args);
-
-int pysqlite_cache_setup_types(void);
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/connection.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/connection.c
deleted file mode 100644
index b020b97..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/connection.c
+++ /dev/null
@@ -1,1664 +0,0 @@
-/* connection.c - the connection type
- *
- * Copyright (C) 2004-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- * 
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#include "cache.h"
-#include "module.h"
-#include "connection.h"
-#include "statement.h"
-#include "cursor.h"
-#include "prepare_protocol.h"
-#include "util.h"
-#include "sqlitecompat.h"
-
-#include "pythread.h"
-
-#define ACTION_FINALIZE 1
-#define ACTION_RESET 2
-
-#if SQLITE_VERSION_NUMBER >= 3003008
-#ifndef SQLITE_OMIT_LOAD_EXTENSION
-#define HAVE_LOAD_EXTENSION
-#endif
-#endif
-
-static int pysqlite_connection_set_isolation_level(pysqlite_Connection* self, PyObject* isolation_level);
-static void _pysqlite_drop_unused_cursor_references(pysqlite_Connection* self);
-
-
-static void _sqlite3_result_error(sqlite3_context* ctx, const char* errmsg, int len)
-{
-    /* in older SQLite versions, calling sqlite3_result_error in callbacks
-     * triggers a bug in SQLite that leads either to irritating results or
-     * segfaults, depending on the SQLite version */
-#if SQLITE_VERSION_NUMBER >= 3003003
-    sqlite3_result_error(ctx, errmsg, len);
-#else
-    PyErr_SetString(pysqlite_OperationalError, errmsg);
-#endif
-}
-
-int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject* kwargs)
-{
-    static char *kwlist[] = {"database", "timeout", "detect_types", "isolation_level", "check_same_thread", "factory", "cached_statements", NULL, NULL};
-
-    PyObject* database;
-    int detect_types = 0;
-    PyObject* isolation_level = NULL;
-    PyObject* factory = NULL;
-    int check_same_thread = 1;
-    int cached_statements = 100;
-    double timeout = 5.0;
-    int rc;
-    PyObject* class_attr = NULL;
-    PyObject* class_attr_str = NULL;
-    int is_apsw_connection = 0;
-    PyObject* database_utf8;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|diOiOi", kwlist,
-                                     &database, &timeout, &detect_types, &isolation_level, &check_same_thread, &factory, &cached_statements))
-    {
-        return -1;
-    }
-
-    self->initialized = 1;
-
-    self->begin_statement = NULL;
-
-    self->statement_cache = NULL;
-    self->statements = NULL;
-    self->cursors = NULL;
-
-    Py_INCREF(Py_None);
-    self->row_factory = Py_None;
-
-    Py_INCREF(&PyUnicode_Type);
-    self->text_factory = (PyObject*)&PyUnicode_Type;
-
-    if (PyString_Check(database) || PyUnicode_Check(database)) {
-        if (PyString_Check(database)) {
-            database_utf8 = database;
-            Py_INCREF(database_utf8);
-        } else {
-            database_utf8 = PyUnicode_AsUTF8String(database);
-            if (!database_utf8) {
-                return -1;
-            }
-        }
-
-        Py_BEGIN_ALLOW_THREADS
-        rc = sqlite3_open(PyString_AsString(database_utf8), &self->db);
-        Py_END_ALLOW_THREADS
-
-        Py_DECREF(database_utf8);
-
-        if (rc != SQLITE_OK) {
-            _pysqlite_seterror(self->db, NULL);
-            return -1;
-        }
-    } else {
-        /* Create a pysqlite connection from a APSW connection */
-        class_attr = PyObject_GetAttrString(database, "__class__");
-        if (class_attr) {
-            class_attr_str = PyObject_Str(class_attr);
-            if (class_attr_str) {
-                if (strcmp(PyString_AsString(class_attr_str), "<type 'apsw.Connection'>") == 0) {
-                    /* In the APSW Connection object, the first entry after
-                     * PyObject_HEAD is the sqlite3* we want to get hold of.
-                     * Luckily, this is the same layout as we have in our
-                     * pysqlite_Connection */
-                    self->db = ((pysqlite_Connection*)database)->db;
-
-                    Py_INCREF(database);
-                    self->apsw_connection = database;
-                    is_apsw_connection = 1;
-                }
-            }
-        }
-        Py_XDECREF(class_attr_str);
-        Py_XDECREF(class_attr);
-
-        if (!is_apsw_connection) {
-            PyErr_SetString(PyExc_ValueError, "database parameter must be string or APSW Connection object");
-            return -1;
-        }
-    }
-
-    if (!isolation_level) {
-        isolation_level = PyString_FromString("");
-        if (!isolation_level) {
-            return -1;
-        }
-    } else {
-        Py_INCREF(isolation_level);
-    }
-    self->isolation_level = NULL;
-    pysqlite_connection_set_isolation_level(self, isolation_level);
-    Py_DECREF(isolation_level);
-
-    self->statement_cache = (pysqlite_Cache*)PyObject_CallFunction((PyObject*)&pysqlite_CacheType, "Oi", self, cached_statements);
-    if (PyErr_Occurred()) {
-        return -1;
-    }
-
-    self->created_statements = 0;
-    self->created_cursors = 0;
-
-    /* Create lists of weak references to statements/cursors */
-    self->statements = PyList_New(0);
-    self->cursors = PyList_New(0);
-    if (!self->statements || !self->cursors) {
-        return -1;
-    }
-
-    /* By default, the Cache class INCREFs the factory in its initializer, and
-     * decrefs it in its deallocator method. Since this would create a circular
-     * reference here, we're breaking it by decrementing self, and telling the
-     * cache class to not decref the factory (self) in its deallocator.
-     */
-    self->statement_cache->decref_factory = 0;
-    Py_DECREF(self);
-
-    self->inTransaction = 0;
-    self->detect_types = detect_types;
-    self->timeout = timeout;
-    (void)sqlite3_busy_timeout(self->db, (int)(timeout*1000));
-#ifdef WITH_THREAD
-    self->thread_ident = PyThread_get_thread_ident();
-#endif
-    self->check_same_thread = check_same_thread;
-
-    self->function_pinboard = PyDict_New();
-    if (!self->function_pinboard) {
-        return -1;
-    }
-
-    self->collations = PyDict_New();
-    if (!self->collations) {
-        return -1;
-    }
-
-    self->Warning               = pysqlite_Warning;
-    self->Error                 = pysqlite_Error;
-    self->InterfaceError        = pysqlite_InterfaceError;
-    self->DatabaseError         = pysqlite_DatabaseError;
-    self->DataError             = pysqlite_DataError;
-    self->OperationalError      = pysqlite_OperationalError;
-    self->IntegrityError        = pysqlite_IntegrityError;
-    self->InternalError         = pysqlite_InternalError;
-    self->ProgrammingError      = pysqlite_ProgrammingError;
-    self->NotSupportedError     = pysqlite_NotSupportedError;
-
-    return 0;
-}
-
-/* Empty the entire statement cache of this connection */
-void pysqlite_flush_statement_cache(pysqlite_Connection* self)
-{
-    pysqlite_Node* node;
-    pysqlite_Statement* statement;
-
-    node = self->statement_cache->first;
-
-    while (node) {
-        statement = (pysqlite_Statement*)(node->data);
-        (void)pysqlite_statement_finalize(statement);
-        node = node->next;
-    }
-
-    Py_DECREF(self->statement_cache);
-    self->statement_cache = (pysqlite_Cache*)PyObject_CallFunction((PyObject*)&pysqlite_CacheType, "O", self);
-    Py_DECREF(self);
-    self->statement_cache->decref_factory = 0;
-}
-
-/* action in (ACTION_RESET, ACTION_FINALIZE) */
-void pysqlite_do_all_statements(pysqlite_Connection* self, int action, int reset_cursors)
-{
-    int i;
-    PyObject* weakref;
-    PyObject* statement;
-    pysqlite_Cursor* cursor;
-
-    for (i = 0; i < PyList_Size(self->statements); i++) {
-        weakref = PyList_GetItem(self->statements, i);
-        statement = PyWeakref_GetObject(weakref);
-        if (statement != Py_None) {
-            if (action == ACTION_RESET) {
-                (void)pysqlite_statement_reset((pysqlite_Statement*)statement);
-            } else {
-                (void)pysqlite_statement_finalize((pysqlite_Statement*)statement);
-            }
-        }
-    }
-
-    if (reset_cursors) {
-        for (i = 0; i < PyList_Size(self->cursors); i++) {
-            weakref = PyList_GetItem(self->cursors, i);
-            cursor = (pysqlite_Cursor*)PyWeakref_GetObject(weakref);
-            if ((PyObject*)cursor != Py_None) {
-                cursor->reset = 1;
-            }
-        }
-    }
-}
-
-void pysqlite_connection_dealloc(pysqlite_Connection* self)
-{
-    PyObject* ret = NULL;
-
-    Py_XDECREF(self->statement_cache);
-
-    /* Clean up if user has not called .close() explicitly. */
-    if (self->db) {
-        Py_BEGIN_ALLOW_THREADS
-        sqlite3_close(self->db);
-        Py_END_ALLOW_THREADS
-    } else if (self->apsw_connection) {
-        ret = PyObject_CallMethod(self->apsw_connection, "close", "");
-        Py_XDECREF(ret);
-        Py_XDECREF(self->apsw_connection);
-    }
-
-    if (self->begin_statement) {
-        PyMem_Free(self->begin_statement);
-    }
-    Py_XDECREF(self->isolation_level);
-    Py_XDECREF(self->function_pinboard);
-    Py_XDECREF(self->row_factory);
-    Py_XDECREF(self->text_factory);
-    Py_XDECREF(self->collations);
-    Py_XDECREF(self->statements);
-    Py_XDECREF(self->cursors);
-
-    self->ob_type->tp_free((PyObject*)self);
-}
-
-/*
- * Registers a cursor with the connection.
- *
- * 0 => error; 1 => ok
- */
-int pysqlite_connection_register_cursor(pysqlite_Connection* connection, PyObject* cursor)
-{
-    PyObject* weakref;
-
-    weakref = PyWeakref_NewRef((PyObject*)cursor, NULL);
-    if (!weakref) {
-        goto error;
-    }
-
-    if (PyList_Append(connection->cursors, weakref) != 0) {
-        Py_CLEAR(weakref);
-        goto error;
-    }
-
-    Py_DECREF(weakref);
-
-    return 1;
-error:
-    return 0;
-}
-
-PyObject* pysqlite_connection_cursor(pysqlite_Connection* self, PyObject* args, PyObject* kwargs)
-{
-    static char *kwlist[] = {"factory", NULL, NULL};
-    PyObject* factory = NULL;
-    PyObject* cursor;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O", kwlist,
-                                     &factory)) {
-        return NULL;
-    }
-
-    if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) {
-        return NULL;
-    }
-
-    if (factory == NULL) {
-        factory = (PyObject*)&pysqlite_CursorType;
-    }
-
-    cursor = PyObject_CallFunction(factory, "O", self);
-
-    _pysqlite_drop_unused_cursor_references(self);
-
-    if (cursor && self->row_factory != Py_None) {
-        Py_XDECREF(((pysqlite_Cursor*)cursor)->row_factory);
-        Py_INCREF(self->row_factory);
-        ((pysqlite_Cursor*)cursor)->row_factory = self->row_factory;
-    }
-
-    return cursor;
-}
-
-PyObject* pysqlite_connection_close(pysqlite_Connection* self, PyObject* args)
-{
-    PyObject* ret;
-    int rc;
-
-    if (!pysqlite_check_thread(self)) {
-        return NULL;
-    }
-
-    pysqlite_do_all_statements(self, ACTION_FINALIZE, 1);
-
-    if (self->db) {
-        if (self->apsw_connection) {
-            ret = PyObject_CallMethod(self->apsw_connection, "close", "");
-            Py_XDECREF(ret);
-            Py_XDECREF(self->apsw_connection);
-            self->apsw_connection = NULL;
-            self->db = NULL;
-        } else {
-            Py_BEGIN_ALLOW_THREADS
-            rc = sqlite3_close(self->db);
-            Py_END_ALLOW_THREADS
-
-            if (rc != SQLITE_OK) {
-                _pysqlite_seterror(self->db, NULL);
-                return NULL;
-            } else {
-                self->db = NULL;
-            }
-        }
-    }
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/*
- * Checks if a connection object is usable (i. e. not closed).
- *
- * 0 => error; 1 => ok
- */
-int pysqlite_check_connection(pysqlite_Connection* con)
-{
-    if (!con->initialized) {
-        PyErr_SetString(pysqlite_ProgrammingError, "Base Connection.__init__ not called.");
-        return 0;
-    }
-
-    if (!con->db) {
-        PyErr_SetString(pysqlite_ProgrammingError, "Cannot operate on a closed database.");
-        return 0;
-    } else {
-        return 1;
-    }
-}
-
-PyObject* _pysqlite_connection_begin(pysqlite_Connection* self)
-{
-    int rc;
-    const char* tail;
-    sqlite3_stmt* statement;
-
-    Py_BEGIN_ALLOW_THREADS
-    rc = sqlite3_prepare(self->db, self->begin_statement, -1, &statement, &tail);
-    Py_END_ALLOW_THREADS
-
-    if (rc != SQLITE_OK) {
-        _pysqlite_seterror(self->db, statement);
-        goto error;
-    }
-
-    rc = pysqlite_step(statement, self);
-    if (rc == SQLITE_DONE) {
-        self->inTransaction = 1;
-    } else {
-        _pysqlite_seterror(self->db, statement);
-    }
-
-    Py_BEGIN_ALLOW_THREADS
-    rc = sqlite3_finalize(statement);
-    Py_END_ALLOW_THREADS
-
-    if (rc != SQLITE_OK && !PyErr_Occurred()) {
-        _pysqlite_seterror(self->db, NULL);
-    }
-
-error:
-    if (PyErr_Occurred()) {
-        return NULL;
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-
-PyObject* pysqlite_connection_commit(pysqlite_Connection* self, PyObject* args)
-{
-    int rc;
-    const char* tail;
-    sqlite3_stmt* statement;
-
-    if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) {
-        return NULL;
-    }
-
-    if (self->inTransaction) {
-        pysqlite_do_all_statements(self, ACTION_RESET, 0);
-
-        Py_BEGIN_ALLOW_THREADS
-        rc = sqlite3_prepare(self->db, "COMMIT", -1, &statement, &tail);
-        Py_END_ALLOW_THREADS
-        if (rc != SQLITE_OK) {
-            _pysqlite_seterror(self->db, NULL);
-            goto error;
-        }
-
-        rc = pysqlite_step(statement, self);
-        if (rc == SQLITE_DONE) {
-            self->inTransaction = 0;
-        } else {
-            _pysqlite_seterror(self->db, statement);
-        }
-
-        Py_BEGIN_ALLOW_THREADS
-        rc = sqlite3_finalize(statement);
-        Py_END_ALLOW_THREADS
-        if (rc != SQLITE_OK && !PyErr_Occurred()) {
-            _pysqlite_seterror(self->db, NULL);
-        }
-
-    }
-
-error:
-    if (PyErr_Occurred()) {
-        return NULL;
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-
-PyObject* pysqlite_connection_rollback(pysqlite_Connection* self, PyObject* args)
-{
-    int rc;
-    const char* tail;
-    sqlite3_stmt* statement;
-
-    if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) {
-        return NULL;
-    }
-
-    if (self->inTransaction) {
-        pysqlite_do_all_statements(self, ACTION_RESET, 1);
-
-        Py_BEGIN_ALLOW_THREADS
-        rc = sqlite3_prepare(self->db, "ROLLBACK", -1, &statement, &tail);
-        Py_END_ALLOW_THREADS
-        if (rc != SQLITE_OK) {
-            _pysqlite_seterror(self->db, NULL);
-            goto error;
-        }
-
-        rc = pysqlite_step(statement, self);
-        if (rc == SQLITE_DONE) {
-            self->inTransaction = 0;
-        } else {
-            _pysqlite_seterror(self->db, statement);
-        }
-
-        Py_BEGIN_ALLOW_THREADS
-        rc = sqlite3_finalize(statement);
-        Py_END_ALLOW_THREADS
-        if (rc != SQLITE_OK && !PyErr_Occurred()) {
-            _pysqlite_seterror(self->db, NULL);
-        }
-
-    }
-
-error:
-    if (PyErr_Occurred()) {
-        return NULL;
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-
-void _pysqlite_set_result(sqlite3_context* context, PyObject* py_val)
-{
-    long longval;
-    const char* buffer;
-    Py_ssize_t buflen;
-    PyObject* stringval;
-
-    if ((!py_val) || PyErr_Occurred()) {
-        sqlite3_result_null(context);
-    } else if (py_val == Py_None) {
-        sqlite3_result_null(context);
-    } else if (PyInt_Check(py_val)) {
-        longval = PyInt_AsLong(py_val);
-        sqlite3_result_int64(context, (PY_LONG_LONG)longval);
-    } else if (PyFloat_Check(py_val)) {
-        sqlite3_result_double(context, PyFloat_AsDouble(py_val));
-    } else if (PyBuffer_Check(py_val)) {
-        if (PyObject_AsCharBuffer(py_val, &buffer, &buflen) != 0) {
-            PyErr_SetString(PyExc_ValueError, "could not convert BLOB to buffer");
-        } else {
-            sqlite3_result_blob(context, buffer, buflen, SQLITE_TRANSIENT);
-        }
-    } else if (PyString_Check(py_val)) {
-        sqlite3_result_text(context, PyString_AsString(py_val), -1, SQLITE_TRANSIENT);
-    } else if (PyUnicode_Check(py_val)) {
-        stringval = PyUnicode_AsUTF8String(py_val);
-        if (stringval) {
-            sqlite3_result_text(context, PyString_AsString(stringval), -1, SQLITE_TRANSIENT);
-            Py_DECREF(stringval);
-        }
-    } else {
-        /* TODO: raise error */
-    }
-}
-
-PyObject* _pysqlite_build_py_params(sqlite3_context *context, int argc, sqlite3_value** argv)
-{
-    PyObject* args;
-    int i;
-    sqlite3_value* cur_value;
-    PyObject* cur_py_value;
-    const char* val_str;
-    PY_LONG_LONG val_int;
-    Py_ssize_t buflen;
-    void* raw_buffer;
-
-    args = PyTuple_New(argc);
-    if (!args) {
-        return NULL;
-    }
-
-    for (i = 0; i < argc; i++) {
-        cur_value = argv[i];
-        switch (sqlite3_value_type(argv[i])) {
-            case SQLITE_INTEGER:
-                val_int = sqlite3_value_int64(cur_value);
-                cur_py_value = PyInt_FromLong((long)val_int);
-                break;
-            case SQLITE_FLOAT:
-                cur_py_value = PyFloat_FromDouble(sqlite3_value_double(cur_value));
-                break;
-            case SQLITE_TEXT:
-                val_str = (const char*)sqlite3_value_text(cur_value);
-                cur_py_value = PyUnicode_DecodeUTF8(val_str, strlen(val_str), NULL);
-                /* TODO: have a way to show errors here */
-                if (!cur_py_value) {
-                    PyErr_Clear();
-                    Py_INCREF(Py_None);
-                    cur_py_value = Py_None;
-                }
-                break;
-            case SQLITE_BLOB:
-                buflen = sqlite3_value_bytes(cur_value);
-                cur_py_value = PyBuffer_New(buflen);
-                if (!cur_py_value) {
-                    break;
-                }
-                if (PyObject_AsWriteBuffer(cur_py_value, &raw_buffer, &buflen)) {
-                    Py_DECREF(cur_py_value);
-                    cur_py_value = NULL;
-                    break;
-                }
-                memcpy(raw_buffer, sqlite3_value_blob(cur_value), buflen);
-                break;
-            case SQLITE_NULL:
-            default:
-                Py_INCREF(Py_None);
-                cur_py_value = Py_None;
-        }
-
-        if (!cur_py_value) {
-            Py_DECREF(args);
-            return NULL;
-        }
-
-        PyTuple_SetItem(args, i, cur_py_value);
-
-    }
-
-    return args;
-}
-
-void _pysqlite_func_callback(sqlite3_context* context, int argc, sqlite3_value** argv)
-{
-    PyObject* args;
-    PyObject* py_func;
-    PyObject* py_retval = NULL;
-
-#ifdef WITH_THREAD
-    PyGILState_STATE threadstate;
-
-    threadstate = PyGILState_Ensure();
-#endif
-
-    py_func = (PyObject*)sqlite3_user_data(context);
-
-    args = _pysqlite_build_py_params(context, argc, argv);
-    if (args) {
-        py_retval = PyObject_CallObject(py_func, args);
-        Py_DECREF(args);
-    }
-
-    if (py_retval) {
-        _pysqlite_set_result(context, py_retval);
-        Py_DECREF(py_retval);
-    } else {
-        if (_enable_callback_tracebacks) {
-            PyErr_Print();
-        } else {
-            PyErr_Clear();
-        }
-        _sqlite3_result_error(context, "user-defined function raised exception", -1);
-    }
-
-#ifdef WITH_THREAD
-    PyGILState_Release(threadstate);
-#endif
-}
-
-static void _pysqlite_step_callback(sqlite3_context *context, int argc, sqlite3_value** params)
-{
-    PyObject* args;
-    PyObject* function_result = NULL;
-    PyObject* aggregate_class;
-    PyObject** aggregate_instance;
-    PyObject* stepmethod = NULL;
-
-#ifdef WITH_THREAD
-    PyGILState_STATE threadstate;
-
-    threadstate = PyGILState_Ensure();
-#endif
-
-    aggregate_class = (PyObject*)sqlite3_user_data(context);
-
-    aggregate_instance = (PyObject**)sqlite3_aggregate_context(context, sizeof(PyObject*));
-
-    if (*aggregate_instance == 0) {
-        *aggregate_instance = PyObject_CallFunction(aggregate_class, "");
-
-        if (PyErr_Occurred()) {
-            *aggregate_instance = 0;
-            if (_enable_callback_tracebacks) {
-                PyErr_Print();
-            } else {
-                PyErr_Clear();
-            }
-            _sqlite3_result_error(context, "user-defined aggregate's '__init__' method raised error", -1);
-            goto error;
-        }
-    }
-
-    stepmethod = PyObject_GetAttrString(*aggregate_instance, "step");
-    if (!stepmethod) {
-        goto error;
-    }
-
-    args = _pysqlite_build_py_params(context, argc, params);
-    if (!args) {
-        goto error;
-    }
-
-    function_result = PyObject_CallObject(stepmethod, args);
-    Py_DECREF(args);
-
-    if (!function_result) {
-        if (_enable_callback_tracebacks) {
-            PyErr_Print();
-        } else {
-            PyErr_Clear();
-        }
-        _sqlite3_result_error(context, "user-defined aggregate's 'step' method raised error", -1);
-    }
-
-error:
-    Py_XDECREF(stepmethod);
-    Py_XDECREF(function_result);
-
-#ifdef WITH_THREAD
-    PyGILState_Release(threadstate);
-#endif
-}
-
-void _pysqlite_final_callback(sqlite3_context* context)
-{
-    PyObject* function_result = NULL;
-    PyObject** aggregate_instance;
-
-#ifdef WITH_THREAD
-    PyGILState_STATE threadstate;
-
-    threadstate = PyGILState_Ensure();
-#endif
-
-    aggregate_instance = (PyObject**)sqlite3_aggregate_context(context, sizeof(PyObject*));
-    if (!*aggregate_instance) {
-        /* this branch is executed if there was an exception in the aggregate's
-         * __init__ */
-
-        goto error;
-    }
-
-    function_result = PyObject_CallMethod(*aggregate_instance, "finalize", "");
-    if (!function_result) {
-        if (_enable_callback_tracebacks) {
-            PyErr_Print();
-        } else {
-            PyErr_Clear();
-        }
-        _sqlite3_result_error(context, "user-defined aggregate's 'finalize' method raised error", -1);
-    } else {
-        _pysqlite_set_result(context, function_result);
-    }
-
-error:
-    Py_XDECREF(*aggregate_instance);
-    Py_XDECREF(function_result);
-
-#ifdef WITH_THREAD
-    PyGILState_Release(threadstate);
-#endif
-}
-
-static void _pysqlite_drop_unused_statement_references(pysqlite_Connection* self)
-{
-    PyObject* new_list;
-    PyObject* weakref;
-    int i;
-
-    /* we only need to do this once in a while */
-    if (self->created_statements++ < 200) {
-        return;
-    }
-
-    self->created_statements = 0;
-
-    new_list = PyList_New(0);
-    if (!new_list) {
-        return;
-    }
-
-    for (i = 0; i < PyList_Size(self->statements); i++) {
-        weakref = PyList_GetItem(self->statements, i);
-        if (PyWeakref_GetObject(weakref) != Py_None) {
-            if (PyList_Append(new_list, weakref) != 0) {
-                Py_DECREF(new_list);
-                return;
-            }
-        }
-    }
-
-    Py_DECREF(self->statements);
-    self->statements = new_list;
-}
-
-static void _pysqlite_drop_unused_cursor_references(pysqlite_Connection* self)
-{
-    PyObject* new_list;
-    PyObject* weakref;
-    int i;
-
-    /* we only need to do this once in a while */
-    if (self->created_cursors++ < 200) {
-        return;
-    }
-
-    self->created_cursors = 0;
-
-    new_list = PyList_New(0);
-    if (!new_list) {
-        return;
-    }
-
-    for (i = 0; i < PyList_Size(self->cursors); i++) {
-        weakref = PyList_GetItem(self->cursors, i);
-        if (PyWeakref_GetObject(weakref) != Py_None) {
-            if (PyList_Append(new_list, weakref) != 0) {
-                Py_DECREF(new_list);
-                return;
-            }
-        }
-    }
-
-    Py_DECREF(self->cursors);
-    self->cursors = new_list;
-}
-
-PyObject* pysqlite_connection_create_function(pysqlite_Connection* self, PyObject* args, PyObject* kwargs)
-{
-    static char *kwlist[] = {"name", "narg", "func", NULL, NULL};
-
-    PyObject* func;
-    char* name;
-    int narg;
-    int rc;
-
-    if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) {
-        return NULL;
-    }
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "siO", kwlist,
-                                     &name, &narg, &func))
-    {
-        return NULL;
-    }
-
-    rc = sqlite3_create_function(self->db, name, narg, SQLITE_UTF8, (void*)func, _pysqlite_func_callback, NULL, NULL);
-
-    if (rc != SQLITE_OK) {
-        /* Workaround for SQLite bug: no error code or string is available here */
-        PyErr_SetString(pysqlite_OperationalError, "Error creating function");
-        return NULL;
-    } else {
-        if (PyDict_SetItem(self->function_pinboard, func, Py_None) == -1)
-            return NULL;
-
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-
-PyObject* pysqlite_connection_create_aggregate(pysqlite_Connection* self, PyObject* args, PyObject* kwargs)
-{
-    PyObject* aggregate_class;
-
-    int n_arg;
-    char* name;
-    static char *kwlist[] = { "name", "n_arg", "aggregate_class", NULL };
-    int rc;
-
-    if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) {
-        return NULL;
-    }
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "siO:create_aggregate",
-                                      kwlist, &name, &n_arg, &aggregate_class)) {
-        return NULL;
-    }
-
-    rc = sqlite3_create_function(self->db, name, n_arg, SQLITE_UTF8, (void*)aggregate_class, 0, &_pysqlite_step_callback, &_pysqlite_final_callback);
-    if (rc != SQLITE_OK) {
-        /* Workaround for SQLite bug: no error code or string is available here */
-        PyErr_SetString(pysqlite_OperationalError, "Error creating aggregate");
-        return NULL;
-    } else {
-        if (PyDict_SetItem(self->function_pinboard, aggregate_class, Py_None) == -1)
-            return NULL;
-
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-
-static int _authorizer_callback(void* user_arg, int action, const char* arg1, const char* arg2 , const char* dbname, const char* access_attempt_source)
-{
-    PyObject *ret;
-    int rc;
-#ifdef WITH_THREAD
-    PyGILState_STATE gilstate;
-
-    gilstate = PyGILState_Ensure();
-#endif
-    ret = PyObject_CallFunction((PyObject*)user_arg, "issss", action, arg1, arg2, dbname, access_attempt_source);
-
-    if (!ret) {
-        if (_enable_callback_tracebacks) {
-            PyErr_Print();
-        } else {
-            PyErr_Clear();
-        }
-
-        rc = SQLITE_DENY;
-    } else {
-        if (PyInt_Check(ret)) {
-            rc = (int)PyInt_AsLong(ret);
-        } else {
-            rc = SQLITE_DENY;
-        }
-        Py_DECREF(ret);
-    }
-
-#ifdef WITH_THREAD
-    PyGILState_Release(gilstate);
-#endif
-    return rc;
-}
-
-static int _progress_handler(void* user_arg)
-{
-    int rc;
-    PyObject *ret;
-#ifdef WITH_THREAD
-    PyGILState_STATE gilstate;
-
-    gilstate = PyGILState_Ensure();
-#endif
-    ret = PyObject_CallFunction((PyObject*)user_arg, "");
-
-    if (!ret) {
-        if (_enable_callback_tracebacks) {
-            PyErr_Print();
-        } else {
-            PyErr_Clear();
-        }
-
-        /* abort query if error occurred */
-        rc = 1; 
-    } else {
-        rc = (int)PyObject_IsTrue(ret);
-        Py_DECREF(ret);
-    }
-
-#ifdef WITH_THREAD
-    PyGILState_Release(gilstate);
-#endif
-    return rc;
-}
-
-static PyObject* pysqlite_connection_set_authorizer(pysqlite_Connection* self, PyObject* args, PyObject* kwargs)
-{
-    PyObject* authorizer_cb;
-
-    static char *kwlist[] = { "authorizer_callback", NULL };
-    int rc;
-
-    if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) {
-        return NULL;
-    }
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:set_authorizer",
-                                      kwlist, &authorizer_cb)) {
-        return NULL;
-    }
-
-    rc = sqlite3_set_authorizer(self->db, _authorizer_callback, (void*)authorizer_cb);
-
-    if (rc != SQLITE_OK) {
-        PyErr_SetString(pysqlite_OperationalError, "Error setting authorizer callback");
-        return NULL;
-    } else {
-        if (PyDict_SetItem(self->function_pinboard, authorizer_cb, Py_None) == -1)
-            return NULL;
-
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-
-static PyObject* pysqlite_connection_set_progress_handler(pysqlite_Connection* self, PyObject* args, PyObject* kwargs)
-{
-    PyObject* progress_handler;
-    int n;
-
-    static char *kwlist[] = { "progress_handler", "n", NULL };
-
-    if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) {
-        return NULL;
-    }
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Oi:set_progress_handler",
-                                      kwlist, &progress_handler, &n)) {
-        return NULL;
-    }
-
-    if (progress_handler == Py_None) {
-        /* None clears the progress handler previously set */
-        sqlite3_progress_handler(self->db, 0, 0, (void*)0);
-    } else {
-        sqlite3_progress_handler(self->db, n, _progress_handler, progress_handler);
-        if (PyDict_SetItem(self->function_pinboard, progress_handler, Py_None) == -1)
-            return NULL;
-    }
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-#ifdef HAVE_LOAD_EXTENSION
-static PyObject* pysqlite_enable_load_extension(pysqlite_Connection* self, PyObject* args)
-{
-    int rc;
-    int onoff;
-
-    if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) {
-        return NULL;
-    }
-
-    if (!PyArg_ParseTuple(args, "i", &onoff)) {
-        return NULL;
-    }
-
-    rc = sqlite3_enable_load_extension(self->db, onoff);
-
-    if (rc != SQLITE_OK) {
-        PyErr_SetString(pysqlite_OperationalError, "Error enabling load extension");
-        return NULL;
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-
-static PyObject* pysqlite_load_extension(pysqlite_Connection* self, PyObject* args)
-{
-    int rc;
-    char* extension_name;
-    char* errmsg;
-
-    if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) {
-        return NULL;
-    }
-
-    if (!PyArg_ParseTuple(args, "s", &extension_name)) {
-        return NULL;
-    }
-
-    rc = sqlite3_load_extension(self->db, extension_name, 0, &errmsg);
-    if (rc != 0) {
-        PyErr_SetString(pysqlite_OperationalError, errmsg);
-        return NULL;
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-#endif
-
-int pysqlite_check_thread(pysqlite_Connection* self)
-{
-#ifdef WITH_THREAD
-    if (self->check_same_thread) {
-        if (PyThread_get_thread_ident() != self->thread_ident) {
-            PyErr_Format(pysqlite_ProgrammingError,
-                        "SQLite objects created in a thread can only be used in that same thread."
-                        "The object was created in thread id %ld and this is thread id %ld",
-                        self->thread_ident, PyThread_get_thread_ident());
-            return 0;
-        }
-
-    }
-#endif
-    return 1;
-}
-
-static PyObject* pysqlite_connection_get_isolation_level(pysqlite_Connection* self, void* unused)
-{
-    Py_INCREF(self->isolation_level);
-    return self->isolation_level;
-}
-
-static PyObject* pysqlite_connection_get_total_changes(pysqlite_Connection* self, void* unused)
-{
-    if (!pysqlite_check_connection(self)) {
-        return NULL;
-    } else {
-        return Py_BuildValue("i", sqlite3_total_changes(self->db));
-    }
-}
-
-static int pysqlite_connection_set_isolation_level(pysqlite_Connection* self, PyObject* isolation_level)
-{
-    PyObject* res;
-    PyObject* begin_statement;
-    char* begin_statement_str;
-
-    Py_XDECREF(self->isolation_level);
-
-    if (self->begin_statement) {
-        PyMem_Free(self->begin_statement);
-        self->begin_statement = NULL;
-    }
-
-    if (isolation_level == Py_None) {
-        Py_INCREF(Py_None);
-        self->isolation_level = Py_None;
-
-        res = pysqlite_connection_commit(self, NULL);
-        if (!res) {
-            return -1;
-        }
-        Py_DECREF(res);
-
-        self->inTransaction = 0;
-    } else {
-        Py_INCREF(isolation_level);
-        self->isolation_level = isolation_level;
-
-        begin_statement = PyString_FromString("BEGIN ");
-        if (!begin_statement) {
-            return -1;
-        }
-        PyString_Concat(&begin_statement, isolation_level);
-        if (!begin_statement) {
-            return -1;
-        }
-
-        begin_statement_str = PyString_AsString(begin_statement);
-        if (!begin_statement_str) {
-            Py_DECREF(begin_statement);
-            return -1;
-        }
-        self->begin_statement = PyMem_Malloc(strlen(begin_statement_str) + 2);
-        if (!self->begin_statement) {
-            Py_DECREF(begin_statement);
-            return -1;
-        }
-
-        strcpy(self->begin_statement, begin_statement_str);
-        Py_DECREF(begin_statement);
-    }
-
-    return 0;
-}
-
-PyObject* pysqlite_connection_call(pysqlite_Connection* self, PyObject* args, PyObject* kwargs)
-{
-    PyObject* sql;
-    pysqlite_Statement* statement;
-    PyObject* weakref;
-    int rc;
-
-    if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) {
-        return NULL;
-    }
-
-    if (!PyArg_ParseTuple(args, "O", &sql)) {
-        return NULL;
-    }
-
-    _pysqlite_drop_unused_statement_references(self);
-
-    statement = PyObject_New(pysqlite_Statement, &pysqlite_StatementType);
-    if (!statement) {
-        return NULL;
-    }
-
-    statement->db = NULL;
-    statement->st = NULL;
-    statement->sql = NULL;
-    statement->in_use = 0;
-    statement->in_weakreflist = NULL;
-
-    rc = pysqlite_statement_create(statement, self, sql);
-
-    if (rc != SQLITE_OK) {
-        if (rc == PYSQLITE_TOO_MUCH_SQL) {
-            PyErr_SetString(pysqlite_Warning, "You can only execute one statement at a time.");
-        } else if (rc == PYSQLITE_SQL_WRONG_TYPE) {
-            PyErr_SetString(pysqlite_Warning, "SQL is of wrong type. Must be string or unicode.");
-        } else {
-            (void)pysqlite_statement_reset(statement);
-            _pysqlite_seterror(self->db, NULL);
-        }
-
-        Py_CLEAR(statement);
-    } else {
-        weakref = PyWeakref_NewRef((PyObject*)statement, NULL);
-        if (!weakref) {
-            Py_CLEAR(statement);
-            goto error;
-        }
-
-        if (PyList_Append(self->statements, weakref) != 0) {
-            Py_CLEAR(weakref);
-            goto error;
-        }
-
-        Py_DECREF(weakref);
-    }
-
-error:
-    return (PyObject*)statement;
-}
-
-PyObject* pysqlite_connection_execute(pysqlite_Connection* self, PyObject* args, PyObject* kwargs)
-{
-    PyObject* cursor = 0;
-    PyObject* result = 0;
-    PyObject* method = 0;
-
-    cursor = PyObject_CallMethod((PyObject*)self, "cursor", "");
-    if (!cursor) {
-        goto error;
-    }
-
-    method = PyObject_GetAttrString(cursor, "execute");
-    if (!method) {
-        Py_CLEAR(cursor);
-        goto error;
-    }
-
-    result = PyObject_CallObject(method, args);
-    if (!result) {
-        Py_CLEAR(cursor);
-    }
-
-error:
-    Py_XDECREF(result);
-    Py_XDECREF(method);
-
-    return cursor;
-}
-
-PyObject* pysqlite_connection_executemany(pysqlite_Connection* self, PyObject* args, PyObject* kwargs)
-{
-    PyObject* cursor = 0;
-    PyObject* result = 0;
-    PyObject* method = 0;
-
-    cursor = PyObject_CallMethod((PyObject*)self, "cursor", "");
-    if (!cursor) {
-        goto error;
-    }
-
-    method = PyObject_GetAttrString(cursor, "executemany");
-    if (!method) {
-        Py_CLEAR(cursor);
-        goto error;
-    }
-
-    result = PyObject_CallObject(method, args);
-    if (!result) {
-        Py_CLEAR(cursor);
-    }
-
-error:
-    Py_XDECREF(result);
-    Py_XDECREF(method);
-
-    return cursor;
-}
-
-PyObject* pysqlite_connection_executescript(pysqlite_Connection* self, PyObject* args, PyObject* kwargs)
-{
-    PyObject* cursor = 0;
-    PyObject* result = 0;
-    PyObject* method = 0;
-
-    cursor = PyObject_CallMethod((PyObject*)self, "cursor", "");
-    if (!cursor) {
-        goto error;
-    }
-
-    method = PyObject_GetAttrString(cursor, "executescript");
-    if (!method) {
-        Py_CLEAR(cursor);
-        goto error;
-    }
-
-    result = PyObject_CallObject(method, args);
-    if (!result) {
-        Py_CLEAR(cursor);
-    }
-
-error:
-    Py_XDECREF(result);
-    Py_XDECREF(method);
-
-    return cursor;
-}
-
-/* ------------------------- COLLATION CODE ------------------------ */
-
-static int
-pysqlite_collation_callback(
-        void* context,
-        int text1_length, const void* text1_data,
-        int text2_length, const void* text2_data)
-{
-    PyObject* callback = (PyObject*)context;
-    PyObject* string1 = 0;
-    PyObject* string2 = 0;
-#ifdef WITH_THREAD
-    PyGILState_STATE gilstate;
-#endif
-    PyObject* retval = NULL;
-    int result = 0;
-#ifdef WITH_THREAD
-    gilstate = PyGILState_Ensure();
-#endif
-
-    if (PyErr_Occurred()) {
-        goto finally;
-    }
-
-    string1 = PyString_FromStringAndSize((const char*)text1_data, text1_length);
-    string2 = PyString_FromStringAndSize((const char*)text2_data, text2_length);
-
-    if (!string1 || !string2) {
-        goto finally; /* failed to allocate strings */
-    }
-
-    retval = PyObject_CallFunctionObjArgs(callback, string1, string2, NULL);
-
-    if (!retval) {
-        /* execution failed */
-        goto finally;
-    }
-
-    result = PyInt_AsLong(retval);
-    if (PyErr_Occurred()) {
-        result = 0;
-    }
-
-finally:
-    Py_XDECREF(string1);
-    Py_XDECREF(string2);
-    Py_XDECREF(retval);
-#ifdef WITH_THREAD
-    PyGILState_Release(gilstate);
-#endif
-    return result;
-}
-
-static PyObject *
-pysqlite_connection_interrupt(pysqlite_Connection* self, PyObject* args)
-{
-    PyObject* retval = NULL;
-
-    if (!pysqlite_check_connection(self)) {
-        goto finally;
-    }
-
-    sqlite3_interrupt(self->db);
-
-    Py_INCREF(Py_None);
-    retval = Py_None;
-
-finally:
-    return retval;
-}
-
-/* Function author: Paul Kippes <kippesp@gmail.com>
- * Class method of Connection to call the Python function _iterdump
- * of the sqlite3 module.
- */
-static PyObject *
-pysqlite_connection_iterdump(pysqlite_Connection* self, PyObject* args)
-{
-    PyObject* retval = NULL;
-    PyObject* module = NULL;
-    PyObject* module_dict;
-    PyObject* pyfn_iterdump;
-
-    if (!pysqlite_check_connection(self)) {
-        goto finally;
-    }
-
-    module = PyImport_ImportModule(MODULE_NAME ".dump");
-    if (!module) {
-        goto finally;
-    }
-
-    module_dict = PyModule_GetDict(module);
-    if (!module_dict) {
-        goto finally;
-    }
-
-    pyfn_iterdump = PyDict_GetItemString(module_dict, "_iterdump");
-    if (!pyfn_iterdump) {
-        PyErr_SetString(pysqlite_OperationalError, "Failed to obtain _iterdump() reference");
-        goto finally;
-    }
-
-    args = PyTuple_New(1);
-    if (!args) {
-        goto finally;
-    }
-    Py_INCREF(self);
-    PyTuple_SetItem(args, 0, (PyObject*)self);
-    retval = PyObject_CallObject(pyfn_iterdump, args);
-
-finally:
-    Py_XDECREF(args);
-    Py_XDECREF(module);
-    return retval;
-}
-
-static PyObject *
-pysqlite_connection_create_collation(pysqlite_Connection* self, PyObject* args)
-{
-    PyObject* callable;
-    PyObject* uppercase_name = 0;
-    PyObject* name;
-    PyObject* retval;
-    char* chk;
-    int rc;
-
-    if (!pysqlite_check_thread(self) || !pysqlite_check_connection(self)) {
-        goto finally;
-    }
-
-    if (!PyArg_ParseTuple(args, "O!O:create_collation(name, callback)", &PyString_Type, &name, &callable)) {
-        goto finally;
-    }
-
-    uppercase_name = PyObject_CallMethod(name, "upper", "");
-    if (!uppercase_name) {
-        goto finally;
-    }
-
-    chk = PyString_AsString(uppercase_name);
-    while (*chk) {
-        if ((*chk >= '0' && *chk <= '9')
-         || (*chk >= 'A' && *chk <= 'Z')
-         || (*chk == '_'))
-        {
-            chk++;
-        } else {
-            PyErr_SetString(pysqlite_ProgrammingError, "invalid character in collation name");
-            goto finally;
-        }
-    }
-
-    if (callable != Py_None && !PyCallable_Check(callable)) {
-        PyErr_SetString(PyExc_TypeError, "parameter must be callable");
-        goto finally;
-    }
-
-    if (callable != Py_None) {
-        if (PyDict_SetItem(self->collations, uppercase_name, callable) == -1)
-            goto finally;
-    } else {
-        if (PyDict_DelItem(self->collations, uppercase_name) == -1)
-            goto finally;
-    }
-
-    rc = sqlite3_create_collation(self->db,
-                                  PyString_AsString(uppercase_name),
-                                  SQLITE_UTF8,
-                                  (callable != Py_None) ? callable : NULL,
-                                  (callable != Py_None) ? pysqlite_collation_callback : NULL);
-    if (rc != SQLITE_OK) {
-        PyDict_DelItem(self->collations, uppercase_name);
-        _pysqlite_seterror(self->db, NULL);
-        goto finally;
-    }
-
-finally:
-    Py_XDECREF(uppercase_name);
-
-    if (PyErr_Occurred()) {
-        retval = NULL;
-    } else {
-        Py_INCREF(Py_None);
-        retval = Py_None;
-    }
-
-    return retval;
-}
-
-/* Called when the connection is used as a context manager. Returns itself as a
- * convenience to the caller. */
-static PyObject *
-pysqlite_connection_enter(pysqlite_Connection* self, PyObject* args)
-{
-    Py_INCREF(self);
-    return (PyObject*)self;
-}
-
-/** Called when the connection is used as a context manager. If there was any
- * exception, a rollback takes place; otherwise we commit. */
-static PyObject *
-pysqlite_connection_exit(pysqlite_Connection* self, PyObject* args)
-{
-    PyObject* exc_type, *exc_value, *exc_tb;
-    char* method_name;
-    PyObject* result;
-
-    if (!PyArg_ParseTuple(args, "OOO", &exc_type, &exc_value, &exc_tb)) {
-        return NULL;
-    }
-
-    if (exc_type == Py_None && exc_value == Py_None && exc_tb == Py_None) {
-        method_name = "commit";
-    } else {
-        method_name = "rollback";
-    }
-
-    result = PyObject_CallMethod((PyObject*)self, method_name, "");
-    if (!result) {
-        return NULL;
-    }
-    Py_DECREF(result);
-
-    Py_INCREF(Py_False);
-    return Py_False;
-}
-
-static char connection_doc[] =
-PyDoc_STR("SQLite database connection object.");
-
-static PyGetSetDef connection_getset[] = {
-    {"isolation_level",  (getter)pysqlite_connection_get_isolation_level, (setter)pysqlite_connection_set_isolation_level},
-    {"total_changes",  (getter)pysqlite_connection_get_total_changes, (setter)0},
-    {NULL}
-};
-
-static PyMethodDef connection_methods[] = {
-    {"cursor", (PyCFunction)pysqlite_connection_cursor, METH_VARARGS|METH_KEYWORDS,
-        PyDoc_STR("Return a cursor for the connection.")},
-    {"close", (PyCFunction)pysqlite_connection_close, METH_NOARGS,
-        PyDoc_STR("Closes the connection.")},
-    {"commit", (PyCFunction)pysqlite_connection_commit, METH_NOARGS,
-        PyDoc_STR("Commit the current transaction.")},
-    {"rollback", (PyCFunction)pysqlite_connection_rollback, METH_NOARGS,
-        PyDoc_STR("Roll back the current transaction.")},
-    {"create_function", (PyCFunction)pysqlite_connection_create_function, METH_VARARGS|METH_KEYWORDS,
-        PyDoc_STR("Creates a new function. Non-standard.")},
-    {"create_aggregate", (PyCFunction)pysqlite_connection_create_aggregate, METH_VARARGS|METH_KEYWORDS,
-        PyDoc_STR("Creates a new aggregate. Non-standard.")},
-    {"set_authorizer", (PyCFunction)pysqlite_connection_set_authorizer, METH_VARARGS|METH_KEYWORDS,
-        PyDoc_STR("Sets authorizer callback. Non-standard.")},
-    #ifdef HAVE_LOAD_EXTENSION
-    {"enable_load_extension", (PyCFunction)pysqlite_enable_load_extension, METH_VARARGS,
-        PyDoc_STR("Enable dynamic loading of SQLite extension modules. Non-standard.")},
-    {"load_extension", (PyCFunction)pysqlite_load_extension, METH_VARARGS,
-        PyDoc_STR("Load SQLite extension module. Non-standard.")},
-    #endif
-    {"set_progress_handler", (PyCFunction)pysqlite_connection_set_progress_handler, METH_VARARGS|METH_KEYWORDS,
-        PyDoc_STR("Sets progress handler callback. Non-standard.")},
-    {"execute", (PyCFunction)pysqlite_connection_execute, METH_VARARGS,
-        PyDoc_STR("Executes a SQL statement. Non-standard.")},
-    {"executemany", (PyCFunction)pysqlite_connection_executemany, METH_VARARGS,
-        PyDoc_STR("Repeatedly executes a SQL statement. Non-standard.")},
-    {"executescript", (PyCFunction)pysqlite_connection_executescript, METH_VARARGS,
-        PyDoc_STR("Executes a multiple SQL statements at once. Non-standard.")},
-    {"create_collation", (PyCFunction)pysqlite_connection_create_collation, METH_VARARGS,
-        PyDoc_STR("Creates a collation function. Non-standard.")},
-    {"interrupt", (PyCFunction)pysqlite_connection_interrupt, METH_NOARGS,
-        PyDoc_STR("Abort any pending database operation. Non-standard.")},
-    {"iterdump", (PyCFunction)pysqlite_connection_iterdump, METH_NOARGS,
-        PyDoc_STR("Returns iterator to the dump of the database in an SQL text format. Non-standard.")},
-    {"__enter__", (PyCFunction)pysqlite_connection_enter, METH_NOARGS,
-        PyDoc_STR("For context manager. Non-standard.")},
-    {"__exit__", (PyCFunction)pysqlite_connection_exit, METH_VARARGS,
-        PyDoc_STR("For context manager. Non-standard.")},
-    {NULL, NULL}
-};
-
-static struct PyMemberDef connection_members[] =
-{
-    {"Warning", T_OBJECT, offsetof(pysqlite_Connection, Warning), RO},
-    {"Error", T_OBJECT, offsetof(pysqlite_Connection, Error), RO},
-    {"InterfaceError", T_OBJECT, offsetof(pysqlite_Connection, InterfaceError), RO},
-    {"DatabaseError", T_OBJECT, offsetof(pysqlite_Connection, DatabaseError), RO},
-    {"DataError", T_OBJECT, offsetof(pysqlite_Connection, DataError), RO},
-    {"OperationalError", T_OBJECT, offsetof(pysqlite_Connection, OperationalError), RO},
-    {"IntegrityError", T_OBJECT, offsetof(pysqlite_Connection, IntegrityError), RO},
-    {"InternalError", T_OBJECT, offsetof(pysqlite_Connection, InternalError), RO},
-    {"ProgrammingError", T_OBJECT, offsetof(pysqlite_Connection, ProgrammingError), RO},
-    {"NotSupportedError", T_OBJECT, offsetof(pysqlite_Connection, NotSupportedError), RO},
-    {"row_factory", T_OBJECT, offsetof(pysqlite_Connection, row_factory)},
-    {"text_factory", T_OBJECT, offsetof(pysqlite_Connection, text_factory)},
-    {NULL}
-};
-
-PyTypeObject pysqlite_ConnectionType = {
-        PyVarObject_HEAD_INIT(NULL, 0)
-        MODULE_NAME ".Connection",                      /* tp_name */
-        sizeof(pysqlite_Connection),                    /* tp_basicsize */
-        0,                                              /* tp_itemsize */
-        (destructor)pysqlite_connection_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 */
-        (ternaryfunc)pysqlite_connection_call,          /* tp_call */
-        0,                                              /* tp_str */
-        0,                                              /* tp_getattro */
-        0,                                              /* tp_setattro */
-        0,                                              /* tp_as_buffer */
-        Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE,         /* tp_flags */
-        connection_doc,                                 /* tp_doc */
-        0,                                              /* tp_traverse */
-        0,                                              /* tp_clear */
-        0,                                              /* tp_richcompare */
-        0,                                              /* tp_weaklistoffset */
-        0,                                              /* tp_iter */
-        0,                                              /* tp_iternext */
-        connection_methods,                             /* tp_methods */
-        connection_members,                             /* tp_members */
-        connection_getset,                              /* tp_getset */
-        0,                                              /* tp_base */
-        0,                                              /* tp_dict */
-        0,                                              /* tp_descr_get */
-        0,                                              /* tp_descr_set */
-        0,                                              /* tp_dictoffset */
-        (initproc)pysqlite_connection_init,             /* tp_init */
-        0,                                              /* tp_alloc */
-        0,                                              /* tp_new */
-        0                                               /* tp_free */
-};
-
-extern int pysqlite_connection_setup_types(void)
-{
-    pysqlite_ConnectionType.tp_new = PyType_GenericNew;
-    return PyType_Ready(&pysqlite_ConnectionType);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/connection.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/connection.h
deleted file mode 100644
index 326dc45..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/connection.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/* connection.h - definitions for the connection type
- *
- * Copyright (C) 2004-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#ifndef PYSQLITE_CONNECTION_H
-#define PYSQLITE_CONNECTION_H
-#include "Python.h"
-#include "pythread.h"
-#include "structmember.h"
-
-#include "cache.h"
-#include "module.h"
-
-#include "sqlite3.h"
-
-typedef struct
-{
-    PyObject_HEAD
-    sqlite3* db;
-
-    /* 1 if we are currently within a transaction, i. e. if a BEGIN has been
-     * issued */
-    int inTransaction;
-
-    /* the type detection mode. Only 0, PARSE_DECLTYPES, PARSE_COLNAMES or a
-     * bitwise combination thereof makes sense */
-    int detect_types;
-
-    /* the timeout value in seconds for database locks */
-    double timeout;
-
-    /* for internal use in the timeout handler: when did the timeout handler
-     * first get called with count=0? */
-    double timeout_started;
-
-    /* None for autocommit, otherwise a PyString with the isolation level */
-    PyObject* isolation_level;
-
-    /* NULL for autocommit, otherwise a string with the BEGIN statement; will be
-     * freed in connection destructor */
-    char* begin_statement;
-
-    /* 1 if a check should be performed for each API call if the connection is
-     * used from the same thread it was created in */
-    int check_same_thread;
-
-    int initialized;
-
-    /* thread identification of the thread the connection was created in */
-    long thread_ident;
-
-    pysqlite_Cache* statement_cache;
-
-    /* Lists of weak references to statements and cursors used within this connection */
-    PyObject* statements;
-    PyObject* cursors;
-
-    /* Counters for how many statements/cursors were created in the connection. May be
-     * reset to 0 at certain intervals */
-    int created_statements;
-    int created_cursors;
-
-    PyObject* row_factory;
-
-    /* Determines how bytestrings from SQLite are converted to Python objects:
-     * - PyUnicode_Type:        Python Unicode objects are constructed from UTF-8 bytestrings
-     * - OptimizedUnicode:      Like before, but for ASCII data, only PyStrings are created.
-     * - PyString_Type:         PyStrings are created as-is.
-     * - Any custom callable:   Any object returned from the callable called with the bytestring
-     *                          as single parameter.
-     */
-    PyObject* text_factory;
-
-    /* remember references to functions/classes used in
-     * create_function/create/aggregate, use these as dictionary keys, so we
-     * can keep the total system refcount constant by clearing that dictionary
-     * in connection_dealloc */
-    PyObject* function_pinboard;
-
-    /* a dictionary of registered collation name => collation callable mappings */
-    PyObject* collations;
-
-    /* if our connection was created from a APSW connection, we keep a
-     * reference to the APSW connection around and get rid of it in our
-     * destructor */
-    PyObject* apsw_connection;
-
-    /* Exception objects */
-    PyObject* Warning;
-    PyObject* Error;
-    PyObject* InterfaceError;
-    PyObject* DatabaseError;
-    PyObject* DataError;
-    PyObject* OperationalError;
-    PyObject* IntegrityError;
-    PyObject* InternalError;
-    PyObject* ProgrammingError;
-    PyObject* NotSupportedError;
-} pysqlite_Connection;
-
-extern PyTypeObject pysqlite_ConnectionType;
-
-PyObject* pysqlite_connection_alloc(PyTypeObject* type, int aware);
-void pysqlite_connection_dealloc(pysqlite_Connection* self);
-PyObject* pysqlite_connection_cursor(pysqlite_Connection* self, PyObject* args, PyObject* kwargs);
-PyObject* pysqlite_connection_close(pysqlite_Connection* self, PyObject* args);
-PyObject* _pysqlite_connection_begin(pysqlite_Connection* self);
-PyObject* pysqlite_connection_commit(pysqlite_Connection* self, PyObject* args);
-PyObject* pysqlite_connection_rollback(pysqlite_Connection* self, PyObject* args);
-PyObject* pysqlite_connection_new(PyTypeObject* type, PyObject* args, PyObject* kw);
-int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject* kwargs);
-
-int pysqlite_connection_register_cursor(pysqlite_Connection* connection, PyObject* cursor);
-int pysqlite_check_thread(pysqlite_Connection* self);
-int pysqlite_check_connection(pysqlite_Connection* con);
-
-int pysqlite_connection_setup_types(void);
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cursor.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cursor.c
deleted file mode 100644
index 9e661d7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cursor.c
+++ /dev/null
@@ -1,1126 +0,0 @@
-/* cursor.c - the cursor type
- *
- * Copyright (C) 2004-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#include "cursor.h"
-#include "module.h"
-#include "util.h"
-#include "sqlitecompat.h"
-
-/* used to decide wether to call PyInt_FromLong or PyLong_FromLongLong */
-#ifndef INT32_MIN
-#define INT32_MIN (-2147483647 - 1)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX 2147483647
-#endif
-
-PyObject* pysqlite_cursor_iternext(pysqlite_Cursor* self);
-
-static char* errmsg_fetch_across_rollback = "Cursor needed to be reset because of commit/rollback and can no longer be fetched from.";
-
-static pysqlite_StatementKind detect_statement_type(char* statement)
-{
-    char buf[20];
-    char* src;
-    char* dst;
-
-    src = statement;
-    /* skip over whitepace */
-    while (*src == '\r' || *src == '\n' || *src == ' ' || *src == '\t') {
-        src++;
-    }
-
-    if (*src == 0)
-        return STATEMENT_INVALID;
-
-    dst = buf;
-    *dst = 0;
-    while (isalpha(*src) && dst - buf < sizeof(buf) - 2) {
-        *dst++ = tolower(*src++);
-    }
-
-    *dst = 0;
-
-    if (!strcmp(buf, "select")) {
-        return STATEMENT_SELECT;
-    } else if (!strcmp(buf, "insert")) {
-        return STATEMENT_INSERT;
-    } else if (!strcmp(buf, "update")) {
-        return STATEMENT_UPDATE;
-    } else if (!strcmp(buf, "delete")) {
-        return STATEMENT_DELETE;
-    } else if (!strcmp(buf, "replace")) {
-        return STATEMENT_REPLACE;
-    } else {
-        return STATEMENT_OTHER;
-    }
-}
-
-static int pysqlite_cursor_init(pysqlite_Cursor* self, PyObject* args, PyObject* kwargs)
-{
-    pysqlite_Connection* connection;
-
-    if (!PyArg_ParseTuple(args, "O!", &pysqlite_ConnectionType, &connection))
-    {
-        return -1;
-    }
-
-    Py_INCREF(connection);
-    self->connection = connection;
-    self->statement = NULL;
-    self->next_row = NULL;
-    self->in_weakreflist = NULL;
-
-    self->row_cast_map = PyList_New(0);
-    if (!self->row_cast_map) {
-        return -1;
-    }
-
-    Py_INCREF(Py_None);
-    self->description = Py_None;
-
-    Py_INCREF(Py_None);
-    self->lastrowid= Py_None;
-
-    self->arraysize = 1;
-    self->closed = 0;
-    self->reset = 0;
-
-    self->rowcount = -1L;
-
-    Py_INCREF(Py_None);
-    self->row_factory = Py_None;
-
-    if (!pysqlite_check_thread(self->connection)) {
-        return -1;
-    }
-
-    if (!pysqlite_connection_register_cursor(connection, (PyObject*)self)) {
-        return -1;
-    }
-
-    self->initialized = 1;
-
-    return 0;
-}
-
-static void pysqlite_cursor_dealloc(pysqlite_Cursor* self)
-{
-    int rc;
-
-    /* Reset the statement if the user has not closed the cursor */
-    if (self->statement) {
-        rc = pysqlite_statement_reset(self->statement);
-        Py_DECREF(self->statement);
-    }
-
-    Py_XDECREF(self->connection);
-    Py_XDECREF(self->row_cast_map);
-    Py_XDECREF(self->description);
-    Py_XDECREF(self->lastrowid);
-    Py_XDECREF(self->row_factory);
-    Py_XDECREF(self->next_row);
-
-    if (self->in_weakreflist != NULL) {
-        PyObject_ClearWeakRefs((PyObject*)self);
-    }
-
-    self->ob_type->tp_free((PyObject*)self);
-}
-
-PyObject* _pysqlite_get_converter(PyObject* key)
-{
-    PyObject* upcase_key;
-    PyObject* retval;
-
-    upcase_key = PyObject_CallMethod(key, "upper", "");
-    if (!upcase_key) {
-        return NULL;
-    }
-
-    retval = PyDict_GetItem(converters, upcase_key);
-    Py_DECREF(upcase_key);
-
-    return retval;
-}
-
-int pysqlite_build_row_cast_map(pysqlite_Cursor* self)
-{
-    int i;
-    const char* type_start = (const char*)-1;
-    const char* pos;
-
-    const char* colname;
-    const char* decltype;
-    PyObject* py_decltype;
-    PyObject* converter;
-    PyObject* key;
-
-    if (!self->connection->detect_types) {
-        return 0;
-    }
-
-    Py_XDECREF(self->row_cast_map);
-    self->row_cast_map = PyList_New(0);
-
-    for (i = 0; i < sqlite3_column_count(self->statement->st); i++) {
-        converter = NULL;
-
-        if (self->connection->detect_types & PARSE_COLNAMES) {
-            colname = sqlite3_column_name(self->statement->st, i);
-            if (colname) {
-                for (pos = colname; *pos != 0; pos++) {
-                    if (*pos == '[') {
-                        type_start = pos + 1;
-                    } else if (*pos == ']' && type_start != (const char*)-1) {
-                        key = PyString_FromStringAndSize(type_start, pos - type_start);
-                        if (!key) {
-                            /* creating a string failed, but it is too complicated
-                             * to propagate the error here, we just assume there is
-                             * no converter and proceed */
-                            break;
-                        }
-
-                        converter = _pysqlite_get_converter(key);
-                        Py_DECREF(key);
-                        break;
-                    }
-                }
-            }
-        }
-
-        if (!converter && self->connection->detect_types & PARSE_DECLTYPES) {
-            decltype = sqlite3_column_decltype(self->statement->st, i);
-            if (decltype) {
-                for (pos = decltype;;pos++) {
-                    /* Converter names are split at '(' and blanks.
-                     * This allows 'INTEGER NOT NULL' to be treated as 'INTEGER' and
-                     * 'NUMBER(10)' to be treated as 'NUMBER', for example.
-                     * In other words, it will work as people expect it to work.*/
-                    if (*pos == ' ' || *pos == '(' || *pos == 0) {
-                        py_decltype = PyString_FromStringAndSize(decltype, pos - decltype);
-                        if (!py_decltype) {
-                            return -1;
-                        }
-                        break;
-                    }
-                }
-
-                converter = _pysqlite_get_converter(py_decltype);
-                Py_DECREF(py_decltype);
-            }
-        }
-
-        if (!converter) {
-            converter = Py_None;
-        }
-
-        if (PyList_Append(self->row_cast_map, converter) != 0) {
-            if (converter != Py_None) {
-                Py_DECREF(converter);
-            }
-            Py_XDECREF(self->row_cast_map);
-            self->row_cast_map = NULL;
-
-            return -1;
-        }
-    }
-
-    return 0;
-}
-
-PyObject* _pysqlite_build_column_name(const char* colname)
-{
-    const char* pos;
-
-    if (!colname) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-
-    for (pos = colname;; pos++) {
-        if (*pos == 0 || *pos == '[') {
-            if ((*pos == '[') && (pos > colname) && (*(pos-1) == ' ')) {
-                pos--;
-            }
-            return PyString_FromStringAndSize(colname, pos - colname);
-        }
-    }
-}
-
-PyObject* pysqlite_unicode_from_string(const char* val_str, int optimize)
-{
-    const char* check;
-    int is_ascii = 0;
-
-    if (optimize) {
-        is_ascii = 1;
-
-        check = val_str;
-        while (*check) {
-            if (*check & 0x80) {
-                is_ascii = 0;
-                break;
-            }
-
-            check++;
-        }
-    }
-
-    if (is_ascii) {
-        return PyString_FromString(val_str);
-    } else {
-        return PyUnicode_DecodeUTF8(val_str, strlen(val_str), NULL);
-    }
-}
-
-/*
- * Returns a row from the currently active SQLite statement
- *
- * Precondidition:
- * - sqlite3_step() has been called before and it returned SQLITE_ROW.
- */
-PyObject* _pysqlite_fetch_one_row(pysqlite_Cursor* self)
-{
-    int i, numcols;
-    PyObject* row;
-    PyObject* item = NULL;
-    int coltype;
-    PY_LONG_LONG intval;
-    PyObject* converter;
-    PyObject* converted;
-    Py_ssize_t nbytes;
-    PyObject* buffer;
-    void* raw_buffer;
-    const char* val_str;
-    char buf[200];
-    const char* colname;
-
-    if (self->reset) {
-        PyErr_SetString(pysqlite_InterfaceError, errmsg_fetch_across_rollback);
-        return NULL;
-    }
-
-    Py_BEGIN_ALLOW_THREADS
-    numcols = sqlite3_data_count(self->statement->st);
-    Py_END_ALLOW_THREADS
-
-    row = PyTuple_New(numcols);
-    if (!row) {
-        return NULL;
-    }
-
-    for (i = 0; i < numcols; i++) {
-        if (self->connection->detect_types) {
-            converter = PyList_GetItem(self->row_cast_map, i);
-            if (!converter) {
-                converter = Py_None;
-            }
-        } else {
-            converter = Py_None;
-        }
-
-        if (converter != Py_None) {
-            nbytes = sqlite3_column_bytes(self->statement->st, i);
-            val_str = (const char*)sqlite3_column_blob(self->statement->st, i);
-            if (!val_str) {
-                Py_INCREF(Py_None);
-                converted = Py_None;
-            } else {
-                item = PyString_FromStringAndSize(val_str, nbytes);
-                if (!item) {
-                    return NULL;
-                }
-                converted = PyObject_CallFunction(converter, "O", item);
-                Py_DECREF(item);
-                if (!converted) {
-                    break;
-                }
-            }
-        } else {
-            Py_BEGIN_ALLOW_THREADS
-            coltype = sqlite3_column_type(self->statement->st, i);
-            Py_END_ALLOW_THREADS
-            if (coltype == SQLITE_NULL) {
-                Py_INCREF(Py_None);
-                converted = Py_None;
-            } else if (coltype == SQLITE_INTEGER) {
-                intval = sqlite3_column_int64(self->statement->st, i);
-                if (intval < INT32_MIN || intval > INT32_MAX) {
-                    converted = PyLong_FromLongLong(intval);
-                } else {
-                    converted = PyInt_FromLong((long)intval);
-                }
-            } else if (coltype == SQLITE_FLOAT) {
-                converted = PyFloat_FromDouble(sqlite3_column_double(self->statement->st, i));
-            } else if (coltype == SQLITE_TEXT) {
-                val_str = (const char*)sqlite3_column_text(self->statement->st, i);
-                if ((self->connection->text_factory == (PyObject*)&PyUnicode_Type)
-                    || (self->connection->text_factory == pysqlite_OptimizedUnicode)) {
-
-                    converted = pysqlite_unicode_from_string(val_str,
-                        self->connection->text_factory == pysqlite_OptimizedUnicode ? 1 : 0);
-
-                    if (!converted) {
-                        colname = sqlite3_column_name(self->statement->st, i);
-                        if (!colname) {
-                            colname = "<unknown column name>";
-                        }
-                        PyOS_snprintf(buf, sizeof(buf) - 1, "Could not decode to UTF-8 column '%s' with text '%s'",
-                                     colname , val_str);
-                        PyErr_SetString(pysqlite_OperationalError, buf);
-                    }
-                } else if (self->connection->text_factory == (PyObject*)&PyString_Type) {
-                    converted = PyString_FromString(val_str);
-                } else {
-                    converted = PyObject_CallFunction(self->connection->text_factory, "s", val_str);
-                }
-            } else {
-                /* coltype == SQLITE_BLOB */
-                nbytes = sqlite3_column_bytes(self->statement->st, i);
-                buffer = PyBuffer_New(nbytes);
-                if (!buffer) {
-                    break;
-                }
-                if (PyObject_AsWriteBuffer(buffer, &raw_buffer, &nbytes)) {
-                    break;
-                }
-                memcpy(raw_buffer, sqlite3_column_blob(self->statement->st, i), nbytes);
-                converted = buffer;
-            }
-        }
-
-        if (converted) {
-            PyTuple_SetItem(row, i, converted);
-        } else {
-            Py_INCREF(Py_None);
-            PyTuple_SetItem(row, i, Py_None);
-        }
-    }
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(row);
-        row = NULL;
-    }
-
-    return row;
-}
-
-/*
- * Checks if a cursor object is usable.
- *
- * 0 => error; 1 => ok
- */
-static int check_cursor(pysqlite_Cursor* cur)
-{
-    if (!cur->initialized) {
-        PyErr_SetString(pysqlite_ProgrammingError, "Base Cursor.__init__ not called.");
-        return 0;
-    }
-
-    if (cur->closed) {
-        PyErr_SetString(pysqlite_ProgrammingError, "Cannot operate on a closed cursor.");
-        return 0;
-    } else {
-        return pysqlite_check_thread(cur->connection) && pysqlite_check_connection(cur->connection);
-    }
-}
-
-PyObject* _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject* args)
-{
-    PyObject* operation;
-    PyObject* operation_bytestr = NULL;
-    char* operation_cstr;
-    PyObject* parameters_list = NULL;
-    PyObject* parameters_iter = NULL;
-    PyObject* parameters = NULL;
-    int i;
-    int rc;
-    PyObject* func_args;
-    PyObject* result;
-    int numcols;
-    PY_LONG_LONG lastrowid;
-    int statement_type;
-    PyObject* descriptor;
-    PyObject* second_argument = NULL;
-    int allow_8bit_chars;
-
-    if (!check_cursor(self)) {
-        return NULL;
-    }
-
-    self->reset = 0;
-
-    /* Make shooting yourself in the foot with not utf-8 decodable 8-bit-strings harder */
-    allow_8bit_chars = ((self->connection->text_factory != (PyObject*)&PyUnicode_Type) &&
-        (self->connection->text_factory != pysqlite_OptimizedUnicode));
-
-    Py_XDECREF(self->next_row);
-    self->next_row = NULL;
-
-    if (multiple) {
-        /* executemany() */
-        if (!PyArg_ParseTuple(args, "OO", &operation, &second_argument)) {
-            return NULL;
-        }
-
-        if (!PyString_Check(operation) && !PyUnicode_Check(operation)) {
-            PyErr_SetString(PyExc_ValueError, "operation parameter must be str or unicode");
-            return NULL;
-        }
-
-        if (PyIter_Check(second_argument)) {
-            /* iterator */
-            Py_INCREF(second_argument);
-            parameters_iter = second_argument;
-        } else {
-            /* sequence */
-            parameters_iter = PyObject_GetIter(second_argument);
-            if (!parameters_iter) {
-                return NULL;
-            }
-        }
-    } else {
-        /* execute() */
-        if (!PyArg_ParseTuple(args, "O|O", &operation, &second_argument)) {
-            return NULL;
-        }
-
-        if (!PyString_Check(operation) && !PyUnicode_Check(operation)) {
-            PyErr_SetString(PyExc_ValueError, "operation parameter must be str or unicode");
-            return NULL;
-        }
-
-        parameters_list = PyList_New(0);
-        if (!parameters_list) {
-            return NULL;
-        }
-
-        if (second_argument == NULL) {
-            second_argument = PyTuple_New(0);
-            if (!second_argument) {
-                goto error;
-            }
-        } else {
-            Py_INCREF(second_argument);
-        }
-        if (PyList_Append(parameters_list, second_argument) != 0) {
-            Py_DECREF(second_argument);
-            goto error;
-        }
-        Py_DECREF(second_argument);
-
-        parameters_iter = PyObject_GetIter(parameters_list);
-        if (!parameters_iter) {
-            goto error;
-        }
-    }
-
-    if (self->statement != NULL) {
-        /* There is an active statement */
-        rc = pysqlite_statement_reset(self->statement);
-    }
-
-    if (PyString_Check(operation)) {
-        operation_cstr = PyString_AsString(operation);
-    } else {
-        operation_bytestr = PyUnicode_AsUTF8String(operation);
-        if (!operation_bytestr) {
-            goto error;
-        }
-
-        operation_cstr = PyString_AsString(operation_bytestr);
-    }
-
-    /* reset description and rowcount */
-    Py_DECREF(self->description);
-    Py_INCREF(Py_None);
-    self->description = Py_None;
-    self->rowcount = -1L;
-
-    func_args = PyTuple_New(1);
-    if (!func_args) {
-        goto error;
-    }
-    Py_INCREF(operation);
-    if (PyTuple_SetItem(func_args, 0, operation) != 0) {
-        goto error;
-    }
-
-    if (self->statement) {
-        (void)pysqlite_statement_reset(self->statement);
-        Py_DECREF(self->statement);
-    }
-
-    self->statement = (pysqlite_Statement*)pysqlite_cache_get(self->connection->statement_cache, func_args);
-    Py_DECREF(func_args);
-
-    if (!self->statement) {
-        goto error;
-    }
-
-    if (self->statement->in_use) {
-        Py_DECREF(self->statement);
-        self->statement = PyObject_New(pysqlite_Statement, &pysqlite_StatementType);
-        if (!self->statement) {
-            goto error;
-        }
-        rc = pysqlite_statement_create(self->statement, self->connection, operation);
-        if (rc != SQLITE_OK) {
-            Py_CLEAR(self->statement);
-            goto error;
-        }
-    }
-
-    pysqlite_statement_reset(self->statement);
-    pysqlite_statement_mark_dirty(self->statement);
-
-    statement_type = detect_statement_type(operation_cstr);
-    if (self->connection->begin_statement) {
-        switch (statement_type) {
-            case STATEMENT_UPDATE:
-            case STATEMENT_DELETE:
-            case STATEMENT_INSERT:
-            case STATEMENT_REPLACE:
-                if (!self->connection->inTransaction) {
-                    result = _pysqlite_connection_begin(self->connection);
-                    if (!result) {
-                        goto error;
-                    }
-                    Py_DECREF(result);
-                }
-                break;
-            case STATEMENT_OTHER:
-                /* it's a DDL statement or something similar
-                   - we better COMMIT first so it works for all cases */
-                if (self->connection->inTransaction) {
-                    result = pysqlite_connection_commit(self->connection, NULL);
-                    if (!result) {
-                        goto error;
-                    }
-                    Py_DECREF(result);
-                }
-                break;
-            case STATEMENT_SELECT:
-                if (multiple) {
-                    PyErr_SetString(pysqlite_ProgrammingError,
-                                "You cannot execute SELECT statements in executemany().");
-                    goto error;
-                }
-                break;
-        }
-    }
-
-    while (1) {
-        parameters = PyIter_Next(parameters_iter);
-        if (!parameters) {
-            break;
-        }
-
-        pysqlite_statement_mark_dirty(self->statement);
-
-        pysqlite_statement_bind_parameters(self->statement, parameters, allow_8bit_chars);
-        if (PyErr_Occurred()) {
-            goto error;
-        }
-
-        /* Keep trying the SQL statement until the schema stops changing. */
-        while (1) {
-            /* Actually execute the SQL statement. */
-            rc = pysqlite_step(self->statement->st, self->connection);
-            if (rc == SQLITE_DONE ||  rc == SQLITE_ROW) {
-                /* If it worked, let's get out of the loop */
-                break;
-            }
-            /* Something went wrong.  Re-set the statement and try again. */
-            rc = pysqlite_statement_reset(self->statement);
-            if (rc == SQLITE_SCHEMA) {
-                /* If this was a result of the schema changing, let's try
-                   again. */
-                rc = pysqlite_statement_recompile(self->statement, parameters);
-                if (rc == SQLITE_OK) {
-                    continue;
-                } else {
-                    /* If the database gave us an error, promote it to Python. */
-                    (void)pysqlite_statement_reset(self->statement);
-                    _pysqlite_seterror(self->connection->db, NULL);
-                    goto error;
-                }
-            } else {
-                if (PyErr_Occurred()) {
-                    /* there was an error that occurred in a user-defined callback */
-                    if (_enable_callback_tracebacks) {
-                        PyErr_Print();
-                    } else {
-                        PyErr_Clear();
-                    }
-                }
-                (void)pysqlite_statement_reset(self->statement);
-                _pysqlite_seterror(self->connection->db, NULL);
-                goto error;
-            }
-        }
-
-        if (pysqlite_build_row_cast_map(self) != 0) {
-            PyErr_SetString(pysqlite_OperationalError, "Error while building row_cast_map");
-            goto error;
-        }
-
-        if (rc == SQLITE_ROW || (rc == SQLITE_DONE && statement_type == STATEMENT_SELECT)) {
-            if (self->description == Py_None) {
-                Py_BEGIN_ALLOW_THREADS
-                numcols = sqlite3_column_count(self->statement->st);
-                Py_END_ALLOW_THREADS
-
-                Py_DECREF(self->description);
-                self->description = PyTuple_New(numcols);
-                if (!self->description) {
-                    goto error;
-                }
-                for (i = 0; i < numcols; i++) {
-                    descriptor = PyTuple_New(7);
-                    if (!descriptor) {
-                        goto error;
-                    }
-                    PyTuple_SetItem(descriptor, 0, _pysqlite_build_column_name(sqlite3_column_name(self->statement->st, i)));
-                    Py_INCREF(Py_None); PyTuple_SetItem(descriptor, 1, Py_None);
-                    Py_INCREF(Py_None); PyTuple_SetItem(descriptor, 2, Py_None);
-                    Py_INCREF(Py_None); PyTuple_SetItem(descriptor, 3, Py_None);
-                    Py_INCREF(Py_None); PyTuple_SetItem(descriptor, 4, Py_None);
-                    Py_INCREF(Py_None); PyTuple_SetItem(descriptor, 5, Py_None);
-                    Py_INCREF(Py_None); PyTuple_SetItem(descriptor, 6, Py_None);
-                    PyTuple_SetItem(self->description, i, descriptor);
-                }
-            }
-        }
-
-        if (rc == SQLITE_ROW) {
-            if (multiple) {
-                PyErr_SetString(pysqlite_ProgrammingError, "executemany() can only execute DML statements.");
-                goto error;
-            }
-
-            self->next_row = _pysqlite_fetch_one_row(self);
-        } else if (rc == SQLITE_DONE && !multiple) {
-            pysqlite_statement_reset(self->statement);
-            Py_CLEAR(self->statement);
-        }
-
-        switch (statement_type) {
-            case STATEMENT_UPDATE:
-            case STATEMENT_DELETE:
-            case STATEMENT_INSERT:
-            case STATEMENT_REPLACE:
-                if (self->rowcount == -1L) {
-                    self->rowcount = 0L;
-                }
-                self->rowcount += (long)sqlite3_changes(self->connection->db);
-        }
-
-        Py_DECREF(self->lastrowid);
-        if (!multiple && statement_type == STATEMENT_INSERT) {
-            Py_BEGIN_ALLOW_THREADS
-            lastrowid = sqlite3_last_insert_rowid(self->connection->db);
-            Py_END_ALLOW_THREADS
-            self->lastrowid = PyInt_FromLong((long)lastrowid);
-        } else {
-            Py_INCREF(Py_None);
-            self->lastrowid = Py_None;
-        }
-
-        if (multiple) {
-            rc = pysqlite_statement_reset(self->statement);
-        }
-        Py_XDECREF(parameters);
-    }
-
-error:
-    /* just to be sure (implicit ROLLBACKs with ON CONFLICT ROLLBACK/OR
-     * ROLLBACK could have happened */
-    #ifdef SQLITE_VERSION_NUMBER
-    #if SQLITE_VERSION_NUMBER >= 3002002
-    self->connection->inTransaction = !sqlite3_get_autocommit(self->connection->db);
-    #endif
-    #endif
-
-    Py_XDECREF(operation_bytestr);
-    Py_XDECREF(parameters);
-    Py_XDECREF(parameters_iter);
-    Py_XDECREF(parameters_list);
-
-    if (PyErr_Occurred()) {
-        self->rowcount = -1L;
-        return NULL;
-    } else {
-        Py_INCREF(self);
-        return (PyObject*)self;
-    }
-}
-
-PyObject* pysqlite_cursor_execute(pysqlite_Cursor* self, PyObject* args)
-{
-    return _pysqlite_query_execute(self, 0, args);
-}
-
-PyObject* pysqlite_cursor_executemany(pysqlite_Cursor* self, PyObject* args)
-{
-    return _pysqlite_query_execute(self, 1, args);
-}
-
-PyObject* pysqlite_cursor_executescript(pysqlite_Cursor* self, PyObject* args)
-{
-    PyObject* script_obj;
-    PyObject* script_str = NULL;
-    const char* script_cstr;
-    sqlite3_stmt* statement;
-    int rc;
-    PyObject* result;
-
-    if (!PyArg_ParseTuple(args, "O", &script_obj)) {
-        return NULL;
-    }
-
-    if (!check_cursor(self)) {
-        return NULL;
-    }
-
-    self->reset = 0;
-
-    if (PyString_Check(script_obj)) {
-        script_cstr = PyString_AsString(script_obj);
-    } else if (PyUnicode_Check(script_obj)) {
-        script_str = PyUnicode_AsUTF8String(script_obj);
-        if (!script_str) {
-            return NULL;
-        }
-
-        script_cstr = PyString_AsString(script_str);
-    } else {
-        PyErr_SetString(PyExc_ValueError, "script argument must be unicode or string.");
-        return NULL;
-    }
-
-    /* commit first */
-    result = pysqlite_connection_commit(self->connection, NULL);
-    if (!result) {
-        goto error;
-    }
-    Py_DECREF(result);
-
-    while (1) {
-        Py_BEGIN_ALLOW_THREADS
-        rc = sqlite3_prepare(self->connection->db,
-                             script_cstr,
-                             -1,
-                             &statement,
-                             &script_cstr);
-        Py_END_ALLOW_THREADS
-        if (rc != SQLITE_OK) {
-            _pysqlite_seterror(self->connection->db, NULL);
-            goto error;
-        }
-
-        /* execute statement, and ignore results of SELECT statements */
-        rc = SQLITE_ROW;
-        while (rc == SQLITE_ROW) {
-            rc = pysqlite_step(statement, self->connection);
-            /* TODO: we probably need more error handling here */
-        }
-
-        if (rc != SQLITE_DONE) {
-            (void)sqlite3_finalize(statement);
-            _pysqlite_seterror(self->connection->db, NULL);
-            goto error;
-        }
-
-        rc = sqlite3_finalize(statement);
-        if (rc != SQLITE_OK) {
-            _pysqlite_seterror(self->connection->db, NULL);
-            goto error;
-        }
-
-        if (*script_cstr == (char)0) {
-            break;
-        }
-    }
-
-error:
-    Py_XDECREF(script_str);
-
-    if (PyErr_Occurred()) {
-        return NULL;
-    } else {
-        Py_INCREF(self);
-        return (PyObject*)self;
-    }
-}
-
-PyObject* pysqlite_cursor_getiter(pysqlite_Cursor *self)
-{
-    Py_INCREF(self);
-    return (PyObject*)self;
-}
-
-PyObject* pysqlite_cursor_iternext(pysqlite_Cursor *self)
-{
-    PyObject* next_row_tuple;
-    PyObject* next_row;
-    int rc;
-
-    if (!check_cursor(self)) {
-        return NULL;
-    }
-
-    if (self->reset) {
-        PyErr_SetString(pysqlite_InterfaceError, errmsg_fetch_across_rollback);
-        return NULL;
-    }
-
-    if (!self->next_row) {
-         if (self->statement) {
-            (void)pysqlite_statement_reset(self->statement);
-            Py_DECREF(self->statement);
-            self->statement = NULL;
-        }
-        return NULL;
-    }
-
-    next_row_tuple = self->next_row;
-    self->next_row = NULL;
-
-    if (self->row_factory != Py_None) {
-        next_row = PyObject_CallFunction(self->row_factory, "OO", self, next_row_tuple);
-        Py_DECREF(next_row_tuple);
-    } else {
-        next_row = next_row_tuple;
-    }
-
-    if (self->statement) {
-        rc = pysqlite_step(self->statement->st, self->connection);
-        if (rc != SQLITE_DONE && rc != SQLITE_ROW) {
-            (void)pysqlite_statement_reset(self->statement);
-            Py_DECREF(next_row);
-            _pysqlite_seterror(self->connection->db, NULL);
-            return NULL;
-        }
-
-        if (rc == SQLITE_ROW) {
-            self->next_row = _pysqlite_fetch_one_row(self);
-        }
-    }
-
-    return next_row;
-}
-
-PyObject* pysqlite_cursor_fetchone(pysqlite_Cursor* self, PyObject* args)
-{
-    PyObject* row;
-
-    row = pysqlite_cursor_iternext(self);
-    if (!row && !PyErr_Occurred()) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-
-    return row;
-}
-
-PyObject* pysqlite_cursor_fetchmany(pysqlite_Cursor* self, PyObject* args, PyObject* kwargs)
-{
-    static char *kwlist[] = {"size", NULL, NULL};
-
-    PyObject* row;
-    PyObject* list;
-    int maxrows = self->arraysize;
-    int counter = 0;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:fetchmany", kwlist, &maxrows)) {
-        return NULL;
-    }
-
-    list = PyList_New(0);
-    if (!list) {
-        return NULL;
-    }
-
-    /* just make sure we enter the loop */
-    row = Py_None;
-
-    while (row) {
-        row = pysqlite_cursor_iternext(self);
-        if (row) {
-            PyList_Append(list, row);
-            Py_DECREF(row);
-        } else {
-            break;
-        }
-
-        if (++counter == maxrows) {
-            break;
-        }
-    }
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(list);
-        return NULL;
-    } else {
-        return list;
-    }
-}
-
-PyObject* pysqlite_cursor_fetchall(pysqlite_Cursor* self, PyObject* args)
-{
-    PyObject* row;
-    PyObject* list;
-
-    list = PyList_New(0);
-    if (!list) {
-        return NULL;
-    }
-
-    /* just make sure we enter the loop */
-    row = (PyObject*)Py_None;
-
-    while (row) {
-        row = pysqlite_cursor_iternext(self);
-        if (row) {
-            PyList_Append(list, row);
-            Py_DECREF(row);
-        }
-    }
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(list);
-        return NULL;
-    } else {
-        return list;
-    }
-}
-
-PyObject* pysqlite_noop(pysqlite_Connection* self, PyObject* args)
-{
-    /* don't care, return None */
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyObject* pysqlite_cursor_close(pysqlite_Cursor* self, PyObject* args)
-{
-    if (!pysqlite_check_thread(self->connection) || !pysqlite_check_connection(self->connection)) {
-        return NULL;
-    }
-
-    if (self->statement) {
-        (void)pysqlite_statement_reset(self->statement);
-        Py_CLEAR(self->statement);
-    }
-
-    self->closed = 1;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyMethodDef cursor_methods[] = {
-    {"execute", (PyCFunction)pysqlite_cursor_execute, METH_VARARGS,
-        PyDoc_STR("Executes a SQL statement.")},
-    {"executemany", (PyCFunction)pysqlite_cursor_executemany, METH_VARARGS,
-        PyDoc_STR("Repeatedly executes a SQL statement.")},
-    {"executescript", (PyCFunction)pysqlite_cursor_executescript, METH_VARARGS,
-        PyDoc_STR("Executes a multiple SQL statements at once. Non-standard.")},
-    {"fetchone", (PyCFunction)pysqlite_cursor_fetchone, METH_NOARGS,
-        PyDoc_STR("Fetches one row from the resultset.")},
-    {"fetchmany", (PyCFunction)pysqlite_cursor_fetchmany, METH_VARARGS|METH_KEYWORDS,
-        PyDoc_STR("Fetches several rows from the resultset.")},
-    {"fetchall", (PyCFunction)pysqlite_cursor_fetchall, METH_NOARGS,
-        PyDoc_STR("Fetches all rows from the resultset.")},
-    {"close", (PyCFunction)pysqlite_cursor_close, METH_NOARGS,
-        PyDoc_STR("Closes the cursor.")},
-    {"setinputsizes", (PyCFunction)pysqlite_noop, METH_VARARGS,
-        PyDoc_STR("Required by DB-API. Does nothing in pysqlite.")},
-    {"setoutputsize", (PyCFunction)pysqlite_noop, METH_VARARGS,
-        PyDoc_STR("Required by DB-API. Does nothing in pysqlite.")},
-    {NULL, NULL}
-};
-
-static struct PyMemberDef cursor_members[] =
-{
-    {"connection", T_OBJECT, offsetof(pysqlite_Cursor, connection), RO},
-    {"description", T_OBJECT, offsetof(pysqlite_Cursor, description), RO},
-    {"arraysize", T_INT, offsetof(pysqlite_Cursor, arraysize), 0},
-    {"lastrowid", T_OBJECT, offsetof(pysqlite_Cursor, lastrowid), RO},
-    {"rowcount", T_LONG, offsetof(pysqlite_Cursor, rowcount), RO},
-    {"row_factory", T_OBJECT, offsetof(pysqlite_Cursor, row_factory), 0},
-    {NULL}
-};
-
-static char cursor_doc[] =
-PyDoc_STR("SQLite database cursor class.");
-
-PyTypeObject pysqlite_CursorType = {
-        PyVarObject_HEAD_INIT(NULL, 0)
-        MODULE_NAME ".Cursor",                          /* tp_name */
-        sizeof(pysqlite_Cursor),                        /* tp_basicsize */
-        0,                                              /* tp_itemsize */
-        (destructor)pysqlite_cursor_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 */
-        Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_ITER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_WEAKREFS, /* tp_flags */
-        cursor_doc,                                     /* tp_doc */
-        0,                                              /* tp_traverse */
-        0,                                              /* tp_clear */
-        0,                                              /* tp_richcompare */
-        offsetof(pysqlite_Cursor, in_weakreflist),      /* tp_weaklistoffset */
-        (getiterfunc)pysqlite_cursor_getiter,           /* tp_iter */
-        (iternextfunc)pysqlite_cursor_iternext,         /* tp_iternext */
-        cursor_methods,                                 /* tp_methods */
-        cursor_members,                                 /* tp_members */
-        0,                                              /* tp_getset */
-        0,                                              /* tp_base */
-        0,                                              /* tp_dict */
-        0,                                              /* tp_descr_get */
-        0,                                              /* tp_descr_set */
-        0,                                              /* tp_dictoffset */
-        (initproc)pysqlite_cursor_init,                 /* tp_init */
-        0,                                              /* tp_alloc */
-        0,                                              /* tp_new */
-        0                                               /* tp_free */
-};
-
-extern int pysqlite_cursor_setup_types(void)
-{
-    pysqlite_CursorType.tp_new = PyType_GenericNew;
-    return PyType_Ready(&pysqlite_CursorType);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cursor.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cursor.h
deleted file mode 100644
index a7c5579..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/cursor.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* cursor.h - definitions for the cursor type
- *
- * Copyright (C) 2004-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#ifndef PYSQLITE_CURSOR_H
-#define PYSQLITE_CURSOR_H
-#include "Python.h"
-
-#include "statement.h"
-#include "connection.h"
-#include "module.h"
-
-typedef struct
-{
-    PyObject_HEAD
-    pysqlite_Connection* connection;
-    PyObject* description;
-    PyObject* row_cast_map;
-    int arraysize;
-    PyObject* lastrowid;
-    long rowcount;
-    PyObject* row_factory;
-    pysqlite_Statement* statement;
-    int closed;
-    int reset;
-    int initialized;
-
-    /* the next row to be returned, NULL if no next row available */
-    PyObject* next_row;
-
-    PyObject* in_weakreflist; /* List of weak references */
-} pysqlite_Cursor;
-
-typedef enum {
-    STATEMENT_INVALID, STATEMENT_INSERT, STATEMENT_DELETE,
-    STATEMENT_UPDATE, STATEMENT_REPLACE, STATEMENT_SELECT,
-    STATEMENT_OTHER
-} pysqlite_StatementKind;
-
-extern PyTypeObject pysqlite_CursorType;
-
-PyObject* pysqlite_cursor_execute(pysqlite_Cursor* self, PyObject* args);
-PyObject* pysqlite_cursor_executemany(pysqlite_Cursor* self, PyObject* args);
-PyObject* pysqlite_cursor_getiter(pysqlite_Cursor *self);
-PyObject* pysqlite_cursor_iternext(pysqlite_Cursor *self);
-PyObject* pysqlite_cursor_fetchone(pysqlite_Cursor* self, PyObject* args);
-PyObject* pysqlite_cursor_fetchmany(pysqlite_Cursor* self, PyObject* args, PyObject* kwargs);
-PyObject* pysqlite_cursor_fetchall(pysqlite_Cursor* self, PyObject* args);
-PyObject* pysqlite_noop(pysqlite_Connection* self, PyObject* args);
-PyObject* pysqlite_cursor_close(pysqlite_Cursor* self, PyObject* args);
-
-int pysqlite_cursor_setup_types(void);
-
-#define UNKNOWN (-1)
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/microprotocols.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/microprotocols.c
deleted file mode 100644
index 9a392b5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/microprotocols.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* microprotocols.c - minimalist and non-validating protocols implementation
- *
- * Copyright (C) 2003-2004 Federico Di Gregorio <fog@debian.org>
- *
- * This file is part of psycopg and was adapted for pysqlite. Federico Di
- * Gregorio gave the permission to use it within pysqlite under the following
- * license:
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#include <Python.h>
-#include <structmember.h>
-
-#include "cursor.h"
-#include "microprotocols.h"
-#include "prepare_protocol.h"
-
-
-/** the adapters registry **/
-
-PyObject *psyco_adapters;
-
-/* pysqlite_microprotocols_init - initialize the adapters dictionary */
-
-int
-pysqlite_microprotocols_init(PyObject *dict)
-{
-    /* create adapters dictionary and put it in module namespace */
-    if ((psyco_adapters = PyDict_New()) == NULL) {
-        return -1;
-    }
-
-    return PyDict_SetItemString(dict, "adapters", psyco_adapters);
-}
-
-
-/* pysqlite_microprotocols_add - add a reverse type-caster to the dictionary */
-
-int
-pysqlite_microprotocols_add(PyTypeObject *type, PyObject *proto, PyObject *cast)
-{
-    PyObject* key;
-    int rc;
-
-    if (proto == NULL) proto = (PyObject*)&pysqlite_PrepareProtocolType;
-
-    key = Py_BuildValue("(OO)", (PyObject*)type, proto);
-    if (!key) {
-        return -1;
-    }
-
-    rc = PyDict_SetItem(psyco_adapters, key, cast);
-    Py_DECREF(key);
-
-    return rc;
-}
-
-/* pysqlite_microprotocols_adapt - adapt an object to the built-in protocol */
-
-PyObject *
-pysqlite_microprotocols_adapt(PyObject *obj, PyObject *proto, PyObject *alt)
-{
-    PyObject *adapter, *key;
-
-    /* we don't check for exact type conformance as specified in PEP 246
-       because the pysqlite_PrepareProtocolType type is abstract and there is no
-       way to get a quotable object to be its instance */
-
-    /* look for an adapter in the registry */
-    key = Py_BuildValue("(OO)", (PyObject*)obj->ob_type, proto);
-    if (!key) {
-        return NULL;
-    }
-    adapter = PyDict_GetItem(psyco_adapters, key);
-    Py_DECREF(key);
-    if (adapter) {
-        PyObject *adapted = PyObject_CallFunctionObjArgs(adapter, obj, NULL);
-        return adapted;
-    }
-
-    /* try to have the protocol adapt this object*/
-    if (PyObject_HasAttrString(proto, "__adapt__")) {
-        PyObject *adapted = PyObject_CallMethod(proto, "__adapt__", "O", obj);
-        if (adapted) {
-            if (adapted != Py_None) {
-                return adapted;
-            } else {
-                Py_DECREF(adapted);
-            }
-        }
-
-        if (PyErr_Occurred() && !PyErr_ExceptionMatches(PyExc_TypeError))
-            return NULL;
-    }
-
-    /* and finally try to have the object adapt itself */
-    if (PyObject_HasAttrString(obj, "__conform__")) {
-        PyObject *adapted = PyObject_CallMethod(obj, "__conform__","O", proto);
-        if (adapted) {
-            if (adapted != Py_None) {
-                return adapted;
-            } else {
-                Py_DECREF(adapted);
-            }
-        }
-
-        if (PyErr_Occurred() && !PyErr_ExceptionMatches(PyExc_TypeError)) {
-            return NULL;
-        }
-    }
-
-    /* else set the right exception and return NULL */
-    PyErr_SetString(pysqlite_ProgrammingError, "can't adapt");
-    return NULL;
-}
-
-/** module-level functions **/
-
-PyObject *
-pysqlite_adapt(pysqlite_Cursor *self, PyObject *args)
-{
-    PyObject *obj, *alt = NULL;
-    PyObject *proto = (PyObject*)&pysqlite_PrepareProtocolType;
-
-    if (!PyArg_ParseTuple(args, "O|OO", &obj, &proto, &alt)) return NULL;
-    return pysqlite_microprotocols_adapt(obj, proto, alt);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/microprotocols.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/microprotocols.h
deleted file mode 100644
index bc80f15..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/microprotocols.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* microprotocols.c - definitions for minimalist and non-validating protocols
- *
- * Copyright (C) 2003-2004 Federico Di Gregorio <fog@debian.org>
- *
- * This file is part of psycopg and was adapted for pysqlite. Federico Di
- * Gregorio gave the permission to use it within pysqlite under the following
- * license:
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#ifndef PSYCOPG_MICROPROTOCOLS_H
-#define PSYCOPG_MICROPROTOCOLS_H 1
-
-#include <Python.h>
-
-/** adapters registry **/
-
-extern PyObject *psyco_adapters;
-
-/** the names of the three mandatory methods **/
-
-#define MICROPROTOCOLS_GETQUOTED_NAME "getquoted"
-#define MICROPROTOCOLS_GETSTRING_NAME "getstring"
-#define MICROPROTOCOLS_GETBINARY_NAME "getbinary"
-
-/** exported functions **/
-
-/* used by module.c to init the microprotocols system */
-extern int pysqlite_microprotocols_init(PyObject *dict);
-extern int pysqlite_microprotocols_add(
-    PyTypeObject *type, PyObject *proto, PyObject *cast);
-extern PyObject *pysqlite_microprotocols_adapt(
-    PyObject *obj, PyObject *proto, PyObject *alt);
-
-extern PyObject *
-    pysqlite_adapt(pysqlite_Cursor* self, PyObject *args);   
-#define pysqlite_adapt_doc \
-    "adapt(obj, protocol, alternate) -> adapt obj to given protocol. Non-standard."
-
-#endif /* !defined(PSYCOPG_MICROPROTOCOLS_H) */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/module.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/module.c
deleted file mode 100644
index 12c85c6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/module.c
+++ /dev/null
@@ -1,457 +0,0 @@
-/* module.c - the module itself
- *
- * Copyright (C) 2004-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#include "connection.h"
-#include "statement.h"
-#include "cursor.h"
-#include "cache.h"
-#include "prepare_protocol.h"
-#include "microprotocols.h"
-#include "row.h"
-
-#if SQLITE_VERSION_NUMBER >= 3003003
-#define HAVE_SHARED_CACHE
-#endif
-
-/* static objects at module-level */
-
-PyObject* pysqlite_Error, *pysqlite_Warning, *pysqlite_InterfaceError, *pysqlite_DatabaseError,
-    *pysqlite_InternalError, *pysqlite_OperationalError, *pysqlite_ProgrammingError,
-    *pysqlite_IntegrityError, *pysqlite_DataError, *pysqlite_NotSupportedError, *pysqlite_OptimizedUnicode;
-
-PyObject* converters;
-int _enable_callback_tracebacks;
-int pysqlite_BaseTypeAdapted;
-
-static PyObject* module_connect(PyObject* self, PyObject* args, PyObject*
-        kwargs)
-{
-    /* Python seems to have no way of extracting a single keyword-arg at
-     * C-level, so this code is redundant with the one in connection_init in
-     * connection.c and must always be copied from there ... */
-
-    static char *kwlist[] = {"database", "timeout", "detect_types", "isolation_level", "check_same_thread", "factory", "cached_statements", NULL, NULL};
-    PyObject* database;
-    int detect_types = 0;
-    PyObject* isolation_level;
-    PyObject* factory = NULL;
-    int check_same_thread = 1;
-    int cached_statements;
-    double timeout = 5.0;
-
-    PyObject* result;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|diOiOi", kwlist,
-                                     &database, &timeout, &detect_types, &isolation_level, &check_same_thread, &factory, &cached_statements))
-    {
-        return NULL; 
-    }
-
-    if (factory == NULL) {
-        factory = (PyObject*)&pysqlite_ConnectionType;
-    }
-
-    result = PyObject_Call(factory, args, kwargs);
-
-    return result;
-}
-
-PyDoc_STRVAR(module_connect_doc,
-"connect(database[, timeout, isolation_level, detect_types, factory])\n\
-\n\
-Opens a connection to the SQLite database file *database*. You can use\n\
-\":memory:\" to open a database connection to a database that resides in\n\
-RAM instead of on disk.");
-
-static PyObject* module_complete(PyObject* self, PyObject* args, PyObject*
-        kwargs)
-{
-    static char *kwlist[] = {"statement", NULL, NULL};
-    char* statement;
-
-    PyObject* result;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s", kwlist, &statement))
-    {
-        return NULL; 
-    }
-
-    if (sqlite3_complete(statement)) {
-        result = Py_True;
-    } else {
-        result = Py_False;
-    }
-
-    Py_INCREF(result);
-
-    return result;
-}
-
-PyDoc_STRVAR(module_complete_doc,
-"complete_statement(sql)\n\
-\n\
-Checks if a string contains a complete SQL statement. Non-standard.");
-
-#ifdef HAVE_SHARED_CACHE
-static PyObject* module_enable_shared_cache(PyObject* self, PyObject* args, PyObject*
-        kwargs)
-{
-    static char *kwlist[] = {"do_enable", NULL, NULL};
-    int do_enable;
-    int rc;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i", kwlist, &do_enable))
-    {
-        return NULL; 
-    }
-
-    rc = sqlite3_enable_shared_cache(do_enable);
-
-    if (rc != SQLITE_OK) {
-        PyErr_SetString(pysqlite_OperationalError, "Changing the shared_cache flag failed");
-        return NULL;
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-
-PyDoc_STRVAR(module_enable_shared_cache_doc,
-"enable_shared_cache(do_enable)\n\
-\n\
-Enable or disable shared cache mode for the calling thread.\n\
-Experimental/Non-standard.");
-#endif /* HAVE_SHARED_CACHE */
-
-static PyObject* module_register_adapter(PyObject* self, PyObject* args)
-{
-    PyTypeObject* type;
-    PyObject* caster;
-    int rc;
-
-    if (!PyArg_ParseTuple(args, "OO", &type, &caster)) {
-        return NULL;
-    }
-
-    /* a basic type is adapted; there's a performance optimization if that's not the case
-     * (99 % of all usages) */
-    if (type == &PyInt_Type || type == &PyLong_Type || type == &PyFloat_Type
-            || type == &PyString_Type || type == &PyUnicode_Type || type == &PyBuffer_Type) {
-        pysqlite_BaseTypeAdapted = 1;
-    }
-
-    rc = pysqlite_microprotocols_add(type, (PyObject*)&pysqlite_PrepareProtocolType, caster);
-    if (rc == -1)
-        return NULL;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(module_register_adapter_doc,
-"register_adapter(type, callable)\n\
-\n\
-Registers an adapter with pysqlite's adapter registry. Non-standard.");
-
-static PyObject* module_register_converter(PyObject* self, PyObject* args)
-{
-    PyObject* orig_name;
-    PyObject* name = NULL;
-    PyObject* callable;
-    PyObject* retval = NULL;
-
-    if (!PyArg_ParseTuple(args, "SO", &orig_name, &callable)) {
-        return NULL;
-    }
-
-    /* convert the name to upper case */
-    name = PyObject_CallMethod(orig_name, "upper", "");
-    if (!name) {
-        goto error;
-    }
-
-    if (PyDict_SetItem(converters, name, callable) != 0) {
-        goto error;
-    }
-
-    Py_INCREF(Py_None);
-    retval = Py_None;
-error:
-    Py_XDECREF(name);
-    return retval;
-}
-
-PyDoc_STRVAR(module_register_converter_doc,
-"register_converter(typename, callable)\n\
-\n\
-Registers a converter with pysqlite. Non-standard.");
-
-static PyObject* enable_callback_tracebacks(PyObject* self, PyObject* args)
-{
-    if (!PyArg_ParseTuple(args, "i", &_enable_callback_tracebacks)) {
-        return NULL;
-    }
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(enable_callback_tracebacks_doc,
-"enable_callback_tracebacks(flag)\n\
-\n\
-Enable or disable callback functions throwing errors to stderr.");
-
-static void converters_init(PyObject* dict)
-{
-    converters = PyDict_New();
-    if (!converters) {
-        return;
-    }
-
-    PyDict_SetItemString(dict, "converters", converters);
-}
-
-static PyMethodDef module_methods[] = {
-    {"connect",  (PyCFunction)module_connect,
-     METH_VARARGS | METH_KEYWORDS, module_connect_doc},
-    {"complete_statement",  (PyCFunction)module_complete,
-     METH_VARARGS | METH_KEYWORDS, module_complete_doc},
-#ifdef HAVE_SHARED_CACHE
-    {"enable_shared_cache",  (PyCFunction)module_enable_shared_cache,
-     METH_VARARGS | METH_KEYWORDS, module_enable_shared_cache_doc},
-#endif
-    {"register_adapter", (PyCFunction)module_register_adapter,
-     METH_VARARGS, module_register_adapter_doc},
-    {"register_converter", (PyCFunction)module_register_converter,
-     METH_VARARGS, module_register_converter_doc},
-    {"adapt",  (PyCFunction)pysqlite_adapt, METH_VARARGS,
-     pysqlite_adapt_doc},
-    {"enable_callback_tracebacks",  (PyCFunction)enable_callback_tracebacks,
-     METH_VARARGS, enable_callback_tracebacks_doc},
-    {NULL, NULL}
-};
-
-struct _IntConstantPair {
-    char* constant_name;
-    int constant_value;
-};
-
-typedef struct _IntConstantPair IntConstantPair;
-
-static IntConstantPair _int_constants[] = {
-    {"PARSE_DECLTYPES", PARSE_DECLTYPES},
-    {"PARSE_COLNAMES", PARSE_COLNAMES},
-
-    {"SQLITE_OK", SQLITE_OK},
-    {"SQLITE_DENY", SQLITE_DENY},
-    {"SQLITE_IGNORE", SQLITE_IGNORE},
-    {"SQLITE_CREATE_INDEX", SQLITE_CREATE_INDEX},
-    {"SQLITE_CREATE_TABLE", SQLITE_CREATE_TABLE},
-    {"SQLITE_CREATE_TEMP_INDEX", SQLITE_CREATE_TEMP_INDEX},
-    {"SQLITE_CREATE_TEMP_TABLE", SQLITE_CREATE_TEMP_TABLE},
-    {"SQLITE_CREATE_TEMP_TRIGGER", SQLITE_CREATE_TEMP_TRIGGER},
-    {"SQLITE_CREATE_TEMP_VIEW", SQLITE_CREATE_TEMP_VIEW},
-    {"SQLITE_CREATE_TRIGGER", SQLITE_CREATE_TRIGGER},
-    {"SQLITE_CREATE_VIEW", SQLITE_CREATE_VIEW},
-    {"SQLITE_DELETE", SQLITE_DELETE},
-    {"SQLITE_DROP_INDEX", SQLITE_DROP_INDEX},
-    {"SQLITE_DROP_TABLE", SQLITE_DROP_TABLE},
-    {"SQLITE_DROP_TEMP_INDEX", SQLITE_DROP_TEMP_INDEX},
-    {"SQLITE_DROP_TEMP_TABLE", SQLITE_DROP_TEMP_TABLE},
-    {"SQLITE_DROP_TEMP_TRIGGER", SQLITE_DROP_TEMP_TRIGGER},
-    {"SQLITE_DROP_TEMP_VIEW", SQLITE_DROP_TEMP_VIEW},
-    {"SQLITE_DROP_TRIGGER", SQLITE_DROP_TRIGGER},
-    {"SQLITE_DROP_VIEW", SQLITE_DROP_VIEW},
-    {"SQLITE_INSERT", SQLITE_INSERT},
-    {"SQLITE_PRAGMA", SQLITE_PRAGMA},
-    {"SQLITE_READ", SQLITE_READ},
-    {"SQLITE_SELECT", SQLITE_SELECT},
-    {"SQLITE_TRANSACTION", SQLITE_TRANSACTION},
-    {"SQLITE_UPDATE", SQLITE_UPDATE},
-    {"SQLITE_ATTACH", SQLITE_ATTACH},
-    {"SQLITE_DETACH", SQLITE_DETACH},
-#if SQLITE_VERSION_NUMBER >= 3002001
-    {"SQLITE_ALTER_TABLE", SQLITE_ALTER_TABLE},
-    {"SQLITE_REINDEX", SQLITE_REINDEX},
-#endif
-#if SQLITE_VERSION_NUMBER >= 3003000
-    {"SQLITE_ANALYZE", SQLITE_ANALYZE},
-#endif
-    {(char*)NULL, 0}
-};
-
-PyMODINIT_FUNC init_sqlite3(void)
-{
-    PyObject *module, *dict;
-    PyObject *tmp_obj;
-    int i;
-
-    module = Py_InitModule("_sqlite3", module_methods);
-
-    if (!module ||
-        (pysqlite_row_setup_types() < 0) ||
-        (pysqlite_cursor_setup_types() < 0) ||
-        (pysqlite_connection_setup_types() < 0) ||
-        (pysqlite_cache_setup_types() < 0) ||
-        (pysqlite_statement_setup_types() < 0) ||
-        (pysqlite_prepare_protocol_setup_types() < 0)
-       ) {
-        return;
-    }
-
-    Py_INCREF(&pysqlite_ConnectionType);
-    PyModule_AddObject(module, "Connection", (PyObject*) &pysqlite_ConnectionType);
-    Py_INCREF(&pysqlite_CursorType);
-    PyModule_AddObject(module, "Cursor", (PyObject*) &pysqlite_CursorType);
-    Py_INCREF(&pysqlite_CacheType);
-    PyModule_AddObject(module, "Statement", (PyObject*)&pysqlite_StatementType);
-    Py_INCREF(&pysqlite_StatementType);
-    PyModule_AddObject(module, "Cache", (PyObject*) &pysqlite_CacheType);
-    Py_INCREF(&pysqlite_PrepareProtocolType);
-    PyModule_AddObject(module, "PrepareProtocol", (PyObject*) &pysqlite_PrepareProtocolType);
-    Py_INCREF(&pysqlite_RowType);
-    PyModule_AddObject(module, "Row", (PyObject*) &pysqlite_RowType);
-
-    if (!(dict = PyModule_GetDict(module))) {
-        goto error;
-    }
-
-    /*** Create DB-API Exception hierarchy */
-
-    if (!(pysqlite_Error = PyErr_NewException(MODULE_NAME ".Error", PyExc_StandardError, NULL))) {
-        goto error;
-    }
-    PyDict_SetItemString(dict, "Error", pysqlite_Error);
-
-    if (!(pysqlite_Warning = PyErr_NewException(MODULE_NAME ".Warning", PyExc_StandardError, NULL))) {
-        goto error;
-    }
-    PyDict_SetItemString(dict, "Warning", pysqlite_Warning);
-
-    /* Error subclasses */
-
-    if (!(pysqlite_InterfaceError = PyErr_NewException(MODULE_NAME ".InterfaceError", pysqlite_Error, NULL))) {
-        goto error;
-    }
-    PyDict_SetItemString(dict, "InterfaceError", pysqlite_InterfaceError);
-
-    if (!(pysqlite_DatabaseError = PyErr_NewException(MODULE_NAME ".DatabaseError", pysqlite_Error, NULL))) {
-        goto error;
-    }
-    PyDict_SetItemString(dict, "DatabaseError", pysqlite_DatabaseError);
-
-    /* pysqlite_DatabaseError subclasses */
-
-    if (!(pysqlite_InternalError = PyErr_NewException(MODULE_NAME ".InternalError", pysqlite_DatabaseError, NULL))) {
-        goto error;
-    }
-    PyDict_SetItemString(dict, "InternalError", pysqlite_InternalError);
-
-    if (!(pysqlite_OperationalError = PyErr_NewException(MODULE_NAME ".OperationalError", pysqlite_DatabaseError, NULL))) {
-        goto error;
-    }
-    PyDict_SetItemString(dict, "OperationalError", pysqlite_OperationalError);
-
-    if (!(pysqlite_ProgrammingError = PyErr_NewException(MODULE_NAME ".ProgrammingError", pysqlite_DatabaseError, NULL))) {
-        goto error;
-    }
-    PyDict_SetItemString(dict, "ProgrammingError", pysqlite_ProgrammingError);
-
-    if (!(pysqlite_IntegrityError = PyErr_NewException(MODULE_NAME ".IntegrityError", pysqlite_DatabaseError,NULL))) {
-        goto error;
-    }
-    PyDict_SetItemString(dict, "IntegrityError", pysqlite_IntegrityError);
-
-    if (!(pysqlite_DataError = PyErr_NewException(MODULE_NAME ".DataError", pysqlite_DatabaseError, NULL))) {
-        goto error;
-    }
-    PyDict_SetItemString(dict, "DataError", pysqlite_DataError);
-
-    if (!(pysqlite_NotSupportedError = PyErr_NewException(MODULE_NAME ".NotSupportedError", pysqlite_DatabaseError, NULL))) {
-        goto error;
-    }
-    PyDict_SetItemString(dict, "NotSupportedError", pysqlite_NotSupportedError);
-
-    /* We just need "something" unique for pysqlite_OptimizedUnicode. It does not really
-     * need to be a string subclass. Just anything that can act as a special
-     * marker for us. So I pulled PyCell_Type out of my magic hat.
-     */
-    Py_INCREF((PyObject*)&PyCell_Type);
-    pysqlite_OptimizedUnicode = (PyObject*)&PyCell_Type;
-    PyDict_SetItemString(dict, "OptimizedUnicode", pysqlite_OptimizedUnicode);
-
-    /* Set integer constants */
-    for (i = 0; _int_constants[i].constant_name != 0; i++) {
-        tmp_obj = PyInt_FromLong(_int_constants[i].constant_value);
-        if (!tmp_obj) {
-            goto error;
-        }
-        PyDict_SetItemString(dict, _int_constants[i].constant_name, tmp_obj);
-        Py_DECREF(tmp_obj);
-    }
-
-    if (!(tmp_obj = PyString_FromString(PYSQLITE_VERSION))) {
-        goto error;
-    }
-    PyDict_SetItemString(dict, "version", tmp_obj);
-    Py_DECREF(tmp_obj);
-
-    if (!(tmp_obj = PyString_FromString(sqlite3_libversion()))) {
-        goto error;
-    }
-    PyDict_SetItemString(dict, "sqlite_version", tmp_obj);
-    Py_DECREF(tmp_obj);
-
-    /* initialize microprotocols layer */
-    pysqlite_microprotocols_init(dict);
-
-    /* initialize the default converters */
-    converters_init(dict);
-
-    _enable_callback_tracebacks = 0;
-
-    pysqlite_BaseTypeAdapted = 0;
-
-    /* Original comment from _bsddb.c in the Python core. This is also still
-     * needed nowadays for Python 2.3/2.4.
-     * 
-     * PyEval_InitThreads is called here due to a quirk in python 1.5
-     * - 2.2.1 (at least) according to Russell Williamson <merel@wt.net>:
-     * The global interpreter lock is not initialized until the first
-     * thread is created using thread.start_new_thread() or fork() is
-     * called.  that would cause the ALLOW_THREADS here to segfault due
-     * to a null pointer reference if no threads or child processes
-     * have been created.  This works around that and is a no-op if
-     * threads have already been initialized.
-     *  (see pybsddb-users mailing list post on 2002-08-07)
-     */
-#ifdef WITH_THREAD
-    PyEval_InitThreads();
-#endif
-
-error:
-    if (PyErr_Occurred())
-    {
-        PyErr_SetString(PyExc_ImportError, MODULE_NAME ": init failed");
-    }
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/module.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/module.h
deleted file mode 100644
index a23214b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/module.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* module.h - definitions for the module
- *
- * Copyright (C) 2004-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#ifndef PYSQLITE_MODULE_H
-#define PYSQLITE_MODULE_H
-#include "Python.h"
-
-#define PYSQLITE_VERSION "2.6.0"
-
-extern PyObject* pysqlite_Error;
-extern PyObject* pysqlite_Warning;
-extern PyObject* pysqlite_InterfaceError;
-extern PyObject* pysqlite_DatabaseError;
-extern PyObject* pysqlite_InternalError;
-extern PyObject* pysqlite_OperationalError;
-extern PyObject* pysqlite_ProgrammingError;
-extern PyObject* pysqlite_IntegrityError;
-extern PyObject* pysqlite_DataError;
-extern PyObject* pysqlite_NotSupportedError;
-
-extern PyObject* pysqlite_OptimizedUnicode;
-
-/* the functions time.time() and time.sleep() */
-extern PyObject* time_time;
-extern PyObject* time_sleep;
-
-/* A dictionary, mapping colum types (INTEGER, VARCHAR, etc.) to converter
- * functions, that convert the SQL value to the appropriate Python value.
- * The key is uppercase.
- */
-extern PyObject* converters;
-
-extern int _enable_callback_tracebacks;
-extern int pysqlite_BaseTypeAdapted;
-
-#define PARSE_DECLTYPES 1
-#define PARSE_COLNAMES 2
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/prepare_protocol.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/prepare_protocol.c
deleted file mode 100644
index 80a311a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/prepare_protocol.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* prepare_protocol.c - the protocol for preparing values for SQLite
- *
- * Copyright (C) 2005-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#include "sqlitecompat.h"
-#include "prepare_protocol.h"
-
-int pysqlite_prepare_protocol_init(pysqlite_PrepareProtocol* self, PyObject* args, PyObject* kwargs)
-{
-    return 0;
-}
-
-void pysqlite_prepare_protocol_dealloc(pysqlite_PrepareProtocol* self)
-{
-    Py_TYPE(self)->tp_free((PyObject*)self);
-}
-
-PyTypeObject pysqlite_PrepareProtocolType= {
-        PyVarObject_HEAD_INIT(NULL, 0)
-        MODULE_NAME ".PrepareProtocol",                 /* tp_name */
-        sizeof(pysqlite_PrepareProtocol),               /* tp_basicsize */
-        0,                                              /* tp_itemsize */
-        (destructor)pysqlite_prepare_protocol_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 */
-        Py_TPFLAGS_DEFAULT,                             /* tp_flags */
-        0,                                              /* tp_doc */
-        0,                                              /* tp_traverse */
-        0,                                              /* tp_clear */
-        0,                                              /* tp_richcompare */
-        0,                                              /* tp_weaklistoffset */
-        0,                                              /* tp_iter */
-        0,                                              /* tp_iternext */
-        0,                                              /* tp_methods */
-        0,                                              /* tp_members */
-        0,                                              /* tp_getset */
-        0,                                              /* tp_base */
-        0,                                              /* tp_dict */
-        0,                                              /* tp_descr_get */
-        0,                                              /* tp_descr_set */
-        0,                                              /* tp_dictoffset */
-        (initproc)pysqlite_prepare_protocol_init,       /* tp_init */
-        0,                                              /* tp_alloc */
-        0,                                              /* tp_new */
-        0                                               /* tp_free */
-};
-
-extern int pysqlite_prepare_protocol_setup_types(void)
-{
-    pysqlite_PrepareProtocolType.tp_new = PyType_GenericNew;
-    Py_TYPE(&pysqlite_PrepareProtocolType)= &PyType_Type;
-    return PyType_Ready(&pysqlite_PrepareProtocolType);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/prepare_protocol.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/prepare_protocol.h
deleted file mode 100644
index 7b1fd80..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/prepare_protocol.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* prepare_protocol.h - the protocol for preparing values for SQLite
- *
- * Copyright (C) 2005-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#ifndef PYSQLITE_PREPARE_PROTOCOL_H
-#define PYSQLITE_PREPARE_PROTOCOL_H
-#include "Python.h"
-
-typedef struct
-{
-    PyObject_HEAD
-} pysqlite_PrepareProtocol;
-
-extern PyTypeObject pysqlite_PrepareProtocolType;
-
-int pysqlite_prepare_protocol_init(pysqlite_PrepareProtocol* self, PyObject* args, PyObject* kwargs);
-void pysqlite_prepare_protocol_dealloc(pysqlite_PrepareProtocol* self);
-
-int pysqlite_prepare_protocol_setup_types(void);
-
-#define UNKNOWN (-1)
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/row.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/row.c
deleted file mode 100644
index 14db4ae..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/row.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/* row.c - an enhanced tuple for database rows
- *
- * Copyright (C) 2005-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#include "row.h"
-#include "cursor.h"
-#include "sqlitecompat.h"
-
-void pysqlite_row_dealloc(pysqlite_Row* self)
-{
-    Py_XDECREF(self->data);
-    Py_XDECREF(self->description);
-
-    Py_TYPE(self)->tp_free((PyObject*)self);
-}
-
-int pysqlite_row_init(pysqlite_Row* self, PyObject* args, PyObject* kwargs)
-{
-    PyObject* data;
-    pysqlite_Cursor* cursor;
-
-    self->data = 0;
-    self->description = 0;
-
-    if (!PyArg_ParseTuple(args, "OO", &cursor, &data)) {
-        return -1;
-    }
-
-    if (!PyObject_IsInstance((PyObject*)cursor, (PyObject*)&pysqlite_CursorType)) {
-        PyErr_SetString(PyExc_TypeError, "instance of cursor required for first argument");
-        return -1;
-    }
-
-    if (!PyTuple_Check(data)) {
-        PyErr_SetString(PyExc_TypeError, "tuple required for second argument");
-        return -1;
-    }
-
-    Py_INCREF(data);
-    self->data = data;
-
-    Py_INCREF(cursor->description);
-    self->description = cursor->description;
-
-    return 0;
-}
-
-PyObject* pysqlite_row_subscript(pysqlite_Row* self, PyObject* idx)
-{
-    long _idx;
-    char* key;
-    int nitems, i;
-    char* compare_key;
-
-    char* p1;
-    char* p2;
-
-    PyObject* item;
-
-    if (PyInt_Check(idx)) {
-        _idx = PyInt_AsLong(idx);
-        item = PyTuple_GetItem(self->data, _idx);
-        Py_XINCREF(item);
-        return item;
-    } else if (PyLong_Check(idx)) {
-        _idx = PyLong_AsLong(idx);
-        item = PyTuple_GetItem(self->data, _idx);
-        Py_XINCREF(item);
-        return item;
-    } else if (PyString_Check(idx)) {
-        key = PyString_AsString(idx);
-
-        nitems = PyTuple_Size(self->description);
-
-        for (i = 0; i < nitems; i++) {
-            compare_key = PyString_AsString(PyTuple_GET_ITEM(PyTuple_GET_ITEM(self->description, i), 0));
-            if (!compare_key) {
-                return NULL;
-            }
-
-            p1 = key;
-            p2 = compare_key;
-
-            while (1) {
-                if ((*p1 == (char)0) || (*p2 == (char)0)) {
-                    break;
-                }
-
-                if ((*p1 | 0x20) != (*p2 | 0x20)) {
-                    break;
-                }
-
-                p1++;
-                p2++;
-            }
-
-            if ((*p1 == (char)0) && (*p2 == (char)0)) {
-                /* found item */
-                item = PyTuple_GetItem(self->data, i);
-                Py_INCREF(item);
-                return item;
-            }
-
-        }
-
-        PyErr_SetString(PyExc_IndexError, "No item with that key");
-        return NULL;
-    } else if (PySlice_Check(idx)) {
-        PyErr_SetString(PyExc_ValueError, "slices not implemented, yet");
-        return NULL;
-    } else {
-        PyErr_SetString(PyExc_IndexError, "Index must be int or string");
-        return NULL;
-    }
-}
-
-Py_ssize_t pysqlite_row_length(pysqlite_Row* self, PyObject* args, PyObject* kwargs)
-{
-    return PyTuple_GET_SIZE(self->data);
-}
-
-PyObject* pysqlite_row_keys(pysqlite_Row* self, PyObject* args, PyObject* kwargs)
-{
-    PyObject* list;
-    int nitems, i;
-
-    list = PyList_New(0);
-    if (!list) {
-        return NULL;
-    }
-    nitems = PyTuple_Size(self->description);
-
-    for (i = 0; i < nitems; i++) {
-        if (PyList_Append(list, PyTuple_GET_ITEM(PyTuple_GET_ITEM(self->description, i), 0)) != 0) {
-            Py_DECREF(list);
-            return NULL;
-        }
-    }
-
-    return list;
-}
-
-static int pysqlite_row_print(pysqlite_Row* self, FILE *fp, int flags)
-{
-    return (&PyTuple_Type)->tp_print(self->data, fp, flags);
-}
-
-static PyObject* pysqlite_iter(pysqlite_Row* self)
-{
-    return PyObject_GetIter(self->data);
-}
-
-static long pysqlite_row_hash(pysqlite_Row *self)
-{
-    return PyObject_Hash(self->description) ^ PyObject_Hash(self->data);
-}
-
-static PyObject* pysqlite_row_richcompare(pysqlite_Row *self, PyObject *_other, int opid)
-{
-    if (opid != Py_EQ && opid != Py_NE) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    if (PyType_IsSubtype(Py_TYPE(_other), &pysqlite_RowType)) {
-        pysqlite_Row *other = (pysqlite_Row *)_other;
-        PyObject *res = PyObject_RichCompare(self->description, other->description, opid);
-        if ((opid == Py_EQ && res == Py_True)
-            || (opid == Py_NE && res == Py_False)) {
-            Py_DECREF(res);
-            return PyObject_RichCompare(self->data, other->data, opid);
-        }
-    }
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-}
-
-PyMappingMethods pysqlite_row_as_mapping = {
-    /* mp_length        */ (lenfunc)pysqlite_row_length,
-    /* mp_subscript     */ (binaryfunc)pysqlite_row_subscript,
-    /* mp_ass_subscript */ (objobjargproc)0,
-};
-
-static PyMethodDef pysqlite_row_methods[] = {
-    {"keys", (PyCFunction)pysqlite_row_keys, METH_NOARGS,
-        PyDoc_STR("Returns the keys of the row.")},
-    {NULL, NULL}
-};
-
-
-PyTypeObject pysqlite_RowType = {
-        PyVarObject_HEAD_INIT(NULL, 0)
-        MODULE_NAME ".Row",                             /* tp_name */
-        sizeof(pysqlite_Row),                           /* tp_basicsize */
-        0,                                              /* tp_itemsize */
-        (destructor)pysqlite_row_dealloc,               /* tp_dealloc */
-        (printfunc)pysqlite_row_print,                  /* 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 */
-        (hashfunc)pysqlite_row_hash,                    /* tp_hash */
-        0,                                              /* tp_call */
-        0,                                              /* tp_str */
-        0,                                              /* tp_getattro */
-        0,                                              /* tp_setattro */
-        0,                                              /* tp_as_buffer */
-        Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE,         /* tp_flags */
-        0,                                              /* tp_doc */
-        (traverseproc)0,                                /* tp_traverse */
-        0,                                              /* tp_clear */
-        (richcmpfunc)pysqlite_row_richcompare,          /* tp_richcompare */
-        0,                                              /* tp_weaklistoffset */
-        (getiterfunc)pysqlite_iter,                     /* tp_iter */
-        0,                                              /* tp_iternext */
-        pysqlite_row_methods,                           /* tp_methods */
-        0,                                              /* tp_members */
-        0,                                              /* tp_getset */
-        0,                                              /* tp_base */
-        0,                                              /* tp_dict */
-        0,                                              /* tp_descr_get */
-        0,                                              /* tp_descr_set */
-        0,                                              /* tp_dictoffset */
-        (initproc)pysqlite_row_init,                    /* tp_init */
-        0,                                              /* tp_alloc */
-        0,                                              /* tp_new */
-        0                                               /* tp_free */
-};
-
-extern int pysqlite_row_setup_types(void)
-{
-    pysqlite_RowType.tp_new = PyType_GenericNew;
-    pysqlite_RowType.tp_as_mapping = &pysqlite_row_as_mapping;
-    return PyType_Ready(&pysqlite_RowType);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/row.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/row.h
deleted file mode 100644
index bec80d5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/row.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* row.h - an enhanced tuple for database rows
- *
- * Copyright (C) 2005-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#ifndef PYSQLITE_ROW_H
-#define PYSQLITE_ROW_H
-#include "Python.h"
-
-typedef struct _Row
-{
-    PyObject_HEAD
-    PyObject* data;
-    PyObject* description;
-} pysqlite_Row;
-
-extern PyTypeObject pysqlite_RowType;
-
-int pysqlite_row_setup_types(void);
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/sqlitecompat.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/sqlitecompat.h
deleted file mode 100644
index 1f5c7d5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/sqlitecompat.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* sqlitecompat.h - compatibility macros
- *
- * Copyright (C) 2006-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#include "Python.h"
-
-#ifndef PYSQLITE_COMPAT_H
-#define PYSQLITE_COMPAT_H
-
-/* define Py_ssize_t for pre-2.5 versions of Python */
-
-#if PY_VERSION_HEX < 0x02050000
-typedef int Py_ssize_t;
-typedef int (*lenfunc)(PyObject*);
-#endif
-
-
-/* define PyDict_CheckExact for pre-2.4 versions of Python */
-#ifndef PyDict_CheckExact
-#define PyDict_CheckExact(op) ((op)->ob_type == &PyDict_Type)
-#endif
-
-/* define Py_CLEAR for pre-2.4 versions of Python */
-#ifndef Py_CLEAR
-#define Py_CLEAR(op)				\
-        do {                            	\
-                if (op) {			\
-                        PyObject *tmp = (PyObject *)(op);	\
-                        (op) = NULL;		\
-                        Py_DECREF(tmp);		\
-                }				\
-        } while (0)
-#endif
-
-#ifndef PyVarObject_HEAD_INIT
-#define PyVarObject_HEAD_INIT(type, size) \
-    PyObject_HEAD_INIT(type) size,
-#endif
-
-#ifndef Py_TYPE
-#define Py_TYPE(ob) ((ob)->ob_type)
-#endif
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/statement.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/statement.c
deleted file mode 100644
index e052ef9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/statement.c
+++ /dev/null
@@ -1,543 +0,0 @@
-/* statement.c - the statement type
- *
- * Copyright (C) 2005-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#include "statement.h"
-#include "cursor.h"
-#include "connection.h"
-#include "microprotocols.h"
-#include "prepare_protocol.h"
-#include "sqlitecompat.h"
-
-/* prototypes */
-static int pysqlite_check_remaining_sql(const char* tail);
-
-typedef enum {
-    LINECOMMENT_1,
-    IN_LINECOMMENT,
-    COMMENTSTART_1,
-    IN_COMMENT,
-    COMMENTEND_1,
-    NORMAL
-} parse_remaining_sql_state;
-
-typedef enum {
-    TYPE_INT,
-    TYPE_LONG,
-    TYPE_FLOAT,
-    TYPE_STRING,
-    TYPE_UNICODE,
-    TYPE_BUFFER,
-    TYPE_UNKNOWN
-} parameter_type;
-
-int pysqlite_statement_create(pysqlite_Statement* self, pysqlite_Connection* connection, PyObject* sql)
-{
-    const char* tail;
-    int rc;
-    PyObject* sql_str;
-    char* sql_cstr;
-
-    self->st = NULL;
-    self->in_use = 0;
-
-    if (PyString_Check(sql)) {
-        sql_str = sql;
-        Py_INCREF(sql_str);
-    } else if (PyUnicode_Check(sql)) {
-        sql_str = PyUnicode_AsUTF8String(sql);
-        if (!sql_str) {
-            rc = PYSQLITE_SQL_WRONG_TYPE;
-            return rc;
-        }
-    } else {
-        rc = PYSQLITE_SQL_WRONG_TYPE;
-        return rc;
-    }
-
-    self->in_weakreflist = NULL;
-    self->sql = sql_str;
-
-    sql_cstr = PyString_AsString(sql_str);
-
-    Py_BEGIN_ALLOW_THREADS
-    rc = sqlite3_prepare(connection->db,
-                         sql_cstr,
-                         -1,
-                         &self->st,
-                         &tail);
-    Py_END_ALLOW_THREADS
-
-    self->db = connection->db;
-
-    if (rc == SQLITE_OK && pysqlite_check_remaining_sql(tail)) {
-        (void)sqlite3_finalize(self->st);
-        self->st = NULL;
-        rc = PYSQLITE_TOO_MUCH_SQL;
-    }
-
-    return rc;
-}
-
-int pysqlite_statement_bind_parameter(pysqlite_Statement* self, int pos, PyObject* parameter, int allow_8bit_chars)
-{
-    int rc = SQLITE_OK;
-    long longval;
-    PY_LONG_LONG longlongval;
-    const char* buffer;
-    char* string;
-    Py_ssize_t buflen;
-    PyObject* stringval;
-    parameter_type paramtype;
-    char* c;
-
-    if (parameter == Py_None) {
-        rc = sqlite3_bind_null(self->st, pos);
-        goto final;
-    }
-
-    if (PyInt_CheckExact(parameter)) {
-        paramtype = TYPE_INT;
-    } else if (PyLong_CheckExact(parameter)) {
-        paramtype = TYPE_LONG;
-    } else if (PyFloat_CheckExact(parameter)) {
-        paramtype = TYPE_FLOAT;
-    } else if (PyString_CheckExact(parameter)) {
-        paramtype = TYPE_STRING;
-    } else if (PyUnicode_CheckExact(parameter)) {
-        paramtype = TYPE_UNICODE;
-    } else if (PyBuffer_Check(parameter)) {
-        paramtype = TYPE_BUFFER;
-    } else if (PyInt_Check(parameter)) {
-        paramtype = TYPE_INT;
-    } else if (PyLong_Check(parameter)) {
-        paramtype = TYPE_LONG;
-    } else if (PyFloat_Check(parameter)) {
-        paramtype = TYPE_FLOAT;
-    } else if (PyString_Check(parameter)) {
-        paramtype = TYPE_STRING;
-    } else if (PyUnicode_Check(parameter)) {
-        paramtype = TYPE_UNICODE;
-    } else {
-        paramtype = TYPE_UNKNOWN;
-    }
-
-    if (paramtype == TYPE_STRING && !allow_8bit_chars) {
-        string = PyString_AS_STRING(parameter);
-        for (c = string; *c != 0; c++) {
-            if (*c & 0x80) {
-                PyErr_SetString(pysqlite_ProgrammingError, "You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.");
-                rc = -1;
-                goto final;
-            }
-        }
-    }
-
-    switch (paramtype) {
-        case TYPE_INT:
-            longval = PyInt_AsLong(parameter);
-            rc = sqlite3_bind_int64(self->st, pos, (sqlite_int64)longval);
-            break;
-        case TYPE_LONG:
-            longlongval = PyLong_AsLongLong(parameter);
-            /* in the overflow error case, longlongval is -1, and an exception is set */
-            rc = sqlite3_bind_int64(self->st, pos, (sqlite_int64)longlongval);
-            break;
-        case TYPE_FLOAT:
-            rc = sqlite3_bind_double(self->st, pos, PyFloat_AsDouble(parameter));
-            break;
-        case TYPE_STRING:
-            string = PyString_AS_STRING(parameter);
-            rc = sqlite3_bind_text(self->st, pos, string, -1, SQLITE_TRANSIENT);
-            break;
-        case TYPE_UNICODE:
-            stringval = PyUnicode_AsUTF8String(parameter);
-            string = PyString_AsString(stringval);
-            rc = sqlite3_bind_text(self->st, pos, string, -1, SQLITE_TRANSIENT);
-            Py_DECREF(stringval);
-            break;
-        case TYPE_BUFFER:
-            if (PyObject_AsCharBuffer(parameter, &buffer, &buflen) == 0) {
-                rc = sqlite3_bind_blob(self->st, pos, buffer, buflen, SQLITE_TRANSIENT);
-            } else {
-                PyErr_SetString(PyExc_ValueError, "could not convert BLOB to buffer");
-                rc = -1;
-            }
-            break;
-        case TYPE_UNKNOWN:
-            rc = -1;
-    }
-
-final:
-    return rc;
-}
-
-/* returns 0 if the object is one of Python's internal ones that don't need to be adapted */
-static int _need_adapt(PyObject* obj)
-{
-    if (pysqlite_BaseTypeAdapted) {
-        return 1;
-    }
-
-    if (PyInt_CheckExact(obj) || PyLong_CheckExact(obj) 
-            || PyFloat_CheckExact(obj) || PyString_CheckExact(obj)
-            || PyUnicode_CheckExact(obj) || PyBuffer_Check(obj)) {
-        return 0;
-    } else {
-        return 1;
-    }
-}
-
-void pysqlite_statement_bind_parameters(pysqlite_Statement* self, PyObject* parameters, int allow_8bit_chars)
-{
-    PyObject* current_param;
-    PyObject* adapted;
-    const char* binding_name;
-    int i;
-    int rc;
-    int num_params_needed;
-    int num_params;
-
-    Py_BEGIN_ALLOW_THREADS
-    num_params_needed = sqlite3_bind_parameter_count(self->st);
-    Py_END_ALLOW_THREADS
-
-    if (PyTuple_CheckExact(parameters) || PyList_CheckExact(parameters) || (!PyDict_Check(parameters) && PySequence_Check(parameters))) {
-        /* parameters passed as sequence */
-        if (PyTuple_CheckExact(parameters)) {
-            num_params = PyTuple_GET_SIZE(parameters);
-        } else if (PyList_CheckExact(parameters)) {
-            num_params = PyList_GET_SIZE(parameters);
-        } else {
-            num_params = PySequence_Size(parameters);
-        }
-        if (num_params != num_params_needed) {
-            PyErr_Format(pysqlite_ProgrammingError, "Incorrect number of bindings supplied. The current statement uses %d, and there are %d supplied.",
-                         num_params_needed, num_params);
-            return;
-        }
-        for (i = 0; i < num_params; i++) {
-            if (PyTuple_CheckExact(parameters)) {
-                current_param = PyTuple_GET_ITEM(parameters, i);
-                Py_XINCREF(current_param);
-            } else if (PyList_CheckExact(parameters)) {
-                current_param = PyList_GET_ITEM(parameters, i);
-                Py_XINCREF(current_param);
-            } else {
-                current_param = PySequence_GetItem(parameters, i);
-            }
-            if (!current_param) {
-                return;
-            }
-
-            if (!_need_adapt(current_param)) {
-                adapted = current_param;
-            } else {
-                adapted = pysqlite_microprotocols_adapt(current_param, (PyObject*)&pysqlite_PrepareProtocolType, NULL);
-                if (adapted) {
-                    Py_DECREF(current_param);
-                } else {
-                    PyErr_Clear();
-                    adapted = current_param;
-                }
-            }
-
-            rc = pysqlite_statement_bind_parameter(self, i + 1, adapted, allow_8bit_chars);
-            Py_DECREF(adapted);
-
-            if (rc != SQLITE_OK) {
-                if (!PyErr_Occurred()) {
-                    PyErr_Format(pysqlite_InterfaceError, "Error binding parameter %d - probably unsupported type.", i);
-                }
-                return;
-            }
-        }
-    } else if (PyDict_Check(parameters)) {
-        /* parameters passed as dictionary */
-        for (i = 1; i <= num_params_needed; i++) {
-            Py_BEGIN_ALLOW_THREADS
-            binding_name = sqlite3_bind_parameter_name(self->st, i);
-            Py_END_ALLOW_THREADS
-            if (!binding_name) {
-                PyErr_Format(pysqlite_ProgrammingError, "Binding %d has no name, but you supplied a dictionary (which has only names).", i);
-                return;
-            }
-
-            binding_name++; /* skip first char (the colon) */
-            if (PyDict_CheckExact(parameters)) {
-                current_param = PyDict_GetItemString(parameters, binding_name);
-                Py_XINCREF(current_param);
-            } else {
-                current_param = PyMapping_GetItemString(parameters, (char*)binding_name);
-            }
-            if (!current_param) {
-                PyErr_Format(pysqlite_ProgrammingError, "You did not supply a value for binding %d.", i);
-                return;
-            }
-
-            if (!_need_adapt(current_param)) {
-                adapted = current_param;
-            } else {
-                adapted = pysqlite_microprotocols_adapt(current_param, (PyObject*)&pysqlite_PrepareProtocolType, NULL);
-                if (adapted) {
-                    Py_DECREF(current_param);
-                } else {
-                    PyErr_Clear();
-                    adapted = current_param;
-                }
-            }
-
-            rc = pysqlite_statement_bind_parameter(self, i, adapted, allow_8bit_chars);
-            Py_DECREF(adapted);
-
-            if (rc != SQLITE_OK) {
-                if (!PyErr_Occurred()) {
-                    PyErr_Format(pysqlite_InterfaceError, "Error binding parameter :%s - probably unsupported type.", binding_name);
-                }
-                return;
-           }
-        }
-    } else {
-        PyErr_SetString(PyExc_ValueError, "parameters are of unsupported type");
-    }
-}
-
-int pysqlite_statement_recompile(pysqlite_Statement* self, PyObject* params)
-{
-    const char* tail;
-    int rc;
-    char* sql_cstr;
-    sqlite3_stmt* new_st;
-
-    sql_cstr = PyString_AsString(self->sql);
-
-    Py_BEGIN_ALLOW_THREADS
-    rc = sqlite3_prepare(self->db,
-                         sql_cstr,
-                         -1,
-                         &new_st,
-                         &tail);
-    Py_END_ALLOW_THREADS
-
-    if (rc == SQLITE_OK) {
-        /* The efficient sqlite3_transfer_bindings is only available in SQLite
-         * version 3.2.2 or later. For older SQLite releases, that might not
-         * even define SQLITE_VERSION_NUMBER, we do it the manual way.
-         */
-        #ifdef SQLITE_VERSION_NUMBER
-        #if SQLITE_VERSION_NUMBER >= 3002002
-        /* The check for the number of parameters is necessary to not trigger a
-         * bug in certain SQLite versions (experienced in 3.2.8 and 3.3.4). */
-        if (sqlite3_bind_parameter_count(self->st) > 0) {
-            (void)sqlite3_transfer_bindings(self->st, new_st);
-        }
-        #endif
-        #else
-        statement_bind_parameters(self, params);
-        #endif
-
-        (void)sqlite3_finalize(self->st);
-        self->st = new_st;
-    }
-
-    return rc;
-}
-
-int pysqlite_statement_finalize(pysqlite_Statement* self)
-{
-    int rc;
-
-    rc = SQLITE_OK;
-    if (self->st) {
-        Py_BEGIN_ALLOW_THREADS
-        rc = sqlite3_finalize(self->st);
-        Py_END_ALLOW_THREADS
-        self->st = NULL;
-    }
-
-    self->in_use = 0;
-
-    return rc;
-}
-
-int pysqlite_statement_reset(pysqlite_Statement* self)
-{
-    int rc;
-
-    rc = SQLITE_OK;
-
-    if (self->in_use && self->st) {
-        Py_BEGIN_ALLOW_THREADS
-        rc = sqlite3_reset(self->st);
-        Py_END_ALLOW_THREADS
-
-        if (rc == SQLITE_OK) {
-            self->in_use = 0;
-        }
-    }
-
-    return rc;
-}
-
-void pysqlite_statement_mark_dirty(pysqlite_Statement* self)
-{
-    self->in_use = 1;
-}
-
-void pysqlite_statement_dealloc(pysqlite_Statement* self)
-{
-    int rc;
-
-    if (self->st) {
-        Py_BEGIN_ALLOW_THREADS
-        rc = sqlite3_finalize(self->st);
-        Py_END_ALLOW_THREADS
-    }
-
-    self->st = NULL;
-
-    Py_XDECREF(self->sql);
-
-    if (self->in_weakreflist != NULL) {
-        PyObject_ClearWeakRefs((PyObject*)self);
-    }
-
-    Py_TYPE(self)->tp_free((PyObject*)self);
-}
-
-/*
- * Checks if there is anything left in an SQL string after SQLite compiled it.
- * This is used to check if somebody tried to execute more than one SQL command
- * with one execute()/executemany() command, which the DB-API and we don't
- * allow.
- *
- * Returns 1 if there is more left than should be. 0 if ok.
- */
-static int pysqlite_check_remaining_sql(const char* tail)
-{
-    const char* pos = tail;
-
-    parse_remaining_sql_state state = NORMAL;
-
-    for (;;) {
-        switch (*pos) {
-            case 0:
-                return 0;
-            case '-':
-                if (state == NORMAL) {
-                    state  = LINECOMMENT_1;
-                } else if (state == LINECOMMENT_1) {
-                    state = IN_LINECOMMENT;
-                }
-                break;
-            case ' ':
-            case '\t':
-                break;
-            case '\n':
-            case 13:
-                if (state == IN_LINECOMMENT) {
-                    state = NORMAL;
-                }
-                break;
-            case '/':
-                if (state == NORMAL) {
-                    state = COMMENTSTART_1;
-                } else if (state == COMMENTEND_1) {
-                    state = NORMAL;
-                } else if (state == COMMENTSTART_1) {
-                    return 1;
-                }
-                break;
-            case '*':
-                if (state == NORMAL) {
-                    return 1;
-                } else if (state == LINECOMMENT_1) {
-                    return 1;
-                } else if (state == COMMENTSTART_1) {
-                    state = IN_COMMENT;
-                } else if (state == IN_COMMENT) {
-                    state = COMMENTEND_1;
-                }
-                break;
-            default:
-                if (state == COMMENTEND_1) {
-                    state = IN_COMMENT;
-                } else if (state == IN_LINECOMMENT) {
-                } else if (state == IN_COMMENT) {
-                } else {
-                    return 1;
-                }
-        }
-
-        pos++;
-    }
-
-    return 0;
-}
-
-PyTypeObject pysqlite_StatementType = {
-        PyVarObject_HEAD_INIT(NULL, 0)
-        MODULE_NAME ".Statement",                       /* tp_name */
-        sizeof(pysqlite_Statement),                     /* tp_basicsize */
-        0,                                              /* tp_itemsize */
-        (destructor)pysqlite_statement_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 */
-        Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_WEAKREFS,  /* tp_flags */
-        0,                                              /* tp_doc */
-        0,                                              /* tp_traverse */
-        0,                                              /* tp_clear */
-        0,                                              /* tp_richcompare */
-        offsetof(pysqlite_Statement, in_weakreflist),   /* tp_weaklistoffset */
-        0,                                              /* tp_iter */
-        0,                                              /* tp_iternext */
-        0,                                              /* tp_methods */
-        0,                                              /* tp_members */
-        0,                                              /* tp_getset */
-        0,                                              /* tp_base */
-        0,                                              /* tp_dict */
-        0,                                              /* tp_descr_get */
-        0,                                              /* tp_descr_set */
-        0,                                              /* tp_dictoffset */
-        (initproc)0,                                    /* tp_init */
-        0,                                              /* tp_alloc */
-        0,                                              /* tp_new */
-        0                                               /* tp_free */
-};
-
-extern int pysqlite_statement_setup_types(void)
-{
-    pysqlite_StatementType.tp_new = PyType_GenericNew;
-    return PyType_Ready(&pysqlite_StatementType);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/statement.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/statement.h
deleted file mode 100644
index 03e04f2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/statement.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* statement.h - definitions for the statement type
- *
- * Copyright (C) 2005-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#ifndef PYSQLITE_STATEMENT_H
-#define PYSQLITE_STATEMENT_H
-#include "Python.h"
-
-#include "connection.h"
-#include "sqlite3.h"
-
-#define PYSQLITE_TOO_MUCH_SQL (-100)
-#define PYSQLITE_SQL_WRONG_TYPE (-101)
-
-typedef struct
-{
-    PyObject_HEAD
-    sqlite3* db;
-    sqlite3_stmt* st;
-    PyObject* sql;
-    int in_use;
-    PyObject* in_weakreflist; /* List of weak references */
-} pysqlite_Statement;
-
-extern PyTypeObject pysqlite_StatementType;
-
-int pysqlite_statement_create(pysqlite_Statement* self, pysqlite_Connection* connection, PyObject* sql);
-void pysqlite_statement_dealloc(pysqlite_Statement* self);
-
-int pysqlite_statement_bind_parameter(pysqlite_Statement* self, int pos, PyObject* parameter, int allow_8bit_chars);
-void pysqlite_statement_bind_parameters(pysqlite_Statement* self, PyObject* parameters, int allow_8bit_chars);
-
-int pysqlite_statement_recompile(pysqlite_Statement* self, PyObject* parameters);
-int pysqlite_statement_finalize(pysqlite_Statement* self);
-int pysqlite_statement_reset(pysqlite_Statement* self);
-void pysqlite_statement_mark_dirty(pysqlite_Statement* self);
-
-int pysqlite_statement_setup_types(void);
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/util.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/util.c
deleted file mode 100644
index e02d159..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/util.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/* util.c - various utility functions
- *
- * Copyright (C) 2005-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#include "module.h"
-#include "connection.h"
-
-int pysqlite_step(sqlite3_stmt* statement, pysqlite_Connection* connection)
-{
-    int rc;
-
-    if (statement == NULL) {
-        /* this is a workaround for SQLite 3.5 and later. it now apparently
-         * returns NULL for "no-operation" statements */
-        rc = SQLITE_OK;
-    } else {
-        Py_BEGIN_ALLOW_THREADS
-        rc = sqlite3_step(statement);
-        Py_END_ALLOW_THREADS
-    }
-
-    return rc;
-}
-
-/**
- * Checks the SQLite error code and sets the appropriate DB-API exception.
- * Returns the error code (0 means no error occurred).
- */
-int _pysqlite_seterror(sqlite3* db, sqlite3_stmt* st)
-{
-    int errorcode;
-
-    /* SQLite often doesn't report anything useful, unless you reset the statement first */
-    if (st != NULL) {
-        (void)sqlite3_reset(st);
-    }
-
-    errorcode = sqlite3_errcode(db);
-
-    switch (errorcode)
-    {
-        case SQLITE_OK:
-            PyErr_Clear();
-            break;
-        case SQLITE_INTERNAL:
-        case SQLITE_NOTFOUND:
-            PyErr_SetString(pysqlite_InternalError, sqlite3_errmsg(db));
-            break;
-        case SQLITE_NOMEM:
-            (void)PyErr_NoMemory();
-            break;
-        case SQLITE_ERROR:
-        case SQLITE_PERM:
-        case SQLITE_ABORT:
-        case SQLITE_BUSY:
-        case SQLITE_LOCKED:
-        case SQLITE_READONLY:
-        case SQLITE_INTERRUPT:
-        case SQLITE_IOERR:
-        case SQLITE_FULL:
-        case SQLITE_CANTOPEN:
-        case SQLITE_PROTOCOL:
-        case SQLITE_EMPTY:
-        case SQLITE_SCHEMA:
-            PyErr_SetString(pysqlite_OperationalError, sqlite3_errmsg(db));
-            break;
-        case SQLITE_CORRUPT:
-            PyErr_SetString(pysqlite_DatabaseError, sqlite3_errmsg(db));
-            break;
-        case SQLITE_TOOBIG:
-            PyErr_SetString(pysqlite_DataError, sqlite3_errmsg(db));
-            break;
-        case SQLITE_CONSTRAINT:
-        case SQLITE_MISMATCH:
-            PyErr_SetString(pysqlite_IntegrityError, sqlite3_errmsg(db));
-            break;
-        case SQLITE_MISUSE:
-            PyErr_SetString(pysqlite_ProgrammingError, sqlite3_errmsg(db));
-            break;
-        default:
-            PyErr_SetString(pysqlite_DatabaseError, sqlite3_errmsg(db));
-            break;
-    }
-
-    return errorcode;
-}
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/util.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/util.h
deleted file mode 100644
index 9e3901d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sqlite/util.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* util.h - various utility functions
- *
- * Copyright (C) 2005-2010 Gerhard Häring <gh@ghaering.de>
- *
- * This file is part of pysqlite.
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#ifndef PYSQLITE_UTIL_H
-#define PYSQLITE_UTIL_H
-#include "Python.h"
-#include "pythread.h"
-#include "sqlite3.h"
-#include "connection.h"
-
-int pysqlite_step(sqlite3_stmt* statement, pysqlite_Connection* connection);
-
-/**
- * Checks the SQLite error code and sets the appropriate DB-API exception.
- * Returns the error code (0 means no error occurred).
- */
-int _pysqlite_seterror(sqlite3* db, sqlite3_stmt* st);
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sre.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_sre.c
deleted file mode 100644
index 3bad991..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_sre.c
+++ /dev/null
@@ -1,3921 +0,0 @@
-/*
- * Secret Labs' Regular Expression Engine
- *
- * regular expression matching engine
-
-    Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
- *
- * partial history:
- * 1999-10-24 fl  created (based on existing template matcher code)
- * 2000-03-06 fl  first alpha, sort of
- * 2000-08-01 fl  fixes for 1.6b1
- * 2000-08-07 fl  use PyOS_CheckStack() if available
- * 2000-09-20 fl  added expand method
- * 2001-03-20 fl  lots of fixes for 2.1b2
- * 2001-04-15 fl  export copyright as Python attribute, not global
- * 2001-04-28 fl  added __copy__ methods (work in progress)
- * 2001-05-14 fl  fixes for 1.5.2 compatibility
- * 2001-07-01 fl  added BIGCHARSET support (from Martin von Loewis)
- * 2001-10-18 fl  fixed group reset issue (from Matthew Mueller)
- * 2001-10-20 fl  added split primitive; reenable unicode for 1.6/2.0/2.1
- * 2001-10-21 fl  added sub/subn primitive
- * 2001-10-24 fl  added finditer primitive (for 2.2 only)
- * 2001-12-07 fl  fixed memory leak in sub/subn (Guido van Rossum)
- * 2002-11-09 fl  fixed empty sub/subn return type
- * 2003-04-18 mvl fully support 4-byte codes
- * 2003-10-17 gn  implemented non recursive scheme
- *
- * Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
- *
- * This version of the SRE library can be redistributed under CNRI's
- * Python 1.6 license.  For any other use, please contact Secret Labs
- * AB (info@pythonware.com).
- *
- * Portions of this engine have been developed in cooperation with
- * CNRI.  Hewlett-Packard provided funding for 1.6 integration and
- * other compatibility work.
- */
-
-/* Get rid of these macros to prevent collisions between EFI and Python in this file. */
-#undef  RETURN_ERROR
-#undef  RETURN_SUCCESS
-
-#ifndef SRE_RECURSIVE
-
-static char copyright[] =
-    " SRE 2.2.2 Copyright (c) 1997-2002 by Secret Labs AB ";
-
-#define PY_SSIZE_T_CLEAN
-
-#include "Python.h"
-#include "structmember.h" /* offsetof */
-
-#include "sre.h"
-
-#include <ctype.h>
-
-/* name of this module, minus the leading underscore */
-#if !defined(SRE_MODULE)
-#define SRE_MODULE "sre"
-#endif
-
-#define SRE_PY_MODULE "re"
-
-/* defining this one enables tracing */
-#undef VERBOSE
-
-#if PY_VERSION_HEX >= 0x01060000
-#if PY_VERSION_HEX  < 0x02020000 || defined(Py_USING_UNICODE)
-/* defining this enables unicode support (default under 1.6a1 and later) */
-#define HAVE_UNICODE
-#endif
-#endif
-
-/* -------------------------------------------------------------------- */
-/* optional features */
-
-/* enables fast searching */
-#define USE_FAST_SEARCH
-
-/* enables aggressive inlining (always on for Visual C) */
-#undef USE_INLINE
-
-/* enables copy/deepcopy handling (work in progress) */
-#undef USE_BUILTIN_COPY
-
-#if PY_VERSION_HEX < 0x01060000
-#define PyObject_DEL(op) PyMem_DEL((op))
-#endif
-
-/* -------------------------------------------------------------------- */
-
-#if defined(_MSC_VER)
-#pragma optimize("gt", on) /* doesn't seem to make much difference... */
-#pragma warning(disable: 4710) /* who cares if functions are not inlined ;-) */
-/* fastest possible local call under MSVC */
-#define LOCAL(type) static __inline type __fastcall
-#elif defined(USE_INLINE)
-#define LOCAL(type) static inline type
-#else
-#define LOCAL(type) static type
-#endif
-
-/* error codes */
-#define SRE_ERROR_ILLEGAL -1 /* illegal opcode */
-#define SRE_ERROR_STATE -2 /* illegal state */
-#define SRE_ERROR_RECURSION_LIMIT -3 /* runaway recursion */
-#define SRE_ERROR_MEMORY -9 /* out of memory */
-#define SRE_ERROR_INTERRUPTED -10 /* signal handler raised exception */
-
-#if defined(VERBOSE)
-#define TRACE(v) printf v
-#else
-#define TRACE(v)
-#endif
-
-/* -------------------------------------------------------------------- */
-/* search engine state */
-
-/* default character predicates (run sre_chars.py to regenerate tables) */
-
-#define SRE_DIGIT_MASK 1
-#define SRE_SPACE_MASK 2
-#define SRE_LINEBREAK_MASK 4
-#define SRE_ALNUM_MASK 8
-#define SRE_WORD_MASK 16
-
-/* FIXME: this assumes ASCII.  create tables in init_sre() instead */
-
-static char sre_char_info[128] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 2,
-2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,
-0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25, 25, 25, 25, 25, 25,
-25, 25, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0,
-0, 0, 16, 0, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0 };
-
-static char sre_char_lower[128] = { 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, 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, 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 };
-
-#define SRE_IS_DIGIT(ch)\
-    ((ch) < 128 ? (sre_char_info[(ch)] & SRE_DIGIT_MASK) : 0)
-#define SRE_IS_SPACE(ch)\
-    ((ch) < 128 ? (sre_char_info[(ch)] & SRE_SPACE_MASK) : 0)
-#define SRE_IS_LINEBREAK(ch)\
-    ((ch) < 128 ? (sre_char_info[(ch)] & SRE_LINEBREAK_MASK) : 0)
-#define SRE_IS_ALNUM(ch)\
-    ((ch) < 128 ? (sre_char_info[(ch)] & SRE_ALNUM_MASK) : 0)
-#define SRE_IS_WORD(ch)\
-    ((ch) < 128 ? (sre_char_info[(ch)] & SRE_WORD_MASK) : 0)
-
-static unsigned int sre_lower(unsigned int ch)
-{
-    return ((ch) < 128 ? (unsigned int)sre_char_lower[ch] : ch);
-}
-
-/* locale-specific character predicates */
-/* !(c & ~N) == (c < N+1) for any unsigned c, this avoids
- * warnings when c's type supports only numbers < N+1 */
-#define SRE_LOC_IS_DIGIT(ch) (!((ch) & ~255) ? isdigit((ch)) : 0)
-#define SRE_LOC_IS_SPACE(ch) (!((ch) & ~255) ? isspace((ch)) : 0)
-#define SRE_LOC_IS_LINEBREAK(ch) ((ch) == '\n')
-#define SRE_LOC_IS_ALNUM(ch) (!((ch) & ~255) ? isalnum((ch)) : 0)
-#define SRE_LOC_IS_WORD(ch) (SRE_LOC_IS_ALNUM((ch)) || (ch) == '_')
-
-static unsigned int sre_lower_locale(unsigned int ch)
-{
-    return ((ch) < 256 ? (unsigned int)tolower((ch)) : ch);
-}
-
-/* unicode-specific character predicates */
-
-#if defined(HAVE_UNICODE)
-
-#define SRE_UNI_IS_DIGIT(ch) Py_UNICODE_ISDECIMAL((Py_UNICODE)(ch))
-#define SRE_UNI_IS_SPACE(ch) Py_UNICODE_ISSPACE((Py_UNICODE)(ch))
-#define SRE_UNI_IS_LINEBREAK(ch) Py_UNICODE_ISLINEBREAK((Py_UNICODE)(ch))
-#define SRE_UNI_IS_ALNUM(ch) Py_UNICODE_ISALNUM((Py_UNICODE)(ch))
-#define SRE_UNI_IS_WORD(ch) (SRE_UNI_IS_ALNUM((ch)) || (ch) == '_')
-
-static unsigned int sre_lower_unicode(unsigned int ch)
-{
-    return (unsigned int) Py_UNICODE_TOLOWER((Py_UNICODE)(ch));
-}
-
-#endif
-
-LOCAL(int)
-sre_category(SRE_CODE category, unsigned int ch)
-{
-    switch (category) {
-
-    case SRE_CATEGORY_DIGIT:
-        return SRE_IS_DIGIT(ch);
-    case SRE_CATEGORY_NOT_DIGIT:
-        return !SRE_IS_DIGIT(ch);
-    case SRE_CATEGORY_SPACE:
-        return SRE_IS_SPACE(ch);
-    case SRE_CATEGORY_NOT_SPACE:
-        return !SRE_IS_SPACE(ch);
-    case SRE_CATEGORY_WORD:
-        return SRE_IS_WORD(ch);
-    case SRE_CATEGORY_NOT_WORD:
-        return !SRE_IS_WORD(ch);
-    case SRE_CATEGORY_LINEBREAK:
-        return SRE_IS_LINEBREAK(ch);
-    case SRE_CATEGORY_NOT_LINEBREAK:
-        return !SRE_IS_LINEBREAK(ch);
-
-    case SRE_CATEGORY_LOC_WORD:
-        return SRE_LOC_IS_WORD(ch);
-    case SRE_CATEGORY_LOC_NOT_WORD:
-        return !SRE_LOC_IS_WORD(ch);
-
-#if defined(HAVE_UNICODE)
-    case SRE_CATEGORY_UNI_DIGIT:
-        return SRE_UNI_IS_DIGIT(ch);
-    case SRE_CATEGORY_UNI_NOT_DIGIT:
-        return !SRE_UNI_IS_DIGIT(ch);
-    case SRE_CATEGORY_UNI_SPACE:
-        return SRE_UNI_IS_SPACE(ch);
-    case SRE_CATEGORY_UNI_NOT_SPACE:
-        return !SRE_UNI_IS_SPACE(ch);
-    case SRE_CATEGORY_UNI_WORD:
-        return SRE_UNI_IS_WORD(ch);
-    case SRE_CATEGORY_UNI_NOT_WORD:
-        return !SRE_UNI_IS_WORD(ch);
-    case SRE_CATEGORY_UNI_LINEBREAK:
-        return SRE_UNI_IS_LINEBREAK(ch);
-    case SRE_CATEGORY_UNI_NOT_LINEBREAK:
-        return !SRE_UNI_IS_LINEBREAK(ch);
-#else
-    case SRE_CATEGORY_UNI_DIGIT:
-        return SRE_IS_DIGIT(ch);
-    case SRE_CATEGORY_UNI_NOT_DIGIT:
-        return !SRE_IS_DIGIT(ch);
-    case SRE_CATEGORY_UNI_SPACE:
-        return SRE_IS_SPACE(ch);
-    case SRE_CATEGORY_UNI_NOT_SPACE:
-        return !SRE_IS_SPACE(ch);
-    case SRE_CATEGORY_UNI_WORD:
-        return SRE_LOC_IS_WORD(ch);
-    case SRE_CATEGORY_UNI_NOT_WORD:
-        return !SRE_LOC_IS_WORD(ch);
-    case SRE_CATEGORY_UNI_LINEBREAK:
-        return SRE_IS_LINEBREAK(ch);
-    case SRE_CATEGORY_UNI_NOT_LINEBREAK:
-        return !SRE_IS_LINEBREAK(ch);
-#endif
-    }
-    return 0;
-}
-
-/* helpers */
-
-static void
-data_stack_dealloc(SRE_STATE* state)
-{
-    if (state->data_stack) {
-        PyMem_FREE(state->data_stack);
-        state->data_stack = NULL;
-    }
-    state->data_stack_size = state->data_stack_base = 0;
-}
-
-static int
-data_stack_grow(SRE_STATE* state, Py_ssize_t size)
-{
-    Py_ssize_t minsize, cursize;
-    minsize = state->data_stack_base+size;
-    cursize = state->data_stack_size;
-    if (cursize < minsize) {
-        void* stack;
-        cursize = minsize+minsize/4+1024;
-        TRACE(("allocate/grow stack %d\n", cursize));
-        stack = PyMem_REALLOC(state->data_stack, cursize);
-        if (!stack) {
-            data_stack_dealloc(state);
-            return SRE_ERROR_MEMORY;
-        }
-        state->data_stack = (char *)stack;
-        state->data_stack_size = cursize;
-    }
-    return 0;
-}
-
-/* generate 8-bit version */
-
-#define SRE_CHAR unsigned char
-#define SRE_AT sre_at
-#define SRE_COUNT sre_count
-#define SRE_CHARSET sre_charset
-#define SRE_INFO sre_info
-#define SRE_MATCH sre_match
-#define SRE_MATCH_CONTEXT sre_match_context
-#define SRE_SEARCH sre_search
-#define SRE_LITERAL_TEMPLATE sre_literal_template
-
-#if defined(HAVE_UNICODE)
-
-#define SRE_RECURSIVE
-#include "_sre.c"
-#undef SRE_RECURSIVE
-
-#undef SRE_LITERAL_TEMPLATE
-#undef SRE_SEARCH
-#undef SRE_MATCH
-#undef SRE_MATCH_CONTEXT
-#undef SRE_INFO
-#undef SRE_CHARSET
-#undef SRE_COUNT
-#undef SRE_AT
-#undef SRE_CHAR
-
-/* generate 16-bit unicode version */
-
-#define SRE_CHAR Py_UNICODE
-#define SRE_AT sre_uat
-#define SRE_COUNT sre_ucount
-#define SRE_CHARSET sre_ucharset
-#define SRE_INFO sre_uinfo
-#define SRE_MATCH sre_umatch
-#define SRE_MATCH_CONTEXT sre_umatch_context
-#define SRE_SEARCH sre_usearch
-#define SRE_LITERAL_TEMPLATE sre_uliteral_template
-#endif
-
-#endif /* SRE_RECURSIVE */
-
-/* -------------------------------------------------------------------- */
-/* String matching engine */
-
-/* the following section is compiled twice, with different character
-   settings */
-
-LOCAL(int)
-SRE_AT(SRE_STATE* state, SRE_CHAR* ptr, SRE_CODE at)
-{
-    /* check if pointer is at given position */
-
-    Py_ssize_t thisp, thatp;
-
-    switch (at) {
-
-    case SRE_AT_BEGINNING:
-    case SRE_AT_BEGINNING_STRING:
-        return ((void*) ptr == state->beginning);
-
-    case SRE_AT_BEGINNING_LINE:
-        return ((void*) ptr == state->beginning ||
-                SRE_IS_LINEBREAK((int) ptr[-1]));
-
-    case SRE_AT_END:
-        return (((void*) (ptr+1) == state->end &&
-                 SRE_IS_LINEBREAK((int) ptr[0])) ||
-                ((void*) ptr == state->end));
-
-    case SRE_AT_END_LINE:
-        return ((void*) ptr == state->end ||
-                SRE_IS_LINEBREAK((int) ptr[0]));
-
-    case SRE_AT_END_STRING:
-        return ((void*) ptr == state->end);
-
-    case SRE_AT_BOUNDARY:
-        if (state->beginning == state->end)
-            return 0;
-        thatp = ((void*) ptr > state->beginning) ?
-            SRE_IS_WORD((int) ptr[-1]) : 0;
-        thisp = ((void*) ptr < state->end) ?
-            SRE_IS_WORD((int) ptr[0]) : 0;
-        return thisp != thatp;
-
-    case SRE_AT_NON_BOUNDARY:
-        if (state->beginning == state->end)
-            return 0;
-        thatp = ((void*) ptr > state->beginning) ?
-            SRE_IS_WORD((int) ptr[-1]) : 0;
-        thisp = ((void*) ptr < state->end) ?
-            SRE_IS_WORD((int) ptr[0]) : 0;
-        return thisp == thatp;
-
-    case SRE_AT_LOC_BOUNDARY:
-        if (state->beginning == state->end)
-            return 0;
-        thatp = ((void*) ptr > state->beginning) ?
-            SRE_LOC_IS_WORD((int) ptr[-1]) : 0;
-        thisp = ((void*) ptr < state->end) ?
-            SRE_LOC_IS_WORD((int) ptr[0]) : 0;
-        return thisp != thatp;
-
-    case SRE_AT_LOC_NON_BOUNDARY:
-        if (state->beginning == state->end)
-            return 0;
-        thatp = ((void*) ptr > state->beginning) ?
-            SRE_LOC_IS_WORD((int) ptr[-1]) : 0;
-        thisp = ((void*) ptr < state->end) ?
-            SRE_LOC_IS_WORD((int) ptr[0]) : 0;
-        return thisp == thatp;
-
-#if defined(HAVE_UNICODE)
-    case SRE_AT_UNI_BOUNDARY:
-        if (state->beginning == state->end)
-            return 0;
-        thatp = ((void*) ptr > state->beginning) ?
-            SRE_UNI_IS_WORD((int) ptr[-1]) : 0;
-        thisp = ((void*) ptr < state->end) ?
-            SRE_UNI_IS_WORD((int) ptr[0]) : 0;
-        return thisp != thatp;
-
-    case SRE_AT_UNI_NON_BOUNDARY:
-        if (state->beginning == state->end)
-            return 0;
-        thatp = ((void*) ptr > state->beginning) ?
-            SRE_UNI_IS_WORD((int) ptr[-1]) : 0;
-        thisp = ((void*) ptr < state->end) ?
-            SRE_UNI_IS_WORD((int) ptr[0]) : 0;
-        return thisp == thatp;
-#endif
-
-    }
-
-    return 0;
-}
-
-LOCAL(int)
-SRE_CHARSET(SRE_CODE* set, SRE_CODE ch)
-{
-    /* check if character is a member of the given set */
-
-    int ok = 1;
-
-    for (;;) {
-        switch (*set++) {
-
-        case SRE_OP_FAILURE:
-            return !ok;
-
-        case SRE_OP_LITERAL:
-            /* <LITERAL> <code> */
-            if (ch == set[0])
-                return ok;
-            set++;
-            break;
-
-        case SRE_OP_CATEGORY:
-            /* <CATEGORY> <code> */
-            if (sre_category(set[0], (int) ch))
-                return ok;
-            set += 1;
-            break;
-
-        case SRE_OP_CHARSET:
-            if (sizeof(SRE_CODE) == 2) {
-                /* <CHARSET> <bitmap> (16 bits per code word) */
-                if (ch < 256 && (set[ch >> 4] & (1 << (ch & 15))))
-                    return ok;
-                set += 16;
-            }
-            else {
-                /* <CHARSET> <bitmap> (32 bits per code word) */
-                if (ch < 256 && (set[ch >> 5] & (1 << (ch & 31))))
-                    return ok;
-                set += 8;
-            }
-            break;
-
-        case SRE_OP_RANGE:
-            /* <RANGE> <lower> <upper> */
-            if (set[0] <= ch && ch <= set[1])
-                return ok;
-            set += 2;
-            break;
-
-        case SRE_OP_NEGATE:
-            ok = !ok;
-            break;
-
-        case SRE_OP_BIGCHARSET:
-            /* <BIGCHARSET> <blockcount> <256 blockindices> <blocks> */
-        {
-            Py_ssize_t count, block;
-            count = *(set++);
-
-            if (sizeof(SRE_CODE) == 2) {
-                block = ((unsigned char*)set)[ch >> 8];
-                set += 128;
-                if (set[block*16 + ((ch & 255)>>4)] & (1 << (ch & 15)))
-                    return ok;
-                set += count*16;
-            }
-            else {
-                /* !(c & ~N) == (c < N+1) for any unsigned c, this avoids
-                 * warnings when c's type supports only numbers < N+1 */
-                if (!(ch & ~65535))
-                    block = ((unsigned char*)set)[ch >> 8];
-                else
-                    block = -1;
-                set += 64;
-                if (block >=0 &&
-                    (set[block*8 + ((ch & 255)>>5)] & (1 << (ch & 31))))
-                    return ok;
-                set += count*8;
-            }
-            break;
-        }
-
-        default:
-            /* internal error -- there's not much we can do about it
-               here, so let's just pretend it didn't match... */
-            return 0;
-        }
-    }
-}
-
-LOCAL(Py_ssize_t) SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern);
-
-LOCAL(Py_ssize_t)
-SRE_COUNT(SRE_STATE* state, SRE_CODE* pattern, Py_ssize_t maxcount)
-{
-    SRE_CODE chr;
-    SRE_CHAR* ptr = (SRE_CHAR *)state->ptr;
-    SRE_CHAR* end = (SRE_CHAR *)state->end;
-    Py_ssize_t i;
-
-    /* adjust end */
-    if (maxcount < end - ptr && maxcount != 65535)
-        end = ptr + maxcount;
-
-    switch (pattern[0]) {
-
-    case SRE_OP_IN:
-        /* repeated set */
-        TRACE(("|%p|%p|COUNT IN\n", pattern, ptr));
-        while (ptr < end && SRE_CHARSET(pattern + 2, *ptr))
-            ptr++;
-        break;
-
-    case SRE_OP_ANY:
-        /* repeated dot wildcard. */
-        TRACE(("|%p|%p|COUNT ANY\n", pattern, ptr));
-        while (ptr < end && !SRE_IS_LINEBREAK(*ptr))
-            ptr++;
-        break;
-
-    case SRE_OP_ANY_ALL:
-        /* repeated dot wildcard.  skip to the end of the target
-           string, and backtrack from there */
-        TRACE(("|%p|%p|COUNT ANY_ALL\n", pattern, ptr));
-        ptr = end;
-        break;
-
-    case SRE_OP_LITERAL:
-        /* repeated literal */
-        chr = pattern[1];
-        TRACE(("|%p|%p|COUNT LITERAL %d\n", pattern, ptr, chr));
-        while (ptr < end && (SRE_CODE) *ptr == chr)
-            ptr++;
-        break;
-
-    case SRE_OP_LITERAL_IGNORE:
-        /* repeated literal */
-        chr = pattern[1];
-        TRACE(("|%p|%p|COUNT LITERAL_IGNORE %d\n", pattern, ptr, chr));
-        while (ptr < end && (SRE_CODE) state->lower(*ptr) == chr)
-            ptr++;
-        break;
-
-    case SRE_OP_NOT_LITERAL:
-        /* repeated non-literal */
-        chr = pattern[1];
-        TRACE(("|%p|%p|COUNT NOT_LITERAL %d\n", pattern, ptr, chr));
-        while (ptr < end && (SRE_CODE) *ptr != chr)
-            ptr++;
-        break;
-
-    case SRE_OP_NOT_LITERAL_IGNORE:
-        /* repeated non-literal */
-        chr = pattern[1];
-        TRACE(("|%p|%p|COUNT NOT_LITERAL_IGNORE %d\n", pattern, ptr, chr));
-        while (ptr < end && (SRE_CODE) state->lower(*ptr) != chr)
-            ptr++;
-        break;
-
-    default:
-        /* repeated single character pattern */
-        TRACE(("|%p|%p|COUNT SUBPATTERN\n", pattern, ptr));
-        while ((SRE_CHAR*) state->ptr < end) {
-            i = SRE_MATCH(state, pattern);
-            if (i < 0)
-                return i;
-            if (!i)
-                break;
-        }
-        TRACE(("|%p|%p|COUNT %d\n", pattern, ptr,
-               (SRE_CHAR*) state->ptr - ptr));
-        return (SRE_CHAR*) state->ptr - ptr;
-    }
-
-    TRACE(("|%p|%p|COUNT %d\n", pattern, ptr, ptr - (SRE_CHAR*) state->ptr));
-    return ptr - (SRE_CHAR*) state->ptr;
-}
-
-#if 0 /* not used in this release */
-LOCAL(int)
-SRE_INFO(SRE_STATE* state, SRE_CODE* pattern)
-{
-    /* check if an SRE_OP_INFO block matches at the current position.
-       returns the number of SRE_CODE objects to skip if successful, 0
-       if no match */
-
-    SRE_CHAR* end = state->end;
-    SRE_CHAR* ptr = state->ptr;
-    Py_ssize_t i;
-
-    /* check minimal length */
-    if (pattern[3] && (end - ptr) < pattern[3])
-        return 0;
-
-    /* check known prefix */
-    if (pattern[2] & SRE_INFO_PREFIX && pattern[5] > 1) {
-        /* <length> <skip> <prefix data> <overlap data> */
-        for (i = 0; i < pattern[5]; i++)
-            if ((SRE_CODE) ptr[i] != pattern[7 + i])
-                return 0;
-        return pattern[0] + 2 * pattern[6];
-    }
-    return pattern[0];
-}
-#endif
-
-/* The macros below should be used to protect recursive SRE_MATCH()
- * calls that *failed* and do *not* return immediately (IOW, those
- * that will backtrack). Explaining:
- *
- * - Recursive SRE_MATCH() returned true: that's usually a success
- *   (besides atypical cases like ASSERT_NOT), therefore there's no
- *   reason to restore lastmark;
- *
- * - Recursive SRE_MATCH() returned false but the current SRE_MATCH()
- *   is returning to the caller: If the current SRE_MATCH() is the
- *   top function of the recursion, returning false will be a matching
- *   failure, and it doesn't matter where lastmark is pointing to.
- *   If it's *not* the top function, it will be a recursive SRE_MATCH()
- *   failure by itself, and the calling SRE_MATCH() will have to deal
- *   with the failure by the same rules explained here (it will restore
- *   lastmark by itself if necessary);
- *
- * - Recursive SRE_MATCH() returned false, and will continue the
- *   outside 'for' loop: must be protected when breaking, since the next
- *   OP could potentially depend on lastmark;
- *
- * - Recursive SRE_MATCH() returned false, and will be called again
- *   inside a local for/while loop: must be protected between each
- *   loop iteration, since the recursive SRE_MATCH() could do anything,
- *   and could potentially depend on lastmark.
- *
- * For more information, check the discussion at SF patch #712900.
- */
-#define LASTMARK_SAVE()     \
-    do { \
-        ctx->lastmark = state->lastmark; \
-        ctx->lastindex = state->lastindex; \
-    } while (0)
-#define LASTMARK_RESTORE()  \
-    do { \
-        state->lastmark = ctx->lastmark; \
-        state->lastindex = ctx->lastindex; \
-    } while (0)
-
-#define RETURN_ERROR(i) do { return i; } while(0)
-#define RETURN_FAILURE do { ret = 0; goto exit; } while(0)
-#define RETURN_SUCCESS do { ret = 1; goto exit; } while(0)
-
-#define RETURN_ON_ERROR(i) \
-    do { if (i < 0) RETURN_ERROR(i); } while (0)
-#define RETURN_ON_SUCCESS(i) \
-    do { RETURN_ON_ERROR(i); if (i > 0) RETURN_SUCCESS; } while (0)
-#define RETURN_ON_FAILURE(i) \
-    do { RETURN_ON_ERROR(i); if (i == 0) RETURN_FAILURE; } while (0)
-
-#define SFY(x) #x
-
-#define DATA_STACK_ALLOC(state, type, ptr) \
-do { \
-    alloc_pos = state->data_stack_base; \
-    TRACE(("allocating %s in %d (%d)\n", \
-           SFY(type), alloc_pos, sizeof(type))); \
-    if (state->data_stack_size < alloc_pos+sizeof(type)) { \
-        int j = data_stack_grow(state, sizeof(type)); \
-        if (j < 0) return j; \
-        if (ctx_pos != -1) \
-            DATA_STACK_LOOKUP_AT(state, SRE_MATCH_CONTEXT, ctx, ctx_pos); \
-    } \
-    ptr = (type*)(state->data_stack+alloc_pos); \
-    state->data_stack_base += sizeof(type); \
-} while (0)
-
-#define DATA_STACK_LOOKUP_AT(state, type, ptr, pos) \
-do { \
-    TRACE(("looking up %s at %d\n", SFY(type), pos)); \
-    ptr = (type*)(state->data_stack+pos); \
-} while (0)
-
-#define DATA_STACK_PUSH(state, data, size) \
-do { \
-    TRACE(("copy data in %p to %d (%d)\n", \
-           data, state->data_stack_base, size)); \
-    if (state->data_stack_size < state->data_stack_base+size) { \
-        int j = data_stack_grow(state, size); \
-        if (j < 0) return j; \
-        if (ctx_pos != -1) \
-            DATA_STACK_LOOKUP_AT(state, SRE_MATCH_CONTEXT, ctx, ctx_pos); \
-    } \
-    memcpy(state->data_stack+state->data_stack_base, data, size); \
-    state->data_stack_base += size; \
-} while (0)
-
-#define DATA_STACK_POP(state, data, size, discard) \
-do { \
-    TRACE(("copy data to %p from %d (%d)\n", \
-           data, state->data_stack_base-size, size)); \
-    memcpy(data, state->data_stack+state->data_stack_base-size, size); \
-    if (discard) \
-        state->data_stack_base -= size; \
-} while (0)
-
-#define DATA_STACK_POP_DISCARD(state, size) \
-do { \
-    TRACE(("discard data from %d (%d)\n", \
-           state->data_stack_base-size, size)); \
-    state->data_stack_base -= size; \
-} while(0)
-
-#define DATA_PUSH(x) \
-    DATA_STACK_PUSH(state, (x), sizeof(*(x)))
-#define DATA_POP(x) \
-    DATA_STACK_POP(state, (x), sizeof(*(x)), 1)
-#define DATA_POP_DISCARD(x) \
-    DATA_STACK_POP_DISCARD(state, sizeof(*(x)))
-#define DATA_ALLOC(t,p) \
-    DATA_STACK_ALLOC(state, t, p)
-#define DATA_LOOKUP_AT(t,p,pos) \
-    DATA_STACK_LOOKUP_AT(state,t,p,pos)
-
-#define MARK_PUSH(lastmark) \
-    do if (lastmark > 0) { \
-        i = lastmark; /* ctx->lastmark may change if reallocated */ \
-        DATA_STACK_PUSH(state, state->mark, (i+1)*sizeof(void*)); \
-    } while (0)
-#define MARK_POP(lastmark) \
-    do if (lastmark > 0) { \
-        DATA_STACK_POP(state, state->mark, (lastmark+1)*sizeof(void*), 1); \
-    } while (0)
-#define MARK_POP_KEEP(lastmark) \
-    do if (lastmark > 0) { \
-        DATA_STACK_POP(state, state->mark, (lastmark+1)*sizeof(void*), 0); \
-    } while (0)
-#define MARK_POP_DISCARD(lastmark) \
-    do if (lastmark > 0) { \
-        DATA_STACK_POP_DISCARD(state, (lastmark+1)*sizeof(void*)); \
-    } while (0)
-
-#define JUMP_NONE            0
-#define JUMP_MAX_UNTIL_1     1
-#define JUMP_MAX_UNTIL_2     2
-#define JUMP_MAX_UNTIL_3     3
-#define JUMP_MIN_UNTIL_1     4
-#define JUMP_MIN_UNTIL_2     5
-#define JUMP_MIN_UNTIL_3     6
-#define JUMP_REPEAT          7
-#define JUMP_REPEAT_ONE_1    8
-#define JUMP_REPEAT_ONE_2    9
-#define JUMP_MIN_REPEAT_ONE  10
-#define JUMP_BRANCH          11
-#define JUMP_ASSERT          12
-#define JUMP_ASSERT_NOT      13
-
-#define DO_JUMP(jumpvalue, jumplabel, nextpattern) \
-    DATA_ALLOC(SRE_MATCH_CONTEXT, nextctx); \
-    nextctx->last_ctx_pos = ctx_pos; \
-    nextctx->jump = jumpvalue; \
-    nextctx->pattern = nextpattern; \
-    ctx_pos = alloc_pos; \
-    ctx = nextctx; \
-    goto entrance; \
-    jumplabel: \
-    while (0) /* gcc doesn't like labels at end of scopes */ \
-
-typedef struct {
-    Py_ssize_t last_ctx_pos;
-    Py_ssize_t jump;
-    SRE_CHAR* ptr;
-    SRE_CODE* pattern;
-    Py_ssize_t count;
-    Py_ssize_t lastmark;
-    Py_ssize_t lastindex;
-    union {
-        SRE_CODE chr;
-        SRE_REPEAT* rep;
-    } u;
-} SRE_MATCH_CONTEXT;
-
-/* check if string matches the given pattern.  returns <0 for
-   error, 0 for failure, and 1 for success */
-LOCAL(Py_ssize_t)
-SRE_MATCH(SRE_STATE* state, SRE_CODE* pattern)
-{
-    SRE_CHAR* end = (SRE_CHAR *)state->end;
-    Py_ssize_t alloc_pos, ctx_pos = -1;
-    Py_ssize_t i, ret = 0;
-    Py_ssize_t jump;
-    unsigned int sigcount=0;
-
-    SRE_MATCH_CONTEXT* ctx;
-    SRE_MATCH_CONTEXT* nextctx;
-
-    TRACE(("|%p|%p|ENTER\n", pattern, state->ptr));
-
-    DATA_ALLOC(SRE_MATCH_CONTEXT, ctx);
-    ctx->last_ctx_pos = -1;
-    ctx->jump = JUMP_NONE;
-    ctx->pattern = pattern;
-    ctx_pos = alloc_pos;
-
-entrance:
-
-    ctx->ptr = (SRE_CHAR *)state->ptr;
-
-    if (ctx->pattern[0] == SRE_OP_INFO) {
-        /* optimization info block */
-        /* <INFO> <1=skip> <2=flags> <3=min> ... */
-        if (ctx->pattern[3] && (end - ctx->ptr) < ctx->pattern[3]) {
-            TRACE(("reject (got %d chars, need %d)\n",
-                   (end - ctx->ptr), ctx->pattern[3]));
-            RETURN_FAILURE;
-        }
-        ctx->pattern += ctx->pattern[1] + 1;
-    }
-
-    for (;;) {
-        ++sigcount;
-        if ((0 == (sigcount & 0xfff)) && PyErr_CheckSignals())
-            RETURN_ERROR(SRE_ERROR_INTERRUPTED);
-
-        switch (*ctx->pattern++) {
-
-        case SRE_OP_MARK:
-            /* set mark */
-            /* <MARK> <gid> */
-            TRACE(("|%p|%p|MARK %d\n", ctx->pattern,
-                   ctx->ptr, ctx->pattern[0]));
-            i = ctx->pattern[0];
-            if (i & 1)
-                state->lastindex = i/2 + 1;
-            if (i > state->lastmark) {
-                /* state->lastmark is the highest valid index in the
-                   state->mark array.  If it is increased by more than 1,
-                   the intervening marks must be set to NULL to signal
-                   that these marks have not been encountered. */
-                Py_ssize_t j = state->lastmark + 1;
-                while (j < i)
-                    state->mark[j++] = NULL;
-                state->lastmark = i;
-            }
-            state->mark[i] = ctx->ptr;
-            ctx->pattern++;
-            break;
-
-        case SRE_OP_LITERAL:
-            /* match literal string */
-            /* <LITERAL> <code> */
-            TRACE(("|%p|%p|LITERAL %d\n", ctx->pattern,
-                   ctx->ptr, *ctx->pattern));
-            if (ctx->ptr >= end || (SRE_CODE) ctx->ptr[0] != ctx->pattern[0])
-                RETURN_FAILURE;
-            ctx->pattern++;
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_NOT_LITERAL:
-            /* match anything that is not literal character */
-            /* <NOT_LITERAL> <code> */
-            TRACE(("|%p|%p|NOT_LITERAL %d\n", ctx->pattern,
-                   ctx->ptr, *ctx->pattern));
-            if (ctx->ptr >= end || (SRE_CODE) ctx->ptr[0] == ctx->pattern[0])
-                RETURN_FAILURE;
-            ctx->pattern++;
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_SUCCESS:
-            /* end of pattern */
-            TRACE(("|%p|%p|SUCCESS\n", ctx->pattern, ctx->ptr));
-            state->ptr = ctx->ptr;
-            RETURN_SUCCESS;
-
-        case SRE_OP_AT:
-            /* match at given position */
-            /* <AT> <code> */
-            TRACE(("|%p|%p|AT %d\n", ctx->pattern, ctx->ptr, *ctx->pattern));
-            if (!SRE_AT(state, ctx->ptr, *ctx->pattern))
-                RETURN_FAILURE;
-            ctx->pattern++;
-            break;
-
-        case SRE_OP_CATEGORY:
-            /* match at given category */
-            /* <CATEGORY> <code> */
-            TRACE(("|%p|%p|CATEGORY %d\n", ctx->pattern,
-                   ctx->ptr, *ctx->pattern));
-            if (ctx->ptr >= end || !sre_category(ctx->pattern[0], ctx->ptr[0]))
-                RETURN_FAILURE;
-            ctx->pattern++;
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_ANY:
-            /* match anything (except a newline) */
-            /* <ANY> */
-            TRACE(("|%p|%p|ANY\n", ctx->pattern, ctx->ptr));
-            if (ctx->ptr >= end || SRE_IS_LINEBREAK(ctx->ptr[0]))
-                RETURN_FAILURE;
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_ANY_ALL:
-            /* match anything */
-            /* <ANY_ALL> */
-            TRACE(("|%p|%p|ANY_ALL\n", ctx->pattern, ctx->ptr));
-            if (ctx->ptr >= end)
-                RETURN_FAILURE;
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_IN:
-            /* match set member (or non_member) */
-            /* <IN> <skip> <set> */
-            TRACE(("|%p|%p|IN\n", ctx->pattern, ctx->ptr));
-            if (ctx->ptr >= end || !SRE_CHARSET(ctx->pattern + 1, *ctx->ptr))
-                RETURN_FAILURE;
-            ctx->pattern += ctx->pattern[0];
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_LITERAL_IGNORE:
-            TRACE(("|%p|%p|LITERAL_IGNORE %d\n",
-                   ctx->pattern, ctx->ptr, ctx->pattern[0]));
-            if (ctx->ptr >= end ||
-                state->lower(*ctx->ptr) != state->lower(*ctx->pattern))
-                RETURN_FAILURE;
-            ctx->pattern++;
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_NOT_LITERAL_IGNORE:
-            TRACE(("|%p|%p|NOT_LITERAL_IGNORE %d\n",
-                   ctx->pattern, ctx->ptr, *ctx->pattern));
-            if (ctx->ptr >= end ||
-                state->lower(*ctx->ptr) == state->lower(*ctx->pattern))
-                RETURN_FAILURE;
-            ctx->pattern++;
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_IN_IGNORE:
-            TRACE(("|%p|%p|IN_IGNORE\n", ctx->pattern, ctx->ptr));
-            if (ctx->ptr >= end
-                || !SRE_CHARSET(ctx->pattern+1,
-                                (SRE_CODE)state->lower(*ctx->ptr)))
-                RETURN_FAILURE;
-            ctx->pattern += ctx->pattern[0];
-            ctx->ptr++;
-            break;
-
-        case SRE_OP_JUMP:
-        case SRE_OP_INFO:
-            /* jump forward */
-            /* <JUMP> <offset> */
-            TRACE(("|%p|%p|JUMP %d\n", ctx->pattern,
-                   ctx->ptr, ctx->pattern[0]));
-            ctx->pattern += ctx->pattern[0];
-            break;
-
-        case SRE_OP_BRANCH:
-            /* alternation */
-            /* <BRANCH> <0=skip> code <JUMP> ... <NULL> */
-            TRACE(("|%p|%p|BRANCH\n", ctx->pattern, ctx->ptr));
-            LASTMARK_SAVE();
-            ctx->u.rep = state->repeat;
-            if (ctx->u.rep)
-                MARK_PUSH(ctx->lastmark);
-            for (; ctx->pattern[0]; ctx->pattern += ctx->pattern[0]) {
-                if (ctx->pattern[1] == SRE_OP_LITERAL &&
-                    (ctx->ptr >= end ||
-                     (SRE_CODE) *ctx->ptr != ctx->pattern[2]))
-                    continue;
-                if (ctx->pattern[1] == SRE_OP_IN &&
-                    (ctx->ptr >= end ||
-                     !SRE_CHARSET(ctx->pattern + 3, (SRE_CODE) *ctx->ptr)))
-                    continue;
-                state->ptr = ctx->ptr;
-                DO_JUMP(JUMP_BRANCH, jump_branch, ctx->pattern+1);
-                if (ret) {
-                    if (ctx->u.rep)
-                        MARK_POP_DISCARD(ctx->lastmark);
-                    RETURN_ON_ERROR(ret);
-                    RETURN_SUCCESS;
-                }
-                if (ctx->u.rep)
-                    MARK_POP_KEEP(ctx->lastmark);
-                LASTMARK_RESTORE();
-            }
-            if (ctx->u.rep)
-                MARK_POP_DISCARD(ctx->lastmark);
-            RETURN_FAILURE;
-
-        case SRE_OP_REPEAT_ONE:
-            /* match repeated sequence (maximizing regexp) */
-
-            /* this operator only works if the repeated item is
-               exactly one character wide, and we're not already
-               collecting backtracking points.  for other cases,
-               use the MAX_REPEAT operator */
-
-            /* <REPEAT_ONE> <skip> <1=min> <2=max> item <SUCCESS> tail */
-
-            TRACE(("|%p|%p|REPEAT_ONE %d %d\n", ctx->pattern, ctx->ptr,
-                   ctx->pattern[1], ctx->pattern[2]));
-
-            if (ctx->ptr + ctx->pattern[1] > end)
-                RETURN_FAILURE; /* cannot match */
-
-            state->ptr = ctx->ptr;
-
-            ret = SRE_COUNT(state, ctx->pattern+3, ctx->pattern[2]);
-            RETURN_ON_ERROR(ret);
-            DATA_LOOKUP_AT(SRE_MATCH_CONTEXT, ctx, ctx_pos);
-            ctx->count = ret;
-            ctx->ptr += ctx->count;
-
-            /* when we arrive here, count contains the number of
-               matches, and ctx->ptr points to the tail of the target
-               string.  check if the rest of the pattern matches,
-               and backtrack if not. */
-
-            if (ctx->count < (Py_ssize_t) ctx->pattern[1])
-                RETURN_FAILURE;
-
-            if (ctx->pattern[ctx->pattern[0]] == SRE_OP_SUCCESS) {
-                /* tail is empty.  we're finished */
-                state->ptr = ctx->ptr;
-                RETURN_SUCCESS;
-            }
-
-            LASTMARK_SAVE();
-
-            if (ctx->pattern[ctx->pattern[0]] == SRE_OP_LITERAL) {
-                /* tail starts with a literal. skip positions where
-                   the rest of the pattern cannot possibly match */
-                ctx->u.chr = ctx->pattern[ctx->pattern[0]+1];
-                for (;;) {
-                    while (ctx->count >= (Py_ssize_t) ctx->pattern[1] &&
-                           (ctx->ptr >= end || *ctx->ptr != ctx->u.chr)) {
-                        ctx->ptr--;
-                        ctx->count--;
-                    }
-                    if (ctx->count < (Py_ssize_t) ctx->pattern[1])
-                        break;
-                    state->ptr = ctx->ptr;
-                    DO_JUMP(JUMP_REPEAT_ONE_1, jump_repeat_one_1,
-                            ctx->pattern+ctx->pattern[0]);
-                    if (ret) {
-                        RETURN_ON_ERROR(ret);
-                        RETURN_SUCCESS;
-                    }
-
-                    LASTMARK_RESTORE();
-
-                    ctx->ptr--;
-                    ctx->count--;
-                }
-
-            } else {
-                /* general case */
-                while (ctx->count >= (Py_ssize_t) ctx->pattern[1]) {
-                    state->ptr = ctx->ptr;
-                    DO_JUMP(JUMP_REPEAT_ONE_2, jump_repeat_one_2,
-                            ctx->pattern+ctx->pattern[0]);
-                    if (ret) {
-                        RETURN_ON_ERROR(ret);
-                        RETURN_SUCCESS;
-                    }
-                    ctx->ptr--;
-                    ctx->count--;
-                    LASTMARK_RESTORE();
-                }
-            }
-            RETURN_FAILURE;
-
-        case SRE_OP_MIN_REPEAT_ONE:
-            /* match repeated sequence (minimizing regexp) */
-
-            /* this operator only works if the repeated item is
-               exactly one character wide, and we're not already
-               collecting backtracking points.  for other cases,
-               use the MIN_REPEAT operator */
-
-            /* <MIN_REPEAT_ONE> <skip> <1=min> <2=max> item <SUCCESS> tail */
-
-            TRACE(("|%p|%p|MIN_REPEAT_ONE %d %d\n", ctx->pattern, ctx->ptr,
-                   ctx->pattern[1], ctx->pattern[2]));
-
-            if (ctx->ptr + ctx->pattern[1] > end)
-                RETURN_FAILURE; /* cannot match */
-
-            state->ptr = ctx->ptr;
-
-            if (ctx->pattern[1] == 0)
-                ctx->count = 0;
-            else {
-                /* count using pattern min as the maximum */
-                ret = SRE_COUNT(state, ctx->pattern+3, ctx->pattern[1]);
-                RETURN_ON_ERROR(ret);
-                DATA_LOOKUP_AT(SRE_MATCH_CONTEXT, ctx, ctx_pos);
-                if (ret < (Py_ssize_t) ctx->pattern[1])
-                    /* didn't match minimum number of times */
-                    RETURN_FAILURE;
-                /* advance past minimum matches of repeat */
-                ctx->count = ret;
-                ctx->ptr += ctx->count;
-            }
-
-            if (ctx->pattern[ctx->pattern[0]] == SRE_OP_SUCCESS) {
-                /* tail is empty.  we're finished */
-                state->ptr = ctx->ptr;
-                RETURN_SUCCESS;
-
-            } else {
-                /* general case */
-                LASTMARK_SAVE();
-                while ((Py_ssize_t)ctx->pattern[2] == 65535
-                       || ctx->count <= (Py_ssize_t)ctx->pattern[2]) {
-                    state->ptr = ctx->ptr;
-                    DO_JUMP(JUMP_MIN_REPEAT_ONE,jump_min_repeat_one,
-                            ctx->pattern+ctx->pattern[0]);
-                    if (ret) {
-                        RETURN_ON_ERROR(ret);
-                        RETURN_SUCCESS;
-                    }
-                    state->ptr = ctx->ptr;
-                    ret = SRE_COUNT(state, ctx->pattern+3, 1);
-                    RETURN_ON_ERROR(ret);
-                    DATA_LOOKUP_AT(SRE_MATCH_CONTEXT, ctx, ctx_pos);
-                    if (ret == 0)
-                        break;
-                    assert(ret == 1);
-                    ctx->ptr++;
-                    ctx->count++;
-                    LASTMARK_RESTORE();
-                }
-            }
-            RETURN_FAILURE;
-
-        case SRE_OP_REPEAT:
-            /* create repeat context.  all the hard work is done
-               by the UNTIL operator (MAX_UNTIL, MIN_UNTIL) */
-            /* <REPEAT> <skip> <1=min> <2=max> item <UNTIL> tail */
-            TRACE(("|%p|%p|REPEAT %d %d\n", ctx->pattern, ctx->ptr,
-                   ctx->pattern[1], ctx->pattern[2]));
-
-            /* install new repeat context */
-            ctx->u.rep = (SRE_REPEAT*) PyObject_MALLOC(sizeof(*ctx->u.rep));
-            if (!ctx->u.rep) {
-                PyErr_NoMemory();
-                RETURN_FAILURE;
-            }
-            ctx->u.rep->count = -1;
-            ctx->u.rep->pattern = ctx->pattern;
-            ctx->u.rep->prev = state->repeat;
-            ctx->u.rep->last_ptr = NULL;
-            state->repeat = ctx->u.rep;
-
-            state->ptr = ctx->ptr;
-            DO_JUMP(JUMP_REPEAT, jump_repeat, ctx->pattern+ctx->pattern[0]);
-            state->repeat = ctx->u.rep->prev;
-            PyObject_FREE(ctx->u.rep);
-
-            if (ret) {
-                RETURN_ON_ERROR(ret);
-                RETURN_SUCCESS;
-            }
-            RETURN_FAILURE;
-
-        case SRE_OP_MAX_UNTIL:
-            /* maximizing repeat */
-            /* <REPEAT> <skip> <1=min> <2=max> item <MAX_UNTIL> tail */
-
-            /* FIXME: we probably need to deal with zero-width
-               matches in here... */
-
-            ctx->u.rep = state->repeat;
-            if (!ctx->u.rep)
-                RETURN_ERROR(SRE_ERROR_STATE);
-
-            state->ptr = ctx->ptr;
-
-            ctx->count = ctx->u.rep->count+1;
-
-            TRACE(("|%p|%p|MAX_UNTIL %d\n", ctx->pattern,
-                   ctx->ptr, ctx->count));
-
-            if (ctx->count < ctx->u.rep->pattern[1]) {
-                /* not enough matches */
-                ctx->u.rep->count = ctx->count;
-                DO_JUMP(JUMP_MAX_UNTIL_1, jump_max_until_1,
-                        ctx->u.rep->pattern+3);
-                if (ret) {
-                    RETURN_ON_ERROR(ret);
-                    RETURN_SUCCESS;
-                }
-                ctx->u.rep->count = ctx->count-1;
-                state->ptr = ctx->ptr;
-                RETURN_FAILURE;
-            }
-
-            if ((ctx->count < ctx->u.rep->pattern[2] ||
-                ctx->u.rep->pattern[2] == 65535) &&
-                state->ptr != ctx->u.rep->last_ptr) {
-                /* we may have enough matches, but if we can
-                   match another item, do so */
-                ctx->u.rep->count = ctx->count;
-                LASTMARK_SAVE();
-                MARK_PUSH(ctx->lastmark);
-                /* zero-width match protection */
-                DATA_PUSH(&ctx->u.rep->last_ptr);
-                ctx->u.rep->last_ptr = state->ptr;
-                DO_JUMP(JUMP_MAX_UNTIL_2, jump_max_until_2,
-                        ctx->u.rep->pattern+3);
-                DATA_POP(&ctx->u.rep->last_ptr);
-                if (ret) {
-                    MARK_POP_DISCARD(ctx->lastmark);
-                    RETURN_ON_ERROR(ret);
-                    RETURN_SUCCESS;
-                }
-                MARK_POP(ctx->lastmark);
-                LASTMARK_RESTORE();
-                ctx->u.rep->count = ctx->count-1;
-                state->ptr = ctx->ptr;
-            }
-
-            /* cannot match more repeated items here.  make sure the
-               tail matches */
-            state->repeat = ctx->u.rep->prev;
-            DO_JUMP(JUMP_MAX_UNTIL_3, jump_max_until_3, ctx->pattern);
-            RETURN_ON_SUCCESS(ret);
-            state->repeat = ctx->u.rep;
-            state->ptr = ctx->ptr;
-            RETURN_FAILURE;
-
-        case SRE_OP_MIN_UNTIL:
-            /* minimizing repeat */
-            /* <REPEAT> <skip> <1=min> <2=max> item <MIN_UNTIL> tail */
-
-            ctx->u.rep = state->repeat;
-            if (!ctx->u.rep)
-                RETURN_ERROR(SRE_ERROR_STATE);
-
-            state->ptr = ctx->ptr;
-
-            ctx->count = ctx->u.rep->count+1;
-
-            TRACE(("|%p|%p|MIN_UNTIL %d %p\n", ctx->pattern,
-                   ctx->ptr, ctx->count, ctx->u.rep->pattern));
-
-            if (ctx->count < ctx->u.rep->pattern[1]) {
-                /* not enough matches */
-                ctx->u.rep->count = ctx->count;
-                DO_JUMP(JUMP_MIN_UNTIL_1, jump_min_until_1,
-                        ctx->u.rep->pattern+3);
-                if (ret) {
-                    RETURN_ON_ERROR(ret);
-                    RETURN_SUCCESS;
-                }
-                ctx->u.rep->count = ctx->count-1;
-                state->ptr = ctx->ptr;
-                RETURN_FAILURE;
-            }
-
-            LASTMARK_SAVE();
-
-            /* see if the tail matches */
-            state->repeat = ctx->u.rep->prev;
-            DO_JUMP(JUMP_MIN_UNTIL_2, jump_min_until_2, ctx->pattern);
-            if (ret) {
-                RETURN_ON_ERROR(ret);
-                RETURN_SUCCESS;
-            }
-
-            state->repeat = ctx->u.rep;
-            state->ptr = ctx->ptr;
-
-            LASTMARK_RESTORE();
-
-            if (ctx->count >= ctx->u.rep->pattern[2]
-                && ctx->u.rep->pattern[2] != 65535)
-                RETURN_FAILURE;
-
-            ctx->u.rep->count = ctx->count;
-            DO_JUMP(JUMP_MIN_UNTIL_3,jump_min_until_3,
-                    ctx->u.rep->pattern+3);
-            if (ret) {
-                RETURN_ON_ERROR(ret);
-                RETURN_SUCCESS;
-            }
-            ctx->u.rep->count = ctx->count-1;
-            state->ptr = ctx->ptr;
-            RETURN_FAILURE;
-
-        case SRE_OP_GROUPREF:
-            /* match backreference */
-            TRACE(("|%p|%p|GROUPREF %d\n", ctx->pattern,
-                   ctx->ptr, ctx->pattern[0]));
-            i = ctx->pattern[0];
-            {
-                Py_ssize_t groupref = i+i;
-                if (groupref >= state->lastmark) {
-                    RETURN_FAILURE;
-                } else {
-                    SRE_CHAR* p = (SRE_CHAR*) state->mark[groupref];
-                    SRE_CHAR* e = (SRE_CHAR*) state->mark[groupref+1];
-                    if (!p || !e || e < p)
-                        RETURN_FAILURE;
-                    while (p < e) {
-                        if (ctx->ptr >= end || *ctx->ptr != *p)
-                            RETURN_FAILURE;
-                        p++; ctx->ptr++;
-                    }
-                }
-            }
-            ctx->pattern++;
-            break;
-
-        case SRE_OP_GROUPREF_IGNORE:
-            /* match backreference */
-            TRACE(("|%p|%p|GROUPREF_IGNORE %d\n", ctx->pattern,
-                   ctx->ptr, ctx->pattern[0]));
-            i = ctx->pattern[0];
-            {
-                Py_ssize_t groupref = i+i;
-                if (groupref >= state->lastmark) {
-                    RETURN_FAILURE;
-                } else {
-                    SRE_CHAR* p = (SRE_CHAR*) state->mark[groupref];
-                    SRE_CHAR* e = (SRE_CHAR*) state->mark[groupref+1];
-                    if (!p || !e || e < p)
-                        RETURN_FAILURE;
-                    while (p < e) {
-                        if (ctx->ptr >= end ||
-                            state->lower(*ctx->ptr) != state->lower(*p))
-                            RETURN_FAILURE;
-                        p++; ctx->ptr++;
-                    }
-                }
-            }
-            ctx->pattern++;
-            break;
-
-        case SRE_OP_GROUPREF_EXISTS:
-            TRACE(("|%p|%p|GROUPREF_EXISTS %d\n", ctx->pattern,
-                   ctx->ptr, ctx->pattern[0]));
-            /* <GROUPREF_EXISTS> <group> <skip> codeyes <JUMP> codeno ... */
-            i = ctx->pattern[0];
-            {
-                Py_ssize_t groupref = i+i;
-                if (groupref >= state->lastmark) {
-                    ctx->pattern += ctx->pattern[1];
-                    break;
-                } else {
-                    SRE_CHAR* p = (SRE_CHAR*) state->mark[groupref];
-                    SRE_CHAR* e = (SRE_CHAR*) state->mark[groupref+1];
-                    if (!p || !e || e < p) {
-                        ctx->pattern += ctx->pattern[1];
-                        break;
-                    }
-                }
-            }
-            ctx->pattern += 2;
-            break;
-
-        case SRE_OP_ASSERT:
-            /* assert subpattern */
-            /* <ASSERT> <skip> <back> <pattern> */
-            TRACE(("|%p|%p|ASSERT %d\n", ctx->pattern,
-                   ctx->ptr, ctx->pattern[1]));
-            state->ptr = ctx->ptr - ctx->pattern[1];
-            if (state->ptr < state->beginning)
-                RETURN_FAILURE;
-            DO_JUMP(JUMP_ASSERT, jump_assert, ctx->pattern+2);
-            RETURN_ON_FAILURE(ret);
-            ctx->pattern += ctx->pattern[0];
-            break;
-
-        case SRE_OP_ASSERT_NOT:
-            /* assert not subpattern */
-            /* <ASSERT_NOT> <skip> <back> <pattern> */
-            TRACE(("|%p|%p|ASSERT_NOT %d\n", ctx->pattern,
-                   ctx->ptr, ctx->pattern[1]));
-            state->ptr = ctx->ptr - ctx->pattern[1];
-            if (state->ptr >= state->beginning) {
-                DO_JUMP(JUMP_ASSERT_NOT, jump_assert_not, ctx->pattern+2);
-                if (ret) {
-                    RETURN_ON_ERROR(ret);
-                    RETURN_FAILURE;
-                }
-            }
-            ctx->pattern += ctx->pattern[0];
-            break;
-
-        case SRE_OP_FAILURE:
-            /* immediate failure */
-            TRACE(("|%p|%p|FAILURE\n", ctx->pattern, ctx->ptr));
-            RETURN_FAILURE;
-
-        default:
-            TRACE(("|%p|%p|UNKNOWN %d\n", ctx->pattern, ctx->ptr,
-                   ctx->pattern[-1]));
-            RETURN_ERROR(SRE_ERROR_ILLEGAL);
-        }
-    }
-
-exit:
-    ctx_pos = ctx->last_ctx_pos;
-    jump = ctx->jump;
-    DATA_POP_DISCARD(ctx);
-    if (ctx_pos == -1)
-        return ret;
-    DATA_LOOKUP_AT(SRE_MATCH_CONTEXT, ctx, ctx_pos);
-
-    switch (jump) {
-        case JUMP_MAX_UNTIL_2:
-            TRACE(("|%p|%p|JUMP_MAX_UNTIL_2\n", ctx->pattern, ctx->ptr));
-            goto jump_max_until_2;
-        case JUMP_MAX_UNTIL_3:
-            TRACE(("|%p|%p|JUMP_MAX_UNTIL_3\n", ctx->pattern, ctx->ptr));
-            goto jump_max_until_3;
-        case JUMP_MIN_UNTIL_2:
-            TRACE(("|%p|%p|JUMP_MIN_UNTIL_2\n", ctx->pattern, ctx->ptr));
-            goto jump_min_until_2;
-        case JUMP_MIN_UNTIL_3:
-            TRACE(("|%p|%p|JUMP_MIN_UNTIL_3\n", ctx->pattern, ctx->ptr));
-            goto jump_min_until_3;
-        case JUMP_BRANCH:
-            TRACE(("|%p|%p|JUMP_BRANCH\n", ctx->pattern, ctx->ptr));
-            goto jump_branch;
-        case JUMP_MAX_UNTIL_1:
-            TRACE(("|%p|%p|JUMP_MAX_UNTIL_1\n", ctx->pattern, ctx->ptr));
-            goto jump_max_until_1;
-        case JUMP_MIN_UNTIL_1:
-            TRACE(("|%p|%p|JUMP_MIN_UNTIL_1\n", ctx->pattern, ctx->ptr));
-            goto jump_min_until_1;
-        case JUMP_REPEAT:
-            TRACE(("|%p|%p|JUMP_REPEAT\n", ctx->pattern, ctx->ptr));
-            goto jump_repeat;
-        case JUMP_REPEAT_ONE_1:
-            TRACE(("|%p|%p|JUMP_REPEAT_ONE_1\n", ctx->pattern, ctx->ptr));
-            goto jump_repeat_one_1;
-        case JUMP_REPEAT_ONE_2:
-            TRACE(("|%p|%p|JUMP_REPEAT_ONE_2\n", ctx->pattern, ctx->ptr));
-            goto jump_repeat_one_2;
-        case JUMP_MIN_REPEAT_ONE:
-            TRACE(("|%p|%p|JUMP_MIN_REPEAT_ONE\n", ctx->pattern, ctx->ptr));
-            goto jump_min_repeat_one;
-        case JUMP_ASSERT:
-            TRACE(("|%p|%p|JUMP_ASSERT\n", ctx->pattern, ctx->ptr));
-            goto jump_assert;
-        case JUMP_ASSERT_NOT:
-            TRACE(("|%p|%p|JUMP_ASSERT_NOT\n", ctx->pattern, ctx->ptr));
-            goto jump_assert_not;
-        case JUMP_NONE:
-            TRACE(("|%p|%p|RETURN %d\n", ctx->pattern, ctx->ptr, ret));
-            break;
-    }
-
-    return ret; /* should never get here */
-}
-
-LOCAL(Py_ssize_t)
-SRE_SEARCH(SRE_STATE* state, SRE_CODE* pattern)
-{
-    SRE_CHAR* ptr = (SRE_CHAR *)state->start;
-    SRE_CHAR* end = (SRE_CHAR *)state->end;
-    Py_ssize_t status = 0;
-    Py_ssize_t prefix_len = 0;
-    Py_ssize_t prefix_skip = 0;
-    SRE_CODE* prefix = NULL;
-    SRE_CODE* charset = NULL;
-    SRE_CODE* overlap = NULL;
-    int flags = 0;
-
-    if (pattern[0] == SRE_OP_INFO) {
-        /* optimization info block */
-        /* <INFO> <1=skip> <2=flags> <3=min> <4=max> <5=prefix info>  */
-
-        flags = pattern[2];
-
-        if (pattern[3] > 1) {
-            /* adjust end point (but make sure we leave at least one
-               character in there, so literal search will work) */
-            end -= pattern[3]-1;
-            if (end <= ptr)
-                end = ptr+1;
-        }
-
-        if (flags & SRE_INFO_PREFIX) {
-            /* pattern starts with a known prefix */
-            /* <length> <skip> <prefix data> <overlap data> */
-            prefix_len = pattern[5];
-            prefix_skip = pattern[6];
-            prefix = pattern + 7;
-            overlap = prefix + prefix_len - 1;
-        } else if (flags & SRE_INFO_CHARSET)
-            /* pattern starts with a character from a known set */
-            /* <charset> */
-            charset = pattern + 5;
-
-        pattern += 1 + pattern[1];
-    }
-
-    TRACE(("prefix = %p %d %d\n", prefix, prefix_len, prefix_skip));
-    TRACE(("charset = %p\n", charset));
-
-#if defined(USE_FAST_SEARCH)
-    if (prefix_len > 1) {
-        /* pattern starts with a known prefix.  use the overlap
-           table to skip forward as fast as we possibly can */
-        Py_ssize_t i = 0;
-        end = (SRE_CHAR *)state->end;
-        while (ptr < end) {
-            for (;;) {
-                if ((SRE_CODE) ptr[0] != prefix[i]) {
-                    if (!i)
-                        break;
-                    else
-                        i = overlap[i];
-                } else {
-                    if (++i == prefix_len) {
-                        /* found a potential match */
-                        TRACE(("|%p|%p|SEARCH SCAN\n", pattern, ptr));
-                        state->start = ptr + 1 - prefix_len;
-                        state->ptr = ptr + 1 - prefix_len + prefix_skip;
-                        if (flags & SRE_INFO_LITERAL)
-                            return 1; /* we got all of it */
-                        status = SRE_MATCH(state, pattern + 2*prefix_skip);
-                        if (status != 0)
-                            return status;
-                        /* close but no cigar -- try again */
-                        i = overlap[i];
-                    }
-                    break;
-                }
-            }
-            ptr++;
-        }
-        return 0;
-    }
-#endif
-
-    if (pattern[0] == SRE_OP_LITERAL) {
-        /* pattern starts with a literal character.  this is used
-           for short prefixes, and if fast search is disabled */
-        SRE_CODE chr = pattern[1];
-        end = (SRE_CHAR *)state->end;
-        for (;;) {
-            while (ptr < end && (SRE_CODE) ptr[0] != chr)
-                ptr++;
-            if (ptr >= end)
-                return 0;
-            TRACE(("|%p|%p|SEARCH LITERAL\n", pattern, ptr));
-            state->start = ptr;
-            state->ptr = ++ptr;
-            if (flags & SRE_INFO_LITERAL)
-                return 1; /* we got all of it */
-            status = SRE_MATCH(state, pattern + 2);
-            if (status != 0)
-                break;
-        }
-    } else if (charset) {
-        /* pattern starts with a character from a known set */
-        end = (SRE_CHAR *)state->end;
-        for (;;) {
-            while (ptr < end && !SRE_CHARSET(charset, ptr[0]))
-                ptr++;
-            if (ptr >= end)
-                return 0;
-            TRACE(("|%p|%p|SEARCH CHARSET\n", pattern, ptr));
-            state->start = ptr;
-            state->ptr = ptr;
-            status = SRE_MATCH(state, pattern);
-            if (status != 0)
-                break;
-            ptr++;
-        }
-    } else
-        /* general case */
-        while (ptr <= end) {
-            TRACE(("|%p|%p|SEARCH\n", pattern, ptr));
-            state->start = state->ptr = ptr++;
-            status = SRE_MATCH(state, pattern);
-            if (status != 0)
-                break;
-        }
-
-    return status;
-}
-
-LOCAL(int)
-SRE_LITERAL_TEMPLATE(SRE_CHAR* ptr, Py_ssize_t len)
-{
-    /* check if given string is a literal template (i.e. no escapes) */
-    while (len-- > 0)
-        if (*ptr++ == '\\')
-            return 0;
-    return 1;
-}
-
-#if !defined(SRE_RECURSIVE)
-
-/* -------------------------------------------------------------------- */
-/* factories and destructors */
-
-/* see sre.h for object declarations */
-static PyObject*pattern_new_match(PatternObject*, SRE_STATE*, int);
-static PyObject*pattern_scanner(PatternObject*, PyObject*);
-
-static PyObject *
-sre_codesize(PyObject* self, PyObject *unused)
-{
-    return Py_BuildValue("l", sizeof(SRE_CODE));
-}
-
-static PyObject *
-sre_getlower(PyObject* self, PyObject* args)
-{
-    int character, flags;
-    if (!PyArg_ParseTuple(args, "ii", &character, &flags))
-        return NULL;
-    if (flags & SRE_FLAG_LOCALE)
-        return Py_BuildValue("i", sre_lower_locale(character));
-    if (flags & SRE_FLAG_UNICODE)
-#if defined(HAVE_UNICODE)
-        return Py_BuildValue("i", sre_lower_unicode(character));
-#else
-        return Py_BuildValue("i", sre_lower_locale(character));
-#endif
-    return Py_BuildValue("i", sre_lower(character));
-}
-
-LOCAL(void)
-state_reset(SRE_STATE* state)
-{
-    /* FIXME: dynamic! */
-    /*memset(state->mark, 0, sizeof(*state->mark) * SRE_MARK_SIZE);*/
-
-    state->lastmark = -1;
-    state->lastindex = -1;
-
-    state->repeat = NULL;
-
-    data_stack_dealloc(state);
-}
-
-static void*
-getstring(PyObject* string, Py_ssize_t* p_length, int* p_charsize)
-{
-    /* given a python object, return a data pointer, a length (in
-       characters), and a character size.  return NULL if the object
-       is not a string (or not compatible) */
-
-    PyBufferProcs *buffer;
-    Py_ssize_t size, bytes;
-    int charsize;
-    void* ptr;
-
-#if defined(HAVE_UNICODE)
-    if (PyUnicode_Check(string)) {
-        /* unicode strings doesn't always support the buffer interface */
-        ptr = (void*) PyUnicode_AS_DATA(string);
-        /* bytes = PyUnicode_GET_DATA_SIZE(string); */
-        size = PyUnicode_GET_SIZE(string);
-        charsize = sizeof(Py_UNICODE);
-
-    } else {
-#endif
-
-    /* get pointer to string buffer */
-    buffer = Py_TYPE(string)->tp_as_buffer;
-    if (!buffer || !buffer->bf_getreadbuffer || !buffer->bf_getsegcount ||
-        buffer->bf_getsegcount(string, NULL) != 1) {
-        PyErr_SetString(PyExc_TypeError, "expected string or buffer");
-        return NULL;
-    }
-
-    /* determine buffer size */
-    bytes = buffer->bf_getreadbuffer(string, 0, &ptr);
-    if (bytes < 0) {
-        PyErr_SetString(PyExc_TypeError, "buffer has negative size");
-        return NULL;
-    }
-
-    /* determine character size */
-#if PY_VERSION_HEX >= 0x01060000
-    size = PyObject_Size(string);
-#else
-    size = PyObject_Length(string);
-#endif
-
-    if (PyString_Check(string) || bytes == size)
-        charsize = 1;
-#if defined(HAVE_UNICODE)
-    else if (bytes == (Py_ssize_t) (size * sizeof(Py_UNICODE)))
-        charsize = sizeof(Py_UNICODE);
-#endif
-    else {
-        PyErr_SetString(PyExc_TypeError, "buffer size mismatch");
-        return NULL;
-    }
-
-#if defined(HAVE_UNICODE)
-    }
-#endif
-
-    *p_length = size;
-    *p_charsize = charsize;
-
-    return ptr;
-}
-
-LOCAL(PyObject*)
-state_init(SRE_STATE* state, PatternObject* pattern, PyObject* string,
-           Py_ssize_t start, Py_ssize_t end)
-{
-    /* prepare state object */
-
-    Py_ssize_t length;
-    int charsize;
-    void* ptr;
-
-    memset(state, 0, sizeof(SRE_STATE));
-
-    state->lastmark = -1;
-    state->lastindex = -1;
-
-    ptr = getstring(string, &length, &charsize);
-    if (!ptr)
-        return NULL;
-
-    /* adjust boundaries */
-    if (start < 0)
-        start = 0;
-    else if (start > length)
-        start = length;
-
-    if (end < 0)
-        end = 0;
-    else if (end > length)
-        end = length;
-
-    state->charsize = charsize;
-
-    state->beginning = ptr;
-
-    state->start = (void*) ((char*) ptr + start * state->charsize);
-    state->end = (void*) ((char*) ptr + end * state->charsize);
-
-    Py_INCREF(string);
-    state->string = string;
-    state->pos = start;
-    state->endpos = end;
-
-    if (pattern->flags & SRE_FLAG_LOCALE)
-        state->lower = sre_lower_locale;
-    else if (pattern->flags & SRE_FLAG_UNICODE)
-#if defined(HAVE_UNICODE)
-        state->lower = sre_lower_unicode;
-#else
-        state->lower = sre_lower_locale;
-#endif
-    else
-        state->lower = sre_lower;
-
-    return string;
-}
-
-LOCAL(void)
-state_fini(SRE_STATE* state)
-{
-    Py_XDECREF(state->string);
-    data_stack_dealloc(state);
-}
-
-/* calculate offset from start of string */
-#define STATE_OFFSET(state, member)\
-    (((char*)(member) - (char*)(state)->beginning) / (state)->charsize)
-
-LOCAL(PyObject*)
-state_getslice(SRE_STATE* state, Py_ssize_t index, PyObject* string, int empty)
-{
-    Py_ssize_t i, j;
-
-    index = (index - 1) * 2;
-
-    if (string == Py_None || index >= state->lastmark || !state->mark[index] || !state->mark[index+1]) {
-        if (empty)
-            /* want empty string */
-            i = j = 0;
-        else {
-            Py_INCREF(Py_None);
-            return Py_None;
-        }
-    } else {
-        i = STATE_OFFSET(state, state->mark[index]);
-        j = STATE_OFFSET(state, state->mark[index+1]);
-    }
-
-    return PySequence_GetSlice(string, i, j);
-}
-
-static void
-pattern_error(int status)
-{
-    switch (status) {
-    case SRE_ERROR_RECURSION_LIMIT:
-        PyErr_SetString(
-            PyExc_RuntimeError,
-            "maximum recursion limit exceeded"
-            );
-        break;
-    case SRE_ERROR_MEMORY:
-        PyErr_NoMemory();
-        break;
-    case SRE_ERROR_INTERRUPTED:
-    /* An exception has already been raised, so let it fly */
-        break;
-    default:
-        /* other error codes indicate compiler/engine bugs */
-        PyErr_SetString(
-            PyExc_RuntimeError,
-            "internal error in regular expression engine"
-            );
-    }
-}
-
-static void
-pattern_dealloc(PatternObject* self)
-{
-    if (self->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) self);
-    Py_XDECREF(self->pattern);
-    Py_XDECREF(self->groupindex);
-    Py_XDECREF(self->indexgroup);
-    PyObject_DEL(self);
-}
-
-static PyObject*
-pattern_match(PatternObject* self, PyObject* args, PyObject* kw)
-{
-    SRE_STATE state;
-    int status;
-
-    PyObject* string;
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    static char* kwlist[] = { "pattern", "pos", "endpos", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "O|nn:match", kwlist,
-                                     &string, &start, &end))
-        return NULL;
-
-    string = state_init(&state, self, string, start, end);
-    if (!string)
-        return NULL;
-
-    state.ptr = state.start;
-
-    TRACE(("|%p|%p|MATCH\n", PatternObject_GetCode(self), state.ptr));
-
-    if (state.charsize == 1) {
-        status = sre_match(&state, PatternObject_GetCode(self));
-    } else {
-#if defined(HAVE_UNICODE)
-        status = sre_umatch(&state, PatternObject_GetCode(self));
-#endif
-    }
-
-    TRACE(("|%p|%p|END\n", PatternObject_GetCode(self), state.ptr));
-    if (PyErr_Occurred())
-        return NULL;
-
-    state_fini(&state);
-
-    return pattern_new_match(self, &state, status);
-}
-
-static PyObject*
-pattern_search(PatternObject* self, PyObject* args, PyObject* kw)
-{
-    SRE_STATE state;
-    int status;
-
-    PyObject* string;
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    static char* kwlist[] = { "pattern", "pos", "endpos", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "O|nn:search", kwlist,
-                                     &string, &start, &end))
-        return NULL;
-
-    string = state_init(&state, self, string, start, end);
-    if (!string)
-        return NULL;
-
-    TRACE(("|%p|%p|SEARCH\n", PatternObject_GetCode(self), state.ptr));
-
-    if (state.charsize == 1) {
-        status = sre_search(&state, PatternObject_GetCode(self));
-    } else {
-#if defined(HAVE_UNICODE)
-        status = sre_usearch(&state, PatternObject_GetCode(self));
-#endif
-    }
-
-    TRACE(("|%p|%p|END\n", PatternObject_GetCode(self), state.ptr));
-
-    state_fini(&state);
-
-    if (PyErr_Occurred())
-        return NULL;
-
-    return pattern_new_match(self, &state, status);
-}
-
-static PyObject*
-call(char* module, char* function, PyObject* args)
-{
-    PyObject* name;
-    PyObject* mod;
-    PyObject* func;
-    PyObject* result;
-
-    if (!args)
-        return NULL;
-    name = PyString_FromString(module);
-    if (!name)
-        return NULL;
-    mod = PyImport_Import(name);
-    Py_DECREF(name);
-    if (!mod)
-        return NULL;
-    func = PyObject_GetAttrString(mod, function);
-    Py_DECREF(mod);
-    if (!func)
-        return NULL;
-    result = PyObject_CallObject(func, args);
-    Py_DECREF(func);
-    Py_DECREF(args);
-    return result;
-}
-
-#ifdef USE_BUILTIN_COPY
-static int
-deepcopy(PyObject** object, PyObject* memo)
-{
-    PyObject* copy;
-
-    copy = call(
-        "copy", "deepcopy",
-        PyTuple_Pack(2, *object, memo)
-        );
-    if (!copy)
-        return 0;
-
-    Py_DECREF(*object);
-    *object = copy;
-
-    return 1; /* success */
-}
-#endif
-
-static PyObject*
-join_list(PyObject* list, PyObject* string)
-{
-    /* join list elements */
-
-    PyObject* joiner;
-#if PY_VERSION_HEX >= 0x01060000
-    PyObject* function;
-    PyObject* args;
-#endif
-    PyObject* result;
-
-    joiner = PySequence_GetSlice(string, 0, 0);
-    if (!joiner)
-        return NULL;
-
-    if (PyList_GET_SIZE(list) == 0) {
-        Py_DECREF(list);
-        return joiner;
-    }
-
-#if PY_VERSION_HEX >= 0x01060000
-    function = PyObject_GetAttrString(joiner, "join");
-    if (!function) {
-        Py_DECREF(joiner);
-        return NULL;
-    }
-    args = PyTuple_New(1);
-    if (!args) {
-        Py_DECREF(function);
-        Py_DECREF(joiner);
-        return NULL;
-    }
-    PyTuple_SET_ITEM(args, 0, list);
-    result = PyObject_CallObject(function, args);
-    Py_DECREF(args); /* also removes list */
-    Py_DECREF(function);
-#else
-    result = call(
-        "string", "join",
-        PyTuple_Pack(2, list, joiner)
-        );
-#endif
-    Py_DECREF(joiner);
-
-    return result;
-}
-
-static PyObject*
-pattern_findall(PatternObject* self, PyObject* args, PyObject* kw)
-{
-    SRE_STATE state;
-    PyObject* list;
-    int status;
-    Py_ssize_t i, b, e;
-
-    PyObject* string;
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    static char* kwlist[] = { "source", "pos", "endpos", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "O|nn:findall", kwlist,
-                                     &string, &start, &end))
-        return NULL;
-
-    string = state_init(&state, self, string, start, end);
-    if (!string)
-        return NULL;
-
-    list = PyList_New(0);
-    if (!list) {
-        state_fini(&state);
-        return NULL;
-    }
-
-    while (state.start <= state.end) {
-
-        PyObject* item;
-
-        state_reset(&state);
-
-        state.ptr = state.start;
-
-        if (state.charsize == 1) {
-            status = sre_search(&state, PatternObject_GetCode(self));
-        } else {
-#if defined(HAVE_UNICODE)
-            status = sre_usearch(&state, PatternObject_GetCode(self));
-#endif
-        }
-
-        if (PyErr_Occurred())
-            goto error;
-
-        if (status <= 0) {
-            if (status == 0)
-                break;
-            pattern_error(status);
-            goto error;
-        }
-
-        /* don't bother to build a match object */
-        switch (self->groups) {
-        case 0:
-            b = STATE_OFFSET(&state, state.start);
-            e = STATE_OFFSET(&state, state.ptr);
-            item = PySequence_GetSlice(string, b, e);
-            if (!item)
-                goto error;
-            break;
-        case 1:
-            item = state_getslice(&state, 1, string, 1);
-            if (!item)
-                goto error;
-            break;
-        default:
-            item = PyTuple_New(self->groups);
-            if (!item)
-                goto error;
-            for (i = 0; i < self->groups; i++) {
-                PyObject* o = state_getslice(&state, i+1, string, 1);
-                if (!o) {
-                    Py_DECREF(item);
-                    goto error;
-                }
-                PyTuple_SET_ITEM(item, i, o);
-            }
-            break;
-        }
-
-        status = PyList_Append(list, item);
-        Py_DECREF(item);
-        if (status < 0)
-            goto error;
-
-        if (state.ptr == state.start)
-            state.start = (void*) ((char*) state.ptr + state.charsize);
-        else
-            state.start = state.ptr;
-
-    }
-
-    state_fini(&state);
-    return list;
-
-error:
-    Py_DECREF(list);
-    state_fini(&state);
-    return NULL;
-
-}
-
-#if PY_VERSION_HEX >= 0x02020000
-static PyObject*
-pattern_finditer(PatternObject* pattern, PyObject* args)
-{
-    PyObject* scanner;
-    PyObject* search;
-    PyObject* iterator;
-
-    scanner = pattern_scanner(pattern, args);
-    if (!scanner)
-        return NULL;
-
-    search = PyObject_GetAttrString(scanner, "search");
-    Py_DECREF(scanner);
-    if (!search)
-        return NULL;
-
-    iterator = PyCallIter_New(search, Py_None);
-    Py_DECREF(search);
-
-    return iterator;
-}
-#endif
-
-static PyObject*
-pattern_split(PatternObject* self, PyObject* args, PyObject* kw)
-{
-    SRE_STATE state;
-    PyObject* list;
-    PyObject* item;
-    int status;
-    Py_ssize_t n;
-    Py_ssize_t i;
-    void* last;
-
-    PyObject* string;
-    Py_ssize_t maxsplit = 0;
-    static char* kwlist[] = { "source", "maxsplit", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "O|n:split", kwlist,
-                                     &string, &maxsplit))
-        return NULL;
-
-    string = state_init(&state, self, string, 0, PY_SSIZE_T_MAX);
-    if (!string)
-        return NULL;
-
-    list = PyList_New(0);
-    if (!list) {
-        state_fini(&state);
-        return NULL;
-    }
-
-    n = 0;
-    last = state.start;
-
-    while (!maxsplit || n < maxsplit) {
-
-        state_reset(&state);
-
-        state.ptr = state.start;
-
-        if (state.charsize == 1) {
-            status = sre_search(&state, PatternObject_GetCode(self));
-        } else {
-#if defined(HAVE_UNICODE)
-            status = sre_usearch(&state, PatternObject_GetCode(self));
-#endif
-        }
-
-        if (PyErr_Occurred())
-            goto error;
-
-        if (status <= 0) {
-            if (status == 0)
-                break;
-            pattern_error(status);
-            goto error;
-        }
-
-        if (state.start == state.ptr) {
-            if (last == state.end)
-                break;
-            /* skip one character */
-            state.start = (void*) ((char*) state.ptr + state.charsize);
-            continue;
-        }
-
-        /* get segment before this match */
-        item = PySequence_GetSlice(
-            string, STATE_OFFSET(&state, last),
-            STATE_OFFSET(&state, state.start)
-            );
-        if (!item)
-            goto error;
-        status = PyList_Append(list, item);
-        Py_DECREF(item);
-        if (status < 0)
-            goto error;
-
-        /* add groups (if any) */
-        for (i = 0; i < self->groups; i++) {
-            item = state_getslice(&state, i+1, string, 0);
-            if (!item)
-                goto error;
-            status = PyList_Append(list, item);
-            Py_DECREF(item);
-            if (status < 0)
-                goto error;
-        }
-
-        n = n + 1;
-
-        last = state.start = state.ptr;
-
-    }
-
-    /* get segment following last match (even if empty) */
-    item = PySequence_GetSlice(
-        string, STATE_OFFSET(&state, last), state.endpos
-        );
-    if (!item)
-        goto error;
-    status = PyList_Append(list, item);
-    Py_DECREF(item);
-    if (status < 0)
-        goto error;
-
-    state_fini(&state);
-    return list;
-
-error:
-    Py_DECREF(list);
-    state_fini(&state);
-    return NULL;
-
-}
-
-static PyObject*
-pattern_subx(PatternObject* self, PyObject* ptemplate, PyObject* string,
-             Py_ssize_t count, Py_ssize_t subn)
-{
-    SRE_STATE state;
-    PyObject* list;
-    PyObject* item;
-    PyObject* filter;
-    PyObject* args;
-    PyObject* match;
-    void* ptr;
-    int status;
-    Py_ssize_t n;
-    Py_ssize_t i, b, e;
-    int bint;
-    int filter_is_callable;
-
-    if (PyCallable_Check(ptemplate)) {
-        /* sub/subn takes either a function or a template */
-        filter = ptemplate;
-        Py_INCREF(filter);
-        filter_is_callable = 1;
-    } else {
-        /* if not callable, check if it's a literal string */
-        int literal;
-        ptr = getstring(ptemplate, &n, &bint);
-        b = bint;
-        if (ptr) {
-            if (b == 1) {
-                literal = sre_literal_template((unsigned char *)ptr, n);
-            } else {
-#if defined(HAVE_UNICODE)
-                literal = sre_uliteral_template((Py_UNICODE *)ptr, n);
-#endif
-            }
-        } else {
-            PyErr_Clear();
-            literal = 0;
-        }
-        if (literal) {
-            filter = ptemplate;
-            Py_INCREF(filter);
-            filter_is_callable = 0;
-        } else {
-            /* not a literal; hand it over to the template compiler */
-            filter = call(
-                SRE_PY_MODULE, "_subx",
-                PyTuple_Pack(2, self, ptemplate)
-                );
-            if (!filter)
-                return NULL;
-            filter_is_callable = PyCallable_Check(filter);
-        }
-    }
-
-    string = state_init(&state, self, string, 0, PY_SSIZE_T_MAX);
-    if (!string) {
-        Py_DECREF(filter);
-        return NULL;
-    }
-
-    list = PyList_New(0);
-    if (!list) {
-        Py_DECREF(filter);
-        state_fini(&state);
-        return NULL;
-    }
-
-    n = i = 0;
-
-    while (!count || n < count) {
-
-        state_reset(&state);
-
-        state.ptr = state.start;
-
-        if (state.charsize == 1) {
-            status = sre_search(&state, PatternObject_GetCode(self));
-        } else {
-#if defined(HAVE_UNICODE)
-            status = sre_usearch(&state, PatternObject_GetCode(self));
-#endif
-        }
-
-        if (PyErr_Occurred())
-            goto error;
-
-        if (status <= 0) {
-            if (status == 0)
-                break;
-            pattern_error(status);
-            goto error;
-        }
-
-        b = STATE_OFFSET(&state, state.start);
-        e = STATE_OFFSET(&state, state.ptr);
-
-        if (i < b) {
-            /* get segment before this match */
-            item = PySequence_GetSlice(string, i, b);
-            if (!item)
-                goto error;
-            status = PyList_Append(list, item);
-            Py_DECREF(item);
-            if (status < 0)
-                goto error;
-
-        } else if (i == b && i == e && n > 0)
-            /* ignore empty match on latest position */
-            goto next;
-
-        if (filter_is_callable) {
-            /* pass match object through filter */
-            match = pattern_new_match(self, &state, 1);
-            if (!match)
-                goto error;
-            args = PyTuple_Pack(1, match);
-            if (!args) {
-                Py_DECREF(match);
-                goto error;
-            }
-            item = PyObject_CallObject(filter, args);
-            Py_DECREF(args);
-            Py_DECREF(match);
-            if (!item)
-                goto error;
-        } else {
-            /* filter is literal string */
-            item = filter;
-            Py_INCREF(item);
-        }
-
-        /* add to list */
-        if (item != Py_None) {
-            status = PyList_Append(list, item);
-            Py_DECREF(item);
-            if (status < 0)
-                goto error;
-        }
-
-        i = e;
-        n = n + 1;
-
-next:
-        /* move on */
-        if (state.ptr == state.start)
-            state.start = (void*) ((char*) state.ptr + state.charsize);
-        else
-            state.start = state.ptr;
-
-    }
-
-    /* get segment following last match */
-    if (i < state.endpos) {
-        item = PySequence_GetSlice(string, i, state.endpos);
-        if (!item)
-            goto error;
-        status = PyList_Append(list, item);
-        Py_DECREF(item);
-        if (status < 0)
-            goto error;
-    }
-
-    state_fini(&state);
-
-    Py_DECREF(filter);
-
-    /* convert list to single string (also removes list) */
-    item = join_list(list, string);
-
-    if (!item)
-        return NULL;
-
-    if (subn)
-        return Py_BuildValue("Ni", item, n);
-
-    return item;
-
-error:
-    Py_DECREF(list);
-    state_fini(&state);
-    Py_DECREF(filter);
-    return NULL;
-
-}
-
-static PyObject*
-pattern_sub(PatternObject* self, PyObject* args, PyObject* kw)
-{
-    PyObject* ptemplate;
-    PyObject* string;
-    Py_ssize_t count = 0;
-    static char* kwlist[] = { "repl", "string", "count", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|n:sub", kwlist,
-                                     &ptemplate, &string, &count))
-        return NULL;
-
-    return pattern_subx(self, ptemplate, string, count, 0);
-}
-
-static PyObject*
-pattern_subn(PatternObject* self, PyObject* args, PyObject* kw)
-{
-    PyObject* ptemplate;
-    PyObject* string;
-    Py_ssize_t count = 0;
-    static char* kwlist[] = { "repl", "string", "count", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "OO|n:subn", kwlist,
-                                     &ptemplate, &string, &count))
-        return NULL;
-
-    return pattern_subx(self, ptemplate, string, count, 1);
-}
-
-static PyObject*
-pattern_copy(PatternObject* self, PyObject *unused)
-{
-#ifdef USE_BUILTIN_COPY
-    PatternObject* copy;
-    int offset;
-
-    copy = PyObject_NEW_VAR(PatternObject, &Pattern_Type, self->codesize);
-    if (!copy)
-        return NULL;
-
-    offset = offsetof(PatternObject, groups);
-
-    Py_XINCREF(self->groupindex);
-    Py_XINCREF(self->indexgroup);
-    Py_XINCREF(self->pattern);
-
-    memcpy((char*) copy + offset, (char*) self + offset,
-           sizeof(PatternObject) + self->codesize * sizeof(SRE_CODE) - offset);
-    copy->weakreflist = NULL;
-
-    return (PyObject*) copy;
-#else
-    PyErr_SetString(PyExc_TypeError, "cannot copy this pattern object");
-    return NULL;
-#endif
-}
-
-static PyObject*
-pattern_deepcopy(PatternObject* self, PyObject* memo)
-{
-#ifdef USE_BUILTIN_COPY
-    PatternObject* copy;
-
-    copy = (PatternObject*) pattern_copy(self);
-    if (!copy)
-        return NULL;
-
-    if (!deepcopy(&copy->groupindex, memo) ||
-        !deepcopy(&copy->indexgroup, memo) ||
-        !deepcopy(&copy->pattern, memo)) {
-        Py_DECREF(copy);
-        return NULL;
-    }
-
-#else
-    PyErr_SetString(PyExc_TypeError, "cannot deepcopy this pattern object");
-    return NULL;
-#endif
-}
-
-PyDoc_STRVAR(pattern_match_doc,
-"match(string[, pos[, endpos]]) --> match object or None.\n\
-    Matches zero or more characters at the beginning of the string");
-
-PyDoc_STRVAR(pattern_search_doc,
-"search(string[, pos[, endpos]]) --> match object or None.\n\
-    Scan through string looking for a match, and return a corresponding\n\
-    MatchObject instance. Return None if no position in the string matches.");
-
-PyDoc_STRVAR(pattern_split_doc,
-"split(string[, maxsplit = 0])  --> list.\n\
-    Split string by the occurrences of pattern.");
-
-PyDoc_STRVAR(pattern_findall_doc,
-"findall(string[, pos[, endpos]]) --> list.\n\
-   Return a list of all non-overlapping matches of pattern in string.");
-
-PyDoc_STRVAR(pattern_finditer_doc,
-"finditer(string[, pos[, endpos]]) --> iterator.\n\
-    Return an iterator over all non-overlapping matches for the \n\
-    RE pattern in string. For each match, the iterator returns a\n\
-    match object.");
-
-PyDoc_STRVAR(pattern_sub_doc,
-"sub(repl, string[, count = 0]) --> newstring\n\
-    Return the string obtained by replacing the leftmost non-overlapping\n\
-    occurrences of pattern in string by the replacement repl.");
-
-PyDoc_STRVAR(pattern_subn_doc,
-"subn(repl, string[, count = 0]) --> (newstring, number of subs)\n\
-    Return the tuple (new_string, number_of_subs_made) found by replacing\n\
-    the leftmost non-overlapping occurrences of pattern with the\n\
-    replacement repl.");
-
-PyDoc_STRVAR(pattern_doc, "Compiled regular expression objects");
-
-static PyMethodDef pattern_methods[] = {
-    {"match", (PyCFunction) pattern_match, METH_VARARGS|METH_KEYWORDS,
-        pattern_match_doc},
-    {"search", (PyCFunction) pattern_search, METH_VARARGS|METH_KEYWORDS,
-        pattern_search_doc},
-    {"sub", (PyCFunction) pattern_sub, METH_VARARGS|METH_KEYWORDS,
-        pattern_sub_doc},
-    {"subn", (PyCFunction) pattern_subn, METH_VARARGS|METH_KEYWORDS,
-        pattern_subn_doc},
-    {"split", (PyCFunction) pattern_split, METH_VARARGS|METH_KEYWORDS,
-        pattern_split_doc},
-    {"findall", (PyCFunction) pattern_findall, METH_VARARGS|METH_KEYWORDS,
-        pattern_findall_doc},
-#if PY_VERSION_HEX >= 0x02020000
-    {"finditer", (PyCFunction) pattern_finditer, METH_VARARGS,
-        pattern_finditer_doc},
-#endif
-    {"scanner", (PyCFunction) pattern_scanner, METH_VARARGS},
-    {"__copy__", (PyCFunction) pattern_copy, METH_NOARGS},
-    {"__deepcopy__", (PyCFunction) pattern_deepcopy, METH_O},
-    {NULL, NULL}
-};
-
-#define PAT_OFF(x) offsetof(PatternObject, x)
-static PyMemberDef pattern_members[] = {
-    {"pattern",    T_OBJECT,    PAT_OFF(pattern),       READONLY},
-    {"flags",      T_INT,       PAT_OFF(flags),         READONLY},
-    {"groups",     T_PYSSIZET,  PAT_OFF(groups),        READONLY},
-    {"groupindex", T_OBJECT,    PAT_OFF(groupindex),    READONLY},
-    {NULL}  /* Sentinel */
-};
-
-statichere PyTypeObject Pattern_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0, "_" SRE_MODULE ".SRE_Pattern",
-    sizeof(PatternObject), sizeof(SRE_CODE),
-    (destructor)pattern_dealloc, /*tp_dealloc*/
-    0,                                  /* tp_print */
-    0,                                  /* tp_getattrn */
-    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 */
-    Py_TPFLAGS_DEFAULT,           /* tp_flags */
-    pattern_doc,      /* tp_doc */
-    0,          /* tp_traverse */
-    0,          /* tp_clear */
-    0,          /* tp_richcompare */
-    offsetof(PatternObject, weakreflist), /* tp_weaklistoffset */
-    0,          /* tp_iter */
-    0,          /* tp_iternext */
-    pattern_methods,      /* tp_methods */
-    pattern_members,      /* tp_members */
-};
-
-static int _validate(PatternObject *self); /* Forward */
-
-static PyObject *
-_compile(PyObject* self_, PyObject* args)
-{
-    /* "compile" pattern descriptor to pattern object */
-
-    PatternObject* self;
-    Py_ssize_t i, n;
-
-    PyObject* pattern;
-    int flags = 0;
-    PyObject* code;
-    Py_ssize_t groups = 0;
-    PyObject* groupindex = NULL;
-    PyObject* indexgroup = NULL;
-    if (!PyArg_ParseTuple(args, "OiO!|nOO", &pattern, &flags,
-                          &PyList_Type, &code, &groups,
-                          &groupindex, &indexgroup))
-        return NULL;
-
-    n = PyList_GET_SIZE(code);
-    /* coverity[ampersand_in_size] */
-    self = PyObject_NEW_VAR(PatternObject, &Pattern_Type, n);
-    if (!self)
-        return NULL;
-    self->weakreflist = NULL;
-    self->pattern = NULL;
-    self->groupindex = NULL;
-    self->indexgroup = NULL;
-
-    self->codesize = n;
-
-    for (i = 0; i < n; i++) {
-        PyObject *o = PyList_GET_ITEM(code, i);
-        unsigned long value = PyInt_Check(o) ? (unsigned long)PyInt_AsLong(o)
-                                              : PyLong_AsUnsignedLong(o);
-        self->code[i] = (SRE_CODE) value;
-        if ((unsigned long) self->code[i] != value) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "regular expression code size limit exceeded");
-            break;
-        }
-    }
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(self);
-        return NULL;
-    }
-
-    Py_INCREF(pattern);
-    self->pattern = pattern;
-
-    self->flags = flags;
-
-    self->groups = groups;
-
-    Py_XINCREF(groupindex);
-    self->groupindex = groupindex;
-
-    Py_XINCREF(indexgroup);
-    self->indexgroup = indexgroup;
-
-    self->weakreflist = NULL;
-
-    if (!_validate(self)) {
-        Py_DECREF(self);
-        return NULL;
-    }
-
-    return (PyObject*) self;
-}
-
-/* -------------------------------------------------------------------- */
-/* Code validation */
-
-/* To learn more about this code, have a look at the _compile() function in
-   Lib/sre_compile.py.  The validation functions below checks the code array
-   for conformance with the code patterns generated there.
-
-   The nice thing about the generated code is that it is position-independent:
-   all jumps are relative jumps forward.  Also, jumps don't cross each other:
-   the target of a later jump is always earlier than the target of an earlier
-   jump.  IOW, this is okay:
-
-   J---------J-------T--------T
-    \         \_____/        /
-     \______________________/
-
-   but this is not:
-
-   J---------J-------T--------T
-    \_________\_____/        /
-               \____________/
-
-   It also helps that SRE_CODE is always an unsigned type, either 2 bytes or 4
-   bytes wide (the latter if Python is compiled for "wide" unicode support).
-*/
-
-/* Defining this one enables tracing of the validator */
-#undef VVERBOSE
-
-/* Trace macro for the validator */
-#if defined(VVERBOSE)
-#define VTRACE(v) printf v
-#else
-#define VTRACE(v)
-#endif
-
-/* Report failure */
-#define FAIL do { VTRACE(("FAIL: %d\n", __LINE__)); return 0; } while (0)
-
-/* Extract opcode, argument, or skip count from code array */
-#define GET_OP                                          \
-    do {                                                \
-        VTRACE(("%p: ", code));                         \
-        if (code >= end) FAIL;                          \
-        op = *code++;                                   \
-        VTRACE(("%lu (op)\n", (unsigned long)op));      \
-    } while (0)
-#define GET_ARG                                         \
-    do {                                                \
-        VTRACE(("%p= ", code));                         \
-        if (code >= end) FAIL;                          \
-        arg = *code++;                                  \
-        VTRACE(("%lu (arg)\n", (unsigned long)arg));    \
-    } while (0)
-#define GET_SKIP_ADJ(adj)                               \
-    do {                                                \
-        VTRACE(("%p= ", code));                         \
-        if (code >= end) FAIL;                          \
-        skip = *code;                                   \
-        VTRACE(("%lu (skip to %p)\n",                   \
-               (unsigned long)skip, code+skip));        \
-        if (code+skip-adj < code || code+skip-adj > end)\
-            FAIL;                                       \
-        code++;                                         \
-    } while (0)
-#define GET_SKIP GET_SKIP_ADJ(0)
-
-static int
-_validate_charset(SRE_CODE *code, SRE_CODE *end)
-{
-    /* Some variables are manipulated by the macros above */
-    SRE_CODE op;
-    SRE_CODE arg;
-    SRE_CODE offset;
-    int i;
-
-    while (code < end) {
-        GET_OP;
-        switch (op) {
-
-        case SRE_OP_NEGATE:
-            break;
-
-        case SRE_OP_LITERAL:
-            GET_ARG;
-            break;
-
-        case SRE_OP_RANGE:
-            GET_ARG;
-            GET_ARG;
-            break;
-
-        case SRE_OP_CHARSET:
-            offset = 32/sizeof(SRE_CODE); /* 32-byte bitmap */
-            if (code+offset < code || code+offset > end)
-                FAIL;
-            code += offset;
-            break;
-
-        case SRE_OP_BIGCHARSET:
-            GET_ARG; /* Number of blocks */
-            offset = 256/sizeof(SRE_CODE); /* 256-byte table */
-            if (code+offset < code || code+offset > end)
-                FAIL;
-            /* Make sure that each byte points to a valid block */
-            for (i = 0; i < 256; i++) {
-                if (((unsigned char *)code)[i] >= arg)
-                    FAIL;
-            }
-            code += offset;
-            offset = arg * 32/sizeof(SRE_CODE); /* 32-byte bitmap times arg */
-            if (code+offset < code || code+offset > end)
-                FAIL;
-            code += offset;
-            break;
-
-        case SRE_OP_CATEGORY:
-            GET_ARG;
-            switch (arg) {
-            case SRE_CATEGORY_DIGIT:
-            case SRE_CATEGORY_NOT_DIGIT:
-            case SRE_CATEGORY_SPACE:
-            case SRE_CATEGORY_NOT_SPACE:
-            case SRE_CATEGORY_WORD:
-            case SRE_CATEGORY_NOT_WORD:
-            case SRE_CATEGORY_LINEBREAK:
-            case SRE_CATEGORY_NOT_LINEBREAK:
-            case SRE_CATEGORY_LOC_WORD:
-            case SRE_CATEGORY_LOC_NOT_WORD:
-            case SRE_CATEGORY_UNI_DIGIT:
-            case SRE_CATEGORY_UNI_NOT_DIGIT:
-            case SRE_CATEGORY_UNI_SPACE:
-            case SRE_CATEGORY_UNI_NOT_SPACE:
-            case SRE_CATEGORY_UNI_WORD:
-            case SRE_CATEGORY_UNI_NOT_WORD:
-            case SRE_CATEGORY_UNI_LINEBREAK:
-            case SRE_CATEGORY_UNI_NOT_LINEBREAK:
-                break;
-            default:
-                FAIL;
-            }
-            break;
-
-        default:
-            FAIL;
-
-        }
-    }
-
-    return 1;
-}
-
-static int
-_validate_inner(SRE_CODE *code, SRE_CODE *end, Py_ssize_t groups)
-{
-    /* Some variables are manipulated by the macros above */
-    SRE_CODE op;
-    SRE_CODE arg;
-    SRE_CODE skip;
-
-    VTRACE(("code=%p, end=%p\n", code, end));
-
-    if (code > end)
-        FAIL;
-
-    while (code < end) {
-        GET_OP;
-        switch (op) {
-
-        case SRE_OP_MARK:
-            /* We don't check whether marks are properly nested; the
-               sre_match() code is robust even if they don't, and the worst
-               you can get is nonsensical match results. */
-            GET_ARG;
-            if (arg > 2*groups+1) {
-                VTRACE(("arg=%d, groups=%d\n", (int)arg, (int)groups));
-                FAIL;
-            }
-            break;
-
-        case SRE_OP_LITERAL:
-        case SRE_OP_NOT_LITERAL:
-        case SRE_OP_LITERAL_IGNORE:
-        case SRE_OP_NOT_LITERAL_IGNORE:
-            GET_ARG;
-            /* The arg is just a character, nothing to check */
-            break;
-
-        case SRE_OP_SUCCESS:
-        case SRE_OP_FAILURE:
-            /* Nothing to check; these normally end the matching process */
-            break;
-
-        case SRE_OP_AT:
-            GET_ARG;
-            switch (arg) {
-            case SRE_AT_BEGINNING:
-            case SRE_AT_BEGINNING_STRING:
-            case SRE_AT_BEGINNING_LINE:
-            case SRE_AT_END:
-            case SRE_AT_END_LINE:
-            case SRE_AT_END_STRING:
-            case SRE_AT_BOUNDARY:
-            case SRE_AT_NON_BOUNDARY:
-            case SRE_AT_LOC_BOUNDARY:
-            case SRE_AT_LOC_NON_BOUNDARY:
-            case SRE_AT_UNI_BOUNDARY:
-            case SRE_AT_UNI_NON_BOUNDARY:
-                break;
-            default:
-                FAIL;
-            }
-            break;
-
-        case SRE_OP_ANY:
-        case SRE_OP_ANY_ALL:
-            /* These have no operands */
-            break;
-
-        case SRE_OP_IN:
-        case SRE_OP_IN_IGNORE:
-            GET_SKIP;
-            /* Stop 1 before the end; we check the FAILURE below */
-            if (!_validate_charset(code, code+skip-2))
-                FAIL;
-            if (code[skip-2] != SRE_OP_FAILURE)
-                FAIL;
-            code += skip-1;
-            break;
-
-        case SRE_OP_INFO:
-            {
-                /* A minimal info field is
-                   <INFO> <1=skip> <2=flags> <3=min> <4=max>;
-                   If SRE_INFO_PREFIX or SRE_INFO_CHARSET is in the flags,
-                   more follows. */
-                SRE_CODE flags, i;
-                SRE_CODE *newcode;
-                GET_SKIP;
-                newcode = code+skip-1;
-                GET_ARG; flags = arg;
-                GET_ARG; /* min */
-                GET_ARG; /* max */
-                /* Check that only valid flags are present */
-                if ((flags & ~(SRE_INFO_PREFIX |
-                               SRE_INFO_LITERAL |
-                               SRE_INFO_CHARSET)) != 0)
-                    FAIL;
-                /* PREFIX and CHARSET are mutually exclusive */
-                if ((flags & SRE_INFO_PREFIX) &&
-                    (flags & SRE_INFO_CHARSET))
-                    FAIL;
-                /* LITERAL implies PREFIX */
-                if ((flags & SRE_INFO_LITERAL) &&
-                    !(flags & SRE_INFO_PREFIX))
-                    FAIL;
-                /* Validate the prefix */
-                if (flags & SRE_INFO_PREFIX) {
-                    SRE_CODE prefix_len;
-                    GET_ARG; prefix_len = arg;
-                    GET_ARG; /* prefix skip */
-                    /* Here comes the prefix string */
-                    if (code+prefix_len < code || code+prefix_len > newcode)
-                        FAIL;
-                    code += prefix_len;
-                    /* And here comes the overlap table */
-                    if (code+prefix_len < code || code+prefix_len > newcode)
-                        FAIL;
-                    /* Each overlap value should be < prefix_len */
-                    for (i = 0; i < prefix_len; i++) {
-                        if (code[i] >= prefix_len)
-                            FAIL;
-                    }
-                    code += prefix_len;
-                }
-                /* Validate the charset */
-                if (flags & SRE_INFO_CHARSET) {
-                    if (!_validate_charset(code, newcode-1))
-                        FAIL;
-                    if (newcode[-1] != SRE_OP_FAILURE)
-                        FAIL;
-                    code = newcode;
-                }
-                else if (code != newcode) {
-                  VTRACE(("code=%p, newcode=%p\n", code, newcode));
-                    FAIL;
-                }
-            }
-            break;
-
-        case SRE_OP_BRANCH:
-            {
-                SRE_CODE *target = NULL;
-                for (;;) {
-                    GET_SKIP;
-                    if (skip == 0)
-                        break;
-                    /* Stop 2 before the end; we check the JUMP below */
-                    if (!_validate_inner(code, code+skip-3, groups))
-                        FAIL;
-                    code += skip-3;
-                    /* Check that it ends with a JUMP, and that each JUMP
-                       has the same target */
-                    GET_OP;
-                    if (op != SRE_OP_JUMP)
-                        FAIL;
-                    GET_SKIP;
-                    if (target == NULL)
-                        target = code+skip-1;
-                    else if (code+skip-1 != target)
-                        FAIL;
-                }
-            }
-            break;
-
-        case SRE_OP_REPEAT_ONE:
-        case SRE_OP_MIN_REPEAT_ONE:
-            {
-                SRE_CODE min, max;
-                GET_SKIP;
-                GET_ARG; min = arg;
-                GET_ARG; max = arg;
-                if (min > max)
-                    FAIL;
-#ifdef Py_UNICODE_WIDE
-                if (max > 65535)
-                    FAIL;
-#endif
-                if (!_validate_inner(code, code+skip-4, groups))
-                    FAIL;
-                code += skip-4;
-                GET_OP;
-                if (op != SRE_OP_SUCCESS)
-                    FAIL;
-            }
-            break;
-
-        case SRE_OP_REPEAT:
-            {
-                SRE_CODE min, max;
-                GET_SKIP;
-                GET_ARG; min = arg;
-                GET_ARG; max = arg;
-                if (min > max)
-                    FAIL;
-#ifdef Py_UNICODE_WIDE
-                if (max > 65535)
-                    FAIL;
-#endif
-                if (!_validate_inner(code, code+skip-3, groups))
-                    FAIL;
-                code += skip-3;
-                GET_OP;
-                if (op != SRE_OP_MAX_UNTIL && op != SRE_OP_MIN_UNTIL)
-                    FAIL;
-            }
-            break;
-
-        case SRE_OP_GROUPREF:
-        case SRE_OP_GROUPREF_IGNORE:
-            GET_ARG;
-            if (arg >= groups)
-                FAIL;
-            break;
-
-        case SRE_OP_GROUPREF_EXISTS:
-            /* The regex syntax for this is: '(?(group)then|else)', where
-               'group' is either an integer group number or a group name,
-               'then' and 'else' are sub-regexes, and 'else' is optional. */
-            GET_ARG;
-            if (arg >= groups)
-                FAIL;
-            GET_SKIP_ADJ(1);
-            code--; /* The skip is relative to the first arg! */
-            /* There are two possibilities here: if there is both a 'then'
-               part and an 'else' part, the generated code looks like:
-
-               GROUPREF_EXISTS
-               <group>
-               <skipyes>
-               ...then part...
-               JUMP
-               <skipno>
-               (<skipyes> jumps here)
-               ...else part...
-               (<skipno> jumps here)
-
-               If there is only a 'then' part, it looks like:
-
-               GROUPREF_EXISTS
-               <group>
-               <skip>
-               ...then part...
-               (<skip> jumps here)
-
-               There is no direct way to decide which it is, and we don't want
-               to allow arbitrary jumps anywhere in the code; so we just look
-               for a JUMP opcode preceding our skip target.
-            */
-            if (skip >= 3 && code+skip-3 >= code &&
-                code[skip-3] == SRE_OP_JUMP)
-            {
-                VTRACE(("both then and else parts present\n"));
-                if (!_validate_inner(code+1, code+skip-3, groups))
-                    FAIL;
-                code += skip-2; /* Position after JUMP, at <skipno> */
-                GET_SKIP;
-                if (!_validate_inner(code, code+skip-1, groups))
-                    FAIL;
-                code += skip-1;
-            }
-            else {
-                VTRACE(("only a then part present\n"));
-                if (!_validate_inner(code+1, code+skip-1, groups))
-                    FAIL;
-                code += skip-1;
-            }
-            break;
-
-        case SRE_OP_ASSERT:
-        case SRE_OP_ASSERT_NOT:
-            GET_SKIP;
-            GET_ARG; /* 0 for lookahead, width for lookbehind */
-            code--; /* Back up over arg to simplify math below */
-            if (arg & 0x80000000)
-                FAIL; /* Width too large */
-            /* Stop 1 before the end; we check the SUCCESS below */
-            if (!_validate_inner(code+1, code+skip-2, groups))
-                FAIL;
-            code += skip-2;
-            GET_OP;
-            if (op != SRE_OP_SUCCESS)
-                FAIL;
-            break;
-
-        default:
-            FAIL;
-
-        }
-    }
-
-    VTRACE(("okay\n"));
-    return 1;
-}
-
-static int
-_validate_outer(SRE_CODE *code, SRE_CODE *end, Py_ssize_t groups)
-{
-    if (groups < 0 || groups > 100 || code >= end || end[-1] != SRE_OP_SUCCESS)
-        FAIL;
-    if (groups == 0)  /* fix for simplejson */
-        groups = 100; /* 100 groups should always be safe */
-    return _validate_inner(code, end-1, groups);
-}
-
-static int
-_validate(PatternObject *self)
-{
-    if (!_validate_outer(self->code, self->code+self->codesize, self->groups))
-    {
-        PyErr_SetString(PyExc_RuntimeError, "invalid SRE code");
-        return 0;
-    }
-    else
-        VTRACE(("Success!\n"));
-    return 1;
-}
-
-/* -------------------------------------------------------------------- */
-/* match methods */
-
-static void
-match_dealloc(MatchObject* self)
-{
-    Py_XDECREF(self->regs);
-    Py_XDECREF(self->string);
-    Py_DECREF(self->pattern);
-    PyObject_DEL(self);
-}
-
-static PyObject*
-match_getslice_by_index(MatchObject* self, Py_ssize_t index, PyObject* def)
-{
-    if (index < 0 || index >= self->groups) {
-        /* raise IndexError if we were given a bad group number */
-        PyErr_SetString(
-            PyExc_IndexError,
-            "no such group"
-            );
-        return NULL;
-    }
-
-    index *= 2;
-
-    if (self->string == Py_None || self->mark[index] < 0) {
-        /* return default value if the string or group is undefined */
-        Py_INCREF(def);
-        return def;
-    }
-
-    return PySequence_GetSlice(
-        self->string, self->mark[index], self->mark[index+1]
-        );
-}
-
-static Py_ssize_t
-match_getindex(MatchObject* self, PyObject* index)
-{
-    Py_ssize_t i;
-
-    if (PyInt_Check(index))
-        return PyInt_AsSsize_t(index);
-
-    i = -1;
-
-    if (self->pattern->groupindex) {
-        index = PyObject_GetItem(self->pattern->groupindex, index);
-        if (index) {
-            if (PyInt_Check(index) || PyLong_Check(index))
-                i = PyInt_AsSsize_t(index);
-            Py_DECREF(index);
-        } else
-            PyErr_Clear();
-    }
-
-    return i;
-}
-
-static PyObject*
-match_getslice(MatchObject* self, PyObject* index, PyObject* def)
-{
-    return match_getslice_by_index(self, match_getindex(self, index), def);
-}
-
-static PyObject*
-match_expand(MatchObject* self, PyObject* ptemplate)
-{
-    /* delegate to Python code */
-    return call(
-        SRE_PY_MODULE, "_expand",
-        PyTuple_Pack(3, self->pattern, self, ptemplate)
-        );
-}
-
-static PyObject*
-match_group(MatchObject* self, PyObject* args)
-{
-    PyObject* result;
-    Py_ssize_t i, size;
-
-    size = PyTuple_GET_SIZE(args);
-
-    switch (size) {
-    case 0:
-        result = match_getslice(self, Py_False, Py_None);
-        break;
-    case 1:
-        result = match_getslice(self, PyTuple_GET_ITEM(args, 0), Py_None);
-        break;
-    default:
-        /* fetch multiple items */
-        result = PyTuple_New(size);
-        if (!result)
-            return NULL;
-        for (i = 0; i < size; i++) {
-            PyObject* item = match_getslice(
-                self, PyTuple_GET_ITEM(args, i), Py_None
-                );
-            if (!item) {
-                Py_DECREF(result);
-                return NULL;
-            }
-            PyTuple_SET_ITEM(result, i, item);
-        }
-        break;
-    }
-    return result;
-}
-
-static PyObject*
-match_groups(MatchObject* self, PyObject* args, PyObject* kw)
-{
-    PyObject* result;
-    Py_ssize_t index;
-
-    PyObject* def = Py_None;
-    static char* kwlist[] = { "default", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "|O:groups", kwlist, &def))
-        return NULL;
-
-    result = PyTuple_New(self->groups-1);
-    if (!result)
-        return NULL;
-
-    for (index = 1; index < self->groups; index++) {
-        PyObject* item;
-        item = match_getslice_by_index(self, index, def);
-        if (!item) {
-            Py_DECREF(result);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(result, index-1, item);
-    }
-
-    return result;
-}
-
-static PyObject*
-match_groupdict(MatchObject* self, PyObject* args, PyObject* kw)
-{
-    PyObject* result;
-    PyObject* keys;
-    Py_ssize_t index;
-
-    PyObject* def = Py_None;
-    static char* kwlist[] = { "default", NULL };
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "|O:groupdict", kwlist, &def))
-        return NULL;
-
-    result = PyDict_New();
-    if (!result || !self->pattern->groupindex)
-        return result;
-
-    keys = PyMapping_Keys(self->pattern->groupindex);
-    if (!keys)
-        goto failed;
-
-    for (index = 0; index < PyList_GET_SIZE(keys); index++) {
-        int status;
-        PyObject* key;
-        PyObject* value;
-        key = PyList_GET_ITEM(keys, index);
-        if (!key)
-            goto failed;
-        value = match_getslice(self, key, def);
-        if (!value) {
-            Py_DECREF(key);
-            goto failed;
-        }
-        status = PyDict_SetItem(result, key, value);
-        Py_DECREF(value);
-        if (status < 0)
-            goto failed;
-    }
-
-    Py_DECREF(keys);
-
-    return result;
-
-failed:
-    Py_XDECREF(keys);
-    Py_DECREF(result);
-    return NULL;
-}
-
-static PyObject*
-match_start(MatchObject* self, PyObject* args)
-{
-    Py_ssize_t index;
-
-    PyObject* index_ = Py_False; /* zero */
-    if (!PyArg_UnpackTuple(args, "start", 0, 1, &index_))
-        return NULL;
-
-    index = match_getindex(self, index_);
-
-    if (index < 0 || index >= self->groups) {
-        PyErr_SetString(
-            PyExc_IndexError,
-            "no such group"
-            );
-        return NULL;
-    }
-
-    /* mark is -1 if group is undefined */
-    return Py_BuildValue("i", self->mark[index*2]);
-}
-
-static PyObject*
-match_end(MatchObject* self, PyObject* args)
-{
-    Py_ssize_t index;
-
-    PyObject* index_ = Py_False; /* zero */
-    if (!PyArg_UnpackTuple(args, "end", 0, 1, &index_))
-        return NULL;
-
-    index = match_getindex(self, index_);
-
-    if (index < 0 || index >= self->groups) {
-        PyErr_SetString(
-            PyExc_IndexError,
-            "no such group"
-            );
-        return NULL;
-    }
-
-    /* mark is -1 if group is undefined */
-    return Py_BuildValue("i", self->mark[index*2+1]);
-}
-
-LOCAL(PyObject*)
-_pair(Py_ssize_t i1, Py_ssize_t i2)
-{
-    PyObject* pair;
-    PyObject* item;
-
-    pair = PyTuple_New(2);
-    if (!pair)
-        return NULL;
-
-    item = PyInt_FromSsize_t(i1);
-    if (!item)
-        goto error;
-    PyTuple_SET_ITEM(pair, 0, item);
-
-    item = PyInt_FromSsize_t(i2);
-    if (!item)
-        goto error;
-    PyTuple_SET_ITEM(pair, 1, item);
-
-    return pair;
-
-  error:
-    Py_DECREF(pair);
-    return NULL;
-}
-
-static PyObject*
-match_span(MatchObject* self, PyObject* args)
-{
-    Py_ssize_t index;
-
-    PyObject* index_ = Py_False; /* zero */
-    if (!PyArg_UnpackTuple(args, "span", 0, 1, &index_))
-        return NULL;
-
-    index = match_getindex(self, index_);
-
-    if (index < 0 || index >= self->groups) {
-        PyErr_SetString(
-            PyExc_IndexError,
-            "no such group"
-            );
-        return NULL;
-    }
-
-    /* marks are -1 if group is undefined */
-    return _pair(self->mark[index*2], self->mark[index*2+1]);
-}
-
-static PyObject*
-match_regs(MatchObject* self)
-{
-    PyObject* regs;
-    PyObject* item;
-    Py_ssize_t index;
-
-    regs = PyTuple_New(self->groups);
-    if (!regs)
-        return NULL;
-
-    for (index = 0; index < self->groups; index++) {
-        item = _pair(self->mark[index*2], self->mark[index*2+1]);
-        if (!item) {
-            Py_DECREF(regs);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(regs, index, item);
-    }
-
-    Py_INCREF(regs);
-    self->regs = regs;
-
-    return regs;
-}
-
-static PyObject*
-match_copy(MatchObject* self, PyObject *unused)
-{
-#ifdef USE_BUILTIN_COPY
-    MatchObject* copy;
-    Py_ssize_t slots, offset;
-
-    slots = 2 * (self->pattern->groups+1);
-
-    copy = PyObject_NEW_VAR(MatchObject, &Match_Type, slots);
-    if (!copy)
-        return NULL;
-
-    /* this value a constant, but any compiler should be able to
-       figure that out all by itself */
-    offset = offsetof(MatchObject, string);
-
-    Py_XINCREF(self->pattern);
-    Py_XINCREF(self->string);
-    Py_XINCREF(self->regs);
-
-    memcpy((char*) copy + offset, (char*) self + offset,
-           sizeof(MatchObject) + slots * sizeof(Py_ssize_t) - offset);
-
-    return (PyObject*) copy;
-#else
-    PyErr_SetString(PyExc_TypeError, "cannot copy this match object");
-    return NULL;
-#endif
-}
-
-static PyObject*
-match_deepcopy(MatchObject* self, PyObject* memo)
-{
-#ifdef USE_BUILTIN_COPY
-    MatchObject* copy;
-
-    copy = (MatchObject*) match_copy(self);
-    if (!copy)
-        return NULL;
-
-    if (!deepcopy((PyObject**) &copy->pattern, memo) ||
-        !deepcopy(&copy->string, memo) ||
-        !deepcopy(&copy->regs, memo)) {
-        Py_DECREF(copy);
-        return NULL;
-    }
-
-#else
-    PyErr_SetString(PyExc_TypeError, "cannot deepcopy this match object");
-    return NULL;
-#endif
-}
-
-static struct PyMethodDef match_methods[] = {
-    {"group", (PyCFunction) match_group, METH_VARARGS},
-    {"start", (PyCFunction) match_start, METH_VARARGS},
-    {"end", (PyCFunction) match_end, METH_VARARGS},
-    {"span", (PyCFunction) match_span, METH_VARARGS},
-    {"groups", (PyCFunction) match_groups, METH_VARARGS|METH_KEYWORDS},
-    {"groupdict", (PyCFunction) match_groupdict, METH_VARARGS|METH_KEYWORDS},
-    {"expand", (PyCFunction) match_expand, METH_O},
-    {"__copy__", (PyCFunction) match_copy, METH_NOARGS},
-    {"__deepcopy__", (PyCFunction) match_deepcopy, METH_O},
-    {NULL, NULL}
-};
-
-static PyObject *
-match_lastindex_get(MatchObject *self)
-{
-    if (self->lastindex >= 0)
-  return Py_BuildValue("i", self->lastindex);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-match_lastgroup_get(MatchObject *self)
-{
-    if (self->pattern->indexgroup && self->lastindex >= 0) {
-        PyObject* result = PySequence_GetItem(
-            self->pattern->indexgroup, self->lastindex
-            );
-        if (result)
-            return result;
-        PyErr_Clear();
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-match_regs_get(MatchObject *self)
-{
-    if (self->regs) {
-        Py_INCREF(self->regs);
-        return self->regs;
-    } else
-        return match_regs(self);
-}
-
-static PyGetSetDef match_getset[] = {
-    {"lastindex", (getter)match_lastindex_get, (setter)NULL},
-    {"lastgroup", (getter)match_lastgroup_get, (setter)NULL},
-    {"regs",      (getter)match_regs_get,      (setter)NULL},
-    {NULL}
-};
-
-#define MATCH_OFF(x) offsetof(MatchObject, x)
-static PyMemberDef match_members[] = {
-    {"string",  T_OBJECT,   MATCH_OFF(string),  READONLY},
-    {"re",      T_OBJECT,   MATCH_OFF(pattern), READONLY},
-    {"pos",     T_PYSSIZET, MATCH_OFF(pos),     READONLY},
-    {"endpos",  T_PYSSIZET, MATCH_OFF(endpos),  READONLY},
-    {NULL}
-};
-
-
-/* FIXME: implement setattr("string", None) as a special case (to
-   detach the associated string, if any */
-
-static PyTypeObject Match_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_" SRE_MODULE ".SRE_Match",
-    sizeof(MatchObject), sizeof(Py_ssize_t),
-    (destructor)match_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 */
-    Py_TPFLAGS_DEFAULT,
-    0,                          /* tp_doc */
-    0,                          /* tp_traverse */
-    0,                          /* tp_clear */
-    0,                          /* tp_richcompare */
-    0,                          /* tp_weaklistoffset */
-    0,                          /* tp_iter */
-    0,                          /* tp_iternext */
-    match_methods,    /* tp_methods */
-    match_members,    /* tp_members */
-    match_getset,           /* tp_getset */
-};
-
-static PyObject*
-pattern_new_match(PatternObject* pattern, SRE_STATE* state, int status)
-{
-    /* create match object (from state object) */
-
-    MatchObject* match;
-    Py_ssize_t i, j;
-    char* base;
-    int n;
-
-    if (status > 0) {
-
-        /* create match object (with room for extra group marks) */
-        /* coverity[ampersand_in_size] */
-        match = PyObject_NEW_VAR(MatchObject, &Match_Type,
-                                 2*(pattern->groups+1));
-        if (!match)
-            return NULL;
-
-        Py_INCREF(pattern);
-        match->pattern = pattern;
-
-        Py_INCREF(state->string);
-        match->string = state->string;
-
-        match->regs = NULL;
-        match->groups = pattern->groups+1;
-
-        /* fill in group slices */
-
-        base = (char*) state->beginning;
-        n = state->charsize;
-
-        match->mark[0] = ((char*) state->start - base) / n;
-        match->mark[1] = ((char*) state->ptr - base) / n;
-
-        for (i = j = 0; i < pattern->groups; i++, j+=2)
-            if (j+1 <= state->lastmark && state->mark[j] && state->mark[j+1]) {
-                match->mark[j+2] = ((char*) state->mark[j] - base) / n;
-                match->mark[j+3] = ((char*) state->mark[j+1] - base) / n;
-            } else
-                match->mark[j+2] = match->mark[j+3] = -1; /* undefined */
-
-        match->pos = state->pos;
-        match->endpos = state->endpos;
-
-        match->lastindex = state->lastindex;
-
-        return (PyObject*) match;
-
-    } else if (status == 0) {
-
-        /* no match */
-        Py_INCREF(Py_None);
-        return Py_None;
-
-    }
-
-    /* internal error */
-    pattern_error(status);
-    return NULL;
-}
-
-
-/* -------------------------------------------------------------------- */
-/* scanner methods (experimental) */
-
-static void
-scanner_dealloc(ScannerObject* self)
-{
-    state_fini(&self->state);
-    Py_XDECREF(self->pattern);
-    PyObject_DEL(self);
-}
-
-static PyObject*
-scanner_match(ScannerObject* self, PyObject *unused)
-{
-    SRE_STATE* state = &self->state;
-    PyObject* match;
-    int status;
-
-    state_reset(state);
-
-    state->ptr = state->start;
-
-    if (state->charsize == 1) {
-        status = sre_match(state, PatternObject_GetCode(self->pattern));
-    } else {
-#if defined(HAVE_UNICODE)
-        status = sre_umatch(state, PatternObject_GetCode(self->pattern));
-#endif
-    }
-    if (PyErr_Occurred())
-        return NULL;
-
-    match = pattern_new_match((PatternObject*) self->pattern,
-                               state, status);
-
-    if (status == 0 || state->ptr == state->start)
-        state->start = (void*) ((char*) state->ptr + state->charsize);
-    else
-        state->start = state->ptr;
-
-    return match;
-}
-
-
-static PyObject*
-scanner_search(ScannerObject* self, PyObject *unused)
-{
-    SRE_STATE* state = &self->state;
-    PyObject* match;
-    int status;
-
-    state_reset(state);
-
-    state->ptr = state->start;
-
-    if (state->charsize == 1) {
-        status = sre_search(state, PatternObject_GetCode(self->pattern));
-    } else {
-#if defined(HAVE_UNICODE)
-        status = sre_usearch(state, PatternObject_GetCode(self->pattern));
-#endif
-    }
-    if (PyErr_Occurred())
-        return NULL;
-
-    match = pattern_new_match((PatternObject*) self->pattern,
-                               state, status);
-
-    if (status == 0 || state->ptr == state->start)
-        state->start = (void*) ((char*) state->ptr + state->charsize);
-    else
-        state->start = state->ptr;
-
-    return match;
-}
-
-static PyMethodDef scanner_methods[] = {
-    {"match", (PyCFunction) scanner_match, METH_NOARGS},
-    {"search", (PyCFunction) scanner_search, METH_NOARGS},
-    {NULL, NULL}
-};
-
-#define SCAN_OFF(x) offsetof(ScannerObject, x)
-static PyMemberDef scanner_members[] = {
-    {"pattern", T_OBJECT, SCAN_OFF(pattern),  READONLY},
-    {NULL}  /* Sentinel */
-};
-
-statichere PyTypeObject Scanner_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0, "_" SRE_MODULE ".SRE_Scanner",
-    sizeof(ScannerObject), 0,
-    (destructor)scanner_dealloc, /*tp_dealloc*/
-    0,        /* tp_print */
-    0,        /* tp_getattr */
-    0,        /* tp_setattr */
-    0,        /* tp_reserved */
-    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 */
-    Py_TPFLAGS_DEFAULT,   /* tp_flags */
-    0,        /* tp_doc */
-    0,        /* tp_traverse */
-    0,        /* tp_clear */
-    0,        /* tp_richcompare */
-    0,        /* tp_weaklistoffset */
-    0,        /* tp_iter */
-    0,        /* tp_iternext */
-    scanner_methods,    /* tp_methods */
-    scanner_members,    /* tp_members */
-    0,        /* tp_getset */
-};
-
-static PyObject*
-pattern_scanner(PatternObject* pattern, PyObject* args)
-{
-    /* create search state object */
-
-    ScannerObject* self;
-
-    PyObject* string;
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    if (!PyArg_ParseTuple(args, "O|nn:scanner", &string, &start, &end))
-        return NULL;
-
-    /* create scanner object */
-    self = PyObject_NEW(ScannerObject, &Scanner_Type);
-    if (!self)
-        return NULL;
-    self->pattern = NULL;
-
-    string = state_init(&self->state, pattern, string, start, end);
-    if (!string) {
-        Py_DECREF(self);
-        return NULL;
-    }
-
-    Py_INCREF(pattern);
-    self->pattern = (PyObject*) pattern;
-
-    return (PyObject*) self;
-}
-
-static PyMethodDef _functions[] = {
-    {"compile", _compile, METH_VARARGS},
-    {"getcodesize", sre_codesize, METH_NOARGS},
-    {"getlower", sre_getlower, METH_VARARGS},
-    {NULL, NULL}
-};
-
-#if PY_VERSION_HEX < 0x02030000
-DL_EXPORT(void) init_sre(void)
-#else
-PyMODINIT_FUNC init_sre(void)
-#endif
-{
-    PyObject* m;
-    PyObject* d;
-    PyObject* x;
-
-    /* Patch object types */
-    if (PyType_Ready(&Pattern_Type) || PyType_Ready(&Match_Type) ||
-        PyType_Ready(&Scanner_Type))
-        return;
-
-    m = Py_InitModule("_" SRE_MODULE, _functions);
-    if (m == NULL)
-        return;
-    d = PyModule_GetDict(m);
-
-    x = PyInt_FromLong(SRE_MAGIC);
-    if (x) {
-        PyDict_SetItemString(d, "MAGIC", x);
-        Py_DECREF(x);
-    }
-
-    x = PyInt_FromLong(sizeof(SRE_CODE));
-    if (x) {
-        PyDict_SetItemString(d, "CODESIZE", x);
-        Py_DECREF(x);
-    }
-
-    x = PyString_FromString(copyright);
-    if (x) {
-        PyDict_SetItemString(d, "copyright", x);
-        Py_DECREF(x);
-    }
-}
-
-#endif /* !defined(SRE_RECURSIVE) */
-
-/* vim:ts=4:sw=4:et
-*/
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_ssl.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_ssl.c
deleted file mode 100644
index 9452138..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_ssl.c
+++ /dev/null
@@ -1,1751 +0,0 @@
-/* SSL socket module
-
-   SSL support based on patches by Brian E Gallew and Laszlo Kovacs.
-   Re-worked a bit by Bill Janssen to add server-side support and
-   certificate decoding.  Chris Stawarz contributed some non-blocking
-   patches.
-
-   This module is imported by ssl.py. It should *not* be used
-   directly.
-
-   XXX should partial writes be enabled, SSL_MODE_ENABLE_PARTIAL_WRITE?
-
-   XXX integrate several "shutdown modes" as suggested in
-       http://bugs.python.org/issue8108#msg102867 ?
-*/
-
-#include "Python.h"
-
-#ifdef WITH_THREAD
-#include "pythread.h"
-#define PySSL_BEGIN_ALLOW_THREADS { \
-            PyThreadState *_save = NULL;  \
-            if (_ssl_locks_count>0) {_save = PyEval_SaveThread();}
-#define PySSL_BLOCK_THREADS     if (_ssl_locks_count>0){PyEval_RestoreThread(_save)};
-#define PySSL_UNBLOCK_THREADS   if (_ssl_locks_count>0){_save = PyEval_SaveThread()};
-#define PySSL_END_ALLOW_THREADS if (_ssl_locks_count>0){PyEval_RestoreThread(_save);} \
-         }
-
-#else   /* no WITH_THREAD */
-
-#define PySSL_BEGIN_ALLOW_THREADS
-#define PySSL_BLOCK_THREADS
-#define PySSL_UNBLOCK_THREADS
-#define PySSL_END_ALLOW_THREADS
-
-#endif
-
-enum py_ssl_error {
-    /* these mirror ssl.h */
-    PY_SSL_ERROR_NONE,
-    PY_SSL_ERROR_SSL,
-    PY_SSL_ERROR_WANT_READ,
-    PY_SSL_ERROR_WANT_WRITE,
-    PY_SSL_ERROR_WANT_X509_LOOKUP,
-    PY_SSL_ERROR_SYSCALL,     /* look at error stack/return value/errno */
-    PY_SSL_ERROR_ZERO_RETURN,
-    PY_SSL_ERROR_WANT_CONNECT,
-    /* start of non ssl.h errorcodes */
-    PY_SSL_ERROR_EOF,         /* special case of SSL_ERROR_SYSCALL */
-    PY_SSL_ERROR_INVALID_ERROR_CODE
-};
-
-enum py_ssl_server_or_client {
-    PY_SSL_CLIENT,
-    PY_SSL_SERVER
-};
-
-enum py_ssl_cert_requirements {
-    PY_SSL_CERT_NONE,
-    PY_SSL_CERT_OPTIONAL,
-    PY_SSL_CERT_REQUIRED
-};
-
-enum py_ssl_version {
-#ifndef OPENSSL_NO_SSL2
-    PY_SSL_VERSION_SSL2,
-#endif
-    PY_SSL_VERSION_SSL3=1,
-    PY_SSL_VERSION_SSL23,
-    PY_SSL_VERSION_TLS1
-};
-
-/* Include symbols from _socket module */
-#include "socketmodule.h"
-
-#if defined(HAVE_POLL_H)
-#include <poll.h>
-#elif defined(HAVE_SYS_POLL_H)
-#include <sys/poll.h>
-#endif
-
-/* Include OpenSSL header files */
-#include "openssl/rsa.h"
-#include "openssl/crypto.h"
-#include "openssl/x509.h"
-#include "openssl/x509v3.h"
-#include "openssl/pem.h"
-#include "openssl/ssl.h"
-#include "openssl/err.h"
-#include "openssl/rand.h"
-
-/* SSL error object */
-static PyObject *PySSLErrorObject;
-
-#ifdef WITH_THREAD
-
-/* serves as a flag to see whether we've initialized the SSL thread support. */
-/* 0 means no, greater than 0 means yes */
-
-static unsigned int _ssl_locks_count = 0;
-
-#endif /* def WITH_THREAD */
-
-/* SSL socket object */
-
-#define X509_NAME_MAXLEN 256
-
-/* RAND_* APIs got added to OpenSSL in 0.9.5 */
-#if OPENSSL_VERSION_NUMBER >= 0x0090500fL
-# define HAVE_OPENSSL_RAND 1
-#else
-# undef HAVE_OPENSSL_RAND
-#endif
-
-typedef struct {
-    PyObject_HEAD
-    PySocketSockObject *Socket;         /* Socket on which we're layered */
-    SSL_CTX*            ctx;
-    SSL*                ssl;
-    X509*               peer_cert;
-    char                server[X509_NAME_MAXLEN];
-    char                issuer[X509_NAME_MAXLEN];
-    int                 shutdown_seen_zero;
-
-} PySSLObject;
-
-static PyTypeObject PySSL_Type;
-static PyObject *PySSL_SSLwrite(PySSLObject *self, PyObject *args);
-static PyObject *PySSL_SSLread(PySSLObject *self, PyObject *args);
-static int check_socket_and_wait_for_timeout(PySocketSockObject *s,
-                                             int writing);
-static PyObject *PySSL_peercert(PySSLObject *self, PyObject *args);
-static PyObject *PySSL_cipher(PySSLObject *self);
-
-#define PySSLObject_Check(v)    (Py_TYPE(v) == &PySSL_Type)
-
-typedef enum {
-    SOCKET_IS_NONBLOCKING,
-    SOCKET_IS_BLOCKING,
-    SOCKET_HAS_TIMED_OUT,
-    SOCKET_HAS_BEEN_CLOSED,
-    SOCKET_TOO_LARGE_FOR_SELECT,
-    SOCKET_OPERATION_OK
-} timeout_state;
-
-/* Wrap error strings with filename and line # */
-#define STRINGIFY1(x) #x
-#define STRINGIFY2(x) STRINGIFY1(x)
-#define ERRSTR1(x,y,z) (x ":" y ": " z)
-#define ERRSTR(x) ERRSTR1("_ssl.c", STRINGIFY2(__LINE__), x)
-
-/* XXX It might be helpful to augment the error message generated
-   below with the name of the SSL function that generated the error.
-   I expect it's obvious most of the time.
-*/
-
-static PyObject *
-PySSL_SetError(PySSLObject *obj, int ret, char *filename, int lineno)
-{
-    PyObject *v;
-    char buf[2048];
-    char *errstr;
-    int err;
-    enum py_ssl_error p = PY_SSL_ERROR_NONE;
-
-    assert(ret <= 0);
-
-    if (obj->ssl != NULL) {
-        err = SSL_get_error(obj->ssl, ret);
-
-        switch (err) {
-        case SSL_ERROR_ZERO_RETURN:
-            errstr = "TLS/SSL connection has been closed";
-            p = PY_SSL_ERROR_ZERO_RETURN;
-            break;
-        case SSL_ERROR_WANT_READ:
-            errstr = "The operation did not complete (read)";
-            p = PY_SSL_ERROR_WANT_READ;
-            break;
-        case SSL_ERROR_WANT_WRITE:
-            p = PY_SSL_ERROR_WANT_WRITE;
-            errstr = "The operation did not complete (write)";
-            break;
-        case SSL_ERROR_WANT_X509_LOOKUP:
-            p = PY_SSL_ERROR_WANT_X509_LOOKUP;
-            errstr = "The operation did not complete (X509 lookup)";
-            break;
-        case SSL_ERROR_WANT_CONNECT:
-            p = PY_SSL_ERROR_WANT_CONNECT;
-            errstr = "The operation did not complete (connect)";
-            break;
-        case SSL_ERROR_SYSCALL:
-        {
-            unsigned long e = ERR_get_error();
-            if (e == 0) {
-                if (ret == 0 || !obj->Socket) {
-                    p = PY_SSL_ERROR_EOF;
-                    errstr = "EOF occurred in violation of protocol";
-                } else if (ret == -1) {
-                    /* underlying BIO reported an I/O error */
-                    ERR_clear_error();
-                    return obj->Socket->errorhandler();
-                } else { /* possible? */
-                    p = PY_SSL_ERROR_SYSCALL;
-                    errstr = "Some I/O error occurred";
-                }
-            } else {
-                p = PY_SSL_ERROR_SYSCALL;
-                /* XXX Protected by global interpreter lock */
-                errstr = ERR_error_string(e, NULL);
-            }
-            break;
-        }
-        case SSL_ERROR_SSL:
-        {
-            unsigned long e = ERR_get_error();
-            p = PY_SSL_ERROR_SSL;
-            if (e != 0)
-                /* XXX Protected by global interpreter lock */
-                errstr = ERR_error_string(e, NULL);
-            else {              /* possible? */
-                errstr = "A failure in the SSL library occurred";
-            }
-            break;
-        }
-        default:
-            p = PY_SSL_ERROR_INVALID_ERROR_CODE;
-            errstr = "Invalid error code";
-        }
-    } else {
-        errstr = ERR_error_string(ERR_peek_last_error(), NULL);
-    }
-    PyOS_snprintf(buf, sizeof(buf), "_ssl.c:%d: %s", lineno, errstr);
-    ERR_clear_error();
-    v = Py_BuildValue("(is)", p, buf);
-    if (v != NULL) {
-        PyErr_SetObject(PySSLErrorObject, v);
-        Py_DECREF(v);
-    }
-    return NULL;
-}
-
-static PyObject *
-_setSSLError (char *errstr, int errcode, char *filename, int lineno) {
-
-    char buf[2048];
-    PyObject *v;
-
-    if (errstr == NULL) {
-        errcode = ERR_peek_last_error();
-        errstr = ERR_error_string(errcode, NULL);
-    }
-    PyOS_snprintf(buf, sizeof(buf), "_ssl.c:%d: %s", lineno, errstr);
-    ERR_clear_error();
-    v = Py_BuildValue("(is)", errcode, buf);
-    if (v != NULL) {
-        PyErr_SetObject(PySSLErrorObject, v);
-        Py_DECREF(v);
-    }
-    return NULL;
-}
-
-static PySSLObject *
-newPySSLObject(PySocketSockObject *Sock, char *key_file, char *cert_file,
-               enum py_ssl_server_or_client socket_type,
-               enum py_ssl_cert_requirements certreq,
-               enum py_ssl_version proto_version,
-               char *cacerts_file, char *ciphers)
-{
-    PySSLObject *self;
-    char *errstr = NULL;
-    int ret;
-    int verification_mode;
-
-    self = PyObject_New(PySSLObject, &PySSL_Type); /* Create new object */
-    if (self == NULL)
-        return NULL;
-    memset(self->server, '\0', sizeof(char) * X509_NAME_MAXLEN);
-    memset(self->issuer, '\0', sizeof(char) * X509_NAME_MAXLEN);
-    self->peer_cert = NULL;
-    self->ssl = NULL;
-    self->ctx = NULL;
-    self->Socket = NULL;
-
-    /* Make sure the SSL error state is initialized */
-    (void) ERR_get_state();
-    ERR_clear_error();
-
-    if ((key_file && !cert_file) || (!key_file && cert_file)) {
-        errstr = ERRSTR("Both the key & certificate files "
-                        "must be specified");
-        goto fail;
-    }
-
-    if ((socket_type == PY_SSL_SERVER) &&
-        ((key_file == NULL) || (cert_file == NULL))) {
-        errstr = ERRSTR("Both the key & certificate files "
-                        "must be specified for server-side operation");
-        goto fail;
-    }
-
-    PySSL_BEGIN_ALLOW_THREADS
-    if (proto_version == PY_SSL_VERSION_TLS1)
-        self->ctx = SSL_CTX_new(TLSv1_method()); /* Set up context */
-    else if (proto_version == PY_SSL_VERSION_SSL3)
-        self->ctx = SSL_CTX_new(SSLv3_method()); /* Set up context */
-#ifndef OPENSSL_NO_SSL2
-    else if (proto_version == PY_SSL_VERSION_SSL2)
-        self->ctx = SSL_CTX_new(SSLv2_method()); /* Set up context */
-#endif
-    else if (proto_version == PY_SSL_VERSION_SSL23)
-        self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */
-    PySSL_END_ALLOW_THREADS
-
-    if (self->ctx == NULL) {
-        errstr = ERRSTR("Invalid SSL protocol variant specified.");
-        goto fail;
-    }
-
-    if (ciphers != NULL) {
-        ret = SSL_CTX_set_cipher_list(self->ctx, ciphers);
-        if (ret == 0) {
-            errstr = ERRSTR("No cipher can be selected.");
-            goto fail;
-        }
-    }
-
-    if (certreq != PY_SSL_CERT_NONE) {
-        if (cacerts_file == NULL) {
-            errstr = ERRSTR("No root certificates specified for "
-                            "verification of other-side certificates.");
-            goto fail;
-        } else {
-            PySSL_BEGIN_ALLOW_THREADS
-            ret = SSL_CTX_load_verify_locations(self->ctx,
-                                                cacerts_file,
-                                                NULL);
-            PySSL_END_ALLOW_THREADS
-            if (ret != 1) {
-                _setSSLError(NULL, 0, __FILE__, __LINE__);
-                goto fail;
-            }
-        }
-    }
-    if (key_file) {
-        PySSL_BEGIN_ALLOW_THREADS
-        ret = SSL_CTX_use_PrivateKey_file(self->ctx, key_file,
-                                          SSL_FILETYPE_PEM);
-        PySSL_END_ALLOW_THREADS
-        if (ret != 1) {
-            _setSSLError(NULL, ret, __FILE__, __LINE__);
-            goto fail;
-        }
-
-        PySSL_BEGIN_ALLOW_THREADS
-        ret = SSL_CTX_use_certificate_chain_file(self->ctx,
-                                                 cert_file);
-        PySSL_END_ALLOW_THREADS
-        if (ret != 1) {
-            /*
-            fprintf(stderr, "ret is %d, errcode is %lu, %lu, with file \"%s\"\n",
-                ret, ERR_peek_error(), ERR_peek_last_error(), cert_file);
-                */
-            if (ERR_peek_last_error() != 0) {
-                _setSSLError(NULL, ret, __FILE__, __LINE__);
-                goto fail;
-            }
-        }
-    }
-
-    /* ssl compatibility */
-    SSL_CTX_set_options(self->ctx, SSL_OP_ALL);
-
-    verification_mode = SSL_VERIFY_NONE;
-    if (certreq == PY_SSL_CERT_OPTIONAL)
-        verification_mode = SSL_VERIFY_PEER;
-    else if (certreq == PY_SSL_CERT_REQUIRED)
-        verification_mode = (SSL_VERIFY_PEER |
-                             SSL_VERIFY_FAIL_IF_NO_PEER_CERT);
-    SSL_CTX_set_verify(self->ctx, verification_mode,
-                       NULL); /* set verify lvl */
-
-    PySSL_BEGIN_ALLOW_THREADS
-    self->ssl = SSL_new(self->ctx); /* New ssl struct */
-    PySSL_END_ALLOW_THREADS
-    SSL_set_fd(self->ssl, Sock->sock_fd);       /* Set the socket for SSL */
-#ifdef SSL_MODE_AUTO_RETRY
-    SSL_set_mode(self->ssl, SSL_MODE_AUTO_RETRY);
-#endif
-
-    /* If the socket is in non-blocking mode or timeout mode, set the BIO
-     * to non-blocking mode (blocking is the default)
-     */
-    if (Sock->sock_timeout >= 0.0) {
-        /* Set both the read and write BIO's to non-blocking mode */
-        BIO_set_nbio(SSL_get_rbio(self->ssl), 1);
-        BIO_set_nbio(SSL_get_wbio(self->ssl), 1);
-    }
-
-    PySSL_BEGIN_ALLOW_THREADS
-    if (socket_type == PY_SSL_CLIENT)
-        SSL_set_connect_state(self->ssl);
-    else
-        SSL_set_accept_state(self->ssl);
-    PySSL_END_ALLOW_THREADS
-
-    self->Socket = Sock;
-    Py_INCREF(self->Socket);
-    return self;
- fail:
-    if (errstr)
-        PyErr_SetString(PySSLErrorObject, errstr);
-    Py_DECREF(self);
-    return NULL;
-}
-
-static PyObject *
-PySSL_sslwrap(PyObject *self, PyObject *args)
-{
-    PySocketSockObject *Sock;
-    int server_side = 0;
-    int verification_mode = PY_SSL_CERT_NONE;
-    int protocol = PY_SSL_VERSION_SSL23;
-    char *key_file = NULL;
-    char *cert_file = NULL;
-    char *cacerts_file = NULL;
-    char *ciphers = NULL;
-
-    if (!PyArg_ParseTuple(args, "O!i|zziizz:sslwrap",
-                          PySocketModule.Sock_Type,
-                          &Sock,
-                          &server_side,
-                          &key_file, &cert_file,
-                          &verification_mode, &protocol,
-                          &cacerts_file, &ciphers))
-        return NULL;
-
-    /*
-    fprintf(stderr,
-        "server_side is %d, keyfile %p, certfile %p, verify_mode %d, "
-        "protocol %d, certs %p\n",
-        server_side, key_file, cert_file, verification_mode,
-        protocol, cacerts_file);
-     */
-
-    return (PyObject *) newPySSLObject(Sock, key_file, cert_file,
-                                       server_side, verification_mode,
-                                       protocol, cacerts_file,
-                                       ciphers);
-}
-
-PyDoc_STRVAR(ssl_doc,
-"sslwrap(socket, server_side, [keyfile, certfile, certs_mode, protocol,\n"
-"                              cacertsfile, ciphers]) -> sslobject");
-
-/* SSL object methods */
-
-static PyObject *PySSL_SSLdo_handshake(PySSLObject *self)
-{
-    int ret;
-    int err;
-    int sockstate, nonblocking;
-
-    /* just in case the blocking state of the socket has been changed */
-    nonblocking = (self->Socket->sock_timeout >= 0.0);
-    BIO_set_nbio(SSL_get_rbio(self->ssl), nonblocking);
-    BIO_set_nbio(SSL_get_wbio(self->ssl), nonblocking);
-
-    /* Actually negotiate SSL connection */
-    /* XXX If SSL_do_handshake() returns 0, it's also a failure. */
-    do {
-        PySSL_BEGIN_ALLOW_THREADS
-        ret = SSL_do_handshake(self->ssl);
-        err = SSL_get_error(self->ssl, ret);
-        PySSL_END_ALLOW_THREADS
-        if(PyErr_CheckSignals()) {
-            return NULL;
-        }
-        if (err == SSL_ERROR_WANT_READ) {
-            sockstate = check_socket_and_wait_for_timeout(self->Socket, 0);
-        } else if (err == SSL_ERROR_WANT_WRITE) {
-            sockstate = check_socket_and_wait_for_timeout(self->Socket, 1);
-        } else {
-            sockstate = SOCKET_OPERATION_OK;
-        }
-        if (sockstate == SOCKET_HAS_TIMED_OUT) {
-            PyErr_SetString(PySSLErrorObject,
-                            ERRSTR("The handshake operation timed out"));
-            return NULL;
-        } else if (sockstate == SOCKET_HAS_BEEN_CLOSED) {
-            PyErr_SetString(PySSLErrorObject,
-                            ERRSTR("Underlying socket has been closed."));
-            return NULL;
-        } else if (sockstate == SOCKET_TOO_LARGE_FOR_SELECT) {
-            PyErr_SetString(PySSLErrorObject,
-                            ERRSTR("Underlying socket too large for select()."));
-            return NULL;
-        } else if (sockstate == SOCKET_IS_NONBLOCKING) {
-            break;
-        }
-    } while (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE);
-    if (ret < 1)
-        return PySSL_SetError(self, ret, __FILE__, __LINE__);
-
-    if (self->peer_cert)
-        X509_free (self->peer_cert);
-    PySSL_BEGIN_ALLOW_THREADS
-    if ((self->peer_cert = SSL_get_peer_certificate(self->ssl))) {
-        X509_NAME_oneline(X509_get_subject_name(self->peer_cert),
-                          self->server, X509_NAME_MAXLEN);
-        X509_NAME_oneline(X509_get_issuer_name(self->peer_cert),
-                          self->issuer, X509_NAME_MAXLEN);
-    }
-    PySSL_END_ALLOW_THREADS
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-PySSL_server(PySSLObject *self)
-{
-    return PyString_FromString(self->server);
-}
-
-static PyObject *
-PySSL_issuer(PySSLObject *self)
-{
-    return PyString_FromString(self->issuer);
-}
-
-static PyObject *
-_create_tuple_for_attribute (ASN1_OBJECT *name, ASN1_STRING *value) {
-
-    char namebuf[X509_NAME_MAXLEN];
-    int buflen;
-    PyObject *name_obj;
-    PyObject *value_obj;
-    PyObject *attr;
-    unsigned char *valuebuf = NULL;
-
-    buflen = OBJ_obj2txt(namebuf, sizeof(namebuf), name, 0);
-    if (buflen < 0) {
-        _setSSLError(NULL, 0, __FILE__, __LINE__);
-        goto fail;
-    }
-    name_obj = PyString_FromStringAndSize(namebuf, buflen);
-    if (name_obj == NULL)
-        goto fail;
-
-    buflen = ASN1_STRING_to_UTF8(&valuebuf, value);
-    if (buflen < 0) {
-        _setSSLError(NULL, 0, __FILE__, __LINE__);
-        Py_DECREF(name_obj);
-        goto fail;
-    }
-    value_obj = PyUnicode_DecodeUTF8((char *) valuebuf,
-                                     buflen, "strict");
-    OPENSSL_free(valuebuf);
-    if (value_obj == NULL) {
-        Py_DECREF(name_obj);
-        goto fail;
-    }
-    attr = PyTuple_New(2);
-    if (attr == NULL) {
-        Py_DECREF(name_obj);
-        Py_DECREF(value_obj);
-        goto fail;
-    }
-    PyTuple_SET_ITEM(attr, 0, name_obj);
-    PyTuple_SET_ITEM(attr, 1, value_obj);
-    return attr;
-
-  fail:
-    return NULL;
-}
-
-static PyObject *
-_create_tuple_for_X509_NAME (X509_NAME *xname)
-{
-    PyObject *dn = NULL;    /* tuple which represents the "distinguished name" */
-    PyObject *rdn = NULL;   /* tuple to hold a "relative distinguished name" */
-    PyObject *rdnt;
-    PyObject *attr = NULL;   /* tuple to hold an attribute */
-    int entry_count = X509_NAME_entry_count(xname);
-    X509_NAME_ENTRY *entry;
-    ASN1_OBJECT *name;
-    ASN1_STRING *value;
-    int index_counter;
-    int rdn_level = -1;
-    int retcode;
-
-    dn = PyList_New(0);
-    if (dn == NULL)
-        return NULL;
-    /* now create another tuple to hold the top-level RDN */
-    rdn = PyList_New(0);
-    if (rdn == NULL)
-        goto fail0;
-
-    for (index_counter = 0;
-         index_counter < entry_count;
-         index_counter++)
-    {
-        entry = X509_NAME_get_entry(xname, index_counter);
-
-        /* check to see if we've gotten to a new RDN */
-        if (rdn_level >= 0) {
-            if (rdn_level != entry->set) {
-                /* yes, new RDN */
-                /* add old RDN to DN */
-                rdnt = PyList_AsTuple(rdn);
-                Py_DECREF(rdn);
-                if (rdnt == NULL)
-                    goto fail0;
-                retcode = PyList_Append(dn, rdnt);
-                Py_DECREF(rdnt);
-                if (retcode < 0)
-                    goto fail0;
-                /* create new RDN */
-                rdn = PyList_New(0);
-                if (rdn == NULL)
-                    goto fail0;
-            }
-        }
-        rdn_level = entry->set;
-
-        /* now add this attribute to the current RDN */
-        name = X509_NAME_ENTRY_get_object(entry);
-        value = X509_NAME_ENTRY_get_data(entry);
-        attr = _create_tuple_for_attribute(name, value);
-        /*
-        fprintf(stderr, "RDN level %d, attribute %s: %s\n",
-            entry->set,
-            PyString_AS_STRING(PyTuple_GET_ITEM(attr, 0)),
-            PyString_AS_STRING(PyTuple_GET_ITEM(attr, 1)));
-        */
-        if (attr == NULL)
-            goto fail1;
-        retcode = PyList_Append(rdn, attr);
-        Py_DECREF(attr);
-        if (retcode < 0)
-            goto fail1;
-    }
-    /* now, there's typically a dangling RDN */
-    if ((rdn != NULL) && (PyList_Size(rdn) > 0)) {
-        rdnt = PyList_AsTuple(rdn);
-        Py_DECREF(rdn);
-        if (rdnt == NULL)
-            goto fail0;
-        retcode = PyList_Append(dn, rdnt);
-        Py_DECREF(rdnt);
-        if (retcode < 0)
-            goto fail0;
-    }
-
-    /* convert list to tuple */
-    rdnt = PyList_AsTuple(dn);
-    Py_DECREF(dn);
-    if (rdnt == NULL)
-        return NULL;
-    return rdnt;
-
-  fail1:
-    Py_XDECREF(rdn);
-
-  fail0:
-    Py_XDECREF(dn);
-    return NULL;
-}
-
-static PyObject *
-_get_peer_alt_names (X509 *certificate) {
-
-    /* this code follows the procedure outlined in
-       OpenSSL's crypto/x509v3/v3_prn.c:X509v3_EXT_print()
-       function to extract the STACK_OF(GENERAL_NAME),
-       then iterates through the stack to add the
-       names. */
-
-    int i, j;
-    PyObject *peer_alt_names = Py_None;
-    PyObject *v, *t;
-    X509_EXTENSION *ext = NULL;
-    GENERAL_NAMES *names = NULL;
-    GENERAL_NAME *name;
-    const X509V3_EXT_METHOD *method;
-    BIO *biobuf = NULL;
-    char buf[2048];
-    char *vptr;
-    int len;
-    /* Issue #2973: ASN1_item_d2i() API changed in OpenSSL 0.9.6m */
-#if OPENSSL_VERSION_NUMBER >= 0x009060dfL
-    const unsigned char *p;
-#else
-    unsigned char *p;
-#endif
-
-    if (certificate == NULL)
-        return peer_alt_names;
-
-    /* get a memory buffer */
-    biobuf = BIO_new(BIO_s_mem());
-
-    i = 0;
-    while ((i = X509_get_ext_by_NID(
-                    certificate, NID_subject_alt_name, i)) >= 0) {
-
-        if (peer_alt_names == Py_None) {
-            peer_alt_names = PyList_New(0);
-            if (peer_alt_names == NULL)
-                goto fail;
-        }
-
-        /* now decode the altName */
-        ext = X509_get_ext(certificate, i);
-        if(!(method = X509V3_EXT_get(ext))) {
-            PyErr_SetString(PySSLErrorObject,
-                            ERRSTR("No method for internalizing subjectAltName!"));
-            goto fail;
-        }
-
-        p = ext->value->data;
-        if (method->it)
-            names = (GENERAL_NAMES*) (ASN1_item_d2i(NULL,
-                                                    &p,
-                                                    ext->value->length,
-                                                    ASN1_ITEM_ptr(method->it)));
-        else
-            names = (GENERAL_NAMES*) (method->d2i(NULL,
-                                                  &p,
-                                                  ext->value->length));
-
-        for(j = 0; j < sk_GENERAL_NAME_num(names); j++) {
-
-            /* get a rendering of each name in the set of names */
-
-            name = sk_GENERAL_NAME_value(names, j);
-            if (name->type == GEN_DIRNAME) {
-
-                /* we special-case DirName as a tuple of tuples of attributes */
-
-                t = PyTuple_New(2);
-                if (t == NULL) {
-                    goto fail;
-                }
-
-                v = PyString_FromString("DirName");
-                if (v == NULL) {
-                    Py_DECREF(t);
-                    goto fail;
-                }
-                PyTuple_SET_ITEM(t, 0, v);
-
-                v = _create_tuple_for_X509_NAME (name->d.dirn);
-                if (v == NULL) {
-                    Py_DECREF(t);
-                    goto fail;
-                }
-                PyTuple_SET_ITEM(t, 1, v);
-
-            } else {
-
-                /* for everything else, we use the OpenSSL print form */
-
-                (void) BIO_reset(biobuf);
-                GENERAL_NAME_print(biobuf, name);
-                len = BIO_gets(biobuf, buf, sizeof(buf)-1);
-                if (len < 0) {
-                    _setSSLError(NULL, 0, __FILE__, __LINE__);
-                    goto fail;
-                }
-                vptr = strchr(buf, ':');
-                if (vptr == NULL)
-                    goto fail;
-                t = PyTuple_New(2);
-                if (t == NULL)
-                    goto fail;
-                v = PyString_FromStringAndSize(buf, (vptr - buf));
-                if (v == NULL) {
-                    Py_DECREF(t);
-                    goto fail;
-                }
-                PyTuple_SET_ITEM(t, 0, v);
-                v = PyString_FromStringAndSize((vptr + 1), (len - (vptr - buf + 1)));
-                if (v == NULL) {
-                    Py_DECREF(t);
-                    goto fail;
-                }
-                PyTuple_SET_ITEM(t, 1, v);
-            }
-
-            /* and add that rendering to the list */
-
-            if (PyList_Append(peer_alt_names, t) < 0) {
-                Py_DECREF(t);
-                goto fail;
-            }
-            Py_DECREF(t);
-        }
-    }
-    BIO_free(biobuf);
-    if (peer_alt_names != Py_None) {
-        v = PyList_AsTuple(peer_alt_names);
-        Py_DECREF(peer_alt_names);
-        return v;
-    } else {
-        return peer_alt_names;
-    }
-
-
-  fail:
-    if (biobuf != NULL)
-        BIO_free(biobuf);
-
-    if (peer_alt_names != Py_None) {
-        Py_XDECREF(peer_alt_names);
-    }
-
-    return NULL;
-}
-
-static PyObject *
-_decode_certificate (X509 *certificate, int verbose) {
-
-    PyObject *retval = NULL;
-    BIO *biobuf = NULL;
-    PyObject *peer;
-    PyObject *peer_alt_names = NULL;
-    PyObject *issuer;
-    PyObject *version;
-    PyObject *sn_obj;
-    ASN1_INTEGER *serialNumber;
-    char buf[2048];
-    int len;
-    ASN1_TIME *notBefore, *notAfter;
-    PyObject *pnotBefore, *pnotAfter;
-
-    retval = PyDict_New();
-    if (retval == NULL)
-        return NULL;
-
-    peer = _create_tuple_for_X509_NAME(
-        X509_get_subject_name(certificate));
-    if (peer == NULL)
-        goto fail0;
-    if (PyDict_SetItemString(retval, (const char *) "subject", peer) < 0) {
-        Py_DECREF(peer);
-        goto fail0;
-    }
-    Py_DECREF(peer);
-
-    if (verbose) {
-        issuer = _create_tuple_for_X509_NAME(
-            X509_get_issuer_name(certificate));
-        if (issuer == NULL)
-            goto fail0;
-        if (PyDict_SetItemString(retval, (const char *)"issuer", issuer) < 0) {
-            Py_DECREF(issuer);
-            goto fail0;
-        }
-        Py_DECREF(issuer);
-
-        version = PyInt_FromLong(X509_get_version(certificate) + 1);
-        if (PyDict_SetItemString(retval, "version", version) < 0) {
-            Py_DECREF(version);
-            goto fail0;
-        }
-        Py_DECREF(version);
-    }
-
-    /* get a memory buffer */
-    biobuf = BIO_new(BIO_s_mem());
-
-    if (verbose) {
-
-        (void) BIO_reset(biobuf);
-        serialNumber = X509_get_serialNumber(certificate);
-        /* should not exceed 20 octets, 160 bits, so buf is big enough */
-        i2a_ASN1_INTEGER(biobuf, serialNumber);
-        len = BIO_gets(biobuf, buf, sizeof(buf)-1);
-        if (len < 0) {
-            _setSSLError(NULL, 0, __FILE__, __LINE__);
-            goto fail1;
-        }
-        sn_obj = PyString_FromStringAndSize(buf, len);
-        if (sn_obj == NULL)
-            goto fail1;
-        if (PyDict_SetItemString(retval, "serialNumber", sn_obj) < 0) {
-            Py_DECREF(sn_obj);
-            goto fail1;
-        }
-        Py_DECREF(sn_obj);
-
-        (void) BIO_reset(biobuf);
-        notBefore = X509_get_notBefore(certificate);
-        ASN1_TIME_print(biobuf, notBefore);
-        len = BIO_gets(biobuf, buf, sizeof(buf)-1);
-        if (len < 0) {
-            _setSSLError(NULL, 0, __FILE__, __LINE__);
-            goto fail1;
-        }
-        pnotBefore = PyString_FromStringAndSize(buf, len);
-        if (pnotBefore == NULL)
-            goto fail1;
-        if (PyDict_SetItemString(retval, "notBefore", pnotBefore) < 0) {
-            Py_DECREF(pnotBefore);
-            goto fail1;
-        }
-        Py_DECREF(pnotBefore);
-    }
-
-    (void) BIO_reset(biobuf);
-    notAfter = X509_get_notAfter(certificate);
-    ASN1_TIME_print(biobuf, notAfter);
-    len = BIO_gets(biobuf, buf, sizeof(buf)-1);
-    if (len < 0) {
-        _setSSLError(NULL, 0, __FILE__, __LINE__);
-        goto fail1;
-    }
-    pnotAfter = PyString_FromStringAndSize(buf, len);
-    if (pnotAfter == NULL)
-        goto fail1;
-    if (PyDict_SetItemString(retval, "notAfter", pnotAfter) < 0) {
-        Py_DECREF(pnotAfter);
-        goto fail1;
-    }
-    Py_DECREF(pnotAfter);
-
-    /* Now look for subjectAltName */
-
-    peer_alt_names = _get_peer_alt_names(certificate);
-    if (peer_alt_names == NULL)
-        goto fail1;
-    else if (peer_alt_names != Py_None) {
-        if (PyDict_SetItemString(retval, "subjectAltName",
-                                 peer_alt_names) < 0) {
-            Py_DECREF(peer_alt_names);
-            goto fail1;
-        }
-        Py_DECREF(peer_alt_names);
-    }
-
-    BIO_free(biobuf);
-    return retval;
-
-  fail1:
-    if (biobuf != NULL)
-        BIO_free(biobuf);
-  fail0:
-    Py_XDECREF(retval);
-    return NULL;
-}
-
-
-static PyObject *
-PySSL_test_decode_certificate (PyObject *mod, PyObject *args) {
-
-    PyObject *retval = NULL;
-    char *filename = NULL;
-    X509 *x=NULL;
-    BIO *cert;
-    int verbose = 1;
-
-    if (!PyArg_ParseTuple(args, "s|i:test_decode_certificate", &filename, &verbose))
-        return NULL;
-
-    if ((cert=BIO_new(BIO_s_file())) == NULL) {
-        PyErr_SetString(PySSLErrorObject, "Can't malloc memory to read file");
-        goto fail0;
-    }
-
-    if (BIO_read_filename(cert,filename) <= 0) {
-        PyErr_SetString(PySSLErrorObject, "Can't open file");
-        goto fail0;
-    }
-
-    x = PEM_read_bio_X509_AUX(cert,NULL, NULL, NULL);
-    if (x == NULL) {
-        PyErr_SetString(PySSLErrorObject, "Error decoding PEM-encoded file");
-        goto fail0;
-    }
-
-    retval = _decode_certificate(x, verbose);
-    X509_free(x);
-
-  fail0:
-
-    if (cert != NULL) BIO_free(cert);
-    return retval;
-}
-
-
-static PyObject *
-PySSL_peercert(PySSLObject *self, PyObject *args)
-{
-    PyObject *retval = NULL;
-    int len;
-    int verification;
-    PyObject *binary_mode = Py_None;
-
-    if (!PyArg_ParseTuple(args, "|O:peer_certificate", &binary_mode))
-        return NULL;
-
-    if (!self->peer_cert)
-        Py_RETURN_NONE;
-
-    if (PyObject_IsTrue(binary_mode)) {
-        /* return cert in DER-encoded format */
-
-        unsigned char *bytes_buf = NULL;
-
-        bytes_buf = NULL;
-        len = i2d_X509(self->peer_cert, &bytes_buf);
-        if (len < 0) {
-            PySSL_SetError(self, len, __FILE__, __LINE__);
-            return NULL;
-        }
-        retval = PyString_FromStringAndSize((const char *) bytes_buf, len);
-        OPENSSL_free(bytes_buf);
-        return retval;
-
-    } else {
-
-        verification = SSL_CTX_get_verify_mode(self->ctx);
-        if ((verification & SSL_VERIFY_PEER) == 0)
-            return PyDict_New();
-        else
-            return _decode_certificate (self->peer_cert, 0);
-    }
-}
-
-PyDoc_STRVAR(PySSL_peercert_doc,
-"peer_certificate([der=False]) -> certificate\n\
-\n\
-Returns the certificate for the peer.  If no certificate was provided,\n\
-returns None.  If a certificate was provided, but not validated, returns\n\
-an empty dictionary.  Otherwise returns a dict containing information\n\
-about the peer certificate.\n\
-\n\
-If the optional argument is True, returns a DER-encoded copy of the\n\
-peer certificate, or None if no certificate was provided.  This will\n\
-return the certificate even if it wasn't validated.");
-
-static PyObject *PySSL_cipher (PySSLObject *self) {
-
-    PyObject *retval, *v;
-    const SSL_CIPHER *current;
-    char *cipher_name;
-    char *cipher_protocol;
-
-    if (self->ssl == NULL)
-        Py_RETURN_NONE;
-    current = SSL_get_current_cipher(self->ssl);
-    if (current == NULL)
-        Py_RETURN_NONE;
-
-    retval = PyTuple_New(3);
-    if (retval == NULL)
-        return NULL;
-
-    cipher_name = (char *) SSL_CIPHER_get_name(current);
-    if (cipher_name == NULL) {
-        Py_INCREF(Py_None);
-        PyTuple_SET_ITEM(retval, 0, Py_None);
-    } else {
-        v = PyString_FromString(cipher_name);
-        if (v == NULL)
-            goto fail0;
-        PyTuple_SET_ITEM(retval, 0, v);
-    }
-    cipher_protocol = SSL_CIPHER_get_version(current);
-    if (cipher_protocol == NULL) {
-        Py_INCREF(Py_None);
-        PyTuple_SET_ITEM(retval, 1, Py_None);
-    } else {
-        v = PyString_FromString(cipher_protocol);
-        if (v == NULL)
-            goto fail0;
-        PyTuple_SET_ITEM(retval, 1, v);
-    }
-    v = PyInt_FromLong(SSL_CIPHER_get_bits(current, NULL));
-    if (v == NULL)
-        goto fail0;
-    PyTuple_SET_ITEM(retval, 2, v);
-    return retval;
-
-  fail0:
-    Py_DECREF(retval);
-    return NULL;
-}
-
-static void PySSL_dealloc(PySSLObject *self)
-{
-    if (self->peer_cert)        /* Possible not to have one? */
-        X509_free (self->peer_cert);
-    if (self->ssl)
-        SSL_free(self->ssl);
-    if (self->ctx)
-        SSL_CTX_free(self->ctx);
-    Py_XDECREF(self->Socket);
-    PyObject_Del(self);
-}
-
-/* If the socket has a timeout, do a select()/poll() on the socket.
-   The argument writing indicates the direction.
-   Returns one of the possibilities in the timeout_state enum (above).
- */
-
-static int
-check_socket_and_wait_for_timeout(PySocketSockObject *s, int writing)
-{
-    fd_set fds;
-    struct timeval tv;
-    int rc;
-
-    /* Nothing to do unless we're in timeout mode (not non-blocking) */
-    if (s->sock_timeout < 0.0)
-        return SOCKET_IS_BLOCKING;
-    else if (s->sock_timeout == 0.0)
-        return SOCKET_IS_NONBLOCKING;
-
-    /* Guard against closed socket */
-    if (s->sock_fd < 0)
-        return SOCKET_HAS_BEEN_CLOSED;
-
-    /* Prefer poll, if available, since you can poll() any fd
-     * which can't be done with select(). */
-#ifdef HAVE_POLL
-    {
-        struct pollfd pollfd;
-        int timeout;
-
-        pollfd.fd = s->sock_fd;
-        pollfd.events = writing ? POLLOUT : POLLIN;
-
-        /* s->sock_timeout is in seconds, timeout in ms */
-        timeout = (int)(s->sock_timeout * 1000 + 0.5);
-        PySSL_BEGIN_ALLOW_THREADS
-        rc = poll(&pollfd, 1, timeout);
-        PySSL_END_ALLOW_THREADS
-
-        goto normal_return;
-    }
-#endif
-
-    /* Guard against socket too large for select*/
-#ifndef Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE
-    if (s->sock_fd >= FD_SETSIZE)
-        return SOCKET_TOO_LARGE_FOR_SELECT;
-#endif
-
-    /* Construct the arguments to select */
-    tv.tv_sec = (int)s->sock_timeout;
-    tv.tv_usec = (int)((s->sock_timeout - tv.tv_sec) * 1e6);
-    FD_ZERO(&fds);
-    FD_SET(s->sock_fd, &fds);
-
-    /* See if the socket is ready */
-    PySSL_BEGIN_ALLOW_THREADS
-    if (writing)
-        rc = select(s->sock_fd+1, NULL, &fds, NULL, &tv);
-    else
-        rc = select(s->sock_fd+1, &fds, NULL, NULL, &tv);
-    PySSL_END_ALLOW_THREADS
-
-#ifdef HAVE_POLL
-normal_return:
-#endif
-    /* Return SOCKET_TIMED_OUT on timeout, SOCKET_OPERATION_OK otherwise
-       (when we are able to write or when there's something to read) */
-    return rc == 0 ? SOCKET_HAS_TIMED_OUT : SOCKET_OPERATION_OK;
-}
-
-static PyObject *PySSL_SSLwrite(PySSLObject *self, PyObject *args)
-{
-    Py_buffer buf;
-    int len;
-    int sockstate;
-    int err;
-    int nonblocking;
-
-    if (!PyArg_ParseTuple(args, "s*:write", &buf))
-        return NULL;
-
-    /* just in case the blocking state of the socket has been changed */
-    nonblocking = (self->Socket->sock_timeout >= 0.0);
-    BIO_set_nbio(SSL_get_rbio(self->ssl), nonblocking);
-    BIO_set_nbio(SSL_get_wbio(self->ssl), nonblocking);
-
-    sockstate = check_socket_and_wait_for_timeout(self->Socket, 1);
-    if (sockstate == SOCKET_HAS_TIMED_OUT) {
-        PyErr_SetString(PySSLErrorObject,
-                        "The write operation timed out");
-        goto error;
-    } else if (sockstate == SOCKET_HAS_BEEN_CLOSED) {
-        PyErr_SetString(PySSLErrorObject,
-                        "Underlying socket has been closed.");
-        goto error;
-    } else if (sockstate == SOCKET_TOO_LARGE_FOR_SELECT) {
-        PyErr_SetString(PySSLErrorObject,
-                        "Underlying socket too large for select().");
-        goto error;
-    }
-    do {
-        PySSL_BEGIN_ALLOW_THREADS
-        len = SSL_write(self->ssl, buf.buf, buf.len);
-        err = SSL_get_error(self->ssl, len);
-        PySSL_END_ALLOW_THREADS
-        if (PyErr_CheckSignals()) {
-            goto error;
-        }
-        if (err == SSL_ERROR_WANT_READ) {
-            sockstate = check_socket_and_wait_for_timeout(self->Socket, 0);
-        } else if (err == SSL_ERROR_WANT_WRITE) {
-            sockstate = check_socket_and_wait_for_timeout(self->Socket, 1);
-        } else {
-            sockstate = SOCKET_OPERATION_OK;
-        }
-        if (sockstate == SOCKET_HAS_TIMED_OUT) {
-            PyErr_SetString(PySSLErrorObject,
-                            "The write operation timed out");
-            goto error;
-        } else if (sockstate == SOCKET_HAS_BEEN_CLOSED) {
-            PyErr_SetString(PySSLErrorObject,
-                            "Underlying socket has been closed.");
-            goto error;
-        } else if (sockstate == SOCKET_IS_NONBLOCKING) {
-            break;
-        }
-    } while (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE);
-
-    PyBuffer_Release(&buf);
-    if (len > 0)
-        return PyInt_FromLong(len);
-    else
-        return PySSL_SetError(self, len, __FILE__, __LINE__);
-
-error:
-    PyBuffer_Release(&buf);
-    return NULL;
-}
-
-PyDoc_STRVAR(PySSL_SSLwrite_doc,
-"write(s) -> len\n\
-\n\
-Writes the string s into the SSL object.  Returns the number\n\
-of bytes written.");
-
-static PyObject *PySSL_SSLpending(PySSLObject *self)
-{
-    int count = 0;
-
-    PySSL_BEGIN_ALLOW_THREADS
-    count = SSL_pending(self->ssl);
-    PySSL_END_ALLOW_THREADS
-    if (count < 0)
-        return PySSL_SetError(self, count, __FILE__, __LINE__);
-    else
-        return PyInt_FromLong(count);
-}
-
-PyDoc_STRVAR(PySSL_SSLpending_doc,
-"pending() -> count\n\
-\n\
-Returns the number of already decrypted bytes available for read,\n\
-pending on the connection.\n");
-
-static PyObject *PySSL_SSLread(PySSLObject *self, PyObject *args)
-{
-    PyObject *buf;
-    int count = 0;
-    int len = 1024;
-    int sockstate;
-    int err;
-    int nonblocking;
-
-    if (!PyArg_ParseTuple(args, "|i:read", &len))
-        return NULL;
-
-    if (!(buf = PyString_FromStringAndSize((char *) 0, len)))
-        return NULL;
-
-    /* just in case the blocking state of the socket has been changed */
-    nonblocking = (self->Socket->sock_timeout >= 0.0);
-    BIO_set_nbio(SSL_get_rbio(self->ssl), nonblocking);
-    BIO_set_nbio(SSL_get_wbio(self->ssl), nonblocking);
-
-    /* first check if there are bytes ready to be read */
-    PySSL_BEGIN_ALLOW_THREADS
-    count = SSL_pending(self->ssl);
-    PySSL_END_ALLOW_THREADS
-
-    if (!count) {
-        sockstate = check_socket_and_wait_for_timeout(self->Socket, 0);
-        if (sockstate == SOCKET_HAS_TIMED_OUT) {
-            PyErr_SetString(PySSLErrorObject,
-                            "The read operation timed out");
-            Py_DECREF(buf);
-            return NULL;
-        } else if (sockstate == SOCKET_TOO_LARGE_FOR_SELECT) {
-            PyErr_SetString(PySSLErrorObject,
-                            "Underlying socket too large for select().");
-            Py_DECREF(buf);
-            return NULL;
-        } else if (sockstate == SOCKET_HAS_BEEN_CLOSED) {
-            if (SSL_get_shutdown(self->ssl) !=
-                SSL_RECEIVED_SHUTDOWN)
-            {
-                Py_DECREF(buf);
-                PyErr_SetString(PySSLErrorObject,
-                                "Socket closed without SSL shutdown handshake");
-                return NULL;
-            } else {
-                /* should contain a zero-length string */
-                _PyString_Resize(&buf, 0);
-                return buf;
-            }
-        }
-    }
-    do {
-        PySSL_BEGIN_ALLOW_THREADS
-        count = SSL_read(self->ssl, PyString_AsString(buf), len);
-        err = SSL_get_error(self->ssl, count);
-        PySSL_END_ALLOW_THREADS
-        if(PyErr_CheckSignals()) {
-            Py_DECREF(buf);
-            return NULL;
-        }
-        if (err == SSL_ERROR_WANT_READ) {
-            sockstate = check_socket_and_wait_for_timeout(self->Socket, 0);
-        } else if (err == SSL_ERROR_WANT_WRITE) {
-            sockstate = check_socket_and_wait_for_timeout(self->Socket, 1);
-        } else if ((err == SSL_ERROR_ZERO_RETURN) &&
-                   (SSL_get_shutdown(self->ssl) ==
-                    SSL_RECEIVED_SHUTDOWN))
-        {
-            _PyString_Resize(&buf, 0);
-            return buf;
-        } else {
-            sockstate = SOCKET_OPERATION_OK;
-        }
-        if (sockstate == SOCKET_HAS_TIMED_OUT) {
-            PyErr_SetString(PySSLErrorObject,
-                            "The read operation timed out");
-            Py_DECREF(buf);
-            return NULL;
-        } else if (sockstate == SOCKET_IS_NONBLOCKING) {
-            break;
-        }
-    } while (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE);
-    if (count <= 0) {
-        Py_DECREF(buf);
-        return PySSL_SetError(self, count, __FILE__, __LINE__);
-    }
-    if (count != len)
-        _PyString_Resize(&buf, count);
-    return buf;
-}
-
-PyDoc_STRVAR(PySSL_SSLread_doc,
-"read([len]) -> string\n\
-\n\
-Read up to len bytes from the SSL socket.");
-
-static PyObject *PySSL_SSLshutdown(PySSLObject *self)
-{
-    int err, ssl_err, sockstate, nonblocking;
-    int zeros = 0;
-
-    /* Guard against closed socket */
-    if (self->Socket->sock_fd < 0) {
-        PyErr_SetString(PySSLErrorObject,
-                        "Underlying socket has been closed.");
-        return NULL;
-    }
-
-    /* Just in case the blocking state of the socket has been changed */
-    nonblocking = (self->Socket->sock_timeout >= 0.0);
-    BIO_set_nbio(SSL_get_rbio(self->ssl), nonblocking);
-    BIO_set_nbio(SSL_get_wbio(self->ssl), nonblocking);
-
-    while (1) {
-        PySSL_BEGIN_ALLOW_THREADS
-        /* Disable read-ahead so that unwrap can work correctly.
-         * Otherwise OpenSSL might read in too much data,
-         * eating clear text data that happens to be
-         * transmitted after the SSL shutdown.
-         * Should be safe to call repeatedly everytime this
-         * function is used and the shutdown_seen_zero != 0
-         * condition is met.
-         */
-        if (self->shutdown_seen_zero)
-            SSL_set_read_ahead(self->ssl, 0);
-        err = SSL_shutdown(self->ssl);
-        PySSL_END_ALLOW_THREADS
-        /* If err == 1, a secure shutdown with SSL_shutdown() is complete */
-        if (err > 0)
-            break;
-        if (err == 0) {
-            /* Don't loop endlessly; instead preserve legacy
-               behaviour of trying SSL_shutdown() only twice.
-               This looks necessary for OpenSSL < 0.9.8m */
-            if (++zeros > 1)
-                break;
-            /* Shutdown was sent, now try receiving */
-            self->shutdown_seen_zero = 1;
-            continue;
-        }
-
-        /* Possibly retry shutdown until timeout or failure */
-        ssl_err = SSL_get_error(self->ssl, err);
-        if (ssl_err == SSL_ERROR_WANT_READ)
-            sockstate = check_socket_and_wait_for_timeout(self->Socket, 0);
-        else if (ssl_err == SSL_ERROR_WANT_WRITE)
-            sockstate = check_socket_and_wait_for_timeout(self->Socket, 1);
-        else
-            break;
-        if (sockstate == SOCKET_HAS_TIMED_OUT) {
-            if (ssl_err == SSL_ERROR_WANT_READ)
-                PyErr_SetString(PySSLErrorObject,
-                                "The read operation timed out");
-            else
-                PyErr_SetString(PySSLErrorObject,
-                                "The write operation timed out");
-            return NULL;
-        }
-        else if (sockstate == SOCKET_TOO_LARGE_FOR_SELECT) {
-            PyErr_SetString(PySSLErrorObject,
-                            "Underlying socket too large for select().");
-            return NULL;
-        }
-        else if (sockstate != SOCKET_OPERATION_OK)
-            /* Retain the SSL error code */
-            break;
-    }
-
-    if (err < 0)
-        return PySSL_SetError(self, err, __FILE__, __LINE__);
-    else {
-        Py_INCREF(self->Socket);
-        return (PyObject *) (self->Socket);
-    }
-}
-
-PyDoc_STRVAR(PySSL_SSLshutdown_doc,
-"shutdown(s) -> socket\n\
-\n\
-Does the SSL shutdown handshake with the remote end, and returns\n\
-the underlying socket object.");
-
-static PyMethodDef PySSLMethods[] = {
-    {"do_handshake", (PyCFunction)PySSL_SSLdo_handshake, METH_NOARGS},
-    {"write", (PyCFunction)PySSL_SSLwrite, METH_VARARGS,
-     PySSL_SSLwrite_doc},
-    {"read", (PyCFunction)PySSL_SSLread, METH_VARARGS,
-     PySSL_SSLread_doc},
-    {"pending", (PyCFunction)PySSL_SSLpending, METH_NOARGS,
-     PySSL_SSLpending_doc},
-    {"server", (PyCFunction)PySSL_server, METH_NOARGS},
-    {"issuer", (PyCFunction)PySSL_issuer, METH_NOARGS},
-    {"peer_certificate", (PyCFunction)PySSL_peercert, METH_VARARGS,
-     PySSL_peercert_doc},
-    {"cipher", (PyCFunction)PySSL_cipher, METH_NOARGS},
-    {"shutdown", (PyCFunction)PySSL_SSLshutdown, METH_NOARGS,
-     PySSL_SSLshutdown_doc},
-    {NULL, NULL}
-};
-
-static PyObject *PySSL_getattr(PySSLObject *self, char *name)
-{
-    return Py_FindMethod(PySSLMethods, (PyObject *)self, name);
-}
-
-static PyTypeObject PySSL_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "ssl.SSLContext",                   /*tp_name*/
-    sizeof(PySSLObject),                /*tp_basicsize*/
-    0,                                  /*tp_itemsize*/
-    /* methods */
-    (destructor)PySSL_dealloc,          /*tp_dealloc*/
-    0,                                  /*tp_print*/
-    (getattrfunc)PySSL_getattr,         /*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*/
-};
-
-#ifdef HAVE_OPENSSL_RAND
-
-/* helper routines for seeding the SSL PRNG */
-static PyObject *
-PySSL_RAND_add(PyObject *self, PyObject *args)
-{
-    char *buf;
-    int len;
-    double entropy;
-
-    if (!PyArg_ParseTuple(args, "s#d:RAND_add", &buf, &len, &entropy))
-        return NULL;
-    RAND_add(buf, len, entropy);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(PySSL_RAND_add_doc,
-"RAND_add(string, entropy)\n\
-\n\
-Mix string into the OpenSSL PRNG state.  entropy (a float) is a lower\n\
-bound on the entropy contained in string.  See RFC 1750.");
-
-static PyObject *
-PySSL_RAND_status(PyObject *self)
-{
-    return PyInt_FromLong(RAND_status());
-}
-
-PyDoc_STRVAR(PySSL_RAND_status_doc,
-"RAND_status() -> 0 or 1\n\
-\n\
-Returns 1 if the OpenSSL PRNG has been seeded with enough data and 0 if not.\n\
-It is necessary to seed the PRNG with RAND_add() on some platforms before\n\
-using the ssl() function.");
-
-static PyObject *
-PySSL_RAND_egd(PyObject *self, PyObject *arg)
-{
-    int bytes;
-
-    if (!PyString_Check(arg))
-        return PyErr_Format(PyExc_TypeError,
-                            "RAND_egd() expected string, found %s",
-                            Py_TYPE(arg)->tp_name);
-    bytes = RAND_egd(PyString_AS_STRING(arg));
-    if (bytes == -1) {
-        PyErr_SetString(PySSLErrorObject,
-                        "EGD connection failed or EGD did not return "
-                        "enough data to seed the PRNG");
-        return NULL;
-    }
-    return PyInt_FromLong(bytes);
-}
-
-PyDoc_STRVAR(PySSL_RAND_egd_doc,
-"RAND_egd(path) -> bytes\n\
-\n\
-Queries the entropy gather daemon (EGD) on the socket named by 'path'.\n\
-Returns number of bytes read.  Raises SSLError if connection to EGD\n\
-fails or if it does provide enough data to seed PRNG.");
-
-#endif
-
-/* List of functions exported by this module. */
-
-static PyMethodDef PySSL_methods[] = {
-    {"sslwrap",             PySSL_sslwrap,
-     METH_VARARGS, ssl_doc},
-    {"_test_decode_cert",       PySSL_test_decode_certificate,
-     METH_VARARGS},
-#ifdef HAVE_OPENSSL_RAND
-    {"RAND_add",            PySSL_RAND_add, METH_VARARGS,
-     PySSL_RAND_add_doc},
-    {"RAND_egd",            PySSL_RAND_egd, METH_O,
-     PySSL_RAND_egd_doc},
-    {"RAND_status",         (PyCFunction)PySSL_RAND_status, METH_NOARGS,
-     PySSL_RAND_status_doc},
-#endif
-    {NULL,                  NULL}            /* Sentinel */
-};
-
-
-#ifdef WITH_THREAD
-
-/* an implementation of OpenSSL threading operations in terms
-   of the Python C thread library */
-
-static PyThread_type_lock *_ssl_locks = NULL;
-
-static unsigned long _ssl_thread_id_function (void) {
-    return PyThread_get_thread_ident();
-}
-
-static void _ssl_thread_locking_function (int mode, int n, const char *file, int line) {
-    /* this function is needed to perform locking on shared data
-       structures. (Note that OpenSSL uses a number of global data
-       structures that will be implicitly shared whenever multiple threads
-       use OpenSSL.) Multi-threaded applications will crash at random if
-       it is not set.
-
-       locking_function() must be able to handle up to CRYPTO_num_locks()
-       different mutex locks. It sets the n-th lock if mode & CRYPTO_LOCK, and
-       releases it otherwise.
-
-       file and line are the file number of the function setting the
-       lock. They can be useful for debugging.
-    */
-
-    if ((_ssl_locks == NULL) ||
-        (n < 0) || ((unsigned)n >= _ssl_locks_count))
-        return;
-
-    if (mode & CRYPTO_LOCK) {
-        PyThread_acquire_lock(_ssl_locks[n], 1);
-    } else {
-        PyThread_release_lock(_ssl_locks[n]);
-    }
-}
-
-static int _setup_ssl_threads(void) {
-
-    unsigned int i;
-
-    if (_ssl_locks == NULL) {
-        _ssl_locks_count = CRYPTO_num_locks();
-        _ssl_locks = (PyThread_type_lock *)
-            malloc(sizeof(PyThread_type_lock) * _ssl_locks_count);
-        if (_ssl_locks == NULL)
-            return 0;
-        memset(_ssl_locks, 0, sizeof(PyThread_type_lock) * _ssl_locks_count);
-        for (i = 0;  i < _ssl_locks_count;  i++) {
-            _ssl_locks[i] = PyThread_allocate_lock();
-            if (_ssl_locks[i] == NULL) {
-                unsigned int j;
-                for (j = 0;  j < i;  j++) {
-                    PyThread_free_lock(_ssl_locks[j]);
-                }
-                free(_ssl_locks);
-                return 0;
-            }
-        }
-        CRYPTO_set_locking_callback(_ssl_thread_locking_function);
-        CRYPTO_set_id_callback(_ssl_thread_id_function);
-    }
-    return 1;
-}
-
-#endif  /* def HAVE_THREAD */
-
-PyDoc_STRVAR(module_doc,
-"Implementation module for SSL socket operations.  See the socket module\n\
-for documentation.");
-
-PyMODINIT_FUNC
-init_ssl(void)
-{
-    PyObject *m, *d, *r;
-    unsigned long libver;
-    unsigned int major, minor, fix, patch, status;
-
-    Py_TYPE(&PySSL_Type) = &PyType_Type;
-
-    m = Py_InitModule3("_ssl", PySSL_methods, module_doc);
-    if (m == NULL)
-        return;
-    d = PyModule_GetDict(m);
-
-    /* Load _socket module and its C API */
-    if (PySocketModule_ImportModuleAndAPI())
-        return;
-
-    /* Init OpenSSL */
-    SSL_load_error_strings();
-    SSL_library_init();
-#ifdef WITH_THREAD
-    /* note that this will start threading if not already started */
-    if (!_setup_ssl_threads()) {
-        return;
-    }
-#endif
-    OpenSSL_add_all_algorithms();
-
-    /* Add symbols to module dict */
-    PySSLErrorObject = PyErr_NewException("ssl.SSLError",
-                                          PySocketModule.error,
-                                          NULL);
-    if (PySSLErrorObject == NULL)
-        return;
-    if (PyDict_SetItemString(d, "SSLError", PySSLErrorObject) != 0)
-        return;
-    if (PyDict_SetItemString(d, "SSLType",
-                             (PyObject *)&PySSL_Type) != 0)
-        return;
-    PyModule_AddIntConstant(m, "SSL_ERROR_ZERO_RETURN",
-                            PY_SSL_ERROR_ZERO_RETURN);
-    PyModule_AddIntConstant(m, "SSL_ERROR_WANT_READ",
-                            PY_SSL_ERROR_WANT_READ);
-    PyModule_AddIntConstant(m, "SSL_ERROR_WANT_WRITE",
-                            PY_SSL_ERROR_WANT_WRITE);
-    PyModule_AddIntConstant(m, "SSL_ERROR_WANT_X509_LOOKUP",
-                            PY_SSL_ERROR_WANT_X509_LOOKUP);
-    PyModule_AddIntConstant(m, "SSL_ERROR_SYSCALL",
-                            PY_SSL_ERROR_SYSCALL);
-    PyModule_AddIntConstant(m, "SSL_ERROR_SSL",
-                            PY_SSL_ERROR_SSL);
-    PyModule_AddIntConstant(m, "SSL_ERROR_WANT_CONNECT",
-                            PY_SSL_ERROR_WANT_CONNECT);
-    /* non ssl.h errorcodes */
-    PyModule_AddIntConstant(m, "SSL_ERROR_EOF",
-                            PY_SSL_ERROR_EOF);
-    PyModule_AddIntConstant(m, "SSL_ERROR_INVALID_ERROR_CODE",
-                            PY_SSL_ERROR_INVALID_ERROR_CODE);
-    /* cert requirements */
-    PyModule_AddIntConstant(m, "CERT_NONE",
-                            PY_SSL_CERT_NONE);
-    PyModule_AddIntConstant(m, "CERT_OPTIONAL",
-                            PY_SSL_CERT_OPTIONAL);
-    PyModule_AddIntConstant(m, "CERT_REQUIRED",
-                            PY_SSL_CERT_REQUIRED);
-
-    /* protocol versions */
-#ifndef OPENSSL_NO_SSL2
-    PyModule_AddIntConstant(m, "PROTOCOL_SSLv2",
-                            PY_SSL_VERSION_SSL2);
-#endif
-    PyModule_AddIntConstant(m, "PROTOCOL_SSLv3",
-                            PY_SSL_VERSION_SSL3);
-    PyModule_AddIntConstant(m, "PROTOCOL_SSLv23",
-                            PY_SSL_VERSION_SSL23);
-    PyModule_AddIntConstant(m, "PROTOCOL_TLSv1",
-                            PY_SSL_VERSION_TLS1);
-
-    /* OpenSSL version */
-    /* SSLeay() gives us the version of the library linked against,
-       which could be different from the headers version.
-    */
-    libver = SSLeay();
-    r = PyLong_FromUnsignedLong(libver);
-    if (r == NULL)
-        return;
-    if (PyModule_AddObject(m, "OPENSSL_VERSION_NUMBER", r))
-        return;
-    status = libver & 0xF;
-    libver >>= 4;
-    patch = libver & 0xFF;
-    libver >>= 8;
-    fix = libver & 0xFF;
-    libver >>= 8;
-    minor = libver & 0xFF;
-    libver >>= 8;
-    major = libver & 0xFF;
-    r = Py_BuildValue("IIIII", major, minor, fix, patch, status);
-    if (r == NULL || PyModule_AddObject(m, "OPENSSL_VERSION_INFO", r))
-        return;
-    r = PyString_FromString(SSLeay_version(SSLEAY_VERSION));
-    if (r == NULL || PyModule_AddObject(m, "OPENSSL_VERSION", r))
-        return;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_struct.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_struct.c
deleted file mode 100644
index 1bf46bb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_struct.c
+++ /dev/null
@@ -1,2048 +0,0 @@
-/* struct module -- pack values into and (out of) strings */
-
-/* New version supporting byte order, alignment and size options,
-   character strings, and unsigned numbers */
-
-#define PY_SSIZE_T_CLEAN
-
-#include "Python.h"
-#include "structseq.h"
-#include "structmember.h"
-#include <ctype.h>
-
-static PyTypeObject PyStructType;
-
-/* compatibility macros */
-#if (PY_VERSION_HEX < 0x02050000)
-typedef int Py_ssize_t;
-#endif
-
-/* warning messages */
-#define FLOAT_COERCE_WARN "integer argument expected, got float"
-#define NON_INTEGER_WARN "integer argument expected, got non-integer " \
-    "(implicit conversion using __int__ is deprecated)"
-
-
-/* The translation function for each format character is table driven */
-typedef struct _formatdef {
-    char format;
-    Py_ssize_t size;
-    Py_ssize_t alignment;
-    PyObject* (*unpack)(const char *,
-                        const struct _formatdef *);
-    int (*pack)(char *, PyObject *,
-                const struct _formatdef *);
-} formatdef;
-
-typedef struct _formatcode {
-    const struct _formatdef *fmtdef;
-    Py_ssize_t offset;
-    Py_ssize_t size;
-} formatcode;
-
-/* Struct object interface */
-
-typedef struct {
-    PyObject_HEAD
-    Py_ssize_t s_size;
-    Py_ssize_t s_len;
-    formatcode *s_codes;
-    PyObject *s_format;
-    PyObject *weakreflist; /* List of weak references */
-} PyStructObject;
-
-
-#define PyStruct_Check(op) PyObject_TypeCheck(op, &PyStructType)
-#define PyStruct_CheckExact(op) (Py_TYPE(op) == &PyStructType)
-
-
-/* Exception */
-
-static PyObject *StructError;
-
-
-/* Define various structs to figure out the alignments of types */
-
-
-typedef struct { char c; short x; } st_short;
-typedef struct { char c; int x; } st_int;
-typedef struct { char c; long x; } st_long;
-typedef struct { char c; float x; } st_float;
-typedef struct { char c; double x; } st_double;
-typedef struct { char c; void *x; } st_void_p;
-
-#define SHORT_ALIGN (sizeof(st_short) - sizeof(short))
-#define INT_ALIGN (sizeof(st_int) - sizeof(int))
-#define LONG_ALIGN (sizeof(st_long) - sizeof(long))
-#define FLOAT_ALIGN (sizeof(st_float) - sizeof(float))
-#define DOUBLE_ALIGN (sizeof(st_double) - sizeof(double))
-#define VOID_P_ALIGN (sizeof(st_void_p) - sizeof(void *))
-
-/* We can't support q and Q in native mode unless the compiler does;
-   in std mode, they're 8 bytes on all platforms. */
-#ifdef HAVE_LONG_LONG
-typedef struct { char c; PY_LONG_LONG x; } s_long_long;
-#define LONG_LONG_ALIGN (sizeof(s_long_long) - sizeof(PY_LONG_LONG))
-#endif
-
-#ifdef HAVE_C99_BOOL
-#define BOOL_TYPE _Bool
-typedef struct { char c; _Bool x; } s_bool;
-#define BOOL_ALIGN (sizeof(s_bool) - sizeof(BOOL_TYPE))
-#else
-#define BOOL_TYPE char
-#define BOOL_ALIGN 0
-#endif
-
-#define STRINGIFY(x)    #x
-
-#ifdef __powerc
-#pragma options align=reset
-#endif
-
-static char *integer_codes = "bBhHiIlLqQ";
-
-/* Helper to get a PyLongObject by hook or by crook.  Caller should decref. */
-
-static PyObject *
-get_pylong(PyObject *v)
-{
-    PyObject *r, *w;
-    int converted = 0;
-    assert(v != NULL);
-    if (!PyInt_Check(v) && !PyLong_Check(v)) {
-        PyNumberMethods *m;
-        /* Not an integer; first try to use __index__ to
-           convert to an integer.  If the __index__ method
-           doesn't exist, or raises a TypeError, try __int__.
-           Use of the latter is deprecated, and will fail in
-           Python 3.x. */
-
-        m = Py_TYPE(v)->tp_as_number;
-        if (PyIndex_Check(v)) {
-            w = PyNumber_Index(v);
-            if (w != NULL) {
-                v = w;
-                /* successfully converted to an integer */
-                converted = 1;
-            }
-            else if (PyErr_ExceptionMatches(PyExc_TypeError)) {
-                PyErr_Clear();
-            }
-            else
-                return NULL;
-        }
-        if (!converted && m != NULL && m->nb_int != NULL) {
-            /* Special case warning message for floats, for
-               backwards compatibility. */
-            if (PyFloat_Check(v)) {
-                if (PyErr_WarnEx(
-                            PyExc_DeprecationWarning,
-                            FLOAT_COERCE_WARN, 1))
-                    return NULL;
-            }
-            else {
-                if (PyErr_WarnEx(
-                            PyExc_DeprecationWarning,
-                            NON_INTEGER_WARN, 1))
-                    return NULL;
-            }
-            v = m->nb_int(v);
-            if (v == NULL)
-                return NULL;
-            if (!PyInt_Check(v) && !PyLong_Check(v)) {
-                PyErr_SetString(PyExc_TypeError,
-                                "__int__ method returned "
-                                "non-integer");
-                return NULL;
-            }
-            converted = 1;
-        }
-        if (!converted) {
-            PyErr_SetString(StructError,
-                            "cannot convert argument "
-                            "to integer");
-            return NULL;
-        }
-    }
-    else
-        /* Ensure we own a reference to v. */
-        Py_INCREF(v);
-
-    assert(PyInt_Check(v) || PyLong_Check(v));
-    if (PyInt_Check(v)) {
-        r = PyLong_FromLong(PyInt_AS_LONG(v));
-        Py_DECREF(v);
-    }
-    else if (PyLong_Check(v)) {
-        assert(PyLong_Check(v));
-        r = v;
-    }
-    else {
-        r = NULL;   /* silence compiler warning about
-                       possibly uninitialized variable */
-        assert(0);  /* shouldn't ever get here */
-    }
-
-    return r;
-}
-
-/* Helper to convert a Python object to a C long.  Sets an exception
-   (struct.error for an inconvertible type, OverflowError for
-   out-of-range values) and returns -1 on error. */
-
-static int
-get_long(PyObject *v, long *p)
-{
-    long x;
-
-    v = get_pylong(v);
-    if (v == NULL)
-        return -1;
-    assert(PyLong_Check(v));
-    x = PyLong_AsLong(v);
-    Py_DECREF(v);
-    if (x == (long)-1 && PyErr_Occurred())
-        return -1;
-    *p = x;
-    return 0;
-}
-
-/* Same, but handling unsigned long */
-
-static int
-get_ulong(PyObject *v, unsigned long *p)
-{
-    unsigned long x;
-
-    v = get_pylong(v);
-    if (v == NULL)
-        return -1;
-    assert(PyLong_Check(v));
-    x = PyLong_AsUnsignedLong(v);
-    Py_DECREF(v);
-    if (x == (unsigned long)-1 && PyErr_Occurred())
-        return -1;
-    *p = x;
-    return 0;
-}
-
-#ifdef HAVE_LONG_LONG
-
-/* Same, but handling native long long. */
-
-static int
-get_longlong(PyObject *v, PY_LONG_LONG *p)
-{
-    PY_LONG_LONG x;
-
-    v = get_pylong(v);
-    if (v == NULL)
-        return -1;
-    assert(PyLong_Check(v));
-    x = PyLong_AsLongLong(v);
-    Py_DECREF(v);
-    if (x == (PY_LONG_LONG)-1 && PyErr_Occurred())
-        return -1;
-    *p = x;
-    return 0;
-}
-
-/* Same, but handling native unsigned long long. */
-
-static int
-get_ulonglong(PyObject *v, unsigned PY_LONG_LONG *p)
-{
-    unsigned PY_LONG_LONG x;
-
-    v = get_pylong(v);
-    if (v == NULL)
-        return -1;
-    assert(PyLong_Check(v));
-    x = PyLong_AsUnsignedLongLong(v);
-    Py_DECREF(v);
-    if (x == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())
-        return -1;
-    *p = x;
-    return 0;
-}
-
-#endif
-
-/* Floating point helpers */
-
-static PyObject *
-unpack_float(const char *p,  /* start of 4-byte string */
-         int le)             /* true for little-endian, false for big-endian */
-{
-    double x;
-
-    x = _PyFloat_Unpack4((unsigned char *)p, le);
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-    return PyFloat_FromDouble(x);
-}
-
-static PyObject *
-unpack_double(const char *p,  /* start of 8-byte string */
-          int le)         /* true for little-endian, false for big-endian */
-{
-    double x;
-
-    x = _PyFloat_Unpack8((unsigned char *)p, le);
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-    return PyFloat_FromDouble(x);
-}
-
-/* Helper to format the range error exceptions */
-static int
-_range_error(const formatdef *f, int is_unsigned)
-{
-    /* ulargest is the largest unsigned value with f->size bytes.
-     * Note that the simpler:
-     *     ((size_t)1 << (f->size * 8)) - 1
-     * doesn't work when f->size == sizeof(size_t) because C doesn't
-     * define what happens when a left shift count is >= the number of
-     * bits in the integer being shifted; e.g., on some boxes it doesn't
-     * shift at all when they're equal.
-     */
-    const size_t ulargest = (size_t)-1 >> ((SIZEOF_SIZE_T - f->size)*8);
-    assert(f->size >= 1 && f->size <= SIZEOF_SIZE_T);
-    if (is_unsigned)
-        PyErr_Format(StructError,
-            "'%c' format requires 0 <= number <= %zu",
-            f->format,
-            ulargest);
-    else {
-        const Py_ssize_t largest = (Py_ssize_t)(ulargest >> 1);
-        PyErr_Format(StructError,
-            "'%c' format requires %zd <= number <= %zd",
-            f->format,
-            ~ largest,
-            largest);
-    }
-    return -1;
-}
-
-
-
-/* A large number of small routines follow, with names of the form
-
-   [bln][up]_TYPE
-
-   [bln] distiguishes among big-endian, little-endian and native.
-   [pu] distiguishes between pack (to struct) and unpack (from struct).
-   TYPE is one of char, byte, ubyte, etc.
-*/
-
-/* Native mode routines. ****************************************************/
-/* NOTE:
-   In all n[up]_<type> routines handling types larger than 1 byte, there is
-   *no* guarantee that the p pointer is properly aligned for each type,
-   therefore memcpy is called.  An intermediate variable is used to
-   compensate for big-endian architectures.
-   Normally both the intermediate variable and the memcpy call will be
-   skipped by C optimisation in little-endian architectures (gcc >= 2.91
-   does this). */
-
-static PyObject *
-nu_char(const char *p, const formatdef *f)
-{
-    return PyString_FromStringAndSize(p, 1);
-}
-
-static PyObject *
-nu_byte(const char *p, const formatdef *f)
-{
-    return PyInt_FromLong((long) *(signed char *)p);
-}
-
-static PyObject *
-nu_ubyte(const char *p, const formatdef *f)
-{
-    return PyInt_FromLong((long) *(unsigned char *)p);
-}
-
-static PyObject *
-nu_short(const char *p, const formatdef *f)
-{
-    short x;
-    memcpy((char *)&x, p, sizeof x);
-    return PyInt_FromLong((long)x);
-}
-
-static PyObject *
-nu_ushort(const char *p, const formatdef *f)
-{
-    unsigned short x;
-    memcpy((char *)&x, p, sizeof x);
-    return PyInt_FromLong((long)x);
-}
-
-static PyObject *
-nu_int(const char *p, const formatdef *f)
-{
-    int x;
-    memcpy((char *)&x, p, sizeof x);
-    return PyInt_FromLong((long)x);
-}
-
-static PyObject *
-nu_uint(const char *p, const formatdef *f)
-{
-    unsigned int x;
-    memcpy((char *)&x, p, sizeof x);
-#if (SIZEOF_LONG > SIZEOF_INT)
-    return PyInt_FromLong((long)x);
-#else
-    if (x <= ((unsigned int)LONG_MAX))
-        return PyInt_FromLong((long)x);
-    return PyLong_FromUnsignedLong((unsigned long)x);
-#endif
-}
-
-static PyObject *
-nu_long(const char *p, const formatdef *f)
-{
-    long x;
-    memcpy((char *)&x, p, sizeof x);
-    return PyInt_FromLong(x);
-}
-
-static PyObject *
-nu_ulong(const char *p, const formatdef *f)
-{
-    unsigned long x;
-    memcpy((char *)&x, p, sizeof x);
-    if (x <= LONG_MAX)
-        return PyInt_FromLong((long)x);
-    return PyLong_FromUnsignedLong(x);
-}
-
-/* Native mode doesn't support q or Q unless the platform C supports
-   long long (or, on Windows, __int64). */
-
-#ifdef HAVE_LONG_LONG
-
-static PyObject *
-nu_longlong(const char *p, const formatdef *f)
-{
-    PY_LONG_LONG x;
-    memcpy((char *)&x, p, sizeof x);
-    if (x >= LONG_MIN && x <= LONG_MAX)
-        return PyInt_FromLong(Py_SAFE_DOWNCAST(x, PY_LONG_LONG, long));
-    return PyLong_FromLongLong(x);
-}
-
-static PyObject *
-nu_ulonglong(const char *p, const formatdef *f)
-{
-    unsigned PY_LONG_LONG x;
-    memcpy((char *)&x, p, sizeof x);
-    if (x <= LONG_MAX)
-        return PyInt_FromLong(Py_SAFE_DOWNCAST(x, unsigned PY_LONG_LONG, long));
-    return PyLong_FromUnsignedLongLong(x);
-}
-
-#endif
-
-static PyObject *
-nu_bool(const char *p, const formatdef *f)
-{
-    BOOL_TYPE x;
-    memcpy((char *)&x, p, sizeof x);
-    return PyBool_FromLong(x != 0);
-}
-
-
-static PyObject *
-nu_float(const char *p, const formatdef *f)
-{
-    float x;
-    memcpy((char *)&x, p, sizeof x);
-    return PyFloat_FromDouble((double)x);
-}
-
-static PyObject *
-nu_double(const char *p, const formatdef *f)
-{
-    double x;
-    memcpy((char *)&x, p, sizeof x);
-    return PyFloat_FromDouble(x);
-}
-
-static PyObject *
-nu_void_p(const char *p, const formatdef *f)
-{
-    void *x;
-    memcpy((char *)&x, p, sizeof x);
-    return PyLong_FromVoidPtr(x);
-}
-
-static int
-np_byte(char *p, PyObject *v, const formatdef *f)
-{
-    long x;
-    if (get_long(v, &x) < 0)
-        return -1;
-    if (x < -128 || x > 127){
-        PyErr_SetString(StructError,
-                        "byte format requires -128 <= number <= 127");
-        return -1;
-    }
-    *p = (char)x;
-    return 0;
-}
-
-static int
-np_ubyte(char *p, PyObject *v, const formatdef *f)
-{
-    long x;
-    if (get_long(v, &x) < 0)
-        return -1;
-    if (x < 0 || x > 255){
-        PyErr_SetString(StructError,
-                        "ubyte format requires 0 <= number <= 255");
-        return -1;
-    }
-    *p = (char)x;
-    return 0;
-}
-
-static int
-np_char(char *p, PyObject *v, const formatdef *f)
-{
-    if (!PyString_Check(v) || PyString_Size(v) != 1) {
-        PyErr_SetString(StructError,
-                        "char format require string of length 1");
-        return -1;
-    }
-    *p = *PyString_AsString(v);
-    return 0;
-}
-
-static int
-np_short(char *p, PyObject *v, const formatdef *f)
-{
-    long x;
-    short y;
-    if (get_long(v, &x) < 0)
-        return -1;
-    if (x < SHRT_MIN || x > SHRT_MAX){
-        PyErr_SetString(StructError,
-                        "short format requires " STRINGIFY(SHRT_MIN)
-                        " <= number <= " STRINGIFY(SHRT_MAX));
-        return -1;
-    }
-    y = (short)x;
-    memcpy(p, (char *)&y, sizeof y);
-    return 0;
-}
-
-static int
-np_ushort(char *p, PyObject *v, const formatdef *f)
-{
-    long x;
-    unsigned short y;
-    if (get_long(v, &x) < 0)
-        return -1;
-    if (x < 0 || x > USHRT_MAX){
-        PyErr_SetString(StructError,
-                        "ushort format requires 0 <= number <= " STRINGIFY(USHRT_MAX));
-        return -1;
-    }
-    y = (unsigned short)x;
-    memcpy(p, (char *)&y, sizeof y);
-    return 0;
-}
-
-static int
-np_int(char *p, PyObject *v, const formatdef *f)
-{
-    long x;
-    int y;
-    if (get_long(v, &x) < 0)
-        return -1;
-#if (SIZEOF_LONG > SIZEOF_INT)
-    if ((x < ((long)INT_MIN)) || (x > ((long)INT_MAX)))
-        return _range_error(f, 0);
-#endif
-    y = (int)x;
-    memcpy(p, (char *)&y, sizeof y);
-    return 0;
-}
-
-static int
-np_uint(char *p, PyObject *v, const formatdef *f)
-{
-    unsigned long x;
-    unsigned int y;
-    if (get_ulong(v, &x) < 0)
-        return -1;
-    y = (unsigned int)x;
-#if (SIZEOF_LONG > SIZEOF_INT)
-    if (x > ((unsigned long)UINT_MAX))
-        return _range_error(f, 1);
-#endif
-    memcpy(p, (char *)&y, sizeof y);
-    return 0;
-}
-
-static int
-np_long(char *p, PyObject *v, const formatdef *f)
-{
-    long x;
-    if (get_long(v, &x) < 0)
-        return -1;
-    memcpy(p, (char *)&x, sizeof x);
-    return 0;
-}
-
-static int
-np_ulong(char *p, PyObject *v, const formatdef *f)
-{
-    unsigned long x;
-    if (get_ulong(v, &x) < 0)
-        return -1;
-    memcpy(p, (char *)&x, sizeof x);
-    return 0;
-}
-
-#ifdef HAVE_LONG_LONG
-
-static int
-np_longlong(char *p, PyObject *v, const formatdef *f)
-{
-    PY_LONG_LONG x;
-    if (get_longlong(v, &x) < 0)
-        return -1;
-    memcpy(p, (char *)&x, sizeof x);
-    return 0;
-}
-
-static int
-np_ulonglong(char *p, PyObject *v, const formatdef *f)
-{
-    unsigned PY_LONG_LONG x;
-    if (get_ulonglong(v, &x) < 0)
-        return -1;
-    memcpy(p, (char *)&x, sizeof x);
-    return 0;
-}
-#endif
-
-
-static int
-np_bool(char *p, PyObject *v, const formatdef *f)
-{
-    int y;
-    BOOL_TYPE x;
-    y = PyObject_IsTrue(v);
-    if (y < 0)
-        return -1;
-    x = y;
-    memcpy(p, (char *)&x, sizeof x);
-    return 0;
-}
-
-static int
-np_float(char *p, PyObject *v, const formatdef *f)
-{
-    float x = (float)PyFloat_AsDouble(v);
-    if (x == -1 && PyErr_Occurred()) {
-        PyErr_SetString(StructError,
-                        "required argument is not a float");
-        return -1;
-    }
-    memcpy(p, (char *)&x, sizeof x);
-    return 0;
-}
-
-static int
-np_double(char *p, PyObject *v, const formatdef *f)
-{
-    double x = PyFloat_AsDouble(v);
-    if (x == -1 && PyErr_Occurred()) {
-        PyErr_SetString(StructError,
-                        "required argument is not a float");
-        return -1;
-    }
-    memcpy(p, (char *)&x, sizeof(double));
-    return 0;
-}
-
-static int
-np_void_p(char *p, PyObject *v, const formatdef *f)
-{
-    void *x;
-
-    v = get_pylong(v);
-    if (v == NULL)
-        return -1;
-    assert(PyLong_Check(v));
-    x = PyLong_AsVoidPtr(v);
-    Py_DECREF(v);
-    if (x == NULL && PyErr_Occurred())
-        return -1;
-    memcpy(p, (char *)&x, sizeof x);
-    return 0;
-}
-
-static formatdef native_table[] = {
-    {'x',       sizeof(char),   0,              NULL},
-    {'b',       sizeof(char),   0,              nu_byte,        np_byte},
-    {'B',       sizeof(char),   0,              nu_ubyte,       np_ubyte},
-    {'c',       sizeof(char),   0,              nu_char,        np_char},
-    {'s',       sizeof(char),   0,              NULL},
-    {'p',       sizeof(char),   0,              NULL},
-    {'h',       sizeof(short),  SHORT_ALIGN,    nu_short,       np_short},
-    {'H',       sizeof(short),  SHORT_ALIGN,    nu_ushort,      np_ushort},
-    {'i',       sizeof(int),    INT_ALIGN,      nu_int,         np_int},
-    {'I',       sizeof(int),    INT_ALIGN,      nu_uint,        np_uint},
-    {'l',       sizeof(long),   LONG_ALIGN,     nu_long,        np_long},
-    {'L',       sizeof(long),   LONG_ALIGN,     nu_ulong,       np_ulong},
-#ifdef HAVE_LONG_LONG
-    {'q',       sizeof(PY_LONG_LONG), LONG_LONG_ALIGN, nu_longlong, np_longlong},
-    {'Q',       sizeof(PY_LONG_LONG), LONG_LONG_ALIGN, nu_ulonglong,np_ulonglong},
-#endif
-    {'?',       sizeof(BOOL_TYPE),      BOOL_ALIGN,     nu_bool,        np_bool},
-    {'f',       sizeof(float),  FLOAT_ALIGN,    nu_float,       np_float},
-    {'d',       sizeof(double), DOUBLE_ALIGN,   nu_double,      np_double},
-    {'P',       sizeof(void *), VOID_P_ALIGN,   nu_void_p,      np_void_p},
-    {0}
-};
-
-/* Big-endian routines. *****************************************************/
-
-static PyObject *
-bu_int(const char *p, const formatdef *f)
-{
-    long x = 0;
-    Py_ssize_t i = f->size;
-    const unsigned char *bytes = (const unsigned char *)p;
-    do {
-        x = (x<<8) | *bytes++;
-    } while (--i > 0);
-    /* Extend the sign bit. */
-    if (SIZEOF_LONG > f->size)
-        x |= -(x & (1L << ((8 * f->size) - 1)));
-    return PyInt_FromLong(x);
-}
-
-static PyObject *
-bu_uint(const char *p, const formatdef *f)
-{
-    unsigned long x = 0;
-    Py_ssize_t i = f->size;
-    const unsigned char *bytes = (const unsigned char *)p;
-    do {
-        x = (x<<8) | *bytes++;
-    } while (--i > 0);
-    if (x <= LONG_MAX)
-        return PyInt_FromLong((long)x);
-    return PyLong_FromUnsignedLong(x);
-}
-
-static PyObject *
-bu_longlong(const char *p, const formatdef *f)
-{
-#ifdef HAVE_LONG_LONG
-    PY_LONG_LONG x = 0;
-    Py_ssize_t i = f->size;
-    const unsigned char *bytes = (const unsigned char *)p;
-    do {
-        x = (x<<8) | *bytes++;
-    } while (--i > 0);
-    /* Extend the sign bit. */
-    if (SIZEOF_LONG_LONG > f->size)
-        x |= -(x & ((PY_LONG_LONG)1 << ((8 * f->size) - 1)));
-    if (x >= LONG_MIN && x <= LONG_MAX)
-        return PyInt_FromLong(Py_SAFE_DOWNCAST(x, PY_LONG_LONG, long));
-    return PyLong_FromLongLong(x);
-#else
-    return _PyLong_FromByteArray((const unsigned char *)p,
-                                  8,
-                                  0, /* little-endian */
-                      1  /* signed */);
-#endif
-}
-
-static PyObject *
-bu_ulonglong(const char *p, const formatdef *f)
-{
-#ifdef HAVE_LONG_LONG
-    unsigned PY_LONG_LONG x = 0;
-    Py_ssize_t i = f->size;
-    const unsigned char *bytes = (const unsigned char *)p;
-    do {
-        x = (x<<8) | *bytes++;
-    } while (--i > 0);
-    if (x <= LONG_MAX)
-        return PyInt_FromLong(Py_SAFE_DOWNCAST(x, unsigned PY_LONG_LONG, long));
-    return PyLong_FromUnsignedLongLong(x);
-#else
-    return _PyLong_FromByteArray((const unsigned char *)p,
-                                  8,
-                                  0, /* little-endian */
-                      0  /* signed */);
-#endif
-}
-
-static PyObject *
-bu_float(const char *p, const formatdef *f)
-{
-    return unpack_float(p, 0);
-}
-
-static PyObject *
-bu_double(const char *p, const formatdef *f)
-{
-    return unpack_double(p, 0);
-}
-
-static PyObject *
-bu_bool(const char *p, const formatdef *f)
-{
-    char x;
-    memcpy((char *)&x, p, sizeof x);
-    return PyBool_FromLong(x != 0);
-}
-
-static int
-bp_int(char *p, PyObject *v, const formatdef *f)
-{
-    long x;
-    Py_ssize_t i;
-    if (get_long(v, &x) < 0)
-        return -1;
-    i = f->size;
-    if (i != SIZEOF_LONG) {
-        if ((i == 2) && (x < -32768 || x > 32767))
-            return _range_error(f, 0);
-#if (SIZEOF_LONG != 4)
-        else if ((i == 4) && (x < -2147483648L || x > 2147483647L))
-            return _range_error(f, 0);
-#endif
-    }
-    do {
-        p[--i] = (char)x;
-        x >>= 8;
-    } while (i > 0);
-    return 0;
-}
-
-static int
-bp_uint(char *p, PyObject *v, const formatdef *f)
-{
-    unsigned long x;
-    Py_ssize_t i;
-    if (get_ulong(v, &x) < 0)
-        return -1;
-    i = f->size;
-    if (i != SIZEOF_LONG) {
-        unsigned long maxint = 1;
-        maxint <<= (unsigned long)(i * 8);
-        if (x >= maxint)
-            return _range_error(f, 1);
-    }
-    do {
-        p[--i] = (char)x;
-        x >>= 8;
-    } while (i > 0);
-    return 0;
-}
-
-static int
-bp_longlong(char *p, PyObject *v, const formatdef *f)
-{
-    int res;
-    v = get_pylong(v);
-    if (v == NULL)
-        return -1;
-    res = _PyLong_AsByteArray((PyLongObject *)v,
-                              (unsigned char *)p,
-                              8,
-                              0, /* little_endian */
-                  1  /* signed */);
-    Py_DECREF(v);
-    return res;
-}
-
-static int
-bp_ulonglong(char *p, PyObject *v, const formatdef *f)
-{
-    int res;
-    v = get_pylong(v);
-    if (v == NULL)
-        return -1;
-    res = _PyLong_AsByteArray((PyLongObject *)v,
-                              (unsigned char *)p,
-                              8,
-                              0, /* little_endian */
-                  0  /* signed */);
-    Py_DECREF(v);
-    return res;
-}
-
-static int
-bp_float(char *p, PyObject *v, const formatdef *f)
-{
-    double x = PyFloat_AsDouble(v);
-    if (x == -1 && PyErr_Occurred()) {
-        PyErr_SetString(StructError,
-                        "required argument is not a float");
-        return -1;
-    }
-    return _PyFloat_Pack4(x, (unsigned char *)p, 0);
-}
-
-static int
-bp_double(char *p, PyObject *v, const formatdef *f)
-{
-    double x = PyFloat_AsDouble(v);
-    if (x == -1 && PyErr_Occurred()) {
-        PyErr_SetString(StructError,
-                        "required argument is not a float");
-        return -1;
-    }
-    return _PyFloat_Pack8(x, (unsigned char *)p, 0);
-}
-
-static int
-bp_bool(char *p, PyObject *v, const formatdef *f)
-{
-    int y;
-    y = PyObject_IsTrue(v);
-    if (y < 0)
-        return -1;
-    *p = (char)y;
-    return 0;
-}
-
-static formatdef bigendian_table[] = {
-    {'x',       1,              0,              NULL},
-    {'b',       1,              0,              nu_byte,        np_byte},
-    {'B',       1,              0,              nu_ubyte,       np_ubyte},
-    {'c',       1,              0,              nu_char,        np_char},
-    {'s',       1,              0,              NULL},
-    {'p',       1,              0,              NULL},
-    {'h',       2,              0,              bu_int,         bp_int},
-    {'H',       2,              0,              bu_uint,        bp_uint},
-    {'i',       4,              0,              bu_int,         bp_int},
-    {'I',       4,              0,              bu_uint,        bp_uint},
-    {'l',       4,              0,              bu_int,         bp_int},
-    {'L',       4,              0,              bu_uint,        bp_uint},
-    {'q',       8,              0,              bu_longlong,    bp_longlong},
-    {'Q',       8,              0,              bu_ulonglong,   bp_ulonglong},
-    {'?',       1,              0,              bu_bool,        bp_bool},
-    {'f',       4,              0,              bu_float,       bp_float},
-    {'d',       8,              0,              bu_double,      bp_double},
-    {0}
-};
-
-/* Little-endian routines. *****************************************************/
-
-static PyObject *
-lu_int(const char *p, const formatdef *f)
-{
-    long x = 0;
-    Py_ssize_t i = f->size;
-    const unsigned char *bytes = (const unsigned char *)p;
-    do {
-        x = (x<<8) | bytes[--i];
-    } while (i > 0);
-    /* Extend the sign bit. */
-    if (SIZEOF_LONG > f->size)
-        x |= -(x & (1L << ((8 * f->size) - 1)));
-    return PyInt_FromLong(x);
-}
-
-static PyObject *
-lu_uint(const char *p, const formatdef *f)
-{
-    unsigned long x = 0;
-    Py_ssize_t i = f->size;
-    const unsigned char *bytes = (const unsigned char *)p;
-    do {
-        x = (x<<8) | bytes[--i];
-    } while (i > 0);
-    if (x <= LONG_MAX)
-        return PyInt_FromLong((long)x);
-    return PyLong_FromUnsignedLong((long)x);
-}
-
-static PyObject *
-lu_longlong(const char *p, const formatdef *f)
-{
-#ifdef HAVE_LONG_LONG
-    PY_LONG_LONG x = 0;
-    Py_ssize_t i = f->size;
-    const unsigned char *bytes = (const unsigned char *)p;
-    do {
-        x = (x<<8) | bytes[--i];
-    } while (i > 0);
-    /* Extend the sign bit. */
-    if (SIZEOF_LONG_LONG > f->size)
-        x |= -(x & ((PY_LONG_LONG)1 << ((8 * f->size) - 1)));
-    if (x >= LONG_MIN && x <= LONG_MAX)
-        return PyInt_FromLong(Py_SAFE_DOWNCAST(x, PY_LONG_LONG, long));
-    return PyLong_FromLongLong(x);
-#else
-    return _PyLong_FromByteArray((const unsigned char *)p,
-                                  8,
-                                  1, /* little-endian */
-                      1  /* signed */);
-#endif
-}
-
-static PyObject *
-lu_ulonglong(const char *p, const formatdef *f)
-{
-#ifdef HAVE_LONG_LONG
-    unsigned PY_LONG_LONG x = 0;
-    Py_ssize_t i = f->size;
-    const unsigned char *bytes = (const unsigned char *)p;
-    do {
-        x = (x<<8) | bytes[--i];
-    } while (i > 0);
-    if (x <= LONG_MAX)
-        return PyInt_FromLong(Py_SAFE_DOWNCAST(x, unsigned PY_LONG_LONG, long));
-    return PyLong_FromUnsignedLongLong(x);
-#else
-    return _PyLong_FromByteArray((const unsigned char *)p,
-                                  8,
-                                  1, /* little-endian */
-                      0  /* signed */);
-#endif
-}
-
-static PyObject *
-lu_float(const char *p, const formatdef *f)
-{
-    return unpack_float(p, 1);
-}
-
-static PyObject *
-lu_double(const char *p, const formatdef *f)
-{
-    return unpack_double(p, 1);
-}
-
-static int
-lp_int(char *p, PyObject *v, const formatdef *f)
-{
-    long x;
-    Py_ssize_t i;
-    if (get_long(v, &x) < 0)
-        return -1;
-    i = f->size;
-    if (i != SIZEOF_LONG) {
-        if ((i == 2) && (x < -32768 || x > 32767))
-            return _range_error(f, 0);
-#if (SIZEOF_LONG != 4)
-        else if ((i == 4) && (x < -2147483648L || x > 2147483647L))
-            return _range_error(f, 0);
-#endif
-    }
-    do {
-        *p++ = (char)x;
-        x >>= 8;
-    } while (--i > 0);
-    return 0;
-}
-
-static int
-lp_uint(char *p, PyObject *v, const formatdef *f)
-{
-    unsigned long x;
-    Py_ssize_t i;
-    if (get_ulong(v, &x) < 0)
-        return -1;
-    i = f->size;
-    if (i != SIZEOF_LONG) {
-        unsigned long maxint = 1;
-        maxint <<= (unsigned long)(i * 8);
-        if (x >= maxint)
-            return _range_error(f, 1);
-    }
-    do {
-        *p++ = (char)x;
-        x >>= 8;
-    } while (--i > 0);
-    return 0;
-}
-
-static int
-lp_longlong(char *p, PyObject *v, const formatdef *f)
-{
-    int res;
-    v = get_pylong(v);
-    if (v == NULL)
-        return -1;
-    res = _PyLong_AsByteArray((PyLongObject*)v,
-                              (unsigned char *)p,
-                              8,
-                              1, /* little_endian */
-                  1  /* signed */);
-    Py_DECREF(v);
-    return res;
-}
-
-static int
-lp_ulonglong(char *p, PyObject *v, const formatdef *f)
-{
-    int res;
-    v = get_pylong(v);
-    if (v == NULL)
-        return -1;
-    res = _PyLong_AsByteArray((PyLongObject*)v,
-                              (unsigned char *)p,
-                              8,
-                              1, /* little_endian */
-                  0  /* signed */);
-    Py_DECREF(v);
-    return res;
-}
-
-static int
-lp_float(char *p, PyObject *v, const formatdef *f)
-{
-    double x = PyFloat_AsDouble(v);
-    if (x == -1 && PyErr_Occurred()) {
-        PyErr_SetString(StructError,
-                        "required argument is not a float");
-        return -1;
-    }
-    return _PyFloat_Pack4(x, (unsigned char *)p, 1);
-}
-
-static int
-lp_double(char *p, PyObject *v, const formatdef *f)
-{
-    double x = PyFloat_AsDouble(v);
-    if (x == -1 && PyErr_Occurred()) {
-        PyErr_SetString(StructError,
-                        "required argument is not a float");
-        return -1;
-    }
-    return _PyFloat_Pack8(x, (unsigned char *)p, 1);
-}
-
-static formatdef lilendian_table[] = {
-    {'x',       1,              0,              NULL},
-    {'b',       1,              0,              nu_byte,        np_byte},
-    {'B',       1,              0,              nu_ubyte,       np_ubyte},
-    {'c',       1,              0,              nu_char,        np_char},
-    {'s',       1,              0,              NULL},
-    {'p',       1,              0,              NULL},
-    {'h',       2,              0,              lu_int,         lp_int},
-    {'H',       2,              0,              lu_uint,        lp_uint},
-    {'i',       4,              0,              lu_int,         lp_int},
-    {'I',       4,              0,              lu_uint,        lp_uint},
-    {'l',       4,              0,              lu_int,         lp_int},
-    {'L',       4,              0,              lu_uint,        lp_uint},
-    {'q',       8,              0,              lu_longlong,    lp_longlong},
-    {'Q',       8,              0,              lu_ulonglong,   lp_ulonglong},
-    {'?',       1,              0,              bu_bool,        bp_bool}, /* Std rep not endian dep,
-        but potentially different from native rep -- reuse bx_bool funcs. */
-    {'f',       4,              0,              lu_float,       lp_float},
-    {'d',       8,              0,              lu_double,      lp_double},
-    {0}
-};
-
-
-static const formatdef *
-whichtable(char **pfmt)
-{
-    const char *fmt = (*pfmt)++; /* May be backed out of later */
-    switch (*fmt) {
-    case '<':
-        return lilendian_table;
-    case '>':
-    case '!': /* Network byte order is big-endian */
-        return bigendian_table;
-    case '=': { /* Host byte order -- different from native in alignment! */
-        int n = 1;
-        char *p = (char *) &n;
-        if (*p == 1)
-            return lilendian_table;
-        else
-            return bigendian_table;
-    }
-    default:
-        --*pfmt; /* Back out of pointer increment */
-        /* Fall through */
-    case '@':
-        return native_table;
-    }
-}
-
-
-/* Get the table entry for a format code */
-
-static const formatdef *
-getentry(int c, const formatdef *f)
-{
-    for (; f->format != '\0'; f++) {
-        if (f->format == c) {
-            return f;
-        }
-    }
-    PyErr_SetString(StructError, "bad char in struct format");
-    return NULL;
-}
-
-
-/* Align a size according to a format code.  Return -1 on overflow. */
-
-static Py_ssize_t
-align(Py_ssize_t size, char c, const formatdef *e)
-{
-    Py_ssize_t extra;
-
-    if (e->format == c) {
-        if (e->alignment && size > 0) {
-            extra = (e->alignment - 1) - (size - 1) % (e->alignment);
-            if (extra > PY_SSIZE_T_MAX - size)
-                return -1;
-            size += extra;
-        }
-    }
-    return size;
-}
-
-
-/* calculate the size of a format string */
-
-static int
-prepare_s(PyStructObject *self)
-{
-    const formatdef *f;
-    const formatdef *e;
-    formatcode *codes;
-
-    const char *s;
-    const char *fmt;
-    char c;
-    Py_ssize_t size, len, num, itemsize;
-
-    fmt = PyString_AS_STRING(self->s_format);
-
-    f = whichtable((char **)&fmt);
-
-    s = fmt;
-    size = 0;
-    len = 0;
-    while ((c = *s++) != '\0') {
-        if (isspace(Py_CHARMASK(c)))
-            continue;
-        if ('0' <= c && c <= '9') {
-            num = c - '0';
-            while ('0' <= (c = *s++) && c <= '9') {
-                /* overflow-safe version of
-                   if (num*10 + (c - '0') > PY_SSIZE_T_MAX) { ... } */
-                if (num >= PY_SSIZE_T_MAX / 10 && (
-                        num > PY_SSIZE_T_MAX / 10 ||
-                        (c - '0') > PY_SSIZE_T_MAX % 10))
-                    goto overflow;
-                num = num*10 + (c - '0');
-            }
-            if (c == '\0')
-                break;
-        }
-        else
-            num = 1;
-
-        e = getentry(c, f);
-        if (e == NULL)
-            return -1;
-
-        switch (c) {
-            case 's': /* fall through */
-            case 'p': len++; break;
-            case 'x': break;
-            default: len += num; break;
-        }
-
-        itemsize = e->size;
-        size = align(size, c, e);
-        if (size == -1)
-            goto overflow;
-
-        /* if (size + num * itemsize > PY_SSIZE_T_MAX) { ... } */
-        if (num > (PY_SSIZE_T_MAX - size) / itemsize)
-            goto overflow;
-        size += num * itemsize;
-    }
-
-    /* check for overflow */
-    if ((len + 1) > (PY_SSIZE_T_MAX / sizeof(formatcode))) {
-        PyErr_NoMemory();
-        return -1;
-    }
-
-    self->s_size = size;
-    self->s_len = len;
-    codes = PyMem_MALLOC((len + 1) * sizeof(formatcode));
-    if (codes == NULL) {
-        PyErr_NoMemory();
-        return -1;
-    }
-    /* Free any s_codes value left over from a previous initialization. */
-    if (self->s_codes != NULL)
-        PyMem_FREE(self->s_codes);
-    self->s_codes = codes;
-
-    s = fmt;
-    size = 0;
-    while ((c = *s++) != '\0') {
-        if (isspace(Py_CHARMASK(c)))
-            continue;
-        if ('0' <= c && c <= '9') {
-            num = c - '0';
-            while ('0' <= (c = *s++) && c <= '9')
-                num = num*10 + (c - '0');
-            if (c == '\0')
-                break;
-        }
-        else
-            num = 1;
-
-        e = getentry(c, f);
-
-        size = align(size, c, e);
-        if (c == 's' || c == 'p') {
-            codes->offset = size;
-            codes->size = num;
-            codes->fmtdef = e;
-            codes++;
-            size += num;
-        } else if (c == 'x') {
-            size += num;
-        } else {
-            while (--num >= 0) {
-                codes->offset = size;
-                codes->size = e->size;
-                codes->fmtdef = e;
-                codes++;
-                size += e->size;
-            }
-        }
-    }
-    codes->fmtdef = NULL;
-    codes->offset = size;
-    codes->size = 0;
-
-    return 0;
-
-  overflow:
-    PyErr_SetString(StructError,
-                    "total struct size too long");
-    return -1;
-}
-
-static PyObject *
-s_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *self;
-
-    assert(type != NULL && type->tp_alloc != NULL);
-
-    self = type->tp_alloc(type, 0);
-    if (self != NULL) {
-        PyStructObject *s = (PyStructObject*)self;
-        Py_INCREF(Py_None);
-        s->s_format = Py_None;
-        s->s_codes = NULL;
-        s->s_size = -1;
-        s->s_len = -1;
-    }
-    return self;
-}
-
-static int
-s_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    PyStructObject *soself = (PyStructObject *)self;
-    PyObject *o_format = NULL;
-    int ret = 0;
-    static char *kwlist[] = {"format", 0};
-
-    assert(PyStruct_Check(self));
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "S:Struct", kwlist,
-                                     &o_format))
-        return -1;
-
-    Py_INCREF(o_format);
-    Py_CLEAR(soself->s_format);
-    soself->s_format = o_format;
-
-    ret = prepare_s(soself);
-    return ret;
-}
-
-static void
-s_dealloc(PyStructObject *s)
-{
-    if (s->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *)s);
-    if (s->s_codes != NULL) {
-        PyMem_FREE(s->s_codes);
-    }
-    Py_XDECREF(s->s_format);
-    Py_TYPE(s)->tp_free((PyObject *)s);
-}
-
-static PyObject *
-s_unpack_internal(PyStructObject *soself, char *startfrom) {
-    formatcode *code;
-    Py_ssize_t i = 0;
-    PyObject *result = PyTuple_New(soself->s_len);
-    if (result == NULL)
-        return NULL;
-
-    for (code = soself->s_codes; code->fmtdef != NULL; code++) {
-        PyObject *v;
-        const formatdef *e = code->fmtdef;
-        const char *res = startfrom + code->offset;
-        if (e->format == 's') {
-            v = PyString_FromStringAndSize(res, code->size);
-        } else if (e->format == 'p') {
-            Py_ssize_t n = *(unsigned char*)res;
-            if (n >= code->size)
-                n = code->size - 1;
-            v = PyString_FromStringAndSize(res + 1, n);
-        } else {
-            v = e->unpack(res, e);
-        }
-        if (v == NULL)
-            goto fail;
-        PyTuple_SET_ITEM(result, i++, v);
-    }
-
-    return result;
-fail:
-    Py_DECREF(result);
-    return NULL;
-}
-
-
-PyDoc_STRVAR(s_unpack__doc__,
-"S.unpack(str) -> (v1, v2, ...)\n\
-\n\
-Return tuple containing values unpacked according to this Struct's format.\n\
-Requires len(str) == self.size. See struct.__doc__ for more on format\n\
-strings.");
-
-static PyObject *
-s_unpack(PyObject *self, PyObject *inputstr)
-{
-    char *start;
-    Py_ssize_t len;
-    PyObject *args=NULL, *result;
-    PyStructObject *soself = (PyStructObject *)self;
-    assert(PyStruct_Check(self));
-    assert(soself->s_codes != NULL);
-    if (inputstr == NULL)
-        goto fail;
-    if (PyString_Check(inputstr) &&
-        PyString_GET_SIZE(inputstr) == soself->s_size) {
-            return s_unpack_internal(soself, PyString_AS_STRING(inputstr));
-    }
-    args = PyTuple_Pack(1, inputstr);
-    if (args == NULL)
-        return NULL;
-    if (!PyArg_ParseTuple(args, "s#:unpack", &start, &len))
-        goto fail;
-    if (soself->s_size != len)
-        goto fail;
-    result = s_unpack_internal(soself, start);
-    Py_DECREF(args);
-    return result;
-
-fail:
-    Py_XDECREF(args);
-    PyErr_Format(StructError,
-        "unpack requires a string argument of length %zd",
-        soself->s_size);
-    return NULL;
-}
-
-PyDoc_STRVAR(s_unpack_from__doc__,
-"S.unpack_from(buffer[, offset]) -> (v1, v2, ...)\n\
-\n\
-Return tuple containing values unpacked according to this Struct's format.\n\
-Unlike unpack, unpack_from can unpack values from any object supporting\n\
-the buffer API, not just str. Requires len(buffer[offset:]) >= self.size.\n\
-See struct.__doc__ for more on format strings.");
-
-static PyObject *
-s_unpack_from(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    static char *kwlist[] = {"buffer", "offset", 0};
-#if (PY_VERSION_HEX < 0x02050000)
-    static char *fmt = "z#|i:unpack_from";
-#else
-    static char *fmt = "z#|n:unpack_from";
-#endif
-    Py_ssize_t buffer_len = 0, offset = 0;
-    char *buffer = NULL;
-    PyStructObject *soself = (PyStructObject *)self;
-    assert(PyStruct_Check(self));
-    assert(soself->s_codes != NULL);
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, fmt, kwlist,
-                                     &buffer, &buffer_len, &offset))
-        return NULL;
-
-    if (buffer == NULL) {
-        PyErr_Format(StructError,
-            "unpack_from requires a buffer argument");
-        return NULL;
-    }
-
-    if (offset < 0)
-        offset += buffer_len;
-
-    if (offset < 0 || (buffer_len - offset) < soself->s_size) {
-        PyErr_Format(StructError,
-            "unpack_from requires a buffer of at least %zd bytes",
-            soself->s_size);
-        return NULL;
-    }
-    return s_unpack_internal(soself, buffer + offset);
-}
-
-
-/*
- * Guts of the pack function.
- *
- * Takes a struct object, a tuple of arguments, and offset in that tuple of
- * argument for where to start processing the arguments for packing, and a
- * character buffer for writing the packed string.  The caller must insure
- * that the buffer may contain the required length for packing the arguments.
- * 0 is returned on success, 1 is returned if there is an error.
- *
- */
-static int
-s_pack_internal(PyStructObject *soself, PyObject *args, int offset, char* buf)
-{
-    formatcode *code;
-    /* XXX(nnorwitz): why does i need to be a local?  can we use
-       the offset parameter or do we need the wider width? */
-    Py_ssize_t i;
-
-    memset(buf, '\0', soself->s_size);
-    i = offset;
-    for (code = soself->s_codes; code->fmtdef != NULL; code++) {
-        Py_ssize_t n;
-        PyObject *v = PyTuple_GET_ITEM(args, i++);
-        const formatdef *e = code->fmtdef;
-        char *res = buf + code->offset;
-        if (e->format == 's') {
-            if (!PyString_Check(v)) {
-                PyErr_SetString(StructError,
-                                "argument for 's' must "
-                                "be a string");
-                return -1;
-            }
-            n = PyString_GET_SIZE(v);
-            if (n > code->size)
-                n = code->size;
-            if (n > 0)
-                memcpy(res, PyString_AS_STRING(v), n);
-        } else if (e->format == 'p') {
-            if (!PyString_Check(v)) {
-                PyErr_SetString(StructError,
-                                "argument for 'p' must "
-                                "be a string");
-                return -1;
-            }
-            n = PyString_GET_SIZE(v);
-            if (n > (code->size - 1))
-                n = code->size - 1;
-            if (n > 0)
-                memcpy(res + 1, PyString_AS_STRING(v), n);
-            if (n > 255)
-                n = 255;
-            *res = Py_SAFE_DOWNCAST(n, Py_ssize_t, unsigned char);
-        } else if (e->pack(res, v, e) < 0) {
-            if (strchr(integer_codes, e->format) != NULL &&
-                PyErr_ExceptionMatches(PyExc_OverflowError))
-                PyErr_Format(StructError,
-                             "integer out of range for "
-                             "'%c' format code",
-                             e->format);
-            return -1;
-        }
-    }
-
-    /* Success */
-    return 0;
-}
-
-
-PyDoc_STRVAR(s_pack__doc__,
-"S.pack(v1, v2, ...) -> string\n\
-\n\
-Return a string containing values v1, v2, ... packed according to this\n\
-Struct's format. See struct.__doc__ for more on format strings.");
-
-static PyObject *
-s_pack(PyObject *self, PyObject *args)
-{
-    PyStructObject *soself;
-    PyObject *result;
-
-    /* Validate arguments. */
-    soself = (PyStructObject *)self;
-    assert(PyStruct_Check(self));
-    assert(soself->s_codes != NULL);
-    if (PyTuple_GET_SIZE(args) != soself->s_len)
-    {
-        PyErr_Format(StructError,
-            "pack requires exactly %zd arguments", soself->s_len);
-        return NULL;
-    }
-
-    /* Allocate a new string */
-    result = PyString_FromStringAndSize((char *)NULL, soself->s_size);
-    if (result == NULL)
-        return NULL;
-
-    /* Call the guts */
-    if ( s_pack_internal(soself, args, 0, PyString_AS_STRING(result)) != 0 ) {
-        Py_DECREF(result);
-        return NULL;
-    }
-
-    return result;
-}
-
-PyDoc_STRVAR(s_pack_into__doc__,
-"S.pack_into(buffer, offset, v1, v2, ...)\n\
-\n\
-Pack the values v1, v2, ... according to this Struct's format, write \n\
-the packed bytes into the writable buffer buf starting at offset.  Note\n\
-that the offset is not an optional argument.  See struct.__doc__ for \n\
-more on format strings.");
-
-static PyObject *
-s_pack_into(PyObject *self, PyObject *args)
-{
-    PyStructObject *soself;
-    char *buffer;
-    Py_ssize_t buffer_len, offset;
-
-    /* Validate arguments.  +1 is for the first arg as buffer. */
-    soself = (PyStructObject *)self;
-    assert(PyStruct_Check(self));
-    assert(soself->s_codes != NULL);
-    if (PyTuple_GET_SIZE(args) != (soself->s_len + 2))
-    {
-        PyErr_Format(StructError,
-                     "pack_into requires exactly %zd arguments",
-                     (soself->s_len + 2));
-        return NULL;
-    }
-
-    /* Extract a writable memory buffer from the first argument */
-    if ( PyObject_AsWriteBuffer(PyTuple_GET_ITEM(args, 0),
-                                                            (void**)&buffer, &buffer_len) == -1 ) {
-        return NULL;
-    }
-    assert( buffer_len >= 0 );
-
-    /* Extract the offset from the first argument */
-    offset = PyInt_AsSsize_t(PyTuple_GET_ITEM(args, 1));
-    if (offset == -1 && PyErr_Occurred())
-        return NULL;
-
-    /* Support negative offsets. */
-    if (offset < 0)
-        offset += buffer_len;
-
-    /* Check boundaries */
-    if (offset < 0 || (buffer_len - offset) < soself->s_size) {
-        PyErr_Format(StructError,
-                     "pack_into requires a buffer of at least %zd bytes",
-                     soself->s_size);
-        return NULL;
-    }
-
-    /* Call the guts */
-    if ( s_pack_internal(soself, args, 2, buffer + offset) != 0 ) {
-        return NULL;
-    }
-
-    Py_RETURN_NONE;
-}
-
-static PyObject *
-s_get_format(PyStructObject *self, void *unused)
-{
-    Py_INCREF(self->s_format);
-    return self->s_format;
-}
-
-static PyObject *
-s_get_size(PyStructObject *self, void *unused)
-{
-    return PyInt_FromSsize_t(self->s_size);
-}
-
-/* List of functions */
-
-static struct PyMethodDef s_methods[] = {
-    {"pack",            s_pack,         METH_VARARGS, s_pack__doc__},
-    {"pack_into",       s_pack_into,    METH_VARARGS, s_pack_into__doc__},
-    {"unpack",          s_unpack,       METH_O, s_unpack__doc__},
-    {"unpack_from",     (PyCFunction)s_unpack_from, METH_VARARGS|METH_KEYWORDS,
-                    s_unpack_from__doc__},
-    {NULL,       NULL}          /* sentinel */
-};
-
-PyDoc_STRVAR(s__doc__, "Compiled struct object");
-
-#define OFF(x) offsetof(PyStructObject, x)
-
-static PyGetSetDef s_getsetlist[] = {
-    {"format", (getter)s_get_format, (setter)NULL, "struct format string", NULL},
-    {"size", (getter)s_get_size, (setter)NULL, "struct size in bytes", NULL},
-    {NULL} /* sentinel */
-};
-
-static
-PyTypeObject PyStructType = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "Struct",
-    sizeof(PyStructObject),
-    0,
-    (destructor)s_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    PyObject_GenericSetAttr,            /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_WEAKREFS,/* tp_flags */
-    s__doc__,                           /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    offsetof(PyStructObject, weakreflist),      /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    s_methods,                          /* tp_methods */
-    NULL,                               /* tp_members */
-    s_getsetlist,               /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    s_init,                             /* tp_init */
-    PyType_GenericAlloc,/* tp_alloc */
-    s_new,                              /* tp_new */
-    PyObject_Del,               /* tp_free */
-};
-
-
-/* ---- Standalone functions  ---- */
-
-#define MAXCACHE 100
-static PyObject *cache = NULL;
-
-static PyObject *
-cache_struct(PyObject *fmt)
-{
-    PyObject * s_object;
-
-    if (cache == NULL) {
-        cache = PyDict_New();
-        if (cache == NULL)
-            return NULL;
-    }
-
-    s_object = PyDict_GetItem(cache, fmt);
-    if (s_object != NULL) {
-        Py_INCREF(s_object);
-        return s_object;
-    }
-
-    s_object = PyObject_CallFunctionObjArgs((PyObject *)(&PyStructType), fmt, NULL);
-    if (s_object != NULL) {
-        if (PyDict_Size(cache) >= MAXCACHE)
-            PyDict_Clear(cache);
-        /* Attempt to cache the result */
-        if (PyDict_SetItem(cache, fmt, s_object) == -1)
-            PyErr_Clear();
-    }
-    return s_object;
-}
-
-PyDoc_STRVAR(clearcache_doc,
-"Clear the internal cache.");
-
-static PyObject *
-clearcache(PyObject *self)
-{
-    Py_CLEAR(cache);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(calcsize_doc,
-"Return size of C struct described by format string fmt.");
-
-static PyObject *
-calcsize(PyObject *self, PyObject *fmt)
-{
-    Py_ssize_t n;
-    PyObject *s_object = cache_struct(fmt);
-    if (s_object == NULL)
-        return NULL;
-    n = ((PyStructObject *)s_object)->s_size;
-    Py_DECREF(s_object);
-    return PyInt_FromSsize_t(n);
-}
-
-PyDoc_STRVAR(pack_doc,
-"Return string containing values v1, v2, ... packed according to fmt.");
-
-static PyObject *
-pack(PyObject *self, PyObject *args)
-{
-    PyObject *s_object, *fmt, *newargs, *result;
-    Py_ssize_t n = PyTuple_GET_SIZE(args);
-
-    if (n == 0) {
-        PyErr_SetString(PyExc_TypeError, "missing format argument");
-        return NULL;
-    }
-    fmt = PyTuple_GET_ITEM(args, 0);
-    newargs = PyTuple_GetSlice(args, 1, n);
-    if (newargs == NULL)
-        return NULL;
-
-    s_object = cache_struct(fmt);
-    if (s_object == NULL) {
-        Py_DECREF(newargs);
-        return NULL;
-    }
-    result = s_pack(s_object, newargs);
-    Py_DECREF(newargs);
-    Py_DECREF(s_object);
-    return result;
-}
-
-PyDoc_STRVAR(pack_into_doc,
-"Pack the values v1, v2, ... according to fmt.\n\
-Write the packed bytes into the writable buffer buf starting at offset.");
-
-static PyObject *
-pack_into(PyObject *self, PyObject *args)
-{
-    PyObject *s_object, *fmt, *newargs, *result;
-    Py_ssize_t n = PyTuple_GET_SIZE(args);
-
-    if (n == 0) {
-        PyErr_SetString(PyExc_TypeError, "missing format argument");
-        return NULL;
-    }
-    fmt = PyTuple_GET_ITEM(args, 0);
-    newargs = PyTuple_GetSlice(args, 1, n);
-    if (newargs == NULL)
-        return NULL;
-
-    s_object = cache_struct(fmt);
-    if (s_object == NULL) {
-        Py_DECREF(newargs);
-        return NULL;
-    }
-    result = s_pack_into(s_object, newargs);
-    Py_DECREF(newargs);
-    Py_DECREF(s_object);
-    return result;
-}
-
-PyDoc_STRVAR(unpack_doc,
-"Unpack the string containing packed C structure data, according to fmt.\n\
-Requires len(string) == calcsize(fmt).");
-
-static PyObject *
-unpack(PyObject *self, PyObject *args)
-{
-    PyObject *s_object, *fmt, *inputstr, *result;
-
-    if (!PyArg_UnpackTuple(args, "unpack", 2, 2, &fmt, &inputstr))
-        return NULL;
-
-    s_object = cache_struct(fmt);
-    if (s_object == NULL)
-        return NULL;
-    result = s_unpack(s_object, inputstr);
-    Py_DECREF(s_object);
-    return result;
-}
-
-PyDoc_STRVAR(unpack_from_doc,
-"Unpack the buffer, containing packed C structure data, according to\n\
-fmt, starting at offset. Requires len(buffer[offset:]) >= calcsize(fmt).");
-
-static PyObject *
-unpack_from(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *s_object, *fmt, *newargs, *result;
-    Py_ssize_t n = PyTuple_GET_SIZE(args);
-
-    if (n == 0) {
-        PyErr_SetString(PyExc_TypeError, "missing format argument");
-        return NULL;
-    }
-    fmt = PyTuple_GET_ITEM(args, 0);
-    newargs = PyTuple_GetSlice(args, 1, n);
-    if (newargs == NULL)
-        return NULL;
-
-    s_object = cache_struct(fmt);
-    if (s_object == NULL) {
-        Py_DECREF(newargs);
-        return NULL;
-    }
-    result = s_unpack_from(s_object, newargs, kwds);
-    Py_DECREF(newargs);
-    Py_DECREF(s_object);
-    return result;
-}
-
-static struct PyMethodDef module_functions[] = {
-    {"_clearcache",     (PyCFunction)clearcache,        METH_NOARGS,    clearcache_doc},
-    {"calcsize",        calcsize,       METH_O, calcsize_doc},
-    {"pack",            pack,           METH_VARARGS,   pack_doc},
-    {"pack_into",       pack_into,      METH_VARARGS,   pack_into_doc},
-    {"unpack",          unpack, METH_VARARGS,   unpack_doc},
-    {"unpack_from",     (PyCFunction)unpack_from,
-                    METH_VARARGS|METH_KEYWORDS,         unpack_from_doc},
-    {NULL,       NULL}          /* sentinel */
-};
-
-
-/* Module initialization */
-
-PyDoc_STRVAR(module_doc,
-"Functions to convert between Python values and C structs represented\n\
-as Python strings. It uses format strings (explained below) as compact\n\
-descriptions of the lay-out of the C structs and the intended conversion\n\
-to/from Python values.\n\
-\n\
-The optional first format char indicates byte order, size and alignment:\n\
-  @: native order, size & alignment (default)\n\
-  =: native order, std. size & alignment\n\
-  <: little-endian, std. size & alignment\n\
-  >: big-endian, std. size & alignment\n\
-  !: same as >\n\
-\n\
-The remaining chars indicate types of args and must match exactly;\n\
-these can be preceded by a decimal repeat count:\n\
-  x: pad byte (no data); c:char; b:signed byte; B:unsigned byte;\n\
-  ?: _Bool (requires C99; if not available, char is used instead)\n\
-  h:short; H:unsigned short; i:int; I:unsigned int;\n\
-  l:long; L:unsigned long; f:float; d:double.\n\
-Special cases (preceding decimal count indicates length):\n\
-  s:string (array of char); p: pascal string (with count byte).\n\
-Special case (only available in native format):\n\
-  P:an integer type that is wide enough to hold a pointer.\n\
-Special case (not in native mode unless 'long long' in platform C):\n\
-  q:long long; Q:unsigned long long\n\
-Whitespace between formats is ignored.\n\
-\n\
-The variable struct.error is an exception raised on errors.\n");
-
-PyMODINIT_FUNC
-init_struct(void)
-{
-    PyObject *ver, *m;
-
-    ver = PyString_FromString("0.2");
-    if (ver == NULL)
-        return;
-
-    m = Py_InitModule3("_struct", module_functions, module_doc);
-    if (m == NULL)
-        return;
-
-    Py_TYPE(&PyStructType) = &PyType_Type;
-    if (PyType_Ready(&PyStructType) < 0)
-        return;
-
-    /* This speed trick can't be used until overflow masking goes
-       away, because native endian always raises exceptions
-       instead of overflow masking. */
-
-    /* Check endian and swap in faster functions */
-    {
-        int one = 1;
-        formatdef *native = native_table;
-        formatdef *other, *ptr;
-        if ((int)*(unsigned char*)&one)
-            other = lilendian_table;
-        else
-            other = bigendian_table;
-        /* Scan through the native table, find a matching
-           entry in the endian table and swap in the
-           native implementations whenever possible
-           (64-bit platforms may not have "standard" sizes) */
-        while (native->format != '\0' && other->format != '\0') {
-            ptr = other;
-            while (ptr->format != '\0') {
-                if (ptr->format == native->format) {
-                    /* Match faster when formats are
-                       listed in the same order */
-                    if (ptr == other)
-                        other++;
-                    /* Only use the trick if the
-                       size matches */
-                    if (ptr->size != native->size)
-                        break;
-                    /* Skip float and double, could be
-                       "unknown" float format */
-                    if (ptr->format == 'd' || ptr->format == 'f')
-                        break;
-                    ptr->pack = native->pack;
-                    ptr->unpack = native->unpack;
-                    break;
-                }
-                ptr++;
-            }
-            native++;
-        }
-    }
-
-    /* Add some symbolic constants to the module */
-    if (StructError == NULL) {
-        StructError = PyErr_NewException("struct.error", NULL, NULL);
-        if (StructError == NULL)
-            return;
-    }
-
-    Py_INCREF(StructError);
-    PyModule_AddObject(m, "error", StructError);
-
-    Py_INCREF((PyObject*)&PyStructType);
-    PyModule_AddObject(m, "Struct", (PyObject*)&PyStructType);
-
-    PyModule_AddObject(m, "__version__", ver);
-
-    PyModule_AddIntConstant(m, "_PY_STRUCT_RANGE_CHECKING", 1);
-    PyModule_AddIntConstant(m, "_PY_STRUCT_FLOAT_COERCE", 1);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_testcapimodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_testcapimodule.c
deleted file mode 100644
index 6ded926..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_testcapimodule.c
+++ /dev/null
@@ -1,1897 +0,0 @@
-/*
- * C Extension module to test Python interpreter C APIs.
- *
- * The 'test_*' functions exported by this module are run as part of the
- * standard Python regression test, via Lib/test/test_capi.py.
- */
-
-#include "Python.h"
-#include <float.h>
-#include "structmember.h"
-#include "datetime.h"
-
-#ifdef WITH_THREAD
-#include "pythread.h"
-#endif /* WITH_THREAD */
-static PyObject *TestError;     /* set to exception object in init */
-
-/* Raise TestError with test_name + ": " + msg, and return NULL. */
-
-static PyObject *
-raiseTestError(const char* test_name, const char* msg)
-{
-    char buf[2048];
-
-    if (strlen(test_name) + strlen(msg) > sizeof(buf) - 50)
-        PyErr_SetString(TestError, "internal error msg too large");
-    else {
-        PyOS_snprintf(buf, sizeof(buf), "%s: %s", test_name, msg);
-        PyErr_SetString(TestError, buf);
-    }
-    return NULL;
-}
-
-/* Test #defines from pyconfig.h (particularly the SIZEOF_* defines).
-
-   The ones derived from autoconf on the UNIX-like OSes can be relied
-   upon (in the absence of sloppy cross-compiling), but the Windows
-   platforms have these hardcoded.  Better safe than sorry.
-*/
-static PyObject*
-sizeof_error(const char* fatname, const char* typname,
-    int expected, int got)
-{
-    char buf[1024];
-    PyOS_snprintf(buf, sizeof(buf),
-        "%.200s #define == %d but sizeof(%.200s) == %d",
-        fatname, expected, typname, got);
-    PyErr_SetString(TestError, buf);
-    return (PyObject*)NULL;
-}
-
-static PyObject*
-test_config(PyObject *self)
-{
-#define CHECK_SIZEOF(FATNAME, TYPE) \
-            if (FATNAME != sizeof(TYPE)) \
-                return sizeof_error(#FATNAME, #TYPE, FATNAME, sizeof(TYPE))
-
-    CHECK_SIZEOF(SIZEOF_SHORT, short);
-    CHECK_SIZEOF(SIZEOF_INT, int);
-    CHECK_SIZEOF(SIZEOF_LONG, long);
-    CHECK_SIZEOF(SIZEOF_VOID_P, void*);
-    CHECK_SIZEOF(SIZEOF_TIME_T, time_t);
-#ifdef HAVE_LONG_LONG
-    CHECK_SIZEOF(SIZEOF_LONG_LONG, PY_LONG_LONG);
-#endif
-
-#undef CHECK_SIZEOF
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject*
-test_list_api(PyObject *self)
-{
-    PyObject* list;
-    int i;
-
-    /* SF bug 132008:  PyList_Reverse segfaults */
-#define NLIST 30
-    list = PyList_New(NLIST);
-    if (list == (PyObject*)NULL)
-        return (PyObject*)NULL;
-    /* list = range(NLIST) */
-    for (i = 0; i < NLIST; ++i) {
-        PyObject* anint = PyInt_FromLong(i);
-        if (anint == (PyObject*)NULL) {
-            Py_DECREF(list);
-            return (PyObject*)NULL;
-        }
-        PyList_SET_ITEM(list, i, anint);
-    }
-    /* list.reverse(), via PyList_Reverse() */
-    i = PyList_Reverse(list);   /* should not blow up! */
-    if (i != 0) {
-        Py_DECREF(list);
-        return (PyObject*)NULL;
-    }
-    /* Check that list == range(29, -1, -1) now */
-    for (i = 0; i < NLIST; ++i) {
-        PyObject* anint = PyList_GET_ITEM(list, i);
-        if (PyInt_AS_LONG(anint) != NLIST-1-i) {
-            PyErr_SetString(TestError,
-                            "test_list_api: reverse screwed up");
-            Py_DECREF(list);
-            return (PyObject*)NULL;
-        }
-    }
-    Py_DECREF(list);
-#undef NLIST
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static int
-test_dict_inner(int count)
-{
-    Py_ssize_t pos = 0, iterations = 0;
-    int i;
-    PyObject *dict = PyDict_New();
-    PyObject *v, *k;
-
-    if (dict == NULL)
-        return -1;
-
-    for (i = 0; i < count; i++) {
-        v = PyInt_FromLong(i);
-        PyDict_SetItem(dict, v, v);
-        Py_DECREF(v);
-    }
-
-    while (PyDict_Next(dict, &pos, &k, &v)) {
-        PyObject *o;
-        iterations++;
-
-        i = PyInt_AS_LONG(v) + 1;
-        o = PyInt_FromLong(i);
-        if (o == NULL)
-            return -1;
-        if (PyDict_SetItem(dict, k, o) < 0) {
-            Py_DECREF(o);
-            return -1;
-        }
-        Py_DECREF(o);
-    }
-
-    Py_DECREF(dict);
-
-    if (iterations != count) {
-        PyErr_SetString(
-            TestError,
-            "test_dict_iteration: dict iteration went wrong ");
-        return -1;
-    } else {
-        return 0;
-    }
-}
-
-static PyObject*
-test_dict_iteration(PyObject* self)
-{
-    int i;
-
-    for (i = 0; i < 200; i++) {
-        if (test_dict_inner(i) < 0) {
-            return NULL;
-        }
-    }
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-
-/* Issue #4701: Check that PyObject_Hash implicitly calls
- *   PyType_Ready if it hasn't already been called
- */
-static PyTypeObject _HashInheritanceTester_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0,                          /* Number of items for varobject */
-    "hashinheritancetester",            /* Name of this type */
-    sizeof(PyObject),           /* Basic object size */
-    0,                          /* Item size for varobject */
-    (destructor)PyObject_Del, /* 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 */
-    PyObject_GenericGetAttr,  /* tp_getattro */
-    0,                          /* tp_setattro */
-    0,                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,         /* tp_flags */
-    0,                          /* tp_doc */
-    0,                          /* tp_traverse */
-    0,                          /* tp_clear */
-    0,                          /* tp_richcompare */
-    0,                          /* tp_weaklistoffset */
-    0,                          /* tp_iter */
-    0,                          /* tp_iternext */
-    0,                          /* tp_methods */
-    0,                          /* tp_members */
-    0,                          /* tp_getset */
-    0,                          /* tp_base */
-    0,                          /* tp_dict */
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    0,                          /* tp_dictoffset */
-    0,                          /* tp_init */
-    0,                          /* tp_alloc */
-    PyType_GenericNew,                  /* tp_new */
-};
-
-static PyObject*
-test_lazy_hash_inheritance(PyObject* self)
-{
-    PyTypeObject *type;
-    PyObject *obj;
-    long hash;
-
-    type = &_HashInheritanceTester_Type;
-
-    if (type->tp_dict != NULL)
-        /* The type has already been initialized. This probably means
-           -R is being used. */
-        Py_RETURN_NONE;
-
-
-    obj = PyObject_New(PyObject, type);
-    if (obj == NULL) {
-        PyErr_Clear();
-        PyErr_SetString(
-            TestError,
-            "test_lazy_hash_inheritance: failed to create object");
-        return NULL;
-    }
-
-    if (type->tp_dict != NULL) {
-        PyErr_SetString(
-            TestError,
-            "test_lazy_hash_inheritance: type initialised too soon");
-        Py_DECREF(obj);
-        return NULL;
-    }
-
-    hash = PyObject_Hash(obj);
-    if ((hash == -1) && PyErr_Occurred()) {
-        PyErr_Clear();
-        PyErr_SetString(
-            TestError,
-            "test_lazy_hash_inheritance: could not hash object");
-        Py_DECREF(obj);
-        return NULL;
-    }
-
-    if (type->tp_dict == NULL) {
-        PyErr_SetString(
-            TestError,
-            "test_lazy_hash_inheritance: type not initialised by hash()");
-        Py_DECREF(obj);
-        return NULL;
-    }
-
-    if (type->tp_hash != PyType_Type.tp_hash) {
-        PyErr_SetString(
-            TestError,
-            "test_lazy_hash_inheritance: unexpected hash function");
-        Py_DECREF(obj);
-        return NULL;
-    }
-
-    Py_DECREF(obj);
-
-    Py_RETURN_NONE;
-}
-
-
-/* Issue #7385: Check that memoryview() does not crash
- *   when bf_getbuffer returns an error
- */
-
-static int
-broken_buffer_getbuffer(PyObject *self, Py_buffer *view, int flags)
-{
-    PyErr_SetString(
-        TestError,
-        "test_broken_memoryview: expected error in bf_getbuffer");
-    return -1;
-}
-
-static PyBufferProcs memoryviewtester_as_buffer = {
-    0,          /* bf_getreadbuffer */
-    0,          /* bf_getwritebuffer */
-    0,          /* bf_getsegcount */
-    0,          /* bf_getcharbuffer */
-    (getbufferproc)broken_buffer_getbuffer,     /* bf_getbuffer */
-    0,          /* bf_releasebuffer */
-};
-
-static PyTypeObject _MemoryViewTester_Type = {
-    PyObject_HEAD_INIT(NULL)
-    0,                          /* Number of items for varobject */
-    "memoryviewtester",         /* Name of this type */
-    sizeof(PyObject),           /* Basic object size */
-    0,                          /* Item size for varobject */
-    (destructor)PyObject_Del, /* 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 */
-    PyObject_GenericGetAttr,  /* tp_getattro */
-    0,                          /* tp_setattro */
-    &memoryviewtester_as_buffer,                        /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_NEWBUFFER,     /* tp_flags */
-    0,                          /* tp_doc */
-    0,                          /* tp_traverse */
-    0,                          /* tp_clear */
-    0,                          /* tp_richcompare */
-    0,                          /* tp_weaklistoffset */
-    0,                          /* tp_iter */
-    0,                          /* tp_iternext */
-    0,                          /* tp_methods */
-    0,                          /* tp_members */
-    0,                          /* tp_getset */
-    0,                          /* tp_base */
-    0,                          /* tp_dict */
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    0,                          /* tp_dictoffset */
-    0,                          /* tp_init */
-    0,                          /* tp_alloc */
-    PyType_GenericNew,                  /* tp_new */
-};
-
-static PyObject*
-test_broken_memoryview(PyObject* self)
-{
-    PyObject *obj = PyObject_New(PyObject, &_MemoryViewTester_Type);
-    PyObject *res;
-
-    if (obj == NULL) {
-        PyErr_Clear();
-        PyErr_SetString(
-            TestError,
-            "test_broken_memoryview: failed to create object");
-        return NULL;
-    }
-
-    res = PyMemoryView_FromObject(obj);
-    if (res || !PyErr_Occurred()){
-        PyErr_SetString(
-            TestError,
-            "test_broken_memoryview: memoryview() didn't raise an Exception");
-        Py_XDECREF(res);
-        Py_DECREF(obj);
-        return NULL;
-    }
-
-    PyErr_Clear();
-    Py_DECREF(obj);
-    Py_RETURN_NONE;
-}
-
-
-/* Tests of PyLong_{As, From}{Unsigned,}Long(), and (#ifdef HAVE_LONG_LONG)
-   PyLong_{As, From}{Unsigned,}LongLong().
-
-   Note that the meat of the test is contained in testcapi_long.h.
-   This is revolting, but delicate code duplication is worse:  "almost
-   exactly the same" code is needed to test PY_LONG_LONG, but the ubiquitous
-   dependence on type names makes it impossible to use a parameterized
-   function.  A giant macro would be even worse than this.  A C++ template
-   would be perfect.
-
-   The "report an error" functions are deliberately not part of the #include
-   file:  if the test fails, you can set a breakpoint in the appropriate
-   error function directly, and crawl back from there in the debugger.
-*/
-
-#define UNBIND(X)  Py_DECREF(X); (X) = NULL
-
-static PyObject *
-raise_test_long_error(const char* msg)
-{
-    return raiseTestError("test_long_api", msg);
-}
-
-#define TESTNAME        test_long_api_inner
-#define TYPENAME        long
-#define F_S_TO_PY       PyLong_FromLong
-#define F_PY_TO_S       PyLong_AsLong
-#define F_U_TO_PY       PyLong_FromUnsignedLong
-#define F_PY_TO_U       PyLong_AsUnsignedLong
-
-#include "testcapi_long.h"
-
-static PyObject *
-test_long_api(PyObject* self)
-{
-    return TESTNAME(raise_test_long_error);
-}
-
-#undef TESTNAME
-#undef TYPENAME
-#undef F_S_TO_PY
-#undef F_PY_TO_S
-#undef F_U_TO_PY
-#undef F_PY_TO_U
-
-#ifdef HAVE_LONG_LONG
-
-static PyObject *
-raise_test_longlong_error(const char* msg)
-{
-    return raiseTestError("test_longlong_api", msg);
-}
-
-#define TESTNAME        test_longlong_api_inner
-#define TYPENAME        PY_LONG_LONG
-#define F_S_TO_PY       PyLong_FromLongLong
-#define F_PY_TO_S       PyLong_AsLongLong
-#define F_U_TO_PY       PyLong_FromUnsignedLongLong
-#define F_PY_TO_U       PyLong_AsUnsignedLongLong
-
-#include "testcapi_long.h"
-
-static PyObject *
-test_longlong_api(PyObject* self, PyObject *args)
-{
-    return TESTNAME(raise_test_longlong_error);
-}
-
-#undef TESTNAME
-#undef TYPENAME
-#undef F_S_TO_PY
-#undef F_PY_TO_S
-#undef F_U_TO_PY
-#undef F_PY_TO_U
-
-/* Test the PyLong_AsLongAndOverflow API. General conversion to PY_LONG
-   is tested by test_long_api_inner. This test will concentrate on proper
-   handling of overflow.
-*/
-
-static PyObject *
-test_long_and_overflow(PyObject *self)
-{
-    PyObject *num, *one, *temp;
-    long value;
-    int overflow;
-
-    /* Test that overflow is set properly for a large value. */
-    /* num is a number larger than LONG_MAX even on 64-bit platforms */
-    num = PyLong_FromString("FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16);
-    if (num == NULL)
-        return NULL;
-    overflow = 1234;
-    value = PyLong_AsLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != -1)
-        return raiseTestError("test_long_and_overflow",
-            "return value was not set to -1");
-    if (overflow != 1)
-        return raiseTestError("test_long_and_overflow",
-            "overflow was not set to 1");
-
-    /* Same again, with num = LONG_MAX + 1 */
-    num = PyLong_FromLong(LONG_MAX);
-    if (num == NULL)
-        return NULL;
-    one = PyLong_FromLong(1L);
-    if (one == NULL) {
-        Py_DECREF(num);
-        return NULL;
-    }
-    temp = PyNumber_Add(num, one);
-    Py_DECREF(one);
-    Py_DECREF(num);
-    num = temp;
-    if (num == NULL)
-        return NULL;
-    overflow = 0;
-    value = PyLong_AsLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != -1)
-        return raiseTestError("test_long_and_overflow",
-            "return value was not set to -1");
-    if (overflow != 1)
-        return raiseTestError("test_long_and_overflow",
-            "overflow was not set to 1");
-
-    /* Test that overflow is set properly for a large negative value. */
-    /* num is a number smaller than LONG_MIN even on 64-bit platforms */
-    num = PyLong_FromString("-FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16);
-    if (num == NULL)
-        return NULL;
-    overflow = 1234;
-    value = PyLong_AsLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != -1)
-        return raiseTestError("test_long_and_overflow",
-            "return value was not set to -1");
-    if (overflow != -1)
-        return raiseTestError("test_long_and_overflow",
-            "overflow was not set to -1");
-
-    /* Same again, with num = LONG_MIN - 1 */
-    num = PyLong_FromLong(LONG_MIN);
-    if (num == NULL)
-        return NULL;
-    one = PyLong_FromLong(1L);
-    if (one == NULL) {
-        Py_DECREF(num);
-        return NULL;
-    }
-    temp = PyNumber_Subtract(num, one);
-    Py_DECREF(one);
-    Py_DECREF(num);
-    num = temp;
-    if (num == NULL)
-        return NULL;
-    overflow = 0;
-    value = PyLong_AsLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != -1)
-        return raiseTestError("test_long_and_overflow",
-            "return value was not set to -1");
-    if (overflow != -1)
-        return raiseTestError("test_long_and_overflow",
-            "overflow was not set to -1");
-
-    /* Test that overflow is cleared properly for small values. */
-    num = PyLong_FromString("FF", NULL, 16);
-    if (num == NULL)
-        return NULL;
-    overflow = 1234;
-    value = PyLong_AsLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != 0xFF)
-        return raiseTestError("test_long_and_overflow",
-            "expected return value 0xFF");
-    if (overflow != 0)
-        return raiseTestError("test_long_and_overflow",
-            "overflow was not cleared");
-
-    num = PyLong_FromString("-FF", NULL, 16);
-    if (num == NULL)
-        return NULL;
-    overflow = 0;
-    value = PyLong_AsLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != -0xFF)
-        return raiseTestError("test_long_and_overflow",
-            "expected return value 0xFF");
-    if (overflow != 0)
-        return raiseTestError("test_long_and_overflow",
-            "overflow was set incorrectly");
-
-    num = PyLong_FromLong(LONG_MAX);
-    if (num == NULL)
-        return NULL;
-    overflow = 1234;
-    value = PyLong_AsLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != LONG_MAX)
-        return raiseTestError("test_long_and_overflow",
-            "expected return value LONG_MAX");
-    if (overflow != 0)
-        return raiseTestError("test_long_and_overflow",
-            "overflow was not cleared");
-
-    num = PyLong_FromLong(LONG_MIN);
-    if (num == NULL)
-        return NULL;
-    overflow = 0;
-    value = PyLong_AsLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != LONG_MIN)
-        return raiseTestError("test_long_and_overflow",
-            "expected return value LONG_MIN");
-    if (overflow != 0)
-        return raiseTestError("test_long_and_overflow",
-            "overflow was not cleared");
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/* Test the PyLong_AsLongLongAndOverflow API. General conversion to
-   PY_LONG_LONG is tested by test_long_api_inner. This test will
-   concentrate on proper handling of overflow.
-*/
-
-static PyObject *
-test_long_long_and_overflow(PyObject *self)
-{
-    PyObject *num, *one, *temp;
-    PY_LONG_LONG value;
-    int overflow;
-
-    /* Test that overflow is set properly for a large value. */
-    /* num is a number larger than PY_LLONG_MAX on a typical machine. */
-    num = PyLong_FromString("FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16);
-    if (num == NULL)
-        return NULL;
-    overflow = 1234;
-    value = PyLong_AsLongLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != -1)
-        return raiseTestError("test_long_long_and_overflow",
-            "return value was not set to -1");
-    if (overflow != 1)
-        return raiseTestError("test_long_long_and_overflow",
-            "overflow was not set to 1");
-
-    /* Same again, with num = PY_LLONG_MAX + 1 */
-    num = PyLong_FromLongLong(PY_LLONG_MAX);
-    if (num == NULL)
-        return NULL;
-    one = PyLong_FromLong(1L);
-    if (one == NULL) {
-        Py_DECREF(num);
-        return NULL;
-    }
-    temp = PyNumber_Add(num, one);
-    Py_DECREF(one);
-    Py_DECREF(num);
-    num = temp;
-    if (num == NULL)
-        return NULL;
-    overflow = 0;
-    value = PyLong_AsLongLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != -1)
-        return raiseTestError("test_long_long_and_overflow",
-            "return value was not set to -1");
-    if (overflow != 1)
-        return raiseTestError("test_long_long_and_overflow",
-            "overflow was not set to 1");
-
-    /* Test that overflow is set properly for a large negative value. */
-    /* num is a number smaller than PY_LLONG_MIN on a typical platform */
-    num = PyLong_FromString("-FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16);
-    if (num == NULL)
-        return NULL;
-    overflow = 1234;
-    value = PyLong_AsLongLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != -1)
-        return raiseTestError("test_long_long_and_overflow",
-            "return value was not set to -1");
-    if (overflow != -1)
-        return raiseTestError("test_long_long_and_overflow",
-            "overflow was not set to -1");
-
-    /* Same again, with num = PY_LLONG_MIN - 1 */
-    num = PyLong_FromLongLong(PY_LLONG_MIN);
-    if (num == NULL)
-        return NULL;
-    one = PyLong_FromLong(1L);
-    if (one == NULL) {
-        Py_DECREF(num);
-        return NULL;
-    }
-    temp = PyNumber_Subtract(num, one);
-    Py_DECREF(one);
-    Py_DECREF(num);
-    num = temp;
-    if (num == NULL)
-        return NULL;
-    overflow = 0;
-    value = PyLong_AsLongLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != -1)
-        return raiseTestError("test_long_long_and_overflow",
-            "return value was not set to -1");
-    if (overflow != -1)
-        return raiseTestError("test_long_long_and_overflow",
-            "overflow was not set to -1");
-
-    /* Test that overflow is cleared properly for small values. */
-    num = PyLong_FromString("FF", NULL, 16);
-    if (num == NULL)
-        return NULL;
-    overflow = 1234;
-    value = PyLong_AsLongLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != 0xFF)
-        return raiseTestError("test_long_long_and_overflow",
-            "expected return value 0xFF");
-    if (overflow != 0)
-        return raiseTestError("test_long_long_and_overflow",
-            "overflow was not cleared");
-
-    num = PyLong_FromString("-FF", NULL, 16);
-    if (num == NULL)
-        return NULL;
-    overflow = 0;
-    value = PyLong_AsLongLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != -0xFF)
-        return raiseTestError("test_long_long_and_overflow",
-            "expected return value 0xFF");
-    if (overflow != 0)
-        return raiseTestError("test_long_long_and_overflow",
-            "overflow was set incorrectly");
-
-    num = PyLong_FromLongLong(PY_LLONG_MAX);
-    if (num == NULL)
-        return NULL;
-    overflow = 1234;
-    value = PyLong_AsLongLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != PY_LLONG_MAX)
-        return raiseTestError("test_long_long_and_overflow",
-            "expected return value PY_LLONG_MAX");
-    if (overflow != 0)
-        return raiseTestError("test_long_long_and_overflow",
-            "overflow was not cleared");
-
-    num = PyLong_FromLongLong(PY_LLONG_MIN);
-    if (num == NULL)
-        return NULL;
-    overflow = 0;
-    value = PyLong_AsLongLongAndOverflow(num, &overflow);
-    Py_DECREF(num);
-    if (value == -1 && PyErr_Occurred())
-        return NULL;
-    if (value != PY_LLONG_MIN)
-        return raiseTestError("test_long_long_and_overflow",
-            "expected return value PY_LLONG_MIN");
-    if (overflow != 0)
-        return raiseTestError("test_long_long_and_overflow",
-            "overflow was not cleared");
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/* Test the L code for PyArg_ParseTuple.  This should deliver a PY_LONG_LONG
-   for both long and int arguments.  The test may leak a little memory if
-   it fails.
-*/
-static PyObject *
-test_L_code(PyObject *self)
-{
-    PyObject *tuple, *num;
-    PY_LONG_LONG value;
-
-    tuple = PyTuple_New(1);
-    if (tuple == NULL)
-        return NULL;
-
-    num = PyLong_FromLong(42);
-    if (num == NULL)
-        return NULL;
-
-    PyTuple_SET_ITEM(tuple, 0, num);
-
-    value = -1;
-    if (PyArg_ParseTuple(tuple, "L:test_L_code", &value) < 0)
-        return NULL;
-    if (value != 42)
-        return raiseTestError("test_L_code",
-            "L code returned wrong value for long 42");
-
-    Py_DECREF(num);
-    num = PyInt_FromLong(42);
-    if (num == NULL)
-        return NULL;
-
-    PyTuple_SET_ITEM(tuple, 0, num);
-
-    value = -1;
-    if (PyArg_ParseTuple(tuple, "L:test_L_code", &value) < 0)
-        return NULL;
-    if (value != 42)
-        return raiseTestError("test_L_code",
-            "L code returned wrong value for int 42");
-
-    Py_DECREF(tuple);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-#endif  /* ifdef HAVE_LONG_LONG */
-
-/* Test tuple argument processing */
-static PyObject *
-getargs_tuple(PyObject *self, PyObject *args)
-{
-    int a, b, c;
-    if (!PyArg_ParseTuple(args, "i(ii)", &a, &b, &c))
-        return NULL;
-    return Py_BuildValue("iii", a, b, c);
-}
-
-/* test PyArg_ParseTupleAndKeywords */
-static PyObject *getargs_keywords(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *keywords[] = {"arg1","arg2","arg3","arg4","arg5", NULL};
-    static char *fmt="(ii)i|(i(ii))(iii)i";
-    int int_args[10]={-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, fmt, keywords,
-        &int_args[0], &int_args[1], &int_args[2], &int_args[3], &int_args[4],
-        &int_args[5], &int_args[6], &int_args[7], &int_args[8], &int_args[9]))
-        return NULL;
-    return Py_BuildValue("iiiiiiiiii",
-        int_args[0], int_args[1], int_args[2], int_args[3], int_args[4],
-        int_args[5], int_args[6], int_args[7], int_args[8], int_args[9]);
-}
-
-/* Functions to call PyArg_ParseTuple with integer format codes,
-   and return the result.
-*/
-static PyObject *
-getargs_b(PyObject *self, PyObject *args)
-{
-    unsigned char value;
-    if (!PyArg_ParseTuple(args, "b", &value))
-        return NULL;
-    return PyLong_FromUnsignedLong((unsigned long)value);
-}
-
-static PyObject *
-getargs_B(PyObject *self, PyObject *args)
-{
-    unsigned char value;
-    if (!PyArg_ParseTuple(args, "B", &value))
-        return NULL;
-    return PyLong_FromUnsignedLong((unsigned long)value);
-}
-
-static PyObject *
-getargs_h(PyObject *self, PyObject *args)
-{
-    short value;
-    if (!PyArg_ParseTuple(args, "h", &value))
-        return NULL;
-    return PyLong_FromLong((long)value);
-}
-
-static PyObject *
-getargs_H(PyObject *self, PyObject *args)
-{
-    unsigned short value;
-    if (!PyArg_ParseTuple(args, "H", &value))
-        return NULL;
-    return PyLong_FromUnsignedLong((unsigned long)value);
-}
-
-static PyObject *
-getargs_I(PyObject *self, PyObject *args)
-{
-    unsigned int value;
-    if (!PyArg_ParseTuple(args, "I", &value))
-        return NULL;
-    return PyLong_FromUnsignedLong((unsigned long)value);
-}
-
-static PyObject *
-getargs_k(PyObject *self, PyObject *args)
-{
-    unsigned long value;
-    if (!PyArg_ParseTuple(args, "k", &value))
-        return NULL;
-    return PyLong_FromUnsignedLong(value);
-}
-
-static PyObject *
-getargs_i(PyObject *self, PyObject *args)
-{
-    int value;
-    if (!PyArg_ParseTuple(args, "i", &value))
-        return NULL;
-    return PyLong_FromLong((long)value);
-}
-
-static PyObject *
-getargs_l(PyObject *self, PyObject *args)
-{
-    long value;
-    if (!PyArg_ParseTuple(args, "l", &value))
-        return NULL;
-    return PyLong_FromLong(value);
-}
-
-static PyObject *
-getargs_n(PyObject *self, PyObject *args)
-{
-    Py_ssize_t value;
-    if (!PyArg_ParseTuple(args, "n", &value))
-    return NULL;
-    return PyInt_FromSsize_t(value);
-}
-
-#ifdef HAVE_LONG_LONG
-static PyObject *
-getargs_L(PyObject *self, PyObject *args)
-{
-    PY_LONG_LONG value;
-    if (!PyArg_ParseTuple(args, "L", &value))
-        return NULL;
-    return PyLong_FromLongLong(value);
-}
-
-static PyObject *
-getargs_K(PyObject *self, PyObject *args)
-{
-    unsigned PY_LONG_LONG value;
-    if (!PyArg_ParseTuple(args, "K", &value))
-        return NULL;
-    return PyLong_FromUnsignedLongLong(value);
-}
-#endif
-
-/* This function not only tests the 'k' getargs code, but also the
-   PyInt_AsUnsignedLongMask() and PyInt_AsUnsignedLongMask() functions. */
-static PyObject *
-test_k_code(PyObject *self)
-{
-    PyObject *tuple, *num;
-    unsigned long value;
-
-    tuple = PyTuple_New(1);
-    if (tuple == NULL)
-        return NULL;
-
-    /* a number larger than ULONG_MAX even on 64-bit platforms */
-    num = PyLong_FromString("FFFFFFFFFFFFFFFFFFFFFFFF", NULL, 16);
-    if (num == NULL)
-        return NULL;
-
-    value = PyInt_AsUnsignedLongMask(num);
-    if (value != ULONG_MAX)
-        return raiseTestError("test_k_code",
-        "PyInt_AsUnsignedLongMask() returned wrong value for long 0xFFF...FFF");
-
-    PyTuple_SET_ITEM(tuple, 0, num);
-
-    value = 0;
-    if (PyArg_ParseTuple(tuple, "k:test_k_code", &value) < 0)
-        return NULL;
-    if (value != ULONG_MAX)
-        return raiseTestError("test_k_code",
-            "k code returned wrong value for long 0xFFF...FFF");
-
-    Py_DECREF(num);
-    num = PyLong_FromString("-FFFFFFFF000000000000000042", NULL, 16);
-    if (num == NULL)
-        return NULL;
-
-    value = PyInt_AsUnsignedLongMask(num);
-    if (value != (unsigned long)-0x42)
-        return raiseTestError("test_k_code",
-        "PyInt_AsUnsignedLongMask() returned wrong value for long 0xFFF...FFF");
-
-    PyTuple_SET_ITEM(tuple, 0, num);
-
-    value = 0;
-    if (PyArg_ParseTuple(tuple, "k:test_k_code", &value) < 0)
-        return NULL;
-    if (value != (unsigned long)-0x42)
-        return raiseTestError("test_k_code",
-            "k code returned wrong value for long -0xFFF..000042");
-
-    Py_DECREF(tuple);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-#ifdef Py_USING_UNICODE
-
-static volatile int x;
-
-/* Test the u and u# codes for PyArg_ParseTuple. May leak memory in case
-   of an error.
-*/
-static PyObject *
-test_u_code(PyObject *self)
-{
-    PyObject *tuple, *obj;
-    Py_UNICODE *value;
-    int len;
-
-    /* issue4122: Undefined reference to _Py_ascii_whitespace on Windows */
-    /* Just use the macro and check that it compiles */
-    x = Py_UNICODE_ISSPACE(25);
-
-    tuple = PyTuple_New(1);
-    if (tuple == NULL)
-        return NULL;
-
-    obj = PyUnicode_Decode("test", strlen("test"),
-                           "ascii", NULL);
-    if (obj == NULL)
-        return NULL;
-
-    PyTuple_SET_ITEM(tuple, 0, obj);
-
-    value = 0;
-    if (PyArg_ParseTuple(tuple, "u:test_u_code", &value) < 0)
-        return NULL;
-    if (value != PyUnicode_AS_UNICODE(obj))
-        return raiseTestError("test_u_code",
-            "u code returned wrong value for u'test'");
-    value = 0;
-    if (PyArg_ParseTuple(tuple, "u#:test_u_code", &value, &len) < 0)
-        return NULL;
-    if (value != PyUnicode_AS_UNICODE(obj) ||
-        len != PyUnicode_GET_SIZE(obj))
-        return raiseTestError("test_u_code",
-            "u# code returned wrong values for u'test'");
-
-    Py_DECREF(tuple);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-test_widechar(PyObject *self)
-{
-#if defined(SIZEOF_WCHAR_T) && (SIZEOF_WCHAR_T == 4)
-    const wchar_t wtext[2] = {(wchar_t)0x10ABCDu};
-    size_t wtextlen = 1;
-#else
-    const wchar_t wtext[3] = {(wchar_t)0xDBEAu, (wchar_t)0xDFCDu};
-    size_t wtextlen = 2;
-#endif
-    PyObject *wide, *utf8;
-
-    wide = PyUnicode_FromWideChar(wtext, wtextlen);
-    if (wide == NULL)
-        return NULL;
-
-    utf8 = PyUnicode_FromString("\xf4\x8a\xaf\x8d");
-    if (utf8 == NULL) {
-        Py_DECREF(wide);
-        return NULL;
-    }
-
-    if (PyUnicode_GET_SIZE(wide) != PyUnicode_GET_SIZE(utf8)) {
-        Py_DECREF(wide);
-        Py_DECREF(utf8);
-        return raiseTestError("test_widechar",
-                        "wide string and utf8 string have different length");
-    }
-    if (PyUnicode_Compare(wide, utf8)) {
-        Py_DECREF(wide);
-        Py_DECREF(utf8);
-        if (PyErr_Occurred())
-            return NULL;
-        return raiseTestError("test_widechar",
-                        "wide string and utf8 string are differents");
-    }
-
-    Py_DECREF(wide);
-    Py_DECREF(utf8);
-    Py_RETURN_NONE;
-}
-
-static PyObject *
-test_empty_argparse(PyObject *self)
-{
-    /* Test that formats can begin with '|'. See issue #4720. */
-    PyObject *tuple, *dict = NULL;
-    static char *kwlist[] = {NULL};
-    int result;
-    tuple = PyTuple_New(0);
-    if (!tuple)
-        return NULL;
-    if ((result = PyArg_ParseTuple(tuple, "|:test_empty_argparse")) < 0)
-        goto done;
-    dict = PyDict_New();
-    if (!dict)
-        goto done;
-    result = PyArg_ParseTupleAndKeywords(tuple, dict, "|:test_empty_argparse", kwlist);
-  done:
-    Py_DECREF(tuple);
-    Py_XDECREF(dict);
-    if (result < 0)
-        return NULL;
-    else {
-        Py_RETURN_NONE;
-    }
-}
-
-static PyObject *
-codec_incrementalencoder(PyObject *self, PyObject *args)
-{
-    const char *encoding, *errors = NULL;
-    if (!PyArg_ParseTuple(args, "s|s:test_incrementalencoder",
-                          &encoding, &errors))
-        return NULL;
-    return PyCodec_IncrementalEncoder(encoding, errors);
-}
-
-static PyObject *
-codec_incrementaldecoder(PyObject *self, PyObject *args)
-{
-    const char *encoding, *errors = NULL;
-    if (!PyArg_ParseTuple(args, "s|s:test_incrementaldecoder",
-                          &encoding, &errors))
-        return NULL;
-    return PyCodec_IncrementalDecoder(encoding, errors);
-}
-
-#endif
-
-/* Simple test of _PyLong_NumBits and _PyLong_Sign. */
-static PyObject *
-test_long_numbits(PyObject *self)
-{
-    struct triple {
-        long input;
-        size_t nbits;
-        int sign;
-    } testcases[] = {{0, 0, 0},
-                     {1L, 1, 1},
-                     {-1L, 1, -1},
-                     {2L, 2, 1},
-                     {-2L, 2, -1},
-                     {3L, 2, 1},
-                     {-3L, 2, -1},
-                     {4L, 3, 1},
-                     {-4L, 3, -1},
-                     {0x7fffL, 15, 1},          /* one Python long digit */
-             {-0x7fffL, 15, -1},
-             {0xffffL, 16, 1},
-             {-0xffffL, 16, -1},
-             {0xfffffffL, 28, 1},
-             {-0xfffffffL, 28, -1}};
-    int i;
-
-    for (i = 0; i < sizeof(testcases) / sizeof(struct triple); ++i) {
-        PyObject *plong = PyLong_FromLong(testcases[i].input);
-        size_t nbits = _PyLong_NumBits(plong);
-        int sign = _PyLong_Sign(plong);
-
-        Py_DECREF(plong);
-        if (nbits != testcases[i].nbits)
-            return raiseTestError("test_long_numbits",
-                            "wrong result for _PyLong_NumBits");
-        if (sign != testcases[i].sign)
-            return raiseTestError("test_long_numbits",
-                            "wrong result for _PyLong_Sign");
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/* Example passing NULLs to PyObject_Str(NULL) and PyObject_Unicode(NULL). */
-
-static PyObject *
-test_null_strings(PyObject *self)
-{
-    PyObject *o1 = PyObject_Str(NULL), *o2 = PyObject_Unicode(NULL);
-    PyObject *tuple = PyTuple_Pack(2, o1, o2);
-    Py_XDECREF(o1);
-    Py_XDECREF(o2);
-    return tuple;
-}
-
-static PyObject *
-raise_exception(PyObject *self, PyObject *args)
-{
-    PyObject *exc;
-    PyObject *exc_args, *v;
-    int num_args, i;
-
-    if (!PyArg_ParseTuple(args, "Oi:raise_exception",
-                          &exc, &num_args))
-        return NULL;
-    if (!PyExceptionClass_Check(exc)) {
-        PyErr_Format(PyExc_TypeError, "an exception class is required");
-        return NULL;
-    }
-
-    exc_args = PyTuple_New(num_args);
-    if (exc_args == NULL)
-        return NULL;
-    for (i = 0; i < num_args; ++i) {
-        v = PyInt_FromLong(i);
-        if (v == NULL) {
-            Py_DECREF(exc_args);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(exc_args, i, v);
-    }
-    PyErr_SetObject(exc, exc_args);
-    Py_DECREF(exc_args);
-    return NULL;
-}
-
-
-static int test_run_counter = 0;
-
-static PyObject *
-test_datetime_capi(PyObject *self, PyObject *args) {
-    if (PyDateTimeAPI) {
-        if (test_run_counter) {
-            /* Probably regrtest.py -R */
-            Py_RETURN_NONE;
-        }
-        else {
-            PyErr_SetString(PyExc_AssertionError,
-                            "PyDateTime_CAPI somehow initialized");
-            return NULL;
-        }
-    }
-    test_run_counter++;
-    PyDateTime_IMPORT;
-    if (PyDateTimeAPI)
-        Py_RETURN_NONE;
-    else
-        return NULL;
-}
-
-
-#ifdef WITH_THREAD
-
-/* test_thread_state spawns a thread of its own, and that thread releases
- * `thread_done` when it's finished.  The driver code has to know when the
- * thread finishes, because the thread uses a PyObject (the callable) that
- * may go away when the driver finishes.  The former lack of this explicit
- * synchronization caused rare segfaults, so rare that they were seen only
- * on a Mac buildbot (although they were possible on any box).
- */
-static PyThread_type_lock thread_done = NULL;
-
-static int
-_make_call(void *callable)
-{
-    PyObject *rc;
-    int success;
-    PyGILState_STATE s = PyGILState_Ensure();
-    rc = PyObject_CallFunction((PyObject *)callable, "");
-    success = (rc != NULL);
-    Py_XDECREF(rc);
-    PyGILState_Release(s);
-    return success;
-}
-
-/* Same thing, but releases `thread_done` when it returns.  This variant
- * should be called only from threads spawned by test_thread_state().
- */
-static void
-_make_call_from_thread(void *callable)
-{
-    _make_call(callable);
-    PyThread_release_lock(thread_done);
-}
-
-static PyObject *
-test_thread_state(PyObject *self, PyObject *args)
-{
-    PyObject *fn;
-    int success = 1;
-
-    if (!PyArg_ParseTuple(args, "O:test_thread_state", &fn))
-        return NULL;
-
-    if (!PyCallable_Check(fn)) {
-        PyErr_Format(PyExc_TypeError, "'%s' object is not callable",
-            fn->ob_type->tp_name);
-        return NULL;
-    }
-
-    /* Ensure Python is set up for threading */
-    PyEval_InitThreads();
-    thread_done = PyThread_allocate_lock();
-    if (thread_done == NULL)
-        return PyErr_NoMemory();
-    PyThread_acquire_lock(thread_done, 1);
-
-    /* Start a new thread with our callback. */
-    PyThread_start_new_thread(_make_call_from_thread, fn);
-    /* Make the callback with the thread lock held by this thread */
-    success &= _make_call(fn);
-    /* Do it all again, but this time with the thread-lock released */
-    Py_BEGIN_ALLOW_THREADS
-    success &= _make_call(fn);
-    PyThread_acquire_lock(thread_done, 1);  /* wait for thread to finish */
-    Py_END_ALLOW_THREADS
-
-    /* And once more with and without a thread
-       XXX - should use a lock and work out exactly what we are trying
-       to test <wink>
-    */
-    Py_BEGIN_ALLOW_THREADS
-    PyThread_start_new_thread(_make_call_from_thread, fn);
-    success &= _make_call(fn);
-    PyThread_acquire_lock(thread_done, 1);  /* wait for thread to finish */
-    Py_END_ALLOW_THREADS
-
-    /* Release lock we acquired above.  This is required on HP-UX. */
-    PyThread_release_lock(thread_done);
-
-    PyThread_free_lock(thread_done);
-    if (!success)
-        return NULL;
-    Py_RETURN_NONE;
-}
-
-/* test Py_AddPendingCalls using threads */
-static int _pending_callback(void *arg)
-{
-    /* we assume the argument is callable object to which we own a reference */
-    PyObject *callable = (PyObject *)arg;
-    PyObject *r = PyObject_CallObject(callable, NULL);
-    Py_DECREF(callable);
-    Py_XDECREF(r);
-    return r != NULL ? 0 : -1;
-}
-
-/* The following requests n callbacks to _pending_callback.  It can be
- * run from any python thread.
- */
-PyObject *pending_threadfunc(PyObject *self, PyObject *arg)
-{
-    PyObject *callable;
-    int r;
-    if (PyArg_ParseTuple(arg, "O", &callable) == 0)
-        return NULL;
-
-    /* create the reference for the callbackwhile we hold the lock */
-    Py_INCREF(callable);
-
-    Py_BEGIN_ALLOW_THREADS
-    r = Py_AddPendingCall(&_pending_callback, callable);
-    Py_END_ALLOW_THREADS
-
-    if (r<0) {
-        Py_DECREF(callable); /* unsuccessful add, destroy the extra reference */
-        Py_INCREF(Py_False);
-        return Py_False;
-    }
-    Py_INCREF(Py_True);
-    return Py_True;
-}
-#endif
-
-/* Some tests of PyString_FromFormat().  This needs more tests. */
-static PyObject *
-test_string_from_format(PyObject *self, PyObject *args)
-{
-    PyObject *result;
-    char *msg;
-
-#define CHECK_1_FORMAT(FORMAT, TYPE)                    \
-    result = PyString_FromFormat(FORMAT, (TYPE)1);      \
-    if (result == NULL)                                 \
-        return NULL;                                    \
-    if (strcmp(PyString_AsString(result), "1")) {       \
-        msg = FORMAT " failed at 1";                    \
-        goto Fail;                                      \
-    }                                                   \
-    Py_DECREF(result)
-
-    CHECK_1_FORMAT("%d", int);
-    CHECK_1_FORMAT("%ld", long);
-    /* The z width modifier was added in Python 2.5. */
-    CHECK_1_FORMAT("%zd", Py_ssize_t);
-
-    /* The u type code was added in Python 2.5. */
-    CHECK_1_FORMAT("%u", unsigned int);
-    CHECK_1_FORMAT("%lu", unsigned long);
-    CHECK_1_FORMAT("%zu", size_t);
-
-    /* "%lld" and "%llu" support added in Python 2.7. */
-#ifdef HAVE_LONG_LONG
-    CHECK_1_FORMAT("%llu", unsigned PY_LONG_LONG);
-    CHECK_1_FORMAT("%lld", PY_LONG_LONG);
-#endif
-
-    Py_RETURN_NONE;
-
- Fail:
-    Py_XDECREF(result);
-    return raiseTestError("test_string_from_format", msg);
-
-#undef CHECK_1_FORMAT
-}
-
-/* Coverage testing of capsule objects. */
-
-static const char *capsule_name = "capsule name";
-static       char *capsule_pointer = "capsule pointer";
-static       char *capsule_context = "capsule context";
-static const char *capsule_error = NULL;
-static int
-capsule_destructor_call_count = 0;
-
-static void
-capsule_destructor(PyObject *o) {
-    capsule_destructor_call_count++;
-    if (PyCapsule_GetContext(o) != capsule_context) {
-        capsule_error = "context did not match in destructor!";
-    } else if (PyCapsule_GetDestructor(o) != capsule_destructor) {
-        capsule_error = "destructor did not match in destructor!  (woah!)";
-    } else if (PyCapsule_GetName(o) != capsule_name) {
-        capsule_error = "name did not match in destructor!";
-    } else if (PyCapsule_GetPointer(o, capsule_name) != capsule_pointer) {
-        capsule_error = "pointer did not match in destructor!";
-    }
-}
-
-typedef struct {
-    char *name;
-    char *module;
-    char *attribute;
-} known_capsule;
-
-static PyObject *
-test_capsule(PyObject *self, PyObject *args)
-{
-    PyObject *object;
-    const char *error = NULL;
-    void *pointer;
-    void *pointer2;
-    known_capsule known_capsules[] = {
-        #define KNOWN_CAPSULE(module, name)             { module "." name, module, name }
-        KNOWN_CAPSULE("_socket", "CAPI"),
-        KNOWN_CAPSULE("_curses", "_C_API"),
-        KNOWN_CAPSULE("datetime", "datetime_CAPI"),
-        { NULL, NULL },
-    };
-    known_capsule *known = &known_capsules[0];
-
-#define FAIL(x) { error = (x); goto exit; }
-
-#define CHECK_DESTRUCTOR \
-    if (capsule_error) { \
-        FAIL(capsule_error); \
-    } \
-    else if (!capsule_destructor_call_count) {          \
-        FAIL("destructor not called!"); \
-    } \
-    capsule_destructor_call_count = 0; \
-
-    object = PyCapsule_New(capsule_pointer, capsule_name, capsule_destructor);
-    PyCapsule_SetContext(object, capsule_context);
-    capsule_destructor(object);
-    CHECK_DESTRUCTOR;
-    Py_DECREF(object);
-    CHECK_DESTRUCTOR;
-
-    object = PyCapsule_New(known, "ignored", NULL);
-    PyCapsule_SetPointer(object, capsule_pointer);
-    PyCapsule_SetName(object, capsule_name);
-    PyCapsule_SetDestructor(object, capsule_destructor);
-    PyCapsule_SetContext(object, capsule_context);
-    capsule_destructor(object);
-    CHECK_DESTRUCTOR;
-    /* intentionally access using the wrong name */
-    pointer2 = PyCapsule_GetPointer(object, "the wrong name");
-    if (!PyErr_Occurred()) {
-        FAIL("PyCapsule_GetPointer should have failed but did not!");
-    }
-    PyErr_Clear();
-    if (pointer2) {
-        if (pointer2 == capsule_pointer) {
-            FAIL("PyCapsule_GetPointer should not have"
-                     " returned the internal pointer!");
-        } else {
-            FAIL("PyCapsule_GetPointer should have "
-                     "returned NULL pointer but did not!");
-        }
-    }
-    PyCapsule_SetDestructor(object, NULL);
-    Py_DECREF(object);
-    if (capsule_destructor_call_count) {
-        FAIL("destructor called when it should not have been!");
-    }
-
-    for (known = &known_capsules[0]; known->module != NULL; known++) {
-        /* yeah, ordinarily I wouldn't do this either,
-           but it's fine for this test harness.
-        */
-        static char buffer[256];
-#undef FAIL
-#define FAIL(x) \
-        { \
-        sprintf(buffer, "%s module: \"%s\" attribute: \"%s\"", \
-            x, known->module, known->attribute); \
-        error = buffer; \
-        goto exit; \
-        } \
-
-        PyObject *module = PyImport_ImportModule(known->module);
-        if (module) {
-            pointer = PyCapsule_Import(known->name, 0);
-            if (!pointer) {
-                Py_DECREF(module);
-                FAIL("PyCapsule_GetPointer returned NULL unexpectedly!");
-            }
-            object = PyObject_GetAttrString(module, known->attribute);
-            if (!object) {
-                Py_DECREF(module);
-                return NULL;
-            }
-            pointer2 = PyCapsule_GetPointer(object,
-                                    "weebles wobble but they don't fall down");
-            if (!PyErr_Occurred()) {
-                Py_DECREF(object);
-                Py_DECREF(module);
-                FAIL("PyCapsule_GetPointer should have failed but did not!");
-            }
-            PyErr_Clear();
-            if (pointer2) {
-                Py_DECREF(module);
-                Py_DECREF(object);
-                if (pointer2 == pointer) {
-                    FAIL("PyCapsule_GetPointer should not have"
-                             " returned its internal pointer!");
-                } else {
-                    FAIL("PyCapsule_GetPointer should have"
-                             " returned NULL pointer but did not!");
-                }
-            }
-            Py_DECREF(object);
-            Py_DECREF(module);
-        }
-        else
-            PyErr_Clear();
-    }
-
-  exit:
-    if (error) {
-        return raiseTestError("test_capsule", error);
-    }
-    Py_RETURN_NONE;
-#undef FAIL
-}
-
-/* This is here to provide a docstring for test_descr. */
-static PyObject *
-test_with_docstring(PyObject *self)
-{
-    Py_RETURN_NONE;
-}
-
-/* To test the format of tracebacks as printed out. */
-static PyObject *
-traceback_print(PyObject *self, PyObject *args)
-{
-    PyObject *file;
-    PyObject *traceback;
-    int result;
-
-    if (!PyArg_ParseTuple(args, "OO:traceback_print",
-                            &traceback, &file))
-        return NULL;
-
-    result = PyTraceBack_Print(traceback, file);
-    if (result < 0)
-        return NULL;
-    Py_RETURN_NONE;
-}
-
-/* To test that the result of PyCode_NewEmpty has the right members. */
-static PyObject *
-code_newempty(PyObject *self, PyObject *args)
-{
-    const char *filename;
-    const char *funcname;
-    int firstlineno;
-
-    if (!PyArg_ParseTuple(args, "ssi:code_newempty",
-                          &filename, &funcname, &firstlineno))
-        return NULL;
-
-    return (PyObject *)PyCode_NewEmpty(filename, funcname, firstlineno);
-}
-
-/* Test PyErr_NewExceptionWithDoc (also exercise PyErr_NewException).
-   Run via Lib/test/test_exceptions.py */
-static PyObject *
-make_exception_with_doc(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    char *name;
-    char *doc = NULL;
-    PyObject *base = NULL;
-    PyObject *dict = NULL;
-
-    static char *kwlist[] = {"name", "doc", "base", "dict", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                    "s|sOO:make_exception_with_doc", kwlist,
-                                     &name, &doc, &base, &dict))
-        return NULL;
-
-    return PyErr_NewExceptionWithDoc(name, doc, base, dict);
-}
-
-static PyMethodDef TestMethods[] = {
-    {"raise_exception",         raise_exception,                 METH_VARARGS},
-    {"test_config",             (PyCFunction)test_config,        METH_NOARGS},
-    {"test_datetime_capi",  test_datetime_capi,              METH_NOARGS},
-    {"test_list_api",           (PyCFunction)test_list_api,      METH_NOARGS},
-    {"test_dict_iteration",     (PyCFunction)test_dict_iteration,METH_NOARGS},
-    {"test_lazy_hash_inheritance",      (PyCFunction)test_lazy_hash_inheritance,METH_NOARGS},
-    {"test_broken_memoryview",          (PyCFunction)test_broken_memoryview,METH_NOARGS},
-    {"test_long_api",           (PyCFunction)test_long_api,      METH_NOARGS},
-    {"test_long_and_overflow", (PyCFunction)test_long_and_overflow,
-     METH_NOARGS},
-    {"test_long_numbits",       (PyCFunction)test_long_numbits,  METH_NOARGS},
-    {"test_k_code",             (PyCFunction)test_k_code,        METH_NOARGS},
-    {"test_empty_argparse", (PyCFunction)test_empty_argparse,METH_NOARGS},
-    {"test_null_strings",       (PyCFunction)test_null_strings,  METH_NOARGS},
-    {"test_string_from_format", (PyCFunction)test_string_from_format, METH_NOARGS},
-    {"test_with_docstring", (PyCFunction)test_with_docstring, METH_NOARGS,
-     PyDoc_STR("This is a pretty normal docstring.")},
-
-    {"getargs_tuple",           getargs_tuple,                   METH_VARARGS},
-    {"getargs_keywords", (PyCFunction)getargs_keywords,
-      METH_VARARGS|METH_KEYWORDS},
-    {"getargs_b",               getargs_b,                       METH_VARARGS},
-    {"getargs_B",               getargs_B,                       METH_VARARGS},
-    {"getargs_h",               getargs_h,                       METH_VARARGS},
-    {"getargs_H",               getargs_H,                       METH_VARARGS},
-    {"getargs_I",               getargs_I,                       METH_VARARGS},
-    {"getargs_k",               getargs_k,                       METH_VARARGS},
-    {"getargs_i",               getargs_i,                       METH_VARARGS},
-    {"getargs_l",               getargs_l,                       METH_VARARGS},
-    {"getargs_n",               getargs_n,                       METH_VARARGS},
-#ifdef HAVE_LONG_LONG
-    {"getargs_L",               getargs_L,                       METH_VARARGS},
-    {"getargs_K",               getargs_K,                       METH_VARARGS},
-    {"test_longlong_api",       test_longlong_api,               METH_NOARGS},
-    {"test_long_long_and_overflow",
-        (PyCFunction)test_long_long_and_overflow, METH_NOARGS},
-    {"test_L_code",             (PyCFunction)test_L_code,        METH_NOARGS},
-    {"codec_incrementalencoder",
-     (PyCFunction)codec_incrementalencoder,      METH_VARARGS},
-    {"codec_incrementaldecoder",
-     (PyCFunction)codec_incrementaldecoder,      METH_VARARGS},
-#endif
-#ifdef Py_USING_UNICODE
-    {"test_u_code",             (PyCFunction)test_u_code,        METH_NOARGS},
-    {"test_widechar",           (PyCFunction)test_widechar,      METH_NOARGS},
-#endif
-#ifdef WITH_THREAD
-    {"_test_thread_state",  test_thread_state,                   METH_VARARGS},
-    {"_pending_threadfunc",     pending_threadfunc,              METH_VARARGS},
-#endif
-    {"test_capsule", (PyCFunction)test_capsule, METH_NOARGS},
-    {"traceback_print", traceback_print,                 METH_VARARGS},
-    {"code_newempty", code_newempty,                     METH_VARARGS},
-    {"make_exception_with_doc", (PyCFunction)make_exception_with_doc,
-     METH_VARARGS | METH_KEYWORDS},
-    {NULL, NULL} /* sentinel */
-};
-
-#define AddSym(d, n, f, v) {PyObject *o = f(v); PyDict_SetItemString(d, n, o); Py_DECREF(o);}
-
-typedef struct {
-    char bool_member;
-    char byte_member;
-    unsigned char ubyte_member;
-    short short_member;
-    unsigned short ushort_member;
-    int int_member;
-    unsigned int uint_member;
-    long long_member;
-    unsigned long ulong_member;
-    float float_member;
-    double double_member;
-    char inplace_member[6];
-#ifdef HAVE_LONG_LONG
-    PY_LONG_LONG longlong_member;
-    unsigned PY_LONG_LONG ulonglong_member;
-#endif
-} all_structmembers;
-
-typedef struct {
-    PyObject_HEAD
-    all_structmembers structmembers;
-} test_structmembers;
-
-static struct PyMemberDef test_members[] = {
-    {"T_BOOL", T_BOOL, offsetof(test_structmembers, structmembers.bool_member), 0, NULL},
-    {"T_BYTE", T_BYTE, offsetof(test_structmembers, structmembers.byte_member), 0, NULL},
-    {"T_UBYTE", T_UBYTE, offsetof(test_structmembers, structmembers.ubyte_member), 0, NULL},
-    {"T_SHORT", T_SHORT, offsetof(test_structmembers, structmembers.short_member), 0, NULL},
-    {"T_USHORT", T_USHORT, offsetof(test_structmembers, structmembers.ushort_member), 0, NULL},
-    {"T_INT", T_INT, offsetof(test_structmembers, structmembers.int_member), 0, NULL},
-    {"T_UINT", T_UINT, offsetof(test_structmembers, structmembers.uint_member), 0, NULL},
-    {"T_LONG", T_LONG, offsetof(test_structmembers, structmembers.long_member), 0, NULL},
-    {"T_ULONG", T_ULONG, offsetof(test_structmembers, structmembers.ulong_member), 0, NULL},
-    {"T_FLOAT", T_FLOAT, offsetof(test_structmembers, structmembers.float_member), 0, NULL},
-    {"T_DOUBLE", T_DOUBLE, offsetof(test_structmembers, structmembers.double_member), 0, NULL},
-    {"T_STRING_INPLACE", T_STRING_INPLACE, offsetof(test_structmembers, structmembers.inplace_member), 0, NULL},
-#ifdef HAVE_LONG_LONG
-    {"T_LONGLONG", T_LONGLONG, offsetof(test_structmembers, structmembers.longlong_member), 0, NULL},
-    {"T_ULONGLONG", T_ULONGLONG, offsetof(test_structmembers, structmembers.ulonglong_member), 0, NULL},
-#endif
-    {NULL}
-};
-
-
-static PyObject *
-test_structmembers_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
-{
-    static char *keywords[] = {
-        "T_BOOL", "T_BYTE", "T_UBYTE", "T_SHORT", "T_USHORT",
-        "T_INT", "T_UINT", "T_LONG", "T_ULONG",
-        "T_FLOAT", "T_DOUBLE", "T_STRING_INPLACE",
-#ifdef HAVE_LONG_LONG
-        "T_LONGLONG", "T_ULONGLONG",
-#endif
-        NULL};
-    static char *fmt = "|bbBhHiIlkfds#"
-#ifdef HAVE_LONG_LONG
-        "LK"
-#endif
-        ;
-    test_structmembers *ob;
-    const char *s = NULL;
-    Py_ssize_t string_len = 0;
-    ob = PyObject_New(test_structmembers, type);
-    if (ob == NULL)
-        return NULL;
-    memset(&ob->structmembers, 0, sizeof(all_structmembers));
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, fmt, keywords,
-                                     &ob->structmembers.bool_member,
-                                     &ob->structmembers.byte_member,
-                                     &ob->structmembers.ubyte_member,
-                                     &ob->structmembers.short_member,
-                                     &ob->structmembers.ushort_member,
-                                     &ob->structmembers.int_member,
-                                     &ob->structmembers.uint_member,
-                                     &ob->structmembers.long_member,
-                                     &ob->structmembers.ulong_member,
-                                     &ob->structmembers.float_member,
-                                     &ob->structmembers.double_member,
-                                     &s, &string_len
-#ifdef HAVE_LONG_LONG
-                                     , &ob->structmembers.longlong_member,
-                                     &ob->structmembers.ulonglong_member
-#endif
-        )) {
-        Py_DECREF(ob);
-        return NULL;
-    }
-    if (s != NULL) {
-        if (string_len > 5) {
-            Py_DECREF(ob);
-            PyErr_SetString(PyExc_ValueError, "string too long");
-            return NULL;
-        }
-        strcpy(ob->structmembers.inplace_member, s);
-    }
-    else {
-        strcpy(ob->structmembers.inplace_member, "");
-    }
-    return (PyObject *)ob;
-}
-
-static void
-test_structmembers_free(PyObject *ob)
-{
-    PyObject_FREE(ob);
-}
-
-static PyTypeObject test_structmembersType = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "test_structmembersType",
-    sizeof(test_structmembers),         /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    test_structmembers_free,            /* destructor 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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    PyObject_GenericSetAttr,            /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    0,                                  /* tp_flags */
-    "Type containing all structmember types",
-    0,                                  /* traverseproc tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iternext */
-    0,                                  /* tp_methods */
-    test_members,                       /* tp_members */
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    test_structmembers_new,             /* tp_new */
-};
-
-
-PyMODINIT_FUNC
-init_testcapi(void)
-{
-    PyObject *m;
-
-    m = Py_InitModule("_testcapi", TestMethods);
-    if (m == NULL)
-        return;
-
-    Py_TYPE(&_HashInheritanceTester_Type)=&PyType_Type;
-
-    Py_TYPE(&test_structmembersType)=&PyType_Type;
-    Py_INCREF(&test_structmembersType);
-    /* don't use a name starting with "test", since we don't want
-       test_capi to automatically call this */
-    PyModule_AddObject(m, "_test_structmembersType", (PyObject *)&test_structmembersType);
-
-    PyModule_AddObject(m, "CHAR_MAX", PyInt_FromLong(CHAR_MAX));
-    PyModule_AddObject(m, "CHAR_MIN", PyInt_FromLong(CHAR_MIN));
-    PyModule_AddObject(m, "UCHAR_MAX", PyInt_FromLong(UCHAR_MAX));
-    PyModule_AddObject(m, "SHRT_MAX", PyInt_FromLong(SHRT_MAX));
-    PyModule_AddObject(m, "SHRT_MIN", PyInt_FromLong(SHRT_MIN));
-    PyModule_AddObject(m, "USHRT_MAX", PyInt_FromLong(USHRT_MAX));
-    PyModule_AddObject(m, "INT_MAX",  PyLong_FromLong(INT_MAX));
-    PyModule_AddObject(m, "INT_MIN",  PyLong_FromLong(INT_MIN));
-    PyModule_AddObject(m, "UINT_MAX",  PyLong_FromUnsignedLong(UINT_MAX));
-    PyModule_AddObject(m, "LONG_MAX", PyInt_FromLong(LONG_MAX));
-    PyModule_AddObject(m, "LONG_MIN", PyInt_FromLong(LONG_MIN));
-    PyModule_AddObject(m, "ULONG_MAX", PyLong_FromUnsignedLong(ULONG_MAX));
-    PyModule_AddObject(m, "FLT_MAX", PyFloat_FromDouble(FLT_MAX));
-    PyModule_AddObject(m, "FLT_MIN", PyFloat_FromDouble(FLT_MIN));
-    PyModule_AddObject(m, "DBL_MAX", PyFloat_FromDouble(DBL_MAX));
-    PyModule_AddObject(m, "DBL_MIN", PyFloat_FromDouble(DBL_MIN));
-    PyModule_AddObject(m, "LLONG_MAX", PyLong_FromLongLong(PY_LLONG_MAX));
-    PyModule_AddObject(m, "LLONG_MIN", PyLong_FromLongLong(PY_LLONG_MIN));
-    PyModule_AddObject(m, "ULLONG_MAX", PyLong_FromUnsignedLongLong(PY_ULLONG_MAX));
-    PyModule_AddObject(m, "PY_SSIZE_T_MAX", PyInt_FromSsize_t(PY_SSIZE_T_MAX));
-    PyModule_AddObject(m, "PY_SSIZE_T_MIN", PyInt_FromSsize_t(PY_SSIZE_T_MIN));
-    PyModule_AddObject(m, "SIZEOF_PYGC_HEAD", PyInt_FromSsize_t(sizeof(PyGC_Head)));
-
-    TestError = PyErr_NewException("_testcapi.error", NULL, NULL);
-    Py_INCREF(TestError);
-    PyModule_AddObject(m, "error", TestError);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/_weakref.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/_weakref.c
deleted file mode 100644
index 087cc92..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/_weakref.c
+++ /dev/null
@@ -1,112 +0,0 @@
-#include "Python.h"
-
-
-#define GET_WEAKREFS_LISTPTR(o) \
-        ((PyWeakReference **) PyObject_GET_WEAKREFS_LISTPTR(o))
-
-
-PyDoc_STRVAR(weakref_getweakrefcount__doc__,
-"getweakrefcount(object) -- return the number of weak references\n"
-"to 'object'.");
-
-static PyObject *
-weakref_getweakrefcount(PyObject *self, PyObject *object)
-{
-    PyObject *result = NULL;
-
-    if (PyType_SUPPORTS_WEAKREFS(Py_TYPE(object))) {
-        PyWeakReference **list = GET_WEAKREFS_LISTPTR(object);
-
-        result = PyInt_FromSsize_t(_PyWeakref_GetWeakrefCount(*list));
-    }
-    else
-        result = PyInt_FromLong(0);
-
-    return result;
-}
-
-
-PyDoc_STRVAR(weakref_getweakrefs__doc__,
-"getweakrefs(object) -- return a list of all weak reference objects\n"
-"that point to 'object'.");
-
-static PyObject *
-weakref_getweakrefs(PyObject *self, PyObject *object)
-{
-    PyObject *result = NULL;
-
-    if (PyType_SUPPORTS_WEAKREFS(Py_TYPE(object))) {
-        PyWeakReference **list = GET_WEAKREFS_LISTPTR(object);
-        Py_ssize_t count = _PyWeakref_GetWeakrefCount(*list);
-
-        result = PyList_New(count);
-        if (result != NULL) {
-            PyWeakReference *current = *list;
-            Py_ssize_t i;
-            for (i = 0; i < count; ++i) {
-                PyList_SET_ITEM(result, i, (PyObject *) current);
-                Py_INCREF(current);
-                current = current->wr_next;
-            }
-        }
-    }
-    else {
-        result = PyList_New(0);
-    }
-    return result;
-}
-
-
-PyDoc_STRVAR(weakref_proxy__doc__,
-"proxy(object[, callback]) -- create a proxy object that weakly\n"
-"references 'object'.  'callback', if given, is called with a\n"
-"reference to the proxy when 'object' is about to be finalized.");
-
-static PyObject *
-weakref_proxy(PyObject *self, PyObject *args)
-{
-    PyObject *object;
-    PyObject *callback = NULL;
-    PyObject *result = NULL;
-
-    if (PyArg_UnpackTuple(args, "proxy", 1, 2, &object, &callback)) {
-        result = PyWeakref_NewProxy(object, callback);
-    }
-    return result;
-}
-
-
-static PyMethodDef
-weakref_functions[] =  {
-    {"getweakrefcount", weakref_getweakrefcount,        METH_O,
-     weakref_getweakrefcount__doc__},
-    {"getweakrefs",     weakref_getweakrefs,            METH_O,
-     weakref_getweakrefs__doc__},
-    {"proxy",           weakref_proxy,                  METH_VARARGS,
-     weakref_proxy__doc__},
-    {NULL, NULL, 0, NULL}
-};
-
-
-PyMODINIT_FUNC
-init_weakref(void)
-{
-    PyObject *m;
-
-    m = Py_InitModule3("_weakref", weakref_functions,
-                       "Weak-reference support module.");
-    if (m != NULL) {
-        Py_INCREF(&_PyWeakref_RefType);
-        PyModule_AddObject(m, "ref",
-                           (PyObject *) &_PyWeakref_RefType);
-        Py_INCREF(&_PyWeakref_RefType);
-        PyModule_AddObject(m, "ReferenceType",
-                           (PyObject *) &_PyWeakref_RefType);
-        Py_INCREF(&_PyWeakref_ProxyType);
-        PyModule_AddObject(m, "ProxyType",
-                           (PyObject *) &_PyWeakref_ProxyType);
-        Py_INCREF(&_PyWeakref_CallableProxyType);
-        PyModule_AddObject(m, "CallableProxyType",
-                           (PyObject *) &_PyWeakref_CallableProxyType);
-    }
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/addrinfo.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/addrinfo.h
deleted file mode 100644
index 2b35385..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/addrinfo.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef HAVE_GETADDRINFO
-
-/*
- * Error return codes from getaddrinfo()
- */
-#ifdef EAI_ADDRFAMILY
-/* If this is defined, there is a conflicting implementation
-   in the C library, which can't be used for some reason.
-   Make sure it won't interfere with this emulation. */
-
-#undef EAI_ADDRFAMILY
-#undef EAI_AGAIN
-#undef EAI_BADFLAGS
-#undef EAI_FAIL
-#undef EAI_FAMILY
-#undef EAI_MEMORY
-#undef EAI_NODATA
-#undef EAI_NONAME
-#undef EAI_SERVICE
-#undef EAI_SOCKTYPE
-#undef EAI_SYSTEM
-#undef EAI_BADHINTS
-#undef EAI_PROTOCOL
-#undef EAI_MAX
-#undef getaddrinfo
-#define getaddrinfo fake_getaddrinfo
-#endif /* EAI_ADDRFAMILY */
-
-#define EAI_ADDRFAMILY   1      /* address family for hostname not supported */
-#define EAI_AGAIN        2      /* temporary failure in name resolution */
-#define EAI_BADFLAGS     3      /* invalid value for ai_flags */
-#define EAI_FAIL         4      /* non-recoverable failure in name resolution */
-#define EAI_FAMILY       5      /* ai_family not supported */
-#define EAI_MEMORY       6      /* memory allocation failure */
-#define EAI_NODATA       7      /* no address associated with hostname */
-#define EAI_NONAME       8      /* hostname nor servname provided, or not known */
-#define EAI_SERVICE      9      /* servname not supported for ai_socktype */
-#define EAI_SOCKTYPE    10      /* ai_socktype not supported */
-#define EAI_SYSTEM      11      /* system error returned in errno */
-#define EAI_BADHINTS    12
-#define EAI_PROTOCOL    13
-#define EAI_MAX         14
-
-/*
- * Flag values for getaddrinfo()
- */
-#ifdef AI_PASSIVE
-#undef AI_PASSIVE
-#undef AI_CANONNAME
-#undef AI_NUMERICHOST
-#undef AI_MASK
-#undef AI_ALL
-#undef AI_V4MAPPED_CFG
-#undef AI_ADDRCONFIG
-#undef AI_V4MAPPED
-#undef AI_DEFAULT
-#endif /* AI_PASSIVE */
-
-#define AI_PASSIVE      0x00000001 /* get address to use bind() */
-#define AI_CANONNAME    0x00000002 /* fill ai_canonname */
-#define AI_NUMERICHOST  0x00000004 /* prevent name resolution */
-/* valid flags for addrinfo */
-#define AI_MASK         (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST)
-
-#define AI_ALL          0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */
-#define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */
-#define AI_ADDRCONFIG   0x00000400 /* only if any address is assigned */
-#define AI_V4MAPPED     0x00000800 /* accept IPv4-mapped IPv6 address */
-/* special recommended flags for getipnodebyname */
-#define AI_DEFAULT      (AI_V4MAPPED_CFG | AI_ADDRCONFIG)
-
-#endif /* !HAVE_GETADDRINFO */
-
-#ifndef HAVE_GETNAMEINFO
-
-/*
- * Constants for getnameinfo()
- */
-#ifndef NI_MAXHOST
-#define NI_MAXHOST      1025
-#define NI_MAXSERV      32
-#endif /* !NI_MAXHOST */
-
-/*
- * Flag values for getnameinfo()
- */
-#ifndef NI_NOFQDN
-#define NI_NOFQDN       0x00000001
-#define NI_NUMERICHOST  0x00000002
-#define NI_NAMEREQD     0x00000004
-#define NI_NUMERICSERV  0x00000008
-#define NI_DGRAM        0x00000010
-#endif /* !NI_NOFQDN */
-
-#endif /* !HAVE_GETNAMEINFO */
-
-#ifndef _SYS_SOCKET_H_
-  #ifndef HAVE_ADDRINFO
-    struct addrinfo {
-        int         ai_flags;       /* AI_PASSIVE, AI_CANONNAME */
-        int         ai_family;      /* PF_xxx */
-        int         ai_socktype;    /* SOCK_xxx */
-        int         ai_protocol;    /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
-        size_t      ai_addrlen;     /* length of ai_addr */
-        char        *ai_canonname;  /* canonical name for hostname */
-        struct sockaddr *ai_addr;           /* binary address */
-        struct addrinfo *ai_next;           /* next structure in linked list */
-    };
-  #endif /* !HAVE_ADDRINFO */
-
-  #ifndef HAVE_SOCKADDR_STORAGE
-    /*
-     * RFC 2553: protocol-independent placeholder for socket addresses
-     */
-    #define _SS_MAXSIZE     128
-    #ifdef HAVE_LONG_LONG
-      #define _SS_ALIGNSIZE   (sizeof(PY_LONG_LONG))
-    #else
-      #define _SS_ALIGNSIZE   (sizeof(double))
-    #endif /* HAVE_LONG_LONG */
-    #define _SS_PAD1SIZE    (_SS_ALIGNSIZE - sizeof(u_char) * 2)
-    #define _SS_PAD2SIZE    (_SS_MAXSIZE - sizeof(u_char) * 2 - \
-                    _SS_PAD1SIZE - _SS_ALIGNSIZE)
-
-    struct sockaddr_storage {
-    #ifdef HAVE_SOCKADDR_SA_LEN
-        unsigned char ss_len;               /* address length */
-        unsigned char ss_family;            /* address family */
-    #else
-        unsigned short ss_family;           /* address family */
-    #endif /* HAVE_SOCKADDR_SA_LEN */
-        char        __ss_pad1[_SS_PAD1SIZE];
-    #ifdef HAVE_LONG_LONG
-        PY_LONG_LONG __ss_align;            /* force desired structure storage alignment */
-    #else
-        double __ss_align;          /* force desired structure storage alignment */
-    #endif /* HAVE_LONG_LONG */
-        char        __ss_pad2[_SS_PAD2SIZE];
-    };
-  #endif  /* !HAVE_SOCKADDR_STORAGE */
-#endif  /* _SYS_SOCKET_H_ */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-extern void freehostent Py_PROTO((struct hostent *));
-#ifdef __cplusplus
-}
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/arraymodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/arraymodule.c
deleted file mode 100644
index 6e94757..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/arraymodule.c
+++ /dev/null
@@ -1,2246 +0,0 @@
-/* Array object implementation */
-
-/* An array is a uniform list -- all items have the same type.
-   The item type is restricted to simple C types like int or float */
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#include "structmember.h"
-
-#ifdef STDC_HEADERS
-#include <stddef.h>
-#else /* !STDC_HEADERS */
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>          /* For size_t */
-#endif /* HAVE_SYS_TYPES_H */
-#endif /* !STDC_HEADERS */
-
-struct arrayobject; /* Forward */
-
-/* All possible arraydescr values are defined in the vector "descriptors"
- * below.  That's defined later because the appropriate get and set
- * functions aren't visible yet.
- */
-struct arraydescr {
-    int typecode;
-    int itemsize;
-    PyObject * (*getitem)(struct arrayobject *, Py_ssize_t);
-    int (*setitem)(struct arrayobject *, Py_ssize_t, PyObject *);
-};
-
-typedef struct arrayobject {
-    PyObject_VAR_HEAD
-    char *ob_item;
-    Py_ssize_t allocated;
-    struct arraydescr *ob_descr;
-    PyObject *weakreflist; /* List of weak references */
-} arrayobject;
-
-static PyTypeObject Arraytype;
-
-#define array_Check(op) PyObject_TypeCheck(op, &Arraytype)
-#define array_CheckExact(op) (Py_TYPE(op) == &Arraytype)
-
-static int
-array_resize(arrayobject *self, Py_ssize_t newsize)
-{
-    char *items;
-    size_t _new_size;
-
-    /* Bypass realloc() when a previous overallocation is large enough
-       to accommodate the newsize.  If the newsize is 16 smaller than the
-       current size, then proceed with the realloc() to shrink the list.
-    */
-
-    if (self->allocated >= newsize &&
-        Py_SIZE(self) < newsize + 16 &&
-        self->ob_item != NULL) {
-        Py_SIZE(self) = newsize;
-        return 0;
-    }
-
-    /* This over-allocates proportional to the array size, making room
-     * for additional growth.  The over-allocation is mild, but is
-     * enough to give linear-time amortized behavior over a long
-     * sequence of appends() in the presence of a poorly-performing
-     * system realloc().
-     * The growth pattern is:  0, 4, 8, 16, 25, 34, 46, 56, 67, 79, ...
-     * Note, the pattern starts out the same as for lists but then
-     * grows at a smaller rate so that larger arrays only overallocate
-     * by about 1/16th -- this is done because arrays are presumed to be more
-     * memory critical.
-     */
-
-    _new_size = (newsize >> 4) + (Py_SIZE(self) < 8 ? 3 : 7) + newsize;
-    items = self->ob_item;
-    /* XXX The following multiplication and division does not optimize away
-       like it does for lists since the size is not known at compile time */
-    if (_new_size <= ((~(size_t)0) / self->ob_descr->itemsize))
-        PyMem_RESIZE(items, char, (_new_size * self->ob_descr->itemsize));
-    else
-        items = NULL;
-    if (items == NULL) {
-        PyErr_NoMemory();
-        return -1;
-    }
-    self->ob_item = items;
-    Py_SIZE(self) = newsize;
-    self->allocated = _new_size;
-    return 0;
-}
-
-/****************************************************************************
-Get and Set functions for each type.
-A Get function takes an arrayobject* and an integer index, returning the
-array value at that index wrapped in an appropriate PyObject*.
-A Set function takes an arrayobject, integer index, and PyObject*; sets
-the array value at that index to the raw C data extracted from the PyObject*,
-and returns 0 if successful, else nonzero on failure (PyObject* not of an
-appropriate type or value).
-Note that the basic Get and Set functions do NOT check that the index is
-in bounds; that's the responsibility of the caller.
-****************************************************************************/
-
-static PyObject *
-c_getitem(arrayobject *ap, Py_ssize_t i)
-{
-    return PyString_FromStringAndSize(&((char *)ap->ob_item)[i], 1);
-}
-
-static int
-c_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
-{
-    char x;
-    if (!PyArg_Parse(v, "c;array item must be char", &x))
-        return -1;
-    if (i >= 0)
-        ((char *)ap->ob_item)[i] = x;
-    return 0;
-}
-
-static PyObject *
-b_getitem(arrayobject *ap, Py_ssize_t i)
-{
-    long x = ((char *)ap->ob_item)[i];
-    if (x >= 128)
-        x -= 256;
-    return PyInt_FromLong(x);
-}
-
-static int
-b_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
-{
-    short x;
-    /* PyArg_Parse's 'b' formatter is for an unsigned char, therefore
-       must use the next size up that is signed ('h') and manually do
-       the overflow checking */
-    if (!PyArg_Parse(v, "h;array item must be integer", &x))
-        return -1;
-    else if (x < -128) {
-        PyErr_SetString(PyExc_OverflowError,
-            "signed char is less than minimum");
-        return -1;
-    }
-    else if (x > 127) {
-        PyErr_SetString(PyExc_OverflowError,
-            "signed char is greater than maximum");
-        return -1;
-    }
-    if (i >= 0)
-        ((char *)ap->ob_item)[i] = (char)x;
-    return 0;
-}
-
-static PyObject *
-BB_getitem(arrayobject *ap, Py_ssize_t i)
-{
-    long x = ((unsigned char *)ap->ob_item)[i];
-    return PyInt_FromLong(x);
-}
-
-static int
-BB_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
-{
-    unsigned char x;
-    /* 'B' == unsigned char, maps to PyArg_Parse's 'b' formatter */
-    if (!PyArg_Parse(v, "b;array item must be integer", &x))
-        return -1;
-    if (i >= 0)
-        ((char *)ap->ob_item)[i] = x;
-    return 0;
-}
-
-#ifdef Py_USING_UNICODE
-static PyObject *
-u_getitem(arrayobject *ap, Py_ssize_t i)
-{
-    return PyUnicode_FromUnicode(&((Py_UNICODE *) ap->ob_item)[i], 1);
-}
-
-static int
-u_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
-{
-    Py_UNICODE *p;
-    Py_ssize_t len;
-
-    if (!PyArg_Parse(v, "u#;array item must be unicode character", &p, &len))
-        return -1;
-    if (len != 1) {
-        PyErr_SetString(PyExc_TypeError,
-                        "array item must be unicode character");
-        return -1;
-    }
-    if (i >= 0)
-        ((Py_UNICODE *)ap->ob_item)[i] = p[0];
-    return 0;
-}
-#endif
-
-static PyObject *
-h_getitem(arrayobject *ap, Py_ssize_t i)
-{
-    return PyInt_FromLong((long) ((short *)ap->ob_item)[i]);
-}
-
-static int
-h_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
-{
-    short x;
-    /* 'h' == signed short, maps to PyArg_Parse's 'h' formatter */
-    if (!PyArg_Parse(v, "h;array item must be integer", &x))
-        return -1;
-    if (i >= 0)
-                 ((short *)ap->ob_item)[i] = x;
-    return 0;
-}
-
-static PyObject *
-HH_getitem(arrayobject *ap, Py_ssize_t i)
-{
-    return PyInt_FromLong((long) ((unsigned short *)ap->ob_item)[i]);
-}
-
-static int
-HH_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
-{
-    int x;
-    /* PyArg_Parse's 'h' formatter is for a signed short, therefore
-       must use the next size up and manually do the overflow checking */
-    if (!PyArg_Parse(v, "i;array item must be integer", &x))
-        return -1;
-    else if (x < 0) {
-        PyErr_SetString(PyExc_OverflowError,
-            "unsigned short is less than minimum");
-        return -1;
-    }
-    else if (x > USHRT_MAX) {
-        PyErr_SetString(PyExc_OverflowError,
-            "unsigned short is greater than maximum");
-        return -1;
-    }
-    if (i >= 0)
-        ((short *)ap->ob_item)[i] = (short)x;
-    return 0;
-}
-
-static PyObject *
-i_getitem(arrayobject *ap, Py_ssize_t i)
-{
-    return PyInt_FromLong((long) ((int *)ap->ob_item)[i]);
-}
-
-static int
-i_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
-{
-    int x;
-    /* 'i' == signed int, maps to PyArg_Parse's 'i' formatter */
-    if (!PyArg_Parse(v, "i;array item must be integer", &x))
-        return -1;
-    if (i >= 0)
-                 ((int *)ap->ob_item)[i] = x;
-    return 0;
-}
-
-static PyObject *
-II_getitem(arrayobject *ap, Py_ssize_t i)
-{
-    return PyLong_FromUnsignedLong(
-        (unsigned long) ((unsigned int *)ap->ob_item)[i]);
-}
-
-static int
-II_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
-{
-    unsigned long x;
-    if (PyLong_Check(v)) {
-        x = PyLong_AsUnsignedLong(v);
-        if (x == (unsigned long) -1 && PyErr_Occurred())
-            return -1;
-    }
-    else {
-        long y;
-        if (!PyArg_Parse(v, "l;array item must be integer", &y))
-            return -1;
-        if (y < 0) {
-            PyErr_SetString(PyExc_OverflowError,
-                "unsigned int is less than minimum");
-            return -1;
-        }
-        x = (unsigned long)y;
-
-    }
-    if (x > UINT_MAX) {
-        PyErr_SetString(PyExc_OverflowError,
-            "unsigned int is greater than maximum");
-        return -1;
-    }
-
-    if (i >= 0)
-        ((unsigned int *)ap->ob_item)[i] = (unsigned int)x;
-    return 0;
-}
-
-static PyObject *
-l_getitem(arrayobject *ap, Py_ssize_t i)
-{
-    return PyInt_FromLong(((long *)ap->ob_item)[i]);
-}
-
-static int
-l_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
-{
-    long x;
-    if (!PyArg_Parse(v, "l;array item must be integer", &x))
-        return -1;
-    if (i >= 0)
-                 ((long *)ap->ob_item)[i] = x;
-    return 0;
-}
-
-static PyObject *
-LL_getitem(arrayobject *ap, Py_ssize_t i)
-{
-    return PyLong_FromUnsignedLong(((unsigned long *)ap->ob_item)[i]);
-}
-
-static int
-LL_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
-{
-    unsigned long x;
-    if (PyLong_Check(v)) {
-        x = PyLong_AsUnsignedLong(v);
-        if (x == (unsigned long) -1 && PyErr_Occurred())
-            return -1;
-    }
-    else {
-        long y;
-        if (!PyArg_Parse(v, "l;array item must be integer", &y))
-            return -1;
-        if (y < 0) {
-            PyErr_SetString(PyExc_OverflowError,
-                "unsigned long is less than minimum");
-            return -1;
-        }
-        x = (unsigned long)y;
-
-    }
-    if (x > ULONG_MAX) {
-        PyErr_SetString(PyExc_OverflowError,
-            "unsigned long is greater than maximum");
-        return -1;
-    }
-
-    if (i >= 0)
-        ((unsigned long *)ap->ob_item)[i] = x;
-    return 0;
-}
-
-static PyObject *
-f_getitem(arrayobject *ap, Py_ssize_t i)
-{
-    return PyFloat_FromDouble((double) ((float *)ap->ob_item)[i]);
-}
-
-static int
-f_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
-{
-    float x;
-    if (!PyArg_Parse(v, "f;array item must be float", &x))
-        return -1;
-    if (i >= 0)
-                 ((float *)ap->ob_item)[i] = x;
-    return 0;
-}
-
-static PyObject *
-d_getitem(arrayobject *ap, Py_ssize_t i)
-{
-    return PyFloat_FromDouble(((double *)ap->ob_item)[i]);
-}
-
-static int
-d_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
-{
-    double x;
-    if (!PyArg_Parse(v, "d;array item must be float", &x))
-        return -1;
-    if (i >= 0)
-                 ((double *)ap->ob_item)[i] = x;
-    return 0;
-}
-
-/* Description of types */
-static struct arraydescr descriptors[] = {
-    {'c', sizeof(char), c_getitem, c_setitem},
-    {'b', sizeof(char), b_getitem, b_setitem},
-    {'B', sizeof(char), BB_getitem, BB_setitem},
-#ifdef Py_USING_UNICODE
-    {'u', sizeof(Py_UNICODE), u_getitem, u_setitem},
-#endif
-    {'h', sizeof(short), h_getitem, h_setitem},
-    {'H', sizeof(short), HH_getitem, HH_setitem},
-    {'i', sizeof(int), i_getitem, i_setitem},
-    {'I', sizeof(int), II_getitem, II_setitem},
-    {'l', sizeof(long), l_getitem, l_setitem},
-    {'L', sizeof(long), LL_getitem, LL_setitem},
-    {'f', sizeof(float), f_getitem, f_setitem},
-    {'d', sizeof(double), d_getitem, d_setitem},
-    {'\0', 0, 0, 0} /* Sentinel */
-};
-
-/****************************************************************************
-Implementations of array object methods.
-****************************************************************************/
-
-static PyObject *
-newarrayobject(PyTypeObject *type, Py_ssize_t size, struct arraydescr *descr)
-{
-    arrayobject *op;
-    size_t nbytes;
-
-    if (size < 0) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-
-    nbytes = size * descr->itemsize;
-    /* Check for overflow */
-    if (nbytes / descr->itemsize != (size_t)size) {
-        return PyErr_NoMemory();
-    }
-    op = (arrayobject *) type->tp_alloc(type, 0);
-    if (op == NULL) {
-        return NULL;
-    }
-    op->ob_descr = descr;
-    op->allocated = size;
-    op->weakreflist = NULL;
-    Py_SIZE(op) = size;
-    if (size <= 0) {
-        op->ob_item = NULL;
-    }
-    else {
-        op->ob_item = PyMem_NEW(char, nbytes);
-        if (op->ob_item == NULL) {
-            Py_DECREF(op);
-            return PyErr_NoMemory();
-        }
-    }
-    return (PyObject *) op;
-}
-
-static PyObject *
-getarrayitem(PyObject *op, Py_ssize_t i)
-{
-    register arrayobject *ap;
-    assert(array_Check(op));
-    ap = (arrayobject *)op;
-    assert(i>=0 && i<Py_SIZE(ap));
-    return (*ap->ob_descr->getitem)(ap, i);
-}
-
-static int
-ins1(arrayobject *self, Py_ssize_t where, PyObject *v)
-{
-    char *items;
-    Py_ssize_t n = Py_SIZE(self);
-    if (v == NULL) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    if ((*self->ob_descr->setitem)(self, -1, v) < 0)
-        return -1;
-
-    if (array_resize(self, n+1) == -1)
-        return -1;
-    items = self->ob_item;
-    if (where < 0) {
-        where += n;
-        if (where < 0)
-            where = 0;
-    }
-    if (where > n)
-        where = n;
-    /* appends don't need to call memmove() */
-    if (where != n)
-        memmove(items + (where+1)*self->ob_descr->itemsize,
-            items + where*self->ob_descr->itemsize,
-            (n-where)*self->ob_descr->itemsize);
-    return (*self->ob_descr->setitem)(self, where, v);
-}
-
-/* Methods */
-
-static void
-array_dealloc(arrayobject *op)
-{
-    if (op->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) op);
-    if (op->ob_item != NULL)
-        PyMem_DEL(op->ob_item);
-    Py_TYPE(op)->tp_free((PyObject *)op);
-}
-
-static PyObject *
-array_richcompare(PyObject *v, PyObject *w, int op)
-{
-    arrayobject *va, *wa;
-    PyObject *vi = NULL;
-    PyObject *wi = NULL;
-    Py_ssize_t i, k;
-    PyObject *res;
-
-    if (!array_Check(v) || !array_Check(w)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-
-    va = (arrayobject *)v;
-    wa = (arrayobject *)w;
-
-    if (Py_SIZE(va) != Py_SIZE(wa) && (op == Py_EQ || op == Py_NE)) {
-        /* Shortcut: if the lengths differ, the arrays differ */
-        if (op == Py_EQ)
-            res = Py_False;
-        else
-            res = Py_True;
-        Py_INCREF(res);
-        return res;
-    }
-
-    /* Search for the first index where items are different */
-    k = 1;
-    for (i = 0; i < Py_SIZE(va) && i < Py_SIZE(wa); i++) {
-        vi = getarrayitem(v, i);
-        wi = getarrayitem(w, i);
-        if (vi == NULL || wi == NULL) {
-            Py_XDECREF(vi);
-            Py_XDECREF(wi);
-            return NULL;
-        }
-        k = PyObject_RichCompareBool(vi, wi, Py_EQ);
-        if (k == 0)
-            break; /* Keeping vi and wi alive! */
-        Py_DECREF(vi);
-        Py_DECREF(wi);
-        if (k < 0)
-            return NULL;
-    }
-
-    if (k) {
-        /* No more items to compare -- compare sizes */
-        Py_ssize_t vs = Py_SIZE(va);
-        Py_ssize_t ws = Py_SIZE(wa);
-        int cmp;
-        switch (op) {
-        case Py_LT: cmp = vs <  ws; break;
-        case Py_LE: cmp = vs <= ws; break;
-        case Py_EQ: cmp = vs == ws; break;
-        case Py_NE: cmp = vs != ws; break;
-        case Py_GT: cmp = vs >  ws; break;
-        case Py_GE: cmp = vs >= ws; break;
-        default: return NULL; /* cannot happen */
-        }
-        if (cmp)
-            res = Py_True;
-        else
-            res = Py_False;
-        Py_INCREF(res);
-        return res;
-    }
-
-    /* We have an item that differs.  First, shortcuts for EQ/NE */
-    if (op == Py_EQ) {
-        Py_INCREF(Py_False);
-        res = Py_False;
-    }
-    else if (op == Py_NE) {
-        Py_INCREF(Py_True);
-        res = Py_True;
-    }
-    else {
-        /* Compare the final item again using the proper operator */
-        res = PyObject_RichCompare(vi, wi, op);
-    }
-    Py_DECREF(vi);
-    Py_DECREF(wi);
-    return res;
-}
-
-static Py_ssize_t
-array_length(arrayobject *a)
-{
-    return Py_SIZE(a);
-}
-
-static PyObject *
-array_item(arrayobject *a, Py_ssize_t i)
-{
-    if (i < 0 || i >= Py_SIZE(a)) {
-        PyErr_SetString(PyExc_IndexError, "array index out of range");
-        return NULL;
-    }
-    return getarrayitem((PyObject *)a, i);
-}
-
-static PyObject *
-array_slice(arrayobject *a, Py_ssize_t ilow, Py_ssize_t ihigh)
-{
-    arrayobject *np;
-    if (ilow < 0)
-        ilow = 0;
-    else if (ilow > Py_SIZE(a))
-        ilow = Py_SIZE(a);
-    if (ihigh < 0)
-        ihigh = 0;
-    if (ihigh < ilow)
-        ihigh = ilow;
-    else if (ihigh > Py_SIZE(a))
-        ihigh = Py_SIZE(a);
-    np = (arrayobject *) newarrayobject(&Arraytype, ihigh - ilow, a->ob_descr);
-    if (np == NULL)
-        return NULL;
-    memcpy(np->ob_item, a->ob_item + ilow * a->ob_descr->itemsize,
-           (ihigh-ilow) * a->ob_descr->itemsize);
-    return (PyObject *)np;
-}
-
-static PyObject *
-array_copy(arrayobject *a, PyObject *unused)
-{
-    return array_slice(a, 0, Py_SIZE(a));
-}
-
-PyDoc_STRVAR(copy_doc,
-"copy(array)\n\
-\n\
- Return a copy of the array.");
-
-static PyObject *
-array_concat(arrayobject *a, PyObject *bb)
-{
-    Py_ssize_t size;
-    arrayobject *np;
-    if (!array_Check(bb)) {
-        PyErr_Format(PyExc_TypeError,
-             "can only append array (not \"%.200s\") to array",
-                 Py_TYPE(bb)->tp_name);
-        return NULL;
-    }
-#define b ((arrayobject *)bb)
-    if (a->ob_descr != b->ob_descr) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    if (Py_SIZE(a) > PY_SSIZE_T_MAX - Py_SIZE(b)) {
-        return PyErr_NoMemory();
-    }
-    size = Py_SIZE(a) + Py_SIZE(b);
-    np = (arrayobject *) newarrayobject(&Arraytype, size, a->ob_descr);
-    if (np == NULL) {
-        return NULL;
-    }
-    memcpy(np->ob_item, a->ob_item, Py_SIZE(a)*a->ob_descr->itemsize);
-    memcpy(np->ob_item + Py_SIZE(a)*a->ob_descr->itemsize,
-           b->ob_item, Py_SIZE(b)*b->ob_descr->itemsize);
-    return (PyObject *)np;
-#undef b
-}
-
-static PyObject *
-array_repeat(arrayobject *a, Py_ssize_t n)
-{
-    Py_ssize_t i;
-    Py_ssize_t size;
-    arrayobject *np;
-    char *p;
-    Py_ssize_t nbytes;
-    if (n < 0)
-        n = 0;
-    if ((Py_SIZE(a) != 0) && (n > PY_SSIZE_T_MAX / Py_SIZE(a))) {
-        return PyErr_NoMemory();
-    }
-    size = Py_SIZE(a) * n;
-    np = (arrayobject *) newarrayobject(&Arraytype, size, a->ob_descr);
-    if (np == NULL)
-        return NULL;
-    p = np->ob_item;
-    nbytes = Py_SIZE(a) * a->ob_descr->itemsize;
-    for (i = 0; i < n; i++) {
-        memcpy(p, a->ob_item, nbytes);
-        p += nbytes;
-    }
-    return (PyObject *) np;
-}
-
-static int
-array_ass_slice(arrayobject *a, Py_ssize_t ilow, Py_ssize_t ihigh, PyObject *v)
-{
-    char *item;
-    Py_ssize_t n; /* Size of replacement array */
-    Py_ssize_t d; /* Change in size */
-#define b ((arrayobject *)v)
-    if (v == NULL)
-        n = 0;
-    else if (array_Check(v)) {
-        n = Py_SIZE(b);
-        if (a == b) {
-            /* Special case "a[i:j] = a" -- copy b first */
-            int ret;
-            v = array_slice(b, 0, n);
-            if (!v)
-                return -1;
-            ret = array_ass_slice(a, ilow, ihigh, v);
-            Py_DECREF(v);
-            return ret;
-        }
-        if (b->ob_descr != a->ob_descr) {
-            PyErr_BadArgument();
-            return -1;
-        }
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-         "can only assign array (not \"%.200s\") to array slice",
-                         Py_TYPE(v)->tp_name);
-        return -1;
-    }
-    if (ilow < 0)
-        ilow = 0;
-    else if (ilow > Py_SIZE(a))
-        ilow = Py_SIZE(a);
-    if (ihigh < 0)
-        ihigh = 0;
-    if (ihigh < ilow)
-        ihigh = ilow;
-    else if (ihigh > Py_SIZE(a))
-        ihigh = Py_SIZE(a);
-    item = a->ob_item;
-    d = n - (ihigh-ilow);
-    if (d < 0) { /* Delete -d items */
-        memmove(item + (ihigh+d)*a->ob_descr->itemsize,
-            item + ihigh*a->ob_descr->itemsize,
-            (Py_SIZE(a)-ihigh)*a->ob_descr->itemsize);
-        Py_SIZE(a) += d;
-        PyMem_RESIZE(item, char, Py_SIZE(a)*a->ob_descr->itemsize);
-                                        /* Can't fail */
-        a->ob_item = item;
-        a->allocated = Py_SIZE(a);
-    }
-    else if (d > 0) { /* Insert d items */
-        PyMem_RESIZE(item, char,
-                     (Py_SIZE(a) + d)*a->ob_descr->itemsize);
-        if (item == NULL) {
-            PyErr_NoMemory();
-            return -1;
-        }
-        memmove(item + (ihigh+d)*a->ob_descr->itemsize,
-            item + ihigh*a->ob_descr->itemsize,
-            (Py_SIZE(a)-ihigh)*a->ob_descr->itemsize);
-        a->ob_item = item;
-        Py_SIZE(a) += d;
-        a->allocated = Py_SIZE(a);
-    }
-    if (n > 0)
-        memcpy(item + ilow*a->ob_descr->itemsize, b->ob_item,
-               n*b->ob_descr->itemsize);
-    return 0;
-#undef b
-}
-
-static int
-array_ass_item(arrayobject *a, Py_ssize_t i, PyObject *v)
-{
-    if (i < 0 || i >= Py_SIZE(a)) {
-        PyErr_SetString(PyExc_IndexError,
-                         "array assignment index out of range");
-        return -1;
-    }
-    if (v == NULL)
-        return array_ass_slice(a, i, i+1, v);
-    return (*a->ob_descr->setitem)(a, i, v);
-}
-
-static int
-setarrayitem(PyObject *a, Py_ssize_t i, PyObject *v)
-{
-    assert(array_Check(a));
-    return array_ass_item((arrayobject *)a, i, v);
-}
-
-static int
-array_iter_extend(arrayobject *self, PyObject *bb)
-{
-    PyObject *it, *v;
-
-    it = PyObject_GetIter(bb);
-    if (it == NULL)
-        return -1;
-
-    while ((v = PyIter_Next(it)) != NULL) {
-        if (ins1(self, Py_SIZE(self), v) != 0) {
-            Py_DECREF(v);
-            Py_DECREF(it);
-            return -1;
-        }
-        Py_DECREF(v);
-    }
-    Py_DECREF(it);
-    if (PyErr_Occurred())
-        return -1;
-    return 0;
-}
-
-static int
-array_do_extend(arrayobject *self, PyObject *bb)
-{
-    Py_ssize_t size;
-    char *old_item;
-
-    if (!array_Check(bb))
-        return array_iter_extend(self, bb);
-#define b ((arrayobject *)bb)
-    if (self->ob_descr != b->ob_descr) {
-        PyErr_SetString(PyExc_TypeError,
-                     "can only extend with array of same kind");
-        return -1;
-    }
-    if ((Py_SIZE(self) > PY_SSIZE_T_MAX - Py_SIZE(b)) ||
-        ((Py_SIZE(self) + Py_SIZE(b)) > PY_SSIZE_T_MAX / self->ob_descr->itemsize)) {
-        PyErr_NoMemory();
-        return -1;
-    }
-    size = Py_SIZE(self) + Py_SIZE(b);
-    old_item = self->ob_item;
-    PyMem_RESIZE(self->ob_item, char, size*self->ob_descr->itemsize);
-    if (self->ob_item == NULL) {
-        self->ob_item = old_item;
-        PyErr_NoMemory();
-        return -1;
-    }
-    memcpy(self->ob_item + Py_SIZE(self)*self->ob_descr->itemsize,
-           b->ob_item, Py_SIZE(b)*b->ob_descr->itemsize);
-    Py_SIZE(self) = size;
-    self->allocated = size;
-
-    return 0;
-#undef b
-}
-
-static PyObject *
-array_inplace_concat(arrayobject *self, PyObject *bb)
-{
-    if (!array_Check(bb)) {
-        PyErr_Format(PyExc_TypeError,
-            "can only extend array with array (not \"%.200s\")",
-            Py_TYPE(bb)->tp_name);
-        return NULL;
-    }
-    if (array_do_extend(self, bb) == -1)
-        return NULL;
-    Py_INCREF(self);
-    return (PyObject *)self;
-}
-
-static PyObject *
-array_inplace_repeat(arrayobject *self, Py_ssize_t n)
-{
-    char *items, *p;
-    Py_ssize_t size, i;
-
-    if (Py_SIZE(self) > 0) {
-        if (n < 0)
-            n = 0;
-        items = self->ob_item;
-        if ((self->ob_descr->itemsize != 0) &&
-            (Py_SIZE(self) > PY_SSIZE_T_MAX / self->ob_descr->itemsize)) {
-            return PyErr_NoMemory();
-        }
-        size = Py_SIZE(self) * self->ob_descr->itemsize;
-        if (n == 0) {
-            PyMem_FREE(items);
-            self->ob_item = NULL;
-            Py_SIZE(self) = 0;
-            self->allocated = 0;
-        }
-        else {
-            if (size > PY_SSIZE_T_MAX / n) {
-                return PyErr_NoMemory();
-            }
-            PyMem_RESIZE(items, char, n * size);
-            if (items == NULL)
-                return PyErr_NoMemory();
-            p = items;
-            for (i = 1; i < n; i++) {
-                p += size;
-                memcpy(p, items, size);
-            }
-            self->ob_item = items;
-            Py_SIZE(self) *= n;
-            self->allocated = Py_SIZE(self);
-        }
-    }
-    Py_INCREF(self);
-    return (PyObject *)self;
-}
-
-
-static PyObject *
-ins(arrayobject *self, Py_ssize_t where, PyObject *v)
-{
-    if (ins1(self, where, v) != 0)
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-array_count(arrayobject *self, PyObject *v)
-{
-    Py_ssize_t count = 0;
-    Py_ssize_t i;
-
-    for (i = 0; i < Py_SIZE(self); i++) {
-        PyObject *selfi = getarrayitem((PyObject *)self, i);
-        int cmp = PyObject_RichCompareBool(selfi, v, Py_EQ);
-        Py_DECREF(selfi);
-        if (cmp > 0)
-            count++;
-        else if (cmp < 0)
-            return NULL;
-    }
-    return PyInt_FromSsize_t(count);
-}
-
-PyDoc_STRVAR(count_doc,
-"count(x)\n\
-\n\
-Return number of occurrences of x in the array.");
-
-static PyObject *
-array_index(arrayobject *self, PyObject *v)
-{
-    Py_ssize_t i;
-
-    for (i = 0; i < Py_SIZE(self); i++) {
-        PyObject *selfi = getarrayitem((PyObject *)self, i);
-        int cmp = PyObject_RichCompareBool(selfi, v, Py_EQ);
-        Py_DECREF(selfi);
-        if (cmp > 0) {
-            return PyInt_FromLong((long)i);
-        }
-        else if (cmp < 0)
-            return NULL;
-    }
-    PyErr_SetString(PyExc_ValueError, "array.index(x): x not in list");
-    return NULL;
-}
-
-PyDoc_STRVAR(index_doc,
-"index(x)\n\
-\n\
-Return index of first occurrence of x in the array.");
-
-static int
-array_contains(arrayobject *self, PyObject *v)
-{
-    Py_ssize_t i;
-    int cmp;
-
-    for (i = 0, cmp = 0 ; cmp == 0 && i < Py_SIZE(self); i++) {
-        PyObject *selfi = getarrayitem((PyObject *)self, i);
-        cmp = PyObject_RichCompareBool(selfi, v, Py_EQ);
-        Py_DECREF(selfi);
-    }
-    return cmp;
-}
-
-static PyObject *
-array_remove(arrayobject *self, PyObject *v)
-{
-    int i;
-
-    for (i = 0; i < Py_SIZE(self); i++) {
-        PyObject *selfi = getarrayitem((PyObject *)self,i);
-        int cmp = PyObject_RichCompareBool(selfi, v, Py_EQ);
-        Py_DECREF(selfi);
-        if (cmp > 0) {
-            if (array_ass_slice(self, i, i+1,
-                               (PyObject *)NULL) != 0)
-                return NULL;
-            Py_INCREF(Py_None);
-            return Py_None;
-        }
-        else if (cmp < 0)
-            return NULL;
-    }
-    PyErr_SetString(PyExc_ValueError, "array.remove(x): x not in list");
-    return NULL;
-}
-
-PyDoc_STRVAR(remove_doc,
-"remove(x)\n\
-\n\
-Remove the first occurrence of x in the array.");
-
-static PyObject *
-array_pop(arrayobject *self, PyObject *args)
-{
-    Py_ssize_t i = -1;
-    PyObject *v;
-    if (!PyArg_ParseTuple(args, "|n:pop", &i))
-        return NULL;
-    if (Py_SIZE(self) == 0) {
-        /* Special-case most common failure cause */
-        PyErr_SetString(PyExc_IndexError, "pop from empty array");
-        return NULL;
-    }
-    if (i < 0)
-        i += Py_SIZE(self);
-    if (i < 0 || i >= Py_SIZE(self)) {
-        PyErr_SetString(PyExc_IndexError, "pop index out of range");
-        return NULL;
-    }
-    v = getarrayitem((PyObject *)self,i);
-    if (array_ass_slice(self, i, i+1, (PyObject *)NULL) != 0) {
-        Py_DECREF(v);
-        return NULL;
-    }
-    return v;
-}
-
-PyDoc_STRVAR(pop_doc,
-"pop([i])\n\
-\n\
-Return the i-th element and delete it from the array. i defaults to -1.");
-
-static PyObject *
-array_extend(arrayobject *self, PyObject *bb)
-{
-    if (array_do_extend(self, bb) == -1)
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(extend_doc,
-"extend(array or iterable)\n\
-\n\
- Append items to the end of the array.");
-
-static PyObject *
-array_insert(arrayobject *self, PyObject *args)
-{
-    Py_ssize_t i;
-    PyObject *v;
-    if (!PyArg_ParseTuple(args, "nO:insert", &i, &v))
-        return NULL;
-    return ins(self, i, v);
-}
-
-PyDoc_STRVAR(insert_doc,
-"insert(i,x)\n\
-\n\
-Insert a new item x into the array before position i.");
-
-
-static PyObject *
-array_buffer_info(arrayobject *self, PyObject *unused)
-{
-    PyObject* retval = NULL;
-    retval = PyTuple_New(2);
-    if (!retval)
-        return NULL;
-
-    PyTuple_SET_ITEM(retval, 0, PyLong_FromVoidPtr(self->ob_item));
-    PyTuple_SET_ITEM(retval, 1, PyInt_FromLong((long)(Py_SIZE(self))));
-
-    return retval;
-}
-
-PyDoc_STRVAR(buffer_info_doc,
-"buffer_info() -> (address, length)\n\
-\n\
-Return a tuple (address, length) giving the current memory address and\n\
-the length in items of the buffer used to hold array's contents\n\
-The length should be multiplied by the itemsize attribute to calculate\n\
-the buffer length in bytes.");
-
-
-static PyObject *
-array_append(arrayobject *self, PyObject *v)
-{
-    return ins(self, Py_SIZE(self), v);
-}
-
-PyDoc_STRVAR(append_doc,
-"append(x)\n\
-\n\
-Append new value x to the end of the array.");
-
-
-static PyObject *
-array_byteswap(arrayobject *self, PyObject *unused)
-{
-    char *p;
-    Py_ssize_t i;
-
-    switch (self->ob_descr->itemsize) {
-    case 1:
-        break;
-    case 2:
-        for (p = self->ob_item, i = Py_SIZE(self); --i >= 0; p += 2) {
-            char p0 = p[0];
-            p[0] = p[1];
-            p[1] = p0;
-        }
-        break;
-    case 4:
-        for (p = self->ob_item, i = Py_SIZE(self); --i >= 0; p += 4) {
-            char p0 = p[0];
-            char p1 = p[1];
-            p[0] = p[3];
-            p[1] = p[2];
-            p[2] = p1;
-            p[3] = p0;
-        }
-        break;
-    case 8:
-        for (p = self->ob_item, i = Py_SIZE(self); --i >= 0; p += 8) {
-            char p0 = p[0];
-            char p1 = p[1];
-            char p2 = p[2];
-            char p3 = p[3];
-            p[0] = p[7];
-            p[1] = p[6];
-            p[2] = p[5];
-            p[3] = p[4];
-            p[4] = p3;
-            p[5] = p2;
-            p[6] = p1;
-            p[7] = p0;
-        }
-        break;
-    default:
-        PyErr_SetString(PyExc_RuntimeError,
-                   "don't know how to byteswap this array type");
-        return NULL;
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(byteswap_doc,
-"byteswap()\n\
-\n\
-Byteswap all items of the array.  If the items in the array are not 1, 2,\n\
-4, or 8 bytes in size, RuntimeError is raised.");
-
-static PyObject *
-array_reverse(arrayobject *self, PyObject *unused)
-{
-    register Py_ssize_t itemsize = self->ob_descr->itemsize;
-    register char *p, *q;
-    /* little buffer to hold items while swapping */
-    char tmp[256];      /* 8 is probably enough -- but why skimp */
-    assert((size_t)itemsize <= sizeof(tmp));
-
-    if (Py_SIZE(self) > 1) {
-        for (p = self->ob_item,
-             q = self->ob_item + (Py_SIZE(self) - 1)*itemsize;
-             p < q;
-             p += itemsize, q -= itemsize) {
-            /* memory areas guaranteed disjoint, so memcpy
-             * is safe (& memmove may be slower).
-             */
-            memcpy(tmp, p, itemsize);
-            memcpy(p, q, itemsize);
-            memcpy(q, tmp, itemsize);
-        }
-    }
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(reverse_doc,
-"reverse()\n\
-\n\
-Reverse the order of the items in the array.");
-
-static PyObject *
-array_fromfile(arrayobject *self, PyObject *args)
-{
-    PyObject *f;
-    Py_ssize_t n;
-    FILE *fp;
-    if (!PyArg_ParseTuple(args, "On:fromfile", &f, &n))
-        return NULL;
-    fp = PyFile_AsFile(f);
-    if (fp == NULL) {
-        PyErr_SetString(PyExc_TypeError, "arg1 must be open file");
-        return NULL;
-    }
-    if (n > 0) {
-        char *item = self->ob_item;
-        Py_ssize_t itemsize = self->ob_descr->itemsize;
-        size_t nread;
-        Py_ssize_t newlength;
-        size_t newbytes;
-        /* Be careful here about overflow */
-        if ((newlength = Py_SIZE(self) + n) <= 0 ||
-            (newbytes = newlength * itemsize) / itemsize !=
-            (size_t)newlength)
-            goto nomem;
-        PyMem_RESIZE(item, char, newbytes);
-        if (item == NULL) {
-          nomem:
-            PyErr_NoMemory();
-            return NULL;
-        }
-        self->ob_item = item;
-        Py_SIZE(self) += n;
-        self->allocated = Py_SIZE(self);
-        nread = fread(item + (Py_SIZE(self) - n) * itemsize,
-                      itemsize, n, fp);
-        if (nread < (size_t)n) {
-          Py_SIZE(self) -= (n - nread);
-            PyMem_RESIZE(item, char, Py_SIZE(self)*itemsize);
-            self->ob_item = item;
-            self->allocated = Py_SIZE(self);
-            if (ferror(fp)) {
-                PyErr_SetFromErrno(PyExc_IOError);
-                clearerr(fp);
-            }
-            else {
-                PyErr_SetString(PyExc_EOFError,
-                                "not enough items in file");
-            }
-            return NULL;
-        }
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(fromfile_doc,
-"fromfile(f, n)\n\
-\n\
-Read n objects from the file object f and append them to the end of the\n\
-array.  Also called as read.");
-
-
-static PyObject *
-array_fromfile_as_read(arrayobject *self, PyObject *args)
-{
-    if (PyErr_WarnPy3k("array.read() not supported in 3.x; "
-                       "use array.fromfile()", 1) < 0)
-        return NULL;
-    return array_fromfile(self, args);
-}
-
-
-static PyObject *
-array_tofile(arrayobject *self, PyObject *f)
-{
-    FILE *fp;
-
-    fp = PyFile_AsFile(f);
-    if (fp == NULL) {
-        PyErr_SetString(PyExc_TypeError, "arg must be open file");
-        return NULL;
-    }
-    if (self->ob_size > 0) {
-        if (fwrite(self->ob_item, self->ob_descr->itemsize,
-                   self->ob_size, fp) != (size_t)self->ob_size) {
-            PyErr_SetFromErrno(PyExc_IOError);
-            clearerr(fp);
-            return NULL;
-        }
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(tofile_doc,
-"tofile(f)\n\
-\n\
-Write all items (as machine values) to the file object f.  Also called as\n\
-write.");
-
-
-static PyObject *
-array_tofile_as_write(arrayobject *self, PyObject *f)
-{
-    if (PyErr_WarnPy3k("array.write() not supported in 3.x; "
-                       "use array.tofile()", 1) < 0)
-        return NULL;
-    return array_tofile(self, f);
-}
-
-
-static PyObject *
-array_fromlist(arrayobject *self, PyObject *list)
-{
-    Py_ssize_t n;
-    Py_ssize_t itemsize = self->ob_descr->itemsize;
-
-    if (!PyList_Check(list)) {
-        PyErr_SetString(PyExc_TypeError, "arg must be list");
-        return NULL;
-    }
-    n = PyList_Size(list);
-    if (n > 0) {
-        char *item = self->ob_item;
-        Py_ssize_t i;
-        PyMem_RESIZE(item, char, (Py_SIZE(self) + n) * itemsize);
-        if (item == NULL) {
-            PyErr_NoMemory();
-            return NULL;
-        }
-        self->ob_item = item;
-        Py_SIZE(self) += n;
-        self->allocated = Py_SIZE(self);
-        for (i = 0; i < n; i++) {
-            PyObject *v = PyList_GetItem(list, i);
-            if ((*self->ob_descr->setitem)(self,
-                            Py_SIZE(self) - n + i, v) != 0) {
-                Py_SIZE(self) -= n;
-                if (itemsize && (self->ob_size > PY_SSIZE_T_MAX / itemsize)) {
-                    return PyErr_NoMemory();
-                }
-                PyMem_RESIZE(item, char,
-                                  Py_SIZE(self) * itemsize);
-                self->ob_item = item;
-                self->allocated = Py_SIZE(self);
-                return NULL;
-            }
-        }
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(fromlist_doc,
-"fromlist(list)\n\
-\n\
-Append items to array from list.");
-
-
-static PyObject *
-array_tolist(arrayobject *self, PyObject *unused)
-{
-    PyObject *list = PyList_New(Py_SIZE(self));
-    Py_ssize_t i;
-
-    if (list == NULL)
-        return NULL;
-    for (i = 0; i < Py_SIZE(self); i++) {
-        PyObject *v = getarrayitem((PyObject *)self, i);
-        if (v == NULL) {
-            Py_DECREF(list);
-            return NULL;
-        }
-        PyList_SetItem(list, i, v);
-    }
-    return list;
-}
-
-PyDoc_STRVAR(tolist_doc,
-"tolist() -> list\n\
-\n\
-Convert array to an ordinary list with the same items.");
-
-
-static PyObject *
-array_fromstring(arrayobject *self, PyObject *args)
-{
-    char *str;
-    Py_ssize_t n;
-    int itemsize = self->ob_descr->itemsize;
-    if (!PyArg_ParseTuple(args, "s#:fromstring", &str, &n))
-        return NULL;
-    if (n % itemsize != 0) {
-        PyErr_SetString(PyExc_ValueError,
-                   "string length not a multiple of item size");
-        return NULL;
-    }
-    n = n / itemsize;
-    if (n > 0) {
-        char *item = self->ob_item;
-        if ((n > PY_SSIZE_T_MAX - Py_SIZE(self)) ||
-            ((Py_SIZE(self) + n) > PY_SSIZE_T_MAX / itemsize)) {
-                return PyErr_NoMemory();
-        }
-        PyMem_RESIZE(item, char, (Py_SIZE(self) + n) * itemsize);
-        if (item == NULL) {
-            PyErr_NoMemory();
-            return NULL;
-        }
-        self->ob_item = item;
-        Py_SIZE(self) += n;
-        self->allocated = Py_SIZE(self);
-        memcpy(item + (Py_SIZE(self) - n) * itemsize,
-               str, itemsize*n);
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(fromstring_doc,
-"fromstring(string)\n\
-\n\
-Appends items from the string, interpreting it as an array of machine\n\
-values,as if it had been read from a file using the fromfile() method).");
-
-
-static PyObject *
-array_tostring(arrayobject *self, PyObject *unused)
-{
-    if (self->ob_size <= PY_SSIZE_T_MAX / self->ob_descr->itemsize) {
-        return PyString_FromStringAndSize(self->ob_item,
-                            Py_SIZE(self) * self->ob_descr->itemsize);
-    } else {
-        return PyErr_NoMemory();
-    }
-}
-
-PyDoc_STRVAR(tostring_doc,
-"tostring() -> string\n\
-\n\
-Convert the array to an array of machine values and return the string\n\
-representation.");
-
-
-
-#ifdef Py_USING_UNICODE
-static PyObject *
-array_fromunicode(arrayobject *self, PyObject *args)
-{
-    Py_UNICODE *ustr;
-    Py_ssize_t n;
-
-    if (!PyArg_ParseTuple(args, "u#:fromunicode", &ustr, &n))
-        return NULL;
-    if (self->ob_descr->typecode != 'u') {
-        PyErr_SetString(PyExc_ValueError,
-            "fromunicode() may only be called on "
-            "type 'u' arrays");
-        return NULL;
-    }
-    if (n > 0) {
-        Py_UNICODE *item = (Py_UNICODE *) self->ob_item;
-        if (Py_SIZE(self) > PY_SSIZE_T_MAX - n) {
-            return PyErr_NoMemory();
-        }
-        PyMem_RESIZE(item, Py_UNICODE, Py_SIZE(self) + n);
-        if (item == NULL) {
-            PyErr_NoMemory();
-            return NULL;
-        }
-        self->ob_item = (char *) item;
-        Py_SIZE(self) += n;
-        self->allocated = Py_SIZE(self);
-        memcpy(item + Py_SIZE(self) - n,
-               ustr, n * sizeof(Py_UNICODE));
-    }
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(fromunicode_doc,
-"fromunicode(ustr)\n\
-\n\
-Extends this array with data from the unicode string ustr.\n\
-The array must be a type 'u' array; otherwise a ValueError\n\
-is raised.  Use array.fromstring(ustr.decode(...)) to\n\
-append Unicode data to an array of some other type.");
-
-
-static PyObject *
-array_tounicode(arrayobject *self, PyObject *unused)
-{
-    if (self->ob_descr->typecode != 'u') {
-        PyErr_SetString(PyExc_ValueError,
-            "tounicode() may only be called on type 'u' arrays");
-        return NULL;
-    }
-    return PyUnicode_FromUnicode((Py_UNICODE *) self->ob_item, Py_SIZE(self));
-}
-
-PyDoc_STRVAR(tounicode_doc,
-"tounicode() -> unicode\n\
-\n\
-Convert the array to a unicode string.  The array must be\n\
-a type 'u' array; otherwise a ValueError is raised.  Use\n\
-array.tostring().decode() to obtain a unicode string from\n\
-an array of some other type.");
-
-#endif /* Py_USING_UNICODE */
-
-static PyObject *
-array_reduce(arrayobject *array)
-{
-    PyObject *dict, *result, *list;
-
-    dict = PyObject_GetAttrString((PyObject *)array, "__dict__");
-    if (dict == NULL) {
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return NULL;
-        PyErr_Clear();
-        dict = Py_None;
-        Py_INCREF(dict);
-    }
-    /* Unlike in Python 3.x, we never use the more efficient memory
-     * representation of an array for pickling.  This is unfortunately
-     * necessary to allow array objects to be unpickled by Python 3.x,
-     * since str objects from 2.x are always decoded to unicode in
-     * Python 3.x.
-     */
-    list = array_tolist(array, NULL);
-    if (list == NULL) {
-        Py_DECREF(dict);
-        return NULL;
-    }
-    result = Py_BuildValue(
-        "O(cO)O", Py_TYPE(array), array->ob_descr->typecode, list, dict);
-    Py_DECREF(list);
-    Py_DECREF(dict);
-    return result;
-}
-
-PyDoc_STRVAR(reduce_doc, "Return state information for pickling.");
-
-static PyObject *
-array_get_typecode(arrayobject *a, void *closure)
-{
-    char tc = a->ob_descr->typecode;
-    return PyString_FromStringAndSize(&tc, 1);
-}
-
-static PyObject *
-array_get_itemsize(arrayobject *a, void *closure)
-{
-    return PyInt_FromLong((long)a->ob_descr->itemsize);
-}
-
-static PyGetSetDef array_getsets [] = {
-    {"typecode", (getter) array_get_typecode, NULL,
-     "the typecode character used to create the array"},
-    {"itemsize", (getter) array_get_itemsize, NULL,
-     "the size, in bytes, of one array item"},
-    {NULL}
-};
-
-static PyMethodDef array_methods[] = {
-    {"append",          (PyCFunction)array_append,      METH_O,
-     append_doc},
-    {"buffer_info", (PyCFunction)array_buffer_info, METH_NOARGS,
-     buffer_info_doc},
-    {"byteswap",        (PyCFunction)array_byteswap,    METH_NOARGS,
-     byteswap_doc},
-    {"__copy__",        (PyCFunction)array_copy,        METH_NOARGS,
-     copy_doc},
-    {"count",           (PyCFunction)array_count,       METH_O,
-     count_doc},
-    {"__deepcopy__",(PyCFunction)array_copy,            METH_O,
-     copy_doc},
-    {"extend",      (PyCFunction)array_extend,          METH_O,
-     extend_doc},
-    {"fromfile",        (PyCFunction)array_fromfile,    METH_VARARGS,
-     fromfile_doc},
-    {"fromlist",        (PyCFunction)array_fromlist,    METH_O,
-     fromlist_doc},
-    {"fromstring",      (PyCFunction)array_fromstring,  METH_VARARGS,
-     fromstring_doc},
-#ifdef Py_USING_UNICODE
-    {"fromunicode",     (PyCFunction)array_fromunicode, METH_VARARGS,
-     fromunicode_doc},
-#endif
-    {"index",           (PyCFunction)array_index,       METH_O,
-     index_doc},
-    {"insert",          (PyCFunction)array_insert,      METH_VARARGS,
-     insert_doc},
-    {"pop",             (PyCFunction)array_pop,         METH_VARARGS,
-     pop_doc},
-    {"read",            (PyCFunction)array_fromfile_as_read,    METH_VARARGS,
-     fromfile_doc},
-    {"__reduce__",      (PyCFunction)array_reduce,      METH_NOARGS,
-     reduce_doc},
-    {"remove",          (PyCFunction)array_remove,      METH_O,
-     remove_doc},
-    {"reverse",         (PyCFunction)array_reverse,     METH_NOARGS,
-     reverse_doc},
-/*      {"sort",        (PyCFunction)array_sort,        METH_VARARGS,
-    sort_doc},*/
-    {"tofile",          (PyCFunction)array_tofile,      METH_O,
-     tofile_doc},
-    {"tolist",          (PyCFunction)array_tolist,      METH_NOARGS,
-     tolist_doc},
-    {"tostring",        (PyCFunction)array_tostring,    METH_NOARGS,
-     tostring_doc},
-#ifdef Py_USING_UNICODE
-    {"tounicode",   (PyCFunction)array_tounicode,       METH_NOARGS,
-     tounicode_doc},
-#endif
-    {"write",           (PyCFunction)array_tofile_as_write,     METH_O,
-     tofile_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyObject *
-array_repr(arrayobject *a)
-{
-    char buf[256], typecode;
-    PyObject *s, *t, *v = NULL;
-    Py_ssize_t len;
-
-    len = Py_SIZE(a);
-    typecode = a->ob_descr->typecode;
-    if (len == 0) {
-        PyOS_snprintf(buf, sizeof(buf), "array('%c')", typecode);
-        return PyString_FromString(buf);
-    }
-
-    if (typecode == 'c')
-        v = array_tostring(a, NULL);
-#ifdef Py_USING_UNICODE
-    else if (typecode == 'u')
-        v = array_tounicode(a, NULL);
-#endif
-    else
-        v = array_tolist(a, NULL);
-    t = PyObject_Repr(v);
-    Py_XDECREF(v);
-
-    PyOS_snprintf(buf, sizeof(buf), "array('%c', ", typecode);
-    s = PyString_FromString(buf);
-    PyString_ConcatAndDel(&s, t);
-    PyString_ConcatAndDel(&s, PyString_FromString(")"));
-    return s;
-}
-
-static PyObject*
-array_subscr(arrayobject* self, PyObject* item)
-{
-    if (PyIndex_Check(item)) {
-        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-        if (i==-1 && PyErr_Occurred()) {
-            return NULL;
-        }
-        if (i < 0)
-            i += Py_SIZE(self);
-        return array_item(self, i);
-    }
-    else if (PySlice_Check(item)) {
-        Py_ssize_t start, stop, step, slicelength, cur, i;
-        PyObject* result;
-        arrayobject* ar;
-        int itemsize = self->ob_descr->itemsize;
-
-        if (PySlice_GetIndicesEx((PySliceObject*)item, Py_SIZE(self),
-                         &start, &stop, &step, &slicelength) < 0) {
-            return NULL;
-        }
-
-        if (slicelength <= 0) {
-            return newarrayobject(&Arraytype, 0, self->ob_descr);
-        }
-        else if (step == 1) {
-            PyObject *result = newarrayobject(&Arraytype,
-                                    slicelength, self->ob_descr);
-            if (result == NULL)
-                return NULL;
-            memcpy(((arrayobject *)result)->ob_item,
-                   self->ob_item + start * itemsize,
-                   slicelength * itemsize);
-            return result;
-        }
-        else {
-            result = newarrayobject(&Arraytype, slicelength, self->ob_descr);
-            if (!result) return NULL;
-
-            ar = (arrayobject*)result;
-
-            for (cur = start, i = 0; i < slicelength;
-                 cur += step, i++) {
-                memcpy(ar->ob_item + i*itemsize,
-                       self->ob_item + cur*itemsize,
-                       itemsize);
-            }
-
-            return result;
-        }
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "array indices must be integers");
-        return NULL;
-    }
-}
-
-static int
-array_ass_subscr(arrayobject* self, PyObject* item, PyObject* value)
-{
-    Py_ssize_t start, stop, step, slicelength, needed;
-    arrayobject* other;
-    int itemsize;
-
-    if (PyIndex_Check(item)) {
-        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-
-        if (i == -1 && PyErr_Occurred())
-            return -1;
-        if (i < 0)
-            i += Py_SIZE(self);
-        if (i < 0 || i >= Py_SIZE(self)) {
-            PyErr_SetString(PyExc_IndexError,
-                "array assignment index out of range");
-            return -1;
-        }
-        if (value == NULL) {
-            /* Fall through to slice assignment */
-            start = i;
-            stop = i + 1;
-            step = 1;
-            slicelength = 1;
-        }
-        else
-            return (*self->ob_descr->setitem)(self, i, value);
-    }
-    else if (PySlice_Check(item)) {
-        if (PySlice_GetIndicesEx((PySliceObject *)item,
-                                 Py_SIZE(self), &start, &stop,
-                                 &step, &slicelength) < 0) {
-            return -1;
-        }
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "array indices must be integer");
-        return -1;
-    }
-    if (value == NULL) {
-        other = NULL;
-        needed = 0;
-    }
-    else if (array_Check(value)) {
-        other = (arrayobject *)value;
-        needed = Py_SIZE(other);
-        if (self == other) {
-            /* Special case "self[i:j] = self" -- copy self first */
-            int ret;
-            value = array_slice(other, 0, needed);
-            if (value == NULL)
-                return -1;
-            ret = array_ass_subscr(self, item, value);
-            Py_DECREF(value);
-            return ret;
-        }
-        if (other->ob_descr != self->ob_descr) {
-            PyErr_BadArgument();
-            return -1;
-        }
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-         "can only assign array (not \"%.200s\") to array slice",
-                         Py_TYPE(value)->tp_name);
-        return -1;
-    }
-    itemsize = self->ob_descr->itemsize;
-    /* for 'a[2:1] = ...', the insertion point is 'start', not 'stop' */
-    if ((step > 0 && stop < start) ||
-        (step < 0 && stop > start))
-        stop = start;
-    if (step == 1) {
-        if (slicelength > needed) {
-            memmove(self->ob_item + (start + needed) * itemsize,
-                self->ob_item + stop * itemsize,
-                (Py_SIZE(self) - stop) * itemsize);
-            if (array_resize(self, Py_SIZE(self) +
-                             needed - slicelength) < 0)
-                return -1;
-        }
-        else if (slicelength < needed) {
-            if (array_resize(self, Py_SIZE(self) +
-                             needed - slicelength) < 0)
-                return -1;
-            memmove(self->ob_item + (start + needed) * itemsize,
-                self->ob_item + stop * itemsize,
-                (Py_SIZE(self) - start - needed) * itemsize);
-        }
-        if (needed > 0)
-            memcpy(self->ob_item + start * itemsize,
-                   other->ob_item, needed * itemsize);
-        return 0;
-    }
-    else if (needed == 0) {
-        /* Delete slice */
-        size_t cur;
-        Py_ssize_t i;
-
-        if (step < 0) {
-            stop = start + 1;
-            start = stop + step * (slicelength - 1) - 1;
-            step = -step;
-        }
-        for (cur = start, i = 0; i < slicelength;
-             cur += step, i++) {
-            Py_ssize_t lim = step - 1;
-
-            if (cur + step >= (size_t)Py_SIZE(self))
-                lim = Py_SIZE(self) - cur - 1;
-            memmove(self->ob_item + (cur - i) * itemsize,
-                self->ob_item + (cur + 1) * itemsize,
-                lim * itemsize);
-        }
-        cur = start + slicelength * step;
-        if (cur < (size_t)Py_SIZE(self)) {
-            memmove(self->ob_item + (cur-slicelength) * itemsize,
-                self->ob_item + cur * itemsize,
-                (Py_SIZE(self) - cur) * itemsize);
-        }
-        if (array_resize(self, Py_SIZE(self) - slicelength) < 0)
-            return -1;
-        return 0;
-    }
-    else {
-        Py_ssize_t cur, i;
-
-        if (needed != slicelength) {
-            PyErr_Format(PyExc_ValueError,
-                "attempt to assign array of size %zd "
-                "to extended slice of size %zd",
-                needed, slicelength);
-            return -1;
-        }
-        for (cur = start, i = 0; i < slicelength;
-             cur += step, i++) {
-            memcpy(self->ob_item + cur * itemsize,
-                   other->ob_item + i * itemsize,
-                   itemsize);
-        }
-        return 0;
-    }
-}
-
-static PyMappingMethods array_as_mapping = {
-    (lenfunc)array_length,
-    (binaryfunc)array_subscr,
-    (objobjargproc)array_ass_subscr
-};
-
-static const void *emptybuf = "";
-
-static Py_ssize_t
-array_buffer_getreadbuf(arrayobject *self, Py_ssize_t index, const void **ptr)
-{
-    if ( index != 0 ) {
-        PyErr_SetString(PyExc_SystemError,
-                        "Accessing non-existent array segment");
-        return -1;
-    }
-    *ptr = (void *)self->ob_item;
-    if (*ptr == NULL)
-        *ptr = emptybuf;
-    return Py_SIZE(self)*self->ob_descr->itemsize;
-}
-
-static Py_ssize_t
-array_buffer_getwritebuf(arrayobject *self, Py_ssize_t index, const void **ptr)
-{
-    if ( index != 0 ) {
-        PyErr_SetString(PyExc_SystemError,
-                        "Accessing non-existent array segment");
-        return -1;
-    }
-    *ptr = (void *)self->ob_item;
-    if (*ptr == NULL)
-        *ptr = emptybuf;
-    return Py_SIZE(self)*self->ob_descr->itemsize;
-}
-
-static Py_ssize_t
-array_buffer_getsegcount(arrayobject *self, Py_ssize_t *lenp)
-{
-    if ( lenp )
-        *lenp = Py_SIZE(self)*self->ob_descr->itemsize;
-    return 1;
-}
-
-static PySequenceMethods array_as_sequence = {
-    (lenfunc)array_length,                      /*sq_length*/
-    (binaryfunc)array_concat,               /*sq_concat*/
-    (ssizeargfunc)array_repeat,                 /*sq_repeat*/
-    (ssizeargfunc)array_item,                           /*sq_item*/
-    (ssizessizeargfunc)array_slice,             /*sq_slice*/
-    (ssizeobjargproc)array_ass_item,                    /*sq_ass_item*/
-    (ssizessizeobjargproc)array_ass_slice,      /*sq_ass_slice*/
-    (objobjproc)array_contains,                 /*sq_contains*/
-    (binaryfunc)array_inplace_concat,           /*sq_inplace_concat*/
-    (ssizeargfunc)array_inplace_repeat          /*sq_inplace_repeat*/
-};
-
-static PyBufferProcs array_as_buffer = {
-    (readbufferproc)array_buffer_getreadbuf,
-    (writebufferproc)array_buffer_getwritebuf,
-    (segcountproc)array_buffer_getsegcount,
-    NULL,
-};
-
-static PyObject *
-array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    char c;
-    PyObject *initial = NULL, *it = NULL;
-    struct arraydescr *descr;
-
-    if (type == &Arraytype && !_PyArg_NoKeywords("array.array()", kwds))
-        return NULL;
-
-    if (!PyArg_ParseTuple(args, "c|O:array", &c, &initial))
-        return NULL;
-
-    if (!(initial == NULL || PyList_Check(initial)
-          || PyString_Check(initial) || PyTuple_Check(initial)
-          || (c == 'u' && PyUnicode_Check(initial)))) {
-        it = PyObject_GetIter(initial);
-        if (it == NULL)
-            return NULL;
-        /* We set initial to NULL so that the subsequent code
-           will create an empty array of the appropriate type
-           and afterwards we can use array_iter_extend to populate
-           the array.
-        */
-        initial = NULL;
-    }
-    for (descr = descriptors; descr->typecode != '\0'; descr++) {
-        if (descr->typecode == c) {
-            PyObject *a;
-            Py_ssize_t len;
-
-            if (initial == NULL || !(PyList_Check(initial)
-                || PyTuple_Check(initial)))
-                len = 0;
-            else
-                len = PySequence_Size(initial);
-
-            a = newarrayobject(type, len, descr);
-            if (a == NULL)
-                return NULL;
-
-            if (len > 0) {
-                Py_ssize_t i;
-                for (i = 0; i < len; i++) {
-                    PyObject *v =
-                        PySequence_GetItem(initial, i);
-                    if (v == NULL) {
-                        Py_DECREF(a);
-                        return NULL;
-                    }
-                    if (setarrayitem(a, i, v) != 0) {
-                        Py_DECREF(v);
-                        Py_DECREF(a);
-                        return NULL;
-                    }
-                    Py_DECREF(v);
-                }
-            } else if (initial != NULL && PyString_Check(initial)) {
-                PyObject *t_initial, *v;
-                t_initial = PyTuple_Pack(1, initial);
-                if (t_initial == NULL) {
-                    Py_DECREF(a);
-                    return NULL;
-                }
-                v = array_fromstring((arrayobject *)a,
-                                         t_initial);
-                Py_DECREF(t_initial);
-                if (v == NULL) {
-                    Py_DECREF(a);
-                    return NULL;
-                }
-                Py_DECREF(v);
-#ifdef Py_USING_UNICODE
-            } else if (initial != NULL && PyUnicode_Check(initial))  {
-                Py_ssize_t n = PyUnicode_GET_DATA_SIZE(initial);
-                if (n > 0) {
-                    arrayobject *self = (arrayobject *)a;
-                    char *item = self->ob_item;
-                    item = (char *)PyMem_Realloc(item, n);
-                    if (item == NULL) {
-                        PyErr_NoMemory();
-                        Py_DECREF(a);
-                        return NULL;
-                    }
-                    self->ob_item = item;
-                    Py_SIZE(self) = n / sizeof(Py_UNICODE);
-                    memcpy(item, PyUnicode_AS_DATA(initial), n);
-                    self->allocated = Py_SIZE(self);
-                }
-#endif
-            }
-            if (it != NULL) {
-                if (array_iter_extend((arrayobject *)a, it) == -1) {
-                    Py_DECREF(it);
-                    Py_DECREF(a);
-                    return NULL;
-                }
-                Py_DECREF(it);
-            }
-            return a;
-        }
-    }
-    PyErr_SetString(PyExc_ValueError,
-        "bad typecode (must be c, b, B, u, h, H, i, I, l, L, f or d)");
-    return NULL;
-}
-
-
-PyDoc_STRVAR(module_doc,
-"This module defines an object type which can efficiently represent\n\
-an array of basic values: characters, integers, floating point\n\
-numbers.  Arrays are sequence types and behave very much like lists,\n\
-except that the type of objects stored in them is constrained.  The\n\
-type is specified at object creation time by using a type code, which\n\
-is a single character.  The following type codes are defined:\n\
-\n\
-    Type code   C Type             Minimum size in bytes \n\
-    'c'         character          1 \n\
-    'b'         signed integer     1 \n\
-    'B'         unsigned integer   1 \n\
-    'u'         Unicode character  2 \n\
-    'h'         signed integer     2 \n\
-    'H'         unsigned integer   2 \n\
-    'i'         signed integer     2 \n\
-    'I'         unsigned integer   2 \n\
-    'l'         signed integer     4 \n\
-    'L'         unsigned integer   4 \n\
-    'f'         floating point     4 \n\
-    'd'         floating point     8 \n\
-\n\
-The constructor is:\n\
-\n\
-array(typecode [, initializer]) -- create a new array\n\
-");
-
-PyDoc_STRVAR(arraytype_doc,
-"array(typecode [, initializer]) -> array\n\
-\n\
-Return a new array whose items are restricted by typecode, and\n\
-initialized from the optional initializer value, which must be a list,\n\
-string. or iterable over elements of the appropriate type.\n\
-\n\
-Arrays represent basic values and behave very much like lists, except\n\
-the type of objects stored in them is constrained.\n\
-\n\
-Methods:\n\
-\n\
-append() -- append a new item to the end of the array\n\
-buffer_info() -- return information giving the current memory info\n\
-byteswap() -- byteswap all the items of the array\n\
-count() -- return number of occurrences of an object\n\
-extend() -- extend array by appending multiple elements from an iterable\n\
-fromfile() -- read items from a file object\n\
-fromlist() -- append items from the list\n\
-fromstring() -- append items from the string\n\
-index() -- return index of first occurrence of an object\n\
-insert() -- insert a new item into the array at a provided position\n\
-pop() -- remove and return item (default last)\n\
-read() -- DEPRECATED, use fromfile()\n\
-remove() -- remove first occurrence of an object\n\
-reverse() -- reverse the order of the items in the array\n\
-tofile() -- write all items to a file object\n\
-tolist() -- return the array converted to an ordinary list\n\
-tostring() -- return the array converted to a string\n\
-write() -- DEPRECATED, use tofile()\n\
-\n\
-Attributes:\n\
-\n\
-typecode -- the typecode character used to create the array\n\
-itemsize -- the length in bytes of one array item\n\
-");
-
-static PyObject *array_iter(arrayobject *ao);
-
-static PyTypeObject Arraytype = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "array.array",
-    sizeof(arrayobject),
-    0,
-    (destructor)array_dealloc,                  /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)array_repr,                       /* tp_repr */
-    0,                                          /* tp_as_number*/
-    &array_as_sequence,                         /* tp_as_sequence*/
-    &array_as_mapping,                          /* tp_as_mapping*/
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    &array_as_buffer,                           /* tp_as_buffer*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_WEAKREFS,  /* tp_flags */
-    arraytype_doc,                              /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    array_richcompare,                          /* tp_richcompare */
-    offsetof(arrayobject, weakreflist),         /* tp_weaklistoffset */
-    (getiterfunc)array_iter,                    /* tp_iter */
-    0,                                          /* tp_iternext */
-    array_methods,                              /* tp_methods */
-    0,                                          /* tp_members */
-    array_getsets,                              /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    PyType_GenericAlloc,                        /* tp_alloc */
-    array_new,                                  /* tp_new */
-    PyObject_Del,                               /* tp_free */
-};
-
-
-/*********************** Array Iterator **************************/
-
-typedef struct {
-    PyObject_HEAD
-    Py_ssize_t                          index;
-    arrayobject                 *ao;
-    PyObject                    * (*getitem)(struct arrayobject *, Py_ssize_t);
-} arrayiterobject;
-
-static PyTypeObject PyArrayIter_Type;
-
-#define PyArrayIter_Check(op) PyObject_TypeCheck(op, &PyArrayIter_Type)
-
-static PyObject *
-array_iter(arrayobject *ao)
-{
-    arrayiterobject *it;
-
-    if (!array_Check(ao)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-
-    it = PyObject_GC_New(arrayiterobject, &PyArrayIter_Type);
-    if (it == NULL)
-        return NULL;
-
-    Py_INCREF(ao);
-    it->ao = ao;
-    it->index = 0;
-    it->getitem = ao->ob_descr->getitem;
-    PyObject_GC_Track(it);
-    return (PyObject *)it;
-}
-
-static PyObject *
-arrayiter_next(arrayiterobject *it)
-{
-    assert(PyArrayIter_Check(it));
-    if (it->index < Py_SIZE(it->ao))
-        return (*it->getitem)(it->ao, it->index++);
-    return NULL;
-}
-
-static void
-arrayiter_dealloc(arrayiterobject *it)
-{
-    PyObject_GC_UnTrack(it);
-    Py_XDECREF(it->ao);
-    PyObject_GC_Del(it);
-}
-
-static int
-arrayiter_traverse(arrayiterobject *it, visitproc visit, void *arg)
-{
-    Py_VISIT(it->ao);
-    return 0;
-}
-
-static PyTypeObject PyArrayIter_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "arrayiterator",                        /* tp_name */
-    sizeof(arrayiterobject),                /* tp_basicsize */
-    0,                                      /* tp_itemsize */
-    /* methods */
-    (destructor)arrayiter_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 */
-    PyObject_GenericGetAttr,                /* tp_getattro */
-    0,                                      /* tp_setattro */
-    0,                                      /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                      /* tp_doc */
-    (traverseproc)arrayiter_traverse,           /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                      /* tp_richcompare */
-    0,                                      /* tp_weaklistoffset */
-    PyObject_SelfIter,                          /* tp_iter */
-    (iternextfunc)arrayiter_next,               /* tp_iternext */
-    0,                                          /* tp_methods */
-};
-
-
-/*********************** Install Module **************************/
-
-/* No functions in array module. */
-static PyMethodDef a_methods[] = {
-    {NULL, NULL, 0, NULL}        /* Sentinel */
-};
-
-
-PyMODINIT_FUNC
-initarray(void)
-{
-    PyObject *m;
-
-    Arraytype.ob_type = &PyType_Type;
-    PyArrayIter_Type.ob_type = &PyType_Type;
-    m = Py_InitModule3("array", a_methods, module_doc);
-    if (m == NULL)
-        return;
-
-    Py_INCREF((PyObject *)&Arraytype);
-    PyModule_AddObject(m, "ArrayType", (PyObject *)&Arraytype);
-    Py_INCREF((PyObject *)&Arraytype);
-    PyModule_AddObject(m, "array", (PyObject *)&Arraytype);
-    /* No need to check the error here, the caller will do that */
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/binascii.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/binascii.c
deleted file mode 100644
index ed39120..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/binascii.c
+++ /dev/null
@@ -1,1531 +0,0 @@
-/*
-** Routines to represent binary data in ASCII and vice-versa
-**
-** This module currently supports the following encodings:
-** uuencode:
-**      each line encodes 45 bytes (except possibly the last)
-**      First char encodes (binary) length, rest data
-**      each char encodes 6 bits, as follows:
-**      binary: 01234567 abcdefgh ijklmnop
-**      ascii:  012345 67abcd efghij klmnop
-**      ASCII encoding method is "excess-space": 000000 is encoded as ' ', etc.
-**      short binary data is zero-extended (so the bits are always in the
-**      right place), this does *not* reflect in the length.
-** base64:
-**      Line breaks are insignificant, but lines are at most 76 chars
-**      each char encodes 6 bits, in similar order as uucode/hqx. Encoding
-**      is done via a table.
-**      Short binary data is filled (in ASCII) with '='.
-** hqx:
-**      File starts with introductory text, real data starts and ends
-**      with colons.
-**      Data consists of three similar parts: info, datafork, resourcefork.
-**      Each part is protected (at the end) with a 16-bit crc
-**      The binary data is run-length encoded, and then ascii-fied:
-**      binary: 01234567 abcdefgh ijklmnop
-**      ascii:  012345 67abcd efghij klmnop
-**      ASCII encoding is table-driven, see the code.
-**      Short binary data results in the runt ascii-byte being output with
-**      the bits in the right place.
-**
-** While I was reading dozens of programs that encode or decode the formats
-** here (documentation? hihi:-) I have formulated Jansen's Observation:
-**
-**      Programs that encode binary data in ASCII are written in
-**      such a style that they are as unreadable as possible. Devices used
-**      include unnecessary global variables, burying important tables
-**      in unrelated sourcefiles, putting functions in include files,
-**      using seemingly-descriptive variable names for different purposes,
-**      calls to empty subroutines and a host of others.
-**
-** I have attempted to break with this tradition, but I guess that that
-** does make the performance sub-optimal. Oh well, too bad...
-**
-** Jack Jansen, CWI, July 1995.
-**
-** Added support for quoted-printable encoding, based on rfc 1521 et al
-** quoted-printable encoding specifies that non printable characters (anything
-** below 32 and above 126) be encoded as =XX where XX is the hexadecimal value
-** of the character.  It also specifies some other behavior to enable 8bit data
-** in a mail message with little difficulty (maximum line sizes, protecting
-** some cases of whitespace, etc).
-**
-** Brandon Long, September 2001.
-*/
-
-#define PY_SSIZE_T_CLEAN
-
-#include "Python.h"
-#ifdef USE_ZLIB_CRC32
-#include "zlib.h"
-#endif
-
-static PyObject *Error;
-static PyObject *Incomplete;
-
-/*
-** hqx lookup table, ascii->binary.
-*/
-
-#define RUNCHAR 0x90
-
-#define DONE 0x7F
-#define SKIP 0x7E
-#define FAIL 0x7D
-
-static unsigned char table_a2b_hqx[256] = {
-/*       ^@    ^A    ^B    ^C    ^D    ^E    ^F    ^G   */
-/* 0*/  FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-/*       \b    \t    \n    ^K    ^L    \r    ^N    ^O   */
-/* 1*/  FAIL, FAIL, SKIP, FAIL, FAIL, SKIP, FAIL, FAIL,
-/*       ^P    ^Q    ^R    ^S    ^T    ^U    ^V    ^W   */
-/* 2*/  FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-/*       ^X    ^Y    ^Z    ^[    ^\    ^]    ^^    ^_   */
-/* 3*/  FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-/*              !     "     #     $     %     &     '   */
-/* 4*/  FAIL, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
-/*        (     )     *     +     ,     -     .     /   */
-/* 5*/  0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, FAIL, FAIL,
-/*        0     1     2     3     4     5     6     7   */
-/* 6*/  0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, FAIL,
-/*        8     9     :     ;     <     =     >     ?   */
-/* 7*/  0x14, 0x15, DONE, FAIL, FAIL, FAIL, FAIL, FAIL,
-/*        @     A     B     C     D     E     F     G   */
-/* 8*/  0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D,
-/*        H     I     J     K     L     M     N     O   */
-/* 9*/  0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, FAIL,
-/*        P     Q     R     S     T     U     V     W   */
-/*10*/  0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, FAIL,
-/*        X     Y     Z     [     \     ]     ^     _   */
-/*11*/  0x2C, 0x2D, 0x2E, 0x2F, FAIL, FAIL, FAIL, FAIL,
-/*        `     a     b     c     d     e     f     g   */
-/*12*/  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, FAIL,
-/*        h     i     j     k     l     m     n     o   */
-/*13*/  0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, FAIL, FAIL,
-/*        p     q     r     s     t     u     v     w   */
-/*14*/  0x3D, 0x3E, 0x3F, FAIL, FAIL, FAIL, FAIL, FAIL,
-/*        x     y     z     {     |     }     ~    ^?   */
-/*15*/  FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-/*16*/  FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-    FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL, FAIL,
-};
-
-static unsigned char table_b2a_hqx[] =
-"!\"#$%&'()*+,-012345689@ABCDEFGHIJKLMNPQRSTUVXYZ[`abcdefhijklmpqr";
-
-static char table_a2b_base64[] = {
-    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
-    52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1, 0,-1,-1, /* Note PAD->0 */
-    -1, 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,-1, -1,-1,-1,-1,
-    -1,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,-1, -1,-1,-1,-1
-};
-
-#define BASE64_PAD '='
-
-/* Max binary chunk size; limited only by available memory */
-#define BASE64_MAXBIN (PY_SSIZE_T_MAX/2 - sizeof(PyStringObject) - 3)
-
-static unsigned char table_b2a_base64[] =
-"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
-
-
-static unsigned short crctab_hqx[256] = {
-    0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
-    0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
-    0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
-    0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
-    0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
-    0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
-    0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
-    0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
-    0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
-    0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
-    0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
-    0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
-    0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
-    0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
-    0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
-    0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
-    0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
-    0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
-    0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
-    0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
-    0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
-    0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
-    0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
-    0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
-    0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
-    0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
-    0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
-    0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
-    0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
-    0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
-    0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
-    0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0,
-};
-
-PyDoc_STRVAR(doc_a2b_uu, "(ascii) -> bin. Decode a line of uuencoded data");
-
-static PyObject *
-binascii_a2b_uu(PyObject *self, PyObject *args)
-{
-    Py_buffer pascii;
-    unsigned char *ascii_data, *bin_data;
-    int leftbits = 0;
-    unsigned char this_ch;
-    unsigned int leftchar = 0;
-    PyObject *rv;
-    Py_ssize_t ascii_len, bin_len;
-
-    if ( !PyArg_ParseTuple(args, "s*:a2b_uu", &pascii) )
-        return NULL;
-    ascii_data = pascii.buf;
-    ascii_len = pascii.len;
-
-    assert(ascii_len >= 0);
-
-    /* First byte: binary data length (in bytes) */
-    bin_len = (*ascii_data++ - ' ') & 077;
-    ascii_len--;
-
-    /* Allocate the buffer */
-    if ( (rv=PyString_FromStringAndSize(NULL, bin_len)) == NULL ) {
-        PyBuffer_Release(&pascii);
-        return NULL;
-    }
-    bin_data = (unsigned char *)PyString_AS_STRING(rv);
-
-    for( ; bin_len > 0 ; ascii_len--, ascii_data++ ) {
-        /* XXX is it really best to add NULs if there's no more data */
-        this_ch = (ascii_len > 0) ? *ascii_data : 0;
-        if ( this_ch == '\n' || this_ch == '\r' || ascii_len <= 0) {
-            /*
-            ** Whitespace. Assume some spaces got eaten at
-            ** end-of-line. (We check this later)
-            */
-            this_ch = 0;
-        } else {
-            /* Check the character for legality
-            ** The 64 in stead of the expected 63 is because
-            ** there are a few uuencodes out there that use
-            ** '`' as zero instead of space.
-            */
-            if ( this_ch < ' ' || this_ch > (' ' + 64)) {
-                PyErr_SetString(Error, "Illegal char");
-                PyBuffer_Release(&pascii);
-                Py_DECREF(rv);
-                return NULL;
-            }
-            this_ch = (this_ch - ' ') & 077;
-        }
-        /*
-        ** Shift it in on the low end, and see if there's
-        ** a byte ready for output.
-        */
-        leftchar = (leftchar << 6) | (this_ch);
-        leftbits += 6;
-        if ( leftbits >= 8 ) {
-            leftbits -= 8;
-            *bin_data++ = (leftchar >> leftbits) & 0xff;
-            leftchar &= ((1 << leftbits) - 1);
-            bin_len--;
-        }
-    }
-    /*
-    ** Finally, check that if there's anything left on the line
-    ** that it's whitespace only.
-    */
-    while( ascii_len-- > 0 ) {
-        this_ch = *ascii_data++;
-        /* Extra '`' may be written as padding in some cases */
-        if ( this_ch != ' ' && this_ch != ' '+64 &&
-             this_ch != '\n' && this_ch != '\r' ) {
-            PyErr_SetString(Error, "Trailing garbage");
-            PyBuffer_Release(&pascii);
-            Py_DECREF(rv);
-            return NULL;
-        }
-    }
-    PyBuffer_Release(&pascii);
-    return rv;
-}
-
-PyDoc_STRVAR(doc_b2a_uu, "(bin) -> ascii. Uuencode line of data");
-
-static PyObject *
-binascii_b2a_uu(PyObject *self, PyObject *args)
-{
-    Py_buffer pbin;
-    unsigned char *ascii_data, *bin_data;
-    int leftbits = 0;
-    unsigned char this_ch;
-    unsigned int leftchar = 0;
-    PyObject *rv;
-    Py_ssize_t bin_len;
-
-    if ( !PyArg_ParseTuple(args, "s*:b2a_uu", &pbin) )
-        return NULL;
-    bin_data = pbin.buf;
-    bin_len = pbin.len;
-    if ( bin_len > 45 ) {
-        /* The 45 is a limit that appears in all uuencode's */
-        PyErr_SetString(Error, "At most 45 bytes at once");
-        PyBuffer_Release(&pbin);
-        return NULL;
-    }
-
-    /* We're lazy and allocate to much (fixed up later) */
-    if ( (rv=PyString_FromStringAndSize(NULL, 2 + (bin_len+2)/3*4)) == NULL ) {
-        PyBuffer_Release(&pbin);
-        return NULL;
-    }
-    ascii_data = (unsigned char *)PyString_AS_STRING(rv);
-
-    /* Store the length */
-    *ascii_data++ = ' ' + (bin_len & 077);
-
-    for( ; bin_len > 0 || leftbits != 0 ; bin_len--, bin_data++ ) {
-        /* Shift the data (or padding) into our buffer */
-        if ( bin_len > 0 )              /* Data */
-            leftchar = (leftchar << 8) | *bin_data;
-        else                            /* Padding */
-            leftchar <<= 8;
-        leftbits += 8;
-
-        /* See if there are 6-bit groups ready */
-        while ( leftbits >= 6 ) {
-            this_ch = (leftchar >> (leftbits-6)) & 0x3f;
-            leftbits -= 6;
-            *ascii_data++ = this_ch + ' ';
-        }
-    }
-    *ascii_data++ = '\n';       /* Append a courtesy newline */
-
-    if (_PyString_Resize(&rv,
-                       (ascii_data -
-                        (unsigned char *)PyString_AS_STRING(rv))) < 0) {
-        Py_DECREF(rv);
-        rv = NULL;
-    }
-    PyBuffer_Release(&pbin);
-    return rv;
-}
-
-
-static int
-binascii_find_valid(unsigned char *s, Py_ssize_t slen, int num)
-{
-    /* Finds & returns the (num+1)th
-    ** valid character for base64, or -1 if none.
-    */
-
-    int ret = -1;
-    unsigned char c, b64val;
-
-    while ((slen > 0) && (ret == -1)) {
-        c = *s;
-        b64val = table_a2b_base64[c & 0x7f];
-        if ( ((c <= 0x7f) && (b64val != (unsigned char)-1)) ) {
-            if (num == 0)
-                ret = *s;
-            num--;
-        }
-
-        s++;
-        slen--;
-    }
-    return ret;
-}
-
-PyDoc_STRVAR(doc_a2b_base64, "(ascii) -> bin. Decode a line of base64 data");
-
-static PyObject *
-binascii_a2b_base64(PyObject *self, PyObject *args)
-{
-    Py_buffer pascii;
-    unsigned char *ascii_data, *bin_data;
-    int leftbits = 0;
-    unsigned char this_ch;
-    unsigned int leftchar = 0;
-    PyObject *rv;
-    Py_ssize_t ascii_len, bin_len;
-    int quad_pos = 0;
-
-    if ( !PyArg_ParseTuple(args, "s*:a2b_base64", &pascii) )
-        return NULL;
-    ascii_data = pascii.buf;
-    ascii_len = pascii.len;
-
-    assert(ascii_len >= 0);
-
-    if (ascii_len > PY_SSIZE_T_MAX - 3) {
-        PyBuffer_Release(&pascii);
-        return PyErr_NoMemory();
-    }
-
-    bin_len = ((ascii_len+3)/4)*3; /* Upper bound, corrected later */
-
-    /* Allocate the buffer */
-    if ( (rv=PyString_FromStringAndSize(NULL, bin_len)) == NULL ) {
-        PyBuffer_Release(&pascii);
-        return NULL;
-    }
-    bin_data = (unsigned char *)PyString_AS_STRING(rv);
-    bin_len = 0;
-
-    for( ; ascii_len > 0; ascii_len--, ascii_data++) {
-        this_ch = *ascii_data;
-
-        if (this_ch > 0x7f ||
-            this_ch == '\r' || this_ch == '\n' || this_ch == ' ')
-            continue;
-
-        /* Check for pad sequences and ignore
-        ** the invalid ones.
-        */
-        if (this_ch == BASE64_PAD) {
-            if ( (quad_pos < 2) ||
-                 ((quad_pos == 2) &&
-                  (binascii_find_valid(ascii_data, ascii_len, 1)
-                   != BASE64_PAD)) )
-            {
-                continue;
-            }
-            else {
-                /* A pad sequence means no more input.
-                ** We've already interpreted the data
-                ** from the quad at this point.
-                */
-                leftbits = 0;
-                break;
-            }
-        }
-
-        this_ch = table_a2b_base64[*ascii_data];
-        if ( this_ch == (unsigned char) -1 )
-            continue;
-
-        /*
-        ** Shift it in on the low end, and see if there's
-        ** a byte ready for output.
-        */
-        quad_pos = (quad_pos + 1) & 0x03;
-        leftchar = (leftchar << 6) | (this_ch);
-        leftbits += 6;
-
-        if ( leftbits >= 8 ) {
-            leftbits -= 8;
-            *bin_data++ = (leftchar >> leftbits) & 0xff;
-            bin_len++;
-            leftchar &= ((1 << leftbits) - 1);
-        }
-    }
-
-    if (leftbits != 0) {
-        PyBuffer_Release(&pascii);
-        PyErr_SetString(Error, "Incorrect padding");
-        Py_DECREF(rv);
-        return NULL;
-    }
-
-    /* And set string size correctly. If the result string is empty
-    ** (because the input was all invalid) return the shared empty
-    ** string instead; _PyString_Resize() won't do this for us.
-    */
-    if (bin_len > 0) {
-        if (_PyString_Resize(&rv, bin_len) < 0) {
-            Py_DECREF(rv);
-            rv = NULL;
-        }
-    }
-    else {
-        Py_DECREF(rv);
-        rv = PyString_FromStringAndSize("", 0);
-    }
-    PyBuffer_Release(&pascii);
-    return rv;
-}
-
-PyDoc_STRVAR(doc_b2a_base64, "(bin) -> ascii. Base64-code line of data");
-
-static PyObject *
-binascii_b2a_base64(PyObject *self, PyObject *args)
-{
-    Py_buffer pbuf;
-    unsigned char *ascii_data, *bin_data;
-    int leftbits = 0;
-    unsigned char this_ch;
-    unsigned int leftchar = 0;
-    PyObject *rv;
-    Py_ssize_t bin_len;
-
-    if ( !PyArg_ParseTuple(args, "s*:b2a_base64", &pbuf) )
-        return NULL;
-    bin_data = pbuf.buf;
-    bin_len = pbuf.len;
-
-    assert(bin_len >= 0);
-
-    if ( bin_len > BASE64_MAXBIN ) {
-        PyErr_SetString(Error, "Too much data for base64 line");
-        PyBuffer_Release(&pbuf);
-        return NULL;
-    }
-
-    /* We're lazy and allocate too much (fixed up later).
-       "+3" leaves room for up to two pad characters and a trailing
-       newline.  Note that 'b' gets encoded as 'Yg==\n' (1 in, 5 out). */
-    if ( (rv=PyString_FromStringAndSize(NULL, bin_len*2 + 3)) == NULL ) {
-        PyBuffer_Release(&pbuf);
-        return NULL;
-    }
-    ascii_data = (unsigned char *)PyString_AS_STRING(rv);
-
-    for( ; bin_len > 0 ; bin_len--, bin_data++ ) {
-        /* Shift the data into our buffer */
-        leftchar = (leftchar << 8) | *bin_data;
-        leftbits += 8;
-
-        /* See if there are 6-bit groups ready */
-        while ( leftbits >= 6 ) {
-            this_ch = (leftchar >> (leftbits-6)) & 0x3f;
-            leftbits -= 6;
-            *ascii_data++ = table_b2a_base64[this_ch];
-        }
-    }
-    if ( leftbits == 2 ) {
-        *ascii_data++ = table_b2a_base64[(leftchar&3) << 4];
-        *ascii_data++ = BASE64_PAD;
-        *ascii_data++ = BASE64_PAD;
-    } else if ( leftbits == 4 ) {
-        *ascii_data++ = table_b2a_base64[(leftchar&0xf) << 2];
-        *ascii_data++ = BASE64_PAD;
-    }
-    *ascii_data++ = '\n';       /* Append a courtesy newline */
-
-    if (_PyString_Resize(&rv,
-                       (ascii_data -
-                        (unsigned char *)PyString_AS_STRING(rv))) < 0) {
-        Py_DECREF(rv);
-        rv = NULL;
-    }
-    PyBuffer_Release(&pbuf);
-    return rv;
-}
-
-PyDoc_STRVAR(doc_a2b_hqx, "ascii -> bin, done. Decode .hqx coding");
-
-static PyObject *
-binascii_a2b_hqx(PyObject *self, PyObject *args)
-{
-    Py_buffer pascii;
-    unsigned char *ascii_data, *bin_data;
-    int leftbits = 0;
-    unsigned char this_ch;
-    unsigned int leftchar = 0;
-    PyObject *rv;
-    Py_ssize_t len;
-    int done = 0;
-
-    if ( !PyArg_ParseTuple(args, "s*:a2b_hqx", &pascii) )
-        return NULL;
-    ascii_data = pascii.buf;
-    len = pascii.len;
-
-    assert(len >= 0);
-
-    if (len > PY_SSIZE_T_MAX - 2) {
-        PyBuffer_Release(&pascii);
-        return PyErr_NoMemory();
-    }
-
-    /* Allocate a string that is too big (fixed later)
-       Add two to the initial length to prevent interning which
-       would preclude subsequent resizing.  */
-    if ( (rv=PyString_FromStringAndSize(NULL, len+2)) == NULL ) {
-        PyBuffer_Release(&pascii);
-        return NULL;
-    }
-    bin_data = (unsigned char *)PyString_AS_STRING(rv);
-
-    for( ; len > 0 ; len--, ascii_data++ ) {
-        /* Get the byte and look it up */
-        this_ch = table_a2b_hqx[*ascii_data];
-        if ( this_ch == SKIP )
-            continue;
-        if ( this_ch == FAIL ) {
-            PyErr_SetString(Error, "Illegal char");
-            PyBuffer_Release(&pascii);
-            Py_DECREF(rv);
-            return NULL;
-        }
-        if ( this_ch == DONE ) {
-            /* The terminating colon */
-            done = 1;
-            break;
-        }
-
-        /* Shift it into the buffer and see if any bytes are ready */
-        leftchar = (leftchar << 6) | (this_ch);
-        leftbits += 6;
-        if ( leftbits >= 8 ) {
-            leftbits -= 8;
-            *bin_data++ = (leftchar >> leftbits) & 0xff;
-            leftchar &= ((1 << leftbits) - 1);
-        }
-    }
-
-    if ( leftbits && !done ) {
-        PyErr_SetString(Incomplete,
-                        "String has incomplete number of bytes");
-        PyBuffer_Release(&pascii);
-        Py_DECREF(rv);
-        return NULL;
-    }
-    if (_PyString_Resize(&rv,
-                       (bin_data -
-                        (unsigned char *)PyString_AS_STRING(rv))) < 0) {
-        Py_DECREF(rv);
-        rv = NULL;
-    }
-    if (rv) {
-        PyObject *rrv = Py_BuildValue("Oi", rv, done);
-        PyBuffer_Release(&pascii);
-        Py_DECREF(rv);
-        return rrv;
-    }
-
-    PyBuffer_Release(&pascii);
-    return NULL;
-}
-
-PyDoc_STRVAR(doc_rlecode_hqx, "Binhex RLE-code binary data");
-
-static PyObject *
-binascii_rlecode_hqx(PyObject *self, PyObject *args)
-{
-    Py_buffer pbuf;
-    unsigned char *in_data, *out_data;
-    PyObject *rv;
-    unsigned char ch;
-    Py_ssize_t in, inend, len;
-
-    if ( !PyArg_ParseTuple(args, "s*:rlecode_hqx", &pbuf) )
-        return NULL;
-    in_data = pbuf.buf;
-    len = pbuf.len;
-
-    assert(len >= 0);
-
-    if (len > PY_SSIZE_T_MAX / 2 - 2) {
-        PyBuffer_Release(&pbuf);
-        return PyErr_NoMemory();
-    }
-
-    /* Worst case: output is twice as big as input (fixed later) */
-    if ( (rv=PyString_FromStringAndSize(NULL, len*2+2)) == NULL ) {
-        PyBuffer_Release(&pbuf);
-        return NULL;
-    }
-    out_data = (unsigned char *)PyString_AS_STRING(rv);
-
-    for( in=0; in<len; in++) {
-        ch = in_data[in];
-        if ( ch == RUNCHAR ) {
-            /* RUNCHAR. Escape it. */
-            *out_data++ = RUNCHAR;
-            *out_data++ = 0;
-        } else {
-            /* Check how many following are the same */
-            for(inend=in+1;
-                inend<len && in_data[inend] == ch &&
-                    inend < in+255;
-                inend++) ;
-            if ( inend - in > 3 ) {
-                /* More than 3 in a row. Output RLE. */
-                *out_data++ = ch;
-                *out_data++ = RUNCHAR;
-                *out_data++ = inend-in;
-                in = inend-1;
-            } else {
-                /* Less than 3. Output the byte itself */
-                *out_data++ = ch;
-            }
-        }
-    }
-    if (_PyString_Resize(&rv,
-                       (out_data -
-                        (unsigned char *)PyString_AS_STRING(rv))) < 0) {
-        Py_DECREF(rv);
-        rv = NULL;
-    }
-    PyBuffer_Release(&pbuf);
-    return rv;
-}
-
-PyDoc_STRVAR(doc_b2a_hqx, "Encode .hqx data");
-
-static PyObject *
-binascii_b2a_hqx(PyObject *self, PyObject *args)
-{
-    Py_buffer pbin;
-    unsigned char *ascii_data, *bin_data;
-    int leftbits = 0;
-    unsigned char this_ch;
-    unsigned int leftchar = 0;
-    PyObject *rv;
-    Py_ssize_t len;
-
-    if ( !PyArg_ParseTuple(args, "s*:b2a_hqx", &pbin) )
-        return NULL;
-    bin_data = pbin.buf;
-    len = pbin.len;
-
-    assert(len >= 0);
-
-    if (len > PY_SSIZE_T_MAX / 2 - 2) {
-        PyBuffer_Release(&pbin);
-        return PyErr_NoMemory();
-    }
-
-    /* Allocate a buffer that is at least large enough */
-    if ( (rv=PyString_FromStringAndSize(NULL, len*2+2)) == NULL ) {
-        PyBuffer_Release(&pbin);
-        return NULL;
-    }
-    ascii_data = (unsigned char *)PyString_AS_STRING(rv);
-
-    for( ; len > 0 ; len--, bin_data++ ) {
-        /* Shift into our buffer, and output any 6bits ready */
-        leftchar = (leftchar << 8) | *bin_data;
-        leftbits += 8;
-        while ( leftbits >= 6 ) {
-            this_ch = (leftchar >> (leftbits-6)) & 0x3f;
-            leftbits -= 6;
-            *ascii_data++ = table_b2a_hqx[this_ch];
-        }
-    }
-    /* Output a possible runt byte */
-    if ( leftbits ) {
-        leftchar <<= (6-leftbits);
-        *ascii_data++ = table_b2a_hqx[leftchar & 0x3f];
-    }
-    if (_PyString_Resize(&rv,
-                       (ascii_data -
-                        (unsigned char *)PyString_AS_STRING(rv))) < 0) {
-        Py_DECREF(rv);
-        rv = NULL;
-    }
-    PyBuffer_Release(&pbin);
-    return rv;
-}
-
-PyDoc_STRVAR(doc_rledecode_hqx, "Decode hexbin RLE-coded string");
-
-static PyObject *
-binascii_rledecode_hqx(PyObject *self, PyObject *args)
-{
-    Py_buffer pin;
-    unsigned char *in_data, *out_data;
-    unsigned char in_byte, in_repeat;
-    PyObject *rv;
-    Py_ssize_t in_len, out_len, out_len_left;
-
-    if ( !PyArg_ParseTuple(args, "s*:rledecode_hqx", &pin) )
-        return NULL;
-    in_data = pin.buf;
-    in_len = pin.len;
-
-    assert(in_len >= 0);
-
-    /* Empty string is a special case */
-    if ( in_len == 0 ) {
-        PyBuffer_Release(&pin);
-        return PyString_FromStringAndSize("", 0);
-    }
-    else if (in_len > PY_SSIZE_T_MAX / 2) {
-        PyBuffer_Release(&pin);
-        return PyErr_NoMemory();
-    }
-
-    /* Allocate a buffer of reasonable size. Resized when needed */
-    out_len = in_len*2;
-    if ( (rv=PyString_FromStringAndSize(NULL, out_len)) == NULL ) {
-        PyBuffer_Release(&pin);
-        return NULL;
-    }
-    out_len_left = out_len;
-    out_data = (unsigned char *)PyString_AS_STRING(rv);
-
-    /*
-    ** We need two macros here to get/put bytes and handle
-    ** end-of-buffer for input and output strings.
-    */
-#define INBYTE(b) \
-    do { \
-             if ( --in_len < 0 ) { \
-                       PyErr_SetString(Incomplete, ""); \
-                       Py_DECREF(rv); \
-                       PyBuffer_Release(&pin); \
-                       return NULL; \
-             } \
-             b = *in_data++; \
-    } while(0)
-
-#define OUTBYTE(b) \
-    do { \
-             if ( --out_len_left < 0 ) { \
-                      if ( out_len > PY_SSIZE_T_MAX / 2) return PyErr_NoMemory(); \
-                      if (_PyString_Resize(&rv, 2*out_len) < 0) \
-                        { Py_DECREF(rv); PyBuffer_Release(&pin); return NULL; } \
-                      out_data = (unsigned char *)PyString_AS_STRING(rv) \
-                                                             + out_len; \
-                      out_len_left = out_len-1; \
-                      out_len = out_len * 2; \
-             } \
-             *out_data++ = b; \
-    } while(0)
-
-        /*
-        ** Handle first byte separately (since we have to get angry
-        ** in case of an orphaned RLE code).
-        */
-        INBYTE(in_byte);
-
-    if (in_byte == RUNCHAR) {
-        INBYTE(in_repeat);
-        if (in_repeat != 0) {
-            /* Note Error, not Incomplete (which is at the end
-            ** of the string only). This is a programmer error.
-            */
-            PyErr_SetString(Error, "Orphaned RLE code at start");
-            PyBuffer_Release(&pin);
-            Py_DECREF(rv);
-            return NULL;
-        }
-        OUTBYTE(RUNCHAR);
-    } else {
-        OUTBYTE(in_byte);
-    }
-
-    while( in_len > 0 ) {
-        INBYTE(in_byte);
-
-        if (in_byte == RUNCHAR) {
-            INBYTE(in_repeat);
-            if ( in_repeat == 0 ) {
-                /* Just an escaped RUNCHAR value */
-                OUTBYTE(RUNCHAR);
-            } else {
-                /* Pick up value and output a sequence of it */
-                in_byte = out_data[-1];
-                while ( --in_repeat > 0 )
-                    OUTBYTE(in_byte);
-            }
-        } else {
-            /* Normal byte */
-            OUTBYTE(in_byte);
-        }
-    }
-    if (_PyString_Resize(&rv,
-                       (out_data -
-                        (unsigned char *)PyString_AS_STRING(rv))) < 0) {
-        Py_DECREF(rv);
-        rv = NULL;
-    }
-    PyBuffer_Release(&pin);
-    return rv;
-}
-
-PyDoc_STRVAR(doc_crc_hqx,
-"(data, oldcrc) -> newcrc. Compute hqx CRC incrementally");
-
-static PyObject *
-binascii_crc_hqx(PyObject *self, PyObject *args)
-{
-    Py_buffer pin;
-    unsigned char *bin_data;
-    unsigned int crc;
-    Py_ssize_t len;
-
-    if ( !PyArg_ParseTuple(args, "s*i:crc_hqx", &pin, &crc) )
-        return NULL;
-    bin_data = pin.buf;
-    len = pin.len;
-
-    while(len-- > 0) {
-        crc=((crc<<8)&0xff00)^crctab_hqx[((crc>>8)&0xff)^*bin_data++];
-    }
-
-    PyBuffer_Release(&pin);
-    return Py_BuildValue("i", crc);
-}
-
-PyDoc_STRVAR(doc_crc32,
-"(data, oldcrc = 0) -> newcrc. Compute CRC-32 incrementally");
-
-#ifdef USE_ZLIB_CRC32
-/* This was taken from zlibmodule.c PyZlib_crc32 (but is PY_SSIZE_T_CLEAN) */
-static PyObject *
-binascii_crc32(PyObject *self, PyObject *args)
-{
-    unsigned int crc32val = 0;  /* crc32(0L, Z_NULL, 0) */
-    Py_buffer pbuf;
-    Byte *buf;
-    Py_ssize_t len;
-    int signed_val;
-
-    if (!PyArg_ParseTuple(args, "s*|I:crc32", &pbuf, &crc32val))
-    return NULL;
-    /* In Python 2.x we return a signed integer regardless of native platform
-     * long size (the 32bit unsigned long is treated as 32-bit signed and sign
-     * extended into a 64-bit long inside the integer object).  3.0 does the
-     * right thing and returns unsigned. http://bugs.python.org/issue1202 */
-    buf = (Byte*)pbuf.buf;
-    len = pbuf.len;
-    signed_val = crc32(crc32val, buf, len);
-    PyBuffer_Release(&pbuf);
-    return PyInt_FromLong(signed_val);
-}
-#else  /* USE_ZLIB_CRC32 */
-/*  Crc - 32 BIT ANSI X3.66 CRC checksum files
-    Also known as: ISO 3307
-**********************************************************************|
-*                                                                    *|
-* Demonstration program to compute the 32-bit CRC used as the frame  *|
-* check sequence in ADCCP (ANSI X3.66, also known as FIPS PUB 71     *|
-* and FED-STD-1003, the U.S. versions of CCITT's X.25 link-level     *|
-* protocol).  The 32-bit FCS was added via the Federal Register,     *|
-* 1 June 1982, p.23798.  I presume but don't know for certain that   *|
-* this polynomial is or will be included in CCITT V.41, which        *|
-* defines the 16-bit CRC (often called CRC-CCITT) polynomial.  FIPS  *|
-* PUB 78 says that the 32-bit FCS reduces otherwise undetected       *|
-* errors by a factor of 10^-5 over 16-bit FCS.                       *|
-*                                                                    *|
-**********************************************************************|
-
- Copyright (C) 1986 Gary S. Brown.  You may use this program, or
- code or tables extracted from it, as desired without restriction.
-
- First, the polynomial itself and its table of feedback terms.  The
- polynomial is
- X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0
- Note that we take it "backwards" and put the highest-order term in
- the lowest-order bit.  The X^32 term is "implied"; the LSB is the
- X^31 term, etc.  The X^0 term (usually shown as "+1") results in
- the MSB being 1.
-
- Note that the usual hardware shift register implementation, which
- is what we're using (we're merely optimizing it by doing eight-bit
- chunks at a time) shifts bits into the lowest-order term.  In our
- implementation, that means shifting towards the right.  Why do we
- do it this way?  Because the calculated CRC must be transmitted in
- order from highest-order term to lowest-order term.  UARTs transmit
- characters in order from LSB to MSB.  By storing the CRC this way,
- we hand it to the UART in the order low-byte to high-byte; the UART
- sends each low-bit to hight-bit; and the result is transmission bit
- by bit from highest- to lowest-order term without requiring any bit
- shuffling on our part.  Reception works similarly.
-
- The feedback terms table consists of 256, 32-bit entries.  Notes:
-
-  1. The table can be generated at runtime if desired; code to do so
-     is shown later.  It might not be obvious, but the feedback
-     terms simply represent the results of eight shift/xor opera-
-     tions for all combinations of data and CRC register values.
-
-  2. The CRC accumulation logic is the same for all CRC polynomials,
-     be they sixteen or thirty-two bits wide.  You simply choose the
-     appropriate table.  Alternatively, because the table can be
-     generated at runtime, you can start by generating the table for
-     the polynomial in question and use exactly the same "updcrc",
-     if your application needn't simultaneously handle two CRC
-     polynomials.  (Note, however, that XMODEM is strange.)
-
-  3. For 16-bit CRCs, the table entries need be only 16 bits wide;
-     of course, 32-bit entries work OK if the high 16 bits are zero.
-
-  4. The values must be right-shifted by eight bits by the "updcrc"
-     logic; the shift must be unsigned (bring in zeroes).  On some
-     hardware you could probably optimize the shift in assembler by
-     using byte-swap instructions.
-********************************************************************/
-
-static unsigned int crc_32_tab[256] = {
-0x00000000U, 0x77073096U, 0xee0e612cU, 0x990951baU, 0x076dc419U,
-0x706af48fU, 0xe963a535U, 0x9e6495a3U, 0x0edb8832U, 0x79dcb8a4U,
-0xe0d5e91eU, 0x97d2d988U, 0x09b64c2bU, 0x7eb17cbdU, 0xe7b82d07U,
-0x90bf1d91U, 0x1db71064U, 0x6ab020f2U, 0xf3b97148U, 0x84be41deU,
-0x1adad47dU, 0x6ddde4ebU, 0xf4d4b551U, 0x83d385c7U, 0x136c9856U,
-0x646ba8c0U, 0xfd62f97aU, 0x8a65c9ecU, 0x14015c4fU, 0x63066cd9U,
-0xfa0f3d63U, 0x8d080df5U, 0x3b6e20c8U, 0x4c69105eU, 0xd56041e4U,
-0xa2677172U, 0x3c03e4d1U, 0x4b04d447U, 0xd20d85fdU, 0xa50ab56bU,
-0x35b5a8faU, 0x42b2986cU, 0xdbbbc9d6U, 0xacbcf940U, 0x32d86ce3U,
-0x45df5c75U, 0xdcd60dcfU, 0xabd13d59U, 0x26d930acU, 0x51de003aU,
-0xc8d75180U, 0xbfd06116U, 0x21b4f4b5U, 0x56b3c423U, 0xcfba9599U,
-0xb8bda50fU, 0x2802b89eU, 0x5f058808U, 0xc60cd9b2U, 0xb10be924U,
-0x2f6f7c87U, 0x58684c11U, 0xc1611dabU, 0xb6662d3dU, 0x76dc4190U,
-0x01db7106U, 0x98d220bcU, 0xefd5102aU, 0x71b18589U, 0x06b6b51fU,
-0x9fbfe4a5U, 0xe8b8d433U, 0x7807c9a2U, 0x0f00f934U, 0x9609a88eU,
-0xe10e9818U, 0x7f6a0dbbU, 0x086d3d2dU, 0x91646c97U, 0xe6635c01U,
-0x6b6b51f4U, 0x1c6c6162U, 0x856530d8U, 0xf262004eU, 0x6c0695edU,
-0x1b01a57bU, 0x8208f4c1U, 0xf50fc457U, 0x65b0d9c6U, 0x12b7e950U,
-0x8bbeb8eaU, 0xfcb9887cU, 0x62dd1ddfU, 0x15da2d49U, 0x8cd37cf3U,
-0xfbd44c65U, 0x4db26158U, 0x3ab551ceU, 0xa3bc0074U, 0xd4bb30e2U,
-0x4adfa541U, 0x3dd895d7U, 0xa4d1c46dU, 0xd3d6f4fbU, 0x4369e96aU,
-0x346ed9fcU, 0xad678846U, 0xda60b8d0U, 0x44042d73U, 0x33031de5U,
-0xaa0a4c5fU, 0xdd0d7cc9U, 0x5005713cU, 0x270241aaU, 0xbe0b1010U,
-0xc90c2086U, 0x5768b525U, 0x206f85b3U, 0xb966d409U, 0xce61e49fU,
-0x5edef90eU, 0x29d9c998U, 0xb0d09822U, 0xc7d7a8b4U, 0x59b33d17U,
-0x2eb40d81U, 0xb7bd5c3bU, 0xc0ba6cadU, 0xedb88320U, 0x9abfb3b6U,
-0x03b6e20cU, 0x74b1d29aU, 0xead54739U, 0x9dd277afU, 0x04db2615U,
-0x73dc1683U, 0xe3630b12U, 0x94643b84U, 0x0d6d6a3eU, 0x7a6a5aa8U,
-0xe40ecf0bU, 0x9309ff9dU, 0x0a00ae27U, 0x7d079eb1U, 0xf00f9344U,
-0x8708a3d2U, 0x1e01f268U, 0x6906c2feU, 0xf762575dU, 0x806567cbU,
-0x196c3671U, 0x6e6b06e7U, 0xfed41b76U, 0x89d32be0U, 0x10da7a5aU,
-0x67dd4accU, 0xf9b9df6fU, 0x8ebeeff9U, 0x17b7be43U, 0x60b08ed5U,
-0xd6d6a3e8U, 0xa1d1937eU, 0x38d8c2c4U, 0x4fdff252U, 0xd1bb67f1U,
-0xa6bc5767U, 0x3fb506ddU, 0x48b2364bU, 0xd80d2bdaU, 0xaf0a1b4cU,
-0x36034af6U, 0x41047a60U, 0xdf60efc3U, 0xa867df55U, 0x316e8eefU,
-0x4669be79U, 0xcb61b38cU, 0xbc66831aU, 0x256fd2a0U, 0x5268e236U,
-0xcc0c7795U, 0xbb0b4703U, 0x220216b9U, 0x5505262fU, 0xc5ba3bbeU,
-0xb2bd0b28U, 0x2bb45a92U, 0x5cb36a04U, 0xc2d7ffa7U, 0xb5d0cf31U,
-0x2cd99e8bU, 0x5bdeae1dU, 0x9b64c2b0U, 0xec63f226U, 0x756aa39cU,
-0x026d930aU, 0x9c0906a9U, 0xeb0e363fU, 0x72076785U, 0x05005713U,
-0x95bf4a82U, 0xe2b87a14U, 0x7bb12baeU, 0x0cb61b38U, 0x92d28e9bU,
-0xe5d5be0dU, 0x7cdcefb7U, 0x0bdbdf21U, 0x86d3d2d4U, 0xf1d4e242U,
-0x68ddb3f8U, 0x1fda836eU, 0x81be16cdU, 0xf6b9265bU, 0x6fb077e1U,
-0x18b74777U, 0x88085ae6U, 0xff0f6a70U, 0x66063bcaU, 0x11010b5cU,
-0x8f659effU, 0xf862ae69U, 0x616bffd3U, 0x166ccf45U, 0xa00ae278U,
-0xd70dd2eeU, 0x4e048354U, 0x3903b3c2U, 0xa7672661U, 0xd06016f7U,
-0x4969474dU, 0x3e6e77dbU, 0xaed16a4aU, 0xd9d65adcU, 0x40df0b66U,
-0x37d83bf0U, 0xa9bcae53U, 0xdebb9ec5U, 0x47b2cf7fU, 0x30b5ffe9U,
-0xbdbdf21cU, 0xcabac28aU, 0x53b39330U, 0x24b4a3a6U, 0xbad03605U,
-0xcdd70693U, 0x54de5729U, 0x23d967bfU, 0xb3667a2eU, 0xc4614ab8U,
-0x5d681b02U, 0x2a6f2b94U, 0xb40bbe37U, 0xc30c8ea1U, 0x5a05df1bU,
-0x2d02ef8dU
-};
-
-static PyObject *
-binascii_crc32(PyObject *self, PyObject *args)
-{ /* By Jim Ahlstrom; All rights transferred to CNRI */
-    Py_buffer pbin;
-    unsigned char *bin_data;
-    unsigned int crc = 0U;      /* initial value of CRC */
-    Py_ssize_t len;
-    int result;
-
-    if ( !PyArg_ParseTuple(args, "s*|I:crc32", &pbin, &crc) )
-        return NULL;
-    bin_data = pbin.buf;
-    len = pbin.len;
-
-    crc = ~ crc;
-    while (len-- > 0)
-        crc = crc_32_tab[(crc ^ *bin_data++) & 0xffU] ^ (crc >> 8);
-        /* Note:  (crc >> 8) MUST zero fill on left */
-
-    result = (int)(crc ^ 0xFFFFFFFFU);
-    PyBuffer_Release(&pbin);
-    return PyInt_FromLong(result);
-}
-#endif  /* USE_ZLIB_CRC32 */
-
-
-static PyObject *
-binascii_hexlify(PyObject *self, PyObject *args)
-{
-    Py_buffer parg;
-    char* argbuf;
-    Py_ssize_t arglen;
-    PyObject *retval;
-    char* retbuf;
-    Py_ssize_t i, j;
-
-    if (!PyArg_ParseTuple(args, "s*:b2a_hex", &parg))
-        return NULL;
-    argbuf = parg.buf;
-    arglen = parg.len;
-
-    assert(arglen >= 0);
-    if (arglen > PY_SSIZE_T_MAX / 2) {
-        PyBuffer_Release(&parg);
-        return PyErr_NoMemory();
-    }
-
-    retval = PyString_FromStringAndSize(NULL, arglen*2);
-    if (!retval) {
-        PyBuffer_Release(&parg);
-        return NULL;
-    }
-    retbuf = PyString_AS_STRING(retval);
-
-    /* make hex version of string, taken from shamodule.c */
-    for (i=j=0; i < arglen; i++) {
-        char c;
-        c = (argbuf[i] >> 4) & 0xf;
-        c = (c>9) ? c+'a'-10 : c + '0';
-        retbuf[j++] = c;
-        c = argbuf[i] & 0xf;
-        c = (c>9) ? c+'a'-10 : c + '0';
-        retbuf[j++] = c;
-    }
-    PyBuffer_Release(&parg);
-    return retval;
-}
-
-PyDoc_STRVAR(doc_hexlify,
-"b2a_hex(data) -> s; Hexadecimal representation of binary data.\n\
-\n\
-This function is also available as \"hexlify()\".");
-
-
-static int
-to_int(int c)
-{
-    if (isdigit(c))
-        return c - '0';
-    else {
-        if (isupper(c))
-            c = tolower(c);
-        if (c >= 'a' && c <= 'f')
-            return c - 'a' + 10;
-    }
-    return -1;
-}
-
-
-static PyObject *
-binascii_unhexlify(PyObject *self, PyObject *args)
-{
-    Py_buffer parg;
-    char* argbuf;
-    Py_ssize_t arglen;
-    PyObject *retval;
-    char* retbuf;
-    Py_ssize_t i, j;
-
-    if (!PyArg_ParseTuple(args, "s*:a2b_hex", &parg))
-        return NULL;
-    argbuf = parg.buf;
-    arglen = parg.len;
-
-    assert(arglen >= 0);
-
-    /* XXX What should we do about strings with an odd length?  Should
-     * we add an implicit leading zero, or a trailing zero?  For now,
-     * raise an exception.
-     */
-    if (arglen % 2) {
-        PyBuffer_Release(&parg);
-        PyErr_SetString(PyExc_TypeError, "Odd-length string");
-        return NULL;
-    }
-
-    retval = PyString_FromStringAndSize(NULL, (arglen/2));
-    if (!retval) {
-        PyBuffer_Release(&parg);
-        return NULL;
-    }
-    retbuf = PyString_AS_STRING(retval);
-
-    for (i=j=0; i < arglen; i += 2) {
-        int top = to_int(Py_CHARMASK(argbuf[i]));
-        int bot = to_int(Py_CHARMASK(argbuf[i+1]));
-        if (top == -1 || bot == -1) {
-            PyErr_SetString(PyExc_TypeError,
-                            "Non-hexadecimal digit found");
-            goto finally;
-        }
-        retbuf[j++] = (top << 4) + bot;
-    }
-    PyBuffer_Release(&parg);
-    return retval;
-
-  finally:
-    PyBuffer_Release(&parg);
-    Py_DECREF(retval);
-    return NULL;
-}
-
-PyDoc_STRVAR(doc_unhexlify,
-"a2b_hex(hexstr) -> s; Binary data of hexadecimal representation.\n\
-\n\
-hexstr must contain an even number of hex digits (upper or lower case).\n\
-This function is also available as \"unhexlify()\"");
-
-static int table_hex[128] = {
-  -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-  -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-  -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-   0, 1, 2, 3,  4, 5, 6, 7,  8, 9,-1,-1, -1,-1,-1,-1,
-  -1,10,11,12, 13,14,15,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-  -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-  -1,10,11,12, 13,14,15,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-  -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1
-};
-
-#define hexval(c) table_hex[(unsigned int)(c)]
-
-#define MAXLINESIZE 76
-
-PyDoc_STRVAR(doc_a2b_qp, "Decode a string of qp-encoded data");
-
-static PyObject*
-binascii_a2b_qp(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    Py_ssize_t in, out;
-    char ch;
-    Py_buffer pdata;
-    unsigned char *data, *odata;
-    Py_ssize_t datalen = 0;
-    PyObject *rv;
-    static char *kwlist[] = {"data", "header", NULL};
-    int header = 0;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s*|i", kwlist, &pdata,
-          &header))
-        return NULL;
-    data = pdata.buf;
-    datalen = pdata.len;
-
-    /* We allocate the output same size as input, this is overkill.
-     * The previous implementation used calloc() so we'll zero out the
-     * memory here too, since PyMem_Malloc() does not guarantee that.
-     */
-    odata = (unsigned char *) PyMem_Malloc(datalen);
-    if (odata == NULL) {
-        PyBuffer_Release(&pdata);
-        PyErr_NoMemory();
-        return NULL;
-    }
-    memset(odata, 0, datalen);
-
-    in = out = 0;
-    while (in < datalen) {
-        if (data[in] == '=') {
-            in++;
-            if (in >= datalen) break;
-            /* Soft line breaks */
-            if ((data[in] == '\n') || (data[in] == '\r')) {
-                if (data[in] != '\n') {
-                    while (in < datalen && data[in] != '\n') in++;
-                }
-                if (in < datalen) in++;
-            }
-            else if (data[in] == '=') {
-                /* broken case from broken python qp */
-                odata[out++] = '=';
-                in++;
-            }
-            else if (((data[in] >= 'A' && data[in] <= 'F') ||
-                      (data[in] >= 'a' && data[in] <= 'f') ||
-                      (data[in] >= '0' && data[in] <= '9')) &&
-                     ((data[in+1] >= 'A' && data[in+1] <= 'F') ||
-                      (data[in+1] >= 'a' && data[in+1] <= 'f') ||
-                      (data[in+1] >= '0' && data[in+1] <= '9'))) {
-                /* hexval */
-                ch = hexval(data[in]) << 4;
-                in++;
-                ch |= hexval(data[in]);
-                in++;
-                odata[out++] = ch;
-            }
-            else {
-              odata[out++] = '=';
-            }
-        }
-        else if (header && data[in] == '_') {
-            odata[out++] = ' ';
-            in++;
-        }
-        else {
-            odata[out] = data[in];
-            in++;
-            out++;
-        }
-    }
-    if ((rv = PyString_FromStringAndSize((char *)odata, out)) == NULL) {
-        PyBuffer_Release(&pdata);
-        PyMem_Free(odata);
-        return NULL;
-    }
-    PyBuffer_Release(&pdata);
-    PyMem_Free(odata);
-    return rv;
-}
-
-static int
-to_hex (unsigned char ch, unsigned char *s)
-{
-    unsigned int uvalue = ch;
-
-    s[1] = "0123456789ABCDEF"[uvalue % 16];
-    uvalue = (uvalue / 16);
-    s[0] = "0123456789ABCDEF"[uvalue % 16];
-    return 0;
-}
-
-PyDoc_STRVAR(doc_b2a_qp,
-"b2a_qp(data, quotetabs=0, istext=1, header=0) -> s; \n\
- Encode a string using quoted-printable encoding. \n\
-\n\
-On encoding, when istext is set, newlines are not encoded, and white \n\
-space at end of lines is.  When istext is not set, \\r and \\n (CR/LF) are \n\
-both encoded.  When quotetabs is set, space and tabs are encoded.");
-
-/* XXX: This is ridiculously complicated to be backward compatible
- * (mostly) with the quopri module.  It doesn't re-create the quopri
- * module bug where text ending in CRLF has the CR encoded */
-static PyObject*
-binascii_b2a_qp (PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    Py_ssize_t in, out;
-    Py_buffer pdata;
-    unsigned char *data, *odata;
-    Py_ssize_t datalen = 0, odatalen = 0;
-    PyObject *rv;
-    unsigned int linelen = 0;
-    static char *kwlist[] = {"data", "quotetabs", "istext",
-                                   "header", NULL};
-    int istext = 1;
-    int quotetabs = 0;
-    int header = 0;
-    unsigned char ch;
-    int crlf = 0;
-    unsigned char *p;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s*|iii", kwlist, &pdata,
-          &quotetabs, &istext, &header))
-        return NULL;
-    data = pdata.buf;
-    datalen = pdata.len;
-
-    /* See if this string is using CRLF line ends */
-    /* XXX: this function has the side effect of converting all of
-     * the end of lines to be the same depending on this detection
-     * here */
-    p = (unsigned char *) memchr(data, '\n', datalen);
-    if ((p != NULL) && (p > data) && (*(p-1) == '\r'))
-        crlf = 1;
-
-    /* First, scan to see how many characters need to be encoded */
-    in = 0;
-    while (in < datalen) {
-        if ((data[in] > 126) ||
-            (data[in] == '=') ||
-            (header && data[in] == '_') ||
-            ((data[in] == '.') && (linelen == 0) &&
-             (data[in+1] == '\n' || data[in+1] == '\r' || data[in+1] == 0)) ||
-            (!istext && ((data[in] == '\r') || (data[in] == '\n'))) ||
-            ((data[in] == '\t' || data[in] == ' ') && (in + 1 == datalen)) ||
-            ((data[in] < 33) &&
-             (data[in] != '\r') && (data[in] != '\n') &&
-             (quotetabs ||
-            (!quotetabs && ((data[in] != '\t') && (data[in] != ' '))))))
-        {
-            if ((linelen + 3) >= MAXLINESIZE) {
-                linelen = 0;
-                if (crlf)
-                    odatalen += 3;
-                else
-                    odatalen += 2;
-            }
-            linelen += 3;
-            odatalen += 3;
-            in++;
-        }
-        else {
-            if (istext &&
-                ((data[in] == '\n') ||
-                 ((in+1 < datalen) && (data[in] == '\r') &&
-                 (data[in+1] == '\n'))))
-            {
-                linelen = 0;
-                /* Protect against whitespace on end of line */
-                if (in && ((data[in-1] == ' ') || (data[in-1] == '\t')))
-                    odatalen += 2;
-                if (crlf)
-                    odatalen += 2;
-                else
-                    odatalen += 1;
-                if (data[in] == '\r')
-                    in += 2;
-                else
-                    in++;
-            }
-            else {
-                if ((in + 1 != datalen) &&
-                    (data[in+1] != '\n') &&
-                    (linelen + 1) >= MAXLINESIZE) {
-                    linelen = 0;
-                    if (crlf)
-                        odatalen += 3;
-                    else
-                        odatalen += 2;
-                }
-                linelen++;
-                odatalen++;
-                in++;
-            }
-        }
-    }
-
-    /* We allocate the output same size as input, this is overkill.
-     * The previous implementation used calloc() so we'll zero out the
-     * memory here too, since PyMem_Malloc() does not guarantee that.
-     */
-    odata = (unsigned char *) PyMem_Malloc(odatalen);
-    if (odata == NULL) {
-        PyBuffer_Release(&pdata);
-        PyErr_NoMemory();
-        return NULL;
-    }
-    memset(odata, 0, odatalen);
-
-    in = out = linelen = 0;
-    while (in < datalen) {
-        if ((data[in] > 126) ||
-            (data[in] == '=') ||
-            (header && data[in] == '_') ||
-            ((data[in] == '.') && (linelen == 0) &&
-             (data[in+1] == '\n' || data[in+1] == '\r' || data[in+1] == 0)) ||
-            (!istext && ((data[in] == '\r') || (data[in] == '\n'))) ||
-            ((data[in] == '\t' || data[in] == ' ') && (in + 1 == datalen)) ||
-            ((data[in] < 33) &&
-             (data[in] != '\r') && (data[in] != '\n') &&
-             (quotetabs ||
-            (!quotetabs && ((data[in] != '\t') && (data[in] != ' '))))))
-        {
-            if ((linelen + 3 )>= MAXLINESIZE) {
-                odata[out++] = '=';
-                if (crlf) odata[out++] = '\r';
-                odata[out++] = '\n';
-                linelen = 0;
-            }
-            odata[out++] = '=';
-            to_hex(data[in], &odata[out]);
-            out += 2;
-            in++;
-            linelen += 3;
-        }
-        else {
-            if (istext &&
-                ((data[in] == '\n') ||
-                 ((in+1 < datalen) && (data[in] == '\r') &&
-                 (data[in+1] == '\n'))))
-            {
-                linelen = 0;
-                /* Protect against whitespace on end of line */
-                if (out && ((odata[out-1] == ' ') || (odata[out-1] == '\t'))) {
-                    ch = odata[out-1];
-                    odata[out-1] = '=';
-                    to_hex(ch, &odata[out]);
-                    out += 2;
-                }
-
-                if (crlf) odata[out++] = '\r';
-                odata[out++] = '\n';
-                if (data[in] == '\r')
-                    in += 2;
-                else
-                    in++;
-            }
-            else {
-                if ((in + 1 != datalen) &&
-                    (data[in+1] != '\n') &&
-                    (linelen + 1) >= MAXLINESIZE) {
-                    odata[out++] = '=';
-                    if (crlf) odata[out++] = '\r';
-                    odata[out++] = '\n';
-                    linelen = 0;
-                }
-                linelen++;
-                if (header && data[in] == ' ') {
-                    odata[out++] = '_';
-                    in++;
-                }
-                else {
-                    odata[out++] = data[in++];
-                }
-            }
-        }
-    }
-    if ((rv = PyString_FromStringAndSize((char *)odata, out)) == NULL) {
-        PyBuffer_Release(&pdata);
-        PyMem_Free(odata);
-        return NULL;
-    }
-    PyBuffer_Release(&pdata);
-    PyMem_Free(odata);
-    return rv;
-}
-
-/* List of functions defined in the module */
-
-static struct PyMethodDef binascii_module_methods[] = {
-    {"a2b_uu",     binascii_a2b_uu,     METH_VARARGS, doc_a2b_uu},
-    {"b2a_uu",     binascii_b2a_uu,     METH_VARARGS, doc_b2a_uu},
-    {"a2b_base64", binascii_a2b_base64, METH_VARARGS, doc_a2b_base64},
-    {"b2a_base64", binascii_b2a_base64, METH_VARARGS, doc_b2a_base64},
-    {"a2b_hqx",    binascii_a2b_hqx,    METH_VARARGS, doc_a2b_hqx},
-    {"b2a_hqx",    binascii_b2a_hqx,    METH_VARARGS, doc_b2a_hqx},
-    {"b2a_hex",    binascii_hexlify,    METH_VARARGS, doc_hexlify},
-    {"a2b_hex",    binascii_unhexlify,  METH_VARARGS, doc_unhexlify},
-    {"hexlify",    binascii_hexlify,    METH_VARARGS, doc_hexlify},
-    {"unhexlify",  binascii_unhexlify,  METH_VARARGS, doc_unhexlify},
-    {"rlecode_hqx",   binascii_rlecode_hqx, METH_VARARGS, doc_rlecode_hqx},
-    {"rledecode_hqx", binascii_rledecode_hqx, METH_VARARGS,
-     doc_rledecode_hqx},
-    {"crc_hqx",    binascii_crc_hqx,    METH_VARARGS, doc_crc_hqx},
-    {"crc32",      binascii_crc32,      METH_VARARGS, doc_crc32},
-    {"a2b_qp", (PyCFunction)binascii_a2b_qp, METH_VARARGS | METH_KEYWORDS,
-      doc_a2b_qp},
-    {"b2a_qp", (PyCFunction)binascii_b2a_qp, METH_VARARGS | METH_KEYWORDS,
-      doc_b2a_qp},
-    {NULL, NULL}                             /* sentinel */
-};
-
-
-/* Initialization function for the module (*must* be called initbinascii) */
-PyDoc_STRVAR(doc_binascii, "Conversion between binary data and ASCII");
-
-PyMODINIT_FUNC
-initbinascii(void)
-{
-    PyObject *m, *d, *x;
-
-    /* Create the module and add the functions */
-    m = Py_InitModule("binascii", binascii_module_methods);
-    if (m == NULL)
-        return;
-
-    d = PyModule_GetDict(m);
-    x = PyString_FromString(doc_binascii);
-    PyDict_SetItemString(d, "__doc__", x);
-    Py_XDECREF(x);
-
-    Error = PyErr_NewException("binascii.Error", NULL, NULL);
-    PyDict_SetItemString(d, "Error", Error);
-    Incomplete = PyErr_NewException("binascii.Incomplete", NULL, NULL);
-    PyDict_SetItemString(d, "Incomplete", Incomplete);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/bz2module.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/bz2module.c
deleted file mode 100644
index 271557a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/bz2module.c
+++ /dev/null
@@ -1,2344 +0,0 @@
-/*
-
-python-bz2 - python bz2 library interface
-
-Copyright (c) 2002  Gustavo Niemeyer <niemeyer@conectiva.com>
-Copyright (c) 2002  Python Software Foundation; All Rights Reserved
-
-*/
-
-#include "Python.h"
-#include <stdio.h>
-#include <bzlib.h>
-#include "structmember.h"
-
-#ifdef WITH_THREAD
-#include "pythread.h"
-#endif
-
-static char __author__[] =
-"The bz2 python module was written by:\n\
-\n\
-    Gustavo Niemeyer <niemeyer@conectiva.com>\n\
-";
-
-/* Our very own off_t-like type, 64-bit if possible */
-/* copied from Objects/fileobject.c */
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-typedef off_t Py_off_t;
-#elif SIZEOF_OFF_T >= 8
-typedef off_t Py_off_t;
-#elif SIZEOF_FPOS_T >= 8
-typedef fpos_t Py_off_t;
-#else
-#error "Large file support, but neither off_t nor fpos_t is large enough."
-#endif
-
-#define BUF(v) PyString_AS_STRING((PyStringObject *)v)
-
-#define MODE_CLOSED   0
-#define MODE_READ     1
-#define MODE_READ_EOF 2
-#define MODE_WRITE    3
-
-#define BZ2FileObject_Check(v)  (Py_TYPE(v) == &BZ2File_Type)
-
-
-#ifdef BZ_CONFIG_ERROR
-
-#if SIZEOF_LONG >= 8
-#define BZS_TOTAL_OUT(bzs) \
-    (((long)bzs->total_out_hi32 << 32) + bzs->total_out_lo32)
-#elif SIZEOF_LONG_LONG >= 8
-#define BZS_TOTAL_OUT(bzs) \
-    (((PY_LONG_LONG)bzs->total_out_hi32 << 32) + bzs->total_out_lo32)
-#else
-#define BZS_TOTAL_OUT(bzs) \
-    bzs->total_out_lo32
-#endif
-
-#else /* ! BZ_CONFIG_ERROR */
-
-#define BZ2_bzRead bzRead
-#define BZ2_bzReadOpen bzReadOpen
-#define BZ2_bzReadClose bzReadClose
-#define BZ2_bzWrite bzWrite
-#define BZ2_bzWriteOpen bzWriteOpen
-#define BZ2_bzWriteClose bzWriteClose
-#define BZ2_bzCompress bzCompress
-#define BZ2_bzCompressInit bzCompressInit
-#define BZ2_bzCompressEnd bzCompressEnd
-#define BZ2_bzDecompress bzDecompress
-#define BZ2_bzDecompressInit bzDecompressInit
-#define BZ2_bzDecompressEnd bzDecompressEnd
-
-#define BZS_TOTAL_OUT(bzs) bzs->total_out
-
-#endif /* ! BZ_CONFIG_ERROR */
-
-
-#ifdef WITH_THREAD
-#define ACQUIRE_LOCK(obj) do { \
-    if (!PyThread_acquire_lock(obj->lock, 0)) { \
-        Py_BEGIN_ALLOW_THREADS \
-        PyThread_acquire_lock(obj->lock, 1); \
-        Py_END_ALLOW_THREADS \
-    } } while(0)
-#define RELEASE_LOCK(obj) PyThread_release_lock(obj->lock)
-#else
-#define ACQUIRE_LOCK(obj)
-#define RELEASE_LOCK(obj)
-#endif
-
-/* Bits in f_newlinetypes */
-#define NEWLINE_UNKNOWN 0       /* No newline seen, yet */
-#define NEWLINE_CR 1            /* \r newline seen */
-#define NEWLINE_LF 2            /* \n newline seen */
-#define NEWLINE_CRLF 4          /* \r\n newline seen */
-
-/* ===================================================================== */
-/* Structure definitions. */
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *file;
-
-    char* f_buf;                /* Allocated readahead buffer */
-    char* f_bufend;             /* Points after last occupied position */
-    char* f_bufptr;             /* Current buffer position */
-
-    int f_softspace;            /* Flag used by 'print' command */
-
-    int f_univ_newline;         /* Handle any newline convention */
-    int f_newlinetypes;         /* Types of newlines seen */
-    int f_skipnextlf;           /* Skip next \n */
-
-    BZFILE *fp;
-    int mode;
-    Py_off_t pos;
-    Py_off_t size;
-#ifdef WITH_THREAD
-    PyThread_type_lock lock;
-#endif
-} BZ2FileObject;
-
-typedef struct {
-    PyObject_HEAD
-    bz_stream bzs;
-    int running;
-#ifdef WITH_THREAD
-    PyThread_type_lock lock;
-#endif
-} BZ2CompObject;
-
-typedef struct {
-    PyObject_HEAD
-    bz_stream bzs;
-    int running;
-    PyObject *unused_data;
-#ifdef WITH_THREAD
-    PyThread_type_lock lock;
-#endif
-} BZ2DecompObject;
-
-/* ===================================================================== */
-/* Utility functions. */
-
-/* Refuse regular I/O if there's data in the iteration-buffer.
- * Mixing them would cause data to arrive out of order, as the read*
- * methods don't use the iteration buffer. */
-static int
-check_iterbuffered(BZ2FileObject *f)
-{
-    if (f->f_buf != NULL &&
-        (f->f_bufend - f->f_bufptr) > 0 &&
-        f->f_buf[0] != '\0') {
-        PyErr_SetString(PyExc_ValueError,
-            "Mixing iteration and read methods would lose data");
-        return -1;
-    }
-    return 0;
-}
-
-static int
-Util_CatchBZ2Error(int bzerror)
-{
-    int ret = 0;
-    switch(bzerror) {
-        case BZ_OK:
-        case BZ_STREAM_END:
-            break;
-
-#ifdef BZ_CONFIG_ERROR
-        case BZ_CONFIG_ERROR:
-            PyErr_SetString(PyExc_SystemError,
-                            "the bz2 library was not compiled "
-                            "correctly");
-            ret = 1;
-            break;
-#endif
-
-        case BZ_PARAM_ERROR:
-            PyErr_SetString(PyExc_ValueError,
-                            "the bz2 library has received wrong "
-                            "parameters");
-            ret = 1;
-            break;
-
-        case BZ_MEM_ERROR:
-            PyErr_NoMemory();
-            ret = 1;
-            break;
-
-        case BZ_DATA_ERROR:
-        case BZ_DATA_ERROR_MAGIC:
-            PyErr_SetString(PyExc_IOError, "invalid data stream");
-            ret = 1;
-            break;
-
-        case BZ_IO_ERROR:
-            PyErr_SetString(PyExc_IOError, "unknown IO error");
-            ret = 1;
-            break;
-
-        case BZ_UNEXPECTED_EOF:
-            PyErr_SetString(PyExc_EOFError,
-                            "compressed file ended before the "
-                            "logical end-of-stream was detected");
-            ret = 1;
-            break;
-
-        case BZ_SEQUENCE_ERROR:
-            PyErr_SetString(PyExc_RuntimeError,
-                            "wrong sequence of bz2 library "
-                            "commands used");
-            ret = 1;
-            break;
-    }
-    return ret;
-}
-
-#if BUFSIZ < 8192
-#define SMALLCHUNK 8192
-#else
-#define SMALLCHUNK BUFSIZ
-#endif
-
-#if SIZEOF_INT < 4
-#define BIGCHUNK  (512 * 32)
-#else
-#define BIGCHUNK  (512 * 1024)
-#endif
-
-/* This is a hacked version of Python's fileobject.c:new_buffersize(). */
-static size_t
-Util_NewBufferSize(size_t currentsize)
-{
-    if (currentsize > SMALLCHUNK) {
-        /* Keep doubling until we reach BIGCHUNK;
-           then keep adding BIGCHUNK. */
-        if (currentsize <= BIGCHUNK)
-            return currentsize + currentsize;
-        else
-            return currentsize + BIGCHUNK;
-    }
-    return currentsize + SMALLCHUNK;
-}
-
-/* This is a hacked version of Python's fileobject.c:get_line(). */
-static PyObject *
-Util_GetLine(BZ2FileObject *f, int n)
-{
-    char c;
-    char *buf, *end;
-    size_t total_v_size;        /* total # of slots in buffer */
-    size_t used_v_size;         /* # used slots in buffer */
-    size_t increment;       /* amount to increment the buffer */
-    PyObject *v;
-    int bzerror;
-    int bytes_read;
-    int newlinetypes = f->f_newlinetypes;
-    int skipnextlf = f->f_skipnextlf;
-    int univ_newline = f->f_univ_newline;
-
-    total_v_size = n > 0 ? n : 100;
-    v = PyString_FromStringAndSize((char *)NULL, total_v_size);
-    if (v == NULL)
-        return NULL;
-
-    buf = BUF(v);
-    end = buf + total_v_size;
-
-    for (;;) {
-        Py_BEGIN_ALLOW_THREADS
-        while (buf != end) {
-            bytes_read = BZ2_bzRead(&bzerror, f->fp, &c, 1);
-            f->pos++;
-            if (bytes_read == 0) break;
-            if (univ_newline) {
-                if (skipnextlf) {
-                    skipnextlf = 0;
-                    if (c == '\n') {
-                        /* Seeing a \n here with skipnextlf true means we
-                         * saw a \r before.
-                         */
-                        newlinetypes |= NEWLINE_CRLF;
-                        if (bzerror != BZ_OK) break;
-                        bytes_read = BZ2_bzRead(&bzerror, f->fp, &c, 1);
-                        f->pos++;
-                        if (bytes_read == 0) break;
-                    } else {
-                        newlinetypes |= NEWLINE_CR;
-                    }
-                }
-                if (c == '\r') {
-                    skipnextlf = 1;
-                    c = '\n';
-                } else if (c == '\n')
-                    newlinetypes |= NEWLINE_LF;
-            }
-            *buf++ = c;
-            if (bzerror != BZ_OK || c == '\n') break;
-        }
-        if (univ_newline && bzerror == BZ_STREAM_END && skipnextlf)
-            newlinetypes |= NEWLINE_CR;
-        Py_END_ALLOW_THREADS
-        f->f_newlinetypes = newlinetypes;
-        f->f_skipnextlf = skipnextlf;
-        if (bzerror == BZ_STREAM_END) {
-            f->size = f->pos;
-            f->mode = MODE_READ_EOF;
-            break;
-        } else if (bzerror != BZ_OK) {
-            Util_CatchBZ2Error(bzerror);
-            Py_DECREF(v);
-            return NULL;
-        }
-        if (c == '\n')
-            break;
-        /* Must be because buf == end */
-        if (n > 0)
-            break;
-        used_v_size = total_v_size;
-        increment = total_v_size >> 2; /* mild exponential growth */
-        total_v_size += increment;
-        if (total_v_size > INT_MAX) {
-            PyErr_SetString(PyExc_OverflowError,
-                "line is longer than a Python string can hold");
-            Py_DECREF(v);
-            return NULL;
-        }
-        if (_PyString_Resize(&v, total_v_size) < 0)
-            return NULL;
-        buf = BUF(v) + used_v_size;
-        end = BUF(v) + total_v_size;
-    }
-
-    used_v_size = buf - BUF(v);
-    if (used_v_size != total_v_size)
-        _PyString_Resize(&v, used_v_size);
-    return v;
-}
-
-/* This is a hacked version of Python's
- * fileobject.c:Py_UniversalNewlineFread(). */
-size_t
-Util_UnivNewlineRead(int *bzerror, BZFILE *stream,
-                     char* buf, size_t n, BZ2FileObject *f)
-{
-    char *dst = buf;
-    int newlinetypes, skipnextlf;
-
-    assert(buf != NULL);
-    assert(stream != NULL);
-
-    if (!f->f_univ_newline)
-        return BZ2_bzRead(bzerror, stream, buf, n);
-
-    newlinetypes = f->f_newlinetypes;
-    skipnextlf = f->f_skipnextlf;
-
-    /* Invariant:  n is the number of bytes remaining to be filled
-     * in the buffer.
-     */
-    while (n) {
-        size_t nread;
-        int shortread;
-        char *src = dst;
-
-        nread = BZ2_bzRead(bzerror, stream, dst, n);
-        assert(nread <= n);
-        n -= nread; /* assuming 1 byte out for each in; will adjust */
-        shortread = n != 0;             /* true iff EOF or error */
-        while (nread--) {
-            char c = *src++;
-            if (c == '\r') {
-                /* Save as LF and set flag to skip next LF. */
-                *dst++ = '\n';
-                skipnextlf = 1;
-            }
-            else if (skipnextlf && c == '\n') {
-                /* Skip LF, and remember we saw CR LF. */
-                skipnextlf = 0;
-                newlinetypes |= NEWLINE_CRLF;
-                ++n;
-            }
-            else {
-                /* Normal char to be stored in buffer.  Also
-                 * update the newlinetypes flag if either this
-                 * is an LF or the previous char was a CR.
-                 */
-                if (c == '\n')
-                    newlinetypes |= NEWLINE_LF;
-                else if (skipnextlf)
-                    newlinetypes |= NEWLINE_CR;
-                *dst++ = c;
-                skipnextlf = 0;
-            }
-        }
-        if (shortread) {
-            /* If this is EOF, update type flags. */
-            if (skipnextlf && *bzerror == BZ_STREAM_END)
-                newlinetypes |= NEWLINE_CR;
-            break;
-        }
-    }
-    f->f_newlinetypes = newlinetypes;
-    f->f_skipnextlf = skipnextlf;
-    return dst - buf;
-}
-
-/* This is a hacked version of Python's fileobject.c:drop_readahead(). */
-static void
-Util_DropReadAhead(BZ2FileObject *f)
-{
-    if (f->f_buf != NULL) {
-        PyMem_Free(f->f_buf);
-        f->f_buf = NULL;
-    }
-}
-
-/* This is a hacked version of Python's fileobject.c:readahead(). */
-static int
-Util_ReadAhead(BZ2FileObject *f, int bufsize)
-{
-    int chunksize;
-    int bzerror;
-
-    if (f->f_buf != NULL) {
-        if((f->f_bufend - f->f_bufptr) >= 1)
-            return 0;
-        else
-            Util_DropReadAhead(f);
-    }
-    if (f->mode == MODE_READ_EOF) {
-        f->f_bufptr = f->f_buf;
-        f->f_bufend = f->f_buf;
-        return 0;
-    }
-    if ((f->f_buf = PyMem_Malloc(bufsize)) == NULL) {
-        PyErr_NoMemory();
-        return -1;
-    }
-    Py_BEGIN_ALLOW_THREADS
-    chunksize = Util_UnivNewlineRead(&bzerror, f->fp, f->f_buf,
-                                     bufsize, f);
-    Py_END_ALLOW_THREADS
-    f->pos += chunksize;
-    if (bzerror == BZ_STREAM_END) {
-        f->size = f->pos;
-        f->mode = MODE_READ_EOF;
-    } else if (bzerror != BZ_OK) {
-        Util_CatchBZ2Error(bzerror);
-        Util_DropReadAhead(f);
-        return -1;
-    }
-    f->f_bufptr = f->f_buf;
-    f->f_bufend = f->f_buf + chunksize;
-    return 0;
-}
-
-/* This is a hacked version of Python's
- * fileobject.c:readahead_get_line_skip(). */
-static PyStringObject *
-Util_ReadAheadGetLineSkip(BZ2FileObject *f, int skip, int bufsize)
-{
-    PyStringObject* s;
-    char *bufptr;
-    char *buf;
-    int len;
-
-    if (f->f_buf == NULL)
-        if (Util_ReadAhead(f, bufsize) < 0)
-            return NULL;
-
-    len = f->f_bufend - f->f_bufptr;
-    if (len == 0)
-        return (PyStringObject *)
-            PyString_FromStringAndSize(NULL, skip);
-    bufptr = memchr(f->f_bufptr, '\n', len);
-    if (bufptr != NULL) {
-        bufptr++;                               /* Count the '\n' */
-        len = bufptr - f->f_bufptr;
-        s = (PyStringObject *)
-            PyString_FromStringAndSize(NULL, skip+len);
-        if (s == NULL)
-            return NULL;
-        memcpy(PyString_AS_STRING(s)+skip, f->f_bufptr, len);
-        f->f_bufptr = bufptr;
-        if (bufptr == f->f_bufend)
-            Util_DropReadAhead(f);
-    } else {
-        bufptr = f->f_bufptr;
-        buf = f->f_buf;
-        f->f_buf = NULL;                /* Force new readahead buffer */
-        s = Util_ReadAheadGetLineSkip(f, skip+len,
-                                      bufsize + (bufsize>>2));
-        if (s == NULL) {
-            PyMem_Free(buf);
-            return NULL;
-        }
-        memcpy(PyString_AS_STRING(s)+skip, bufptr, len);
-        PyMem_Free(buf);
-    }
-    return s;
-}
-
-/* ===================================================================== */
-/* Methods of BZ2File. */
-
-PyDoc_STRVAR(BZ2File_read__doc__,
-"read([size]) -> string\n\
-\n\
-Read at most size uncompressed bytes, returned as a string. If the size\n\
-argument is negative or omitted, read until EOF is reached.\n\
-");
-
-/* This is a hacked version of Python's fileobject.c:file_read(). */
-static PyObject *
-BZ2File_read(BZ2FileObject *self, PyObject *args)
-{
-    long bytesrequested = -1;
-    size_t bytesread, buffersize, chunksize;
-    int bzerror;
-    PyObject *ret = NULL;
-
-    if (!PyArg_ParseTuple(args, "|l:read", &bytesrequested))
-        return NULL;
-
-    ACQUIRE_LOCK(self);
-    switch (self->mode) {
-        case MODE_READ:
-            break;
-        case MODE_READ_EOF:
-            ret = PyString_FromString("");
-            goto cleanup;
-        case MODE_CLOSED:
-            PyErr_SetString(PyExc_ValueError,
-                            "I/O operation on closed file");
-            goto cleanup;
-        default:
-            PyErr_SetString(PyExc_IOError,
-                            "file is not ready for reading");
-            goto cleanup;
-    }
-
-    /* refuse to mix with f.next() */
-    if (check_iterbuffered(self))
-        goto cleanup;
-
-    if (bytesrequested < 0)
-        buffersize = Util_NewBufferSize((size_t)0);
-    else
-        buffersize = bytesrequested;
-    if (buffersize > INT_MAX) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "requested number of bytes is "
-                        "more than a Python string can hold");
-        goto cleanup;
-    }
-    ret = PyString_FromStringAndSize((char *)NULL, buffersize);
-    if (ret == NULL)
-        goto cleanup;
-    bytesread = 0;
-
-    for (;;) {
-        Py_BEGIN_ALLOW_THREADS
-        chunksize = Util_UnivNewlineRead(&bzerror, self->fp,
-                                         BUF(ret)+bytesread,
-                                         buffersize-bytesread,
-                                         self);
-        self->pos += chunksize;
-        Py_END_ALLOW_THREADS
-        bytesread += chunksize;
-        if (bzerror == BZ_STREAM_END) {
-            self->size = self->pos;
-            self->mode = MODE_READ_EOF;
-            break;
-        } else if (bzerror != BZ_OK) {
-            Util_CatchBZ2Error(bzerror);
-            Py_DECREF(ret);
-            ret = NULL;
-            goto cleanup;
-        }
-        if (bytesrequested < 0) {
-            buffersize = Util_NewBufferSize(buffersize);
-            if (_PyString_Resize(&ret, buffersize) < 0)
-                goto cleanup;
-        } else {
-            break;
-        }
-    }
-    if (bytesread != buffersize)
-        _PyString_Resize(&ret, bytesread);
-
-cleanup:
-    RELEASE_LOCK(self);
-    return ret;
-}
-
-PyDoc_STRVAR(BZ2File_readline__doc__,
-"readline([size]) -> string\n\
-\n\
-Return the next line from the file, as a string, retaining newline.\n\
-A non-negative size argument will limit the maximum number of bytes to\n\
-return (an incomplete line may be returned then). Return an empty\n\
-string at EOF.\n\
-");
-
-static PyObject *
-BZ2File_readline(BZ2FileObject *self, PyObject *args)
-{
-    PyObject *ret = NULL;
-    int sizehint = -1;
-
-    if (!PyArg_ParseTuple(args, "|i:readline", &sizehint))
-        return NULL;
-
-    ACQUIRE_LOCK(self);
-    switch (self->mode) {
-        case MODE_READ:
-            break;
-        case MODE_READ_EOF:
-            ret = PyString_FromString("");
-            goto cleanup;
-        case MODE_CLOSED:
-            PyErr_SetString(PyExc_ValueError,
-                            "I/O operation on closed file");
-            goto cleanup;
-        default:
-            PyErr_SetString(PyExc_IOError,
-                            "file is not ready for reading");
-            goto cleanup;
-    }
-
-    /* refuse to mix with f.next() */
-    if (check_iterbuffered(self))
-        goto cleanup;
-
-    if (sizehint == 0)
-        ret = PyString_FromString("");
-    else
-        ret = Util_GetLine(self, (sizehint < 0) ? 0 : sizehint);
-
-cleanup:
-    RELEASE_LOCK(self);
-    return ret;
-}
-
-PyDoc_STRVAR(BZ2File_readlines__doc__,
-"readlines([size]) -> list\n\
-\n\
-Call readline() repeatedly and return a list of lines read.\n\
-The optional size argument, if given, is an approximate bound on the\n\
-total number of bytes in the lines returned.\n\
-");
-
-/* This is a hacked version of Python's fileobject.c:file_readlines(). */
-static PyObject *
-BZ2File_readlines(BZ2FileObject *self, PyObject *args)
-{
-    long sizehint = 0;
-    PyObject *list = NULL;
-    PyObject *line;
-    char small_buffer[SMALLCHUNK];
-    char *buffer = small_buffer;
-    size_t buffersize = SMALLCHUNK;
-    PyObject *big_buffer = NULL;
-    size_t nfilled = 0;
-    size_t nread;
-    size_t totalread = 0;
-    char *p, *q, *end;
-    int err;
-    int shortread = 0;
-    int bzerror;
-
-    if (!PyArg_ParseTuple(args, "|l:readlines", &sizehint))
-        return NULL;
-
-    ACQUIRE_LOCK(self);
-    switch (self->mode) {
-        case MODE_READ:
-            break;
-        case MODE_READ_EOF:
-            list = PyList_New(0);
-            goto cleanup;
-        case MODE_CLOSED:
-            PyErr_SetString(PyExc_ValueError,
-                            "I/O operation on closed file");
-            goto cleanup;
-        default:
-            PyErr_SetString(PyExc_IOError,
-                            "file is not ready for reading");
-            goto cleanup;
-    }
-
-    /* refuse to mix with f.next() */
-    if (check_iterbuffered(self))
-        goto cleanup;
-
-    if ((list = PyList_New(0)) == NULL)
-        goto cleanup;
-
-    for (;;) {
-        Py_BEGIN_ALLOW_THREADS
-        nread = Util_UnivNewlineRead(&bzerror, self->fp,
-                                     buffer+nfilled,
-                                     buffersize-nfilled, self);
-        self->pos += nread;
-        Py_END_ALLOW_THREADS
-        if (bzerror == BZ_STREAM_END) {
-            self->size = self->pos;
-            self->mode = MODE_READ_EOF;
-            if (nread == 0) {
-                sizehint = 0;
-                break;
-            }
-            shortread = 1;
-        } else if (bzerror != BZ_OK) {
-            Util_CatchBZ2Error(bzerror);
-          error:
-            Py_DECREF(list);
-            list = NULL;
-            goto cleanup;
-        }
-        totalread += nread;
-        p = memchr(buffer+nfilled, '\n', nread);
-        if (!shortread && p == NULL) {
-            /* Need a larger buffer to fit this line */
-            nfilled += nread;
-            buffersize *= 2;
-            if (buffersize > INT_MAX) {
-                PyErr_SetString(PyExc_OverflowError,
-                "line is longer than a Python string can hold");
-                goto error;
-            }
-            if (big_buffer == NULL) {
-                /* Create the big buffer */
-                big_buffer = PyString_FromStringAndSize(
-                    NULL, buffersize);
-                if (big_buffer == NULL)
-                    goto error;
-                buffer = PyString_AS_STRING(big_buffer);
-                memcpy(buffer, small_buffer, nfilled);
-            }
-            else {
-                /* Grow the big buffer */
-                _PyString_Resize(&big_buffer, buffersize);
-                buffer = PyString_AS_STRING(big_buffer);
-            }
-            continue;
-        }
-        end = buffer+nfilled+nread;
-        q = buffer;
-        while (p != NULL) {
-            /* Process complete lines */
-            p++;
-            line = PyString_FromStringAndSize(q, p-q);
-            if (line == NULL)
-                goto error;
-            err = PyList_Append(list, line);
-            Py_DECREF(line);
-            if (err != 0)
-                goto error;
-            q = p;
-            p = memchr(q, '\n', end-q);
-        }
-        /* Move the remaining incomplete line to the start */
-        nfilled = end-q;
-        memmove(buffer, q, nfilled);
-        if (sizehint > 0)
-            if (totalread >= (size_t)sizehint)
-                break;
-        if (shortread) {
-            sizehint = 0;
-            break;
-        }
-    }
-    if (nfilled != 0) {
-        /* Partial last line */
-        line = PyString_FromStringAndSize(buffer, nfilled);
-        if (line == NULL)
-            goto error;
-        if (sizehint > 0) {
-            /* Need to complete the last line */
-            PyObject *rest = Util_GetLine(self, 0);
-            if (rest == NULL) {
-                Py_DECREF(line);
-                goto error;
-            }
-            PyString_Concat(&line, rest);
-            Py_DECREF(rest);
-            if (line == NULL)
-                goto error;
-        }
-        err = PyList_Append(list, line);
-        Py_DECREF(line);
-        if (err != 0)
-            goto error;
-    }
-
-  cleanup:
-    RELEASE_LOCK(self);
-    if (big_buffer) {
-        Py_DECREF(big_buffer);
-    }
-    return list;
-}
-
-PyDoc_STRVAR(BZ2File_xreadlines__doc__,
-"xreadlines() -> self\n\
-\n\
-For backward compatibility. BZ2File objects now include the performance\n\
-optimizations previously implemented in the xreadlines module.\n\
-");
-
-PyDoc_STRVAR(BZ2File_write__doc__,
-"write(data) -> None\n\
-\n\
-Write the 'data' string to file. Note that due to buffering, close() may\n\
-be needed before the file on disk reflects the data written.\n\
-");
-
-/* This is a hacked version of Python's fileobject.c:file_write(). */
-static PyObject *
-BZ2File_write(BZ2FileObject *self, PyObject *args)
-{
-    PyObject *ret = NULL;
-    Py_buffer pbuf;
-    char *buf;
-    int len;
-    int bzerror;
-
-    if (!PyArg_ParseTuple(args, "s*:write", &pbuf))
-        return NULL;
-    buf = pbuf.buf;
-    len = pbuf.len;
-
-    ACQUIRE_LOCK(self);
-    switch (self->mode) {
-        case MODE_WRITE:
-            break;
-
-        case MODE_CLOSED:
-            PyErr_SetString(PyExc_ValueError,
-                            "I/O operation on closed file");
-            goto cleanup;
-
-        default:
-            PyErr_SetString(PyExc_IOError,
-                            "file is not ready for writing");
-            goto cleanup;
-    }
-
-    self->f_softspace = 0;
-
-    Py_BEGIN_ALLOW_THREADS
-    BZ2_bzWrite (&bzerror, self->fp, buf, len);
-    self->pos += len;
-    Py_END_ALLOW_THREADS
-
-    if (bzerror != BZ_OK) {
-        Util_CatchBZ2Error(bzerror);
-        goto cleanup;
-    }
-
-    Py_INCREF(Py_None);
-    ret = Py_None;
-
-cleanup:
-    PyBuffer_Release(&pbuf);
-    RELEASE_LOCK(self);
-    return ret;
-}
-
-PyDoc_STRVAR(BZ2File_writelines__doc__,
-"writelines(sequence_of_strings) -> None\n\
-\n\
-Write the sequence of strings to the file. Note that newlines are not\n\
-added. The sequence can be any iterable object producing strings. This is\n\
-equivalent to calling write() for each string.\n\
-");
-
-/* This is a hacked version of Python's fileobject.c:file_writelines(). */
-static PyObject *
-BZ2File_writelines(BZ2FileObject *self, PyObject *seq)
-{
-#define CHUNKSIZE 1000
-    PyObject *list = NULL;
-    PyObject *iter = NULL;
-    PyObject *ret = NULL;
-    PyObject *line;
-    int i, j, index, len, islist;
-    int bzerror;
-
-    ACQUIRE_LOCK(self);
-    switch (self->mode) {
-        case MODE_WRITE:
-            break;
-
-        case MODE_CLOSED:
-            PyErr_SetString(PyExc_ValueError,
-                            "I/O operation on closed file");
-            goto error;
-
-        default:
-            PyErr_SetString(PyExc_IOError,
-                            "file is not ready for writing");
-            goto error;
-    }
-
-    islist = PyList_Check(seq);
-    if  (!islist) {
-        iter = PyObject_GetIter(seq);
-        if (iter == NULL) {
-            PyErr_SetString(PyExc_TypeError,
-                "writelines() requires an iterable argument");
-            goto error;
-        }
-        list = PyList_New(CHUNKSIZE);
-        if (list == NULL)
-            goto error;
-    }
-
-    /* Strategy: slurp CHUNKSIZE lines into a private list,
-       checking that they are all strings, then write that list
-       without holding the interpreter lock, then come back for more. */
-    for (index = 0; ; index += CHUNKSIZE) {
-        if (islist) {
-            Py_XDECREF(list);
-            list = PyList_GetSlice(seq, index, index+CHUNKSIZE);
-            if (list == NULL)
-                goto error;
-            j = PyList_GET_SIZE(list);
-        }
-        else {
-            for (j = 0; j < CHUNKSIZE; j++) {
-                line = PyIter_Next(iter);
-                if (line == NULL) {
-                    if (PyErr_Occurred())
-                        goto error;
-                    break;
-                }
-                PyList_SetItem(list, j, line);
-            }
-        }
-        if (j == 0)
-            break;
-
-        /* Check that all entries are indeed strings. If not,
-           apply the same rules as for file.write() and
-           convert the rets to strings. This is slow, but
-           seems to be the only way since all conversion APIs
-           could potentially execute Python code. */
-        for (i = 0; i < j; i++) {
-            PyObject *v = PyList_GET_ITEM(list, i);
-            if (!PyString_Check(v)) {
-                const char *buffer;
-                Py_ssize_t len;
-                if (PyObject_AsCharBuffer(v, &buffer, &len)) {
-                    PyErr_SetString(PyExc_TypeError,
-                                    "writelines() "
-                                    "argument must be "
-                                    "a sequence of "
-                                    "strings");
-                    goto error;
-                }
-                line = PyString_FromStringAndSize(buffer,
-                                                  len);
-                if (line == NULL)
-                    goto error;
-                Py_DECREF(v);
-                PyList_SET_ITEM(list, i, line);
-            }
-        }
-
-        self->f_softspace = 0;
-
-        /* Since we are releasing the global lock, the
-           following code may *not* execute Python code. */
-        Py_BEGIN_ALLOW_THREADS
-        for (i = 0; i < j; i++) {
-            line = PyList_GET_ITEM(list, i);
-            len = PyString_GET_SIZE(line);
-            BZ2_bzWrite (&bzerror, self->fp,
-                         PyString_AS_STRING(line), len);
-            if (bzerror != BZ_OK) {
-                Py_BLOCK_THREADS
-                Util_CatchBZ2Error(bzerror);
-                goto error;
-            }
-        }
-        Py_END_ALLOW_THREADS
-
-        if (j < CHUNKSIZE)
-            break;
-    }
-
-    Py_INCREF(Py_None);
-    ret = Py_None;
-
-  error:
-    RELEASE_LOCK(self);
-    Py_XDECREF(list);
-    Py_XDECREF(iter);
-    return ret;
-#undef CHUNKSIZE
-}
-
-PyDoc_STRVAR(BZ2File_seek__doc__,
-"seek(offset [, whence]) -> None\n\
-\n\
-Move to new file position. Argument offset is a byte count. Optional\n\
-argument whence defaults to 0 (offset from start of file, offset\n\
-should be >= 0); other values are 1 (move relative to current position,\n\
-positive or negative), and 2 (move relative to end of file, usually\n\
-negative, although many platforms allow seeking beyond the end of a file).\n\
-\n\
-Note that seeking of bz2 files is emulated, and depending on the parameters\n\
-the operation may be extremely slow.\n\
-");
-
-static PyObject *
-BZ2File_seek(BZ2FileObject *self, PyObject *args)
-{
-    int where = 0;
-    PyObject *offobj;
-    Py_off_t offset;
-    char small_buffer[SMALLCHUNK];
-    char *buffer = small_buffer;
-    size_t buffersize = SMALLCHUNK;
-    Py_off_t bytesread = 0;
-    size_t readsize;
-    int chunksize;
-    int bzerror;
-    PyObject *ret = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|i:seek", &offobj, &where))
-        return NULL;
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    offset = PyInt_AsLong(offobj);
-#else
-    offset = PyLong_Check(offobj) ?
-        PyLong_AsLongLong(offobj) : PyInt_AsLong(offobj);
-#endif
-    if (PyErr_Occurred())
-        return NULL;
-
-    ACQUIRE_LOCK(self);
-    Util_DropReadAhead(self);
-    switch (self->mode) {
-        case MODE_READ:
-        case MODE_READ_EOF:
-            break;
-
-        case MODE_CLOSED:
-            PyErr_SetString(PyExc_ValueError,
-                            "I/O operation on closed file");
-            goto cleanup;
-
-        default:
-            PyErr_SetString(PyExc_IOError,
-                            "seek works only while reading");
-            goto cleanup;
-    }
-
-    if (where == 2) {
-        if (self->size == -1) {
-            assert(self->mode != MODE_READ_EOF);
-            for (;;) {
-                Py_BEGIN_ALLOW_THREADS
-                chunksize = Util_UnivNewlineRead(
-                                &bzerror, self->fp,
-                                buffer, buffersize,
-                                self);
-                self->pos += chunksize;
-                Py_END_ALLOW_THREADS
-
-                bytesread += chunksize;
-                if (bzerror == BZ_STREAM_END) {
-                    break;
-                } else if (bzerror != BZ_OK) {
-                    Util_CatchBZ2Error(bzerror);
-                    goto cleanup;
-                }
-            }
-            self->mode = MODE_READ_EOF;
-            self->size = self->pos;
-            bytesread = 0;
-        }
-        offset = self->size + offset;
-    } else if (where == 1) {
-        offset = self->pos + offset;
-    }
-
-    /* Before getting here, offset must be the absolute position the file
-     * pointer should be set to. */
-
-    if (offset >= self->pos) {
-        /* we can move forward */
-        offset -= self->pos;
-    } else {
-        /* we cannot move back, so rewind the stream */
-        BZ2_bzReadClose(&bzerror, self->fp);
-        if (self->fp) {
-            PyFile_DecUseCount((PyFileObject *)self->file);
-            self->fp = NULL;
-        }
-        if (bzerror != BZ_OK) {
-            Util_CatchBZ2Error(bzerror);
-            goto cleanup;
-        }
-        ret = PyObject_CallMethod(self->file, "seek", "(i)", 0);
-        if (!ret)
-            goto cleanup;
-        Py_DECREF(ret);
-        ret = NULL;
-        self->pos = 0;
-        self->fp = BZ2_bzReadOpen(&bzerror, PyFile_AsFile(self->file),
-                                  0, 0, NULL, 0);
-        if (self->fp)
-            PyFile_IncUseCount((PyFileObject *)self->file);
-        if (bzerror != BZ_OK) {
-            Util_CatchBZ2Error(bzerror);
-            goto cleanup;
-        }
-        self->mode = MODE_READ;
-    }
-
-    if (offset <= 0 || self->mode == MODE_READ_EOF)
-        goto exit;
-
-    /* Before getting here, offset must be set to the number of bytes
-     * to walk forward. */
-    for (;;) {
-        if (offset-bytesread > buffersize)
-            readsize = buffersize;
-        else
-            /* offset might be wider that readsize, but the result
-             * of the subtraction is bound by buffersize (see the
-             * condition above). buffersize is 8192. */
-            readsize = (size_t)(offset-bytesread);
-        Py_BEGIN_ALLOW_THREADS
-        chunksize = Util_UnivNewlineRead(&bzerror, self->fp,
-                                         buffer, readsize, self);
-        self->pos += chunksize;
-        Py_END_ALLOW_THREADS
-        bytesread += chunksize;
-        if (bzerror == BZ_STREAM_END) {
-            self->size = self->pos;
-            self->mode = MODE_READ_EOF;
-            break;
-        } else if (bzerror != BZ_OK) {
-            Util_CatchBZ2Error(bzerror);
-            goto cleanup;
-        }
-        if (bytesread == offset)
-            break;
-    }
-
-exit:
-    Py_INCREF(Py_None);
-    ret = Py_None;
-
-cleanup:
-    RELEASE_LOCK(self);
-    return ret;
-}
-
-PyDoc_STRVAR(BZ2File_tell__doc__,
-"tell() -> int\n\
-\n\
-Return the current file position, an integer (may be a long integer).\n\
-");
-
-static PyObject *
-BZ2File_tell(BZ2FileObject *self, PyObject *args)
-{
-    PyObject *ret = NULL;
-
-    if (self->mode == MODE_CLOSED) {
-        PyErr_SetString(PyExc_ValueError,
-                        "I/O operation on closed file");
-        goto cleanup;
-    }
-
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    ret = PyInt_FromLong(self->pos);
-#else
-    ret = PyLong_FromLongLong(self->pos);
-#endif
-
-cleanup:
-    return ret;
-}
-
-PyDoc_STRVAR(BZ2File_close__doc__,
-"close() -> None or (perhaps) an integer\n\
-\n\
-Close the file. Sets data attribute .closed to true. A closed file\n\
-cannot be used for further I/O operations. close() may be called more\n\
-than once without error.\n\
-");
-
-static PyObject *
-BZ2File_close(BZ2FileObject *self)
-{
-    PyObject *ret = NULL;
-    int bzerror = BZ_OK;
-
-    ACQUIRE_LOCK(self);
-    switch (self->mode) {
-        case MODE_READ:
-        case MODE_READ_EOF:
-            BZ2_bzReadClose(&bzerror, self->fp);
-            break;
-        case MODE_WRITE:
-            BZ2_bzWriteClose(&bzerror, self->fp,
-                             0, NULL, NULL);
-            break;
-    }
-    if (self->fp) {
-        PyFile_DecUseCount((PyFileObject *)self->file);
-        self->fp = NULL;
-    }
-    self->mode = MODE_CLOSED;
-    ret = PyObject_CallMethod(self->file, "close", NULL);
-    if (bzerror != BZ_OK) {
-        Util_CatchBZ2Error(bzerror);
-        Py_XDECREF(ret);
-        ret = NULL;
-    }
-
-    RELEASE_LOCK(self);
-    return ret;
-}
-
-PyDoc_STRVAR(BZ2File_enter_doc,
-"__enter__() -> self.");
-
-static PyObject *
-BZ2File_enter(BZ2FileObject *self)
-{
-    if (self->mode == MODE_CLOSED) {
-        PyErr_SetString(PyExc_ValueError,
-            "I/O operation on closed file");
-        return NULL;
-    }
-    Py_INCREF(self);
-    return (PyObject *) self;
-}
-
-PyDoc_STRVAR(BZ2File_exit_doc,
-"__exit__(*excinfo) -> None.  Closes the file.");
-
-static PyObject *
-BZ2File_exit(BZ2FileObject *self, PyObject *args)
-{
-    PyObject *ret = PyObject_CallMethod((PyObject *) self, "close", NULL);
-    if (!ret)
-        /* If error occurred, pass through */
-        return NULL;
-    Py_DECREF(ret);
-    Py_RETURN_NONE;
-}
-
-
-static PyObject *BZ2File_getiter(BZ2FileObject *self);
-
-static PyMethodDef BZ2File_methods[] = {
-    {"read", (PyCFunction)BZ2File_read, METH_VARARGS, BZ2File_read__doc__},
-    {"readline", (PyCFunction)BZ2File_readline, METH_VARARGS, BZ2File_readline__doc__},
-    {"readlines", (PyCFunction)BZ2File_readlines, METH_VARARGS, BZ2File_readlines__doc__},
-    {"xreadlines", (PyCFunction)BZ2File_getiter, METH_VARARGS, BZ2File_xreadlines__doc__},
-    {"write", (PyCFunction)BZ2File_write, METH_VARARGS, BZ2File_write__doc__},
-    {"writelines", (PyCFunction)BZ2File_writelines, METH_O, BZ2File_writelines__doc__},
-    {"seek", (PyCFunction)BZ2File_seek, METH_VARARGS, BZ2File_seek__doc__},
-    {"tell", (PyCFunction)BZ2File_tell, METH_NOARGS, BZ2File_tell__doc__},
-    {"close", (PyCFunction)BZ2File_close, METH_NOARGS, BZ2File_close__doc__},
-    {"__enter__", (PyCFunction)BZ2File_enter, METH_NOARGS, BZ2File_enter_doc},
-    {"__exit__", (PyCFunction)BZ2File_exit, METH_VARARGS, BZ2File_exit_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-
-/* ===================================================================== */
-/* Getters and setters of BZ2File. */
-
-/* This is a hacked version of Python's fileobject.c:get_newlines(). */
-static PyObject *
-BZ2File_get_newlines(BZ2FileObject *self, void *closure)
-{
-    switch (self->f_newlinetypes) {
-    case NEWLINE_UNKNOWN:
-        Py_INCREF(Py_None);
-        return Py_None;
-    case NEWLINE_CR:
-        return PyString_FromString("\r");
-    case NEWLINE_LF:
-        return PyString_FromString("\n");
-    case NEWLINE_CR|NEWLINE_LF:
-        return Py_BuildValue("(ss)", "\r", "\n");
-    case NEWLINE_CRLF:
-        return PyString_FromString("\r\n");
-    case NEWLINE_CR|NEWLINE_CRLF:
-        return Py_BuildValue("(ss)", "\r", "\r\n");
-    case NEWLINE_LF|NEWLINE_CRLF:
-        return Py_BuildValue("(ss)", "\n", "\r\n");
-    case NEWLINE_CR|NEWLINE_LF|NEWLINE_CRLF:
-        return Py_BuildValue("(sss)", "\r", "\n", "\r\n");
-    default:
-        PyErr_Format(PyExc_SystemError,
-                     "Unknown newlines value 0x%x\n",
-                     self->f_newlinetypes);
-        return NULL;
-    }
-}
-
-static PyObject *
-BZ2File_get_closed(BZ2FileObject *self, void *closure)
-{
-    return PyInt_FromLong(self->mode == MODE_CLOSED);
-}
-
-static PyObject *
-BZ2File_get_mode(BZ2FileObject *self, void *closure)
-{
-    return PyObject_GetAttrString(self->file, "mode");
-}
-
-static PyObject *
-BZ2File_get_name(BZ2FileObject *self, void *closure)
-{
-    return PyObject_GetAttrString(self->file, "name");
-}
-
-static PyGetSetDef BZ2File_getset[] = {
-    {"closed", (getter)BZ2File_get_closed, NULL,
-                    "True if the file is closed"},
-    {"newlines", (getter)BZ2File_get_newlines, NULL,
-                    "end-of-line convention used in this file"},
-    {"mode", (getter)BZ2File_get_mode, NULL,
-                    "file mode ('r', 'w', or 'U')"},
-    {"name", (getter)BZ2File_get_name, NULL,
-                    "file name"},
-    {NULL}      /* Sentinel */
-};
-
-
-/* ===================================================================== */
-/* Members of BZ2File_Type. */
-
-#undef OFF
-#define OFF(x) offsetof(BZ2FileObject, x)
-
-static PyMemberDef BZ2File_members[] = {
-    {"softspace",       T_INT,          OFF(f_softspace), 0,
-     "flag indicating that a space needs to be printed; used by print"},
-    {NULL}      /* Sentinel */
-};
-
-/* ===================================================================== */
-/* Slot definitions for BZ2File_Type. */
-
-static int
-BZ2File_init(BZ2FileObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = {"filename", "mode", "buffering",
-                                   "compresslevel", 0};
-    PyObject *name;
-    char *mode = "r";
-    int buffering = -1;
-    int compresslevel = 9;
-    int bzerror;
-    int mode_char = 0;
-
-    self->size = -1;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|sii:BZ2File",
-                                     kwlist, &name, &mode, &buffering,
-                                     &compresslevel))
-        return -1;
-
-    if (compresslevel < 1 || compresslevel > 9) {
-        PyErr_SetString(PyExc_ValueError,
-                        "compresslevel must be between 1 and 9");
-        return -1;
-    }
-
-    for (;;) {
-        int error = 0;
-        switch (*mode) {
-            case 'r':
-            case 'w':
-                if (mode_char)
-                    error = 1;
-                mode_char = *mode;
-                break;
-
-            case 'b':
-                break;
-
-            case 'U':
-#ifdef __VMS
-                self->f_univ_newline = 0;
-#else
-                self->f_univ_newline = 1;
-#endif
-                break;
-
-            default:
-                error = 1;
-                break;
-        }
-        if (error) {
-            PyErr_Format(PyExc_ValueError,
-                         "invalid mode char %c", *mode);
-            return -1;
-        }
-        mode++;
-        if (*mode == '\0')
-            break;
-    }
-
-    if (mode_char == 0) {
-        mode_char = 'r';
-    }
-
-    mode = (mode_char == 'r') ? "rb" : "wb";
-
-    self->file = PyObject_CallFunction((PyObject*)&PyFile_Type, "(Osi)",
-                                       name, mode, buffering);
-    if (self->file == NULL)
-        return -1;
-
-    /* From now on, we have stuff to dealloc, so jump to error label
-     * instead of returning */
-
-#ifdef WITH_THREAD
-    self->lock = PyThread_allocate_lock();
-    if (!self->lock) {
-        PyErr_SetString(PyExc_MemoryError, "unable to allocate lock");
-        goto error;
-    }
-#endif
-
-    if (mode_char == 'r')
-        self->fp = BZ2_bzReadOpen(&bzerror,
-                                  PyFile_AsFile(self->file),
-                                  0, 0, NULL, 0);
-    else
-        self->fp = BZ2_bzWriteOpen(&bzerror,
-                                   PyFile_AsFile(self->file),
-                                   compresslevel, 0, 0);
-
-    if (bzerror != BZ_OK) {
-        Util_CatchBZ2Error(bzerror);
-        goto error;
-    }
-    PyFile_IncUseCount((PyFileObject *)self->file);
-
-    self->mode = (mode_char == 'r') ? MODE_READ : MODE_WRITE;
-
-    return 0;
-
-error:
-    Py_CLEAR(self->file);
-#ifdef WITH_THREAD
-    if (self->lock) {
-        PyThread_free_lock(self->lock);
-        self->lock = NULL;
-    }
-#endif
-    return -1;
-}
-
-static void
-BZ2File_dealloc(BZ2FileObject *self)
-{
-    int bzerror;
-#ifdef WITH_THREAD
-    if (self->lock)
-        PyThread_free_lock(self->lock);
-#endif
-    switch (self->mode) {
-        case MODE_READ:
-        case MODE_READ_EOF:
-            BZ2_bzReadClose(&bzerror, self->fp);
-            break;
-        case MODE_WRITE:
-            BZ2_bzWriteClose(&bzerror, self->fp,
-                             0, NULL, NULL);
-            break;
-    }
-    if (self->fp) {
-        PyFile_DecUseCount((PyFileObject *)self->file);
-        self->fp = NULL;
-    }
-    Util_DropReadAhead(self);
-    Py_XDECREF(self->file);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-/* This is a hacked version of Python's fileobject.c:file_getiter(). */
-static PyObject *
-BZ2File_getiter(BZ2FileObject *self)
-{
-    if (self->mode == MODE_CLOSED) {
-        PyErr_SetString(PyExc_ValueError,
-                        "I/O operation on closed file");
-        return NULL;
-    }
-    Py_INCREF((PyObject*)self);
-    return (PyObject *)self;
-}
-
-/* This is a hacked version of Python's fileobject.c:file_iternext(). */
-#define READAHEAD_BUFSIZE 8192
-static PyObject *
-BZ2File_iternext(BZ2FileObject *self)
-{
-    PyStringObject* ret;
-    ACQUIRE_LOCK(self);
-    if (self->mode == MODE_CLOSED) {
-        RELEASE_LOCK(self);
-        PyErr_SetString(PyExc_ValueError,
-                        "I/O operation on closed file");
-        return NULL;
-    }
-    ret = Util_ReadAheadGetLineSkip(self, 0, READAHEAD_BUFSIZE);
-    RELEASE_LOCK(self);
-    if (ret == NULL || PyString_GET_SIZE(ret) == 0) {
-        Py_XDECREF(ret);
-        return NULL;
-    }
-    return (PyObject *)ret;
-}
-
-/* ===================================================================== */
-/* BZ2File_Type definition. */
-
-PyDoc_VAR(BZ2File__doc__) =
-PyDoc_STR(
-"BZ2File(name [, mode='r', buffering=0, compresslevel=9]) -> file object\n\
-\n\
-Open a bz2 file. The mode can be 'r' or 'w', for reading (default) or\n\
-writing. When opened for writing, the file will be created if it doesn't\n\
-exist, and truncated otherwise. If the buffering argument is given, 0 means\n\
-unbuffered, and larger numbers specify the buffer size. If compresslevel\n\
-is given, must be a number between 1 and 9.\n\
-")
-PyDoc_STR(
-"\n\
-Add a 'U' to mode to open the file for input with universal newline\n\
-support. Any line ending in the input file will be seen as a '\\n' in\n\
-Python. Also, a file so opened gains the attribute 'newlines'; the value\n\
-for this attribute is one of None (no newline read yet), '\\r', '\\n',\n\
-'\\r\\n' or a tuple containing all the newline types seen. Universal\n\
-newlines are available only when reading.\n\
-")
-;
-
-static PyTypeObject BZ2File_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "bz2.BZ2File",              /*tp_name*/
-    sizeof(BZ2FileObject),      /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    (destructor)BZ2File_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*/
-    PyObject_GenericGetAttr,/*tp_getattro*/
-    PyObject_GenericSetAttr,/*tp_setattro*/
-    0,                      /*tp_as_buffer*/
-    Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/
-    BZ2File__doc__,         /*tp_doc*/
-    0,                      /*tp_traverse*/
-    0,                      /*tp_clear*/
-    0,                      /*tp_richcompare*/
-    0,                      /*tp_weaklistoffset*/
-    (getiterfunc)BZ2File_getiter, /*tp_iter*/
-    (iternextfunc)BZ2File_iternext, /*tp_iternext*/
-    BZ2File_methods,        /*tp_methods*/
-    BZ2File_members,        /*tp_members*/
-    BZ2File_getset,         /*tp_getset*/
-    0,                      /*tp_base*/
-    0,                      /*tp_dict*/
-    0,                      /*tp_descr_get*/
-    0,                      /*tp_descr_set*/
-    0,                      /*tp_dictoffset*/
-    (initproc)BZ2File_init, /*tp_init*/
-    PyType_GenericAlloc,    /*tp_alloc*/
-    PyType_GenericNew,      /*tp_new*/
-    _PyObject_Del,          /*tp_free*/
-    0,                      /*tp_is_gc*/
-};
-
-
-/* ===================================================================== */
-/* Methods of BZ2Comp. */
-
-PyDoc_STRVAR(BZ2Comp_compress__doc__,
-"compress(data) -> string\n\
-\n\
-Provide more data to the compressor object. It will return chunks of\n\
-compressed data whenever possible. When you've finished providing data\n\
-to compress, call the flush() method to finish the compression process,\n\
-and return what is left in the internal buffers.\n\
-");
-
-static PyObject *
-BZ2Comp_compress(BZ2CompObject *self, PyObject *args)
-{
-    Py_buffer pdata;
-    char *data;
-    int datasize;
-    int bufsize = SMALLCHUNK;
-    PY_LONG_LONG totalout;
-    PyObject *ret = NULL;
-    bz_stream *bzs = &self->bzs;
-    int bzerror;
-
-    if (!PyArg_ParseTuple(args, "s*:compress", &pdata))
-        return NULL;
-    data = pdata.buf;
-    datasize = pdata.len;
-
-    if (datasize == 0) {
-        PyBuffer_Release(&pdata);
-        return PyString_FromString("");
-    }
-
-    ACQUIRE_LOCK(self);
-    if (!self->running) {
-        PyErr_SetString(PyExc_ValueError,
-                        "this object was already flushed");
-        goto error;
-    }
-
-    ret = PyString_FromStringAndSize(NULL, bufsize);
-    if (!ret)
-        goto error;
-
-    bzs->next_in = data;
-    bzs->avail_in = datasize;
-    bzs->next_out = BUF(ret);
-    bzs->avail_out = bufsize;
-
-    totalout = BZS_TOTAL_OUT(bzs);
-
-    for (;;) {
-        Py_BEGIN_ALLOW_THREADS
-        bzerror = BZ2_bzCompress(bzs, BZ_RUN);
-        Py_END_ALLOW_THREADS
-        if (bzerror != BZ_RUN_OK) {
-            Util_CatchBZ2Error(bzerror);
-            goto error;
-        }
-        if (bzs->avail_in == 0)
-            break; /* no more input data */
-        if (bzs->avail_out == 0) {
-            bufsize = Util_NewBufferSize(bufsize);
-            if (_PyString_Resize(&ret, bufsize) < 0) {
-                BZ2_bzCompressEnd(bzs);
-                goto error;
-            }
-            bzs->next_out = BUF(ret) + (BZS_TOTAL_OUT(bzs)
-                                        - totalout);
-            bzs->avail_out = bufsize - (bzs->next_out - BUF(ret));
-        }
-    }
-
-    _PyString_Resize(&ret, (Py_ssize_t)(BZS_TOTAL_OUT(bzs) - totalout));
-
-    RELEASE_LOCK(self);
-    PyBuffer_Release(&pdata);
-    return ret;
-
-error:
-    RELEASE_LOCK(self);
-    PyBuffer_Release(&pdata);
-    Py_XDECREF(ret);
-    return NULL;
-}
-
-PyDoc_STRVAR(BZ2Comp_flush__doc__,
-"flush() -> string\n\
-\n\
-Finish the compression process and return what is left in internal buffers.\n\
-You must not use the compressor object after calling this method.\n\
-");
-
-static PyObject *
-BZ2Comp_flush(BZ2CompObject *self)
-{
-    int bufsize = SMALLCHUNK;
-    PyObject *ret = NULL;
-    bz_stream *bzs = &self->bzs;
-    PY_LONG_LONG totalout;
-    int bzerror;
-
-    ACQUIRE_LOCK(self);
-    if (!self->running) {
-        PyErr_SetString(PyExc_ValueError, "object was already "
-                                          "flushed");
-        goto error;
-    }
-    self->running = 0;
-
-    ret = PyString_FromStringAndSize(NULL, bufsize);
-    if (!ret)
-        goto error;
-
-    bzs->next_out = BUF(ret);
-    bzs->avail_out = bufsize;
-
-    totalout = BZS_TOTAL_OUT(bzs);
-
-    for (;;) {
-        Py_BEGIN_ALLOW_THREADS
-        bzerror = BZ2_bzCompress(bzs, BZ_FINISH);
-        Py_END_ALLOW_THREADS
-        if (bzerror == BZ_STREAM_END) {
-            break;
-        } else if (bzerror != BZ_FINISH_OK) {
-            Util_CatchBZ2Error(bzerror);
-            goto error;
-        }
-        if (bzs->avail_out == 0) {
-            bufsize = Util_NewBufferSize(bufsize);
-            if (_PyString_Resize(&ret, bufsize) < 0)
-                goto error;
-            bzs->next_out = BUF(ret);
-            bzs->next_out = BUF(ret) + (BZS_TOTAL_OUT(bzs)
-                                        - totalout);
-            bzs->avail_out = bufsize - (bzs->next_out - BUF(ret));
-        }
-    }
-
-    if (bzs->avail_out != 0)
-        _PyString_Resize(&ret, (Py_ssize_t)(BZS_TOTAL_OUT(bzs) - totalout));
-
-    RELEASE_LOCK(self);
-    return ret;
-
-error:
-    RELEASE_LOCK(self);
-    Py_XDECREF(ret);
-    return NULL;
-}
-
-static PyMethodDef BZ2Comp_methods[] = {
-    {"compress", (PyCFunction)BZ2Comp_compress, METH_VARARGS,
-     BZ2Comp_compress__doc__},
-    {"flush", (PyCFunction)BZ2Comp_flush, METH_NOARGS,
-     BZ2Comp_flush__doc__},
-    {NULL,              NULL}           /* sentinel */
-};
-
-
-/* ===================================================================== */
-/* Slot definitions for BZ2Comp_Type. */
-
-static int
-BZ2Comp_init(BZ2CompObject *self, PyObject *args, PyObject *kwargs)
-{
-    int compresslevel = 9;
-    int bzerror;
-    static char *kwlist[] = {"compresslevel", 0};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:BZ2Compressor",
-                                     kwlist, &compresslevel))
-        return -1;
-
-    if (compresslevel < 1 || compresslevel > 9) {
-        PyErr_SetString(PyExc_ValueError,
-                        "compresslevel must be between 1 and 9");
-        goto error;
-    }
-
-#ifdef WITH_THREAD
-    self->lock = PyThread_allocate_lock();
-    if (!self->lock) {
-        PyErr_SetString(PyExc_MemoryError, "unable to allocate lock");
-        goto error;
-    }
-#endif
-
-    memset(&self->bzs, 0, sizeof(bz_stream));
-    bzerror = BZ2_bzCompressInit(&self->bzs, compresslevel, 0, 0);
-    if (bzerror != BZ_OK) {
-        Util_CatchBZ2Error(bzerror);
-        goto error;
-    }
-
-    self->running = 1;
-
-    return 0;
-error:
-#ifdef WITH_THREAD
-    if (self->lock) {
-        PyThread_free_lock(self->lock);
-        self->lock = NULL;
-    }
-#endif
-    return -1;
-}
-
-static void
-BZ2Comp_dealloc(BZ2CompObject *self)
-{
-#ifdef WITH_THREAD
-    if (self->lock)
-        PyThread_free_lock(self->lock);
-#endif
-    BZ2_bzCompressEnd(&self->bzs);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-
-/* ===================================================================== */
-/* BZ2Comp_Type definition. */
-
-PyDoc_STRVAR(BZ2Comp__doc__,
-"BZ2Compressor([compresslevel=9]) -> compressor object\n\
-\n\
-Create a new compressor object. This object may be used to compress\n\
-data sequentially. If you want to compress data in one shot, use the\n\
-compress() function instead. The compresslevel parameter, if given,\n\
-must be a number between 1 and 9.\n\
-");
-
-static PyTypeObject BZ2Comp_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "bz2.BZ2Compressor",        /*tp_name*/
-    sizeof(BZ2CompObject),      /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    (destructor)BZ2Comp_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*/
-    PyObject_GenericGetAttr,/*tp_getattro*/
-    PyObject_GenericSetAttr,/*tp_setattro*/
-    0,                      /*tp_as_buffer*/
-    Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/
-    BZ2Comp__doc__,         /*tp_doc*/
-    0,                      /*tp_traverse*/
-    0,                      /*tp_clear*/
-    0,                      /*tp_richcompare*/
-    0,                      /*tp_weaklistoffset*/
-    0,                      /*tp_iter*/
-    0,                      /*tp_iternext*/
-    BZ2Comp_methods,        /*tp_methods*/
-    0,                      /*tp_members*/
-    0,                      /*tp_getset*/
-    0,                      /*tp_base*/
-    0,                      /*tp_dict*/
-    0,                      /*tp_descr_get*/
-    0,                      /*tp_descr_set*/
-    0,                      /*tp_dictoffset*/
-    (initproc)BZ2Comp_init, /*tp_init*/
-    PyType_GenericAlloc,    /*tp_alloc*/
-    PyType_GenericNew,      /*tp_new*/
-    _PyObject_Del,          /*tp_free*/
-    0,                      /*tp_is_gc*/
-};
-
-
-/* ===================================================================== */
-/* Members of BZ2Decomp. */
-
-#undef OFF
-#define OFF(x) offsetof(BZ2DecompObject, x)
-
-static PyMemberDef BZ2Decomp_members[] = {
-    {"unused_data", T_OBJECT, OFF(unused_data), RO},
-    {NULL}      /* Sentinel */
-};
-
-
-/* ===================================================================== */
-/* Methods of BZ2Decomp. */
-
-PyDoc_STRVAR(BZ2Decomp_decompress__doc__,
-"decompress(data) -> string\n\
-\n\
-Provide more data to the decompressor object. It will return chunks\n\
-of decompressed data whenever possible. If you try to decompress data\n\
-after the end of stream is found, EOFError will be raised. If any data\n\
-was found after the end of stream, it'll be ignored and saved in\n\
-unused_data attribute.\n\
-");
-
-static PyObject *
-BZ2Decomp_decompress(BZ2DecompObject *self, PyObject *args)
-{
-    Py_buffer pdata;
-    char *data;
-    int datasize;
-    int bufsize = SMALLCHUNK;
-    PY_LONG_LONG totalout;
-    PyObject *ret = NULL;
-    bz_stream *bzs = &self->bzs;
-    int bzerror;
-
-    if (!PyArg_ParseTuple(args, "s*:decompress", &pdata))
-        return NULL;
-    data = pdata.buf;
-    datasize = pdata.len;
-
-    ACQUIRE_LOCK(self);
-    if (!self->running) {
-        PyErr_SetString(PyExc_EOFError, "end of stream was "
-                                        "already found");
-        goto error;
-    }
-
-    ret = PyString_FromStringAndSize(NULL, bufsize);
-    if (!ret)
-        goto error;
-
-    bzs->next_in = data;
-    bzs->avail_in = datasize;
-    bzs->next_out = BUF(ret);
-    bzs->avail_out = bufsize;
-
-    totalout = BZS_TOTAL_OUT(bzs);
-
-    for (;;) {
-        Py_BEGIN_ALLOW_THREADS
-        bzerror = BZ2_bzDecompress(bzs);
-        Py_END_ALLOW_THREADS
-        if (bzerror == BZ_STREAM_END) {
-            if (bzs->avail_in != 0) {
-                Py_DECREF(self->unused_data);
-                self->unused_data =
-                    PyString_FromStringAndSize(bzs->next_in,
-                                               bzs->avail_in);
-            }
-            self->running = 0;
-            break;
-        }
-        if (bzerror != BZ_OK) {
-            Util_CatchBZ2Error(bzerror);
-            goto error;
-        }
-        if (bzs->avail_in == 0)
-            break; /* no more input data */
-        if (bzs->avail_out == 0) {
-            bufsize = Util_NewBufferSize(bufsize);
-            if (_PyString_Resize(&ret, bufsize) < 0) {
-                BZ2_bzDecompressEnd(bzs);
-                goto error;
-            }
-            bzs->next_out = BUF(ret);
-            bzs->next_out = BUF(ret) + (BZS_TOTAL_OUT(bzs)
-                                        - totalout);
-            bzs->avail_out = bufsize - (bzs->next_out - BUF(ret));
-        }
-    }
-
-    if (bzs->avail_out != 0)
-        _PyString_Resize(&ret, (Py_ssize_t)(BZS_TOTAL_OUT(bzs) - totalout));
-
-    RELEASE_LOCK(self);
-    PyBuffer_Release(&pdata);
-    return ret;
-
-error:
-    RELEASE_LOCK(self);
-    PyBuffer_Release(&pdata);
-    Py_XDECREF(ret);
-    return NULL;
-}
-
-static PyMethodDef BZ2Decomp_methods[] = {
-    {"decompress", (PyCFunction)BZ2Decomp_decompress, METH_VARARGS, BZ2Decomp_decompress__doc__},
-    {NULL,              NULL}           /* sentinel */
-};
-
-
-/* ===================================================================== */
-/* Slot definitions for BZ2Decomp_Type. */
-
-static int
-BZ2Decomp_init(BZ2DecompObject *self, PyObject *args, PyObject *kwargs)
-{
-    int bzerror;
-
-    if (!PyArg_ParseTuple(args, ":BZ2Decompressor"))
-        return -1;
-
-#ifdef WITH_THREAD
-    self->lock = PyThread_allocate_lock();
-    if (!self->lock) {
-        PyErr_SetString(PyExc_MemoryError, "unable to allocate lock");
-        goto error;
-    }
-#endif
-
-    self->unused_data = PyString_FromString("");
-    if (!self->unused_data)
-        goto error;
-
-    memset(&self->bzs, 0, sizeof(bz_stream));
-    bzerror = BZ2_bzDecompressInit(&self->bzs, 0, 0);
-    if (bzerror != BZ_OK) {
-        Util_CatchBZ2Error(bzerror);
-        goto error;
-    }
-
-    self->running = 1;
-
-    return 0;
-
-error:
-#ifdef WITH_THREAD
-    if (self->lock) {
-        PyThread_free_lock(self->lock);
-        self->lock = NULL;
-    }
-#endif
-    Py_CLEAR(self->unused_data);
-    return -1;
-}
-
-static void
-BZ2Decomp_dealloc(BZ2DecompObject *self)
-{
-#ifdef WITH_THREAD
-    if (self->lock)
-        PyThread_free_lock(self->lock);
-#endif
-    Py_XDECREF(self->unused_data);
-    BZ2_bzDecompressEnd(&self->bzs);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-
-/* ===================================================================== */
-/* BZ2Decomp_Type definition. */
-
-PyDoc_STRVAR(BZ2Decomp__doc__,
-"BZ2Decompressor() -> decompressor object\n\
-\n\
-Create a new decompressor object. This object may be used to decompress\n\
-data sequentially. If you want to decompress data in one shot, use the\n\
-decompress() function instead.\n\
-");
-
-static PyTypeObject BZ2Decomp_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "bz2.BZ2Decompressor",      /*tp_name*/
-    sizeof(BZ2DecompObject), /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    (destructor)BZ2Decomp_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*/
-    PyObject_GenericGetAttr,/*tp_getattro*/
-    PyObject_GenericSetAttr,/*tp_setattro*/
-    0,                      /*tp_as_buffer*/
-    Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /*tp_flags*/
-    BZ2Decomp__doc__,       /*tp_doc*/
-    0,                      /*tp_traverse*/
-    0,                      /*tp_clear*/
-    0,                      /*tp_richcompare*/
-    0,                      /*tp_weaklistoffset*/
-    0,                      /*tp_iter*/
-    0,                      /*tp_iternext*/
-    BZ2Decomp_methods,      /*tp_methods*/
-    BZ2Decomp_members,      /*tp_members*/
-    0,                      /*tp_getset*/
-    0,                      /*tp_base*/
-    0,                      /*tp_dict*/
-    0,                      /*tp_descr_get*/
-    0,                      /*tp_descr_set*/
-    0,                      /*tp_dictoffset*/
-    (initproc)BZ2Decomp_init, /*tp_init*/
-    PyType_GenericAlloc,    /*tp_alloc*/
-    PyType_GenericNew,      /*tp_new*/
-    _PyObject_Del,          /*tp_free*/
-    0,                      /*tp_is_gc*/
-};
-
-
-/* ===================================================================== */
-/* Module functions. */
-
-PyDoc_STRVAR(bz2_compress__doc__,
-"compress(data [, compresslevel=9]) -> string\n\
-\n\
-Compress data in one shot. If you want to compress data sequentially,\n\
-use an instance of BZ2Compressor instead. The compresslevel parameter, if\n\
-given, must be a number between 1 and 9.\n\
-");
-
-static PyObject *
-bz2_compress(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    int compresslevel=9;
-    Py_buffer pdata;
-    char *data;
-    int datasize;
-    int bufsize;
-    PyObject *ret = NULL;
-    bz_stream _bzs;
-    bz_stream *bzs = &_bzs;
-    int bzerror;
-    static char *kwlist[] = {"data", "compresslevel", 0};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s*|i",
-                                     kwlist, &pdata,
-                                     &compresslevel))
-        return NULL;
-    data = pdata.buf;
-    datasize = pdata.len;
-
-    if (compresslevel < 1 || compresslevel > 9) {
-        PyErr_SetString(PyExc_ValueError,
-                        "compresslevel must be between 1 and 9");
-        PyBuffer_Release(&pdata);
-        return NULL;
-    }
-
-    /* Conforming to bz2 manual, this is large enough to fit compressed
-     * data in one shot. We will check it later anyway. */
-    bufsize = datasize + (datasize/100+1) + 600;
-
-    ret = PyString_FromStringAndSize(NULL, bufsize);
-    if (!ret) {
-        PyBuffer_Release(&pdata);
-        return NULL;
-    }
-
-    memset(bzs, 0, sizeof(bz_stream));
-
-    bzs->next_in = data;
-    bzs->avail_in = datasize;
-    bzs->next_out = BUF(ret);
-    bzs->avail_out = bufsize;
-
-    bzerror = BZ2_bzCompressInit(bzs, compresslevel, 0, 0);
-    if (bzerror != BZ_OK) {
-        Util_CatchBZ2Error(bzerror);
-        PyBuffer_Release(&pdata);
-        Py_DECREF(ret);
-        return NULL;
-    }
-
-    for (;;) {
-        Py_BEGIN_ALLOW_THREADS
-        bzerror = BZ2_bzCompress(bzs, BZ_FINISH);
-        Py_END_ALLOW_THREADS
-        if (bzerror == BZ_STREAM_END) {
-            break;
-        } else if (bzerror != BZ_FINISH_OK) {
-            BZ2_bzCompressEnd(bzs);
-            Util_CatchBZ2Error(bzerror);
-            PyBuffer_Release(&pdata);
-            Py_DECREF(ret);
-            return NULL;
-        }
-        if (bzs->avail_out == 0) {
-            bufsize = Util_NewBufferSize(bufsize);
-            if (_PyString_Resize(&ret, bufsize) < 0) {
-                BZ2_bzCompressEnd(bzs);
-                PyBuffer_Release(&pdata);
-                Py_DECREF(ret);
-                return NULL;
-            }
-            bzs->next_out = BUF(ret) + BZS_TOTAL_OUT(bzs);
-            bzs->avail_out = bufsize - (bzs->next_out - BUF(ret));
-        }
-    }
-
-    if (bzs->avail_out != 0)
-        _PyString_Resize(&ret, (Py_ssize_t)BZS_TOTAL_OUT(bzs));
-    BZ2_bzCompressEnd(bzs);
-
-    PyBuffer_Release(&pdata);
-    return ret;
-}
-
-PyDoc_STRVAR(bz2_decompress__doc__,
-"decompress(data) -> decompressed data\n\
-\n\
-Decompress data in one shot. If you want to decompress data sequentially,\n\
-use an instance of BZ2Decompressor instead.\n\
-");
-
-static PyObject *
-bz2_decompress(PyObject *self, PyObject *args)
-{
-    Py_buffer pdata;
-    char *data;
-    int datasize;
-    int bufsize = SMALLCHUNK;
-    PyObject *ret;
-    bz_stream _bzs;
-    bz_stream *bzs = &_bzs;
-    int bzerror;
-
-    if (!PyArg_ParseTuple(args, "s*:decompress", &pdata))
-        return NULL;
-    data = pdata.buf;
-    datasize = pdata.len;
-
-    if (datasize == 0) {
-        PyBuffer_Release(&pdata);
-        return PyString_FromString("");
-    }
-
-    ret = PyString_FromStringAndSize(NULL, bufsize);
-    if (!ret) {
-        PyBuffer_Release(&pdata);
-        return NULL;
-    }
-
-    memset(bzs, 0, sizeof(bz_stream));
-
-    bzs->next_in = data;
-    bzs->avail_in = datasize;
-    bzs->next_out = BUF(ret);
-    bzs->avail_out = bufsize;
-
-    bzerror = BZ2_bzDecompressInit(bzs, 0, 0);
-    if (bzerror != BZ_OK) {
-        Util_CatchBZ2Error(bzerror);
-        Py_DECREF(ret);
-        PyBuffer_Release(&pdata);
-        return NULL;
-    }
-
-    for (;;) {
-        Py_BEGIN_ALLOW_THREADS
-        bzerror = BZ2_bzDecompress(bzs);
-        Py_END_ALLOW_THREADS
-        if (bzerror == BZ_STREAM_END) {
-            break;
-        } else if (bzerror != BZ_OK) {
-            BZ2_bzDecompressEnd(bzs);
-            Util_CatchBZ2Error(bzerror);
-            PyBuffer_Release(&pdata);
-            Py_DECREF(ret);
-            return NULL;
-        }
-        if (bzs->avail_in == 0) {
-            BZ2_bzDecompressEnd(bzs);
-            PyErr_SetString(PyExc_ValueError,
-                            "couldn't find end of stream");
-            PyBuffer_Release(&pdata);
-            Py_DECREF(ret);
-            return NULL;
-        }
-        if (bzs->avail_out == 0) {
-            bufsize = Util_NewBufferSize(bufsize);
-            if (_PyString_Resize(&ret, bufsize) < 0) {
-                BZ2_bzDecompressEnd(bzs);
-                PyBuffer_Release(&pdata);
-                Py_DECREF(ret);
-                return NULL;
-            }
-            bzs->next_out = BUF(ret) + BZS_TOTAL_OUT(bzs);
-            bzs->avail_out = bufsize - (bzs->next_out - BUF(ret));
-        }
-    }
-
-    if (bzs->avail_out != 0)
-        _PyString_Resize(&ret, (Py_ssize_t)BZS_TOTAL_OUT(bzs));
-    BZ2_bzDecompressEnd(bzs);
-    PyBuffer_Release(&pdata);
-
-    return ret;
-}
-
-static PyMethodDef bz2_methods[] = {
-    {"compress", (PyCFunction) bz2_compress, METH_VARARGS|METH_KEYWORDS,
-        bz2_compress__doc__},
-    {"decompress", (PyCFunction) bz2_decompress, METH_VARARGS,
-        bz2_decompress__doc__},
-    {NULL,              NULL}           /* sentinel */
-};
-
-/* ===================================================================== */
-/* Initialization function. */
-
-PyDoc_STRVAR(bz2__doc__,
-"The python bz2 module provides a comprehensive interface for\n\
-the bz2 compression library. It implements a complete file\n\
-interface, one shot (de)compression functions, and types for\n\
-sequential (de)compression.\n\
-");
-
-PyMODINIT_FUNC
-initbz2(void)
-{
-    PyObject *m;
-
-    if (PyType_Ready(&BZ2File_Type) < 0)
-        return;
-    if (PyType_Ready(&BZ2Comp_Type) < 0)
-        return;
-    if (PyType_Ready(&BZ2Decomp_Type) < 0)
-        return;
-
-    m = Py_InitModule3("bz2", bz2_methods, bz2__doc__);
-    if (m == NULL)
-        return;
-
-    PyModule_AddObject(m, "__author__", PyString_FromString(__author__));
-
-    Py_INCREF(&BZ2File_Type);
-    PyModule_AddObject(m, "BZ2File", (PyObject *)&BZ2File_Type);
-
-    Py_INCREF(&BZ2Comp_Type);
-    PyModule_AddObject(m, "BZ2Compressor", (PyObject *)&BZ2Comp_Type);
-
-    Py_INCREF(&BZ2Decomp_Type);
-    PyModule_AddObject(m, "BZ2Decompressor", (PyObject *)&BZ2Decomp_Type);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cPickle.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/cPickle.c
deleted file mode 100644
index 845350f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cPickle.c
+++ /dev/null
@@ -1,6023 +0,0 @@
-#include "Python.h"
-#include "cStringIO.h"
-#include "structmember.h"
-
-PyDoc_STRVAR(cPickle_module_documentation,
-"C implementation and optimization of the Python pickle module.");
-
-#ifndef Py_eval_input
-#include <graminit.h>
-#define Py_eval_input eval_input
-#endif /* Py_eval_input */
-
-#define DEL_LIST_SLICE(list, from, to) (PyList_SetSlice(list, from, to, NULL))
-
-#define WRITE_BUF_SIZE 256
-
-/* Bump this when new opcodes are added to the pickle protocol. */
-#define HIGHEST_PROTOCOL 2
-
-/*
- * Note: The UNICODE macro controls the TCHAR meaning of the win32 API. Since
- * all headers have already been included here, we can safely redefine it.
- */
-#ifdef UNICODE
-#  undef UNICODE
-#endif
-
-/*
- * Pickle opcodes.  These must be kept in synch with pickle.py.  Extensive
- * docs are in pickletools.py.
- */
-#define MARK        '('
-#define STOP        '.'
-#define POP         '0'
-#define POP_MARK    '1'
-#define DUP         '2'
-#define FLOAT       'F'
-#define BINFLOAT    'G'
-#define INT         'I'
-#define BININT      'J'
-#define BININT1     'K'
-#define LONG        'L'
-#define BININT2     'M'
-#define NONE        'N'
-#define PERSID      'P'
-#define BINPERSID   'Q'
-#define REDUCE      'R'
-#define STRING      'S'
-#define BINSTRING   'T'
-#define SHORT_BINSTRING 'U'
-#define UNICODE     'V'
-#define BINUNICODE  'X'
-#define APPEND      'a'
-#define BUILD       'b'
-#define GLOBAL      'c'
-#define DICT        'd'
-#define EMPTY_DICT  '}'
-#define APPENDS     'e'
-#define GET         'g'
-#define BINGET      'h'
-#define INST        'i'
-#define LONG_BINGET 'j'
-#define LIST        'l'
-#define EMPTY_LIST  ']'
-#define OBJ         'o'
-#define PUT         'p'
-#define BINPUT      'q'
-#define LONG_BINPUT 'r'
-#define SETITEM     's'
-#define TUPLE       't'
-#define EMPTY_TUPLE ')'
-#define SETITEMS    'u'
-
-/* Protocol 2. */
-#define PROTO    '\x80' /* identify pickle protocol */
-#define NEWOBJ   '\x81' /* build object by applying cls.__new__ to argtuple */
-#define EXT1     '\x82' /* push object from extension registry; 1-byte index */
-#define EXT2     '\x83' /* ditto, but 2-byte index */
-#define EXT4     '\x84' /* ditto, but 4-byte index */
-#define TUPLE1   '\x85' /* build 1-tuple from stack top */
-#define TUPLE2   '\x86' /* build 2-tuple from two topmost stack items */
-#define TUPLE3   '\x87' /* build 3-tuple from three topmost stack items */
-#define NEWTRUE  '\x88' /* push True */
-#define NEWFALSE '\x89' /* push False */
-#define LONG1    '\x8a' /* push long from < 256 bytes */
-#define LONG4    '\x8b' /* push really big long */
-
-/* There aren't opcodes -- they're ways to pickle bools before protocol 2,
- * so that unpicklers written before bools were introduced unpickle them
- * as ints, but unpicklers after can recognize that bools were intended.
- * Note that protocol 2 added direct ways to pickle bools.
- */
-#undef TRUE
-#define TRUE        "I01\n"
-#undef FALSE
-#define FALSE       "I00\n"
-
-/* Keep in synch with pickle.Pickler._BATCHSIZE.  This is how many elements
- * batch_list/dict() pumps out before doing APPENDS/SETITEMS.  Nothing will
- * break if this gets out of synch with pickle.py, but it's unclear that
- * would help anything either.
- */
-#define BATCHSIZE 1000
-
-static char MARKv = MARK;
-
-static PyObject *PickleError;
-static PyObject *PicklingError;
-static PyObject *UnpickleableError;
-static PyObject *UnpicklingError;
-static PyObject *BadPickleGet;
-
-/* As the name says, an empty tuple. */
-static PyObject *empty_tuple;
-
-/* copy_reg.dispatch_table, {type_object: pickling_function} */
-static PyObject *dispatch_table;
-
-/* For EXT[124] opcodes. */
-/* copy_reg._extension_registry, {(module_name, function_name): code} */
-static PyObject *extension_registry;
-/* copy_reg._inverted_registry, {code: (module_name, function_name)} */
-static PyObject *inverted_registry;
-/* copy_reg._extension_cache, {code: object} */
-static PyObject *extension_cache;
-
-/* For looking up name pairs in copy_reg._extension_registry. */
-static PyObject *two_tuple;
-
-static PyObject *__class___str, *__getinitargs___str, *__dict___str,
-  *__getstate___str, *__setstate___str, *__name___str, *__reduce___str,
-  *__reduce_ex___str,
-  *write_str, *append_str,
-  *read_str, *readline_str, *__main___str,
-  *dispatch_table_str;
-
-/*************************************************************************
- Internal Data type for pickle data.                                     */
-
-typedef struct {
-    PyObject_HEAD
-    int length;         /* number of initial slots in data currently used */
-    int size;           /* number of slots in data allocated */
-    PyObject **data;
-} Pdata;
-
-static void
-Pdata_dealloc(Pdata *self)
-{
-    int i;
-    PyObject **p;
-
-    for (i = self->length, p = self->data; --i >= 0; p++) {
-        Py_DECREF(*p);
-    }
-    if (self->data)
-        free(self->data);
-    PyObject_Del(self);
-}
-
-static PyTypeObject PdataType = {
-    PyVarObject_HEAD_INIT(NULL, 0) "cPickle.Pdata", sizeof(Pdata), 0,
-    (destructor)Pdata_dealloc,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0L,0L,0L,0L, ""
-};
-
-#define Pdata_Check(O) (Py_TYPE(O) == &PdataType)
-
-static PyObject *
-Pdata_New(void)
-{
-    Pdata *self;
-
-    if (!(self = PyObject_New(Pdata, &PdataType)))
-        return NULL;
-    self->size = 8;
-    self->length = 0;
-    self->data = malloc(self->size * sizeof(PyObject*));
-    if (self->data)
-        return (PyObject*)self;
-    Py_DECREF(self);
-    return PyErr_NoMemory();
-}
-
-static int
-stackUnderflow(void)
-{
-    PyErr_SetString(UnpicklingError, "unpickling stack underflow");
-    return -1;
-}
-
-/* Retain only the initial clearto items.  If clearto >= the current
- * number of items, this is a (non-erroneous) NOP.
- */
-static int
-Pdata_clear(Pdata *self, int clearto)
-{
-    int i;
-    PyObject **p;
-
-    if (clearto < 0) return stackUnderflow();
-    if (clearto >= self->length) return 0;
-
-    for (i = self->length, p = self->data + clearto;
-         --i >= clearto;
-         p++) {
-        Py_CLEAR(*p);
-    }
-    self->length = clearto;
-
-    return 0;
-}
-
-static int
-Pdata_grow(Pdata *self)
-{
-    int bigger;
-    size_t nbytes;
-    PyObject **tmp;
-
-    bigger = self->size << 1;
-    if (bigger <= 0)            /* was 0, or new value overflows */
-        goto nomemory;
-    if ((int)(size_t)bigger != bigger)
-        goto nomemory;
-    nbytes = (size_t)bigger * sizeof(PyObject *);
-    if (nbytes / sizeof(PyObject *) != (size_t)bigger)
-        goto nomemory;
-    tmp = realloc(self->data, nbytes);
-    if (tmp == NULL)
-        goto nomemory;
-    self->data = tmp;
-    self->size = bigger;
-    return 0;
-
-  nomemory:
-    PyErr_NoMemory();
-    return -1;
-}
-
-/* D is a Pdata*.  Pop the topmost element and store it into V, which
- * must be an lvalue holding PyObject*.  On stack underflow, UnpicklingError
- * is raised and V is set to NULL.  D and V may be evaluated several times.
- */
-#define PDATA_POP(D, V) {                                       \
-    if ((D)->length)                                            \
-        (V) = (D)->data[--((D)->length)];                       \
-    else {                                                      \
-        PyErr_SetString(UnpicklingError, "bad pickle data");            \
-        (V) = NULL;                                             \
-    }                                                           \
-}
-
-/* PDATA_PUSH and PDATA_APPEND both push rvalue PyObject* O on to Pdata*
- * D.  If the Pdata stack can't be grown to hold the new value, both
- * raise MemoryError and execute "return ER".  The difference is in ownership
- * of O after:  _PUSH transfers ownership of O from the caller to the stack
- * (no incref of O is done, and in case of error O is decrefed), while
- * _APPEND pushes a new reference.
- */
-
-/* Push O on stack D, giving ownership of O to the stack. */
-#define PDATA_PUSH(D, O, ER) {                                  \
-    if (((Pdata*)(D))->length == ((Pdata*)(D))->size &&         \
-        Pdata_grow((Pdata*)(D)) < 0) {                          \
-        Py_DECREF(O);                                           \
-        return ER;                                              \
-    }                                                           \
-    ((Pdata*)(D))->data[((Pdata*)(D))->length++] = (O);         \
-}
-
-/* Push O on stack D, pushing a new reference. */
-#define PDATA_APPEND(D, O, ER) {                                \
-    if (((Pdata*)(D))->length == ((Pdata*)(D))->size &&         \
-        Pdata_grow((Pdata*)(D)) < 0)                            \
-        return ER;                                              \
-    Py_INCREF(O);                                               \
-    ((Pdata*)(D))->data[((Pdata*)(D))->length++] = (O);         \
-}
-
-
-static PyObject *
-Pdata_popTuple(Pdata *self, int start)
-{
-    PyObject *r;
-    int i, j, l;
-
-    l = self->length-start;
-    r = PyTuple_New(l);
-    if (r == NULL)
-        return NULL;
-    for (i = start, j = 0 ; j < l; i++, j++)
-        PyTuple_SET_ITEM(r, j, self->data[i]);
-
-    self->length = start;
-    return r;
-}
-
-static PyObject *
-Pdata_popList(Pdata *self, int start)
-{
-    PyObject *r;
-    int i, j, l;
-
-    l=self->length-start;
-    if (!( r=PyList_New(l)))  return NULL;
-    for (i=start, j=0 ; j < l; i++, j++)
-        PyList_SET_ITEM(r, j, self->data[i]);
-
-    self->length=start;
-    return r;
-}
-
-/*************************************************************************/
-
-#define ARG_TUP(self, o) {                          \
-  if (self->arg || (self->arg=PyTuple_New(1))) {    \
-      Py_XDECREF(PyTuple_GET_ITEM(self->arg,0));    \
-      PyTuple_SET_ITEM(self->arg,0,o);              \
-  }                                                 \
-  else {                                            \
-      Py_DECREF(o);                                 \
-  }                                                 \
-}
-
-#define FREE_ARG_TUP(self) {                        \
-    if (Py_REFCNT(self->arg) > 1) {                 \
-      Py_DECREF(self->arg);                         \
-      self->arg=NULL;                               \
-    }                                               \
-  }
-
-typedef struct Picklerobject {
-    PyObject_HEAD
-    FILE *fp;
-    PyObject *write;
-    PyObject *file;
-    PyObject *memo;
-    PyObject *arg;
-    PyObject *pers_func;
-    PyObject *inst_pers_func;
-
-    /* pickle protocol number, >= 0 */
-    int proto;
-
-    /* bool, true if proto > 0 */
-    int bin;
-
-    int fast; /* Fast mode doesn't save in memo, don't use if circ ref */
-    int (*write_func)(struct Picklerobject *, const char *, Py_ssize_t);
-    char *write_buf;
-    int buf_size;
-    PyObject *dispatch_table;
-    int fast_container; /* count nested container dumps */
-    PyObject *fast_memo;
-} Picklerobject;
-
-#ifndef PY_CPICKLE_FAST_LIMIT
-#define PY_CPICKLE_FAST_LIMIT 50
-#endif
-
-static PyTypeObject Picklertype;
-
-typedef struct Unpicklerobject {
-    PyObject_HEAD
-    FILE *fp;
-    PyObject *file;
-    PyObject *readline;
-    PyObject *read;
-    PyObject *memo;
-    PyObject *arg;
-    Pdata *stack;
-    PyObject *mark;
-    PyObject *pers_func;
-    PyObject *last_string;
-    int *marks;
-    int num_marks;
-    int marks_size;
-    Py_ssize_t (*read_func)(struct Unpicklerobject *, char **, Py_ssize_t);
-    Py_ssize_t (*readline_func)(struct Unpicklerobject *, char **);
-    int buf_size;
-    char *buf;
-    PyObject *find_class;
-} Unpicklerobject;
-
-static PyTypeObject Unpicklertype;
-
-/* Forward decls that need the above structs */
-static int save(Picklerobject *, PyObject *, int);
-static int put2(Picklerobject *, PyObject *);
-
-static
-PyObject *
-cPickle_ErrFormat(PyObject *ErrType, char *stringformat, char *format, ...)
-{
-    va_list va;
-    PyObject *args=0, *retval=0;
-    va_start(va, format);
-
-    if (format) args = Py_VaBuildValue(format, va);
-    va_end(va);
-    if (format && ! args) return NULL;
-    if (stringformat && !(retval=PyString_FromString(stringformat)))
-        return NULL;
-
-    if (retval) {
-        if (args) {
-            PyObject *v;
-            v=PyString_Format(retval, args);
-            Py_DECREF(retval);
-            Py_DECREF(args);
-            if (! v) return NULL;
-            retval=v;
-        }
-    }
-    else
-        if (args) retval=args;
-        else {
-            PyErr_SetObject(ErrType,Py_None);
-            return NULL;
-        }
-    PyErr_SetObject(ErrType,retval);
-    Py_DECREF(retval);
-    return NULL;
-}
-
-static int
-write_file(Picklerobject *self, const char *s, Py_ssize_t  n)
-{
-    size_t nbyteswritten;
-
-    if (s == NULL) {
-        return 0;
-    }
-
-    if (n > INT_MAX) {
-        /* String too large */
-        return -1;
-    }
-
-    PyFile_IncUseCount((PyFileObject *)self->file);
-    Py_BEGIN_ALLOW_THREADS
-    nbyteswritten = fwrite(s, sizeof(char), n, self->fp);
-    Py_END_ALLOW_THREADS
-    PyFile_DecUseCount((PyFileObject *)self->file);
-    if (nbyteswritten != (size_t)n) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        return -1;
-    }
-
-    return (int)n;
-}
-
-static int
-write_cStringIO(Picklerobject *self, const char *s, Py_ssize_t  n)
-{
-    if (s == NULL) {
-        return 0;
-    }
-
-    if (PycStringIO->cwrite((PyObject *)self->file, s, n) != n) {
-        return -1;
-    }
-
-    return (int)n;
-}
-
-static int
-write_none(Picklerobject *self, const char *s, Py_ssize_t  n)
-{
-    if (s == NULL) return 0;
-    if (n > INT_MAX) return -1;
-    return (int)n;
-}
-
-static int
-write_other(Picklerobject *self, const char *s, Py_ssize_t  _n)
-{
-    PyObject *py_str = 0, *junk = 0;
-    int n;
-
-    if (_n > INT_MAX)
-        return -1;
-    n = (int)_n;
-    if (s == NULL) {
-        if (!( self->buf_size ))  return 0;
-        py_str = PyString_FromStringAndSize(self->write_buf,
-                                            self->buf_size);
-        if (!py_str)
-            return -1;
-    }
-    else {
-        if (self->buf_size && (n + self->buf_size) > WRITE_BUF_SIZE) {
-            if (write_other(self, NULL, 0) < 0)
-                return -1;
-        }
-
-        if (n > WRITE_BUF_SIZE) {
-            if (!( py_str =
-                   PyString_FromStringAndSize(s, n)))
-                return -1;
-        }
-        else {
-            memcpy(self->write_buf + self->buf_size, s, n);
-            self->buf_size += n;
-            return n;
-        }
-    }
-
-    if (self->write) {
-        /* object with write method */
-        ARG_TUP(self, py_str);
-        if (self->arg) {
-            junk = PyObject_Call(self->write, self->arg, NULL);
-            FREE_ARG_TUP(self);
-        }
-        if (junk) Py_DECREF(junk);
-        else return -1;
-    }
-    else
-        PDATA_PUSH(self->file, py_str, -1);
-
-    self->buf_size = 0;
-    return n;
-}
-
-
-static Py_ssize_t
-read_file(Unpicklerobject *self, char **s, Py_ssize_t n)
-{
-    size_t nbytesread;
-
-    if (self->buf_size == 0) {
-        int size;
-
-        size = ((n < 32) ? 32 : n);
-        if (!( self->buf = (char *)malloc(size))) {
-            PyErr_NoMemory();
-            return -1;
-        }
-
-        self->buf_size = size;
-    }
-    else if (n > self->buf_size) {
-        char *newbuf = (char *)realloc(self->buf, n);
-        if (!newbuf)  {
-            PyErr_NoMemory();
-            return -1;
-        }
-        self->buf = newbuf;
-        self->buf_size = n;
-    }
-
-    PyFile_IncUseCount((PyFileObject *)self->file);
-    Py_BEGIN_ALLOW_THREADS
-    nbytesread = fread(self->buf, sizeof(char), n, self->fp);
-    Py_END_ALLOW_THREADS
-    PyFile_DecUseCount((PyFileObject *)self->file);
-    if (nbytesread != (size_t)n) {
-        if (feof(self->fp)) {
-            PyErr_SetNone(PyExc_EOFError);
-            return -1;
-        }
-
-        PyErr_SetFromErrno(PyExc_IOError);
-        return -1;
-    }
-
-    *s = self->buf;
-
-    return n;
-}
-
-
-static Py_ssize_t
-readline_file(Unpicklerobject *self, char **s)
-{
-    int i;
-
-    if (self->buf_size == 0) {
-        if (!( self->buf = (char *)malloc(40))) {
-            PyErr_NoMemory();
-            return -1;
-        }
-        self->buf_size = 40;
-    }
-
-    i = 0;
-    while (1) {
-        int bigger;
-        char *newbuf;
-        for (; i < (self->buf_size - 1); i++) {
-            if (feof(self->fp) ||
-                (self->buf[i] = getc(self->fp)) == '\n') {
-                self->buf[i + 1] = '\0';
-                *s = self->buf;
-                return i + 1;
-            }
-        }
-        bigger = self->buf_size << 1;
-        if (bigger <= 0) {              /* overflow */
-            PyErr_NoMemory();
-            return -1;
-        }
-        newbuf = (char *)realloc(self->buf, bigger);
-        if (!newbuf)  {
-            PyErr_NoMemory();
-            return -1;
-        }
-        self->buf = newbuf;
-        self->buf_size = bigger;
-    }
-}
-
-
-static Py_ssize_t
-read_cStringIO(Unpicklerobject *self, char **s, Py_ssize_t  n)
-{
-    char *ptr;
-
-    if (PycStringIO->cread((PyObject *)self->file, &ptr, n) != n) {
-        PyErr_SetNone(PyExc_EOFError);
-        return -1;
-    }
-
-    *s = ptr;
-
-    return n;
-}
-
-
-static Py_ssize_t
-readline_cStringIO(Unpicklerobject *self, char **s)
-{
-    Py_ssize_t n;
-    char *ptr;
-
-    if ((n = PycStringIO->creadline((PyObject *)self->file, &ptr)) < 0) {
-        return -1;
-    }
-
-    *s = ptr;
-
-    return n;
-}
-
-
-static Py_ssize_t
-read_other(Unpicklerobject *self, char **s, Py_ssize_t  n)
-{
-    PyObject *bytes, *str=0;
-
-    if (!( bytes = PyInt_FromSsize_t(n)))  return -1;
-
-    ARG_TUP(self, bytes);
-    if (self->arg) {
-        str = PyObject_Call(self->read, self->arg, NULL);
-        FREE_ARG_TUP(self);
-    }
-    if (! str) return -1;
-
-    Py_XDECREF(self->last_string);
-    self->last_string = str;
-
-    if (! (*s = PyString_AsString(str))) return -1;
-
-    if (PyString_GET_SIZE(str) != n) {
-        PyErr_SetNone(PyExc_EOFError);
-        return -1;
-    }
-
-    return n;
-}
-
-
-static Py_ssize_t
-readline_other(Unpicklerobject *self, char **s)
-{
-    PyObject *str;
-    Py_ssize_t str_size;
-
-    if (!( str = PyObject_CallObject(self->readline, empty_tuple)))  {
-        return -1;
-    }
-
-    if ((str_size = PyString_Size(str)) < 0)
-        return -1;
-
-    Py_XDECREF(self->last_string);
-    self->last_string = str;
-
-    if (! (*s = PyString_AsString(str)))
-        return -1;
-
-    return str_size;
-}
-
-/* Copy the first n bytes from s into newly malloc'ed memory, plus a
- * trailing 0 byte.  Return a pointer to that, or NULL if out of memory.
- * The caller is responsible for free()'ing the return value.
- */
-static char *
-pystrndup(const char *s, int n)
-{
-    char *r = (char *)malloc(n+1);
-    if (r == NULL)
-        return (char*)PyErr_NoMemory();
-    memcpy(r, s, n);
-    r[n] = 0;
-    return r;
-}
-
-
-static int
-get(Picklerobject *self, PyObject *id)
-{
-    PyObject *value, *mv;
-    long c_value;
-    char s[30];
-    size_t len;
-
-    if (!( mv = PyDict_GetItem(self->memo, id)))  {
-        PyErr_SetObject(PyExc_KeyError, id);
-        return -1;
-    }
-
-    if (!( value = PyTuple_GetItem(mv, 0)))
-        return -1;
-
-    if (!( PyInt_Check(value)))  {
-        PyErr_SetString(PicklingError, "no int where int expected in memo");
-        return -1;
-    }
-    c_value = PyInt_AS_LONG((PyIntObject*)value);
-
-    if (!self->bin) {
-        s[0] = GET;
-        PyOS_snprintf(s + 1, sizeof(s) - 1, "%ld\n", c_value);
-        len = strlen(s);
-    }
-    else if (Pdata_Check(self->file)) {
-        if (write_other(self, NULL, 0) < 0) return -1;
-        PDATA_APPEND(self->file, mv, -1);
-        return 0;
-    }
-    else {
-        if (c_value < 256) {
-            s[0] = BINGET;
-            s[1] = (int)(c_value & 0xff);
-            len = 2;
-        }
-        else {
-            s[0] = LONG_BINGET;
-            s[1] = (int)(c_value & 0xff);
-            s[2] = (int)((c_value >> 8)  & 0xff);
-            s[3] = (int)((c_value >> 16) & 0xff);
-            s[4] = (int)((c_value >> 24) & 0xff);
-            len = 5;
-        }
-    }
-
-    if (self->write_func(self, s, len) < 0)
-        return -1;
-
-    return 0;
-}
-
-
-static int
-put(Picklerobject *self, PyObject *ob)
-{
-    if (Py_REFCNT(ob) < 2 || self->fast)
-        return 0;
-
-    return put2(self, ob);
-}
-
-
-static int
-put2(Picklerobject *self, PyObject *ob)
-{
-    char c_str[30];
-    int p;
-    size_t len;
-    int res = -1;
-    PyObject *py_ob_id = 0, *memo_len = 0, *t = 0;
-
-    if (self->fast)
-        return 0;
-
-    if ((p = PyDict_Size(self->memo)) < 0)
-        goto finally;
-
-    /* Make sure memo keys are positive! */
-    /* XXX Why?
-     * XXX And does "positive" really mean non-negative?
-     * XXX pickle.py starts with PUT index 0, not 1.  This makes for
-     * XXX gratuitous differences between the pickling modules.
-     */
-    p++;
-
-    if (!( py_ob_id = PyLong_FromVoidPtr(ob)))
-        goto finally;
-
-    if (!( memo_len = PyInt_FromLong(p)))
-        goto finally;
-
-    if (!( t = PyTuple_New(2)))
-        goto finally;
-
-    PyTuple_SET_ITEM(t, 0, memo_len);
-    Py_INCREF(memo_len);
-    PyTuple_SET_ITEM(t, 1, ob);
-    Py_INCREF(ob);
-
-    if (PyDict_SetItem(self->memo, py_ob_id, t) < 0)
-        goto finally;
-
-    if (!self->bin) {
-        c_str[0] = PUT;
-        PyOS_snprintf(c_str + 1, sizeof(c_str) - 1, "%d\n", p);
-        len = strlen(c_str);
-    }
-    else if (Pdata_Check(self->file)) {
-        if (write_other(self, NULL, 0) < 0) return -1;
-        PDATA_APPEND(self->file, memo_len, -1);
-        res=0;          /* Job well done ;) */
-        goto finally;
-    }
-    else {
-        if (p >= 256) {
-            c_str[0] = LONG_BINPUT;
-            c_str[1] = (int)(p & 0xff);
-            c_str[2] = (int)((p >> 8)  & 0xff);
-            c_str[3] = (int)((p >> 16) & 0xff);
-            c_str[4] = (int)((p >> 24) & 0xff);
-            len = 5;
-        }
-        else {
-            c_str[0] = BINPUT;
-            c_str[1] = p;
-            len = 2;
-        }
-    }
-
-    if (self->write_func(self, c_str, len) < 0)
-        goto finally;
-
-    res = 0;
-
-  finally:
-    Py_XDECREF(py_ob_id);
-    Py_XDECREF(memo_len);
-    Py_XDECREF(t);
-
-    return res;
-}
-
-static PyObject *
-whichmodule(PyObject *global, PyObject *global_name)
-{
-    Py_ssize_t i, j;
-    PyObject *module = 0, *modules_dict = 0,
-        *global_name_attr = 0, *name = 0;
-
-    module = PyObject_GetAttrString(global, "__module__");
-    if (module)
-        return module;
-    if (PyErr_ExceptionMatches(PyExc_AttributeError))
-        PyErr_Clear();
-    else
-        return NULL;
-
-    if (!( modules_dict = PySys_GetObject("modules")))
-        return NULL;
-
-    i = 0;
-    while ((j = PyDict_Next(modules_dict, &i, &name, &module))) {
-
-        if (PyObject_Compare(name, __main___str)==0) continue;
-
-        global_name_attr = PyObject_GetAttr(module, global_name);
-        if (!global_name_attr)  {
-            if (PyErr_ExceptionMatches(PyExc_AttributeError))
-                PyErr_Clear();
-            else
-                return NULL;
-            continue;
-        }
-
-        if (global_name_attr != global) {
-            Py_DECREF(global_name_attr);
-            continue;
-        }
-
-        Py_DECREF(global_name_attr);
-
-        break;
-    }
-
-    /* The following implements the rule in pickle.py added in 1.5
-       that used __main__ if no module is found.  I don't actually
-       like this rule. jlf
-    */
-    if (!j) {
-        name=__main___str;
-    }
-
-    Py_INCREF(name);
-    return name;
-}
-
-
-static int
-fast_save_enter(Picklerobject *self, PyObject *obj)
-{
-    /* if fast_container < 0, we're doing an error exit. */
-    if (++self->fast_container >= PY_CPICKLE_FAST_LIMIT) {
-        PyObject *key = NULL;
-        if (self->fast_memo == NULL) {
-            self->fast_memo = PyDict_New();
-            if (self->fast_memo == NULL) {
-                self->fast_container = -1;
-                return 0;
-            }
-        }
-        key = PyLong_FromVoidPtr(obj);
-        if (key == NULL)
-            return 0;
-        if (PyDict_GetItem(self->fast_memo, key)) {
-            Py_DECREF(key);
-            PyErr_Format(PyExc_ValueError,
-                         "fast mode: can't pickle cyclic objects "
-                         "including object type %s at %p",
-                         Py_TYPE(obj)->tp_name, obj);
-            self->fast_container = -1;
-            return 0;
-        }
-        if (PyDict_SetItem(self->fast_memo, key, Py_None) < 0) {
-            Py_DECREF(key);
-            self->fast_container = -1;
-            return 0;
-        }
-        Py_DECREF(key);
-    }
-    return 1;
-}
-
-int
-fast_save_leave(Picklerobject *self, PyObject *obj)
-{
-    if (self->fast_container-- >= PY_CPICKLE_FAST_LIMIT) {
-        PyObject *key = PyLong_FromVoidPtr(obj);
-        if (key == NULL)
-            return 0;
-        if (PyDict_DelItem(self->fast_memo, key) < 0) {
-            Py_DECREF(key);
-            return 0;
-        }
-        Py_DECREF(key);
-    }
-    return 1;
-}
-
-static int
-save_none(Picklerobject *self, PyObject *args)
-{
-    static char none = NONE;
-    if (self->write_func(self, &none, 1) < 0)
-        return -1;
-
-    return 0;
-}
-
-static int
-save_bool(Picklerobject *self, PyObject *args)
-{
-    static const char *buf[2] = {FALSE, TRUE};
-    static char len[2] = {sizeof(FALSE)-1, sizeof(TRUE)-1};
-    long l = PyInt_AS_LONG((PyIntObject *)args);
-
-    if (self->proto >= 2) {
-        char opcode = l ? NEWTRUE : NEWFALSE;
-        if (self->write_func(self, &opcode, 1) < 0)
-            return -1;
-    }
-    else if (self->write_func(self, buf[l], len[l]) < 0)
-        return -1;
-    return 0;
-}
-
-static int
-save_int(Picklerobject *self, PyObject *args)
-{
-    char c_str[32];
-    long l = PyInt_AS_LONG((PyIntObject *)args);
-    int len = 0;
-
-    if (!self->bin
-#if SIZEOF_LONG > 4
-        || l >  0x7fffffffL
-        || l < -0x80000000L
-#endif
-        ) {
-        /* Text-mode pickle, or long too big to fit in the 4-byte
-         * signed BININT format:  store as a string.
-         */
-        c_str[0] = INT;
-        PyOS_snprintf(c_str + 1, sizeof(c_str) - 1, "%ld\n", l);
-        if (self->write_func(self, c_str, strlen(c_str)) < 0)
-            return -1;
-    }
-    else {
-        /* Binary pickle and l fits in a signed 4-byte int. */
-        c_str[1] = (int)( l        & 0xff);
-        c_str[2] = (int)((l >> 8)  & 0xff);
-        c_str[3] = (int)((l >> 16) & 0xff);
-        c_str[4] = (int)((l >> 24) & 0xff);
-
-        if ((c_str[4] == 0) && (c_str[3] == 0)) {
-            if (c_str[2] == 0) {
-                c_str[0] = BININT1;
-                len = 2;
-            }
-            else {
-                c_str[0] = BININT2;
-                len = 3;
-            }
-        }
-        else {
-            c_str[0] = BININT;
-            len = 5;
-        }
-
-        if (self->write_func(self, c_str, len) < 0)
-            return -1;
-    }
-
-    return 0;
-}
-
-
-static int
-save_long(Picklerobject *self, PyObject *args)
-{
-    Py_ssize_t size;
-    int res = -1;
-    PyObject *repr = NULL;
-
-    static char l = LONG;
-
-    if (self->proto >= 2) {
-        /* Linear-time pickling. */
-        size_t nbits;
-        size_t nbytes;
-        unsigned char *pdata;
-        char c_str[5];
-        int i;
-        int sign = _PyLong_Sign(args);
-
-        if (sign == 0) {
-            /* It's 0 -- an empty bytestring. */
-            c_str[0] = LONG1;
-            c_str[1] = 0;
-            i = self->write_func(self, c_str, 2);
-            if (i < 0) goto finally;
-            res = 0;
-            goto finally;
-        }
-        nbits = _PyLong_NumBits(args);
-        if (nbits == (size_t)-1 && PyErr_Occurred())
-            goto finally;
-        /* How many bytes do we need?  There are nbits >> 3 full
-         * bytes of data, and nbits & 7 leftover bits.  If there
-         * are any leftover bits, then we clearly need another
-         * byte.  Wnat's not so obvious is that we *probably*
-         * need another byte even if there aren't any leftovers:
-         * the most-significant bit of the most-significant byte
-         * acts like a sign bit, and it's usually got a sense
-         * opposite of the one we need.  The exception is longs
-         * of the form -(2**(8*j-1)) for j > 0.  Such a long is
-         * its own 256's-complement, so has the right sign bit
-         * even without the extra byte.  That's a pain to check
-         * for in advance, though, so we always grab an extra
-         * byte at the start, and cut it back later if possible.
-         */
-        nbytes = (nbits >> 3) + 1;
-        if (nbytes > INT_MAX) {
-            PyErr_SetString(PyExc_OverflowError, "long too large "
-                "to pickle");
-            goto finally;
-        }
-        repr = PyString_FromStringAndSize(NULL, (int)nbytes);
-        if (repr == NULL) goto finally;
-        pdata = (unsigned char *)PyString_AS_STRING(repr);
-        i = _PyLong_AsByteArray((PyLongObject *)args,
-                        pdata, nbytes,
-                        1 /* little endian */, 1 /* signed */);
-        if (i < 0) goto finally;
-        /* If the long is negative, this may be a byte more than
-         * needed.  This is so iff the MSB is all redundant sign
-         * bits.
-         */
-        if (sign < 0 && nbytes > 1 && pdata[nbytes - 1] == 0xff &&
-            (pdata[nbytes - 2] & 0x80) != 0)
-            --nbytes;
-
-        if (nbytes < 256) {
-            c_str[0] = LONG1;
-            c_str[1] = (char)nbytes;
-            size = 2;
-        }
-        else {
-            c_str[0] = LONG4;
-            size = (int)nbytes;
-            for (i = 1; i < 5; i++) {
-                c_str[i] = (char)(size & 0xff);
-                size >>= 8;
-            }
-            size = 5;
-        }
-        i = self->write_func(self, c_str, size);
-        if (i < 0) goto finally;
-        i = self->write_func(self, (char *)pdata, (int)nbytes);
-        if (i < 0) goto finally;
-        res = 0;
-        goto finally;
-    }
-
-    /* proto < 2:  write the repr and newline.  This is quadratic-time
-     * (in the number of digits), in both directions.
-     */
-    if (!( repr = PyObject_Repr(args)))
-        goto finally;
-
-    if ((size = PyString_Size(repr)) < 0)
-        goto finally;
-
-    if (self->write_func(self, &l, 1) < 0)
-        goto finally;
-
-    if (self->write_func(self,
-                         PyString_AS_STRING((PyStringObject *)repr),
-                                            size) < 0)
-        goto finally;
-
-    if (self->write_func(self, "\n", 1) < 0)
-        goto finally;
-
-    res = 0;
-
-  finally:
-    Py_XDECREF(repr);
-    return res;
-}
-
-
-static int
-save_float(Picklerobject *self, PyObject *args)
-{
-    double x = PyFloat_AS_DOUBLE((PyFloatObject *)args);
-
-    if (self->bin) {
-        char str[9];
-        str[0] = BINFLOAT;
-        if (_PyFloat_Pack8(x, (unsigned char *)&str[1], 0) < 0)
-            return -1;
-        if (self->write_func(self, str, 9) < 0)
-            return -1;
-    }
-    else {
-        int result = -1;
-        char *buf = NULL;
-        char op = FLOAT;
-
-        if (self->write_func(self, &op, 1) < 0)
-            goto done;
-
-        buf = PyOS_double_to_string(x, 'g', 17, 0, NULL);
-        if (!buf) {
-            PyErr_NoMemory();
-            goto done;
-        }
-
-        if (self->write_func(self, buf, strlen(buf)) < 0)
-            goto done;
-
-        if (self->write_func(self, "\n", 1) < 0)
-            goto done;
-
-        result = 0;
-done:
-        PyMem_Free(buf);
-        return result;
-    }
-
-    return 0;
-}
-
-
-static int
-save_string(Picklerobject *self, PyObject *args, int doput)
-{
-    int size, len;
-    PyObject *repr=0;
-
-    if ((size = PyString_Size(args)) < 0)
-        return -1;
-
-    if (!self->bin) {
-        char *repr_str;
-
-        static char string = STRING;
-
-        if (!( repr = PyObject_Repr(args)))
-            return -1;
-
-        if ((len = PyString_Size(repr)) < 0)
-            goto err;
-        repr_str = PyString_AS_STRING((PyStringObject *)repr);
-
-        if (self->write_func(self, &string, 1) < 0)
-            goto err;
-
-        if (self->write_func(self, repr_str, len) < 0)
-            goto err;
-
-        if (self->write_func(self, "\n", 1) < 0)
-            goto err;
-
-        Py_XDECREF(repr);
-    }
-    else {
-        int i;
-        char c_str[5];
-
-        if (size < 256) {
-            c_str[0] = SHORT_BINSTRING;
-            c_str[1] = size;
-            len = 2;
-        }
-        else if (size <= INT_MAX) {
-            c_str[0] = BINSTRING;
-            for (i = 1; i < 5; i++)
-                c_str[i] = (int)(size >> ((i - 1) * 8));
-            len = 5;
-        }
-        else
-            return -1;    /* string too large */
-
-        if (self->write_func(self, c_str, len) < 0)
-            return -1;
-
-        if (size > 128 && Pdata_Check(self->file)) {
-            if (write_other(self, NULL, 0) < 0) return -1;
-            PDATA_APPEND(self->file, args, -1);
-        }
-        else {
-            if (self->write_func(self,
-                                 PyString_AS_STRING(
-                                    (PyStringObject *)args),
-                                 size) < 0)
-                return -1;
-        }
-    }
-
-    if (doput)
-        if (put(self, args) < 0)
-            return -1;
-
-    return 0;
-
-  err:
-    Py_XDECREF(repr);
-    return -1;
-}
-
-
-#ifdef Py_USING_UNICODE
-/* A copy of PyUnicode_EncodeRawUnicodeEscape() that also translates
-   backslash and newline characters to \uXXXX escapes. */
-static PyObject *
-modified_EncodeRawUnicodeEscape(const Py_UNICODE *s, Py_ssize_t size)
-{
-    PyObject *repr;
-    char *p;
-    char *q;
-
-    static const char *hexdigit = "0123456789abcdef";
-#ifdef Py_UNICODE_WIDE
-    const Py_ssize_t expandsize = 10;
-#else
-    const Py_ssize_t expandsize = 6;
-#endif
-
-    if (size > PY_SSIZE_T_MAX / expandsize)
-    return PyErr_NoMemory();
-
-    repr = PyString_FromStringAndSize(NULL, expandsize * size);
-    if (repr == NULL)
-    return NULL;
-    if (size == 0)
-    return repr;
-
-    p = q = PyString_AS_STRING(repr);
-    while (size-- > 0) {
-    Py_UNICODE ch = *s++;
-#ifdef Py_UNICODE_WIDE
-    /* Map 32-bit characters to '\Uxxxxxxxx' */
-    if (ch >= 0x10000) {
-        *p++ = '\\';
-        *p++ = 'U';
-        *p++ = hexdigit[(ch >> 28) & 0xf];
-        *p++ = hexdigit[(ch >> 24) & 0xf];
-        *p++ = hexdigit[(ch >> 20) & 0xf];
-        *p++ = hexdigit[(ch >> 16) & 0xf];
-        *p++ = hexdigit[(ch >> 12) & 0xf];
-        *p++ = hexdigit[(ch >> 8) & 0xf];
-        *p++ = hexdigit[(ch >> 4) & 0xf];
-        *p++ = hexdigit[ch & 15];
-    }
-    else
-#else
-    /* Map UTF-16 surrogate pairs to '\U00xxxxxx' */
-    if (ch >= 0xD800 && ch < 0xDC00) {
-        Py_UNICODE ch2;
-        Py_UCS4 ucs;
-
-        ch2 = *s++;
-        size--;
-        if (ch2 >= 0xDC00 && ch2 <= 0xDFFF) {
-        ucs = (((ch & 0x03FF) << 10) | (ch2 & 0x03FF)) + 0x00010000;
-        *p++ = '\\';
-        *p++ = 'U';
-        *p++ = hexdigit[(ucs >> 28) & 0xf];
-        *p++ = hexdigit[(ucs >> 24) & 0xf];
-        *p++ = hexdigit[(ucs >> 20) & 0xf];
-        *p++ = hexdigit[(ucs >> 16) & 0xf];
-        *p++ = hexdigit[(ucs >> 12) & 0xf];
-        *p++ = hexdigit[(ucs >> 8) & 0xf];
-        *p++ = hexdigit[(ucs >> 4) & 0xf];
-        *p++ = hexdigit[ucs & 0xf];
-        continue;
-        }
-        /* Fall through: isolated surrogates are copied as-is */
-        s--;
-        size++;
-    }
-#endif
-    /* Map 16-bit characters to '\uxxxx' */
-    if (ch >= 256 || ch == '\\' || ch == '\n') {
-        *p++ = '\\';
-        *p++ = 'u';
-        *p++ = hexdigit[(ch >> 12) & 0xf];
-        *p++ = hexdigit[(ch >> 8) & 0xf];
-        *p++ = hexdigit[(ch >> 4) & 0xf];
-        *p++ = hexdigit[ch & 15];
-    }
-    /* Copy everything else as-is */
-    else
-        *p++ = (char) ch;
-    }
-    *p = '\0';
-    _PyString_Resize(&repr, p - q);
-    return repr;
-}
-
-static int
-save_unicode(Picklerobject *self, PyObject *args, int doput)
-{
-    Py_ssize_t size, len;
-    PyObject *repr=0;
-
-    if (!PyUnicode_Check(args))
-        return -1;
-
-    if (!self->bin) {
-        char *repr_str;
-        static char string = UNICODE;
-
-        repr = modified_EncodeRawUnicodeEscape(
-            PyUnicode_AS_UNICODE(args), PyUnicode_GET_SIZE(args));
-        if (!repr)
-            return -1;
-
-        if ((len = PyString_Size(repr)) < 0)
-            goto err;
-        repr_str = PyString_AS_STRING((PyStringObject *)repr);
-
-        if (self->write_func(self, &string, 1) < 0)
-            goto err;
-
-        if (self->write_func(self, repr_str, len) < 0)
-            goto err;
-
-        if (self->write_func(self, "\n", 1) < 0)
-            goto err;
-
-        Py_XDECREF(repr);
-    }
-    else {
-        int i;
-        char c_str[5];
-
-        if (!( repr = PyUnicode_AsUTF8String(args)))
-            return -1;
-
-        if ((size = PyString_Size(repr)) < 0)
-            goto err;
-        if (size > INT_MAX)
-            return -1;   /* string too large */
-
-        c_str[0] = BINUNICODE;
-        for (i = 1; i < 5; i++)
-            c_str[i] = (int)(size >> ((i - 1) * 8));
-        len = 5;
-
-        if (self->write_func(self, c_str, len) < 0)
-            goto err;
-
-        if (size > 128 && Pdata_Check(self->file)) {
-            if (write_other(self, NULL, 0) < 0)
-                goto err;
-            PDATA_APPEND(self->file, repr, -1);
-        }
-        else {
-            if (self->write_func(self, PyString_AS_STRING(repr),
-                                 size) < 0)
-                goto err;
-        }
-
-        Py_DECREF(repr);
-    }
-
-    if (doput)
-        if (put(self, args) < 0)
-            return -1;
-
-    return 0;
-
-  err:
-    Py_XDECREF(repr);
-    return -1;
-}
-#endif
-
-/* A helper for save_tuple.  Push the len elements in tuple t on the stack. */
-static int
-store_tuple_elements(Picklerobject *self, PyObject *t, int len)
-{
-    int i;
-    int res = -1;       /* guilty until proved innocent */
-
-    assert(PyTuple_Size(t) == len);
-
-    for (i = 0; i < len; i++) {
-        PyObject *element = PyTuple_GET_ITEM(t, i);
-
-        if (element == NULL)
-            goto finally;
-        if (save(self, element, 0) < 0)
-            goto finally;
-    }
-    res = 0;
-
-  finally:
-    return res;
-}
-
-/* Tuples are ubiquitous in the pickle protocols, so many techniques are
- * used across protocols to minimize the space needed to pickle them.
- * Tuples are also the only builtin immutable type that can be recursive
- * (a tuple can be reached from itself), and that requires some subtle
- * magic so that it works in all cases.  IOW, this is a long routine.
- */
-static int
-save_tuple(Picklerobject *self, PyObject *args)
-{
-    PyObject *py_tuple_id = NULL;
-    int len, i;
-    int res = -1;
-
-    static char tuple = TUPLE;
-    static char pop = POP;
-    static char pop_mark = POP_MARK;
-    static char len2opcode[] = {EMPTY_TUPLE, TUPLE1, TUPLE2, TUPLE3};
-
-    if ((len = PyTuple_Size(args)) < 0)
-        goto finally;
-
-    if (len == 0) {
-        char c_str[2];
-
-        if (self->proto) {
-            c_str[0] = EMPTY_TUPLE;
-            len = 1;
-        }
-        else {
-            c_str[0] = MARK;
-            c_str[1] = TUPLE;
-            len = 2;
-        }
-        if (self->write_func(self, c_str, len) >= 0)
-            res = 0;
-        /* Don't memoize an empty tuple. */
-        goto finally;
-    }
-
-    /* A non-empty tuple. */
-
-    /* id(tuple) isn't in the memo now.  If it shows up there after
-     * saving the tuple elements, the tuple must be recursive, in
-     * which case we'll pop everything we put on the stack, and fetch
-     * its value from the memo.
-     */
-    py_tuple_id = PyLong_FromVoidPtr(args);
-    if (py_tuple_id == NULL)
-        goto finally;
-
-    if (len <= 3 && self->proto >= 2) {
-        /* Use TUPLE{1,2,3} opcodes. */
-        if (store_tuple_elements(self, args, len) < 0)
-            goto finally;
-        if (PyDict_GetItem(self->memo, py_tuple_id)) {
-            /* pop the len elements */
-            for (i = 0; i < len; ++i)
-                if (self->write_func(self, &pop, 1) < 0)
-                    goto finally;
-            /* fetch from memo */
-            if (get(self, py_tuple_id) < 0)
-                goto finally;
-            res = 0;
-            goto finally;
-        }
-        /* Not recursive. */
-        if (self->write_func(self, len2opcode + len, 1) < 0)
-            goto finally;
-        goto memoize;
-    }
-
-    /* proto < 2 and len > 0, or proto >= 2 and len > 3.
-     * Generate MARK elt1 elt2 ... TUPLE
-     */
-    if (self->write_func(self, &MARKv, 1) < 0)
-        goto finally;
-
-    if (store_tuple_elements(self, args, len) < 0)
-        goto finally;
-
-    if (PyDict_GetItem(self->memo, py_tuple_id)) {
-        /* pop the stack stuff we pushed */
-        if (self->bin) {
-            if (self->write_func(self, &pop_mark, 1) < 0)
-                goto finally;
-        }
-        else {
-            /* Note that we pop one more than len, to remove
-             * the MARK too.
-             */
-            for (i = 0; i <= len; i++)
-                if (self->write_func(self, &pop, 1) < 0)
-                    goto finally;
-        }
-        /* fetch from memo */
-        if (get(self, py_tuple_id) >= 0)
-            res = 0;
-        goto finally;
-    }
-
-    /* Not recursive. */
-    if (self->write_func(self, &tuple, 1) < 0)
-        goto finally;
-
-  memoize:
-    if (put(self, args) >= 0)
-        res = 0;
-
-  finally:
-    Py_XDECREF(py_tuple_id);
-    return res;
-}
-
-/* iter is an iterator giving items, and we batch up chunks of
- *     MARK item item ... item APPENDS
- * opcode sequences.  Calling code should have arranged to first create an
- * empty list, or list-like object, for the APPENDS to operate on.
- * Returns 0 on success, <0 on error.
- */
-static int
-batch_list(Picklerobject *self, PyObject *iter)
-{
-    PyObject *obj = NULL;
-    PyObject *firstitem = NULL;
-    int i, n;
-
-    static char append = APPEND;
-    static char appends = APPENDS;
-
-    assert(iter != NULL);
-
-    if (self->proto == 0) {
-        /* APPENDS isn't available; do one at a time. */
-        for (;;) {
-            obj = PyIter_Next(iter);
-            if (obj == NULL) {
-                if (PyErr_Occurred())
-                    return -1;
-                break;
-            }
-            i = save(self, obj, 0);
-            Py_DECREF(obj);
-            if (i < 0)
-                return -1;
-            if (self->write_func(self, &append, 1) < 0)
-                return -1;
-        }
-        return 0;
-    }
-
-    /* proto > 0:  write in batches of BATCHSIZE. */
-    do {
-        /* Get first item */
-        firstitem = PyIter_Next(iter);
-        if (firstitem == NULL) {
-            if (PyErr_Occurred())
-                goto BatchFailed;
-
-            /* nothing more to add */
-            break;
-        }
-
-        /* Try to get a second item */
-        obj = PyIter_Next(iter);
-        if (obj == NULL) {
-            if (PyErr_Occurred())
-                goto BatchFailed;
-
-            /* Only one item to write */
-            if (save(self, firstitem, 0) < 0)
-                goto BatchFailed;
-            if (self->write_func(self, &append, 1) < 0)
-                goto BatchFailed;
-            Py_CLEAR(firstitem);
-            break;
-        }
-
-        /* More than one item to write */
-
-        /* Pump out MARK, items, APPENDS. */
-        if (self->write_func(self, &MARKv, 1) < 0)
-            goto BatchFailed;
-
-        if (save(self, firstitem, 0) < 0)
-            goto BatchFailed;
-        Py_CLEAR(firstitem);
-        n = 1;
-
-        /* Fetch and save up to BATCHSIZE items */
-        while (obj) {
-            if (save(self, obj, 0) < 0)
-                goto BatchFailed;
-            Py_CLEAR(obj);
-            n += 1;
-
-            if (n == BATCHSIZE)
-                break;
-
-            obj = PyIter_Next(iter);
-            if (obj == NULL) {
-                if (PyErr_Occurred())
-                    goto BatchFailed;
-                break;
-            }
-        }
-
-        if (self->write_func(self, &appends, 1) < 0)
-            goto BatchFailed;
-
-    } while (n == BATCHSIZE);
-    return 0;
-
-BatchFailed:
-    Py_XDECREF(firstitem);
-    Py_XDECREF(obj);
-    return -1;
-}
-
-static int
-save_list(Picklerobject *self, PyObject *args)
-{
-    int res = -1;
-    char s[3];
-    int len;
-    PyObject *iter;
-
-    if (self->fast && !fast_save_enter(self, args))
-        goto finally;
-
-    /* Create an empty list. */
-    if (self->bin) {
-        s[0] = EMPTY_LIST;
-        len = 1;
-    }
-    else {
-        s[0] = MARK;
-        s[1] = LIST;
-        len = 2;
-    }
-
-    if (self->write_func(self, s, len) < 0)
-        goto finally;
-
-    /* Get list length, and bow out early if empty. */
-    if ((len = PyList_Size(args)) < 0)
-        goto finally;
-
-    /* Memoize. */
-    if (len == 0) {
-        if (put(self, args) >= 0)
-            res = 0;
-        goto finally;
-    }
-    if (put2(self, args) < 0)
-        goto finally;
-
-    /* Materialize the list elements. */
-    iter = PyObject_GetIter(args);
-    if (iter == NULL)
-        goto finally;
-
-    if (Py_EnterRecursiveCall(" while pickling an object") == 0)
-    {
-        res = batch_list(self, iter);
-        Py_LeaveRecursiveCall();
-    }
-    Py_DECREF(iter);
-
-  finally:
-    if (self->fast && !fast_save_leave(self, args))
-        res = -1;
-
-    return res;
-}
-
-
-/* iter is an iterator giving (key, value) pairs, and we batch up chunks of
- *     MARK key value ... key value SETITEMS
- * opcode sequences.  Calling code should have arranged to first create an
- * empty dict, or dict-like object, for the SETITEMS to operate on.
- * Returns 0 on success, <0 on error.
- *
- * This is very much like batch_list().  The difference between saving
- * elements directly, and picking apart two-tuples, is so long-winded at
- * the C level, though, that attempts to combine these routines were too
- * ugly to bear.
- */
-static int
-batch_dict(Picklerobject *self, PyObject *iter)
-{
-    PyObject *p = NULL;
-    PyObject *firstitem = NULL;
-    int i, n;
-
-    static char setitem = SETITEM;
-    static char setitems = SETITEMS;
-
-    assert(iter != NULL);
-
-    if (self->proto == 0) {
-        /* SETITEMS isn't available; do one at a time. */
-        for (;;) {
-            p = PyIter_Next(iter);
-            if (p == NULL) {
-                if (PyErr_Occurred())
-                    return -1;
-                break;
-            }
-            if (!PyTuple_Check(p) || PyTuple_Size(p) != 2) {
-                PyErr_SetString(PyExc_TypeError, "dict items "
-                    "iterator must return 2-tuples");
-                return -1;
-            }
-            i = save(self, PyTuple_GET_ITEM(p, 0), 0);
-            if (i >= 0)
-                i = save(self, PyTuple_GET_ITEM(p, 1), 0);
-            Py_DECREF(p);
-            if (i < 0)
-                return -1;
-            if (self->write_func(self, &setitem, 1) < 0)
-                return -1;
-        }
-        return 0;
-    }
-
-    /* proto > 0:  write in batches of BATCHSIZE. */
-    do {
-        /* Get first item */
-        firstitem = PyIter_Next(iter);
-        if (firstitem == NULL) {
-            if (PyErr_Occurred())
-                goto BatchFailed;
-
-            /* nothing more to add */
-            break;
-        }
-        if (!PyTuple_Check(firstitem) || PyTuple_Size(firstitem) != 2) {
-            PyErr_SetString(PyExc_TypeError, "dict items "
-                            "iterator must return 2-tuples");
-            goto BatchFailed;
-        }
-
-        /* Try to get a second item */
-        p = PyIter_Next(iter);
-        if (p == NULL) {
-            if (PyErr_Occurred())
-                goto BatchFailed;
-
-            /* Only one item to write */
-            if (save(self, PyTuple_GET_ITEM(firstitem, 0), 0) < 0)
-                goto BatchFailed;
-            if (save(self, PyTuple_GET_ITEM(firstitem, 1), 0) < 0)
-                goto BatchFailed;
-            if (self->write_func(self, &setitem, 1) < 0)
-                goto BatchFailed;
-            Py_CLEAR(firstitem);
-            break;
-        }
-
-        /* More than one item to write */
-
-        /* Pump out MARK, items, SETITEMS. */
-        if (self->write_func(self, &MARKv, 1) < 0)
-            goto BatchFailed;
-
-        if (save(self, PyTuple_GET_ITEM(firstitem, 0), 0) < 0)
-            goto BatchFailed;
-        if (save(self, PyTuple_GET_ITEM(firstitem, 1), 0) < 0)
-            goto BatchFailed;
-        Py_CLEAR(firstitem);
-        n = 1;
-
-        /* Fetch and save up to BATCHSIZE items */
-        while (p) {
-            if (!PyTuple_Check(p) || PyTuple_Size(p) != 2) {
-                PyErr_SetString(PyExc_TypeError, "dict items "
-                    "iterator must return 2-tuples");
-                goto BatchFailed;
-            }
-            if (save(self, PyTuple_GET_ITEM(p, 0), 0) < 0)
-                goto BatchFailed;
-            if (save(self, PyTuple_GET_ITEM(p, 1), 0) < 0)
-                goto BatchFailed;
-            Py_CLEAR(p);
-            n += 1;
-
-            if (n == BATCHSIZE)
-                break;
-
-            p = PyIter_Next(iter);
-            if (p == NULL) {
-                if (PyErr_Occurred())
-                    goto BatchFailed;
-                break;
-            }
-        }
-
-        if (self->write_func(self, &setitems, 1) < 0)
-            goto BatchFailed;
-
-    } while (n == BATCHSIZE);
-    return 0;
-
-BatchFailed:
-    Py_XDECREF(firstitem);
-    Py_XDECREF(p);
-    return -1;
-}
-
-/* This is a variant of batch_dict() above that specializes for dicts, with no
- * support for dict subclasses. Like batch_dict(), we batch up chunks of
- *     MARK key value ... key value SETITEMS
- * opcode sequences.  Calling code should have arranged to first create an
- * empty dict, or dict-like object, for the SETITEMS to operate on.
- * Returns 0 on success, -1 on error.
- *
- * Note that this currently doesn't work for protocol 0.
- */
-static int
-batch_dict_exact(Picklerobject *self, PyObject *obj)
-{
-    PyObject *key = NULL, *value = NULL;
-    int i;
-    Py_ssize_t dict_size, ppos = 0;
-
-    static char setitem = SETITEM;
-    static char setitems = SETITEMS;
-
-    assert(obj != NULL);
-    assert(self->proto > 0);
-
-    dict_size = PyDict_Size(obj);
-
-    /* Special-case len(d) == 1 to save space. */
-    if (dict_size == 1) {
-        PyDict_Next(obj, &ppos, &key, &value);
-        if (save(self, key, 0) < 0)
-            return -1;
-        if (save(self, value, 0) < 0)
-            return -1;
-        if (self->write_func(self, &setitem, 1) < 0)
-            return -1;
-        return 0;
-    }
-
-    /* Write in batches of BATCHSIZE. */
-    do {
-        i = 0;
-        if (self->write_func(self, &MARKv, 1) < 0)
-            return -1;
-        while (PyDict_Next(obj, &ppos, &key, &value)) {
-            if (save(self, key, 0) < 0)
-                return -1;
-            if (save(self, value, 0) < 0)
-                return -1;
-            if (++i == BATCHSIZE)
-                break;
-        }
-        if (self->write_func(self, &setitems, 1) < 0)
-            return -1;
-        if (PyDict_Size(obj) != dict_size) {
-            PyErr_Format(
-                PyExc_RuntimeError,
-                "dictionary changed size during iteration");
-            return -1;
-        }
-
-    } while (i == BATCHSIZE);
-    return 0;
-}
-
-static int
-save_dict(Picklerobject *self, PyObject *args)
-{
-    int res = -1;
-    char s[3];
-    int len;
-
-    if (self->fast && !fast_save_enter(self, args))
-        goto finally;
-
-    /* Create an empty dict. */
-    if (self->bin) {
-        s[0] = EMPTY_DICT;
-        len = 1;
-    }
-    else {
-        s[0] = MARK;
-        s[1] = DICT;
-        len = 2;
-    }
-
-    if (self->write_func(self, s, len) < 0)
-        goto finally;
-
-    /* Get dict size, and bow out early if empty. */
-    if ((len = PyDict_Size(args)) < 0)
-        goto finally;
-
-    if (len == 0) {
-        if (put(self, args) >= 0)
-            res = 0;
-        goto finally;
-    }
-    if (put2(self, args) < 0)
-        goto finally;
-
-    /* Materialize the dict items. */
-    if (PyDict_CheckExact(args) && self->proto > 0) {
-        /* We can take certain shortcuts if we know this is a dict and
-           not a dict subclass. */
-        if (Py_EnterRecursiveCall(" while pickling an object") == 0) {
-            res = batch_dict_exact(self, args);
-            Py_LeaveRecursiveCall();
-        }
-    } else {
-        PyObject *iter = PyObject_CallMethod(args, "iteritems", "()");
-        if (iter == NULL)
-            goto finally;
-        if (Py_EnterRecursiveCall(" while pickling an object") == 0) {
-            res = batch_dict(self, iter);
-            Py_LeaveRecursiveCall();
-        }
-        Py_DECREF(iter);
-    }
-
-  finally:
-    if (self->fast && !fast_save_leave(self, args))
-        res = -1;
-
-    return res;
-}
-
-
-static int
-save_inst(Picklerobject *self, PyObject *args)
-{
-    PyObject *class = 0, *module = 0, *name = 0, *state = 0,
-        *getinitargs_func = 0, *getstate_func = 0, *class_args = 0;
-    char *module_str, *name_str;
-    int module_size, name_size, res = -1;
-
-    static char inst = INST, obj = OBJ, build = BUILD;
-
-    if (self->fast && !fast_save_enter(self, args))
-        goto finally;
-
-    if (self->write_func(self, &MARKv, 1) < 0)
-        goto finally;
-
-    if (!( class = PyObject_GetAttr(args, __class___str)))
-        goto finally;
-
-    if (self->bin) {
-        if (save(self, class, 0) < 0)
-            goto finally;
-    }
-
-    if ((getinitargs_func = PyObject_GetAttr(args, __getinitargs___str))) {
-        PyObject *element = 0;
-        int i, len;
-
-        if (!( class_args =
-               PyObject_Call(getinitargs_func, empty_tuple, NULL)))
-            goto finally;
-
-        if ((len = PyObject_Size(class_args)) < 0)
-            goto finally;
-
-        for (i = 0; i < len; i++) {
-            if (!( element = PySequence_GetItem(class_args, i)))
-                goto finally;
-
-            if (save(self, element, 0) < 0) {
-                Py_DECREF(element);
-                goto finally;
-            }
-
-            Py_DECREF(element);
-        }
-    }
-    else {
-        if (PyErr_ExceptionMatches(PyExc_AttributeError))
-            PyErr_Clear();
-        else
-            goto finally;
-    }
-
-    if (!self->bin) {
-        if (!( name = ((PyClassObject *)class)->cl_name ))  {
-            PyErr_SetString(PicklingError, "class has no name");
-            goto finally;
-        }
-
-        if (!( module = whichmodule(class, name)))
-            goto finally;
-
-
-        if ((module_size = PyString_Size(module)) < 0 ||
-            (name_size = PyString_Size(name)) < 0)
-            goto finally;
-
-        module_str = PyString_AS_STRING((PyStringObject *)module);
-        name_str   = PyString_AS_STRING((PyStringObject *)name);
-
-        if (self->write_func(self, &inst, 1) < 0)
-            goto finally;
-
-        if (self->write_func(self, module_str, module_size) < 0)
-            goto finally;
-
-        if (self->write_func(self, "\n", 1) < 0)
-            goto finally;
-
-        if (self->write_func(self, name_str, name_size) < 0)
-            goto finally;
-
-        if (self->write_func(self, "\n", 1) < 0)
-            goto finally;
-    }
-    else if (self->write_func(self, &obj, 1) < 0) {
-        goto finally;
-    }
-
-    if ((getstate_func = PyObject_GetAttr(args, __getstate___str))) {
-        state = PyObject_Call(getstate_func, empty_tuple, NULL);
-        if (!state)
-            goto finally;
-    }
-    else {
-        if (PyErr_ExceptionMatches(PyExc_AttributeError))
-            PyErr_Clear();
-        else
-            goto finally;
-
-        if (!( state = PyObject_GetAttr(args, __dict___str)))  {
-            if (PyErr_ExceptionMatches(PyExc_AttributeError))
-                PyErr_Clear();
-            else
-                goto finally;
-            res = 0;
-            goto finally;
-        }
-    }
-
-    if (!PyDict_Check(state)) {
-        if (put2(self, args) < 0)
-            goto finally;
-    }
-    else {
-        if (put(self, args) < 0)
-            goto finally;
-    }
-
-    if (save(self, state, 0) < 0)
-        goto finally;
-
-    if (self->write_func(self, &build, 1) < 0)
-        goto finally;
-
-    res = 0;
-
-  finally:
-    if (self->fast && !fast_save_leave(self, args))
-        res = -1;
-
-    Py_XDECREF(module);
-    Py_XDECREF(class);
-    Py_XDECREF(state);
-    Py_XDECREF(getinitargs_func);
-    Py_XDECREF(getstate_func);
-    Py_XDECREF(class_args);
-
-    return res;
-}
-
-
-static int
-save_global(Picklerobject *self, PyObject *args, PyObject *name)
-{
-    PyObject *global_name = 0, *module = 0, *mod = 0, *klass = 0;
-    char *name_str, *module_str;
-    int module_size, name_size, res = -1;
-
-    static char global = GLOBAL;
-
-    if (name) {
-        global_name = name;
-        Py_INCREF(global_name);
-    }
-    else {
-        if (!( global_name = PyObject_GetAttr(args, __name___str)))
-            goto finally;
-    }
-
-    if (!( module = whichmodule(args, global_name)))
-        goto finally;
-
-    if ((module_size = PyString_Size(module)) < 0 ||
-        (name_size = PyString_Size(global_name)) < 0)
-        goto finally;
-
-    module_str = PyString_AS_STRING((PyStringObject *)module);
-    name_str   = PyString_AS_STRING((PyStringObject *)global_name);
-
-    /* XXX This can be doing a relative import.  Clearly it shouldn't,
-       but I don't know how to stop it. :-( */
-    mod = PyImport_ImportModule(module_str);
-    if (mod == NULL) {
-        cPickle_ErrFormat(PicklingError,
-                          "Can't pickle %s: import of module %s "
-                          "failed",
-                          "OS", args, module);
-        goto finally;
-    }
-    klass = PyObject_GetAttrString(mod, name_str);
-    if (klass == NULL) {
-        cPickle_ErrFormat(PicklingError,
-                          "Can't pickle %s: attribute lookup %s.%s "
-                          "failed",
-                          "OSS", args, module, global_name);
-        goto finally;
-    }
-    if (klass != args) {
-        Py_DECREF(klass);
-        cPickle_ErrFormat(PicklingError,
-                          "Can't pickle %s: it's not the same object "
-                                "as %s.%s",
-                          "OSS", args, module, global_name);
-        goto finally;
-    }
-    Py_DECREF(klass);
-
-    if (self->proto >= 2) {
-        /* See whether this is in the extension registry, and if
-         * so generate an EXT opcode.
-         */
-        PyObject *py_code;              /* extension code as Python object */
-        long code;                      /* extension code as C value */
-        char c_str[5];
-        int n;
-
-        PyTuple_SET_ITEM(two_tuple, 0, module);
-        PyTuple_SET_ITEM(two_tuple, 1, global_name);
-        py_code = PyDict_GetItem(extension_registry, two_tuple);
-        if (py_code == NULL)
-            goto gen_global;                    /* not registered */
-
-        /* Verify py_code has the right type and value. */
-        if (!PyInt_Check(py_code)) {
-            cPickle_ErrFormat(PicklingError, "Can't pickle %s: "
-                "extension code %s isn't an integer",
-                "OO", args, py_code);
-            goto finally;
-        }
-        code = PyInt_AS_LONG(py_code);
-        if (code <= 0 ||  code > 0x7fffffffL) {
-            cPickle_ErrFormat(PicklingError, "Can't pickle %s: "
-                "extension code %ld is out of range",
-                "Ol", args, code);
-            goto finally;
-        }
-
-        /* Generate an EXT opcode. */
-        if (code <= 0xff) {
-            c_str[0] = EXT1;
-            c_str[1] = (char)code;
-            n = 2;
-        }
-        else if (code <= 0xffff) {
-            c_str[0] = EXT2;
-            c_str[1] = (char)(code & 0xff);
-            c_str[2] = (char)((code >> 8) & 0xff);
-            n = 3;
-        }
-        else {
-            c_str[0] = EXT4;
-            c_str[1] = (char)(code & 0xff);
-            c_str[2] = (char)((code >> 8) & 0xff);
-            c_str[3] = (char)((code >> 16) & 0xff);
-            c_str[4] = (char)((code >> 24) & 0xff);
-            n = 5;
-        }
-
-        if (self->write_func(self, c_str, n) >= 0)
-            res = 0;
-        goto finally;           /* and don't memoize */
-    }
-
-  gen_global:
-    if (self->write_func(self, &global, 1) < 0)
-        goto finally;
-
-    if (self->write_func(self, module_str, module_size) < 0)
-        goto finally;
-
-    if (self->write_func(self, "\n", 1) < 0)
-        goto finally;
-
-    if (self->write_func(self, name_str, name_size) < 0)
-        goto finally;
-
-    if (self->write_func(self, "\n", 1) < 0)
-        goto finally;
-
-    if (put(self, args) < 0)
-        goto finally;
-
-    res = 0;
-
-  finally:
-    Py_XDECREF(module);
-    Py_XDECREF(global_name);
-    Py_XDECREF(mod);
-
-    return res;
-}
-
-static int
-save_pers(Picklerobject *self, PyObject *args, PyObject *f)
-{
-    PyObject *pid = 0;
-    int size, res = -1;
-
-    static char persid = PERSID, binpersid = BINPERSID;
-
-    Py_INCREF(args);
-    ARG_TUP(self, args);
-    if (self->arg) {
-        pid = PyObject_Call(f, self->arg, NULL);
-        FREE_ARG_TUP(self);
-    }
-    if (! pid) return -1;
-
-    if (pid != Py_None) {
-        if (!self->bin) {
-            if (!PyString_Check(pid)) {
-                PyErr_SetString(PicklingError,
-                                "persistent id must be string");
-                goto finally;
-            }
-
-            if (self->write_func(self, &persid, 1) < 0)
-                goto finally;
-
-            if ((size = PyString_Size(pid)) < 0)
-                goto finally;
-
-            if (self->write_func(self,
-                                 PyString_AS_STRING(
-                                    (PyStringObject *)pid),
-                                 size) < 0)
-                goto finally;
-
-            if (self->write_func(self, "\n", 1) < 0)
-                goto finally;
-
-            res = 1;
-            goto finally;
-        }
-        else if (save(self, pid, 1) >= 0) {
-            if (self->write_func(self, &binpersid, 1) < 0)
-                res = -1;
-            else
-                res = 1;
-        }
-
-        goto finally;
-    }
-
-    res = 0;
-
-  finally:
-    Py_XDECREF(pid);
-
-    return res;
-}
-
-/* We're saving ob, and args is the 2-thru-5 tuple returned by the
- * appropriate __reduce__ method for ob.
- */
-static int
-save_reduce(Picklerobject *self, PyObject *args, PyObject *fn, PyObject *ob)
-{
-    PyObject *callable;
-    PyObject *argtup;
-    PyObject *state = NULL;
-    PyObject *listitems = Py_None;
-    PyObject *dictitems = Py_None;
-    Py_ssize_t size;
-
-    int use_newobj = self->proto >= 2;
-
-    static char reduce = REDUCE;
-    static char build = BUILD;
-    static char newobj = NEWOBJ;
-
-    size = PyTuple_Size(args);
-    if (size < 2 || size > 5) {
-        cPickle_ErrFormat(PicklingError, "tuple returned by "
-            "%s must contain 2 through 5 elements",
-            "O", fn);
-        return -1;
-    }
-
-    if (! PyArg_UnpackTuple(args, "save_reduce", 2, 5,
-                            &callable,
-                            &argtup,
-                            &state,
-                            &listitems,
-                            &dictitems))
-        return -1;
-
-    if (!PyTuple_Check(argtup)) {
-        cPickle_ErrFormat(PicklingError, "Second element of "
-            "tuple returned by %s must be a tuple",
-            "O", fn);
-        return -1;
-    }
-
-    if (state == Py_None)
-        state = NULL;
-
-    if (listitems == Py_None)
-        listitems = NULL;
-    else if (!PyIter_Check(listitems)) {
-        cPickle_ErrFormat(PicklingError, "Fourth element of "
-            "tuple returned by %s must be an iterator, not %s",
-            "Os", fn, Py_TYPE(listitems)->tp_name);
-        return -1;
-    }
-
-    if (dictitems == Py_None)
-        dictitems = NULL;
-    else if (!PyIter_Check(dictitems)) {
-        cPickle_ErrFormat(PicklingError, "Fifth element of "
-            "tuple returned by %s must be an iterator, not %s",
-            "Os", fn, Py_TYPE(dictitems)->tp_name);
-        return -1;
-    }
-
-    /* Protocol 2 special case: if callable's name is __newobj__, use
-     * NEWOBJ.  This consumes a lot of code.
-     */
-    if (use_newobj) {
-        PyObject *temp = PyObject_GetAttr(callable, __name___str);
-
-        if (temp == NULL) {
-            if (PyErr_ExceptionMatches(PyExc_AttributeError))
-                PyErr_Clear();
-            else
-                return -1;
-            use_newobj = 0;
-        }
-        else {
-            use_newobj = PyString_Check(temp) &&
-                         strcmp(PyString_AS_STRING(temp),
-                                "__newobj__") == 0;
-            Py_DECREF(temp);
-        }
-    }
-    if (use_newobj) {
-        PyObject *cls;
-        PyObject *newargtup;
-        int n, i;
-
-        /* Sanity checks. */
-        n = PyTuple_Size(argtup);
-        if (n < 1) {
-            PyErr_SetString(PicklingError, "__newobj__ arglist "
-                "is empty");
-            return -1;
-        }
-
-        cls = PyTuple_GET_ITEM(argtup, 0);
-        if (! PyObject_HasAttrString(cls, "__new__")) {
-            PyErr_SetString(PicklingError, "args[0] from "
-                "__newobj__ args has no __new__");
-            return -1;
-        }
-
-        /* XXX How could ob be NULL? */
-        if (ob != NULL) {
-            PyObject *ob_dot_class;
-
-            ob_dot_class = PyObject_GetAttr(ob, __class___str);
-            if (ob_dot_class == NULL) {
-                if (PyErr_ExceptionMatches(
-                            PyExc_AttributeError))
-                    PyErr_Clear();
-                else
-                    return -1;
-            }
-            i = ob_dot_class != cls; /* true iff a problem */
-            Py_XDECREF(ob_dot_class);
-            if (i) {
-                PyErr_SetString(PicklingError, "args[0] from "
-                    "__newobj__ args has the wrong class");
-                return -1;
-            }
-        }
-
-        /* Save the class and its __new__ arguments. */
-        if (save(self, cls, 0) < 0)
-            return -1;
-
-        newargtup = PyTuple_New(n-1);  /* argtup[1:] */
-        if (newargtup == NULL)
-            return -1;
-        for (i = 1; i < n; ++i) {
-            PyObject *temp = PyTuple_GET_ITEM(argtup, i);
-            Py_INCREF(temp);
-            PyTuple_SET_ITEM(newargtup, i-1, temp);
-        }
-        i = save(self, newargtup, 0);
-        Py_DECREF(newargtup);
-        if (i < 0)
-            return -1;
-
-        /* Add NEWOBJ opcode. */
-        if (self->write_func(self, &newobj, 1) < 0)
-            return -1;
-    }
-    else {
-        /* Not using NEWOBJ. */
-        if (save(self, callable, 0) < 0 ||
-            save(self, argtup, 0) < 0 ||
-            self->write_func(self, &reduce, 1) < 0)
-            return -1;
-    }
-
-    /* Memoize. */
-    /* XXX How can ob be NULL? */
-    if (ob != NULL) {
-        if (state && !PyDict_Check(state)) {
-            if (put2(self, ob) < 0)
-                return -1;
-        }
-        else if (put(self, ob) < 0)
-                        return -1;
-    }
-
-
-    if (listitems && batch_list(self, listitems) < 0)
-        return -1;
-
-    if (dictitems && batch_dict(self, dictitems) < 0)
-        return -1;
-
-    if (state) {
-        if (save(self, state, 0) < 0 ||
-            self->write_func(self, &build, 1) < 0)
-            return -1;
-    }
-
-    return 0;
-}
-
-static int
-save(Picklerobject *self, PyObject *args, int pers_save)
-{
-    PyTypeObject *type;
-    PyObject *py_ob_id = 0, *__reduce__ = 0, *t = 0;
-    int res = -1;
-    int tmp;
-
-    if (Py_EnterRecursiveCall(" while pickling an object"))
-        return -1;
-
-    if (!pers_save && self->pers_func) {
-        if ((tmp = save_pers(self, args, self->pers_func)) != 0) {
-            res = tmp;
-            goto finally;
-        }
-    }
-
-    if (args == Py_None) {
-        res = save_none(self, args);
-        goto finally;
-    }
-
-    type = Py_TYPE(args);
-
-    switch (type->tp_name[0]) {
-    case 'b':
-        if (args == Py_False || args == Py_True) {
-            res = save_bool(self, args);
-            goto finally;
-        }
-        break;
-    case 'i':
-        if (type == &PyInt_Type) {
-            res = save_int(self, args);
-            goto finally;
-        }
-        break;
-
-    case 'l':
-        if (type == &PyLong_Type) {
-            res = save_long(self, args);
-            goto finally;
-        }
-        break;
-
-    case 'f':
-        if (type == &PyFloat_Type) {
-            res = save_float(self, args);
-            goto finally;
-        }
-        break;
-
-    case 't':
-        if (type == &PyTuple_Type && PyTuple_Size(args) == 0) {
-            res = save_tuple(self, args);
-            goto finally;
-        }
-        break;
-
-    case 's':
-        if ((type == &PyString_Type) && (PyString_GET_SIZE(args) < 2)) {
-            res = save_string(self, args, 0);
-            goto finally;
-        }
-        break;
-
-#ifdef Py_USING_UNICODE
-    case 'u':
-        if ((type == &PyUnicode_Type) && (PyString_GET_SIZE(args) < 2)) {
-            res = save_unicode(self, args, 0);
-            goto finally;
-        }
-        break;
-#endif
-    }
-
-    if (Py_REFCNT(args) > 1) {
-        if (!( py_ob_id = PyLong_FromVoidPtr(args)))
-            goto finally;
-
-        if (PyDict_GetItem(self->memo, py_ob_id)) {
-            if (get(self, py_ob_id) < 0)
-                goto finally;
-
-            res = 0;
-            goto finally;
-        }
-    }
-
-    switch (type->tp_name[0]) {
-    case 's':
-        if (type == &PyString_Type) {
-            res = save_string(self, args, 1);
-            goto finally;
-        }
-        break;
-
-#ifdef Py_USING_UNICODE
-    case 'u':
-        if (type == &PyUnicode_Type) {
-            res = save_unicode(self, args, 1);
-            goto finally;
-        }
-        break;
-#endif
-
-    case 't':
-        if (type == &PyTuple_Type) {
-            res = save_tuple(self, args);
-            goto finally;
-        }
-        if (type == &PyType_Type) {
-            res = save_global(self, args, NULL);
-            goto finally;
-        }
-        break;
-
-    case 'l':
-        if (type == &PyList_Type) {
-            res = save_list(self, args);
-            goto finally;
-        }
-        break;
-
-    case 'd':
-        if (type == &PyDict_Type) {
-            res = save_dict(self, args);
-            goto finally;
-        }
-        break;
-
-    case 'i':
-        if (type == &PyInstance_Type) {
-            res = save_inst(self, args);
-            goto finally;
-        }
-        break;
-
-    case 'c':
-        if (type == &PyClass_Type) {
-            res = save_global(self, args, NULL);
-            goto finally;
-        }
-        break;
-
-    case 'f':
-        if (type == &PyFunction_Type) {
-            res = save_global(self, args, NULL);
-            if (res && PyErr_ExceptionMatches(PickleError)) {
-                /* fall back to reduce */
-                PyErr_Clear();
-                break;
-            }
-            goto finally;
-        }
-        break;
-
-    case 'b':
-        if (type == &PyCFunction_Type) {
-            res = save_global(self, args, NULL);
-            goto finally;
-        }
-    }
-
-    if (!pers_save && self->inst_pers_func) {
-        if ((tmp = save_pers(self, args, self->inst_pers_func)) != 0) {
-            res = tmp;
-            goto finally;
-        }
-    }
-
-    if (PyType_IsSubtype(type, &PyType_Type)) {
-        res = save_global(self, args, NULL);
-        goto finally;
-    }
-
-    /* Get a reduction callable, and call it.  This may come from
-     * copy_reg.dispatch_table, the object's __reduce_ex__ method,
-     * or the object's __reduce__ method.
-     */
-    __reduce__ = PyDict_GetItem(dispatch_table, (PyObject *)type);
-    if (__reduce__ != NULL) {
-        Py_INCREF(__reduce__);
-        Py_INCREF(args);
-        ARG_TUP(self, args);
-        if (self->arg) {
-            t = PyObject_Call(__reduce__, self->arg, NULL);
-            FREE_ARG_TUP(self);
-        }
-    }
-    else {
-        /* Check for a __reduce_ex__ method. */
-        __reduce__ = PyObject_GetAttr(args, __reduce_ex___str);
-        if (__reduce__ != NULL) {
-            t = PyInt_FromLong(self->proto);
-            if (t != NULL) {
-                ARG_TUP(self, t);
-                t = NULL;
-                if (self->arg) {
-                    t = PyObject_Call(__reduce__,
-                                      self->arg, NULL);
-                    FREE_ARG_TUP(self);
-                }
-            }
-        }
-        else {
-            if (PyErr_ExceptionMatches(PyExc_AttributeError))
-                PyErr_Clear();
-            else
-                goto finally;
-            /* Check for a __reduce__ method. */
-            __reduce__ = PyObject_GetAttr(args, __reduce___str);
-            if (__reduce__ != NULL) {
-                t = PyObject_Call(__reduce__,
-                                  empty_tuple, NULL);
-            }
-            else {
-                PyErr_SetObject(UnpickleableError, args);
-                goto finally;
-            }
-        }
-    }
-
-    if (t == NULL)
-        goto finally;
-
-    if (PyString_Check(t)) {
-        res = save_global(self, args, t);
-        goto finally;
-    }
-
-    if (!PyTuple_Check(t)) {
-        cPickle_ErrFormat(PicklingError, "Value returned by "
-                        "%s must be string or tuple",
-                        "O", __reduce__);
-        goto finally;
-    }
-
-    res = save_reduce(self, t, __reduce__, args);
-
-  finally:
-    Py_LeaveRecursiveCall();
-    Py_XDECREF(py_ob_id);
-    Py_XDECREF(__reduce__);
-    Py_XDECREF(t);
-
-    return res;
-}
-
-
-static int
-dump(Picklerobject *self, PyObject *args)
-{
-    static char stop = STOP;
-
-    if (self->proto >= 2) {
-        char bytes[2];
-
-        bytes[0] = PROTO;
-        assert(self->proto >= 0 && self->proto < 256);
-        bytes[1] = (char)self->proto;
-        if (self->write_func(self, bytes, 2) < 0)
-            return -1;
-    }
-
-    if (save(self, args, 0) < 0)
-        return -1;
-
-    if (self->write_func(self, &stop, 1) < 0)
-        return -1;
-
-    if (self->write_func(self, NULL, 0) < 0)
-        return -1;
-
-    return 0;
-}
-
-static PyObject *
-Pickle_clear_memo(Picklerobject *self, PyObject *args)
-{
-    if (self->memo)
-        PyDict_Clear(self->memo);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-Pickle_getvalue(Picklerobject *self, PyObject *args)
-{
-    int l, i, rsize, ssize, clear=1, lm;
-    long ik;
-    PyObject *k, *r;
-    char *s, *p, *have_get;
-    Pdata *data;
-
-    /* Can be called by Python code or C code */
-    if (args && !PyArg_ParseTuple(args, "|i:getvalue", &clear))
-        return NULL;
-
-    /* Check to make sure we are based on a list */
-    if (! Pdata_Check(self->file)) {
-        PyErr_SetString(PicklingError,
-                        "Attempt to getvalue() a non-list-based pickler");
-        return NULL;
-    }
-
-    /* flush write buffer */
-    if (write_other(self, NULL, 0) < 0) return NULL;
-
-    data=(Pdata*)self->file;
-    l=data->length;
-
-    /* set up an array to hold get/put status */
-    lm = PyDict_Size(self->memo);
-    if (lm < 0) return NULL;
-    lm++;
-    have_get = malloc(lm);
-    if (have_get == NULL) return PyErr_NoMemory();
-    memset(have_get, 0, lm);
-
-    /* Scan for gets. */
-    for (rsize = 0, i = l; --i >= 0; ) {
-        k = data->data[i];
-
-        if (PyString_Check(k))
-            rsize += PyString_GET_SIZE(k);
-
-        else if (PyInt_Check(k)) { /* put */
-            ik = PyInt_AS_LONG((PyIntObject*)k);
-            if (ik >= lm || ik == 0) {
-                PyErr_SetString(PicklingError,
-                                "Invalid get data");
-                goto err;
-            }
-            if (have_get[ik]) /* with matching get */
-                rsize += ik < 256 ? 2 : 5;
-        }
-
-        else if (! (PyTuple_Check(k) &&
-                    PyTuple_GET_SIZE(k) == 2 &&
-                    PyInt_Check((k = PyTuple_GET_ITEM(k, 0))))
-            ) {
-            PyErr_SetString(PicklingError,
-                            "Unexpected data in internal list");
-            goto err;
-        }
-
-        else { /* put */
-            ik = PyInt_AS_LONG((PyIntObject *)k);
-            if (ik >= lm || ik == 0) {
-                PyErr_SetString(PicklingError,
-                                "Invalid get data");
-                return NULL;
-            }
-            have_get[ik] = 1;
-            rsize += ik < 256 ? 2 : 5;
-        }
-    }
-
-    /* Now generate the result */
-    r = PyString_FromStringAndSize(NULL, rsize);
-    if (r == NULL) goto err;
-    s = PyString_AS_STRING((PyStringObject *)r);
-
-    for (i = 0; i < l; i++) {
-        k = data->data[i];
-
-        if (PyString_Check(k)) {
-            ssize = PyString_GET_SIZE(k);
-            if (ssize) {
-                p=PyString_AS_STRING((PyStringObject *)k);
-                while (--ssize >= 0)
-                    *s++ = *p++;
-            }
-        }
-
-        else if (PyTuple_Check(k)) { /* get */
-            ik = PyInt_AS_LONG((PyIntObject *)
-                                PyTuple_GET_ITEM(k, 0));
-            if (ik < 256) {
-                *s++ = BINGET;
-                *s++ = (int)(ik & 0xff);
-            }
-            else {
-                *s++ = LONG_BINGET;
-                *s++ = (int)(ik & 0xff);
-                *s++ = (int)((ik >> 8)  & 0xff);
-                *s++ = (int)((ik >> 16) & 0xff);
-                *s++ = (int)((ik >> 24) & 0xff);
-            }
-        }
-
-        else { /* put */
-            ik = PyInt_AS_LONG((PyIntObject*)k);
-
-            if (have_get[ik]) { /* with matching get */
-                if (ik < 256) {
-                    *s++ = BINPUT;
-                    *s++ = (int)(ik & 0xff);
-                }
-                else {
-                    *s++ = LONG_BINPUT;
-                    *s++ = (int)(ik & 0xff);
-                    *s++ = (int)((ik >> 8)  & 0xff);
-                    *s++ = (int)((ik >> 16) & 0xff);
-                    *s++ = (int)((ik >> 24) & 0xff);
-                }
-            }
-        }
-    }
-
-    if (clear) {
-        PyDict_Clear(self->memo);
-        Pdata_clear(data, 0);
-    }
-
-    free(have_get);
-    return r;
-  err:
-    free(have_get);
-    return NULL;
-}
-
-static PyObject *
-Pickler_dump(Picklerobject *self, PyObject *args)
-{
-    PyObject *ob;
-    int get=0;
-
-    if (!( PyArg_ParseTuple(args, "O|i:dump", &ob, &get)))
-        return NULL;
-
-    if (dump(self, ob) < 0)
-        return NULL;
-
-    if (get) return Pickle_getvalue(self, NULL);
-
-    /* XXX Why does dump() return self? */
-    Py_INCREF(self);
-    return (PyObject*)self;
-}
-
-
-static struct PyMethodDef Pickler_methods[] =
-{
-  {"dump",          (PyCFunction)Pickler_dump,  METH_VARARGS,
-   PyDoc_STR("dump(object) -- "
-   "Write an object in pickle format to the object's pickle stream")},
-  {"clear_memo",  (PyCFunction)Pickle_clear_memo,  METH_NOARGS,
-   PyDoc_STR("clear_memo() -- Clear the picklers memo")},
-  {"getvalue",  (PyCFunction)Pickle_getvalue,  METH_VARARGS,
-   PyDoc_STR("getvalue() -- Finish picking a list-based pickle")},
-  {NULL,                NULL}           /* sentinel */
-};
-
-
-static Picklerobject *
-newPicklerobject(PyObject *file, int proto)
-{
-    Picklerobject *self;
-
-    if (proto < 0)
-        proto = HIGHEST_PROTOCOL;
-    if (proto > HIGHEST_PROTOCOL) {
-        PyErr_Format(PyExc_ValueError, "pickle protocol %d asked for; "
-                     "the highest available protocol is %d",
-                     proto, HIGHEST_PROTOCOL);
-        return NULL;
-    }
-
-    self = PyObject_GC_New(Picklerobject, &Picklertype);
-    if (self == NULL)
-        return NULL;
-    self->proto = proto;
-    self->bin = proto > 0;
-    self->fp = NULL;
-    self->write = NULL;
-    self->memo = NULL;
-    self->arg = NULL;
-    self->pers_func = NULL;
-    self->inst_pers_func = NULL;
-    self->write_buf = NULL;
-    self->fast = 0;
-    self->fast_container = 0;
-    self->fast_memo = NULL;
-    self->buf_size = 0;
-    self->dispatch_table = NULL;
-
-    self->file = NULL;
-    if (file)
-        Py_INCREF(file);
-    else {
-        file = Pdata_New();
-        if (file == NULL)
-            goto err;
-    }
-    self->file = file;
-
-    if (!( self->memo = PyDict_New()))
-        goto err;
-
-    if (PyFile_Check(file)) {
-        self->fp = PyFile_AsFile(file);
-        if (self->fp == NULL) {
-            PyErr_SetString(PyExc_ValueError,
-                            "I/O operation on closed file");
-            goto err;
-        }
-        self->write_func = write_file;
-    }
-    else if (PycStringIO_OutputCheck(file)) {
-        self->write_func = write_cStringIO;
-    }
-    else if (file == Py_None) {
-        self->write_func = write_none;
-    }
-    else {
-        self->write_func = write_other;
-
-        if (! Pdata_Check(file)) {
-            self->write = PyObject_GetAttr(file, write_str);
-            if (!self->write)  {
-                PyErr_Clear();
-                PyErr_SetString(PyExc_TypeError,
-                                "argument must have 'write' "
-                                "attribute");
-                goto err;
-            }
-        }
-
-        self->write_buf = (char *)PyMem_Malloc(WRITE_BUF_SIZE);
-        if (self->write_buf == NULL) {
-            PyErr_NoMemory();
-            goto err;
-        }
-    }
-
-    if (PyEval_GetRestricted()) {
-        /* Restricted execution, get private tables */
-        PyObject *m = PyImport_ImportModule("copy_reg");
-
-        if (m == NULL)
-            goto err;
-        self->dispatch_table = PyObject_GetAttr(m, dispatch_table_str);
-        Py_DECREF(m);
-        if (self->dispatch_table == NULL)
-            goto err;
-    }
-    else {
-        self->dispatch_table = dispatch_table;
-        Py_INCREF(dispatch_table);
-    }
-    PyObject_GC_Track(self);
-
-    return self;
-
-  err:
-    Py_DECREF(self);
-    return NULL;
-}
-
-
-static PyObject *
-get_Pickler(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    static char *kwlist[] = {"file", "protocol", NULL};
-    PyObject *file = NULL;
-    int proto = 0;
-
-    /* XXX
-     * The documented signature is Pickler(file, protocol=0), but this
-     * accepts Pickler() and Pickler(integer) too.  The meaning then
-     * is clear as mud, undocumented, and not supported by pickle.py.
-     * I'm told Zope uses this, but I haven't traced into this code
-     * far enough to figure out what it means.
-     */
-    if (!PyArg_ParseTuple(args, "|i:Pickler", &proto)) {
-        PyErr_Clear();
-        proto = 0;
-        if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|i:Pickler",
-                    kwlist, &file, &proto))
-            return NULL;
-    }
-    return (PyObject *)newPicklerobject(file, proto);
-}
-
-
-static void
-Pickler_dealloc(Picklerobject *self)
-{
-    PyObject_GC_UnTrack(self);
-    Py_XDECREF(self->write);
-    Py_XDECREF(self->memo);
-    Py_XDECREF(self->fast_memo);
-    Py_XDECREF(self->arg);
-    Py_XDECREF(self->file);
-    Py_XDECREF(self->pers_func);
-    Py_XDECREF(self->inst_pers_func);
-    Py_XDECREF(self->dispatch_table);
-    PyMem_Free(self->write_buf);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-static int
-Pickler_traverse(Picklerobject *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->write);
-    Py_VISIT(self->memo);
-    Py_VISIT(self->fast_memo);
-    Py_VISIT(self->arg);
-    Py_VISIT(self->file);
-    Py_VISIT(self->pers_func);
-    Py_VISIT(self->inst_pers_func);
-    Py_VISIT(self->dispatch_table);
-    return 0;
-}
-
-static int
-Pickler_clear(Picklerobject *self)
-{
-    Py_CLEAR(self->write);
-    Py_CLEAR(self->memo);
-    Py_CLEAR(self->fast_memo);
-    Py_CLEAR(self->arg);
-    Py_CLEAR(self->file);
-    Py_CLEAR(self->pers_func);
-    Py_CLEAR(self->inst_pers_func);
-    Py_CLEAR(self->dispatch_table);
-    return 0;
-}
-
-static PyObject *
-Pickler_get_pers_func(Picklerobject *p)
-{
-    if (p->pers_func == NULL)
-        PyErr_SetString(PyExc_AttributeError, "persistent_id");
-    else
-        Py_INCREF(p->pers_func);
-    return p->pers_func;
-}
-
-static int
-Pickler_set_pers_func(Picklerobject *p, PyObject *v)
-{
-    if (v == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "attribute deletion is not supported");
-        return -1;
-    }
-    Py_XDECREF(p->pers_func);
-    Py_INCREF(v);
-    p->pers_func = v;
-    return 0;
-}
-
-static int
-Pickler_set_inst_pers_func(Picklerobject *p, PyObject *v)
-{
-    if (v == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "attribute deletion is not supported");
-        return -1;
-    }
-    Py_XDECREF(p->inst_pers_func);
-    Py_INCREF(v);
-    p->inst_pers_func = v;
-    return 0;
-}
-
-static PyObject *
-Pickler_get_memo(Picklerobject *p)
-{
-    if (p->memo == NULL)
-        PyErr_SetString(PyExc_AttributeError, "memo");
-    else
-        Py_INCREF(p->memo);
-    return p->memo;
-}
-
-static int
-Pickler_set_memo(Picklerobject *p, PyObject *v)
-{
-    if (v == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "attribute deletion is not supported");
-        return -1;
-    }
-    if (!PyDict_Check(v)) {
-        PyErr_SetString(PyExc_TypeError, "memo must be a dictionary");
-        return -1;
-    }
-    Py_XDECREF(p->memo);
-    Py_INCREF(v);
-    p->memo = v;
-    return 0;
-}
-
-static PyObject *
-Pickler_get_error(Picklerobject *p)
-{
-    /* why is this an attribute on the Pickler? */
-    Py_INCREF(PicklingError);
-    return PicklingError;
-}
-
-static PyMemberDef Pickler_members[] = {
-    {"binary", T_INT, offsetof(Picklerobject, bin)},
-    {"fast", T_INT, offsetof(Picklerobject, fast)},
-    {NULL}
-};
-
-static PyGetSetDef Pickler_getsets[] = {
-    {"persistent_id", (getter)Pickler_get_pers_func,
-                     (setter)Pickler_set_pers_func},
-    {"inst_persistent_id", NULL, (setter)Pickler_set_inst_pers_func},
-    {"memo", (getter)Pickler_get_memo, (setter)Pickler_set_memo},
-    {"PicklingError", (getter)Pickler_get_error, NULL},
-    {NULL}
-};
-
-PyDoc_STRVAR(Picklertype__doc__,
-"Objects that know how to pickle objects\n");
-
-static PyTypeObject Picklertype = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "cPickle.Pickler",            /*tp_name*/
-    sizeof(Picklerobject),              /*tp_basicsize*/
-    0,
-    (destructor)Pickler_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    PyObject_GenericSetAttr,            /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC,
-    Picklertype__doc__,                 /* tp_doc */
-    (traverseproc)Pickler_traverse,     /* tp_traverse */
-    (inquiry)Pickler_clear,             /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iternext */
-    Pickler_methods,                    /* tp_methods */
-    Pickler_members,                    /* tp_members */
-    Pickler_getsets,                    /* tp_getset */
-};
-
-static PyObject *
-find_class(PyObject *py_module_name, PyObject *py_global_name, PyObject *fc)
-{
-    PyObject *global = 0, *module;
-
-    if (fc) {
-        if (fc==Py_None) {
-            PyErr_SetString(UnpicklingError, "Global and instance "
-                            "pickles are not supported.");
-            return NULL;
-        }
-        return PyObject_CallFunctionObjArgs(fc, py_module_name,
-                                            py_global_name, NULL);
-    }
-
-    module = PySys_GetObject("modules");
-    if (module == NULL)
-        return NULL;
-
-    module = PyDict_GetItem(module, py_module_name);
-    if (module == NULL) {
-        module = PyImport_Import(py_module_name);
-        if (!module)
-            return NULL;
-        global = PyObject_GetAttr(module, py_global_name);
-        Py_DECREF(module);
-    }
-    else
-        global = PyObject_GetAttr(module, py_global_name);
-    return global;
-}
-
-static int
-marker(Unpicklerobject *self)
-{
-    if (self->num_marks < 1) {
-        PyErr_SetString(UnpicklingError, "could not find MARK");
-        return -1;
-    }
-
-    return self->marks[--self->num_marks];
-}
-
-
-static int
-load_none(Unpicklerobject *self)
-{
-    PDATA_APPEND(self->stack, Py_None, -1);
-    return 0;
-}
-
-static int
-bad_readline(void)
-{
-    PyErr_SetString(UnpicklingError, "pickle data was truncated");
-    return -1;
-}
-
-static int
-load_int(Unpicklerobject *self)
-{
-    PyObject *py_int = 0;
-    char *endptr, *s;
-    int len, res = -1;
-    long l;
-
-    if ((len = self->readline_func(self, &s)) < 0) return -1;
-    if (len < 2) return bad_readline();
-    if (!( s=pystrndup(s,len)))  return -1;
-
-    errno = 0;
-    l = strtol(s, &endptr, 0);
-
-    if (errno || (*endptr != '\n') || (endptr[1] != '\0')) {
-        /* Hm, maybe we've got something long.  Let's try reading
-           it as a Python long object. */
-        errno = 0;
-        py_int = PyLong_FromString(s, NULL, 0);
-        if (py_int == NULL) {
-            PyErr_SetString(PyExc_ValueError,
-                            "could not convert string to int");
-            goto finally;
-        }
-    }
-    else {
-        if (len == 3 && (l == 0 || l == 1)) {
-            if (!( py_int = PyBool_FromLong(l)))  goto finally;
-        }
-        else {
-            if (!( py_int = PyInt_FromLong(l)))  goto finally;
-        }
-    }
-
-    free(s);
-    PDATA_PUSH(self->stack, py_int, -1);
-    return 0;
-
-  finally:
-    free(s);
-
-    return res;
-}
-
-static int
-load_bool(Unpicklerobject *self, PyObject *boolean)
-{
-    assert(boolean == Py_True || boolean == Py_False);
-    PDATA_APPEND(self->stack, boolean, -1);
-    return 0;
-}
-
-/* s contains x bytes of a little-endian integer.  Return its value as a
- * C int.  Obscure:  when x is 1 or 2, this is an unsigned little-endian
- * int, but when x is 4 it's a signed one.  This is an historical source
- * of x-platform bugs.
- */
-static long
-calc_binint(char *s, int x)
-{
-    unsigned char c;
-    int i;
-    long l;
-
-    for (i = 0, l = 0L; i < x; i++) {
-        c = (unsigned char)s[i];
-        l |= (long)c << (i * 8);
-    }
-#if SIZEOF_LONG > 4
-    /* Unlike BININT1 and BININT2, BININT (more accurately BININT4)
-     * is signed, so on a box with longs bigger than 4 bytes we need
-     * to extend a BININT's sign bit to the full width.
-     */
-    if (x == 4 && l & (1L << 31))
-        l |= (~0L) << 32;
-#endif
-    return l;
-}
-
-
-static int
-load_binintx(Unpicklerobject *self, char *s, int  x)
-{
-    PyObject *py_int = 0;
-    long l;
-
-    l = calc_binint(s, x);
-
-    if (!( py_int = PyInt_FromLong(l)))
-        return -1;
-
-    PDATA_PUSH(self->stack, py_int, -1);
-    return 0;
-}
-
-
-static int
-load_binint(Unpicklerobject *self)
-{
-    char *s;
-
-    if (self->read_func(self, &s, 4) < 0)
-        return -1;
-
-    return load_binintx(self, s, 4);
-}
-
-
-static int
-load_binint1(Unpicklerobject *self)
-{
-    char *s;
-
-    if (self->read_func(self, &s, 1) < 0)
-        return -1;
-
-    return load_binintx(self, s, 1);
-}
-
-
-static int
-load_binint2(Unpicklerobject *self)
-{
-    char *s;
-
-    if (self->read_func(self, &s, 2) < 0)
-        return -1;
-
-    return load_binintx(self, s, 2);
-}
-
-static int
-load_long(Unpicklerobject *self)
-{
-    PyObject *l = 0;
-    char *end, *s;
-    int len, res = -1;
-
-    if ((len = self->readline_func(self, &s)) < 0) return -1;
-    if (len < 2) return bad_readline();
-    if (!( s=pystrndup(s,len)))  return -1;
-
-    if (!( l = PyLong_FromString(s, &end, 0)))
-        goto finally;
-
-    free(s);
-    PDATA_PUSH(self->stack, l, -1);
-    return 0;
-
-  finally:
-    free(s);
-
-    return res;
-}
-
-/* 'size' bytes contain the # of bytes of little-endian 256's-complement
- * data following.
- */
-static int
-load_counted_long(Unpicklerobject *self, int size)
-{
-    Py_ssize_t i;
-    char *nbytes;
-    unsigned char *pdata;
-    PyObject *along;
-
-    assert(size == 1 || size == 4);
-    i = self->read_func(self, &nbytes, size);
-    if (i < 0) return -1;
-
-    size = calc_binint(nbytes, size);
-    if (size < 0) {
-        /* Corrupt or hostile pickle -- we never write one like
-         * this.
-         */
-        PyErr_SetString(UnpicklingError, "LONG pickle has negative "
-                        "byte count");
-        return -1;
-    }
-
-    if (size == 0)
-        along = PyLong_FromLong(0L);
-    else {
-        /* Read the raw little-endian bytes & convert. */
-        i = self->read_func(self, (char **)&pdata, size);
-        if (i < 0) return -1;
-        along = _PyLong_FromByteArray(pdata, (size_t)size,
-                        1 /* little endian */, 1 /* signed */);
-    }
-    if (along == NULL)
-        return -1;
-    PDATA_PUSH(self->stack, along, -1);
-    return 0;
-}
-
-static int
-load_float(Unpicklerobject *self)
-{
-    PyObject *py_float = 0;
-    char *endptr, *s;
-    int len, res = -1;
-    double d;
-
-    if ((len = self->readline_func(self, &s)) < 0) return -1;
-    if (len < 2) return bad_readline();
-    if (!( s=pystrndup(s,len)))  return -1;
-
-    d = PyOS_string_to_double(s, &endptr, PyExc_OverflowError);
-
-    if (d == -1.0 && PyErr_Occurred()) {
-        goto finally;
-    } else if ((endptr[0] != '\n') || (endptr[1] != '\0')) {
-        PyErr_SetString(PyExc_ValueError,
-                        "could not convert string to float");
-        goto finally;
-    }
-
-    if (!( py_float = PyFloat_FromDouble(d)))
-        goto finally;
-
-    free(s);
-    PDATA_PUSH(self->stack, py_float, -1);
-    return 0;
-
-  finally:
-    free(s);
-
-    return res;
-}
-
-static int
-load_binfloat(Unpicklerobject *self)
-{
-    PyObject *py_float;
-    double x;
-    char *p;
-
-    if (self->read_func(self, &p, 8) < 0)
-        return -1;
-
-    x = _PyFloat_Unpack8((unsigned char *)p, 0);
-    if (x == -1.0 && PyErr_Occurred())
-        return -1;
-
-    py_float = PyFloat_FromDouble(x);
-    if (py_float == NULL)
-        return -1;
-
-    PDATA_PUSH(self->stack, py_float, -1);
-    return 0;
-}
-
-static int
-load_string(Unpicklerobject *self)
-{
-    PyObject *str = 0;
-    int len, res = -1;
-    char *s, *p;
-
-    if ((len = self->readline_func(self, &s)) < 0) return -1;
-    if (len < 2) return bad_readline();
-    if (!( s=pystrndup(s,len)))  return -1;
-
-
-    /* Strip outermost quotes */
-    while (s[len-1] <= ' ')
-        len--;
-    if(s[0]=='"' && s[len-1]=='"'){
-        s[len-1] = '\0';
-        p = s + 1 ;
-        len -= 2;
-    } else if(s[0]=='\'' && s[len-1]=='\''){
-        s[len-1] = '\0';
-        p = s + 1 ;
-        len -= 2;
-    } else
-        goto insecure;
-    /********************************************/
-
-    str = PyString_DecodeEscape(p, len, NULL, 0, NULL);
-    free(s);
-    if (str) {
-        PDATA_PUSH(self->stack, str, -1);
-        res = 0;
-    }
-    return res;
-
-  insecure:
-    free(s);
-    PyErr_SetString(PyExc_ValueError,"insecure string pickle");
-    return -1;
-}
-
-
-static int
-load_binstring(Unpicklerobject *self)
-{
-    PyObject *py_string = 0;
-    long l;
-    char *s;
-
-    if (self->read_func(self, &s, 4) < 0) return -1;
-
-    l = calc_binint(s, 4);
-    if (l < 0) {
-        /* Corrupt or hostile pickle -- we never write one like
-         * this.
-         */
-        PyErr_SetString(UnpicklingError,
-                        "BINSTRING pickle has negative byte count");
-        return -1;
-    }
-
-    if (self->read_func(self, &s, l) < 0)
-        return -1;
-
-    if (!( py_string = PyString_FromStringAndSize(s, l)))
-        return -1;
-
-    PDATA_PUSH(self->stack, py_string, -1);
-    return 0;
-}
-
-
-static int
-load_short_binstring(Unpicklerobject *self)
-{
-    PyObject *py_string = 0;
-    unsigned char l;
-    char *s;
-
-    if (self->read_func(self, &s, 1) < 0)
-        return -1;
-
-    l = (unsigned char)s[0];
-
-    if (self->read_func(self, &s, l) < 0) return -1;
-
-    if (!( py_string = PyString_FromStringAndSize(s, l)))  return -1;
-
-    PDATA_PUSH(self->stack, py_string, -1);
-    return 0;
-}
-
-
-#ifdef Py_USING_UNICODE
-static int
-load_unicode(Unpicklerobject *self)
-{
-    PyObject *str = 0;
-    int len, res = -1;
-    char *s;
-
-    if ((len = self->readline_func(self, &s)) < 0) return -1;
-    if (len < 1) return bad_readline();
-
-    if (!( str = PyUnicode_DecodeRawUnicodeEscape(s, len - 1, NULL)))
-        goto finally;
-
-    PDATA_PUSH(self->stack, str, -1);
-    return 0;
-
-  finally:
-    return res;
-}
-#endif
-
-
-#ifdef Py_USING_UNICODE
-static int
-load_binunicode(Unpicklerobject *self)
-{
-    PyObject *unicode;
-    long l;
-    char *s;
-
-    if (self->read_func(self, &s, 4) < 0) return -1;
-
-    l = calc_binint(s, 4);
-    if (l < 0) {
-        /* Corrupt or hostile pickle -- we never write one like
-         * this.
-         */
-        PyErr_SetString(UnpicklingError,
-                        "BINUNICODE pickle has negative byte count");
-        return -1;
-    }
-
-    if (self->read_func(self, &s, l) < 0)
-        return -1;
-
-    if (!( unicode = PyUnicode_DecodeUTF8(s, l, NULL)))
-        return -1;
-
-    PDATA_PUSH(self->stack, unicode, -1);
-    return 0;
-}
-#endif
-
-
-static int
-load_tuple(Unpicklerobject *self)
-{
-    PyObject *tup;
-    int i;
-
-    if ((i = marker(self)) < 0) return -1;
-    if (!( tup=Pdata_popTuple(self->stack, i)))  return -1;
-    PDATA_PUSH(self->stack, tup, -1);
-    return 0;
-}
-
-static int
-load_counted_tuple(Unpicklerobject *self, int len)
-{
-    PyObject *tup = PyTuple_New(len);
-
-    if (tup == NULL)
-        return -1;
-
-    while (--len >= 0) {
-        PyObject *element;
-
-        PDATA_POP(self->stack, element);
-        if (element == NULL)
-            return -1;
-        PyTuple_SET_ITEM(tup, len, element);
-    }
-    PDATA_PUSH(self->stack, tup, -1);
-    return 0;
-}
-
-static int
-load_empty_list(Unpicklerobject *self)
-{
-    PyObject *list;
-
-    if (!( list=PyList_New(0)))  return -1;
-    PDATA_PUSH(self->stack, list, -1);
-    return 0;
-}
-
-static int
-load_empty_dict(Unpicklerobject *self)
-{
-    PyObject *dict;
-
-    if (!( dict=PyDict_New()))  return -1;
-    PDATA_PUSH(self->stack, dict, -1);
-    return 0;
-}
-
-
-static int
-load_list(Unpicklerobject *self)
-{
-    PyObject *list = 0;
-    int i;
-
-    if ((i = marker(self)) < 0) return -1;
-    if (!( list=Pdata_popList(self->stack, i)))  return -1;
-    PDATA_PUSH(self->stack, list, -1);
-    return 0;
-}
-
-static int
-load_dict(Unpicklerobject *self)
-{
-    PyObject *dict, *key, *value;
-    int i, j, k;
-
-    if ((i = marker(self)) < 0) return -1;
-    j=self->stack->length;
-
-    if (!( dict = PyDict_New()))  return -1;
-
-    for (k = i+1; k < j; k += 2) {
-        key  =self->stack->data[k-1];
-        value=self->stack->data[k  ];
-        if (PyDict_SetItem(dict, key, value) < 0) {
-            Py_DECREF(dict);
-            return -1;
-        }
-    }
-    Pdata_clear(self->stack, i);
-    PDATA_PUSH(self->stack, dict, -1);
-    return 0;
-}
-
-static PyObject *
-Instance_New(PyObject *cls, PyObject *args)
-{
-    PyObject *r = 0;
-
-    if (PyClass_Check(cls)) {
-        int l;
-
-        if ((l=PyObject_Size(args)) < 0) goto err;
-        if (!( l ))  {
-            PyObject *__getinitargs__;
-
-            __getinitargs__ = PyObject_GetAttr(cls,
-                                       __getinitargs___str);
-            if (!__getinitargs__)  {
-                /* We have a class with no __getinitargs__,
-                   so bypass usual construction  */
-                PyObject *inst;
-
-                PyErr_Clear();
-                if (!( inst=PyInstance_NewRaw(cls, NULL)))
-                    goto err;
-                return inst;
-            }
-            Py_DECREF(__getinitargs__);
-        }
-
-        if ((r=PyInstance_New(cls, args, NULL))) return r;
-        else goto err;
-    }
-
-    if ((r=PyObject_CallObject(cls, args))) return r;
-
-  err:
-    {
-        PyObject *tp, *v, *tb, *tmp_value;
-
-        PyErr_Fetch(&tp, &v, &tb);
-        tmp_value = v;
-        /* NULL occurs when there was a KeyboardInterrupt */
-        if (tmp_value == NULL)
-            tmp_value = Py_None;
-        if ((r = PyTuple_Pack(3, tmp_value, cls, args))) {
-            Py_XDECREF(v);
-            v=r;
-        }
-        PyErr_Restore(tp,v,tb);
-    }
-    return NULL;
-}
-
-
-static int
-load_obj(Unpicklerobject *self)
-{
-    PyObject *class, *tup, *obj=0;
-    int i;
-
-    if ((i = marker(self)) < 0) return -1;
-    if (!( tup=Pdata_popTuple(self->stack, i+1)))  return -1;
-    PDATA_POP(self->stack, class);
-    if (class) {
-        obj = Instance_New(class, tup);
-        Py_DECREF(class);
-    }
-    Py_DECREF(tup);
-
-    if (! obj) return -1;
-    PDATA_PUSH(self->stack, obj, -1);
-    return 0;
-}
-
-
-static int
-load_inst(Unpicklerobject *self)
-{
-    PyObject *tup, *class=0, *obj=0, *module_name, *class_name;
-    int i, len;
-    char *s;
-
-    if ((i = marker(self)) < 0) return -1;
-
-    if ((len = self->readline_func(self, &s)) < 0) return -1;
-    if (len < 2) return bad_readline();
-    module_name = PyString_FromStringAndSize(s, len - 1);
-    if (!module_name)  return -1;
-
-    if ((len = self->readline_func(self, &s)) >= 0) {
-        if (len < 2) return bad_readline();
-        if ((class_name = PyString_FromStringAndSize(s, len - 1))) {
-            class = find_class(module_name, class_name,
-                               self->find_class);
-            Py_DECREF(class_name);
-        }
-    }
-    Py_DECREF(module_name);
-
-    if (! class) return -1;
-
-    if ((tup=Pdata_popTuple(self->stack, i))) {
-        obj = Instance_New(class, tup);
-        Py_DECREF(tup);
-    }
-    Py_DECREF(class);
-
-    if (! obj) return -1;
-
-    PDATA_PUSH(self->stack, obj, -1);
-    return 0;
-}
-
-static int
-load_newobj(Unpicklerobject *self)
-{
-    PyObject *args = NULL;
-    PyObject *clsraw = NULL;
-    PyTypeObject *cls;          /* clsraw cast to its true type */
-    PyObject *obj;
-
-    /* Stack is ... cls argtuple, and we want to call
-     * cls.__new__(cls, *argtuple).
-     */
-    PDATA_POP(self->stack, args);
-    if (args == NULL) goto Fail;
-    if (! PyTuple_Check(args)) {
-        PyErr_SetString(UnpicklingError, "NEWOBJ expected an arg "
-                                         "tuple.");
-        goto Fail;
-    }
-
-    PDATA_POP(self->stack, clsraw);
-    cls = (PyTypeObject *)clsraw;
-    if (cls == NULL) goto Fail;
-    if (! PyType_Check(cls)) {
-        PyErr_SetString(UnpicklingError, "NEWOBJ class argument "
-                                         "isn't a type object");
-        goto Fail;
-    }
-    if (cls->tp_new == NULL) {
-        PyErr_SetString(UnpicklingError, "NEWOBJ class argument "
-                                         "has NULL tp_new");
-        goto Fail;
-    }
-
-    /* Call __new__. */
-    obj = cls->tp_new(cls, args, NULL);
-    if (obj == NULL) goto Fail;
-
-    Py_DECREF(args);
-    Py_DECREF(clsraw);
-    PDATA_PUSH(self->stack, obj, -1);
-    return 0;
-
- Fail:
-    Py_XDECREF(args);
-    Py_XDECREF(clsraw);
-    return -1;
-}
-
-static int
-load_global(Unpicklerobject *self)
-{
-    PyObject *class = 0, *module_name = 0, *class_name = 0;
-    int len;
-    char *s;
-
-    if ((len = self->readline_func(self, &s)) < 0) return -1;
-    if (len < 2) return bad_readline();
-    module_name = PyString_FromStringAndSize(s, len - 1);
-    if (!module_name)  return -1;
-
-    if ((len = self->readline_func(self, &s)) >= 0) {
-        if (len < 2) {
-            Py_DECREF(module_name);
-            return bad_readline();
-        }
-        if ((class_name = PyString_FromStringAndSize(s, len - 1))) {
-            class = find_class(module_name, class_name,
-                               self->find_class);
-            Py_DECREF(class_name);
-        }
-    }
-    Py_DECREF(module_name);
-
-    if (! class) return -1;
-    PDATA_PUSH(self->stack, class, -1);
-    return 0;
-}
-
-
-static int
-load_persid(Unpicklerobject *self)
-{
-    PyObject *pid = 0;
-    int len;
-    char *s;
-
-    if (self->pers_func) {
-        if ((len = self->readline_func(self, &s)) < 0) return -1;
-        if (len < 2) return bad_readline();
-
-        pid = PyString_FromStringAndSize(s, len - 1);
-        if (!pid)  return -1;
-
-        if (PyList_Check(self->pers_func)) {
-            if (PyList_Append(self->pers_func, pid) < 0) {
-                Py_DECREF(pid);
-                return -1;
-            }
-        }
-        else {
-            ARG_TUP(self, pid);
-            if (self->arg) {
-                pid = PyObject_Call(self->pers_func, self->arg,
-                                    NULL);
-                FREE_ARG_TUP(self);
-            }
-        }
-
-        if (! pid) return -1;
-
-        PDATA_PUSH(self->stack, pid, -1);
-        return 0;
-    }
-    else {
-        PyErr_SetString(UnpicklingError,
-                        "A load persistent id instruction was encountered,\n"
-                        "but no persistent_load function was specified.");
-        return -1;
-    }
-}
-
-static int
-load_binpersid(Unpicklerobject *self)
-{
-    PyObject *pid = 0;
-
-    if (self->pers_func) {
-        PDATA_POP(self->stack, pid);
-        if (! pid) return -1;
-
-        if (PyList_Check(self->pers_func)) {
-            if (PyList_Append(self->pers_func, pid) < 0) {
-                Py_DECREF(pid);
-                return -1;
-            }
-        }
-        else {
-            ARG_TUP(self, pid);
-            if (self->arg) {
-                pid = PyObject_Call(self->pers_func, self->arg,
-                                    NULL);
-                FREE_ARG_TUP(self);
-            }
-            if (! pid) return -1;
-        }
-
-        PDATA_PUSH(self->stack, pid, -1);
-        return 0;
-    }
-    else {
-        PyErr_SetString(UnpicklingError,
-                        "A load persistent id instruction was encountered,\n"
-                        "but no persistent_load function was specified.");
-        return -1;
-    }
-}
-
-
-static int
-load_pop(Unpicklerobject *self)
-{
-    int len = self->stack->length;
-
-    /* Note that we split the (pickle.py) stack into two stacks,
-       an object stack and a mark stack. We have to be clever and
-       pop the right one. We do this by looking at the top of the
-       mark stack first, and only signalling a stack underflow if
-       the object stack is empty and the mark stack doesn't match
-       our expectations.
-    */
-    if (self->num_marks > 0 && self->marks[self->num_marks - 1] == len) {
-        self->num_marks--;
-    } else if (len > 0) {
-        len--;
-        Py_DECREF(self->stack->data[len]);
-        self->stack->length = len;
-    } else {
-        return stackUnderflow();
-    }
-    return 0;
-}
-
-
-static int
-load_pop_mark(Unpicklerobject *self)
-{
-    int i;
-
-    if ((i = marker(self)) < 0)
-        return -1;
-
-    Pdata_clear(self->stack, i);
-
-    return 0;
-}
-
-
-static int
-load_dup(Unpicklerobject *self)
-{
-    PyObject *last;
-    int len;
-
-    if ((len = self->stack->length) <= 0) return stackUnderflow();
-    last=self->stack->data[len-1];
-    Py_INCREF(last);
-    PDATA_PUSH(self->stack, last, -1);
-    return 0;
-}
-
-
-static int
-load_get(Unpicklerobject *self)
-{
-    PyObject *py_str = 0, *value = 0;
-    int len;
-    char *s;
-    int rc;
-
-    if ((len = self->readline_func(self, &s)) < 0) return -1;
-    if (len < 2) return bad_readline();
-
-    if (!( py_str = PyString_FromStringAndSize(s, len - 1)))  return -1;
-
-    value = PyDict_GetItem(self->memo, py_str);
-    if (! value) {
-        PyErr_SetObject(BadPickleGet, py_str);
-        rc = -1;
-    }
-    else {
-        PDATA_APPEND(self->stack, value, -1);
-        rc = 0;
-    }
-
-    Py_DECREF(py_str);
-    return rc;
-}
-
-
-static int
-load_binget(Unpicklerobject *self)
-{
-    PyObject *py_key = 0, *value = 0;
-    unsigned char key;
-    char *s;
-    int rc;
-
-    if (self->read_func(self, &s, 1) < 0) return -1;
-
-    key = (unsigned char)s[0];
-    if (!( py_key = PyInt_FromLong((long)key)))  return -1;
-
-    value = PyDict_GetItem(self->memo, py_key);
-    if (! value) {
-        PyErr_SetObject(BadPickleGet, py_key);
-        rc = -1;
-    }
-    else {
-        PDATA_APPEND(self->stack, value, -1);
-        rc = 0;
-    }
-
-    Py_DECREF(py_key);
-    return rc;
-}
-
-
-static int
-load_long_binget(Unpicklerobject *self)
-{
-    PyObject *py_key = 0, *value = 0;
-    unsigned char c;
-    char *s;
-    long key;
-    int rc;
-
-    if (self->read_func(self, &s, 4) < 0) return -1;
-
-    c = (unsigned char)s[0];
-    key = (long)c;
-    c = (unsigned char)s[1];
-    key |= (long)c << 8;
-    c = (unsigned char)s[2];
-    key |= (long)c << 16;
-    c = (unsigned char)s[3];
-    key |= (long)c << 24;
-
-    if (!( py_key = PyInt_FromLong((long)key)))  return -1;
-
-    value = PyDict_GetItem(self->memo, py_key);
-    if (! value) {
-        PyErr_SetObject(BadPickleGet, py_key);
-        rc = -1;
-    }
-    else {
-        PDATA_APPEND(self->stack, value, -1);
-        rc = 0;
-    }
-
-    Py_DECREF(py_key);
-    return rc;
-}
-
-/* Push an object from the extension registry (EXT[124]).  nbytes is
- * the number of bytes following the opcode, holding the index (code) value.
- */
-static int
-load_extension(Unpicklerobject *self, int nbytes)
-{
-    char *codebytes;            /* the nbytes bytes after the opcode */
-    long code;                  /* calc_binint returns long */
-    PyObject *py_code;          /* code as a Python int */
-    PyObject *obj;              /* the object to push */
-    PyObject *pair;             /* (module_name, class_name) */
-    PyObject *module_name, *class_name;
-
-    assert(nbytes == 1 || nbytes == 2 || nbytes == 4);
-    if (self->read_func(self, &codebytes, nbytes) < 0) return -1;
-    code = calc_binint(codebytes,  nbytes);
-    if (code <= 0) {                    /* note that 0 is forbidden */
-        /* Corrupt or hostile pickle. */
-        PyErr_SetString(UnpicklingError, "EXT specifies code <= 0");
-        return -1;
-    }
-
-    /* Look for the code in the cache. */
-    py_code = PyInt_FromLong(code);
-    if (py_code == NULL) return -1;
-    obj = PyDict_GetItem(extension_cache, py_code);
-    if (obj != NULL) {
-        /* Bingo. */
-        Py_DECREF(py_code);
-        PDATA_APPEND(self->stack, obj, -1);
-        return 0;
-    }
-
-    /* Look up the (module_name, class_name) pair. */
-    pair = PyDict_GetItem(inverted_registry, py_code);
-    if (pair == NULL) {
-        Py_DECREF(py_code);
-        PyErr_Format(PyExc_ValueError, "unregistered extension "
-                     "code %ld", code);
-        return -1;
-    }
-    /* Since the extension registry is manipulable via Python code,
-     * confirm that pair is really a 2-tuple of strings.
-     */
-    if (!PyTuple_Check(pair) || PyTuple_Size(pair) != 2 ||
-        !PyString_Check(module_name = PyTuple_GET_ITEM(pair, 0)) ||
-        !PyString_Check(class_name = PyTuple_GET_ITEM(pair, 1))) {
-        Py_DECREF(py_code);
-        PyErr_Format(PyExc_ValueError, "_inverted_registry[%ld] "
-                     "isn't a 2-tuple of strings", code);
-        return -1;
-    }
-    /* Load the object. */
-    obj = find_class(module_name, class_name, self->find_class);
-    if (obj == NULL) {
-        Py_DECREF(py_code);
-        return -1;
-    }
-    /* Cache code -> obj. */
-    code = PyDict_SetItem(extension_cache, py_code, obj);
-    Py_DECREF(py_code);
-    if (code < 0) {
-        Py_DECREF(obj);
-        return -1;
-    }
-    PDATA_PUSH(self->stack, obj, -1);
-    return 0;
-}
-
-static int
-load_put(Unpicklerobject *self)
-{
-    PyObject *py_str = 0, *value = 0;
-    int len, l;
-    char *s;
-
-    if ((l = self->readline_func(self, &s)) < 0) return -1;
-    if (l < 2) return bad_readline();
-    if (!( len=self->stack->length ))  return stackUnderflow();
-    if (!( py_str = PyString_FromStringAndSize(s, l - 1)))  return -1;
-    value=self->stack->data[len-1];
-    l=PyDict_SetItem(self->memo, py_str, value);
-    Py_DECREF(py_str);
-    return l;
-}
-
-
-static int
-load_binput(Unpicklerobject *self)
-{
-    PyObject *py_key = 0, *value = 0;
-    unsigned char key;
-    char *s;
-    int len;
-
-    if (self->read_func(self, &s, 1) < 0) return -1;
-    if (!( (len=self->stack->length) > 0 ))  return stackUnderflow();
-
-    key = (unsigned char)s[0];
-
-    if (!( py_key = PyInt_FromLong((long)key)))  return -1;
-    value=self->stack->data[len-1];
-    len=PyDict_SetItem(self->memo, py_key, value);
-    Py_DECREF(py_key);
-    return len;
-}
-
-
-static int
-load_long_binput(Unpicklerobject *self)
-{
-    PyObject *py_key = 0, *value = 0;
-    long key;
-    unsigned char c;
-    char *s;
-    int len;
-
-    if (self->read_func(self, &s, 4) < 0) return -1;
-    if (!( len=self->stack->length ))  return stackUnderflow();
-
-    c = (unsigned char)s[0];
-    key = (long)c;
-    c = (unsigned char)s[1];
-    key |= (long)c << 8;
-    c = (unsigned char)s[2];
-    key |= (long)c << 16;
-    c = (unsigned char)s[3];
-    key |= (long)c << 24;
-
-    if (!( py_key = PyInt_FromLong(key)))  return -1;
-    value=self->stack->data[len-1];
-    len=PyDict_SetItem(self->memo, py_key, value);
-    Py_DECREF(py_key);
-    return len;
-}
-
-
-static int
-do_append(Unpicklerobject *self, int  x)
-{
-    PyObject *value = 0, *list = 0, *append_method = 0;
-    int len, i;
-
-    len=self->stack->length;
-    if (!( len >= x && x > 0 ))  return stackUnderflow();
-    /* nothing to do */
-    if (len==x) return 0;
-
-    list=self->stack->data[x-1];
-
-    if (PyList_Check(list)) {
-        PyObject *slice;
-        int list_len;
-
-        slice=Pdata_popList(self->stack, x);
-        if (! slice) return -1;
-        list_len = PyList_GET_SIZE(list);
-        i=PyList_SetSlice(list, list_len, list_len, slice);
-        Py_DECREF(slice);
-        return i;
-    }
-    else {
-
-        if (!( append_method = PyObject_GetAttr(list, append_str)))
-            return -1;
-
-        for (i = x; i < len; i++) {
-            PyObject *junk;
-
-            value=self->stack->data[i];
-            junk=0;
-            ARG_TUP(self, value);
-            if (self->arg) {
-                junk = PyObject_Call(append_method, self->arg,
-                                     NULL);
-                FREE_ARG_TUP(self);
-            }
-            if (! junk) {
-                Pdata_clear(self->stack, i+1);
-                self->stack->length=x;
-                Py_DECREF(append_method);
-                return -1;
-            }
-            Py_DECREF(junk);
-        }
-        self->stack->length=x;
-        Py_DECREF(append_method);
-    }
-
-    return 0;
-}
-
-
-static int
-load_append(Unpicklerobject *self)
-{
-    return do_append(self, self->stack->length - 1);
-}
-
-
-static int
-load_appends(Unpicklerobject *self)
-{
-    return do_append(self, marker(self));
-}
-
-
-static int
-do_setitems(Unpicklerobject *self, int  x)
-{
-    PyObject *value = 0, *key = 0, *dict = 0;
-    int len, i, r=0;
-
-    if (!( (len=self->stack->length) >= x
-           && x > 0 ))  return stackUnderflow();
-
-    dict=self->stack->data[x-1];
-
-    for (i = x+1; i < len; i += 2) {
-        key  =self->stack->data[i-1];
-        value=self->stack->data[i  ];
-        if (PyObject_SetItem(dict, key, value) < 0) {
-            r=-1;
-            break;
-        }
-    }
-
-    Pdata_clear(self->stack, x);
-
-    return r;
-}
-
-
-static int
-load_setitem(Unpicklerobject *self)
-{
-    return do_setitems(self, self->stack->length - 2);
-}
-
-static int
-load_setitems(Unpicklerobject *self)
-{
-    return do_setitems(self, marker(self));
-}
-
-
-static int
-load_build(Unpicklerobject *self)
-{
-    PyObject *state, *inst, *slotstate;
-    PyObject *__setstate__;
-    PyObject *d_key, *d_value;
-    Py_ssize_t i;
-    int res = -1;
-
-    /* Stack is ... instance, state.  We want to leave instance at
-     * the stack top, possibly mutated via instance.__setstate__(state).
-     */
-    if (self->stack->length < 2)
-        return stackUnderflow();
-    PDATA_POP(self->stack, state);
-    if (state == NULL)
-        return -1;
-    inst = self->stack->data[self->stack->length - 1];
-
-    __setstate__ = PyObject_GetAttr(inst, __setstate___str);
-    if (__setstate__ != NULL) {
-        PyObject *junk = NULL;
-
-        /* The explicit __setstate__ is responsible for everything. */
-        ARG_TUP(self, state);
-        if (self->arg) {
-            junk = PyObject_Call(__setstate__, self->arg, NULL);
-            FREE_ARG_TUP(self);
-        }
-        Py_DECREF(__setstate__);
-        if (junk == NULL)
-            return -1;
-        Py_DECREF(junk);
-        return 0;
-    }
-    if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-        return -1;
-    PyErr_Clear();
-
-    /* A default __setstate__.  First see whether state embeds a
-     * slot state dict too (a proto 2 addition).
-     */
-    if (PyTuple_Check(state) && PyTuple_Size(state) == 2) {
-        PyObject *temp = state;
-        state = PyTuple_GET_ITEM(temp, 0);
-        slotstate = PyTuple_GET_ITEM(temp, 1);
-        Py_INCREF(state);
-        Py_INCREF(slotstate);
-        Py_DECREF(temp);
-    }
-    else
-        slotstate = NULL;
-
-    /* Set inst.__dict__ from the state dict (if any). */
-    if (state != Py_None) {
-        PyObject *dict;
-        if (! PyDict_Check(state)) {
-            PyErr_SetString(UnpicklingError, "state is not a "
-                            "dictionary");
-            goto finally;
-        }
-        dict = PyObject_GetAttr(inst, __dict___str);
-        if (dict == NULL)
-            goto finally;
-
-        i = 0;
-        while (PyDict_Next(state, &i, &d_key, &d_value)) {
-            /* normally the keys for instance attributes are
-               interned.  we should try to do that here. */
-            Py_INCREF(d_key);
-            if (PyString_CheckExact(d_key))
-                PyString_InternInPlace(&d_key);
-            if (PyObject_SetItem(dict, d_key, d_value) < 0) {
-                Py_DECREF(d_key);
-                goto finally;
-            }
-            Py_DECREF(d_key);
-        }
-        Py_DECREF(dict);
-    }
-
-    /* Also set instance attributes from the slotstate dict (if any). */
-    if (slotstate != NULL) {
-        if (! PyDict_Check(slotstate)) {
-            PyErr_SetString(UnpicklingError, "slot state is not "
-                            "a dictionary");
-            goto finally;
-        }
-        i = 0;
-        while (PyDict_Next(slotstate, &i, &d_key, &d_value)) {
-            if (PyObject_SetAttr(inst, d_key, d_value) < 0)
-                goto finally;
-        }
-    }
-    res = 0;
-
-  finally:
-    Py_DECREF(state);
-    Py_XDECREF(slotstate);
-    return res;
-}
-
-
-static int
-load_mark(Unpicklerobject *self)
-{
-    int s;
-
-    /* Note that we split the (pickle.py) stack into two stacks, an
-       object stack and a mark stack. Here we push a mark onto the
-       mark stack.
-    */
-
-    if ((self->num_marks + 1) >= self->marks_size) {
-        int *marks;
-        s=self->marks_size+20;
-        if (s <= self->num_marks) s=self->num_marks + 1;
-        if (self->marks == NULL)
-            marks=(int *)malloc(s * sizeof(int));
-        else
-            marks=(int *)realloc(self->marks,
-                                       s * sizeof(int));
-        if (!marks) {
-            PyErr_NoMemory();
-            return -1;
-        }
-        self->marks = marks;
-        self->marks_size = s;
-    }
-
-    self->marks[self->num_marks++] = self->stack->length;
-
-    return 0;
-}
-
-static int
-load_reduce(Unpicklerobject *self)
-{
-    PyObject *callable = 0, *arg_tup = 0, *ob = 0;
-
-    PDATA_POP(self->stack, arg_tup);
-    if (! arg_tup) return -1;
-    PDATA_POP(self->stack, callable);
-    if (callable) {
-        ob = Instance_New(callable, arg_tup);
-        Py_DECREF(callable);
-    }
-    Py_DECREF(arg_tup);
-
-    if (! ob) return -1;
-
-    PDATA_PUSH(self->stack, ob, -1);
-    return 0;
-}
-
-/* Just raises an error if we don't know the protocol specified.  PROTO
- * is the first opcode for protocols >= 2.
- */
-static int
-load_proto(Unpicklerobject *self)
-{
-    int i;
-    char *protobyte;
-
-    i = self->read_func(self, &protobyte, 1);
-    if (i < 0)
-        return -1;
-
-    i = calc_binint(protobyte, 1);
-    /* No point checking for < 0, since calc_binint returns an unsigned
-     * int when chewing on 1 byte.
-     */
-    assert(i >= 0);
-    if (i <= HIGHEST_PROTOCOL)
-        return 0;
-
-    PyErr_Format(PyExc_ValueError, "unsupported pickle protocol: %d", i);
-    return -1;
-}
-
-static PyObject *
-load(Unpicklerobject *self)
-{
-    PyObject *err = 0, *val = 0;
-    char *s;
-
-    self->num_marks = 0;
-    if (self->stack->length) Pdata_clear(self->stack, 0);
-
-    while (1) {
-        if (self->read_func(self, &s, 1) < 0)
-            break;
-
-        switch (s[0]) {
-        case NONE:
-            if (load_none(self) < 0)
-                break;
-            continue;
-
-        case BININT:
-            if (load_binint(self) < 0)
-                break;
-            continue;
-
-        case BININT1:
-            if (load_binint1(self) < 0)
-                break;
-            continue;
-
-        case BININT2:
-            if (load_binint2(self) < 0)
-                break;
-            continue;
-
-        case INT:
-            if (load_int(self) < 0)
-                break;
-            continue;
-
-        case LONG:
-            if (load_long(self) < 0)
-                break;
-            continue;
-
-        case LONG1:
-            if (load_counted_long(self, 1) < 0)
-                break;
-            continue;
-
-        case LONG4:
-            if (load_counted_long(self, 4) < 0)
-                break;
-            continue;
-
-        case FLOAT:
-            if (load_float(self) < 0)
-                break;
-            continue;
-
-        case BINFLOAT:
-            if (load_binfloat(self) < 0)
-                break;
-            continue;
-
-        case BINSTRING:
-            if (load_binstring(self) < 0)
-                break;
-            continue;
-
-        case SHORT_BINSTRING:
-            if (load_short_binstring(self) < 0)
-                break;
-            continue;
-
-        case STRING:
-            if (load_string(self) < 0)
-                break;
-            continue;
-
-#ifdef Py_USING_UNICODE
-        case UNICODE:
-            if (load_unicode(self) < 0)
-                break;
-            continue;
-
-        case BINUNICODE:
-            if (load_binunicode(self) < 0)
-                break;
-            continue;
-#endif
-
-        case EMPTY_TUPLE:
-            if (load_counted_tuple(self, 0) < 0)
-                break;
-            continue;
-
-        case TUPLE1:
-            if (load_counted_tuple(self, 1) < 0)
-                break;
-            continue;
-
-        case TUPLE2:
-            if (load_counted_tuple(self, 2) < 0)
-                break;
-            continue;
-
-        case TUPLE3:
-            if (load_counted_tuple(self, 3) < 0)
-                break;
-            continue;
-
-        case TUPLE:
-            if (load_tuple(self) < 0)
-                break;
-            continue;
-
-        case EMPTY_LIST:
-            if (load_empty_list(self) < 0)
-                break;
-            continue;
-
-        case LIST:
-            if (load_list(self) < 0)
-                break;
-            continue;
-
-        case EMPTY_DICT:
-            if (load_empty_dict(self) < 0)
-                break;
-            continue;
-
-        case DICT:
-            if (load_dict(self) < 0)
-                break;
-            continue;
-
-        case OBJ:
-            if (load_obj(self) < 0)
-                break;
-            continue;
-
-        case INST:
-            if (load_inst(self) < 0)
-                break;
-            continue;
-
-        case NEWOBJ:
-            if (load_newobj(self) < 0)
-                break;
-            continue;
-
-        case GLOBAL:
-            if (load_global(self) < 0)
-                break;
-            continue;
-
-        case APPEND:
-            if (load_append(self) < 0)
-                break;
-            continue;
-
-        case APPENDS:
-            if (load_appends(self) < 0)
-                break;
-            continue;
-
-        case BUILD:
-            if (load_build(self) < 0)
-                break;
-            continue;
-
-        case DUP:
-            if (load_dup(self) < 0)
-                break;
-            continue;
-
-        case BINGET:
-            if (load_binget(self) < 0)
-                break;
-            continue;
-
-        case LONG_BINGET:
-            if (load_long_binget(self) < 0)
-                break;
-            continue;
-
-        case GET:
-            if (load_get(self) < 0)
-                break;
-            continue;
-
-        case EXT1:
-            if (load_extension(self, 1) < 0)
-                break;
-            continue;
-
-        case EXT2:
-            if (load_extension(self, 2) < 0)
-                break;
-            continue;
-
-        case EXT4:
-            if (load_extension(self, 4) < 0)
-                break;
-            continue;
-        case MARK:
-            if (load_mark(self) < 0)
-                break;
-            continue;
-
-        case BINPUT:
-            if (load_binput(self) < 0)
-                break;
-            continue;
-
-        case LONG_BINPUT:
-            if (load_long_binput(self) < 0)
-                break;
-            continue;
-
-        case PUT:
-            if (load_put(self) < 0)
-                break;
-            continue;
-
-        case POP:
-            if (load_pop(self) < 0)
-                break;
-            continue;
-
-        case POP_MARK:
-            if (load_pop_mark(self) < 0)
-                break;
-            continue;
-
-        case SETITEM:
-            if (load_setitem(self) < 0)
-                break;
-            continue;
-
-        case SETITEMS:
-            if (load_setitems(self) < 0)
-                break;
-            continue;
-
-        case STOP:
-            break;
-
-        case PERSID:
-            if (load_persid(self) < 0)
-                break;
-            continue;
-
-        case BINPERSID:
-            if (load_binpersid(self) < 0)
-                break;
-            continue;
-
-        case REDUCE:
-            if (load_reduce(self) < 0)
-                break;
-            continue;
-
-        case PROTO:
-            if (load_proto(self) < 0)
-                break;
-            continue;
-
-        case NEWTRUE:
-            if (load_bool(self, Py_True) < 0)
-                break;
-            continue;
-
-        case NEWFALSE:
-            if (load_bool(self, Py_False) < 0)
-                break;
-            continue;
-
-        case '\0':
-            /* end of file */
-            PyErr_SetNone(PyExc_EOFError);
-            break;
-
-        default:
-            cPickle_ErrFormat(UnpicklingError,
-                              "invalid load key, '%s'.",
-                              "c", s[0]);
-            return NULL;
-        }
-
-        break;
-    }
-
-    if ((err = PyErr_Occurred())) {
-        if (err == PyExc_EOFError) {
-            PyErr_SetNone(PyExc_EOFError);
-        }
-        return NULL;
-    }
-
-    PDATA_POP(self->stack, val);
-    return val;
-}
-
-
-/* No-load functions to support noload, which is used to
-   find persistent references. */
-
-static int
-noload_obj(Unpicklerobject *self)
-{
-    int i;
-
-    if ((i = marker(self)) < 0) return -1;
-    return Pdata_clear(self->stack, i+1);
-}
-
-
-static int
-noload_inst(Unpicklerobject *self)
-{
-    int i;
-    char *s;
-
-    if ((i = marker(self)) < 0) return -1;
-    Pdata_clear(self->stack, i);
-    if (self->readline_func(self, &s) < 0) return -1;
-    if (self->readline_func(self, &s) < 0) return -1;
-    PDATA_APPEND(self->stack, Py_None, -1);
-    return 0;
-}
-
-static int
-noload_newobj(Unpicklerobject *self)
-{
-    PyObject *obj;
-
-    PDATA_POP(self->stack, obj);        /* pop argtuple */
-    if (obj == NULL) return -1;
-    Py_DECREF(obj);
-
-    PDATA_POP(self->stack, obj);        /* pop cls */
-    if (obj == NULL) return -1;
-    Py_DECREF(obj);
-
-    PDATA_APPEND(self->stack, Py_None, -1);
-    return 0;
-}
-
-static int
-noload_global(Unpicklerobject *self)
-{
-    char *s;
-
-    if (self->readline_func(self, &s) < 0) return -1;
-    if (self->readline_func(self, &s) < 0) return -1;
-    PDATA_APPEND(self->stack, Py_None,-1);
-    return 0;
-}
-
-static int
-noload_reduce(Unpicklerobject *self)
-{
-
-    if (self->stack->length < 2) return stackUnderflow();
-    Pdata_clear(self->stack, self->stack->length-2);
-    PDATA_APPEND(self->stack, Py_None,-1);
-    return 0;
-}
-
-static int
-noload_build(Unpicklerobject *self) {
-
-  if (self->stack->length < 1) return stackUnderflow();
-  Pdata_clear(self->stack, self->stack->length-1);
-  return 0;
-}
-
-static int
-noload_extension(Unpicklerobject *self, int nbytes)
-{
-    char *codebytes;
-
-    assert(nbytes == 1 || nbytes == 2 || nbytes == 4);
-    if (self->read_func(self, &codebytes, nbytes) < 0) return -1;
-    PDATA_APPEND(self->stack, Py_None, -1);
-    return 0;
-}
-
-static int
-noload_append(Unpicklerobject *self)
-{
-    return Pdata_clear(self->stack, self->stack->length - 1);
-}
-
-static int
-noload_appends(Unpicklerobject *self)
-{
-    int i;
-    if ((i = marker(self)) < 0) return -1;
-    return Pdata_clear(self->stack, i);
-}
-
-static int
-noload_setitem(Unpicklerobject *self)
-{
-    return Pdata_clear(self->stack, self->stack->length - 2);
-}
-
-static int
-noload_setitems(Unpicklerobject *self)
-{
-    int i;
-    if ((i = marker(self)) < 0) return -1;
-    return Pdata_clear(self->stack, i);
-}
-
-static PyObject *
-noload(Unpicklerobject *self)
-{
-    PyObject *err = 0, *val = 0;
-    char *s;
-
-    self->num_marks = 0;
-    Pdata_clear(self->stack, 0);
-
-    while (1) {
-        if (self->read_func(self, &s, 1) < 0)
-            break;
-
-        switch (s[0]) {
-        case NONE:
-            if (load_none(self) < 0)
-                break;
-            continue;
-
-        case BININT:
-            if (load_binint(self) < 0)
-                break;
-            continue;
-
-        case BININT1:
-            if (load_binint1(self) < 0)
-                break;
-            continue;
-
-        case BININT2:
-            if (load_binint2(self) < 0)
-                break;
-            continue;
-
-        case INT:
-            if (load_int(self) < 0)
-                break;
-            continue;
-
-        case LONG:
-            if (load_long(self) < 0)
-                break;
-            continue;
-
-        case LONG1:
-            if (load_counted_long(self, 1) < 0)
-                break;
-            continue;
-
-        case LONG4:
-            if (load_counted_long(self, 4) < 0)
-                break;
-            continue;
-
-        case FLOAT:
-            if (load_float(self) < 0)
-                break;
-            continue;
-
-        case BINFLOAT:
-            if (load_binfloat(self) < 0)
-                break;
-            continue;
-
-        case BINSTRING:
-            if (load_binstring(self) < 0)
-                break;
-            continue;
-
-        case SHORT_BINSTRING:
-            if (load_short_binstring(self) < 0)
-                break;
-            continue;
-
-        case STRING:
-            if (load_string(self) < 0)
-                break;
-            continue;
-
-#ifdef Py_USING_UNICODE
-        case UNICODE:
-            if (load_unicode(self) < 0)
-                break;
-            continue;
-
-        case BINUNICODE:
-            if (load_binunicode(self) < 0)
-                break;
-            continue;
-#endif
-
-        case EMPTY_TUPLE:
-            if (load_counted_tuple(self, 0) < 0)
-                break;
-            continue;
-
-        case TUPLE1:
-            if (load_counted_tuple(self, 1) < 0)
-                break;
-            continue;
-
-        case TUPLE2:
-            if (load_counted_tuple(self, 2) < 0)
-                break;
-            continue;
-
-        case TUPLE3:
-            if (load_counted_tuple(self, 3) < 0)
-                break;
-            continue;
-
-        case TUPLE:
-            if (load_tuple(self) < 0)
-                break;
-            continue;
-
-        case EMPTY_LIST:
-            if (load_empty_list(self) < 0)
-                break;
-            continue;
-
-        case LIST:
-            if (load_list(self) < 0)
-                break;
-            continue;
-
-        case EMPTY_DICT:
-            if (load_empty_dict(self) < 0)
-                break;
-            continue;
-
-        case DICT:
-            if (load_dict(self) < 0)
-                break;
-            continue;
-
-        case OBJ:
-            if (noload_obj(self) < 0)
-                break;
-            continue;
-
-        case INST:
-            if (noload_inst(self) < 0)
-                break;
-            continue;
-
-        case NEWOBJ:
-            if (noload_newobj(self) < 0)
-                break;
-            continue;
-
-        case GLOBAL:
-            if (noload_global(self) < 0)
-                break;
-            continue;
-
-        case APPEND:
-            if (noload_append(self) < 0)
-                break;
-            continue;
-
-        case APPENDS:
-            if (noload_appends(self) < 0)
-                break;
-            continue;
-
-        case BUILD:
-            if (noload_build(self) < 0)
-                break;
-            continue;
-
-        case DUP:
-            if (load_dup(self) < 0)
-                break;
-            continue;
-
-        case BINGET:
-            if (load_binget(self) < 0)
-                break;
-            continue;
-
-        case LONG_BINGET:
-            if (load_long_binget(self) < 0)
-                break;
-            continue;
-
-        case GET:
-            if (load_get(self) < 0)
-                break;
-            continue;
-
-        case EXT1:
-            if (noload_extension(self, 1) < 0)
-                break;
-            continue;
-
-        case EXT2:
-            if (noload_extension(self, 2) < 0)
-                break;
-            continue;
-
-        case EXT4:
-            if (noload_extension(self, 4) < 0)
-                break;
-            continue;
-
-        case MARK:
-            if (load_mark(self) < 0)
-                break;
-            continue;
-
-        case BINPUT:
-            if (load_binput(self) < 0)
-                break;
-            continue;
-
-        case LONG_BINPUT:
-            if (load_long_binput(self) < 0)
-                break;
-            continue;
-
-        case PUT:
-            if (load_put(self) < 0)
-                break;
-            continue;
-
-        case POP:
-            if (load_pop(self) < 0)
-                break;
-            continue;
-
-        case POP_MARK:
-            if (load_pop_mark(self) < 0)
-                break;
-            continue;
-
-        case SETITEM:
-            if (noload_setitem(self) < 0)
-                break;
-            continue;
-
-        case SETITEMS:
-            if (noload_setitems(self) < 0)
-                break;
-            continue;
-
-        case STOP:
-            break;
-
-        case PERSID:
-            if (load_persid(self) < 0)
-                break;
-            continue;
-
-        case BINPERSID:
-            if (load_binpersid(self) < 0)
-                break;
-            continue;
-
-        case REDUCE:
-            if (noload_reduce(self) < 0)
-                break;
-            continue;
-
-        case PROTO:
-            if (load_proto(self) < 0)
-                break;
-            continue;
-
-        case NEWTRUE:
-            if (load_bool(self, Py_True) < 0)
-                break;
-            continue;
-
-        case NEWFALSE:
-            if (load_bool(self, Py_False) < 0)
-                break;
-            continue;
-        default:
-            cPickle_ErrFormat(UnpicklingError,
-                              "invalid load key, '%s'.",
-                              "c", s[0]);
-            return NULL;
-        }
-
-        break;
-    }
-
-    if ((err = PyErr_Occurred())) {
-        if (err == PyExc_EOFError) {
-            PyErr_SetNone(PyExc_EOFError);
-        }
-        return NULL;
-    }
-
-    PDATA_POP(self->stack, val);
-    return val;
-}
-
-
-static PyObject *
-Unpickler_load(Unpicklerobject *self, PyObject *unused)
-{
-    return load(self);
-}
-
-static PyObject *
-Unpickler_noload(Unpicklerobject *self, PyObject *unused)
-{
-    return noload(self);
-}
-
-
-static struct PyMethodDef Unpickler_methods[] = {
-  {"load",         (PyCFunction)Unpickler_load,   METH_NOARGS,
-   PyDoc_STR("load() -- Load a pickle")
-  },
-  {"noload",         (PyCFunction)Unpickler_noload,   METH_NOARGS,
-   PyDoc_STR(
-   "noload() -- not load a pickle, but go through most of the motions\n"
-   "\n"
-   "This function can be used to read past a pickle without instantiating\n"
-   "any objects or importing any modules.  It can also be used to find all\n"
-   "persistent references without instantiating any objects or importing\n"
-   "any modules.\n")
-  },
-  {NULL,              NULL}           /* sentinel */
-};
-
-
-static Unpicklerobject *
-newUnpicklerobject(PyObject *f)
-{
-    Unpicklerobject *self;
-
-    if (!( self = PyObject_GC_New(Unpicklerobject, &Unpicklertype)))
-        return NULL;
-
-    self->file = NULL;
-    self->arg = NULL;
-    self->stack = (Pdata*)Pdata_New();
-    self->pers_func = NULL;
-    self->last_string = NULL;
-    self->marks = NULL;
-    self->num_marks = 0;
-    self->marks_size = 0;
-    self->buf_size = 0;
-    self->read = NULL;
-    self->readline = NULL;
-    self->find_class = NULL;
-
-    if (!( self->memo = PyDict_New()))
-        goto err;
-
-    if (!self->stack)
-        goto err;
-
-    Py_INCREF(f);
-    self->file = f;
-
-    /* Set read, readline based on type of f */
-    if (PyFile_Check(f)) {
-        self->fp = PyFile_AsFile(f);
-        if (self->fp == NULL) {
-            PyErr_SetString(PyExc_ValueError,
-                            "I/O operation on closed file");
-            goto err;
-        }
-        self->read_func = read_file;
-        self->readline_func = readline_file;
-    }
-    else if (PycStringIO_InputCheck(f)) {
-        self->fp = NULL;
-        self->read_func = read_cStringIO;
-        self->readline_func = readline_cStringIO;
-    }
-    else {
-
-        self->fp = NULL;
-        self->read_func = read_other;
-        self->readline_func = readline_other;
-
-        if (!( (self->readline = PyObject_GetAttr(f, readline_str)) &&
-               (self->read = PyObject_GetAttr(f, read_str))))  {
-            PyErr_Clear();
-            PyErr_SetString( PyExc_TypeError,
-                             "argument must have 'read' and "
-                             "'readline' attributes" );
-            goto err;
-        }
-    }
-    PyObject_GC_Track(self);
-
-    return self;
-
-  err:
-    Py_DECREF((PyObject *)self);
-    return NULL;
-}
-
-
-static PyObject *
-get_Unpickler(PyObject *self, PyObject *file)
-{
-    return (PyObject *)newUnpicklerobject(file);
-}
-
-
-static void
-Unpickler_dealloc(Unpicklerobject *self)
-{
-    PyObject_GC_UnTrack((PyObject *)self);
-    Py_XDECREF(self->readline);
-    Py_XDECREF(self->read);
-    Py_XDECREF(self->file);
-    Py_XDECREF(self->memo);
-    Py_XDECREF(self->stack);
-    Py_XDECREF(self->pers_func);
-    Py_XDECREF(self->arg);
-    Py_XDECREF(self->last_string);
-    Py_XDECREF(self->find_class);
-
-    if (self->marks) {
-        free(self->marks);
-    }
-
-    if (self->buf_size) {
-        free(self->buf);
-    }
-
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-static int
-Unpickler_traverse(Unpicklerobject *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->readline);
-    Py_VISIT(self->read);
-    Py_VISIT(self->file);
-    Py_VISIT(self->memo);
-    Py_VISIT(self->stack);
-    Py_VISIT(self->pers_func);
-    Py_VISIT(self->arg);
-    Py_VISIT(self->last_string);
-    Py_VISIT(self->find_class);
-    return 0;
-}
-
-static int
-Unpickler_clear(Unpicklerobject *self)
-{
-    Py_CLEAR(self->readline);
-    Py_CLEAR(self->read);
-    Py_CLEAR(self->file);
-    Py_CLEAR(self->memo);
-    Py_CLEAR(self->stack);
-    Py_CLEAR(self->pers_func);
-    Py_CLEAR(self->arg);
-    Py_CLEAR(self->last_string);
-    Py_CLEAR(self->find_class);
-    return 0;
-}
-
-static PyObject *
-Unpickler_getattr(Unpicklerobject *self, char *name)
-{
-    if (!strcmp(name, "persistent_load")) {
-        if (!self->pers_func) {
-            PyErr_SetString(PyExc_AttributeError, name);
-            return NULL;
-        }
-
-        Py_INCREF(self->pers_func);
-        return self->pers_func;
-    }
-
-    if (!strcmp(name, "find_global")) {
-        if (!self->find_class) {
-            PyErr_SetString(PyExc_AttributeError, name);
-            return NULL;
-        }
-
-        Py_INCREF(self->find_class);
-        return self->find_class;
-    }
-
-    if (!strcmp(name, "memo")) {
-        if (!self->memo) {
-            PyErr_SetString(PyExc_AttributeError, name);
-            return NULL;
-        }
-
-        Py_INCREF(self->memo);
-        return self->memo;
-    }
-
-    if (!strcmp(name, "UnpicklingError")) {
-        Py_INCREF(UnpicklingError);
-        return UnpicklingError;
-    }
-
-    return Py_FindMethod(Unpickler_methods, (PyObject *)self, name);
-}
-
-
-static int
-Unpickler_setattr(Unpicklerobject *self, char *name, PyObject *value)
-{
-
-    if (!strcmp(name, "persistent_load")) {
-        Py_XDECREF(self->pers_func);
-        self->pers_func = value;
-        Py_XINCREF(value);
-        return 0;
-    }
-
-    if (!strcmp(name, "find_global")) {
-        Py_XDECREF(self->find_class);
-        self->find_class = value;
-        Py_XINCREF(value);
-        return 0;
-    }
-
-    if (! value) {
-        PyErr_SetString(PyExc_TypeError,
-                        "attribute deletion is not supported");
-        return -1;
-    }
-
-    if (strcmp(name, "memo") == 0) {
-        if (!PyDict_Check(value)) {
-            PyErr_SetString(PyExc_TypeError,
-                            "memo must be a dictionary");
-            return -1;
-        }
-        Py_XDECREF(self->memo);
-        self->memo = value;
-        Py_INCREF(value);
-        return 0;
-    }
-
-    PyErr_SetString(PyExc_AttributeError, name);
-    return -1;
-}
-
-/* ---------------------------------------------------------------------------
- * Module-level functions.
- */
-
-/* dump(obj, file, protocol=0). */
-static PyObject *
-cpm_dump(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    static char *kwlist[] = {"obj", "file", "protocol", NULL};
-    PyObject *ob, *file, *res = NULL;
-    Picklerobject *pickler = 0;
-    int proto = 0;
-
-    if (!( PyArg_ParseTupleAndKeywords(args, kwds, "OO|i", kwlist,
-               &ob, &file, &proto)))
-        goto finally;
-
-    if (!( pickler = newPicklerobject(file, proto)))
-        goto finally;
-
-    if (dump(pickler, ob) < 0)
-        goto finally;
-
-    Py_INCREF(Py_None);
-    res = Py_None;
-
-  finally:
-    Py_XDECREF(pickler);
-
-    return res;
-}
-
-
-/* dumps(obj, protocol=0). */
-static PyObject *
-cpm_dumps(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    static char *kwlist[] = {"obj", "protocol", NULL};
-    PyObject *ob, *file = 0, *res = NULL;
-    Picklerobject *pickler = 0;
-    int proto = 0;
-
-    if (!( PyArg_ParseTupleAndKeywords(args, kwds, "O|i:dumps", kwlist,
-               &ob, &proto)))
-        goto finally;
-
-    if (!( file = PycStringIO->NewOutput(128)))
-        goto finally;
-
-    if (!( pickler = newPicklerobject(file, proto)))
-        goto finally;
-
-    if (dump(pickler, ob) < 0)
-        goto finally;
-
-    res = PycStringIO->cgetvalue(file);
-
-  finally:
-    Py_XDECREF(pickler);
-    Py_XDECREF(file);
-
-    return res;
-}
-
-
-/* load(fileobj). */
-static PyObject *
-cpm_load(PyObject *self, PyObject *ob)
-{
-    Unpicklerobject *unpickler = 0;
-    PyObject *res = NULL;
-
-    if (!( unpickler = newUnpicklerobject(ob)))
-        goto finally;
-
-    res = load(unpickler);
-
-  finally:
-    Py_XDECREF(unpickler);
-
-    return res;
-}
-
-
-/* loads(string) */
-static PyObject *
-cpm_loads(PyObject *self, PyObject *args)
-{
-    PyObject *ob, *file = 0, *res = NULL;
-    Unpicklerobject *unpickler = 0;
-
-    if (!( PyArg_ParseTuple(args, "S:loads", &ob)))
-        goto finally;
-
-    if (!( file = PycStringIO->NewInput(ob)))
-        goto finally;
-
-    if (!( unpickler = newUnpicklerobject(file)))
-        goto finally;
-
-    res = load(unpickler);
-
-  finally:
-    Py_XDECREF(file);
-    Py_XDECREF(unpickler);
-
-    return res;
-}
-
-
-PyDoc_STRVAR(Unpicklertype__doc__,
-"Objects that know how to unpickle");
-
-static PyTypeObject Unpicklertype = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "cPickle.Unpickler",                 /*tp_name*/
-    sizeof(Unpicklerobject),             /*tp_basicsize*/
-    0,
-    (destructor)Unpickler_dealloc,      /* tp_dealloc */
-    0,                                  /* tp_print */
-    (getattrfunc)Unpickler_getattr,     /* tp_getattr */
-    (setattrfunc)Unpickler_setattr,     /* 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 */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC,
-    Unpicklertype__doc__,               /* tp_doc */
-    (traverseproc)Unpickler_traverse,   /* tp_traverse */
-    (inquiry)Unpickler_clear,           /* tp_clear */
-};
-
-static struct PyMethodDef cPickle_methods[] = {
-  {"dump",         (PyCFunction)cpm_dump,         METH_VARARGS | METH_KEYWORDS,
-   PyDoc_STR("dump(obj, file, protocol=0) -- "
-   "Write an object in pickle format to the given file.\n"
-   "\n"
-   "See the Pickler docstring for the meaning of optional argument proto.")
-  },
-
-  {"dumps",        (PyCFunction)cpm_dumps,        METH_VARARGS | METH_KEYWORDS,
-   PyDoc_STR("dumps(obj, protocol=0) -- "
-   "Return a string containing an object in pickle format.\n"
-   "\n"
-   "See the Pickler docstring for the meaning of optional argument proto.")
-  },
-
-  {"load",         (PyCFunction)cpm_load,         METH_O,
-   PyDoc_STR("load(file) -- Load a pickle from the given file")},
-
-  {"loads",        (PyCFunction)cpm_loads,        METH_VARARGS,
-   PyDoc_STR("loads(string) -- Load a pickle from the given string")},
-
-  {"Pickler",      (PyCFunction)get_Pickler,      METH_VARARGS | METH_KEYWORDS,
-   PyDoc_STR("Pickler(file, protocol=0) -- Create a pickler.\n"
-   "\n"
-   "This takes a file-like object for writing a pickle data stream.\n"
-   "The optional proto argument tells the pickler to use the given\n"
-   "protocol; supported protocols are 0, 1, 2.  The default\n"
-   "protocol is 0, to be backwards compatible.  (Protocol 0 is the\n"
-   "only protocol that can be written to a file opened in text\n"
-   "mode and read back successfully.  When using a protocol higher\n"
-   "than 0, make sure the file is opened in binary mode, both when\n"
-   "pickling and unpickling.)\n"
-   "\n"
-   "Protocol 1 is more efficient than protocol 0; protocol 2 is\n"
-   "more efficient than protocol 1.\n"
-   "\n"
-   "Specifying a negative protocol version selects the highest\n"
-   "protocol version supported.  The higher the protocol used, the\n"
-   "more recent the version of Python needed to read the pickle\n"
-   "produced.\n"
-   "\n"
-   "The file parameter must have a write() method that accepts a single\n"
-   "string argument.  It can thus be an open file object, a StringIO\n"
-   "object, or any other custom object that meets this interface.\n")
-  },
-
-  {"Unpickler",    (PyCFunction)get_Unpickler,    METH_O,
-   PyDoc_STR("Unpickler(file) -- Create an unpickler.")},
-
-  { NULL, NULL }
-};
-
-static int
-init_stuff(PyObject *module_dict)
-{
-    PyObject *copyreg, *t, *r;
-
-#define INIT_STR(S) if (!( S ## _str=PyString_InternFromString(#S)))  return -1;
-
-    if (PyType_Ready(&Unpicklertype) < 0)
-        return -1;
-    if (PyType_Ready(&Picklertype) < 0)
-        return -1;
-
-    INIT_STR(__class__);
-    INIT_STR(__getinitargs__);
-    INIT_STR(__dict__);
-    INIT_STR(__getstate__);
-    INIT_STR(__setstate__);
-    INIT_STR(__name__);
-    INIT_STR(__main__);
-    INIT_STR(__reduce__);
-    INIT_STR(__reduce_ex__);
-    INIT_STR(write);
-    INIT_STR(append);
-    INIT_STR(read);
-    INIT_STR(readline);
-    INIT_STR(dispatch_table);
-
-    if (!( copyreg = PyImport_ImportModule("copy_reg")))
-        return -1;
-
-    /* This is special because we want to use a different
-       one in restricted mode. */
-    dispatch_table = PyObject_GetAttr(copyreg, dispatch_table_str);
-    if (!dispatch_table) return -1;
-
-    extension_registry = PyObject_GetAttrString(copyreg,
-                            "_extension_registry");
-    if (!extension_registry) return -1;
-
-    inverted_registry = PyObject_GetAttrString(copyreg,
-                            "_inverted_registry");
-    if (!inverted_registry) return -1;
-
-    extension_cache = PyObject_GetAttrString(copyreg,
-                            "_extension_cache");
-    if (!extension_cache) return -1;
-
-    Py_DECREF(copyreg);
-
-    if (!(empty_tuple = PyTuple_New(0)))
-        return -1;
-
-    two_tuple = PyTuple_New(2);
-    if (two_tuple == NULL)
-        return -1;
-    /* We use this temp container with no regard to refcounts, or to
-     * keeping containees alive.  Exempt from GC, because we don't
-     * want anything looking at two_tuple() by magic.
-     */
-    PyObject_GC_UnTrack(two_tuple);
-
-    /* Ugh */
-    if (!( t=PyImport_ImportModule("__builtin__")))  return -1;
-    if (PyDict_SetItemString(module_dict, "__builtins__", t) < 0)
-        return -1;
-
-    if (!( t=PyDict_New()))  return -1;
-    if (!( r=PyRun_String(
-                   "def __str__(self):\n"
-                   "  return self.args and ('%s' % self.args[0]) or '(what)'\n",
-                   Py_file_input,
-                   module_dict, t)  ))  return -1;
-    Py_DECREF(r);
-
-    PickleError = PyErr_NewException("cPickle.PickleError", NULL, t);
-    if (!PickleError)
-        return -1;
-
-    Py_DECREF(t);
-
-    PicklingError = PyErr_NewException("cPickle.PicklingError",
-                                       PickleError, NULL);
-    if (!PicklingError)
-        return -1;
-
-    if (!( t=PyDict_New()))  return -1;
-    if (!( r=PyRun_String(
-                   "def __str__(self):\n"
-                   "  a=self.args\n"
-                   "  a=a and type(a[0]) or '(what)'\n"
-                   "  return 'Cannot pickle %s objects' % a\n"
-                   , Py_file_input,
-                   module_dict, t)  ))  return -1;
-    Py_DECREF(r);
-
-    if (!( UnpickleableError = PyErr_NewException(
-                   "cPickle.UnpickleableError", PicklingError, t)))
-        return -1;
-
-    Py_DECREF(t);
-
-    if (!( UnpicklingError = PyErr_NewException("cPickle.UnpicklingError",
-                                                PickleError, NULL)))
-        return -1;
-
-    if (!( BadPickleGet = PyErr_NewException("cPickle.BadPickleGet",
-                                             UnpicklingError, NULL)))
-        return -1;
-
-    if (PyDict_SetItemString(module_dict, "PickleError",
-                             PickleError) < 0)
-        return -1;
-
-    if (PyDict_SetItemString(module_dict, "PicklingError",
-                             PicklingError) < 0)
-        return -1;
-
-    if (PyDict_SetItemString(module_dict, "UnpicklingError",
-                             UnpicklingError) < 0)
-        return -1;
-
-    if (PyDict_SetItemString(module_dict, "UnpickleableError",
-                             UnpickleableError) < 0)
-        return -1;
-
-    if (PyDict_SetItemString(module_dict, "BadPickleGet",
-                             BadPickleGet) < 0)
-        return -1;
-
-    PycString_IMPORT;
-
-    return 0;
-}
-
-#ifndef PyMODINIT_FUNC  /* declarations for DLL import/export */
-#define PyMODINIT_FUNC void
-#endif
-PyMODINIT_FUNC
-initcPickle(void)
-{
-    PyObject *m, *d, *di, *v, *k;
-    Py_ssize_t i;
-    char *rev = "1.71";         /* XXX when does this change? */
-    PyObject *format_version;
-    PyObject *compatible_formats;
-
-    Py_TYPE(&Picklertype) = &PyType_Type;
-    Py_TYPE(&Unpicklertype) = &PyType_Type;
-    Py_TYPE(&PdataType) = &PyType_Type;
-
-    /* Initialize some pieces. We need to do this before module creation,
-     * so we're forced to use a temporary dictionary. :(
-     */
-    di = PyDict_New();
-    if (!di) return;
-    if (init_stuff(di) < 0) return;
-
-    /* Create the module and add the functions */
-    m = Py_InitModule4("cPickle", cPickle_methods,
-                       cPickle_module_documentation,
-                       (PyObject*)NULL,PYTHON_API_VERSION);
-    if (m == NULL)
-        return;
-
-    /* Add some symbolic constants to the module */
-    d = PyModule_GetDict(m);
-    v = PyString_FromString(rev);
-    PyDict_SetItemString(d, "__version__", v);
-    Py_XDECREF(v);
-
-    /* Copy data from di. Waaa. */
-    for (i=0; PyDict_Next(di, &i, &k, &v); ) {
-        if (PyObject_SetItem(d, k, v) < 0) {
-            Py_DECREF(di);
-            return;
-        }
-    }
-    Py_DECREF(di);
-
-    i = PyModule_AddIntConstant(m, "HIGHEST_PROTOCOL", HIGHEST_PROTOCOL);
-    if (i < 0)
-        return;
-
-    /* These are purely informational; no code uses them. */
-    /* File format version we write. */
-    format_version = PyString_FromString("2.0");
-    /* Format versions we can read. */
-    compatible_formats = Py_BuildValue("[sssss]",
-        "1.0",          /* Original protocol 0 */
-        "1.1",          /* Protocol 0 + INST */
-        "1.2",          /* Original protocol 1 */
-        "1.3",          /* Protocol 1 + BINFLOAT */
-        "2.0");         /* Original protocol 2 */
-    PyDict_SetItemString(d, "format_version", format_version);
-    PyDict_SetItemString(d, "compatible_formats", compatible_formats);
-    Py_XDECREF(format_version);
-    Py_XDECREF(compatible_formats);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cStringIO.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/cStringIO.c
deleted file mode 100644
index cc1aa83..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cStringIO.c
+++ /dev/null
@@ -1,752 +0,0 @@
-
-#include "Python.h"
-#include "import.h"
-#include "cStringIO.h"
-#include "structmember.h"
-
-PyDoc_STRVAR(cStringIO_module_documentation,
-"A simple fast partial StringIO replacement.\n"
-"\n"
-"This module provides a simple useful replacement for\n"
-"the StringIO module that is written in C.  It does not provide the\n"
-"full generality of StringIO, but it provides enough for most\n"
-"applications and is especially useful in conjunction with the\n"
-"pickle module.\n"
-"\n"
-"Usage:\n"
-"\n"
-"  from cStringIO import StringIO\n"
-"\n"
-"  an_output_stream=StringIO()\n"
-"  an_output_stream.write(some_stuff)\n"
-"  ...\n"
-"  value=an_output_stream.getvalue()\n"
-"\n"
-"  an_input_stream=StringIO(a_string)\n"
-"  spam=an_input_stream.readline()\n"
-"  spam=an_input_stream.read(5)\n"
-"  an_input_stream.seek(0)           # OK, start over\n"
-"  spam=an_input_stream.read()       # and read it all\n"
-"  \n"
-"If someone else wants to provide a more complete implementation,\n"
-"go for it. :-)  \n"
-"\n"
-"cStringIO.c,v 1.29 1999/06/15 14:10:27 jim Exp\n");
-
-/* Declaration for file-like objects that manage data as strings
-
-   The IOobject type should be though of as a common base type for
-   Iobjects, which provide input (read-only) StringIO objects and
-   Oobjects, which provide read-write objects.  Most of the methods
-   depend only on common data.
-*/
-
-typedef struct {
-  PyObject_HEAD
-  char *buf;
-  Py_ssize_t pos, string_size;
-} IOobject;
-
-#define IOOOBJECT(O) ((IOobject*)(O))
-
-/* Declarations for objects of type StringO */
-
-typedef struct { /* Subtype of IOobject */
-  PyObject_HEAD
-  char *buf;
-  Py_ssize_t pos, string_size;
-
-  Py_ssize_t buf_size;
-  int softspace;
-} Oobject;
-
-/* Declarations for objects of type StringI */
-
-typedef struct { /* Subtype of IOobject */
-  PyObject_HEAD
-  char *buf;
-  Py_ssize_t pos, string_size;
-  /* We store a reference to the object here in order to keep
-     the buffer alive during the lifetime of the Iobject. */
-  PyObject *pbuf;
-} Iobject;
-
-/* IOobject (common) methods */
-
-PyDoc_STRVAR(IO_flush__doc__, "flush(): does nothing.");
-
-static int
-IO__opencheck(IOobject *self) {
-    if (!self->buf) {
-        PyErr_SetString(PyExc_ValueError,
-                        "I/O operation on closed file");
-        return 0;
-    }
-    return 1;
-}
-
-static PyObject *
-IO_get_closed(IOobject *self, void *closure)
-{
-    PyObject *result = Py_False;
-
-    if (self->buf == NULL)
-        result = Py_True;
-    Py_INCREF(result);
-    return result;
-}
-
-static PyGetSetDef file_getsetlist[] = {
-    {"closed", (getter)IO_get_closed, NULL, "True if the file is closed"},
-    {0},
-};
-
-static PyObject *
-IO_flush(IOobject *self, PyObject *unused) {
-
-    if (!IO__opencheck(self)) return NULL;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(IO_getval__doc__,
-"getvalue([use_pos]) -- Get the string value."
-"\n"
-"If use_pos is specified and is a true value, then the string returned\n"
-"will include only the text up to the current file position.\n");
-
-static PyObject *
-IO_cgetval(PyObject *self) {
-    if (!IO__opencheck(IOOOBJECT(self))) return NULL;
-    assert(IOOOBJECT(self)->pos >= 0);
-    return PyString_FromStringAndSize(((IOobject*)self)->buf,
-                                      ((IOobject*)self)->pos);
-}
-
-static PyObject *
-IO_getval(IOobject *self, PyObject *args) {
-    PyObject *use_pos=Py_None;
-    Py_ssize_t s;
-
-    if (!IO__opencheck(self)) return NULL;
-    if (!PyArg_UnpackTuple(args,"getval", 0, 1,&use_pos)) return NULL;
-
-    if (PyObject_IsTrue(use_pos)) {
-              s=self->pos;
-              if (s > self->string_size) s=self->string_size;
-    }
-    else
-              s=self->string_size;
-    assert(self->pos >= 0);
-    return PyString_FromStringAndSize(self->buf, s);
-}
-
-PyDoc_STRVAR(IO_isatty__doc__, "isatty(): always returns 0");
-
-static PyObject *
-IO_isatty(IOobject *self, PyObject *unused) {
-    if (!IO__opencheck(self)) return NULL;
-    Py_INCREF(Py_False);
-    return Py_False;
-}
-
-PyDoc_STRVAR(IO_read__doc__,
-"read([s]) -- Read s characters, or the rest of the string");
-
-static int
-IO_cread(PyObject *self, char **output, Py_ssize_t  n) {
-    Py_ssize_t l;
-
-    if (!IO__opencheck(IOOOBJECT(self))) return -1;
-    assert(IOOOBJECT(self)->pos >= 0);
-    assert(IOOOBJECT(self)->string_size >= 0);
-    l = ((IOobject*)self)->string_size - ((IOobject*)self)->pos;
-    if (n < 0 || n > l) {
-        n = l;
-        if (n < 0) n=0;
-    }
-
-    *output=((IOobject*)self)->buf + ((IOobject*)self)->pos;
-    ((IOobject*)self)->pos += n;
-    return n;
-}
-
-static PyObject *
-IO_read(IOobject *self, PyObject *args) {
-    Py_ssize_t n = -1;
-    char *output = NULL;
-
-    if (!PyArg_ParseTuple(args, "|n:read", &n)) return NULL;
-
-    if ( (n=IO_cread((PyObject*)self,&output,n)) < 0) return NULL;
-
-    return PyString_FromStringAndSize(output, n);
-}
-
-PyDoc_STRVAR(IO_readline__doc__, "readline() -- Read one line");
-
-static int
-IO_creadline(PyObject *self, char **output) {
-    char *n, *s;
-    Py_ssize_t l;
-
-    if (!IO__opencheck(IOOOBJECT(self))) return -1;
-
-    for (n = ((IOobject*)self)->buf + ((IOobject*)self)->pos,
-           s = ((IOobject*)self)->buf + ((IOobject*)self)->string_size;
-         n < s && *n != '\n'; n++);
-
-    if (n < s) n++;
-
-    *output=((IOobject*)self)->buf + ((IOobject*)self)->pos;
-    l = n - ((IOobject*)self)->buf - ((IOobject*)self)->pos;
-
-    assert(IOOOBJECT(self)->pos <= PY_SSIZE_T_MAX - l);
-    assert(IOOOBJECT(self)->pos >= 0);
-    assert(IOOOBJECT(self)->string_size >= 0);
-
-    ((IOobject*)self)->pos += l;
-    return (int)l;
-}
-
-static PyObject *
-IO_readline(IOobject *self, PyObject *args) {
-    int n, m=-1;
-    char *output;
-
-    if (args)
-        if (!PyArg_ParseTuple(args, "|i:readline", &m)) return NULL;
-
-    if( (n=IO_creadline((PyObject*)self,&output)) < 0) return NULL;
-    if (m >= 0 && m < n) {
-        m = n - m;
-        n -= m;
-        self->pos -= m;
-    }
-    assert(IOOOBJECT(self)->pos >= 0);
-    return PyString_FromStringAndSize(output, n);
-}
-
-PyDoc_STRVAR(IO_readlines__doc__, "readlines() -- Read all lines");
-
-static PyObject *
-IO_readlines(IOobject *self, PyObject *args) {
-    int n;
-    char *output;
-    PyObject *result, *line;
-    int hint = 0, length = 0;
-
-    if (!PyArg_ParseTuple(args, "|i:readlines", &hint)) return NULL;
-
-    result = PyList_New(0);
-    if (!result)
-        return NULL;
-
-    while (1){
-        if ( (n = IO_creadline((PyObject*)self,&output)) < 0)
-            goto err;
-        if (n == 0)
-            break;
-        line = PyString_FromStringAndSize (output, n);
-        if (!line)
-            goto err;
-        if (PyList_Append (result, line) == -1) {
-            Py_DECREF (line);
-            goto err;
-        }
-        Py_DECREF (line);
-        length += n;
-        if (hint > 0 && length >= hint)
-            break;
-    }
-    return result;
- err:
-    Py_DECREF(result);
-    return NULL;
-}
-
-PyDoc_STRVAR(IO_reset__doc__,
-"reset() -- Reset the file position to the beginning");
-
-static PyObject *
-IO_reset(IOobject *self, PyObject *unused) {
-
-    if (!IO__opencheck(self)) return NULL;
-
-    self->pos = 0;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(IO_tell__doc__, "tell() -- get the current position.");
-
-static PyObject *
-IO_tell(IOobject *self, PyObject *unused) {
-
-    if (!IO__opencheck(self)) return NULL;
-
-    assert(self->pos >= 0);
-    return PyInt_FromSsize_t(self->pos);
-}
-
-PyDoc_STRVAR(IO_truncate__doc__,
-"truncate(): truncate the file at the current position.");
-
-static PyObject *
-IO_truncate(IOobject *self, PyObject *args) {
-    Py_ssize_t pos = -1;
-
-    if (!IO__opencheck(self)) return NULL;
-    if (!PyArg_ParseTuple(args, "|n:truncate", &pos)) return NULL;
-
-    if (PyTuple_Size(args) == 0) {
-        /* No argument passed, truncate to current position */
-        pos = self->pos;
-    }
-
-    if (pos < 0) {
-        errno = EINVAL;
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-
-    if (self->string_size > pos) self->string_size = pos;
-    self->pos = self->string_size;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-IO_iternext(Iobject *self)
-{
-    PyObject *next;
-    next = IO_readline((IOobject *)self, NULL);
-    if (!next)
-        return NULL;
-    if (!PyString_GET_SIZE(next)) {
-        Py_DECREF(next);
-        PyErr_SetNone(PyExc_StopIteration);
-        return NULL;
-    }
-    return next;
-}
-
-
-
-
-/* Read-write object methods */
-
-PyDoc_STRVAR(IO_seek__doc__,
-"seek(position)       -- set the current position\n"
-"seek(position, mode) -- mode 0: absolute; 1: relative; 2: relative to EOF");
-
-static PyObject *
-IO_seek(Iobject *self, PyObject *args) {
-    Py_ssize_t position;
-    int mode = 0;
-
-    if (!IO__opencheck(IOOOBJECT(self))) return NULL;
-    if (!PyArg_ParseTuple(args, "n|i:seek", &position, &mode))
-        return NULL;
-
-    if (mode == 2) {
-        position += self->string_size;
-    }
-    else if (mode == 1) {
-        position += self->pos;
-    }
-
-    if (position < 0) position=0;
-
-    self->pos=position;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(O_write__doc__,
-"write(s) -- Write a string to the file"
-"\n\nNote (hack:) writing None resets the buffer");
-
-
-static int
-O_cwrite(PyObject *self, const char *c, Py_ssize_t  l) {
-    Py_ssize_t newl;
-    Oobject *oself;
-    char *newbuf;
-
-    if (!IO__opencheck(IOOOBJECT(self))) return -1;
-    oself = (Oobject *)self;
-
-    newl = oself->pos+l;
-    if (newl >= oself->buf_size) {
-        oself->buf_size *= 2;
-        if (oself->buf_size <= newl) {
-            assert(newl + 1 < INT_MAX);
-            oself->buf_size = (int)(newl+1);
-        }
-        newbuf = (char*)realloc(oself->buf, oself->buf_size);
-        if (!newbuf) {
-            PyErr_SetString(PyExc_MemoryError,"out of memory");
-            free(oself->buf);
-            oself->buf = 0;
-            oself->buf_size = oself->pos = 0;
-            return -1;
-          }
-        oself->buf = newbuf;
-      }
-
-    if (oself->string_size < oself->pos) {
-        /* In case of overseek, pad with null bytes the buffer region between
-           the end of stream and the current position.
-
-          0   lo      string_size                           hi
-          |   |<---used--->|<----------available----------->|
-          |   |            <--to pad-->|<---to write--->    |
-          0   buf                   position
-        */
-        memset(oself->buf + oself->string_size, '\0',
-               (oself->pos - oself->string_size) * sizeof(char));
-    }
-
-    memcpy(oself->buf+oself->pos,c,l);
-
-    assert(oself->pos + l < INT_MAX);
-    oself->pos += (int)l;
-
-    if (oself->string_size < oself->pos) {
-        oself->string_size = oself->pos;
-    }
-
-    return (int)l;
-}
-
-static PyObject *
-O_write(Oobject *self, PyObject *args) {
-    char *c;
-    int l;
-
-    if (!PyArg_ParseTuple(args, "t#:write", &c, &l)) return NULL;
-
-    if (O_cwrite((PyObject*)self,c,l) < 0) return NULL;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(O_close__doc__, "close(): explicitly release resources held.");
-
-static PyObject *
-O_close(Oobject *self, PyObject *unused) {
-    if (self->buf != NULL) free(self->buf);
-    self->buf = NULL;
-
-    self->pos = self->string_size = self->buf_size = 0;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(O_writelines__doc__,
-"writelines(sequence_of_strings) -> None.  Write the strings to the file.\n"
-"\n"
-"Note that newlines are not added.  The sequence can be any iterable object\n"
-"producing strings. This is equivalent to calling write() for each string.");
-static PyObject *
-O_writelines(Oobject *self, PyObject *args) {
-    PyObject *it, *s;
-
-    it = PyObject_GetIter(args);
-    if (it == NULL)
-        return NULL;
-    while ((s = PyIter_Next(it)) != NULL) {
-        Py_ssize_t n;
-        char *c;
-        if (PyString_AsStringAndSize(s, &c, &n) == -1) {
-            Py_DECREF(it);
-            Py_DECREF(s);
-            return NULL;
-        }
-        if (O_cwrite((PyObject *)self, c, n) == -1) {
-            Py_DECREF(it);
-            Py_DECREF(s);
-            return NULL;
-           }
-           Py_DECREF(s);
-       }
-
-       Py_DECREF(it);
-
-       /* See if PyIter_Next failed */
-       if (PyErr_Occurred())
-           return NULL;
-
-       Py_RETURN_NONE;
-}
-static struct PyMethodDef O_methods[] = {
-  /* Common methods: */
-  {"flush",     (PyCFunction)IO_flush,    METH_NOARGS,  IO_flush__doc__},
-  {"getvalue",  (PyCFunction)IO_getval,   METH_VARARGS, IO_getval__doc__},
-  {"isatty",    (PyCFunction)IO_isatty,   METH_NOARGS,  IO_isatty__doc__},
-  {"read",      (PyCFunction)IO_read,     METH_VARARGS, IO_read__doc__},
-  {"readline",  (PyCFunction)IO_readline, METH_VARARGS, IO_readline__doc__},
-  {"readlines", (PyCFunction)IO_readlines,METH_VARARGS, IO_readlines__doc__},
-  {"reset",     (PyCFunction)IO_reset,    METH_NOARGS,  IO_reset__doc__},
-  {"seek",      (PyCFunction)IO_seek,     METH_VARARGS, IO_seek__doc__},
-  {"tell",      (PyCFunction)IO_tell,     METH_NOARGS,  IO_tell__doc__},
-  {"truncate",  (PyCFunction)IO_truncate, METH_VARARGS, IO_truncate__doc__},
-
-  /* Read-write StringIO specific  methods: */
-  {"close",      (PyCFunction)O_close,      METH_NOARGS,  O_close__doc__},
-  {"write",      (PyCFunction)O_write,      METH_VARARGS, O_write__doc__},
-  {"writelines", (PyCFunction)O_writelines, METH_O,       O_writelines__doc__},
-  {NULL,         NULL}          /* sentinel */
-};
-
-static PyMemberDef O_memberlist[] = {
-    {"softspace",       T_INT,  offsetof(Oobject, softspace),   0,
-     "flag indicating that a space needs to be printed; used by print"},
-     /* getattr(f, "closed") is implemented without this table */
-    {NULL} /* Sentinel */
-};
-
-static void
-O_dealloc(Oobject *self) {
-    if (self->buf != NULL)
-        free(self->buf);
-    PyObject_Del(self);
-}
-
-PyDoc_STRVAR(Otype__doc__, "Simple type for output to strings.");
-
-static PyTypeObject Otype = {
-  PyVarObject_HEAD_INIT(NULL, 0)
-  "cStringIO.StringO",          /*tp_name*/
-  sizeof(Oobject),              /*tp_basicsize*/
-  0,                            /*tp_itemsize*/
-  /* methods */
-  (destructor)O_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 */
-  Py_TPFLAGS_DEFAULT,           /*tp_flags*/
-  Otype__doc__,                 /*tp_doc */
-  0,                            /*tp_traverse */
-  0,                            /*tp_clear */
-  0,                            /*tp_richcompare */
-  0,                            /*tp_weaklistoffset */
-  PyObject_SelfIter,            /*tp_iter */
-  (iternextfunc)IO_iternext,    /*tp_iternext */
-  O_methods,                    /*tp_methods */
-  O_memberlist,                 /*tp_members */
-  file_getsetlist,              /*tp_getset */
-};
-
-static PyObject *
-newOobject(int  size) {
-    Oobject *self;
-
-    self = PyObject_New(Oobject, &Otype);
-    if (self == NULL)
-        return NULL;
-    self->pos=0;
-    self->string_size = 0;
-    self->softspace = 0;
-
-    self->buf = (char *)malloc(size);
-    if (!self->buf) {
-              PyErr_SetString(PyExc_MemoryError,"out of memory");
-              self->buf_size = 0;
-              Py_DECREF(self);
-              return NULL;
-      }
-
-    self->buf_size=size;
-    return (PyObject*)self;
-}
-
-/* End of code for StringO objects */
-/* -------------------------------------------------------- */
-
-static PyObject *
-I_close(Iobject *self, PyObject *unused) {
-    Py_CLEAR(self->pbuf);
-    self->buf = NULL;
-
-    self->pos = self->string_size = 0;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static struct PyMethodDef I_methods[] = {
-  /* Common methods: */
-  {"flush",     (PyCFunction)IO_flush,    METH_NOARGS,  IO_flush__doc__},
-  {"getvalue",  (PyCFunction)IO_getval,   METH_VARARGS, IO_getval__doc__},
-  {"isatty",    (PyCFunction)IO_isatty,   METH_NOARGS,  IO_isatty__doc__},
-  {"read",      (PyCFunction)IO_read,     METH_VARARGS, IO_read__doc__},
-  {"readline",  (PyCFunction)IO_readline, METH_VARARGS, IO_readline__doc__},
-  {"readlines", (PyCFunction)IO_readlines,METH_VARARGS, IO_readlines__doc__},
-  {"reset",     (PyCFunction)IO_reset,    METH_NOARGS,  IO_reset__doc__},
-  {"seek",      (PyCFunction)IO_seek,     METH_VARARGS, IO_seek__doc__},
-  {"tell",      (PyCFunction)IO_tell,     METH_NOARGS,  IO_tell__doc__},
-  {"truncate",  (PyCFunction)IO_truncate, METH_VARARGS, IO_truncate__doc__},
-
-  /* Read-only StringIO specific  methods: */
-  {"close",     (PyCFunction)I_close,    METH_NOARGS,  O_close__doc__},
-  {NULL,        NULL}
-};
-
-static void
-I_dealloc(Iobject *self) {
-  Py_XDECREF(self->pbuf);
-  PyObject_Del(self);
-}
-
-
-PyDoc_STRVAR(Itype__doc__,
-"Simple type for treating strings as input file streams");
-
-static PyTypeObject Itype = {
-  PyVarObject_HEAD_INIT(NULL, 0)
-  "cStringIO.StringI",                  /*tp_name*/
-  sizeof(Iobject),                      /*tp_basicsize*/
-  0,                                    /*tp_itemsize*/
-  /* methods */
-  (destructor)I_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 */
-  Py_TPFLAGS_DEFAULT,                   /* tp_flags */
-  Itype__doc__,                         /* tp_doc */
-  0,                                    /* tp_traverse */
-  0,                                    /* tp_clear */
-  0,                                    /* tp_richcompare */
-  0,                                    /* tp_weaklistoffset */
-  PyObject_SelfIter,                    /* tp_iter */
-  (iternextfunc)IO_iternext,            /* tp_iternext */
-  I_methods,                            /* tp_methods */
-  0,                                    /* tp_members */
-  file_getsetlist,                      /* tp_getset */
-};
-
-static PyObject *
-newIobject(PyObject *s) {
-  Iobject *self;
-  char *buf;
-  Py_ssize_t size;
-
-  if (PyObject_AsReadBuffer(s, (const void **)&buf, &size)) {
-    PyErr_Format(PyExc_TypeError, "expected read buffer, %.200s found",
-                 s->ob_type->tp_name);
-    return NULL;
-  }
-
-  self = PyObject_New(Iobject, &Itype);
-  if (!self) return NULL;
-  Py_INCREF(s);
-  self->buf=buf;
-  self->string_size=size;
-  self->pbuf=s;
-  self->pos=0;
-
-  return (PyObject*)self;
-}
-
-/* End of code for StringI objects */
-/* -------------------------------------------------------- */
-
-
-PyDoc_STRVAR(IO_StringIO__doc__,
-"StringIO([s]) -- Return a StringIO-like stream for reading or writing");
-
-static PyObject *
-IO_StringIO(PyObject *self, PyObject *args) {
-  PyObject *s=0;
-
-  if (!PyArg_UnpackTuple(args, "StringIO", 0, 1, &s)) return NULL;
-
-  if (s) return newIobject(s);
-  return newOobject(128);
-}
-
-/* List of methods defined in the module */
-
-static struct PyMethodDef IO_methods[] = {
-  {"StringIO",  (PyCFunction)IO_StringIO,
-   METH_VARARGS,        IO_StringIO__doc__},
-  {NULL,                NULL}           /* sentinel */
-};
-
-
-/* Initialization function for the module (*must* be called initcStringIO) */
-
-static struct PycStringIO_CAPI CAPI = {
-  IO_cread,
-  IO_creadline,
-  O_cwrite,
-  IO_cgetval,
-  newOobject,
-  newIobject,
-  &Itype,
-  &Otype,
-};
-
-#ifndef PyMODINIT_FUNC  /* declarations for DLL import/export */
-#define PyMODINIT_FUNC void
-#endif
-PyMODINIT_FUNC
-initcStringIO(void) {
-  PyObject *m, *d, *v;
-
-
-  /* Create the module and add the functions */
-  m = Py_InitModule4("cStringIO", IO_methods,
-                     cStringIO_module_documentation,
-                     (PyObject*)NULL,PYTHON_API_VERSION);
-  if (m == NULL) return;
-
-  /* Add some symbolic constants to the module */
-  d = PyModule_GetDict(m);
-
-  /* Export C API */
-  Py_TYPE(&Itype)=&PyType_Type;
-  Py_TYPE(&Otype)=&PyType_Type;
-  if (PyType_Ready(&Otype) < 0) return;
-  if (PyType_Ready(&Itype) < 0) return;
-  v = PyCapsule_New(&CAPI, PycStringIO_CAPSULE_NAME, NULL);
-  PyDict_SetItemString(d,"cStringIO_CAPI", v);
-  Py_XDECREF(v);
-
-  /* Export Types */
-  PyDict_SetItemString(d,"InputType",  (PyObject*)&Itype);
-  PyDict_SetItemString(d,"OutputType", (PyObject*)&Otype);
-
-  /* Maybe make certain warnings go away */
-  if (0) PycString_IMPORT;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/README b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/README
deleted file mode 100644
index 76589f5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/README
+++ /dev/null
@@ -1,79 +0,0 @@
-To generate or modify mapping headers
--------------------------------------
-Mapping headers are imported from CJKCodecs as pre-generated form.
-If you need to tweak or add something on it, please look at tools/
-subdirectory of CJKCodecs' distribution.
-
-
-
-Notes on implmentation characteristics of each codecs
------------------------------------------------------
-
-1) Big5 codec
-
-  The big5 codec maps the following characters as cp950 does rather
-  than conforming Unicode.org's that maps to 0xFFFD.
-
-    BIG5        Unicode     Description
-
-    0xA15A      0x2574      SPACING UNDERSCORE
-    0xA1C3      0xFFE3      SPACING HEAVY OVERSCORE
-    0xA1C5      0x02CD      SPACING HEAVY UNDERSCORE
-    0xA1FE      0xFF0F      LT DIAG UP RIGHT TO LOW LEFT
-    0xA240      0xFF3C      LT DIAG UP LEFT TO LOW RIGHT
-    0xA2CC      0x5341      HANGZHOU NUMERAL TEN
-    0xA2CE      0x5345      HANGZHOU NUMERAL THIRTY
-
-  Because unicode 0x5341, 0x5345, 0xFF0F, 0xFF3C is mapped to another
-  big5 codes already, a roundtrip compatibility is not guaranteed for
-  them.
-
-
-2) cp932 codec
-
-  To conform to Windows's real mapping, cp932 codec maps the following
-  codepoints in addition of the official cp932 mapping.
-
-    CP932     Unicode     Description
-
-    0x80      0x80        UNDEFINED
-    0xA0      0xF8F0      UNDEFINED
-    0xFD      0xF8F1      UNDEFINED
-    0xFE      0xF8F2      UNDEFINED
-    0xFF      0xF8F3      UNDEFINED
-
-
-3) euc-jisx0213 codec
-
-  The euc-jisx0213 codec maps JIS X 0213 Plane 1 code 0x2140 into
-  unicode U+FF3C instead of U+005C as on unicode.org's mapping.
-  Because euc-jisx0213 has REVERSE SOLIDUS on 0x5c already and A140
-  is shown as a full width character, mapping to U+FF3C can make
-  more sense.
-
-  The euc-jisx0213 codec is enabled to decode JIS X 0212 codes on
-  codeset 2. Because JIS X 0212 and JIS X 0213 Plane 2 don't have
-  overlapped by each other, it doesn't bother standard conformations
-  (and JIS X 0213 Plane 2 is intended to use so.) On encoding
-  sessions, the codec will try to encode kanji characters in this
-  order:
-
-    JIS X 0213 Plane 1 -> JIS X 0213 Plane 2 -> JIS X 0212
-
-
-4) euc-jp codec
-
-  The euc-jp codec is a compatibility instance on these points:
-   - U+FF3C FULLWIDTH REVERSE SOLIDUS is mapped to EUC-JP A1C0 (vice versa)
-   - U+00A5 YEN SIGN is mapped to EUC-JP 0x5c. (one way)
-   - U+203E OVERLINE is mapped to EUC-JP 0x7e. (one way)
-
-
-5) shift-jis codec
-
-  The shift-jis codec is mapping 0x20-0x7e area to U+20-U+7E directly
-  instead of using JIS X 0201 for compatibility. The differences are:
-   - U+005C REVERSE SOLIDUS is mapped to SHIFT-JIS 0x5c.
-   - U+007E TILDE is mapped to SHIFT-JIS 0x7e.
-   - U+FF3C FULL-WIDTH REVERSE SOLIDUS is mapped to SHIFT-JIS 815f.
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_cn.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_cn.c
deleted file mode 100644
index 5f94633..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_cn.c
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
- * _codecs_cn.c: Codecs collection for Mainland Chinese encodings
- *
- * Written by Hye-Shik Chang <perky@FreeBSD.org>
- */
-
-#include "cjkcodecs.h"
-#include "mappings_cn.h"
-
-/**
- * hz is predefined as 100 on AIX. So we undefine it to avoid
- * conflict against hz codec's.
- */
-#ifdef _AIX
-#undef hz
-#endif
-
-/* GBK and GB2312 map differently in few codepoints that are listed below:
- *
- *              gb2312                          gbk
- * A1A4         U+30FB KATAKANA MIDDLE DOT      U+00B7 MIDDLE DOT
- * A1AA         U+2015 HORIZONTAL BAR           U+2014 EM DASH
- * A844         undefined                       U+2015 HORIZONTAL BAR
- */
-
-#define GBK_DECODE(dc1, dc2, assi) \
-    if ((dc1) == 0xa1 && (dc2) == 0xaa) (assi) = 0x2014; \
-    else if ((dc1) == 0xa8 && (dc2) == 0x44) (assi) = 0x2015; \
-    else if ((dc1) == 0xa1 && (dc2) == 0xa4) (assi) = 0x00b7; \
-    else TRYMAP_DEC(gb2312, assi, dc1 ^ 0x80, dc2 ^ 0x80); \
-    else TRYMAP_DEC(gbkext, assi, dc1, dc2);
-
-#define GBK_ENCODE(code, assi) \
-    if ((code) == 0x2014) (assi) = 0xa1aa; \
-    else if ((code) == 0x2015) (assi) = 0xa844; \
-    else if ((code) == 0x00b7) (assi) = 0xa1a4; \
-    else if ((code) != 0x30fb && TRYMAP_ENC_COND(gbcommon, assi, code));
-
-/*
- * GB2312 codec
- */
-
-ENCODER(gb2312)
-{
-    while (inleft > 0) {
-        Py_UNICODE c = IN1;
-        DBCHAR code;
-
-        if (c < 0x80) {
-            WRITE1((unsigned char)c)
-            NEXT(1, 1)
-            continue;
-        }
-        UCS4INVALID(c)
-
-        REQUIRE_OUTBUF(2)
-        TRYMAP_ENC(gbcommon, code, c);
-        else return 1;
-
-        if (code & 0x8000) /* MSB set: GBK */
-            return 1;
-
-        OUT1((code >> 8) | 0x80)
-        OUT2((code & 0xFF) | 0x80)
-        NEXT(1, 2)
-    }
-
-    return 0;
-}
-
-DECODER(gb2312)
-{
-    while (inleft > 0) {
-        unsigned char c = **inbuf;
-
-        REQUIRE_OUTBUF(1)
-
-        if (c < 0x80) {
-            OUT1(c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        REQUIRE_INBUF(2)
-        TRYMAP_DEC(gb2312, **outbuf, c ^ 0x80, IN2 ^ 0x80) {
-            NEXT(2, 1)
-        }
-        else return 2;
-    }
-
-    return 0;
-}
-
-
-/*
- * GBK codec
- */
-
-ENCODER(gbk)
-{
-    while (inleft > 0) {
-        Py_UNICODE c = IN1;
-        DBCHAR code;
-
-        if (c < 0x80) {
-            WRITE1((unsigned char)c)
-            NEXT(1, 1)
-            continue;
-        }
-        UCS4INVALID(c)
-
-        REQUIRE_OUTBUF(2)
-
-        GBK_ENCODE(c, code)
-        else return 1;
-
-        OUT1((code >> 8) | 0x80)
-        if (code & 0x8000)
-            OUT2((code & 0xFF)) /* MSB set: GBK */
-        else
-            OUT2((code & 0xFF) | 0x80) /* MSB unset: GB2312 */
-        NEXT(1, 2)
-    }
-
-    return 0;
-}
-
-DECODER(gbk)
-{
-    while (inleft > 0) {
-        unsigned char c = IN1;
-
-        REQUIRE_OUTBUF(1)
-
-        if (c < 0x80) {
-            OUT1(c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        REQUIRE_INBUF(2)
-
-        GBK_DECODE(c, IN2, **outbuf)
-        else return 2;
-
-        NEXT(2, 1)
-    }
-
-    return 0;
-}
-
-
-/*
- * GB18030 codec
- */
-
-ENCODER(gb18030)
-{
-    while (inleft > 0) {
-        ucs4_t c = IN1;
-        DBCHAR code;
-
-        if (c < 0x80) {
-            WRITE1(c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        DECODE_SURROGATE(c)
-        if (c > 0x10FFFF)
-#if Py_UNICODE_SIZE == 2
-            return 2; /* surrogates pair */
-#else
-            return 1;
-#endif
-        else if (c >= 0x10000) {
-            ucs4_t tc = c - 0x10000;
-
-            REQUIRE_OUTBUF(4)
-
-            OUT4((unsigned char)(tc % 10) + 0x30)
-            tc /= 10;
-            OUT3((unsigned char)(tc % 126) + 0x81)
-            tc /= 126;
-            OUT2((unsigned char)(tc % 10) + 0x30)
-            tc /= 10;
-            OUT1((unsigned char)(tc + 0x90))
-
-#if Py_UNICODE_SIZE == 2
-            NEXT(2, 4) /* surrogates pair */
-#else
-            NEXT(1, 4)
-#endif
-            continue;
-        }
-
-        REQUIRE_OUTBUF(2)
-
-        GBK_ENCODE(c, code)
-        else TRYMAP_ENC(gb18030ext, code, c);
-        else {
-            const struct _gb18030_to_unibmp_ranges *utrrange;
-
-            REQUIRE_OUTBUF(4)
-
-            for (utrrange = gb18030_to_unibmp_ranges;
-                 utrrange->first != 0;
-                 utrrange++)
-                if (utrrange->first <= c &&
-                    c <= utrrange->last) {
-                    Py_UNICODE tc;
-
-                    tc = c - utrrange->first +
-                         utrrange->base;
-
-                    OUT4((unsigned char)(tc % 10) + 0x30)
-                    tc /= 10;
-                    OUT3((unsigned char)(tc % 126) + 0x81)
-                    tc /= 126;
-                    OUT2((unsigned char)(tc % 10) + 0x30)
-                    tc /= 10;
-                    OUT1((unsigned char)tc + 0x81)
-
-                    NEXT(1, 4)
-                    break;
-                }
-
-            if (utrrange->first == 0)
-                return 1;
-            continue;
-        }
-
-        OUT1((code >> 8) | 0x80)
-        if (code & 0x8000)
-            OUT2((code & 0xFF)) /* MSB set: GBK or GB18030ext */
-        else
-            OUT2((code & 0xFF) | 0x80) /* MSB unset: GB2312 */
-
-        NEXT(1, 2)
-    }
-
-    return 0;
-}
-
-DECODER(gb18030)
-{
-    while (inleft > 0) {
-        unsigned char c = IN1, c2;
-
-        REQUIRE_OUTBUF(1)
-
-        if (c < 0x80) {
-            OUT1(c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        REQUIRE_INBUF(2)
-
-        c2 = IN2;
-        if (c2 >= 0x30 && c2 <= 0x39) { /* 4 bytes seq */
-            const struct _gb18030_to_unibmp_ranges *utr;
-            unsigned char c3, c4;
-            ucs4_t lseq;
-
-            REQUIRE_INBUF(4)
-            c3 = IN3;
-            c4 = IN4;
-            if (c < 0x81 || c3 < 0x81 || c4 < 0x30 || c4 > 0x39)
-                return 4;
-            c -= 0x81;  c2 -= 0x30;
-            c3 -= 0x81; c4 -= 0x30;
-
-            if (c < 4) { /* U+0080 - U+FFFF */
-                lseq = ((ucs4_t)c * 10 + c2) * 1260 +
-                    (ucs4_t)c3 * 10 + c4;
-                if (lseq < 39420) {
-                    for (utr = gb18030_to_unibmp_ranges;
-                         lseq >= (utr + 1)->base;
-                         utr++) ;
-                    OUT1(utr->first - utr->base + lseq)
-                    NEXT(4, 1)
-                    continue;
-                }
-            }
-            else if (c >= 15) { /* U+10000 - U+10FFFF */
-                lseq = 0x10000 + (((ucs4_t)c-15) * 10 + c2)
-                    * 1260 + (ucs4_t)c3 * 10 + c4;
-                if (lseq <= 0x10FFFF) {
-                    WRITEUCS4(lseq);
-                    NEXT_IN(4)
-                    continue;
-                }
-            }
-            return 4;
-        }
-
-        GBK_DECODE(c, c2, **outbuf)
-        else TRYMAP_DEC(gb18030ext, **outbuf, c, c2);
-        else return 2;
-
-        NEXT(2, 1)
-    }
-
-    return 0;
-}
-
-
-/*
- * HZ codec
- */
-
-ENCODER_INIT(hz)
-{
-    state->i = 0;
-    return 0;
-}
-
-ENCODER_RESET(hz)
-{
-    if (state->i != 0) {
-        WRITE2('~', '}')
-        state->i = 0;
-        NEXT_OUT(2)
-    }
-    return 0;
-}
-
-ENCODER(hz)
-{
-    while (inleft > 0) {
-        Py_UNICODE c = IN1;
-        DBCHAR code;
-
-        if (c < 0x80) {
-            if (state->i == 0) {
-                WRITE1((unsigned char)c)
-                NEXT(1, 1)
-            }
-            else {
-                WRITE3('~', '}', (unsigned char)c)
-                NEXT(1, 3)
-                state->i = 0;
-            }
-            continue;
-        }
-
-        UCS4INVALID(c)
-
-        TRYMAP_ENC(gbcommon, code, c);
-        else return 1;
-
-        if (code & 0x8000) /* MSB set: GBK */
-            return 1;
-
-        if (state->i == 0) {
-            WRITE4('~', '{', code >> 8, code & 0xff)
-            NEXT(1, 4)
-            state->i = 1;
-        }
-        else {
-            WRITE2(code >> 8, code & 0xff)
-            NEXT(1, 2)
-        }
-    }
-
-    return 0;
-}
-
-DECODER_INIT(hz)
-{
-    state->i = 0;
-    return 0;
-}
-
-DECODER_RESET(hz)
-{
-    state->i = 0;
-    return 0;
-}
-
-DECODER(hz)
-{
-    while (inleft > 0) {
-        unsigned char c = IN1;
-
-        if (c == '~') {
-            unsigned char c2 = IN2;
-
-            REQUIRE_INBUF(2)
-            if (c2 == '~') {
-                WRITE1('~')
-                NEXT(2, 1)
-                continue;
-            }
-            else if (c2 == '{' && state->i == 0)
-                state->i = 1; /* set GB */
-            else if (c2 == '}' && state->i == 1)
-                state->i = 0; /* set ASCII */
-            else if (c2 == '\n')
-                ; /* line-continuation */
-            else
-                return 2;
-            NEXT(2, 0);
-            continue;
-        }
-
-        if (c & 0x80)
-            return 1;
-
-        if (state->i == 0) { /* ASCII mode */
-            WRITE1(c)
-            NEXT(1, 1)
-        }
-        else { /* GB mode */
-            REQUIRE_INBUF(2)
-            REQUIRE_OUTBUF(1)
-            TRYMAP_DEC(gb2312, **outbuf, c, IN2) {
-                NEXT(2, 1)
-            }
-            else
-                return 2;
-        }
-    }
-
-    return 0;
-}
-
-
-BEGIN_MAPPINGS_LIST
-  MAPPING_DECONLY(gb2312)
-  MAPPING_DECONLY(gbkext)
-  MAPPING_ENCONLY(gbcommon)
-  MAPPING_ENCDEC(gb18030ext)
-END_MAPPINGS_LIST
-
-BEGIN_CODECS_LIST
-  CODEC_STATELESS(gb2312)
-  CODEC_STATELESS(gbk)
-  CODEC_STATELESS(gb18030)
-  CODEC_STATEFUL(hz)
-END_CODECS_LIST
-
-I_AM_A_MODULE_FOR(cn)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_hk.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_hk.c
deleted file mode 100644
index 85bf280..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_hk.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * _codecs_hk.c: Codecs collection for encodings from Hong Kong
- *
- * Written by Hye-Shik Chang <perky@FreeBSD.org>
- */
-
-#define USING_IMPORTED_MAPS
-
-#include "cjkcodecs.h"
-#include "mappings_hk.h"
-
-/*
- * BIG5HKSCS codec
- */
-
-static const encode_map *big5_encmap = NULL;
-static const decode_map *big5_decmap = NULL;
-
-CODEC_INIT(big5hkscs)
-{
-    static int initialized = 0;
-
-    if (!initialized && IMPORT_MAP(tw, big5, &big5_encmap, &big5_decmap))
-        return -1;
-    initialized = 1;
-    return 0;
-}
-
-/*
- * There are four possible pair unicode -> big5hkscs maps as in HKSCS 2004:
- *  U+00CA U+0304 -> 8862  (U+00CA alone is mapped to 8866)
- *  U+00CA U+030C -> 8864
- *  U+00EA U+0304 -> 88a3  (U+00EA alone is mapped to 88a7)
- *  U+00EA U+030C -> 88a5
- * These are handled by not mapping tables but a hand-written code.
- */
-static const DBCHAR big5hkscs_pairenc_table[4] = {0x8862, 0x8864, 0x88a3, 0x88a5};
-
-ENCODER(big5hkscs)
-{
-    while (inleft > 0) {
-        ucs4_t c = **inbuf;
-        DBCHAR code;
-        Py_ssize_t insize;
-
-        if (c < 0x80) {
-            REQUIRE_OUTBUF(1)
-            **outbuf = (unsigned char)c;
-            NEXT(1, 1)
-            continue;
-        }
-
-        DECODE_SURROGATE(c)
-        insize = GET_INSIZE(c);
-
-        REQUIRE_OUTBUF(2)
-
-        if (c < 0x10000) {
-            TRYMAP_ENC(big5hkscs_bmp, code, c) {
-                if (code == MULTIC) {
-                    if (inleft >= 2 &&
-                        ((c & 0xffdf) == 0x00ca) &&
-                        (((*inbuf)[1] & 0xfff7) == 0x0304)) {
-                        code = big5hkscs_pairenc_table[
-                            ((c >> 4) |
-                             ((*inbuf)[1] >> 3)) & 3];
-                        insize = 2;
-                    }
-                    else if (inleft < 2 &&
-                             !(flags & MBENC_FLUSH))
-                        return MBERR_TOOFEW;
-                    else {
-                        if (c == 0xca)
-                            code = 0x8866;
-                        else /* c == 0xea */
-                            code = 0x88a7;
-                    }
-                }
-            }
-            else TRYMAP_ENC(big5, code, c);
-            else return 1;
-        }
-        else if (c < 0x20000)
-            return insize;
-        else if (c < 0x30000) {
-            TRYMAP_ENC(big5hkscs_nonbmp, code, c & 0xffff);
-            else return insize;
-        }
-        else
-            return insize;
-
-        OUT1(code >> 8)
-        OUT2(code & 0xFF)
-        NEXT(insize, 2)
-    }
-
-    return 0;
-}
-
-#define BH2S(c1, c2) (((c1) - 0x87) * (0xfe - 0x40 + 1) + ((c2) - 0x40))
-
-DECODER(big5hkscs)
-{
-    while (inleft > 0) {
-        unsigned char c = IN1;
-        ucs4_t decoded;
-
-        REQUIRE_OUTBUF(1)
-
-        if (c < 0x80) {
-            OUT1(c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        REQUIRE_INBUF(2)
-
-        if (0xc6 <= c && c <= 0xc8 && (c >= 0xc7 || IN2 >= 0xa1))
-            goto hkscsdec;
-
-        TRYMAP_DEC(big5, **outbuf, c, IN2) {
-            NEXT(2, 1)
-        }
-        else
-hkscsdec:       TRYMAP_DEC(big5hkscs, decoded, c, IN2) {
-                        int s = BH2S(c, IN2);
-                        const unsigned char *hintbase;
-
-                        assert(0x87 <= c && c <= 0xfe);
-                        assert(0x40 <= IN2 && IN2 <= 0xfe);
-
-                        if (BH2S(0x87, 0x40) <= s && s <= BH2S(0xa0, 0xfe)) {
-                                hintbase = big5hkscs_phint_0;
-                                s -= BH2S(0x87, 0x40);
-                        }
-                        else if (BH2S(0xc6,0xa1) <= s && s <= BH2S(0xc8,0xfe)){
-                                hintbase = big5hkscs_phint_12130;
-                                s -= BH2S(0xc6, 0xa1);
-                        }
-                        else if (BH2S(0xf9,0xd6) <= s && s <= BH2S(0xfe,0xfe)){
-                                hintbase = big5hkscs_phint_21924;
-                                s -= BH2S(0xf9, 0xd6);
-                        }
-                        else
-                                return MBERR_INTERNAL;
-
-                        if (hintbase[s >> 3] & (1 << (s & 7))) {
-                                WRITEUCS4(decoded | 0x20000)
-                                NEXT_IN(2)
-                        }
-                        else {
-                                OUT1(decoded)
-                                NEXT(2, 1)
-                        }
-                }
-                else {
-                        switch ((c << 8) | IN2) {
-                        case 0x8862: WRITE2(0x00ca, 0x0304); break;
-                        case 0x8864: WRITE2(0x00ca, 0x030c); break;
-                        case 0x88a3: WRITE2(0x00ea, 0x0304); break;
-                        case 0x88a5: WRITE2(0x00ea, 0x030c); break;
-                        default: return 2;
-                        }
-
-                        NEXT(2, 2) /* all decoded codepoints are pairs, above. */
-        }
-    }
-
-    return 0;
-}
-
-
-BEGIN_MAPPINGS_LIST
-  MAPPING_DECONLY(big5hkscs)
-  MAPPING_ENCONLY(big5hkscs_bmp)
-  MAPPING_ENCONLY(big5hkscs_nonbmp)
-END_MAPPINGS_LIST
-
-BEGIN_CODECS_LIST
-  CODEC_STATELESS_WINIT(big5hkscs)
-END_CODECS_LIST
-
-I_AM_A_MODULE_FOR(hk)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_iso2022.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_iso2022.c
deleted file mode 100644
index 14fc643..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_iso2022.c
+++ /dev/null
@@ -1,1131 +0,0 @@
-/*
- * _codecs_iso2022.c: Codecs collection for ISO-2022 encodings.
- *
- * Written by Hye-Shik Chang <perky@FreeBSD.org>
- */
-
-#define USING_IMPORTED_MAPS
-#define USING_BINARY_PAIR_SEARCH
-#define EXTERN_JISX0213_PAIR
-#define EMULATE_JISX0213_2000_ENCODE_INVALID MAP_UNMAPPABLE
-#define EMULATE_JISX0213_2000_DECODE_INVALID MAP_UNMAPPABLE
-
-#include "cjkcodecs.h"
-#include "alg_jisx0201.h"
-#include "emu_jisx0213_2000.h"
-#include "mappings_jisx0213_pair.h"
-
-/* STATE
-
-   state->c[0-3]
-
-    00000000
-    ||^^^^^|
-    |+-----+----  G0-3 Character Set
-    +-----------  Is G0-3 double byte?
-
-   state->c[4]
-
-    00000000
-          ||
-          |+----  Locked-Shift?
-          +-----  ESC Throughout
-*/
-
-#define ESC                     0x1B
-#define SO                      0x0E
-#define SI                      0x0F
-#define LF                      0x0A
-
-#define MAX_ESCSEQLEN           16
-
-#define CHARSET_ISO8859_1       'A'
-#define CHARSET_ASCII           'B'
-#define CHARSET_ISO8859_7       'F'
-#define CHARSET_JISX0201_K      'I'
-#define CHARSET_JISX0201_R      'J'
-
-#define CHARSET_GB2312          ('A'|CHARSET_DBCS)
-#define CHARSET_JISX0208        ('B'|CHARSET_DBCS)
-#define CHARSET_KSX1001         ('C'|CHARSET_DBCS)
-#define CHARSET_JISX0212        ('D'|CHARSET_DBCS)
-#define CHARSET_GB2312_8565     ('E'|CHARSET_DBCS)
-#define CHARSET_CNS11643_1      ('G'|CHARSET_DBCS)
-#define CHARSET_CNS11643_2      ('H'|CHARSET_DBCS)
-#define CHARSET_JISX0213_2000_1 ('O'|CHARSET_DBCS)
-#define CHARSET_JISX0213_2      ('P'|CHARSET_DBCS)
-#define CHARSET_JISX0213_2004_1 ('Q'|CHARSET_DBCS)
-#define CHARSET_JISX0208_O      ('@'|CHARSET_DBCS)
-
-#define CHARSET_DBCS            0x80
-#define ESCMARK(mark)           ((mark) & 0x7f)
-
-#define IS_ESCEND(c)    (((c) >= 'A' && (c) <= 'Z') || (c) == '@')
-#define IS_ISO2022ESC(c2) \
-        ((c2) == '(' || (c2) == ')' || (c2) == '$' || \
-         (c2) == '.' || (c2) == '&')
-    /* this is not a complete list of ISO-2022 escape sequence headers.
-     * but, it's enough to implement CJK instances of iso-2022. */
-
-#define MAP_UNMAPPABLE          0xFFFF
-#define MAP_MULTIPLE_AVAIL      0xFFFE /* for JIS X 0213 */
-
-#define F_SHIFTED               0x01
-#define F_ESCTHROUGHOUT         0x02
-
-#define STATE_SETG(dn, v)       ((state)->c[dn]) = (v);
-#define STATE_GETG(dn)          ((state)->c[dn])
-
-#define STATE_G0                STATE_GETG(0)
-#define STATE_G1                STATE_GETG(1)
-#define STATE_G2                STATE_GETG(2)
-#define STATE_G3                STATE_GETG(3)
-#define STATE_SETG0(v)          STATE_SETG(0, v)
-#define STATE_SETG1(v)          STATE_SETG(1, v)
-#define STATE_SETG2(v)          STATE_SETG(2, v)
-#define STATE_SETG3(v)          STATE_SETG(3, v)
-
-#define STATE_SETFLAG(f)        ((state)->c[4]) |= (f);
-#define STATE_GETFLAG(f)        ((state)->c[4] & (f))
-#define STATE_CLEARFLAG(f)      ((state)->c[4]) &= ~(f);
-#define STATE_CLEARFLAGS()      ((state)->c[4]) = 0;
-
-#define ISO2022_CONFIG          ((const struct iso2022_config *)config)
-#define CONFIG_ISSET(flag)      (ISO2022_CONFIG->flags & (flag))
-#define CONFIG_DESIGNATIONS     (ISO2022_CONFIG->designations)
-
-/* iso2022_config.flags */
-#define NO_SHIFT                0x01
-#define USE_G2                  0x02
-#define USE_JISX0208_EXT        0x04
-
-/*-*- internal data structures -*-*/
-
-typedef int (*iso2022_init_func)(void);
-typedef ucs4_t (*iso2022_decode_func)(const unsigned char *data);
-typedef DBCHAR (*iso2022_encode_func)(const ucs4_t *data, Py_ssize_t *length);
-
-struct iso2022_designation {
-    unsigned char mark;
-    unsigned char plane;
-    unsigned char width;
-    iso2022_init_func initializer;
-    iso2022_decode_func decoder;
-    iso2022_encode_func encoder;
-};
-
-struct iso2022_config {
-    int flags;
-    const struct iso2022_designation *designations; /* non-ascii desigs */
-};
-
-/*-*- iso-2022 codec implementation -*-*/
-
-CODEC_INIT(iso2022)
-{
-    const struct iso2022_designation *desig = CONFIG_DESIGNATIONS;
-    for (desig = CONFIG_DESIGNATIONS; desig->mark; desig++)
-        if (desig->initializer != NULL && desig->initializer() != 0)
-            return -1;
-    return 0;
-}
-
-ENCODER_INIT(iso2022)
-{
-    STATE_CLEARFLAGS()
-    STATE_SETG0(CHARSET_ASCII)
-    STATE_SETG1(CHARSET_ASCII)
-    return 0;
-}
-
-ENCODER_RESET(iso2022)
-{
-    if (STATE_GETFLAG(F_SHIFTED)) {
-        WRITE1(SI)
-        NEXT_OUT(1)
-        STATE_CLEARFLAG(F_SHIFTED)
-    }
-    if (STATE_G0 != CHARSET_ASCII) {
-        WRITE3(ESC, '(', 'B')
-        NEXT_OUT(3)
-        STATE_SETG0(CHARSET_ASCII)
-    }
-    return 0;
-}
-
-ENCODER(iso2022)
-{
-    while (inleft > 0) {
-        const struct iso2022_designation *dsg;
-        DBCHAR encoded;
-        ucs4_t c = **inbuf;
-        Py_ssize_t insize;
-
-        if (c < 0x80) {
-            if (STATE_G0 != CHARSET_ASCII) {
-                WRITE3(ESC, '(', 'B')
-                STATE_SETG0(CHARSET_ASCII)
-                NEXT_OUT(3)
-            }
-            if (STATE_GETFLAG(F_SHIFTED)) {
-                WRITE1(SI)
-                STATE_CLEARFLAG(F_SHIFTED)
-                NEXT_OUT(1)
-            }
-            WRITE1((unsigned char)c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        DECODE_SURROGATE(c)
-        insize = GET_INSIZE(c);
-
-        encoded = MAP_UNMAPPABLE;
-        for (dsg = CONFIG_DESIGNATIONS; dsg->mark; dsg++) {
-            Py_ssize_t length = 1;
-            encoded = dsg->encoder(&c, &length);
-            if (encoded == MAP_MULTIPLE_AVAIL) {
-                /* this implementation won't work for pair
-                 * of non-bmp characters. */
-                if (inleft < 2) {
-                    if (!(flags & MBENC_FLUSH))
-                        return MBERR_TOOFEW;
-                    length = -1;
-                }
-                else
-                    length = 2;
-#if Py_UNICODE_SIZE == 2
-                if (length == 2) {
-                    ucs4_t u4in[2];
-                    u4in[0] = (ucs4_t)IN1;
-                    u4in[1] = (ucs4_t)IN2;
-                    encoded = dsg->encoder(u4in, &length);
-                } else
-                    encoded = dsg->encoder(&c, &length);
-#else
-                encoded = dsg->encoder(&c, &length);
-#endif
-                if (encoded != MAP_UNMAPPABLE) {
-                    insize = length;
-                    break;
-                }
-            }
-            else if (encoded != MAP_UNMAPPABLE)
-                break;
-        }
-
-        if (!dsg->mark)
-            return 1;
-        assert(dsg->width == 1 || dsg->width == 2);
-
-        switch (dsg->plane) {
-        case 0: /* G0 */
-            if (STATE_GETFLAG(F_SHIFTED)) {
-                WRITE1(SI)
-                STATE_CLEARFLAG(F_SHIFTED)
-                NEXT_OUT(1)
-            }
-            if (STATE_G0 != dsg->mark) {
-                if (dsg->width == 1) {
-                    WRITE3(ESC, '(', ESCMARK(dsg->mark))
-                    STATE_SETG0(dsg->mark)
-                    NEXT_OUT(3)
-                }
-                else if (dsg->mark == CHARSET_JISX0208) {
-                    WRITE3(ESC, '$', ESCMARK(dsg->mark))
-                    STATE_SETG0(dsg->mark)
-                    NEXT_OUT(3)
-                }
-                else {
-                    WRITE4(ESC, '$', '(',
-                        ESCMARK(dsg->mark))
-                    STATE_SETG0(dsg->mark)
-                    NEXT_OUT(4)
-                }
-            }
-            break;
-        case 1: /* G1 */
-            if (STATE_G1 != dsg->mark) {
-                if (dsg->width == 1) {
-                    WRITE3(ESC, ')', ESCMARK(dsg->mark))
-                    STATE_SETG1(dsg->mark)
-                    NEXT_OUT(3)
-                }
-                else {
-                    WRITE4(ESC, '$', ')',
-                        ESCMARK(dsg->mark))
-                    STATE_SETG1(dsg->mark)
-                    NEXT_OUT(4)
-                }
-            }
-            if (!STATE_GETFLAG(F_SHIFTED)) {
-                WRITE1(SO)
-                STATE_SETFLAG(F_SHIFTED)
-                NEXT_OUT(1)
-            }
-            break;
-        default: /* G2 and G3 is not supported: no encoding in
-                  * CJKCodecs are using them yet */
-            return MBERR_INTERNAL;
-        }
-
-        if (dsg->width == 1) {
-            WRITE1((unsigned char)encoded)
-            NEXT_OUT(1)
-        }
-        else {
-            WRITE2(encoded >> 8, encoded & 0xff)
-            NEXT_OUT(2)
-        }
-        NEXT_IN(insize)
-    }
-
-    return 0;
-}
-
-DECODER_INIT(iso2022)
-{
-    STATE_CLEARFLAGS()
-    STATE_SETG0(CHARSET_ASCII)
-    STATE_SETG1(CHARSET_ASCII)
-    STATE_SETG2(CHARSET_ASCII)
-    return 0;
-}
-
-DECODER_RESET(iso2022)
-{
-    STATE_SETG0(CHARSET_ASCII)
-    STATE_CLEARFLAG(F_SHIFTED)
-    return 0;
-}
-
-static Py_ssize_t
-iso2022processesc(const void *config, MultibyteCodec_State *state,
-                  const unsigned char **inbuf, Py_ssize_t *inleft)
-{
-    unsigned char charset, designation;
-    Py_ssize_t i, esclen;
-
-    for (i = 1;i < MAX_ESCSEQLEN;i++) {
-        if (i >= *inleft)
-            return MBERR_TOOFEW;
-        if (IS_ESCEND((*inbuf)[i])) {
-            esclen = i + 1;
-            break;
-        }
-        else if (CONFIG_ISSET(USE_JISX0208_EXT) && i+1 < *inleft &&
-                 (*inbuf)[i] == '&' && (*inbuf)[i+1] == '@')
-            i += 2;
-    }
-
-    if (i >= MAX_ESCSEQLEN)
-        return 1; /* unterminated escape sequence */
-
-    switch (esclen) {
-    case 3:
-        if (IN2 == '$') {
-            charset = IN3 | CHARSET_DBCS;
-            designation = 0;
-        }
-        else {
-            charset = IN3;
-            if (IN2 == '(') designation = 0;
-            else if (IN2 == ')') designation = 1;
-            else if (CONFIG_ISSET(USE_G2) && IN2 == '.')
-                designation = 2;
-            else return 3;
-        }
-        break;
-    case 4:
-        if (IN2 != '$')
-            return 4;
-
-        charset = IN4 | CHARSET_DBCS;
-        if (IN3 == '(') designation = 0;
-        else if (IN3 == ')') designation = 1;
-        else return 4;
-        break;
-    case 6: /* designation with prefix */
-        if (CONFIG_ISSET(USE_JISX0208_EXT) &&
-            (*inbuf)[3] == ESC && (*inbuf)[4] == '$' &&
-            (*inbuf)[5] == 'B') {
-            charset = 'B' | CHARSET_DBCS;
-            designation = 0;
-        }
-        else
-            return 6;
-        break;
-    default:
-        return esclen;
-    }
-
-    /* raise error when the charset is not designated for this encoding */
-    if (charset != CHARSET_ASCII) {
-        const struct iso2022_designation *dsg;
-
-        for (dsg = CONFIG_DESIGNATIONS; dsg->mark; dsg++)
-            if (dsg->mark == charset)
-                break;
-        if (!dsg->mark)
-            return esclen;
-    }
-
-    STATE_SETG(designation, charset)
-    *inleft -= esclen;
-    (*inbuf) += esclen;
-    return 0;
-}
-
-#define ISO8859_7_DECODE(c, assi)                                       \
-    if ((c) < 0xa0) (assi) = (c);                                       \
-    else if ((c) < 0xc0 && (0x288f3bc9L & (1L << ((c)-0xa0))))          \
-        (assi) = (c);                                                   \
-    else if ((c) >= 0xb4 && (c) <= 0xfe && ((c) >= 0xd4 ||              \
-             (0xbffffd77L & (1L << ((c)-0xb4)))))                       \
-        (assi) = 0x02d0 + (c);                                          \
-    else if ((c) == 0xa1) (assi) = 0x2018;                              \
-    else if ((c) == 0xa2) (assi) = 0x2019;                              \
-    else if ((c) == 0xaf) (assi) = 0x2015;
-
-static Py_ssize_t
-iso2022processg2(const void *config, MultibyteCodec_State *state,
-                 const unsigned char **inbuf, Py_ssize_t *inleft,
-                 Py_UNICODE **outbuf, Py_ssize_t *outleft)
-{
-    /* not written to use encoder, decoder functions because only few
-     * encodings use G2 designations in CJKCodecs */
-    if (STATE_G2 == CHARSET_ISO8859_1) {
-        if (IN3 < 0x80)
-            OUT1(IN3 + 0x80)
-        else
-            return 3;
-    }
-    else if (STATE_G2 == CHARSET_ISO8859_7) {
-        ISO8859_7_DECODE(IN3 ^ 0x80, **outbuf)
-        else return 3;
-    }
-    else if (STATE_G2 == CHARSET_ASCII) {
-        if (IN3 & 0x80) return 3;
-        else **outbuf = IN3;
-    }
-    else
-        return MBERR_INTERNAL;
-
-    (*inbuf) += 3;
-    *inleft -= 3;
-    (*outbuf) += 1;
-    *outleft -= 1;
-    return 0;
-}
-
-DECODER(iso2022)
-{
-    const struct iso2022_designation *dsgcache = NULL;
-
-    while (inleft > 0) {
-        unsigned char c = IN1;
-        Py_ssize_t err;
-
-        if (STATE_GETFLAG(F_ESCTHROUGHOUT)) {
-            /* ESC throughout mode:
-             * for non-iso2022 escape sequences */
-            WRITE1(c) /* assume as ISO-8859-1 */
-            NEXT(1, 1)
-            if (IS_ESCEND(c)) {
-                STATE_CLEARFLAG(F_ESCTHROUGHOUT)
-            }
-            continue;
-        }
-
-        switch (c) {
-        case ESC:
-            REQUIRE_INBUF(2)
-            if (IS_ISO2022ESC(IN2)) {
-                err = iso2022processesc(config, state,
-                                        inbuf, &inleft);
-                if (err != 0)
-                    return err;
-            }
-            else if (CONFIG_ISSET(USE_G2) && IN2 == 'N') {/* SS2 */
-                REQUIRE_INBUF(3)
-                err = iso2022processg2(config, state,
-                    inbuf, &inleft, outbuf, &outleft);
-                if (err != 0)
-                    return err;
-            }
-            else {
-                WRITE1(ESC)
-                STATE_SETFLAG(F_ESCTHROUGHOUT)
-                NEXT(1, 1)
-            }
-            break;
-        case SI:
-            if (CONFIG_ISSET(NO_SHIFT))
-                goto bypass;
-            STATE_CLEARFLAG(F_SHIFTED)
-            NEXT_IN(1)
-            break;
-        case SO:
-            if (CONFIG_ISSET(NO_SHIFT))
-                goto bypass;
-            STATE_SETFLAG(F_SHIFTED)
-            NEXT_IN(1)
-            break;
-        case LF:
-            STATE_CLEARFLAG(F_SHIFTED)
-            WRITE1(LF)
-            NEXT(1, 1)
-            break;
-        default:
-            if (c < 0x20) /* C0 */
-                goto bypass;
-            else if (c >= 0x80)
-                return 1;
-            else {
-                const struct iso2022_designation *dsg;
-                unsigned char charset;
-                ucs4_t decoded;
-
-                if (STATE_GETFLAG(F_SHIFTED))
-                    charset = STATE_G1;
-                else
-                    charset = STATE_G0;
-
-                if (charset == CHARSET_ASCII) {
-bypass:                                 WRITE1(c)
-                                        NEXT(1, 1)
-                                        break;
-                                }
-
-                                if (dsgcache != NULL &&
-                                    dsgcache->mark == charset)
-                                        dsg = dsgcache;
-                                else {
-                                        for (dsg = CONFIG_DESIGNATIONS;
-                                             dsg->mark != charset
-#ifdef Py_DEBUG
-                                                && dsg->mark != '\0'
-#endif
-                                             ;dsg++)
-                                                /* noop */;
-                                        assert(dsg->mark != '\0');
-                                        dsgcache = dsg;
-                                }
-
-                                REQUIRE_INBUF(dsg->width)
-                                decoded = dsg->decoder(*inbuf);
-                                if (decoded == MAP_UNMAPPABLE)
-                                        return dsg->width;
-
-                                if (decoded < 0x10000) {
-                                        WRITE1(decoded)
-                                        NEXT_OUT(1)
-                                }
-                                else if (decoded < 0x30000) {
-                                        WRITEUCS4(decoded)
-                                }
-                                else { /* JIS X 0213 pairs */
-                    WRITE2(decoded >> 16, decoded & 0xffff)
-                    NEXT_OUT(2)
-                }
-                NEXT_IN(dsg->width)
-            }
-            break;
-        }
-    }
-    return 0;
-}
-
-/*-*- mapping table holders -*-*/
-
-#define ENCMAP(enc) static const encode_map *enc##_encmap = NULL;
-#define DECMAP(enc) static const decode_map *enc##_decmap = NULL;
-
-/* kr */
-ENCMAP(cp949)
-DECMAP(ksx1001)
-
-/* jp */
-ENCMAP(jisxcommon)
-DECMAP(jisx0208)
-DECMAP(jisx0212)
-ENCMAP(jisx0213_bmp)
-DECMAP(jisx0213_1_bmp)
-DECMAP(jisx0213_2_bmp)
-ENCMAP(jisx0213_emp)
-DECMAP(jisx0213_1_emp)
-DECMAP(jisx0213_2_emp)
-
-/* cn */
-ENCMAP(gbcommon)
-DECMAP(gb2312)
-
-/* tw */
-
-/*-*- mapping access functions -*-*/
-
-static int
-ksx1001_init(void)
-{
-    static int initialized = 0;
-
-    if (!initialized && (
-                    IMPORT_MAP(kr, cp949, &cp949_encmap, NULL) ||
-                    IMPORT_MAP(kr, ksx1001, NULL, &ksx1001_decmap)))
-        return -1;
-    initialized = 1;
-    return 0;
-}
-
-static ucs4_t
-ksx1001_decoder(const unsigned char *data)
-{
-    ucs4_t u;
-    TRYMAP_DEC(ksx1001, u, data[0], data[1])
-        return u;
-    else
-        return MAP_UNMAPPABLE;
-}
-
-static DBCHAR
-ksx1001_encoder(const ucs4_t *data, Py_ssize_t *length)
-{
-    DBCHAR coded;
-    assert(*length == 1);
-    if (*data < 0x10000) {
-        TRYMAP_ENC(cp949, coded, *data)
-            if (!(coded & 0x8000))
-                return coded;
-    }
-    return MAP_UNMAPPABLE;
-}
-
-static int
-jisx0208_init(void)
-{
-    static int initialized = 0;
-
-    if (!initialized && (
-                    IMPORT_MAP(jp, jisxcommon, &jisxcommon_encmap, NULL) ||
-                    IMPORT_MAP(jp, jisx0208, NULL, &jisx0208_decmap)))
-        return -1;
-    initialized = 1;
-    return 0;
-}
-
-static ucs4_t
-jisx0208_decoder(const unsigned char *data)
-{
-    ucs4_t u;
-    if (data[0] == 0x21 && data[1] == 0x40) /* F/W REVERSE SOLIDUS */
-        return 0xff3c;
-    else TRYMAP_DEC(jisx0208, u, data[0], data[1])
-        return u;
-    else
-        return MAP_UNMAPPABLE;
-}
-
-static DBCHAR
-jisx0208_encoder(const ucs4_t *data, Py_ssize_t *length)
-{
-    DBCHAR coded;
-    assert(*length == 1);
-    if (*data < 0x10000) {
-        if (*data == 0xff3c) /* F/W REVERSE SOLIDUS */
-            return 0x2140;
-        else TRYMAP_ENC(jisxcommon, coded, *data) {
-            if (!(coded & 0x8000))
-                return coded;
-        }
-    }
-    return MAP_UNMAPPABLE;
-}
-
-static int
-jisx0212_init(void)
-{
-    static int initialized = 0;
-
-    if (!initialized && (
-                    IMPORT_MAP(jp, jisxcommon, &jisxcommon_encmap, NULL) ||
-                    IMPORT_MAP(jp, jisx0212, NULL, &jisx0212_decmap)))
-        return -1;
-    initialized = 1;
-    return 0;
-}
-
-static ucs4_t
-jisx0212_decoder(const unsigned char *data)
-{
-    ucs4_t u;
-    TRYMAP_DEC(jisx0212, u, data[0], data[1])
-        return u;
-    else
-        return MAP_UNMAPPABLE;
-}
-
-static DBCHAR
-jisx0212_encoder(const ucs4_t *data, Py_ssize_t *length)
-{
-    DBCHAR coded;
-    assert(*length == 1);
-    if (*data < 0x10000) {
-        TRYMAP_ENC(jisxcommon, coded, *data) {
-            if (coded & 0x8000)
-                return coded & 0x7fff;
-        }
-    }
-    return MAP_UNMAPPABLE;
-}
-
-static int
-jisx0213_init(void)
-{
-    static int initialized = 0;
-
-    if (!initialized && (
-                    jisx0208_init() ||
-                    IMPORT_MAP(jp, jisx0213_bmp,
-                               &jisx0213_bmp_encmap, NULL) ||
-                    IMPORT_MAP(jp, jisx0213_1_bmp,
-                               NULL, &jisx0213_1_bmp_decmap) ||
-                    IMPORT_MAP(jp, jisx0213_2_bmp,
-                               NULL, &jisx0213_2_bmp_decmap) ||
-                    IMPORT_MAP(jp, jisx0213_emp,
-                               &jisx0213_emp_encmap, NULL) ||
-                    IMPORT_MAP(jp, jisx0213_1_emp,
-                               NULL, &jisx0213_1_emp_decmap) ||
-                    IMPORT_MAP(jp, jisx0213_2_emp,
-                               NULL, &jisx0213_2_emp_decmap) ||
-                    IMPORT_MAP(jp, jisx0213_pair, &jisx0213_pair_encmap,
-                               &jisx0213_pair_decmap)))
-        return -1;
-    initialized = 1;
-    return 0;
-}
-
-#define config ((void *)2000)
-static ucs4_t
-jisx0213_2000_1_decoder(const unsigned char *data)
-{
-    ucs4_t u;
-    EMULATE_JISX0213_2000_DECODE_PLANE1(u, data[0], data[1])
-    else if (data[0] == 0x21 && data[1] == 0x40) /* F/W REVERSE SOLIDUS */
-        return 0xff3c;
-    else TRYMAP_DEC(jisx0208, u, data[0], data[1]);
-    else TRYMAP_DEC(jisx0213_1_bmp, u, data[0], data[1]);
-    else TRYMAP_DEC(jisx0213_1_emp, u, data[0], data[1])
-        u |= 0x20000;
-    else TRYMAP_DEC(jisx0213_pair, u, data[0], data[1]);
-    else
-        return MAP_UNMAPPABLE;
-    return u;
-}
-
-static ucs4_t
-jisx0213_2000_2_decoder(const unsigned char *data)
-{
-    ucs4_t u;
-    EMULATE_JISX0213_2000_DECODE_PLANE2(u, data[0], data[1])
-    TRYMAP_DEC(jisx0213_2_bmp, u, data[0], data[1]);
-    else TRYMAP_DEC(jisx0213_2_emp, u, data[0], data[1])
-        u |= 0x20000;
-    else
-        return MAP_UNMAPPABLE;
-    return u;
-}
-#undef config
-
-static ucs4_t
-jisx0213_2004_1_decoder(const unsigned char *data)
-{
-    ucs4_t u;
-    if (data[0] == 0x21 && data[1] == 0x40) /* F/W REVERSE SOLIDUS */
-        return 0xff3c;
-    else TRYMAP_DEC(jisx0208, u, data[0], data[1]);
-    else TRYMAP_DEC(jisx0213_1_bmp, u, data[0], data[1]);
-    else TRYMAP_DEC(jisx0213_1_emp, u, data[0], data[1])
-        u |= 0x20000;
-    else TRYMAP_DEC(jisx0213_pair, u, data[0], data[1]);
-    else
-        return MAP_UNMAPPABLE;
-    return u;
-}
-
-static ucs4_t
-jisx0213_2004_2_decoder(const unsigned char *data)
-{
-    ucs4_t u;
-    TRYMAP_DEC(jisx0213_2_bmp, u, data[0], data[1]);
-    else TRYMAP_DEC(jisx0213_2_emp, u, data[0], data[1])
-        u |= 0x20000;
-    else
-        return MAP_UNMAPPABLE;
-    return u;
-}
-
-static DBCHAR
-jisx0213_encoder(const ucs4_t *data, Py_ssize_t *length, void *config)
-{
-    DBCHAR coded;
-
-    switch (*length) {
-    case 1: /* first character */
-        if (*data >= 0x10000) {
-            if ((*data) >> 16 == 0x20000 >> 16) {
-                EMULATE_JISX0213_2000_ENCODE_EMP(coded, *data)
-                else TRYMAP_ENC(jisx0213_emp, coded,
-                                (*data) & 0xffff)
-                    return coded;
-            }
-            return MAP_UNMAPPABLE;
-        }
-
-        EMULATE_JISX0213_2000_ENCODE_BMP(coded, *data)
-        else TRYMAP_ENC(jisx0213_bmp, coded, *data) {
-            if (coded == MULTIC)
-                return MAP_MULTIPLE_AVAIL;
-        }
-        else TRYMAP_ENC(jisxcommon, coded, *data) {
-            if (coded & 0x8000)
-                return MAP_UNMAPPABLE;
-        }
-        else
-            return MAP_UNMAPPABLE;
-        return coded;
-    case 2: /* second character of unicode pair */
-        coded = find_pairencmap((ucs2_t)data[0], (ucs2_t)data[1],
-                        jisx0213_pair_encmap, JISX0213_ENCPAIRS);
-        if (coded == DBCINV) {
-            *length = 1;
-            coded = find_pairencmap((ucs2_t)data[0], 0,
-                      jisx0213_pair_encmap, JISX0213_ENCPAIRS);
-            if (coded == DBCINV)
-                return MAP_UNMAPPABLE;
-        }
-        else
-            return coded;
-    case -1: /* flush unterminated */
-        *length = 1;
-        coded = find_pairencmap((ucs2_t)data[0], 0,
-                        jisx0213_pair_encmap, JISX0213_ENCPAIRS);
-        if (coded == DBCINV)
-            return MAP_UNMAPPABLE;
-        else
-            return coded;
-    default:
-        return MAP_UNMAPPABLE;
-    }
-}
-
-static DBCHAR
-jisx0213_2000_1_encoder(const ucs4_t *data, Py_ssize_t *length)
-{
-    DBCHAR coded = jisx0213_encoder(data, length, (void *)2000);
-    if (coded == MAP_UNMAPPABLE || coded == MAP_MULTIPLE_AVAIL)
-        return coded;
-    else if (coded & 0x8000)
-        return MAP_UNMAPPABLE;
-    else
-        return coded;
-}
-
-static DBCHAR
-jisx0213_2000_1_encoder_paironly(const ucs4_t *data, Py_ssize_t *length)
-{
-    DBCHAR coded;
-    Py_ssize_t ilength = *length;
-
-    coded = jisx0213_encoder(data, length, (void *)2000);
-    switch (ilength) {
-    case 1:
-        if (coded == MAP_MULTIPLE_AVAIL)
-            return MAP_MULTIPLE_AVAIL;
-        else
-            return MAP_UNMAPPABLE;
-    case 2:
-        if (*length != 2)
-            return MAP_UNMAPPABLE;
-        else
-            return coded;
-    default:
-        return MAP_UNMAPPABLE;
-    }
-}
-
-static DBCHAR
-jisx0213_2000_2_encoder(const ucs4_t *data, Py_ssize_t *length)
-{
-    DBCHAR coded = jisx0213_encoder(data, length, (void *)2000);
-    if (coded == MAP_UNMAPPABLE || coded == MAP_MULTIPLE_AVAIL)
-        return coded;
-    else if (coded & 0x8000)
-        return coded & 0x7fff;
-    else
-        return MAP_UNMAPPABLE;
-}
-
-static DBCHAR
-jisx0213_2004_1_encoder(const ucs4_t *data, Py_ssize_t *length)
-{
-    DBCHAR coded = jisx0213_encoder(data, length, NULL);
-    if (coded == MAP_UNMAPPABLE || coded == MAP_MULTIPLE_AVAIL)
-        return coded;
-    else if (coded & 0x8000)
-        return MAP_UNMAPPABLE;
-    else
-        return coded;
-}
-
-static DBCHAR
-jisx0213_2004_1_encoder_paironly(const ucs4_t *data, Py_ssize_t *length)
-{
-    DBCHAR coded;
-    Py_ssize_t ilength = *length;
-
-    coded = jisx0213_encoder(data, length, NULL);
-    switch (ilength) {
-    case 1:
-        if (coded == MAP_MULTIPLE_AVAIL)
-            return MAP_MULTIPLE_AVAIL;
-        else
-            return MAP_UNMAPPABLE;
-    case 2:
-        if (*length != 2)
-            return MAP_UNMAPPABLE;
-        else
-            return coded;
-    default:
-        return MAP_UNMAPPABLE;
-    }
-}
-
-static DBCHAR
-jisx0213_2004_2_encoder(const ucs4_t *data, Py_ssize_t *length)
-{
-    DBCHAR coded = jisx0213_encoder(data, length, NULL);
-    if (coded == MAP_UNMAPPABLE || coded == MAP_MULTIPLE_AVAIL)
-        return coded;
-    else if (coded & 0x8000)
-        return coded & 0x7fff;
-    else
-        return MAP_UNMAPPABLE;
-}
-
-static ucs4_t
-jisx0201_r_decoder(const unsigned char *data)
-{
-    ucs4_t u;
-    JISX0201_R_DECODE(*data, u)
-    else return MAP_UNMAPPABLE;
-    return u;
-}
-
-static DBCHAR
-jisx0201_r_encoder(const ucs4_t *data, Py_ssize_t *length)
-{
-    DBCHAR coded;
-    JISX0201_R_ENCODE(*data, coded)
-    else return MAP_UNMAPPABLE;
-    return coded;
-}
-
-static ucs4_t
-jisx0201_k_decoder(const unsigned char *data)
-{
-    ucs4_t u;
-    JISX0201_K_DECODE(*data ^ 0x80, u)
-    else return MAP_UNMAPPABLE;
-    return u;
-}
-
-static DBCHAR
-jisx0201_k_encoder(const ucs4_t *data, Py_ssize_t *length)
-{
-    DBCHAR coded;
-    JISX0201_K_ENCODE(*data, coded)
-    else return MAP_UNMAPPABLE;
-    return coded - 0x80;
-}
-
-static int
-gb2312_init(void)
-{
-    static int initialized = 0;
-
-    if (!initialized && (
-                    IMPORT_MAP(cn, gbcommon, &gbcommon_encmap, NULL) ||
-                    IMPORT_MAP(cn, gb2312, NULL, &gb2312_decmap)))
-        return -1;
-    initialized = 1;
-    return 0;
-}
-
-static ucs4_t
-gb2312_decoder(const unsigned char *data)
-{
-    ucs4_t u;
-    TRYMAP_DEC(gb2312, u, data[0], data[1])
-        return u;
-    else
-        return MAP_UNMAPPABLE;
-}
-
-static DBCHAR
-gb2312_encoder(const ucs4_t *data, Py_ssize_t *length)
-{
-    DBCHAR coded;
-    assert(*length == 1);
-    if (*data < 0x10000) {
-        TRYMAP_ENC(gbcommon, coded, *data) {
-            if (!(coded & 0x8000))
-                return coded;
-        }
-    }
-    return MAP_UNMAPPABLE;
-}
-
-
-static ucs4_t
-dummy_decoder(const unsigned char *data)
-{
-    return MAP_UNMAPPABLE;
-}
-
-static DBCHAR
-dummy_encoder(const ucs4_t *data, Py_ssize_t *length)
-{
-    return MAP_UNMAPPABLE;
-}
-
-/*-*- registry tables -*-*/
-
-#define REGISTRY_KSX1001_G0     { CHARSET_KSX1001, 0, 2,                \
-                  ksx1001_init,                                         \
-                  ksx1001_decoder, ksx1001_encoder }
-#define REGISTRY_KSX1001_G1     { CHARSET_KSX1001, 1, 2,                \
-                  ksx1001_init,                                         \
-                  ksx1001_decoder, ksx1001_encoder }
-#define REGISTRY_JISX0201_R     { CHARSET_JISX0201_R, 0, 1,             \
-                  NULL,                                                 \
-                  jisx0201_r_decoder, jisx0201_r_encoder }
-#define REGISTRY_JISX0201_K     { CHARSET_JISX0201_K, 0, 1,             \
-                  NULL,                                                 \
-                  jisx0201_k_decoder, jisx0201_k_encoder }
-#define REGISTRY_JISX0208       { CHARSET_JISX0208, 0, 2,               \
-                  jisx0208_init,                                        \
-                  jisx0208_decoder, jisx0208_encoder }
-#define REGISTRY_JISX0208_O     { CHARSET_JISX0208_O, 0, 2,             \
-                  jisx0208_init,                                        \
-                  jisx0208_decoder, jisx0208_encoder }
-#define REGISTRY_JISX0212       { CHARSET_JISX0212, 0, 2,               \
-                  jisx0212_init,                                        \
-                  jisx0212_decoder, jisx0212_encoder }
-#define REGISTRY_JISX0213_2000_1 { CHARSET_JISX0213_2000_1, 0, 2,       \
-                  jisx0213_init,                                        \
-                  jisx0213_2000_1_decoder,                              \
-                  jisx0213_2000_1_encoder }
-#define REGISTRY_JISX0213_2000_1_PAIRONLY { CHARSET_JISX0213_2000_1, 0, 2, \
-                  jisx0213_init,                                        \
-                  jisx0213_2000_1_decoder,                              \
-                  jisx0213_2000_1_encoder_paironly }
-#define REGISTRY_JISX0213_2000_2 { CHARSET_JISX0213_2, 0, 2,            \
-                  jisx0213_init,                                        \
-                  jisx0213_2000_2_decoder,                              \
-                  jisx0213_2000_2_encoder }
-#define REGISTRY_JISX0213_2004_1 { CHARSET_JISX0213_2004_1, 0, 2,       \
-                  jisx0213_init,                                        \
-                  jisx0213_2004_1_decoder,                              \
-                  jisx0213_2004_1_encoder }
-#define REGISTRY_JISX0213_2004_1_PAIRONLY { CHARSET_JISX0213_2004_1, 0, 2, \
-                  jisx0213_init,                                        \
-                  jisx0213_2004_1_decoder,                              \
-                  jisx0213_2004_1_encoder_paironly }
-#define REGISTRY_JISX0213_2004_2 { CHARSET_JISX0213_2, 0, 2,            \
-                  jisx0213_init,                                        \
-                  jisx0213_2004_2_decoder,                              \
-                  jisx0213_2004_2_encoder }
-#define REGISTRY_GB2312         { CHARSET_GB2312, 0, 2,                 \
-                  gb2312_init,                                          \
-                  gb2312_decoder, gb2312_encoder }
-#define REGISTRY_CNS11643_1     { CHARSET_CNS11643_1, 1, 2,             \
-                  cns11643_init,                                        \
-                  cns11643_1_decoder, cns11643_1_encoder }
-#define REGISTRY_CNS11643_2     { CHARSET_CNS11643_2, 2, 2,             \
-                  cns11643_init,                                        \
-                  cns11643_2_decoder, cns11643_2_encoder }
-#define REGISTRY_ISO8859_1      { CHARSET_ISO8859_1, 2, 1,              \
-                  NULL, dummy_decoder, dummy_encoder }
-#define REGISTRY_ISO8859_7      { CHARSET_ISO8859_7, 2, 1,              \
-                  NULL, dummy_decoder, dummy_encoder }
-#define REGISTRY_SENTINEL       { 0, }
-#define CONFIGDEF(var, attrs)                                           \
-    static const struct iso2022_config iso2022_##var##_config = {       \
-        attrs, iso2022_##var##_designations                             \
-    };
-
-static const struct iso2022_designation iso2022_kr_designations[] = {
-    REGISTRY_KSX1001_G1, REGISTRY_SENTINEL
-};
-CONFIGDEF(kr, 0)
-
-static const struct iso2022_designation iso2022_jp_designations[] = {
-    REGISTRY_JISX0208, REGISTRY_JISX0201_R, REGISTRY_JISX0208_O,
-    REGISTRY_SENTINEL
-};
-CONFIGDEF(jp, NO_SHIFT | USE_JISX0208_EXT)
-
-static const struct iso2022_designation iso2022_jp_1_designations[] = {
-    REGISTRY_JISX0208, REGISTRY_JISX0212, REGISTRY_JISX0201_R,
-    REGISTRY_JISX0208_O, REGISTRY_SENTINEL
-};
-CONFIGDEF(jp_1, NO_SHIFT | USE_JISX0208_EXT)
-
-static const struct iso2022_designation iso2022_jp_2_designations[] = {
-    REGISTRY_JISX0208, REGISTRY_JISX0212, REGISTRY_KSX1001_G0,
-    REGISTRY_GB2312, REGISTRY_JISX0201_R, REGISTRY_JISX0208_O,
-    REGISTRY_ISO8859_1, REGISTRY_ISO8859_7, REGISTRY_SENTINEL
-};
-CONFIGDEF(jp_2, NO_SHIFT | USE_G2 | USE_JISX0208_EXT)
-
-static const struct iso2022_designation iso2022_jp_2004_designations[] = {
-    REGISTRY_JISX0213_2004_1_PAIRONLY, REGISTRY_JISX0208,
-    REGISTRY_JISX0213_2004_1, REGISTRY_JISX0213_2004_2, REGISTRY_SENTINEL
-};
-CONFIGDEF(jp_2004, NO_SHIFT | USE_JISX0208_EXT)
-
-static const struct iso2022_designation iso2022_jp_3_designations[] = {
-    REGISTRY_JISX0213_2000_1_PAIRONLY, REGISTRY_JISX0208,
-    REGISTRY_JISX0213_2000_1, REGISTRY_JISX0213_2000_2, REGISTRY_SENTINEL
-};
-CONFIGDEF(jp_3, NO_SHIFT | USE_JISX0208_EXT)
-
-static const struct iso2022_designation iso2022_jp_ext_designations[] = {
-    REGISTRY_JISX0208, REGISTRY_JISX0212, REGISTRY_JISX0201_R,
-    REGISTRY_JISX0201_K, REGISTRY_JISX0208_O, REGISTRY_SENTINEL
-};
-CONFIGDEF(jp_ext, NO_SHIFT | USE_JISX0208_EXT)
-
-
-BEGIN_MAPPINGS_LIST
-  /* no mapping table here */
-END_MAPPINGS_LIST
-
-#define ISO2022_CODEC(variation) {              \
-    "iso2022_" #variation,                      \
-    &iso2022_##variation##_config,              \
-    iso2022_codec_init,                         \
-    _STATEFUL_METHODS(iso2022)                  \
-},
-
-BEGIN_CODECS_LIST
-  ISO2022_CODEC(kr)
-  ISO2022_CODEC(jp)
-  ISO2022_CODEC(jp_1)
-  ISO2022_CODEC(jp_2)
-  ISO2022_CODEC(jp_2004)
-  ISO2022_CODEC(jp_3)
-  ISO2022_CODEC(jp_ext)
-END_CODECS_LIST
-
-I_AM_A_MODULE_FOR(iso2022)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_jp.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_jp.c
deleted file mode 100644
index f2d9b30..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_jp.c
+++ /dev/null
@@ -1,731 +0,0 @@
-/*
- * _codecs_jp.c: Codecs collection for Japanese encodings
- *
- * Written by Hye-Shik Chang <perky@FreeBSD.org>
- */
-
-#define USING_BINARY_PAIR_SEARCH
-#define EMPBASE 0x20000
-
-#include "cjkcodecs.h"
-#include "mappings_jp.h"
-#include "mappings_jisx0213_pair.h"
-#include "alg_jisx0201.h"
-#include "emu_jisx0213_2000.h"
-
-/*
- * CP932 codec
- */
-
-ENCODER(cp932)
-{
-    while (inleft > 0) {
-        Py_UNICODE c = IN1;
-        DBCHAR code;
-        unsigned char c1, c2;
-
-        if (c <= 0x80) {
-            WRITE1((unsigned char)c)
-            NEXT(1, 1)
-            continue;
-        }
-        else if (c >= 0xff61 && c <= 0xff9f) {
-            WRITE1(c - 0xfec0)
-            NEXT(1, 1)
-            continue;
-        }
-        else if (c >= 0xf8f0 && c <= 0xf8f3) {
-            /* Windows compatibility */
-            REQUIRE_OUTBUF(1)
-            if (c == 0xf8f0)
-                OUT1(0xa0)
-            else
-                OUT1(c - 0xfef1 + 0xfd)
-            NEXT(1, 1)
-            continue;
-        }
-
-        UCS4INVALID(c)
-        REQUIRE_OUTBUF(2)
-
-        TRYMAP_ENC(cp932ext, code, c) {
-            OUT1(code >> 8)
-            OUT2(code & 0xff)
-        }
-        else TRYMAP_ENC(jisxcommon, code, c) {
-            if (code & 0x8000) /* MSB set: JIS X 0212 */
-                return 1;
-
-            /* JIS X 0208 */
-            c1 = code >> 8;
-            c2 = code & 0xff;
-            c2 = (((c1 - 0x21) & 1) ? 0x5e : 0) + (c2 - 0x21);
-            c1 = (c1 - 0x21) >> 1;
-            OUT1(c1 < 0x1f ? c1 + 0x81 : c1 + 0xc1)
-            OUT2(c2 < 0x3f ? c2 + 0x40 : c2 + 0x41)
-        }
-        else if (c >= 0xe000 && c < 0xe758) {
-            /* User-defined area */
-            c1 = (Py_UNICODE)(c - 0xe000) / 188;
-            c2 = (Py_UNICODE)(c - 0xe000) % 188;
-            OUT1(c1 + 0xf0)
-            OUT2(c2 < 0x3f ? c2 + 0x40 : c2 + 0x41)
-        }
-        else
-            return 1;
-
-        NEXT(1, 2)
-    }
-
-    return 0;
-}
-
-DECODER(cp932)
-{
-    while (inleft > 0) {
-        unsigned char c = IN1, c2;
-
-        REQUIRE_OUTBUF(1)
-        if (c <= 0x80) {
-            OUT1(c)
-            NEXT(1, 1)
-            continue;
-        }
-        else if (c >= 0xa0 && c <= 0xdf) {
-            if (c == 0xa0)
-                OUT1(0xf8f0) /* half-width katakana */
-            else
-                OUT1(0xfec0 + c)
-            NEXT(1, 1)
-            continue;
-        }
-        else if (c >= 0xfd/* && c <= 0xff*/) {
-            /* Windows compatibility */
-            OUT1(0xf8f1 - 0xfd + c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        REQUIRE_INBUF(2)
-        c2 = IN2;
-
-        TRYMAP_DEC(cp932ext, **outbuf, c, c2);
-        else if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xea)){
-            if (c2 < 0x40 || (c2 > 0x7e && c2 < 0x80) || c2 > 0xfc)
-                return 2;
-
-            c = (c < 0xe0 ? c - 0x81 : c - 0xc1);
-            c2 = (c2 < 0x80 ? c2 - 0x40 : c2 - 0x41);
-            c = (2 * c + (c2 < 0x5e ? 0 : 1) + 0x21);
-            c2 = (c2 < 0x5e ? c2 : c2 - 0x5e) + 0x21;
-
-            TRYMAP_DEC(jisx0208, **outbuf, c, c2);
-            else return 2;
-        }
-        else if (c >= 0xf0 && c <= 0xf9) {
-            if ((c2 >= 0x40 && c2 <= 0x7e) ||
-                (c2 >= 0x80 && c2 <= 0xfc))
-                OUT1(0xe000 + 188 * (c - 0xf0) +
-                     (c2 < 0x80 ? c2 - 0x40 : c2 - 0x41))
-            else
-                return 2;
-        }
-        else
-            return 2;
-
-        NEXT(2, 1)
-    }
-
-    return 0;
-}
-
-
-/*
- * EUC-JIS-2004 codec
- */
-
-ENCODER(euc_jis_2004)
-{
-    while (inleft > 0) {
-        ucs4_t c = IN1;
-        DBCHAR code;
-        Py_ssize_t insize;
-
-        if (c < 0x80) {
-            WRITE1(c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        DECODE_SURROGATE(c)
-        insize = GET_INSIZE(c);
-
-        if (c <= 0xFFFF) {
-            EMULATE_JISX0213_2000_ENCODE_BMP(code, c)
-            else TRYMAP_ENC(jisx0213_bmp, code, c) {
-                if (code == MULTIC) {
-                    if (inleft < 2) {
-                        if (flags & MBENC_FLUSH) {
-                            code = find_pairencmap(
-                                (ucs2_t)c, 0,
-                              jisx0213_pair_encmap,
-                                JISX0213_ENCPAIRS);
-                            if (code == DBCINV)
-                                return 1;
-                        }
-                        else
-                            return MBERR_TOOFEW;
-                    }
-                    else {
-                        code = find_pairencmap(
-                            (ucs2_t)c, (*inbuf)[1],
-                            jisx0213_pair_encmap,
-                            JISX0213_ENCPAIRS);
-                        if (code == DBCINV) {
-                            code = find_pairencmap(
-                                (ucs2_t)c, 0,
-                              jisx0213_pair_encmap,
-                                JISX0213_ENCPAIRS);
-                            if (code == DBCINV)
-                                return 1;
-                        } else
-                            insize = 2;
-                    }
-                }
-            }
-            else TRYMAP_ENC(jisxcommon, code, c);
-            else if (c >= 0xff61 && c <= 0xff9f) {
-                /* JIS X 0201 half-width katakana */
-                WRITE2(0x8e, c - 0xfec0)
-                NEXT(1, 2)
-                continue;
-            }
-            else if (c == 0xff3c)
-                /* F/W REVERSE SOLIDUS (see NOTES) */
-                code = 0x2140;
-            else if (c == 0xff5e)
-                /* F/W TILDE (see NOTES) */
-                code = 0x2232;
-            else
-                return 1;
-        }
-        else if (c >> 16 == EMPBASE >> 16) {
-            EMULATE_JISX0213_2000_ENCODE_EMP(code, c)
-            else TRYMAP_ENC(jisx0213_emp, code, c & 0xffff);
-            else return insize;
-        }
-        else
-            return insize;
-
-        if (code & 0x8000) {
-            /* Codeset 2 */
-            WRITE3(0x8f, code >> 8, (code & 0xFF) | 0x80)
-            NEXT(insize, 3)
-        } else {
-            /* Codeset 1 */
-            WRITE2((code >> 8) | 0x80, (code & 0xFF) | 0x80)
-            NEXT(insize, 2)
-        }
-    }
-
-    return 0;
-}
-
-DECODER(euc_jis_2004)
-{
-    while (inleft > 0) {
-        unsigned char c = IN1;
-        ucs4_t code;
-
-        REQUIRE_OUTBUF(1)
-
-        if (c < 0x80) {
-            OUT1(c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        if (c == 0x8e) {
-            /* JIS X 0201 half-width katakana */
-            unsigned char c2;
-
-            REQUIRE_INBUF(2)
-            c2 = IN2;
-            if (c2 >= 0xa1 && c2 <= 0xdf) {
-                OUT1(0xfec0 + c2)
-                NEXT(2, 1)
-            }
-            else
-                return 2;
-        }
-        else if (c == 0x8f) {
-            unsigned char c2, c3;
-
-            REQUIRE_INBUF(3)
-            c2 = IN2 ^ 0x80;
-            c3 = IN3 ^ 0x80;
-
-            /* JIS X 0213 Plane 2 or JIS X 0212 (see NOTES) */
-            EMULATE_JISX0213_2000_DECODE_PLANE2(**outbuf, c2, c3)
-            else TRYMAP_DEC(jisx0213_2_bmp, **outbuf, c2, c3) ;
-            else TRYMAP_DEC(jisx0213_2_emp, code, c2, c3) {
-                WRITEUCS4(EMPBASE | code)
-                NEXT_IN(3)
-                continue;
-            }
-            else TRYMAP_DEC(jisx0212, **outbuf, c2, c3) ;
-            else return 3;
-            NEXT(3, 1)
-        }
-        else {
-            unsigned char c2;
-
-            REQUIRE_INBUF(2)
-            c ^= 0x80;
-            c2 = IN2 ^ 0x80;
-
-            /* JIS X 0213 Plane 1 */
-            EMULATE_JISX0213_2000_DECODE_PLANE1(**outbuf, c, c2)
-            else if (c == 0x21 && c2 == 0x40) **outbuf = 0xff3c;
-            else if (c == 0x22 && c2 == 0x32) **outbuf = 0xff5e;
-            else TRYMAP_DEC(jisx0208, **outbuf, c, c2);
-            else TRYMAP_DEC(jisx0213_1_bmp, **outbuf, c, c2);
-            else TRYMAP_DEC(jisx0213_1_emp, code, c, c2) {
-                WRITEUCS4(EMPBASE | code)
-                NEXT_IN(2)
-                continue;
-            }
-            else TRYMAP_DEC(jisx0213_pair, code, c, c2) {
-                WRITE2(code >> 16, code & 0xffff)
-                NEXT(2, 2)
-                continue;
-            }
-            else return 2;
-            NEXT(2, 1)
-        }
-    }
-
-    return 0;
-}
-
-
-/*
- * EUC-JP codec
- */
-
-ENCODER(euc_jp)
-{
-    while (inleft > 0) {
-        Py_UNICODE c = IN1;
-        DBCHAR code;
-
-        if (c < 0x80) {
-            WRITE1((unsigned char)c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        UCS4INVALID(c)
-
-        TRYMAP_ENC(jisxcommon, code, c);
-        else if (c >= 0xff61 && c <= 0xff9f) {
-            /* JIS X 0201 half-width katakana */
-            WRITE2(0x8e, c - 0xfec0)
-            NEXT(1, 2)
-            continue;
-        }
-#ifndef STRICT_BUILD
-        else if (c == 0xff3c) /* FULL-WIDTH REVERSE SOLIDUS */
-            code = 0x2140;
-        else if (c == 0xa5) { /* YEN SIGN */
-            WRITE1(0x5c);
-            NEXT(1, 1)
-            continue;
-        } else if (c == 0x203e) { /* OVERLINE */
-            WRITE1(0x7e);
-            NEXT(1, 1)
-            continue;
-        }
-#endif
-        else
-            return 1;
-
-        if (code & 0x8000) {
-            /* JIS X 0212 */
-            WRITE3(0x8f, code >> 8, (code & 0xFF) | 0x80)
-            NEXT(1, 3)
-        } else {
-            /* JIS X 0208 */
-            WRITE2((code >> 8) | 0x80, (code & 0xFF) | 0x80)
-            NEXT(1, 2)
-        }
-    }
-
-    return 0;
-}
-
-DECODER(euc_jp)
-{
-    while (inleft > 0) {
-        unsigned char c = IN1;
-
-        REQUIRE_OUTBUF(1)
-
-            if (c < 0x80) {
-                OUT1(c)
-                NEXT(1, 1)
-                continue;
-            }
-
-        if (c == 0x8e) {
-            /* JIS X 0201 half-width katakana */
-            unsigned char c2;
-
-            REQUIRE_INBUF(2)
-            c2 = IN2;
-            if (c2 >= 0xa1 && c2 <= 0xdf) {
-                OUT1(0xfec0 + c2)
-                NEXT(2, 1)
-            }
-            else
-                return 2;
-        }
-        else if (c == 0x8f) {
-            unsigned char c2, c3;
-
-            REQUIRE_INBUF(3)
-            c2 = IN2;
-            c3 = IN3;
-            /* JIS X 0212 */
-            TRYMAP_DEC(jisx0212, **outbuf, c2 ^ 0x80, c3 ^ 0x80) {
-                NEXT(3, 1)
-            }
-            else
-                return 3;
-        }
-        else {
-            unsigned char c2;
-
-            REQUIRE_INBUF(2)
-            c2 = IN2;
-            /* JIS X 0208 */
-#ifndef STRICT_BUILD
-            if (c == 0xa1 && c2 == 0xc0)
-                /* FULL-WIDTH REVERSE SOLIDUS */
-                **outbuf = 0xff3c;
-            else
-#endif
-                TRYMAP_DEC(jisx0208, **outbuf,
-                           c ^ 0x80, c2 ^ 0x80) ;
-            else return 2;
-            NEXT(2, 1)
-        }
-    }
-
-    return 0;
-}
-
-
-/*
- * SHIFT_JIS codec
- */
-
-ENCODER(shift_jis)
-{
-    while (inleft > 0) {
-        Py_UNICODE c = IN1;
-        DBCHAR code;
-        unsigned char c1, c2;
-
-#ifdef STRICT_BUILD
-        JISX0201_R_ENCODE(c, code)
-#else
-        if (c < 0x80) code = c;
-        else if (c == 0x00a5) code = 0x5c; /* YEN SIGN */
-        else if (c == 0x203e) code = 0x7e; /* OVERLINE */
-#endif
-        else JISX0201_K_ENCODE(c, code)
-        else UCS4INVALID(c)
-        else code = NOCHAR;
-
-        if (code < 0x80 || (code >= 0xa1 && code <= 0xdf)) {
-            REQUIRE_OUTBUF(1)
-
-            OUT1((unsigned char)code)
-            NEXT(1, 1)
-            continue;
-        }
-
-        REQUIRE_OUTBUF(2)
-
-        if (code == NOCHAR) {
-            TRYMAP_ENC(jisxcommon, code, c);
-#ifndef STRICT_BUILD
-            else if (c == 0xff3c)
-                code = 0x2140; /* FULL-WIDTH REVERSE SOLIDUS */
-#endif
-            else
-                return 1;
-
-            if (code & 0x8000) /* MSB set: JIS X 0212 */
-                return 1;
-        }
-
-        c1 = code >> 8;
-        c2 = code & 0xff;
-        c2 = (((c1 - 0x21) & 1) ? 0x5e : 0) + (c2 - 0x21);
-        c1 = (c1 - 0x21) >> 1;
-        OUT1(c1 < 0x1f ? c1 + 0x81 : c1 + 0xc1)
-        OUT2(c2 < 0x3f ? c2 + 0x40 : c2 + 0x41)
-        NEXT(1, 2)
-    }
-
-    return 0;
-}
-
-DECODER(shift_jis)
-{
-    while (inleft > 0) {
-        unsigned char c = IN1;
-
-        REQUIRE_OUTBUF(1)
-
-#ifdef STRICT_BUILD
-        JISX0201_R_DECODE(c, **outbuf)
-#else
-        if (c < 0x80) **outbuf = c;
-#endif
-        else JISX0201_K_DECODE(c, **outbuf)
-        else if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xea)){
-            unsigned char c1, c2;
-
-            REQUIRE_INBUF(2)
-            c2 = IN2;
-            if (c2 < 0x40 || (c2 > 0x7e && c2 < 0x80) || c2 > 0xfc)
-                return 2;
-
-            c1 = (c < 0xe0 ? c - 0x81 : c - 0xc1);
-            c2 = (c2 < 0x80 ? c2 - 0x40 : c2 - 0x41);
-            c1 = (2 * c1 + (c2 < 0x5e ? 0 : 1) + 0x21);
-            c2 = (c2 < 0x5e ? c2 : c2 - 0x5e) + 0x21;
-
-#ifndef STRICT_BUILD
-            if (c1 == 0x21 && c2 == 0x40) {
-                /* FULL-WIDTH REVERSE SOLIDUS */
-                OUT1(0xff3c)
-                NEXT(2, 1)
-                continue;
-            }
-#endif
-            TRYMAP_DEC(jisx0208, **outbuf, c1, c2) {
-                NEXT(2, 1)
-                continue;
-            }
-            else
-                return 2;
-        }
-        else
-            return 2;
-
-        NEXT(1, 1) /* JIS X 0201 */
-    }
-
-    return 0;
-}
-
-
-/*
- * SHIFT_JIS-2004 codec
- */
-
-ENCODER(shift_jis_2004)
-{
-    while (inleft > 0) {
-        ucs4_t c = IN1;
-        DBCHAR code = NOCHAR;
-        int c1, c2;
-        Py_ssize_t insize;
-
-        JISX0201_ENCODE(c, code)
-        else DECODE_SURROGATE(c)
-
-        if (code < 0x80 || (code >= 0xa1 && code <= 0xdf)) {
-            WRITE1((unsigned char)code)
-            NEXT(1, 1)
-            continue;
-        }
-
-        REQUIRE_OUTBUF(2)
-        insize = GET_INSIZE(c);
-
-        if (code == NOCHAR) {
-            if (c <= 0xffff) {
-                EMULATE_JISX0213_2000_ENCODE_BMP(code, c)
-                else TRYMAP_ENC(jisx0213_bmp, code, c) {
-                    if (code == MULTIC) {
-                        if (inleft < 2) {
-                            if (flags & MBENC_FLUSH) {
-                            code = find_pairencmap
-                                ((ucs2_t)c, 0,
-                              jisx0213_pair_encmap,
-                                JISX0213_ENCPAIRS);
-                            if (code == DBCINV)
-                                return 1;
-                            }
-                            else
-                                return MBERR_TOOFEW;
-                        }
-                        else {
-                            code = find_pairencmap(
-                                (ucs2_t)c, IN2,
-                              jisx0213_pair_encmap,
-                                JISX0213_ENCPAIRS);
-                            if (code == DBCINV) {
-                            code = find_pairencmap(
-                                (ucs2_t)c, 0,
-                              jisx0213_pair_encmap,
-                                JISX0213_ENCPAIRS);
-                            if (code == DBCINV)
-                                return 1;
-                            }
-                            else
-                                insize = 2;
-                        }
-                    }
-                }
-                else TRYMAP_ENC(jisxcommon, code, c) {
-                    /* abandon JIS X 0212 codes */
-                    if (code & 0x8000)
-                        return 1;
-                }
-                else return 1;
-            }
-            else if (c >> 16 == EMPBASE >> 16) {
-                EMULATE_JISX0213_2000_ENCODE_EMP(code, c)
-                else TRYMAP_ENC(jisx0213_emp, code, c&0xffff);
-                else return insize;
-            }
-            else
-                return insize;
-        }
-
-        c1 = code >> 8;
-        c2 = (code & 0xff) - 0x21;
-
-        if (c1 & 0x80) { /* Plane 2 */
-            if (c1 >= 0xee) c1 -= 0x87;
-            else if (c1 >= 0xac || c1 == 0xa8) c1 -= 0x49;
-            else c1 -= 0x43;
-        }
-        else /* Plane 1 */
-            c1 -= 0x21;
-
-        if (c1 & 1) c2 += 0x5e;
-        c1 >>= 1;
-        OUT1(c1 + (c1 < 0x1f ? 0x81 : 0xc1))
-        OUT2(c2 + (c2 < 0x3f ? 0x40 : 0x41))
-
-        NEXT(insize, 2)
-    }
-
-    return 0;
-}
-
-DECODER(shift_jis_2004)
-{
-    while (inleft > 0) {
-        unsigned char c = IN1;
-
-        REQUIRE_OUTBUF(1)
-        JISX0201_DECODE(c, **outbuf)
-        else if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xfc)){
-            unsigned char c1, c2;
-            ucs4_t code;
-
-            REQUIRE_INBUF(2)
-            c2 = IN2;
-            if (c2 < 0x40 || (c2 > 0x7e && c2 < 0x80) || c2 > 0xfc)
-                return 2;
-
-            c1 = (c < 0xe0 ? c - 0x81 : c - 0xc1);
-            c2 = (c2 < 0x80 ? c2 - 0x40 : c2 - 0x41);
-            c1 = (2 * c1 + (c2 < 0x5e ? 0 : 1));
-            c2 = (c2 < 0x5e ? c2 : c2 - 0x5e) + 0x21;
-
-            if (c1 < 0x5e) { /* Plane 1 */
-                c1 += 0x21;
-                EMULATE_JISX0213_2000_DECODE_PLANE1(**outbuf,
-                                c1, c2)
-                else TRYMAP_DEC(jisx0208, **outbuf, c1, c2) {
-                    NEXT_OUT(1)
-                }
-                else TRYMAP_DEC(jisx0213_1_bmp, **outbuf,
-                                c1, c2) {
-                    NEXT_OUT(1)
-                }
-                else TRYMAP_DEC(jisx0213_1_emp, code, c1, c2) {
-                    WRITEUCS4(EMPBASE | code)
-                }
-                else TRYMAP_DEC(jisx0213_pair, code, c1, c2) {
-                    WRITE2(code >> 16, code & 0xffff)
-                    NEXT_OUT(2)
-                }
-                else
-                    return 2;
-                NEXT_IN(2)
-            }
-            else { /* Plane 2 */
-                if (c1 >= 0x67) c1 += 0x07;
-                else if (c1 >= 0x63 || c1 == 0x5f) c1 -= 0x37;
-                else c1 -= 0x3d;
-
-                EMULATE_JISX0213_2000_DECODE_PLANE2(**outbuf,
-                                c1, c2)
-                else TRYMAP_DEC(jisx0213_2_bmp, **outbuf,
-                                c1, c2) ;
-                else TRYMAP_DEC(jisx0213_2_emp, code, c1, c2) {
-                    WRITEUCS4(EMPBASE | code)
-                    NEXT_IN(2)
-                    continue;
-                }
-                else
-                    return 2;
-                NEXT(2, 1)
-            }
-            continue;
-        }
-        else
-            return 2;
-
-        NEXT(1, 1) /* JIS X 0201 */
-    }
-
-    return 0;
-}
-
-
-BEGIN_MAPPINGS_LIST
-  MAPPING_DECONLY(jisx0208)
-  MAPPING_DECONLY(jisx0212)
-  MAPPING_ENCONLY(jisxcommon)
-  MAPPING_DECONLY(jisx0213_1_bmp)
-  MAPPING_DECONLY(jisx0213_2_bmp)
-  MAPPING_ENCONLY(jisx0213_bmp)
-  MAPPING_DECONLY(jisx0213_1_emp)
-  MAPPING_DECONLY(jisx0213_2_emp)
-  MAPPING_ENCONLY(jisx0213_emp)
-  MAPPING_ENCDEC(jisx0213_pair)
-  MAPPING_ENCDEC(cp932ext)
-END_MAPPINGS_LIST
-
-BEGIN_CODECS_LIST
-  CODEC_STATELESS(shift_jis)
-  CODEC_STATELESS(cp932)
-  CODEC_STATELESS(euc_jp)
-  CODEC_STATELESS(shift_jis_2004)
-  CODEC_STATELESS(euc_jis_2004)
-  { "euc_jisx0213", (void *)2000, NULL, _STATELESS_METHODS(euc_jis_2004) },
-  { "shift_jisx0213", (void *)2000, NULL, _STATELESS_METHODS(shift_jis_2004) },
-END_CODECS_LIST
-
-I_AM_A_MODULE_FOR(jp)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_kr.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_kr.c
deleted file mode 100644
index aa48397..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_kr.c
+++ /dev/null
@@ -1,452 +0,0 @@
-/*
- * _codecs_kr.c: Codecs collection for Korean encodings
- *
- * Written by Hye-Shik Chang <perky@FreeBSD.org>
- */
-
-#include "cjkcodecs.h"
-#include "mappings_kr.h"
-
-/*
- * EUC-KR codec
- */
-
-#define EUCKR_JAMO_FIRSTBYTE    0xA4
-#define EUCKR_JAMO_FILLER       0xD4
-
-static const unsigned char u2cgk_choseong[19] = {
-    0xa1, 0xa2, 0xa4, 0xa7, 0xa8, 0xa9, 0xb1, 0xb2,
-    0xb3, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb,
-    0xbc, 0xbd, 0xbe
-};
-static const unsigned char u2cgk_jungseong[21] = {
-    0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6,
-    0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce,
-    0xcf, 0xd0, 0xd1, 0xd2, 0xd3
-};
-static const unsigned char u2cgk_jongseong[28] = {
-    0xd4, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
-    0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0,
-    0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xba,
-    0xbb, 0xbc, 0xbd, 0xbe
-};
-
-ENCODER(euc_kr)
-{
-    while (inleft > 0) {
-        Py_UNICODE c = IN1;
-        DBCHAR code;
-
-        if (c < 0x80) {
-            WRITE1((unsigned char)c)
-            NEXT(1, 1)
-            continue;
-        }
-        UCS4INVALID(c)
-
-        REQUIRE_OUTBUF(2)
-        TRYMAP_ENC(cp949, code, c);
-        else return 1;
-
-        if ((code & 0x8000) == 0) {
-            /* KS X 1001 coded character */
-            OUT1((code >> 8) | 0x80)
-            OUT2((code & 0xFF) | 0x80)
-            NEXT(1, 2)
-        }
-        else {          /* Mapping is found in CP949 extension,
-                 * but we encode it in KS X 1001:1998 Annex 3,
-                 * make-up sequence for EUC-KR. */
-
-            REQUIRE_OUTBUF(8)
-
-            /* syllable composition precedence */
-            OUT1(EUCKR_JAMO_FIRSTBYTE)
-            OUT2(EUCKR_JAMO_FILLER)
-
-            /* All codepoints in CP949 extension are in unicode
-             * Hangul Syllable area. */
-            assert(0xac00 <= c && c <= 0xd7a3);
-            c -= 0xac00;
-
-            OUT3(EUCKR_JAMO_FIRSTBYTE)
-            OUT4(u2cgk_choseong[c / 588])
-            NEXT_OUT(4)
-
-            OUT1(EUCKR_JAMO_FIRSTBYTE)
-            OUT2(u2cgk_jungseong[(c / 28) % 21])
-            OUT3(EUCKR_JAMO_FIRSTBYTE)
-            OUT4(u2cgk_jongseong[c % 28])
-            NEXT(1, 4)
-        }
-    }
-
-    return 0;
-}
-
-#define NONE    127
-
-static const unsigned char cgk2u_choseong[] = { /* [A1, BE] */
-       0,    1, NONE,    2, NONE, NONE,    3,    4,
-       5, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
-       6,    7,    8, NONE,    9,   10,   11,   12,
-      13,   14,   15,   16,   17,   18
-};
-static const unsigned char cgk2u_jongseong[] = { /* [A1, BE] */
-       1,    2,    3,    4,    5,    6,    7, NONE,
-       8,    9,   10,   11,   12,   13,   14,   15,
-      16,   17, NONE,   18,   19,   20,   21,   22,
-    NONE,   23,   24,   25,   26,   27
-};
-
-DECODER(euc_kr)
-{
-    while (inleft > 0) {
-        unsigned char c = IN1;
-
-        REQUIRE_OUTBUF(1)
-
-        if (c < 0x80) {
-            OUT1(c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        REQUIRE_INBUF(2)
-
-        if (c == EUCKR_JAMO_FIRSTBYTE &&
-            IN2 == EUCKR_JAMO_FILLER) {
-            /* KS X 1001:1998 Annex 3 make-up sequence */
-            DBCHAR cho, jung, jong;
-
-            REQUIRE_INBUF(8)
-            if ((*inbuf)[2] != EUCKR_JAMO_FIRSTBYTE ||
-                (*inbuf)[4] != EUCKR_JAMO_FIRSTBYTE ||
-                (*inbuf)[6] != EUCKR_JAMO_FIRSTBYTE)
-                return 8;
-
-            c = (*inbuf)[3];
-            if (0xa1 <= c && c <= 0xbe)
-                cho = cgk2u_choseong[c - 0xa1];
-            else
-                cho = NONE;
-
-            c = (*inbuf)[5];
-            jung = (0xbf <= c && c <= 0xd3) ? c - 0xbf : NONE;
-
-            c = (*inbuf)[7];
-            if (c == EUCKR_JAMO_FILLER)
-                jong = 0;
-            else if (0xa1 <= c && c <= 0xbe)
-                jong = cgk2u_jongseong[c - 0xa1];
-            else
-                jong = NONE;
-
-            if (cho == NONE || jung == NONE || jong == NONE)
-                return 8;
-
-            OUT1(0xac00 + cho*588 + jung*28 + jong);
-            NEXT(8, 1)
-        }
-        else TRYMAP_DEC(ksx1001, **outbuf, c ^ 0x80, IN2 ^ 0x80) {
-            NEXT(2, 1)
-        }
-        else
-            return 2;
-    }
-
-    return 0;
-}
-#undef NONE
-
-
-/*
- * CP949 codec
- */
-
-ENCODER(cp949)
-{
-    while (inleft > 0) {
-        Py_UNICODE c = IN1;
-        DBCHAR code;
-
-        if (c < 0x80) {
-            WRITE1((unsigned char)c)
-            NEXT(1, 1)
-            continue;
-        }
-        UCS4INVALID(c)
-
-        REQUIRE_OUTBUF(2)
-        TRYMAP_ENC(cp949, code, c);
-        else return 1;
-
-        OUT1((code >> 8) | 0x80)
-        if (code & 0x8000)
-            OUT2(code & 0xFF) /* MSB set: CP949 */
-        else
-            OUT2((code & 0xFF) | 0x80) /* MSB unset: ks x 1001 */
-        NEXT(1, 2)
-    }
-
-    return 0;
-}
-
-DECODER(cp949)
-{
-    while (inleft > 0) {
-        unsigned char c = IN1;
-
-        REQUIRE_OUTBUF(1)
-
-        if (c < 0x80) {
-            OUT1(c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        REQUIRE_INBUF(2)
-        TRYMAP_DEC(ksx1001, **outbuf, c ^ 0x80, IN2 ^ 0x80);
-        else TRYMAP_DEC(cp949ext, **outbuf, c, IN2);
-        else return 2;
-
-        NEXT(2, 1)
-    }
-
-    return 0;
-}
-
-
-/*
- * JOHAB codec
- */
-
-static const unsigned char u2johabidx_choseong[32] = {
-                0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-    0x10, 0x11, 0x12, 0x13, 0x14,
-};
-static const unsigned char u2johabidx_jungseong[32] = {
-                      0x03, 0x04, 0x05, 0x06, 0x07,
-                0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-                0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
-                0x1a, 0x1b, 0x1c, 0x1d,
-};
-static const unsigned char u2johabidx_jongseong[32] = {
-          0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-    0x10, 0x11,       0x13, 0x14, 0x15, 0x16, 0x17,
-    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d,
-};
-static const DBCHAR u2johabjamo[] = {
-            0x8841, 0x8c41, 0x8444, 0x9041, 0x8446, 0x8447, 0x9441,
-    0x9841, 0x9c41, 0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f,
-    0x8450, 0xa041, 0xa441, 0xa841, 0x8454, 0xac41, 0xb041, 0xb441,
-    0xb841, 0xbc41, 0xc041, 0xc441, 0xc841, 0xcc41, 0xd041, 0x8461,
-    0x8481, 0x84a1, 0x84c1, 0x84e1, 0x8541, 0x8561, 0x8581, 0x85a1,
-    0x85c1, 0x85e1, 0x8641, 0x8661, 0x8681, 0x86a1, 0x86c1, 0x86e1,
-    0x8741, 0x8761, 0x8781, 0x87a1,
-};
-
-ENCODER(johab)
-{
-    while (inleft > 0) {
-        Py_UNICODE c = IN1;
-        DBCHAR code;
-
-        if (c < 0x80) {
-            WRITE1((unsigned char)c)
-            NEXT(1, 1)
-            continue;
-        }
-        UCS4INVALID(c)
-
-        REQUIRE_OUTBUF(2)
-
-        if (c >= 0xac00 && c <= 0xd7a3) {
-            c -= 0xac00;
-            code = 0x8000 |
-                (u2johabidx_choseong[c / 588] << 10) |
-                (u2johabidx_jungseong[(c / 28) % 21] << 5) |
-                u2johabidx_jongseong[c % 28];
-        }
-        else if (c >= 0x3131 && c <= 0x3163)
-            code = u2johabjamo[c - 0x3131];
-        else TRYMAP_ENC(cp949, code, c) {
-            unsigned char c1, c2, t2;
-            unsigned short t1;
-
-            assert((code & 0x8000) == 0);
-            c1 = code >> 8;
-            c2 = code & 0xff;
-            if (((c1 >= 0x21 && c1 <= 0x2c) ||
-                (c1 >= 0x4a && c1 <= 0x7d)) &&
-                (c2 >= 0x21 && c2 <= 0x7e)) {
-                t1 = (c1 < 0x4a ? (c1 - 0x21 + 0x1b2) :
-                          (c1 - 0x21 + 0x197));
-                t2 = ((t1 & 1) ? 0x5e : 0) + (c2 - 0x21);
-                OUT1(t1 >> 1)
-                OUT2(t2 < 0x4e ? t2 + 0x31 : t2 + 0x43)
-                NEXT(1, 2)
-                continue;
-            }
-            else
-                return 1;
-        }
-        else
-            return 1;
-
-        OUT1(code >> 8)
-        OUT2(code & 0xff)
-        NEXT(1, 2)
-    }
-
-    return 0;
-}
-
-#define FILL 0xfd
-#define NONE 0xff
-
-static const unsigned char johabidx_choseong[32] = {
-    NONE, FILL, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
-    0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
-    0x0e, 0x0f, 0x10, 0x11, 0x12, NONE, NONE, NONE,
-    NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
-};
-static const unsigned char johabidx_jungseong[32] = {
-    NONE, NONE, FILL, 0x00, 0x01, 0x02, 0x03, 0x04,
-    NONE, NONE, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
-    NONE, NONE, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
-    NONE, NONE, 0x11, 0x12, 0x13, 0x14, NONE, NONE,
-};
-static const unsigned char johabidx_jongseong[32] = {
-    NONE, FILL, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
-    0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
-    0x0f, 0x10, NONE, 0x11, 0x12, 0x13, 0x14, 0x15,
-    0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, NONE, NONE,
-};
-
-static const unsigned char johabjamo_choseong[32] = {
-    NONE, FILL, 0x31, 0x32, 0x34, 0x37, 0x38, 0x39,
-    0x41, 0x42, 0x43, 0x45, 0x46, 0x47, 0x48, 0x49,
-    0x4a, 0x4b, 0x4c, 0x4d, 0x4e, NONE, NONE, NONE,
-    NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE,
-};
-static const unsigned char johabjamo_jungseong[32] = {
-    NONE, NONE, FILL, 0x4f, 0x50, 0x51, 0x52, 0x53,
-    NONE, NONE, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
-    NONE, NONE, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
-    NONE, NONE, 0x60, 0x61, 0x62, 0x63, NONE, NONE,
-};
-static const unsigned char johabjamo_jongseong[32] = {
-    NONE, FILL, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
-    0x37, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
-    0x40, 0x41, NONE, 0x42, 0x44, 0x45, 0x46, 0x47,
-    0x48, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, NONE, NONE,
-};
-
-DECODER(johab)
-{
-    while (inleft > 0) {
-        unsigned char    c = IN1, c2;
-
-        REQUIRE_OUTBUF(1)
-
-        if (c < 0x80) {
-            OUT1(c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        REQUIRE_INBUF(2)
-        c2 = IN2;
-
-        if (c < 0xd8) {
-            /* johab hangul */
-            unsigned char c_cho, c_jung, c_jong;
-            unsigned char i_cho, i_jung, i_jong;
-
-            c_cho = (c >> 2) & 0x1f;
-            c_jung = ((c << 3) | c2 >> 5) & 0x1f;
-            c_jong = c2 & 0x1f;
-
-            i_cho = johabidx_choseong[c_cho];
-            i_jung = johabidx_jungseong[c_jung];
-            i_jong = johabidx_jongseong[c_jong];
-
-            if (i_cho == NONE || i_jung == NONE || i_jong == NONE)
-                return 2;
-
-            /* we don't use U+1100 hangul jamo yet. */
-            if (i_cho == FILL) {
-                if (i_jung == FILL) {
-                    if (i_jong == FILL)
-                        OUT1(0x3000)
-                    else
-                        OUT1(0x3100 |
-                          johabjamo_jongseong[c_jong])
-                }
-                else {
-                    if (i_jong == FILL)
-                        OUT1(0x3100 |
-                          johabjamo_jungseong[c_jung])
-                    else
-                        return 2;
-                }
-            } else {
-                if (i_jung == FILL) {
-                    if (i_jong == FILL)
-                        OUT1(0x3100 |
-                          johabjamo_choseong[c_cho])
-                    else
-                        return 2;
-                }
-                else
-                    OUT1(0xac00 +
-                         i_cho * 588 +
-                         i_jung * 28 +
-                         (i_jong == FILL ? 0 : i_jong))
-            }
-            NEXT(2, 1)
-        } else {
-            /* KS X 1001 except hangul jamos and syllables */
-            if (c == 0xdf || c > 0xf9 ||
-                c2 < 0x31 || (c2 >= 0x80 && c2 < 0x91) ||
-                (c2 & 0x7f) == 0x7f ||
-                (c == 0xda && (c2 >= 0xa1 && c2 <= 0xd3)))
-                return 2;
-            else {
-                unsigned char t1, t2;
-
-                t1 = (c < 0xe0 ? 2 * (c - 0xd9) :
-                         2 * c - 0x197);
-                t2 = (c2 < 0x91 ? c2 - 0x31 : c2 - 0x43);
-                t1 = t1 + (t2 < 0x5e ? 0 : 1) + 0x21;
-                t2 = (t2 < 0x5e ? t2 : t2 - 0x5e) + 0x21;
-
-                TRYMAP_DEC(ksx1001, **outbuf, t1, t2);
-                else return 2;
-                NEXT(2, 1)
-            }
-        }
-    }
-
-    return 0;
-}
-#undef NONE
-#undef FILL
-
-
-BEGIN_MAPPINGS_LIST
-  MAPPING_DECONLY(ksx1001)
-  MAPPING_ENCONLY(cp949)
-  MAPPING_DECONLY(cp949ext)
-END_MAPPINGS_LIST
-
-BEGIN_CODECS_LIST
-  CODEC_STATELESS(euc_kr)
-  CODEC_STATELESS(cp949)
-  CODEC_STATELESS(johab)
-END_CODECS_LIST
-
-I_AM_A_MODULE_FOR(kr)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_tw.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_tw.c
deleted file mode 100644
index 3f6204d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/_codecs_tw.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * _codecs_tw.c: Codecs collection for Taiwan's encodings
- *
- * Written by Hye-Shik Chang <perky@FreeBSD.org>
- */
-
-#include "cjkcodecs.h"
-#include "mappings_tw.h"
-
-/*
- * BIG5 codec
- */
-
-ENCODER(big5)
-{
-    while (inleft > 0) {
-        Py_UNICODE c = **inbuf;
-        DBCHAR code;
-
-        if (c < 0x80) {
-            REQUIRE_OUTBUF(1)
-            **outbuf = (unsigned char)c;
-            NEXT(1, 1)
-            continue;
-        }
-        UCS4INVALID(c)
-
-        REQUIRE_OUTBUF(2)
-
-        TRYMAP_ENC(big5, code, c);
-        else return 1;
-
-        OUT1(code >> 8)
-        OUT2(code & 0xFF)
-        NEXT(1, 2)
-    }
-
-    return 0;
-}
-
-DECODER(big5)
-{
-    while (inleft > 0) {
-        unsigned char c = IN1;
-
-        REQUIRE_OUTBUF(1)
-
-        if (c < 0x80) {
-            OUT1(c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        REQUIRE_INBUF(2)
-        TRYMAP_DEC(big5, **outbuf, c, IN2) {
-            NEXT(2, 1)
-        }
-        else return 2;
-    }
-
-    return 0;
-}
-
-
-/*
- * CP950 codec
- */
-
-ENCODER(cp950)
-{
-    while (inleft > 0) {
-        Py_UNICODE c = IN1;
-        DBCHAR code;
-
-        if (c < 0x80) {
-            WRITE1((unsigned char)c)
-            NEXT(1, 1)
-            continue;
-        }
-        UCS4INVALID(c)
-
-        REQUIRE_OUTBUF(2)
-        TRYMAP_ENC(cp950ext, code, c);
-        else TRYMAP_ENC(big5, code, c);
-        else return 1;
-
-        OUT1(code >> 8)
-        OUT2(code & 0xFF)
-        NEXT(1, 2)
-    }
-
-    return 0;
-}
-
-DECODER(cp950)
-{
-    while (inleft > 0) {
-        unsigned char c = IN1;
-
-        REQUIRE_OUTBUF(1)
-
-        if (c < 0x80) {
-            OUT1(c)
-            NEXT(1, 1)
-            continue;
-        }
-
-        REQUIRE_INBUF(2)
-
-        TRYMAP_DEC(cp950ext, **outbuf, c, IN2);
-        else TRYMAP_DEC(big5, **outbuf, c, IN2);
-        else return 2;
-
-        NEXT(2, 1)
-    }
-
-    return 0;
-}
-
-
-
-BEGIN_MAPPINGS_LIST
-  MAPPING_ENCDEC(big5)
-  MAPPING_ENCDEC(cp950ext)
-END_MAPPINGS_LIST
-
-BEGIN_CODECS_LIST
-  CODEC_STATELESS(big5)
-  CODEC_STATELESS(cp950)
-END_CODECS_LIST
-
-I_AM_A_MODULE_FOR(tw)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/alg_jisx0201.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/alg_jisx0201.h
deleted file mode 100644
index 3f4e938..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/alg_jisx0201.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#define JISX0201_R_ENCODE(c, assi)                      \
-    if ((c) < 0x80 && (c) != 0x5c && (c) != 0x7e)       \
-        (assi) = (c);                                   \
-    else if ((c) == 0x00a5) (assi) = 0x5c;              \
-    else if ((c) == 0x203e) (assi) = 0x7e;
-#define JISX0201_K_ENCODE(c, assi)                      \
-    if ((c) >= 0xff61 && (c) <= 0xff9f)                 \
-        (assi) = (c) - 0xfec0;
-#define JISX0201_ENCODE(c, assi)                        \
-    JISX0201_R_ENCODE(c, assi)                          \
-    else JISX0201_K_ENCODE(c, assi)
-
-#define JISX0201_R_DECODE(c, assi)                      \
-    if ((c) < 0x5c) (assi) = (c);                       \
-    else if ((c) == 0x5c) (assi) = 0x00a5;              \
-    else if ((c) < 0x7e) (assi) = (c);                  \
-    else if ((c) == 0x7e) (assi) = 0x203e;              \
-    else if ((c) == 0x7f) (assi) = 0x7f;
-#define JISX0201_K_DECODE(c, assi)                      \
-    if ((c) >= 0xa1 && (c) <= 0xdf)                     \
-    (assi) = 0xfec0 + (c);
-#define JISX0201_DECODE(c, assi)                        \
-    JISX0201_R_DECODE(c, assi)                          \
-    else JISX0201_K_DECODE(c, assi)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/cjkcodecs.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/cjkcodecs.h
deleted file mode 100644
index f9857f0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/cjkcodecs.h
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * cjkcodecs.h: common header for cjkcodecs
- *
- * Written by Hye-Shik Chang <perky@FreeBSD.org>
- */
-
-#ifndef _CJKCODECS_H_
-#define _CJKCODECS_H_
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#include "multibytecodec.h"
-
-
-/* a unicode "undefined" codepoint */
-#define UNIINV  0xFFFE
-
-/* internal-use DBCS codepoints which aren't used by any charsets */
-#define NOCHAR  0xFFFF
-#define MULTIC  0xFFFE
-#define DBCINV  0xFFFD
-
-/* shorter macros to save source size of mapping tables */
-#define U UNIINV
-#define N NOCHAR
-#define M MULTIC
-#define D DBCINV
-
-struct dbcs_index {
-    const ucs2_t *map;
-    unsigned char bottom, top;
-};
-typedef struct dbcs_index decode_map;
-
-struct widedbcs_index {
-    const ucs4_t *map;
-    unsigned char bottom, top;
-};
-typedef struct widedbcs_index widedecode_map;
-
-struct unim_index {
-    const DBCHAR *map;
-    unsigned char bottom, top;
-};
-typedef struct unim_index encode_map;
-
-struct unim_index_bytebased {
-    const unsigned char *map;
-    unsigned char bottom, top;
-};
-
-struct dbcs_map {
-    const char *charset;
-    const struct unim_index *encmap;
-    const struct dbcs_index *decmap;
-};
-
-struct pair_encodemap {
-    ucs4_t uniseq;
-    DBCHAR code;
-};
-
-static const MultibyteCodec *codec_list;
-static const struct dbcs_map *mapping_list;
-
-#define CODEC_INIT(encoding)                                            \
-    static int encoding##_codec_init(const void *config)
-
-#define ENCODER_INIT(encoding)                                          \
-    static int encoding##_encode_init(                                  \
-        MultibyteCodec_State *state, const void *config)
-#define ENCODER(encoding)                                               \
-    static Py_ssize_t encoding##_encode(                                \
-        MultibyteCodec_State *state, const void *config,                \
-        const Py_UNICODE **inbuf, Py_ssize_t inleft,                    \
-        unsigned char **outbuf, Py_ssize_t outleft, int flags)
-#define ENCODER_RESET(encoding)                                         \
-    static Py_ssize_t encoding##_encode_reset(                          \
-        MultibyteCodec_State *state, const void *config,                \
-        unsigned char **outbuf, Py_ssize_t outleft)
-
-#define DECODER_INIT(encoding)                                          \
-    static int encoding##_decode_init(                                  \
-        MultibyteCodec_State *state, const void *config)
-#define DECODER(encoding)                                               \
-    static Py_ssize_t encoding##_decode(                                \
-        MultibyteCodec_State *state, const void *config,                \
-        const unsigned char **inbuf, Py_ssize_t inleft,                 \
-        Py_UNICODE **outbuf, Py_ssize_t outleft)
-#define DECODER_RESET(encoding)                                         \
-    static Py_ssize_t encoding##_decode_reset(                          \
-        MultibyteCodec_State *state, const void *config)
-
-#if Py_UNICODE_SIZE == 4
-#define UCS4INVALID(code)       \
-    if ((code) > 0xFFFF)        \
-    return 1;
-#else
-#define UCS4INVALID(code)       \
-    if (0) ;
-#endif
-
-#define NEXT_IN(i)                              \
-    (*inbuf) += (i);                            \
-    (inleft) -= (i);
-#define NEXT_OUT(o)                             \
-    (*outbuf) += (o);                           \
-    (outleft) -= (o);
-#define NEXT(i, o)                              \
-    NEXT_IN(i) NEXT_OUT(o)
-
-#define REQUIRE_INBUF(n)                        \
-    if (inleft < (n))                           \
-        return MBERR_TOOFEW;
-#define REQUIRE_OUTBUF(n)                       \
-    if (outleft < (n))                          \
-        return MBERR_TOOSMALL;
-
-#define IN1 ((*inbuf)[0])
-#define IN2 ((*inbuf)[1])
-#define IN3 ((*inbuf)[2])
-#define IN4 ((*inbuf)[3])
-
-#define OUT1(c) ((*outbuf)[0]) = (c);
-#define OUT2(c) ((*outbuf)[1]) = (c);
-#define OUT3(c) ((*outbuf)[2]) = (c);
-#define OUT4(c) ((*outbuf)[3]) = (c);
-
-#define WRITE1(c1)              \
-    REQUIRE_OUTBUF(1)           \
-    (*outbuf)[0] = (c1);
-#define WRITE2(c1, c2)          \
-    REQUIRE_OUTBUF(2)           \
-    (*outbuf)[0] = (c1);        \
-    (*outbuf)[1] = (c2);
-#define WRITE3(c1, c2, c3)      \
-    REQUIRE_OUTBUF(3)           \
-    (*outbuf)[0] = (c1);        \
-    (*outbuf)[1] = (c2);        \
-    (*outbuf)[2] = (c3);
-#define WRITE4(c1, c2, c3, c4)  \
-    REQUIRE_OUTBUF(4)           \
-    (*outbuf)[0] = (c1);        \
-    (*outbuf)[1] = (c2);        \
-    (*outbuf)[2] = (c3);        \
-    (*outbuf)[3] = (c4);
-
-#if Py_UNICODE_SIZE == 2
-# define WRITEUCS4(c)                                           \
-    REQUIRE_OUTBUF(2)                                           \
-    (*outbuf)[0] = 0xd800 + (((c) - 0x10000) >> 10);            \
-    (*outbuf)[1] = 0xdc00 + (((c) - 0x10000) & 0x3ff);          \
-    NEXT_OUT(2)
-#else
-# define WRITEUCS4(c)                                           \
-    REQUIRE_OUTBUF(1)                                           \
-    **outbuf = (Py_UNICODE)(c);                                 \
-    NEXT_OUT(1)
-#endif
-
-#define _TRYMAP_ENC(m, assi, val)                               \
-    ((m)->map != NULL && (val) >= (m)->bottom &&                \
-        (val)<= (m)->top && ((assi) = (m)->map[(val) -          \
-        (m)->bottom]) != NOCHAR)
-#define TRYMAP_ENC_COND(charset, assi, uni)                     \
-    _TRYMAP_ENC(&charset##_encmap[(uni) >> 8], assi, (uni) & 0xff)
-#define TRYMAP_ENC(charset, assi, uni)                          \
-    if TRYMAP_ENC_COND(charset, assi, uni)
-
-#define _TRYMAP_DEC(m, assi, val)                               \
-    ((m)->map != NULL && (val) >= (m)->bottom &&                \
-        (val)<= (m)->top && ((assi) = (m)->map[(val) -          \
-        (m)->bottom]) != UNIINV)
-#define TRYMAP_DEC(charset, assi, c1, c2)                       \
-    if _TRYMAP_DEC(&charset##_decmap[c1], assi, c2)
-
-#define _TRYMAP_ENC_MPLANE(m, assplane, asshi, asslo, val)      \
-    ((m)->map != NULL && (val) >= (m)->bottom &&                \
-        (val)<= (m)->top &&                                     \
-        ((assplane) = (m)->map[((val) - (m)->bottom)*3]) != 0 && \
-        (((asshi) = (m)->map[((val) - (m)->bottom)*3 + 1]), 1) && \
-        (((asslo) = (m)->map[((val) - (m)->bottom)*3 + 2]), 1))
-#define TRYMAP_ENC_MPLANE(charset, assplane, asshi, asslo, uni) \
-    if _TRYMAP_ENC_MPLANE(&charset##_encmap[(uni) >> 8], \
-                       assplane, asshi, asslo, (uni) & 0xff)
-#define TRYMAP_DEC_MPLANE(charset, assi, plane, c1, c2)         \
-    if _TRYMAP_DEC(&charset##_decmap[plane][c1], assi, c2)
-
-#if Py_UNICODE_SIZE == 2
-#define DECODE_SURROGATE(c)                                     \
-    if (c >> 10 == 0xd800 >> 10) { /* high surrogate */         \
-        REQUIRE_INBUF(2)                                        \
-        if (IN2 >> 10 == 0xdc00 >> 10) { /* low surrogate */ \
-            c = 0x10000 + ((ucs4_t)(c - 0xd800) << 10) + \
-            ((ucs4_t)(IN2) - 0xdc00);                           \
-        }                                                       \
-    }
-#define GET_INSIZE(c)   ((c) > 0xffff ? 2 : 1)
-#else
-#define DECODE_SURROGATE(c) {;}
-#define GET_INSIZE(c)   1
-#endif
-
-#define BEGIN_MAPPINGS_LIST static const struct dbcs_map _mapping_list[] = {
-#define MAPPING_ENCONLY(enc) {#enc, (void*)enc##_encmap, NULL},
-#define MAPPING_DECONLY(enc) {#enc, NULL, (void*)enc##_decmap},
-#define MAPPING_ENCDEC(enc) {#enc, (void*)enc##_encmap, (void*)enc##_decmap},
-#define END_MAPPINGS_LIST                               \
-    {"", NULL, NULL} };                                 \
-    static const struct dbcs_map *mapping_list =        \
-        (const struct dbcs_map *)_mapping_list;
-
-#define BEGIN_CODECS_LIST static const MultibyteCodec _codec_list[] = {
-#define _STATEFUL_METHODS(enc)          \
-    enc##_encode,                       \
-    enc##_encode_init,                  \
-    enc##_encode_reset,                 \
-    enc##_decode,                       \
-    enc##_decode_init,                  \
-    enc##_decode_reset,
-#define _STATELESS_METHODS(enc)         \
-    enc##_encode, NULL, NULL,           \
-    enc##_decode, NULL, NULL,
-#define CODEC_STATEFUL(enc) {           \
-    #enc, NULL, NULL,                   \
-    _STATEFUL_METHODS(enc)              \
-},
-#define CODEC_STATELESS(enc) {          \
-    #enc, NULL, NULL,                   \
-    _STATELESS_METHODS(enc)             \
-},
-#define CODEC_STATELESS_WINIT(enc) {    \
-    #enc, NULL,                         \
-    enc##_codec_init,                   \
-    _STATELESS_METHODS(enc)             \
-},
-#define END_CODECS_LIST                                 \
-    {"", NULL,} };                                      \
-    static const MultibyteCodec *codec_list =           \
-        (const MultibyteCodec *)_codec_list;
-
-static PyObject *
-getmultibytecodec(void)
-{
-    static PyObject *cofunc = NULL;
-
-    if (cofunc == NULL) {
-        PyObject *mod = PyImport_ImportModuleNoBlock("_multibytecodec");
-        if (mod == NULL)
-            return NULL;
-        cofunc = PyObject_GetAttrString(mod, "__create_codec");
-        Py_DECREF(mod);
-    }
-    return cofunc;
-}
-
-static PyObject *
-getcodec(PyObject *self, PyObject *encoding)
-{
-    PyObject *codecobj, *r, *cofunc;
-    const MultibyteCodec *codec;
-    const char *enc;
-
-    if (!PyString_Check(encoding)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "encoding name must be a string.");
-        return NULL;
-    }
-
-    cofunc = getmultibytecodec();
-    if (cofunc == NULL)
-        return NULL;
-
-    enc = PyString_AS_STRING(encoding);
-    for (codec = codec_list; codec->encoding[0]; codec++)
-        if (strcmp(codec->encoding, enc) == 0)
-            break;
-
-    if (codec->encoding[0] == '\0') {
-        PyErr_SetString(PyExc_LookupError,
-                        "no such codec is supported.");
-        return NULL;
-    }
-
-    codecobj = PyCapsule_New((void *)codec, PyMultibyteCodec_CAPSULE_NAME, NULL);
-    if (codecobj == NULL)
-        return NULL;
-
-    r = PyObject_CallFunctionObjArgs(cofunc, codecobj, NULL);
-    Py_DECREF(codecobj);
-
-    return r;
-}
-
-static struct PyMethodDef __methods[] = {
-    {"getcodec", (PyCFunction)getcodec, METH_O, ""},
-    {NULL, NULL},
-};
-
-static int
-register_maps(PyObject *module)
-{
-    const struct dbcs_map *h;
-
-    for (h = mapping_list; h->charset[0] != '\0'; h++) {
-        char mhname[256] = "__map_";
-        int r;
-        strcpy(mhname + sizeof("__map_") - 1, h->charset);
-        r = PyModule_AddObject(module, mhname,
-                        PyCapsule_New((void *)h, PyMultibyteCodec_CAPSULE_NAME, NULL));
-        if (r == -1)
-            return -1;
-    }
-    return 0;
-}
-
-#ifdef USING_BINARY_PAIR_SEARCH
-static DBCHAR
-find_pairencmap(ucs2_t body, ucs2_t modifier,
-                const struct pair_encodemap *haystack, int haystacksize)
-{
-    int pos, min, max;
-    ucs4_t value = body << 16 | modifier;
-
-    min = 0;
-    max = haystacksize;
-
-    for (pos = haystacksize >> 1; min != max; pos = (min + max) >> 1)
-        if (value < haystack[pos].uniseq) {
-            if (max == pos) break;
-            else max = pos;
-        }
-        else if (value > haystack[pos].uniseq) {
-            if (min == pos) break;
-            else min = pos;
-        }
-        else
-            break;
-
-        if (value == haystack[pos].uniseq)
-            return haystack[pos].code;
-        else
-            return DBCINV;
-}
-#endif
-
-#ifdef USING_IMPORTED_MAPS
-#define IMPORT_MAP(locale, charset, encmap, decmap) \
-    importmap("_codecs_" #locale, "__map_" #charset, \
-              (const void**)encmap, (const void**)decmap)
-
-static int
-importmap(const char *modname, const char *symbol,
-          const void **encmap, const void **decmap)
-{
-    PyObject *o, *mod;
-
-    mod = PyImport_ImportModule((char *)modname);
-    if (mod == NULL)
-        return -1;
-
-    o = PyObject_GetAttrString(mod, (char*)symbol);
-    if (o == NULL)
-        goto errorexit;
-    else if (!PyCapsule_IsValid(o, PyMultibyteCodec_CAPSULE_NAME)) {
-        PyErr_SetString(PyExc_ValueError,
-                        "map data must be a Capsule.");
-        goto errorexit;
-    }
-    else {
-        struct dbcs_map *map;
-        map = PyCapsule_GetPointer(o, PyMultibyteCodec_CAPSULE_NAME);
-        if (encmap != NULL)
-            *encmap = map->encmap;
-        if (decmap != NULL)
-            *decmap = map->decmap;
-        Py_DECREF(o);
-    }
-
-    Py_DECREF(mod);
-    return 0;
-
-errorexit:
-    Py_DECREF(mod);
-    return -1;
-}
-#endif
-
-#define I_AM_A_MODULE_FOR(loc)                                          \
-    void                                                                \
-    init_codecs_##loc(void)                                             \
-    {                                                                   \
-        PyObject *m = Py_InitModule("_codecs_" #loc, __methods);\
-        if (m != NULL)                                                  \
-            (void)register_maps(m);                                     \
-    }
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/emu_jisx0213_2000.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/emu_jisx0213_2000.h
deleted file mode 100644
index ca22858..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/emu_jisx0213_2000.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* These routines may be quite inefficient, but it's used only to emulate old
- * standards. */
-
-#ifndef EMULATE_JISX0213_2000_ENCODE_INVALID
-#define EMULATE_JISX0213_2000_ENCODE_INVALID 1
-#endif
-
-#define EMULATE_JISX0213_2000_ENCODE_BMP(assi, c)                       \
-    if (config == (void *)2000 && (                                     \
-                    (c) == 0x9B1C || (c) == 0x4FF1 ||                   \
-                    (c) == 0x525D || (c) == 0x541E ||                   \
-                    (c) == 0x5653 || (c) == 0x59F8 ||                   \
-                    (c) == 0x5C5B || (c) == 0x5E77 ||                   \
-                    (c) == 0x7626 || (c) == 0x7E6B))                    \
-        return EMULATE_JISX0213_2000_ENCODE_INVALID;                    \
-    else if (config == (void *)2000 && (c) == 0x9B1D)                   \
-        (assi) = 0x8000 | 0x7d3b;                                       \
-
-#define EMULATE_JISX0213_2000_ENCODE_EMP(assi, c)                       \
-    if (config == (void *)2000 && (c) == 0x20B9F)                       \
-        return EMULATE_JISX0213_2000_ENCODE_INVALID;
-
-#ifndef EMULATE_JISX0213_2000_DECODE_INVALID
-#define EMULATE_JISX0213_2000_DECODE_INVALID 2
-#endif
-
-#define EMULATE_JISX0213_2000_DECODE_PLANE1(assi, c1, c2)               \
-    if (config == (void *)2000 &&                                       \
-                    (((c1) == 0x2E && (c2) == 0x21) ||                  \
-                     ((c1) == 0x2F && (c2) == 0x7E) ||                  \
-                     ((c1) == 0x4F && (c2) == 0x54) ||                  \
-                     ((c1) == 0x4F && (c2) == 0x7E) ||                  \
-                     ((c1) == 0x74 && (c2) == 0x27) ||                  \
-                     ((c1) == 0x7E && (c2) == 0x7A) ||                  \
-                     ((c1) == 0x7E && (c2) == 0x7B) ||                  \
-                     ((c1) == 0x7E && (c2) == 0x7C) ||                  \
-                     ((c1) == 0x7E && (c2) == 0x7D) ||                  \
-                     ((c1) == 0x7E && (c2) == 0x7E)))                   \
-        return EMULATE_JISX0213_2000_DECODE_INVALID;
-
-#define EMULATE_JISX0213_2000_DECODE_PLANE2(assi, c1, c2)               \
-    if (config == (void *)2000 && (c1) == 0x7D && (c2) == 0x3B)         \
-        (assi) = 0x9B1D;
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_cn.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_cn.h
deleted file mode 100644
index e6c89c6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_cn.h
+++ /dev/null
@@ -1,4103 +0,0 @@
-static const ucs2_t __gb2312_decmap[7482] = {
-12288,12289,12290,12539,713,711,168,12291,12293,8213,65374,8214,8230,8216,
-8217,8220,8221,12308,12309,12296,12297,12298,12299,12300,12301,12302,12303,
-12310,12311,12304,12305,177,215,247,8758,8743,8744,8721,8719,8746,8745,8712,
-8759,8730,8869,8741,8736,8978,8857,8747,8750,8801,8780,8776,8765,8733,8800,
-8814,8815,8804,8805,8734,8757,8756,9794,9792,176,8242,8243,8451,65284,164,
-65504,65505,8240,167,8470,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,
-9650,8251,8594,8592,8593,8595,12307,9352,9353,9354,9355,9356,9357,9358,9359,
-9360,9361,9362,9363,9364,9365,9366,9367,9368,9369,9370,9371,9332,9333,9334,
-9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,9347,9348,9349,
-9350,9351,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,U,U,12832,12833,
-12834,12835,12836,12837,12838,12839,12840,12841,U,U,8544,8545,8546,8547,8548,
-8549,8550,8551,8552,8553,8554,8555,65281,65282,65283,65509,65285,65286,65287,
-65288,65289,65290,65291,65292,65293,65294,65295,65296,65297,65298,65299,65300,
-65301,65302,65303,65304,65305,65306,65307,65308,65309,65310,65311,65312,65313,
-65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,
-65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65339,
-65340,65341,65342,65343,65344,65345,65346,65347,65348,65349,65350,65351,65352,
-65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,
-65366,65367,65368,65369,65370,65371,65372,65373,65507,12353,12354,12355,12356,
-12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,
-12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,
-12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,
-12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,
-12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,
-12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,
-12435,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,
-12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,
-12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,
-12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,
-12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,
-12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,
-12526,12527,12528,12529,12530,12531,12532,12533,12534,913,914,915,916,917,918,
-919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,U,U,U,
-U,U,U,U,U,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,
-963,964,965,966,967,968,969,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,
-1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,
-1064,1065,1066,1067,1068,1069,1070,1071,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,1072,
-1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,
-1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,
-1102,1103,257,225,462,224,275,233,283,232,299,237,464,236,333,243,466,242,363,
-250,468,249,470,472,474,476,252,234,U,U,U,U,U,U,U,U,U,U,12549,12550,12551,
-12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,
-12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,
-12578,12579,12580,12581,12582,12583,12584,12585,9472,9473,9474,9475,9476,9477,
-9478,9479,9480,9481,9482,9483,9484,9485,9486,9487,9488,9489,9490,9491,9492,
-9493,9494,9495,9496,9497,9498,9499,9500,9501,9502,9503,9504,9505,9506,9507,
-9508,9509,9510,9511,9512,9513,9514,9515,9516,9517,9518,9519,9520,9521,9522,
-9523,9524,9525,9526,9527,9528,9529,9530,9531,9532,9533,9534,9535,9536,9537,
-9538,9539,9540,9541,9542,9543,9544,9545,9546,9547,21834,38463,22467,25384,
-21710,21769,21696,30353,30284,34108,30702,33406,30861,29233,38552,38797,27688,
-23433,20474,25353,26263,23736,33018,26696,32942,26114,30414,20985,25942,29100,
-32753,34948,20658,22885,25034,28595,33453,25420,25170,21485,21543,31494,20843,
-30116,24052,25300,36299,38774,25226,32793,22365,38712,32610,29240,30333,26575,
-30334,25670,20336,36133,25308,31255,26001,29677,25644,25203,33324,39041,26495,
-29256,25198,25292,20276,29923,21322,21150,32458,37030,24110,26758,27036,33152,
-32465,26834,30917,34444,38225,20621,35876,33502,32990,21253,35090,21093,34180,
-38649,20445,22561,39281,23453,25265,25253,26292,35961,40077,29190,26479,30865,
-24754,21329,21271,36744,32972,36125,38049,20493,29384,22791,24811,28953,34987,
-22868,33519,26412,31528,23849,32503,29997,27893,36454,36856,36924,40763,27604,
-37145,31508,24444,30887,34006,34109,27605,27609,27606,24065,24199,30201,38381,
-25949,24330,24517,36767,22721,33218,36991,38491,38829,36793,32534,36140,25153,
-20415,21464,21342,36776,36777,36779,36941,26631,24426,33176,34920,40150,24971,
-21035,30250,24428,25996,28626,28392,23486,25672,20853,20912,26564,19993,31177,
-39292,28851,30149,24182,29627,33760,25773,25320,38069,27874,21338,21187,25615,
-38082,31636,20271,24091,33334,33046,33162,28196,27850,39539,25429,21340,21754,
-34917,22496,19981,24067,27493,31807,37096,24598,25830,29468,35009,26448,25165,
-36130,30572,36393,37319,24425,33756,34081,39184,21442,34453,27531,24813,24808,
-28799,33485,33329,20179,27815,34255,25805,31961,27133,26361,33609,21397,31574,
-20391,20876,27979,23618,36461,25554,21449,33580,33590,26597,30900,25661,23519,
-23700,24046,35815,25286,26612,35962,25600,25530,34633,39307,35863,32544,38130,
-20135,38416,39076,26124,29462,22330,23581,24120,38271,20607,32928,21378,25950,
-30021,21809,20513,36229,25220,38046,26397,22066,28526,24034,21557,28818,36710,
-25199,25764,25507,24443,28552,37108,33251,36784,23576,26216,24561,27785,38472,
-36225,34924,25745,31216,22478,27225,25104,21576,20056,31243,24809,28548,35802,
-25215,36894,39563,31204,21507,30196,25345,21273,27744,36831,24347,39536,32827,
-40831,20360,23610,36196,32709,26021,28861,20805,20914,34411,23815,23456,25277,
-37228,30068,36364,31264,24833,31609,20167,32504,30597,19985,33261,21021,20986,
-27249,21416,36487,38148,38607,28353,38500,26970,30784,20648,30679,25616,35302,
-22788,25571,24029,31359,26941,20256,33337,21912,20018,30126,31383,24162,24202,
-38383,21019,21561,28810,25462,38180,22402,26149,26943,37255,21767,28147,32431,
-34850,25139,32496,30133,33576,30913,38604,36766,24904,29943,35789,27492,21050,
-36176,27425,32874,33905,22257,21254,20174,19995,20945,31895,37259,31751,20419,
-36479,31713,31388,25703,23828,20652,33030,30209,31929,28140,32736,26449,23384,
-23544,30923,25774,25619,25514,25387,38169,25645,36798,31572,30249,25171,22823,
-21574,27513,20643,25140,24102,27526,20195,36151,34955,24453,36910,24608,32829,
-25285,20025,21333,37112,25528,32966,26086,27694,20294,24814,28129,35806,24377,
-34507,24403,25377,20826,33633,26723,20992,25443,36424,20498,23707,31095,23548,
-21040,31291,24764,36947,30423,24503,24471,30340,36460,28783,30331,31561,30634,
-20979,37011,22564,20302,28404,36842,25932,31515,29380,28068,32735,23265,25269,
-24213,22320,33922,31532,24093,24351,36882,32532,39072,25474,28359,30872,28857,
-20856,38747,22443,30005,20291,30008,24215,24806,22880,28096,27583,30857,21500,
-38613,20939,20993,25481,21514,38035,35843,36300,29241,30879,34678,36845,35853,
-21472,19969,30447,21486,38025,39030,40718,38189,23450,35746,20002,19996,20908,
-33891,25026,21160,26635,20375,24683,20923,27934,20828,25238,26007,38497,35910,
-36887,30168,37117,30563,27602,29322,29420,35835,22581,30585,36172,26460,38208,
-32922,24230,28193,22930,31471,30701,38203,27573,26029,32526,22534,20817,38431,
-23545,22697,21544,36466,25958,39039,22244,38045,30462,36929,25479,21702,22810,
-22842,22427,36530,26421,36346,33333,21057,24816,22549,34558,23784,40517,20420,
-39069,35769,23077,24694,21380,25212,36943,37122,39295,24681,32780,20799,32819,
-23572,39285,27953,20108,36144,21457,32602,31567,20240,20047,38400,27861,29648,
-34281,24070,30058,32763,27146,30718,38034,32321,20961,28902,21453,36820,33539,
-36137,29359,39277,27867,22346,33459,26041,32938,25151,38450,22952,20223,35775,
-32442,25918,33778,38750,21857,39134,32933,21290,35837,21536,32954,24223,27832,
-36153,33452,37210,21545,27675,20998,32439,22367,28954,27774,31881,22859,20221,
-24575,24868,31914,20016,23553,26539,34562,23792,38155,39118,30127,28925,36898,
-20911,32541,35773,22857,20964,20315,21542,22827,25975,32932,23413,25206,25282,
-36752,24133,27679,31526,20239,20440,26381,28014,28074,31119,34993,24343,29995,
-25242,36741,20463,37340,26023,33071,33105,24220,33104,36212,21103,35206,36171,
-22797,20613,20184,38428,29238,33145,36127,23500,35747,38468,22919,32538,21648,
-22134,22030,35813,25913,27010,38041,30422,28297,24178,29976,26438,26577,31487,
-32925,36214,24863,31174,25954,36195,20872,21018,38050,32568,32923,32434,23703,
-28207,26464,31705,30347,39640,33167,32660,31957,25630,38224,31295,21578,21733,
-27468,25601,25096,40509,33011,30105,21106,38761,33883,26684,34532,38401,38548,
-38124,20010,21508,32473,26681,36319,32789,26356,24218,32697,22466,32831,26775,
-24037,25915,21151,24685,40858,20379,36524,20844,23467,24339,24041,27742,25329,
-36129,20849,38057,21246,27807,33503,29399,22434,26500,36141,22815,36764,33735,
-21653,31629,20272,27837,23396,22993,40723,21476,34506,39592,35895,32929,25925,
-39038,22266,38599,21038,29916,21072,23521,25346,35074,20054,25296,24618,26874,
-20851,23448,20896,35266,31649,39302,32592,24815,28748,36143,20809,24191,36891,
-29808,35268,22317,30789,24402,40863,38394,36712,39740,35809,30328,26690,26588,
-36330,36149,21053,36746,28378,26829,38149,37101,22269,26524,35065,36807,21704,
-39608,23401,28023,27686,20133,23475,39559,37219,25000,37039,38889,21547,28085,
-23506,20989,21898,32597,32752,25788,25421,26097,25022,24717,28938,27735,27721,
-22831,26477,33322,22741,22158,35946,27627,37085,22909,32791,21495,28009,21621,
-21917,33655,33743,26680,31166,21644,20309,21512,30418,35977,38402,27827,28088,
-36203,35088,40548,36154,22079,40657,30165,24456,29408,24680,21756,20136,27178,
-34913,24658,36720,21700,28888,34425,40511,27946,23439,24344,32418,21897,20399,
-29492,21564,21402,20505,21518,21628,20046,24573,29786,22774,33899,32993,34676,
-29392,31946,28246,24359,34382,21804,25252,20114,27818,25143,33457,21719,21326,
-29502,28369,30011,21010,21270,35805,27088,24458,24576,28142,22351,27426,29615,
-26707,36824,32531,25442,24739,21796,30186,35938,28949,28067,23462,24187,33618,
-24908,40644,30970,34647,31783,30343,20976,24822,29004,26179,24140,24653,35854,
-28784,25381,36745,24509,24674,34516,22238,27585,24724,24935,21321,24800,26214,
-36159,31229,20250,28905,27719,35763,35826,32472,33636,26127,23130,39746,27985,
-28151,35905,27963,20249,28779,33719,25110,24785,38669,36135,31096,20987,22334,
-22522,26426,30072,31293,31215,31637,32908,39269,36857,28608,35749,40481,23020,
-32489,32521,21513,26497,26840,36753,31821,38598,21450,24613,30142,27762,21363,
-23241,32423,25380,20960,33034,24049,34015,25216,20864,23395,20238,31085,21058,
-24760,27982,23492,23490,35745,35760,26082,24524,38469,22931,32487,32426,22025,
-26551,22841,20339,23478,21152,33626,39050,36158,30002,38078,20551,31292,20215,
-26550,39550,23233,27516,30417,22362,23574,31546,38388,29006,20860,32937,33392,
-22904,32516,33575,26816,26604,30897,30839,25315,25441,31616,20461,21098,20943,
-33616,27099,37492,36341,36145,35265,38190,31661,20214,20581,33328,21073,39279,
-28176,28293,28071,24314,20725,23004,23558,27974,27743,30086,33931,26728,22870,
-35762,21280,37233,38477,34121,26898,30977,28966,33014,20132,37066,27975,39556,
-23047,22204,25605,38128,30699,20389,33050,29409,35282,39290,32564,32478,21119,
-25945,37237,36735,36739,21483,31382,25581,25509,30342,31224,34903,38454,25130,
-21163,33410,26708,26480,25463,30571,31469,27905,32467,35299,22992,25106,34249,
-33445,30028,20511,20171,30117,35819,23626,24062,31563,26020,37329,20170,27941,
-35167,32039,38182,20165,35880,36827,38771,26187,31105,36817,28908,28024,23613,
-21170,33606,20834,33550,30555,26230,40120,20140,24778,31934,31923,32463,20117,
-35686,26223,39048,38745,22659,25964,38236,24452,30153,38742,31455,31454,20928,
-28847,31384,25578,31350,32416,29590,38893,20037,28792,20061,37202,21417,25937,
-26087,33276,33285,21646,23601,30106,38816,25304,29401,30141,23621,39545,33738,
-23616,21632,30697,20030,27822,32858,25298,25454,24040,20855,36317,36382,38191,
-20465,21477,24807,28844,21095,25424,40515,23071,20518,30519,21367,32482,25733,
-25899,25225,25496,20500,29237,35273,20915,35776,32477,22343,33740,38055,20891,
-21531,23803,20426,31459,27994,37089,39567,21888,21654,21345,21679,24320,25577,
-26999,20975,24936,21002,22570,21208,22350,30733,30475,24247,24951,31968,25179,
-25239,20130,28821,32771,25335,28900,38752,22391,33499,26607,26869,30933,39063,
-31185,22771,21683,21487,28212,20811,21051,23458,35838,32943,21827,22438,24691,
-22353,21549,31354,24656,23380,25511,25248,21475,25187,23495,26543,21741,31391,
-33510,37239,24211,35044,22840,22446,25358,36328,33007,22359,31607,20393,24555,
-23485,27454,21281,31568,29378,26694,30719,30518,26103,20917,20111,30420,23743,
-31397,33909,22862,39745,20608,39304,24871,28291,22372,26118,25414,22256,25324,
-25193,24275,38420,22403,25289,21895,34593,33098,36771,21862,33713,26469,36182,
-34013,23146,26639,25318,31726,38417,20848,28572,35888,25597,35272,25042,32518,
-28866,28389,29701,27028,29436,24266,37070,26391,28010,25438,21171,29282,32769,
-20332,23013,37226,28889,28061,21202,20048,38647,38253,34174,30922,32047,20769,
-22418,25794,32907,31867,27882,26865,26974,20919,21400,26792,29313,40654,31729,
-29432,31163,28435,29702,26446,37324,40100,31036,33673,33620,21519,26647,20029,
-21385,21169,30782,21382,21033,20616,20363,20432,30178,31435,31890,27813,38582,
-21147,29827,21737,20457,32852,33714,36830,38256,24265,24604,28063,24088,25947,
-33080,38142,24651,28860,32451,31918,20937,26753,31921,33391,20004,36742,37327,
-26238,20142,35845,25769,32842,20698,30103,29134,23525,36797,28518,20102,25730,
-38243,24278,26009,21015,35010,28872,21155,29454,29747,26519,30967,38678,20020,
-37051,40158,28107,20955,36161,21533,25294,29618,33777,38646,40836,38083,20278,
-32666,20940,28789,38517,23725,39046,21478,20196,28316,29705,27060,30827,39311,
-30041,21016,30244,27969,26611,20845,40857,32843,21657,31548,31423,38534,22404,
-25314,38471,27004,23044,25602,31699,28431,38475,33446,21346,39045,24208,28809,
-25523,21348,34383,40065,40595,30860,38706,36335,36162,40575,28510,31108,24405,
-38470,25134,39540,21525,38109,20387,26053,23653,23649,32533,34385,27695,24459,
-29575,28388,32511,23782,25371,23402,28390,21365,20081,25504,30053,25249,36718,
-20262,20177,27814,32438,35770,33821,34746,32599,36923,38179,31657,39585,35064,
-33853,27931,39558,32476,22920,40635,29595,30721,34434,39532,39554,22043,21527,
-22475,20080,40614,21334,36808,33033,30610,39314,34542,28385,34067,26364,24930,
-28459,35881,33426,33579,30450,27667,24537,33725,29483,33541,38170,27611,30683,
-38086,21359,33538,20882,24125,35980,36152,20040,29611,26522,26757,37238,38665,
-29028,27809,30473,23186,38209,27599,32654,26151,23504,22969,23194,38376,38391,
-20204,33804,33945,27308,30431,38192,29467,26790,23391,30511,37274,38753,31964,
-36855,35868,24357,31859,31192,35269,27852,34588,23494,24130,26825,30496,32501,
-20885,20813,21193,23081,32517,38754,33495,25551,30596,34256,31186,28218,24217,
-22937,34065,28781,27665,25279,30399,25935,24751,38397,26126,34719,40483,38125,
-21517,21629,35884,25720,25721,34321,27169,33180,30952,25705,39764,25273,26411,
-33707,22696,40664,27819,28448,23518,38476,35851,29279,26576,25287,29281,20137,
-22982,27597,22675,26286,24149,21215,24917,26408,30446,30566,29287,31302,25343,
-21738,21584,38048,37027,23068,32435,27670,20035,22902,32784,22856,21335,30007,
-38590,22218,25376,33041,24700,38393,28118,21602,39297,20869,23273,33021,22958,
-38675,20522,27877,23612,25311,20320,21311,33147,36870,28346,34091,25288,24180,
-30910,25781,25467,24565,23064,37247,40479,23615,25423,32834,23421,21870,38218,
-38221,28037,24744,26592,29406,20957,23425,25319,27870,29275,25197,38062,32445,
-33043,27987,20892,24324,22900,21162,24594,22899,26262,34384,30111,25386,25062,
-31983,35834,21734,27431,40485,27572,34261,21589,20598,27812,21866,36276,29228,
-24085,24597,29750,25293,25490,29260,24472,28227,27966,25856,28504,30424,30928,
-30460,30036,21028,21467,20051,24222,26049,32810,32982,25243,21638,21032,28846,
-34957,36305,27873,21624,32986,22521,35060,36180,38506,37197,20329,27803,21943,
-30406,30768,25256,28921,28558,24429,34028,26842,30844,31735,33192,26379,40527,
-25447,30896,22383,30738,38713,25209,25259,21128,29749,27607,21860,33086,30130,
-30382,21305,30174,20731,23617,35692,31687,20559,29255,39575,39128,28418,29922,
-31080,25735,30629,25340,39057,36139,21697,32856,20050,22378,33529,33805,24179,
-20973,29942,35780,23631,22369,27900,39047,23110,30772,39748,36843,31893,21078,
-25169,38138,20166,33670,33889,33769,33970,22484,26420,22275,26222,28006,35889,
-26333,28689,26399,27450,26646,25114,22971,19971,20932,28422,26578,27791,20854,
-26827,22855,27495,30054,23822,33040,40784,26071,31048,31041,39569,36215,23682,
-20062,20225,21551,22865,30732,22120,27668,36804,24323,27773,27875,35755,25488,
-24688,27965,29301,25190,38030,38085,21315,36801,31614,20191,35878,20094,40660,
-38065,38067,21069,28508,36963,27973,35892,22545,23884,27424,27465,26538,21595,
-33108,32652,22681,34103,24378,25250,27207,38201,25970,24708,26725,30631,20052,
-20392,24039,38808,25772,32728,23789,20431,31373,20999,33540,19988,24623,31363,
-38054,20405,20146,31206,29748,21220,33465,25810,31165,23517,27777,38738,36731,
-27682,20542,21375,28165,25806,26228,27696,24773,39031,35831,24198,29756,31351,
-31179,19992,37041,29699,27714,22234,37195,27845,36235,21306,34502,26354,36527,
-23624,39537,28192,21462,23094,40843,36259,21435,22280,39079,26435,37275,27849,
-20840,30154,25331,29356,21048,21149,32570,28820,30264,21364,40522,27063,30830,
-38592,35033,32676,28982,29123,20873,26579,29924,22756,25880,22199,35753,39286,
-25200,32469,24825,28909,22764,20161,20154,24525,38887,20219,35748,20995,22922,
-32427,25172,20173,26085,25102,33592,33993,33635,34701,29076,28342,23481,32466,
-20887,25545,26580,32905,33593,34837,20754,23418,22914,36785,20083,27741,20837,
-35109,36719,38446,34122,29790,38160,38384,28070,33509,24369,25746,27922,33832,
-33134,40131,22622,36187,19977,21441,20254,25955,26705,21971,20007,25620,39578,
-25195,23234,29791,33394,28073,26862,20711,33678,30722,26432,21049,27801,32433,
-20667,21861,29022,31579,26194,29642,33515,26441,23665,21024,29053,34923,38378,
-38485,25797,36193,33203,21892,27733,25159,32558,22674,20260,21830,36175,26188,
-19978,23578,35059,26786,25422,31245,28903,33421,21242,38902,23569,21736,37045,
-32461,22882,36170,34503,33292,33293,36198,25668,23556,24913,28041,31038,35774,
-30775,30003,21627,20280,36523,28145,23072,32453,31070,27784,23457,23158,29978,
-32958,24910,28183,22768,29983,29989,29298,21319,32499,30465,30427,21097,32988,
-22307,24072,22833,29422,26045,28287,35799,23608,34417,21313,30707,25342,26102,
-20160,39135,34432,23454,35782,21490,30690,20351,23630,39542,22987,24335,31034,
-22763,19990,26623,20107,25325,35475,36893,21183,26159,21980,22124,36866,20181,
-20365,37322,39280,27663,24066,24643,23460,35270,35797,25910,25163,39318,23432,
-23551,25480,21806,21463,30246,20861,34092,26530,26803,27530,25234,36755,21460,
-33298,28113,30095,20070,36174,23408,29087,34223,26257,26329,32626,34560,40653,
-40736,23646,26415,36848,26641,26463,25101,31446,22661,24246,25968,28465,24661,
-21047,32781,25684,34928,29993,24069,26643,25332,38684,21452,29245,35841,27700,
-30561,31246,21550,30636,39034,33308,35828,30805,26388,28865,26031,25749,22070,
-24605,31169,21496,19997,27515,32902,23546,21987,22235,20282,20284,39282,24051,
-26494,32824,24578,39042,36865,23435,35772,35829,25628,33368,25822,22013,33487,
-37221,20439,32032,36895,31903,20723,22609,28335,23487,35785,32899,37240,33948,
-31639,34429,38539,38543,32485,39635,30862,23681,31319,36930,38567,31071,23385,
-25439,31499,34001,26797,21766,32553,29712,32034,38145,25152,22604,20182,23427,
-22905,22612,29549,25374,36427,36367,32974,33492,25260,21488,27888,37214,22826,
-24577,27760,22349,25674,36138,30251,28393,22363,27264,30192,28525,35885,35848,
-22374,27631,34962,30899,25506,21497,28845,27748,22616,25642,22530,26848,33179,
-21776,31958,20504,36538,28108,36255,28907,25487,28059,28372,32486,33796,26691,
-36867,28120,38518,35752,22871,29305,34276,33150,30140,35466,26799,21076,36386,
-38161,25552,39064,36420,21884,20307,26367,22159,24789,28053,21059,23625,22825,
-28155,22635,30000,29980,24684,33300,33094,25361,26465,36834,30522,36339,36148,
-38081,24086,21381,21548,28867,27712,24311,20572,20141,24237,25402,33351,36890,
-26704,37230,30643,21516,38108,24420,31461,26742,25413,31570,32479,30171,20599,
-25237,22836,36879,20984,31171,31361,22270,24466,36884,28034,23648,22303,21520,
-20820,28237,22242,25512,39059,33151,34581,35114,36864,21534,23663,33216,25302,
-25176,33073,40501,38464,39534,39548,26925,22949,25299,21822,25366,21703,34521,
-27964,23043,29926,34972,27498,22806,35916,24367,28286,29609,39037,20024,28919,
-23436,30871,25405,26202,30358,24779,23451,23113,19975,33109,27754,29579,20129,
-26505,32593,24448,26106,26395,24536,22916,23041,24013,24494,21361,38886,36829,
-26693,22260,21807,24799,20026,28493,32500,33479,33806,22996,20255,20266,23614,
-32428,26410,34074,21619,30031,32963,21890,39759,20301,28205,35859,23561,24944,
-21355,30239,28201,34442,25991,38395,32441,21563,31283,32010,38382,21985,32705,
-29934,25373,34583,28065,31389,25105,26017,21351,25569,27779,24043,21596,38056,
-20044,27745,35820,23627,26080,33436,26791,21566,21556,27595,27494,20116,25410,
-21320,33310,20237,20398,22366,25098,38654,26212,29289,21247,21153,24735,35823,
-26132,29081,26512,35199,30802,30717,26224,22075,21560,38177,29306,31232,24687,
-24076,24713,33181,22805,24796,29060,28911,28330,27728,29312,27268,34989,24109,
-20064,23219,21916,38115,27927,31995,38553,25103,32454,30606,34430,21283,38686,
-36758,26247,23777,20384,29421,19979,21414,22799,21523,25472,38184,20808,20185,
-40092,32420,21688,36132,34900,33335,38386,28046,24358,23244,26174,38505,29616,
-29486,21439,33146,39301,32673,23466,38519,38480,32447,30456,21410,38262,39321,
-31665,35140,28248,20065,32724,31077,35814,24819,21709,20139,39033,24055,27233,
-20687,21521,35937,33831,30813,38660,21066,21742,22179,38144,28040,23477,28102,
-26195,23567,23389,26657,32918,21880,31505,25928,26964,20123,27463,34638,38795,
-21327,25375,25658,37034,26012,32961,35856,20889,26800,21368,34809,25032,27844,
-27899,35874,23633,34218,33455,38156,27427,36763,26032,24571,24515,20449,34885,
-26143,33125,29481,24826,20852,21009,22411,24418,37026,34892,37266,24184,26447,
-24615,22995,20804,20982,33016,21256,27769,38596,29066,20241,20462,32670,26429,
-21957,38152,31168,34966,32483,22687,25100,38656,34394,22040,39035,24464,35768,
-33988,37207,21465,26093,24207,30044,24676,32110,23167,32490,32493,36713,21927,
-23459,24748,26059,29572,36873,30307,30505,32474,38772,34203,23398,31348,38634,
-34880,21195,29071,24490,26092,35810,23547,39535,24033,27529,27739,35757,35759,
-36874,36805,21387,25276,40486,40493,21568,20011,33469,29273,34460,23830,34905,
-28079,38597,21713,20122,35766,28937,21693,38409,28895,28153,30416,20005,30740,
-34578,23721,24310,35328,39068,38414,28814,27839,22852,25513,30524,34893,28436,
-33395,22576,29141,21388,30746,38593,21761,24422,28976,23476,35866,39564,27523,
-22830,40495,31207,26472,25196,20335,30113,32650,27915,38451,27687,20208,30162,
-20859,26679,28478,36992,33136,22934,29814,25671,23591,36965,31377,35875,23002,
-21676,33280,33647,35201,32768,26928,22094,32822,29239,37326,20918,20063,39029,
-25494,19994,21494,26355,33099,22812,28082,19968,22777,21307,25558,38129,20381,
-20234,34915,39056,22839,36951,31227,20202,33008,30097,27778,23452,23016,24413,
-26885,34433,20506,24050,20057,30691,20197,33402,25233,26131,37009,23673,20159,
-24441,33222,36920,32900,30123,20134,35028,24847,27589,24518,20041,30410,28322,
-35811,35758,35850,35793,24322,32764,32716,32462,33589,33643,22240,27575,38899,
-38452,23035,21535,38134,28139,23493,39278,23609,24341,38544,21360,33521,27185,
-23156,40560,24212,32552,33721,33828,33829,33639,34631,36814,36194,30408,24433,
-39062,30828,26144,21727,25317,20323,33219,30152,24248,38605,36362,34553,21647,
-27891,28044,27704,24703,21191,29992,24189,20248,24736,24551,23588,30001,37038,
-38080,29369,27833,28216,37193,26377,21451,21491,20305,37321,35825,21448,24188,
-36802,28132,20110,30402,27014,34398,24858,33286,20313,20446,36926,40060,24841,
-28189,28180,38533,20104,23089,38632,19982,23679,31161,23431,35821,32701,29577,
-22495,33419,37057,21505,36935,21947,23786,24481,24840,27442,29425,32946,35465,
-28020,23507,35029,39044,35947,39533,40499,28170,20900,20803,22435,34945,21407,
-25588,36757,22253,21592,22278,29503,28304,32536,36828,33489,24895,24616,38498,
-26352,32422,36234,36291,38053,23731,31908,26376,24742,38405,32792,20113,37095,
-21248,38504,20801,36816,34164,37213,26197,38901,23381,21277,30776,26434,26685,
-21705,28798,23472,36733,20877,22312,21681,25874,26242,36190,36163,33039,33900,
-36973,31967,20991,34299,26531,26089,28577,34468,36481,22122,36896,30338,28790,
-29157,36131,25321,21017,27901,36156,24590,22686,24974,26366,36192,25166,21939,
-28195,26413,36711,38113,38392,30504,26629,27048,21643,20045,28856,35784,25688,
-25995,23429,31364,20538,23528,30651,27617,35449,31896,27838,30415,26025,36759,
-23853,23637,34360,26632,21344,25112,31449,28251,32509,27167,31456,24432,28467,
-24352,25484,28072,26454,19976,24080,36134,20183,32960,30260,38556,25307,26157,
-25214,27836,36213,29031,32617,20806,32903,21484,36974,25240,21746,34544,36761,
-32773,38167,34071,36825,27993,29645,26015,30495,29956,30759,33275,36126,38024,
-20390,26517,30137,35786,38663,25391,38215,38453,33976,25379,30529,24449,29424,
-20105,24596,25972,25327,27491,25919,24103,30151,37073,35777,33437,26525,25903,
-21553,34584,30693,32930,33026,27713,20043,32455,32844,30452,26893,27542,25191,
-20540,20356,22336,25351,27490,36286,21482,26088,32440,24535,25370,25527,33267,
-33268,32622,24092,23769,21046,26234,31209,31258,36136,28825,30164,28382,27835,
-31378,20013,30405,24544,38047,34935,32456,31181,32959,37325,20210,20247,33311,
-21608,24030,27954,35788,31909,36724,32920,24090,21650,30385,23449,26172,39588,
-29664,26666,34523,26417,29482,35832,35803,36880,31481,28891,29038,25284,30633,
-22065,20027,33879,26609,21161,34496,36142,38136,31569,20303,27880,31069,39547,
-25235,29226,25341,19987,30742,36716,25776,36186,31686,26729,24196,35013,22918,
-25758,22766,29366,26894,38181,36861,36184,22368,32512,35846,20934,25417,25305,
-21331,26700,29730,33537,37196,21828,30528,28796,27978,20857,21672,36164,23039,
-28363,28100,23388,32043,20180,31869,28371,23376,33258,28173,23383,39683,26837,
-36394,23447,32508,24635,32437,37049,36208,22863,25549,31199,36275,21330,26063,
-31062,35781,38459,32452,38075,32386,22068,37257,26368,32618,23562,36981,26152,
-24038,20304,26590,20570,20316,22352,24231,20109,19980,20800,19984,24319,21317,
-19989,20120,19998,39730,23404,22121,20008,31162,20031,21269,20039,22829,29243,
-21358,27664,22239,32996,39319,27603,30590,40727,20022,20127,40720,20060,20073,
-20115,33416,23387,21868,22031,20164,21389,21405,21411,21413,21422,38757,36189,
-21274,21493,21286,21294,21310,36188,21350,21347,20994,21000,21006,21037,21043,
-21055,21056,21068,21086,21089,21084,33967,21117,21122,21121,21136,21139,20866,
-32596,20155,20163,20169,20162,20200,20193,20203,20190,20251,20211,20258,20324,
-20213,20261,20263,20233,20267,20318,20327,25912,20314,20317,20319,20311,20274,
-20285,20342,20340,20369,20361,20355,20367,20350,20347,20394,20348,20396,20372,
-20454,20456,20458,20421,20442,20451,20444,20433,20447,20472,20521,20556,20467,
-20524,20495,20526,20525,20478,20508,20492,20517,20520,20606,20547,20565,20552,
-20558,20588,20603,20645,20647,20649,20666,20694,20742,20717,20716,20710,20718,
-20743,20747,20189,27709,20312,20325,20430,40864,27718,31860,20846,24061,40649,
-39320,20865,22804,21241,21261,35335,21264,20971,22809,20821,20128,20822,20147,
-34926,34980,20149,33044,35026,31104,23348,34819,32696,20907,20913,20925,20924,
-20935,20886,20898,20901,35744,35750,35751,35754,35764,35765,35767,35778,35779,
-35787,35791,35790,35794,35795,35796,35798,35800,35801,35804,35807,35808,35812,
-35816,35817,35822,35824,35827,35830,35833,35836,35839,35840,35842,35844,35847,
-35852,35855,35857,35858,35860,35861,35862,35865,35867,35864,35869,35871,35872,
-35873,35877,35879,35882,35883,35886,35887,35890,35891,35893,35894,21353,21370,
-38429,38434,38433,38449,38442,38461,38460,38466,38473,38484,38495,38503,38508,
-38514,38516,38536,38541,38551,38576,37015,37019,37021,37017,37036,37025,37044,
-37043,37046,37050,37048,37040,37071,37061,37054,37072,37060,37063,37075,37094,
-37090,37084,37079,37083,37099,37103,37118,37124,37154,37150,37155,37169,37167,
-37177,37187,37190,21005,22850,21154,21164,21165,21182,21759,21200,21206,21232,
-21471,29166,30669,24308,20981,20988,39727,21430,24321,30042,24047,22348,22441,
-22433,22654,22716,22725,22737,22313,22316,22314,22323,22329,22318,22319,22364,
-22331,22338,22377,22405,22379,22406,22396,22395,22376,22381,22390,22387,22445,
-22436,22412,22450,22479,22439,22452,22419,22432,22485,22488,22490,22489,22482,
-22456,22516,22511,22520,22500,22493,22539,22541,22525,22509,22528,22558,22553,
-22596,22560,22629,22636,22657,22665,22682,22656,39336,40729,25087,33401,33405,
-33407,33423,33418,33448,33412,33422,33425,33431,33433,33451,33464,33470,33456,
-33480,33482,33507,33432,33463,33454,33483,33484,33473,33449,33460,33441,33450,
-33439,33476,33486,33444,33505,33545,33527,33508,33551,33543,33500,33524,33490,
-33496,33548,33531,33491,33553,33562,33542,33556,33557,33504,33493,33564,33617,
-33627,33628,33544,33682,33596,33588,33585,33691,33630,33583,33615,33607,33603,
-33631,33600,33559,33632,33581,33594,33587,33638,33637,33640,33563,33641,33644,
-33642,33645,33646,33712,33656,33715,33716,33696,33706,33683,33692,33669,33660,
-33718,33705,33661,33720,33659,33688,33694,33704,33722,33724,33729,33793,33765,
-33752,22535,33816,33803,33757,33789,33750,33820,33848,33809,33798,33748,33759,
-33807,33795,33784,33785,33770,33733,33728,33830,33776,33761,33884,33873,33882,
-33881,33907,33927,33928,33914,33929,33912,33852,33862,33897,33910,33932,33934,
-33841,33901,33985,33997,34000,34022,33981,34003,33994,33983,33978,34016,33953,
-33977,33972,33943,34021,34019,34060,29965,34104,34032,34105,34079,34106,34134,
-34107,34047,34044,34137,34120,34152,34148,34142,34170,30626,34115,34162,34171,
-34212,34216,34183,34191,34169,34222,34204,34181,34233,34231,34224,34259,34241,
-34268,34303,34343,34309,34345,34326,34364,24318,24328,22844,22849,32823,22869,
-22874,22872,21263,23586,23589,23596,23604,25164,25194,25247,25275,25290,25306,
-25303,25326,25378,25334,25401,25419,25411,25517,25590,25457,25466,25486,25524,
-25453,25516,25482,25449,25518,25532,25586,25592,25568,25599,25540,25566,25550,
-25682,25542,25534,25669,25665,25611,25627,25632,25612,25638,25633,25694,25732,
-25709,25750,25722,25783,25784,25753,25786,25792,25808,25815,25828,25826,25865,
-25893,25902,24331,24530,29977,24337,21343,21489,21501,21481,21480,21499,21522,
-21526,21510,21579,21586,21587,21588,21590,21571,21537,21591,21593,21539,21554,
-21634,21652,21623,21617,21604,21658,21659,21636,21622,21606,21661,21712,21677,
-21698,21684,21714,21671,21670,21715,21716,21618,21667,21717,21691,21695,21708,
-21721,21722,21724,21673,21674,21668,21725,21711,21726,21787,21735,21792,21757,
-21780,21747,21794,21795,21775,21777,21799,21802,21863,21903,21941,21833,21869,
-21825,21845,21823,21840,21820,21815,21846,21877,21878,21879,21811,21808,21852,
-21899,21970,21891,21937,21945,21896,21889,21919,21886,21974,21905,21883,21983,
-21949,21950,21908,21913,21994,22007,21961,22047,21969,21995,21996,21972,21990,
-21981,21956,21999,21989,22002,22003,21964,21965,21992,22005,21988,36756,22046,
-22024,22028,22017,22052,22051,22014,22016,22055,22061,22104,22073,22103,22060,
-22093,22114,22105,22108,22092,22100,22150,22116,22129,22123,22139,22140,22149,
-22163,22191,22228,22231,22237,22241,22261,22251,22265,22271,22276,22282,22281,
-22300,24079,24089,24084,24081,24113,24123,24124,24119,24132,24148,24155,24158,
-24161,23692,23674,23693,23696,23702,23688,23704,23705,23697,23706,23708,23733,
-23714,23741,23724,23723,23729,23715,23745,23735,23748,23762,23780,23755,23781,
-23810,23811,23847,23846,23854,23844,23838,23814,23835,23896,23870,23860,23869,
-23916,23899,23919,23901,23915,23883,23882,23913,23924,23938,23961,23965,35955,
-23991,24005,24435,24439,24450,24455,24457,24460,24469,24473,24476,24488,24493,
-24501,24508,34914,24417,29357,29360,29364,29367,29368,29379,29377,29390,29389,
-29394,29416,29423,29417,29426,29428,29431,29441,29427,29443,29434,29435,29463,
-29459,29473,29450,29470,29469,29461,29474,29497,29477,29484,29496,29489,29520,
-29517,29527,29536,29548,29551,29566,33307,22821,39143,22820,22786,39267,39271,
-39272,39273,39274,39275,39276,39284,39287,39293,39296,39300,39303,39306,39309,
-39312,39313,39315,39316,39317,24192,24209,24203,24214,24229,24224,24249,24245,
-24254,24243,36179,24274,24273,24283,24296,24298,33210,24516,24521,24534,24527,
-24579,24558,24580,24545,24548,24574,24581,24582,24554,24557,24568,24601,24629,
-24614,24603,24591,24589,24617,24619,24586,24639,24609,24696,24697,24699,24698,
-24642,24682,24701,24726,24730,24749,24733,24707,24722,24716,24731,24812,24763,
-24753,24797,24792,24774,24794,24756,24864,24870,24853,24867,24820,24832,24846,
-24875,24906,24949,25004,24980,24999,25015,25044,25077,24541,38579,38377,38379,
-38385,38387,38389,38390,38396,38398,38403,38404,38406,38408,38410,38411,38412,
-38413,38415,38418,38421,38422,38423,38425,38426,20012,29247,25109,27701,27732,
-27740,27722,27811,27781,27792,27796,27788,27752,27753,27764,27766,27782,27817,
-27856,27860,27821,27895,27896,27889,27863,27826,27872,27862,27898,27883,27886,
-27825,27859,27887,27902,27961,27943,27916,27971,27976,27911,27908,27929,27918,
-27947,27981,27950,27957,27930,27983,27986,27988,27955,28049,28015,28062,28064,
-27998,28051,28052,27996,28000,28028,28003,28186,28103,28101,28126,28174,28095,
-28128,28177,28134,28125,28121,28182,28075,28172,28078,28203,28270,28238,28267,
-28338,28255,28294,28243,28244,28210,28197,28228,28383,28337,28312,28384,28461,
-28386,28325,28327,28349,28347,28343,28375,28340,28367,28303,28354,28319,28514,
-28486,28487,28452,28437,28409,28463,28470,28491,28532,28458,28425,28457,28553,
-28557,28556,28536,28530,28540,28538,28625,28617,28583,28601,28598,28610,28641,
-28654,28638,28640,28655,28698,28707,28699,28729,28725,28751,28766,23424,23428,
-23445,23443,23461,23480,29999,39582,25652,23524,23534,35120,23536,36423,35591,
-36790,36819,36821,36837,36846,36836,36841,36838,36851,36840,36869,36868,36875,
-36902,36881,36877,36886,36897,36917,36918,36909,36911,36932,36945,36946,36944,
-36968,36952,36962,36955,26297,36980,36989,36994,37000,36995,37003,24400,24407,
-24406,24408,23611,21675,23632,23641,23409,23651,23654,32700,24362,24361,24365,
-33396,24380,39739,23662,22913,22915,22925,22953,22954,22947,22935,22986,22955,
-22942,22948,22994,22962,22959,22999,22974,23045,23046,23005,23048,23011,23000,
-23033,23052,23049,23090,23092,23057,23075,23059,23104,23143,23114,23125,23100,
-23138,23157,33004,23210,23195,23159,23162,23230,23275,23218,23250,23252,23224,
-23264,23267,23281,23254,23270,23256,23260,23305,23319,23318,23346,23351,23360,
-23573,23580,23386,23397,23411,23377,23379,23394,39541,39543,39544,39546,39551,
-39549,39552,39553,39557,39560,39562,39568,39570,39571,39574,39576,39579,39580,
-39581,39583,39584,39586,39587,39589,39591,32415,32417,32419,32421,32424,32425,
-32429,32432,32446,32448,32449,32450,32457,32459,32460,32464,32468,32471,32475,
-32480,32481,32488,32491,32494,32495,32497,32498,32525,32502,32506,32507,32510,
-32513,32514,32515,32519,32520,32523,32524,32527,32529,32530,32535,32537,32540,
-32539,32543,32545,32546,32547,32548,32549,32550,32551,32554,32555,32556,32557,
-32559,32560,32561,32562,32563,32565,24186,30079,24027,30014,37013,29582,29585,
-29614,29602,29599,29647,29634,29649,29623,29619,29632,29641,29640,29669,29657,
-39036,29706,29673,29671,29662,29626,29682,29711,29738,29787,29734,29733,29736,
-29744,29742,29740,29723,29722,29761,29788,29783,29781,29785,29815,29805,29822,
-29852,29838,29824,29825,29831,29835,29854,29864,29865,29840,29863,29906,29882,
-38890,38891,38892,26444,26451,26462,26440,26473,26533,26503,26474,26483,26520,
-26535,26485,26536,26526,26541,26507,26487,26492,26608,26633,26584,26634,26601,
-26544,26636,26585,26549,26586,26547,26589,26624,26563,26552,26594,26638,26561,
-26621,26674,26675,26720,26721,26702,26722,26692,26724,26755,26653,26709,26726,
-26689,26727,26688,26686,26698,26697,26665,26805,26767,26740,26743,26771,26731,
-26818,26990,26876,26911,26912,26873,26916,26864,26891,26881,26967,26851,26896,
-26993,26937,26976,26946,26973,27012,26987,27008,27032,27000,26932,27084,27015,
-27016,27086,27017,26982,26979,27001,27035,27047,27067,27051,27053,27092,27057,
-27073,27082,27103,27029,27104,27021,27135,27183,27117,27159,27160,27237,27122,
-27204,27198,27296,27216,27227,27189,27278,27257,27197,27176,27224,27260,27281,
-27280,27305,27287,27307,29495,29522,27521,27522,27527,27524,27538,27539,27533,
-27546,27547,27553,27562,36715,36717,36721,36722,36723,36725,36726,36728,36727,
-36729,36730,36732,36734,36737,36738,36740,36743,36747,36749,36750,36751,36760,
-36762,36558,25099,25111,25115,25119,25122,25121,25125,25124,25132,33255,29935,
-29940,29951,29967,29969,29971,25908,26094,26095,26096,26122,26137,26482,26115,
-26133,26112,28805,26359,26141,26164,26161,26166,26165,32774,26207,26196,26177,
-26191,26198,26209,26199,26231,26244,26252,26279,26269,26302,26331,26332,26342,
-26345,36146,36147,36150,36155,36157,36160,36165,36166,36168,36169,36167,36173,
-36181,36185,35271,35274,35275,35276,35278,35279,35280,35281,29294,29343,29277,
-29286,29295,29310,29311,29316,29323,29325,29327,29330,25352,25394,25520,25663,
-25816,32772,27626,27635,27645,27637,27641,27653,27655,27654,27661,27669,27672,
-27673,27674,27681,27689,27684,27690,27698,25909,25941,25963,29261,29266,29270,
-29232,34402,21014,32927,32924,32915,32956,26378,32957,32945,32939,32941,32948,
-32951,32999,33000,33001,33002,32987,32962,32964,32985,32973,32983,26384,32989,
-33003,33009,33012,33005,33037,33038,33010,33020,26389,33042,35930,33078,33054,
-33068,33048,33074,33096,33100,33107,33140,33113,33114,33137,33120,33129,33148,
-33149,33133,33127,22605,23221,33160,33154,33169,28373,33187,33194,33228,26406,
-33226,33211,33217,33190,27428,27447,27449,27459,27462,27481,39121,39122,39123,
-39125,39129,39130,27571,24384,27586,35315,26000,40785,26003,26044,26054,26052,
-26051,26060,26062,26066,26070,28800,28828,28822,28829,28859,28864,28855,28843,
-28849,28904,28874,28944,28947,28950,28975,28977,29043,29020,29032,28997,29042,
-29002,29048,29050,29080,29107,29109,29096,29088,29152,29140,29159,29177,29213,
-29224,28780,28952,29030,29113,25150,25149,25155,25160,25161,31035,31040,31046,
-31049,31067,31068,31059,31066,31074,31063,31072,31087,31079,31098,31109,31114,
-31130,31143,31155,24529,24528,24636,24669,24666,24679,24641,24665,24675,24747,
-24838,24845,24925,25001,24989,25035,25041,25094,32896,32895,27795,27894,28156,
-30710,30712,30720,30729,30743,30744,30737,26027,30765,30748,30749,30777,30778,
-30779,30751,30780,30757,30764,30755,30761,30798,30829,30806,30807,30758,30800,
-30791,30796,30826,30875,30867,30874,30855,30876,30881,30883,30898,30905,30885,
-30932,30937,30921,30956,30962,30981,30964,30995,31012,31006,31028,40859,40697,
-40699,40700,30449,30468,30477,30457,30471,30472,30490,30498,30489,30509,30502,
-30517,30520,30544,30545,30535,30531,30554,30568,30562,30565,30591,30605,30589,
-30592,30604,30609,30623,30624,30640,30645,30653,30010,30016,30030,30027,30024,
-30043,30066,30073,30083,32600,32609,32607,35400,32616,32628,32625,32633,32641,
-32638,30413,30437,34866,38021,38022,38023,38027,38026,38028,38029,38031,38032,
-38036,38039,38037,38042,38043,38044,38051,38052,38059,38058,38061,38060,38063,
-38064,38066,38068,38070,38071,38072,38073,38074,38076,38077,38079,38084,38088,
-38089,38090,38091,38092,38093,38094,38096,38097,38098,38101,38102,38103,38105,
-38104,38107,38110,38111,38112,38114,38116,38117,38119,38120,38122,38121,38123,
-38126,38127,38131,38132,38133,38135,38137,38140,38141,38143,38147,38146,38150,
-38151,38153,38154,38157,38158,38159,38162,38163,38164,38165,38166,38168,38171,
-38173,38174,38175,38178,38186,38187,38185,38188,38193,38194,38196,38198,38199,
-38200,38204,38206,38207,38210,38197,38212,38213,38214,38217,38220,38222,38223,
-38226,38227,38228,38230,38231,38232,38233,38235,38238,38239,38237,38241,38242,
-38244,38245,38246,38247,38248,38249,38250,38251,38252,38255,38257,38258,38259,
-38202,30695,30700,38601,31189,31213,31203,31211,31238,23879,31235,31234,31262,
-31252,31289,31287,31313,40655,39333,31344,30344,30350,30355,30361,30372,29918,
-29920,29996,40480,40482,40488,40489,40490,40491,40492,40498,40497,40502,40504,
-40503,40505,40506,40510,40513,40514,40516,40518,40519,40520,40521,40523,40524,
-40526,40529,40533,40535,40538,40539,40540,40542,40547,40550,40551,40552,40553,
-40554,40555,40556,40561,40557,40563,30098,30100,30102,30112,30109,30124,30115,
-30131,30132,30136,30148,30129,30128,30147,30146,30166,30157,30179,30184,30182,
-30180,30187,30183,30211,30193,30204,30207,30224,30208,30213,30220,30231,30218,
-30245,30232,30229,30233,30235,30268,30242,30240,30272,30253,30256,30271,30261,
-30275,30270,30259,30285,30302,30292,30300,30294,30315,30319,32714,31462,31352,
-31353,31360,31366,31368,31381,31398,31392,31404,31400,31405,31411,34916,34921,
-34930,34941,34943,34946,34978,35014,34999,35004,35017,35042,35022,35043,35045,
-35057,35098,35068,35048,35070,35056,35105,35097,35091,35099,35082,35124,35115,
-35126,35137,35174,35195,30091,32997,30386,30388,30684,32786,32788,32790,32796,
-32800,32802,32805,32806,32807,32809,32808,32817,32779,32821,32835,32838,32845,
-32850,32873,32881,35203,39032,39040,39043,39049,39052,39053,39055,39060,39066,
-39067,39070,39071,39073,39074,39077,39078,34381,34388,34412,34414,34431,34426,
-34428,34427,34472,34445,34443,34476,34461,34471,34467,34474,34451,34473,34486,
-34500,34485,34510,34480,34490,34481,34479,34505,34511,34484,34537,34545,34546,
-34541,34547,34512,34579,34526,34548,34527,34520,34513,34563,34567,34552,34568,
-34570,34573,34569,34595,34619,34590,34597,34606,34586,34622,34632,34612,34609,
-34601,34615,34623,34690,34594,34685,34686,34683,34656,34672,34636,34670,34699,
-34643,34659,34684,34660,34649,34661,34707,34735,34728,34770,34758,34696,34693,
-34733,34711,34691,34731,34789,34732,34741,34739,34763,34771,34749,34769,34752,
-34762,34779,34794,34784,34798,34838,34835,34814,34826,34843,34849,34873,34876,
-32566,32578,32580,32581,33296,31482,31485,31496,31491,31492,31509,31498,31531,
-31503,31559,31544,31530,31513,31534,31537,31520,31525,31524,31539,31550,31518,
-31576,31578,31557,31605,31564,31581,31584,31598,31611,31586,31602,31601,31632,
-31654,31655,31672,31660,31645,31656,31621,31658,31644,31650,31659,31668,31697,
-31681,31692,31709,31706,31717,31718,31722,31756,31742,31740,31759,31766,31755,
-31775,31786,31782,31800,31809,31808,33278,33281,33282,33284,33260,34884,33313,
-33314,33315,33325,33327,33320,33323,33336,33339,33331,33332,33342,33348,33353,
-33355,33359,33370,33375,33384,34942,34949,34952,35032,35039,35166,32669,32671,
-32679,32687,32688,32690,31868,25929,31889,31901,31900,31902,31906,31922,31932,
-31933,31937,31943,31948,31949,31944,31941,31959,31976,33390,26280,32703,32718,
-32725,32741,32737,32742,32745,32750,32755,31992,32119,32166,32174,32327,32411,
-40632,40628,36211,36228,36244,36241,36273,36199,36205,35911,35913,37194,37200,
-37198,37199,37220,37218,37217,37232,37225,37231,37245,37246,37234,37236,37241,
-37260,37253,37264,37261,37265,37282,37283,37290,37293,37294,37295,37301,37300,
-37306,35925,40574,36280,36331,36357,36441,36457,36277,36287,36284,36282,36292,
-36310,36311,36314,36318,36302,36303,36315,36294,36332,36343,36344,36323,36345,
-36347,36324,36361,36349,36372,36381,36383,36396,36398,36387,36399,36410,36416,
-36409,36405,36413,36401,36425,36417,36418,36433,36434,36426,36464,36470,36476,
-36463,36468,36485,36495,36500,36496,36508,36510,35960,35970,35978,35973,35992,
-35988,26011,35286,35294,35290,35292,35301,35307,35311,35390,35622,38739,38633,
-38643,38639,38662,38657,38664,38671,38670,38698,38701,38704,38718,40832,40835,
-40837,40838,40839,40840,40841,40842,40844,40702,40715,40717,38585,38588,38589,
-38606,38610,30655,38624,37518,37550,37576,37694,37738,37834,37775,37950,37995,
-40063,40066,40069,40070,40071,40072,31267,40075,40078,40080,40081,40082,40084,
-40085,40090,40091,40094,40095,40096,40097,40098,40099,40101,40102,40103,40104,
-40105,40107,40109,40110,40112,40113,40114,40115,40116,40117,40118,40119,40122,
-40123,40124,40125,40132,40133,40134,40135,40138,40139,40140,40141,40142,40143,
-40144,40147,40148,40149,40151,40152,40153,40156,40157,40159,40162,38780,38789,
-38801,38802,38804,38831,38827,38819,38834,38836,39601,39600,39607,40536,39606,
-39610,39612,39617,39616,39621,39618,39627,39628,39633,39749,39747,39751,39753,
-39752,39757,39761,39144,39181,39214,39253,39252,39647,39649,39654,39663,39659,
-39675,39661,39673,39688,39695,39699,39711,39715,40637,40638,32315,40578,40583,
-40584,40587,40594,37846,40605,40607,40667,40668,40669,40672,40671,40674,40681,
-40679,40677,40682,40687,40738,40748,40751,40761,40759,40765,40766,40772,
-};
-
-static const struct dbcs_index gb2312_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{__gb2312_decmap+0,33,126},{__gb2312_decmap+94,
-49,124},{__gb2312_decmap+170,33,126},{__gb2312_decmap+264,33,115},{
-__gb2312_decmap+347,33,118},{__gb2312_decmap+433,33,88},{__gb2312_decmap+489,
-33,113},{__gb2312_decmap+570,33,105},{__gb2312_decmap+643,36,111},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__gb2312_decmap+719,33,126},{
-__gb2312_decmap+813,33,126},{__gb2312_decmap+907,33,126},{__gb2312_decmap+1001
-,33,126},{__gb2312_decmap+1095,33,126},{__gb2312_decmap+1189,33,126},{
-__gb2312_decmap+1283,33,126},{__gb2312_decmap+1377,33,126},{__gb2312_decmap+
-1471,33,126},{__gb2312_decmap+1565,33,126},{__gb2312_decmap+1659,33,126},{
-__gb2312_decmap+1753,33,126},{__gb2312_decmap+1847,33,126},{__gb2312_decmap+
-1941,33,126},{__gb2312_decmap+2035,33,126},{__gb2312_decmap+2129,33,126},{
-__gb2312_decmap+2223,33,126},{__gb2312_decmap+2317,33,126},{__gb2312_decmap+
-2411,33,126},{__gb2312_decmap+2505,33,126},{__gb2312_decmap+2599,33,126},{
-__gb2312_decmap+2693,33,126},{__gb2312_decmap+2787,33,126},{__gb2312_decmap+
-2881,33,126},{__gb2312_decmap+2975,33,126},{__gb2312_decmap+3069,33,126},{
-__gb2312_decmap+3163,33,126},{__gb2312_decmap+3257,33,126},{__gb2312_decmap+
-3351,33,126},{__gb2312_decmap+3445,33,126},{__gb2312_decmap+3539,33,126},{
-__gb2312_decmap+3633,33,126},{__gb2312_decmap+3727,33,126},{__gb2312_decmap+
-3821,33,126},{__gb2312_decmap+3915,33,126},{__gb2312_decmap+4009,33,126},{
-__gb2312_decmap+4103,33,126},{__gb2312_decmap+4197,33,126},{__gb2312_decmap+
-4291,33,126},{__gb2312_decmap+4385,33,121},{__gb2312_decmap+4474,33,126},{
-__gb2312_decmap+4568,33,126},{__gb2312_decmap+4662,33,126},{__gb2312_decmap+
-4756,33,126},{__gb2312_decmap+4850,33,126},{__gb2312_decmap+4944,33,126},{
-__gb2312_decmap+5038,33,126},{__gb2312_decmap+5132,33,126},{__gb2312_decmap+
-5226,33,126},{__gb2312_decmap+5320,33,126},{__gb2312_decmap+5414,33,126},{
-__gb2312_decmap+5508,33,126},{__gb2312_decmap+5602,33,126},{__gb2312_decmap+
-5696,33,126},{__gb2312_decmap+5790,33,126},{__gb2312_decmap+5884,33,126},{
-__gb2312_decmap+5978,33,126},{__gb2312_decmap+6072,33,126},{__gb2312_decmap+
-6166,33,126},{__gb2312_decmap+6260,33,126},{__gb2312_decmap+6354,33,126},{
-__gb2312_decmap+6448,33,126},{__gb2312_decmap+6542,33,126},{__gb2312_decmap+
-6636,33,126},{__gb2312_decmap+6730,33,126},{__gb2312_decmap+6824,33,126},{
-__gb2312_decmap+6918,33,126},{__gb2312_decmap+7012,33,126},{__gb2312_decmap+
-7106,33,126},{__gb2312_decmap+7200,33,126},{__gb2312_decmap+7294,33,126},{
-__gb2312_decmap+7388,33,126},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-};
-
-static const ucs2_t __gbkext_decmap[14531] = {
-19970,19972,19973,19974,19983,19986,19991,19999,20000,20001,20003,20006,20009,
-20014,20015,20017,20019,20021,20023,20028,20032,20033,20034,20036,20038,20042,
-20049,20053,20055,20058,20059,20066,20067,20068,20069,20071,20072,20074,20075,
-20076,20077,20078,20079,20082,20084,20085,20086,20087,20088,20089,20090,20091,
-20092,20093,20095,20096,20097,20098,20099,20100,20101,20103,20106,U,20112,
-20118,20119,20121,20124,20125,20126,20131,20138,20143,20144,20145,20148,20150,
-20151,20152,20153,20156,20157,20158,20168,20172,20175,20176,20178,20186,20187,
-20188,20192,20194,20198,20199,20201,20205,20206,20207,20209,20212,20216,20217,
-20218,20220,20222,20224,20226,20227,20228,20229,20230,20231,20232,20235,20236,
-20242,20243,20244,20245,20246,20252,20253,20257,20259,20264,20265,20268,20269,
-20270,20273,20275,20277,20279,20281,20283,20286,20287,20288,20289,20290,20292,
-20293,20295,20296,20297,20298,20299,20300,20306,20308,20310,20321,20322,20326,
-20328,20330,20331,20333,20334,20337,20338,20341,20343,20344,20345,20346,20349,
-20352,20353,20354,20357,20358,20359,20362,20364,20366,20368,20370,20371,20373,
-20374,20376,20377,20378,20380,20382,20383,20385,20386,20388,20395,20397,20400,
-20401,20402,20403,20404,20406,20407,20408,20409,20410,20411,20412,20413,20414,
-20416,20417,20418,20422,20423,20424,20425,20427,20428,20429,20434,20435,20436,
-20437,20438,20441,20443,20448,20450,20452,20453,20455,20459,20460,20464,20466,
-20468,20469,20470,20471,20473,20475,20476,20477,20479,20480,20481,20482,20483,
-20484,20485,20486,20487,20488,20489,20490,U,20491,20494,20496,20497,20499,
-20501,20502,20503,20507,20509,20510,20512,20514,20515,20516,20519,20523,20527,
-20528,20529,20530,20531,20532,20533,20534,20535,20536,20537,20539,20541,20543,
-20544,20545,20546,20548,20549,20550,20553,20554,20555,20557,20560,20561,20562,
-20563,20564,20566,20567,20568,20569,20571,20573,20574,20575,20576,20577,20578,
-20579,20580,20582,20583,20584,20585,20586,20587,20589,20590,20591,20592,20593,
-20594,20595,20596,20597,20600,20601,20602,20604,20605,20609,20610,20611,20612,
-20614,20615,20617,20618,20619,20620,20622,20623,20624,20625,20626,20627,20628,
-20629,20630,20631,20632,20633,20634,20635,20636,20637,20638,20639,20640,20641,
-20642,20644,20646,20650,20651,20653,20654,20655,20656,20657,20659,20660,20661,
-20662,20663,20664,20665,20668,20669,20670,20671,20672,20673,20674,20675,20676,
-20677,20678,20679,20680,20681,20682,20683,20684,20685,20686,20688,20689,20690,
-20691,20692,20693,20695,20696,20697,20699,20700,20701,20702,20703,20704,20705,
-20706,20707,20708,20709,20712,20713,20714,20715,20719,20720,20721,20722,20724,
-20726,20727,20728,20729,20730,20732,20733,20734,20735,20736,20737,20738,20739,
-20740,20741,20744,U,20745,20746,20748,20749,20750,20751,20752,20753,20755,
-20756,20757,20758,20759,20760,20761,20762,20763,20764,20765,20766,20767,20768,
-20770,20771,20772,20773,20774,20775,20776,20777,20778,20779,20780,20781,20782,
-20783,20784,20785,20786,20787,20788,20789,20790,20791,20792,20793,20794,20795,
-20796,20797,20798,20802,20807,20810,20812,20814,20815,20816,20818,20819,20823,
-20824,20825,20827,20829,20830,20831,20832,20833,20835,20836,20838,20839,20841,
-20842,20847,20850,20858,20862,20863,20867,20868,20870,20871,20874,20875,20878,
-20879,20880,20881,20883,20884,20888,20890,20893,20894,20895,20897,20899,20902,
-20903,20904,20905,20906,20909,20910,20916,20920,20921,20922,20926,20927,20929,
-20930,20931,20933,20936,20938,20941,20942,20944,20946,20947,20948,20949,20950,
-20951,20952,20953,20954,20956,20958,20959,20962,20963,20965,20966,20967,20968,
-20969,20970,20972,20974,20977,20978,20980,20983,20990,20996,20997,21001,21003,
-21004,21007,21008,21011,21012,21013,21020,21022,21023,21025,21026,21027,21029,
-21030,21031,21034,21036,21039,21041,21042,21044,21045,21052,21054,21060,21061,
-21062,21063,21064,21065,21067,21070,21071,21074,21075,21077,21079,21080,U,
-21081,21082,21083,21085,21087,21088,21090,21091,21092,21094,21096,21099,21100,
-21101,21102,21104,21105,21107,21108,21109,21110,21111,21112,21113,21114,21115,
-21116,21118,21120,21123,21124,21125,21126,21127,21129,21130,21131,21132,21133,
-21134,21135,21137,21138,21140,21141,21142,21143,21144,21145,21146,21148,21156,
-21157,21158,21159,21166,21167,21168,21172,21173,21174,21175,21176,21177,21178,
-21179,21180,21181,21184,21185,21186,21188,21189,21190,21192,21194,21196,21197,
-21198,21199,21201,21203,21204,21205,21207,21209,21210,21211,21212,21213,21214,
-21216,21217,21218,21219,21221,21222,21223,21224,21225,21226,21227,21228,21229,
-21230,21231,21233,21234,21235,21236,21237,21238,21239,21240,21243,21244,21245,
-21249,21250,21251,21252,21255,21257,21258,21259,21260,21262,21265,21266,21267,
-21268,21272,21275,21276,21278,21279,21282,21284,21285,21287,21288,21289,21291,
-21292,21293,21295,21296,21297,21298,21299,21300,21301,21302,21303,21304,21308,
-21309,21312,21314,21316,21318,21323,21324,21325,21328,21332,21336,21337,21339,
-21341,21349,21352,21354,21356,21357,21362,21366,21369,21371,21372,21373,21374,
-21376,21377,21379,21383,21384,21386,21390,21391,U,21392,21393,21394,21395,
-21396,21398,21399,21401,21403,21404,21406,21408,21409,21412,21415,21418,21419,
-21420,21421,21423,21424,21425,21426,21427,21428,21429,21431,21432,21433,21434,
-21436,21437,21438,21440,21443,21444,21445,21446,21447,21454,21455,21456,21458,
-21459,21461,21466,21468,21469,21470,21473,21474,21479,21492,21498,21502,21503,
-21504,21506,21509,21511,21515,21524,21528,21529,21530,21532,21538,21540,21541,
-21546,21552,21555,21558,21559,21562,21565,21567,21569,21570,21572,21573,21575,
-21577,21580,21581,21582,21583,21585,21594,21597,21598,21599,21600,21601,21603,
-21605,21607,21609,21610,21611,21612,21613,21614,21615,21616,21620,21625,21626,
-21630,21631,21633,21635,21637,21639,21640,21641,21642,21645,21649,21651,21655,
-21656,21660,21662,21663,21664,21665,21666,21669,21678,21680,21682,21685,21686,
-21687,21689,21690,21692,21694,21699,21701,21706,21707,21718,21720,21723,21728,
-21729,21730,21731,21732,21739,21740,21743,21744,21745,21748,21749,21750,21751,
-21752,21753,21755,21758,21760,21762,21763,21764,21765,21768,21770,21771,21772,
-21773,21774,21778,21779,21781,21782,21783,21784,21785,21786,21788,21789,21790,
-21791,21793,21797,21798,U,21800,21801,21803,21805,21810,21812,21813,21814,
-21816,21817,21818,21819,21821,21824,21826,21829,21831,21832,21835,21836,21837,
-21838,21839,21841,21842,21843,21844,21847,21848,21849,21850,21851,21853,21854,
-21855,21856,21858,21859,21864,21865,21867,21871,21872,21873,21874,21875,21876,
-21881,21882,21885,21887,21893,21894,21900,21901,21902,21904,21906,21907,21909,
-21910,21911,21914,21915,21918,21920,21921,21922,21923,21924,21925,21926,21928,
-21929,21930,21931,21932,21933,21934,21935,21936,21938,21940,21942,21944,21946,
-21948,21951,21952,21953,21954,21955,21958,21959,21960,21962,21963,21966,21967,
-21968,21973,21975,21976,21977,21978,21979,21982,21984,21986,21991,21993,21997,
-21998,22000,22001,22004,22006,22008,22009,22010,22011,22012,22015,22018,22019,
-22020,22021,22022,22023,22026,22027,22029,22032,22033,22034,22035,22036,22037,
-22038,22039,22041,22042,22044,22045,22048,22049,22050,22053,22054,22056,22057,
-22058,22059,22062,22063,22064,22067,22069,22071,22072,22074,22076,22077,22078,
-22080,22081,22082,22083,22084,22085,22086,22087,22088,22089,22090,22091,22095,
-22096,22097,22098,22099,22101,22102,22106,22107,22109,22110,22111,22112,22113,
-U,22115,22117,22118,22119,22125,22126,22127,22128,22130,22131,22132,22133,
-22135,22136,22137,22138,22141,22142,22143,22144,22145,22146,22147,22148,22151,
-22152,22153,22154,22155,22156,22157,22160,22161,22162,22164,22165,22166,22167,
-22168,22169,22170,22171,22172,22173,22174,22175,22176,22177,22178,22180,22181,
-22182,22183,22184,22185,22186,22187,22188,22189,22190,22192,22193,22194,22195,
-22196,22197,22198,22200,22201,22202,22203,22205,22206,22207,22208,22209,22210,
-22211,22212,22213,22214,22215,22216,22217,22219,22220,22221,22222,22223,22224,
-22225,22226,22227,22229,22230,22232,22233,22236,22243,22245,22246,22247,22248,
-22249,22250,22252,22254,22255,22258,22259,22262,22263,22264,22267,22268,22272,
-22273,22274,22277,22279,22283,22284,22285,22286,22287,22288,22289,22290,22291,
-22292,22293,22294,22295,22296,22297,22298,22299,22301,22302,22304,22305,22306,
-22308,22309,22310,22311,22315,22321,22322,22324,22325,22326,22327,22328,22332,
-22333,22335,22337,22339,22340,22341,22342,22344,22345,22347,22354,22355,22356,
-22357,22358,22360,22361,22370,22371,22373,22375,22380,22382,22384,22385,22386,
-22388,22389,22392,22393,22394,22397,22398,22399,22400,U,22401,22407,22408,
-22409,22410,22413,22414,22415,22416,22417,22420,22421,22422,22423,22424,22425,
-22426,22428,22429,22430,22431,22437,22440,22442,22444,22447,22448,22449,22451,
-22453,22454,22455,22457,22458,22459,22460,22461,22462,22463,22464,22465,22468,
-22469,22470,22471,22472,22473,22474,22476,22477,22480,22481,22483,22486,22487,
-22491,22492,22494,22497,22498,22499,22501,22502,22503,22504,22505,22506,22507,
-22508,22510,22512,22513,22514,22515,22517,22518,22519,22523,22524,22526,22527,
-22529,22531,22532,22533,22536,22537,22538,22540,22542,22543,22544,22546,22547,
-22548,22550,22551,22552,22554,22555,22556,22557,22559,22562,22563,22565,22566,
-22567,22568,22569,22571,22572,22573,22574,22575,22577,22578,22579,22580,22582,
-22583,22584,22585,22586,22587,22588,22589,22590,22591,22592,22593,22594,22595,
-22597,22598,22599,22600,22601,22602,22603,22606,22607,22608,22610,22611,22613,
-22614,22615,22617,22618,22619,22620,22621,22623,22624,22625,22626,22627,22628,
-22630,22631,22632,22633,22634,22637,22638,22639,22640,22641,22642,22643,22644,
-22645,22646,22647,22648,22649,22650,22651,22652,22653,22655,22658,22660,22662,
-22663,22664,22666,22667,22668,U,22669,22670,22671,22672,22673,22676,22677,
-22678,22679,22680,22683,22684,22685,22688,22689,22690,22691,22692,22693,22694,
-22695,22698,22699,22700,22701,22702,22703,22704,22705,22706,22707,22708,22709,
-22710,22711,22712,22713,22714,22715,22717,22718,22719,22720,22722,22723,22724,
-22726,22727,22728,22729,22730,22731,22732,22733,22734,22735,22736,22738,22739,
-22740,22742,22743,22744,22745,22746,22747,22748,22749,22750,22751,22752,22753,
-22754,22755,22757,22758,22759,22760,22761,22762,22765,22767,22769,22770,22772,
-22773,22775,22776,22778,22779,22780,22781,22782,22783,22784,22785,22787,22789,
-22790,22792,22793,22794,22795,22796,22798,22800,22801,22802,22803,22807,22808,
-22811,22813,22814,22816,22817,22818,22819,22822,22824,22828,22832,22834,22835,
-22837,22838,22843,22845,22846,22847,22848,22851,22853,22854,22858,22860,22861,
-22864,22866,22867,22873,22875,22876,22877,22878,22879,22881,22883,22884,22886,
-22887,22888,22889,22890,22891,22892,22893,22894,22895,22896,22897,22898,22901,
-22903,22906,22907,22908,22910,22911,22912,22917,22921,22923,22924,22926,22927,
-22928,22929,22932,22933,22936,22938,22939,22940,22941,22943,22944,22945,22946,
-22950,U,22951,22956,22957,22960,22961,22963,22964,22965,22966,22967,22968,
-22970,22972,22973,22975,22976,22977,22978,22979,22980,22981,22983,22984,22985,
-22988,22989,22990,22991,22997,22998,23001,23003,23006,23007,23008,23009,23010,
-23012,23014,23015,23017,23018,23019,23021,23022,23023,23024,23025,23026,23027,
-23028,23029,23030,23031,23032,23034,23036,23037,23038,23040,23042,23050,23051,
-23053,23054,23055,23056,23058,23060,23061,23062,23063,23065,23066,23067,23069,
-23070,23073,23074,23076,23078,23079,23080,23082,23083,23084,23085,23086,23087,
-23088,23091,23093,23095,23096,23097,23098,23099,23101,23102,23103,23105,23106,
-23107,23108,23109,23111,23112,23115,23116,23117,23118,23119,23120,23121,23122,
-23123,23124,23126,23127,23128,23129,23131,23132,23133,23134,23135,23136,23137,
-23139,23140,23141,23142,23144,23145,23147,23148,23149,23150,23151,23152,23153,
-23154,23155,23160,23161,23163,23164,23165,23166,23168,23169,23170,23171,23172,
-23173,23174,23175,23176,23177,23178,23179,23180,23181,23182,23183,23184,23185,
-23187,23188,23189,23190,23191,23192,23193,23196,23197,23198,23199,23200,23201,
-23202,23203,23204,23205,23206,23207,23208,23209,23211,23212,U,23213,23214,
-23215,23216,23217,23220,23222,23223,23225,23226,23227,23228,23229,23231,23232,
-23235,23236,23237,23238,23239,23240,23242,23243,23245,23246,23247,23248,23249,
-23251,23253,23255,23257,23258,23259,23261,23262,23263,23266,23268,23269,23271,
-23272,23274,23276,23277,23278,23279,23280,23282,23283,23284,23285,23286,23287,
-23288,23289,23290,23291,23292,23293,23294,23295,23296,23297,23298,23299,23300,
-23301,23302,23303,23304,23306,23307,23308,23309,23310,23311,23312,23313,23314,
-23315,23316,23317,23320,23321,23322,23323,23324,23325,23326,23327,23328,23329,
-23330,23331,23332,23333,23334,23335,23336,23337,23338,23339,23340,23341,23342,
-23343,23344,23345,23347,23349,23350,23352,23353,23354,23355,23356,23357,23358,
-23359,23361,23362,23363,23364,23365,23366,23367,23368,23369,23370,23371,23372,
-23373,23374,23375,23378,23382,23390,23392,23393,23399,23400,23403,23405,23406,
-23407,23410,23412,23414,23415,23416,23417,23419,23420,23422,23423,23426,23430,
-23434,23437,23438,23440,23441,23442,23444,23446,23455,23463,23464,23465,23468,
-23469,23470,23471,23473,23474,23479,23482,23483,23484,23488,23489,23491,23496,
-23497,23498,23499,23501,23502,23503,U,23505,23508,23509,23510,23511,23512,
-23513,23514,23515,23516,23520,23522,23523,23526,23527,23529,23530,23531,23532,
-23533,23535,23537,23538,23539,23540,23541,23542,23543,23549,23550,23552,23554,
-23555,23557,23559,23560,23563,23564,23565,23566,23568,23570,23571,23575,23577,
-23579,23582,23583,23584,23585,23587,23590,23592,23593,23594,23595,23597,23598,
-23599,23600,23602,23603,23605,23606,23607,23619,23620,23622,23623,23628,23629,
-23634,23635,23636,23638,23639,23640,23642,23643,23644,23645,23647,23650,23652,
-23655,23656,23657,23658,23659,23660,23661,23664,23666,23667,23668,23669,23670,
-23671,23672,23675,23676,23677,23678,23680,23683,23684,23685,23686,23687,23689,
-23690,23691,23694,23695,23698,23699,23701,23709,23710,23711,23712,23713,23716,
-23717,23718,23719,23720,23722,23726,23727,23728,23730,23732,23734,23737,23738,
-23739,23740,23742,23744,23746,23747,23749,23750,23751,23752,23753,23754,23756,
-23757,23758,23759,23760,23761,23763,23764,23765,23766,23767,23768,23770,23771,
-23772,23773,23774,23775,23776,23778,23779,23783,23785,23787,23788,23790,23791,
-23793,23794,23795,23796,23797,23798,23799,23800,23801,23802,23804,23805,23806,
-23807,23808,U,23809,23812,23813,23816,23817,23818,23819,23820,23821,23823,
-23824,23825,23826,23827,23829,23831,23832,23833,23834,23836,23837,23839,23840,
-23841,23842,23843,23845,23848,23850,23851,23852,23855,23856,23857,23858,23859,
-23861,23862,23863,23864,23865,23866,23867,23868,23871,23872,23873,23874,23875,
-23876,23877,23878,23880,23881,23885,23886,23887,23888,23889,23890,23891,23892,
-23893,23894,23895,23897,23898,23900,23902,23903,23904,23905,23906,23907,23908,
-23909,23910,23911,23912,23914,23917,23918,23920,23921,23922,23923,23925,23926,
-23927,23928,23929,23930,23931,23932,23933,23934,23935,23936,23937,23939,23940,
-23941,23942,23943,23944,23945,23946,23947,23948,23949,23950,23951,23952,23953,
-23954,23955,23956,23957,23958,23959,23960,23962,23963,23964,23966,23967,23968,
-23969,23970,23971,23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,
-23982,23983,23984,23985,23986,23987,23988,23989,23990,23992,23993,23994,23995,
-23996,23997,23998,23999,24000,24001,24002,24003,24004,24006,24007,24008,24009,
-24010,24011,24012,24014,24015,24016,24017,24018,24019,24020,24021,24022,24023,
-24024,24025,24026,24028,24031,24032,24035,24036,24042,24044,24045,U,24048,
-24053,24054,24056,24057,24058,24059,24060,24063,24064,24068,24071,24073,24074,
-24075,24077,24078,24082,24083,24087,24094,24095,24096,24097,24098,24099,24100,
-24101,24104,24105,24106,24107,24108,24111,24112,24114,24115,24116,24117,24118,
-24121,24122,24126,24127,24128,24129,24131,24134,24135,24136,24137,24138,24139,
-24141,24142,24143,24144,24145,24146,24147,24150,24151,24152,24153,24154,24156,
-24157,24159,24160,24163,24164,24165,24166,24167,24168,24169,24170,24171,24172,
-24173,24174,24175,24176,24177,24181,24183,24185,24190,24193,24194,24195,24197,
-24200,24201,24204,24205,24206,24210,24216,24219,24221,24225,24226,24227,24228,
-24232,24233,24234,24235,24236,24238,24239,24240,24241,24242,24244,24250,24251,
-24252,24253,24255,24256,24257,24258,24259,24260,24261,24262,24263,24264,24267,
-24268,24269,24270,24271,24272,24276,24277,24279,24280,24281,24282,24284,24285,
-24286,24287,24288,24289,24290,24291,24292,24293,24294,24295,24297,24299,24300,
-24301,24302,24303,24304,24305,24306,24307,24309,24312,24313,24315,24316,24317,
-24325,24326,24327,24329,24332,24333,24334,24336,24338,24340,24342,24345,24346,
-24348,24349,24350,24353,24354,24355,24356,U,24360,24363,24364,24366,24368,
-24370,24371,24372,24373,24374,24375,24376,24379,24381,24382,24383,24385,24386,
-24387,24388,24389,24390,24391,24392,24393,24394,24395,24396,24397,24398,24399,
-24401,24404,24409,24410,24411,24412,24414,24415,24416,24419,24421,24423,24424,
-24427,24430,24431,24434,24436,24437,24438,24440,24442,24445,24446,24447,24451,
-24454,24461,24462,24463,24465,24467,24468,24470,24474,24475,24477,24478,24479,
-24480,24482,24483,24484,24485,24486,24487,24489,24491,24492,24495,24496,24497,
-24498,24499,24500,24502,24504,24505,24506,24507,24510,24511,24512,24513,24514,
-24519,24520,24522,24523,24526,24531,24532,24533,24538,24539,24540,24542,24543,
-24546,24547,24549,24550,24552,24553,24556,24559,24560,24562,24563,24564,24566,
-24567,24569,24570,24572,24583,24584,24585,24587,24588,24592,24593,24595,24599,
-24600,24602,24606,24607,24610,24611,24612,24620,24621,24622,24624,24625,24626,
-24627,24628,24630,24631,24632,24633,24634,24637,24638,24640,24644,24645,24646,
-24647,24648,24649,24650,24652,24654,24655,24657,24659,24660,24662,24663,24664,
-24667,24668,24670,24671,24672,24673,24677,24678,24686,24689,24690,24692,24693,
-24695,24702,24704,U,24705,24706,24709,24710,24711,24712,24714,24715,24718,
-24719,24720,24721,24723,24725,24727,24728,24729,24732,24734,24737,24738,24740,
-24741,24743,24745,24746,24750,24752,24755,24757,24758,24759,24761,24762,24765,
-24766,24767,24768,24769,24770,24771,24772,24775,24776,24777,24780,24781,24782,
-24783,24784,24786,24787,24788,24790,24791,24793,24795,24798,24801,24802,24803,
-24804,24805,24810,24817,24818,24821,24823,24824,24827,24828,24829,24830,24831,
-24834,24835,24836,24837,24839,24842,24843,24844,24848,24849,24850,24851,24852,
-24854,24855,24856,24857,24859,24860,24861,24862,24865,24866,24869,24872,24873,
-24874,24876,24877,24878,24879,24880,24881,24882,24883,24884,24885,24886,24887,
-24888,24889,24890,24891,24892,24893,24894,24896,24897,24898,24899,24900,24901,
-24902,24903,24905,24907,24909,24911,24912,24914,24915,24916,24918,24919,24920,
-24921,24922,24923,24924,24926,24927,24928,24929,24931,24932,24933,24934,24937,
-24938,24939,24940,24941,24942,24943,24945,24946,24947,24948,24950,24952,24953,
-24954,24955,24956,24957,24958,24959,24960,24961,24962,24963,24964,24965,24966,
-24967,24968,24969,24970,24972,24973,24975,24976,24977,24978,24979,24981,U,
-24982,24983,24984,24985,24986,24987,24988,24990,24991,24992,24993,24994,24995,
-24996,24997,24998,25002,25003,25005,25006,25007,25008,25009,25010,25011,25012,
-25013,25014,25016,25017,25018,25019,25020,25021,25023,25024,25025,25027,25028,
-25029,25030,25031,25033,25036,25037,25038,25039,25040,25043,25045,25046,25047,
-25048,25049,25050,25051,25052,25053,25054,25055,25056,25057,25058,25059,25060,
-25061,25063,25064,25065,25066,25067,25068,25069,25070,25071,25072,25073,25074,
-25075,25076,25078,25079,25080,25081,25082,25083,25084,25085,25086,25088,25089,
-25090,25091,25092,25093,25095,25097,25107,25108,25113,25116,25117,25118,25120,
-25123,25126,25127,25128,25129,25131,25133,25135,25136,25137,25138,25141,25142,
-25144,25145,25146,25147,25148,25154,25156,25157,25158,25162,25167,25168,25173,
-25174,25175,25177,25178,25180,25181,25182,25183,25184,25185,25186,25188,25189,
-25192,25201,25202,25204,25205,25207,25208,25210,25211,25213,25217,25218,25219,
-25221,25222,25223,25224,25227,25228,25229,25230,25231,25232,25236,25241,25244,
-25245,25246,25251,25254,25255,25257,25258,25261,25262,25263,25264,25266,25267,
-25268,25270,25271,25272,25274,25278,25280,25281,U,25283,25291,25295,25297,
-25301,25309,25310,25312,25313,25316,25322,25323,25328,25330,25333,25336,25337,
-25338,25339,25344,25347,25348,25349,25350,25354,25355,25356,25357,25359,25360,
-25362,25363,25364,25365,25367,25368,25369,25372,25382,25383,25385,25388,25389,
-25390,25392,25393,25395,25396,25397,25398,25399,25400,25403,25404,25406,25407,
-25408,25409,25412,25415,25416,25418,25425,25426,25427,25428,25430,25431,25432,
-25433,25434,25435,25436,25437,25440,25444,25445,25446,25448,25450,25451,25452,
-25455,25456,25458,25459,25460,25461,25464,25465,25468,25469,25470,25471,25473,
-25475,25476,25477,25478,25483,25485,25489,25491,25492,25493,25495,25497,25498,
-25499,25500,25501,25502,25503,25505,25508,25510,25515,25519,25521,25522,25525,
-25526,25529,25531,25533,25535,25536,25537,25538,25539,25541,25543,25544,25546,
-25547,25548,25553,25555,25556,25557,25559,25560,25561,25562,25563,25564,25565,
-25567,25570,25572,25573,25574,25575,25576,25579,25580,25582,25583,25584,25585,
-25587,25589,25591,25593,25594,25595,25596,25598,25603,25604,25606,25607,25608,
-25609,25610,25613,25614,25617,25618,25621,25622,25623,25624,25625,25626,25629,
-25631,25634,25635,25636,U,25637,25639,25640,25641,25643,25646,25647,25648,
-25649,25650,25651,25653,25654,25655,25656,25657,25659,25660,25662,25664,25666,
-25667,25673,25675,25676,25677,25678,25679,25680,25681,25683,25685,25686,25687,
-25689,25690,25691,25692,25693,25695,25696,25697,25698,25699,25700,25701,25702,
-25704,25706,25707,25708,25710,25711,25712,25713,25714,25715,25716,25717,25718,
-25719,25723,25724,25725,25726,25727,25728,25729,25731,25734,25736,25737,25738,
-25739,25740,25741,25742,25743,25744,25747,25748,25751,25752,25754,25755,25756,
-25757,25759,25760,25761,25762,25763,25765,25766,25767,25768,25770,25771,25775,
-25777,25778,25779,25780,25782,25785,25787,25789,25790,25791,25793,25795,25796,
-25798,25799,25800,25801,25802,25803,25804,25807,25809,25811,25812,25813,25814,
-25817,25818,25819,25820,25821,25823,25824,25825,25827,25829,25831,25832,25833,
-25834,25835,25836,25837,25838,25839,25840,25841,25842,25843,25844,25845,25846,
-25847,25848,25849,25850,25851,25852,25853,25854,25855,25857,25858,25859,25860,
-25861,25862,25863,25864,25866,25867,25868,25869,25870,25871,25872,25873,25875,
-25876,25877,25878,25879,25881,25882,25883,25884,25885,25886,25887,25888,25889,
-U,25890,25891,25892,25894,25895,25896,25897,25898,25900,25901,25904,25905,
-25906,25907,25911,25914,25916,25917,25920,25921,25922,25923,25924,25926,25927,
-25930,25931,25933,25934,25936,25938,25939,25940,25943,25944,25946,25948,25951,
-25952,25953,25956,25957,25959,25960,25961,25962,25965,25966,25967,25969,25971,
-25973,25974,25976,25977,25978,25979,25980,25981,25982,25983,25984,25985,25986,
-25987,25988,25989,25990,25992,25993,25994,25997,25998,25999,26002,26004,26005,
-26006,26008,26010,26013,26014,26016,26018,26019,26022,26024,26026,26028,26030,
-26033,26034,26035,26036,26037,26038,26039,26040,26042,26043,26046,26047,26048,
-26050,26055,26056,26057,26058,26061,26064,26065,26067,26068,26069,26072,26073,
-26074,26075,26076,26077,26078,26079,26081,26083,26084,26090,26091,26098,26099,
-26100,26101,26104,26105,26107,26108,26109,26110,26111,26113,26116,26117,26119,
-26120,26121,26123,26125,26128,26129,26130,26134,26135,26136,26138,26139,26140,
-26142,26145,26146,26147,26148,26150,26153,26154,26155,26156,26158,26160,26162,
-26163,26167,26168,26169,26170,26171,26173,26175,26176,26178,26180,26181,26182,
-26183,26184,26185,26186,26189,26190,26192,26193,26200,U,26201,26203,26204,
-26205,26206,26208,26210,26211,26213,26215,26217,26218,26219,26220,26221,26225,
-26226,26227,26229,26232,26233,26235,26236,26237,26239,26240,26241,26243,26245,
-26246,26248,26249,26250,26251,26253,26254,26255,26256,26258,26259,26260,26261,
-26264,26265,26266,26267,26268,26270,26271,26272,26273,26274,26275,26276,26277,
-26278,26281,26282,26283,26284,26285,26287,26288,26289,26290,26291,26293,26294,
-26295,26296,26298,26299,26300,26301,26303,26304,26305,26306,26307,26308,26309,
-26310,26311,26312,26313,26314,26315,26316,26317,26318,26319,26320,26321,26322,
-26323,26324,26325,26326,26327,26328,26330,26334,26335,26336,26337,26338,26339,
-26340,26341,26343,26344,26346,26347,26348,26349,26350,26351,26353,26357,26358,
-26360,26362,26363,26365,26369,26370,26371,26372,26373,26374,26375,26380,26382,
-26383,26385,26386,26387,26390,26392,26393,26394,26396,26398,26400,26401,26402,
-26403,26404,26405,26407,26409,26414,26416,26418,26419,26422,26423,26424,26425,
-26427,26428,26430,26431,26433,26436,26437,26439,26442,26443,26445,26450,26452,
-26453,26455,26456,26457,26458,26459,26461,26466,26467,26468,26470,26471,26475,
-26476,26478,26481,26484,26486,U,26488,26489,26490,26491,26493,26496,26498,
-26499,26501,26502,26504,26506,26508,26509,26510,26511,26513,26514,26515,26516,
-26518,26521,26523,26527,26528,26529,26532,26534,26537,26540,26542,26545,26546,
-26548,26553,26554,26555,26556,26557,26558,26559,26560,26562,26565,26566,26567,
-26568,26569,26570,26571,26572,26573,26574,26581,26582,26583,26587,26591,26593,
-26595,26596,26598,26599,26600,26602,26603,26605,26606,26610,26613,26614,26615,
-26616,26617,26618,26619,26620,26622,26625,26626,26627,26628,26630,26637,26640,
-26642,26644,26645,26648,26649,26650,26651,26652,26654,26655,26656,26658,26659,
-26660,26661,26662,26663,26664,26667,26668,26669,26670,26671,26672,26673,26676,
-26677,26678,26682,26683,26687,26695,26699,26701,26703,26706,26710,26711,26712,
-26713,26714,26715,26716,26717,26718,26719,26730,26732,26733,26734,26735,26736,
-26737,26738,26739,26741,26744,26745,26746,26747,26748,26749,26750,26751,26752,
-26754,26756,26759,26760,26761,26762,26763,26764,26765,26766,26768,26769,26770,
-26772,26773,26774,26776,26777,26778,26779,26780,26781,26782,26783,26784,26785,
-26787,26788,26789,26793,26794,26795,26796,26798,26801,26802,26804,26806,26807,
-26808,U,26809,26810,26811,26812,26813,26814,26815,26817,26819,26820,26821,
-26822,26823,26824,26826,26828,26830,26831,26832,26833,26835,26836,26838,26839,
-26841,26843,26844,26845,26846,26847,26849,26850,26852,26853,26854,26855,26856,
-26857,26858,26859,26860,26861,26863,26866,26867,26868,26870,26871,26872,26875,
-26877,26878,26879,26880,26882,26883,26884,26886,26887,26888,26889,26890,26892,
-26895,26897,26899,26900,26901,26902,26903,26904,26905,26906,26907,26908,26909,
-26910,26913,26914,26915,26917,26918,26919,26920,26921,26922,26923,26924,26926,
-26927,26929,26930,26931,26933,26934,26935,26936,26938,26939,26940,26942,26944,
-26945,26947,26948,26949,26950,26951,26952,26953,26954,26955,26956,26957,26958,
-26959,26960,26961,26962,26963,26965,26966,26968,26969,26971,26972,26975,26977,
-26978,26980,26981,26983,26984,26985,26986,26988,26989,26991,26992,26994,26995,
-26996,26997,26998,27002,27003,27005,27006,27007,27009,27011,27013,27018,27019,
-27020,27022,27023,27024,27025,27026,27027,27030,27031,27033,27034,27037,27038,
-27039,27040,27041,27042,27043,27044,27045,27046,27049,27050,27052,27054,27055,
-27056,27058,27059,27061,27062,27064,27065,27066,27068,27069,U,27070,27071,
-27072,27074,27075,27076,27077,27078,27079,27080,27081,27083,27085,27087,27089,
-27090,27091,27093,27094,27095,27096,27097,27098,27100,27101,27102,27105,27106,
-27107,27108,27109,27110,27111,27112,27113,27114,27115,27116,27118,27119,27120,
-27121,27123,27124,27125,27126,27127,27128,27129,27130,27131,27132,27134,27136,
-27137,27138,27139,27140,27141,27142,27143,27144,27145,27147,27148,27149,27150,
-27151,27152,27153,27154,27155,27156,27157,27158,27161,27162,27163,27164,27165,
-27166,27168,27170,27171,27172,27173,27174,27175,27177,27179,27180,27181,27182,
-27184,27186,27187,27188,27190,27191,27192,27193,27194,27195,27196,27199,27200,
-27201,27202,27203,27205,27206,27208,27209,27210,27211,27212,27213,27214,27215,
-27217,27218,27219,27220,27221,27222,27223,27226,27228,27229,27230,27231,27232,
-27234,27235,27236,27238,27239,27240,27241,27242,27243,27244,27245,27246,27247,
-27248,27250,27251,27252,27253,27254,27255,27256,27258,27259,27261,27262,27263,
-27265,27266,27267,27269,27270,27271,27272,27273,27274,27275,27276,27277,27279,
-27282,27283,27284,27285,27286,27288,27289,27290,27291,27292,27293,27294,27295,
-27297,27298,27299,27300,27301,27302,U,27303,27304,27306,27309,27310,27311,
-27312,27313,27314,27315,27316,27317,27318,27319,27320,27321,27322,27323,27324,
-27325,27326,27327,27328,27329,27330,27331,27332,27333,27334,27335,27336,27337,
-27338,27339,27340,27341,27342,27343,27344,27345,27346,27347,27348,27349,27350,
-27351,27352,27353,27354,27355,27356,27357,27358,27359,27360,27361,27362,27363,
-27364,27365,27366,27367,27368,27369,27370,27371,27372,27373,27374,27375,27376,
-27377,27378,27379,27380,27381,27382,27383,27384,27385,27386,27387,27388,27389,
-27390,27391,27392,27393,27394,27395,27396,27397,27398,27399,27400,27401,27402,
-27403,27404,27405,27406,27407,27408,27409,27410,27411,27412,27413,27414,27415,
-27416,27417,27418,27419,27420,27421,27422,27423,27429,27430,27432,27433,27434,
-27435,27436,27437,27438,27439,27440,27441,27443,27444,27445,27446,27448,27451,
-27452,27453,27455,27456,27457,27458,27460,27461,27464,27466,27467,27469,27470,
-27471,27472,27473,27474,27475,27476,27477,27478,27479,27480,27482,27483,27484,
-27485,27486,27487,27488,27489,27496,27497,27499,27500,27501,27502,27503,27504,
-27505,27506,27507,27508,27509,27510,27511,27512,27514,27517,27518,27519,27520,
-27525,27528,U,27532,27534,27535,27536,27537,27540,27541,27543,27544,27545,
-27548,27549,27550,27551,27552,27554,27555,27556,27557,27558,27559,27560,27561,
-27563,27564,27565,27566,27567,27568,27569,27570,27574,27576,27577,27578,27579,
-27580,27581,27582,27584,27587,27588,27590,27591,27592,27593,27594,27596,27598,
-27600,27601,27608,27610,27612,27613,27614,27615,27616,27618,27619,27620,27621,
-27622,27623,27624,27625,27628,27629,27630,27632,27633,27634,27636,27638,27639,
-27640,27642,27643,27644,27646,27647,27648,27649,27650,27651,27652,27656,27657,
-27658,27659,27660,27662,27666,27671,27676,27677,27678,27680,27683,27685,27691,
-27692,27693,27697,27699,27702,27703,27705,27706,27707,27708,27710,27711,27715,
-27716,27717,27720,27723,27724,27725,27726,27727,27729,27730,27731,27734,27736,
-27737,27738,27746,27747,27749,27750,27751,27755,27756,27757,27758,27759,27761,
-27763,27765,27767,27768,27770,27771,27772,27775,27776,27780,27783,27786,27787,
-27789,27790,27793,27794,27797,27798,27799,27800,27802,27804,27805,27806,27808,
-27810,27816,27820,27823,27824,27828,27829,27830,27831,27834,27840,27841,27842,
-27843,27846,27847,27848,27851,27853,27854,27855,27857,27858,27864,U,27865,
-27866,27868,27869,27871,27876,27878,27879,27881,27884,27885,27890,27892,27897,
-27903,27904,27906,27907,27909,27910,27912,27913,27914,27917,27919,27920,27921,
-27923,27924,27925,27926,27928,27932,27933,27935,27936,27937,27938,27939,27940,
-27942,27944,27945,27948,27949,27951,27952,27956,27958,27959,27960,27962,27967,
-27968,27970,27972,27977,27980,27984,27989,27990,27991,27992,27995,27997,27999,
-28001,28002,28004,28005,28007,28008,28011,28012,28013,28016,28017,28018,28019,
-28021,28022,28025,28026,28027,28029,28030,28031,28032,28033,28035,28036,28038,
-28039,28042,28043,28045,28047,28048,28050,28054,28055,28056,28057,28058,28060,
-28066,28069,28076,28077,28080,28081,28083,28084,28086,28087,28089,28090,28091,
-28092,28093,28094,28097,28098,28099,28104,28105,28106,28109,28110,28111,28112,
-28114,28115,28116,28117,28119,28122,28123,28124,28127,28130,28131,28133,28135,
-28136,28137,28138,28141,28143,28144,28146,28148,28149,28150,28152,28154,28157,
-28158,28159,28160,28161,28162,28163,28164,28166,28167,28168,28169,28171,28175,
-28178,28179,28181,28184,28185,28187,28188,28190,28191,28194,28198,28199,28200,
-28202,28204,28206,28208,28209,28211,28213,U,28214,28215,28217,28219,28220,
-28221,28222,28223,28224,28225,28226,28229,28230,28231,28232,28233,28234,28235,
-28236,28239,28240,28241,28242,28245,28247,28249,28250,28252,28253,28254,28256,
-28257,28258,28259,28260,28261,28262,28263,28264,28265,28266,28268,28269,28271,
-28272,28273,28274,28275,28276,28277,28278,28279,28280,28281,28282,28283,28284,
-28285,28288,28289,28290,28292,28295,28296,28298,28299,28300,28301,28302,28305,
-28306,28307,28308,28309,28310,28311,28313,28314,28315,28317,28318,28320,28321,
-28323,28324,28326,28328,28329,28331,28332,28333,28334,28336,28339,28341,28344,
-28345,28348,28350,28351,28352,28355,28356,28357,28358,28360,28361,28362,28364,
-28365,28366,28368,28370,28374,28376,28377,28379,28380,28381,28387,28391,28394,
-28395,28396,28397,28398,28399,28400,28401,28402,28403,28405,28406,28407,28408,
-28410,28411,28412,28413,28414,28415,28416,28417,28419,28420,28421,28423,28424,
-28426,28427,28428,28429,28430,28432,28433,28434,28438,28439,28440,28441,28442,
-28443,28444,28445,28446,28447,28449,28450,28451,28453,28454,28455,28456,28460,
-28462,28464,28466,28468,28469,28471,28472,28473,28474,28475,28476,28477,28479,
-28480,28481,28482,U,28483,28484,28485,28488,28489,28490,28492,28494,28495,
-28496,28497,28498,28499,28500,28501,28502,28503,28505,28506,28507,28509,28511,
-28512,28513,28515,28516,28517,28519,28520,28521,28522,28523,28524,28527,28528,
-28529,28531,28533,28534,28535,28537,28539,28541,28542,28543,28544,28545,28546,
-28547,28549,28550,28551,28554,28555,28559,28560,28561,28562,28563,28564,28565,
-28566,28567,28568,28569,28570,28571,28573,28574,28575,28576,28578,28579,28580,
-28581,28582,28584,28585,28586,28587,28588,28589,28590,28591,28592,28593,28594,
-28596,28597,28599,28600,28602,28603,28604,28605,28606,28607,28609,28611,28612,
-28613,28614,28615,28616,28618,28619,28620,28621,28622,28623,28624,28627,28628,
-28629,28630,28631,28632,28633,28634,28635,28636,28637,28639,28642,28643,28644,
-28645,28646,28647,28648,28649,28650,28651,28652,28653,28656,28657,28658,28659,
-28660,28661,28662,28663,28664,28665,28666,28667,28668,28669,28670,28671,28672,
-28673,28674,28675,28676,28677,28678,28679,28680,28681,28682,28683,28684,28685,
-28686,28687,28688,28690,28691,28692,28693,28694,28695,28696,28697,28700,28701,
-28702,28703,28704,28705,28706,28708,28709,28710,28711,28712,28713,28714,U,
-28715,28716,28717,28718,28719,28720,28721,28722,28723,28724,28726,28727,28728,
-28730,28731,28732,28733,28734,28735,28736,28737,28738,28739,28740,28741,28742,
-28743,28744,28745,28746,28747,28749,28750,28752,28753,28754,28755,28756,28757,
-28758,28759,28760,28761,28762,28763,28764,28765,28767,28768,28769,28770,28771,
-28772,28773,28774,28775,28776,28777,28778,28782,28785,28786,28787,28788,28791,
-28793,28794,28795,28797,28801,28802,28803,28804,28806,28807,28808,28811,28812,
-28813,28815,28816,28817,28819,28823,28824,28826,28827,28830,28831,28832,28833,
-28834,28835,28836,28837,28838,28839,28840,28841,28842,28848,28850,28852,28853,
-28854,28858,28862,28863,28868,28869,28870,28871,28873,28875,28876,28877,28878,
-28879,28880,28881,28882,28883,28884,28885,28886,28887,28890,28892,28893,28894,
-28896,28897,28898,28899,28901,28906,28910,28912,28913,28914,28915,28916,28917,
-28918,28920,28922,28923,28924,28926,28927,28928,28929,28930,28931,28932,28933,
-28934,28935,28936,28939,28940,28941,28942,28943,28945,28946,28948,28951,28955,
-28956,28957,28958,28959,28960,28961,28962,28963,28964,28965,28967,28968,28969,
-28970,28971,28972,28973,28974,28978,28979,28980,U,28981,28983,28984,28985,
-28986,28987,28988,28989,28990,28991,28992,28993,28994,28995,28996,28998,28999,
-29000,29001,29003,29005,29007,29008,29009,29010,29011,29012,29013,29014,29015,
-29016,29017,29018,29019,29021,29023,29024,29025,29026,29027,29029,29033,29034,
-29035,29036,29037,29039,29040,29041,29044,29045,29046,29047,29049,29051,29052,
-29054,29055,29056,29057,29058,29059,29061,29062,29063,29064,29065,29067,29068,
-29069,29070,29072,29073,29074,29075,29077,29078,29079,29082,29083,29084,29085,
-29086,29089,29090,29091,29092,29093,29094,29095,29097,29098,29099,29101,29102,
-29103,29104,29105,29106,29108,29110,29111,29112,29114,29115,29116,29117,29118,
-29119,29120,29121,29122,29124,29125,29126,29127,29128,29129,29130,29131,29132,
-29133,29135,29136,29137,29138,29139,29142,29143,29144,29145,29146,29147,29148,
-29149,29150,29151,29153,29154,29155,29156,29158,29160,29161,29162,29163,29164,
-29165,29167,29168,29169,29170,29171,29172,29173,29174,29175,29176,29178,29179,
-29180,29181,29182,29183,29184,29185,29186,29187,29188,29189,29191,29192,29193,
-29194,29195,29196,29197,29198,29199,29200,29201,29202,29203,29204,29205,29206,
-29207,29208,29209,29210,U,29211,29212,29214,29215,29216,29217,29218,29219,
-29220,29221,29222,29223,29225,29227,29229,29230,29231,29234,29235,29236,29242,
-29244,29246,29248,29249,29250,29251,29252,29253,29254,29257,29258,29259,29262,
-29263,29264,29265,29267,29268,29269,29271,29272,29274,29276,29278,29280,29283,
-29284,29285,29288,29290,29291,29292,29293,29296,29297,29299,29300,29302,29303,
-29304,29307,29308,29309,29314,29315,29317,29318,29319,29320,29321,29324,29326,
-29328,29329,29331,29332,29333,29334,29335,29336,29337,29338,29339,29340,29341,
-29342,29344,29345,29346,29347,29348,29349,29350,29351,29352,29353,29354,29355,
-29358,29361,29362,29363,29365,29370,29371,29372,29373,29374,29375,29376,29381,
-29382,29383,29385,29386,29387,29388,29391,29393,29395,29396,29397,29398,29400,
-29402,29403,183,U,U,U,U,U,8212,8560,8561,8562,8563,8564,8565,8566,8567,8568,
-8569,65077,65078,65081,65082,65087,65088,65085,65086,65089,65090,65091,65092,
-U,U,65083,65084,65079,65080,65073,U,65075,65076,714,715,729,8211,8213,8229,
-8245,8453,8457,8598,8599,8600,8601,8725,8735,8739,8786,8806,8807,8895,9552,
-9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,
-9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9581,9582,
-9583,9584,9585,9586,9587,9601,9602,9603,9604,9605,9606,9607,U,9608,9609,9610,
-9611,9612,9613,9614,9615,9619,9620,9621,9660,9661,9698,9699,9700,9701,9737,
-8853,12306,12317,12318,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,593,U,324,328,U,609,12321,12322,12323,12324,12325,12326,
-12327,12328,12329,12963,13198,13199,13212,13213,13214,13217,13252,13262,13265,
-13266,13269,65072,65506,65508,U,8481,12849,U,8208,U,U,U,12540,12443,12444,
-12541,12542,12294,12445,12446,65097,65098,65099,65100,65101,65102,65103,65104,
-65105,65106,65108,65109,65110,65111,65113,65114,65115,65116,65117,65118,65119,
-65120,65121,U,65122,65123,65124,65125,65126,65128,65129,65130,65131,U,U,U,U,U,
-U,U,U,U,U,U,U,U,12295,29404,29405,29407,29410,29411,29412,29413,29414,29415,
-29418,29419,29429,29430,29433,29437,29438,29439,29440,29442,29444,29445,29446,
-29447,29448,29449,29451,29452,29453,29455,29456,29457,29458,29460,29464,29465,
-29466,29471,29472,29475,29476,29478,29479,29480,29485,29487,29488,29490,29491,
-29493,29494,29498,29499,29500,29501,29504,29505,29506,29507,29508,29509,29510,
-29511,29512,U,29513,29514,29515,29516,29518,29519,29521,29523,29524,29525,
-29526,29528,29529,29530,29531,29532,29533,29534,29535,29537,29538,29539,29540,
-29541,29542,29543,29544,29545,29546,29547,29550,29552,29553,29554,29555,29556,
-29557,29558,29559,29560,29561,29562,29563,29564,29565,29567,29568,29569,29570,
-29571,29573,29574,29576,29578,29580,29581,29583,29584,29586,29587,29588,29589,
-29591,29592,29593,29594,29596,29597,29598,29600,29601,29603,29604,29605,29606,
-29607,29608,29610,29612,29613,29617,29620,29621,29622,29624,29625,29628,29629,
-29630,29631,29633,29635,29636,29637,29638,29639,U,29643,29644,29646,29650,
-29651,29652,29653,29654,29655,29656,29658,29659,29660,29661,29663,29665,29666,
-29667,29668,29670,29672,29674,29675,29676,29678,29679,29680,29681,29683,29684,
-29685,29686,29687,29688,29689,29690,29691,29692,29693,29694,29695,29696,29697,
-29698,29700,29703,29704,29707,29708,29709,29710,29713,29714,29715,29716,29717,
-29718,29719,29720,29721,29724,29725,29726,29727,29728,29729,29731,29732,29735,
-29737,29739,29741,29743,29745,29746,29751,29752,29753,29754,29755,29757,29758,
-29759,29760,29762,29763,29764,29765,29766,29767,29768,29769,29770,29771,29772,
-29773,U,29774,29775,29776,29777,29778,29779,29780,29782,29784,29789,29792,
-29793,29794,29795,29796,29797,29798,29799,29800,29801,29802,29803,29804,29806,
-29807,29809,29810,29811,29812,29813,29816,29817,29818,29819,29820,29821,29823,
-29826,29828,29829,29830,29832,29833,29834,29836,29837,29839,29841,29842,29843,
-29844,29845,29846,29847,29848,29849,29850,29851,29853,29855,29856,29857,29858,
-29859,29860,29861,29862,29866,29867,29868,29869,29870,29871,29872,29873,29874,
-29875,29876,29877,29878,29879,29880,29881,29883,29884,29885,29886,29887,29888,
-29889,29890,29891,29892,29893,29894,29895,U,29896,29897,29898,29899,29900,
-29901,29902,29903,29904,29905,29907,29908,29909,29910,29911,29912,29913,29914,
-29915,29917,29919,29921,29925,29927,29928,29929,29930,29931,29932,29933,29936,
-29937,29938,29939,29941,29944,29945,29946,29947,29948,29949,29950,29952,29953,
-29954,29955,29957,29958,29959,29960,29961,29962,29963,29964,29966,29968,29970,
-29972,29973,29974,29975,29979,29981,29982,29984,29985,29986,29987,29988,29990,
-29991,29994,29998,30004,30006,30009,30012,30013,30015,30017,30018,30019,30020,
-30022,30023,30025,30026,30029,30032,30033,30034,30035,30037,30038,30039,30040,
-U,30045,30046,30047,30048,30049,30050,30051,30052,30055,30056,30057,30059,
-30060,30061,30062,30063,30064,30065,30067,30069,30070,30071,30074,30075,30076,
-30077,30078,30080,30081,30082,30084,30085,30087,30088,30089,30090,30092,30093,
-30094,30096,30099,30101,30104,30107,30108,30110,30114,30118,30119,30120,30121,
-30122,30125,30134,30135,30138,30139,30143,30144,30145,30150,30155,30156,30158,
-30159,30160,30161,30163,30167,30169,30170,30172,30173,30175,30176,30177,30181,
-30185,30188,30189,30190,30191,30194,30195,30197,30198,30199,30200,30202,30203,
-30205,30206,30210,30212,30214,30215,U,30216,30217,30219,30221,30222,30223,
-30225,30226,30227,30228,30230,30234,30236,30237,30238,30241,30243,30247,30248,
-30252,30254,30255,30257,30258,30262,30263,30265,30266,30267,30269,30273,30274,
-30276,30277,30278,30279,30280,30281,30282,30283,30286,30287,30288,30289,30290,
-30291,30293,30295,30296,30297,30298,30299,30301,30303,30304,30305,30306,30308,
-30309,30310,30311,30312,30313,30314,30316,30317,30318,30320,30321,30322,30323,
-30324,30325,30326,30327,30329,30330,30332,30335,30336,30337,30339,30341,30345,
-30346,30348,30349,30351,30352,30354,30356,30357,30359,30360,30362,30363,U,
-30364,30365,30366,30367,30368,30369,30370,30371,30373,30374,30375,30376,30377,
-30378,30379,30380,30381,30383,30384,30387,30389,30390,30391,30392,30393,30394,
-30395,30396,30397,30398,30400,30401,30403,30404,30407,30409,30411,30412,30419,
-30421,30425,30426,30428,30429,30430,30432,30433,30434,30435,30436,30438,30439,
-30440,30441,30442,30443,30444,30445,30448,30451,30453,30454,30455,30458,30459,
-30461,30463,30464,30466,30467,30469,30470,30474,30476,30478,30479,30480,30481,
-30482,30483,30484,30485,30486,30487,30488,30491,30492,30493,30494,30497,30499,
-30500,30501,30503,30506,30507,U,30508,30510,30512,30513,30514,30515,30516,
-30521,30523,30525,30526,30527,30530,30532,30533,30534,30536,30537,30538,30539,
-30540,30541,30542,30543,30546,30547,30548,30549,30550,30551,30552,30553,30556,
-30557,30558,30559,30560,30564,30567,30569,30570,30573,30574,30575,30576,30577,
-30578,30579,30580,30581,30582,30583,30584,30586,30587,30588,30593,30594,30595,
-30598,30599,30600,30601,30602,30603,30607,30608,30611,30612,30613,30614,30615,
-30616,30617,30618,30619,30620,30621,30622,30625,30627,30628,30630,30632,30635,
-30637,30638,30639,30641,30642,30644,30646,30647,30648,30649,30650,U,30652,
-30654,30656,30657,30658,30659,30660,30661,30662,30663,30664,30665,30666,30667,
-30668,30670,30671,30672,30673,30674,30675,30676,30677,30678,30680,30681,30682,
-30685,30686,30687,30688,30689,30692,30694,30696,30698,30703,30704,30705,30706,
-30708,30709,30711,30713,30714,30715,30716,30723,30724,30725,30726,30727,30728,
-30730,30731,30734,30735,30736,30739,30741,30745,30747,30750,30752,30753,30754,
-30756,30760,30762,30763,30766,30767,30769,30770,30771,30773,30774,30781,30783,
-30785,30786,30787,30788,30790,30792,30793,30794,30795,30797,30799,30801,30803,
-30804,30808,30809,30810,U,30811,30812,30814,30815,30816,30817,30818,30819,
-30820,30821,30822,30823,30824,30825,30831,30832,30833,30834,30835,30836,30837,
-30838,30840,30841,30842,30843,30845,30846,30847,30848,30849,30850,30851,30852,
-30853,30854,30856,30858,30859,30863,30864,30866,30868,30869,30870,30873,30877,
-30878,30880,30882,30884,30886,30888,30889,30890,30891,30892,30893,30894,30895,
-30901,30902,30903,30904,30906,30907,30908,30909,30911,30912,30914,30915,30916,
-30918,30919,30920,30924,30925,30926,30927,30929,30930,30931,30934,30935,30936,
-30938,30939,30940,30941,30942,30943,30944,30945,30946,30947,U,30948,30949,
-30950,30951,30953,30954,30955,30957,30958,30959,30960,30961,30963,30965,30966,
-30968,30969,30971,30972,30973,30974,30975,30976,30978,30979,30980,30982,30983,
-30984,30985,30986,30987,30988,30989,30990,30991,30992,30993,30994,30996,30997,
-30998,30999,31000,31001,31002,31003,31004,31005,31007,31008,31009,31010,31011,
-31013,31014,31015,31016,31017,31018,31019,31020,31021,31022,31023,31024,31025,
-31026,31027,31029,31030,31031,31032,31033,31037,31039,31042,31043,31044,31045,
-31047,31050,31051,31052,31053,31054,31055,31056,31057,31058,31060,31061,31064,
-31065,31073,31075,U,31076,31078,31081,31082,31083,31084,31086,31088,31089,
-31090,31091,31092,31093,31094,31097,31099,31100,31101,31102,31103,31106,31107,
-31110,31111,31112,31113,31115,31116,31117,31118,31120,31121,31122,31123,31124,
-31125,31126,31127,31128,31129,31131,31132,31133,31134,31135,31136,31137,31138,
-31139,31140,31141,31142,31144,31145,31146,31147,31148,31149,31150,31151,31152,
-31153,31154,31156,31157,31158,31159,31160,31164,31167,31170,31172,31173,31175,
-31176,31178,31180,31182,31183,31184,31187,31188,31190,31191,31193,31194,31195,
-31196,31197,31198,31200,31201,31202,31205,31208,31210,U,31212,31214,31217,
-31218,31219,31220,31221,31222,31223,31225,31226,31228,31230,31231,31233,31236,
-31237,31239,31240,31241,31242,31244,31247,31248,31249,31250,31251,31253,31254,
-31256,31257,31259,31260,31261,31263,31265,31266,31268,31269,31270,31271,31272,
-31273,31274,31275,31276,31277,31278,31279,31280,31281,31282,31284,31285,31286,
-31288,31290,31294,31296,31297,31298,31299,31300,31301,31303,31304,31305,31306,
-31307,31308,31309,31310,31311,31312,31314,31315,31316,31317,31318,31320,31321,
-31322,31323,31324,31325,31326,31327,31328,31329,31330,31331,31332,31333,31334,
-31335,31336,U,31337,31338,31339,31340,31341,31342,31343,31345,31346,31347,
-31349,31355,31356,31357,31358,31362,31365,31367,31369,31370,31371,31372,31374,
-31375,31376,31379,31380,31385,31386,31387,31390,31393,31394,31395,31396,31399,
-31401,31402,31403,31406,31407,31408,31409,31410,31412,31413,31414,31415,31416,
-31417,31418,31419,31420,31421,31422,31424,31425,31426,31427,31428,31429,31430,
-31431,31432,31433,31434,31436,31437,31438,31439,31440,31441,31442,31443,31444,
-31445,31447,31448,31450,31451,31452,31453,31457,31458,31460,31463,31464,31465,
-31466,31467,31468,31470,31472,31473,31474,31475,U,31476,31477,31478,31479,
-31480,31483,31484,31486,31488,31489,31490,31493,31495,31497,31500,31501,31502,
-31504,31506,31507,31510,31511,31512,31514,31516,31517,31519,31521,31522,31523,
-31527,31529,31533,31535,31536,31538,31540,31541,31542,31543,31545,31547,31549,
-31551,31552,31553,31554,31555,31556,31558,31560,31562,31565,31566,31571,31573,
-31575,31577,31580,31582,31583,31585,31587,31588,31589,31590,31591,31592,31593,
-31594,31595,31596,31597,31599,31600,31603,31604,31606,31608,31610,31612,31613,
-31615,31617,31618,31619,31620,31622,31623,31624,31625,31626,31627,31628,31630,
-31631,U,31633,31634,31635,31638,31640,31641,31642,31643,31646,31647,31648,
-31651,31652,31653,31662,31663,31664,31666,31667,31669,31670,31671,31673,31674,
-31675,31676,31677,31678,31679,31680,31682,31683,31684,31685,31688,31689,31690,
-31691,31693,31694,31695,31696,31698,31700,31701,31702,31703,31704,31707,31708,
-31710,31711,31712,31714,31715,31716,31719,31720,31721,31723,31724,31725,31727,
-31728,31730,31731,31732,31733,31734,31736,31737,31738,31739,31741,31743,31744,
-31745,31746,31747,31748,31749,31750,31752,31753,31754,31757,31758,31760,31761,
-31762,31763,31764,31765,31767,31768,31769,U,31770,31771,31772,31773,31774,
-31776,31777,31778,31779,31780,31781,31784,31785,31787,31788,31789,31790,31791,
-31792,31793,31794,31795,31796,31797,31798,31799,31801,31802,31803,31804,31805,
-31806,31810,31811,31812,31813,31814,31815,31816,31817,31818,31819,31820,31822,
-31823,31824,31825,31826,31827,31828,31829,31830,31831,31832,31833,31834,31835,
-31836,31837,31838,31839,31840,31841,31842,31843,31844,31845,31846,31847,31848,
-31849,31850,31851,31852,31853,31854,31855,31856,31857,31858,31861,31862,31863,
-31864,31865,31866,31870,31871,31872,31873,31874,31875,31876,31877,31878,31879,
-U,31880,31882,31883,31884,31885,31886,31887,31888,31891,31892,31894,31897,
-31898,31899,31904,31905,31907,31910,31911,31912,31913,31915,31916,31917,31919,
-31920,31924,31925,31926,31927,31928,31930,31931,31935,31936,31938,31939,31940,
-31942,31945,31947,31950,31951,31952,31953,31954,31955,31956,31960,31962,31963,
-31965,31966,31969,31970,31971,31972,31973,31974,31975,31977,31978,31979,31980,
-31981,31982,31984,31985,31986,31987,31988,31989,31990,31991,31993,31994,31996,
-31997,31998,31999,32000,32001,32002,32003,32004,32005,32006,32007,32008,32009,
-32011,32012,32013,32014,32015,32016,U,32017,32018,32019,32020,32021,32022,
-32023,32024,32025,32026,32027,32028,32029,32030,32031,32033,32035,32036,32037,
-32038,32040,32041,32042,32044,32045,32046,32048,32049,32050,32051,32052,32053,
-32054,32055,32056,32057,32058,32059,32060,32061,32062,32063,32064,32065,32066,
-32067,32068,32069,32070,32071,32072,32073,32074,32075,32076,32077,32078,32079,
-32080,32081,32082,32083,32084,32085,32086,32087,32088,32089,32090,32091,32092,
-32093,32094,32095,32096,32097,32098,32099,32100,32101,32102,32103,32104,32105,
-32106,32107,32108,32109,32111,32112,32113,32114,32115,32116,32117,32118,U,
-32120,32121,32122,32123,32124,32125,32126,32127,32128,32129,32130,32131,32132,
-32133,32134,32135,32136,32137,32138,32139,32140,32141,32142,32143,32144,32145,
-32146,32147,32148,32149,32150,32151,32152,32153,32154,32155,32156,32157,32158,
-32159,32160,32161,32162,32163,32164,32165,32167,32168,32169,32170,32171,32172,
-32173,32175,32176,32177,32178,32179,32180,32181,32182,32183,32184,32185,32186,
-32187,32188,32189,32190,32191,32192,32193,32194,32195,32196,32197,32198,32199,
-32200,32201,32202,32203,32204,32205,32206,32207,32208,32209,32210,32211,32212,
-32213,32214,32215,32216,32217,U,32218,32219,32220,32221,32222,32223,32224,
-32225,32226,32227,32228,32229,32230,32231,32232,32233,32234,32235,32236,32237,
-32238,32239,32240,32241,32242,32243,32244,32245,32246,32247,32248,32249,32250,
-32251,32252,32253,32254,32255,32256,32257,32258,32259,32260,32261,32262,32263,
-32264,32265,32266,32267,32268,32269,32270,32271,32272,32273,32274,32275,32276,
-32277,32278,32279,32280,32281,32282,32283,32284,32285,32286,32287,32288,32289,
-32290,32291,32292,32293,32294,32295,32296,32297,32298,32299,32300,32301,32302,
-32303,32304,32305,32306,32307,32308,32309,32310,32311,32312,32313,U,32314,
-32316,32317,32318,32319,32320,32322,32323,32324,32325,32326,32328,32329,32330,
-32331,32332,32333,32334,32335,32336,32337,32338,32339,32340,32341,32342,32343,
-32344,32345,32346,32347,32348,32349,32350,32351,32352,32353,32354,32355,32356,
-32357,32358,32359,32360,32361,32362,32363,32364,32365,32366,32367,32368,32369,
-32370,32371,32372,32373,32374,32375,32376,32377,32378,32379,32380,32381,32382,
-32383,32384,32385,32387,32388,32389,32390,32391,32392,32393,32394,32395,32396,
-32397,32398,32399,32400,32401,32402,32403,32404,32405,32406,32407,32408,32409,
-32410,32412,32413,32414,U,32430,32436,32443,32444,32470,32484,32492,32505,
-32522,32528,32542,32567,32569,32571,32572,32573,32574,32575,32576,32577,32579,
-32582,32583,32584,32585,32586,32587,32588,32589,32590,32591,32594,32595,32598,
-32601,32603,32604,32605,32606,32608,32611,32612,32613,32614,32615,32619,32620,
-32621,32623,32624,32627,32629,32630,32631,32632,32634,32635,32636,32637,32639,
-32640,32642,32643,32644,32645,32646,32647,32648,32649,32651,32653,32655,32656,
-32657,32658,32659,32661,32662,32663,32664,32665,32667,32668,32672,32674,32675,
-32677,32678,32680,32681,32682,32683,32684,32685,32686,32689,U,32691,32692,
-32693,32694,32695,32698,32699,32702,32704,32706,32707,32708,32710,32711,32712,
-32713,32715,32717,32719,32720,32721,32722,32723,32726,32727,32729,32730,32731,
-32732,32733,32734,32738,32739,32740,32743,32744,32746,32747,32748,32749,32751,
-32754,32756,32757,32758,32759,32760,32761,32762,32765,32766,32767,32770,32775,
-32776,32777,32778,32782,32783,32785,32787,32794,32795,32797,32798,32799,32801,
-32803,32804,32811,32812,32813,32814,32815,32816,32818,32820,32825,32826,32828,
-32830,32832,32833,32836,32837,32839,32840,32841,32846,32847,32848,32849,32851,
-32853,32854,32855,U,32857,32859,32860,32861,32862,32863,32864,32865,32866,
-32867,32868,32869,32870,32871,32872,32875,32876,32877,32878,32879,32880,32882,
-32883,32884,32885,32886,32887,32888,32889,32890,32891,32892,32893,32894,32897,
-32898,32901,32904,32906,32909,32910,32911,32912,32913,32914,32916,32917,32919,
-32921,32926,32931,32934,32935,32936,32940,32944,32947,32949,32950,32952,32953,
-32955,32965,32967,32968,32969,32970,32971,32975,32976,32977,32978,32979,32980,
-32981,32984,32991,32992,32994,32995,32998,33006,33013,33015,33017,33019,33022,
-33023,33024,33025,33027,33028,33029,33031,33032,33035,U,33036,33045,33047,
-33049,33051,33052,33053,33055,33056,33057,33058,33059,33060,33061,33062,33063,
-33064,33065,33066,33067,33069,33070,33072,33075,33076,33077,33079,33081,33082,
-33083,33084,33085,33087,33088,33089,33090,33091,33092,33093,33095,33097,33101,
-33102,33103,33106,33110,33111,33112,33115,33116,33117,33118,33119,33121,33122,
-33123,33124,33126,33128,33130,33131,33132,33135,33138,33139,33141,33142,33143,
-33144,33153,33155,33156,33157,33158,33159,33161,33163,33164,33165,33166,33168,
-33170,33171,33172,33173,33174,33175,33177,33178,33182,33183,33184,33185,33186,
-33188,33189,U,33191,33193,33195,33196,33197,33198,33199,33200,33201,33202,
-33204,33205,33206,33207,33208,33209,33212,33213,33214,33215,33220,33221,33223,
-33224,33225,33227,33229,33230,33231,33232,33233,33234,33235,33236,33237,33238,
-33239,33240,33241,33242,33243,33244,33245,33246,33247,33248,33249,33250,33252,
-33253,33254,33256,33257,33259,33262,33263,33264,33265,33266,33269,33270,33271,
-33272,33273,33274,33277,33279,33283,33287,33288,33289,33290,33291,33294,33295,
-33297,33299,33301,33302,33303,33304,33305,33306,33309,33312,33316,33317,33318,
-33319,33321,33326,33330,33338,33340,33341,33343,U,33344,33345,33346,33347,
-33349,33350,33352,33354,33356,33357,33358,33360,33361,33362,33363,33364,33365,
-33366,33367,33369,33371,33372,33373,33374,33376,33377,33378,33379,33380,33381,
-33382,33383,33385,33386,33387,33388,33389,33393,33397,33398,33399,33400,33403,
-33404,33408,33409,33411,33413,33414,33415,33417,33420,33424,33427,33428,33429,
-33430,33434,33435,33438,33440,33442,33443,33447,33458,33461,33462,33466,33467,
-33468,33471,33472,33474,33475,33477,33478,33481,33488,33494,33497,33498,33501,
-33506,33511,33512,33513,33514,33516,33517,33518,33520,33522,33523,33525,33526,
-33528,U,33530,33532,33533,33534,33535,33536,33546,33547,33549,33552,33554,
-33555,33558,33560,33561,33565,33566,33567,33568,33569,33570,33571,33572,33573,
-33574,33577,33578,33582,33584,33586,33591,33595,33597,33598,33599,33601,33602,
-33604,33605,33608,33610,33611,33612,33613,33614,33619,33621,33622,33623,33624,
-33625,33629,33634,33648,33649,33650,33651,33652,33653,33654,33657,33658,33662,
-33663,33664,33665,33666,33667,33668,33671,33672,33674,33675,33676,33677,33679,
-33680,33681,33684,33685,33686,33687,33689,33690,33693,33695,33697,33698,33699,
-33700,33701,33702,33703,33708,33709,33710,U,33711,33717,33723,33726,33727,
-33730,33731,33732,33734,33736,33737,33739,33741,33742,33744,33745,33746,33747,
-33749,33751,33753,33754,33755,33758,33762,33763,33764,33766,33767,33768,33771,
-33772,33773,33774,33775,33779,33780,33781,33782,33783,33786,33787,33788,33790,
-33791,33792,33794,33797,33799,33800,33801,33802,33808,33810,33811,33812,33813,
-33814,33815,33817,33818,33819,33822,33823,33824,33825,33826,33827,33833,33834,
-33835,33836,33837,33838,33839,33840,33842,33843,33844,33845,33846,33847,33849,
-33850,33851,33854,33855,33856,33857,33858,33859,33860,33861,33863,33864,33865,
-U,33866,33867,33868,33869,33870,33871,33872,33874,33875,33876,33877,33878,
-33880,33885,33886,33887,33888,33890,33892,33893,33894,33895,33896,33898,33902,
-33903,33904,33906,33908,33911,33913,33915,33916,33917,33918,33919,33920,33921,
-33923,33924,33925,33926,33930,33933,33935,33936,33937,33938,33939,33940,33941,
-33942,33944,33946,33947,33949,33950,33951,33952,33954,33955,33956,33957,33958,
-33959,33960,33961,33962,33963,33964,33965,33966,33968,33969,33971,33973,33974,
-33975,33979,33980,33982,33984,33986,33987,33989,33990,33991,33992,33995,33996,
-33998,33999,34002,34004,34005,34007,U,34008,34009,34010,34011,34012,34014,
-34017,34018,34020,34023,34024,34025,34026,34027,34029,34030,34031,34033,34034,
-34035,34036,34037,34038,34039,34040,34041,34042,34043,34045,34046,34048,34049,
-34050,34051,34052,34053,34054,34055,34056,34057,34058,34059,34061,34062,34063,
-34064,34066,34068,34069,34070,34072,34073,34075,34076,34077,34078,34080,34082,
-34083,34084,34085,34086,34087,34088,34089,34090,34093,34094,34095,34096,34097,
-34098,34099,34100,34101,34102,34110,34111,34112,34113,34114,34116,34117,34118,
-34119,34123,34124,34125,34126,34127,34128,34129,34130,34131,34132,34133,U,
-34135,34136,34138,34139,34140,34141,34143,34144,34145,34146,34147,34149,34150,
-34151,34153,34154,34155,34156,34157,34158,34159,34160,34161,34163,34165,34166,
-34167,34168,34172,34173,34175,34176,34177,34178,34179,34182,34184,34185,34186,
-34187,34188,34189,34190,34192,34193,34194,34195,34196,34197,34198,34199,34200,
-34201,34202,34205,34206,34207,34208,34209,34210,34211,34213,34214,34215,34217,
-34219,34220,34221,34225,34226,34227,34228,34229,34230,34232,34234,34235,34236,
-34237,34238,34239,34240,34242,34243,34244,34245,34246,34247,34248,34250,34251,
-34252,34253,34254,34257,34258,U,34260,34262,34263,34264,34265,34266,34267,
-34269,34270,34271,34272,34273,34274,34275,34277,34278,34279,34280,34282,34283,
-34284,34285,34286,34287,34288,34289,34290,34291,34292,34293,34294,34295,34296,
-34297,34298,34300,34301,34302,34304,34305,34306,34307,34308,34310,34311,34312,
-34313,34314,34315,34316,34317,34318,34319,34320,34322,34323,34324,34325,34327,
-34328,34329,34330,34331,34332,34333,34334,34335,34336,34337,34338,34339,34340,
-34341,34342,34344,34346,34347,34348,34349,34350,34351,34352,34353,34354,34355,
-34356,34357,34358,34359,34361,34362,34363,34365,34366,34367,34368,U,34369,
-34370,34371,34372,34373,34374,34375,34376,34377,34378,34379,34380,34386,34387,
-34389,34390,34391,34392,34393,34395,34396,34397,34399,34400,34401,34403,34404,
-34405,34406,34407,34408,34409,34410,34413,34415,34416,34418,34419,34420,34421,
-34422,34423,34424,34435,34436,34437,34438,34439,34440,34441,34446,34447,34448,
-34449,34450,34452,34454,34455,34456,34457,34458,34459,34462,34463,34464,34465,
-34466,34469,34470,34475,34477,34478,34482,34483,34487,34488,34489,34491,34492,
-34493,34494,34495,34497,34498,34499,34501,34504,34508,34509,34514,34515,34517,
-34518,34519,34522,34524,U,34525,34528,34529,34530,34531,34533,34534,34535,
-34536,34538,34539,34540,34543,34549,34550,34551,34554,34555,34556,34557,34559,
-34561,34564,34565,34566,34571,34572,34574,34575,34576,34577,34580,34582,34585,
-34587,34589,34591,34592,34596,34598,34599,34600,34602,34603,34604,34605,34607,
-34608,34610,34611,34613,34614,34616,34617,34618,34620,34621,34624,34625,34626,
-34627,34628,34629,34630,34634,34635,34637,34639,34640,34641,34642,34644,34645,
-34646,34648,34650,34651,34652,34653,34654,34655,34657,34658,34662,34663,34664,
-34665,34666,34667,34668,34669,34671,34673,34674,34675,34677,U,34679,34680,
-34681,34682,34687,34688,34689,34692,34694,34695,34697,34698,34700,34702,34703,
-34704,34705,34706,34708,34709,34710,34712,34713,34714,34715,34716,34717,34718,
-34720,34721,34722,34723,34724,34725,34726,34727,34729,34730,34734,34736,34737,
-34738,34740,34742,34743,34744,34745,34747,34748,34750,34751,34753,34754,34755,
-34756,34757,34759,34760,34761,34764,34765,34766,34767,34768,34772,34773,34774,
-34775,34776,34777,34778,34780,34781,34782,34783,34785,34786,34787,34788,34790,
-34791,34792,34793,34795,34796,34797,34799,34800,34801,34802,34803,34804,34805,
-34806,34807,34808,U,34810,34811,34812,34813,34815,34816,34817,34818,34820,
-34821,34822,34823,34824,34825,34827,34828,34829,34830,34831,34832,34833,34834,
-34836,34839,34840,34841,34842,34844,34845,34846,34847,34848,34851,34852,34853,
-34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34867,
-34868,34869,34870,34871,34872,34874,34875,34877,34878,34879,34881,34882,34883,
-34886,34887,34888,34889,34890,34891,34894,34895,34896,34897,34898,34899,34901,
-34902,34904,34906,34907,34908,34909,34910,34911,34912,34918,34919,34922,34925,
-34927,34929,34931,34932,34933,34934,34936,34937,34938,U,34939,34940,34944,
-34947,34950,34951,34953,34954,34956,34958,34959,34960,34961,34963,34964,34965,
-34967,34968,34969,34970,34971,34973,34974,34975,34976,34977,34979,34981,34982,
-34983,34984,34985,34986,34988,34990,34991,34992,34994,34995,34996,34997,34998,
-35000,35001,35002,35003,35005,35006,35007,35008,35011,35012,35015,35016,35018,
-35019,35020,35021,35023,35024,35025,35027,35030,35031,35034,35035,35036,35037,
-35038,35040,35041,35046,35047,35049,35050,35051,35052,35053,35054,35055,35058,
-35061,35062,35063,35066,35067,35069,35071,35072,35073,35075,35076,35077,35078,
-35079,35080,U,35081,35083,35084,35085,35086,35087,35089,35092,35093,35094,
-35095,35096,35100,35101,35102,35103,35104,35106,35107,35108,35110,35111,35112,
-35113,35116,35117,35118,35119,35121,35122,35123,35125,35127,35128,35129,35130,
-35131,35132,35133,35134,35135,35136,35138,35139,35141,35142,35143,35144,35145,
-35146,35147,35148,35149,35150,35151,35152,35153,35154,35155,35156,35157,35158,
-35159,35160,35161,35162,35163,35164,35165,35168,35169,35170,35171,35172,35173,
-35175,35176,35177,35178,35179,35180,35181,35182,35183,35184,35185,35186,35187,
-35188,35189,35190,35191,35192,35193,35194,35196,U,35197,35198,35200,35202,
-35204,35205,35207,35208,35209,35210,35211,35212,35213,35214,35215,35216,35217,
-35218,35219,35220,35221,35222,35223,35224,35225,35226,35227,35228,35229,35230,
-35231,35232,35233,35234,35235,35236,35237,35238,35239,35240,35241,35242,35243,
-35244,35245,35246,35247,35248,35249,35250,35251,35252,35253,35254,35255,35256,
-35257,35258,35259,35260,35261,35262,35263,35264,35267,35277,35283,35284,35285,
-35287,35288,35289,35291,35293,35295,35296,35297,35298,35300,35303,35304,35305,
-35306,35308,35309,35310,35312,35313,35314,35316,35317,35318,35319,35320,35321,
-35322,U,35323,35324,35325,35326,35327,35329,35330,35331,35332,35333,35334,
-35336,35337,35338,35339,35340,35341,35342,35343,35344,35345,35346,35347,35348,
-35349,35350,35351,35352,35353,35354,35355,35356,35357,35358,35359,35360,35361,
-35362,35363,35364,35365,35366,35367,35368,35369,35370,35371,35372,35373,35374,
-35375,35376,35377,35378,35379,35380,35381,35382,35383,35384,35385,35386,35387,
-35388,35389,35391,35392,35393,35394,35395,35396,35397,35398,35399,35401,35402,
-35403,35404,35405,35406,35407,35408,35409,35410,35411,35412,35413,35414,35415,
-35416,35417,35418,35419,35420,35421,35422,U,35423,35424,35425,35426,35427,
-35428,35429,35430,35431,35432,35433,35434,35435,35436,35437,35438,35439,35440,
-35441,35442,35443,35444,35445,35446,35447,35448,35450,35451,35452,35453,35454,
-35455,35456,35457,35458,35459,35460,35461,35462,35463,35464,35467,35468,35469,
-35470,35471,35472,35473,35474,35476,35477,35478,35479,35480,35481,35482,35483,
-35484,35485,35486,35487,35488,35489,35490,35491,35492,35493,35494,35495,35496,
-35497,35498,35499,35500,35501,35502,35503,35504,35505,35506,35507,35508,35509,
-35510,35511,35512,35513,35514,35515,35516,35517,35518,35519,35520,35521,35522,
-U,35523,35524,35525,35526,35527,35528,35529,35530,35531,35532,35533,35534,
-35535,35536,35537,35538,35539,35540,35541,35542,35543,35544,35545,35546,35547,
-35548,35549,35550,35551,35552,35553,35554,35555,35556,35557,35558,35559,35560,
-35561,35562,35563,35564,35565,35566,35567,35568,35569,35570,35571,35572,35573,
-35574,35575,35576,35577,35578,35579,35580,35581,35582,35583,35584,35585,35586,
-35587,35588,35589,35590,35592,35593,35594,35595,35596,35597,35598,35599,35600,
-35601,35602,35603,35604,35605,35606,35607,35608,35609,35610,35611,35612,35613,
-35614,35615,35616,35617,35618,35619,U,35620,35621,35623,35624,35625,35626,
-35627,35628,35629,35630,35631,35632,35633,35634,35635,35636,35637,35638,35639,
-35640,35641,35642,35643,35644,35645,35646,35647,35648,35649,35650,35651,35652,
-35653,35654,35655,35656,35657,35658,35659,35660,35661,35662,35663,35664,35665,
-35666,35667,35668,35669,35670,35671,35672,35673,35674,35675,35676,35677,35678,
-35679,35680,35681,35682,35683,35684,35685,35687,35688,35689,35690,35691,35693,
-35694,35695,35696,35697,35698,35699,35700,35701,35702,35703,35704,35705,35706,
-35707,35708,35709,35710,35711,35712,35713,35714,35715,35716,35717,35718,U,
-35719,35720,35721,35722,35723,35724,35725,35726,35727,35728,35729,35730,35731,
-35732,35733,35734,35735,35736,35737,35738,35739,35740,35741,35742,35743,35756,
-35761,35771,35783,35792,35818,35849,35870,35896,35897,35898,35899,35900,35901,
-35902,35903,35904,35906,35907,35908,35909,35912,35914,35915,35917,35918,35919,
-35920,35921,35922,35923,35924,35926,35927,35928,35929,35931,35932,35933,35934,
-35935,35936,35939,35940,35941,35942,35943,35944,35945,35948,35949,35950,35951,
-35952,35953,35954,35956,35957,35958,35959,35963,35964,35965,35966,35967,35968,
-35969,35971,35972,35974,35975,U,35976,35979,35981,35982,35983,35984,35985,
-35986,35987,35989,35990,35991,35993,35994,35995,35996,35997,35998,35999,36000,
-36001,36002,36003,36004,36005,36006,36007,36008,36009,36010,36011,36012,36013,
-36014,36015,36016,36017,36018,36019,36020,36021,36022,36023,36024,36025,36026,
-36027,36028,36029,36030,36031,36032,36033,36034,36035,36036,36037,36038,36039,
-36040,36041,36042,36043,36044,36045,36046,36047,36048,36049,36050,36051,36052,
-36053,36054,36055,36056,36057,36058,36059,36060,36061,36062,36063,36064,36065,
-36066,36067,36068,36069,36070,36071,36072,36073,36074,36075,36076,U,36077,
-36078,36079,36080,36081,36082,36083,36084,36085,36086,36087,36088,36089,36090,
-36091,36092,36093,36094,36095,36096,36097,36098,36099,36100,36101,36102,36103,
-36104,36105,36106,36107,36108,36109,36110,36111,36112,36113,36114,36115,36116,
-36117,36118,36119,36120,36121,36122,36123,36124,36128,36177,36178,36183,36191,
-36197,36200,36201,36202,36204,36206,36207,36209,36210,36216,36217,36218,36219,
-36220,36221,36222,36223,36224,36226,36227,36230,36231,36232,36233,36236,36237,
-36238,36239,36240,36242,36243,36245,36246,36247,36248,36249,36250,36251,36252,
-36253,36254,36256,36257,U,36258,36260,36261,36262,36263,36264,36265,36266,
-36267,36268,36269,36270,36271,36272,36274,36278,36279,36281,36283,36285,36288,
-36289,36290,36293,36295,36296,36297,36298,36301,36304,36306,36307,36308,36309,
-36312,36313,36316,36320,36321,36322,36325,36326,36327,36329,36333,36334,36336,
-36337,36338,36340,36342,36348,36350,36351,36352,36353,36354,36355,36356,36358,
-36359,36360,36363,36365,36366,36368,36369,36370,36371,36373,36374,36375,36376,
-36377,36378,36379,36380,36384,36385,36388,36389,36390,36391,36392,36395,36397,
-36400,36402,36403,36404,36406,36407,36408,36411,36412,36414,U,36415,36419,
-36421,36422,36428,36429,36430,36431,36432,36435,36436,36437,36438,36439,36440,
-36442,36443,36444,36445,36446,36447,36448,36449,36450,36451,36452,36453,36455,
-36456,36458,36459,36462,36465,36467,36469,36471,36472,36473,36474,36475,36477,
-36478,36480,36482,36483,36484,36486,36488,36489,36490,36491,36492,36493,36494,
-36497,36498,36499,36501,36502,36503,36504,36505,36506,36507,36509,36511,36512,
-36513,36514,36515,36516,36517,36518,36519,36520,36521,36522,36525,36526,36528,
-36529,36531,36532,36533,36534,36535,36536,36537,36539,36540,36541,36542,36543,
-36544,36545,36546,U,36547,36548,36549,36550,36551,36552,36553,36554,36555,
-36556,36557,36559,36560,36561,36562,36563,36564,36565,36566,36567,36568,36569,
-36570,36571,36572,36573,36574,36575,36576,36577,36578,36579,36580,36581,36582,
-36583,36584,36585,36586,36587,36588,36589,36590,36591,36592,36593,36594,36595,
-36596,36597,36598,36599,36600,36601,36602,36603,36604,36605,36606,36607,36608,
-36609,36610,36611,36612,36613,36614,36615,36616,36617,36618,36619,36620,36621,
-36622,36623,36624,36625,36626,36627,36628,36629,36630,36631,36632,36633,36634,
-36635,36636,36637,36638,36639,36640,36641,36642,36643,U,36644,36645,36646,
-36647,36648,36649,36650,36651,36652,36653,36654,36655,36656,36657,36658,36659,
-36660,36661,36662,36663,36664,36665,36666,36667,36668,36669,36670,36671,36672,
-36673,36674,36675,36676,36677,36678,36679,36680,36681,36682,36683,36684,36685,
-36686,36687,36688,36689,36690,36691,36692,36693,36694,36695,36696,36697,36698,
-36699,36700,36701,36702,36703,36704,36705,36706,36707,36708,36709,36714,36736,
-36748,36754,36765,36768,36769,36770,36772,36773,36774,36775,36778,36780,36781,
-36782,36783,36786,36787,36788,36789,36791,36792,36794,36795,36796,36799,36800,
-36803,36806,U,36809,36810,36811,36812,36813,36815,36818,36822,36823,36826,
-36832,36833,36835,36839,36844,36847,36849,36850,36852,36853,36854,36858,36859,
-36860,36862,36863,36871,36872,36876,36878,36883,36885,36888,36889,36892,36899,
-36900,36901,36903,36904,36905,36906,36907,36908,36912,36913,36914,36915,36916,
-36919,36921,36922,36925,36927,36928,36931,36933,36934,36936,36937,36938,36939,
-36940,36942,36948,36949,36950,36953,36954,36956,36957,36958,36959,36960,36961,
-36964,36966,36967,36969,36970,36971,36972,36975,36976,36977,36978,36979,36982,
-36983,36984,36985,36986,36987,36988,36990,36993,U,36996,36997,36998,36999,
-37001,37002,37004,37005,37006,37007,37008,37010,37012,37014,37016,37018,37020,
-37022,37023,37024,37028,37029,37031,37032,37033,37035,37037,37042,37047,37052,
-37053,37055,37056,37058,37059,37062,37064,37065,37067,37068,37069,37074,37076,
-37077,37078,37080,37081,37082,37086,37087,37088,37091,37092,37093,37097,37098,
-37100,37102,37104,37105,37106,37107,37109,37110,37111,37113,37114,37115,37116,
-37119,37120,37121,37123,37125,37126,37127,37128,37129,37130,37131,37132,37133,
-37134,37135,37136,37137,37138,37139,37140,37141,37142,37143,37144,37146,37147,
-37148,U,37149,37151,37152,37153,37156,37157,37158,37159,37160,37161,37162,
-37163,37164,37165,37166,37168,37170,37171,37172,37173,37174,37175,37176,37178,
-37179,37180,37181,37182,37183,37184,37185,37186,37188,37189,37191,37192,37201,
-37203,37204,37205,37206,37208,37209,37211,37212,37215,37216,37222,37223,37224,
-37227,37229,37235,37242,37243,37244,37248,37249,37250,37251,37252,37254,37256,
-37258,37262,37263,37267,37268,37269,37270,37271,37272,37273,37276,37277,37278,
-37279,37280,37281,37284,37285,37286,37287,37288,37289,37291,37292,37296,37297,
-37298,37299,37302,37303,37304,37305,37307,U,37308,37309,37310,37311,37312,
-37313,37314,37315,37316,37317,37318,37320,37323,37328,37330,37331,37332,37333,
-37334,37335,37336,37337,37338,37339,37341,37342,37343,37344,37345,37346,37347,
-37348,37349,37350,37351,37352,37353,37354,37355,37356,37357,37358,37359,37360,
-37361,37362,37363,37364,37365,37366,37367,37368,37369,37370,37371,37372,37373,
-37374,37375,37376,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,
-37387,37388,37389,37390,37391,37392,37393,37394,37395,37396,37397,37398,37399,
-37400,37401,37402,37403,37404,37405,37406,37407,37408,37409,37410,37411,37412,
-U,37413,37414,37415,37416,37417,37418,37419,37420,37421,37422,37423,37424,
-37425,37426,37427,37428,37429,37430,37431,37432,37433,37434,37435,37436,37437,
-37438,37439,37440,37441,37442,37443,37444,37445,37446,37447,37448,37449,37450,
-37451,37452,37453,37454,37455,37456,37457,37458,37459,37460,37461,37462,37463,
-37464,37465,37466,37467,37468,37469,37470,37471,37472,37473,37474,37475,37476,
-37477,37478,37479,37480,37481,37482,37483,37484,37485,37486,37487,37488,37489,
-37490,37491,37493,37494,37495,37496,37497,37498,37499,37500,37501,37502,37503,
-37504,37505,37506,37507,37508,37509,U,37510,37511,37512,37513,37514,37515,
-37516,37517,37519,37520,37521,37522,37523,37524,37525,37526,37527,37528,37529,
-37530,37531,37532,37533,37534,37535,37536,37537,37538,37539,37540,37541,37542,
-37543,37544,37545,37546,37547,37548,37549,37551,37552,37553,37554,37555,37556,
-37557,37558,37559,37560,37561,37562,37563,37564,37565,37566,37567,37568,37569,
-37570,37571,37572,37573,37574,37575,37577,37578,37579,37580,37581,37582,37583,
-37584,37585,37586,37587,37588,37589,37590,37591,37592,37593,37594,37595,37596,
-37597,37598,37599,37600,37601,37602,37603,37604,37605,37606,37607,37608,U,
-37609,37610,37611,37612,37613,37614,37615,37616,37617,37618,37619,37620,37621,
-37622,37623,37624,37625,37626,37627,37628,37629,37630,37631,37632,37633,37634,
-37635,37636,37637,37638,37639,37640,37641,37642,37643,37644,37645,37646,37647,
-37648,37649,37650,37651,37652,37653,37654,37655,37656,37657,37658,37659,37660,
-37661,37662,37663,37664,37665,37666,37667,37668,37669,37670,37671,37672,37673,
-37674,37675,37676,37677,37678,37679,37680,37681,37682,37683,37684,37685,37686,
-37687,37688,37689,37690,37691,37692,37693,37695,37696,37697,37698,37699,37700,
-37701,37702,37703,37704,37705,U,37706,37707,37708,37709,37710,37711,37712,
-37713,37714,37715,37716,37717,37718,37719,37720,37721,37722,37723,37724,37725,
-37726,37727,37728,37729,37730,37731,37732,37733,37734,37735,37736,37737,37739,
-37740,37741,37742,37743,37744,37745,37746,37747,37748,37749,37750,37751,37752,
-37753,37754,37755,37756,37757,37758,37759,37760,37761,37762,37763,37764,37765,
-37766,37767,37768,37769,37770,37771,37772,37773,37774,37776,37777,37778,37779,
-37780,37781,37782,37783,37784,37785,37786,37787,37788,37789,37790,37791,37792,
-37793,37794,37795,37796,37797,37798,37799,37800,37801,37802,37803,U,37804,
-37805,37806,37807,37808,37809,37810,37811,37812,37813,37814,37815,37816,37817,
-37818,37819,37820,37821,37822,37823,37824,37825,37826,37827,37828,37829,37830,
-37831,37832,37833,37835,37836,37837,37838,37839,37840,37841,37842,37843,37844,
-37845,37847,37848,37849,37850,37851,37852,37853,37854,37855,37856,37857,37858,
-37859,37860,37861,37862,37863,37864,37865,37866,37867,37868,37869,37870,37871,
-37872,37873,37874,37875,37876,37877,37878,37879,37880,37881,37882,37883,37884,
-37885,37886,37887,37888,37889,37890,37891,37892,37893,37894,37895,37896,37897,
-37898,37899,37900,37901,U,37902,37903,37904,37905,37906,37907,37908,37909,
-37910,37911,37912,37913,37914,37915,37916,37917,37918,37919,37920,37921,37922,
-37923,37924,37925,37926,37927,37928,37929,37930,37931,37932,37933,37934,37935,
-37936,37937,37938,37939,37940,37941,37942,37943,37944,37945,37946,37947,37948,
-37949,37951,37952,37953,37954,37955,37956,37957,37958,37959,37960,37961,37962,
-37963,37964,37965,37966,37967,37968,37969,37970,37971,37972,37973,37974,37975,
-37976,37977,37978,37979,37980,37981,37982,37983,37984,37985,37986,37987,37988,
-37989,37990,37991,37992,37993,37994,37996,37997,37998,37999,U,38000,38001,
-38002,38003,38004,38005,38006,38007,38008,38009,38010,38011,38012,38013,38014,
-38015,38016,38017,38018,38019,38020,38033,38038,38040,38087,38095,38099,38100,
-38106,38118,38139,38172,38176,38183,38195,38205,38211,38216,38219,38229,38234,
-38240,38254,38260,38261,38263,38264,38265,38266,38267,38268,38269,38270,38272,
-38273,38274,38275,38276,38277,38278,38279,38280,38281,38282,38283,38284,38285,
-38286,38287,38288,38289,38290,38291,38292,38293,38294,38295,38296,38297,38298,
-38299,38300,38301,38302,38303,38304,38305,38306,38307,38308,38309,38310,38311,
-38312,38313,38314,U,38315,38316,38317,38318,38319,38320,38321,38322,38323,
-38324,38325,38326,38327,38328,38329,38330,38331,38332,38333,38334,38335,38336,
-38337,38338,38339,38340,38341,38342,38343,38344,38345,38346,38347,38348,38349,
-38350,38351,38352,38353,38354,38355,38356,38357,38358,38359,38360,38361,38362,
-38363,38364,38365,38366,38367,38368,38369,38370,38371,38372,38373,38374,38375,
-38380,38399,38407,38419,38424,38427,38430,38432,38435,38436,38437,38438,38439,
-38440,38441,38443,38444,38445,38447,38448,38455,38456,38457,38458,38462,38465,
-38467,38474,38478,38479,38481,38482,38483,38486,38487,U,38488,38489,38490,
-38492,38493,38494,38496,38499,38501,38502,38507,38509,38510,38511,38512,38513,
-38515,38520,38521,38522,38523,38524,38525,38526,38527,38528,38529,38530,38531,
-38532,38535,38537,38538,38540,38542,38545,38546,38547,38549,38550,38554,38555,
-38557,38558,38559,38560,38561,38562,38563,38564,38565,38566,38568,38569,38570,
-38571,38572,38573,38574,38575,38577,38578,38580,38581,38583,38584,38586,38587,
-38591,38594,38595,38600,38602,38603,38608,38609,38611,38612,38614,38615,38616,
-38617,38618,38619,38620,38621,38622,38623,38625,38626,38627,38628,38629,38630,
-38631,38635,U,38636,38637,38638,38640,38641,38642,38644,38645,38648,38650,
-38651,38652,38653,38655,38658,38659,38661,38666,38667,38668,38672,38673,38674,
-38676,38677,38679,38680,38681,38682,38683,38685,38687,38688,38689,38690,38691,
-38692,38693,38694,38695,38696,38697,38699,38700,38702,38703,38705,38707,38708,
-38709,38710,38711,38714,38715,38716,38717,38719,38720,38721,38722,38723,38724,
-38725,38726,38727,38728,38729,38730,38731,38732,38733,38734,38735,38736,38737,
-38740,38741,38743,38744,38746,38748,38749,38751,38755,38756,38758,38759,38760,
-38762,38763,38764,38765,38766,38767,38768,38769,U,38770,38773,38775,38776,
-38777,38778,38779,38781,38782,38783,38784,38785,38786,38787,38788,38790,38791,
-38792,38793,38794,38796,38798,38799,38800,38803,38805,38806,38807,38809,38810,
-38811,38812,38813,38814,38815,38817,38818,38820,38821,38822,38823,38824,38825,
-38826,38828,38830,38832,38833,38835,38837,38838,38839,38840,38841,38842,38843,
-38844,38845,38846,38847,38848,38849,38850,38851,38852,38853,38854,38855,38856,
-38857,38858,38859,38860,38861,38862,38863,38864,38865,38866,38867,38868,38869,
-38870,38871,38872,38873,38874,38875,38876,38877,38878,38879,38880,38881,38882,
-38883,U,38884,38885,38888,38894,38895,38896,38897,38898,38900,38903,38904,
-38905,38906,38907,38908,38909,38910,38911,38912,38913,38914,38915,38916,38917,
-38918,38919,38920,38921,38922,38923,38924,38925,38926,38927,38928,38929,38930,
-38931,38932,38933,38934,38935,38936,38937,38938,38939,38940,38941,38942,38943,
-38944,38945,38946,38947,38948,38949,38950,38951,38952,38953,38954,38955,38956,
-38957,38958,38959,38960,38961,38962,38963,38964,38965,38966,38967,38968,38969,
-38970,38971,38972,38973,38974,38975,38976,38977,38978,38979,38980,38981,38982,
-38983,38984,38985,38986,38987,38988,38989,U,38990,38991,38992,38993,38994,
-38995,38996,38997,38998,38999,39000,39001,39002,39003,39004,39005,39006,39007,
-39008,39009,39010,39011,39012,39013,39014,39015,39016,39017,39018,39019,39020,
-39021,39022,39023,39024,39025,39026,39027,39028,39051,39054,39058,39061,39065,
-39075,39080,39081,39082,39083,39084,39085,39086,39087,39088,39089,39090,39091,
-39092,39093,39094,39095,39096,39097,39098,39099,39100,39101,39102,39103,39104,
-39105,39106,39107,39108,39109,39110,39111,39112,39113,39114,39115,39116,39117,
-39119,39120,39124,39126,39127,39131,39132,39133,39136,39137,39138,39139,39140,
-U,39141,39142,39145,39146,39147,39148,39149,39150,39151,39152,39153,39154,
-39155,39156,39157,39158,39159,39160,39161,39162,39163,39164,39165,39166,39167,
-39168,39169,39170,39171,39172,39173,39174,39175,39176,39177,39178,39179,39180,
-39182,39183,39185,39186,39187,39188,39189,39190,39191,39192,39193,39194,39195,
-39196,39197,39198,39199,39200,39201,39202,39203,39204,39205,39206,39207,39208,
-39209,39210,39211,39212,39213,39215,39216,39217,39218,39219,39220,39221,39222,
-39223,39224,39225,39226,39227,39228,39229,39230,39231,39232,39233,39234,39235,
-39236,39237,39238,39239,39240,39241,U,39242,39243,39244,39245,39246,39247,
-39248,39249,39250,39251,39254,39255,39256,39257,39258,39259,39260,39261,39262,
-39263,39264,39265,39266,39268,39270,39283,39288,39289,39291,39294,39298,39299,
-39305,39308,39310,39322,39323,39324,39325,39326,39327,39328,39329,39330,39331,
-39332,39334,39335,39337,39338,39339,39340,39341,39342,39343,39344,39345,39346,
-39347,39348,39349,39350,39351,39352,39353,39354,39355,39356,39357,39358,39359,
-39360,39361,39362,39363,39364,39365,39366,39367,39368,39369,39370,39371,39372,
-39373,39374,39375,39376,39377,39378,39379,39380,39381,39382,39383,39384,U,
-39385,39386,39387,39388,39389,39390,39391,39392,39393,39394,39395,39396,39397,
-39398,39399,39400,39401,39402,39403,39404,39405,39406,39407,39408,39409,39410,
-39411,39412,39413,39414,39415,39416,39417,39418,39419,39420,39421,39422,39423,
-39424,39425,39426,39427,39428,39429,39430,39431,39432,39433,39434,39435,39436,
-39437,39438,39439,39440,39441,39442,39443,39444,39445,39446,39447,39448,39449,
-39450,39451,39452,39453,39454,39455,39456,39457,39458,39459,39460,39461,39462,
-39463,39464,39465,39466,39467,39468,39469,39470,39471,39472,39473,39474,39475,
-39476,39477,39478,39479,39480,U,39481,39482,39483,39484,39485,39486,39487,
-39488,39489,39490,39491,39492,39493,39494,39495,39496,39497,39498,39499,39500,
-39501,39502,39503,39504,39505,39506,39507,39508,39509,39510,39511,39512,39513,
-39514,39515,39516,39517,39518,39519,39520,39521,39522,39523,39524,39525,39526,
-39527,39528,39529,39530,39531,39538,39555,39561,39565,39566,39572,39573,39577,
-39590,39593,39594,39595,39596,39597,39598,39599,39602,39603,39604,39605,39609,
-39611,39613,39614,39615,39619,39620,39622,39623,39624,39625,39626,39629,39630,
-39631,39632,39634,39636,39637,39638,39639,39641,39642,39643,39644,U,39645,
-39646,39648,39650,39651,39652,39653,39655,39656,39657,39658,39660,39662,39664,
-39665,39666,39667,39668,39669,39670,39671,39672,39674,39676,39677,39678,39679,
-39680,39681,39682,39684,39685,39686,39687,39689,39690,39691,39692,39693,39694,
-39696,39697,39698,39700,39701,39702,39703,39704,39705,39706,39707,39708,39709,
-39710,39712,39713,39714,39716,39717,39718,39719,39720,39721,39722,39723,39724,
-39725,39726,39728,39729,39731,39732,39733,39734,39735,39736,39737,39738,39741,
-39742,39743,39744,39750,39754,39755,39756,39758,39760,39762,39763,39765,39766,
-39767,39768,39769,39770,U,39771,39772,39773,39774,39775,39776,39777,39778,
-39779,39780,39781,39782,39783,39784,39785,39786,39787,39788,39789,39790,39791,
-39792,39793,39794,39795,39796,39797,39798,39799,39800,39801,39802,39803,39804,
-39805,39806,39807,39808,39809,39810,39811,39812,39813,39814,39815,39816,39817,
-39818,39819,39820,39821,39822,39823,39824,39825,39826,39827,39828,39829,39830,
-39831,39832,39833,39834,39835,39836,39837,39838,39839,39840,39841,39842,39843,
-39844,39845,39846,39847,39848,39849,39850,39851,39852,39853,39854,39855,39856,
-39857,39858,39859,39860,39861,39862,39863,39864,39865,39866,U,39867,39868,
-39869,39870,39871,39872,39873,39874,39875,39876,39877,39878,39879,39880,39881,
-39882,39883,39884,39885,39886,39887,39888,39889,39890,39891,39892,39893,39894,
-39895,39896,39897,39898,39899,39900,39901,39902,39903,39904,39905,39906,39907,
-39908,39909,39910,39911,39912,39913,39914,39915,39916,39917,39918,39919,39920,
-39921,39922,39923,39924,39925,39926,39927,39928,39929,39930,39931,39932,39933,
-39934,39935,39936,39937,39938,39939,39940,39941,39942,39943,39944,39945,39946,
-39947,39948,39949,39950,39951,39952,39953,39954,39955,39956,39957,39958,39959,
-39960,39961,39962,U,39963,39964,39965,39966,39967,39968,39969,39970,39971,
-39972,39973,39974,39975,39976,39977,39978,39979,39980,39981,39982,39983,39984,
-39985,39986,39987,39988,39989,39990,39991,39992,39993,39994,39995,39996,39997,
-39998,39999,40000,40001,40002,40003,40004,40005,40006,40007,40008,40009,40010,
-40011,40012,40013,40014,40015,40016,40017,40018,40019,40020,40021,40022,40023,
-40024,40025,40026,40027,40028,40029,40030,40031,40032,40033,40034,40035,40036,
-40037,40038,40039,40040,40041,40042,40043,40044,40045,40046,40047,40048,40049,
-40050,40051,40052,40053,40054,40055,40056,40057,40058,U,40059,40061,40062,
-40064,40067,40068,40073,40074,40076,40079,40083,40086,40087,40088,40089,40093,
-40106,40108,40111,40121,40126,40127,40128,40129,40130,40136,40137,40145,40146,
-40154,40155,40160,40161,40163,40164,40165,40166,40167,40168,40169,40170,40171,
-40172,40173,40174,40175,40176,40177,40178,40179,40180,40181,40182,40183,40184,
-40185,40186,40187,40188,40189,40190,40191,40192,40193,40194,40195,40196,40197,
-40198,40199,40200,40201,40202,40203,40204,40205,40206,40207,40208,40209,40210,
-40211,40212,40213,40214,40215,40216,40217,40218,40219,40220,40221,40222,40223,
-40224,40225,U,40226,40227,40228,40229,40230,40231,40232,40233,40234,40235,
-40236,40237,40238,40239,40240,40241,40242,40243,40244,40245,40246,40247,40248,
-40249,40250,40251,40252,40253,40254,40255,40256,40257,40258,40259,40260,40261,
-40262,40263,40264,40265,40266,40267,40268,40269,40270,40271,40272,40273,40274,
-40275,40276,40277,40278,40279,40280,40281,40282,40283,40284,40285,40286,40287,
-40288,40289,40290,40291,40292,40293,40294,40295,40296,40297,40298,40299,40300,
-40301,40302,40303,40304,40305,40306,40307,40308,40309,40310,40311,40312,40313,
-40314,40315,40316,40317,40318,40319,40320,40321,U,40322,40323,40324,40325,
-40326,40327,40328,40329,40330,40331,40332,40333,40334,40335,40336,40337,40338,
-40339,40340,40341,40342,40343,40344,40345,40346,40347,40348,40349,40350,40351,
-40352,40353,40354,40355,40356,40357,40358,40359,40360,40361,40362,40363,40364,
-40365,40366,40367,40368,40369,40370,40371,40372,40373,40374,40375,40376,40377,
-40378,40379,40380,40381,40382,40383,40384,40385,40386,40387,40388,40389,40390,
-40391,40392,40393,40394,40395,40396,40397,40398,40399,40400,40401,40402,40403,
-40404,40405,40406,40407,40408,40409,40410,40411,40412,40413,40414,40415,40416,
-40417,U,40418,40419,40420,40421,40422,40423,40424,40425,40426,40427,40428,
-40429,40430,40431,40432,40433,40434,40435,40436,40437,40438,40439,40440,40441,
-40442,40443,40444,40445,40446,40447,40448,40449,40450,40451,40452,40453,40454,
-40455,40456,40457,40458,40459,40460,40461,40462,40463,40464,40465,40466,40467,
-40468,40469,40470,40471,40472,40473,40474,40475,40476,40477,40478,40484,40487,
-40494,40496,40500,40507,40508,40512,40525,40528,40530,40531,40532,40534,40537,
-40541,40543,40544,40545,40546,40549,40558,40559,40562,40564,40565,40566,40567,
-40568,40569,40570,40571,40572,40573,40576,U,40577,40579,40580,40581,40582,
-40585,40586,40588,40589,40590,40591,40592,40593,40596,40597,40598,40599,40600,
-40601,40602,40603,40604,40606,40608,40609,40610,40611,40612,40613,40615,40616,
-40617,40618,40619,40620,40621,40622,40623,40624,40625,40626,40627,40629,40630,
-40631,40633,40634,40636,40639,40640,40641,40642,40643,40645,40646,40647,40648,
-40650,40651,40652,40656,40658,40659,40661,40662,40663,40665,40666,40670,40673,
-40675,40676,40678,40680,40683,40684,40685,40686,40688,40689,40690,40691,40692,
-40693,40694,40695,40696,40698,40701,40703,40704,40705,40706,40707,40708,40709,
-U,40710,40711,40712,40713,40714,40716,40719,40721,40722,40724,40725,40726,
-40728,40730,40731,40732,40733,40734,40735,40737,40739,40740,40741,40742,40743,
-40744,40745,40746,40747,40749,40750,40752,40753,40754,40755,40756,40757,40758,
-40760,40762,40764,40767,40768,40769,40770,40771,40773,40774,40775,40776,40777,
-40778,40779,40780,40781,40782,40783,40786,40787,40788,40789,40790,40791,40792,
-40793,40794,40795,40796,40797,40798,40799,40800,40801,40802,40803,40804,40805,
-40806,40807,40808,40809,40810,40811,40812,40813,40814,40815,40816,40817,40818,
-40819,40820,40821,40822,40823,40824,U,40825,40826,40827,40828,40829,40830,
-40833,40834,40845,40846,40847,40848,40849,40850,40851,40852,40853,40854,40855,
-40856,40860,40861,40862,40865,40866,40867,40868,40869,63788,63865,63893,63975,
-63985,64012,64013,64014,64015,64017,64019,64020,64024,64031,64032,64033,64035,
-64036,64039,64040,64041,
-};
-
-static const struct dbcs_index gbkext_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{__gbkext_decmap+0,64,254},{__gbkext_decmap+191,64,
-254},{__gbkext_decmap+382,64,254},{__gbkext_decmap+573,64,254},{
-__gbkext_decmap+764,64,254},{__gbkext_decmap+955,64,254},{__gbkext_decmap+1146
-,64,254},{__gbkext_decmap+1337,64,254},{__gbkext_decmap+1528,64,254},{
-__gbkext_decmap+1719,64,254},{__gbkext_decmap+1910,64,254},{__gbkext_decmap+
-2101,64,254},{__gbkext_decmap+2292,64,254},{__gbkext_decmap+2483,64,254},{
-__gbkext_decmap+2674,64,254},{__gbkext_decmap+2865,64,254},{__gbkext_decmap+
-3056,64,254},{__gbkext_decmap+3247,64,254},{__gbkext_decmap+3438,64,254},{
-__gbkext_decmap+3629,64,254},{__gbkext_decmap+3820,64,254},{__gbkext_decmap+
-4011,64,254},{__gbkext_decmap+4202,64,254},{__gbkext_decmap+4393,64,254},{
-__gbkext_decmap+4584,64,254},{__gbkext_decmap+4775,64,254},{__gbkext_decmap+
-4966,64,254},{__gbkext_decmap+5157,64,254},{__gbkext_decmap+5348,64,254},{
-__gbkext_decmap+5539,64,254},{__gbkext_decmap+5730,64,254},{__gbkext_decmap+
-5921,64,254},{__gbkext_decmap+6112,164,170},{__gbkext_decmap+6119,161,170},{0,
-0,0},{0,0,0},{0,0,0},{__gbkext_decmap+6129,224,245},{0,0,0},{__gbkext_decmap+
-6151,64,192},{__gbkext_decmap+6280,64,150},{__gbkext_decmap+6367,64,160},{
-__gbkext_decmap+6464,64,160},{__gbkext_decmap+6561,64,160},{__gbkext_decmap+
-6658,64,160},{__gbkext_decmap+6755,64,160},{__gbkext_decmap+6852,64,160},{
-__gbkext_decmap+6949,64,160},{__gbkext_decmap+7046,64,160},{__gbkext_decmap+
-7143,64,160},{__gbkext_decmap+7240,64,160},{__gbkext_decmap+7337,64,160},{
-__gbkext_decmap+7434,64,160},{__gbkext_decmap+7531,64,160},{__gbkext_decmap+
-7628,64,160},{__gbkext_decmap+7725,64,160},{__gbkext_decmap+7822,64,160},{
-__gbkext_decmap+7919,64,160},{__gbkext_decmap+8016,64,160},{__gbkext_decmap+
-8113,64,160},{__gbkext_decmap+8210,64,160},{__gbkext_decmap+8307,64,160},{
-__gbkext_decmap+8404,64,160},{__gbkext_decmap+8501,64,160},{__gbkext_decmap+
-8598,64,160},{__gbkext_decmap+8695,64,160},{__gbkext_decmap+8792,64,160},{
-__gbkext_decmap+8889,64,160},{__gbkext_decmap+8986,64,160},{__gbkext_decmap+
-9083,64,160},{__gbkext_decmap+9180,64,160},{__gbkext_decmap+9277,64,160},{
-__gbkext_decmap+9374,64,160},{__gbkext_decmap+9471,64,160},{__gbkext_decmap+
-9568,64,160},{__gbkext_decmap+9665,64,160},{__gbkext_decmap+9762,64,160},{
-__gbkext_decmap+9859,64,160},{__gbkext_decmap+9956,64,160},{__gbkext_decmap+
-10053,64,160},{__gbkext_decmap+10150,64,160},{__gbkext_decmap+10247,64,160},{
-__gbkext_decmap+10344,64,160},{__gbkext_decmap+10441,64,160},{__gbkext_decmap+
-10538,64,160},{__gbkext_decmap+10635,64,160},{__gbkext_decmap+10732,64,160},{
-__gbkext_decmap+10829,64,160},{__gbkext_decmap+10926,64,160},{__gbkext_decmap+
-11023,64,160},{__gbkext_decmap+11120,64,160},{__gbkext_decmap+11217,64,160},{
-__gbkext_decmap+11314,64,160},{__gbkext_decmap+11411,64,160},{__gbkext_decmap+
-11508,64,160},{__gbkext_decmap+11605,64,160},{__gbkext_decmap+11702,64,160},{
-__gbkext_decmap+11799,64,160},{__gbkext_decmap+11896,64,160},{__gbkext_decmap+
-11993,64,160},{__gbkext_decmap+12090,64,160},{__gbkext_decmap+12187,64,160},{
-__gbkext_decmap+12284,64,160},{__gbkext_decmap+12381,64,160},{__gbkext_decmap+
-12478,64,160},{__gbkext_decmap+12575,64,160},{__gbkext_decmap+12672,64,160},{
-__gbkext_decmap+12769,64,160},{__gbkext_decmap+12866,64,160},{__gbkext_decmap+
-12963,64,160},{__gbkext_decmap+13060,64,160},{__gbkext_decmap+13157,64,160},{
-__gbkext_decmap+13254,64,160},{__gbkext_decmap+13351,64,160},{__gbkext_decmap+
-13448,64,160},{__gbkext_decmap+13545,64,160},{__gbkext_decmap+13642,64,160},{
-__gbkext_decmap+13739,64,160},{__gbkext_decmap+13836,64,160},{__gbkext_decmap+
-13933,64,160},{__gbkext_decmap+14030,64,160},{__gbkext_decmap+14127,64,160},{
-__gbkext_decmap+14224,64,160},{__gbkext_decmap+14321,64,160},{__gbkext_decmap+
-14418,64,160},{__gbkext_decmap+14515,64,79},{0,0,0},
-};
-
-static const DBCHAR __gbcommon_encmap[23231] = {
-8552,N,N,8556,8487,N,N,N,N,N,N,N,8547,8512,N,N,N,N,N,41380,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8513,N,N,N,N,N,N,N,N,10276,10274,
-N,N,N,N,N,N,10280,10278,10298,N,10284,10282,N,N,N,N,10288,10286,N,N,N,8514,N,
-10292,10290,N,10297,10273,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,10277,N,N,N,N,N,N,
-N,10279,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,10281,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,43197,N,N,N,43198,N,N,N,N,10285,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,10289,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,10275,
-N,10283,N,10287,N,10291,N,10293,N,10294,N,10295,N,10296,43195,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,43200,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8486,N,8485,
-43072,43073,N,N,N,N,N,N,N,N,N,N,N,N,N,43074,9761,9762,9763,9764,9765,9766,
-9767,9768,9769,9770,9771,9772,9773,9774,9775,9776,9777,N,9778,9779,9780,9781,
-9782,9783,9784,N,N,N,N,N,N,N,9793,9794,9795,9796,9797,9798,9799,9800,9801,
-9802,9803,9804,9805,9806,9807,9808,9809,N,9810,9811,9812,9813,9814,9815,9816,
-10023,N,N,N,N,N,N,N,N,N,N,N,N,N,N,10017,10018,10019,10020,10021,10022,10024,
-10025,10026,10027,10028,10029,10030,10031,10032,10033,10034,10035,10036,10037,
-10038,10039,10040,10041,10042,10043,10044,10045,10046,10047,10048,10049,10065,
-10066,10067,10068,10069,10070,10072,10073,10074,10075,10076,10077,10078,10079,
-10080,10081,10082,10083,10084,10085,10086,10087,10088,10089,10090,10091,10092,
-10093,10094,10095,10096,10097,N,10071,43356,N,N,43075,41386,8490,8492,N,8494,
-8495,N,N,8496,8497,N,N,N,N,N,N,N,43077,8493,N,N,N,N,N,N,N,N,N,8555,N,8548,
-8549,N,43078,N,N,N,N,N,8569,8550,N,43079,N,N,N,43080,N,N,N,N,N,N,N,N,N,N,N,N,
-8557,N,N,N,N,N,N,N,N,N,N,43353,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-8817,8818,8819,8820,8821,8822,8823,8824,8825,8826,8827,8828,N,N,N,N,41633,
-41634,41635,41636,41637,41638,41639,41640,41641,41642,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,8571,8572,8570,8573,N,N,43081,43082,43083,43084,8522,N,N,
-N,N,N,N,8519,N,8518,N,N,N,43085,N,N,N,N,8524,N,N,8536,8542,43086,8527,N,N,
-43087,N,8526,N,8516,8517,8521,8520,8530,N,N,8531,N,N,N,N,N,8544,8543,8515,
-8523,N,N,N,N,N,8535,N,N,N,N,N,N,N,N,N,N,8534,N,N,N,8533,N,N,N,N,N,43088,N,N,N,
-N,N,N,N,N,N,N,N,N,N,8537,8532,N,N,8540,8541,43089,43090,N,N,N,N,N,N,8538,8539,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-43154,N,N,N,8529,N,N,N,N,N,N,N,N,N,N,N,8525,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,43091,8528,8793,8794,8795,8796,8797,8798,8799,8800,8801,8802,
-N,N,N,N,N,N,N,N,N,N,8773,8774,8775,8776,8777,8778,8779,8780,8781,8782,8783,
-8784,8785,8786,8787,8788,8789,8790,8791,8792,8753,8754,8755,8756,8757,8758,
-8759,8760,8761,8762,8763,8764,8765,8766,8767,8768,8769,8770,8771,8772,10532,
-10533,10534,10535,10536,10537,10538,10539,10540,10541,10542,10543,10544,10545,
-10546,10547,10548,10549,10550,10551,10552,10553,10554,10555,10556,10557,10558,
-10559,10560,10561,10562,10563,10564,10565,10566,10567,10568,10569,10570,10571,
-10572,10573,10574,10575,10576,10577,10578,10579,10580,10581,10582,10583,10584,
-10585,10586,10587,10588,10589,10590,10591,10592,10593,10594,10595,10596,10597,
-10598,10599,10600,10601,10602,10603,10604,10605,10606,10607,N,N,N,N,43092,
-43093,43094,43095,43096,43097,43098,43099,43100,43101,43102,43103,43104,43105,
-43106,43107,43108,43109,43110,43111,43112,43113,43114,43115,43116,43117,43118,
-43119,43120,43121,43122,43123,43124,43125,43126,43127,N,N,N,N,N,N,N,N,N,N,N,N,
-N,43128,43129,43130,43131,43132,43133,43134,43136,43137,43138,43139,43140,
-43141,43142,43143,N,N,N,43144,43145,43146,N,N,N,N,N,N,N,N,N,N,8566,8565,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,8568,8567,N,N,N,N,N,N,N,N,43147,43148,N,N,N,N,N,N,N,
-N,8564,8563,N,N,N,8560,N,N,8562,8561,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-43149,43150,43151,43152,8559,8558,N,N,43153,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-8546,N,8545,8481,8482,8483,8488,N,8489,43365,43414,8500,8501,8502,8503,8504,
-8505,8506,8507,8510,8511,43155,8574,8498,8499,8508,8509,N,N,N,N,N,43156,43157,
-N,N,43328,43329,43330,43331,43332,43333,43334,43335,43336,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,9249,9250,9251,9252,9253,9254,9255,9256,9257,9258,
-9259,9260,9261,9262,9263,9264,9265,9266,9267,9268,9269,9270,9271,9272,9273,
-9274,9275,9276,9277,9278,9279,9280,9281,9282,9283,9284,9285,9286,9287,9288,
-9289,9290,9291,9292,9293,9294,9295,9296,9297,9298,9299,9300,9301,9302,9303,
-9304,9305,9306,9307,9308,9309,9310,9311,9312,9313,9314,9315,9316,9317,9318,
-9319,9320,9321,9322,9323,9324,9325,9326,9327,9328,9329,9330,9331,N,N,N,N,N,N,
-N,43361,43362,43366,43367,N,N,9505,9506,9507,9508,9509,9510,9511,9512,9513,
-9514,9515,9516,9517,9518,9519,9520,9521,9522,9523,9524,9525,9526,9527,9528,
-9529,9530,9531,9532,9533,9534,9535,9536,9537,9538,9539,9540,9541,9542,9543,
-9544,9545,9546,9547,9548,9549,9550,9551,9552,9553,9554,9555,9556,9557,9558,
-9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,
-9574,9575,9576,9577,9578,9579,9580,9581,9582,9583,9584,9585,9586,9587,9588,
-9589,9590,N,N,N,N,8484,43360,43363,43364,10309,10310,10311,10312,10313,10314,
-10315,10316,10317,10318,10319,10320,10321,10322,10323,10324,10325,10326,10327,
-10328,10329,10330,10331,10332,10333,10334,10335,10336,10337,10338,10339,10340,
-10341,10342,10343,10344,10345,8805,8806,8807,8808,8809,8810,8811,8812,8813,
-8814,N,N,N,N,N,N,N,43354,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,43337,43338,43339,N,N,N,N,N,N,N,N,N,N,N,N,43340,43341,43342,
-N,N,43343,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-43344,N,N,N,N,N,N,N,N,N,43345,N,N,43346,43347,N,N,43348,21051,13857,33088,
-18015,33089,33090,33091,19826,21833,18557,18767,20290,22562,12859,21355,33092,
-22564,13171,33093,22312,18258,22567,19008,33094,18288,12667,21045,13396,13867,
-19263,22569,33095,33096,33097,13866,33098,16701,20815,33099,18725,22573,33100,
-14454,20798,25436,22096,33101,33102,14177,33103,13358,33104,16729,33105,22588,
-33106,19816,13604,20010,22135,33107,16502,15961,22575,33108,33109,33110,17483,
-33111,15939,33112,22577,17204,21093,33113,22062,20058,21799,14965,14118,16470,
-33114,17977,17746,18247,33115,14676,33116,13131,21074,33117,33118,22591,15941,
-18034,21042,20272,20327,33119,33120,33121,33122,19049,33123,33124,22592,33125,
-33126,33127,33128,33129,33130,17010,16978,33131,18537,33132,33133,33134,33135,
-33136,33137,33138,33139,33140,33141,18220,33142,33143,33144,33145,33146,33147,
-33148,16715,33149,21352,21881,33150,19010,13950,22561,21338,16247,33152,21574,
-15141,22593,20069,15918,33153,33154,22568,33155,20807,20521,33156,33157,33158,
-22589,22895,19830,16186,33159,15675,14885,21088,12922,14944,17462,33160,20333,
-15913,19748,16705,33161,33162,33163,18263,22897,33164,22900,33165,33166,33167,
-33168,18507,22633,33169,33170,33171,21082,18994,18506,22636,22634,22598,15734,
-17997,13168,33172,22635,15729,15721,33173,18516,13395,33174,33175,16984,33176,
-12886,22352,19019,19323,21836,14390,20297,33177,33178,33179,22874,22640,18218,
-33180,22638,33181,13434,16750,21076,33182,33183,22637,33184,21063,22639,17223,
-33185,33186,33187,20854,33188,22105,22642,33189,22645,15486,15451,33190,33191,
-33192,18510,33193,14173,33194,14146,33195,18035,33196,33197,33198,33199,33200,
-33201,33202,22648,21057,33203,33204,20073,15423,14204,14117,20573,33205,33206,
-33207,33208,33209,22106,21317,15215,15201,22641,33210,33211,18721,20016,13355,
-33212,22643,33213,18763,22646,16983,22647,33214,33215,20017,22649,33216,33217,
-33218,12846,14656,33219,22819,33220,12393,33221,16742,33222,18796,33223,19269,
-33224,19270,22820,33225,33226,33227,33228,33229,13672,33230,33231,13611,33232,
-33233,33234,33235,33236,33237,20027,13645,22305,22388,21331,33238,19557,33239,
-14926,33240,22818,22876,21344,22653,14192,22391,22654,22650,22817,17507,33241,
-33242,21302,22644,22877,33243,22651,33244,17765,33245,33246,16464,33247,33248,
-20848,12379,33249,33250,15441,22822,33251,22821,33252,33253,33254,33255,22828,
-22830,33256,22827,19001,33257,33258,33259,22825,22070,33260,33261,33262,13150,
-22824,33263,16509,33264,19020,33265,22826,33266,22823,33267,33268,22832,33269,
-33270,13873,33271,33272,33273,14633,33274,21056,33275,33276,20288,33277,33278,
-16962,33344,15684,21868,12896,18248,16235,22829,33345,22831,33346,20074,14958,
-33347,33348,33349,33350,33351,18262,33352,33353,33354,33355,33356,33357,33358,
-33359,33360,12643,33361,33362,33363,13401,13933,22836,33364,33365,33366,33367,
-16161,33368,33369,33370,22878,18254,16510,22840,33371,33372,33373,33374,33375,
-19287,14205,33376,22837,33377,22839,12579,21345,22841,33378,20549,33379,22838,
-33380,33381,22833,33382,22834,16681,22835,33383,33384,15475,20574,14377,33385,
-15971,33386,22845,33387,33388,33389,33390,22842,33391,12339,33392,33393,33394,
-22850,33395,33396,33397,33398,33399,33400,33401,33402,33403,33404,33405,33406,
-33408,22852,12598,33409,22847,33410,33411,13625,33412,15987,33413,33414,33415,
-19528,14962,21072,33416,22851,33417,33418,15720,33419,13099,33420,33421,33422,
-22853,15979,33423,22854,22843,17503,33424,22846,22849,22848,33425,33426,33427,
-33428,33429,33430,33431,33432,33433,33434,33435,21806,33436,22069,33437,18275,
-33438,33439,33440,33441,22856,33442,33443,33444,15449,22858,33445,33446,33447,
-22844,33448,22859,17963,33449,33450,33451,33452,33453,22857,33454,33455,33456,
-33457,22390,33458,19747,33459,33460,33461,33462,33463,33464,33465,33466,15649,
-33467,33468,33469,33470,33471,33472,22860,33473,33474,33475,33476,33477,33478,
-33479,33480,33481,17724,19765,33482,33483,33484,22861,33485,33486,22855,13093,
-16254,33487,33488,33489,33490,14389,33491,33492,16508,33493,33494,33495,33496,
-12408,33497,33498,33499,33500,33501,33502,33503,33504,33505,33506,33507,33508,
-33509,33510,33511,33512,33513,33514,33515,33516,33517,13430,33518,22862,33519,
-22863,13346,22864,33520,33521,13407,33522,33523,33524,33525,33526,12353,33527,
-33528,33529,33530,33531,33532,33533,22865,18741,33534,33600,33601,33602,33603,
-33604,33605,33606,33607,33608,33609,33610,33611,33612,33613,33614,33615,33616,
-33617,20337,33618,33619,33620,33621,33622,33623,22866,33624,33625,33626,16709,
-33627,33628,33629,33630,33631,33632,33633,33634,33635,33636,33637,22870,18734,
-33638,33639,33640,33641,22869,22868,22871,33642,33643,33644,33645,19291,33646,
-15657,33647,33648,33649,33650,33651,17959,33652,33653,33654,33655,33656,33657,
-33658,33659,33660,33661,22867,22872,33662,33664,33665,22873,33666,33667,33668,
-33669,33670,33671,18533,33672,33673,33674,33675,33676,33677,33678,33679,33680,
-33681,33682,33683,33684,33685,16476,33686,33687,33688,33689,33690,33691,33692,
-33693,33694,33695,33696,33697,33698,33699,33700,33701,33702,33703,33704,33705,
-33706,33707,33708,33709,33710,33711,33712,33713,33714,13945,22563,21578,33715,
-21546,20566,13156,21847,33716,20296,14690,33717,16203,33718,17250,33719,33720,
-33721,13906,33722,33723,19779,22894,22896,33724,33725,33726,13619,33727,13877,
-33728,33729,33730,33731,33732,15908,33733,33734,18539,33735,33736,18475,33737,
-33738,12363,14635,16761,22882,33739,16444,14642,33740,14680,20555,12664,18020,
-15967,13668,22344,33741,20856,15462,19038,33742,33743,15421,22886,22631,33744,
-33745,17498,33746,33747,14420,18493,33748,33749,12897,21593,33750,33751,33752,
-33753,17200,33754,33755,17249,23074,18527,33756,20532,33757,15996,17705,33758,
-33759,33760,14682,33761,23075,33762,21545,23076,33763,33764,33765,33766,33767,
-22907,13868,33768,33769,14187,12665,22908,13157,15990,33770,16246,21041,16484,
-33771,33772,33773,13875,22910,22909,33774,33775,15931,33776,33777,33778,18016,
-33779,22332,23073,33780,16697,33781,13682,16744,33782,33783,15477,33784,13397,
-33785,33786,33787,33788,33789,33790,33856,33857,33858,16733,33859,17533,33860,
-33861,15416,14130,33862,33863,14191,33864,33865,33866,33867,33868,33869,22892,
-33870,17982,33871,16173,15179,33872,33873,13642,33874,23369,20567,33875,19769,
-12348,13174,15223,23370,14895,33876,21604,13622,13683,22614,18512,33877,33878,
-14166,18256,22615,33879,16175,33880,33881,23355,22616,33882,33883,20556,15150,
-33884,33885,33886,27454,16720,16757,21618,14421,13364,33887,13173,33888,33889,
-18750,33890,33891,33892,17744,33893,33894,33895,17753,16507,33896,12656,33897,
-22617,14670,33898,13629,33899,33900,22618,33901,33902,22086,19234,18479,18738,
-13388,16204,33903,14708,33904,22619,22620,13927,15425,19562,33905,33906,33907,
-33908,33909,33910,20343,33911,22621,18224,33912,33913,14672,15651,33914,33915,
-19550,33916,17994,33917,33918,33920,33921,33922,22624,33923,22622,33924,33925,
-22623,33926,33927,33928,12414,33929,15975,33930,18979,15476,33931,33932,33933,
-33934,14385,33935,33936,14446,33937,33938,33939,33940,33941,33942,33943,33944,
-33945,33946,22626,33947,15691,33948,22628,22627,33949,33950,33951,33952,33953,
-17788,33954,33955,33956,33957,33958,33959,33960,22629,33961,33962,22630,33963,
-33964,33965,33966,33967,33968,33969,16678,33970,18480,12396,14630,15443,20081,
-23357,16723,33971,33972,33973,33974,13871,22138,17708,15705,23358,23359,33975,
-33976,33977,16504,15906,16461,33978,33979,33980,33981,33982,33983,33984,33985,
-33986,33987,23360,19014,33988,33989,33990,12842,33991,33992,33993,21314,33994,
-17251,33995,20779,33996,33997,33998,33999,23362,34000,16469,34001,34002,34003,
-23363,34004,16177,34005,34006,34007,34008,34009,34010,17468,34011,34012,34013,
-34014,18266,34015,34016,34017,34018,34019,34020,34021,34022,34023,34024,34025,
-23364,34026,34027,34028,34029,34030,34031,34032,34033,22888,18775,34034,34035,
-34036,14644,20080,21576,34037,34038,34039,34040,12412,13394,34041,20569,34042,
-34043,34044,34045,22889,34046,24139,22891,34112,34113,34114,34115,22576,15151,
-12593,34116,13143,22606,34117,34118,21585,34119,34120,15667,16239,34121,20283,
-34122,34123,22608,34124,34125,34126,14155,34127,34128,34129,22609,34130,34131,
-34132,34133,34134,34135,34136,34137,34138,34139,17957,18296,21053,34140,34141,
-22610,17508,34142,18990,34143,18215,34144,22566,34145,18813,20071,15196,12395,
-34146,34147,34148,15146,20525,34149,12592,22372,22335,34150,13605,17012,17487,
-34151,34152,12841,34153,12855,34154,12645,24370,21820,16168,16940,22613,16945,
-34155,22612,20052,34156,23136,34157,20032,34158,34159,22580,17198,21281,20003,
-34160,15412,18484,16977,34161,15981,20534,34162,23137,34163,34164,34165,34166,
-18276,34167,34168,13095,34169,13938,19580,16506,34170,34171,16503,34172,20793,
-20833,22599,34173,34174,34176,34177,34178,34179,34180,12894,34181,34182,16485,
-34183,14961,34184,34185,22600,34186,21549,34187,34188,20321,22601,34189,22602,
-20291,34190,13176,15943,34191,34192,34193,34194,22603,34195,34196,34197,34198,
-34199,34200,34201,23372,34202,34203,34204,34205,18469,34206,34207,34208,20312,
-34209,18558,12878,34210,34211,34212,34213,34214,21334,12902,15408,21329,19243,
-14132,34215,34216,34217,14114,34218,34219,19045,34220,18465,19036,12644,20592,
-34221,17745,34222,34223,34224,23365,13694,34225,34226,16218,14661,15972,16749,
-34227,24374,24373,22075,15696,21849,12360,13859,16201,19496,24371,18999,21330,
-34228,22607,21046,14917,19262,19518,34229,24375,13680,24372,34230,34231,34232,
-21365,34233,13140,14455,34234,24378,34235,14927,15402,13685,34236,19756,17275,
-14963,16500,19778,20338,24376,20293,34237,16960,24377,17008,34238,34239,34240,
-15997,34241,16735,19788,21111,14157,24385,34242,24388,34243,34244,14193,12361,
-13910,14164,34245,14892,19581,16212,19249,18036,34246,22056,24389,34247,20066,
-13107,34248,34249,20092,13365,34250,20039,14960,34251,20065,34252,20797,34253,
-34254,24384,34255,34256,13428,34257,13130,34258,14438,24379,34259,34260,34261,
-34262,17477,34263,24380,24381,24382,17723,24383,24386,21553,24387,34264,18234,
-20056,34265,34266,34267,34268,34269,17496,34270,24394,34271,24399,34272,22108,
-34273,34274,34275,34276,34277,34278,34279,34280,24393,24410,20022,34281,14919,
-24398,24392,17758,34282,34283,18795,14964,17276,34284,34285,15959,34286,24390,
-34287,24397,34288,17752,34289,34290,34291,34292,21798,14925,34293,15948,21309,
-14400,34294,22116,34295,24391,14654,16167,34296,34297,16764,24395,24396,34298,
-24400,34299,34300,34301,34302,34368,24411,24421,34369,24407,24406,22345,24419,
-24420,25963,21031,24402,34370,16169,34371,21595,34372,16200,24404,34373,34374,
-34375,20300,34376,34377,24413,34378,20810,34379,24414,12327,17975,24403,34380,
-14949,34381,13919,19803,14718,21589,34382,34383,24415,20332,12325,24423,24401,
-20806,24405,24408,24409,24412,34384,15145,34385,24416,24417,34386,24418,24422,
-24424,21300,34387,34388,34389,34390,34391,14439,17718,24426,18778,16680,17476,
-34392,34393,16222,20344,34394,34395,34396,21852,24430,34397,34398,34399,34400,
-34401,34402,12856,34403,14943,24428,34404,23361,34405,20836,34406,34407,34408,
-34409,19316,13373,34410,12326,34411,34412,34413,34414,34415,24433,19526,24434,
-34416,34417,24429,34418,34419,34420,34421,34422,34423,24425,34424,34425,34426,
-34427,24427,34428,24431,24432,15165,34429,34430,24435,34432,34433,24436,34434,
-15139,34435,19035,20008,24615,13098,34436,24614,34437,34438,34439,24609,34440,
-34441,34442,34443,24446,34444,19801,24444,34445,24442,34446,16208,22340,34447,
-18764,34448,34449,24440,12321,34450,34451,34452,34453,34454,24445,34455,34456,
-34457,34458,24443,24610,34459,34460,34461,34462,34463,24616,34464,34465,34466,
-34467,14152,34468,34469,17953,18742,16434,24437,34470,34471,17726,34472,22596,
-24441,17526,34473,34474,34475,34476,34477,34478,24611,24612,24613,20517,34479,
-34480,24628,19556,34481,24625,34482,16166,24623,20025,24619,18758,34483,34484,
-16430,24622,14957,14896,24617,34485,34486,34487,24438,34488,24627,34489,34490,
-24632,34491,34492,34493,13357,24633,34494,34495,20274,14920,34496,24624,34497,
-34498,34499,34500,34501,34502,34503,20602,34504,34505,34506,34507,34508,34509,
-34510,34511,34512,24620,34513,21627,34514,24439,34515,17767,34516,24621,34517,
-21367,34518,24630,24631,34519,34520,34521,34522,34523,24644,20577,34524,34525,
-34526,24636,34527,34528,24649,24650,34529,34530,34531,24638,24618,18724,24641,
-34532,24626,34533,34534,34535,34536,34537,19016,24643,34538,24629,34539,20043,
-34540,19267,24653,24646,24642,34541,24651,34542,24634,24639,24640,34543,34544,
-24645,34545,34546,24647,24648,34547,24652,34548,24635,34549,34550,34551,34552,
-34553,19284,24661,34554,24662,24658,34555,34556,34557,34558,34624,34625,24656,
-15438,34626,34627,24657,34628,14402,22597,34629,34630,34631,34632,34633,34634,
-34635,34636,20586,34637,34638,17007,34639,34640,24655,24637,34641,34642,34643,
-24660,24659,34644,34645,24663,34646,34647,34648,34649,24668,24664,34650,34651,
-34652,22134,13104,34653,22380,34654,19259,34655,34656,24666,34657,20091,34658,
-34659,34660,14937,34661,34662,34663,34664,34665,34666,34667,34668,34669,34670,
-34671,34672,24673,24669,21037,34673,34674,34675,34676,34677,24674,34678,34679,
-24667,24665,24671,34680,34681,24672,34682,34683,34684,34685,34686,24670,34688,
-24676,34689,34690,34691,18039,22572,21611,24678,19017,34692,34693,34694,34695,
-24677,34696,34697,34698,34699,14401,34700,34701,34702,34703,24679,24680,34704,
-34705,34706,34707,34708,34709,34710,34711,24681,24675,34712,34713,34714,34715,
-34716,34717,34718,14911,19559,34719,34720,34721,24682,34722,34723,34724,34725,
-34726,34727,34728,34729,34730,34731,34732,34733,34734,34735,34736,20345,34737,
-34738,34739,34740,34741,34742,34743,34744,34745,34746,34747,24683,34748,34749,
-34750,34751,34752,34753,34754,18498,34755,34756,34757,34758,15680,34759,34760,
-34761,34762,34763,34764,34765,34766,34767,34768,34769,34770,34771,17490,34772,
-34773,34774,34775,34776,34777,34778,34779,34780,24684,34781,34782,24685,34783,
-34784,18292,19268,34785,24686,15192,22582,21106,24687,19781,34786,13914,34787,
-34788,34789,34790,34791,34792,24689,34793,21552,34794,34795,16423,13393,34796,
-34797,20007,24688,34798,34799,34800,24690,14668,34801,34802,14714,19772,24691,
-34803,34804,34805,18004,24692,34806,21554,34807,18470,24694,24693,34808,34809,
-34810,34811,34812,34813,34814,34880,34881,34882,34883,34884,34885,34886,34887,
-34888,34889,24695,34890,34891,19777,34892,34893,34894,18981,34895,34896,34897,
-34898,21594,23383,23385,34899,23384,14695,23388,23389,13656,34900,34901,23386,
-34902,34903,34904,34905,34906,23387,13089,23391,34907,34908,15224,34909,22071,
-34910,23392,34911,34912,34913,34914,15993,34915,34916,14139,34917,23376,19502,
-16178,15157,22392,16211,34918,34919,34920,34921,34922,16233,34923,34924,15457,
-19507,23390,12371,20075,14168,22329,17986,34925,34926,16420,34927,19513,34928,
-23399,23393,17978,23395,34929,23400,34930,17783,34931,34932,34933,23402,34934,
-34935,23401,16192,34936,34937,34938,23398,23397,34939,34940,34941,34942,34944,
-13369,16428,16930,23394,23396,34945,34946,34947,34948,20557,23405,34949,34950,
-34951,34952,34953,16477,23410,34954,34955,34956,34957,34958,34959,34960,13922,
-34961,34962,34963,34964,23411,23378,14648,21547,23404,34965,16209,23408,34966,
-23377,34967,13670,34968,23403,16229,34969,34970,34971,23406,34972,23409,34973,
-34974,34975,23417,34976,34977,34978,34979,34980,34981,34982,34983,34984,14625,
-12323,34985,34986,34987,34988,34989,34990,34991,17009,34992,34993,13127,23407,
-34994,34995,23416,34996,18002,23412,34997,34998,23413,23415,23414,34999,35000,
-23422,35001,21362,12858,35002,35003,35004,23421,35005,35006,35007,35008,35009,
-35010,35011,35012,23588,35013,23419,35014,35015,35016,35017,23418,35018,35019,
-35020,23420,17760,15225,35021,35022,23587,35023,35024,23589,35025,19523,35026,
-35027,35028,13905,23872,35029,35030,35031,23585,35032,23586,35033,35034,35035,
-18229,35036,35037,35038,13929,35039,35040,35041,23591,35042,35043,35044,35045,
-23590,35046,23593,12580,35047,35048,13644,35049,35050,35051,35052,35053,16176,
-35054,35055,35056,35057,35058,20831,35059,35060,35061,35062,13890,35063,35064,
-35065,35066,35067,35068,35069,35070,35136,35137,35138,35139,35140,35141,23592,
-35142,35143,35144,35145,35146,35147,35148,19322,27507,35149,35150,35151,19292,
-35152,35153,19326,35154,35155,35156,19521,35157,35158,35159,35160,35161,18555,
-35162,35163,35164,35165,35166,35167,23594,35168,35169,35170,35171,35172,19566,
-23595,35173,35174,35175,35176,35177,35178,35179,35180,35181,35182,35183,35184,
-35185,35186,35187,35188,35189,23379,35190,23599,23596,35191,15923,35192,19067,
-35193,35194,35195,23597,35196,35197,35198,35200,35201,35202,35203,35204,18762,
-17465,35205,35206,35207,35208,35209,18237,23598,35210,35211,35212,21622,20582,
-35213,35214,35215,35216,35217,35218,35219,35220,17451,13909,35221,35222,35223,
-35224,35225,35226,35227,35228,35229,35230,35231,35232,35233,35234,35235,35236,
-35237,35238,23380,35239,35240,35241,35242,12634,35243,35244,35245,23381,35246,
-35247,35248,35249,35250,35251,35252,35253,35254,35255,35256,23382,35257,35258,
-35259,14910,35260,35261,35262,35263,35264,35265,35266,35267,35268,35269,35270,
-35271,35272,35273,18496,35274,35275,35276,35277,35278,35279,19007,18505,35280,
-22323,35281,18809,35282,35283,16199,35284,35285,14968,35286,35287,21052,35288,
-35289,35290,35291,35292,35293,35294,35295,25146,35296,13350,35297,35298,12600,
-35299,35300,35301,35302,35303,14388,35304,20292,35305,35306,35307,35308,22887,
-20262,19810,35309,35310,22893,13920,35311,21049,35312,35313,14651,35314,35315,
-35316,35317,25145,25143,35318,13427,35319,19564,19499,14194,35320,22578,20843,
-14907,35321,18983,35322,35323,19767,35324,35325,21060,16228,15440,13921,35326,
-24133,35392,35393,35394,35395,24134,23356,35396,20825,35397,35398,18022,17486,
-14190,35399,14172,35400,35401,16252,22368,35402,18037,35403,35404,12604,24136,
-15665,19543,24138,35405,24137,35406,35407,35408,35409,35410,13676,35411,18781,
-35412,35413,12354,35414,35415,35416,35417,35418,35419,35420,35421,35422,35423,
-35424,35425,35426,17710,17707,35427,17484,35428,15465,19325,35429,35430,35431,
-14915,35432,35433,35434,25977,18535,25978,19837,35435,22321,14398,17000,35436,
-18513,35437,35438,25979,35439,35440,35441,35442,13898,15435,35443,35444,20861,
-26145,35445,17262,35446,35447,35448,35449,26148,35450,35451,35452,35453,25982,
-26149,19799,35454,35456,14145,25980,25981,26147,35457,35458,17501,26152,35459,
-35460,26151,35461,35462,35463,35464,35465,35466,17219,35467,18014,35468,35469,
-26154,35470,35471,35472,35473,35474,35475,35476,17463,35477,35478,35479,26146,
-19004,35480,35481,35482,35483,15715,14659,26150,20565,20015,35484,35485,26153,
-26160,35486,21030,35487,15658,26157,35488,35489,35490,35491,35492,26159,35493,
-16465,35494,35495,21068,35496,35497,35498,15399,35499,35500,35501,35502,35503,
-35504,35505,35506,35507,35508,35509,35510,26161,35511,21110,35512,35513,35514,
-22347,35515,19838,35516,19806,16934,26155,26156,15679,26158,26163,35517,35518,
-26162,35519,35520,35521,35522,26166,35523,26168,35524,35525,35526,35527,17519,
-35528,35529,35530,17480,35531,35532,15978,18799,35533,35534,26167,35535,13936,
-35536,35537,35538,17252,35539,35540,35541,35542,35543,35544,35545,21353,26164,
-35546,26165,35547,18466,35548,35549,35550,35551,35552,26173,35553,35554,35555,
-26169,35556,35557,35558,35559,35560,17989,35561,35562,19825,26171,35563,35564,
-35565,35566,35567,35568,35569,35570,35571,35572,26172,35573,35574,35575,35576,
-15209,35577,35578,35579,35580,35581,35582,35648,26174,35649,35650,35651,35652,
-26170,35653,35654,16439,35655,35656,35657,35658,35659,35660,35661,35662,35663,
-21284,26175,18804,26179,35664,35665,26180,35666,35667,35668,35669,20598,35670,
-35671,35672,35673,35674,35675,35676,35677,35678,35679,35680,35681,35682,35683,
-35684,35685,35686,35687,17213,35688,35689,35690,35691,35692,35693,35694,17220,
-26178,35695,35696,35697,35698,35699,35700,35701,35702,35703,35704,35705,35706,
-35707,35708,26177,35709,35710,35712,35713,35714,35715,35716,26183,20273,35717,
-27508,35718,35719,26186,35720,35721,35722,35723,35724,26181,35725,35726,15454,
-18729,35727,35728,35729,35730,35731,35732,15413,35733,35734,20307,35735,35736,
-35737,35738,35739,26184,35740,26185,35741,26190,35742,26192,35743,35744,35745,
-26193,35746,35747,35748,26187,13653,35749,26188,35750,35751,26191,35752,35753,
-17499,35754,26182,35755,35756,35757,35758,35759,26189,35760,35761,35762,35763,
-35764,35765,35766,35767,35768,35769,35770,35771,35772,35773,35774,35775,35776,
-35777,35778,35779,35780,35781,35782,26194,35783,35784,35785,35786,35787,35788,
-35789,35790,35791,35792,35793,35794,26196,26195,35795,35796,35797,35798,35799,
-35800,35801,35802,35803,35804,35805,35806,35807,35808,35809,35810,35811,35812,
-35813,35814,35815,35816,35817,35818,35819,35820,26197,35821,22904,35822,35823,
-26198,35824,35825,35826,35827,35828,35829,35830,35831,26199,35832,35833,35834,
-35835,35836,35837,35838,35904,35905,35906,35907,35908,35909,35910,35911,22355,
-26205,35912,26206,16215,21584,35913,22358,13414,19311,26202,22595,22350,20514,
-35914,17231,35915,35916,26207,15422,14658,26203,20775,35917,35918,14882,16975,
-35919,22571,35920,35921,35922,19051,25966,35923,26204,35924,14197,35925,35926,
-35927,35928,18534,35929,35930,17525,35931,35932,25906,17534,35933,19324,25907,
-21804,35934,21358,19032,12338,35935,19278,19818,35936,35937,14954,35938,35939,
-35940,25909,35941,25908,35942,22362,14681,22118,13864,19824,21067,12582,18997,
-35943,13160,18803,16205,20603,19026,25910,15170,35944,35945,35946,20316,14636,
-35947,35948,35949,35950,21591,35951,35952,14886,20839,20348,15442,35953,25911,
-18525,35954,35955,35956,16237,12662,19294,35957,35958,15429,35959,15428,21114,
-17244,16220,35960,35961,35962,35963,14395,35964,35965,35966,17218,35968,14894,
-21538,35969,35970,35971,35972,35973,35974,35975,35976,35977,18270,17455,12908,
-35978,14673,35979,35980,25915,16712,35981,35982,21807,35983,35984,35985,35986,
-35987,25916,35988,25918,35989,35990,35991,35992,35993,35994,35995,13415,13908,
-19266,20784,13628,35996,35997,19033,35998,14178,35999,36000,18788,36001,15659,
-36002,36003,20030,22384,36004,36005,36006,36007,20513,36008,18777,36009,36010,
-13947,26200,15458,36011,13118,36012,18768,36013,26201,13090,36014,36015,36016,
-36017,24140,36018,21320,24141,36019,21026,36020,36021,36022,36023,24142,36024,
-36025,36026,36027,15949,36028,36029,24143,36030,36031,36032,18988,21116,13151,
-25962,17505,15905,20018,17522,15958,17960,12899,36033,36034,15955,36035,36036,
-18300,19563,15724,20061,36037,36038,19002,17985,25964,20540,36039,36040,36041,
-21817,36042,36043,36044,25965,36045,36046,36047,36048,19060,36049,19776,16965,
-36050,25967,36051,16964,25968,36052,36053,36054,36055,36056,36057,36058,25976,
-19789,36059,18749,36060,36061,36062,36063,36064,36065,36066,21081,24872,36067,
-36068,36069,36070,21356,36071,19306,18033,36072,36073,36074,36075,36076,24876,
-36077,36078,36079,24871,24873,36080,36081,24874,24879,36082,36083,12909,36084,
-24875,14426,24877,24878,24880,13626,24881,36085,36086,36087,36088,36089,24883,
-24888,36090,36091,36092,36093,36094,20818,36160,24886,24885,16747,36161,36162,
-36163,24887,36164,21568,36165,24882,36166,24890,12342,36167,36168,36169,36170,
-24884,36171,16249,36172,24889,36173,36174,24891,36175,36176,36177,36178,36179,
-36180,24894,36181,36182,36183,36184,36185,36186,24892,36187,36188,36189,36190,
-36191,36192,22085,36193,36194,36195,36196,36197,36198,36199,20287,36200,36201,
-24893,24895,16973,36202,13931,36203,21368,36204,36205,18253,36206,36207,14181,
-36208,36209,36210,36211,36212,36213,36214,36215,36216,36217,15998,36218,36219,
-36220,36221,36222,36224,24896,24897,36225,36226,24903,13159,36227,36228,36229,
-36230,36231,36232,18025,36233,36234,36235,36236,36237,13406,36238,20802,36239,
-36240,36241,36242,24904,36243,36244,24902,36245,36246,36247,36248,36249,24901,
-36250,24899,24898,36251,12608,36252,36253,36254,21816,24900,36255,36256,36257,
-36258,36259,24907,36260,36261,36262,36263,36264,36265,36266,36267,24908,24906,
-36268,36269,36270,36271,36272,36273,36274,36275,28538,36276,36277,24915,24914,
-18230,36278,36279,36280,36281,36282,36283,36284,36285,36286,36287,36288,24905,
-36289,36290,24910,36291,24912,36292,36293,36294,36295,36296,36297,36298,36299,
-36300,36301,36302,24916,36303,24913,24909,36304,36305,24911,36306,36307,36308,
-36309,24917,36310,36311,36312,36313,36314,36315,36316,36317,36318,36319,36320,
-36321,36322,24918,36323,36324,36325,36326,36327,36328,36329,36330,36331,36332,
-36333,36334,36335,36336,36337,36338,36339,36340,36341,36342,36343,36344,24919,
-36345,36346,36347,24920,36348,36349,36350,36416,36417,36418,36419,36420,36421,
-36422,36423,36424,36425,36426,36427,36428,36429,36430,36431,36432,36433,36434,
-36435,36436,36437,24922,36438,36439,36440,36441,36442,36443,36444,36445,36446,
-36447,36448,36449,36450,24923,36451,36452,36453,36454,36455,36456,36457,20001,
-36458,36459,36460,36461,36462,36463,36464,36465,36466,36467,36468,36469,36470,
-26461,36471,13352,22109,36472,36473,20786,13106,36474,36475,14628,22387,18249,
-15966,14638,36476,20055,36477,36478,12910,23375,36480,15418,21073,19272,12365,
-36481,36482,20335,36483,36484,36485,36486,36487,22883,15725,36488,36489,12626,
-19024,12860,36490,19239,14123,36491,18982,36492,36493,36494,20259,36495,36496,
-24696,21834,24699,36497,36498,24698,17729,19579,36499,16689,24697,22115,12847,
-22084,13659,36500,36501,36502,36503,36504,36505,36506,36507,13432,22049,36508,
-36509,36510,36511,36512,20271,12399,36513,36514,24700,36515,36516,36517,36518,
-36519,24865,13091,36520,36521,24701,24702,17201,36522,36523,36524,36525,17245,
-36526,24866,14201,36527,36528,36529,36530,36531,36532,15183,36533,36534,36535,
-36536,36537,36538,36539,24867,17467,36540,36541,36542,36543,36544,24868,36545,
-36546,24869,36547,36548,24870,13361,36549,36550,36551,36552,36553,36554,36555,
-36556,36557,36558,36559,36560,36561,36562,36563,14409,17981,17514,36564,12834,
-36565,20562,36566,26459,15171,21335,21316,36567,14691,25167,36568,36569,36570,
-22319,36571,18284,12627,36572,36573,13362,25169,36574,36575,36576,20594,16942,
-25168,36577,16226,21286,13655,25170,13674,36578,17261,14461,36579,14382,36580,
-17747,14159,25172,36581,36582,36583,36584,25171,13896,22393,36585,36586,36587,
-36588,36589,19749,36590,36591,36592,36593,36594,25176,36595,25174,19068,16181,
-21305,25173,36596,36597,36598,36599,25175,36600,36601,36602,36603,36604,36605,
-36606,36672,36673,36674,16686,16456,36675,36676,36677,36678,36679,36680,25179,
-25178,16426,36681,36682,16718,36683,36684,36685,36686,25180,36687,36688,36689,
-36690,36691,36692,36693,36694,36695,36696,36697,36698,25181,36699,25182,36700,
-36701,36702,36703,36704,36705,36706,36707,36708,23368,36709,20819,19746,36710,
-36711,15656,36712,36713,36714,24131,22565,16170,23373,21100,18042,17706,36715,
-36716,36717,24132,36718,12631,24366,36719,36720,36721,19005,36722,24369,36723,
-14637,36724,21117,36725,14373,14955,36726,36727,13146,36728,36729,36730,13660,
-21829,36731,36732,36733,36734,17238,20306,15137,36736,25971,25970,36737,36738,
-25972,36739,19812,36740,18549,36741,36742,36743,36744,36745,36746,36747,13615,
-18239,36748,25974,36749,36750,36751,27696,36752,36753,36754,36755,36756,36757,
-36758,36759,36760,36761,36762,36763,36764,36765,36766,25958,36767,14697,13617,
-36768,16956,25960,25959,25961,36769,36770,36771,36772,21069,36773,36774,36775,
-24938,20558,36776,19758,36777,20837,36778,36779,12874,12651,36780,12658,17773,
-36781,36782,21827,21296,36783,24924,36784,36785,36786,24925,36787,21083,36788,
-13113,12619,36789,36790,36791,19833,21879,24926,36792,15926,13437,36793,24927,
-14940,24928,15154,16969,24929,36794,36795,36796,20588,36797,19773,36798,36799,
-24930,36800,13635,17735,24931,36801,36802,24932,36803,36804,36805,36806,21369,
-36807,36808,36809,36810,36811,36812,24933,36813,20781,36814,36815,24934,20002,
-36816,36817,36818,36819,36820,36821,24935,36822,13634,36823,36824,36825,36826,
-24936,15189,36827,36828,36829,36830,36831,20548,25184,12632,21092,36832,36833,
-25185,36834,36835,15433,18508,36836,25187,27774,27773,24367,36837,36838,36839,
-25186,22078,19836,17190,36840,36841,36842,25411,36843,36844,22098,25191,36845,
-36846,25192,36847,36848,21319,36849,36850,25196,16236,36851,25197,25189,36852,
-36853,13120,36854,36855,36856,17518,36857,36858,25198,36859,36860,20547,36861,
-14966,25193,14174,15155,19500,19275,25188,25190,25194,25195,36862,36928,36929,
-25207,36930,36931,25204,21621,25203,36932,36933,17709,36934,21882,17730,12864,
-36935,36936,25199,36937,25202,16687,19260,36938,36939,13601,25209,36940,36941,
-36942,15409,25201,20564,21561,25205,14678,25206,36943,36944,36945,18259,36946,
-36947,36948,36949,36950,25200,36951,36952,36953,36954,36955,22364,27937,36956,
-36957,25208,36958,27941,25214,19025,36959,36960,36961,36962,36963,36964,36965,
-16693,36966,15184,36967,36968,16214,36969,14947,36970,36971,19233,36972,36973,
-36974,27942,27939,36975,36976,27938,36977,36978,36979,36980,15190,27943,20596,
-36981,36982,27940,14942,13943,25377,13874,19569,14631,36983,20258,18209,36984,
-36985,16210,36986,36987,13937,36988,25210,25211,25213,25212,17493,25378,36989,
-21313,36990,36992,36993,25383,18244,36994,36995,36996,36997,20260,36998,36999,
-25385,14903,37000,37001,37002,37003,25384,37004,15194,37005,25379,37006,37007,
-37008,25380,25386,37009,25382,37010,20082,21318,37011,37012,15164,37013,37014,
-21571,37015,17530,37016,37017,27944,20604,25381,37018,17269,37019,25389,12591,
-37020,25394,37021,37022,37023,15426,37024,37025,25388,13631,37026,37027,37028,
-37029,37030,37031,37032,37033,18281,25392,37034,37035,37036,15914,19823,37037,
-37038,37039,37040,37041,15219,37042,37043,37044,19560,37045,37046,25391,37047,
-25393,37048,20263,25390,37049,20009,15197,37050,37051,37052,37053,37054,13675,
-15973,12882,13133,37055,12601,25387,12881,13612,14687,13928,37056,37057,20331,
-25399,37058,15180,37059,37060,18503,20554,37061,37062,37063,37064,37065,25400,
-13166,37066,37067,37068,37069,27945,37070,21370,21348,37071,37072,37073,27946,
-25401,21090,37074,37075,37076,37077,37078,25397,37079,37080,37081,37082,21342,
-37083,37084,37085,37086,14416,25395,37087,37088,25398,14175,37089,25396,16418,
-37090,37091,37092,25402,37093,37094,37095,37096,37097,37098,37099,37100,37101,
-37102,37103,37104,37105,37106,37107,37108,37109,37110,37111,21560,37112,37113,
-37114,37115,37116,37117,37118,37184,13384,37185,25403,37186,15173,37187,18807,
-37188,37189,18789,37190,37191,37192,17469,37193,37194,37195,37196,37197,37198,
-37199,27947,37200,37201,37202,37203,17021,37204,37205,37206,37207,15195,16174,
-37208,37209,37210,37211,37212,37213,37214,20031,37215,37216,37217,37218,25404,
-37219,16182,37220,37221,37222,37223,37224,37225,37226,37227,37228,37229,37230,
-37231,37232,37233,37234,37235,37236,37237,37238,12655,37239,37240,21623,37241,
-37242,37243,37244,37245,25406,37246,37248,37249,37250,37251,37252,37253,37254,
-27949,37255,37256,37257,37258,37259,37260,37261,37262,37263,25407,14889,27948,
-37264,37265,25405,37266,37267,37268,37269,37270,37271,37272,37273,37274,37275,
-25408,37276,37277,37278,37279,37280,37281,14902,37282,37283,37284,13870,37285,
-37286,37287,37288,37289,20536,37290,12355,27950,37291,37292,37293,37294,37295,
-27951,16449,37296,25409,37297,37298,37299,37300,37301,37302,37303,37304,37305,
-37306,37307,37308,37309,37310,37311,37312,37313,17715,37314,37315,37316,37317,
-37318,37319,37320,37321,37322,37323,37324,37325,37326,37327,25410,37328,37329,
-37330,37331,37332,37333,37334,37335,37336,23602,37337,37338,37339,37340,37341,
-37342,27952,37343,14442,37344,20076,27175,20583,19065,18518,20279,13129,20050,
-15716,37345,37346,25438,15218,27176,21821,37347,18013,27177,37348,37349,37350,
-27178,37351,27180,27179,37352,27182,27181,37353,37354,37355,37356,15704,37357,
-27183,37358,16958,37359,37360,37361,37362,13377,13431,37363,37364,15143,37365,
-37366,37367,37368,37369,27750,27749,14143,19321,12642,37370,27751,37371,37372,
-37373,18760,27752,27753,37374,19030,24144,12869,21626,37440,37441,17995,12359,
-13426,18515,37442,37443,37444,19792,37445,37446,16184,37447,37448,37449,37450,
-37451,37452,37453,16219,37454,37455,18212,22068,37456,16425,24145,18728,20847,
-17700,12391,13110,18501,37457,37458,12386,37459,37460,14198,37461,37462,17786,
-37463,37464,13939,37465,21842,13136,15420,37466,37467,37468,13101,37469,37470,
-37471,37472,15985,12369,37473,37474,37475,37476,37477,37478,21078,19043,22309,
-37479,19766,13878,16185,21851,37480,14375,17751,37481,37482,37483,24146,16217,
-16981,18240,37484,15140,12584,37485,37486,17770,37487,37488,17787,19495,37489,
-37490,37491,37492,12583,37493,37494,37495,13654,37496,37497,37498,17448,37499,
-24147,20794,13161,37500,17266,37501,37502,14199,37504,22132,13603,12912,17460,
-17513,16429,24148,37505,12392,17732,16736,37506,14677,37507,15964,19800,12366,
-37508,19791,24150,15952,22334,24149,21840,12381,37509,37510,17506,37511,37512,
-16931,15472,37513,21301,16441,17697,12838,21617,37514,37515,16424,19011,24151,
-21884,37516,14640,37517,18477,19241,37518,24153,16189,37519,37520,37521,37522,
-17972,22311,18992,17475,37523,13142,14674,37524,37525,37526,37527,22072,27260,
-12340,37528,37529,37530,37531,16230,37532,37533,19572,37534,37535,37536,37537,
-19802,37538,37539,37540,22079,16974,37541,20046,19490,20526,17491,13618,24152,
-21877,15415,15187,37542,37543,12324,37544,17714,13420,37545,37546,37547,21873,
-37548,37549,27261,37550,37551,37552,37553,37554,37555,24154,19750,37556,37557,
-19820,37558,37559,37560,37561,20070,24156,37562,19761,16422,37563,37564,22333,
-37565,24155,12358,14900,18771,17523,15976,37566,37567,37568,37569,12854,37570,
-37571,37572,37573,37574,37575,37576,37577,16460,19312,37578,15473,15163,13623,
-37579,37580,37581,17781,37582,24166,37583,37584,37585,24163,15965,37586,37587,
-24159,37588,37589,37590,37591,13367,15709,37592,37593,24160,17517,37594,37595,
-37596,37597,20294,37598,13664,37599,37600,37601,37602,13918,19034,13684,24165,
-37603,21830,37604,24161,19533,18046,37605,17733,37606,37607,37608,21044,37609,
-15986,37610,37611,37612,37613,37614,37615,37616,16979,37617,19517,13112,37618,
-15699,37619,16216,19782,20826,13419,37620,24164,24157,24167,37621,27262,37622,
-37623,16944,24162,37624,37625,22080,13607,37626,12916,37627,24168,37628,24178,
-37629,37630,37696,37697,37698,24173,37699,24177,37700,37701,18528,37702,37703,
-37704,22369,24175,17256,19553,37705,12901,37706,37707,37708,21054,37709,37710,
-37711,37712,37713,37714,37715,24174,37716,24171,20053,37717,13351,37718,37719,
-37720,37721,37722,16171,15934,37723,37724,15698,37725,37726,37727,37728,24169,
-37729,21550,37730,24158,37731,24170,37732,37733,37734,37735,16447,37736,24172,
-12915,14441,16935,37737,37738,15681,37739,37740,37741,37742,37743,24181,24184,
-37744,37745,12843,13348,37746,37747,13418,18726,37748,37749,37750,37751,37752,
-37753,24182,19281,37754,14435,37755,24183,24186,37756,37757,37758,37760,24185,
-37761,37762,37763,19522,37764,12385,13422,37765,37766,37767,37768,37769,37770,
-25914,37771,37772,37773,37774,37775,20527,37776,37777,12907,37778,27425,37779,
-24180,37780,37781,18787,24179,12378,21025,12663,37782,19503,37783,37784,37785,
-37786,37787,37788,37789,24176,37790,19236,37791,37792,37793,21802,37794,37795,
-37796,37797,37798,24187,37799,37800,37801,37802,37803,37804,37805,37806,13405,
-37807,17446,37808,37809,37810,24189,37811,37812,37813,37814,37815,37816,37817,
-37818,37819,37820,17278,17441,24353,37821,37822,37823,37824,37825,37826,37827,
-16716,37828,24188,15983,37829,17970,37830,37831,37832,37833,37834,37835,37836,
-37837,37838,13125,18550,37839,37840,19258,24190,37841,37842,24356,37843,37844,
-37845,37846,22322,37847,37848,37849,37850,37851,13111,37852,37853,37854,37855,
-16707,37856,37857,18251,12837,13417,37858,22315,37859,37860,37861,37862,17516,
-37863,24354,24355,37864,24357,37865,14899,37866,37867,37868,24358,37869,16478,
-37870,37871,18755,37872,37873,37874,37875,37876,37877,37878,12889,18278,37879,
-24359,37880,18268,37881,37882,37883,37884,24360,27426,37885,37886,37952,37953,
-37954,19283,37955,37956,37957,24362,37958,24361,37959,12865,37960,37961,37962,
-37963,37964,37965,37966,37967,37968,37969,37970,37971,37972,37973,37974,37975,
-37976,37977,37978,37979,37980,37981,37982,37983,37984,17738,37985,37986,37987,
-37988,37989,37990,37991,37992,24363,37993,37994,37995,37996,37997,37998,37999,
-38000,21596,38001,38002,38003,38004,38005,18497,38006,38007,38008,38009,38010,
-38011,38012,38013,38014,38016,38017,38018,24364,38019,38020,38021,38022,38023,
-15984,38024,38025,24365,22055,38026,38027,38028,38029,27191,27446,19029,38030,
-22652,14404,38031,14629,38032,38033,14149,21886,38034,38035,38036,38037,38038,
-14666,38039,38040,20519,29773,38041,38042,13648,38043,38044,17268,38045,15944,
-38046,38047,38048,27447,12349,38049,38050,15692,38051,16690,38052,12630,13096,
-38053,38054,38055,14418,18722,38056,38057,13912,38058,38059,38060,38061,27448,
-15924,38062,38063,38064,19069,38065,18243,38066,21883,38067,38068,14195,38069,
-38070,38071,38072,38073,38074,38075,38076,38077,38078,38079,38080,38081,38082,
-38083,20036,38084,38085,38086,21803,12659,38087,38088,38089,27699,12383,38090,
-27701,38091,38092,38093,13879,38094,16719,38095,30074,20529,38096,38097,21861,
-38098,20051,38099,38100,15727,13154,38101,14379,38102,21814,38103,27965,38104,
-13903,38105,19257,20546,38106,38107,38108,38109,38110,38111,38112,38113,14141,
-38114,38115,27702,18985,38116,38117,38118,17748,38119,27705,27704,16963,27703,
-38120,38121,38122,38123,20605,27706,38124,27707,22373,38125,38126,27708,38127,
-38128,38129,27709,18028,38130,38131,38132,38133,38134,38135,38136,38137,20062,
-38138,15432,38139,38140,18517,13609,15945,22076,21607,38141,38142,20782,20593,
-27192,27193,27194,14901,38208,38209,38210,38211,18993,16245,38212,38213,19834,
-38214,38215,38216,38217,38218,27200,38219,12346,27198,38220,38221,16421,38222,
-38223,38224,27195,38225,12925,38226,17271,15208,38227,38228,38229,21079,20084,
-27199,38230,38231,38232,27196,38233,38234,38235,27203,38236,20551,21299,38237,
-38238,38239,38240,13370,38241,17217,22386,38242,38243,38244,38245,21841,38246,
-19015,38247,27205,38248,38249,27204,27207,27206,38250,38251,38252,38253,38254,
-22119,38255,20308,38256,38257,27211,38258,15182,38259,38260,38261,38262,38263,
-38264,38265,15738,18766,38266,38267,27212,38268,38269,18745,20350,27210,21582,
-27213,27215,38270,38272,19821,38273,38274,38275,38276,27209,38277,27214,38278,
-38279,20078,38280,15198,38281,13119,38282,38283,38284,38285,38286,18005,15920,
-20090,38287,38288,38289,18279,38290,15911,27216,38291,38292,22087,38293,38294,
-38295,16704,38296,38297,38298,21597,38299,27217,38300,38301,20286,38302,38303,
-38304,38305,27218,38306,38307,38308,38309,19054,38310,38311,38312,38313,17711,
-12341,38314,38315,38316,38317,38318,27220,38319,38320,38321,38322,38323,38324,
-38325,38326,38327,27219,29791,38328,38329,38330,38331,38332,17466,38333,38334,
-38335,38336,38337,12585,38338,38339,38340,38341,25951,38342,38343,38344,38345,
-27221,38346,38347,38348,38349,38350,38351,38352,38353,38354,38355,38356,38357,
-38358,38359,38360,38361,38362,38363,38364,38365,38366,38367,38368,38369,38370,
-38371,19055,38372,27222,27223,18008,38373,38374,38375,38376,38377,38378,38379,
-38380,27224,38381,38382,27225,38383,38384,38385,38386,38387,38388,21563,38389,
-18298,21047,14460,38390,38391,27202,38392,12892,38393,38394,17020,38395,21624,
-19558,22382,38396,38397,38398,38464,38465,38466,38467,21570,21328,27459,17779,
-38468,14206,38469,38470,27476,38471,38472,38473,19255,27486,38474,16458,38475,
-38476,38477,19835,38478,13103,38479,18010,38480,38481,38482,38483,38484,38485,
-27516,38486,17470,38487,20020,17449,12606,21629,38488,19061,38489,22124,38490,
-38491,18003,13924,38492,38493,38494,38495,15226,38496,38497,20576,38498,38499,
-18737,38500,21587,18472,38501,38502,14411,38503,26686,18748,38504,38505,26683,
-38506,16494,20563,12868,13413,38507,26684,38508,38509,21832,38510,38511,38512,
-38513,38514,13893,38515,26685,19064,14428,19573,38516,38517,38518,16436,38519,
-38520,20846,26687,26690,38521,38522,14908,38523,12589,15708,38524,27197,26691,
-38525,26694,38526,26699,38528,38529,38530,38531,26700,38532,19273,12389,38533,
-15403,38534,38535,14649,38536,38537,26689,38538,19831,38539,26698,38540,38541,
-38542,38543,20086,38544,38545,38546,38547,21869,38548,16726,26692,38549,17206,
-38550,14715,22054,26696,38551,38552,38553,19040,21606,38554,26688,38555,26693,
-26695,38556,18233,14179,38557,26697,38558,16221,26706,38559,38560,26711,38561,
-26709,15452,15439,26715,38562,38563,38564,38565,38566,38567,38568,38569,26718,
-38570,26714,12666,38571,38572,38573,38574,38575,38576,38577,38578,38579,38580,
-12376,17459,14412,18018,18494,18529,38581,38582,38583,26703,26708,26710,38584,
-14705,26712,22389,38585,17531,38586,26716,38587,38588,12905,38589,38590,38591,
-26705,38592,38593,15469,38594,38595,16194,26701,22137,38596,16760,12913,38597,
-38598,38599,38600,38601,38602,38603,38604,26719,38605,19009,26713,38606,38607,
-38608,38609,21796,38610,12650,21819,26702,26704,13872,26707,38611,26717,16440,
-38612,19063,38613,19240,38614,38615,18012,16501,38616,38617,38618,38619,38620,
-26729,38621,38622,38623,20515,38624,38625,38626,38627,38628,38629,38630,26738,
-22122,38631,38632,38633,38634,38635,38636,38637,26720,26721,38638,38639,38640,
-20857,14923,14457,38641,38642,14449,21588,26735,38643,26734,26732,14704,19538,
-26726,20006,16242,38644,12344,26737,26736,38645,22336,38646,26724,38647,19753,
-18723,38648,15160,15707,26730,38649,38650,38651,38652,38653,38654,38720,38721,
-38722,38723,26722,26723,26725,13621,26727,18245,26731,26733,15664,22318,38724,
-26744,38725,38726,38727,38728,38729,38730,38731,38732,26741,38733,19760,26742,
-38734,38735,38736,38737,38738,38739,38740,38741,38742,16698,38743,26728,38744,
-17207,12400,38745,38746,38747,38748,38749,38750,38751,38752,26740,38753,38754,
-38755,26743,38756,38757,38758,14627,38759,38760,38761,38762,38763,38764,38765,
-38766,38767,38768,18770,38769,38770,38771,17230,20064,16486,38772,38773,38774,
-38775,19315,38776,19549,20533,38777,38778,19041,38779,26739,38780,38781,38782,
-38784,38785,38786,38787,38788,38789,38790,15468,38791,26745,38792,38793,38794,
-38795,38796,38797,17246,38798,18021,38799,14711,38800,38801,38802,38803,12404,
-38804,38805,22360,38806,38807,15404,38808,17775,38809,38810,38811,38812,38813,
-19524,38814,38815,26918,38816,38817,38818,38819,38820,38821,38822,38823,38824,
-38825,18733,38826,26914,16482,38827,38828,38829,16195,38830,38831,38832,26750,
-14679,38833,26747,38834,38835,38836,38837,26916,38838,38839,38840,21070,38841,
-38842,38843,38844,38845,26915,38846,22066,22325,38847,26919,38848,15671,38849,
-38850,38851,38852,38853,38854,38855,38856,38857,38858,38859,38860,26748,26749,
-38861,38862,38863,26913,38864,38865,38866,38867,38868,38869,38870,38871,19798,
-38872,38873,21036,38874,38875,38876,26930,38877,38878,38879,38880,26921,38881,
-38882,38883,13354,38884,13371,38885,38886,26923,38887,38888,38889,38890,38891,
-38892,38893,38894,38895,38896,38897,38898,38899,38900,38901,38902,38903,20520,
-38904,38905,26917,38906,38907,13182,38908,38909,26924,16483,38910,26922,38976,
-38977,26937,38978,38979,26936,38980,38981,38982,38983,26926,38984,38985,26746,
-38986,38987,26920,38988,38989,38990,38991,38992,16172,26929,26938,38993,38994,
-16933,38995,38996,38997,26927,38998,14405,38999,26925,39000,21340,26932,26933,
-26935,39001,39002,39003,26951,39004,39005,39006,39007,39008,39009,16454,26949,
-39010,39011,26928,39012,39013,26939,12401,39014,39015,39016,39017,39018,39019,
-39020,39021,39022,39023,26940,21797,39024,39025,26942,39026,26943,39027,39028,
-39029,26945,39030,39031,16753,39032,39033,18486,39034,39035,39036,26941,39037,
-39038,39040,39041,39042,26946,39043,39044,39045,39046,39047,39048,39049,39050,
-26947,39051,26931,39052,26934,39053,15153,39054,39055,39056,26944,39057,39058,
-39059,39060,39061,39062,15479,39063,39064,39065,26948,26950,39066,39067,39068,
-39069,39070,39071,39072,39073,39074,39075,39076,39077,26954,39078,39079,39080,
-39081,26958,39082,39083,39084,39085,39086,39087,39088,39089,39090,39091,12891,
-39092,26952,39093,39094,39095,39096,39097,39098,39099,39100,39101,39102,14126,
-39103,39104,39105,39106,39107,39108,39109,39110,39111,39112,39113,39114,26955,
-26956,39115,39116,39117,39118,39119,39120,21825,39121,17443,39122,39123,39124,
-39125,39126,39127,26968,39128,14945,39129,39130,39131,39132,26953,39133,21283,
-39134,39135,39136,26964,39137,39138,39139,39140,39141,39142,39143,26967,26960,
-39144,39145,39146,39147,39148,26959,39149,39150,18241,39151,39152,39153,39154,
-39155,39156,39157,39158,26962,39159,39160,39161,39162,39163,39164,39165,26969,
-13128,39166,26963,39232,39233,39234,39235,39236,20336,39237,39238,39239,26957,
-39240,39241,39242,39243,39244,39245,39246,39247,39248,39249,39250,13175,39251,
-39252,39253,39254,39255,39256,39257,26966,39258,39259,26970,39260,39261,39262,
-19508,39263,39264,39265,20269,39266,39267,39268,39269,39270,39271,39272,39273,
-39274,26965,39275,26972,26971,39276,39277,39278,39279,39280,26974,39281,39282,
-39283,39284,39285,39286,39287,39288,26961,39289,39290,39291,39292,39293,39294,
-39296,39297,26973,39298,26975,17226,39299,39300,39301,39302,39303,39304,39305,
-39306,39307,39308,39309,39310,39311,39312,39313,39314,39315,39316,39317,39318,
-39319,39320,39321,39322,39323,39324,39325,39326,39327,39328,39329,39330,39331,
-39332,39333,39334,39335,39336,39337,39338,39339,39340,39341,39342,39343,39344,
-39345,39346,39347,39348,39349,39350,39351,39352,39353,39354,39355,39356,39357,
-39358,39359,39360,39361,39362,39363,39364,39365,39366,39367,39368,39369,39370,
-39371,39372,39373,39374,39375,39376,39377,39378,39379,39380,39381,39382,39383,
-39384,39385,39386,39387,39388,39389,39390,39391,39392,39393,39394,39395,39396,
-39397,39398,39399,39400,39401,39402,39403,39404,39405,39406,39407,39408,39409,
-39410,39411,39412,39413,18231,13390,15158,20544,27683,39414,39415,17719,39416,
-39417,39418,39419,39420,39421,39422,39488,39489,39490,21371,39491,39492,39493,
-39494,27684,39495,27685,18011,39496,39497,39498,16238,39499,39500,39501,39502,
-27686,39503,39504,27687,20522,39505,18232,39506,39507,14440,39508,39509,39510,
-39511,39512,39513,39514,39515,39516,39517,39518,39519,27688,39520,39521,39522,
-39523,39524,39525,39526,39527,22073,21885,13387,12861,20068,18023,39528,39529,
-19809,39530,39531,39532,39533,39534,39535,39536,39537,39538,39539,39540,39541,
-39542,39543,13429,39544,19264,15455,39545,39546,39547,39548,26978,26979,20842,
-26981,39549,13433,26980,39550,20787,19042,12880,39552,26984,39553,39554,39555,
-39556,26982,26983,39557,39558,22067,39559,39560,39561,26985,26986,39562,39563,
-39564,39565,39566,26987,39567,39568,39569,39570,39571,39572,39573,39574,26988,
-39575,39576,39577,39578,39579,39580,39581,39582,27695,17721,13902,39583,21107,
-39584,39585,39586,39587,39588,39589,39590,13678,39591,15193,27697,39592,39593,
-21091,39594,39595,39596,39597,39598,20067,39599,17464,39600,17215,39601,39602,
-13886,22585,12616,12623,12625,17790,39603,12624,39604,17195,39605,39606,39607,
-39608,39609,21809,39610,39611,39612,39613,39614,39615,39616,39617,27428,14913,
-39618,39619,39620,19514,39621,39622,39623,27429,39624,27431,39625,39626,39627,
-27432,39628,39629,39630,27430,39631,39632,39633,39634,39635,39636,39637,27433,
-27435,27434,39638,39639,39640,39641,39642,27436,39643,19023,22581,17265,39644,
-17189,18040,27437,17482,39645,27438,27439,27440,14165,39646,39647,39648,14202,
-39649,27441,18274,39650,27443,39651,14884,20853,12337,27442,27444,39652,39653,
-39654,13610,16968,18280,39655,27445,39656,19246,25439,39657,39658,21312,39659,
-39660,39661,39662,22875,39663,39664,19745,22061,18291,39665,39666,39667,22880,
-15203,39668,14906,25442,39669,39670,39671,39672,39673,20267,39674,39675,39676,
-25440,18759,39677,14905,39678,39744,39745,20788,25441,18538,14639,15661,13144,
-20059,39746,39747,19520,39748,39749,39750,25448,25449,19828,39751,39752,39753,
-39754,39755,19501,39756,15411,39757,25450,39758,25451,39759,39760,20570,39761,
-39762,39763,18043,14170,39764,39765,18271,21066,20054,39766,25444,25452,39767,
-18802,13121,39768,39769,25447,39770,39771,18019,25445,39772,39773,27955,25446,
-39774,39775,39776,39777,18739,39778,17766,39779,39780,39781,14645,39782,17211,
-39783,25443,17725,16676,16985,12887,39784,25453,15142,17453,39785,25456,15962,
-39786,39787,25467,25461,14931,39788,39789,39790,39791,14160,21325,39792,22094,
-21843,14657,21812,20824,39793,39794,39795,39796,20537,18294,39797,39798,39799,
-18474,12852,39800,17242,39801,39802,39803,25454,39804,39805,25468,25455,14120,
-25463,25460,39806,39808,39809,14138,39810,39811,17698,39812,25462,17757,12840,
-18044,39813,17504,39814,39815,22306,39816,16481,25465,39817,39818,25466,25469,
-19497,25459,39819,21310,39820,12611,27956,25457,25458,39821,25464,20538,17987,
-21619,25470,39822,39823,15712,39824,39825,25639,39826,39827,25638,39828,39829,
-39830,20851,25635,39831,25641,39832,39833,39834,18551,39835,39836,39837,39838,
-20276,39839,25640,25646,16997,39840,39841,13876,39842,39843,39844,39845,39846,
-39847,15730,39848,25634,39849,39850,14953,25642,39851,39852,25644,39853,39854,
-13949,22110,25650,39855,25645,39856,39857,39858,25633,39859,15214,19805,18210,
-17737,39860,39861,16759,39862,25636,39863,18227,15660,15677,25637,39864,22343,
-12898,39865,25643,15427,25647,39866,15211,25648,17704,25649,39867,39868,39869,
-39870,21859,16163,39871,25658,39872,25655,39873,25659,39874,39875,25661,39876,
-39877,18006,39878,39879,14918,16459,39880,39881,39882,14369,25652,39883,39884,
-39885,39886,21537,39887,39888,14883,15742,39889,39890,39891,25660,39892,39893,
-39894,39895,39896,19775,39897,39898,17529,39899,39900,20347,18790,39901,39902,
-21311,39903,20305,39904,39905,25651,39906,25656,25657,19561,39907,39908,39909,
-39910,39911,19534,39912,16468,25653,16688,25654,20048,39913,15169,13651,39914,
-18547,15655,21831,18732,14370,25674,39915,39916,25676,20804,39917,39918,21050,
-39919,39920,14893,39921,39922,14932,39923,39924,39925,39926,39927,39928,25667,
-13677,39929,39930,39931,22349,25664,20349,25663,39932,39933,39934,16732,19530,
-40000,40001,40002,40003,19047,40004,40005,40006,40007,17495,40008,19540,25672,
-40009,40010,40011,25671,25665,40012,25668,13613,40013,40014,21337,40015,25670,
-40016,40017,40018,40019,21113,13411,40020,15156,40021,40022,18798,40023,13374,
-40024,40025,40026,15212,40027,20813,40028,19565,27957,40029,40030,40031,40032,
-40033,40034,40035,40036,18277,40037,40038,40039,40040,21544,40041,25675,22357,
-25666,40042,15653,25669,40043,40044,21350,40045,25673,18808,40046,40047,25662,
-40048,40049,21349,40050,40051,18302,13897,40052,21628,12851,25687,40053,40054,
-40055,20034,40056,25677,40057,20028,40058,14427,40059,40060,25686,40061,16202,
-40062,40064,40065,21326,40066,17260,40067,40068,40069,40070,40071,40072,40073,
-40074,17736,25688,40075,40076,40077,40078,40079,40080,40081,40082,19780,25679,
-40083,40084,40085,40086,25684,25685,40087,14974,40088,20326,40089,40090,21823,
-40091,40092,40093,25682,40094,40095,40096,40097,40098,40099,40100,40101,40102,
-40103,40104,25680,40105,40106,25678,40107,40108,40109,40110,40111,40112,40113,
-40114,40115,40116,40117,40118,40119,40120,40121,19813,18986,40122,40123,40124,
-16419,40125,15654,25683,40126,40127,14408,40128,40129,40130,40131,40132,25703,
-21556,40133,40134,40135,40136,40137,40138,40139,25691,40140,40141,40142,16751,
-40143,40144,25705,40145,40146,21095,40147,40148,25695,40149,25696,40150,40151,
-20266,40152,40153,40154,40155,19293,40156,25690,25681,40157,25701,40158,18524,
-25699,40159,40160,17511,25698,40161,25697,40162,40163,40164,13180,25704,40165,
-40166,40167,40168,13665,40169,40170,40171,22348,40172,40173,40174,25702,40175,
-15148,40176,22354,19535,27512,40177,25700,40178,40179,14710,40180,40181,40182,
-22093,25689,25692,17018,25694,40183,16971,16452,16976,40184,12661,19506,40185,
-40186,40187,40188,40189,40190,40256,40257,40258,40259,13646,40260,40261,40262,
-40263,25711,40264,40265,40266,40267,40268,40269,40270,40271,17967,40272,40273,
-40274,18017,40275,40276,25717,40277,40278,40279,40280,40281,16937,40282,40283,
-40284,16492,20829,25710,40285,40286,40287,40288,40289,40290,40291,40292,40293,
-40294,17454,40295,40296,40297,25709,40298,40299,40300,40301,25718,25716,17022,
-40302,25693,40303,25712,40304,19070,40305,21828,40306,40307,25713,40308,40309,
-40310,40311,40312,40313,40314,20858,40315,40316,40317,40318,40320,40321,40322,
-25707,25708,40323,40324,40325,25714,40326,20011,40327,40328,40329,40330,40331,
-40332,40333,40334,40335,40336,17739,40337,40338,40339,18225,40340,16954,40341,
-40342,40343,25706,40344,40345,40346,16714,40347,40348,40349,40350,40351,40352,
-19510,13105,40353,40354,40355,25723,40356,25715,40357,40358,40359,25722,40360,
-25725,40361,25724,40362,40363,40364,40365,40366,40367,40368,13134,40369,40370,
-40371,13114,25719,40372,40373,25721,25720,17772,40374,40375,40376,40377,40378,
-40379,40380,40381,40382,40383,40384,40385,40386,16445,40387,40388,40389,40390,
-21608,40391,40392,40393,40394,40395,25890,40396,40397,40398,40399,40400,40401,
-40402,40403,40404,40405,40406,12356,40407,40408,25892,40409,40410,25891,40411,
-40412,40413,40414,40415,40416,15396,40417,25893,40418,40419,40420,40421,40422,
-40423,25889,40424,40425,40426,40427,40428,40429,40430,25726,12660,40431,40432,
-40433,40434,40435,40436,40437,40438,40439,40440,40441,25896,40442,25897,25894,
-40443,40444,40445,40446,40512,40513,40514,40515,40516,40517,40518,40519,25895,
-25898,40520,40521,40522,40523,40524,40525,40526,40527,40528,40529,40530,40531,
-40532,40533,40534,40535,40536,40537,40538,40539,40540,40541,40542,40543,40544,
-40545,40546,40547,40548,40549,40550,40551,40552,18009,40553,40554,40555,40556,
-40557,40558,40559,40560,25899,25901,40561,40562,40563,40564,40565,40566,40567,
-25900,40568,40569,40570,40571,40572,40573,40574,40576,40577,40578,40579,40580,
-40581,40582,40583,40584,40585,25903,40586,40587,40588,25902,40589,40590,40591,
-40592,40593,40594,40595,40596,40597,40598,40599,40600,40601,40602,40603,40604,
-40605,40606,14688,40607,40608,25904,40609,40610,40611,40612,40613,40614,40615,
-40616,40617,40618,40619,40620,40621,40622,25905,40623,40624,40625,40626,40627,
-40628,40629,40630,40631,40632,40633,40634,15216,27745,17264,40635,13638,15186,
-40636,40637,40638,40639,16745,21614,40640,15940,40641,40642,40643,22342,40644,
-21590,12883,27710,40645,40646,40647,40648,27201,40649,40650,40651,16943,13366,
-40652,40653,40654,20823,40655,40656,40657,13108,40658,18482,16187,27712,40659,
-40660,22091,40661,40662,27711,27713,40663,40664,40665,40666,40667,40668,40669,
-40670,40671,40672,40673,40674,40675,27717,15974,19519,17754,15932,40676,27718,
-40677,12670,40678,40679,40680,27716,21800,13667,40681,27714,16694,13155,40682,
-40683,27715,19256,16451,19582,40684,40685,40686,40687,16722,40688,27720,40689,
-40690,40691,40692,40693,40694,40695,40696,40697,40698,40699,40700,40701,14950,
-16467,40702,22130,40768,40769,40770,20812,40771,40772,40773,40774,16190,40775,
-14131,18773,27719,15202,40776,19532,15741,18504,40777,20265,40778,40779,40780,
-40781,40782,40783,40784,19817,40785,17771,40786,40787,40788,14185,40789,40790,
-40791,40792,40793,40794,40795,40796,40797,40798,40799,20809,14904,40800,40801,
-40802,40803,40804,27721,40805,40806,27722,40807,15168,27723,40808,27746,12602,
-14169,40809,40810,40811,40812,40813,40814,40815,40816,40817,40818,40819,15673,
-40820,40821,40822,40823,40824,40825,40826,40827,27724,20838,27725,40828,40829,
-40830,40832,18491,40833,40834,40835,40836,40837,40838,40839,40840,40841,40842,
-40843,40844,40845,40846,27729,40847,40848,40849,40850,27731,40851,15181,40852,
-15461,40853,40854,40855,40856,40857,40858,40859,40860,40861,40862,40863,40864,
-40865,27727,40866,18743,40867,40868,40869,40870,40871,17210,40872,27747,21845,
-27728,40873,40874,40875,40876,40877,22131,40878,40879,40880,27730,27726,40881,
-40882,40883,40884,27732,40885,27733,40886,40887,18751,40888,40889,40890,40891,
-40892,40893,20264,40894,40895,40896,40897,40898,20572,40899,40900,40901,40902,
-20780,40903,40904,40905,40906,18523,40907,40908,40909,27734,20085,40910,40911,
-40912,40913,40914,19052,27738,40915,40916,40917,40918,40919,40920,40921,27737,
-40922,40923,40924,12350,40925,40926,40927,40928,40929,40930,27735,40931,27736,
-40932,40933,40934,27748,40935,40936,40937,40938,40939,40940,40941,40942,40943,
-18492,40944,40945,40946,40947,40948,40949,40950,40951,40952,40953,16711,40954,
-40955,40956,40957,40958,27740,20832,41024,41025,41026,41027,41028,41029,41030,
-41031,41032,41033,27739,41034,41035,41036,41037,21615,41038,27741,41039,41040,
-41041,41042,41043,41044,23366,41045,41046,41047,41048,41049,41050,41051,41052,
-41053,41054,27742,41055,41056,41057,41058,41059,41060,41061,41062,41063,41064,
-41065,41066,12588,41067,41068,41069,41070,41071,41072,41073,41074,41075,41076,
-41077,41078,41079,41080,41081,41082,41083,41084,41085,41086,41088,41089,27743,
-41090,41091,41092,41093,41094,41095,41096,41097,41098,41099,27744,41100,22310,
-41101,17728,41102,41103,41104,27452,12334,41105,41106,41107,15988,14392,21039,
-12374,13689,41108,22579,41109,19244,41110,25437,41111,41112,41113,41114,41115,
-41116,41117,17964,12390,41118,41119,41120,17734,27449,41121,41122,41123,41124,
-27450,41125,41126,41127,27451,41128,41129,20800,41130,17699,41131,27250,41132,
-17458,41133,17461,16462,41134,41135,41136,27251,17473,41137,20079,41138,41139,
-41140,41141,27248,27252,41142,41143,18812,41144,41145,18211,41146,41147,41148,
-19544,20094,41149,41150,41151,27253,27254,20268,16487,41152,41153,27255,41154,
-41155,41156,41157,41158,13887,27256,41159,27257,41160,27258,41161,41162,27259,
-41163,41164,41165,41166,41167,41168,41169,41170,41171,41172,41173,41174,27249,
-41175,41176,41177,41178,41179,41180,41181,41182,41183,41184,41185,41186,18478,
-24939,41187,14136,24940,41188,41189,41190,24941,41191,22324,24942,24943,21324,
-41192,41193,41194,41195,41196,41197,41198,24945,16241,24944,13650,41199,41200,
-41201,12599,41202,41203,41204,41205,24947,24946,41206,14972,41207,24948,41208,
-41209,41210,41211,14647,41212,15953,41213,41214,43584,43585,17532,43586,14941,
-15686,43587,43588,43589,43590,43591,43592,24949,24951,43593,43594,13888,20289,
-18984,24950,21880,21372,24952,24956,24953,43595,43596,24954,16490,43597,24958,
-25121,16455,43598,43599,43600,43601,24955,43602,24957,43603,43604,43605,43606,
-43607,43608,25125,43609,43610,43611,16724,43612,43613,43614,43615,25123,43616,
-25128,12926,25122,43617,43618,43619,17229,12866,25127,25126,43620,43621,25124,
-25129,43622,43623,25131,43624,43625,43626,20553,22125,17192,25132,43627,20311,
-43628,43629,25134,43630,43631,14959,43632,43633,26976,25133,25130,43634,43635,
-43636,43637,15147,21555,43638,43639,43640,43641,43642,43643,43644,43645,43646,
-43648,43649,43650,43651,25136,43652,43653,25135,43654,26977,43655,43656,43657,
-43658,25137,43659,43660,43661,43662,43663,43664,43665,43666,25138,43667,43668,
-43669,43670,43671,43672,43673,43674,43675,43676,43677,25139,19489,43678,25140,
-43679,43680,43840,43841,43842,43843,43844,43845,43846,43847,43848,43849,43850,
-43851,25141,43852,43853,43854,43855,43856,20606,43857,43858,16970,43859,21361,
-43860,19829,43861,43862,26464,43863,43864,26465,43865,43866,43867,43868,15937,
-43869,43870,43871,43872,17002,43873,43874,43875,26468,43876,43877,26467,43878,
-43879,43880,43881,43882,43883,19814,43884,17205,43885,43886,26466,15159,20310,
-43887,16737,26473,43888,43889,43890,26472,43891,43892,26484,12835,43893,43894,
-43895,43896,26474,43897,26470,43898,43899,43900,43901,43902,26476,26475,18746,
-43904,43905,21860,43906,26469,14121,26471,43907,43908,43909,43910,43911,43912,
-43913,26478,43914,43915,43916,43917,26483,43918,22121,43919,43920,43921,43922,
-26477,43923,26482,43924,26481,43925,43926,43927,12384,43928,43929,43930,43931,
-26485,43932,43933,43934,43935,43936,44096,44097,44098,44099,44100,44101,44102,
-44103,44104,44105,44106,18290,44107,16453,16493,44108,44109,16752,26480,44110,
-44111,44112,44113,26486,19318,44114,44115,44116,44117,44118,44119,44120,44121,
-44122,26658,26657,44123,44124,44125,44126,44127,44128,22337,44129,44130,26490,
-26489,44131,26491,44132,26487,44133,26494,44134,26493,44135,26492,44136,44137,
-16725,18265,17789,17731,44138,44139,44140,44141,44142,18285,44143,44144,44145,
-44146,26659,44147,44148,44149,44150,44151,44152,44153,44154,44155,44156,44157,
-44158,44160,44161,44162,44163,44164,44165,44166,26662,44167,26661,44168,26663,
-14967,26488,26660,44169,18544,18730,44170,44171,44172,44173,44174,44175,44176,
-44177,44178,44179,44180,44181,44182,26665,44183,44184,14693,44185,44186,44187,
-44188,44189,20862,26664,44190,44191,44192,44352,44353,44354,26666,44355,26669,
-26670,44356,16679,44357,44358,44359,26671,44360,44361,44362,26672,44363,44364,
-26668,44365,26676,44366,44367,44368,44369,44370,44371,44372,44373,44374,44375,
-44376,26667,44377,26673,44378,44379,44380,44381,44382,44383,44384,44385,26677,
-26674,26675,44386,44387,44388,44389,44390,44391,44392,44393,44394,44395,44396,
-44397,44398,44399,44400,44401,26679,44402,44403,44404,44405,44406,44407,44408,
-44409,44410,44411,44412,44413,44414,44416,44417,44418,44419,44420,44421,44422,
-44423,44424,44425,26678,44426,44427,44428,44429,44430,44431,44432,44433,44434,
-14671,44435,28716,44436,28717,44437,17968,12394,18495,44438,19807,44439,44440,
-44441,44442,44443,44444,44445,20045,27185,44446,44447,44448,44608,27186,44609,
-17983,13385,44610,44611,44612,44613,44614,44615,44616,27187,44617,44618,44619,
-44620,21863,44621,44622,44623,44624,44625,44626,44627,44628,23929,44629,27188,
-44630,27189,44631,27190,44632,44633,44634,44635,14410,24368,18805,44636,19568,
-44637,44638,18810,44639,44640,44641,44642,44643,18811,44644,44645,21315,19238,
-44646,14374,28718,12610,44647,25912,19567,21321,15447,18794,44648,13671,44649,
-17488,13673,44650,28206,15149,44651,44652,26462,44653,28207,44654,44655,44656,
-44657,13097,44658,44659,28210,44660,44661,28209,15719,44662,28208,20023,44663,
-44664,44665,44666,17743,44667,44668,44669,44670,16756,23374,28211,20595,44672,
-44673,44674,44675,44676,44677,44678,44679,16980,18024,44680,44681,44682,14124,
-44683,44684,44685,44686,44687,44688,44689,28212,44690,13163,44691,44692,44693,
-15227,28213,44694,44695,44696,44697,44698,26460,44699,44700,44701,28214,44702,
-44703,15662,44704,44864,44865,44866,29026,44867,44868,44869,19048,44870,21065,
-28762,44871,28763,44872,28764,16710,44873,14445,15950,44874,44875,28766,44876,
-17713,28765,20849,44877,28768,12364,15722,44878,44879,44880,44881,44882,21087,
-28767,44883,13359,14184,28774,28773,17955,28769,28770,13379,44884,44885,28771,
-21870,44886,44887,19547,15954,15410,44888,44889,44890,28776,28775,28772,12833,
-44891,22050,21304,15927,18476,44892,44893,28778,44894,44895,44896,44897,20855,
-44898,22092,14939,28777,44899,13883,44900,44901,19764,44902,44903,17958,44904,
-44905,44906,16673,28779,28782,44907,28781,28784,28780,44908,15166,28783,44909,
-44910,44911,44912,19509,28786,44913,44914,13141,44915,44916,44917,44918,12628,
-44919,44920,28787,44921,44922,28788,28790,13409,44923,28785,44924,28791,44925,
-44926,44928,44929,28794,44930,28792,44931,44932,44933,28789,44934,44935,44936,
-44937,28797,44938,28793,28796,28798,44939,28961,44940,44941,44942,20033,28964,
-44943,28963,44944,16758,28795,19037,44945,44946,13425,12657,19505,44947,28966,
-44948,44949,28967,44950,44951,28972,21838,28969,44952,44953,18483,44954,44955,
-44956,28962,44957,28971,28968,28965,44958,44959,28970,44960,45120,45121,45122,
-45123,45124,45125,45126,12329,28973,45127,45128,45129,45130,45131,45132,28975,
-45133,28977,45134,45135,45136,45137,45138,28976,45139,28974,45140,45141,45142,
-45143,20770,45144,45145,45146,45147,45148,45149,45150,28978,45151,45152,45153,
-28979,45154,45155,45156,45157,45158,45159,45160,45161,14703,45162,45163,13639,
-45164,12375,12377,45165,45166,45167,21613,45168,13636,45169,15700,15178,28711,
-45170,45171,14430,45172,45173,28712,45174,45175,12328,45176,28713,45177,45178,
-19822,45179,45180,28714,45181,45182,45184,45185,45186,45187,45188,45189,45190,
-45191,28715,45192,45193,45194,45195,45196,45197,45198,45199,45200,17956,45201,
-45202,22117,29028,45203,29029,45204,45205,45206,45207,45208,45209,45210,45211,
-45212,45213,17267,45214,45215,21339,45216,45376,22097,17768,45377,21295,45378,
-21094,45379,45380,28225,12347,21813,20814,15456,14928,45381,16248,45382,14407,
-13633,17740,45383,45384,18978,45385,45386,45387,17227,45388,45389,45390,45391,
-45392,28226,45393,45394,45395,45396,45397,45398,45399,45400,17471,13858,45401,
-28012,17188,45402,22065,45403,45404,45405,20320,28015,45406,45407,17742,45408,
-13916,45409,45410,18977,45411,45412,28013,45413,45414,28016,28017,17212,45415,
-16180,45416,28014,45417,45418,45419,45420,45421,45422,45423,45424,45425,45426,
-45427,28020,28018,45428,45429,45430,45431,21862,17247,45432,28019,45433,45434,
-45435,28022,45436,21795,20771,45437,45438,45440,28021,45441,17232,45442,45443,
-45444,45445,45446,28023,16244,15980,28024,45447,19575,45448,20827,45449,45450,
-45451,22341,21878,45452,28028,45453,45454,45455,28027,45456,45457,45458,45459,
-45460,45461,45462,45463,28025,28026,45464,45465,45466,45467,45468,45469,45470,
-45471,28029,15910,45472,45632,45633,45634,45635,19247,28193,13885,45636,28194,
-17472,45637,28030,45638,45639,15710,12871,45640,45641,45642,45643,45644,45645,
-45646,45647,45648,45649,45650,45651,13891,45652,45653,45654,28197,22586,28195,
-28198,45655,45656,45657,17257,13170,45658,45659,45660,45661,45662,45663,28199,
-28196,20281,45664,45665,28200,17015,45666,45667,45668,45669,45670,45671,45672,
-45673,45674,45675,45676,45677,28201,28202,45678,24107,45679,45680,17971,45681,
-18246,45682,22133,13641,45683,19250,45684,45685,45686,28203,45687,45688,19755,
-45689,28204,45690,45691,45692,45693,45694,21808,45696,28205,45697,30276,45698,
-45699,45700,45701,45702,45703,45704,45705,45706,45707,45708,45709,45710,23367,
-45711,45712,45713,45714,45715,45716,45717,45718,45719,13347,45720,45721,45722,
-17196,29030,45723,45724,45725,45726,45727,19000,21075,45728,22058,45888,28530,
-45889,15960,45890,15683,28531,13900,12331,45891,45892,45893,45894,18991,45895,
-45896,27958,45897,27959,45898,45899,45900,45901,20089,14127,16243,27960,17003,
-18736,45902,45903,45904,45905,45906,45907,27961,45908,45909,18038,16179,45910,
-45911,45912,27964,17784,45913,20816,45914,22313,27962,27963,45915,20834,45916,
-27967,27968,45917,27972,45918,45919,45920,27976,45921,27974,27982,21864,45922,
-27977,45923,45924,27975,27966,45925,45926,17769,45927,45928,45929,17990,45930,
-45931,18793,21586,27969,27970,27971,27973,45932,16505,45933,13345,45934,45935,
-45936,45937,14696,45938,27984,45939,45940,45941,45942,27985,45943,27978,45944,
-27983,45945,20088,45946,45947,19254,27980,27981,45948,45949,45950,45952,45953,
-20341,45954,45955,45956,45957,45958,45959,45960,45961,45962,45963,45964,45965,
-27986,16754,21298,27979,18487,45966,45967,45968,45969,45970,45971,45972,45973,
-15471,45974,45975,45976,45977,17776,45978,45979,45980,45981,45982,45983,45984,
-46144,46145,46146,27990,46147,13679,46148,46149,16949,12333,19305,46150,46151,
-12590,46152,27988,46153,46154,46155,19819,13666,46156,27989,27987,27991,46157,
-46158,13690,46159,27992,46160,27993,46161,27996,46162,12620,46163,46164,46165,
-46166,46167,46168,46169,46170,17782,15470,27994,19516,12906,46171,46172,46173,
-46174,27995,46175,46176,46177,46178,17515,46179,46180,13381,46181,46182,46183,
-12405,46184,46185,46186,27999,16474,13416,46187,46188,46189,46190,17741,46191,
-46192,46193,27997,16196,46194,46195,46196,27998,46197,46198,46199,46200,46201,
-46202,46203,46204,46205,46206,46208,46209,46210,46211,17445,46212,46213,46214,
-28000,46215,46216,46217,46218,46219,28001,46220,28003,46221,46222,16727,46223,
-46224,15175,46225,46226,46227,46228,46229,46230,15672,46231,46232,46233,28002,
-46234,46235,46236,46237,46238,46239,46240,46400,46401,46402,46403,46404,46405,
-28004,46406,46407,46408,46409,46410,46411,46412,46413,46414,46415,28006,46416,
-46417,46418,46419,46420,28005,46421,46422,46423,46424,46425,46426,46427,46428,
-46429,46430,46431,46432,46433,46434,46435,28007,46436,46437,46438,46439,46440,
-19006,27754,16497,46441,18791,46442,27755,18030,46443,46444,46445,46446,27756,
-46447,18029,27757,46448,46449,46450,46451,46452,46453,46454,46455,46456,27760,
-46457,46458,22374,27763,46459,46460,27761,27758,27759,22307,18801,19310,27764,
-46461,27762,46462,46464,20329,46465,27766,17969,46466,46467,46468,46469,15424,
-46470,27765,46471,46472,46473,46474,46475,46476,46477,13627,15222,46478,27767,
-46479,46480,46481,46482,46483,22903,15739,46484,46485,16955,27768,46486,46487,
-46488,46489,27769,46490,46491,46492,46493,14371,46494,46495,46496,46656,46657,
-46658,46659,46660,46661,46662,27770,46663,46664,46665,46666,46667,46668,46669,
-46670,46671,46672,46673,46674,27771,46675,46676,46677,46678,46679,46680,46681,
-46682,46683,46684,46685,27772,46686,46687,46688,46689,46690,21357,22574,16491,
-46691,18269,14924,46692,20579,19261,46693,19770,46694,46695,14417,46696,46697,
-12668,46698,18287,46699,22102,46700,46701,46702,16198,17259,46703,46704,28533,
-46705,46706,17240,46707,46708,46709,46710,46711,46712,22370,46713,46714,46715,
-28535,13139,46716,18264,20845,46717,22088,46718,28536,46720,28534,46721,15229,
-13126,46722,46723,46724,46725,46726,46727,46728,15701,46729,46730,21062,46731,
-15200,46732,46733,20257,46734,28540,28539,46735,46736,28537,46737,46738,46739,
-46740,13132,46741,18772,19248,46742,46743,46744,46745,46746,28542,46747,46748,
-12382,46749,46750,22089,46751,46752,46912,28541,46913,13165,46914,46915,30293,
-46916,46917,46918,46919,46920,46921,46922,46923,46924,46925,46926,46927,46928,
-46929,46930,20040,46931,46932,46933,28706,46934,28705,46935,13630,15450,15228,
-46936,14437,46937,46938,46939,46940,46941,46942,17474,46943,46944,46945,46946,
-46947,46948,46949,46950,46951,46952,28707,46953,46954,46955,46956,46957,19307,
-46958,46959,46960,46961,46962,46963,46964,46965,46966,46967,46968,46969,46970,
-46971,46972,46973,46974,46976,46977,46978,46979,46980,46981,46982,28710,46983,
-46984,46985,20776,46986,15935,18286,28982,28983,16213,46987,46988,46989,46990,
-13353,28984,19771,46991,18260,21805,46992,28985,46993,28986,46994,46995,46996,
-46997,18255,46998,46999,47000,21028,22095,47001,47002,28987,15697,13360,15933,
-47003,47004,47005,13404,20049,47006,16223,28989,47007,47008,47168,47169,16250,
-28988,47170,28991,47171,47172,47173,28990,28992,47174,47175,47176,47177,47178,
-28993,47179,47180,47181,47182,47183,47184,47185,47186,47187,47188,47189,16766,
-47190,47191,47192,47193,47194,47195,47196,47197,47198,47199,47200,16674,47201,
-47202,47203,47204,47205,47206,47207,47208,47209,47210,19066,47211,47212,21822,
-47213,47214,47215,47216,15930,15929,21826,47217,47218,16162,47219,19759,28981,
-47220,47221,47222,47223,47224,47225,15711,47226,13899,47227,47228,47229,47230,
-47232,47233,47234,47235,47236,22129,29507,47237,47238,29508,47239,14413,47240,
-47241,47242,29510,29511,47243,12362,47244,29509,47245,29513,19313,47246,47247,
-47248,29515,47249,20518,47250,47251,12618,29512,47252,47253,47254,29519,47255,
-13649,47256,47257,29527,47258,29522,47259,47260,47261,29524,29523,14203,47262,
-12607,47263,29518,29514,13658,47264,29520,47424,47425,29521,47426,29525,47427,
-47428,47429,47430,29517,47431,15459,47432,16765,47433,29526,47434,47435,47436,
-47437,47438,47439,29530,47440,29516,47441,13640,47442,15726,29532,47443,47444,
-14116,16240,22142,19762,47445,13424,47446,12895,47447,29528,47448,29529,18744,
-47449,29533,47450,47451,29534,47452,29537,47453,47454,47455,47456,47457,47458,
-47459,47460,47461,47462,47463,29535,47464,47465,29539,29538,47466,47467,29531,
-47468,16234,47469,13167,47470,29536,47471,47472,18217,47473,15474,47474,47475,
-47476,47477,29547,47478,47479,47480,47481,47482,47483,47484,14655,47485,47486,
-29540,47488,47489,47490,12845,15230,47491,19299,47492,47493,47494,47495,29549,
-29545,47496,47497,47498,14684,29550,47499,47500,47501,29541,29542,29546,16993,
-29548,29551,29544,15485,47502,47503,47504,20324,47505,47506,29552,47507,47508,
-47509,29543,47510,47511,47512,47513,47514,47515,47516,47517,29554,47518,47519,
-47520,47680,22317,17962,47681,47682,47683,47684,29555,47685,47686,47687,47688,
-29553,47689,16936,47690,47691,47692,47693,47694,14429,29557,47695,47696,29556,
-47697,47698,47699,13403,47700,47701,47702,29558,29559,47703,47704,47705,29560,
-47706,47707,47708,16442,47709,47710,16489,47711,47712,47713,47714,47715,17777,
-47716,47717,47718,47719,29563,47720,29562,47721,47722,47723,47724,47725,47726,
-47727,47728,13400,47729,47730,47731,29566,29561,47732,47733,29564,47734,47735,
-47736,47737,47738,47739,29565,47740,47741,47742,47744,47745,47746,47747,47748,
-29729,47749,47750,47751,47752,47753,47754,29731,15177,47755,47756,29730,47757,
-47758,47759,47760,47761,47762,47763,47764,47765,47766,47767,47768,47769,29732,
-47770,47771,47772,47773,47774,47775,12862,29734,29733,47776,47936,47937,47938,
-47939,47940,47941,47942,47943,47944,47945,15406,47946,47947,47948,47949,47950,
-47951,47952,47953,47954,47955,47956,47957,47958,47959,47960,47961,47962,47963,
-47964,47965,47966,47967,47968,47969,47970,47971,47972,47973,47974,47975,47976,
-47977,47978,47979,47980,47981,47982,17239,22881,47983,47984,47985,47986,47987,
-47988,16480,29772,22353,47989,47990,47991,47992,47993,47994,47995,47996,47997,
-47998,48000,14171,48001,48002,48003,48004,48005,48006,48007,29774,16675,48008,
-48009,17993,48010,13398,21811,48011,48012,48013,29776,29775,29777,19290,48014,
-48015,29778,48016,21569,22112,48017,48018,48019,48020,14176,48021,48022,48023,
-16696,48024,48025,16699,29779,15916,48026,48027,48028,48029,48030,13410,48031,
-48032,29780,29781,15915,48192,48193,29782,48194,48195,48196,29787,48197,29783,
-29786,48198,14973,48199,29784,29785,48200,48201,48202,48203,48204,48205,48206,
-14434,19527,29788,48207,12890,48208,48209,17235,48210,48211,21603,16183,48212,
-48213,48214,48215,48216,48217,48218,29789,48219,48220,48221,48222,48223,48224,
-17716,48225,48226,48227,48228,48229,48230,48231,48232,29801,48233,48234,20277,
-48235,48236,48237,48238,48239,48240,48241,48242,48243,48244,48245,48246,48247,
-48248,20041,48249,48250,48251,48252,48253,48254,48256,48257,48258,48259,48260,
-48261,48262,48263,48264,48265,48266,48267,48268,48269,48270,19288,48271,19319,
-48272,48273,48274,48275,15732,48276,48277,48278,22351,48279,48280,48281,16475,
-48282,48283,48284,48285,48286,48287,48288,48448,48449,48450,48451,48452,48453,
-48454,48455,48456,48457,48458,48459,48460,48461,48462,48463,48464,48465,48466,
-48467,48468,48469,48470,48471,48472,48473,48474,48475,48476,48477,48478,48479,
-48480,48481,48482,48483,48484,48485,48486,48487,48488,48489,48490,48491,48492,
-48493,48494,48495,48496,48497,48498,48499,48500,48501,48502,20597,48503,48504,
-48505,48506,48507,48508,48509,48510,29802,48512,48513,48514,48515,48516,48517,
-48518,48519,48520,48521,48522,48523,48524,48525,48526,48527,48528,48529,48530,
-48531,48532,48533,48534,48535,48536,48537,48538,48539,48540,48541,48542,48543,
-48544,48704,48705,48706,48707,48708,48709,48710,48711,48712,48713,48714,48715,
-48716,29803,48717,48718,48719,48720,48721,48722,48723,29804,48724,48725,48726,
-48727,48728,48729,48730,48731,48732,48733,48734,48735,48736,48737,48738,48739,
-48740,48741,48742,48743,48744,48745,48746,48747,48748,48749,48750,48751,48752,
-48753,48754,48755,48756,48757,48758,48759,48760,48761,48762,48763,48764,48765,
-48766,48768,48769,48770,48771,48772,48773,48774,48775,48776,48777,48778,48779,
-48780,48781,48782,48783,48784,48785,48786,48787,48788,48789,48790,48791,48792,
-48793,48794,48795,48796,48797,48798,48799,48800,48960,48961,48962,48963,48964,
-48965,48966,48967,48968,48969,48970,48971,48972,48973,48974,48975,48976,48977,
-48978,48979,48980,48981,48982,48983,48984,48985,48986,48987,48988,48989,48990,
-48991,48992,48993,48994,48995,48996,48997,48998,48999,49000,49001,49002,49003,
-49004,49005,49006,49007,49008,49009,49010,49011,49012,49013,49014,49015,49016,
-49017,49018,49019,49020,49021,49022,49024,30563,49025,49026,49027,49028,49029,
-14129,49030,49031,49032,49033,49034,29805,49035,49036,49037,49038,49039,49040,
-49041,49042,49043,49044,49045,49046,49047,49048,49049,49050,49051,49052,49053,
-49054,49055,49056,49216,49217,49218,49219,49220,49221,49222,49223,49224,49225,
-49226,49227,49228,49229,49230,49231,49232,49233,49234,49235,49236,49237,49238,
-49239,49240,49241,49242,49243,49244,49245,49246,49247,49248,49249,49250,49251,
-22379,49252,49253,49254,49255,49256,49257,49258,49259,49260,49261,49262,49263,
-49264,49265,49266,49267,49268,49269,49270,49271,49272,49273,49274,49275,29806,
-49276,49277,49278,26233,15936,26234,14956,26235,20299,26236,21564,15414,26237,
-26238,15437,18514,20019,26401,49280,13375,26402,18740,14425,17481,49281,22365,
-16986,14167,22077,20038,14148,49282,49283,17702,26403,20319,26404,26405,26406,
-16695,22377,18800,20280,22063,22101,26407,12397,26408,26409,18780,21103,15917,
-26410,12403,18526,15713,26411,18502,49284,26412,15206,14456,20772,26413,16999,
-15992,15690,19763,26414,26415,15982,20581,49285,19303,19536,15436,26416,15400,
-20599,26417,49286,20600,26418,26419,13378,26420,26421,18814,20012,17248,26423,
-12609,13169,49287,26424,26425,22363,21824,26426,16972,22330,26427,26428,26429,
-15466,17253,16450,26430,26431,15401,49288,26432,26433,26422,13904,26434,49289,
-26435,26436,15162,13662,16966,12640,26437,21557,26438,14399,26440,26439,14188,
-49290,26441,12920,26442,26443,26444,26445,26446,26447,26448,21287,19317,26449,
-26450,26451,26452,18761,26453,26454,26455,26456,26457,15689,26458,29502,49291,
-14423,49292,18481,49293,49294,49295,49296,49297,49298,49299,29503,49300,29504,
-29505,49301,49302,49303,49304,49305,49306,49307,49308,49309,49310,14686,19832,
-49311,49312,22632,14897,49472,16990,28215,49473,14115,49474,49475,49476,49477,
-28217,49478,28216,12373,49479,49480,49481,49482,49483,28219,21846,22383,49484,
-49485,49486,22083,49487,49488,28221,19056,49489,28220,49490,49491,49492,49493,
-28222,49494,49495,49496,49497,28224,49498,49499,28223,49500,49501,49502,49503,
-49504,49505,49506,49507,20850,49508,18236,49509,17216,49510,49511,49512,49513,
-49514,14433,49515,49516,49517,49518,49519,16743,49520,49521,29766,20575,29767,
-49522,20315,49523,49524,18490,49525,49526,29768,49527,49528,49529,49530,49531,
-49532,49533,29769,29770,49534,29771,49536,49537,49538,49539,49540,22906,14462,
-49541,49542,25969,21360,49543,29792,49544,20044,49545,49546,49547,13153,49548,
-49549,49550,49551,28980,49552,21102,49553,29793,49554,49555,49556,49557,49558,
-20328,29794,49559,49560,18252,49561,49562,49563,49564,49565,49566,13652,13412,
-29796,49567,49568,49728,29795,29797,49729,49730,29798,49731,49732,49733,49734,
-29799,49735,14898,12351,49736,29800,49737,49738,49739,49740,49741,49742,49743,
-14125,21101,49744,49745,49746,21035,16463,49747,16188,27427,21855,27208,49748,
-49749,49750,49751,29043,13944,19235,49752,49753,17485,49754,29031,49755,29032,
-14459,29033,14916,21573,12370,49756,49757,29034,49758,49759,49760,29035,49761,
-29036,49762,49763,29037,29038,29039,29041,29040,17749,49764,49765,49766,49767,
-49768,49769,29042,49770,13946,49771,29044,21038,24135,19274,49772,49773,13148,
-49774,13602,49775,14626,49776,49777,17524,29045,49778,49779,29046,49780,49781,
-49782,16708,16763,22064,29047,49783,49784,49785,49786,29048,49787,16682,49788,
-49789,49790,17976,49792,15963,49793,49794,49795,49796,49797,49798,49799,49800,
-49801,49802,49803,49804,49805,49806,29049,13391,49807,49808,49809,49810,49811,
-49812,29050,49813,49814,49815,49816,49817,49818,49819,49820,49821,49822,49823,
-49824,49984,27954,27953,49985,49986,19296,21086,49987,19265,21848,49988,18530,
-49989,16479,15393,49990,49991,49992,49993,49994,49995,27457,49996,49997,20516,
-49998,22114,49999,13895,14424,27456,14414,50000,27455,13094,14665,22059,50001,
-14196,14154,50002,50003,50004,15463,14142,27462,50005,27463,12345,16207,50006,
-27461,21373,50007,27464,50008,50009,27465,50010,50011,14158,50012,27458,27460,
-18806,22103,21837,20530,27471,20024,27472,50013,13608,50014,50015,50016,50017,
-50018,12595,27474,19493,50019,50020,50021,50022,50023,50024,50025,17750,27475,
-50026,27473,17759,27470,18980,27477,12411,50027,50028,14970,50029,50030,22583,
-29027,50031,27466,27467,27468,27469,27478,26176,27481,50032,16232,21064,27479,
-27484,14444,27480,50033,15674,50034,20568,50035,12343,50036,27485,17500,50037,
-50038,50039,50040,22060,50041,50042,50043,13408,50044,50045,17014,15417,50046,
-50048,27482,27483,21600,18026,17492,27487,17703,22901,50049,12849,50050,27492,
-50051,15685,50052,50053,50054,27490,50055,50056,50057,50058,50059,50060,50061,
-50062,50063,50064,50065,50066,50067,27491,50068,50069,14380,50070,19793,27493,
-50071,50072,50073,27489,50074,16691,50075,50076,50077,50078,50079,17954,50080,
-50240,50241,50242,50243,50244,50245,19571,50246,27494,50247,16432,21048,27495,
-50248,50249,50250,14383,14381,50251,27496,18235,19827,50252,50253,50254,27498,
-27499,50255,50256,50257,50258,50259,27501,50260,50261,50262,50263,20552,50264,
-27506,50265,27502,50266,50267,50268,27505,18553,50269,20860,27500,50270,50271,
-27497,50272,50273,50274,50275,14393,20313,17509,27503,27504,19546,19784,12402,
-50276,27510,50277,50278,50279,50280,50281,27509,50282,12850,50283,50284,50285,
-50286,14432,50287,27511,50288,50289,50290,50291,50292,50293,12652,50294,50295,
-19525,17444,20261,50296,50297,50298,50299,50300,27513,50301,50302,27682,50304,
-17778,50305,27514,50306,50307,50308,50309,50310,50311,50312,50313,18757,50314,
-50315,50316,50317,50318,50319,25183,27518,50320,50321,50322,50323,19790,27681,
-12635,21303,50324,50325,21084,50326,50327,50328,27517,50329,27515,50330,50331,
-50332,50333,50334,50335,50336,50496,50497,50498,50499,50500,50501,50502,50503,
-50504,50505,50506,50507,50508,50509,50510,13116,50511,50512,50513,27184,50514,
-50515,22356,50516,29739,13172,50517,50518,50519,50520,50521,22081,22082,50522,
-50523,50524,50525,50526,50527,21865,15946,50528,29735,50529,21032,29736,29737,
-50530,29738,15947,21343,50531,50532,50533,50534,50535,18784,18785,50536,50537,
-29506,50538,19046,50539,19570,50540,50541,50542,50543,50544,50545,25142,19252,
-50546,20072,22107,50547,29741,29742,29743,50548,50549,50550,50551,29746,50552,
-14909,29747,12387,29744,50553,29745,15650,12885,50554,29750,29751,13926,12848,
-20303,29748,13356,50555,29749,50556,50557,29752,50558,50560,50561,50562,50563,
-29753,50564,50565,19751,50566,29754,50567,29755,50568,50569,50570,29756,50571,
-50572,50573,50574,50575,50576,50577,50578,19282,50579,29757,50580,50581,50582,
-50583,29758,50584,50585,50586,50587,50588,50589,50590,50591,29759,50592,50752,
-50753,50754,50755,29790,16700,15464,50756,18731,20830,25973,50757,50758,50759,
-50760,23603,21077,50761,50762,23604,12332,23605,50763,50764,15706,50765,23609,
-50766,50767,50768,22594,50769,23607,21363,50770,18774,23610,23606,50771,23611,
-17186,50772,50773,50774,50775,23612,23621,23613,50776,50777,20063,22053,50778,
-23631,50779,23629,50780,50781,23634,15718,16939,50782,23608,23627,23630,23614,
-14162,12357,23623,20542,23617,15144,50783,14140,23628,50784,50785,23622,23615,
-18267,50786,50787,50788,20799,23616,50789,50790,23626,50791,50792,23632,50793,
-50794,20013,23618,50795,23619,23624,23625,12884,23633,19285,50796,21559,23643,
-23647,19494,23654,50797,17255,23644,50798,50799,16193,23641,50800,12410,14646,
-23653,23635,50801,23620,23638,18548,16224,50802,50803,50804,50805,18747,50806,
-50807,50808,12605,50809,21282,50810,50811,23642,50812,50813,23637,50814,17979,
-50816,23646,50817,50818,50819,50820,50821,22338,17199,14134,18257,17193,23650,
-23640,23659,23636,50822,50823,23645,50824,15909,23639,50825,23648,50826,50827,
-23651,23652,50828,23672,50829,50830,23649,23842,23655,50831,50832,50833,50834,
-50835,50836,50837,50838,50839,50840,15467,13380,50841,50842,17187,12903,23674,
-50843,23666,50844,23663,50845,23676,23662,21104,12904,50846,18519,18531,23675,
-50847,23661,50848,51008,51009,23671,51010,51011,23669,51012,51013,15907,23668,
-51014,12893,51015,51016,51017,51018,51019,23667,15478,23656,15172,51020,16499,
-51021,51022,51023,51024,51025,15444,23657,23658,51026,23665,23670,23673,13620,
-51027,18521,15207,23678,23677,21291,23841,23843,23845,21105,23844,23846,23847,
-21033,51028,51029,51030,51031,51032,51033,51034,14921,23849,51035,51036,23862,
-23857,23860,51037,51038,51039,51040,51041,51042,51043,23856,17998,51044,51045,
-16498,51046,51047,51048,51049,18735,51050,51051,51052,23660,23854,51053,51054,
-51055,51056,23863,51057,51058,23664,23855,51059,23864,51060,23852,51061,51062,
-51063,51064,51065,51066,51067,23865,23859,23853,17450,51068,51069,51070,51072,
-23848,16435,16683,23850,23851,51073,23858,15217,23861,21288,23866,51074,23867,
-17191,51075,51076,23890,23868,51077,51078,51079,23889,51080,14653,51081,51082,
-15957,51083,15994,51084,51085,14922,51086,51087,51088,51089,23882,51090,23877,
-51091,23871,51092,51093,51094,12875,23875,51095,23883,12836,23893,51096,51097,
-51098,23870,51099,51100,51101,18000,23888,51102,51103,51104,51264,51265,23892,
-16738,14150,51266,51267,51268,51269,51270,23886,23887,51271,51272,51273,23876,
-51274,51275,51276,23869,51277,23885,19537,51278,23881,51279,51280,51281,51282,
-23874,17224,17980,20014,23884,51283,23880,51284,51285,51286,51287,51288,51289,
-23873,51290,51291,51292,23878,16988,51293,51294,51295,51296,51297,51298,21289,
-21290,23891,20340,18552,51299,51300,51301,51302,51303,51304,51305,51306,23910,
-51307,51308,51309,51310,51311,51312,23879,51313,51314,51315,23904,16996,51316,
-51317,51318,51319,51320,51321,51322,51323,23905,51324,51325,51326,51328,51329,
-51330,51331,51332,51333,51334,23895,51335,51336,51337,51338,51339,22136,51340,
-23897,23896,14448,23894,51341,51342,51343,51344,17999,51345,13869,51346,51347,
-51348,51349,51350,23906,51351,14969,21601,23911,51352,51353,51354,13392,51355,
-23898,51356,16251,23907,51357,23903,51358,23901,51359,51360,51520,51521,51522,
-51523,51524,13657,51525,51526,51527,51528,23899,23900,23902,51529,15663,23908,
-51530,23909,51531,51532,51533,51534,51535,51536,51537,51538,23925,51539,17225,
-51540,51541,19298,51542,51543,51544,51545,23922,51546,51547,51548,51549,51550,
-51551,51552,51553,51554,51555,51556,51557,51558,22625,51559,51560,18001,51561,
-23924,51562,51563,51564,21876,23923,23920,51565,51566,23916,51567,23919,51568,
-23912,51569,51570,20590,51571,51572,51573,51574,18520,23918,51575,51576,23913,
-51577,51578,23914,19314,51579,23917,51580,51581,12621,51582,51584,51585,51586,
-51587,51588,16438,51589,15419,23921,51590,51591,23927,51592,23926,23915,51593,
-51594,51595,51596,51597,17774,51598,51599,51600,23931,51601,51602,51603,51604,
-51605,51606,51607,51608,51609,51610,51611,24100,51612,51613,24099,51614,51615,
-51616,51776,51777,51778,51779,51780,51781,51782,51783,51784,23928,51785,51786,
-51787,51788,17263,51789,17019,51790,51791,51792,21857,51793,51794,20021,51795,
-51796,51797,51798,23933,51799,12876,51800,51801,51802,51803,51804,51805,51806,
-51807,51808,17512,19039,51809,51810,51811,51812,51813,51814,51815,51816,51817,
-51818,18238,23930,23932,23934,24098,12330,12622,51819,51820,51821,51822,51823,
-24108,51824,51825,51826,51827,24102,15670,18543,51828,51829,51830,51831,51832,
-51833,51834,51835,51836,51837,51838,24097,51840,51841,24101,51842,51843,51844,
-51845,24105,51846,51847,51848,51849,51850,24104,51851,51852,51853,24103,51854,
-51855,51856,51857,51858,51859,51860,51861,51862,24109,51863,21580,51864,51865,
-51866,51867,24115,24106,24110,51868,51869,16473,51870,51871,51872,52032,52033,
-12577,24118,52034,24113,52035,52036,52037,52038,52039,52040,52041,24114,52042,
-52043,52044,52045,52046,52047,52048,52049,52050,52051,52052,20774,24117,52053,
-52054,52055,52056,52057,52058,52059,24111,52060,52061,52062,24112,52063,20541,
-52064,52065,52066,24116,19053,24121,52067,52068,52069,52070,52071,52072,24120,
-52073,24119,52074,52075,52076,52077,52078,52079,52080,24123,52081,52082,52083,
-52084,52085,52086,52087,15717,52088,52089,52090,52091,52092,12888,17258,52093,
-52094,24122,52096,17722,52097,52098,52099,52100,52101,52102,24124,52103,52104,
-52105,52106,52107,52108,52109,19545,52110,52111,52112,52113,14122,52114,52115,
-52116,52117,52118,52119,52120,52121,52122,52123,52124,52125,52126,52127,52128,
-52288,52289,21605,52290,52291,52292,24125,52293,52294,52295,52296,52297,24127,
-52298,52299,52300,52301,52302,52303,52304,52305,52306,52307,52308,17442,52309,
-52310,52311,52312,24129,52313,52314,52315,52316,52317,52318,52319,52320,52321,
-52322,52323,52324,52325,52326,52327,52328,24126,52329,24128,52330,52331,52332,
-52333,52334,52335,52336,52337,52338,52339,52340,52341,52342,52343,21818,52344,
-52345,52346,24130,52347,52348,52349,52350,52352,52353,52354,52355,52356,52357,
-52358,52359,52360,52361,52362,52363,29230,15138,16946,17712,16967,52364,52365,
-29231,52366,52367,52368,52369,52370,20585,52371,52372,52373,21341,52374,52375,
-52376,27453,52377,52378,52379,52380,52381,52382,52383,52384,13158,29232,52544,
-29233,52545,52546,18989,52547,52548,52549,52550,52551,52552,52553,14951,29235,
-29237,29236,19300,20282,29234,18996,21071,17004,52554,52555,52556,52557,52558,
-52559,52560,20035,29240,12406,29239,52561,52562,52563,52564,52565,29246,52566,
-12879,52567,52568,52569,52570,52571,52572,20801,29242,52573,52574,52575,52576,
-52577,29244,21609,52578,52579,29243,29238,29247,29245,52580,29241,52581,52582,
-29255,29252,29254,52583,52584,29258,29250,29248,52585,52586,52587,29253,52588,
-52589,52590,52591,52592,22139,52593,52594,52595,29249,52596,18297,18783,52597,
-29256,14662,13616,52598,52599,29251,29257,29264,29270,52600,52601,15191,52602,
-52603,52604,29269,19804,52605,22123,52606,52608,29266,29268,52609,52610,52611,
-52612,14450,52613,52614,52615,52616,29259,52617,52618,52619,29262,17017,52620,
-21853,29260,29261,29263,29267,52621,52622,52623,29273,21308,52624,52625,52626,
-52627,13930,52628,19057,52629,14180,29271,52630,52631,52632,29272,29274,29277,
-29275,52633,52634,29276,52635,52636,52637,52638,20817,29265,52639,19785,52640,
-20047,22057,52800,29283,52801,17243,52802,29280,52803,52804,16431,29292,29278,
-52805,29281,52806,52807,52808,29288,52809,52810,52811,52812,29282,52813,52814,
-29287,52815,52816,29286,52817,52818,29289,52819,52820,52821,29279,52822,52823,
-29284,29290,52824,52825,52826,52827,52828,52829,52830,21292,29285,12917,52831,
-52832,29298,52833,20523,52834,52835,52836,52837,29301,52838,52839,52840,15176,
-52841,29305,52842,52843,52844,52845,52846,52847,29296,52848,52849,29302,29304,
-29306,52850,52851,52852,52853,52854,52855,52856,52857,29299,52858,29297,52859,
-52860,52861,14971,52862,13691,52864,52865,52866,52867,29295,29303,29293,29294,
-52868,52869,52870,29291,29478,52871,29475,52872,52873,29474,52874,52875,29300,
-52876,18522,52877,52878,52879,52880,52881,29307,52882,52883,52884,29477,52885,
-52886,52887,52888,52889,52890,52891,17272,52892,52893,52894,52895,52896,53056,
-53057,53058,29309,53059,53060,29479,29481,29476,53061,29308,53062,53063,53064,
-29483,53065,29482,53066,53067,53068,53069,16989,53070,53071,29486,53072,53073,
-29488,53074,53075,53076,53077,53078,29473,53079,53080,53081,29489,29484,53082,
-53083,53084,53085,53086,29487,29310,29485,53087,53088,53089,53090,53091,53092,
-53093,29490,53094,53095,53096,53097,29492,53098,53099,53100,53101,29480,53102,
-53103,53104,53105,29491,53106,53107,53108,29493,53109,53110,53111,53112,53113,
-53114,53115,53116,53117,53118,20535,53120,53121,53122,53123,29496,53124,53125,
-53126,53127,22905,53128,53129,53130,53131,53132,53133,29497,53134,53135,53136,
-53137,53138,53139,53140,53141,29495,53142,18532,29494,53143,53144,53145,53146,
-29498,53147,53148,53149,53150,53151,29499,13376,53152,53312,53313,53314,53315,
-53316,53317,53318,53319,53320,53321,53322,53323,53324,53325,28227,53326,53327,
-53328,53329,53330,53331,29500,53332,53333,29501,53334,53335,53336,20778,53337,
-53338,53339,29740,20550,53340,53341,53342,53343,53344,53345,20560,20828,53346,
-53347,53348,53349,53350,53351,20302,53352,53353,15702,53354,20803,53355,53356,
-53357,53358,53359,53360,53361,14946,24937,21058,28994,12857,53362,53363,12653,
-28995,53364,18752,13124,53365,22898,53366,19237,53367,28996,53368,53369,53370,
-53371,22100,53372,53373,53374,53376,53377,28997,29760,28998,53378,21548,28999,
-53379,12352,29761,53380,53381,29762,53382,53383,13436,53384,17755,53385,53386,
-53387,53388,19515,53389,53390,53391,20580,53392,53393,53394,53395,53396,19808,
-53397,53398,53399,53400,53401,29000,53402,22899,53403,53404,53405,53406,53407,
-53408,12603,53568,20270,53569,53570,53571,14372,53572,53573,53574,53575,53576,
-29002,53577,53578,53579,53580,29003,53581,53582,53583,53584,12867,16721,53585,
-53586,22320,29001,53587,53588,29004,53589,53590,53591,53592,29006,53593,53594,
-53595,22902,53596,21089,21539,53597,53598,29763,18489,53599,53600,53601,53602,
-53603,29764,53604,53605,29005,29007,16227,29008,53606,53607,29012,53608,53609,
-53610,53611,53612,53613,53614,29014,29009,53615,18769,17761,53616,53617,53618,
-16995,14716,53619,53620,29011,53621,29013,53622,53623,53624,14675,53625,53626,
-53627,53628,53629,53630,53632,29019,53633,53634,53635,53636,53637,14934,53638,
-12413,29017,53639,53640,53641,53642,53643,29016,29010,29018,53644,53645,53646,
-53647,53648,29015,53649,53650,53651,18540,53652,53653,53654,53655,19786,29021,
-53656,53657,53658,53659,25917,53660,53661,53662,29020,53663,29022,53664,53824,
-53825,53826,53827,53828,53829,53830,53831,53832,29023,53833,53834,20325,53835,
-53836,53837,53838,53839,53840,53841,53842,53843,53844,53845,53846,53847,53848,
-53849,53850,53851,53852,53853,53854,53855,53856,53857,53858,53859,29765,15731,
-53860,53861,53862,53863,53864,53865,29024,53866,53867,53868,53869,53870,53871,
-53872,53873,53874,53875,53876,53877,53878,53879,53880,53881,53882,53883,53884,
-53885,29025,53886,53888,53889,20087,53890,21034,53891,29051,53892,53893,14386,
-53894,53895,53896,53897,53898,53899,53900,53901,53902,53903,53904,53905,53906,
-53907,53908,53909,53910,53911,53912,53913,53914,53915,53916,53917,53918,53919,
-53920,54080,54081,54082,54083,54084,54085,54086,54087,54088,54089,54090,54091,
-54092,54093,54094,54095,54096,54097,54098,54099,54100,54101,54102,54103,54104,
-54105,54106,54107,54108,54109,54110,15483,14683,54111,14694,17241,19027,27240,
-16448,15989,27241,27242,27243,54112,27244,27245,27246,27247,15687,54113,54114,
-54115,30075,54116,54117,54118,30077,54119,30078,54120,30076,54121,54122,54123,
-54124,15714,54125,30241,13349,54126,54127,54128,54129,30242,54130,54131,54132,
-30243,54133,54134,54135,27698,54136,54137,54138,54139,54140,54141,54142,54144,
-54145,54146,54147,54148,20820,54149,54150,54151,54152,54153,54154,22890,54155,
-54156,54157,54158,54159,54160,54161,54162,54163,54164,54165,54166,54167,54168,
-54169,54170,54171,54172,54173,54174,54175,54176,54336,54337,54338,54339,54340,
-54341,54342,54343,54344,54345,54346,54347,54348,54349,54350,54351,54352,54353,
-54354,54355,54356,54357,54358,54359,54360,54361,54362,54363,54364,54365,54366,
-54367,30244,54368,54369,54370,54371,54372,54373,54374,54375,54376,28218,54377,
-54378,54379,54380,54381,54382,54383,54384,54385,54386,54387,54388,54389,54390,
-54391,54392,54393,54394,54395,54396,54397,54398,54400,54401,54402,54403,54404,
-54405,54406,54407,54408,54409,54410,54411,54412,54413,54414,54415,54416,54417,
-54418,54419,54420,54421,54422,54423,54424,54425,21810,54426,54427,54428,54429,
-54430,54431,54432,54592,54593,54594,54595,54596,54597,54598,54599,21374,19548,
-54600,54601,54602,54603,54604,54605,54606,54607,19012,54608,54609,54610,54611,
-54612,54613,54614,54615,54616,54617,54618,54619,54620,54621,54622,54623,54624,
-54625,54626,54627,54628,54629,54630,54631,54632,54633,54634,54635,54636,54637,
-54638,54639,54640,54641,54642,54643,54644,54645,54646,54647,54648,54649,54650,
-54651,54652,54653,54654,54656,54657,54658,54659,54660,54661,54662,54663,54664,
-54665,54666,54667,54668,54669,54670,54671,54672,54673,54674,54675,54676,54677,
-54678,54679,54680,54681,54682,54683,54684,54685,54686,54687,54688,54848,54849,
-54850,54851,54852,54853,54854,54855,54856,54857,54858,54859,54860,54861,54862,
-54863,54864,54865,54866,54867,54868,54869,54870,54871,54872,54873,54874,54875,
-54876,54877,54878,54879,54880,54881,54882,25920,54883,54884,54885,54886,54887,
-54888,54889,54890,54891,54892,54893,54894,54895,54896,54897,54898,54899,54900,
-54901,54902,54903,54904,54905,54906,54907,54908,54909,54910,54912,54913,30245,
-54914,54915,54916,54917,54918,54919,54920,54921,54922,54923,54924,54925,54926,
-54927,54928,54929,54930,54931,54932,54933,54934,54935,54936,54937,54938,54939,
-54940,54941,54942,54943,54944,55104,55105,55106,55107,55108,55109,55110,55111,
-55112,55113,55114,55115,55116,55117,55118,55119,55120,55121,55122,55123,55124,
-55125,55126,55127,55128,55129,55130,55131,55132,55133,55134,55135,15919,55136,
-55137,55138,55139,55140,17961,55141,55142,55143,55144,55145,55146,55147,55148,
-55149,55150,55151,55152,55153,55154,55155,55156,55157,55158,55159,55160,55161,
-55162,55163,55164,55165,55166,55168,55169,55170,55171,55172,55173,55174,55175,
-55176,55177,55178,55179,55180,55181,55182,55183,55184,55185,55186,55187,55188,
-55189,55190,55191,55192,23077,15430,13865,14396,18511,15397,23078,23079,19542,
-18499,23080,18045,55193,20789,21097,20790,15431,55194,15666,15204,23081,23082,
-20808,23083,20589,13935,16987,55195,19279,14189,18792,14147,15991,22052,23084,
-23085,17984,22375,18998,55196,21801,19295,21871,23086,22111,13386,23088,23087,
-55197,21099,23089,23090,23091,19028,23092,18987,23093,23094,13135,22127,23095,
-15152,13614,23096,23097,14702,20783,21096,23098,14403,20330,12911,23099,23100,
-55198,15723,20060,21359,23101,20083,23102,21333,15205,23103,19253,19280,23104,
-18283,22126,23105,17717,13889,23106,14156,16206,23107,23108,19245,23109,13687,
-23110,16706,22331,23111,19512,55199,21098,17457,23112,13693,15185,23113,20531,
-23114,23115,20029,23116,23117,23118,12919,23121,23119,20840,23120,17237,23122,
-55200,23123,23124,23125,20539,21029,12409,23126,18219,23127,15735,17185,23128,
-23129,17277,19511,23130,23131,16446,18007,23132,23133,18228,23134,23135,14664,
-55360,55361,55362,55363,55364,55365,55366,55367,55368,15213,55369,55370,55371,
-55372,13881,29816,55373,29817,55374,55375,19811,55376,55377,55378,55379,55380,
-55381,55382,55383,30009,55384,55385,55386,55387,27488,55388,55389,55390,55391,
-55392,55393,20339,15167,55394,55395,55396,55397,55398,55399,55400,14912,21541,
-55401,55402,55403,55404,55405,55406,55407,24921,55408,55409,55410,55411,30068,
-12586,12914,55412,55413,55414,55415,55416,55417,55418,30069,55419,55420,30071,
-55421,55422,55424,14929,30070,55425,17202,55426,55427,55428,55429,55430,55431,
-55432,30073,55433,55434,55435,30072,55436,55437,55438,55439,55440,55441,55442,
-55443,55444,55445,55446,55447,55448,55449,55450,55451,55452,55453,55454,55455,
-55456,55616,55617,55618,55619,55620,55621,55622,55623,55624,55625,55626,55627,
-55628,55629,55630,55631,55632,55633,55634,55635,55636,55637,55638,55639,55640,
-55641,55642,55643,55644,55645,55646,55647,55648,55649,55650,55651,55652,55653,
-55654,55655,55656,55657,55658,55659,55660,55661,55662,55663,55664,55665,55666,
-55667,55668,55669,55670,55671,55672,55673,55674,55675,55676,55677,55678,55680,
-55681,55682,55683,55684,55685,55686,55687,55688,55689,55690,55691,55692,55693,
-55694,55695,55696,55697,55698,55699,55700,55701,55702,55703,55704,55705,55706,
-55707,55708,55709,55710,55711,55712,55872,55873,55874,55875,55876,55877,55878,
-55879,55880,55881,55882,55883,55884,55885,55886,12596,21866,14394,55887,14641,
-12870,21616,20301,12380,21835,15221,22090,14135,19504,17974,12641,14650,22140,
-14689,14113,15482,27226,27227,19577,14707,27228,13435,17203,14161,14936,27229,
-21620,27230,15446,15199,27231,16734,16952,21599,22346,27232,27233,27236,27234,
-27235,18782,14387,13892,27237,19050,18765,13389,55888,55889,25177,17762,27238,
-16437,55890,22328,27239,22316,18556,22611,22605,21598,55891,21625,18756,21294,
-14419,13152,55892,18786,29814,55893,55894,55895,14933,55896,29815,55897,55898,
-22367,55899,55900,29809,14384,21844,14415,18032,55901,55902,55903,55904,55905,
-55906,55907,55908,55909,13123,55910,55911,29810,13100,55912,55913,55914,55915,
-21565,18295,55916,55917,55918,55919,55920,29812,55921,55922,29811,55923,55924,
-55925,55926,55927,55928,55929,55930,55931,55932,19531,55933,55934,55936,18468,
-55937,55938,55939,55940,55941,55942,55943,55944,55945,55946,55947,55948,55949,
-29813,55950,22371,17727,30016,55951,55952,30011,55953,30019,55954,30018,55955,
-22074,30017,55956,55957,55958,21566,30020,55959,30028,55960,55961,55962,55963,
-12367,13688,55964,30025,30026,55965,17756,55966,55967,55968,56128,30021,30022,
-56129,56130,30023,30027,56131,15968,30024,14458,56132,56133,56134,30032,30035,
-56135,56136,56137,16231,56138,14706,30012,30029,56139,56140,16951,56141,56142,
-56143,19576,56144,15481,56145,30030,30031,30033,13925,30034,56146,30037,56147,
-56148,56149,56150,56151,56152,56153,30013,56154,56155,56156,30036,21307,56157,
-13164,56158,56159,19492,56160,56161,56162,56163,30038,56164,56165,56166,56167,
-56168,56169,56170,56171,30039,15969,30040,56172,56173,19551,30043,56174,56175,
-56176,56177,56178,12872,22361,56179,30041,56180,30042,30044,56181,30050,56182,
-56183,56184,30048,56185,56186,56187,30047,30045,56188,56189,30049,56190,56192,
-30046,30052,30053,56193,19555,56194,56195,25919,13624,30051,30056,19491,56196,
-56197,56198,56199,56200,30054,30055,56201,56202,56203,56204,56205,56206,30014,
-56207,56208,56209,56210,56211,56212,56213,56214,56215,56216,56217,56218,12612,
-56219,56220,30015,56221,56222,13637,12900,56223,30060,30057,56224,13911,56384,
-30061,56385,30058,56386,56387,56388,56389,56390,30059,56391,56392,13402,56393,
-21610,56394,56395,56396,30062,56397,13177,56398,56399,56400,56401,56402,56403,
-56404,30063,30065,56405,56406,56407,30064,56408,56409,56410,56411,56412,56413,
-56414,30066,56415,30067,56416,56417,56418,56419,56420,56421,56422,56423,56424,
-56425,56426,56427,18797,14634,56428,56429,18299,56430,56431,13923,56432,56433,
-56434,56435,56436,56437,56438,19529,56439,56440,56441,56442,56443,56444,56445,
-56446,56448,56449,56450,56451,56452,56453,56454,56455,56456,56457,56458,27174,
-56459,56460,56461,56462,56463,56464,56465,56466,56467,56468,56469,56470,56471,
-56472,56473,56474,56475,56476,56477,56478,56479,56480,56640,56641,56642,56643,
-56644,56645,56646,56647,56648,56649,56650,56651,56652,56653,56654,56655,56656,
-56657,56658,56659,56660,56661,56662,56663,56664,56665,56666,56667,56668,56669,
-56670,56671,56672,56673,56674,56675,56676,56677,56678,56679,56680,56681,56682,
-56683,56684,56685,56686,56687,56688,56689,56690,56691,56692,56693,56694,56695,
-56696,56697,56698,56699,56700,56701,56702,56704,56705,56706,56707,56708,56709,
-56710,56711,56712,56713,56714,56715,56716,56717,56718,56719,56720,56721,56722,
-56723,56724,56725,56726,56727,56728,56729,56730,56731,56732,56733,56734,56735,
-56736,56896,56897,56898,56899,56900,56901,56902,56903,56904,56905,56906,56907,
-56908,56909,56910,56911,56912,56913,56914,56915,56916,56917,56918,56919,56920,
-56921,56922,56923,56924,56925,56926,56927,56928,13109,21630,14700,20601,56929,
-26989,22314,26990,16982,18541,14948,26991,26992,26993,22113,26994,26995,26997,
-26996,26998,26999,18273,27000,21592,27001,15694,56930,27002,27003,15695,27004,
-14376,16702,27005,12594,15188,14709,27006,56931,27169,27170,27171,14200,15405,
-56932,19044,24654,21551,20285,21815,27172,21854,27173,20545,14652,56933,13383,
-12633,56934,56935,56936,16433,56937,56938,56939,56940,12646,12647,56941,12648,
-56942,56943,56944,56945,13117,18536,56946,56947,56948,56949,25921,56950,56951,
-12639,56952,56953,56954,16713,13423,56955,56956,18216,21336,56957,18041,20792,
-56958,14717,17013,56960,56961,56962,56963,56964,21293,56965,21579,15740,56966,
-25922,14133,25923,56967,56968,15161,21858,56969,15736,21558,20005,16684,13145,
-56970,56971,19574,56972,25926,25924,25928,56973,25930,25927,13647,17992,56974,
-13692,25925,56975,19062,56976,56977,25929,56978,56979,56980,17236,12613,15395,
-56981,56982,56983,22327,56984,56985,19787,19277,19018,19539,25932,25931,17510,
-56986,56987,20769,20791,25933,56988,25936,56989,19768,22128,25935,13661,56990,
-19774,56991,25937,13882,56992,57152,19752,14692,57153,19013,13137,19289,21612,
-25938,14186,57154,57155,57156,25934,57157,57158,57159,57160,57161,57162,25941,
-13438,25942,57163,57164,57165,57166,57167,25939,25940,57168,21085,57169,57170,
-16991,12614,57171,21346,57172,57173,13917,19308,57174,25943,57175,57176,21366,
-57177,57178,57179,57180,57181,12649,57182,13940,25946,25944,25945,13632,57183,
-57184,57185,21061,25948,57186,57187,25950,57188,57189,57190,57191,57192,57193,
-25949,18226,57194,21027,57195,57196,25947,57197,57198,57199,57200,21602,21850,
-57201,57202,57203,57204,57205,25952,22385,57206,57207,57208,57209,57210,57211,
-57212,25953,57213,12636,20859,57214,25954,25956,57216,57217,57218,57219,25955,
-57220,57221,25957,57222,57223,57224,57225,57226,21080,57227,13643,57228,26463,
-57229,23157,57230,23160,57231,23158,57232,23159,57233,57234,57235,23162,20559,
-17479,57236,57237,12398,57238,57239,57240,20528,57241,23161,57242,21322,14890,
-23330,18289,57243,23164,23163,18779,23165,57244,23329,22366,23166,16730,57245,
-57246,23333,57247,57248,21364,57408,57409,23335,23332,57410,23336,57411,57412,
-15676,57413,57414,57415,16457,23331,23334,22051,57416,23337,57417,57418,57419,
-23341,57420,57421,57422,23342,23340,14914,57423,57424,57425,16164,23339,57426,
-57427,57428,23338,21575,12863,57429,57430,23343,57431,14713,57432,23344,57433,
-57434,57435,57436,13115,57437,57438,57439,13606,57440,57441,57442,57443,13884,
-23345,57444,57445,57446,13941,57447,23346,57448,57449,57450,57451,57452,57453,
-57454,57455,57456,57457,57458,57459,57460,57461,57462,57463,57464,57465,57466,
-57467,12617,57468,57469,57470,57472,23348,57473,57474,57475,23347,23349,57476,
-57477,57478,57479,57480,57481,57482,57483,57484,57485,57486,23351,57487,23350,
-57488,57489,57490,57491,57492,57493,57494,23352,57495,57496,57497,57498,57499,
-57500,57501,57502,57503,23353,57504,57664,23354,57665,57666,21327,29818,18293,
-22339,17764,29820,29821,29819,57667,15942,57668,57669,57670,57671,20591,57672,
-57673,14163,57674,57675,21581,19498,57676,57677,29986,29985,14888,29822,19286,
-57678,57679,57680,29988,16466,57681,13162,57682,19754,29989,29987,15668,29992,
-57683,29993,15693,17208,16225,19297,29994,57684,57685,57686,29990,29991,17520,
-57687,57688,57689,57690,57691,29996,57692,13372,57693,22381,57694,13399,29995,
-29998,57695,57696,29997,29999,20561,57697,57698,57699,57700,57701,57702,57703,
-17233,18473,57704,57705,57706,57707,57708,57709,30000,30001,57710,57711,57712,
-57713,57714,57715,30002,57716,57717,30003,30004,30005,57718,57719,57720,57721,
-30007,30006,57722,57723,57724,57725,30008,57726,57728,57729,57730,57731,57732,
-57733,57734,57735,57736,57737,57738,12873,57739,21332,19021,57740,16495,22104,
-21040,16703,57741,15728,57742,57743,57744,57745,57746,57747,57748,57749,57750,
-57751,14378,57752,57753,57754,57755,57756,57757,57758,57759,57760,57920,57921,
-57922,57923,57924,57925,57926,57927,57928,57929,57930,57931,57932,57933,57934,
-57935,57936,57937,57938,57939,57940,57941,57942,57943,57944,57945,57946,57947,
-57948,57949,57950,57951,57952,57953,57954,57955,57956,57957,57958,57959,57960,
-57961,57962,57963,57964,57965,57966,57967,57968,57969,57970,57971,57972,57973,
-57974,57975,57976,57977,57978,57979,57980,57981,57982,57984,57985,57986,57987,
-57988,57989,57990,57991,57992,57993,57994,57995,57996,57997,57998,57999,58000,
-58001,58002,58003,58004,58005,58006,58007,58008,58009,58010,58011,58012,58013,
-58014,58015,58016,58176,58177,58178,58179,58180,58181,58182,58183,58184,58185,
-58186,58187,58188,58189,58190,58191,58192,58193,58194,58195,58196,58197,58198,
-58199,58200,58201,58202,58203,58204,58205,58206,58207,58208,58209,58210,58211,
-58212,58213,58214,58215,58216,58217,58218,58219,58220,58221,15480,58222,58223,
-58224,58225,58226,58227,58228,58229,58230,58231,58232,58233,58234,58235,58236,
-58237,58238,58240,58241,58242,58243,58244,58245,58246,58247,30278,58248,58249,
-58250,58251,58252,58253,58254,58255,58256,58257,58258,58259,58260,58261,58262,
-58263,58264,58265,58266,58267,58268,58269,58270,58271,58272,58432,58433,58434,
-58435,58436,58437,30279,58438,58439,58440,58441,58442,58443,58444,58445,58446,
-58447,58448,58449,58450,58451,58452,58453,58454,58455,58456,58457,58458,58459,
-58460,58461,58462,30280,58463,58464,58465,58466,58467,58468,58469,58470,58471,
-58472,58473,58474,58475,58476,58477,58478,58479,58480,58481,58482,58483,58484,
-58485,58486,58487,58488,58489,58490,58491,58492,58493,58494,58496,58497,58498,
-58499,58500,58501,58502,58503,58504,58505,58506,58507,58508,58509,58510,58511,
-58512,58513,58514,58515,58516,58517,58518,58519,58520,58521,58522,58523,58524,
-58525,58526,58527,58528,58688,58689,58690,58691,58692,58693,58694,58695,58696,
-58697,58698,58699,58700,58701,58702,58703,58704,58705,58706,58707,58708,58709,
-58710,58711,58712,58713,58714,58715,58716,58717,58718,58719,58720,58721,58722,
-58723,58724,58725,58726,58727,58728,58729,58730,58731,58732,58733,58734,58735,
-58736,58737,58738,58739,30281,58740,58741,58742,58743,58744,58745,58746,58747,
-58748,58749,58750,58752,58753,58754,58755,58756,58757,58758,58759,58760,58761,
-58762,58763,58764,58765,58766,58767,58768,58769,58770,58771,58772,58773,58774,
-58775,58776,58777,58778,58779,58780,58781,58782,58783,30282,58784,58944,58945,
-58946,58947,58948,58949,58950,58951,58952,58953,58954,58955,58956,58957,58958,
-58959,58960,58961,58962,58963,58964,58965,58966,58967,58968,58969,58970,58971,
-58972,58973,58974,58975,58976,58977,58978,30284,58979,58980,58981,58982,58983,
-58984,58985,58986,58987,58988,58989,58990,58991,58992,58993,58994,58995,58996,
-58997,58998,58999,59000,59001,59002,59003,59004,59005,59006,59008,59009,59010,
-59011,59012,59013,59014,59015,59016,59017,59018,59019,59020,59021,59022,59023,
-59024,59025,59026,59027,59028,59029,59030,59031,59032,59033,59034,59035,59036,
-59037,30283,59038,59039,59040,59200,59201,59202,59203,59204,59205,59206,59207,
-30569,59208,59209,59210,59211,59212,59213,59214,59215,59216,59217,59218,59219,
-59220,59221,59222,59223,59224,59225,59226,59227,59228,59229,59230,59231,59232,
-59233,59234,59235,59236,59237,59238,59239,59240,59241,59242,59243,59244,59245,
-59246,59247,59248,59249,59250,59251,59252,59253,59254,59255,59256,59257,59258,
-59259,59260,59261,59262,59264,59265,59266,59267,59268,59269,59270,59271,59272,
-59273,59274,59275,59276,59277,59278,59279,59280,59281,59282,59283,59284,59285,
-59286,59287,59288,59289,59290,59291,59292,59293,59294,59295,59296,59456,59457,
-59458,59459,59460,59461,59462,59463,59464,59465,59466,59467,59468,59469,59470,
-30285,59471,59472,59473,59474,59475,59476,59477,59478,59479,59480,59481,59482,
-59483,59484,59485,59486,59487,59488,59489,59490,59491,59492,59493,59494,59495,
-59496,59497,59498,59499,59500,59501,59502,59503,59504,59505,59506,59507,59508,
-59509,59510,59511,59512,59513,59514,30286,59515,59516,59517,59518,59520,59521,
-59522,59523,59524,59525,59526,59527,59528,59529,59530,59531,59532,59533,59534,
-59535,59536,59537,59538,59539,59540,28228,28229,28230,21867,13860,28232,28231,
-28233,28234,18213,28235,28236,59541,14128,13686,28237,28239,59542,28238,59543,
-14406,28240,28241,28242,13915,13102,22099,17478,12597,14422,28243,28244,21567,
-18261,15995,20057,14643,28246,28245,28248,28247,17701,28249,28250,18222,28251,
-18223,28252,12839,28253,28254,28255,28256,28257,22378,28258,28259,15448,28260,
-21323,19578,12844,16741,28261,18214,17197,59544,28262,28263,28264,28265,28266,
-28267,28268,59545,28269,28270,28271,59546,59547,28272,28273,28274,28276,28275,
-59548,28277,19757,16961,28278,28279,28280,21793,28281,20275,28282,28283,59549,
-28284,28285,28449,28286,28450,14453,17274,28451,28452,15682,21055,12921,28453,
-28454,28455,21112,28456,22141,28457,17996,59550,28458,28459,16692,28460,20346,
-19320,28462,28461,13178,14712,28463,28464,20578,28465,28466,14182,20543,28467,
-28468,28469,18545,19552,28470,28471,28472,28473,28474,21856,28475,13421,17194,
-28476,59551,28477,28478,28479,59552,20093,28480,16992,13368,22326,15733,59712,
-20295,28483,28481,28482,28484,13863,15484,15970,17228,28485,28486,59713,28487,
-28495,28488,28489,28490,18242,28529,13901,28491,59714,28492,28493,13894,17214,
-28494,59715,28496,28497,28498,21874,59716,28499,17527,59717,28500,17528,28501,
-28502,14436,12407,28503,28504,28505,59718,28506,28507,28508,28509,59719,28510,
-15925,28513,28511,28512,59720,28514,28515,16717,28516,28517,28518,28519,28520,
-28521,28522,28523,28524,16472,59721,28525,16685,28526,28527,28528,59722,59723,
-20322,59724,59725,59726,59727,59728,59729,59730,59731,13092,59732,59733,59734,
-59735,59736,59737,59738,59739,59740,59741,59742,59743,59744,59745,59746,59747,
-59748,59749,59750,59751,59752,59753,59754,59755,59756,59757,59758,59759,59760,
-59761,59762,59763,59764,59765,59766,59767,59768,59769,59770,59771,59772,59773,
-59774,59776,59777,59778,59779,59780,59781,59782,59783,59784,59785,59786,59787,
-59788,59789,59790,59791,59792,59793,59794,59795,59796,59797,59798,59799,59800,
-59801,59802,59803,59804,59805,59806,59807,59808,59968,59969,59970,59971,59972,
-59973,59974,59975,59976,59977,59978,59979,59980,59981,59982,59983,59984,59985,
-59986,59987,59988,59989,59990,59991,59992,59993,59994,59995,17221,25413,18753,
-25414,59996,12629,20042,13363,18546,25415,20304,25416,15460,25417,25418,17222,
-21794,17494,14699,20037,25419,17270,25420,59997,14119,14451,14930,25421,25422,
-21572,25423,59998,25424,20811,25425,25426,25427,25428,20822,25429,12923,16443,
-25430,59999,16427,25431,25432,25433,60000,25434,25435,60001,14391,23138,60002,
-13907,60003,23140,23139,60004,60005,60006,60007,60008,60009,60010,23142,60011,
-60012,60013,18542,60014,60015,23141,14144,20852,21109,21875,15703,60016,60017,
-60018,60019,22376,23144,23143,60020,12322,19795,60021,23145,60022,14397,15434,
-16957,16932,13122,23146,60023,16938,17456,15669,60024,60025,20318,60026,60027,
-60028,23147,18754,60029,60030,60032,60033,60034,12637,60035,60036,60037,23148,
-60038,13880,21562,60039,13181,60040,60041,23149,21577,20309,17763,60042,23150,
-60043,60044,60045,60046,60047,23151,60048,23152,16746,19541,20317,60049,60050,
-60051,60052,60053,60054,60055,60056,60057,60058,60059,60060,60061,21351,16929,
-60062,23153,60063,60064,19301,60224,23154,60225,19302,21118,60226,60227,60228,
-14452,60229,60230,23155,12335,20278,60231,60232,21839,60233,60234,60235,60236,
-60237,60238,60239,60240,60241,60242,19309,60243,60244,60245,60246,60247,60248,
-60249,60250,23156,60251,60252,25412,60253,60254,16677,60255,60256,30271,60257,
-60258,30272,30273,17489,60259,18488,20835,60260,60261,20571,20805,15407,14669,
-60262,28532,60263,60264,13382,21306,30274,13179,60265,60266,30275,60267,60268,
-13681,60269,60270,60271,60272,60273,60274,60275,60276,60277,60278,30277,60279,
-60280,60281,60282,60283,60284,60285,21354,30247,20777,60286,60288,60289,60290,
-30249,60291,60292,60293,30248,60294,60295,16739,16471,60296,12578,60297,60298,
-60299,60300,20077,60301,20584,30251,60302,60303,20342,60304,30250,21872,30252,
-17209,60305,60306,60307,15220,30254,30253,60308,60309,60310,17502,60311,60312,
-16728,60313,60314,60315,60316,60317,19242,60318,20284,60319,60320,60480,60481,
-60482,60483,60484,60485,60486,60487,60488,30255,60489,60490,30256,60491,60492,
-30257,60493,16950,60494,60495,60496,60497,60498,12372,17785,60499,60500,60501,
-60502,30258,60503,60504,60505,60506,60507,60508,60509,60510,60511,60512,60513,
-60514,60515,60516,60517,60518,60519,60520,60521,18272,30246,60522,60523,15928,
-60524,60525,15922,60526,13669,60527,60528,14151,60529,16191,17234,17254,60530,
-60531,22604,60532,60533,60534,14447,60535,60536,60537,60538,60539,60540,60541,
-60542,60544,15737,20773,60545,12368,60546,60547,60548,60549,60550,30512,60551,
-60552,60553,60554,60555,60556,60557,60558,30513,60559,60560,60561,60562,60563,
-20524,60564,12336,60565,60566,60567,30514,30515,60568,30516,60569,60570,60571,
-18250,60572,60573,60574,60575,60576,60736,60737,15951,60738,60739,30519,60740,
-60741,60742,60743,60744,60745,60746,30518,60747,12638,60748,30517,60749,60750,
-30520,60751,30521,60752,60753,60754,60755,60756,60757,60758,60759,60760,60761,
-60762,60763,60764,60765,60766,60767,60768,60769,60770,60771,60772,60773,60774,
-60775,60776,60777,60778,60779,60780,60781,60782,60783,60784,60785,60786,60787,
-60788,60789,60790,60791,60792,60793,60794,60795,60796,60797,60798,60800,60801,
-20004,18509,60802,14891,26680,26681,26682,15938,60803,60804,60805,60806,60807,
-21108,60808,21583,18776,60809,60810,60811,60812,60813,60814,60815,60816,60817,
-60818,60819,60820,60821,60822,60823,60824,60825,60826,60827,60828,60829,60830,
-60831,60832,60992,60993,60994,60995,60996,60997,60998,60999,61000,61001,61002,
-61003,61004,61005,61006,61007,61008,61009,61010,61011,61012,61013,61014,61015,
-61016,61017,61018,61019,61020,61021,61022,61023,61024,61025,61026,61027,61028,
-61029,61030,61031,61032,61033,61034,61035,61036,61037,61038,61039,61040,61041,
-61042,61043,61044,61045,61046,61047,61048,61049,61050,61051,61052,61053,61054,
-61056,61057,61058,61059,61060,61061,61062,61063,61064,61065,61066,61067,61068,
-61069,61070,61071,61072,61073,61074,61075,61076,61077,61078,61079,61080,61081,
-61082,61083,61084,61085,61086,61087,61088,61248,61249,61250,61251,61252,61253,
-21043,13861,18282,29052,20334,19251,20587,26479,19815,14667,13913,29053,12388,
-19276,29054,21540,16941,16748,17988,15921,29217,15445,61254,29218,29219,61255,
-29220,21059,17973,61256,19783,29221,61257,21297,16197,19554,61258,29222,29223,
-20821,13934,29224,29225,13663,29226,29227,61259,12924,29228,29229,18471,61260,
-61261,61262,61263,61264,61265,61266,61267,61268,61269,61270,61271,61272,61273,
-61274,61275,61276,61277,61278,61279,61280,61281,61282,61283,61284,61285,61286,
-61287,61288,61289,61290,61291,61292,61293,61294,61295,61296,61297,14183,61298,
-61299,27689,27690,27691,61300,27692,61301,61302,17966,27693,27694,61303,61304,
-61305,14153,18995,61306,61307,61308,61309,61310,61312,61313,25144,30543,61314,
-61315,61316,61317,61318,61319,61320,61321,61322,61323,61324,61325,61326,61327,
-61328,61329,61330,61331,61332,61333,61334,61335,61336,61337,61338,61339,61340,
-61341,61342,61343,61344,61504,61505,61506,61507,61508,30544,61509,61510,12877,
-61511,61512,61513,61514,61515,61516,61517,61518,61519,61520,61521,61522,61523,
-61524,61525,61526,61527,61528,61529,61530,61531,61532,61533,61534,61535,61536,
-61537,61538,61539,30545,61540,61541,61542,61543,61544,61545,61546,61547,61548,
-61549,61550,61551,61552,61553,61554,61555,61556,61557,61558,61559,61560,61561,
-61562,61563,61564,61565,61566,61568,61569,61570,61571,61572,61573,61574,61575,
-61576,61577,30547,30546,61578,61579,61580,61581,61582,61583,61584,61585,61586,
-61587,61588,61589,61590,25147,61591,15394,61592,25148,25149,25150,25151,25152,
-25153,14137,21115,15652,19022,12581,19271,61593,25154,13948,18500,25155,61594,
-61595,15688,61596,12669,25156,61597,13942,25157,17497,61598,61599,25158,20314,
-14685,25159,16417,61600,25160,12918,61760,25161,61761,16755,25162,25163,17016,
-25164,25165,25166,19031,22584,22885,20323,61762,61763,61764,61765,61766,61767,
-61768,61769,61770,61771,61772,28709,61773,61774,23600,61775,61776,61777,61778,
-61779,61780,61781,61782,61783,61784,61785,61786,61787,61788,61789,61790,61791,
-61792,61793,61794,61795,61796,61797,61798,61799,61800,61801,61802,61803,61804,
-61805,61806,61807,61808,61809,61810,61811,61812,61813,61814,61815,61816,61817,
-61818,61819,61820,61821,61822,61824,61825,61826,61827,61828,61829,61830,61831,
-61832,61833,61834,61835,61836,61837,61838,61839,61840,61841,61842,61843,61844,
-61845,61846,61847,61848,61849,61850,61851,61852,61853,61854,61855,61856,62016,
-62017,62018,62019,62020,62021,62022,62023,62024,62025,62026,62027,62028,62029,
-62030,62031,62032,62033,62034,62035,62036,62037,62038,62039,62040,62041,62042,
-62043,62044,62045,62046,62047,62048,62049,62050,62051,62052,62053,62054,62055,
-62056,62057,62058,62059,62060,62061,62062,62063,62064,62065,62066,62067,62068,
-62069,62070,62071,62072,62073,62074,62075,62076,62077,62078,62080,62081,62082,
-62083,62084,62085,62086,62087,62088,62089,62090,62091,62092,62093,62094,62095,
-62096,62097,62098,62099,62100,62101,62102,62103,62104,62105,62106,62107,62108,
-62109,62110,62111,62112,62272,62273,62274,62275,62276,62277,62278,62279,62280,
-62281,62282,62283,62284,62285,62286,62287,62288,62289,17005,21542,19796,20785,
-13147,18301,62290,12853,16959,26208,19003,26209,26210,15956,26211,22308,19797,
-26213,15453,26212,26214,26215,17006,62291,15678,26216,16998,14887,26217,62292,
-26218,13138,20841,62293,62294,16165,26219,18031,26220,26221,62295,62296,26222,
-17965,26223,62297,18727,26224,26225,26226,25913,26227,26228,16994,26229,26230,
-22120,26231,62298,26232,14663,62299,62300,62301,62302,62303,62304,62305,30523,
-30522,62306,62307,62308,62309,30526,30524,14881,62310,30527,62311,30528,62312,
-62313,62314,30530,30529,30532,62315,62316,30531,62317,62318,62319,62320,62321,
-30533,30534,62322,62323,62324,62325,30535,62326,19304,62327,62328,62329,62330,
-14431,62331,62332,62333,62334,62336,62337,30548,62338,30549,62339,62340,62341,
-62342,30550,62343,62344,62345,62346,30552,62347,30554,62348,30551,62349,62350,
-62351,62352,62353,62354,62355,62356,62357,30555,62358,30553,62359,62360,62361,
-62362,62363,62364,62365,22359,62366,62367,62368,62528,30556,62529,62530,62531,
-62532,62533,62534,30557,62535,62536,62537,30558,62538,62539,62540,62541,62542,
-62543,62544,62545,62546,62547,62548,30559,62549,62550,62551,30560,62552,62553,
-62554,62555,62556,62557,62558,62559,62560,62561,62562,23371,62563,62564,22570,
-62565,62566,62567,62568,62569,62570,62571,62572,25975,14701,62573,62574,62575,
-62576,16253,15210,30537,17991,30536,62577,30538,30540,30539,62578,62579,62580,
-30541,62581,20026,62582,30542,62583,62584,17447,62585,62586,62587,62588,62589,
-62590,62592,62593,62594,62595,62596,62597,62598,62599,62600,62601,62602,62603,
-62604,62605,62606,62607,62608,62609,62610,62611,62612,62613,62614,62615,62616,
-62617,62618,62619,62620,62621,62622,62623,62624,62784,62785,62786,62787,62788,
-62789,62790,62791,62792,62793,62794,62795,62796,62797,62798,62799,62800,62801,
-62802,62803,62804,62805,62806,62807,62808,62809,62810,62811,62812,62813,62814,
-62815,62816,62817,62818,62819,62820,62821,62822,62823,62824,62825,62826,62827,
-62828,62829,62830,62831,62832,62833,62834,62835,62836,62837,62838,62839,62840,
-62841,62842,62843,62844,62845,62846,62848,62849,62850,62851,62852,62853,62854,
-62855,62856,62857,62858,62859,62860,62861,62862,62863,62864,62865,62866,62867,
-62868,62869,62870,62871,62872,62873,62874,62875,62876,62877,62878,62879,62880,
-63040,63041,63042,63043,63044,63045,63046,63047,63048,63049,63050,63051,63052,
-63053,63054,63055,63056,63057,63058,63059,63060,63061,63062,63063,63064,63065,
-63066,63067,63068,63069,63070,63071,63072,63073,63074,63075,63076,63077,63078,
-63079,63080,63081,63082,63083,63084,63085,63086,63087,63088,63089,63090,63091,
-63092,63093,63094,63095,63096,63097,63098,63099,63100,63101,63102,63104,63105,
-63106,63107,63108,63109,63110,63111,63112,63113,63114,63115,63116,63117,63118,
-63119,63120,63121,63122,63123,63124,63125,63126,63127,63128,63129,63130,63131,
-63132,63133,63134,63135,63136,63296,63297,63298,63299,63300,63301,63302,63303,
-63304,63305,63306,63307,63308,63309,63310,63311,63312,63313,63314,63315,63316,
-63317,63318,63319,63320,63321,63322,63323,63324,63325,63326,63327,63328,63329,
-63330,63331,63332,63333,63334,63335,63336,63337,63338,63339,63340,63341,63342,
-63343,63344,63345,63346,63347,63348,63349,63350,63351,63352,63353,63354,63355,
-63356,63357,63358,63360,21347,63361,63362,30287,63363,16947,30288,63364,63365,
-30289,30290,30291,30292,63366,63367,30294,63368,12587,30295,63369,30296,30297,
-30298,63370,30299,30300,63371,63372,63373,63374,30301,30302,20298,63375,30303,
-30304,30305,30306,30307,30308,16496,30309,30310,30311,30312,30313,63376,30314,
-63377,30315,30316,63378,30317,30318,30319,30320,30321,30322,30323,30324,15912,
-63379,30325,30326,30327,30328,63380,63381,63382,63383,63384,18554,30329,30330,
-30331,30332,63385,63386,30333,30334,30497,30498,30499,30500,30501,63387,63388,
-30502,30503,30504,12654,30505,30506,30507,63389,63390,30508,30509,16731,30510,
-63391,63392,30511,63552,63553,63554,63555,63556,63557,63558,63559,63560,63561,
-63562,63563,63564,63565,63566,63567,63568,63569,63570,63571,63572,63573,63574,
-63575,63576,63577,63578,63579,63580,63581,63582,63583,63584,63585,63586,63587,
-63588,63589,63590,63591,63592,63593,63594,63595,63596,63597,63598,63599,63600,
-63601,63602,63603,63604,63605,63606,63607,63608,63609,63610,63611,63612,63613,
-63614,63616,63617,63618,63619,63620,63621,63622,63623,63624,63625,63626,63627,
-63628,63629,63630,63631,63632,63633,63634,63635,63636,63637,63638,63639,63640,
-63641,63642,63643,63644,63645,63646,63647,63648,63808,63809,63810,63811,63812,
-63813,63814,63815,63816,63817,63818,63819,63820,63821,63822,63823,63824,63825,
-63826,63827,63828,63829,63830,63831,63832,63833,63834,63835,63836,63837,63838,
-63839,63840,63841,63842,63843,63844,63845,63846,63847,63848,63849,63850,63851,
-63852,63853,63854,63855,63856,63857,63858,63859,63860,63861,63862,63863,63864,
-63865,63866,63867,63868,63869,63870,63872,63873,63874,63875,63876,63877,63878,
-63879,63880,63881,63882,63883,63884,63885,63886,63887,63888,63889,63890,63891,
-63892,63893,63894,63895,63896,63897,63898,63899,63900,63901,63902,63903,63904,
-64064,64065,64066,64067,64068,64069,64070,64071,64072,64073,64074,64075,64076,
-64077,64078,64079,64080,64081,64082,64083,64084,64085,64086,64087,64088,64089,
-64090,64091,64092,64093,64094,64095,64096,64097,64098,64099,64100,64101,64102,
-64103,64104,64105,64106,64107,64108,64109,64110,64111,64112,64113,64114,64115,
-64116,64117,64118,64119,64120,64121,64122,64123,64124,64125,64126,64128,64129,
-64130,64131,64132,64133,64134,64135,64136,64137,64138,64139,64140,64141,64142,
-64143,64144,64145,64146,64147,64148,64149,64150,64151,64152,64153,64154,64155,
-64156,64157,64158,64159,64160,64320,64321,64322,64323,64324,64325,64326,64327,
-64328,64329,64330,64331,64332,64333,64334,64335,64336,64337,64338,64339,64340,
-64341,64342,64343,64344,64345,64346,64347,17521,28719,15398,28720,17273,64348,
-17720,20795,64349,28721,28722,28723,28724,28725,20796,64350,20844,64351,28727,
-28726,21543,64352,19794,28728,28730,28729,28731,28732,64353,64354,14443,28733,
-14952,64355,28734,28735,15977,28736,13932,28737,28738,28739,28740,18485,28741,
-28742,64356,28743,17780,64357,28744,64358,64359,64360,28745,64361,28746,30525,
-64362,28747,28748,28749,64363,28750,64364,64365,64366,64367,28751,14935,64368,
-28752,28753,28754,28755,28756,28757,28758,28760,64369,64370,21285,28759,64371,
-28761,64372,64373,64374,64375,64376,64377,64378,64379,64380,64381,30010,16953,
-64382,64384,30564,64385,64386,64387,64388,30565,30566,64389,64390,30567,64391,
-64392,64393,64394,64395,64396,30568,16948,64397,64398,64399,64400,64401,64402,
-64403,64404,64405,30570,64406,30571,64407,64408,64409,64410,64411,64412,17011,
-64413,64414,64415,64416,64576,64577,64578,64579,64580,64581,64582,64583,64584,
-29808,64585,64586,64587,29807,64588,64589,17001,64590,30561,30562,64591,64592,
-64593,64594,64595,15174,64596,64597,64598,64599,22884,64600,64601,64602,19058,
-16488,28708,64603,14938,64604,64605,18221,64606,64607,64608,17452,64609,64610,
-30572,30573,30574,64611,30576,30575,64612,30577,64613,64614,30580,64615,30579,
-64616,30578,30581,64617,64618,64619,64620,30582,64621,64622,64623,64624,64625,
-64626,64627,64628,64629,28009,64630,28010,28011,64631,30268,64632,64633,64634,
-64635,64636,64637,64638,64640,64641,64642,64643,64644,30269,64645,30270,13862,
-64646,22590,64647,64648,14660,64649,64650,64651,22587,64652,23601,64653,64654,
-64655,64656,64657,64658,19059,64659,30583,64660,64661,64662,64663,64664,64665,
-64666,64667,64668,30584,64669,64670,30585,64671,64672,64832,64833,64834,64835,
-64836,30587,64837,30586,64838,12615,64839,30588,30589,64840,64841,64842,64843,
-64844,30590,64845,64846,64847,64848,64849,64850,64851,64852,64853,64854,64855,
-18027,27700,64856,64857,64858,64859,64860,64861,64862,64863,64864,64865,64866,
-64867,64868,64869,64870,64871,64872,64873,64874,64875,64876,64877,64878,64879,
-64880,64881,64882,64883,64884,64885,64886,64887,64888,64889,64890,64891,64892,
-64893,64894,64896,64897,64898,64899,64900,64901,13149,30259,64902,64903,30260,
-16740,30261,30262,30263,30264,30265,30266,18467,30267,64904,64905,64906,64907,
-64908,64909,64910,64911,64912,64913,64914,64915,16762,14632,28008,64916,64917,
-64918,14698,22879,64919,64920,64921,64922,64923,64924,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64925,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64926,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64927,N,N,N,N,N,N,N,N,N,64928,
-65088,65089,65090,65091,N,65092,N,65093,65094,N,N,N,65095,N,N,N,N,N,N,65096,
-65097,65098,N,65099,65100,N,N,65101,65102,65103,43349,42738,N,42740,42741,
-42720,42721,42736,42737,42722,42723,42734,42735,42726,42727,42724,42725,42728,
-42729,42730,42731,N,N,N,N,43368,43369,43370,43371,43372,43373,43374,43375,
-43376,43377,N,43378,43379,43380,43381,N,43382,43383,43384,43385,43386,43387,
-43388,43389,43390,43392,43393,43394,43395,43396,N,43397,43398,43399,43400,
-8993,8994,8995,8551,8997,8998,8999,9000,9001,9002,9003,9004,9005,9006,9007,
-9008,9009,9010,9011,9012,9013,9014,9015,9016,9017,9018,9019,9020,9021,9022,
-9023,9024,9025,9026,9027,9028,9029,9030,9031,9032,9033,9034,9035,9036,9037,
-9038,9039,9040,9041,9042,9043,9044,9045,9046,9047,9048,9049,9050,9051,9052,
-9053,9054,9055,9056,9057,9058,9059,9060,9061,9062,9063,9064,9065,9066,9067,
-9068,9069,9070,9071,9072,9073,9074,9075,9076,9077,9078,9079,9080,9081,9082,
-9083,9084,9085,8491,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8553,8554,43350,9086,43351,8996,
-};
-
-static const struct unim_index gbcommon_encmap[256] = {
-{__gbcommon_encmap+0,164,252},{__gbcommon_encmap+89,1,220},{__gbcommon_encmap+
-309,81,217},{__gbcommon_encmap+446,145,201},{__gbcommon_encmap+503,1,81},{0,0,
-0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__gbcommon_encmap+584,
-16,59},{__gbcommon_encmap+628,3,153},{__gbcommon_encmap+779,8,191},{
-__gbcommon_encmap+963,18,18},{__gbcommon_encmap+964,96,155},{__gbcommon_encmap
-+1024,0,229},{__gbcommon_encmap+1254,5,66},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__gbcommon_encmap+1316,0,254},{
-__gbcommon_encmap+1571,5,41},{__gbcommon_encmap+1608,32,163},{
-__gbcommon_encmap+1740,142,213},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{__gbcommon_encmap+1812,0,255},{__gbcommon_encmap+2068,0,255},{
-__gbcommon_encmap+2324,0,255},{__gbcommon_encmap+2580,0,255},{
-__gbcommon_encmap+2836,0,255},{__gbcommon_encmap+3092,0,255},{
-__gbcommon_encmap+3348,0,255},{__gbcommon_encmap+3604,0,255},{
-__gbcommon_encmap+3860,0,255},{__gbcommon_encmap+4116,0,255},{
-__gbcommon_encmap+4372,0,255},{__gbcommon_encmap+4628,0,255},{
-__gbcommon_encmap+4884,0,255},{__gbcommon_encmap+5140,0,255},{
-__gbcommon_encmap+5396,0,255},{__gbcommon_encmap+5652,0,255},{
-__gbcommon_encmap+5908,0,255},{__gbcommon_encmap+6164,0,255},{
-__gbcommon_encmap+6420,0,255},{__gbcommon_encmap+6676,0,255},{
-__gbcommon_encmap+6932,0,255},{__gbcommon_encmap+7188,0,255},{
-__gbcommon_encmap+7444,0,255},{__gbcommon_encmap+7700,0,255},{
-__gbcommon_encmap+7956,0,255},{__gbcommon_encmap+8212,0,255},{
-__gbcommon_encmap+8468,0,255},{__gbcommon_encmap+8724,0,255},{
-__gbcommon_encmap+8980,0,255},{__gbcommon_encmap+9236,0,255},{
-__gbcommon_encmap+9492,0,255},{__gbcommon_encmap+9748,0,255},{
-__gbcommon_encmap+10004,0,255},{__gbcommon_encmap+10260,0,255},{
-__gbcommon_encmap+10516,0,255},{__gbcommon_encmap+10772,0,255},{
-__gbcommon_encmap+11028,0,255},{__gbcommon_encmap+11284,0,255},{
-__gbcommon_encmap+11540,0,255},{__gbcommon_encmap+11796,0,255},{
-__gbcommon_encmap+12052,0,255},{__gbcommon_encmap+12308,0,255},{
-__gbcommon_encmap+12564,0,255},{__gbcommon_encmap+12820,0,255},{
-__gbcommon_encmap+13076,0,255},{__gbcommon_encmap+13332,0,255},{
-__gbcommon_encmap+13588,0,255},{__gbcommon_encmap+13844,0,255},{
-__gbcommon_encmap+14100,0,255},{__gbcommon_encmap+14356,0,255},{
-__gbcommon_encmap+14612,0,255},{__gbcommon_encmap+14868,0,255},{
-__gbcommon_encmap+15124,0,255},{__gbcommon_encmap+15380,0,255},{
-__gbcommon_encmap+15636,0,255},{__gbcommon_encmap+15892,0,255},{
-__gbcommon_encmap+16148,0,255},{__gbcommon_encmap+16404,0,255},{
-__gbcommon_encmap+16660,0,255},{__gbcommon_encmap+16916,0,255},{
-__gbcommon_encmap+17172,0,255},{__gbcommon_encmap+17428,0,255},{
-__gbcommon_encmap+17684,0,255},{__gbcommon_encmap+17940,0,255},{
-__gbcommon_encmap+18196,0,255},{__gbcommon_encmap+18452,0,255},{
-__gbcommon_encmap+18708,0,255},{__gbcommon_encmap+18964,0,255},{
-__gbcommon_encmap+19220,0,255},{__gbcommon_encmap+19476,0,255},{
-__gbcommon_encmap+19732,0,255},{__gbcommon_encmap+19988,0,255},{
-__gbcommon_encmap+20244,0,255},{__gbcommon_encmap+20500,0,255},{
-__gbcommon_encmap+20756,0,255},{__gbcommon_encmap+21012,0,255},{
-__gbcommon_encmap+21268,0,255},{__gbcommon_encmap+21524,0,255},{
-__gbcommon_encmap+21780,0,255},{__gbcommon_encmap+22036,0,255},{
-__gbcommon_encmap+22292,0,255},{__gbcommon_encmap+22548,0,165},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{__gbcommon_encmap+22714,44,241},{__gbcommon_encmap+22912,12,41},{0,0,0},{0,
-0,0},{0,0,0},{__gbcommon_encmap+22942,48,107},{__gbcommon_encmap+23002,1,229},
-};
-
-static const ucs2_t __gb18030ext_decmap[2729] = {
-58566,58567,58568,58569,58570,58571,58572,58573,58574,58575,58576,58577,58578,
-58579,58580,58581,58582,58583,58584,58585,58586,58587,58588,58589,58590,58591,
-58592,58593,58594,58595,58596,58597,58598,58599,58600,58601,58602,58603,58604,
-58605,58606,58607,58608,58609,58610,58611,58612,58613,58614,58615,58616,58617,
-58618,58619,58620,58621,58622,58623,58624,58625,58626,58627,58628,U,58629,
-58630,58631,58632,58633,58634,58635,58636,58637,58638,58639,58640,58641,58642,
-58643,58644,58645,58646,58647,58648,58649,58650,58651,58652,58653,58654,58655,
-58656,58657,58658,58659,58660,58661,58662,58663,58664,58665,58666,58667,58668,
-58669,58670,58671,58672,58673,58674,58675,58676,58677,58678,58679,58680,58681,
-58682,58683,58684,58685,58686,58687,58688,58689,58690,58691,58692,58693,58694,
-58695,58696,58697,58698,58699,58700,58701,58702,58703,58704,58705,58706,58707,
-58708,58709,58710,58711,58712,58713,58714,58715,58716,58717,58718,58719,58720,
-58721,58722,58723,58724,U,58725,58726,58727,58728,58729,58730,58731,58732,
-58733,58734,58735,58736,58737,58738,58739,58740,58741,58742,58743,58744,58745,
-58746,58747,58748,58749,58750,58751,58752,58753,58754,58755,58756,58757,U,U,U,
-U,U,U,U,U,U,U,59238,59239,59240,59241,59242,59243,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,8364,
-59245,U,U,U,U,U,U,U,U,U,U,59246,59247,U,U,U,U,U,U,U,U,U,U,U,U,59248,59249,
-58758,58759,58760,58761,58762,58763,58764,58765,58766,58767,58768,58769,58770,
-58771,58772,58773,58774,58775,58776,58777,58778,58779,58780,58781,58782,58783,
-58784,58785,58786,58787,58788,58789,58790,58791,58792,58793,58794,58795,58796,
-58797,58798,58799,58800,58801,58802,58803,58804,58805,58806,58807,58808,58809,
-58810,58811,58812,58813,58814,58815,58816,58817,58818,58819,58820,U,58821,
-58822,58823,58824,58825,58826,58827,58828,58829,58830,58831,58832,58833,58834,
-58835,58836,58837,58838,58839,58840,58841,58842,58843,58844,58845,58846,58847,
-58848,58849,58850,58851,58852,58853,58854,58855,58856,58857,58858,58859,58860,
-58861,58862,58863,58864,58865,58866,58867,58868,58869,58870,58871,58872,58873,
-58874,58875,58876,58877,58878,58879,58880,58881,58882,58883,58884,58885,58886,
-58887,58888,58889,58890,58891,58892,58893,58894,58895,58896,58897,58898,58899,
-58900,58901,58902,58903,58904,58905,58906,58907,58908,58909,58910,58911,58912,
-58913,58914,58915,58916,U,58917,58918,58919,58920,58921,58922,58923,58924,
-58925,58926,58927,58928,58929,58930,58931,58932,58933,58934,58935,58936,58937,
-58938,58939,58940,58941,58942,58943,58944,58945,58946,58947,58948,58949,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,59250,59251,59252,59253,59254,59255,59256,59257,59258,59259,59260,58950,
-58951,58952,58953,58954,58955,58956,58957,58958,58959,58960,58961,58962,58963,
-58964,58965,58966,58967,58968,58969,58970,58971,58972,58973,58974,58975,58976,
-58977,58978,58979,58980,58981,58982,58983,58984,58985,58986,58987,58988,58989,
-58990,58991,58992,58993,58994,58995,58996,58997,58998,58999,59000,59001,59002,
-59003,59004,59005,59006,59007,59008,59009,59010,59011,59012,U,59013,59014,
-59015,59016,59017,59018,59019,59020,59021,59022,59023,59024,59025,59026,59027,
-59028,59029,59030,59031,59032,59033,59034,59035,59036,59037,59038,59039,59040,
-59041,59042,59043,59044,59045,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,59261,59262,59263,59264,59265,
-59266,59267,59268,59046,59047,59048,59049,59050,59051,59052,59053,59054,59055,
-59056,59057,59058,59059,59060,59061,59062,59063,59064,59065,59066,59067,59068,
-59069,59070,59071,59072,59073,59074,59075,59076,59077,59078,59079,59080,59081,
-59082,59083,59084,59085,59086,59087,59088,59089,59090,59091,59092,59093,59094,
-59095,59096,59097,59098,59099,59100,59101,59102,59103,59104,59105,59106,59107,
-59108,U,59109,59110,59111,59112,59113,59114,59115,59116,59117,59118,59119,
-59120,59121,59122,59123,59124,59125,59126,59127,59128,59129,59130,59131,59132,
-59133,59134,59135,59136,59137,59138,59139,59140,59141,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,59269,59270,59271,59272,59273,59274,59275,59276,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,59277,59278,59279,59280,59281,59282,
-59283,U,U,U,U,U,U,U,U,U,U,U,U,59284,59285,U,U,U,U,U,59286,U,U,59287,59288,
-59289,59290,59291,59292,59293,59294,59295,59142,59143,59144,59145,59146,59147,
-59148,59149,59150,59151,59152,59153,59154,59155,59156,59157,59158,59159,59160,
-59161,59162,59163,59164,59165,59166,59167,59168,59169,59170,59171,59172,59173,
-59174,59175,59176,59177,59178,59179,59180,59181,59182,59183,59184,59185,59186,
-59187,59188,59189,59190,59191,59192,59193,59194,59195,59196,59197,59198,59199,
-59200,59201,59202,59203,59204,U,59205,59206,59207,59208,59209,59210,59211,
-59212,59213,59214,59215,59216,59217,59218,59219,59220,59221,59222,59223,59224,
-59225,59226,59227,59228,59229,59230,59231,59232,59233,59234,59235,59236,59237,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,59296,59297,
-59298,59299,59300,59301,59302,59303,59304,59305,59306,59307,59308,59309,59310,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,59311,59312,
-59313,59314,59315,59316,59317,59318,59319,59320,59321,59322,59323,59324,59325,
-59326,59327,59328,59329,59330,59331,59332,59333,59334,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,59335,U,U,505,U,59337,59338,59339,59340,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,59341,59342,
-59343,59344,59345,59346,59347,59348,59349,59350,59351,59352,59353,59354,59355,
-59356,59357,59358,59359,59360,59361,59362,U,U,59363,U,59364,59365,59366,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-12350,12272,12273,12274,12275,12276,12277,12278,12279,12280,12281,12282,12283,
-U,59380,59381,59382,59383,59384,59385,59386,59387,59388,59389,59390,59391,
-59392,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,59393,59394,59395,59396,59397,59398,59399,59400,59401,59402,59403,59404,
-59405,59406,59407,57344,57345,57346,57347,57348,57349,57350,57351,57352,57353,
-57354,57355,57356,57357,57358,57359,57360,57361,57362,57363,57364,57365,57366,
-57367,57368,57369,57370,57371,57372,57373,57374,57375,57376,57377,57378,57379,
-57380,57381,57382,57383,57384,57385,57386,57387,57388,57389,57390,57391,57392,
-57393,57394,57395,57396,57397,57398,57399,57400,57401,57402,57403,57404,57405,
-57406,57407,57408,57409,57410,57411,57412,57413,57414,57415,57416,57417,57418,
-57419,57420,57421,57422,57423,57424,57425,57426,57427,57428,57429,57430,57431,
-57432,57433,57434,57435,57436,57437,57438,57439,57440,57441,57442,57443,57444,
-57445,57446,57447,57448,57449,57450,57451,57452,57453,57454,57455,57456,57457,
-57458,57459,57460,57461,57462,57463,57464,57465,57466,57467,57468,57469,57470,
-57471,57472,57473,57474,57475,57476,57477,57478,57479,57480,57481,57482,57483,
-57484,57485,57486,57487,57488,57489,57490,57491,57492,57493,57494,57495,57496,
-57497,57498,57499,57500,57501,57502,57503,57504,57505,57506,57507,57508,57509,
-57510,57511,57512,57513,57514,57515,57516,57517,57518,57519,57520,57521,57522,
-57523,57524,57525,57526,57527,57528,57529,57530,57531,57532,57533,57534,57535,
-57536,57537,57538,57539,57540,57541,57542,57543,57544,57545,57546,57547,57548,
-57549,57550,57551,57552,57553,57554,57555,57556,57557,57558,57559,57560,57561,
-57562,57563,57564,57565,57566,57567,57568,57569,57570,57571,57572,57573,57574,
-57575,57576,57577,57578,57579,57580,57581,57582,57583,57584,57585,57586,57587,
-57588,57589,57590,57591,57592,57593,57594,57595,57596,57597,57598,57599,57600,
-57601,57602,57603,57604,57605,57606,57607,57608,57609,57610,57611,57612,57613,
-57614,57615,57616,57617,57618,57619,57620,57621,57622,57623,57624,57625,57626,
-57627,57628,57629,57630,57631,57632,57633,57634,57635,57636,57637,57638,57639,
-57640,57641,57642,57643,57644,57645,57646,57647,57648,57649,57650,57651,57652,
-57653,57654,57655,57656,57657,57658,57659,57660,57661,57662,57663,57664,57665,
-57666,57667,57668,57669,57670,57671,57672,57673,57674,57675,57676,57677,57678,
-57679,57680,57681,57682,57683,57684,57685,57686,57687,57688,57689,57690,57691,
-57692,57693,57694,57695,57696,57697,57698,57699,57700,57701,57702,57703,57704,
-57705,57706,57707,57708,57709,57710,57711,57712,57713,57714,57715,57716,57717,
-57718,57719,57720,57721,57722,57723,57724,57725,57726,57727,57728,57729,57730,
-57731,57732,57733,57734,57735,57736,57737,57738,57739,57740,57741,57742,57743,
-57744,57745,57746,57747,57748,57749,57750,57751,57752,57753,57754,57755,57756,
-57757,57758,57759,57760,57761,57762,57763,57764,57765,57766,57767,57768,57769,
-57770,57771,57772,57773,57774,57775,57776,57777,57778,57779,57780,57781,57782,
-57783,57784,57785,57786,57787,57788,57789,57790,57791,57792,57793,57794,57795,
-57796,57797,57798,57799,57800,57801,57802,57803,57804,57805,57806,57807,57808,
-57809,57810,57811,57812,57813,57814,57815,57816,57817,57818,57819,57820,57821,
-57822,57823,57824,57825,57826,57827,57828,57829,57830,57831,57832,57833,57834,
-57835,57836,57837,57838,57839,57840,57841,57842,57843,57844,57845,57846,57847,
-57848,57849,57850,57851,57852,57853,57854,57855,57856,57857,57858,57859,57860,
-57861,57862,57863,57864,57865,57866,57867,57868,57869,57870,57871,57872,57873,
-57874,57875,57876,57877,57878,57879,57880,57881,57882,57883,57884,57885,57886,
-57887,57888,57889,57890,57891,57892,57893,57894,57895,57896,57897,57898,57899,
-57900,57901,57902,57903,57904,57905,57906,57907,59408,59409,59410,59411,59412,
-57908,57909,57910,57911,57912,57913,57914,57915,57916,57917,57918,57919,57920,
-57921,57922,57923,57924,57925,57926,57927,57928,57929,57930,57931,57932,57933,
-57934,57935,57936,57937,57938,57939,57940,57941,57942,57943,57944,57945,57946,
-57947,57948,57949,57950,57951,57952,57953,57954,57955,57956,57957,57958,57959,
-57960,57961,57962,57963,57964,57965,57966,57967,57968,57969,57970,57971,57972,
-57973,57974,57975,57976,57977,57978,57979,57980,57981,57982,57983,57984,57985,
-57986,57987,57988,57989,57990,57991,57992,57993,57994,57995,57996,57997,57998,
-57999,58000,58001,58002,58003,58004,58005,58006,58007,58008,58009,58010,58011,
-58012,58013,58014,58015,58016,58017,58018,58019,58020,58021,58022,58023,58024,
-58025,58026,58027,58028,58029,58030,58031,58032,58033,58034,58035,58036,58037,
-58038,58039,58040,58041,58042,58043,58044,58045,58046,58047,58048,58049,58050,
-58051,58052,58053,58054,58055,58056,58057,58058,58059,58060,58061,58062,58063,
-58064,58065,58066,58067,58068,58069,58070,58071,58072,58073,58074,58075,58076,
-58077,58078,58079,58080,58081,58082,58083,58084,58085,58086,58087,58088,58089,
-58090,58091,58092,58093,58094,58095,58096,58097,58098,58099,58100,58101,58102,
-58103,58104,58105,58106,58107,58108,58109,58110,58111,58112,58113,58114,58115,
-58116,58117,58118,58119,58120,58121,58122,58123,58124,58125,58126,58127,58128,
-58129,58130,58131,58132,58133,58134,58135,58136,58137,58138,58139,58140,58141,
-58142,58143,58144,58145,58146,58147,58148,58149,58150,58151,58152,58153,58154,
-58155,58156,58157,58158,58159,58160,58161,58162,58163,58164,58165,58166,58167,
-58168,58169,58170,58171,58172,58173,58174,58175,58176,58177,58178,58179,58180,
-58181,58182,58183,58184,58185,58186,58187,58188,58189,58190,58191,58192,58193,
-58194,58195,58196,58197,58198,58199,58200,58201,58202,58203,58204,58205,58206,
-58207,58208,58209,58210,58211,58212,58213,58214,58215,58216,58217,58218,58219,
-58220,58221,58222,58223,58224,58225,58226,58227,58228,58229,58230,58231,58232,
-58233,58234,58235,58236,58237,58238,58239,58240,58241,58242,58243,58244,58245,
-58246,58247,58248,58249,58250,58251,58252,58253,58254,58255,58256,58257,58258,
-58259,58260,58261,58262,58263,58264,58265,58266,58267,58268,58269,58270,58271,
-58272,58273,58274,58275,58276,58277,58278,58279,58280,58281,58282,58283,58284,
-58285,58286,58287,58288,58289,58290,58291,58292,58293,58294,58295,58296,58297,
-58298,58299,58300,58301,58302,58303,58304,58305,58306,58307,58308,58309,58310,
-58311,58312,58313,58314,58315,58316,58317,58318,58319,58320,58321,58322,58323,
-58324,58325,58326,58327,58328,58329,58330,58331,58332,58333,58334,58335,58336,
-58337,58338,58339,58340,58341,58342,58343,58344,58345,58346,58347,58348,58349,
-58350,58351,58352,58353,58354,58355,58356,58357,58358,58359,58360,58361,58362,
-58363,58364,58365,58366,58367,58368,58369,58370,58371,58372,58373,58374,58375,
-58376,58377,58378,58379,58380,58381,58382,58383,58384,58385,58386,58387,58388,
-58389,58390,58391,58392,58393,58394,58395,58396,58397,58398,58399,58400,58401,
-58402,58403,58404,58405,58406,58407,58408,58409,58410,58411,58412,58413,58414,
-58415,58416,58417,58418,58419,58420,58421,58422,58423,58424,58425,58426,58427,
-58428,58429,58430,58431,58432,58433,58434,58435,58436,58437,58438,58439,58440,
-58441,58442,58443,58444,58445,58446,58447,58448,58449,58450,58451,58452,58453,
-58454,58455,58456,58457,58458,58459,58460,58461,58462,58463,58464,58465,58466,
-58467,58468,58469,58470,58471,11905,59414,59415,59416,11908,13427,13383,11912,
-11915,59422,13726,13850,13838,11916,11927,14702,14616,59430,14799,14815,14963,
-14800,59435,59436,15182,15470,15584,11943,59441,59442,11946,16470,16735,11950,
-17207,11955,11958,11959,59451,17329,17324,11963,17373,17622,18017,17996,59459,
-U,18211,18217,18300,18317,11978,18759,18810,18813,18818,18819,18821,18822,
-18847,18843,18871,18870,59476,59477,19619,19615,19616,19617,19575,19618,19731,
-19732,19733,19734,19735,19736,19737,19886,59492,58472,58473,58474,58475,58476,
-58477,58478,58479,58480,58481,58482,58483,58484,58485,58486,58487,58488,58489,
-58490,58491,58492,58493,58494,58495,58496,58497,58498,58499,58500,58501,58502,
-58503,58504,58505,58506,58507,58508,58509,58510,58511,58512,58513,58514,58515,
-58516,58517,58518,58519,58520,58521,58522,58523,58524,58525,58526,58527,58528,
-58529,58530,58531,58532,58533,58534,58535,58536,58537,58538,58539,58540,58541,
-58542,58543,58544,58545,58546,58547,58548,58549,58550,58551,58552,58553,58554,
-58555,58556,58557,58558,58559,58560,58561,58562,58563,58564,58565,
-};
-
-static const struct dbcs_index gb18030ext_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__gb18030ext_decmap+0,64,
-160},{__gb18030ext_decmap+97,64,254},{__gb18030ext_decmap+288,64,160},{
-__gb18030ext_decmap+385,64,254},{__gb18030ext_decmap+576,64,254},{
-__gb18030ext_decmap+767,64,254},{__gb18030ext_decmap+958,64,254},{
-__gb18030ext_decmap+1149,150,254},{__gb18030ext_decmap+1254,88,254},{
-__gb18030ext_decmap+1421,161,254},{__gb18030ext_decmap+1515,161,254},{
-__gb18030ext_decmap+1609,161,254},{__gb18030ext_decmap+1703,161,254},{
-__gb18030ext_decmap+1797,161,254},{__gb18030ext_decmap+1891,161,254},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-__gb18030ext_decmap+1985,250,254},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__gb18030ext_decmap
-+1990,161,254},{__gb18030ext_decmap+2084,161,254},{__gb18030ext_decmap+2178,
-161,254},{__gb18030ext_decmap+2272,161,254},{__gb18030ext_decmap+2366,161,254
-},{__gb18030ext_decmap+2460,161,254},{__gb18030ext_decmap+2554,80,254},{0,0,0
-},
-};
-
-static const DBCHAR __gb18030ext_encmap[3227] = {
-43199,41699,65104,N,N,65108,N,N,N,65111,N,N,65112,65117,N,N,N,N,N,N,N,N,N,N,
-65118,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65131,N,N,65134,N,N,N,65137,N,N,N,N,65139,
-N,N,65140,65141,N,N,N,65145,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65156,43402,43403,
-43404,43405,43406,43407,43408,43409,43410,43411,43412,43413,43401,65110,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,65109,65114,65116,N,N,N,N,N,N,N,N,N,N,N,65115,65120,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65119,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65122,65125,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65123,
-65124,65128,65129,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,65130,65135,65136,65138,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65144,N,N,N,N,65143,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65146,65147,65149,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65148,65152,N,N,N,N,N,65153,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-65154,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65155,65157,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65158,
-N,N,65159,N,N,N,N,65160,65161,N,65162,65163,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,65165,N,N,N,65164,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65167,
-65166,65174,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,65171,65172,65173,65175,65170,65176,65177,65178,65179,65180,65181,
-65182,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65183,
-43681,43682,43683,43684,43685,43686,43687,43688,43689,43690,43691,43692,43693,
-43694,43695,43696,43697,43698,43699,43700,43701,43702,43703,43704,43705,43706,
-43707,43708,43709,43710,43711,43712,43713,43714,43715,43716,43717,43718,43719,
-43720,43721,43722,43723,43724,43725,43726,43727,43728,43729,43730,43731,43732,
-43733,43734,43735,43736,43737,43738,43739,43740,43741,43742,43743,43744,43745,
-43746,43747,43748,43749,43750,43751,43752,43753,43754,43755,43756,43757,43758,
-43759,43760,43761,43762,43763,43764,43765,43766,43767,43768,43769,43770,43771,
-43772,43773,43774,43937,43938,43939,43940,43941,43942,43943,43944,43945,43946,
-43947,43948,43949,43950,43951,43952,43953,43954,43955,43956,43957,43958,43959,
-43960,43961,43962,43963,43964,43965,43966,43967,43968,43969,43970,43971,43972,
-43973,43974,43975,43976,43977,43978,43979,43980,43981,43982,43983,43984,43985,
-43986,43987,43988,43989,43990,43991,43992,43993,43994,43995,43996,43997,43998,
-43999,44000,44001,44002,44003,44004,44005,44006,44007,44008,44009,44010,44011,
-44012,44013,44014,44015,44016,44017,44018,44019,44020,44021,44022,44023,44024,
-44025,44026,44027,44028,44029,44030,44193,44194,44195,44196,44197,44198,44199,
-44200,44201,44202,44203,44204,44205,44206,44207,44208,44209,44210,44211,44212,
-44213,44214,44215,44216,44217,44218,44219,44220,44221,44222,44223,44224,44225,
-44226,44227,44228,44229,44230,44231,44232,44233,44234,44235,44236,44237,44238,
-44239,44240,44241,44242,44243,44244,44245,44246,44247,44248,44249,44250,44251,
-44252,44253,44254,44255,44256,44257,44258,44259,44260,44261,44262,44263,44264,
-44265,44266,44267,44268,44269,44270,44271,44272,44273,44274,44275,44276,44277,
-44278,44279,44280,44281,44282,44283,44284,44285,44286,44449,44450,44451,44452,
-44453,44454,44455,44456,44457,44458,44459,44460,44461,44462,44463,44464,44465,
-44466,44467,44468,44469,44470,44471,44472,44473,44474,44475,44476,44477,44478,
-44479,44480,44481,44482,44483,44484,44485,44486,44487,44488,44489,44490,44491,
-44492,44493,44494,44495,44496,44497,44498,44499,44500,44501,44502,44503,44504,
-44505,44506,44507,44508,44509,44510,44511,44512,44513,44514,44515,44516,44517,
-44518,44519,44520,44521,44522,44523,44524,44525,44526,44527,44528,44529,44530,
-44531,44532,44533,44534,44535,44536,44537,44538,44539,44540,44541,44542,44705,
-44706,44707,44708,44709,44710,44711,44712,44713,44714,44715,44716,44717,44718,
-44719,44720,44721,44722,44723,44724,44725,44726,44727,44728,44729,44730,44731,
-44732,44733,44734,44735,44736,44737,44738,44739,44740,44741,44742,44743,44744,
-44745,44746,44747,44748,44749,44750,44751,44752,44753,44754,44755,44756,44757,
-44758,44759,44760,44761,44762,44763,44764,44765,44766,44767,44768,44769,44770,
-44771,44772,44773,44774,44775,44776,44777,44778,44779,44780,44781,44782,44783,
-44784,44785,44786,44787,44788,44789,44790,44791,44792,44793,44794,44795,44796,
-44797,44798,44961,44962,44963,44964,44965,44966,44967,44968,44969,44970,44971,
-44972,44973,44974,44975,44976,44977,44978,44979,44980,44981,44982,44983,44984,
-44985,44986,44987,44988,44989,44990,44991,44992,44993,44994,44995,44996,44997,
-44998,44999,45000,45001,45002,45003,45004,45005,45006,45007,45008,45009,45010,
-45011,45012,45013,45014,45015,45016,45017,45018,45019,45020,45021,45022,45023,
-45024,45025,45026,45027,45028,45029,45030,45031,45032,45033,45034,45035,45036,
-45037,45038,45039,45040,45041,45042,45043,45044,45045,45046,45047,45048,45049,
-45050,45051,45052,45053,45054,63649,63650,63651,63652,63653,63654,63655,63656,
-63657,63658,63659,63660,63661,63662,63663,63664,63665,63666,63667,63668,63669,
-63670,63671,63672,63673,63674,63675,63676,63677,63678,63679,63680,63681,63682,
-63683,63684,63685,63686,63687,63688,63689,63690,63691,63692,63693,63694,63695,
-63696,63697,63698,63699,63700,63701,63702,63703,63704,63705,63706,63707,63708,
-63709,63710,63711,63712,63713,63714,63715,63716,63717,63718,63719,63720,63721,
-63722,63723,63724,63725,63726,63727,63728,63729,63730,63731,63732,63733,63734,
-63735,63736,63737,63738,63739,63740,63741,63742,63905,63906,63907,63908,63909,
-63910,63911,63912,63913,63914,63915,63916,63917,63918,63919,63920,63921,63922,
-63923,63924,63925,63926,63927,63928,63929,63930,63931,63932,63933,63934,63935,
-63936,63937,63938,63939,63940,63941,63942,63943,63944,63945,63946,63947,63948,
-63949,63950,63951,63952,63953,63954,63955,63956,63957,63958,63959,63960,63961,
-63962,63963,63964,63965,63966,63967,63968,63969,63970,63971,63972,63973,63974,
-63975,63976,63977,63978,63979,63980,63981,63982,63983,63984,63985,63986,63987,
-63988,63989,63990,63991,63992,63993,63994,63995,63996,63997,63998,64161,64162,
-64163,64164,64165,64166,64167,64168,64169,64170,64171,64172,64173,64174,64175,
-64176,64177,64178,64179,64180,64181,64182,64183,64184,64185,64186,64187,64188,
-64189,64190,64191,64192,64193,64194,64195,64196,64197,64198,64199,64200,64201,
-64202,64203,64204,64205,64206,64207,64208,64209,64210,64211,64212,64213,64214,
-64215,64216,64217,64218,64219,64220,64221,64222,64223,64224,64225,64226,64227,
-64228,64229,64230,64231,64232,64233,64234,64235,64236,64237,64238,64239,64240,
-64241,64242,64243,64244,64245,64246,64247,64248,64249,64250,64251,64252,64253,
-64254,64417,64418,64419,64420,64421,64422,64423,64424,64425,64426,64427,64428,
-64429,64430,64431,64432,64433,64434,64435,64436,64437,64438,64439,64440,64441,
-64442,64443,64444,64445,64446,64447,64448,64449,64450,64451,64452,64453,64454,
-64455,64456,64457,64458,64459,64460,64461,64462,64463,64464,64465,64466,64467,
-64468,64469,64470,64471,64472,64473,64474,64475,64476,64477,64478,64479,64480,
-64481,64482,64483,64484,64485,64486,64487,64488,64489,64490,64491,64492,64493,
-64494,64495,64496,64497,64498,64499,64500,64501,64502,64503,64504,64505,64506,
-64507,64508,64509,64510,64673,64674,64675,64676,64677,64678,64679,64680,64681,
-64682,64683,64684,64685,64686,64687,64688,64689,64690,64691,64692,64693,64694,
-64695,64696,64697,64698,64699,64700,64701,64702,64703,64704,64705,64706,64707,
-64708,64709,64710,64711,64712,64713,64714,64715,64716,64717,64718,64719,64720,
-64721,64722,64723,64724,64725,64726,64727,64728,64729,64730,64731,64732,64733,
-64734,64735,64736,64737,64738,64739,64740,64741,64742,64743,64744,64745,64746,
-64747,64748,64749,64750,64751,64752,64753,64754,64755,64756,64757,64758,64759,
-64760,64761,64762,64763,64764,64765,64766,64929,64930,64931,64932,64933,64934,
-64935,64936,64937,64938,64939,64940,64941,64942,64943,64944,64945,64946,64947,
-64948,64949,64950,64951,64952,64953,64954,64955,64956,64957,64958,64959,64960,
-64961,64962,64963,64964,64965,64966,64967,64968,64969,64970,64971,64972,64973,
-64974,64975,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,
-64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,
-65000,65001,65002,65003,65004,65005,65006,65007,65008,65009,65010,65011,65012,
-65013,65014,65015,65016,65017,65018,65019,65020,65021,65022,65185,65186,65187,
-65188,65189,65190,65191,65192,65193,65194,65195,65196,65197,65198,65199,65200,
-65201,65202,65203,65204,65205,65206,65207,65208,65209,65210,65211,65212,65213,
-65214,65215,65216,65217,65218,65219,65220,65221,65222,65223,65224,65225,65226,
-65227,65228,65229,65230,65231,65232,65233,65234,65235,65236,65237,65238,65239,
-65240,65241,65242,65243,65244,65245,65246,65247,65248,65249,65250,65251,65252,
-65253,65254,65255,65256,65257,65258,65259,65260,65261,65262,65263,65264,65265,
-65266,65267,65268,65269,65270,65271,65272,65273,65274,65275,65276,65277,65278,
-41280,41281,41282,41283,41284,41285,41286,41287,41288,41289,41290,41291,41292,
-41293,41294,41295,41296,41297,41298,41299,41300,41301,41302,41303,41304,41305,
-41306,41307,41308,41309,41310,41311,41312,41313,41314,41315,41316,41317,41318,
-41319,41320,41321,41322,41323,41324,41325,41326,41327,41328,41329,41330,41331,
-41332,41333,41334,41335,41336,41337,41338,41339,41340,41341,41342,41344,41345,
-41346,41347,41348,41349,41350,41351,41352,41353,41354,41355,41356,41357,41358,
-41359,41360,41361,41362,41363,41364,41365,41366,41367,41368,41369,41370,41371,
-41372,41373,41374,41375,41376,41536,41537,41538,41539,41540,41541,41542,41543,
-41544,41545,41546,41547,41548,41549,41550,41551,41552,41553,41554,41555,41556,
-41557,41558,41559,41560,41561,41562,41563,41564,41565,41566,41567,41568,41569,
-41570,41571,41572,41573,41574,41575,41576,41577,41578,41579,41580,41581,41582,
-41583,41584,41585,41586,41587,41588,41589,41590,41591,41592,41593,41594,41595,
-41596,41597,41598,41600,41601,41602,41603,41604,41605,41606,41607,41608,41609,
-41610,41611,41612,41613,41614,41615,41616,41617,41618,41619,41620,41621,41622,
-41623,41624,41625,41626,41627,41628,41629,41630,41631,41632,41792,41793,41794,
-41795,41796,41797,41798,41799,41800,41801,41802,41803,41804,41805,41806,41807,
-41808,41809,41810,41811,41812,41813,41814,41815,41816,41817,41818,41819,41820,
-41821,41822,41823,41824,41825,41826,41827,41828,41829,41830,41831,41832,41833,
-41834,41835,41836,41837,41838,41839,41840,41841,41842,41843,41844,41845,41846,
-41847,41848,41849,41850,41851,41852,41853,41854,41856,41857,41858,41859,41860,
-41861,41862,41863,41864,41865,41866,41867,41868,41869,41870,41871,41872,41873,
-41874,41875,41876,41877,41878,41879,41880,41881,41882,41883,41884,41885,41886,
-41887,41888,42048,42049,42050,42051,42052,42053,42054,42055,42056,42057,42058,
-42059,42060,42061,42062,42063,42064,42065,42066,42067,42068,42069,42070,42071,
-42072,42073,42074,42075,42076,42077,42078,42079,42080,42081,42082,42083,42084,
-42085,42086,42087,42088,42089,42090,42091,42092,42093,42094,42095,42096,42097,
-42098,42099,42100,42101,42102,42103,42104,42105,42106,42107,42108,42109,42110,
-42112,42113,42114,42115,42116,42117,42118,42119,42120,42121,42122,42123,42124,
-42125,42126,42127,42128,42129,42130,42131,42132,42133,42134,42135,42136,42137,
-42138,42139,42140,42141,42142,42143,42144,42304,42305,42306,42307,42308,42309,
-42310,42311,42312,42313,42314,42315,42316,42317,42318,42319,42320,42321,42322,
-42323,42324,42325,42326,42327,42328,42329,42330,42331,42332,42333,42334,42335,
-42336,42337,42338,42339,42340,42341,42342,42343,42344,42345,42346,42347,42348,
-42349,42350,42351,42352,42353,42354,42355,42356,42357,42358,42359,42360,42361,
-42362,42363,42364,42365,42366,42368,42369,42370,42371,42372,42373,42374,42375,
-42376,42377,42378,42379,42380,42381,42382,42383,42384,42385,42386,42387,42388,
-42389,42390,42391,42392,42393,42394,42395,42396,42397,42398,42399,42400,42560,
-42561,42562,42563,42564,42565,42566,42567,42568,42569,42570,42571,42572,42573,
-42574,42575,42576,42577,42578,42579,42580,42581,42582,42583,42584,42585,42586,
-42587,42588,42589,42590,42591,42592,42593,42594,42595,42596,42597,42598,42599,
-42600,42601,42602,42603,42604,42605,42606,42607,42608,42609,42610,42611,42612,
-42613,42614,42615,42616,42617,42618,42619,42620,42621,42622,42624,42625,42626,
-42627,42628,42629,42630,42631,42632,42633,42634,42635,42636,42637,42638,42639,
-42640,42641,42642,42643,42644,42645,42646,42647,42648,42649,42650,42651,42652,
-42653,42654,42655,42656,42816,42817,42818,42819,42820,42821,42822,42823,42824,
-42825,42826,42827,42828,42829,42830,42831,42832,42833,42834,42835,42836,42837,
-42838,42839,42840,42841,42842,42843,42844,42845,42846,42847,42848,42849,42850,
-42851,42852,42853,42854,42855,42856,42857,42858,42859,42860,42861,42862,42863,
-42864,42865,42866,42867,42868,42869,42870,42871,42872,42873,42874,42875,42876,
-42877,42878,42880,42881,42882,42883,42884,42885,42886,42887,42888,42889,42890,
-42891,42892,42893,42894,42895,42896,42897,42898,42899,42900,42901,42902,42903,
-42904,42905,42906,42907,42908,42909,42910,42911,42912,41643,41644,41645,41646,
-41647,41648,N,41700,41711,41712,41725,41726,42228,42229,42230,42231,42232,
-42233,42234,42235,42236,42237,42238,42487,42488,42489,42490,42491,42492,42493,
-42494,42681,42682,42683,42684,42685,42686,42687,42688,42713,42714,42715,42716,
-42717,42718,42719,42732,42733,42739,42742,42743,42744,42745,42746,42747,42748,
-42749,42750,42946,42947,42948,42949,42950,42951,42952,42953,42954,42955,42956,
-42957,42958,42959,42960,42994,42995,42996,42997,42998,42999,43000,43001,43002,
-43003,43004,43005,43006,43158,43159,43160,43161,43162,43163,43164,43165,43166,
-43167,43168,43196,N,43201,43202,43203,43204,43242,43243,43244,43245,43246,
-43247,43248,43249,43250,43251,43252,43253,43254,43255,43256,43257,43258,43259,
-43260,43261,43262,43352,43355,43357,43358,43359,N,N,N,N,N,N,N,N,N,N,N,N,N,
-43415,43416,43417,43418,43419,43420,43421,43422,43423,43424,43425,43426,43427,
-43504,43505,43506,43507,43508,43509,43510,43511,43512,43513,43514,43515,43516,
-43517,43518,55290,55291,55292,55293,55294,N,65105,65106,65107,N,N,N,N,N,65113,
-N,N,N,N,N,N,N,65121,N,N,N,N,65126,65127,N,N,N,N,65132,65133,N,N,N,N,N,N,N,N,
-65142,N,N,N,N,N,N,N,65150,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65168,65169,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,65184,
-};
-
-static const struct unim_index gb18030ext_encmap[256] = {
-{0,0,0},{__gb18030ext_encmap+0,249,249},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__gb18030ext_encmap+1,172,172
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{__gb18030ext_encmap+2,129,202},{
-__gb18030ext_encmap+76,240,251},{__gb18030ext_encmap+88,62,62},{0,0,0},{0,0,0
-},{0,0,0},{__gb18030ext_encmap+89,71,115},{__gb18030ext_encmap+134,158,158},{
-__gb18030ext_encmap+135,14,26},{0,0,0},{0,0,0},{__gb18030ext_encmap+148,24,223
-},{__gb18030ext_encmap+348,115,115},{__gb18030ext_encmap+349,78,78},{
-__gb18030ext_encmap+350,110,224},{0,0,0},{0,0,0},{0,0,0},{__gb18030ext_encmap+
-465,86,86},{__gb18030ext_encmap+466,95,95},{0,0,0},{__gb18030ext_encmap+467,
-55,221},{__gb18030ext_encmap+634,214,214},{0,0,0},{__gb18030ext_encmap+635,76,
-97},{__gb18030ext_encmap+657,35,141},{0,0,0},{__gb18030ext_encmap+764,71,183},
-{0,0,0},{0,0,0},{__gb18030ext_encmap+877,119,163},{__gb18030ext_encmap+922,19,
-174},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{__gb18030ext_encmap+1078,0,255},{__gb18030ext_encmap+1334,0,255
-},{__gb18030ext_encmap+1590,0,255},{__gb18030ext_encmap+1846,0,255},{
-__gb18030ext_encmap+2102,0,255},{__gb18030ext_encmap+2358,0,255},{
-__gb18030ext_encmap+2614,0,255},{__gb18030ext_encmap+2870,0,255},{
-__gb18030ext_encmap+3126,0,100},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-};
-
-
-static const struct _gb18030_to_unibmp_ranges {
-    Py_UNICODE   first, last;
-    DBCHAR       base;
-} gb18030_to_unibmp_ranges[] = {
-{128,163,0},{165,166,36},{169,175,38},{178,182,45},{184,214,50},{216,223,81},{
-226,231,89},{235,235,95},{238,241,96},{244,246,100},{248,248,103},{251,251,104
-},{253,256,105},{258,274,109},{276,282,126},{284,298,133},{300,323,148},{325,
-327,172},{329,332,175},{334,362,179},{364,461,208},{463,463,306},{465,465,307
-},{467,467,308},{469,469,309},{471,471,310},{473,473,311},{475,475,312},{477,
-504,313},{506,592,341},{594,608,428},{610,710,443},{712,712,544},{716,728,545
-},{730,912,558},{930,930,741},{938,944,742},{962,962,749},{970,1024,750},{1026
-,1039,805},{1104,1104,819},{1106,8207,820},{8209,8210,7922},{8215,8215,7924},{
-8218,8219,7925},{8222,8228,7927},{8231,8239,7934},{8241,8241,7943},{8244,8244,
-7944},{8246,8250,7945},{8252,8363,7950},{8365,8450,8062},{8452,8452,8148},{
-8454,8456,8149},{8458,8469,8152},{8471,8480,8164},{8482,8543,8174},{8556,8559,
-8236},{8570,8591,8240},{8596,8597,8262},{8602,8711,8264},{8713,8718,8374},{
-8720,8720,8380},{8722,8724,8381},{8726,8729,8384},{8731,8732,8388},{8737,8738,
-8390},{8740,8740,8392},{8742,8742,8393},{8748,8749,8394},{8751,8755,8396},{
-8760,8764,8401},{8766,8775,8406},{8777,8779,8416},{8781,8785,8419},{8787,8799,
-8424},{8802,8803,8437},{8808,8813,8439},{8816,8852,8445},{8854,8856,8482},{
-8858,8868,8485},{8870,8894,8496},{8896,8977,8521},{8979,9311,8603},{9322,9331,
-8936},{9372,9471,8946},{9548,9551,9046},{9588,9600,9050},{9616,9618,9063},{
-9622,9631,9066},{9634,9649,9076},{9652,9659,9092},{9662,9669,9100},{9672,9674,
-9108},{9676,9677,9111},{9680,9697,9113},{9702,9732,9131},{9735,9736,9162},{
-9738,9791,9164},{9793,9793,9218},{9795,11904,9219},{11906,11907,11329},{11909,
-11911,11331},{11913,11914,11334},{11917,11926,11336},{11928,11942,11346},{
-11944,11945,11361},{11947,11949,11363},{11951,11954,11366},{11956,11957,11370
-},{11960,11962,11372},{11964,11977,11375},{11979,12271,11389},{12284,12287,
-11682},{12292,12292,11686},{12312,12316,11687},{12319,12320,11692},{12330,
-12349,11694},{12351,12352,11714},{12436,12442,11716},{12447,12448,11723},{
-12535,12539,11725},{12543,12548,11730},{12586,12831,11736},{12842,12848,11982
-},{12850,12962,11989},{12964,13197,12102},{13200,13211,12336},{13215,13216,
-12348},{13218,13251,12350},{13253,13261,12384},{13263,13264,12393},{13267,
-13268,12395},{13270,13382,12397},{13384,13426,12510},{13428,13725,12553},{
-13727,13837,12851},{13839,13849,12962},{13851,14615,12973},{14617,14701,13738
-},{14703,14798,13823},{14801,14814,13919},{14816,14962,13933},{14964,15181,
-14080},{15183,15469,14298},{15471,15583,14585},{15585,16469,14698},{16471,
-16734,15583},{16736,17206,15847},{17208,17323,16318},{17325,17328,16434},{
-17330,17372,16438},{17374,17621,16481},{17623,17995,16729},{17997,18016,17102
-},{18018,18210,17122},{18212,18216,17315},{18218,18299,17320},{18301,18316,
-17402},{18318,18758,17418},{18760,18809,17859},{18811,18812,17909},{18814,
-18817,17911},{18820,18820,17915},{18823,18842,17916},{18844,18846,17936},{
-18848,18869,17939},{18872,19574,17961},{19576,19614,18664},{19620,19730,18703
-},{19738,19885,18814},{19887,19967,18962},{40870,55295,19043},{59244,59244,
-33469},{59336,59336,33470},{59367,59379,33471},{59413,59413,33484},{59417,
-59421,33485},{59423,59429,33490},{59431,59434,33497},{59437,59440,33501},{
-59443,59450,33505},{59452,59458,33513},{59460,59475,33520},{59478,59491,33536
-},{59493,63787,33550},{63789,63864,37845},{63866,63892,37921},{63894,63974,
-37948},{63976,63984,38029},{63986,64011,38038},{64016,64016,38064},{64018,
-64018,38065},{64021,64023,38066},{64025,64030,38069},{64034,64034,38075},{
-64037,64038,38076},{64042,65071,38078},{65074,65074,39108},{65093,65096,39109
-},{65107,65107,39113},{65112,65112,39114},{65127,65127,39115},{65132,65280,
-39116},{65375,65503,39265},{65510,65535,39394},{0,0,39420}};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_hk.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_hk.h
deleted file mode 100644
index 3a7c76c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_hk.h
+++ /dev/null
@@ -1,2378 +0,0 @@
-static const ucs2_t __big5hkscs_decmap[6219] = {
-17392,19506,17923,17830,17784,29287,19831,17843,31921,19682,31941,15253,18230,
-18244,19527,19520,17087,13847,29522,28299,28882,19543,41809,18255,17882,19589,
-31852,19719,19108,18081,27427,29221,23124,6755,15878,16225,26189,22267,U,
-32149,22813,35769,15860,38708,31727,23515,7518,23204,13861,40624,23249,23479,
-23804,26478,34195,39237,29793,29853,12736,12737,12738,12739,12740,268,12741,
-209,205,12742,12743,203,8168,12744,202,12745,12746,12747,12748,270,12749,
-12750,256,193,461,192,274,201,282,200,332,211,465,210,U,7870,U,7872,202,257,
-225,462,224,593,275,233,283,232,299,237,464,236,333,243,466,242,363,250,468,
-249,470,472,474,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,476,252,U,7871,U,7873,234,609,9178,9179,41897,4421,U,25866,U,U,20029,
-28381,40270,37343,U,U,30517,25745,20250,20264,20392,20822,20852,20892,20964,
-21153,21160,21307,21326,21457,21464,22242,22768,22788,22791,22834,22836,23398,
-23454,23455,23706,24198,24635,25993,26622,26628,26725,27982,28860,30005,32420,
-32428,32442,32455,32463,32479,32518,32567,33402,33487,33647,35270,35774,35810,
-36710,36711,36718,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,29713,31996,32205,26950,31433,21031,U,U,U,U,37260,30904,37214,32956,U,
-36107,33014,2535,U,U,32927,40647,19661,40393,40460,19518,40438,28686,40458,
-41267,13761,U,28314,33342,29977,U,18705,39532,39567,40857,31111,33900,7626,
-1488,10982,20004,20097,20096,20103,20159,20203,20279,13388,20413,15944,20483,
-20616,13437,13459,13477,20870,22789,20955,20988,20997,20105,21113,21136,21287,
-13767,21417,13649,21424,13651,21442,21539,13677,13682,13953,21651,21667,21684,
-21689,21712,21743,21784,21795,21800,13720,21823,13733,13759,21975,13765,32132,
-21797,U,3138,3349,20779,21904,11462,14828,833,36422,19896,38117,16467,32958,
-30586,11320,14900,18389,33117,27122,19946,25821,3452,4020,3285,4340,25741,
-36478,3734,3083,3940,11433,33366,17619,U,3398,39501,33001,18420,20135,11458,
-39602,14951,38388,16365,13574,21191,38868,30920,11588,40302,38933,U,17369,
-24741,25780,21731,11596,11210,4215,14843,4207,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,26330,26390,31136,25834,20562,3139,36456,
-8609,35660,1841,U,18443,425,16378,22643,11661,U,17864,1276,24727,3916,3478,
-21881,16571,17338,U,19124,10854,4253,33194,39157,3484,25465,14846,10101,36288,
-22177,25724,15939,U,42497,3593,10959,11465,U,4296,14786,14738,14854,33435,
-13688,24137,8391,22098,3889,11442,38688,13500,27709,20027,U,U,30068,11915,
-8712,42587,36045,3706,3124,26652,32659,4303,10243,10553,13819,20963,3724,3981,
-3754,16275,3888,3399,4431,3660,U,3755,2985,3400,4288,4413,16377,9878,25650,
-4013,13300,30265,11214,3454,3455,11345,11349,14872,3736,4295,3886,42546,27472,
-36050,36249,36042,38314,21708,33476,21945,U,40643,39974,39606,30558,11758,
-28992,33133,33004,23580,25970,33076,14231,21343,32957,37302,3834,3599,3703,
-3835,13789,19947,13833,3286,22191,10165,4297,3600,3704,4216,4424,33287,5205,
-3705,20048,11684,23124,4125,4126,4341,4342,22428,3601,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,30356,33485,4021,3707,20862,14083,
-4022,4480,21208,41661,18906,6202,16759,33404,22681,21096,13850,22333,31666,
-23400,18432,19244,40743,18919,39967,39821,23412,12605,22011,13810,22153,20008,
-22786,7105,63608,38737,134,20059,20155,13630,23587,24401,24516,14586,25164,
-25909,27514,27701,27706,28780,29227,20012,29357,18665,32594,31035,31993,32595,
-25194,13505,U,25419,32770,32896,26130,26961,21341,34916,35265,30898,35744,
-36125,38021,38264,38271,38376,36367,38886,39029,39118,39134,39267,38928,40060,
-40479,40644,27503,63751,20023,135,38429,25143,38050,20539,28158,40051,40870,
-15817,34959,16718,28791,23797,19232,20941,13657,23856,24866,35378,36775,37366,
-29073,26393,29626,12929,41223,15499,6528,19216,30948,29698,20910,34575,16393,
-27235,41658,16931,34319,2671,31274,39239,35562,38741,28749,21284,8318,37876,
-30425,35299,40871,30685,20131,20464,20668,20015,20247,40872,21556,32139,22674,
-22736,7606,24210,24217,24514,10002,25995,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,13305,26905,27203,15459,27903,U,29184,17669,
-29580,16091,18963,23317,29881,35715,23716,22165,31379,31724,31939,32364,33528,
-34199,40873,34960,40874,36537,40875,36815,34143,39392,37409,40876,36281,5183,
-16497,17058,23066,U,U,U,39016,26475,17014,22333,U,34262,18811,33471,28941,
-19585,28020,23931,27413,28606,40877,40878,23446,40879,26343,32347,28247,31178,
-15752,17603,12886,10134,17306,17718,U,23765,15130,35577,23672,15634,13649,
-23928,40882,29015,17752,16620,7715,19575,14712,13386,420,27713,35532,20404,
-569,22975,33132,38998,39162,24379,2975,U,8641,35181,16642,18107,36985,16135,
-40883,41397,16632,14294,18167,27718,16764,34482,29695,17773,14548,21658,17761,
-17691,19849,19579,19830,17898,16328,19215,13921,17630,17597,16877,23870,23880,
-23894,15868,14351,23972,23993,14368,14392,24130,24253,24357,24451,14600,14612,
-14655,14669,24791,24893,23781,14729,25015,25017,25039,14776,25132,25232,25317,
-25368,14840,22193,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,14851,25570,25595,25607,25690,14923,25792,23829,22049,40863,14999,
-25990,15037,26111,26195,15090,26258,15138,26390,15170,26532,26624,15192,26698,
-26756,15218,15217,15227,26889,26947,29276,26980,27039,27013,15292,27094,15325,
-27237,27252,27249,27266,15340,27289,15346,27307,27317,27348,27382,27521,27585,
-27626,27765,27818,15563,27906,27910,27942,28033,15599,28068,28081,28181,28184,
-28201,28294,35264,28347,28386,28378,40831,28392,28393,28452,28468,15686,16193,
-28545,28606,15722,15733,29111,23705,15754,28716,15761,28752,28756,28783,28799,
-28809,805,17345,13809,3800,16087,22462,28371,28990,22496,13902,27042,35817,
-23412,31305,22753,38105,31333,31357,22956,31419,31408,31426,31427,29137,25741,
-16842,31450,31453,31466,16879,21682,23553,31499,31573,31529,21262,23806,31650,
-31599,33692,23476,27775,31696,33825,31634,U,23840,15789,23653,33938,31738,U,
-31797,23745,31812,31875,18562,31910,26237,17784,31945,31943,31974,31860,31987,
-31989,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-32359,17693,28228,32093,28374,29837,32137,32171,28981,32179,U,16471,24617,
-32228,15635,32245,6137,32229,33645,U,24865,24922,32366,32402,17195,37996,
-32295,32576,32577,32583,31030,25296,39393,32663,25425,32675,5729,104,17756,
-14182,17667,33594,32762,25737,U,32776,32797,U,32815,41095,27843,32827,32828,
-32865,10004,18825,26150,15843,26344,26405,32935,35400,33031,33050,22704,9974,
-27775,25752,20408,25831,5258,33304,6238,27219,19045,19093,17530,33321,2829,
-27218,15742,20473,5373,34018,33634,27402,18855,13616,6003,15864,33450,26907,
-63892,16859,34123,33488,33562,3606,6068,14017,12669,13658,33403,33506,33560,
-16011,28067,27397,27543,13774,15807,33565,21996,33669,17675,28069,33708,U,
-33747,13438,28372,27223,34138,13462,28226,12015,33880,23524,33905,15827,17636,
-27303,33866,15541,31064,U,27542,28279,28227,34014,U,33681,17568,33939,34020,
-23697,16960,23744,17731,34100,23282,28313,17703,34163,17686,26559,34326,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,34341,34363,
-34241,28808,34306,5506,28877,63922,17770,34344,13896,6306,21495,29594,34430,
-34673,41208,34798,11303,34737,34778,34831,22113,34412,26710,17935,34885,34886,
-30176,15801,30180,34910,34972,18011,34996,34997,25537,35013,30583,30479,35207,
-35210,U,U,35239,35260,35365,35303,31012,31421,35484,30611,37374,35472,31321,
-31465,31546,16271,18195,31544,29052,35596,35615,21552,21861,35647,35660,35661,
-35497,19066,35728,35739,35503,5855,17941,34895,35995,32084,32143,63956,14117,
-32083,36054,32152,32189,36114,36099,6416,36059,28764,36113,19657,16080,36265,
-32770,4116,18826,15228,33212,28940,31463,36525,36534,36547,37588,36633,36653,
-33637,33810,36773,37635,41631,2640,36787,18730,35294,34109,15803,24312,12898,
-36857,40980,34492,34049,8997,14720,28375,36919,34108,31422,36961,34156,34315,
-37032,34579,37060,34534,37038,U,37223,15088,37289,37316,31916,35123,7817,
-37390,27807,37441,37474,21945,U,35526,15515,35596,21979,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,3377,37676,37739,35553,35819,
-28815,23235,35554,35557,18789,37444,35820,35897,35839,37747,37979,36540,38277,
-38310,37926,38304,28662,17081,9850,34520,4732,15918,18911,27676,38523,38550,
-16748,38563,28373,25050,38582,30965,35552,38589,21452,18849,27832,628,25616,
-37039,37093,19153,6421,13066,38705,34370,38710,18959,17725,17797,19177,28789,
-23361,38683,U,37333,38743,23370,37355,38751,37925,20688,12471,12476,38793,
-38815,38833,38846,38848,38866,38880,21612,38894,29724,37939,U,38901,37917,
-31098,19153,38964,38963,38987,39014,15118,29045,15697,1584,16732,22278,39114,
-39095,39112,39111,19199,27943,5843,21936,39137,39142,39148,37752,39225,18985,
-19314,38999,39173,39413,39436,39483,39440,39512,22309,14020,37041,39893,39648,
-39650,39685,39668,19470,39700,39725,34304,20532,39732,27048,14531,12413,39760,
-39744,40254,23109,6243,39822,16971,39938,39935,39948,40552,40404,40887,41362,
-41387,41185,41251,41439,40318,40323,41268,40462,26760,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,40388,8539,41363,41504,6459,41523,
-40249,41145,41652,40592,40597,40606,40610,19764,40618,40623,17252,40641,15200,
-14821,15645,20274,14270,35883,40706,40712,19350,37924,28066,40727,U,40761,
-22175,22154,40773,39352,37003,38898,33919,40802,40809,31452,40846,29206,19390,
-18805,18875,29047,18936,17224,19025,29598,35802,6394,31135,35198,36406,37737,
-37875,35396,37612,37761,37835,35180,17593,29207,16107,30578,31299,28880,17523,
-17400,29054,6127,28835,6334,13721,16071,6277,21551,6136,14114,5883,6201,14049,
-6004,6353,24395,14115,5824,22363,18981,5118,4776,5062,5302,34051,13990,U,
-33877,18836,29029,15921,21852,16123,28754,17652,14062,39325,28454,26617,14131,
-15381,15847,22636,6434,26640,16471,14143,16609,16523,16655,27681,21707,22174,
-26289,22162,4063,2984,3597,37830,35603,37788,20216,20779,14361,17462,20156,
-1125,895,20299,20362,22097,23144,427,971,14745,778,1044,13365,20265,704,36531,
-629,35546,524,20120,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,20685,20749,20386,20227,18958,16010,20290,20526,20588,20609,20428,
-20453,20568,20732,U,U,U,U,28278,13717,15929,16063,28018,6276,16009,20904,
-20931,1504,17629,1187,1170,1169,36218,35484,1806,21081,21156,2163,21217,U,
-18042,29068,17292,3104,18860,4324,27089,3613,U,16094,29849,29716,29782,29592,
-19342,19132,16525,21456,13700,29199,16585,21940,837,21709,3014,22301,37469,
-38644,37734,22493,22413,22399,13886,22731,23193,35398,5882,5999,5904,23084,
-22968,37519,23166,23247,23058,22854,6643,6241,17045,14069,27909,29763,23073,
-24195,23169,35799,1043,37856,29836,4867,28933,18802,37896,35323,37821,14240,
-23582,23710,24158,24136,6550,6524,15086,24269,23375,6403,6404,14081,6304,
-14045,5886,14035,33066,35399,7610,13426,35240,24332,24334,6439,6059,23147,
-5947,23364,34324,30205,34912,24702,10336,9771,24539,16056,9647,9662,37000,
-28531,25024,62,70,9755,24985,24984,24693,11419,11527,18132,37197,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,25713,18021,11114,
-14889,11042,13392,39146,11896,25399,42075,25782,25393,25553,18915,11623,25252,
-11425,25659,25963,26994,15348,12430,12973,18825,12971,21773,13024,6361,37951,
-26318,12937,12723,15072,16784,21892,35618,21903,5884,21851,21541,30958,12547,
-6186,12852,13412,12815,12674,17097,26254,27940,26219,19347,26160,30832,7659,
-26211,13010,13025,26142,22642,14545,14394,14268,15257,14242,13310,29904,15254,
-26511,17962,26806,26654,15300,27326,14435,14293,17543,27187,27218,27337,27397,
-6418,25873,26776,27212,15319,27258,27479,16320,15514,37792,37618,35818,35531,
-37513,32798,35292,37991,28069,28427,18924,U,16255,15759,28164,16444,23101,
-28170,22599,27940,30786,28987,17178,17014,28913,29264,29319,29332,18319,18213,
-20857,19108,1515,29818,16120,13919,19018,18711,24545,16134,16049,19167,35875,
-16181,24743,16115,29900,29756,37767,29751,17567,28138,17745,30083,16227,19673,
-19718,16216,30037,30323,42438,15129,29800,35532,18859,18830,15099,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,15821,19022,16127,
-18885,18675,37370,22322,37698,35555,6244,20703,21025,20967,30584,12850,30478,
-30479,30587,18071,14209,14942,18672,29752,29851,16063,19130,19143,16584,19094,
-25006,37639,21889,30750,30861,30856,30930,29648,31065,30529,22243,16654,U,
-33942,31141,27181,16122,31290,31220,16750,5862,16690,37429,31217,3404,18828,
-665,15802,5998,13719,21867,13680,13994,468,3085,31458,23129,9973,23215,23196,
-23053,603,30960,23082,23494,31486,16889,31837,31853,16913,23475,24252,24230,
-31949,18937,6064,31886,31868,31918,27314,32220,32263,32211,32590,25185,24924,
-31560,32151,24194,17002,27509,2326,26582,78,13775,22468,25618,25592,18786,
-32733,31527,2092,23273,23875,31500,24078,39398,34373,39523,27164,13375,14818,
-18935,26029,39455,26016,33920,28967,27857,17642,33079,17410,32966,33033,33090,
-26548,39107,27202,33378,33381,27217,33875,28071,34320,29211,23174,16767,6208,
-23339,6305,23268,6360,34464,63932,15759,34861,29730,23042,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,34926,20293,34951,35007,35046,
-35173,35149,22147,35156,30597,30596,35829,35801,35740,35321,16045,33955,18165,
-18127,14322,35389,35356,37960,24397,37419,17028,26068,28969,28868,6213,40301,
-35999,36073,32220,22938,30659,23024,17262,14036,36394,36519,19465,36656,36682,
-17140,27736,28603,8993,18587,28537,28299,6106,39913,14005,18735,37051,U,21873,
-18694,37307,37892,35403,16482,35580,37927,35869,35899,34021,35371,38297,38311,
-38295,38294,36148,29765,16066,18687,19010,17386,16103,12837,38543,36583,36454,
-36453,16076,18925,19064,16366,29714,29803,16124,38721,37040,26695,18973,37011,
-22495,U,37736,35209,35878,35631,25534,37562,23313,35689,18748,29689,16923,
-38811,38769,39224,3878,24001,35781,19122,38943,38106,37622,38359,37349,17600,
-35664,19047,35684,39132,35397,16128,37418,18725,33812,39227,39245,31494,15869,
-39323,19311,39338,39516,35685,22728,27279,39457,23294,39471,39153,19344,39240,
-39356,19389,19351,37757,22642,4866,22562,18872,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,5352,30788,10015,15800,26821,15741,
-37976,14631,24912,10113,10603,24839,40015,40019,40059,39989,39952,39807,39887,
-40493,39839,41461,41214,40225,19630,16644,40472,19632,40204,41396,41197,41203,
-39215,40357,33981,28178,28639,27522,34300,17715,28068,28292,28144,33824,34286,
-28160,14295,24676,31202,13724,13888,18733,18910,15714,37851,37566,37704,703,
-30905,37495,37965,20452,13376,36964,21853,30781,30804,30902,30795,5975,12745,
-18753,13978,20338,28634,28633,U,28702,21524,16821,22459,22771,22410,40214,
-22487,28980,13487,16812,29163,27712,20375,U,6069,35401,24844,23246,23051,
-17084,17544,14124,19323,35324,37819,37816,6358,3869,33906,27840,5139,17146,
-11302,17345,22932,15799,26433,32168,24923,24740,18873,18827,35322,37605,29666,
-16105,29876,35683,6303,16097,19123,27352,29683,29691,16086,19006,19092,6105,
-19046,935,5156,18917,29768,18710,28837,18806,37508,29670,37727,1278,37681,
-35534,35350,37766,35815,21973,18741,35458,29035,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,18755,3327,22180,1562,3051,3256,21762,
-31172,6138,32254,5826,19024,6226,17710,37889,14090,35520,18861,22960,6335,
-6275,29828,23201,14050,15707,14000,37471,23161,35457,6242,37748,15565,2740,
-19094,14730,20724,15721,15692,5020,29045,17147,33304,28175,37092,17643,27991,
-32335,28775,27823,15574,16365,15917,28162,28428,15727,1013,30033,14012,13512,
-18048,16090,18545,22980,37486,18750,36673,35868,27584,22546,22472,14038,5202,
-28926,17250,19057,12259,4784,9149,26809,26983,5016,13541,31732,14047,35459,
-14294,13306,19615,27162,13997,27831,33854,17631,17614,27942,27985,27778,28638,
-28439,28937,33597,5946,33773,27776,28755,6107,22921,23170,6067,23137,23153,
-6405,16892,14125,23023,5948,14023,29070,37776,26266,17061,23150,23083,17043,
-27179,16121,30518,17499,17098,28957,16985,35297,20400,27944,23746,17614,32333,
-17341,27148,16982,4868,28838,28979,17385,15781,27871,63525,19023,32357,23019,
-23855,15859,24412,19037,6111,32164,33830,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,21637,15098,13056,532,22398,2261,1561,16357,
-8094,41654,28675,37211,23920,29583,31955,35417,37920,20424,32743,29389,29456,
-31476,29496,29497,22262,29505,29512,16041,31512,36972,29173,18674,29665,33270,
-16074,30476,16081,27810,22269,29721,29726,29727,16098,16112,16116,16122,29907,
-16142,16211,30018,30061,30066,30093,16252,30152,30172,16320,30285,16343,30324,
-16348,30330,20316,29064,22051,35200,22633,16413,30531,16441,26465,16453,13787,
-30616,16490,16495,23646,30654,30667,22770,30744,28857,30748,16552,30777,30791,
-30801,30822,33864,21813,31027,26627,31026,16643,16649,31121,31129,36795,31238,
-36796,16743,31377,16818,31420,33401,16836,31439,31451,16847,20001,31586,31596,
-31611,31762,31771,16992,17018,31867,31900,17036,31928,17044,31981,36755,28864,
-3279,32207,32212,32208,32253,32686,32692,29343,17303,32800,32805,31545,32814,
-32817,32852,15820,22452,28832,32951,33001,17389,33036,29482,33038,33042,30048,
-33044,17409,15161,33110,33113,33114,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,17427,22586,33148,33156,17445,33171,17453,33189,
-22511,33217,33252,33364,17551,33446,33398,33482,33496,33535,17584,33623,38505,
-27018,33797,28917,33892,24803,33928,17668,33982,34017,34040,34064,34104,34130,
-17723,34159,34160,34272,17783,34418,34450,34482,34543,38469,34699,17926,17943,
-34990,35071,35108,35143,35217,31079,35369,35384,35476,35508,35921,36052,36082,
-36124,18328,22623,36291,18413,20206,36410,21976,22356,36465,22005,36528,18487,
-36558,36578,36580,36589,36594,36791,36801,36810,36812,36915,39364,18605,39136,
-37395,18718,37416,37464,37483,37553,37550,37567,37603,37611,37619,37620,37629,
-37699,37764,37805,18757,18769,40639,37911,21249,37917,37933,37950,18794,37972,
-38009,38189,38306,18855,38388,38451,18917,26528,18980,38720,18997,38834,38850,
-22100,19172,24808,39097,19225,39153,22596,39182,39193,20916,39196,39223,39234,
-39261,39266,19312,39365,19357,39484,39695,31363,39785,39809,39901,39921,39924,
-19565,39968,14191,7106,40265,39994,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,40702,22096,40339,40381,40384,40444,38134,36790,
-40571,40620,40625,40637,40646,38108,40674,40689,40696,31432,40772,148,695,928,
-26906,38083,22956,1239,22592,38081,14265,1493,1557,1654,5818,22359,29043,2754,
-2765,3007,21610,63547,3019,21662,3067,3131,3155,3173,3196,24807,3213,22138,
-3253,3293,3309,3439,3506,3528,26965,39983,34725,3588,3598,3799,3984,3885,3699,
-23584,4028,24075,4188,4175,4214,26398,4219,4232,4246,13895,4287,4307,4399,
-4411,21348,33965,4835,4981,4918,35713,5495,5657,6083,6087,20088,28859,6189,
-6506,6701,6725,7210,7280,7340,7880,25283,7893,7957,29080,26709,8261,27113,
-14024,8828,9175,9210,10026,10353,10575,33533,10599,10643,10965,35237,10984,
-36768,11022,38840,11071,38983,39613,11340,U,11400,11447,23528,11528,11538,
-11703,11669,11842,12148,12236,12339,12390,13087,13278,24497,26184,26303,31353,
-13671,13811,U,18874,U,13850,14102,U,838,22709,26382,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,26904,15015,30295,24546,15889,16057,
-30206,8346,18640,19128,16665,35482,17134,17165,16443,17204,17302,19013,1482,
-20946,1553,22943,7848,15294,15615,17412,17622,22408,18036,14747,18223,34280,
-39369,14178,8643,35678,35662,U,18450,18683,18965,29193,19136,3192,22885,20133,
-20358,1913,36570,20524,21135,22335,29041,21145,21529,16202,19111,21948,21574,
-21614,27474,U,13427,21823,30258,21854,18200,21858,21862,22471,18751,22621,
-20582,13563,13260,U,22787,18300,35144,23214,23433,23558,7568,22433,29009,U,
-24834,31762,36950,25010,20378,35682,25602,25674,23899,27639,U,25732,6428,
-35562,18934,25736,16367,25874,19392,26047,26293,10011,37989,22497,24981,23079,
-63693,U,22201,17697,26364,20074,18740,38486,28047,27837,13848,35191,26521,
-26734,25617,26718,U,26823,31554,37056,2577,26918,U,26937,31301,U,27130,39462,
-27181,13919,25705,33,31107,27188,27483,23852,13593,U,27549,18128,27812,30011,
-34917,28078,22710,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,14108,9613,28747,29133,15444,29312,29317,37505,8570,29323,37680,29414,
-18896,27705,38047,29776,3832,34855,35061,10534,33907,6065,28344,18986,6176,
-14756,14009,U,U,17727,26294,40109,39076,35139,30668,30808,22230,16607,5642,
-14753,14127,33000,5061,29101,33638,31197,37288,U,19639,28847,35243,31229,
-31242,31499,32102,16762,31555,31102,32777,28597,41695,27139,33560,21410,28167,
-37823,26678,38749,33135,32803,27061,5101,12847,32840,23941,35888,32899,22293,
-38947,35145,23979,18824,26046,27093,21458,19109,16257,15377,26422,32912,33012,
-33070,8097,33103,33161,33199,33306,33542,33583,33674,13770,33896,34474,18682,
-25574,35158,30728,37461,35256,17394,35303,17375,35304,35654,35796,23032,35849,
-U,36805,37100,U,37136,37180,15863,37214,19146,36816,29327,22155,38119,38377,
-38320,38328,38706,39121,39241,39274,39363,39464,39694,40282,40347,32415,40696,
-40739,19620,38215,41619,29090,41727,19857,36882,42443,19868,3228,36798,21953,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,36794,
-9392,36793,19091,17673,32383,28502,27313,20202,13540,35628,30877,14138,36480,
-6133,32804,35692,35737,31294,26287,15851,30293,15543,22069,22870,20122,24193,
-25176,22207,3693,36366,23405,16008,19614,25566,U,6134,6267,25904,22061,23626,
-21530,21265,15814,40344,19581,22050,22046,32585,24280,22901,15680,34672,19996,
-4074,3401,14010,33047,40286,36120,30267,40005,30286,30649,37701,21554,33096,
-33527,22053,33074,33816,32957,21994,31074,22083,21526,3741,13774,22021,22001,
-26353,33506,13869,30004,22000,21946,21655,21874,3137,3222,24272,20808,3702,
-11362,3746,40619,32090,21982,4213,25245,38765,21652,36045,29174,37238,25596,
-25529,25598,21865,11075,40050,11955,20890,13535,3495,20903,21581,21790,21779,
-30310,36397,26762,30129,32950,34820,34694,35015,33206,33820,4289,17644,29444,
-18182,23440,33547,26771,22139,9972,32047,16803,32115,28368,29366,37232,4569,
-37384,15612,42665,3756,3833,29286,7330,18254,20418,32761,4075,16634,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,40029,25887,11680,
-18675,18400,40316,4076,3594,U,30115,4077,U,24648,4487,29091,32398,40272,19994,
-19972,13687,23309,27826,21351,13996,14812,21373,13989,17944,22682,19310,33325,
-21579,22442,23189,2425,U,14930,9317,29556,40620,19721,39917,15614,40752,19547,
-20393,38302,40926,33884,15798,29362,26547,14112,25390,32037,16119,15916,14890,
-36872,21196,15988,13946,17897,1166,30272,23280,3766,30842,32558,22695,16575,
-22140,39819,23924,30292,42036,40581,19681,U,14331,24857,12506,17394,U,22109,
-4777,22439,18787,40454,21044,28846,13741,U,40316,31830,39737,22494,5996,23635,
-25811,38096,25397,29028,34477,3368,27938,19170,3441,U,20990,7951,23950,38659,
-7633,40577,36940,31519,39682,23761,31651,25192,25397,39679,31695,39722,31870,
-U,31810,31878,39957,31740,39689,U,39963,18750,40794,21875,23491,20477,40600,
-20466,21088,15878,21201,22375,20566,22967,24082,38856,40363,36700,21609,38836,
-39232,38842,21292,24880,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,26924,21466,39946,40194,19515,38465,27008,20646,30022,5997,
-39386,21107,U,37209,38529,37212,U,37201,36503,25471,27939,27338,22033,37262,
-30074,25221,1020,29519,31856,23585,15613,U,18713,30422,39837,20010,3284,33726,
-34882,U,23626,27072,U,22394,21023,24053,20174,27697,498,20281,21660,21722,
-21146,36226,13822,U,13811,U,27474,37244,40869,39831,38958,39092,39610,40616,
-40580,29050,31508,U,27642,34840,32632,U,22048,42570,36471,40787,U,36308,36431,
-40476,36353,25218,33661,36392,36469,31443,19063,31294,30936,27882,35431,30215,
-35418,40742,27854,34774,30147,41650,30803,63552,36108,29410,29553,35629,29442,
-29937,36075,19131,34351,24506,34976,17591,U,6203,28165,U,35454,9499,U,24829,
-30311,39639,40260,37742,39823,34805,U,U,36087,29484,38689,39856,13782,29362,
-19463,31825,39242,24921,24921,19460,40598,24957,U,22367,24943,25254,25145,U,
-14940,25058,21418,13301,25444,26626,13778,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,23895,35778,36826,36409,U,20697,7494,30982,
-21298,38456,3899,16485,U,30718,U,31938,24346,31962,31277,32870,32867,32077,
-29957,29938,35220,33306,26380,32866,29830,32859,29936,33027,30500,35209,26572,
-30035,28369,34729,34766,33224,34700,35401,36013,35651,30507,29944,34010,13877,
-27058,36262,U,35241,U,28089,34753,16401,29927,15835,29046,24740,24988,15569,U,
-24695,U,32625,35629,U,24809,19326,21024,15384,15559,24279,30294,21809,6468,
-4862,39171,28124,28845,23745,25005,35343,13943,238,26694,20238,17762,23327,
-25420,40784,40614,25195,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,
-9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,8560,8561,8562,8563,8564,
-8565,8566,8567,8568,8569,20022,20031,20101,20128,20866,20886,20907,21241,
-21304,21353,21430,22794,23424,24027,12083,24191,U,24400,24417,25908,U,30098,U,
-36789,U,168,710,12541,12542,12445,12446,U,U,12293,12294,12295,12540,65339,
-65341,10045,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,
-12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,
-12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,
-12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,
-12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,
-12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,
-12429,12430,12431,12432,12433,12434,12435,12449,12450,12451,12452,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,12453,12454,12455,
-12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,
-12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,
-12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,
-12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,
-12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,
-12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,
-12534,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,
-1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,
-1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,
-1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,
-1097,1098,1099,1100,1101,1102,1103,8679,8632,8633,12751,204,20058,138,20994,
-17553,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-40880,20872,40881,30215,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,65506,65508,65287,65282,12849,8470,8481,12443,12444,
-11904,11908,11910,11911,11912,11914,11916,11917,11925,11932,11933,11941,11943,
-11946,11948,11950,11958,11964,11966,11974,11978,11980,11981,11983,11990,11991,
-11998,12003,U,U,U,643,592,603,596,629,339,248,331,650,618,30849,37561,35023,
-22715,24658,31911,23290,9556,9574,9559,9568,9580,9571,9562,9577,9565,9554,
-9572,9557,9566,9578,9569,9560,9575,9563,9555,9573,9558,9567,9579,9570,9561,
-9576,9564,9553,9552,9581,9582,9584,9583,65517,1351,37595,1503,16325,34124,
-17077,29679,20917,13897,18754,35300,37700,6619,33518,15560,30780,26436,25311,
-18739,35242,672,27571,4869,20395,9453,20488,27945,31364,13824,19121,9491,U,
-894,24484,896,839,28379,1055,U,20737,13434,20750,39020,14147,33814,18852,1159,
-20832,13236,20842,3071,8444,741,9520,1422,12851,6531,23426,34685,1459,15513,
-20914,20920,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,40244,20937,20943,20945,15580,20947,19110,20915,20962,21314,20973,33741,
-26942,14125,24443,21003,21030,21052,21173,21079,21140,21177,21189,31765,34114,
-21216,34317,27411,U,35550,21833,28377,16256,2388,16364,21299,U,3042,27851,
-5926,26651,29653,24650,16042,14540,5864,29149,17570,21357,21364,34475,21374,U,
-5526,5651,30694,21395,35483,21408,21419,21422,29607,22386,16217,29596,21441,
-21445,27721,20041,22526,21465,15019,2959,21472,16363,11683,21494,3191,21523,
-28793,21803,26199,27995,21613,27475,3444,21853,21647,21668,18342,5901,3805,
-15796,3405,35260,9880,21831,19693,21551,29719,21894,21929,U,6359,16442,17746,
-17461,26291,4276,22071,26317,12938,26276,26285,22093,22095,30961,22257,38791,
-21502,22272,22255,22253,35686,13859,4687,22342,16805,27758,28811,22338,14001,
-27774,22502,5142,22531,5204,17251,22566,19445,22620,22698,13665,22752,22748,
-4668,22779,23551,22339,41296,17016,37843,13729,22815,26790,14019,28249,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,5694,23076,
-21843,5778,34053,22985,3406,27777,27946,6108,23001,6139,6066,28070,28017,6184,
-5845,23033,28229,23211,23139,14054,18857,U,14088,23190,29797,23251,28577,9556,
-15749,6417,14130,5816,24195,21200,23414,25992,23420,31246,16388,18525,516,
-23509,24928,6708,22988,1445,23539,23453,19728,23557,6980,23571,29646,23572,
-7333,27432,23625,18653,23685,23785,23791,23947,7673,7735,23824,23832,23878,
-7844,23738,24023,33532,14381,18689,8265,8563,33415,14390,15298,24110,27274,U,
-24186,17596,3283,21414,20151,U,21416,6001,24073,24308,33922,24313,24315,14496,
-24316,26686,37915,24333,449,63636,15070,18606,4922,24378,26760,9168,U,9329,
-24419,38845,28270,24434,37696,35382,24487,23990,15711,21072,8042,28920,9832,
-37334,670,35369,24625,26245,6263,14691,15815,13881,22416,10164,31089,15936,
-24734,U,24755,18818,18831,31315,29860,20705,23200,24932,33828,24898,63654,
-28370,24961,20980,1622,24967,23466,16311,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,10335,25043,35741,39261,25040,14642,10624,
-10433,24611,24924,25886,25483,280,25285,6000,25301,11789,25452,18911,14871,
-25656,25592,5006,6140,U,28554,11830,38932,16524,22301,25825,25829,38011,14950,
-25658,14935,25933,28438,18984,18979,25989,25965,25951,12414,26037,18752,19255,
-26065,16600,6185,26080,26083,24543,13312,26136,12791,12792,26180,12708,12709,
-26187,3701,26215,20966,26227,U,7741,12849,34292,12744,21267,30661,10487,39332,
-26370,17308,18977,15147,27130,14274,U,26471,26466,16845,37101,26583,17641,
-26658,28240,37436,26625,13286,28064,26717,13423,27105,27147,35551,26995,26819,
-13773,26881,26880,15666,14849,13884,15232,26540,26977,35402,17148,26934,27032,
-15265,969,33635,20624,27129,13913,8490,27205,14083,27293,15347,26545,27336,
-37276,15373,27421,2339,24798,27445,27508,10189,28341,15067,949,6488,14144,
-21537,15194,27617,16124,27612,27703,9355,18673,27473,27738,33318,27769,15804,
-17605,15805,16804,18700,18688,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,15561,14053,15595,3378,39811,12793,9361,32655,26679,27941,
-28065,28139,28054,27996,28284,28420,18815,16517,28274,34099,28532,20935,U,U,
-33838,35617,U,15919,29779,16258,31180,28239,23185,12363,28664,14093,28573,
-15920,28410,5271,16445,17749,37872,28484,28508,15694,28532,37232,15675,28575,
-16708,28627,16529,16725,16441,16368,16308,16703,20959,16726,16727,16704,25053,
-28747,28798,28839,28801,28876,28885,28886,28895,16644,15848,29108,29078,17015,
-28971,28997,23176,29002,U,23708,17253,29007,37730,17089,28972,17498,18983,
-18978,29114,35816,28861,29198,37954,29205,22801,37955,29220,37697,22021,29230,
-29248,18804,26813,29269,29271,15957,12356,26637,28477,29314,U,29483,18467,
-34859,18669,34820,29480,29486,29647,29610,3130,27182,29641,29769,16866,5863,
-18980,26147,14021,18871,18829,18939,29687,29717,26883,18982,29753,1475,16087,
-U,10413,29792,36530,29767,29668,29814,33721,29804,14128,29812,37873,27180,
-29826,18771,19084,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,16735,19065,35727,23366,35843,6302,29896,6536,29966,U,29982,36569,
-6731,23511,36524,37765,30029,30026,30055,30062,20354,16132,19731,30094,29789,
-30110,30132,30210,30252,30289,30287,30319,30326,25589,30352,33263,14328,26897,
-26894,30369,30373,30391,30412,28575,33890,20637,20861,7708,30494,30502,30528,
-25775,21024,30552,12972,30639,35172,35176,5825,30708,U,4982,18962,26826,30895,
-30919,30931,38565,31022,21984,30935,31028,30897,30220,36792,34948,35627,24707,
-9756,31110,35072,26882,31104,22615,31133,31545,31036,31145,28202,28966,16040,
-31174,37133,31188,
-};
-
-static const struct dbcs_index big5hkscs_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-__big5hkscs_decmap+0,64,121},{__big5hkscs_decmap+58,64,170},{
-__big5hkscs_decmap+165,64,254},{__big5hkscs_decmap+356,64,254},{
-__big5hkscs_decmap+547,64,253},{__big5hkscs_decmap+737,64,254},{
-__big5hkscs_decmap+928,64,254},{__big5hkscs_decmap+1119,64,254},{
-__big5hkscs_decmap+1310,64,253},{__big5hkscs_decmap+1500,64,254},{
-__big5hkscs_decmap+1691,64,254},{__big5hkscs_decmap+1882,64,254},{
-__big5hkscs_decmap+2073,64,254},{__big5hkscs_decmap+2264,64,254},{
-__big5hkscs_decmap+2455,64,254},{__big5hkscs_decmap+2646,64,254},{
-__big5hkscs_decmap+2837,64,254},{__big5hkscs_decmap+3028,64,254},{
-__big5hkscs_decmap+3219,64,254},{__big5hkscs_decmap+3410,64,254},{
-__big5hkscs_decmap+3601,64,254},{__big5hkscs_decmap+3792,64,254},{
-__big5hkscs_decmap+3983,64,254},{__big5hkscs_decmap+4174,64,254},{
-__big5hkscs_decmap+4365,64,254},{__big5hkscs_decmap+4556,64,254},{0,0,0},{0,0,
-0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__big5hkscs_decmap+4747,
-161,254},{__big5hkscs_decmap+4841,64,254},{__big5hkscs_decmap+5032,64,254},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-__big5hkscs_decmap+5223,214,254},{__big5hkscs_decmap+5264,64,254},{
-__big5hkscs_decmap+5455,64,254},{__big5hkscs_decmap+5646,64,254},{
-__big5hkscs_decmap+5837,64,254},{__big5hkscs_decmap+6028,64,254},{0,0,0},
-};
-
-static const unsigned char big5hkscs_phint_0[] = {
-32,5,95,68,15,82,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,44,4,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,192,0,4,0,0,0,0,0,0,0,0,0,0,0,0,1,22,0,15,0,0,0,0,0,
-32,87,43,247,252,110,242,144,11,0,0,0,192,237,164,15,38,193,155,118,242,239,
-222,251,250,247,15,50,68,175,254,239,5,0,0,0,224,251,71,128,193,2,0,132,100,4,
-130,64,32,162,130,133,164,145,0,16,1,0,0,0,144,72,12,0,48,0,84,3,48,68,24,19,
-53,137,38,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,0,32,43,153,32,16,99,40,36,
-1,0,0,0,0,80,96,212,0,210,42,24,157,104,53,151,79,216,248,32,196,130,28,40,2,
-0,0,0,0,214,81,10,224,0,129,134,22,67,196,53,17,55,96,230,122,109,5,12,61,0,0,
-0,0,153,57,128,7,34,254,129,144,24,144,12,116,48,208,160,9,41,21,253,4,0,0,0,
-0,223,128,64,8,8,176,219,196,96,237,118,125,249,29,228,211,133,166,205,5,0,0,
-0,0,12,0,110,186,9,47,96,84,0,30,120,104,34,112,86,158,37,243,142,7,0,0,0,192,
-94,44,188,155,223,93,108,109,4,67,96,54,74,96,216,62,7,196,200,1,0,0,0,160,
-177,197,98,11,12,34,62,204,37,184,1,174,237,92,104,13,148,74,181,0,0,0,0,0,
-244,3,18,17,16,68,2,53,144,235,14,153,7,209,202,5,130,161,160,0,0,0,0,52,24,
-160,137,231,156,91,8,132,3,2,218,144,236,219,135,133,191,162,45,0,0,0,0,118,
-58,118,98,130,148,24,1,24,125,254,141,87,39,19,210,91,55,25,12,0,0,0,0,110,
-139,33,145,0,0,0,64,0,0,0,2,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,
-0,0,0,0,0,0,0,2,0,0,0,0,0,0,142,120,110,95,63,126,221,61,247,252,155,252,174,
-210,255,143,107,1,0,0,0,192,159,255,234,186,186,93,188,115,159,250,216,214,
-222,37,75,94,151,218,42,1,0,0,0,224,182,153,27,216,116,230,79,21,191,41,230,
-255,38,117,109,227,255,155,82,0,0,0,0,80,96,126,111,153,169,80,14,0,128,16,
-216,35,0,37,16,144,244,235,117,0,0,0,0,208,219,0,160,152,178,123,6,82,32,152,
-22,200,61,9,0,0,1,0,0,0,0,0,0,0,4,40,200,34,0,2,0,0,16,32,130,80,64,48,1,0,16,
-0,4,0,0,0,0,74,4,1,16,20,0,128,0,4,255,253,36,
-};
-
-static const unsigned char big5hkscs_phint_12130[] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,128,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,
-};
-
-static const unsigned char big5hkscs_phint_21924[] = {
-0,0,0,0,0,26,172,248,250,90,192,250,51,0,0,0,0,0,129,0,160,156,130,144,9,1,
-180,192,176,3,86,2,160,66,45,136,1,0,0,0,0,146,119,139,96,5,201,33,6,70,56,96,
-72,192,180,36,222,132,224,192,36,0,0,0,0,205,80,197,52,192,40,162,173,124,153,
-24,88,18,34,196,66,162,83,142,30,0,0,0,128,52,135,11,21,209,64,250,61,0,4,210,
-5,72,8,22,230,28,165,0,8,0,0,0,192,45,22,20,128,24,58,212,25,136,28,138,4,
-};
-
-static const DBCHAR __big5hkscs_bmp_encmap[26401] = {
-50904,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34905,34903,N,N,N,N,N,N,
-34909,34907,M,N,N,N,N,N,N,N,34913,34911,N,N,N,N,N,N,N,N,N,N,N,N,34922,34920,N,
-N,N,N,N,N,34927,34925,M,N,34931,34929,N,N,N,N,34935,34933,N,N,N,N,51451,34939,
-34937,N,34978,34902,34919,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34906,34924,N,N,N,N,
-N,N,34908,34926,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34928,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,51452,34910,34932,N,N,N,N,N,51450,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34936,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,34904,34921,N,34930,34912,34934,N,34938,N,34940,N,34941,N,34942,N,34977,
-51446,34923,N,N,51448,N,N,N,N,N,N,51447,N,N,N,N,N,34984,N,N,N,N,N,N,N,N,51454,
-N,N,N,N,N,N,N,N,N,N,51449,N,N,N,N,N,N,N,N,N,N,N,N,N,51445,N,N,N,N,N,N,51453,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,50905,51193,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-51187,51188,51189,51190,51191,51192,51194,51195,51196,51197,51198,51264,51265,
-51266,51267,51268,51269,51270,51271,51272,51273,51274,51275,51276,51277,51278,
-51279,51280,51281,51282,51283,51284,51285,51286,51287,51288,51289,51290,51292,
-51293,51294,51295,51296,51297,51298,51299,51300,51301,51302,51303,51304,51305,
-51306,51307,51308,51309,51310,51311,51312,51313,51314,51315,51316,51317,N,
-51291,34915,34980,34917,34982,51410,N,N,N,N,N,N,N,N,N,N,51411,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,50869,50870,
-50871,50872,50873,50874,50875,50876,50877,50878,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,51319,51320,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,51318,34985,34986,50849,50850,50851,
-50852,50853,50854,50855,50856,50857,50858,N,N,N,N,N,N,N,N,N,N,50859,50860,
-50861,50862,50863,50864,50865,50866,50867,50868,63993,63992,63974,63983,63965,
-63976,63985,63967,63980,63989,63971,63982,63991,63973,63977,63986,63968,63979,
-63988,63970,63975,63984,63966,63981,63990,63972,63978,63987,63969,63994,63995,
-63997,63996,50918,51414,N,N,N,51415,N,51416,51417,51418,N,51419,N,51420,51421,
-N,N,N,N,N,N,N,51422,N,N,N,N,N,N,51423,51424,N,N,N,N,N,N,N,51425,N,51426,N,N,
-51427,N,51428,N,51429,N,N,N,N,N,N,N,51430,N,N,N,N,N,51431,N,51432,N,N,N,N,N,N,
-N,51433,N,N,N,51434,N,51435,51436,N,51437,N,N,N,N,N,N,51438,51439,N,N,N,N,N,N,
-51440,N,N,N,N,51441,50893,50912,50913,50914,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,50919,50920,50921,50922,50923,50924,50925,50926,50927,50928,50929,50930,
-50931,50932,50933,50934,50935,50936,50937,50938,50939,50940,50941,50942,51008,
-51009,51010,51011,51012,51013,51014,51015,51016,51017,51018,51019,51020,51021,
-51022,51023,51024,51025,51026,51027,51028,51029,51030,51031,51032,51033,51034,
-51035,51036,51037,51038,51039,51040,51041,51042,51043,51044,51045,51046,51047,
-51048,51049,51050,51051,51052,51053,51054,51055,51056,51057,51058,51059,51060,
-51061,51062,51063,51064,51065,51066,N,N,N,N,N,N,N,51412,51413,50908,50909,N,N,
-51067,51068,51069,51070,51105,51106,51107,51108,51109,51110,51111,51112,51113,
-51114,51115,51116,51117,51118,51119,51120,51121,51122,51123,51124,51125,51126,
-51127,51128,51129,51130,51131,51132,51133,51134,51135,51136,51137,51138,51139,
-51140,51141,51142,51143,51144,51145,51146,51147,51148,51149,51150,51151,51152,
-51153,51154,51155,51156,51157,51158,51159,51160,51161,51162,51163,51164,51165,
-51166,51167,51168,51169,51170,51171,51172,51173,51174,51175,51176,51177,51178,
-51179,51180,51181,51182,51183,51184,51185,51186,N,N,N,N,N,50915,50906,50907,
-34880,34881,34882,34883,34884,34886,34889,34890,34893,34895,34896,34897,34898,
-34900,34901,51321,51409,37495,N,N,N,N,N,N,N,N,N,N,38623,N,N,N,N,N,N,N,N,N,
-36084,N,35285,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37837,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,39903,N,N,N,N,N,N,64104,N,N,35290,36697,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,35291,N,N,36701,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35292,N,N,N,N,N,
-N,N,N,N,38647,N,N,N,N,N,N,N,N,N,N,N,N,35546,N,N,N,N,35804,N,N,N,N,N,N,38875,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40531,N,N,N,N,40362,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,39914,35438,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35784,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35304,N,35306,N,N,N,N,N,35915,N,N,N,N,N,N,
-N,64368,N,N,N,N,N,N,N,N,N,N,N,35309,N,N,38109,N,35310,N,N,N,N,40628,35539,N,N,
-N,N,N,N,N,N,N,N,N,37595,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38107,35321,N,N,N,
-N,N,N,N,N,64378,N,N,N,35323,N,N,N,N,N,N,N,40700,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,35324,N,35263,N,N,N,35326,N,35302,N,N,40262,N,N,N,40430,N,N,N,41086,N,N,N,
-41064,N,N,N,N,39145,N,35688,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36349,35774,
-40921,N,N,N,N,N,N,N,35563,N,N,40919,35690,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40028,N,
-35761,N,N,N,N,N,N,N,N,64350,N,34672,N,N,N,N,N,N,N,40435,N,N,N,N,N,N,N,41168,N,
-N,N,64614,N,N,N,N,37609,N,N,N,N,N,N,N,N,39660,36779,64072,N,N,N,N,36421,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,40047,N,36188,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,40670,N,N,N,N,N,N,35311,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,38633,N,N,N,N,N,N,N,N,N,N,40635,N,N,N,N,38110,N,40632,N,N,N,38842,64357,N,
-N,N,38358,N,N,N,40123,N,N,38874,N,N,N,N,36677,N,64381,37208,65124,N,38998,
-39757,N,N,N,N,N,N,N,N,N,N,37723,38343,N,38887,N,N,N,N,N,N,37721,N,N,N,37365,
-38840,N,N,64930,64438,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37626,37719,N,35750,N,N,N,N,
-64441,N,38832,N,N,64964,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40097,N,N,N,N,N,37362,
-37369,N,36849,N,N,N,N,N,N,38725,38995,N,N,65144,N,64449,37457,N,N,N,N,N,N,
-40365,N,N,N,N,N,64876,N,N,64107,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,39874,N,N,N,N,N,N,N,N,N,N,N,N,39547,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35680,N,N,N,N,N,N,N,N,37707,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39613,N,N,N,N,37303,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36171,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,38324,N,N,N,N,N,65221,N,N,40688,36196,N,N,N,N,N,N,N,N,N,
-37481,N,N,N,N,N,N,36199,N,N,N,N,N,N,N,N,N,N,N,N,64490,N,N,N,N,N,N,N,N,64495,N,
-36200,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,37867,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64578,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37222,N,N,N,N,N,N,N,N,
-64205,N,N,N,N,37853,N,N,36178,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,35788,36205,N,N,N,N,N,N,N,N,N,N,N,36206,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,38568,N,N,N,N,N,N,N,N,N,N,64678,N,N,N,N,N,N,N,N,N,N,N,
-N,36207,N,N,N,N,N,N,N,N,N,N,N,N,N,36208,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,64612,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36083,N,N,N,N,N,N,N,36960,N,
-N,N,N,N,N,N,N,36212,38851,N,N,N,N,N,N,N,35536,N,N,N,N,N,N,37492,N,39870,N,N,N,
-N,N,40136,N,N,40122,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36216,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40633,N,N,N,N,N,38234,
-N,N,37300,N,N,N,N,N,N,35400,N,N,N,N,N,N,N,N,N,N,N,36221,N,N,35453,N,N,35522,
-64842,N,36257,N,N,35537,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64692,35655,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,37796,40666,N,N,N,N,N,N,N,N,N,35409,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,36262,N,N,N,N,N,N,40645,N,N,N,N,64708,N,N,N,N,41080,N,
-38069,N,N,N,N,N,N,N,64706,35435,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36267,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,64232,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36269,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64585,N,37825,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,36975,N,36272,N,N,N,N,N,N,N,N,38014,37114,N,N,N,N,N,N,N,N,N,N,
-38009,N,N,N,N,N,N,N,N,36274,N,N,N,N,N,N,N,N,64750,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39291,N,N,N,N,N,N,N,N,36276,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36279,N,
-N,N,N,N,N,N,37299,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36283,36282,N,N,N,N,N,N,N,N,
-36284,36932,N,N,N,64844,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34635,37860,N,
-N,37856,N,N,N,N,N,N,N,64851,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,36291,N,39864,N,N,N,64496,N,37865,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37878,
-N,N,N,N,N,36293,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36298,N,N,N,N,N,36300,64861,37813,
-64865,N,N,N,40184,N,N,N,37458,N,N,41192,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,40101,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35926,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,36310,N,38848,N,N,N,41182,N,N,N,N,38866,N,N,N,N,N,64165,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,64931,N,N,N,36315,36074,36527,N,N,N,N,N,N,N,N,N,37301,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64841,N,N,N,N,N,N,N,N,64977,N,N,N,N,N,N,N,
-N,N,N,36331,N,N,N,N,N,38854,N,64974,N,N,37116,N,N,N,N,N,N,N,N,N,N,N,N,N,64601,
-N,N,38614,N,N,N,N,N,N,38853,36335,N,N,N,N,38871,N,N,N,N,N,36336,N,N,N,N,N,N,N,
-38566,N,N,N,N,N,N,N,64447,N,N,36063,N,36339,N,N,N,N,37961,N,36341,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,39026,N,N,N,N,N,N,N,36459,N,N,N,N,N,N,64253,N,N,N,N,
-N,N,N,N,N,N,36688,N,N,N,N,N,N,40396,64613,N,35908,N,N,39278,38049,N,N,N,N,N,
-36707,N,N,N,N,N,N,N,41178,N,N,N,N,N,N,N,N,N,N,N,37459,65001,N,N,40373,N,N,N,N,
-N,N,N,39033,34666,N,N,40285,N,N,N,N,36195,38505,40816,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,64618,N,N,35527,N,N,N,N,35287,N,N,N,N,N,N,N,N,N,N,N,N,65101,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40669,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,65275,39100,64204,N,N,38320,N,N,N,37988,N,N,N,N,N,N,37743,N,N,N,N,N,N,
-38073,N,N,38380,N,N,N,N,37358,N,N,39107,N,38390,N,N,N,36861,39109,N,N,N,N,
-38758,65134,N,N,38877,36010,N,N,37586,N,N,38753,39115,N,N,N,N,38384,N,38749,N,
-37347,N,N,N,N,39116,N,N,37993,39117,N,N,N,N,N,39118,N,38396,N,N,38051,38498,N,
-N,N,65206,N,37987,36167,N,N,N,N,N,N,39120,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,39121,N,N,N,N,38005,64224,N,N,N,N,N,N,N,N,N,38002,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39126,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,35568,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39129,N,N,N,N,N,N,N,36186,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,39131,N,N,N,N,39133,N,N,N,N,N,N,N,N,39080,N,N,N,N,N,N,N,35437,N,N,N,N,N,
-N,N,N,N,N,N,35579,35502,64457,N,N,N,N,35933,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,39140,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39142,N,N,N,N,
-N,N,N,N,N,N,N,39144,N,N,N,N,N,N,N,N,N,N,N,N,N,35405,N,N,N,37463,N,N,N,N,N,N,N,
-N,N,N,38367,N,N,41132,N,N,N,N,39147,N,N,N,N,39148,N,36035,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,39156,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35512,N,N,N,40679,N,N,N,N,
-N,N,N,N,38076,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64721,N,N,N,N,N,N,40134,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36170,N,40574,36164,39166,65000,N,N,N,N,
-39232,N,N,N,N,38089,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,38099,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39238,N,N,N,N,37056,N,38097,N,N,N,
-N,N,N,N,N,N,N,N,N,N,36174,N,N,38259,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37826,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39240,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,39243,N,N,N,N,N,36437,N,N,N,N,39246,N,N,N,N,N,N,N,N,N,
-N,N,36606,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36191,N,36441,N,N,N,N,N,N,N,N,N,
-38124,38127,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35936,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36724,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,39253,N,N,N,N,N,N,N,N,N,38212,N,N,N,N,N,N,N,N,N,N,N,36043,
-N,N,N,39254,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39257,N,N,N,N,N,N,N,39259,N,N,N,
-N,N,N,N,N,N,N,N,N,N,36036,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64069,N,N,N,
-37047,N,N,38723,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38349,N,N,N,N,N,N,38857,64848,
-36537,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38342,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39271,N,N,
-36067,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35513,N,N,
-N,N,N,N,36348,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35446,N,N,N,N,N,
-40273,N,N,N,N,N,N,N,N,N,N,N,N,N,39283,N,N,34624,N,40271,39290,38244,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,39329,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39333,N,N,N,N,N,
-N,N,39335,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,36589,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39341,N,51326,N,N,N,N,N,N,
-N,N,N,N,N,N,N,37998,36720,N,64208,N,N,N,N,N,N,N,N,N,N,N,N,N,39347,N,N,N,N,N,N,
-41043,N,N,N,N,N,36190,N,N,38492,N,N,36064,N,64890,N,N,N,N,N,N,N,N,38910,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,37565,36189,38909,N,N,N,N,36708,N,N,N,N,64759,38242,
-38861,40548,N,N,N,N,N,N,N,37452,36553,39356,N,N,N,N,40357,N,36692,N,N,N,N,N,N,
-N,N,N,N,36732,N,N,N,N,36181,N,36514,N,N,N,N,N,N,N,N,N,36730,N,N,N,N,N,N,38830,
-N,N,N,N,38600,N,N,36068,N,N,N,N,39363,N,37078,N,40126,N,N,N,36726,N,N,N,N,N,N,
-N,N,N,N,N,N,N,38000,64331,N,N,64970,N,N,36079,N,N,N,36551,N,N,N,N,36180,41209,
-N,N,N,N,N,N,N,36777,N,N,36177,N,N,N,N,N,N,N,N,N,39367,34628,N,N,N,N,N,N,N,N,N,
-N,N,N,37079,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-34627,N,N,N,N,N,N,N,N,N,N,N,N,34631,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34648,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40671,
-36185,34626,N,N,39374,N,N,N,N,N,N,N,N,36794,N,N,N,N,N,36843,N,39375,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36802,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37577,N,N,N,N,N,38876,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34653,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,36165,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38323,40057,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38322,N,
-36172,36827,N,N,N,N,39907,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,34636,N,N,N,N,N,N,N,N,N,N,N,N,N,34637,N,N,N,N,N,N,N,N,N,40570,34647,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,39918,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39390,N,N,N,
-N,N,N,N,N,N,N,N,N,N,64250,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35410,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,39393,N,N,N,N,N,N,35431,35765,N,N,N,N,N,N,N,N,N,N,35500,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39401,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,64458,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38878,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38353,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,39413,64586,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,39849,N,N,N,N,N,N,N,N,N,N,N,N,64476,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,65110,N,N,N,N,N,40612,N,N,N,N,N,N,40265,38363,N,N,N,N,N,N,N,N,N,N,35269,
-N,N,N,N,N,N,N,N,N,N,N,N,39416,N,N,N,N,N,N,38500,N,N,N,N,36949,N,N,38612,N,N,N,
-N,N,N,N,38780,N,N,N,N,N,N,38477,N,38881,N,N,N,N,N,N,39496,N,N,N,N,N,N,N,N,N,N,
-N,39497,N,65149,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37034,N,N,N,N,39504,N,N,N,N,
-N,N,N,37703,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36568,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37065,N,N,N,N,N,39509,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,37052,N,N,N,N,N,39512,N,35768,37077,N,N,N,N,N,N,N,N,N,N,N,N,N,38465,N,N,
-N,N,N,N,39514,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39516,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,38850,N,N,N,N,N,N,N,N,N,N,N,N,N,34652,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35515,N,N,N,39850,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37109,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39520,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,37189,35928,N,N,N,N,N,N,N,N,39523,N,N,N,N,N,N,35913,N,N,N,N,N,N,N,N,
-N,N,N,35766,N,N,N,N,N,N,N,N,N,N,64719,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38507,
-39534,N,37199,N,N,N,N,N,N,N,N,38726,N,N,41190,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-37591,N,38517,N,N,37844,N,N,37307,38521,N,N,N,N,N,39536,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38520,37325,N,40010,41071,N,N,41066,N,
-N,N,N,N,N,37215,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,34625,N,N,N,N,N,N,N,N,40869,N,N,35258,N,34639,N,N,N,N,N,N,34638,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,34645,N,N,N,40653,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39545,N,N,N,N,N,N,N,N,N,36082,N,N,N,36183,N,40398,N,N,N,36050,N,N,N,34649,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40307,N,N,N,N,N,N,N,N,
-N,38585,N,38588,N,N,N,N,N,N,40145,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35255,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40686,34633,N,N,N,N,N,N,N,N,N,N,
-64323,34651,N,40649,N,N,N,N,N,N,64467,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37294,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,36184,34630,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36182,N,N,N,N,N,N,N,
-40312,N,N,N,N,N,N,N,N,N,N,40315,40627,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,40626,N,40406,N,N,N,N,39247,N,N,35278,N,N,N,35776,N,40900,N,35796,N,N,35954,
-N,N,N,N,N,N,50879,35833,N,N,N,N,N,35142,N,50880,N,N,N,N,N,N,N,N,N,64229,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,51323,35782,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40023,N,N,N,
-N,N,N,N,N,N,N,N,N,N,39675,N,N,N,N,N,N,N,35280,35279,N,N,N,50881,N,35281,N,
-35298,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37502,N,40378,N,N,N,N,N,50882,N,N,35951,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64504,N,N,N,35783,37483,N,N,35282,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,40911,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40361,35283,N,N,39394,N,N,N,N,N,N,N,N,N,37479,37540,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,35955,N,N,35150,N,N,N,N,N,N,N,N,N,N,N,N,N,35151,37496,N,N,N,N,N,N,
-N,N,37302,N,N,N,N,35284,N,40914,N,N,N,N,N,N,N,N,37543,N,N,38306,N,N,N,N,N,
-37486,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,38634,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37487,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37539,N,N,N,N,N,35152,N,N,64087,N,N,N,N,39014,N,
-N,N,36088,N,N,N,N,N,N,N,N,35286,N,N,N,N,N,N,N,N,N,N,39090,N,N,N,37547,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38622,37548,N,N,N,N,N,N,N,N,N,N,35952,N,
-40814,N,N,N,N,N,N,36594,N,N,N,40812,35288,N,N,N,N,64089,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37544,N,N,N,N,N,37219,N,N,
-N,N,N,N,35904,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40819,N,
-37549,N,N,N,N,N,N,N,N,N,N,N,N,N,39913,N,N,N,N,N,37545,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,37546,N,N,N,N,N,N,35289,N,N,N,N,N,N,N,64854,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,40872,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35953,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37537,N,N,37091,N,N,N,N,N,N,N,N,41126,N,N,N,N,
-N,38059,N,64626,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38852,N,N,N,N,N,N,N,37550,
-64103,N,N,N,N,N,N,N,N,N,N,N,37538,64105,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,37480,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35153,N,N,N,N,N,N,N,N,N,64111,N,N,N,N,N,N,N,N,N,
-64113,N,N,N,N,N,N,N,N,N,35154,N,N,N,N,37978,N,N,N,N,N,N,N,N,50883,N,N,N,35293,
-N,51362,N,N,N,N,N,N,N,N,N,N,N,N,N,50884,N,N,N,40530,N,35155,N,N,N,N,N,N,N,N,N,
-N,40533,37562,N,N,50885,N,N,35931,N,N,N,64125,64168,39528,64071,N,N,64126,N,N,
-N,N,N,N,N,N,N,N,37563,N,N,N,64950,N,64162,N,N,N,N,N,64163,N,64164,39860,64166,
-N,N,N,N,N,N,N,35295,N,N,N,64987,N,N,64169,N,35156,N,N,N,N,N,N,N,N,64171,N,N,N,
-N,N,N,64634,N,N,N,N,N,N,N,35296,N,40783,51325,N,N,35297,N,N,N,N,N,64176,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40909,41191,N,N,N,N,N,64177,35238,N,N,N,N,N,N,
-N,N,N,N,N,N,40698,N,N,N,N,N,N,N,64178,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,64180,N,37572,N,N,N,N,N,N,40815,N,N,N,N,N,N,N,35760,N,N,N,N,N,N,N,
-N,N,N,40876,N,N,N,N,N,35299,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39891,
-35300,N,N,N,64181,N,N,N,N,N,40917,N,N,N,N,N,N,35157,N,N,37573,N,N,N,35158,N,N,
-N,N,N,N,N,N,N,N,N,N,64179,N,N,N,64182,N,N,N,N,N,N,N,N,N,N,N,64183,N,N,N,N,N,N,
-40668,N,N,N,64452,40817,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64186,37575,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,50886,39500,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35944,N,N,35301,N,N,N,N,40829,N,N,N,N,N,
-41129,64196,N,N,N,N,50887,N,N,35159,N,N,N,N,N,N,64170,N,N,N,N,N,N,N,N,N,N,N,
-35160,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35811,N,35681,N,N,N,N,39665,N,N,40631,N,
-50888,N,N,N,64209,N,N,N,N,N,N,64210,N,N,N,N,N,N,N,N,40634,64212,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,64217,N,N,N,N,N,N,N,N,N,N,N,N,64219,N,40160,N,N,N,
-64503,N,64506,35303,41082,64220,N,N,64221,N,35305,N,N,N,N,N,50889,N,N,N,N,N,N,
-N,N,N,N,64226,35307,N,N,64227,N,N,N,N,N,N,37064,N,N,N,37594,35161,40181,N,N,N,
-N,N,35162,64231,40866,N,N,N,N,N,64234,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,64237,36781,N,N,N,N,N,N,64345,64239,38639,N,40428,N,N,N,40394,N,N,N,N,N,N,
-64877,N,35308,N,N,N,N,N,N,N,N,N,N,N,64324,N,N,40418,N,35957,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,40640,N,40534,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,40825,39623,N,N,64244,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,39073,N,N,N,N,N,N,N,N,N,64248,N,N,N,35312,40519,N,N,40439,N,N,N,N,40915,
-N,39626,N,N,N,N,35313,64249,N,N,N,N,N,N,N,N,N,N,N,N,N,36442,N,35314,N,N,N,N,
-35315,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37469,35665,37600,N,N,35316,N,N,N,N,N,
-N,N,N,N,40916,N,N,N,N,N,N,N,N,35449,N,N,N,N,N,N,N,N,N,N,N,35317,38823,N,N,N,N,
-N,N,N,N,N,N,37818,N,N,N,N,N,40536,N,N,N,N,35318,N,N,N,N,N,40535,N,N,N,N,35319,
-N,35393,N,N,35320,N,N,64241,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35322,N,N,N,
-N,N,N,N,64322,N,64191,N,N,N,N,N,N,N,N,N,64419,N,N,N,N,N,N,N,N,N,64247,N,N,N,N,
-N,N,N,N,N,N,N,40526,N,38108,N,N,N,N,N,38362,40440,40810,N,N,N,N,N,35511,N,N,N,
-N,N,N,N,N,N,N,N,N,64326,N,N,N,N,N,N,N,N,N,35398,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,64327,N,N,N,N,N,N,37192,N,N,N,37598,N,N,N,N,35667,40438,N,
-39898,N,N,N,N,40318,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35325,39396,N,N,
-N,N,N,40515,N,N,N,N,N,N,N,N,N,N,N,40425,N,36690,N,N,N,40437,40432,N,N,N,39399,
-N,N,N,N,N,35773,40431,N,N,N,N,N,N,N,N,N,N,N,40887,N,N,N,N,N,N,N,N,N,N,N,N,
-40400,N,40939,36265,40399,39137,N,40421,N,N,N,N,N,N,N,40392,N,N,N,N,N,N,N,N,N,
-64335,N,N,N,N,N,N,N,N,N,N,N,40427,N,N,N,N,N,N,N,N,N,64340,N,64341,39586,N,
-35542,N,39519,N,N,N,N,N,N,N,N,40693,N,N,N,36791,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,39634,40554,40680,N,N,N,N,N,N,N,N,N,N,N,N,35775,37314,40290,
-N,N,N,N,N,N,37472,N,N,N,N,N,N,N,N,N,N,N,37470,37313,N,35525,N,N,38819,N,N,N,N,
-N,N,N,N,N,N,35692,N,36222,N,N,N,N,N,N,N,40020,N,N,N,N,N,40381,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,40133,N,N,N,N,N,N,N,N,N,N,N,35163,N,N,N,N,N,N,N,N,
-N,N,64348,N,64347,N,64343,N,N,N,N,N,N,N,N,N,34661,N,39111,64346,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,40174,N,N,N,N,N,N,N,37602,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,38055,N,N,N,N,N,N,N,N,N,N,36044,N,39892,N,N,64356,64374,N,N,
-64352,N,N,N,N,N,N,N,N,N,N,N,N,N,39397,N,N,39618,N,N,N,37371,N,N,N,41075,N,N,N,
-N,N,N,N,40818,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40908,N,N,N,39077,37608,N,N,
-N,N,N,N,N,N,39868,N,38643,N,N,37607,N,N,64615,N,N,N,N,N,N,N,N,N,N,N,35709,N,N,
-N,N,39924,N,N,N,N,N,40695,N,N,40641,N,N,N,N,N,N,N,N,N,39279,N,N,N,N,N,N,38641,
-N,N,36417,N,N,N,N,N,38218,N,N,N,38886,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38645,N,N,N,
-N,N,37606,40770,N,N,N,N,N,N,N,64359,N,N,N,N,N,N,N,N,39337,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,64230,64361,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38885,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,38525,N,N,N,64364,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39330,N,N,N,N,N,
-39611,N,N,N,39525,N,N,37966,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64366,N,N,
-39391,N,N,N,N,N,N,N,N,N,39139,N,N,37460,N,N,N,N,N,38523,35503,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35959,N,N,N,N,N,N,35759,40637,N,N,
-N,N,N,N,N,N,N,N,N,N,40678,N,N,64367,N,N,N,N,N,36577,N,N,N,N,39805,40062,N,N,N,
-N,63961,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37610,N,N,N,N,35960,N,N,N,N,N,N,N,N,N,N,
-N,64370,N,N,N,64369,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35164,N,39152,38642,N,N,N,N,
-N,N,N,64372,35777,N,35165,35294,N,35166,N,N,50890,N,N,N,N,N,N,65090,N,N,N,N,N,
-N,N,N,N,N,N,34664,N,64379,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35167,N,35168,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,39885,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40403,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,38988,N,N,N,N,N,N,N,N,N,N,38738,N,N,N,N,N,38339,N,N,N,N,
-39862,N,N,N,N,N,N,N,N,N,N,N,N,39609,N,N,N,38835,N,N,N,N,N,N,40820,37617,N,N,N,
-N,N,N,36090,N,N,N,N,38879,N,N,N,N,64422,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64427,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39031,N,N,N,38996,38341,N,N,N,N,N,N,N,40277,
-64434,38270,N,N,N,N,N,N,N,N,38722,N,38118,N,N,N,N,37621,N,N,N,N,N,N,N,36037,N,
-N,N,N,N,N,37629,N,N,64418,N,N,40017,N,N,38121,39004,37616,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,37964,N,N,N,N,N,N,N,37227,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35704,N,N,N,
-N,38114,N,N,N,N,N,N,N,38991,N,64437,N,N,N,N,37489,N,N,37733,N,N,39003,N,N,
-38992,N,N,N,N,N,N,N,38844,N,N,N,N,37619,N,N,37696,38989,N,N,N,38258,N,65007,N,
-N,N,N,N,N,N,N,64961,N,N,N,N,64442,N,N,37611,N,N,N,N,N,N,64627,38839,N,N,34671,
-N,N,N,N,N,N,64436,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37031,N,N,N,N,
-N,N,N,N,N,N,38721,37620,N,34674,N,64444,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38263,
-N,N,N,N,N,N,N,N,N,N,N,40674,N,36728,N,N,N,N,N,N,N,63964,N,N,N,38514,40629,N,N,
-N,38475,N,N,N,36012,N,N,N,N,N,N,N,N,N,41210,N,N,N,N,N,N,N,N,N,N,N,38261,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37082,N,N,37735,N,65188,N,N,N,37087,N,N,N,
-N,37716,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35169,N,35764,N,N,N,N,
-40384,N,N,N,N,N,N,36424,N,64453,N,N,N,N,N,64455,N,N,N,50891,N,64121,N,N,N,N,N,
-N,N,N,N,N,N,N,N,40551,N,N,N,N,N,36057,N,N,N,N,N,N,64466,35170,35171,N,N,N,N,N,
-N,N,N,N,N,64637,N,N,N,N,N,N,N,N,N,N,N,N,34675,N,N,N,N,N,N,N,N,N,N,N,40811,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64460,N,65198,N,N,N,34669,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,64465,N,N,N,N,N,N,N,N,N,N,N,64373,64468,N,N,N,N,N,N,N,
-N,N,N,N,N,N,64470,64472,N,N,N,N,N,N,N,35677,N,37708,N,39650,N,N,35785,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64475,40905,
-N,N,N,N,N,N,N,N,40772,N,N,N,N,N,N,N,N,N,N,39149,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,36073,N,N,N,N,N,N,N,N,N,N,N,N,64477,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,36338,35172,N,65010,N,37709,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,64487,N,N,N,N,N,N,41202,39016,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40792,N,N,N,36070,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36211,N,N,N,64478,N,N,N,N,N,
-64479,N,N,N,N,N,35912,N,N,N,N,N,N,34676,64483,N,N,N,N,36264,N,N,64484,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40053,N,N,39032,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-36192,N,N,N,N,N,N,N,64485,N,36193,N,N,N,N,N,N,N,N,N,N,N,N,N,36194,41121,N,N,N,
-40000,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39085,N,N,N,40682,N,N,N,36076,N,
-N,36052,N,N,N,N,N,N,N,N,N,40171,N,N,N,N,N,64480,N,N,40785,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,36197,N,N,N,N,N,N,40177,N,N,N,N,N,N,N,N,N,N,64600,N,N,
-36198,N,N,N,N,N,N,N,38484,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64488,N,N,
-N,50892,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40910,64508,N,39652,
-N,N,N,N,N,N,40821,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64497,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36201,N,N,N,N,N,37711,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,37710,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,64500,N,N,N,N,50894,N,N,N,64451,N,N,35173,N,N,N,N,N,N,N,N,N,N,N,35962,N,
-N,N,N,N,N,35963,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,36202,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37715,N,N,40443,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64509,N,N,N,36953,64576,N,
-64577,64579,37729,64582,37730,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-36203,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64588,36094,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,38328,N,N,50896,35786,N,N,N,N,N,N,N,N,N,N,39034,N,N,N,N,50897,N,
-64593,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64596,N,N,N,N,N,N,N,N,64175,N,N,N,N,N,N,N,
-36204,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64097,N,
-N,64599,N,N,N,N,N,N,N,N,N,39792,N,N,N,N,N,N,N,N,41041,N,N,N,N,N,N,N,35964,N,
-35787,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37742,N,N,N,64725,64681,N,N,
-N,N,N,N,N,N,N,N,N,N,N,64609,N,N,N,N,N,N,N,N,N,35174,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,64203,N,N,N,N,N,N,N,63962,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,37754,N,41184,N,N,N,N,N,N,37739,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64619,N,N,N,N,N,41180,N,N,37992,N,N,N,N,N,N,
-N,N,N,N,N,64621,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,36209,N,N,N,N,N,N,64868,N,N,N,N,39354,N,N,N,39632,39521,41189,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41051,38572,N,N,N,N,38720,N,N,N,N,N,N,N,N,N,N,N,
-N,40689,N,N,N,N,N,N,N,N,35917,N,N,N,N,N,N,N,N,N,N,N,N,N,40830,N,N,N,N,N,N,N,N,
-N,N,N,N,36210,N,N,N,N,64630,N,N,N,N,N,N,N,N,N,N,N,N,N,38569,N,N,N,N,N,N,N,N,
-41070,N,N,64682,N,N,N,64461,N,N,N,64628,N,N,N,N,N,N,N,N,N,N,41076,N,N,N,N,N,N,
-N,N,N,N,N,N,N,41073,N,N,N,64633,N,N,N,N,N,64636,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40016,N,N,37753,37752,N,N,41181,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,36213,N,36214,N,N,N,N,N,N,37748,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36215,64677,
-N,N,64674,N,N,N,N,N,N,37059,N,N,N,N,N,N,N,41081,36217,N,N,N,N,N,N,N,N,N,N,
-35836,N,41078,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35789,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40794,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,40948,N,N,40890,N,N,N,N,N,N,N,N,N,N,36218,N,N,N,N,N,N,N,N,N,N,N,N,
-40517,N,N,N,N,N,N,37808,N,41077,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,39750,N,64686,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64688,N,N,N,N,N,N,N,N,N,
-64081,N,N,N,N,N,36219,36220,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40662,N,
-N,37804,N,N,N,40795,N,37801,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41084,N,N,N,N,N,N,N,64690,N,N,N,N,N,N,N,
-N,N,N,N,N,35521,N,N,N,N,N,40884,N,N,N,N,N,N,N,N,N,N,N,64684,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40524,
-N,N,N,N,N,N,N,36805,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37805,N,N,N,N,N,N,N,N,N,N,N,
-N,40387,N,N,N,36258,N,N,N,40266,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64694,N,N,
-36259,40523,N,40525,36260,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35581,N,N,N,N,N,64693,N,64707,37810,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36261,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,37793,N,N,N,N,N,N,N,N,N,N,35526,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,35419,N,N,N,35149,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,65236,N,N,N,N,35448,N,37803,N,N,N,N,N,N,N,N,N,36263,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,40773,N,N,N,N,N,N,N,N,N,35414,N,N,N,64703,N,N,N,64704,N,36582,
-N,N,35492,35139,N,N,N,N,N,N,37875,N,N,N,N,N,N,N,N,N,N,N,N,64683,40610,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,40391,N,N,N,50898,35790,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,64709,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64715,N,N,N,N,N,N,N,N,
-N,N,N,37811,N,64714,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64713,36268,
-N,64454,35175,N,35966,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,64717,N,N,N,N,N,N,N,N,40179,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,64720,N,N,38331,N,N,N,N,N,N,N,N,N,N,N,64723,N,N,64724,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36270,64727,N,N,N,N,N,37851,N,N,N,N,
-65123,N,N,N,N,N,N,N,N,N,N,N,N,37845,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64730,N,N,N,39793,N,N,64733,N,34660,N,N,N,N,N,36271,N,N,N,64242,N,N,N,N,N,N,N,
-N,N,N,N,37848,N,N,N,64735,N,N,N,37843,N,N,N,N,N,N,N,64737,N,N,N,N,N,N,N,N,N,
-36470,N,N,N,N,N,N,N,64610,N,N,N,N,N,N,N,N,37841,N,N,N,36273,N,N,N,N,N,N,N,
-39001,N,N,N,N,N,N,N,N,N,64338,N,N,N,N,N,N,N,N,64339,N,N,N,N,N,64333,N,N,40127,
-N,N,N,N,N,N,N,N,39794,N,N,N,N,N,N,N,N,N,N,N,N,N,64336,37822,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36059,N,N,N,N,N,N,N,N,N,40433,64747,N,N,N,N,N,N,
-N,N,N,41147,N,39806,N,N,N,N,N,N,N,36275,N,N,35922,N,N,N,N,39656,N,N,N,N,N,N,
-36572,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40185,N,N,N,N,N,N,N,N,N,N,N,N,N,64080,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39143,64755,N,N,N,N,
-64754,N,N,N,36042,N,N,34677,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,37861,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39513,N,N,N,36277,N,N,N,N,
-N,N,N,64845,N,N,N,N,64862,N,N,N,N,N,N,N,N,N,N,N,N,N,36733,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,38215,64758,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,37456,N,N,N,N,35176,36278,64763,41085,39164,35177,N,N,
-N,N,N,N,N,N,65103,N,N,37462,N,N,N,N,N,N,N,N,N,N,64201,N,N,37864,N,N,N,64760,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40163,64937,N,N,N,N,N,N,64580,N,N,N,N,N,N,
-N,N,38464,N,N,36280,N,N,N,N,N,N,N,N,N,N,39754,36793,N,N,N,N,N,N,64766,N,N,N,N,
-N,N,N,35178,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36281,
-N,N,N,37246,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37876,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64380,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37863,N,N,38895,N,N,N,65098,N,N,N,N,N,
-64837,N,38565,N,N,N,N,65248,64840,64839,65266,65130,N,N,N,N,N,36285,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,39841,36002,39607,36604,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40865,N,N,N,N,N,N,N,N,N,64849,N,N,N,N,N,N,N,64173,N,N,N,N,36286,N,N,35236,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,39641,N,N,N,N,N,N,N,N,N,N,N,64846,N,N,36288,N,N,38896,
-N,N,N,N,N,N,N,N,N,N,37812,64836,N,N,N,N,N,N,N,N,N,N,N,N,40871,N,N,N,N,36290,N,
-N,N,N,39350,N,N,N,N,N,N,N,N,N,N,N,N,N,64850,N,N,N,N,N,N,36289,N,N,36422,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,41169,N,N,N,N,N,N,N,N,N,N,N,N,N,40906,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,37583,N,N,N,40180,36292,N,N,N,N,N,N,N,N,N,N,64833,N,N,N,N,N,N,
-N,39756,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64855,64751,40158,N,N,N,N,N,N,N,64834,
-39020,N,N,N,N,N,N,N,N,N,N,N,N,N,38905,N,38232,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39006,65147,38093,N,N,N,N,N,37870,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36003,N,64858,
-N,N,N,N,N,N,37877,N,N,N,N,N,37871,36586,N,N,N,36699,N,N,N,N,N,N,N,N,N,N,N,
-35934,N,36294,N,N,N,N,N,N,N,N,N,N,N,36296,N,N,36295,N,N,N,N,N,37879,N,N,N,N,N,
-N,N,36297,N,N,N,N,N,N,N,64498,N,N,N,N,38512,N,N,N,N,N,N,N,N,N,36299,N,N,N,
-64860,N,N,N,N,N,N,N,N,N,36709,N,N,N,36301,N,N,N,N,N,40360,38137,N,N,36302,N,N,
-N,N,N,N,N,N,37866,N,N,N,N,N,N,N,N,N,64863,37872,40886,N,N,N,N,N,N,N,N,N,36303,
-N,N,N,38755,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36304,
-37873,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64866,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,64869,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,40923,N,N,N,N,37880,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35831,N,N,N,N,64870,N,N,N,N,N,35791,N,N,N,N,N,N,36305,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,36306,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,64881,N,N,N,N,64879,N,N,N,N,N,N,N,N,36307,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40935,37053,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40912,N,N,N,35792,N,64882,
-N,40110,35793,N,N,35547,N,N,N,N,N,N,N,N,N,N,N,64228,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,38350,N,64886,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64354,N,N,N,N,N,N,36308,
-N,N,N,64888,N,N,N,N,N,36579,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,36982,N,N,39110,N,N,N,N,N,N,N,36309,N,N,N,N,38865,N,N,40630,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64199,N,N,41026,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,39027,N,N,N,N,N,N,N,N,N,N,40956,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,36005,36311,N,N,37627,36312,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,37967,N,36313,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,35179,N,N,N,N,N,N,N,N,38862,N,N,N,64243,64942,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64431,37559,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-36314,N,N,N,N,N,N,N,N,N,N,N,N,N,40026,N,N,N,N,N,N,64941,N,N,N,N,N,N,N,N,N,N,N,
-N,N,36316,37956,N,N,N,N,N,N,N,N,N,N,N,36317,N,N,N,N,N,N,N,41174,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35905,38869,N,37962,N,N,N,N,N,
-37965,N,N,N,N,38859,N,N,N,N,N,36318,N,N,36319,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-36320,65273,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,64960,64761,N,N,N,N,N,N,36061,N,64382,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,37555,N,N,N,N,N,64943,N,N,N,N,N,N,N,N,N,36321,N,N,N,N,
-38355,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35265,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,64872,N,N,40119,N,N,36323,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,64192,36325,64100,N,35143,N,N,N,N,36324,N,N,N,N,N,36327,
-36328,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64967,64944,N,N,N,N,N,N,37957,38870,N,N,
-N,N,N,N,N,N,N,64710,38980,N,N,N,N,N,N,N,N,N,N,N,N,36329,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,36330,N,N,N,N,N,N,N,N,65104,N,N,N,N,N,N,64972,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,40359,N,N,N,N,N,64973,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64975,N,N,N,N,38354,N,N,N,N,N,N,N,36333,N,N,N,N,N,N,N,N,64698,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,64965,N,64978,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40156,N,N,N,N,N,38351,N,N,36334,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64980,
-N,N,N,N,N,38636,38635,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-37046,N,64963,39083,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38638,
-N,N,N,N,N,N,N,N,N,N,N,N,N,36340,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,64992,N,35943,N,N,36342,N,N,N,36343,N,N,N,N,N,N,N,36858,N,N,N,N,
-N,N,N,N,N,N,38864,N,N,N,N,35794,N,N,36344,N,N,N,N,N,37081,N,35911,N,64240,N,N,
-N,N,64993,36345,N,64995,N,N,N,N,N,N,N,36346,N,64355,N,N,N,37030,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,39280,N,N,37355,N,38768,39023,64994,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,39154,N,39676,35180,65021,N,N,39262,N,N,N,38333,N,N,N,N,N,N,N,64996,
-N,N,N,37350,N,N,N,N,64997,64998,N,N,N,N,N,N,N,N,64999,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,37972,N,N,N,39352,N,N,N,N,N,N,N,N,38889,37702,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,39011,N,N,N,N,N,N,N,N,N,N,N,38332,N,65005,65015,N,N,N,
-N,N,N,39024,38646,36521,N,N,N,N,N,37969,N,N,36419,N,35674,N,N,N,N,65006,N,N,N,
-N,65008,N,N,N,N,65012,N,39925,N,N,N,N,N,36078,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,38782,N,N,N,N,N,39893,N,39619,N,38856,41179,37328,N,N,40932,N,36829,N,
-37353,N,N,N,N,N,N,N,N,N,39136,N,N,N,37578,N,38999,N,N,35921,N,N,N,N,65003,N,
-39753,N,N,N,N,N,N,N,N,N,40310,40623,N,N,N,N,N,N,N,N,N,40140,N,N,N,N,N,N,65002,
-N,N,36337,N,N,65019,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36435,N,N,N,N,
-N,N,N,N,N,N,N,64207,N,N,N,N,N,N,N,N,N,N,N,N,N,38649,N,N,N,N,N,N,N,N,N,39103,
-40521,36007,N,N,N,N,N,N,N,N,39882,N,N,N,N,65022,37596,N,N,N,N,N,65089,37324,
-37346,N,N,N,N,N,N,N,N,N,N,N,N,65092,34655,N,N,N,N,N,35795,N,N,65095,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,65096,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37973,N,N,N,N,
-65099,N,65100,N,N,N,N,36287,N,N,N,N,N,N,N,N,N,40568,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,65105,N,N,N,N,37974,N,N,N,N,N,N,N,40289,N,N,N,N,
-37975,N,N,N,N,N,N,N,N,N,N,39270,N,N,N,N,N,N,N,N,N,N,N,N,N,35797,N,N,N,N,41065,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39092,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,41033,41036,N,40549,N,N,N,N,N,N,N,N,N,N,N,39093,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65112,N,39285,65107,41061,N,65113,N,N,N,N,
-N,N,N,N,N,39095,39096,N,N,N,N,N,N,N,39098,N,N,N,N,N,N,39099,N,N,N,N,N,N,40892,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41034,N,N,
-40647,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36009,N,N,39086,N,N,N,N,N,
-N,N,N,37590,N,N,N,64225,N,37332,N,N,N,N,N,N,N,N,64222,N,N,65115,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,35923,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65118,N,N,N,N,64471,65114,
-38085,N,N,N,N,64202,N,N,N,N,N,N,N,N,N,N,N,39105,38748,N,65140,N,38771,N,N,N,N,
-N,N,N,N,64070,N,N,N,38756,N,N,N,65128,N,38478,N,38757,35930,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,35233,38394,N,37588,65129,N,64325,N,39112,N,N,37103,N,39113,39114,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37997,38071,65132,N,N,37995,N,N,N,
-N,N,N,37628,N,38379,N,65139,38766,65119,N,N,N,N,N,N,N,N,N,64957,N,N,37589,N,N,
-N,N,N,N,65209,N,N,65137,34680,N,N,N,64443,N,N,38010,N,N,38395,65143,N,N,N,N,N,
-N,N,65145,N,65141,N,N,N,37981,N,N,N,N,N,N,N,65148,N,N,N,N,N,N,N,N,N,37700,
-36518,N,N,N,N,N,N,N,N,N,N,N,37587,N,38072,N,34681,N,N,N,N,N,N,64625,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,38750,N,N,N,N,36013,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65191,N,N,
-N,37994,N,N,N,37859,N,N,39119,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41177,N,N,
-N,N,N,N,N,N,41151,41037,41144,N,N,N,N,N,41166,41143,N,N,N,N,N,N,N,N,65193,N,N,
-N,N,N,N,N,N,N,N,35267,N,N,N,N,65195,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40436,35181,N,N,N,N,N,40059,N,N,N,N,N,N,39122,N,N,N,40873,N,N,N,65202,N,N,
-65201,N,N,N,38873,N,41156,N,38006,N,N,N,N,N,N,N,N,N,N,39288,N,N,N,N,N,N,65203,
-N,N,N,N,N,39123,65204,N,N,N,39124,N,N,N,N,N,N,N,40889,N,N,N,N,N,N,N,N,38001,N,
-N,N,N,N,N,N,N,N,39125,65208,N,N,N,50900,N,N,N,N,N,N,N,N,N,N,N,65210,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,40540,N,N,65211,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41028,N,
-N,N,N,39127,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39128,65212,N,N,N,N,40958,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65213,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,40413,N,N,N,N,40673,N,N,N,N,N,N,N,N,N,N,N,N,39130,
-40415,65215,N,65214,N,N,40683,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40537,41052,N,
-N,N,N,N,N,N,65216,N,N,N,38007,39132,N,65217,N,N,N,39134,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,65219,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65224,N,N,N,65225,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65226,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-65227,N,N,N,N,N,N,N,N,N,40898,N,N,35947,39108,N,38064,38065,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,65233,N,N,N,N,N,41153,N,65234,N,N,N,N,41165,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,65235,N,N,39141,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65238,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37348,N,N,N,N,36807,38062,N,
-35407,38066,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36820,N,N,N,N,39146,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65240,N,N,N,N,N,N,N,N,N,40416,N,N,
-N,N,39150,N,N,N,N,38340,N,64744,N,N,N,N,N,39151,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,35950,N,N,N,N,N,N,N,N,64216,N,N,N,N,N,N,N,N,N,N,N,N,N,65244,N,N,N,N,N,N,N,
-N,N,41134,40268,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39153,N,N,N,39155,N,38081,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39157,N,N,64079,38626,N,N,N,N,
-37968,N,38562,N,N,39158,N,N,N,38629,N,N,N,N,N,39159,N,41030,38627,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,39160,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40676,N,N,N,
-N,N,N,63958,N,N,N,N,N,N,38083,N,N,N,N,38082,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65249,N,65257,N,N,N,N,38628,N,35244,38619,N,N,
-N,N,N,N,N,N,N,N,N,N,N,65250,N,N,N,N,N,N,N,N,N,N,38084,65251,N,N,N,65255,40955,
-N,N,N,N,N,N,N,N,N,N,N,35929,N,N,N,N,N,N,N,N,N,37833,N,38120,64342,N,N,N,37061,
-41128,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,65253,N,N,N,39165,39163,65256,N,36543,N,N,N,N,35800,65271,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36712,38086,N,N,N,N,N,N,N,N,40426,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,64617,N,N,N,N,N,N,N,N,N,N,N,N,40154,N,65267,N,N,40050,
-N,N,65264,35273,N,N,N,N,N,N,N,N,N,39233,N,N,N,N,N,N,N,39234,N,N,N,65269,N,
-37335,N,N,N,N,N,38092,N,N,N,65272,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,38824,N,65276,N,N,N,36062,N,64959,N,N,N,N,N,N,N,65278,N,N,N,N,N,N,N,N,
-N,N,N,N,N,38609,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38101,N,N,38096,39236,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35939,N,N,41139,N,N,
-N,N,N,N,N,N,N,N,N,N,38095,N,N,N,40954,N,N,N,N,37349,N,40042,N,N,N,36425,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36428,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,36429,N,N,N,N,N,39539,N,N,N,N,N,N,N,N,N,N,N,N,N,39239,N,
-36017,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36432,N,N,N,N,N,
-N,N,N,N,N,36431,39241,N,N,N,N,N,36433,36434,N,N,N,N,39602,35237,N,N,N,N,N,
-39244,N,N,N,40952,N,N,N,N,N,N,36438,39245,37322,36439,N,N,N,N,38113,N,N,N,N,
-36935,N,36824,36440,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38123,36444,38227,N,
-N,N,N,N,N,N,40933,N,N,N,N,N,N,N,N,N,N,40790,N,N,N,N,N,N,N,38223,N,36446,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,39274,N,N,N,N,N,N,N,N,40036,40153,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,36445,N,N,N,N,N,N,N,N,N,N,N,N,39248,N,N,N,N,N,N,N,N,N,39249,N,N,
-36450,N,N,N,N,N,N,N,N,N,N,N,39250,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-36456,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36449,40793,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35763,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40797,36454,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36018,N,N,N,N,N,N,N,N,N,N,N,
-N,N,36462,N,40804,39251,N,N,64184,N,N,N,N,N,39252,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,36464,N,N,N,N,N,N,N,N,N,N,N,N,40801,N,36466,N,N,N,N,N,N,
-N,N,N,N,N,N,41067,N,N,N,N,40768,N,N,N,N,N,N,38125,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,38126,N,N,40893,N,N,N,36475,N,N,N,N,N,N,39255,38135,N,40799,N,N,N,N,36467,N,
-N,40802,N,N,N,N,N,N,N,38134,N,N,N,N,N,N,N,N,N,N,N,N,N,39256,N,N,N,N,N,N,N,N,N,
-36469,63963,N,N,N,N,36978,N,38136,N,N,N,N,N,N,N,N,N,39258,N,N,N,N,N,N,N,N,N,
-41136,36019,N,N,N,36473,N,36472,N,N,N,38131,N,N,N,N,N,39087,N,N,N,N,N,N,41138,
-N,N,N,N,N,N,N,N,N,N,N,36474,N,N,N,N,N,N,39260,N,N,N,N,N,36476,N,36477,N,N,N,
-35801,N,N,35234,40663,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,41142,N,N,N,N,N,N,N,N,N,N,N,N,40514,N,N,36516,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-36519,N,35958,N,N,N,N,N,N,N,N,N,34663,N,38210,N,N,N,N,N,N,N,N,N,N,N,N,39037,N,
-N,N,38741,N,N,36520,N,N,N,N,N,N,N,36522,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,35235,N,39264,39266,N,N,38140,39265,N,N,N,N,N,N,N,38138,N,N,N,N,N,
-N,N,36526,36530,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36528,N,N,N,N,N,N,N,39267,38826,
-38139,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36539,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,36060,N,N,N,N,N,N,N,N,N,39030,N,36513,N,N,N,N,36020,N,
-36535,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40358,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40624,
-N,N,N,36536,N,N,N,N,N,N,N,N,N,N,N,N,40304,N,N,N,N,35182,N,N,N,N,N,N,N,35183,N,
-N,N,N,N,N,N,N,N,N,N,N,N,35184,N,N,N,N,N,N,N,N,N,N,N,N,35185,N,N,N,N,N,N,N,
-35186,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35187,35188,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35189,N,N,N,
-N,N,N,N,N,36540,36541,N,N,N,N,N,36542,N,40401,N,N,N,N,38141,N,N,N,35799,35802,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41186,N,N,N,N,N,N,
-40937,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64936,N,N,N,35559,N,N,N,
-36546,N,N,N,N,N,N,N,N,N,N,N,36548,N,N,N,N,N,N,N,N,N,N,39268,N,N,N,N,N,39269,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-38222,N,N,N,N,N,N,N,N,N,39091,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36555,35807,
-N,N,N,N,N,36558,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36559,N,N,39272,N,N,N,
-N,39273,N,N,N,N,N,N,N,N,39275,36561,N,39276,N,N,N,N,N,N,N,N,N,36564,36565,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39277,N,N,N,N,N,N,41150,N,N,N,N,N,
-36566,41148,41141,N,N,41140,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35808,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35253,N,N,N,
-N,N,N,N,36573,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40541,39281,N,N,N,N,35246,40424,N,N,
-N,N,N,N,N,N,38245,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,39282,N,N,35676,N,N,N,N,N,N,N,N,N,35249,41152,N,N,N,36575,N,38246,N,N,
-39284,N,39286,N,N,N,39287,N,39289,N,N,40410,N,N,36576,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,37724,N,N,N,N,N,N,N,40422,N,35679,N,N,38243,N,N,N,N,N,N,N,N,N,N,38247,N,
-N,N,N,N,40419,N,N,N,N,N,N,N,N,N,N,N,N,N,39292,N,N,39293,39294,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,36091,35675,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39331,N,N,N,N,N,N,N,
-39332,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39334,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39336,N,N,N,N,35518,N,N,N,N,N,N,N,N,N,N,N,40545,N,N,N,N,N,N,N,N,N,N,39338,N,N,
-N,N,N,N,41160,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39339,N,N,
-N,N,N,N,N,N,N,N,65220,N,N,N,N,N,N,39106,36584,N,41146,N,N,N,N,N,N,N,N,N,N,N,
-64887,N,N,36590,N,N,N,40639,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35266,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39340,N,N,N,N,N,N,N,N,N,N,N,N,N,38251,N,N,38252,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39343,N,N,39242,35190,36680,N,N,N,N,N,N,N,N,N,
-N,N,64494,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39342,N,
-N,N,36603,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36048,N,N,N,N,35666,N,N,N,N,
-N,39344,N,N,N,N,35191,36673,N,N,N,N,N,N,N,39345,N,N,N,N,N,N,N,N,N,36681,N,N,N,
-N,N,N,N,N,N,N,N,64077,N,N,N,N,N,N,N,N,40420,36021,N,N,N,64489,39764,N,39346,
-40552,N,N,N,N,N,N,N,N,N,N,N,N,36682,N,36674,N,N,36689,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38982,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,39348,N,N,N,N,N,N,N,N,N,N,36597,64853,N,N,40141,N,N,N,N,N,N,N,
-N,35192,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36691,N,N,N,N,N,N,N,N,N,N,N,
-36719,N,N,N,N,N,N,N,N,N,N,36451,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36694,N,N,N,N,N,
-N,N,N,N,N,N,N,65142,N,N,N,N,40902,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64172,N,N,N,N,N,
-36696,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38984,39351,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,38501,N,64108,N,40423,N,N,N,40546,N,N,N,38604,36455,N,N,
-64629,N,39038,N,N,N,N,N,N,N,64953,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38908,N,N,N,N,
-N,N,N,N,N,39161,N,36710,N,N,N,N,N,N,N,N,38254,N,37445,N,N,36704,N,N,N,40657,N,
-N,N,N,N,65229,N,39353,N,N,N,N,N,N,N,N,N,N,N,N,36706,38732,N,N,N,N,N,N,N,N,N,N,
-N,N,37319,38239,N,N,N,N,N,N,N,39355,N,N,N,N,N,N,N,N,N,36461,36721,N,N,38091,N,
-N,N,N,N,N,N,N,N,N,N,N,38321,N,N,N,N,N,N,N,N,N,39666,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,38595,39357,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41167,N,
-N,N,36717,N,N,39358,36596,N,36722,38372,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39359,37442,N,64421,N,N,N,N,N,N,N,N,N,N,39360,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64948,36727,N,N,N,39361,N,N,N,N,N,N,N,N,N,
-64185,N,N,N,N,N,N,N,N,36672,64068,N,N,N,N,N,39362,N,N,N,N,N,N,N,36700,N,N,N,N,
-36029,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39364,39365,N,N,36731,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34678,N,N,N,36022,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36771,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36046,N,N,N,N,N,N,N,N,N,39366,N,N,N,N,N,N,N,N,
-N,N,N,N,N,38605,N,N,N,N,N,N,N,N,N,N,N,N,N,38599,36773,N,N,N,N,N,N,N,N,N,N,
-64187,N,35937,38256,N,N,N,37736,N,36734,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-36778,N,N,N,N,N,N,41040,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37075,N,N,38230,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-36792,N,N,N,N,N,39368,N,N,N,N,N,N,N,N,N,N,N,36783,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,39369,N,N,N,N,N,N,N,N,N,N,N,N,N,38265,N,N,N,N,N,N,N,N,N,N,N,N,40777,
-N,N,N,N,39370,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39371,40405,36784,N,N,
-N,N,N,N,N,N,N,N,N,64122,N,N,N,N,N,N,N,N,40543,N,N,N,N,39373,41161,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39643,N,N,N,41158,N,N,N,N,N,N,N,36788,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,41175,N,N,N,N,N,N,N,N,N,N,N,N,41159,N,N,N,N,N,N,N,
-41027,N,N,N,36789,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36786,N,N,N,N,N,N,
-41057,40542,N,N,N,N,N,N,N,N,N,N,36790,N,N,N,N,N,N,N,N,40936,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,40114,N,N,N,N,N,38268,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40903,
-N,N,36795,36796,N,N,N,N,N,N,N,N,36844,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36800,N,
-37738,N,N,N,35812,40060,N,N,N,N,N,N,N,N,38305,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,65260,N,N,38307,N,N,N,N,N,N,N,35909,36024,N,N,N,N,N,N,N,N,N,N,N,
-36801,N,N,N,41042,N,N,N,N,N,N,N,N,N,N,N,N,N,39376,N,N,N,N,N,36803,36804,N,N,N,
-N,N,N,N,N,N,38308,N,N,N,N,N,36806,N,40544,N,N,N,N,N,N,N,63960,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,38309,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40115,N,N,N,N,N,
-N,N,N,N,39377,65265,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,39378,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40130,N,N,N,39379,N,N,N,N,N,38311,N,N,N,N,N,N,38313,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,38310,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40029,N,N,N,N,N,N,N,N,39138,N,N,
-N,N,N,N,36809,N,41154,36810,N,N,N,N,N,N,39380,N,N,41145,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,39768,N,36813,N,41172,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36814,N,N,
-N,N,35813,N,N,N,N,35193,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,36816,38326,N,N,N,N,N,N,N,N,N,N,N,N,39382,N,38373,N,N,N,N,N,N,N,N,N,
-N,N,N,39383,N,N,N,N,38325,N,N,N,N,N,N,N,N,N,N,N,41162,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40957,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,41048,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36822,N,N,N,39384,N,N,N,N,N,N,N,
-36819,N,N,N,N,N,N,N,N,N,N,N,N,36837,N,N,N,N,N,36841,N,N,N,N,39385,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36087,N,N,N,N,N,N,N,N,N,N,N,N,N,37500,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,40005,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36072,36830,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,36831,N,N,N,N,N,N,N,N,N,N,N,N,N,41035,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,36834,N,N,N,41164,N,N,N,N,N,N,N,N,36835,36836,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,39876,N,N,N,39932,N,N,N,N,N,N,38476,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,39670,N,36014,N,N,N,N,N,N,N,N,N,N,N,N,36839,N,N,N,N,
-N,N,N,N,N,N,36840,N,N,N,N,35815,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,35194,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,35195,39386,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,36845,N,N,N,38336,N,N,N,N,N,N,N,N,N,N,N,N,N,41163,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40520,N,N,N,N,N,N,39387,N,36851,
-N,N,N,N,36857,N,N,N,N,N,N,N,N,N,N,N,N,N,38337,N,41038,N,N,N,N,N,N,39388,N,N,N,
-N,41060,36855,N,N,N,N,N,N,N,35248,41032,N,N,N,N,36859,36854,N,N,N,N,N,40412,N,
-N,N,39389,35816,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37569,N,N,N,N,N,N,N,40918,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41170,N,N,36928,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35524,N,N,39392,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,40944,40947,N,N,N,N,N,N,N,N,N,N,N,N,40383,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,40950,N,38344,N,N,40538,N,N,N,N,N,N,N,N,N,N,N,N,
-39395,N,N,N,N,N,N,N,N,N,N,N,35402,N,N,N,N,N,N,N,N,40945,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,35495,N,N,N,N,N,N,N,N,39398,N,N,N,40951,N,40941,N,N,
-N,N,N,N,35420,N,40366,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,38345,N,N,N,N,N,36936,N,N,39400,N,N,N,N,N,36937,N,N,36026,
-N,N,37041,N,N,N,N,N,N,36938,N,N,N,N,N,N,N,N,N,N,39402,N,N,N,N,N,N,N,N,N,N,N,
-39889,N,N,N,N,N,N,N,39403,N,39404,N,N,N,N,N,N,N,N,39405,N,N,N,N,39406,36940,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36941,N,N,38347,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,38882,N,N,N,N,N,N,N,N,38348,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40824,N,N,
-N,N,N,N,N,N,N,35196,35197,N,N,N,N,N,N,35198,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39261,N,N,N,N,N,N,N,N,N,N,N,N,39770,N,N,
-N,N,36944,N,35919,N,N,N,N,N,N,N,N,N,N,N,36948,N,50902,39592,39407,65259,40355,
-40353,39235,39237,N,40317,N,N,39408,N,N,N,N,N,N,N,N,39409,N,39410,N,N,36028,
-40288,N,N,N,N,N,N,N,N,N,41123,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,36955,40667,N,N,N,N,N,N,N,N,N,40313,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39411,N,N,N,36962,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,40789,N,N,N,N,N,N,N,N,N,39929,N,N,N,N,N,N,N,N,N,N,36965,N,N,
-38624,N,N,N,N,N,N,N,39102,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36968,N,N,N,
-N,N,36972,N,N,N,N,N,N,N,N,N,N,N,N,38360,N,N,N,N,N,N,N,N,36970,40882,N,N,N,N,N,
-N,N,40878,N,N,40880,N,35245,N,N,N,N,N,N,N,N,36974,N,N,N,N,N,N,N,N,40561,N,N,N,
-N,N,40522,N,N,N,N,N,40924,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35243,N,40888,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36976,N,N,N,N,N,N,N,N,N,N,N,N,
-35683,N,N,N,N,38364,N,N,N,N,N,N,N,N,36977,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64606,N,N,N,N,N,N,N,N,35145,N,N,N,N,N,38491,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35920,N,N,N,38054,N,N,N,36821,40563,N,N,N,N,N,36981,N,N,N,N,39415,N,N,N,N,N,N,
-N,N,N,N,N,N,N,36031,N,N,N,N,N,N,39417,N,38499,38329,N,N,N,N,N,N,N,N,N,38100,N,
-N,N,N,N,N,64762,N,N,N,N,36983,N,N,37035,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40269,
-N,N,39418,N,N,N,N,37603,N,38843,N,N,36984,N,N,N,N,N,N,N,N,39419,N,N,38880,N,N,
-N,N,N,N,N,N,38620,N,N,N,N,N,N,N,N,N,40104,N,N,38770,N,N,N,N,37952,N,N,N,N,N,
-37618,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39421,N,N,
-39420,N,N,N,N,N,N,N,63959,38474,N,N,N,38616,39422,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,36939,N,N,N,N,N,N,64065,N,N,N,N,N,N,N,39488,N,38747,N,N,N,N,N,
-39489,37341,N,N,N,N,N,37884,39490,39491,N,38489,N,N,N,N,N,N,39492,36945,N,N,N,
-38079,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-37026,N,N,N,40107,38774,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64597,65093,38056,39493,
-64075,40417,N,N,38617,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38772,N,N,
-65013,N,N,N,37605,N,38469,37338,N,37027,N,N,41055,N,N,N,N,37039,38847,N,N,N,
-37196,N,N,N,N,38522,N,N,N,37342,N,N,39494,65200,38777,37996,N,N,N,N,N,N,N,N,
-39000,N,N,N,N,N,N,N,N,N,N,N,37478,N,N,N,37883,N,N,N,N,N,N,N,N,N,N,N,N,39495,N,
-N,N,N,N,N,N,N,N,N,38729,N,N,38728,N,37706,N,40162,N,N,N,N,N,N,37476,N,N,N,N,
-37343,N,N,N,N,N,N,N,64377,N,N,N,N,N,N,N,38615,N,N,N,N,37699,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,64971,65146,N,37339,35946,38831,N,N,38365,N,N,N,37704,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,39499,N,N,N,64581,N,39501,N,N,N,N,N,N,37308,37090,37044,38369,
-N,N,N,N,N,39502,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39503,N,N,N,65088,65091,N,N,N,
-N,N,N,N,N,N,38621,N,N,N,N,N,N,39505,N,N,N,38567,N,N,37040,N,N,N,N,N,N,N,N,N,
-40014,N,37955,N,N,N,N,36538,N,N,N,N,N,N,N,N,N,N,N,N,39506,N,64705,N,N,N,N,N,N,
-N,N,N,35817,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40111,N,N,35837,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39612,N,39608,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39598,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,39591,39507,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,40308,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35818,N,N,N,N,N,N,35819,N,N,N,N,N,37042,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,38377,38376,N,38374,N,N,N,N,N,N,37045,N,39508,N,N,N,
-37043,38375,N,N,35664,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35820,N,N,N,
-N,N,N,N,N,N,N,N,39510,35835,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39511,N,
-N,N,N,41130,N,N,N,N,N,N,N,N,40870,N,N,N,39372,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40025,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39349,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,37054,N,N,N,N,N,40879,N,N,N,N,N,N,N,N,N,N,N,N,N,38386,N,N,N,N,N,N,37055,N,
-N,N,N,N,N,N,N,N,N,N,N,37057,N,65252,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37060,N,N,
-N,N,N,N,37063,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37604,40786,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,37083,N,N,N,N,N,41062,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-37074,N,N,34667,N,37076,N,N,N,N,N,N,N,N,N,39515,38397,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,35780,N,N,N,35942,N,37086,N,N,N,N,N,40164,N,37089,N,N,N,N,N,N,N,N,N,N,N,
-N,N,40518,N,N,N,38481,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64344,N,37094,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38480,N,N,N,37095,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,37096,39517,N,40826,N,N,N,39772,N,40828,N,N,64594,37097,N,37098,N,
-39518,N,N,N,N,N,40822,N,N,N,N,N,N,N,N,N,37099,N,N,N,N,N,N,N,N,N,N,N,N,N,37100,
-N,N,N,N,N,35822,N,N,N,N,N,N,N,37102,N,N,N,37318,N,N,37106,64700,35444,N,N,N,N,
-N,N,N,N,N,38487,N,N,N,40175,N,N,N,N,N,N,N,N,N,N,40927,N,N,N,N,37111,37110,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39774,N,N,N,37112,N,N,N,N,N,N,N,N,N,N,36092,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,37113,N,36041,N,N,N,64106,N,N,N,N,N,N,N,N,35823,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40928,N,N,37186,N,39522,N,N,N,N,N,
-N,N,N,N,38249,N,N,N,37188,37187,N,37185,N,N,N,35824,N,N,N,N,N,N,N,N,N,N,N,N,N,
-38496,N,35825,N,39414,37193,N,N,N,N,37194,N,N,N,N,N,37195,N,N,N,N,39524,N,N,N,
-35519,39526,N,N,N,N,N,N,N,N,N,N,39527,N,N,39529,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,39530,38482,37197,N,38502,N,N,N,N,40827,N,39531,N,N,N,N,
-N,N,N,41068,N,N,38503,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39532,N,N,N,N,39533,35826,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38506,N,N,N,N,N,N,N,N,64746,N,N,N,N,N,38508,N,
-N,N,N,N,N,N,N,N,N,N,N,N,37316,N,N,N,38519,N,N,N,N,N,N,N,39412,39535,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40875,N,N,N,N,N,36030,36545,N,N,N,N,38229,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,37202,37203,N,N,N,37205,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-38237,N,38513,N,N,N,N,40045,N,N,N,N,N,N,N,N,38515,N,N,N,N,N,N,N,N,N,N,N,37204,
-39537,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37206,N,N,N,38509,
-N,N,N,N,N,N,38231,N,N,N,N,N,N,N,N,35270,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35271,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,35434,N,N,N,35671,N,N,N,40929,N,N,39775,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41053,N,N,N,N,N,N,N,N,37211,N,37212,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37214,N,N,N,N,N,N,N,N,N,N,40796,40791,N,N,N,N,N,
-N,40805,N,N,N,N,N,39538,N,N,N,N,37216,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,40798,N,N,37217,N,N,N,N,N,N,37220,N,N,N,N,40769,N,N,N,N,N,N,37225,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,37224,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39540,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38578,N,39541,N,64933,N,N,N,N,
-N,N,N,40681,N,35770,37229,41056,N,N,N,N,N,N,N,40926,N,N,N,N,N,40899,N,38581,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41063,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,38579,N,N,N,N,N,N,N,N,N,N,N,N,N,39542,N,N,N,N,N,N,N,N,N,N,N,
-38357,N,N,N,40650,N,N,N,39543,N,N,39544,N,N,N,N,N,N,N,N,N,N,37232,37231,N,N,N,
-N,N,N,N,40867,N,37233,N,N,N,38577,N,N,N,N,40803,N,N,N,N,N,40807,N,N,N,35769,
-39546,N,N,N,N,N,35670,N,N,N,N,N,N,N,N,39642,N,N,N,N,N,38576,N,N,N,N,39550,N,N,
-N,N,N,N,N,N,N,N,40414,N,N,N,N,N,N,N,N,N,38573,N,N,N,38574,N,N,N,N,N,N,N,N,N,
-40609,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40528,N,N,N,N,N,N,N,N,38575,
-35828,40868,N,N,N,N,N,N,N,N,N,38589,N,N,N,N,N,N,N,N,N,38644,N,N,N,N,N,N,N,N,N,
-N,38584,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64161,N,N,N,N,37287,N,N,N,N,N,N,N,
-N,N,N,41054,N,N,N,N,39549,N,N,N,N,35144,N,40625,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40411,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38335,35443,N,N,N,N,N,N,N,N,N,N,N,N,N,40702,
-N,37242,N,N,N,N,37243,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39587,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,38594,N,N,N,N,N,40823,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39588,N,
-N,39589,N,N,N,37281,N,N,N,N,35256,N,N,N,N,N,N,N,N,N,N,37235,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39590,35261,N,
-35257,N,37245,N,N,N,N,N,N,N,N,N,38587,N,N,N,40946,N,N,35829,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,39593,N,N,N,N,N,40788,N,N,40931,40685,N,N,N,N,N,N,N,N,N,N,37290,N,N,N,
-N,37291,41072,N,40813,N,N,N,N,N,37292,N,N,N,37293,N,N,N,41213,N,40930,N,37295,
-40513,39594,N,N,37296,N,39595,N,N,N,N,N,N,N,N,N,N,N,39596,N,39498,N,37298,N,N,
-35830,N,39597,35254,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39599,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,39600,N,N,N,N,N,N,39601,N,N,N,N,N,39585,37305,N,N,
-N,N,N,37306,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37310,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-41025,35767,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37312,N,N,N,N,N,N,N,N,N,N,39603,
-37315,N,N,N,N,N,N,N,N,N,N,41212,N,N,40942,N,N,N,N,N,N,40809,N,N,N,N,N,N,N,
-37320,N,N,N,N,N,N,37321,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36326,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,37323,N,N,N,N,N,N,N,N,N,N,35272,N,N,N,N,N,36266,N,N,N,N,
-N,40925,35907,35949,35956,36023,36025,36027,36032,36055,36056,36058,51361,
-51363,36077,36168,35832,51408,N,N,N,N,51407,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,50916,N,
-50917,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,51405,N,51406,N,N,N,N,N,N,N,N,63998,
-};
-
-static const struct unim_index big5hkscs_bmp_encmap[256] = {
-{__big5hkscs_bmp_encmap+0,168,252},{__big5hkscs_bmp_encmap+85,0,220},{
-__big5hkscs_bmp_encmap+306,80,198},{0,0,0},{__big5hkscs_bmp_encmap+425,1,81},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__big5hkscs_bmp_encmap+506,190,
-193},{0,0,0},{0,0,0},{__big5hkscs_bmp_encmap+510,22,231},{0,0,0},{
-__big5hkscs_bmp_encmap+720,218,219},{__big5hkscs_bmp_encmap+722,96,125},{
-__big5hkscs_bmp_encmap+752,80,112},{0,0,0},{__big5hkscs_bmp_encmap+785,61,61},
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__big5hkscs_bmp_encmap+786,
-128,227},{__big5hkscs_bmp_encmap+886,51,51},{__big5hkscs_bmp_encmap+887,5,254
-},{__big5hkscs_bmp_encmap+1137,192,207},{__big5hkscs_bmp_encmap+1153,49,49},{
-0,0,0},{__big5hkscs_bmp_encmap+1154,53,251},{__big5hkscs_bmp_encmap+1353,6,254
-},{__big5hkscs_bmp_encmap+1602,9,245},{__big5hkscs_bmp_encmap+1839,1,251},{
-__big5hkscs_bmp_encmap+2090,15,250},{__big5hkscs_bmp_encmap+2326,8,254},{
-__big5hkscs_bmp_encmap+2573,1,251},{__big5hkscs_bmp_encmap+2824,14,244},{
-__big5hkscs_bmp_encmap+3055,13,239},{__big5hkscs_bmp_encmap+3282,18,253},{
-__big5hkscs_bmp_encmap+3518,6,255},{__big5hkscs_bmp_encmap+3768,0,250},{
-__big5hkscs_bmp_encmap+4019,4,250},{__big5hkscs_bmp_encmap+4266,2,249},{
-__big5hkscs_bmp_encmap+4514,17,252},{__big5hkscs_bmp_encmap+4750,43,242},{
-__big5hkscs_bmp_encmap+4950,1,244},{__big5hkscs_bmp_encmap+5194,3,234},{
-__big5hkscs_bmp_encmap+5426,3,247},{__big5hkscs_bmp_encmap+5671,19,244},{
-__big5hkscs_bmp_encmap+5897,0,250},{__big5hkscs_bmp_encmap+6148,6,231},{
-__big5hkscs_bmp_encmap+6374,15,255},{__big5hkscs_bmp_encmap+6615,16,192},{
-__big5hkscs_bmp_encmap+6792,4,237},{__big5hkscs_bmp_encmap+7026,7,156},{
-__big5hkscs_bmp_encmap+7176,4,248},{__big5hkscs_bmp_encmap+7421,3,253},{
-__big5hkscs_bmp_encmap+7672,3,252},{__big5hkscs_bmp_encmap+7922,1,254},{
-__big5hkscs_bmp_encmap+8176,2,249},{__big5hkscs_bmp_encmap+8424,1,254},{
-__big5hkscs_bmp_encmap+8678,19,239},{__big5hkscs_bmp_encmap+8899,2,251},{
-__big5hkscs_bmp_encmap+9149,5,253},{__big5hkscs_bmp_encmap+9398,0,254},{
-__big5hkscs_bmp_encmap+9653,3,251},{__big5hkscs_bmp_encmap+9902,2,249},{
-__big5hkscs_bmp_encmap+10150,2,254},{__big5hkscs_bmp_encmap+10403,13,255},{
-__big5hkscs_bmp_encmap+10646,5,252},{__big5hkscs_bmp_encmap+10894,16,245},{
-__big5hkscs_bmp_encmap+11124,9,252},{__big5hkscs_bmp_encmap+11368,12,223},{
-__big5hkscs_bmp_encmap+11580,35,253},{__big5hkscs_bmp_encmap+11799,7,226},{
-__big5hkscs_bmp_encmap+12019,44,229},{__big5hkscs_bmp_encmap+12205,24,254},{
-__big5hkscs_bmp_encmap+12436,7,234},{__big5hkscs_bmp_encmap+12664,10,255},{
-__big5hkscs_bmp_encmap+12910,24,241},{__big5hkscs_bmp_encmap+13128,2,254},{
-__big5hkscs_bmp_encmap+13381,0,202},{__big5hkscs_bmp_encmap+13584,0,250},{
-__big5hkscs_bmp_encmap+13835,3,246},{__big5hkscs_bmp_encmap+14079,5,250},{
-__big5hkscs_bmp_encmap+14325,28,255},{__big5hkscs_bmp_encmap+14553,2,254},{
-__big5hkscs_bmp_encmap+14806,2,250},{__big5hkscs_bmp_encmap+15055,4,248},{
-__big5hkscs_bmp_encmap+15300,3,254},{__big5hkscs_bmp_encmap+15552,5,246},{
-__big5hkscs_bmp_encmap+15794,0,226},{__big5hkscs_bmp_encmap+16021,2,251},{
-__big5hkscs_bmp_encmap+16271,2,248},{__big5hkscs_bmp_encmap+16518,5,220},{
-__big5hkscs_bmp_encmap+16734,2,217},{__big5hkscs_bmp_encmap+16950,12,254},{
-__big5hkscs_bmp_encmap+17193,8,245},{__big5hkscs_bmp_encmap+17431,6,244},{
-__big5hkscs_bmp_encmap+17670,6,254},{__big5hkscs_bmp_encmap+17919,11,252},{
-__big5hkscs_bmp_encmap+18161,18,252},{__big5hkscs_bmp_encmap+18396,37,254},{
-__big5hkscs_bmp_encmap+18614,7,223},{__big5hkscs_bmp_encmap+18831,6,250},{
-__big5hkscs_bmp_encmap+19076,2,246},{__big5hkscs_bmp_encmap+19321,3,246},{
-__big5hkscs_bmp_encmap+19565,24,255},{__big5hkscs_bmp_encmap+19797,11,237},{
-__big5hkscs_bmp_encmap+20024,5,248},{__big5hkscs_bmp_encmap+20268,3,252},{
-__big5hkscs_bmp_encmap+20518,2,239},{__big5hkscs_bmp_encmap+20756,112,245},{
-__big5hkscs_bmp_encmap+20890,4,255},{__big5hkscs_bmp_encmap+21142,0,231},{
-__big5hkscs_bmp_encmap+21374,28,249},{__big5hkscs_bmp_encmap+21596,12,226},{
-__big5hkscs_bmp_encmap+21811,81,247},{__big5hkscs_bmp_encmap+21978,3,212},{
-__big5hkscs_bmp_encmap+22188,1,242},{__big5hkscs_bmp_encmap+22430,25,249},{
-__big5hkscs_bmp_encmap+22655,8,196},{__big5hkscs_bmp_encmap+22844,81,254},{
-__big5hkscs_bmp_encmap+23018,8,253},{__big5hkscs_bmp_encmap+23264,3,244},{
-__big5hkscs_bmp_encmap+23506,1,246},{__big5hkscs_bmp_encmap+23752,45,244},{
-__big5hkscs_bmp_encmap+23952,29,244},{__big5hkscs_bmp_encmap+24168,3,245},{
-__big5hkscs_bmp_encmap+24411,20,245},{__big5hkscs_bmp_encmap+24637,14,245},{
-__big5hkscs_bmp_encmap+24869,12,255},{__big5hkscs_bmp_encmap+25113,2,255},{
-__big5hkscs_bmp_encmap+25367,2,124},{__big5hkscs_bmp_encmap+25490,2,252},{
-__big5hkscs_bmp_encmap+25741,10,254},{__big5hkscs_bmp_encmap+25986,2,179},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{__big5hkscs_bmp_encmap+26164,7,7},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{__big5hkscs_bmp_encmap+26165,2,237},
-};
-
-static const DBCHAR __big5hkscs_nonbmp_encmap[29306] = {
-40049,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37749,N,N,N,N,N,
-N,N,37750,N,N,N,N,N,N,N,38216,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,36550,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35781,35834,
-N,N,51324,N,N,N,N,N,N,N,N,N,39604,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34894,34891,
-51322,34888,N,N,N,34887,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,41206,34885,N,34899,N,N,N,N,N,N,N,N,N,64685,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,36085,N,N,N,N,35501,N,37490,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,64583,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38111,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40913,64459,N,N,N,N,N,N,N,37501,N,N,N,N,N,N,N,
-39076,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-36089,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38119,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37067,37499,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38104,N,N,N,N,64607,N,
-64084,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39605,N,N,N,N,N,N,N,38618,
-37497,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64116,37493,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36347,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35401,N,N,N,37599,39804,64099,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,64096,37485,64098,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39606,N,N,N,N,N,N,38763,N,N,N,N,N,N,N,N,N,N,N,N,
-N,64874,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64852,N,37491,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38872,N,N,N,N,
-N,N,40891,37698,37494,N,N,N,N,N,N,N,N,N,N,64101,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37484,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,64110,N,N,N,N,N,N,40672,N,N,37568,37567,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,37566,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39610,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35507,N,38773,64064,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64118,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,64464,N,N,N,N,N,N,N,N,N,N,N,N,N,64123,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,65133,N,N,N,N,N,N,39859,N,N,N,N,N,35276,N,N,N,N,39614,N,N,N,N,N,
-N,N,N,N,64066,37564,N,N,N,N,N,N,N,N,N,N,37980,39861,N,N,N,39615,N,N,N,39079,
-38820,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37117,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64635,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39616,37571,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35498,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39888,38224,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37574,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39078,38214,N,N,N,N,N,N,N,N,N,N,N,N,64867,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64194,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40643,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35250,40038,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36947,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,35938,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,38849,N,N,N,N,N,N,N,N,N,N,N,N,N,39620,N,N,N,N,N,N,N,N,N,N,39621,36591,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,64233,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36160,N,N,N,N,N,N,N,N,
-37474,35575,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39622,N,N,N,N,N,N,37601,
-N,N,N,N,39625,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64198,N,N,N,N,N,N,N,
-N,38821,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39627,N,N,N,64114,35422,N,38112,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,37580,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35557,
-N,N,N,N,N,65116,39628,N,N,N,N,N,40441,35395,35494,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,39629,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39630,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,64238,39884,N,N,N,39631,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39633,N,N,N,N,N,N,
-N,N,40442,N,N,N,N,N,40316,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39635,N,N,38822,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39263,N,N,N,64502,
-40901,35417,35691,N,N,N,N,N,N,39636,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39637,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,38818,35396,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40778,N,N,N,N,N,N,N,N,37025,64932,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35428,
-35570,35576,40408,N,N,38102,64254,64423,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,39638,N,40781,N,N,64246,N,N,N,N,N,N,N,35415,N,35651,
-35652,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35510,N,N,N,N,N,35520,N,N,N,
-N,N,N,N,N,N,N,40532,N,N,N,N,N,N,N,N,N,N,39639,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,39640,39644,N,N,N,N,35530,40616,N,N,37475,39645,35685,35695,35710,N,
-N,N,N,36675,N,N,N,N,N,N,37584,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35572,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40382,N,N,N,N,N,39649,N,64734,40445,35686,
-35696,35701,35556,35748,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35565,N,N,N,N,N,N,N,N,
-N,35421,N,35656,N,N,N,N,40429,N,N,N,N,40512,N,N,N,N,N,N,N,35567,35574,40566,N,
-N,N,N,N,N,N,N,N,40675,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,39646,36350,N,N,N,N,64252,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,40113,40567,35684,35687,38731,N,N,N,N,N,N,N,N,38483,N,N,N,N,N,N,39648,
-35658,N,35569,35543,N,N,N,N,N,N,N,N,N,41131,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35509,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35423,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35566,N,N,39647,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35582,N,N,N,N,N,N,35416,
-35747,35751,N,N,N,N,N,39651,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,37473,N,N,N,N,N,N,N,N,N,N,40407,40573,40615,40619,36930,N,N,
-N,N,N,N,N,N,35705,35706,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39654,N,N,N,N,N,N,N,N,N,N,N,N,39653,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35454,N,N,N,N,N,40516,39655,35452,35697,N,
-N,39657,N,N,N,N,N,N,N,N,N,N,N,N,39658,N,N,N,N,N,N,N,N,N,N,N,N,N,39659,N,N,N,N,
-N,N,35517,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64334,N,N,N,N,N,N,N,N,N,
-N,39661,35577,40547,N,N,N,N,N,35657,35534,35694,N,N,N,N,N,35560,N,N,N,39662,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37582,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35418,35707,
-35708,39663,N,N,N,N,N,N,N,N,N,N,N,39664,N,35578,N,N,N,N,N,N,N,35137,N,N,35698,
-N,N,N,N,N,N,35571,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35752,N,N,N,N,N,N,40622,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40562,64371,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64351,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37050,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37374,40694,
-N,N,N,N,N,N,38893,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39667,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,41198,38524,37701,39022,64086,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39669,N,N,
-N,64587,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39668,65246,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,64695,N,N,N,N,N,N,N,N,N,38897,N,N,N,38855,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40139,
-37440,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,40168,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37373,38734,N,N,64360,N,N,N,N,N,N,N,
-N,N,N,N,N,N,38764,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36034,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38888,N,64362,35700,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,36583,N,N,N,N,N,N,N,N,N,N,N,N,64968,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,37441,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38561,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,36595,39671,N,N,N,N,N,N,N,N,N,N,36774,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,64214,40135,N,N,N,N,N,N,N,N,64215,N,N,N,N,N,39672,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64417,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36549,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64420,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,64450,N,39617,N,N,N,N,N,37370,65243,38827,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-37191,N,64433,N,N,N,N,N,N,N,N,N,36842,N,N,N,N,N,N,38098,65121,64206,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,37613,37363,37830,N,37722,64251,N,N,37615,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64200,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-38983,37734,38997,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38630,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40771,40874,38106,37614,64687,64507,N,
-36601,37366,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37732,N,N,N,N,38133,40118,64429,
-38990,36676,38653,N,N,N,N,N,N,N,N,N,N,N,N,N,39673,N,N,N,39674,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,38761,38356,38987,64426,N,N,39036,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,37354,N,N,N,N,N,40367,40389,N,37361,36529,38825,64428,64696,40121,N,N,N,N,
-N,N,N,64432,64722,37835,N,N,39677,N,N,N,N,N,N,N,N,N,N,N,37364,35756,41045,N,N,
-N,N,38260,N,N,N,N,38334,N,N,N,N,N,N,N,N,N,N,N,N,38829,N,N,N,N,N,N,N,N,N,N,N,
-36585,N,N,37624,38846,37228,38058,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64611,N,
-N,N,40390,N,N,N,N,N,N,N,38837,37560,37359,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,65190,38752,37720,38262,36780,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,37356,38836,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37367,N,N,N,N,
-38730,64329,38264,37820,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,37334,37717,37718,38993,N,N,N,N,N,N,N,N,N,N,36856,64448,37874,N,N,
-37072,N,N,N,N,N,N,40004,N,N,N,N,N,37461,N,N,N,N,37731,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,37285,N,N,N,N,N,N,N,N,41197,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,64875,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39678,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,37713,N,N,N,35927,N,N,64120,N,N,N,N,65192,N,N,N,N,N,N,N,N,N,N,N,N,N,37712,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64076,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37623,39744,N,N,N,N,N,N,64462,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,39745,N,N,N,N,N,65197,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,34657,64469,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35778,39548,39746,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39747,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40569,N,N,64473,N,N,
-N,N,N,N,39748,41127,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34670,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,39923,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,35961,N,N,N,37726,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35275,N,N,N,N,
-N,N,40787,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37847,N,N,N,N,N,N,
-N,N,N,N,N,N,N,64481,65232,N,N,N,N,N,N,36081,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,64482,N,N,N,N,N,64739,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,36980,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64486,N,N,N,39863,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,39749,N,N,N,N,N,N,N,N,N,N,N,N,39751,40784,N,N,N,N,N,39752,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64603,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,39081,N,N,40189,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,34892,39755,N,N,N,64492,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35945,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39848,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35541,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64115,64857,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37282,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64493,N,N,N,N,N,N,40105,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35496,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36162,N,39875,35553,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39758,38352,N,
-N,N,36959,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-38894,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64590,N,N,N,N,N,N,39759,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39760,40646,N,N,N,N,N,
-N,N,N,N,N,N,64592,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64883,N,N,
-N,N,N,64935,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40354,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64088,64094,N,N,N,N,N,N,N,41049,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64117,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64446,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40098,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37744,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,37745,37751,65263,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-37741,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64605,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,37048,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35580,N,
-64321,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40555,38115,36578,35965,N,36567,N,N,N,N,N,N,
-40013,N,N,N,38563,N,N,N,N,N,N,N,N,N,N,39761,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35523,N,N,N,N,N,N,N,N,N,N,N,38570,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36066,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,64616,35693,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64871,35561,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64673,37740,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,39762,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65136,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,64680,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64745,40116,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,35562,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39763,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39765,N,N,N,38571,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,64679,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39766,35516,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35531,N,N,N,N,N,39767,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,35277,N,39769,39771,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,37797,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39773,N,N,
-N,40527,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,37795,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35451,N,N,N,35650,38736,36787,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35408,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39776,N,N,N,N,35653,N,N,N,35654,N,N,N,N,N,N,N,N,N,N,N,N,40446,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39778,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,37755,N,N,N,N,N,37809,N,N,N,N,N,N,N,35424,N,N,N,N,N,N,N,
-N,35544,N,N,N,N,39779,N,N,N,N,N,N,N,N,N,N,35433,N,N,N,35399,N,N,35532,37756,
-39781,N,N,N,N,N,N,N,N,N,39782,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35442,N,N,N,N,N,N,N,35450,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37807,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35504,N,N,N,N,N,N,N,39784,
-N,N,N,N,N,N,N,N,N,N,40611,N,N,64236,35703,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39783,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35673,64689,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64699,N,N,N,N,N,N,N,N,N,N,N,
-39785,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37800,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35552,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,40529,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36703,39786,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,39787,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38892,39788,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,65102,N,N,N,N,N,N,64962,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,39789,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37223,
-64716,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37814,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37092,N,N,N,N,37093,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40690,37834,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,35772,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36678,N,N,
-N,N,37839,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64731,64732,N,N,N,N,N,N,N,N,N,N,N,N,N,37824,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,64742,38631,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64728,64729,64934,37838,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,38385,N,N,N,N,N,N,N,N,N,40169,N,64740,38063,64119,37836,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36065,N,N,N,N,N,
-N,N,N,N,N,N,36954,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35924,N,N,N,N,N,N,N,37823,64337,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,37817,65239,37815,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37849,N,N,N,N,N,N,N,N,N,N,N,N,N,37819,37850,
-39075,N,N,N,N,N,N,N,N,N,37073,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39790,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64112,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39915,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39791,N,N,N,N,N,N,N,64764,N,N,N,N,N,N,N,N,N,N,N,N,N,35648,41083,N,N,N,36001,
-38903,N,N,N,37858,64726,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38233,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37798,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,64832,N,N,37727,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,38898,40054,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,36600,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-36075,N,N,N,N,N,N,N,N,36679,N,N,N,N,N,N,N,N,N,N,N,N,39796,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37556,N,
-N,N,37357,N,N,38610,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64838,36687,38217,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39797,64092,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,34641,N,N,39801,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64843,N,N,N,38611,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,64856,N,N,N,N,N,37983,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,41205,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,37443,N,N,N,N,N,N,38906,N,N,N,N,N,N,N,N,N,N,N,N,
-40409,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-38900,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37453,64859,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,39802,N,N,N,N,N,N,N,N,N,40661,N,N,N,N,N,N,N,N,N,N,N,N,64174,N,40137,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,37464,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,36552,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,38068,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-37857,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37855,N,N,N,N,N,64752,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37868,38902,38607,37854,35535,39842,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,64873,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37714,N,N,N,N,N,N,
-N,N,N,N,N,39074,36071,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64878,
-36004,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64124,37882,36988,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,36711,N,40375,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41193,
-64078,64929,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40564,40895,40651,39865,40404,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38841,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36593,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38267,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40658,38739,38564,36798,38105,36952,64889,64891,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36570,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,36602,34658,N,N,N,N,N,N,N,N,N,N,39845,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,40665,38868,37051,64956,64966,37448,N,N,N,N,N,N,N,
-37557,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,40385,37561,37542,36683,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39846,N,N,N,N,N,37558,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36416,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,40664,37982,39007,38094,37450,64880,37991,N,N,N,N,N,N,N,
-N,N,N,N,36332,N,N,N,N,N,N,N,N,39896,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,34659,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37960,64193,
-40183,64958,N,N,N,N,N,N,N,N,N,N,N,N,36826,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64985,N,N,64638,N,N,N,N,N,N,N,N,37881,N,N,
-N,N,64067,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,64235,64195,38867,38393,40008,64984,41176,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64983,64330,39855,37963,64969,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36524,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64946,N,N,
-N,N,N,37466,64701,37593,N,N,N,64981,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37597,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37465,N,N,N,N,N,N,N,N,N,N,36080,
-38586,N,N,N,N,N,N,N,N,N,N,37467,N,N,N,N,N,N,N,N,N,39851,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64986,64990,N,N,N,64979,N,
-N,N,N,N,N,N,N,N,35910,N,N,N,N,N,N,64982,64988,64989,N,N,N,N,37118,N,N,65185,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35757,N,N,40152,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40557,64892,
-64353,N,N,N,N,N,N,38648,N,N,N,N,N,N,N,N,38640,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,64756,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65120,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38994,38479,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37230,N,N,N,
-N,N,N,N,N,N,N,39021,N,N,39012,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,37971,65004,64376,N,N,N,N,N,N,N,N,N,N,N,38330,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,39005,N,37625,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39002,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,34640,N,65014,N,N,N,N,N,N,N,37840,39010,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39853,N,N,N,N,N,N,N,
-N,N,N,N,38735,39854,N,N,N,N,N,N,N,N,N,N,N,N,37970,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,39856,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37330,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38890,64363,37297,65011,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37579,N,N,N,
-N,N,N,N,N,N,39857,N,N,N,N,N,64748,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,39019,N,N,N,38737,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39025,38383,N,N,N,N,N,N,N,40691,N,N,N,N,
-N,37352,39866,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64332,37482,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65016,39009,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,37351,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37869,38724,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,37345,N,N,64501,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39017,N,N,N,N,
-35426,N,N,39867,36008,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40021,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,36471,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35506,40636,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-37862,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37794,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39869,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-38067,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37757,40550,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37977,N,N,N,N,N,N,N,N,N,39871,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,37976,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40613,39879,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,65108,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36468,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,35798,N,N,N,N,N,N,38070,64884,39104,38053,N,N,N,N,N,N,N,
-39880,N,N,N,38381,64894,64491,N,N,N,N,N,N,N,N,N,N,64893,N,N,N,N,N,N,N,N,N,
-38767,37985,N,40897,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38359,N,N,N,
-64082,40024,N,N,N,N,N,N,N,N,N,40808,39911,64718,38632,64073,38817,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38221,40696,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,65097,37326,38769,N,N,N,N,36047,N,N,N,64945,N,N,64622,N,N,N,N,N,
-40178,37816,36931,38745,38103,65126,38013,64623,N,N,N,N,37446,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,64109,N,N,36599,N,64439,N,38012,37581,38834,N,N,N,N,N,N,N,N,N,
-65125,38526,38744,39799,37327,N,N,N,N,N,N,N,N,N,38052,N,N,N,N,N,N,N,N,N,N,
-40109,N,N,N,N,N,N,N,N,N,35755,N,N,N,38613,64691,N,N,N,37806,N,38765,N,N,N,N,N,
-N,37958,38391,N,N,N,N,N,N,N,N,40006,38235,37329,38132,N,65127,37541,N,N,N,
-65247,36011,N,39881,N,N,N,N,N,N,N,N,N,N,N,64749,65018,64712,65122,37372,65131,
-65017,64711,37198,40120,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38759,N,N,N,
-38382,N,N,39858,N,N,N,N,37984,N,N,N,38050,39029,38828,37331,N,N,N,N,N,N,N,N,N,
-N,N,39035,N,N,N,N,N,N,N,36587,38762,38494,N,N,N,N,N,N,N,N,N,38891,N,N,N,N,N,
-40953,38392,65186,36838,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65150,N,N,N,N,N,N,
-40356,38760,36588,38077,N,N,N,N,N,N,N,N,N,N,N,N,N,37979,40182,64167,39897,N,N,
-N,N,N,N,N,N,N,64093,38486,38754,N,N,N,N,N,N,38074,41039,37592,N,N,N,39883,N,N,
-N,N,N,N,38075,N,N,40287,N,N,N,N,N,N,37071,N,N,N,N,N,N,N,N,N,N,N,N,N,37989,N,N,
-40780,N,N,N,N,N,N,37080,36187,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40638,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,64365,38346,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,40386,38904,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36860,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38003,
-38004,N,N,N,N,N,N,N,N,N,N,N,N,65207,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35403,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35413,35689,35548,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35702,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39886,N,35432,41208,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,39135,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,65205,N,N,N,39887,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38651,N,
-N,39931,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40654,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36581,N,
-N,N,N,N,N,N,N,N,40571,39890,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,35493,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,65230,35397,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,40444,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65231,35749,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35914,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,35564,N,N,64736,38061,65237,38060,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64602,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39894,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,35439,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35753,36447,N,N,40395,N,
-64743,39895,N,N,N,N,N,N,N,N,N,N,N,37832,N,N,N,N,N,N,N,N,N,37360,36832,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39899,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37101,N,39900,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36179,41196,N,N,N,
-39162,N,N,N,N,N,N,N,N,N,39904,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,37831,37449,38625,39906,N,N,N,39908,N,N,36833,39909,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38080,N,N,37827,N,N,N,N,N,N,N,N,N,N,37829,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-36985,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38779,N,N,N,N,N,
-36990,N,N,N,N,65254,65094,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40376,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,37488,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38312,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,36016,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,38088,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39097,37184,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64702,N,N,N,N,N,N,N,37207,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35762,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64223,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,39910,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38467,36420,40015,65268,
-N,N,N,N,N,39912,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37852,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-38511,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36426,39917,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37622,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40377,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,36430,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,64463,34656,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40642,
-N,N,N,N,N,N,38117,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39920,38116,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,38225,35771,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39921,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,38128,36452,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38122,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36705,N,N,N,39780,36443,N,N,N,N,
-39922,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40894,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40393,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36460,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36723,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,36015,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,36725,36465,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36448,36458,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,35916,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38226,38228,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35540,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40379,38211,37630,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,38130,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38129,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41194,40402,41137,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37368,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37986,39844,
-36525,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40621,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38608,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65262,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,35508,N,N,N,N,N,N,N,N,N,N,N,N,38743,35447,39927,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36533,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41069,
-36534,38742,38208,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,41203,38078,N,N,N,39930,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64991,40380,N,N,N,N,N,N,N,
-N,38142,N,N,N,N,N,N,N,N,35803,41214,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,36544,40775,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35806,41211,N,N,N,N,
-36547,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38473,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,65218,N,N,38220,39933,N,N,N,N,N,N,N,N,N,N,N,N,N,37068,
-40032,38219,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39934,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40048,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,40003,N,N,N,40007,36556,N,N,N,36436,N,N,N,N,N,N,N,N,N,N,36580,
-40009,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35678,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38238,N,N,N,N,N,N,N,
-N,N,N,N,N,38236,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40011,35809,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,36569,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40372,N,
-37471,N,N,N,40012,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,35489,N,N,N,N,N,N,N,N,N,N,N,N,N,36571,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,40022,35490,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,38740,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40030,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40660,38248,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,41155,35558,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,41207,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40033,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40031,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,64589,N,40539,N,N,N,N,N,N,N,N,40553,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40035,65223,N,N,65222,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40039,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,40041,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35810,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,37221,N,N,N,N,N,N,N,N,N,N,N,N,40167,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,35412,N,N,N,N,N,N,N,40044,40046,65117,N,N,N,N,N,40051,N,
-N,N,N,N,N,N,N,N,N,N,N,N,38250,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38253,36592,36685,N,
-N,N,N,36598,N,N,N,N,N,N,N,N,64188,N,36053,N,N,N,N,N,N,N,N,N,N,N,N,N,34654,N,N,
-N,N,64474,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,35660,64885,39901,64245,N,N,N,N,N,N,N,40052,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,38213,N,N,N,N,N,N,N,N,N,N,N,N,38598,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,36714,36686,N,N,N,N,N,40056,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,64085,N,N,N,N,N,N,N,N,N,N,N,N,38884,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,40001,37468,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-38650,36086,N,N,N,N,36173,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64358,36453,38985,
-64424,38978,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40058,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38907,37066,N,N,N,N,40027,N,N,38733,
-N,N,36563,N,N,N,N,N,N,N,N,N,N,N,N,N,38241,40779,40885,37842,64938,38976,37190,
-39015,64090,64425,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,38977,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,36051,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,64765,64939,37309,36684,38601,36693,64430,38255,N,N,
-N,N,N,N,40061,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,41200,N,N,N,N,N,N,N,N,N,N,N,N,N,37999,64940,N,N,N,N,
-38603,38606,N,N,N,N,41046,N,40161,N,N,N,N,N,N,N,N,N,N,38596,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-36702,36716,36515,64435,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,64595,N,N,N,64947,N,N,N,N,36715,N,N,N,N,N,N,N,N,N,N,
-N,N,38602,N,N,N,N,N,N,34643,N,N,N,N,N,N,N,N,N,N,N,N,N,36729,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,40559,41157,64632,36418,36698,37058,36517,36961,37455,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37747,64949,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,65228,N,64445,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36054,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38979,38597,
-35260,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40099,N,N,N,N,N,N,37451,38986,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,36772,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,41201,40699,40146,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,36775,N,N,N,N,34644,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64604,38981,N,N,36934,36049,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65274,38240,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,40776,37447,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37115,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,40100,38257,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,34629,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40102,N,N,N,N,
-40103,N,N,N,N,N,40106,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,40659,N,N,N,40560,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40108,34642,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36782,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,36176,38269,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40112,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-38838,N,41149,35551,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40618,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,36797,N,N,N,36799,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37737,
-39847,51364,N,N,N,N,65258,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,39905,N,N,N,N,N,N,35649,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,40374,41195,39843,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,35745,36808,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,35148,39008,N,N,N,N,N,N,N,N,N,N,38087,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,35672,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38315,38314,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,40131,40132,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,37846,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,40364,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35814,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35441,36817,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,39381,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37108,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35491,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40142,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40148,40149,N,N,N,64456,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40371,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64624,N,N,N,N,N,36823,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39795,N,N,N,N,N,N,N,N,N,N,64091,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36818,36964,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39094,
-38504,N,N,N,N,40150,N,N,N,N,N,N,N,N,N,N,N,N,39101,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36828,65270,36825,N,N,N,N,N,N,N,N,N,N,N,N,N,
-38209,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,34668,N,N,N,N,38899,39928,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-34650,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34632,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34634,40556,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36850,36846,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,40151,N,N,N,N,N,N,N,N,N,N,N,N,40558,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35392,N,
-N,N,N,N,N,N,N,N,N,36847,N,N,N,N,N,N,N,N,36852,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36853,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,38338,39018,N,38863,40677,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40572,
-36929,N,N,N,N,N,N,40155,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37953,N,N,N,N,
-40166,40368,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,40170,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40173,N,N,N,N,N,N,N,N,N,N,N,N,
-40186,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,35682,35406,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40138,35430,N,N,N,N,N,N,N,N,N,N,40187,40188,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40190,N,N,N,N,N,
-N,N,N,N,N,N,N,N,35411,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40165,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40256,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40257,N,N,N,N,N,N,N,N,N,N,N,N,36933,35699,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38858,N,40258,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,35425,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,35758,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35538,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,35746,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40434,
-40259,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40159,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,40260,N,N,N,N,N,N,N,N,N,N,36554,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36942,N,N,N,N,N,N,N,36531,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,40949,N,N,N,N,N,N,N,N,N,N,N,N,40261,36943,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,40263,N,N,N,35274,N,N,N,N,N,N,40117,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64510,
-36958,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36963,36951,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36966,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,39872,N,N,N,N,N,N,N,N,N,N,N,64741,37218,N,N,N,N,N,N,N,N,N,N,36967,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36769,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,36770,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,40264,64211,N,N,N,N,N,N,36175,N,N,N,N,N,N,N,N,N,36957,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37049,N,N,N,N,N,N,N,N,N,N,N,N,N,36971,
-35932,N,N,N,36969,65111,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,65109,36979,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-39919,40176,N,N,N,N,N,N,N,N,N,N,N,N,40267,N,N,N,N,N,N,N,N,N,N,N,N,N,65241,N,N,
-N,65242,N,N,N,37344,36163,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37336,N,N,N,N,N,N,N,
-N,N,N,38470,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37728,
-N,64083,40147,N,N,N,N,N,N,N,N,N,N,N,N,40270,N,N,N,64320,N,N,N,36322,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37954,N,36950,N,N,39013,N,35948,
-64074,N,N,40272,40274,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38319,38746,37705,38727,
-41204,N,N,N,N,N,N,38776,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36815,N,N,N,64608,N,N,N,N,
-N,N,N,N,35918,N,N,N,64598,N,N,N,N,N,N,N,N,N,N,N,N,N,37340,38497,37612,37725,
-36574,38654,64847,38366,N,N,N,N,N,N,N,N,N,N,N,N,N,39088,41024,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38845,38781,38901,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39852,64218,37570,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38833,N,N,N,N,N,36987,N,
-N,N,N,37886,38011,N,38775,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64190,64835,37062,
-37028,37032,38057,N,37033,N,N,N,N,35941,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-38368,36989,N,N,N,N,N,N,37477,N,N,N,N,N,N,N,N,N,N,N,N,N,64954,37828,N,N,N,N,N,
-N,N,N,65261,40363,41187,N,38472,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40275,N,N,N,N,N,35497,N,39877,N,38493,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-38751,38495,38510,64349,N,N,N,N,N,40369,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65187,N,N,N,N,N,N,N,N,N,40370,N,N,38318,64675,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34665,N,N,N,N,N,N,N,N,
-41122,N,N,38485,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40276,N,N,37697,N,38317,37333,N,N,
-N,N,N,N,N,N,N,N,N,N,38778,65020,36423,37885,37029,37036,N,N,N,N,N,N,N,N,38316,
-N,N,N,N,N,N,N,N,N,37038,65189,N,N,N,N,N,40278,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,38883,38370,N,N,N,N,N,37990,N,N,38471,N,N,N,N,37304,N,N,N,N,40172,N,N,N,N,
-N,N,N,N,37037,N,38371,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35663,
-N,N,35555,N,N,N,N,35661,38378,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35662,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36033,
-35821,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,37337,N,N,41124,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,38389,38388,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40883,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,65199,N,N,N,N,N,65138,37498,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65196,N,N,N,N,N,N,N,N,N,N,N,
-N,N,38387,40280,36166,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37746,N,N,37317,N,N,N,N,N,N,
-N,38466,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37069,38398,
-37209,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40037,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38860,37070,N,N,N,N,N,N,40281,64757,65277,N,N,
-40283,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,40284,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37758,N,N,N,N,N,N,N,N,N,N,
-N,N,N,39084,N,N,40286,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64976,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64864,N,
-N,N,N,N,N,N,N,N,N,N,40143,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37085,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,37088,37107,N,N,39089,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37104,N,N,N,N,
-N,N,N,N,N,N,N,37821,N,N,N,N,N,N,N,N,38327,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40774,N,N,N,N,N,N,N,N,36427,38488,N,N,N,N,N,N,N,N,N,N,35404,N,40291,40655,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40293,N,N,N,N,N,N,N,40294,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38490,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40292,N,N,N,N,N,N,N,N,N,N,35436,35545,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40295,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,35440,35827,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,37200,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,40129,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,40296,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-37799,N,N,N,N,N,N,38516,N,N,N,N,N,N,N,N,36093,41199,N,37201,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38593,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34679,N,35940,38518,40297,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,64676,N,N,N,N,N,N,N,N,N,N,N,N,40298,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-37454,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,40299,N,N,N,N,N,39873,40300,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,35429,37213,N,N,N,N,N,N,N,N,40301,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37210,35906,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40128,37226,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,40302,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,40614,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40397,N,N,40303,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35259,40697,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,38580,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,37234,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-40648,N,N,N,34673,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35669,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,40305,40306,N,N,N,N,N,N,N,N,N,N,N,N,40652,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,37236,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,40656,36956,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,36562,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37288,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37239,N,N,N,N,N,N,N,N,N,N,N,
-38591,N,N,N,N,N,38592,N,N,N,N,36785,N,N,N,N,N,38583,35925,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37240,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35262,
-37244,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64375,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37237,37283,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,37238,N,N,N,N,N,N,N,N,38590,36169,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,37241,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,38582,37284,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-37286,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40309,N,N,N,N,N,N,N,N,N,N,N,36946,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41029,N,37289,N,39082,N,N,N,35935,N,N,35754,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40157,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40311,34646,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,35136,40684,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,37802,38008,N,N,N,N,40314,35529,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35659,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40940,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-35554,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,40565,39028,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,39624,N,N,N,N,41031,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,35779,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,64584,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64631,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,40018,36605,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36776,N,N,N,N,N,N,N,N,N,
-38266,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,36848,
-};
-
-static const struct unim_index big5hkscs_nonbmp_encmap[256] = {
-{__big5hkscs_nonbmp_encmap+0,33,238},{__big5hkscs_nonbmp_encmap+206,12,242},{
-__big5hkscs_nonbmp_encmap+437,4,229},{__big5hkscs_nonbmp_encmap+663,10,252},{
-__big5hkscs_nonbmp_encmap+906,19,254},{__big5hkscs_nonbmp_encmap+1142,71,235},
-{__big5hkscs_nonbmp_encmap+1307,17,118},{__big5hkscs_nonbmp_encmap+1409,14,121
-},{__big5hkscs_nonbmp_encmap+1517,44,213},{__big5hkscs_nonbmp_encmap+1687,22,
-231},{__big5hkscs_nonbmp_encmap+1897,17,205},{__big5hkscs_nonbmp_encmap+2086,
-13,255},{__big5hkscs_nonbmp_encmap+2329,11,255},{__big5hkscs_nonbmp_encmap+
-2574,21,200},{__big5hkscs_nonbmp_encmap+2754,4,251},{__big5hkscs_nonbmp_encmap
-+3002,29,237},{__big5hkscs_nonbmp_encmap+3211,20,246},{
-__big5hkscs_nonbmp_encmap+3438,47,217},{__big5hkscs_nonbmp_encmap+3609,60,254
-},{__big5hkscs_nonbmp_encmap+3804,2,254},{__big5hkscs_nonbmp_encmap+4057,19,
-253},{__big5hkscs_nonbmp_encmap+4292,119,150},{__big5hkscs_nonbmp_encmap+4324,
-10,254},{__big5hkscs_nonbmp_encmap+4569,13,252},{__big5hkscs_nonbmp_encmap+
-4809,32,250},{__big5hkscs_nonbmp_encmap+5028,3,243},{__big5hkscs_nonbmp_encmap
-+5269,45,99},{__big5hkscs_nonbmp_encmap+5324,68,194},{
-__big5hkscs_nonbmp_encmap+5451,42,172},{__big5hkscs_nonbmp_encmap+5582,70,249
-},{__big5hkscs_nonbmp_encmap+5762,28,213},{__big5hkscs_nonbmp_encmap+5948,15,
-232},{__big5hkscs_nonbmp_encmap+6166,69,252},{__big5hkscs_nonbmp_encmap+6350,
-42,195},{__big5hkscs_nonbmp_encmap+6504,8,124},{__big5hkscs_nonbmp_encmap+6621
-,33,250},{__big5hkscs_nonbmp_encmap+6839,101,237},{__big5hkscs_nonbmp_encmap+
-6976,19,190},{__big5hkscs_nonbmp_encmap+7148,27,246},{
-__big5hkscs_nonbmp_encmap+7368,18,205},{__big5hkscs_nonbmp_encmap+7556,3,247},
-{__big5hkscs_nonbmp_encmap+7801,38,147},{__big5hkscs_nonbmp_encmap+7911,102,
-232},{__big5hkscs_nonbmp_encmap+8042,14,206},{__big5hkscs_nonbmp_encmap+8235,
-38,201},{__big5hkscs_nonbmp_encmap+8399,7,238},{__big5hkscs_nonbmp_encmap+8631
-,13,239},{__big5hkscs_nonbmp_encmap+8858,116,227},{__big5hkscs_nonbmp_encmap+
-8970,51,218},{__big5hkscs_nonbmp_encmap+9138,3,249},{__big5hkscs_nonbmp_encmap
-+9385,15,225},{__big5hkscs_nonbmp_encmap+9596,0,254},{
-__big5hkscs_nonbmp_encmap+9851,0,229},{__big5hkscs_nonbmp_encmap+10081,25,243
-},{__big5hkscs_nonbmp_encmap+10300,0,238},{__big5hkscs_nonbmp_encmap+10539,3,
-215},{__big5hkscs_nonbmp_encmap+10752,58,58},{__big5hkscs_nonbmp_encmap+10753,
-194,194},{__big5hkscs_nonbmp_encmap+10754,167,250},{__big5hkscs_nonbmp_encmap+
-10838,26,90},{__big5hkscs_nonbmp_encmap+10903,99,255},{
-__big5hkscs_nonbmp_encmap+11060,64,248},{__big5hkscs_nonbmp_encmap+11245,6,252
-},{__big5hkscs_nonbmp_encmap+11492,53,240},{__big5hkscs_nonbmp_encmap+11680,
-17,236},{__big5hkscs_nonbmp_encmap+11900,4,252},{__big5hkscs_nonbmp_encmap+
-12149,27,250},{__big5hkscs_nonbmp_encmap+12373,13,248},{
-__big5hkscs_nonbmp_encmap+12609,4,214},{__big5hkscs_nonbmp_encmap+12820,5,200
-},{__big5hkscs_nonbmp_encmap+13016,24,212},{__big5hkscs_nonbmp_encmap+13205,6,
-224},{__big5hkscs_nonbmp_encmap+13424,18,255},{__big5hkscs_nonbmp_encmap+13662
-,0,251},{__big5hkscs_nonbmp_encmap+13914,14,233},{__big5hkscs_nonbmp_encmap+
-14134,15,245},{__big5hkscs_nonbmp_encmap+14365,9,217},{
-__big5hkscs_nonbmp_encmap+14574,6,235},{__big5hkscs_nonbmp_encmap+14804,59,167
-},{__big5hkscs_nonbmp_encmap+14913,14,194},{__big5hkscs_nonbmp_encmap+15094,
-44,157},{__big5hkscs_nonbmp_encmap+15208,43,231},{__big5hkscs_nonbmp_encmap+
-15397,32,216},{__big5hkscs_nonbmp_encmap+15582,14,19},{
-__big5hkscs_nonbmp_encmap+15588,25,154},{__big5hkscs_nonbmp_encmap+15718,49,
-224},{__big5hkscs_nonbmp_encmap+15894,5,246},{__big5hkscs_nonbmp_encmap+16136,
-6,225},{__big5hkscs_nonbmp_encmap+16356,87,225},{__big5hkscs_nonbmp_encmap+
-16495,3,204},{__big5hkscs_nonbmp_encmap+16697,84,233},{
-__big5hkscs_nonbmp_encmap+16847,116,232},{__big5hkscs_nonbmp_encmap+16964,1,
-254},{__big5hkscs_nonbmp_encmap+17218,32,67},{__big5hkscs_nonbmp_encmap+17254,
-14,216},{__big5hkscs_nonbmp_encmap+17457,26,226},{__big5hkscs_nonbmp_encmap+
-17658,41,165},{__big5hkscs_nonbmp_encmap+17783,2,221},{
-__big5hkscs_nonbmp_encmap+18003,88,208},{__big5hkscs_nonbmp_encmap+18124,53,
-248},{__big5hkscs_nonbmp_encmap+18320,2,152},{__big5hkscs_nonbmp_encmap+18471,
-18,191},{__big5hkscs_nonbmp_encmap+18645,18,252},{__big5hkscs_nonbmp_encmap+
-18880,22,204},{__big5hkscs_nonbmp_encmap+19063,28,199},{
-__big5hkscs_nonbmp_encmap+19235,14,250},{__big5hkscs_nonbmp_encmap+19472,45,82
-},{__big5hkscs_nonbmp_encmap+19510,5,247},{__big5hkscs_nonbmp_encmap+19753,33,
-209},{__big5hkscs_nonbmp_encmap+19930,34,240},{__big5hkscs_nonbmp_encmap+20137
-,0,215},{__big5hkscs_nonbmp_encmap+20353,38,223},{__big5hkscs_nonbmp_encmap+
-20539,14,248},{__big5hkscs_nonbmp_encmap+20774,9,205},{
-__big5hkscs_nonbmp_encmap+20971,27,230},{__big5hkscs_nonbmp_encmap+21175,82,
-255},{__big5hkscs_nonbmp_encmap+21349,34,134},{__big5hkscs_nonbmp_encmap+21450
-,116,254},{__big5hkscs_nonbmp_encmap+21589,7,148},{__big5hkscs_nonbmp_encmap+
-21731,15,204},{__big5hkscs_nonbmp_encmap+21921,88,200},{
-__big5hkscs_nonbmp_encmap+22034,36,253},{__big5hkscs_nonbmp_encmap+22252,10,
-244},{__big5hkscs_nonbmp_encmap+22487,6,244},{__big5hkscs_nonbmp_encmap+22726,
-18,197},{__big5hkscs_nonbmp_encmap+22906,47,220},{__big5hkscs_nonbmp_encmap+
-23080,77,79},{__big5hkscs_nonbmp_encmap+23083,46,249},{
-__big5hkscs_nonbmp_encmap+23287,2,244},{__big5hkscs_nonbmp_encmap+23530,46,188
-},{__big5hkscs_nonbmp_encmap+23673,7,226},{__big5hkscs_nonbmp_encmap+23893,6,
-138},{__big5hkscs_nonbmp_encmap+24026,18,130},{__big5hkscs_nonbmp_encmap+24139
-,1,244},{__big5hkscs_nonbmp_encmap+24383,0,230},{__big5hkscs_nonbmp_encmap+
-24614,15,19},{__big5hkscs_nonbmp_encmap+24619,4,43},{__big5hkscs_nonbmp_encmap
-+24659,51,252},{__big5hkscs_nonbmp_encmap+24861,15,252},{
-__big5hkscs_nonbmp_encmap+25099,12,255},{__big5hkscs_nonbmp_encmap+25343,3,210
-},{__big5hkscs_nonbmp_encmap+25551,52,185},{__big5hkscs_nonbmp_encmap+25685,
-15,231},{__big5hkscs_nonbmp_encmap+25902,197,197},{__big5hkscs_nonbmp_encmap+
-25903,121,237},{__big5hkscs_nonbmp_encmap+26020,13,235},{0,0,0},{0,0,0},{
-__big5hkscs_nonbmp_encmap+26243,29,231},{__big5hkscs_nonbmp_encmap+26446,158,
-244},{0,0,0},{__big5hkscs_nonbmp_encmap+26533,32,212},{
-__big5hkscs_nonbmp_encmap+26714,16,250},{__big5hkscs_nonbmp_encmap+26949,3,201
-},{__big5hkscs_nonbmp_encmap+27148,40,77},{__big5hkscs_nonbmp_encmap+27186,5,
-213},{__big5hkscs_nonbmp_encmap+27395,115,173},{__big5hkscs_nonbmp_encmap+
-27454,62,246},{__big5hkscs_nonbmp_encmap+27639,6,248},{
-__big5hkscs_nonbmp_encmap+27882,35,222},{__big5hkscs_nonbmp_encmap+28070,20,
-254},{__big5hkscs_nonbmp_encmap+28305,7,245},{__big5hkscs_nonbmp_encmap+28544,
-32,255},{__big5hkscs_nonbmp_encmap+28768,81,169},{__big5hkscs_nonbmp_encmap+
-28857,52,91},{__big5hkscs_nonbmp_encmap+28897,198,203},{
-__big5hkscs_nonbmp_encmap+28903,1,169},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-__big5hkscs_nonbmp_encmap+29072,37,205},{__big5hkscs_nonbmp_encmap+29241,148,
-212},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-};
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_jisx0213_pair.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_jisx0213_pair.h
deleted file mode 100644
index 3f1424f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_jisx0213_pair.h
+++ /dev/null
@@ -1,59 +0,0 @@
-#define JISX0213_ENCPAIRS 46
-#ifdef EXTERN_JISX0213_PAIR
-static const struct widedbcs_index *jisx0213_pair_decmap;
-static const struct pair_encodemap *jisx0213_pair_encmap;
-#else
-static const ucs4_t __jisx0213_pair_decmap[49] = {
-810234010,810365082,810496154,810627226,810758298,816525466,816656538,
-816787610,816918682,817049754,817574042,818163866,818426010,838283418,
-15074048,U,U,U,39060224,39060225,42730240,42730241,39387904,39387905,39453440,
-39453441,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,48825061,48562921,
-};
-
-static const struct widedbcs_index jisx0213_pair_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__jisx0213_pair_decmap
-+0,119,123},{__jisx0213_pair_decmap+5,119,126},{__jisx0213_pair_decmap+13,120,
-120},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__jisx0213_pair_decmap+14,68,102},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-};
-
-static const struct pair_encodemap jisx0213_pair_encmap[JISX0213_ENCPAIRS] = {
-{0x00e60000,0x295c},{0x00e60300,0x2b44},{0x02540000,0x2b38},{0x02540300,0x2b48
-},{0x02540301,0x2b49},{0x02590000,0x2b30},{0x02590300,0x2b4c},{0x02590301,
-0x2b4d},{0x025a0000,0x2b43},{0x025a0300,0x2b4e},{0x025a0301,0x2b4f},{
-0x028c0000,0x2b37},{0x028c0300,0x2b4a},{0x028c0301,0x2b4b},{0x02e50000,0x2b60
-},{0x02e502e9,0x2b66},{0x02e90000,0x2b64},{0x02e902e5,0x2b65},{0x304b0000,
-0x242b},{0x304b309a,0x2477},{0x304d0000,0x242d},{0x304d309a,0x2478},{
-0x304f0000,0x242f},{0x304f309a,0x2479},{0x30510000,0x2431},{0x3051309a,0x247a
-},{0x30530000,0x2433},{0x3053309a,0x247b},{0x30ab0000,0x252b},{0x30ab309a,
-0x2577},{0x30ad0000,0x252d},{0x30ad309a,0x2578},{0x30af0000,0x252f},{
-0x30af309a,0x2579},{0x30b10000,0x2531},{0x30b1309a,0x257a},{0x30b30000,0x2533
-},{0x30b3309a,0x257b},{0x30bb0000,0x253b},{0x30bb309a,0x257c},{0x30c40000,
-0x2544},{0x30c4309a,0x257d},{0x30c80000,0x2548},{0x30c8309a,0x257e},{
-0x31f70000,0x2675},{0x31f7309a,0x2678},
-};
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_jp.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_jp.h
deleted file mode 100644
index 1dd865c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_jp.h
+++ /dev/null
@@ -1,4765 +0,0 @@
-static const ucs2_t __jisx0208_decmap[6956] = {
-12288,12289,12290,65292,65294,12539,65306,65307,65311,65281,12443,12444,180,
-65344,168,65342,65507,65343,12541,12542,12445,12446,12291,20189,12293,12294,
-12295,12540,8213,8208,65295,92,12316,8214,65372,8230,8229,8216,8217,8220,8221,
-65288,65289,12308,12309,65339,65341,65371,65373,12296,12297,12298,12299,12300,
-12301,12302,12303,12304,12305,65291,8722,177,215,247,65309,8800,65308,65310,
-8806,8807,8734,8756,9794,9792,176,8242,8243,8451,65509,65284,162,163,65285,
-65283,65286,65290,65312,167,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,
-9650,9661,9660,8251,12306,8594,8592,8593,8595,12307,U,U,U,U,U,U,U,U,U,U,U,
-8712,8715,8838,8839,8834,8835,8746,8745,U,U,U,U,U,U,U,U,8743,8744,172,8658,
-8660,8704,8707,U,U,U,U,U,U,U,U,U,U,U,8736,8869,8978,8706,8711,8801,8786,8810,
-8811,8730,8765,8733,8757,8747,8748,U,U,U,U,U,U,U,8491,8240,9839,9837,9834,
-8224,8225,182,U,U,U,U,9711,65296,65297,65298,65299,65300,65301,65302,65303,
-65304,65305,U,U,U,U,U,U,U,65313,65314,65315,65316,65317,65318,65319,65320,
-65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,
-65334,65335,65336,65337,65338,U,U,U,U,U,U,65345,65346,65347,65348,65349,65350,
-65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,
-65364,65365,65366,65367,65368,65369,65370,12353,12354,12355,12356,12357,12358,
-12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,
-12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,
-12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,
-12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,
-12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,
-12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,12449,
-12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,
-12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,
-12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,
-12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,
-12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,
-12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,
-12528,12529,12530,12531,12532,12533,12534,913,914,915,916,917,918,919,920,921,
-922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,U,U,U,U,U,U,U,U,
-945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,
-965,966,967,968,969,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,
-1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,
-1065,1066,1067,1068,1069,1070,1071,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,1072,1073,
-1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,
-1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,
-1103,9472,9474,9484,9488,9496,9492,9500,9516,9508,9524,9532,9473,9475,9487,
-9491,9499,9495,9507,9523,9515,9531,9547,9504,9519,9512,9527,9535,9501,9520,
-9509,9528,9538,20124,21782,23043,38463,21696,24859,25384,23030,36898,33909,
-33564,31312,24746,25569,28197,26093,33894,33446,39925,26771,22311,26017,25201,
-23451,22992,34427,39156,32098,32190,39822,25110,31903,34999,23433,24245,25353,
-26263,26696,38343,38797,26447,20197,20234,20301,20381,20553,22258,22839,22996,
-23041,23561,24799,24847,24944,26131,26885,28858,30031,30064,31227,32173,32239,
-32963,33806,34915,35586,36949,36986,21307,20117,20133,22495,32946,37057,30959,
-19968,22769,28322,36920,31282,33576,33419,39983,20801,21360,21693,21729,22240,
-23035,24341,39154,28139,32996,34093,38498,38512,38560,38907,21515,21491,23431,
-28879,32701,36802,38632,21359,40284,31418,19985,30867,33276,28198,22040,21764,
-27421,34074,39995,23013,21417,28006,29916,38287,22082,20113,36939,38642,33615,
-39180,21473,21942,23344,24433,26144,26355,26628,27704,27891,27945,29787,30408,
-31310,38964,33521,34907,35424,37613,28082,30123,30410,39365,24742,35585,36234,
-38322,27022,21421,20870,22290,22576,22852,23476,24310,24616,25513,25588,27839,
-28436,28814,28948,29017,29141,29503,32257,33398,33489,34199,36960,37467,40219,
-22633,26044,27738,29989,20985,22830,22885,24448,24540,25276,26106,27178,27431,
-27572,29579,32705,35158,40236,40206,40644,23713,27798,33659,20740,23627,25014,
-33222,26742,29281,20057,20474,21368,24681,28201,31311,38899,19979,21270,20206,
-20309,20285,20385,20339,21152,21487,22025,22799,23233,23478,23521,31185,26247,
-26524,26550,27468,27827,28779,29634,31117,31166,31292,31623,33457,33499,33540,
-33655,33775,33747,34662,35506,22057,36008,36838,36942,38686,34442,20420,23784,
-25105,29273,30011,33253,33469,34558,36032,38597,39187,39381,20171,20250,35299,
-22238,22602,22730,24315,24555,24618,24724,24674,25040,25106,25296,25913,39745,
-26214,26800,28023,28784,30028,30342,32117,33445,34809,38283,38542,35997,20977,
-21182,22806,21683,23475,23830,24936,27010,28079,30861,33995,34903,35442,37799,
-39608,28012,39336,34521,22435,26623,34510,37390,21123,22151,21508,24275,25313,
-25785,26684,26680,27579,29554,30906,31339,35226,35282,36203,36611,37101,38307,
-38548,38761,23398,23731,27005,38989,38990,25499,31520,27179,27263,26806,39949,
-28511,21106,21917,24688,25324,27963,28167,28369,33883,35088,36676,19988,39993,
-21494,26907,27194,38788,26666,20828,31427,33970,37340,37772,22107,40232,26658,
-33541,33841,31909,21000,33477,29926,20094,20355,20896,23506,21002,21208,21223,
-24059,21914,22570,23014,23436,23448,23515,24178,24185,24739,24863,24931,25022,
-25563,25954,26577,26707,26874,27454,27475,27735,28450,28567,28485,29872,29976,
-30435,30475,31487,31649,31777,32233,32566,32752,32925,33382,33694,35251,35532,
-36011,36996,37969,38291,38289,38306,38501,38867,39208,33304,20024,21547,23736,
-24012,29609,30284,30524,23721,32747,36107,38593,38929,38996,39000,20225,20238,
-21361,21916,22120,22522,22855,23305,23492,23696,24076,24190,24524,25582,26426,
-26071,26082,26399,26827,26820,27231,24112,27589,27671,27773,30079,31048,23395,
-31232,32000,24509,35215,35352,36020,36215,36556,36637,39138,39438,39740,20096,
-20605,20736,22931,23452,25135,25216,25836,27450,29344,30097,31047,32681,34811,
-35516,35696,25516,33738,38816,21513,21507,21931,26708,27224,35440,30759,26485,
-40653,21364,23458,33050,34384,36870,19992,20037,20167,20241,21450,21560,23470,
-24339,24613,25937,26429,27714,27762,27875,28792,29699,31350,31406,31496,32026,
-31998,32102,26087,29275,21435,23621,24040,25298,25312,25369,28192,34394,35377,
-36317,37624,28417,31142,39770,20136,20139,20140,20379,20384,20689,20807,31478,
-20849,20982,21332,21281,21375,21483,21932,22659,23777,24375,24394,24623,24656,
-24685,25375,25945,27211,27841,29378,29421,30703,33016,33029,33288,34126,37111,
-37857,38911,39255,39514,20208,20957,23597,26241,26989,23616,26354,26997,29577,
-26704,31873,20677,21220,22343,24062,37670,26020,27427,27453,29748,31105,31165,
-31563,32202,33465,33740,34943,35167,35641,36817,37329,21535,37504,20061,20534,
-21477,21306,29399,29590,30697,33510,36527,39366,39368,39378,20855,24858,34398,
-21936,31354,20598,23507,36935,38533,20018,27355,37351,23633,23624,25496,31391,
-27795,38772,36705,31402,29066,38536,31874,26647,32368,26705,37740,21234,21531,
-34219,35347,32676,36557,37089,21350,34952,31041,20418,20670,21009,20804,21843,
-22317,29674,22411,22865,24418,24452,24693,24950,24935,25001,25522,25658,25964,
-26223,26690,28179,30054,31293,31995,32076,32153,32331,32619,33550,33610,34509,
-35336,35427,35686,36605,38938,40335,33464,36814,39912,21127,25119,25731,28608,
-38553,26689,20625,27424,27770,28500,31348,32080,34880,35363,26376,20214,20537,
-20518,20581,20860,21048,21091,21927,22287,22533,23244,24314,25010,25080,25331,
-25458,26908,27177,29309,29356,29486,30740,30831,32121,30476,32937,35211,35609,
-36066,36562,36963,37749,38522,38997,39443,40568,20803,21407,21427,24187,24358,
-28187,28304,29572,29694,32067,33335,35328,35578,38480,20046,20491,21476,21628,
-22266,22993,23396,24049,24235,24359,25144,25925,26543,28246,29392,31946,34996,
-32929,32993,33776,34382,35463,36328,37431,38599,39015,40723,20116,20114,20237,
-21320,21577,21566,23087,24460,24481,24735,26791,27278,29786,30849,35486,35492,
-35703,37264,20062,39881,20132,20348,20399,20505,20502,20809,20844,21151,21177,
-21246,21402,21475,21521,21518,21897,22353,22434,22909,23380,23389,23439,24037,
-24039,24055,24184,24195,24218,24247,24344,24658,24908,25239,25304,25511,25915,
-26114,26179,26356,26477,26657,26775,27083,27743,27946,28009,28207,28317,30002,
-30343,30828,31295,31968,32005,32024,32094,32177,32789,32771,32943,32945,33108,
-33167,33322,33618,34892,34913,35611,36002,36092,37066,37237,37489,30783,37628,
-38308,38477,38917,39321,39640,40251,21083,21163,21495,21512,22741,25335,28640,
-35946,36703,40633,20811,21051,21578,22269,31296,37239,40288,40658,29508,28425,
-33136,29969,24573,24794,39592,29403,36796,27492,38915,20170,22256,22372,22718,
-23130,24680,25031,26127,26118,26681,26801,28151,30165,32058,33390,39746,20123,
-20304,21449,21766,23919,24038,24046,26619,27801,29811,30722,35408,37782,35039,
-22352,24231,25387,20661,20652,20877,26368,21705,22622,22971,23472,24425,25165,
-25505,26685,27507,28168,28797,37319,29312,30741,30758,31085,25998,32048,33756,
-35009,36617,38555,21092,22312,26448,32618,36001,20916,22338,38442,22586,27018,
-32948,21682,23822,22524,30869,40442,20316,21066,21643,25662,26152,26388,26613,
-31364,31574,32034,37679,26716,39853,31545,21273,20874,21047,23519,25334,25774,
-25830,26413,27578,34217,38609,30352,39894,25420,37638,39851,30399,26194,19977,
-20632,21442,23665,24808,25746,25955,26719,29158,29642,29987,31639,32386,34453,
-35715,36059,37240,39184,26028,26283,27531,20181,20180,20282,20351,21050,21496,
-21490,21987,22235,22763,22987,22985,23039,23376,23629,24066,24107,24535,24605,
-25351,25903,23388,26031,26045,26088,26525,27490,27515,27663,29509,31049,31169,
-31992,32025,32043,32930,33026,33267,35222,35422,35433,35430,35468,35566,36039,
-36060,38604,39164,27503,20107,20284,20365,20816,23383,23546,24904,25345,26178,
-27425,28363,27835,29246,29885,30164,30913,31034,32780,32819,33258,33940,36766,
-27728,40575,24335,35672,40235,31482,36600,23437,38635,19971,21489,22519,22833,
-23241,23460,24713,28287,28422,30142,36074,23455,34048,31712,20594,26612,33437,
-23649,34122,32286,33294,20889,23556,25448,36198,26012,29038,31038,32023,32773,
-35613,36554,36974,34503,37034,20511,21242,23610,26451,28796,29237,37196,37320,
-37675,33509,23490,24369,24825,20027,21462,23432,25163,26417,27530,29417,29664,
-31278,33131,36259,37202,39318,20754,21463,21610,23551,25480,27193,32172,38656,
-22234,21454,21608,23447,23601,24030,20462,24833,25342,27954,31168,31179,32066,
-32333,32722,33261,33311,33936,34886,35186,35728,36468,36655,36913,37195,37228,
-38598,37276,20160,20303,20805,21313,24467,25102,26580,27713,28171,29539,32294,
-37325,37507,21460,22809,23487,28113,31069,32302,31899,22654,29087,20986,34899,
-36848,20426,23803,26149,30636,31459,33308,39423,20934,24490,26092,26991,27529,
-28147,28310,28516,30462,32020,24033,36981,37255,38918,20966,21021,25152,26257,
-26329,28186,24246,32210,32626,26360,34223,34295,35576,21161,21465,22899,24207,
-24464,24661,37604,38500,20663,20767,21213,21280,21319,21484,21736,21830,21809,
-22039,22888,22974,23100,23477,23558,23567,23569,23578,24196,24202,24288,24432,
-25215,25220,25307,25484,25463,26119,26124,26157,26230,26494,26786,27167,27189,
-27836,28040,28169,28248,28988,28966,29031,30151,30465,30813,30977,31077,31216,
-31456,31505,31911,32057,32918,33750,33931,34121,34909,35059,35359,35388,35412,
-35443,35937,36062,37284,37478,37758,37912,38556,38808,19978,19976,19998,20055,
-20887,21104,22478,22580,22732,23330,24120,24773,25854,26465,26454,27972,29366,
-30067,31331,33976,35698,37304,37664,22065,22516,39166,25325,26893,27542,29165,
-32340,32887,33394,35302,39135,34645,36785,23611,20280,20449,20405,21767,23072,
-23517,23529,24515,24910,25391,26032,26187,26862,27035,28024,28145,30003,30137,
-30495,31070,31206,32051,33251,33455,34218,35242,35386,36523,36763,36914,37341,
-38663,20154,20161,20995,22645,22764,23563,29978,23613,33102,35338,36805,38499,
-38765,31525,35535,38920,37218,22259,21416,36887,21561,22402,24101,25512,27700,
-28810,30561,31883,32736,34928,36930,37204,37648,37656,38543,29790,39620,23815,
-23913,25968,26530,36264,38619,25454,26441,26905,33733,38935,38592,35070,28548,
-25722,23544,19990,28716,30045,26159,20932,21046,21218,22995,24449,24615,25104,
-25919,25972,26143,26228,26866,26646,27491,28165,29298,29983,30427,31934,32854,
-22768,35069,35199,35488,35475,35531,36893,37266,38738,38745,25993,31246,33030,
-38587,24109,24796,25114,26021,26132,26512,30707,31309,31821,32318,33034,36012,
-36196,36321,36447,30889,20999,25305,25509,25666,25240,35373,31363,31680,35500,
-38634,32118,33292,34633,20185,20808,21315,21344,23459,23554,23574,24029,25126,
-25159,25776,26643,26676,27849,27973,27927,26579,28508,29006,29053,26059,31359,
-31661,32218,32330,32680,33146,33307,33337,34214,35438,36046,36341,36984,36983,
-37549,37521,38275,39854,21069,21892,28472,28982,20840,31109,32341,33203,31950,
-22092,22609,23720,25514,26366,26365,26970,29401,30095,30094,30990,31062,31199,
-31895,32032,32068,34311,35380,38459,36961,40736,20711,21109,21452,21474,20489,
-21930,22766,22863,29245,23435,23652,21277,24803,24819,25436,25475,25407,25531,
-25805,26089,26361,24035,27085,27133,28437,29157,20105,30185,30456,31379,31967,
-32207,32156,32865,33609,33624,33900,33980,34299,35013,36208,36865,36973,37783,
-38684,39442,20687,22679,24974,33235,34101,36104,36896,20419,20596,21063,21363,
-24687,25417,26463,28204,36275,36895,20439,23646,36042,26063,32154,21330,34966,
-20854,25539,23384,23403,23562,25613,26449,36956,20182,22810,22826,27760,35409,
-21822,22549,22949,24816,25171,26561,33333,26965,38464,39364,39464,20307,22534,
-23550,32784,23729,24111,24453,24608,24907,25140,26367,27888,28382,32974,33151,
-33492,34955,36024,36864,36910,38538,40667,39899,20195,21488,22823,31532,37261,
-38988,40441,28381,28711,21331,21828,23429,25176,25246,25299,27810,28655,29730,
-35351,37944,28609,35582,33592,20967,34552,21482,21481,20294,36948,36784,22890,
-33073,24061,31466,36799,26842,35895,29432,40008,27197,35504,20025,21336,22022,
-22374,25285,25506,26086,27470,28129,28251,28845,30701,31471,31658,32187,32829,
-32966,34507,35477,37723,22243,22727,24382,26029,26262,27264,27573,30007,35527,
-20516,30693,22320,24347,24677,26234,27744,30196,31258,32622,33268,34584,36933,
-39347,31689,30044,31481,31569,33988,36880,31209,31378,33590,23265,30528,20013,
-20210,23449,24544,25277,26172,26609,27880,34411,34935,35387,37198,37619,39376,
-27159,28710,29482,33511,33879,36015,19969,20806,20939,21899,23541,24086,24115,
-24193,24340,24373,24427,24500,25074,25361,26274,26397,28526,29266,30010,30522,
-32884,33081,33144,34678,35519,35548,36229,36339,37530,38263,38914,40165,21189,
-25431,30452,26389,27784,29645,36035,37806,38515,27941,22684,26894,27084,36861,
-37786,30171,36890,22618,26626,25524,27131,20291,28460,26584,36795,34086,32180,
-37716,26943,28528,22378,22775,23340,32044,29226,21514,37347,40372,20141,20302,
-20572,20597,21059,35998,21576,22564,23450,24093,24213,24237,24311,24351,24716,
-25269,25402,25552,26799,27712,30855,31118,31243,32224,33351,35330,35558,36420,
-36883,37048,37165,37336,40718,27877,25688,25826,25973,28404,30340,31515,36969,
-37841,28346,21746,24505,25764,36685,36845,37444,20856,22635,22825,23637,24215,
-28155,32399,29980,36028,36578,39003,28857,20253,27583,28593,30000,38651,20814,
-21520,22581,22615,22956,23648,24466,26007,26460,28193,30331,33759,36077,36884,
-37117,37709,30757,30778,21162,24230,22303,22900,24594,20498,20826,20908,20941,
-20992,21776,22612,22616,22871,23445,23798,23947,24764,25237,25645,26481,26691,
-26812,26847,30423,28120,28271,28059,28783,29128,24403,30168,31095,31561,31572,
-31570,31958,32113,21040,33891,34153,34276,35342,35588,35910,36367,36867,36879,
-37913,38518,38957,39472,38360,20685,21205,21516,22530,23566,24999,25758,27934,
-30643,31461,33012,33796,36947,37509,23776,40199,21311,24471,24499,28060,29305,
-30563,31167,31716,27602,29420,35501,26627,27233,20984,31361,26932,23626,40182,
-33515,23493,37193,28702,22136,23663,24775,25958,27788,35930,36929,38931,21585,
-26311,37389,22856,37027,20869,20045,20970,34201,35598,28760,25466,37707,26978,
-39348,32260,30071,21335,26976,36575,38627,27741,20108,23612,24336,36841,21250,
-36049,32905,34425,24319,26085,20083,20837,22914,23615,38894,20219,22922,24525,
-35469,28641,31152,31074,23527,33905,29483,29105,24180,24565,25467,25754,29123,
-31896,20035,24316,20043,22492,22178,24745,28611,32013,33021,33075,33215,36786,
-35223,34468,24052,25226,25773,35207,26487,27874,27966,29750,30772,23110,32629,
-33453,39340,20467,24259,25309,25490,25943,26479,30403,29260,32972,32954,36649,
-37197,20493,22521,23186,26757,26995,29028,29437,36023,22770,36064,38506,36889,
-34687,31204,30695,33833,20271,21093,21338,25293,26575,27850,30333,31636,31893,
-33334,34180,36843,26333,28448,29190,32283,33707,39361,40614,20989,31665,30834,
-31672,32903,31560,27368,24161,32908,30033,30048,20843,37474,28300,30330,37271,
-39658,20240,32624,25244,31567,38309,40169,22138,22617,34532,38588,20276,21028,
-21322,21453,21467,24070,25644,26001,26495,27710,27726,29256,29359,29677,30036,
-32321,33324,34281,36009,31684,37318,29033,38930,39151,25405,26217,30058,30436,
-30928,34115,34542,21290,21329,21542,22915,24199,24444,24754,25161,25209,25259,
-26000,27604,27852,30130,30382,30865,31192,32203,32631,32933,34987,35513,36027,
-36991,38750,39131,27147,31800,20633,23614,24494,26503,27608,29749,30473,32654,
-40763,26570,31255,21305,30091,39661,24422,33181,33777,32920,24380,24517,30050,
-31558,36924,26727,23019,23195,32016,30334,35628,20469,24426,27161,27703,28418,
-29922,31080,34920,35413,35961,24287,25551,30149,31186,33495,37672,37618,33948,
-34541,39981,21697,24428,25996,27996,28693,36007,36051,38971,25935,29942,19981,
-20184,22496,22827,23142,23500,20904,24067,24220,24598,25206,25975,26023,26222,
-28014,29238,31526,33104,33178,33433,35676,36000,36070,36212,38428,38468,20398,
-25771,27494,33310,33889,34154,37096,23553,26963,39080,33914,34135,20239,21103,
-24489,24133,26381,31119,33145,35079,35206,28149,24343,25173,27832,20175,29289,
-39826,20998,21563,22132,22707,24996,25198,28954,22894,31881,31966,32027,38640,
-25991,32862,19993,20341,20853,22592,24163,24179,24330,26564,20006,34109,38281,
-38491,31859,38913,20731,22721,30294,30887,21029,30629,34065,31622,20559,22793,
-29255,31687,32232,36794,36820,36941,20415,21193,23081,24321,38829,20445,33303,
-37610,22275,25429,27497,29995,35036,36628,31298,21215,22675,24917,25098,26286,
-27597,31807,33769,20515,20472,21253,21574,22577,22857,23453,23792,23791,23849,
-24214,25265,25447,25918,26041,26379,27861,27873,28921,30770,32299,32990,33459,
-33804,34028,34562,35090,35370,35914,37030,37586,39165,40179,40300,20047,20129,
-20621,21078,22346,22952,24125,24536,24537,25151,26292,26395,26576,26834,20882,
-32033,32938,33192,35584,35980,36031,37502,38450,21536,38956,21271,20693,21340,
-22696,25778,26420,29287,30566,31302,37350,21187,27809,27526,22528,24140,22868,
-26412,32763,20961,30406,25705,30952,39764,40635,22475,22969,26151,26522,27598,
-21737,27097,24149,33180,26517,39850,26622,40018,26717,20134,20451,21448,25273,
-26411,27819,36804,20397,32365,40639,19975,24930,28288,28459,34067,21619,26410,
-39749,24051,31637,23724,23494,34588,28234,34001,31252,33032,22937,31885,27665,
-30496,21209,22818,28961,29279,30683,38695,40289,26891,23167,23064,20901,21517,
-21629,26126,30431,36855,37528,40180,23018,29277,28357,20813,26825,32191,32236,
-38754,40634,25720,27169,33538,22916,23391,27611,29467,30450,32178,32791,33945,
-20786,26408,40665,30446,26466,21247,39173,23588,25147,31870,36016,21839,24758,
-32011,38272,21249,20063,20918,22812,29242,32822,37326,24357,30690,21380,24441,
-32004,34220,35379,36493,38742,26611,34222,37971,24841,24840,27833,30290,35565,
-36664,21807,20305,20778,21191,21451,23461,24189,24736,24962,25558,26377,26586,
-28263,28044,29494,29495,30001,31056,35029,35480,36938,37009,37109,38596,34701,
-22805,20104,20313,19982,35465,36671,38928,20653,24188,22934,23481,24248,25562,
-25594,25793,26332,26954,27096,27915,28342,29076,29992,31407,32650,32768,33865,
-33993,35201,35617,36362,36965,38525,39178,24958,25233,27442,27779,28020,32716,
-32764,28096,32645,34746,35064,26469,33713,38972,38647,27931,32097,33853,37226,
-20081,21365,23888,27396,28651,34253,34349,35239,21033,21519,23653,26446,26792,
-29702,29827,30178,35023,35041,37324,38626,38520,24459,29575,31435,33870,25504,
-30053,21129,27969,28316,29705,30041,30827,31890,38534,31452,40845,20406,24942,
-26053,34396,20102,20142,20698,20001,20940,23534,26009,26753,28092,29471,30274,
-30637,31260,31975,33391,35538,36988,37327,38517,38936,21147,32209,20523,21400,
-26519,28107,29136,29747,33256,36650,38563,40023,40607,29792,22593,28057,32047,
-39006,20196,20278,20363,20919,21169,23994,24604,29618,31036,33491,37428,38583,
-38646,38666,40599,40802,26278,27508,21015,21155,28872,35010,24265,24651,24976,
-28451,29001,31806,32244,32879,34030,36899,37676,21570,39791,27347,28809,36034,
-36335,38706,21172,23105,24266,24324,26391,27004,27028,28010,28431,29282,29436,
-31725,32769,32894,34635,37070,20845,40595,31108,32907,37682,35542,20525,21644,
-35441,27498,36036,33031,24785,26528,40434,20121,20120,39952,35435,34241,34152,
-26880,28286,30871,33109,24332,19984,19989,20010,20017,20022,20028,20031,20034,
-20054,20056,20098,20101,35947,20106,33298,24333,20110,20126,20127,20128,20130,
-20144,20147,20150,20174,20173,20164,20166,20162,20183,20190,20205,20191,20215,
-20233,20314,20272,20315,20317,20311,20295,20342,20360,20367,20376,20347,20329,
-20336,20369,20335,20358,20374,20760,20436,20447,20430,20440,20443,20433,20442,
-20432,20452,20453,20506,20520,20500,20522,20517,20485,20252,20470,20513,20521,
-20524,20478,20463,20497,20486,20547,20551,26371,20565,20560,20552,20570,20566,
-20588,20600,20608,20634,20613,20660,20658,20681,20682,20659,20674,20694,20702,
-20709,20717,20707,20718,20729,20725,20745,20737,20738,20758,20757,20756,20762,
-20769,20794,20791,20796,20795,20799,20800,20818,20812,20820,20834,31480,20841,
-20842,20846,20864,20866,22232,20876,20873,20879,20881,20883,20885,20886,20900,
-20902,20898,20905,20906,20907,20915,20913,20914,20912,20917,20925,20933,20937,
-20955,20960,34389,20969,20973,20976,20981,20990,20996,21003,21012,21006,21031,
-21034,21038,21043,21049,21071,21060,21067,21068,21086,21076,21098,21108,21097,
-21107,21119,21117,21133,21140,21138,21105,21128,21137,36776,36775,21164,21165,
-21180,21173,21185,21197,21207,21214,21219,21222,39149,21216,21235,21237,21240,
-21241,21254,21256,30008,21261,21264,21263,21269,21274,21283,21295,21297,21299,
-21304,21312,21318,21317,19991,21321,21325,20950,21342,21353,21358,22808,21371,
-21367,21378,21398,21408,21414,21413,21422,21424,21430,21443,31762,38617,21471,
-26364,29166,21486,21480,21485,21498,21505,21565,21568,21548,21549,21564,21550,
-21558,21545,21533,21582,21647,21621,21646,21599,21617,21623,21616,21650,21627,
-21632,21622,21636,21648,21638,21703,21666,21688,21669,21676,21700,21704,21672,
-21675,21698,21668,21694,21692,21720,21733,21734,21775,21780,21757,21742,21741,
-21754,21730,21817,21824,21859,21836,21806,21852,21829,21846,21847,21816,21811,
-21853,21913,21888,21679,21898,21919,21883,21886,21912,21918,21934,21884,21891,
-21929,21895,21928,21978,21957,21983,21956,21980,21988,21972,22036,22007,22038,
-22014,22013,22043,22009,22094,22096,29151,22068,22070,22066,22072,22123,22116,
-22063,22124,22122,22150,22144,22154,22176,22164,22159,22181,22190,22198,22196,
-22210,22204,22209,22211,22208,22216,22222,22225,22227,22231,22254,22265,22272,
-22271,22276,22281,22280,22283,22285,22291,22296,22294,21959,22300,22310,22327,
-22328,22350,22331,22336,22351,22377,22464,22408,22369,22399,22409,22419,22432,
-22451,22436,22442,22448,22467,22470,22484,22482,22483,22538,22486,22499,22539,
-22553,22557,22642,22561,22626,22603,22640,27584,22610,22589,22649,22661,22713,
-22687,22699,22714,22750,22715,22712,22702,22725,22739,22737,22743,22745,22744,
-22757,22748,22756,22751,22767,22778,22777,22779,22780,22781,22786,22794,22800,
-22811,26790,22821,22828,22829,22834,22840,22846,31442,22869,22864,22862,22874,
-22872,22882,22880,22887,22892,22889,22904,22913,22941,20318,20395,22947,22962,
-22982,23016,23004,22925,23001,23002,23077,23071,23057,23068,23049,23066,23104,
-23148,23113,23093,23094,23138,23146,23194,23228,23230,23243,23234,23229,23267,
-23255,23270,23273,23254,23290,23291,23308,23307,23318,23346,23248,23338,23350,
-23358,23363,23365,23360,23377,23381,23386,23387,23397,23401,23408,23411,23413,
-23416,25992,23418,23424,23427,23462,23480,23491,23495,23497,23508,23504,23524,
-23526,23522,23518,23525,23531,23536,23542,23539,23557,23559,23560,23565,23571,
-23584,23586,23592,23608,23609,23617,23622,23630,23635,23632,23631,23409,23660,
-23662,20066,23670,23673,23692,23697,23700,22939,23723,23739,23734,23740,23735,
-23749,23742,23751,23769,23785,23805,23802,23789,23948,23786,23819,23829,23831,
-23900,23839,23835,23825,23828,23842,23834,23833,23832,23884,23890,23886,23883,
-23916,23923,23926,23943,23940,23938,23970,23965,23980,23982,23997,23952,23991,
-23996,24009,24013,24019,24018,24022,24027,24043,24050,24053,24075,24090,24089,
-24081,24091,24118,24119,24132,24131,24128,24142,24151,24148,24159,24162,24164,
-24135,24181,24182,24186,40636,24191,24224,24257,24258,24264,24272,24271,24278,
-24291,24285,24282,24283,24290,24289,24296,24297,24300,24305,24307,24304,24308,
-24312,24318,24323,24329,24413,24412,24331,24337,24342,24361,24365,24376,24385,
-24392,24396,24398,24367,24401,24406,24407,24409,24417,24429,24435,24439,24451,
-24450,24447,24458,24456,24465,24455,24478,24473,24472,24480,24488,24493,24508,
-24534,24571,24548,24568,24561,24541,24755,24575,24609,24672,24601,24592,24617,
-24590,24625,24603,24597,24619,24614,24591,24634,24666,24641,24682,24695,24671,
-24650,24646,24653,24675,24643,24676,24642,24684,24683,24665,24705,24717,24807,
-24707,24730,24708,24731,24726,24727,24722,24743,24715,24801,24760,24800,24787,
-24756,24560,24765,24774,24757,24792,24909,24853,24838,24822,24823,24832,24820,
-24826,24835,24865,24827,24817,24845,24846,24903,24894,24872,24871,24906,24895,
-24892,24876,24884,24893,24898,24900,24947,24951,24920,24921,24922,24939,24948,
-24943,24933,24945,24927,24925,24915,24949,24985,24982,24967,25004,24980,24986,
-24970,24977,25003,25006,25036,25034,25033,25079,25032,25027,25030,25018,25035,
-32633,25037,25062,25059,25078,25082,25076,25087,25085,25084,25086,25088,25096,
-25097,25101,25100,25108,25115,25118,25121,25130,25134,25136,25138,25139,25153,
-25166,25182,25187,25179,25184,25192,25212,25218,25225,25214,25234,25235,25238,
-25300,25219,25236,25303,25297,25275,25295,25343,25286,25812,25288,25308,25292,
-25290,25282,25287,25243,25289,25356,25326,25329,25383,25346,25352,25327,25333,
-25424,25406,25421,25628,25423,25494,25486,25472,25515,25462,25507,25487,25481,
-25503,25525,25451,25449,25534,25577,25536,25542,25571,25545,25554,25590,25540,
-25622,25652,25606,25619,25638,25654,25885,25623,25640,25615,25703,25711,25718,
-25678,25898,25749,25747,25765,25769,25736,25788,25818,25810,25797,25799,25787,
-25816,25794,25841,25831,33289,25824,25825,25260,25827,25839,25900,25846,25844,
-25842,25850,25856,25853,25880,25884,25861,25892,25891,25899,25908,25909,25911,
-25910,25912,30027,25928,25942,25941,25933,25944,25950,25949,25970,25976,25986,
-25987,35722,26011,26015,26027,26039,26051,26054,26049,26052,26060,26066,26075,
-26073,26080,26081,26097,26482,26122,26115,26107,26483,26165,26166,26164,26140,
-26191,26180,26185,26177,26206,26205,26212,26215,26216,26207,26210,26224,26243,
-26248,26254,26249,26244,26264,26269,26305,26297,26313,26302,26300,26308,26296,
-26326,26330,26336,26175,26342,26345,26352,26357,26359,26383,26390,26398,26406,
-26407,38712,26414,26431,26422,26433,26424,26423,26438,26462,26464,26457,26467,
-26468,26505,26480,26537,26492,26474,26508,26507,26534,26529,26501,26551,26607,
-26548,26604,26547,26601,26552,26596,26590,26589,26594,26606,26553,26574,26566,
-26599,27292,26654,26694,26665,26688,26701,26674,26702,26803,26667,26713,26723,
-26743,26751,26783,26767,26797,26772,26781,26779,26755,27310,26809,26740,26805,
-26784,26810,26895,26765,26750,26881,26826,26888,26840,26914,26918,26849,26892,
-26829,26836,26855,26837,26934,26898,26884,26839,26851,26917,26873,26848,26863,
-26920,26922,26906,26915,26913,26822,27001,26999,26972,27000,26987,26964,27006,
-26990,26937,26996,26941,26969,26928,26977,26974,26973,27009,26986,27058,27054,
-27088,27071,27073,27091,27070,27086,23528,27082,27101,27067,27075,27047,27182,
-27025,27040,27036,27029,27060,27102,27112,27138,27163,27135,27402,27129,27122,
-27111,27141,27057,27166,27117,27156,27115,27146,27154,27329,27171,27155,27204,
-27148,27250,27190,27256,27207,27234,27225,27238,27208,27192,27170,27280,27277,
-27296,27268,27298,27299,27287,34327,27323,27331,27330,27320,27315,27308,27358,
-27345,27359,27306,27354,27370,27387,27397,34326,27386,27410,27414,39729,27423,
-27448,27447,30428,27449,39150,27463,27459,27465,27472,27481,27476,27483,27487,
-27489,27512,27513,27519,27520,27524,27523,27533,27544,27541,27550,27556,27562,
-27563,27567,27570,27569,27571,27575,27580,27590,27595,27603,27615,27628,27627,
-27635,27631,40638,27656,27667,27668,27675,27684,27683,27742,27733,27746,27754,
-27778,27789,27802,27777,27803,27774,27752,27763,27794,27792,27844,27889,27859,
-27837,27863,27845,27869,27822,27825,27838,27834,27867,27887,27865,27882,27935,
-34893,27958,27947,27965,27960,27929,27957,27955,27922,27916,28003,28051,28004,
-27994,28025,27993,28046,28053,28644,28037,28153,28181,28170,28085,28103,28134,
-28088,28102,28140,28126,28108,28136,28114,28101,28154,28121,28132,28117,28138,
-28142,28205,28270,28206,28185,28274,28255,28222,28195,28267,28203,28278,28237,
-28191,28227,28218,28238,28196,28415,28189,28216,28290,28330,28312,28361,28343,
-28371,28349,28335,28356,28338,28372,28373,28303,28325,28354,28319,28481,28433,
-28748,28396,28408,28414,28479,28402,28465,28399,28466,28364,28478,28435,28407,
-28550,28538,28536,28545,28544,28527,28507,28659,28525,28546,28540,28504,28558,
-28561,28610,28518,28595,28579,28577,28580,28601,28614,28586,28639,28629,28652,
-28628,28632,28657,28654,28635,28681,28683,28666,28689,28673,28687,28670,28699,
-28698,28532,28701,28696,28703,28720,28734,28722,28753,28771,28825,28818,28847,
-28913,28844,28856,28851,28846,28895,28875,28893,28889,28937,28925,28956,28953,
-29029,29013,29064,29030,29026,29004,29014,29036,29071,29179,29060,29077,29096,
-29100,29143,29113,29118,29138,29129,29140,29134,29152,29164,29159,29173,29180,
-29177,29183,29197,29200,29211,29224,29229,29228,29232,29234,29243,29244,29247,
-29248,29254,29259,29272,29300,29310,29314,29313,29319,29330,29334,29346,29351,
-29369,29362,29379,29382,29380,29390,29394,29410,29408,29409,29433,29431,20495,
-29463,29450,29468,29462,29469,29492,29487,29481,29477,29502,29518,29519,40664,
-29527,29546,29544,29552,29560,29557,29563,29562,29640,29619,29646,29627,29632,
-29669,29678,29662,29858,29701,29807,29733,29688,29746,29754,29781,29759,29791,
-29785,29761,29788,29801,29808,29795,29802,29814,29822,29835,29854,29863,29898,
-29903,29908,29681,29920,29923,29927,29929,29934,29938,29936,29937,29944,29943,
-29956,29955,29957,29964,29966,29965,29973,29971,29982,29990,29996,30012,30020,
-30029,30026,30025,30043,30022,30042,30057,30052,30055,30059,30061,30072,30070,
-30086,30087,30068,30090,30089,30082,30100,30106,30109,30117,30115,30146,30131,
-30147,30133,30141,30136,30140,30129,30157,30154,30162,30169,30179,30174,30206,
-30207,30204,30209,30192,30202,30194,30195,30219,30221,30217,30239,30247,30240,
-30241,30242,30244,30260,30256,30267,30279,30280,30278,30300,30296,30305,30306,
-30312,30313,30314,30311,30316,30320,30322,30326,30328,30332,30336,30339,30344,
-30347,30350,30358,30355,30361,30362,30384,30388,30392,30393,30394,30402,30413,
-30422,30418,30430,30433,30437,30439,30442,34351,30459,30472,30471,30468,30505,
-30500,30494,30501,30502,30491,30519,30520,30535,30554,30568,30571,30555,30565,
-30591,30590,30585,30606,30603,30609,30624,30622,30640,30646,30649,30655,30652,
-30653,30651,30663,30669,30679,30682,30684,30691,30702,30716,30732,30738,31014,
-30752,31018,30789,30862,30836,30854,30844,30874,30860,30883,30901,30890,30895,
-30929,30918,30923,30932,30910,30908,30917,30922,30956,30951,30938,30973,30964,
-30983,30994,30993,31001,31020,31019,31040,31072,31063,31071,31066,31061,31059,
-31098,31103,31114,31133,31143,40779,31146,31150,31155,31161,31162,31177,31189,
-31207,31212,31201,31203,31240,31245,31256,31257,31264,31263,31104,31281,31291,
-31294,31287,31299,31319,31305,31329,31330,31337,40861,31344,31353,31357,31368,
-31383,31381,31384,31382,31401,31432,31408,31414,31429,31428,31423,36995,31431,
-31434,31437,31439,31445,31443,31449,31450,31453,31457,31458,31462,31469,31472,
-31490,31503,31498,31494,31539,31512,31513,31518,31541,31528,31542,31568,31610,
-31492,31565,31499,31564,31557,31605,31589,31604,31591,31600,31601,31596,31598,
-31645,31640,31647,31629,31644,31642,31627,31634,31631,31581,31641,31691,31681,
-31692,31695,31668,31686,31709,31721,31761,31764,31718,31717,31840,31744,31751,
-31763,31731,31735,31767,31757,31734,31779,31783,31786,31775,31799,31787,31805,
-31820,31811,31828,31823,31808,31824,31832,31839,31844,31830,31845,31852,31861,
-31875,31888,31908,31917,31906,31915,31905,31912,31923,31922,31921,31918,31929,
-31933,31936,31941,31938,31960,31954,31964,31970,39739,31983,31986,31988,31990,
-31994,32006,32002,32028,32021,32010,32069,32075,32046,32050,32063,32053,32070,
-32115,32086,32078,32114,32104,32110,32079,32099,32147,32137,32091,32143,32125,
-32155,32186,32174,32163,32181,32199,32189,32171,32317,32162,32175,32220,32184,
-32159,32176,32216,32221,32228,32222,32251,32242,32225,32261,32266,32291,32289,
-32274,32305,32287,32265,32267,32290,32326,32358,32315,32309,32313,32323,32311,
-32306,32314,32359,32349,32342,32350,32345,32346,32377,32362,32361,32380,32379,
-32387,32213,32381,36782,32383,32392,32393,32396,32402,32400,32403,32404,32406,
-32398,32411,32412,32568,32570,32581,32588,32589,32590,32592,32593,32597,32596,
-32600,32607,32608,32616,32617,32615,32632,32642,32646,32643,32648,32647,32652,
-32660,32670,32669,32666,32675,32687,32690,32697,32686,32694,32696,35697,32709,
-32710,32714,32725,32724,32737,32742,32745,32755,32761,39132,32774,32772,32779,
-32786,32792,32793,32796,32801,32808,32831,32827,32842,32838,32850,32856,32858,
-32863,32866,32872,32883,32882,32880,32886,32889,32893,32895,32900,32902,32901,
-32923,32915,32922,32941,20880,32940,32987,32997,32985,32989,32964,32986,32982,
-33033,33007,33009,33051,33065,33059,33071,33099,38539,33094,33086,33107,33105,
-33020,33137,33134,33125,33126,33140,33155,33160,33162,33152,33154,33184,33173,
-33188,33187,33119,33171,33193,33200,33205,33214,33208,33213,33216,33218,33210,
-33225,33229,33233,33241,33240,33224,33242,33247,33248,33255,33274,33275,33278,
-33281,33282,33285,33287,33290,33293,33296,33302,33321,33323,33336,33331,33344,
-33369,33368,33373,33370,33375,33380,33378,33384,33386,33387,33326,33393,33399,
-33400,33406,33421,33426,33451,33439,33467,33452,33505,33507,33503,33490,33524,
-33523,33530,33683,33539,33531,33529,33502,33542,33500,33545,33497,33589,33588,
-33558,33586,33585,33600,33593,33616,33605,33583,33579,33559,33560,33669,33690,
-33706,33695,33698,33686,33571,33678,33671,33674,33660,33717,33651,33653,33696,
-33673,33704,33780,33811,33771,33742,33789,33795,33752,33803,33729,33783,33799,
-33760,33778,33805,33826,33824,33725,33848,34054,33787,33901,33834,33852,34138,
-33924,33911,33899,33965,33902,33922,33897,33862,33836,33903,33913,33845,33994,
-33890,33977,33983,33951,34009,33997,33979,34010,34000,33985,33990,34006,33953,
-34081,34047,34036,34071,34072,34092,34079,34069,34068,34044,34112,34147,34136,
-34120,34113,34306,34123,34133,34176,34212,34184,34193,34186,34216,34157,34196,
-34203,34282,34183,34204,34167,34174,34192,34249,34234,34255,34233,34256,34261,
-34269,34277,34268,34297,34314,34323,34315,34302,34298,34310,34338,34330,34352,
-34367,34381,20053,34388,34399,34407,34417,34451,34467,34473,34474,34443,34444,
-34486,34479,34500,34502,34480,34505,34851,34475,34516,34526,34537,34540,34527,
-34523,34543,34578,34566,34568,34560,34563,34555,34577,34569,34573,34553,34570,
-34612,34623,34615,34619,34597,34601,34586,34656,34655,34680,34636,34638,34676,
-34647,34664,34670,34649,34643,34659,34666,34821,34722,34719,34690,34735,34763,
-34749,34752,34768,38614,34731,34756,34739,34759,34758,34747,34799,34802,34784,
-34831,34829,34814,34806,34807,34830,34770,34833,34838,34837,34850,34849,34865,
-34870,34873,34855,34875,34884,34882,34898,34905,34910,34914,34923,34945,34942,
-34974,34933,34941,34997,34930,34946,34967,34962,34990,34969,34978,34957,34980,
-34992,35007,34993,35011,35012,35028,35032,35033,35037,35065,35074,35068,35060,
-35048,35058,35076,35084,35082,35091,35139,35102,35109,35114,35115,35137,35140,
-35131,35126,35128,35148,35101,35168,35166,35174,35172,35181,35178,35183,35188,
-35191,35198,35203,35208,35210,35219,35224,35233,35241,35238,35244,35247,35250,
-35258,35261,35263,35264,35290,35292,35293,35303,35316,35320,35331,35350,35344,
-35340,35355,35357,35365,35382,35393,35419,35410,35398,35400,35452,35437,35436,
-35426,35461,35458,35460,35496,35489,35473,35493,35494,35482,35491,35524,35533,
-35522,35546,35563,35571,35559,35556,35569,35604,35552,35554,35575,35550,35547,
-35596,35591,35610,35553,35606,35600,35607,35616,35635,38827,35622,35627,35646,
-35624,35649,35660,35663,35662,35657,35670,35675,35674,35691,35679,35692,35695,
-35700,35709,35712,35724,35726,35730,35731,35734,35737,35738,35898,35905,35903,
-35912,35916,35918,35920,35925,35938,35948,35960,35962,35970,35977,35973,35978,
-35981,35982,35988,35964,35992,25117,36013,36010,36029,36018,36019,36014,36022,
-36040,36033,36068,36067,36058,36093,36090,36091,36100,36101,36106,36103,36111,
-36109,36112,40782,36115,36045,36116,36118,36199,36205,36209,36211,36225,36249,
-36290,36286,36282,36303,36314,36310,36300,36315,36299,36330,36331,36319,36323,
-36348,36360,36361,36351,36381,36382,36368,36383,36418,36405,36400,36404,36426,
-36423,36425,36428,36432,36424,36441,36452,36448,36394,36451,36437,36470,36466,
-36476,36481,36487,36485,36484,36491,36490,36499,36497,36500,36505,36522,36513,
-36524,36528,36550,36529,36542,36549,36552,36555,36571,36579,36604,36603,36587,
-36606,36618,36613,36629,36626,36633,36627,36636,36639,36635,36620,36646,36659,
-36667,36665,36677,36674,36670,36684,36681,36678,36686,36695,36700,36706,36707,
-36708,36764,36767,36771,36781,36783,36791,36826,36837,36834,36842,36847,36999,
-36852,36869,36857,36858,36881,36885,36897,36877,36894,36886,36875,36903,36918,
-36917,36921,36856,36943,36944,36945,36946,36878,36937,36926,36950,36952,36958,
-36968,36975,36982,38568,36978,36994,36989,36993,36992,37002,37001,37007,37032,
-37039,37041,37045,37090,37092,25160,37083,37122,37138,37145,37170,37168,37194,
-37206,37208,37219,37221,37225,37235,37234,37259,37257,37250,37282,37291,37295,
-37290,37301,37300,37306,37312,37313,37321,37323,37328,37334,37343,37345,37339,
-37372,37365,37366,37406,37375,37396,37420,37397,37393,37470,37463,37445,37449,
-37476,37448,37525,37439,37451,37456,37532,37526,37523,37531,37466,37583,37561,
-37559,37609,37647,37626,37700,37678,37657,37666,37658,37667,37690,37685,37691,
-37724,37728,37756,37742,37718,37808,37804,37805,37780,37817,37846,37847,37864,
-37861,37848,37827,37853,37840,37832,37860,37914,37908,37907,37891,37895,37904,
-37942,37931,37941,37921,37946,37953,37970,37956,37979,37984,37986,37982,37994,
-37417,38000,38005,38007,38013,37978,38012,38014,38017,38015,38274,38279,38282,
-38292,38294,38296,38297,38304,38312,38311,38317,38332,38331,38329,38334,38346,
-28662,38339,38349,38348,38357,38356,38358,38364,38369,38373,38370,38433,38440,
-38446,38447,38466,38476,38479,38475,38519,38492,38494,38493,38495,38502,38514,
-38508,38541,38552,38549,38551,38570,38567,38577,38578,38576,38580,38582,38584,
-38585,38606,38603,38601,38605,35149,38620,38669,38613,38649,38660,38662,38664,
-38675,38670,38673,38671,38678,38681,38692,38698,38704,38713,38717,38718,38724,
-38726,38728,38722,38729,38748,38752,38756,38758,38760,21202,38763,38769,38777,
-38789,38780,38785,38778,38790,38795,38799,38800,38812,38824,38822,38819,38835,
-38836,38851,38854,38856,38859,38876,38893,40783,38898,31455,38902,38901,38927,
-38924,38968,38948,38945,38967,38973,38982,38991,38987,39019,39023,39024,39025,
-39028,39027,39082,39087,39089,39094,39108,39107,39110,39145,39147,39171,39177,
-39186,39188,39192,39201,39197,39198,39204,39200,39212,39214,39229,39230,39234,
-39241,39237,39248,39243,39249,39250,39244,39253,39319,39320,39333,39341,39342,
-39356,39391,39387,39389,39384,39377,39405,39406,39409,39410,39419,39416,39425,
-39439,39429,39394,39449,39467,39479,39493,39490,39488,39491,39486,39509,39501,
-39515,39511,39519,39522,39525,39524,39529,39531,39530,39597,39600,39612,39616,
-39631,39633,39635,39636,39646,39647,39650,39651,39654,39663,39659,39662,39668,
-39665,39671,39675,39686,39704,39706,39711,39714,39715,39717,39719,39720,39721,
-39722,39726,39727,39730,39748,39747,39759,39757,39758,39761,39768,39796,39827,
-39811,39825,39830,39831,39839,39840,39848,39860,39872,39882,39865,39878,39887,
-39889,39890,39907,39906,39908,39892,39905,39994,39922,39921,39920,39957,39956,
-39945,39955,39948,39942,39944,39954,39946,39940,39982,39963,39973,39972,39969,
-39984,40007,39986,40006,39998,40026,40032,40039,40054,40056,40167,40172,40176,
-40201,40200,40171,40195,40198,40234,40230,40367,40227,40223,40260,40213,40210,
-40257,40255,40254,40262,40264,40285,40286,40292,40273,40272,40281,40306,40329,
-40327,40363,40303,40314,40346,40356,40361,40370,40388,40385,40379,40376,40378,
-40390,40399,40386,40409,40403,40440,40422,40429,40431,40445,40474,40475,40478,
-40565,40569,40573,40577,40584,40587,40588,40594,40597,40593,40605,40613,40617,
-40632,40618,40621,38753,40652,40654,40655,40656,40660,40668,40670,40669,40672,
-40677,40680,40687,40692,40694,40695,40697,40699,40700,40701,40711,40712,30391,
-40725,40737,40748,40766,40778,40786,40788,40803,40799,40800,40801,40806,40807,
-40812,40810,40823,40818,40822,40853,40860,40864,22575,27079,36953,29796,20956,
-29081,
-};
-
-static const struct dbcs_index jisx0208_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{__jisx0208_decmap+0,33,126},{__jisx0208_decmap
-+94,33,126},{__jisx0208_decmap+188,48,122},{__jisx0208_decmap+263,33,115},{
-__jisx0208_decmap+346,33,118},{__jisx0208_decmap+432,33,88},{__jisx0208_decmap
-+488,33,113},{__jisx0208_decmap+569,33,64},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{__jisx0208_decmap+601,33,126},{__jisx0208_decmap+695,33,
-126},{__jisx0208_decmap+789,33,126},{__jisx0208_decmap+883,33,126},{
-__jisx0208_decmap+977,33,126},{__jisx0208_decmap+1071,33,126},{
-__jisx0208_decmap+1165,33,126},{__jisx0208_decmap+1259,33,126},{
-__jisx0208_decmap+1353,33,126},{__jisx0208_decmap+1447,33,126},{
-__jisx0208_decmap+1541,33,126},{__jisx0208_decmap+1635,33,126},{
-__jisx0208_decmap+1729,33,126},{__jisx0208_decmap+1823,33,126},{
-__jisx0208_decmap+1917,33,126},{__jisx0208_decmap+2011,33,126},{
-__jisx0208_decmap+2105,33,126},{__jisx0208_decmap+2199,33,126},{
-__jisx0208_decmap+2293,33,126},{__jisx0208_decmap+2387,33,126},{
-__jisx0208_decmap+2481,33,126},{__jisx0208_decmap+2575,33,126},{
-__jisx0208_decmap+2669,33,126},{__jisx0208_decmap+2763,33,126},{
-__jisx0208_decmap+2857,33,126},{__jisx0208_decmap+2951,33,126},{
-__jisx0208_decmap+3045,33,126},{__jisx0208_decmap+3139,33,126},{
-__jisx0208_decmap+3233,33,126},{__jisx0208_decmap+3327,33,126},{
-__jisx0208_decmap+3421,33,126},{__jisx0208_decmap+3515,33,83},{
-__jisx0208_decmap+3566,33,126},{__jisx0208_decmap+3660,33,126},{
-__jisx0208_decmap+3754,33,126},{__jisx0208_decmap+3848,33,126},{
-__jisx0208_decmap+3942,33,126},{__jisx0208_decmap+4036,33,126},{
-__jisx0208_decmap+4130,33,126},{__jisx0208_decmap+4224,33,126},{
-__jisx0208_decmap+4318,33,126},{__jisx0208_decmap+4412,33,126},{
-__jisx0208_decmap+4506,33,126},{__jisx0208_decmap+4600,33,126},{
-__jisx0208_decmap+4694,33,126},{__jisx0208_decmap+4788,33,126},{
-__jisx0208_decmap+4882,33,126},{__jisx0208_decmap+4976,33,126},{
-__jisx0208_decmap+5070,33,126},{__jisx0208_decmap+5164,33,126},{
-__jisx0208_decmap+5258,33,126},{__jisx0208_decmap+5352,33,126},{
-__jisx0208_decmap+5446,33,126},{__jisx0208_decmap+5540,33,126},{
-__jisx0208_decmap+5634,33,126},{__jisx0208_decmap+5728,33,126},{
-__jisx0208_decmap+5822,33,126},{__jisx0208_decmap+5916,33,126},{
-__jisx0208_decmap+6010,33,126},{__jisx0208_decmap+6104,33,126},{
-__jisx0208_decmap+6198,33,126},{__jisx0208_decmap+6292,33,126},{
-__jisx0208_decmap+6386,33,126},{__jisx0208_decmap+6480,33,126},{
-__jisx0208_decmap+6574,33,126},{__jisx0208_decmap+6668,33,126},{
-__jisx0208_decmap+6762,33,126},{__jisx0208_decmap+6856,33,126},{
-__jisx0208_decmap+6950,33,38},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-};
-
-static const ucs2_t __jisx0212_decmap[6179] = {
-728,711,184,729,733,175,731,730,126,900,901,U,U,U,U,U,U,U,U,161,166,191,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,186,170,
-169,174,8482,164,8470,902,904,905,906,938,U,908,U,910,939,U,911,U,U,U,U,940,
-941,942,943,970,912,972,962,973,971,944,974,1026,1027,1028,1029,1030,1031,
-1032,1033,1034,1035,1036,1038,1039,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,
-1116,1118,1119,198,272,U,294,U,306,U,321,319,U,330,216,338,U,358,222,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,230,273,240,295,305,307,312,322,320,329,331,248,339,
-223,359,254,193,192,196,194,258,461,256,260,197,195,262,264,268,199,266,270,
-201,200,203,202,282,278,274,280,U,284,286,290,288,292,205,204,207,206,463,304,
-298,302,296,308,310,313,317,315,323,327,325,209,211,210,214,212,465,336,332,
-213,340,344,342,346,348,352,350,356,354,218,217,220,219,364,467,368,362,370,
-366,360,471,475,473,469,372,221,376,374,377,381,379,225,224,228,226,259,462,
-257,261,229,227,263,265,269,231,267,271,233,232,235,234,283,279,275,281,501,
-285,287,U,289,293,237,236,239,238,464,U,299,303,297,309,311,314,318,316,324,
-328,326,241,243,242,246,244,466,337,333,245,341,345,343,347,349,353,351,357,
-355,250,249,252,251,365,468,369,363,371,367,361,472,476,474,470,373,253,255,
-375,378,382,380,19970,19972,19973,19980,19986,19999,20003,20004,20008,20011,
-20014,20015,20016,20021,20032,20033,20036,20039,20049,20058,20060,20067,20072,
-20073,20084,20085,20089,20095,20109,20118,20119,20125,20143,20153,20163,20176,
-20186,20187,20192,20193,20194,20200,20207,20209,20211,20213,20221,20222,20223,
-20224,20226,20227,20232,20235,20236,20242,20245,20246,20247,20249,20270,20273,
-20320,20275,20277,20279,20281,20283,20286,20288,20290,20296,20297,20299,20300,
-20306,20308,20310,20312,20319,20323,20330,20332,20334,20337,20343,20344,20345,
-20346,20349,20350,20353,20354,20356,20357,20361,20362,20364,20366,20368,20370,
-20371,20372,20375,20377,20378,20382,20383,20402,20407,20409,20411,20412,20413,
-20414,20416,20417,20421,20422,20424,20425,20427,20428,20429,20431,20434,20444,
-20448,20450,20464,20466,20476,20477,20479,20480,20481,20484,20487,20490,20492,
-20494,20496,20499,20503,20504,20507,20508,20509,20510,20514,20519,20526,20528,
-20530,20531,20533,20544,20545,20546,20549,20550,20554,20556,20558,20561,20562,
-20563,20567,20569,20575,20576,20578,20579,20582,20583,20586,20589,20592,20593,
-20539,20609,20611,20612,20614,20618,20622,20623,20624,20626,20627,20628,20630,
-20635,20636,20638,20639,20640,20641,20642,20650,20655,20656,20665,20666,20669,
-20672,20675,20676,20679,20684,20686,20688,20691,20692,20696,20700,20701,20703,
-20706,20708,20710,20712,20713,20719,20721,20726,20730,20734,20739,20742,20743,
-20744,20747,20748,20749,20750,20722,20752,20759,20761,20763,20764,20765,20766,
-20771,20775,20776,20780,20781,20783,20785,20787,20788,20789,20792,20793,20802,
-20810,20815,20819,20821,20823,20824,20831,20836,20838,20862,20867,20868,20875,
-20878,20888,20893,20897,20899,20909,20920,20922,20924,20926,20927,20930,20936,
-20943,20945,20946,20947,20949,20952,20958,20962,20965,20974,20978,20979,20980,
-20983,20993,20994,20997,21010,21011,21013,21014,21016,21026,21032,21041,21042,
-21045,21052,21061,21065,21077,21079,21080,21082,21084,21087,21088,21089,21094,
-21102,21111,21112,21113,21120,21122,21125,21130,21132,21139,21141,21142,21143,
-21144,21146,21148,21156,21157,21158,21159,21167,21168,21174,21175,21176,21178,
-21179,21181,21184,21188,21190,21192,21196,21199,21201,21204,21206,21211,21212,
-21217,21221,21224,21225,21226,21228,21232,21233,21236,21238,21239,21248,21251,
-21258,21259,21260,21265,21267,21272,21275,21276,21278,21279,21285,21287,21288,
-21289,21291,21292,21293,21296,21298,21301,21308,21309,21310,21314,21324,21323,
-21337,21339,21345,21347,21349,21356,21357,21362,21369,21374,21379,21383,21384,
-21390,21395,21396,21401,21405,21409,21412,21418,21419,21423,21426,21428,21429,
-21431,21432,21434,21437,21440,21445,21455,21458,21459,21461,21466,21469,21470,
-21472,21478,21479,21493,21506,21523,21530,21537,21543,21544,21546,21551,21553,
-21556,21557,21571,21572,21575,21581,21583,21598,21602,21604,21606,21607,21609,
-21611,21613,21614,21620,21631,21633,21635,21637,21640,21641,21645,21649,21653,
-21654,21660,21663,21665,21670,21671,21673,21674,21677,21678,21681,21687,21689,
-21690,21691,21695,21702,21706,21709,21710,21728,21738,21740,21743,21750,21756,
-21758,21759,21760,21761,21765,21768,21769,21772,21773,21774,21781,21802,21803,
-21810,21813,21814,21819,21820,21821,21825,21831,21833,21834,21837,21840,21841,
-21848,21850,21851,21854,21856,21857,21860,21862,21887,21889,21890,21894,21896,
-21902,21903,21905,21906,21907,21908,21911,21923,21924,21933,21938,21951,21953,
-21955,21958,21961,21963,21964,21966,21969,21970,21971,21975,21976,21979,21982,
-21986,21993,22006,22015,22021,22024,22026,22029,22030,22031,22032,22033,22034,
-22041,22060,22064,22067,22069,22071,22073,22075,22076,22077,22079,22080,22081,
-22083,22084,22086,22089,22091,22093,22095,22100,22110,22112,22113,22114,22115,
-22118,22121,22125,22127,22129,22130,22133,22148,22149,22152,22155,22156,22165,
-22169,22170,22173,22174,22175,22182,22183,22184,22185,22187,22188,22189,22193,
-22195,22199,22206,22213,22217,22218,22219,22223,22224,22220,22221,22233,22236,
-22237,22239,22241,22244,22245,22246,22247,22248,22257,22251,22253,22262,22263,
-22273,22274,22279,22282,22284,22289,22293,22298,22299,22301,22304,22306,22307,
-22308,22309,22313,22314,22316,22318,22319,22323,22324,22333,22334,22335,22341,
-22342,22348,22349,22354,22370,22373,22375,22376,22379,22381,22382,22383,22384,
-22385,22387,22388,22389,22391,22393,22394,22395,22396,22398,22401,22403,22412,
-22420,22423,22425,22426,22428,22429,22430,22431,22433,22421,22439,22440,22441,
-22444,22456,22461,22471,22472,22476,22479,22485,22493,22494,22500,22502,22503,
-22505,22509,22512,22517,22518,22520,22525,22526,22527,22531,22532,22536,22537,
-22497,22540,22541,22555,22558,22559,22560,22566,22567,22573,22578,22585,22591,
-22601,22604,22605,22607,22608,22613,22623,22625,22628,22631,22632,22648,22652,
-22655,22656,22657,22663,22664,22665,22666,22668,22669,22671,22672,22676,22678,
-22685,22688,22689,22690,22694,22697,22705,22706,22724,22716,22722,22728,22733,
-22734,22736,22738,22740,22742,22746,22749,22753,22754,22761,22771,22789,22790,
-22795,22796,22802,22803,22804,34369,22813,22817,22819,22820,22824,22831,22832,
-22835,22837,22838,22847,22851,22854,22866,22867,22873,22875,22877,22878,22879,
-22881,22883,22891,22893,22895,22898,22901,22902,22905,22907,22908,22923,22924,
-22926,22930,22933,22935,22943,22948,22951,22957,22958,22959,22960,22963,22967,
-22970,22972,22977,22979,22980,22984,22986,22989,22994,23005,23006,23007,23011,
-23012,23015,23022,23023,23025,23026,23028,23031,23040,23044,23052,23053,23054,
-23058,23059,23070,23075,23076,23079,23080,23082,23085,23088,23108,23109,23111,
-23112,23116,23120,23125,23134,23139,23141,23143,23149,23159,23162,23163,23166,
-23179,23184,23187,23190,23193,23196,23198,23199,23200,23202,23207,23212,23217,
-23218,23219,23221,23224,23226,23227,23231,23236,23238,23240,23247,23258,23260,
-23264,23269,23274,23278,23285,23286,23293,23296,23297,23304,23319,23348,23321,
-23323,23325,23329,23333,23341,23352,23361,23371,23372,23378,23382,23390,23400,
-23406,23407,23420,23421,23422,23423,23425,23428,23430,23434,23438,23440,23441,
-23443,23444,23446,23464,23465,23468,23469,23471,23473,23474,23479,23482,23484,
-23488,23489,23501,23503,23510,23511,23512,23513,23514,23520,23535,23537,23540,
-23549,23564,23575,23582,23583,23587,23590,23593,23595,23596,23598,23600,23602,
-23605,23606,23641,23642,23644,23650,23651,23655,23656,23657,23661,23664,23668,
-23669,23674,23675,23676,23677,23687,23688,23690,23695,23698,23709,23711,23712,
-23714,23715,23718,23722,23730,23732,23733,23738,23753,23755,23762,23773,23767,
-23790,23793,23794,23796,23809,23814,23821,23826,23851,23843,23844,23846,23847,
-23857,23860,23865,23869,23871,23874,23875,23878,23880,23893,23889,23897,23882,
-23903,23904,23905,23906,23908,23914,23917,23920,23929,23930,23934,23935,23937,
-23939,23944,23946,23954,23955,23956,23957,23961,23963,23967,23968,23975,23979,
-23984,23988,23992,23993,24003,24007,24011,24016,24014,24024,24025,24032,24036,
-24041,24056,24057,24064,24071,24077,24082,24084,24085,24088,24095,24096,24110,
-24104,24114,24117,24126,24139,24144,24137,24145,24150,24152,24155,24156,24158,
-24168,24170,24171,24172,24173,24174,24176,24192,24203,24206,24226,24228,24229,
-24232,24234,24236,24241,24243,24253,24254,24255,24262,24268,24267,24270,24273,
-24274,24276,24277,24284,24286,24293,24299,24322,24326,24327,24328,24334,24345,
-24348,24349,24353,24354,24355,24356,24360,24363,24364,24366,24368,24372,24374,
-24379,24381,24383,24384,24388,24389,24391,24397,24400,24404,24408,24411,24416,
-24419,24420,24423,24431,24434,24436,24437,24440,24442,24445,24446,24457,24461,
-24463,24470,24476,24477,24482,24487,24491,24484,24492,24495,24496,24497,24504,
-24516,24519,24520,24521,24523,24528,24529,24530,24531,24532,24542,24545,24546,
-24552,24553,24554,24556,24557,24558,24559,24562,24563,24566,24570,24572,24583,
-24586,24589,24595,24596,24599,24600,24602,24607,24612,24621,24627,24629,24640,
-24647,24648,24649,24652,24657,24660,24662,24663,24669,24673,24679,24689,24702,
-24703,24706,24710,24712,24714,24718,24721,24723,24725,24728,24733,24734,24738,
-24740,24741,24744,24752,24753,24759,24763,24766,24770,24772,24776,24777,24778,
-24779,24782,24783,24788,24789,24793,24795,24797,24798,24802,24805,24818,24821,
-24824,24828,24829,24834,24839,24842,24844,24848,24849,24850,24851,24852,24854,
-24855,24857,24860,24862,24866,24874,24875,24880,24881,24885,24886,24887,24889,
-24897,24901,24902,24905,24926,24928,24940,24946,24952,24955,24956,24959,24960,
-24961,24963,24964,24971,24973,24978,24979,24983,24984,24988,24989,24991,24992,
-24997,25000,25002,25005,25016,25017,25020,25024,25025,25026,25038,25039,25045,
-25052,25053,25054,25055,25057,25058,25063,25065,25061,25068,25069,25071,25089,
-25091,25092,25095,25107,25109,25116,25120,25122,25123,25127,25129,25131,25145,
-25149,25154,25155,25156,25158,25164,25168,25169,25170,25172,25174,25178,25180,
-25188,25197,25199,25203,25210,25213,25229,25230,25231,25232,25254,25256,25267,
-25270,25271,25274,25278,25279,25284,25294,25301,25302,25306,25322,25330,25332,
-25340,25341,25347,25348,25354,25355,25357,25360,25363,25366,25368,25385,25386,
-25389,25397,25398,25401,25404,25409,25410,25411,25412,25414,25418,25419,25422,
-25426,25427,25428,25432,25435,25445,25446,25452,25453,25457,25460,25461,25464,
-25468,25469,25471,25474,25476,25479,25482,25488,25492,25493,25497,25498,25502,
-25508,25510,25517,25518,25519,25533,25537,25541,25544,25550,25553,25555,25556,
-25557,25564,25568,25573,25578,25580,25586,25587,25589,25592,25593,25609,25610,
-25616,25618,25620,25624,25630,25632,25634,25636,25637,25641,25642,25647,25648,
-25653,25661,25663,25675,25679,25681,25682,25683,25684,25690,25691,25692,25693,
-25695,25696,25697,25699,25709,25715,25716,25723,25725,25733,25735,25743,25744,
-25745,25752,25753,25755,25757,25759,25761,25763,25766,25768,25772,25779,25789,
-25790,25791,25796,25801,25802,25803,25804,25806,25808,25809,25813,25815,25828,
-25829,25833,25834,25837,25840,25845,25847,25851,25855,25857,25860,25864,25865,
-25866,25871,25875,25876,25878,25881,25883,25886,25887,25890,25894,25897,25902,
-25905,25914,25916,25917,25923,25927,25929,25936,25938,25940,25951,25952,25959,
-25963,25978,25981,25985,25989,25994,26002,26005,26008,26013,26016,26019,26022,
-26030,26034,26035,26036,26047,26050,26056,26057,26062,26064,26068,26070,26072,
-26079,26096,26098,26100,26101,26105,26110,26111,26112,26116,26120,26121,26125,
-26129,26130,26133,26134,26141,26142,26145,26146,26147,26148,26150,26153,26154,
-26155,26156,26158,26160,26161,26163,26169,26167,26176,26181,26182,26186,26188,
-26193,26190,26199,26200,26201,26203,26204,26208,26209,26363,26218,26219,26220,
-26238,26227,26229,26239,26231,26232,26233,26235,26240,26236,26251,26252,26253,
-26256,26258,26265,26266,26267,26268,26271,26272,26276,26285,26289,26290,26293,
-26299,26303,26304,26306,26307,26312,26316,26318,26319,26324,26331,26335,26344,
-26347,26348,26350,26362,26373,26375,26382,26387,26393,26396,26400,26402,26419,
-26430,26437,26439,26440,26444,26452,26453,26461,26470,26476,26478,26484,26486,
-26491,26497,26500,26510,26511,26513,26515,26518,26520,26521,26523,26544,26545,
-26546,26549,26555,26556,26557,26617,26560,26562,26563,26565,26568,26569,26578,
-26583,26585,26588,26593,26598,26608,26610,26614,26615,26706,26644,26649,26653,
-26655,26664,26663,26668,26669,26671,26672,26673,26675,26683,26687,26692,26693,
-26698,26700,26709,26711,26712,26715,26731,26734,26735,26736,26737,26738,26741,
-26745,26746,26747,26748,26754,26756,26758,26760,26774,26776,26778,26780,26785,
-26787,26789,26793,26794,26798,26802,26811,26821,26824,26828,26831,26832,26833,
-26835,26838,26841,26844,26845,26853,26856,26858,26859,26860,26861,26864,26865,
-26869,26870,26875,26876,26877,26886,26889,26890,26896,26897,26899,26902,26903,
-26929,26931,26933,26936,26939,26946,26949,26953,26958,26967,26971,26979,26980,
-26981,26982,26984,26985,26988,26992,26993,26994,27002,27003,27007,27008,27021,
-27026,27030,27032,27041,27045,27046,27048,27051,27053,27055,27063,27064,27066,
-27068,27077,27080,27089,27094,27095,27106,27109,27118,27119,27121,27123,27125,
-27134,27136,27137,27139,27151,27153,27157,27162,27165,27168,27172,27176,27184,
-27186,27188,27191,27195,27198,27199,27205,27206,27209,27210,27214,27216,27217,
-27218,27221,27222,27227,27236,27239,27242,27249,27251,27262,27265,27267,27270,
-27271,27273,27275,27281,27291,27293,27294,27295,27301,27307,27311,27312,27313,
-27316,27325,27326,27327,27334,27337,27336,27340,27344,27348,27349,27350,27356,
-27357,27364,27367,27372,27376,27377,27378,27388,27389,27394,27395,27398,27399,
-27401,27407,27408,27409,27415,27419,27422,27428,27432,27435,27436,27439,27445,
-27446,27451,27455,27462,27466,27469,27474,27478,27480,27485,27488,27495,27499,
-27502,27504,27509,27517,27518,27522,27525,27543,27547,27551,27552,27554,27555,
-27560,27561,27564,27565,27566,27568,27576,27577,27581,27582,27587,27588,27593,
-27596,27606,27610,27617,27619,27622,27623,27630,27633,27639,27641,27647,27650,
-27652,27653,27657,27661,27662,27664,27666,27673,27679,27686,27687,27688,27692,
-27694,27699,27701,27702,27706,27707,27711,27722,27723,27725,27727,27730,27732,
-27737,27739,27740,27755,27757,27759,27764,27766,27768,27769,27771,27781,27782,
-27783,27785,27796,27797,27799,27800,27804,27807,27824,27826,27828,27842,27846,
-27853,27855,27856,27857,27858,27860,27862,27866,27868,27872,27879,27881,27883,
-27884,27886,27890,27892,27908,27911,27914,27918,27919,27921,27923,27930,27942,
-27943,27944,27751,27950,27951,27953,27961,27964,27967,27991,27998,27999,28001,
-28005,28007,28015,28016,28028,28034,28039,28049,28050,28052,28054,28055,28056,
-28074,28076,28084,28087,28089,28093,28095,28100,28104,28106,28110,28111,28118,
-28123,28125,28127,28128,28130,28133,28137,28143,28144,28148,28150,28156,28160,
-28164,28190,28194,28199,28210,28214,28217,28219,28220,28228,28229,28232,28233,
-28235,28239,28241,28242,28243,28244,28247,28252,28253,28254,28258,28259,28264,
-28275,28283,28285,28301,28307,28313,28320,28327,28333,28334,28337,28339,28347,
-28351,28352,28353,28355,28359,28360,28362,28365,28366,28367,28395,28397,28398,
-28409,28411,28413,28420,28424,28426,28428,28429,28438,28440,28442,28443,28454,
-28457,28458,28463,28464,28467,28470,28475,28476,28461,28495,28497,28498,28499,
-28503,28505,28506,28509,28510,28513,28514,28520,28524,28541,28542,28547,28551,
-28552,28555,28556,28557,28560,28562,28563,28564,28566,28570,28575,28576,28581,
-28582,28583,28584,28590,28591,28592,28597,28598,28604,28613,28615,28616,28618,
-28634,28638,28648,28649,28656,28661,28665,28668,28669,28672,28677,28678,28679,
-28685,28695,28704,28707,28719,28724,28727,28729,28732,28739,28740,28744,28745,
-28746,28747,28756,28757,28765,28766,28750,28772,28773,28780,28782,28789,28790,
-28798,28801,28805,28806,28820,28821,28822,28823,28824,28827,28836,28843,28848,
-28849,28852,28855,28874,28881,28883,28884,28885,28886,28888,28892,28900,28922,
-28931,28932,28933,28934,28935,28939,28940,28943,28958,28960,28971,28973,28975,
-28976,28977,28984,28993,28997,28998,28999,29002,29003,29008,29010,29015,29018,
-29020,29022,29024,29032,29049,29056,29061,29063,29068,29074,29082,29083,29088,
-29090,29103,29104,29106,29107,29114,29119,29120,29121,29124,29131,29132,29139,
-29142,29145,29146,29148,29176,29182,29184,29191,29192,29193,29203,29207,29210,
-29213,29215,29220,29227,29231,29236,29240,29241,29249,29250,29251,29253,29262,
-29263,29264,29267,29269,29270,29274,29276,29278,29280,29283,29288,29291,29294,
-29295,29297,29303,29304,29307,29308,29311,29316,29321,29325,29326,29331,29339,
-29352,29357,29358,29361,29364,29374,29377,29383,29385,29388,29397,29398,29400,
-29407,29413,29427,29428,29434,29435,29438,29442,29444,29445,29447,29451,29453,
-29458,29459,29464,29465,29470,29474,29476,29479,29480,29484,29489,29490,29493,
-29498,29499,29501,29507,29517,29520,29522,29526,29528,29533,29534,29535,29536,
-29542,29543,29545,29547,29548,29550,29551,29553,29559,29561,29564,29568,29569,
-29571,29573,29574,29582,29584,29587,29589,29591,29592,29596,29598,29599,29600,
-29602,29605,29606,29610,29611,29613,29621,29623,29625,29628,29629,29631,29637,
-29638,29641,29643,29644,29647,29650,29651,29654,29657,29661,29665,29667,29670,
-29671,29673,29684,29685,29687,29689,29690,29691,29693,29695,29696,29697,29700,
-29703,29706,29713,29722,29723,29732,29734,29736,29737,29738,29739,29740,29741,
-29742,29743,29744,29745,29753,29760,29763,29764,29766,29767,29771,29773,29777,
-29778,29783,29789,29794,29798,29799,29800,29803,29805,29806,29809,29810,29824,
-29825,29829,29830,29831,29833,29839,29840,29841,29842,29848,29849,29850,29852,
-29855,29856,29857,29859,29862,29864,29865,29866,29867,29870,29871,29873,29874,
-29877,29881,29883,29887,29896,29897,29900,29904,29907,29912,29914,29915,29918,
-29919,29924,29928,29930,29931,29935,29940,29946,29947,29948,29951,29958,29970,
-29974,29975,29984,29985,29988,29991,29993,29994,29999,30006,30009,30013,30014,
-30015,30016,30019,30023,30024,30030,30032,30034,30039,30046,30047,30049,30063,
-30065,30073,30074,30075,30076,30077,30078,30081,30085,30096,30098,30099,30101,
-30105,30108,30114,30116,30132,30138,30143,30144,30145,30148,30150,30156,30158,
-30159,30167,30172,30175,30176,30177,30180,30183,30188,30190,30191,30193,30201,
-30208,30210,30211,30212,30215,30216,30218,30220,30223,30226,30227,30229,30230,
-30233,30235,30236,30237,30238,30243,30245,30246,30249,30253,30258,30259,30261,
-30264,30265,30266,30268,30282,30272,30273,30275,30276,30277,30281,30283,30293,
-30297,30303,30308,30309,30317,30318,30319,30321,30324,30337,30341,30348,30349,
-30357,30363,30364,30365,30367,30368,30370,30371,30372,30373,30374,30375,30376,
-30378,30381,30397,30401,30405,30409,30411,30412,30414,30420,30425,30432,30438,
-30440,30444,30448,30449,30454,30457,30460,30464,30470,30474,30478,30482,30484,
-30485,30487,30489,30490,30492,30498,30504,30509,30510,30511,30516,30517,30518,
-30521,30525,30526,30530,30533,30534,30538,30541,30542,30543,30546,30550,30551,
-30556,30558,30559,30560,30562,30564,30567,30570,30572,30576,30578,30579,30580,
-30586,30589,30592,30596,30604,30605,30612,30613,30614,30618,30623,30626,30631,
-30634,30638,30639,30641,30645,30654,30659,30665,30673,30674,30677,30681,30686,
-30687,30688,30692,30694,30698,30700,30704,30705,30708,30712,30715,30725,30726,
-30729,30733,30734,30737,30749,30753,30754,30755,30765,30766,30768,30773,30775,
-30787,30788,30791,30792,30796,30798,30802,30812,30814,30816,30817,30819,30820,
-30824,30826,30830,30842,30846,30858,30863,30868,30872,30881,30877,30878,30879,
-30884,30888,30892,30893,30896,30897,30898,30899,30907,30909,30911,30919,30920,
-30921,30924,30926,30930,30931,30933,30934,30948,30939,30943,30944,30945,30950,
-30954,30962,30963,30976,30966,30967,30970,30971,30975,30982,30988,30992,31002,
-31004,31006,31007,31008,31013,31015,31017,31021,31025,31028,31029,31035,31037,
-31039,31044,31045,31046,31050,31051,31055,31057,31060,31064,31067,31068,31079,
-31081,31083,31090,31097,31099,31100,31102,31115,31116,31121,31123,31124,31125,
-31126,31128,31131,31132,31137,31144,31145,31147,31151,31153,31156,31160,31163,
-31170,31172,31175,31176,31178,31183,31188,31190,31194,31197,31198,31200,31202,
-31205,31210,31211,31213,31217,31224,31228,31234,31235,31239,31241,31242,31244,
-31249,31253,31259,31262,31265,31271,31275,31277,31279,31280,31284,31285,31288,
-31289,31290,31300,31301,31303,31304,31308,31317,31318,31321,31324,31325,31327,
-31328,31333,31335,31338,31341,31349,31352,31358,31360,31362,31365,31366,31370,
-31371,31376,31377,31380,31390,31392,31395,31404,31411,31413,31417,31419,31420,
-31430,31433,31436,31438,31441,31451,31464,31465,31467,31468,31473,31476,31483,
-31485,31486,31495,31508,31519,31523,31527,31529,31530,31531,31533,31534,31535,
-31536,31537,31540,31549,31551,31552,31553,31559,31566,31573,31584,31588,31590,
-31593,31594,31597,31599,31602,31603,31607,31620,31625,31630,31632,31633,31638,
-31643,31646,31648,31653,31660,31663,31664,31666,31669,31670,31674,31675,31676,
-31677,31682,31685,31688,31690,31700,31702,31703,31705,31706,31707,31720,31722,
-31730,31732,31733,31736,31737,31738,31740,31742,31745,31746,31747,31748,31750,
-31753,31755,31756,31758,31759,31769,31771,31776,31781,31782,31784,31788,31793,
-31795,31796,31798,31801,31802,31814,31818,31829,31825,31826,31827,31833,31834,
-31835,31836,31837,31838,31841,31843,31847,31849,31853,31854,31856,31858,31865,
-31868,31869,31878,31879,31887,31892,31902,31904,31910,31920,31926,31927,31930,
-31931,31932,31935,31940,31943,31944,31945,31949,31951,31955,31956,31957,31959,
-31961,31962,31965,31974,31977,31979,31989,32003,32007,32008,32009,32015,32017,
-32018,32019,32022,32029,32030,32035,32038,32042,32045,32049,32060,32061,32062,
-32064,32065,32071,32072,32077,32081,32083,32087,32089,32090,32092,32093,32101,
-32103,32106,32112,32120,32122,32123,32127,32129,32130,32131,32133,32134,32136,
-32139,32140,32141,32145,32150,32151,32157,32158,32166,32167,32170,32179,32182,
-32183,32185,32194,32195,32196,32197,32198,32204,32205,32206,32215,32217,32256,
-32226,32229,32230,32234,32235,32237,32241,32245,32246,32249,32250,32264,32272,
-32273,32277,32279,32284,32285,32288,32295,32296,32300,32301,32303,32307,32310,
-32319,32324,32325,32327,32334,32336,32338,32344,32351,32353,32354,32357,32363,
-32366,32367,32371,32376,32382,32385,32390,32391,32394,32397,32401,32405,32408,
-32410,32413,32414,32572,32571,32573,32574,32575,32579,32580,32583,32591,32594,
-32595,32603,32604,32605,32609,32611,32612,32613,32614,32621,32625,32637,32638,
-32639,32640,32651,32653,32655,32656,32657,32662,32663,32668,32673,32674,32678,
-32682,32685,32692,32700,32703,32704,32707,32712,32718,32719,32731,32735,32739,
-32741,32744,32748,32750,32751,32754,32762,32765,32766,32767,32775,32776,32778,
-32781,32782,32783,32785,32787,32788,32790,32797,32798,32799,32800,32804,32806,
-32812,32814,32816,32820,32821,32823,32825,32826,32828,32830,32832,32836,32864,
-32868,32870,32877,32881,32885,32897,32904,32910,32924,32926,32934,32935,32939,
-32952,32953,32968,32973,32975,32978,32980,32981,32983,32984,32992,33005,33006,
-33008,33010,33011,33014,33017,33018,33022,33027,33035,33046,33047,33048,33052,
-33054,33056,33060,33063,33068,33072,33077,33082,33084,33093,33095,33098,33100,
-33106,33111,33120,33121,33127,33128,33129,33133,33135,33143,33153,33168,33156,
-33157,33158,33163,33166,33174,33176,33179,33182,33186,33198,33202,33204,33211,
-33227,33219,33221,33226,33230,33231,33237,33239,33243,33245,33246,33249,33252,
-33259,33260,33264,33265,33266,33269,33270,33272,33273,33277,33279,33280,33283,
-33295,33299,33300,33305,33306,33309,33313,33314,33320,33330,33332,33338,33347,
-33348,33349,33350,33355,33358,33359,33361,33366,33372,33376,33379,33383,33389,
-33396,33403,33405,33407,33408,33409,33411,33412,33415,33417,33418,33422,33425,
-33428,33430,33432,33434,33435,33440,33441,33443,33444,33447,33448,33449,33450,
-33454,33456,33458,33460,33463,33466,33468,33470,33471,33478,33488,33493,33498,
-33504,33506,33508,33512,33514,33517,33519,33526,33527,33533,33534,33536,33537,
-33543,33544,33546,33547,33620,33563,33565,33566,33567,33569,33570,33580,33581,
-33582,33584,33587,33591,33594,33596,33597,33602,33603,33604,33607,33613,33614,
-33617,33621,33622,33623,33648,33656,33661,33663,33664,33666,33668,33670,33677,
-33682,33684,33685,33688,33689,33691,33692,33693,33702,33703,33705,33708,33726,
-33727,33728,33735,33737,33743,33744,33745,33748,33757,33619,33768,33770,33782,
-33784,33785,33788,33793,33798,33802,33807,33809,33813,33817,33709,33839,33849,
-33861,33863,33864,33866,33869,33871,33873,33874,33878,33880,33881,33882,33884,
-33888,33892,33893,33895,33898,33904,33907,33908,33910,33912,33916,33917,33921,
-33925,33938,33939,33941,33950,33958,33960,33961,33962,33967,33969,33972,33978,
-33981,33982,33984,33986,33991,33992,33996,33999,34003,34012,34023,34026,34031,
-34032,34033,34034,34039,34098,34042,34043,34045,34050,34051,34055,34060,34062,
-34064,34076,34078,34082,34083,34084,34085,34087,34090,34091,34095,34099,34100,
-34102,34111,34118,34127,34128,34129,34130,34131,34134,34137,34140,34141,34142,
-34143,34144,34145,34146,34148,34155,34159,34169,34170,34171,34173,34175,34177,
-34181,34182,34185,34187,34188,34191,34195,34200,34205,34207,34208,34210,34213,
-34215,34228,34230,34231,34232,34236,34237,34238,34239,34242,34247,34250,34251,
-34254,34221,34264,34266,34271,34272,34278,34280,34285,34291,34294,34300,34303,
-34304,34308,34309,34317,34318,34320,34321,34322,34328,34329,34331,34334,34337,
-34343,34345,34358,34360,34362,34364,34365,34368,34370,34374,34386,34387,34390,
-34391,34392,34393,34397,34400,34401,34402,34403,34404,34409,34412,34415,34421,
-34422,34423,34426,34445,34449,34454,34456,34458,34460,34465,34470,34471,34472,
-34477,34481,34483,34484,34485,34487,34488,34489,34495,34496,34497,34499,34501,
-34513,34514,34517,34519,34522,34524,34528,34531,34533,34535,34440,34554,34556,
-34557,34564,34565,34567,34571,34574,34575,34576,34579,34580,34585,34590,34591,
-34593,34595,34600,34606,34607,34609,34610,34617,34618,34620,34621,34622,34624,
-34627,34629,34637,34648,34653,34657,34660,34661,34671,34673,34674,34683,34691,
-34692,34693,34694,34695,34696,34697,34699,34700,34704,34707,34709,34711,34712,
-34713,34718,34720,34723,34727,34732,34733,34734,34737,34741,34750,34751,34753,
-34760,34761,34762,34766,34773,34774,34777,34778,34780,34783,34786,34787,34788,
-34794,34795,34797,34801,34803,34808,34810,34815,34817,34819,34822,34825,34826,
-34827,34832,34841,34834,34835,34836,34840,34842,34843,34844,34846,34847,34856,
-34861,34862,34864,34866,34869,34874,34876,34881,34883,34885,34888,34889,34890,
-34891,34894,34897,34901,34902,34904,34906,34908,34911,34912,34916,34921,34929,
-34937,34939,34944,34968,34970,34971,34972,34975,34976,34984,34986,35002,35005,
-35006,35008,35018,35019,35020,35021,35022,35025,35026,35027,35035,35038,35047,
-35055,35056,35057,35061,35063,35073,35078,35085,35086,35087,35093,35094,35096,
-35097,35098,35100,35104,35110,35111,35112,35120,35121,35122,35125,35129,35130,
-35134,35136,35138,35141,35142,35145,35151,35154,35159,35162,35163,35164,35169,
-35170,35171,35179,35182,35184,35187,35189,35194,35195,35196,35197,35209,35213,
-35216,35220,35221,35227,35228,35231,35232,35237,35248,35252,35253,35254,35255,
-35260,35284,35285,35286,35287,35288,35301,35305,35307,35309,35313,35315,35318,
-35321,35325,35327,35332,35333,35335,35343,35345,35346,35348,35349,35358,35360,
-35362,35364,35366,35371,35372,35375,35381,35383,35389,35390,35392,35395,35397,
-35399,35401,35405,35406,35411,35414,35415,35416,35420,35421,35425,35429,35431,
-35445,35446,35447,35449,35450,35451,35454,35455,35456,35459,35462,35467,35471,
-35472,35474,35478,35479,35481,35487,35495,35497,35502,35503,35507,35510,35511,
-35515,35518,35523,35526,35528,35529,35530,35537,35539,35540,35541,35543,35549,
-35551,35564,35568,35572,35573,35574,35580,35583,35589,35590,35595,35601,35612,
-35614,35615,35594,35629,35632,35639,35644,35650,35651,35652,35653,35654,35656,
-35666,35667,35668,35673,35661,35678,35683,35693,35702,35704,35705,35708,35710,
-35713,35716,35717,35723,35725,35727,35732,35733,35740,35742,35743,35896,35897,
-35901,35902,35909,35911,35913,35915,35919,35921,35923,35924,35927,35928,35931,
-35933,35929,35939,35940,35942,35944,35945,35949,35955,35957,35958,35963,35966,
-35974,35975,35979,35984,35986,35987,35993,35995,35996,36004,36025,36026,36037,
-36038,36041,36043,36047,36054,36053,36057,36061,36065,36072,36076,36079,36080,
-36082,36085,36087,36088,36094,36095,36097,36099,36105,36114,36119,36123,36197,
-36201,36204,36206,36223,36226,36228,36232,36237,36240,36241,36245,36254,36255,
-36256,36262,36267,36268,36271,36274,36277,36279,36281,36283,36288,36293,36294,
-36295,36296,36298,36302,36305,36308,36309,36311,36313,36324,36325,36327,36332,
-36336,36284,36337,36338,36340,36349,36353,36356,36357,36358,36363,36369,36372,
-36374,36384,36385,36386,36387,36390,36391,36401,36403,36406,36407,36408,36409,
-36413,36416,36417,36427,36429,36430,36431,36436,36443,36444,36445,36446,36449,
-36450,36457,36460,36461,36463,36464,36465,36473,36474,36475,36482,36483,36489,
-36496,36498,36501,36506,36507,36509,36510,36514,36519,36521,36525,36526,36531,
-36533,36538,36539,36544,36545,36547,36548,36551,36559,36561,36564,36572,36584,
-36590,36592,36593,36599,36601,36602,36589,36608,36610,36615,36616,36623,36624,
-36630,36631,36632,36638,36640,36641,36643,36645,36647,36648,36652,36653,36654,
-36660,36661,36662,36663,36666,36672,36673,36675,36679,36687,36689,36690,36691,
-36692,36693,36696,36701,36702,36709,36765,36768,36769,36772,36773,36774,36789,
-36790,36792,36798,36800,36801,36806,36810,36811,36813,36816,36818,36819,36821,
-36832,36835,36836,36840,36846,36849,36853,36854,36859,36862,36866,36868,36872,
-36876,36888,36891,36904,36905,36911,36906,36908,36909,36915,36916,36919,36927,
-36931,36932,36940,36955,36957,36962,36966,36967,36972,36976,36980,36985,36997,
-37000,37003,37004,37006,37008,37013,37015,37016,37017,37019,37024,37025,37026,
-37029,37040,37042,37043,37044,37046,37053,37068,37054,37059,37060,37061,37063,
-37064,37077,37079,37080,37081,37084,37085,37087,37093,37074,37110,37099,37103,
-37104,37108,37118,37119,37120,37124,37125,37126,37128,37133,37136,37140,37142,
-37143,37144,37146,37148,37150,37152,37157,37154,37155,37159,37161,37166,37167,
-37169,37172,37174,37175,37177,37178,37180,37181,37187,37191,37192,37199,37203,
-37207,37209,37210,37211,37217,37220,37223,37229,37236,37241,37242,37243,37249,
-37251,37253,37254,37258,37262,37265,37267,37268,37269,37272,37278,37281,37286,
-37288,37292,37293,37294,37296,37297,37298,37299,37302,37307,37308,37309,37311,
-37314,37315,37317,37331,37332,37335,37337,37338,37342,37348,37349,37353,37354,
-37356,37357,37358,37359,37360,37361,37367,37369,37371,37373,37376,37377,37380,
-37381,37382,37383,37385,37386,37388,37392,37394,37395,37398,37400,37404,37405,
-37411,37412,37413,37414,37416,37422,37423,37424,37427,37429,37430,37432,37433,
-37434,37436,37438,37440,37442,37443,37446,37447,37450,37453,37454,37455,37457,
-37464,37465,37468,37469,37472,37473,37477,37479,37480,37481,37486,37487,37488,
-37493,37494,37495,37496,37497,37499,37500,37501,37503,37512,37513,37514,37517,
-37518,37522,37527,37529,37535,37536,37540,37541,37543,37544,37547,37551,37554,
-37558,37560,37562,37563,37564,37565,37567,37568,37569,37570,37571,37573,37574,
-37575,37576,37579,37580,37581,37582,37584,37587,37589,37591,37592,37593,37596,
-37597,37599,37600,37601,37603,37605,37607,37608,37612,37614,37616,37625,37627,
-37631,37632,37634,37640,37645,37649,37652,37653,37660,37661,37662,37663,37665,
-37668,37669,37671,37673,37674,37683,37684,37686,37687,37703,37704,37705,37712,
-37713,37714,37717,37719,37720,37722,37726,37732,37733,37735,37737,37738,37741,
-37743,37744,37745,37747,37748,37750,37754,37757,37759,37760,37761,37762,37768,
-37770,37771,37773,37775,37778,37781,37784,37787,37790,37793,37795,37796,37798,
-37800,37803,37812,37813,37814,37818,37801,37825,37828,37829,37830,37831,37833,
-37834,37835,37836,37837,37843,37849,37852,37854,37855,37858,37862,37863,37881,
-37879,37880,37882,37883,37885,37889,37890,37892,37896,37897,37901,37902,37903,
-37909,37910,37911,37919,37934,37935,37937,37938,37939,37940,37947,37951,37949,
-37955,37957,37960,37962,37964,37973,37977,37980,37983,37985,37987,37992,37995,
-37997,37998,37999,38001,38002,38020,38019,38264,38265,38270,38276,38280,38284,
-38285,38286,38301,38302,38303,38305,38310,38313,38315,38316,38324,38326,38330,
-38333,38335,38342,38344,38345,38347,38352,38353,38354,38355,38361,38362,38365,
-38366,38367,38368,38372,38374,38429,38430,38434,38436,38437,38438,38444,38449,
-38451,38455,38456,38457,38458,38460,38461,38465,38482,38484,38486,38487,38488,
-38497,38510,38516,38523,38524,38526,38527,38529,38530,38531,38532,38537,38545,
-38550,38554,38557,38559,38564,38565,38566,38569,38574,38575,38579,38586,38602,
-38610,23986,38616,38618,38621,38622,38623,38633,38639,38641,38650,38658,38659,
-38661,38665,38682,38683,38685,38689,38690,38691,38696,38705,38707,38721,38723,
-38730,38734,38735,38741,38743,38744,38746,38747,38755,38759,38762,38766,38771,
-38774,38775,38776,38779,38781,38783,38784,38793,38805,38806,38807,38809,38810,
-38814,38815,38818,38828,38830,38833,38834,38837,38838,38840,38841,38842,38844,
-38846,38847,38849,38852,38853,38855,38857,38858,38860,38861,38862,38864,38865,
-38868,38871,38872,38873,38877,38878,38880,38875,38881,38884,38895,38897,38900,
-38903,38904,38906,38919,38922,38937,38925,38926,38932,38934,38940,38942,38944,
-38947,38950,38955,38958,38959,38960,38962,38963,38965,38949,38974,38980,38983,
-38986,38993,38994,38995,38998,38999,39001,39002,39010,39011,39013,39014,39018,
-39020,39083,39085,39086,39088,39092,39095,39096,39098,39099,39103,39106,39109,
-39112,39116,39137,39139,39141,39142,39143,39146,39155,39158,39170,39175,39176,
-39185,39189,39190,39191,39194,39195,39196,39199,39202,39206,39207,39211,39217,
-39218,39219,39220,39221,39225,39226,39227,39228,39232,39233,39238,39239,39240,
-39245,39246,39252,39256,39257,39259,39260,39262,39263,39264,39323,39325,39327,
-39334,39344,39345,39346,39349,39353,39354,39357,39359,39363,39369,39379,39380,
-39385,39386,39388,39390,39399,39402,39403,39404,39408,39412,39413,39417,39421,
-39422,39426,39427,39428,39435,39436,39440,39441,39446,39454,39456,39458,39459,
-39460,39463,39469,39470,39475,39477,39478,39480,39495,39489,39492,39498,39499,
-39500,39502,39505,39508,39510,39517,39594,39596,39598,39599,39602,39604,39605,
-39606,39609,39611,39614,39615,39617,39619,39622,39624,39630,39632,39634,39637,
-39638,39639,39643,39644,39648,39652,39653,39655,39657,39660,39666,39667,39669,
-39673,39674,39677,39679,39680,39681,39682,39683,39684,39685,39688,39689,39691,
-39692,39693,39694,39696,39698,39702,39705,39707,39708,39712,39718,39723,39725,
-39731,39732,39733,39735,39737,39738,39741,39752,39755,39756,39765,39766,39767,
-39771,39774,39777,39779,39781,39782,39784,39786,39787,39788,39789,39790,39795,
-39797,39799,39800,39801,39807,39808,39812,39813,39814,39815,39817,39818,39819,
-39821,39823,39824,39828,39834,39837,39838,39846,39847,39849,39852,39856,39857,
-39858,39863,39864,39867,39868,39870,39871,39873,39879,39880,39886,39888,39895,
-39896,39901,39903,39909,39911,39914,39915,39919,39923,39927,39928,39929,39930,
-39933,39935,39936,39938,39947,39951,39953,39958,39960,39961,39962,39964,39966,
-39970,39971,39974,39975,39976,39977,39978,39985,39989,39990,39991,39997,40001,
-40003,40004,40005,40009,40010,40014,40015,40016,40019,40020,40022,40024,40027,
-40029,40030,40031,40035,40041,40042,40028,40043,40040,40046,40048,40050,40053,
-40055,40059,40166,40178,40183,40185,40203,40194,40209,40215,40216,40220,40221,
-40222,40239,40240,40242,40243,40244,40250,40252,40261,40253,40258,40259,40263,
-40266,40275,40276,40287,40291,40290,40293,40297,40298,40299,40304,40310,40311,
-40315,40316,40318,40323,40324,40326,40330,40333,40334,40338,40339,40341,40342,
-40343,40344,40353,40362,40364,40366,40369,40373,40377,40380,40383,40387,40391,
-40393,40394,40404,40405,40406,40407,40410,40414,40415,40416,40421,40423,40425,
-40427,40430,40432,40435,40436,40446,40458,40450,40455,40462,40464,40465,40466,
-40469,40470,40473,40476,40477,40570,40571,40572,40576,40578,40579,40580,40581,
-40583,40590,40591,40598,40600,40603,40606,40612,40616,40620,40622,40623,40624,
-40627,40628,40629,40646,40648,40651,40661,40671,40676,40679,40684,40685,40686,
-40688,40689,40690,40693,40696,40703,40706,40707,40713,40719,40720,40721,40722,
-40724,40726,40727,40729,40730,40731,40735,40738,40742,40746,40747,40751,40753,
-40754,40756,40759,40761,40762,40764,40765,40767,40769,40771,40772,40773,40774,
-40775,40787,40789,40790,40791,40792,40794,40797,40798,40808,40809,40813,40814,
-40815,40816,40817,40819,40821,40826,40829,40847,40848,40849,40850,40852,40854,
-40855,40862,40865,40866,40867,40869,
-};
-
-static const struct dbcs_index jisx0212_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__jisx0212_decmap+0,47,113},{0,0,0},{
-0,0,0},{0,0,0},{__jisx0212_decmap+67,97,124},{__jisx0212_decmap+95,66,126},{0,
-0,0},{__jisx0212_decmap+156,33,80},{__jisx0212_decmap+204,33,119},{
-__jisx0212_decmap+291,33,119},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-__jisx0212_decmap+378,33,126},{__jisx0212_decmap+472,33,126},{
-__jisx0212_decmap+566,33,126},{__jisx0212_decmap+660,33,126},{
-__jisx0212_decmap+754,33,126},{__jisx0212_decmap+848,33,126},{
-__jisx0212_decmap+942,33,126},{__jisx0212_decmap+1036,33,126},{
-__jisx0212_decmap+1130,33,126},{__jisx0212_decmap+1224,33,126},{
-__jisx0212_decmap+1318,33,126},{__jisx0212_decmap+1412,33,126},{
-__jisx0212_decmap+1506,33,126},{__jisx0212_decmap+1600,33,126},{
-__jisx0212_decmap+1694,33,126},{__jisx0212_decmap+1788,33,126},{
-__jisx0212_decmap+1882,33,126},{__jisx0212_decmap+1976,33,126},{
-__jisx0212_decmap+2070,33,126},{__jisx0212_decmap+2164,33,126},{
-__jisx0212_decmap+2258,33,126},{__jisx0212_decmap+2352,33,126},{
-__jisx0212_decmap+2446,33,126},{__jisx0212_decmap+2540,33,126},{
-__jisx0212_decmap+2634,33,126},{__jisx0212_decmap+2728,33,126},{
-__jisx0212_decmap+2822,33,126},{__jisx0212_decmap+2916,33,126},{
-__jisx0212_decmap+3010,33,126},{__jisx0212_decmap+3104,33,126},{
-__jisx0212_decmap+3198,33,126},{__jisx0212_decmap+3292,33,126},{
-__jisx0212_decmap+3386,33,126},{__jisx0212_decmap+3480,33,126},{
-__jisx0212_decmap+3574,33,126},{__jisx0212_decmap+3668,33,126},{
-__jisx0212_decmap+3762,33,126},{__jisx0212_decmap+3856,33,126},{
-__jisx0212_decmap+3950,33,126},{__jisx0212_decmap+4044,33,126},{
-__jisx0212_decmap+4138,33,126},{__jisx0212_decmap+4232,33,126},{
-__jisx0212_decmap+4326,33,126},{__jisx0212_decmap+4420,33,126},{
-__jisx0212_decmap+4514,33,126},{__jisx0212_decmap+4608,33,126},{
-__jisx0212_decmap+4702,33,126},{__jisx0212_decmap+4796,33,126},{
-__jisx0212_decmap+4890,33,126},{__jisx0212_decmap+4984,33,126},{
-__jisx0212_decmap+5078,33,126},{__jisx0212_decmap+5172,33,126},{
-__jisx0212_decmap+5266,33,126},{__jisx0212_decmap+5360,33,126},{
-__jisx0212_decmap+5454,33,126},{__jisx0212_decmap+5548,33,126},{
-__jisx0212_decmap+5642,33,126},{__jisx0212_decmap+5736,33,126},{
-__jisx0212_decmap+5830,33,126},{__jisx0212_decmap+5924,33,126},{
-__jisx0212_decmap+6018,33,126},{__jisx0212_decmap+6112,33,99},{0,0,0},{0,0,0},
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-};
-
-static const DBCHAR __jisxcommon_encmap[22016] = {
-8512,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41527,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41538,
-8561,8562,41584,N,41539,8568,8495,41581,41580,N,8780,N,41582,41524,8555,8542,
-N,N,8493,N,8825,N,41521,N,41579,N,N,N,N,41540,43554,43553,43556,43562,43555,
-43561,43297,43566,43570,43569,43572,43571,43584,43583,43586,43585,N,43600,
-43602,43601,43604,43608,43603,8543,43308,43619,43618,43621,43620,43634,43312,
-43342,43810,43809,43812,43818,43811,43817,43329,43822,43826,43825,43828,43827,
-43840,43839,43842,43841,43331,43856,43858,43857,43860,43864,43859,8544,43340,
-43875,43874,43877,43876,43890,43344,43891,43559,43815,43557,43813,43560,43816,
-43563,43819,43564,43820,43567,43823,43565,43821,43568,43824,43298,43330,43575,
-43831,N,N,43574,43830,43576,43832,43573,43829,43578,43834,43579,43835,43581,
-43837,43580,N,43582,43838,43300,43332,43591,43847,43589,43845,N,N,43590,43846,
-43588,43333,43302,43334,43592,43848,43593,43849,43335,43594,43850,43596,43852,
-43595,43851,43305,43337,43304,43336,43597,43853,43599,43855,43598,43854,43338,
-43307,43339,43607,43863,N,N,43606,43862,43309,43341,43609,43865,43611,43867,
-43610,43866,43612,43868,43613,43869,43615,43871,43614,43870,43617,43873,43616,
-43872,43311,43343,43628,43884,43625,43881,43622,43878,43627,43883,43624,43880,
-43626,43882,43633,43889,43636,43892,43635,43637,43893,43639,43895,43638,43894,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-43558,43814,43587,43843,43605,43861,43623,43879,43632,43888,43629,43885,43631,
-43887,43630,43886,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,43833,41520,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41519,41522,41526,41525,N,41523,41528,41529,
-42593,N,42594,42595,42596,N,42599,N,42601,42604,42614,9761,9762,9763,9764,
-9765,9766,9767,9768,9769,9770,9771,9772,9773,9774,9775,9776,9777,N,9778,9779,
-9780,9781,9782,9783,9784,42597,42602,42609,42610,42611,42612,42619,9793,9794,
-9795,9796,9797,9798,9799,9800,9801,9802,9803,9804,9805,9806,9807,9808,9809,
-42616,9810,9811,9812,9813,9814,9815,9816,42613,42618,42615,42617,42620,10023,
-42818,42819,42820,42821,42822,42823,42824,42825,42826,42827,42828,N,42829,
-42830,10017,10018,10019,10020,10021,10022,10024,10025,10026,10027,10028,10029,
-10030,10031,10032,10033,10034,10035,10036,10037,10038,10039,10040,10041,10042,
-10043,10044,10045,10046,10047,10048,10049,10065,10066,10067,10068,10069,10070,
-10072,10073,10074,10075,10076,10077,10078,10079,10080,10081,10082,10083,10084,
-10085,10086,10087,10088,10089,10090,10091,10092,10093,10094,10095,10096,10097,
-N,10071,42866,42867,42868,42869,42870,42871,42872,42873,42874,42875,42876,N,
-42877,42878,8510,N,N,N,N,8509,8514,N,8518,8519,N,N,8520,8521,N,N,8823,8824,N,
-N,N,8517,8516,N,N,N,N,N,N,N,N,N,8819,N,8556,8557,N,N,N,N,N,N,N,8744,8558,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41585,N,N,N,N,N,N,N,N,N,N,N,41583,N,N,N,N,N,N,
-N,N,8818,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8747,8748,8746,8749,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8781,N,8782,8783,N,8799,8784,N,N,N,
-8800,8762,N,N,8763,N,N,N,N,N,N,8541,N,N,N,N,N,N,N,8805,N,N,8807,8551,N,8796,N,
-N,N,N,N,N,8778,8779,8769,8768,8809,8810,N,N,N,N,N,N,N,8552,8808,N,N,N,N,N,N,N,
-8806,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8802,N,N,N,N,N,N,N,N,N,N,N,N,N,
-8546,8801,N,N,N,N,8549,8550,N,N,8803,8804,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,8766,8767,N,N,8764,8765,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,8797,8798,10273,10284,10274,10285,N,N,N,N,N,N,N,N,10275,N,N,10286,
-10276,N,N,10287,10278,N,N,10289,10277,N,N,10288,10279,10300,N,N,10295,N,N,
-10290,10281,10302,N,N,10297,N,N,10292,10280,N,N,10296,10301,N,N,10291,10282,N,
-N,10298,10303,N,N,10293,10283,N,N,10299,N,N,10304,N,N,N,N,N,N,N,N,10294,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,8739,8738,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8741,8740,N,N,N,N,N,N,N,N,
-8743,8742,N,N,N,N,N,N,N,N,8737,8574,N,N,N,8571,N,N,8573,8572,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8830,8570,8569,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,8554,N,8553,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8822,N,N,8821,N,8820,8481,8482,8483,8503,N,
-8505,8506,8507,8530,8531,8532,8533,8534,8535,8536,8537,8538,8539,8745,8750,
-8524,8525,N,N,N,N,N,N,8513,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,9249,9250,9251,9252,9253,9254,9255,9256,9257,9258,9259,
-9260,9261,9262,9263,9264,9265,9266,9267,9268,9269,9270,9271,9272,9273,9274,
-9275,9276,9277,9278,9279,9280,9281,9282,9283,9284,9285,9286,9287,9288,9289,
-9290,9291,9292,9293,9294,9295,9296,9297,9298,9299,9300,9301,9302,9303,9304,
-9305,9306,9307,9308,9309,9310,9311,9312,9313,9314,9315,9316,9317,9318,9319,
-9320,9321,9322,9323,9324,9325,9326,9327,9328,9329,9330,9331,N,N,N,N,N,N,N,
-8491,8492,8501,8502,N,N,9505,9506,9507,9508,9509,9510,9511,9512,9513,9514,
-9515,9516,9517,9518,9519,9520,9521,9522,9523,9524,9525,9526,9527,9528,9529,
-9530,9531,9532,9533,9534,9535,9536,9537,9538,9539,9540,9541,9542,9543,9544,
-9545,9546,9547,9548,9549,9550,9551,9552,9553,9554,9555,9556,9557,9558,9559,
-9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,
-9575,9576,9577,9578,9579,9580,9581,9582,9583,9584,9585,9586,9587,9588,9589,
-9590,N,N,N,N,8486,8508,8499,8500,12396,17274,45089,15415,45090,45091,N,19324,
-15974,15152,15973,12860,45092,18772,19775,N,20514,12591,45093,N,13166,20515,
-16420,21058,13654,19002,N,N,N,N,15975,45094,N,20030,N,45095,45096,N,19010,N,
-45097,N,20516,45098,N,17254,45099,45100,45101,20517,13946,N,N,45102,20518,N,
-13405,17200,N,15463,20519,N,N,20520,45103,45104,20521,18229,45105,13655,N,
-45106,N,N,N,18231,N,18019,14403,19251,N,45107,N,N,N,26953,20522,15976,20523,
-12853,45108,N,45109,13925,14448,19561,N,N,22054,45110,N,N,N,N,45111,45112,N,N,
-N,N,N,N,N,19824,N,18045,45113,45114,N,N,N,45115,N,N,N,N,13349,45116,13621,N,
-20524,N,N,20525,20027,N,19773,16744,20527,15222,18035,45117,20530,N,N,12606,
-14431,N,14430,12390,45118,45119,20299,20298,N,14899,12321,45120,20531,20532,
-20533,19252,20534,N,14450,12391,19314,N,13692,N,N,13693,13694,17506,20028,
-45121,20535,N,N,20536,N,N,20537,N,N,45122,16205,N,N,N,N,N,15674,16206,20542,
-45123,20540,N,20541,13656,N,N,14883,12912,N,20539,20538,18985,45124,N,N,N,
-15174,15173,16958,20543,18773,16487,45125,45126,N,8504,20544,20546,45127,
-45128,45129,16997,20065,12362,N,N,45130,N,N,N,N,20545,12862,45131,13892,45132,
-17255,45133,N,45134,14191,20547,N,N,N,18212,N,45135,45136,45137,45138,13419,
-45139,45140,N,N,N,N,45141,20548,12363,45142,45143,14432,13420,18810,18482,
-13657,45144,N,N,45145,45146,45147,N,45148,12913,N,20583,17729,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,45149,18284,20550,45150,N,45152,18492,45153,20066,45154,16173,
-45155,15175,45156,15223,12864,45157,N,45158,N,45159,17489,N,N,17186,20554,
-45160,45161,N,45162,45163,12364,17507,15675,14900,19748,45164,16974,45165,
-12863,45166,20553,45167,19774,20549,20551,14958,20552,21796,45168,45151,N,N,
-45169,N,N,N,N,N,20560,45170,N,45171,N,45172,20563,20561,45173,N,12866,N,19003,
-20555,45174,45175,45176,45177,20559,14451,45178,45179,15176,N,45180,45181,
-13350,45182,45345,20564,N,20556,45346,45347,20067,45348,15224,45349,20557,
-45350,20562,45351,45352,45353,N,20565,45354,20558,45355,45356,13857,N,12365,
-45357,45358,13858,12865,N,N,N,N,N,N,N,N,N,21797,N,19321,18798,14452,N,N,45359,
-N,N,16175,20023,45360,N,45361,N,45362,45363,45364,45365,19032,45366,45367,
-14136,16933,12900,45368,45369,N,45370,45371,15699,45372,45373,45374,20569,
-45375,20574,20572,45376,N,20567,N,N,16943,20570,N,20573,20571,45377,19037,N,
-20568,45378,16174,45379,19315,20575,20576,N,N,N,N,N,N,N,N,15652,20589,45380,N,
-45381,18256,N,18742,20584,N,19056,N,12854,N,45382,45383,20588,45384,45385,
-45386,N,N,45387,20582,20591,45388,N,16722,45389,14404,45390,18268,45391,24647,
-45392,20590,17757,45393,20579,N,14454,45394,45395,14453,20577,45396,45397,
-45398,45399,15450,N,20585,45400,19055,17229,20581,14193,45401,20578,20586,
-20580,20049,20587,20289,45402,N,45403,N,45404,45405,N,45406,13926,N,N,14192,N,
-45430,N,N,N,N,45407,45408,45409,20592,N,45410,45411,20593,20597,12366,45412,N,
-45413,N,45414,19024,20596,45415,45416,45417,N,20595,20599,45418,N,45419,20598,
-N,17508,N,N,45420,45421,N,45422,45423,N,14194,45424,45425,N,N,45426,N,20600,
-45427,N,N,45428,45429,15429,N,16934,17509,13942,N,20601,N,N,N,N,13622,N,N,
-20602,45431,N,45432,45433,20604,45434,N,N,N,45435,N,N,19253,45436,45437,45438,
-14182,45601,45602,45603,N,45604,N,15153,18551,20603,45605,45606,N,45607,45608,
-45609,45610,45611,N,N,N,N,N,N,N,45612,N,14917,19779,N,45613,45614,N,20606,
-20771,20605,14916,N,15741,N,45615,45616,N,N,45617,14137,N,45618,N,20772,45619,
-45620,13903,N,45621,N,20769,20770,N,45622,17967,45623,16764,45624,13859,N,
-45625,45626,19277,20773,N,45627,N,20029,N,45628,45629,20774,45630,N,N,45631,
-20777,45632,20775,45633,16718,45634,45635,N,N,N,20776,20778,45636,N,45637,
-45649,N,N,20780,45638,N,N,20779,45639,19016,N,N,45640,13623,20782,20783,45641,
-12847,N,45642,45643,45644,20781,N,45645,45646,45647,45648,N,45650,N,15476,N,
-20786,20785,20784,45651,20566,45652,20787,45653,45654,45655,45656,15742,N,
-20788,N,45657,N,N,N,45658,45659,N,19749,N,45660,45661,N,45662,N,45663,19545,
-45664,45665,45666,N,20790,45667,45668,20789,20792,20791,N,N,20793,20794,12404,
-45669,14389,14139,15676,17275,13860,16488,14455,45670,14702,20796,19528,17734,
-45671,15225,N,20795,45672,20797,45673,N,45674,45675,N,17758,N,13173,N,N,45676,
-N,N,20798,N,45677,18046,45678,N,16692,20800,20801,18476,14456,20283,20802,N,N,
-13862,N,N,N,19004,16950,13937,17717,N,N,N,14195,N,45679,N,20803,N,20804,45680,
-45681,18018,12639,N,N,20807,14973,45682,20806,14918,45683,20808,26222,20809,
-19265,20810,N,20811,20812,15977,45684,15436,N,N,N,45685,N,N,13351,45686,20815,
-45687,20813,19517,20814,N,18778,20816,20817,20818,17759,45688,N,N,20822,20820,
-20821,20819,14947,20823,19562,20068,45689,N,45690,N,45691,20824,45692,45693,N,
-N,45694,N,16424,20825,15706,N,45857,20826,N,17276,20031,17760,N,45858,N,45859,
-45860,45861,N,45862,21061,N,45863,N,N,20827,29733,13893,45864,N,20828,19294,
-45865,N,N,45866,15720,17020,N,20830,18020,N,N,20831,45867,N,20832,13102,45868,
-45869,45870,20833,13863,45871,17996,12666,15696,N,N,18465,20834,17761,45872,
-45873,16207,20835,45874,18988,16474,13346,N,13353,20836,N,N,20838,N,N,14138,
-45875,45876,20837,45877,45878,20083,45879,N,N,N,N,15721,N,N,N,N,45880,N,18493,
-19020,N,20839,45881,19832,20840,N,N,N,20841,N,17790,45882,45883,20842,N,45884,
-16425,14974,14196,20843,15177,14703,45885,N,N,N,N,N,N,17510,20845,45886,N,
-16935,N,45887,14959,20846,20847,16688,N,20844,N,N,N,N,20849,45888,19254,45889,
-45890,N,45891,14692,45892,N,20848,45893,45894,45895,N,14197,14942,18285,45896,
-N,N,20852,20850,N,N,N,45897,18811,15978,20859,13156,20853,20851,16719,N,45898,
-45899,45900,N,N,N,20855,N,20854,45901,N,45902,13124,N,45903,N,14176,20860,
-20013,45904,N,45905,20856,N,N,N,20861,20858,45906,20857,45907,45908,45909,
-45910,N,45911,20047,45912,N,N,14457,12867,N,N,20084,45913,45914,45915,45916,N,
-15733,17752,14693,21026,21027,N,45917,45918,20069,N,N,20267,21029,45919,45920,
-45921,14458,45922,45923,21028,45924,13103,N,45925,21030,N,19286,45926,17468,
-45927,19750,45928,19033,N,N,45929,21031,N,45930,N,45931,28757,N,45932,17968,
-45933,21032,13354,19507,N,45934,45935,15905,21033,19047,21037,45936,16426,
-21034,13904,45937,21035,13355,45938,45939,45940,N,45941,N,N,N,45942,45943,
-14126,21038,45944,21039,45945,45946,21040,21041,15451,N,N,N,14459,19550,45947,
-19560,18039,45948,N,19057,21042,N,21043,N,45949,45950,46113,21045,N,21047,
-21046,46114,N,46115,N,21048,12861,19276,46116,14972,21049,46117,46118,16729,
-46119,46120,15906,13865,N,21050,N,46121,N,46122,46123,46124,18523,46125,46126,
-46127,N,21051,46128,21052,46129,21053,N,46130,N,N,21054,18724,13928,12389,
-46131,46132,46133,17983,21055,15677,46134,16489,N,21057,21056,15907,14433,
-21059,18494,46136,46135,21060,N,N,N,18524,16948,17006,13864,N,N,18030,17201,
-46137,18286,46138,19278,N,21062,N,16490,46139,N,46140,N,46141,14133,N,N,21063,
-N,N,46142,46143,21064,12588,12405,13421,46144,16936,13649,19825,N,21067,12855,
-46145,N,21066,N,N,46146,13866,N,N,21068,46147,19569,N,N,46148,46149,N,N,N,N,N,
-46150,N,N,N,N,46151,46152,N,21069,N,20050,46153,14460,N,N,46154,N,14390,21070,
-46155,N,N,46156,21072,21071,N,16223,12601,46157,46158,N,12638,21073,46159,
-21074,N,46160,14391,46161,46162,21075,46163,46164,N,46165,13678,N,46166,N,N,
-46167,N,15154,21076,N,46168,N,N,19316,14901,13658,19751,16720,18495,15485,
-46169,N,N,46170,46171,15687,46172,15464,15477,N,15734,46173,18496,N,46174,
-46175,21079,46176,12611,16721,14461,14405,13927,46177,46178,21083,17185,17022,
-13867,15908,21084,21082,12868,16998,15416,15179,12582,N,46179,13168,14694,
-15178,N,21085,21086,46180,13641,13126,N,N,N,14695,13640,17503,12581,17969,
-19518,14625,19833,17735,14462,N,46181,N,N,N,N,N,N,46182,14127,N,21095,N,13923,
-19274,46183,N,N,N,N,18525,46184,46185,21094,46186,13406,21089,21090,21092,
-46187,N,46188,N,N,46189,46190,21093,N,13659,16225,N,18989,21091,21087,14435,N,
-21088,N,20260,46191,46192,N,19058,46193,17512,14434,14704,N,N,46194,21096,
-46195,N,18013,N,N,N,N,N,N,N,N,N,N,N,N,46196,21100,N,N,46197,N,46198,N,46199,
-46200,15486,46201,15478,46202,N,46203,46204,N,21103,21101,N,19491,46205,21098,
-21107,21102,N,N,N,21105,14406,19519,N,46206,21106,46369,N,46370,21108,46371,
-21110,N,46372,46373,N,14960,20290,46374,21099,21097,21109,46375,21104,N,N,
-46376,46377,N,N,N,N,N,46378,N,N,46379,N,46380,21112,N,21283,21114,46381,46382,
-21118,46383,46384,21281,21115,46385,46386,21310,N,46387,14953,13105,N,N,N,
-46388,21113,46389,46390,46391,21285,12406,21284,46392,12325,18762,21282,N,
-21116,N,46393,21111,21117,14920,46394,N,N,46395,46396,N,N,N,N,N,N,N,N,N,21286,
-N,N,N,N,N,N,N,46397,12407,21295,N,N,21287,21288,N,15909,19305,46398,N,46399,
-21293,21292,46400,N,N,17711,N,N,N,46401,N,N,N,21294,N,46402,21291,46403,46404,
-46405,46406,N,N,12596,46407,14902,16176,46408,46409,N,N,46410,46411,46412,
-21289,17762,N,N,N,21290,46413,12322,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-46414,46415,N,N,21300,19747,N,15911,46416,21306,N,46417,46418,N,21305,21296,N,
-46419,46420,46421,16963,N,21297,46422,N,N,17007,21302,15910,46423,N,46424,
-46425,N,21299,46426,N,19556,46427,46428,N,14140,N,N,21303,21304,46429,N,46430,
-46431,21301,21307,46432,N,46433,46434,N,21298,46435,N,46436,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,21313,21318,N,21314,46437,21309,46438,46439,21319,16689,
-N,46440,21321,46441,14626,21311,17277,N,N,46442,46443,N,46444,46445,46446,
-46447,N,N,46448,21315,21308,13357,N,13422,13157,21316,21312,N,N,N,46449,46450,
-N,N,14198,21322,21320,16723,13642,13868,46451,21317,N,13940,N,46452,N,N,N,
-12612,N,N,N,N,N,N,N,N,46453,N,46454,N,46455,21326,21324,46456,21543,N,46457,N,
-46458,46459,N,46460,N,N,46461,46462,46625,21329,N,N,46626,46627,N,21323,46628,
-21327,N,46629,21325,N,N,46630,15180,21328,N,N,N,N,46631,N,N,N,N,N,N,N,N,N,N,N,
-N,46632,21331,N,21336,N,N,N,21334,21333,46633,46634,17202,N,46635,12869,46636,
-N,N,46637,46638,46639,46640,46641,46642,N,21330,N,21332,15912,12595,46643,N,
-21335,N,N,N,N,N,N,N,N,N,N,N,N,N,12894,N,N,46644,N,N,21346,46645,15996,21342,
-46646,21340,46647,21341,46648,21343,46649,N,46650,46651,46652,N,46653,46654,
-46655,12605,46656,46657,N,46658,N,N,46659,N,46660,16697,46661,21337,46662,
-21338,N,N,N,46663,N,N,N,N,N,N,13178,N,N,46664,N,46665,46666,46667,46668,21345,
-N,46669,N,13423,46670,21348,21344,21347,46671,N,46672,N,46673,46674,N,18990,
-46675,N,N,18005,N,18488,N,N,N,N,N,21350,N,N,N,46676,46677,21349,13125,46678,N,
-21351,46679,46680,N,N,21354,N,N,N,N,21353,46681,N,N,N,46682,46683,N,N,46684,
-46685,46686,21352,N,18233,N,N,21355,46687,46688,46689,46690,N,46691,46692,
-46693,21356,N,N,46694,N,46695,21358,N,21357,46696,N,N,N,N,21360,N,46697,N,
-21363,21361,21359,21362,N,46698,N,N,21364,46699,46700,46701,46704,46705,21365,
-46702,46703,21366,N,21367,N,N,N,21368,20805,46706,15484,15181,46707,46708,
-12915,46709,12408,46710,N,17220,46711,46712,46713,46714,46715,N,N,46717,N,
-46718,21369,N,14884,46716,12367,16222,N,N,46881,46882,N,21370,14407,N,N,14705,
-N,21372,21371,46883,46884,19040,21373,N,N,46885,21537,21374,46886,21538,46887,
-21539,N,14199,N,46888,12640,21540,N,46889,21542,N,21541,N,46890,46891,21544,
-46892,N,17754,46893,N,46894,46895,46896,46897,21545,12341,14943,46898,46899,N,
-46900,14141,46901,46902,17231,N,N,46903,46904,N,N,21546,21547,N,N,21549,N,
-46905,46906,46907,21550,N,14948,N,N,46908,46909,13905,N,N,19255,N,46910,46911,
-21548,21551,14913,14627,46912,N,N,N,N,N,N,N,N,N,N,N,N,N,N,21555,46913,N,14885,
-46914,17203,46915,46916,21552,17498,46917,N,46918,46919,46920,46921,46922,N,
-46923,46924,46925,N,46926,N,46927,46928,46929,46930,N,46931,21556,N,46932,
-16226,46933,N,N,N,N,21554,21557,N,14143,46934,N,N,N,N,N,N,21558,46935,46944,N,
-46936,N,46937,46938,N,46939,46940,46941,46942,21559,46943,14628,13120,21561,N,
-N,46945,46946,46947,21562,N,46948,N,N,N,21563,N,N,21560,N,N,N,N,46949,N,N,N,N,
-46950,N,N,21553,N,N,21564,N,N,21565,46951,46952,N,N,19300,46953,N,15979,46954,
-N,N,21567,21568,21566,46955,21570,N,N,N,N,N,18232,46956,46957,12392,18774,
-46974,N,21571,46958,N,46959,46960,N,46961,N,N,N,46962,N,N,46963,N,N,N,15997,
-46964,46965,15417,46966,18269,13424,N,14955,46967,46968,46969,19289,N,17970,
-46970,46971,14200,16975,N,46972,46973,21569,21572,47137,47138,N,N,N,N,N,N,N,
-16964,N,N,N,21573,N,47139,N,21574,47140,47141,47142,21576,N,N,17513,N,47143,
-47144,N,N,13358,N,N,47145,N,29729,12641,19059,47146,N,15980,17736,N,N,N,47147,
-14950,N,N,21582,N,47148,19005,20061,N,N,N,N,N,N,N,47149,12916,21578,47150,
-47151,N,47152,47153,16698,21581,N,17763,47154,N,17737,17764,18489,17485,N,N,N,
-14921,47155,N,47156,21577,N,47157,N,N,47158,47159,12662,N,17718,N,N,N,N,21579,
-N,21575,N,N,16208,N,N,47160,21583,N,N,47161,N,15694,47162,47163,47164,N,13869,
-N,21584,N,47165,47166,47167,47168,N,47169,47170,N,47171,47172,N,N,19048,47173,
-N,47174,16765,N,N,N,N,17478,47175,N,21586,47176,47177,47178,N,N,N,47179,N,
-19279,47180,N,21587,N,N,21592,N,N,47181,47182,18991,N,N,N,N,21591,21585,21588,
-21590,47184,N,14886,N,N,19017,47185,N,47183,21593,N,17221,47186,N,12917,N,
-15981,47187,47188,N,47189,21595,47190,21594,47191,14696,47192,21596,21598,
-21597,47193,N,21600,47194,21589,21602,N,47195,47196,N,21601,21599,N,N,N,47197,
-N,15182,16209,N,16724,21603,16444,12397,18276,47198,N,N,N,17499,N,21605,21604,
-21606,21607,21608,21609,N,N,47199,47200,N,N,19025,21610,47201,47202,N,N,12870,
-21611,N,47203,47204,47205,19772,13104,N,21065,15688,16959,21612,19563,47207,N,
-N,N,47208,19508,47209,47210,21614,N,16999,47211,17719,16960,18775,21615,21616,
-12667,47212,47213,15418,21617,47214,N,47215,47216,12368,21618,N,N,N,N,N,21619,
-47217,N,N,N,47218,12642,N,47219,13425,18016,19060,N,N,N,N,21623,16725,21622,
-14144,47220,47221,19291,21621,N,17765,21625,47222,21624,47223,N,47224,47225,
-47226,21627,47227,21626,47228,N,12668,N,21628,15913,21630,17189,47229,21629,
-47230,18995,47393,N,N,47394,15735,17755,47395,47396,N,21793,47397,N,47398,
-47399,14629,N,N,N,21794,18209,18526,19537,N,N,N,N,N,18213,47400,47401,21803,
-47402,N,N,N,47403,13624,N,47404,19781,47405,N,19503,N,22060,N,21795,N,47406,N,
-N,N,21798,47407,16965,N,47408,19256,N,N,N,17738,47409,47410,47411,47412,N,
-21799,47413,N,N,N,47414,N,19301,47415,14922,47416,N,15914,N,N,47417,N,47418,
-47419,N,21800,N,47420,15184,47421,15183,N,47422,N,N,12345,14408,47423,16427,
-12369,N,N,N,N,21804,21805,N,21802,47424,47425,47426,N,N,N,47427,47428,12600,
-13359,47429,21801,N,19525,18737,N,N,47430,47431,N,47432,47433,N,47434,N,12328,
-47435,N,N,N,12409,N,N,N,15185,47436,12370,N,12323,47437,N,N,N,N,21810,N,N,
-47438,47439,47440,N,N,21808,47441,47442,N,N,N,N,19516,N,21811,N,21809,N,47443,
-21807,16177,N,N,47444,47445,21806,N,47446,47447,19034,47448,N,N,47449,N,14436,
-47450,N,N,N,N,21815,21816,N,N,N,N,N,15915,N,N,N,21812,20268,N,N,47451,47452,
-18252,47453,47454,21814,N,N,47455,N,N,N,47456,N,N,N,N,47457,N,N,N,N,14887,N,N,
-N,47458,N,N,N,21817,47459,N,47460,18776,47461,N,N,21818,N,21813,47462,N,N,N,N,
-N,N,N,N,N,47463,N,N,47464,47465,N,N,47466,19515,N,N,N,N,N,N,N,N,N,N,N,47467,N,
-N,N,N,47468,N,18270,47469,N,N,47470,N,N,47471,21819,18738,47472,N,47473,47474,
-47475,N,47476,N,N,N,N,47477,N,N,N,N,47478,N,N,N,N,47479,47480,47481,N,47482,N,
-N,47483,N,47484,47485,21820,21824,21821,47486,N,12871,21823,N,47649,N,47650,N,
-47651,15419,N,21822,14201,N,N,47652,21836,N,N,N,N,N,21829,21826,N,N,47653,N,
-47654,N,N,N,47655,17252,N,21825,N,47656,21827,N,N,21828,47657,N,N,N,47658,N,N,
-N,N,N,N,47659,47660,N,N,N,21830,21831,N,47661,47662,47663,N,N,N,N,N,N,47664,
-13426,N,21833,21832,N,N,N,N,N,N,N,N,N,21834,47665,N,47667,N,47668,N,47669,N,N,
-N,47670,15982,N,N,47671,N,N,N,N,21837,N,17500,47672,N,N,12613,N,21835,N,47666,
-N,21838,N,47673,N,N,N,N,N,21839,N,21842,47674,N,21840,N,21841,N,N,N,N,N,47675,
-47676,N,N,N,15186,21843,47677,N,14630,21844,47678,15226,16952,N,21845,21846,
-15194,14631,47679,19538,N,N,N,13608,14409,21847,13144,N,47680,21848,N,16953,N,
-N,47681,47682,21849,22051,N,21850,N,21851,N,N,21852,N,21854,N,47683,47684,
-47685,47686,21855,47687,N,21856,47688,17008,47689,12583,15465,12354,47690,
-16727,13360,15413,47691,14632,47692,47693,N,47694,47695,17766,47696,15649,
-13361,17256,17514,12344,13625,19061,N,15426,N,N,13650,16491,15420,19752,21857,
-N,47697,47698,N,N,47699,47700,13660,47701,14923,47702,47703,13106,12643,15916,
-12872,47704,21858,19782,47705,N,47706,N,N,15689,47707,47708,15460,21859,13427,
-18002,19497,21860,N,21861,N,N,18777,47709,N,47710,21863,N,13352,13943,21862,N,
-47711,47712,47713,47714,47715,13362,N,16178,21867,15137,47716,12873,21866,N,
-21864,21868,21865,18219,23629,16179,N,21869,N,N,20032,47717,21870,47718,N,
-21872,47719,17278,21871,N,16419,N,15227,N,N,47720,16976,15479,18805,16492,N,
-15437,21873,15917,21874,21875,12371,16954,16210,47721,21876,17971,15918,N,
-15919,N,21877,N,N,16493,47722,N,N,15920,N,N,N,47723,47724,21878,N,21879,47725,
-19552,N,47726,N,21880,47727,N,47728,47729,13894,47730,N,47731,15650,47732,N,N,
-47733,47734,N,21881,21882,15452,16172,18036,16212,18552,18210,13897,21883,N,N,
-N,13679,21884,N,13950,N,17999,12848,N,15187,21885,22050,22049,13949,N,21886,N,
-17720,N,N,N,47735,47736,N,47737,N,16944,N,17739,15432,47738,47739,16728,19834,
-N,47740,47741,47742,N,N,22052,47905,22053,18006,47906,15155,N,N,47907,47908,
-22055,N,N,22056,47909,47910,47911,47912,N,N,N,N,N,N,N,N,N,47913,47914,N,47915,
-N,22057,N,N,47916,13428,22058,47917,N,22059,N,N,N,N,N,N,N,N,47918,N,47919,
-47920,12844,47921,47922,N,N,47923,N,16699,13412,47924,22061,19496,N,N,N,N,
-16978,47925,13145,47926,47927,22063,22065,13407,N,47928,22062,22064,N,22067,N,
-N,N,N,N,N,22066,N,22068,N,47929,N,47930,N,N,N,N,N,N,47931,N,N,N,N,47933,N,
-22069,N,N,N,47932,N,N,17981,13870,N,N,N,N,N,N,12901,22070,22075,N,N,22073,
-47934,19063,19062,47935,47936,N,47937,N,17767,N,N,N,22072,15700,N,22071,47938,
-N,N,N,N,47939,16242,N,N,N,22076,N,47940,14954,N,N,22082,47941,N,22083,22077,
-13107,22078,22087,22086,22085,22081,N,N,N,22080,N,N,22084,47943,47944,N,47945,
-47946,N,19064,N,47942,N,N,N,N,N,47947,N,N,47948,N,N,N,N,47949,N,N,N,47950,N,
-47951,N,N,47952,47953,N,N,47954,N,47955,N,47959,22091,22088,N,22090,N,19826,
-47957,22089,N,N,47956,N,N,N,47958,N,N,22079,N,N,47960,47961,47962,47963,N,
-47964,N,N,N,N,16243,47965,N,22092,47966,N,14903,47967,N,N,22093,N,N,22094,N,N,
-47968,47969,N,N,N,47970,47971,N,47972,22097,47973,22096,N,N,22095,47974,N,
-47975,17768,22074,N,N,N,22103,N,47976,47977,47978,47979,N,N,N,47980,N,47981,N,
-22099,N,47982,47983,N,22098,N,N,N,N,47984,N,N,N,47985,22100,N,22101,N,47986,N,
-58996,N,47987,N,N,22104,47988,47989,20070,N,22105,22102,N,N,N,N,N,47990,N,N,N,
-47991,N,22106,N,47992,13408,22107,47994,N,47993,N,22109,22108,N,N,22110,N,
-47995,47996,N,22111,N,16494,15651,N,47997,15716,N,16739,47998,14633,14904,
-14634,13680,48161,N,22112,N,N,14905,N,N,14410,22113,19494,18243,22114,N,14635,
-48162,48163,N,13356,N,17191,13906,48164,N,15188,18779,N,N,18497,48165,N,N,N,
-22115,13429,48166,N,N,N,22118,48167,N,48168,48169,17441,N,48170,22117,22116,
-22119,N,17515,N,48171,48172,N,N,N,N,16227,N,N,48174,N,N,15189,N,16458,48173,
-16979,13602,N,48175,17442,N,48176,22120,22121,15983,N,N,N,N,19257,48177,N,
-22124,N,N,22123,22122,18813,N,22131,N,48180,N,48178,19290,N,22125,N,48179,
-48181,N,N,22127,19307,48182,22126,48183,N,N,48184,48185,N,48186,22128,N,18472,
-22129,19006,22130,N,N,N,48187,N,48188,48189,48190,48191,48192,N,48193,N,13363,
-19007,18223,22132,22133,N,14636,13364,22134,14392,19780,19753,13430,22136,
-48194,17443,N,14637,15921,N,N,18527,N,N,15922,48195,N,N,48196,15736,N,N,N,N,N,
-17516,19065,17721,N,N,14638,N,18780,N,N,N,22137,N,48197,N,48198,48199,17753,
-14914,48200,N,48201,14411,48202,17517,N,N,N,48203,N,48204,N,12355,15726,14639,
-19783,N,N,N,N,48205,48206,48207,N,22138,22139,18257,N,N,48208,N,22140,20087,
-20269,48210,48209,N,48211,22142,22141,48212,48213,13127,48214,48215,22305,N,N,
-N,22308,22309,48216,22307,48217,18752,15923,22311,22310,22306,N,48218,N,N,
-22312,22313,N,48219,22314,N,N,N,22317,22315,N,22316,22318,N,12644,17518,22319,
-N,14202,12918,18230,N,22320,18043,19035,48220,22321,20270,N,48221,48222,48223,
-22322,19008,22325,20513,20529,48224,15408,18037,22326,N,13661,17444,12410,
-22327,18982,14640,48225,N,17232,48226,48227,N,17519,N,48228,48229,48230,48231,
-19567,14393,14412,48232,22328,N,48233,48234,22329,48235,22335,48236,15461,N,N,
-48237,17445,48238,13871,22330,N,N,48239,18731,48240,17222,48241,48242,22331,N,
-N,48243,48244,N,48245,22332,N,13872,N,22333,48246,22334,N,48247,22336,N,17782,
-48248,N,22337,22338,48249,22339,N,48250,22324,22323,N,N,48251,22340,14145,
-48252,48253,N,18727,48254,N,14924,18743,17446,18763,22341,N,48417,15924,12614,
-48418,22342,48419,48420,N,22343,48421,19570,48422,N,18528,48423,48424,22346,
-12669,16428,22345,22344,14146,16980,N,22350,22348,48425,22347,20007,14437,
-48426,N,48427,15737,22349,17740,15678,N,N,48428,17984,22353,22352,N,N,48429,
-48430,22351,N,22354,14438,48431,N,48434,N,N,48432,22355,18812,15707,48433,
-48435,22356,18553,48436,48437,48438,N,17985,17447,N,N,N,48439,17712,N,N,22357,
-13611,N,N,N,N,N,16180,48440,18732,N,48441,48442,48443,N,48444,13431,18214,N,N,
-48445,48446,48447,48448,48449,N,22358,15190,19258,19259,N,N,12670,22363,48450,
-N,17257,48451,48452,N,22360,N,N,N,48453,48454,48455,12919,48456,48457,48458,
-48459,22573,22362,48460,48461,N,18224,48462,N,22361,N,48463,22359,48464,14714,
-N,22365,48465,N,N,48466,N,N,48467,22371,22377,22369,N,17756,48468,48469,22374,
-18781,48470,48471,22368,48472,22373,20071,15191,N,48473,16981,22366,N,N,48474,
-13662,22376,16429,12645,22370,12920,22375,N,48475,N,13873,N,22372,N,48476,N,
-48477,N,N,N,N,22378,N,N,N,N,N,48478,22380,22390,22388,N,N,22385,48479,48480,
-48481,22384,20088,48482,22386,N,N,13874,48483,14641,N,48484,15738,48485,48486,
-N,22393,22379,N,N,48487,N,22383,22367,48488,12922,22387,22389,17233,N,48489,
-14888,12856,22381,22392,22391,13875,N,16937,13158,48490,N,N,N,14147,N,22382,N,
-N,N,N,N,N,48491,48492,N,22394,48493,22397,22561,N,48494,N,48495,15421,48496,
-22567,17520,22395,48497,N,N,48498,22565,48499,12921,48500,22563,22564,48501,N,
-22398,22562,N,48502,48503,14439,19754,N,48504,13365,48505,48506,12633,22566,
-48507,18234,12333,N,N,N,N,N,48508,48509,18529,22364,22572,22576,19557,48510,
-22569,N,N,48673,17769,22574,48674,N,N,N,48675,N,48676,15984,22575,18007,48677,
-48678,48679,48680,N,N,48681,48682,N,20295,N,22571,48683,48684,N,N,22577,48685,
-14715,48686,16459,48687,48688,12372,22570,22568,48689,16730,N,48690,N,22396,
-15156,N,N,N,N,N,N,N,16966,22589,48691,16731,22584,48692,22581,22582,48693,
-15462,22585,22588,48694,48695,22583,15653,48696,22586,N,N,22580,48697,19580,
-19579,48698,N,48699,22590,22591,12373,48700,48701,48702,48703,48704,22579,
-48705,48706,N,48707,13938,12326,48708,N,48709,13366,N,22587,48710,N,N,N,N,
-22595,22594,N,48711,48712,22599,N,N,N,48713,48714,N,N,22600,48715,48716,48717,
-N,48718,N,N,22598,22601,22593,22597,N,48719,22602,N,22603,48720,48721,22592,
-15228,48722,22596,16982,14642,22578,16181,N,N,N,N,22616,N,19049,N,N,22606,
-22607,22608,N,N,22615,48723,22614,48724,N,19325,13367,N,22612,N,14149,13108,N,
-N,22609,48725,N,20024,22611,12374,22613,48726,22604,22610,22617,14148,22605,
-48727,N,N,48728,48729,N,19805,48730,48731,48732,19755,48733,48734,N,N,22620,N,
-N,22624,48735,N,48736,16766,N,20089,22625,48737,48738,22622,N,22619,48739,
-48740,22618,22623,N,48741,48742,N,48743,48744,N,N,N,18992,48745,N,17972,48746,
-14150,48747,22626,22621,48748,22627,N,N,N,14203,N,N,N,12849,N,48749,48750,
-22635,N,48751,N,13368,N,48752,48753,48754,22633,N,N,22634,14889,22632,22630,
-22629,22636,22628,22638,48755,48756,12923,N,N,N,N,48757,N,N,N,N,N,N,48758,
-48759,48760,48761,N,48762,48763,22640,N,48766,22639,48764,N,48765,N,N,48929,
-48930,N,48931,N,N,17448,N,22643,N,22641,22631,14204,N,22642,N,22646,22645,
-22647,22644,22648,48932,N,48933,48934,N,N,48935,22649,22650,19050,N,22652,
-22651,15679,N,16430,12902,12924,48936,22653,48937,12351,N,N,N,16460,22654,
-48938,27715,22817,14177,48939,22818,48940,48941,N,N,16495,48942,N,48943,22819,
-48944,N,N,22820,13626,22821,N,22822,22823,16983,N,N,N,14413,48945,N,19553,N,
-48946,N,19260,15722,22824,48947,48948,48949,N,48950,16496,28221,18530,N,15466,
-48951,14925,22825,N,48952,48953,48954,16967,48955,18983,48956,N,17009,N,48957,
-22828,48958,N,22826,N,22829,N,N,22827,48959,N,N,N,22830,N,N,N,N,48960,18993,
-48961,N,12343,N,48962,N,N,18782,N,N,18531,48963,N,22831,48964,22834,15925,
-13627,N,22832,22839,15926,N,N,N,N,22833,18244,N,N,48965,48966,48967,48968,
-19806,22835,22836,22840,17770,22837,14643,16478,N,N,22854,18484,N,17010,N,N,N,
-N,N,N,N,48969,N,48970,N,N,18532,23085,N,N,N,N,19066,N,48971,N,17521,48972,
-48973,N,19317,48974,22843,12833,17258,48975,48976,N,N,22852,N,48977,17204,
-22846,22853,22848,22855,22851,N,22850,18287,48978,22844,12925,22842,13681,
-17011,22838,48979,48980,22841,14644,16475,48981,15927,22849,18258,N,N,13682,
-13128,N,N,N,N,N,N,N,N,48982,N,13159,16161,22857,22862,N,22858,48983,14205,
-48984,22863,15138,14697,N,N,N,N,48985,48986,15654,22845,15229,22860,48987,
-48988,N,N,15192,22861,12356,48989,48990,22856,48991,N,N,48992,17449,N,48993,N,
-N,48994,N,48995,13683,N,N,N,N,N,13876,N,N,N,N,N,N,N,22859,12327,48996,48997,
-14915,N,48998,N,16182,N,N,N,N,N,48999,49000,N,N,49001,17522,N,49002,18516,
-22865,16734,N,49003,49004,49005,49006,N,49007,N,N,16938,49008,49009,15147,
-22866,49010,22868,22864,N,49011,49012,49013,19041,N,17469,49014,N,N,49015,
-16732,N,N,N,N,N,N,N,N,49016,49017,19067,15438,22880,N,22879,49018,49019,16248,
-N,N,49020,14206,N,49021,49022,22873,15929,49185,N,18024,18225,49186,49187,N,
-49188,22871,N,49189,16733,49190,N,N,49191,15480,22876,49192,N,15928,N,22870,
-22875,49193,N,18259,N,49194,49195,22869,N,14113,49196,49197,13149,N,N,49198,
-22877,20011,14926,17205,22874,49199,16476,49200,14645,16228,12646,16700,22872,
-13637,49201,49202,49203,N,N,14151,N,17487,22878,N,N,N,N,N,16735,N,49204,22881,
-N,22883,49205,N,16951,22889,49206,22884,N,49207,22886,N,N,N,N,49208,18753,
-17523,49209,22887,49210,49211,49212,19756,N,N,N,19784,13369,49213,N,N,N,49214,
-12334,N,22885,N,49215,N,N,N,22882,49216,N,49217,N,13432,N,N,N,49218,49219,
-12647,49220,22888,N,49221,49222,19785,22892,N,N,49223,49224,N,N,16955,N,22899,
-49225,N,49226,22893,49227,N,22890,22897,49228,N,N,N,22867,N,49229,N,49230,N,
-49231,N,49232,49233,22894,N,22898,49234,49235,N,18498,17771,N,49236,49237,N,N,
-N,22891,49238,22895,N,N,N,14152,N,N,49239,14961,49240,N,N,16477,N,N,N,N,N,N,N,
-N,49241,N,N,22903,49242,N,49243,49244,49245,49246,N,N,N,17702,N,49247,49248,
-49249,49250,N,49251,49252,49253,N,49254,N,N,N,22900,N,19296,N,N,N,49255,N,
-22901,N,N,N,49256,49257,N,22902,N,19534,N,16418,49258,N,49259,N,N,N,N,N,14178,
-N,49260,N,49261,22909,N,N,N,N,N,N,49262,49263,49264,15157,22906,N,22905,N,N,
-49265,49266,18226,49267,N,49268,17973,49269,N,49270,N,49271,17713,22907,49272,
-N,49273,22908,N,18799,49274,18245,15139,N,16497,N,19280,49275,N,N,N,N,N,13129,
-N,23077,22910,49276,49277,49278,N,19786,23079,N,49441,23075,N,23076,N,49442,
-49443,49444,49445,16736,49446,N,49447,49448,23074,N,22847,49449,N,49450,23078,
-N,23073,N,N,N,N,N,23083,23084,17703,23086,49451,49452,15140,23081,N,49453,
-49454,N,13628,49455,N,23087,49456,23080,23091,N,23090,49457,23089,49458,N,N,
-23092,49459,N,23094,15985,49460,23093,49461,N,N,49462,23097,N,N,49463,49464,
-49465,N,N,N,N,49466,N,N,N,49467,49468,N,49469,N,23095,49470,N,49471,23096,
-22896,49472,49473,N,N,49474,23099,23098,N,49475,N,N,49476,22904,23100,23088,N,
-49477,15193,N,49478,N,N,23101,23102,23104,23103,23105,12926,49479,14646,49480,
-49481,19068,16431,N,N,N,49482,N,14414,N,49483,23107,49484,N,N,N,23110,N,18770,
-49485,13663,49486,N,49487,23109,23108,18260,23111,13877,N,N,N,23113,23112,
-49488,49489,N,13370,15158,N,N,18008,49490,N,N,N,49491,14153,N,N,N,16244,N,
-23114,N,16432,17704,N,18783,23115,N,49492,N,N,49493,N,N,N,49494,23116,23117,N,
-49495,N,19000,21853,16454,49496,N,18764,N,14936,N,18533,18499,49497,N,N,49498,
-N,17741,49499,20033,N,23119,15440,49500,N,23120,49501,12342,N,49502,13908,
-16461,49503,18784,N,N,N,23121,15170,17223,49504,15195,16183,N,49505,49506,
-49507,N,N,23122,N,19069,N,N,12663,15196,N,49508,N,23125,49509,23123,23126,
-20025,23124,N,49510,49511,N,16507,23127,N,49512,16946,49513,N,23128,N,49514,N,
-49515,13434,49516,23130,N,23129,N,N,N,49517,23131,23132,13435,N,N,18044,17206,
-13676,15197,16737,N,N,15708,12336,N,N,49518,23133,49519,N,49520,49521,N,N,N,
-49522,12834,23137,N,N,49523,49524,49525,N,14647,23136,49526,N,14891,15930,
-49527,49528,23135,N,15931,49529,19520,14890,N,49530,49531,12375,16462,49532,
-49533,N,N,N,N,N,23142,49534,49697,16433,12615,49698,49699,49700,49701,15701,
-49702,19302,14962,49703,49704,49705,49706,15932,49707,16423,49708,49709,N,
-49710,23141,23139,23140,49712,N,49711,N,N,17259,N,N,23334,49713,23146,15230,
-14648,23144,49714,49715,N,N,23145,49716,16184,49717,N,49719,23143,N,49718,
-15151,N,N,N,N,49720,49721,49722,N,49723,49724,23148,23147,23152,49725,49726,
-23153,N,23149,N,13090,23150,23151,18517,49728,49729,49730,N,18785,14154,23154,
-N,N,49732,16434,49733,15933,49735,49736,49737,17234,49738,49740,N,49731,49734,
-49739,13895,N,23155,23159,N,N,12875,23156,23158,N,49741,49742,49743,23157,N,
-49744,15723,49745,N,N,N,17224,12357,23160,49746,49747,49748,49749,23161,N,
-49750,49751,N,17450,N,49752,N,20081,N,N,N,N,15171,N,49753,19051,N,N,49754,
-49755,N,19261,49756,N,N,23330,23163,N,49757,23166,N,23165,49758,49759,23162,
-49760,49761,23329,N,N,18014,49762,23164,N,N,49763,N,49764,49765,N,N,N,N,49766,
-N,23331,N,N,15724,23332,49767,19787,18296,N,49768,23333,N,N,N,N,N,23335,N,
-49769,23336,N,49770,49771,N,49772,N,23337,N,13898,12616,14649,23338,N,23339,
-15729,16738,49773,49727,21080,16702,16701,16984,14919,N,N,20594,N,49774,N,
-49775,14190,19757,N,19070,N,18814,49776,23340,N,N,N,49777,14963,17471,23341,
-20271,N,49778,N,19262,49779,17451,23342,13436,49780,N,49781,N,N,N,23343,23344,
-19546,N,19492,19318,19292,15141,23346,N,N,15467,N,49782,19281,N,23348,23351,
-23350,N,13433,N,N,13664,49783,23347,N,23349,N,N,N,49784,23352,49785,49786,
-16249,N,N,49787,N,19835,12361,14944,16956,N,15453,49788,49789,15987,N,N,23355,
-N,N,17742,49790,23353,16939,23354,15986,19549,23356,23357,19816,49953,N,N,N,
-23362,N,49954,14650,49955,18261,23359,17772,23134,23138,49956,13647,49957,
-18247,N,N,N,49958,23361,N,15934,18500,N,49959,N,N,49960,23367,N,18554,N,23358,
-N,23364,23363,N,49961,49962,16463,49963,N,49964,N,19309,49965,20051,49966,
-49967,19303,49968,12876,15198,N,N,20296,23366,16245,N,N,N,23365,N,N,23360,N,N,
-N,N,N,14415,49969,49970,49971,23372,23370,49972,12877,23368,23374,23380,N,
-49973,49974,49975,N,N,49977,16968,49978,49979,19009,49980,23382,N,49981,49982,
-18722,N,N,N,23381,18288,19263,13371,49983,16503,15680,N,N,49984,17491,49985,
-19758,N,49986,23377,23376,N,N,49987,23378,N,23375,N,49988,23383,N,23373,N,N,
-23371,N,23379,23369,49989,17260,49990,19576,15430,14964,49991,49992,N,49976,N,
-14906,N,N,19311,13121,17486,17994,12617,N,N,N,N,N,N,N,N,N,N,N,N,N,N,16498,
-49994,N,16436,14122,N,49995,N,N,N,49996,23385,49997,N,14651,13180,N,N,N,N,
-49999,49998,23387,13172,23393,50000,50001,N,50002,50003,50004,23390,50005,
-16499,N,N,N,13131,14892,N,50006,13130,14927,N,50007,23388,14181,14155,17773,
-50008,50009,23386,N,12358,N,50010,N,50011,23389,23391,N,13901,14124,49993,
-13372,13643,50012,N,50013,50014,23394,N,50015,14969,19313,N,15159,N,N,N,23395,
-N,N,N,18736,N,N,N,50016,N,N,50017,50018,50019,50020,50021,N,23407,50022,12851,
-23396,N,50023,50024,50025,50026,N,23413,23397,N,20034,50027,23404,50028,18271,
-50029,N,50030,N,N,N,N,23412,N,23399,N,N,N,12340,23401,N,50031,14652,50032,N,
-50033,23403,50034,23402,N,23398,23409,50035,15935,50036,N,50037,21613,14440,
-19836,50038,50039,N,N,23400,50040,17524,13091,14893,50041,23392,N,23408,13153,
-N,N,23406,23410,50042,17774,N,N,N,N,N,N,N,13438,50043,23602,N,50044,19529,
-23415,13437,50045,23422,N,50046,50209,50210,19264,50211,23585,23587,50212,
-23591,23417,50213,17194,N,50214,50215,N,17775,23595,23420,N,23592,N,50216,N,
-23586,50217,N,50218,50219,50220,50221,16185,23596,50222,50223,16435,N,N,50224,
-50225,N,N,23594,13373,50226,50227,50228,20304,23414,N,N,23590,12376,50229,N,
-23416,50230,50231,19514,23421,16162,17479,23411,50232,50233,23589,50234,N,N,
-50235,50236,N,16250,23599,13169,14369,N,N,N,N,23601,23418,23600,N,23593,23419,
-N,23597,N,23598,N,N,N,N,N,23615,50237,N,50238,17998,50239,23588,N,50240,23611,
-N,50241,N,23613,N,17496,N,N,50242,N,N,50243,N,N,N,50244,19788,N,N,N,50245,N,N,
-N,N,18806,23608,16970,N,50246,N,23614,16703,50247,23605,23618,23617,N,18031,
-23616,18026,50248,50249,50250,50251,N,50252,50253,23620,23607,50254,13896,
-23610,15709,50255,50256,50257,18272,23612,13899,N,23604,23606,23603,50258,
-50259,20272,13146,23609,50260,50261,23619,13109,N,N,N,N,N,N,N,14951,N,N,50262,
-12637,N,N,23636,50263,N,20273,23639,50264,N,50265,N,N,16186,23638,N,N,N,23637,
-50266,N,N,N,50267,50268,23634,50269,N,N,50270,N,50271,23622,50272,N,23651,
-23621,N,23640,N,N,50273,50274,N,50275,23632,50276,N,23627,23624,N,23625,N,
-23633,N,50277,N,29730,50278,N,23630,14653,17480,16740,23628,N,23623,50279,N,
-23626,N,N,50280,50281,19789,19306,N,N,N,23631,23641,N,N,N,50282,N,N,50283,N,
-23649,23642,N,N,23655,N,23653,50284,50285,N,50286,23648,50287,N,50288,N,N,N,
-23647,N,17488,N,16741,50289,23645,50290,50291,23643,50292,N,23650,N,N,N,N,
-23656,18549,23662,N,N,50293,N,50294,23657,23660,23654,50295,N,17268,N,18744,
-50296,23644,N,50297,23652,15936,50298,19535,23672,23659,50299,N,N,N,50300,
-14370,12835,13151,N,N,23635,N,50301,N,50302,N,50465,15937,23664,50466,23671,
-15481,13170,50467,N,17198,50468,50469,N,N,N,N,23661,50470,50471,23666,23670,
-50472,50473,13878,N,N,50474,N,50475,50476,50477,N,N,50478,50479,N,13644,23668,
-N,50480,N,N,N,13601,N,17995,23667,N,50481,N,23669,50482,N,N,50483,N,N,N,N,N,N,
-50484,23663,50485,N,N,N,N,23665,N,N,N,N,N,50486,13152,17225,50487,N,50488,
-23676,N,50489,50490,N,50491,N,50492,N,23674,14441,N,23673,50493,N,N,N,N,N,
-23841,N,N,N,50494,23384,50495,50496,50497,23675,N,23677,23678,N,50498,N,N,N,N,
-23852,50499,23848,N,23405,50500,50501,50502,N,23847,50503,N,N,N,23846,N,N,
-23843,N,50504,50505,50506,N,23658,23845,23844,N,N,50507,N,50509,50508,N,N,
-50510,N,N,N,50511,23850,N,20262,50512,50513,50514,N,N,N,23853,13947,50515,
-50516,23849,23851,N,N,N,N,50517,N,N,50518,18471,N,23854,N,50519,N,N,N,50520,
-50521,50522,N,N,N,N,N,N,N,23858,23855,50523,50524,50525,50526,19827,23856,
-50527,50528,N,50529,23646,N,N,N,N,50530,50531,50532,23859,N,N,N,23860,50533,N,
-N,N,50534,N,12597,50535,23862,14183,15393,N,13909,50536,N,N,12836,50537,N,N,
-50538,50539,N,N,50540,N,N,19807,N,N,50541,50542,23864,23863,23866,13629,50543,
-N,13910,13374,50544,N,N,N,23869,N,N,50545,23868,N,23870,50546,N,12878,50547,
-17207,N,23871,N,50548,13375,23873,N,50549,N,50550,23872,N,23874,N,50551,N,
-23875,50552,23876,15199,16437,14881,N,18800,50553,N,19042,20292,50554,N,N,
-50555,15221,50556,N,N,14928,20082,50557,N,N,23877,23878,N,15200,N,50558,50721,
-23879,23880,N,50722,23882,23881,50723,19288,N,N,15710,15468,15172,N,23883,N,N,
-N,N,N,N,N,23885,16163,50724,23884,N,N,50725,N,N,23886,50726,50727,N,50728,
-50729,23887,N,N,N,50730,50731,23888,23889,50732,50733,50734,23890,50735,23892,
-23891,23893,12837,17226,N,23894,50736,50737,15142,13132,23895,50738,50739,
-17730,21580,N,N,50740,50741,13603,23896,N,N,50742,N,23897,50743,19052,19304,N,
-N,N,17991,23898,18534,N,50744,N,18555,N,50745,19539,N,N,N,23899,N,50746,N,
-50747,N,N,50748,50749,N,N,N,23901,23900,N,50750,23903,N,50751,N,23902,N,N,N,
-50752,N,50753,N,N,N,N,N,50754,50755,N,50756,50757,N,N,23905,50758,N,N,N,50759,
-50760,15201,50761,19505,50762,23906,23907,N,N,13604,N,50763,N,23908,N,N,N,
-50764,N,N,N,23910,23909,N,50765,50766,50767,N,N,N,50768,N,50769,N,N,N,N,50770,
-16229,50771,50772,18745,12618,N,50773,50774,N,N,18501,50775,17525,15681,13665,
-N,N,N,N,N,N,N,50776,50777,N,50778,18502,50779,15406,N,50780,N,50781,23912,N,
-13376,N,50782,12664,50783,50784,18034,23911,14654,17235,N,23913,N,N,N,N,50998,
-23921,N,23914,50785,N,50786,N,50787,16961,N,13666,23922,50788,N,50789,N,50790,
-50791,14184,50792,N,13605,23920,N,N,23918,23915,19808,N,50793,50794,50795,
-17472,50796,N,N,18009,23916,N,N,23924,N,23923,14115,50797,50798,12845,50799,
-50800,14907,23917,23919,50801,N,N,50802,N,19287,17012,N,N,N,N,N,N,N,N,19319,N,
-N,23932,N,50803,23933,50804,12879,50805,N,N,N,18984,19581,24097,15395,15938,
-23928,23934,12648,N,13879,50806,N,23925,23930,50807,N,N,16500,18289,N,18535,
-50808,N,50809,50810,50811,50812,23927,50813,19233,50814,23929,N,24100,50977,
-24098,50978,23931,N,N,50979,19234,18248,13667,N,17701,N,50980,17261,50981,
-24101,50982,50983,N,50984,24099,16985,23926,50985,12619,50986,50987,N,N,50988,
-N,N,50989,19790,24112,N,50990,50991,N,50992,24111,50993,N,N,N,16502,N,24108,
-50994,19820,N,N,17974,24102,N,N,N,N,N,17477,50995,50996,50997,12620,14655,
-24105,N,N,50999,51000,N,51001,15655,24110,N,24109,24104,N,24107,51002,N,13160,
-51003,24106,18249,51004,N,20014,N,N,15988,16501,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,51005,N,24118,24116,N,18765,N,51006,51007,N,51008,N,24113,24115,51009,
-12602,51010,N,14656,20274,N,13117,N,18786,51011,51012,N,N,N,19809,N,N,13092,
-16187,24117,N,N,51013,N,N,N,N,N,51014,N,N,24122,N,51015,15939,N,N,N,19760,N,
-24119,N,N,51016,51017,24114,51018,24120,51019,51020,51021,20062,N,17779,17986,
-N,N,N,N,N,N,N,N,N,N,N,N,N,51022,N,51023,N,N,13110,N,N,12629,N,51024,24126,N,
-51025,24129,51026,N,N,20035,51027,N,51028,19812,N,N,N,51029,24136,24130,24127,
-51030,N,51031,20052,24133,N,51032,51033,N,15690,24135,N,N,24140,51034,N,17777,
-24138,N,51035,N,51036,24132,51037,51038,17208,51039,N,24139,51040,24128,N,
-24134,51041,24141,12412,24131,N,24142,51042,51043,16188,N,15711,51044,18981,
-51045,14894,N,24123,24137,17722,51046,51047,N,N,N,51048,16438,N,13161,14929,
-15940,24125,15682,N,N,N,N,N,N,N,14156,N,24124,N,N,N,24146,15725,14394,N,24161,
-51049,24155,13684,17743,51050,24150,24159,12335,12594,51051,N,12857,N,24152,
-16940,24143,24145,14657,N,N,51052,N,N,N,51053,N,24162,51054,24157,51055,51056,
-N,24149,N,N,N,N,24156,51057,51058,N,N,51059,51060,19499,51061,N,24154,24158,
-51062,N,51063,51064,51065,51066,N,14416,51067,15941,N,N,17209,51068,51069,
-51070,24148,N,N,51233,51234,N,N,N,19759,51235,N,N,24151,N,N,24144,17778,N,N,
-24147,51236,N,N,24153,N,N,N,N,51237,N,51238,20305,15422,19326,N,24163,N,N,N,N,
-N,N,N,N,N,18478,51239,N,24175,14395,N,N,51240,N,N,15712,N,24165,51241,N,N,
-20015,14658,N,24178,51242,N,12398,N,N,24176,N,51243,N,N,24164,N,N,51244,51245,
-24170,N,51246,24172,51247,N,N,19791,24167,N,N,17710,51248,N,24169,N,51249,
-51250,51251,24177,51252,24171,19527,N,51253,51254,24166,51255,15394,24190,
-51256,51257,51258,N,13162,N,24168,24173,24174,N,N,N,N,N,N,N,17004,16986,N,N,N,
-N,N,N,N,N,N,N,N,N,51259,24182,51260,51261,24188,N,N,24186,N,17705,N,N,24355,
-24183,51262,N,51263,N,51264,24184,24160,13689,18746,N,51265,N,15423,N,51266,
-14711,51267,N,51268,51269,N,20275,N,24180,N,24354,12649,16742,51270,N,51271,N,
-51272,51273,N,N,N,N,18297,N,13377,20090,N,N,51274,N,N,51275,51276,19489,17490,
-51283,N,51277,51278,24187,24189,51279,N,N,51280,N,16690,N,N,51281,51282,N,
-24353,24185,N,24179,N,N,N,13379,N,N,N,N,N,N,N,N,N,51284,N,51285,51286,51287,
-14185,N,N,51288,24367,51289,51290,24362,16504,51291,51292,13155,N,51293,51294,
-N,15713,N,24371,N,51295,N,N,N,51296,24364,17452,24361,17497,N,N,N,24396,N,N,N,
-24358,N,24357,N,24366,51297,51298,N,24360,24359,24365,51299,16417,N,24356,
-51300,51301,N,N,51302,51303,51304,24368,N,51305,24369,51306,51307,51308,N,
-51309,13378,N,N,51310,N,N,N,N,51311,51312,24374,N,24373,24375,51313,51314,
-51315,51316,N,24378,N,N,N,51317,51318,51319,17731,N,24372,N,51320,51321,N,N,
-24376,N,N,51322,N,N,N,14179,17017,24370,18235,N,51323,24377,51324,51325,N,
-51326,N,N,N,N,N,N,N,N,N,24382,24380,N,N,24383,N,51489,24386,N,N,51490,24379,
-14698,18216,N,N,24121,N,N,N,51491,51492,N,19828,24381,N,24385,17013,51493,
-24384,N,24363,N,51494,28521,N,N,51495,24389,N,51496,51497,24393,51498,24391,N,
-N,N,51499,51500,51501,N,24387,N,24388,N,51502,N,24392,N,24390,N,N,N,18766,N,
-51503,24398,N,24395,24394,N,24397,18004,24399,51504,N,N,51505,N,N,17269,17005,
-N,N,N,N,16421,N,N,51506,24400,N,24402,N,51507,N,N,51508,N,51509,N,N,51510,N,
-24401,N,N,N,N,51511,51512,N,N,N,51513,51514,51515,51516,24181,N,51521,N,N,
-24403,N,N,51517,51518,N,N,18023,N,N,N,N,51519,51520,N,N,N,N,24404,51522,51523,
-N,N,N,N,N,12880,51524,N,51525,17780,13093,N,N,N,N,51526,51527,N,13668,N,N,N,
-15454,14930,51528,N,N,51529,N,N,N,51530,51531,N,N,20263,16230,N,N,N,12650,N,N,
-N,24406,N,51532,51533,51534,51535,51536,24405,N,51537,N,N,N,N,N,N,N,N,51538,N,
-N,N,N,N,N,51539,24409,17210,24412,24407,51540,51541,N,24411,51542,N,N,51543,
-24410,17728,12377,N,N,N,N,N,N,N,N,N,N,N,N,N,20085,N,51544,24414,N,N,N,12584,N,
-51545,N,51546,51547,51548,51549,N,51550,24416,N,N,51551,24415,N,24413,N,N,N,N,
-51552,N,N,N,N,N,N,N,N,N,N,N,N,24408,N,N,N,N,N,N,N,19235,51553,N,N,24418,51554,
-51555,51556,51557,51558,N,24417,N,51559,51560,N,N,51561,N,N,N,N,12651,N,N,N,N,
-24420,18994,N,24419,N,51562,N,51563,19509,N,N,N,N,15943,N,N,N,N,51564,N,51565,
-N,51566,51567,51568,N,N,N,N,16691,N,51569,N,N,N,15942,N,N,N,N,51570,N,N,N,
-51571,51572,51573,N,20091,51574,51575,24426,N,16505,N,51576,N,51577,N,N,24422,
-24427,51578,N,12652,51579,N,51580,N,51581,N,51582,N,24425,N,18273,24421,24424,
-15944,51745,18513,N,N,24428,N,15441,N,N,N,N,N,N,N,N,N,N,51746,N,N,N,16506,N,N,
-51747,N,N,N,24431,51748,N,51749,24423,N,14119,N,51750,N,N,24429,N,N,51751,N,
-19792,24432,N,N,N,29734,51752,51753,N,N,N,15695,51754,N,51755,N,N,N,N,N,24433,
-N,N,N,24434,N,N,51756,51757,18222,51758,51759,N,N,N,N,N,24436,51760,N,N,N,
-24437,51761,51762,51763,N,18227,51764,N,N,N,17781,24439,N,51765,51766,N,24441,
-N,20053,N,24438,51767,24440,12653,51768,24435,N,51769,51770,N,51771,N,N,21339,
-24442,N,N,N,N,16743,15160,24444,N,N,N,N,24443,16164,21081,N,N,N,N,N,N,24445,N,
-N,51772,24609,N,24430,24446,N,51773,24610,51774,N,N,N,N,N,18298,51775,51776,
-51777,N,N,N,24611,N,N,24612,N,N,51778,N,N,N,51779,N,N,51780,24613,N,51781,N,
-51782,N,N,N,N,51783,N,N,N,24614,N,17502,51784,24616,24615,N,51785,24617,N,
-24618,N,51786,15455,18787,N,51787,51788,19564,24619,24620,16726,15396,24621,
-24622,51789,51790,51791,N,51792,24623,19026,18503,N,N,24624,18263,N,51793,
-51794,51795,N,17453,51796,N,51797,51798,N,24625,12903,51799,13677,51800,19526,
-51801,19510,51802,12852,20276,51803,N,N,N,19282,51804,18986,N,51805,N,N,51806,
-51807,N,51808,16439,N,24626,N,N,51809,51810,17987,N,51811,51812,14371,24627,
-51813,14932,24629,24628,N,51814,N,N,24630,N,51815,N,N,N,51816,51817,N,N,N,
-24631,51818,N,N,24632,N,N,N,N,51819,N,N,N,N,13630,N,24633,N,N,N,N,24634,51820,
-N,N,N,14372,51821,51822,18504,N,51823,24636,N,51824,N,15989,N,N,24635,N,N,N,N,
-51825,N,N,51826,13880,24637,24639,N,24638,51827,N,51828,N,N,51829,N,24640,N,
-14417,N,24641,N,N,51830,51831,13929,51832,16704,N,14717,N,N,N,51833,24643,
-24644,24642,N,N,51834,N,N,N,15469,N,N,17992,13881,N,N,N,N,N,51835,51836,N,N,
-24646,17196,24645,51837,51838,20277,18274,52001,52002,N,52003,52004,N,52005,N,
-N,24649,52006,N,52007,N,N,N,N,52008,52009,N,N,24651,24648,52010,52011,N,19540,
-24650,24652,52012,20036,N,N,52013,N,52014,24656,N,52015,52016,24655,17270,
-18221,52017,N,14373,24654,N,52018,52019,N,24653,52020,19761,19762,N,N,52021,
-52022,N,52023,24657,12654,N,N,N,52024,14710,15202,N,N,N,N,N,N,N,52025,24658,
-24659,52026,N,52027,N,N,N,52028,24661,52029,N,N,N,N,52030,52031,52032,52033,N,
-N,15683,N,N,52034,52035,24663,52036,24662,52037,52038,N,52039,52040,24664,
-52041,13133,N,N,24666,N,52042,24665,52043,24668,24667,52044,N,N,N,52045,52046,
-N,52047,14396,52048,52049,20008,N,13900,N,12838,N,N,52050,N,52051,N,N,52052,N,
-52053,13930,52054,52055,N,N,N,52056,N,52057,52058,52059,N,52060,N,N,52061,
-52062,N,N,13409,52063,52064,N,52065,N,N,N,N,20072,24670,N,52066,N,52067,N,
-52068,N,24672,52069,52070,N,52071,24673,N,12881,N,N,52072,52073,N,24669,52074,
-15161,52075,52076,17473,24671,52077,N,N,52078,52079,N,N,52080,N,N,52081,N,N,N,
-52082,24676,N,15470,52083,N,52084,N,24674,52085,52086,N,52087,14142,N,N,18505,
-24675,N,N,24702,N,N,52088,52089,N,52090,24681,52091,52092,52093,N,52094,14397,
-52257,52258,52259,N,13669,52260,24678,19837,52261,N,20016,52262,N,N,N,N,N,N,
-52263,N,N,N,N,N,N,N,N,52264,52265,N,N,N,N,N,N,17014,N,52266,24680,52267,N,
-52268,52269,52270,52271,52272,52273,52274,52275,52276,52277,24682,20054,13911,
-18556,18250,N,N,52278,24683,N,N,N,N,24685,52279,24688,N,52280,52281,N,52282,
-52283,N,N,N,52284,N,52285,N,N,N,52286,52287,N,N,24684,N,52288,N,24687,14442,
-12621,24689,52289,16240,24686,20060,N,52290,24692,29732,N,52291,52292,52293,
-24690,24693,52294,N,52295,52296,24679,24691,52297,52298,14908,N,N,24694,N,N,N,
-N,N,N,N,24695,N,52299,52300,N,19838,N,52301,52302,52303,N,52304,N,24696,N,N,N,
-52305,52306,52307,52308,N,N,N,N,N,52309,52310,52311,N,52312,N,24697,52313,
-52314,52315,24677,52316,N,N,52317,24698,52318,52319,52320,52321,N,N,52322,
-52323,13380,52324,52325,N,N,52326,N,N,N,52327,N,52328,N,15397,N,52329,N,N,N,N,
-N,N,N,N,52330,52331,24699,N,52332,N,N,24700,52333,N,N,52334,24701,N,N,N,52335,
-N,52336,52337,12603,N,52338,52339,24865,N,18747,24866,52340,N,13348,24867,
-52341,24868,52342,52343,N,N,24869,52344,24871,24872,24870,N,52345,N,18771,
-24874,24873,N,52346,52347,52348,N,N,52349,24876,24875,24877,52350,N,N,N,N,N,
-24878,24880,24879,N,N,14713,52513,24882,N,24881,52514,52515,13381,N,16211,N,
-17724,N,24883,16440,52516,52517,N,15162,52518,12665,24884,52519,19793,52520,
-52521,19043,24885,N,N,52522,17732,19763,14659,16189,N,N,52523,17227,21044,
-52524,17454,12904,24886,52525,52526,52527,52528,N,N,52529,24887,N,24892,52530,
-52531,24890,24889,23106,13094,24888,52532,12378,52533,18474,52534,N,18506,N,N,
-52535,N,20017,24893,24891,17244,16422,52536,52537,18475,52538,18733,N,24895,
-20012,14157,24896,N,24894,18518,24897,N,24898,N,52539,12379,52540,N,15990,
-24903,N,24900,18029,24899,52541,52542,52543,52544,52545,52546,13606,N,52547,
-24906,N,N,52548,24901,24902,N,24905,24904,18725,N,N,16706,16705,52549,13631,
-52550,52551,24907,52552,N,N,N,52553,24908,N,52554,24909,N,N,N,N,52555,24911,
-52556,24910,N,N,N,N,N,12630,N,N,N,N,N,24919,18536,24913,52557,24915,N,N,24917,
-16190,52558,N,24918,24916,15424,52559,52560,52561,24912,24914,52562,18754,
-52563,15945,N,N,24921,N,52564,24920,52565,52566,N,N,24922,N,15398,14895,N,
-52567,17783,24923,N,17483,52568,N,24925,52569,52570,52571,20001,24924,52572,N,
-N,52573,N,16745,N,N,52574,N,52575,52576,24930,52577,24932,24933,17236,N,N,N,N,
-52578,24931,N,24928,N,24926,24927,52579,24929,52580,52581,52582,N,N,52583,
-52584,24936,52585,24934,52586,24935,N,52587,N,N,52588,52589,N,52590,52591,N,N,
-52592,N,52593,52594,52595,52596,24937,24939,24940,24941,52597,24942,52598,
-52599,24938,N,52600,N,N,N,52601,N,N,24944,N,52602,52603,24943,52604,N,N,52605,
-52606,52769,24945,52770,N,N,N,52772,52773,20037,52774,52775,52776,24948,24946,
-24947,52777,52771,52778,13410,N,N,N,N,N,19582,N,N,52779,19018,N,24950,52780,N,
-N,24949,N,N,52781,N,24951,24952,N,52782,52783,N,24956,24953,24954,24955,N,
-24957,52784,52785,52786,24958,52787,25121,N,52788,N,25122,N,25123,N,18479,
-17744,25124,18290,18740,N,25125,52789,N,25126,17706,52790,13095,14660,25127,N,
-N,25128,52791,52792,25129,N,15145,N,N,25131,N,52793,25130,N,N,25132,25133,
-52794,52795,52796,N,52797,52798,N,52799,52800,52801,52802,52803,52804,52805,N,
-52806,N,N,52807,18537,N,25134,N,N,N,25135,N,N,29545,25136,25137,25138,N,N,
-52808,N,15150,N,52809,25139,18262,N,52810,19295,N,12622,52811,12631,52812,
-52813,25140,52814,N,N,N,25142,N,52815,N,25141,17776,N,52816,N,16441,23865,N,
-25143,19521,52817,25144,N,13382,18519,25145,52818,25146,52819,N,25147,N,52820,
-N,19548,N,52821,52822,19541,N,17470,N,52823,N,16746,52824,N,25149,52825,N,
-15714,52826,15946,N,N,25152,N,52827,25151,25150,18557,52828,13383,14377,N,
-52829,N,N,N,52830,N,52831,52832,N,52833,N,52834,52835,25158,52836,N,25155,
-16191,19506,N,52837,N,25154,25156,25157,N,52838,25153,N,N,N,52839,52840,52841,
-N,N,N,N,52842,52843,52844,25159,25160,52845,17455,N,13411,52846,52847,N,17253,
-N,52848,N,N,52849,52850,25161,N,N,52851,N,N,52852,52853,52854,N,N,52855,N,N,N,
-52856,52857,N,N,25162,25165,52858,N,52859,52860,52861,16231,52862,17988,53025,
-25166,19283,53026,25163,N,53027,25164,53028,N,N,N,53029,N,53030,53031,53032,N,
-N,N,N,25169,53033,N,N,53034,25168,25167,53035,N,N,N,53036,N,N,N,N,N,N,25171,
-53037,53038,25170,N,N,25172,N,N,53039,53040,53041,N,N,N,53042,N,N,N,25174,
-53043,25173,N,53044,N,N,19021,N,53045,N,N,53046,N,15702,20038,53047,53048,
-25175,53049,N,17975,N,53050,25176,N,N,25177,N,25181,25179,25180,53051,25178,N,
-N,N,53052,N,N,N,25182,N,53053,N,N,N,25183,N,N,N,53054,53055,N,N,53056,N,25184,
-N,53057,25185,19511,25186,N,53058,53059,53060,N,19568,25187,53061,17230,53062,
-18282,N,13931,53063,N,53064,17211,25188,13882,53065,53066,N,16464,53067,N,N,N,
-53068,N,N,53069,25189,14909,N,N,53070,53071,N,N,53072,N,N,25190,53073,53074,N,
-N,53075,25191,N,14374,14933,N,N,N,N,N,N,N,53076,N,N,25193,53077,53078,53079,N,
-17750,14934,13646,N,N,N,N,N,53080,53081,N,53082,N,19236,N,18251,53083,N,53084,
-N,N,17751,N,N,N,N,14684,N,N,N,53085,53086,25195,N,53087,53088,N,N,N,53089,N,
-53090,N,N,N,53091,N,N,N,N,N,N,N,N,N,53092,15947,53093,N,53094,53095,N,53096,
-53097,N,N,N,53098,N,53099,20018,14661,N,53100,14375,N,N,18467,N,25197,N,N,N,N,
-N,53101,N,25199,N,53102,N,N,14443,N,N,N,N,25198,17526,N,N,53103,N,25201,13111,
-25196,53104,N,18538,N,12592,53105,14956,N,20306,53106,N,25200,N,N,53108,53109,
-53110,N,53107,N,25202,53111,N,N,19019,53112,16473,25204,N,53113,53114,N,25205,
-53115,53116,53117,53118,N,25203,N,N,N,N,13134,53281,25211,53282,25210,53283,N,
-15399,N,N,N,25212,25207,53284,53285,53286,25213,25208,53287,N,53288,N,18520,
-25206,53289,53290,25209,53291,53292,N,N,N,25378,53294,N,N,N,53295,53296,53297,
-N,N,53293,N,53298,25377,19297,N,53299,N,25214,N,N,12395,N,N,53300,53301,25380,
-N,53303,53304,N,N,53305,53306,N,25379,N,53307,53302,15948,N,N,N,N,53308,25381,
-N,N,N,N,53309,N,16707,N,53310,25383,25382,N,N,N,N,N,N,25384,53311,N,53312,N,
-53313,53314,53315,N,N,N,N,53316,25192,53317,N,53318,25194,25386,25385,53319,N,
-N,N,53320,N,N,53321,53322,N,N,N,N,15400,53323,20073,53324,15442,53325,25387,
-14135,N,N,53326,53327,53328,13632,13607,15203,53329,53330,N,N,N,53331,19764,
-53332,N,25393,53333,25392,16708,25389,53334,N,25391,53335,53336,15691,16192,
-25390,25388,N,18218,N,N,15949,N,53337,18748,53338,N,53339,N,14935,N,N,N,N,
-53340,N,N,N,N,17784,N,53341,25394,53342,53343,N,53344,25395,25417,13912,N,N,
-20285,16693,N,N,N,N,25396,53345,53346,12882,17527,18977,N,53347,N,53348,53349,
-53350,53351,N,53352,N,N,53353,53354,25397,N,N,N,53355,N,N,N,N,13690,25398,
-53356,53357,25400,53358,N,N,25401,53359,18217,53360,N,25402,53361,N,N,N,53362,
-25403,25404,53363,N,13913,12883,17989,15656,15204,53364,N,53365,N,N,53366,
-53367,25405,53368,15657,N,N,N,53369,N,12874,18755,N,53370,25406,53371,N,18539,
-N,53372,N,N,53373,53374,16709,53537,25409,53538,25410,18281,53539,16193,25407,
-N,17249,53540,53541,25408,53542,N,N,15950,53543,N,N,N,N,N,N,53544,N,N,12380,
-53545,13609,N,53546,53547,N,N,N,53548,25411,53549,53550,17528,53551,25412,
-16455,N,N,53552,N,N,19501,53553,N,18723,25413,25414,17237,53554,20039,N,53555,
-25416,25415,53556,N,N,N,N,N,53557,N,N,N,53558,N,53559,15471,53560,53561,25418,
-12400,N,53562,53563,N,25421,53564,53565,53566,25419,12884,14158,25420,14662,
-14706,N,19046,25422,53567,53568,19284,53569,53570,25424,N,N,53571,16465,12623,
-12858,12332,N,N,N,N,53572,53573,25423,N,53574,N,N,53575,53576,N,53577,53578,
-25425,25426,15991,N,53579,N,53580,N,25427,53581,13135,N,53582,N,N,25429,N,N,N,
-14186,53583,13670,N,53584,25430,13941,N,N,25431,53585,16508,53586,17997,53587,
-16480,14965,53588,53589,N,25432,N,53590,53591,N,N,N,N,53592,53593,17250,16747,
-53594,25434,25436,25433,25435,N,N,N,N,N,53595,14114,53596,N,N,53597,N,N,N,N,N,
-25437,14118,N,53598,N,13671,19794,25439,N,N,53599,N,53600,25440,N,N,53601,
-12590,53602,53603,N,N,25443,N,N,N,13174,25442,25441,53604,25445,25438,53605,
-25446,20009,53606,25447,53607,25448,N,53608,21620,25450,N,25449,N,N,N,25451,
-25452,53609,20021,25453,N,28783,15951,25454,25455,15703,N,17976,25456,N,53610,
-53611,17192,53612,53613,25457,N,17212,25458,53614,N,N,53615,N,13861,N,20799,
-17245,15411,53616,N,53617,53618,13384,25459,N,25634,N,25462,53619,13672,N,
-25461,25636,N,N,N,25460,N,15952,N,N,53620,N,N,N,25464,25465,N,17707,N,N,25466,
-53621,13150,N,N,53622,N,16218,18788,53623,25468,53624,53625,53626,17000,53627,
-53628,53629,53630,53793,N,25463,53794,25467,25469,N,N,14971,N,N,N,53795,N,
-53796,53797,53798,N,N,N,25638,18734,53799,18470,17785,N,13914,25637,25635,
-53800,18485,25470,17246,17787,N,17786,53801,14966,N,N,N,N,N,N,25656,N,N,53802,
-N,N,N,53803,25640,53804,25642,N,53805,53806,N,25645,53807,25646,53808,25643,
-25644,53809,53810,25641,25639,N,53811,N,N,25633,N,N,N,N,N,N,N,N,N,53812,N,
-19023,12885,N,53813,N,25653,N,25650,53814,25655,53815,53816,25654,N,18291,
-19495,53817,15163,25648,25657,25652,53818,25651,25647,53819,25649,53820,13385,
-N,N,N,53821,N,N,N,N,17213,N,53822,16509,N,53823,53824,18466,53825,N,25662,
-53826,53827,N,18468,N,53828,53829,53830,53831,N,N,16481,25659,53832,N,18511,
-53833,25663,19027,53834,17243,53835,25658,25660,N,N,25661,N,N,N,N,53836,N,
-53837,53838,N,53839,53840,53841,N,25664,N,N,15428,N,N,N,17990,25669,25668,N,
-53842,25665,53843,N,N,20278,N,N,N,N,53844,25674,53845,53846,25678,25675,53847,
-53848,53849,N,53850,N,53851,25671,53852,53853,53854,53855,N,53856,25672,N,
-53857,N,53858,53859,25677,53860,53861,N,25666,21077,25673,25667,N,N,25676,N,
-53862,N,53863,N,N,N,25682,53864,13386,N,25679,N,53865,53866,25680,53867,N,
-25681,25684,53868,N,N,N,N,53869,N,53870,53871,N,53872,25683,18550,53873,53874,
-N,N,25685,20092,19053,25690,N,N,25687,N,N,53875,N,N,N,53876,N,25686,16466,N,
-25689,25691,53878,53879,53880,25688,53877,25695,N,25692,53881,53882,53883,
-53884,53885,53886,25693,25670,54049,N,54050,25694,25696,N,54051,N,54052,N,N,
-25697,54053,54054,N,54055,N,54056,19014,N,25698,N,N,N,54057,N,N,54058,54059,
-19554,N,N,13902,14121,25699,N,N,54060,54061,N,18996,N,16232,N,19504,N,54062,
-25700,N,20019,N,54063,18292,N,16710,18228,N,N,15693,N,N,54064,12352,54065,
-25705,25703,N,25701,13345,54066,15953,25706,N,N,25704,N,25702,25710,N,54067,
-25709,25708,25707,N,N,54068,54069,N,25711,54070,54071,54072,25712,16442,54073,
-25713,N,25715,N,54074,25714,N,54075,54076,54077,14418,N,N,54078,16696,54079,N,
-N,25717,54080,54081,54082,17788,54083,25716,54084,54085,N,25718,54086,18997,
-16748,14663,N,25719,N,N,N,54087,20040,N,54088,N,54089,N,N,N,25721,N,N,25722,N,
-25723,54090,25724,N,15205,N,25725,14159,N,N,13674,13610,N,25889,54091,19571,
-14664,25726,54092,54093,54094,25892,19558,N,18236,N,54095,18739,54096,54097,
-54098,15715,25891,54099,15443,14665,15206,13673,18998,25890,54100,54101,N,
-16711,19266,14967,54102,N,N,54103,N,N,N,54104,15207,17501,54105,25895,20063,
-14937,54106,25896,16194,N,25898,N,N,N,15954,14896,N,54107,54108,54109,25897,
-54110,54111,15658,14398,16712,25893,25899,54112,54113,N,N,25894,14160,54114,
-25902,25906,14187,54115,N,54116,N,N,25901,54117,N,54118,54119,25910,54120,
-54121,14666,N,N,19821,12348,25907,N,54122,13675,54123,25904,N,54124,N,N,N,
-25905,N,54125,17789,25903,25900,N,13096,16484,N,54126,14376,54127,54128,N,
-25912,N,54129,N,54130,54131,54132,N,54133,54134,N,54135,25909,N,54136,54137,
-54138,N,25911,N,54139,N,25908,N,N,54140,54141,N,14161,16947,25913,16750,54142,
-54305,25926,N,N,25922,25916,N,N,54306,54307,N,N,54308,25920,15482,12381,25915,
-25923,25927,14667,19542,54309,17494,25917,54310,54311,25925,54312,25914,17214,
-N,25919,12349,19530,N,N,54313,54314,54315,54316,54317,25918,N,N,13915,18540,
-54318,54319,54320,16749,N,20048,15727,N,N,25966,N,54321,25928,54322,16510,N,
-25924,25929,25931,N,17529,25934,54324,N,25930,54325,54326,N,19028,13387,54327,
-54328,19531,54329,N,12382,N,54330,25933,N,20093,54331,54332,N,N,54333,54334,
-25932,54323,12655,N,N,18028,25935,N,N,54335,25942,25936,25943,N,N,N,N,54336,
-54337,25939,N,N,54338,N,54339,N,N,N,18299,54340,54341,15434,25941,54342,25938,
-25944,25937,N,N,15684,54343,54344,N,N,19237,54345,54346,15692,54347,N,25940,
-25952,54348,N,25948,54349,25951,N,25949,25953,25947,N,25921,16467,54350,N,
-18507,N,25950,54351,54352,25945,54353,N,N,16673,14162,N,15659,54354,N,54355,N,
-54356,N,16165,16694,25956,N,54357,25958,25959,N,N,25955,25957,54358,N,54359,
-54360,N,N,54361,25946,25954,N,25962,25961,54362,N,19322,54363,54364,14123,N,N,
-54365,N,N,N,N,54366,25960,N,25964,25963,25967,54367,25969,N,54368,15164,25965,
-N,N,54369,54370,25970,25971,54371,N,25972,54372,25978,17723,25974,54373,25973,
-25975,25976,54374,25977,N,54375,N,54376,25979,25980,54377,54378,13388,N,25981,
-N,25982,54380,54379,54381,54382,54383,N,N,N,54384,54385,26145,N,54386,N,N,N,N,
-26146,26147,26148,54387,26149,26150,54388,54389,26152,26151,N,N,26153,N,N,
-54390,54391,54392,N,26154,26155,54393,N,54394,54395,54396,54397,26158,26156,
-26157,14945,14163,N,54398,17238,N,18483,54561,15728,N,N,18253,N,18541,26159,
-22637,N,N,N,54562,54563,54564,54565,N,26160,26162,N,19813,26161,26164,26163,N,
-19795,54566,26165,54567,18558,54568,54569,54570,N,N,26166,N,54571,54572,N,N,
-26169,N,54573,26168,26167,N,N,54574,54575,26170,14130,N,54576,N,16674,13633,
-54577,N,N,54578,26174,26171,N,N,26172,N,54579,N,26175,N,26176,26173,N,N,54580,
-12585,N,54581,54582,12839,N,54583,N,26178,26179,N,54584,N,26180,N,19810,N,
-54585,54586,N,N,15660,N,26182,26181,N,N,N,N,N,54587,N,N,N,54588,16233,26183,N,
-54589,N,54590,26184,N,54591,26185,N,13413,54592,N,54593,54594,13389,N,54595,
-26186,N,N,N,N,N,26187,54596,19293,19811,54597,54598,54599,19796,20279,N,14669,
-26190,15444,26189,54600,54601,N,54602,26191,15401,54603,54604,54605,16977,
-54606,26192,54607,54608,14668,54609,19543,26193,26194,N,N,26195,54610,54611,
-54612,54613,26196,N,N,54614,N,54615,N,26197,N,N,N,54616,N,54617,N,54618,N,N,
-15402,54619,54620,19565,54621,N,54622,54623,26199,54624,17215,54625,26198,
-54626,N,N,N,54627,N,26201,N,N,N,26200,N,N,N,N,N,N,N,26202,N,N,N,16443,N,26203,
-N,26204,N,N,N,19001,26205,54628,16751,26206,N,54629,N,54630,N,26207,N,N,N,N,
-54631,N,20094,26210,54632,26209,26208,17456,54633,26211,16166,N,26212,N,N,N,
-26213,20280,26214,N,54634,N,N,26215,26217,26216,18469,54635,18041,N,20286,
-18473,N,54636,N,N,N,N,26219,N,N,15955,N,18730,N,26220,26218,54637,13390,54638,
-N,N,14420,15208,N,N,18542,54639,54640,N,14378,19267,54641,26223,26221,N,14670,
-N,14671,12393,N,14952,N,N,N,54642,54643,18265,N,N,N,N,N,N,N,N,12383,26228,N,
-17216,N,54644,N,N,N,18264,54645,16987,54646,N,N,54647,N,54648,54649,26230,
-54650,54651,26226,26229,26224,N,26227,19238,N,54652,14421,N,N,12413,26225,N,N,
-N,N,N,N,N,54653,54654,26232,54817,26233,54818,54819,17977,N,54820,N,13883,
-54821,54822,N,26406,18237,54823,15209,54824,N,13884,16456,20294,19502,26231,
-16468,54825,N,N,N,N,N,N,N,N,N,N,54826,54827,54828,N,13651,26234,54829,N,54830,
-N,54831,N,N,26236,54832,N,N,54833,N,26235,N,N,54834,N,N,26237,54835,17190,N,
-18238,N,54836,N,N,N,17457,54837,N,54838,N,26403,N,N,N,N,N,N,54839,26402,54840,
-N,N,54841,26238,54842,N,16213,N,18789,26405,54843,26404,14672,20307,N,54844,N,
-N,N,N,N,N,N,26421,54845,54846,N,N,N,26409,26410,54847,54848,54849,N,15472,N,
-54850,26408,54851,14712,26407,N,N,26411,N,N,54852,17458,18978,16675,N,N,N,N,
-16988,26415,54853,26416,26412,54855,54856,54857,N,26413,N,26414,54858,N,N,
-54859,14673,54854,N,N,26422,N,26418,54860,N,54861,N,18790,54862,19308,18728,
-54863,N,26417,N,54864,26420,26419,N,N,N,19268,26423,N,N,N,N,54865,N,26424,N,
-54866,16695,54867,26425,N,N,26427,N,26431,54868,N,26428,26426,18239,26429,N,
-26430,54870,N,54871,12850,N,26437,26432,54872,54869,N,26433,54873,54874,N,
-26434,N,16929,N,54875,N,54876,26436,26435,26438,54877,N,54878,54879,26439,
-26440,54880,N,16195,54881,12905,N,26441,20055,N,15403,54882,54883,15661,N,N,
-54884,54885,54886,15210,17239,54887,54888,N,54889,54890,26442,26443,12593,
-54891,26444,54892,54893,26445,26446,54894,N,26447,N,26448,13885,23082,26449,N,
-16485,26450,15435,54895,26451,N,20528,54896,54897,N,26452,19038,13404,54898,
-54899,16676,15704,54900,18801,15662,N,54901,54902,N,N,N,N,N,54903,26453,14674,
-26454,18508,N,26468,N,N,N,54904,26456,54905,16969,18293,14399,26455,16677,
-54906,N,N,N,N,N,26457,N,N,54907,54908,54909,54910,17530,N,N,N,55073,N,N,55074,
-55075,N,55076,N,N,N,N,55077,N,26459,26458,26461,N,55078,26460,N,26462,55079,N,
-26464,55080,26463,N,13391,55081,26465,N,26466,26467,N,55082,14897,20041,N,
-26469,16167,N,55083,N,12656,26470,26471,N,N,55084,N,55085,26472,55086,55087,
-55088,N,55089,55090,N,N,55091,N,55092,55093,12402,N,26473,55094,N,N,55095,
-26474,N,55096,N,55097,N,55098,18791,55099,55100,N,15431,N,26476,55101,55102,N,
-55103,55104,13097,12338,55105,55106,55107,55108,26475,26478,18254,55109,16196,
-55110,12886,55111,19239,55112,N,N,55113,14173,13916,55114,26477,55115,12906,
-55116,55117,N,N,N,N,N,13347,55118,N,N,N,N,N,N,N,N,N,55119,12657,26482,20074,
-16989,55120,N,18756,N,26494,55121,12887,26492,N,26490,26481,55122,26479,55123,
-26480,55124,15459,13932,17271,55125,N,55126,18001,N,55127,N,55128,N,12625,N,
-26484,26483,N,55129,55130,N,26489,26485,26488,N,55131,55132,55133,55134,19536,
-26487,12888,13181,26491,55135,55136,26493,55137,55138,N,N,14164,N,N,N,N,N,N,N,
-26659,26668,26669,N,N,55140,12331,55141,55142,55143,N,55144,55145,26676,N,N,N,
-N,12401,N,N,26667,55146,55147,55148,26666,55149,26661,26660,55150,26658,26657,
-17251,55151,17019,26663,55152,N,55153,55154,N,N,26662,N,55155,55156,55157,
-26665,N,55158,N,16752,14165,N,N,55159,55160,12609,26664,55161,14675,55358,
-55139,55162,55163,55164,16753,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-55165,N,N,26682,N,26683,N,12889,55166,N,N,12846,26680,55329,N,55330,55331,N,
-55332,N,55333,26670,55334,26678,N,26685,26679,N,N,55335,26677,N,N,N,55336,
-26486,55337,55338,26675,N,55339,55340,26671,55341,55342,55343,13392,26673,
-26684,N,26674,N,N,N,55344,55345,26686,55346,26672,18300,55347,55372,N,N,N,
-19817,N,N,N,26681,N,N,N,N,N,N,N,26703,55348,55349,55350,26695,N,N,N,16251,N,
-55351,N,55352,13638,N,13917,N,26690,55353,55354,55355,N,12891,55356,N,15956,N,
-26693,N,N,N,14938,55357,N,17745,26698,N,N,N,N,N,N,N,55359,19054,55360,26689,N,
-N,N,12890,14422,18729,26699,N,26687,N,55361,26696,55362,55363,N,26706,55364,
-26691,55365,N,26692,17978,N,55366,26697,N,N,55367,26694,19240,26700,12384,
-55368,N,55369,N,26688,N,55370,N,N,N,55371,N,N,N,N,N,N,26702,N,26701,N,N,N,N,N,
-N,18283,26708,N,26719,N,N,55373,N,13182,N,N,N,26722,N,N,26704,55374,N,N,26709,
-19822,N,N,N,N,N,N,N,55375,26718,55376,55377,19797,55378,N,N,55379,20010,55380,
-N,55381,55382,N,N,N,55383,17272,55384,55385,55386,13163,55387,N,N,N,55388,
-18802,26724,17953,55389,55390,12337,55391,N,26717,55392,26713,16754,26707,
-26715,26720,55393,18220,N,55394,55395,12330,55396,26712,55397,26721,18808,N,
-55398,55399,N,N,N,55400,26716,N,26711,55401,N,N,N,N,N,15957,N,N,N,N,15663,N,
-55402,55403,15404,55404,N,N,N,19544,N,N,18759,N,55405,26727,N,26736,N,N,N,N,
-55406,N,55407,55408,55409,N,N,26714,N,55410,N,55411,13175,N,55412,N,N,N,15992,
-26725,55413,26730,16755,55414,55415,26726,55416,26733,55417,N,17247,N,26734,
-55418,55419,19798,26723,13112,55420,26729,N,55421,26732,19500,N,55422,N,N,
-26735,N,N,26728,26731,N,55585,N,N,N,N,N,N,N,N,N,N,55586,N,N,55587,N,19241,N,
-20257,55588,55589,55590,55591,N,26739,N,N,55592,N,N,55594,55595,26746,55596,N,
-26738,15427,N,55597,55598,N,N,26705,55599,N,N,N,N,55600,N,55601,N,55602,19022,
-N,19490,26745,26744,N,26740,26741,N,12598,N,55603,N,55604,26743,N,26737,55605,
-55606,55607,55608,17493,55609,N,N,55610,55611,26742,12414,N,55612,N,N,55593,
-55613,55614,16930,55615,N,N,N,N,N,N,19011,N,55616,26747,26913,N,18521,N,N,
-55617,N,26750,15958,15433,26915,N,N,13886,55618,55619,55620,55621,55622,N,
-26916,55623,18809,26749,55624,26710,N,55625,55626,55627,55628,55629,55630,
-55631,26748,55632,N,N,N,20303,17954,18803,55633,N,26923,N,55634,N,N,N,N,N,N,N,
-26929,N,55635,55636,55637,N,55638,26930,55639,26917,55640,N,N,18294,55641,
-55642,26927,26919,55643,26921,55644,55645,N,N,55646,26931,26920,N,55647,26924,
-N,N,12658,55648,18021,N,26925,26928,55649,N,55650,55651,N,55652,N,26918,55653,
-16678,55654,26922,15143,16197,14128,19572,55668,19577,15730,N,N,N,N,55655,N,
-55656,55657,55658,26935,26933,N,55659,55660,55661,55662,N,20302,55663,N,N,N,N,
-55664,N,26932,55665,55666,N,19829,55667,26934,26936,N,N,N,N,26937,N,N,55669,N,
-55670,N,26940,26938,N,55671,55672,N,N,N,17955,26939,55673,N,55674,18509,26926,
-N,N,55675,N,N,N,N,N,55676,N,N,55677,15731,N,26941,26946,16756,55678,N,26945,
-55841,55842,N,26914,N,55843,55844,26947,16713,N,N,26942,26944,N,55845,55846,N,
-55847,55848,55849,26943,N,N,23857,23842,55850,55851,26949,55852,N,N,55853,N,N,
-55854,26948,N,N,N,N,55855,N,55856,N,N,N,19830,N,25148,26950,N,N,N,N,N,55857,N,
-55858,N,55859,N,55860,55861,N,26951,55862,47206,55863,N,N,N,55864,N,N,N,N,N,N,
-26952,14423,N,13652,N,55865,55866,26954,20829,55867,55868,55869,55870,13685,N,
-20026,55871,13939,26955,55872,55873,55874,55875,55876,N,N,26956,N,55877,N,
-17262,55878,N,N,55879,N,26957,N,N,N,55880,55881,55882,N,18042,55883,12346,N,N,
-N,N,N,N,N,N,N,N,N,N,55917,N,12899,26962,26963,55884,N,N,N,55885,N,26958,N,
-15165,55886,N,55887,N,55888,N,55889,N,N,N,N,55890,N,26959,18242,N,55891,55892,
-55893,26960,26961,26971,N,55894,N,26965,26968,55895,N,55896,55897,55898,26964,
-55899,55900,55901,N,N,N,N,N,55902,55903,55904,N,55905,26966,55906,26967,15448,
-N,26969,N,17217,N,14166,13122,N,N,55907,55908,N,26972,55909,N,55910,N,13119,
-55911,26977,55912,N,26973,26976,55913,N,N,55914,18490,55915,N,55916,N,26974,N,
-N,26975,18760,18522,26978,N,N,N,N,N,N,N,N,17021,26988,55918,26984,55919,55920,
-12907,26982,N,19242,26983,55921,55922,26980,55923,26981,26986,26989,55924,N,
-26987,55925,55926,55927,26985,26979,55928,55929,N,N,N,17240,55930,26996,N,
-19498,N,55931,55932,N,55933,N,55934,N,26994,N,N,56097,26995,N,N,N,N,56098,
-56099,N,56100,56101,N,26990,N,N,26992,N,56102,56103,26993,56104,56105,56106,
-26991,56107,N,N,56108,N,56109,N,N,N,16486,N,20281,27000,56110,27001,N,N,N,N,
-27169,N,16170,N,27003,56111,27006,N,N,N,56112,N,26998,26997,56113,N,27170,
-56114,56115,12892,N,27004,N,27171,N,N,N,27005,56116,N,56117,56118,N,27002,N,
-17459,N,26999,N,N,56119,N,N,N,18280,N,N,27175,56120,56121,56122,56123,56124,
-56125,56126,N,56127,56128,19771,N,N,56129,N,N,56130,N,56131,N,56132,56133,
-56134,N,N,N,N,56135,27174,56136,N,27173,56137,N,N,N,56138,N,N,N,27182,56139,
-56140,56141,27176,N,56142,N,27184,N,56143,N,N,N,N,19814,27187,N,27178,56144,
-56145,27179,56146,N,N,27183,N,27186,27185,56147,56148,56149,27177,N,N,56150,N,
-27180,N,27197,N,N,56151,56152,N,N,56153,56154,N,56155,N,N,56156,27190,N,56157,
-56158,56159,N,N,N,N,N,56160,56161,N,56162,N,27188,N,56163,27189,56164,N,N,
-27194,27195,56165,13098,56166,13634,N,N,27193,56167,56168,N,56169,N,27172,
-56170,N,N,56171,56172,56173,N,27192,27196,27191,56174,27198,56176,56177,56178,
-27200,27199,N,56179,56175,56180,56181,56182,N,56183,56184,N,27202,27201,26970,
-N,N,N,27206,56185,N,N,N,N,56186,56187,N,56188,27203,56189,N,N,56190,27204,N,N,
-27205,56353,27207,56354,N,N,N,14188,56355,27209,56356,27208,56357,15664,N,
-56358,56359,56360,56361,14676,24103,56362,N,N,56363,27210,15697,N,56364,56365,
-13113,56366,27211,56367,12626,56368,15959,27212,56369,56370,14677,27213,12385,
-56371,N,N,N,18749,56372,N,27214,N,N,N,N,16234,56373,27221,N,N,27218,N,17263,N,
-56374,N,56375,N,27219,27216,13918,56376,27215,27222,N,N,N,N,N,14134,N,N,16990,
-N,27228,N,N,N,N,27224,N,N,N,16949,27223,56377,27226,56378,56379,56380,N,27217,
-56381,56382,N,27227,N,27229,N,N,N,56383,N,56384,18543,N,N,27225,N,27230,27232,
-N,N,14419,27220,N,12353,N,N,56385,N,N,56386,56387,27231,56388,14939,20086,
-27233,27234,16757,N,N,N,N,56389,56390,56391,56392,56393,20002,N,56394,56395,
-56396,27235,19765,N,N,27236,27237,N,56397,19044,27238,56398,14912,N,20003,N,N,
-N,N,N,56399,27243,N,N,N,N,N,N,56400,56401,56402,27244,15960,27242,56403,N,
-56404,19815,27239,N,N,27241,16445,16254,56405,27240,N,27245,N,56406,18979,N,N,
-27247,N,27246,56407,56408,56409,13164,N,19243,27248,N,56410,56411,N,56412,
-56413,56414,N,56415,27260,27250,N,56416,N,N,N,N,27251,56417,56418,56419,N,
-27252,27253,N,N,N,N,56420,56421,56422,N,N,56423,27257,N,27258,56424,56425,
-27256,N,N,56426,N,56427,27254,56428,27249,27255,56429,56430,N,N,56431,N,N,
-27259,28727,N,56432,N,N,56433,N,N,N,12840,56434,N,N,56435,56436,56437,N,27262,
-13919,27261,56438,56439,56440,27426,N,27425,N,N,N,27428,56441,N,27427,56442,
-27429,56443,N,15665,56444,27430,56445,N,27431,N,N,56446,56609,56610,56611,
-27432,16446,N,19799,N,27433,N,N,18980,18246,27434,56612,27435,14379,N,56613,N,
-13612,56614,N,N,27436,56615,56616,15211,18241,27437,N,13136,56617,56618,N,N,
-56619,56620,27438,N,N,N,56621,27440,19831,N,27439,16198,N,27441,N,N,27442,
-56622,N,27443,13393,56623,56624,56625,56626,N,N,27444,N,56627,27445,N,27446,
-27447,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,13137,N,56628,56629,56630,56631,56632,
-N,27448,N,27449,27450,N,N,N,N,N,12914,N,56633,16168,27451,N,56634,N,56635,N,
-56636,N,N,N,56637,N,56638,27452,N,56639,N,27453,56640,N,N,N,56641,N,56642,
-14400,N,17531,27454,56643,56644,N,56645,14167,N,16214,N,27457,N,17956,56646,
-27456,56647,56648,14129,56649,56650,27455,17015,13613,N,N,27458,N,27459,56651,
-15961,56652,N,56653,14189,56654,27460,56655,N,N,N,19244,56656,56657,16479,N,
-56658,N,13686,N,19573,16714,56659,27461,56660,N,N,16199,17264,15962,56661,
-56662,N,56663,27462,N,56664,N,56665,27465,56666,27466,56667,N,N,N,56668,56669,
-N,14910,16962,27464,56670,15963,18750,56671,56672,56673,N,N,27463,56674,56675,
-15212,N,12627,56676,27470,14168,N,56677,15214,56678,N,15213,N,20301,27469,
-27468,16679,N,13645,20291,13114,15964,N,56679,56680,56681,N,56682,56683,56684,
-27467,N,56685,56686,56687,N,27472,56688,27473,27471,56689,14424,N,19776,N,
-56690,15215,18215,N,56691,56692,27476,56693,16448,N,17218,56694,56695,19766,
-56696,27479,N,N,N,14444,56697,16447,27475,N,27480,14445,27477,27478,56698,
-27474,56699,N,N,16482,17993,56700,56701,17199,N,12893,56702,N,N,56865,56866,N,
-18544,N,56867,13635,N,56868,17460,N,N,27483,56869,27481,N,56870,17228,56871,
-56872,56873,16449,13394,27482,N,16219,N,56874,20042,56875,56876,56877,20288,
-56878,N,N,27484,27495,17461,56879,27494,56880,27491,27499,27492,N,27488,N,
-17532,27487,N,N,N,27485,56881,19745,15216,N,56882,27489,N,27486,56883,56884,
-56885,27493,15732,N,14401,N,56886,N,17018,56887,19269,12634,12386,N,17957,
-56888,56889,27497,N,N,56895,56890,27496,N,18022,N,27501,56891,N,N,27490,N,
-27500,27502,N,14380,27498,14678,56892,15445,56893,56894,27503,19800,N,N,N,N,
-27506,N,27509,N,N,27507,18741,56896,N,N,56897,N,N,27504,N,N,N,56898,N,13920,N,
-N,56899,N,27508,N,N,27510,56900,56901,56902,56903,56904,N,56905,27514,N,N,
-27511,56910,27513,27512,N,N,56906,56907,56908,N,27515,N,15409,56909,27517,
-27516,18792,N,56911,27681,N,N,N,56912,N,N,14169,N,N,N,N,27518,27682,56913,N,
-27683,13636,26177,15993,N,27684,N,56914,14446,56915,56916,N,N,56917,27685,
-56918,N,27686,56919,N,15166,56920,56921,N,N,N,N,23118,56922,27687,56923,27688,
-56924,15666,N,27689,27690,56925,56926,27691,N,N,27692,27693,N,56927,N,56928,
-56929,17195,56930,56931,27694,N,N,56932,56933,27696,N,27695,N,N,N,56934,17958,
-56935,27697,56936,19245,56937,27698,N,27699,56938,27700,56939,N,56940,56941,
-27701,N,56942,56943,56946,18010,56944,N,56945,N,N,N,15965,27702,56947,56948,N,
-56949,N,56950,56951,14699,20526,27703,56952,N,N,N,N,N,56953,N,56954,56955,N,
-27704,18751,27705,56956,27713,N,56957,N,N,N,27706,N,N,27708,56958,57121,N,
-27707,27709,57122,19270,27710,27711,N,57123,N,57124,57125,27712,N,N,N,27714,
-57126,N,57127,57128,13101,17511,N,18793,14946,14679,N,57129,N,N,18767,12895,
-18510,27717,13395,16469,27716,27721,17273,19555,N,27719,27720,13614,N,27722,
-18275,16991,57130,57131,18545,17725,27718,N,19271,12908,27724,20264,17474,
-20293,57132,57133,15217,27723,57134,16945,57135,N,27740,16680,57136,N,18040,N,
-18768,N,57138,57137,N,N,57139,27727,15167,15218,57140,15966,N,18277,57141,
-14381,27726,27725,N,18794,N,57142,N,15425,N,57143,17746,N,57144,57145,N,57146,
-N,N,57147,N,57148,57149,N,27729,27730,14680,27728,57150,57151,57152,N,57153,
-27731,27732,N,27734,16931,57154,27733,13414,N,27736,N,27735,27737,N,57155,
-27739,27741,N,27742,57156,N,N,N,57157,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,16470,57158,15439,27743,N,57159,N,13138,57160,27744,
-57161,N,16758,27745,N,27746,18795,N,N,13615,N,N,N,N,N,N,N,57162,N,27747,57163,
-N,57164,17462,N,N,57165,N,12635,N,N,57166,N,N,57167,57168,N,N,N,57169,N,N,N,
-27748,N,N,N,N,57170,57171,57172,N,N,15473,N,N,57173,N,16246,N,N,57174,57175,N,
-N,57176,N,N,57177,16941,N,57178,N,57179,N,57180,27751,57181,57199,N,27750,N,
-57182,N,27749,N,N,57183,57184,57185,57186,N,57187,27757,27755,N,57188,27752,N,
-57189,N,N,57190,57191,27754,57192,N,57193,27753,27756,N,13687,N,27760,N,16471,
-N,27761,57194,57195,N,57196,14425,N,27758,27759,57197,N,N,20265,57198,57200,
-57201,17463,57202,16681,N,N,N,N,N,N,27762,57203,N,27765,57204,N,N,57205,57206,
-57207,N,27763,27764,19801,57208,N,N,N,17959,27768,57209,N,N,57210,N,57211,N,N,
-N,N,N,N,27766,27767,27769,57212,57213,57214,57377,N,N,57378,57379,N,N,27945,N,
-N,N,N,N,27772,57380,N,57381,27773,27771,57382,57383,57384,57385,N,N,N,57386,N,
-N,57387,57388,27770,N,17533,N,N,27937,27941,27938,27774,57389,27939,57390,
-57391,57392,27940,N,N,N,57393,27947,N,N,N,27942,N,57394,57395,57396,57397,
-16472,27944,57398,57399,27946,27943,N,N,N,N,57400,N,N,57401,57402,N,57403,
-57404,57405,27949,N,15667,N,27948,N,N,57406,57407,57408,27950,N,N,N,N,27951,
-57409,57410,27954,27953,N,27952,N,57411,27956,27955,N,19574,N,N,57412,27958,
-57413,27957,27959,57414,N,N,N,27960,57415,57416,N,57417,57418,N,N,27962,57419,
-N,N,N,N,57420,N,57421,27961,16200,27963,57422,57423,13933,27964,27966,N,57424,
-N,57425,N,N,N,N,57426,57427,N,N,27967,N,57428,57429,N,57430,57431,27968,27965,
-57432,27969,N,15446,27970,13616,14131,N,57433,N,57434,14382,N,57435,N,N,N,N,N,
-N,27971,57436,N,N,18032,N,N,17726,27972,N,N,N,N,57437,N,N,27975,N,57444,57438,
-N,57439,57440,N,N,N,N,N,57441,15412,57442,57443,27974,27973,14170,27976,57445,
-N,57446,13139,N,27978,N,57447,57448,14940,27977,N,27986,N,N,57449,57450,N,
-27980,27982,19045,27979,57451,57452,57453,27981,N,27985,27983,13617,57454,
-27984,57455,57456,N,57457,N,57458,27987,57459,57460,18266,20056,N,57461,57462,
-57463,15668,N,N,N,27988,57464,57465,57466,57467,19746,27990,57468,27989,N,N,
-27993,19777,57469,57470,27992,57633,13165,27991,27996,57634,N,27995,N,N,27994,
-17714,27997,57635,N,57636,57637,57638,57639,57640,N,27998,57641,N,N,N,27999,
-57642,57643,14700,N,14117,28000,28001,28002,57644,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-16201,28003,57645,15405,28004,57646,57647,N,28005,57648,57649,57650,21025,
-20862,N,N,N,N,28006,25968,28007,17188,16171,18240,N,N,57651,57652,28008,57653,
-N,19029,17492,14718,N,57654,17193,57655,57656,12586,N,19320,16215,57657,N,N,N,
-57658,57659,N,57660,14174,N,57661,13921,57662,57663,19030,57664,N,N,N,N,28009,
-N,N,N,N,N,57665,N,28011,57666,57667,28010,12896,N,57668,18038,28012,18295,N,
-17715,57669,28013,15698,57670,N,N,28015,57671,57672,19522,28030,28017,28018,
-57673,N,17481,57674,16992,16759,57675,17960,57676,28016,13653,N,57677,N,N,
-28025,57678,28022,28197,17961,17248,28019,N,17534,17747,28020,28024,16224,
-57679,18279,17484,57680,N,16450,28023,16942,16932,28021,12329,20258,N,N,N,
-28026,57681,57682,57684,N,57685,57686,16993,57683,N,15669,16202,57687,57688,
-28028,28027,57689,12399,28029,N,N,18735,N,28199,57690,N,18011,16235,57691,
-57692,17241,N,13944,N,28198,19767,12607,57693,19031,12897,28193,28194,28195,
-28196,17979,17187,12387,28200,N,28201,29731,N,57694,16957,57695,28202,N,12659,
-16716,57696,14383,N,19802,57697,57698,28203,17708,N,N,57699,16760,15447,28204,
-57700,N,28207,N,57701,15717,28205,16683,16682,57702,12388,N,20043,28209,N,
-18546,28211,28210,28208,25444,13396,57703,N,28014,57704,28213,28212,57705,
-57706,N,57707,28214,57708,19768,N,N,N,57709,N,57710,57711,57712,N,57713,N,N,N,
-N,57714,57715,57716,18017,N,57717,19246,N,28215,N,15449,N,N,N,N,28216,57718,
-28217,57719,57720,57721,28218,57722,N,17697,N,N,N,N,57723,57725,N,N,12394,N,
-57726,57889,57890,N,57891,57892,N,14681,N,57724,N,20282,N,N,N,57901,N,N,57893,
-N,57894,57895,57896,N,28222,57897,57898,N,57899,N,14132,28219,N,28220,57900,N,
-N,18804,N,N,57903,N,13140,N,57904,57905,N,N,N,57906,19769,57902,13887,N,N,N,N,
-N,17748,57907,57908,57909,N,28223,N,57910,57911,57912,N,57913,N,N,N,N,57914,N,
-N,57915,N,28224,N,57916,N,57917,57918,57919,28225,57920,N,57921,N,57922,N,
-57923,N,57925,57926,N,57924,N,57927,N,57928,N,N,N,17698,57929,57930,28227,
-57931,28226,N,57932,N,57933,57934,N,57935,57936,N,57937,57938,N,N,N,N,N,57939,
-N,N,N,57940,57941,18003,28228,15670,15456,18267,17265,57942,N,N,15474,57943,
-16236,N,28229,57944,28230,57945,57946,57947,N,N,N,N,N,57948,16221,28231,57949,
-28232,N,57950,N,28233,19823,N,15671,57951,N,N,N,N,28235,28234,57952,14682,N,
-14707,15168,57953,57954,57955,N,N,N,N,N,57956,28238,57957,N,57958,57959,15718,
-N,28237,57960,28236,N,17001,57961,N,14447,57962,16451,57963,57964,57965,N,
-18480,57966,N,N,N,15673,N,57967,N,N,57968,28239,N,15967,N,57969,N,57970,N,
-28242,28240,57971,57972,57973,28241,57974,57975,57976,57977,28244,28243,57978,
-N,15994,N,28245,57979,57980,57981,N,57982,28246,28247,58145,58146,N,58147,
-18512,14931,15457,28248,N,28249,20004,15685,19566,20044,28250,13922,N,58148,
-58149,N,28251,58150,17699,58151,58152,28254,13176,16203,58153,28252,N,28253,N,
-17504,58154,58155,19285,13948,N,58156,58157,N,58158,58159,58160,58161,58162,
-58163,N,N,N,28256,28257,58164,N,58165,N,58166,28255,58167,N,28259,58168,58169,
-N,N,58170,58171,58172,58173,N,58174,58175,N,58176,18015,13123,N,58177,28263,
-58178,58179,28260,28262,58180,N,58181,N,N,N,58182,58183,28258,N,N,N,N,58184,
-58185,58186,58187,N,58188,28495,N,N,28261,N,58189,58190,58191,N,N,58192,20075,
-58193,58194,14426,58195,58196,58197,N,58198,N,58199,28271,58200,N,58201,58202,
-17716,28266,58203,58204,28269,28267,58205,28272,N,58206,58207,58208,28273,
-58209,N,N,N,N,N,28265,58210,58211,28278,12660,58212,58213,28264,N,58214,58215,
-18477,N,28268,58216,15968,58217,58218,58219,N,N,N,N,58220,58221,58222,14683,N,
-N,N,58223,58224,58225,58226,58227,N,58228,58229,58230,19272,58231,13924,N,N,
-15686,N,17980,N,N,58232,58233,58234,N,N,58235,58236,N,N,16685,58237,28276,N,
-28270,28275,58238,19523,58401,17464,28277,28274,N,N,58402,58403,N,N,N,58404,
-58405,N,58406,58407,N,N,58408,N,16684,N,58409,N,N,58410,N,N,N,58411,28281,
-58412,28280,58413,58414,58415,58416,N,58417,58418,58419,58420,58421,N,58422,
-58423,58424,58425,N,N,58426,58427,58428,58429,28279,58430,N,19247,58431,N,
-58432,N,58433,58434,58435,N,N,58436,58437,N,58438,58439,58440,N,58441,15739,
-58442,N,58443,58444,28282,19039,N,58445,12628,58446,N,58447,N,18758,17266,N,N,
-N,N,13688,58448,28284,58449,14685,N,N,58450,58451,N,58452,N,N,N,15148,N,58453,
-N,N,N,N,58454,N,28283,16237,58455,N,N,58456,58457,N,N,16238,28449,28451,N,
-58458,58459,58460,58461,15995,58462,28450,28452,58463,58464,13907,58465,18757,
-58466,58467,15458,20259,N,28286,14968,N,N,20287,58468,58469,28454,58470,58471,
-N,N,28453,28455,N,N,N,N,N,N,N,N,28285,N,N,58472,58473,58474,N,18025,N,17749,N,
-N,58475,58476,58477,N,17495,58478,28460,58479,58480,N,58481,17219,28456,N,
-58482,N,28457,N,N,N,58483,58484,N,58485,N,58486,58487,N,14125,58488,28459,
-58489,58490,58491,N,58492,58493,14384,58494,N,N,N,58657,N,28458,58658,15969,
-58659,58660,58661,58662,N,N,N,N,N,58663,N,58664,58665,13177,58666,N,58667,N,N,
-58668,N,28464,58669,14911,16761,58670,N,17482,58671,N,N,58672,N,N,58673,N,
-58674,58675,N,58676,13115,58677,58683,N,58678,28462,28463,17475,N,28461,N,N,N,
-58679,58680,58681,N,N,28465,58682,N,N,N,N,N,N,58684,N,28471,58685,58686,58687,
-58688,28474,58689,58690,58691,58692,58693,N,N,28473,17709,N,58694,N,N,28466,
-28467,28470,58695,N,N,58696,28472,58697,58698,N,13888,58699,N,28475,28469,
-58700,58701,28468,N,N,N,N,N,N,N,N,N,N,N,N,N,N,58703,58704,58702,58705,58706,N,
-58707,58708,58709,28479,58710,N,N,28480,58711,58712,N,N,N,58713,58714,58715,
-28481,N,N,28478,28477,58716,58717,58718,15970,17962,28476,N,N,N,N,58719,N,
-28485,N,N,N,N,N,N,N,N,N,28483,N,N,58720,58721,N,58722,58723,58724,58725,28484,
-28482,N,17016,N,28486,58726,N,58728,N,58727,N,28487,N,58729,28489,58730,N,N,
-58731,N,58732,N,58733,N,N,N,N,13397,28488,19578,N,58734,N,N,N,58735,28500,
-28490,58736,N,28493,58737,28491,58738,28492,58739,N,N,N,N,58740,N,28494,58741,
-N,58742,58743,58744,28496,58745,58746,N,N,28497,N,28498,N,N,N,N,28501,28499,
-28502,28504,N,28503,N,58748,58747,17465,58749,58750,N,N,N,N,58913,N,19559,N,
-28505,16686,58914,N,N,28506,58915,19012,28507,13099,58916,58917,58918,12604,N,
-13399,N,13398,28508,N,28509,N,28510,28511,N,N,N,58919,58920,58921,28512,58922,
-13400,13141,14686,18486,58923,28514,28513,58924,N,58925,58926,28515,N,N,N,N,
-12636,N,58927,N,58928,N,N,28518,58929,28517,28516,58930,28519,58931,N,N,N,
-28522,N,N,58932,12359,58933,58934,28520,58935,28524,28523,N,N,58936,58937,
-58938,58939,28526,28525,28527,N,17966,58940,58941,N,28528,58942,58943,58944,
-58945,28529,28531,N,58946,28530,58947,18796,58948,58949,N,N,28532,58950,N,
-58951,58952,58953,N,28533,N,14949,N,58954,N,28534,28535,N,58955,19273,58956,N,
-N,N,58957,58958,58959,58960,16715,58961,58962,N,12324,16971,58963,28536,N,
-18797,N,N,N,N,N,N,28539,28537,14687,N,28538,14402,N,58964,N,58965,N,58966,
-58967,58968,N,N,19013,28541,28705,28542,28706,N,58969,12577,16216,15740,13401,
-28707,N,N,N,18278,N,28709,N,58970,N,12578,N,28708,17476,58971,20045,17963,
-28540,20006,N,14385,58972,58973,19803,58974,58975,N,58976,58977,58978,58979,
-13945,20020,N,14120,58980,16994,26401,N,28710,13100,16239,N,58981,N,N,13142,
-28712,58982,28713,28711,14180,58983,14941,15971,58984,N,58985,12579,N,N,20057,
-58986,58987,58988,28715,28206,58989,28714,N,N,N,58990,58991,28718,28716,28717,
-58992,28719,N,28720,20076,28721,28722,58993,16457,18491,N,N,N,16253,13415,N,N,
-19770,12909,15672,14427,N,28725,58994,28724,15219,28726,28723,N,N,15144,58995,
-N,N,28730,27181,N,58997,21078,58998,16247,28728,58999,59000,59001,N,N,20005,
-18033,N,N,N,N,12587,59002,16483,15414,N,N,N,59003,18999,59004,12608,N,N,N,
-20077,19819,N,28731,59005,17733,15483,N,59006,59169,28732,59170,28733,16204,
-28734,59171,20078,N,N,28729,28736,28738,N,28737,N,28735,N,N,28739,N,N,28740,
-59172,59173,16762,59174,12898,N,N,59175,59176,59177,28741,N,N,19512,59178,N,
-28742,N,N,N,N,N,28743,59179,20266,59180,N,N,N,N,23345,28744,N,N,N,28745,28746,
-N,N,59181,28750,59182,28747,N,28748,N,28749,28751,59183,N,N,N,59184,59185,N,N,
-16452,N,N,59186,19575,59187,59188,16453,59189,59190,28752,N,18547,N,28753,
-29523,19532,59191,28754,N,28755,59192,28756,13143,59193,28758,N,16217,59194,N,
-N,28759,N,59195,14116,N,59196,59197,59198,28760,28764,59199,28762,59200,N,
-59201,59202,28763,N,N,13171,28761,28765,N,N,59203,N,28766,N,12360,N,28767,
-28768,N,N,N,N,59204,59205,59206,15972,59207,59208,N,28769,N,59209,59210,13639,
-N,59211,28772,N,N,28771,N,28770,N,N,27505,59212,19036,59213,N,N,59214,59215,
-28773,28774,59216,59217,N,59218,59219,59220,N,59221,N,59222,59223,N,59224,N,
-28775,59225,59226,28776,59227,28777,59228,59229,28778,59230,59231,59232,N,
-59233,59234,N,13402,59235,N,N,59236,59237,59238,N,59242,28779,59239,59240,N,
-59241,59243,N,N,59244,N,N,N,N,N,N,N,N,28780,18211,59245,N,59246,28782,12859,
-59247,28785,28784,59248,59249,N,59250,12580,N,N,N,13889,19015,17466,14882,N,
-14688,15719,59251,16220,N,59252,N,28787,59254,59255,28786,19778,13416,18514,
-18012,59256,N,59257,16252,20046,59253,14171,N,59258,N,59259,N,59260,28790,N,
-59261,28789,59432,59262,N,N,N,N,59425,19275,17964,59426,59427,59428,N,59429,
-59430,12624,59431,N,28791,28788,N,N,18769,19818,28792,59433,N,N,N,N,N,59434,N,
-28793,59435,N,N,59436,28795,17002,13147,13148,28794,N,59437,59438,59439,13417,
-14386,59440,59441,13418,59442,59443,17727,N,N,20064,N,N,N,59444,59445,N,59446,
-59447,14428,N,N,59448,28796,59449,N,N,28797,28798,28961,N,28963,28962,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,18807,N,28964,59450,N,59451,59452,28965,59453,28966,N,N,59454,
-N,28967,59455,59456,N,59457,59458,N,N,N,59459,N,N,59460,28969,28968,59461,
-28970,N,59462,N,N,N,59463,N,N,N,N,N,N,N,N,N,N,N,N,N,N,18548,26188,N,N,16169,N,
-59464,13618,59465,N,59466,59467,59468,N,28971,59469,28972,N,21036,23867,18515,
-N,N,12411,59470,12347,N,59471,N,N,N,N,N,15220,19248,15998,59472,28973,N,19551,
-N,59473,59474,28974,19804,N,12610,N,N,N,15169,59475,28975,12910,28976,59476,
-59477,59478,28977,N,59479,59480,59481,28979,28980,59482,28982,28978,59483,N,
-28981,N,59484,59485,13403,N,N,59486,28983,N,28984,N,N,59487,59488,59489,59490,
-59491,N,N,N,59492,59493,59494,59495,28985,28986,N,59496,59497,28987,N,N,28989,
-59498,59499,59500,28988,N,28991,28994,59501,59502,N,28990,28992,28993,N,59503,
-28995,N,13890,59504,59505,N,59506,59507,N,59508,59509,59510,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,15475,28996,28997,14689,N,59511,N,59512,N,59513,N,N,N,N,N,28998,
-59514,N,13118,N,N,N,18255,28999,29000,N,59515,59516,59517,17242,18027,59518,N,
-N,N,59681,59682,N,29001,59683,N,59684,N,18301,N,59685,16972,12632,13934,N,
-13935,59686,N,N,N,N,N,N,17267,29006,13936,59687,59688,12911,N,N,29005,59689,
-59690,29003,59691,29004,59692,29002,N,N,29016,N,N,N,N,59693,N,N,59694,59695,
-59696,29007,29008,N,59697,29009,29010,N,59698,59699,N,N,29012,59700,N,29011,N,
-59701,59702,15705,29013,59703,59704,59705,29015,N,N,N,N,N,59706,59707,N,13619,
-29014,59708,59709,16763,14387,N,N,59710,N,N,29017,N,N,N,N,59711,N,59712,N,
-59713,59714,59715,N,N,59716,16973,N,N,29018,N,59717,59718,N,17965,N,N,59719,N,
-59720,59721,29019,59722,N,N,N,N,N,29024,N,29022,59724,29021,29023,59725,29020,
-N,59723,N,N,59726,59727,59728,29026,59729,N,N,59730,N,N,59731,29025,59732,
-29028,N,N,13891,29027,N,59733,N,29029,N,N,29030,N,29032,29031,N,N,N,29033,
-29035,29034,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,14716,N,59734,N,59735,
-29036,59736,59737,29037,N,59738,N,59739,59740,59741,N,13116,59742,N,59743,
-29038,N,59744,59745,29039,59746,N,59747,16241,N,59748,N,59749,N,N,N,N,N,59750,
-29040,59751,29041,59752,29042,29043,59753,59754,59755,14690,N,N,59756,59757,N,
-29044,29045,59758,N,29046,29047,59759,59760,29048,59761,N,59762,18481,29050,
-59763,18726,29051,29049,N,29053,59764,59765,29052,59766,N,29054,N,59767,59768,
-29217,N,59769,N,59770,59771,59772,59773,59774,59937,59938,29218,N,59939,59940,
-N,59941,59942,59943,59944,N,59945,N,59946,N,N,N,59947,N,29219,59948,29220,
-59949,59950,N,N,29221,59951,N,29222,29223,N,29224,59952,29225,29226,29227,
-29228,59953,N,59954,29229,29230,N,23861,29231,59955,59956,59957,N,59958,N,
-59959,59960,25720,13620,59961,N,N,N,13089,14898,29233,29232,19493,N,N,59962,N,
-N,59963,59964,29235,29236,29234,N,29237,N,N,19298,59965,59966,59967,29238,N,
-13691,59968,N,N,59969,N,N,59970,N,59971,N,59972,59973,N,59974,N,59975,59976,
-59977,59978,59979,20261,N,N,N,59980,29239,59981,N,59982,59983,59984,N,N,N,N,N,
-59985,59986,N,N,29241,59987,59988,59989,59990,N,59991,59992,59993,N,59994,
-12350,59995,59996,29242,18987,29240,59997,N,29243,29244,N,N,59998,N,N,59999,
-60000,29245,29246,N,N,N,N,N,60001,60002,29247,60003,19310,15149,60004,14970,
-16687,N,60005,60006,60007,N,29248,N,N,60008,60009,29251,N,60010,60011,N,60012,
-60013,29249,60014,N,N,N,N,29252,60015,60016,14449,29250,N,N,N,60017,29253,
-60018,29254,29255,N,29259,N,15146,60019,60020,N,N,16996,N,60021,N,60022,N,
-29260,29257,29256,29258,60023,N,60024,14175,N,60025,60026,N,N,N,60027,29264,
-29263,29262,60028,N,12339,N,60029,60030,60193,60194,N,N,60195,N,60196,60197,N,
-60198,N,29274,N,29270,N,29271,29267,29273,60199,29269,13154,N,60200,20300,
-60201,29272,29268,29266,29265,60202,N,60203,60204,60205,29276,60206,N,60207,N,
-N,29279,60208,60209,29278,29277,60210,60211,60212,60213,60214,N,N,18761,29275,
-12403,29280,60215,29282,N,N,60216,60217,60218,N,13167,29261,12599,N,60219,
-29284,N,N,60220,N,60221,60222,60223,29283,29281,17197,60224,60225,N,N,N,60226,
-60227,60228,N,19312,60229,60230,N,60231,20058,60232,N,29285,60233,60240,60234,
-60235,60236,29286,N,N,60237,N,N,N,29287,60242,60238,60239,60241,N,N,60243,N,
-60244,N,60245,N,N,60246,29288,60247,29289,N,N,60248,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,17467,60249,29290,N,18487,N,29295,29291,N,N,N,
-29292,N,60250,19249,19524,N,18000,60251,N,60252,60254,29296,N,N,29297,17982,
-29294,29293,N,60253,N,N,12842,N,N,60255,29305,N,N,29304,N,60256,60257,N,N,
-12661,60258,60259,60260,29302,N,N,N,29301,N,N,29299,N,13179,N,29298,15410,
-12841,N,N,60261,60262,N,60263,60264,60265,N,N,N,N,N,60266,14691,60267,60269,
-29308,29307,N,29306,60270,60271,29303,60268,29309,60272,29310,N,60273,N,N,N,N,
-N,29477,29476,N,60274,60275,N,N,N,N,29478,N,N,12589,29473,29474,60276,14708,
-19513,60278,60277,29475,60279,N,N,N,60280,60281,60282,19250,N,N,29483,60283,N,
-29479,N,N,N,60284,60285,N,N,29484,60286,60449,N,60450,N,N,N,N,60451,60452,N,
-60453,29481,N,29480,60454,N,N,60455,60456,14172,N,N,60457,60458,N,60459,60460,
-60461,60462,N,29485,N,N,N,N,N,N,60463,N,N,29486,N,N,N,N,29487,60464,29482,
-60465,N,60466,29300,N,60467,29488,N,17505,60468,N,N,29492,60469,29493,29491,
-60470,N,N,60471,N,29490,29496,60472,29489,N,29494,60473,N,60474,60475,N,N,N,N,
-29495,N,N,N,29498,60476,60477,60478,60479,N,29497,60480,N,N,N,60481,60482,
-60483,N,N,N,N,60484,29500,60485,N,60486,N,60487,N,29501,60488,29502,60489,N,
-20297,60490,60491,N,N,N,29499,17003,14957,N,N,29503,60492,60494,N,N,N,N,60495,
-N,N,60493,N,N,N,60496,N,60497,60498,60499,N,N,60500,60501,N,N,60502,29504,
-29505,60503,60504,29506,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29507,N,N,14388,29508,60505,60506,
-60507,29509,N,15407,60508,29510,60509,60510,60511,60512,N,60513,29511,N,N,
-29512,29513,N,60514,60515,N,29516,29514,20284,N,29515,60516,20079,60517,N,N,
-60518,N,29517,60519,20059,N,N,N,N,60520,29518,18302,N,60521,29519,29521,N,
-60522,29522,60523,60524,60525,N,N,60526,60527,60528,N,N,29520,14701,19533,
-19299,22135,N,23904,19323,N,N,N,N,12843,N,60529,N,60530,N,N,60531,29524,13648,
-29525,29526,29527,N,14709,N,29528,60532,N,N,24660,19547,N,16995,29529,29531,
-29530,60533,29532,N,N,N,60534,29533,N,60535,29534,N,N,N,60536,60537,60538,
-29535,60539,60540,60541,N,29536,60542,29537,29538,60705,29539,N,29540,29541,
-29542,N,60706,60707,60708,N,N,N,29543,29544,60709,N,N,N,N,17700,60710,60711,
-60712,60713,14429,60714,29546,60715,60716,N,60717,60718,60719,N,N,N,60720,
-16717,29547,60721,N,N,N,60722,N,N,N,60723,60724,29548,N,N,60725,N,60726,60727,
-N,60728,N,N,60729,N,60730,60731,18721,60732,60733,29549,60734,N,60735,N,60736,
-60737,60738,60739,60740,N,N,29550,25399,N,N,27738,28781,N,N,29551,60741,29552,
-60742,60743,60744,60745,N,60746,N,N,60747,60748,29554,29555,29556,20080,29553,
-N,N,29557,29558,60749,60750,29560,N,29559,60751,60752,60753,60754,60755,29562,
-60756,N,60757,29563,29561,N,N,60758,N,N,60759,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-20022,N,60760,60761,60762,60763,N,60764,29564,60765,60766,N,N,N,N,29565,25428,
-60767,N,29566,60768,60769,60770,N,60771,8490,N,8564,8560,8563,8565,N,8522,
-8523,8566,8540,8484,N,8485,8511,9008,9009,9010,9011,9012,9013,9014,9015,9016,
-9017,8487,8488,8547,8545,8548,8489,8567,9025,9026,9027,9028,9029,9030,9031,
-9032,9033,9034,9035,9036,9037,9038,9039,9040,9041,9042,9043,9044,9045,9046,
-9047,9048,9049,9050,8526,N,8527,8496,8498,8494,9057,9058,9059,9060,9061,9062,
-9063,9064,9065,9066,9067,9068,9069,9070,9071,9072,9073,9074,9075,9076,9077,
-9078,9079,9080,9081,9082,8528,8515,8529,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8497,
-N,8559,
-};
-
-static const struct unim_index jisxcommon_encmap[256] = {
-{__jisxcommon_encmap+0,92,255},{__jisxcommon_encmap+164,0,245},{
-__jisxcommon_encmap+410,199,221},{__jisxcommon_encmap+433,132,206},{
-__jisxcommon_encmap+508,1,95},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{__jisxcommon_encmap+603,16,59},{__jisxcommon_encmap+647,3,212},{
-__jisxcommon_encmap+857,0,165},{__jisxcommon_encmap+1023,18,18},{0,0,0},{
-__jisxcommon_encmap+1024,0,239},{__jisxcommon_encmap+1264,5,111},{0,0,0},{0,0,
-0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-__jisxcommon_encmap+1371,0,254},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{__jisxcommon_encmap+1626,0,255},{
-__jisxcommon_encmap+1882,0,255},{__jisxcommon_encmap+2138,0,254},{
-__jisxcommon_encmap+2393,0,254},{__jisxcommon_encmap+2648,0,255},{
-__jisxcommon_encmap+2904,0,250},{__jisxcommon_encmap+3155,1,255},{
-__jisxcommon_encmap+3410,0,255},{__jisxcommon_encmap+3666,5,255},{
-__jisxcommon_encmap+3917,0,255},{__jisxcommon_encmap+4173,0,253},{
-__jisxcommon_encmap+4427,2,255},{__jisxcommon_encmap+4681,0,253},{
-__jisxcommon_encmap+4935,0,255},{__jisxcommon_encmap+5191,1,253},{
-__jisxcommon_encmap+5444,1,254},{__jisxcommon_encmap+5698,0,255},{
-__jisxcommon_encmap+5954,1,255},{__jisxcommon_encmap+6209,7,253},{
-__jisxcommon_encmap+6456,0,255},{__jisxcommon_encmap+6712,0,255},{
-__jisxcommon_encmap+6968,1,250},{__jisxcommon_encmap+7218,6,255},{
-__jisxcommon_encmap+7468,0,255},{__jisxcommon_encmap+7724,0,255},{
-__jisxcommon_encmap+7980,0,255},{__jisxcommon_encmap+8236,2,253},{
-__jisxcommon_encmap+8488,0,255},{__jisxcommon_encmap+8744,0,253},{
-__jisxcommon_encmap+8998,2,255},{__jisxcommon_encmap+9252,2,244},{
-__jisxcommon_encmap+9495,4,252},{__jisxcommon_encmap+9744,0,255},{
-__jisxcommon_encmap+10000,1,254},{__jisxcommon_encmap+10254,0,253},{
-__jisxcommon_encmap+10508,3,255},{__jisxcommon_encmap+10761,0,254},{
-__jisxcommon_encmap+11016,2,255},{__jisxcommon_encmap+11270,0,255},{
-__jisxcommon_encmap+11526,3,255},{__jisxcommon_encmap+11779,0,254},{
-__jisxcommon_encmap+12034,0,252},{__jisxcommon_encmap+12287,2,255},{
-__jisxcommon_encmap+12541,0,252},{__jisxcommon_encmap+12794,0,255},{
-__jisxcommon_encmap+13050,2,254},{__jisxcommon_encmap+13303,0,254},{
-__jisxcommon_encmap+13558,0,251},{__jisxcommon_encmap+13810,0,158},{
-__jisxcommon_encmap+13969,54,255},{__jisxcommon_encmap+14171,0,254},{
-__jisxcommon_encmap+14426,2,255},{__jisxcommon_encmap+14680,0,254},{
-__jisxcommon_encmap+14935,0,253},{__jisxcommon_encmap+15189,1,255},{
-__jisxcommon_encmap+15444,0,255},{__jisxcommon_encmap+15700,0,254},{
-__jisxcommon_encmap+15955,0,255},{__jisxcommon_encmap+16211,1,254},{
-__jisxcommon_encmap+16465,1,255},{__jisxcommon_encmap+16720,0,255},{
-__jisxcommon_encmap+16976,0,159},{__jisxcommon_encmap+17136,55,255},{
-__jisxcommon_encmap+17337,1,255},{__jisxcommon_encmap+17592,1,254},{
-__jisxcommon_encmap+17846,0,254},{__jisxcommon_encmap+18101,0,255},{
-__jisxcommon_encmap+18357,0,255},{__jisxcommon_encmap+18613,0,255},{
-__jisxcommon_encmap+18869,0,253},{__jisxcommon_encmap+19123,1,132},{
-__jisxcommon_encmap+19255,119,230},{__jisxcommon_encmap+19367,28,251},{
-__jisxcommon_encmap+19591,0,255},{__jisxcommon_encmap+19847,1,254},{
-__jisxcommon_encmap+20101,2,255},{__jisxcommon_encmap+20355,1,255},{
-__jisxcommon_encmap+20610,0,255},{__jisxcommon_encmap+20866,0,249},{
-__jisxcommon_encmap+21116,2,254},{__jisxcommon_encmap+21369,2,255},{
-__jisxcommon_encmap+21623,2,165},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,
-0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{__jisxcommon_encmap+21787,1,229},
-};
-
-static const ucs2_t __cp932ext_decmap[969] = {
-65340,65374,8741,65372,8230,8229,8216,8217,8220,8221,65288,65289,12308,12309,
-65339,65341,65371,65373,12296,12297,12298,12299,12300,12301,12302,12303,12304,
-12305,65291,65293,177,215,U,247,65309,8800,65308,65310,8806,8807,8734,8756,
-9794,9792,176,8242,8243,8451,65509,65284,65504,65505,65285,65283,65286,65290,
-65312,167,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,
-8251,12306,8594,8592,8593,8595,12307,U,U,U,U,U,U,U,U,U,U,U,8712,8715,8838,
-8839,8834,8835,8746,8745,U,U,U,U,U,U,U,U,8743,8744,65506,9312,9313,9314,9315,
-9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,9327,9328,9329,9330,
-9331,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,U,13129,13076,13090,
-13133,13080,13095,13059,13110,13137,13143,13069,13094,13091,13099,13130,13115,
-13212,13213,13214,13198,13199,13252,13217,U,U,U,U,U,U,U,U,13179,U,12317,12319,
-8470,13261,8481,12964,12965,12966,12967,12968,12849,12850,12857,13182,13181,
-13180,8786,8801,8747,8750,8721,8730,8869,8736,8735,8895,8757,8745,8746,32394,
-35100,37704,37512,34012,20425,28859,26161,26824,37625,26363,24389,20008,20193,
-20220,20224,20227,20281,20310,20370,20362,20378,20372,20429,20544,20514,20479,
-20510,20550,20592,20546,20628,20724,20696,20810,20836,20893,20926,20972,21013,
-21148,21158,21184,21211,21248,21255,21284,21362,21395,21426,21469,64014,21660,
-21642,21673,21759,21894,22361,22373,22444,22472,22471,64015,U,64016,22686,
-22706,22795,22867,22875,22877,22883,22948,22970,23382,23488,29999,23512,23532,
-23582,23718,23738,23797,23847,23891,64017,23874,23917,23992,23993,24016,24353,
-24372,24423,24503,24542,24669,24709,24714,24798,24789,24864,24818,24849,24887,
-24880,24984,25107,25254,25589,25696,25757,25806,25934,26112,26133,26171,26121,
-26158,26142,26148,26213,26199,26201,64018,26227,26265,26272,26290,26303,26362,
-26382,63785,26470,26555,26706,26560,26625,26692,26831,64019,26984,64020,27032,
-27106,27184,27243,27206,27251,27262,27362,27364,27606,27711,27740,27782,27759,
-27866,27908,28039,28015,28054,28076,28111,28152,28146,28156,28217,28252,28199,
-28220,28351,28552,28597,28661,28677,28679,28712,28805,28843,28943,28932,29020,
-28998,28999,64021,29121,29182,29361,29374,29476,64022,29559,29629,29641,29654,
-29667,29650,29703,29685,29734,29738,29737,29742,29794,29833,29855,29953,30063,
-30338,30364,30366,30363,30374,64023,30534,21167,30753,30798,30820,30842,31024,
-64024,64025,64026,31124,64027,31131,31441,31463,64028,31467,31646,64029,32072,
-32092,32183,32160,32214,32338,32583,32673,64030,33537,33634,33663,33735,33782,
-33864,33972,34131,34137,U,34155,64031,34224,64032,64033,34823,35061,35346,
-35383,35449,35495,35518,35551,64034,35574,35667,35711,36080,36084,36114,36214,
-64035,36559,64036,64037,36967,37086,64038,37141,37159,37338,37335,37342,37357,
-37358,37348,37349,37382,37392,37386,37434,37440,37436,37454,37465,37457,37433,
-37479,37543,37495,37496,37607,37591,37593,37584,64039,37589,37600,37587,37669,
-37665,37627,64040,37662,37631,37661,37634,37744,37719,37796,37830,37854,37880,
-37937,37957,37960,38290,63964,64041,38557,38575,38707,38715,38723,38733,38735,
-38737,38741,38999,39013,64042,64043,39207,64044,39326,39502,39641,39644,39797,
-39794,39823,39857,39867,39936,40304,40299,64045,40473,40657,U,U,8560,8561,
-8562,8563,8564,8565,8566,8567,8568,8569,65506,65508,65287,65282,8560,8561,
-8562,8563,8564,8565,8566,8567,8568,8569,8544,8545,8546,8547,8548,8549,8550,
-8551,8552,8553,65506,65508,65287,65282,12849,8470,8481,8757,32394,35100,37704,
-37512,34012,20425,28859,26161,26824,37625,26363,24389,20008,20193,20220,20224,
-20227,20281,20310,20370,20362,20378,20372,20429,20544,20514,20479,20510,20550,
-20592,20546,20628,20724,20696,20810,U,20836,20893,20926,20972,21013,21148,
-21158,21184,21211,21248,21255,21284,21362,21395,21426,21469,64014,21660,21642,
-21673,21759,21894,22361,22373,22444,22472,22471,64015,64016,22686,22706,22795,
-22867,22875,22877,22883,22948,22970,23382,23488,29999,23512,23532,23582,23718,
-23738,23797,23847,23891,64017,23874,23917,23992,23993,24016,24353,24372,24423,
-24503,24542,24669,24709,24714,24798,24789,24864,24818,24849,24887,24880,24984,
-25107,25254,25589,25696,25757,25806,25934,26112,26133,26171,26121,26158,26142,
-26148,26213,26199,26201,64018,26227,26265,26272,26290,26303,26362,26382,63785,
-26470,26555,26706,26560,26625,26692,26831,64019,26984,64020,27032,27106,27184,
-27243,27206,27251,27262,27362,27364,27606,27711,27740,27782,27759,27866,27908,
-28039,28015,28054,28076,28111,28152,28146,28156,28217,28252,28199,28220,28351,
-28552,28597,28661,28677,28679,28712,28805,28843,28943,28932,29020,28998,28999,
-64021,29121,29182,29361,29374,29476,64022,29559,29629,29641,29654,29667,29650,
-29703,29685,29734,29738,29737,29742,29794,29833,29855,29953,30063,30338,30364,
-30366,30363,30374,64023,30534,21167,30753,30798,30820,30842,31024,64024,64025,
-U,64026,31124,64027,31131,31441,31463,64028,31467,31646,64029,32072,32092,
-32183,32160,32214,32338,32583,32673,64030,33537,33634,33663,33735,33782,33864,
-33972,34131,34137,34155,64031,34224,64032,64033,34823,35061,35346,35383,35449,
-35495,35518,35551,64034,35574,35667,35711,36080,36084,36114,36214,64035,36559,
-64036,64037,36967,37086,64038,37141,37159,37338,37335,37342,37357,37358,37348,
-37349,37382,37392,37386,37434,37440,37436,37454,37465,37457,37433,37479,37543,
-37495,37496,37607,37591,37593,37584,64039,37589,37600,37587,37669,37665,37627,
-64040,37662,37631,37661,37634,37744,37719,37796,37830,37854,37880,37937,37957,
-37960,38290,63964,64041,38557,38575,38707,38715,38723,38733,38735,38737,38741,
-38999,39013,64042,64043,39207,64044,39326,39502,39641,39644,39797,39794,39823,
-39857,39867,39936,40304,40299,64045,40473,40657,
-};
-
-static const struct dbcs_index cp932ext_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{__cp932ext_decmap+0,95,202},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{__cp932ext_decmap+108,64,156},{0,0,0},{0,0,0},{0,0,0},{0,0,
-0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{__cp932ext_decmap+201,64,252},{__cp932ext_decmap+390,64,252},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-__cp932ext_decmap+579,64,252},{__cp932ext_decmap+768,64,252},{
-__cp932ext_decmap+957,64,75},{0,0,0},{0,0,0},{0,0,0},
-};
-
-static const DBCHAR __cp932ext_encmap[9686] = {
-34690,N,N,N,N,N,N,N,N,N,N,34692,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-34644,34645,34646,34647,34648,34649,34650,34651,34652,34653,N,N,N,N,N,N,61167,
-61168,61169,61170,61171,61172,61173,61174,61175,61176,34708,N,N,N,N,N,N,N,N,N,
-N,N,N,N,34712,N,N,N,N,N,33121,N,N,N,N,N,N,N,N,34707,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,34713,34624,34625,34626,34627,34628,34629,34630,
-34631,34632,34633,34634,34635,34636,34637,34638,34639,34640,34641,34642,34643,
-34688,N,34689,34698,34699,N,N,N,N,N,N,34700,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,34693,34694,34695,34696,34697,34661,N,N,N,N,N,N,N,N,N,
-34665,N,N,N,N,N,N,34656,N,N,N,34659,N,N,N,N,N,N,N,N,N,34657,34667,N,N,34666,
-34660,N,N,N,34668,N,N,N,N,N,N,N,N,N,N,34662,N,N,N,N,34670,N,N,N,N,N,N,N,N,N,N,
-N,N,N,34655,34669,N,N,34658,N,N,N,34663,N,N,N,N,N,34664,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,34686,34703,34702,34701,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,34674,34675,N,N,N,N,N,N,N,N,N,N,N,N,34671,34672,34673,
-N,N,34677,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-34676,N,N,N,N,N,N,N,N,34691,60748,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,60749,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60750,
-60751,N,N,60752,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60753,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,60754,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60756,N,N,N,N,N,N,N,
-60755,N,60758,N,N,N,N,N,60757,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60741,N,N,N,60759,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,60762,60763,N,N,N,60761,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,60760,N,60766,N,N,N,60764,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60765,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60767,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,60769,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,60768,60770,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60771,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,60772,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,60773,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60774,60775,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,60776,N,N,N,N,N,N,N,N,N,60777,N,N,N,N,N,N,N,N,61019,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,60778,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60779,
-60780,N,N,N,N,N,N,60781,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,60782,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,60783,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-60784,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60785,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-60786,60789,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60788,N,N,N,N,N,N,N,N,N,N,N,N,
-60790,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,60791,60792,60793,N,N,N,N,N,N,N,N,N,N,N,60794,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60795,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60797,60796,60801,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,60802,60803,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,60804,N,N,N,N,N,N,N,60805,N,60806,N,N,N,N,N,60807,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,60808,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-60809,60810,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60811,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60813,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,60814,60815,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60816,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,60817,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60818,60819,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60822,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,60820,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60823,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60824,60825,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60826,60827,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,60828,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60747,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60829,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60830,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60831,60832,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60833,N,N,
-N,N,60834,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,60836,N,N,N,N,N,N,N,N,60835,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60838,
-60839,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60837,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60841,N,
-N,N,N,N,N,60840,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60842,60843,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60844,60845,60846,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,60847,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60848,60849,60850,N,N,N,N,N,
-N,N,N,60853,N,N,N,N,N,N,N,N,N,N,N,60851,N,N,N,N,N,N,N,N,60855,N,N,N,N,N,60856,
-N,N,N,N,N,N,N,N,N,60854,N,N,60743,N,N,N,N,N,N,N,N,N,60852,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60858,N,60859,N,N,N,N,N,N,N,N,N,N,N,60857,N,
-N,N,N,N,N,N,N,N,N,N,N,N,60861,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,60862,N,N,N,N,N,N,60863,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,60864,N,N,N,N,N,N,N,N,N,N,N,N,60865,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,60866,60746,60867,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60869,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60870,N,N,N,N,60872,
-60873,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60874,N,N,N,N,N,N,
-N,N,N,N,N,N,N,60871,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,60744,N,N,N,N,N,N,60875,60877,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60879,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60880,60881,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60883,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60882,N,N,N,N,N,N,N,60884,N,N,N,N,N,N,N,
-N,N,N,60885,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60886,N,60887,60888,
-60889,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60890,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,60892,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-60891,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,60893,60894,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,60896,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60895,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,60897,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60898,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60899,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60901,N,N,N,N,N,60900,N,
-N,N,60902,60905,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60903,N,N,60906,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60904,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,60907,60908,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60909,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,60910,60911,N,60912,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,60913,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60914,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60915,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,60742,60917,N,N,N,N,N,N,N,N,N,N,60916,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,60919,60920,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60918,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60922,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-60923,60924,N,N,N,N,N,N,N,N,N,N,N,N,60992,60993,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60995,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60996,N,N,N,N,N,N,N,N,N,N,N,60997,
-N,N,N,N,N,N,N,N,61000,N,N,N,60998,N,N,N,N,N,N,N,N,N,N,N,N,60999,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,61002,61001,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,61003,N,N,61005,61004,N,N,N,61006,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61007,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-61008,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61009,61010,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60812,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61011,61012,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61015,61013,N,61014,N,N,N,N,N,N,N,61016,61018,
-61020,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,61021,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61022,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61023,61024,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,61028,N,N,N,N,N,N,61030,61031,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,61032,N,N,N,61034,61035,61037,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61038,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61040,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,61039,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,61041,61042,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60736,61043,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,61044,61046,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61047,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61048,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61049,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61050,61051,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61052,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60740,61053,N,N,N,N,
-N,61054,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61056,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,61058,61061,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61062,60737,61063,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61064,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61065,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61066,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,61067,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,61068,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61070,
-61071,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,61072,61073,N,N,N,61074,61075,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,61076,61078,61081,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,61082,61084,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-61085,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61087,N,N,61086,N,N,N,61088,N,N,N,
-N,N,61091,61092,N,N,N,N,N,N,N,61089,61090,61093,N,N,N,61095,N,N,N,N,N,61094,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-61102,61096,N,61098,N,N,N,61097,N,N,N,N,N,N,N,N,N,N,N,N,N,61099,N,N,61101,N,N,
-N,N,N,N,N,61100,N,N,N,N,N,N,N,N,N,N,N,N,N,61103,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-61105,61106,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60739,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61104,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61110,N,N,61114,N,61112,N,61108,N,61109,
-N,N,N,N,N,N,61113,N,N,N,N,N,N,61107,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60745,N,
-61117,N,N,N,61120,61122,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-61121,61119,N,N,61116,N,N,N,61115,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,60738,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61124,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61123,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61125,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61126,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61127,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,61128,61129,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61130,N,N,61131,
-61132,61135,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61136,61137,N,N,N,N,N,N,N,61138,
-N,N,N,N,N,N,N,61139,N,N,N,N,N,N,N,N,N,61140,N,61141,N,61142,N,N,N,61143,61144,
-N,N,N,N,N,N,N,N,N,N,N,N,N,61145,61148,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61150,61151,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,61152,N,N,61153,61155,N,N,61154,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,61156,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,61157,N,N,N,N,N,N,N,N,N,61158,61159,61161,N,N,N,N,61160,61163,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61164,60868,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61133,60787,60798,60800,60821,60860,60876,60878,
-60921,60994,61017,61025,61026,61027,61029,61033,61036,61045,61057,61059,61060,
-61069,61077,61079,61080,61083,61111,61118,61134,61146,61147,61149,61162,61180,
-N,N,N,N,61179,N,N,N,N,N,33148,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,33119,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,33120,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,33169,
-33170,33226,N,61178,
-};
-
-static const struct unim_index cp932ext_encmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{__cp932ext_encmap+0,22,121},{__cp932ext_encmap
-+100,17,191},{0,0,0},{__cp932ext_encmap+275,96,115},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-__cp932ext_encmap+295,29,31},{0,0,0},{__cp932ext_encmap+298,49,168},{
-__cp932ext_encmap+418,3,205},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{__cp932ext_encmap+621,40,252},{__cp932ext_encmap+834,0,255},{
-__cp932ext_encmap+1090,30,244},{__cp932ext_encmap+1305,74,236},{
-__cp932ext_encmap+1468,21,219},{__cp932ext_encmap+1667,0,221},{
-__cp932ext_encmap+1889,138,255},{__cp932ext_encmap+2007,134,134},{0,0,0},{
-__cp932ext_encmap+2008,89,200},{__cp932ext_encmap+2120,158,178},{
-__cp932ext_encmap+2141,11,186},{0,0,0},{__cp932ext_encmap+2317,86,236},{
-__cp932ext_encmap+2468,30,245},{__cp932ext_encmap+2684,39,208},{0,0,0},{
-__cp932ext_encmap+2854,33,222},{__cp932ext_encmap+3044,93,242},{
-__cp932ext_encmap+3194,17,152},{__cp932ext_encmap+3330,19,166},{
-__cp932ext_encmap+3478,245,245},{__cp932ext_encmap+3479,96,206},{
-__cp932ext_encmap+3590,78,78},{__cp932ext_encmap+3591,0,251},{
-__cp932ext_encmap+3843,14,192},{__cp932ext_encmap+4022,1,207},{
-__cp932ext_encmap+4229,104,226},{__cp932ext_encmap+4352,48,228},{
-__cp932ext_encmap+4533,214,214},{__cp932ext_encmap+4534,63,218},{
-__cp932ext_encmap+4690,4,252},{__cp932ext_encmap+4939,39,191},{
-__cp932ext_encmap+5092,136,245},{__cp932ext_encmap+5202,5,187},{
-__cp932ext_encmap+5385,4,254},{__cp932ext_encmap+5636,177,190},{
-__cp932ext_encmap+5650,36,245},{__cp932ext_encmap+5860,7,159},{
-__cp932ext_encmap+6013,1,111},{__cp932ext_encmap+6124,130,166},{
-__cp932ext_encmap+6161,70,70},{__cp932ext_encmap+6162,33,122},{
-__cp932ext_encmap+6252,48,155},{__cp932ext_encmap+6360,209,235},{
-__cp932ext_encmap+6387,158,158},{0,0,0},{__cp932ext_encmap+6388,72,214},{
-__cp932ext_encmap+6531,82,138},{__cp932ext_encmap+6588,71,161},{0,0,0},{0,0,0
-},{0,0,0},{__cp932ext_encmap+6679,1,246},{__cp932ext_encmap+6925,72,220},{
-__cp932ext_encmap+7074,83,176},{0,0,0},{0,0,0},{__cp932ext_encmap+7168,7,245},
-{__cp932ext_encmap+7407,28,28},{__cp932ext_encmap+7408,18,246},{
-__cp932ext_encmap+7637,83,127},{__cp932ext_encmap+7682,240,244},{
-__cp932ext_encmap+7687,18,118},{__cp932ext_encmap+7788,207,207},{0,0,0},{
-__cp932ext_encmap+7789,103,222},{__cp932ext_encmap+7909,21,238},{
-__cp932ext_encmap+8127,6,255},{__cp932ext_encmap+8377,2,248},{
-__cp932ext_encmap+8624,49,72},{__cp932ext_encmap+8648,146,146},{
-__cp932ext_encmap+8649,157,175},{__cp932ext_encmap+8668,51,85},{
-__cp932ext_encmap+8703,87,101},{__cp932ext_encmap+8718,39,158},{
-__cp932ext_encmap+8838,78,220},{__cp932ext_encmap+8981,114,187},{
-__cp932ext_encmap+9055,0,0},{__cp932ext_encmap+9056,107,112},{
-__cp932ext_encmap+9062,25,209},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__cp932ext_encmap+9247
-,41,220},{__cp932ext_encmap+9427,14,45},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-__cp932ext_encmap+9459,2,228},
-};
-
-static const ucs2_t __jisx0213_1_bmp_decmap[2197] = {
-65287,65282,65293,126,12339,12340,12341,12347,12348,12543,12447,U,U,U,U,U,U,U,
-U,8836,8837,8842,8843,8713,8709,8965,8966,U,U,U,U,U,U,U,8853,8854,8855,8741,
-8742,10629,10630,12312,12313,12310,12311,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,8802,
-8771,8773,8776,8822,8823,8596,U,U,U,U,U,U,U,U,9838,9835,9836,9833,9655,9654,
-9665,9664,8599,8600,8598,8601,8644,8680,8678,8679,8681,10548,10549,U,U,U,U,U,
-U,U,U,U,U,10687,9673,12349,65094,65093,9702,8226,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,8723,8501,8463,13259,8467,8487,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,12448,8211,10746,10747,12363,U,12365,U,12367,U,
-12369,U,12371,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,12436,12437,
-12438,12459,U,12461,U,12463,U,12465,U,12467,U,U,U,U,U,U,U,12475,U,U,U,U,U,U,U,
-U,12484,U,U,U,12488,9828,9824,9826,9830,9825,9829,9831,9827,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,962,9461,9462,9463,9464,9465,9466,9467,9468,
-9469,9470,9750,9751,12320,9742,9728,9729,9730,9731,9832,9649,12784,12785,
-12786,12787,12788,12789,12790,12791,12792,12793,U,12794,12795,12796,12797,
-12798,12799,9150,9151,9152,9153,9154,9155,9156,9157,9158,9159,9160,9161,9162,
-9163,9164,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-12535,12536,12537,12538,8922,8923,8531,8532,8533,10003,8984,9251,9166,12881,
-12882,12883,12884,12885,12886,12887,12888,12889,12890,12891,12892,12893,12894,
-12895,12977,12978,12979,12980,12981,12982,12983,12984,12985,12986,12987,12988,
-12989,12990,12991,U,U,U,U,U,U,U,U,9680,9681,9682,9683,8252,8263,8264,8265,461,
-462,464,7742,7743,504,505,465,466,468,470,472,474,476,8364,160,161,164,166,
-169,170,171,173,174,175,178,179,183,184,185,186,187,188,189,190,191,192,193,
-194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,
-213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,
-233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,
-253,254,255,256,298,362,274,332,257,299,363,275,333,260,728,321,317,346,352,
-350,356,377,381,379,261,731,322,318,347,711,353,351,357,378,733,382,380,340,
-258,313,262,268,280,282,270,323,327,336,344,366,368,354,341,259,314,263,269,
-281,283,271,273,324,328,337,345,367,369,355,729,264,284,292,308,348,364,265,
-285,293,309,349,365,625,651,638,643,658,620,622,633,648,598,627,637,642,656,
-635,621,607,626,669,654,609,331,624,641,295,661,660,614,664,450,595,599,644,
-608,403,339,338,616,649,600,629,601,604,606,592,623,650,612,652,596,593,594,
-653,613,674,673,597,657,634,615,602,U,509,8048,8049,U,U,U,U,U,U,U,U,8050,8051,
-865,712,716,720,721,774,8255,779,769,772,768,783,780,770,741,742,743,744,745,
-U,U,805,812,825,796,799,800,776,829,809,815,734,804,816,828,820,797,798,792,
-793,810,826,827,771,794,10102,10103,10104,10105,10106,10107,10108,10109,10110,
-10111,9451,9452,9453,9454,9455,9456,9457,9458,9459,9460,8560,8561,8562,8563,
-8564,8565,8566,8567,8568,8569,8570,8571,9424,9425,9426,9427,9428,9429,9430,
-9431,9432,9433,9434,9435,9436,9437,9438,9439,9440,9441,9442,9443,9444,9445,
-9446,9447,9448,9449,13008,13009,13010,13011,13012,13013,13014,13015,13016,
-13017,13018,13019,13020,13021,13022,13023,13024,13025,13026,13027,13050,13033,
-13029,13037,13036,U,U,U,U,U,U,U,U,U,8273,8258,9312,9313,9314,9315,9316,9317,
-9318,9319,9320,9321,9322,9323,9324,9325,9326,9327,9328,9329,9330,9331,8544,
-8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,13129,13076,13090,13133,
-13080,13095,13059,13110,13137,13143,13069,13094,13091,13099,13130,13115,13212,
-13213,13214,13198,13199,13252,13217,8555,U,U,U,U,U,U,U,13179,12317,12319,8470,
-13261,8481,12964,12965,12966,12967,12968,12849,12850,12857,13182,13181,13180,
-U,U,U,8750,U,U,U,U,8735,8895,U,U,U,10070,9758,20465,U,13314,20008,20015,20016,
-20109,20193,20221,20223,20227,20235,20320,20296,20297,20310,20319,20330,20332,
-20350,20362,20372,20375,64048,20425,20448,20481,20482,20494,20504,20519,20526,
-20544,20539,20545,20628,20684,20722,20688,20710,64049,20742,20739,20747,20766,
-20789,20810,64050,20821,20823,13493,20893,20931,20938,20958,20962,20974,20993,
-13531,21011,21013,21065,21079,21089,21139,21192,64051,21196,21200,21206,21211,
-64052,21232,21243,21248,21255,21276,64053,21345,21347,21373,21395,21405,21426,
-21522,21543,21581,21660,21611,21620,21631,21640,21654,21665,21673,21702,21759,
-21774,21803,21813,21840,21854,21889,21894,21902,64054,21933,21966,64055,22024,
-22030,22075,22089,22134,22118,64056,22127,22129,22130,22169,22174,22185,22188,
-22195,22217,22218,22282,U,22305,22319,22323,22324,22384,22391,22396,22428,
-64015,U,22456,22471,22472,22479,22500,22509,22517,22518,22527,22537,64016,
-22625,22628,64057,22652,22665,22686,64058,22697,U,22738,22734,22740,22746,
-22752,22761,22796,34369,22877,22893,22923,22930,22948,22979,22994,23005,23059,
-23075,23143,23149,23159,23166,23172,23198,23207,23236,U,23321,23333,21085,
-23361,23382,23421,23443,23512,23532,23570,23582,23587,23595,14221,23650,64059,
-64060,U,23674,23695,23711,23715,23722,23738,23755,23760,23762,23796,U,14306,
-23821,23847,64017,23878,23879,23891,23882,23917,23937,23968,23972,23975,23992,
-24011,21534,22099,24034,24084,24088,24152,24158,24254,63784,24267,24313,24320,
-24322,24327,24349,24355,24372,24374,24381,24384,24389,24404,24408,24420,24423,
-24445,24457,24476,24487,24495,24501,24503,24521,24542,24545,24553,24589,24596,
-24600,24627,24629,24647,64061,24733,24734,24779,24788,24789,24797,24824,24860,
-24875,24880,24887,64062,24973,64063,25020,25017,64064,25122,25150,25155,25174,
-25178,25199,25221,25284,25302,25340,25354,25368,25401,25411,25445,25468,25573,
-25581,25589,25616,25620,25634,25721,25681,25696,25709,25806,25790,25791,25796,
-25802,25808,25847,25851,25890,25897,64065,25959,26013,64066,26112,26121,26133,
-26142,26170,26146,26148,26155,26160,26161,26163,26363,26184,26188,U,26201,
-26202,26209,26213,26227,26231,26232,26253,64067,26272,26290,26299,26310,26312,
-15138,26331,26344,26362,26387,63785,26419,26470,26439,26440,26491,26497,26515,
-26520,26523,26555,26617,26560,26583,26620,26625,26706,26653,26668,26673,26715,
-26738,26741,64068,26787,26789,26802,26824,26832,26856,26861,26864,26865,26876,
-26890,26953,U,26933,26946,26967,26979,26980,26984,27008,64020,27045,27053,
-27087,15286,15299,27106,27113,27114,27125,27126,27151,27157,U,27195,27198,
-27205,27216,27222,27227,27243,27251,U,27273,27284,27293,27294,27301,27364,
-27367,15375,63773,27419,27422,27436,27445,27462,27478,27488,27493,27495,27511,
-27522,27561,27565,63856,27599,27606,27607,27647,27653,27664,27699,27737,27740,
-27818,27764,27766,27781,27782,27800,27804,27899,27846,27860,27872,27883,27886,
-U,27908,27918,27950,27953,27961,27967,27992,28005,64069,28034,28039,28041,
-28052,28074,28076,28095,28100,28118,28122,28123,28125,28156,64070,28212,28228,
-28252,28254,28331,28337,28353,28359,28366,28432,28442,64071,28458,28463,28467,
-28497,28505,28510,28513,28514,28542,28552,28556,28557,28564,28576,28583,28598,
-28604,28615,28618,28665,28656,28661,28677,28678,28712,28746,28765,28766,28750,
-28772,28789,28805,28836,28843,28855,28884,28888,28900,28943,28971,28958,28960,
-28974,28976,28998,28999,29009,64072,29010,29020,29024,29032,64021,29061,29063,
-29074,29121,29114,29124,29182,29184,29205,29269,29270,15935,29325,29339,29374,
-29376,29435,U,29479,29480,64022,29520,29542,29564,29589,29599,29600,29602,
-29606,29611,29641,29647,29654,29657,29667,29673,29703,29706,29722,29723,64074,
-29734,29736,29738,29739,29740,29742,29743,29744,29764,29766,29767,29771,29783,
-29794,29803,29805,29830,29831,29833,29848,29852,29855,29859,29840,29862,29864,
-29865,29877,29887,29896,29897,29914,29951,29953,29975,29999,30063,30073,30098,
-16242,30158,30180,30208,30210,30216,30229,30230,30233,30238,30253,30261,30275,
-30283,30308,30309,30317,30319,30321,30337,30363,30365,30366,30374,30378,30390,
-30405,30412,30414,30420,30438,30449,30460,30474,30489,30516,30518,30534,30541,
-30542,30556,30559,30562,30586,30592,30612,30634,30688,30765,30787,30798,30799,
-30801,30824,30830,64075,30896,U,30893,30948,30962,30976,30967,31004,31022,
-31025,31028,64076,64077,31045,31046,64078,64079,64080,31068,64081,64025,64026,
-31097,64082,64083,64027,31128,31153,31160,31176,31178,U,31188,31198,31211,
-31213,31235,64084,31289,31325,31341,64085,31365,31392,U,31411,31419,31438,
-31467,31485,31506,31533,31547,31559,31566,31584,31597,31599,31602,31646,64086,
-31703,31705,31745,31793,31774,31776,31795,31798,16996,U,31833,31853,31865,
-31887,31892,31904,31932,31957,31961,31965,32007,32008,32019,32029,32035,32049,
-32065,32072,32083,32092,32122,32131,32139,32160,32166,32194,32204,32214,32227,
-64087,32296,32264,32273,32277,64089,32327,32338,32353,32394,32397,32583,64090,
-32657,32663,32703,32718,32731,32735,32748,32750,32762,64091,32788,32806,32821,
-32823,32828,32970,32983,32992,33011,33048,33098,33120,33127,33128,33133,33211,
-33226,33231,33239,64092,17491,17499,33376,33396,U,33422,33441,33443,33444,
-33449,33454,33463,33470,33471,33478,33493,33533,33534,33536,33537,33634,33570,
-33581,33594,33603,33607,33617,33621,33661,33670,33682,33688,33703,33705,33727,
-33728,33735,33743,33745,33761,33770,33793,33798,33802,64095,33864,33887,33904,
-33907,33925,33950,33967,33972,33978,33984,33986,U,34098,34078,34083,34095,
-34137,34148,64031,34221,34170,34188,34191,34210,34224,34251,34254,34285,34322,
-34303,34308,34309,34320,U,34328,34345,34360,34391,34395,63798,34402,17821,
-34412,34421,34456,34488,34554,34556,34557,34571,34673,34695,34696,34732,34733,
-34741,17898,34774,34796,34822,34826,34832,34836,34847,34968,34986,35018,35022,
-U,35061,35100,64096,35096,35097,35098,35111,35120,35122,35129,35136,35220,
-64097,35284,35301,35318,35346,35349,35362,35383,35399,35406,35421,35425,35445,
-35449,35495,35536,35551,35572,35574,64034,64098,64099,35654,35668,35673,35689,
-35741,35913,35944,64100,36065,36084,36088,36094,64101,36114,36123,36271,36302,
-36305,36311,36384,36387,36413,36464,36475,U,36544,18500,36602,36638,36653,
-36662,36692,U,36774,36789,36836,36840,36846,36872,36909,64103,37000,37013,
-37015,37017,37019,37026,37043,37054,37060,37061,37063,37079,37085,37086,37103,
-37108,64038,37140,37141,37142,37154,37155,37159,37167,37169,37172,37181,37192,
-37211,37251,37278,37292,37297,37308,37335,37371,37348,37349,37357,37361,37383,
-37392,37432,37433,37434,37436,37440,37443,37455,37496,37512,37570,37579,37580,
-37587,37600,37631,37636,37663,37665,37669,37704,37705,37706,37732,37733,37738,
-37744,37787,37795,37818,37830,37854,37855,37892,37885,37939,37962,37987,37995,
-38001,38002,38286,38303,38310,38313,38316,38326,38333,38347,38352,38355,18864,
-38362,38366,38488,38532,63964,38557,38564,38565,38610,38622,64104,38633,38639,
-38707,38715,38733,38734,38735,38746,38766,38771,38805,38830,38842,38849,38857,
-38878,38875,38900,64105,38922,38942,38955,38960,64106,38994,38995,38998,38999,
-39001,39002,63952,39013,39020,39098,39112,39143,39256,39326,39426,39427,39460,
-39469,39470,39480,39498,39502,39506,39606,39617,39619,39630,39638,39673,39682,
-39688,39712,19479,39725,39774,39801,39782,39794,39797,39812,39818,39823,39838,
-39847,39873,39886,39909,39928,39933,39936,39971,40001,40015,40016,40019,40035,
-40037,40055,40221,40222,40259,40263,40274,40291,40304,40316,40330,40342,40384,
-40364,40380,40407,U,40423,40455,40469,40572,40606,40612,40620,40623,40628,
-40629,40643,40657,40720,40761,40791,40848,40852,40855,40866,23032,23643,24183,
-30246,32363,
-};
-
-static const struct dbcs_index jisx0213_1_bmp_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__jisx0213_1_bmp_decmap+0,47,125},{
-__jisx0213_1_bmp_decmap+79,33,126},{__jisx0213_1_bmp_decmap+173,43,118},{
-__jisx0213_1_bmp_decmap+249,43,72},{__jisx0213_1_bmp_decmap+279,57,126},{
-__jisx0213_1_bmp_decmap+349,66,126},{__jisx0213_1_bmp_decmap+410,65,124},{
-__jisx0213_1_bmp_decmap+470,33,126},{__jisx0213_1_bmp_decmap+564,33,126},{
-__jisx0213_1_bmp_decmap+658,33,126},{__jisx0213_1_bmp_decmap+752,33,126},{
-__jisx0213_1_bmp_decmap+846,33,126},{__jisx0213_1_bmp_decmap+940,33,126},{
-__jisx0213_1_bmp_decmap+1034,33,126},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__jisx0213_1_bmp_decmap+
-1128,85,126},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-__jisx0213_1_bmp_decmap+1170,39,126},{__jisx0213_1_bmp_decmap+1258,33,126},{
-__jisx0213_1_bmp_decmap+1352,33,126},{__jisx0213_1_bmp_decmap+1446,33,126},{
-__jisx0213_1_bmp_decmap+1540,33,125},{__jisx0213_1_bmp_decmap+1633,33,126},{
-__jisx0213_1_bmp_decmap+1727,33,126},{__jisx0213_1_bmp_decmap+1821,33,126},{
-__jisx0213_1_bmp_decmap+1915,33,126},{__jisx0213_1_bmp_decmap+2009,33,126},{
-__jisx0213_1_bmp_decmap+2103,33,126},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-};
-
-static const ucs2_t __jisx0213_2_bmp_decmap[2425] = {
-19970,19983,19986,20009,20011,20014,20032,20039,20040,U,20049,13318,U,20058,
-20073,20125,13356,13358,20153,20155,U,20156,20163,20168,20176,20203,20186,
-20209,20213,20224,20246,20324,20279,20286,20308,20312,U,20343,20344,20346,
-20349,20354,20357,20370,20378,20454,20402,20414,20421,20427,20431,20434,13418,
-20466,20480,20496,20499,20508,20510,20514,13416,20546,20550,20558,20563,20567,
-20579,20582,20586,20592,20643,20616,20626,20627,20629,20630,20636,20650,U,
-20657,20666,20667,20676,20679,20723,U,20686,U,20692,20697,20705,20713,13458,
-20744,U,20759,20763,U,20832,U,20851,20867,20875,13500,20888,20899,20909,13511,
-20924,U,U,20979,20980,20994,21010,21014,U,21077,21084,21100,21111,21124,21122,
-U,21144,U,21156,21158,21167,21178,21179,21194,13599,21201,U,21239,21258,21259,
-21284,21301,21310,21314,U,U,21351,21356,21370,21412,21428,U,21431,21440,U,
-13661,13662,21461,21466,13667,21492,21493,21589,21540,21544,13678,21571,21602,
-21606,21612,21642,21645,21653,21664,21670,21677,21678,21687,21690,21695,21699,
-U,21740,21743,21745,21747,21760,21761,21769,21820,21825,13734,21831,21834,
-13736,21856,21857,21860,U,21885,21890,21896,21905,13765,21970,U,U,21951,21961,
-21964,21969,21981,13786,21986,U,21993,22056,U,22023,22032,22064,22071,13812,
-22077,22079,22080,22087,22110,22112,22125,13829,22152,22156,22165,22170,22173,
-22184,22189,22194,22213,22221,22239,22248,22262,22263,U,22293,22307,U,22313,U,
-22341,22342,22348,22349,U,22376,22383,22387,22388,22389,22395,U,U,22444,22426,
-22429,22430,22440,22487,U,22476,U,U,22494,22502,22512,13898,22520,22523,22525,
-22532,22558,22560,22567,22578,22585,U,22601,22604,22631,22666,22667,22669,
-22671,22672,22676,22685,22698,22705,U,22723,22733,22754,22771,22772,22789,
-22790,22795,22797,22804,22820,U,13969,22845,13977,22854,13974,U,22875,22879,U,
-22901,22902,22908,22943,22958,22972,22984,22989,23006,23011,23012,23015,23022,
-U,U,14031,23052,23053,23063,23079,23085,23125,23141,23162,23179,23196,23199,
-23200,23202,23217,23219,23221,23226,23231,23258,23260,23264,23269,23280,23278,
-23285,23296,23304,23319,23348,23341,23372,23378,23400,23407,23420,23423,23425,
-23428,23446,23468,14177,23488,14178,23502,23510,14188,14187,23537,23549,14197,
-23555,23593,23600,U,23647,23651,23655,23656,23657,23664,U,U,23676,U,U,23688,
-23690,14273,U,U,23712,23714,23718,23719,U,23725,23733,U,23753,U,U,23814,23824,
-23851,23837,23840,23844,23846,23857,23865,23874,14312,23905,23914,14324,23920,
-U,14333,23944,14336,23954,23956,23959,23961,23984,23986,23988,U,23993,24017,
-24023,24024,24032,U,24036,24041,14383,24064,14390,24082,24085,14400,24095,
-24110,24126,24137,14428,24150,14433,24171,24172,24173,24174,U,24229,24234,
-24236,24249,24255,24262,24274,24281,U,24317,24328,24334,24348,U,24350,24391,
-24419,24434,24446,24463,24482,24484,24504,24516,14586,24519,24523,24530,24531,
-24532,24546,24558,24559,24563,24572,14615,24599,24610,24612,14618,24652,24703,
-24714,24725,24744,U,24752,24753,24766,24776,24793,24795,24814,24818,24821,
-24848,24850,24851,24857,24862,24890,14703,24897,24902,24928,24956,U,24978,
-24979,24983,24984,24997,25000,25005,U,25045,25053,25055,25077,U,25109,25123,
-25129,25158,25164,25169,25170,25185,25188,25211,25197,25203,25241,25254,25301,
-U,25341,25347,25357,25360,U,U,25394,25397,25403,25404,25409,25412,25422,U,
-25433,U,U,25452,25476,25497,U,25492,25533,25591,25556,25557,25564,25568,25579,
-25580,25586,25609,25630,25637,25641,25647,25690,25691,25693,25715,25725,25735,
-25745,25757,25759,25803,25804,25813,25815,U,25828,25829,25855,25860,14958,
-25871,25876,25878,14963,25886,25906,25924,25940,25963,25978,25985,25988,25989,
-25994,26034,26037,26040,26047,26050,26057,26068,15062,26098,26105,26108,26116,
-26120,26145,26154,26181,26193,26190,15082,U,26199,26203,26211,U,U,26218,26219,
-26220,26221,26235,26240,26256,26258,26265,15118,26285,26289,26293,15130,26303,
-15132,26348,15063,26369,26373,26386,U,26393,U,U,26444,26445,26452,26461,U,U,U,
-26484,26486,U,26514,U,33635,26640,26544,26546,26563,26568,26578,26585,26587,
-26608,26615,U,U,U,26648,26655,26669,U,26675,26683,26686,26692,26693,26697,
-26700,26709,26711,15223,26731,26734,26746,26748,26754,26768,26774,15213,26776,
-26777,26778,26780,26794,26795,26804,26811,26875,U,U,64019,26819,26821,26828,
-26831,26838,26841,26852,26853,26860,26871,26883,26887,15239,15240,U,26939,
-15245,26950,26985,26988,26994,27002,27007,27026,15268,27030,27032,27046,27056,
-27063,27066,27068,27072,27089,27094,U,U,27184,U,U,27107,27118,27119,27123,
-15309,27124,27134,27153,27162,27165,U,27186,27187,27188,27199,27206,27209,
-27258,27214,27218,27236,U,27262,27267,27275,15344,27281,27295,27297,U,27307,
-27325,27334,27348,27344,27356,27357,U,U,27372,27377,27378,27379,27389,U,27403,
-27407,27408,27409,U,27415,15398,27439,27466,27480,27500,27509,27514,27521,
-27547,27566,U,27581,27582,27591,27592,27593,27610,27622,27623,27630,27633,
-27650,27658,27662,27701,27702,27706,U,27711,27725,27739,27757,27780,27785,
-15555,27796,27797,27799,27821,27842,27856,15570,27862,27866,27868,27881,27884,
-27885,U,27904,27914,27940,27942,27943,27751,27951,27964,27995,27998,28000,
-28016,28032,28033,28042,28045,28049,28056,U,28183,U,U,U,28075,28078,28084,
-28098,27956,28104,28110,28111,28112,28127,28137,28150,28214,28190,28194,28199,
-15633,28210,28220,28232,28233,28235,28236,28239,28241,28243,28244,28247,28259,
-15646,28307,28327,28340,28351,28355,28362,28377,28469,28395,28409,28411,28426,
-28428,28440,28453,28470,28476,U,28498,28503,28506,28512,28520,28568,28541,
-28560,28566,28606,28575,28581,28591,15716,28597,28616,28617,28634,28638,28649,
-U,28668,28672,28679,28682,28707,U,28729,28730,28732,28739,28743,28747,15770,
-28756,28773,28777,28780,28782,28790,28798,28801,28806,28821,28823,28859,U,
-28831,28849,U,28908,28874,28881,28883,28892,28931,28932,28934,28935,28936,
-28940,15808,28975,28977,29008,29002,29011,29022,15828,29078,29056,29083,29088,
-29090,29102,29103,29107,U,29131,29139,29145,29148,29191,15877,64073,29227,
-29236,29240,29241,20012,29250,29267,29271,29283,U,29294,29295,29304,29311,
-29326,U,29357,29358,29360,29361,29377,15968,29388,15974,15976,29427,29434,
-29447,29458,29464,29465,16003,29497,29484,29489,29491,29501,29522,16020,29547,
-29548,U,29550,29551,29553,29559,29569,29573,29578,29588,29592,29596,29598,
-29605,29608,29621,29623,29625,29628,29631,29637,29643,29665,29671,29689,29715,
-29690,29697,29732,29745,29753,29779,29760,29763,29773,29778,29789,29809,29825,
-29829,29832,U,29842,29847,29849,29856,29857,29861,29866,29867,29881,29883,
-29882,29910,29912,29918,29935,29931,U,29946,U,29984,29988,29994,16215,U,30013,
-30014,30016,30024,30030,30032,30034,30060,30066,30065,30074,30077,30078,30081,
-U,30092,16245,30114,16247,30128,30135,30143,30144,30150,30159,30163,30173,
-30175,30176,30183,30188,30190,30193,30201,30211,30232,30215,30223,16302,U,
-30227,30235,30236,U,30245,30248,30268,30259,U,16329,30273,U,30281,30293,16343,
-30318,30357,30364,30369,30368,30375,30376,30383,U,30409,U,30440,30444,U,30487,
-30490,30509,30517,16441,U,U,30552,30560,30570,U,30578,30588,30589,U,16472,
-30618,30623,30626,30628,30633,30686,30687,30692,30694,30698,30700,16531,30704,
-30708,30715,U,30725,30726,30729,30733,30745,30753,30764,30791,30820,30826,U,
-30858,30868,30884,30877,30878,30879,30907,30920,30924,30926,30933,30944,30945,
-30950,30969,30970,30971,30974,U,30992,31003,31024,31013,31035,31050,31064,
-31067,16645,31079,31090,31124,31125,31126,31131,31137,31145,31156,31163,31170,
-31175,31180,31181,31190,16712,U,U,16719,31242,31249,31253,31259,31262,16739,
-31277,31288,31303,31308,31318,31321,31324,31327,31328,31335,31338,31349,31352,
-31362,31370,31376,31395,31404,U,16820,31417,31420,31422,16831,31436,31441,
-31463,31464,31476,U,U,31495,U,31549,31527,31530,31534,31535,31537,16870,16883,
-31615,31553,16878,31573,31609,31588,31590,31593,31603,U,16903,31632,31633,
-31643,16910,31663,31669,31676,31685,31690,U,U,31700,31702,31706,31722,31728,
-31747,31755,31758,31759,31782,31813,31818,31825,31831,31838,31841,31849,31854,
-31855,31856,U,U,U,31910,U,31926,31927,31935,U,31940,U,31944,31949,U,31959,U,
-31974,31979,U,31989,32003,32009,17094,32018,32030,U,U,32061,32062,32064,32071,
-U,U,17110,32089,32090,32106,32112,17117,32127,U,32134,32136,32140,32151,U,
-32157,32167,32170,32182,32183,32192,32215,32217,32230,32241,32249,17154,U,
-64088,32272,32279,32285,32288,32295,32300,32325,32371,32373,32382,32390,32391,
-17195,32401,32408,32410,17219,32572,32571,32574,32579,32580,32591,13505,U,
-32594,U,32609,32611,32612,32621,32637,32638,U,32656,20859,U,32662,32668,32685,
-U,32707,32719,32739,32741,32751,32754,32770,32778,32776,32782,32785,32790,
-32804,32812,32816,32835,32870,32881,32885,32891,32921,32924,32932,32935,32952,
-U,32965,32981,32984,32998,U,33037,33013,33019,17390,33077,33046,33054,17392,
-33060,33063,33068,U,33085,17416,33129,17431,33153,17436,33156,33157,17442,
-33176,33202,33217,33219,33238,33243,U,33252,U,33260,U,33277,33279,U,33284,U,
-33305,33313,33314,U,33330,33332,33340,33350,33353,33349,U,33355,17526,33359,
-17530,33367,U,33372,33379,U,64093,64094,33401,17553,33405,33407,33411,33418,
-33427,33447,33448,33458,33460,33466,33468,33506,33512,33527,33543,33544,33548,
-33620,33563,33565,33584,33596,33604,33623,17598,33663,17620,17587,33677,33684,
-33685,33691,33693,33737,33744,33748,33757,33765,33785,33807,33809,33813,U,
-33815,33849,33866,33871,33873,33874,33881,33882,33884,U,33893,33910,33912,
-33916,33921,17677,34012,33943,33958,33982,17672,33998,33999,34003,U,34023,
-34026,34031,34032,34033,34042,34045,34060,34075,34084,34085,34091,34100,34127,
-34159,17701,17731,34110,34129,34131,34142,34145,34146,U,34171,34173,34175,
-34177,34182,34195,34205,34207,34231,34236,34247,34250,34264,34265,34271,34273,
-34278,34294,34304,34321,34334,34337,34340,34343,U,34361,34364,U,34368,64032,
-34387,34390,34415,34423,34426,34439,34441,34445,34449,34460,34461,34472,64033,
-34481,34483,34497,34499,34513,34517,34519,34531,34534,17848,34565,34567,34574,
-34576,34579,34585,34591,34593,34595,34609,34618,34622,34624,34627,34641,34648,
-34660,34661,34674,34684,U,U,34727,34697,34699,34707,34720,U,17893,34750,U,
-34753,34766,34805,34783,U,34787,34789,34790,34794,34795,34797,34817,34819,
-34827,34835,34856,34862,34866,34876,17935,34890,34904,34911,34916,U,U,34921,U,
-34927,34976,35004,35005,35006,35008,35026,U,35025,35027,35035,35056,35057,
-17985,35073,U,35127,U,35138,35141,35145,U,18021,35170,35200,35209,35216,35231,
-35248,35255,35286,35288,35307,18081,35313,35315,35325,35327,18095,35345,35348,
-U,35361,35381,35390,35397,35405,35416,35502,35472,35511,35518,35543,35580,U,
-35594,35589,35597,35612,35615,35629,35651,18188,35665,35678,35702,35711,35713,
-35723,35732,35733,35740,35742,35897,U,35901,U,U,35909,35911,35919,35924,35927,
-35945,35949,35955,U,35987,35986,35993,18276,35995,36004,36054,36053,36057,U,
-36080,36081,U,36105,36110,36204,36228,36245,36262,U,36294,36296,36313,36332,
-36364,18429,36349,36358,U,36372,36374,36385,36386,36391,U,18454,36406,36409,
-36427,36436,36450,36460,36461,36463,36504,36510,36526,36531,36533,36534,36539,
-U,36561,36564,18510,36601,U,36608,36616,36631,36651,36672,36682,36696,U,36772,
-36788,64102,36790,U,36801,36806,64036,36810,36813,36819,36821,36832,36849,
-36853,36859,36866,36876,36919,U,36931,36932,36957,36997,37004,37008,38429,
-37025,18613,37040,37046,37059,37064,U,37084,37087,U,37110,37106,37120,37099,
-37118,37119,37124,37126,37144,37148,37150,37175,37177,37178,37190,37191,37207,
-37209,37217,37220,37236,37241,37253,37262,37288,37294,37299,37302,37315,37316,
-37338,U,U,37356,37358,37377,37386,37398,37399,U,37427,37442,37447,37450,37454,
-37457,37462,37465,37472,37473,37477,37479,37480,U,U,37500,37501,37503,37513,
-37517,37527,37529,37535,37543,37547,U,U,37554,37567,37568,37574,37582,37584,
-37591,37593,37605,37607,37649,37623,37625,37627,37634,37645,37653,37661,37662,
-37671,37673,U,U,37703,37713,37719,37722,37739,37745,37747,37793,U,U,37768,
-37771,37775,37790,37877,U,U,37873,37825,37831,37852,37858,37863,37897,37903,
-37910,37911,37883,37938,37940,37947,37957,U,U,37997,37999,38264,38265,38278,
-38284,38285,U,38315,38324,U,38344,U,U,38444,38451,38452,U,38460,38465,38497,U,
-38530,U,38554,U,18919,38569,38575,38579,38586,38589,18938,U,38616,38618,38621,
-18948,38676,38691,18985,38710,38721,38727,38741,38743,38747,38762,U,U,38806,
-38810,38814,38818,38833,38834,38846,38860,38865,38868,38872,38873,38881,38897,
-38916,38925,38926,38932,38934,19132,U,38947,38962,38963,38949,38983,39014,
-39083,39085,39088,U,39095,39096,39099,39100,39103,39106,39111,39115,39136,U,
-39137,39139,39141,39146,39152,39153,39155,39176,19259,U,39190,39191,U,39194,
-39195,39196,U,39217,39218,39219,39226,39227,39228,39232,39233,39238,39245,
-39246,39260,39263,39264,39331,39334,39353,39357,39359,39363,39369,39380,39385,
-39390,U,39408,39417,39420,39434,39441,39446,39450,39456,39473,39478,39492,
-39500,39512,19394,39599,19402,39607,19410,39609,U,39622,39632,39634,39637,
-19432,39644,39648,39653,39657,39683,39692,39696,39698,39702,39708,39723,39731,
-39741,19488,39755,39779,39781,39787,39788,39795,39798,39799,39846,39852,39857,
-U,U,39858,39864,39870,39879,39923,39896,39901,39911,39914,39915,39919,39918,U,
-39930,U,39927,U,39958,39960,39961,39962,39965,39970,39975,39977,39978,U,39985,
-39990,39991,40005,40028,U,40009,40010,U,40020,40024,40027,40029,40031,40041,
-40042,40043,40045,40046,40048,40050,40053,40058,40166,40178,40203,40194,U,
-40209,40215,40216,U,19652,U,40242,19665,40258,40266,40287,40290,U,40297,40299,
-U,40307,40310,40311,40318,40324,40333,40345,40353,40383,40373,40377,40381,
-40387,40391,40393,40406,40410,40415,40416,40419,40436,19719,40458,40450,40461,
-40473,40476,40477,40571,U,40576,40581,40603,40616,U,40637,U,40671,40679,40686,
-40703,40706,19831,40707,40727,40729,40751,40759,40762,40765,40769,40773,40774,
-40787,40789,40792,U,40797,U,40809,U,40813,40816,40821,
-};
-
-static const struct dbcs_index jisx0213_2_bmp_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{__jisx0213_2_bmp_decmap+0,34,126},{0,0,0},{
-__jisx0213_2_bmp_decmap+93,33,126},{__jisx0213_2_bmp_decmap+187,33,126},{
-__jisx0213_2_bmp_decmap+281,33,125},{0,0,0},{0,0,0},{__jisx0213_2_bmp_decmap+
-374,33,126},{0,0,0},{0,0,0},{0,0,0},{__jisx0213_2_bmp_decmap+468,33,126},{
-__jisx0213_2_bmp_decmap+562,33,126},{__jisx0213_2_bmp_decmap+656,33,126},{
-__jisx0213_2_bmp_decmap+750,33,126},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-__jisx0213_2_bmp_decmap+844,33,126},{__jisx0213_2_bmp_decmap+938,33,126},{
-__jisx0213_2_bmp_decmap+1032,33,126},{__jisx0213_2_bmp_decmap+1126,33,126},{
-__jisx0213_2_bmp_decmap+1220,34,126},{__jisx0213_2_bmp_decmap+1313,33,126},{
-__jisx0213_2_bmp_decmap+1407,33,126},{__jisx0213_2_bmp_decmap+1501,33,126},{
-__jisx0213_2_bmp_decmap+1595,33,125},{__jisx0213_2_bmp_decmap+1688,35,126},{
-__jisx0213_2_bmp_decmap+1780,33,126},{__jisx0213_2_bmp_decmap+1874,33,125},{
-__jisx0213_2_bmp_decmap+1967,34,125},{__jisx0213_2_bmp_decmap+2059,34,126},{
-__jisx0213_2_bmp_decmap+2152,33,126},{__jisx0213_2_bmp_decmap+2246,33,126},{
-__jisx0213_2_bmp_decmap+2340,33,117},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-};
-
-static const DBCHAR __jisx0213_bmp_encmap[27287] = {
-8754,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,10530,
-10531,N,N,10532,N,10533,N,N,10534,10535,10536,N,10537,10538,10539,N,N,10540,
-10541,N,N,N,10542,10543,10544,10545,10546,10547,10548,10549,10550,10551,10552,
-10553,10554,10555,10556,10557,10558,10559,10560,10561,10562,10563,10564,10565,
-10566,10567,10568,10569,10570,10571,10572,10573,N,10574,10575,10576,10577,
-10578,10579,10580,10581,10582,10583,10584,10585,10586,10587,M,10589,10590,
-10591,10592,10593,10594,10595,10596,10597,10598,10599,10600,10601,10602,10603,
-10604,N,10605,10606,10607,10608,10609,10610,10611,10612,10613,10618,10810,
-10825,10785,10796,10812,10827,10841,10847,N,N,10813,10828,10816,10831,N,10832,
-10616,10621,N,N,N,N,10814,10829,10815,10830,10842,10848,N,N,N,N,N,N,10843,
-10849,N,10877,N,N,10614,10619,N,N,N,N,N,N,N,N,10844,10850,N,N,N,10811,10826,N,
-N,10788,10799,N,N,10787,10798,10817,10833,N,N,10818,10834,N,N,10874,10617,
-10622,N,N,10819,10835,11051,11050,10809,10824,N,N,10820,10836,10789,10800,
-10845,10851,10791,10803,10790,10802,10823,10839,10792,10804,N,N,N,N,10615,
-10620,10846,10852,10821,10837,10822,10838,N,N,N,N,N,N,N,10793,10805,10795,
-10808,10794,10807,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11049,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-11044,N,N,N,N,N,N,N,N,N,N,10351,10352,N,10353,10358,10359,N,10360,N,10361,N,
-10362,N,10363,N,10364,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-10356,10357,N,N,N,11077,11059,11065,11066,11045,M,11071,10862,11046,11054,M,M,
-N,11057,N,11058,10869,11048,10873,N,N,11062,11068,11042,11074,11052,N,N,N,
-10858,10868,10859,11060,10875,10853,10870,10863,N,11055,N,N,N,10860,11073,
-10867,N,10864,10855,N,N,10876,10865,10856,11047,N,N,N,10861,11053,11061,10854,
-M,11067,10872,N,10866,11072,10857,N,11041,10878,N,N,11043,N,N,N,N,10871,N,N,N,
-11070,11069,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,10801,11091,N,N,N,11092,N,N,N,11093,11094,N,N,N,N,N,N,10786,10840,N,
-10797,N,10806,11121,N,N,N,N,N,N,M,11105,11106,11107,M,11100,11098,11103,11133,
-11099,N,11095,N,11117,N,N,11097,11102,N,N,11101,N,N,N,N,N,N,N,N,11128,11129,
-11134,N,11114,11126,11127,11115,11116,N,N,N,11122,11111,N,N,N,11119,11130,N,
-11112,N,N,11120,11123,N,N,N,11125,N,N,N,N,11113,11131,11132,11124,11118,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11090,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,9817,10354,10355,11078,11079,11088,11089,9084,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,9024,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,10347,N,N,11096,N,N,11390,N,N,N,N,10348,10349,10350,N,N,N,N,N,N,N,11389,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,10529,9053,N,N,N,9055,N,N,11618,N,N,N,N,N,N,N,N,N,N,11620,
-N,N,N,N,N,9056,N,N,N,N,N,N,N,N,N,N,N,N,N,9052,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,10104,10105,10106,N,N,N,N,N,N,N,N,N,N,11573,11574,
-11575,11576,11577,11578,11579,11580,11581,11582,11583,11607,N,N,N,N,11317,
-11318,11319,11320,11321,11322,11323,11324,11325,11326,11327,11328,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8817,N,8999,8997,8998,9000,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,9001,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,9003,9004,
-9002,9005,8775,N,N,N,8774,N,N,N,N,N,N,N,N,N,9051,N,N,N,N,N,N,N,N,N,N,N,11640,
-N,N,N,N,N,8788,8789,N,N,N,N,N,N,N,11635,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,8812,N,8813,N,N,8814,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8811,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8815,8816,N,N,N,N,N,N,N,N,N,N,N,N,8770,
-8771,N,N,N,N,8772,8773,N,N,N,N,N,N,N,N,N,8785,8786,8787,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11641,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,10102,10103,8776,8777,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,10108,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,10050,10051,10052,10053,10054,10055,
-10056,10057,10058,10059,10060,10061,10062,10063,10064,N,10110,10109,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11553,11554,11555,11556,11557,11558,11559,
-11560,11561,11562,11563,11564,11565,11566,11567,11568,11569,11570,11571,11572,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,11329,11330,11331,11332,11333,11334,11335,11336,
-11337,11338,11339,11340,11341,11342,11343,11344,11345,11346,11347,11348,11349,
-11350,11351,11352,11353,11354,N,11307,11308,11309,11310,11311,11312,11313,
-11314,11315,11316,9818,9819,9820,9821,9822,9823,9824,9825,9826,9827,9837,N,N,
-N,N,8994,8993,N,N,N,N,N,N,N,N,8996,8995,N,N,N,N,N,N,N,9019,N,N,N,N,N,N,10343,
-10344,10345,10346,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,9023,9832,9833,9834,
-9835,N,N,N,N,N,N,N,N,N,N,9831,N,N,N,N,N,N,N,9828,9829,N,N,N,N,N,N,11646,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,9786,9789,9787,9792,9785,9790,
-9788,9791,9836,8829,N,8827,8828,N,8826,10107,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,11645,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,11297,11298,11299,11300,11301,11302,11303,11304,11305,11306,9006,
-9007,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,8790,8791,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,9018,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,9085,9086,8794,8795,8792,8793,N,N,N,11616,N,11617,9830,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8755,8756,8757,N,N,N,N,N,8758,8759,9020,N,N,N,
-N,N,N,N,N,N,N,N,N,N,M,N,M,N,M,N,M,N,M,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,9332,9333,9334,N,N,N,N,N,N,N,N,8761,9083,N,N,N,N,N,N,N,N,N,N,M,N,M,
-N,M,N,M,N,M,N,N,N,N,N,N,N,M,N,N,N,N,N,N,N,N,M,N,N,N,M,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,10098,
-10099,10100,10101,N,N,N,N,8760,9838,9839,9840,9841,9842,9843,9844,M,9846,9847,
-9849,9850,9851,9852,9853,9854,11626,11627,N,N,N,N,N,N,11628,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,10305,10306,10307,10308,10309,10310,10311,10312,
-10313,10314,10315,10316,10317,10318,10319,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,11621,11622,11623,11624,11625,N,N,N,N,N,N,N,N,10320,
-10321,10322,10323,10324,10325,10326,10327,10328,10329,10330,10331,10332,10333,
-10334,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11355,11356,11357,11358,11359,11360,
-11361,11362,11363,11364,11365,11366,11367,11368,11369,11370,11371,11372,11373,
-11374,N,11377,N,N,N,11376,N,N,11379,11378,N,N,N,N,N,N,N,N,N,N,N,N,11375,11590,
-N,N,N,N,N,N,N,N,N,11594,N,N,N,N,N,N,11585,N,N,N,11588,N,N,N,N,N,N,N,N,N,11586,
-11596,N,N,11595,11589,N,N,N,11597,N,N,N,N,N,N,N,N,N,N,11591,N,N,N,N,11599,N,N,
-N,N,N,N,N,N,N,N,N,N,N,11584,11598,N,N,11587,N,N,N,11592,N,N,N,N,N,11593,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11615,11631,
-11630,11629,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11603,11604,N,N,N,N,N,N,N,N,N,N,N,N,
-11600,11601,11602,N,N,11606,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,11605,N,N,N,N,N,N,9054,N,11619,11811,N,N,N,41261,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41266,N,41267,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41310,N,41302,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41342,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11859,N,N,N,N,N,N,41771,N,N,N,N,
-62568,N,N,N,N,N,41775,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11867,41800,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41821,41822,N,N,N,N,41825,N,N,N,N,N,N,N,
-N,N,N,41831,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42019,N,42022,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42031,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,42040,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42050,42058,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42105,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42303,N,N,N,N,42307,N,N,42305,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,42327,43043,43045,N,N,N,N,N,N,N,N,43049,43048,N,N,N,N,N,
-N,N,N,43052,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,20319,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,43070,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,20335,N,N,N,N,N,43094,N,N,N,N,N,N,N,N,N,N,N,43097,N,N,N,N,N,N,N,N,43100,
-43102,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,43119,N,N,N,N,N,N,43121,N,N,N,N,N,N,N,N,N,43124,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,43129,N,N,N,N,43131,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44091,44102,N,N,44106,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,44128,44379,N,N,N,N,44383,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-44401,44598,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44412,44590,N,N,N,N,N,N,N,N,N,
-N,N,44594,N,44596,N,N,N,N,N,30025,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,44653,N,N,N,N,N,N,N,N,N,44645,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,44840,44841,N,N,N,N,44844,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-44852,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30078,N,N,N,N,N,N,N,N,N,N,N,N,30241,N,
-N,N,N,N,N,N,N,N,44872,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,44893,30266,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44919,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-60987,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60994,61041,N,N,N,N,N,N,N,N,N,N,N,N,61054,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61248,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,61268,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,61296,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61303,61480,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30566,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,61503,N,N,N,N,N,61505,N,61506,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,61513,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61520,61748,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30797,N,N,61766,N,61768,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,61788,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,61799,N,N,N,N,N,N,N,N,N,N,N,N,N,61804,61986,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61997,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-62009,62052,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62068,N,N,N,
-N,N,N,62071,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62077,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62259,N,N,N,N,N,N,
-N,N,N,N,62263,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,62279,N,N,N,N,N,N,N,62283,N,N,N,N,62280,62291,N,N,N,N,N,N,62295,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,31085,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62507,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,62518,N,N,N,N,N,N,62523,62542,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62557,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,62561,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62782,N,62786,62792,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,62794,N,N,N,N,62796,N,N,N,N,N,62799,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-31321,N,N,N,N,N,N,N,31322,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-62828,N,N,N,62830,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62839,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63029,N,N,N,N,N,N,N,N,
-N,N,63026,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63028,63065,N,N,N,N,63060,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63085,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63086,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31569,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63311,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63340,N,N,N,N,31584,
-63524,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,63546,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,63555,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63566,N,
-N,N,N,N,N,N,N,N,N,N,N,N,63571,63595,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63785,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63807,63817,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-31819,N,N,N,N,N,N,N,N,N,63836,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64039,32088,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64362,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,64368,64373,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,64376,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64567,64597,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64806,N,N,N,N,N,N,N,64808,N,N,N,
-N,N,N,N,64810,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64817,32318,N,N,N,N,N,
-N,N,N,64831,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,65066,N,N,N,N,N,N,N,N,N,N,N,N,65069,65099,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65120,41250,N,N,N,N,N,
-N,N,N,N,N,N,N,41251,N,N,41252,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11812,
-41253,N,41254,61486,N,41255,11813,11814,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41256,N,
-N,N,N,N,N,41257,41258,N,N,N,N,N,N,N,N,41260,N,N,N,N,N,N,N,N,41263,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,41264,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,11815,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41265,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41268,N,41269,41271,N,N,N,N,N,N,41272,N,N,N,N,
-41273,N,N,N,N,N,N,N,41274,N,N,N,N,N,N,N,N,N,41276,N,N,N,N,N,N,11816,N,N,N,N,N,
-N,N,N,N,41275,N,N,N,N,N,41277,N,N,N,41278,N,N,N,N,N,N,N,11817,N,11818,41279,N,
-N,11819,N,N,N,N,N,N,N,11820,N,N,N,N,N,N,N,N,N,N,41280,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41282,N,N,N,N,N,N,41283,N,N,N,N,N,N,N,
-N,N,11822,11823,N,N,N,N,N,N,N,N,N,N,41284,N,11824,N,41285,N,N,N,N,N,N,11825,
-11821,N,N,N,41281,N,N,N,N,N,11826,N,11827,N,N,N,N,N,N,N,N,N,N,41287,41288,N,
-41289,N,N,41290,11828,N,N,N,41291,N,N,41292,N,N,N,N,11829,N,N,N,N,N,N,N,41293,
-N,11830,N,N,11831,N,N,41294,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-41296,N,N,N,N,N,N,N,N,N,N,N,41297,N,N,N,N,N,N,41298,N,N,N,11833,N,41299,N,N,N,
-41300,N,N,41301,N,N,N,N,N,N,N,N,N,N,N,N,N,11834,N,N,N,N,N,41295,N,N,N,N,N,N,N,
-N,N,N,11809,41303,41304,11835,11836,N,N,N,N,N,N,N,N,N,N,N,11837,N,41305,N,N,
-41306,N,N,N,N,11838,N,N,N,41307,N,41308,N,N,N,41309,N,N,N,N,11839,N,N,N,N,N,N,
-11840,N,N,N,N,N,N,N,N,N,N,N,N,11842,N,N,N,N,11841,11843,41311,N,N,N,41312,N,N,
-N,N,N,N,N,41313,N,N,N,N,41314,N,N,N,41315,N,N,N,N,N,N,N,N,N,N,N,41316,N,N,
-41317,N,N,N,41318,N,N,N,N,N,41319,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,41321,N,N,N,N,N,N,N,N,N,41322,41323,11844,41324,41325,N,N,N,N,N,41326,N,N,N,
-N,N,N,41320,N,N,N,N,N,N,41327,N,N,N,N,N,N,41329,N,N,N,N,N,N,N,N,41330,41331,N,
-N,N,N,N,N,N,N,41332,N,N,41333,N,N,N,N,11845,N,41336,N,11847,N,N,N,41338,N,N,N,
-N,41339,N,N,N,N,N,N,N,41340,N,N,N,N,11848,N,N,41341,N,N,N,N,N,N,N,N,11846,
-41334,11851,N,N,11850,N,41761,N,N,11852,N,N,N,N,N,N,N,N,N,N,N,41763,N,N,N,
-41764,N,N,11853,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11854,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,11855,N,N,N,N,N,N,N,N,N,N,11857,N,11858,N,N,N,N,N,
-N,N,N,41766,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41768,N,N,N,N,N,N,N,62580,N,N,
-N,N,N,N,N,41769,N,N,N,N,N,N,N,41770,N,N,N,N,N,N,N,N,N,N,N,N,41772,N,N,N,N,
-11860,N,N,N,N,N,41773,N,N,N,N,N,N,N,N,N,41774,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-41776,N,N,N,N,N,N,11861,N,N,N,N,N,N,11862,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,11863,N,N,N,11864,N,N,N,N,N,N,N,N,N,N,N,11865,N,N,N,N,41779,41780,11866,
-41781,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41782,11868,N,11869,41783,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,11870,N,N,N,N,N,N,N,N,N,N,N,41785,N,11871,N,N,N,N,41786,12158,N,N,N,
-11872,N,N,N,N,N,N,N,N,N,N,41787,N,N,N,N,N,N,N,N,N,N,41788,N,N,N,N,N,N,N,N,N,N,
-41790,N,41789,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11873,N,N,N,N,41792,N,N,N,N,N,N,N,N,
-N,N,N,41794,N,41795,N,N,N,N,N,N,N,N,41796,N,N,N,N,N,N,N,N,N,N,41797,41798,N,N,
-N,N,N,N,N,N,N,N,N,N,11874,N,41799,N,11876,N,N,N,11877,41801,N,N,N,N,11878,N,N,
-N,N,11879,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11881,N,N,N,N,N,N,41803,N,N,
-N,11882,11883,N,N,N,N,N,N,11884,N,N,41804,41805,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,11885,N,N,N,N,N,N,N,41806,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41807,N,N,N,N,N,N,
-N,N,41808,N,N,N,41809,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,11887,N,11888,N,N,N,41812,N,N,N,N,41813,N,N,N,N,N,N,N,N,N,N,N,N,N,41814,N,
-N,11889,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11890,N,N,N,N,N,N,N,N,N,
-11891,N,N,N,N,N,N,41815,N,N,N,N,N,N,N,N,N,N,N,N,N,11892,N,41816,N,N,41818,N,N,
-N,N,N,N,N,N,41819,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41823,N,N,N,N,41824,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41826,41827,11893,N,N,N,N,N,
-N,N,N,N,N,N,20350,N,N,N,N,N,41829,N,N,11894,41830,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,41832,N,N,N,N,N,N,N,N,N,11895,N,N,N,N,N,N,N,41828,N,N,
-N,N,N,N,N,N,N,N,N,N,41833,N,N,N,41834,N,N,N,N,11897,41835,N,N,N,N,N,N,N,11898,
-N,N,N,N,N,N,N,N,N,N,11899,N,N,N,N,N,N,N,N,11900,N,41836,N,N,41837,N,N,N,N,N,N,
-N,41838,11901,N,N,N,N,N,11896,N,N,N,41839,11902,N,N,N,N,41840,N,N,12065,N,N,N,
-41841,41842,N,N,N,N,N,N,N,N,41843,N,N,41844,N,N,N,N,41845,N,N,N,41846,N,N,
-12066,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,41848,N,N,41849,N,41850,N,41851,N,N,N,N,N,N,N,N,N,N,N,12067,41852,41853,N,N,
-N,N,N,N,N,41854,N,N,N,N,12068,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,12069,N,N,N,N,N,N,N,N,N,12070,N,N,N,N,N,N,42017,N,N,N,N,42018,N,N,N,N,
-N,42020,N,N,42021,N,N,N,N,N,12071,N,N,N,N,N,N,N,N,N,N,N,N,N,12072,N,42023,
-42024,N,N,42025,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42027,N,N,N,
-12073,42028,N,N,N,12074,N,42029,N,N,N,N,N,12075,N,N,42030,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,12077,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-42035,N,N,N,N,N,N,N,N,N,42036,N,N,42037,N,12078,N,N,42038,42032,N,N,N,N,N,N,N,
-N,N,N,42039,N,N,N,N,42041,N,N,N,N,N,N,42043,42046,12080,N,N,N,N,N,12081,N,
-42047,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42044,N,N,N,N,N,N,N,42048,
-N,N,N,N,N,N,42049,N,N,N,12082,N,42051,N,42052,42053,N,N,N,N,N,N,42054,N,12083,
-N,N,N,N,N,N,N,N,N,29735,N,N,N,N,N,N,N,N,N,N,42055,N,42056,N,N,N,N,N,12085,N,N,
-N,N,N,N,42057,N,12087,N,12088,12089,N,N,N,12084,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,42059,N,N,N,42060,N,N,N,N,N,N,N,N,42061,N,N,N,12090,42062,N,N,42063,12091,
-N,N,N,N,N,N,N,N,N,42064,12092,N,N,12093,42065,N,N,N,N,42066,12094,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,42067,N,N,N,12095,12096,N,N,42068,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,42069,N,N,N,N,N,N,N,N,42070,N,N,N,N,N,N,N,N,N,N,N,N,N,42071,42072,
-12097,N,N,N,N,N,N,N,N,N,N,42074,N,N,N,N,N,N,N,N,N,N,N,12099,N,42075,N,N,N,N,N,
-42077,N,N,N,N,N,12100,N,N,N,12101,12102,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42079,
-42080,N,N,N,N,N,42081,42082,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,42084,N,N,N,N,N,N,42085,12103,N,N,42086,42087,42088,N,12104,N,N,N,42089,
-12105,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42093,N,12106,
-42094,42095,N,N,N,N,N,N,N,N,N,42096,N,N,N,42092,N,N,N,N,N,N,N,N,N,N,N,12109,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,12110,12111,N,N,N,42099,N,N,12112,N,N,N,N,N,N,N,
-42097,N,N,N,N,N,N,42102,N,N,N,N,N,12113,N,42103,N,N,N,N,N,N,12114,N,N,42104,N,
-N,N,N,12115,12116,N,42106,N,N,42107,N,42108,N,12117,42109,N,N,N,N,12118,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42110,N,42273,N,N,N,N,N,N,42274,N,N,N,N,N,N,
-N,N,N,N,42275,N,N,N,N,N,N,42276,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42278,N,N,42279,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,12120,N,N,12121,N,N,42280,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,12123,N,N,N,N,N,N,N,N,N,N,N,N,12124,42281,42282,N,
-42283,N,42284,42285,N,N,N,42286,N,N,N,N,N,N,N,N,42287,12125,N,N,N,N,N,N,N,N,N,
-N,12127,42288,N,N,N,N,N,N,42289,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42291,N,N,N,
-N,N,N,N,N,N,42292,12130,N,N,N,12129,N,12131,N,N,N,N,N,12132,N,N,N,N,N,12133,N,
-42293,N,N,N,N,N,N,12134,N,N,N,N,N,N,N,N,N,42294,42295,42296,42297,N,N,N,N,
-42298,12135,42299,N,N,N,N,N,N,42300,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42301,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42304,N,N,N,N,N,N,N,N,42306,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42309,N,12137,N,42310,N,N,N,N,N,N,N,N,N,N,N,N,
-N,12138,N,N,N,N,N,N,N,42312,42313,N,N,N,N,N,42314,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-12139,N,N,N,N,N,N,12140,N,N,N,N,N,N,N,N,N,N,N,N,42315,N,N,N,N,12141,N,N,N,N,N,
-N,N,N,N,42316,N,N,N,N,N,N,N,N,N,N,N,N,N,42317,N,N,N,N,N,N,12142,N,N,N,N,42318,
-N,N,N,N,42319,N,N,N,N,12143,N,N,N,N,N,N,N,N,N,N,12144,42320,N,N,N,N,42321,
-42322,N,N,42323,N,N,N,N,N,N,42324,N,N,N,N,N,N,N,N,N,32378,42328,42329,N,N,N,N,
-N,12145,N,N,N,42330,N,N,N,N,N,N,N,N,N,N,N,12146,N,N,N,42331,N,N,N,N,N,42332,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-42333,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42334,N,12147,N,N,N,N,N,12148,N,N,N,N,N,N,
-N,N,N,12149,N,N,42335,N,N,N,12150,N,N,N,N,N,12151,N,N,N,N,N,N,42336,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,42337,N,12152,42338,42339,N,42340,N,N,N,N,12153,N,N,N,N,
-N,N,N,N,N,42341,N,42342,N,42343,N,N,N,N,42344,N,N,N,N,42345,N,N,N,N,12154,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42346,N,42347,N,N,N,42348,N,N,N,N,42349,
-N,N,N,N,N,N,N,N,42351,N,42350,N,N,N,N,42352,42353,N,N,N,N,N,N,N,42354,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,42355,N,12156,N,N,N,N,N,N,N,N,N,N,N,12157,N,N,N,N,N,N,N,
-42357,N,N,N,N,N,N,42356,N,N,N,N,N,N,N,N,N,N,N,N,20309,N,N,N,N,N,N,N,N,N,N,
-42358,N,N,N,N,N,42359,N,N,N,20310,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42360,N,N,
-N,N,N,N,42361,N,N,N,N,N,N,N,N,N,N,N,N,42362,20311,N,42363,N,42364,N,N,42365,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,20312,N,N,43041,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,43042,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,43044,N,N,N,N,N,N,N,N,N,N,N,
-N,N,43046,N,N,N,N,N,N,N,43047,N,20313,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-20314,N,N,N,N,43050,N,N,N,N,N,N,N,N,N,N,N,43051,43053,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,20315,N,N,N,N,N,N,N,N,N,N,N,20316,N,N,N,N,20317,N,N,N,N,N,43054,N,20318,N,
-N,N,N,43055,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,32379,N,N,N,43057,N,N,20320,43058,N,N,N,43059,43060,43061,N,
-N,N,N,N,N,43062,N,N,N,N,N,N,N,N,N,20324,N,43065,N,N,N,N,N,N,N,N,N,N,N,43068,N,
-43069,N,N,N,N,20325,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,20326,43073,N,43074,20327,N,
-N,43075,43076,N,N,20328,N,N,43078,N,N,N,N,N,N,N,43079,N,N,N,N,20329,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,43081,N,20330,N,N,N,N,20331,N,20332,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,20333,43084,N,N,N,N,N,N,20336,N,N,
-43085,N,N,N,N,N,N,N,N,N,N,N,N,43087,N,N,43088,N,N,N,43089,N,43090,20337,N,N,N,
-43086,N,N,N,N,N,43091,N,N,N,N,N,N,N,43092,N,N,N,N,N,N,N,N,43093,N,N,N,20339,
-20340,N,N,20342,N,N,N,N,N,N,N,N,20341,N,N,N,N,N,N,N,N,N,N,N,N,N,43095,N,N,N,N,
-N,N,N,N,43096,N,N,20343,N,N,43098,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,20344,N,N,N,
-N,N,N,43101,N,N,N,N,N,N,N,N,N,43103,N,43104,N,N,43105,N,43106,N,N,N,N,N,N,
-20345,N,N,N,20346,N,N,20347,N,N,N,N,N,N,N,N,43107,N,43108,N,43109,N,N,N,20348,
-43111,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,20349,N,N,N,N,N,43112,N,N,N,N,N,43113,
-43114,N,N,N,N,N,N,N,43115,N,29736,N,43117,N,N,N,N,43118,43120,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,43122,N,29737,43123,N,N,29738,N,N,N,N,N,N,43125,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,43126,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,43127,N,N,N,N,N,N,N,N,N,N,
-43128,N,N,N,N,N,N,N,N,N,N,N,N,43130,N,29739,N,N,N,N,N,29740,N,N,N,N,N,N,N,N,N,
-N,N,N,43132,43133,43134,44065,N,N,N,N,N,N,N,N,32380,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44067,N,N,N,N,
-44068,N,44069,N,N,N,N,N,N,N,N,N,N,N,N,44070,N,N,N,N,29741,44071,N,N,N,N,N,N,
-44072,N,N,N,N,29743,N,N,N,N,N,N,44073,N,N,N,N,N,N,44074,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29744,N,N,N,44076,29745,N,29746,N,N,N,
-N,29747,44077,N,N,N,N,N,44078,N,N,N,N,N,N,N,N,N,N,N,N,N,44079,29748,44081,N,N,
-N,N,29749,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29750,N,29751,N,N,N,N,N,N,29752,N,N,
-29753,N,N,N,N,29754,N,44082,N,N,N,N,N,N,N,N,N,N,N,N,29755,N,N,N,29756,N,N,N,N,
-N,N,N,N,N,N,44083,29757,N,N,29758,N,N,N,N,N,N,N,N,N,N,44084,N,N,N,N,N,N,N,N,N,
-N,29759,44085,N,N,N,N,N,N,N,N,N,N,29760,N,N,N,N,N,44086,N,N,N,N,N,N,N,N,N,N,N,
-N,29761,N,N,N,N,N,44087,N,44088,N,N,29762,N,N,N,N,N,N,N,29763,N,N,N,N,N,29764,
-N,29765,44089,N,N,N,N,N,N,N,N,N,N,N,44090,N,N,44092,N,29766,N,44093,N,N,N,N,N,
-N,44094,44095,44096,N,N,N,N,N,N,N,N,N,29767,N,N,29768,44097,N,N,N,N,N,N,29769,
-N,N,N,N,44098,44099,N,N,N,44100,N,N,N,N,N,N,N,N,44101,29770,N,N,N,N,N,N,29771,
-N,N,44103,29772,N,N,N,N,N,N,N,N,N,44104,N,44105,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-29773,N,29774,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29775,N,N,N,N,44107,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,44108,N,N,N,N,N,N,N,N,N,N,44109,N,N,N,N,N,N,N,N,N,N,44110,N,N,N,N,
-N,N,N,29777,29778,N,N,N,N,N,N,N,N,N,44111,N,N,N,N,N,N,N,44113,44114,N,N,N,N,N,
-N,N,N,N,N,N,N,44115,N,N,N,N,N,N,N,N,N,44116,N,N,29779,N,N,N,N,N,N,N,N,29780,
-29781,N,N,N,44117,N,44118,N,29782,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44119,N,N,N,
-44120,N,N,44121,N,N,29783,44122,N,44123,44124,N,N,N,N,N,44125,N,N,29784,N,
-44126,N,N,N,N,N,N,N,N,N,N,N,N,29785,N,N,N,N,29786,N,N,N,N,N,N,29787,N,N,44127,
-N,N,N,N,N,N,44129,N,N,N,N,44130,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,44131,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44132,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,29789,N,N,N,N,44134,44135,N,N,N,44136,44137,N,N,N,N,N,
-N,N,N,N,N,N,N,44138,N,N,44139,N,N,N,N,44140,N,N,N,N,N,N,N,N,N,N,N,29792,N,N,
-29791,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44142,N,N,N,N,N,N,N,
-44143,N,44144,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44145,44147,N,N,N,N,N,
-N,N,N,N,N,N,N,29794,44148,N,N,N,N,N,44149,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,29795,N,N,N,N,29796,N,N,44150,N,N,N,N,N,44151,N,N,N,N,44152,44153,N,N,N,
-29797,N,N,N,29798,N,N,N,N,N,N,44154,N,N,44155,N,N,N,N,N,N,N,N,44157,N,29799,N,
-N,N,44158,N,N,N,N,N,N,N,44156,N,N,N,N,N,N,N,N,N,29800,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,44321,N,N,N,N,N,N,N,N,N,N,N,N,44322,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29801,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44323,
-29802,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,29803,44325,44326,N,N,N,N,N,N,29804,N,N,44327,N,N,44328,N,N,N,N,N,N,N,29805,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44331,N,N,44332,N,N,N,29806,
-N,44333,44334,N,N,N,N,44335,N,29807,44336,N,N,N,N,N,N,N,N,N,44337,N,N,N,N,N,N,
-N,N,N,N,44339,N,N,N,N,N,N,N,N,N,N,N,29808,N,N,N,N,N,N,44342,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,29809,N,N,N,N,N,N,N,44343,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44346,N,N,
-N,N,44344,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,44347,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44349,44350,N,N,N,N,N,N,
-44351,N,N,N,44352,N,N,N,N,29810,N,N,N,N,N,44353,44354,29811,N,N,N,N,44355,N,N,
-29812,N,44348,44356,N,N,N,N,N,N,29813,N,N,N,29814,N,N,N,N,N,N,N,N,N,44357,N,N,
-N,29815,N,N,44358,N,N,N,44359,N,N,N,N,N,44360,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29817,N,N,N,N,N,N,N,N,44361,44362,N,44363,N,
-N,29818,N,N,N,N,N,N,N,N,N,N,N,N,29819,N,N,N,N,N,44364,N,N,N,N,N,29816,N,N,N,
-44365,N,N,N,N,N,N,N,N,N,44366,N,N,N,N,N,N,N,N,N,44367,N,N,N,N,N,N,N,N,N,N,N,
-44368,N,44369,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-29821,29822,N,N,N,N,29985,N,N,N,N,N,29986,44370,44371,N,29820,N,29987,N,N,N,N,
-44372,N,44373,N,N,N,N,N,N,N,N,N,N,N,N,44375,44376,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,29988,N,N,N,29989,N,N,N,44377,44378,N,N,N,N,N,N,N,N,N,N,44380,N,N,N,N,
-44381,N,44382,N,N,N,N,N,N,N,44384,N,N,N,29990,N,N,N,N,N,N,29991,N,N,N,N,N,N,N,
-N,44385,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44386,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-44387,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29993,N,N,N,44388,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,44389,N,N,N,N,N,N,44390,N,N,44391,44392,N,N,N,N,44393,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,29994,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44394,N,N,
-44395,N,N,44396,N,N,N,N,N,N,44397,N,N,44398,N,N,N,N,N,N,44399,N,N,N,N,N,N,N,N,
-N,N,44400,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44402,N,N,
-N,N,N,N,44403,N,N,44404,29996,N,N,N,44405,N,N,N,44406,29997,N,N,N,N,N,N,N,N,N,
-N,N,29998,N,N,N,N,N,N,N,N,29999,N,N,44407,30001,N,30002,N,N,N,N,N,44408,30003,
-N,N,N,N,30004,30005,N,30006,N,N,N,N,N,N,30000,N,N,N,N,N,N,N,N,N,N,44409,N,N,
-30008,N,N,N,30009,N,44411,N,N,44410,N,N,N,N,N,44414,N,30011,30012,44577,N,N,N,
-N,N,30013,N,44578,N,30014,N,N,N,N,44581,44582,44583,44584,N,N,N,N,N,30015,N,N,
-N,30016,30017,N,N,44585,N,N,N,N,44586,N,N,N,N,N,N,N,N,N,N,N,N,30018,N,N,44587,
-N,44588,N,N,N,N,N,N,44589,N,N,N,N,N,N,30020,N,N,N,N,N,N,N,N,N,N,N,N,44591,N,N,
-N,44592,30021,N,N,44593,N,N,N,N,N,30022,N,N,N,44595,N,N,N,N,N,N,30023,N,30024,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30026,N,N,N,N,N,N,N,N,N,N,N,N,30027,N,N,N,
-44597,N,N,N,N,N,N,N,N,N,N,N,N,N,30028,30007,44599,N,N,N,44600,N,N,N,N,N,N,N,N,
-N,N,N,N,44601,30029,N,N,N,N,N,44603,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,30031,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30033,30034,N,N,N,44606,
-44607,N,N,N,N,N,N,44608,N,N,N,N,N,N,N,N,44609,N,N,N,N,N,N,N,N,30032,N,N,N,N,N,
-N,N,N,N,N,N,N,N,44613,N,44614,N,N,N,N,30035,N,N,N,N,N,30036,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,44616,30037,N,N,N,N,30038,N,N,30039,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,44620,N,44621,N,N,N,N,N,N,N,N,30040,N,N,N,N,30042,N,N,44622,N,N,N,
-N,44623,N,N,N,N,N,N,N,N,N,44624,N,N,N,N,30043,N,44625,N,44626,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,44627,N,N,N,N,N,N,44628,N,30041,N,N,30044,30045,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,44619,N,N,N,N,N,N,N,44632,N,N,N,N,30047,N,44633,N,N,N,N,
-N,N,N,N,N,N,N,N,30048,44634,N,N,N,30049,N,44636,N,N,N,N,N,N,N,44637,N,N,44638,
-N,N,N,N,N,44639,44640,N,N,N,44641,N,N,44642,N,N,N,N,N,30046,N,N,44643,N,44644,
-N,N,N,30050,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44646,N,N,44647,N,N,N,30051,N,N,
-30052,N,N,N,N,44648,N,44649,N,N,N,N,N,44650,N,N,N,N,N,N,N,N,N,N,N,N,N,44651,N,
-N,N,N,N,44652,N,44654,44655,44656,N,44657,N,N,N,N,N,N,30054,N,30055,N,N,N,N,
-44658,44659,N,N,N,N,N,N,30056,N,44660,N,N,N,N,N,N,44661,N,N,N,N,N,N,N,44666,N,
-44667,N,N,30057,N,N,N,44668,N,N,44669,30058,N,N,N,N,N,44670,N,N,44833,N,N,N,N,
-N,N,N,N,N,N,44834,44835,N,N,30059,N,N,N,44836,30060,N,N,30061,30062,N,N,N,N,N,
-44837,N,N,N,44662,30063,44838,N,N,N,44839,N,N,30064,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30067,N,N,N,N,N,
-44843,N,N,N,N,N,N,30068,N,N,N,44845,N,N,30065,N,N,N,N,N,N,N,N,N,N,N,N,N,30069,
-N,N,N,N,N,N,N,N,N,N,N,30070,30071,N,N,N,30072,44846,N,N,44847,N,N,N,N,N,44848,
-N,N,N,N,N,N,N,44849,N,N,N,N,44850,30073,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-44851,N,N,N,44853,N,44854,N,N,N,N,N,N,N,N,N,N,N,N,30075,44855,N,N,N,N,N,N,
-30076,N,N,44856,N,N,N,N,N,N,44857,N,N,44858,N,44859,N,N,N,44860,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,30077,N,44861,N,N,N,N,44862,N,N,N,N,N,N,N,N,N,N,N,30242,44868,N,
-N,N,N,N,30243,30244,N,N,N,44869,44870,N,N,N,44871,44873,30245,30246,N,N,N,N,N,
-N,N,44874,30247,N,44875,N,N,N,30248,N,N,N,N,44876,N,N,44877,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,44865,N,44879,44880,44881,N,N,N,N,N,N,30250,N,N,30251,44882,
-N,N,N,N,N,30252,44883,N,N,44884,N,N,N,N,44886,N,30253,N,44887,N,N,N,30254,N,N,
-N,N,30255,N,N,N,N,N,N,N,N,44888,N,N,N,N,N,N,30256,N,N,N,N,N,N,N,30257,N,N,N,N,
-N,N,44885,N,N,N,44890,N,N,N,N,44891,N,N,N,N,N,30259,N,44892,N,N,N,N,N,44894,N,
-N,30260,N,N,N,N,N,N,N,N,30261,30262,44895,N,44896,N,N,N,30263,N,N,N,N,N,44898,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44899,N,N,N,N,N,N,N,N,44900,N,N,N,N,N,N,N,N,
-N,44902,N,N,N,44901,N,N,N,N,N,N,N,44903,44904,N,N,N,N,N,N,30264,N,N,30265,N,N,
-N,N,44907,N,N,N,N,44908,44909,44910,N,N,N,N,N,N,N,N,N,44911,44913,N,N,N,44914,
-44915,44916,N,N,N,N,N,44918,N,N,N,30268,N,N,30269,N,N,N,N,N,N,N,N,N,N,N,N,N,
-30270,N,N,44920,N,N,N,N,N,30271,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30272,N,N,N,
-44921,N,N,N,N,N,N,N,N,N,N,N,30273,N,44922,N,N,N,N,N,N,N,30274,N,N,N,N,30275,N,
-30276,N,N,N,N,44923,N,N,N,N,N,N,N,N,44924,N,30277,N,N,44925,N,N,N,N,N,N,44926,
-30278,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60961,N,N,N,N,N,N,N,N,N,
-N,N,N,N,30279,N,N,N,30280,60962,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60964,60965,N,N,N,
-N,N,N,N,N,60966,60967,60968,N,N,N,N,N,30282,N,N,N,N,N,N,30283,30284,N,N,60969,
-N,N,N,N,N,N,N,N,N,N,N,60970,60971,N,N,N,N,N,N,60972,N,N,60973,N,N,N,N,N,N,N,N,
-N,N,N,N,N,30285,60974,N,N,30286,N,N,N,N,60975,N,N,N,60976,N,30287,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30288,N,60977,60978,N,
-N,N,60979,N,N,N,N,60981,N,N,N,N,N,N,N,N,N,N,N,N,N,60982,N,N,N,N,N,N,N,N,N,N,N,
-30289,N,60983,30290,N,N,N,N,N,N,N,N,N,N,61007,N,N,N,N,N,60984,N,N,N,N,N,N,
-30292,N,30293,N,N,N,N,N,N,N,N,N,N,N,N,N,60985,30294,30295,N,N,60986,N,N,N,N,N,
-N,N,N,N,N,60988,60989,N,60990,30296,N,N,N,30297,N,N,N,N,N,N,N,N,N,N,N,N,N,
-30291,N,N,60991,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,60992,N,N,N,30299,N,N,
-N,N,N,N,N,N,N,60993,N,N,N,30300,N,60995,N,N,N,60996,N,60997,N,N,N,30301,N,N,N,
-N,N,N,N,N,60998,N,30302,60999,61000,30303,N,N,N,N,N,N,N,N,N,N,N,N,30298,61002,
-N,N,N,30305,N,N,N,N,N,61003,N,N,N,30306,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,61004,N,61005,61006,N,N,N,N,N,N,30307,61008,N,30308,N,N,61029,N,N,N,N,
-30309,N,N,61009,N,N,30310,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-30311,N,N,61010,N,N,61011,N,61012,N,N,N,N,30312,N,N,N,N,N,N,N,N,N,N,61013,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,61014,61015,30314,N,N,N,N,30315,N,30316,61016,N,N,
-61017,N,N,N,61018,N,N,30317,N,N,N,61019,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-30318,61025,30319,N,61026,N,N,N,N,N,61027,N,N,N,N,N,N,N,N,N,N,30320,N,N,61028,
-N,30321,N,N,N,61030,N,N,N,N,N,61031,61032,61033,N,N,N,N,N,30322,N,N,N,30323,
-30324,N,30325,N,61034,N,N,N,N,N,N,N,N,N,61035,N,N,N,N,N,N,N,N,N,N,N,N,61036,N,
-N,N,N,N,30326,61021,N,N,N,N,N,N,61038,N,N,N,61039,N,N,N,N,61040,N,N,N,N,N,N,N,
-N,N,N,61042,N,30328,N,61037,N,N,N,N,N,61043,N,N,N,N,N,N,N,30329,N,N,N,61044,
-61045,N,61046,61047,N,N,61048,N,61049,N,61050,61051,N,N,61052,N,N,N,N,30330,N,
-30331,N,N,N,N,61053,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61217,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,61218,N,N,N,30332,N,N,N,N,N,30333,N,N,61219,N,N,N,N,N,N,N,N,N,N,61220,N,
-30334,N,61221,N,N,N,30497,N,N,61222,N,N,N,30498,N,N,N,N,N,N,N,N,N,N,61223,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61225,N,N,N,N,N,N,N,N,N,N,N,N,N,61226,N,61227,
-61228,N,61229,N,N,N,30499,N,N,N,N,N,N,N,61230,N,30500,N,N,N,N,N,N,N,N,N,N,
-61231,N,N,N,N,30502,N,N,N,N,30503,N,N,N,30504,N,61224,61232,N,N,N,N,N,61233,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30505,61235,N,N,N,N,61236,N,30506,61237,
-N,N,N,30507,N,61238,30508,30509,N,N,N,N,N,61239,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,61241,30510,N,N,N,N,N,N,N,N,N,30511,N,N,N,30512,30513,N,N,61242,N,N,
-N,30514,N,61243,N,61240,N,N,N,N,N,N,61245,30515,N,N,N,N,61246,N,30516,N,N,N,N,
-N,N,N,61247,N,N,N,N,N,61249,30517,N,N,N,N,N,30518,N,61244,N,N,N,N,N,N,N,N,
-30519,61250,61251,30520,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61252,N,N,N,61253,N,N,N,
-N,N,N,N,N,N,N,61254,N,N,N,N,N,N,30522,N,N,N,N,30523,N,N,N,30521,N,N,61256,
-61257,N,N,N,N,30524,30525,61258,N,N,61259,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,61260,N,N,N,N,30526,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61262,61263,N,
-61264,N,N,N,N,N,N,61265,N,N,N,61266,N,N,30527,61267,N,N,30530,N,N,N,N,N,61269,
-N,N,N,N,N,N,N,N,30528,30529,N,N,N,N,N,30531,61270,N,N,N,61271,N,N,61272,N,
-61273,N,N,N,N,N,N,30532,61274,N,N,N,N,N,N,N,61275,N,N,61276,N,N,N,30533,61277,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,61278,N,61279,N,N,N,N,N,N,N,61282,N,N,N,N,30534,N,
-N,N,N,N,N,30535,N,N,N,N,N,61283,N,N,N,N,N,30536,N,N,N,61280,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,61286,N,N,N,N,N,N,61287,N,61288,30537,N,N,N,30538,N,N,N,61289,N,N,N,
-N,N,N,N,30539,N,N,N,N,N,N,N,61285,61290,61291,N,61292,61293,61294,N,N,N,61295,
-N,N,30540,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30542,N,30543,N,N,N,N,N,N,N,N,N,N,30541,
-N,N,30544,61297,30545,61298,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30546,
-30547,N,N,61300,N,N,N,N,N,61299,30548,30550,61301,N,N,N,N,N,N,N,N,30551,N,
-61302,N,30552,N,N,N,N,N,N,N,30553,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,61305,N,N,N,N,30555,N,30556,N,N,N,N,N,N,N,N,N,N,30557,N,N,N,61304,N,N,N,N,
-61306,N,N,N,N,61307,N,61308,N,N,N,N,N,N,N,N,N,N,N,61309,61310,N,N,N,61473,N,N,
-N,N,N,N,30559,N,N,N,N,N,N,30558,N,N,30560,N,N,N,N,N,N,61475,N,N,N,N,N,N,N,
-61476,N,N,N,N,N,61477,N,N,61478,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,30561,30562,N,N,N,N,N,N,61479,N,N,N,N,N,N,N,N,N,N,N,N,N,
-30563,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61482,N,N,N,N,N,N,N,N,61483,N,
-N,N,61484,61485,N,N,N,N,N,N,N,N,61487,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61488,N,
-30564,30565,61489,N,N,N,N,N,N,N,N,N,N,N,61490,N,N,N,N,N,N,N,N,N,N,61492,61493,
-N,N,N,N,N,N,N,N,61494,N,N,N,N,N,N,61495,N,N,N,N,N,N,N,N,N,N,N,N,N,30567,61496,
-N,N,N,N,N,N,N,N,N,N,N,N,30568,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61498,61499,N,
-61500,61501,N,N,N,N,N,N,N,N,N,N,N,N,30569,N,30570,61502,N,N,N,N,N,N,N,N,N,N,
-61504,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,61507,N,N,N,N,N,N,61508,30571,61509,N,N,N,N,N,N,N,N,N,N,61510,N,N,N,N,N,
-61511,61512,N,N,N,N,N,N,N,N,N,N,N,N,N,30573,30574,N,N,N,61515,N,N,N,N,61516,N,
-61517,N,N,N,N,N,61514,N,N,N,61518,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30576,N,
-61519,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30577,N,N,N,N,61521,61522,N,61524,
-61525,N,61526,N,N,N,N,N,61527,N,N,N,N,30578,N,N,N,N,61528,N,N,N,61529,N,N,N,N,
-61530,N,N,N,N,N,N,N,N,N,61531,30579,N,N,61532,N,N,N,61533,N,61534,30580,30581,
-N,30582,N,N,61535,30583,N,61536,N,N,30584,N,N,N,N,N,N,N,N,N,61537,N,61538,N,
-61539,N,N,61540,N,N,61541,N,N,N,N,N,61542,N,N,N,30585,N,61543,N,N,N,30586,N,N,
-N,N,N,N,30587,N,N,30588,N,N,N,N,N,N,N,61544,N,30589,N,N,N,61545,N,30590,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,61546,61548,61549,N,N,N,N,N,30753,N,N,30754,N,N,N,N,N,
-N,N,N,61547,N,N,N,N,N,N,30755,30756,N,N,N,N,N,N,N,N,61550,N,30758,N,30759,N,
-30760,30761,30762,N,30763,30764,30765,61551,N,N,N,N,N,N,N,61552,N,N,N,N,N,N,
-61554,N,N,61555,30766,N,30767,30768,N,N,N,30769,N,61556,N,N,N,N,61557,61553,N,
-N,N,30770,N,N,N,N,N,61558,N,N,N,N,30771,N,N,N,N,N,N,N,N,30772,N,30773,N,N,N,
-61559,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61560,N,N,N,61561,30774,30775,61562,30776,
-N,N,N,N,N,N,30781,N,61564,N,N,N,N,61565,30777,61566,N,N,30778,N,N,30779,61729,
-61730,N,30780,N,61731,30782,N,30783,30784,61732,61733,N,N,N,N,N,N,N,N,N,30785,
-N,N,N,61734,61736,61735,N,N,N,30786,N,N,N,N,N,N,N,N,30787,30788,N,N,N,N,N,N,N,
-N,N,N,N,N,61737,N,61738,N,30789,N,N,N,61739,N,N,N,N,N,N,N,N,N,N,N,N,61741,N,N,
-N,61740,N,N,N,N,N,N,N,N,N,N,61743,N,N,N,N,30790,30791,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,30792,N,N,N,N,N,N,N,N,61745,N,N,N,61746,N,N,N,N,N,61747,N,N,
-N,N,30793,N,N,N,N,N,N,N,N,N,N,N,N,N,61750,61751,N,61752,N,N,N,N,N,N,N,61753,N,
-N,N,N,N,61754,N,61755,N,61756,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,61757,N,N,30794,N,61759,61758,N,N,N,N,N,N,30795,61760,N,N,61761,61762,N,N,
-61763,N,N,N,N,N,N,N,N,N,N,61765,N,N,N,N,N,30796,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-61767,N,N,N,N,N,N,N,N,N,N,N,N,N,61769,N,N,N,N,N,N,61770,N,N,N,N,N,N,N,61771,
-61772,N,N,N,N,N,61773,N,N,N,N,N,N,N,30798,61774,N,N,N,61775,N,N,N,N,N,N,N,N,N,
-61776,N,61777,61778,N,N,N,30799,N,N,61779,N,N,N,N,61780,N,61781,N,N,61782,N,N,
-N,N,N,N,N,61783,30800,N,30801,61784,N,N,N,61786,30802,N,N,N,N,N,N,61787,N,N,N,
-61790,N,30803,30804,N,61785,30805,N,61791,61792,N,30806,N,N,N,N,N,N,61794,
-32381,N,61795,N,N,N,N,30807,N,N,N,N,N,61797,N,30808,N,N,N,N,N,N,61796,N,N,N,N,
-61800,N,30809,N,N,N,N,N,61802,N,30810,N,N,N,N,N,N,N,N,N,61803,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,30811,30812,N,N,N,N,N,N,N,30813,61805,30814,N,30815,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,30816,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61806,N,N,N,N,N,
-30817,61807,30818,30819,N,61809,61808,N,N,N,N,30820,61810,61811,N,30821,N,N,N,
-N,61812,N,N,N,N,N,N,30822,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30823,N,N,N,61814,N,N,
-30824,N,30825,N,N,N,N,N,30826,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30827,N,61816,
-N,N,N,61817,N,N,N,N,30828,N,N,N,N,N,N,N,N,N,N,30829,30830,N,N,N,N,N,N,N,N,N,N,
-N,N,61819,N,30831,61820,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61821,N,N,N,N,N,N,
-30832,61822,30833,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30834,N,N,N,N,N,N,30835,30836,
-N,N,N,N,N,N,N,N,N,61989,N,N,N,30837,N,N,30838,61990,N,30839,N,N,N,N,N,N,N,
-61991,N,N,N,N,N,N,N,61993,N,N,N,N,N,N,N,30840,N,61994,61995,N,N,30841,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30842,N,N,N,N,N,61998,N,N,N,N,61999,N,N,62000,N,
-62001,N,N,N,N,62002,30843,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62003,62004,30844,N,N,N,
-62005,N,62006,N,N,N,62007,N,62008,N,N,N,62010,N,N,N,62011,N,N,N,N,N,N,62012,
-62014,62015,N,N,62016,N,N,N,62017,N,N,N,N,N,N,N,N,N,N,N,62018,N,N,N,N,N,N,N,
-62019,N,N,N,N,N,N,N,N,N,N,62020,30845,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,31009,N,N,N,62021,N,N,N,N,N,N,31010,31011,N,31012,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,62022,N,N,N,31013,N,62023,N,N,N,31014,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,62025,N,N,N,N,N,N,N,N,N,62026,N,N,N,N,N,N,N,N,62028,
-62029,62030,N,N,N,N,62027,N,N,N,N,N,N,N,N,31018,N,N,31016,N,N,N,N,N,N,N,N,N,N,
-62031,N,N,N,N,N,N,N,N,N,N,N,N,62032,N,N,N,62033,N,62034,N,N,N,N,N,N,62035,N,N,
-N,N,N,N,N,N,N,N,62036,62037,N,N,31019,N,62038,N,N,N,N,N,N,N,N,N,N,N,31020,N,N,
-N,N,31022,N,62039,62040,62041,N,N,62042,31021,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-62044,N,N,N,N,N,N,N,N,N,N,62045,31023,N,N,N,N,N,N,N,N,62047,N,N,N,N,N,N,N,N,
-31024,N,62046,31025,N,N,31026,N,N,N,N,N,N,62048,N,N,N,N,N,N,N,N,N,31029,31030,
-N,N,N,62049,N,N,N,N,N,N,N,N,N,N,N,N,N,62050,N,N,62051,31034,N,N,N,N,N,N,N,N,N,
-N,62053,N,N,N,N,N,N,N,N,N,N,62054,N,N,N,N,N,N,31038,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,62055,62056,62057,N,31042,N,N,62058,N,N,N,N,N,62059,
-N,N,N,N,N,N,N,62060,N,N,N,N,N,N,N,31043,N,N,62061,N,N,N,31044,N,N,62062,N,N,N,
-N,N,N,62063,N,N,N,N,62064,31045,N,31046,N,62065,62066,N,N,N,N,N,N,31048,N,
-62067,N,N,N,N,N,N,N,31049,N,N,N,N,N,N,N,N,N,N,N,N,31050,N,31051,31052,N,N,N,N,
-N,N,62072,N,N,N,N,N,N,62073,N,N,N,62074,N,N,N,N,N,62075,N,N,62076,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,62078,N,N,N,N,N,N,N,N,N,N,62241,31054,N,N,N,N,N,N,N,N,N,N,N,N,
-N,62242,N,N,N,N,62243,N,N,N,N,N,N,N,N,N,62244,N,N,62245,N,N,62246,31055,N,
-62247,62248,N,N,N,N,N,N,62249,N,N,62250,N,N,31056,N,N,N,N,N,N,N,62251,N,N,
-62252,N,N,N,N,N,N,N,N,N,62253,N,N,31058,N,N,N,N,62254,N,N,N,N,N,62255,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,31059,N,N,62256,N,N,N,N,N,N,N,N,62257,N,N,N,N,N,N,31061,
-N,N,N,N,N,62260,N,31062,62261,N,62262,N,N,N,N,N,N,N,N,N,N,N,N,N,62264,N,31063,
-N,N,62265,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62266,62267,N,N,31064,N,N,
-N,N,N,N,N,N,62268,N,N,N,N,N,N,N,N,31065,62271,N,N,N,N,N,N,N,N,N,N,31066,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62274,N,N,62275,N,N,31067,62276,62277,N,
-62278,N,N,N,N,N,N,N,N,N,31068,N,62273,N,N,N,62282,N,N,N,N,N,31069,N,N,N,N,N,N,
-31070,N,N,N,N,N,N,62284,N,N,N,N,N,N,N,N,N,N,31071,N,N,N,62286,N,62287,N,N,
-62288,N,N,N,31072,N,31073,N,N,31074,62289,N,N,N,N,N,62285,N,N,N,N,N,62281,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,62292,62293,N,N,N,N,N,N,N,N,N,62294,N,N,31075,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,62296,N,N,N,N,N,62297,N,N,N,N,N,N,62298,N,N,N,N,N,
-N,N,N,62299,N,N,N,N,62300,N,N,N,N,N,N,N,N,N,62303,N,62304,31077,N,31078,62305,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62306,N,N,N,N,N,62307,31079,N,62308,N,N,N,N,N,N,
-N,62309,N,N,62310,62311,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31081,N,31082,N,N,N,N,N,
-62312,N,N,N,N,N,N,N,N,N,N,31080,N,31083,N,N,31084,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-62313,N,N,N,N,62314,N,N,N,N,N,N,62315,N,N,N,N,N,62316,N,31087,N,N,N,N,62317,N,
-N,62318,N,N,N,N,N,N,N,62319,N,N,N,31088,62320,62321,62322,N,N,N,N,N,N,N,N,
-31089,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31090,N,N,N,N,31091,N,N,N,N,N,
-N,N,N,N,N,N,31092,N,N,N,N,N,62326,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62328,62329,N,
-N,N,N,31093,N,N,62330,N,N,N,N,62332,N,N,N,62334,N,N,N,N,62497,N,N,N,N,N,N,N,
-31094,N,62499,N,31095,N,N,N,31096,N,N,N,N,N,N,N,N,62501,N,N,N,N,62502,N,N,N,N,
-N,N,N,N,N,62504,62505,N,N,N,31097,31098,62506,N,N,N,N,N,N,N,N,62508,31099,N,N,
-N,N,N,N,N,N,N,31100,62509,N,N,N,N,31101,N,N,N,N,N,N,N,N,N,N,N,N,N,31102,N,N,N,
-N,N,N,N,N,N,N,N,62512,62513,N,62514,31265,N,N,N,N,N,62515,31266,N,N,N,N,N,N,N,
-N,N,N,31267,N,N,N,N,N,62519,62520,N,31268,N,N,N,N,N,N,N,N,N,N,N,N,N,62521,N,N,
-N,N,N,62522,N,N,N,N,N,N,N,N,N,31269,N,N,N,N,62524,N,N,N,31270,N,N,62526,N,
-62527,N,N,31271,62528,N,N,N,N,N,N,N,N,N,N,62529,N,N,N,N,N,62531,N,N,31272,N,N,
-N,N,N,31273,62532,N,N,62533,N,N,N,N,N,N,N,N,N,N,N,62534,62535,N,N,N,N,N,N,N,N,
-62536,N,31274,N,N,N,N,N,N,N,N,N,31275,N,N,N,N,N,N,N,N,N,31276,62537,N,62538,N,
-N,N,N,N,N,N,N,N,31277,N,N,62539,N,N,N,N,N,N,N,N,N,N,62540,N,N,N,N,N,N,N,62541,
-31280,N,N,N,N,N,N,N,62545,31281,N,N,N,31282,N,62546,N,N,N,N,N,62547,N,N,62548,
-N,N,N,N,N,N,62549,31279,N,N,N,62550,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,62551,N,31284,N,N,N,N,N,N,N,N,N,N,31285,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-31286,N,N,N,N,N,N,N,N,N,32382,N,N,N,N,N,N,N,62552,N,62553,N,N,N,N,N,N,N,N,
-62554,N,N,N,N,N,N,N,62555,62556,N,N,31287,N,N,31288,N,N,N,62558,N,N,N,N,N,N,
-62559,N,62560,62563,62562,N,62564,N,N,N,N,62565,62566,N,N,31289,N,N,N,N,N,N,N,
-62567,N,N,62570,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62572,N,62573,62574,N,N,N,N,N,N,N,
-N,62575,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62576,62577,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,62579,31291,N,N,N,N,62582,31292,N,N,N,N,62583,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,62584,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31293,N,N,N,62586,N,N,N,N,N,N,N,
-N,N,N,31294,62587,N,N,N,N,N,N,N,N,N,N,N,31295,N,N,N,31296,N,N,N,62588,N,62589,
-N,N,N,N,N,N,31297,N,31298,62590,N,N,62753,N,N,N,N,N,N,N,31299,62754,N,N,N,N,N,
-62756,N,62755,N,N,N,62757,N,N,62758,N,N,31301,N,62759,N,N,N,N,N,N,N,N,N,N,N,N,
-N,62760,N,31302,N,N,N,N,N,62761,N,N,N,62762,N,N,N,N,31303,N,31304,N,N,N,N,
-31305,N,N,N,N,N,N,62763,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,62764,N,N,N,N,N,N,N,N,N,N,62765,N,N,N,62766,N,N,N,N,N,62767,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62768,N,N,62769,N,N,N,N,
-N,N,N,62770,N,N,62771,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62772,N,N,N,N,N,N,N,N,N,
-N,N,N,62774,N,N,N,N,31306,N,N,N,N,N,N,N,N,N,N,62775,N,31307,62776,N,N,N,N,N,N,
-N,31308,N,N,N,N,N,62777,N,N,N,N,N,N,N,N,N,N,N,N,31309,N,62780,N,N,N,N,N,62781,
-62779,N,N,N,N,N,N,N,N,62784,N,31310,N,N,N,N,N,62785,N,N,N,N,N,62787,N,N,62788,
-N,N,N,N,62789,N,N,N,N,N,N,N,N,62783,N,N,N,N,N,N,N,62791,N,N,N,N,N,N,N,N,N,N,N,
-N,31311,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31312,N,N,N,N,N,N,31313,
-31314,62793,N,N,N,31315,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62795,N,N,62797,
-62798,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62800,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,62801,N,N,N,N,N,N,N,N,31316,N,N,N,N,N,62802,N,62803,N,N,N,
-N,N,N,31317,N,N,N,N,31318,N,N,N,N,N,N,62804,31319,N,N,N,62805,N,N,N,N,N,N,N,N,
-62807,N,N,N,N,N,N,N,62809,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62811,N,62812,62814,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62816,N,N,N,N,N,N,N,62817,62818,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,62820,N,62821,N,N,N,N,N,N,N,62822,N,N,N,N,N,N,N,N,
-62825,62823,N,N,62824,N,62827,N,N,N,62829,N,N,N,N,N,N,N,62831,N,N,N,N,62833,N,
-N,N,31323,N,N,62834,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31324,N,N,N,N,62838,N,N,N,
-62840,N,62841,N,N,N,62842,N,N,N,N,N,N,62843,N,N,N,31326,N,N,N,N,62844,N,N,N,N,
-N,N,N,N,N,N,N,N,N,31327,N,31328,31329,N,N,62845,62846,31330,N,N,N,N,31331,N,N,
-N,63009,N,63010,N,N,31332,N,N,63011,N,63012,N,31333,31334,N,N,N,N,N,N,31335,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,31336,N,N,N,N,N,N,N,N,N,N,N,N,63013,N,N,N,N,N,63014,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,63015,N,N,N,N,N,31337,31338,31339,31340,N,N,N,N,N,
-63016,63017,N,N,N,63018,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63020,N,63021,N,N,N,N,
-31342,N,N,N,N,N,N,N,N,N,N,31343,N,N,63022,N,N,N,N,N,N,N,N,N,31344,N,63023,N,N,
-N,N,N,N,31345,63024,N,N,31346,N,N,N,N,N,N,N,N,N,31347,N,N,63019,31348,N,63025,
-N,N,N,N,N,N,N,N,N,N,31341,44618,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,31349,N,63027,N,N,N,N,N,N,31350,N,N,N,N,N,N,63030,N,N,N,N,31351,N,63031,
-63032,N,N,31352,N,N,63033,N,63034,N,N,N,N,N,N,N,N,N,31353,N,31354,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31355,31356,N,N,N,N,N,N,31357,N,63035,N,N,N,N,N,
-31358,63036,31521,N,N,63037,N,N,N,N,N,N,N,N,63038,N,N,N,31522,N,N,N,63039,N,N,
-N,N,31523,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63040,31524,N,N,N,N,31525,N,N,N,31526,N,
-N,N,N,63041,N,63042,N,N,N,63043,N,63045,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,63046,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31528,N,63047,N,
-N,N,N,63048,N,63049,63050,N,N,N,N,N,N,63051,63052,N,63053,N,N,31529,N,N,N,N,N,
-63055,N,N,N,N,N,N,N,N,N,N,31530,N,N,31531,N,N,63056,N,63057,N,N,N,63058,N,N,N,
-N,63059,N,N,N,31532,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63062,N,N,N,N,N,N,31533,
-N,N,N,N,N,N,N,63063,N,N,N,N,N,N,N,N,31534,N,N,N,N,31535,N,N,N,N,N,31536,N,N,N,
-63064,N,31537,N,31538,N,N,N,N,N,N,N,N,N,N,N,63066,63067,N,N,N,63068,N,N,N,N,N,
-N,N,N,63061,N,N,N,N,N,N,N,N,N,N,63070,N,N,63071,N,N,N,N,63072,63073,63074,N,N,
-N,N,N,N,N,N,63075,N,N,63076,63077,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63078,N,N,31541,
-N,N,N,N,31542,63079,63080,N,N,N,N,N,63081,N,N,N,31543,N,N,31540,N,63082,N,N,N,
-N,N,N,N,N,N,63087,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63083,N,63088,N,63089,N,N,N,
-N,N,31544,N,N,N,N,63090,N,N,63091,63092,N,31545,N,N,N,N,N,N,N,N,N,N,63084,N,N,
-N,N,N,N,N,N,N,N,31548,63094,N,63095,N,63096,N,63097,N,N,N,N,63098,N,N,N,N,N,
-31549,N,N,31550,N,N,N,63099,N,N,N,N,N,N,N,N,N,63100,N,63101,N,N,31551,N,N,N,N,
-N,N,N,N,N,N,31547,N,N,31552,N,N,N,N,N,N,63267,N,N,N,N,63268,N,N,N,N,N,N,N,N,N,
-N,63269,N,N,63270,31553,N,N,31554,N,N,N,N,N,N,N,N,N,63271,63272,N,N,N,N,N,
-63273,N,63274,N,N,N,N,63275,N,N,N,N,N,N,31555,N,N,N,N,N,N,N,N,63276,N,N,N,N,N,
-N,N,N,31557,63277,N,N,N,31558,31559,N,N,N,N,N,N,N,N,N,N,31560,63278,31556,N,N,
-N,N,N,31562,N,N,N,N,N,63279,N,N,63280,N,N,63281,N,N,63282,N,31563,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,31564,63284,N,N,63285,N,N,N,63287,12136,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,63289,N,N,63290,31565,N,N,N,31566,N,N,N,N,N,N,31568,N,N,N,N,N,N,N,
-N,N,31570,N,N,63291,N,N,N,N,N,31571,N,63292,N,N,63293,N,N,N,N,N,N,N,N,N,N,N,N,
-63294,N,63295,N,N,N,63296,N,N,N,63297,N,N,N,N,N,N,31572,N,N,N,63298,63299,N,N,
-N,N,N,N,N,N,N,N,63300,N,N,N,N,N,N,N,N,63302,N,63303,N,N,N,N,31573,N,N,N,N,N,N,
-N,N,63304,N,63305,N,N,N,N,N,N,N,N,N,N,N,N,N,63306,N,N,N,63307,N,63308,N,N,N,N,
-N,N,N,N,N,N,N,63309,N,N,63310,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31574,N,
-31575,31576,63312,N,63313,N,N,N,31577,N,N,63314,N,63315,N,N,63316,N,N,N,N,N,
-63317,N,N,N,N,N,63318,N,63319,N,63320,N,N,N,N,N,N,N,N,N,N,N,N,N,63321,N,N,N,N,
-N,N,N,N,63322,N,N,N,63323,N,63324,N,N,63325,N,N,N,N,N,N,N,N,N,N,N,N,N,63326,N,
-N,N,N,N,N,63327,N,N,N,N,N,N,N,N,N,N,N,63328,63329,N,N,N,N,N,N,N,N,N,N,N,31578,
-63330,N,N,N,N,N,N,N,N,N,63331,N,N,N,N,N,N,N,N,N,N,31579,31580,63335,N,63336,N,
-N,N,N,N,N,N,63337,N,N,N,N,N,N,N,N,N,N,N,N,63338,N,N,N,N,N,N,63334,N,N,N,N,
-31581,31582,N,N,N,N,N,N,N,31583,N,N,N,N,N,N,N,N,63341,N,N,63343,N,N,N,N,N,N,N,
-N,N,N,N,N,63344,N,N,N,N,N,N,N,31585,N,N,N,N,N,N,N,N,63346,N,N,N,63348,N,63349,
-63350,N,N,N,63351,63352,31586,63353,N,N,N,N,N,N,N,63345,63354,N,63355,N,N,
-31587,N,N,N,31588,63356,N,N,N,N,31589,N,N,63357,31590,N,N,N,N,N,N,N,N,N,N,
-31591,N,N,N,N,N,N,N,N,63358,N,N,N,N,N,63521,N,N,N,63522,N,N,N,N,N,N,N,N,N,
-63523,N,N,N,N,N,N,N,N,N,N,N,N,N,63525,N,N,N,N,N,N,N,N,N,N,N,N,N,63526,N,N,N,N,
-N,N,63527,N,N,N,N,63528,N,N,N,N,63531,N,N,N,N,N,63533,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31592,N,N,N,N,N,N,N,
-63534,N,N,N,N,N,N,N,N,N,31593,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63535,63536,
-63537,N,63538,N,N,N,N,N,N,N,N,N,31594,N,N,N,31595,N,N,63541,63539,63542,N,N,N,
-N,N,N,N,63543,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63544,63545,N,N,N,31597,
-63547,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31600,31601,31602,N,31598,N,
-N,N,N,N,N,N,N,N,N,31603,N,N,N,N,N,N,N,N,31604,N,31605,N,N,N,N,63549,N,31606,N,
-N,N,N,N,N,31607,N,63551,N,N,63552,N,N,N,63553,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,63556,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,63557,N,N,N,N,N,N,N,N,63558,N,N,N,N,N,N,63559,N,N,N,31608,N,N,N,N,N,N,N,N,N,
-N,63560,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63561,N,N,N,N,N,N,63562,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31610,N,63563,N,63564,N,N,N,N,N,N,N,
-N,N,N,N,N,31611,N,N,N,N,N,63565,N,N,N,N,N,63567,N,63568,N,N,31612,N,N,N,N,N,N,
-63569,N,63570,63572,31613,N,63573,31614,N,N,N,N,N,N,N,N,N,N,N,63575,31777,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63576,N,31778,N,N,N,N,N,N,63577,N,N,N,N,N,N,
-63578,N,31779,N,N,N,N,N,63579,31780,N,N,N,N,N,N,N,N,N,63580,N,N,N,N,31781,N,N,
-N,31782,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31783,N,N,N,31784,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63582,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,31785,N,N,N,N,N,N,63581,N,N,N,N,N,N,N,N,63583,N,N,N,N,N,N,63584,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,31786,N,N,N,N,N,N,63585,N,N,N,N,N,N,N,31787,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,31788,N,31789,N,N,N,N,N,63586,63589,N,N,N,N,63588,
-N,N,63590,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63591,N,N,63592,N,N,N,N,N,N,N,N,N,N,N,N,
-N,63593,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63594,N,N,31793,N,N,N,N,N,N,
-N,N,N,N,63596,N,N,31794,N,N,N,N,31795,N,N,N,N,63597,N,N,N,N,N,N,N,N,N,N,31796,
-N,N,N,N,N,N,N,N,N,N,N,N,63598,N,N,N,N,N,N,N,N,63599,N,63600,N,N,N,N,N,N,N,N,N,
-63601,N,N,N,N,N,N,N,N,63602,63603,N,N,N,N,N,N,63604,31797,63605,63606,N,N,N,
-63608,N,N,N,N,N,N,N,63611,N,63612,N,31798,N,N,N,N,N,63613,N,N,N,N,63614,N,N,
-63777,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31799,63778,N,N,N,63779,N,N,N,N,N,63780,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63783,63782,N,N,N,
-N,N,63784,N,63786,N,N,N,N,N,N,N,N,63787,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63789,63788,N,N,
-63790,N,N,N,N,N,N,N,31801,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63792,63793,N,N,31802,N,
-N,N,31803,N,N,N,N,N,31804,63795,N,N,N,N,63796,N,N,N,31806,N,N,N,N,N,N,N,N,
-31807,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,63797,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63798,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,63799,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63800,N,N,N,N,N,N,
-N,N,31808,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63802,N,63803,N,N,N,N,N,
-31809,N,N,31810,N,N,N,N,N,31811,N,63804,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-63805,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63808,63809,N,N,N,N,N,63806,N,N,N,N,N,N,
-N,63811,N,63812,N,N,N,N,N,N,N,N,N,31812,63813,63814,31813,N,N,N,63815,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,63818,N,N,63819,N,N,N,31814,N,N,N,N,N,N,N,N,N,N,N,N,N,
-63820,N,N,N,N,N,N,N,N,63821,N,N,N,N,N,N,N,N,N,N,N,N,N,63822,N,N,N,N,N,N,N,N,N,
-63823,63824,N,63825,31815,N,N,N,N,N,N,N,N,N,N,31816,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63826,N,N,N,N,N,63827,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,63828,N,N,N,N,63829,N,63830,63831,N,N,N,N,63832,N,N,N,N,31818,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,63834,N,N,63835,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63837,31820,63839,N,N,N,N,N,N,N,63840,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,63841,N,N,N,N,N,N,31821,N,N,N,N,N,N,N,N,N,N,N,N,63842,N,
-31822,N,N,N,N,N,N,N,N,31823,N,N,N,N,N,N,N,N,N,63843,N,N,N,N,N,N,N,N,N,63844,N,
-N,N,N,N,N,N,N,N,31824,N,N,N,63845,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,63847,N,31826,N,N,N,N,N,N,N,N,N,N,N,N,N,63848,
-31827,63850,N,N,N,N,N,N,N,N,N,N,63852,N,N,N,N,63853,N,N,N,63855,N,N,63856,N,N,
-N,N,N,63857,N,63858,N,N,N,N,N,N,N,N,N,N,63859,N,N,N,31828,N,N,N,31829,N,N,N,N,
-N,31830,N,N,63860,N,N,N,63861,N,N,N,N,N,63862,63863,N,N,N,N,N,31831,N,N,N,
-63864,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31832,N,
-N,N,N,N,N,N,N,N,63865,N,N,N,N,N,N,N,N,N,N,N,63867,63868,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,63869,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64034,N,N,31834,N,N,N,64035,N,N,N,64036,N,N,N,
-N,31835,N,31836,N,31837,N,31838,N,N,N,N,N,64038,31839,N,N,N,N,N,N,N,N,N,N,N,N,
-N,64040,N,N,31840,N,N,64041,N,N,N,N,N,N,N,31841,N,N,N,N,64042,31842,31843,N,
-31844,64043,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31845,N,N,N,N,64045,31846,31847,64046,
-N,N,N,N,N,N,N,N,N,N,N,64051,N,N,N,31848,N,N,64049,N,31849,N,64048,N,N,N,N,N,N,
-N,64052,64053,64050,N,N,N,64054,N,64055,N,N,N,N,N,N,N,N,N,N,N,N,N,31851,31852,
-31853,N,64056,N,N,N,64057,N,64058,N,N,N,31854,31855,N,N,N,31856,N,N,N,N,N,N,N,
-31857,N,31858,N,N,31859,N,N,64059,N,64060,64061,N,N,31860,N,N,N,N,N,N,N,N,
-64062,64063,31861,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64064,N,64065,N,31862,N,N,N,N,N,
-64066,N,N,64067,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64068,N,N,N,N,64069,N,N,N,N,N,N,
-N,N,N,31863,N,64070,N,N,N,N,N,N,N,N,64071,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31864,
-N,N,N,N,N,N,N,N,N,64072,N,N,N,31865,N,64073,N,N,31866,N,64074,N,N,64075,N,N,N,
-N,N,31867,N,N,N,N,N,N,64076,64077,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31868,N,
-N,64078,N,N,N,N,N,N,N,N,N,31870,32033,N,N,N,N,N,N,64081,32034,64082,N,N,32035,
-N,N,N,N,N,N,N,N,N,31869,64083,N,N,N,N,N,32036,N,N,64084,N,N,N,N,N,32037,N,N,N,
-N,N,64085,64086,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64088,N,
-N,N,N,32038,32039,32040,N,32041,N,N,N,32042,N,64089,32043,N,N,N,64090,N,N,
-64091,N,N,N,64092,32044,N,64093,N,N,N,N,64094,N,N,64095,N,N,N,N,N,N,64096,
-64097,N,N,N,64098,N,64099,64100,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,32045,N,N,N,
-64103,64104,N,64105,N,N,N,N,N,N,N,N,32046,64106,N,N,N,64107,N,N,N,N,N,N,N,N,N,
-64108,N,64109,N,N,N,N,N,64110,N,N,N,N,N,N,N,64111,N,N,N,64112,N,N,N,N,N,N,
-64115,N,N,N,N,N,N,N,N,N,N,N,N,64116,64117,N,32047,N,N,N,64118,N,N,N,N,32048,
-32049,N,64119,N,64120,N,N,32050,N,N,N,64121,N,64122,N,N,N,N,N,N,32051,N,N,N,N,
-64123,N,64124,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64290,N,64291,N,64292,N,N,N,32052,
-64293,N,32053,N,N,N,N,N,N,N,N,64294,N,N,N,64125,N,N,N,64295,N,N,N,N,N,N,N,
-64296,64297,32054,N,32055,N,N,N,32056,N,64298,N,64299,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64302,32057,32058,32059,N,N,N,N,N,N,64303,N,
-N,N,N,N,64304,N,N,64305,N,N,N,N,N,N,N,N,N,32060,32061,N,N,N,N,32062,64306,N,N,
-N,N,32063,64307,N,64308,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64312,N,N,
-64313,N,N,N,64314,N,N,N,N,N,N,N,N,N,N,N,32064,N,N,64315,N,N,64309,N,32065,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,32066,N,N,N,N,N,N,64320,N,N,N,N,32067,
-64321,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64322,N,32068,32069,N,N,64323,N,
-N,N,N,64324,N,N,N,N,N,N,N,N,N,64319,N,N,N,64316,N,N,N,N,N,64329,N,32071,32070,
-N,N,N,N,64325,N,N,N,N,N,64326,N,N,N,N,N,N,64327,64328,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,64330,32072,64331,N,N,N,N,N,N,64332,N,N,N,N,N,N,N,
-N,N,64333,N,N,N,N,32073,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,32074,
-N,N,N,N,N,N,N,32075,N,64336,N,64337,N,32076,32077,64338,64339,N,N,N,N,N,N,N,N,
-N,N,N,N,64340,N,N,N,N,N,64341,64342,32078,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-32079,N,N,N,N,N,N,32080,N,N,32081,N,64344,32082,N,N,N,N,N,N,N,64345,N,32083,N,
-N,N,N,N,N,32084,N,N,N,N,N,N,N,N,N,N,64347,N,N,32085,N,N,N,N,32086,N,N,32087,N,
-N,N,N,N,N,32089,N,N,N,32090,64037,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64350,N,N,N,N,N,
-N,64351,64352,N,N,N,N,N,N,N,64354,N,N,N,N,64355,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,32091,N,N,N,N,N,N,N,N,64356,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,64358,N,32092,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,64360,N,N,32094,N,N,N,N,N,N,32095,32096,N,N,N,64363,N,N,N,N,N,64364,N,N,
-N,64365,N,N,N,N,N,N,64366,N,N,64367,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-32097,N,N,N,N,N,64370,N,64371,N,N,64372,32098,N,N,N,N,N,N,N,N,N,N,32100,N,N,N,
-N,N,32101,64374,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64375,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,32102,N,N,64377,N,N,N,N,32103,N,N,N,N,N,64378,N,N,N,N,N,64379,N,N,N,N,N,
-32104,32105,32106,N,N,N,N,N,64380,N,64381,N,N,32107,64382,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,64545,N,N,N,32108,N,N,N,N,32109,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,32110,64548,N,N,N,64549,N,N,N,64550,N,N,N,64551,N,
-N,N,N,N,N,N,N,N,N,N,32111,N,N,64552,64553,N,N,N,N,N,N,N,32112,N,N,N,64554,N,N,
-32113,N,N,N,N,N,N,N,32114,N,N,64555,N,N,N,N,64556,N,N,64557,N,N,N,64558,64559,
-N,32116,N,N,32115,N,N,64560,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64561,N,N,32117,
-64562,N,N,N,N,N,32119,N,N,64563,64564,N,N,N,N,N,64565,N,64566,N,N,N,N,N,N,N,
-32120,N,N,N,N,64569,N,64572,N,N,N,N,N,32121,N,N,N,N,32122,N,64570,64571,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64573,N,N,N,N,N,N,N,N,N,N,32124,32125,N,N,
-32126,32289,N,32290,32291,N,N,N,N,N,N,N,N,N,N,32293,64574,N,N,N,N,N,32294,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64575,N,64576,N,N,64577,N,N,N,N,N,N,
-64579,64580,N,32295,64581,64582,N,N,64583,N,N,64584,N,N,N,N,64585,32296,N,N,
-64586,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64587,64589,N,64590,N,64591,N,
-32297,N,N,64592,N,N,N,N,N,64593,64594,N,64595,64596,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64599,64600,N,N,64602,64603,64604,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64606,64607,64608,N,N,N,N,N,N,64609,64610,64611,N,N,N,64612,64613,N,N,N,N,
-64614,N,N,N,N,N,N,64615,64616,N,N,N,N,N,N,N,N,N,32298,N,N,N,64617,N,N,64618,
-64619,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,32299,N,N,N,N,64620,N,N,
-64621,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64622,N,N,N,64623,N,64624,N,N,N,
-64625,N,N,N,N,N,64626,N,N,N,N,N,N,N,N,N,N,64627,N,N,N,N,64628,N,N,N,N,64629,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64631,N,N,N,N,N,N,N,N,64632,N,N,64633,32300,
-32301,N,N,N,N,N,N,64634,N,N,N,N,N,N,64635,N,N,N,N,64636,N,N,N,64637,N,N,N,N,N,
-64638,N,N,N,32302,N,N,N,N,N,N,N,N,32303,32304,N,N,64801,N,N,N,N,64802,N,32305,
-N,N,N,N,N,N,N,N,N,N,N,64803,N,N,N,N,N,32306,N,64804,N,32307,N,N,N,32308,N,N,N,
-N,N,64805,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,64807,N,N,N,N,N,N,32309,64809,N,64811,N,N,N,N,N,N,N,
-32310,N,32311,N,N,64813,N,N,N,N,N,N,N,32312,N,64814,N,64815,N,N,64816,32313,N,
-N,N,N,N,64818,N,N,N,64819,N,N,N,N,64820,N,N,N,64821,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,32314,32315,64822,N,N,N,N,32316,N,N,N,64823,N,N,N,64824,N,64825,N,N,N,
-64826,N,N,N,N,N,64827,N,N,N,32317,N,N,N,N,N,N,N,N,N,N,64828,N,32319,N,N,N,N,N,
-64829,N,N,N,N,N,N,N,N,N,64830,N,N,N,N,N,N,N,N,N,N,N,N,N,64832,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,32320,N,N,N,N,64833,N,64834,32322,N,N,N,N,64835,64836,N,N,
-N,N,N,32323,64837,N,32324,64838,64839,N,32321,N,N,N,N,N,N,N,N,N,N,32325,N,N,N,
-N,N,32326,N,N,N,N,32327,N,N,N,N,N,N,N,N,N,N,N,N,N,N,32328,N,N,N,N,N,N,N,64840,
-32329,N,N,N,N,64841,N,N,N,N,64842,64845,N,N,N,N,N,64846,N,N,N,N,N,64847,N,N,
-32330,N,N,N,N,N,64848,N,N,N,N,N,N,32331,N,N,N,N,N,N,N,N,N,64850,N,N,N,N,64851,
-N,N,N,N,N,N,N,32332,N,64852,N,N,64853,64854,N,N,64856,64855,N,N,N,64849,N,N,N,
-64860,32333,N,64858,N,N,32334,32335,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64862,N,64863,64864,64865,N,N,64866,N,N,N,N,64867,32336,N,N,N,64868,N,64869,
-64870,N,N,N,N,N,N,64872,N,N,N,N,64873,64874,N,N,N,N,N,N,N,N,N,32337,N,N,N,
-64875,N,N,N,64878,64879,N,N,N,N,32338,32339,N,N,32340,64881,N,N,N,64882,N,N,
-64883,64876,64884,N,64885,N,N,N,32341,N,32342,N,N,N,64886,64887,64888,N,64889,
-64890,N,64891,N,64892,N,N,64893,N,32343,N,N,64894,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65057,N,N,N,N,N,N,N,N,N,N,N,65058,65060,N,N,N,N,
-N,N,N,N,65059,N,N,N,N,N,65062,N,N,N,N,N,65063,65064,N,N,N,N,32344,32345,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65068,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65070,
-32346,N,N,N,32347,N,N,65071,N,N,N,N,N,N,N,32348,N,N,N,N,N,N,N,N,N,N,N,N,65072,
-N,N,65073,32349,N,N,N,N,N,65075,N,65076,N,N,N,N,32350,N,N,65078,N,N,65079,
-65080,N,N,N,N,32351,N,65081,N,N,N,N,N,65082,N,N,N,N,N,32352,N,N,65083,N,N,N,N,
-N,N,N,N,32353,N,N,65084,N,N,N,N,N,N,N,65085,N,N,N,N,N,N,N,N,N,N,32355,N,N,N,N,
-N,N,N,N,65087,N,N,N,65088,N,N,32356,65089,N,65086,32354,N,N,65090,N,N,N,65091,
-N,65092,N,N,N,N,N,N,N,N,N,N,N,N,65093,32357,N,N,65094,N,N,N,N,65095,65096,N,N,
-65097,N,N,N,32359,N,N,N,N,N,N,N,N,N,N,N,N,65098,65101,N,N,N,N,32360,N,N,65100,
-N,N,65102,N,N,N,N,N,N,N,32361,N,N,N,65103,N,N,65104,65105,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,65106,32362,N,N,N,65108,N,N,N,N,65109,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,65110,N,N,32363,N,N,N,N,N,32364,N,N,N,65111,N,N,N,32365,N,N,32366,
-N,N,N,N,32367,32368,N,N,N,N,N,N,N,65113,N,N,N,N,N,32369,N,N,N,N,N,N,N,N,N,N,N,
-N,N,32370,N,N,N,N,N,N,N,N,N,N,N,N,N,65115,N,N,N,N,N,N,N,65116,N,N,N,N,N,N,
-65117,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65118,65119,65121,N,N,N,N,N,N,N,N,N,N,N,
-N,32371,N,N,N,N,N,N,65122,N,65123,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-65124,N,N,N,N,N,N,N,65125,N,32372,65126,N,N,65127,N,N,N,65128,N,N,N,65129,
-65130,N,N,N,N,N,N,N,N,N,N,N,N,65131,N,65132,N,32373,65133,N,N,N,N,65135,N,N,N,
-N,N,N,N,N,N,N,N,65137,N,N,N,65139,N,N,65140,N,N,N,N,65141,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,32374,N,N,N,32375,N,N,32376,N,N,N,N,N,N,N,N,N,
-N,32377,30267,N,N,N,N,N,N,N,N,N,N,29742,30030,N,N,N,N,N,N,N,N,N,N,N,N,31567,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30281,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-32292,N,N,N,N,N,N,N,N,N,N,N,32093,12107,12119,20338,N,44665,30074,30554,30575,
-N,N,31036,31037,31041,N,N,N,31546,63288,63301,31790,N,63854,N,31850,N,N,N,N,N,
-N,N,N,N,11832,11849,11856,11875,11880,11886,12076,12079,12086,12122,12126,
-20321,20322,29776,29788,29790,29793,29992,29995,30019,30053,30313,30327,30501,
-30549,61481,30757,31015,31027,31028,31031,31032,31033,31035,31039,31040,31053,
-31057,31076,31278,62544,31283,31290,31300,31320,62836,62837,31527,31599,31609,
-31791,31792,31800,31805,63849,31833,32099,32118,32123,9022,9021,8752,N,N,N,N,
-8751,N,N,N,N,N,8753,
-};
-
-static const struct unim_index jisx0213_bmp_encmap[256] = {
-{__jisx0213_bmp_encmap+0,126,255},{__jisx0213_bmp_encmap+130,0,253},{
-__jisx0213_bmp_encmap+384,80,233},{__jisx0213_bmp_encmap+538,0,194},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__jisx0213_bmp_encmap+733,62,63
-},{__jisx0213_bmp_encmap+735,112,115},{__jisx0213_bmp_encmap+739,19,172},{
-__jisx0213_bmp_encmap+893,15,233},{__jisx0213_bmp_encmap+1112,5,219},{
-__jisx0213_bmp_encmap+1327,5,206},{__jisx0213_bmp_encmap+1529,35,254},{
-__jisx0213_bmp_encmap+1749,177,230},{__jisx0213_bmp_encmap+1803,0,110},{
-__jisx0213_bmp_encmap+1914,19,127},{0,0,0},{__jisx0213_bmp_encmap+2023,52,251
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__jisx0213_bmp_encmap+2223,
-22,255},{__jisx0213_bmp_encmap+2457,240,255},{__jisx0213_bmp_encmap+2473,49,
-250},{__jisx0213_bmp_encmap+2675,3,205},{__jisx0213_bmp_encmap+2878,2,219},{
-__jisx0213_bmp_encmap+3096,31,244},{__jisx0213_bmp_encmap+3310,5,207},{
-__jisx0213_bmp_encmap+3513,97,253},{__jisx0213_bmp_encmap+3670,0,250},{
-__jisx0213_bmp_encmap+3921,23,111},{__jisx0213_bmp_encmap+4010,110,234},{
-__jisx0213_bmp_encmap+4135,14,240},{__jisx0213_bmp_encmap+4362,15,210},{
-__jisx0213_bmp_encmap+4558,17,212},{__jisx0213_bmp_encmap+4754,5,148},{
-__jisx0213_bmp_encmap+4898,87,215},{__jisx0213_bmp_encmap+5027,57,147},{
-__jisx0213_bmp_encmap+5118,5,243},{__jisx0213_bmp_encmap+5357,7,221},{
-__jisx0213_bmp_encmap+5572,2,240},{__jisx0213_bmp_encmap+5811,8,212},{
-__jisx0213_bmp_encmap+6016,8,234},{__jisx0213_bmp_encmap+6243,15,175},{
-__jisx0213_bmp_encmap+6404,12,253},{__jisx0213_bmp_encmap+6646,22,181},{
-__jisx0213_bmp_encmap+6806,176,250},{__jisx0213_bmp_encmap+6881,4,188},{
-__jisx0213_bmp_encmap+7066,59,232},{__jisx0213_bmp_encmap+7240,23,209},{
-__jisx0213_bmp_encmap+7427,7,119},{__jisx0213_bmp_encmap+7540,2,255},{
-__jisx0213_bmp_encmap+7794,0,242},{__jisx0213_bmp_encmap+8037,0,243},{
-__jisx0213_bmp_encmap+8281,3,244},{__jisx0213_bmp_encmap+8523,1,251},{
-__jisx0213_bmp_encmap+8774,0,245},{__jisx0213_bmp_encmap+9020,18,255},{
-__jisx0213_bmp_encmap+9258,0,233},{__jisx0213_bmp_encmap+9492,7,247},{
-__jisx0213_bmp_encmap+9733,10,255},{__jisx0213_bmp_encmap+9979,4,244},{
-__jisx0213_bmp_encmap+10220,5,248},{__jisx0213_bmp_encmap+10464,12,245},{
-__jisx0213_bmp_encmap+10698,0,253},{__jisx0213_bmp_encmap+10952,3,244},{
-__jisx0213_bmp_encmap+11194,6,233},{__jisx0213_bmp_encmap+11422,0,253},{
-__jisx0213_bmp_encmap+11676,0,252},{__jisx0213_bmp_encmap+11929,13,248},{
-__jisx0213_bmp_encmap+12165,16,245},{__jisx0213_bmp_encmap+12395,21,253},{
-__jisx0213_bmp_encmap+12628,3,247},{__jisx0213_bmp_encmap+12873,9,255},{
-__jisx0213_bmp_encmap+13120,4,252},{__jisx0213_bmp_encmap+13369,0,251},{
-__jisx0213_bmp_encmap+13621,1,252},{__jisx0213_bmp_encmap+13873,1,252},{
-__jisx0213_bmp_encmap+14125,3,254},{__jisx0213_bmp_encmap+14377,15,253},{
-__jisx0213_bmp_encmap+14616,11,255},{__jisx0213_bmp_encmap+14861,2,251},{
-__jisx0213_bmp_encmap+15111,0,252},{__jisx0213_bmp_encmap+15364,23,251},{
-__jisx0213_bmp_encmap+15593,10,252},{__jisx0213_bmp_encmap+15836,0,236},{
-__jisx0213_bmp_encmap+16073,3,254},{__jisx0213_bmp_encmap+16325,0,251},{
-__jisx0213_bmp_encmap+16577,7,250},{__jisx0213_bmp_encmap+16821,1,255},{
-__jisx0213_bmp_encmap+17076,1,249},{__jisx0213_bmp_encmap+17325,0,252},{
-__jisx0213_bmp_encmap+17578,10,251},{__jisx0213_bmp_encmap+17820,5,254},{
-__jisx0213_bmp_encmap+18070,0,237},{__jisx0213_bmp_encmap+18308,3,253},{
-__jisx0213_bmp_encmap+18559,7,240},{__jisx0213_bmp_encmap+18793,1,245},{
-__jisx0213_bmp_encmap+19038,3,249},{__jisx0213_bmp_encmap+19285,8,154},{
-__jisx0213_bmp_encmap+19432,59,250},{__jisx0213_bmp_encmap+19624,2,251},{
-__jisx0213_bmp_encmap+19874,13,255},{__jisx0213_bmp_encmap+20117,4,254},{
-__jisx0213_bmp_encmap+20368,0,249},{__jisx0213_bmp_encmap+20618,1,253},{
-__jisx0213_bmp_encmap+20871,12,255},{__jisx0213_bmp_encmap+21115,0,253},{
-__jisx0213_bmp_encmap+21369,5,245},{__jisx0213_bmp_encmap+21610,1,245},{
-__jisx0213_bmp_encmap+21855,1,255},{__jisx0213_bmp_encmap+22110,17,252},{
-__jisx0213_bmp_encmap+22346,5,158},{__jisx0213_bmp_encmap+22500,57,254},{
-__jisx0213_bmp_encmap+22698,9,253},{__jisx0213_bmp_encmap+22943,6,250},{
-__jisx0213_bmp_encmap+23188,0,251},{__jisx0213_bmp_encmap+23440,2,255},{
-__jisx0213_bmp_encmap+23694,0,251},{__jisx0213_bmp_encmap+23946,1,255},{
-__jisx0213_bmp_encmap+24201,2,253},{__jisx0213_bmp_encmap+24453,4,114},{
-__jisx0213_bmp_encmap+24564,120,222},{__jisx0213_bmp_encmap+24667,29,239},{
-__jisx0213_bmp_encmap+24878,20,244},{__jisx0213_bmp_encmap+25103,4,243},{
-__jisx0213_bmp_encmap+25343,8,252},{__jisx0213_bmp_encmap+25588,2,249},{
-__jisx0213_bmp_encmap+25836,2,253},{__jisx0213_bmp_encmap+26088,0,242},{
-__jisx0213_bmp_encmap+26331,2,244},{__jisx0213_bmp_encmap+26574,2,255},{
-__jisx0213_bmp_encmap+26828,2,162},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__jisx0213_bmp_encmap+26989
-,29,220},{__jisx0213_bmp_encmap+27181,15,106},{0,0,0},{0,0,0},{0,0,0},{
-__jisx0213_bmp_encmap+27273,69,70},{__jisx0213_bmp_encmap+27275,2,13},
-};
-
-static const ucs2_t __jisx0213_1_emp_decmap[340] = {
-11,4669,U,U,U,U,U,U,U,U,U,4891,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,5230,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,6333,2975,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,5812,U,U,U,U,U,U,U,U,U,U,7732,12740,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-13764,14143,U,U,U,U,U,U,U,U,14179,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,15614,18417,21646,21774,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,22385,U,U,U,U,U,U,U,U,U,U,U,
-U,22980,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,23969,27391,28224,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,28916,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,30340,33399,U,U,U,U,U,U,U,33741,41360,
-};
-
-static const struct dbcs_index jisx0213_1_emp_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-__jisx0213_1_emp_decmap+0,34,34},{__jisx0213_1_emp_decmap+1,66,123},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{__jisx0213_1_emp_decmap+59,84,110},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{__jisx0213_1_emp_decmap+86,58,114},{
-__jisx0213_1_emp_decmap+143,41,96},{__jisx0213_1_emp_decmap+199,108,108},{
-__jisx0213_1_emp_decmap+200,126,126},{__jisx0213_1_emp_decmap+201,41,110},{
-__jisx0213_1_emp_decmap+271,93,93},{__jisx0213_1_emp_decmap+272,51,108},{
-__jisx0213_1_emp_decmap+330,73,81},{0,0,0},{__jisx0213_1_emp_decmap+339,102,
-102},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},
-};
-
-static const ucs2_t __jisx0213_2_emp_decmap[2053] = {
-137,U,U,U,U,U,U,U,U,U,162,U,U,164,U,U,U,U,U,U,U,418,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,531,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,811,U,U,U,U,U,U,897,U,881,1017,U,U,1098,U,1289,U,U,U,U,U,U,U,U,U,
-1494,1576,U,U,U,U,U,1871,U,U,U,U,U,U,2055,U,2106,U,U,U,U,U,U,U,U,2233,U,U,U,U,
-U,U,U,2428,2461,U,U,U,U,U,2771,U,U,2845,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,3397,3553,U,U,U,U,U,U,3733,3693,U,U,U,U,U,U,U,3684,U,U,3935,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,4609,U,U,4693,U,4731,U,U,U,
-U,4724,U,U,U,U,U,U,4836,4823,U,U,U,U,U,U,4861,U,4918,4932,5060,U,U,U,U,U,U,U,
-U,U,U,U,U,5229,U,U,U,U,U,U,U,U,U,U,U,5591,U,U,U,U,U,27689,U,U,5703,U,U,U,U,U,
-U,U,U,U,U,U,U,U,5894,5954,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,6595,7254,U,U,U,U,U,U,7469,7493,U,7544,7522,U,U,U,
-7585,7580,U,U,U,U,7570,U,U,7607,U,7648,7731,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-7966,U,U,U,U,U,U,U,U,U,U,8054,U,U,U,U,U,8186,8571,U,U,U,U,U,U,U,U,8990,U,U,U,
-U,9133,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,9971,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,10331,U,U,U,U,U,U,U,10411,U,U,U,U,10639,
-10936,U,U,U,U,11087,11088,U,U,U,U,U,U,U,11078,U,11293,11174,U,U,U,11300,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,11745,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,12739,12789,12726,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,13170,U,13267,13266,U,U,U,U,13264,13284,
-13269,U,U,13274,U,13279,U,U,U,U,U,U,U,U,U,U,U,13386,13393,13387,U,U,U,13413,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,13540,13658,13716,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,13881,13895,U,13880,13882,U,U,U,U,U,U,U,U,U,U,
-14108,U,U,U,U,U,U,U,U,U,U,14092,U,U,U,U,U,U,U,14180,U,U,U,U,U,U,U,14335,14311,
-U,U,U,U,U,14372,U,U,U,U,14397,15000,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,15487,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,15616,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-15680,U,15866,15865,15827,16254,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,16534,
-U,U,U,U,U,16643,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,16838,U,U,16894,17340,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,17961,U,U,U,U,U,18085,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,18582,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,19021,19286,U,19311,U,U,U,U,19478,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,19732,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,19982,U,U,
-U,20023,U,U,U,U,20074,U,U,20107,U,U,U,U,U,U,U,U,U,U,U,20554,U,20565,U,U,20770,
-20905,U,20965,20941,U,U,U,21022,U,U,U,21068,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-21550,U,U,U,U,U,U,U,U,U,U,21721,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,21927,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,22441,22452,22996,U,U,U,U,U,U,U,
-U,U,U,23268,23267,U,23281,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,23474,U,U,U,U,U,U,
-U,U,U,U,23627,23652,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,24110,24150,24165,
-U,24162,U,U,U,24280,U,24258,24296,U,24355,U,U,24412,U,U,U,U,U,U,24544,24532,U,
-U,U,U,24588,24571,U,U,U,U,U,U,U,24599,U,U,U,U,24672,U,U,U,U,U,U,U,U,U,U,U,U,
-24813,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,25200,U,25222,U,U,U,U,
-U,U,25420,U,U,15630,U,U,U,25602,26238,U,U,U,U,26288,U,U,U,U,U,U,U,U,U,U,U,
-26397,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,26845,U,26858,U,26961,U,U,26991,U,27101,U,
-U,U,27166,U,U,U,U,U,U,27224,U,U,U,U,U,27276,U,U,27319,27763,U,U,U,U,U,U,U,U,U,
-27869,U,U,U,U,U,U,U,U,U,U,U,U,U,U,28261,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,28564,U,U,U,U,U,U,U,U,28664,28662,28663,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,28941,U,U,28985,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,29659,29658,U,U,U,U,U,29694,U,U,29712,U,U,U,U,
-29769,30229,30228,U,30257,U,U,U,U,U,U,U,30355,U,U,U,U,U,U,U,30478,U,30499,U,U,
-U,30546,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,31109,U,U,U,U,U,U,U,U,U,U,U,U,
-31364,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,31667,U,31678,31687,31928,U,U,U,U,
-U,U,U,U,U,32160,U,U,32272,U,U,U,U,U,U,32695,U,U,U,U,U,U,U,U,32906,U,U,U,U,U,
-32955,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,33410,U,U,U,U,33523,U,U,U,U,U,U,U,33804,
-U,U,U,U,33877,U,U,U,U,U,U,U,U,U,U,U,U,U,U,34155,U,U,U,34248,34249,U,U,U,U,U,U,
-U,U,U,U,34519,U,U,34554,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,35145,35142,U,U,U,U,U,U,35179,U,U,U,U,U,U,U,U,U,U,U,U,U,35207,35208,U,
-U,U,U,U,U,U,U,U,U,35258,35259,U,U,U,U,U,U,U,U,U,U,U,35358,35369,U,U,U,U,U,U,U,
-U,U,U,35441,35395,U,U,U,U,U,U,U,U,35481,35533,U,U,U,U,U,35556,35549,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,35777,35823,U,U,U,U,U,U,U,36112,U,U,36209,U,36347,36383,U,
-U,U,36406,U,U,U,36489,U,36587,U,36658,U,U,U,U,U,U,U,36856,37536,37553,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,38032,U,U,U,U,U,U,U,U,U,38351,U,U,U,U,U,U,U,U,
-U,38527,U,U,U,U,U,U,U,U,U,38640,U,U,38681,U,U,U,38736,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,39110,39538,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,40411,40509,U,U,U,U,U,U,U,U,U,U,U,U,40469,U,40586,U,40521,U,
-U,U,U,U,U,U,U,U,40644,U,U,U,U,U,40681,U,U,40667,40910,U,U,U,41007,U,40986,U,U,
-U,U,U,U,41209,U,U,41090,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,8728,U,U,U,U,41868,U,42039,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,42481,U,
-42498,U,42522,U,U,U,42674,
-};
-
-static const struct dbcs_index jisx0213_2_emp_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{__jisx0213_2_emp_decmap+0,33,121},{0,0,0},{
-__jisx0213_2_emp_decmap+89,34,119},{__jisx0213_2_emp_decmap+175,42,117},{
-__jisx0213_2_emp_decmap+251,37,126},{0,0,0},{0,0,0},{__jisx0213_2_emp_decmap+
-341,48,108},{0,0,0},{0,0,0},{0,0,0},{__jisx0213_2_emp_decmap+402,34,114},{
-__jisx0213_2_emp_decmap+483,36,125},{__jisx0213_2_emp_decmap+573,35,120},{
-__jisx0213_2_emp_decmap+659,42,117},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-__jisx0213_2_emp_decmap+735,35,96},{__jisx0213_2_emp_decmap+797,50,100},{
-__jisx0213_2_emp_decmap+848,34,123},{__jisx0213_2_emp_decmap+938,46,122},{
-__jisx0213_2_emp_decmap+1015,33,118},{__jisx0213_2_emp_decmap+1101,50,125},{
-__jisx0213_2_emp_decmap+1177,34,121},{__jisx0213_2_emp_decmap+1265,53,115},{
-__jisx0213_2_emp_decmap+1328,68,126},{__jisx0213_2_emp_decmap+1387,33,115},{
-__jisx0213_2_emp_decmap+1470,41,122},{__jisx0213_2_emp_decmap+1552,37,126},{
-__jisx0213_2_emp_decmap+1642,33,126},{__jisx0213_2_emp_decmap+1736,33,113},{
-__jisx0213_2_emp_decmap+1817,34,118},{__jisx0213_2_emp_decmap+1902,44,112},{
-__jisx0213_2_emp_decmap+1971,37,118},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-};
-
-static const DBCHAR __jisx0213_emp_encmap[8787] = {
-11810,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,41249,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-41259,N,41262,41270,41286,41328,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,41337,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41335,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41762,41765,41767,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,41777,41778,41784,41791,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41793,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,41802,41810,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,41811,41817,41820,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,20308,41847,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42026,42042,N,N,N,
-N,N,N,N,N,42034,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,42033,42045,42073,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-12098,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42076,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42083,N,N,N,N,N,N,42078,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,42091,N,N,N,N,N,N,N,N,N,N,N,N,42090,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,42098,12108,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,42100,N,N,N,N,N,N,N,N,N,N,N,N,N,42101,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42277,42290,
-12128,42302,42311,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-20323,42325,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,42326,12155,42366,43056,
-43063,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,43064,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,43067,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,43066,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,43077,N,N,N,N,N,
-N,N,N,N,43072,N,N,N,N,43071,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,43080,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-43082,43083,20334,43099,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,43110,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-43116,44066,65107,44075,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-44080,44112,44133,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,44141,44146,44324,44338,N,N,N,N,N,N,N,N,44329,44330,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,44341,44340,N,N,N,N,N,N,44345,44374,44580,N,N,N,N,N,N,N,N,N,N,N,N,
-44413,30010,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44579,44602,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44610,
-N,44605,44604,N,44612,N,N,N,N,44615,N,N,N,N,44617,N,N,N,N,44611,44629,44631,N,
-N,N,N,N,44630,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44635,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-44663,44664,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44842,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30066,
-44866,44863,44867,N,N,N,N,N,N,N,N,N,N,N,N,44864,44889,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,44878,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,30249,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-30258,44897,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44906,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,44905,44912,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44917,
-60963,60980,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30304,61001,N,N,N,N,N,N,N,N,N,N,N,N,N,62581,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,61020,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,61024,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,61023,61022,61234,61255,61261,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61281,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61284,
-61474,61491,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,61497,30572,61523,61563,61742,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,61744,61749,61764,61789,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61793,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-61798,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61801,
-61813,N,N,N,N,N,N,N,N,N,N,61815,61818,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61985,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61988,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61987,61992,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,61996,
-62013,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30846,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62024,31017,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62043,31047,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,62069,N,N,N,N,N,N,N,N,N,N,62070,31060,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-62258,62270,62269,N,N,N,N,N,N,N,N,N,N,N,N,62272,62290,62301,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62302,31086,62323,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62324,N,N,N,N,N,N,N,N,N,N,N,
-62327,N,N,62325,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62333,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,62331,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62498,62500,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,62503,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,62511,N,N,N,N,N,N,N,N,N,N,N,62510,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62517,62516,N,N,N,N,N,N,N,N,N,N,62525,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62530,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62543,62569,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,62571,62578,62585,62773,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62778,62790,62806,N,N,
-N,N,N,N,N,N,N,N,N,N,62808,62810,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,62813,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,62815,62819,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,62826,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,62832,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,62835,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,31325,42308,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,63044,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63054,
-31539,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-63069,63093,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63265,63266,63102,31561,
-63283,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,63286,63333,63332,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,63339,63342,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63347,
-63530,63529,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63532,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,31596,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63540,63548,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,63550,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63554,63574,63587,63607,N,N,N,N,N,N,N,N,N,N,
-63609,N,N,N,N,N,N,N,N,63610,63781,63791,63794,63801,63810,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-63816,31817,N,N,N,N,N,N,N,N,N,N,63833,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,63838,31825,63846,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,63851,63866,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-63870,64033,64044,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,64047,64080,N,N,64079,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,64087,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64101,64102,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64113,64114,64126,N,N,N,N,N,N,N,N,N,N,64289,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64301,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64300,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64310,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,64311,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64318,N,N,N,N,N,N,
-64317,64334,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,64335,64343,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64346,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64348,64349,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,64353,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64357,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64359,64361,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,64369,64546,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64547,64568,64578,
-64588,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64598,64601,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64605,64630,64812,64843,64857,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64844,
-N,N,N,N,N,N,N,N,N,N,N,64861,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-64859,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,64871,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,64880,N,N,N,N,N,N,N,N,N,N,N,N,N,64877,65061,65067,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,65065,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65077,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65074,32358,65112,65114,65134,
-65136,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65138,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,65142,
-};
-
-static const struct unim_index jisx0213_emp_encmap[256] = {
-{__jisx0213_emp_encmap+0,11,164},{__jisx0213_emp_encmap+154,162,162},{
-__jisx0213_emp_encmap+155,19,19},{__jisx0213_emp_encmap+156,43,249},{
-__jisx0213_emp_encmap+363,74,74},{__jisx0213_emp_encmap+364,9,214},{
-__jisx0213_emp_encmap+570,40,40},{__jisx0213_emp_encmap+571,79,79},{
-__jisx0213_emp_encmap+572,7,185},{__jisx0213_emp_encmap+751,124,157},{
-__jisx0213_emp_encmap+785,211,211},{__jisx0213_emp_encmap+786,29,159},{0,0,0},
-{__jisx0213_emp_encmap+917,69,225},{__jisx0213_emp_encmap+1074,100,149},{
-__jisx0213_emp_encmap+1124,95,95},{0,0,0},{0,0,0},{__jisx0213_emp_encmap+1125,
-1,253},{__jisx0213_emp_encmap+1378,27,196},{__jisx0213_emp_encmap+1548,109,110
-},{__jisx0213_emp_encmap+1550,215,215},{__jisx0213_emp_encmap+1551,71,180},{
-__jisx0213_emp_encmap+1661,6,66},{__jisx0213_emp_encmap+1722,189,189},{
-__jisx0213_emp_encmap+1723,195,195},{0,0,0},{0,0,0},{__jisx0213_emp_encmap+
-1724,86,86},{__jisx0213_emp_encmap+1725,45,224},{__jisx0213_emp_encmap+1905,
-51,52},{__jisx0213_emp_encmap+1907,30,250},{0,0,0},{__jisx0213_emp_encmap+2128
-,123,123},{__jisx0213_emp_encmap+2129,24,24},{__jisx0213_emp_encmap+2130,30,
-173},{0,0,0},{0,0,0},{__jisx0213_emp_encmap+2274,243,243},{0,0,0},{
-__jisx0213_emp_encmap+2275,91,171},{__jisx0213_emp_encmap+2356,143,143},{
-__jisx0213_emp_encmap+2357,184,184},{__jisx0213_emp_encmap+2358,70,166},{
-__jisx0213_emp_encmap+2455,29,36},{__jisx0213_emp_encmap+2463,225,225},{0,0,0
-},{0,0,0},{0,0,0},{__jisx0213_emp_encmap+2464,182,245},{0,0,0},{
-__jisx0213_emp_encmap+2528,114,228},{__jisx0213_emp_encmap+2643,74,228},{
-__jisx0213_emp_encmap+2798,90,196},{__jisx0213_emp_encmap+2905,56,71},{
-__jisx0213_emp_encmap+2921,12,255},{__jisx0213_emp_encmap+3165,36,61},{0,0,0},
-{__jisx0213_emp_encmap+3191,152,152},{0,0,0},{__jisx0213_emp_encmap+3192,127,
-254},{__jisx0213_emp_encmap+3320,0,250},{0,0,0},{__jisx0213_emp_encmap+3571,
-126,126},{__jisx0213_emp_encmap+3572,150,150},{__jisx0213_emp_encmap+3573,3,
-254},{0,0,0},{__jisx0213_emp_encmap+3825,188,188},{0,0,0},{0,0,0},{
-__jisx0213_emp_encmap+3826,41,165},{__jisx0213_emp_encmap+3951,241,241},{
-__jisx0213_emp_encmap+3952,150,150},{0,0,0},{__jisx0213_emp_encmap+3953,77,77
-},{__jisx0213_emp_encmap+3954,86,111},{__jisx0213_emp_encmap+3980,22,22},{
-__jisx0213_emp_encmap+3981,20,20},{__jisx0213_emp_encmap+3982,14,139},{0,0,0},
-{__jisx0213_emp_encmap+4108,74,85},{__jisx0213_emp_encmap+4120,34,229},{
-__jisx0213_emp_encmap+4316,30,76},{0,0,0},{__jisx0213_emp_encmap+4363,46,217},
-{__jisx0213_emp_encmap+4535,14,167},{0,0,0},{__jisx0213_emp_encmap+4689,113,
-180},{0,0,0},{__jisx0213_emp_encmap+4757,196,212},{__jisx0213_emp_encmap+4774,
-227,241},{__jisx0213_emp_encmap+4789,178,178},{__jisx0213_emp_encmap+4790,75,
-100},{__jisx0213_emp_encmap+4816,161,161},{__jisx0213_emp_encmap+4817,46,232},
-{__jisx0213_emp_encmap+5004,35,251},{__jisx0213_emp_encmap+5221,12,237},{0,0,0
-},{__jisx0213_emp_encmap+5447,112,134},{__jisx0213_emp_encmap+5470,76,76},{
-__jisx0213_emp_encmap+5471,2,2},{0,0,0},{__jisx0213_emp_encmap+5472,126,176},{
-__jisx0213_emp_encmap+5523,29,29},{__jisx0213_emp_encmap+5524,221,234},{
-__jisx0213_emp_encmap+5538,81,221},{__jisx0213_emp_encmap+5679,30,255},{0,0,0
-},{__jisx0213_emp_encmap+5905,41,221},{0,0,0},{__jisx0213_emp_encmap+6086,64,
-101},{__jisx0213_emp_encmap+6124,148,248},{__jisx0213_emp_encmap+6225,244,244
-},{__jisx0213_emp_encmap+6226,13,57},{0,0,0},{__jisx0213_emp_encmap+6271,218,
-254},{__jisx0213_emp_encmap+6308,16,73},{0,0,0},{__jisx0213_emp_encmap+6366,
-20,147},{__jisx0213_emp_encmap+6494,14,82},{0,0,0},{__jisx0213_emp_encmap+6563
-,133,133},{__jisx0213_emp_encmap+6564,132,132},{__jisx0213_emp_encmap+6565,
-179,199},{__jisx0213_emp_encmap+6586,184,184},{__jisx0213_emp_encmap+6587,160,
-160},{__jisx0213_emp_encmap+6588,16,16},{__jisx0213_emp_encmap+6589,183,183},{
-__jisx0213_emp_encmap+6590,138,187},{0,0,0},{__jisx0213_emp_encmap+6640,119,
-243},{__jisx0213_emp_encmap+6765,205,205},{__jisx0213_emp_encmap+6766,12,85},{
-__jisx0213_emp_encmap+6840,107,201},{__jisx0213_emp_encmap+6935,215,250},{0,0,
-0},{0,0,0},{__jisx0213_emp_encmap+6971,70,187},{__jisx0213_emp_encmap+7089,30,
-228},{__jisx0213_emp_encmap+7288,193,239},{0,0,0},{__jisx0213_emp_encmap+7335,
-16,251},{__jisx0213_emp_encmap+7571,31,235},{__jisx0213_emp_encmap+7776,50,248
-},{0,0,0},{0,0,0},{__jisx0213_emp_encmap+7975,160,177},{0,0,0},{
-__jisx0213_emp_encmap+7993,144,144},{__jisx0213_emp_encmap+7994,207,207},{
-__jisx0213_emp_encmap+7995,127,240},{__jisx0213_emp_encmap+8109,25,80},{
-__jisx0213_emp_encmap+8165,198,198},{0,0,0},{__jisx0213_emp_encmap+8166,114,
-114},{0,0,0},{0,0,0},{__jisx0213_emp_encmap+8167,219,219},{
-__jisx0213_emp_encmap+8168,21,233},{__jisx0213_emp_encmap+8381,206,206},{
-__jisx0213_emp_encmap+8382,26,249},{__jisx0213_emp_encmap+8606,144,144},{0,0,0
-},{__jisx0213_emp_encmap+8607,140,140},{__jisx0213_emp_encmap+8608,55,55},{
-__jisx0213_emp_encmap+8609,241,241},{__jisx0213_emp_encmap+8610,2,178},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},
-};
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_kr.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_kr.h
deleted file mode 100644
index 31f66d5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_kr.h
+++ /dev/null
@@ -1,3251 +0,0 @@
-static const ucs2_t __ksx1001_decmap[8264] = {
-12288,12289,12290,183,8229,8230,168,12291,173,8213,8741,65340,8764,8216,8217,
-8220,8221,12308,12309,12296,12297,12298,12299,12300,12301,12302,12303,12304,
-12305,177,215,247,8800,8804,8805,8734,8756,176,8242,8243,8451,8491,65504,
-65505,65509,9794,9792,8736,8869,8978,8706,8711,8801,8786,167,8251,9734,9733,
-9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,8594,8592,8593,8595,
-8596,12307,8810,8811,8730,8765,8733,8757,8747,8748,8712,8715,8838,8839,8834,
-8835,8746,8745,8743,8744,65506,8658,8660,8704,8707,180,65374,711,728,733,730,
-729,184,731,161,191,720,8750,8721,8719,164,8457,8240,9665,9664,9655,9654,9828,
-9824,9825,9829,9831,9827,8857,9672,9635,9680,9681,9618,9636,9637,9640,9639,
-9638,9641,9832,9743,9742,9756,9758,182,8224,8225,8597,8599,8601,8598,8600,
-9837,9833,9834,9836,12927,12828,8470,13255,8482,13250,13272,8481,8364,174,
-65281,65282,65283,65284,65285,65286,65287,65288,65289,65290,65291,65292,65293,
-65294,65295,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65306,
-65307,65308,65309,65310,65311,65312,65313,65314,65315,65316,65317,65318,65319,
-65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,
-65333,65334,65335,65336,65337,65338,65339,65510,65341,65342,65343,65344,65345,
-65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,
-65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65371,
-65372,65373,65507,12593,12594,12595,12596,12597,12598,12599,12600,12601,12602,
-12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,
-12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,
-12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,
-12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,
-12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,
-12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,
-12681,12682,12683,12684,12685,12686,8560,8561,8562,8563,8564,8565,8566,8567,
-8568,8569,U,U,U,U,U,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,U,U,U,U,
-U,U,U,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,
-932,933,934,935,936,937,U,U,U,U,U,U,U,U,945,946,947,948,949,950,951,952,953,
-954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,9472,9474,9484,
-9488,9496,9492,9500,9516,9508,9524,9532,9473,9475,9487,9491,9499,9495,9507,
-9523,9515,9531,9547,9504,9519,9512,9527,9535,9501,9520,9509,9528,9538,9490,
-9489,9498,9497,9494,9493,9486,9485,9502,9503,9505,9506,9510,9511,9513,9514,
-9517,9518,9521,9522,9525,9526,9529,9530,9533,9534,9536,9537,9539,9540,9541,
-9542,9543,9544,9545,9546,13205,13206,13207,8467,13208,13252,13219,13220,13221,
-13222,13209,13210,13211,13212,13213,13214,13215,13216,13217,13218,13258,13197,
-13198,13199,13263,13192,13193,13256,13223,13224,13232,13233,13234,13235,13236,
-13237,13238,13239,13240,13241,13184,13185,13186,13187,13188,13242,13243,13244,
-13245,13246,13247,13200,13201,13202,13203,13204,8486,13248,13249,13194,13195,
-13196,13270,13253,13229,13230,13231,13275,13225,13226,13227,13228,13277,13264,
-13267,13251,13257,13276,13254,198,208,170,294,U,306,U,319,321,216,338,186,222,
-358,330,U,12896,12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,
-12907,12908,12909,12910,12911,12912,12913,12914,12915,12916,12917,12918,12919,
-12920,12921,12922,12923,9424,9425,9426,9427,9428,9429,9430,9431,9432,9433,
-9434,9435,9436,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446,9447,9448,
-9449,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,
-9326,189,8531,8532,188,190,8539,8540,8541,8542,230,273,240,295,305,307,312,
-320,322,248,339,223,254,359,331,329,12800,12801,12802,12803,12804,12805,12806,
-12807,12808,12809,12810,12811,12812,12813,12814,12815,12816,12817,12818,12819,
-12820,12821,12822,12823,12824,12825,12826,12827,9372,9373,9374,9375,9376,9377,
-9378,9379,9380,9381,9382,9383,9384,9385,9386,9387,9388,9389,9390,9391,9392,
-9393,9394,9395,9396,9397,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,
-9342,9343,9344,9345,9346,185,178,179,8308,8319,8321,8322,8323,8324,12353,
-12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,
-12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,
-12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,
-12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,
-12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,
-12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,
-12432,12433,12434,12435,12449,12450,12451,12452,12453,12454,12455,12456,12457,
-12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,
-12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,
-12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,
-12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,
-12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,
-12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,1040,
-1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,
-1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,
-1070,1071,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,1072,1073,1074,1075,1076,1077,1105,
-1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,
-1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,44032,44033,44036,
-44039,44040,44041,44042,44048,44049,44050,44051,44052,44053,44054,44055,44057,
-44058,44059,44060,44061,44064,44068,44076,44077,44079,44080,44081,44088,44089,
-44092,44096,44107,44109,44116,44120,44124,44144,44145,44148,44151,44152,44154,
-44160,44161,44163,44164,44165,44166,44169,44170,44171,44172,44176,44180,44188,
-44189,44191,44192,44193,44200,44201,44202,44204,44207,44208,44216,44217,44219,
-44220,44221,44225,44228,44232,44236,44245,44247,44256,44257,44260,44263,44264,
-44266,44268,44271,44272,44273,44275,44277,44278,44284,44285,44288,44292,44294,
-44300,44301,44303,44305,44312,44316,44320,44329,44332,44333,44340,44341,44344,
-44348,44356,44357,44359,44361,44368,44372,44376,44385,44387,44396,44397,44400,
-44403,44404,44405,44406,44411,44412,44413,44415,44417,44418,44424,44425,44428,
-44432,44444,44445,44452,44471,44480,44481,44484,44488,44496,44497,44499,44508,
-44512,44516,44536,44537,44540,44543,44544,44545,44552,44553,44555,44557,44564,
-44592,44593,44596,44599,44600,44602,44608,44609,44611,44613,44614,44618,44620,
-44621,44622,44624,44628,44630,44636,44637,44639,44640,44641,44645,44648,44649,
-44652,44656,44664,44665,44667,44668,44669,44676,44677,44684,44732,44733,44734,
-44736,44740,44748,44749,44751,44752,44753,44760,44761,44764,44776,44779,44781,
-44788,44792,44796,44807,44808,44813,44816,44844,44845,44848,44850,44852,44860,
-44861,44863,44865,44866,44867,44872,44873,44880,44892,44893,44900,44901,44921,
-44928,44932,44936,44944,44945,44949,44956,44984,44985,44988,44992,44999,45000,
-45001,45003,45005,45006,45012,45020,45032,45033,45040,45041,45044,45048,45056,
-45057,45060,45068,45072,45076,45084,45085,45096,45124,45125,45128,45130,45132,
-45134,45139,45140,45141,45143,45145,45149,45180,45181,45184,45188,45196,45197,
-45199,45201,45208,45209,45210,45212,45215,45216,45217,45218,45224,45225,45227,
-45228,45229,45230,45231,45233,45235,45236,45237,45240,45244,45252,45253,45255,
-45256,45257,45264,45265,45268,45272,45280,45285,45320,45321,45323,45324,45328,
-45330,45331,45336,45337,45339,45340,45341,45347,45348,45349,45352,45356,45364,
-45365,45367,45368,45369,45376,45377,45380,45384,45392,45393,45396,45397,45400,
-45404,45408,45432,45433,45436,45440,45442,45448,45449,45451,45453,45458,45459,
-45460,45464,45468,45480,45516,45520,45524,45532,45533,45535,45544,45545,45548,
-45552,45561,45563,45565,45572,45573,45576,45579,45580,45588,45589,45591,45593,
-45600,45620,45628,45656,45660,45664,45672,45673,45684,45685,45692,45700,45701,
-45705,45712,45713,45716,45720,45721,45722,45728,45729,45731,45733,45734,45738,
-45740,45744,45748,45768,45769,45772,45776,45778,45784,45785,45787,45789,45794,
-45796,45797,45798,45800,45803,45804,45805,45806,45807,45811,45812,45813,45815,
-45816,45817,45818,45819,45823,45824,45825,45828,45832,45840,45841,45843,45844,
-45845,45852,45908,45909,45910,45912,45915,45916,45918,45919,45924,45925,45927,
-45929,45931,45934,45936,45937,45940,45944,45952,45953,45955,45956,45957,45964,
-45968,45972,45984,45985,45992,45996,46020,46021,46024,46027,46028,46030,46032,
-46036,46037,46039,46041,46043,46045,46048,46052,46056,46076,46096,46104,46108,
-46112,46120,46121,46123,46132,46160,46161,46164,46168,46176,46177,46179,46181,
-46188,46208,46216,46237,46244,46248,46252,46261,46263,46265,46272,46276,46280,
-46288,46293,46300,46301,46304,46307,46308,46310,46316,46317,46319,46321,46328,
-46356,46357,46360,46363,46364,46372,46373,46375,46376,46377,46378,46384,46385,
-46388,46392,46400,46401,46403,46404,46405,46411,46412,46413,46416,46420,46428,
-46429,46431,46432,46433,46496,46497,46500,46504,46506,46507,46512,46513,46515,
-46516,46517,46523,46524,46525,46528,46532,46540,46541,46543,46544,46545,46552,
-46572,46608,46609,46612,46616,46629,46636,46644,46664,46692,46696,46748,46749,
-46752,46756,46763,46764,46769,46804,46832,46836,46840,46848,46849,46853,46888,
-46889,46892,46895,46896,46904,46905,46907,46916,46920,46924,46932,46933,46944,
-46948,46952,46960,46961,46963,46965,46972,46973,46976,46980,46988,46989,46991,
-46992,46993,46994,46998,46999,47000,47001,47004,47008,47016,47017,47019,47020,
-47021,47028,47029,47032,47047,47049,47084,47085,47088,47092,47100,47101,47103,
-47104,47105,47111,47112,47113,47116,47120,47128,47129,47131,47133,47140,47141,
-47144,47148,47156,47157,47159,47160,47161,47168,47172,47185,47187,47196,47197,
-47200,47204,47212,47213,47215,47217,47224,47228,47245,47272,47280,47284,47288,
-47296,47297,47299,47301,47308,47312,47316,47325,47327,47329,47336,47337,47340,
-47344,47352,47353,47355,47357,47364,47384,47392,47420,47421,47424,47428,47436,
-47439,47441,47448,47449,47452,47456,47464,47465,47467,47469,47476,47477,47480,
-47484,47492,47493,47495,47497,47498,47501,47502,47532,47533,47536,47540,47548,
-47549,47551,47553,47560,47561,47564,47566,47567,47568,47569,47570,47576,47577,
-47579,47581,47582,47585,47587,47588,47589,47592,47596,47604,47605,47607,47608,
-47609,47610,47616,47617,47624,47637,47672,47673,47676,47680,47682,47688,47689,
-47691,47693,47694,47699,47700,47701,47704,47708,47716,47717,47719,47720,47721,
-47728,47729,47732,47736,47747,47748,47749,47751,47756,47784,47785,47787,47788,
-47792,47794,47800,47801,47803,47805,47812,47816,47832,47833,47868,47872,47876,
-47885,47887,47889,47896,47900,47904,47913,47915,47924,47925,47926,47928,47931,
-47932,47933,47934,47940,47941,47943,47945,47949,47951,47952,47956,47960,47969,
-47971,47980,48008,48012,48016,48036,48040,48044,48052,48055,48064,48068,48072,
-48080,48083,48120,48121,48124,48127,48128,48130,48136,48137,48139,48140,48141,
-48143,48145,48148,48149,48150,48151,48152,48155,48156,48157,48158,48159,48164,
-48165,48167,48169,48173,48176,48177,48180,48184,48192,48193,48195,48196,48197,
-48201,48204,48205,48208,48221,48260,48261,48264,48267,48268,48270,48276,48277,
-48279,48281,48282,48288,48289,48292,48295,48296,48304,48305,48307,48308,48309,
-48316,48317,48320,48324,48333,48335,48336,48337,48341,48344,48348,48372,48373,
-48374,48376,48380,48388,48389,48391,48393,48400,48404,48420,48428,48448,48456,
-48457,48460,48464,48472,48473,48484,48488,48512,48513,48516,48519,48520,48521,
-48522,48528,48529,48531,48533,48537,48538,48540,48548,48560,48568,48596,48597,
-48600,48604,48617,48624,48628,48632,48640,48643,48645,48652,48653,48656,48660,
-48668,48669,48671,48708,48709,48712,48716,48718,48724,48725,48727,48729,48730,
-48731,48736,48737,48740,48744,48746,48752,48753,48755,48756,48757,48763,48764,
-48765,48768,48772,48780,48781,48783,48784,48785,48792,48793,48808,48848,48849,
-48852,48855,48856,48864,48867,48868,48869,48876,48897,48904,48905,48920,48921,
-48923,48924,48925,48960,48961,48964,48968,48976,48977,48981,49044,49072,49093,
-49100,49101,49104,49108,49116,49119,49121,49212,49233,49240,49244,49248,49256,
-49257,49296,49297,49300,49304,49312,49313,49315,49317,49324,49325,49327,49328,
-49331,49332,49333,49334,49340,49341,49343,49344,49345,49349,49352,49353,49356,
-49360,49368,49369,49371,49372,49373,49380,49381,49384,49388,49396,49397,49399,
-49401,49408,49412,49416,49424,49429,49436,49437,49438,49439,49440,49443,49444,
-49446,49447,49452,49453,49455,49456,49457,49462,49464,49465,49468,49472,49480,
-49481,49483,49484,49485,49492,49493,49496,49500,49508,49509,49511,49512,49513,
-49520,49524,49528,49541,49548,49549,49550,49552,49556,49558,49564,49565,49567,
-49569,49573,49576,49577,49580,49584,49597,49604,49608,49612,49620,49623,49624,
-49632,49636,49640,49648,49649,49651,49660,49661,49664,49668,49676,49677,49679,
-49681,49688,49689,49692,49695,49696,49704,49705,49707,49709,49711,49713,49714,
-49716,49736,49744,49745,49748,49752,49760,49765,49772,49773,49776,49780,49788,
-49789,49791,49793,49800,49801,49808,49816,49819,49821,49828,49829,49832,49836,
-49837,49844,49845,49847,49849,49884,49885,49888,49891,49892,49899,49900,49901,
-49903,49905,49910,49912,49913,49915,49916,49920,49928,49929,49932,49933,49939,
-49940,49941,49944,49948,49956,49957,49960,49961,49989,50024,50025,50028,50032,
-50034,50040,50041,50044,50045,50052,50056,50060,50112,50136,50137,50140,50143,
-50144,50146,50152,50153,50157,50164,50165,50168,50184,50192,50212,50220,50224,
-50228,50236,50237,50248,50276,50277,50280,50284,50292,50293,50297,50304,50324,
-50332,50360,50364,50409,50416,50417,50420,50424,50426,50431,50432,50433,50444,
-50448,50452,50460,50472,50473,50476,50480,50488,50489,50491,50493,50500,50501,
-50504,50505,50506,50508,50509,50510,50515,50516,50517,50519,50520,50521,50525,
-50526,50528,50529,50532,50536,50544,50545,50547,50548,50549,50556,50557,50560,
-50564,50567,50572,50573,50575,50577,50581,50583,50584,50588,50592,50601,50612,
-50613,50616,50617,50619,50620,50621,50622,50628,50629,50630,50631,50632,50633,
-50634,50636,50638,50640,50641,50644,50648,50656,50657,50659,50661,50668,50669,
-50670,50672,50676,50678,50679,50684,50685,50686,50687,50688,50689,50693,50694,
-50695,50696,50700,50704,50712,50713,50715,50716,50724,50725,50728,50732,50733,
-50734,50736,50739,50740,50741,50743,50745,50747,50752,50753,50756,50760,50768,
-50769,50771,50772,50773,50780,50781,50784,50796,50799,50801,50808,50809,50812,
-50816,50824,50825,50827,50829,50836,50837,50840,50844,50852,50853,50855,50857,
-50864,50865,50868,50872,50873,50874,50880,50881,50883,50885,50892,50893,50896,
-50900,50908,50909,50912,50913,50920,50921,50924,50928,50936,50937,50941,50948,
-50949,50952,50956,50964,50965,50967,50969,50976,50977,50980,50984,50992,50993,
-50995,50997,50999,51004,51005,51008,51012,51018,51020,51021,51023,51025,51026,
-51027,51028,51029,51030,51031,51032,51036,51040,51048,51051,51060,51061,51064,
-51068,51069,51070,51075,51076,51077,51079,51080,51081,51082,51086,51088,51089,
-51092,51094,51095,51096,51098,51104,51105,51107,51108,51109,51110,51116,51117,
-51120,51124,51132,51133,51135,51136,51137,51144,51145,51148,51150,51152,51160,
-51165,51172,51176,51180,51200,51201,51204,51208,51210,51216,51217,51219,51221,
-51222,51228,51229,51232,51236,51244,51245,51247,51249,51256,51260,51264,51272,
-51273,51276,51277,51284,51312,51313,51316,51320,51322,51328,51329,51331,51333,
-51334,51335,51339,51340,51341,51348,51357,51359,51361,51368,51388,51389,51396,
-51400,51404,51412,51413,51415,51417,51424,51425,51428,51445,51452,51453,51456,
-51460,51461,51462,51468,51469,51471,51473,51480,51500,51508,51536,51537,51540,
-51544,51552,51553,51555,51564,51568,51572,51580,51592,51593,51596,51600,51608,
-51609,51611,51613,51648,51649,51652,51655,51656,51658,51664,51665,51667,51669,
-51670,51673,51674,51676,51677,51680,51682,51684,51687,51692,51693,51695,51696,
-51697,51704,51705,51708,51712,51720,51721,51723,51724,51725,51732,51736,51753,
-51788,51789,51792,51796,51804,51805,51807,51808,51809,51816,51837,51844,51864,
-51900,51901,51904,51908,51916,51917,51919,51921,51923,51928,51929,51936,51948,
-51956,51976,51984,51988,51992,52000,52001,52033,52040,52041,52044,52048,52056,
-52057,52061,52068,52088,52089,52124,52152,52180,52196,52199,52201,52236,52237,
-52240,52244,52252,52253,52257,52258,52263,52264,52265,52268,52270,52272,52280,
-52281,52283,52284,52285,52286,52292,52293,52296,52300,52308,52309,52311,52312,
-52313,52320,52324,52326,52328,52336,52341,52376,52377,52380,52384,52392,52393,
-52395,52396,52397,52404,52405,52408,52412,52420,52421,52423,52425,52432,52436,
-52452,52460,52464,52481,52488,52489,52492,52496,52504,52505,52507,52509,52516,
-52520,52524,52537,52572,52576,52580,52588,52589,52591,52593,52600,52616,52628,
-52629,52632,52636,52644,52645,52647,52649,52656,52676,52684,52688,52712,52716,
-52720,52728,52729,52731,52733,52740,52744,52748,52756,52761,52768,52769,52772,
-52776,52784,52785,52787,52789,52824,52825,52828,52831,52832,52833,52840,52841,
-52843,52845,52852,52853,52856,52860,52868,52869,52871,52873,52880,52881,52884,
-52888,52896,52897,52899,52900,52901,52908,52909,52929,52964,52965,52968,52971,
-52972,52980,52981,52983,52984,52985,52992,52993,52996,53000,53008,53009,53011,
-53013,53020,53024,53028,53036,53037,53039,53040,53041,53048,53076,53077,53080,
-53084,53092,53093,53095,53097,53104,53105,53108,53112,53120,53125,53132,53153,
-53160,53168,53188,53216,53217,53220,53224,53232,53233,53235,53237,53244,53248,
-53252,53265,53272,53293,53300,53301,53304,53308,53316,53317,53319,53321,53328,
-53332,53336,53344,53356,53357,53360,53364,53372,53373,53377,53412,53413,53416,
-53420,53428,53429,53431,53433,53440,53441,53444,53448,53449,53456,53457,53459,
-53460,53461,53468,53469,53472,53476,53484,53485,53487,53488,53489,53496,53517,
-53552,53553,53556,53560,53562,53568,53569,53571,53572,53573,53580,53581,53584,
-53588,53596,53597,53599,53601,53608,53612,53628,53636,53640,53664,53665,53668,
-53672,53680,53681,53683,53685,53690,53692,53696,53720,53748,53752,53767,53769,
-53776,53804,53805,53808,53812,53820,53821,53823,53825,53832,53852,53860,53888,
-53889,53892,53896,53904,53905,53909,53916,53920,53924,53932,53937,53944,53945,
-53948,53951,53952,53954,53960,53961,53963,53972,53976,53980,53988,53989,54000,
-54001,54004,54008,54016,54017,54019,54021,54028,54029,54030,54032,54036,54038,
-54044,54045,54047,54048,54049,54053,54056,54057,54060,54064,54072,54073,54075,
-54076,54077,54084,54085,54140,54141,54144,54148,54156,54157,54159,54160,54161,
-54168,54169,54172,54176,54184,54185,54187,54189,54196,54200,54204,54212,54213,
-54216,54217,54224,54232,54241,54243,54252,54253,54256,54260,54268,54269,54271,
-54273,54280,54301,54336,54340,54364,54368,54372,54381,54383,54392,54393,54396,
-54399,54400,54402,54408,54409,54411,54413,54420,54441,54476,54480,54484,54492,
-54495,54504,54508,54512,54520,54523,54525,54532,54536,54540,54548,54549,54551,
-54588,54589,54592,54596,54604,54605,54607,54609,54616,54617,54620,54624,54629,
-54632,54633,54635,54637,54644,54645,54648,54652,54660,54661,54663,54664,54665,
-54672,54693,54728,54729,54732,54736,54738,54744,54745,54747,54749,54756,54757,
-54760,54764,54772,54773,54775,54777,54784,54785,54788,54792,54800,54801,54803,
-54804,54805,54812,54816,54820,54829,54840,54841,54844,54848,54853,54856,54857,
-54859,54861,54865,54868,54869,54872,54876,54887,54889,54896,54897,54900,54915,
-54917,54924,54925,54928,54932,54941,54943,54945,54952,54956,54960,54969,54971,
-54980,54981,54984,54988,54993,54996,54999,55001,55008,55012,55016,55024,55029,
-55036,55037,55040,55044,55057,55064,55065,55068,55072,55080,55081,55083,55085,
-55092,55093,55096,55100,55108,55111,55113,55120,55121,55124,55126,55127,55128,
-55129,55136,55137,55139,55141,55145,55148,55152,55156,55164,55165,55169,55176,
-55177,55180,55184,55192,55193,55195,55197,20285,20339,20551,20729,21152,21487,
-21621,21733,22025,23233,23478,26247,26550,26551,26607,27468,29634,30146,31292,
-33499,33540,34903,34952,35382,36040,36303,36603,36838,39381,21051,21364,21508,
-24682,24932,27580,29647,33050,35258,35282,38307,20355,21002,22718,22904,23014,
-24178,24185,25031,25536,26438,26604,26751,28567,30286,30475,30965,31240,31487,
-31777,32925,33390,33393,35563,38291,20075,21917,26359,28212,30883,31469,33883,
-35088,34638,38824,21208,22350,22570,23884,24863,25022,25121,25954,26577,27204,
-28187,29976,30131,30435,30640,32058,37039,37969,37970,40853,21283,23724,30002,
-32987,37440,38296,21083,22536,23004,23713,23831,24247,24378,24394,24951,27743,
-30074,30086,31968,32115,32177,32652,33108,33313,34193,35137,35611,37628,38477,
-40007,20171,20215,20491,20977,22607,24887,24894,24936,25913,27114,28433,30117,
-30342,30422,31623,33445,33995,63744,37799,38283,21888,23458,22353,63745,31923,
-32697,37301,20520,21435,23621,24040,25298,25454,25818,25831,28192,28844,31067,
-36317,36382,63746,36989,37445,37624,20094,20214,20581,24062,24314,24838,26967,
-33137,34388,36423,37749,39467,20062,20625,26480,26688,20745,21133,21138,27298,
-30652,37392,40660,21163,24623,36850,20552,25001,25581,25802,26684,27268,28608,
-33160,35233,38548,22533,29309,29356,29956,32121,32365,32937,35211,35700,36963,
-40273,25225,27770,28500,32080,32570,35363,20860,24906,31645,35609,37463,37772,
-20140,20435,20510,20670,20742,21185,21197,21375,22384,22659,24218,24465,24950,
-25004,25806,25964,26223,26299,26356,26775,28039,28805,28913,29855,29861,29898,
-30169,30828,30956,31455,31478,32069,32147,32789,32831,33051,33686,35686,36629,
-36885,37857,38915,38968,39514,39912,20418,21843,22586,22865,23395,23622,24760,
-25106,26690,26800,26856,28330,30028,30328,30926,31293,31995,32363,32380,35336,
-35489,35903,38542,40388,21476,21481,21578,21617,22266,22993,23396,23611,24235,
-25335,25911,25925,25970,26272,26543,27073,27837,30204,30352,30590,31295,32660,
-32771,32929,33167,33510,33533,33776,34241,34865,34996,35493,63747,36764,37678,
-38599,39015,39640,40723,21741,26011,26354,26767,31296,35895,40288,22256,22372,
-23825,26118,26801,26829,28414,29736,34974,39908,27752,63748,39592,20379,20844,
-20849,21151,23380,24037,24656,24685,25329,25511,25915,29657,31354,34467,36002,
-38799,20018,23521,25096,26524,29916,31185,33747,35463,35506,36328,36942,37707,
-38982,24275,27112,34303,37101,63749,20896,23448,23532,24931,26874,27454,28748,
-29743,29912,31649,32592,33733,35264,36011,38364,39208,21038,24669,25324,36866,
-20362,20809,21281,22745,24291,26336,27960,28826,29378,29654,31568,33009,37979,
-21350,25499,32619,20054,20608,22602,22750,24618,24871,25296,27088,39745,23439,
-32024,32945,36703,20132,20689,21676,21932,23308,23968,24039,25898,25934,26657,
-27211,29409,30350,30703,32094,32761,33184,34126,34527,36611,36686,37066,39171,
-39509,39851,19992,20037,20061,20167,20465,20855,21246,21312,21475,21477,21646,
-22036,22389,22434,23495,23943,24272,25084,25304,25937,26552,26601,27083,27472,
-27590,27628,27714,28317,28792,29399,29590,29699,30655,30697,31350,32127,32777,
-33276,33285,33290,33503,34914,35635,36092,36544,36881,37041,37476,37558,39378,
-39493,40169,40407,40860,22283,23616,33738,38816,38827,40628,21531,31384,32676,
-35033,36557,37089,22528,23624,25496,31391,23470,24339,31353,31406,33422,36524,
-20518,21048,21240,21367,22280,25331,25458,27402,28099,30519,21413,29527,34152,
-36470,38357,26426,27331,28528,35437,36556,39243,63750,26231,27512,36020,39740,
-63751,21483,22317,22862,25542,27131,29674,30789,31418,31429,31998,33909,35215,
-36211,36917,38312,21243,22343,30023,31584,33740,37406,63752,27224,20811,21067,
-21127,25119,26840,26997,38553,20677,21156,21220,25027,26020,26681,27135,29822,
-31563,33465,33771,35250,35641,36817,39241,63753,20170,22935,25810,26129,27278,
-29748,31105,31165,33449,34942,34943,35167,63754,37670,20235,21450,24613,25201,
-27762,32026,32102,20120,20834,30684,32943,20225,20238,20854,20864,21980,22120,
-22331,22522,22524,22804,22855,22931,23492,23696,23822,24049,24190,24524,25216,
-26071,26083,26398,26399,26462,26827,26820,27231,27450,27683,27773,27778,28103,
-29592,29734,29738,29826,29859,30072,30079,30849,30959,31041,31047,31048,31098,
-31637,32000,32186,32648,32774,32813,32908,35352,35663,35912,36215,37665,37668,
-39138,39249,39438,39439,39525,40594,32202,20342,21513,25326,26708,37329,21931,
-20794,63755,63756,23068,25062,63757,25295,25343,63758,63759,63760,63761,63762,
-63763,37027,63764,63765,63766,63767,63768,35582,63769,63770,63771,63772,26262,
-63773,29014,63774,63775,38627,63776,25423,25466,21335,63777,26511,26976,28275,
-63778,30007,63779,63780,63781,32013,63782,63783,34930,22218,23064,63784,63785,
-63786,63787,63788,20035,63789,20839,22856,26608,32784,63790,22899,24180,25754,
-31178,24565,24684,25288,25467,23527,23511,21162,63791,22900,24361,24594,63792,
-63793,63794,29785,63795,63796,63797,63798,63799,63800,39377,63801,63802,63803,
-63804,63805,63806,63807,63808,63809,63810,63811,28611,63812,63813,33215,36786,
-24817,63814,63815,33126,63816,63817,23615,63818,63819,63820,63821,63822,63823,
-63824,63825,23273,35365,26491,32016,63826,63827,63828,63829,63830,63831,33021,
-63832,63833,23612,27877,21311,28346,22810,33590,20025,20150,20294,21934,22296,
-22727,24406,26039,26086,27264,27573,28237,30701,31471,31774,32222,34507,34962,
-37170,37723,25787,28606,29562,30136,36948,21846,22349,25018,25812,26311,28129,
-28251,28525,28601,30192,32835,33213,34113,35203,35527,35674,37663,27795,30035,
-31572,36367,36957,21776,22530,22616,24162,25095,25758,26848,30070,31958,34739,
-40680,20195,22408,22382,22823,23565,23729,24118,24453,25140,25825,29619,33274,
-34955,36024,38538,40667,23429,24503,24755,20498,20992,21040,22294,22581,22615,
-23566,23648,23798,23947,24230,24466,24764,25361,25481,25623,26691,26873,27330,
-28120,28193,28372,28644,29182,30428,30585,31153,31291,33796,35241,36077,36339,
-36424,36867,36884,36947,37117,37709,38518,38876,27602,28678,29272,29346,29544,
-30563,31167,31716,32411,35712,22697,24775,25958,26109,26302,27788,28958,29129,
-35930,38931,20077,31361,20189,20908,20941,21205,21516,24999,26481,26704,26847,
-27934,28540,30140,30643,31461,33012,33891,37509,20828,26007,26460,26515,30168,
-31431,33651,63834,35910,36887,38957,23663,33216,33434,36929,36975,37389,24471,
-23965,27225,29128,30331,31561,34276,35588,37159,39472,21895,25078,63835,30313,
-32645,34367,34746,35064,37007,63836,27931,28889,29662,32097,33853,63837,37226,
-39409,63838,20098,21365,27396,27410,28734,29211,34349,40478,21068,36771,23888,
-25829,25900,27414,28651,31811,32412,34253,35172,35261,25289,33240,34847,24266,
-26391,28010,29436,29701,29807,34690,37086,20358,23821,24480,33802,20919,25504,
-30053,20142,20486,20841,20937,26753,27153,31918,31921,31975,33391,35538,36635,
-37327,20406,20791,21237,21570,24300,24942,25150,26053,27354,28670,31018,34268,
-34851,38317,39522,39530,40599,40654,21147,26310,27511,28701,31019,36706,38722,
-24976,25088,25891,28451,29001,29833,32244,32879,34030,36646,36899,37706,20925,
-21015,21155,27916,28872,35010,24265,25986,27566,28610,31806,29557,20196,20278,
-22265,63839,23738,23994,24604,29618,31533,32666,32718,32838,36894,37428,38646,
-38728,38936,40801,20363,28583,31150,37300,38583,21214,63840,25736,25796,27347,
-28510,28696,29200,30439,32769,34310,34396,36335,36613,38706,39791,40442,40565,
-30860,31103,32160,33737,37636,40575,40595,35542,22751,24324,26407,28711,29903,
-31840,32894,20769,28712,29282,30922,36034,36058,36084,38647,20102,20698,23534,
-24278,26009,29134,30274,30637,32842,34044,36988,39719,40845,22744,23105,23650,
-27155,28122,28431,30267,32047,32311,34078,35128,37860,38475,21129,26066,26611,
-27060,27969,28316,28687,29705,29792,30041,30244,30827,35628,39006,20845,25134,
-38520,20374,20523,23833,28138,32184,36650,24459,24900,26647,63841,38534,21202,
-32907,20956,20940,26974,31260,32190,33777,38517,20442,21033,21400,21519,21774,
-23653,24743,26446,26792,28012,29313,29432,29702,29827,63842,30178,31852,32633,
-32696,33673,35023,35041,37324,37328,38626,39881,21533,28542,29136,29848,34298,
-36522,38563,40023,40607,26519,28107,29747,33256,38678,30764,31435,31520,31890,
-25705,29802,30194,30908,30952,39340,39764,40635,23518,24149,28448,33180,33707,
-37000,19975,21325,23081,24018,24398,24930,25405,26217,26364,28415,28459,28771,
-30622,33836,34067,34875,36627,39237,39995,21788,25273,26411,27819,33545,35178,
-38778,20129,22916,24536,24537,26395,32178,32596,33426,33579,33725,36638,37017,
-22475,22969,23186,23504,26151,26522,26757,27599,29028,32629,36023,36067,36993,
-39749,33032,35978,38476,39488,40613,23391,27667,29467,30450,30431,33804,20906,
-35219,20813,20885,21193,26825,27796,30468,30496,32191,32236,38754,40629,28357,
-34065,20901,21517,21629,26126,26269,26919,28319,30399,30609,33559,33986,34719,
-37225,37528,40180,34946,20398,20882,21215,22982,24125,24917,25720,25721,26286,
-26576,27169,27597,27611,29279,29281,29761,30520,30683,32791,33468,33541,35584,
-35624,35980,26408,27792,29287,30446,30566,31302,40361,27519,27794,22818,26406,
-33945,21359,22675,22937,24287,25551,26164,26483,28218,29483,31447,33495,37672,
-21209,24043,25006,25035,25098,25287,25771,26080,26969,27494,27595,28961,29687,
-30045,32326,33310,33538,34154,35491,36031,38695,40289,22696,40664,20497,21006,
-21563,21839,25991,27766,32010,32011,32862,34442,38272,38639,21247,27797,29289,
-21619,23194,23614,23883,24396,24494,26410,26806,26979,28220,28228,30473,31859,
-32654,34183,35598,36855,38753,40692,23735,24758,24845,25003,25935,26107,26108,
-27665,27887,29599,29641,32225,38292,23494,34588,35600,21085,21338,25293,25615,
-25778,26420,27192,27850,29632,29854,31636,31893,32283,33162,33334,34180,36843,
-38649,39361,20276,21322,21453,21467,25292,25644,25856,26001,27075,27886,28504,
-29677,30036,30242,30436,30460,30928,30971,31020,32070,33324,34784,36820,38930,
-39151,21187,25300,25765,28196,28497,30332,36299,37297,37474,39662,39747,20515,
-20621,22346,22952,23592,24135,24439,25151,25918,26041,26049,26121,26507,27036,
-28354,30917,32033,32938,33152,33323,33459,33953,34444,35370,35607,37030,38450,
-40848,20493,20467,63843,22521,24472,25308,25490,26479,28227,28953,30403,32972,
-32986,35060,35061,35097,36064,36649,37197,38506,20271,20336,24091,26575,26658,
-30333,30334,39748,24161,27146,29033,29140,30058,63844,32321,34115,34281,39132,
-20240,31567,32624,38309,20961,24070,26805,27710,27726,27867,29359,31684,33539,
-27861,29754,20731,21128,22721,25816,27287,29863,30294,30887,34327,38370,38713,
-63845,21342,24321,35722,36776,36783,37002,21029,30629,40009,40712,19993,20482,
-20853,23643,24183,26142,26170,26564,26821,28851,29953,30149,31177,31453,36647,
-39200,39432,20445,22561,22577,23542,26222,27493,27921,28282,28541,29668,29995,
-33769,35036,35091,35676,36628,20239,20693,21264,21340,23443,24489,26381,31119,
-33145,33583,34068,35079,35206,36665,36667,39333,39954,26412,20086,20472,22857,
-23553,23791,23792,25447,26834,28925,29090,29739,32299,34028,34562,36898,37586,
-40179,19981,20184,20463,20613,21078,21103,21542,21648,22496,22827,23142,23386,
-23413,23500,24220,63846,25206,25975,26023,28014,28325,29238,31526,31807,32566,
-33104,33105,33178,33344,33433,33705,35331,36000,36070,36091,36212,36282,37096,
-37340,38428,38468,39385,40167,21271,20998,21545,22132,22707,22868,22894,24575,
-24996,25198,26128,27774,28954,30406,31881,31966,32027,33452,36033,38640,63847,
-20315,24343,24447,25282,23849,26379,26842,30844,32323,40300,19989,20633,21269,
-21290,21329,22915,23138,24199,24754,24970,25161,25209,26000,26503,27047,27604,
-27606,27607,27608,27832,63848,29749,30202,30738,30865,31189,31192,31875,32203,
-32737,32933,33086,33218,33778,34586,35048,35513,35692,36027,37145,38750,39131,
-40763,22188,23338,24428,25996,27315,27567,27996,28657,28693,29277,29613,36007,
-36051,38971,24977,27703,32856,39425,20045,20107,20123,20181,20282,20284,20351,
-20447,20735,21490,21496,21766,21987,22235,22763,22882,23057,23531,23546,23556,
-24051,24107,24473,24605,25448,26012,26031,26614,26619,26797,27515,27801,27863,
-28195,28681,29509,30722,31038,31040,31072,31169,31721,32023,32114,32902,33293,
-33678,34001,34503,35039,35408,35422,35613,36060,36198,36781,37034,39164,39391,
-40605,21066,63849,26388,63850,20632,21034,23665,25955,27733,29642,29987,30109,
-31639,33948,37240,38704,20087,25746,27578,29022,34217,19977,63851,26441,26862,
-28183,33439,34072,34923,25591,28545,37394,39087,19978,20663,20687,20767,21830,
-21930,22039,23360,23577,23776,24120,24202,24224,24258,24819,26705,27233,28248,
-29245,29248,29376,30456,31077,31665,32724,35059,35316,35443,35937,36062,38684,
-22622,29885,36093,21959,63852,31329,32034,33394,29298,29983,29989,63853,31513,
-22661,22779,23996,24207,24246,24464,24661,25234,25471,25933,26257,26329,26360,
-26646,26866,29312,29790,31598,32110,32214,32626,32997,33298,34223,35199,35475,
-36893,37604,40653,40736,22805,22893,24109,24796,26132,26227,26512,27728,28101,
-28511,30707,30889,33990,37323,37675,20185,20682,20808,21892,23307,23459,25159,
-25982,26059,28210,29053,29697,29764,29831,29887,30316,31146,32218,32341,32680,
-33146,33203,33337,34330,34796,35445,36323,36984,37521,37925,39245,39854,21352,
-23633,26964,27844,27945,28203,33292,34203,35131,35373,35498,38634,40807,21089,
-26297,27570,32406,34814,36109,38275,38493,25885,28041,29166,63854,22478,22995,
-23468,24615,24826,25104,26143,26207,29481,29689,30427,30465,31596,32854,32882,
-33125,35488,37266,19990,21218,27506,27927,31237,31545,32048,63855,36016,21484,
-22063,22609,23477,23567,23569,24034,25152,25475,25620,26157,26803,27836,28040,
-28335,28703,28836,29138,29990,30095,30094,30233,31505,31712,31787,32032,32057,
-34092,34157,34311,35380,36877,36961,37045,37559,38902,39479,20439,23660,26463,
-28049,31903,32396,35606,36118,36895,23403,24061,25613,33984,36956,39137,29575,
-23435,24730,26494,28126,35359,35494,36865,38924,21047,63856,28753,30862,37782,
-34928,37335,20462,21463,22013,22234,22402,22781,23234,23432,23723,23744,24101,
-24833,25101,25163,25480,25628,25910,25976,27193,27530,27700,27929,28465,29159,
-29417,29560,29703,29874,30246,30561,31168,31319,31466,31929,32143,32172,32353,
-32670,33065,33585,33936,34010,34282,34966,35504,35728,36664,36930,36995,37228,
-37526,37561,38539,38567,38568,38614,38656,38920,39318,39635,39706,21460,22654,
-22809,23408,23487,28113,28506,29087,29729,29881,32901,33789,24033,24455,24490,
-24642,26092,26642,26991,27219,27529,27957,28147,29667,30462,30636,31565,32020,
-33059,33308,33600,34036,34147,35426,35524,37255,37662,38918,39348,25100,34899,
-36848,37477,23815,23847,23913,29791,33181,34664,28629,25342,32722,35126,35186,
-19998,20056,20711,21213,21319,25215,26119,32361,34821,38494,20365,21273,22070,
-22987,23204,23608,23630,23629,24066,24337,24643,26045,26159,26178,26558,26612,
-29468,30690,31034,32709,33940,33997,35222,35430,35433,35553,35925,35962,22516,
-23508,24335,24687,25325,26893,27542,28252,29060,31698,34645,35672,36606,39135,
-39166,20280,20353,20449,21627,23072,23480,24892,26032,26216,29180,30003,31070,
-32051,33102,33251,33688,34218,34254,34563,35338,36523,36763,63857,36805,22833,
-23460,23526,24713,23529,23563,24515,27777,63858,28145,28683,29978,33455,35574,
-20160,21313,63859,38617,27663,20126,20420,20818,21854,23077,23784,25105,29273,
-33469,33706,34558,34905,35357,38463,38597,39187,40201,40285,22538,23731,23997,
-24132,24801,24853,25569,27138,28197,37122,37716,38990,39952,40823,23433,23736,
-25353,26191,26696,30524,38593,38797,38996,39839,26017,35585,36555,38332,21813,
-23721,24022,24245,26263,30284,33780,38343,22739,25276,29390,40232,20208,22830,
-24591,26171,27523,31207,40230,21395,21696,22467,23830,24859,26326,28079,30861,
-33406,38552,38724,21380,25212,25494,28082,32266,33099,38989,27387,32588,40367,
-40474,20063,20539,20918,22812,24825,25590,26928,29242,32822,63860,37326,24369,
-63861,63862,32004,33509,33903,33979,34277,36493,63863,20335,63864,63865,22756,
-23363,24665,25562,25880,25965,26264,63866,26954,27171,27915,28673,29036,30162,
-30221,31155,31344,63867,32650,63868,35140,63869,35731,37312,38525,63870,39178,
-22276,24481,26044,28417,30208,31142,35486,39341,39770,40812,20740,25014,25233,
-27277,33222,20547,22576,24422,28937,35328,35578,23420,34326,20474,20796,22196,
-22852,25513,28153,23978,26989,20870,20104,20313,63871,63872,63873,22914,63874,
-63875,27487,27741,63876,29877,30998,63877,33287,33349,33593,36671,36701,63878,
-39192,63879,63880,63881,20134,63882,22495,24441,26131,63883,63884,30123,32377,
-35695,63885,36870,39515,22181,22567,23032,23071,23476,63886,24310,63887,63888,
-25424,25403,63889,26941,27783,27839,28046,28051,28149,28436,63890,28895,28982,
-29017,63891,29123,29141,63892,30799,30831,63893,31605,32227,63894,32303,63895,
-34893,36575,63896,63897,63898,37467,63899,40182,63900,63901,63902,24709,28037,
-63903,29105,63904,63905,38321,21421,63906,63907,63908,26579,63909,28814,28976,
-29744,33398,33490,63910,38331,39653,40573,26308,63911,29121,33865,63912,63913,
-22603,63914,63915,23992,24433,63916,26144,26254,27001,27054,27704,27891,28214,
-28481,28634,28699,28719,29008,29151,29552,63917,29787,63918,29908,30408,31310,
-32403,63919,63920,33521,35424,36814,63921,37704,63922,38681,63923,63924,20034,
-20522,63925,21000,21473,26355,27757,28618,29450,30591,31330,33454,34269,34306,
-63926,35028,35427,35709,35947,63927,37555,63928,38675,38928,20116,20237,20425,
-20658,21320,21566,21555,21978,22626,22714,22887,23067,23524,24735,63929,25034,
-25942,26111,26212,26791,27738,28595,28879,29100,29522,31613,34568,35492,39986,
-40711,23627,27779,29508,29577,37434,28331,29797,30239,31337,32277,34314,20800,
-22725,25793,29934,29973,30320,32705,37013,38605,39252,28198,29926,31401,31402,
-33253,34521,34680,35355,23113,23436,23451,26785,26880,28003,29609,29715,29740,
-30871,32233,32747,33048,33109,33694,35916,38446,38929,26352,24448,26106,26505,
-27754,29579,20525,23043,27498,30702,22806,23916,24013,29477,30031,63930,63931,
-20709,20985,22575,22829,22934,23002,23525,63932,63933,23970,25303,25622,25747,
-25854,63934,26332,63935,27208,63936,29183,29796,63937,31368,31407,32327,32350,
-32768,33136,63938,34799,35201,35616,36953,63939,36992,39250,24958,27442,28020,
-32287,35109,36785,20433,20653,20887,21191,22471,22665,23481,24248,24898,27029,
-28044,28263,28342,29076,29794,29992,29996,32883,33592,33993,36362,37780,37854,
-63940,20110,20305,20598,20778,21448,21451,21491,23431,23507,23588,24858,24962,
-26100,29275,29591,29760,30402,31056,31121,31161,32006,32701,33419,34261,34398,
-36802,36935,37109,37354,38533,38632,38633,21206,24423,26093,26161,26671,29020,
-31286,37057,38922,20113,63941,27218,27550,28560,29065,32792,33464,34131,36939,
-38549,38642,38907,34074,39729,20112,29066,38596,20803,21407,21729,22291,22290,
-22435,23195,23236,23491,24616,24895,25588,27781,27961,28274,28304,29232,29503,
-29783,33489,34945,36677,36960,63942,38498,39000,40219,26376,36234,37470,20301,
-20553,20702,21361,22285,22996,23041,23561,24944,26256,28205,29234,29771,32239,
-32963,33806,33894,34111,34655,34907,35096,35586,36949,38859,39759,20083,20369,
-20754,20842,63943,21807,21929,23418,23461,24188,24189,24254,24736,24799,24840,
-24841,25540,25912,26377,63944,26580,26586,63945,26977,26978,27833,27943,63946,
-28216,63947,28641,29494,29495,63948,29788,30001,63949,30290,63950,63951,32173,
-33278,33848,35029,35480,35547,35565,36400,36418,36938,36926,36986,37193,37321,
-37742,63952,63953,22537,63954,27603,32905,32946,63955,63956,20801,22891,23609,
-63957,63958,28516,29607,32996,36103,63959,37399,38287,63960,63961,63962,63963,
-32895,25102,28700,32104,34701,63964,22432,24681,24903,27575,35518,37504,38577,
-20057,21535,28139,34093,38512,38899,39150,25558,27875,37009,20957,25033,33210,
-40441,20381,20506,20736,23452,24847,25087,25836,26885,27589,30097,30691,32681,
-33380,34191,34811,34915,35516,35696,37291,20108,20197,20234,63965,63966,22839,
-23016,63967,24050,24347,24411,24609,63968,63969,63970,63971,29246,29669,63972,
-30064,30157,63973,31227,63974,32780,32819,32900,33505,33617,63975,63976,36029,
-36019,36999,63977,63978,39156,39180,63979,63980,28727,30410,32714,32716,32764,
-35610,20154,20161,20995,21360,63981,21693,22240,23035,23493,24341,24525,28270,
-63982,63983,32106,33589,63984,34451,35469,63985,38765,38775,63986,63987,19968,
-20314,20350,22777,26085,28322,36920,37808,39353,20219,22764,22922,23001,24641,
-63988,63989,31252,63990,33615,36035,20837,21316,63991,63992,63993,20173,21097,
-23381,33471,20180,21050,21672,22985,23039,23376,23383,23388,24675,24904,28363,
-28825,29038,29574,29943,30133,30913,32043,32773,33258,33576,34071,34249,35566,
-36039,38604,20316,21242,22204,26027,26152,28796,28856,29237,32189,33421,37196,
-38592,40306,23409,26855,27544,28538,30430,23697,26283,28507,31668,31786,34870,
-38620,19976,20183,21280,22580,22715,22767,22892,23559,24115,24196,24373,25484,
-26290,26454,27167,27299,27404,28479,29254,63994,29520,29835,31456,31911,33144,
-33247,33255,33674,33900,34083,34196,34255,35037,36115,37292,38263,38556,20877,
-21705,22312,23472,25165,26448,26685,26771,28221,28371,28797,32289,35009,36001,
-36617,40779,40782,29229,31631,35533,37658,20295,20302,20786,21632,22992,24213,
-25269,26485,26990,27159,27822,28186,29401,29482,30141,31672,32053,33511,33785,
-33879,34295,35419,36015,36487,36889,37048,38606,40799,21219,21514,23265,23490,
-25688,25973,28404,29380,63995,30340,31309,31515,31821,32318,32735,33659,35627,
-36042,36196,36321,36447,36842,36857,36969,37841,20291,20346,20659,20840,20856,
-21069,21098,22625,22652,22880,23560,23637,24283,24731,25136,26643,27583,27656,
-28593,29006,29728,30000,30008,30033,30322,31564,31627,31661,31686,32399,35438,
-36670,36681,37439,37523,37666,37931,38651,39002,39019,39198,20999,25130,25240,
-27993,30308,31434,31680,32118,21344,23742,24215,28472,28857,31896,38673,39822,
-40670,25509,25722,34678,19969,20117,20141,20572,20597,21576,22979,23450,24128,
-24237,24311,24449,24773,25402,25919,25972,26060,26230,26232,26622,26984,27273,
-27491,27712,28096,28136,28191,28254,28702,28833,29582,29693,30010,30555,30855,
-31118,31243,31357,31934,32142,33351,35330,35562,35998,37165,37194,37336,37478,
-37580,37664,38662,38742,38748,38914,40718,21046,21137,21884,22564,24093,24351,
-24716,25552,26799,28639,31085,31532,33229,34234,35069,35576,36420,37261,38500,
-38555,38717,38988,40778,20430,20806,20939,21161,22066,24340,24427,25514,25805,
-26089,26177,26362,26361,26397,26781,26839,27133,28437,28526,29031,29157,29226,
-29866,30522,31062,31066,31199,31264,31381,31895,31967,32068,32368,32903,34299,
-34468,35412,35519,36249,36481,36896,36973,37347,38459,38613,40165,26063,31751,
-36275,37827,23384,23562,21330,25305,29469,20519,23447,24478,24752,24939,26837,
-28121,29742,31278,32066,32156,32305,33131,36394,36405,37758,37912,20304,22352,
-24038,24231,25387,32618,20027,20303,20367,20570,23005,32964,21610,21608,22014,
-22863,23449,24030,24282,26205,26417,26609,26666,27880,27954,28234,28557,28855,
-29664,30087,31820,32002,32044,32162,33311,34523,35387,35461,36208,36490,36659,
-36913,37198,37202,37956,39376,31481,31909,20426,20737,20934,22472,23535,23803,
-26201,27197,27994,28310,28652,28940,30063,31459,34850,36897,36981,38603,39423,
-33537,20013,20210,34886,37325,21373,27355,26987,27713,33914,22686,24974,26366,
-25327,28893,29969,30151,32338,33976,35657,36104,20043,21482,21675,22320,22336,
-24535,25345,25351,25711,25903,26088,26234,26525,26547,27490,27744,27802,28460,
-30693,30757,31049,31063,32025,32930,33026,33267,33437,33463,34584,35468,63996,
-36100,36286,36978,30452,31257,31287,32340,32887,21767,21972,22645,25391,25634,
-26185,26187,26733,27035,27524,27941,28337,29645,29800,29857,30043,30137,30433,
-30494,30603,31206,32265,32285,33275,34095,34967,35386,36049,36587,36784,36914,
-37805,38499,38515,38663,20356,21489,23018,23241,24089,26702,29894,30142,31209,
-31378,33187,34541,36074,36300,36845,26015,26389,63997,22519,28503,32221,36655,
-37878,38598,24501,25074,28548,19988,20376,20511,21449,21983,23919,24046,27425,
-27492,30923,31642,63998,36425,36554,36974,25417,25662,30528,31364,37679,38015,
-40810,25776,28591,29158,29864,29914,31428,31762,32386,31922,32408,35738,36106,
-38013,39184,39244,21049,23519,25830,26413,32046,20717,21443,22649,24920,24921,
-25082,26028,31449,35730,35734,20489,20513,21109,21809,23100,24288,24432,24884,
-25950,26124,26166,26274,27085,28356,28466,29462,30241,31379,33081,33369,33750,
-33980,20661,22512,23488,23528,24425,25505,30758,32181,33756,34081,37319,37365,
-20874,26613,31574,36012,20932,22971,24765,34389,20508,63999,21076,23610,24957,
-25114,25299,25842,26021,28364,30240,33034,36448,38495,38587,20191,21315,21912,
-22825,24029,25797,27849,28154,29588,31359,33307,34214,36068,36368,36983,37351,
-38369,38433,38854,20984,21746,21894,24505,25764,28552,32180,36639,36685,37941,
-20681,23574,27838,28155,29979,30651,31805,31844,35449,35522,22558,22974,24086,
-25463,29266,30090,30571,35548,36028,36626,24307,26228,28152,32893,33729,35531,
-38737,39894,64000,21059,26367,28053,28399,32224,35558,36910,36958,39636,21021,
-21119,21736,24980,25220,25307,26786,26898,26970,27189,28818,28966,30813,30977,
-30990,31186,31245,32918,33400,33493,33609,34121,35970,36229,37218,37259,37294,
-20419,22225,29165,30679,34560,35320,23544,24534,26449,37032,21474,22618,23541,
-24740,24961,25696,32317,32880,34085,37507,25774,20652,23828,26368,22684,25277,
-25512,26894,27000,27166,28267,30394,31179,33467,33833,35535,36264,36861,37138,
-37195,37276,37648,37656,37786,38619,39478,39949,19985,30044,31069,31482,31569,
-31689,32302,33988,36441,36468,36600,36880,26149,26943,29763,20986,26414,40668,
-20805,24544,27798,34802,34909,34935,24756,33205,33795,36101,21462,21561,22068,
-23094,23601,28810,32736,32858,33030,33261,36259,37257,39519,40434,20596,20164,
-21408,24827,28204,23652,20360,20516,21988,23769,24159,24677,26772,27835,28100,
-29118,30164,30196,30305,31258,31305,32199,32251,32622,33268,34473,36636,38601,
-39347,40786,21063,21189,39149,35242,19971,26578,28422,20405,23522,26517,27784,
-28024,29723,30759,37341,37756,34756,31204,31281,24555,20182,21668,21822,22702,
-22949,24816,25171,25302,26422,26965,33333,38464,39345,39389,20524,21331,21828,
-22396,64001,25176,64002,25826,26219,26589,28609,28655,29730,29752,35351,37944,
-21585,22022,22374,24392,24986,27470,28760,28845,32187,35477,22890,33067,25506,
-30472,32829,36010,22612,25645,27067,23445,24081,28271,64003,34153,20812,21488,
-22826,24608,24907,27526,27760,27888,31518,32974,33492,36294,37040,39089,64004,
-25799,28580,25745,25860,20814,21520,22303,35342,24927,26742,64005,30171,31570,
-32113,36890,22534,27084,33151,35114,36864,38969,20600,22871,22956,25237,36879,
-39722,24925,29305,38358,22369,23110,24052,25226,25773,25850,26487,27874,27966,
-29228,29750,30772,32631,33453,36315,38935,21028,22338,26495,29256,29923,36009,
-36774,37393,38442,20843,21485,25420,20329,21764,24726,25943,27803,28031,29260,
-29437,31255,35207,35997,24429,28558,28921,33192,24846,20415,20559,25153,29255,
-31687,32232,32745,36941,38829,39449,36022,22378,24179,26544,33805,35413,21536,
-23318,24163,24290,24330,25987,32954,34109,38281,38491,20296,21253,21261,21263,
-21638,21754,22275,24067,24598,25243,25265,25429,64006,27873,28006,30129,30770,
-32990,33071,33502,33889,33970,34957,35090,36875,37610,39165,39825,24133,26292,
-26333,28689,29190,64007,20469,21117,24426,24915,26451,27161,28418,29922,31080,
-34920,35961,39111,39108,39491,21697,31263,26963,35575,35914,39080,39342,24444,
-25259,30130,30382,34987,36991,38466,21305,24380,24517,27852,29644,30050,30091,
-31558,33534,39325,20047,36924,19979,20309,21414,22799,24264,26160,27827,29781,
-33655,34662,36032,36944,38686,39957,22737,23416,34384,35604,40372,23506,24680,
-24717,26097,27735,28450,28579,28698,32597,32752,38289,38290,38480,38867,21106,
-36676,20989,21547,21688,21859,21898,27323,28085,32216,33382,37532,38519,40569,
-21512,21704,30418,34532,38308,38356,38492,20130,20233,23022,23270,24055,24658,
-25239,26477,26689,27782,28207,32568,32923,33322,64008,64009,38917,20133,20565,
-21683,22419,22874,23401,23475,25032,26999,28023,28707,34809,35299,35442,35559,
-36994,39405,39608,21182,26680,20502,24184,26447,33607,34892,20139,21521,22190,
-29670,37141,38911,39177,39255,39321,22099,22687,34395,35377,25010,27382,29563,
-36562,27463,38570,39511,22869,29184,36203,38761,20436,23796,24358,25080,26203,
-27883,28843,29572,29625,29694,30505,30541,32067,32098,32291,33335,34898,64010,
-36066,37449,39023,23377,31348,34880,38913,23244,20448,21332,22846,23805,25406,
-28025,29433,33029,33031,33698,37583,38960,20136,20804,21009,22411,24418,27842,
-28366,28677,28752,28847,29074,29673,29801,33610,34722,34913,36872,37026,37795,
-39336,20846,24407,24800,24935,26291,34137,36426,37295,38795,20046,20114,21628,
-22741,22778,22909,23733,24359,25142,25160,26122,26215,27627,28009,28111,28246,
-28408,28564,28640,28649,28765,29392,29733,29786,29920,30355,31068,31946,32286,
-32993,33446,33899,33983,34382,34399,34676,35703,35946,37804,38912,39013,24785,
-25110,37239,23130,26127,28151,28222,29759,39746,24573,24794,31503,21700,24344,
-27742,27859,27946,28888,32005,34425,35340,40251,21270,21644,23301,27194,28779,
-30069,31117,31166,33457,33775,35441,35649,36008,38772,64011,25844,25899,30906,
-30907,31339,20024,21914,22864,23462,24187,24739,25563,27489,26213,26707,28185,
-29029,29872,32008,36996,39529,39973,27963,28369,29502,35905,38346,20976,24140,
-24488,24653,24822,24880,24908,26179,26180,27045,27841,28255,28361,28514,29004,
-29852,30343,31681,31783,33618,34647,36945,38541,40643,21295,22238,24315,24458,
-24674,24724,25079,26214,26371,27292,28142,28590,28784,29546,32362,33214,33588,
-34516,35496,36036,21123,29554,23446,27243,37892,21742,22150,23389,25928,25989,
-26313,26783,28045,28102,29243,32948,37237,39501,20399,20505,21402,21518,21564,
-21897,21957,24127,24460,26429,29030,29661,36869,21211,21235,22628,22734,28932,
-29071,29179,34224,35347,26248,34216,21927,26244,29002,33841,21321,21913,27585,
-24409,24509,25582,26249,28999,35569,36637,40638,20241,25658,28875,30054,34407,
-24676,35662,40440,20807,20982,21256,27958,33016,40657,26133,27427,28824,30165,
-21507,23673,32007,35350,27424,27453,27462,21560,24688,27965,32725,33288,20694,
-20958,21916,22123,22221,23020,23305,24076,24985,24984,25137,26206,26342,29081,
-29113,29114,29351,31143,31232,32690,35440,
-};
-
-static const struct dbcs_index ksx1001_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{__ksx1001_decmap+0,33,126},{__ksx1001_decmap+
-94,33,103},{__ksx1001_decmap+165,33,126},{__ksx1001_decmap+259,33,126},{
-__ksx1001_decmap+353,33,120},{__ksx1001_decmap+441,33,100},{__ksx1001_decmap+
-509,33,111},{__ksx1001_decmap+588,33,126},{__ksx1001_decmap+682,33,126},{
-__ksx1001_decmap+776,33,115},{__ksx1001_decmap+859,33,118},{__ksx1001_decmap+
-945,33,113},{0,0,0},{0,0,0},{0,0,0},{__ksx1001_decmap+1026,33,126},{
-__ksx1001_decmap+1120,33,126},{__ksx1001_decmap+1214,33,126},{__ksx1001_decmap
-+1308,33,126},{__ksx1001_decmap+1402,33,126},{__ksx1001_decmap+1496,33,126},{
-__ksx1001_decmap+1590,33,126},{__ksx1001_decmap+1684,33,126},{__ksx1001_decmap
-+1778,33,126},{__ksx1001_decmap+1872,33,126},{__ksx1001_decmap+1966,33,126},{
-__ksx1001_decmap+2060,33,126},{__ksx1001_decmap+2154,33,126},{__ksx1001_decmap
-+2248,33,126},{__ksx1001_decmap+2342,33,126},{__ksx1001_decmap+2436,33,126},{
-__ksx1001_decmap+2530,33,126},{__ksx1001_decmap+2624,33,126},{__ksx1001_decmap
-+2718,33,126},{__ksx1001_decmap+2812,33,126},{__ksx1001_decmap+2906,33,126},{
-__ksx1001_decmap+3000,33,126},{__ksx1001_decmap+3094,33,126},{__ksx1001_decmap
-+3188,33,126},{__ksx1001_decmap+3282,33,126},{0,0,0},{__ksx1001_decmap+3376,
-33,126},{__ksx1001_decmap+3470,33,126},{__ksx1001_decmap+3564,33,126},{
-__ksx1001_decmap+3658,33,126},{__ksx1001_decmap+3752,33,126},{__ksx1001_decmap
-+3846,33,126},{__ksx1001_decmap+3940,33,126},{__ksx1001_decmap+4034,33,126},{
-__ksx1001_decmap+4128,33,126},{__ksx1001_decmap+4222,33,126},{__ksx1001_decmap
-+4316,33,126},{__ksx1001_decmap+4410,33,126},{__ksx1001_decmap+4504,33,126},{
-__ksx1001_decmap+4598,33,126},{__ksx1001_decmap+4692,33,126},{__ksx1001_decmap
-+4786,33,126},{__ksx1001_decmap+4880,33,126},{__ksx1001_decmap+4974,33,126},{
-__ksx1001_decmap+5068,33,126},{__ksx1001_decmap+5162,33,126},{__ksx1001_decmap
-+5256,33,126},{__ksx1001_decmap+5350,33,126},{__ksx1001_decmap+5444,33,126},{
-__ksx1001_decmap+5538,33,126},{__ksx1001_decmap+5632,33,126},{__ksx1001_decmap
-+5726,33,126},{__ksx1001_decmap+5820,33,126},{__ksx1001_decmap+5914,33,126},{
-__ksx1001_decmap+6008,33,126},{__ksx1001_decmap+6102,33,126},{__ksx1001_decmap
-+6196,33,126},{__ksx1001_decmap+6290,33,126},{__ksx1001_decmap+6384,33,126},{
-__ksx1001_decmap+6478,33,126},{__ksx1001_decmap+6572,33,126},{__ksx1001_decmap
-+6666,33,126},{__ksx1001_decmap+6760,33,126},{__ksx1001_decmap+6854,33,126},{
-__ksx1001_decmap+6948,33,126},{__ksx1001_decmap+7042,33,126},{__ksx1001_decmap
-+7136,33,126},{__ksx1001_decmap+7230,33,126},{__ksx1001_decmap+7324,33,126},{
-__ksx1001_decmap+7418,33,126},{__ksx1001_decmap+7512,33,126},{__ksx1001_decmap
-+7606,33,126},{__ksx1001_decmap+7700,33,126},{__ksx1001_decmap+7794,33,126},{
-__ksx1001_decmap+7888,33,126},{__ksx1001_decmap+7982,33,126},{__ksx1001_decmap
-+8076,33,126},{__ksx1001_decmap+8170,33,126},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},
-};
-
-static const ucs2_t __cp949ext_decmap[9650] = {
-44034,44035,44037,44038,44043,44044,44045,44046,44047,44056,44062,44063,44065,
-44066,44067,44069,44070,44071,44072,44073,44074,44075,44078,44082,44083,44084,
-U,U,U,U,U,U,44085,44086,44087,44090,44091,44093,44094,44095,44097,44098,44099,
-44100,44101,44102,44103,44104,44105,44106,44108,44110,44111,44112,44113,44114,
-44115,44117,U,U,U,U,U,U,44118,44119,44121,44122,44123,44125,44126,44127,44128,
-44129,44130,44131,44132,44133,44134,44135,44136,44137,44138,44139,44140,44141,
-44142,44143,44146,44147,44149,44150,44153,44155,44156,44157,44158,44159,44162,
-44167,44168,44173,44174,44175,44177,44178,44179,44181,44182,44183,44184,44185,
-44186,44187,44190,44194,44195,44196,44197,44198,44199,44203,44205,44206,44209,
-44210,44211,44212,44213,44214,44215,44218,44222,44223,44224,44226,44227,44229,
-44230,44231,44233,44234,44235,44237,44238,44239,44240,44241,44242,44243,44244,
-44246,44248,44249,44250,44251,44252,44253,44254,44255,44258,44259,44261,44262,
-44265,44267,44269,44270,44274,44276,44279,44280,44281,44282,44283,44286,44287,
-44289,44290,44291,44293,44295,44296,44297,44298,44299,44302,44304,44306,44307,
-44308,44309,44310,44311,44313,44314,44315,44317,44318,44319,44321,44322,44323,
-44324,44325,44326,44327,44328,44330,44331,44334,44335,44336,44337,44338,44339,
-U,U,U,U,U,U,44342,44343,44345,44346,44347,44349,44350,44351,44352,44353,44354,
-44355,44358,44360,44362,44363,44364,44365,44366,44367,44369,44370,44371,44373,
-44374,44375,U,U,U,U,U,U,44377,44378,44379,44380,44381,44382,44383,44384,44386,
-44388,44389,44390,44391,44392,44393,44394,44395,44398,44399,44401,44402,44407,
-44408,44409,44410,44414,44416,44419,44420,44421,44422,44423,44426,44427,44429,
-44430,44431,44433,44434,44435,44436,44437,44438,44439,44440,44441,44442,44443,
-44446,44447,44448,44449,44450,44451,44453,44454,44455,44456,44457,44458,44459,
-44460,44461,44462,44463,44464,44465,44466,44467,44468,44469,44470,44472,44473,
-44474,44475,44476,44477,44478,44479,44482,44483,44485,44486,44487,44489,44490,
-44491,44492,44493,44494,44495,44498,44500,44501,44502,44503,44504,44505,44506,
-44507,44509,44510,44511,44513,44514,44515,44517,44518,44519,44520,44521,44522,
-44523,44524,44525,44526,44527,44528,44529,44530,44531,44532,44533,44534,44535,
-44538,44539,44541,44542,44546,44547,44548,44549,44550,44551,44554,44556,44558,
-44559,44560,44561,44562,44563,44565,44566,44567,44568,44569,44570,44571,44572,
-U,U,U,U,U,U,44573,44574,44575,44576,44577,44578,44579,44580,44581,44582,44583,
-44584,44585,44586,44587,44588,44589,44590,44591,44594,44595,44597,44598,44601,
-44603,44604,U,U,U,U,U,U,44605,44606,44607,44610,44612,44615,44616,44617,44619,
-44623,44625,44626,44627,44629,44631,44632,44633,44634,44635,44638,44642,44643,
-44644,44646,44647,44650,44651,44653,44654,44655,44657,44658,44659,44660,44661,
-44662,44663,44666,44670,44671,44672,44673,44674,44675,44678,44679,44680,44681,
-44682,44683,44685,44686,44687,44688,44689,44690,44691,44692,44693,44694,44695,
-44696,44697,44698,44699,44700,44701,44702,44703,44704,44705,44706,44707,44708,
-44709,44710,44711,44712,44713,44714,44715,44716,44717,44718,44719,44720,44721,
-44722,44723,44724,44725,44726,44727,44728,44729,44730,44731,44735,44737,44738,
-44739,44741,44742,44743,44744,44745,44746,44747,44750,44754,44755,44756,44757,
-44758,44759,44762,44763,44765,44766,44767,44768,44769,44770,44771,44772,44773,
-44774,44775,44777,44778,44780,44782,44783,44784,44785,44786,44787,44789,44790,
-44791,44793,44794,44795,44797,44798,44799,44800,44801,44802,44803,44804,44805,
-U,U,U,U,U,U,44806,44809,44810,44811,44812,44814,44815,44817,44818,44819,44820,
-44821,44822,44823,44824,44825,44826,44827,44828,44829,44830,44831,44832,44833,
-44834,44835,U,U,U,U,U,U,44836,44837,44838,44839,44840,44841,44842,44843,44846,
-44847,44849,44851,44853,44854,44855,44856,44857,44858,44859,44862,44864,44868,
-44869,44870,44871,44874,44875,44876,44877,44878,44879,44881,44882,44883,44884,
-44885,44886,44887,44888,44889,44890,44891,44894,44895,44896,44897,44898,44899,
-44902,44903,44904,44905,44906,44907,44908,44909,44910,44911,44912,44913,44914,
-44915,44916,44917,44918,44919,44920,44922,44923,44924,44925,44926,44927,44929,
-44930,44931,44933,44934,44935,44937,44938,44939,44940,44941,44942,44943,44946,
-44947,44948,44950,44951,44952,44953,44954,44955,44957,44958,44959,44960,44961,
-44962,44963,44964,44965,44966,44967,44968,44969,44970,44971,44972,44973,44974,
-44975,44976,44977,44978,44979,44980,44981,44982,44983,44986,44987,44989,44990,
-44991,44993,44994,44995,44996,44997,44998,45002,45004,45007,45008,45009,45010,
-45011,45013,45014,45015,45016,45017,45018,45019,45021,45022,45023,45024,45025,
-U,U,U,U,U,U,45026,45027,45028,45029,45030,45031,45034,45035,45036,45037,45038,
-45039,45042,45043,45045,45046,45047,45049,45050,45051,45052,45053,45054,45055,
-45058,45059,U,U,U,U,U,U,45061,45062,45063,45064,45065,45066,45067,45069,45070,
-45071,45073,45074,45075,45077,45078,45079,45080,45081,45082,45083,45086,45087,
-45088,45089,45090,45091,45092,45093,45094,45095,45097,45098,45099,45100,45101,
-45102,45103,45104,45105,45106,45107,45108,45109,45110,45111,45112,45113,45114,
-45115,45116,45117,45118,45119,45120,45121,45122,45123,45126,45127,45129,45131,
-45133,45135,45136,45137,45138,45142,45144,45146,45147,45148,45150,45151,45152,
-45153,45154,45155,45156,45157,45158,45159,45160,45161,45162,45163,45164,45165,
-45166,45167,45168,45169,45170,45171,45172,45173,45174,45175,45176,45177,45178,
-45179,45182,45183,45185,45186,45187,45189,45190,45191,45192,45193,45194,45195,
-45198,45200,45202,45203,45204,45205,45206,45207,45211,45213,45214,45219,45220,
-45221,45222,45223,45226,45232,45234,45238,45239,45241,45242,45243,45245,45246,
-45247,45248,45249,45250,45251,45254,45258,45259,45260,45261,45262,45263,45266,
-U,U,U,U,U,U,45267,45269,45270,45271,45273,45274,45275,45276,45277,45278,45279,
-45281,45282,45283,45284,45286,45287,45288,45289,45290,45291,45292,45293,45294,
-45295,45296,U,U,U,U,U,U,45297,45298,45299,45300,45301,45302,45303,45304,45305,
-45306,45307,45308,45309,45310,45311,45312,45313,45314,45315,45316,45317,45318,
-45319,45322,45325,45326,45327,45329,45332,45333,45334,45335,45338,45342,45343,
-45344,45345,45346,45350,45351,45353,45354,45355,45357,45358,45359,45360,45361,
-45362,45363,45366,45370,45371,45372,45373,45374,45375,45378,45379,45381,45382,
-45383,45385,45386,45387,45388,45389,45390,45391,45394,45395,45398,45399,45401,
-45402,45403,45405,45406,45407,45409,45410,45411,45412,45413,45414,45415,45416,
-45417,45418,45419,45420,45421,45422,45423,45424,45425,45426,45427,45428,45429,
-45430,45431,45434,45435,45437,45438,45439,45441,45443,45444,45445,45446,45447,
-45450,45452,45454,45455,45456,45457,45461,45462,45463,45465,45466,45467,45469,
-45470,45471,45472,45473,45474,45475,45476,45477,45478,45479,45481,45482,45483,
-45484,45485,45486,45487,45488,45489,45490,45491,45492,45493,45494,45495,45496,
-U,U,U,U,U,U,45497,45498,45499,45500,45501,45502,45503,45504,45505,45506,45507,
-45508,45509,45510,45511,45512,45513,45514,45515,45517,45518,45519,45521,45522,
-45523,45525,U,U,U,U,U,U,45526,45527,45528,45529,45530,45531,45534,45536,45537,
-45538,45539,45540,45541,45542,45543,45546,45547,45549,45550,45551,45553,45554,
-45555,45556,45557,45558,45559,45560,45562,45564,45566,45567,45568,45569,45570,
-45571,45574,45575,45577,45578,45581,45582,45583,45584,45585,45586,45587,45590,
-45592,45594,45595,45596,45597,45598,45599,45601,45602,45603,45604,45605,45606,
-45607,45608,45609,45610,45611,45612,45613,45614,45615,45616,45617,45618,45619,
-45621,45622,45623,45624,45625,45626,45627,45629,45630,45631,45632,45633,45634,
-45635,45636,45637,45638,45639,45640,45641,45642,45643,45644,45645,45646,45647,
-45648,45649,45650,45651,45652,45653,45654,45655,45657,45658,45659,45661,45662,
-45663,45665,45666,45667,45668,45669,45670,45671,45674,45675,45676,45677,45678,
-45679,45680,45681,45682,45683,45686,45687,45688,45689,45690,45691,45693,45694,
-45695,45696,45697,45698,45699,45702,45703,45704,45706,45707,45708,45709,45710,
-U,U,U,U,U,U,45711,45714,45715,45717,45718,45719,45723,45724,45725,45726,45727,
-45730,45732,45735,45736,45737,45739,45741,45742,45743,45745,45746,45747,45749,
-45750,45751,U,U,U,U,U,U,45752,45753,45754,45755,45756,45757,45758,45759,45760,
-45761,45762,45763,45764,45765,45766,45767,45770,45771,45773,45774,45775,45777,
-45779,45780,45781,45782,45783,45786,45788,45790,45791,45792,45793,45795,45799,
-45801,45802,45808,45809,45810,45814,45820,45821,45822,45826,45827,45829,45830,
-45831,45833,45834,45835,45836,45837,45838,45839,45842,45846,45847,45848,45849,
-45850,45851,45853,45854,45855,45856,45857,45858,45859,45860,45861,45862,45863,
-45864,45865,45866,45867,45868,45869,45870,45871,45872,45873,45874,45875,45876,
-45877,45878,45879,45880,45881,45882,45883,45884,45885,45886,45887,45888,45889,
-45890,45891,45892,45893,45894,45895,45896,45897,45898,45899,45900,45901,45902,
-45903,45904,45905,45906,45907,45911,45913,45914,45917,45920,45921,45922,45923,
-45926,45928,45930,45932,45933,45935,45938,45939,45941,45942,45943,45945,45946,
-45947,45948,45949,45950,45951,45954,45958,45959,45960,45961,45962,45963,45965,
-U,U,U,U,U,U,45966,45967,45969,45970,45971,45973,45974,45975,45976,45977,45978,
-45979,45980,45981,45982,45983,45986,45987,45988,45989,45990,45991,45993,45994,
-45995,45997,U,U,U,U,U,U,45998,45999,46000,46001,46002,46003,46004,46005,46006,
-46007,46008,46009,46010,46011,46012,46013,46014,46015,46016,46017,46018,46019,
-46022,46023,46025,46026,46029,46031,46033,46034,46035,46038,46040,46042,46044,
-46046,46047,46049,46050,46051,46053,46054,46055,46057,46058,46059,46060,46061,
-46062,46063,46064,46065,46066,46067,46068,46069,46070,46071,46072,46073,46074,
-46075,46077,46078,46079,46080,46081,46082,46083,46084,46085,46086,46087,46088,
-46089,46090,46091,46092,46093,46094,46095,46097,46098,46099,46100,46101,46102,
-46103,46105,46106,46107,46109,46110,46111,46113,46114,46115,46116,46117,46118,
-46119,46122,46124,46125,46126,46127,46128,46129,46130,46131,46133,46134,46135,
-46136,46137,46138,46139,46140,46141,46142,46143,46144,46145,46146,46147,46148,
-46149,46150,46151,46152,46153,46154,46155,46156,46157,46158,46159,46162,46163,
-46165,46166,46167,46169,46170,46171,46172,46173,46174,46175,46178,46180,46182,
-U,U,U,U,U,U,46183,46184,46185,46186,46187,46189,46190,46191,46192,46193,46194,
-46195,46196,46197,46198,46199,46200,46201,46202,46203,46204,46205,46206,46207,
-46209,46210,U,U,U,U,U,U,46211,46212,46213,46214,46215,46217,46218,46219,46220,
-46221,46222,46223,46224,46225,46226,46227,46228,46229,46230,46231,46232,46233,
-46234,46235,46236,46238,46239,46240,46241,46242,46243,46245,46246,46247,46249,
-46250,46251,46253,46254,46255,46256,46257,46258,46259,46260,46262,46264,46266,
-46267,46268,46269,46270,46271,46273,46274,46275,46277,46278,46279,46281,46282,
-46283,46284,46285,46286,46287,46289,46290,46291,46292,46294,46295,46296,46297,
-46298,46299,46302,46303,46305,46306,46309,46311,46312,46313,46314,46315,46318,
-46320,46322,46323,46324,46325,46326,46327,46329,46330,46331,46332,46333,46334,
-46335,46336,46337,46338,46339,46340,46341,46342,46343,46344,46345,46346,46347,
-46348,46349,46350,46351,46352,46353,46354,46355,46358,46359,46361,46362,46365,
-46366,46367,46368,46369,46370,46371,46374,46379,46380,46381,46382,46383,46386,
-46387,46389,46390,46391,46393,46394,46395,46396,46397,46398,46399,46402,46406,
-U,U,U,U,U,U,46407,46408,46409,46410,46414,46415,46417,46418,46419,46421,46422,
-46423,46424,46425,46426,46427,46430,46434,46435,46436,46437,46438,46439,46440,
-46441,46442,U,U,U,U,U,U,46443,46444,46445,46446,46447,46448,46449,46450,46451,
-46452,46453,46454,46455,46456,46457,46458,46459,46460,46461,46462,46463,46464,
-46465,46466,46467,46468,46469,46470,46471,46472,46473,46474,46475,46476,46477,
-46478,46479,46480,46481,46482,46483,46484,46485,46486,46487,46488,46489,46490,
-46491,46492,46493,46494,46495,46498,46499,46501,46502,46503,46505,46508,46509,
-46510,46511,46514,46518,46519,46520,46521,46522,46526,46527,46529,46530,46531,
-46533,46534,46535,46536,46537,46538,46539,46542,46546,46547,46548,46549,46550,
-46551,46553,46554,46555,46556,46557,46558,46559,46560,46561,46562,46563,46564,
-46565,46566,46567,46568,46569,46570,46571,46573,46574,46575,46576,46577,46578,
-46579,46580,46581,46582,46583,46584,46585,46586,46587,46588,46589,46590,46591,
-46592,46593,46594,46595,46596,46597,46598,46599,46600,46601,46602,46603,46604,
-46605,46606,46607,46610,46611,46613,46614,46615,46617,46618,46619,46620,46621,
-U,U,U,U,U,U,46622,46623,46624,46625,46626,46627,46628,46630,46631,46632,46633,
-46634,46635,46637,46638,46639,46640,46641,46642,46643,46645,46646,46647,46648,
-46649,46650,U,U,U,U,U,U,46651,46652,46653,46654,46655,46656,46657,46658,46659,
-46660,46661,46662,46663,46665,46666,46667,46668,46669,46670,46671,46672,46673,
-46674,46675,46676,46677,46678,46679,46680,46681,46682,46683,46684,46685,46686,
-46687,46688,46689,46690,46691,46693,46694,46695,46697,46698,46699,46700,46701,
-46702,46703,46704,46705,46706,46707,46708,46709,46710,46711,46712,46713,46714,
-46715,46716,46717,46718,46719,46720,46721,46722,46723,46724,46725,46726,46727,
-46728,46729,46730,46731,46732,46733,46734,46735,46736,46737,46738,46739,46740,
-46741,46742,46743,46744,46745,46746,46747,46750,46751,46753,46754,46755,46757,
-46758,46759,46760,46761,46762,46765,46766,46767,46768,46770,46771,46772,46773,
-46774,46775,46776,46777,46778,46779,46780,46781,46782,46783,46784,46785,46786,
-46787,46788,46789,46790,46791,46792,46793,46794,46795,46796,46797,46798,46799,
-46800,46801,46802,46803,46805,46806,46807,46808,46809,46810,46811,46812,46813,
-U,U,U,U,U,U,46814,46815,46816,46817,46818,46819,46820,46821,46822,46823,46824,
-46825,46826,46827,46828,46829,46830,46831,46833,46834,46835,46837,46838,46839,
-46841,46842,U,U,U,U,U,U,46843,46844,46845,46846,46847,46850,46851,46852,46854,
-46855,46856,46857,46858,46859,46860,46861,46862,46863,46864,46865,46866,46867,
-46868,46869,46870,46871,46872,46873,46874,46875,46876,46877,46878,46879,46880,
-46881,46882,46883,46884,46885,46886,46887,46890,46891,46893,46894,46897,46898,
-46899,46900,46901,46902,46903,46906,46908,46909,46910,46911,46912,46913,46914,
-46915,46917,46918,46919,46921,46922,46923,46925,46926,46927,46928,46929,46930,
-46931,46934,46935,46936,46937,46938,46939,46940,46941,46942,46943,46945,46946,
-46947,46949,46950,46951,46953,46954,46955,46956,46957,46958,46959,46962,46964,
-46966,46967,46968,46969,46970,46971,46974,46975,46977,46978,46979,46981,46982,
-46983,46984,46985,46986,46987,46990,46995,46996,46997,47002,47003,47005,47006,
-47007,47009,47010,47011,47012,47013,47014,47015,47018,47022,47023,47024,47025,
-47026,47027,47030,47031,47033,47034,47035,47036,47037,47038,47039,47040,47041,
-U,U,U,U,U,U,47042,47043,47044,47045,47046,47048,47050,47051,47052,47053,47054,
-47055,47056,47057,47058,47059,47060,47061,47062,47063,47064,47065,47066,47067,
-47068,47069,U,U,U,U,U,U,47070,47071,47072,47073,47074,47075,47076,47077,47078,
-47079,47080,47081,47082,47083,47086,47087,47089,47090,47091,47093,47094,47095,
-47096,47097,47098,47099,47102,47106,47107,47108,47109,47110,47114,47115,47117,
-47118,47119,47121,47122,47123,47124,47125,47126,47127,47130,47132,47134,47135,
-47136,47137,47138,47139,47142,47143,47145,47146,47147,47149,47150,47151,47152,
-47153,47154,47155,47158,47162,47163,47164,47165,47166,47167,47169,47170,47171,
-47173,47174,47175,47176,47177,47178,47179,47180,47181,47182,47183,47184,47186,
-47188,47189,47190,47191,47192,47193,47194,47195,47198,47199,47201,47202,47203,
-47205,47206,47207,47208,47209,47210,47211,47214,47216,47218,47219,47220,47221,
-47222,47223,47225,47226,47227,47229,47230,47231,47232,47233,47234,47235,47236,
-47237,47238,47239,47240,47241,47242,47243,47244,47246,47247,47248,47249,47250,
-47251,47252,47253,47254,47255,47256,47257,47258,47259,47260,47261,47262,47263,
-U,U,U,U,U,U,47264,47265,47266,47267,47268,47269,47270,47271,47273,47274,47275,
-47276,47277,47278,47279,47281,47282,47283,47285,47286,47287,47289,47290,47291,
-47292,47293,U,U,U,U,U,U,47294,47295,47298,47300,47302,47303,47304,47305,47306,
-47307,47309,47310,47311,47313,47314,47315,47317,47318,47319,47320,47321,47322,
-47323,47324,47326,47328,47330,47331,47332,47333,47334,47335,47338,47339,47341,
-47342,47343,47345,47346,47347,47348,47349,47350,47351,47354,47356,47358,47359,
-47360,47361,47362,47363,47365,47366,47367,47368,47369,47370,47371,47372,47373,
-47374,47375,47376,47377,47378,47379,47380,47381,47382,47383,47385,47386,47387,
-47388,47389,47390,47391,47393,47394,47395,47396,47397,47398,47399,47400,47401,
-47402,47403,47404,47405,47406,47407,47408,47409,47410,47411,47412,47413,47414,
-47415,47416,47417,47418,47419,47422,47423,47425,47426,47427,47429,47430,47431,
-47432,47433,47434,47435,47437,47438,47440,47442,47443,47444,47445,47446,47447,
-47450,47451,47453,47454,47455,47457,47458,47459,47460,47461,47462,47463,47466,
-47468,47470,47471,47472,47473,47474,47475,47478,47479,47481,47482,47483,47485,
-U,U,U,U,U,U,47486,47487,47488,47489,47490,47491,47494,47496,47499,47500,47503,
-47504,47505,47506,47507,47508,47509,47510,47511,47512,47513,47514,47515,47516,
-47517,47518,U,U,U,U,U,U,47519,47520,47521,47522,47523,47524,47525,47526,47527,
-47528,47529,47530,47531,47534,47535,47537,47538,47539,47541,47542,47543,47544,
-47545,47546,47547,47550,47552,47554,47555,47556,47557,47558,47559,47562,47563,
-47565,47571,47572,47573,47574,47575,47578,47580,47583,47584,47586,47590,47591,
-47593,47594,47595,47597,47598,47599,47600,47601,47602,47603,47606,47611,47612,
-47613,47614,47615,47618,47619,47620,47621,47622,47623,47625,47626,47627,47628,
-47629,47630,47631,47632,47633,47634,47635,47636,47638,47639,47640,47641,47642,
-47643,47644,47645,47646,47647,47648,47649,47650,47651,47652,47653,47654,47655,
-47656,47657,47658,47659,47660,47661,47662,47663,47664,47665,47666,47667,47668,
-47669,47670,47671,47674,47675,47677,47678,47679,47681,47683,47684,47685,47686,
-47687,47690,47692,47695,47696,47697,47698,47702,47703,47705,47706,47707,47709,
-47710,47711,47712,47713,47714,47715,47718,47722,47723,47724,47725,47726,47727,
-U,U,U,U,U,U,47730,47731,47733,47734,47735,47737,47738,47739,47740,47741,47742,
-47743,47744,47745,47746,47750,47752,47753,47754,47755,47757,47758,47759,47760,
-47761,47762,U,U,U,U,U,U,47763,47764,47765,47766,47767,47768,47769,47770,47771,
-47772,47773,47774,47775,47776,47777,47778,47779,47780,47781,47782,47783,47786,
-47789,47790,47791,47793,47795,47796,47797,47798,47799,47802,47804,47806,47807,
-47808,47809,47810,47811,47813,47814,47815,47817,47818,47819,47820,47821,47822,
-47823,47824,47825,47826,47827,47828,47829,47830,47831,47834,47835,47836,47837,
-47838,47839,47840,47841,47842,47843,47844,47845,47846,47847,47848,47849,47850,
-47851,47852,47853,47854,47855,47856,47857,47858,47859,47860,47861,47862,47863,
-47864,47865,47866,47867,47869,47870,47871,47873,47874,47875,47877,47878,47879,
-47880,47881,47882,47883,47884,47886,47888,47890,47891,47892,47893,47894,47895,
-47897,47898,47899,47901,47902,47903,47905,47906,47907,47908,47909,47910,47911,
-47912,47914,47916,47917,47918,47919,47920,47921,47922,47923,47927,47929,47930,
-47935,47936,47937,47938,47939,47942,47944,47946,47947,47948,47950,47953,47954,
-U,U,U,U,U,U,47955,47957,47958,47959,47961,47962,47963,47964,47965,47966,47967,
-47968,47970,47972,47973,47974,47975,47976,47977,47978,47979,47981,47982,47983,
-47984,47985,U,U,U,U,U,U,47986,47987,47988,47989,47990,47991,47992,47993,47994,
-47995,47996,47997,47998,47999,48000,48001,48002,48003,48004,48005,48006,48007,
-48009,48010,48011,48013,48014,48015,48017,48018,48019,48020,48021,48022,48023,
-48024,48025,48026,48027,48028,48029,48030,48031,48032,48033,48034,48035,48037,
-48038,48039,48041,48042,48043,48045,48046,48047,48048,48049,48050,48051,48053,
-48054,48056,48057,48058,48059,48060,48061,48062,48063,48065,48066,48067,48069,
-48070,48071,48073,48074,48075,48076,48077,48078,48079,48081,48082,48084,48085,
-48086,48087,48088,48089,48090,48091,48092,48093,48094,48095,48096,48097,48098,
-48099,48100,48101,48102,48103,48104,48105,48106,48107,48108,48109,48110,48111,
-48112,48113,48114,48115,48116,48117,48118,48119,48122,48123,48125,48126,48129,
-48131,48132,48133,48134,48135,48138,48142,48144,48146,48147,48153,48154,48160,
-48161,48162,48163,48166,48168,48170,48171,48172,48174,48175,48178,48179,48181,
-U,U,U,U,U,U,48182,48183,48185,48186,48187,48188,48189,48190,48191,48194,48198,
-48199,48200,48202,48203,48206,48207,48209,48210,48211,48212,48213,48214,48215,
-48216,48217,U,U,U,U,U,U,48218,48219,48220,48222,48223,48224,48225,48226,48227,
-48228,48229,48230,48231,48232,48233,48234,48235,48236,48237,48238,48239,48240,
-48241,48242,48243,48244,48245,48246,48247,48248,48249,48250,48251,48252,48253,
-48254,48255,48256,48257,48258,48259,48262,48263,48265,48266,48269,48271,48272,
-48273,48274,48275,48278,48280,48283,48284,48285,48286,48287,48290,48291,48293,
-48294,48297,48298,48299,48300,48301,48302,48303,48306,48310,48311,48312,48313,
-48314,48315,48318,48319,48321,48322,48323,48325,48326,48327,48328,48329,48330,
-48331,48332,48334,48338,48339,48340,48342,48343,48345,48346,48347,48349,48350,
-48351,48352,48353,48354,48355,48356,48357,48358,48359,48360,48361,48362,48363,
-48364,48365,48366,48367,48368,48369,48370,48371,48375,48377,48378,48379,48381,
-48382,48383,48384,48385,48386,48387,48390,48392,48394,48395,48396,48397,48398,
-48399,48401,48402,48403,48405,48406,48407,48408,48409,48410,48411,48412,48413,
-U,U,U,U,U,U,48414,48415,48416,48417,48418,48419,48421,48422,48423,48424,48425,
-48426,48427,48429,48430,48431,48432,48433,48434,48435,48436,48437,48438,48439,
-48440,48441,U,U,U,U,U,U,48442,48443,48444,48445,48446,48447,48449,48450,48451,
-48452,48453,48454,48455,48458,48459,48461,48462,48463,48465,48466,48467,48468,
-48469,48470,48471,48474,48475,48476,48477,48478,48479,48480,48481,48482,48483,
-48485,48486,48487,48489,48490,48491,48492,48493,48494,48495,48496,48497,48498,
-48499,48500,48501,48502,48503,48504,48505,48506,48507,48508,48509,48510,48511,
-48514,48515,48517,48518,48523,48524,48525,48526,48527,48530,48532,48534,48535,
-48536,48539,48541,48542,48543,48544,48545,48546,48547,48549,48550,48551,48552,
-48553,48554,48555,48556,48557,48558,48559,48561,48562,48563,48564,48565,48566,
-48567,48569,48570,48571,48572,48573,48574,48575,48576,48577,48578,48579,48580,
-48581,48582,48583,48584,48585,48586,48587,48588,48589,48590,48591,48592,48593,
-48594,48595,48598,48599,48601,48602,48603,48605,48606,48607,48608,48609,48610,
-48611,48612,48613,48614,48615,48616,48618,48619,48620,48621,48622,48623,48625,
-U,U,U,U,U,U,48626,48627,48629,48630,48631,48633,48634,48635,48636,48637,48638,
-48639,48641,48642,48644,48646,48647,48648,48649,48650,48651,48654,48655,48657,
-48658,48659,U,U,U,U,U,U,48661,48662,48663,48664,48665,48666,48667,48670,48672,
-48673,48674,48675,48676,48677,48678,48679,48680,48681,48682,48683,48684,48685,
-48686,48687,48688,48689,48690,48691,48692,48693,48694,48695,48696,48697,48698,
-48699,48700,48701,48702,48703,48704,48705,48706,48707,48710,48711,48713,48714,
-48715,48717,48719,48720,48721,48722,48723,48726,48728,48732,48733,48734,48735,
-48738,48739,48741,48742,48743,48745,48747,48748,48749,48750,48751,48754,48758,
-48759,48760,48761,48762,48766,48767,48769,48770,48771,48773,48774,48775,48776,
-48777,48778,48779,48782,48786,48787,48788,48789,48790,48791,48794,48795,48796,
-48797,48798,48799,48800,48801,48802,48803,48804,48805,48806,48807,48809,48810,
-48811,48812,48813,48814,48815,48816,48817,48818,48819,48820,48821,48822,48823,
-48824,48825,48826,48827,48828,48829,48830,48831,48832,48833,48834,48835,48836,
-48837,48838,48839,48840,48841,48842,48843,48844,48845,48846,48847,48850,48851,
-U,U,U,U,U,U,48853,48854,48857,48858,48859,48860,48861,48862,48863,48865,48866,
-48870,48871,48872,48873,48874,48875,48877,48878,48879,48880,48881,48882,48883,
-48884,48885,U,U,U,U,U,U,48886,48887,48888,48889,48890,48891,48892,48893,48894,
-48895,48896,48898,48899,48900,48901,48902,48903,48906,48907,48908,48909,48910,
-48911,48912,48913,48914,48915,48916,48917,48918,48919,48922,48926,48927,48928,
-48929,48930,48931,48932,48933,48934,48935,48936,48937,48938,48939,48940,48941,
-48942,48943,48944,48945,48946,48947,48948,48949,48950,48951,48952,48953,48954,
-48955,48956,48957,48958,48959,48962,48963,48965,48966,48967,48969,48970,48971,
-48972,48973,48974,48975,48978,48979,48980,48982,48983,48984,48985,48986,48987,
-48988,48989,48990,48991,48992,48993,48994,48995,48996,48997,48998,48999,49000,
-49001,49002,49003,49004,49005,49006,49007,49008,49009,49010,49011,49012,49013,
-49014,49015,49016,49017,49018,49019,49020,49021,49022,49023,49024,49025,49026,
-49027,49028,49029,49030,49031,49032,49033,49034,49035,49036,49037,49038,49039,
-49040,49041,49042,49043,49045,49046,49047,49048,49049,49050,49051,49052,49053,
-U,U,U,U,U,U,49054,49055,49056,49057,49058,49059,49060,49061,49062,49063,49064,
-49065,49066,49067,49068,49069,49070,49071,49073,49074,49075,49076,49077,49078,
-49079,49080,U,U,U,U,U,U,49081,49082,49083,49084,49085,49086,49087,49088,49089,
-49090,49091,49092,49094,49095,49096,49097,49098,49099,49102,49103,49105,49106,
-49107,49109,49110,49111,49112,49113,49114,49115,49117,49118,49120,49122,49123,
-49124,49125,49126,49127,49128,49129,49130,49131,49132,49133,49134,49135,49136,
-49137,49138,49139,49140,49141,49142,49143,49144,49145,49146,49147,49148,49149,
-49150,49151,49152,49153,49154,49155,49156,49157,49158,49159,49160,49161,49162,
-49163,49164,49165,49166,49167,49168,49169,49170,49171,49172,49173,49174,49175,
-49176,49177,49178,49179,49180,49181,49182,49183,49184,49185,49186,49187,49188,
-49189,49190,49191,49192,49193,49194,49195,49196,49197,49198,49199,49200,49201,
-49202,49203,49204,49205,49206,49207,49208,49209,49210,49211,49213,49214,49215,
-49216,49217,49218,49219,49220,49221,49222,49223,49224,49225,49226,49227,49228,
-49229,49230,49231,49232,49234,49235,49236,49237,49238,49239,49241,49242,49243,
-U,U,U,U,U,U,49245,49246,49247,49249,49250,49251,49252,49253,49254,49255,49258,
-49259,49260,49261,49262,49263,49264,49265,49266,49267,49268,49269,49270,49271,
-49272,49273,U,U,U,U,U,U,49274,49275,49276,49277,49278,49279,49280,49281,49282,
-49283,49284,49285,49286,49287,49288,49289,49290,49291,49292,49293,49294,49295,
-49298,49299,49301,49302,49303,49305,49306,49307,49308,49309,49310,49311,49314,
-49316,49318,49319,49320,49321,49322,49323,49326,49329,49330,49335,49336,49337,
-49338,49339,49342,49346,49347,49348,49350,49351,49354,49355,49357,49358,49359,
-49361,49362,49363,49364,49365,49366,49367,49370,49374,49375,49376,49377,49378,
-49379,49382,49383,49385,49386,49387,49389,49390,49391,49392,49393,49394,49395,
-49398,49400,49402,49403,49404,49405,49406,49407,49409,49410,49411,49413,49414,
-49415,49417,49418,49419,49420,49421,49422,49423,49425,49426,49427,49428,49430,
-49431,49432,49433,49434,49435,49441,49442,49445,49448,49449,49450,49451,49454,
-49458,49459,49460,49461,49463,49466,49467,49469,49470,49471,49473,49474,49475,
-49476,49477,49478,49479,49482,49486,49487,49488,49489,49490,49491,49494,49495,
-U,U,U,U,U,U,49497,49498,49499,49501,49502,49503,49504,49505,49506,49507,49510,
-49514,49515,49516,49517,49518,49519,49521,49522,49523,49525,49526,49527,49529,
-49530,49531,U,U,U,U,U,U,49532,49533,49534,49535,49536,49537,49538,49539,49540,
-49542,49543,49544,49545,49546,49547,49551,49553,49554,49555,49557,49559,49560,
-49561,49562,49563,49566,49568,49570,49571,49572,49574,49575,49578,49579,49581,
-49582,49583,49585,49586,49587,49588,49589,49590,49591,49592,49593,49594,49595,
-49596,49598,49599,49600,49601,49602,49603,49605,49606,49607,49609,49610,49611,
-49613,49614,49615,49616,49617,49618,49619,49621,49622,49625,49626,49627,49628,
-49629,49630,49631,49633,49634,49635,49637,49638,49639,49641,49642,49643,49644,
-49645,49646,49647,49650,49652,49653,49654,49655,49656,49657,49658,49659,49662,
-49663,49665,49666,49667,49669,49670,49671,49672,49673,49674,49675,49678,49680,
-49682,49683,49684,49685,49686,49687,49690,49691,49693,49694,49697,49698,49699,
-49700,49701,49702,49703,49706,49708,49710,49712,49715,49717,49718,49719,49720,
-49721,49722,49723,49724,49725,49726,49727,49728,49729,49730,49731,49732,49733,
-U,U,U,U,U,U,49734,49735,49737,49738,49739,49740,49741,49742,49743,49746,49747,
-49749,49750,49751,49753,49754,49755,49756,49757,49758,49759,49761,49762,49763,
-49764,49766,U,U,U,U,U,U,49767,49768,49769,49770,49771,49774,49775,49777,49778,
-49779,49781,49782,49783,49784,49785,49786,49787,49790,49792,49794,49795,49796,
-49797,49798,49799,49802,49803,49804,49805,49806,49807,49809,49810,49811,49812,
-49813,49814,49815,49817,49818,49820,49822,49823,49824,49825,49826,49827,49830,
-49831,49833,49834,49835,49838,49839,49840,49841,49842,49843,49846,49848,49850,
-49851,49852,49853,49854,49855,49856,49857,49858,49859,49860,49861,49862,49863,
-49864,49865,49866,49867,49868,49869,49870,49871,49872,49873,49874,49875,49876,
-49877,49878,49879,49880,49881,49882,49883,49886,49887,49889,49890,49893,49894,
-49895,49896,49897,49898,49902,49904,49906,49907,49908,49909,49911,49914,49917,
-49918,49919,49921,49922,49923,49924,49925,49926,49927,49930,49931,49934,49935,
-49936,49937,49938,49942,49943,49945,49946,49947,49949,49950,49951,49952,49953,
-49954,49955,49958,49959,49962,49963,49964,49965,49966,49967,49968,49969,49970,
-U,U,U,U,U,U,49971,49972,49973,49974,49975,49976,49977,49978,49979,49980,49981,
-49982,49983,49984,49985,49986,49987,49988,49990,49991,49992,49993,49994,49995,
-49996,49997,U,U,U,U,U,U,49998,49999,50000,50001,50002,50003,50004,50005,50006,
-50007,50008,50009,50010,50011,50012,50013,50014,50015,50016,50017,50018,50019,
-50020,50021,50022,50023,50026,50027,50029,50030,50031,50033,50035,50036,50037,
-50038,50039,50042,50043,50046,50047,50048,50049,50050,50051,50053,50054,50055,
-50057,50058,50059,50061,50062,50063,50064,50065,50066,50067,50068,50069,50070,
-50071,50072,50073,50074,50075,50076,50077,50078,50079,50080,50081,50082,50083,
-50084,50085,50086,50087,50088,50089,50090,50091,50092,50093,50094,50095,50096,
-50097,50098,50099,50100,50101,50102,50103,50104,50105,50106,50107,50108,50109,
-50110,50111,50113,50114,50115,50116,50117,50118,50119,50120,50121,50122,50123,
-50124,50125,50126,50127,50128,50129,50130,50131,50132,50133,50134,50135,50138,
-50139,50141,50142,50145,50147,50148,50149,50150,50151,50154,50155,50156,50158,
-50159,50160,50161,50162,50163,50166,50167,50169,50170,50171,50172,50173,50174,
-U,U,U,U,U,U,50175,50176,50177,50178,50179,50180,50181,50182,50183,50185,50186,
-50187,50188,50189,50190,50191,50193,50194,50195,50196,50197,50198,50199,50200,
-50201,50202,U,U,U,U,U,U,50203,50204,50205,50206,50207,50208,50209,50210,50211,
-50213,50214,50215,50216,50217,50218,50219,50221,50222,50223,50225,50226,50227,
-50229,50230,50231,50232,50233,50234,50235,50238,50239,50240,50241,50242,50243,
-50244,50245,50246,50247,50249,50250,50251,50252,50253,50254,50255,50256,50257,
-50258,50259,50260,50261,50262,50263,50264,50265,50266,50267,50268,50269,50270,
-50271,50272,50273,50274,50275,50278,50279,50281,50282,50283,50285,50286,50287,
-50288,50289,50290,50291,50294,50295,50296,50298,50299,50300,50301,50302,50303,
-50305,50306,50307,50308,50309,50310,50311,50312,50313,50314,50315,50316,50317,
-50318,50319,50320,50321,50322,50323,50325,50326,50327,50328,50329,50330,50331,
-50333,50334,50335,50336,50337,50338,50339,50340,50341,50342,50343,50344,50345,
-50346,50347,50348,50349,50350,50351,50352,50353,50354,50355,50356,50357,50358,
-50359,50361,50362,50363,50365,50366,50367,50368,50369,50370,50371,50372,50373,
-U,U,U,U,U,U,50374,50375,50376,50377,50378,50379,50380,50381,50382,50383,50384,
-50385,50386,50387,50388,50389,50390,50391,50392,50393,50394,50395,50396,50397,
-50398,50399,U,U,U,U,U,U,50400,50401,50402,50403,50404,50405,50406,50407,50408,
-50410,50411,50412,50413,50414,50415,50418,50419,50421,50422,50423,50425,50427,
-50428,50429,50430,50434,50435,50436,50437,50438,50439,50440,50441,50442,50443,
-50445,50446,50447,50449,50450,50451,50453,50454,50455,50456,50457,50458,50459,
-50461,50462,50463,50464,50465,50466,50467,50468,50469,50470,50471,50474,50475,
-50477,50478,50479,50481,50482,50483,50484,50485,50486,50487,50490,50492,50494,
-50495,50496,50497,50498,50499,50502,50503,50507,50511,50512,50513,50514,50518,
-50522,50523,50524,50527,50530,50531,50533,50534,50535,50537,50538,50539,50540,
-50541,50542,50543,50546,50550,50551,50552,50553,50554,50555,50558,50559,50561,
-50562,50563,50565,50566,50568,50569,50570,50571,50574,50576,50578,50579,50580,
-50582,50585,50586,50587,50589,50590,50591,50593,50594,50595,50596,50597,50598,
-50599,50600,50602,50603,50604,50605,50606,50607,50608,50609,50610,50611,50614,
-U,U,U,U,U,U,50615,50618,50623,50624,50625,50626,50627,50635,50637,50639,50642,
-50643,50645,50646,50647,50649,50650,50651,50652,50653,50654,50655,50658,50660,
-50662,50663,U,U,U,U,U,U,50664,50665,50666,50667,50671,50673,50674,50675,50677,
-50680,50681,50682,50683,50690,50691,50692,50697,50698,50699,50701,50702,50703,
-50705,50706,50707,50708,50709,50710,50711,50714,50717,50718,50719,50720,50721,
-50722,50723,50726,50727,50729,50730,50731,50735,50737,50738,50742,50744,50746,
-50748,50749,50750,50751,50754,50755,50757,50758,50759,50761,50762,50763,50764,
-50765,50766,50767,50770,50774,50775,50776,50777,50778,50779,50782,50783,50785,
-50786,50787,50788,50789,50790,50791,50792,50793,50794,50795,50797,50798,50800,
-50802,50803,50804,50805,50806,50807,50810,50811,50813,50814,50815,50817,50818,
-50819,50820,50821,50822,50823,50826,50828,50830,50831,50832,50833,50834,50835,
-50838,50839,50841,50842,50843,50845,50846,50847,50848,50849,50850,50851,50854,
-50856,50858,50859,50860,50861,50862,50863,50866,50867,50869,50870,50871,50875,
-50876,50877,50878,50879,50882,50884,50886,50887,50888,50889,50890,50891,50894,
-U,U,U,U,U,U,50895,50897,50898,50899,50901,50902,50903,50904,50905,50906,50907,
-50910,50911,50914,50915,50916,50917,50918,50919,50922,50923,50925,50926,50927,
-50929,50930,U,U,U,U,U,U,50931,50932,50933,50934,50935,50938,50939,50940,50942,
-50943,50944,50945,50946,50947,50950,50951,50953,50954,50955,50957,50958,50959,
-50960,50961,50962,50963,50966,50968,50970,50971,50972,50973,50974,50975,50978,
-50979,50981,50982,50983,50985,50986,50987,50988,50989,50990,50991,50994,50996,
-50998,51000,51001,51002,51003,51006,51007,51009,51010,51011,51013,51014,51015,
-51016,51017,51019,51022,51024,51033,51034,51035,51037,51038,51039,51041,51042,
-51043,51044,51045,51046,51047,51049,51050,51052,51053,51054,51055,51056,51057,
-51058,51059,51062,51063,51065,51066,51067,51071,51072,51073,51074,51078,51083,
-51084,51085,51087,51090,51091,51093,51097,51099,51100,51101,51102,51103,51106,
-51111,51112,51113,51114,51115,51118,51119,51121,51122,51123,51125,51126,51127,
-51128,51129,51130,51131,51134,51138,51139,51140,51141,51142,51143,51146,51147,
-51149,51151,51153,51154,51155,51156,51157,51158,51159,51161,51162,51163,51164,
-U,U,U,U,U,U,51166,51167,51168,51169,51170,51171,51173,51174,51175,51177,51178,
-51179,51181,51182,51183,51184,51185,51186,51187,51188,51189,51190,51191,51192,
-51193,51194,U,U,U,U,U,U,51195,51196,51197,51198,51199,51202,51203,51205,51206,
-51207,51209,51211,51212,51213,51214,51215,51218,51220,51223,51224,51225,51226,
-51227,51230,51231,51233,51234,51235,51237,51238,51239,51240,51241,51242,51243,
-51246,51248,51250,51251,51252,51253,51254,51255,51257,51258,51259,51261,51262,
-51263,51265,51266,51267,51268,51269,51270,51271,51274,51275,51278,51279,51280,
-51281,51282,51283,51285,51286,51287,51288,51289,51290,51291,51292,51293,51294,
-51295,51296,51297,51298,51299,51300,51301,51302,51303,51304,51305,51306,51307,
-51308,51309,51310,51311,51314,51315,51317,51318,51319,51321,51323,51324,51325,
-51326,51327,51330,51332,51336,51337,51338,51342,51343,51344,51345,51346,51347,
-51349,51350,51351,51352,51353,51354,51355,51356,51358,51360,51362,51363,51364,
-51365,51366,51367,51369,51370,51371,51372,51373,51374,51375,51376,51377,51378,
-51379,51380,51381,51382,51383,51384,51385,51386,51387,51390,51391,51392,51393,
-U,U,U,U,U,U,51394,51395,51397,51398,51399,51401,51402,51403,51405,51406,51407,
-51408,51409,51410,51411,51414,51416,51418,51419,51420,51421,51422,51423,51426,
-51427,51429,U,U,U,U,U,U,51430,51431,51432,51433,51434,51435,51436,51437,51438,
-51439,51440,51441,51442,51443,51444,51446,51447,51448,51449,51450,51451,51454,
-51455,51457,51458,51459,51463,51464,51465,51466,51467,51470,51472,51474,51475,
-51476,51477,51478,51479,51481,51482,51483,51484,51485,51486,51487,51488,51489,
-51490,51491,51492,51493,51494,51495,51496,51497,51498,51499,U,U,U,U,U,U,51501,
-51502,51503,51504,51505,51506,51507,51509,51510,51511,51512,51513,51514,51515,
-51516,51517,51518,51519,51520,51521,51522,51523,51524,51525,51526,51527,U,U,U,
-U,U,U,51528,51529,51530,51531,51532,51533,51534,51535,51538,51539,51541,51542,
-51543,51545,51546,51547,51548,51549,51550,51551,51554,51556,51557,51558,51559,
-51560,51561,51562,51563,51565,51566,51567,51569,51570,51571,51573,51574,51575,
-51576,51577,51578,51579,51581,51582,51583,51584,51585,51586,51587,51588,51589,
-51590,51591,51594,51595,51597,51598,51599,U,U,U,U,U,U,51601,51602,51603,51604,
-51605,51606,51607,51610,51612,51614,51615,51616,51617,51618,51619,51620,51621,
-51622,51623,51624,51625,51626,51627,51628,51629,51630,U,U,U,U,U,U,51631,51632,
-51633,51634,51635,51636,51637,51638,51639,51640,51641,51642,51643,51644,51645,
-51646,51647,51650,51651,51653,51654,51657,51659,51660,51661,51662,51663,51666,
-51668,51671,51672,51675,51678,51679,51681,51683,51685,51686,51688,51689,51690,
-51691,51694,51698,51699,51700,51701,51702,51703,51706,51707,51709,51710,51711,
-51713,51714,51715,51716,U,U,U,U,U,U,51717,51718,51719,51722,51726,51727,51728,
-51729,51730,51731,51733,51734,51735,51737,51738,51739,51740,51741,51742,51743,
-51744,51745,51746,51747,51748,51749,U,U,U,U,U,U,51750,51751,51752,51754,51755,
-51756,51757,51758,51759,51760,51761,51762,51763,51764,51765,51766,51767,51768,
-51769,51770,51771,51772,51773,51774,51775,51776,51777,51778,51779,51780,51781,
-51782,51783,51784,51785,51786,51787,51790,51791,51793,51794,51795,51797,51798,
-51799,51800,51801,51802,51803,51806,51810,51811,51812,51813,51814,51815,51817,
-51818,U,U,U,U,U,U,51819,51820,51821,51822,51823,51824,51825,51826,51827,51828,
-51829,51830,51831,51832,51833,51834,51835,51836,51838,51839,51840,51841,51842,
-51843,51845,51846,U,U,U,U,U,U,51847,51848,51849,51850,51851,51852,51853,51854,
-51855,51856,51857,51858,51859,51860,51861,51862,51863,51865,51866,51867,51868,
-51869,51870,51871,51872,51873,51874,51875,51876,51877,51878,51879,51880,51881,
-51882,51883,51884,51885,51886,51887,51888,51889,51890,51891,51892,51893,51894,
-51895,51896,51897,51898,51899,51902,51903,51905,51906,51907,51909,U,U,U,U,U,U,
-51910,51911,51912,51913,51914,51915,51918,51920,51922,51924,51925,51926,51927,
-51930,51931,51932,51933,51934,51935,51937,51938,51939,51940,51941,51942,51943,
-U,U,U,U,U,U,51944,51945,51946,51947,51949,51950,51951,51952,51953,51954,51955,
-51957,51958,51959,51960,51961,51962,51963,51964,51965,51966,51967,51968,51969,
-51970,51971,51972,51973,51974,51975,51977,51978,51979,51980,51981,51982,51983,
-51985,51986,51987,51989,51990,51991,51993,51994,51995,51996,51997,51998,51999,
-52002,52003,52004,52005,52006,52007,52008,52009,U,U,U,U,U,U,52010,52011,52012,
-52013,52014,52015,52016,52017,52018,52019,52020,52021,52022,52023,52024,52025,
-52026,52027,52028,52029,52030,52031,52032,52034,52035,52036,U,U,U,U,U,U,52037,
-52038,52039,52042,52043,52045,52046,52047,52049,52050,52051,52052,52053,52054,
-52055,52058,52059,52060,52062,52063,52064,52065,52066,52067,52069,52070,52071,
-52072,52073,52074,52075,52076,52077,52078,52079,52080,52081,52082,52083,52084,
-52085,52086,52087,52090,52091,52092,52093,52094,52095,52096,52097,52098,52099,
-52100,52101,52102,52103,52104,U,U,U,U,U,U,52105,52106,52107,52108,52109,52110,
-52111,52112,52113,52114,52115,52116,52117,52118,52119,52120,52121,52122,52123,
-52125,52126,52127,52128,52129,52130,52131,U,U,U,U,U,U,52132,52133,52134,52135,
-52136,52137,52138,52139,52140,52141,52142,52143,52144,52145,52146,52147,52148,
-52149,52150,52151,52153,52154,52155,52156,52157,52158,52159,52160,52161,52162,
-52163,52164,52165,52166,52167,52168,52169,52170,52171,52172,52173,52174,52175,
-52176,52177,52178,52179,52181,52182,52183,52184,52185,52186,52187,52188,52189,
-52190,52191,U,U,U,U,U,U,52192,52193,52194,52195,52197,52198,52200,52202,52203,
-52204,52205,52206,52207,52208,52209,52210,52211,52212,52213,52214,52215,52216,
-52217,52218,52219,52220,U,U,U,U,U,U,52221,52222,52223,52224,52225,52226,52227,
-52228,52229,52230,52231,52232,52233,52234,52235,52238,52239,52241,52242,52243,
-52245,52246,52247,52248,52249,52250,52251,52254,52255,52256,52259,52260,52261,
-52262,52266,52267,52269,52271,52273,52274,52275,52276,52277,52278,52279,52282,
-52287,52288,52289,52290,52291,52294,52295,52297,52298,52299,52301,52302,U,U,U,
-U,U,U,52303,52304,52305,52306,52307,52310,52314,52315,52316,52317,52318,52319,
-52321,52322,52323,52325,52327,52329,52330,52331,52332,52333,52334,52335,52337,
-52338,U,U,U,U,U,U,52339,52340,52342,52343,52344,52345,52346,52347,52348,52349,
-52350,52351,52352,52353,52354,52355,52356,52357,52358,52359,52360,52361,52362,
-52363,52364,52365,52366,52367,52368,52369,52370,52371,52372,52373,52374,52375,
-52378,52379,52381,52382,52383,52385,52386,52387,52388,52389,52390,52391,52394,
-52398,52399,52400,52401,52402,52403,52406,52407,52409,U,U,U,U,U,U,52410,52411,
-52413,52414,52415,52416,52417,52418,52419,52422,52424,52426,52427,52428,52429,
-52430,52431,52433,52434,52435,52437,52438,52439,52440,52441,52442,U,U,U,U,U,U,
-52443,52444,52445,52446,52447,52448,52449,52450,52451,52453,52454,52455,52456,
-52457,52458,52459,52461,52462,52463,52465,52466,52467,52468,52469,52470,52471,
-52472,52473,52474,52475,52476,52477,52478,52479,52480,52482,52483,52484,52485,
-52486,52487,52490,52491,52493,52494,52495,52497,52498,52499,52500,52501,52502,
-52503,52506,52508,52510,52511,52512,U,U,U,U,U,U,52513,52514,52515,52517,52518,
-52519,52521,52522,52523,52525,52526,52527,52528,52529,52530,52531,52532,52533,
-52534,52535,52536,52538,52539,52540,52541,52542,U,U,U,U,U,U,52543,52544,52545,
-52546,52547,52548,52549,52550,52551,52552,52553,52554,52555,52556,52557,52558,
-52559,52560,52561,52562,52563,52564,52565,52566,52567,52568,52569,52570,52571,
-52573,52574,52575,52577,52578,52579,52581,52582,52583,52584,52585,52586,52587,
-52590,52592,52594,52595,52596,52597,52598,52599,52601,52602,52603,52604,52605,
-52606,52607,52608,U,U,U,U,U,U,52609,52610,52611,52612,52613,52614,52615,52617,
-52618,52619,52620,52621,52622,52623,52624,52625,52626,52627,52630,52631,52633,
-52634,52635,52637,52638,52639,U,U,U,U,U,U,52640,52641,52642,52643,52646,52648,
-52650,52651,52652,52653,52654,52655,52657,52658,52659,52660,52661,52662,52663,
-52664,52665,52666,52667,52668,52669,52670,52671,52672,52673,52674,52675,52677,
-52678,52679,52680,52681,52682,52683,52685,52686,52687,52689,52690,52691,52692,
-52693,52694,52695,52696,52697,52698,52699,52700,52701,52702,52703,52704,52705,
-U,U,U,U,U,U,52706,52707,52708,52709,52710,52711,52713,52714,52715,52717,52718,
-52719,52721,52722,52723,52724,52725,52726,52727,52730,52732,52734,52735,52736,
-52737,52738,U,U,U,U,U,U,52739,52741,52742,52743,52745,52746,52747,52749,52750,
-52751,52752,52753,52754,52755,52757,52758,52759,52760,52762,52763,52764,52765,
-52766,52767,52770,52771,52773,52774,52775,52777,52778,52779,52780,52781,52782,
-52783,52786,52788,52790,52791,52792,52793,52794,52795,52796,52797,52798,52799,
-52800,52801,52802,52803,52804,52805,52806,52807,52808,52809,U,U,U,U,U,U,52810,
-52811,52812,52813,52814,52815,52816,52817,52818,52819,52820,52821,52822,52823,
-52826,52827,52829,52830,52834,52835,52836,52837,52838,52839,52842,52844,U,U,U,
-U,U,U,52846,52847,52848,52849,52850,52851,52854,52855,52857,52858,52859,52861,
-52862,52863,52864,52865,52866,52867,52870,52872,52874,52875,52876,52877,52878,
-52879,52882,52883,52885,52886,52887,52889,52890,52891,52892,52893,52894,52895,
-52898,52902,52903,52904,52905,52906,52907,52910,52911,52912,52913,52914,52915,
-52916,52917,52918,52919,52920,52921,52922,U,U,U,U,U,U,52923,52924,52925,52926,
-52927,52928,52930,52931,52932,52933,52934,52935,52936,52937,52938,52939,52940,
-52941,52942,52943,52944,52945,52946,52947,52948,52949,U,U,U,U,U,U,52950,52951,
-52952,52953,52954,52955,52956,52957,52958,52959,52960,52961,52962,52963,52966,
-52967,52969,52970,52973,52974,52975,52976,52977,52978,52979,52982,52986,52987,
-52988,52989,52990,52991,52994,52995,52997,52998,52999,53001,53002,53003,53004,
-53005,53006,53007,53010,53012,53014,53015,53016,53017,53018,53019,53021,53022,
-53023,53025,53026,53027,U,U,U,U,U,U,53029,53030,53031,53032,53033,53034,53035,
-53038,53042,53043,53044,53045,53046,53047,53049,53050,53051,53052,53053,53054,
-53055,53056,53057,53058,53059,53060,U,U,U,U,U,U,53061,53062,53063,53064,53065,
-53066,53067,53068,53069,53070,53071,53072,53073,53074,53075,53078,53079,53081,
-53082,53083,53085,53086,53087,53088,53089,53090,53091,53094,53096,53098,53099,
-53100,53101,53102,53103,53106,53107,53109,53110,53111,53113,53114,53115,53116,
-53117,53118,53119,53121,53122,53123,53124,53126,53127,53128,53129,53130,53131,
-53133,U,U,U,U,U,U,53134,53135,53136,53137,53138,53139,53140,53141,53142,53143,
-53144,53145,53146,53147,53148,53149,53150,53151,53152,53154,53155,53156,53157,
-53158,53159,53161,U,U,U,U,U,U,53162,53163,53164,53165,53166,53167,53169,53170,
-53171,53172,53173,53174,53175,53176,53177,53178,53179,53180,53181,53182,53183,
-53184,53185,53186,53187,53189,53190,53191,53192,53193,53194,53195,53196,53197,
-53198,53199,53200,53201,53202,53203,53204,53205,53206,53207,53208,53209,53210,
-53211,53212,53213,53214,53215,53218,53219,53221,53222,53223,53225,U,U,U,U,U,U,
-53226,53227,53228,53229,53230,53231,53234,53236,53238,53239,53240,53241,53242,
-53243,53245,53246,53247,53249,53250,53251,53253,53254,53255,53256,53257,53258,
-U,U,U,U,U,U,53259,53260,53261,53262,53263,53264,53266,53267,53268,53269,53270,
-53271,53273,53274,53275,53276,53277,53278,53279,53280,53281,53282,53283,53284,
-53285,53286,53287,53288,53289,53290,53291,53292,53294,53295,53296,53297,53298,
-53299,53302,53303,53305,53306,53307,53309,53310,53311,53312,53313,53314,53315,
-53318,53320,53322,53323,53324,53325,53326,53327,U,U,U,U,U,U,53329,53330,53331,
-53333,53334,53335,53337,53338,53339,53340,53341,53342,53343,53345,53346,53347,
-53348,53349,53350,53351,53352,53353,53354,53355,53358,53359,U,U,U,U,U,U,53361,
-53362,53363,53365,53366,53367,53368,53369,53370,53371,53374,53375,53376,53378,
-53379,53380,53381,53382,53383,53384,53385,53386,53387,53388,53389,53390,53391,
-53392,53393,53394,53395,53396,53397,53398,53399,53400,53401,53402,53403,53404,
-53405,53406,53407,53408,53409,53410,53411,53414,53415,53417,53418,53419,53421,
-53422,53423,53424,53425,53426,U,U,U,U,U,U,53427,53430,53432,53434,53435,53436,
-53437,53438,53439,53442,53443,53445,53446,53447,53450,53451,53452,53453,53454,
-53455,53458,53462,53463,53464,53465,53466,U,U,U,U,U,U,53467,53470,53471,53473,
-53474,53475,53477,53478,53479,53480,53481,53482,53483,53486,53490,53491,53492,
-53493,53494,53495,53497,53498,53499,53500,53501,53502,53503,53504,53505,53506,
-53507,53508,53509,53510,53511,53512,53513,53514,53515,53516,53518,53519,53520,
-53521,53522,53523,53524,53525,53526,53527,53528,53529,53530,53531,53532,53533,
-53534,53535,U,U,U,U,U,U,53536,53537,53538,53539,53540,53541,53542,53543,53544,
-53545,53546,53547,53548,53549,53550,53551,53554,53555,53557,53558,53559,53561,
-53563,53564,53565,53566,U,U,U,U,U,U,53567,53570,53574,53575,53576,53577,53578,
-53579,53582,53583,53585,53586,53587,53589,53590,53591,53592,53593,53594,53595,
-53598,53600,53602,53603,53604,53605,53606,53607,53609,53610,53611,53613,53614,
-53615,53616,53617,53618,53619,53620,53621,53622,53623,53624,53625,53626,53627,
-53629,53630,53631,53632,53633,53634,53635,53637,53638,53639,53641,53642,U,U,U,
-U,U,U,53643,53644,53645,53646,53647,53648,53649,53650,53651,53652,53653,53654,
-53655,53656,53657,53658,53659,53660,53661,53662,53663,53666,53667,53669,53670,
-53671,U,U,U,U,U,U,53673,53674,53675,53676,53677,53678,53679,53682,53684,53686,
-53687,53688,53689,53691,53693,53694,53695,53697,53698,53699,53700,53701,53702,
-53703,53704,53705,53706,53707,53708,53709,53710,53711,53712,53713,53714,53715,
-53716,53717,53718,53719,53721,53722,53723,53724,53725,53726,53727,53728,53729,
-53730,53731,53732,53733,53734,53735,53736,53737,53738,U,U,U,U,U,U,53739,53740,
-53741,53742,53743,53744,53745,53746,53747,53749,53750,53751,53753,53754,53755,
-53756,53757,53758,53759,53760,53761,53762,53763,53764,53765,53766,U,U,U,U,U,U,
-53768,53770,53771,53772,53773,53774,53775,53777,53778,53779,53780,53781,53782,
-53783,53784,53785,53786,53787,53788,53789,53790,53791,53792,53793,53794,53795,
-53796,53797,53798,53799,53800,53801,53802,53803,53806,53807,53809,53810,53811,
-53813,53814,53815,53816,53817,53818,53819,53822,53824,53826,53827,53828,53829,
-53830,53831,53833,53834,53835,53836,U,U,U,U,U,U,53837,53838,53839,53840,53841,
-53842,53843,53844,53845,53846,53847,53848,53849,53850,53851,53853,53854,53855,
-53856,53857,53858,53859,53861,53862,53863,53864,U,U,U,U,U,U,53865,53866,53867,
-53868,53869,53870,53871,53872,53873,53874,53875,53876,53877,53878,53879,53880,
-53881,53882,53883,53884,53885,53886,53887,53890,53891,53893,53894,53895,53897,
-53898,53899,53900,53901,53902,53903,53906,53907,53908,53910,53911,53912,53913,
-53914,53915,53917,53918,53919,53921,53922,53923,53925,53926,53927,53928,53929,
-53930,53931,53933,U,U,U,U,U,U,53934,53935,53936,53938,53939,53940,53941,53942,
-53943,53946,53947,53949,53950,53953,53955,53956,53957,53958,53959,53962,53964,
-53965,53966,53967,53968,53969,U,U,U,U,U,U,53970,53971,53973,53974,53975,53977,
-53978,53979,53981,53982,53983,53984,53985,53986,53987,53990,53991,53992,53993,
-53994,53995,53996,53997,53998,53999,54002,54003,54005,54006,54007,54009,54010,
-54011,54012,54013,54014,54015,54018,54020,54022,54023,54024,54025,54026,54027,
-54031,54033,54034,54035,54037,54039,54040,54041,54042,54043,54046,54050,54051,
-U,U,U,U,U,U,54052,54054,54055,54058,54059,54061,54062,54063,54065,54066,54067,
-54068,54069,54070,54071,54074,54078,54079,54080,54081,54082,54083,54086,54087,
-54088,54089,U,U,U,U,U,U,54090,54091,54092,54093,54094,54095,54096,54097,54098,
-54099,54100,54101,54102,54103,54104,54105,54106,54107,54108,54109,54110,54111,
-54112,54113,54114,54115,54116,54117,54118,54119,54120,54121,54122,54123,54124,
-54125,54126,54127,54128,54129,54130,54131,54132,54133,54134,54135,54136,54137,
-54138,54139,54142,54143,54145,54146,54147,54149,54150,54151,U,U,U,U,U,U,54152,
-54153,54154,54155,54158,54162,54163,54164,54165,54166,54167,54170,54171,54173,
-54174,54175,54177,54178,54179,54180,54181,54182,54183,54186,54188,54190,U,U,U,
-U,U,U,54191,54192,54193,54194,54195,54197,54198,54199,54201,54202,54203,54205,
-54206,54207,54208,54209,54210,54211,54214,54215,54218,54219,54220,54221,54222,
-54223,54225,54226,54227,54228,54229,54230,54231,54233,54234,54235,54236,54237,
-54238,54239,54240,54242,54244,54245,54246,54247,54248,54249,54250,54251,54254,
-54255,54257,54258,54259,54261,54262,54263,U,U,U,U,U,U,54264,54265,54266,54267,
-54270,54272,54274,54275,54276,54277,54278,54279,54281,54282,54283,54284,54285,
-54286,54287,54288,54289,54290,54291,54292,54293,54294,U,U,U,U,U,U,54295,54296,
-54297,54298,54299,54300,54302,54303,54304,54305,54306,54307,54308,54309,54310,
-54311,54312,54313,54314,54315,54316,54317,54318,54319,54320,54321,54322,54323,
-54324,54325,54326,54327,54328,54329,54330,54331,54332,54333,54334,54335,54337,
-54338,54339,54341,54342,54343,54344,54345,54346,54347,54348,54349,54350,54351,
-54352,54353,54354,54355,U,U,U,U,U,U,54356,54357,54358,54359,54360,54361,54362,
-54363,54365,54366,54367,54369,54370,54371,54373,54374,54375,54376,54377,54378,
-54379,54380,54382,54384,54385,54386,U,U,U,U,U,U,54387,54388,54389,54390,54391,
-54394,54395,54397,54398,54401,54403,54404,54405,54406,54407,54410,54412,54414,
-54415,54416,54417,54418,54419,54421,54422,54423,54424,54425,54426,54427,54428,
-54429,54430,54431,54432,54433,54434,54435,54436,54437,54438,54439,54440,54442,
-54443,54444,54445,54446,54447,54448,54449,54450,54451,54452,54453,54454,54455,
-54456,U,U,U,U,U,U,54457,54458,54459,54460,54461,54462,54463,54464,54465,54466,
-54467,54468,54469,54470,54471,54472,54473,54474,54475,54477,54478,54479,54481,
-54482,54483,54485,U,U,U,U,U,U,54486,54487,54488,54489,54490,54491,54493,54494,
-54496,54497,54498,54499,54500,54501,54502,54503,54505,54506,54507,54509,54510,
-54511,54513,54514,54515,54516,54517,54518,54519,54521,54522,54524,54526,54527,
-54528,54529,54530,54531,54533,54534,54535,54537,54538,54539,54541,54542,54543,
-54544,54545,54546,54547,54550,54552,54553,54554,54555,54556,54557,U,U,U,U,U,U,
-54558,54559,54560,54561,54562,54563,54564,54565,54566,54567,54568,54569,54570,
-54571,54572,54573,54574,54575,54576,54577,54578,54579,54580,54581,54582,54583,
-U,U,U,U,U,U,54584,54585,54586,54587,54590,54591,54593,54594,54595,54597,54598,
-54599,54600,54601,54602,54603,54606,54608,54610,54611,54612,54613,54614,54615,
-54618,54619,54621,54622,54623,54625,54626,54627,54628,54630,54631,54634,54636,
-54638,54639,54640,54641,54642,54643,54646,54647,54649,54650,54651,54653,54654,
-54655,54656,54657,54658,54659,54662,54666,54667,U,U,U,U,U,U,54668,54669,54670,
-54671,54673,54674,54675,54676,54677,54678,54679,54680,54681,54682,54683,54684,
-54685,54686,54687,54688,54689,54690,54691,54692,54694,54695,U,U,U,U,U,U,54696,
-54697,54698,54699,54700,54701,54702,54703,54704,54705,54706,54707,54708,54709,
-54710,54711,54712,54713,54714,54715,54716,54717,54718,54719,54720,54721,54722,
-54723,54724,54725,54726,54727,54730,54731,54733,54734,54735,54737,54739,54740,
-54741,54742,54743,54746,54748,54750,54751,54752,54753,54754,54755,54758,54759,
-54761,54762,54763,54765,54766,U,U,U,U,U,U,54767,54768,54769,54770,54771,54774,
-54776,54778,54779,54780,54781,54782,54783,54786,54787,54789,54790,54791,54793,
-54794,54795,54796,54797,54798,54799,54802,U,U,U,U,U,U,54806,54807,54808,54809,
-54810,54811,54813,54814,54815,54817,54818,54819,54821,54822,54823,54824,54825,
-54826,54827,54828,54830,54831,54832,54833,54834,54835,54836,54837,54838,54839,
-54842,54843,54845,54846,54847,54849,54850,54851,54852,54854,54855,54858,54860,
-54862,54863,54864,54866,54867,54870,54871,54873,54874,54875,54877,54878,54879,
-54880,54881,U,U,U,U,U,U,54882,54883,54884,54885,54886,54888,54890,54891,54892,
-54893,54894,54895,54898,54899,54901,54902,54903,54904,54905,54906,54907,54908,
-54909,54910,54911,54912,U,U,U,U,U,U,54913,54914,54916,54918,54919,54920,54921,
-54922,54923,54926,54927,54929,54930,54931,54933,54934,54935,54936,54937,54938,
-54939,54940,54942,54944,54946,54947,54948,54949,54950,54951,54953,54954,54955,
-54957,54958,54959,54961,54962,54963,54964,54965,54966,54967,54968,54970,54972,
-54973,54974,54975,54976,54977,54978,54979,54982,54983,54985,54986,54987,U,U,U,
-U,U,U,54989,54990,54991,54992,54994,54995,54997,54998,55000,55002,55003,55004,
-55005,55006,55007,55009,55010,55011,55013,55014,55015,55017,55018,55019,55020,
-55021,U,U,U,U,U,U,55022,55023,55025,55026,55027,55028,55030,55031,55032,55033,
-55034,55035,55038,55039,55041,55042,55043,55045,55046,55047,55048,55049,55050,
-55051,55052,55053,55054,55055,55056,55058,55059,55060,55061,55062,55063,55066,
-55067,55069,55070,55071,55073,55074,55075,55076,55077,55078,55079,55082,55084,
-55086,55087,55088,55089,55090,55091,55094,55095,55097,U,U,U,U,U,U,55098,55099,
-55101,55102,55103,55104,55105,55106,55107,55109,55110,55112,55114,55115,55116,
-55117,55118,55119,55122,55123,55125,55130,55131,55132,55133,55134,U,U,U,U,U,U,
-55135,55138,55140,55142,55143,55144,55146,55147,55149,55150,55151,55153,55154,
-55155,55157,55158,55159,55160,55161,55162,55163,55166,55167,55168,55170,55171,
-55172,55173,55174,55175,55178,55179,55181,55182,55183,55185,55186,55187,55188,
-55189,55190,55191,55194,55196,55198,55199,55200,55201,55202,55203,
-};
-
-static const struct dbcs_index cp949ext_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{__cp949ext_decmap+0,65,254},{__cp949ext_decmap+190,
-65,254},{__cp949ext_decmap+380,65,254},{__cp949ext_decmap+570,65,254},{
-__cp949ext_decmap+760,65,254},{__cp949ext_decmap+950,65,254},{
-__cp949ext_decmap+1140,65,254},{__cp949ext_decmap+1330,65,254},{
-__cp949ext_decmap+1520,65,254},{__cp949ext_decmap+1710,65,254},{
-__cp949ext_decmap+1900,65,254},{__cp949ext_decmap+2090,65,254},{
-__cp949ext_decmap+2280,65,254},{__cp949ext_decmap+2470,65,254},{
-__cp949ext_decmap+2660,65,254},{__cp949ext_decmap+2850,65,254},{
-__cp949ext_decmap+3040,65,254},{__cp949ext_decmap+3230,65,254},{
-__cp949ext_decmap+3420,65,254},{__cp949ext_decmap+3610,65,254},{
-__cp949ext_decmap+3800,65,254},{__cp949ext_decmap+3990,65,254},{
-__cp949ext_decmap+4180,65,254},{__cp949ext_decmap+4370,65,254},{
-__cp949ext_decmap+4560,65,254},{__cp949ext_decmap+4750,65,254},{
-__cp949ext_decmap+4940,65,254},{__cp949ext_decmap+5130,65,254},{
-__cp949ext_decmap+5320,65,254},{__cp949ext_decmap+5510,65,254},{
-__cp949ext_decmap+5700,65,254},{__cp949ext_decmap+5890,65,254},{
-__cp949ext_decmap+6080,65,160},{__cp949ext_decmap+6176,65,160},{
-__cp949ext_decmap+6272,65,160},{__cp949ext_decmap+6368,65,160},{
-__cp949ext_decmap+6464,65,160},{__cp949ext_decmap+6560,65,160},{
-__cp949ext_decmap+6656,65,160},{__cp949ext_decmap+6752,65,160},{
-__cp949ext_decmap+6848,65,160},{__cp949ext_decmap+6944,65,160},{
-__cp949ext_decmap+7040,65,160},{__cp949ext_decmap+7136,65,160},{
-__cp949ext_decmap+7232,65,160},{__cp949ext_decmap+7328,65,160},{
-__cp949ext_decmap+7424,65,160},{__cp949ext_decmap+7520,65,160},{
-__cp949ext_decmap+7616,65,160},{__cp949ext_decmap+7712,65,160},{
-__cp949ext_decmap+7808,65,160},{__cp949ext_decmap+7904,65,160},{
-__cp949ext_decmap+8000,65,160},{__cp949ext_decmap+8096,65,160},{
-__cp949ext_decmap+8192,65,160},{__cp949ext_decmap+8288,65,160},{
-__cp949ext_decmap+8384,65,160},{__cp949ext_decmap+8480,65,160},{
-__cp949ext_decmap+8576,65,160},{__cp949ext_decmap+8672,65,160},{
-__cp949ext_decmap+8768,65,160},{__cp949ext_decmap+8864,65,160},{
-__cp949ext_decmap+8960,65,160},{__cp949ext_decmap+9056,65,160},{
-__cp949ext_decmap+9152,65,160},{__cp949ext_decmap+9248,65,160},{
-__cp949ext_decmap+9344,65,160},{__cp949ext_decmap+9440,65,160},{
-__cp949ext_decmap+9536,65,160},{__cp949ext_decmap+9632,65,82},{0,0,0},{0,0,0},
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-};
-
-static const DBCHAR __cp949_encmap[33133] = {
-8750,N,N,8756,N,N,8535,8487,N,10275,N,N,8489,8807,N,8518,8510,10615,10616,
-8741,N,8786,8484,8748,10614,10284,N,10361,10358,10362,8751,N,N,N,N,N,N,10273,
-N,N,N,N,N,N,N,N,N,10274,N,N,N,N,N,N,8511,10282,N,N,N,N,N,10285,10540,N,N,N,N,
-N,N,10529,N,N,N,N,N,N,N,N,N,10531,N,N,N,N,N,N,8512,10538,N,N,N,N,N,10541,
-10530,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,10276,10532,N,N,N,N,N,N,N,N,N,
-10533,10278,10534,N,N,N,N,10535,N,N,N,N,N,N,10280,10536,10281,10537,N,N,N,N,N,
-N,10544,10287,10543,N,N,N,N,N,N,10283,10539,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,10286,10542,8743,N,N,N,N,N,N,N,N,8752,N,N,N,N,N,N,N,8744,8747,8746,8749,N,
-8745,9537,9538,9539,9540,9541,9542,9543,9544,9545,9546,9547,9548,9549,9550,
-9551,9552,9553,N,9554,9555,9556,9557,9558,9559,9560,N,N,N,N,N,N,N,9569,9570,
-9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9581,9582,9583,9584,9585,N,
-9586,9587,9588,9589,9590,9591,9592,11303,N,N,N,N,N,N,N,N,N,N,N,N,N,N,11297,
-11298,11299,11300,11301,11302,11304,11305,11306,11307,11308,11309,11310,11311,
-11312,11313,11314,11315,11316,11317,11318,11319,11320,11321,11322,11323,11324,
-11325,11326,11327,11328,11329,11345,11346,11347,11348,11349,11350,11352,11353,
-11354,11355,11356,11357,11358,11359,11360,11361,11362,11363,11364,11365,11366,
-11367,11368,11369,11370,11371,11372,11373,11374,11375,11376,11377,N,11351,
-8490,N,N,8494,8495,N,N,8496,8497,N,N,8787,8788,N,N,N,8485,8486,N,N,N,N,N,N,N,
-N,N,8758,N,8519,8520,N,N,N,N,N,N,N,8536,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-10617,N,N,N,N,N,N,N,N,N,N,10618,N,10619,10620,10621,10622,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8806,8521,N,N,N,N,N,
-8757,N,N,N,N,N,N,N,N,N,10020,N,N,8800,N,N,N,N,N,N,N,N,N,N,8805,8802,N,N,N,
-10073,N,N,N,N,8522,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,10359,10360,N,N,N,N,N,N,10363,10364,10365,10366,N,9520,
-9521,9522,9523,9524,9525,9526,9527,9528,9529,N,N,N,N,N,N,9505,9506,9507,9508,
-9509,9510,9511,9512,9513,9514,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-8551,8552,8550,8553,8554,8789,8792,8790,8793,8791,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,8737,N,8738,8739,N,8531,8740,N,N,N,8532,8564,N,N,8565,N,N,N,8755,N,8754,
-N,N,N,N,N,N,N,N,8558,N,N,8560,8516,N,8528,N,N,N,N,8491,N,8572,8573,8571,8570,
-8562,8563,N,8753,N,N,N,N,N,8517,8561,N,N,N,N,N,N,8493,8559,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,8534,N,N,N,N,N,N,N,N,N,N,N,N,N,8513,8533,N,N,8514,8515,
-N,N,N,N,8556,8557,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8568,8569,N,N,
-8566,8567,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8769,N,N,N,N,N,N,N,N,N,N,N,8529,
-8530,10343,10344,10345,10346,10347,10348,10349,10350,10351,10352,10353,10354,
-10355,10356,10357,N,N,N,N,N,10599,10600,10601,10602,10603,10604,10605,10606,
-10607,10608,10609,10610,10611,10612,10613,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,10573,10574,10575,10576,10577,10578,10579,10580,10581,10582,
-10583,10584,10585,10586,10587,10588,10589,10590,10591,10592,10593,10594,10595,
-10596,10597,10598,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,10317,
-10318,10319,10320,10321,10322,10323,10324,10325,10326,10327,10328,10329,10330,
-10331,10332,10333,10334,10335,10336,10337,10338,10339,10340,10341,10342,9761,
-9772,9762,9773,N,N,N,N,N,N,N,N,9763,9800,9799,9774,9764,9794,9793,9775,9766,
-9798,9797,9777,9765,9796,9795,9776,9767,9788,9801,9802,9783,9803,9804,9778,
-9769,9790,9805,9806,9785,9807,9808,9780,9768,9809,9810,9784,9789,9811,9812,
-9779,9770,9813,9814,9786,9791,9815,9816,9781,9771,9817,9818,9787,9819,9820,
-9792,9821,9822,9823,9824,9825,9826,9827,9828,9782,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8774,N,N,N,N,N,N,N,N,N,N,N,N,N,8545,8544,N,
-8771,8775,8776,8779,8778,8777,8780,N,N,N,N,N,N,N,N,8547,8546,N,N,8762,8761,N,
-N,N,N,8549,8548,N,N,8760,8759,N,N,N,N,8543,8542,8770,N,N,8539,N,N,8541,8540,
-8772,8773,8538,8537,N,N,N,N,N,N,N,8783,8782,N,N,N,N,N,N,N,N,N,N,N,N,8784,N,
-8785,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8527,N,
-8526,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,8764,8765,N,
-8768,8763,8766,N,8767,8781,8795,8796,N,8797,8794,8481,8482,8483,8488,N,N,N,N,
-8500,8501,8502,8503,8504,8505,8506,8507,8508,8509,N,8555,8498,8499,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-10785,10786,10787,10788,10789,10790,10791,10792,10793,10794,10795,10796,10797,
-10798,10799,10800,10801,10802,10803,10804,10805,10806,10807,10808,10809,10810,
-10811,10812,10813,10814,10815,10816,10817,10818,10819,10820,10821,10822,10823,
-10824,10825,10826,10827,10828,10829,10830,10831,10832,10833,10834,10835,10836,
-10837,10838,10839,10840,10841,10842,10843,10844,10845,10846,10847,10848,10849,
-10850,10851,10852,10853,10854,10855,10856,10857,10858,10859,10860,10861,10862,
-10863,10864,10865,10866,10867,N,N,N,N,N,N,N,N,N,N,N,N,N,11041,11042,11043,
-11044,11045,11046,11047,11048,11049,11050,11051,11052,11053,11054,11055,11056,
-11057,11058,11059,11060,11061,11062,11063,11064,11065,11066,11067,11068,11069,
-11070,11071,11072,11073,11074,11075,11076,11077,11078,11079,11080,11081,11082,
-11083,11084,11085,11086,11087,11088,11089,11090,11091,11092,11093,11094,11095,
-11096,11097,11098,11099,11100,11101,11102,11103,11104,11105,11106,11107,11108,
-11109,11110,11111,11112,11113,11114,11115,11116,11117,11118,11119,11120,11121,
-11122,11123,11124,11125,11126,9249,9250,9251,9252,9253,9254,9255,9256,9257,
-9258,9259,9260,9261,9262,9263,9264,9265,9266,9267,9268,9269,9270,9271,9272,
-9273,9274,9275,9276,9277,9278,9279,9280,9281,9282,9283,9284,9285,9286,9287,
-9288,9289,9290,9291,9292,9293,9294,9295,9296,9297,9298,9299,9300,9301,9302,
-9303,9304,9305,9306,9307,9308,9309,9310,9311,9312,9313,9314,9315,9316,9317,
-9318,9319,9320,9321,9322,9323,9324,9325,9326,9327,9328,9329,9330,9331,9332,
-9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,10545,10546,10547,10548,
-10549,10550,10551,10552,10553,10554,10555,10556,10557,10558,10559,10560,10561,
-10562,10563,10564,10565,10566,10567,10568,10569,10570,10571,10572,8799,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,10289,10290,10291,10292,
-10293,10294,10295,10296,10297,10298,10299,10300,10301,10302,10303,10304,10305,
-10306,10307,10308,10309,10310,10311,10312,10313,10314,10315,10316,N,N,N,8798,
-10057,10058,10059,10060,10061,N,N,N,10042,10043,10076,10077,10078,10038,10039,
-10040,10068,10069,10070,10071,10072,10017,10018,10019,10021,10027,10028,10029,
-10030,10031,10032,10033,10034,10035,10036,10023,10024,10025,10026,10045,10046,
-10085,10086,10087,10088,10081,10082,10083,10047,10048,10049,10050,10051,10052,
-10053,10054,10055,10056,10062,10063,10064,10065,10066,10067,10074,10075,8803,
-10092,10022,10080,10095,8801,10044,10093,10037,N,N,N,N,10041,10090,N,N,10091,
-N,N,10079,N,8804,N,N,10084,10094,10089,27753,28491,N,30290,N,N,N,22578,27995,
-24370,24382,31035,N,23668,N,N,N,30052,N,N,29478,23904,24870,N,20088,23600,N,N,
-N,N,25386,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29033,N,N,N,N,19834,N,N,N,N,N,31791,
-21281,N,28971,N,N,N,N,N,N,26449,21036,N,20089,N,N,N,N,N,29053,N,24127,31546,
-31033,N,N,N,N,N,N,20050,N,25387,27488,N,N,N,20090,19319,25893,N,N,N,N,N,N,N,N,
-N,N,N,19041,N,21580,N,N,N,N,N,27233,N,N,23651,24365,N,N,N,N,N,N,19307,N,N,N,
-21807,N,N,N,22133,N,25976,N,N,24128,27683,N,26957,N,27175,26998,31547,N,26473,
-28492,N,N,20582,N,N,24129,N,N,25644,N,N,22604,31089,N,20063,31268,26162,N,
-31355,N,N,31293,19528,28493,21845,N,N,N,N,N,N,N,21282,N,N,N,27729,N,N,N,N,N,
-25639,27730,N,N,30257,N,N,20091,N,N,20561,19263,N,27940,N,N,N,N,N,N,27944,
-24130,30306,27996,23669,24633,N,N,N,21582,N,29749,N,N,N,21339,22069,27684,N,N,
-N,N,N,N,N,N,N,N,25702,N,29034,N,N,N,19308,19264,N,N,N,27762,20586,N,N,N,N,N,N,
-N,31090,27685,20575,N,26474,20587,23633,23401,32076,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,23383,N,N,N,N,23137,N,22070,N,25439,N,24131,N,
-24132,18977,N,N,N,N,N,28268,N,N,21283,28215,30799,N,N,N,N,27208,28216,28972,
-28965,26958,N,N,N,31036,N,N,N,25977,27754,23894,27970,N,N,N,N,N,N,N,N,N,N,N,N,
-30757,N,N,N,N,N,25914,23384,N,N,18978,N,N,20813,N,N,N,28269,N,N,N,27755,24133,
-N,25440,N,19017,29289,N,21838,N,30262,N,20034,22087,N,25396,N,28973,N,27234,N,
-N,N,N,22338,N,29479,N,N,19818,N,27502,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22834,
-32037,N,N,N,N,N,30293,21858,N,N,N,N,N,N,N,N,30773,N,N,19573,30005,25645,N,N,N,
-N,26475,29013,N,N,N,28731,N,N,26933,N,19529,31317,N,N,24916,N,N,22358,N,N,
-23617,N,24134,31343,25441,N,N,N,N,N,N,N,N,N,N,N,N,24947,23670,N,20092,N,23364,
-N,30833,N,N,23652,N,25967,23601,N,N,N,21846,N,N,29530,N,19265,N,23363,N,N,N,
-22906,21358,N,N,N,31288,N,N,32038,27503,N,29734,N,19530,29480,N,29531,N,23335,
-30263,N,20326,28786,19290,N,26450,22339,30320,26718,N,N,N,N,N,N,N,N,N,N,N,N,N,
-25894,N,N,N,N,N,N,N,25959,N,N,N,18979,19495,27209,N,N,N,N,N,30774,N,N,N,N,N,
-31269,N,N,N,N,28974,N,28494,N,N,N,N,N,N,N,N,19309,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-30256,28495,26959,N,30558,N,N,N,N,N,N,N,20051,N,N,N,N,23671,N,N,N,N,N,N,N,
-23336,N,N,N,19320,N,N,N,N,N,N,24353,23905,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-30026,26934,N,N,N,N,26476,28270,N,29552,N,24383,N,N,N,N,N,N,19531,N,N,N,N,N,N,
-20545,N,N,N,29778,24634,N,N,N,N,24384,N,20064,N,N,N,23634,32106,N,N,N,22134,N,
-N,N,27210,N,N,N,N,N,N,26729,N,25388,N,N,N,N,N,29520,N,N,N,N,N,N,N,N,N,N,N,
-18980,N,23416,N,N,N,24135,27504,29014,N,N,25954,N,19532,N,N,19323,N,N,N,N,N,N,
-N,N,27235,N,N,N,N,N,N,N,N,N,N,N,N,24385,N,22125,N,N,N,N,N,N,N,N,26960,N,N,N,N,
-N,N,N,28217,N,N,N,N,21859,N,N,20819,N,25968,N,N,N,26676,27459,N,27178,31356,
-30070,28732,32084,24635,20035,N,20538,30522,22643,30541,N,N,N,25646,N,N,N,N,N,
-N,N,N,N,21599,N,N,N,N,N,20583,N,N,27773,N,21038,28271,21847,27236,30754,19819,
-22335,31537,N,N,19820,N,N,N,23602,20588,20093,28272,N,N,N,19522,N,N,N,20589,N,
-N,N,N,N,25975,N,N,N,29564,N,N,28194,N,N,N,N,22835,N,N,22644,N,26935,N,N,N,N,N,
-N,N,N,20014,N,N,N,N,22818,N,N,N,N,22641,N,21583,N,N,N,N,N,N,N,N,N,25895,21842,
-N,N,N,N,N,22057,N,N,N,N,N,N,29730,N,29015,N,N,21848,N,28733,22352,21584,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,22351,27498,32107,N,N,23405,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-31813,19266,N,N,N,N,32085,N,29768,26730,30067,N,N,31070,21359,N,N,27731,N,N,
-23874,28471,26452,N,19018,N,N,N,22907,N,N,31357,N,N,N,N,N,22058,N,N,N,N,N,
-29816,N,N,N,N,N,N,30583,23596,N,N,N,22359,24354,N,N,N,20030,N,21360,N,N,N,N,N,
-28708,24940,20327,29515,27945,19006,N,N,N,N,N,N,N,29807,N,N,N,30286,N,N,24187,
-20539,21815,28273,N,N,N,N,N,N,29736,N,23672,N,N,N,N,19239,N,23118,N,N,N,24678,
-N,N,N,N,N,N,N,27941,28274,N,N,N,N,23673,N,N,31068,N,N,29532,N,N,N,N,N,N,N,
-30834,N,29817,N,N,N,31857,N,N,N,20540,23417,22321,N,N,N,19324,N,N,N,28709,
-19325,N,N,N,N,N,N,N,N,21876,N,N,N,19821,18981,N,N,22059,20546,N,N,N,N,28734,
-21053,19492,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31286,N,N,19533,N,23162,N,
-30287,N,26936,N,22645,N,N,N,19534,N,N,N,N,22349,N,N,21585,26989,N,19051,22882,
-N,32050,N,25389,22092,22836,N,N,24871,28243,20547,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-32051,N,21860,N,N,20328,N,27971,20530,N,N,20094,23080,30800,N,N,32086,N,N,N,N,
-30801,N,30802,23635,N,N,N,N,23906,31609,23873,N,25397,N,N,N,N,N,N,27997,20036,
-N,19233,N,N,N,N,N,N,23907,N,N,N,N,31837,N,N,N,N,N,N,N,N,N,31023,N,N,N,N,N,
-21115,20257,25640,N,29750,27774,N,N,25390,26477,32065,23138,N,N,22579,N,N,N,
-23908,28783,30321,31344,N,N,20853,N,N,23119,N,23636,N,23590,N,28479,N,N,N,N,N,
-20047,N,24665,N,N,N,N,N,N,22870,27732,27211,N,N,19007,21808,N,20329,N,N,N,N,N,
-29037,N,19535,N,N,N,N,25720,N,N,N,N,N,N,N,N,N,N,N,N,N,N,25709,N,N,N,N,22360,N,
-32039,N,N,N,N,27179,30258,N,N,N,N,20336,31037,N,N,N,N,N,N,26228,N,N,N,N,N,N,N,
-N,N,N,N,N,N,19291,N,N,N,N,N,N,N,29521,N,N,N,N,26961,29481,20576,26962,N,23139,
-N,N,N,N,N,N,25170,N,30242,24948,N,N,N,23140,N,N,N,N,N,26453,30015,20258,19759,
-20259,N,N,N,19760,29054,20515,24879,30755,N,18982,30523,29290,24136,26963,N,N,
-N,N,24137,32094,19008,N,N,N,31082,20814,28244,N,21586,22819,32040,22361,30542,
-31294,N,N,N,N,N,N,N,N,N,20310,N,22384,N,27489,30789,N,N,N,N,N,23674,N,N,23875,
-N,31071,N,N,N,N,N,N,N,26479,N,N,N,N,32101,30243,N,22908,32041,N,26478,N,N,N,
-21861,N,N,N,N,N,28496,N,19761,N,N,N,N,N,N,30498,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,28978,N,28977,N,N,N,N,N,N,19762,N,23083,N,18983,N,N,N,N,N,25442,
-31548,22820,N,N,28218,N,N,N,N,N,30803,N,N,N,N,N,31610,N,20260,N,23675,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30307,N,N,N,27946,N,N,29217,20065,N,N,N,N,N,N,
-31270,N,N,N,N,31072,N,N,N,N,27734,N,N,25710,31009,N,N,31599,N,N,N,31083,28195,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,27180,N,N,N,18984,N,N,29818,N,N,
-N,N,19798,31862,N,N,N,29769,N,N,N,N,N,N,N,30804,30758,N,24138,29254,N,N,N,N,N,
-N,22362,N,21328,N,N,N,N,N,N,N,N,N,N,N,22597,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,27238,N,29533,N,N,N,25690,N,N,N,N,N,N,N,N,30308,N,N,N,N,N,30322,N,24386,N,N,
-N,N,N,N,N,N,22909,N,N,N,19574,N,N,21306,N,N,N,N,N,N,N,25647,N,N,N,N,31073,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,28710,N,N,N,19283,N,N,N,24636,N,
-29770,21626,N,32042,31074,N,N,N,N,N,N,N,N,N,N,N,N,N,29751,32066,31792,N,32108,
-19042,N,N,N,N,N,N,N,N,N,32061,N,27239,24387,20818,20066,N,21284,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,32043,N,24416,N,N,N,N,N,N,N,N,N,N,N,N,29255,N,N,
-N,N,N,26480,N,20590,N,N,29482,N,N,N,24139,30264,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,24949,28979,30499,N,N,18985,N,N,N,N,N,N,N,N,N,N,20261,N,N,
-24388,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,24880,N,N,28735,N,30244,N,
-25398,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31302,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,20591,N,N,32109,N,N,N,N,N,N,N,N,23876,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,31863,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,26175,N,N,N,N,N,N,24109,N,31295,N,N,N,N,N,25969,N,N,N,N,N,N,N,
-27972,N,N,N,N,N,N,N,N,N,N,N,N,N,21029,N,N,32110,N,N,N,30006,N,N,N,N,N,N,N,N,
-24950,24140,N,N,31838,N,27735,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,19805,N,N,N,N,N,N,
-N,N,22071,19763,30805,25944,N,N,N,20330,N,N,20304,N,27212,N,N,N,N,27182,27181,
-N,N,21361,N,21285,N,N,N,N,N,N,30543,N,N,N,N,N,N,N,N,28196,N,N,N,N,20516,N,N,
-29218,N,N,N,N,N,N,N,N,N,N,20592,N,N,N,N,29219,N,30584,N,N,N,N,20531,N,N,23337,
-N,N,21307,19052,N,28966,19285,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30567,N,N,19806,N,
-30500,N,N,N,30784,N,N,N,21341,N,19536,N,N,N,N,20262,N,N,N,N,N,N,30323,N,N,N,N,
-N,24951,N,N,N,N,N,21340,N,N,31358,N,N,N,N,N,N,N,31271,N,N,N,N,N,N,N,N,N,N,N,N,
-27481,N,20263,27183,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,25711,N,N,N,26937,29016,N,N,22616,N,N,24690,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,26164,23676,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29553,N,N,N,25424,N,N,29307,N,
-23366,20593,N,20594,20316,N,21329,N,N,19505,30552,N,19240,27452,25662,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29788,N,N,23618,N,N,28711,N,N,26176,N,N,19053,N,
-N,N,N,26731,25960,23619,N,N,27998,21362,N,N,N,N,19575,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,20052,26411,N,N,N,19267,N,24881,N,N,30514,N,N,21363,21330,N,30016,N,N,N,
-24413,N,N,28275,26481,N,32052,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29256,N,N,N,
-29522,N,N,28276,N,25171,N,N,N,N,19537,N,24426,N,N,N,26938,N,N,N,N,N,N,N,N,N,
-22871,N,N,N,N,N,N,N,N,30029,N,29042,31303,N,N,N,N,N,N,N,N,22904,21570,N,N,N,N,
-30309,N,N,N,N,23877,N,N,N,N,N,N,26482,27999,N,N,19019,N,N,23418,N,N,N,26677,N,
-21286,N,N,N,N,N,N,32053,N,N,31049,N,25698,N,31549,N,N,22308,20037,N,N,N,N,
-20053,22118,N,N,N,N,25917,N,N,N,N,N,N,24141,27763,N,N,28000,N,N,N,N,N,N,N,N,N,
-27756,31550,24427,N,24952,31038,N,N,N,N,20595,24618,26722,N,N,25172,21117,N,
-25896,N,N,N,N,N,22867,N,N,N,N,21342,N,29752,30524,23677,N,26732,25703,N,N,
-25463,N,N,N,N,N,27688,N,N,N,N,N,N,31345,N,N,N,N,N,25970,N,N,20596,21039,23653,
-N,N,N,N,20517,28980,31793,19576,N,N,23878,31313,N,30559,N,N,31272,N,N,N,N,N,
-28277,N,24142,N,N,N,N,26483,N,N,30508,27460,28001,24619,23879,N,N,N,N,21043,
-21055,N,N,N,19020,N,N,N,N,31551,N,N,N,N,25981,23909,22605,N,N,N,N,N,27764,N,N,
-N,N,N,N,N,N,20597,N,N,26733,20562,N,22872,N,N,N,N,N,N,N,N,N,N,N,30310,N,N,
-23338,N,N,N,30560,N,N,N,N,N,N,N,N,N,N,N,N,22617,N,29731,N,N,29789,N,N,N,N,
-28497,N,N,22837,N,N,27947,N,25399,N,N,N,N,28219,19764,N,24691,27213,N,N,N,N,
-27765,26734,N,19241,28975,N,N,N,N,N,N,N,N,19021,N,27689,N,29291,N,32111,N,
-31091,N,N,N,N,N,N,N,N,N,26177,N,N,27736,N,N,N,27948,27214,N,26719,N,N,N,N,N,N,
-N,N,N,N,N,N,N,24143,N,N,N,N,N,N,21030,N,N,26484,20822,N,N,26178,25443,N,N,N,N,
-25648,N,N,N,22580,N,N,N,N,N,N,N,N,N,N,N,N,30245,N,N,N,N,N,29534,N,N,N,N,22309,
-N,N,N,N,30568,N,N,26694,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31590,N,N,N,N,N,N,N,
-23910,N,N,N,23678,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,22618,N,N,N,N,N,N,N,23084,27184,N,N,N,N,N,N,N,N,
-25400,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,18986,24953,N,
-27185,N,N,N,N,29292,N,N,31342,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,28245,N,
-N,N,N,31092,N,N,21100,31611,N,N,N,32112,N,24637,20067,N,N,N,N,N,N,N,N,N,30790,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,24110,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,24389,N,N,25918,N,N,N,N,N,N,N,N,N,N,N,N,27949,31338,N,N,19822,27942,N,
-27950,28781,N,23841,N,27951,31864,N,22635,N,N,N,19577,19765,N,N,N,N,31273,N,
-24925,N,N,N,N,25173,27983,N,N,N,23842,N,N,31050,N,27240,N,25965,N,N,N,N,N,N,N,
-N,21355,N,26964,24954,25676,N,24932,26695,N,N,20059,N,N,N,23637,N,30517,31859,
-28787,20015,28981,28498,26696,27505,N,N,N,N,N,19284,24638,25464,27241,31794,N,
-N,N,N,N,24692,N,20320,N,28197,N,N,31274,26179,24882,18987,N,25444,26939,N,N,N,
-N,N,25174,29554,N,28246,27186,20598,27737,23115,20264,N,N,N,N,23843,N,N,N,
-22619,N,31054,26965,25425,N,N,21052,N,N,N,N,N,N,22572,29516,N,19835,30294,N,
-26485,26735,25465,21051,29555,25467,N,24144,20016,N,22135,29017,N,N,N,N,N,
-30017,23620,N,30011,N,24145,23654,N,N,24146,N,N,28002,28278,27215,28782,25468,
-N,21343,21364,24883,N,24884,N,N,N,N,29779,N,N,24390,N,N,N,N,N,N,N,N,N,N,26966,
-N,N,N,23339,N,N,N,N,N,N,N,N,30246,N,N,N,N,N,N,25401,27461,29737,19766,21113,N,
-23085,21091,20305,N,N,N,N,19292,19578,N,20317,N,N,26665,N,25403,25402,N,N,
-24666,N,N,N,28279,N,N,N,N,N,23603,N,N,N,N,21365,N,22310,N,30261,22363,N,N,N,N,
-N,N,24917,N,N,21610,N,24355,N,N,N,N,N,N,N,32095,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,20599,27988,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,19242,N,N,N,N,N,N,N,
-25691,N,24955,19234,N,N,N,N,21344,N,25663,N,31552,N,23102,25677,N,22073,N,N,N,
-28480,N,24956,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30265,N,N,N,N,N,
-N,24391,N,N,N,N,N,N,N,25649,N,N,N,N,N,N,23655,23656,N,N,N,31318,N,21366,N,N,N,
-N,29018,N,31346,25213,N,N,N,N,N,21839,20600,N,N,19807,N,N,30027,N,25712,19243,
-N,22340,N,N,N,N,N,N,N,N,N,N,N,N,N,25214,N,23898,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,23086,19054,N,N,N,21817,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,25377,N,N,26723,N,N,29483,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,20265,N,N,N,21367,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-21617,N,N,20068,N,26738,N,N,N,N,N,N,N,25973,N,N,N,N,N,N,N,N,N,N,N,N,N,26414,N,
-22074,N,24428,25664,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,26724,N,N,N,N,22581,N,N,N,
-25692,N,N,N,N,N,N,29753,28982,N,N,25182,24885,N,N,19823,28967,20069,19293,N,N,
-22883,N,N,29484,N,N,20601,27691,24147,30569,N,N,31093,N,N,N,N,N,24926,19310,
-25404,30806,N,N,23406,N,N,N,N,N,32113,N,N,N,N,30518,N,N,N,N,29790,N,N,29293,N,
-23385,N,28712,N,N,N,N,N,N,N,24957,N,N,N,N,N,24148,N,24620,N,N,N,N,N,28003,N,N,
-21345,N,24392,N,N,N,N,22838,N,32044,28499,N,N,N,25665,30827,N,23340,N,N,N,N,
-31814,N,N,N,N,N,N,N,N,22573,N,N,N,N,N,N,N,N,N,30266,N,23391,21331,30791,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,19022,30785,21044,N,N,23604,31289,19023,N,31795,27242,
-27243,20602,N,N,N,N,N,28004,N,N,23911,N,N,24393,N,N,N,N,24429,N,N,N,N,N,28220,
-N,28481,N,N,19538,N,23844,N,N,N,24394,N,N,N,N,N,21368,28968,N,N,N,19767,N,
-28500,N,N,N,N,N,N,N,25693,24430,19244,26940,N,N,N,N,N,27244,N,N,N,24395,N,N,N,
-N,N,31039,22063,21830,N,N,N,N,N,20266,N,N,20009,N,N,22136,N,N,N,28983,28280,N,
-N,N,22873,29535,N,30792,20038,N,N,N,N,N,N,N,N,21862,N,N,N,N,N,N,29798,N,N,
-26181,28501,N,N,19311,31839,23591,N,N,22119,N,N,N,N,N,30793,N,N,N,N,25426,N,
-25405,N,20321,28736,27738,N,23895,31600,N,N,27692,N,N,N,28713,N,N,N,N,N,N,
-31319,31553,N,21056,N,N,N,N,N,N,N,25904,N,N,N,28005,N,N,N,N,19245,N,31024,N,N,
-N,N,N,N,N,N,N,N,N,30501,N,19246,N,23087,N,22582,N,N,N,N,N,N,N,21287,31538,N,
-32068,N,27693,N,N,N,N,N,N,31521,N,N,N,25961,26990,N,29556,30835,28737,24111,
-30768,N,N,29536,26415,N,N,N,N,N,23341,N,26165,N,N,31016,N,N,23896,26713,28502,
-N,N,N,21346,N,25183,N,N,31840,22344,32045,N,N,N,24431,19539,21369,N,N,N,N,
-21616,23367,24149,N,N,N,N,28788,N,21840,25945,N,N,N,N,N,N,31815,23638,25184,N,
-N,N,23088,N,N,N,N,N,N,29475,N,21356,N,29771,N,N,N,32069,N,N,N,N,N,25469,N,
-31025,N,N,N,N,N,N,20603,27739,N,N,N,N,N,N,N,N,30012,29220,22606,22607,N,N,N,N,
-N,N,30071,N,N,N,N,N,N,N,N,N,N,30305,N,N,N,N,N,N,N,N,N,21047,N,N,N,N,N,N,N,
-31596,N,23880,25704,N,N,21057,N,N,N,30807,N,N,N,N,N,22075,24150,N,N,30525,
-27694,N,N,N,20577,N,24693,27187,N,20054,N,N,N,N,19493,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,27766,25185,25406,N,N,N,N,N,N,N,N,N,31816,N,N,19824,N,31094,N,N,
-24432,N,N,N,25919,N,N,N,20031,N,N,N,N,31841,27952,32081,30267,N,N,31055,27482,
-19009,N,21048,19825,N,25427,32102,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-26221,N,N,N,25466,N,N,28714,31056,N,N,N,N,N,N,31842,N,30759,N,N,N,24933,28281,
-N,N,N,26486,27245,N,N,31796,30018,N,N,22364,N,N,N,N,N,N,N,N,28789,N,23912,
-21357,30076,N,23103,N,19579,N,N,N,21370,29732,N,N,N,N,N,N,N,28503,N,21571,N,N,
-N,N,N,N,N,N,N,31587,N,N,N,N,N,N,N,N,31597,N,24621,N,N,27246,31539,25666,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,30311,21085,N,24396,N,N,31817,N,N,25897,24694,30259,
-24958,N,N,N,N,19312,N,27247,27248,N,N,N,23104,30772,27506,N,N,N,N,N,25667,N,N,
-N,N,26967,25713,N,N,N,19055,N,N,N,N,N,N,N,20055,N,N,N,N,N,N,N,N,31818,N,N,N,
-29537,N,N,19268,N,N,N,N,25445,N,19269,27188,N,N,26941,N,22345,N,N,27483,27953,
-N,19523,30526,31819,N,N,N,N,N,N,30836,N,22839,N,N,29523,29524,N,N,N,30564,N,
-30545,N,N,22583,20017,19010,N,N,31540,19270,N,N,28790,N,N,21863,N,27216,N,N,N,
-N,N,19540,19247,N,N,N,N,N,29738,26927,N,N,30019,26968,N,N,N,N,N,N,N,23913,N,N,
-N,29043,N,21883,24123,N,N,29819,N,N,N,32115,32114,30502,N,N,N,N,N,N,N,N,N,
-23881,N,N,21587,N,19496,N,23105,19541,N,22884,N,N,N,31306,N,N,N,25955,N,N,N,
-21308,N,N,N,19056,N,N,N,N,20548,N,N,N,19024,31275,27499,26488,22885,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,20823,N,N,N,N,N,N,N,N,N,N,N,29476,N,
-N,N,21627,31843,31320,N,29525,N,20267,N,N,27507,21884,N,N,N,N,N,N,21332,19836,
-N,22886,N,25209,25121,27476,N,24695,25650,19580,N,N,N,31588,N,N,N,29739,N,N,N,
-N,20541,N,19057,N,N,N,N,N,N,N,N,28472,N,N,N,22336,N,28282,32116,N,N,21347,N,
-31554,N,N,N,N,N,N,N,21864,23342,24886,30775,N,N,N,N,N,24639,31555,23914,N,
-25122,N,28198,N,N,N,N,N,30312,N,N,N,N,30325,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,23882,N,N,20578,N,N,N,N,23846,N,N,23915,N,N,25721,N,N,25391,20604,N,N,
-N,29820,N,N,N,N,19516,30570,N,N,N,N,N,N,25956,24433,N,N,30561,N,31095,28473,N,
-N,30808,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31017,N,N,N,N,N,30809,N,N,N,28221,N,N,N,
-22598,N,N,25699,30030,N,N,N,N,23897,N,N,N,N,22887,21049,21827,N,N,23141,23120,
-N,20825,20056,N,19294,29740,23163,N,30313,26739,20268,28784,N,29821,23368,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,20032,25428,20815,29045,N,19826,N,20331,N,N,N,19768,
-N,N,N,N,N,N,25382,20826,29221,N,N,N,N,N,29222,N,25678,N,N,N,N,N,N,N,21371,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,28969,N,N,N,29257,N,N,N,N,N,N,N,
-N,N,N,28504,26185,N,22584,31347,N,N,N,N,N,N,N,N,N,N,29493,N,N,30756,N,N,20851,
-26184,N,N,N,N,30810,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,23657,24151,N,N,N,N,N,
-19295,N,N,N,20332,N,N,N,N,29791,N,N,20852,21050,N,N,N,24434,N,N,N,24887,N,N,N,
-N,25123,21372,N,N,28006,N,N,N,N,N,23369,N,N,N,25722,N,20318,N,N,20048,N,N,N,N,
-21843,29557,30510,N,N,28488,N,19827,30031,25971,28738,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,19025,N,N,N,27249,N,20518,N,N,N,N,N,N,N,N,22874,28715,N,N,N,
-N,N,27495,N,N,N,25920,31797,N,N,N,N,N,25668,N,N,N,N,N,N,N,N,N,N,N,19497,32070,
-N,N,N,N,N,27189,N,25898,24378,24927,N,23121,N,N,N,N,24888,N,26740,21373,N,N,N,
-N,25124,N,N,N,N,N,29258,N,N,N,N,N,N,N,N,N,23142,30515,N,N,N,N,N,N,N,N,N,N,N,N,
-32077,N,N,N,29494,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,28247,N,N,
-N,N,N,N,N,30020,N,N,N,N,N,N,N,N,22564,N,N,N,N,N,29223,N,N,N,N,N,N,N,N,22840,
-22841,28489,N,N,N,N,N,N,N,N,N,N,N,N,N,22094,N,N,N,N,N,N,N,N,30539,24366,26741,
-N,N,N,N,N,N,21045,N,N,N,21333,N,N,N,N,N,29772,23164,N,N,N,N,N,22888,N,30571,
-30025,N,29500,N,23122,N,N,N,N,N,N,N,N,21301,N,N,N,N,N,26678,N,N,22095,29754,N,
-30537,N,N,19498,N,N,28739,19542,N,N,N,20563,N,21309,N,N,N,23419,N,19296,N,N,N,
-N,N,N,21348,30327,N,N,21818,29517,19297,N,N,N,N,27508,N,N,N,N,N,29741,N,31786,
-N,N,N,N,N,30572,N,N,N,26742,23143,N,N,N,30540,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,25921,N,N,N,N,24686,N,N,N,N,N,21885,N,N,N,N,N,N,20070,31787,21819,N,N,
-29224,N,N,N,N,N,N,25125,19769,27250,19271,N,19828,N,N,23343,28505,N,N,N,N,N,
-19770,N,N,31865,N,N,N,N,24435,20071,23106,N,20269,N,N,N,N,26489,30760,N,N,N,N,
-N,N,29538,N,N,N,19058,24356,N,N,21572,N,N,N,N,N,19543,25922,N,N,N,N,19771,N,
-28506,28248,N,23847,25126,N,N,N,N,N,24640,N,N,N,22064,30794,N,31866,N,22910,N,
-N,N,N,24112,N,N,N,23916,23144,N,N,N,N,N,21600,N,22137,N,19799,24152,N,N,29304,
-N,25686,N,N,20549,29742,N,23848,N,N,N,27973,29526,N,N,24153,25446,N,N,N,N,N,N,
-21288,N,23344,N,N,25946,25407,N,N,N,23345,N,N,N,21865,N,N,N,N,N,24641,28507,N,
-N,28777,N,N,22322,N,N,N,N,20605,N,N,N,N,N,N,N,N,22889,N,N,20606,N,27757,21289,
-N,29225,28740,N,N,25186,26991,N,N,N,31057,N,N,26969,N,N,N,N,N,26714,23107,
-23108,21573,N,26490,19808,25392,N,23346,31556,N,29539,N,22821,31591,23883,
-20564,N,26166,24622,32090,N,N,N,N,N,N,N,N,23605,24696,26417,N,N,N,N,30064,N,
-22620,27974,N,N,N,N,24889,N,25408,31040,26992,N,N,22875,N,29540,N,N,N,23606,
-25705,N,N,N,N,N,28741,25409,31820,31821,N,N,N,N,29259,N,29260,N,N,N,25679,N,N,
-N,N,N,N,N,N,N,29019,N,31321,N,28984,32117,24697,N,N,N,N,26491,31799,31844,
-31557,25447,22585,N,30328,N,N,23621,19544,N,N,N,24623,29799,N,28508,20348,
-28509,N,29226,N,N,N,N,N,N,N,N,N,32062,N,N,18988,32059,32071,N,N,N,N,26418,N,
-27217,24436,N,N,N,N,20844,25694,25923,N,N,N,N,22822,N,N,19772,N,29541,N,N,N,N,
-N,N,N,N,27989,N,N,22842,N,N,N,28007,31541,30828,N,N,N,N,24679,N,19545,N,N,
-21574,N,N,N,N,N,26405,N,21877,21310,N,31867,N,N,N,N,N,N,N,N,N,N,N,N,25714,N,N,
-24437,N,N,26744,30829,N,N,20039,N,N,N,N,N,32118,N,N,N,N,N,N,N,N,N,26712,N,
-19800,26454,19546,N,N,19043,24438,28743,28742,N,22586,N,29044,29808,30028,N,N,
-31845,N,N,N,N,27205,27251,N,23899,N,23639,N,N,N,N,N,N,24189,29305,N,21831,N,N,
-N,22608,N,28744,20769,20770,N,N,N,N,N,N,22868,22120,22858,N,23089,22599,23650,
-29518,30068,N,N,28985,N,N,23123,N,30314,N,N,N,20341,N,N,32046,N,N,N,N,N,N,N,N,
-19026,N,N,24372,N,N,N,N,22365,31290,28199,30013,N,30837,N,N,28008,N,N,N,N,N,
-21601,N,20771,24918,N,N,N,N,N,N,N,N,N,N,N,N,N,31096,N,23370,19321,21588,N,
-22876,N,28222,N,30573,N,N,N,21102,N,N,24934,30585,N,N,N,N,N,N,N,23917,N,26715,
-N,23347,N,N,N,20855,24624,N,N,21602,N,30295,N,22393,N,N,22621,N,19837,29227,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,19773,30786,N,N,29228,N,N,18989,18990,20270,N,
-N,N,N,N,25410,N,N,N,N,N,23607,N,N,N,N,N,N,N,N,N,N,23386,22843,19059,30291,
-26232,27253,N,N,N,N,N,27254,N,N,30329,N,N,N,N,N,N,N,N,N,N,N,20271,N,N,19027,N,
-N,18991,21040,28986,N,22323,25411,29565,24154,N,N,N,N,24155,N,N,28510,25187,
-28283,N,N,24439,22346,N,N,N,N,N,N,N,N,N,20072,23387,N,N,N,N,N,N,N,28987,N,N,N,
-N,26993,N,N,N,N,N,N,N,N,31287,20550,N,N,19499,28200,N,N,19322,31097,19581,
-21374,N,N,N,N,25680,N,N,N,N,N,29294,N,21589,24397,N,31800,20816,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29261,N,N,N,N,N,N,N,N,30546,N,N,N,N,N,N,N,N,
-19028,N,21849,N,N,N,22622,N,N,N,N,N,N,N,N,N,19801,N,N,N,28201,30268,N,N,19547,
-N,N,N,N,N,28745,N,31868,N,26697,29822,N,N,N,N,26492,22366,N,N,N,N,24156,N,
-28716,19582,19809,N,24890,N,23407,23090,N,N,N,N,N,N,N,N,N,N,N,N,N,20773,23608,
-N,N,N,22646,N,20772,N,19810,N,N,N,N,23658,N,N,28791,N,28746,20542,N,23900,N,N,
-N,N,21590,21334,N,N,N,N,N,N,27984,19745,N,N,N,N,N,24373,N,N,N,24440,N,N,N,N,N,
-N,21537,20018,26698,N,N,N,N,27509,N,N,N,N,N,N,N,25429,30032,N,N,N,29985,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22823,N,N,N,N,N,N,N,N,25899,N,N,N,N,N,N,N,N,
-N,N,N,N,26187,N,30065,N,N,N,N,N,N,N,N,N,N,25925,N,N,N,N,N,N,N,N,31011,24667,
-30315,N,19313,N,22890,29986,N,N,N,22353,N,20856,27256,27257,23091,N,N,N,N,
-28511,N,N,29039,N,25974,28223,25188,N,N,N,N,N,20543,N,31276,30033,26419,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,26942,N,N,N,N,N,29262,23348,N,
-N,N,N,N,N,N,N,31822,N,23918,N,N,N,N,N,N,26420,N,N,N,N,N,22324,N,N,N,N,N,N,
-30516,N,N,N,N,N,19774,N,23145,N,N,N,N,N,N,N,20272,30553,29542,N,N,20057,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,20010,N,19272,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,20519,N,28747,N,20551,25669,N,N,N,N,N,N,N,23392,N,N,N,N,N,N,21850,N,
-22311,N,N,N,28224,N,30838,N,N,N,N,30034,28009,N,22844,N,25926,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,29987,N,N,23124,25127,31612,N,N,29020,N,N,N,N,N,N,19060,N,N,
-N,26746,N,N,20073,N,N,N,N,N,N,27000,25189,N,N,N,N,20537,21618,N,N,N,N,N,20774,
-N,24398,N,N,N,N,N,N,N,N,N,31860,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,21290,
-N,N,N,19500,N,N,N,N,28512,N,N,N,25957,20565,N,N,N,N,N,N,N,N,23420,N,N,N,N,
-31846,N,N,N,N,N,19326,28010,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,24113,N,N,N,N,N,N,N,
-31075,N,N,N,N,N,N,21538,20342,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22096,N,N,N,N,N,N,
-21866,29038,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31307,N,N,N,N,
-25889,21809,N,N,N,N,N,20333,N,28011,N,N,N,N,N,21810,N,N,N,21820,N,N,N,N,N,N,N,
-N,N,32098,29485,N,32091,N,N,N,N,N,N,N,N,N,N,N,N,N,N,26928,N,N,N,N,N,N,N,20775,
-N,N,32099,20019,N,N,N,N,N,N,N,32100,31310,N,N,N,N,18992,N,30503,N,20273,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,26146,N,31798,29229,28513,29486,23622,22891,N,N,N,26720,
-N,N,N,N,N,N,N,24872,N,N,N,N,21878,20349,N,N,24157,N,N,N,22865,N,N,N,25706,
-29263,N,30527,N,N,25190,25128,N,N,N,N,N,N,N,N,N,N,N,25430,N,27985,N,N,N,N,N,
-27001,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22065,24114,N,N,24680,N,N,21291,N,27484,N,
-N,24367,N,19011,N,N,28284,N,32067,N,N,N,27510,20274,N,N,N,N,22892,N,22845,N,
-22623,N,N,21560,27454,23919,N,23920,23921,23922,N,N,22846,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,31558,20275,28285,N,N,N,N,N,N,25643,N,23109,N,22636,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,20776,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,25129,N,N,24124,26421,N,N,
-N,N,N,23408,N,28514,29040,20276,N,N,N,N,N,N,N,N,N,N,N,23409,N,24625,N,N,N,N,
-24357,N,31058,N,N,26493,N,N,26147,31601,19248,29230,N,N,N,N,N,N,N,19815,N,
-26716,N,N,26455,N,N,30528,N,20579,N,N,N,23073,N,N,N,19517,N,N,20777,23884,N,N,
-25470,20778,26666,N,27190,31098,26188,30296,N,N,N,21575,N,N,N,22859,N,22866,
-21323,22647,23081,30072,N,N,24158,29231,30761,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-22600,N,N,28225,N,N,N,N,31041,N,N,N,N,23923,27258,N,30269,24891,19775,29780,
-26189,N,31823,31522,N,24668,N,N,N,N,29755,23125,N,31026,N,N,N,N,N,N,31602,N,
-23414,N,24159,N,N,N,23410,N,N,N,N,N,30812,30574,27496,N,21114,N,N,28988,N,N,
-31322,N,N,23146,23110,30529,N,N,26422,25927,22060,N,N,N,N,23623,N,N,N,N,N,
-24873,N,25130,N,21798,N,N,21591,N,N,N,N,N,N,29264,N,27259,N,24669,31603,N,N,N,
-N,N,N,N,28989,N,N,25191,32087,N,20040,27191,N,31808,N,32103,30575,N,N,22325,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,28474,29021,N,24115,N,N,N,N,N,N,
-26699,N,N,30813,N,N,31559,21832,N,22367,N,23849,N,N,N,N,N,26929,N,N,31277,
-30297,31348,N,N,N,N,N,30762,N,N,N,N,N,26222,N,19548,24892,24687,N,N,26943,
-31869,26190,N,N,24919,N,26191,N,29809,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,25715,N,N,25723,N,N,31076,N,N,N,N,N,N,N,N,N,N,28515,N,N,20334,30270,
-24626,31870,20779,N,N,N,22394,N,N,N,31560,N,25175,N,N,N,N,N,N,21539,28792,
-22312,N,N,N,24935,N,N,21311,N,N,N,N,N,N,28516,N,22341,27490,N,N,31847,N,N,
-25634,N,25192,N,26192,N,31592,29800,25972,29756,29781,24374,N,31801,28226,
-19061,N,N,N,28517,19298,21540,N,24160,23165,25670,26686,N,N,N,N,24670,30260,
-27218,N,31099,N,N,24642,N,19044,N,26423,N,27261,N,22877,N,23092,28202,31593,N,
-N,N,N,23371,23093,N,N,N,N,N,28990,N,N,21292,N,N,N,N,N,N,N,N,31561,N,24399,N,N,
-21312,25431,N,28518,31824,N,N,N,N,N,N,N,26944,N,N,N,30035,N,N,27740,30519,N,N,
-27192,20857,N,N,N,N,N,N,23624,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,27193,
-N,N,N,N,N,29022,N,N,N,N,N,22326,20277,N,22824,N,N,27758,N,N,23850,N,N,N,N,
-19746,26670,N,N,N,24893,N,29265,N,N,N,N,26945,N,N,N,21116,N,N,N,N,N,N,N,23349,
-N,29543,22654,N,N,N,31825,N,27954,29743,N,31523,N,N,31809,N,28203,21541,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29810,N,N,N,N,28249,N,N,N,31562,
-N,N,N,N,N,19811,22587,25947,30839,N,N,N,30292,N,N,N,N,N,N,N,N,22313,N,19273,N,
-N,26193,28748,N,N,N,N,N,N,N,N,N,N,22574,N,31059,21886,N,N,N,N,N,N,N,22588,
-29232,N,N,N,N,25131,29544,N,N,N,N,N,28482,N,N,N,N,N,N,28012,N,26424,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,23166,N,N,19518,N,N,29308,23147,N,25176,27990,N,N,22097,
-24627,N,N,31826,N,27464,N,N,N,N,N,N,N,N,21313,28749,N,20343,N,N,N,N,N,N,N,N,N,
-27986,N,21592,23625,22385,N,N,24379,N,N,29477,N,N,N,29773,N,N,N,N,28991,30769,
-N,27002,N,N,N,31563,N,N,19029,N,N,N,N,N,N,N,N,N,N,N,31060,30538,N,N,22088,N,N,
-N,N,N,N,31848,29501,N,28286,N,26494,N,N,N,N,N,21314,N,N,N,N,21302,N,19501,
-30330,22066,21080,N,N,N,N,N,N,26456,N,N,N,N,N,N,N,N,N,N,25381,N,N,N,N,26425,N,
-N,N,N,28717,31564,27425,N,N,21542,N,N,N,N,31565,N,21821,29023,N,N,30331,N,
-24116,N,N,N,N,N,N,N,N,N,N,N,N,21867,25928,N,N,N,31524,21561,N,N,24161,N,25635,
-N,N,N,22327,N,30830,N,N,N,24117,N,N,22098,N,31061,26426,27477,21879,28519,
-24894,N,N,N,31278,N,N,N,22121,22126,N,N,N,N,N,N,26427,N,N,N,N,N,N,N,27723,N,N,
-N,N,N,N,21811,N,N,N,N,N,N,N,N,N,N,N,N,N,20020,N,N,N,31525,24942,N,N,N,N,N,N,
-30504,N,N,N,N,31566,N,N,N,N,N,22589,N,N,N,N,N,N,N,31613,N,N,N,N,31849,N,N,N,N,
-N,N,N,20278,N,N,N,27975,28204,N,N,N,N,N,N,N,19549,N,N,N,N,30247,N,N,N,26234,N,
-N,N,29988,N,N,N,N,N,32092,27955,20041,N,N,N,N,N,N,28520,N,N,24895,N,N,N,N,N,N,
-31323,19299,30505,N,31526,N,N,N,23609,N,N,N,28992,27976,28483,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,22061,N,N,32078,N,N,N,26657,N,N,N,N,N,N,N,N,31604,21799,N,N,N,
-29046,N,26195,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,19550,N,N,N,N,N,N,N,30770,N,N,
-N,23659,32054,N,N,N,N,25962,N,N,29024,N,N,N,N,N,N,N,N,N,N,N,N,23372,23885,N,N,
-N,21576,N,N,22893,N,N,N,N,29989,N,N,N,N,N,N,N,N,N,26235,N,N,N,N,N,26196,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,32072,N,22049,32063,N,31827,N,28449,N,26428,N,N,N,N,
-N,20846,N,N,26197,N,N,26994,N,24368,N,N,N,N,N,22624,31802,32047,28750,N,23393,
-N,N,25929,N,27956,N,N,N,N,N,N,N,N,N,N,N,N,N,N,24643,N,N,N,N,N,N,25432,N,N,N,N,
-27003,27176,N,N,N,N,32055,N,N,31527,N,26946,N,N,N,N,32119,N,N,N,N,N,25177,N,N,
-23660,N,N,N,N,N,N,N,N,N,26658,N,N,N,N,26224,N,N,N,N,N,N,N,32120,32121,N,N,N,
-30271,N,N,26407,N,26199,N,N,N,N,21619,21577,N,N,N,N,22138,N,22386,N,24896,N,
-23394,26200,N,N,N,N,N,N,N,N,N,26429,N,N,N,N,N,28751,29502,25132,N,N,N,N,N,
-30007,24688,N,N,N,N,N,N,N,N,N,N,N,N,32056,25448,N,21543,26748,31314,N,N,N,N,N,
-30831,N,N,N,N,N,N,N,N,N,22099,N,N,N,N,N,N,N,N,N,N,21812,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,28752,N,30576,28211,N,N,27194,N,27219,N,N,27977,23851,N,N,N,25900,32033,
-N,24400,27699,N,24401,N,N,N,N,N,28013,30776,30586,N,N,N,30763,N,N,N,N,N,29792,
-N,N,N,N,N,21562,25651,N,26970,N,24118,N,22847,N,22848,22127,N,N,N,N,22860,N,
-23082,N,N,N,N,N,N,N,N,24421,N,N,N,N,N,N,30565,N,N,N,19506,N,N,24441,22368,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,21563,N,N,N,N,
-32122,N,N,N,N,19507,N,N,23411,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,24402,N,20042,N,
-28250,N,N,N,N,N,N,N,N,N,25700,N,31567,N,N,N,N,N,N,20279,N,28227,N,N,N,N,N,N,N,
-20074,N,N,N,N,N,N,N,25133,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22369,31349,N,N,21833,
-30764,26457,N,N,N,N,N,N,N,N,N,N,N,29545,N,N,N,N,22637,25412,28785,N,N,N,N,N,N,
-N,26725,N,N,N,24698,28228,22878,N,N,N,N,N,N,N,N,N,N,27426,27427,N,N,N,N,N,N,
-31810,27195,N,N,N,N,26667,24162,N,N,N,N,N,N,N,N,N,N,28015,N,26659,N,N,N,N,
-20337,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,21564,N,31850,N,N,N,N,N,26430,N,31858,N,
-N,22068,N,N,25134,N,21303,31308,N,N,N,N,N,N,N,N,31324,N,27957,24931,N,26668,N,
-26717,N,N,28521,N,N,N,N,N,29757,N,20280,26971,20780,N,N,N,N,N,N,23111,N,N,N,N,
-N,N,N,27465,N,26700,N,N,N,24119,N,N,N,N,22076,21349,N,N,N,N,N,31325,N,N,N,N,N,
-N,23126,N,18993,N,N,N,N,N,N,23112,24358,N,31027,29266,N,19012,N,N,N,N,N,N,
-20043,N,N,19829,N,N,N,32048,21800,N,28993,N,N,25193,23626,27700,31296,N,N,
-31528,20520,N,N,23148,N,N,N,N,N,N,N,N,N,22894,N,24699,N,N,N,28522,31326,24644,
-N,20281,N,21834,22370,25135,N,22328,N,N,N,N,N,N,N,N,N,26701,N,N,N,N,N,N,N,
-30298,N,N,N,N,28450,25178,30332,N,N,31568,20781,N,19812,N,20782,23661,26702,N,
-28793,20021,26236,N,N,22395,20566,23925,30577,N,30333,N,23415,N,N,N,N,31594,
-26972,22849,N,30066,24645,N,N,N,N,N,N,27220,N,N,N,N,N,N,N,N,N,31042,N,27196,N,
-21061,31569,26432,27429,N,24442,25378,22329,N,26947,N,26749,26671,N,N,29267,
-31529,22565,N,N,N,N,21835,N,N,N,N,N,N,N,N,N,N,N,N,N,N,20552,N,N,N,20783,22371,
-N,N,N,24646,N,22050,N,28016,N,N,N,N,N,N,N,N,N,N,N,N,22387,N,N,N,31828,N,23127,
-19551,N,29268,N,20784,N,19552,N,23421,29503,N,28753,N,N,N,N,N,31803,N,25136,N,
-N,26149,N,N,N,25179,N,N,N,24414,N,24647,N,N,N,N,N,N,29295,N,N,N,19553,N,N,N,N,
-22122,N,N,N,N,26434,N,N,N,20022,N,29504,N,19838,N,N,N,31570,N,30840,30587,N,N,
-26687,N,N,N,N,N,N,N,26679,N,N,N,N,N,N,N,N,27958,23610,N,N,19508,N,N,N,N,N,N,N,
-N,N,N,N,N,29047,N,N,N,26680,N,N,19062,N,25636,29782,N,N,N,24422,N,N,N,24359,N,
-24423,24897,N,26948,N,N,23627,26949,N,N,N,28451,27430,19235,25449,N,N,N,20859,
-28452,N,28523,N,N,N,N,N,N,N,N,N,N,N,N,20532,N,N,N,N,19747,N,N,26726,N,28453,N,
-21324,23149,N,N,N,N,22330,N,29269,30053,22895,N,N,N,N,31028,N,N,21844,32079,N,
-N,N,23395,N,N,N,N,29025,27702,N,N,N,N,31614,21335,N,20785,N,19249,N,N,N,N,
-20786,N,N,N,N,N,N,19250,28994,N,N,29793,31029,N,N,24899,24898,N,27511,N,N,N,N,
-N,N,N,N,N,N,N,24360,N,N,N,N,N,N,N,19274,N,N,N,N,N,26169,N,N,N,N,N,30814,31018,
-19063,N,27959,N,N,21304,29270,N,N,21593,28229,29296,N,N,N,18994,N,N,23611,N,
-29048,N,N,N,N,N,27703,N,N,N,N,25930,N,30272,32093,N,N,21603,19554,N,30548,N,N,
-N,N,N,N,22373,N,N,N,N,N,N,N,N,N,N,N,N,N,21315,N,22566,N,30273,N,N,N,N,N,23926,
-N,19776,25948,N,N,N,N,N,N,N,N,N,N,N,N,25931,N,N,N,N,N,N,N,N,N,N,N,24900,N,N,N,
-N,N,26672,29744,29546,23150,N,22331,N,25137,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,22314,N,N,N,N,N,N,22139,N,N,N,N,N,N,N,N,N,25695,N,19030,N,N,N,27432,N,N,
-N,23422,N,N,N,N,N,N,N,N,N,N,30274,N,N,28475,N,N,N,N,21629,N,N,24648,N,N,N,
-26681,N,28454,N,N,N,N,N,19748,N,N,21620,23329,23388,23389,N,N,N,N,N,28252,N,
-19275,31829,N,N,N,N,N,N,20075,N,19777,N,N,31571,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,31019,N,N,N,N,N,N,N,N,N,N,N,30036,N,N,N,N,22825,N,N,
-26973,23373,N,N,23886,N,26435,N,27724,N,N,N,N,N,N,N,31084,N,N,N,19276,N,N,N,N,
-24700,21544,N,27987,22639,N,29271,N,19064,23151,N,N,22100,N,N,N,N,N,N,22861,N,
-N,N,22638,N,29249,N,N,N,24403,N,N,N,23152,N,25194,24701,N,N,22648,N,N,N,30511,
-23094,N,19031,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29272,N,22649,N,N,N,N,N,N,N,
-N,31327,N,N,N,N,N,N,N,N,N,N,N,N,N,20335,22850,N,28754,N,25681,N,N,N,29495,N,N,
-N,N,N,N,N,N,N,N,N,N,31328,N,N,N,N,N,N,N,N,N,N,N,N,N,28524,N,N,N,N,N,25138,N,
-21565,N,N,22862,N,N,N,N,29794,N,N,N,N,N,N,N,N,N,N,N,N,N,21545,N,N,N,N,19778,
-26458,N,N,N,N,N,N,N,N,N,N,N,29273,N,N,N,N,N,22826,N,N,N,N,N,N,N,N,N,N,N,N,
-22590,N,N,N,N,N,N,23597,N,N,N,N,N,N,25195,22140,N,N,19065,N,N,21594,N,N,N,N,N,
-N,N,29783,19489,N,N,20282,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30008,
-N,N,N,22851,20584,N,N,N,N,N,25413,27512,N,29233,N,N,N,20283,N,N,N,21293,26721,
-20076,N,N,N,24628,24163,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,23927,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,29234,29558,30299,N,N,N,N,22398,N,N,N,N,N,30815,N,30578,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,20521,N,N,N,N,N,N,N,N,N,26202,N,N,N,N,N,N,N,N,N,N,
-N,N,N,29990,N,N,N,N,N,N,N,N,N,N,N,N,N,22332,19555,N,N,26203,N,N,N,N,N,N,N,N,N,
-N,N,N,23901,N,N,N,N,20787,N,N,N,N,N,28525,N,N,N,N,22110,25716,24943,N,N,23928,
-N,N,N,N,N,26703,N,N,N,N,N,N,N,N,N,N,N,19045,N,N,N,23585,N,24629,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,31788,31789,22567,N,N,N,N,27960,N,N,N,23350,N,N,N,N,22128,
-29487,N,N,19749,N,23153,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22568,N,
-N,N,19556,N,N,20788,N,N,N,N,N,19032,N,N,N,N,N,23154,29991,N,N,N,N,N,N,N,N,N,N,
-N,N,29992,N,N,N,N,N,N,N,26150,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,21868,
-21880,23155,N,N,N,N,N,N,N,N,N,N,N,N,N,25414,N,N,N,24164,N,24165,20789,N,N,N,N,
-N,20790,20791,29235,N,N,N,N,N,N,26974,N,N,N,N,N,28755,29236,N,N,28756,19300,
-31572,30054,25450,N,24166,N,N,N,N,24404,N,N,30841,N,N,N,N,28718,N,N,N,N,N,N,N,
-N,N,N,N,N,20792,N,N,N,N,22111,N,20567,N,N,N,N,N,N,N,N,N,N,N,31777,28526,23640,
-N,26975,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,25949,32123,N,N,24649,N,N,N,
-22089,N,N,21546,N,25932,N,N,N,N,N,26976,N,N,N,20568,31778,21566,25139,24167,N,
-N,N,N,N,N,N,23612,21046,30037,N,N,N,N,N,20001,29993,N,N,23929,N,N,23930,N,N,N,
-N,N,N,28757,N,N,N,N,30303,N,29274,25707,N,29297,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,27705,32124,N,N,N,N,24874,N,N,19033,N,N,28527,N,29994,N,N,N,N,N,N,27769,N,
-N,30765,N,29250,30275,N,22354,N,N,31010,28758,N,N,N,N,N,N,N,N,N,N,N,N,N,28794,
-N,N,30304,N,N,N,N,26995,29251,N,N,N,21547,18995,19750,N,19779,19802,N,N,N,N,N,
-22863,N,N,30276,N,N,N,28253,26436,N,N,N,N,N,N,N,N,25140,N,N,N,N,N,N,N,N,N,
-24418,26459,N,N,N,N,N,N,26673,N,31790,N,N,N,N,25933,N,N,N,31339,N,20284,N,N,
-20322,19830,N,N,28528,N,29758,N,21581,N,N,29496,N,N,N,26913,N,N,N,N,N,N,N,N,N,
-29298,29547,N,28759,N,N,20311,N,N,N,N,N,N,20319,N,N,N,N,N,N,N,N,N,26688,26689,
-N,N,N,20323,26914,N,N,N,N,N,N,N,N,N,N,20522,N,N,N,N,N,N,N,N,N,29505,20523,N,
-21604,N,N,28476,22561,N,N,N,N,N,N,N,N,N,N,N,22879,N,29527,N,N,N,23613,N,19557,
-28017,N,N,29026,N,21595,N,N,N,N,25141,N,N,19046,N,21294,N,N,N,N,N,N,19558,N,N,
-29011,30055,N,N,N,N,19034,31598,N,24901,N,N,N,N,N,N,N,24425,N,28254,N,N,30530,
-N,22562,N,N,N,N,N,23852,N,N,N,N,N,28719,22077,N,N,N,N,N,N,N,N,N,N,N,24875,N,N,
-N,N,N,N,N,N,N,N,N,N,31030,N,N,21621,N,20553,28455,25196,N,23402,20044,30056,
-30549,N,21325,N,29566,N,N,N,N,N,N,N,N,N,20533,N,N,N,N,N,N,N,N,N,N,N,24702,N,
-24443,N,N,N,N,N,N,26205,N,N,N,N,N,N,N,26660,N,N,N,N,N,N,N,N,N,19277,N,N,N,
-28456,N,N,N,28212,N,N,N,N,23128,20793,N,24361,N,N,29488,N,N,19524,N,N,N,20023,
-N,N,N,N,N,N,N,N,N,N,N,28457,N,N,N,24405,N,N,27991,N,N,N,28230,N,N,N,N,N,N,N,
-28477,31830,N,N,23412,N,28458,30777,N,30057,N,N,N,N,N,N,N,N,25433,N,N,N,N,N,N,
-N,N,N,N,N,N,N,24902,N,N,N,21567,N,N,N,N,24168,28778,N,N,N,N,N,N,N,N,N,N,29506,
-N,N,N,N,N,N,N,N,N,N,N,21295,N,N,19035,N,N,N,N,N,31831,N,N,27992,24903,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,29784,22067,23853,N,N,N,21822,N,N,N,N,N,N,N,N,28995,
-28255,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22123,N,N,N,29785,N,N,N,N,N,N,N,
-22374,N,N,N,N,N,N,23095,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,23931,N,N,N,N,N,23887,N,
-N,N,N,N,N,N,N,22563,N,N,23129,N,28760,28484,N,N,N,N,N,N,24920,N,N,N,N,N,29012,
-N,28018,N,N,N,N,N,N,21851,N,N,21852,29508,19287,N,N,N,N,N,25142,N,N,N,N,28529,
-N,N,N,N,N,N,N,N,N,N,N,31573,N,N,N,N,N,N,N,N,N,N,N,21336,N,N,N,N,N,N,N,23888,
-28761,19251,N,N,N,N,N,N,21853,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,19751,N,N,
-20524,20794,N,28996,N,25907,31605,26977,32096,31804,N,23074,23075,N,21025,N,N,
-21103,N,N,N,25197,N,N,24169,20060,29237,20580,23889,N,N,N,N,24904,23351,24419,
-N,N,N,N,N,N,N,N,27961,28997,N,29519,22315,24876,N,N,25451,N,28231,N,N,N,24905,
-19066,N,N,N,N,N,N,N,28795,31329,28762,19559,23156,N,N,N,N,N,N,N,N,N,19519,N,N,
-N,N,N,N,N,N,N,N,N,N,N,20077,N,N,21801,31330,N,N,N,20581,N,27478,N,27743,N,N,N,
-24444,N,N,30550,24170,19252,N,N,28478,N,N,19509,N,N,N,N,N,20285,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,28530,25143,N,N,N,19560,N,N,N,N,N,N,N,N,28796,N,N,N,22112,N,
-28998,N,N,N,N,N,N,N,N,N,25144,27435,N,N,N,19253,22609,N,29774,29559,N,N,22342,
-N,20795,30506,N,27978,22355,22650,N,N,N,N,N,N,N,30277,N,N,20812,23932,N,N,N,N,
-N,N,N,N,N,N,24445,N,31077,N,24650,N,N,29309,21296,N,29811,23113,N,26206,N,N,N,
-N,30778,26704,N,N,22651,N,N,27221,N,N,N,N,22051,N,N,N,N,N,N,30278,29275,25724,
-N,N,N,N,N,N,N,N,N,N,26674,N,N,N,N,N,23130,N,29276,31574,26930,N,28205,N,31331,
-N,N,N,N,N,N,N,23662,N,N,30058,26208,N,28797,N,N,N,N,N,22316,N,N,N,N,N,30021,
-28256,N,N,23397,N,23902,N,N,22896,26915,N,N,N,N,N,N,N,N,N,N,29049,N,29252,
-24651,N,N,N,N,N,N,N,N,26916,N,N,25145,N,N,N,N,N,N,N,25393,31851,19752,N,19510,
-N,N,28763,N,N,N,N,N,N,N,N,26170,N,N,19753,N,N,N,N,N,29507,N,N,N,N,N,N,N,N,N,
-24921,N,N,28459,N,N,N,26437,N,N,24681,N,29509,N,N,21568,21823,23854,N,31100,N,
-19520,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,25890,N,N,N,20024,N,N,N,22610,31062,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,28970,20049,N,N,30279,N,23403,N,24446,N,
-N,22625,N,30579,N,22375,N,N,N,N,N,N,N,N,N,N,N,21630,N,N,20796,N,25935,N,19254,
-N,23096,N,N,N,N,N,19780,N,N,N,N,N,22078,N,N,N,25146,N,N,N,N,N,20312,N,N,N,
-24652,27513,N,N,N,N,N,N,N,N,32125,N,N,N,N,N,22376,19288,N,N,N,26978,N,N,N,
-26682,N,N,N,25415,N,N,N,N,27725,N,27726,N,22079,N,N,N,25383,N,24406,32104,N,N,
-N,N,N,N,N,N,N,28257,30248,23933,N,N,N,N,N,N,N,30779,N,26705,N,N,N,N,31063,N,N,
-N,N,N,N,N,N,20078,N,N,27727,26917,22101,N,19781,N,27962,20797,N,N,20286,N,N,
-27707,N,N,N,21041,N,N,N,N,19561,N,22852,27004,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,20798,N,N,N,N,N,27708,N,N,25901,N,N,N,N,N,N,30512,N,19562,N,N,N,21316,
-N,N,22080,N,N,N,22141,N,N,N,N,N,N,N,N,N,N,N,24865,N,24125,N,30249,N,N,N,23076,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22052,30022,N,24866,26950,N,N,N,29253,N,N,N,N,
-N,29801,22124,27475,N,N,N,N,27709,25180,24171,28764,N,27455,N,22350,20799,N,N,
-N,N,N,N,N,N,N,29995,N,N,N,N,31101,N,19036,N,N,N,19782,29238,N,N,23934,N,N,N,
-19511,23352,N,N,N,N,20585,N,20061,27456,N,32034,N,N,N,N,N,30795,N,N,N,N,N,N,N,
-N,27222,28976,N,N,N,N,N,N,N,23374,N,30531,N,N,N,N,N,N,N,N,N,N,N,23375,19236,N,
-N,30816,N,N,31575,N,N,27466,24609,N,N,N,N,N,N,N,N,N,N,N,20045,N,N,21596,N,N,N,
-32088,N,N,N,N,21110,29239,N,N,31350,30250,31351,22630,N,29745,N,N,N,N,N,N,N,N,
-N,N,N,N,N,26706,N,19013,19563,N,N,N,N,N,N,N,25198,N,N,N,N,N,25147,N,30509,N,N,
-N,30817,N,N,N,N,N,N,N,N,N,29548,N,N,N,N,24097,N,N,N,N,N,N,N,N,N,N,N,N,25725,N,
-N,25452,N,23855,23856,N,N,19255,26707,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,24867,
-21088,N,N,N,N,28798,N,N,N,N,26918,19314,N,N,N,N,N,N,28019,23641,24653,N,N,N,N,
-30554,23353,N,N,N,N,N,N,N,19502,N,23131,N,N,N,N,19783,N,N,N,N,N,N,N,N,N,N,
-23857,N,22575,25379,N,N,20079,N,N,29299,N,N,N,N,30771,N,N,N,N,N,N,N,N,N,N,
-24654,N,30077,N,N,N,N,27500,N,N,21317,31852,21083,21611,N,24098,N,N,N,25958,N,
-N,N,N,N,N,28720,N,N,N,N,N,N,N,N,N,N,21828,N,N,N,N,N,N,28020,N,N,N,25453,N,
-26690,N,28021,22396,N,27963,N,N,30251,N,N,N,N,N,29240,30280,N,N,N,N,N,21350,
-29277,20287,N,27436,20288,N,26152,32105,N,20289,N,24671,24172,N,N,N,N,24610,N,
-N,N,N,N,N,N,N,29759,25199,N,22897,28999,N,19256,N,N,N,N,N,N,N,N,31102,23354,
-23157,N,N,N,N,N,N,N,N,30316,23132,31332,N,24655,N,N,N,N,N,N,23858,N,N,N,N,
-26153,N,28531,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29549,N,N,N,N,N,N,N,N,N,N,
-27514,N,31078,N,N,N,N,N,N,N,19037,21854,N,19038,24420,N,N,N,26237,N,29996,N,N,
-N,N,N,25717,N,N,N,N,N,N,N,N,N,N,N,N,26979,N,27979,20324,N,N,N,22611,N,N,N,N,N,
-N,23859,21612,N,N,29241,N,24375,N,N,N,N,N,19278,31576,N,N,20569,N,N,23890,
-30580,26460,25637,N,31779,N,23355,N,N,N,29242,27005,20554,N,30038,22853,25652,
-N,27943,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,27197,26238,N,30532,29997,N,22880,N,
-N,N,18996,N,N,30818,20290,N,27710,N,N,N,25908,19784,28232,N,N,N,N,N,N,N,N,N,
-26440,N,N,N,N,N,N,N,N,N,N,N,19785,31031,29032,22898,23413,18997,22854,N,N,N,
-22601,N,N,N,N,N,N,N,N,N,N,N,N,N,22827,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,27964,N,
-N,22612,N,N,N,23642,N,25148,N,N,31853,27744,21118,N,26951,26154,N,N,N,N,N,N,
-25200,N,N,N,N,N,N,31291,N,29998,31530,N,N,N,N,27771,N,27711,31832,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,21605,N,N,N,31043,N,N,N,
-28258,N,N,N,N,N,N,N,N,N,N,N,N,N,22377,28022,N,N,N,24173,N,N,N,N,N,N,N,19564,N,
-25454,N,N,N,N,N,26708,N,N,N,31352,N,N,N,N,N,N,23860,25653,22576,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,22613,N,N,N,29802,N,N,N,20025,N,N,N,22113,20306,N,20534,N,
-N,N,N,N,N,20002,N,N,29550,N,N,N,N,N,29560,N,N,N,N,N,N,N,N,N,N,N,N,23628,N,
-20555,N,N,N,31780,19786,22356,24099,N,25696,N,N,N,N,28233,N,N,N,25181,30078,
-21548,N,N,N,N,N,21841,N,22640,30787,27223,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,30039,N,N,22591,N,N,N,N,32064,N,N,N,N,N,N,27437,N,N,N,N,21802,
-N,N,N,N,N,N,N,N,N,N,N,26408,N,N,N,N,N,N,N,N,N,N,N,N,N,28234,N,N,N,19047,N,N,N,
-N,N,30819,N,21597,N,N,27224,N,N,N,N,31577,28023,N,N,25909,N,N,N,N,N,20525,N,N,
-N,N,29041,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,25149,N,N,N,25416,N,N,N,N,
-22869,N,N,24362,N,N,N,N,23356,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30820,N,N,N,N,N,
-29050,N,N,25910,29551,N,N,31578,24928,N,22828,N,30059,N,24630,N,N,26952,N,
-19279,N,25417,N,N,N,24174,N,N,N,N,N,N,N,N,25150,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,23663,N,22053,N,N,N,N,N,25201,N,N,N,N,N,N,N,22142,22817,N,22592,23643,N,N,
-27965,24376,N,27173,N,N,N,22317,N,N,29561,N,28024,N,30023,N,N,N,N,N,N,24906,
-27491,N,29278,N,N,N,N,N,N,N,N,N,N,N,N,N,30796,N,27225,N,21318,N,23398,N,N,N,N,
-N,29999,N,N,N,N,20080,N,N,N,N,27006,N,N,N,N,N,31542,N,N,N,N,N,N,N,N,N,25202,N,
-N,N,N,20338,30521,22899,N,N,24907,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-23133,N,N,23097,N,N,N,N,N,N,N,27515,N,19257,N,N,28025,N,N,N,N,N,N,24672,N,N,N,
-N,N,N,N,N,N,N,29760,N,32060,24369,25455,N,N,N,N,24611,32057,N,N,N,N,N,N,N,N,N,
-28721,N,N,N,N,N,N,19787,N,N,N,N,N,N,N,27966,N,N,N,21824,25456,28026,N,N,N,N,N,
-26980,N,N,N,N,N,N,21869,26461,N,N,N,N,N,N,21622,25911,N,N,N,23399,25151,N,N,N,
-N,N,N,N,N,N,N,N,N,28235,N,N,22388,28765,N,N,N,20011,26462,N,N,N,22102,24908,N,
-N,26675,N,N,N,N,N,N,N,N,N,N,N,25966,23586,N,N,24656,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,21813,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,21793,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,31579,N,31051,N,N,N,19315,29733,N,N,N,N,N,31304,22103,N,26981,31580,N,N,
-N,N,N,N,N,32080,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31606,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,23077,N,23357,N,N,N,N,N,N,27746,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,19831,
-28766,N,N,N,N,30281,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-24175,N,N,N,21297,N,N,N,N,N,N,N,N,31854,N,N,N,N,26691,N,29000,N,N,N,20081,N,N,
-N,N,31085,N,N,N,N,N,N,N,N,29300,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,25654,30009,N,
-23664,25457,N,N,N,N,26661,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29243,N,24100,N,23116,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,19049,N,N,N,N,N,N,25434,N,31833,N,N,N,N,N,N,N,27226,N,N,N,
-N,N,N,31044,N,25380,N,N,N,N,N,N,N,N,N,N,N,31581,N,28490,N,26692,N,N,N,N,N,N,N,
-N,N,21836,N,N,N,N,N,N,N,N,N,N,27479,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22829,N,
-N,31531,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,21337,N,N,N,N,N,N,21794,N,N,N,N,N,N,N,
-N,N,30302,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,23158,N,N,N,N,
-N,N,N,N,N,N,N,24657,N,N,26920,N,N,30073,N,N,N,N,N,N,31279,N,27516,N,N,24682,
-25394,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,21829,N,N,29027,21870,
-N,N,N,N,N,N,N,N,N,N,N,N,N,19788,N,N,N,N,27993,N,N,N,N,22593,N,N,N,N,31340,N,N,
-N,N,N,29035,N,N,N,N,N,31292,26210,N,N,N,N,31333,25210,N,N,N,18998,N,25655,N,
-27227,N,30074,N,N,N,31532,20291,27517,N,N,N,N,30842,N,N,24377,N,N,N,N,24945,N,
-21028,N,N,N,N,30075,N,N,N,N,N,N,20570,20571,N,27198,22833,N,N,N,N,N,18999,N,N,
-21351,N,30821,N,N,N,N,21298,N,N,N,25152,29279,N,N,N,N,N,N,19813,N,N,N,N,N,N,N,
-N,N,N,N,N,31020,N,N,N,N,N,N,N,N,19789,N,N,N,N,N,N,N,N,N,N,N,N,28206,22062,N,N,
-N,N,N,N,N,N,N,N,N,N,22378,N,N,N,N,26464,27438,N,N,N,20313,N,N,23629,28027,N,
-24176,N,22379,N,N,N,N,N,N,24101,N,N,N,N,N,N,N,N,N,N,24407,23376,23377,N,N,
-21795,N,N,N,N,28722,23644,N,N,N,N,N,N,N,N,19048,N,30822,23630,N,N,N,N,27228,
-23378,N,N,N,N,N,N,N,N,N,N,N,26931,N,N,N,N,30555,N,N,N,N,N,N,N,N,N,N,N,25384,N,
-22318,N,N,24673,N,N,N,N,N,19258,N,N,25937,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,20572,N,N,N,N,21825,N,N,N,N,N,22602,N,N,N,N,N,N,N,25385,N,N,N,
-N,N,N,N,N,N,N,N,N,24612,N,26921,N,21319,N,N,23645,30766,N,N,N,19512,N,N,N,
-20526,N,N,N,22642,N,N,25418,N,N,N,N,N,N,N,N,N,N,19503,N,N,N,N,N,N,N,21549,
-30289,N,N,N,N,N,N,N,20556,N,N,N,N,N,N,N,19014,N,N,21826,N,N,20026,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,19015,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31280,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,24408,N,N,N,30010,25963,N,28532,23861,N,N,N,N,19754,N,
-25458,N,31607,N,30544,N,N,N,N,32058,N,N,32097,30334,20800,N,N,26693,N,25656,N,
-24936,N,N,N,19521,N,21101,N,N,N,N,23358,N,N,24674,N,N,N,31305,N,N,24909,N,
-19000,N,N,N,29280,29001,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,24177,N,N,N,
-28767,30788,N,N,N,N,N,28236,N,N,24178,N,26441,N,25203,26465,N,N,25419,N,N,
-25420,N,N,N,20344,28460,N,32126,31781,31281,24409,N,24658,N,N,N,29786,N,N,N,N,
-N,N,N,N,N,N,N,29002,N,20003,N,N,N,N,29244,27747,N,N,N,N,N,24613,N,30507,N,N,
-27439,N,N,N,N,N,25950,N,24868,19755,N,22900,26662,19790,24937,N,31855,N,24675,
-N,N,N,N,N,25153,N,20004,N,N,N,N,N,N,24102,N,N,27518,N,27485,28768,N,N,29787,N,
-25204,N,N,21320,N,N,N,29803,N,28213,N,30040,N,N,21855,N,N,N,22117,N,N,N,N,
-27440,29795,N,N,N,N,25421,N,N,N,N,29812,31282,N,N,28533,19039,N,27441,27967,N,
-N,32073,N,N,N,N,25638,31012,28723,N,25964,N,N,N,20839,22855,25687,27229,N,
-21623,N,N,N,N,N,N,N,N,N,23098,N,23117,N,N,N,31052,N,24922,23359,N,19525,27728,
-19259,N,24179,N,N,26922,N,N,N,N,N,N,N,22856,N,N,28259,22333,N,N,N,N,N,N,20292,
-N,N,N,N,N,20557,N,N,N,N,N,N,N,31782,N,N,N,N,N,N,N,29051,N,N,N,N,32082,20801,N,
-N,N,N,N,N,N,N,25435,N,21321,N,23631,N,N,N,N,N,N,N,N,N,19565,N,N,N,N,N,24103,N,
-N,26171,27681,N,N,N,19513,N,N,31582,N,N,N,N,N,26466,N,N,21569,N,N,N,N,N,N,N,N,
-N,23592,N,N,N,N,N,25154,N,29528,25939,N,N,29529,N,N,N,29510,19803,N,N,N,N,N,N,
-N,19756,N,31811,N,N,N,N,21607,N,20802,N,31013,N,26709,N,N,N,N,N,N,N,N,25422,N,
-N,N,N,21578,N,N,N,N,N,N,24410,N,N,N,N,N,N,N,N,31583,26467,N,N,N,N,N,N,N,N,N,N,
-N,N,N,30843,25423,N,N,N,N,N,N,N,30000,N,N,N,N,N,N,N,22631,N,22857,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,30767,28534,N,23862,28207,19832,N,N,N,N,24120,31783,30588,
-30513,20027,29729,N,N,28237,24878,N,N,27715,20350,N,30783,22626,21352,N,N,
-24104,29796,27714,N,22901,31045,23891,22129,27772,31856,N,N,27968,19001,N,
-28260,N,N,N,N,N,N,29281,N,24121,N,N,N,N,N,N,22130,N,24180,N,24411,N,23379,N,
-31335,22627,29761,N,23863,N,N,N,29301,N,N,21550,N,N,N,N,N,N,22131,N,N,N,N,N,N,
-23864,20293,24415,29246,30241,N,27467,29052,N,29511,N,N,24683,N,N,N,N,N,28028,
-N,N,24923,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,28261,N,24181,N,N,N,N,31315,N,N,N,N,29003,N,N,20527,23865,N,N,20803,N,
-N,N,N,N,N,N,N,N,N,N,N,N,30001,N,N,N,N,27206,N,N,N,N,N,N,N,N,N,N,N,N,N,N,28769,
-N,N,N,N,N,N,N,N,N,30252,N,N,N,N,30041,N,N,N,N,N,N,N,N,N,N,28779,N,N,N,N,N,N,
-23866,N,N,N,29247,N,N,N,N,N,N,N,30533,N,N,N,N,23330,29302,N,N,19002,N,N,N,N,N,
-N,N,N,N,N,N,30581,N,19301,N,N,N,28262,N,24659,N,N,N,N,20005,N,N,N,N,N,N,22104,
-N,N,N,21551,26953,N,N,N,N,21326,29762,N,N,N,N,N,N,N,N,N,N,N,N,N,19302,N,N,N,N,
-N,N,N,N,N,N,N,28961,N,N,N,N,N,27442,N,N,N,N,28962,N,N,N,N,N,N,N,N,N,N,N,N,
-27443,N,28724,N,N,19316,21552,29490,31543,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30060,N,
-N,N,N,N,28263,29746,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30061,N,20339,N,N,N,
-N,N,N,N,N,N,N,28770,N,N,N,N,N,28238,N,N,29004,N,N,25912,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22389,25459,20325,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,20294,N,N,N,N,N,N,N,N,N,29491,25688,20345,20314,N,N,N,N,31309,N,N,
-N,N,N,N,N,N,N,N,N,N,26211,N,N,N,N,N,N,N,N,N,N,N,29282,N,N,N,N,N,N,N,N,N,N,N,N,
-30062,N,N,19003,N,N,25436,20082,N,22105,N,N,N,28208,N,N,N,N,N,N,N,N,29797,
-22594,23632,19566,N,N,N,N,N,21856,30282,32074,22614,29775,N,N,N,N,N,N,22054,
-23614,N,23380,22343,N,N,N,N,29310,N,N,N,29005,N,N,N,N,25155,23646,N,23647,N,N,
-28461,26155,N,N,N,N,31069,27199,N,N,N,28462,N,N,N,29776,20083,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,26156,N,20062,N,N,21881,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,25460,
-19792,N,N,N,N,N,N,21816,N,N,30589,N,23593,N,N,N,N,24182,N,23594,29283,26932,
-21084,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,26982,N,N,25462,N,N,N,N,N,N,N,N,26442,N,N,
-20558,N,N,23159,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,19004,N,N,N,28264,23134,N,
-29303,N,N,25211,N,19494,N,N,N,N,23099,N,28265,N,N,N,30042,30556,24938,20033,
-21553,N,32049,26173,N,31533,N,N,30823,N,24910,N,30562,30063,20295,N,N,21554,
-19567,N,21608,N,28239,30551,N,N,24614,22081,24924,28771,29028,23665,22055,N,N,
-N,N,N,N,N,N,N,N,29813,N,N,29006,29284,N,N,20528,N,N,27759,N,N,N,31034,N,27445,
-N,N,21613,25156,N,N,N,N,26983,N,N,27444,27169,N,30780,20006,N,31046,31834,N,
-21555,21305,27230,N,N,N,26923,N,N,24929,21327,29814,N,27200,24911,N,19514,N,N,
-N,N,N,28266,N,N,N,28772,29492,21614,N,N,29248,N,N,29029,N,29763,24660,N,27446,
-N,22305,19304,N,31021,26925,22628,31283,25157,31805,N,N,27716,22577,N,23595,N,
-N,N,N,21796,N,27497,N,N,N,26683,N,N,N,22615,N,N,N,N,N,N,N,N,31534,20833,N,N,
-23360,N,30014,N,24183,N,N,N,N,19067,30534,20296,N,N,N,24912,N,N,28240,N,N,N,N,
-N,N,N,N,26996,N,N,N,N,N,N,N,N,20084,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-21837,N,N,20315,N,N,N,N,N,N,23867,N,N,N,N,20012,N,N,N,N,N,N,N,26984,N,N,N,N,N,
-N,N,21556,25671,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,30043,N,N,31297,N,N,N,24105,N,N,
-N,N,N,N,N,N,N,N,N,N,N,21624,N,N,N,N,N,28535,N,N,N,N,21299,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,27447,28536,30044,27980,23381,29007,N,N,N,29008,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,30002,N,N,N,N,N,N,22830,21804,N,25158,N,N,N,N,N,N,N,N,
-32035,N,31589,24363,N,N,N,N,N,N,N,N,N,N,N,N,N,N,25205,N,30253,N,30003,N,28725,
-N,N,N,N,24869,N,N,N,N,N,N,N,N,N,30045,N,N,N,N,N,N,N,N,N,N,N,N,N,N,27682,28029,
-N,30004,31544,N,23331,N,N,22090,19289,N,N,N,N,N,N,N,N,N,N,25940,N,N,N,N,N,N,
-29562,N,27448,N,24631,22380,29036,25903,21857,22381,20817,N,N,N,N,N,24946,
-28537,N,N,N,23868,30300,N,N,N,N,N,28773,N,N,N,29764,N,N,26985,N,N,N,N,N,N,N,N,
-N,N,29563,21615,N,N,19490,30590,24380,N,N,N,N,27469,N,N,N,N,N,N,20535,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22082,N,N,N,N,N,26669,N,N,N,N,28463,19237,N,
-N,N,N,19305,N,N,N,31336,N,N,N,N,N,N,N,N,N,N,N,N,N,19526,N,N,N,26215,N,N,27207,
-N,N,N,23332,N,20297,25212,28538,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,27486,N,N,30024,N,21598,N,N,N,N,N,N,N,N,N,N,N,24661,N,28464,N,N,25159,N,
-22831,N,N,N,31079,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,26469,N,N,20298,
-24913,N,25160,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,28539,N,N,31353,N,N,23666,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,24615,N,N,N,N,N,30824,N,N,N,N,N,N,N,N,N,N,N,N,
-N,19306,N,N,N,19260,22114,N,N,N,N,N,N,N,N,N,N,N,30046,N,N,N,N,N,N,N,30047,N,
-28214,N,N,N,25206,21322,28540,20804,28465,N,20805,N,20574,N,22881,N,N,24632,N,
-N,19793,29497,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,26444,N,22056,
-20007,N,21557,N,N,N,N,N,N,25672,N,N,N,N,N,N,21300,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,27449,N,N,N,N,N,N,19317,N,N,N,N,N,N,30301,N,28963,N,N,N,N,N,N,N,N,N,N,
-N,N,N,19527,N,N,N,N,N,N,N,26954,N,24944,N,N,N,30048,N,N,N,N,N,N,N,N,31535,N,N,
-N,19281,N,N,N,N,31584,29285,N,N,27760,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-28780,N,N,N,N,N,N,N,N,N,N,N,N,N,28267,N,N,N,N,N,N,N,N,N,N,N,N,26955,N,N,19568,
-N,N,22319,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29473,31861,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,28964,N,N,N,N,N,N,N,N,N,N,N,N,24662,N,N,N,N,N,28466,N,N,N,N,N,
-N,N,N,N,29777,N,N,30497,N,N,N,N,N,N,N,N,N,N,N,29009,N,N,N,N,N,N,N,N,N,N,N,N,
-19068,19069,N,N,N,N,N,N,N,N,20046,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,29512,N,29498,28030,N,N,N,N,N,N,N,N,23078,N,N,24684,N,N,
-N,N,N,30797,N,19282,N,N,N,27470,N,31064,31065,19040,23114,N,N,N,19238,N,N,N,N,
-N,N,N,N,N,N,19016,31086,23404,N,N,20529,N,N,N,N,21871,N,N,N,26227,N,N,N,N,N,N,
-N,N,N,26402,25689,N,N,N,N,N,N,N,N,N,N,25697,N,N,31812,N,N,N,N,N,N,N,N,N,31087,
-20340,30566,N,N,N,N,N,20028,N,N,N,N,29765,23587,23869,N,N,N,N,29766,N,N,N,N,N,
-N,N,N,30753,N,N,N,26710,N,N,N,23361,N,N,N,N,N,N,N,N,28774,N,N,N,25657,30317,N,
-31022,N,23870,N,N,N,N,N,N,22320,22632,19261,N,N,31066,N,N,N,N,N,N,N,N,N,N,
-30798,31088,24685,25395,29747,N,N,27202,29286,28726,N,N,N,N,N,23382,N,N,N,N,N,
-27492,N,N,29287,N,22357,21558,31080,22337,N,N,N,N,25941,N,N,N,N,N,N,N,26986,
-22348,N,N,N,21353,25161,N,31835,19757,N,N,N,N,N,19504,27170,N,N,25718,20544,N,
-28727,28193,N,N,N,N,N,N,22390,N,N,N,25162,25163,N,31311,N,N,N,N,N,N,27487,N,N,
-N,N,N,22091,N,N,N,29748,N,N,N,N,27981,25682,N,N,27177,25658,29474,19794,N,
-30283,N,29030,27969,26684,28241,N,N,N,N,N,N,28775,25164,N,N,25642,N,30049,
-27994,N,N,N,N,N,22382,20849,N,N,N,N,26987,26988,24676,N,N,N,N,23079,23892,N,
-27171,N,N,N,22083,22132,N,23135,N,28467,25165,N,N,N,N,N,28541,29288,N,N,N,N,N,
-N,N,N,N,28485,N,26471,N,N,22397,N,N,26446,N,N,24412,N,31047,N,N,N,N,N,N,N,N,
-22902,N,N,N,N,N,N,N,N,24364,N,22106,N,N,N,N,N,N,23588,N,N,N,28728,N,N,N,N,
-21882,N,25719,N,N,N,22084,N,N,N,N,N,N,N,N,29804,N,N,N,N,28542,N,N,N,N,N,28705,
-N,24106,N,N,23100,22652,N,N,N,N,N,N,31316,N,N,N,27749,N,N,N,N,N,N,31784,N,N,
-27750,N,N,22603,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31545,N,25683,N,19833,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,20307,N,N,N,N,N,N,N,19050,N,N,20308,N,30781,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29767,N,N,N,N,27231,N,N,N,N,N,N,N,31067,
-N,N,N,N,N,N,N,N,21559,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,27493,N,N,
-24914,N,N,N,N,27172,N,N,N,31298,31585,31341,28706,19569,N,31267,25207,N,25166,
-N,26997,N,24939,N,N,N,26472,26711,23160,21579,N,N,N,30582,22085,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,21609,N,N,31354,N,N,N,N,N,N,N,19570,30557,N,24122,N,
-N,N,N,N,N,N,N,N,N,20008,N,N,N,N,N,28729,25726,25673,N,N,N,N,N,25684,N,N,N,
-27203,N,28468,N,N,N,22334,N,N,N,N,N,N,31586,N,19795,N,N,N,28469,N,N,N,31337,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31014,N,N,N,N,N,N,24381,N,30535,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,30845,N,N,30844,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-24107,23400,N,N,25437,N,24930,20806,N,N,N,N,N,N,N,N,N,N,30288,27494,23161,N,N,
-N,N,27719,N,N,N,N,N,N,N,24184,30825,25438,20085,N,N,N,N,N,31299,25943,N,27720,
-N,N,N,29513,N,N,25659,N,N,N,N,26158,N,N,N,N,N,28470,N,23615,N,N,N,N,N,N,N,
-20029,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22595,N,N,N,
-20559,N,20346,29514,24663,N,N,N,20807,26926,N,26685,N,N,31300,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,25167,N,N,31301,N,N,N,31032,N,N,N,N,N,N,N,23648,
-N,N,31536,N,N,N,22569,25951,31015,N,N,30318,N,30284,25208,N,N,N,N,27761,N,N,N,
-N,N,N,N,23136,N,N,N,N,N,N,N,N,N,N,N,N,N,N,29010,21068,20299,N,N,19005,N,N,N,
-23871,N,N,N,30319,N,24185,N,N,N,N,N,N,N,N,N,N,N,N,N,31284,N,N,N,21805,N,N,N,N,
-N,N,N,N,N,N,N,N,N,29031,24126,N,N,N,N,N,N,23616,N,N,N,N,N,20808,20809,N,N,N,N,
-N,N,N,N,N,30782,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,19318,N,N,N,N,21625,N,N,N,N,
-N,30050,24915,N,N,N,N,N,N,N,N,22633,N,N,30846,N,20300,N,N,N,N,N,N,N,32036,N,N,
-N,N,N,N,N,20086,N,31312,N,N,19571,26174,N,N,N,30254,N,N,21872,N,N,20810,N,N,N,
-31806,21873,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,19817,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,31285,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,25168,
-29815,N,N,N,19796,N,N,N,N,N,N,N,N,N,N,N,N,26403,N,N,N,N,N,N,N,N,23333,25169,N,
-N,N,N,N,N,N,N,N,N,N,N,22306,N,N,30563,N,N,N,N,N,N,27174,N,N,N,N,N,N,N,N,N,N,
-20513,N,N,N,N,20058,31595,23334,23390,22629,N,N,N,N,N,N,N,N,N,27232,N,N,N,N,
-22570,N,N,N,N,N,25952,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22107,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,28486,N,N,30826,N,N,N,N,N,N,
-N,N,N,N,N,N,N,25685,N,N,N,N,N,N,N,N,N,N,N,20087,N,N,24664,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22383,N,N,N,N,N,N,N,N,N,N,N,N,29805,N,N,N,N,N,
-N,N,N,N,N,N,N,N,19814,N,N,N,19572,30051,N,N,25674,N,23649,N,N,31048,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,31807,N,N,N,N,N,N,N,N,N,N,N,N,26663,N,N,N,N,N,N,N,N,22596,
-N,N,N,N,N,N,N,N,N,N,N,19262,N,23598,N,N,N,N,N,N,N,N,N,N,N,N,N,22391,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,28776,N,23872,N,20301,N,N,N,N,N,N,N,N,N,
-23667,22832,N,26217,25660,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,27204,N,N,N,N,N,N,
-N,N,N,N,25708,N,25701,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,31608,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,19515,N,N,N,N,N,N,N,N,N,N,N,25661,N,N,19804,22903,
-N,N,N,N,N,N,N,N,N,N,23903,N,N,N,N,N,27982,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22864,
-N,N,N,N,N,25891,N,N,N,N,31053,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,19758,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,20302,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,30255,N,N,N,N,N,32083,27501,22108,25892,N,N,N,21814,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22109,
-N,N,N,31081,N,N,N,26404,N,22115,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,20811,
-22116,N,N,N,21874,N,N,N,N,N,24186,N,22392,N,N,N,N,N,22634,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,20309,22653,N,N,N,N,N,22571,N,N,32075,N,N,N,N,31836,N,N,N,N,N,N,N,N,N,
-24616,21875,N,N,32089,N,N,19491,N,N,N,22905,N,N,21354,30069,N,28487,N,N,N,N,N,
-N,N,N,N,21338,N,N,N,N,N,N,N,N,N,N,N,23101,26664,23599,N,N,N,N,N,28707,N,N,N,N,
-19797,N,N,N,N,N,N,N,N,N,N,N,N,24617,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,24108,N,N,N,N,N,N,N,N,N,N,N,N,N,N,28730,28209,N,N,28210,N,N,N,30285,
-N,N,N,N,N,N,N,N,N,N,N,N,28242,N,22086,N,N,N,N,N,24677,N,N,29499,N,25953,N,N,N,
-N,N,N,N,N,N,N,25675,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,22307,N,N,23362,
-N,N,N,N,19070,N,N,N,N,N,N,20303,12321,12322,33089,33090,12323,33091,33092,
-12324,12325,12326,12327,33093,33094,33095,33096,33097,12328,12329,12330,12331,
-12332,12333,12334,12335,33098,12336,12337,12338,12339,12340,33099,33100,12341,
-33101,33102,33103,12342,33104,33105,33106,33107,33108,33109,33110,12343,12344,
-33111,12345,12346,12347,33112,33113,33114,33121,33122,33123,12348,12349,33124,
-33125,12350,33126,33127,33128,12351,33129,33130,33131,33132,33133,33134,33135,
-33136,33137,33138,12352,33139,12353,33140,33141,33142,33143,33144,33145,12354,
-33146,33153,33154,12355,33155,33156,33157,12356,33158,33159,33160,33161,33162,
-33163,33164,33165,33166,33167,33168,33169,33170,33171,33172,33173,33174,33175,
-33176,12357,12358,33177,33178,12359,33179,33180,12360,12361,33181,12362,33182,
-33183,33184,33185,33186,12363,12364,33187,12365,12366,12367,12368,33188,33189,
-12369,12370,12371,12372,33190,33191,33192,12373,33193,33194,33195,12374,33196,
-33197,33198,33199,33200,33201,33202,12375,12376,33203,12377,12378,12379,33204,
-33205,33206,33207,33208,33209,12380,12381,12382,33210,12383,33211,33212,12384,
-12385,33213,33214,33215,33216,33217,33218,33219,12386,12387,33220,12388,12389,
-12390,33221,33222,33223,12391,33224,33225,12392,33226,33227,33228,12393,33229,
-33230,33231,12394,33232,33233,33234,33235,33236,33237,33238,33239,12395,33240,
-12396,33241,33242,33243,33244,33245,33246,33247,33248,12397,12398,33249,33250,
-12399,33251,33252,12400,12401,33253,12402,33254,12403,33255,33256,12404,12405,
-12406,33257,12407,33258,12408,12409,33259,33260,33261,33262,33263,12410,12411,
-33264,33265,12412,33266,33267,33268,12413,33269,12414,33270,33271,33272,33273,
-33274,12577,12578,33275,12579,33276,12580,33277,33278,33345,33346,33347,33348,
-12581,33349,33350,33351,12582,33352,33353,33354,12583,33355,33356,33357,33358,
-33359,33360,33361,33362,12584,33363,33364,12585,12586,33365,33366,33367,33368,
-33369,33370,12587,12588,33377,33378,12589,33379,33380,33381,12590,33382,33383,
-33384,33385,33386,33387,33388,12591,12592,33389,12593,33390,12594,33391,33392,
-33393,33394,33395,33396,12595,33397,33398,33399,12596,33400,33401,33402,12597,
-33409,33410,33411,33412,33413,33414,33415,33416,12598,33417,12599,33418,33419,
-33420,33421,33422,33423,33424,33425,12600,12601,33426,33427,12602,33428,33429,
-12603,12604,12605,12606,33430,33431,33432,33433,12607,12608,12609,33434,12610,
-33435,12611,12612,33436,33437,33438,33439,33440,12613,12614,33441,33442,12615,
-33443,33444,33445,12616,33446,33447,33448,33449,33450,33451,33452,33453,33454,
-33455,33456,12617,12618,33457,33458,33459,33460,33461,33462,12619,33463,33464,
-33465,33466,33467,33468,33469,33470,33471,33472,33473,33474,33475,33476,33477,
-33478,33479,33480,12620,33481,33482,33483,33484,33485,33486,33487,33488,12621,
-12622,33489,33490,12623,33491,33492,33493,12624,33494,33495,33496,33497,33498,
-33499,33500,12625,12626,33501,12627,33502,33503,33504,33505,33506,33507,33508,
-33509,12628,33510,33511,33512,12629,33513,33514,33515,12630,33516,33517,33518,
-33519,33520,33521,33522,33523,33524,33525,33526,33527,33528,33529,33530,33531,
-33532,33533,33534,12631,12632,33601,33602,12633,33603,33604,12634,12635,12636,
-33605,33606,33607,33608,33609,33610,12637,12638,33611,12639,33612,12640,33613,
-33614,33615,33616,33617,33618,12641,33619,33620,33621,33622,33623,33624,33625,
-33626,33633,33634,33635,33636,33637,33638,33639,33640,33641,33642,33643,33644,
-33645,33646,33647,33648,33649,33650,33651,12642,12643,33652,33653,12644,33654,
-33655,12645,12646,33656,12647,33657,33658,33665,33666,33667,12648,12649,33668,
-12650,33669,12651,12652,33670,33671,33672,12653,33673,12654,12655,12656,33674,
-12657,33675,33676,33677,12658,33678,12659,33679,33680,33681,33682,33683,12660,
-12661,33684,12662,12663,12664,33685,33686,33687,12665,33688,33689,12666,12667,
-33690,33691,12668,33692,33693,33694,12669,33695,33696,33697,33698,33699,33700,
-33701,12670,12833,33702,12834,12835,12836,33703,33704,33705,33706,33707,33708,
-12837,12838,33709,33710,33711,33712,33713,33714,12839,33715,33716,33717,33718,
-33719,33720,33721,33722,33723,33724,33725,33726,33727,33728,33729,33730,33731,
-33732,33733,33734,33735,33736,33737,33738,33739,33740,33741,33742,33743,33744,
-33745,33746,33747,33748,33749,33750,33751,33752,33753,33754,33755,33756,33757,
-33758,33759,33760,33761,12840,12841,12842,33762,12843,33763,33764,33765,12844,
-33766,33767,33768,33769,33770,33771,33772,12845,12846,33773,12847,12848,12849,
-33774,33775,33776,33777,33778,33779,12850,12851,33780,33781,12852,33782,33783,
-33784,33785,33786,33787,33788,33789,33790,33857,33858,12853,33859,33860,12854,
-33861,12855,33862,33863,33864,33865,33866,33867,12856,33868,33869,33870,12857,
-33871,33872,33873,12858,33874,33875,33876,33877,33878,33879,33880,33881,33882,
-33889,12859,12860,33890,33891,33892,33893,12861,33894,33895,12862,33896,33897,
-33898,33899,33900,33901,33902,33903,33904,33905,33906,33907,33908,33909,33910,
-33911,33912,33913,33914,33921,33922,33923,33924,33925,33926,33927,33928,12863,
-12864,33929,33930,12865,33931,12866,33932,12867,33933,33934,33935,33936,33937,
-33938,33939,12868,12869,33940,12870,33941,12871,12872,12873,33942,33943,33944,
-33945,12874,12875,33946,33947,33948,33949,33950,33951,12876,33952,33953,33954,
-33955,33956,33957,33958,33959,33960,33961,33962,12877,12878,33963,33964,33965,
-33966,33967,33968,12879,12880,33969,33970,33971,33972,33973,33974,33975,33976,
-33977,33978,33979,33980,33981,33982,33983,33984,33985,33986,33987,12881,33988,
-33989,33990,33991,33992,33993,12882,33994,33995,33996,12883,33997,33998,33999,
-12884,34000,34001,34002,34003,34004,34005,34006,12885,12886,34007,34008,34009,
-12887,34010,34011,34012,34013,34014,34015,12888,34016,34017,34018,34019,34020,
-34021,34022,34023,34024,34025,34026,34027,34028,34029,34030,34031,34032,34033,
-34034,34035,34036,34037,34038,34039,34040,34041,34042,12889,12890,34043,34044,
-12891,34045,34046,34113,12892,34114,34115,34116,34117,34118,34119,12893,12894,
-12895,34120,12896,34121,12897,12898,34122,34123,34124,34125,34126,12899,34127,
-34128,34129,34130,34131,34132,34133,12900,34134,34135,34136,34137,34138,34145,
-34146,34147,34148,34149,34150,12901,12902,34151,34152,34153,34154,34155,34156,
-12903,12904,34157,34158,12905,34159,34160,34161,12906,34162,34163,34164,34165,
-34166,34167,34168,12907,12908,34169,34170,12909,34177,34178,34179,34180,34181,
-34182,34183,12910,34184,34185,34186,12911,34187,34188,34189,12912,34190,34191,
-34192,34193,34194,34195,34196,12913,12914,34197,34198,34199,34200,34201,34202,
-34203,34204,34205,34206,12915,34207,34208,34209,34210,34211,34212,34213,34214,
-34215,34216,34217,34218,34219,34220,34221,34222,34223,34224,34225,34226,34227,
-34228,34229,34230,34231,34232,34233,12916,12917,34234,34235,12918,34236,12919,
-34237,12920,34238,12921,34239,34240,34241,34242,12922,12923,12924,34243,12925,
-34244,12926,34245,34246,34247,13089,34248,34249,34250,34251,34252,34253,34254,
-34255,34256,34257,34258,34259,34260,34261,34262,34263,34264,34265,34266,34267,
-34268,34269,34270,34271,34272,34273,34274,34275,34276,34277,13090,13091,34278,
-34279,13092,34280,34281,34282,13093,34283,34284,34285,34286,34287,34288,34289,
-13094,13095,34290,13096,34291,13097,34292,34293,34294,34295,34296,34297,13098,
-13099,13100,34298,13101,34299,34300,13102,13103,13104,13105,34301,34302,34369,
-34370,34371,13106,13107,34372,13108,13109,13110,13111,13112,34373,13113,34374,
-13114,13115,13116,34375,34376,13117,34377,34378,34379,13118,34380,34381,34382,
-34383,34384,34385,34386,13119,13120,34387,13121,13122,13123,34388,34389,34390,
-34391,34392,34393,13124,13125,34394,34401,13126,34402,34403,34404,13127,34405,
-34406,34407,34408,34409,34410,34411,13128,34412,34413,34414,34415,13129,34416,
-34417,34418,34419,34420,34421,34422,34423,34424,34425,34426,34433,34434,34435,
-34436,34437,34438,34439,34440,34441,34442,34443,34444,34445,34446,34447,34448,
-34449,34450,34451,34452,34453,34454,34455,13130,13131,34456,13132,13133,34457,
-34458,34459,13134,34460,13135,13136,34461,34462,34463,34464,13137,13138,34465,
-13139,13140,13141,34466,34467,34468,34469,34470,13142,13143,13144,34471,34472,
-13145,34473,34474,34475,13146,34476,34477,34478,34479,34480,34481,34482,13147,
-13148,34483,13149,13150,13151,34484,34485,34486,34487,34488,34489,13152,13153,
-34490,34491,13154,34492,34493,34494,13155,34495,34496,34497,34498,34499,34500,
-34501,13156,13157,34502,34503,13158,13159,34504,34505,13160,34506,34507,34508,
-13161,34509,34510,34511,13162,34512,34513,34514,34515,34516,34517,34518,34519,
-34520,34521,34522,34523,34524,34525,34526,34527,34528,34529,34530,34531,34532,
-34533,34534,13163,13164,34535,34536,13165,34537,34538,34539,13166,34540,13167,
-34541,34542,34543,34544,34545,13168,13169,34546,13170,34547,13171,34548,34549,
-34550,34551,13172,13173,13174,34552,34553,34554,13175,34555,34556,34557,13176,
-34558,34625,34626,34627,34628,34629,34630,34631,34632,34633,34634,13177,34635,
-34636,34637,34638,34639,34640,34641,34642,34643,34644,34645,34646,34647,34648,
-34649,34650,34657,34658,34659,34660,34661,34662,34663,34664,34665,34666,34667,
-34668,34669,34670,34671,34672,34673,34674,34675,13178,34676,34677,34678,13179,
-34679,34680,34681,13180,34682,34689,34690,34691,34692,34693,34694,13181,13182,
-34695,13345,34696,34697,34698,34699,34700,34701,34702,34703,13346,13347,34704,
-34705,13348,34706,34707,34708,13349,34709,34710,34711,34712,34713,34714,34715,
-34716,13350,34717,13351,34718,13352,34719,34720,34721,34722,34723,34724,13353,
-13354,34725,34726,13355,34727,34728,13356,13357,34729,34730,34731,34732,34733,
-34734,34735,13358,13359,34736,13360,34737,13361,34738,34739,34740,34741,34742,
-34743,13362,34744,34745,34746,34747,34748,34749,34750,34751,34752,34753,34754,
-34755,34756,34757,34758,34759,34760,34761,34762,13363,34763,34764,34765,34766,
-34767,34768,34769,13364,34770,34771,34772,34773,34774,34775,34776,34777,34778,
-34779,34780,34781,34782,34783,34784,34785,34786,34787,34788,34789,34790,34791,
-34792,34793,34794,34795,34796,13365,34797,34798,34799,13366,34800,34801,34802,
-13367,34803,34804,34805,34806,34807,34808,34809,13368,13369,34810,34811,34812,
-34813,34814,34881,34882,34883,34884,34885,13370,13371,34886,34887,34888,34889,
-34890,34891,13372,34892,34893,34894,34895,34896,34897,34898,13373,13374,34899,
-34900,34901,13375,34902,34903,34904,34905,34906,34913,13376,13377,34914,34915,
-13378,34916,34917,34918,13379,13380,13381,34919,34920,34921,34922,34923,13382,
-13383,34924,13384,34925,13385,13386,34926,34927,34928,13387,34929,13388,34930,
-34931,34932,13389,34933,34934,34935,13390,34936,34937,34938,34945,34946,34947,
-34948,34949,34950,34951,34952,34953,34954,34955,34956,34957,34958,34959,34960,
-13391,13392,34961,34962,13393,34963,34964,34965,13394,34966,13395,34967,34968,
-34969,34970,34971,13396,13397,34972,13398,34973,13399,34974,34975,34976,34977,
-13400,34978,13401,13402,13403,34979,13404,34980,34981,13405,13406,13407,13408,
-13409,34982,34983,34984,13410,13411,13412,34985,13413,13414,13415,13416,13417,
-34986,34987,34988,13418,13419,13420,34989,34990,13421,34991,34992,34993,13422,
-34994,34995,34996,34997,34998,34999,35000,13423,13424,35001,13425,13426,13427,
-35002,35003,35004,35005,35006,35007,13428,35008,35009,35010,35011,35012,35013,
-35014,35015,35016,35017,35018,35019,35020,35021,35022,35023,35024,35025,35026,
-35027,35028,35029,35030,35031,35032,35033,35034,35035,35036,35037,35038,35039,
-35040,35041,35042,35043,35044,35045,35046,35047,35048,35049,35050,35051,35052,
-35053,35054,35055,35056,35057,35058,35059,35060,35061,35062,13429,13430,13431,
-35063,13432,35064,35065,13433,13434,35066,13435,13436,35067,35068,35069,35070,
-13437,13438,35137,13601,35138,13602,35139,13603,35140,35141,13604,35142,13605,
-13606,35143,35144,13607,35145,35146,35147,13608,35148,35149,35150,35151,35152,
-35153,35154,13609,13610,35155,13611,13612,13613,35156,35157,35158,35159,35160,
-35161,13614,35162,35169,35170,13615,35171,35172,35173,13616,35174,35175,35176,
-35177,35178,35179,35180,35181,35182,35183,35184,13617,13618,35185,35186,35187,
-35188,35189,35190,13619,35191,35192,35193,13620,35194,35201,35202,35203,35204,
-35205,35206,35207,35208,35209,35210,35211,35212,35213,35214,35215,35216,35217,
-35218,35219,35220,35221,35222,13621,13622,35223,35224,13623,35225,35226,13624,
-13625,35227,13626,35228,13627,35229,35230,35231,13628,13629,35232,13630,35233,
-13631,35234,13632,35235,13633,35236,35237,13634,35238,35239,35240,13635,35241,
-35242,35243,13636,35244,35245,35246,35247,35248,35249,35250,35251,35252,35253,
-35254,35255,35256,35257,35258,35259,35260,35261,35262,13637,35263,35264,35265,
-35266,35267,35268,35269,35270,35271,35272,35273,35274,35275,35276,35277,35278,
-35279,35280,35281,13638,35282,35283,35284,35285,35286,35287,35288,13639,35289,
-35290,35291,13640,35292,35293,35294,13641,35295,35296,35297,35298,35299,35300,
-35301,13642,13643,35302,13644,35303,35304,35305,35306,35307,35308,35309,35310,
-13645,35311,35312,35313,35314,35315,35316,35317,35318,35319,35320,35321,35322,
-35323,35324,35325,35326,35393,35394,35395,35396,35397,35398,35399,35400,35401,
-35402,35403,13646,13647,35404,35405,13648,35406,35407,35408,13649,35409,35410,
-35411,35412,35413,35414,35415,13650,13651,35416,13652,35417,13653,35418,35425,
-35426,35427,35428,35429,13654,35430,35431,35432,35433,35434,35435,35436,35437,
-35438,35439,35440,35441,35442,35443,35444,35445,35446,35447,35448,13655,35449,
-35450,35457,35458,35459,35460,35461,13656,35462,35463,35464,35465,35466,35467,
-35468,35469,35470,35471,35472,35473,35474,35475,35476,35477,35478,35479,35480,
-35481,13657,35482,35483,35484,35485,35486,35487,13658,35488,35489,35490,13659,
-35491,35492,35493,13660,35494,35495,35496,35497,35498,35499,35500,35501,13661,
-35502,13662,35503,13663,35504,35505,35506,35507,35508,35509,13664,35510,35511,
-35512,13665,35513,35514,35515,13666,35516,35517,35518,35519,35520,35521,35522,
-13667,35523,35524,35525,35526,13668,35527,35528,35529,35530,35531,35532,13669,
-13670,35533,35534,13671,35535,35536,13672,13673,35537,13674,35538,35539,35540,
-35541,35542,13675,13676,35543,13677,35544,13678,35545,35546,35547,35548,35549,
-35550,13679,35551,35552,35553,35554,35555,35556,35557,35558,35559,35560,35561,
-35562,35563,35564,35565,35566,35567,35568,35569,35570,35571,35572,35573,35574,
-35575,35576,35577,13680,13681,35578,35579,13682,35580,35581,13683,13684,35582,
-35649,35650,35651,35652,35653,35654,13685,13686,35655,13687,13688,13689,13690,
-35656,35657,35658,35659,35660,13691,13692,35661,35662,13693,35663,35664,35665,
-13694,35666,35667,35668,35669,35670,35671,35672,13857,13858,35673,13859,13860,
-13861,35674,35681,35682,35683,35684,13862,13863,13864,35685,35686,13865,35687,
-35688,35689,13866,35690,35691,35692,35693,35694,35695,35696,13867,13868,35697,
-13869,13870,13871,35698,35699,35700,35701,35702,35703,35704,35705,35706,35713,
-35714,35715,35716,35717,35718,35719,35720,35721,35722,35723,35724,35725,35726,
-35727,35728,35729,35730,35731,35732,35733,35734,35735,35736,35737,35738,35739,
-35740,35741,35742,35743,35744,35745,35746,35747,35748,35749,35750,35751,35752,
-35753,35754,35755,35756,35757,35758,35759,35760,35761,35762,35763,35764,35765,
-13872,13873,35766,35767,13874,35768,35769,35770,13875,35771,13876,13877,35772,
-35773,35774,35775,13878,13879,35776,13880,13881,13882,35777,35778,35779,35780,
-35781,13883,13884,13885,35782,35783,13886,35784,35785,35786,13887,35787,35788,
-35789,35790,35791,35792,35793,13888,13889,35794,13890,13891,13892,35795,35796,
-35797,35798,35799,35800,13893,35801,35802,35803,35804,35805,35806,35807,35808,
-35809,35810,35811,35812,35813,35814,35815,35816,35817,35818,35819,13894,35820,
-35821,35822,35823,35824,35825,35826,35827,35828,35829,35830,35831,35832,35833,
-35834,35835,35836,35837,35838,35905,35906,35907,35908,35909,35910,35911,35912,
-35913,35914,35915,35916,35917,35918,35919,35920,13895,13896,35921,35922,13897,
-35923,35924,35925,13898,35926,35927,35928,35929,35930,35937,35938,35939,35940,
-35941,35942,35943,13899,35944,35945,35946,35947,35948,35949,13900,35950,35951,
-35952,35953,35954,35955,35956,13901,35957,35958,35959,35960,35961,35962,35969,
-35970,35971,35972,35973,35974,35975,35976,35977,35978,35979,35980,35981,13902,
-35982,35983,35984,35985,35986,35987,35988,35989,35990,35991,35992,35993,35994,
-35995,35996,35997,35998,35999,36000,36001,36002,36003,36004,36005,36006,36007,
-36008,13903,36009,36010,36011,13904,36012,36013,36014,36015,36016,36017,36018,
-36019,36020,36021,36022,36023,36024,36025,36026,36027,36028,36029,36030,36031,
-36032,36033,36034,36035,36036,36037,36038,36039,36040,36041,36042,36043,36044,
-36045,36046,36047,36048,36049,36050,36051,36052,36053,36054,36055,36056,36057,
-36058,36059,36060,36061,36062,13905,13906,36063,36064,13907,36065,36066,36067,
-13908,36068,36069,36070,36071,36072,36073,13909,13910,36074,36075,36076,36077,
-13911,36078,36079,36080,36081,36082,36083,36084,36085,36086,36087,36088,36089,
-36090,36091,36092,36093,36094,36161,36162,36163,36164,36165,36166,36167,36168,
-36169,36170,36171,36172,36173,36174,36175,36176,36177,13912,36178,36179,36180,
-36181,36182,36183,36184,36185,36186,36193,36194,36195,36196,36197,36198,36199,
-36200,36201,36202,36203,36204,36205,36206,36207,36208,36209,36210,13913,36211,
-36212,36213,13914,36214,36215,36216,13915,36217,36218,36225,36226,36227,36228,
-36229,13916,13917,36230,36231,36232,13918,36233,36234,36235,36236,36237,36238,
-36239,36240,36241,36242,36243,36244,36245,36246,36247,36248,36249,36250,36251,
-36252,36253,36254,36255,36256,36257,36258,36259,36260,36261,36262,36263,36264,
-36265,36266,13919,13920,36267,36268,13921,36269,36270,13922,13923,36271,36272,
-36273,36274,36275,36276,36277,13924,13925,36278,13926,36279,36280,36281,36282,
-36283,36284,36285,36286,13927,36287,36288,36289,13928,36290,36291,36292,13929,
-36293,36294,36295,36296,36297,36298,36299,13930,13931,36300,36301,36302,36303,
-36304,36305,36306,36307,36308,36309,13932,36310,36311,36312,13933,36313,36314,
-36315,13934,36316,36317,36318,36319,36320,36321,36322,13935,13936,36323,13937,
-36324,13938,36325,36326,36327,36328,36329,36330,13939,13940,36331,36332,13941,
-36333,36334,36335,13942,36336,36337,36338,36339,36340,36341,36342,13943,13944,
-36343,13945,13946,13947,13948,36344,36345,36346,13949,13950,14113,14114,36347,
-36348,14115,36349,36350,36417,14116,36418,36419,36420,36421,36422,36423,36424,
-14117,14118,36425,14119,14120,14121,36426,36427,36428,36429,36430,36431,14122,
-14123,36432,36433,14124,36434,36435,36436,36437,36438,36439,36440,36441,36442,
-36449,36450,36451,36452,36453,14125,36454,14126,36455,36456,36457,36458,36459,
-36460,36461,36462,36463,36464,36465,36466,36467,36468,36469,36470,36471,36472,
-36473,36474,36481,36482,36483,36484,36485,36486,36487,36488,36489,36490,36491,
-36492,36493,36494,14127,14128,36495,36496,14129,36497,36498,36499,14130,36500,
-36501,36502,36503,36504,36505,36506,14131,14132,36507,14133,14134,14135,36508,
-36509,36510,36511,36512,14136,14137,14138,36513,36514,14139,36515,36516,36517,
-14140,36518,36519,36520,36521,36522,36523,36524,14141,14142,36525,14143,36526,
-14144,36527,36528,36529,36530,36531,36532,14145,14146,36533,36534,14147,36535,
-36536,36537,14148,36538,36539,36540,36541,36542,36543,36544,14149,14150,36545,
-14151,14152,14153,36546,36547,36548,36549,36550,36551,14154,36552,36553,36554,
-14155,36555,36556,36557,36558,36559,36560,36561,36562,36563,36564,36565,36566,
-14156,36567,14157,36568,36569,36570,36571,36572,36573,36574,36575,14158,14159,
-36576,36577,14160,36578,36579,36580,14161,36581,36582,36583,36584,36585,36586,
-36587,14162,14163,36588,14164,36589,14165,36590,36591,36592,36593,36594,36595,
-14166,36596,36597,36598,14167,36599,36600,36601,36602,36603,36604,36605,36606,
-36673,36674,36675,36676,36677,36678,36679,36680,14168,36681,36682,36683,36684,
-36685,36686,36687,36688,36689,36690,36691,36692,36693,36694,36695,36696,36697,
-36698,36705,36706,36707,36708,36709,36710,36711,36712,14169,36713,36714,36715,
-36716,36717,36718,36719,14170,36720,36721,36722,14171,36723,36724,36725,14172,
-36726,36727,36728,36729,36730,36737,36738,14173,14174,36739,14175,36740,14176,
-36741,36742,36743,36744,36745,36746,14177,36747,36748,36749,14178,36750,36751,
-36752,14179,36753,36754,36755,36756,36757,36758,36759,36760,14180,36761,14181,
-36762,14182,36763,36764,36765,36766,36767,36768,14183,14184,36769,36770,14185,
-36771,36772,36773,14186,36774,36775,36776,36777,36778,36779,36780,14187,14188,
-36781,14189,36782,14190,36783,36784,36785,36786,36787,36788,14191,36789,36790,
-36791,36792,36793,36794,36795,36796,36797,36798,36799,36800,36801,36802,36803,
-36804,36805,36806,36807,14192,36808,36809,36810,36811,36812,36813,36814,14193,
-36815,36816,36817,36818,36819,36820,36821,36822,36823,36824,36825,36826,36827,
-36828,36829,36830,36831,36832,36833,36834,36835,36836,36837,36838,36839,36840,
-36841,14194,14195,36842,36843,14196,36844,36845,36846,14197,36847,36848,36849,
-36850,36851,36852,36853,14198,36854,36855,14199,36856,14200,36857,36858,36859,
-36860,36861,36862,14201,14202,36929,36930,14203,36931,36932,36933,14204,36934,
-36935,36936,36937,36938,36939,36940,14205,14206,36941,14369,36942,14370,36943,
-36944,36945,36946,36947,36948,14371,14372,36949,36950,14373,36951,36952,36953,
-14374,36954,36961,36962,36963,36964,36965,36966,14375,14376,36967,14377,36968,
-14378,14379,36969,36970,14380,14381,36971,36972,36973,36974,36975,36976,36977,
-36978,36979,36980,36981,36982,36983,36984,36985,36986,36993,36994,36995,36996,
-36997,36998,36999,37000,37001,37002,37003,37004,37005,14382,14383,37006,37007,
-14384,37008,37009,37010,14385,37011,37012,37013,37014,37015,37016,37017,14386,
-14387,37018,14388,37019,14389,37020,37021,37022,37023,37024,37025,14390,14391,
-37026,37027,14392,37028,14393,14394,14395,14396,14397,37029,37030,37031,37032,
-37033,14398,14399,37034,14400,37035,14401,14402,37036,37037,14403,37038,14404,
-14405,14406,37039,37040,14407,37041,37042,37043,14408,37044,37045,37046,37047,
-37048,37049,37050,14409,14410,37051,14411,14412,14413,14414,37052,37053,37054,
-37055,37056,14415,14416,37057,37058,37059,37060,37061,37062,14417,37063,37064,
-37065,37066,37067,37068,37069,37070,37071,37072,37073,37074,14418,37075,37076,
-37077,37078,37079,37080,37081,37082,37083,37084,37085,37086,37087,37088,37089,
-37090,37091,37092,37093,37094,37095,37096,37097,37098,37099,37100,37101,37102,
-37103,37104,37105,37106,37107,37108,14419,14420,37109,37110,14421,37111,37112,
-37113,14422,37114,14423,37115,37116,37117,37118,37185,14424,14425,37186,14426,
-37187,14427,14428,37188,37189,37190,37191,14429,14430,14431,37192,37193,14432,
-37194,37195,37196,14433,37197,37198,37199,37200,37201,37202,37203,14434,14435,
-37204,14436,14437,14438,37205,37206,37207,37208,37209,37210,14439,14440,37217,
-37218,14441,37219,37220,37221,14442,37222,37223,37224,37225,37226,37227,37228,
-37229,37230,37231,14443,14444,14445,37232,14446,37233,37234,37235,37236,14447,
-37237,37238,37239,37240,37241,37242,37249,37250,37251,37252,37253,37254,37255,
-37256,37257,37258,37259,37260,37261,37262,37263,37264,37265,37266,37267,37268,
-37269,14448,14449,37270,14450,14451,37271,37272,37273,14452,37274,14453,37275,
-37276,37277,37278,37279,14454,14455,37280,14456,37281,14457,37282,37283,37284,
-37285,37286,37287,14458,37288,37289,37290,14459,37291,37292,37293,37294,37295,
-37296,37297,37298,37299,37300,37301,37302,37303,37304,37305,14460,14461,37306,
-37307,37308,37309,37310,37311,37312,37313,37314,37315,37316,37317,37318,37319,
-37320,37321,37322,37323,37324,37325,37326,37327,37328,37329,37330,37331,37332,
-37333,37334,37335,37336,37337,37338,37339,14462,37340,37341,37342,14625,37343,
-37344,37345,14626,37346,37347,37348,37349,37350,37351,37352,37353,14627,37354,
-14628,37355,14629,37356,37357,37358,37359,37360,37361,14630,37362,37363,37364,
-14631,37365,37366,37367,14632,37368,37369,37370,37371,37372,37373,37374,37441,
-14633,37442,14634,37443,37444,37445,37446,37447,37448,37449,37450,14635,14636,
-14637,37451,14638,37452,37453,14639,14640,14641,14642,37454,37455,37456,37457,
-37458,14643,14644,37459,14645,37460,14646,37461,37462,37463,14647,37464,14648,
-14649,37465,37466,37473,14650,37474,37475,37476,14651,37477,37478,37479,37480,
-37481,37482,37483,37484,14652,37485,14653,37486,37487,37488,37489,37490,37491,
-37492,37493,14654,37494,37495,37496,37497,37498,37505,37506,37507,37508,37509,
-37510,37511,37512,37513,37514,37515,37516,37517,37518,37519,37520,37521,37522,
-37523,37524,37525,37526,14655,37527,37528,37529,14656,37530,37531,37532,14657,
-37533,37534,37535,37536,37537,37538,37539,37540,37541,37542,37543,37544,37545,
-37546,37547,37548,37549,37550,37551,14658,37552,37553,37554,14659,37555,37556,
-37557,14660,37558,37559,37560,37561,37562,37563,37564,14661,37565,37566,14662,
-37567,37568,37569,37570,37571,37572,37573,37574,14663,37575,37576,37577,14664,
-37578,37579,37580,14665,37581,37582,37583,37584,37585,37586,37587,14666,37588,
-37589,14667,37590,37591,37592,37593,37594,37595,37596,37597,37598,37599,37600,
-37601,37602,37603,37604,37605,37606,37607,37608,37609,37610,37611,37612,37613,
-37614,37615,37616,37617,37618,37619,37620,37621,37622,37623,37624,37625,14668,
-14669,37626,37627,14670,37628,37629,14671,14672,37630,14673,37697,37698,37699,
-37700,37701,14674,14675,37702,14676,14677,14678,37703,14679,37704,14680,37705,
-37706,14681,14682,14683,14684,14685,37707,37708,14686,14687,14688,14689,14690,
-37709,37710,37711,37712,14691,14692,37713,14693,37714,14694,37715,37716,37717,
-14695,37718,37719,14696,14697,37720,37721,14698,37722,37729,37730,14699,37731,
-37732,37733,37734,37735,37736,37737,14700,14701,37738,14702,14703,14704,37739,
-37740,37741,14705,37742,37743,14706,14707,37744,37745,14708,37746,37747,37748,
-37749,37750,37751,37752,37753,37754,37761,37762,37763,14709,37764,37765,37766,
-37767,37768,37769,37770,37771,37772,37773,37774,37775,37776,37777,37778,37779,
-37780,37781,37782,37783,37784,37785,37786,37787,37788,37789,37790,37791,37792,
-37793,37794,37795,37796,37797,37798,37799,37800,37801,14710,14711,37802,37803,
-14712,37804,37805,14713,14714,37806,14715,37807,37808,37809,37810,37811,14716,
-14717,37812,14718,37813,14881,14882,37814,37815,37816,37817,37818,14883,14884,
-37819,37820,14885,37821,37822,14886,14887,37823,37824,37825,37826,37827,37828,
-37829,14888,14889,37830,14890,14891,14892,37831,37832,37833,37834,37835,37836,
-14893,14894,37837,37838,14895,37839,37840,37841,14896,37842,37843,37844,37845,
-37846,37847,37848,37849,14897,37850,14898,14899,14900,37851,37852,37853,14901,
-37854,37855,14902,37856,37857,37858,14903,37859,37860,37861,37862,37863,37864,
-37865,37866,37867,37868,37869,37870,37871,37872,37873,37874,37875,37876,37877,
-37878,37879,37880,37881,14904,14905,14906,37882,14907,37883,37884,37885,14908,
-37886,37953,37954,37955,37956,37957,37958,14909,14910,37959,14911,37960,14912,
-37961,37962,37963,37964,37965,37966,14913,37967,37968,37969,14914,37970,37971,
-37972,37973,37974,37975,37976,37977,37978,37985,37986,37987,37988,37989,37990,
-14915,37991,37992,37993,37994,37995,37996,37997,14916,37998,37999,38000,38001,
-38002,38003,38004,38005,38006,38007,38008,38009,38010,38017,38018,38019,38020,
-38021,38022,14917,38023,38024,38025,38026,38027,38028,38029,14918,14919,38030,
-38031,14920,38032,38033,38034,14921,38035,38036,38037,38038,38039,38040,38041,
-14922,14923,38042,38043,38044,38045,38046,38047,38048,38049,38050,38051,14924,
-38052,38053,38054,14925,38055,38056,38057,38058,38059,38060,38061,38062,38063,
-38064,38065,38066,38067,38068,38069,38070,38071,38072,38073,38074,38075,38076,
-38077,14926,14927,38078,38079,14928,38080,38081,14929,14930,14931,14932,38082,
-38083,38084,38085,38086,14933,14934,38087,14935,38088,14936,38089,38090,38091,
-14937,14938,38092,14939,38093,38094,38095,38096,38097,38098,38099,14940,38100,
-38101,38102,38103,38104,38105,38106,38107,38108,38109,38110,14941,38111,38112,
-38113,38114,38115,38116,38117,14942,38118,38119,38120,38121,38122,38123,38124,
-38125,38126,38127,38128,38129,38130,38131,38132,38133,38134,38135,38136,38137,
-38138,38139,38140,38141,38142,38209,38210,14943,14944,38211,38212,14945,38213,
-38214,38215,14946,38216,38217,38218,38219,38220,38221,38222,38223,38224,38225,
-38226,38227,14947,38228,38229,38230,38231,38232,38233,14948,38234,38241,38242,
-14949,38243,38244,38245,14950,38246,38247,38248,38249,38250,38251,38252,14951,
-38253,38254,14952,38255,14953,38256,38257,38258,38259,38260,38261,14954,14955,
-38262,38263,14956,38264,38265,38266,14957,38273,38274,38275,38276,38277,38278,
-38279,14958,14959,38280,14960,38281,38282,38283,38284,38285,38286,38287,38288,
-38289,38290,38291,38292,38293,38294,38295,38296,38297,38298,38299,38300,38301,
-38302,38303,38304,38305,38306,38307,38308,38309,38310,38311,38312,38313,38314,
-38315,38316,14961,14962,38317,38318,14963,38319,38320,38321,14964,38322,14965,
-38323,38324,38325,38326,38327,14966,14967,38328,14968,38329,14969,14970,14971,
-38330,38331,38332,38333,14972,14973,38334,38335,14974,38336,38337,38338,15137,
-38339,15138,38340,38341,38342,38343,38344,15139,15140,38345,15141,15142,15143,
-38346,38347,38348,38349,38350,15144,15145,15146,38351,38352,15147,38353,38354,
-38355,15148,38356,38357,38358,38359,38360,38361,38362,15149,15150,38363,15151,
-15152,15153,38364,38365,38366,38367,38368,38369,15154,15155,38370,38371,38372,
-38373,38374,38375,38376,38377,38378,38379,38380,38381,38382,38383,15156,38384,
-38385,38386,38387,38388,38389,38390,38391,38392,38393,38394,38395,38396,38397,
-38398,38465,38466,38467,38468,38469,38470,38471,38472,38473,38474,38475,38476,
-38477,38478,38479,38480,38481,38482,38483,38484,38485,38486,38487,38488,15157,
-15158,38489,38490,15159,38497,38498,15160,15161,38499,38500,38501,38502,38503,
-38504,38505,15162,38506,38507,15163,15164,15165,38508,38509,38510,38511,38512,
-38513,15166,38514,38515,38516,38517,38518,38519,38520,38521,38522,38529,38530,
-38531,38532,38533,38534,38535,38536,38537,38538,38539,15167,38540,38541,38542,
-38543,38544,38545,15168,15169,38546,38547,38548,38549,38550,38551,38552,38553,
-38554,38555,38556,38557,38558,38559,15170,15171,38560,15172,15173,15174,38561,
-38562,38563,38564,38565,38566,38567,38568,38569,38570,38571,38572,38573,38574,
-38575,38576,38577,38578,38579,38580,38581,38582,38583,38584,38585,38586,38587,
-38588,38589,38590,38591,38592,38593,38594,15175,15176,38595,38596,15177,38597,
-38598,38599,15178,38600,38601,38602,38603,38604,38605,38606,15179,15180,38607,
-38608,38609,15181,38610,38611,38612,38613,38614,38615,38616,38617,38618,38619,
-38620,38621,38622,38623,38624,38625,38626,38627,38628,38629,38630,38631,38632,
-38633,38634,38635,38636,38637,38638,38639,38640,38641,38642,38643,38644,38645,
-38646,38647,38648,38649,38650,38651,38652,38653,38654,38721,38722,38723,38724,
-38725,38726,38727,38728,38729,38730,38731,38732,38733,38734,38735,38736,38737,
-15182,38738,38739,38740,38741,38742,38743,38744,38745,38746,38753,38754,38755,
-38756,38757,38758,38759,38760,38761,38762,38763,38764,38765,38766,38767,38768,
-38769,38770,15183,38771,38772,38773,38774,38775,38776,38777,38778,38785,38786,
-38787,38788,38789,38790,38791,38792,38793,38794,38795,38796,15184,38797,38798,
-38799,38800,38801,38802,15185,15186,38803,38804,15187,38805,38806,38807,15188,
-38808,38809,38810,38811,38812,38813,38814,15189,38815,38816,15190,38817,15191,
-38818,38819,38820,38821,38822,38823,38824,38825,38826,38827,38828,38829,38830,
-38831,38832,38833,38834,38835,38836,38837,38838,38839,38840,38841,38842,38843,
-38844,38845,38846,38847,38848,38849,38850,38851,38852,38853,38854,38855,38856,
-38857,38858,38859,38860,38861,38862,38863,38864,38865,38866,38867,38868,38869,
-38870,38871,38872,38873,38874,38875,38876,38877,38878,38879,38880,38881,38882,
-38883,38884,38885,38886,38887,38888,38889,38890,38891,38892,38893,38894,38895,
-38896,38897,38898,38899,38900,38901,38902,38903,38904,38905,38906,38907,15192,
-38908,38909,38910,38977,38978,38979,38980,38981,38982,38983,38984,38985,38986,
-38987,38988,38989,38990,38991,38992,38993,15193,38994,38995,38996,38997,38998,
-38999,15194,39000,39001,39002,15195,39009,39010,39011,15196,39012,39013,39014,
-39015,39016,39017,39018,15197,15198,39019,39020,39021,39022,39023,39024,39025,
-39026,39027,39028,39029,39030,39031,39032,39033,39034,39041,39042,39043,39044,
-39045,39046,39047,39048,39049,39050,39051,39052,39053,39054,39055,39056,39057,
-39058,39059,39060,39061,39062,15199,15200,39063,39064,15201,39065,39066,39067,
-15202,39068,39069,39070,39071,39072,39073,39074,15203,15204,39075,15205,39076,
-15206,39077,39078,39079,39080,39081,39082,15207,15208,39083,15209,15210,39084,
-39085,15211,15212,15213,15214,39086,39087,39088,39089,39090,15215,15216,39091,
-15217,15218,15219,39092,39093,39094,15220,39095,39096,15221,15222,39097,39098,
-15223,39099,39100,39101,15224,39102,39103,39104,39105,39106,39107,39108,15225,
-15226,39109,15227,15228,15229,39110,39111,39112,39113,39114,39115,15230,15393,
-39116,39117,15394,39118,39119,39120,15395,39121,39122,39123,39124,39125,39126,
-39127,15396,15397,39128,15398,39129,15399,39130,39131,39132,39133,39134,39135,
-15400,39136,39137,39138,15401,39139,39140,39141,15402,39142,39143,39144,39145,
-39146,39147,39148,15403,39149,39150,39151,39152,15404,39153,39154,39155,39156,
-39157,39158,15405,15406,15407,15408,15409,39159,39160,15410,15411,39161,15412,
-15413,39162,39163,39164,39165,15414,15415,39166,15416,15417,15418,39233,39234,
-39235,39236,15419,39237,15420,15421,39238,39239,15422,39240,39241,39242,15423,
-39243,39244,39245,39246,39247,39248,39249,15424,15425,39250,15426,15427,15428,
-39251,39252,39253,39254,39255,39256,15429,15430,39257,39258,15431,39265,39266,
-39267,15432,39268,39269,39270,39271,39272,39273,39274,15433,15434,39275,15435,
-15436,15437,39276,39277,39278,39279,39280,39281,15438,39282,39283,39284,15439,
-39285,39286,39287,15440,39288,39289,39290,39297,39298,39299,39300,39301,39302,
-39303,39304,39305,15441,39306,39307,39308,39309,39310,39311,15442,15443,15444,
-39312,15445,39313,39314,39315,15446,39316,15447,39317,39318,39319,39320,39321,
-15448,15449,39322,15450,39323,15451,39324,39325,39326,15452,39327,39328,15453,
-15454,39329,39330,15455,39331,39332,39333,15456,39334,39335,39336,39337,39338,
-39339,39340,39341,39342,39343,39344,39345,15457,39346,39347,39348,39349,39350,
-39351,15458,39352,39353,39354,15459,39355,39356,39357,15460,39358,39359,39360,
-39361,39362,39363,39364,15461,39365,39366,15462,15463,39367,39368,39369,39370,
-39371,39372,39373,15464,39374,39375,39376,15465,39377,39378,39379,15466,39380,
-39381,39382,39383,39384,39385,39386,15467,15468,39387,15469,39388,39389,39390,
-39391,39392,39393,39394,39395,15470,15471,39396,39397,15472,39398,39399,39400,
-15473,39401,39402,39403,39404,39405,39406,39407,15474,15475,39408,15476,39409,
-15477,39410,39411,39412,39413,39414,39415,15478,15479,39416,39417,15480,39418,
-39419,15481,15482,39420,39421,39422,39489,39490,39491,39492,15483,15484,39493,
-15485,39494,15486,39495,15649,39496,15650,15651,39497,15652,39498,39499,39500,
-39501,39502,39503,39504,39505,39506,39507,39508,39509,39510,39511,39512,39513,
-39514,39521,39522,15653,39523,39524,39525,39526,39527,39528,39529,15654,15655,
-39530,39531,15656,39532,39533,39534,15657,39535,39536,39537,39538,39539,39540,
-39541,15658,39542,39543,39544,39545,15659,39546,39553,39554,39555,39556,39557,
-15660,15661,39558,39559,15662,39560,39561,39562,15663,39563,39564,39565,39566,
-39567,39568,39569,15664,15665,39570,15666,39571,15667,39572,39573,39574,39575,
-39576,39577,15668,15669,39578,39579,39580,39581,39582,39583,15670,39584,39585,
-39586,39587,39588,39589,39590,15671,39591,39592,15672,39593,15673,39594,39595,
-39596,39597,39598,39599,15674,15675,39600,39601,15676,39602,39603,39604,15677,
-15678,39605,39606,39607,39608,39609,39610,15679,15680,39611,15681,39612,15682,
-39613,39614,39615,39616,39617,39618,39619,39620,39621,39622,39623,39624,39625,
-39626,39627,39628,39629,39630,39631,39632,39633,39634,39635,39636,39637,39638,
-39639,39640,39641,39642,39643,39644,39645,39646,15683,15684,39647,39648,15685,
-39649,39650,15686,15687,39651,39652,39653,39654,39655,39656,15688,15689,15690,
-39657,15691,39658,15692,39659,39660,39661,39662,15693,39663,15694,15695,39664,
-15696,15697,39665,39666,39667,15698,39668,39669,39670,39671,39672,39673,39674,
-15699,15700,39675,39676,15701,15702,39677,39678,39745,39746,39747,15703,15704,
-15705,39748,39749,15706,39750,39751,39752,15707,39753,39754,39755,39756,39757,
-39758,39759,15708,15709,39760,39761,15710,15711,39762,39763,39764,39765,39766,
-39767,39768,39769,39770,39777,39778,39779,39780,39781,39782,39783,39784,39785,
-39786,39787,39788,39789,39790,39791,39792,39793,39794,15712,39795,39796,39797,
-39798,39799,39800,39801,39802,39809,39810,39811,39812,39813,39814,39815,39816,
-39817,39818,39819,39820,39821,39822,39823,39824,39825,39826,39827,39828,39829,
-39830,39831,39832,39833,39834,15713,15714,39835,39836,15715,39837,39838,39839,
-15716,39840,15717,39841,39842,39843,39844,39845,15718,15719,39846,39847,15720,
-15721,39848,39849,39850,39851,39852,39853,15722,39854,39855,39856,15723,39857,
-39858,39859,15724,39860,39861,39862,39863,39864,39865,39866,39867,39868,39869,
-39870,39871,39872,39873,39874,39875,39876,39877,39878,39879,39880,39881,39882,
-39883,39884,39885,39886,39887,39888,39889,39890,39891,39892,39893,39894,39895,
-39896,39897,39898,39899,39900,39901,39902,39903,39904,39905,39906,39907,39908,
-39909,39910,15725,39911,39912,39913,39914,39915,39916,39917,39918,39919,39920,
-39921,39922,39923,39924,39925,39926,39927,39928,39929,39930,39931,39932,39933,
-15726,15727,39934,40001,15728,40002,40003,15729,15730,40004,15731,40005,40006,
-40007,40008,40009,15732,15733,40010,40011,40012,15734,40013,40014,40015,40016,
-40017,40018,15735,15736,40019,40020,15737,40021,40022,40023,40024,40025,40026,
-40033,40034,40035,40036,40037,40038,40039,40040,40041,15738,40042,40043,40044,
-40045,40046,40047,40048,15739,40049,40050,40051,40052,40053,40054,40055,40056,
-40057,40058,40065,40066,40067,40068,40069,40070,40071,40072,40073,15740,40074,
-40075,40076,40077,40078,40079,40080,15741,40081,40082,40083,15742,40084,40085,
-40086,15905,40087,40088,40089,40090,40091,40092,40093,15906,15907,40094,40095,
-40096,40097,40098,40099,40100,40101,40102,40103,15908,40104,40105,40106,40107,
-40108,40109,40110,40111,40112,40113,40114,40115,40116,40117,40118,40119,40120,
-40121,40122,40123,40124,40125,40126,40127,40128,40129,40130,15909,15910,40131,
-40132,15911,40133,40134,40135,15912,40136,40137,40138,40139,40140,40141,40142,
-15913,15914,40143,40144,40145,15915,40146,40147,40148,40149,40150,40151,15916,
-40152,40153,40154,40155,40156,40157,40158,40159,40160,40161,40162,40163,40164,
-40165,40166,40167,40168,40169,40170,15917,40171,40172,40173,40174,40175,40176,
-40177,15918,40178,40179,40180,40181,40182,40183,40184,40185,40186,40187,40188,
-40189,40190,40257,40258,40259,40260,40261,40262,40263,40264,40265,40266,40267,
-40268,40269,40270,15919,40271,40272,40273,15920,40274,40275,40276,40277,40278,
-40279,40280,40281,40282,40289,40290,40291,40292,40293,40294,40295,40296,40297,
-40298,40299,40300,40301,40302,40303,40304,40305,40306,40307,40308,40309,40310,
-40311,40312,40313,40314,40321,40322,40323,40324,40325,40326,40327,40328,40329,
-15921,40330,40331,40332,40333,40334,40335,15922,15923,40336,40337,15924,40338,
-40339,40340,15925,40341,15926,40342,40343,40344,40345,15927,15928,15929,40346,
-40347,40348,40349,40350,40351,40352,40353,40354,40355,15930,40356,40357,40358,
-15931,40359,40360,40361,15932,40362,40363,40364,40365,40366,40367,40368,15933,
-40369,40370,40371,40372,40373,40374,40375,40376,40377,40378,40379,15934,15935,
-40380,40381,15936,40382,40383,40384,15937,40385,40386,40387,40388,40389,40390,
-40391,15938,15939,40392,15940,40393,15941,40394,40395,40396,40397,40398,40399,
-15942,15943,40400,40401,15944,15945,15946,40402,15947,15948,15949,40403,40404,
-40405,40406,15950,15951,15952,40407,15953,15954,15955,40408,40409,40410,15956,
-15957,40411,15958,15959,40412,40413,15960,40414,40415,40416,15961,40417,40418,
-40419,40420,40421,40422,40423,15962,15963,40424,15964,15965,15966,40425,40426,
-40427,40428,40429,40430,15967,15968,40431,40432,15969,40433,40434,40435,15970,
-40436,40437,15971,40438,40439,40440,40441,15972,15973,40442,15974,40443,15975,
-40444,40445,40446,15976,40513,15977,15978,40514,40515,40516,15979,40517,40518,
-40519,15980,40520,40521,40522,40523,40524,40525,40526,40527,15981,40528,40529,
-40530,40531,40532,40533,40534,40535,40536,40537,15982,15983,40538,40545,15984,
-15985,40546,15986,15987,15988,15989,40547,40548,40549,40550,40551,15990,15991,
-15992,15993,15994,15995,15996,40552,15997,40553,15998,40554,16161,16162,40555,
-40556,16163,40557,40558,40559,16164,40560,40561,40562,40563,40564,40565,40566,
-16165,16166,40567,16167,40568,16168,40569,40570,40577,40578,40579,40580,16169,
-16170,16171,40581,16172,40582,40583,40584,16173,40585,16174,16175,40586,40587,
-40588,40589,16176,16177,16178,16179,16180,16181,40590,40591,40592,16182,16183,
-16184,16185,40593,40594,40595,16186,40596,40597,40598,16187,40599,40600,40601,
-40602,40603,40604,40605,16188,16189,40606,16190,16191,40607,40608,40609,40610,
-40611,40612,40613,16192,16193,40614,40615,16194,40616,40617,40618,16195,16196,
-16197,40619,16198,40620,40621,16199,16200,16201,40622,16202,40623,16203,40624,
-16204,40625,40626,40627,40628,16205,16206,40629,40630,16207,40631,40632,40633,
-16208,40634,40635,40636,40637,40638,40639,40640,16209,16210,40641,16211,16212,
-16213,40642,40643,40644,40645,40646,40647,16214,16215,40648,40649,16216,40650,
-40651,40652,40653,40654,40655,40656,40657,40658,40659,40660,16217,40661,40662,
-16218,40663,16219,40664,40665,40666,40667,40668,40669,16220,16221,40670,40671,
-16222,40672,40673,40674,16223,40675,40676,40677,40678,40679,40680,40681,16224,
-16225,40682,16226,40683,16227,40684,40685,40686,40687,40688,40689,16228,16229,
-40690,40691,16230,40692,40693,40694,16231,40695,40696,40697,40698,40699,40700,
-40701,16232,16233,40702,16234,40769,16235,40770,40771,40772,40773,40774,40775,
-16236,16237,40776,40777,16238,40778,40779,40780,16239,16240,16241,40781,40782,
-40783,40784,40785,16242,16243,40786,16244,40787,16245,40788,40789,40790,40791,
-40792,40793,16246,16247,40794,40801,16248,40802,40803,40804,16249,40805,40806,
-40807,40808,40809,40810,40811,16250,16251,40812,40813,16252,16253,40814,40815,
-40816,40817,40818,40819,16254,16417,40820,40821,16418,40822,40823,40824,16419,
-40825,40826,40833,40834,40835,40836,40837,16420,16421,40838,40839,40840,16422,
-40841,40842,40843,40844,40845,40846,16423,16424,40847,40848,16425,40849,40850,
-40851,16426,40852,40853,40854,40855,40856,40857,40858,16427,16428,40859,16429,
-40860,16430,40861,40862,40863,40864,40865,40866,16431,16432,40867,40868,16433,
-40869,40870,40871,16434,40872,40873,40874,40875,40876,40877,40878,16435,16436,
-40879,16437,40880,16438,40881,16439,40882,40883,40884,40885,16440,16441,40886,
-40887,16442,40888,40889,40890,16443,40891,40892,40893,40894,40895,16444,40896,
-16445,16446,40897,16447,40898,16448,16449,16450,16451,16452,16453,16454,16455,
-40899,40900,40901,16456,40902,40903,40904,16457,40905,40906,40907,40908,40909,
-40910,40911,16458,40912,40913,16459,40914,40915,40916,40917,40918,40919,40920,
-40921,16460,16461,40922,40923,16462,40924,40925,40926,16463,16464,16465,40927,
-40928,40929,40930,16466,16467,16468,40931,16469,16470,16471,16472,40932,40933,
-40934,16473,40935,16474,16475,40936,40937,16476,40938,16477,16478,16479,40939,
-16480,40940,40941,40942,40943,40944,16481,16482,40945,16483,16484,16485,16486,
-40946,40947,40948,40949,40950,16487,16488,40951,40952,16489,40953,40954,40955,
-16490,40956,40957,40958,41025,41026,41027,41028,16491,16492,41029,16493,16494,
-16495,41030,41031,41032,41033,41034,41035,16496,16497,41036,41037,16498,41038,
-16499,41039,16500,41040,41041,41042,41043,41044,41045,41046,16501,41047,41048,
-41049,41050,16502,41057,41058,41059,41060,41061,41062,16503,41063,41064,41065,
-16504,41066,41067,41068,16505,41069,41070,41071,41072,41073,41074,41075,41076,
-41077,41078,41079,41080,41081,41082,41089,41090,41091,41092,41093,16506,16507,
-41094,41095,16508,41096,41097,41098,16509,41099,16510,41100,41101,41102,41103,
-41104,16673,16674,41105,16675,41106,16676,16677,41107,41108,41109,41110,41111,
-16678,16679,41112,41113,16680,41114,41115,41116,16681,41117,41118,41119,41120,
-41121,41122,41123,16682,16683,41124,16684,41125,16685,41126,41127,41128,41129,
-41130,41131,16686,41132,41133,41134,16687,41135,41136,41137,16688,41138,41139,
-41140,41141,41142,41143,41144,16689,16690,41145,41146,16691,16692,41147,41148,
-41149,41150,41151,41152,16693,41153,41154,41155,41156,41157,41158,41159,41160,
-41161,41162,41163,41164,41165,41166,41167,41168,41169,41170,41171,41172,41173,
-41174,41175,41176,41177,41178,41179,16694,16695,41180,41181,16696,41182,41183,
-41184,16697,41185,16698,41186,41187,41188,41189,41190,16699,16700,41191,16701,
-41192,16702,16703,16704,41193,41194,41195,16705,16706,16707,41196,41197,41198,
-41199,41200,41201,16708,41202,41203,41204,41205,41206,41207,41208,41209,16709,
-41210,16710,41211,16711,41212,41213,41214,41281,41282,41283,16712,41284,41285,
-41286,41287,41288,41289,41290,41291,41292,41293,41294,41295,41296,41297,41298,
-41299,41300,41301,41302,16713,16714,41303,41304,41305,41306,41313,41314,16715,
-41315,41316,41317,16716,41318,41319,41320,16717,41321,41322,41323,41324,41325,
-41326,41327,16718,16719,41328,16720,41329,16721,41330,41331,41332,41333,41334,
-41335,16722,16723,41336,41337,16724,41338,41345,41346,41347,41348,41349,41350,
-41351,41352,41353,41354,41355,41356,41357,41358,41359,16725,41360,41361,41362,
-41363,41364,41365,16726,16727,41366,41367,16728,41368,41369,41370,16729,16730,
-16731,41371,41372,41373,41374,41375,16732,16733,41376,16734,41537,16735,41538,
-41539,41540,41541,41542,41543,16736,41544,41545,41546,41547,41548,41549,41550,
-41551,41552,41553,41554,41555,41556,41557,41558,41559,41560,41561,41562,16737,
-41569,41570,41571,41572,41573,41574,41575,16738,41576,41577,41578,41579,41580,
-41581,41582,41583,41584,41585,41586,41587,41588,41589,41590,41591,41592,41593,
-41594,41601,41602,41603,41604,41605,41606,41607,41608,16739,16740,41609,41610,
-16741,41611,41612,41613,16742,41614,41615,41616,41617,41618,41619,41620,16743,
-16744,41621,16745,41622,41623,41624,41625,41626,41627,41628,41629,16746,41630,
-41631,41632,16747,41793,41794,41795,16748,41796,41797,41798,41799,41800,41801,
-41802,16749,41803,41804,41805,41806,41807,41808,41809,41810,41811,41812,41813,
-16750,16751,41814,41815,16752,41816,41817,41818,16753,41825,41826,41827,41828,
-41829,41830,41831,16754,16755,41832,16756,41833,16757,41834,41835,41836,41837,
-41838,41839,41840,41841,41842,41843,41844,41845,41846,41847,41848,41849,41850,
-41857,41858,41859,41860,41861,41862,41863,41864,41865,41866,41867,41868,41869,
-41870,41871,41872,41873,16758,16759,41874,41875,16760,41876,41877,16761,16762,
-41878,16763,41879,41880,41881,41882,41883,16764,16765,41884,16766,41885,16929,
-16930,41886,41887,16931,16932,41888,16933,16934,42049,42050,16935,42051,16936,
-42052,16937,42053,42054,16938,42055,42056,42057,42058,16939,16940,42059,16941,
-16942,16943,42060,42061,42062,42063,42064,42065,16944,16945,42066,42067,16946,
-42068,42069,42070,16947,42071,42072,42073,42074,42081,42082,42083,16948,16949,
-42084,16950,16951,16952,42085,42086,42087,42088,42089,42090,16953,42091,42092,
-42093,16954,42094,42095,42096,42097,42098,42099,42100,42101,42102,42103,42104,
-42105,42106,42113,42114,42115,16955,42116,42117,42118,42119,42120,42121,42122,
-42123,42124,42125,42126,42127,42128,42129,42130,42131,42132,42133,42134,42135,
-42136,42137,42138,42139,42140,42141,42142,42143,42144,42305,42306,42307,42308,
-42309,16956,16957,42310,42311,16958,42312,42313,42314,16959,42315,42316,42317,
-42318,42319,42320,42321,16960,16961,42322,16962,16963,16964,42323,42324,42325,
-42326,42327,42328,16965,42329,42330,42337,42338,42339,42340,42341,42342,42343,
-42344,42345,42346,42347,42348,42349,42350,42351,42352,42353,42354,16966,42355,
-42356,42357,42358,42359,42360,16967,42361,42362,42369,42370,42371,42372,42373,
-42374,42375,42376,42377,42378,42379,42380,42381,42382,42383,42384,42385,16968,
-42386,42387,42388,42389,42390,42391,42392,42393,42394,42395,42396,42397,42398,
-42399,42400,42561,42562,42563,42564,42565,42566,42567,42568,42569,42570,42571,
-42572,42573,42574,42575,42576,42577,42578,42579,42580,16969,16970,42581,42582,
-16971,42583,42584,42585,16972,42586,42593,42594,42595,42596,42597,42598,16973,
-16974,42599,16975,42600,16976,42601,16977,42602,42603,42604,42605,16978,16979,
-42606,42607,42608,42609,42610,42611,16980,42612,42613,42614,42615,42616,42617,
-42618,42625,42626,42627,42628,16981,42629,42630,42631,42632,42633,42634,42635,
-16982,42636,42637,42638,42639,42640,42641,42642,42643,42644,42645,42646,42647,
-42648,42649,42650,42651,42652,42653,42654,16983,42655,42656,42817,42818,42819,
-42820,42821,16984,42822,42823,42824,16985,42825,42826,42827,16986,42828,42829,
-42830,42831,42832,42833,42834,16987,16988,42835,42836,42837,42838,42839,42840,
-42841,42842,42849,42850,42851,42852,42853,42854,42855,42856,42857,42858,42859,
-42860,42861,42862,42863,42864,42865,42866,42867,42868,42869,42870,42871,16989,
-42872,42873,42874,42881,42882,42883,16990,16991,42884,42885,16992,42886,42887,
-42888,16993,42889,42890,42891,42892,42893,42894,42895,16994,16995,42896,42897,
-42898,16996,42899,42900,42901,42902,42903,42904,16997,42905,42906,42907,42908,
-42909,42910,42911,42912,43073,43074,43075,43076,43077,43078,43079,43080,43081,
-43082,43083,16998,16999,43084,43085,43086,43087,43088,43089,43090,43091,43092,
-43093,43094,43095,43096,43097,43098,43105,43106,43107,43108,43109,43110,43111,
-43112,43113,43114,43115,43116,43117,43118,43119,43120,43121,43122,43123,17000,
-43124,43125,43126,43127,43128,43129,43130,43137,43138,43139,43140,43141,43142,
-43143,43144,43145,43146,43147,43148,43149,43150,43151,43152,43153,43154,43155,
-43156,17001,43157,43158,43159,43160,43161,43162,43163,43164,43165,43166,43167,
-43168,43329,43330,43331,43332,43333,43334,43335,43336,43337,43338,43339,43340,
-43341,43342,43343,17002,43344,43345,43346,43347,43348,43349,43350,43351,43352,
-43353,43354,43361,43362,43363,43364,17003,43365,43366,17004,43367,17005,43368,
-43369,43370,43371,43372,43373,43374,43375,43376,43377,43378,43379,43380,43381,
-43382,43383,43384,43385,43386,43393,43394,43395,43396,43397,43398,43399,43400,
-43401,43402,43403,43404,43405,43406,43407,17006,17007,43408,43409,17008,43410,
-43411,43412,17009,43413,43414,43415,43416,43417,43418,43419,17010,17011,43420,
-43421,43422,17012,17013,43423,43424,43585,43586,17014,17015,17016,43587,43588,
-17017,43589,17018,43590,17019,43591,43592,43593,43594,43595,43596,43597,17020,
-17021,43598,17022,17185,17186,17187,43599,43600,43601,43602,43603,17188,17189,
-43604,43605,17190,43606,43607,43608,17191,43609,43610,43617,43618,43619,43620,
-43621,17192,17193,43622,17194,17195,17196,43623,43624,43625,43626,43627,43628,
-17197,43629,43630,43631,17198,43632,17199,43633,17200,43634,43635,43636,43637,
-43638,43639,43640,17201,43641,43642,43649,43650,17202,43651,43652,43653,43654,
-43655,43656,43657,43658,43659,43660,43661,43662,43663,43664,43665,43666,43667,
-43668,43669,43670,43671,43672,43673,43674,43675,43676,43677,43678,43679,43680,
-43841,43842,43843,43844,17203,17204,43845,43846,17205,43847,43848,43849,17206,
-43850,43851,43852,43853,43854,43855,43856,17207,17208,43857,17209,17210,17211,
-43858,43859,43860,43861,43862,43863,17212,17213,43864,43865,17214,43866,43873,
-43874,17215,43875,43876,43877,43878,43879,43880,43881,17216,17217,43882,17218,
-43883,17219,43884,43885,43886,43887,43888,43889,17220,43890,43891,43892,17221,
-43893,43894,43895,43896,43897,43898,43905,43906,43907,43908,43909,43910,43911,
-43912,43913,17222,43914,43915,43916,43917,43918,43919,43920,17223,43921,43922,
-43923,17224,43924,43925,43926,43927,43928,43929,43930,43931,43932,43933,43934,
-43935,43936,44097,44098,44099,17225,44100,44101,44102,44103,44104,44105,17226,
-17227,44106,44107,17228,44108,44109,44110,17229,44111,44112,44113,44114,44115,
-44116,44117,17230,17231,44118,17232,44119,17233,44120,44121,44122,44129,44130,
-44131,17234,44132,44133,44134,17235,44135,44136,44137,17236,44138,44139,44140,
-44141,44142,44143,44144,44145,44146,44147,44148,44149,17237,44150,44151,44152,
-44153,44154,44161,44162,44163,44164,44165,44166,44167,44168,44169,44170,44171,
-44172,44173,44174,44175,44176,44177,44178,44179,44180,44181,44182,44183,44184,
-44185,44186,44187,44188,44189,17238,44190,44191,44192,17239,44353,44354,44355,
-17240,44356,44357,44358,44359,44360,44361,44362,17241,17242,44363,17243,44364,
-17244,44365,44366,44367,44368,44369,44370,17245,44371,44372,44373,44374,44375,
-44376,44377,44378,44385,44386,44387,44388,44389,44390,44391,17246,44392,44393,
-44394,44395,44396,44397,44398,44399,44400,44401,44402,17247,17248,44403,44404,
-17249,44405,44406,44407,17250,44408,44409,44410,44417,44418,44419,44420,17251,
-17252,44421,17253,44422,17254,44423,44424,44425,44426,44427,44428,17255,44429,
-44430,44431,44432,44433,44434,44435,44436,44437,44438,44439,44440,44441,44442,
-44443,44444,44445,44446,44447,17256,44448,44609,44610,44611,44612,44613,44614,
-17257,44615,44616,44617,17258,44618,44619,44620,44621,44622,44623,44624,44625,
-44626,44627,44628,44629,44630,44631,44632,44633,44634,44641,44642,44643,44644,
-44645,44646,17259,44647,44648,44649,17260,44650,44651,44652,17261,44653,44654,
-44655,44656,44657,44658,44659,17262,17263,44660,17264,44661,17265,44662,44663,
-44664,44665,44666,44673,17266,44674,44675,44676,17267,44677,44678,44679,17268,
-44680,44681,44682,44683,44684,44685,44686,17269,44687,44688,44689,44690,17270,
-44691,44692,44693,44694,44695,44696,17271,17272,44697,44698,17273,44699,44700,
-44701,17274,44702,44703,44704,44865,44866,44867,44868,17275,17276,44869,17277,
-44870,17278,44871,44872,44873,44874,44875,44876,44877,44878,44879,44880,44881,
-44882,44883,44884,44885,44886,44887,44888,44889,44890,44897,44898,44899,44900,
-44901,44902,44903,44904,44905,44906,44907,44908,44909,44910,17441,17442,44911,
-44912,17443,44913,44914,17444,17445,17446,44915,44916,44917,44918,44919,44920,
-17447,17448,44921,17449,44922,17450,44929,44930,44931,44932,44933,44934,17451,
-17452,44935,44936,17453,44937,44938,44939,17454,44940,44941,44942,44943,44944,
-44945,44946,17455,17456,44947,17457,44948,17458,44949,44950,44951,44952,44953,
-44954,17459,17460,44955,44956,17461,44957,44958,44959,17462,44960,45121,45122,
-45123,45124,45125,45126,17463,17464,45127,17465,17466,17467,45128,45129,45130,
-45131,45132,45133,17468,17469,45134,45135,45136,45137,45138,45139,45140,45141,
-45142,45143,45144,45145,45146,45153,45154,45155,45156,45157,45158,17470,45159,
-45160,45161,45162,45163,45164,45165,45166,45167,45168,45169,45170,45171,45172,
-45173,45174,45175,45176,45177,45178,45185,45186,45187,45188,45189,45190,45191,
-45192,45193,45194,45195,45196,45197,45198,17471,17472,45199,45200,17473,45201,
-45202,17474,17475,45203,45204,45205,45206,45207,45208,45209,17476,17477,45210,
-17478,17479,17480,45211,45212,45213,45214,45215,45216,17481,17482,45377,45378,
-17483,45379,45380,45381,17484,45382,45383,45384,45385,45386,45387,45388,17485,
-17486,45389,17487,45390,17488,45391,45392,45393,45394,45395,45396,17489,45397,
-45398,45399,17490,45400,45401,45402,17491,45409,45410,45411,45412,45413,45414,
-45415,17492,17493,45416,17494,17495,17496,45417,45418,45419,45420,45421,45422,
-17497,45423,45424,45425,45426,45427,45428,45429,45430,45431,45432,45433,45434,
-45441,45442,45443,45444,45445,45446,45447,45448,45449,45450,45451,45452,45453,
-45454,45455,17498,17499,45456,45457,17500,45458,45459,45460,17501,45461,45462,
-45463,45464,45465,45466,45467,17502,17503,45468,17504,45469,17505,45470,45471,
-45472,45633,45634,45635,17506,17507,45636,45637,17508,45638,45639,45640,17509,
-45641,45642,45643,45644,45645,45646,45647,17510,45648,45649,45650,45651,17511,
-45652,45653,45654,45655,45656,45657,17512,45658,45665,45666,45667,45668,45669,
-45670,45671,45672,45673,45674,45675,45676,45677,45678,45679,45680,45681,45682,
-45683,17513,45684,45685,45686,45687,45688,45689,17514,45690,45697,45698,45699,
-45700,45701,45702,17515,45703,45704,45705,45706,45707,45708,45709,45710,45711,
-45712,45713,45714,45715,45716,45717,45718,45719,45720,45721,17516,45722,45723,
-45724,45725,45726,45727,45728,45889,45890,45891,45892,45893,45894,45895,45896,
-45897,45898,45899,45900,45901,45902,45903,45904,45905,45906,45907,45908,17517,
-17518,45909,45910,17519,45911,45912,45913,17520,45914,45921,45922,45923,45924,
-45925,45926,17521,17522,45927,17523,45928,17524,45929,45930,45931,45932,45933,
-45934,17525,45935,45936,45937,17526,45938,45939,45940,17527,45941,45942,45943,
-45944,45945,45946,45953,45954,45955,45956,45957,45958,17528,45959,45960,45961,
-45962,45963,45964,17529,45965,45966,45967,45968,45969,45970,45971,45972,45973,
-45974,45975,45976,45977,45978,45979,45980,45981,45982,45983,45984,17530,46145,
-46146,46147,46148,46149,46150,17531,17532,46151,46152,17533,46153,46154,46155,
-17534,46156,46157,46158,46159,46160,46161,46162,17697,17698,46163,17699,46164,
-17700,46165,46166,46167,46168,46169,46170,17701,46177,46178,46179,17702,46180,
-46181,46182,17703,46183,46184,46185,46186,46187,46188,46189,17704,46190,46191,
-46192,46193,46194,46195,46196,46197,46198,46199,46200,17705,17706,46201,46202,
-17707,46209,46210,46211,17708,46212,46213,46214,46215,46216,46217,46218,17709,
-17710,46219,46220,46221,17711,46222,46223,46224,46225,46226,46227,46228,46229,
-46230,46231,46232,46233,46234,46235,46236,46237,46238,46239,46240,46401,46402,
-46403,46404,46405,46406,46407,46408,46409,46410,46411,46412,46413,46414,46415,
-17712,17713,46416,46417,17714,46418,46419,46420,17715,46421,46422,46423,46424,
-46425,46426,46433,17716,17717,46434,17718,46435,17719,46436,46437,46438,46439,
-46440,46441,17720,17721,46442,46443,17722,46444,46445,46446,17723,17724,46447,
-46448,46449,46450,46451,46452,17725,17726,46453,17727,17728,17729,46454,46455,
-46456,46457,46458,46465,17730,17731,46466,46467,17732,46468,46469,46470,17733,
-46471,46472,46473,46474,46475,46476,46477,17734,17735,46478,17736,17737,17738,
-46479,46480,46481,46482,46483,46484,17739,46485,46486,46487,46488,46489,46490,
-46491,46492,46493,46494,46495,46496,46657,46658,46659,46660,46661,46662,46663,
-46664,17740,46665,46666,46667,46668,46669,46670,46671,46672,46673,46674,46675,
-46676,46677,46678,46679,46680,46681,46682,46689,46690,46691,46692,46693,46694,
-46695,46696,46697,46698,46699,46700,46701,46702,46703,46704,17741,17742,46705,
-46706,17743,46707,46708,46709,17744,46710,17745,46711,46712,46713,46714,46721,
-17746,17747,46722,17748,17749,17750,46723,46724,46725,46726,46727,46728,17751,
-17752,46729,46730,17753,46731,46732,46733,17754,46734,46735,46736,46737,46738,
-46739,46740,17755,17756,46741,17757,46742,17758,46743,46744,46745,46746,46747,
-46748,17759,46749,46750,46751,17760,46752,46913,46914,46915,46916,46917,46918,
-46919,46920,46921,46922,46923,46924,46925,46926,17761,46927,46928,46929,46930,
-46931,46932,46933,17762,46934,46935,46936,17763,46937,46938,46945,46946,46947,
-46948,46949,46950,46951,46952,46953,46954,46955,46956,46957,46958,46959,46960,
-46961,46962,46963,46964,46965,17764,17765,46966,46967,17766,46968,46969,46970,
-17767,46977,46978,46979,46980,46981,46982,46983,17768,17769,46984,17770,46985,
-17771,46986,46987,46988,46989,17772,46990,17773,46991,46992,46993,17774,46994,
-46995,46996,46997,46998,46999,47000,47001,47002,47003,47004,47005,47006,47007,
-47008,47169,47170,47171,47172,47173,47174,47175,47176,17775,47177,47178,47179,
-47180,47181,47182,47183,47184,47185,47186,47187,47188,47189,47190,47191,47192,
-47193,47194,47201,47202,47203,47204,47205,47206,47207,47208,47209,17776,47210,
-47211,47212,17777,47213,47214,47215,47216,47217,47218,47219,47220,47221,47222,
-47223,47224,47225,47226,17778,47233,17779,47234,47235,47236,47237,47238,47239,
-17780,47240,47241,47242,47243,47244,47245,47246,47247,47248,47249,47250,47251,
-47252,47253,47254,47255,47256,47257,47258,47259,47260,47261,47262,47263,47264,
-47425,47426,17781,17782,47427,47428,17783,47429,47430,47431,17784,47432,47433,
-47434,47435,47436,47437,47438,17785,17786,47439,17787,47440,17788,47441,47442,
-47443,47444,47445,47446,17789,47447,47448,47449,47450,47457,47458,47459,47460,
-47461,47462,47463,47464,47465,47466,47467,47468,47469,47470,47471,17790,47472,
-47473,47474,47475,47476,47477,47478,17953,47479,47480,47481,47482,47489,47490,
-47491,47492,47493,47494,47495,47496,47497,47498,47499,47500,47501,47502,47503,
-47504,47505,47506,47507,47508,47509,47510,47511,17954,17955,47512,47513,17956,
-47514,47515,47516,17957,47517,47518,47519,47520,47681,47682,47683,17958,17959,
-47684,47685,47686,17960,47687,47688,47689,47690,47691,47692,17961,47693,47694,
-47695,17962,47696,47697,47698,17963,47699,47700,47701,47702,47703,47704,47705,
-17964,47706,47713,47714,47715,17965,47716,47717,47718,47719,47720,47721,17966,
-17967,47722,47723,17968,47724,47725,17969,17970,47726,17971,47727,47728,47729,
-47730,47731,17972,17973,47732,17974,47733,47734,47735,47736,47737,47738,47745,
-47746,17975,47747,47748,47749,17976,47750,47751,47752,17977,47753,47754,47755,
-47756,47757,47758,47759,17978,17979,47760,47761,47762,47763,47764,47765,47766,
-47767,47768,47769,17980,17981,47770,47771,17982,47772,47773,47774,17983,47775,
-47776,47937,47938,47939,47940,47941,17984,17985,47942,17986,47943,17987,47944,
-47945,47946,47947,47948,47949,17988,17989,17990,47950,17991,47951,47952,47953,
-17992,47954,17993,47955,47956,47957,47958,47959,17994,17995,47960,17996,17997,
-17998,47961,47962,47969,17999,47970,47971,18000,18001,47972,47973,18002,47974,
-47975,47976,18003,47977,47978,47979,47980,47981,47982,47983,18004,18005,47984,
-18006,18007,18008,47985,47986,47987,47988,47989,47990,18009,18010,47991,47992,
-47993,47994,48001,48002,48003,48004,48005,48006,48007,48008,48009,48010,48011,
-48012,48013,48014,48015,48016,48017,48018,48019,48020,48021,48022,48023,48024,
-48025,48026,48027,48028,48029,48030,48031,48032,48193,48194,48195,48196,48197,
-48198,48199,48200,48201,48202,48203,48204,48205,48206,48207,48208,48209,48210,
-18011,18012,48211,48212,18013,48213,48214,48215,18014,48216,48217,48218,48225,
-48226,48227,48228,18015,18016,48229,18017,18018,18019,48230,48231,48232,48233,
-48234,48235,18020,18021,48236,48237,18022,48238,48239,48240,18023,48241,48242,
-48243,48244,48245,48246,48247,18024,18025,48248,18026,48249,18027,48250,48257,
-48258,48259,48260,48261,18028,48262,48263,48264,18029,48265,48266,48267,18030,
-48268,48269,48270,48271,48272,48273,48274,18031,18032,48275,48276,18033,18034,
-48277,48278,48279,48280,48281,48282,18035,48283,48284,48285,48286,48287,48288,
-48449,18036,48450,48451,48452,48453,48454,48455,48456,48457,18037,48458,18038,
-48459,48460,48461,48462,48463,48464,48465,48466,18039,18040,48467,48468,18041,
-48469,48470,48471,18042,48472,48473,48474,48481,48482,48483,48484,18043,18044,
-48485,18045,48486,18046,48487,48488,48489,48490,48491,48492,18209,48493,48494,
-48495,48496,48497,48498,48499,48500,48501,48502,48503,48504,48505,48506,48513,
-48514,48515,48516,48517,48518,18210,48519,48520,48521,48522,48523,48524,48525,
-48526,48527,48528,48529,48530,48531,48532,48533,48534,48535,48536,48537,48538,
-48539,48540,48541,48542,48543,48544,48705,48706,48707,48708,48709,48710,48711,
-48712,18211,48713,48714,48715,18212,48716,48717,48718,48719,48720,48721,48722,
-48723,48724,48725,48726,48727,48728,48729,48730,48737,48738,48739,48740,48741,
-48742,48743,48744,18213,48745,48746,48747,18214,48748,48749,48750,18215,48751,
-48752,48753,48754,48755,48756,48757,48758,18216,48759,18217,48760,48761,48762,
-48769,48770,48771,48772,48773,18218,18219,48774,48775,18220,48776,48777,18221,
-18222,48778,18223,48779,48780,48781,48782,48783,18224,18225,48784,18226,48785,
-18227,48786,48787,48788,48789,48790,48791,18228,48792,48793,48794,48795,48796,
-48797,48798,48799,48800,48961,48962,48963,48964,48965,48966,48967,48968,48969,
-48970,48971,18229,48972,48973,48974,48975,48976,48977,48978,48979,48980,48981,
-48982,48983,48984,48985,48986,48993,48994,48995,48996,48997,48998,48999,49000,
-49001,49002,49003,49004,49005,49006,49007,49008,49009,49010,49011,18230,49012,
-49013,49014,18231,49015,49016,49017,18232,49018,49025,49026,49027,49028,49029,
-49030,18233,49031,49032,18234,49033,49034,49035,49036,49037,49038,49039,49040,
-18235,49041,49042,49043,18236,49044,49045,49046,18237,49047,49048,49049,49050,
-49051,49052,49053,18238,49054,49055,18239,49056,18240,49217,49218,49219,49220,
-49221,49222,18241,49223,49224,49225,18242,49226,49227,49228,18243,49229,49230,
-49231,49232,49233,49234,49235,18244,18245,49236,18246,49237,49238,49239,49240,
-49241,49242,49249,49250,49251,49252,49253,49254,49255,49256,49257,49258,49259,
-49260,49261,49262,49263,49264,49265,49266,49267,49268,49269,49270,49271,49272,
-49273,49274,49281,49282,49283,49284,18247,18248,49285,49286,18249,49287,49288,
-49289,18250,49290,49291,49292,49293,49294,49295,49296,18251,18252,49297,18253,
-49298,18254,49299,49300,49301,49302,49303,49304,18255,18256,49305,49306,18257,
-49307,49308,49309,18258,49310,49311,49312,49473,18259,49474,49475,18260,18261,
-49476,18262,49477,18263,49478,49479,49480,49481,49482,49483,18264,18265,49484,
-49485,18266,49486,49487,49488,18267,49489,49490,49491,49492,49493,49494,49495,
-18268,18269,49496,18270,18271,18272,49497,49498,49505,49506,49507,49508,18273,
-49509,49510,49511,49512,49513,49514,49515,49516,49517,49518,49519,49520,49521,
-49522,49523,49524,49525,49526,49527,49528,18274,49529,49530,49537,49538,49539,
-49540,49541,49542,49543,49544,49545,49546,49547,49548,49549,49550,49551,49552,
-49553,49554,49555,49556,49557,49558,49559,49560,49561,49562,49563,49564,49565,
-49566,49567,49568,18275,18276,49729,49730,18277,49731,49732,49733,18278,49734,
-18279,49735,49736,49737,49738,49739,18280,18281,49740,18282,49741,18283,49742,
-49743,49744,49745,49746,49747,18284,18285,49748,49749,18286,49750,49751,49752,
-18287,49753,49754,49761,49762,49763,49764,49765,18288,18289,49766,18290,49767,
-18291,49768,49769,49770,49771,49772,49773,18292,18293,49774,49775,18294,49776,
-49777,49778,18295,49779,49780,49781,49782,49783,49784,49785,18296,18297,49786,
-18298,18299,18300,49793,49794,49795,49796,49797,49798,18301,49799,49800,49801,
-18302,49802,49803,49804,18465,49805,49806,49807,49808,49809,49810,49811,49812,
-18466,49813,49814,49815,49816,49817,49818,49819,49820,49821,49822,18467,18468,
-49823,49824,18469,49985,49986,49987,18470,49988,49989,49990,49991,18471,49992,
-49993,18472,18473,49994,18474,49995,18475,49996,49997,49998,18476,49999,50000,
-18477,18478,50001,50002,18479,50003,50004,50005,18480,50006,50007,50008,50009,
-50010,50017,50018,50019,50020,50021,18481,50022,18482,50023,50024,50025,50026,
-50027,50028,18483,18484,50029,50030,18485,50031,50032,50033,50034,50035,50036,
-50037,50038,50039,50040,50041,50042,50049,50050,18486,50051,18487,50052,50053,
-50054,50055,50056,50057,18488,18489,50058,50059,18490,50060,50061,50062,18491,
-50063,50064,50065,50066,50067,50068,50069,50070,18492,50071,18493,50072,18494,
-50073,50074,50075,50076,50077,50078,18495,50079,50080,50241,18496,50242,50243,
-50244,18497,50245,50246,50247,50248,50249,50250,50251,50252,18498,50253,18499,
-50254,50255,50256,50257,50258,50259,50260,50261,18500,18501,50262,50263,18502,
-50264,50265,50266,18503,50273,50274,50275,50276,18504,50277,50278,18505,50279,
-50280,18506,50281,18507,50282,50283,50284,50285,50286,50287,18508,50288,50289,
-50290,18509,50291,50292,50293,18510,50294,50295,50296,50297,50298,50305,50306,
-18511,50307,50308,50309,50310,18512,50311,50312,50313,50314,50315,50316,18513,
-18514,50317,50318,18515,50319,50320,50321,18516,50322,50323,50324,50325,50326,
-50327,50328,50329,50330,50331,50332,50333,18517,50334,50335,50336,50497,50498,
-50499,18518,18519,50500,50501,18520,50502,50503,50504,18521,50505,50506,50507,
-50508,50509,50510,50511,18522,18523,50512,18524,50513,18525,50514,50515,50516,
-50517,50518,50519,18526,18527,50520,50521,18528,50522,50529,50530,18529,50531,
-50532,50533,50534,50535,50536,50537,18530,50538,50539,18531,50540,18532,50541,
-50542,50543,50544,50545,50546,18533,18534,50547,50548,18535,50549,18536,18537,
-18538,18539,50550,50551,50552,50553,50554,50561,18540,18541,50562,18542,50563,
-18543,50564,50565,50566,18544,50567,50568,18545,50569,50570,50571,18546,50572,
-50573,50574,18547,50575,50576,50577,50578,50579,50580,50581,18548,18549,50582,
-50583,50584,18550,50585,50586,50587,50588,50589,50590,18551,18552,50591,50592,
-18553,50753,50754,50755,18554,50756,50757,50758,50759,50760,50761,50762,18555,
-18556,50763,18557,50764,18558,50765,50766,50767,50768,50769,50770,19280,19286,
-19303,19791,19816,20013,20347,20514,20536,20560,20573,20820,20821,20824,20827,
-20828,20829,20830,20831,20832,20834,20835,20836,20837,20838,20840,20841,20842,
-20843,20845,20847,20848,20850,20854,20858,20860,20861,20862,21026,21027,21031,
-21032,21033,21034,21035,21037,21042,21054,21058,21059,21060,21062,21063,21064,
-21065,21066,21067,21069,21070,21071,21072,21073,21074,21075,21076,21077,21078,
-21079,21081,21082,21086,21087,21089,21090,21092,21093,21094,21095,21096,21097,
-21098,21099,21104,21105,21106,21107,21108,21109,21111,21112,21606,21628,21797,
-21803,21806,22072,22093,22347,22372,23365,23396,23589,23845,23893,23924,24188,
-24190,24371,24417,24424,24689,24877,24941,25461,25633,25641,25902,25905,25906,
-25913,25915,25916,25924,25934,25936,25938,25942,25978,25979,25980,25982,26145,
-26148,26151,26157,26159,26160,26161,26163,26167,26168,26172,26180,26182,26183,
-26186,26194,26198,26201,26204,26207,26209,26212,26213,26214,26216,26218,26219,
-26220,26223,26225,26226,26229,26230,26231,26233,26401,26406,26409,26410,26412,
-26413,26416,26431,26433,26438,26439,26443,26445,26447,26448,26451,26463,26468,
-26470,26487,26727,26728,26736,26737,26743,26745,26747,26750,26919,26924,26956,
-26999,27201,27237,27252,27255,27260,27262,27428,27431,27433,27434,27450,27451,
-27453,27457,27458,27462,27463,27468,27471,27472,27473,27474,27480,27686,27687,
-27690,27695,27696,27697,27698,27701,27704,27706,27712,27713,27717,27718,27721,
-27722,27733,27741,27742,27745,27748,27751,27752,27767,27768,27770,27937,27938,
-27939,28014,28251,29245,29306,29489,29735,29806,30324,30326,30520,30536,30547,
-30811,30832,31265,31266,31334,31785,8993,8994,8995,8996,8997,8998,8999,9000,
-9001,9002,9003,9004,9005,9006,9007,9008,9009,9010,9011,9012,9013,9014,9015,
-9016,9017,9018,9019,9020,9021,9022,9023,9024,9025,9026,9027,9028,9029,9030,
-9031,9032,9033,9034,9035,9036,9037,9038,9039,9040,9041,9042,9043,9044,9045,
-9046,9047,9048,9049,9050,9051,8492,9053,9054,9055,9056,9057,9058,9059,9060,
-9061,9062,9063,9064,9065,9066,9067,9068,9069,9070,9071,9072,9073,9074,9075,
-9076,9077,9078,9079,9080,9081,9082,9083,9084,9085,8742,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,8523,8524,8574,9086,N,8525,9052,
-};
-
-static const struct unim_index cp949_encmap[256] = {
-{__cp949_encmap+0,161,254},{__cp949_encmap+94,17,103},{__cp949_encmap+181,199,
-221},{__cp949_encmap+204,145,201},{__cp949_encmap+261,1,81},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__cp949_encmap+342,21,172},{
-__cp949_encmap+494,3,212},{__cp949_encmap+704,0,165},{__cp949_encmap+870,18,18
-},{__cp949_encmap+871,96,233},{__cp949_encmap+1009,0,209},{__cp949_encmap+1219
-,5,109},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{__cp949_encmap+1324,0,246},{__cp949_encmap+1571,49,142},{__cp949_encmap+
-1665,0,127},{__cp949_encmap+1793,128,221},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{__cp949_encmap+1887,0,251},{__cp949_encmap+2139,1,250},{
-__cp949_encmap+2389,2,255},{__cp949_encmap+2643,0,253},{__cp949_encmap+2897,0,
-255},{__cp949_encmap+3153,5,248},{__cp949_encmap+3397,3,250},{__cp949_encmap+
-3645,4,254},{__cp949_encmap+3896,6,250},{__cp949_encmap+4141,3,252},{
-__cp949_encmap+4391,0,253},{__cp949_encmap+4645,15,255},{__cp949_encmap+4886,
-1,233},{__cp949_encmap+5119,5,250},{__cp949_encmap+5365,1,253},{__cp949_encmap
-+5618,7,254},{__cp949_encmap+5866,2,251},{__cp949_encmap+6116,1,255},{
-__cp949_encmap+6371,15,251},{__cp949_encmap+6608,1,255},{__cp949_encmap+6863,
-0,255},{__cp949_encmap+7119,1,247},{__cp949_encmap+7366,13,254},{
-__cp949_encmap+7608,0,255},{__cp949_encmap+7864,6,255},{__cp949_encmap+8114,0,
-254},{__cp949_encmap+8369,18,250},{__cp949_encmap+8602,0,255},{__cp949_encmap+
-8858,2,251},{__cp949_encmap+9108,4,236},{__cp949_encmap+9341,8,243},{
-__cp949_encmap+9577,11,251},{__cp949_encmap+9818,23,255},{__cp949_encmap+10051
-,1,254},{__cp949_encmap+10305,1,253},{__cp949_encmap+10558,4,255},{
-__cp949_encmap+10810,0,253},{__cp949_encmap+11064,10,254},{__cp949_encmap+
-11309,1,247},{__cp949_encmap+11556,1,252},{__cp949_encmap+11808,0,254},{
-__cp949_encmap+12063,1,243},{__cp949_encmap+12306,2,251},{__cp949_encmap+12556
-,1,251},{__cp949_encmap+12807,0,255},{__cp949_encmap+13063,15,233},{
-__cp949_encmap+13282,7,254},{__cp949_encmap+13530,0,251},{__cp949_encmap+13782
-,9,156},{__cp949_encmap+13930,54,252},{__cp949_encmap+14129,0,253},{
-__cp949_encmap+14383,2,254},{__cp949_encmap+14636,5,254},{__cp949_encmap+14886
-,1,253},{__cp949_encmap+15139,3,252},{__cp949_encmap+15389,17,255},{
-__cp949_encmap+15628,2,254},{__cp949_encmap+15881,0,254},{__cp949_encmap+16136
-,5,253},{__cp949_encmap+16385,7,248},{__cp949_encmap+16627,0,254},{
-__cp949_encmap+16882,0,154},{__cp949_encmap+17037,55,253},{__cp949_encmap+
-17236,4,243},{__cp949_encmap+17476,10,254},{__cp949_encmap+17721,3,253},{
-__cp949_encmap+17972,0,253},{__cp949_encmap+18226,2,245},{__cp949_encmap+18470
-,13,252},{__cp949_encmap+18710,4,246},{__cp949_encmap+18953,4,127},{
-__cp949_encmap+19077,119,226},{__cp949_encmap+19185,28,251},{__cp949_encmap+
-19409,0,255},{__cp949_encmap+19665,0,254},{__cp949_encmap+19920,3,255},{
-__cp949_encmap+20173,1,238},{__cp949_encmap+20411,26,232},{__cp949_encmap+
-20618,13,246},{__cp949_encmap+20852,9,250},{__cp949_encmap+21094,26,244},{
-__cp949_encmap+21313,7,156},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__cp949_encmap+21463,0,255},{
-__cp949_encmap+21719,0,255},{__cp949_encmap+21975,0,255},{__cp949_encmap+22231
-,0,255},{__cp949_encmap+22487,0,255},{__cp949_encmap+22743,0,255},{
-__cp949_encmap+22999,0,255},{__cp949_encmap+23255,0,255},{__cp949_encmap+23511
-,0,255},{__cp949_encmap+23767,0,255},{__cp949_encmap+24023,0,255},{
-__cp949_encmap+24279,0,255},{__cp949_encmap+24535,0,255},{__cp949_encmap+24791
-,0,255},{__cp949_encmap+25047,0,255},{__cp949_encmap+25303,0,255},{
-__cp949_encmap+25559,0,255},{__cp949_encmap+25815,0,255},{__cp949_encmap+26071
-,0,255},{__cp949_encmap+26327,0,255},{__cp949_encmap+26583,0,255},{
-__cp949_encmap+26839,0,255},{__cp949_encmap+27095,0,255},{__cp949_encmap+27351
-,0,255},{__cp949_encmap+27607,0,255},{__cp949_encmap+27863,0,255},{
-__cp949_encmap+28119,0,255},{__cp949_encmap+28375,0,255},{__cp949_encmap+28631
-,0,255},{__cp949_encmap+28887,0,255},{__cp949_encmap+29143,0,255},{
-__cp949_encmap+29399,0,255},{__cp949_encmap+29655,0,255},{__cp949_encmap+29911
-,0,255},{__cp949_encmap+30167,0,255},{__cp949_encmap+30423,0,255},{
-__cp949_encmap+30679,0,255},{__cp949_encmap+30935,0,255},{__cp949_encmap+31191
-,0,255},{__cp949_encmap+31447,0,255},{__cp949_encmap+31703,0,255},{
-__cp949_encmap+31959,0,255},{__cp949_encmap+32215,0,255},{__cp949_encmap+32471
-,0,163},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__cp949_encmap+32635,0,255},{
-__cp949_encmap+32891,0,11},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__cp949_encmap+
-32903,1,230},
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_tw.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_tw.h
deleted file mode 100644
index fa2fb81..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/mappings_tw.h
+++ /dev/null
@@ -1,2633 +0,0 @@
-static const ucs2_t __big5_decmap[16702] = {
-12288,65292,12289,12290,65294,8226,65307,65306,65311,65281,65072,8230,8229,
-65104,65380,65106,183,65108,65109,65110,65111,65372,8211,65073,8212,65075,
-9588,65076,65103,65288,65289,65077,65078,65371,65373,65079,65080,12308,12309,
-65081,65082,12304,12305,65083,65084,12298,12299,65085,65086,12296,12297,65087,
-65088,12300,12301,65089,65090,12302,12303,65091,65092,65113,65114,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,65115,65116,65117,
-65118,8216,8217,8220,8221,12317,12318,8245,8242,65283,65286,65290,8251,167,
-12291,9675,9679,9651,9650,9678,9734,9733,9671,9670,9633,9632,9661,9660,12963,
-8453,8254,65507,65343,717,65097,65098,65101,65102,65099,65100,65119,65120,
-65121,65291,65293,215,247,177,8730,65308,65310,65309,8806,8807,8800,8734,8786,
-8801,65122,65123,65124,65125,65126,8764,8745,8746,8869,8736,8735,8895,13266,
-13265,8747,8750,8757,8756,9792,9794,9793,9737,8593,8595,8592,8594,8598,8599,
-8601,8600,8741,8739,65295,65340,65295,65340,65284,165,12306,162,163,65285,
-65312,8451,8457,65129,65130,65131,13269,13212,13213,13214,13262,13217,13198,
-13199,13252,176,20825,20827,20830,20829,20833,20835,21991,29929,31950,9601,
-9602,9603,9604,9605,9606,9607,9608,9615,9614,9613,9612,9611,9610,9609,9532,
-9524,9516,9508,9500,9620,9472,9474,9621,9484,9488,9492,9496,9581,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,9582,9584,9583,9552,
-9566,9578,9569,9698,9699,9701,9700,9585,9586,9587,65296,65297,65298,65299,
-65300,65301,65302,65303,65304,65305,8544,8545,8546,8547,8548,8549,8550,8551,
-8552,8553,12321,12322,12323,12324,12325,12326,12327,12328,12329,21313,21316,
-21317,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,
-65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,
-65338,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,
-65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,
-65370,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,
-932,933,934,935,936,937,945,946,947,948,949,950,951,952,953,954,955,956,957,
-958,959,960,961,963,964,965,966,967,968,969,12549,12550,12551,12552,12553,
-12554,12555,12556,12557,12558,12559,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,12560,12561,12562,12563,12564,12565,12566,12567,
-12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,
-12581,12582,12583,12584,12585,729,713,714,711,715,19968,20057,19969,19971,
-20035,20061,20102,20108,20154,20799,20837,20843,20960,20992,20993,21147,21269,
-21313,21340,21448,19977,19979,19976,19978,20011,20024,20961,20037,20040,20063,
-20062,20110,20129,20800,20995,21242,21315,21449,21475,22303,22763,22805,22823,
-22899,23376,23377,23379,23544,23567,23586,23608,23665,24029,24037,24049,24050,
-24051,24062,24178,24318,24331,24339,25165,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,19985,19984,19981,20013,20016,20025,20043,
-23609,20104,20113,20117,20114,20116,20130,20161,20160,20163,20166,20167,20173,
-20170,20171,20164,20803,20801,20839,20845,20846,20844,20887,20982,20998,20999,
-21000,21243,21246,21247,21270,21305,21320,21319,21317,21342,21380,21451,21450,
-21453,22764,22825,22827,22826,22829,23380,23569,23588,23610,23663,24052,24187,
-24319,24340,24341,24515,25096,25142,25163,25166,25903,25991,26007,26020,26041,
-26085,26352,26376,26408,27424,27490,27513,27595,27604,27611,27663,27700,28779,
-29226,29238,29243,29255,29273,29275,29356,29579,19993,19990,19989,19988,19992,
-20027,20045,20047,20046,20197,20184,20180,20181,20182,20183,20195,20196,20185,
-20190,20805,20804,20873,20874,20908,20985,20986,20984,21002,21152,21151,21253,
-21254,21271,21277,20191,21322,21321,21345,21344,21359,21358,21435,21487,21476,
-21491,21484,21486,21481,21480,21500,21496,21493,21483,21478,21482,21490,21489,
-21488,21477,21485,21499,22235,22234,22806,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,22830,22833,22900,22902,23381,23427,23612,
-24040,24039,24038,24066,24067,24179,24188,24321,24344,24343,24517,25098,25171,
-25172,25170,25169,26021,26086,26414,26412,26410,26411,26413,27491,27597,27665,
-27664,27704,27713,27712,27710,29359,29572,29577,29916,29926,29976,29983,29992,
-29993,30000,30001,30002,30003,30091,30333,30382,30399,30446,30683,30690,30707,
-31034,31166,31348,31435,19998,19999,20050,20051,20073,20121,20132,20134,20133,
-20223,20233,20249,20234,20245,20237,20240,20241,20239,20210,20214,20219,20208,
-20211,20221,20225,20235,20809,20807,20806,20808,20840,20849,20877,20912,21015,
-21009,21010,21006,21014,21155,21256,21281,21280,21360,21361,21513,21519,21516,
-21514,21520,21505,21515,21508,21521,21517,21512,21507,21518,21510,21522,22240,
-22238,22237,22323,22320,22312,22317,22316,22319,22313,22809,22810,22839,22840,
-22916,22904,22915,22909,22905,22914,22913,23383,23384,23431,23432,23429,23433,
-23546,23574,23673,24030,24070,24182,24180,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,24335,24347,24537,24534,25102,25100,25101,
-25104,25187,25179,25176,25910,26089,26088,26092,26093,26354,26355,26377,26429,
-26420,26417,26421,27425,27492,27515,27670,27741,27735,27737,27743,27744,27728,
-27733,27745,27739,27725,27726,28784,29279,29277,30334,31481,31859,31992,32566,
-32650,32701,32769,32771,32780,32786,32819,32895,32905,32907,32908,33251,33258,
-33267,33276,33292,33307,33311,33390,33394,33406,34411,34880,34892,34915,35199,
-38433,20018,20136,20301,20303,20295,20311,20318,20276,20315,20309,20272,20304,
-20305,20285,20282,20280,20291,20308,20284,20294,20323,20316,20320,20271,20302,
-20278,20313,20317,20296,20314,20812,20811,20813,20853,20918,20919,21029,21028,
-21033,21034,21032,21163,21161,21162,21164,21283,21363,21365,21533,21549,21534,
-21566,21542,21582,21543,21574,21571,21555,21576,21570,21531,21545,21578,21561,
-21563,21560,21550,21557,21558,21536,21564,21568,21553,21547,21535,21548,22250,
-22256,22244,22251,22346,22353,22336,22349,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,22343,22350,22334,22352,22351,22331,22767,
-22846,22941,22930,22952,22942,22947,22937,22934,22925,22948,22931,22922,22949,
-23389,23388,23386,23387,23436,23435,23439,23596,23616,23617,23615,23614,23696,
-23697,23700,23692,24043,24076,24207,24199,24202,24311,24324,24351,24420,24418,
-24439,24441,24536,24524,24535,24525,24561,24555,24568,24554,25106,25105,25220,
-25239,25238,25216,25206,25225,25197,25226,25212,25214,25209,25203,25234,25199,
-25240,25198,25237,25235,25233,25222,25913,25915,25912,26097,26356,26463,26446,
-26447,26448,26449,26460,26454,26462,26441,26438,26464,26451,26455,27493,27599,
-27714,27742,27801,27777,27784,27785,27781,27803,27754,27770,27792,27760,27788,
-27752,27798,27794,27773,27779,27762,27774,27764,27782,27766,27789,27796,27800,
-27778,28790,28796,28797,28792,29282,29281,29280,29380,29378,29590,29996,29995,
-30007,30008,30338,30447,30691,31169,31168,31167,31350,31995,32597,32918,32915,
-32925,32920,32923,32922,32946,33391,33426,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,33419,33421,35211,35282,35328,35895,35910,
-35925,35997,36196,36208,36275,36523,36554,36763,36784,36802,36806,36805,36804,
-24033,37009,37026,37034,37030,37027,37193,37318,37324,38450,38446,38449,38442,
-38444,20006,20054,20083,20107,20123,20126,20139,20140,20335,20381,20365,20339,
-20351,20332,20379,20363,20358,20355,20336,20341,20360,20329,20347,20374,20350,
-20367,20369,20346,20820,20818,20821,20841,20855,20854,20856,20925,20989,21051,
-21048,21047,21050,21040,21038,21046,21057,21182,21179,21330,21332,21331,21329,
-21350,21367,21368,21369,21462,21460,21463,21619,21621,21654,21624,21653,21632,
-21627,21623,21636,21650,21638,21628,21648,21617,21622,21644,21658,21602,21608,
-21643,21629,21646,22266,22403,22391,22378,22377,22369,22374,22372,22396,22812,
-22857,22855,22856,22852,22868,22974,22971,22996,22969,22958,22993,22982,22992,
-22989,22987,22995,22986,22959,22963,22994,22981,23391,23396,23395,23447,23450,
-23448,23452,23449,23451,23578,23624,23621,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,23622,23735,23713,23736,23721,23723,23729,
-23731,24088,24090,24086,24085,24091,24081,24184,24218,24215,24220,24213,24214,
-24310,24358,24359,24361,24448,24449,24447,24444,24541,24544,24573,24565,24575,
-24591,24596,24623,24629,24598,24618,24597,24609,24615,24617,24619,24603,25110,
-25109,25151,25150,25152,25215,25289,25292,25284,25279,25282,25273,25298,25307,
-25259,25299,25300,25291,25288,25256,25277,25276,25296,25305,25287,25293,25269,
-25306,25265,25304,25302,25303,25286,25260,25294,25918,26023,26044,26106,26132,
-26131,26124,26118,26114,26126,26112,26127,26133,26122,26119,26381,26379,26477,
-26507,26517,26481,26524,26483,26487,26503,26525,26519,26479,26480,26495,26505,
-26494,26512,26485,26522,26515,26492,26474,26482,27427,27494,27495,27519,27667,
-27675,27875,27880,27891,27825,27852,27877,27827,27837,27838,27836,27874,27819,
-27861,27859,27832,27844,27833,27841,27822,27863,27845,27889,27839,27835,27873,
-27867,27850,27820,27887,27868,27862,27872,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,28821,28814,28818,28810,28825,29228,29229,
-29240,29256,29287,29289,29376,29390,29401,29399,29392,29609,29608,29599,29611,
-29605,30013,30109,30105,30106,30340,30402,30450,30452,30693,30717,31038,31040,
-31041,31177,31176,31354,31353,31482,31998,32596,32652,32651,32773,32954,32933,
-32930,32945,32929,32939,32937,32948,32938,32943,33253,33278,33293,33459,33437,
-33433,33453,33469,33439,33465,33457,33452,33445,33455,33464,33443,33456,33470,
-33463,34382,34417,21021,34920,36555,36814,36820,36817,37045,37048,37041,37046,
-37319,37329,38263,38272,38428,38464,38463,38459,38468,38466,38585,38632,38738,
-38750,20127,20141,20142,20449,20405,20399,20415,20448,20433,20431,20445,20419,
-20406,20440,20447,20426,20439,20398,20432,20420,20418,20442,20430,20446,20407,
-20823,20882,20881,20896,21070,21059,21066,21069,21068,21067,21063,21191,21193,
-21187,21185,21261,21335,21371,21402,21467,21676,21696,21672,21710,21705,21688,
-21670,21683,21703,21698,21693,21674,21697,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,21700,21704,21679,21675,21681,21691,21673,
-21671,21695,22271,22402,22411,22432,22435,22434,22478,22446,22419,22869,22865,
-22863,22862,22864,23004,23000,23039,23011,23016,23043,23013,23018,23002,23014,
-23041,23035,23401,23459,23462,23460,23458,23461,23553,23630,23631,23629,23627,
-23769,23762,24055,24093,24101,24095,24189,24224,24230,24314,24328,24365,24421,
-24456,24453,24458,24459,24455,24460,24457,24594,24605,24608,24613,24590,24616,
-24653,24688,24680,24674,24646,24643,24684,24683,24682,24676,25153,25308,25366,
-25353,25340,25325,25345,25326,25341,25351,25329,25335,25327,25324,25342,25332,
-25361,25346,25919,25925,26027,26045,26082,26149,26157,26144,26151,26159,26143,
-26152,26161,26148,26359,26623,26579,26609,26580,26576,26604,26550,26543,26613,
-26601,26607,26564,26577,26548,26586,26597,26552,26575,26590,26611,26544,26585,
-26594,26589,26578,27498,27523,27526,27573,27602,27607,27679,27849,27915,27954,
-27946,27969,27941,27916,27953,27934,27927,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,27963,27965,27966,27958,27931,27893,27961,
-27943,27960,27945,27950,27957,27918,27947,28843,28858,28851,28844,28847,28845,
-28856,28846,28836,29232,29298,29295,29300,29417,29408,29409,29623,29642,29627,
-29618,29645,29632,29619,29978,29997,30031,30028,30030,30027,30123,30116,30117,
-30114,30115,30328,30342,30343,30344,30408,30406,30403,30405,30465,30457,30456,
-30473,30475,30462,30460,30471,30684,30722,30740,30732,30733,31046,31049,31048,
-31047,31161,31162,31185,31186,31179,31359,31361,31487,31485,31869,32002,32005,
-32000,32009,32007,32004,32006,32568,32654,32703,32772,32784,32781,32785,32822,
-32982,32997,32986,32963,32964,32972,32993,32987,32974,32990,32996,32989,33268,
-33314,33511,33539,33541,33507,33499,33510,33540,33509,33538,33545,33490,33495,
-33521,33537,33500,33492,33489,33502,33491,33503,33519,33542,34384,34425,34427,
-34426,34893,34923,35201,35284,35336,35330,35331,35998,36000,36212,36211,36276,
-36557,36556,36848,36838,36834,36842,36837,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,36845,36843,36836,36840,37066,37070,37057,
-37059,37195,37194,37325,38274,38480,38475,38476,38477,38754,38761,38859,38893,
-38899,38913,39080,39131,39135,39318,39321,20056,20147,20492,20493,20515,20463,
-20518,20517,20472,20521,20502,20486,20540,20511,20506,20498,20497,20474,20480,
-20500,20520,20465,20513,20491,20505,20504,20467,20462,20525,20522,20478,20523,
-20489,20860,20900,20901,20898,20941,20940,20934,20939,21078,21084,21076,21083,
-21085,21290,21375,21407,21405,21471,21736,21776,21761,21815,21756,21733,21746,
-21766,21754,21780,21737,21741,21729,21769,21742,21738,21734,21799,21767,21757,
-21775,22275,22276,22466,22484,22475,22467,22537,22799,22871,22872,22874,23057,
-23064,23068,23071,23067,23059,23020,23072,23075,23081,23077,23052,23049,23403,
-23640,23472,23475,23478,23476,23470,23477,23481,23480,23556,23633,23637,23632,
-23789,23805,23803,23786,23784,23792,23798,23809,23796,24046,24109,24107,24235,
-24237,24231,24369,24466,24465,24464,24665,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,24675,24677,24656,24661,24685,24681,24687,
-24708,24735,24730,24717,24724,24716,24709,24726,25159,25331,25352,25343,25422,
-25406,25391,25429,25410,25414,25423,25417,25402,25424,25405,25386,25387,25384,
-25421,25420,25928,25929,26009,26049,26053,26178,26185,26191,26179,26194,26188,
-26181,26177,26360,26388,26389,26391,26657,26680,26696,26694,26707,26681,26690,
-26708,26665,26803,26647,26700,26705,26685,26612,26704,26688,26684,26691,26666,
-26693,26643,26648,26689,27530,27529,27575,27683,27687,27688,27686,27684,27888,
-28010,28053,28040,28039,28006,28024,28023,27993,28051,28012,28041,28014,27994,
-28020,28009,28044,28042,28025,28037,28005,28052,28874,28888,28900,28889,28872,
-28879,29241,29305,29436,29433,29437,29432,29431,29574,29677,29705,29678,29664,
-29674,29662,30036,30045,30044,30042,30041,30142,30149,30151,30130,30131,30141,
-30140,30137,30146,30136,30347,30384,30410,30413,30414,30505,30495,30496,30504,
-30697,30768,30759,30776,30749,30772,30775,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,30757,30765,30752,30751,30770,31061,31056,
-31072,31071,31062,31070,31069,31063,31066,31204,31203,31207,31199,31206,31209,
-31192,31364,31368,31449,31494,31505,31881,32033,32023,32011,32010,32032,32034,
-32020,32016,32021,32026,32028,32013,32025,32027,32570,32607,32660,32709,32705,
-32774,32792,32789,32793,32791,32829,32831,33009,33026,33008,33029,33005,33012,
-33030,33016,33011,33032,33021,33034,33020,33007,33261,33260,33280,33296,33322,
-33323,33320,33324,33467,33579,33618,33620,33610,33592,33616,33609,33589,33588,
-33615,33586,33593,33590,33559,33600,33585,33576,33603,34388,34442,34474,34451,
-34468,34473,34444,34467,34460,34928,34935,34945,34946,34941,34937,35352,35344,
-35342,35340,35349,35338,35351,35347,35350,35343,35345,35912,35962,35961,36001,
-36002,36215,36524,36562,36564,36559,36785,36865,36870,36855,36864,36858,36852,
-36867,36861,36869,36856,37013,37089,37085,37090,37202,37197,37196,37336,37341,
-37335,37340,37337,38275,38498,38499,38497,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,38491,38493,38500,38488,38494,38587,39138,
-39340,39592,39640,39717,39730,39740,20094,20602,20605,20572,20551,20547,20556,
-20570,20553,20581,20598,20558,20565,20597,20596,20599,20559,20495,20591,20589,
-20828,20885,20976,21098,21103,21202,21209,21208,21205,21264,21263,21273,21311,
-21312,21310,21443,26364,21830,21866,21862,21828,21854,21857,21827,21834,21809,
-21846,21839,21845,21807,21860,21816,21806,21852,21804,21859,21811,21825,21847,
-22280,22283,22281,22495,22533,22538,22534,22496,22500,22522,22530,22581,22519,
-22521,22816,22882,23094,23105,23113,23142,23146,23104,23100,23138,23130,23110,
-23114,23408,23495,23493,23492,23490,23487,23494,23561,23560,23559,23648,23644,
-23645,23815,23814,23822,23835,23830,23842,23825,23849,23828,23833,23844,23847,
-23831,24034,24120,24118,24115,24119,24247,24248,24246,24245,24254,24373,24375,
-24407,24428,24425,24427,24471,24473,24478,24472,24481,24480,24476,24703,24739,
-24713,24736,24744,24779,24756,24806,24765,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,24773,24763,24757,24796,24764,24792,24789,
-24774,24799,24760,24794,24775,25114,25115,25160,25504,25511,25458,25494,25506,
-25509,25463,25447,25496,25514,25457,25513,25481,25475,25499,25451,25512,25476,
-25480,25497,25505,25516,25490,25487,25472,25467,25449,25448,25466,25949,25942,
-25937,25945,25943,21855,25935,25944,25941,25940,26012,26011,26028,26063,26059,
-26060,26062,26205,26202,26212,26216,26214,26206,26361,21207,26395,26753,26799,
-26786,26771,26805,26751,26742,26801,26791,26775,26800,26755,26820,26797,26758,
-26757,26772,26781,26792,26783,26785,26754,27442,27578,27627,27628,27691,28046,
-28092,28147,28121,28082,28129,28108,28132,28155,28154,28165,28103,28107,28079,
-28113,28078,28126,28153,28088,28151,28149,28101,28114,28186,28085,28122,28139,
-28120,28138,28145,28142,28136,28102,28100,28074,28140,28095,28134,28921,28937,
-28938,28925,28911,29245,29309,29313,29468,29467,29462,29459,29465,29575,29701,
-29706,29699,29702,29694,29709,29920,29942,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,29943,29980,29986,30053,30054,30050,30064,
-30095,30164,30165,30133,30154,30157,30350,30420,30418,30427,30519,30526,30524,
-30518,30520,30522,30827,30787,30798,31077,31080,31085,31227,31378,31381,31520,
-31528,31515,31532,31526,31513,31518,31534,31890,31895,31893,32070,32067,32113,
-32046,32057,32060,32064,32048,32051,32068,32047,32066,32050,32049,32573,32670,
-32666,32716,32718,32722,32796,32842,32838,33071,33046,33059,33067,33065,33072,
-33060,33282,33333,33335,33334,33337,33678,33694,33688,33656,33698,33686,33725,
-33707,33682,33674,33683,33673,33696,33655,33659,33660,33670,33703,34389,24426,
-34503,34496,34486,34500,34485,34502,34507,34481,34479,34505,34899,34974,34952,
-34987,34962,34966,34957,34955,35219,35215,35370,35357,35363,35365,35377,35373,
-35359,35355,35362,35913,35930,36009,36012,36011,36008,36010,36007,36199,36198,
-36286,36282,36571,36575,36889,36877,36890,36887,36899,36895,36893,36880,36885,
-36894,36896,36879,36898,36886,36891,36884,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,37096,37101,37117,37207,37326,37365,37350,
-37347,37351,37357,37353,38281,38506,38517,38515,38520,38512,38516,38518,38519,
-38508,38592,38634,38633,31456,31455,38914,38915,39770,40165,40565,40575,40613,
-40635,20642,20621,20613,20633,20625,20608,20630,20632,20634,26368,20977,21106,
-21108,21109,21097,21214,21213,21211,21338,21413,21883,21888,21927,21884,21898,
-21917,21912,21890,21916,21930,21908,21895,21899,21891,21939,21934,21919,21822,
-21938,21914,21947,21932,21937,21886,21897,21931,21913,22285,22575,22570,22580,
-22564,22576,22577,22561,22557,22560,22777,22778,22880,23159,23194,23167,23186,
-23195,23207,23411,23409,23506,23500,23507,23504,23562,23563,23601,23884,23888,
-23860,23879,24061,24133,24125,24128,24131,24190,24266,24257,24258,24260,24380,
-24429,24489,24490,24488,24785,24801,24754,24758,24800,24860,24867,24826,24853,
-24816,24827,24820,24936,24817,24846,24822,24841,24832,24850,25119,25161,25507,
-25484,25551,25536,25577,25545,25542,25549,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,25554,25571,25552,25569,25558,25581,25582,
-25462,25588,25578,25563,25682,25562,25593,25950,25958,25954,25955,26001,26000,
-26031,26222,26224,26228,26230,26223,26257,26234,26238,26231,26366,26367,26399,
-26397,26874,26837,26848,26840,26839,26885,26847,26869,26862,26855,26873,26834,
-26866,26851,26827,26829,26893,26898,26894,26825,26842,26990,26875,27454,27450,
-27453,27544,27542,27580,27631,27694,27695,27692,28207,28216,28244,28193,28210,
-28263,28234,28192,28197,28195,28187,28251,28248,28196,28246,28270,28205,28198,
-28271,28212,28237,28218,28204,28227,28189,28222,28363,28297,28185,28238,28259,
-28228,28274,28265,28255,28953,28954,28966,28976,28961,28982,29038,28956,29260,
-29316,29312,29494,29477,29492,29481,29754,29738,29747,29730,29733,29749,29750,
-29748,29743,29723,29734,29736,29989,29990,30059,30058,30178,30171,30179,30169,
-30168,30174,30176,30331,30332,30358,30355,30388,30428,30543,30701,30813,30828,
-30831,31245,31240,31243,31237,31232,31384,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,31383,31382,31461,31459,31561,31574,31558,
-31568,31570,31572,31565,31563,31567,31569,31903,31909,32094,32080,32104,32085,
-32043,32110,32114,32097,32102,32098,32112,32115,21892,32724,32725,32779,32850,
-32901,33109,33108,33099,33105,33102,33081,33094,33086,33100,33107,33140,33298,
-33308,33769,33795,33784,33805,33760,33733,33803,33729,33775,33777,33780,33879,
-33802,33776,33804,33740,33789,33778,33738,33848,33806,33796,33756,33799,33748,
-33759,34395,34527,34521,34541,34516,34523,34532,34512,34526,34903,35009,35010,
-34993,35203,35222,35387,35424,35413,35422,35388,35393,35412,35419,35408,35398,
-35380,35386,35382,35414,35937,35970,36015,36028,36019,36029,36033,36027,36032,
-36020,36023,36022,36031,36024,36234,36229,36225,36302,36317,36299,36314,36305,
-36300,36315,36294,36603,36600,36604,36764,36910,36917,36913,36920,36914,36918,
-37122,37109,37129,37118,37219,37221,37327,37396,37397,37411,37385,37406,37389,
-37392,37383,37393,38292,38287,38283,38289,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,38291,38290,38286,38538,38542,38539,38525,
-38533,38534,38541,38514,38532,38593,38597,38596,38598,38599,38639,38642,38860,
-38917,38918,38920,39143,39146,39151,39145,39154,39149,39342,39341,40643,40653,
-40657,20098,20653,20661,20658,20659,20677,20670,20652,20663,20667,20655,20679,
-21119,21111,21117,21215,21222,21220,21218,21219,21295,21983,21992,21971,21990,
-21966,21980,21959,21969,21987,21988,21999,21978,21985,21957,21958,21989,21961,
-22290,22291,22622,22609,22616,22615,22618,22612,22635,22604,22637,22602,22626,
-22610,22603,22887,23233,23241,23244,23230,23229,23228,23219,23234,23218,23913,
-23919,24140,24185,24265,24264,24338,24409,24492,24494,24858,24847,24904,24863,
-24819,24859,24825,24833,24840,24910,24908,24900,24909,24894,24884,24871,24845,
-24838,24887,25121,25122,25619,25662,25630,25642,25645,25661,25644,25615,25628,
-25620,25613,25654,25622,25623,25606,25964,26015,26032,26263,26249,26247,26248,
-26262,26244,26264,26253,26371,27028,26989,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,26970,26999,26976,26964,26997,26928,27010,
-26954,26984,26987,26974,26963,27001,27014,26973,26979,26971,27463,27506,27584,
-27583,27603,27645,28322,28335,28371,28342,28354,28304,28317,28359,28357,28325,
-28312,28348,28346,28331,28369,28310,28316,28356,28372,28330,28327,28340,29006,
-29017,29033,29028,29001,29031,29020,29036,29030,29004,29029,29022,28998,29032,
-29014,29242,29266,29495,29509,29503,29502,29807,29786,29781,29791,29790,29761,
-29759,29785,29787,29788,30070,30072,30208,30192,30209,30194,30193,30202,30207,
-30196,30195,30430,30431,30555,30571,30566,30558,30563,30585,30570,30572,30556,
-30565,30568,30562,30702,30862,30896,30871,30872,30860,30857,30844,30865,30867,
-30847,31098,31103,31105,33836,31165,31260,31258,31264,31252,31263,31262,31391,
-31392,31607,31680,31584,31598,31591,31921,31923,31925,32147,32121,32145,32129,
-32143,32091,32622,32617,32618,32626,32681,32680,32676,32854,32856,32902,32900,
-33137,33136,33144,33125,33134,33139,33131,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,33145,33146,33126,33285,33351,33922,33911,
-33853,33841,33909,33894,33899,33865,33900,33883,33852,33845,33889,33891,33897,
-33901,33862,34398,34396,34399,34553,34579,34568,34567,34560,34558,34555,34562,
-34563,34566,34570,34905,35039,35028,35033,35036,35032,35037,35041,35018,35029,
-35026,35228,35299,35435,35442,35443,35430,35433,35440,35463,35452,35427,35488,
-35441,35461,35437,35426,35438,35436,35449,35451,35390,35432,35938,35978,35977,
-36042,36039,36040,36036,36018,36035,36034,36037,36321,36319,36328,36335,36339,
-36346,36330,36324,36326,36530,36611,36617,36606,36618,36767,36786,36939,36938,
-36947,36930,36948,36924,36949,36944,36935,36943,36942,36941,36945,36926,36929,
-37138,37143,37228,37226,37225,37321,37431,37463,37432,37437,37440,37438,37467,
-37451,37476,37457,37428,37449,37453,37445,37433,37439,37466,38296,38552,38548,
-38549,38605,38603,38601,38602,38647,38651,38649,38646,38742,38772,38774,38928,
-38929,38931,38922,38930,38924,39164,39156,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,39165,39166,39347,39345,39348,39649,40169,
-40578,40718,40723,40736,20711,20718,20709,20694,20717,20698,20693,20687,20689,
-20721,20686,20713,20834,20979,21123,21122,21297,21421,22014,22016,22043,22039,
-22013,22036,22022,22025,22029,22030,22007,22038,22047,22024,22032,22006,22296,
-22294,22645,22654,22659,22675,22666,22649,22661,22653,22781,22821,22818,22820,
-22890,22889,23265,23270,23273,23255,23254,23256,23267,23413,23518,23527,23521,
-23525,23526,23528,23522,23524,23519,23565,23650,23940,23943,24155,24163,24149,
-24151,24148,24275,24278,24330,24390,24432,24505,24903,24895,24907,24951,24930,
-24931,24927,24922,24920,24949,25130,25735,25688,25684,25764,25720,25695,25722,
-25681,25703,25652,25709,25723,25970,26017,26071,26070,26274,26280,26269,27036,
-27048,27029,27073,27054,27091,27083,27035,27063,27067,27051,27060,27088,27085,
-27053,27084,27046,27075,27043,27465,27468,27699,28467,28436,28414,28435,28404,
-28457,28478,28448,28460,28431,28418,28450,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,28415,28399,28422,28465,28472,28466,28451,
-28437,28459,28463,28552,28458,28396,28417,28402,28364,28407,29076,29081,29053,
-29066,29060,29074,29246,29330,29334,29508,29520,29796,29795,29802,29808,29805,
-29956,30097,30247,30221,30219,30217,30227,30433,30435,30596,30589,30591,30561,
-30913,30879,30887,30899,30889,30883,31118,31119,31117,31278,31281,31402,31401,
-31469,31471,31649,31637,31627,31605,31639,31645,31636,31631,31672,31623,31620,
-31929,31933,31934,32187,32176,32156,32189,32190,32160,32202,32180,32178,32177,
-32186,32162,32191,32181,32184,32173,32210,32199,32172,32624,32736,32737,32735,
-32862,32858,32903,33104,33152,33167,33160,33162,33151,33154,33255,33274,33287,
-33300,33310,33355,33993,33983,33990,33988,33945,33950,33970,33948,33995,33976,
-33984,34003,33936,33980,34001,33994,34623,34588,34619,34594,34597,34612,34584,
-34645,34615,34601,35059,35074,35060,35065,35064,35069,35048,35098,35055,35494,
-35468,35486,35491,35469,35489,35475,35492,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,35498,35493,35496,35480,35473,35482,35495,
-35946,35981,35980,36051,36049,36050,36203,36249,36245,36348,36628,36626,36629,
-36627,36771,36960,36952,36956,36963,36953,36958,36962,36957,36955,37145,37144,
-37150,37237,37240,37239,37236,37496,37504,37509,37528,37526,37499,37523,37532,
-37544,37500,37521,38305,38312,38313,38307,38309,38308,38553,38556,38555,38604,
-38610,38656,38780,38789,38902,38935,38936,39087,39089,39171,39173,39180,39177,
-39361,39599,39600,39654,39745,39746,40180,40182,40179,40636,40763,40778,20740,
-20736,20731,20725,20729,20738,20744,20745,20741,20956,21127,21128,21129,21133,
-21130,21232,21426,22062,22075,22073,22066,22079,22068,22057,22099,22094,22103,
-22132,22070,22063,22064,22656,22687,22686,22707,22684,22702,22697,22694,22893,
-23305,23291,23307,23285,23308,23304,23534,23532,23529,23531,23652,23653,23965,
-23956,24162,24159,24161,24290,24282,24287,24285,24291,24288,24392,24433,24503,
-24501,24950,24935,24942,24925,24917,24962,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,24956,24944,24939,24958,24999,24976,25003,
-24974,25004,24986,24996,24980,25006,25134,25705,25711,25721,25758,25778,25736,
-25744,25776,25765,25747,25749,25769,25746,25774,25773,25771,25754,25772,25753,
-25762,25779,25973,25975,25976,26286,26283,26292,26289,27171,27167,27112,27137,
-27166,27161,27133,27169,27155,27146,27123,27138,27141,27117,27153,27472,27470,
-27556,27589,27590,28479,28540,28548,28497,28518,28500,28550,28525,28507,28536,
-28526,28558,28538,28528,28516,28567,28504,28373,28527,28512,28511,29087,29100,
-29105,29096,29270,29339,29518,29527,29801,29835,29827,29822,29824,30079,30240,
-30249,30239,30244,30246,30241,30242,30362,30394,30436,30606,30599,30604,30609,
-30603,30923,30917,30906,30922,30910,30933,30908,30928,31295,31292,31296,31293,
-31287,31291,31407,31406,31661,31665,31684,31668,31686,31687,31681,31648,31692,
-31946,32224,32244,32239,32251,32216,32236,32221,32232,32227,32218,32222,32233,
-32158,32217,32242,32249,32629,32631,32687,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,32745,32806,33179,33180,33181,33184,33178,
-33176,34071,34109,34074,34030,34092,34093,34067,34065,34083,34081,34068,34028,
-34085,34047,34054,34690,34676,34678,34656,34662,34680,34664,34649,34647,34636,
-34643,34907,34909,35088,35079,35090,35091,35093,35082,35516,35538,35527,35524,
-35477,35531,35576,35506,35529,35522,35519,35504,35542,35533,35510,35513,35547,
-35916,35918,35948,36064,36062,36070,36068,36076,36077,36066,36067,36060,36074,
-36065,36205,36255,36259,36395,36368,36381,36386,36367,36393,36383,36385,36382,
-36538,36637,36635,36639,36649,36646,36650,36636,36638,36645,36969,36974,36968,
-36973,36983,37168,37165,37159,37169,37255,37257,37259,37251,37573,37563,37559,
-37610,37548,37604,37569,37555,37564,37586,37575,37616,37554,38317,38321,38660,
-38662,38663,38665,38752,38797,38795,38799,38945,38955,38940,39091,39178,39187,
-39186,39192,39389,39376,39391,39387,39377,39381,39378,39385,39607,39662,39663,
-39719,39749,39748,39799,39791,40198,40201,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,40195,40617,40638,40654,22696,40786,20754,
-20760,20756,20752,20757,20864,20906,20957,21137,21139,21235,22105,22123,22137,
-22121,22116,22136,22122,22120,22117,22129,22127,22124,22114,22134,22721,22718,
-22727,22725,22894,23325,23348,23416,23536,23566,24394,25010,24977,25001,24970,
-25037,25014,25022,25034,25032,25136,25797,25793,25803,25787,25788,25818,25796,
-25799,25794,25805,25791,25810,25812,25790,25972,26310,26313,26297,26308,26311,
-26296,27197,27192,27194,27225,27243,27224,27193,27204,27234,27233,27211,27207,
-27189,27231,27208,27481,27511,27653,28610,28593,28577,28611,28580,28609,28583,
-28595,28608,28601,28598,28582,28576,28596,29118,29129,29136,29138,29128,29141,
-29113,29134,29145,29148,29123,29124,29544,29852,29859,29848,29855,29854,29922,
-29964,29965,30260,30264,30266,30439,30437,30624,30622,30623,30629,30952,30938,
-30956,30951,31142,31309,31310,31302,31308,31307,31418,31705,31761,31689,31716,
-31707,31713,31721,31718,31957,31958,32266,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,32273,32264,32283,32291,32286,32285,32265,
-32272,32633,32690,32752,32753,32750,32808,33203,33193,33192,33275,33288,33368,
-33369,34122,34137,34120,34152,34153,34115,34121,34157,34154,34142,34691,34719,
-34718,34722,34701,34913,35114,35122,35109,35115,35105,35242,35238,35558,35578,
-35563,35569,35584,35548,35559,35566,35582,35585,35586,35575,35565,35571,35574,
-35580,35947,35949,35987,36084,36420,36401,36404,36418,36409,36405,36667,36655,
-36664,36659,36776,36774,36981,36980,36984,36978,36988,36986,37172,37266,37664,
-37686,37624,37683,37679,37666,37628,37675,37636,37658,37648,37670,37665,37653,
-37678,37657,38331,38567,38568,38570,38613,38670,38673,38678,38669,38675,38671,
-38747,38748,38758,38808,38960,38968,38971,38967,38957,38969,38948,39184,39208,
-39198,39195,39201,39194,39405,39394,39409,39608,39612,39675,39661,39720,39825,
-40213,40227,40230,40232,40210,40219,40664,40660,40845,40860,20778,20767,20769,
-20786,21237,22158,22144,22160,22149,22151,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,22159,22741,22739,22737,22734,23344,23338,
-23332,23418,23607,23656,23996,23994,23997,23992,24171,24396,24509,25033,25026,
-25031,25062,25035,25138,25140,25806,25802,25816,25824,25840,25830,25836,25841,
-25826,25837,25986,25987,26329,26326,27264,27284,27268,27298,27292,27355,27299,
-27262,27287,27280,27296,27484,27566,27610,27656,28632,28657,28639,28640,28635,
-28644,28651,28655,28544,28652,28641,28649,28629,28654,28656,29159,29151,29166,
-29158,29157,29165,29164,29172,29152,29237,29254,29552,29554,29865,29872,29862,
-29864,30278,30274,30284,30442,30643,30634,30640,30636,30631,30637,30703,30967,
-30970,30964,30959,30977,31143,31146,31319,31423,31751,31757,31742,31735,31756,
-31712,31968,31964,31966,31970,31967,31961,31965,32302,32318,32326,32311,32306,
-32323,32299,32317,32305,32325,32321,32308,32313,32328,32309,32319,32303,32580,
-32755,32764,32881,32882,32880,32879,32883,33222,33219,33210,33218,33216,33215,
-33213,33225,33214,33256,33289,33393,34218,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,34180,34174,34204,34193,34196,34223,34203,
-34183,34216,34186,34407,34752,34769,34739,34770,34758,34731,34747,34746,34760,
-34763,35131,35126,35140,35128,35133,35244,35598,35607,35609,35611,35594,35616,
-35613,35588,35600,35905,35903,35955,36090,36093,36092,36088,36091,36264,36425,
-36427,36424,36426,36676,36670,36674,36677,36671,36991,36989,36996,36993,36994,
-36992,37177,37283,37278,37276,37709,37762,37672,37749,37706,37733,37707,37656,
-37758,37740,37723,37744,37722,37716,38346,38347,38348,38344,38342,38577,38584,
-38614,38684,38686,38816,38867,38982,39094,39221,39425,39423,39854,39851,39850,
-39853,40251,40255,40587,40655,40670,40668,40669,40667,40766,40779,21474,22165,
-22190,22745,22744,23352,24413,25059,25139,25844,25842,25854,25862,25850,25851,
-25847,26039,26332,26406,27315,27308,27331,27323,27320,27330,27310,27311,27487,
-27512,27567,28681,28683,28670,28678,28666,28689,28687,29179,29180,29182,29176,
-29559,29557,29863,29887,29973,30294,30296,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,30290,30653,30655,30651,30652,30990,31150,
-31329,31330,31328,31428,31429,31787,31783,31786,31774,31779,31777,31975,32340,
-32341,32350,32346,32353,32338,32345,32584,32761,32763,32887,32886,33229,33231,
-33290,34255,34217,34253,34256,34249,34224,34234,34233,34214,34799,34796,34802,
-34784,35206,35250,35316,35624,35641,35628,35627,35920,36101,36441,36451,36454,
-36452,36447,36437,36544,36681,36685,36999,36995,37000,37291,37292,37328,37780,
-37770,37782,37794,37811,37806,37804,37808,37784,37786,37783,38356,38358,38352,
-38357,38626,38620,38617,38619,38622,38692,38819,38822,38829,38905,38989,38991,
-38988,38990,38995,39098,39230,39231,39229,39214,39333,39438,39617,39683,39686,
-39759,39758,39757,39882,39881,39933,39880,39872,40273,40285,40288,40672,40725,
-40748,20787,22181,22750,22751,22754,23541,40848,24300,25074,25079,25078,25077,
-25856,25871,26336,26333,27365,27357,27354,27347,28699,28703,28712,28698,28701,
-28693,28696,29190,29197,29272,29346,29560,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,29562,29885,29898,29923,30087,30086,30303,
-30305,30663,31001,31153,31339,31337,31806,31807,31800,31805,31799,31808,32363,
-32365,32377,32361,32362,32645,32371,32694,32697,32696,33240,34281,34269,34282,
-34261,34276,34277,34295,34811,34821,34829,34809,34814,35168,35167,35158,35166,
-35649,35676,35672,35657,35674,35662,35663,35654,35673,36104,36106,36476,36466,
-36487,36470,36460,36474,36468,36692,36686,36781,37002,37003,37297,37294,37857,
-37841,37855,37827,37832,37852,37853,37846,37858,37837,37848,37860,37847,37864,
-38364,38580,38627,38698,38695,38753,38876,38907,39006,39000,39003,39100,39237,
-39241,39446,39449,39693,39912,39911,39894,39899,40329,40289,40306,40298,40300,
-40594,40599,40595,40628,21240,22184,22199,22198,22196,22204,22756,23360,23363,
-23421,23542,24009,25080,25082,25880,25876,25881,26342,26407,27372,28734,28720,
-28722,29200,29563,29903,30306,30309,31014,31018,31020,31019,31431,31478,31820,
-31811,31821,31983,31984,36782,32381,32380,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,32386,32588,32768,33242,33382,34299,34297,
-34321,34298,34310,34315,34311,34314,34836,34837,35172,35258,35320,35696,35692,
-35686,35695,35679,35691,36111,36109,36489,36481,36485,36482,37300,37323,37912,
-37891,37885,38369,38704,39108,39250,39249,39336,39467,39472,39479,39477,39955,
-39949,40569,40629,40680,40751,40799,40803,40801,20791,20792,22209,22208,22210,
-22804,23660,24013,25084,25086,25885,25884,26005,26345,27387,27396,27386,27570,
-28748,29211,29351,29910,29908,30313,30675,31824,32399,32396,32700,34327,34349,
-34330,34851,34850,34849,34847,35178,35180,35261,35700,35703,35709,36115,36490,
-36493,36491,36703,36783,37306,37934,37939,37941,37946,37944,37938,37931,38370,
-38712,38713,38706,38911,39015,39013,39255,39493,39491,39488,39486,39631,39764,
-39761,39981,39973,40367,40372,40386,40376,40605,40687,40729,40796,40806,40807,
-20796,20795,22216,22218,22217,23423,24020,24018,24398,25087,25892,27402,27489,
-28753,28760,29568,29924,30090,30318,30316,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,31155,31840,31839,32894,32893,33247,35186,
-35183,35324,35712,36118,36119,36497,36499,36705,37192,37956,37969,37970,38717,
-38718,38851,38849,39019,39253,39509,39501,39634,39706,40009,39985,39998,39995,
-40403,40407,40756,40812,40810,40852,22220,24022,25088,25891,25899,25898,26348,
-27408,29914,31434,31844,31843,31845,32403,32406,32404,33250,34360,34367,34865,
-35722,37008,37007,37987,37984,37988,38760,39023,39260,39514,39515,39511,39635,
-39636,39633,40020,40023,40022,40421,40607,40692,22225,22761,25900,28766,30321,
-30322,30679,32592,32648,34870,34873,34914,35731,35730,35734,33399,36123,37312,
-37994,38722,38728,38724,38854,39024,39519,39714,39768,40031,40441,40442,40572,
-40573,40711,40823,40818,24307,27414,28771,31852,31854,34875,35264,36513,37313,
-38002,38000,39025,39262,39638,39715,40652,28772,30682,35738,38007,38857,39522,
-39525,32412,35740,36522,37317,38013,38014,38012,40055,40056,40695,35924,38015,
-40474,29224,39530,39729,40475,40478,31858,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,12542,12445,12446,12293,12353,12354,12355,
-12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,
-12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,
-12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,
-12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,
-12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,
-12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,
-12434,12435,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,
-12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,
-12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,
-12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,
-12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,
-12512,12513,12514,12515,12516,12517,12518,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,12519,12520,12521,12522,12523,12524,12525,
-12526,12527,12528,12529,12530,12531,12532,12533,12534,1044,1045,1025,1046,
-1047,1048,1049,1050,1051,1052,1059,1060,1061,1062,1063,1064,1065,1066,1067,
-1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,
-1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,
-1097,1098,1099,1100,1101,1102,1103,9312,9313,9314,9315,9316,9317,9318,9319,
-9320,9321,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,20034,20060,20981,
-21274,21378,19975,19980,20039,20109,22231,64012,23662,24435,19983,20871,19982,
-20014,20115,20162,20169,20168,20888,21244,21356,21433,22304,22787,22828,23568,
-24063,26081,27571,27596,27668,29247,20017,20028,20200,20188,20201,20193,20189,
-20186,21004,21276,21324,22306,22307,22807,22831,23425,23428,23570,23611,23668,
-23667,24068,24192,24194,24521,25097,25168,27669,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,27702,27715,27711,27707,29358,29360,
-29578,31160,32906,38430,20238,20248,20268,20213,20244,20209,20224,20215,20232,
-20253,20226,20229,20258,20243,20228,20212,20242,20913,21011,21001,21008,21158,
-21282,21279,21325,21386,21511,22241,22239,22318,22314,22324,22844,22912,22908,
-22917,22907,22910,22903,22911,23382,23573,23589,23676,23674,23675,23678,24031,
-24181,24196,24322,24346,24436,24533,24532,24527,25180,25182,25188,25185,25190,
-25186,25177,25184,25178,25189,26095,26094,26430,26425,26424,26427,26426,26431,
-26428,26419,27672,27718,27730,27740,27727,27722,27732,27723,27724,28785,29278,
-29364,29365,29582,29994,30335,31349,32593,33400,33404,33408,33405,33407,34381,
-35198,37017,37015,37016,37019,37012,38434,38436,38432,38435,20310,20283,20322,
-20297,20307,20324,20286,20327,20306,20319,20289,20312,20269,20275,20287,20321,
-20879,20921,21020,21022,21025,21165,21166,21257,21347,21362,21390,21391,21552,
-21559,21546,21588,21573,21529,21532,21541,21528,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,21565,21583,21569,21544,21540,21575,
-22254,22247,22245,22337,22341,22348,22345,22347,22354,22790,22848,22950,22936,
-22944,22935,22926,22946,22928,22927,22951,22945,23438,23442,23592,23594,23693,
-23695,23688,23691,23689,23698,23690,23686,23699,23701,24032,24074,24078,24203,
-24201,24204,24200,24205,24325,24349,24440,24438,24530,24529,24528,24557,24552,
-24558,24563,24545,24548,24547,24570,24559,24567,24571,24576,24564,25146,25219,
-25228,25230,25231,25236,25223,25201,25211,25210,25200,25217,25224,25207,25213,
-25202,25204,25911,26096,26100,26099,26098,26101,26437,26439,26457,26453,26444,
-26440,26461,26445,26458,26443,27600,27673,27674,27768,27751,27755,27780,27787,
-27791,27761,27759,27753,27802,27757,27783,27797,27804,27750,27763,27749,27771,
-27790,28788,28794,29283,29375,29373,29379,29382,29377,29370,29381,29589,29591,
-29587,29588,29586,30010,30009,30100,30101,30337,31037,32820,32917,32921,32912,
-32914,32924,33424,33423,33413,33422,33425,33427,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,33418,33411,33412,35960,36809,36799,
-37023,37025,37029,37022,37031,37024,38448,38440,38447,38445,20019,20376,20348,
-20357,20349,20352,20359,20342,20340,20361,20356,20343,20300,20375,20330,20378,
-20345,20353,20344,20368,20380,20372,20382,20370,20354,20373,20331,20334,20894,
-20924,20926,21045,21042,21043,21062,21041,21180,21258,21259,21308,21394,21396,
-21639,21631,21633,21649,21634,21640,21611,21626,21630,21605,21612,21620,21606,
-21645,21615,21601,21600,21656,21603,21607,21604,22263,22265,22383,22386,22381,
-22379,22385,22384,22390,22400,22389,22395,22387,22388,22370,22376,22397,22796,
-22853,22965,22970,22991,22990,22962,22988,22977,22966,22972,22979,22998,22961,
-22973,22976,22984,22964,22983,23394,23397,23443,23445,23620,23623,23726,23716,
-23712,23733,23727,23720,23724,23711,23715,23725,23714,23722,23719,23709,23717,
-23734,23728,23718,24087,24084,24089,24360,24354,24355,24356,24404,24450,24446,
-24445,24542,24549,24621,24614,24601,24626,24587,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,24628,24586,24599,24627,24602,24606,
-24620,24610,24589,24592,24622,24595,24593,24588,24585,24604,25108,25149,25261,
-25268,25297,25278,25258,25270,25290,25262,25267,25263,25275,25257,25264,25272,
-25917,26024,26043,26121,26108,26116,26130,26120,26107,26115,26123,26125,26117,
-26109,26129,26128,26358,26378,26501,26476,26510,26514,26486,26491,26520,26502,
-26500,26484,26509,26508,26490,26527,26513,26521,26499,26493,26497,26488,26489,
-26516,27429,27520,27518,27614,27677,27795,27884,27883,27886,27865,27830,27860,
-27821,27879,27831,27856,27842,27834,27843,27846,27885,27890,27858,27869,27828,
-27786,27805,27776,27870,27840,27952,27853,27847,27824,27897,27855,27881,27857,
-28820,28824,28805,28819,28806,28804,28817,28822,28802,28826,28803,29290,29398,
-29387,29400,29385,29404,29394,29396,29402,29388,29393,29604,29601,29613,29606,
-29602,29600,29612,29597,29917,29928,30015,30016,30014,30092,30104,30383,30451,
-30449,30448,30453,30712,30716,30713,30715,30714,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,30711,31042,31039,31173,31352,31355,
-31483,31861,31997,32821,32911,32942,32931,32952,32949,32941,33312,33440,33472,
-33451,33434,33432,33435,33461,33447,33454,33468,33438,33466,33460,33448,33441,
-33449,33474,33444,33475,33462,33442,34416,34415,34413,34414,35926,36818,36811,
-36819,36813,36822,36821,36823,37042,37044,37039,37043,37040,38457,38461,38460,
-38458,38467,20429,20421,20435,20402,20425,20427,20417,20436,20444,20441,20411,
-20403,20443,20423,20438,20410,20416,20409,20460,21060,21065,21184,21186,21309,
-21372,21399,21398,21401,21400,21690,21665,21677,21669,21711,21699,33549,21687,
-21678,21718,21686,21701,21702,21664,21616,21692,21666,21694,21618,21726,21680,
-22453,22430,22431,22436,22412,22423,22429,22427,22420,22424,22415,22425,22437,
-22426,22421,22772,22797,22867,23009,23006,23022,23040,23025,23005,23034,23037,
-23036,23030,23012,23026,23031,23003,23017,23027,23029,23008,23038,23028,23021,
-23464,23628,23760,23768,23756,23767,23755,23771,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,23774,23770,23753,23751,23754,23766,
-23763,23764,23759,23752,23750,23758,23775,23800,24057,24097,24098,24099,24096,
-24100,24240,24228,24226,24219,24227,24229,24327,24366,24406,24454,24631,24633,
-24660,24690,24670,24645,24659,24647,24649,24667,24652,24640,24642,24671,24612,
-24644,24664,24678,24686,25154,25155,25295,25357,25355,25333,25358,25347,25323,
-25337,25359,25356,25336,25334,25344,25363,25364,25338,25365,25339,25328,25921,
-25923,26026,26047,26166,26145,26162,26165,26140,26150,26146,26163,26155,26170,
-26141,26164,26169,26158,26383,26384,26561,26610,26568,26554,26588,26555,26616,
-26584,26560,26551,26565,26603,26596,26591,26549,26573,26547,26615,26614,26606,
-26595,26562,26553,26574,26599,26608,26546,26620,26566,26605,26572,26542,26598,
-26587,26618,26569,26570,26563,26602,26571,27432,27522,27524,27574,27606,27608,
-27616,27680,27681,27944,27956,27949,27935,27964,27967,27922,27914,27866,27955,
-27908,27929,27962,27930,27921,27904,27933,27970,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,27905,27928,27959,27907,27919,27968,
-27911,27936,27948,27912,27938,27913,27920,28855,28831,28862,28849,28848,28833,
-28852,28853,28841,29249,29257,29258,29292,29296,29299,29294,29386,29412,29416,
-29419,29407,29418,29414,29411,29573,29644,29634,29640,29637,29625,29622,29621,
-29620,29675,29631,29639,29630,29635,29638,29624,29643,29932,29934,29998,30023,
-30024,30119,30122,30329,30404,30472,30467,30468,30469,30474,30455,30459,30458,
-30695,30696,30726,30737,30738,30725,30736,30735,30734,30729,30723,30739,31050,
-31052,31051,31045,31044,31189,31181,31183,31190,31182,31360,31358,31441,31488,
-31489,31866,31864,31865,31871,31872,31873,32003,32008,32001,32600,32657,32653,
-32702,32775,32782,32783,32788,32823,32984,32967,32992,32977,32968,32962,32976,
-32965,32995,32985,32988,32970,32981,32969,32975,32983,32998,32973,33279,33313,
-33428,33497,33534,33529,33543,33512,33536,33493,33594,33515,33494,33524,33516,
-33505,33522,33525,33548,33531,33526,33520,33514,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,33508,33504,33530,33523,33517,34423,
-34420,34428,34419,34881,34894,34919,34922,34921,35283,35332,35335,36210,36835,
-36833,36846,36832,37105,37053,37055,37077,37061,37054,37063,37067,37064,37332,
-37331,38484,38479,38481,38483,38474,38478,20510,20485,20487,20499,20514,20528,
-20507,20469,20468,20531,20535,20524,20470,20471,20503,20508,20512,20519,20533,
-20527,20529,20494,20826,20884,20883,20938,20932,20933,20936,20942,21089,21082,
-21074,21086,21087,21077,21090,21197,21262,21406,21798,21730,21783,21778,21735,
-21747,21732,21786,21759,21764,21768,21739,21777,21765,21745,21770,21755,21751,
-21752,21728,21774,21763,21771,22273,22274,22476,22578,22485,22482,22458,22470,
-22461,22460,22456,22454,22463,22471,22480,22457,22465,22798,22858,23065,23062,
-23085,23086,23061,23055,23063,23050,23070,23091,23404,23463,23469,23468,23555,
-23638,23636,23788,23807,23790,23793,23799,23808,23801,24105,24104,24232,24238,
-24234,24236,24371,24368,24423,24669,24666,24679,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,24641,24738,24712,24704,24722,24705,
-24733,24707,24725,24731,24727,24711,24732,24718,25113,25158,25330,25360,25430,
-25388,25412,25413,25398,25411,25572,25401,25419,25418,25404,25385,25409,25396,
-25432,25428,25433,25389,25415,25395,25434,25425,25400,25431,25408,25416,25930,
-25926,26054,26051,26052,26050,26186,26207,26183,26193,26386,26387,26655,26650,
-26697,26674,26675,26683,26699,26703,26646,26673,26652,26677,26667,26669,26671,
-26702,26692,26676,26653,26642,26644,26662,26664,26670,26701,26682,26661,26656,
-27436,27439,27437,27441,27444,27501,32898,27528,27622,27620,27624,27619,27618,
-27623,27685,28026,28003,28004,28022,27917,28001,28050,27992,28002,28013,28015,
-28049,28045,28143,28031,28038,27998,28007,28000,28055,28016,28028,27999,28034,
-28056,27951,28008,28043,28030,28032,28036,27926,28035,28027,28029,28021,28048,
-28892,28883,28881,28893,28875,32569,28898,28887,28882,28894,28896,28884,28877,
-28869,28870,28871,28890,28878,28897,29250,29304,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,29303,29302,29440,29434,29428,29438,
-29430,29427,29435,29441,29651,29657,29669,29654,29628,29671,29667,29673,29660,
-29650,29659,29652,29661,29658,29655,29656,29672,29918,29919,29940,29941,29985,
-30043,30047,30128,30145,30139,30148,30144,30143,30134,30138,30346,30409,30493,
-30491,30480,30483,30482,30499,30481,30485,30489,30490,30498,30503,30755,30764,
-30754,30773,30767,30760,30766,30763,30753,30761,30771,30762,30769,31060,31067,
-31055,31068,31059,31058,31057,31211,31212,31200,31214,31213,31210,31196,31198,
-31197,31366,31369,31365,31371,31372,31370,31367,31448,31504,31492,31507,31493,
-31503,31496,31498,31502,31497,31506,31876,31889,31882,31884,31880,31885,31877,
-32030,32029,32017,32014,32024,32022,32019,32031,32018,32015,32012,32604,32609,
-32606,32608,32605,32603,32662,32658,32707,32706,32704,32790,32830,32825,33018,
-33010,33017,33013,33025,33019,33024,33281,33327,33317,33587,33581,33604,33561,
-33617,33573,33622,33599,33601,33574,33564,33570,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,33602,33614,33563,33578,33544,33596,
-33613,33558,33572,33568,33591,33583,33577,33607,33605,33612,33619,33566,33580,
-33611,33575,33608,34387,34386,34466,34472,34454,34445,34449,34462,34439,34455,
-34438,34443,34458,34437,34469,34457,34465,34471,34453,34456,34446,34461,34448,
-34452,34883,34884,34925,34933,34934,34930,34944,34929,34943,34927,34947,34942,
-34932,34940,35346,35911,35927,35963,36004,36003,36214,36216,36277,36279,36278,
-36561,36563,36862,36853,36866,36863,36859,36868,36860,36854,37078,37088,37081,
-37082,37091,37087,37093,37080,37083,37079,37084,37092,37200,37198,37199,37333,
-37346,37338,38492,38495,38588,39139,39647,39727,20095,20592,20586,20577,20574,
-20576,20563,20555,20573,20594,20552,20557,20545,20571,20554,20578,20501,20549,
-20575,20585,20587,20579,20580,20550,20544,20590,20595,20567,20561,20944,21099,
-21101,21100,21102,21206,21203,21293,21404,21877,21878,21820,21837,21840,21812,
-21802,21841,21858,21814,21813,21808,21842,21829,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,21772,21810,21861,21838,21817,21832,
-21805,21819,21824,21835,22282,22279,22523,22548,22498,22518,22492,22516,22528,
-22509,22525,22536,22520,22539,22515,22479,22535,22510,22499,22514,22501,22508,
-22497,22542,22524,22544,22503,22529,22540,22513,22505,22512,22541,22532,22876,
-23136,23128,23125,23143,23134,23096,23093,23149,23120,23135,23141,23148,23123,
-23140,23127,23107,23133,23122,23108,23131,23112,23182,23102,23117,23097,23116,
-23152,23145,23111,23121,23126,23106,23132,23410,23406,23489,23488,23641,23838,
-23819,23837,23834,23840,23820,23848,23821,23846,23845,23823,23856,23826,23843,
-23839,23854,24126,24116,24241,24244,24249,24242,24243,24374,24376,24475,24470,
-24479,24714,24720,24710,24766,24752,24762,24787,24788,24783,24804,24793,24797,
-24776,24753,24795,24759,24778,24767,24771,24781,24768,25394,25445,25482,25474,
-25469,25533,25502,25517,25501,25495,25515,25486,25455,25479,25488,25454,25519,
-25461,25500,25453,25518,25468,25508,25403,25503,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,25464,25477,25473,25489,25485,25456,
-25939,26061,26213,26209,26203,26201,26204,26210,26392,26745,26759,26768,26780,
-26733,26734,26798,26795,26966,26735,26787,26796,26793,26741,26740,26802,26767,
-26743,26770,26748,26731,26738,26794,26752,26737,26750,26779,26774,26763,26784,
-26761,26788,26744,26747,26769,26764,26762,26749,27446,27443,27447,27448,27537,
-27535,27533,27534,27532,27690,28096,28075,28084,28083,28276,28076,28137,28130,
-28087,28150,28116,28160,28104,28128,28127,28118,28094,28133,28124,28125,28123,
-28148,28106,28093,28141,28144,28090,28117,28098,28111,28105,28112,28146,28115,
-28157,28119,28109,28131,28091,28922,28941,28919,28951,28916,28940,28912,28932,
-28915,28944,28924,28927,28934,28947,28928,28920,28918,28939,28930,28942,29310,
-29307,29308,29311,29469,29463,29447,29457,29464,29450,29448,29439,29455,29470,
-29576,29686,29688,29685,29700,29697,29693,29703,29696,29690,29692,29695,29708,
-29707,29684,29704,30052,30051,30158,30162,30159,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,30155,30156,30161,30160,30351,30345,
-30419,30521,30511,30509,30513,30514,30516,30515,30525,30501,30523,30517,30792,
-30802,30793,30797,30794,30796,30758,30789,30800,31076,31079,31081,31082,31075,
-31083,31073,31163,31226,31224,31222,31223,31375,31380,31376,31541,31559,31540,
-31525,31536,31522,31524,31539,31512,31530,31517,31537,31531,31533,31535,31538,
-31544,31514,31523,31892,31896,31894,31907,32053,32061,32056,32054,32058,32069,
-32044,32041,32065,32071,32062,32063,32074,32059,32040,32611,32661,32668,32669,
-32667,32714,32715,32717,32720,32721,32711,32719,32713,32799,32798,32795,32839,
-32835,32840,33048,33061,33049,33051,33069,33055,33068,33054,33057,33045,33063,
-33053,33058,33297,33336,33331,33338,33332,33330,33396,33680,33699,33704,33677,
-33658,33651,33700,33652,33679,33665,33685,33689,33653,33684,33705,33661,33667,
-33676,33693,33691,33706,33675,33662,33701,33711,33672,33687,33712,33663,33702,
-33671,33710,33654,33690,34393,34390,34495,34487,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,34498,34497,34501,34490,34480,34504,
-34489,34483,34488,34508,34484,34491,34492,34499,34493,34494,34898,34953,34965,
-34984,34978,34986,34970,34961,34977,34975,34968,34983,34969,34971,34967,34980,
-34988,34956,34963,34958,35202,35286,35289,35285,35376,35367,35372,35358,35897,
-35899,35932,35933,35965,36005,36221,36219,36217,36284,36290,36281,36287,36289,
-36568,36574,36573,36572,36567,36576,36577,36900,36875,36881,36892,36876,36897,
-37103,37098,37104,37108,37106,37107,37076,37099,37100,37097,37206,37208,37210,
-37203,37205,37356,37364,37361,37363,37368,37348,37369,37354,37355,37367,37352,
-37358,38266,38278,38280,38524,38509,38507,38513,38511,38591,38762,38916,39141,
-39319,20635,20629,20628,20638,20619,20643,20611,20620,20622,20637,20584,20636,
-20626,20610,20615,20831,20948,21266,21265,21412,21415,21905,21928,21925,21933,
-21879,22085,21922,21907,21896,21903,21941,21889,21923,21906,21924,21885,21900,
-21926,21887,21909,21921,21902,22284,22569,22583,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,22553,22558,22567,22563,22568,22517,
-22600,22565,22556,22555,22579,22591,22582,22574,22585,22584,22573,22572,22587,
-22881,23215,23188,23199,23162,23202,23198,23160,23206,23164,23205,23212,23189,
-23214,23095,23172,23178,23191,23171,23179,23209,23163,23165,23180,23196,23183,
-23187,23197,23530,23501,23499,23508,23505,23498,23502,23564,23600,23863,23875,
-23915,23873,23883,23871,23861,23889,23886,23893,23859,23866,23890,23869,23857,
-23897,23874,23865,23881,23864,23868,23858,23862,23872,23877,24132,24129,24408,
-24486,24485,24491,24777,24761,24780,24802,24782,24772,24852,24818,24842,24854,
-24837,24821,24851,24824,24828,24830,24769,24835,24856,24861,24848,24831,24836,
-24843,25162,25492,25521,25520,25550,25573,25576,25583,25539,25757,25587,25546,
-25568,25590,25557,25586,25589,25697,25567,25534,25565,25564,25540,25560,25555,
-25538,25543,25548,25547,25544,25584,25559,25561,25906,25959,25962,25956,25948,
-25960,25957,25996,26013,26014,26030,26064,26066,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,26236,26220,26235,26240,26225,26233,
-26218,26226,26369,26892,26835,26884,26844,26922,26860,26858,26865,26895,26838,
-26871,26859,26852,26870,26899,26896,26867,26849,26887,26828,26888,26992,26804,
-26897,26863,26822,26900,26872,26832,26877,26876,26856,26891,26890,26903,26830,
-26824,26845,26846,26854,26868,26833,26886,26836,26857,26901,26917,26823,27449,
-27451,27455,27452,27540,27543,27545,27541,27581,27632,27634,27635,27696,28156,
-28230,28231,28191,28233,28296,28220,28221,28229,28258,28203,28223,28225,28253,
-28275,28188,28211,28235,28224,28241,28219,28163,28206,28254,28264,28252,28257,
-28209,28200,28256,28273,28267,28217,28194,28208,28243,28261,28199,28280,28260,
-28279,28245,28281,28242,28262,28213,28214,28250,28960,28958,28975,28923,28974,
-28977,28963,28965,28962,28978,28959,28968,28986,28955,29259,29274,29320,29321,
-29318,29317,29323,29458,29451,29488,29474,29489,29491,29479,29490,29485,29478,
-29475,29493,29452,29742,29740,29744,29739,29718,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,29722,29729,29741,29745,29732,29731,
-29725,29737,29728,29746,29947,29999,30063,30060,30183,30170,30177,30182,30173,
-30175,30180,30167,30357,30354,30426,30534,30535,30532,30541,30533,30538,30542,
-30539,30540,30686,30700,30816,30820,30821,30812,30829,30833,30826,30830,30832,
-30825,30824,30814,30818,31092,31091,31090,31088,31234,31242,31235,31244,31236,
-31385,31462,31460,31562,31547,31556,31560,31564,31566,31552,31576,31557,31906,
-31902,31912,31905,32088,32111,32099,32083,32086,32103,32106,32079,32109,32092,
-32107,32082,32084,32105,32081,32095,32078,32574,32575,32613,32614,32674,32672,
-32673,32727,32849,32847,32848,33022,32980,33091,33098,33106,33103,33095,33085,
-33101,33082,33254,33262,33271,33272,33273,33284,33340,33341,33343,33397,33595,
-33743,33785,33827,33728,33768,33810,33767,33764,33788,33782,33808,33734,33736,
-33771,33763,33727,33793,33757,33765,33752,33791,33761,33739,33742,33750,33781,
-33737,33801,33807,33758,33809,33798,33730,33779,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,33749,33786,33735,33745,33770,33811,
-33731,33772,33774,33732,33787,33751,33762,33819,33755,33790,34520,34530,34534,
-34515,34531,34522,34538,34525,34539,34524,34540,34537,34519,34536,34513,34888,
-34902,34901,35002,35031,35001,35000,35008,35006,34998,35004,34999,35005,34994,
-35073,35017,35221,35224,35223,35293,35290,35291,35406,35405,35385,35417,35392,
-35415,35416,35396,35397,35410,35400,35409,35402,35404,35407,35935,35969,35968,
-36026,36030,36016,36025,36021,36228,36224,36233,36312,36307,36301,36295,36310,
-36316,36303,36309,36313,36296,36311,36293,36591,36599,36602,36601,36582,36590,
-36581,36597,36583,36584,36598,36587,36593,36588,36596,36585,36909,36916,36911,
-37126,37164,37124,37119,37116,37128,37113,37115,37121,37120,37127,37125,37123,
-37217,37220,37215,37218,37216,37377,37386,37413,37379,37402,37414,37391,37388,
-37376,37394,37375,37373,37382,37380,37415,37378,37404,37412,37401,37399,37381,
-37398,38267,38285,38284,38288,38535,38526,38536,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,38537,38531,38528,38594,38600,38595,
-38641,38640,38764,38768,38766,38919,39081,39147,40166,40697,20099,20100,20150,
-20669,20671,20678,20654,20676,20682,20660,20680,20674,20656,20673,20666,20657,
-20683,20681,20662,20664,20951,21114,21112,21115,21116,21955,21979,21964,21968,
-21963,21962,21981,21952,21972,21956,21993,21951,21970,21901,21967,21973,21986,
-21974,21960,22002,21965,21977,21954,22292,22611,22632,22628,22607,22605,22601,
-22639,22613,22606,22621,22617,22629,22619,22589,22627,22641,22780,23239,23236,
-23243,23226,23224,23217,23221,23216,23231,23240,23227,23238,23223,23232,23242,
-23220,23222,23245,23225,23184,23510,23512,23513,23583,23603,23921,23907,23882,
-23909,23922,23916,23902,23912,23911,23906,24048,24143,24142,24138,24141,24139,
-24261,24268,24262,24267,24263,24384,24495,24493,24823,24905,24906,24875,24901,
-24886,24882,24878,24902,24879,24911,24873,24896,25120,37224,25123,25125,25124,
-25541,25585,25579,25616,25618,25609,25632,25636,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,25651,25667,25631,25621,25624,25657,
-25655,25634,25635,25612,25638,25648,25640,25665,25653,25647,25610,25626,25664,
-25637,25639,25611,25575,25627,25646,25633,25614,25967,26002,26067,26246,26252,
-26261,26256,26251,26250,26265,26260,26232,26400,26982,26975,26936,26958,26978,
-26993,26943,26949,26986,26937,26946,26967,26969,27002,26952,26953,26933,26988,
-26931,26941,26981,26864,27000,26932,26985,26944,26991,26948,26998,26968,26945,
-26996,26956,26939,26955,26935,26972,26959,26961,26930,26962,26927,27003,26940,
-27462,27461,27459,27458,27464,27457,27547,64013,27643,27644,27641,27639,27640,
-28315,28374,28360,28303,28352,28319,28307,28308,28320,28337,28345,28358,28370,
-28349,28353,28318,28361,28343,28336,28365,28326,28367,28338,28350,28355,28380,
-28376,28313,28306,28302,28301,28324,28321,28351,28339,28368,28362,28311,28334,
-28323,28999,29012,29010,29027,29024,28993,29021,29026,29042,29048,29034,29025,
-28994,29016,28995,29003,29040,29023,29008,29011,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,28996,29005,29018,29263,29325,29324,
-29329,29328,29326,29500,29506,29499,29498,29504,29514,29513,29764,29770,29771,
-29778,29777,29783,29760,29775,29776,29774,29762,29766,29773,29780,29921,29951,
-29950,29949,29981,30073,30071,27011,30191,30223,30211,30199,30206,30204,30201,
-30200,30224,30203,30198,30189,30197,30205,30361,30389,30429,30549,30559,30560,
-30546,30550,30554,30569,30567,30548,30553,30573,30688,30855,30874,30868,30863,
-30852,30869,30853,30854,30881,30851,30841,30873,30848,30870,30843,31100,31106,
-31101,31097,31249,31256,31257,31250,31255,31253,31266,31251,31259,31248,31395,
-31394,31390,31467,31590,31588,31597,31604,31593,31602,31589,31603,31601,31600,
-31585,31608,31606,31587,31922,31924,31919,32136,32134,32128,32141,32127,32133,
-32122,32142,32123,32131,32124,32140,32148,32132,32125,32146,32621,32619,32615,
-32616,32620,32678,32677,32679,32731,32732,32801,33124,33120,33143,33116,33129,
-33115,33122,33138,26401,33118,33142,33127,33135,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,33092,33121,33309,33353,33348,33344,
-33346,33349,34033,33855,33878,33910,33913,33935,33933,33893,33873,33856,33926,
-33895,33840,33869,33917,33882,33881,33908,33907,33885,34055,33886,33847,33850,
-33844,33914,33859,33912,33842,33861,33833,33753,33867,33839,33858,33837,33887,
-33904,33849,33870,33868,33874,33903,33989,33934,33851,33863,33846,33843,33896,
-33918,33860,33835,33888,33876,33902,33872,34571,34564,34551,34572,34554,34518,
-34549,34637,34552,34574,34569,34561,34550,34573,34565,35030,35019,35021,35022,
-35038,35035,35034,35020,35024,35205,35227,35295,35301,35300,35297,35296,35298,
-35292,35302,35446,35462,35455,35425,35391,35447,35458,35460,35445,35459,35457,
-35444,35450,35900,35915,35914,35941,35940,35942,35974,35972,35973,36044,36200,
-36201,36241,36236,36238,36239,36237,36243,36244,36240,36242,36336,36320,36332,
-36337,36334,36304,36329,36323,36322,36327,36338,36331,36340,36614,36607,36609,
-36608,36613,36615,36616,36610,36619,36946,36927,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,36932,36937,36925,37136,37133,37135,
-37137,37142,37140,37131,37134,37230,37231,37448,37458,37424,37434,37478,37427,
-37477,37470,37507,37422,37450,37446,37485,37484,37455,37472,37479,37487,37430,
-37473,37488,37425,37460,37475,37456,37490,37454,37459,37452,37462,37426,38303,
-38300,38302,38299,38546,38547,38545,38551,38606,38650,38653,38648,38645,38771,
-38775,38776,38770,38927,38925,38926,39084,39158,39161,39343,39346,39344,39349,
-39597,39595,39771,40170,40173,40167,40576,40701,20710,20692,20695,20712,20723,
-20699,20714,20701,20708,20691,20716,20720,20719,20707,20704,20952,21120,21121,
-21225,21227,21296,21420,22055,22037,22028,22034,22012,22031,22044,22017,22035,
-22018,22010,22045,22020,22015,22009,22665,22652,22672,22680,22662,22657,22655,
-22644,22667,22650,22663,22673,22670,22646,22658,22664,22651,22676,22671,22782,
-22891,23260,23278,23269,23253,23274,23258,23277,23275,23283,23266,23264,23259,
-23276,23262,23261,23257,23272,23263,23415,23520,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,23523,23651,23938,23936,23933,23942,
-23930,23937,23927,23946,23945,23944,23934,23932,23949,23929,23935,24152,24153,
-24147,24280,24273,24279,24270,24284,24277,24281,24274,24276,24388,24387,24431,
-24502,24876,24872,24897,24926,24945,24947,24914,24915,24946,24940,24960,24948,
-24916,24954,24923,24933,24891,24938,24929,24918,25129,25127,25131,25643,25677,
-25691,25693,25716,25718,25714,25715,25725,25717,25702,25766,25678,25730,25694,
-25692,25675,25683,25696,25680,25727,25663,25708,25707,25689,25701,25719,25971,
-26016,26273,26272,26271,26373,26372,26402,27057,27062,27081,27040,27086,27030,
-27056,27052,27068,27025,27033,27022,27047,27021,27049,27070,27055,27071,27076,
-27069,27044,27092,27065,27082,27034,27087,27059,27027,27050,27041,27038,27097,
-27031,27024,27074,27061,27045,27078,27466,27469,27467,27550,27551,27552,27587,
-27588,27646,28366,28405,28401,28419,28453,28408,28471,28411,28462,28425,28494,
-28441,28442,28455,28440,28475,28434,28397,28426,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,28470,28531,28409,28398,28461,28480,
-28464,28476,28469,28395,28423,28430,28483,28421,28413,28406,28473,28444,28412,
-28474,28447,28429,28446,28424,28449,29063,29072,29065,29056,29061,29058,29071,
-29051,29062,29057,29079,29252,29267,29335,29333,29331,29507,29517,29521,29516,
-29794,29811,29809,29813,29810,29799,29806,29952,29954,29955,30077,30096,30230,
-30216,30220,30229,30225,30218,30228,30392,30593,30588,30597,30594,30574,30592,
-30575,30590,30595,30898,30890,30900,30893,30888,30846,30891,30878,30885,30880,
-30892,30882,30884,31128,31114,31115,31126,31125,31124,31123,31127,31112,31122,
-31120,31275,31306,31280,31279,31272,31270,31400,31403,31404,31470,31624,31644,
-31626,31633,31632,31638,31629,31628,31643,31630,31621,31640,21124,31641,31652,
-31618,31931,31935,31932,31930,32167,32183,32194,32163,32170,32193,32192,32197,
-32157,32206,32196,32198,32203,32204,32175,32185,32150,32188,32159,32166,32174,
-32169,32161,32201,32627,32738,32739,32741,32734,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,32804,32861,32860,33161,33158,33155,
-33159,33165,33164,33163,33301,33943,33956,33953,33951,33978,33998,33986,33964,
-33966,33963,33977,33972,33985,33997,33962,33946,33969,34000,33949,33959,33979,
-33954,33940,33991,33996,33947,33961,33967,33960,34006,33944,33974,33999,33952,
-34007,34004,34002,34011,33968,33937,34401,34611,34595,34600,34667,34624,34606,
-34590,34593,34585,34587,34627,34604,34625,34622,34630,34592,34610,34602,34605,
-34620,34578,34618,34609,34613,34626,34598,34599,34616,34596,34586,34608,34577,
-35063,35047,35057,35058,35066,35070,35054,35068,35062,35067,35056,35052,35051,
-35229,35233,35231,35230,35305,35307,35304,35499,35481,35467,35474,35471,35478,
-35901,35944,35945,36053,36047,36055,36246,36361,36354,36351,36365,36349,36362,
-36355,36359,36358,36357,36350,36352,36356,36624,36625,36622,36621,37155,37148,
-37152,37154,37151,37149,37146,37156,37153,37147,37242,37234,37241,37235,37541,
-37540,37494,37531,37498,37536,37524,37546,37517,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,37542,37530,37547,37497,37527,37503,
-37539,37614,37518,37506,37525,37538,37501,37512,37537,37514,37510,37516,37529,
-37543,37502,37511,37545,37533,37515,37421,38558,38561,38655,38744,38781,38778,
-38782,38787,38784,38786,38779,38788,38785,38783,38862,38861,38934,39085,39086,
-39170,39168,39175,39325,39324,39363,39353,39355,39354,39362,39357,39367,39601,
-39651,39655,39742,39743,39776,39777,39775,40177,40178,40181,40615,20735,20739,
-20784,20728,20742,20743,20726,20734,20747,20748,20733,20746,21131,21132,21233,
-21231,22088,22082,22092,22069,22081,22090,22089,22086,22104,22106,22080,22067,
-22077,22060,22078,22072,22058,22074,22298,22699,22685,22705,22688,22691,22703,
-22700,22693,22689,22783,23295,23284,23293,23287,23286,23299,23288,23298,23289,
-23297,23303,23301,23311,23655,23961,23959,23967,23954,23970,23955,23957,23968,
-23964,23969,23962,23966,24169,24157,24160,24156,32243,24283,24286,24289,24393,
-24498,24971,24963,24953,25009,25008,24994,24969,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,24987,24979,25007,25005,24991,24978,
-25002,24993,24973,24934,25011,25133,25710,25712,25750,25760,25733,25751,25756,
-25743,25739,25738,25740,25763,25759,25704,25777,25752,25974,25978,25977,25979,
-26034,26035,26293,26288,26281,26290,26295,26282,26287,27136,27142,27159,27109,
-27128,27157,27121,27108,27168,27135,27116,27106,27163,27165,27134,27175,27122,
-27118,27156,27127,27111,27200,27144,27110,27131,27149,27132,27115,27145,27140,
-27160,27173,27151,27126,27174,27143,27124,27158,27473,27557,27555,27554,27558,
-27649,27648,27647,27650,28481,28454,28542,28551,28614,28562,28557,28553,28556,
-28514,28495,28549,28506,28566,28534,28524,28546,28501,28530,28498,28496,28503,
-28564,28563,28509,28416,28513,28523,28541,28519,28560,28499,28555,28521,28543,
-28565,28515,28535,28522,28539,29106,29103,29083,29104,29088,29082,29097,29109,
-29085,29093,29086,29092,29089,29098,29084,29095,29107,29336,29338,29528,29522,
-29534,29535,29536,29533,29531,29537,29530,29529,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,29538,29831,29833,29834,29830,29825,
-29821,29829,29832,29820,29817,29960,29959,30078,30245,30238,30233,30237,30236,
-30243,30234,30248,30235,30364,30365,30366,30363,30605,30607,30601,30600,30925,
-30907,30927,30924,30929,30926,30932,30920,30915,30916,30921,31130,31137,31136,
-31132,31138,31131,27510,31289,31410,31412,31411,31671,31691,31678,31660,31694,
-31663,31673,31690,31669,31941,31944,31948,31947,32247,32219,32234,32231,32215,
-32225,32259,32250,32230,32246,32241,32240,32238,32223,32630,32684,32688,32685,
-32749,32747,32746,32748,32742,32744,32868,32871,33187,33183,33182,33173,33186,
-33177,33175,33302,33359,33363,33362,33360,33358,33361,34084,34107,34063,34048,
-34089,34062,34057,34061,34079,34058,34087,34076,34043,34091,34042,34056,34060,
-34036,34090,34034,34069,34039,34027,34035,34044,34066,34026,34025,34070,34046,
-34088,34077,34094,34050,34045,34078,34038,34097,34086,34023,34024,34032,34031,
-34041,34072,34080,34096,34059,34073,34095,34402,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,34646,34659,34660,34679,34785,34675,
-34648,34644,34651,34642,34657,34650,34641,34654,34669,34666,34640,34638,34655,
-34653,34671,34668,34682,34670,34652,34661,34639,34683,34677,34658,34663,34665,
-34906,35077,35084,35092,35083,35095,35096,35097,35078,35094,35089,35086,35081,
-35234,35236,35235,35309,35312,35308,35535,35526,35512,35539,35537,35540,35541,
-35515,35543,35518,35520,35525,35544,35523,35514,35517,35545,35902,35917,35983,
-36069,36063,36057,36072,36058,36061,36071,36256,36252,36257,36251,36384,36387,
-36389,36388,36398,36373,36379,36374,36369,36377,36390,36391,36372,36370,36376,
-36371,36380,36375,36378,36652,36644,36632,36634,36640,36643,36630,36631,36979,
-36976,36975,36967,36971,37167,37163,37161,37162,37170,37158,37166,37253,37254,
-37258,37249,37250,37252,37248,37584,37571,37572,37568,37593,37558,37583,37617,
-37599,37592,37609,37591,37597,37580,37615,37570,37608,37578,37576,37582,37606,
-37581,37589,37577,37600,37598,37607,37585,37587,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,37557,37601,37574,37556,38268,38316,
-38315,38318,38320,38564,38562,38611,38661,38664,38658,38746,38794,38798,38792,
-38864,38863,38942,38941,38950,38953,38952,38944,38939,38951,39090,39176,39162,
-39185,39188,39190,39191,39189,39388,39373,39375,39379,39380,39374,39369,39382,
-39384,39371,39383,39372,39603,39660,39659,39667,39666,39665,39750,39747,39783,
-39796,39793,39782,39798,39797,39792,39784,39780,39788,40188,40186,40189,40191,
-40183,40199,40192,40185,40187,40200,40197,40196,40579,40659,40719,40720,20764,
-20755,20759,20762,20753,20958,21300,21473,22128,22112,22126,22131,22118,22115,
-22125,22130,22110,22135,22300,22299,22728,22717,22729,22719,22714,22722,22716,
-22726,23319,23321,23323,23329,23316,23315,23312,23318,23336,23322,23328,23326,
-23535,23980,23985,23977,23975,23989,23984,23982,23978,23976,23986,23981,23983,
-23988,24167,24168,24166,24175,24297,24295,24294,24296,24293,24395,24508,24989,
-25000,24982,25029,25012,25030,25025,25036,25018,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,25023,25016,24972,25815,25814,25808,
-25807,25801,25789,25737,25795,25819,25843,25817,25907,25983,25980,26018,26312,
-26302,26304,26314,26315,26319,26301,26299,26298,26316,26403,27188,27238,27209,
-27239,27186,27240,27198,27229,27245,27254,27227,27217,27176,27226,27195,27199,
-27201,27242,27236,27216,27215,27220,27247,27241,27232,27196,27230,27222,27221,
-27213,27214,27206,27477,27476,27478,27559,27562,27563,27592,27591,27652,27651,
-27654,28589,28619,28579,28615,28604,28622,28616,28510,28612,28605,28574,28618,
-28584,28676,28581,28590,28602,28588,28586,28623,28607,28600,28578,28617,28587,
-28621,28591,28594,28592,29125,29122,29119,29112,29142,29120,29121,29131,29140,
-29130,29127,29135,29117,29144,29116,29126,29146,29147,29341,29342,29545,29542,
-29543,29548,29541,29547,29546,29823,29850,29856,29844,29842,29845,29857,29963,
-30080,30255,30253,30257,30269,30259,30268,30261,30258,30256,30395,30438,30618,
-30621,30625,30620,30619,30626,30627,30613,30617,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,30615,30941,30953,30949,30954,30942,
-30947,30939,30945,30946,30957,30943,30944,31140,31300,31304,31303,31414,31416,
-31413,31409,31415,31710,31715,31719,31709,31701,31717,31706,31720,31737,31700,
-31722,31714,31708,31723,31704,31711,31954,31956,31959,31952,31953,32274,32289,
-32279,32268,32287,32288,32275,32270,32284,32277,32282,32290,32267,32271,32278,
-32269,32276,32293,32292,32579,32635,32636,32634,32689,32751,32810,32809,32876,
-33201,33190,33198,33209,33205,33195,33200,33196,33204,33202,33207,33191,33266,
-33365,33366,33367,34134,34117,34155,34125,34131,34145,34136,34112,34118,34148,
-34113,34146,34116,34129,34119,34147,34110,34139,34161,34126,34158,34165,34133,
-34151,34144,34188,34150,34141,34132,34149,34156,34403,34405,34404,34715,34703,
-34711,34707,34706,34696,34689,34710,34712,34681,34695,34723,34693,34704,34705,
-34717,34692,34708,34716,34714,34697,35102,35110,35120,35117,35118,35111,35121,
-35106,35113,35107,35119,35116,35103,35313,35552,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,35554,35570,35572,35573,35549,35604,
-35556,35551,35568,35528,35550,35553,35560,35583,35567,35579,35985,35986,35984,
-36085,36078,36081,36080,36083,36204,36206,36261,36263,36403,36414,36408,36416,
-36421,36406,36412,36413,36417,36400,36415,36541,36662,36654,36661,36658,36665,
-36663,36660,36982,36985,36987,36998,37114,37171,37173,37174,37267,37264,37265,
-37261,37263,37671,37662,37640,37663,37638,37647,37754,37688,37692,37659,37667,
-37650,37633,37702,37677,37646,37645,37579,37661,37626,37669,37651,37625,37623,
-37684,37634,37668,37631,37673,37689,37685,37674,37652,37644,37643,37630,37641,
-37632,37627,37654,38332,38349,38334,38329,38330,38326,38335,38325,38333,38569,
-38612,38667,38674,38672,38809,38807,38804,38896,38904,38965,38959,38962,39204,
-39199,39207,39209,39326,39406,39404,39397,39396,39408,39395,39402,39401,39399,
-39609,39615,39604,39611,39670,39674,39673,39671,39731,39808,39813,39815,39804,
-39806,39803,39810,39827,39826,39824,39802,39829,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,39805,39816,40229,40215,40224,40222,
-40212,40233,40221,40216,40226,40208,40217,40223,40584,40582,40583,40622,40621,
-40661,40662,40698,40722,40765,20774,20773,20770,20772,20768,20777,21236,22163,
-22156,22157,22150,22148,22147,22142,22146,22143,22145,22742,22740,22735,22738,
-23341,23333,23346,23331,23340,23335,23334,23343,23342,23419,23537,23538,23991,
-24172,24170,24510,24507,25027,25013,25020,25063,25056,25061,25060,25064,25054,
-25839,25833,25827,25835,25828,25832,25985,25984,26038,26074,26322,27277,27286,
-27265,27301,27273,27295,27291,27297,27294,27271,27283,27278,27285,27267,27304,
-27300,27281,27263,27302,27290,27269,27276,27282,27483,27565,27657,28620,28585,
-28660,28628,28643,28636,28653,28647,28646,28638,28658,28637,28642,28648,29153,
-29169,29160,29170,29156,29168,29154,29555,29550,29551,29847,29874,29867,29840,
-29866,29869,29873,29861,29871,29968,29969,29970,29967,30084,30275,30280,30281,
-30279,30372,30441,30645,30635,30642,30647,30646,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,30644,30641,30632,30704,30963,30973,
-30978,30971,30972,30962,30981,30969,30974,30980,31147,31144,31324,31323,31318,
-31320,31316,31322,31422,31424,31425,31749,31759,31730,31744,31743,31739,31758,
-31732,31755,31731,31746,31753,31747,31745,31736,31741,31750,31728,31729,31760,
-31754,31976,32301,32316,32322,32307,38984,32312,32298,32329,32320,32327,32297,
-32332,32304,32315,32310,32324,32314,32581,32639,32638,32637,32756,32754,32812,
-33211,33220,33228,33226,33221,33223,33212,33257,33371,33370,33372,34179,34176,
-34191,34215,34197,34208,34187,34211,34171,34212,34202,34206,34167,34172,34185,
-34209,34170,34168,34135,34190,34198,34182,34189,34201,34205,34177,34210,34178,
-34184,34181,34169,34166,34200,34192,34207,34408,34750,34730,34733,34757,34736,
-34732,34745,34741,34748,34734,34761,34755,34754,34764,34743,34735,34756,34762,
-34740,34742,34751,34744,34749,34782,34738,35125,35123,35132,35134,35137,35154,
-35127,35138,35245,35247,35246,35314,35315,35614,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,35608,35606,35601,35589,35595,35618,
-35599,35602,35605,35591,35597,35592,35590,35612,35603,35610,35919,35952,35954,
-35953,35951,35989,35988,36089,36207,36430,36429,36435,36432,36428,36423,36675,
-36672,36997,36990,37176,37274,37282,37275,37273,37279,37281,37277,37280,37793,
-37763,37807,37732,37718,37703,37756,37720,37724,37750,37705,37712,37713,37728,
-37741,37775,37708,37738,37753,37719,37717,37714,37711,37745,37751,37755,37729,
-37726,37731,37735,37760,37710,37721,38343,38336,38345,38339,38341,38327,38574,
-38576,38572,38688,38687,38680,38685,38681,38810,38817,38812,38814,38813,38869,
-38868,38897,38977,38980,38986,38985,38981,38979,39205,39211,39212,39210,39219,
-39218,39215,39213,39217,39216,39320,39331,39329,39426,39418,39412,39415,39417,
-39416,39414,39419,39421,39422,39420,39427,39614,39678,39677,39681,39676,39752,
-39834,39848,39838,39835,39846,39841,39845,39844,39814,39842,39840,39855,40243,
-40257,40295,40246,40238,40239,40241,40248,40240,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,40261,40258,40259,40254,40247,40256,
-40253,32757,40237,40586,40585,40589,40624,40648,40666,40699,40703,40740,40739,
-40738,40788,40864,20785,20781,20782,22168,22172,22167,22170,22173,22169,22896,
-23356,23657,23658,24000,24173,24174,25048,25055,25069,25070,25073,25066,25072,
-25067,25046,25065,25855,25860,25853,25848,25857,25859,25852,26004,26075,26330,
-26331,26328,27333,27321,27325,27361,27334,27322,27318,27319,27335,27316,27309,
-27486,27593,27659,28679,28684,28685,28673,28677,28692,28686,28671,28672,28667,
-28710,28668,28663,28682,29185,29183,29177,29187,29181,29558,29880,29888,29877,
-29889,29886,29878,29883,29890,29972,29971,30300,30308,30297,30288,30291,30295,
-30298,30374,30397,30444,30658,30650,30975,30988,30995,30996,30985,30992,30994,
-30993,31149,31148,31327,31772,31785,31769,31776,31775,31789,31773,31782,31784,
-31778,31781,31792,32348,32336,32342,32355,32344,32354,32351,32337,32352,32343,
-32339,32693,32691,32759,32760,32885,33233,33234,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,33232,33375,33374,34228,34246,34240,
-34243,34242,34227,34229,34237,34247,34244,34239,34251,34254,34248,34245,34225,
-34230,34258,34340,34232,34231,34238,34409,34791,34790,34786,34779,34795,34794,
-34789,34783,34803,34788,34772,34780,34771,34797,34776,34787,34724,34775,34777,
-34817,34804,34792,34781,35155,35147,35151,35148,35142,35152,35153,35145,35626,
-35623,35619,35635,35632,35637,35655,35631,35644,35646,35633,35621,35639,35622,
-35638,35630,35620,35643,35645,35642,35906,35957,35993,35992,35991,36094,36100,
-36098,36096,36444,36450,36448,36439,36438,36446,36453,36455,36443,36442,36449,
-36445,36457,36436,36678,36679,36680,36683,37160,37178,37179,37182,37288,37285,
-37287,37295,37290,37813,37772,37778,37815,37787,37789,37769,37799,37774,37802,
-37790,37798,37781,37768,37785,37791,37773,37809,37777,37810,37796,37800,37812,
-37795,37797,38354,38355,38353,38579,38615,38618,24002,38623,38616,38621,38691,
-38690,38693,38828,38830,38824,38827,38820,38826,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,38818,38821,38871,38873,38870,38872,
-38906,38992,38993,38994,39096,39233,39228,39226,39439,39435,39433,39437,39428,
-39441,39434,39429,39431,39430,39616,39644,39688,39684,39685,39721,39733,39754,
-39756,39755,39879,39878,39875,39871,39873,39861,39864,39891,39862,39876,39865,
-39869,40284,40275,40271,40266,40283,40267,40281,40278,40268,40279,40274,40276,
-40287,40280,40282,40590,40588,40671,40705,40704,40726,40741,40747,40746,40745,
-40744,40780,40789,20788,20789,21142,21239,21428,22187,22189,22182,22183,22186,
-22188,22746,22749,22747,22802,23357,23358,23359,24003,24176,24511,25083,25863,
-25872,25869,25865,25868,25870,25988,26078,26077,26334,27367,27360,27340,27345,
-27353,27339,27359,27356,27344,27371,27343,27341,27358,27488,27568,27660,28697,
-28711,28704,28694,28715,28705,28706,28707,28713,28695,28708,28700,28714,29196,
-29194,29191,29186,29189,29349,29350,29348,29347,29345,29899,29893,29879,29891,
-29974,30304,30665,30666,30660,30705,31005,31003,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,31009,31004,30999,31006,31152,31335,
-31336,31795,31804,31801,31788,31803,31980,31978,32374,32373,32376,32368,32375,
-32367,32378,32370,32372,32360,32587,32586,32643,32646,32695,32765,32766,32888,
-33239,33237,33380,33377,33379,34283,34289,34285,34265,34273,34280,34266,34263,
-34284,34290,34296,34264,34271,34275,34268,34257,34288,34278,34287,34270,34274,
-34816,34810,34819,34806,34807,34825,34828,34827,34822,34812,34824,34815,34826,
-34818,35170,35162,35163,35159,35169,35164,35160,35165,35161,35208,35255,35254,
-35318,35664,35656,35658,35648,35667,35670,35668,35659,35669,35665,35650,35666,
-35671,35907,35959,35958,35994,36102,36103,36105,36268,36266,36269,36267,36461,
-36472,36467,36458,36463,36475,36546,36690,36689,36687,36688,36691,36788,37184,
-37183,37296,37293,37854,37831,37839,37826,37850,37840,37881,37868,37836,37849,
-37801,37862,37834,37844,37870,37859,37845,37828,37838,37824,37842,37863,38269,
-38362,38363,38625,38697,38699,38700,38696,38694,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,38835,38839,38838,38877,38878,38879,
-39004,39001,39005,38999,39103,39101,39099,39102,39240,39239,39235,39334,39335,
-39450,39445,39461,39453,39460,39451,39458,39456,39463,39459,39454,39452,39444,
-39618,39691,39690,39694,39692,39735,39914,39915,39904,39902,39908,39910,39906,
-39920,39892,39895,39916,39900,39897,39909,39893,39905,39898,40311,40321,40330,
-40324,40328,40305,40320,40312,40326,40331,40332,40317,40299,40308,40309,40304,
-40297,40325,40307,40315,40322,40303,40313,40319,40327,40296,40596,40593,40640,
-40700,40749,40768,40769,40781,40790,40791,40792,21303,22194,22197,22195,22755,
-23365,24006,24007,24302,24303,24512,24513,25081,25879,25878,25877,25875,26079,
-26344,26339,26340,27379,27376,27370,27368,27385,27377,27374,27375,28732,28725,
-28719,28727,28724,28721,28738,28728,28735,28730,28729,28736,28731,28723,28737,
-29203,29204,29352,29565,29564,29882,30379,30378,30398,30445,30668,30670,30671,
-30669,30706,31013,31011,31015,31016,31012,31017,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,31154,31342,31340,31341,31479,31817,
-31816,31818,31815,31813,31982,32379,32382,32385,32384,32698,32767,32889,33243,
-33241,33291,33384,33385,34338,34303,34305,34302,34331,34304,34294,34308,34313,
-34309,34316,34301,34841,34832,34833,34839,34835,34838,35171,35174,35257,35319,
-35680,35690,35677,35688,35683,35685,35687,35693,36270,36486,36488,36484,36697,
-36694,36695,36693,36696,36698,37005,37187,37185,37303,37301,37298,37299,37899,
-37907,37883,37920,37903,37908,37886,37909,37904,37928,37913,37901,37877,37888,
-37879,37895,37902,37910,37906,37882,37897,37880,37898,37887,37884,37900,37878,
-37905,37894,38366,38368,38367,38702,38703,38841,38843,38909,38910,39008,39010,
-39011,39007,39105,39106,39248,39246,39257,39244,39243,39251,39474,39476,39473,
-39468,39466,39478,39465,39470,39480,39469,39623,39626,39622,39696,39698,39697,
-39947,39944,39927,39941,39954,39928,40000,39943,39950,39942,39959,39956,39945,
-40351,40345,40356,40349,40338,40344,40336,40347,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,40352,40340,40348,40362,40343,40353,
-40346,40354,40360,40350,40355,40383,40361,40342,40358,40359,40601,40603,40602,
-40677,40676,40679,40678,40752,40750,40795,40800,40798,40797,40793,40849,20794,
-20793,21144,21143,22211,22205,22206,23368,23367,24011,24015,24305,25085,25883,
-27394,27388,27395,27384,27392,28739,28740,28746,28744,28745,28741,28742,29213,
-29210,29209,29566,29975,30314,30672,31021,31025,31023,31828,31827,31986,32394,
-32391,32392,32395,32390,32397,32589,32699,32816,33245,34328,34346,34342,34335,
-34339,34332,34329,34343,34350,34337,34336,34345,34334,34341,34857,34845,34843,
-34848,34852,34844,34859,34890,35181,35177,35182,35179,35322,35705,35704,35653,
-35706,35707,36112,36116,36271,36494,36492,36702,36699,36701,37190,37188,37189,
-37305,37951,37947,37942,37929,37949,37948,37936,37945,37930,37943,37932,37952,
-37937,38373,38372,38371,38709,38714,38847,38881,39012,39113,39110,39104,39256,
-39254,39481,39485,39494,39492,39490,39489,39482,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,39487,39629,39701,39703,39704,39702,
-39738,39762,39979,39965,39964,39980,39971,39976,39977,39972,39969,40375,40374,
-40380,40385,40391,40394,40399,40382,40389,40387,40379,40373,40398,40377,40378,
-40364,40392,40369,40365,40396,40371,40397,40370,40570,40604,40683,40686,40685,
-40731,40728,40730,40753,40782,40805,40804,40850,20153,22214,22213,22219,22897,
-23371,23372,24021,24017,24306,25889,25888,25894,25890,27403,27400,27401,27661,
-28757,28758,28759,28754,29214,29215,29353,29567,29912,29909,29913,29911,30317,
-30381,31029,31156,31344,31345,31831,31836,31833,31835,31834,31988,31985,32401,
-32591,32647,33246,33387,34356,34357,34355,34348,34354,34358,34860,34856,34854,
-34858,34853,35185,35263,35262,35323,35710,35716,35714,35718,35717,35711,36117,
-36501,36500,36506,36498,36496,36502,36503,36704,36706,37191,37964,37968,37962,
-37963,37967,37959,37957,37960,37961,37958,38719,38883,39018,39017,39115,39252,
-39259,39502,39507,39508,39500,39503,39496,39498,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,39497,39506,39504,39632,39705,39723,
-39739,39766,39765,40006,40008,39999,40004,39993,39987,40001,39996,39991,39988,
-39986,39997,39990,40411,40402,40414,40410,40395,40400,40412,40401,40415,40425,
-40409,40408,40406,40437,40405,40413,40630,40688,40757,40755,40754,40770,40811,
-40853,40866,20797,21145,22760,22759,22898,23373,24024,34863,24399,25089,25091,
-25092,25897,25893,26006,26347,27409,27410,27407,27594,28763,28762,29218,29570,
-29569,29571,30320,30676,31847,31846,32405,33388,34362,34368,34361,34364,34353,
-34363,34366,34864,34866,34862,34867,35190,35188,35187,35326,35724,35726,35723,
-35720,35909,36121,36504,36708,36707,37308,37986,37973,37981,37975,37982,38852,
-38853,38912,39510,39513,39710,39711,39712,40018,40024,40016,40010,40013,40011,
-40021,40025,40012,40014,40443,40439,40431,40419,40427,40440,40420,40438,40417,
-40430,40422,40434,40432,40418,40428,40436,40435,40424,40429,40642,40656,40690,
-40691,40710,40732,40760,40759,40758,40771,40783,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,40817,40816,40814,40815,22227,22221,
-23374,23661,25901,26349,26350,27411,28767,28769,28765,28768,29219,29915,29925,
-30677,31032,31159,31158,31850,32407,32649,33389,34371,34872,34871,34869,34891,
-35732,35733,36510,36511,36512,36509,37310,37309,37314,37995,37992,37993,38629,
-38726,38723,38727,38855,38885,39518,39637,39769,40035,40039,40038,40034,40030,
-40032,40450,40446,40455,40451,40454,40453,40448,40449,40457,40447,40445,40452,
-40608,40734,40774,40820,40821,40822,22228,25902,26040,27416,27417,27415,27418,
-28770,29222,29354,30680,30681,31033,31849,31851,31990,32410,32408,32411,32409,
-33248,33249,34374,34375,34376,35193,35194,35196,35195,35327,35736,35737,36517,
-36516,36515,37998,37997,37999,38001,38003,38729,39026,39263,40040,40046,40045,
-40459,40461,40464,40463,40466,40465,40609,40693,40713,40775,40824,40827,40826,
-40825,22302,28774,31855,34876,36274,36518,37315,38004,38008,38006,38005,39520,
-40052,40051,40049,40053,40468,40467,40694,40714,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,40868,28776,28773,31991,34410,34878,
-34877,34879,35742,35996,36521,36553,38731,39027,39028,39116,39265,39339,39524,
-39526,39527,39716,40469,40471,40776,25095,27422,29223,34380,36520,38018,38016,
-38017,39529,39528,39726,40473,29225,34379,35743,38019,40057,40631,30325,39531,
-40058,40477,28777,28778,40612,40830,40777,40856,
-};
-
-static const struct dbcs_index big5_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__big5_decmap+0,64,254},{
-__big5_decmap+191,64,254},{__big5_decmap+382,64,191},{__big5_decmap+510,64,254
-},{__big5_decmap+701,64,254},{__big5_decmap+892,64,254},{__big5_decmap+1083,
-64,254},{__big5_decmap+1274,64,254},{__big5_decmap+1465,64,254},{__big5_decmap
-+1656,64,254},{__big5_decmap+1847,64,254},{__big5_decmap+2038,64,254},{
-__big5_decmap+2229,64,254},{__big5_decmap+2420,64,254},{__big5_decmap+2611,64,
-254},{__big5_decmap+2802,64,254},{__big5_decmap+2993,64,254},{__big5_decmap+
-3184,64,254},{__big5_decmap+3375,64,254},{__big5_decmap+3566,64,254},{
-__big5_decmap+3757,64,254},{__big5_decmap+3948,64,254},{__big5_decmap+4139,64,
-254},{__big5_decmap+4330,64,254},{__big5_decmap+4521,64,254},{__big5_decmap+
-4712,64,254},{__big5_decmap+4903,64,254},{__big5_decmap+5094,64,254},{
-__big5_decmap+5285,64,254},{__big5_decmap+5476,64,254},{__big5_decmap+5667,64,
-254},{__big5_decmap+5858,64,254},{__big5_decmap+6049,64,254},{__big5_decmap+
-6240,64,254},{__big5_decmap+6431,64,254},{__big5_decmap+6622,64,254},{
-__big5_decmap+6813,64,254},{__big5_decmap+7004,64,254},{__big5_decmap+7195,64,
-252},{0,0,0},{__big5_decmap+7384,64,254},{__big5_decmap+7575,64,254},{
-__big5_decmap+7766,64,254},{__big5_decmap+7957,64,254},{__big5_decmap+8148,64,
-254},{__big5_decmap+8339,64,254},{__big5_decmap+8530,64,254},{__big5_decmap+
-8721,64,254},{__big5_decmap+8912,64,254},{__big5_decmap+9103,64,254},{
-__big5_decmap+9294,64,254},{__big5_decmap+9485,64,254},{__big5_decmap+9676,64,
-254},{__big5_decmap+9867,64,254},{__big5_decmap+10058,64,254},{__big5_decmap+
-10249,64,254},{__big5_decmap+10440,64,254},{__big5_decmap+10631,64,254},{
-__big5_decmap+10822,64,254},{__big5_decmap+11013,64,254},{__big5_decmap+11204,
-64,254},{__big5_decmap+11395,64,254},{__big5_decmap+11586,64,254},{
-__big5_decmap+11777,64,254},{__big5_decmap+11968,64,254},{__big5_decmap+12159,
-64,254},{__big5_decmap+12350,64,254},{__big5_decmap+12541,64,254},{
-__big5_decmap+12732,64,254},{__big5_decmap+12923,64,254},{__big5_decmap+13114,
-64,254},{__big5_decmap+13305,64,254},{__big5_decmap+13496,64,254},{
-__big5_decmap+13687,64,254},{__big5_decmap+13878,64,254},{__big5_decmap+14069,
-64,254},{__big5_decmap+14260,64,254},{__big5_decmap+14451,64,254},{
-__big5_decmap+14642,64,254},{__big5_decmap+14833,64,254},{__big5_decmap+15024,
-64,254},{__big5_decmap+15215,64,254},{__big5_decmap+15406,64,254},{
-__big5_decmap+15597,64,254},{__big5_decmap+15788,64,254},{__big5_decmap+15979,
-64,254},{__big5_decmap+16170,64,254},{__big5_decmap+16361,64,254},{
-__big5_decmap+16552,64,213},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-};
-
-static const DBCHAR __big5_encmap[21764] = {
-41542,41543,N,41540,N,41393,N,N,N,N,N,N,N,N,41560,41427,N,N,N,N,N,41296,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41425,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41426,41918,N,41916,41917,41919,
-N,41413,N,N,N,N,N,N,N,N,N,N,N,41915,41796,41797,41798,41799,41800,41801,41802,
-41803,41804,41805,41806,41807,41808,41809,41810,41811,41812,N,41813,41814,
-41815,41816,41817,41818,41819,N,N,N,N,N,N,N,41820,41821,41822,41823,41824,
-41825,41826,41827,41828,41829,41830,41831,41832,41833,41834,41835,41836,N,
-41837,41838,41839,41840,41841,41842,41843,51123,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,51121,51122,51124,51125,51126,51127,51128,51129,51130,N,N,N,N,N,N,51131,
-51132,51133,51134,51135,51136,51137,51138,51139,51140,51141,51142,51143,51144,
-51145,51146,51147,51148,51149,51151,51152,51153,51154,51155,51156,51157,51158,
-51159,51160,51161,51162,51163,51164,51165,51166,51167,51168,51169,51170,51171,
-51172,51173,51174,51175,51176,N,51150,41302,41304,N,N,N,41381,41382,N,N,41383,
-41384,N,N,N,N,41285,N,N,41292,41291,N,N,N,N,N,N,N,N,N,N,N,41388,N,N,41387,N,N,
-N,N,N,41392,N,N,41410,41546,N,41409,N,N,N,41547,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41657,41658,
-41659,41660,41661,41662,41663,41664,41665,41666,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41462,41460,41463,41461,N,N,
-41464,41465,41467,41466,41428,N,N,N,41435,41448,41447,N,N,41469,N,41468,N,N,N,
-41444,41445,41452,N,N,41453,N,N,N,N,N,41455,41454,N,N,N,N,N,N,41443,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41436,N,N,N,N,N,N,N,N,N,N,N,N,N,41434,41437,N,
-N,N,N,41432,41433,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41446,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41449,51177,51178,51179,51180,51181,
-51182,51183,51184,51185,51186,N,N,N,N,N,N,N,N,N,N,51187,51188,51189,51190,
-51191,51192,51193,51194,51195,51196,41591,N,41592,N,N,N,N,N,N,N,N,N,41594,N,N,
-N,41595,N,N,N,41596,N,N,N,41597,N,N,N,41589,N,N,N,N,N,N,N,41588,N,N,N,N,N,N,N,
-41587,N,N,N,N,N,N,N,41586,N,N,N,N,N,N,N,41585,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,41636,N,N,N,N,N,N,N,N,N,N,N,N,N,41637,N,N,41639,N,N,N,N,N,N,N,N,41638,N,
-N,41598,41633,41635,41634,41644,41645,41646,41306,N,N,N,N,N,N,N,N,N,N,N,N,
-41570,41571,41572,41573,41574,41575,41576,41577,41584,41583,41582,41581,41580,
-41579,41578,N,N,N,N,41590,41593,N,N,N,N,N,N,N,N,N,N,41405,41404,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,41398,41397,N,N,N,N,N,N,N,N,41407,41406,N,N,N,N,N,N,N,N,
-41403,41402,N,N,N,41395,N,N,41399,41396,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-41640,41641,41643,41642,41401,41400,N,N,41459,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-41456,41458,41457,41280,41282,41283,41394,N,50852,N,N,41329,41330,41325,41326,
-41333,41334,41337,41338,41321,41322,41541,N,41317,41318,N,N,N,N,N,N,N,41385,
-41386,N,N,41667,41668,41669,41670,41671,41672,41673,41674,41675,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,50853,50854,50855,50856,50857,50858,50859,
-50860,50861,50862,50863,50864,50865,50866,50867,50868,50869,50870,50871,50872,
-50873,50874,50875,50876,50877,50878,50879,50880,50881,50882,50883,50884,50885,
-50886,50887,50888,50889,50890,50891,50892,50893,50894,50895,50896,50897,50898,
-50899,50900,50901,50902,50903,50904,50905,50906,50907,50908,50909,50910,50911,
-50912,50913,50914,50915,50916,50917,50918,50919,50920,50921,50922,50923,50924,
-50925,50926,50927,50928,50929,50930,50931,50932,50933,50934,50935,N,N,N,N,N,N,
-N,N,N,50850,50851,N,N,50936,50937,50938,50939,50940,50941,50942,51008,51009,
-51010,51011,51012,51013,51014,51015,51016,51017,51018,51019,51020,51021,51022,
-51023,51024,51025,51026,51027,51028,51029,51030,51031,51032,51033,51034,51035,
-51036,51037,51038,51039,51040,51041,51042,51043,51044,51045,51046,51047,51048,
-51049,51050,51051,51052,51053,51054,51055,51056,51057,51058,51059,51060,51061,
-51062,51063,51064,51065,51066,51067,51068,51069,51070,51105,51106,51107,51108,
-51109,51110,51111,51112,51113,51114,51115,51116,51117,51118,51119,51120,N,N,N,
-N,N,N,N,50849,41844,41845,41846,41847,41848,41849,41850,41851,41852,41853,
-41854,41889,41890,41891,41892,41893,41894,41895,41896,41897,41898,41899,41900,
-41901,41902,41903,41904,41905,41906,41907,41908,41909,41910,41911,41912,41913,
-41914,41408,41557,41558,N,N,N,N,N,N,N,N,N,N,N,N,41552,41553,41554,N,N,41556,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41559,N,N,N,
-N,N,N,N,N,N,41555,N,N,41451,41450,N,N,41551,42048,42050,N,42051,N,N,N,51525,
-42070,42068,42071,42069,51526,42147,51535,51533,42146,42145,N,N,42306,42305,
-42304,N,42307,42238,N,N,N,N,42464,42465,N,N,N,N,N,N,43203,N,N,N,N,42072,N,
-42148,51536,N,42149,51555,42730,52145,N,N,N,N,42073,42150,N,42308,51556,N,N,N,
-N,N,51520,42052,N,42075,N,51527,42076,N,N,42151,N,42309,42311,42310,N,N,42466,
-42467,N,N,43204,N,44476,42049,N,N,51521,42053,42078,42077,N,N,N,N,N,N,N,N,N,
-42468,N,N,N,N,N,N,N,N,N,43205,N,N,N,N,N,N,N,N,N,N,45230,54347,N,N,46787,56497,
-56498,N,42054,N,42153,N,N,43206,42055,51528,42079,N,N,42154,42156,51537,42157,
-42155,N,N,N,42469,N,43207,N,N,43208,43845,N,42080,42158,N,42470,42472,42471,N,
-42731,N,N,43209,43210,43846,43847,N,N,N,N,44477,N,N,56499,N,N,63190,42056,N,N,
-N,N,N,42160,42159,51538,42161,42167,N,42162,42163,51540,51539,42165,42166,N,
-42164,N,N,N,N,N,N,42314,42315,42316,42317,42313,42320,51562,N,51558,51561,
-42321,42337,N,51560,N,42318,42319,42312,N,N,51557,51559,N,N,N,N,N,N,42485,
-51632,42482,42486,51642,51630,42483,51634,N,N,N,42484,N,42487,N,42473,51633,
-42488,51637,N,51641,51638,N,N,51635,42474,42476,42489,N,42478,51627,42481,
-42479,42480,51643,51640,51631,42477,N,N,51628,42475,N,N,N,51636,N,N,N,N,51639,
-N,N,N,N,N,N,N,N,N,51629,51814,N,42818,42740,N,N,51815,42737,N,42820,N,42745,N,
-42744,51803,42748,42743,51808,51816,N,51812,N,42746,N,N,42749,42734,42823,
-51805,N,N,52157,42732,42819,42733,42741,42742,51810,51806,42747,42739,51802,
-42735,51813,42821,42824,42738,42816,42822,42736,51811,42817,51817,51804,42750,
-51807,N,N,51809,N,43224,52159,52171,43216,N,52172,43211,43221,N,N,43214,52153,
-43222,52152,52156,52163,52161,43230,43225,52147,52149,43227,43215,52150,52162,
-52169,43220,52155,52148,43219,52151,43223,52154,N,43218,N,43213,N,43228,52164,
-43229,52168,N,52166,52170,43226,52158,52146,N,52160,43217,52165,43212,52167,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,43862,43850,N,N,52704,52712,N,43849,43857,43869,N,
-52718,52716,52711,N,N,N,43851,52717,52707,43865,43856,43864,52702,N,52714,N,
-52705,43860,52706,N,52701,43867,43854,43863,43853,N,52703,52708,N,52715,43861,
-43858,52710,43866,52713,52709,43855,43868,43859,43852,43848,N,N,N,N,N,N,N,N,N,
-N,52719,N,44503,44481,N,44497,N,44502,53456,53455,53460,53461,44484,N,44493,N,
-N,N,44506,44494,N,N,N,N,53449,44487,53450,N,44508,N,44499,44478,44479,53469,
-45247,N,44492,44491,53451,44495,54363,44486,53462,44501,44500,44490,53454,
-53463,N,53448,44489,53464,44498,53452,44480,N,44483,44482,53465,44496,44485,
-44505,44507,53459,44504,N,53467,53453,53468,N,53457,N,53466,N,53458,N,N,N,N,
-44488,N,N,N,54371,54359,N,45235,N,54364,54370,45234,54357,45238,54361,54354,
-45236,54358,45241,45246,N,54375,N,54353,N,45242,N,54374,N,N,45237,54360,45233,
-54355,54351,54365,54352,54350,54362,54368,54369,45239,N,N,55387,54366,54349,
-54367,N,45249,54372,45248,54348,N,54356,54373,45244,45243,45240,45245,N,N,
-45231,N,N,45232,N,N,46024,N,55390,55383,N,46021,N,55391,N,N,N,55381,55384,
-46020,55385,N,N,46023,55389,N,55379,55378,46025,N,46026,46022,46027,55377,
-55388,55386,55380,N,N,N,46019,55382,N,N,N,N,N,N,N,N,46794,46788,56503,46797,
-56509,56512,46790,46791,56506,46789,56515,46795,56516,N,56511,46796,N,56500,
-46793,56501,N,56510,56508,N,56504,46792,56502,46798,56507,56514,56505,56513,N,
-N,47542,47539,N,47540,N,57593,57585,47538,47535,57586,N,N,47537,57589,N,57591,
-N,N,57598,N,N,57597,57592,47534,57584,47532,57587,47543,57590,N,57594,47536,
-47533,57596,57595,47541,N,57588,N,48120,58604,N,58601,48121,N,48119,N,58608,
-58605,58598,48118,N,48122,58599,48117,48125,58602,58603,48123,48124,58609,
-58606,58607,N,N,N,48810,59640,48807,59637,48809,48811,N,59638,48808,N,59639,N,
-59636,N,N,49270,60605,49271,60603,N,60604,60602,60601,N,N,60606,49269,N,N,
-61368,61369,N,58600,61367,49272,50015,61931,61932,N,50391,50392,62913,62912,
-50540,50539,63440,N,42057,42081,42169,N,42168,42323,42322,42492,42491,42493,
-42490,N,42826,42825,42827,N,N,N,N,43232,N,43231,43233,N,43870,N,41561,53470,
-41562,45250,41564,41563,55392,N,41565,47544,41566,N,42058,N,42170,42494,43234,
-N,42059,42173,42171,42172,N,N,42560,N,N,N,42828,43236,43235,43237,N,N,N,44509,
-N,N,N,48812,N,N,N,N,N,N,51534,N,42324,42325,N,N,42561,N,51818,N,43872,43871,
-53472,53471,45251,N,42174,51541,N,N,N,N,N,52173,N,43873,N,44512,N,44510,44511,
-N,N,N,N,48813,N,42326,N,N,N,42562,51644,N,N,N,N,42829,42830,N,51819,N,N,52174,
-43238,52175,N,N,N,N,N,53474,53475,44515,N,53476,N,53473,44516,44514,44513,
-53477,N,54376,N,N,N,55393,N,N,56517,57664,N,N,N,48126,48814,59641,N,42060,
-42074,N,N,N,N,N,N,N,N,N,N,N,N,N,N,45252,46029,N,47545,N,51522,42175,N,42329,
-42327,42328,N,N,43239,42061,42062,N,42082,N,N,42176,42177,42178,51646,42330,N,
-51563,N,42566,N,51647,42564,42565,51645,N,N,42567,42563,N,N,N,N,51820,43756,
-51821,N,N,51822,N,N,42832,42831,N,N,42835,42833,42834,N,N,N,43245,N,43244,
-52180,52177,52178,N,52176,43246,43242,43241,N,43243,43240,N,N,N,N,N,43247,N,
-43875,52720,N,52179,43880,N,52721,43876,43879,43878,43877,43874,N,N,N,53480,N,
-44519,53483,44517,N,N,N,53479,44520,44518,44521,53481,53482,N,53478,53484,N,N,
-N,N,N,N,46033,45253,54377,54379,54378,54380,45254,N,N,46030,N,46031,46032,N,
-46800,56519,N,56518,56520,56521,46801,N,46799,57665,57666,47547,47546,58202,N,
-N,48192,48193,48194,48196,58610,58611,48195,N,N,N,48815,N,48816,N,N,61933,
-62915,62914,63441,N,42063,N,N,N,42332,42331,N,N,42568,N,N,51648,N,N,42837,
-42838,42836,42839,51823,51824,N,N,N,N,N,N,N,N,N,N,N,N,43249,52181,N,43248,N,
-52722,43884,52723,43883,N,N,N,43881,N,43882,N,N,N,53485,N,N,N,N,45255,54382,N,
-45258,54381,45541,45257,45256,N,46036,N,46035,46034,46802,N,N,46805,46806,
-46804,N,46803,N,N,57667,N,57668,N,N,N,58613,48197,58612,N,48817,60607,49273,N,
-61934,50261,N,42083,42179,51542,N,42180,42181,42333,42334,N,42569,51825,52182,
-52183,N,43885,53486,45260,45259,55395,55394,N,N,42064,42182,42335,N,45261,
-51523,N,51564,42336,N,51650,42571,42570,51649,42840,N,N,N,N,N,N,44522,N,N,
-54383,N,46807,57669,47548,N,N,59642,N,N,62461,N,42183,N,N,52184,52724,45264,
-45262,45263,42065,N,42084,41677,42186,N,42185,42184,42339,42338,N,51565,51651,
-N,N,N,43253,43250,43252,43251,N,N,43886,N,N,46037,N,42066,N,42187,N,42341,
-42340,N,51826,N,N,43254,N,N,N,N,N,51543,N,42343,42342,42572,42573,51827,42841,
-N,42842,N,43255,43256,43257,N,43887,52725,N,N,44523,N,N,51524,N,42188,N,N,N,N,
-N,51652,N,N,N,51828,51829,N,N,52185,N,52186,N,52727,52726,52729,52728,43888,N,
-54384,44525,53487,44524,N,N,N,N,55396,46038,N,55397,N,N,N,N,57670,47549,N,N,N,
-N,48198,N,61935,N,N,N,N,51544,N,42344,N,N,N,N,N,N,N,45265,N,N,N,N,42067,42085,
-42190,42189,N,42191,N,N,N,N,N,N,43259,N,43258,43260,N,N,N,43889,N,N,N,44526,N,
-59643,49743,42086,42346,42361,42356,N,42351,42350,42357,42355,42348,42362,
-42349,42345,42360,42359,42358,42347,N,42354,N,N,42353,N,N,42363,42352,42579,N,
-42585,42581,N,42587,51653,42584,42574,42577,42580,42576,42583,42586,42575,
-42578,42582,42588,N,N,N,N,N,51838,51835,N,42855,51836,42843,42845,42869,42864,
-N,N,N,51877,51837,42847,42849,51876,42856,51832,42868,42870,42844,42861,N,
-51830,42867,N,42852,N,42862,42863,51831,42860,42858,N,42859,42865,51873,42846,
-N,42866,51875,42854,42851,N,51834,42850,51878,42853,N,42857,N,N,N,42848,51874,
-N,N,N,N,51833,N,N,N,N,N,N,N,N,N,N,N,52203,52202,43343,52205,52207,52196,52199,
-52206,43344,N,N,52193,52197,N,N,52201,52809,43339,52813,43261,52198,43262,
-43340,43333,43329,N,52194,43332,43337,43346,52195,52188,43331,52189,52191,N,
-43334,N,43336,52187,52192,N,N,43345,43341,52200,43347,N,43338,52190,43335,N,N,
-43330,43328,N,52204,N,43342,N,N,N,N,N,52808,52731,52811,N,N,52733,43896,43944,
-43892,43943,43901,43940,43890,52732,52803,43939,52815,43941,N,43897,N,N,52805,
-52802,43895,N,52730,43942,52810,43900,52812,43945,43891,43902,43899,52800,
-43937,52806,52807,43898,43938,43894,N,N,N,N,43893,52734,N,N,N,N,N,N,52804,N,N,
-N,N,N,N,N,52814,N,53572,44539,53489,N,53494,44532,44608,53492,44527,44537,
-44542,53499,N,44538,44541,N,N,53502,44533,53493,N,N,N,53570,53571,N,44535,
-53569,44531,44611,N,53496,44529,N,53574,53497,53501,44534,44610,53498,44540,
-53568,53575,54433,N,53573,44612,44528,53500,53491,N,44536,N,N,53490,N,N,53495,
-N,N,N,N,N,N,N,N,N,N,N,53488,44609,N,N,54391,N,45284,54439,45282,45279,54396,
-45275,54434,45286,54390,54395,54394,44530,45281,54437,N,54440,54387,N,46056,N,
-54441,45287,N,45273,45270,54398,45267,N,54438,N,45274,54442,N,54388,54436,
-45277,54389,54392,54397,N,N,45278,45276,45288,N,N,N,N,45283,N,45271,45522,N,
-45272,54393,45285,45280,54435,45269,N,N,N,45268,N,N,N,N,N,N,N,N,N,N,54385,
-54386,55402,N,N,N,46039,46042,55413,46062,55416,46040,55409,46046,46052,46525,
-N,N,46050,55406,46063,46043,46051,55414,56535,55419,55407,N,55398,55411,55405,
-46049,55417,N,N,46045,46065,46058,N,46047,46044,N,46055,N,55418,55404,55410,
-55412,55400,55415,46041,55399,N,46048,46064,46060,55401,46054,N,N,46061,46057,
-46053,N,55408,N,N,N,N,N,46059,N,N,N,56533,56529,N,56544,56522,56531,46821,
-46822,46814,56540,46824,56527,56526,56524,56542,46812,56536,56525,46815,56534,
-46810,56530,56537,56539,N,N,56543,46819,56523,46813,56528,N,46808,N,46820,
-56538,46816,46817,46823,46811,41567,46809,56532,N,N,N,N,N,46818,N,N,56541,N,N,
-N,47565,47560,N,57685,57681,N,57675,47554,47550,57684,47551,57678,57680,N,
-57683,N,47556,N,47563,47557,N,N,57673,47558,47559,57676,47564,N,57674,57679,
-47555,57672,47561,47553,N,N,N,47552,57677,57682,N,47562,N,N,N,N,N,N,N,57671,N,
-48205,58695,N,58692,N,48199,48211,48212,N,48202,58690,48204,58617,48210,N,
-58694,48201,58696,48200,N,58691,58693,48203,58689,58618,58615,N,N,55403,58621,
-N,58614,58620,58619,N,58616,N,48207,N,N,N,N,48206,N,N,N,48208,58622,48818,
-58688,N,N,N,59717,N,59645,N,48830,59714,48822,48826,59713,N,48825,48821,48824,
-48819,48829,59715,59646,48828,59644,48827,59716,59712,48209,N,48831,59718,
-48823,48820,N,N,N,N,60614,60616,49275,60617,60615,60613,60612,49277,60611,
-49278,N,N,N,N,60609,60610,49274,49313,49276,N,N,60608,N,49744,N,61372,61370,
-61375,61373,N,61371,61374,N,N,N,N,N,N,N,50016,61938,61939,50262,N,61940,61936,
-61941,61937,49745,N,N,N,62462,62529,50265,62528,50264,50263,N,N,N,N,50266,
-62917,62918,N,50394,50393,50395,62916,N,63192,63191,N,50541,50543,50542,63193,
-50632,63654,N,N,N,50673,N,63653,63726,N,N,51529,N,N,42365,42364,N,42591,42590,
-51655,42589,51654,N,N,42873,51881,N,51880,N,N,42871,42874,N,N,51879,N,42872,N,
-N,N,N,N,N,52208,N,52209,43348,N,N,N,N,43946,53576,53577,44613,44614,N,N,54444,
-45289,45291,54443,45290,55420,46066,N,N,N,N,46825,46826,56545,N,47567,N,47566,
-N,58697,59720,59719,N,63851,42087,51545,N,51566,51567,N,N,N,N,42594,42598,
-51657,N,42596,42595,51656,42597,42593,N,N,42592,51658,N,N,N,N,N,N,42918,N,N,
-42915,N,42877,51882,N,N,N,51883,N,42913,N,51885,42875,51886,51884,42878,42914,
-42917,42916,42876,51887,N,N,N,N,N,N,N,N,N,N,N,N,N,N,43353,52222,N,43355,N,
-43354,N,52288,43352,43351,52213,N,52212,N,52210,52215,52214,52211,52220,52221,
-52218,52216,43350,N,N,N,52219,43356,52289,N,N,52217,N,43947,43349,N,N,N,N,N,N,
-N,43948,52820,N,N,52826,N,N,N,43954,52824,52830,N,52821,52825,52827,52829,
-52823,N,52822,52817,52818,43949,N,43951,43950,52819,52828,N,N,N,N,N,N,N,N,
-43953,N,N,N,N,N,N,52816,53587,N,53586,53591,53582,N,53585,53584,N,53588,N,
-53592,44615,44618,N,N,53583,53589,N,N,N,44617,53578,N,43952,54458,53590,N,
-53581,N,44616,53580,N,N,N,N,N,N,54449,N,N,45292,45296,54465,54447,54461,45297,
-54463,N,54469,N,54473,N,N,54464,54452,54460,N,54474,54472,54462,54457,54450,
-55462,54448,45301,54455,45302,45298,54445,54467,54453,54451,54470,45299,N,
-54476,45293,45295,54459,54454,44619,45294,54456,54471,54475,54466,N,54468,N,N,
-N,54446,N,N,N,N,55457,N,55466,55465,46074,55458,N,46075,46073,N,55460,46070,
-55464,N,55459,55461,55421,46068,N,55474,55473,55470,46067,46071,46072,53579,
-55467,46069,45300,55469,55422,55472,55471,N,55475,N,56559,N,55468,N,N,N,N,N,N,
-N,N,55463,56551,46836,46839,46834,56550,56554,56549,N,46828,46838,56546,46832,
-56553,N,46830,46829,56556,46831,56558,N,56555,46827,N,N,N,46837,56560,56548,
-56557,N,N,56547,N,N,46833,N,46835,N,56552,N,56561,N,N,57693,47568,57699,N,N,
-47573,57695,57702,57687,47575,47569,57692,48213,57691,57700,47570,N,47574,
-57690,57696,57701,57686,47572,57694,N,N,57698,57704,57688,57697,N,47571,57703,
-N,N,N,57689,N,N,N,48217,58699,48215,48214,58701,58706,N,58702,N,58705,48220,N,
-48805,48219,N,58698,58704,N,48218,58703,N,58700,N,48216,N,N,N,N,N,N,59725,N,
-59727,59722,48833,59724,N,48832,59726,N,N,48835,59728,48834,59721,59723,N,N,N,
-N,49317,60620,N,49316,60621,49315,60619,49314,60618,N,49747,49746,61942,61944,
-N,61943,50017,50018,N,N,50019,62530,50267,N,N,63443,63442,50674,N,42088,42192,
-N,N,42919,N,N,N,N,52831,N,N,N,N,46076,46077,N,56562,47576,57705,58707,51546,N,
-N,51888,N,N,N,N,N,52290,52832,53593,44620,N,N,61945,N,50396,42089,42366,51568,
-N,42599,42600,N,43357,N,N,N,45303,N,47578,N,47579,47577,N,42090,N,42193,42195,
-42194,51547,42196,42401,51569,N,42402,N,N,N,N,N,42601,42602,N,N,N,51659,N,
-42920,N,51889,N,N,N,43361,52291,N,43359,43360,43358,53594,N,N,N,43958,43957,
-43959,43956,N,52833,43362,43955,N,44621,44622,N,44623,N,54477,N,N,N,46078,
-55476,45304,N,N,N,N,46840,N,47581,47580,57706,N,48221,48836,N,61376,63194,
-63444,42091,42403,N,42404,51665,42604,42607,N,51663,51661,42606,51664,51666,
-51660,42609,42608,42605,42603,51662,N,N,N,N,42931,N,N,42928,51894,51897,51896,
-N,42922,42930,N,N,42927,51893,51891,42926,N,N,N,42921,42924,N,51892,51899,
-51895,42925,42929,42932,51890,51898,42923,N,N,N,N,N,43367,43375,N,52303,52296,
-43376,52307,52292,52299,N,N,43366,52293,43364,52300,52304,43363,N,52305,52298,
-N,52301,N,43378,43369,52308,52306,N,43374,43372,52297,43371,52295,52294,43370,
-43368,43377,43373,43365,N,52302,N,43961,N,43968,52847,43960,52839,52835,N,
-52851,52834,N,43963,52844,43966,43969,N,43964,52848,43967,N,44630,52854,52836,
-N,N,52838,52845,52849,52853,52850,52843,52846,N,N,52840,43971,52842,52841,
-52852,43962,52837,43970,N,43965,N,N,N,N,N,44636,53602,N,44635,N,N,53600,N,
-44624,N,44629,N,53599,53596,53601,44625,53595,N,44628,44626,N,53603,44627,
-44631,N,N,44632,N,44634,N,N,N,44633,N,N,N,53597,53598,N,N,N,N,53604,N,54484,
-45305,55490,54483,54502,N,N,45376,N,54500,N,45310,45306,54509,54493,54496,N,
-45379,54506,54498,45307,45380,N,54503,54501,N,N,54486,54507,54495,54490,N,
-54480,54508,54492,54479,N,45378,54497,54510,54494,54482,54487,54478,N,45377,N,
-54491,54488,45308,54481,N,54505,45309,N,54489,54485,N,N,54504,N,N,N,N,N,N,
-46144,55483,N,55480,55497,55485,55498,N,46146,N,N,N,55494,55491,N,N,N,N,N,
-55492,55495,55499,N,54499,55501,56647,N,46147,55502,55478,55488,N,55493,N,N,
-46145,46148,55500,55503,55482,55479,N,N,55481,N,N,55486,55484,46149,N,55496,N,
-N,55487,N,55489,55477,56570,56568,46914,46912,56643,56569,56644,56640,56567,
-56646,56566,56573,46846,46845,46844,56571,56641,46841,46913,N,56564,N,56574,
-56563,56572,46842,56642,56565,46843,56645,N,N,N,N,N,N,N,57710,47586,47585,
-47587,57722,57712,57718,57707,57721,57720,57724,57717,47582,57716,47588,N,
-57709,47583,N,57723,47584,57711,57714,57719,57713,57708,N,N,N,N,57715,58709,
-48225,58712,58711,58714,58716,N,48223,N,58710,N,58708,58717,58715,58713,N,
-58719,N,58718,48227,48222,N,48224,48226,N,N,58720,59735,N,N,59734,59733,N,
-59736,59729,N,59730,59738,59731,N,48837,59740,N,59739,59732,N,60625,49320,
-60623,60628,60627,59737,N,49319,N,60626,60622,60630,60629,49318,N,60624,N,
-48838,N,N,N,49748,N,N,N,61377,61946,61947,61948,50268,N,N,50269,N,62531,N,
-62920,62919,N,N,63195,63196,63445,63655,N,42092,42093,N,42094,42197,42405,
-51667,42610,42611,N,42935,42936,42934,42933,N,43379,N,N,52309,43381,43380,
-52310,N,N,N,43972,N,44637,53605,N,54512,N,45381,46151,54511,46150,N,47589,N,
-57725,48839,N,49321,60631,N,50270,N,50544,N,51570,N,42406,51571,42614,N,42612,
-42613,42615,N,42938,42937,N,51900,42939,N,N,51901,52311,N,52312,N,43382,43384,
-43386,43383,43387,43385,N,N,N,N,N,43976,43973,43975,43977,43974,53606,52855,N,
-N,N,53608,53607,44643,N,44639,N,N,44640,44642,44644,44641,N,44646,44645,N,N,N,
-N,N,45386,54514,54513,45385,N,45384,45383,45387,45382,N,N,55509,55506,46153,
-55505,55510,N,46155,55508,46152,46154,55507,N,56648,N,56649,56650,N,N,N,N,
-47590,47598,57726,47592,47596,57761,47597,47593,47594,47591,47595,48230,55504,
-48231,48229,N,48228,59741,48840,60632,60633,N,N,50020,50271,N,42095,N,42616,
-43978,N,53609,44647,N,N,45390,45389,45388,46156,46157,55511,47599,48841,42096,
-51548,42198,51572,N,N,51668,42617,N,N,N,43388,N,N,N,N,56651,N,N,42097,N,42199,
-51669,N,N,51902,N,51903,N,42940,N,N,N,55512,46158,N,56652,N,N,N,49322,42098,
-42152,42200,51573,42407,N,42944,42943,42941,42942,N,N,52313,43390,43425,52314,
-43389,N,N,43982,52856,43981,43979,43980,44650,44648,N,N,53611,44649,53610,N,
-44638,54515,N,N,45392,45393,N,N,45391,N,47600,57762,48232,48233,N,58721,49323,
-61378,61379,N,50397,63656,51531,42201,N,42099,N,51575,51574,N,N,N,N,42618,
-51671,51672,51670,N,51673,N,N,N,N,N,N,N,51911,N,51906,51908,51910,51907,42948,
-51904,N,51905,42945,42946,51909,51912,42947,51913,N,N,N,N,N,N,N,52328,N,52322,
-52317,43427,52325,52323,52316,52329,52332,52327,52320,43429,52326,43430,52321,
-52324,52315,52319,52331,43431,N,43432,N,52318,52330,43426,43428,N,N,N,N,N,N,N,
-N,N,N,N,N,N,52907,52900,52906,52899,52901,52861,52859,N,52908,52905,52857,N,
-43984,52903,52904,N,52902,52860,52858,43983,52898,52862,N,N,52897,52909,N,N,N,
-N,N,N,N,N,44655,N,44654,N,53612,44651,53614,N,44656,53615,N,N,44659,N,44657,
-53616,52910,53618,N,44653,N,44652,N,53613,53617,44658,N,N,N,N,45395,45394,N,N,
-N,54517,54521,54523,45396,54526,N,45400,54593,N,45402,N,45398,45406,N,45403,
-54519,45397,N,54518,54516,54595,54520,N,45399,54594,45404,54525,54524,45405,
-54522,45401,N,N,N,N,54596,N,54592,55527,55534,55523,46161,55519,55535,55513,
-55532,55530,55524,N,55533,55526,N,55518,55536,55516,55529,55514,N,55537,N,
-46162,N,55531,56655,55517,46159,N,55521,N,46160,55520,55525,N,N,55522,N,N,N,
-55528,N,N,N,N,56659,N,N,N,56662,56654,N,56656,N,56661,56660,46915,N,55515,
-56658,N,N,46916,N,56653,56657,N,N,N,N,57769,N,57776,57767,N,57774,57765,57773,
-57777,57764,57768,57763,N,47601,N,57766,47602,57772,57771,57770,N,N,57775,N,N,
-N,N,58725,58727,48235,58728,N,58723,N,58722,58732,N,58730,48234,58733,58724,
-58729,58731,58726,N,N,N,N,59745,59750,59744,59749,N,59742,59752,59748,59753,
-59747,59743,59751,N,59754,59746,N,60634,49327,N,49325,N,49324,49326,N,N,61380,
-N,61810,61949,N,N,62532,62533,N,50272,N,62921,N,50398,N,62922,N,63198,50546,N,
-50545,63197,50633,N,63446,N,N,N,N,42100,42619,51674,51914,43189,45407,N,N,
-42101,42410,42409,42408,N,N,42949,N,N,44660,N,56663,42102,42103,42104,42202,N,
-N,43985,N,52911,N,N,N,46163,42105,51549,42411,42412,51576,N,42620,N,N,N,51915,
-N,42950,N,51916,N,N,43438,N,N,52334,43436,43435,52333,43433,52335,43434,43437,
-N,43986,N,43988,52915,52912,52913,52914,52916,43987,N,N,53620,53619,N,44662,N,
-44661,N,N,N,N,N,45410,54598,N,45409,45411,45408,N,N,N,N,46165,54597,N,46166,
-55539,N,46167,55538,46164,N,N,N,N,56666,56668,46917,56667,56665,56664,N,N,N,
-57780,47607,47605,N,47606,57778,57779,N,47603,58737,58735,N,48237,58736,48238,
-48236,47604,N,N,59757,59755,59756,58734,60636,49328,60635,61381,61382,59758,
-61950,N,42106,42413,42622,51675,42621,N,43439,46918,N,42203,42414,43989,46168,
-N,51577,N,51578,N,51676,N,N,42952,51920,51918,42953,51917,51919,51921,N,42951,
-N,N,N,N,N,43443,43444,43441,N,N,43440,52920,43442,N,N,N,43990,N,52919,52921,
-52918,52922,43991,44665,53621,N,53623,44663,53624,44664,53622,N,52917,54599,
-54602,54603,54600,45415,45414,45412,45413,54601,N,N,N,N,45416,N,N,46170,46171,
-N,46172,56669,56671,56673,46920,46919,46169,56672,56670,N,57784,N,N,57782,
-57788,47608,57789,57786,47609,57783,57781,57787,48240,58739,57785,48242,58740,
-48241,48244,58741,48239,48243,N,59763,59761,59760,59762,59759,N,N,50022,N,
-62534,62535,N,62923,63199,50773,N,N,43445,42954,N,N,43992,N,N,N,42107,42204,
-42415,51677,N,42955,51922,N,52923,43993,N,47610,42108,N,N,N,42657,N,N,46921,
-42109,42205,42206,N,42417,42416,N,51678,42658,N,51923,N,42956,N,N,52337,52338,
-52339,N,43446,43447,52336,43448,N,N,N,43994,52924,N,53626,44666,N,53625,N,
-45417,54604,45418,54605,N,N,N,46173,N,N,N,56674,N,N,57791,57790,N,47611,N,
-48245,58742,48842,59764,49329,N,50547,63448,N,N,N,N,52340,N,52925,45419,55540,
-46922,N,N,N,49749,N,N,N,N,42958,N,42957,43995,N,53627,N,45421,45891,45422,
-45420,46174,N,57792,47612,48246,N,51532,51679,N,51925,42959,51924,42960,N,N,
-43452,52343,52342,43451,43449,43450,52341,N,N,43997,52926,44000,43996,44002,
-43998,43999,44001,N,N,N,44669,44668,44667,N,N,N,54607,45423,45426,45424,N,
-54606,45429,N,45425,54608,45428,45427,N,N,N,55542,55541,N,46177,46175,46176,
-55543,46923,56676,46924,56675,N,N,58743,N,N,48248,57793,48247,N,47613,N,60638,
-59765,49330,60637,62016,62536,62537,N,42207,N,42418,N,N,N,51579,N,N,42962,
-42964,N,51682,51928,51927,51926,N,51681,51680,42660,42963,42961,42659,N,N,N,
-43453,52344,N,43454,51933,N,51935,51934,52345,N,N,51930,N,42968,42966,N,51929,
-51931,51937,N,42965,N,51932,51941,43456,N,51938,42967,N,51936,51939,N,43455,N,
-43457,51940,N,N,N,N,N,N,N,N,52399,52386,52350,52398,52393,44007,43458,52394,
-52397,44003,52396,43459,43464,43462,52387,N,52348,52389,43469,52400,44004,
-52390,N,44005,43465,52392,N,52941,44006,52347,43466,44008,43467,43463,43468,
-52391,52346,52395,43460,N,N,52349,52388,52385,43461,N,52927,N,52928,N,N,N,N,N,
-N,52938,53665,52939,44014,52942,52932,44013,52934,N,52935,N,N,52937,44009,N,N,
-44707,N,N,52933,52929,44708,N,N,52943,44670,53629,52936,N,53628,52931,52940,N,
-N,44012,44705,44018,44706,52944,53630,44011,44710,44017,44016,44015,44709,
-52945,44711,44010,N,52930,N,N,N,N,N,N,N,N,N,N,N,N,45430,53668,53670,N,53672,
-44712,44718,54611,53676,53667,45432,54609,N,44717,44715,53678,N,54610,N,53669,
-N,44716,53673,44719,53675,N,N,44714,53674,53677,53671,N,44713,45433,N,53666,
-45431,N,N,N,N,45434,N,N,N,N,N,N,N,54613,54622,46180,N,45436,45475,46181,54624,
-45482,55545,54614,45474,45477,45438,54612,54626,54629,55625,N,54627,55549,
-45473,45480,45484,54621,55544,54625,45435,55546,54628,55548,54617,N,46178,N,
-54615,54616,45479,N,N,45478,54619,45483,54623,45476,54620,N,45481,46182,46179,
-55547,N,54618,N,45437,N,N,N,N,N,N,N,N,N,46187,46191,55616,46929,46189,55620,
-46193,56677,55622,46931,46185,46188,55623,N,55624,55630,46195,46932,N,55626,
-55631,55619,46942,N,46933,46194,55617,55632,N,46941,46192,46926,55629,N,46196,
-55621,55550,46186,55618,N,55627,N,46925,46930,46183,55628,N,46928,N,N,N,46184,
-N,N,N,46940,57795,56688,N,56680,57794,N,56684,56686,N,N,56683,N,46939,N,56682,
-46943,N,N,N,57810,N,N,46938,47680,56689,57796,N,N,46936,56681,56685,47614,
-46927,56678,56679,47681,46935,46937,46934,56687,N,N,57800,57801,57806,48253,
-57813,N,47687,N,47686,57808,N,48252,57797,47685,N,57812,47683,47684,N,57809,
-58794,48250,46190,N,57811,48291,57803,N,48251,N,48290,57798,57802,57799,57805,
-47688,48249,47682,N,58746,57807,N,48289,N,48292,N,57804,N,48254,58745,N,N,N,N,
-N,58750,48846,58744,59811,58793,48296,N,48294,48844,58790,58786,48300,N,59768,
-N,N,N,48298,58785,N,59766,N,58789,N,58792,58749,N,48299,N,N,48293,59767,48845,
-58791,48295,48297,58788,48301,58787,58748,58747,48843,58795,59770,60640,48848,
-N,59810,N,59774,N,60641,N,48849,59809,N,59772,49332,60639,N,59769,59771,49333,
-48851,49331,48850,49335,59773,48847,N,N,N,N,N,N,N,N,61391,N,61383,N,N,N,N,N,
-60647,61384,60643,N,N,49750,60645,60644,49334,60642,60646,61392,61388,61390,N,
-61385,61386,N,61389,61387,50023,N,N,50026,50025,50024,50273,62538,50274,62017,
-50399,62924,50400,50548,50634,63449,N,63450,63451,N,N,63930,42208,51580,42419,
-N,42662,42663,42661,N,42664,42970,42969,N,52401,43471,43470,N,N,53679,45485,
-45486,N,N,N,46197,56690,46944,46945,56692,56694,56693,N,57815,N,57814,47689,
-57816,N,58796,48302,N,48852,N,49336,49751,49337,N,42209,N,N,N,51942,N,N,52402,
-43473,43472,43474,44019,52946,52947,N,N,53680,44720,45487,46198,55633,42210,N,
-42110,42211,N,51581,42423,42422,42420,42421,N,N,N,42667,51689,51691,42666,
-51683,N,51684,N,51690,51686,51688,42665,51685,51692,51687,N,N,N,N,N,N,42977,
-42986,42984,51952,51949,51957,42982,51958,N,42975,51955,N,42981,51951,51950,
-42979,51956,42980,43475,42974,51953,N,51943,42971,N,42990,51948,51954,42976,
-42978,N,51944,N,51945,51946,N,42989,42983,42988,51947,42987,42973,42972,42985,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,43489,52414,52407,43484,43503,52403,52410,52412,
-52415,43498,N,52411,52404,43496,52408,N,52416,43481,N,52413,43491,43490,52406,
-43479,N,N,43480,N,43478,N,43502,43494,43488,43476,52409,43487,43477,43495,
-43504,52948,43492,52405,43482,43485,43486,N,43500,43501,43499,43493,43497,
-43483,44020,N,N,N,N,N,N,N,N,N,N,N,N,N,N,52954,44097,44024,44026,44096,52966,
-44029,53681,44721,44099,52951,52959,44030,52958,52955,52963,52965,44023,44027,
-44098,44723,52960,44025,44101,52953,N,N,N,44028,44722,44022,N,52950,52957,
-52949,52952,52956,53682,44100,N,52961,52962,52964,44021,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,44737,53694,44735,44736,53684,53700,N,44726,N,N,54630,53702,53696,
-N,53687,N,53705,53690,44732,54653,53693,44734,44725,N,53707,53695,44728,53688,
-53685,53686,44729,53701,53708,44731,53692,53691,44739,44738,44724,44730,44733,
-53704,N,N,53698,44727,53683,53706,53697,53699,53703,N,N,N,N,N,N,N,N,N,N,54631,
-N,45495,45515,45514,N,45503,N,54649,54645,54642,54694,45498,45490,N,N,54647,
-46248,45494,54689,N,45516,45513,54651,54634,N,N,45512,54691,54633,45501,45505,
-54690,N,54643,45506,45500,54632,N,46200,54693,54641,45511,54644,54692,45510,N,
-55634,N,45491,54639,45496,45507,N,45502,54648,54638,54636,54654,45488,45508,
-45492,46199,54652,45493,N,45489,45504,45499,45497,54640,45509,54637,54650,
-54646,55636,55635,N,N,N,N,N,N,N,N,N,N,N,54635,55652,N,46202,N,55658,55641,
-55655,56695,46205,55659,55662,46204,55644,55661,55660,46206,55637,46201,46243,
-N,46241,55657,N,55647,46245,55664,55656,55665,46253,46251,55654,55653,N,55651,
-55645,46244,N,46242,53689,55638,N,56759,55639,46203,46250,56697,N,46246,46247,
-55640,55663,56696,55648,55643,46249,55649,55646,N,N,46254,46960,N,N,56700,
-56753,56758,56746,46956,56763,46953,56698,N,56699,46946,46955,56740,46958,
-46959,56741,N,56754,56760,46954,N,46948,56739,56701,56762,56744,56745,56702,
-56756,56747,56757,56749,N,46949,57817,46952,46950,56761,56752,56748,N,N,56737,
-47699,56751,46957,56743,N,56742,N,N,N,46951,46947,57838,56755,56750,N,56738,N,
-N,N,N,N,N,N,57833,N,57818,57829,N,57836,47697,46252,57834,47692,N,N,N,47691,
-57841,N,57819,57832,57820,57831,47695,57835,55650,N,N,N,57842,57827,47698,
-58810,48303,N,57840,57839,47700,58797,48304,58798,N,57823,57824,57821,57826,
-57822,57843,47694,48305,47696,47701,N,57825,N,57837,N,N,57830,N,N,58801,N,
-47690,48308,59818,58806,58805,58807,N,N,58804,48309,N,48315,48312,N,48313,
-58799,58802,58812,48321,48319,N,58803,55642,48306,58809,58800,N,48322,58808,
-47693,48311,57828,N,N,48314,N,48318,48320,48317,48316,N,48310,58811,48307,
-48323,N,N,N,N,N,N,N,48856,48857,59817,48866,48863,N,48854,48861,59819,48859,
-48853,N,48860,N,59816,49339,48855,N,48862,49338,59815,59814,N,48864,N,48865,N,
-59813,59812,49340,59822,48858,59820,N,N,N,N,49341,N,49346,60650,60652,N,49343,
-N,60653,60649,N,60651,49344,49347,N,60648,49342,49345,49753,59821,49752,N,N,
-49758,61396,N,49756,49757,61399,61395,49754,61393,50027,61397,N,61398,61394,N,
-49755,62018,N,62021,N,N,62022,62020,62023,50028,62019,N,N,62542,50276,62541,
-62540,62539,50275,50277,N,62925,50402,50401,N,N,63201,63200,63203,50635,50549,
-63453,63202,N,N,63452,50637,50636,50675,63657,63727,42212,N,N,55666,59823,N,N,
-42668,51959,42993,42991,N,42992,N,52417,43505,44102,N,52967,N,52968,N,44103,
-53710,N,44740,44741,53709,N,N,N,N,45523,N,45519,N,54695,45526,45525,45518,
-45521,45524,45520,N,N,55670,45517,46255,N,N,N,46257,46258,55669,55672,46256,
-55667,55671,N,55668,N,46961,N,N,56764,N,N,47702,57844,48867,48324,58813,48325,
-48326,58815,58814,58816,59825,N,N,59824,60655,60654,49348,49349,62024,N,N,
-42213,N,N,N,N,55673,N,N,N,46260,46259,56765,N,61400,50403,63454,42214,N,44742,
-N,45528,45527,55674,55675,46962,57845,47703,59826,N,42215,42424,N,43506,52418,
-N,52969,44104,45529,N,55676,46261,46963,N,58817,58818,N,N,60656,49759,63728,
-42216,N,52419,43507,44105,N,52970,N,44743,53714,53712,53713,44744,53711,N,N,N,
-N,45531,45532,54696,45533,45530,55677,N,55678,56766,N,N,47705,47704,N,N,60657,
-61401,N,62026,62025,62543,N,51550,44106,N,N,42217,42425,N,42670,42669,N,N,
-42671,42672,51694,51693,51960,42994,51963,51962,51961,51964,N,N,N,N,43508,
-52425,52421,52430,43515,N,43513,52426,52422,52429,43512,43584,52424,52420,
-43518,52427,43511,52428,43514,43516,52432,52431,52423,43510,43509,43517,N,N,N,
-N,N,N,52975,52981,N,44112,44109,52972,52977,N,44115,44107,52976,44110,44113,N,
-N,52979,N,44108,52984,44111,N,44114,52973,52978,52982,52974,52971,N,N,52983,
-52980,N,N,N,N,N,N,44752,44745,44748,N,44751,N,53717,N,44746,53715,N,44750,N,N,
-44747,N,53718,44749,N,N,N,N,N,N,54700,45535,54699,54701,45534,45539,53716,N,
-54698,54702,N,45536,54697,45538,N,45537,N,55719,N,55714,N,46262,46266,46263,
-55717,55720,N,46264,N,46265,46270,56775,55718,46268,55715,55713,N,46269,N,
-55716,N,N,N,46969,N,56767,46966,46967,46965,56772,56771,56768,46971,N,N,56770,
-46267,N,N,56774,56769,46968,46964,46970,56773,N,N,N,47708,N,57848,57847,57846,
-47706,N,N,N,N,N,47707,58821,58824,48328,N,N,48327,58825,58820,48330,58822,N,
-48329,58819,N,58823,48873,48870,59835,59834,N,59833,59828,N,59829,N,N,N,48871,
-N,48868,48872,59827,48869,59830,59831,59836,N,N,59832,N,N,60658,N,N,N,49351,N,
-61404,49350,61402,61403,49760,50030,62027,N,50029,N,N,62545,62546,N,50278,N,
-62544,50404,N,63455,50638,63658,63659,N,42218,N,42673,42674,42995,N,52433,
-44116,44753,45540,N,N,45266,N,46271,46272,46028,55721,N,46972,57850,57849,N,N,
-42219,42675,52434,43586,N,43585,N,52985,52986,N,53719,53720,44754,44755,N,
-44756,54703,N,N,45542,N,46274,N,46273,56776,57210,57851,59837,N,N,49761,50279,
-42220,N,42428,42429,42427,42430,42426,N,N,42678,N,51702,42677,42679,N,N,51697,
-51696,51699,51698,51701,42676,51695,51700,N,N,N,N,N,51965,43005,51966,52035,
-43004,N,52039,52034,52037,42997,42998,42999,43000,N,43072,N,52033,43002,43073,
-N,52032,52038,N,43001,52036,43003,42996,43006,N,N,N,N,N,N,N,N,N,43607,N,52436,
-43587,N,43597,43598,43590,43608,43592,52444,43603,52439,43593,52454,52455,
-52447,52440,43606,52452,43601,43599,N,52453,N,52451,52443,52435,52442,43594,N,
-43600,N,43588,52446,52445,52437,N,43602,52449,52438,43605,52456,43589,N,43596,
-52441,52450,43604,N,43591,43595,N,52448,N,N,N,N,N,N,N,N,N,N,N,N,N,N,53083,
-44124,44137,N,53078,53068,44130,53066,44123,53061,44133,53074,52990,53057,N,N,
-N,N,53060,52987,53073,53089,44128,53062,53080,N,52989,53087,53088,53091,53082,
-53067,53075,44134,44121,44129,44141,44118,44120,N,N,N,53059,44138,44131,53085,
-53056,44140,44135,53065,N,N,44139,53072,53064,44132,53084,53076,N,44126,53090,
-53063,44122,53081,53071,44127,53077,44119,52988,44136,44771,44125,53070,53069,
-53058,N,53086,N,53079,N,N,44117,53740,44778,53741,N,53729,44767,44779,N,53722,
-N,53731,53739,N,53721,53748,44757,N,N,N,53747,53742,N,53743,44765,44776,53733,
-N,53734,53744,53735,N,53730,53724,53725,53738,53732,N,N,44758,44762,53746,
-53726,44774,44770,N,N,44773,44780,44763,44775,53737,44777,44760,N,44759,53723,
-N,53727,44768,53745,53736,53728,44772,44769,N,44761,44764,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,54724,N,54708,54709,54713,N,54728,54725,N,54718,54717,
-45549,54721,54736,54704,N,54737,54723,54741,54729,45548,54727,45543,45564,
-45554,N,45558,45557,54705,N,54734,54740,54732,54739,N,N,54720,54706,54738,
-54722,45546,45559,N,54731,45552,N,N,N,54730,54707,45560,N,45562,54733,45563,
-45545,54714,54735,N,N,45551,45561,54716,54726,54711,54715,45556,54710,45544,
-45553,45550,54719,44766,55744,45547,N,N,N,N,N,N,N,N,N,N,N,N,N,N,45555,N,55747,
-55769,55758,46294,N,46289,55741,46290,55757,N,55750,55763,46286,55723,55765,
-46276,55731,46279,46278,N,46295,N,55725,55759,55760,46281,46277,55739,N,46288,
-55734,N,55761,46284,55753,55766,55728,55733,55727,N,46283,55746,56798,55729,
-46287,55738,55762,46282,55735,55732,55749,46285,46275,46297,55752,55751,55724,
-46280,55764,55740,55742,N,55755,55754,55722,46291,46293,55730,55737,55745,
-46292,55736,55748,55767,N,55756,N,N,N,N,N,N,N,N,N,N,N,N,N,55768,N,N,N,N,55726,
-N,N,N,N,56818,47014,N,56816,56795,56800,56793,N,56812,56779,56786,N,56810,
-56820,56796,N,56783,56802,56807,56787,N,56804,56784,N,N,56791,56792,47016,
-56811,56809,N,56780,56814,N,56815,56817,47020,47012,N,54712,56788,56806,56789,
-47009,47025,56813,47023,47019,56778,47011,N,56781,47024,N,56797,56777,N,47017,
-56801,56785,47018,56794,46974,46296,56803,55743,56782,N,N,56808,47013,56805,
-47010,56799,47021,56790,56819,N,N,N,N,N,N,47015,57030,N,N,47022,N,N,N,N,N,N,
-57930,57928,N,57950,57926,N,57944,46973,47711,57922,57949,N,57927,57941,47716,
-47709,N,57947,N,57920,57946,N,47727,57937,57953,47725,57929,47710,57931,57945,
-47719,57924,47723,47713,57933,57923,57852,N,57943,47720,57952,57853,47717,N,
-57939,N,47718,57925,57936,57932,57934,N,47712,57951,47726,57935,N,57954,N,N,
-57854,57940,47715,47724,47722,57921,57942,47721,N,N,47714,57938,N,N,N,N,57948,
-N,N,N,N,N,N,N,N,58837,N,58833,58829,58849,58846,48333,N,N,58853,58836,48344,
-58843,N,N,58832,58842,48341,58862,N,58859,58845,58830,N,N,58850,58852,48337,
-58840,58835,58826,48334,48342,N,58855,48343,58827,58861,58848,58854,48340,N,N,
-58851,N,58858,N,48345,N,48339,58844,58831,58863,58828,58856,48336,N,58838,N,
-58839,48335,48332,58834,48338,N,48331,N,58857,58860,58841,59850,N,N,N,N,N,N,N,
-N,N,59842,N,59838,48886,N,N,48875,48880,48876,59852,59863,48874,59844,59853,
-58847,59854,N,N,48881,N,59869,48885,48888,59840,N,48884,N,59867,59868,59858,
-59857,59849,N,N,59859,59866,59865,N,48879,48877,59851,59848,N,59845,59864,
-48887,59862,48883,48882,N,59856,N,59839,59841,59843,59861,59855,48878,N,59846,
-N,59860,N,N,N,N,N,N,59847,N,N,N,N,N,N,N,49359,60741,49352,60661,N,60737,49354,
-60744,N,60668,N,60663,N,N,60745,60659,60670,N,49361,60740,60746,60669,49353,
-60736,60660,49360,N,N,60743,60665,49356,N,60667,60664,49362,60666,49355,49358,
-60739,60662,60742,N,60738,N,N,N,49763,61415,49768,49769,N,N,N,49762,61414,N,
-61411,61412,49766,61406,61410,49765,N,61407,N,N,N,N,49767,49764,N,61405,61409,
-61413,N,N,N,62033,62030,62039,N,62038,62036,62031,N,50034,N,N,N,N,N,62032,
-50033,49357,62035,50032,62040,62034,62029,61408,N,N,N,50031,N,62028,62550,N,
-62549,62037,50280,N,62553,62554,62548,62552,N,62547,N,N,N,N,62929,62551,50407,
-50405,62927,62930,N,62926,62928,50406,N,N,N,63205,63206,50550,63204,N,N,N,
-63458,50639,63456,63457,63660,N,N,50774,63731,63729,63730,63732,N,N,N,63931,N,
-42221,42680,N,43609,N,52457,N,N,53092,N,N,N,53749,53751,N,53750,N,53752,45565,
-54743,53753,N,54742,54744,54745,55770,46299,55771,55773,46300,46298,55772,N,
-56826,56824,56823,N,56822,56821,47026,56825,47728,57955,57957,47729,57956,
-48347,N,48346,58864,N,N,59871,59870,59872,N,N,48889,N,60747,49363,N,61416,
-49770,62041,50551,42222,42431,42681,43074,43610,43611,N,N,44142,N,N,53754,N,N,
-N,N,47027,N,N,N,59089,48890,49771,42223,N,42682,N,N,52459,43612,52458,N,53093,
-44143,53094,N,44144,N,53756,44782,44781,N,54750,54748,54749,54747,N,54746,N,N,
-55774,55777,46302,55775,46301,55776,N,56827,N,N,57958,57959,57960,N,58867,
-58866,48348,58865,58868,59873,N,N,59874,59875,N,60748,49364,49772,62042,N,
-50408,51551,N,44145,53095,44783,N,N,45566,N,46303,55778,N,47029,47028,N,N,
-57961,57962,48349,48350,59877,59876,61417,63459,42224,51552,42432,N,43075,
-52040,N,44146,47030,42225,N,53096,44147,53097,N,49365,42226,N,N,52460,N,53098,
-N,53826,53825,53758,N,53757,53827,53824,N,N,45632,45633,N,N,46304,55779,N,
-55780,55781,N,N,N,56897,56898,56896,N,56829,56830,47031,57963,58871,58870,
-58869,58872,59879,59878,48891,59880,N,49366,60749,N,61418,62043,63207,N,42227,
-42434,42433,N,43613,51553,51582,42683,N,51703,52041,52042,43614,N,52461,N,
-44148,53099,53100,N,44784,44788,53828,44787,44785,44786,N,54751,45634,46307,N,
-46305,46306,55782,N,N,47730,42228,N,51617,N,42435,N,N,51620,N,N,42438,51619,
-42437,42436,43076,51618,N,N,51704,N,N,N,51708,51710,51776,42693,42694,51707,
-42689,N,51705,N,51709,42690,N,42685,N,42686,N,42692,51706,42684,43077,42687,
-42688,42691,N,N,N,52059,52057,52044,43089,52051,43084,52045,N,52053,N,52050,
-43087,52049,43094,52058,43096,N,43098,N,52043,N,43085,52060,N,43092,43095,N,
-52549,43079,43102,43093,52046,43082,43097,52054,43080,43081,52547,52047,43088,
-43099,52061,52048,43086,N,43091,52462,43100,52055,43090,N,43101,43078,52052,
-43083,52056,52548,N,N,N,N,N,N,N,N,N,N,N,N,N,43626,43642,52469,43633,N,52555,
-43618,N,43621,52546,N,52467,52471,43629,43631,52474,43638,43624,43622,43623,
-43637,52551,43632,52473,52475,43630,43635,52476,52554,N,44149,43641,N,43619,
-52553,N,52557,52472,52559,52544,43628,52468,43627,43645,43634,N,52466,53109,
-43640,43644,52545,52550,N,43646,43639,43625,43615,N,43620,N,52470,43616,52558,
-N,52464,52463,52477,52465,43643,44789,43636,52478,43617,N,44198,N,N,N,52556,
-53116,53153,N,53156,53111,N,N,53159,53162,53164,53108,44150,44155,53833,44205,
-53157,53165,53115,53107,N,N,N,53860,44158,53154,53112,53114,44197,N,53117,
-44157,53104,53160,N,53163,N,N,44154,N,44200,53101,44202,44152,44206,53161,
-53103,44203,53854,52552,44156,44151,53110,53102,44204,44196,53155,44201,44199,
-53113,44193,53105,44194,44195,53106,53158,44153,53118,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,53836,44797,44867,N,N,N,53845,53851,53847,53834,53837,53830,
-53831,44874,44794,53846,53855,44869,44790,N,44864,53838,44866,53839,53849,N,N,
-N,44868,53864,53832,44796,44795,44872,53829,53862,53850,53863,53857,53843,
-53858,N,53852,53861,53859,44873,53844,44793,44792,44865,44871,53856,44870,
-53841,45635,N,53865,53840,53835,44798,44875,44791,N,53848,53853,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,45669,54753,54757,N,45650,45648,N,N,45639,54755,54754,
-45659,N,54760,45653,N,54778,54855,45636,54775,54768,45671,54752,N,54780,N,
-45668,45656,45667,45646,54764,54782,54774,45647,45641,54853,N,54781,54848,
-45649,45657,54850,54762,54779,54767,54852,45662,45638,45660,54772,54770,54771,
-45651,54766,54765,45640,54759,54854,45642,54769,45672,N,45666,54758,45663,
-45661,45670,54776,45665,53842,54777,45664,54849,45637,54773,45655,54761,45654,
-N,45652,45644,45643,55783,54851,54763,N,N,55804,N,45645,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,46401,45658,46318,55798,46332,N,55786,46315,46311,55881,46317,
-46321,46316,46325,55885,55876,N,N,55793,46330,46324,55805,46308,55882,55875,
-46312,55799,46327,55893,55894,N,46309,55880,46329,55803,55789,55790,46333,
-55794,55801,55795,N,46331,46404,55791,55784,55785,N,55787,46314,55800,N,46328,
-46402,N,N,55802,55891,55883,46310,55889,46322,N,46320,N,55895,46319,55873,
-55796,55806,46407,55877,55874,55792,46403,55887,55884,55892,46313,55872,46406,
-N,55879,N,N,46323,46326,N,55878,46405,55797,54756,N,N,55888,55886,55890,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,55788,46400,N,N,N,56929,56928,56902,47037,N,56927,56905,
-56906,N,47047,56936,47042,56926,N,56899,47048,47038,56914,56904,56907,56931,
-47032,56938,56930,47041,56919,47052,N,N,47051,47045,N,N,56937,47033,56917,
-56908,56921,56933,47053,N,47035,56916,N,56909,47044,N,47043,56912,56922,56932,
-56903,56913,47036,56923,47049,47040,56910,47039,56901,56915,56935,46334,47792,
-56918,57964,56920,56934,47046,56911,47034,47050,48368,56900,N,56925,N,N,N,
-56924,N,N,N,N,N,N,N,N,N,N,N,N,N,N,58026,47789,57981,58020,47778,N,57966,47791,
-N,47735,57965,58032,47793,57969,58019,N,57971,58035,58031,47733,47777,58963,
-47790,47741,57967,N,58030,47779,58027,58040,57973,57982,N,N,58038,58028,47740,
-N,N,57980,47734,47732,47784,N,N,57978,57975,57976,N,58034,N,58039,58037,47738,
-58041,47742,47783,N,57968,58874,57977,N,47736,47788,47785,47739,58021,57972,
-47786,58023,47780,47782,47731,N,58025,58017,57970,47781,58033,58036,57979,
-58024,N,47737,48351,58022,58873,N,58029,N,N,N,N,N,N,N,N,N,N,57974,58948,58958,
-48354,58957,58969,48356,58955,N,58959,48367,N,58950,48359,N,58962,59888,48371,
-48370,58964,58947,58974,48365,N,48355,58967,N,58971,58976,58965,58953,48358,
-48361,48369,48364,N,58956,58018,N,N,58952,58975,48360,N,48363,58977,48352,
-58966,58875,58972,49375,N,58954,N,48353,58949,48357,58876,47787,58945,N,58970,
-58946,58944,48362,N,58968,N,58878,58961,58960,58973,58951,48366,N,N,N,N,N,N,
-59891,N,48969,48894,59968,59883,48961,59895,48968,48963,59893,60751,59899,
-59970,59898,59881,59896,59972,59974,48893,59973,48964,48970,N,48967,N,59902,
-48966,59897,N,59885,59890,N,59901,48965,48962,48892,48960,59889,N,58877,59884,
-59887,59969,59892,59882,60750,59971,59886,59900,N,N,N,N,60753,49379,N,N,49367,
-N,N,49371,60755,60761,60759,49369,49370,49377,60762,60754,49372,N,60758,60757,
-60763,49378,N,49373,49376,60756,49380,49374,49381,49368,60760,N,60752,N,N,
-61431,N,N,49777,61428,61430,N,49775,61426,61427,61422,N,N,59894,61423,49776,
-61419,N,49773,61432,49774,61420,61421,61425,49779,N,49778,N,N,61424,50040,
-62047,62053,50041,62044,50038,50035,62055,50039,N,50036,62046,62049,62050,
-62051,62054,N,61429,62045,50037,62052,62056,62048,N,N,N,62557,50282,62560,
-50283,62568,62559,62556,N,62558,62562,62565,62564,62567,62555,N,50281,62563,
-62566,62569,62561,62931,62932,62936,62937,N,62934,62935,62933,N,50409,N,N,N,N,
-50552,63211,N,N,63208,63209,63210,50553,N,63461,63460,N,63663,50676,63661,
-63664,63662,63733,50775,50789,63907,63852,N,63906,63952,63953,42229,N,N,N,N,
-42695,51777,N,N,52062,N,43103,N,43106,N,52063,N,43104,43105,N,N,N,N,52568,
-52570,52565,52562,52564,N,N,N,43684,N,N,N,43682,N,N,52566,43683,52563,52560,
-43681,52567,N,52561,43685,52569,N,N,N,N,53167,N,53171,N,N,44215,N,N,N,N,53174,
-N,44207,44210,44212,44214,44211,53170,53169,N,44209,53172,53173,N,53166,44213,
-N,44208,N,N,N,53168,N,N,N,N,N,N,53879,53880,53881,44880,N,44876,53870,N,53878,
-53883,44881,N,53868,53874,53867,53877,N,N,53873,44877,44879,53882,N,53866,
-53869,53875,N,53876,53884,53872,N,44878,N,N,N,N,N,N,N,N,N,N,45677,54862,N,N,
-54864,54860,N,54872,54858,54871,45673,54856,55899,54866,45676,N,54867,54870,N,
-54874,N,54863,N,54868,N,N,45674,45675,54873,54861,54857,54875,N,54865,N,N,
-54869,N,N,N,54859,N,46408,46409,55909,46415,N,55897,55906,55896,46412,55904,
-55902,N,55903,46410,N,55907,N,N,N,N,N,55900,55898,46411,55901,55905,N,N,N,
-46413,N,N,N,55908,N,N,N,N,N,N,56944,56951,56953,56993,N,47066,56939,N,47058,N,
-56954,47063,56994,47054,N,56957,N,56941,56958,56940,N,47068,N,56952,47055,
-56995,N,47060,56945,47065,56956,56943,56950,56946,56942,47057,47064,47062,
-47059,47067,47056,56949,N,47061,N,46414,N,56955,N,56947,N,N,N,N,N,56948,N,N,
-58049,N,47796,N,N,58045,58051,58047,N,47798,58046,58050,58042,N,58044,47797,N,
-N,N,N,58048,58043,N,47799,N,47794,N,N,58052,N,47795,58983,58980,58992,58986,
-58988,48372,58982,58990,N,N,58989,58987,N,58993,48375,58984,58991,N,48373,N,N,
-58979,58981,48374,58978,58994,N,58985,N,N,59978,48977,N,N,59989,59987,48971,
-59977,59980,59981,59976,48981,48982,59975,59990,59985,48975,48972,59984,59982,
-N,N,48978,59986,48973,N,48974,N,59983,48976,59979,N,59988,48979,59991,59992,
-48980,N,N,49383,49390,60764,60770,N,60768,49386,49385,49382,60766,N,N,N,49388,
-49387,49384,N,60769,60765,60767,N,49389,N,N,N,49783,61435,N,49780,49781,61437,
-49782,61434,61433,62060,61436,N,62061,50042,62059,N,N,62058,N,62057,50043,N,N,
-50284,N,N,62570,62571,N,N,N,N,62940,62939,50410,N,62938,63212,63213,N,N,63462,
-63665,N,N,63734,63932,50809,63942,42230,N,43686,43687,N,N,44216,N,N,N,N,49391,
-42231,N,43688,44882,47069,42232,N,45678,47800,51554,N,53175,53885,N,58053,N,
-49392,42233,43689,53176,53177,55910,46416,N,N,56996,N,N,47070,58054,N,N,48376,
-N,50044,42234,55911,42235,N,42697,51778,42696,43109,43108,43107,52064,N,N,N,
-43690,N,43691,52571,N,53178,N,53181,44218,53179,N,44217,53180,44219,N,53922,
-53921,53886,44883,N,54877,54878,45679,54876,54879,46418,45680,N,N,46417,55915,
-55914,N,55912,55913,N,55916,56998,56997,57001,N,57000,56999,47801,58057,N,
-58056,47802,58055,58995,N,58996,48377,N,59993,59994,N,N,62066,50045,62065,
-62064,62062,62063,50411,62572,63214,63735,N,42236,N,51621,42439,51622,N,N,N,
-51779,51780,N,N,N,N,52070,N,N,52066,N,52065,43692,52069,43111,52067,43110,
-52071,52068,N,N,52575,53182,52573,52580,N,43693,N,43696,52581,52577,N,52578,N,
-52572,43695,52574,43694,52579,N,52576,N,N,53186,44221,44222,N,53189,53183,N,
-53188,N,53184,44220,53187,53185,N,N,N,N,N,N,N,53928,53925,N,53927,44888,44887,
-44885,53924,53929,44884,44886,53926,54887,53923,53930,N,N,N,N,N,54882,54886,N,
-54885,55918,55929,N,N,54888,N,54883,55917,45684,N,N,45683,54881,54884,45685,N,
-45682,45681,54880,54889,N,N,N,55920,55927,N,46420,55926,55923,N,46422,N,N,N,
-55925,N,N,55919,55921,55924,55922,46421,55928,46419,47071,N,N,57005,57004,
-57002,N,47074,47073,57006,N,57003,58058,47803,47072,N,N,N,57008,57007,N,58061,
-58059,48378,N,47804,58060,58998,N,N,N,N,48379,58997,59006,59005,59003,N,59002,
-58999,59000,59001,59004,59041,N,N,59999,59996,59997,48983,59995,60001,60000,
-59998,N,60772,60773,49393,N,49394,60771,N,49785,61438,49784,50046,N,50081,
-50285,62574,62573,62941,63215,50554,63464,63463,63465,42440,53190,44889,45686,
-54890,42441,51623,42237,N,N,51781,N,N,N,52076,52074,52075,52072,43112,52073,N,
-N,N,N,N,52589,N,43699,52587,52583,52586,N,52582,43701,52585,N,43698,43697,N,
-43700,52588,52584,N,N,N,N,44226,44229,53198,53197,53196,44223,53205,53195,N,
-44225,53935,N,53202,53200,44228,N,53192,53203,N,53194,53204,53201,53193,N,
-44224,53206,53191,44227,N,N,N,N,53940,53931,53942,N,53934,53945,53946,53932,
-53944,53941,53939,53943,44895,N,44893,N,N,53937,N,53933,N,53936,53947,53938,
-44894,53199,N,44890,44892,N,N,N,N,N,54904,54893,54891,N,54892,N,54899,N,54900,
-54896,45691,54901,54898,54895,N,45689,54894,45687,45690,54897,54905,44891,
-45688,54903,54902,45692,N,N,N,N,N,N,N,N,55934,N,N,N,55969,46432,N,55975,N,N,
-55977,55970,46426,55974,55973,46427,46433,N,46434,55976,46424,55933,55931,
-55971,55930,46431,55932,55972,55978,46425,46430,46428,46429,N,N,N,46423,N,N,N,
-N,47081,57015,47080,57019,N,57009,N,57020,N,N,N,57010,57011,N,57021,57018,
-57016,57017,57013,57012,N,57022,47077,N,57014,N,47082,47076,47083,47084,N,
-47079,47078,N,N,58062,47806,47805,N,N,58067,N,48380,47807,N,N,47809,58068,
-47075,47808,58064,58066,58063,N,58065,N,N,N,59051,N,N,59050,59047,48448,60002,
-48449,59046,N,48382,N,59048,59045,59042,59049,59043,59044,48381,N,N,N,N,60777,
-N,60006,N,60005,60007,N,60774,48986,N,60003,N,48984,N,48988,48987,60004,60008,
-N,48985,N,60781,49397,49786,49398,49395,60778,60776,N,60779,N,60782,49396,
-60780,60775,N,N,61506,61509,62069,61504,N,62575,61510,N,50082,61508,49787,
-61505,61507,61511,62070,N,62068,N,N,N,N,50083,62067,N,N,N,50286,N,N,N,N,50413,
-63217,50412,63219,63216,63218,50640,63666,42442,52590,53948,53949,45693,57023,
-48989,50084,50555,63667,42443,N,52591,41568,N,N,53207,N,53208,N,N,N,N,N,53950,
-53951,45694,45729,N,N,N,55979,N,57026,57025,57024,58069,N,58070,58071,47810,N,
-N,59053,59052,N,N,60009,48990,48991,N,60786,60783,60784,60785,61513,61512,
-49788,62071,62942,42444,N,44230,N,45730,57027,N,42445,N,53952,45731,N,N,46435,
-46436,N,42446,42447,51782,43114,43113,44231,53209,55980,42448,42449,42450,
-42451,N,N,N,43115,43116,52078,52077,N,N,43702,52594,52592,52593,N,N,N,N,N,N,
-53210,53211,N,N,44235,44233,N,44234,44232,N,N,N,N,44896,N,N,N,N,44900,44899,
-53953,44898,44897,N,53954,N,N,45734,54907,54906,45732,45733,N,N,N,46438,46437,
-55982,N,N,55981,45735,N,N,N,N,N,47085,57029,47086,57028,N,N,N,58072,59054,
-48450,60010,N,N,N,60787,N,50086,50085,N,N,50556,42452,52595,N,N,45736,58073,
-47811,N,N,52079,52080,N,N,52596,43704,43705,N,N,43703,N,N,N,N,44239,44240,
-44237,44238,N,53212,N,N,53213,44236,N,N,N,N,53955,N,44904,44905,N,45739,53961,
-N,44910,44908,53962,53957,44907,44906,44901,53960,53959,53956,44909,N,53958,
-44902,N,44903,N,N,45740,54945,54946,45741,54908,54910,54948,54947,54909,N,
-45737,45738,N,55990,46443,46442,55984,46440,N,55987,46444,55988,46445,55985,
-46439,46441,55989,N,55986,55983,N,N,N,N,N,57042,N,57031,47088,47091,47090,
-47095,47094,57043,57041,57034,57038,57037,47092,57040,57036,57044,57035,47093,
-47087,47089,N,57033,N,N,N,N,58075,47815,58079,47814,58076,47813,N,57032,57039,
-58078,N,47816,58080,58077,58074,N,N,59057,59061,59063,59059,59058,59056,48453,
-48451,48456,48457,59060,48454,59055,48455,47812,59062,48452,N,N,N,60012,N,
-60011,60019,60013,60018,60015,48992,60017,N,N,48993,N,48994,N,60016,60014,N,N,
-N,N,49400,60788,N,N,49399,60791,60789,60790,N,N,49401,N,N,N,61517,N,49825,
-61518,N,N,49789,61519,49790,61516,61520,N,61514,N,N,50087,62072,50088,50287,N,
-61515,50288,N,N,N,50414,62943,N,50558,63220,50557,N,63466,50677,50678,N,N,
-63948,N,N,44241,53214,N,46446,46447,42453,42698,51783,N,52081,43117,N,43706,N,
-44242,44243,44244,54950,53963,44911,N,N,45742,54949,N,N,55992,46449,N,55991,
-46448,N,N,57045,48458,59067,59064,59065,59066,N,N,N,N,N,60792,N,61521,N,N,N,
-62577,62576,N,63221,42454,52597,44912,N,N,N,46450,57046,N,N,58081,N,48459,
-60020,N,61522,62578,42455,N,N,43707,44247,53215,44248,44246,N,44245,53964,
-44913,N,N,44914,44915,N,N,N,45744,54951,45743,N,N,N,N,N,55993,45745,46451,
-57047,47096,47097,N,47817,N,47818,48460,48996,60021,48995,N,60793,49402,N,
-61523,62579,42456,43118,52600,52599,43708,52598,43709,52601,N,53221,44251,
-44250,53223,53222,44255,N,44254,44249,N,53217,53218,53219,N,44256,53216,44252,
-53220,44253,N,N,N,N,53967,53971,53969,53968,N,53972,N,N,N,53973,53974,53966,N,
-53965,N,44917,44918,N,53975,53970,N,54960,N,53976,44919,44916,N,N,N,54954,N,
-54953,N,54955,54956,54958,54957,54962,45749,45746,45750,54952,45751,54961,
-45748,54959,45747,N,N,N,N,N,55996,55998,55994,55995,N,N,55999,56001,56002,
-55997,56000,46452,N,N,57051,N,57056,57048,57052,N,N,57057,57053,47098,47171,N,
-47101,57049,57050,47822,47174,47102,N,47172,47100,57055,47173,57054,47169,
-47099,47170,57058,58086,58088,N,N,N,N,N,N,N,N,N,47168,N,N,58083,47820,58089,
-47821,58087,58082,58085,58090,47819,58084,N,48462,59071,59070,N,48465,48463,
-59068,48461,59069,N,48464,N,N,N,60029,N,60065,N,60030,60022,60026,60025,60023,
-48998,48999,48997,60024,60027,60028,N,49000,N,49472,60835,N,49404,60795,49406,
-49473,N,N,49405,60834,60796,49403,60833,60794,60798,60797,N,N,61525,49828,
-49829,49826,N,49827,N,N,61524,N,62075,N,N,50089,N,62073,62074,N,62580,62583,
-62581,62582,62944,N,N,50415,63467,63668,N,50679,63736,63737,50790,42457,44257,
-N,56003,N,57059,N,42458,43119,N,43710,N,53224,53225,44920,N,N,56004,46453,
-47175,49474,60836,62076,62584,42459,N,N,N,52641,52602,52604,52606,52605,52603,
-43711,44258,53234,N,53229,53226,N,N,53233,N,N,44260,44261,53232,53231,53230,
-53227,53228,53235,44259,N,N,N,N,N,N,N,N,44924,N,44964,44963,53985,53979,53977,
-N,44961,54969,44922,53982,53986,53988,53984,53978,44962,53983,53981,44921,
-53989,44965,53987,44925,53980,N,44926,44923,N,N,N,N,N,N,N,N,N,N,45753,N,54970,
-N,N,54963,54965,54967,N,54968,54966,45754,N,54971,N,54964,N,N,N,N,N,N,N,N,N,
-56008,46454,56016,N,56005,N,56017,N,56006,56007,N,N,56015,56014,56011,45752,
-46455,56009,56012,46456,56013,56010,N,N,N,N,N,N,N,57070,N,57074,47182,N,58096,
-47185,57072,N,N,57069,57064,57066,57067,57060,N,47181,N,N,47180,N,47176,57063,
-N,47183,N,47184,57062,57065,57073,47178,47179,57071,57061,N,N,N,58098,47824,
-58100,57068,58102,47828,58103,58099,N,47825,58095,47827,58092,58097,58101,
-58094,N,N,47177,N,58091,47826,58093,N,N,N,N,N,48468,59073,48472,N,48470,N,N,
-47823,N,59080,59081,48467,N,N,59079,59082,48469,48466,59075,59072,59077,59074,
-48473,59076,N,N,59078,48471,N,N,N,N,49002,60072,N,60066,60070,60076,60077,
-60073,60074,60071,N,60068,N,49004,49001,60067,60069,N,49003,60075,N,49478,N,N,
-60842,60837,49477,N,N,49475,N,60844,49476,60840,60841,60838,60845,61526,49479,
-60839,N,60846,60843,N,N,N,61530,N,N,61527,N,49830,N,61531,61533,61532,61528,
-61529,N,N,62115,N,50090,N,62078,62114,62077,62116,N,N,62113,N,62586,62589,
-62585,50289,62587,62588,62590,50290,50292,50291,62945,N,62947,N,62946,N,N,N,
-63222,N,N,63669,63738,42460,N,N,52082,43712,52643,43713,43714,52642,N,53240,
-53239,44262,44265,44264,44263,53236,53238,53237,N,N,53992,44967,53996,53995,
-53994,53990,44966,44970,44973,N,N,44974,53991,53993,44972,44971,44969,44968,
-54978,N,54976,54972,45755,N,54973,45756,54974,54975,54977,N,45757,N,N,56021,N,
-56020,56019,56018,N,N,N,N,57078,47186,N,57075,57077,N,47187,N,47188,57076,N,N,
-N,N,N,58177,N,58105,58106,N,47831,47829,47830,58179,N,58178,58110,58109,58108,
-58107,58176,58104,N,59083,59088,59086,N,N,N,59085,59084,59087,N,60078,N,49005,
-49480,60848,N,49481,60847,61535,61534,49831,N,62117,50091,62625,50593,63223,N,
-63671,63670,51624,44266,44267,54979,N,47190,42461,43122,43121,43120,N,N,N,
-52644,N,N,43716,43715,N,44270,N,53242,53245,53243,N,44268,44269,N,N,53241,
-53244,N,44981,N,N,N,54003,54005,54004,44978,53999,N,N,44976,44975,N,44979,
-44977,N,44980,54002,53997,53998,54001,54000,N,N,N,N,N,N,N,54982,54983,54981,N,
-54980,45758,46461,N,56022,56024,56026,46460,N,N,46458,N,56023,46459,56025,
-46457,N,N,57153,57079,57082,57086,47194,57084,N,57083,57080,57081,47192,57152,
-47191,N,47196,47195,47193,N,57085,N,N,N,58185,N,58184,N,N,58180,N,N,47832,
-58183,58182,47833,N,N,N,N,N,48478,N,59090,N,48479,48475,48477,N,48474,48476,N,
-N,N,60079,N,49008,60081,60080,N,58181,49010,49009,49006,49007,N,N,N,N,N,60853,
-N,60851,49482,60852,N,60854,60850,60849,N,N,61536,49834,49832,49833,N,N,N,N,
-62118,62119,50093,N,50092,62627,62628,62626,N,63224,63225,N,N,42462,51784,
-43123,N,52645,43718,43717,52646,N,N,53312,44271,53246,44272,N,N,44982,54008,
-54006,54012,44983,54007,54011,54009,54010,N,N,54984,54986,N,45759,N,54985,
-45760,46498,46497,46462,56027,N,N,N,N,57156,47197,47198,N,57155,57154,N,N,N,N,
-58186,47835,47834,58187,58188,N,48481,48480,N,60085,59091,59093,59092,60084,
-60082,60086,60083,N,49011,N,N,N,60855,49483,60856,60857,N,N,49835,49836,N,
-50293,N,N,50641,42463,N,N,N,N,N,53313,N,N,N,N,N,N,54013,44984,N,N,N,N,N,46010,
-46009,N,N,46500,56029,46499,56028,N,N,N,N,57157,N,47836,58189,47837,N,N,N,N,N,
-N,50294,62629,N,42699,43719,52647,N,44274,N,44273,53314,53315,N,N,54080,54082,
-44985,N,54084,54087,54085,N,N,N,54086,54083,54014,44986,54088,54081,N,N,N,N,
-54995,45766,55004,45763,N,54997,45767,N,45761,N,54992,55005,54993,54990,45765,
-N,45762,N,54996,54999,45764,55000,45768,55001,54991,54998,55002,54994,54989,
-54987,N,N,55003,N,N,56031,N,N,N,N,56036,N,N,N,56032,56038,46503,54988,56033,
-46501,56030,46508,56034,46507,56035,46509,46504,46510,46505,N,46506,N,46502,N,
-56037,N,N,N,N,N,N,N,47201,57168,N,57171,57159,57164,57158,47203,N,57162,N,N,N,
-57160,47202,N,57167,57166,57163,57165,57161,47841,57170,47199,57169,N,N,N,N,N,
-N,N,N,N,58205,N,47848,58200,N,47847,58190,N,58192,47840,58197,58196,58199,
-47845,58194,58193,N,N,47844,47839,58195,47842,58201,58203,N,58198,58191,47843,
-N,N,48489,47838,N,N,58204,N,N,N,N,N,N,N,59097,48482,N,59099,N,48483,N,N,48485,
-59102,N,59094,47846,59100,N,N,N,N,59096,N,47200,48488,N,N,48484,N,48486,48487,
-N,49014,59101,59095,48490,N,59098,N,N,N,N,N,60096,60091,N,N,60101,49012,60093,
-49016,60099,60090,60087,60102,49489,49017,60098,60088,49015,60092,49019,60089,
-60094,49018,60097,60100,N,N,N,N,60875,60876,60860,60867,60865,N,N,49487,60872,
-60095,N,60863,N,60873,49486,60862,60861,60871,60868,60870,N,60858,60874,49484,
-N,60869,60878,60866,49488,49485,60864,60859,60877,49013,N,N,N,N,N,N,N,61539,N,
-N,61537,61543,49840,61541,61540,49842,61546,49841,N,61547,61544,49838,61545,
-61538,49839,49837,62123,61542,N,N,61548,N,N,62120,N,N,N,50098,50096,62122,N,
-62124,62121,50097,50094,50095,50099,N,N,50296,N,62634,N,62633,62631,62630,
-62632,N,50295,50297,N,N,50416,N,N,62949,62948,N,N,63226,N,63228,63230,63229,
-63227,N,N,50595,50594,N,N,50643,50642,50644,63469,63468,N,63739,63672,63740,
-50776,N,50777,63853,N,N,50814,42700,N,52648,N,N,53317,53318,53316,N,N,44275,N,
-53319,53320,53321,N,N,54089,54095,N,N,54093,44987,54091,N,54092,54094,N,N,N,
-54090,45769,N,55006,45771,55008,45770,55007,N,N,N,N,N,56040,46511,N,56042,
-56039,55009,N,46512,N,N,56041,N,N,N,N,N,N,57174,N,47204,57172,47205,57173,
-47206,N,N,N,47849,58209,58206,58208,47850,47851,58207,N,N,N,N,N,59103,N,N,
-59104,N,48491,59106,59105,N,41569,N,60106,60107,60103,N,60104,49020,49021,
-60105,N,49495,N,N,49491,49496,49492,49494,49490,N,49493,N,N,N,N,49843,60879,N,
-62126,N,62125,N,62635,50298,50299,63297,62950,N,63296,N,63741,63908,42701,N,N,
-43124,N,52649,43720,44278,53324,44276,53322,44281,44277,44282,44280,53323,
-44279,44991,44990,54106,44999,54099,54105,44995,54098,54104,54102,44994,44996,
-54101,44989,54100,45000,44997,45001,44998,54097,54096,54103,44992,44988,44993,
-N,N,N,N,N,55024,55017,N,46517,55016,N,45775,45782,45779,45785,45784,45780,N,
-55010,55013,N,55012,45776,55014,55023,45777,55011,55020,55021,45778,55018,
-45783,45773,45781,55015,45772,55019,N,N,55022,N,N,N,56059,56050,46514,56057,
-56054,56046,56055,46516,56047,N,56043,N,N,47212,56052,N,46513,56058,N,46520,
-46522,56045,N,N,46521,56048,46515,56056,56049,56053,N,56051,46518,56044,46523,
-45774,46519,46524,N,N,N,N,N,47208,57181,57183,57185,57189,N,57179,57177,47210,
-N,57184,57188,57180,57176,N,57175,N,N,N,57186,57178,57182,47211,N,47209,57190,
-47207,57187,N,58226,N,N,N,N,N,47854,58218,48504,58228,47857,58232,47863,58213,
-N,N,58229,58210,N,58231,58214,N,47870,47867,58230,58224,47853,47861,47860,N,
-47859,47865,N,58211,47866,58225,47862,47852,58227,47855,47856,47864,58216,
-58215,58212,N,58220,58217,58221,47869,N,58233,47858,58222,58223,N,58219,N,N,N,
-47868,N,N,N,N,59111,48496,48505,48501,59108,N,48498,48502,59120,48492,59112,N,
-48500,N,N,59115,59110,48499,48503,59109,N,48497,N,59119,48494,59118,59117,
-48506,58738,48493,N,59116,59107,N,48507,59114,48495,59113,N,N,N,N,49058,49063,
-49022,60120,60111,60123,60115,60121,49064,49057,60108,60114,60124,60117,60122,
-60110,N,N,60118,49059,60116,49062,49061,60112,60113,60109,60119,49060,60126,
-60125,N,N,N,60890,60886,49503,N,60880,49497,49513,60892,49505,49501,60883,
-49508,49511,60894,49500,60885,49509,60896,60893,60881,49504,49498,49512,60888,
-49507,60882,49502,60895,49506,49499,60889,49510,60887,N,N,60891,N,N,N,61550,
-61556,49849,61559,49844,49845,61551,61558,61553,49850,49847,N,61549,N,49846,
-61555,61557,49848,61554,61552,N,N,N,N,62136,50103,50104,50100,N,50101,N,62132,
-62130,N,62134,50106,62135,62128,62127,62131,62129,50102,62133,62636,50302,
-50301,62637,N,62639,62638,50337,N,N,N,62955,62952,62953,N,62951,62954,50418,
-62956,N,50417,N,63298,N,50645,50647,63470,50646,63673,63808,63810,63742,63809,
-50796,42702,N,44283,53871,45002,N,N,45786,56060,56061,N,N,N,60127,49514,60897,
-N,N,49851,N,62138,62137,50338,62957,N,63299,50680,51785,N,N,43721,43125,N,N,
-53325,N,N,54112,54107,54111,54109,45003,54110,54108,N,55025,N,56062,56128,
-57193,57194,47214,47215,57192,57195,57191,47213,N,47936,N,47216,58234,N,48508,
-59121,48509,N,49065,60130,60128,60129,60900,60899,60898,N,N,N,62139,N,50105,
-62140,63300,50681,63674,42703,43723,43722,53327,44284,N,N,53326,54114,N,45004,
-55026,54113,N,N,N,45788,55029,55027,55028,45787,N,56130,56131,56129,N,47219,
-57197,57196,57198,47218,47217,N,N,59122,59124,N,48510,59123,60131,49066,61561,
-N,61560,50107,62141,50109,50108,62640,62958,50419,42704,53328,44285,54117,
-45006,54116,54115,N,45005,N,55035,N,55037,55030,55031,45789,55032,45790,55036,
-55033,55034,45791,N,46526,46527,N,56132,N,N,N,57199,57200,N,58238,47939,47937,
-47938,58235,58236,N,58237,59129,N,59130,48545,59127,59126,59128,59125,49069,
-60132,49067,49068,60902,49515,60901,61352,N,61562,61563,49852,N,49853,49516,
-62142,62143,62641,50339,42705,N,42706,44286,43724,45007,53329,N,N,N,46528,
-42707,44353,53330,53331,44352,44354,42708,N,53332,45009,54118,45011,45008,
-45010,N,55105,45792,N,55104,55038,N,57201,N,N,58273,N,48546,N,49070,60134,
-60133,N,60903,N,N,N,62959,N,N,42709,52083,52650,44355,53333,N,54120,N,N,N,
-45012,54119,45013,N,N,N,55107,N,N,45794,55106,55108,N,45793,N,N,N,N,56134,
-56135,56133,46529,N,N,N,47220,N,47221,N,47941,N,58275,58274,47940,N,N,N,N,N,
-59131,N,N,59132,N,N,N,N,60135,N,N,49520,49519,49517,49518,49521,N,61564,49855,
-49854,62144,62642,N,N,N,50597,50596,42710,N,N,53755,N,47223,46530,47222,47942,
-N,42711,51625,42712,42713,N,N,52651,52086,N,52087,43127,N,52084,43126,N,43129,
-52085,43131,43130,52088,43128,N,N,N,43729,43727,52653,N,43726,N,N,N,43731,
-43733,43730,N,52656,52652,43734,N,43728,43132,N,43732,52655,N,N,52654,N,43725,
-N,N,N,N,N,N,N,53339,44359,44360,53341,N,53335,53338,53347,53345,N,44361,53351,
-44364,53348,53340,53337,N,N,56137,53346,44356,53349,53334,53343,44358,44363,
-53344,44367,44365,N,53336,44362,N,53342,44366,44357,53350,N,N,N,N,N,N,45018,N,
-45027,45016,45014,54122,45022,45019,54124,N,N,45021,54123,54121,54126,45026,
-45024,56136,54127,54125,45015,N,N,45017,45020,N,45023,N,45025,N,N,N,N,N,N,N,N,
-N,N,55118,45796,N,55109,55111,N,55112,N,55120,55116,55114,N,55117,55121,45797,
-45801,55110,N,55119,N,45799,N,45798,55115,55113,N,45795,45800,N,N,N,N,N,N,N,N,
-46536,56145,N,N,56143,46538,N,N,N,N,56138,57249,N,46537,56142,N,N,56139,46533,
-46539,56144,46535,56141,47943,46534,56140,46540,46532,46531,N,N,N,N,N,57207,
-57205,N,57211,N,57203,57250,57208,N,57202,47227,47267,57213,N,57206,N,47230,N,
-N,47228,57214,47225,47224,57209,47229,46541,N,57212,57204,47226,47265,47266,N,
-N,N,N,47948,47944,N,47949,58278,N,N,58277,58279,47946,58276,47947,58282,58281,
-58280,N,47945,N,N,N,N,N,59201,N,59204,48552,59203,48551,48547,48548,48549,
-59200,59134,48550,N,59202,59133,N,N,60137,60147,49073,49072,N,60141,60143,N,
-60138,N,60142,60136,60145,49071,60144,60140,N,60146,N,60139,49524,60904,60910,
-49528,49530,49527,49526,N,49525,49523,60905,60908,49522,60909,N,49529,60907,N,
-60906,49856,N,49857,61601,61565,61566,N,N,62146,N,62145,50110,62644,50340,
-62643,N,62960,63301,50598,63811,63812,50648,42714,N,43735,56146,47950,49531,
-60911,42715,N,45029,45028,56147,N,N,N,60148,42716,44368,N,N,56148,56149,56150,
-47951,49074,42717,N,43736,53352,45030,54128,45802,N,56151,47268,N,47952,49075,
-49532,49858,62645,42718,43737,N,N,45031,55122,46542,N,47953,58283,59205,N,N,N,
-N,42719,46543,57251,47954,42720,52657,53353,44369,N,N,54130,N,N,45034,N,45032,
-45033,45035,N,N,54129,N,N,55127,55124,55126,45803,45805,45804,55123,45806,
-55125,N,56152,56153,N,56154,57254,N,57255,N,57253,57256,N,47269,N,57252,N,
-47955,N,N,59210,59206,59209,59211,59208,59207,N,60149,60150,60151,49076,49077,
-60913,60912,60914,N,61603,61602,N,62148,N,62149,62147,N,50341,N,62646,62647,N,
-63302,63471,63675,42721,43133,N,49533,42722,N,55128,56155,N,50753,51786,N,N,N,
-51787,51789,42723,51790,51788,N,N,52130,52131,52091,N,N,N,N,52129,43169,N,
-43170,52092,52090,52089,52093,43134,52094,53354,N,N,N,52662,43740,52661,52663,
-N,43739,52668,43743,52658,52672,52678,43750,52675,43747,N,52665,52671,52673,N,
-52660,43746,43741,52666,43748,43751,43745,N,43738,52670,52664,52677,43753,
-43749,43744,52669,45036,52667,43742,43752,N,52659,N,52674,52676,N,N,N,N,N,N,N,
-N,N,N,N,N,N,44386,44380,44388,44385,53361,53364,44381,N,53355,N,44374,44384,N,
-44387,44389,53410,53367,N,44373,53409,44377,44375,44370,53359,N,53374,53363,
-53366,53413,N,44390,53373,44382,53368,53412,53365,53369,53372,N,N,53357,53411,
-53371,N,N,53356,53360,44383,44378,44371,44376,44372,44391,53358,54181,44379,N,
-N,53370,52801,N,N,N,N,N,N,N,N,54184,45050,N,54134,N,54179,54141,N,54194,N,
-54186,N,54142,N,54185,54136,54140,54197,45053,54189,54180,45037,54195,54132,N,
-54188,N,45052,45047,54131,45045,45044,45049,54187,45041,45048,53362,56156,
-54182,N,N,54138,45051,54139,54177,45054,54133,54191,N,54190,54198,45043,45040,
-54196,54192,54183,54178,45046,45042,54135,45038,54193,45039,N,54137,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,55134,55136,55141,55161,45820,
-45810,N,55133,45821,45822,55144,55151,55157,N,55138,N,55145,N,N,45888,55159,
-55154,45818,45816,55150,55146,55132,45807,55137,55129,N,45815,45817,55142,
-55139,45812,55155,45809,55140,55162,55148,N,55147,45808,N,45819,N,45811,55130,
-55135,55152,55158,45889,55131,55143,55149,45814,N,N,55160,55153,55156,N,N,N,N,
-N,N,N,N,N,N,N,N,45813,N,56172,56160,46551,56189,56231,56234,46549,56168,56227,
-56169,56183,46562,56179,46559,N,56180,56157,N,56228,N,N,46568,56225,56181,
-56236,56176,57288,N,56239,46566,56174,56186,46569,46548,56178,56237,56171,
-56164,56175,N,56163,56161,46544,56229,56170,56232,N,56233,46552,46557,46553,
-46561,56190,46554,56182,56166,N,46546,56158,56226,56235,56165,46560,56240,
-56177,56173,N,46545,46565,N,56188,46567,N,56184,46556,46550,46558,46547,46564,
-56185,56167,56187,56162,56230,N,N,N,N,N,N,N,56238,N,N,N,N,N,N,N,56159,N,N,N,N,
-N,57287,N,57309,47189,57292,N,57290,57269,47273,57285,57305,57281,47281,57304,
-57279,46563,57295,57280,57302,47280,47272,N,57258,57266,N,57291,57283,57308,
-57286,47286,57303,N,47277,N,57289,57297,57270,57296,N,57313,57265,57298,N,
-57311,N,57259,46555,N,57273,57272,47279,N,57276,57278,57293,57310,47282,N,
-47283,N,57264,47275,57268,57306,47284,N,47276,47278,47285,57312,57299,57294,N,
-N,57275,57274,47274,57260,47271,57284,57261,57282,N,N,57271,57307,N,N,N,47270,
-N,N,N,57267,N,N,N,N,N,N,57263,57301,57262,47968,58323,N,N,58306,N,N,58284,
-58314,47960,58299,58309,47963,58302,47961,58287,58317,58286,58305,N,58285,N,N,
-58303,58312,58310,58298,58293,58291,N,58292,58311,58322,58300,47962,N,58295,N,
-58315,N,47965,58294,58288,58304,47969,N,N,47957,47966,58296,58290,N,47959,
-57300,47958,58307,N,47956,47971,47964,58308,58297,58289,58316,58301,47970,
-58320,47967,58319,N,58313,58318,N,N,N,58321,N,N,N,N,N,N,N,N,N,N,N,59251,59252,
-59239,59238,59234,48564,N,48556,59254,59253,57257,59231,59235,59229,N,59248,
-59233,N,59255,59226,59224,59236,59246,59241,48566,59215,N,59245,N,N,N,48567,
-57277,59227,59218,59221,59259,59228,59219,59217,59214,N,48560,59237,48559,
-48563,59232,59240,48553,59256,59260,48555,N,59223,59243,59247,59220,59257,
-48562,N,48561,59212,48565,59250,59222,59242,59216,59230,59225,48557,48558,
-59244,59261,59258,59249,N,N,N,N,N,N,N,N,N,59213,N,48554,60233,N,60224,60227,N,
-49083,60229,60153,60225,60231,49080,49084,49078,N,N,60155,60236,N,N,60230,N,
-60156,60245,60239,60152,60998,60158,49079,N,60234,N,60244,49087,N,60241,60157,
-60228,60232,60226,60246,60243,60240,49081,49082,49086,60154,60247,49085,60237,
-N,N,60235,N,N,N,60238,61011,60992,60997,61010,60996,60923,60993,N,49570,N,
-60916,61005,61007,60915,49569,61009,61001,49576,61008,60994,49578,60921,60242,
-61002,60999,60917,61013,49572,N,N,49573,60919,61000,N,61012,61003,60925,49575,
-49571,61004,60926,61014,60920,60995,61006,60922,60924,N,49867,60918,49577,
-49860,49534,N,N,N,N,49574,49864,61619,N,61609,61604,61610,61620,61624,61623,
-49866,49865,N,N,61611,61625,61614,61606,N,61608,61607,61613,61618,61605,61612,
-61617,49863,N,61615,N,49861,61616,49859,49862,62165,61621,N,N,50114,N,62157,
-62161,62153,62156,N,62164,50112,62169,62162,N,62154,62170,62163,50115,50116,
-62167,N,62155,50111,50113,62150,62158,62152,N,62168,62166,62151,62159,N,N,N,
-62654,50117,62160,50343,50345,50342,N,62659,62651,62649,62653,62650,N,N,62655,
-62657,50346,50348,N,62656,50349,50347,62658,N,N,N,N,50344,N,N,N,N,N,50420,
-62961,62967,50422,62652,62966,N,62973,62964,62971,62970,62648,62965,61622,
-62974,62963,62968,N,62972,62962,N,63306,50421,62969,N,N,63476,63307,63305,
-63303,63304,63308,N,50649,63474,63472,63477,63475,N,63478,50650,63473,N,N,
-63676,N,N,63813,63814,63815,N,N,63943,63933,51791,43754,N,44392,N,54200,54199,
-45120,45890,55164,N,N,55163,N,46570,47288,N,47287,47289,N,58324,59262,60248,
-60250,60249,N,49579,61015,61626,63909,42724,N,52681,52682,52680,52679,43755,N,
-53417,53415,N,N,53414,N,44393,44395,44394,53416,N,N,N,N,N,N,N,N,54212,54209,
-54207,N,N,45121,54210,45126,54204,54219,N,54221,54205,N,45123,54222,54217,
-54203,54208,54218,54214,54211,N,45128,54220,54206,N,N,54215,54201,45127,45124,
-54213,N,54216,54202,45125,45122,N,N,N,N,45900,55205,45899,N,55208,55211,45896,
-45894,55166,55209,55207,55204,55212,55213,55215,55216,55165,45893,55202,55201,
-55214,45895,55203,45897,45892,55206,45901,N,45898,55210,N,N,N,46577,56255,N,
-56244,46574,N,57319,56253,56241,46572,56246,46575,56250,56248,46578,46571,N,N,
-56242,56245,46576,N,56243,N,56254,56252,56247,56249,56251,46573,N,N,N,N,N,N,N,
-57320,57326,57316,57322,47290,57318,47296,N,N,47295,47294,57325,47297,47298,
-57315,57328,47299,47293,47292,57324,47300,57314,57317,57327,57323,N,N,58356,
-58345,47291,N,N,N,N,47978,58333,58354,58334,47973,N,58331,N,58340,58332,47975,
-58326,58353,47976,58350,58351,58327,47981,58342,N,58336,58343,58330,N,58355,
-58347,58341,58325,47977,58348,N,47980,58352,N,58346,47974,58344,N,58338,47972,
-58329,58337,58349,58335,N,N,58339,N,N,N,N,N,48577,57321,59314,59323,59313,
-59309,59306,48578,59304,47979,59297,48576,59303,48575,59308,59305,59321,59316,
-59310,59315,48571,59307,59326,59298,59299,59322,48572,59327,48574,59328,59312,
-58328,59318,59311,59320,59317,N,N,N,59302,48569,59325,48570,59300,48573,60260,
-59319,59324,N,N,N,N,N,60257,48568,49088,60267,60263,N,60261,60256,60271,N,N,N,
-49092,N,60252,60264,60265,60255,60254,60268,N,60258,60253,60259,N,60270,60251,
-60269,60266,49090,49089,N,N,49091,60262,61643,N,N,N,N,N,61017,49585,61021,
-61018,61025,61031,61020,N,61040,49582,61034,61023,61035,61030,61037,61022,
-49587,49586,61024,61038,61016,61036,49580,N,61028,61027,61032,61019,49584,N,
-49588,61026,61033,49589,61029,N,N,N,N,49581,49583,61639,61637,N,N,61644,61641,
-61645,N,61630,61638,61649,61039,61634,49871,59301,61629,61642,61636,61633,
-61628,61627,61648,N,61632,61631,49869,61640,N,49868,N,N,49870,61635,61647,N,
-62174,62175,N,50121,62172,50118,62180,N,50122,62182,62171,61646,62184,62173,N,
-50119,62179,N,62181,62176,62183,62178,62177,50120,N,N,62661,62662,N,62664,
-50350,50351,62665,62663,N,62660,N,63042,63045,63041,N,50426,63043,50425,50424,
-50423,63044,63313,63311,N,63310,63040,63312,63046,63309,N,63481,63447,63479,
-50651,63480,63482,N,63679,50682,63678,63677,50683,N,50778,63854,63911,63910,
-63912,42725,53418,N,54223,54224,N,N,N,56256,N,63047,63680,42726,44396,53419,N,
-N,N,55217,45902,N,56258,56257,46579,N,47301,59329,48579,N,48580,N,N,N,49093,
-50684,42727,N,N,N,53420,43757,53422,53421,44397,N,54225,N,54232,45129,54230,
-54228,N,54235,54226,54227,45130,N,45134,N,N,54236,45133,54234,54231,54229,
-45131,45132,54233,N,N,N,N,45904,55218,N,45909,55234,45908,55236,N,N,55224,
-45906,55235,N,55219,45907,55231,55227,55229,55223,55230,N,N,45903,55226,N,
-55225,55221,N,55232,N,N,55228,55220,N,55222,45905,55233,N,N,N,N,46582,56269,N,
-N,N,56265,56267,56262,56261,56259,N,56266,56268,56264,N,56263,46580,46581,N,N,
-N,N,N,N,56271,47309,57330,57336,57331,57332,N,57337,N,47311,N,47303,47310,
-57329,56260,47306,47304,57335,57334,47305,47307,57333,47302,N,47308,N,N,N,N,N,
-58358,47988,N,N,58434,58433,N,58363,47990,58432,58359,58360,47982,47984,N,
-58365,58357,47986,47985,58361,58366,58364,47987,58362,56270,47983,N,N,59330,
-59337,48582,N,59341,48586,59333,59331,N,59340,N,48581,59339,48583,48584,59332,
-48585,59338,59334,59335,59336,47989,N,N,N,60272,60284,N,49098,60279,60281,N,
-49096,60273,60277,N,60280,49094,49097,60283,60275,60276,60282,60274,60278,
-49095,61042,N,61041,49591,61047,49593,N,N,49590,61043,49594,61044,N,N,61045,
-61048,N,49592,N,61654,N,N,61657,N,61651,61653,N,N,61652,61655,61656,61046,
-61650,N,N,50125,62188,62191,62193,62186,62187,62190,62192,50126,50124,50123,
-62189,62185,62666,50352,N,62667,N,N,63049,50427,63051,50428,63048,63050,50600,
-N,63314,50599,63485,63484,N,63483,N,N,63816,63817,63819,63818,N,51792,42728,N,
-44398,55237,46583,N,57338,49872,N,62194,N,N,43171,N,N,N,45911,N,N,N,45910,N,
-56272,46584,56274,56273,N,N,57339,47312,58435,58438,58437,N,58436,59342,59344,
-59343,N,49100,N,N,N,49099,N,49595,61049,61051,61050,N,N,49873,N,N,N,62196,
-62195,N,62668,50353,N,N,50429,63316,63315,50779,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,43172,53423,44399,55240,55238,N,N,55239,56276,56277,57411,56275,N,57340,
-57409,57408,57410,47313,57342,57341,57412,N,58441,58439,N,58440,59347,59345,N,
-N,59346,60285,61052,61053,49874,N,62197,62669,50354,N,63052,63317,50601,N,
-63486,63820,43173,N,44401,44402,53424,N,N,53425,44400,N,45140,N,45138,N,45137,
-45144,45136,45145,54237,45142,N,45139,45143,45141,45135,N,N,45919,N,45913,
-55244,45918,N,N,45920,45914,N,45915,N,55242,N,N,45912,N,55243,45917,N,N,55241,
-45916,N,N,46660,N,46662,N,N,56280,46661,46585,46589,N,47332,57417,56282,46590,
-N,N,56285,56286,46659,N,56288,N,56290,N,56291,56279,56278,56292,46658,56289,
-56287,N,46656,46587,46663,56283,56284,56281,N,46657,N,N,46588,N,46586,57416,
-47327,47322,N,N,47317,N,47333,47318,N,47314,47329,47326,47328,N,47319,47324,
-47315,47316,57424,57421,57413,57418,N,47330,57425,47331,47321,N,N,57415,N,
-57423,57419,57422,57420,47325,57414,47320,N,N,N,58444,47992,47995,N,58446,N,
-48037,58445,47997,N,48591,58447,N,48036,58443,48038,N,N,N,47993,N,47323,47996,
-N,47994,47998,48034,47991,48039,48035,N,48033,58442,N,N,N,N,48598,N,48594,N,N,
-N,48601,N,59350,48602,59362,59355,48587,59363,59357,48597,59358,N,48596,59361,
-48590,59359,59349,48589,60330,48595,N,48592,N,48600,N,59348,N,59352,48588,
-59351,59353,59354,48599,59356,59360,59364,N,48603,49106,60325,60331,60328,
-60286,60332,60321,N,60327,N,49101,49107,60333,N,N,49103,N,49113,49108,60335,
-60329,49104,60322,49114,60323,60324,49115,49112,48593,N,49102,60336,49116,N,
-49109,60334,49105,49110,49111,N,49603,61092,61101,61098,61100,N,49600,61093,N,
-61099,49596,61095,49604,61091,61096,61103,60326,61097,61090,49597,61089,49598,
-61104,49599,61102,49602,61054,N,49601,N,61094,61660,61674,61669,61671,61659,
-49875,N,61658,49878,49877,N,61673,61665,61662,61668,N,61661,N,61663,61672,
-61670,N,49876,61677,61675,61666,61676,61667,N,62201,50127,62273,N,N,63055,
-50134,61664,62199,50130,62200,62205,N,N,50132,50133,62198,62272,62274,62202,
-62204,62206,62203,62275,50129,50135,50131,N,50128,62672,N,50359,62670,N,N,
-62674,N,62675,50357,62676,62673,N,62671,50360,50356,62677,N,50358,50355,N,N,N,
-50430,N,N,50496,63054,63053,63056,63057,N,50497,63318,63323,50602,N,63320,N,
-63319,63322,63321,N,63555,N,50652,63554,63552,N,63553,N,N,N,50686,50685,63681,
-63682,50752,N,63821,63822,50791,N,50797,N,63913,63944,43174,N,55245,N,55246,
-57426,58448,59365,49606,N,49605,61678,62276,N,63556,43175,54238,45146,45921,
-57428,57427,48604,59366,48605,61105,49879,N,N,N,50806,43176,52683,54239,N,N,
-45922,N,55247,55248,N,56293,N,46664,47334,N,57430,57429,57431,N,58449,58450,
-48040,49117,48606,49118,N,61109,61106,61108,61107,49607,N,61679,62278,62277,
-52132,45148,45147,54240,N,55249,N,N,56295,56294,46665,N,57433,57434,57432,N,N,
-47336,47335,N,48042,48041,N,59367,60339,60337,60338,49119,61111,61110,N,61682,
-61681,61680,62279,N,63914,43177,44403,N,44404,45149,45150,54242,54241,55250,N,
-45928,45926,45923,45927,45925,45924,N,N,46666,56298,N,47341,46668,46673,56300,
-46675,46674,46677,56299,56296,46671,46667,46669,56297,46676,46672,46670,47343,
-47342,47340,47344,N,47338,47339,N,47337,N,57435,N,N,58452,N,48044,48045,48043,
-N,58451,N,58453,N,59370,59372,N,48615,59373,48608,59369,48607,48617,48613,
-48614,48610,59368,48609,59374,59371,N,48616,N,48611,48612,60341,N,60343,60342,
-N,60344,49120,60340,N,N,49611,61112,49608,49612,49610,49609,61683,61686,N,
-61685,N,61684,49880,62280,62281,50136,62282,50137,N,N,50362,N,50361,63058,N,N,
-50498,63059,63324,50603,50604,N,63557,N,50754,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,43178,N,45930,45929,57436,57437,N,48046,
-60345,48618,60346,61113,43179,N,53426,44406,44405,N,54243,45151,54244,55253,N,
-55252,N,55251,N,N,56302,46680,N,N,56301,46679,N,N,N,56303,46678,N,57439,57442,
-57440,57441,57445,57438,57446,57443,57444,48048,58454,N,N,48047,N,59378,59376,
-N,N,48619,59375,59377,N,48620,N,60347,N,60348,49613,N,62284,62286,62283,62285,
-62678,63060,N,N,63855,43180,44407,54245,54247,54246,N,55256,45932,N,55254,N,
-45931,55257,N,55258,55255,N,N,56315,46688,56307,56313,N,N,46683,46686,56306,
-46681,56310,57452,46685,N,56305,N,56311,56308,56314,56304,56312,46684,46687,
-56309,46682,N,47346,57448,47345,57455,57454,47352,N,47353,57456,47347,57453,
-47351,57458,57449,N,57451,47348,57447,57450,57457,47349,57459,N,N,N,N,N,47350,
-N,48049,58459,58465,58457,58466,N,58456,58461,58467,58464,58463,58462,N,58455,
-58460,N,N,58458,N,48625,48622,59387,59457,59459,59456,59384,59386,59461,59458,
-59388,59462,59385,59460,48623,48629,48627,59379,48628,48624,59380,59382,59381,
-59389,59390,N,48626,N,48621,N,N,59383,N,60358,49122,N,60349,49123,49126,60354,
-N,60351,49125,N,N,60355,60356,60350,60359,60352,60357,49124,N,49121,60353,N,
-61119,49616,49614,49617,49615,61118,61115,61114,N,61117,N,N,61116,61765,49886,
-61691,61690,N,49881,61761,61760,61687,61763,61692,49885,61689,61762,61688,
-49882,49884,61693,49883,61694,N,61764,62290,N,50142,62287,N,62291,N,N,50139,
-62289,50144,N,50141,N,62288,N,50143,62292,50138,N,N,N,N,50364,50366,N,62681,
-50365,62679,50140,62680,50363,50499,50501,63062,50500,63061,N,63329,50605,
-63328,50606,63326,63325,63330,63331,63558,N,63327,N,N,63686,63683,63684,63685,
-50780,N,63825,63824,63823,63856,N,63934,63915,50798,43181,45152,N,N,N,N,N,
-47354,N,N,N,N,N,N,N,48630,N,N,60360,N,N,49887,N,62293,N,N,N,N,N,N,63916,43182,
-43758,44409,44408,N,45155,N,54248,45153,54249,45154,N,N,55263,55259,N,N,45933,
-55262,55261,55260,45934,55264,55265,N,N,N,56387,56385,56389,56390,56396,N,
-56392,56394,N,56386,56316,N,56393,N,N,56395,56388,56391,56317,46690,56384,
-56318,46689,46691,N,47357,57461,57463,57462,57467,47355,N,57464,57460,57465,
-57466,47356,47358,57468,N,58471,58470,N,58468,58469,48051,48053,48050,48052,
-59469,59470,59465,N,59466,48632,48637,48631,48638,48633,59467,N,N,59468,59464,
-48704,48635,N,N,48634,48636,N,59463,N,60362,49128,N,N,60364,49130,60367,60363,
-60361,60366,49129,60365,N,49127,N,N,49619,49622,61121,N,49620,61120,49618,
-49621,61766,61767,61768,49888,N,61769,N,49889,50146,62296,62297,62295,62294,
-62298,50145,62685,62683,62684,62686,62682,62687,63064,N,63065,63063,50502,
-63332,50607,63333,63560,63559,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,43183,46692,N,N,
-47424,N,N,N,48054,N,N,49132,N,49131,N,N,N,N,50147,50300,50503,43184,45156,
-47425,N,62299,N,N,N,N,N,N,N,N,N,N,52134,N,N,43185,N,43188,43187,43186,N,N,
-52133,N,52685,N,52687,43759,N,N,43761,52684,52686,43760,52689,52688,52690,N,N,
-N,N,N,N,N,N,53430,53428,44412,53427,44451,44414,44411,N,44452,N,44413,44450,N,
-44449,53429,N,44410,N,N,N,45162,54251,54257,45159,45166,N,45161,54254,54256,
-45164,54250,54253,45160,45157,54252,45163,54255,45165,45158,N,N,N,N,55267,
-55270,45936,N,45946,45942,55268,N,N,45950,45943,45948,45938,N,45935,45937,
-45949,55269,45941,45944,45940,45945,55271,45947,45939,55266,N,N,N,N,N,N,N,N,
-56397,46693,56399,N,46695,46697,N,56398,46694,46698,N,46696,N,N,N,47431,57507,
-47439,57470,N,47440,47429,N,57505,N,N,47434,N,57506,47427,47426,N,47437,47436,
-47435,47433,47438,57469,47428,47430,47432,N,N,48056,48059,N,48063,48057,48062,
-48060,N,48055,N,48061,48058,N,N,N,59474,48707,48705,N,59475,N,48708,48706,
-59473,59472,N,49136,59471,49134,49133,60368,48709,49135,60369,49138,60370,
-49137,49624,61123,49623,49628,49626,49627,49891,49625,61122,60371,49890,49892,
-N,50148,50149,N,62688,N,50654,50653,43190,N,N,51797,45167,N,51794,51795,51793,
-N,51796,N,N,52138,52135,52140,52136,43191,43194,N,52137,43193,52139,N,N,43192,
-N,N,N,N,52693,52695,43764,52691,52694,52692,43762,43765,N,43763,N,N,N,N,53432,
-53436,53433,N,44455,N,44456,N,53435,N,53437,53439,N,44453,53438,N,N,44454,N,N,
-N,N,N,55278,53434,54258,54267,54265,54260,54261,54266,54268,45169,N,54263,
-54259,45168,45170,54262,54269,54264,N,N,45985,55281,55273,55279,55280,45986,N,
-55272,55274,53431,55276,55277,55275,46700,N,N,N,56406,60372,56407,56404,45987,
-46702,56403,56409,56408,46699,56412,56402,56411,56400,56410,56405,46701,N,
-57514,N,57509,57515,57510,57508,57511,47441,N,57513,N,57512,47442,48065,48064,
-58478,58481,58473,58477,48066,58476,58474,58480,58475,58472,58479,N,59481,
-48712,61770,59478,59479,59477,56401,48711,59482,59476,48710,48713,59480,60373,
-49139,60374,60375,N,61124,49629,61771,61772,N,N,61773,62301,62300,62690,N,
-62689,63067,63068,63066,63334,50608,43195,44458,44457,45173,45172,54336,54337,
-54270,N,45171,55285,N,55286,55282,45988,55283,N,55284,N,N,N,N,56415,56417,
-56413,56416,46703,56414,46704,N,N,56691,47445,47444,N,47443,N,57516,57517,N,N,
-58483,58485,48070,48067,N,48069,48068,58484,58482,N,N,N,N,N,59489,59486,59487,
-48717,59488,59483,59484,48714,N,48715,59485,48716,N,60379,N,60380,60377,60378,
-49140,60376,N,N,N,N,N,61128,61125,61127,49632,61131,49631,61129,61132,61130,
-61126,49630,N,61775,N,61776,61774,N,61778,49893,49894,62303,50151,61777,62302,
-50150,62693,62694,50367,62692,N,62691,N,63069,50504,N,63561,63688,63687,N,
-50755,50781,63689,63857,N,50799,43196,43766,N,47446,N,50368,43197,44459,45989,
-46705,49895,43767,N,53441,53440,54338,N,45176,45174,45178,54340,N,45177,45175,
-N,N,N,N,54339,45992,55292,N,45991,45993,55362,45995,55294,55360,55287,45994,
-55363,N,N,55289,N,55290,55288,45990,N,55361,55291,55293,N,N,N,56429,N,56428,
-56426,56418,56433,56421,56431,56438,56430,46713,N,46709,56419,N,56425,46711,N,
-56424,46712,46714,56427,N,46706,46707,56439,56437,N,56436,56422,N,56434,N,
-46710,N,N,N,N,46708,56435,56420,56423,56432,N,N,N,N,N,58554,57527,N,57520,
-57539,57548,57523,47457,N,57536,47447,47449,47461,57521,N,N,47450,47452,47462,
-47451,N,N,N,N,47460,57529,N,57518,47458,57528,47454,57546,47459,57544,57532,
-57542,47456,57519,57545,57540,N,57547,47448,N,N,47463,47453,N,N,57525,N,57533,
-57537,N,57541,47455,57524,57522,57534,N,N,N,N,57531,57530,N,57535,57538,N,
-57543,N,N,N,58488,N,48071,58532,58490,48076,48080,58541,58549,58534,48072,N,
-58538,57526,N,48073,58545,58550,58542,N,58544,58553,58546,58494,58537,N,N,
-48081,N,48077,58492,58539,48075,58533,48074,58547,58530,58489,48078,58552,N,N,
-58491,58543,58540,58535,58487,58486,58529,58548,48079,58551,58493,58531,48722,
-N,N,N,N,N,48730,48725,59556,59553,59495,48720,N,N,N,48719,48726,N,N,N,59493,
-48724,59505,59491,59492,48718,59555,48728,59508,59513,59507,60398,59503,59511,
-59509,59496,59490,59517,48727,59518,N,59512,N,59501,59499,59494,N,N,N,59502,
-59515,59498,59514,59554,N,N,48723,N,59510,59516,59506,59500,48721,N,N,N,58536,
-59504,48729,59497,N,N,N,N,N,60404,49143,60403,60400,60484,49147,N,60481,60408,
-60483,60393,60406,N,49149,N,60385,N,60383,60482,N,60480,60414,60397,60396,
-60386,49216,N,60392,60402,60413,49219,60485,N,49640,49221,49150,60390,N,60399,
-60382,60384,49141,49218,49146,60391,60407,60401,49217,60381,49635,60409,60412,
-49148,N,60395,49220,49145,N,N,N,49144,60405,60411,49142,N,60388,60410,N,N,
-60389,N,N,N,N,N,N,N,N,N,60394,61138,N,61143,49637,49639,61149,49633,61164,
-61155,61144,61145,61154,N,49646,61153,61137,61152,61140,61165,49645,49643,
-61141,N,61160,N,61146,61159,N,61161,61136,49638,N,61162,N,N,61150,N,49642,
-61147,N,N,49644,61156,N,N,N,49636,61142,61157,N,61151,60387,61158,61139,N,
-49641,N,61163,N,49634,61134,N,N,N,N,61792,61785,49897,N,61780,61795,61787,
-61148,N,61797,61781,N,49896,61791,49898,49906,49904,61793,49905,61783,N,61784,
-61789,61794,N,61133,49899,61802,61799,61803,61790,61786,61800,62314,61788,N,
-49902,N,49901,61135,49903,61796,61798,49900,61801,61779,N,61782,N,N,N,N,N,N,N,
-N,62323,N,62307,50155,62321,N,N,62305,50156,N,62316,N,62312,50161,62322,62306,
-62309,50153,62324,N,62317,62320,50159,50164,50162,62313,62308,N,50157,50158,
-62304,50154,N,50152,50160,62319,50163,N,62315,62325,50165,N,N,N,62311,N,62318,
-N,N,N,N,N,N,62707,62786,62709,62716,62310,62714,62697,62784,50371,62701,62718,
-62708,N,N,50370,N,N,62788,62710,N,62715,62717,62695,62785,62706,62711,62699,
-62703,62787,62713,62696,62700,62702,62712,N,50369,62705,N,N,N,N,N,N,62698,N,N,
-N,N,N,N,N,62704,63073,63078,50511,63080,N,50505,N,63076,63082,50510,50506,N,
-50507,63072,63079,50509,63077,50508,63071,63075,63074,N,63070,63081,N,N,N,
-50609,63341,63344,63340,63342,63343,63337,63338,63335,N,N,63339,63336,50610,
-50611,N,N,63563,N,63565,N,N,N,N,N,63564,63566,N,50656,N,63562,50655,50657,N,N,
-N,63691,63692,50756,63690,N,63827,63826,63828,50783,63829,50782,63830,63858,
-63861,63860,50792,63859,N,N,N,50802,50800,50801,50807,63936,63937,63935,63945,
-43768,N,N,55364,56440,59557,62326,N,N,43769,N,44460,45179,N,N,55365,N,55366,
-45996,N,46717,56442,56441,46755,46716,56443,46718,46754,46753,46715,N,N,N,
-47464,N,N,57552,57550,N,57551,57549,N,48082,N,48085,48087,48086,N,N,48083,
-48084,N,59559,59558,48731,59560,N,59561,48732,N,N,N,60493,60491,61171,N,60489,
-60490,49222,60486,60494,60488,60492,61167,N,N,61169,N,61170,49651,61166,49650,
-61168,49647,49648,49649,60487,N,N,49909,61806,61804,61805,49907,49910,49908,N,
-N,N,62327,62328,50166,N,62789,62791,62790,50372,50512,63085,63084,63083,43770,
-N,51626,N,51800,42729,51798,51801,51799,N,N,N,52142,N,43201,N,43202,52144,
-43199,52143,52141,43200,43198,N,N,N,N,N,N,52696,52699,43773,52698,52697,N,
-43772,43771,N,43840,52700,43774,N,N,N,N,N,53446,44462,44463,44464,53447,53443,
-44461,53444,N,53445,53442,N,N,N,45220,N,N,45217,54341,45218,45221,54342,N,
-45182,45180,45181,45219,N,N,N,N,N,45997,55369,46005,55368,N,55371,46001,55370,
-46763,45999,46002,45998,46003,46004,46000,N,N,N,55367,46759,56445,N,56483,N,N,
-56482,46764,46760,46761,56444,56446,56481,46756,46758,N,46762,46757,N,N,57555,
-57553,57554,47466,47467,N,57556,47465,48088,N,48090,48089,N,58555,N,N,58556,
-59563,N,59562,N,N,49223,49224,60495,49225,N,61174,N,61172,N,61173,49652,N,
-61807,50167,N,N,N,49653,43841,N,45222,54343,N,N,55372,46006,46765,56484,56486,
-46767,46766,46768,46769,56485,47470,47471,47469,48091,47468,57557,N,N,N,48092,
-59564,60496,49226,49654,61808,61812,49913,61809,49914,49912,61813,49915,61811,
-N,62329,49911,50168,N,63693,N,N,43842,46008,46007,N,N,N,N,46770,56488,56487,
-46771,N,N,57561,47475,47472,57560,47474,57558,47473,N,57559,N,58557,48093,N,
-59567,N,48733,59565,48734,48735,59566,48736,N,60497,N,49230,49227,49232,60499,
-49228,60498,49231,N,N,49229,N,61177,61179,N,N,49655,61178,49656,61176,61175,N,
-61815,61814,49916,61816,62334,50170,62333,62330,50169,62331,62332,N,62792,
-62793,50373,N,50515,N,N,63086,N,N,50513,50514,63087,N,N,50612,50613,63345,N,N,
-50757,63695,50759,N,63694,63696,50758,63831,N,63917,N,N,N,N,N,N,43843,N,N,N,
-47476,N,58558,N,59568,49233,49234,N,43844,N,48737,50171,44465,N,N,N,49235,N,
-50658,44466,55373,N,56489,N,56491,N,56490,N,57565,57562,47477,N,47478,57563,
-57564,N,58560,58565,48094,58559,58561,58568,58563,58567,58564,58562,58566,
-48095,N,N,59571,N,59569,48739,N,48738,59570,48740,N,N,N,N,60502,N,N,60501,
-49236,60500,61180,N,61182,61249,61248,N,49657,61181,61857,49917,61821,61858,
-49918,N,61819,N,61822,61820,61817,49984,61818,N,N,N,N,62369,N,N,62371,62370,N,
-62794,N,62795,N,N,N,63088,N,50615,N,50614,63567,63568,50760,63697,N,50793,N,
-44467,46772,58570,58569,59573,59572,N,N,49658,61251,61250,61861,61859,61862,
-61860,N,N,50172,62372,62373,62374,N,63089,N,63346,N,63698,N,N,N,N,N,N,N,44468,
-N,N,60503,61252,N,44469,N,N,48096,N,60504,49985,61863,50173,N,62796,62797,
-50516,63569,44470,46011,46012,55374,46773,46774,56492,46775,N,47482,N,47484,
-57567,57568,57566,47479,47480,47483,47481,N,N,58571,48097,48098,N,N,59580,
-48743,59575,59574,N,59579,48741,N,N,49243,N,59576,59581,59578,59577,N,48742,N,
-49241,N,60506,49237,N,60507,N,N,60505,N,49240,49238,49242,N,49239,N,N,N,N,N,
-61253,N,61258,61254,61257,49659,N,60884,61256,61255,N,49988,49986,49989,49987,
-61864,61865,61866,49990,N,N,N,62378,50240,62376,N,50241,62375,62377,50174,
-62801,62798,N,62799,62800,63090,50518,N,50517,N,63348,63347,50616,N,N,N,50659,
-50761,50784,63832,63918,63919,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44471,56493,N,N,57569,
-58572,58573,48099,N,48100,59582,48744,N,N,49660,N,61867,N,49991,62381,50242,
-62380,62382,62379,63093,62802,62803,N,50374,N,63092,N,N,63091,N,63349,63920,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,44472,N,N,N,44473,N,N,45223,54344,N,55375,N,46776,N,
-46779,46777,56494,N,46781,N,46778,N,N,46780,N,47486,N,57570,N,N,57571,59584,N,
-47485,47521,47522,58575,N,58574,48101,N,48102,N,58576,59583,48104,48745,N,
-48103,N,N,N,49244,59585,48747,48746,59586,59589,59587,59588,48748,N,49249,
-49247,N,N,49246,60509,N,49248,N,N,60508,61259,N,60510,49245,60511,61262,61260,
-61261,61266,49995,61265,61268,61267,61264,61263,N,49661,N,N,N,N,61870,N,61869,
-49994,49992,49993,N,61868,N,62385,N,50243,N,62384,62383,50244,N,62808,62807,N,
-62805,N,62804,50376,50375,62809,63350,50617,63095,50519,63094,62806,N,63351,
-50660,N,50785,63833,N,63921,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,44474,55376,61269,44475,
-N,N,58578,58577,60512,N,N,61271,N,61270,N,49996,62386,62387,50377,N,N,63922,
-45224,46783,46782,57572,57574,47524,57573,47523,47525,57575,N,N,N,58580,58582,
-58581,N,58584,N,N,N,48105,58583,58579,N,N,N,58585,N,59596,N,59599,59601,59591,
-59595,59592,48750,48753,48755,59593,59594,48754,59597,59600,59598,48756,N,
-48752,59590,48749,N,48751,N,N,49251,60518,60516,60515,N,60521,N,60520,60519,N,
-60514,49250,60513,N,60517,49252,N,N,61274,N,61278,61275,61277,61276,61273,
-61279,61282,61280,61281,49728,49662,61272,61283,61875,61878,61880,61879,N,
-61873,61877,61872,N,61874,49997,61871,N,61876,N,N,62400,62389,50245,N,N,50246,
-62388,62393,62399,62391,62398,N,62395,N,62394,62397,62392,62390,N,62396,N,
-62816,62814,50378,62813,62819,62817,N,50379,62812,62810,N,62811,50381,62815,
-50380,62818,63096,63102,N,N,63097,50523,63137,50522,63101,63100,50521,63099,
-50520,63098,N,63357,63393,63358,N,63355,50619,63352,63356,63395,N,63394,63353,
-63354,50618,63570,50663,N,63571,50661,50662,N,N,63699,50762,63862,N,50794,N,
-63923,50795,63924,63925,63939,63938,50810,63949,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,45225,N,N,57577,N,57576,N,48106,48107,58586,N,59602,60524,N,N,
-48757,49253,60522,N,60525,49254,N,61284,60523,61881,49998,62401,N,N,N,62822,
-62820,N,N,62821,N,N,63138,N,50524,63396,50666,50620,50664,50665,63700,50786,N,
-45226,N,N,N,61882,N,N,54345,N,47526,N,58587,N,N,48108,58588,N,N,N,59604,59603,
-49256,48758,48759,N,59607,59606,59605,N,N,60526,60529,N,60528,60527,49255,
-61288,61286,61285,61287,N,49999,61884,61885,50000,N,61883,N,62403,62402,62405,
-50247,62404,N,62823,62825,62824,N,N,63139,63142,63140,63141,63397,50621,N,N,N,
-63572,63573,63574,N,50763,50787,63926,45227,N,48760,49257,61886,N,63398,N,N,
-63940,54346,N,50811,45228,60530,N,61887,N,62406,N,N,63143,63399,45229,N,58589,
-58590,N,48109,48110,59609,48762,48761,59608,N,61289,N,61888,61890,61889,50003,
-50002,50001,N,50526,63144,N,50525,63401,63400,N,50764,63701,46013,57578,N,N,N,
-58593,58591,58592,N,N,59618,N,59613,59610,59617,N,N,N,59619,N,N,48764,59616,
-59612,N,N,59611,59615,59614,48763,N,N,60541,60536,60534,60577,60535,N,60531,N,
-60537,N,N,60532,61298,60533,60578,N,N,N,N,N,N,N,60540,49258,60539,60538,N,
-60542,N,N,N,N,61290,61293,N,N,61292,N,61300,61295,61299,N,61297,61296,61294,N,
-61291,N,49731,49730,N,49732,49729,61301,N,N,N,N,N,61896,61899,N,61897,61901,N,
-N,N,61902,N,61894,50008,61895,N,61893,61900,N,61892,61891,50007,50005,50004,N,
-N,N,N,N,N,N,N,61898,62415,62421,50250,62416,N,62419,62423,50251,62418,N,62410,
-N,62409,62422,62413,N,62411,62420,62412,50249,50248,N,62407,62408,62417,N,N,N,
-62414,N,N,N,N,N,N,62828,62831,N,N,N,N,50006,62829,62835,62833,62827,62838,N,
-62826,N,50383,62834,N,N,N,62830,50382,62837,N,N,62836,N,N,N,N,63147,63146,N,N,
-N,63153,N,63149,63152,50528,N,N,63150,63151,N,63145,63148,50527,N,N,N,50623,
-63412,63407,63411,N,63414,63410,N,63406,N,50625,63409,63413,50624,63404,62832,
-63408,N,N,63405,N,63402,N,63403,50622,63578,63580,63583,63579,63584,N,63577,N,
-63575,N,50667,63581,50669,50668,63576,63582,N,N,N,N,63706,50765,63707,N,63705,
-63702,N,N,63704,63703,63834,N,N,N,N,63836,63835,N,N,63865,N,63864,63863,63866,
-N,50803,50804,63946,63950,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,46014,56495,57581,N,47527,57579,N,N,57580,N,N,N,58594,58595,48113,48111,
-58596,48112,59624,N,59627,59621,59628,59620,59622,N,59623,59626,N,N,48801,
-59631,59630,48765,59625,59629,48766,N,N,N,N,N,N,60588,N,49263,N,60583,49259,N,
-60580,60586,60589,N,49264,N,60585,60582,60590,60581,N,60587,49260,N,60579,
-49261,N,49262,60584,N,N,N,61353,61306,61307,61310,61308,N,61302,N,N,61305,
-61349,61309,N,N,49733,N,61351,61348,49734,61350,61303,61346,61347,N,61345,N,N,
-N,N,61906,61908,61911,N,N,61905,N,50009,61913,61904,61914,N,61910,61912,61916,
-61909,61917,61907,61903,50010,N,61915,50011,50253,N,N,N,N,N,61304,62449,62440,
-50255,62436,50256,N,N,62445,62439,62429,50254,62442,62437,62438,N,62424,62431,
-62446,N,62443,N,62435,N,62447,62430,62425,62444,N,62427,62441,62432,62448,
-62428,50252,62426,62433,62434,N,N,N,62845,N,62843,N,62882,N,62894,62885,62844,
-62840,62887,62846,62883,62842,62890,62839,62881,62886,62888,62891,62841,N,
-62895,62896,62889,62893,62884,N,63169,63172,N,50529,N,63171,63176,63174,50530,
-63165,63155,63154,50532,63167,63168,63164,63156,N,63161,62892,N,63157,50531,
-63163,N,63162,N,63158,63170,N,63159,63419,63173,63175,63166,63160,63420,63422,
-63416,50626,N,63429,63427,50627,63426,63425,63418,63415,63421,63430,63417,
-63423,N,63593,63598,63588,63591,50670,63595,N,63602,63424,N,63589,63599,63603,
-63594,63587,63597,N,63596,63601,63600,63428,63592,63586,63590,50766,50767,
-63585,N,63718,63709,63717,63714,63715,63708,63711,63719,63713,63712,63710,N,
-63716,N,63837,N,63838,N,63840,63839,63842,63841,63868,63867,63927,N,63928,N,
-63941,50808,50812,N,63951,50813,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,46015,N,N,N,50384,63177,N,
-50768,50769,N,46016,57582,N,47528,59632,N,N,60592,60593,60591,61355,61354,
-49735,61919,61356,61918,N,N,62451,50257,50259,62450,N,N,50258,N,62897,62899,
-62898,63178,50533,N,50671,63720,63843,N,N,63954,46017,N,58597,N,48802,N,N,N,
-60595,60594,N,61357,N,N,N,50260,50385,63431,63947,N,N,N,46018,48114,N,48803,N,
-62452,N,63604,46784,N,N,N,N,61358,N,N,N,50788,46785,48804,49736,63605,46786,N,
-59633,49266,60596,60597,N,49265,N,61359,49740,49738,49739,49737,61920,50012,N,
-N,N,62901,62900,62903,62902,50386,N,N,63179,N,63181,63180,50534,63432,N,63606,
-63607,50672,63844,63869,50805,N,56496,60598,61360,62453,57583,N,61361,61922,
-61921,N,N,N,N,63608,50770,N,63845,63870,N,N,N,47529,59634,59635,N,60599,47530,
-N,50013,61923,N,63183,50535,63184,63182,63609,N,63721,N,47531,N,61364,61363,
-61362,61924,N,N,61928,61927,61926,61925,50014,62454,62905,50387,62904,63185,
-63435,63434,50628,63433,63612,63611,63610,N,N,48115,N,60600,49741,N,62455,
-62456,63436,63613,N,N,63722,63846,63929,63956,48116,49742,61929,62457,63186,
-63614,N,N,48806,N,61365,61930,62458,62459,62460,62910,N,62906,50536,62909,
-62908,50388,62907,50390,N,50389,63188,63187,50537,50538,N,N,50630,63437,50629,
-N,63651,63652,63650,63649,50772,N,63723,63724,63725,50771,63847,63850,63849,
-63848,N,N,63955,N,N,N,N,N,N,N,N,N,N,N,N,N,N,49267,N,N,50021,62911,63189,N,
-50631,63438,N,N,63957,N,N,N,49268,N,N,N,61366,N,63439,N,63905,51530,56828,
-41290,41303,N,41305,41307,41311,41312,41315,41316,41319,41320,41323,41324,
-41327,41328,41331,41332,41335,41336,41339,41340,N,N,N,N,41414,41415,41418,
-41419,41416,41417,41308,41293,N,41295,N,41297,41298,41299,41300,N,41341,41342,
-41377,41378,41379,41380,41420,41421,41422,41438,41439,41440,41441,41442,N,N,
-41548,41549,41550,41289,N,41389,41539,41544,41390,N,41309,41310,41391,41423,
-41281,41424,41284,41537,41647,41648,41649,41650,41651,41652,41653,41654,41655,
-41656,41287,41286,41429,41431,41430,41288,41545,41679,41680,41681,41682,41683,
-41684,41685,41686,41687,41688,41689,41690,41691,41692,41693,41694,41695,41696,
-41697,41698,41699,41700,41701,41702,41703,41704,N,41538,N,N,41412,N,41705,
-41706,41707,41708,41709,41710,41711,41712,41713,41714,41715,41716,41717,41718,
-41719,41720,41721,41722,41723,41724,41725,41726,41792,41793,41794,41795,41313,
-41301,41314,N,N,N,N,N,N,41294,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41411,
-};
-
-static const struct unim_index big5_encmap[256] = {
-{__big5_encmap+0,162,247},{0,0,0},{__big5_encmap+86,199,217},{__big5_encmap+
-105,145,201},{__big5_encmap+162,1,81},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{__big5_encmap+243,19,62},{__big5_encmap+287,3,153},{
-__big5_encmap+438,26,191},{0,0,0},{__big5_encmap+604,96,125},{__big5_encmap+
-634,0,229},{__big5_encmap+864,5,66},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{__big5_encmap+926,0,254},{__big5_encmap+1181,
-5,41},{__big5_encmap+1218,163,163},{__big5_encmap+1219,142,213},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__big5_encmap+1291,0,255},{
-__big5_encmap+1547,0,254},{__big5_encmap+1802,0,255},{__big5_encmap+2058,0,253
-},{__big5_encmap+2312,0,255},{__big5_encmap+2568,5,252},{__big5_encmap+2816,1,
-255},{__big5_encmap+3071,1,255},{__big5_encmap+3326,0,255},{__big5_encmap+3582
-,1,253},{__big5_encmap+3835,0,255},{__big5_encmap+4091,3,255},{__big5_encmap+
-4344,0,255},{__big5_encmap+4600,1,250},{__big5_encmap+4850,1,255},{
-__big5_encmap+5105,0,255},{__big5_encmap+5361,2,255},{__big5_encmap+5615,1,255
-},{__big5_encmap+5870,0,255},{__big5_encmap+6126,0,255},{__big5_encmap+6382,0,
-255},{__big5_encmap+6638,0,249},{__big5_encmap+6888,6,255},{__big5_encmap+7138
-,0,253},{__big5_encmap+7392,0,255},{__big5_encmap+7648,0,255},{__big5_encmap+
-7904,18,253},{__big5_encmap+8140,4,255},{__big5_encmap+8392,0,252},{
-__big5_encmap+8645,0,255},{__big5_encmap+8901,0,249},{__big5_encmap+9151,0,253
-},{__big5_encmap+9405,0,255},{__big5_encmap+9661,0,255},{__big5_encmap+9917,0,
-255},{__big5_encmap+10173,0,255},{__big5_encmap+10429,1,255},{__big5_encmap+
-10684,0,255},{__big5_encmap+10940,0,255},{__big5_encmap+11196,0,255},{
-__big5_encmap+11452,0,254},{__big5_encmap+11707,1,253},{__big5_encmap+11960,2,
-255},{__big5_encmap+12214,1,251},{__big5_encmap+12465,0,255},{__big5_encmap+
-12721,0,255},{__big5_encmap+12977,0,254},{__big5_encmap+13232,0,251},{
-__big5_encmap+13484,3,156},{__big5_encmap+13638,54,255},{__big5_encmap+13840,
-0,254},{__big5_encmap+14095,0,255},{__big5_encmap+14351,0,254},{__big5_encmap+
-14606,0,255},{__big5_encmap+14862,1,255},{__big5_encmap+15117,0,255},{
-__big5_encmap+15373,0,254},{__big5_encmap+15628,0,255},{__big5_encmap+15884,0,
-254},{__big5_encmap+16139,1,255},{__big5_encmap+16394,0,255},{__big5_encmap+
-16650,0,159},{__big5_encmap+16810,55,254},{__big5_encmap+17010,0,255},{
-__big5_encmap+17266,0,255},{__big5_encmap+17522,0,255},{__big5_encmap+17778,0,
-255},{__big5_encmap+18034,0,255},{__big5_encmap+18290,0,255},{__big5_encmap+
-18546,0,255},{__big5_encmap+18802,0,131},{__big5_encmap+18934,119,229},{
-__big5_encmap+19045,28,255},{__big5_encmap+19273,0,255},{__big5_encmap+19529,
-0,254},{__big5_encmap+19784,0,255},{__big5_encmap+20040,1,254},{__big5_encmap+
-20294,1,253},{__big5_encmap+20547,5,255},{__big5_encmap+20798,0,255},{
-__big5_encmap+21054,0,255},{__big5_encmap+21310,0,164},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{__big5_encmap+21475,12,13},{0,0,0},{0,0,0},{0,0,0},{__big5_encmap+21477,48,
-107},{__big5_encmap+21537,1,227},
-};
-
-static const ucs2_t __cp950ext_decmap[224] = {
-8231,U,U,U,U,U,U,U,U,65105,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,U,U,U,U,U,175,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
-U,U,U,U,U,U,U,65374,U,U,U,U,U,U,U,U,U,U,U,U,U,U,8853,8857,8725,65128,U,65509,
-U,65504,65505,8364,30849,37561,35023,22715,24658,31911,23290,9556,9574,9559,
-9568,9580,9571,9562,9577,9565,9554,9572,9557,9566,9578,9569,9560,9575,9563,
-9555,9573,9558,9567,9579,9570,9561,9576,9564,9553,9552,9581,9582,9584,9583,
-9619,
-};
-
-static const struct dbcs_index cp950ext_decmap[256] = {
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__cp950ext_decmap+0,69,243
-},{__cp950ext_decmap+175,65,71},{__cp950ext_decmap+182,225,225},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__cp950ext_decmap+183,214,254
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-};
-
-static const DBCHAR __cp950ext_encmap[581] = {
-41410,41285,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41953,41537,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-41458,N,N,N,41459,63992,63974,63983,63965,63976,63985,63967,63980,63989,63971,
-63982,63991,63973,N,63986,63968,N,63988,63970,63975,63984,63966,63981,63990,
-63972,N,63987,63969,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,63998,63961,63964,63962,63958,63963,63960,63959,41294,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41538,41470,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41536,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,41443,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,41542,41543,N,N,N,41540,
-};
-
-static const struct unim_index cp950ext_encmap[256] = {
-{__cp950ext_encmap+0,175,175},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
-{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__cp950ext_encmap+1,39,172},{0,
-0,0},{__cp950ext_encmap+135,21,153},{0,0,0},{0,0,0},{__cp950ext_encmap+268,81,
-147},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{__cp950ext_encmap+335,187,187},{0,0,0},{__cp950ext_encmap+
-336,250,250},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__cp950ext_encmap+337,
-82,82},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__cp950ext_encmap+338,129,129},{0,0,0},{
-0,0,0},{0,0,0},{__cp950ext_encmap+339,167,167},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__cp950ext_encmap+
-340,207,207},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{__cp950ext_encmap+341,185,185},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{
-0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0
-},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,
-0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{__cp950ext_encmap+342,81,104},{
-__cp950ext_encmap+366,15,229},
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/multibytecodec.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/multibytecodec.c
deleted file mode 100644
index 98ba776..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/multibytecodec.c
+++ /dev/null
@@ -1,1829 +0,0 @@
-/*
- * multibytecodec.c: Common Multibyte Codec Implementation
- *
- * Written by Hye-Shik Chang <perky@FreeBSD.org>
- */
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#include "structmember.h"
-#include "multibytecodec.h"
-
-typedef struct {
-    const Py_UNICODE    *inbuf, *inbuf_top, *inbuf_end;
-    unsigned char       *outbuf, *outbuf_end;
-    PyObject            *excobj, *outobj;
-} MultibyteEncodeBuffer;
-
-typedef struct {
-    const unsigned char *inbuf, *inbuf_top, *inbuf_end;
-    Py_UNICODE          *outbuf, *outbuf_end;
-    PyObject            *excobj, *outobj;
-} MultibyteDecodeBuffer;
-
-PyDoc_STRVAR(MultibyteCodec_Encode__doc__,
-"I.encode(unicode[, errors]) -> (string, length consumed)\n\
-\n\
-Return an encoded string version of `unicode'. errors may be given to\n\
-set a different error handling scheme. Default is 'strict' meaning that\n\
-encoding errors raise a UnicodeEncodeError. Other possible values are\n\
-'ignore', 'replace' and 'xmlcharrefreplace' as well as any other name\n\
-registered with codecs.register_error that can handle UnicodeEncodeErrors.");
-
-PyDoc_STRVAR(MultibyteCodec_Decode__doc__,
-"I.decode(string[, errors]) -> (unicodeobject, length consumed)\n\
-\n\
-Decodes `string' using I, an MultibyteCodec instance. errors may be given\n\
-to set a different error handling scheme. Default is 'strict' meaning\n\
-that encoding errors raise a UnicodeDecodeError. Other possible values\n\
-are 'ignore' and 'replace' as well as any other name registered with\n\
-codecs.register_error that is able to handle UnicodeDecodeErrors.");
-
-static char *codeckwarglist[] = {"input", "errors", NULL};
-static char *incnewkwarglist[] = {"errors", NULL};
-static char *incrementalkwarglist[] = {"input", "final", NULL};
-static char *streamkwarglist[] = {"stream", "errors", NULL};
-
-static PyObject *multibytecodec_encode(MultibyteCodec *,
-                MultibyteCodec_State *, const Py_UNICODE **, Py_ssize_t,
-                PyObject *, int);
-
-#define MBENC_RESET     MBENC_MAX<<1 /* reset after an encoding session */
-
-static PyObject *
-make_tuple(PyObject *object, Py_ssize_t len)
-{
-    PyObject *v, *w;
-
-    if (object == NULL)
-        return NULL;
-
-    v = PyTuple_New(2);
-    if (v == NULL) {
-        Py_DECREF(object);
-        return NULL;
-    }
-    PyTuple_SET_ITEM(v, 0, object);
-
-    w = PyInt_FromSsize_t(len);
-    if (w == NULL) {
-        Py_DECREF(v);
-        return NULL;
-    }
-    PyTuple_SET_ITEM(v, 1, w);
-
-    return v;
-}
-
-static PyObject *
-internal_error_callback(const char *errors)
-{
-    if (errors == NULL || strcmp(errors, "strict") == 0)
-        return ERROR_STRICT;
-    else if (strcmp(errors, "ignore") == 0)
-        return ERROR_IGNORE;
-    else if (strcmp(errors, "replace") == 0)
-        return ERROR_REPLACE;
-    else
-        return PyString_FromString(errors);
-}
-
-static PyObject *
-call_error_callback(PyObject *errors, PyObject *exc)
-{
-    PyObject *args, *cb, *r;
-
-    assert(PyString_Check(errors));
-    cb = PyCodec_LookupError(PyString_AS_STRING(errors));
-    if (cb == NULL)
-        return NULL;
-
-    args = PyTuple_New(1);
-    if (args == NULL) {
-        Py_DECREF(cb);
-        return NULL;
-    }
-
-    PyTuple_SET_ITEM(args, 0, exc);
-    Py_INCREF(exc);
-
-    r = PyObject_CallObject(cb, args);
-    Py_DECREF(args);
-    Py_DECREF(cb);
-    return r;
-}
-
-static PyObject *
-codecctx_errors_get(MultibyteStatefulCodecContext *self)
-{
-    const char *errors;
-
-    if (self->errors == ERROR_STRICT)
-        errors = "strict";
-    else if (self->errors == ERROR_IGNORE)
-        errors = "ignore";
-    else if (self->errors == ERROR_REPLACE)
-        errors = "replace";
-    else {
-        Py_INCREF(self->errors);
-        return self->errors;
-    }
-
-    return PyString_FromString(errors);
-}
-
-static int
-codecctx_errors_set(MultibyteStatefulCodecContext *self, PyObject *value,
-                    void *closure)
-{
-    PyObject *cb;
-
-    if (!PyString_Check(value)) {
-        PyErr_SetString(PyExc_TypeError, "errors must be a string");
-        return -1;
-    }
-
-    cb = internal_error_callback(PyString_AS_STRING(value));
-    if (cb == NULL)
-        return -1;
-
-    ERROR_DECREF(self->errors);
-    self->errors = cb;
-    return 0;
-}
-
-/* This getset handlers list is used by all the stateful codec objects */
-static PyGetSetDef codecctx_getsets[] = {
-    {"errors",          (getter)codecctx_errors_get,
-                    (setter)codecctx_errors_set,
-                    PyDoc_STR("how to treat errors")},
-    {NULL,}
-};
-
-static int
-expand_encodebuffer(MultibyteEncodeBuffer *buf, Py_ssize_t esize)
-{
-    Py_ssize_t orgpos, orgsize, incsize;
-
-    orgpos = (Py_ssize_t)((char *)buf->outbuf -
-                            PyString_AS_STRING(buf->outobj));
-    orgsize = PyString_GET_SIZE(buf->outobj);
-    incsize = (esize < (orgsize >> 1) ? (orgsize >> 1) | 1 : esize);
-
-    if (orgsize > PY_SSIZE_T_MAX - incsize)
-        return -1;
-
-    if (_PyString_Resize(&buf->outobj, orgsize + incsize) == -1)
-        return -1;
-
-    buf->outbuf = (unsigned char *)PyString_AS_STRING(buf->outobj) +orgpos;
-    buf->outbuf_end = (unsigned char *)PyString_AS_STRING(buf->outobj)
-        + PyString_GET_SIZE(buf->outobj);
-
-    return 0;
-}
-#define REQUIRE_ENCODEBUFFER(buf, s) {                                  \
-    if ((s) < 1 || (buf)->outbuf + (s) > (buf)->outbuf_end)             \
-        if (expand_encodebuffer(buf, s) == -1)                          \
-            goto errorexit;                                             \
-}
-
-static int
-expand_decodebuffer(MultibyteDecodeBuffer *buf, Py_ssize_t esize)
-{
-    Py_ssize_t orgpos, orgsize;
-
-    orgpos = (Py_ssize_t)(buf->outbuf - PyUnicode_AS_UNICODE(buf->outobj));
-    orgsize = PyUnicode_GET_SIZE(buf->outobj);
-    if (PyUnicode_Resize(&buf->outobj, orgsize + (
-        esize < (orgsize >> 1) ? (orgsize >> 1) | 1 : esize)) == -1)
-        return -1;
-
-    buf->outbuf = PyUnicode_AS_UNICODE(buf->outobj) + orgpos;
-    buf->outbuf_end = PyUnicode_AS_UNICODE(buf->outobj)
-                      + PyUnicode_GET_SIZE(buf->outobj);
-
-    return 0;
-}
-#define REQUIRE_DECODEBUFFER(buf, s) {                                  \
-    if ((s) < 1 || (buf)->outbuf + (s) > (buf)->outbuf_end)             \
-        if (expand_decodebuffer(buf, s) == -1)                          \
-            goto errorexit;                                             \
-}
-
-
-/**
- * MultibyteCodec object
- */
-
-static int
-multibytecodec_encerror(MultibyteCodec *codec,
-                        MultibyteCodec_State *state,
-                        MultibyteEncodeBuffer *buf,
-                        PyObject *errors, Py_ssize_t e)
-{
-    PyObject *retobj = NULL, *retstr = NULL, *tobj;
-    Py_ssize_t retstrsize, newpos;
-    Py_ssize_t esize, start, end;
-    const char *reason;
-
-    if (e > 0) {
-        reason = "illegal multibyte sequence";
-        esize = e;
-    }
-    else {
-        switch (e) {
-        case MBERR_TOOSMALL:
-            REQUIRE_ENCODEBUFFER(buf, -1);
-            return 0; /* retry it */
-        case MBERR_TOOFEW:
-            reason = "incomplete multibyte sequence";
-            esize = (Py_ssize_t)(buf->inbuf_end - buf->inbuf);
-            break;
-        case MBERR_INTERNAL:
-            PyErr_SetString(PyExc_RuntimeError,
-                            "internal codec error");
-            return -1;
-        default:
-            PyErr_SetString(PyExc_RuntimeError,
-                            "unknown runtime error");
-            return -1;
-        }
-    }
-
-    if (errors == ERROR_REPLACE) {
-        const Py_UNICODE replchar = '?', *inbuf = &replchar;
-        Py_ssize_t r;
-
-        for (;;) {
-            Py_ssize_t outleft;
-
-            outleft = (Py_ssize_t)(buf->outbuf_end - buf->outbuf);
-            r = codec->encode(state, codec->config, &inbuf, 1,
-                              &buf->outbuf, outleft, 0);
-            if (r == MBERR_TOOSMALL) {
-                REQUIRE_ENCODEBUFFER(buf, -1);
-                continue;
-            }
-            else
-                break;
-        }
-
-        if (r != 0) {
-            REQUIRE_ENCODEBUFFER(buf, 1);
-            *buf->outbuf++ = '?';
-        }
-    }
-    if (errors == ERROR_IGNORE || errors == ERROR_REPLACE) {
-        buf->inbuf += esize;
-        return 0;
-    }
-
-    start = (Py_ssize_t)(buf->inbuf - buf->inbuf_top);
-    end = start + esize;
-
-    /* use cached exception object if available */
-    if (buf->excobj == NULL) {
-        buf->excobj = PyUnicodeEncodeError_Create(codec->encoding,
-                        buf->inbuf_top,
-                        buf->inbuf_end - buf->inbuf_top,
-                        start, end, reason);
-        if (buf->excobj == NULL)
-            goto errorexit;
-    }
-    else
-        if (PyUnicodeEncodeError_SetStart(buf->excobj, start) != 0 ||
-            PyUnicodeEncodeError_SetEnd(buf->excobj, end) != 0 ||
-            PyUnicodeEncodeError_SetReason(buf->excobj, reason) != 0)
-            goto errorexit;
-
-    if (errors == ERROR_STRICT) {
-        PyCodec_StrictErrors(buf->excobj);
-        goto errorexit;
-    }
-
-    retobj = call_error_callback(errors, buf->excobj);
-    if (retobj == NULL)
-        goto errorexit;
-
-    if (!PyTuple_Check(retobj) || PyTuple_GET_SIZE(retobj) != 2 ||
-        !PyUnicode_Check((tobj = PyTuple_GET_ITEM(retobj, 0))) ||
-        !(PyInt_Check(PyTuple_GET_ITEM(retobj, 1)) ||
-          PyLong_Check(PyTuple_GET_ITEM(retobj, 1)))) {
-        PyErr_SetString(PyExc_TypeError,
-                        "encoding error handler must return "
-                        "(unicode, int) tuple");
-        goto errorexit;
-    }
-
-    {
-        const Py_UNICODE *uraw = PyUnicode_AS_UNICODE(tobj);
-
-        retstr = multibytecodec_encode(codec, state, &uraw,
-                        PyUnicode_GET_SIZE(tobj), ERROR_STRICT,
-                        MBENC_FLUSH);
-        if (retstr == NULL)
-            goto errorexit;
-    }
-
-    retstrsize = PyString_GET_SIZE(retstr);
-    REQUIRE_ENCODEBUFFER(buf, retstrsize);
-
-    memcpy(buf->outbuf, PyString_AS_STRING(retstr), retstrsize);
-    buf->outbuf += retstrsize;
-
-    newpos = PyInt_AsSsize_t(PyTuple_GET_ITEM(retobj, 1));
-    if (newpos < 0 && !PyErr_Occurred())
-        newpos += (Py_ssize_t)(buf->inbuf_end - buf->inbuf_top);
-    if (newpos < 0 || buf->inbuf_top + newpos > buf->inbuf_end) {
-        PyErr_Clear();
-        PyErr_Format(PyExc_IndexError,
-                     "position %zd from error handler out of bounds",
-                     newpos);
-        goto errorexit;
-    }
-    buf->inbuf = buf->inbuf_top + newpos;
-
-    Py_DECREF(retobj);
-    Py_DECREF(retstr);
-    return 0;
-
-errorexit:
-    Py_XDECREF(retobj);
-    Py_XDECREF(retstr);
-    return -1;
-}
-
-static int
-multibytecodec_decerror(MultibyteCodec *codec,
-                        MultibyteCodec_State *state,
-                        MultibyteDecodeBuffer *buf,
-                        PyObject *errors, Py_ssize_t e)
-{
-    PyObject *retobj = NULL, *retuni = NULL;
-    Py_ssize_t retunisize, newpos;
-    const char *reason;
-    Py_ssize_t esize, start, end;
-
-    if (e > 0) {
-        reason = "illegal multibyte sequence";
-        esize = e;
-    }
-    else {
-        switch (e) {
-        case MBERR_TOOSMALL:
-            REQUIRE_DECODEBUFFER(buf, -1);
-            return 0; /* retry it */
-        case MBERR_TOOFEW:
-            reason = "incomplete multibyte sequence";
-            esize = (Py_ssize_t)(buf->inbuf_end - buf->inbuf);
-            break;
-        case MBERR_INTERNAL:
-            PyErr_SetString(PyExc_RuntimeError,
-                            "internal codec error");
-            return -1;
-        default:
-            PyErr_SetString(PyExc_RuntimeError,
-                            "unknown runtime error");
-            return -1;
-        }
-    }
-
-    if (errors == ERROR_REPLACE) {
-        REQUIRE_DECODEBUFFER(buf, 1);
-        *buf->outbuf++ = Py_UNICODE_REPLACEMENT_CHARACTER;
-    }
-    if (errors == ERROR_IGNORE || errors == ERROR_REPLACE) {
-        buf->inbuf += esize;
-        return 0;
-    }
-
-    start = (Py_ssize_t)(buf->inbuf - buf->inbuf_top);
-    end = start + esize;
-
-    /* use cached exception object if available */
-    if (buf->excobj == NULL) {
-        buf->excobj = PyUnicodeDecodeError_Create(codec->encoding,
-                        (const char *)buf->inbuf_top,
-                        (Py_ssize_t)(buf->inbuf_end - buf->inbuf_top),
-                        start, end, reason);
-        if (buf->excobj == NULL)
-            goto errorexit;
-    }
-    else
-        if (PyUnicodeDecodeError_SetStart(buf->excobj, start) ||
-            PyUnicodeDecodeError_SetEnd(buf->excobj, end) ||
-            PyUnicodeDecodeError_SetReason(buf->excobj, reason))
-            goto errorexit;
-
-    if (errors == ERROR_STRICT) {
-        PyCodec_StrictErrors(buf->excobj);
-        goto errorexit;
-    }
-
-    retobj = call_error_callback(errors, buf->excobj);
-    if (retobj == NULL)
-        goto errorexit;
-
-    if (!PyTuple_Check(retobj) || PyTuple_GET_SIZE(retobj) != 2 ||
-        !PyUnicode_Check((retuni = PyTuple_GET_ITEM(retobj, 0))) ||
-        !(PyInt_Check(PyTuple_GET_ITEM(retobj, 1)) ||
-          PyLong_Check(PyTuple_GET_ITEM(retobj, 1)))) {
-        PyErr_SetString(PyExc_TypeError,
-                        "decoding error handler must return "
-                        "(unicode, int) tuple");
-        goto errorexit;
-    }
-
-    retunisize = PyUnicode_GET_SIZE(retuni);
-    if (retunisize > 0) {
-        REQUIRE_DECODEBUFFER(buf, retunisize);
-        memcpy((char *)buf->outbuf, PyUnicode_AS_DATA(retuni),
-                        retunisize * Py_UNICODE_SIZE);
-        buf->outbuf += retunisize;
-    }
-
-    newpos = PyInt_AsSsize_t(PyTuple_GET_ITEM(retobj, 1));
-    if (newpos < 0 && !PyErr_Occurred())
-        newpos += (Py_ssize_t)(buf->inbuf_end - buf->inbuf_top);
-    if (newpos < 0 || buf->inbuf_top + newpos > buf->inbuf_end) {
-        PyErr_Clear();
-        PyErr_Format(PyExc_IndexError,
-                     "position %zd from error handler out of bounds",
-                     newpos);
-        goto errorexit;
-    }
-    buf->inbuf = buf->inbuf_top + newpos;
-    Py_DECREF(retobj);
-    return 0;
-
-errorexit:
-    Py_XDECREF(retobj);
-    return -1;
-}
-
-static PyObject *
-multibytecodec_encode(MultibyteCodec *codec,
-                      MultibyteCodec_State *state,
-                      const Py_UNICODE **data, Py_ssize_t datalen,
-                      PyObject *errors, int flags)
-{
-    MultibyteEncodeBuffer buf;
-    Py_ssize_t finalsize, r = 0;
-
-    if (datalen == 0 && !(flags & MBENC_RESET))
-        return PyString_FromString("");
-
-    buf.excobj = NULL;
-    buf.inbuf = buf.inbuf_top = *data;
-    buf.inbuf_end = buf.inbuf_top + datalen;
-
-    if (datalen > (PY_SSIZE_T_MAX - 16) / 2) {
-        PyErr_NoMemory();
-        goto errorexit;
-    }
-
-    buf.outobj = PyString_FromStringAndSize(NULL, datalen * 2 + 16);
-    if (buf.outobj == NULL)
-        goto errorexit;
-    buf.outbuf = (unsigned char *)PyString_AS_STRING(buf.outobj);
-    buf.outbuf_end = buf.outbuf + PyString_GET_SIZE(buf.outobj);
-
-    while (buf.inbuf < buf.inbuf_end) {
-        Py_ssize_t inleft, outleft;
-
-        /* we don't reuse inleft and outleft here.
-         * error callbacks can relocate the cursor anywhere on buffer*/
-        inleft = (Py_ssize_t)(buf.inbuf_end - buf.inbuf);
-        outleft = (Py_ssize_t)(buf.outbuf_end - buf.outbuf);
-        r = codec->encode(state, codec->config, &buf.inbuf, inleft,
-                          &buf.outbuf, outleft, flags);
-        if ((r == 0) || (r == MBERR_TOOFEW && !(flags & MBENC_FLUSH)))
-            break;
-        else if (multibytecodec_encerror(codec, state, &buf, errors,r))
-            goto errorexit;
-        else if (r == MBERR_TOOFEW)
-            break;
-    }
-
-    if (codec->encreset != NULL && (flags & MBENC_RESET))
-        for (;;) {
-            Py_ssize_t outleft;
-
-            outleft = (Py_ssize_t)(buf.outbuf_end - buf.outbuf);
-            r = codec->encreset(state, codec->config, &buf.outbuf,
-                                outleft);
-            if (r == 0)
-                break;
-            else if (multibytecodec_encerror(codec, state,
-                                             &buf, errors, r))
-                goto errorexit;
-        }
-
-    finalsize = (Py_ssize_t)((char *)buf.outbuf -
-                             PyString_AS_STRING(buf.outobj));
-
-    if (finalsize != PyString_GET_SIZE(buf.outobj))
-        if (_PyString_Resize(&buf.outobj, finalsize) == -1)
-            goto errorexit;
-
-	*data = buf.inbuf;
-    Py_XDECREF(buf.excobj);
-    return buf.outobj;
-
-errorexit:
-    Py_XDECREF(buf.excobj);
-    Py_XDECREF(buf.outobj);
-    return NULL;
-}
-
-static PyObject *
-MultibyteCodec_Encode(MultibyteCodecObject *self,
-                      PyObject *args, PyObject *kwargs)
-{
-    MultibyteCodec_State state;
-    Py_UNICODE *data;
-    PyObject *errorcb, *r, *arg, *ucvt;
-    const char *errors = NULL;
-    Py_ssize_t datalen;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|z:encode",
-                            codeckwarglist, &arg, &errors))
-        return NULL;
-
-    if (PyUnicode_Check(arg))
-        ucvt = NULL;
-    else {
-        arg = ucvt = PyObject_Unicode(arg);
-        if (arg == NULL)
-            return NULL;
-        else if (!PyUnicode_Check(arg)) {
-            PyErr_SetString(PyExc_TypeError,
-                "couldn't convert the object to unicode.");
-            Py_DECREF(ucvt);
-            return NULL;
-        }
-    }
-
-    data = PyUnicode_AS_UNICODE(arg);
-    datalen = PyUnicode_GET_SIZE(arg);
-
-    errorcb = internal_error_callback(errors);
-    if (errorcb == NULL) {
-        Py_XDECREF(ucvt);
-        return NULL;
-    }
-
-    if (self->codec->encinit != NULL &&
-        self->codec->encinit(&state, self->codec->config) != 0)
-        goto errorexit;
-    r = multibytecodec_encode(self->codec, &state,
-                    (const Py_UNICODE **)&data, datalen, errorcb,
-                    MBENC_FLUSH | MBENC_RESET);
-    if (r == NULL)
-        goto errorexit;
-
-    ERROR_DECREF(errorcb);
-    Py_XDECREF(ucvt);
-    return make_tuple(r, datalen);
-
-errorexit:
-    ERROR_DECREF(errorcb);
-    Py_XDECREF(ucvt);
-    return NULL;
-}
-
-static PyObject *
-MultibyteCodec_Decode(MultibyteCodecObject *self,
-                      PyObject *args, PyObject *kwargs)
-{
-    MultibyteCodec_State state;
-    MultibyteDecodeBuffer buf;
-    PyObject *errorcb;
-    Py_buffer pdata;
-    const char *data, *errors = NULL;
-    Py_ssize_t datalen, finalsize;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s*|z:decode",
-                            codeckwarglist, &pdata, &errors))
-        return NULL;
-    data = pdata.buf;
-    datalen = pdata.len;
-
-    errorcb = internal_error_callback(errors);
-    if (errorcb == NULL) {
-        PyBuffer_Release(&pdata);
-        return NULL;
-    }
-
-    if (datalen == 0) {
-        PyBuffer_Release(&pdata);
-        ERROR_DECREF(errorcb);
-        return make_tuple(PyUnicode_FromUnicode(NULL, 0), 0);
-    }
-
-    buf.excobj = NULL;
-    buf.inbuf = buf.inbuf_top = (unsigned char *)data;
-    buf.inbuf_end = buf.inbuf_top + datalen;
-    buf.outobj = PyUnicode_FromUnicode(NULL, datalen);
-    if (buf.outobj == NULL)
-        goto errorexit;
-    buf.outbuf = PyUnicode_AS_UNICODE(buf.outobj);
-    buf.outbuf_end = buf.outbuf + PyUnicode_GET_SIZE(buf.outobj);
-
-    if (self->codec->decinit != NULL &&
-        self->codec->decinit(&state, self->codec->config) != 0)
-        goto errorexit;
-
-    while (buf.inbuf < buf.inbuf_end) {
-        Py_ssize_t inleft, outleft, r;
-
-        inleft = (Py_ssize_t)(buf.inbuf_end - buf.inbuf);
-        outleft = (Py_ssize_t)(buf.outbuf_end - buf.outbuf);
-
-        r = self->codec->decode(&state, self->codec->config,
-                        &buf.inbuf, inleft, &buf.outbuf, outleft);
-        if (r == 0)
-            break;
-        else if (multibytecodec_decerror(self->codec, &state,
-                                         &buf, errorcb, r))
-            goto errorexit;
-    }
-
-    finalsize = (Py_ssize_t)(buf.outbuf -
-                             PyUnicode_AS_UNICODE(buf.outobj));
-
-    if (finalsize != PyUnicode_GET_SIZE(buf.outobj))
-        if (PyUnicode_Resize(&buf.outobj, finalsize) == -1)
-            goto errorexit;
-
-    PyBuffer_Release(&pdata);
-    Py_XDECREF(buf.excobj);
-    ERROR_DECREF(errorcb);
-    return make_tuple(buf.outobj, datalen);
-
-errorexit:
-    PyBuffer_Release(&pdata);
-    ERROR_DECREF(errorcb);
-    Py_XDECREF(buf.excobj);
-    Py_XDECREF(buf.outobj);
-
-    return NULL;
-}
-
-static struct PyMethodDef multibytecodec_methods[] = {
-    {"encode",          (PyCFunction)MultibyteCodec_Encode,
-                    METH_VARARGS | METH_KEYWORDS,
-                    MultibyteCodec_Encode__doc__},
-    {"decode",          (PyCFunction)MultibyteCodec_Decode,
-                    METH_VARARGS | METH_KEYWORDS,
-                    MultibyteCodec_Decode__doc__},
-    {NULL,              NULL},
-};
-
-static void
-multibytecodec_dealloc(MultibyteCodecObject *self)
-{
-    PyObject_Del(self);
-}
-
-static PyTypeObject MultibyteCodec_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "MultibyteCodec",                   /* tp_name */
-    sizeof(MultibyteCodecObject),       /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)multibytecodec_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                 /* tp_flags */
-    0,                                  /* tp_doc */
-    0,                                  /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iterext */
-    multibytecodec_methods,             /* tp_methods */
-};
-
-
-/**
- * Utility functions for stateful codec mechanism
- */
-
-#define STATEFUL_DCTX(o)        ((MultibyteStatefulDecoderContext *)(o))
-#define STATEFUL_ECTX(o)        ((MultibyteStatefulEncoderContext *)(o))
-
-static PyObject *
-encoder_encode_stateful(MultibyteStatefulEncoderContext *ctx,
-                        PyObject *unistr, int final)
-{
-    PyObject *ucvt, *r = NULL;
-    Py_UNICODE *inbuf, *inbuf_end, *inbuf_tmp = NULL;
-    Py_ssize_t datalen, origpending;
-
-    if (PyUnicode_Check(unistr))
-        ucvt = NULL;
-    else {
-        unistr = ucvt = PyObject_Unicode(unistr);
-        if (unistr == NULL)
-            return NULL;
-        else if (!PyUnicode_Check(unistr)) {
-            PyErr_SetString(PyExc_TypeError,
-                "couldn't convert the object to unicode.");
-            Py_DECREF(ucvt);
-            return NULL;
-        }
-    }
-
-    datalen = PyUnicode_GET_SIZE(unistr);
-    origpending = ctx->pendingsize;
-
-    if (origpending > 0) {
-        if (datalen > PY_SSIZE_T_MAX - ctx->pendingsize) {
-            PyErr_NoMemory();
-            /* inbuf_tmp == NULL */
-            goto errorexit;
-        }
-        inbuf_tmp = PyMem_New(Py_UNICODE, datalen + ctx->pendingsize);
-        if (inbuf_tmp == NULL)
-            goto errorexit;
-        memcpy(inbuf_tmp, ctx->pending,
-            Py_UNICODE_SIZE * ctx->pendingsize);
-        memcpy(inbuf_tmp + ctx->pendingsize,
-            PyUnicode_AS_UNICODE(unistr),
-            Py_UNICODE_SIZE * datalen);
-        datalen += ctx->pendingsize;
-        ctx->pendingsize = 0;
-        inbuf = inbuf_tmp;
-    }
-    else
-        inbuf = (Py_UNICODE *)PyUnicode_AS_UNICODE(unistr);
-
-    inbuf_end = inbuf + datalen;
-
-    r = multibytecodec_encode(ctx->codec, &ctx->state,
-                    (const Py_UNICODE **)&inbuf, datalen,
-                    ctx->errors, final ? MBENC_FLUSH | MBENC_RESET : 0);
-    if (r == NULL) {
-        /* recover the original pending buffer */
-        if (origpending > 0)
-            memcpy(ctx->pending, inbuf_tmp,
-                Py_UNICODE_SIZE * origpending);
-        ctx->pendingsize = origpending;
-        goto errorexit;
-    }
-
-    if (inbuf < inbuf_end) {
-        ctx->pendingsize = (Py_ssize_t)(inbuf_end - inbuf);
-        if (ctx->pendingsize > MAXENCPENDING) {
-            /* normal codecs can't reach here */
-            ctx->pendingsize = 0;
-            PyErr_SetString(PyExc_UnicodeError,
-                            "pending buffer overflow");
-            goto errorexit;
-        }
-        memcpy(ctx->pending, inbuf,
-            ctx->pendingsize * Py_UNICODE_SIZE);
-    }
-
-    if (inbuf_tmp != NULL)
-        PyMem_Del(inbuf_tmp);
-    Py_XDECREF(ucvt);
-    return r;
-
-errorexit:
-    if (inbuf_tmp != NULL)
-        PyMem_Del(inbuf_tmp);
-    Py_XDECREF(r);
-    Py_XDECREF(ucvt);
-    return NULL;
-}
-
-static int
-decoder_append_pending(MultibyteStatefulDecoderContext *ctx,
-                       MultibyteDecodeBuffer *buf)
-{
-    Py_ssize_t npendings;
-
-    npendings = (Py_ssize_t)(buf->inbuf_end - buf->inbuf);
-    if (npendings + ctx->pendingsize > MAXDECPENDING ||
-        npendings > PY_SSIZE_T_MAX - ctx->pendingsize) {
-            PyErr_SetString(PyExc_UnicodeError, "pending buffer overflow");
-            return -1;
-    }
-    memcpy(ctx->pending + ctx->pendingsize, buf->inbuf, npendings);
-    ctx->pendingsize += npendings;
-    return 0;
-}
-
-static int
-decoder_prepare_buffer(MultibyteDecodeBuffer *buf, const char *data,
-                       Py_ssize_t size)
-{
-    buf->inbuf = buf->inbuf_top = (const unsigned char *)data;
-    buf->inbuf_end = buf->inbuf_top + size;
-    if (buf->outobj == NULL) { /* only if outobj is not allocated yet */
-        buf->outobj = PyUnicode_FromUnicode(NULL, size);
-        if (buf->outobj == NULL)
-            return -1;
-        buf->outbuf = PyUnicode_AS_UNICODE(buf->outobj);
-        buf->outbuf_end = buf->outbuf +
-                          PyUnicode_GET_SIZE(buf->outobj);
-    }
-
-    return 0;
-}
-
-static int
-decoder_feed_buffer(MultibyteStatefulDecoderContext *ctx,
-                    MultibyteDecodeBuffer *buf)
-{
-    while (buf->inbuf < buf->inbuf_end) {
-        Py_ssize_t inleft, outleft;
-        Py_ssize_t r;
-
-        inleft = (Py_ssize_t)(buf->inbuf_end - buf->inbuf);
-        outleft = (Py_ssize_t)(buf->outbuf_end - buf->outbuf);
-
-        r = ctx->codec->decode(&ctx->state, ctx->codec->config,
-            &buf->inbuf, inleft, &buf->outbuf, outleft);
-        if (r == 0 || r == MBERR_TOOFEW)
-            break;
-        else if (multibytecodec_decerror(ctx->codec, &ctx->state,
-                                         buf, ctx->errors, r))
-            return -1;
-    }
-    return 0;
-}
-
-
-/**
- * MultibyteIncrementalEncoder object
- */
-
-static PyObject *
-mbiencoder_encode(MultibyteIncrementalEncoderObject *self,
-                  PyObject *args, PyObject *kwargs)
-{
-    PyObject *data;
-    int final = 0;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|i:encode",
-                    incrementalkwarglist, &data, &final))
-        return NULL;
-
-    return encoder_encode_stateful(STATEFUL_ECTX(self), data, final);
-}
-
-static PyObject *
-mbiencoder_reset(MultibyteIncrementalEncoderObject *self)
-{
-    if (self->codec->decreset != NULL &&
-        self->codec->decreset(&self->state, self->codec->config) != 0)
-        return NULL;
-    self->pendingsize = 0;
-
-    Py_RETURN_NONE;
-}
-
-static struct PyMethodDef mbiencoder_methods[] = {
-    {"encode",          (PyCFunction)mbiencoder_encode,
-                    METH_VARARGS | METH_KEYWORDS, NULL},
-    {"reset",           (PyCFunction)mbiencoder_reset,
-                    METH_NOARGS, NULL},
-    {NULL,              NULL},
-};
-
-static PyObject *
-mbiencoder_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    MultibyteIncrementalEncoderObject *self;
-    PyObject *codec = NULL;
-    char *errors = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|s:IncrementalEncoder",
-                                     incnewkwarglist, &errors))
-        return NULL;
-
-    self = (MultibyteIncrementalEncoderObject *)type->tp_alloc(type, 0);
-    if (self == NULL)
-        return NULL;
-
-    codec = PyObject_GetAttrString((PyObject *)type, "codec");
-    if (codec == NULL)
-        goto errorexit;
-    if (!MultibyteCodec_Check(codec)) {
-        PyErr_SetString(PyExc_TypeError, "codec is unexpected type");
-        goto errorexit;
-    }
-
-    self->codec = ((MultibyteCodecObject *)codec)->codec;
-    self->pendingsize = 0;
-    self->errors = internal_error_callback(errors);
-    if (self->errors == NULL)
-        goto errorexit;
-    if (self->codec->encinit != NULL &&
-        self->codec->encinit(&self->state, self->codec->config) != 0)
-        goto errorexit;
-
-    Py_DECREF(codec);
-    return (PyObject *)self;
-
-errorexit:
-    Py_XDECREF(self);
-    Py_XDECREF(codec);
-    return NULL;
-}
-
-static int
-mbiencoder_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    return 0;
-}
-
-static int
-mbiencoder_traverse(MultibyteIncrementalEncoderObject *self,
-                    visitproc visit, void *arg)
-{
-    if (ERROR_ISCUSTOM(self->errors))
-        Py_VISIT(self->errors);
-    return 0;
-}
-
-static void
-mbiencoder_dealloc(MultibyteIncrementalEncoderObject *self)
-{
-    PyObject_GC_UnTrack(self);
-    ERROR_DECREF(self->errors);
-    Py_TYPE(self)->tp_free(self);
-}
-
-static PyTypeObject MultibyteIncrementalEncoder_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "MultibyteIncrementalEncoder",      /* tp_name */
-    sizeof(MultibyteIncrementalEncoderObject), /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /*  methods  */
-    (destructor)mbiencoder_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC
-        | Py_TPFLAGS_BASETYPE,          /* tp_flags */
-    0,                                  /* tp_doc */
-    (traverseproc)mbiencoder_traverse,          /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iterext */
-    mbiencoder_methods,                 /* tp_methods */
-    0,                                  /* tp_members */
-    codecctx_getsets,                   /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    mbiencoder_init,                    /* tp_init */
-    0,                                  /* tp_alloc */
-    mbiencoder_new,                     /* tp_new */
-};
-
-
-/**
- * MultibyteIncrementalDecoder object
- */
-
-static PyObject *
-mbidecoder_decode(MultibyteIncrementalDecoderObject *self,
-                  PyObject *args, PyObject *kwargs)
-{
-    MultibyteDecodeBuffer buf;
-    char *data, *wdata = NULL;
-    Py_buffer pdata;
-    Py_ssize_t wsize, finalsize = 0, size, origpending;
-    int final = 0;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s*|i:decode",
-                    incrementalkwarglist, &pdata, &final))
-        return NULL;
-    data = pdata.buf;
-    size = pdata.len;
-
-    buf.outobj = buf.excobj = NULL;
-    origpending = self->pendingsize;
-
-    if (self->pendingsize == 0) {
-        wsize = size;
-        wdata = data;
-    }
-    else {
-        if (size > PY_SSIZE_T_MAX - self->pendingsize) {
-            PyErr_NoMemory();
-            goto errorexit;
-        }
-        wsize = size + self->pendingsize;
-        wdata = PyMem_Malloc(wsize);
-        if (wdata == NULL)
-            goto errorexit;
-        memcpy(wdata, self->pending, self->pendingsize);
-        memcpy(wdata + self->pendingsize, data, size);
-        self->pendingsize = 0;
-    }
-
-    if (decoder_prepare_buffer(&buf, wdata, wsize) != 0)
-        goto errorexit;
-
-    if (decoder_feed_buffer(STATEFUL_DCTX(self), &buf))
-        goto errorexit;
-
-    if (final && buf.inbuf < buf.inbuf_end) {
-        if (multibytecodec_decerror(self->codec, &self->state,
-                        &buf, self->errors, MBERR_TOOFEW)) {
-            /* recover the original pending buffer */
-            memcpy(self->pending, wdata, origpending);
-            self->pendingsize = origpending;
-            goto errorexit;
-        }
-    }
-
-    if (buf.inbuf < buf.inbuf_end) { /* pending sequence still exists */
-        if (decoder_append_pending(STATEFUL_DCTX(self), &buf) != 0)
-            goto errorexit;
-    }
-
-    finalsize = (Py_ssize_t)(buf.outbuf - PyUnicode_AS_UNICODE(buf.outobj));
-    if (finalsize != PyUnicode_GET_SIZE(buf.outobj))
-        if (PyUnicode_Resize(&buf.outobj, finalsize) == -1)
-            goto errorexit;
-
-    PyBuffer_Release(&pdata);
-    if (wdata != data)
-        PyMem_Del(wdata);
-    Py_XDECREF(buf.excobj);
-    return buf.outobj;
-
-errorexit:
-    PyBuffer_Release(&pdata);
-    if (wdata != NULL && wdata != data)
-        PyMem_Del(wdata);
-    Py_XDECREF(buf.excobj);
-    Py_XDECREF(buf.outobj);
-    return NULL;
-}
-
-static PyObject *
-mbidecoder_reset(MultibyteIncrementalDecoderObject *self)
-{
-    if (self->codec->decreset != NULL &&
-        self->codec->decreset(&self->state, self->codec->config) != 0)
-        return NULL;
-    self->pendingsize = 0;
-
-    Py_RETURN_NONE;
-}
-
-static struct PyMethodDef mbidecoder_methods[] = {
-    {"decode",          (PyCFunction)mbidecoder_decode,
-                    METH_VARARGS | METH_KEYWORDS, NULL},
-    {"reset",           (PyCFunction)mbidecoder_reset,
-                    METH_NOARGS, NULL},
-    {NULL,              NULL},
-};
-
-static PyObject *
-mbidecoder_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    MultibyteIncrementalDecoderObject *self;
-    PyObject *codec = NULL;
-    char *errors = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|s:IncrementalDecoder",
-                                     incnewkwarglist, &errors))
-        return NULL;
-
-    self = (MultibyteIncrementalDecoderObject *)type->tp_alloc(type, 0);
-    if (self == NULL)
-        return NULL;
-
-    codec = PyObject_GetAttrString((PyObject *)type, "codec");
-    if (codec == NULL)
-        goto errorexit;
-    if (!MultibyteCodec_Check(codec)) {
-        PyErr_SetString(PyExc_TypeError, "codec is unexpected type");
-        goto errorexit;
-    }
-
-    self->codec = ((MultibyteCodecObject *)codec)->codec;
-    self->pendingsize = 0;
-    self->errors = internal_error_callback(errors);
-    if (self->errors == NULL)
-        goto errorexit;
-    if (self->codec->decinit != NULL &&
-        self->codec->decinit(&self->state, self->codec->config) != 0)
-        goto errorexit;
-
-    Py_DECREF(codec);
-    return (PyObject *)self;
-
-errorexit:
-    Py_XDECREF(self);
-    Py_XDECREF(codec);
-    return NULL;
-}
-
-static int
-mbidecoder_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    return 0;
-}
-
-static int
-mbidecoder_traverse(MultibyteIncrementalDecoderObject *self,
-                    visitproc visit, void *arg)
-{
-    if (ERROR_ISCUSTOM(self->errors))
-        Py_VISIT(self->errors);
-    return 0;
-}
-
-static void
-mbidecoder_dealloc(MultibyteIncrementalDecoderObject *self)
-{
-    PyObject_GC_UnTrack(self);
-    ERROR_DECREF(self->errors);
-    Py_TYPE(self)->tp_free(self);
-}
-
-static PyTypeObject MultibyteIncrementalDecoder_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "MultibyteIncrementalDecoder",      /* tp_name */
-    sizeof(MultibyteIncrementalDecoderObject), /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /*  methods  */
-    (destructor)mbidecoder_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC
-        | Py_TPFLAGS_BASETYPE,          /* tp_flags */
-    0,                                  /* tp_doc */
-    (traverseproc)mbidecoder_traverse,          /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iterext */
-    mbidecoder_methods,                 /* tp_methods */
-    0,                                  /* tp_members */
-    codecctx_getsets,                   /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    mbidecoder_init,                    /* tp_init */
-    0,                                  /* tp_alloc */
-    mbidecoder_new,                     /* tp_new */
-};
-
-
-/**
- * MultibyteStreamReader object
- */
-
-static PyObject *
-mbstreamreader_iread(MultibyteStreamReaderObject *self,
-                     const char *method, Py_ssize_t sizehint)
-{
-    MultibyteDecodeBuffer buf;
-    PyObject *cres;
-    Py_ssize_t rsize, finalsize = 0;
-
-    if (sizehint == 0)
-        return PyUnicode_FromUnicode(NULL, 0);
-
-    buf.outobj = buf.excobj = NULL;
-    cres = NULL;
-
-    for (;;) {
-        int endoffile;
-
-        if (sizehint < 0)
-            cres = PyObject_CallMethod(self->stream,
-                            (char *)method, NULL);
-        else
-            cres = PyObject_CallMethod(self->stream,
-                            (char *)method, "i", sizehint);
-        if (cres == NULL)
-            goto errorexit;
-
-        if (!PyString_Check(cres)) {
-            PyErr_SetString(PyExc_TypeError,
-                            "stream function returned a "
-                            "non-string object");
-            goto errorexit;
-        }
-
-        endoffile = (PyString_GET_SIZE(cres) == 0);
-
-        if (self->pendingsize > 0) {
-            PyObject *ctr;
-            char *ctrdata;
-
-            if (PyString_GET_SIZE(cres) > PY_SSIZE_T_MAX - self->pendingsize) {
-                PyErr_NoMemory();
-                goto errorexit;
-        }
-                    rsize = PyString_GET_SIZE(cres) + self->pendingsize;
-                    ctr = PyString_FromStringAndSize(NULL, rsize);
-                    if (ctr == NULL)
-                            goto errorexit;
-                    ctrdata = PyString_AS_STRING(ctr);
-                    memcpy(ctrdata, self->pending, self->pendingsize);
-                    memcpy(ctrdata + self->pendingsize,
-                            PyString_AS_STRING(cres),
-                            PyString_GET_SIZE(cres));
-                    Py_DECREF(cres);
-                    cres = ctr;
-                    self->pendingsize = 0;
-        }
-
-        rsize = PyString_GET_SIZE(cres);
-        if (decoder_prepare_buffer(&buf, PyString_AS_STRING(cres),
-                                   rsize) != 0)
-            goto errorexit;
-
-        if (rsize > 0 && decoder_feed_buffer(
-                        (MultibyteStatefulDecoderContext *)self, &buf))
-            goto errorexit;
-
-        if (endoffile || sizehint < 0) {
-            if (buf.inbuf < buf.inbuf_end &&
-                multibytecodec_decerror(self->codec, &self->state,
-                            &buf, self->errors, MBERR_TOOFEW))
-                goto errorexit;
-        }
-
-        if (buf.inbuf < buf.inbuf_end) { /* pending sequence exists */
-            if (decoder_append_pending(STATEFUL_DCTX(self),
-                                       &buf) != 0)
-                goto errorexit;
-        }
-
-        finalsize = (Py_ssize_t)(buf.outbuf -
-                        PyUnicode_AS_UNICODE(buf.outobj));
-        Py_DECREF(cres);
-        cres = NULL;
-
-        if (sizehint < 0 || finalsize != 0 || rsize == 0)
-            break;
-
-        sizehint = 1; /* read 1 more byte and retry */
-    }
-
-    if (finalsize != PyUnicode_GET_SIZE(buf.outobj))
-        if (PyUnicode_Resize(&buf.outobj, finalsize) == -1)
-            goto errorexit;
-
-    Py_XDECREF(cres);
-    Py_XDECREF(buf.excobj);
-    return buf.outobj;
-
-errorexit:
-    Py_XDECREF(cres);
-    Py_XDECREF(buf.excobj);
-    Py_XDECREF(buf.outobj);
-    return NULL;
-}
-
-static PyObject *
-mbstreamreader_read(MultibyteStreamReaderObject *self, PyObject *args)
-{
-    PyObject *sizeobj = NULL;
-    Py_ssize_t size;
-
-    if (!PyArg_UnpackTuple(args, "read", 0, 1, &sizeobj))
-        return NULL;
-
-    if (sizeobj == Py_None || sizeobj == NULL)
-        size = -1;
-    else if (PyInt_Check(sizeobj))
-        size = PyInt_AsSsize_t(sizeobj);
-    else {
-        PyErr_SetString(PyExc_TypeError, "arg 1 must be an integer");
-        return NULL;
-    }
-
-    return mbstreamreader_iread(self, "read", size);
-}
-
-static PyObject *
-mbstreamreader_readline(MultibyteStreamReaderObject *self, PyObject *args)
-{
-    PyObject *sizeobj = NULL;
-    Py_ssize_t size;
-
-    if (!PyArg_UnpackTuple(args, "readline", 0, 1, &sizeobj))
-        return NULL;
-
-    if (sizeobj == Py_None || sizeobj == NULL)
-        size = -1;
-    else if (PyInt_Check(sizeobj))
-        size = PyInt_AsSsize_t(sizeobj);
-    else {
-        PyErr_SetString(PyExc_TypeError, "arg 1 must be an integer");
-        return NULL;
-    }
-
-    return mbstreamreader_iread(self, "readline", size);
-}
-
-static PyObject *
-mbstreamreader_readlines(MultibyteStreamReaderObject *self, PyObject *args)
-{
-    PyObject *sizehintobj = NULL, *r, *sr;
-    Py_ssize_t sizehint;
-
-    if (!PyArg_UnpackTuple(args, "readlines", 0, 1, &sizehintobj))
-        return NULL;
-
-    if (sizehintobj == Py_None || sizehintobj == NULL)
-        sizehint = -1;
-    else if (PyInt_Check(sizehintobj))
-        sizehint = PyInt_AsSsize_t(sizehintobj);
-    else {
-        PyErr_SetString(PyExc_TypeError, "arg 1 must be an integer");
-        return NULL;
-    }
-
-    r = mbstreamreader_iread(self, "read", sizehint);
-    if (r == NULL)
-        return NULL;
-
-    sr = PyUnicode_Splitlines(r, 1);
-    Py_DECREF(r);
-    return sr;
-}
-
-static PyObject *
-mbstreamreader_reset(MultibyteStreamReaderObject *self)
-{
-    if (self->codec->decreset != NULL &&
-        self->codec->decreset(&self->state, self->codec->config) != 0)
-        return NULL;
-    self->pendingsize = 0;
-
-    Py_RETURN_NONE;
-}
-
-static struct PyMethodDef mbstreamreader_methods[] = {
-    {"read",            (PyCFunction)mbstreamreader_read,
-                    METH_VARARGS, NULL},
-    {"readline",        (PyCFunction)mbstreamreader_readline,
-                    METH_VARARGS, NULL},
-    {"readlines",       (PyCFunction)mbstreamreader_readlines,
-                    METH_VARARGS, NULL},
-    {"reset",           (PyCFunction)mbstreamreader_reset,
-                    METH_NOARGS, NULL},
-    {NULL,              NULL},
-};
-
-static PyMemberDef mbstreamreader_members[] = {
-    {"stream",          T_OBJECT,
-                    offsetof(MultibyteStreamReaderObject, stream),
-                    READONLY, NULL},
-    {NULL,}
-};
-
-static PyObject *
-mbstreamreader_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    MultibyteStreamReaderObject *self;
-    PyObject *stream, *codec = NULL;
-    char *errors = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|s:StreamReader",
-                            streamkwarglist, &stream, &errors))
-        return NULL;
-
-    self = (MultibyteStreamReaderObject *)type->tp_alloc(type, 0);
-    if (self == NULL)
-        return NULL;
-
-    codec = PyObject_GetAttrString((PyObject *)type, "codec");
-    if (codec == NULL)
-        goto errorexit;
-    if (!MultibyteCodec_Check(codec)) {
-        PyErr_SetString(PyExc_TypeError, "codec is unexpected type");
-        goto errorexit;
-    }
-
-    self->codec = ((MultibyteCodecObject *)codec)->codec;
-    self->stream = stream;
-    Py_INCREF(stream);
-    self->pendingsize = 0;
-    self->errors = internal_error_callback(errors);
-    if (self->errors == NULL)
-        goto errorexit;
-    if (self->codec->decinit != NULL &&
-        self->codec->decinit(&self->state, self->codec->config) != 0)
-        goto errorexit;
-
-    Py_DECREF(codec);
-    return (PyObject *)self;
-
-errorexit:
-    Py_XDECREF(self);
-    Py_XDECREF(codec);
-    return NULL;
-}
-
-static int
-mbstreamreader_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    return 0;
-}
-
-static int
-mbstreamreader_traverse(MultibyteStreamReaderObject *self,
-                        visitproc visit, void *arg)
-{
-    if (ERROR_ISCUSTOM(self->errors))
-        Py_VISIT(self->errors);
-    Py_VISIT(self->stream);
-    return 0;
-}
-
-static void
-mbstreamreader_dealloc(MultibyteStreamReaderObject *self)
-{
-    PyObject_GC_UnTrack(self);
-    ERROR_DECREF(self->errors);
-    Py_XDECREF(self->stream);
-    Py_TYPE(self)->tp_free(self);
-}
-
-static PyTypeObject MultibyteStreamReader_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "MultibyteStreamReader",            /* tp_name */
-    sizeof(MultibyteStreamReaderObject), /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /*  methods  */
-    (destructor)mbstreamreader_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC
-        | Py_TPFLAGS_BASETYPE,          /* tp_flags */
-    0,                                  /* tp_doc */
-    (traverseproc)mbstreamreader_traverse,      /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iterext */
-    mbstreamreader_methods,             /* tp_methods */
-    mbstreamreader_members,             /* tp_members */
-    codecctx_getsets,                   /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    mbstreamreader_init,                /* tp_init */
-    0,                                  /* tp_alloc */
-    mbstreamreader_new,                 /* tp_new */
-};
-
-
-/**
- * MultibyteStreamWriter object
- */
-
-static int
-mbstreamwriter_iwrite(MultibyteStreamWriterObject *self,
-                      PyObject *unistr)
-{
-    PyObject *str, *wr;
-
-    str = encoder_encode_stateful(STATEFUL_ECTX(self), unistr, 0);
-    if (str == NULL)
-        return -1;
-
-    wr = PyObject_CallMethod(self->stream, "write", "O", str);
-    Py_DECREF(str);
-    if (wr == NULL)
-        return -1;
-
-    Py_DECREF(wr);
-    return 0;
-}
-
-static PyObject *
-mbstreamwriter_write(MultibyteStreamWriterObject *self, PyObject *strobj)
-{
-    if (mbstreamwriter_iwrite(self, strobj))
-        return NULL;
-    else
-        Py_RETURN_NONE;
-}
-
-static PyObject *
-mbstreamwriter_writelines(MultibyteStreamWriterObject *self, PyObject *lines)
-{
-    PyObject *strobj;
-    int i, r;
-
-    if (!PySequence_Check(lines)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "arg must be a sequence object");
-        return NULL;
-    }
-
-    for (i = 0; i < PySequence_Length(lines); i++) {
-        /* length can be changed even within this loop */
-        strobj = PySequence_GetItem(lines, i);
-        if (strobj == NULL)
-            return NULL;
-
-        r = mbstreamwriter_iwrite(self, strobj);
-        Py_DECREF(strobj);
-        if (r == -1)
-            return NULL;
-    }
-
-    Py_RETURN_NONE;
-}
-
-static PyObject *
-mbstreamwriter_reset(MultibyteStreamWriterObject *self)
-{
-    const Py_UNICODE *pending;
-    PyObject *pwrt;
-
-    pending = self->pending;
-    pwrt = multibytecodec_encode(self->codec, &self->state,
-                    &pending, self->pendingsize, self->errors,
-                    MBENC_FLUSH | MBENC_RESET);
-    /* some pending buffer can be truncated when UnicodeEncodeError is
-     * raised on 'strict' mode. but, 'reset' method is designed to
-     * reset the pending buffer or states so failed string sequence
-     * ought to be missed */
-    self->pendingsize = 0;
-    if (pwrt == NULL)
-        return NULL;
-
-    if (PyString_Size(pwrt) > 0) {
-        PyObject *wr;
-        wr = PyObject_CallMethod(self->stream, "write", "O", pwrt);
-        if (wr == NULL) {
-            Py_DECREF(pwrt);
-            return NULL;
-        }
-    }
-    Py_DECREF(pwrt);
-
-    Py_RETURN_NONE;
-}
-
-static PyObject *
-mbstreamwriter_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    MultibyteStreamWriterObject *self;
-    PyObject *stream, *codec = NULL;
-    char *errors = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|s:StreamWriter",
-                            streamkwarglist, &stream, &errors))
-        return NULL;
-
-    self = (MultibyteStreamWriterObject *)type->tp_alloc(type, 0);
-    if (self == NULL)
-        return NULL;
-
-    codec = PyObject_GetAttrString((PyObject *)type, "codec");
-    if (codec == NULL)
-        goto errorexit;
-    if (!MultibyteCodec_Check(codec)) {
-        PyErr_SetString(PyExc_TypeError, "codec is unexpected type");
-        goto errorexit;
-    }
-
-    self->codec = ((MultibyteCodecObject *)codec)->codec;
-    self->stream = stream;
-    Py_INCREF(stream);
-    self->pendingsize = 0;
-    self->errors = internal_error_callback(errors);
-    if (self->errors == NULL)
-        goto errorexit;
-    if (self->codec->encinit != NULL &&
-        self->codec->encinit(&self->state, self->codec->config) != 0)
-        goto errorexit;
-
-    Py_DECREF(codec);
-    return (PyObject *)self;
-
-errorexit:
-    Py_XDECREF(self);
-    Py_XDECREF(codec);
-    return NULL;
-}
-
-static int
-mbstreamwriter_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    return 0;
-}
-
-static int
-mbstreamwriter_traverse(MultibyteStreamWriterObject *self,
-                        visitproc visit, void *arg)
-{
-    if (ERROR_ISCUSTOM(self->errors))
-        Py_VISIT(self->errors);
-    Py_VISIT(self->stream);
-    return 0;
-}
-
-static void
-mbstreamwriter_dealloc(MultibyteStreamWriterObject *self)
-{
-    PyObject_GC_UnTrack(self);
-    ERROR_DECREF(self->errors);
-    Py_XDECREF(self->stream);
-    Py_TYPE(self)->tp_free(self);
-}
-
-static struct PyMethodDef mbstreamwriter_methods[] = {
-    {"write",           (PyCFunction)mbstreamwriter_write,
-                    METH_O, NULL},
-    {"writelines",      (PyCFunction)mbstreamwriter_writelines,
-                    METH_O, NULL},
-    {"reset",           (PyCFunction)mbstreamwriter_reset,
-                    METH_NOARGS, NULL},
-    {NULL,              NULL},
-};
-
-static PyMemberDef mbstreamwriter_members[] = {
-    {"stream",          T_OBJECT,
-                    offsetof(MultibyteStreamWriterObject, stream),
-                    READONLY, NULL},
-    {NULL,}
-};
-
-static PyTypeObject MultibyteStreamWriter_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "MultibyteStreamWriter",            /* tp_name */
-    sizeof(MultibyteStreamWriterObject), /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /*  methods  */
-    (destructor)mbstreamwriter_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC
-        | Py_TPFLAGS_BASETYPE,          /* tp_flags */
-    0,                                  /* tp_doc */
-    (traverseproc)mbstreamwriter_traverse,      /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iterext */
-    mbstreamwriter_methods,             /* tp_methods */
-    mbstreamwriter_members,             /* tp_members */
-    codecctx_getsets,                   /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    mbstreamwriter_init,                /* tp_init */
-    0,                                  /* tp_alloc */
-    mbstreamwriter_new,                 /* tp_new */
-};
-
-
-/**
- * Exposed factory function
- */
-
-static PyObject *
-__create_codec(PyObject *ignore, PyObject *arg)
-{
-    MultibyteCodecObject *self;
-    MultibyteCodec *codec;
-
-    if (!PyCapsule_IsValid(arg, PyMultibyteCodec_CAPSULE_NAME)) {
-        PyErr_SetString(PyExc_ValueError, "argument type invalid");
-        return NULL;
-    }
-
-    codec = PyCapsule_GetPointer(arg, PyMultibyteCodec_CAPSULE_NAME);
-    if (codec->codecinit != NULL && codec->codecinit(codec->config) != 0)
-        return NULL;
-
-    self = PyObject_New(MultibyteCodecObject, &MultibyteCodec_Type);
-    if (self == NULL)
-        return NULL;
-    self->codec = codec;
-
-    return (PyObject *)self;
-}
-
-static struct PyMethodDef __methods[] = {
-    {"__create_codec", (PyCFunction)__create_codec, METH_O},
-    {NULL, NULL},
-};
-
-PyMODINIT_FUNC
-init_multibytecodec(void)
-{
-    int i;
-    PyObject *m;
-    PyTypeObject *typelist[] = {
-        &MultibyteIncrementalEncoder_Type,
-        &MultibyteIncrementalDecoder_Type,
-        &MultibyteStreamReader_Type,
-        &MultibyteStreamWriter_Type,
-        NULL
-    };
-
-    if (PyType_Ready(&MultibyteCodec_Type) < 0)
-        return;
-
-    m = Py_InitModule("_multibytecodec", __methods);
-    if (m == NULL)
-        return;
-
-    for (i = 0; typelist[i] != NULL; i++) {
-        if (PyType_Ready(typelist[i]) < 0)
-            return;
-        Py_INCREF(typelist[i]);
-        PyModule_AddObject(m, typelist[i]->tp_name,
-                           (PyObject *)typelist[i]);
-    }
-
-    if (PyErr_Occurred())
-        Py_FatalError("can't initialize the _multibytecodec module");
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/multibytecodec.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/multibytecodec.h
deleted file mode 100644
index 2efa037..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cjkcodecs/multibytecodec.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * multibytecodec.h: Common Multibyte Codec Implementation
- *
- * Written by Hye-Shik Chang <perky@FreeBSD.org>
- */
-
-#ifndef _PYTHON_MULTIBYTECODEC_H_
-#define _PYTHON_MULTIBYTECODEC_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef uint32_t
-typedef uint32_t ucs4_t;
-#else
-typedef unsigned int ucs4_t;
-#endif
-
-#ifdef uint16_t
-typedef uint16_t ucs2_t, DBCHAR;
-#else
-typedef unsigned short ucs2_t, DBCHAR;
-#endif
-
-typedef union {
-    void *p;
-    int i;
-    unsigned char c[8];
-    ucs2_t u2[4];
-    ucs4_t u4[2];
-} MultibyteCodec_State;
-
-typedef int (*mbcodec_init)(const void *config);
-typedef Py_ssize_t (*mbencode_func)(MultibyteCodec_State *state,
-                        const void *config,
-                        const Py_UNICODE **inbuf, Py_ssize_t inleft,
-                        unsigned char **outbuf, Py_ssize_t outleft,
-                        int flags);
-typedef int (*mbencodeinit_func)(MultibyteCodec_State *state,
-                                 const void *config);
-typedef Py_ssize_t (*mbencodereset_func)(MultibyteCodec_State *state,
-                        const void *config,
-                        unsigned char **outbuf, Py_ssize_t outleft);
-typedef Py_ssize_t (*mbdecode_func)(MultibyteCodec_State *state,
-                        const void *config,
-                        const unsigned char **inbuf, Py_ssize_t inleft,
-                        Py_UNICODE **outbuf, Py_ssize_t outleft);
-typedef int (*mbdecodeinit_func)(MultibyteCodec_State *state,
-                                 const void *config);
-typedef Py_ssize_t (*mbdecodereset_func)(MultibyteCodec_State *state,
-                                         const void *config);
-
-typedef struct {
-    const char *encoding;
-    const void *config;
-    mbcodec_init codecinit;
-    mbencode_func encode;
-    mbencodeinit_func encinit;
-    mbencodereset_func encreset;
-    mbdecode_func decode;
-    mbdecodeinit_func decinit;
-    mbdecodereset_func decreset;
-} MultibyteCodec;
-
-typedef struct {
-    PyObject_HEAD
-    MultibyteCodec *codec;
-} MultibyteCodecObject;
-
-#define MultibyteCodec_Check(op) ((op)->ob_type == &MultibyteCodec_Type)
-
-#define _MultibyteStatefulCodec_HEAD            \
-    PyObject_HEAD                               \
-    MultibyteCodec *codec;                      \
-    MultibyteCodec_State state;                 \
-    PyObject *errors;
-typedef struct {
-    _MultibyteStatefulCodec_HEAD
-} MultibyteStatefulCodecContext;
-
-#define MAXENCPENDING   2
-#define _MultibyteStatefulEncoder_HEAD          \
-    _MultibyteStatefulCodec_HEAD                \
-    Py_UNICODE pending[MAXENCPENDING];          \
-    Py_ssize_t pendingsize;
-typedef struct {
-    _MultibyteStatefulEncoder_HEAD
-} MultibyteStatefulEncoderContext;
-
-#define MAXDECPENDING   8
-#define _MultibyteStatefulDecoder_HEAD          \
-    _MultibyteStatefulCodec_HEAD                \
-    unsigned char pending[MAXDECPENDING];       \
-    Py_ssize_t pendingsize;
-typedef struct {
-    _MultibyteStatefulDecoder_HEAD
-} MultibyteStatefulDecoderContext;
-
-typedef struct {
-    _MultibyteStatefulEncoder_HEAD
-} MultibyteIncrementalEncoderObject;
-
-typedef struct {
-    _MultibyteStatefulDecoder_HEAD
-} MultibyteIncrementalDecoderObject;
-
-typedef struct {
-    _MultibyteStatefulDecoder_HEAD
-    PyObject *stream;
-} MultibyteStreamReaderObject;
-
-typedef struct {
-    _MultibyteStatefulEncoder_HEAD
-    PyObject *stream;
-} MultibyteStreamWriterObject;
-
-/* positive values for illegal sequences */
-#define MBERR_TOOSMALL          (-1) /* insufficient output buffer space */
-#define MBERR_TOOFEW            (-2) /* incomplete input buffer */
-#define MBERR_INTERNAL          (-3) /* internal runtime error */
-
-#define ERROR_STRICT            (PyObject *)(1)
-#define ERROR_IGNORE            (PyObject *)(2)
-#define ERROR_REPLACE           (PyObject *)(3)
-#define ERROR_ISCUSTOM(p)       ((p) < ERROR_STRICT || ERROR_REPLACE < (p))
-#define ERROR_DECREF(p) do {                    \
-    if (p != NULL && ERROR_ISCUSTOM(p)) {       \
-        Py_DECREF(p);                           \
-    }                                           \
-} while (0);
-
-#define MBENC_FLUSH             0x0001 /* encode all characters encodable */
-#define MBENC_MAX               MBENC_FLUSH
-
-#define PyMultibyteCodec_CAPSULE_NAME "multibytecodec.__map_*"
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cmathmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/cmathmodule.c
deleted file mode 100644
index d248d67..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cmathmodule.c
+++ /dev/null
@@ -1,1210 +0,0 @@
-/* Complex math module */
-
-/* much code borrowed from mathmodule.c */
-
-#include "Python.h"
-#include "_math.h"
-/* we need DBL_MAX, DBL_MIN, DBL_EPSILON, DBL_MANT_DIG and FLT_RADIX from
-   float.h.  We assume that FLT_RADIX is either 2 or 16. */
-#include <float.h>
-
-#if (FLT_RADIX != 2 && FLT_RADIX != 16)
-#error "Modules/cmathmodule.c expects FLT_RADIX to be 2 or 16"
-#endif
-
-#ifndef M_LN2
-#define M_LN2 (0.6931471805599453094) /* natural log of 2 */
-#endif
-
-#ifndef M_LN10
-#define M_LN10 (2.302585092994045684) /* natural log of 10 */
-#endif
-
-/*
-   CM_LARGE_DOUBLE is used to avoid spurious overflow in the sqrt, log,
-   inverse trig and inverse hyperbolic trig functions.  Its log is used in the
-   evaluation of exp, cos, cosh, sin, sinh, tan, and tanh to avoid unnecessary
-   overflow.
- */
-
-#define CM_LARGE_DOUBLE (DBL_MAX/4.)
-#define CM_SQRT_LARGE_DOUBLE (sqrt(CM_LARGE_DOUBLE))
-#define CM_LOG_LARGE_DOUBLE (log(CM_LARGE_DOUBLE))
-#define CM_SQRT_DBL_MIN (sqrt(DBL_MIN))
-
-/*
-   CM_SCALE_UP is an odd integer chosen such that multiplication by
-   2**CM_SCALE_UP is sufficient to turn a subnormal into a normal.
-   CM_SCALE_DOWN is (-(CM_SCALE_UP+1)/2).  These scalings are used to compute
-   square roots accurately when the real and imaginary parts of the argument
-   are subnormal.
-*/
-
-#if FLT_RADIX==2
-#define CM_SCALE_UP (2*(DBL_MANT_DIG/2) + 1)
-#elif FLT_RADIX==16
-#define CM_SCALE_UP (4*DBL_MANT_DIG+1)
-#endif
-#define CM_SCALE_DOWN (-(CM_SCALE_UP+1)/2)
-
-/* forward declarations */
-static Py_complex c_asinh(Py_complex);
-static Py_complex c_atanh(Py_complex);
-static Py_complex c_cosh(Py_complex);
-static Py_complex c_sinh(Py_complex);
-static Py_complex c_sqrt(Py_complex);
-static Py_complex c_tanh(Py_complex);
-static PyObject * math_error(void);
-
-/* Code to deal with special values (infinities, NaNs, etc.). */
-
-/* special_type takes a double and returns an integer code indicating
-   the type of the double as follows:
-*/
-
-enum special_types {
-    ST_NINF,            /* 0, negative infinity */
-    ST_NEG,             /* 1, negative finite number (nonzero) */
-    ST_NZERO,           /* 2, -0. */
-    ST_PZERO,           /* 3, +0. */
-    ST_POS,             /* 4, positive finite number (nonzero) */
-    ST_PINF,            /* 5, positive infinity */
-    ST_NAN              /* 6, Not a Number */
-};
-
-static enum special_types
-special_type(double d)
-{
-    if (Py_IS_FINITE(d)) {
-        if (d != 0) {
-            if (copysign(1., d) == 1.)
-                return ST_POS;
-            else
-                return ST_NEG;
-        }
-        else {
-            if (copysign(1., d) == 1.)
-                return ST_PZERO;
-            else
-                return ST_NZERO;
-        }
-    }
-    if (Py_IS_NAN(d))
-        return ST_NAN;
-    if (copysign(1., d) == 1.)
-        return ST_PINF;
-    else
-        return ST_NINF;
-}
-
-#define SPECIAL_VALUE(z, table)                                         \
-    if (!Py_IS_FINITE((z).real) || !Py_IS_FINITE((z).imag)) {           \
-        errno = 0;                                              \
-        return table[special_type((z).real)]                            \
-                    [special_type((z).imag)];                           \
-    }
-
-#define P Py_MATH_PI
-#define P14 0.25*Py_MATH_PI
-#define P12 0.5*Py_MATH_PI
-#define P34 0.75*Py_MATH_PI
-#define INF Py_HUGE_VAL
-#define N Py_NAN
-#define U -9.5426319407711027e33 /* unlikely value, used as placeholder */
-
-/* First, the C functions that do the real work.  Each of the c_*
-   functions computes and returns the C99 Annex G recommended result
-   and also sets errno as follows: errno = 0 if no floating-point
-   exception is associated with the result; errno = EDOM if C99 Annex
-   G recommends raising divide-by-zero or invalid for this result; and
-   errno = ERANGE where the overflow floating-point signal should be
-   raised.
-*/
-
-static Py_complex acos_special_values[7][7];
-
-static Py_complex
-c_acos(Py_complex z)
-{
-    Py_complex s1, s2, r;
-
-    SPECIAL_VALUE(z, acos_special_values);
-
-    if (fabs(z.real) > CM_LARGE_DOUBLE || fabs(z.imag) > CM_LARGE_DOUBLE) {
-        /* avoid unnecessary overflow for large arguments */
-        r.real = atan2(fabs(z.imag), z.real);
-        /* split into cases to make sure that the branch cut has the
-           correct continuity on systems with unsigned zeros */
-        if (z.real < 0.) {
-            r.imag = -copysign(log(hypot(z.real/2., z.imag/2.)) +
-                               M_LN2*2., z.imag);
-        } else {
-            r.imag = copysign(log(hypot(z.real/2., z.imag/2.)) +
-                              M_LN2*2., -z.imag);
-        }
-    } else {
-        s1.real = 1.-z.real;
-        s1.imag = -z.imag;
-        s1 = c_sqrt(s1);
-        s2.real = 1.+z.real;
-        s2.imag = z.imag;
-        s2 = c_sqrt(s2);
-        r.real = 2.*atan2(s1.real, s2.real);
-        r.imag = m_asinh(s2.real*s1.imag - s2.imag*s1.real);
-    }
-    errno = 0;
-    return r;
-}
-
-PyDoc_STRVAR(c_acos_doc,
-"acos(x)\n"
-"\n"
-"Return the arc cosine of x.");
-
-
-static Py_complex acosh_special_values[7][7];
-
-static Py_complex
-c_acosh(Py_complex z)
-{
-    Py_complex s1, s2, r;
-
-    SPECIAL_VALUE(z, acosh_special_values);
-
-    if (fabs(z.real) > CM_LARGE_DOUBLE || fabs(z.imag) > CM_LARGE_DOUBLE) {
-        /* avoid unnecessary overflow for large arguments */
-        r.real = log(hypot(z.real/2., z.imag/2.)) + M_LN2*2.;
-        r.imag = atan2(z.imag, z.real);
-    } else {
-        s1.real = z.real - 1.;
-        s1.imag = z.imag;
-        s1 = c_sqrt(s1);
-        s2.real = z.real + 1.;
-        s2.imag = z.imag;
-        s2 = c_sqrt(s2);
-        r.real = m_asinh(s1.real*s2.real + s1.imag*s2.imag);
-        r.imag = 2.*atan2(s1.imag, s2.real);
-    }
-    errno = 0;
-    return r;
-}
-
-PyDoc_STRVAR(c_acosh_doc,
-"acosh(x)\n"
-"\n"
-"Return the hyperbolic arccosine of x.");
-
-
-static Py_complex
-c_asin(Py_complex z)
-{
-    /* asin(z) = -i asinh(iz) */
-    Py_complex s, r;
-    s.real = -z.imag;
-    s.imag = z.real;
-    s = c_asinh(s);
-    r.real = s.imag;
-    r.imag = -s.real;
-    return r;
-}
-
-PyDoc_STRVAR(c_asin_doc,
-"asin(x)\n"
-"\n"
-"Return the arc sine of x.");
-
-
-static Py_complex asinh_special_values[7][7];
-
-static Py_complex
-c_asinh(Py_complex z)
-{
-    Py_complex s1, s2, r;
-
-    SPECIAL_VALUE(z, asinh_special_values);
-
-    if (fabs(z.real) > CM_LARGE_DOUBLE || fabs(z.imag) > CM_LARGE_DOUBLE) {
-        if (z.imag >= 0.) {
-            r.real = copysign(log(hypot(z.real/2., z.imag/2.)) +
-                              M_LN2*2., z.real);
-        } else {
-            r.real = -copysign(log(hypot(z.real/2., z.imag/2.)) +
-                               M_LN2*2., -z.real);
-        }
-        r.imag = atan2(z.imag, fabs(z.real));
-    } else {
-        s1.real = 1.+z.imag;
-        s1.imag = -z.real;
-        s1 = c_sqrt(s1);
-        s2.real = 1.-z.imag;
-        s2.imag = z.real;
-        s2 = c_sqrt(s2);
-        r.real = m_asinh(s1.real*s2.imag-s2.real*s1.imag);
-        r.imag = atan2(z.imag, s1.real*s2.real-s1.imag*s2.imag);
-    }
-    errno = 0;
-    return r;
-}
-
-PyDoc_STRVAR(c_asinh_doc,
-"asinh(x)\n"
-"\n"
-"Return the hyperbolic arc sine of x.");
-
-
-static Py_complex
-c_atan(Py_complex z)
-{
-    /* atan(z) = -i atanh(iz) */
-    Py_complex s, r;
-    s.real = -z.imag;
-    s.imag = z.real;
-    s = c_atanh(s);
-    r.real = s.imag;
-    r.imag = -s.real;
-    return r;
-}
-
-/* Windows screws up atan2 for inf and nan, and alpha Tru64 5.1 doesn't follow
-   C99 for atan2(0., 0.). */
-static double
-c_atan2(Py_complex z)
-{
-    if (Py_IS_NAN(z.real) || Py_IS_NAN(z.imag))
-        return Py_NAN;
-    if (Py_IS_INFINITY(z.imag)) {
-        if (Py_IS_INFINITY(z.real)) {
-            if (copysign(1., z.real) == 1.)
-                /* atan2(+-inf, +inf) == +-pi/4 */
-                return copysign(0.25*Py_MATH_PI, z.imag);
-            else
-                /* atan2(+-inf, -inf) == +-pi*3/4 */
-                return copysign(0.75*Py_MATH_PI, z.imag);
-        }
-        /* atan2(+-inf, x) == +-pi/2 for finite x */
-        return copysign(0.5*Py_MATH_PI, z.imag);
-    }
-    if (Py_IS_INFINITY(z.real) || z.imag == 0.) {
-        if (copysign(1., z.real) == 1.)
-            /* atan2(+-y, +inf) = atan2(+-0, +x) = +-0. */
-            return copysign(0., z.imag);
-        else
-            /* atan2(+-y, -inf) = atan2(+-0., -x) = +-pi. */
-            return copysign(Py_MATH_PI, z.imag);
-    }
-    return atan2(z.imag, z.real);
-}
-
-PyDoc_STRVAR(c_atan_doc,
-"atan(x)\n"
-"\n"
-"Return the arc tangent of x.");
-
-
-static Py_complex atanh_special_values[7][7];
-
-static Py_complex
-c_atanh(Py_complex z)
-{
-    Py_complex r;
-    double ay, h;
-
-    SPECIAL_VALUE(z, atanh_special_values);
-
-    /* Reduce to case where z.real >= 0., using atanh(z) = -atanh(-z). */
-    if (z.real < 0.) {
-        return c_neg(c_atanh(c_neg(z)));
-    }
-
-    ay = fabs(z.imag);
-    if (z.real > CM_SQRT_LARGE_DOUBLE || ay > CM_SQRT_LARGE_DOUBLE) {
-        /*
-           if abs(z) is large then we use the approximation
-           atanh(z) ~ 1/z +/- i*pi/2 (+/- depending on the sign
-           of z.imag)
-        */
-        h = hypot(z.real/2., z.imag/2.);  /* safe from overflow */
-        r.real = z.real/4./h/h;
-        /* the two negations in the next line cancel each other out
-           except when working with unsigned zeros: they're there to
-           ensure that the branch cut has the correct continuity on
-           systems that don't support signed zeros */
-        r.imag = -copysign(Py_MATH_PI/2., -z.imag);
-        errno = 0;
-    } else if (z.real == 1. && ay < CM_SQRT_DBL_MIN) {
-        /* C99 standard says:  atanh(1+/-0.) should be inf +/- 0i */
-        if (ay == 0.) {
-            r.real = INF;
-            r.imag = z.imag;
-            errno = EDOM;
-        } else {
-            r.real = -log(sqrt(ay)/sqrt(hypot(ay, 2.)));
-            r.imag = copysign(atan2(2., -ay)/2, z.imag);
-            errno = 0;
-        }
-    } else {
-        r.real = m_log1p(4.*z.real/((1-z.real)*(1-z.real) + ay*ay))/4.;
-        r.imag = -atan2(-2.*z.imag, (1-z.real)*(1+z.real) - ay*ay)/2.;
-        errno = 0;
-    }
-    return r;
-}
-
-PyDoc_STRVAR(c_atanh_doc,
-"atanh(x)\n"
-"\n"
-"Return the hyperbolic arc tangent of x.");
-
-
-static Py_complex
-c_cos(Py_complex z)
-{
-    /* cos(z) = cosh(iz) */
-    Py_complex r;
-    r.real = -z.imag;
-    r.imag = z.real;
-    r = c_cosh(r);
-    return r;
-}
-
-PyDoc_STRVAR(c_cos_doc,
-"cos(x)\n"
-"\n"
-"Return the cosine of x.");
-
-
-/* cosh(infinity + i*y) needs to be dealt with specially */
-static Py_complex cosh_special_values[7][7];
-
-static Py_complex
-c_cosh(Py_complex z)
-{
-    Py_complex r;
-    double x_minus_one;
-
-    /* special treatment for cosh(+/-inf + iy) if y is not a NaN */
-    if (!Py_IS_FINITE(z.real) || !Py_IS_FINITE(z.imag)) {
-        if (Py_IS_INFINITY(z.real) && Py_IS_FINITE(z.imag) &&
-            (z.imag != 0.)) {
-            if (z.real > 0) {
-                r.real = copysign(INF, cos(z.imag));
-                r.imag = copysign(INF, sin(z.imag));
-            }
-            else {
-                r.real = copysign(INF, cos(z.imag));
-                r.imag = -copysign(INF, sin(z.imag));
-            }
-        }
-        else {
-            r = cosh_special_values[special_type(z.real)]
-                                   [special_type(z.imag)];
-        }
-        /* need to set errno = EDOM if y is +/- infinity and x is not
-           a NaN */
-        if (Py_IS_INFINITY(z.imag) && !Py_IS_NAN(z.real))
-            errno = EDOM;
-        else
-            errno = 0;
-        return r;
-    }
-
-    if (fabs(z.real) > CM_LOG_LARGE_DOUBLE) {
-        /* deal correctly with cases where cosh(z.real) overflows but
-           cosh(z) does not. */
-        x_minus_one = z.real - copysign(1., z.real);
-        r.real = cos(z.imag) * cosh(x_minus_one) * Py_MATH_E;
-        r.imag = sin(z.imag) * sinh(x_minus_one) * Py_MATH_E;
-    } else {
-        r.real = cos(z.imag) * cosh(z.real);
-        r.imag = sin(z.imag) * sinh(z.real);
-    }
-    /* detect overflow, and set errno accordingly */
-    if (Py_IS_INFINITY(r.real) || Py_IS_INFINITY(r.imag))
-        errno = ERANGE;
-    else
-        errno = 0;
-    return r;
-}
-
-PyDoc_STRVAR(c_cosh_doc,
-"cosh(x)\n"
-"\n"
-"Return the hyperbolic cosine of x.");
-
-
-/* exp(infinity + i*y) and exp(-infinity + i*y) need special treatment for
-   finite y */
-static Py_complex exp_special_values[7][7];
-
-static Py_complex
-c_exp(Py_complex z)
-{
-    Py_complex r;
-    double l;
-
-    if (!Py_IS_FINITE(z.real) || !Py_IS_FINITE(z.imag)) {
-        if (Py_IS_INFINITY(z.real) && Py_IS_FINITE(z.imag)
-            && (z.imag != 0.)) {
-            if (z.real > 0) {
-                r.real = copysign(INF, cos(z.imag));
-                r.imag = copysign(INF, sin(z.imag));
-            }
-            else {
-                r.real = copysign(0., cos(z.imag));
-                r.imag = copysign(0., sin(z.imag));
-            }
-        }
-        else {
-            r = exp_special_values[special_type(z.real)]
-                                  [special_type(z.imag)];
-        }
-        /* need to set errno = EDOM if y is +/- infinity and x is not
-           a NaN and not -infinity */
-        if (Py_IS_INFINITY(z.imag) &&
-            (Py_IS_FINITE(z.real) ||
-             (Py_IS_INFINITY(z.real) && z.real > 0)))
-            errno = EDOM;
-        else
-            errno = 0;
-        return r;
-    }
-
-    if (z.real > CM_LOG_LARGE_DOUBLE) {
-        l = exp(z.real-1.);
-        r.real = l*cos(z.imag)*Py_MATH_E;
-        r.imag = l*sin(z.imag)*Py_MATH_E;
-    } else {
-        l = exp(z.real);
-        r.real = l*cos(z.imag);
-        r.imag = l*sin(z.imag);
-    }
-    /* detect overflow, and set errno accordingly */
-    if (Py_IS_INFINITY(r.real) || Py_IS_INFINITY(r.imag))
-        errno = ERANGE;
-    else
-        errno = 0;
-    return r;
-}
-
-PyDoc_STRVAR(c_exp_doc,
-"exp(x)\n"
-"\n"
-"Return the exponential value e**x.");
-
-
-static Py_complex log_special_values[7][7];
-
-static Py_complex
-c_log(Py_complex z)
-{
-    /*
-       The usual formula for the real part is log(hypot(z.real, z.imag)).
-       There are four situations where this formula is potentially
-       problematic:
-
-       (1) the absolute value of z is subnormal.  Then hypot is subnormal,
-       so has fewer than the usual number of bits of accuracy, hence may
-       have large relative error.  This then gives a large absolute error
-       in the log.  This can be solved by rescaling z by a suitable power
-       of 2.
-
-       (2) the absolute value of z is greater than DBL_MAX (e.g. when both
-       z.real and z.imag are within a factor of 1/sqrt(2) of DBL_MAX)
-       Again, rescaling solves this.
-
-       (3) the absolute value of z is close to 1.  In this case it's
-       difficult to achieve good accuracy, at least in part because a
-       change of 1ulp in the real or imaginary part of z can result in a
-       change of billions of ulps in the correctly rounded answer.
-
-       (4) z = 0.  The simplest thing to do here is to call the
-       floating-point log with an argument of 0, and let its behaviour
-       (returning -infinity, signaling a floating-point exception, setting
-       errno, or whatever) determine that of c_log.  So the usual formula
-       is fine here.
-
-     */
-
-    Py_complex r;
-    double ax, ay, am, an, h;
-
-    SPECIAL_VALUE(z, log_special_values);
-
-    ax = fabs(z.real);
-    ay = fabs(z.imag);
-
-    if (ax > CM_LARGE_DOUBLE || ay > CM_LARGE_DOUBLE) {
-        r.real = log(hypot(ax/2., ay/2.)) + M_LN2;
-    } else if (ax < DBL_MIN && ay < DBL_MIN) {
-        if (ax > 0. || ay > 0.) {
-            /* catch cases where hypot(ax, ay) is subnormal */
-            r.real = log(hypot(ldexp(ax, DBL_MANT_DIG),
-                     ldexp(ay, DBL_MANT_DIG))) - DBL_MANT_DIG*M_LN2;
-        }
-        else {
-            /* log(+/-0. +/- 0i) */
-            r.real = -INF;
-            r.imag = atan2(z.imag, z.real);
-            errno = EDOM;
-            return r;
-        }
-    } else {
-        h = hypot(ax, ay);
-        if (0.71 <= h && h <= 1.73) {
-            am = ax > ay ? ax : ay;  /* max(ax, ay) */
-            an = ax > ay ? ay : ax;  /* min(ax, ay) */
-            r.real = m_log1p((am-1)*(am+1)+an*an)/2.;
-        } else {
-            r.real = log(h);
-        }
-    }
-    r.imag = atan2(z.imag, z.real);
-    errno = 0;
-    return r;
-}
-
-
-static Py_complex
-c_log10(Py_complex z)
-{
-    Py_complex r;
-    int errno_save;
-
-    r = c_log(z);
-    errno_save = errno; /* just in case the divisions affect errno */
-    r.real = r.real / M_LN10;
-    r.imag = r.imag / M_LN10;
-    errno = errno_save;
-    return r;
-}
-
-PyDoc_STRVAR(c_log10_doc,
-"log10(x)\n"
-"\n"
-"Return the base-10 logarithm of x.");
-
-
-static Py_complex
-c_sin(Py_complex z)
-{
-    /* sin(z) = -i sin(iz) */
-    Py_complex s, r;
-    s.real = -z.imag;
-    s.imag = z.real;
-    s = c_sinh(s);
-    r.real = s.imag;
-    r.imag = -s.real;
-    return r;
-}
-
-PyDoc_STRVAR(c_sin_doc,
-"sin(x)\n"
-"\n"
-"Return the sine of x.");
-
-
-/* sinh(infinity + i*y) needs to be dealt with specially */
-static Py_complex sinh_special_values[7][7];
-
-static Py_complex
-c_sinh(Py_complex z)
-{
-    Py_complex r;
-    double x_minus_one;
-
-    /* special treatment for sinh(+/-inf + iy) if y is finite and
-       nonzero */
-    if (!Py_IS_FINITE(z.real) || !Py_IS_FINITE(z.imag)) {
-        if (Py_IS_INFINITY(z.real) && Py_IS_FINITE(z.imag)
-            && (z.imag != 0.)) {
-            if (z.real > 0) {
-                r.real = copysign(INF, cos(z.imag));
-                r.imag = copysign(INF, sin(z.imag));
-            }
-            else {
-                r.real = -copysign(INF, cos(z.imag));
-                r.imag = copysign(INF, sin(z.imag));
-            }
-        }
-        else {
-            r = sinh_special_values[special_type(z.real)]
-                                   [special_type(z.imag)];
-        }
-        /* need to set errno = EDOM if y is +/- infinity and x is not
-           a NaN */
-        if (Py_IS_INFINITY(z.imag) && !Py_IS_NAN(z.real))
-            errno = EDOM;
-        else
-            errno = 0;
-        return r;
-    }
-
-    if (fabs(z.real) > CM_LOG_LARGE_DOUBLE) {
-        x_minus_one = z.real - copysign(1., z.real);
-        r.real = cos(z.imag) * sinh(x_minus_one) * Py_MATH_E;
-        r.imag = sin(z.imag) * cosh(x_minus_one) * Py_MATH_E;
-    } else {
-        r.real = cos(z.imag) * sinh(z.real);
-        r.imag = sin(z.imag) * cosh(z.real);
-    }
-    /* detect overflow, and set errno accordingly */
-    if (Py_IS_INFINITY(r.real) || Py_IS_INFINITY(r.imag))
-        errno = ERANGE;
-    else
-        errno = 0;
-    return r;
-}
-
-PyDoc_STRVAR(c_sinh_doc,
-"sinh(x)\n"
-"\n"
-"Return the hyperbolic sine of x.");
-
-
-static Py_complex sqrt_special_values[7][7];
-
-static Py_complex
-c_sqrt(Py_complex z)
-{
-    /*
-       Method: use symmetries to reduce to the case when x = z.real and y
-       = z.imag are nonnegative.  Then the real part of the result is
-       given by
-
-         s = sqrt((x + hypot(x, y))/2)
-
-       and the imaginary part is
-
-         d = (y/2)/s
-
-       If either x or y is very large then there's a risk of overflow in
-       computation of the expression x + hypot(x, y).  We can avoid this
-       by rewriting the formula for s as:
-
-         s = 2*sqrt(x/8 + hypot(x/8, y/8))
-
-       This costs us two extra multiplications/divisions, but avoids the
-       overhead of checking for x and y large.
-
-       If both x and y are subnormal then hypot(x, y) may also be
-       subnormal, so will lack full precision.  We solve this by rescaling
-       x and y by a sufficiently large power of 2 to ensure that x and y
-       are normal.
-    */
-
-
-    Py_complex r;
-    double s,d;
-    double ax, ay;
-
-    SPECIAL_VALUE(z, sqrt_special_values);
-
-    if (z.real == 0. && z.imag == 0.) {
-        r.real = 0.;
-        r.imag = z.imag;
-        return r;
-    }
-
-    ax = fabs(z.real);
-    ay = fabs(z.imag);
-
-    if (ax < DBL_MIN && ay < DBL_MIN && (ax > 0. || ay > 0.)) {
-        /* here we catch cases where hypot(ax, ay) is subnormal */
-        ax = ldexp(ax, CM_SCALE_UP);
-        s = ldexp(sqrt(ax + hypot(ax, ldexp(ay, CM_SCALE_UP))),
-                  CM_SCALE_DOWN);
-    } else {
-        ax /= 8.;
-        s = 2.*sqrt(ax + hypot(ax, ay/8.));
-    }
-    d = ay/(2.*s);
-
-    if (z.real >= 0.) {
-        r.real = s;
-        r.imag = copysign(d, z.imag);
-    } else {
-        r.real = d;
-        r.imag = copysign(s, z.imag);
-    }
-    errno = 0;
-    return r;
-}
-
-PyDoc_STRVAR(c_sqrt_doc,
-"sqrt(x)\n"
-"\n"
-"Return the square root of x.");
-
-
-static Py_complex
-c_tan(Py_complex z)
-{
-    /* tan(z) = -i tanh(iz) */
-    Py_complex s, r;
-    s.real = -z.imag;
-    s.imag = z.real;
-    s = c_tanh(s);
-    r.real = s.imag;
-    r.imag = -s.real;
-    return r;
-}
-
-PyDoc_STRVAR(c_tan_doc,
-"tan(x)\n"
-"\n"
-"Return the tangent of x.");
-
-
-/* tanh(infinity + i*y) needs to be dealt with specially */
-static Py_complex tanh_special_values[7][7];
-
-static Py_complex
-c_tanh(Py_complex z)
-{
-    /* Formula:
-
-       tanh(x+iy) = (tanh(x)(1+tan(y)^2) + i tan(y)(1-tanh(x))^2) /
-       (1+tan(y)^2 tanh(x)^2)
-
-       To avoid excessive roundoff error, 1-tanh(x)^2 is better computed
-       as 1/cosh(x)^2.  When abs(x) is large, we approximate 1-tanh(x)^2
-       by 4 exp(-2*x) instead, to avoid possible overflow in the
-       computation of cosh(x).
-
-    */
-
-    Py_complex r;
-    double tx, ty, cx, txty, denom;
-
-    /* special treatment for tanh(+/-inf + iy) if y is finite and
-       nonzero */
-    if (!Py_IS_FINITE(z.real) || !Py_IS_FINITE(z.imag)) {
-        if (Py_IS_INFINITY(z.real) && Py_IS_FINITE(z.imag)
-            && (z.imag != 0.)) {
-            if (z.real > 0) {
-                r.real = 1.0;
-                r.imag = copysign(0.,
-                                  2.*sin(z.imag)*cos(z.imag));
-            }
-            else {
-                r.real = -1.0;
-                r.imag = copysign(0.,
-                                  2.*sin(z.imag)*cos(z.imag));
-            }
-        }
-        else {
-            r = tanh_special_values[special_type(z.real)]
-                                   [special_type(z.imag)];
-        }
-        /* need to set errno = EDOM if z.imag is +/-infinity and
-           z.real is finite */
-        if (Py_IS_INFINITY(z.imag) && Py_IS_FINITE(z.real))
-            errno = EDOM;
-        else
-            errno = 0;
-        return r;
-    }
-
-    /* danger of overflow in 2.*z.imag !*/
-    if (fabs(z.real) > CM_LOG_LARGE_DOUBLE) {
-        r.real = copysign(1., z.real);
-        r.imag = 4.*sin(z.imag)*cos(z.imag)*exp(-2.*fabs(z.real));
-    } else {
-        tx = tanh(z.real);
-        ty = tan(z.imag);
-        cx = 1./cosh(z.real);
-        txty = tx*ty;
-        denom = 1. + txty*txty;
-        r.real = tx*(1.+ty*ty)/denom;
-        r.imag = ((ty/denom)*cx)*cx;
-    }
-    errno = 0;
-    return r;
-}
-
-PyDoc_STRVAR(c_tanh_doc,
-"tanh(x)\n"
-"\n"
-"Return the hyperbolic tangent of x.");
-
-
-static PyObject *
-cmath_log(PyObject *self, PyObject *args)
-{
-    Py_complex x;
-    Py_complex y;
-
-    if (!PyArg_ParseTuple(args, "D|D", &x, &y))
-        return NULL;
-
-    errno = 0;
-    PyFPE_START_PROTECT("complex function", return 0)
-    x = c_log(x);
-    if (PyTuple_GET_SIZE(args) == 2) {
-        y = c_log(y);
-        x = c_quot(x, y);
-    }
-    PyFPE_END_PROTECT(x)
-    if (errno != 0)
-        return math_error();
-    return PyComplex_FromCComplex(x);
-}
-
-PyDoc_STRVAR(cmath_log_doc,
-"log(x[, base]) -> the logarithm of x to the given base.\n\
-If the base not specified, returns the natural logarithm (base e) of x.");
-
-
-/* And now the glue to make them available from Python: */
-
-static PyObject *
-math_error(void)
-{
-    if (errno == EDOM)
-        PyErr_SetString(PyExc_ValueError, "math domain error");
-    else if (errno == ERANGE)
-        PyErr_SetString(PyExc_OverflowError, "math range error");
-    else    /* Unexpected math error */
-        PyErr_SetFromErrno(PyExc_ValueError);
-    return NULL;
-}
-
-static PyObject *
-math_1(PyObject *args, Py_complex (*func)(Py_complex))
-{
-    Py_complex x,r ;
-    if (!PyArg_ParseTuple(args, "D", &x))
-        return NULL;
-    errno = 0;
-    PyFPE_START_PROTECT("complex function", return 0);
-    r = (*func)(x);
-    PyFPE_END_PROTECT(r);
-    if (errno == EDOM) {
-        PyErr_SetString(PyExc_ValueError, "math domain error");
-        return NULL;
-    }
-    else if (errno == ERANGE) {
-        PyErr_SetString(PyExc_OverflowError, "math range error");
-        return NULL;
-    }
-    else {
-        return PyComplex_FromCComplex(r);
-    }
-}
-
-#define FUNC1(stubname, func) \
-    static PyObject * stubname(PyObject *self, PyObject *args) { \
-        return math_1(args, func); \
-    }
-
-FUNC1(cmath_acos, c_acos)
-FUNC1(cmath_acosh, c_acosh)
-FUNC1(cmath_asin, c_asin)
-FUNC1(cmath_asinh, c_asinh)
-FUNC1(cmath_atan, c_atan)
-FUNC1(cmath_atanh, c_atanh)
-FUNC1(cmath_cos, c_cos)
-FUNC1(cmath_cosh, c_cosh)
-FUNC1(cmath_exp, c_exp)
-FUNC1(cmath_log10, c_log10)
-FUNC1(cmath_sin, c_sin)
-FUNC1(cmath_sinh, c_sinh)
-FUNC1(cmath_sqrt, c_sqrt)
-FUNC1(cmath_tan, c_tan)
-FUNC1(cmath_tanh, c_tanh)
-
-static PyObject *
-cmath_phase(PyObject *self, PyObject *args)
-{
-    Py_complex z;
-    double phi;
-    if (!PyArg_ParseTuple(args, "D:phase", &z))
-        return NULL;
-    errno = 0;
-    PyFPE_START_PROTECT("arg function", return 0)
-    phi = c_atan2(z);
-    PyFPE_END_PROTECT(phi)
-    if (errno != 0)
-        return math_error();
-    else
-        return PyFloat_FromDouble(phi);
-}
-
-PyDoc_STRVAR(cmath_phase_doc,
-"phase(z) -> float\n\n\
-Return argument, also known as the phase angle, of a complex.");
-
-static PyObject *
-cmath_polar(PyObject *self, PyObject *args)
-{
-    Py_complex z;
-    double r, phi;
-    if (!PyArg_ParseTuple(args, "D:polar", &z))
-        return NULL;
-    PyFPE_START_PROTECT("polar function", return 0)
-    phi = c_atan2(z); /* should not cause any exception */
-    r = c_abs(z); /* sets errno to ERANGE on overflow;  otherwise 0 */
-    PyFPE_END_PROTECT(r)
-    if (errno != 0)
-        return math_error();
-    else
-        return Py_BuildValue("dd", r, phi);
-}
-
-PyDoc_STRVAR(cmath_polar_doc,
-"polar(z) -> r: float, phi: float\n\n\
-Convert a complex from rectangular coordinates to polar coordinates. r is\n\
-the distance from 0 and phi the phase angle.");
-
-/*
-  rect() isn't covered by the C99 standard, but it's not too hard to
-  figure out 'spirit of C99' rules for special value handing:
-
-    rect(x, t) should behave like exp(log(x) + it) for positive-signed x
-    rect(x, t) should behave like -exp(log(-x) + it) for negative-signed x
-    rect(nan, t) should behave like exp(nan + it), except that rect(nan, 0)
-      gives nan +- i0 with the sign of the imaginary part unspecified.
-
-*/
-
-static Py_complex rect_special_values[7][7];
-
-static PyObject *
-cmath_rect(PyObject *self, PyObject *args)
-{
-    Py_complex z;
-    double r, phi;
-    if (!PyArg_ParseTuple(args, "dd:rect", &r, &phi))
-        return NULL;
-    errno = 0;
-    PyFPE_START_PROTECT("rect function", return 0)
-
-    /* deal with special values */
-    if (!Py_IS_FINITE(r) || !Py_IS_FINITE(phi)) {
-        /* if r is +/-infinity and phi is finite but nonzero then
-           result is (+-INF +-INF i), but we need to compute cos(phi)
-           and sin(phi) to figure out the signs. */
-        if (Py_IS_INFINITY(r) && (Py_IS_FINITE(phi)
-                                  && (phi != 0.))) {
-            if (r > 0) {
-                z.real = copysign(INF, cos(phi));
-                z.imag = copysign(INF, sin(phi));
-            }
-            else {
-                z.real = -copysign(INF, cos(phi));
-                z.imag = -copysign(INF, sin(phi));
-            }
-        }
-        else {
-            z = rect_special_values[special_type(r)]
-                                   [special_type(phi)];
-        }
-        /* need to set errno = EDOM if r is a nonzero number and phi
-           is infinite */
-        if (r != 0. && !Py_IS_NAN(r) && Py_IS_INFINITY(phi))
-            errno = EDOM;
-        else
-            errno = 0;
-    }
-    else {
-        z.real = r * cos(phi);
-        z.imag = r * sin(phi);
-        errno = 0;
-    }
-
-    PyFPE_END_PROTECT(z)
-    if (errno != 0)
-        return math_error();
-    else
-        return PyComplex_FromCComplex(z);
-}
-
-PyDoc_STRVAR(cmath_rect_doc,
-"rect(r, phi) -> z: complex\n\n\
-Convert from polar coordinates to rectangular coordinates.");
-
-static PyObject *
-cmath_isnan(PyObject *self, PyObject *args)
-{
-    Py_complex z;
-    if (!PyArg_ParseTuple(args, "D:isnan", &z))
-        return NULL;
-    return PyBool_FromLong(Py_IS_NAN(z.real) || Py_IS_NAN(z.imag));
-}
-
-PyDoc_STRVAR(cmath_isnan_doc,
-"isnan(z) -> bool\n\
-Checks if the real or imaginary part of z not a number (NaN)");
-
-static PyObject *
-cmath_isinf(PyObject *self, PyObject *args)
-{
-    Py_complex z;
-    if (!PyArg_ParseTuple(args, "D:isnan", &z))
-        return NULL;
-    return PyBool_FromLong(Py_IS_INFINITY(z.real) ||
-                           Py_IS_INFINITY(z.imag));
-}
-
-PyDoc_STRVAR(cmath_isinf_doc,
-"isinf(z) -> bool\n\
-Checks if the real or imaginary part of z is infinite.");
-
-
-PyDoc_STRVAR(module_doc,
-"This module is always available. It provides access to mathematical\n"
-"functions for complex numbers.");
-
-static PyMethodDef cmath_methods[] = {
-    {"acos",   cmath_acos,  METH_VARARGS, c_acos_doc},
-    {"acosh",  cmath_acosh, METH_VARARGS, c_acosh_doc},
-    {"asin",   cmath_asin,  METH_VARARGS, c_asin_doc},
-    {"asinh",  cmath_asinh, METH_VARARGS, c_asinh_doc},
-    {"atan",   cmath_atan,  METH_VARARGS, c_atan_doc},
-    {"atanh",  cmath_atanh, METH_VARARGS, c_atanh_doc},
-    {"cos",    cmath_cos,   METH_VARARGS, c_cos_doc},
-    {"cosh",   cmath_cosh,  METH_VARARGS, c_cosh_doc},
-    {"exp",    cmath_exp,   METH_VARARGS, c_exp_doc},
-    {"isinf",  cmath_isinf, METH_VARARGS, cmath_isinf_doc},
-    {"isnan",  cmath_isnan, METH_VARARGS, cmath_isnan_doc},
-    {"log",    cmath_log,   METH_VARARGS, cmath_log_doc},
-    {"log10",  cmath_log10, METH_VARARGS, c_log10_doc},
-    {"phase",  cmath_phase, METH_VARARGS, cmath_phase_doc},
-    {"polar",  cmath_polar, METH_VARARGS, cmath_polar_doc},
-    {"rect",   cmath_rect,  METH_VARARGS, cmath_rect_doc},
-    {"sin",    cmath_sin,   METH_VARARGS, c_sin_doc},
-    {"sinh",   cmath_sinh,  METH_VARARGS, c_sinh_doc},
-    {"sqrt",   cmath_sqrt,  METH_VARARGS, c_sqrt_doc},
-    {"tan",    cmath_tan,   METH_VARARGS, c_tan_doc},
-    {"tanh",   cmath_tanh,  METH_VARARGS, c_tanh_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyMODINIT_FUNC
-initcmath(void)
-{
-    PyObject *m;
-
-    m = Py_InitModule3("cmath", cmath_methods, module_doc);
-    if (m == NULL)
-        return;
-
-    PyModule_AddObject(m, "pi",
-                       PyFloat_FromDouble(Py_MATH_PI));
-    PyModule_AddObject(m, "e", PyFloat_FromDouble(Py_MATH_E));
-
-    /* initialize special value tables */
-
-#define INIT_SPECIAL_VALUES(NAME, BODY) { Py_complex* p = (Py_complex*)NAME; BODY }
-#define C(REAL, IMAG) p->real = REAL; p->imag = IMAG; ++p;
-
-    INIT_SPECIAL_VALUES(acos_special_values, {
-      C(P34,INF) C(P,INF)  C(P,INF)  C(P,-INF)  C(P,-INF)  C(P34,-INF) C(N,INF)
-      C(P12,INF) C(U,U)    C(U,U)    C(U,U)     C(U,U)     C(P12,-INF) C(N,N)
-      C(P12,INF) C(U,U)    C(P12,0.) C(P12,-0.) C(U,U)     C(P12,-INF) C(P12,N)
-      C(P12,INF) C(U,U)    C(P12,0.) C(P12,-0.) C(U,U)     C(P12,-INF) C(P12,N)
-      C(P12,INF) C(U,U)    C(U,U)    C(U,U)     C(U,U)     C(P12,-INF) C(N,N)
-      C(P14,INF) C(0.,INF) C(0.,INF) C(0.,-INF) C(0.,-INF) C(P14,-INF) C(N,INF)
-      C(N,INF)   C(N,N)    C(N,N)    C(N,N)     C(N,N)     C(N,-INF)   C(N,N)
-    })
-
-    INIT_SPECIAL_VALUES(acosh_special_values, {
-      C(INF,-P34) C(INF,-P)  C(INF,-P)  C(INF,P)  C(INF,P)  C(INF,P34) C(INF,N)
-      C(INF,-P12) C(U,U)     C(U,U)     C(U,U)    C(U,U)    C(INF,P12) C(N,N)
-      C(INF,-P12) C(U,U)     C(0.,-P12) C(0.,P12) C(U,U)    C(INF,P12) C(N,N)
-      C(INF,-P12) C(U,U)     C(0.,-P12) C(0.,P12) C(U,U)    C(INF,P12) C(N,N)
-      C(INF,-P12) C(U,U)     C(U,U)     C(U,U)    C(U,U)    C(INF,P12) C(N,N)
-      C(INF,-P14) C(INF,-0.) C(INF,-0.) C(INF,0.) C(INF,0.) C(INF,P14) C(INF,N)
-      C(INF,N)    C(N,N)     C(N,N)     C(N,N)    C(N,N)    C(INF,N)   C(N,N)
-    })
-
-    INIT_SPECIAL_VALUES(asinh_special_values, {
-      C(-INF,-P14) C(-INF,-0.) C(-INF,-0.) C(-INF,0.) C(-INF,0.) C(-INF,P14) C(-INF,N)
-      C(-INF,-P12) C(U,U)      C(U,U)      C(U,U)     C(U,U)     C(-INF,P12) C(N,N)
-      C(-INF,-P12) C(U,U)      C(-0.,-0.)  C(-0.,0.)  C(U,U)     C(-INF,P12) C(N,N)
-      C(INF,-P12)  C(U,U)      C(0.,-0.)   C(0.,0.)   C(U,U)     C(INF,P12)  C(N,N)
-      C(INF,-P12)  C(U,U)      C(U,U)      C(U,U)     C(U,U)     C(INF,P12)  C(N,N)
-      C(INF,-P14)  C(INF,-0.)  C(INF,-0.)  C(INF,0.)  C(INF,0.)  C(INF,P14)  C(INF,N)
-      C(INF,N)     C(N,N)      C(N,-0.)    C(N,0.)    C(N,N)     C(INF,N)    C(N,N)
-    })
-
-    INIT_SPECIAL_VALUES(atanh_special_values, {
-      C(-0.,-P12) C(-0.,-P12) C(-0.,-P12) C(-0.,P12) C(-0.,P12) C(-0.,P12) C(-0.,N)
-      C(-0.,-P12) C(U,U)      C(U,U)      C(U,U)     C(U,U)     C(-0.,P12) C(N,N)
-      C(-0.,-P12) C(U,U)      C(-0.,-0.)  C(-0.,0.)  C(U,U)     C(-0.,P12) C(-0.,N)
-      C(0.,-P12)  C(U,U)      C(0.,-0.)   C(0.,0.)   C(U,U)     C(0.,P12)  C(0.,N)
-      C(0.,-P12)  C(U,U)      C(U,U)      C(U,U)     C(U,U)     C(0.,P12)  C(N,N)
-      C(0.,-P12)  C(0.,-P12)  C(0.,-P12)  C(0.,P12)  C(0.,P12)  C(0.,P12)  C(0.,N)
-      C(0.,-P12)  C(N,N)      C(N,N)      C(N,N)     C(N,N)     C(0.,P12)  C(N,N)
-    })
-
-    INIT_SPECIAL_VALUES(cosh_special_values, {
-      C(INF,N) C(U,U) C(INF,0.)  C(INF,-0.) C(U,U) C(INF,N) C(INF,N)
-      C(N,N)   C(U,U) C(U,U)     C(U,U)     C(U,U) C(N,N)   C(N,N)
-      C(N,0.)  C(U,U) C(1.,0.)   C(1.,-0.)  C(U,U) C(N,0.)  C(N,0.)
-      C(N,0.)  C(U,U) C(1.,-0.)  C(1.,0.)   C(U,U) C(N,0.)  C(N,0.)
-      C(N,N)   C(U,U) C(U,U)     C(U,U)     C(U,U) C(N,N)   C(N,N)
-      C(INF,N) C(U,U) C(INF,-0.) C(INF,0.)  C(U,U) C(INF,N) C(INF,N)
-      C(N,N)   C(N,N) C(N,0.)    C(N,0.)    C(N,N) C(N,N)   C(N,N)
-    })
-
-    INIT_SPECIAL_VALUES(exp_special_values, {
-      C(0.,0.) C(U,U) C(0.,-0.)  C(0.,0.)  C(U,U) C(0.,0.) C(0.,0.)
-      C(N,N)   C(U,U) C(U,U)     C(U,U)    C(U,U) C(N,N)   C(N,N)
-      C(N,N)   C(U,U) C(1.,-0.)  C(1.,0.)  C(U,U) C(N,N)   C(N,N)
-      C(N,N)   C(U,U) C(1.,-0.)  C(1.,0.)  C(U,U) C(N,N)   C(N,N)
-      C(N,N)   C(U,U) C(U,U)     C(U,U)    C(U,U) C(N,N)   C(N,N)
-      C(INF,N) C(U,U) C(INF,-0.) C(INF,0.) C(U,U) C(INF,N) C(INF,N)
-      C(N,N)   C(N,N) C(N,-0.)   C(N,0.)   C(N,N) C(N,N)   C(N,N)
-    })
-
-    INIT_SPECIAL_VALUES(log_special_values, {
-      C(INF,-P34) C(INF,-P)  C(INF,-P)   C(INF,P)   C(INF,P)  C(INF,P34)  C(INF,N)
-      C(INF,-P12) C(U,U)     C(U,U)      C(U,U)     C(U,U)    C(INF,P12)  C(N,N)
-      C(INF,-P12) C(U,U)     C(-INF,-P)  C(-INF,P)  C(U,U)    C(INF,P12)  C(N,N)
-      C(INF,-P12) C(U,U)     C(-INF,-0.) C(-INF,0.) C(U,U)    C(INF,P12)  C(N,N)
-      C(INF,-P12) C(U,U)     C(U,U)      C(U,U)     C(U,U)    C(INF,P12)  C(N,N)
-      C(INF,-P14) C(INF,-0.) C(INF,-0.)  C(INF,0.)  C(INF,0.) C(INF,P14)  C(INF,N)
-      C(INF,N)    C(N,N)     C(N,N)      C(N,N)     C(N,N)    C(INF,N)    C(N,N)
-    })
-
-    INIT_SPECIAL_VALUES(sinh_special_values, {
-      C(INF,N) C(U,U) C(-INF,-0.) C(-INF,0.) C(U,U) C(INF,N) C(INF,N)
-      C(N,N)   C(U,U) C(U,U)      C(U,U)     C(U,U) C(N,N)   C(N,N)
-      C(0.,N)  C(U,U) C(-0.,-0.)  C(-0.,0.)  C(U,U) C(0.,N)  C(0.,N)
-      C(0.,N)  C(U,U) C(0.,-0.)   C(0.,0.)   C(U,U) C(0.,N)  C(0.,N)
-      C(N,N)   C(U,U) C(U,U)      C(U,U)     C(U,U) C(N,N)   C(N,N)
-      C(INF,N) C(U,U) C(INF,-0.)  C(INF,0.)  C(U,U) C(INF,N) C(INF,N)
-      C(N,N)   C(N,N) C(N,-0.)    C(N,0.)    C(N,N) C(N,N)   C(N,N)
-    })
-
-    INIT_SPECIAL_VALUES(sqrt_special_values, {
-      C(INF,-INF) C(0.,-INF) C(0.,-INF) C(0.,INF) C(0.,INF) C(INF,INF) C(N,INF)
-      C(INF,-INF) C(U,U)     C(U,U)     C(U,U)    C(U,U)    C(INF,INF) C(N,N)
-      C(INF,-INF) C(U,U)     C(0.,-0.)  C(0.,0.)  C(U,U)    C(INF,INF) C(N,N)
-      C(INF,-INF) C(U,U)     C(0.,-0.)  C(0.,0.)  C(U,U)    C(INF,INF) C(N,N)
-      C(INF,-INF) C(U,U)     C(U,U)     C(U,U)    C(U,U)    C(INF,INF) C(N,N)
-      C(INF,-INF) C(INF,-0.) C(INF,-0.) C(INF,0.) C(INF,0.) C(INF,INF) C(INF,N)
-      C(INF,-INF) C(N,N)     C(N,N)     C(N,N)    C(N,N)    C(INF,INF) C(N,N)
-    })
-
-    INIT_SPECIAL_VALUES(tanh_special_values, {
-      C(-1.,0.) C(U,U) C(-1.,-0.) C(-1.,0.) C(U,U) C(-1.,0.) C(-1.,0.)
-      C(N,N)    C(U,U) C(U,U)     C(U,U)    C(U,U) C(N,N)    C(N,N)
-      C(N,N)    C(U,U) C(-0.,-0.) C(-0.,0.) C(U,U) C(N,N)    C(N,N)
-      C(N,N)    C(U,U) C(0.,-0.)  C(0.,0.)  C(U,U) C(N,N)    C(N,N)
-      C(N,N)    C(U,U) C(U,U)     C(U,U)    C(U,U) C(N,N)    C(N,N)
-      C(1.,0.)  C(U,U) C(1.,-0.)  C(1.,0.)  C(U,U) C(1.,0.)  C(1.,0.)
-      C(N,N)    C(N,N) C(N,-0.)   C(N,0.)   C(N,N) C(N,N)    C(N,N)
-    })
-
-    INIT_SPECIAL_VALUES(rect_special_values, {
-      C(INF,N) C(U,U) C(-INF,0.) C(-INF,-0.) C(U,U) C(INF,N) C(INF,N)
-      C(N,N)   C(U,U) C(U,U)     C(U,U)      C(U,U) C(N,N)   C(N,N)
-      C(0.,0.) C(U,U) C(-0.,0.)  C(-0.,-0.)  C(U,U) C(0.,0.) C(0.,0.)
-      C(0.,0.) C(U,U) C(0.,-0.)  C(0.,0.)    C(U,U) C(0.,0.) C(0.,0.)
-      C(N,N)   C(U,U) C(U,U)     C(U,U)      C(U,U) C(N,N)   C(N,N)
-      C(INF,N) C(U,U) C(INF,-0.) C(INF,0.)   C(U,U) C(INF,N) C(INF,N)
-      C(N,N)   C(N,N) C(N,0.)    C(N,0.)     C(N,N) C(N,N)   C(N,N)
-    })
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/cryptmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/cryptmodule.c
deleted file mode 100644
index b2902e4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/cryptmodule.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* cryptmodule.c - by Steve Majewski
- */
-
-#include "Python.h"
-
-#include <sys/types.h>
-
-#ifdef __VMS
-#include <openssl/des.h>
-#endif
-
-/* Module crypt */
-
-
-static PyObject *crypt_crypt(PyObject *self, PyObject *args)
-{
-    char *word, *salt;
-#ifndef __VMS
-    extern char * crypt(const char *, const char *);
-#endif
-
-    if (!PyArg_ParseTuple(args, "ss:crypt", &word, &salt)) {
-        return NULL;
-    }
-    /* On some platforms (AtheOS) crypt returns NULL for an invalid
-       salt. Return None in that case. XXX Maybe raise an exception?  */
-    return Py_BuildValue("s", crypt(word, salt));
-
-}
-
-PyDoc_STRVAR(crypt_crypt__doc__,
-"crypt(word, salt) -> string\n\
-word will usually be a user's password. salt is a 2-character string\n\
-which will be used to select one of 4096 variations of DES. The characters\n\
-in salt must be either \".\", \"/\", or an alphanumeric character. Returns\n\
-the hashed password as a string, which will be composed of characters from\n\
-the same alphabet as the salt.");
-
-
-static PyMethodDef crypt_methods[] = {
-    {"crypt",           crypt_crypt, METH_VARARGS, crypt_crypt__doc__},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyMODINIT_FUNC
-initcrypt(void)
-{
-    Py_InitModule("crypt", crypt_methods);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/datetimemodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/datetimemodule.c
deleted file mode 100644
index 655f70d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/datetimemodule.c
+++ /dev/null
@@ -1,5117 +0,0 @@
-/*  C implementation for the date/time type documented at
- *  http://www.zope.org/Members/fdrake/DateTimeWiki/FrontPage
- */
-
-#define PY_SSIZE_T_CLEAN
-
-#include "Python.h"
-#include "modsupport.h"
-#include "structmember.h"
-
-#include <time.h>
-
-#include "timefuncs.h"
-
-/* Differentiate between building the core module and building extension
- * modules.
- */
-#ifndef Py_BUILD_CORE
-#define Py_BUILD_CORE
-#endif
-#include "datetime.h"
-#undef Py_BUILD_CORE
-
-/* We require that C int be at least 32 bits, and use int virtually
- * everywhere.  In just a few cases we use a temp long, where a Python
- * API returns a C long.  In such cases, we have to ensure that the
- * final result fits in a C int (this can be an issue on 64-bit boxes).
- */
-#if SIZEOF_INT < 4
-#       error "datetime.c requires that C int have at least 32 bits"
-#endif
-
-#define MINYEAR 1
-#define MAXYEAR 9999
-#define MAXORDINAL 3652059 /* date(9999,12,31).toordinal() */
-
-/* Nine decimal digits is easy to communicate, and leaves enough room
- * so that two delta days can be added w/o fear of overflowing a signed
- * 32-bit int, and with plenty of room left over to absorb any possible
- * carries from adding seconds.
- */
-#define MAX_DELTA_DAYS 999999999
-
-/* Rename the long macros in datetime.h to more reasonable short names. */
-#define GET_YEAR                PyDateTime_GET_YEAR
-#define GET_MONTH               PyDateTime_GET_MONTH
-#define GET_DAY                 PyDateTime_GET_DAY
-#define DATE_GET_HOUR           PyDateTime_DATE_GET_HOUR
-#define DATE_GET_MINUTE         PyDateTime_DATE_GET_MINUTE
-#define DATE_GET_SECOND         PyDateTime_DATE_GET_SECOND
-#define DATE_GET_MICROSECOND    PyDateTime_DATE_GET_MICROSECOND
-
-/* Date accessors for date and datetime. */
-#define SET_YEAR(o, v)          (((o)->data[0] = ((v) & 0xff00) >> 8), \
-                 ((o)->data[1] = ((v) & 0x00ff)))
-#define SET_MONTH(o, v)         (PyDateTime_GET_MONTH(o) = (v))
-#define SET_DAY(o, v)           (PyDateTime_GET_DAY(o) = (v))
-
-/* Date/Time accessors for datetime. */
-#define DATE_SET_HOUR(o, v)     (PyDateTime_DATE_GET_HOUR(o) = (v))
-#define DATE_SET_MINUTE(o, v)   (PyDateTime_DATE_GET_MINUTE(o) = (v))
-#define DATE_SET_SECOND(o, v)   (PyDateTime_DATE_GET_SECOND(o) = (v))
-#define DATE_SET_MICROSECOND(o, v)      \
-    (((o)->data[7] = ((v) & 0xff0000) >> 16), \
-     ((o)->data[8] = ((v) & 0x00ff00) >> 8), \
-     ((o)->data[9] = ((v) & 0x0000ff)))
-
-/* Time accessors for time. */
-#define TIME_GET_HOUR           PyDateTime_TIME_GET_HOUR
-#define TIME_GET_MINUTE         PyDateTime_TIME_GET_MINUTE
-#define TIME_GET_SECOND         PyDateTime_TIME_GET_SECOND
-#define TIME_GET_MICROSECOND    PyDateTime_TIME_GET_MICROSECOND
-#define TIME_SET_HOUR(o, v)     (PyDateTime_TIME_GET_HOUR(o) = (v))
-#define TIME_SET_MINUTE(o, v)   (PyDateTime_TIME_GET_MINUTE(o) = (v))
-#define TIME_SET_SECOND(o, v)   (PyDateTime_TIME_GET_SECOND(o) = (v))
-#define TIME_SET_MICROSECOND(o, v)      \
-    (((o)->data[3] = ((v) & 0xff0000) >> 16), \
-     ((o)->data[4] = ((v) & 0x00ff00) >> 8), \
-     ((o)->data[5] = ((v) & 0x0000ff)))
-
-/* Delta accessors for timedelta. */
-#define GET_TD_DAYS(o)          (((PyDateTime_Delta *)(o))->days)
-#define GET_TD_SECONDS(o)       (((PyDateTime_Delta *)(o))->seconds)
-#define GET_TD_MICROSECONDS(o)  (((PyDateTime_Delta *)(o))->microseconds)
-
-#define SET_TD_DAYS(o, v)       ((o)->days = (v))
-#define SET_TD_SECONDS(o, v)    ((o)->seconds = (v))
-#define SET_TD_MICROSECONDS(o, v) ((o)->microseconds = (v))
-
-/* p is a pointer to a time or a datetime object; HASTZINFO(p) returns
- * p->hastzinfo.
- */
-#define HASTZINFO(p)            (((_PyDateTime_BaseTZInfo *)(p))->hastzinfo)
-
-/* M is a char or int claiming to be a valid month.  The macro is equivalent
- * to the two-sided Python test
- *      1 <= M <= 12
- */
-#define MONTH_IS_SANE(M) ((unsigned int)(M) - 1 < 12)
-
-/* Forward declarations. */
-static PyTypeObject PyDateTime_DateType;
-static PyTypeObject PyDateTime_DateTimeType;
-static PyTypeObject PyDateTime_DeltaType;
-static PyTypeObject PyDateTime_TimeType;
-static PyTypeObject PyDateTime_TZInfoType;
-
-/* ---------------------------------------------------------------------------
- * Math utilities.
- */
-
-/* k = i+j overflows iff k differs in sign from both inputs,
- * iff k^i has sign bit set and k^j has sign bit set,
- * iff (k^i)&(k^j) has sign bit set.
- */
-#define SIGNED_ADD_OVERFLOWED(RESULT, I, J) \
-    ((((RESULT) ^ (I)) & ((RESULT) ^ (J))) < 0)
-
-/* Compute Python divmod(x, y), returning the quotient and storing the
- * remainder into *r.  The quotient is the floor of x/y, and that's
- * the real point of this.  C will probably truncate instead (C99
- * requires truncation; C89 left it implementation-defined).
- * Simplification:  we *require* that y > 0 here.  That's appropriate
- * for all the uses made of it.  This simplifies the code and makes
- * the overflow case impossible (divmod(LONG_MIN, -1) is the only
- * overflow case).
- */
-static int
-divmod(int x, int y, int *r)
-{
-    int quo;
-
-    assert(y > 0);
-    quo = x / y;
-    *r = x - quo * y;
-    if (*r < 0) {
-        --quo;
-        *r += y;
-    }
-    assert(0 <= *r && *r < y);
-    return quo;
-}
-
-/* Round a double to the nearest long.  |x| must be small enough to fit
- * in a C long; this is not checked.
- */
-static long
-round_to_long(double x)
-{
-    if (x >= 0.0)
-        x = floor(x + 0.5);
-    else
-        x = ceil(x - 0.5);
-    return (long)x;
-}
-
-/* ---------------------------------------------------------------------------
- * General calendrical helper functions
- */
-
-/* For each month ordinal in 1..12, the number of days in that month,
- * and the number of days before that month in the same year.  These
- * are correct for non-leap years only.
- */
-static int _days_in_month[] = {
-    0, /* unused; this vector uses 1-based indexing */
-    31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
-};
-
-static int _days_before_month[] = {
-    0, /* unused; this vector uses 1-based indexing */
-    0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334
-};
-
-/* year -> 1 if leap year, else 0. */
-static int
-is_leap(int year)
-{
-    /* Cast year to unsigned.  The result is the same either way, but
-     * C can generate faster code for unsigned mod than for signed
-     * mod (especially for % 4 -- a good compiler should just grab
-     * the last 2 bits when the LHS is unsigned).
-     */
-    const unsigned int ayear = (unsigned int)year;
-    return ayear % 4 == 0 && (ayear % 100 != 0 || ayear % 400 == 0);
-}
-
-/* year, month -> number of days in that month in that year */
-static int
-days_in_month(int year, int month)
-{
-    assert(month >= 1);
-    assert(month <= 12);
-    if (month == 2 && is_leap(year))
-        return 29;
-    else
-        return _days_in_month[month];
-}
-
-/* year, month -> number of days in year preceeding first day of month */
-static int
-days_before_month(int year, int month)
-{
-    int days;
-
-    assert(month >= 1);
-    assert(month <= 12);
-    days = _days_before_month[month];
-    if (month > 2 && is_leap(year))
-        ++days;
-    return days;
-}
-
-/* year -> number of days before January 1st of year.  Remember that we
- * start with year 1, so days_before_year(1) == 0.
- */
-static int
-days_before_year(int year)
-{
-    int y = year - 1;
-    /* This is incorrect if year <= 0; we really want the floor
-     * here.  But so long as MINYEAR is 1, the smallest year this
-     * can see is 0 (this can happen in some normalization endcases),
-     * so we'll just special-case that.
-     */
-    assert (year >= 0);
-    if (y >= 0)
-        return y*365 + y/4 - y/100 + y/400;
-    else {
-        assert(y == -1);
-        return -366;
-    }
-}
-
-/* Number of days in 4, 100, and 400 year cycles.  That these have
- * the correct values is asserted in the module init function.
- */
-#define DI4Y    1461    /* days_before_year(5); days in 4 years */
-#define DI100Y  36524   /* days_before_year(101); days in 100 years */
-#define DI400Y  146097  /* days_before_year(401); days in 400 years  */
-
-/* ordinal -> year, month, day, considering 01-Jan-0001 as day 1. */
-static void
-ord_to_ymd(int ordinal, int *year, int *month, int *day)
-{
-    int n, n1, n4, n100, n400, leapyear, preceding;
-
-    /* ordinal is a 1-based index, starting at 1-Jan-1.  The pattern of
-     * leap years repeats exactly every 400 years.  The basic strategy is
-     * to find the closest 400-year boundary at or before ordinal, then
-     * work with the offset from that boundary to ordinal.  Life is much
-     * clearer if we subtract 1 from ordinal first -- then the values
-     * of ordinal at 400-year boundaries are exactly those divisible
-     * by DI400Y:
-     *
-     *    D  M   Y            n              n-1
-     *    -- --- ----        ----------     ----------------
-     *    31 Dec -400        -DI400Y       -DI400Y -1
-     *     1 Jan -399         -DI400Y +1   -DI400Y      400-year boundary
-     *    ...
-     *    30 Dec  000        -1             -2
-     *    31 Dec  000         0             -1
-     *     1 Jan  001         1              0          400-year boundary
-     *     2 Jan  001         2              1
-     *     3 Jan  001         3              2
-     *    ...
-     *    31 Dec  400         DI400Y        DI400Y -1
-     *     1 Jan  401         DI400Y +1     DI400Y      400-year boundary
-     */
-    assert(ordinal >= 1);
-    --ordinal;
-    n400 = ordinal / DI400Y;
-    n = ordinal % DI400Y;
-    *year = n400 * 400 + 1;
-
-    /* Now n is the (non-negative) offset, in days, from January 1 of
-     * year, to the desired date.  Now compute how many 100-year cycles
-     * precede n.
-     * Note that it's possible for n100 to equal 4!  In that case 4 full
-     * 100-year cycles precede the desired day, which implies the
-     * desired day is December 31 at the end of a 400-year cycle.
-     */
-    n100 = n / DI100Y;
-    n = n % DI100Y;
-
-    /* Now compute how many 4-year cycles precede it. */
-    n4 = n / DI4Y;
-    n = n % DI4Y;
-
-    /* And now how many single years.  Again n1 can be 4, and again
-     * meaning that the desired day is December 31 at the end of the
-     * 4-year cycle.
-     */
-    n1 = n / 365;
-    n = n % 365;
-
-    *year += n100 * 100 + n4 * 4 + n1;
-    if (n1 == 4 || n100 == 4) {
-        assert(n == 0);
-        *year -= 1;
-        *month = 12;
-        *day = 31;
-        return;
-    }
-
-    /* Now the year is correct, and n is the offset from January 1.  We
-     * find the month via an estimate that's either exact or one too
-     * large.
-     */
-    leapyear = n1 == 3 && (n4 != 24 || n100 == 3);
-    assert(leapyear == is_leap(*year));
-    *month = (n + 50) >> 5;
-    preceding = (_days_before_month[*month] + (*month > 2 && leapyear));
-    if (preceding > n) {
-        /* estimate is too large */
-        *month -= 1;
-        preceding -= days_in_month(*year, *month);
-    }
-    n -= preceding;
-    assert(0 <= n);
-    assert(n < days_in_month(*year, *month));
-
-    *day = n + 1;
-}
-
-/* year, month, day -> ordinal, considering 01-Jan-0001 as day 1. */
-static int
-ymd_to_ord(int year, int month, int day)
-{
-    return days_before_year(year) + days_before_month(year, month) + day;
-}
-
-/* Day of week, where Monday==0, ..., Sunday==6.  1/1/1 was a Monday. */
-static int
-weekday(int year, int month, int day)
-{
-    return (ymd_to_ord(year, month, day) + 6) % 7;
-}
-
-/* Ordinal of the Monday starting week 1 of the ISO year.  Week 1 is the
- * first calendar week containing a Thursday.
- */
-static int
-iso_week1_monday(int year)
-{
-    int first_day = ymd_to_ord(year, 1, 1);     /* ord of 1/1 */
-    /* 0 if 1/1 is a Monday, 1 if a Tue, etc. */
-    int first_weekday = (first_day + 6) % 7;
-    /* ordinal of closest Monday at or before 1/1 */
-    int week1_monday  = first_day - first_weekday;
-
-    if (first_weekday > 3)      /* if 1/1 was Fri, Sat, Sun */
-        week1_monday += 7;
-    return week1_monday;
-}
-
-/* ---------------------------------------------------------------------------
- * Range checkers.
- */
-
-/* Check that -MAX_DELTA_DAYS <= days <= MAX_DELTA_DAYS.  If so, return 0.
- * If not, raise OverflowError and return -1.
- */
-static int
-check_delta_day_range(int days)
-{
-    if (-MAX_DELTA_DAYS <= days && days <= MAX_DELTA_DAYS)
-        return 0;
-    PyErr_Format(PyExc_OverflowError,
-                 "days=%d; must have magnitude <= %d",
-                 days, MAX_DELTA_DAYS);
-    return -1;
-}
-
-/* Check that date arguments are in range.  Return 0 if they are.  If they
- * aren't, raise ValueError and return -1.
- */
-static int
-check_date_args(int year, int month, int day)
-{
-
-    if (year < MINYEAR || year > MAXYEAR) {
-        PyErr_SetString(PyExc_ValueError,
-                        "year is out of range");
-        return -1;
-    }
-    if (month < 1 || month > 12) {
-        PyErr_SetString(PyExc_ValueError,
-                        "month must be in 1..12");
-        return -1;
-    }
-    if (day < 1 || day > days_in_month(year, month)) {
-        PyErr_SetString(PyExc_ValueError,
-                        "day is out of range for month");
-        return -1;
-    }
-    return 0;
-}
-
-/* Check that time arguments are in range.  Return 0 if they are.  If they
- * aren't, raise ValueError and return -1.
- */
-static int
-check_time_args(int h, int m, int s, int us)
-{
-    if (h < 0 || h > 23) {
-        PyErr_SetString(PyExc_ValueError,
-                        "hour must be in 0..23");
-        return -1;
-    }
-    if (m < 0 || m > 59) {
-        PyErr_SetString(PyExc_ValueError,
-                        "minute must be in 0..59");
-        return -1;
-    }
-    if (s < 0 || s > 59) {
-        PyErr_SetString(PyExc_ValueError,
-                        "second must be in 0..59");
-        return -1;
-    }
-    if (us < 0 || us > 999999) {
-        PyErr_SetString(PyExc_ValueError,
-                        "microsecond must be in 0..999999");
-        return -1;
-    }
-    return 0;
-}
-
-/* ---------------------------------------------------------------------------
- * Normalization utilities.
- */
-
-/* One step of a mixed-radix conversion.  A "hi" unit is equivalent to
- * factor "lo" units.  factor must be > 0.  If *lo is less than 0, or
- * at least factor, enough of *lo is converted into "hi" units so that
- * 0 <= *lo < factor.  The input values must be such that int overflow
- * is impossible.
- */
-static void
-normalize_pair(int *hi, int *lo, int factor)
-{
-    assert(factor > 0);
-    assert(lo != hi);
-    if (*lo < 0 || *lo >= factor) {
-        const int num_hi = divmod(*lo, factor, lo);
-        const int new_hi = *hi + num_hi;
-        assert(! SIGNED_ADD_OVERFLOWED(new_hi, *hi, num_hi));
-        *hi = new_hi;
-    }
-    assert(0 <= *lo && *lo < factor);
-}
-
-/* Fiddle days (d), seconds (s), and microseconds (us) so that
- *      0 <= *s < 24*3600
- *      0 <= *us < 1000000
- * The input values must be such that the internals don't overflow.
- * The way this routine is used, we don't get close.
- */
-static void
-normalize_d_s_us(int *d, int *s, int *us)
-{
-    if (*us < 0 || *us >= 1000000) {
-        normalize_pair(s, us, 1000000);
-        /* |s| can't be bigger than about
-         * |original s| + |original us|/1000000 now.
-         */
-
-    }
-    if (*s < 0 || *s >= 24*3600) {
-        normalize_pair(d, s, 24*3600);
-        /* |d| can't be bigger than about
-         * |original d| +
-         * (|original s| + |original us|/1000000) / (24*3600) now.
-         */
-    }
-    assert(0 <= *s && *s < 24*3600);
-    assert(0 <= *us && *us < 1000000);
-}
-
-/* Fiddle years (y), months (m), and days (d) so that
- *      1 <= *m <= 12
- *      1 <= *d <= days_in_month(*y, *m)
- * The input values must be such that the internals don't overflow.
- * The way this routine is used, we don't get close.
- */
-static int
-normalize_y_m_d(int *y, int *m, int *d)
-{
-    int dim;            /* # of days in month */
-
-    /* This gets muddy:  the proper range for day can't be determined
-     * without knowing the correct month and year, but if day is, e.g.,
-     * plus or minus a million, the current month and year values make
-     * no sense (and may also be out of bounds themselves).
-     * Saying 12 months == 1 year should be non-controversial.
-     */
-    if (*m < 1 || *m > 12) {
-        --*m;
-        normalize_pair(y, m, 12);
-        ++*m;
-        /* |y| can't be bigger than about
-         * |original y| + |original m|/12 now.
-         */
-    }
-    assert(1 <= *m && *m <= 12);
-
-    /* Now only day can be out of bounds (year may also be out of bounds
-     * for a datetime object, but we don't care about that here).
-     * If day is out of bounds, what to do is arguable, but at least the
-     * method here is principled and explainable.
-     */
-    dim = days_in_month(*y, *m);
-    if (*d < 1 || *d > dim) {
-        /* Move day-1 days from the first of the month.  First try to
-         * get off cheap if we're only one day out of range
-         * (adjustments for timezone alone can't be worse than that).
-         */
-        if (*d == 0) {
-            --*m;
-            if (*m > 0)
-                *d = days_in_month(*y, *m);
-            else {
-                --*y;
-                *m = 12;
-                *d = 31;
-            }
-        }
-        else if (*d == dim + 1) {
-            /* move forward a day */
-            ++*m;
-            *d = 1;
-            if (*m > 12) {
-                *m = 1;
-                ++*y;
-            }
-        }
-        else {
-            int ordinal = ymd_to_ord(*y, *m, 1) +
-                                      *d - 1;
-            if (ordinal < 1 || ordinal > MAXORDINAL) {
-                goto error;
-            } else {
-                ord_to_ymd(ordinal, y, m, d);
-                return 0;
-            }
-        }
-    }
-    assert(*m > 0);
-    assert(*d > 0);
-    if (MINYEAR <= *y && *y <= MAXYEAR)
-        return 0;
- error:
-    PyErr_SetString(PyExc_OverflowError,
-            "date value out of range");
-    return -1;
-
-}
-
-/* Fiddle out-of-bounds months and days so that the result makes some kind
- * of sense.  The parameters are both inputs and outputs.  Returns < 0 on
- * failure, where failure means the adjusted year is out of bounds.
- */
-static int
-normalize_date(int *year, int *month, int *day)
-{
-    return normalize_y_m_d(year, month, day);
-}
-
-/* Force all the datetime fields into range.  The parameters are both
- * inputs and outputs.  Returns < 0 on error.
- */
-static int
-normalize_datetime(int *year, int *month, int *day,
-                   int *hour, int *minute, int *second,
-                   int *microsecond)
-{
-    normalize_pair(second, microsecond, 1000000);
-    normalize_pair(minute, second, 60);
-    normalize_pair(hour, minute, 60);
-    normalize_pair(day, hour, 24);
-    return normalize_date(year, month, day);
-}
-
-/* ---------------------------------------------------------------------------
- * Basic object allocation:  tp_alloc implementations.  These allocate
- * Python objects of the right size and type, and do the Python object-
- * initialization bit.  If there's not enough memory, they return NULL after
- * setting MemoryError.  All data members remain uninitialized trash.
- *
- * We abuse the tp_alloc "nitems" argument to communicate whether a tzinfo
- * member is needed.  This is ugly, imprecise, and possibly insecure.
- * tp_basicsize for the time and datetime types is set to the size of the
- * struct that has room for the tzinfo member, so subclasses in Python will
- * allocate enough space for a tzinfo member whether or not one is actually
- * needed.  That's the "ugly and imprecise" parts.  The "possibly insecure"
- * part is that PyType_GenericAlloc() (which subclasses in Python end up
- * using) just happens today to effectively ignore the nitems argument
- * when tp_itemsize is 0, which it is for these type objects.  If that
- * changes, perhaps the callers of tp_alloc slots in this file should
- * be changed to force a 0 nitems argument unless the type being allocated
- * is a base type implemented in this file (so that tp_alloc is time_alloc
- * or datetime_alloc below, which know about the nitems abuse).
- */
-
-static PyObject *
-time_alloc(PyTypeObject *type, Py_ssize_t aware)
-{
-    PyObject *self;
-
-    self = (PyObject *)
-        PyObject_MALLOC(aware ?
-                        sizeof(PyDateTime_Time) :
-                sizeof(_PyDateTime_BaseTime));
-    if (self == NULL)
-        return (PyObject *)PyErr_NoMemory();
-    PyObject_INIT(self, type);
-    return self;
-}
-
-static PyObject *
-datetime_alloc(PyTypeObject *type, Py_ssize_t aware)
-{
-    PyObject *self;
-
-    self = (PyObject *)
-        PyObject_MALLOC(aware ?
-                        sizeof(PyDateTime_DateTime) :
-                sizeof(_PyDateTime_BaseDateTime));
-    if (self == NULL)
-        return (PyObject *)PyErr_NoMemory();
-    PyObject_INIT(self, type);
-    return self;
-}
-
-/* ---------------------------------------------------------------------------
- * Helpers for setting object fields.  These work on pointers to the
- * appropriate base class.
- */
-
-/* For date and datetime. */
-static void
-set_date_fields(PyDateTime_Date *self, int y, int m, int d)
-{
-    self->hashcode = -1;
-    SET_YEAR(self, y);
-    SET_MONTH(self, m);
-    SET_DAY(self, d);
-}
-
-/* ---------------------------------------------------------------------------
- * Create various objects, mostly without range checking.
- */
-
-/* Create a date instance with no range checking. */
-static PyObject *
-new_date_ex(int year, int month, int day, PyTypeObject *type)
-{
-    PyDateTime_Date *self;
-
-    self = (PyDateTime_Date *) (type->tp_alloc(type, 0));
-    if (self != NULL)
-        set_date_fields(self, year, month, day);
-    return (PyObject *) self;
-}
-
-#define new_date(year, month, day) \
-    new_date_ex(year, month, day, &PyDateTime_DateType)
-
-/* Create a datetime instance with no range checking. */
-static PyObject *
-new_datetime_ex(int year, int month, int day, int hour, int minute,
-             int second, int usecond, PyObject *tzinfo, PyTypeObject *type)
-{
-    PyDateTime_DateTime *self;
-    char aware = tzinfo != Py_None;
-
-    self = (PyDateTime_DateTime *) (type->tp_alloc(type, aware));
-    if (self != NULL) {
-        self->hastzinfo = aware;
-        set_date_fields((PyDateTime_Date *)self, year, month, day);
-        DATE_SET_HOUR(self, hour);
-        DATE_SET_MINUTE(self, minute);
-        DATE_SET_SECOND(self, second);
-        DATE_SET_MICROSECOND(self, usecond);
-        if (aware) {
-            Py_INCREF(tzinfo);
-            self->tzinfo = tzinfo;
-        }
-    }
-    return (PyObject *)self;
-}
-
-#define new_datetime(y, m, d, hh, mm, ss, us, tzinfo)           \
-    new_datetime_ex(y, m, d, hh, mm, ss, us, tzinfo,            \
-                    &PyDateTime_DateTimeType)
-
-/* Create a time instance with no range checking. */
-static PyObject *
-new_time_ex(int hour, int minute, int second, int usecond,
-            PyObject *tzinfo, PyTypeObject *type)
-{
-    PyDateTime_Time *self;
-    char aware = tzinfo != Py_None;
-
-    self = (PyDateTime_Time *) (type->tp_alloc(type, aware));
-    if (self != NULL) {
-        self->hastzinfo = aware;
-        self->hashcode = -1;
-        TIME_SET_HOUR(self, hour);
-        TIME_SET_MINUTE(self, minute);
-        TIME_SET_SECOND(self, second);
-        TIME_SET_MICROSECOND(self, usecond);
-        if (aware) {
-            Py_INCREF(tzinfo);
-            self->tzinfo = tzinfo;
-        }
-    }
-    return (PyObject *)self;
-}
-
-#define new_time(hh, mm, ss, us, tzinfo)                \
-    new_time_ex(hh, mm, ss, us, tzinfo, &PyDateTime_TimeType)
-
-/* Create a timedelta instance.  Normalize the members iff normalize is
- * true.  Passing false is a speed optimization, if you know for sure
- * that seconds and microseconds are already in their proper ranges.  In any
- * case, raises OverflowError and returns NULL if the normalized days is out
- * of range).
- */
-static PyObject *
-new_delta_ex(int days, int seconds, int microseconds, int normalize,
-             PyTypeObject *type)
-{
-    PyDateTime_Delta *self;
-
-    if (normalize)
-        normalize_d_s_us(&days, &seconds, &microseconds);
-    assert(0 <= seconds && seconds < 24*3600);
-    assert(0 <= microseconds && microseconds < 1000000);
-
-    if (check_delta_day_range(days) < 0)
-        return NULL;
-
-    self = (PyDateTime_Delta *) (type->tp_alloc(type, 0));
-    if (self != NULL) {
-        self->hashcode = -1;
-        SET_TD_DAYS(self, days);
-        SET_TD_SECONDS(self, seconds);
-        SET_TD_MICROSECONDS(self, microseconds);
-    }
-    return (PyObject *) self;
-}
-
-#define new_delta(d, s, us, normalize)  \
-    new_delta_ex(d, s, us, normalize, &PyDateTime_DeltaType)
-
-/* ---------------------------------------------------------------------------
- * tzinfo helpers.
- */
-
-/* Ensure that p is None or of a tzinfo subclass.  Return 0 if OK; if not
- * raise TypeError and return -1.
- */
-static int
-check_tzinfo_subclass(PyObject *p)
-{
-    if (p == Py_None || PyTZInfo_Check(p))
-        return 0;
-    PyErr_Format(PyExc_TypeError,
-                 "tzinfo argument must be None or of a tzinfo subclass, "
-                 "not type '%s'",
-                 Py_TYPE(p)->tp_name);
-    return -1;
-}
-
-/* Return tzinfo.methname(tzinfoarg), without any checking of results.
- * If tzinfo is None, returns None.
- */
-static PyObject *
-call_tzinfo_method(PyObject *tzinfo, char *methname, PyObject *tzinfoarg)
-{
-    PyObject *result;
-
-    assert(tzinfo && methname && tzinfoarg);
-    assert(check_tzinfo_subclass(tzinfo) >= 0);
-    if (tzinfo == Py_None) {
-        result = Py_None;
-        Py_INCREF(result);
-    }
-    else
-        result = PyObject_CallMethod(tzinfo, methname, "O", tzinfoarg);
-    return result;
-}
-
-/* If self has a tzinfo member, return a BORROWED reference to it.  Else
- * return NULL, which is NOT AN ERROR.  There are no error returns here,
- * and the caller must not decref the result.
- */
-static PyObject *
-get_tzinfo_member(PyObject *self)
-{
-    PyObject *tzinfo = NULL;
-
-    if (PyDateTime_Check(self) && HASTZINFO(self))
-        tzinfo = ((PyDateTime_DateTime *)self)->tzinfo;
-    else if (PyTime_Check(self) && HASTZINFO(self))
-        tzinfo = ((PyDateTime_Time *)self)->tzinfo;
-
-    return tzinfo;
-}
-
-/* Call getattr(tzinfo, name)(tzinfoarg), and extract an int from the
- * result.  tzinfo must be an instance of the tzinfo class.  If the method
- * returns None, this returns 0 and sets *none to 1.  If the method doesn't
- * return None or timedelta, TypeError is raised and this returns -1.  If it
- * returnsa timedelta and the value is out of range or isn't a whole number
- * of minutes, ValueError is raised and this returns -1.
- * Else *none is set to 0 and the integer method result is returned.
- */
-static int
-call_utc_tzinfo_method(PyObject *tzinfo, char *name, PyObject *tzinfoarg,
-                       int *none)
-{
-    PyObject *u;
-    int result = -1;
-
-    assert(tzinfo != NULL);
-    assert(PyTZInfo_Check(tzinfo));
-    assert(tzinfoarg != NULL);
-
-    *none = 0;
-    u = call_tzinfo_method(tzinfo, name, tzinfoarg);
-    if (u == NULL)
-        return -1;
-
-    else if (u == Py_None) {
-        result = 0;
-        *none = 1;
-    }
-    else if (PyDelta_Check(u)) {
-        const int days = GET_TD_DAYS(u);
-        if (days < -1 || days > 0)
-            result = 24*60;             /* trigger ValueError below */
-        else {
-            /* next line can't overflow because we know days
-             * is -1 or 0 now
-             */
-            int ss = days * 24 * 3600 + GET_TD_SECONDS(u);
-            result = divmod(ss, 60, &ss);
-            if (ss || GET_TD_MICROSECONDS(u)) {
-                PyErr_Format(PyExc_ValueError,
-                             "tzinfo.%s() must return a "
-                             "whole number of minutes",
-                             name);
-                result = -1;
-            }
-        }
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-                     "tzinfo.%s() must return None or "
-                     "timedelta, not '%s'",
-                     name, Py_TYPE(u)->tp_name);
-    }
-
-    Py_DECREF(u);
-    if (result < -1439 || result > 1439) {
-        PyErr_Format(PyExc_ValueError,
-                     "tzinfo.%s() returned %d; must be in "
-                     "-1439 .. 1439",
-                     name, result);
-        result = -1;
-    }
-    return result;
-}
-
-/* Call tzinfo.utcoffset(tzinfoarg), and extract an integer from the
- * result.  tzinfo must be an instance of the tzinfo class.  If utcoffset()
- * returns None, call_utcoffset returns 0 and sets *none to 1.  If uctoffset()
- * doesn't return None or timedelta, TypeError is raised and this returns -1.
- * If utcoffset() returns an invalid timedelta (out of range, or not a whole
- * # of minutes), ValueError is raised and this returns -1.  Else *none is
- * set to 0 and the offset is returned (as int # of minutes east of UTC).
- */
-static int
-call_utcoffset(PyObject *tzinfo, PyObject *tzinfoarg, int *none)
-{
-    return call_utc_tzinfo_method(tzinfo, "utcoffset", tzinfoarg, none);
-}
-
-/* Call tzinfo.name(tzinfoarg), and return the offset as a timedelta or None.
- */
-static PyObject *
-offset_as_timedelta(PyObject *tzinfo, char *name, PyObject *tzinfoarg) {
-    PyObject *result;
-
-    assert(tzinfo && name && tzinfoarg);
-    if (tzinfo == Py_None) {
-        result = Py_None;
-        Py_INCREF(result);
-    }
-    else {
-        int none;
-        int offset = call_utc_tzinfo_method(tzinfo, name, tzinfoarg,
-                                            &none);
-        if (offset < 0 && PyErr_Occurred())
-            return NULL;
-        if (none) {
-            result = Py_None;
-            Py_INCREF(result);
-        }
-        else
-            result = new_delta(0, offset * 60, 0, 1);
-    }
-    return result;
-}
-
-/* Call tzinfo.dst(tzinfoarg), and extract an integer from the
- * result.  tzinfo must be an instance of the tzinfo class.  If dst()
- * returns None, call_dst returns 0 and sets *none to 1.  If dst()
- & doesn't return None or timedelta, TypeError is raised and this
- * returns -1.  If dst() returns an invalid timedelta for a UTC offset,
- * ValueError is raised and this returns -1.  Else *none is set to 0 and
- * the offset is returned (as an int # of minutes east of UTC).
- */
-static int
-call_dst(PyObject *tzinfo, PyObject *tzinfoarg, int *none)
-{
-    return call_utc_tzinfo_method(tzinfo, "dst", tzinfoarg, none);
-}
-
-/* Call tzinfo.tzname(tzinfoarg), and return the result.  tzinfo must be
- * an instance of the tzinfo class or None.  If tzinfo isn't None, and
- * tzname() doesn't return None or a string, TypeError is raised and this
- * returns NULL.
- */
-static PyObject *
-call_tzname(PyObject *tzinfo, PyObject *tzinfoarg)
-{
-    PyObject *result;
-
-    assert(tzinfo != NULL);
-    assert(check_tzinfo_subclass(tzinfo) >= 0);
-    assert(tzinfoarg != NULL);
-
-    if (tzinfo == Py_None) {
-        result = Py_None;
-        Py_INCREF(result);
-    }
-    else
-        result = PyObject_CallMethod(tzinfo, "tzname", "O", tzinfoarg);
-
-    if (result != NULL && result != Py_None && ! PyString_Check(result)) {
-        PyErr_Format(PyExc_TypeError, "tzinfo.tzname() must "
-                     "return None or a string, not '%s'",
-                     Py_TYPE(result)->tp_name);
-        Py_DECREF(result);
-        result = NULL;
-    }
-    return result;
-}
-
-typedef enum {
-              /* an exception has been set; the caller should pass it on */
-          OFFSET_ERROR,
-
-          /* type isn't date, datetime, or time subclass */
-          OFFSET_UNKNOWN,
-
-          /* date,
-           * datetime with !hastzinfo
-           * datetime with None tzinfo,
-           * datetime where utcoffset() returns None
-           * time with !hastzinfo
-           * time with None tzinfo,
-           * time where utcoffset() returns None
-           */
-          OFFSET_NAIVE,
-
-          /* time or datetime where utcoffset() doesn't return None */
-          OFFSET_AWARE
-} naivety;
-
-/* Classify an object as to whether it's naive or offset-aware.  See
- * the "naivety" typedef for details.  If the type is aware, *offset is set
- * to minutes east of UTC (as returned by the tzinfo.utcoffset() method).
- * If the type is offset-naive (or unknown, or error), *offset is set to 0.
- * tzinfoarg is the argument to pass to the tzinfo.utcoffset() method.
- */
-static naivety
-classify_utcoffset(PyObject *op, PyObject *tzinfoarg, int *offset)
-{
-    int none;
-    PyObject *tzinfo;
-
-    assert(tzinfoarg != NULL);
-    *offset = 0;
-    tzinfo = get_tzinfo_member(op);     /* NULL means no tzinfo, not error */
-    if (tzinfo == Py_None)
-        return OFFSET_NAIVE;
-    if (tzinfo == NULL) {
-        /* note that a datetime passes the PyDate_Check test */
-        return (PyTime_Check(op) || PyDate_Check(op)) ?
-               OFFSET_NAIVE : OFFSET_UNKNOWN;
-    }
-    *offset = call_utcoffset(tzinfo, tzinfoarg, &none);
-    if (*offset == -1 && PyErr_Occurred())
-        return OFFSET_ERROR;
-    return none ? OFFSET_NAIVE : OFFSET_AWARE;
-}
-
-/* Classify two objects as to whether they're naive or offset-aware.
- * This isn't quite the same as calling classify_utcoffset() twice:  for
- * binary operations (comparison and subtraction), we generally want to
- * ignore the tzinfo members if they're identical.  This is by design,
- * so that results match "naive" expectations when mixing objects from a
- * single timezone.  So in that case, this sets both offsets to 0 and
- * both naiveties to OFFSET_NAIVE.
- * The function returns 0 if everything's OK, and -1 on error.
- */
-static int
-classify_two_utcoffsets(PyObject *o1, int *offset1, naivety *n1,
-                        PyObject *tzinfoarg1,
-                        PyObject *o2, int *offset2, naivety *n2,
-                        PyObject *tzinfoarg2)
-{
-    if (get_tzinfo_member(o1) == get_tzinfo_member(o2)) {
-        *offset1 = *offset2 = 0;
-        *n1 = *n2 = OFFSET_NAIVE;
-    }
-    else {
-        *n1 = classify_utcoffset(o1, tzinfoarg1, offset1);
-        if (*n1 == OFFSET_ERROR)
-            return -1;
-        *n2 = classify_utcoffset(o2, tzinfoarg2, offset2);
-        if (*n2 == OFFSET_ERROR)
-            return -1;
-    }
-    return 0;
-}
-
-/* repr is like "someclass(arg1, arg2)".  If tzinfo isn't None,
- * stuff
- *     ", tzinfo=" + repr(tzinfo)
- * before the closing ")".
- */
-static PyObject *
-append_keyword_tzinfo(PyObject *repr, PyObject *tzinfo)
-{
-    PyObject *temp;
-
-    assert(PyString_Check(repr));
-    assert(tzinfo);
-    if (tzinfo == Py_None)
-        return repr;
-    /* Get rid of the trailing ')'. */
-    assert(PyString_AsString(repr)[PyString_Size(repr)-1] == ')');
-    temp = PyString_FromStringAndSize(PyString_AsString(repr),
-                                      PyString_Size(repr) - 1);
-    Py_DECREF(repr);
-    if (temp == NULL)
-        return NULL;
-    repr = temp;
-
-    /* Append ", tzinfo=". */
-    PyString_ConcatAndDel(&repr, PyString_FromString(", tzinfo="));
-
-    /* Append repr(tzinfo). */
-    PyString_ConcatAndDel(&repr, PyObject_Repr(tzinfo));
-
-    /* Add a closing paren. */
-    PyString_ConcatAndDel(&repr, PyString_FromString(")"));
-    return repr;
-}
-
-/* ---------------------------------------------------------------------------
- * String format helpers.
- */
-
-static PyObject *
-format_ctime(PyDateTime_Date *date, int hours, int minutes, int seconds)
-{
-    static const char *DayNames[] = {
-        "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"
-    };
-    static const char *MonthNames[] = {
-        "Jan", "Feb", "Mar", "Apr", "May", "Jun",
-        "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
-    };
-
-    char buffer[128];
-    int wday = weekday(GET_YEAR(date), GET_MONTH(date), GET_DAY(date));
-
-    PyOS_snprintf(buffer, sizeof(buffer), "%s %s %2d %02d:%02d:%02d %04d",
-                  DayNames[wday], MonthNames[GET_MONTH(date) - 1],
-                  GET_DAY(date), hours, minutes, seconds,
-                  GET_YEAR(date));
-    return PyString_FromString(buffer);
-}
-
-/* Add an hours & minutes UTC offset string to buf.  buf has no more than
- * buflen bytes remaining.  The UTC offset is gotten by calling
- * tzinfo.uctoffset(tzinfoarg).  If that returns None, \0 is stored into
- * *buf, and that's all.  Else the returned value is checked for sanity (an
- * integer in range), and if that's OK it's converted to an hours & minutes
- * string of the form
- *   sign HH sep MM
- * Returns 0 if everything is OK.  If the return value from utcoffset() is
- * bogus, an appropriate exception is set and -1 is returned.
- */
-static int
-format_utcoffset(char *buf, size_t buflen, const char *sep,
-                PyObject *tzinfo, PyObject *tzinfoarg)
-{
-    int offset;
-    int hours;
-    int minutes;
-    char sign;
-    int none;
-
-    assert(buflen >= 1);
-
-    offset = call_utcoffset(tzinfo, tzinfoarg, &none);
-    if (offset == -1 && PyErr_Occurred())
-        return -1;
-    if (none) {
-        *buf = '\0';
-        return 0;
-    }
-    sign = '+';
-    if (offset < 0) {
-        sign = '-';
-        offset = - offset;
-    }
-    hours = divmod(offset, 60, &minutes);
-    PyOS_snprintf(buf, buflen, "%c%02d%s%02d", sign, hours, sep, minutes);
-    return 0;
-}
-
-static PyObject *
-make_freplacement(PyObject *object)
-{
-    char freplacement[64];
-    if (PyTime_Check(object))
-        sprintf(freplacement, "%06d", TIME_GET_MICROSECOND(object));
-    else if (PyDateTime_Check(object))
-        sprintf(freplacement, "%06d", DATE_GET_MICROSECOND(object));
-    else
-        sprintf(freplacement, "%06d", 0);
-
-    return PyString_FromStringAndSize(freplacement, strlen(freplacement));
-}
-
-/* I sure don't want to reproduce the strftime code from the time module,
- * so this imports the module and calls it.  All the hair is due to
- * giving special meanings to the %z, %Z and %f format codes via a
- * preprocessing step on the format string.
- * tzinfoarg is the argument to pass to the object's tzinfo method, if
- * needed.
- */
-static PyObject *
-wrap_strftime(PyObject *object, const char *format, size_t format_len,
-                PyObject *timetuple, PyObject *tzinfoarg)
-{
-    PyObject *result = NULL;            /* guilty until proved innocent */
-
-    PyObject *zreplacement = NULL;      /* py string, replacement for %z */
-    PyObject *Zreplacement = NULL;      /* py string, replacement for %Z */
-    PyObject *freplacement = NULL;      /* py string, replacement for %f */
-
-    const char *pin;            /* pointer to next char in input format */
-    char ch;                    /* next char in input format */
-
-    PyObject *newfmt = NULL;            /* py string, the output format */
-    char *pnew;         /* pointer to available byte in output format */
-    size_t totalnew;            /* number bytes total in output format buffer,
-                               exclusive of trailing \0 */
-    size_t usednew;     /* number bytes used so far in output format buffer */
-
-    const char *ptoappend;      /* ptr to string to append to output buffer */
-    size_t ntoappend;           /* # of bytes to append to output buffer */
-
-    assert(object && format && timetuple);
-
-    /* Give up if the year is before 1900.
-     * Python strftime() plays games with the year, and different
-     * games depending on whether envar PYTHON2K is set.  This makes
-     * years before 1900 a nightmare, even if the platform strftime
-     * supports them (and not all do).
-     * We could get a lot farther here by avoiding Python's strftime
-     * wrapper and calling the C strftime() directly, but that isn't
-     * an option in the Python implementation of this module.
-     */
-    {
-        long year;
-        PyObject *pyyear = PySequence_GetItem(timetuple, 0);
-        if (pyyear == NULL) return NULL;
-        assert(PyInt_Check(pyyear));
-        year = PyInt_AsLong(pyyear);
-        Py_DECREF(pyyear);
-        if (year < 1900) {
-            PyErr_Format(PyExc_ValueError, "year=%ld is before "
-                         "1900; the datetime strftime() "
-                         "methods require year >= 1900",
-                         year);
-            return NULL;
-        }
-    }
-
-    /* Scan the input format, looking for %z/%Z/%f escapes, building
-     * a new format.  Since computing the replacements for those codes
-     * is expensive, don't unless they're actually used.
-     */
-    if (format_len > INT_MAX - 1) {
-        PyErr_NoMemory();
-        goto Done;
-    }
-
-    totalnew = format_len + 1;          /* realistic if no %z/%Z/%f */
-    newfmt = PyString_FromStringAndSize(NULL, totalnew);
-    if (newfmt == NULL) goto Done;
-    pnew = PyString_AsString(newfmt);
-    usednew = 0;
-
-    pin = format;
-    while ((ch = *pin++) != '\0') {
-        if (ch != '%') {
-            ptoappend = pin - 1;
-            ntoappend = 1;
-        }
-        else if ((ch = *pin++) == '\0') {
-            /* There's a lone trailing %; doesn't make sense. */
-            PyErr_SetString(PyExc_ValueError, "strftime format "
-                            "ends with raw %");
-            goto Done;
-        }
-        /* A % has been seen and ch is the character after it. */
-        else if (ch == 'z') {
-            if (zreplacement == NULL) {
-                /* format utcoffset */
-                char buf[100];
-                PyObject *tzinfo = get_tzinfo_member(object);
-                zreplacement = PyString_FromString("");
-                if (zreplacement == NULL) goto Done;
-                if (tzinfo != Py_None && tzinfo != NULL) {
-                    assert(tzinfoarg != NULL);
-                    if (format_utcoffset(buf,
-                                         sizeof(buf),
-                                         "",
-                                         tzinfo,
-                                         tzinfoarg) < 0)
-                        goto Done;
-                    Py_DECREF(zreplacement);
-                    zreplacement = PyString_FromString(buf);
-                    if (zreplacement == NULL) goto Done;
-                }
-            }
-            assert(zreplacement != NULL);
-            ptoappend = PyString_AS_STRING(zreplacement);
-            ntoappend = PyString_GET_SIZE(zreplacement);
-        }
-        else if (ch == 'Z') {
-            /* format tzname */
-            if (Zreplacement == NULL) {
-                PyObject *tzinfo = get_tzinfo_member(object);
-                Zreplacement = PyString_FromString("");
-                if (Zreplacement == NULL) goto Done;
-                if (tzinfo != Py_None && tzinfo != NULL) {
-                    PyObject *temp;
-                    assert(tzinfoarg != NULL);
-                    temp = call_tzname(tzinfo, tzinfoarg);
-                    if (temp == NULL) goto Done;
-                    if (temp != Py_None) {
-                        assert(PyString_Check(temp));
-                        /* Since the tzname is getting
-                         * stuffed into the format, we
-                         * have to double any % signs
-                         * so that strftime doesn't
-                         * treat them as format codes.
-                         */
-                        Py_DECREF(Zreplacement);
-                        Zreplacement = PyObject_CallMethod(
-                            temp, "replace",
-                            "ss", "%", "%%");
-                        Py_DECREF(temp);
-                        if (Zreplacement == NULL)
-                            goto Done;
-                        if (!PyString_Check(Zreplacement)) {
-                            PyErr_SetString(PyExc_TypeError, "tzname.replace() did not return a string");
-                            goto Done;
-                        }
-                    }
-                    else
-                        Py_DECREF(temp);
-                }
-            }
-            assert(Zreplacement != NULL);
-            ptoappend = PyString_AS_STRING(Zreplacement);
-            ntoappend = PyString_GET_SIZE(Zreplacement);
-        }
-        else if (ch == 'f') {
-            /* format microseconds */
-            if (freplacement == NULL) {
-                freplacement = make_freplacement(object);
-                if (freplacement == NULL)
-                    goto Done;
-            }
-            assert(freplacement != NULL);
-            assert(PyString_Check(freplacement));
-            ptoappend = PyString_AS_STRING(freplacement);
-            ntoappend = PyString_GET_SIZE(freplacement);
-        }
-        else {
-            /* percent followed by neither z nor Z */
-            ptoappend = pin - 2;
-            ntoappend = 2;
-        }
-
-        /* Append the ntoappend chars starting at ptoappend to
-         * the new format.
-         */
-        assert(ptoappend != NULL);
-        assert(ntoappend >= 0);
-        if (ntoappend == 0)
-            continue;
-        while (usednew + ntoappend > totalnew) {
-            size_t bigger = totalnew << 1;
-            if ((bigger >> 1) != totalnew) { /* overflow */
-                PyErr_NoMemory();
-                goto Done;
-            }
-            if (_PyString_Resize(&newfmt, bigger) < 0)
-                goto Done;
-            totalnew = bigger;
-            pnew = PyString_AsString(newfmt) + usednew;
-        }
-        memcpy(pnew, ptoappend, ntoappend);
-        pnew += ntoappend;
-        usednew += ntoappend;
-        assert(usednew <= totalnew);
-    }  /* end while() */
-
-    if (_PyString_Resize(&newfmt, usednew) < 0)
-        goto Done;
-    {
-        PyObject *time = PyImport_ImportModuleNoBlock("time");
-        if (time == NULL)
-            goto Done;
-        result = PyObject_CallMethod(time, "strftime", "OO",
-                                     newfmt, timetuple);
-        Py_DECREF(time);
-    }
- Done:
-    Py_XDECREF(freplacement);
-    Py_XDECREF(zreplacement);
-    Py_XDECREF(Zreplacement);
-    Py_XDECREF(newfmt);
-    return result;
-}
-
-static char *
-isoformat_date(PyDateTime_Date *dt, char buffer[], int bufflen)
-{
-    int x;
-    x = PyOS_snprintf(buffer, bufflen,
-                      "%04d-%02d-%02d",
-                      GET_YEAR(dt), GET_MONTH(dt), GET_DAY(dt));
-    assert(bufflen >= x);
-    return buffer + x;
-}
-
-static char *
-isoformat_time(PyDateTime_DateTime *dt, char buffer[], int bufflen)
-{
-    int x;
-    int us = DATE_GET_MICROSECOND(dt);
-
-    x = PyOS_snprintf(buffer, bufflen,
-                      "%02d:%02d:%02d",
-                      DATE_GET_HOUR(dt),
-                      DATE_GET_MINUTE(dt),
-                      DATE_GET_SECOND(dt));
-    assert(bufflen >= x);
-    if (us)
-        x += PyOS_snprintf(buffer + x, bufflen - x, ".%06d", us);
-    assert(bufflen >= x);
-    return buffer + x;
-}
-
-/* ---------------------------------------------------------------------------
- * Wrap functions from the time module.  These aren't directly available
- * from C.  Perhaps they should be.
- */
-
-/* Call time.time() and return its result (a Python float). */
-static PyObject *
-time_time(void)
-{
-    PyObject *result = NULL;
-    PyObject *time = PyImport_ImportModuleNoBlock("time");
-
-    if (time != NULL) {
-        result = PyObject_CallMethod(time, "time", "()");
-        Py_DECREF(time);
-    }
-    return result;
-}
-
-/* Build a time.struct_time.  The weekday and day number are automatically
- * computed from the y,m,d args.
- */
-static PyObject *
-build_struct_time(int y, int m, int d, int hh, int mm, int ss, int dstflag)
-{
-    PyObject *time;
-    PyObject *result = NULL;
-
-    time = PyImport_ImportModuleNoBlock("time");
-    if (time != NULL) {
-        result = PyObject_CallMethod(time, "struct_time",
-                                     "((iiiiiiiii))",
-                                     y, m, d,
-                                     hh, mm, ss,
-                                     weekday(y, m, d),
-                                     days_before_month(y, m) + d,
-                                     dstflag);
-        Py_DECREF(time);
-    }
-    return result;
-}
-
-/* ---------------------------------------------------------------------------
- * Miscellaneous helpers.
- */
-
-/* For obscure reasons, we need to use tp_richcompare instead of tp_compare.
- * The comparisons here all most naturally compute a cmp()-like result.
- * This little helper turns that into a bool result for rich comparisons.
- */
-static PyObject *
-diff_to_bool(int diff, int op)
-{
-    PyObject *result;
-    int istrue;
-
-    switch (op) {
-        case Py_EQ: istrue = diff == 0; break;
-        case Py_NE: istrue = diff != 0; break;
-        case Py_LE: istrue = diff <= 0; break;
-        case Py_GE: istrue = diff >= 0; break;
-        case Py_LT: istrue = diff < 0; break;
-        case Py_GT: istrue = diff > 0; break;
-        default:
-            assert(! "op unknown");
-            istrue = 0; /* To shut up compiler */
-    }
-    result = istrue ? Py_True : Py_False;
-    Py_INCREF(result);
-    return result;
-}
-
-/* Raises a "can't compare" TypeError and returns NULL. */
-static PyObject *
-cmperror(PyObject *a, PyObject *b)
-{
-    PyErr_Format(PyExc_TypeError,
-                 "can't compare %s to %s",
-                 Py_TYPE(a)->tp_name, Py_TYPE(b)->tp_name);
-    return NULL;
-}
-
-/* ---------------------------------------------------------------------------
- * Cached Python objects; these are set by the module init function.
- */
-
-/* Conversion factors. */
-static PyObject *us_per_us = NULL;      /* 1 */
-static PyObject *us_per_ms = NULL;      /* 1000 */
-static PyObject *us_per_second = NULL;  /* 1000000 */
-static PyObject *us_per_minute = NULL;  /* 1e6 * 60 as Python int */
-static PyObject *us_per_hour = NULL;    /* 1e6 * 3600 as Python long */
-static PyObject *us_per_day = NULL;     /* 1e6 * 3600 * 24 as Python long */
-static PyObject *us_per_week = NULL;    /* 1e6*3600*24*7 as Python long */
-static PyObject *seconds_per_day = NULL; /* 3600*24 as Python int */
-
-/* ---------------------------------------------------------------------------
- * Class implementations.
- */
-
-/*
- * PyDateTime_Delta implementation.
- */
-
-/* Convert a timedelta to a number of us,
- *      (24*3600*self.days + self.seconds)*1000000 + self.microseconds
- * as a Python int or long.
- * Doing mixed-radix arithmetic by hand instead is excruciating in C,
- * due to ubiquitous overflow possibilities.
- */
-static PyObject *
-delta_to_microseconds(PyDateTime_Delta *self)
-{
-    PyObject *x1 = NULL;
-    PyObject *x2 = NULL;
-    PyObject *x3 = NULL;
-    PyObject *result = NULL;
-
-    x1 = PyInt_FromLong(GET_TD_DAYS(self));
-    if (x1 == NULL)
-        goto Done;
-    x2 = PyNumber_Multiply(x1, seconds_per_day);        /* days in seconds */
-    if (x2 == NULL)
-        goto Done;
-    Py_DECREF(x1);
-    x1 = NULL;
-
-    /* x2 has days in seconds */
-    x1 = PyInt_FromLong(GET_TD_SECONDS(self));          /* seconds */
-    if (x1 == NULL)
-        goto Done;
-    x3 = PyNumber_Add(x1, x2);          /* days and seconds in seconds */
-    if (x3 == NULL)
-        goto Done;
-    Py_DECREF(x1);
-    Py_DECREF(x2);
-    x2 = NULL;
-
-    /* x3 has days+seconds in seconds */
-    x1 = PyNumber_Multiply(x3, us_per_second);          /* us */
-    if (x1 == NULL)
-        goto Done;
-    Py_DECREF(x3);
-    x3 = NULL;
-
-    /* x1 has days+seconds in us */
-    x2 = PyInt_FromLong(GET_TD_MICROSECONDS(self));
-    if (x2 == NULL)
-        goto Done;
-    result = PyNumber_Add(x1, x2);
-
-Done:
-    Py_XDECREF(x1);
-    Py_XDECREF(x2);
-    Py_XDECREF(x3);
-    return result;
-}
-
-/* Convert a number of us (as a Python int or long) to a timedelta.
- */
-static PyObject *
-microseconds_to_delta_ex(PyObject *pyus, PyTypeObject *type)
-{
-    int us;
-    int s;
-    int d;
-    long temp;
-
-    PyObject *tuple = NULL;
-    PyObject *num = NULL;
-    PyObject *result = NULL;
-
-    tuple = PyNumber_Divmod(pyus, us_per_second);
-    if (tuple == NULL)
-        goto Done;
-
-    num = PyTuple_GetItem(tuple, 1);            /* us */
-    if (num == NULL)
-        goto Done;
-    temp = PyLong_AsLong(num);
-    num = NULL;
-    if (temp == -1 && PyErr_Occurred())
-        goto Done;
-    assert(0 <= temp && temp < 1000000);
-    us = (int)temp;
-    if (us < 0) {
-        /* The divisor was positive, so this must be an error. */
-        assert(PyErr_Occurred());
-        goto Done;
-    }
-
-    num = PyTuple_GetItem(tuple, 0);            /* leftover seconds */
-    if (num == NULL)
-        goto Done;
-    Py_INCREF(num);
-    Py_DECREF(tuple);
-
-    tuple = PyNumber_Divmod(num, seconds_per_day);
-    if (tuple == NULL)
-        goto Done;
-    Py_DECREF(num);
-
-    num = PyTuple_GetItem(tuple, 1);            /* seconds */
-    if (num == NULL)
-        goto Done;
-    temp = PyLong_AsLong(num);
-    num = NULL;
-    if (temp == -1 && PyErr_Occurred())
-        goto Done;
-    assert(0 <= temp && temp < 24*3600);
-    s = (int)temp;
-
-    if (s < 0) {
-        /* The divisor was positive, so this must be an error. */
-        assert(PyErr_Occurred());
-        goto Done;
-    }
-
-    num = PyTuple_GetItem(tuple, 0);            /* leftover days */
-    if (num == NULL)
-        goto Done;
-    Py_INCREF(num);
-    temp = PyLong_AsLong(num);
-    if (temp == -1 && PyErr_Occurred())
-        goto Done;
-    d = (int)temp;
-    if ((long)d != temp) {
-        PyErr_SetString(PyExc_OverflowError, "normalized days too "
-                        "large to fit in a C int");
-        goto Done;
-    }
-    result = new_delta_ex(d, s, us, 0, type);
-
-Done:
-    Py_XDECREF(tuple);
-    Py_XDECREF(num);
-    return result;
-}
-
-#define microseconds_to_delta(pymicros) \
-    microseconds_to_delta_ex(pymicros, &PyDateTime_DeltaType)
-
-static PyObject *
-multiply_int_timedelta(PyObject *intobj, PyDateTime_Delta *delta)
-{
-    PyObject *pyus_in;
-    PyObject *pyus_out;
-    PyObject *result;
-
-    pyus_in = delta_to_microseconds(delta);
-    if (pyus_in == NULL)
-        return NULL;
-
-    pyus_out = PyNumber_Multiply(pyus_in, intobj);
-    Py_DECREF(pyus_in);
-    if (pyus_out == NULL)
-        return NULL;
-
-    result = microseconds_to_delta(pyus_out);
-    Py_DECREF(pyus_out);
-    return result;
-}
-
-static PyObject *
-divide_timedelta_int(PyDateTime_Delta *delta, PyObject *intobj)
-{
-    PyObject *pyus_in;
-    PyObject *pyus_out;
-    PyObject *result;
-
-    pyus_in = delta_to_microseconds(delta);
-    if (pyus_in == NULL)
-        return NULL;
-
-    pyus_out = PyNumber_FloorDivide(pyus_in, intobj);
-    Py_DECREF(pyus_in);
-    if (pyus_out == NULL)
-        return NULL;
-
-    result = microseconds_to_delta(pyus_out);
-    Py_DECREF(pyus_out);
-    return result;
-}
-
-static PyObject *
-delta_add(PyObject *left, PyObject *right)
-{
-    PyObject *result = Py_NotImplemented;
-
-    if (PyDelta_Check(left) && PyDelta_Check(right)) {
-        /* delta + delta */
-        /* The C-level additions can't overflow because of the
-         * invariant bounds.
-         */
-        int days = GET_TD_DAYS(left) + GET_TD_DAYS(right);
-        int seconds = GET_TD_SECONDS(left) + GET_TD_SECONDS(right);
-        int microseconds = GET_TD_MICROSECONDS(left) +
-                           GET_TD_MICROSECONDS(right);
-        result = new_delta(days, seconds, microseconds, 1);
-    }
-
-    if (result == Py_NotImplemented)
-        Py_INCREF(result);
-    return result;
-}
-
-static PyObject *
-delta_negative(PyDateTime_Delta *self)
-{
-    return new_delta(-GET_TD_DAYS(self),
-                     -GET_TD_SECONDS(self),
-                     -GET_TD_MICROSECONDS(self),
-                     1);
-}
-
-static PyObject *
-delta_positive(PyDateTime_Delta *self)
-{
-    /* Could optimize this (by returning self) if this isn't a
-     * subclass -- but who uses unary + ?  Approximately nobody.
-     */
-    return new_delta(GET_TD_DAYS(self),
-                     GET_TD_SECONDS(self),
-                     GET_TD_MICROSECONDS(self),
-                     0);
-}
-
-static PyObject *
-delta_abs(PyDateTime_Delta *self)
-{
-    PyObject *result;
-
-    assert(GET_TD_MICROSECONDS(self) >= 0);
-    assert(GET_TD_SECONDS(self) >= 0);
-
-    if (GET_TD_DAYS(self) < 0)
-        result = delta_negative(self);
-    else
-        result = delta_positive(self);
-
-    return result;
-}
-
-static PyObject *
-delta_subtract(PyObject *left, PyObject *right)
-{
-    PyObject *result = Py_NotImplemented;
-
-    if (PyDelta_Check(left) && PyDelta_Check(right)) {
-        /* delta - delta */
-        /* The C-level additions can't overflow because of the
-         * invariant bounds.
-         */
-        int days = GET_TD_DAYS(left) - GET_TD_DAYS(right);
-        int seconds = GET_TD_SECONDS(left) - GET_TD_SECONDS(right);
-        int microseconds = GET_TD_MICROSECONDS(left) -
-                           GET_TD_MICROSECONDS(right);
-        result = new_delta(days, seconds, microseconds, 1);
-    }
-
-    if (result == Py_NotImplemented)
-        Py_INCREF(result);
-    return result;
-}
-
-/* This is more natural as a tp_compare, but doesn't work then:  for whatever
- * reason, Python's try_3way_compare ignores tp_compare unless
- * PyInstance_Check returns true, but these aren't old-style classes.
- */
-static PyObject *
-delta_richcompare(PyDateTime_Delta *self, PyObject *other, int op)
-{
-    int diff = 42;      /* nonsense */
-
-    if (PyDelta_Check(other)) {
-        diff = GET_TD_DAYS(self) - GET_TD_DAYS(other);
-        if (diff == 0) {
-            diff = GET_TD_SECONDS(self) - GET_TD_SECONDS(other);
-            if (diff == 0)
-                diff = GET_TD_MICROSECONDS(self) -
-                       GET_TD_MICROSECONDS(other);
-        }
-    }
-    else if (op == Py_EQ || op == Py_NE)
-        diff = 1;               /* any non-zero value will do */
-
-    else /* stop this from falling back to address comparison */
-        return cmperror((PyObject *)self, other);
-
-    return diff_to_bool(diff, op);
-}
-
-static PyObject *delta_getstate(PyDateTime_Delta *self);
-
-static long
-delta_hash(PyDateTime_Delta *self)
-{
-    if (self->hashcode == -1) {
-        PyObject *temp = delta_getstate(self);
-        if (temp != NULL) {
-            self->hashcode = PyObject_Hash(temp);
-            Py_DECREF(temp);
-        }
-    }
-    return self->hashcode;
-}
-
-static PyObject *
-delta_multiply(PyObject *left, PyObject *right)
-{
-    PyObject *result = Py_NotImplemented;
-
-    if (PyDelta_Check(left)) {
-        /* delta * ??? */
-        if (PyInt_Check(right) || PyLong_Check(right))
-            result = multiply_int_timedelta(right,
-                            (PyDateTime_Delta *) left);
-    }
-    else if (PyInt_Check(left) || PyLong_Check(left))
-        result = multiply_int_timedelta(left,
-                                        (PyDateTime_Delta *) right);
-
-    if (result == Py_NotImplemented)
-        Py_INCREF(result);
-    return result;
-}
-
-static PyObject *
-delta_divide(PyObject *left, PyObject *right)
-{
-    PyObject *result = Py_NotImplemented;
-
-    if (PyDelta_Check(left)) {
-        /* delta * ??? */
-        if (PyInt_Check(right) || PyLong_Check(right))
-            result = divide_timedelta_int(
-                            (PyDateTime_Delta *)left,
-                            right);
-    }
-
-    if (result == Py_NotImplemented)
-        Py_INCREF(result);
-    return result;
-}
-
-/* Fold in the value of the tag ("seconds", "weeks", etc) component of a
- * timedelta constructor.  sofar is the # of microseconds accounted for
- * so far, and there are factor microseconds per current unit, the number
- * of which is given by num.  num * factor is added to sofar in a
- * numerically careful way, and that's the result.  Any fractional
- * microseconds left over (this can happen if num is a float type) are
- * added into *leftover.
- * Note that there are many ways this can give an error (NULL) return.
- */
-static PyObject *
-accum(const char* tag, PyObject *sofar, PyObject *num, PyObject *factor,
-      double *leftover)
-{
-    PyObject *prod;
-    PyObject *sum;
-
-    assert(num != NULL);
-
-    if (PyInt_Check(num) || PyLong_Check(num)) {
-        prod = PyNumber_Multiply(num, factor);
-        if (prod == NULL)
-            return NULL;
-        sum = PyNumber_Add(sofar, prod);
-        Py_DECREF(prod);
-        return sum;
-    }
-
-    if (PyFloat_Check(num)) {
-        double dnum;
-        double fracpart;
-        double intpart;
-        PyObject *x;
-        PyObject *y;
-
-        /* The Plan:  decompose num into an integer part and a
-         * fractional part, num = intpart + fracpart.
-         * Then num * factor ==
-         *      intpart * factor + fracpart * factor
-         * and the LHS can be computed exactly in long arithmetic.
-         * The RHS is again broken into an int part and frac part.
-         * and the frac part is added into *leftover.
-         */
-        dnum = PyFloat_AsDouble(num);
-        if (dnum == -1.0 && PyErr_Occurred())
-            return NULL;
-        fracpart = modf(dnum, &intpart);
-        x = PyLong_FromDouble(intpart);
-        if (x == NULL)
-            return NULL;
-
-        prod = PyNumber_Multiply(x, factor);
-        Py_DECREF(x);
-        if (prod == NULL)
-            return NULL;
-
-        sum = PyNumber_Add(sofar, prod);
-        Py_DECREF(prod);
-        if (sum == NULL)
-            return NULL;
-
-        if (fracpart == 0.0)
-            return sum;
-        /* So far we've lost no information.  Dealing with the
-         * fractional part requires float arithmetic, and may
-         * lose a little info.
-         */
-        assert(PyInt_Check(factor) || PyLong_Check(factor));
-        if (PyInt_Check(factor))
-            dnum = (double)PyInt_AsLong(factor);
-        else
-            dnum = PyLong_AsDouble(factor);
-
-        dnum *= fracpart;
-        fracpart = modf(dnum, &intpart);
-        x = PyLong_FromDouble(intpart);
-        if (x == NULL) {
-            Py_DECREF(sum);
-            return NULL;
-        }
-
-        y = PyNumber_Add(sum, x);
-        Py_DECREF(sum);
-        Py_DECREF(x);
-        *leftover += fracpart;
-        return y;
-    }
-
-    PyErr_Format(PyExc_TypeError,
-                 "unsupported type for timedelta %s component: %s",
-                 tag, Py_TYPE(num)->tp_name);
-    return NULL;
-}
-
-static PyObject *
-delta_new(PyTypeObject *type, PyObject *args, PyObject *kw)
-{
-    PyObject *self = NULL;
-
-    /* Argument objects. */
-    PyObject *day = NULL;
-    PyObject *second = NULL;
-    PyObject *us = NULL;
-    PyObject *ms = NULL;
-    PyObject *minute = NULL;
-    PyObject *hour = NULL;
-    PyObject *week = NULL;
-
-    PyObject *x = NULL;         /* running sum of microseconds */
-    PyObject *y = NULL;         /* temp sum of microseconds */
-    double leftover_us = 0.0;
-
-    static char *keywords[] = {
-        "days", "seconds", "microseconds", "milliseconds",
-        "minutes", "hours", "weeks", NULL
-    };
-
-    if (PyArg_ParseTupleAndKeywords(args, kw, "|OOOOOOO:__new__",
-                                    keywords,
-                                    &day, &second, &us,
-                                    &ms, &minute, &hour, &week) == 0)
-        goto Done;
-
-    x = PyInt_FromLong(0);
-    if (x == NULL)
-        goto Done;
-
-#define CLEANUP         \
-    Py_DECREF(x);       \
-    x = y;              \
-    if (x == NULL)      \
-        goto Done
-
-    if (us) {
-        y = accum("microseconds", x, us, us_per_us, &leftover_us);
-        CLEANUP;
-    }
-    if (ms) {
-        y = accum("milliseconds", x, ms, us_per_ms, &leftover_us);
-        CLEANUP;
-    }
-    if (second) {
-        y = accum("seconds", x, second, us_per_second, &leftover_us);
-        CLEANUP;
-    }
-    if (minute) {
-        y = accum("minutes", x, minute, us_per_minute, &leftover_us);
-        CLEANUP;
-    }
-    if (hour) {
-        y = accum("hours", x, hour, us_per_hour, &leftover_us);
-        CLEANUP;
-    }
-    if (day) {
-        y = accum("days", x, day, us_per_day, &leftover_us);
-        CLEANUP;
-    }
-    if (week) {
-        y = accum("weeks", x, week, us_per_week, &leftover_us);
-        CLEANUP;
-    }
-    if (leftover_us) {
-        /* Round to nearest whole # of us, and add into x. */
-        PyObject *temp = PyLong_FromLong(round_to_long(leftover_us));
-        if (temp == NULL) {
-            Py_DECREF(x);
-            goto Done;
-        }
-        y = PyNumber_Add(x, temp);
-        Py_DECREF(temp);
-        CLEANUP;
-    }
-
-    self = microseconds_to_delta_ex(x, type);
-    Py_DECREF(x);
-Done:
-    return self;
-
-#undef CLEANUP
-}
-
-static int
-delta_nonzero(PyDateTime_Delta *self)
-{
-    return (GET_TD_DAYS(self) != 0
-        || GET_TD_SECONDS(self) != 0
-        || GET_TD_MICROSECONDS(self) != 0);
-}
-
-static PyObject *
-delta_repr(PyDateTime_Delta *self)
-{
-    if (GET_TD_MICROSECONDS(self) != 0)
-        return PyString_FromFormat("%s(%d, %d, %d)",
-                                   Py_TYPE(self)->tp_name,
-                                   GET_TD_DAYS(self),
-                                   GET_TD_SECONDS(self),
-                                   GET_TD_MICROSECONDS(self));
-    if (GET_TD_SECONDS(self) != 0)
-        return PyString_FromFormat("%s(%d, %d)",
-                                   Py_TYPE(self)->tp_name,
-                                   GET_TD_DAYS(self),
-                                   GET_TD_SECONDS(self));
-
-    return PyString_FromFormat("%s(%d)",
-                               Py_TYPE(self)->tp_name,
-                               GET_TD_DAYS(self));
-}
-
-static PyObject *
-delta_str(PyDateTime_Delta *self)
-{
-    int days = GET_TD_DAYS(self);
-    int seconds = GET_TD_SECONDS(self);
-    int us = GET_TD_MICROSECONDS(self);
-    int hours;
-    int minutes;
-    char buf[100];
-    char *pbuf = buf;
-    size_t buflen = sizeof(buf);
-    int n;
-
-    minutes = divmod(seconds, 60, &seconds);
-    hours = divmod(minutes, 60, &minutes);
-
-    if (days) {
-        n = PyOS_snprintf(pbuf, buflen, "%d day%s, ", days,
-                          (days == 1 || days == -1) ? "" : "s");
-        if (n < 0 || (size_t)n >= buflen)
-            goto Fail;
-        pbuf += n;
-        buflen -= (size_t)n;
-    }
-
-    n = PyOS_snprintf(pbuf, buflen, "%d:%02d:%02d",
-                      hours, minutes, seconds);
-    if (n < 0 || (size_t)n >= buflen)
-        goto Fail;
-    pbuf += n;
-    buflen -= (size_t)n;
-
-    if (us) {
-        n = PyOS_snprintf(pbuf, buflen, ".%06d", us);
-        if (n < 0 || (size_t)n >= buflen)
-            goto Fail;
-        pbuf += n;
-    }
-
-    return PyString_FromStringAndSize(buf, pbuf - buf);
-
- Fail:
-    PyErr_SetString(PyExc_SystemError, "goofy result from PyOS_snprintf");
-    return NULL;
-}
-
-/* Pickle support, a simple use of __reduce__. */
-
-/* __getstate__ isn't exposed */
-static PyObject *
-delta_getstate(PyDateTime_Delta *self)
-{
-    return Py_BuildValue("iii", GET_TD_DAYS(self),
-                                GET_TD_SECONDS(self),
-                                GET_TD_MICROSECONDS(self));
-}
-
-static PyObject *
-delta_total_seconds(PyObject *self)
-{
-    PyObject *total_seconds;
-    PyObject *total_microseconds;
-    PyObject *one_million;
-
-    total_microseconds = delta_to_microseconds((PyDateTime_Delta *)self);
-    if (total_microseconds == NULL)
-        return NULL;
-
-    one_million = PyLong_FromLong(1000000L);
-    if (one_million == NULL) {
-        Py_DECREF(total_microseconds);
-        return NULL;
-    }
-
-    total_seconds = PyNumber_TrueDivide(total_microseconds, one_million);
-
-    Py_DECREF(total_microseconds);
-    Py_DECREF(one_million);
-    return total_seconds;
-}
-
-static PyObject *
-delta_reduce(PyDateTime_Delta* self)
-{
-    return Py_BuildValue("ON", Py_TYPE(self), delta_getstate(self));
-}
-
-#define OFFSET(field)  offsetof(PyDateTime_Delta, field)
-
-static PyMemberDef delta_members[] = {
-
-    {"days",         T_INT, OFFSET(days),         READONLY,
-     PyDoc_STR("Number of days.")},
-
-    {"seconds",      T_INT, OFFSET(seconds),      READONLY,
-     PyDoc_STR("Number of seconds (>= 0 and less than 1 day).")},
-
-    {"microseconds", T_INT, OFFSET(microseconds), READONLY,
-     PyDoc_STR("Number of microseconds (>= 0 and less than 1 second).")},
-    {NULL}
-};
-
-static PyMethodDef delta_methods[] = {
-    {"total_seconds", (PyCFunction)delta_total_seconds, METH_NOARGS,
-     PyDoc_STR("Total seconds in the duration.")},
-
-    {"__reduce__", (PyCFunction)delta_reduce, METH_NOARGS,
-     PyDoc_STR("__reduce__() -> (cls, state)")},
-
-    {NULL,      NULL},
-};
-
-static char delta_doc[] =
-PyDoc_STR("Difference between two datetime values.");
-
-static PyNumberMethods delta_as_number = {
-    delta_add,                                  /* nb_add */
-    delta_subtract,                             /* nb_subtract */
-    delta_multiply,                             /* nb_multiply */
-    delta_divide,                               /* nb_divide */
-    0,                                          /* nb_remainder */
-    0,                                          /* nb_divmod */
-    0,                                          /* nb_power */
-    (unaryfunc)delta_negative,                  /* nb_negative */
-    (unaryfunc)delta_positive,                  /* nb_positive */
-    (unaryfunc)delta_abs,                       /* nb_absolute */
-    (inquiry)delta_nonzero,                     /* nb_nonzero */
-    0,                                          /*nb_invert*/
-    0,                                          /*nb_lshift*/
-    0,                                          /*nb_rshift*/
-    0,                                          /*nb_and*/
-    0,                                          /*nb_xor*/
-    0,                                          /*nb_or*/
-    0,                                          /*nb_coerce*/
-    0,                                          /*nb_int*/
-    0,                                          /*nb_long*/
-    0,                                          /*nb_float*/
-    0,                                          /*nb_oct*/
-    0,                                          /*nb_hex*/
-    0,                                          /*nb_inplace_add*/
-    0,                                          /*nb_inplace_subtract*/
-    0,                                          /*nb_inplace_multiply*/
-    0,                                          /*nb_inplace_divide*/
-    0,                                          /*nb_inplace_remainder*/
-    0,                                          /*nb_inplace_power*/
-    0,                                          /*nb_inplace_lshift*/
-    0,                                          /*nb_inplace_rshift*/
-    0,                                          /*nb_inplace_and*/
-    0,                                          /*nb_inplace_xor*/
-    0,                                          /*nb_inplace_or*/
-    delta_divide,                               /* nb_floor_divide */
-    0,                                          /* nb_true_divide */
-    0,                                          /* nb_inplace_floor_divide */
-    0,                                          /* nb_inplace_true_divide */
-};
-
-static PyTypeObject PyDateTime_DeltaType = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "datetime.timedelta",                               /* tp_name */
-    sizeof(PyDateTime_Delta),                           /* tp_basicsize */
-    0,                                                  /* tp_itemsize */
-    0,                                                  /* tp_dealloc */
-    0,                                                  /* tp_print */
-    0,                                                  /* tp_getattr */
-    0,                                                  /* tp_setattr */
-    0,                                                  /* tp_compare */
-    (reprfunc)delta_repr,                               /* tp_repr */
-    &delta_as_number,                                   /* tp_as_number */
-    0,                                                  /* tp_as_sequence */
-    0,                                                  /* tp_as_mapping */
-    (hashfunc)delta_hash,                               /* tp_hash */
-    0,                                                  /* tp_call */
-    (reprfunc)delta_str,                                /* tp_str */
-    PyObject_GenericGetAttr,                            /* tp_getattro */
-    0,                                                  /* tp_setattro */
-    0,                                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
-        Py_TPFLAGS_BASETYPE,                            /* tp_flags */
-    delta_doc,                                          /* tp_doc */
-    0,                                                  /* tp_traverse */
-    0,                                                  /* tp_clear */
-    (richcmpfunc)delta_richcompare,                     /* tp_richcompare */
-    0,                                                  /* tp_weaklistoffset */
-    0,                                                  /* tp_iter */
-    0,                                                  /* tp_iternext */
-    delta_methods,                                      /* tp_methods */
-    delta_members,                                      /* tp_members */
-    0,                                                  /* tp_getset */
-    0,                                                  /* tp_base */
-    0,                                                  /* tp_dict */
-    0,                                                  /* tp_descr_get */
-    0,                                                  /* tp_descr_set */
-    0,                                                  /* tp_dictoffset */
-    0,                                                  /* tp_init */
-    0,                                                  /* tp_alloc */
-    delta_new,                                          /* tp_new */
-    0,                                                  /* tp_free */
-};
-
-/*
- * PyDateTime_Date implementation.
- */
-
-/* Accessor properties. */
-
-static PyObject *
-date_year(PyDateTime_Date *self, void *unused)
-{
-    return PyInt_FromLong(GET_YEAR(self));
-}
-
-static PyObject *
-date_month(PyDateTime_Date *self, void *unused)
-{
-    return PyInt_FromLong(GET_MONTH(self));
-}
-
-static PyObject *
-date_day(PyDateTime_Date *self, void *unused)
-{
-    return PyInt_FromLong(GET_DAY(self));
-}
-
-static PyGetSetDef date_getset[] = {
-    {"year",        (getter)date_year},
-    {"month",       (getter)date_month},
-    {"day",         (getter)date_day},
-    {NULL}
-};
-
-/* Constructors. */
-
-static char *date_kws[] = {"year", "month", "day", NULL};
-
-static PyObject *
-date_new(PyTypeObject *type, PyObject *args, PyObject *kw)
-{
-    PyObject *self = NULL;
-    PyObject *state;
-    int year;
-    int month;
-    int day;
-
-    /* Check for invocation from pickle with __getstate__ state */
-    if (PyTuple_GET_SIZE(args) == 1 &&
-        PyString_Check(state = PyTuple_GET_ITEM(args, 0)) &&
-        PyString_GET_SIZE(state) == _PyDateTime_DATE_DATASIZE &&
-        MONTH_IS_SANE(PyString_AS_STRING(state)[2]))
-    {
-        PyDateTime_Date *me;
-
-        me = (PyDateTime_Date *) (type->tp_alloc(type, 0));
-        if (me != NULL) {
-            char *pdata = PyString_AS_STRING(state);
-            memcpy(me->data, pdata, _PyDateTime_DATE_DATASIZE);
-            me->hashcode = -1;
-        }
-        return (PyObject *)me;
-    }
-
-    if (PyArg_ParseTupleAndKeywords(args, kw, "iii", date_kws,
-                                    &year, &month, &day)) {
-        if (check_date_args(year, month, day) < 0)
-            return NULL;
-        self = new_date_ex(year, month, day, type);
-    }
-    return self;
-}
-
-/* Return new date from localtime(t). */
-static PyObject *
-date_local_from_time_t(PyObject *cls, double ts)
-{
-    struct tm *tm;
-    time_t t;
-    PyObject *result = NULL;
-
-    t = _PyTime_DoubleToTimet(ts);
-    if (t == (time_t)-1 && PyErr_Occurred())
-        return NULL;
-    tm = localtime(&t);
-    if (tm)
-        result = PyObject_CallFunction(cls, "iii",
-                                       tm->tm_year + 1900,
-                                       tm->tm_mon + 1,
-                                       tm->tm_mday);
-    else
-        PyErr_SetString(PyExc_ValueError,
-                        "timestamp out of range for "
-                        "platform localtime() function");
-    return result;
-}
-
-/* Return new date from current time.
- * We say this is equivalent to fromtimestamp(time.time()), and the
- * only way to be sure of that is to *call* time.time().  That's not
- * generally the same as calling C's time.
- */
-static PyObject *
-date_today(PyObject *cls, PyObject *dummy)
-{
-    PyObject *time;
-    PyObject *result;
-
-    time = time_time();
-    if (time == NULL)
-        return NULL;
-
-    /* Note well:  today() is a class method, so this may not call
-     * date.fromtimestamp.  For example, it may call
-     * datetime.fromtimestamp.  That's why we need all the accuracy
-     * time.time() delivers; if someone were gonzo about optimization,
-     * date.today() could get away with plain C time().
-     */
-    result = PyObject_CallMethod(cls, "fromtimestamp", "O", time);
-    Py_DECREF(time);
-    return result;
-}
-
-/* Return new date from given timestamp (Python timestamp -- a double). */
-static PyObject *
-date_fromtimestamp(PyObject *cls, PyObject *args)
-{
-    double timestamp;
-    PyObject *result = NULL;
-
-    if (PyArg_ParseTuple(args, "d:fromtimestamp", &timestamp))
-        result = date_local_from_time_t(cls, timestamp);
-    return result;
-}
-
-/* Return new date from proleptic Gregorian ordinal.  Raises ValueError if
- * the ordinal is out of range.
- */
-static PyObject *
-date_fromordinal(PyObject *cls, PyObject *args)
-{
-    PyObject *result = NULL;
-    int ordinal;
-
-    if (PyArg_ParseTuple(args, "i:fromordinal", &ordinal)) {
-        int year;
-        int month;
-        int day;
-
-        if (ordinal < 1)
-            PyErr_SetString(PyExc_ValueError, "ordinal must be "
-                                              ">= 1");
-        else {
-            ord_to_ymd(ordinal, &year, &month, &day);
-            result = PyObject_CallFunction(cls, "iii",
-                                           year, month, day);
-        }
-    }
-    return result;
-}
-
-/*
- * Date arithmetic.
- */
-
-/* date + timedelta -> date.  If arg negate is true, subtract the timedelta
- * instead.
- */
-static PyObject *
-add_date_timedelta(PyDateTime_Date *date, PyDateTime_Delta *delta, int negate)
-{
-    PyObject *result = NULL;
-    int year = GET_YEAR(date);
-    int month = GET_MONTH(date);
-    int deltadays = GET_TD_DAYS(delta);
-    /* C-level overflow is impossible because |deltadays| < 1e9. */
-    int day = GET_DAY(date) + (negate ? -deltadays : deltadays);
-
-    if (normalize_date(&year, &month, &day) >= 0)
-        result = new_date(year, month, day);
-    return result;
-}
-
-static PyObject *
-date_add(PyObject *left, PyObject *right)
-{
-    if (PyDateTime_Check(left) || PyDateTime_Check(right)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    if (PyDate_Check(left)) {
-        /* date + ??? */
-        if (PyDelta_Check(right))
-            /* date + delta */
-            return add_date_timedelta((PyDateTime_Date *) left,
-                                      (PyDateTime_Delta *) right,
-                                      0);
-    }
-    else {
-        /* ??? + date
-         * 'right' must be one of us, or we wouldn't have been called
-         */
-        if (PyDelta_Check(left))
-            /* delta + date */
-            return add_date_timedelta((PyDateTime_Date *) right,
-                                      (PyDateTime_Delta *) left,
-                                      0);
-    }
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-}
-
-static PyObject *
-date_subtract(PyObject *left, PyObject *right)
-{
-    if (PyDateTime_Check(left) || PyDateTime_Check(right)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    if (PyDate_Check(left)) {
-        if (PyDate_Check(right)) {
-            /* date - date */
-            int left_ord = ymd_to_ord(GET_YEAR(left),
-                                      GET_MONTH(left),
-                                      GET_DAY(left));
-            int right_ord = ymd_to_ord(GET_YEAR(right),
-                                       GET_MONTH(right),
-                                       GET_DAY(right));
-            return new_delta(left_ord - right_ord, 0, 0, 0);
-        }
-        if (PyDelta_Check(right)) {
-            /* date - delta */
-            return add_date_timedelta((PyDateTime_Date *) left,
-                                      (PyDateTime_Delta *) right,
-                                      1);
-        }
-    }
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-}
-
-
-/* Various ways to turn a date into a string. */
-
-static PyObject *
-date_repr(PyDateTime_Date *self)
-{
-    char buffer[1028];
-    const char *type_name;
-
-    type_name = Py_TYPE(self)->tp_name;
-    PyOS_snprintf(buffer, sizeof(buffer), "%s(%d, %d, %d)",
-                  type_name,
-                  GET_YEAR(self), GET_MONTH(self), GET_DAY(self));
-
-    return PyString_FromString(buffer);
-}
-
-static PyObject *
-date_isoformat(PyDateTime_Date *self)
-{
-    char buffer[128];
-
-    isoformat_date(self, buffer, sizeof(buffer));
-    return PyString_FromString(buffer);
-}
-
-/* str() calls the appropriate isoformat() method. */
-static PyObject *
-date_str(PyDateTime_Date *self)
-{
-    return PyObject_CallMethod((PyObject *)self, "isoformat", "()");
-}
-
-
-static PyObject *
-date_ctime(PyDateTime_Date *self)
-{
-    return format_ctime(self, 0, 0, 0);
-}
-
-static PyObject *
-date_strftime(PyDateTime_Date *self, PyObject *args, PyObject *kw)
-{
-    /* This method can be inherited, and needs to call the
-     * timetuple() method appropriate to self's class.
-     */
-    PyObject *result;
-    PyObject *tuple;
-    const char *format;
-    Py_ssize_t format_len;
-    static char *keywords[] = {"format", NULL};
-
-    if (! PyArg_ParseTupleAndKeywords(args, kw, "s#:strftime", keywords,
-                                      &format, &format_len))
-        return NULL;
-
-    tuple = PyObject_CallMethod((PyObject *)self, "timetuple", "()");
-    if (tuple == NULL)
-        return NULL;
-    result = wrap_strftime((PyObject *)self, format, format_len, tuple,
-                           (PyObject *)self);
-    Py_DECREF(tuple);
-    return result;
-}
-
-static PyObject *
-date_format(PyDateTime_Date *self, PyObject *args)
-{
-    PyObject *format;
-
-    if (!PyArg_ParseTuple(args, "O:__format__", &format))
-        return NULL;
-
-    /* Check for str or unicode */
-    if (PyString_Check(format)) {
-        /* If format is zero length, return str(self) */
-        if (PyString_GET_SIZE(format) == 0)
-            return PyObject_Str((PyObject *)self);
-    } else if (PyUnicode_Check(format)) {
-        /* If format is zero length, return str(self) */
-        if (PyUnicode_GET_SIZE(format) == 0)
-            return PyObject_Unicode((PyObject *)self);
-    } else {
-        PyErr_Format(PyExc_ValueError,
-                     "__format__ expects str or unicode, not %.200s",
-                     Py_TYPE(format)->tp_name);
-        return NULL;
-    }
-    return PyObject_CallMethod((PyObject *)self, "strftime", "O", format);
-}
-
-/* ISO methods. */
-
-static PyObject *
-date_isoweekday(PyDateTime_Date *self)
-{
-    int dow = weekday(GET_YEAR(self), GET_MONTH(self), GET_DAY(self));
-
-    return PyInt_FromLong(dow + 1);
-}
-
-static PyObject *
-date_isocalendar(PyDateTime_Date *self)
-{
-    int  year         = GET_YEAR(self);
-    int  week1_monday = iso_week1_monday(year);
-    int today         = ymd_to_ord(year, GET_MONTH(self), GET_DAY(self));
-    int  week;
-    int  day;
-
-    week = divmod(today - week1_monday, 7, &day);
-    if (week < 0) {
-        --year;
-        week1_monday = iso_week1_monday(year);
-        week = divmod(today - week1_monday, 7, &day);
-    }
-    else if (week >= 52 && today >= iso_week1_monday(year + 1)) {
-        ++year;
-        week = 0;
-    }
-    return Py_BuildValue("iii", year, week + 1, day + 1);
-}
-
-/* Miscellaneous methods. */
-
-/* This is more natural as a tp_compare, but doesn't work then:  for whatever
- * reason, Python's try_3way_compare ignores tp_compare unless
- * PyInstance_Check returns true, but these aren't old-style classes.
- */
-static PyObject *
-date_richcompare(PyDateTime_Date *self, PyObject *other, int op)
-{
-    int diff = 42;      /* nonsense */
-
-    if (PyDate_Check(other))
-        diff = memcmp(self->data, ((PyDateTime_Date *)other)->data,
-                      _PyDateTime_DATE_DATASIZE);
-
-    else if (PyObject_HasAttrString(other, "timetuple")) {
-        /* A hook for other kinds of date objects. */
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    else if (op == Py_EQ || op == Py_NE)
-        diff = 1;               /* any non-zero value will do */
-
-    else /* stop this from falling back to address comparison */
-        return cmperror((PyObject *)self, other);
-
-    return diff_to_bool(diff, op);
-}
-
-static PyObject *
-date_timetuple(PyDateTime_Date *self)
-{
-    return build_struct_time(GET_YEAR(self),
-                             GET_MONTH(self),
-                             GET_DAY(self),
-                             0, 0, 0, -1);
-}
-
-static PyObject *
-date_replace(PyDateTime_Date *self, PyObject *args, PyObject *kw)
-{
-    PyObject *clone;
-    PyObject *tuple;
-    int year = GET_YEAR(self);
-    int month = GET_MONTH(self);
-    int day = GET_DAY(self);
-
-    if (! PyArg_ParseTupleAndKeywords(args, kw, "|iii:replace", date_kws,
-                                      &year, &month, &day))
-        return NULL;
-    tuple = Py_BuildValue("iii", year, month, day);
-    if (tuple == NULL)
-        return NULL;
-    clone = date_new(Py_TYPE(self), tuple, NULL);
-    Py_DECREF(tuple);
-    return clone;
-}
-
-static PyObject *date_getstate(PyDateTime_Date *self);
-
-static long
-date_hash(PyDateTime_Date *self)
-{
-    if (self->hashcode == -1) {
-        PyObject *temp = date_getstate(self);
-        if (temp != NULL) {
-            self->hashcode = PyObject_Hash(temp);
-            Py_DECREF(temp);
-        }
-    }
-    return self->hashcode;
-}
-
-static PyObject *
-date_toordinal(PyDateTime_Date *self)
-{
-    return PyInt_FromLong(ymd_to_ord(GET_YEAR(self), GET_MONTH(self),
-                                     GET_DAY(self)));
-}
-
-static PyObject *
-date_weekday(PyDateTime_Date *self)
-{
-    int dow = weekday(GET_YEAR(self), GET_MONTH(self), GET_DAY(self));
-
-    return PyInt_FromLong(dow);
-}
-
-/* Pickle support, a simple use of __reduce__. */
-
-/* __getstate__ isn't exposed */
-static PyObject *
-date_getstate(PyDateTime_Date *self)
-{
-    return Py_BuildValue(
-        "(N)",
-        PyString_FromStringAndSize((char *)self->data,
-                                   _PyDateTime_DATE_DATASIZE));
-}
-
-static PyObject *
-date_reduce(PyDateTime_Date *self, PyObject *arg)
-{
-    return Py_BuildValue("(ON)", Py_TYPE(self), date_getstate(self));
-}
-
-static PyMethodDef date_methods[] = {
-
-    /* Class methods: */
-
-    {"fromtimestamp", (PyCFunction)date_fromtimestamp, METH_VARARGS |
-                                                       METH_CLASS,
-     PyDoc_STR("timestamp -> local date from a POSIX timestamp (like "
-               "time.time()).")},
-
-    {"fromordinal", (PyCFunction)date_fromordinal,      METH_VARARGS |
-                                                    METH_CLASS,
-     PyDoc_STR("int -> date corresponding to a proleptic Gregorian "
-               "ordinal.")},
-
-    {"today",         (PyCFunction)date_today,   METH_NOARGS | METH_CLASS,
-     PyDoc_STR("Current date or datetime:  same as "
-               "self.__class__.fromtimestamp(time.time()).")},
-
-    /* Instance methods: */
-
-    {"ctime",       (PyCFunction)date_ctime,        METH_NOARGS,
-     PyDoc_STR("Return ctime() style string.")},
-
-    {"strftime",        (PyCFunction)date_strftime,     METH_VARARGS | METH_KEYWORDS,
-     PyDoc_STR("format -> strftime() style string.")},
-
-    {"__format__",      (PyCFunction)date_format,       METH_VARARGS,
-     PyDoc_STR("Formats self with strftime.")},
-
-    {"timetuple",   (PyCFunction)date_timetuple,    METH_NOARGS,
-     PyDoc_STR("Return time tuple, compatible with time.localtime().")},
-
-    {"isocalendar", (PyCFunction)date_isocalendar,  METH_NOARGS,
-     PyDoc_STR("Return a 3-tuple containing ISO year, week number, and "
-               "weekday.")},
-
-    {"isoformat",   (PyCFunction)date_isoformat,        METH_NOARGS,
-     PyDoc_STR("Return string in ISO 8601 format, YYYY-MM-DD.")},
-
-    {"isoweekday",  (PyCFunction)date_isoweekday,   METH_NOARGS,
-     PyDoc_STR("Return the day of the week represented by the date.\n"
-               "Monday == 1 ... Sunday == 7")},
-
-    {"toordinal",   (PyCFunction)date_toordinal,    METH_NOARGS,
-     PyDoc_STR("Return proleptic Gregorian ordinal.  January 1 of year "
-               "1 is day 1.")},
-
-    {"weekday",     (PyCFunction)date_weekday,      METH_NOARGS,
-     PyDoc_STR("Return the day of the week represented by the date.\n"
-               "Monday == 0 ... Sunday == 6")},
-
-    {"replace",     (PyCFunction)date_replace,      METH_VARARGS | METH_KEYWORDS,
-     PyDoc_STR("Return date with new specified fields.")},
-
-    {"__reduce__", (PyCFunction)date_reduce,        METH_NOARGS,
-     PyDoc_STR("__reduce__() -> (cls, state)")},
-
-    {NULL,      NULL}
-};
-
-static char date_doc[] =
-PyDoc_STR("date(year, month, day) --> date object");
-
-static PyNumberMethods date_as_number = {
-    date_add,                                           /* nb_add */
-    date_subtract,                                      /* nb_subtract */
-    0,                                                  /* nb_multiply */
-    0,                                                  /* nb_divide */
-    0,                                                  /* nb_remainder */
-    0,                                                  /* nb_divmod */
-    0,                                                  /* nb_power */
-    0,                                                  /* nb_negative */
-    0,                                                  /* nb_positive */
-    0,                                                  /* nb_absolute */
-    0,                                                  /* nb_nonzero */
-};
-
-static PyTypeObject PyDateTime_DateType = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "datetime.date",                                    /* tp_name */
-    sizeof(PyDateTime_Date),                            /* tp_basicsize */
-    0,                                                  /* tp_itemsize */
-    0,                                                  /* tp_dealloc */
-    0,                                                  /* tp_print */
-    0,                                                  /* tp_getattr */
-    0,                                                  /* tp_setattr */
-    0,                                                  /* tp_compare */
-    (reprfunc)date_repr,                                /* tp_repr */
-    &date_as_number,                                    /* tp_as_number */
-    0,                                                  /* tp_as_sequence */
-    0,                                                  /* tp_as_mapping */
-    (hashfunc)date_hash,                                /* tp_hash */
-    0,                                                  /* tp_call */
-    (reprfunc)date_str,                                 /* tp_str */
-    PyObject_GenericGetAttr,                            /* tp_getattro */
-    0,                                                  /* tp_setattro */
-    0,                                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
-    Py_TPFLAGS_BASETYPE,                                /* tp_flags */
-    date_doc,                                           /* tp_doc */
-    0,                                                  /* tp_traverse */
-    0,                                                  /* tp_clear */
-    (richcmpfunc)date_richcompare,                      /* tp_richcompare */
-    0,                                                  /* tp_weaklistoffset */
-    0,                                                  /* tp_iter */
-    0,                                                  /* tp_iternext */
-    date_methods,                                       /* tp_methods */
-    0,                                                  /* tp_members */
-    date_getset,                                        /* tp_getset */
-    0,                                                  /* tp_base */
-    0,                                                  /* tp_dict */
-    0,                                                  /* tp_descr_get */
-    0,                                                  /* tp_descr_set */
-    0,                                                  /* tp_dictoffset */
-    0,                                                  /* tp_init */
-    0,                                                  /* tp_alloc */
-    date_new,                                           /* tp_new */
-    0,                                                  /* tp_free */
-};
-
-/*
- * PyDateTime_TZInfo implementation.
- */
-
-/* This is a pure abstract base class, so doesn't do anything beyond
- * raising NotImplemented exceptions.  Real tzinfo classes need
- * to derive from this.  This is mostly for clarity, and for efficiency in
- * datetime and time constructors (their tzinfo arguments need to
- * be subclasses of this tzinfo class, which is easy and quick to check).
- *
- * Note:  For reasons having to do with pickling of subclasses, we have
- * to allow tzinfo objects to be instantiated.  This wasn't an issue
- * in the Python implementation (__init__() could raise NotImplementedError
- * there without ill effect), but doing so in the C implementation hit a
- * brick wall.
- */
-
-static PyObject *
-tzinfo_nogo(const char* methodname)
-{
-    PyErr_Format(PyExc_NotImplementedError,
-                 "a tzinfo subclass must implement %s()",
-                 methodname);
-    return NULL;
-}
-
-/* Methods.  A subclass must implement these. */
-
-static PyObject *
-tzinfo_tzname(PyDateTime_TZInfo *self, PyObject *dt)
-{
-    return tzinfo_nogo("tzname");
-}
-
-static PyObject *
-tzinfo_utcoffset(PyDateTime_TZInfo *self, PyObject *dt)
-{
-    return tzinfo_nogo("utcoffset");
-}
-
-static PyObject *
-tzinfo_dst(PyDateTime_TZInfo *self, PyObject *dt)
-{
-    return tzinfo_nogo("dst");
-}
-
-static PyObject *
-tzinfo_fromutc(PyDateTime_TZInfo *self, PyDateTime_DateTime *dt)
-{
-    int y, m, d, hh, mm, ss, us;
-
-    PyObject *result;
-    int off, dst;
-    int none;
-    int delta;
-
-    if (! PyDateTime_Check(dt)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "fromutc: argument must be a datetime");
-        return NULL;
-    }
-    if (! HASTZINFO(dt) || dt->tzinfo != (PyObject *)self) {
-        PyErr_SetString(PyExc_ValueError, "fromutc: dt.tzinfo "
-                        "is not self");
-        return NULL;
-    }
-
-    off = call_utcoffset(dt->tzinfo, (PyObject *)dt, &none);
-    if (off == -1 && PyErr_Occurred())
-        return NULL;
-    if (none) {
-        PyErr_SetString(PyExc_ValueError, "fromutc: non-None "
-                        "utcoffset() result required");
-        return NULL;
-    }
-
-    dst = call_dst(dt->tzinfo, (PyObject *)dt, &none);
-    if (dst == -1 && PyErr_Occurred())
-        return NULL;
-    if (none) {
-        PyErr_SetString(PyExc_ValueError, "fromutc: non-None "
-                        "dst() result required");
-        return NULL;
-    }
-
-    y = GET_YEAR(dt);
-    m = GET_MONTH(dt);
-    d = GET_DAY(dt);
-    hh = DATE_GET_HOUR(dt);
-    mm = DATE_GET_MINUTE(dt);
-    ss = DATE_GET_SECOND(dt);
-    us = DATE_GET_MICROSECOND(dt);
-
-    delta = off - dst;
-    mm += delta;
-    if ((mm < 0 || mm >= 60) &&
-        normalize_datetime(&y, &m, &d, &hh, &mm, &ss, &us) < 0)
-        return NULL;
-    result = new_datetime(y, m, d, hh, mm, ss, us, dt->tzinfo);
-    if (result == NULL)
-        return result;
-
-    dst = call_dst(dt->tzinfo, result, &none);
-    if (dst == -1 && PyErr_Occurred())
-        goto Fail;
-    if (none)
-        goto Inconsistent;
-    if (dst == 0)
-        return result;
-
-    mm += dst;
-    if ((mm < 0 || mm >= 60) &&
-        normalize_datetime(&y, &m, &d, &hh, &mm, &ss, &us) < 0)
-        goto Fail;
-    Py_DECREF(result);
-    result = new_datetime(y, m, d, hh, mm, ss, us, dt->tzinfo);
-    return result;
-
-Inconsistent:
-    PyErr_SetString(PyExc_ValueError, "fromutc: tz.dst() gave"
-                    "inconsistent results; cannot convert");
-
-    /* fall thru to failure */
-Fail:
-    Py_DECREF(result);
-    return NULL;
-}
-
-/*
- * Pickle support.  This is solely so that tzinfo subclasses can use
- * pickling -- tzinfo itself is supposed to be uninstantiable.
- */
-
-static PyObject *
-tzinfo_reduce(PyObject *self)
-{
-    PyObject *args, *state, *tmp;
-    PyObject *getinitargs, *getstate;
-
-    tmp = PyTuple_New(0);
-    if (tmp == NULL)
-        return NULL;
-
-    getinitargs = PyObject_GetAttrString(self, "__getinitargs__");
-    if (getinitargs != NULL) {
-        args = PyObject_CallObject(getinitargs, tmp);
-        Py_DECREF(getinitargs);
-        if (args == NULL) {
-            Py_DECREF(tmp);
-            return NULL;
-        }
-    }
-    else {
-        PyErr_Clear();
-        args = tmp;
-        Py_INCREF(args);
-    }
-
-    getstate = PyObject_GetAttrString(self, "__getstate__");
-    if (getstate != NULL) {
-        state = PyObject_CallObject(getstate, tmp);
-        Py_DECREF(getstate);
-        if (state == NULL) {
-            Py_DECREF(args);
-            Py_DECREF(tmp);
-            return NULL;
-        }
-    }
-    else {
-        PyObject **dictptr;
-        PyErr_Clear();
-        state = Py_None;
-        dictptr = _PyObject_GetDictPtr(self);
-        if (dictptr && *dictptr && PyDict_Size(*dictptr))
-            state = *dictptr;
-        Py_INCREF(state);
-    }
-
-    Py_DECREF(tmp);
-
-    if (state == Py_None) {
-        Py_DECREF(state);
-        return Py_BuildValue("(ON)", Py_TYPE(self), args);
-    }
-    else
-        return Py_BuildValue("(ONN)", Py_TYPE(self), args, state);
-}
-
-static PyMethodDef tzinfo_methods[] = {
-
-    {"tzname",          (PyCFunction)tzinfo_tzname,             METH_O,
-     PyDoc_STR("datetime -> string name of time zone.")},
-
-    {"utcoffset",       (PyCFunction)tzinfo_utcoffset,          METH_O,
-     PyDoc_STR("datetime -> minutes east of UTC (negative for "
-               "west of UTC).")},
-
-    {"dst",             (PyCFunction)tzinfo_dst,                METH_O,
-     PyDoc_STR("datetime -> DST offset in minutes east of UTC.")},
-
-    {"fromutc",         (PyCFunction)tzinfo_fromutc,            METH_O,
-     PyDoc_STR("datetime in UTC -> datetime in local time.")},
-
-    {"__reduce__",  (PyCFunction)tzinfo_reduce,             METH_NOARGS,
-     PyDoc_STR("-> (cls, state)")},
-
-    {NULL, NULL}
-};
-
-static char tzinfo_doc[] =
-PyDoc_STR("Abstract base class for time zone info objects.");
-
-statichere PyTypeObject PyDateTime_TZInfoType = {
-    PyObject_HEAD_INIT(NULL)
-    0,                                          /* ob_size */
-    "datetime.tzinfo",                          /* tp_name */
-    sizeof(PyDateTime_TZInfo),                  /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    0,                                          /* 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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
-    Py_TPFLAGS_BASETYPE,                        /* tp_flags */
-    tzinfo_doc,                                 /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    tzinfo_methods,                             /* tp_methods */
-    0,                                          /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    PyType_GenericNew,                          /* tp_new */
-    0,                                          /* tp_free */
-};
-
-/*
- * PyDateTime_Time implementation.
- */
-
-/* Accessor properties.
- */
-
-static PyObject *
-time_hour(PyDateTime_Time *self, void *unused)
-{
-    return PyInt_FromLong(TIME_GET_HOUR(self));
-}
-
-static PyObject *
-time_minute(PyDateTime_Time *self, void *unused)
-{
-    return PyInt_FromLong(TIME_GET_MINUTE(self));
-}
-
-/* The name time_second conflicted with some platform header file. */
-static PyObject *
-py_time_second(PyDateTime_Time *self, void *unused)
-{
-    return PyInt_FromLong(TIME_GET_SECOND(self));
-}
-
-static PyObject *
-time_microsecond(PyDateTime_Time *self, void *unused)
-{
-    return PyInt_FromLong(TIME_GET_MICROSECOND(self));
-}
-
-static PyObject *
-time_tzinfo(PyDateTime_Time *self, void *unused)
-{
-    PyObject *result = HASTZINFO(self) ? self->tzinfo : Py_None;
-    Py_INCREF(result);
-    return result;
-}
-
-static PyGetSetDef time_getset[] = {
-    {"hour",        (getter)time_hour},
-    {"minute",      (getter)time_minute},
-    {"second",      (getter)py_time_second},
-    {"microsecond", (getter)time_microsecond},
-    {"tzinfo",          (getter)time_tzinfo},
-    {NULL}
-};
-
-/*
- * Constructors.
- */
-
-static char *time_kws[] = {"hour", "minute", "second", "microsecond",
-                           "tzinfo", NULL};
-
-static PyObject *
-time_new(PyTypeObject *type, PyObject *args, PyObject *kw)
-{
-    PyObject *self = NULL;
-    PyObject *state;
-    int hour = 0;
-    int minute = 0;
-    int second = 0;
-    int usecond = 0;
-    PyObject *tzinfo = Py_None;
-
-    /* Check for invocation from pickle with __getstate__ state */
-    if (PyTuple_GET_SIZE(args) >= 1 &&
-        PyTuple_GET_SIZE(args) <= 2 &&
-        PyString_Check(state = PyTuple_GET_ITEM(args, 0)) &&
-        PyString_GET_SIZE(state) == _PyDateTime_TIME_DATASIZE &&
-        ((unsigned char) (PyString_AS_STRING(state)[0])) < 24)
-    {
-        PyDateTime_Time *me;
-        char aware;
-
-        if (PyTuple_GET_SIZE(args) == 2) {
-            tzinfo = PyTuple_GET_ITEM(args, 1);
-            if (check_tzinfo_subclass(tzinfo) < 0) {
-                PyErr_SetString(PyExc_TypeError, "bad "
-                    "tzinfo state arg");
-                return NULL;
-            }
-        }
-        aware = (char)(tzinfo != Py_None);
-        me = (PyDateTime_Time *) (type->tp_alloc(type, aware));
-        if (me != NULL) {
-            char *pdata = PyString_AS_STRING(state);
-
-            memcpy(me->data, pdata, _PyDateTime_TIME_DATASIZE);
-            me->hashcode = -1;
-            me->hastzinfo = aware;
-            if (aware) {
-                Py_INCREF(tzinfo);
-                me->tzinfo = tzinfo;
-            }
-        }
-        return (PyObject *)me;
-    }
-
-    if (PyArg_ParseTupleAndKeywords(args, kw, "|iiiiO", time_kws,
-                                    &hour, &minute, &second, &usecond,
-                                    &tzinfo)) {
-        if (check_time_args(hour, minute, second, usecond) < 0)
-            return NULL;
-        if (check_tzinfo_subclass(tzinfo) < 0)
-            return NULL;
-        self = new_time_ex(hour, minute, second, usecond, tzinfo,
-                           type);
-    }
-    return self;
-}
-
-/*
- * Destructor.
- */
-
-static void
-time_dealloc(PyDateTime_Time *self)
-{
-    if (HASTZINFO(self)) {
-        Py_XDECREF(self->tzinfo);
-    }
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-/*
- * Indirect access to tzinfo methods.
- */
-
-/* These are all METH_NOARGS, so don't need to check the arglist. */
-static PyObject *
-time_utcoffset(PyDateTime_Time *self, PyObject *unused) {
-    return offset_as_timedelta(HASTZINFO(self) ? self->tzinfo : Py_None,
-                               "utcoffset", Py_None);
-}
-
-static PyObject *
-time_dst(PyDateTime_Time *self, PyObject *unused) {
-    return offset_as_timedelta(HASTZINFO(self) ? self->tzinfo : Py_None,
-                               "dst", Py_None);
-}
-
-static PyObject *
-time_tzname(PyDateTime_Time *self, PyObject *unused) {
-    return call_tzname(HASTZINFO(self) ? self->tzinfo : Py_None,
-                       Py_None);
-}
-
-/*
- * Various ways to turn a time into a string.
- */
-
-static PyObject *
-time_repr(PyDateTime_Time *self)
-{
-    char buffer[100];
-    const char *type_name = Py_TYPE(self)->tp_name;
-    int h = TIME_GET_HOUR(self);
-    int m = TIME_GET_MINUTE(self);
-    int s = TIME_GET_SECOND(self);
-    int us = TIME_GET_MICROSECOND(self);
-    PyObject *result = NULL;
-
-    if (us)
-        PyOS_snprintf(buffer, sizeof(buffer),
-                      "%s(%d, %d, %d, %d)", type_name, h, m, s, us);
-    else if (s)
-        PyOS_snprintf(buffer, sizeof(buffer),
-                      "%s(%d, %d, %d)", type_name, h, m, s);
-    else
-        PyOS_snprintf(buffer, sizeof(buffer),
-                      "%s(%d, %d)", type_name, h, m);
-    result = PyString_FromString(buffer);
-    if (result != NULL && HASTZINFO(self))
-        result = append_keyword_tzinfo(result, self->tzinfo);
-    return result;
-}
-
-static PyObject *
-time_str(PyDateTime_Time *self)
-{
-    return PyObject_CallMethod((PyObject *)self, "isoformat", "()");
-}
-
-static PyObject *
-time_isoformat(PyDateTime_Time *self, PyObject *unused)
-{
-    char buf[100];
-    PyObject *result;
-    /* Reuse the time format code from the datetime type. */
-    PyDateTime_DateTime datetime;
-    PyDateTime_DateTime *pdatetime = &datetime;
-
-    /* Copy over just the time bytes. */
-    memcpy(pdatetime->data + _PyDateTime_DATE_DATASIZE,
-           self->data,
-           _PyDateTime_TIME_DATASIZE);
-
-    isoformat_time(pdatetime, buf, sizeof(buf));
-    result = PyString_FromString(buf);
-    if (result == NULL || ! HASTZINFO(self) || self->tzinfo == Py_None)
-        return result;
-
-    /* We need to append the UTC offset. */
-    if (format_utcoffset(buf, sizeof(buf), ":", self->tzinfo,
-                         Py_None) < 0) {
-        Py_DECREF(result);
-        return NULL;
-    }
-    PyString_ConcatAndDel(&result, PyString_FromString(buf));
-    return result;
-}
-
-static PyObject *
-time_strftime(PyDateTime_Time *self, PyObject *args, PyObject *kw)
-{
-    PyObject *result;
-    PyObject *tuple;
-    const char *format;
-    Py_ssize_t format_len;
-    static char *keywords[] = {"format", NULL};
-
-    if (! PyArg_ParseTupleAndKeywords(args, kw, "s#:strftime", keywords,
-                                      &format, &format_len))
-        return NULL;
-
-    /* Python's strftime does insane things with the year part of the
-     * timetuple.  The year is forced to (the otherwise nonsensical)
-     * 1900 to worm around that.
-     */
-    tuple = Py_BuildValue("iiiiiiiii",
-                          1900, 1, 1, /* year, month, day */
-                  TIME_GET_HOUR(self),
-                  TIME_GET_MINUTE(self),
-                  TIME_GET_SECOND(self),
-                  0, 1, -1); /* weekday, daynum, dst */
-    if (tuple == NULL)
-        return NULL;
-    assert(PyTuple_Size(tuple) == 9);
-    result = wrap_strftime((PyObject *)self, format, format_len, tuple,
-                           Py_None);
-    Py_DECREF(tuple);
-    return result;
-}
-
-/*
- * Miscellaneous methods.
- */
-
-/* This is more natural as a tp_compare, but doesn't work then:  for whatever
- * reason, Python's try_3way_compare ignores tp_compare unless
- * PyInstance_Check returns true, but these aren't old-style classes.
- */
-static PyObject *
-time_richcompare(PyDateTime_Time *self, PyObject *other, int op)
-{
-    int diff;
-    naivety n1, n2;
-    int offset1, offset2;
-
-    if (! PyTime_Check(other)) {
-        if (op == Py_EQ || op == Py_NE) {
-            PyObject *result = op == Py_EQ ? Py_False : Py_True;
-            Py_INCREF(result);
-            return result;
-        }
-        /* Stop this from falling back to address comparison. */
-        return cmperror((PyObject *)self, other);
-    }
-    if (classify_two_utcoffsets((PyObject *)self, &offset1, &n1, Py_None,
-                                 other, &offset2, &n2, Py_None) < 0)
-        return NULL;
-    assert(n1 != OFFSET_UNKNOWN && n2 != OFFSET_UNKNOWN);
-    /* If they're both naive, or both aware and have the same offsets,
-     * we get off cheap.  Note that if they're both naive, offset1 ==
-     * offset2 == 0 at this point.
-     */
-    if (n1 == n2 && offset1 == offset2) {
-        diff = memcmp(self->data, ((PyDateTime_Time *)other)->data,
-                      _PyDateTime_TIME_DATASIZE);
-        return diff_to_bool(diff, op);
-    }
-
-    if (n1 == OFFSET_AWARE && n2 == OFFSET_AWARE) {
-        assert(offset1 != offset2);             /* else last "if" handled it */
-        /* Convert everything except microseconds to seconds.  These
-         * can't overflow (no more than the # of seconds in 2 days).
-         */
-        offset1 = TIME_GET_HOUR(self) * 3600 +
-                  (TIME_GET_MINUTE(self) - offset1) * 60 +
-                  TIME_GET_SECOND(self);
-        offset2 = TIME_GET_HOUR(other) * 3600 +
-                  (TIME_GET_MINUTE(other) - offset2) * 60 +
-                  TIME_GET_SECOND(other);
-        diff = offset1 - offset2;
-        if (diff == 0)
-            diff = TIME_GET_MICROSECOND(self) -
-                   TIME_GET_MICROSECOND(other);
-        return diff_to_bool(diff, op);
-    }
-
-    assert(n1 != n2);
-    PyErr_SetString(PyExc_TypeError,
-                    "can't compare offset-naive and "
-                    "offset-aware times");
-    return NULL;
-}
-
-static long
-time_hash(PyDateTime_Time *self)
-{
-    if (self->hashcode == -1) {
-        naivety n;
-        int offset;
-        PyObject *temp;
-
-        n = classify_utcoffset((PyObject *)self, Py_None, &offset);
-        assert(n != OFFSET_UNKNOWN);
-        if (n == OFFSET_ERROR)
-            return -1;
-
-        /* Reduce this to a hash of another object. */
-        if (offset == 0)
-            temp = PyString_FromStringAndSize((char *)self->data,
-                                    _PyDateTime_TIME_DATASIZE);
-        else {
-            int hour;
-            int minute;
-
-            assert(n == OFFSET_AWARE);
-            assert(HASTZINFO(self));
-            hour = divmod(TIME_GET_HOUR(self) * 60 +
-                            TIME_GET_MINUTE(self) - offset,
-                          60,
-                          &minute);
-            if (0 <= hour && hour < 24)
-                temp = new_time(hour, minute,
-                                TIME_GET_SECOND(self),
-                                TIME_GET_MICROSECOND(self),
-                                Py_None);
-            else
-                temp = Py_BuildValue("iiii",
-                           hour, minute,
-                           TIME_GET_SECOND(self),
-                           TIME_GET_MICROSECOND(self));
-        }
-        if (temp != NULL) {
-            self->hashcode = PyObject_Hash(temp);
-            Py_DECREF(temp);
-        }
-    }
-    return self->hashcode;
-}
-
-static PyObject *
-time_replace(PyDateTime_Time *self, PyObject *args, PyObject *kw)
-{
-    PyObject *clone;
-    PyObject *tuple;
-    int hh = TIME_GET_HOUR(self);
-    int mm = TIME_GET_MINUTE(self);
-    int ss = TIME_GET_SECOND(self);
-    int us = TIME_GET_MICROSECOND(self);
-    PyObject *tzinfo = HASTZINFO(self) ? self->tzinfo : Py_None;
-
-    if (! PyArg_ParseTupleAndKeywords(args, kw, "|iiiiO:replace",
-                                      time_kws,
-                                      &hh, &mm, &ss, &us, &tzinfo))
-        return NULL;
-    tuple = Py_BuildValue("iiiiO", hh, mm, ss, us, tzinfo);
-    if (tuple == NULL)
-        return NULL;
-    clone = time_new(Py_TYPE(self), tuple, NULL);
-    Py_DECREF(tuple);
-    return clone;
-}
-
-static int
-time_nonzero(PyDateTime_Time *self)
-{
-    int offset;
-    int none;
-
-    if (TIME_GET_SECOND(self) || TIME_GET_MICROSECOND(self)) {
-        /* Since utcoffset is in whole minutes, nothing can
-         * alter the conclusion that this is nonzero.
-         */
-        return 1;
-    }
-    offset = 0;
-    if (HASTZINFO(self) && self->tzinfo != Py_None) {
-        offset = call_utcoffset(self->tzinfo, Py_None, &none);
-        if (offset == -1 && PyErr_Occurred())
-            return -1;
-    }
-    return (TIME_GET_MINUTE(self) - offset + TIME_GET_HOUR(self)*60) != 0;
-}
-
-/* Pickle support, a simple use of __reduce__. */
-
-/* Let basestate be the non-tzinfo data string.
- * If tzinfo is None, this returns (basestate,), else (basestate, tzinfo).
- * So it's a tuple in any (non-error) case.
- * __getstate__ isn't exposed.
- */
-static PyObject *
-time_getstate(PyDateTime_Time *self)
-{
-    PyObject *basestate;
-    PyObject *result = NULL;
-
-    basestate =  PyString_FromStringAndSize((char *)self->data,
-                                            _PyDateTime_TIME_DATASIZE);
-    if (basestate != NULL) {
-        if (! HASTZINFO(self) || self->tzinfo == Py_None)
-            result = PyTuple_Pack(1, basestate);
-        else
-            result = PyTuple_Pack(2, basestate, self->tzinfo);
-        Py_DECREF(basestate);
-    }
-    return result;
-}
-
-static PyObject *
-time_reduce(PyDateTime_Time *self, PyObject *arg)
-{
-    return Py_BuildValue("(ON)", Py_TYPE(self), time_getstate(self));
-}
-
-static PyMethodDef time_methods[] = {
-
-    {"isoformat",   (PyCFunction)time_isoformat,        METH_NOARGS,
-     PyDoc_STR("Return string in ISO 8601 format, HH:MM:SS[.mmmmmm]"
-               "[+HH:MM].")},
-
-    {"strftime",        (PyCFunction)time_strftime,     METH_VARARGS | METH_KEYWORDS,
-     PyDoc_STR("format -> strftime() style string.")},
-
-    {"__format__",      (PyCFunction)date_format,       METH_VARARGS,
-     PyDoc_STR("Formats self with strftime.")},
-
-    {"utcoffset",       (PyCFunction)time_utcoffset,    METH_NOARGS,
-     PyDoc_STR("Return self.tzinfo.utcoffset(self).")},
-
-    {"tzname",          (PyCFunction)time_tzname,       METH_NOARGS,
-     PyDoc_STR("Return self.tzinfo.tzname(self).")},
-
-    {"dst",             (PyCFunction)time_dst,          METH_NOARGS,
-     PyDoc_STR("Return self.tzinfo.dst(self).")},
-
-    {"replace",     (PyCFunction)time_replace,          METH_VARARGS | METH_KEYWORDS,
-     PyDoc_STR("Return time with new specified fields.")},
-
-    {"__reduce__", (PyCFunction)time_reduce,        METH_NOARGS,
-     PyDoc_STR("__reduce__() -> (cls, state)")},
-
-    {NULL,      NULL}
-};
-
-static char time_doc[] =
-PyDoc_STR("time([hour[, minute[, second[, microsecond[, tzinfo]]]]]) --> a time object\n\
-\n\
-All arguments are optional. tzinfo may be None, or an instance of\n\
-a tzinfo subclass. The remaining arguments may be ints or longs.\n");
-
-static PyNumberMethods time_as_number = {
-    0,                                          /* nb_add */
-    0,                                          /* nb_subtract */
-    0,                                          /* nb_multiply */
-    0,                                          /* nb_divide */
-    0,                                          /* nb_remainder */
-    0,                                          /* nb_divmod */
-    0,                                          /* nb_power */
-    0,                                          /* nb_negative */
-    0,                                          /* nb_positive */
-    0,                                          /* nb_absolute */
-    (inquiry)time_nonzero,                      /* nb_nonzero */
-};
-
-statichere PyTypeObject PyDateTime_TimeType = {
-    PyObject_HEAD_INIT(NULL)
-    0,                                          /* ob_size */
-    "datetime.time",                            /* tp_name */
-    sizeof(PyDateTime_Time),                    /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    (destructor)time_dealloc,                   /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)time_repr,                        /* tp_repr */
-    &time_as_number,                            /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    (hashfunc)time_hash,                        /* tp_hash */
-    0,                                          /* tp_call */
-    (reprfunc)time_str,                         /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
-    Py_TPFLAGS_BASETYPE,                        /* tp_flags */
-    time_doc,                                   /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    (richcmpfunc)time_richcompare,              /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    time_methods,                               /* tp_methods */
-    0,                                          /* tp_members */
-    time_getset,                                /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    time_alloc,                                 /* tp_alloc */
-    time_new,                                   /* tp_new */
-    0,                                          /* tp_free */
-};
-
-/*
- * PyDateTime_DateTime implementation.
- */
-
-/* Accessor properties.  Properties for day, month, and year are inherited
- * from date.
- */
-
-static PyObject *
-datetime_hour(PyDateTime_DateTime *self, void *unused)
-{
-    return PyInt_FromLong(DATE_GET_HOUR(self));
-}
-
-static PyObject *
-datetime_minute(PyDateTime_DateTime *self, void *unused)
-{
-    return PyInt_FromLong(DATE_GET_MINUTE(self));
-}
-
-static PyObject *
-datetime_second(PyDateTime_DateTime *self, void *unused)
-{
-    return PyInt_FromLong(DATE_GET_SECOND(self));
-}
-
-static PyObject *
-datetime_microsecond(PyDateTime_DateTime *self, void *unused)
-{
-    return PyInt_FromLong(DATE_GET_MICROSECOND(self));
-}
-
-static PyObject *
-datetime_tzinfo(PyDateTime_DateTime *self, void *unused)
-{
-    PyObject *result = HASTZINFO(self) ? self->tzinfo : Py_None;
-    Py_INCREF(result);
-    return result;
-}
-
-static PyGetSetDef datetime_getset[] = {
-    {"hour",        (getter)datetime_hour},
-    {"minute",      (getter)datetime_minute},
-    {"second",      (getter)datetime_second},
-    {"microsecond", (getter)datetime_microsecond},
-    {"tzinfo",          (getter)datetime_tzinfo},
-    {NULL}
-};
-
-/*
- * Constructors.
- */
-
-static char *datetime_kws[] = {
-    "year", "month", "day", "hour", "minute", "second",
-    "microsecond", "tzinfo", NULL
-};
-
-static PyObject *
-datetime_new(PyTypeObject *type, PyObject *args, PyObject *kw)
-{
-    PyObject *self = NULL;
-    PyObject *state;
-    int year;
-    int month;
-    int day;
-    int hour = 0;
-    int minute = 0;
-    int second = 0;
-    int usecond = 0;
-    PyObject *tzinfo = Py_None;
-
-    /* Check for invocation from pickle with __getstate__ state */
-    if (PyTuple_GET_SIZE(args) >= 1 &&
-        PyTuple_GET_SIZE(args) <= 2 &&
-        PyString_Check(state = PyTuple_GET_ITEM(args, 0)) &&
-        PyString_GET_SIZE(state) == _PyDateTime_DATETIME_DATASIZE &&
-        MONTH_IS_SANE(PyString_AS_STRING(state)[2]))
-    {
-        PyDateTime_DateTime *me;
-        char aware;
-
-        if (PyTuple_GET_SIZE(args) == 2) {
-            tzinfo = PyTuple_GET_ITEM(args, 1);
-            if (check_tzinfo_subclass(tzinfo) < 0) {
-                PyErr_SetString(PyExc_TypeError, "bad "
-                    "tzinfo state arg");
-                return NULL;
-            }
-        }
-        aware = (char)(tzinfo != Py_None);
-        me = (PyDateTime_DateTime *) (type->tp_alloc(type , aware));
-        if (me != NULL) {
-            char *pdata = PyString_AS_STRING(state);
-
-            memcpy(me->data, pdata, _PyDateTime_DATETIME_DATASIZE);
-            me->hashcode = -1;
-            me->hastzinfo = aware;
-            if (aware) {
-                Py_INCREF(tzinfo);
-                me->tzinfo = tzinfo;
-            }
-        }
-        return (PyObject *)me;
-    }
-
-    if (PyArg_ParseTupleAndKeywords(args, kw, "iii|iiiiO", datetime_kws,
-                                    &year, &month, &day, &hour, &minute,
-                                    &second, &usecond, &tzinfo)) {
-        if (check_date_args(year, month, day) < 0)
-            return NULL;
-        if (check_time_args(hour, minute, second, usecond) < 0)
-            return NULL;
-        if (check_tzinfo_subclass(tzinfo) < 0)
-            return NULL;
-        self = new_datetime_ex(year, month, day,
-                                hour, minute, second, usecond,
-                                tzinfo, type);
-    }
-    return self;
-}
-
-/* TM_FUNC is the shared type of localtime() and gmtime(). */
-typedef struct tm *(*TM_FUNC)(const time_t *timer);
-
-/* Internal helper.
- * Build datetime from a time_t and a distinct count of microseconds.
- * Pass localtime or gmtime for f, to control the interpretation of timet.
- */
-static PyObject *
-datetime_from_timet_and_us(PyObject *cls, TM_FUNC f, time_t timet, int us,
-                           PyObject *tzinfo)
-{
-    struct tm *tm;
-    PyObject *result = NULL;
-
-    tm = f(&timet);
-    if (tm) {
-        /* The platform localtime/gmtime may insert leap seconds,
-         * indicated by tm->tm_sec > 59.  We don't care about them,
-         * except to the extent that passing them on to the datetime
-         * constructor would raise ValueError for a reason that
-         * made no sense to the user.
-         */
-        if (tm->tm_sec > 59)
-            tm->tm_sec = 59;
-        result = PyObject_CallFunction(cls, "iiiiiiiO",
-                                       tm->tm_year + 1900,
-                                       tm->tm_mon + 1,
-                                       tm->tm_mday,
-                                       tm->tm_hour,
-                                       tm->tm_min,
-                                       tm->tm_sec,
-                                       us,
-                                       tzinfo);
-    }
-    else
-        PyErr_SetString(PyExc_ValueError,
-                        "timestamp out of range for "
-                        "platform localtime()/gmtime() function");
-    return result;
-}
-
-/* Internal helper.
- * Build datetime from a Python timestamp.  Pass localtime or gmtime for f,
- * to control the interpretation of the timestamp.  Since a double doesn't
- * have enough bits to cover a datetime's full range of precision, it's
- * better to call datetime_from_timet_and_us provided you have a way
- * to get that much precision (e.g., C time() isn't good enough).
- */
-static PyObject *
-datetime_from_timestamp(PyObject *cls, TM_FUNC f, double timestamp,
-                        PyObject *tzinfo)
-{
-    time_t timet;
-    double fraction;
-    int us;
-
-    timet = _PyTime_DoubleToTimet(timestamp);
-    if (timet == (time_t)-1 && PyErr_Occurred())
-        return NULL;
-    fraction = timestamp - (double)timet;
-    us = (int)round_to_long(fraction * 1e6);
-    if (us < 0) {
-        /* Truncation towards zero is not what we wanted
-           for negative numbers (Python's mod semantics) */
-        timet -= 1;
-        us += 1000000;
-    }
-    /* If timestamp is less than one microsecond smaller than a
-     * full second, round up. Otherwise, ValueErrors are raised
-     * for some floats. */
-    if (us == 1000000) {
-        timet += 1;
-        us = 0;
-    }
-    return datetime_from_timet_and_us(cls, f, timet, us, tzinfo);
-}
-
-/* Internal helper.
- * Build most accurate possible datetime for current time.  Pass localtime or
- * gmtime for f as appropriate.
- */
-static PyObject *
-datetime_best_possible(PyObject *cls, TM_FUNC f, PyObject *tzinfo)
-{
-#ifdef HAVE_GETTIMEOFDAY
-    struct timeval t;
-
-#ifdef GETTIMEOFDAY_NO_TZ
-    gettimeofday(&t);
-#else
-    gettimeofday(&t, (struct timezone *)NULL);
-#endif
-    return datetime_from_timet_and_us(cls, f, t.tv_sec, (int)t.tv_usec,
-                                      tzinfo);
-
-#else   /* ! HAVE_GETTIMEOFDAY */
-    /* No flavor of gettimeofday exists on this platform.  Python's
-     * time.time() does a lot of other platform tricks to get the
-     * best time it can on the platform, and we're not going to do
-     * better than that (if we could, the better code would belong
-     * in time.time()!)  We're limited by the precision of a double,
-     * though.
-     */
-    PyObject *time;
-    double dtime;
-
-    time = time_time();
-    if (time == NULL)
-        return NULL;
-    dtime = PyFloat_AsDouble(time);
-    Py_DECREF(time);
-    if (dtime == -1.0 && PyErr_Occurred())
-        return NULL;
-    return datetime_from_timestamp(cls, f, dtime, tzinfo);
-#endif  /* ! HAVE_GETTIMEOFDAY */
-}
-
-/* Return best possible local time -- this isn't constrained by the
- * precision of a timestamp.
- */
-static PyObject *
-datetime_now(PyObject *cls, PyObject *args, PyObject *kw)
-{
-    PyObject *self;
-    PyObject *tzinfo = Py_None;
-    static char *keywords[] = {"tz", NULL};
-
-    if (! PyArg_ParseTupleAndKeywords(args, kw, "|O:now", keywords,
-                                      &tzinfo))
-        return NULL;
-    if (check_tzinfo_subclass(tzinfo) < 0)
-        return NULL;
-
-    self = datetime_best_possible(cls,
-                                  tzinfo == Py_None ? localtime : gmtime,
-                                  tzinfo);
-    if (self != NULL && tzinfo != Py_None) {
-        /* Convert UTC to tzinfo's zone. */
-        PyObject *temp = self;
-        self = PyObject_CallMethod(tzinfo, "fromutc", "O", self);
-        Py_DECREF(temp);
-    }
-    return self;
-}
-
-/* Return best possible UTC time -- this isn't constrained by the
- * precision of a timestamp.
- */
-static PyObject *
-datetime_utcnow(PyObject *cls, PyObject *dummy)
-{
-    return datetime_best_possible(cls, gmtime, Py_None);
-}
-
-/* Return new local datetime from timestamp (Python timestamp -- a double). */
-static PyObject *
-datetime_fromtimestamp(PyObject *cls, PyObject *args, PyObject *kw)
-{
-    PyObject *self;
-    double timestamp;
-    PyObject *tzinfo = Py_None;
-    static char *keywords[] = {"timestamp", "tz", NULL};
-
-    if (! PyArg_ParseTupleAndKeywords(args, kw, "d|O:fromtimestamp",
-                                      keywords, &timestamp, &tzinfo))
-        return NULL;
-    if (check_tzinfo_subclass(tzinfo) < 0)
-        return NULL;
-
-    self = datetime_from_timestamp(cls,
-                                   tzinfo == Py_None ? localtime : gmtime,
-                                   timestamp,
-                                   tzinfo);
-    if (self != NULL && tzinfo != Py_None) {
-        /* Convert UTC to tzinfo's zone. */
-        PyObject *temp = self;
-        self = PyObject_CallMethod(tzinfo, "fromutc", "O", self);
-        Py_DECREF(temp);
-    }
-    return self;
-}
-
-/* Return new UTC datetime from timestamp (Python timestamp -- a double). */
-static PyObject *
-datetime_utcfromtimestamp(PyObject *cls, PyObject *args)
-{
-    double timestamp;
-    PyObject *result = NULL;
-
-    if (PyArg_ParseTuple(args, "d:utcfromtimestamp", &timestamp))
-        result = datetime_from_timestamp(cls, gmtime, timestamp,
-                                         Py_None);
-    return result;
-}
-
-/* Return new datetime from time.strptime(). */
-static PyObject *
-datetime_strptime(PyObject *cls, PyObject *args)
-{
-    static PyObject *module = NULL;
-    PyObject *result = NULL, *obj, *st = NULL, *frac = NULL;
-    const char *string, *format;
-
-    if (!PyArg_ParseTuple(args, "ss:strptime", &string, &format))
-        return NULL;
-
-    if (module == NULL &&
-        (module = PyImport_ImportModuleNoBlock("_strptime")) == NULL)
-        return NULL;
-
-    /* _strptime._strptime returns a two-element tuple.  The first
-       element is a time.struct_time object.  The second is the
-       microseconds (which are not defined for time.struct_time). */
-    obj = PyObject_CallMethod(module, "_strptime", "ss", string, format);
-    if (obj != NULL) {
-        int i, good_timetuple = 1;
-        long int ia[7];
-        if (PySequence_Check(obj) && PySequence_Size(obj) == 2) {
-            st = PySequence_GetItem(obj, 0);
-            frac = PySequence_GetItem(obj, 1);
-            if (st == NULL || frac == NULL)
-                good_timetuple = 0;
-            /* copy y/m/d/h/m/s values out of the
-               time.struct_time */
-            if (good_timetuple &&
-                PySequence_Check(st) &&
-                PySequence_Size(st) >= 6) {
-                for (i=0; i < 6; i++) {
-                    PyObject *p = PySequence_GetItem(st, i);
-                    if (p == NULL) {
-                        good_timetuple = 0;
-                        break;
-                    }
-                    if (PyInt_Check(p))
-                        ia[i] = PyInt_AsLong(p);
-                    else
-                        good_timetuple = 0;
-                    Py_DECREF(p);
-                }
-            }
-            else
-                good_timetuple = 0;
-            /* follow that up with a little dose of microseconds */
-            if (good_timetuple && PyInt_Check(frac))
-                ia[6] = PyInt_AsLong(frac);
-            else
-                good_timetuple = 0;
-        }
-        else
-            good_timetuple = 0;
-        if (good_timetuple)
-            result = PyObject_CallFunction(cls, "iiiiiii",
-                                           ia[0], ia[1], ia[2],
-                                           ia[3], ia[4], ia[5],
-                                           ia[6]);
-        else
-            PyErr_SetString(PyExc_ValueError,
-                "unexpected value from _strptime._strptime");
-    }
-    Py_XDECREF(obj);
-    Py_XDECREF(st);
-    Py_XDECREF(frac);
-    return result;
-}
-
-/* Return new datetime from date/datetime and time arguments. */
-static PyObject *
-datetime_combine(PyObject *cls, PyObject *args, PyObject *kw)
-{
-    static char *keywords[] = {"date", "time", NULL};
-    PyObject *date;
-    PyObject *time;
-    PyObject *result = NULL;
-
-    if (PyArg_ParseTupleAndKeywords(args, kw, "O!O!:combine", keywords,
-                                    &PyDateTime_DateType, &date,
-                                    &PyDateTime_TimeType, &time)) {
-        PyObject *tzinfo = Py_None;
-
-        if (HASTZINFO(time))
-            tzinfo = ((PyDateTime_Time *)time)->tzinfo;
-        result = PyObject_CallFunction(cls, "iiiiiiiO",
-                                        GET_YEAR(date),
-                                        GET_MONTH(date),
-                                        GET_DAY(date),
-                                        TIME_GET_HOUR(time),
-                                        TIME_GET_MINUTE(time),
-                                        TIME_GET_SECOND(time),
-                                        TIME_GET_MICROSECOND(time),
-                                        tzinfo);
-    }
-    return result;
-}
-
-/*
- * Destructor.
- */
-
-static void
-datetime_dealloc(PyDateTime_DateTime *self)
-{
-    if (HASTZINFO(self)) {
-        Py_XDECREF(self->tzinfo);
-    }
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-/*
- * Indirect access to tzinfo methods.
- */
-
-/* These are all METH_NOARGS, so don't need to check the arglist. */
-static PyObject *
-datetime_utcoffset(PyDateTime_DateTime *self, PyObject *unused) {
-    return offset_as_timedelta(HASTZINFO(self) ? self->tzinfo : Py_None,
-                               "utcoffset", (PyObject *)self);
-}
-
-static PyObject *
-datetime_dst(PyDateTime_DateTime *self, PyObject *unused) {
-    return offset_as_timedelta(HASTZINFO(self) ? self->tzinfo : Py_None,
-                               "dst", (PyObject *)self);
-}
-
-static PyObject *
-datetime_tzname(PyDateTime_DateTime *self, PyObject *unused) {
-    return call_tzname(HASTZINFO(self) ? self->tzinfo : Py_None,
-                       (PyObject *)self);
-}
-
-/*
- * datetime arithmetic.
- */
-
-/* factor must be 1 (to add) or -1 (to subtract).  The result inherits
- * the tzinfo state of date.
- */
-static PyObject *
-add_datetime_timedelta(PyDateTime_DateTime *date, PyDateTime_Delta *delta,
-                       int factor)
-{
-    /* Note that the C-level additions can't overflow, because of
-     * invariant bounds on the member values.
-     */
-    int year = GET_YEAR(date);
-    int month = GET_MONTH(date);
-    int day = GET_DAY(date) + GET_TD_DAYS(delta) * factor;
-    int hour = DATE_GET_HOUR(date);
-    int minute = DATE_GET_MINUTE(date);
-    int second = DATE_GET_SECOND(date) + GET_TD_SECONDS(delta) * factor;
-    int microsecond = DATE_GET_MICROSECOND(date) +
-                      GET_TD_MICROSECONDS(delta) * factor;
-
-    assert(factor == 1 || factor == -1);
-    if (normalize_datetime(&year, &month, &day,
-                           &hour, &minute, &second, &microsecond) < 0)
-        return NULL;
-    else
-        return new_datetime(year, month, day,
-                            hour, minute, second, microsecond,
-                            HASTZINFO(date) ? date->tzinfo : Py_None);
-}
-
-static PyObject *
-datetime_add(PyObject *left, PyObject *right)
-{
-    if (PyDateTime_Check(left)) {
-        /* datetime + ??? */
-        if (PyDelta_Check(right))
-            /* datetime + delta */
-            return add_datetime_timedelta(
-                            (PyDateTime_DateTime *)left,
-                            (PyDateTime_Delta *)right,
-                            1);
-    }
-    else if (PyDelta_Check(left)) {
-        /* delta + datetime */
-        return add_datetime_timedelta((PyDateTime_DateTime *) right,
-                                      (PyDateTime_Delta *) left,
-                                      1);
-    }
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-}
-
-static PyObject *
-datetime_subtract(PyObject *left, PyObject *right)
-{
-    PyObject *result = Py_NotImplemented;
-
-    if (PyDateTime_Check(left)) {
-        /* datetime - ??? */
-        if (PyDateTime_Check(right)) {
-            /* datetime - datetime */
-            naivety n1, n2;
-            int offset1, offset2;
-            int delta_d, delta_s, delta_us;
-
-            if (classify_two_utcoffsets(left, &offset1, &n1, left,
-                                        right, &offset2, &n2,
-                                        right) < 0)
-                return NULL;
-            assert(n1 != OFFSET_UNKNOWN && n2 != OFFSET_UNKNOWN);
-            if (n1 != n2) {
-                PyErr_SetString(PyExc_TypeError,
-                    "can't subtract offset-naive and "
-                    "offset-aware datetimes");
-                return NULL;
-            }
-            delta_d = ymd_to_ord(GET_YEAR(left),
-                                 GET_MONTH(left),
-                                 GET_DAY(left)) -
-                      ymd_to_ord(GET_YEAR(right),
-                                 GET_MONTH(right),
-                                 GET_DAY(right));
-            /* These can't overflow, since the values are
-             * normalized.  At most this gives the number of
-             * seconds in one day.
-             */
-            delta_s = (DATE_GET_HOUR(left) -
-                       DATE_GET_HOUR(right)) * 3600 +
-                      (DATE_GET_MINUTE(left) -
-                       DATE_GET_MINUTE(right)) * 60 +
-                      (DATE_GET_SECOND(left) -
-                       DATE_GET_SECOND(right));
-            delta_us = DATE_GET_MICROSECOND(left) -
-                       DATE_GET_MICROSECOND(right);
-            /* (left - offset1) - (right - offset2) =
-             * (left - right) + (offset2 - offset1)
-             */
-            delta_s += (offset2 - offset1) * 60;
-            result = new_delta(delta_d, delta_s, delta_us, 1);
-        }
-        else if (PyDelta_Check(right)) {
-            /* datetime - delta */
-            result = add_datetime_timedelta(
-                            (PyDateTime_DateTime *)left,
-                            (PyDateTime_Delta *)right,
-                            -1);
-        }
-    }
-
-    if (result == Py_NotImplemented)
-        Py_INCREF(result);
-    return result;
-}
-
-/* Various ways to turn a datetime into a string. */
-
-static PyObject *
-datetime_repr(PyDateTime_DateTime *self)
-{
-    char buffer[1000];
-    const char *type_name = Py_TYPE(self)->tp_name;
-    PyObject *baserepr;
-
-    if (DATE_GET_MICROSECOND(self)) {
-        PyOS_snprintf(buffer, sizeof(buffer),
-                      "%s(%d, %d, %d, %d, %d, %d, %d)",
-                      type_name,
-                      GET_YEAR(self), GET_MONTH(self), GET_DAY(self),
-                      DATE_GET_HOUR(self), DATE_GET_MINUTE(self),
-                      DATE_GET_SECOND(self),
-                      DATE_GET_MICROSECOND(self));
-    }
-    else if (DATE_GET_SECOND(self)) {
-        PyOS_snprintf(buffer, sizeof(buffer),
-                      "%s(%d, %d, %d, %d, %d, %d)",
-                      type_name,
-                      GET_YEAR(self), GET_MONTH(self), GET_DAY(self),
-                      DATE_GET_HOUR(self), DATE_GET_MINUTE(self),
-                      DATE_GET_SECOND(self));
-    }
-    else {
-        PyOS_snprintf(buffer, sizeof(buffer),
-                      "%s(%d, %d, %d, %d, %d)",
-                      type_name,
-                      GET_YEAR(self), GET_MONTH(self), GET_DAY(self),
-                      DATE_GET_HOUR(self), DATE_GET_MINUTE(self));
-    }
-    baserepr = PyString_FromString(buffer);
-    if (baserepr == NULL || ! HASTZINFO(self))
-        return baserepr;
-    return append_keyword_tzinfo(baserepr, self->tzinfo);
-}
-
-static PyObject *
-datetime_str(PyDateTime_DateTime *self)
-{
-    return PyObject_CallMethod((PyObject *)self, "isoformat", "(s)", " ");
-}
-
-static PyObject *
-datetime_isoformat(PyDateTime_DateTime *self, PyObject *args, PyObject *kw)
-{
-    char sep = 'T';
-    static char *keywords[] = {"sep", NULL};
-    char buffer[100];
-    char *cp;
-    PyObject *result;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "|c:isoformat", keywords,
-                                     &sep))
-        return NULL;
-    cp = isoformat_date((PyDateTime_Date *)self, buffer, sizeof(buffer));
-    assert(cp != NULL);
-    *cp++ = sep;
-    cp = isoformat_time(self, cp, sizeof(buffer) - (cp - buffer));
-    result = PyString_FromStringAndSize(buffer, cp - buffer);
-    if (result == NULL || ! HASTZINFO(self))
-        return result;
-
-    /* We need to append the UTC offset. */
-    if (format_utcoffset(buffer, sizeof(buffer), ":", self->tzinfo,
-                         (PyObject *)self) < 0) {
-        Py_DECREF(result);
-        return NULL;
-    }
-    PyString_ConcatAndDel(&result, PyString_FromString(buffer));
-    return result;
-}
-
-static PyObject *
-datetime_ctime(PyDateTime_DateTime *self)
-{
-    return format_ctime((PyDateTime_Date *)self,
-                        DATE_GET_HOUR(self),
-                        DATE_GET_MINUTE(self),
-                        DATE_GET_SECOND(self));
-}
-
-/* Miscellaneous methods. */
-
-/* This is more natural as a tp_compare, but doesn't work then:  for whatever
- * reason, Python's try_3way_compare ignores tp_compare unless
- * PyInstance_Check returns true, but these aren't old-style classes.
- */
-static PyObject *
-datetime_richcompare(PyDateTime_DateTime *self, PyObject *other, int op)
-{
-    int diff;
-    naivety n1, n2;
-    int offset1, offset2;
-
-    if (! PyDateTime_Check(other)) {
-        /* If other has a "timetuple" attr, that's an advertised
-         * hook for other classes to ask to get comparison control.
-         * However, date instances have a timetuple attr, and we
-         * don't want to allow that comparison.  Because datetime
-         * is a subclass of date, when mixing date and datetime
-         * in a comparison, Python gives datetime the first shot
-         * (it's the more specific subtype).  So we can stop that
-         * combination here reliably.
-         */
-        if (PyObject_HasAttrString(other, "timetuple") &&
-            ! PyDate_Check(other)) {
-            /* A hook for other kinds of datetime objects. */
-            Py_INCREF(Py_NotImplemented);
-            return Py_NotImplemented;
-        }
-        if (op == Py_EQ || op == Py_NE) {
-            PyObject *result = op == Py_EQ ? Py_False : Py_True;
-            Py_INCREF(result);
-            return result;
-        }
-        /* Stop this from falling back to address comparison. */
-        return cmperror((PyObject *)self, other);
-    }
-
-    if (classify_two_utcoffsets((PyObject *)self, &offset1, &n1,
-                                (PyObject *)self,
-                                 other, &offset2, &n2,
-                                 other) < 0)
-        return NULL;
-    assert(n1 != OFFSET_UNKNOWN && n2 != OFFSET_UNKNOWN);
-    /* If they're both naive, or both aware and have the same offsets,
-     * we get off cheap.  Note that if they're both naive, offset1 ==
-     * offset2 == 0 at this point.
-     */
-    if (n1 == n2 && offset1 == offset2) {
-        diff = memcmp(self->data, ((PyDateTime_DateTime *)other)->data,
-                      _PyDateTime_DATETIME_DATASIZE);
-        return diff_to_bool(diff, op);
-    }
-
-    if (n1 == OFFSET_AWARE && n2 == OFFSET_AWARE) {
-        PyDateTime_Delta *delta;
-
-        assert(offset1 != offset2);             /* else last "if" handled it */
-        delta = (PyDateTime_Delta *)datetime_subtract((PyObject *)self,
-                                                       other);
-        if (delta == NULL)
-            return NULL;
-        diff = GET_TD_DAYS(delta);
-        if (diff == 0)
-            diff = GET_TD_SECONDS(delta) |
-                   GET_TD_MICROSECONDS(delta);
-        Py_DECREF(delta);
-        return diff_to_bool(diff, op);
-    }
-
-    assert(n1 != n2);
-    PyErr_SetString(PyExc_TypeError,
-                    "can't compare offset-naive and "
-                    "offset-aware datetimes");
-    return NULL;
-}
-
-static long
-datetime_hash(PyDateTime_DateTime *self)
-{
-    if (self->hashcode == -1) {
-        naivety n;
-        int offset;
-        PyObject *temp;
-
-        n = classify_utcoffset((PyObject *)self, (PyObject *)self,
-                               &offset);
-        assert(n != OFFSET_UNKNOWN);
-        if (n == OFFSET_ERROR)
-            return -1;
-
-        /* Reduce this to a hash of another object. */
-        if (n == OFFSET_NAIVE)
-            temp = PyString_FromStringAndSize(
-                            (char *)self->data,
-                            _PyDateTime_DATETIME_DATASIZE);
-        else {
-            int days;
-            int seconds;
-
-            assert(n == OFFSET_AWARE);
-            assert(HASTZINFO(self));
-            days = ymd_to_ord(GET_YEAR(self),
-                              GET_MONTH(self),
-                              GET_DAY(self));
-            seconds = DATE_GET_HOUR(self) * 3600 +
-                      (DATE_GET_MINUTE(self) - offset) * 60 +
-                      DATE_GET_SECOND(self);
-            temp = new_delta(days,
-                             seconds,
-                             DATE_GET_MICROSECOND(self),
-                             1);
-        }
-        if (temp != NULL) {
-            self->hashcode = PyObject_Hash(temp);
-            Py_DECREF(temp);
-        }
-    }
-    return self->hashcode;
-}
-
-static PyObject *
-datetime_replace(PyDateTime_DateTime *self, PyObject *args, PyObject *kw)
-{
-    PyObject *clone;
-    PyObject *tuple;
-    int y = GET_YEAR(self);
-    int m = GET_MONTH(self);
-    int d = GET_DAY(self);
-    int hh = DATE_GET_HOUR(self);
-    int mm = DATE_GET_MINUTE(self);
-    int ss = DATE_GET_SECOND(self);
-    int us = DATE_GET_MICROSECOND(self);
-    PyObject *tzinfo = HASTZINFO(self) ? self->tzinfo : Py_None;
-
-    if (! PyArg_ParseTupleAndKeywords(args, kw, "|iiiiiiiO:replace",
-                                      datetime_kws,
-                                      &y, &m, &d, &hh, &mm, &ss, &us,
-                                      &tzinfo))
-        return NULL;
-    tuple = Py_BuildValue("iiiiiiiO", y, m, d, hh, mm, ss, us, tzinfo);
-    if (tuple == NULL)
-        return NULL;
-    clone = datetime_new(Py_TYPE(self), tuple, NULL);
-    Py_DECREF(tuple);
-    return clone;
-}
-
-static PyObject *
-datetime_astimezone(PyDateTime_DateTime *self, PyObject *args, PyObject *kw)
-{
-    int y, m, d, hh, mm, ss, us;
-    PyObject *result;
-    int offset, none;
-
-    PyObject *tzinfo;
-    static char *keywords[] = {"tz", NULL};
-
-    if (! PyArg_ParseTupleAndKeywords(args, kw, "O!:astimezone", keywords,
-                                      &PyDateTime_TZInfoType, &tzinfo))
-        return NULL;
-
-    if (!HASTZINFO(self) || self->tzinfo == Py_None)
-        goto NeedAware;
-
-    /* Conversion to self's own time zone is a NOP. */
-    if (self->tzinfo == tzinfo) {
-        Py_INCREF(self);
-        return (PyObject *)self;
-    }
-
-    /* Convert self to UTC. */
-    offset = call_utcoffset(self->tzinfo, (PyObject *)self, &none);
-    if (offset == -1 && PyErr_Occurred())
-        return NULL;
-    if (none)
-        goto NeedAware;
-
-    y = GET_YEAR(self);
-    m = GET_MONTH(self);
-    d = GET_DAY(self);
-    hh = DATE_GET_HOUR(self);
-    mm = DATE_GET_MINUTE(self);
-    ss = DATE_GET_SECOND(self);
-    us = DATE_GET_MICROSECOND(self);
-
-    mm -= offset;
-    if ((mm < 0 || mm >= 60) &&
-        normalize_datetime(&y, &m, &d, &hh, &mm, &ss, &us) < 0)
-        return NULL;
-
-    /* Attach new tzinfo and let fromutc() do the rest. */
-    result = new_datetime(y, m, d, hh, mm, ss, us, tzinfo);
-    if (result != NULL) {
-        PyObject *temp = result;
-
-        result = PyObject_CallMethod(tzinfo, "fromutc", "O", temp);
-        Py_DECREF(temp);
-    }
-    return result;
-
-NeedAware:
-    PyErr_SetString(PyExc_ValueError, "astimezone() cannot be applied to "
-                                      "a naive datetime");
-    return NULL;
-}
-
-static PyObject *
-datetime_timetuple(PyDateTime_DateTime *self)
-{
-    int dstflag = -1;
-
-    if (HASTZINFO(self) && self->tzinfo != Py_None) {
-        int none;
-
-        dstflag = call_dst(self->tzinfo, (PyObject *)self, &none);
-        if (dstflag == -1 && PyErr_Occurred())
-            return NULL;
-
-        if (none)
-            dstflag = -1;
-        else if (dstflag != 0)
-            dstflag = 1;
-
-    }
-    return build_struct_time(GET_YEAR(self),
-                             GET_MONTH(self),
-                             GET_DAY(self),
-                             DATE_GET_HOUR(self),
-                             DATE_GET_MINUTE(self),
-                             DATE_GET_SECOND(self),
-                             dstflag);
-}
-
-static PyObject *
-datetime_getdate(PyDateTime_DateTime *self)
-{
-    return new_date(GET_YEAR(self),
-                    GET_MONTH(self),
-                    GET_DAY(self));
-}
-
-static PyObject *
-datetime_gettime(PyDateTime_DateTime *self)
-{
-    return new_time(DATE_GET_HOUR(self),
-                    DATE_GET_MINUTE(self),
-                    DATE_GET_SECOND(self),
-                    DATE_GET_MICROSECOND(self),
-                    Py_None);
-}
-
-static PyObject *
-datetime_gettimetz(PyDateTime_DateTime *self)
-{
-    return new_time(DATE_GET_HOUR(self),
-                    DATE_GET_MINUTE(self),
-                    DATE_GET_SECOND(self),
-                    DATE_GET_MICROSECOND(self),
-                    HASTZINFO(self) ? self->tzinfo : Py_None);
-}
-
-static PyObject *
-datetime_utctimetuple(PyDateTime_DateTime *self)
-{
-    int y = GET_YEAR(self);
-    int m = GET_MONTH(self);
-    int d = GET_DAY(self);
-    int hh = DATE_GET_HOUR(self);
-    int mm = DATE_GET_MINUTE(self);
-    int ss = DATE_GET_SECOND(self);
-    int us = 0;         /* microseconds are ignored in a timetuple */
-    int offset = 0;
-
-    if (HASTZINFO(self) && self->tzinfo != Py_None) {
-        int none;
-
-        offset = call_utcoffset(self->tzinfo, (PyObject *)self, &none);
-        if (offset == -1 && PyErr_Occurred())
-            return NULL;
-    }
-    /* Even if offset is 0, don't call timetuple() -- tm_isdst should be
-     * 0 in a UTC timetuple regardless of what dst() says.
-     */
-    if (offset) {
-        /* Subtract offset minutes & normalize. */
-        int stat;
-
-        mm -= offset;
-        stat = normalize_datetime(&y, &m, &d, &hh, &mm, &ss, &us);
-        if (stat < 0) {
-            /* At the edges, it's possible we overflowed
-             * beyond MINYEAR or MAXYEAR.
-             */
-            if (PyErr_ExceptionMatches(PyExc_OverflowError))
-                PyErr_Clear();
-            else
-                return NULL;
-        }
-    }
-    return build_struct_time(y, m, d, hh, mm, ss, 0);
-}
-
-/* Pickle support, a simple use of __reduce__. */
-
-/* Let basestate be the non-tzinfo data string.
- * If tzinfo is None, this returns (basestate,), else (basestate, tzinfo).
- * So it's a tuple in any (non-error) case.
- * __getstate__ isn't exposed.
- */
-static PyObject *
-datetime_getstate(PyDateTime_DateTime *self)
-{
-    PyObject *basestate;
-    PyObject *result = NULL;
-
-    basestate = PyString_FromStringAndSize((char *)self->data,
-                                      _PyDateTime_DATETIME_DATASIZE);
-    if (basestate != NULL) {
-        if (! HASTZINFO(self) || self->tzinfo == Py_None)
-            result = PyTuple_Pack(1, basestate);
-        else
-            result = PyTuple_Pack(2, basestate, self->tzinfo);
-        Py_DECREF(basestate);
-    }
-    return result;
-}
-
-static PyObject *
-datetime_reduce(PyDateTime_DateTime *self, PyObject *arg)
-{
-    return Py_BuildValue("(ON)", Py_TYPE(self), datetime_getstate(self));
-}
-
-static PyMethodDef datetime_methods[] = {
-
-    /* Class methods: */
-
-    {"now",         (PyCFunction)datetime_now,
-     METH_VARARGS | METH_KEYWORDS | METH_CLASS,
-     PyDoc_STR("[tz] -> new datetime with tz's local day and time.")},
-
-    {"utcnow",         (PyCFunction)datetime_utcnow,
-     METH_NOARGS | METH_CLASS,
-     PyDoc_STR("Return a new datetime representing UTC day and time.")},
-
-    {"fromtimestamp", (PyCFunction)datetime_fromtimestamp,
-     METH_VARARGS | METH_KEYWORDS | METH_CLASS,
-     PyDoc_STR("timestamp[, tz] -> tz's local time from POSIX timestamp.")},
-
-    {"utcfromtimestamp", (PyCFunction)datetime_utcfromtimestamp,
-     METH_VARARGS | METH_CLASS,
-     PyDoc_STR("timestamp -> UTC datetime from a POSIX timestamp "
-               "(like time.time()).")},
-
-    {"strptime", (PyCFunction)datetime_strptime,
-     METH_VARARGS | METH_CLASS,
-     PyDoc_STR("string, format -> new datetime parsed from a string "
-               "(like time.strptime()).")},
-
-    {"combine", (PyCFunction)datetime_combine,
-     METH_VARARGS | METH_KEYWORDS | METH_CLASS,
-     PyDoc_STR("date, time -> datetime with same date and time fields")},
-
-    /* Instance methods: */
-
-    {"date",   (PyCFunction)datetime_getdate, METH_NOARGS,
-     PyDoc_STR("Return date object with same year, month and day.")},
-
-    {"time",   (PyCFunction)datetime_gettime, METH_NOARGS,
-     PyDoc_STR("Return time object with same time but with tzinfo=None.")},
-
-    {"timetz",   (PyCFunction)datetime_gettimetz, METH_NOARGS,
-     PyDoc_STR("Return time object with same time and tzinfo.")},
-
-    {"ctime",       (PyCFunction)datetime_ctime,        METH_NOARGS,
-     PyDoc_STR("Return ctime() style string.")},
-
-    {"timetuple",   (PyCFunction)datetime_timetuple, METH_NOARGS,
-     PyDoc_STR("Return time tuple, compatible with time.localtime().")},
-
-    {"utctimetuple",   (PyCFunction)datetime_utctimetuple, METH_NOARGS,
-     PyDoc_STR("Return UTC time tuple, compatible with time.localtime().")},
-
-    {"isoformat",   (PyCFunction)datetime_isoformat, METH_VARARGS | METH_KEYWORDS,
-     PyDoc_STR("[sep] -> string in ISO 8601 format, "
-               "YYYY-MM-DDTHH:MM:SS[.mmmmmm][+HH:MM].\n\n"
-               "sep is used to separate the year from the time, and "
-               "defaults to 'T'.")},
-
-    {"utcoffset",       (PyCFunction)datetime_utcoffset, METH_NOARGS,
-     PyDoc_STR("Return self.tzinfo.utcoffset(self).")},
-
-    {"tzname",          (PyCFunction)datetime_tzname,   METH_NOARGS,
-     PyDoc_STR("Return self.tzinfo.tzname(self).")},
-
-    {"dst",             (PyCFunction)datetime_dst, METH_NOARGS,
-     PyDoc_STR("Return self.tzinfo.dst(self).")},
-
-    {"replace",     (PyCFunction)datetime_replace,      METH_VARARGS | METH_KEYWORDS,
-     PyDoc_STR("Return datetime with new specified fields.")},
-
-    {"astimezone",  (PyCFunction)datetime_astimezone, METH_VARARGS | METH_KEYWORDS,
-     PyDoc_STR("tz -> convert to local time in new timezone tz\n")},
-
-    {"__reduce__", (PyCFunction)datetime_reduce,     METH_NOARGS,
-     PyDoc_STR("__reduce__() -> (cls, state)")},
-
-    {NULL,      NULL}
-};
-
-static char datetime_doc[] =
-PyDoc_STR("datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])\n\
-\n\
-The year, month and day arguments are required. tzinfo may be None, or an\n\
-instance of a tzinfo subclass. The remaining arguments may be ints or longs.\n");
-
-static PyNumberMethods datetime_as_number = {
-    datetime_add,                               /* nb_add */
-    datetime_subtract,                          /* nb_subtract */
-    0,                                          /* nb_multiply */
-    0,                                          /* nb_divide */
-    0,                                          /* nb_remainder */
-    0,                                          /* nb_divmod */
-    0,                                          /* nb_power */
-    0,                                          /* nb_negative */
-    0,                                          /* nb_positive */
-    0,                                          /* nb_absolute */
-    0,                                          /* nb_nonzero */
-};
-
-statichere PyTypeObject PyDateTime_DateTimeType = {
-    PyObject_HEAD_INIT(NULL)
-    0,                                          /* ob_size */
-    "datetime.datetime",                        /* tp_name */
-    sizeof(PyDateTime_DateTime),                /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    (destructor)datetime_dealloc,               /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)datetime_repr,                    /* tp_repr */
-    &datetime_as_number,                        /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    (hashfunc)datetime_hash,                    /* tp_hash */
-    0,                                          /* tp_call */
-    (reprfunc)datetime_str,                     /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
-    Py_TPFLAGS_BASETYPE,                        /* tp_flags */
-    datetime_doc,                               /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    (richcmpfunc)datetime_richcompare,          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    datetime_methods,                           /* tp_methods */
-    0,                                          /* tp_members */
-    datetime_getset,                            /* tp_getset */
-    &PyDateTime_DateType,                       /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    datetime_alloc,                             /* tp_alloc */
-    datetime_new,                               /* tp_new */
-    0,                                          /* tp_free */
-};
-
-/* ---------------------------------------------------------------------------
- * Module methods and initialization.
- */
-
-static PyMethodDef module_methods[] = {
-    {NULL, NULL}
-};
-
-/* C API.  Clients get at this via PyDateTime_IMPORT, defined in
- * datetime.h.
- */
-static PyDateTime_CAPI CAPI = {
-    &PyDateTime_DateType,
-    &PyDateTime_DateTimeType,
-    &PyDateTime_TimeType,
-    &PyDateTime_DeltaType,
-    &PyDateTime_TZInfoType,
-    new_date_ex,
-    new_datetime_ex,
-    new_time_ex,
-    new_delta_ex,
-    datetime_fromtimestamp,
-    date_fromtimestamp
-};
-
-
-PyMODINIT_FUNC
-initdatetime(void)
-{
-    PyObject *m;        /* a module object */
-    PyObject *d;        /* its dict */
-    PyObject *x;
-
-    m = Py_InitModule3("datetime", module_methods,
-                       "Fast implementation of the datetime type.");
-    if (m == NULL)
-        return;
-
-    if (PyType_Ready(&PyDateTime_DateType) < 0)
-        return;
-    if (PyType_Ready(&PyDateTime_DateTimeType) < 0)
-        return;
-    if (PyType_Ready(&PyDateTime_DeltaType) < 0)
-        return;
-    if (PyType_Ready(&PyDateTime_TimeType) < 0)
-        return;
-    if (PyType_Ready(&PyDateTime_TZInfoType) < 0)
-        return;
-
-    /* timedelta values */
-    d = PyDateTime_DeltaType.tp_dict;
-
-    x = new_delta(0, 0, 1, 0);
-    if (x == NULL || PyDict_SetItemString(d, "resolution", x) < 0)
-        return;
-    Py_DECREF(x);
-
-    x = new_delta(-MAX_DELTA_DAYS, 0, 0, 0);
-    if (x == NULL || PyDict_SetItemString(d, "min", x) < 0)
-        return;
-    Py_DECREF(x);
-
-    x = new_delta(MAX_DELTA_DAYS, 24*3600-1, 1000000-1, 0);
-    if (x == NULL || PyDict_SetItemString(d, "max", x) < 0)
-        return;
-    Py_DECREF(x);
-
-    /* date values */
-    d = PyDateTime_DateType.tp_dict;
-
-    x = new_date(1, 1, 1);
-    if (x == NULL || PyDict_SetItemString(d, "min", x) < 0)
-        return;
-    Py_DECREF(x);
-
-    x = new_date(MAXYEAR, 12, 31);
-    if (x == NULL || PyDict_SetItemString(d, "max", x) < 0)
-        return;
-    Py_DECREF(x);
-
-    x = new_delta(1, 0, 0, 0);
-    if (x == NULL || PyDict_SetItemString(d, "resolution", x) < 0)
-        return;
-    Py_DECREF(x);
-
-    /* time values */
-    d = PyDateTime_TimeType.tp_dict;
-
-    x = new_time(0, 0, 0, 0, Py_None);
-    if (x == NULL || PyDict_SetItemString(d, "min", x) < 0)
-        return;
-    Py_DECREF(x);
-
-    x = new_time(23, 59, 59, 999999, Py_None);
-    if (x == NULL || PyDict_SetItemString(d, "max", x) < 0)
-        return;
-    Py_DECREF(x);
-
-    x = new_delta(0, 0, 1, 0);
-    if (x == NULL || PyDict_SetItemString(d, "resolution", x) < 0)
-        return;
-    Py_DECREF(x);
-
-    /* datetime values */
-    d = PyDateTime_DateTimeType.tp_dict;
-
-    x = new_datetime(1, 1, 1, 0, 0, 0, 0, Py_None);
-    if (x == NULL || PyDict_SetItemString(d, "min", x) < 0)
-        return;
-    Py_DECREF(x);
-
-    x = new_datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999, Py_None);
-    if (x == NULL || PyDict_SetItemString(d, "max", x) < 0)
-        return;
-    Py_DECREF(x);
-
-    x = new_delta(0, 0, 1, 0);
-    if (x == NULL || PyDict_SetItemString(d, "resolution", x) < 0)
-        return;
-    Py_DECREF(x);
-
-    /* module initialization */
-    PyModule_AddIntConstant(m, "MINYEAR", MINYEAR);
-    PyModule_AddIntConstant(m, "MAXYEAR", MAXYEAR);
-
-    Py_INCREF(&PyDateTime_DateType);
-    PyModule_AddObject(m, "date", (PyObject *) &PyDateTime_DateType);
-
-    Py_INCREF(&PyDateTime_DateTimeType);
-    PyModule_AddObject(m, "datetime",
-                       (PyObject *)&PyDateTime_DateTimeType);
-
-    Py_INCREF(&PyDateTime_TimeType);
-    PyModule_AddObject(m, "time", (PyObject *) &PyDateTime_TimeType);
-
-    Py_INCREF(&PyDateTime_DeltaType);
-    PyModule_AddObject(m, "timedelta", (PyObject *) &PyDateTime_DeltaType);
-
-    Py_INCREF(&PyDateTime_TZInfoType);
-    PyModule_AddObject(m, "tzinfo", (PyObject *) &PyDateTime_TZInfoType);
-
-    x = PyCapsule_New(&CAPI, PyDateTime_CAPSULE_NAME, NULL);
-    if (x == NULL)
-        return;
-    PyModule_AddObject(m, "datetime_CAPI", x);
-
-    /* A 4-year cycle has an extra leap day over what we'd get from
-     * pasting together 4 single years.
-     */
-    assert(DI4Y == 4 * 365 + 1);
-    assert(DI4Y == days_before_year(4+1));
-
-    /* Similarly, a 400-year cycle has an extra leap day over what we'd
-     * get from pasting together 4 100-year cycles.
-     */
-    assert(DI400Y == 4 * DI100Y + 1);
-    assert(DI400Y == days_before_year(400+1));
-
-    /* OTOH, a 100-year cycle has one fewer leap day than we'd get from
-     * pasting together 25 4-year cycles.
-     */
-    assert(DI100Y == 25 * DI4Y - 1);
-    assert(DI100Y == days_before_year(100+1));
-
-    us_per_us = PyInt_FromLong(1);
-    us_per_ms = PyInt_FromLong(1000);
-    us_per_second = PyInt_FromLong(1000000);
-    us_per_minute = PyInt_FromLong(60000000);
-    seconds_per_day = PyInt_FromLong(24 * 3600);
-    if (us_per_us == NULL || us_per_ms == NULL || us_per_second == NULL ||
-        us_per_minute == NULL || seconds_per_day == NULL)
-        return;
-
-    /* The rest are too big for 32-bit ints, but even
-     * us_per_week fits in 40 bits, so doubles should be exact.
-     */
-    us_per_hour = PyLong_FromDouble(3600000000.0);
-    us_per_day = PyLong_FromDouble(86400000000.0);
-    us_per_week = PyLong_FromDouble(604800000000.0);
-    if (us_per_hour == NULL || us_per_day == NULL || us_per_week == NULL)
-        return;
-}
-
-/* ---------------------------------------------------------------------------
-Some time zone algebra.  For a datetime x, let
-    x.n = x stripped of its timezone -- its naive time.
-    x.o = x.utcoffset(), and assuming that doesn't raise an exception or
-      return None
-    x.d = x.dst(), and assuming that doesn't raise an exception or
-      return None
-    x.s = x's standard offset, x.o - x.d
-
-Now some derived rules, where k is a duration (timedelta).
-
-1. x.o = x.s + x.d
-   This follows from the definition of x.s.
-
-2. If x and y have the same tzinfo member, x.s = y.s.
-   This is actually a requirement, an assumption we need to make about
-   sane tzinfo classes.
-
-3. The naive UTC time corresponding to x is x.n - x.o.
-   This is again a requirement for a sane tzinfo class.
-
-4. (x+k).s = x.s
-   This follows from #2, and that datimetimetz+timedelta preserves tzinfo.
-
-5. (x+k).n = x.n + k
-   Again follows from how arithmetic is defined.
-
-Now we can explain tz.fromutc(x).  Let's assume it's an interesting case
-(meaning that the various tzinfo methods exist, and don't blow up or return
-None when called).
-
-The function wants to return a datetime y with timezone tz, equivalent to x.
-x is already in UTC.
-
-By #3, we want
-
-    y.n - y.o = x.n                             [1]
-
-The algorithm starts by attaching tz to x.n, and calling that y.  So
-x.n = y.n at the start.  Then it wants to add a duration k to y, so that [1]
-becomes true; in effect, we want to solve [2] for k:
-
-   (y+k).n - (y+k).o = x.n                      [2]
-
-By #1, this is the same as
-
-   (y+k).n - ((y+k).s + (y+k).d) = x.n          [3]
-
-By #5, (y+k).n = y.n + k, which equals x.n + k because x.n=y.n at the start.
-Substituting that into [3],
-
-   x.n + k - (y+k).s - (y+k).d = x.n; the x.n terms cancel, leaving
-   k - (y+k).s - (y+k).d = 0; rearranging,
-   k = (y+k).s - (y+k).d; by #4, (y+k).s == y.s, so
-   k = y.s - (y+k).d
-
-On the RHS, (y+k).d can't be computed directly, but y.s can be, and we
-approximate k by ignoring the (y+k).d term at first.  Note that k can't be
-very large, since all offset-returning methods return a duration of magnitude
-less than 24 hours.  For that reason, if y is firmly in std time, (y+k).d must
-be 0, so ignoring it has no consequence then.
-
-In any case, the new value is
-
-    z = y + y.s                                 [4]
-
-It's helpful to step back at look at [4] from a higher level:  it's simply
-mapping from UTC to tz's standard time.
-
-At this point, if
-
-    z.n - z.o = x.n                             [5]
-
-we have an equivalent time, and are almost done.  The insecurity here is
-at the start of daylight time.  Picture US Eastern for concreteness.  The wall
-time jumps from 1:59 to 3:00, and wall hours of the form 2:MM don't make good
-sense then.  The docs ask that an Eastern tzinfo class consider such a time to
-be EDT (because it's "after 2"), which is a redundant spelling of 1:MM EST
-on the day DST starts.  We want to return the 1:MM EST spelling because that's
-the only spelling that makes sense on the local wall clock.
-
-In fact, if [5] holds at this point, we do have the standard-time spelling,
-but that takes a bit of proof.  We first prove a stronger result.  What's the
-difference between the LHS and RHS of [5]?  Let
-
-    diff = x.n - (z.n - z.o)                    [6]
-
-Now
-    z.n =                       by [4]
-    (y + y.s).n =               by #5
-    y.n + y.s =                 since y.n = x.n
-    x.n + y.s =                 since z and y are have the same tzinfo member,
-                                    y.s = z.s by #2
-    x.n + z.s
-
-Plugging that back into [6] gives
-
-    diff =
-    x.n - ((x.n + z.s) - z.o) =     expanding
-    x.n - x.n - z.s + z.o =         cancelling
-    - z.s + z.o =                   by #2
-    z.d
-
-So diff = z.d.
-
-If [5] is true now, diff = 0, so z.d = 0 too, and we have the standard-time
-spelling we wanted in the endcase described above.  We're done.  Contrarily,
-if z.d = 0, then we have a UTC equivalent, and are also done.
-
-If [5] is not true now, diff = z.d != 0, and z.d is the offset we need to
-add to z (in effect, z is in tz's standard time, and we need to shift the
-local clock into tz's daylight time).
-
-Let
-
-    z' = z + z.d = z + diff                     [7]
-
-and we can again ask whether
-
-    z'.n - z'.o = x.n                           [8]
-
-If so, we're done.  If not, the tzinfo class is insane, according to the
-assumptions we've made.  This also requires a bit of proof.  As before, let's
-compute the difference between the LHS and RHS of [8] (and skipping some of
-the justifications for the kinds of substitutions we've done several times
-already):
-
-    diff' = x.n - (z'.n - z'.o) =           replacing z'.n via [7]
-        x.n  - (z.n + diff - z'.o) =    replacing diff via [6]
-        x.n - (z.n + x.n - (z.n - z.o) - z'.o) =
-        x.n - z.n - x.n + z.n - z.o + z'.o =    cancel x.n
-        - z.n + z.n - z.o + z'.o =              cancel z.n
-        - z.o + z'.o =                      #1 twice
-        -z.s - z.d + z'.s + z'.d =          z and z' have same tzinfo
-        z'.d - z.d
-
-So z' is UTC-equivalent to x iff z'.d = z.d at this point.  If they are equal,
-we've found the UTC-equivalent so are done.  In fact, we stop with [7] and
-return z', not bothering to compute z'.d.
-
-How could z.d and z'd differ?  z' = z + z.d [7], so merely moving z' by
-a dst() offset, and starting *from* a time already in DST (we know z.d != 0),
-would have to change the result dst() returns:  we start in DST, and moving
-a little further into it takes us out of DST.
-
-There isn't a sane case where this can happen.  The closest it gets is at
-the end of DST, where there's an hour in UTC with no spelling in a hybrid
-tzinfo class.  In US Eastern, that's 5:MM UTC = 0:MM EST = 1:MM EDT.  During
-that hour, on an Eastern clock 1:MM is taken as being in standard time (6:MM
-UTC) because the docs insist on that, but 0:MM is taken as being in daylight
-time (4:MM UTC).  There is no local time mapping to 5:MM UTC.  The local
-clock jumps from 1:59 back to 1:00 again, and repeats the 1:MM hour in
-standard time.  Since that's what the local clock *does*, we want to map both
-UTC hours 5:MM and 6:MM to 1:MM Eastern.  The result is ambiguous
-in local time, but so it goes -- it's the way the local clock works.
-
-When x = 5:MM UTC is the input to this algorithm, x.o=0, y.o=-5 and y.d=0,
-so z=0:MM.  z.d=60 (minutes) then, so [5] doesn't hold and we keep going.
-z' = z + z.d = 1:MM then, and z'.d=0, and z'.d - z.d = -60 != 0 so [8]
-(correctly) concludes that z' is not UTC-equivalent to x.
-
-Because we know z.d said z was in daylight time (else [5] would have held and
-we would have stopped then), and we know z.d != z'.d (else [8] would have held
-and we would have stopped then), and there are only 2 possible values dst() can
-return in Eastern, it follows that z'.d must be 0 (which it is in the example,
-but the reasoning doesn't depend on the example -- it depends on there being
-two possible dst() outcomes, one zero and the other non-zero).  Therefore
-z' must be in standard time, and is the spelling we want in this case.
-
-Note again that z' is not UTC-equivalent as far as the hybrid tzinfo class is
-concerned (because it takes z' as being in standard time rather than the
-daylight time we intend here), but returning it gives the real-life "local
-clock repeats an hour" behavior when mapping the "unspellable" UTC hour into
-tz.
-
-When the input is 6:MM, z=1:MM and z.d=0, and we stop at once, again with
-the 1:MM standard time spelling we want.
-
-So how can this break?  One of the assumptions must be violated.  Two
-possibilities:
-
-1) [2] effectively says that y.s is invariant across all y belong to a given
-   time zone.  This isn't true if, for political reasons or continental drift,
-   a region decides to change its base offset from UTC.
-
-2) There may be versions of "double daylight" time where the tail end of
-   the analysis gives up a step too early.  I haven't thought about that
-   enough to say.
-
-In any case, it's clear that the default fromutc() is strong enough to handle
-"almost all" time zones:  so long as the standard offset is invariant, it
-doesn't matter if daylight time transition points change from year to year, or
-if daylight time is skipped in some years; it doesn't matter how large or
-small dst() may get within its bounds; and it doesn't even matter if some
-perverse time zone returns a negative dst()).  So a breaking case must be
-pretty bizarre, and a tzinfo subclass can override fromutc() if it is.
---------------------------------------------------------------------------- */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/errnomodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/errnomodule.c
deleted file mode 100644
index a325389..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/errnomodule.c
+++ /dev/null
@@ -1,845 +0,0 @@
-
-/* Errno module
-
-    Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-*/
-
-#include "Python.h"
-
-/* Windows socket errors (WSA*)  */
-#ifdef MS_WINDOWS
-#include <windows.h>
-#endif
-
-/*
- * Pull in the system error definitions
- */
-
-static PyMethodDef errno_methods[] = {
-    {NULL,              NULL}
-};
-
-/* Helper function doing the dictionary inserting */
-
-static void
-_inscode(PyObject *d, PyObject *de, char *name, int code)
-{
-    PyObject *u = PyString_FromString(name);
-    PyObject *v = PyInt_FromLong((long) code);
-
-    /* Don't bother checking for errors; they'll be caught at the end
-     * of the module initialization function by the caller of
-     * initerrno().
-     */
-    if (u && v) {
-        /* insert in modules dict */
-        PyDict_SetItem(d, u, v);
-        /* insert in errorcode dict */
-        PyDict_SetItem(de, v, u);
-    }
-    Py_XDECREF(u);
-    Py_XDECREF(v);
-}
-
-PyDoc_STRVAR(errno__doc__,
-"This module makes available standard errno system symbols.\n\
-\n\
-The value of each symbol is the corresponding integer value,\n\
-e.g., on most systems, errno.ENOENT equals the integer 2.\n\
-\n\
-The dictionary errno.errorcode maps numeric codes to symbol names,\n\
-e.g., errno.errorcode[2] could be the string 'ENOENT'.\n\
-\n\
-Symbols that are not relevant to the underlying system are not defined.\n\
-\n\
-To map error codes to error messages, use the function os.strerror(),\n\
-e.g. os.strerror(2) could return 'No such file or directory'.");
-
-PyMODINIT_FUNC
-initerrno(void)
-{
-    PyObject *m, *d, *de;
-    m = Py_InitModule3("errno", errno_methods, errno__doc__);
-    if (m == NULL)
-        return;
-    d = PyModule_GetDict(m);
-    de = PyDict_New();
-    if (!d || !de || PyDict_SetItemString(d, "errorcode", de) < 0)
-        return;
-
-/* Macro so I don't have to edit each and every line below... */
-#define inscode(d, ds, de, name, code, comment) _inscode(d, de, name, code)
-
-    /*
-     * The names and comments are borrowed from linux/include/errno.h,
-     * which should be pretty all-inclusive
-     */
-
-#ifdef ENODEV
-    inscode(d, ds, de, "ENODEV", ENODEV, "No such device");
-#endif
-#ifdef ENOCSI
-    inscode(d, ds, de, "ENOCSI", ENOCSI, "No CSI structure available");
-#endif
-#ifdef EHOSTUNREACH
-    inscode(d, ds, de, "EHOSTUNREACH", EHOSTUNREACH, "No route to host");
-#else
-#ifdef WSAEHOSTUNREACH
-    inscode(d, ds, de, "EHOSTUNREACH", WSAEHOSTUNREACH, "No route to host");
-#endif
-#endif
-#ifdef ENOMSG
-    inscode(d, ds, de, "ENOMSG", ENOMSG, "No message of desired type");
-#endif
-#ifdef EUCLEAN
-    inscode(d, ds, de, "EUCLEAN", EUCLEAN, "Structure needs cleaning");
-#endif
-#ifdef EL2NSYNC
-    inscode(d, ds, de, "EL2NSYNC", EL2NSYNC, "Level 2 not synchronized");
-#endif
-#ifdef EL2HLT
-    inscode(d, ds, de, "EL2HLT", EL2HLT, "Level 2 halted");
-#endif
-#ifdef ENODATA
-    inscode(d, ds, de, "ENODATA", ENODATA, "No data available");
-#endif
-#ifdef ENOTBLK
-    inscode(d, ds, de, "ENOTBLK", ENOTBLK, "Block device required");
-#endif
-#ifdef ENOSYS
-    inscode(d, ds, de, "ENOSYS", ENOSYS, "Function not implemented");
-#endif
-#ifdef EPIPE
-    inscode(d, ds, de, "EPIPE", EPIPE, "Broken pipe");
-#endif
-#ifdef EINVAL
-    inscode(d, ds, de, "EINVAL", EINVAL, "Invalid argument");
-#else
-#ifdef WSAEINVAL
-    inscode(d, ds, de, "EINVAL", WSAEINVAL, "Invalid argument");
-#endif
-#endif
-#ifdef EOVERFLOW
-    inscode(d, ds, de, "EOVERFLOW", EOVERFLOW, "Value too large for defined data type");
-#endif
-#ifdef EADV
-    inscode(d, ds, de, "EADV", EADV, "Advertise error");
-#endif
-#ifdef EINTR
-    inscode(d, ds, de, "EINTR", EINTR, "Interrupted system call");
-#else
-#ifdef WSAEINTR
-    inscode(d, ds, de, "EINTR", WSAEINTR, "Interrupted system call");
-#endif
-#endif
-#ifdef EUSERS
-    inscode(d, ds, de, "EUSERS", EUSERS, "Too many users");
-#else
-#ifdef WSAEUSERS
-    inscode(d, ds, de, "EUSERS", WSAEUSERS, "Too many users");
-#endif
-#endif
-#ifdef ENOTEMPTY
-    inscode(d, ds, de, "ENOTEMPTY", ENOTEMPTY, "Directory not empty");
-#else
-#ifdef WSAENOTEMPTY
-    inscode(d, ds, de, "ENOTEMPTY", WSAENOTEMPTY, "Directory not empty");
-#endif
-#endif
-#ifdef ENOBUFS
-    inscode(d, ds, de, "ENOBUFS", ENOBUFS, "No buffer space available");
-#else
-#ifdef WSAENOBUFS
-    inscode(d, ds, de, "ENOBUFS", WSAENOBUFS, "No buffer space available");
-#endif
-#endif
-#ifdef EPROTO
-    inscode(d, ds, de, "EPROTO", EPROTO, "Protocol error");
-#endif
-#ifdef EREMOTE
-    inscode(d, ds, de, "EREMOTE", EREMOTE, "Object is remote");
-#else
-#ifdef WSAEREMOTE
-    inscode(d, ds, de, "EREMOTE", WSAEREMOTE, "Object is remote");
-#endif
-#endif
-#ifdef ENAVAIL
-    inscode(d, ds, de, "ENAVAIL", ENAVAIL, "No XENIX semaphores available");
-#endif
-#ifdef ECHILD
-    inscode(d, ds, de, "ECHILD", ECHILD, "No child processes");
-#endif
-#ifdef ELOOP
-    inscode(d, ds, de, "ELOOP", ELOOP, "Too many symbolic links encountered");
-#else
-#ifdef WSAELOOP
-    inscode(d, ds, de, "ELOOP", WSAELOOP, "Too many symbolic links encountered");
-#endif
-#endif
-#ifdef EXDEV
-    inscode(d, ds, de, "EXDEV", EXDEV, "Cross-device link");
-#endif
-#ifdef E2BIG
-    inscode(d, ds, de, "E2BIG", E2BIG, "Arg list too long");
-#endif
-#ifdef ESRCH
-    inscode(d, ds, de, "ESRCH", ESRCH, "No such process");
-#endif
-#ifdef EMSGSIZE
-    inscode(d, ds, de, "EMSGSIZE", EMSGSIZE, "Message too long");
-#else
-#ifdef WSAEMSGSIZE
-    inscode(d, ds, de, "EMSGSIZE", WSAEMSGSIZE, "Message too long");
-#endif
-#endif
-#ifdef EAFNOSUPPORT
-    inscode(d, ds, de, "EAFNOSUPPORT", EAFNOSUPPORT, "Address family not supported by protocol");
-#else
-#ifdef WSAEAFNOSUPPORT
-    inscode(d, ds, de, "EAFNOSUPPORT", WSAEAFNOSUPPORT, "Address family not supported by protocol");
-#endif
-#endif
-#ifdef EBADR
-    inscode(d, ds, de, "EBADR", EBADR, "Invalid request descriptor");
-#endif
-#ifdef EHOSTDOWN
-    inscode(d, ds, de, "EHOSTDOWN", EHOSTDOWN, "Host is down");
-#else
-#ifdef WSAEHOSTDOWN
-    inscode(d, ds, de, "EHOSTDOWN", WSAEHOSTDOWN, "Host is down");
-#endif
-#endif
-#ifdef EPFNOSUPPORT
-    inscode(d, ds, de, "EPFNOSUPPORT", EPFNOSUPPORT, "Protocol family not supported");
-#else
-#ifdef WSAEPFNOSUPPORT
-    inscode(d, ds, de, "EPFNOSUPPORT", WSAEPFNOSUPPORT, "Protocol family not supported");
-#endif
-#endif
-#ifdef ENOPROTOOPT
-    inscode(d, ds, de, "ENOPROTOOPT", ENOPROTOOPT, "Protocol not available");
-#else
-#ifdef WSAENOPROTOOPT
-    inscode(d, ds, de, "ENOPROTOOPT", WSAENOPROTOOPT, "Protocol not available");
-#endif
-#endif
-#ifdef EBUSY
-    inscode(d, ds, de, "EBUSY", EBUSY, "Device or resource busy");
-#endif
-#ifdef EWOULDBLOCK
-    inscode(d, ds, de, "EWOULDBLOCK", EWOULDBLOCK, "Operation would block");
-#else
-#ifdef WSAEWOULDBLOCK
-    inscode(d, ds, de, "EWOULDBLOCK", WSAEWOULDBLOCK, "Operation would block");
-#endif
-#endif
-#ifdef EBADFD
-    inscode(d, ds, de, "EBADFD", EBADFD, "File descriptor in bad state");
-#endif
-#ifdef EDOTDOT
-    inscode(d, ds, de, "EDOTDOT", EDOTDOT, "RFS specific error");
-#endif
-#ifdef EISCONN
-    inscode(d, ds, de, "EISCONN", EISCONN, "Transport endpoint is already connected");
-#else
-#ifdef WSAEISCONN
-    inscode(d, ds, de, "EISCONN", WSAEISCONN, "Transport endpoint is already connected");
-#endif
-#endif
-#ifdef ENOANO
-    inscode(d, ds, de, "ENOANO", ENOANO, "No anode");
-#endif
-#ifdef ESHUTDOWN
-    inscode(d, ds, de, "ESHUTDOWN", ESHUTDOWN, "Cannot send after transport endpoint shutdown");
-#else
-#ifdef WSAESHUTDOWN
-    inscode(d, ds, de, "ESHUTDOWN", WSAESHUTDOWN, "Cannot send after transport endpoint shutdown");
-#endif
-#endif
-#ifdef ECHRNG
-    inscode(d, ds, de, "ECHRNG", ECHRNG, "Channel number out of range");
-#endif
-#ifdef ELIBBAD
-    inscode(d, ds, de, "ELIBBAD", ELIBBAD, "Accessing a corrupted shared library");
-#endif
-#ifdef ENONET
-    inscode(d, ds, de, "ENONET", ENONET, "Machine is not on the network");
-#endif
-#ifdef EBADE
-    inscode(d, ds, de, "EBADE", EBADE, "Invalid exchange");
-#endif
-#ifdef EBADF
-    inscode(d, ds, de, "EBADF", EBADF, "Bad file number");
-#else
-#ifdef WSAEBADF
-    inscode(d, ds, de, "EBADF", WSAEBADF, "Bad file number");
-#endif
-#endif
-#ifdef EMULTIHOP
-    inscode(d, ds, de, "EMULTIHOP", EMULTIHOP, "Multihop attempted");
-#endif
-#ifdef EIO
-    inscode(d, ds, de, "EIO", EIO, "I/O error");
-#endif
-#ifdef EUNATCH
-    inscode(d, ds, de, "EUNATCH", EUNATCH, "Protocol driver not attached");
-#endif
-#ifdef EPROTOTYPE
-    inscode(d, ds, de, "EPROTOTYPE", EPROTOTYPE, "Protocol wrong type for socket");
-#else
-#ifdef WSAEPROTOTYPE
-    inscode(d, ds, de, "EPROTOTYPE", WSAEPROTOTYPE, "Protocol wrong type for socket");
-#endif
-#endif
-#ifdef ENOSPC
-    inscode(d, ds, de, "ENOSPC", ENOSPC, "No space left on device");
-#endif
-#ifdef ENOEXEC
-    inscode(d, ds, de, "ENOEXEC", ENOEXEC, "Exec format error");
-#endif
-#ifdef EALREADY
-    inscode(d, ds, de, "EALREADY", EALREADY, "Operation already in progress");
-#else
-#ifdef WSAEALREADY
-    inscode(d, ds, de, "EALREADY", WSAEALREADY, "Operation already in progress");
-#endif
-#endif
-#ifdef ENETDOWN
-    inscode(d, ds, de, "ENETDOWN", ENETDOWN, "Network is down");
-#else
-#ifdef WSAENETDOWN
-    inscode(d, ds, de, "ENETDOWN", WSAENETDOWN, "Network is down");
-#endif
-#endif
-#ifdef ENOTNAM
-    inscode(d, ds, de, "ENOTNAM", ENOTNAM, "Not a XENIX named type file");
-#endif
-#ifdef EACCES
-    inscode(d, ds, de, "EACCES", EACCES, "Permission denied");
-#else
-#ifdef WSAEACCES
-    inscode(d, ds, de, "EACCES", WSAEACCES, "Permission denied");
-#endif
-#endif
-#ifdef ELNRNG
-    inscode(d, ds, de, "ELNRNG", ELNRNG, "Link number out of range");
-#endif
-#ifdef EILSEQ
-    inscode(d, ds, de, "EILSEQ", EILSEQ, "Illegal byte sequence");
-#endif
-#ifdef ENOTDIR
-    inscode(d, ds, de, "ENOTDIR", ENOTDIR, "Not a directory");
-#endif
-#ifdef ENOTUNIQ
-    inscode(d, ds, de, "ENOTUNIQ", ENOTUNIQ, "Name not unique on network");
-#endif
-#ifdef EPERM
-    inscode(d, ds, de, "EPERM", EPERM, "Operation not permitted");
-#endif
-#ifdef EDOM
-    inscode(d, ds, de, "EDOM", EDOM, "Math argument out of domain of func");
-#endif
-#ifdef EXFULL
-    inscode(d, ds, de, "EXFULL", EXFULL, "Exchange full");
-#endif
-#ifdef ECONNREFUSED
-    inscode(d, ds, de, "ECONNREFUSED", ECONNREFUSED, "Connection refused");
-#else
-#ifdef WSAECONNREFUSED
-    inscode(d, ds, de, "ECONNREFUSED", WSAECONNREFUSED, "Connection refused");
-#endif
-#endif
-#ifdef EISDIR
-    inscode(d, ds, de, "EISDIR", EISDIR, "Is a directory");
-#endif
-#ifdef EPROTONOSUPPORT
-    inscode(d, ds, de, "EPROTONOSUPPORT", EPROTONOSUPPORT, "Protocol not supported");
-#else
-#ifdef WSAEPROTONOSUPPORT
-    inscode(d, ds, de, "EPROTONOSUPPORT", WSAEPROTONOSUPPORT, "Protocol not supported");
-#endif
-#endif
-#ifdef EROFS
-    inscode(d, ds, de, "EROFS", EROFS, "Read-only file system");
-#endif
-#ifdef EADDRNOTAVAIL
-    inscode(d, ds, de, "EADDRNOTAVAIL", EADDRNOTAVAIL, "Cannot assign requested address");
-#else
-#ifdef WSAEADDRNOTAVAIL
-    inscode(d, ds, de, "EADDRNOTAVAIL", WSAEADDRNOTAVAIL, "Cannot assign requested address");
-#endif
-#endif
-#ifdef EIDRM
-    inscode(d, ds, de, "EIDRM", EIDRM, "Identifier removed");
-#endif
-#ifdef ECOMM
-    inscode(d, ds, de, "ECOMM", ECOMM, "Communication error on send");
-#endif
-#ifdef ESRMNT
-    inscode(d, ds, de, "ESRMNT", ESRMNT, "Srmount error");
-#endif
-#ifdef EREMOTEIO
-    inscode(d, ds, de, "EREMOTEIO", EREMOTEIO, "Remote I/O error");
-#endif
-#ifdef EL3RST
-    inscode(d, ds, de, "EL3RST", EL3RST, "Level 3 reset");
-#endif
-#ifdef EBADMSG
-    inscode(d, ds, de, "EBADMSG", EBADMSG, "Not a data message");
-#endif
-#ifdef ENFILE
-    inscode(d, ds, de, "ENFILE", ENFILE, "File table overflow");
-#endif
-#ifdef ELIBMAX
-    inscode(d, ds, de, "ELIBMAX", ELIBMAX, "Attempting to link in too many shared libraries");
-#endif
-#ifdef ESPIPE
-    inscode(d, ds, de, "ESPIPE", ESPIPE, "Illegal seek");
-#endif
-#ifdef ENOLINK
-    inscode(d, ds, de, "ENOLINK", ENOLINK, "Link has been severed");
-#endif
-#ifdef ENETRESET
-    inscode(d, ds, de, "ENETRESET", ENETRESET, "Network dropped connection because of reset");
-#else
-#ifdef WSAENETRESET
-    inscode(d, ds, de, "ENETRESET", WSAENETRESET, "Network dropped connection because of reset");
-#endif
-#endif
-#ifdef ETIMEDOUT
-    inscode(d, ds, de, "ETIMEDOUT", ETIMEDOUT, "Connection timed out");
-#else
-#ifdef WSAETIMEDOUT
-    inscode(d, ds, de, "ETIMEDOUT", WSAETIMEDOUT, "Connection timed out");
-#endif
-#endif
-#ifdef ENOENT
-    inscode(d, ds, de, "ENOENT", ENOENT, "No such file or directory");
-#endif
-#ifdef EEXIST
-    inscode(d, ds, de, "EEXIST", EEXIST, "File exists");
-#endif
-#ifdef EDQUOT
-    inscode(d, ds, de, "EDQUOT", EDQUOT, "Quota exceeded");
-#else
-#ifdef WSAEDQUOT
-    inscode(d, ds, de, "EDQUOT", WSAEDQUOT, "Quota exceeded");
-#endif
-#endif
-#ifdef ENOSTR
-    inscode(d, ds, de, "ENOSTR", ENOSTR, "Device not a stream");
-#endif
-#ifdef EBADSLT
-    inscode(d, ds, de, "EBADSLT", EBADSLT, "Invalid slot");
-#endif
-#ifdef EBADRQC
-    inscode(d, ds, de, "EBADRQC", EBADRQC, "Invalid request code");
-#endif
-#ifdef ELIBACC
-    inscode(d, ds, de, "ELIBACC", ELIBACC, "Can not access a needed shared library");
-#endif
-#ifdef EFAULT
-    inscode(d, ds, de, "EFAULT", EFAULT, "Bad address");
-#else
-#ifdef WSAEFAULT
-    inscode(d, ds, de, "EFAULT", WSAEFAULT, "Bad address");
-#endif
-#endif
-#ifdef EFBIG
-    inscode(d, ds, de, "EFBIG", EFBIG, "File too large");
-#endif
-#ifdef EDEADLK
-    inscode(d, ds, de, "EDEADLK", EDEADLK, "Resource deadlock would occur");
-#endif
-#ifdef ENOTCONN
-    inscode(d, ds, de, "ENOTCONN", ENOTCONN, "Transport endpoint is not connected");
-#else
-#ifdef WSAENOTCONN
-    inscode(d, ds, de, "ENOTCONN", WSAENOTCONN, "Transport endpoint is not connected");
-#endif
-#endif
-#ifdef EDESTADDRREQ
-    inscode(d, ds, de, "EDESTADDRREQ", EDESTADDRREQ, "Destination address required");
-#else
-#ifdef WSAEDESTADDRREQ
-    inscode(d, ds, de, "EDESTADDRREQ", WSAEDESTADDRREQ, "Destination address required");
-#endif
-#endif
-#ifdef ELIBSCN
-    inscode(d, ds, de, "ELIBSCN", ELIBSCN, ".lib section in a.out corrupted");
-#endif
-#ifdef ENOLCK
-    inscode(d, ds, de, "ENOLCK", ENOLCK, "No record locks available");
-#endif
-#ifdef EISNAM
-    inscode(d, ds, de, "EISNAM", EISNAM, "Is a named type file");
-#endif
-#ifdef ECONNABORTED
-    inscode(d, ds, de, "ECONNABORTED", ECONNABORTED, "Software caused connection abort");
-#else
-#ifdef WSAECONNABORTED
-    inscode(d, ds, de, "ECONNABORTED", WSAECONNABORTED, "Software caused connection abort");
-#endif
-#endif
-#ifdef ENETUNREACH
-    inscode(d, ds, de, "ENETUNREACH", ENETUNREACH, "Network is unreachable");
-#else
-#ifdef WSAENETUNREACH
-    inscode(d, ds, de, "ENETUNREACH", WSAENETUNREACH, "Network is unreachable");
-#endif
-#endif
-#ifdef ESTALE
-    inscode(d, ds, de, "ESTALE", ESTALE, "Stale NFS file handle");
-#else
-#ifdef WSAESTALE
-    inscode(d, ds, de, "ESTALE", WSAESTALE, "Stale NFS file handle");
-#endif
-#endif
-#ifdef ENOSR
-    inscode(d, ds, de, "ENOSR", ENOSR, "Out of streams resources");
-#endif
-#ifdef ENOMEM
-    inscode(d, ds, de, "ENOMEM", ENOMEM, "Out of memory");
-#endif
-#ifdef ENOTSOCK
-    inscode(d, ds, de, "ENOTSOCK", ENOTSOCK, "Socket operation on non-socket");
-#else
-#ifdef WSAENOTSOCK
-    inscode(d, ds, de, "ENOTSOCK", WSAENOTSOCK, "Socket operation on non-socket");
-#endif
-#endif
-#ifdef ESTRPIPE
-    inscode(d, ds, de, "ESTRPIPE", ESTRPIPE, "Streams pipe error");
-#endif
-#ifdef EMLINK
-    inscode(d, ds, de, "EMLINK", EMLINK, "Too many links");
-#endif
-#ifdef ERANGE
-    inscode(d, ds, de, "ERANGE", ERANGE, "Math result not representable");
-#endif
-#ifdef ELIBEXEC
-    inscode(d, ds, de, "ELIBEXEC", ELIBEXEC, "Cannot exec a shared library directly");
-#endif
-#ifdef EL3HLT
-    inscode(d, ds, de, "EL3HLT", EL3HLT, "Level 3 halted");
-#endif
-#ifdef ECONNRESET
-    inscode(d, ds, de, "ECONNRESET", ECONNRESET, "Connection reset by peer");
-#else
-#ifdef WSAECONNRESET
-    inscode(d, ds, de, "ECONNRESET", WSAECONNRESET, "Connection reset by peer");
-#endif
-#endif
-#ifdef EADDRINUSE
-    inscode(d, ds, de, "EADDRINUSE", EADDRINUSE, "Address already in use");
-#else
-#ifdef WSAEADDRINUSE
-    inscode(d, ds, de, "EADDRINUSE", WSAEADDRINUSE, "Address already in use");
-#endif
-#endif
-#ifdef EOPNOTSUPP
-    inscode(d, ds, de, "EOPNOTSUPP", EOPNOTSUPP, "Operation not supported on transport endpoint");
-#else
-#ifdef WSAEOPNOTSUPP
-    inscode(d, ds, de, "EOPNOTSUPP", WSAEOPNOTSUPP, "Operation not supported on transport endpoint");
-#endif
-#endif
-#ifdef EREMCHG
-    inscode(d, ds, de, "EREMCHG", EREMCHG, "Remote address changed");
-#endif
-#ifdef EAGAIN
-    inscode(d, ds, de, "EAGAIN", EAGAIN, "Try again");
-#endif
-#ifdef ENAMETOOLONG
-    inscode(d, ds, de, "ENAMETOOLONG", ENAMETOOLONG, "File name too long");
-#else
-#ifdef WSAENAMETOOLONG
-    inscode(d, ds, de, "ENAMETOOLONG", WSAENAMETOOLONG, "File name too long");
-#endif
-#endif
-#ifdef ENOTTY
-    inscode(d, ds, de, "ENOTTY", ENOTTY, "Not a typewriter");
-#endif
-#ifdef ERESTART
-    inscode(d, ds, de, "ERESTART", ERESTART, "Interrupted system call should be restarted");
-#endif
-#ifdef ESOCKTNOSUPPORT
-    inscode(d, ds, de, "ESOCKTNOSUPPORT", ESOCKTNOSUPPORT, "Socket type not supported");
-#else
-#ifdef WSAESOCKTNOSUPPORT
-    inscode(d, ds, de, "ESOCKTNOSUPPORT", WSAESOCKTNOSUPPORT, "Socket type not supported");
-#endif
-#endif
-#ifdef ETIME
-    inscode(d, ds, de, "ETIME", ETIME, "Timer expired");
-#endif
-#ifdef EBFONT
-    inscode(d, ds, de, "EBFONT", EBFONT, "Bad font file format");
-#endif
-#ifdef EDEADLOCK
-    inscode(d, ds, de, "EDEADLOCK", EDEADLOCK, "Error EDEADLOCK");
-#endif
-#ifdef ETOOMANYREFS
-    inscode(d, ds, de, "ETOOMANYREFS", ETOOMANYREFS, "Too many references: cannot splice");
-#else
-#ifdef WSAETOOMANYREFS
-    inscode(d, ds, de, "ETOOMANYREFS", WSAETOOMANYREFS, "Too many references: cannot splice");
-#endif
-#endif
-#ifdef EMFILE
-    inscode(d, ds, de, "EMFILE", EMFILE, "Too many open files");
-#else
-#ifdef WSAEMFILE
-    inscode(d, ds, de, "EMFILE", WSAEMFILE, "Too many open files");
-#endif
-#endif
-#ifdef ETXTBSY
-    inscode(d, ds, de, "ETXTBSY", ETXTBSY, "Text file busy");
-#endif
-#ifdef EINPROGRESS
-    inscode(d, ds, de, "EINPROGRESS", EINPROGRESS, "Operation now in progress");
-#else
-#ifdef WSAEINPROGRESS
-    inscode(d, ds, de, "EINPROGRESS", WSAEINPROGRESS, "Operation now in progress");
-#endif
-#endif
-#ifdef ENXIO
-    inscode(d, ds, de, "ENXIO", ENXIO, "No such device or address");
-#endif
-#ifdef ENOPKG
-    inscode(d, ds, de, "ENOPKG", ENOPKG, "Package not installed");
-#endif
-#ifdef WSASY
-    inscode(d, ds, de, "WSASY", WSASY, "Error WSASY");
-#endif
-#ifdef WSAEHOSTDOWN
-    inscode(d, ds, de, "WSAEHOSTDOWN", WSAEHOSTDOWN, "Host is down");
-#endif
-#ifdef WSAENETDOWN
-    inscode(d, ds, de, "WSAENETDOWN", WSAENETDOWN, "Network is down");
-#endif
-#ifdef WSAENOTSOCK
-    inscode(d, ds, de, "WSAENOTSOCK", WSAENOTSOCK, "Socket operation on non-socket");
-#endif
-#ifdef WSAEHOSTUNREACH
-    inscode(d, ds, de, "WSAEHOSTUNREACH", WSAEHOSTUNREACH, "No route to host");
-#endif
-#ifdef WSAELOOP
-    inscode(d, ds, de, "WSAELOOP", WSAELOOP, "Too many symbolic links encountered");
-#endif
-#ifdef WSAEMFILE
-    inscode(d, ds, de, "WSAEMFILE", WSAEMFILE, "Too many open files");
-#endif
-#ifdef WSAESTALE
-    inscode(d, ds, de, "WSAESTALE", WSAESTALE, "Stale NFS file handle");
-#endif
-#ifdef WSAVERNOTSUPPORTED
-    inscode(d, ds, de, "WSAVERNOTSUPPORTED", WSAVERNOTSUPPORTED, "Error WSAVERNOTSUPPORTED");
-#endif
-#ifdef WSAENETUNREACH
-    inscode(d, ds, de, "WSAENETUNREACH", WSAENETUNREACH, "Network is unreachable");
-#endif
-#ifdef WSAEPROCLIM
-    inscode(d, ds, de, "WSAEPROCLIM", WSAEPROCLIM, "Error WSAEPROCLIM");
-#endif
-#ifdef WSAEFAULT
-    inscode(d, ds, de, "WSAEFAULT", WSAEFAULT, "Bad address");
-#endif
-#ifdef WSANOTINITIALISED
-    inscode(d, ds, de, "WSANOTINITIALISED", WSANOTINITIALISED, "Error WSANOTINITIALISED");
-#endif
-#ifdef WSAEUSERS
-    inscode(d, ds, de, "WSAEUSERS", WSAEUSERS, "Too many users");
-#endif
-#ifdef WSAMAKEASYNCREPL
-    inscode(d, ds, de, "WSAMAKEASYNCREPL", WSAMAKEASYNCREPL, "Error WSAMAKEASYNCREPL");
-#endif
-#ifdef WSAENOPROTOOPT
-    inscode(d, ds, de, "WSAENOPROTOOPT", WSAENOPROTOOPT, "Protocol not available");
-#endif
-#ifdef WSAECONNABORTED
-    inscode(d, ds, de, "WSAECONNABORTED", WSAECONNABORTED, "Software caused connection abort");
-#endif
-#ifdef WSAENAMETOOLONG
-    inscode(d, ds, de, "WSAENAMETOOLONG", WSAENAMETOOLONG, "File name too long");
-#endif
-#ifdef WSAENOTEMPTY
-    inscode(d, ds, de, "WSAENOTEMPTY", WSAENOTEMPTY, "Directory not empty");
-#endif
-#ifdef WSAESHUTDOWN
-    inscode(d, ds, de, "WSAESHUTDOWN", WSAESHUTDOWN, "Cannot send after transport endpoint shutdown");
-#endif
-#ifdef WSAEAFNOSUPPORT
-    inscode(d, ds, de, "WSAEAFNOSUPPORT", WSAEAFNOSUPPORT, "Address family not supported by protocol");
-#endif
-#ifdef WSAETOOMANYREFS
-    inscode(d, ds, de, "WSAETOOMANYREFS", WSAETOOMANYREFS, "Too many references: cannot splice");
-#endif
-#ifdef WSAEACCES
-    inscode(d, ds, de, "WSAEACCES", WSAEACCES, "Permission denied");
-#endif
-#ifdef WSATR
-    inscode(d, ds, de, "WSATR", WSATR, "Error WSATR");
-#endif
-#ifdef WSABASEERR
-    inscode(d, ds, de, "WSABASEERR", WSABASEERR, "Error WSABASEERR");
-#endif
-#ifdef WSADESCRIPTIO
-    inscode(d, ds, de, "WSADESCRIPTIO", WSADESCRIPTIO, "Error WSADESCRIPTIO");
-#endif
-#ifdef WSAEMSGSIZE
-    inscode(d, ds, de, "WSAEMSGSIZE", WSAEMSGSIZE, "Message too long");
-#endif
-#ifdef WSAEBADF
-    inscode(d, ds, de, "WSAEBADF", WSAEBADF, "Bad file number");
-#endif
-#ifdef WSAECONNRESET
-    inscode(d, ds, de, "WSAECONNRESET", WSAECONNRESET, "Connection reset by peer");
-#endif
-#ifdef WSAGETSELECTERRO
-    inscode(d, ds, de, "WSAGETSELECTERRO", WSAGETSELECTERRO, "Error WSAGETSELECTERRO");
-#endif
-#ifdef WSAETIMEDOUT
-    inscode(d, ds, de, "WSAETIMEDOUT", WSAETIMEDOUT, "Connection timed out");
-#endif
-#ifdef WSAENOBUFS
-    inscode(d, ds, de, "WSAENOBUFS", WSAENOBUFS, "No buffer space available");
-#endif
-#ifdef WSAEDISCON
-    inscode(d, ds, de, "WSAEDISCON", WSAEDISCON, "Error WSAEDISCON");
-#endif
-#ifdef WSAEINTR
-    inscode(d, ds, de, "WSAEINTR", WSAEINTR, "Interrupted system call");
-#endif
-#ifdef WSAEPROTOTYPE
-    inscode(d, ds, de, "WSAEPROTOTYPE", WSAEPROTOTYPE, "Protocol wrong type for socket");
-#endif
-#ifdef WSAHOS
-    inscode(d, ds, de, "WSAHOS", WSAHOS, "Error WSAHOS");
-#endif
-#ifdef WSAEADDRINUSE
-    inscode(d, ds, de, "WSAEADDRINUSE", WSAEADDRINUSE, "Address already in use");
-#endif
-#ifdef WSAEADDRNOTAVAIL
-    inscode(d, ds, de, "WSAEADDRNOTAVAIL", WSAEADDRNOTAVAIL, "Cannot assign requested address");
-#endif
-#ifdef WSAEALREADY
-    inscode(d, ds, de, "WSAEALREADY", WSAEALREADY, "Operation already in progress");
-#endif
-#ifdef WSAEPROTONOSUPPORT
-    inscode(d, ds, de, "WSAEPROTONOSUPPORT", WSAEPROTONOSUPPORT, "Protocol not supported");
-#endif
-#ifdef WSASYSNOTREADY
-    inscode(d, ds, de, "WSASYSNOTREADY", WSASYSNOTREADY, "Error WSASYSNOTREADY");
-#endif
-#ifdef WSAEWOULDBLOCK
-    inscode(d, ds, de, "WSAEWOULDBLOCK", WSAEWOULDBLOCK, "Operation would block");
-#endif
-#ifdef WSAEPFNOSUPPORT
-    inscode(d, ds, de, "WSAEPFNOSUPPORT", WSAEPFNOSUPPORT, "Protocol family not supported");
-#endif
-#ifdef WSAEOPNOTSUPP
-    inscode(d, ds, de, "WSAEOPNOTSUPP", WSAEOPNOTSUPP, "Operation not supported on transport endpoint");
-#endif
-#ifdef WSAEISCONN
-    inscode(d, ds, de, "WSAEISCONN", WSAEISCONN, "Transport endpoint is already connected");
-#endif
-#ifdef WSAEDQUOT
-    inscode(d, ds, de, "WSAEDQUOT", WSAEDQUOT, "Quota exceeded");
-#endif
-#ifdef WSAENOTCONN
-    inscode(d, ds, de, "WSAENOTCONN", WSAENOTCONN, "Transport endpoint is not connected");
-#endif
-#ifdef WSAEREMOTE
-    inscode(d, ds, de, "WSAEREMOTE", WSAEREMOTE, "Object is remote");
-#endif
-#ifdef WSAEINVAL
-    inscode(d, ds, de, "WSAEINVAL", WSAEINVAL, "Invalid argument");
-#endif
-#ifdef WSAEINPROGRESS
-    inscode(d, ds, de, "WSAEINPROGRESS", WSAEINPROGRESS, "Operation now in progress");
-#endif
-#ifdef WSAGETSELECTEVEN
-    inscode(d, ds, de, "WSAGETSELECTEVEN", WSAGETSELECTEVEN, "Error WSAGETSELECTEVEN");
-#endif
-#ifdef WSAESOCKTNOSUPPORT
-    inscode(d, ds, de, "WSAESOCKTNOSUPPORT", WSAESOCKTNOSUPPORT, "Socket type not supported");
-#endif
-#ifdef WSAGETASYNCERRO
-    inscode(d, ds, de, "WSAGETASYNCERRO", WSAGETASYNCERRO, "Error WSAGETASYNCERRO");
-#endif
-#ifdef WSAMAKESELECTREPL
-    inscode(d, ds, de, "WSAMAKESELECTREPL", WSAMAKESELECTREPL, "Error WSAMAKESELECTREPL");
-#endif
-#ifdef WSAGETASYNCBUFLE
-    inscode(d, ds, de, "WSAGETASYNCBUFLE", WSAGETASYNCBUFLE, "Error WSAGETASYNCBUFLE");
-#endif
-#ifdef WSAEDESTADDRREQ
-    inscode(d, ds, de, "WSAEDESTADDRREQ", WSAEDESTADDRREQ, "Destination address required");
-#endif
-#ifdef WSAECONNREFUSED
-    inscode(d, ds, de, "WSAECONNREFUSED", WSAECONNREFUSED, "Connection refused");
-#endif
-#ifdef WSAENETRESET
-    inscode(d, ds, de, "WSAENETRESET", WSAENETRESET, "Network dropped connection because of reset");
-#endif
-#ifdef WSAN
-    inscode(d, ds, de, "WSAN", WSAN, "Error WSAN");
-#endif
-
-/* These symbols are added for EDK II support.  */
-#ifdef EMINERRORVAL
-  inscode(d, ds, de, "EMINERRORVAL", EMINERRORVAL, "Lowest valid error value");
-#endif
-#ifdef ENOTSUP
-  inscode(d, ds, de, "ENOTSUP", ENOTSUP, "Operation not supported");
-#endif
-#ifdef EBADRPC
-  inscode(d, ds, de, "EBADRPC", EBADRPC, "RPC struct is bad");
-#endif
-#ifdef ERPCMISMATCH
-  inscode(d, ds, de, "ERPCMISMATCH", ERPCMISMATCH, "RPC version wrong");
-#endif
-#ifdef EPROGUNAVAIL
-  inscode(d, ds, de, "EPROGUNAVAIL", EPROGUNAVAIL, "RPC prog. not avail");
-#endif
-#ifdef EPROGMISMATCH
-  inscode(d, ds, de, "EPROGMISMATCH", EPROGMISMATCH, "Program version wrong");
-#endif
-#ifdef EPROCUNAVAIL
-  inscode(d, ds, de, "EPROCUNAVAIL", EPROCUNAVAIL, "Bad procedure for program");
-#endif
-#ifdef EFTYPE
-  inscode(d, ds, de, "EFTYPE", EFTYPE, "Inappropriate file type or format");
-#endif
-#ifdef EAUTH
-  inscode(d, ds, de, "EAUTH", EAUTH, "Authentication error");
-#endif
-#ifdef ENEEDAUTH
-  inscode(d, ds, de, "ENEEDAUTH", ENEEDAUTH, "Need authenticator");
-#endif
-#ifdef ECANCELED
-  inscode(d, ds, de, "ECANCELED", ECANCELED, "Operation canceled");
-#endif
-#ifdef ENOATTR
-  inscode(d, ds, de, "ENOATTR", ENOATTR, "Attribute not found");
-#endif
-#ifdef EDOOFUS
-  inscode(d, ds, de, "EDOOFUS", EDOOFUS, "Programming Error");
-#endif
-#ifdef EBUFSIZE
-  inscode(d, ds, de, "EBUFSIZE", EBUFSIZE, "Buffer too small to hold result");
-#endif
-#ifdef EMAXERRORVAL
-  inscode(d, ds, de, "EMAXERRORVAL", EMAXERRORVAL, "One more than the highest defined error value");
-#endif
-
-    Py_DECREF(de);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/COPYING b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/COPYING
deleted file mode 100644
index af7c166..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/COPYING
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
-                               and Clark Cooper
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/amigaconfig.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/amigaconfig.h
deleted file mode 100644
index be05f07..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/amigaconfig.h
+++ /dev/null
@@ -1,96 +0,0 @@
-#ifndef AMIGACONFIG_H
-#define AMIGACONFIG_H
-
-/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
-#define BYTEORDER 4321
-
-/* Define to 1 if you have the `bcopy' function. */
-#define HAVE_BCOPY 1
-
-/* Define to 1 if you have the <check.h> header file. */
-#undef HAVE_CHECK_H
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if you have the `getpagesize' function. */
-#undef HAVE_GETPAGESIZE
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the `memmove' function. */
-#define HAVE_MEMMOVE 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have a working `mmap' system call. */
-#undef HAVE_MMAP
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "expat-bugs@mail.libexpat.org"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "expat"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "expat 1.95.8"
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.95.8"
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* whether byteorder is bigendian */
-#define WORDS_BIGENDIAN
-
-/* Define to specify how much context to retain around the current parse
-   point. */
-#define XML_CONTEXT_BYTES 1024
-
-/* Define to make parameter entity parsing functionality available. */
-#define XML_DTD
-
-/* Define to make XML Namespaces functionality available. */
-#define XML_NS
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `long' if <sys/types.h> does not define. */
-#undef off_t
-
-/* Define to `unsigned' if <sys/types.h> does not define. */
-#undef size_t
-
-
-#endif  /* AMIGACONFIG_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/ascii.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/ascii.h
deleted file mode 100644
index 035cd39..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/ascii.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#define ASCII_A 0x41
-#define ASCII_B 0x42
-#define ASCII_C 0x43
-#define ASCII_D 0x44
-#define ASCII_E 0x45
-#define ASCII_F 0x46
-#define ASCII_G 0x47
-#define ASCII_H 0x48
-#define ASCII_I 0x49
-#define ASCII_J 0x4A
-#define ASCII_K 0x4B
-#define ASCII_L 0x4C
-#define ASCII_M 0x4D
-#define ASCII_N 0x4E
-#define ASCII_O 0x4F
-#define ASCII_P 0x50
-#define ASCII_Q 0x51
-#define ASCII_R 0x52
-#define ASCII_S 0x53
-#define ASCII_T 0x54
-#define ASCII_U 0x55
-#define ASCII_V 0x56
-#define ASCII_W 0x57
-#define ASCII_X 0x58
-#define ASCII_Y 0x59
-#define ASCII_Z 0x5A
-
-#define ASCII_a 0x61
-#define ASCII_b 0x62
-#define ASCII_c 0x63
-#define ASCII_d 0x64
-#define ASCII_e 0x65
-#define ASCII_f 0x66
-#define ASCII_g 0x67
-#define ASCII_h 0x68
-#define ASCII_i 0x69
-#define ASCII_j 0x6A
-#define ASCII_k 0x6B
-#define ASCII_l 0x6C
-#define ASCII_m 0x6D
-#define ASCII_n 0x6E
-#define ASCII_o 0x6F
-#define ASCII_p 0x70
-#define ASCII_q 0x71
-#define ASCII_r 0x72
-#define ASCII_s 0x73
-#define ASCII_t 0x74
-#define ASCII_u 0x75
-#define ASCII_v 0x76
-#define ASCII_w 0x77
-#define ASCII_x 0x78
-#define ASCII_y 0x79
-#define ASCII_z 0x7A
-
-#define ASCII_0 0x30
-#define ASCII_1 0x31
-#define ASCII_2 0x32
-#define ASCII_3 0x33
-#define ASCII_4 0x34
-#define ASCII_5 0x35
-#define ASCII_6 0x36
-#define ASCII_7 0x37
-#define ASCII_8 0x38
-#define ASCII_9 0x39
-
-#define ASCII_TAB 0x09
-#define ASCII_SPACE 0x20
-#define ASCII_EXCL 0x21
-#define ASCII_QUOT 0x22
-#define ASCII_AMP 0x26
-#define ASCII_APOS 0x27
-#define ASCII_MINUS 0x2D
-#define ASCII_PERIOD 0x2E
-#define ASCII_COLON 0x3A
-#define ASCII_SEMI 0x3B
-#define ASCII_LT 0x3C
-#define ASCII_EQUALS 0x3D
-#define ASCII_GT 0x3E
-#define ASCII_LSQB 0x5B
-#define ASCII_RSQB 0x5D
-#define ASCII_UNDERSCORE 0x5F
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/asciitab.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/asciitab.h
deleted file mode 100644
index 2ef65c7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/asciitab.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML,
-/* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML,
-/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM,
-/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS,
-/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS,
-/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL,
-/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
-/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
-/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI,
-/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST,
-/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
-/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
-/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB,
-/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT,
-/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
-/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
-/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
-/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER,
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat.h
deleted file mode 100644
index c6a4b3b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat.h
+++ /dev/null
@@ -1,1013 +0,0 @@
-/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#ifndef Expat_INCLUDED
-#define Expat_INCLUDED 1
-
-#ifdef __VMS
-/*      0        1         2         3      0        1         2         3
-        1234567890123456789012345678901     1234567890123456789012345678901 */
-#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler
-#define XML_SetUnparsedEntityDeclHandler    XML_SetUnparsedEntDeclHandler
-#define XML_SetStartNamespaceDeclHandler    XML_SetStartNamespcDeclHandler
-#define XML_SetExternalEntityRefHandlerArg  XML_SetExternalEntRefHandlerArg
-#endif
-
-#include <stdlib.h>
-#include "expat_external.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct XML_ParserStruct;
-typedef struct XML_ParserStruct *XML_Parser;
-
-/* Should this be defined using stdbool.h when C99 is available? */
-typedef unsigned char XML_Bool;
-#define XML_TRUE   ((XML_Bool) 1)
-#define XML_FALSE  ((XML_Bool) 0)
-
-/* The XML_Status enum gives the possible return values for several
-   API functions.  The preprocessor #defines are included so this
-   stanza can be added to code that still needs to support older
-   versions of Expat 1.95.x:
-
-   #ifndef XML_STATUS_OK
-   #define XML_STATUS_OK    1
-   #define XML_STATUS_ERROR 0
-   #endif
-
-   Otherwise, the #define hackery is quite ugly and would have been
-   dropped.
-*/
-enum XML_Status {
-  XML_STATUS_ERROR = 0,
-#define XML_STATUS_ERROR XML_STATUS_ERROR
-  XML_STATUS_OK = 1,
-#define XML_STATUS_OK XML_STATUS_OK
-  XML_STATUS_SUSPENDED = 2
-#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED
-};
-
-enum XML_Error {
-  XML_ERROR_NONE,
-  XML_ERROR_NO_MEMORY,
-  XML_ERROR_SYNTAX,
-  XML_ERROR_NO_ELEMENTS,
-  XML_ERROR_INVALID_TOKEN,
-  XML_ERROR_UNCLOSED_TOKEN,
-  XML_ERROR_PARTIAL_CHAR,
-  XML_ERROR_TAG_MISMATCH,
-  XML_ERROR_DUPLICATE_ATTRIBUTE,
-  XML_ERROR_JUNK_AFTER_DOC_ELEMENT,
-  XML_ERROR_PARAM_ENTITY_REF,
-  XML_ERROR_UNDEFINED_ENTITY,
-  XML_ERROR_RECURSIVE_ENTITY_REF,
-  XML_ERROR_ASYNC_ENTITY,
-  XML_ERROR_BAD_CHAR_REF,
-  XML_ERROR_BINARY_ENTITY_REF,
-  XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF,
-  XML_ERROR_MISPLACED_XML_PI,
-  XML_ERROR_UNKNOWN_ENCODING,
-  XML_ERROR_INCORRECT_ENCODING,
-  XML_ERROR_UNCLOSED_CDATA_SECTION,
-  XML_ERROR_EXTERNAL_ENTITY_HANDLING,
-  XML_ERROR_NOT_STANDALONE,
-  XML_ERROR_UNEXPECTED_STATE,
-  XML_ERROR_ENTITY_DECLARED_IN_PE,
-  XML_ERROR_FEATURE_REQUIRES_XML_DTD,
-  XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING,
-  /* Added in 1.95.7. */
-  XML_ERROR_UNBOUND_PREFIX,
-  /* Added in 1.95.8. */
-  XML_ERROR_UNDECLARING_PREFIX,
-  XML_ERROR_INCOMPLETE_PE,
-  XML_ERROR_XML_DECL,
-  XML_ERROR_TEXT_DECL,
-  XML_ERROR_PUBLICID,
-  XML_ERROR_SUSPENDED,
-  XML_ERROR_NOT_SUSPENDED,
-  XML_ERROR_ABORTED,
-  XML_ERROR_FINISHED,
-  XML_ERROR_SUSPEND_PE,
-  /* Added in 2.0. */
-  XML_ERROR_RESERVED_PREFIX_XML,
-  XML_ERROR_RESERVED_PREFIX_XMLNS,
-  XML_ERROR_RESERVED_NAMESPACE_URI
-};
-
-enum XML_Content_Type {
-  XML_CTYPE_EMPTY = 1,
-  XML_CTYPE_ANY,
-  XML_CTYPE_MIXED,
-  XML_CTYPE_NAME,
-  XML_CTYPE_CHOICE,
-  XML_CTYPE_SEQ
-};
-
-enum XML_Content_Quant {
-  XML_CQUANT_NONE,
-  XML_CQUANT_OPT,
-  XML_CQUANT_REP,
-  XML_CQUANT_PLUS
-};
-
-/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be
-   XML_CQUANT_NONE, and the other fields will be zero or NULL.
-   If type == XML_CTYPE_MIXED, then quant will be NONE or REP and
-   numchildren will contain number of elements that may be mixed in
-   and children point to an array of XML_Content cells that will be
-   all of XML_CTYPE_NAME type with no quantification.
-
-   If type == XML_CTYPE_NAME, then the name points to the name, and
-   the numchildren field will be zero and children will be NULL. The
-   quant fields indicates any quantifiers placed on the name.
-
-   CHOICE and SEQ will have name NULL, the number of children in
-   numchildren and children will point, recursively, to an array
-   of XML_Content cells.
-
-   The EMPTY, ANY, and MIXED types will only occur at top level.
-*/
-
-typedef struct XML_cp XML_Content;
-
-struct XML_cp {
-  enum XML_Content_Type         type;
-  enum XML_Content_Quant        quant;
-  XML_Char *                    name;
-  unsigned int                  numchildren;
-  XML_Content *                 children;
-};
-
-
-/* This is called for an element declaration. See above for
-   description of the model argument. It's the caller's responsibility
-   to free model when finished with it.
-*/
-typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData,
-                                                const XML_Char *name,
-                                                XML_Content *model);
-
-XMLPARSEAPI(void)
-XML_SetElementDeclHandler(XML_Parser parser,
-                          XML_ElementDeclHandler eldecl);
-
-/* The Attlist declaration handler is called for *each* attribute. So
-   a single Attlist declaration with multiple attributes declared will
-   generate multiple calls to this handler. The "default" parameter
-   may be NULL in the case of the "#IMPLIED" or "#REQUIRED"
-   keyword. The "isrequired" parameter will be true and the default
-   value will be NULL in the case of "#REQUIRED". If "isrequired" is
-   true and default is non-NULL, then this is a "#FIXED" default.
-*/
-typedef void (XMLCALL *XML_AttlistDeclHandler) (
-                                    void            *userData,
-                                    const XML_Char  *elname,
-                                    const XML_Char  *attname,
-                                    const XML_Char  *att_type,
-                                    const XML_Char  *dflt,
-                                    int              isrequired);
-
-XMLPARSEAPI(void)
-XML_SetAttlistDeclHandler(XML_Parser parser,
-                          XML_AttlistDeclHandler attdecl);
-
-/* The XML declaration handler is called for *both* XML declarations
-   and text declarations. The way to distinguish is that the version
-   parameter will be NULL for text declarations. The encoding
-   parameter may be NULL for XML declarations. The standalone
-   parameter will be -1, 0, or 1 indicating respectively that there
-   was no standalone parameter in the declaration, that it was given
-   as no, or that it was given as yes.
-*/
-typedef void (XMLCALL *XML_XmlDeclHandler) (void           *userData,
-                                            const XML_Char *version,
-                                            const XML_Char *encoding,
-                                            int             standalone);
-
-XMLPARSEAPI(void)
-XML_SetXmlDeclHandler(XML_Parser parser,
-                      XML_XmlDeclHandler xmldecl);
-
-
-typedef struct {
-  void *(*malloc_fcn)(size_t size);
-  void *(*realloc_fcn)(void *ptr, size_t size);
-  void (*free_fcn)(void *ptr);
-} XML_Memory_Handling_Suite;
-
-/* Constructs a new parser; encoding is the encoding specified by the
-   external protocol or NULL if there is none specified.
-*/
-XMLPARSEAPI(XML_Parser)
-XML_ParserCreate(const XML_Char *encoding);
-
-/* Constructs a new parser and namespace processor.  Element type
-   names and attribute names that belong to a namespace will be
-   expanded; unprefixed attribute names are never expanded; unprefixed
-   element type names are expanded only if there is a default
-   namespace. The expanded name is the concatenation of the namespace
-   URI, the namespace separator character, and the local part of the
-   name.  If the namespace separator is '\0' then the namespace URI
-   and the local part will be concatenated without any separator.
-   It is a programming error to use the separator '\0' with namespace
-   triplets (see XML_SetReturnNSTriplet).
-*/
-XMLPARSEAPI(XML_Parser)
-XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator);
-
-
-/* Constructs a new parser using the memory management suite referred to
-   by memsuite. If memsuite is NULL, then use the standard library memory
-   suite. If namespaceSeparator is non-NULL it creates a parser with
-   namespace processing as described above. The character pointed at
-   will serve as the namespace separator.
-
-   All further memory operations used for the created parser will come from
-   the given suite.
-*/
-XMLPARSEAPI(XML_Parser)
-XML_ParserCreate_MM(const XML_Char *encoding,
-                    const XML_Memory_Handling_Suite *memsuite,
-                    const XML_Char *namespaceSeparator);
-
-/* Prepare a parser object to be re-used.  This is particularly
-   valuable when memory allocation overhead is disproportionatly high,
-   such as when a large number of small documnents need to be parsed.
-   All handlers are cleared from the parser, except for the
-   unknownEncodingHandler. The parser's external state is re-initialized
-   except for the values of ns and ns_triplets.
-
-   Added in Expat 1.95.3.
-*/
-XMLPARSEAPI(XML_Bool)
-XML_ParserReset(XML_Parser parser, const XML_Char *encoding);
-
-/* atts is array of name/value pairs, terminated by 0;
-   names and values are 0 terminated.
-*/
-typedef void (XMLCALL *XML_StartElementHandler) (void *userData,
-                                                 const XML_Char *name,
-                                                 const XML_Char **atts);
-
-typedef void (XMLCALL *XML_EndElementHandler) (void *userData,
-                                               const XML_Char *name);
-
-
-/* s is not 0 terminated. */
-typedef void (XMLCALL *XML_CharacterDataHandler) (void *userData,
-                                                  const XML_Char *s,
-                                                  int len);
-
-/* target and data are 0 terminated */
-typedef void (XMLCALL *XML_ProcessingInstructionHandler) (
-                                                void *userData,
-                                                const XML_Char *target,
-                                                const XML_Char *data);
-
-/* data is 0 terminated */
-typedef void (XMLCALL *XML_CommentHandler) (void *userData,
-                                            const XML_Char *data);
-
-typedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData);
-typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData);
-
-/* This is called for any characters in the XML document for which
-   there is no applicable handler.  This includes both characters that
-   are part of markup which is of a kind that is not reported
-   (comments, markup declarations), or characters that are part of a
-   construct which could be reported but for which no handler has been
-   supplied. The characters are passed exactly as they were in the XML
-   document except that they will be encoded in UTF-8 or UTF-16.
-   Line boundaries are not normalized. Note that a byte order mark
-   character is not passed to the default handler. There are no
-   guarantees about how characters are divided between calls to the
-   default handler: for example, a comment might be split between
-   multiple calls.
-*/
-typedef void (XMLCALL *XML_DefaultHandler) (void *userData,
-                                            const XML_Char *s,
-                                            int len);
-
-/* This is called for the start of the DOCTYPE declaration, before
-   any DTD or internal subset is parsed.
-*/
-typedef void (XMLCALL *XML_StartDoctypeDeclHandler) (
-                                            void *userData,
-                                            const XML_Char *doctypeName,
-                                            const XML_Char *sysid,
-                                            const XML_Char *pubid,
-                                            int has_internal_subset);
-
-/* This is called for the start of the DOCTYPE declaration when the
-   closing > is encountered, but after processing any external
-   subset.
-*/
-typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData);
-
-/* This is called for entity declarations. The is_parameter_entity
-   argument will be non-zero if the entity is a parameter entity, zero
-   otherwise.
-
-   For internal entities (<!ENTITY foo "bar">), value will
-   be non-NULL and systemId, publicID, and notationName will be NULL.
-   The value string is NOT nul-terminated; the length is provided in
-   the value_length argument. Since it is legal to have zero-length
-   values, do not use this argument to test for internal entities.
-
-   For external entities, value will be NULL and systemId will be
-   non-NULL. The publicId argument will be NULL unless a public
-   identifier was provided. The notationName argument will have a
-   non-NULL value only for unparsed entity declarations.
-
-   Note that is_parameter_entity can't be changed to XML_Bool, since
-   that would break binary compatibility.
-*/
-typedef void (XMLCALL *XML_EntityDeclHandler) (
-                              void *userData,
-                              const XML_Char *entityName,
-                              int is_parameter_entity,
-                              const XML_Char *value,
-                              int value_length,
-                              const XML_Char *base,
-                              const XML_Char *systemId,
-                              const XML_Char *publicId,
-                              const XML_Char *notationName);
-
-XMLPARSEAPI(void)
-XML_SetEntityDeclHandler(XML_Parser parser,
-                         XML_EntityDeclHandler handler);
-
-/* OBSOLETE -- OBSOLETE -- OBSOLETE
-   This handler has been superceded by the EntityDeclHandler above.
-   It is provided here for backward compatibility.
-
-   This is called for a declaration of an unparsed (NDATA) entity.
-   The base argument is whatever was set by XML_SetBase. The
-   entityName, systemId and notationName arguments will never be
-   NULL. The other arguments may be.
-*/
-typedef void (XMLCALL *XML_UnparsedEntityDeclHandler) (
-                                    void *userData,
-                                    const XML_Char *entityName,
-                                    const XML_Char *base,
-                                    const XML_Char *systemId,
-                                    const XML_Char *publicId,
-                                    const XML_Char *notationName);
-
-/* This is called for a declaration of notation.  The base argument is
-   whatever was set by XML_SetBase. The notationName will never be
-   NULL.  The other arguments can be.
-*/
-typedef void (XMLCALL *XML_NotationDeclHandler) (
-                                    void *userData,
-                                    const XML_Char *notationName,
-                                    const XML_Char *base,
-                                    const XML_Char *systemId,
-                                    const XML_Char *publicId);
-
-/* When namespace processing is enabled, these are called once for
-   each namespace declaration. The call to the start and end element
-   handlers occur between the calls to the start and end namespace
-   declaration handlers. For an xmlns attribute, prefix will be
-   NULL.  For an xmlns="" attribute, uri will be NULL.
-*/
-typedef void (XMLCALL *XML_StartNamespaceDeclHandler) (
-                                    void *userData,
-                                    const XML_Char *prefix,
-                                    const XML_Char *uri);
-
-typedef void (XMLCALL *XML_EndNamespaceDeclHandler) (
-                                    void *userData,
-                                    const XML_Char *prefix);
-
-/* This is called if the document is not standalone, that is, it has an
-   external subset or a reference to a parameter entity, but does not
-   have standalone="yes". If this handler returns XML_STATUS_ERROR,
-   then processing will not continue, and the parser will return a
-   XML_ERROR_NOT_STANDALONE error.
-   If parameter entity parsing is enabled, then in addition to the
-   conditions above this handler will only be called if the referenced
-   entity was actually read.
-*/
-typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData);
-
-/* This is called for a reference to an external parsed general
-   entity.  The referenced entity is not automatically parsed.  The
-   application can parse it immediately or later using
-   XML_ExternalEntityParserCreate.
-
-   The parser argument is the parser parsing the entity containing the
-   reference; it can be passed as the parser argument to
-   XML_ExternalEntityParserCreate.  The systemId argument is the
-   system identifier as specified in the entity declaration; it will
-   not be NULL.
-
-   The base argument is the system identifier that should be used as
-   the base for resolving systemId if systemId was relative; this is
-   set by XML_SetBase; it may be NULL.
-
-   The publicId argument is the public identifier as specified in the
-   entity declaration, or NULL if none was specified; the whitespace
-   in the public identifier will have been normalized as required by
-   the XML spec.
-
-   The context argument specifies the parsing context in the format
-   expected by the context argument to XML_ExternalEntityParserCreate;
-   context is valid only until the handler returns, so if the
-   referenced entity is to be parsed later, it must be copied.
-   context is NULL only when the entity is a parameter entity.
-
-   The handler should return XML_STATUS_ERROR if processing should not
-   continue because of a fatal error in the handling of the external
-   entity.  In this case the calling parser will return an
-   XML_ERROR_EXTERNAL_ENTITY_HANDLING error.
-
-   Note that unlike other handlers the first argument is the parser,
-   not userData.
-*/
-typedef int (XMLCALL *XML_ExternalEntityRefHandler) (
-                                    XML_Parser parser,
-                                    const XML_Char *context,
-                                    const XML_Char *base,
-                                    const XML_Char *systemId,
-                                    const XML_Char *publicId);
-
-/* This is called in two situations:
-   1) An entity reference is encountered for which no declaration
-      has been read *and* this is not an error.
-   2) An internal entity reference is read, but not expanded, because
-      XML_SetDefaultHandler has been called.
-   Note: skipped parameter entities in declarations and skipped general
-         entities in attribute values cannot be reported, because
-         the event would be out of sync with the reporting of the
-         declarations or attribute values
-*/
-typedef void (XMLCALL *XML_SkippedEntityHandler) (
-                                    void *userData,
-                                    const XML_Char *entityName,
-                                    int is_parameter_entity);
-
-/* This structure is filled in by the XML_UnknownEncodingHandler to
-   provide information to the parser about encodings that are unknown
-   to the parser.
-
-   The map[b] member gives information about byte sequences whose
-   first byte is b.
-
-   If map[b] is c where c is >= 0, then b by itself encodes the
-   Unicode scalar value c.
-
-   If map[b] is -1, then the byte sequence is malformed.
-
-   If map[b] is -n, where n >= 2, then b is the first byte of an
-   n-byte sequence that encodes a single Unicode scalar value.
-
-   The data member will be passed as the first argument to the convert
-   function.
-
-   The convert function is used to convert multibyte sequences; s will
-   point to a n-byte sequence where map[(unsigned char)*s] == -n.  The
-   convert function must return the Unicode scalar value represented
-   by this byte sequence or -1 if the byte sequence is malformed.
-
-   The convert function may be NULL if the encoding is a single-byte
-   encoding, that is if map[b] >= -1 for all bytes b.
-
-   When the parser is finished with the encoding, then if release is
-   not NULL, it will call release passing it the data member; once
-   release has been called, the convert function will not be called
-   again.
-
-   Expat places certain restrictions on the encodings that are supported
-   using this mechanism.
-
-   1. Every ASCII character that can appear in a well-formed XML document,
-      other than the characters
-
-      $@\^`{}~
-
-      must be represented by a single byte, and that byte must be the
-      same byte that represents that character in ASCII.
-
-   2. No character may require more than 4 bytes to encode.
-
-   3. All characters encoded must have Unicode scalar values <=
-      0xFFFF, (i.e., characters that would be encoded by surrogates in
-      UTF-16 are  not allowed).  Note that this restriction doesn't
-      apply to the built-in support for UTF-8 and UTF-16.
-
-   4. No Unicode character may be encoded by more than one distinct
-      sequence of bytes.
-*/
-typedef struct {
-  int map[256];
-  void *data;
-  int (XMLCALL *convert)(void *data, const char *s);
-  void (XMLCALL *release)(void *data);
-} XML_Encoding;
-
-/* This is called for an encoding that is unknown to the parser.
-
-   The encodingHandlerData argument is that which was passed as the
-   second argument to XML_SetUnknownEncodingHandler.
-
-   The name argument gives the name of the encoding as specified in
-   the encoding declaration.
-
-   If the callback can provide information about the encoding, it must
-   fill in the XML_Encoding structure, and return XML_STATUS_OK.
-   Otherwise it must return XML_STATUS_ERROR.
-
-   If info does not describe a suitable encoding, then the parser will
-   return an XML_UNKNOWN_ENCODING error.
-*/
-typedef int (XMLCALL *XML_UnknownEncodingHandler) (
-                                    void *encodingHandlerData,
-                                    const XML_Char *name,
-                                    XML_Encoding *info);
-
-XMLPARSEAPI(void)
-XML_SetElementHandler(XML_Parser parser,
-                      XML_StartElementHandler start,
-                      XML_EndElementHandler end);
-
-XMLPARSEAPI(void)
-XML_SetStartElementHandler(XML_Parser parser,
-                           XML_StartElementHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetEndElementHandler(XML_Parser parser,
-                         XML_EndElementHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetCharacterDataHandler(XML_Parser parser,
-                            XML_CharacterDataHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetProcessingInstructionHandler(XML_Parser parser,
-                                    XML_ProcessingInstructionHandler handler);
-XMLPARSEAPI(void)
-XML_SetCommentHandler(XML_Parser parser,
-                      XML_CommentHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetCdataSectionHandler(XML_Parser parser,
-                           XML_StartCdataSectionHandler start,
-                           XML_EndCdataSectionHandler end);
-
-XMLPARSEAPI(void)
-XML_SetStartCdataSectionHandler(XML_Parser parser,
-                                XML_StartCdataSectionHandler start);
-
-XMLPARSEAPI(void)
-XML_SetEndCdataSectionHandler(XML_Parser parser,
-                              XML_EndCdataSectionHandler end);
-
-/* This sets the default handler and also inhibits expansion of
-   internal entities. These entity references will be passed to the
-   default handler, or to the skipped entity handler, if one is set.
-*/
-XMLPARSEAPI(void)
-XML_SetDefaultHandler(XML_Parser parser,
-                      XML_DefaultHandler handler);
-
-/* This sets the default handler but does not inhibit expansion of
-   internal entities.  The entity reference will not be passed to the
-   default handler.
-*/
-XMLPARSEAPI(void)
-XML_SetDefaultHandlerExpand(XML_Parser parser,
-                            XML_DefaultHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetDoctypeDeclHandler(XML_Parser parser,
-                          XML_StartDoctypeDeclHandler start,
-                          XML_EndDoctypeDeclHandler end);
-
-XMLPARSEAPI(void)
-XML_SetStartDoctypeDeclHandler(XML_Parser parser,
-                               XML_StartDoctypeDeclHandler start);
-
-XMLPARSEAPI(void)
-XML_SetEndDoctypeDeclHandler(XML_Parser parser,
-                             XML_EndDoctypeDeclHandler end);
-
-XMLPARSEAPI(void)
-XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
-                                 XML_UnparsedEntityDeclHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetNotationDeclHandler(XML_Parser parser,
-                           XML_NotationDeclHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetNamespaceDeclHandler(XML_Parser parser,
-                            XML_StartNamespaceDeclHandler start,
-                            XML_EndNamespaceDeclHandler end);
-
-XMLPARSEAPI(void)
-XML_SetStartNamespaceDeclHandler(XML_Parser parser,
-                                 XML_StartNamespaceDeclHandler start);
-
-XMLPARSEAPI(void)
-XML_SetEndNamespaceDeclHandler(XML_Parser parser,
-                               XML_EndNamespaceDeclHandler end);
-
-XMLPARSEAPI(void)
-XML_SetNotStandaloneHandler(XML_Parser parser,
-                            XML_NotStandaloneHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetExternalEntityRefHandler(XML_Parser parser,
-                                XML_ExternalEntityRefHandler handler);
-
-/* If a non-NULL value for arg is specified here, then it will be
-   passed as the first argument to the external entity ref handler
-   instead of the parser object.
-*/
-XMLPARSEAPI(void)
-XML_SetExternalEntityRefHandlerArg(XML_Parser parser,
-                                   void *arg);
-
-XMLPARSEAPI(void)
-XML_SetSkippedEntityHandler(XML_Parser parser,
-                            XML_SkippedEntityHandler handler);
-
-XMLPARSEAPI(void)
-XML_SetUnknownEncodingHandler(XML_Parser parser,
-                              XML_UnknownEncodingHandler handler,
-                              void *encodingHandlerData);
-
-/* This can be called within a handler for a start element, end
-   element, processing instruction or character data.  It causes the
-   corresponding markup to be passed to the default handler.
-*/
-XMLPARSEAPI(void)
-XML_DefaultCurrent(XML_Parser parser);
-
-/* If do_nst is non-zero, and namespace processing is in effect, and
-   a name has a prefix (i.e. an explicit namespace qualifier) then
-   that name is returned as a triplet in a single string separated by
-   the separator character specified when the parser was created: URI
-   + sep + local_name + sep + prefix.
-
-   If do_nst is zero, then namespace information is returned in the
-   default manner (URI + sep + local_name) whether or not the name
-   has a prefix.
-
-   Note: Calling XML_SetReturnNSTriplet after XML_Parse or
-     XML_ParseBuffer has no effect.
-*/
-
-XMLPARSEAPI(void)
-XML_SetReturnNSTriplet(XML_Parser parser, int do_nst);
-
-/* This value is passed as the userData argument to callbacks. */
-XMLPARSEAPI(void)
-XML_SetUserData(XML_Parser parser, void *userData);
-
-/* Returns the last value set by XML_SetUserData or NULL. */
-#define XML_GetUserData(parser) (*(void **)(parser))
-
-/* This is equivalent to supplying an encoding argument to
-   XML_ParserCreate. On success XML_SetEncoding returns non-zero,
-   zero otherwise.
-   Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer
-     has no effect and returns XML_STATUS_ERROR.
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_SetEncoding(XML_Parser parser, const XML_Char *encoding);
-
-/* If this function is called, then the parser will be passed as the
-   first argument to callbacks instead of userData.  The userData will
-   still be accessible using XML_GetUserData.
-*/
-XMLPARSEAPI(void)
-XML_UseParserAsHandlerArg(XML_Parser parser);
-
-/* If useDTD == XML_TRUE is passed to this function, then the parser
-   will assume that there is an external subset, even if none is
-   specified in the document. In such a case the parser will call the
-   externalEntityRefHandler with a value of NULL for the systemId
-   argument (the publicId and context arguments will be NULL as well).
-   Note: For the purpose of checking WFC: Entity Declared, passing
-     useDTD == XML_TRUE will make the parser behave as if the document
-     had a DTD with an external subset.
-   Note: If this function is called, then this must be done before
-     the first call to XML_Parse or XML_ParseBuffer, since it will
-     have no effect after that.  Returns
-     XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING.
-   Note: If the document does not have a DOCTYPE declaration at all,
-     then startDoctypeDeclHandler and endDoctypeDeclHandler will not
-     be called, despite an external subset being parsed.
-   Note: If XML_DTD is not defined when Expat is compiled, returns
-     XML_ERROR_FEATURE_REQUIRES_XML_DTD.
-*/
-XMLPARSEAPI(enum XML_Error)
-XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
-
-
-/* Sets the base to be used for resolving relative URIs in system
-   identifiers in declarations.  Resolving relative identifiers is
-   left to the application: this value will be passed through as the
-   base argument to the XML_ExternalEntityRefHandler,
-   XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base
-   argument will be copied.  Returns XML_STATUS_ERROR if out of memory,
-   XML_STATUS_OK otherwise.
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_SetBase(XML_Parser parser, const XML_Char *base);
-
-XMLPARSEAPI(const XML_Char *)
-XML_GetBase(XML_Parser parser);
-
-/* Returns the number of the attribute/value pairs passed in last call
-   to the XML_StartElementHandler that were specified in the start-tag
-   rather than defaulted. Each attribute/value pair counts as 2; thus
-   this correspondds to an index into the atts array passed to the
-   XML_StartElementHandler.
-*/
-XMLPARSEAPI(int)
-XML_GetSpecifiedAttributeCount(XML_Parser parser);
-
-/* Returns the index of the ID attribute passed in the last call to
-   XML_StartElementHandler, or -1 if there is no ID attribute.  Each
-   attribute/value pair counts as 2; thus this correspondds to an
-   index into the atts array passed to the XML_StartElementHandler.
-*/
-XMLPARSEAPI(int)
-XML_GetIdAttributeIndex(XML_Parser parser);
-
-/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is
-   detected.  The last call to XML_Parse must have isFinal true; len
-   may be zero for this call (or any other).
-
-   Though the return values for these functions has always been
-   described as a Boolean value, the implementation, at least for the
-   1.95.x series, has always returned exactly one of the XML_Status
-   values.
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_Parse(XML_Parser parser, const char *s, int len, int isFinal);
-
-XMLPARSEAPI(void *)
-XML_GetBuffer(XML_Parser parser, int len);
-
-XMLPARSEAPI(enum XML_Status)
-XML_ParseBuffer(XML_Parser parser, int len, int isFinal);
-
-/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return.
-   Must be called from within a call-back handler, except when aborting
-   (resumable = 0) an already suspended parser. Some call-backs may
-   still follow because they would otherwise get lost. Examples:
-   - endElementHandler() for empty elements when stopped in
-     startElementHandler(), 
-   - endNameSpaceDeclHandler() when stopped in endElementHandler(), 
-   and possibly others.
-
-   Can be called from most handlers, including DTD related call-backs,
-   except when parsing an external parameter entity and resumable != 0.
-   Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise.
-   Possible error codes: 
-   - XML_ERROR_SUSPENDED: when suspending an already suspended parser.
-   - XML_ERROR_FINISHED: when the parser has already finished.
-   - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE.
-
-   When resumable != 0 (true) then parsing is suspended, that is, 
-   XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. 
-   Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer()
-   return XML_STATUS_ERROR with error code XML_ERROR_ABORTED.
-
-   *Note*:
-   This will be applied to the current parser instance only, that is, if
-   there is a parent parser then it will continue parsing when the
-   externalEntityRefHandler() returns. It is up to the implementation of
-   the externalEntityRefHandler() to call XML_StopParser() on the parent
-   parser (recursively), if one wants to stop parsing altogether.
-
-   When suspended, parsing can be resumed by calling XML_ResumeParser(). 
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_StopParser(XML_Parser parser, XML_Bool resumable);
-
-/* Resumes parsing after it has been suspended with XML_StopParser().
-   Must not be called from within a handler call-back. Returns same
-   status codes as XML_Parse() or XML_ParseBuffer().
-   Additional error code XML_ERROR_NOT_SUSPENDED possible.   
-
-   *Note*:
-   This must be called on the most deeply nested child parser instance
-   first, and on its parent parser only after the child parser has finished,
-   to be applied recursively until the document entity's parser is restarted.
-   That is, the parent parser will not resume by itself and it is up to the
-   application to call XML_ResumeParser() on it at the appropriate moment.
-*/
-XMLPARSEAPI(enum XML_Status)
-XML_ResumeParser(XML_Parser parser);
-
-enum XML_Parsing {
-  XML_INITIALIZED,
-  XML_PARSING,
-  XML_FINISHED,
-  XML_SUSPENDED
-};
-
-typedef struct {
-  enum XML_Parsing parsing;
-  XML_Bool finalBuffer;
-} XML_ParsingStatus;
-
-/* Returns status of parser with respect to being initialized, parsing,
-   finished, or suspended and processing the final buffer.
-   XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus,
-   XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED
-*/
-XMLPARSEAPI(void)
-XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status);
-
-/* Creates an XML_Parser object that can parse an external general
-   entity; context is a '\0'-terminated string specifying the parse
-   context; encoding is a '\0'-terminated string giving the name of
-   the externally specified encoding, or NULL if there is no
-   externally specified encoding.  The context string consists of a
-   sequence of tokens separated by formfeeds (\f); a token consisting
-   of a name specifies that the general entity of the name is open; a
-   token of the form prefix=uri specifies the namespace for a
-   particular prefix; a token of the form =uri specifies the default
-   namespace.  This can be called at any point after the first call to
-   an ExternalEntityRefHandler so longer as the parser has not yet
-   been freed.  The new parser is completely independent and may
-   safely be used in a separate thread.  The handlers and userData are
-   initialized from the parser argument.  Returns NULL if out of memory.
-   Otherwise returns a new XML_Parser object.
-*/
-XMLPARSEAPI(XML_Parser)
-XML_ExternalEntityParserCreate(XML_Parser parser,
-                               const XML_Char *context,
-                               const XML_Char *encoding);
-
-enum XML_ParamEntityParsing {
-  XML_PARAM_ENTITY_PARSING_NEVER,
-  XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE,
-  XML_PARAM_ENTITY_PARSING_ALWAYS
-};
-
-/* Controls parsing of parameter entities (including the external DTD
-   subset). If parsing of parameter entities is enabled, then
-   references to external parameter entities (including the external
-   DTD subset) will be passed to the handler set with
-   XML_SetExternalEntityRefHandler.  The context passed will be 0.
-
-   Unlike external general entities, external parameter entities can
-   only be parsed synchronously.  If the external parameter entity is
-   to be parsed, it must be parsed during the call to the external
-   entity ref handler: the complete sequence of
-   XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and
-   XML_ParserFree calls must be made during this call.  After
-   XML_ExternalEntityParserCreate has been called to create the parser
-   for the external parameter entity (context must be 0 for this
-   call), it is illegal to make any calls on the old parser until
-   XML_ParserFree has been called on the newly created parser.
-   If the library has been compiled without support for parameter
-   entity parsing (ie without XML_DTD being defined), then
-   XML_SetParamEntityParsing will return 0 if parsing of parameter
-   entities is requested; otherwise it will return non-zero.
-   Note: If XML_SetParamEntityParsing is called after XML_Parse or
-      XML_ParseBuffer, then it has no effect and will always return 0.
-*/
-XMLPARSEAPI(int)
-XML_SetParamEntityParsing(XML_Parser parser,
-                          enum XML_ParamEntityParsing parsing);
-
-/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then
-   XML_GetErrorCode returns information about the error.
-*/
-XMLPARSEAPI(enum XML_Error)
-XML_GetErrorCode(XML_Parser parser);
-
-/* These functions return information about the current parse
-   location.  They may be called from any callback called to report
-   some parse event; in this case the location is the location of the
-   first of the sequence of characters that generated the event.  When
-   called from callbacks generated by declarations in the document
-   prologue, the location identified isn't as neatly defined, but will
-   be within the relevant markup.  When called outside of the callback
-   functions, the position indicated will be just past the last parse
-   event (regardless of whether there was an associated callback).
-   
-   They may also be called after returning from a call to XML_Parse
-   or XML_ParseBuffer.  If the return value is XML_STATUS_ERROR then
-   the location is the location of the character at which the error
-   was detected; otherwise the location is the location of the last
-   parse event, as described above.
-*/
-XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser);
-XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser);
-XMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser);
-
-/* Return the number of bytes in the current event.
-   Returns 0 if the event is in an internal entity.
-*/
-XMLPARSEAPI(int)
-XML_GetCurrentByteCount(XML_Parser parser);
-
-/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets
-   the integer pointed to by offset to the offset within this buffer
-   of the current parse position, and sets the integer pointed to by size
-   to the size of this buffer (the number of input bytes). Otherwise
-   returns a NULL pointer. Also returns a NULL pointer if a parse isn't
-   active.
-
-   NOTE: The character pointer returned should not be used outside
-   the handler that makes the call.
-*/
-XMLPARSEAPI(const char *)
-XML_GetInputContext(XML_Parser parser,
-                    int *offset,
-                    int *size);
-
-/* For backwards compatibility with previous versions. */
-#define XML_GetErrorLineNumber   XML_GetCurrentLineNumber
-#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber
-#define XML_GetErrorByteIndex    XML_GetCurrentByteIndex
-
-/* Frees the content model passed to the element declaration handler */
-XMLPARSEAPI(void)
-XML_FreeContentModel(XML_Parser parser, XML_Content *model);
-
-/* Exposing the memory handling functions used in Expat */
-XMLPARSEAPI(void *)
-XML_MemMalloc(XML_Parser parser, size_t size);
-
-XMLPARSEAPI(void *)
-XML_MemRealloc(XML_Parser parser, void *ptr, size_t size);
-
-XMLPARSEAPI(void)
-XML_MemFree(XML_Parser parser, void *ptr);
-
-/* Frees memory used by the parser. */
-XMLPARSEAPI(void)
-XML_ParserFree(XML_Parser parser);
-
-/* Returns a string describing the error. */
-XMLPARSEAPI(const XML_LChar *)
-XML_ErrorString(enum XML_Error code);
-
-/* Return a string containing the version number of this expat */
-XMLPARSEAPI(const XML_LChar *)
-XML_ExpatVersion(void);
-
-typedef struct {
-  int major;
-  int minor;
-  int micro;
-} XML_Expat_Version;
-
-/* Return an XML_Expat_Version structure containing numeric version
-   number information for this version of expat.
-*/
-XMLPARSEAPI(XML_Expat_Version)
-XML_ExpatVersionInfo(void);
-
-/* Added in Expat 1.95.5. */
-enum XML_FeatureEnum {
-  XML_FEATURE_END = 0,
-  XML_FEATURE_UNICODE,
-  XML_FEATURE_UNICODE_WCHAR_T,
-  XML_FEATURE_DTD,
-  XML_FEATURE_CONTEXT_BYTES,
-  XML_FEATURE_MIN_SIZE,
-  XML_FEATURE_SIZEOF_XML_CHAR,
-  XML_FEATURE_SIZEOF_XML_LCHAR,
-  XML_FEATURE_NS
-  /* Additional features must be added to the end of this enum. */
-};
-
-typedef struct {
-  enum XML_FeatureEnum  feature;
-  const XML_LChar       *name;
-  long int              value;
-} XML_Feature;
-
-XMLPARSEAPI(const XML_Feature *)
-XML_GetFeatureList(void);
-
-
-/* Expat follows the GNU/Linux convention of odd number minor version for
-   beta/development releases and even number minor version for stable
-   releases. Micro is bumped with each release, and set to 0 with each
-   change to major or minor version.
-*/
-#define XML_MAJOR_VERSION 2
-#define XML_MINOR_VERSION 0
-#define XML_MICRO_VERSION 0
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* not Expat_INCLUDED */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat_config.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat_config.h
deleted file mode 100644
index 5f8f7a9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat_config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Expat configuration for python. This file is not part of the expat
- * distribution.
- */
-#ifndef EXPAT_CONFIG_H
-#define EXPAT_CONFIG_H
-
-#include <pyconfig.h>
-#ifdef WORDS_BIGENDIAN
-#define BYTEORDER 4321
-#else
-#define BYTEORDER 1234
-#endif
-
-#define XML_NS 1
-#define XML_DTD 1
-#define XML_CONTEXT_BYTES 1024
-
-#endif /* EXPAT_CONFIG_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat_external.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat_external.h
deleted file mode 100644
index d71d051..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/expat_external.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#ifndef Expat_External_INCLUDED
-#define Expat_External_INCLUDED 1
-
-/* External API definitions */
-
-/* Namespace external symbols to allow multiple libexpat version to
-   co-exist. */
-#if !defined(UEFI_C_SOURCE)
-  #include "pyexpatns.h"
-#endif
-
-#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
-#define XML_USE_MSC_EXTENSIONS 1
-#endif
-
-/* Expat tries very hard to make the API boundary very specifically
-   defined.  There are two macros defined to control this boundary;
-   each of these can be defined before including this header to
-   achieve some different behavior, but doing so it not recommended or
-   tested frequently.
-
-   XMLCALL    - The calling convention to use for all calls across the
-                "library boundary."  This will default to cdecl, and
-                try really hard to tell the compiler that's what we
-                want.
-
-   XMLIMPORT  - Whatever magic is needed to note that a function is
-                to be imported from a dynamically loaded library
-                (.dll, .so, or .sl, depending on your platform).
-
-   The XMLCALL macro was added in Expat 1.95.7.  The only one which is
-   expected to be directly useful in client code is XMLCALL.
-
-   Note that on at least some Unix versions, the Expat library must be
-   compiled with the cdecl calling convention as the default since
-   system headers may assume the cdecl convention.
-*/
-#ifndef XMLCALL
-#if defined(XML_USE_MSC_EXTENSIONS)
-#define XMLCALL __cdecl
-#elif defined(__GNUC__) && defined(__i386)
-#define XMLCALL __attribute__((cdecl))
-#else
-/* For any platform which uses this definition and supports more than
-   one calling convention, we need to extend this definition to
-   declare the convention used on that platform, if it's possible to
-   do so.
-
-   If this is the case for your platform, please file a bug report
-   with information on how to identify your platform via the C
-   pre-processor and how to specify the same calling convention as the
-   platform's malloc() implementation.
-*/
-#define XMLCALL
-#endif
-#endif  /* not defined XMLCALL */
-
-
-#if !defined(XML_STATIC) && !defined(XMLIMPORT)
-#ifndef XML_BUILDING_EXPAT
-/* using Expat from an application */
-
-#ifdef XML_USE_MSC_EXTENSIONS
-#define XMLIMPORT __declspec(dllimport)
-#endif
-
-#endif
-#endif  /* not defined XML_STATIC */
-
-
-/* If we didn't define it above, define it away: */
-#ifndef XMLIMPORT
-#define XMLIMPORT
-#endif
-
-
-#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef XML_UNICODE_WCHAR_T
-#define XML_UNICODE
-#endif
-
-#ifdef XML_UNICODE     /* Information is UTF-16 encoded. */
-#ifdef XML_UNICODE_WCHAR_T
-typedef wchar_t XML_Char;
-typedef wchar_t XML_LChar;
-#else
-typedef unsigned short XML_Char;
-typedef char XML_LChar;
-#endif /* XML_UNICODE_WCHAR_T */
-#else                  /* Information is UTF-8 encoded. */
-typedef char XML_Char;
-typedef char XML_LChar;
-#endif /* XML_UNICODE */
-
-#ifdef XML_LARGE_SIZE  /* Use large integers for file/stream positions. */
-#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
-typedef __int64 XML_Index;
-typedef unsigned __int64 XML_Size;
-#else
-typedef long long XML_Index;
-typedef unsigned long long XML_Size;
-#endif
-#else
-typedef long XML_Index;
-typedef unsigned long XML_Size;
-#endif /* XML_LARGE_SIZE */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* not Expat_External_INCLUDED */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/iasciitab.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/iasciitab.h
deleted file mode 100644
index 980686f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/iasciitab.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-/* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */
-/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML,
-/* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML,
-/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM,
-/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS,
-/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS,
-/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL,
-/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
-/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT,
-/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI,
-/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST,
-/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
-/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
-/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB,
-/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT,
-/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX,
-/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT,
-/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
-/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER,
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/internal.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/internal.h
deleted file mode 100644
index 09dbaf4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/internal.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* internal.h
-
-   Internal definitions used by Expat.  This is not needed to compile
-   client code.
-
-   The following calling convention macros are defined for frequently
-   called functions:
-
-   FASTCALL    - Used for those internal functions that have a simple
-                 body and a low number of arguments and local variables.
-
-   PTRCALL     - Used for functions called though function pointers.
-
-   PTRFASTCALL - Like PTRCALL, but for low number of arguments.
-
-   inline      - Used for selected internal functions for which inlining
-                 may improve performance on some platforms.
-
-   Note: Use of these macros is based on judgement, not hard rules,
-         and therefore subject to change.
-*/
-
-#if defined(__GNUC__) && defined(__i386__)
-/* We'll use this version by default only where we know it helps.
-
-   regparm() generates warnings on Solaris boxes.   See SF bug #692878.
-
-   Instability reported with egcs on a RedHat Linux 7.3.
-   Let's comment out:
-   #define FASTCALL __attribute__((stdcall, regparm(3)))
-   and let's try this:
-*/
-#define FASTCALL __attribute__((regparm(3)))
-#define PTRFASTCALL __attribute__((regparm(3)))
-#endif
-
-/* Using __fastcall seems to have an unexpected negative effect under
-   MS VC++, especially for function pointers, so we won't use it for
-   now on that platform. It may be reconsidered for a future release
-   if it can be made more effective.
-   Likely reason: __fastcall on Windows is like stdcall, therefore
-   the compiler cannot perform stack optimizations for call clusters.
-*/
-
-/* Make sure all of these are defined if they aren't already. */
-
-#ifndef FASTCALL
-#define FASTCALL
-#endif
-
-#ifndef PTRCALL
-#define PTRCALL
-#endif
-
-#ifndef PTRFASTCALL
-#define PTRFASTCALL
-#endif
-
-#ifndef XML_MIN_SIZE
-#if !defined(__cplusplus) && !defined(inline)
-#ifdef __GNUC__
-#define inline __inline
-#endif /* __GNUC__ */
-#endif
-#endif /* XML_MIN_SIZE */
-
-#ifdef __cplusplus
-#define inline inline
-#else
-#ifndef inline
-#define inline
-#endif
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/latin1tab.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/latin1tab.h
deleted file mode 100644
index 0c5b1ca..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/latin1tab.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-/* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER,
-/* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME,
-/* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER,
-/* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER,
-/* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
-/* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER,
-/* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
-/* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT,
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/macconfig.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/macconfig.h
deleted file mode 100644
index 286f916..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/macconfig.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*================================================================
-** Copyright 2000, Clark Cooper
-** All rights reserved.
-**
-** This is free software. You are permitted to copy, distribute, or modify
-** it under the terms of the MIT/X license (contained in the COPYING file
-** with this distribution.)
-**
-*/
-
-#ifndef MACCONFIG_H
-#define MACCONFIG_H
-
-
-/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
-#define BYTEORDER  4321
-
-/* Define to 1 if you have the `bcopy' function. */
-#undef HAVE_BCOPY
-
-/* Define to 1 if you have the `memmove' function. */
-#define HAVE_MEMMOVE
-
-/* Define to 1 if you have a working `mmap' system call. */
-#undef HAVE_MMAP
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* whether byteorder is bigendian */
-#define WORDS_BIGENDIAN
-
-/* Define to specify how much context to retain around the current parse
-   point. */
-#undef XML_CONTEXT_BYTES
-
-/* Define to make parameter entity parsing functionality available. */
-#define XML_DTD
-
-/* Define to make XML Namespaces functionality available. */
-#define XML_NS
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `long' if <sys/types.h> does not define. */
-#define off_t  long
-
-/* Define to `unsigned' if <sys/types.h> does not define. */
-#undef size_t
-
-
-#endif /* ifndef MACCONFIG_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/nametab.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/nametab.h
deleted file mode 100644
index adea34c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/nametab.h
+++ /dev/null
@@ -1,150 +0,0 @@
-static const unsigned namingBitmap[] = {
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE,
-0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF,
-0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF,
-0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
-0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
-0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
-0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
-0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
-0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF,
-0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000,
-0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060,
-0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003,
-0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003,
-0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000,
-0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001,
-0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003,
-0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000,
-0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003,
-0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003,
-0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000,
-0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000,
-0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF,
-0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB,
-0x40000000, 0xF580C900, 0x00000007, 0x02010800,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF,
-0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF,
-0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF,
-0x00000000, 0x00004C40, 0x00000000, 0x00000000,
-0x00000007, 0x00000000, 0x00000000, 0x00000000,
-0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF,
-0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF,
-0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000,
-0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
-0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000,
-0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE,
-0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF,
-0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF,
-0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000,
-0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003,
-0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD,
-0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF,
-0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF,
-0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE,
-0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF,
-0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF,
-0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF,
-0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF,
-0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF,
-0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0,
-0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1,
-0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3,
-0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80,
-0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3,
-0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3,
-0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000,
-0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000,
-0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF,
-0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x1FFF0000, 0x00000002,
-0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF,
-0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF,
-};
-static const unsigned char nmstrtPages[] = {
-0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00,
-0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
-0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
-0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-static const unsigned char namePages[] = {
-0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00,
-0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
-0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13,
-0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/pyexpatns.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/pyexpatns.h
deleted file mode 100644
index 04b46f3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/pyexpatns.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Copyright (c) 2005-2006 ActiveState Software Inc.
- *
- * Namespace all expat exported symbols to avoid dynamic loading symbol
- * collisions when embedding Python.
- *
- * The Problem:
- * - you embed Python in some app
- * - the app dynamically loads libexpat of version X
- * - the embedded Python imports pyexpat (which was built against
- *   libexpat version X+n)
- * --> pyexpat gets the expat symbols from the already loaded and *older*
- *     libexpat: crash (Specifically the crash we observed was in
- *     getting an old XML_ErrorString (from xmlparse.c) and then calling
- *     it with newer values in the XML_Error enum:
- *
- *       // pyexpat.c, line 1970
- *       ...
- *       // Added in Expat 1.95.7.
- *       MYCONST(XML_ERROR_UNBOUND_PREFIX);
- *       ...
- *
- *
- * The Solution:
- * Prefix all a exported symbols with "PyExpat_". This is similar to
- * what Mozilla does for some common libs:
- * http://lxr.mozilla.org/seamonkey/source/modules/libimg/png/mozpngconf.h#115
- *
- * The list of relevant exported symbols can be had with this command:
- * 
-       nm pyexpat.so \
-           | grep -v " [a-zBUA] " \
-           | grep -v "_fini\|_init\|initpyexpat"
- *
- * If any of those symbols are NOT prefixed with "PyExpat_" then
- * a #define should be added for it here.
- */
-
-#ifndef PYEXPATNS_H
-#define PYEXPATNS_H
-
-#define XML_DefaultCurrent              PyExpat_XML_DefaultCurrent
-#define XML_ErrorString                 PyExpat_XML_ErrorString
-#define XML_ExpatVersion                PyExpat_XML_ExpatVersion
-#define XML_ExpatVersionInfo            PyExpat_XML_ExpatVersionInfo
-#define XML_ExternalEntityParserCreate  PyExpat_XML_ExternalEntityParserCreate
-#define XML_FreeContentModel            PyExpat_XML_FreeContentModel
-#define XML_GetBase                     PyExpat_XML_GetBase
-#define XML_GetBuffer                   PyExpat_XML_GetBuffer
-#define XML_GetCurrentByteCount         PyExpat_XML_GetCurrentByteCount
-#define XML_GetCurrentByteIndex         PyExpat_XML_GetCurrentByteIndex
-#define XML_GetCurrentColumnNumber      PyExpat_XML_GetCurrentColumnNumber
-#define XML_GetCurrentLineNumber        PyExpat_XML_GetCurrentLineNumber
-#define XML_GetErrorCode                PyExpat_XML_GetErrorCode
-#define XML_GetFeatureList              PyExpat_XML_GetFeatureList
-#define XML_GetIdAttributeIndex         PyExpat_XML_GetIdAttributeIndex
-#define XML_GetInputContext             PyExpat_XML_GetInputContext
-#define XML_GetParsingStatus            PyExpat_XML_GetParsingStatus
-#define XML_GetSpecifiedAttributeCount  PyExpat_XML_GetSpecifiedAttributeCount
-#define XmlGetUtf16InternalEncoding     PyExpat_XmlGetUtf16InternalEncoding
-#define XmlGetUtf16InternalEncodingNS   PyExpat_XmlGetUtf16InternalEncodingNS
-#define XmlGetUtf8InternalEncoding      PyExpat_XmlGetUtf8InternalEncoding
-#define XmlGetUtf8InternalEncodingNS    PyExpat_XmlGetUtf8InternalEncodingNS
-#define XmlInitEncoding                 PyExpat_XmlInitEncoding
-#define XmlInitEncodingNS               PyExpat_XmlInitEncodingNS
-#define XmlInitUnknownEncoding          PyExpat_XmlInitUnknownEncoding
-#define XmlInitUnknownEncodingNS        PyExpat_XmlInitUnknownEncodingNS
-#define XML_MemFree                     PyExpat_XML_MemFree
-#define XML_MemMalloc                   PyExpat_XML_MemMalloc
-#define XML_MemRealloc                  PyExpat_XML_MemRealloc
-#define XML_Parse                       PyExpat_XML_Parse
-#define XML_ParseBuffer                 PyExpat_XML_ParseBuffer
-#define XML_ParserCreate                PyExpat_XML_ParserCreate
-#define XML_ParserCreate_MM             PyExpat_XML_ParserCreate_MM
-#define XML_ParserCreateNS              PyExpat_XML_ParserCreateNS
-#define XML_ParserFree                  PyExpat_XML_ParserFree
-#define XML_ParserReset                 PyExpat_XML_ParserReset
-#define XmlParseXmlDecl                 PyExpat_XmlParseXmlDecl
-#define XmlParseXmlDeclNS               PyExpat_XmlParseXmlDeclNS
-#define XmlPrologStateInit              PyExpat_XmlPrologStateInit
-#define XmlPrologStateInitExternalEntity    PyExpat_XmlPrologStateInitExternalEntity
-#define XML_ResumeParser                PyExpat_XML_ResumeParser
-#define XML_SetAttlistDeclHandler       PyExpat_XML_SetAttlistDeclHandler
-#define XML_SetBase                     PyExpat_XML_SetBase
-#define XML_SetCdataSectionHandler      PyExpat_XML_SetCdataSectionHandler
-#define XML_SetCharacterDataHandler     PyExpat_XML_SetCharacterDataHandler
-#define XML_SetCommentHandler           PyExpat_XML_SetCommentHandler
-#define XML_SetDefaultHandler           PyExpat_XML_SetDefaultHandler
-#define XML_SetDefaultHandlerExpand     PyExpat_XML_SetDefaultHandlerExpand
-#define XML_SetDoctypeDeclHandler       PyExpat_XML_SetDoctypeDeclHandler
-#define XML_SetElementDeclHandler       PyExpat_XML_SetElementDeclHandler
-#define XML_SetElementHandler           PyExpat_XML_SetElementHandler
-#define XML_SetEncoding                 PyExpat_XML_SetEncoding
-#define XML_SetEndCdataSectionHandler   PyExpat_XML_SetEndCdataSectionHandler
-#define XML_SetEndDoctypeDeclHandler    PyExpat_XML_SetEndDoctypeDeclHandler
-#define XML_SetEndElementHandler        PyExpat_XML_SetEndElementHandler
-#define XML_SetEndNamespaceDeclHandler  PyExpat_XML_SetEndNamespaceDeclHandler
-#define XML_SetEntityDeclHandler        PyExpat_XML_SetEntityDeclHandler
-#define XML_SetExternalEntityRefHandler PyExpat_XML_SetExternalEntityRefHandler
-#define XML_SetExternalEntityRefHandlerArg  PyExpat_XML_SetExternalEntityRefHandlerArg
-#define XML_SetNamespaceDeclHandler     PyExpat_XML_SetNamespaceDeclHandler
-#define XML_SetNotationDeclHandler      PyExpat_XML_SetNotationDeclHandler
-#define XML_SetNotStandaloneHandler     PyExpat_XML_SetNotStandaloneHandler
-#define XML_SetParamEntityParsing       PyExpat_XML_SetParamEntityParsing
-#define XML_SetProcessingInstructionHandler PyExpat_XML_SetProcessingInstructionHandler
-#define XML_SetReturnNSTriplet          PyExpat_XML_SetReturnNSTriplet
-#define XML_SetSkippedEntityHandler     PyExpat_XML_SetSkippedEntityHandler
-#define XML_SetStartCdataSectionHandler PyExpat_XML_SetStartCdataSectionHandler
-#define XML_SetStartDoctypeDeclHandler  PyExpat_XML_SetStartDoctypeDeclHandler
-#define XML_SetStartElementHandler      PyExpat_XML_SetStartElementHandler
-#define XML_SetStartNamespaceDeclHandler    PyExpat_XML_SetStartNamespaceDeclHandler
-#define XML_SetUnknownEncodingHandler   PyExpat_XML_SetUnknownEncodingHandler
-#define XML_SetUnparsedEntityDeclHandler    PyExpat_XML_SetUnparsedEntityDeclHandler
-#define XML_SetUserData                 PyExpat_XML_SetUserData
-#define XML_SetXmlDeclHandler           PyExpat_XML_SetXmlDeclHandler
-#define XmlSizeOfUnknownEncoding        PyExpat_XmlSizeOfUnknownEncoding
-#define XML_StopParser                  PyExpat_XML_StopParser
-#define XML_UseForeignDTD               PyExpat_XML_UseForeignDTD
-#define XML_UseParserAsHandlerArg       PyExpat_XML_UseParserAsHandlerArg
-#define XmlUtf16Encode                  PyExpat_XmlUtf16Encode
-#define XmlUtf8Encode                   PyExpat_XmlUtf8Encode
-
-
-#endif /* !PYEXPATNS_H */
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/utf8tab.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/utf8tab.h
deleted file mode 100644
index 3419601..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/utf8tab.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-
-/* 0x80 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL,
-/* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2,
-/* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
-/* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
-/* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
-/* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3,
-/* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4,
-/* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML,
-/* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM,
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/winconfig.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/winconfig.h
deleted file mode 100644
index 922ba10..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/winconfig.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*================================================================
-** Copyright 2000, Clark Cooper
-** All rights reserved.
-**
-** This is free software. You are permitted to copy, distribute, or modify
-** it under the terms of the MIT/X license (contained in the COPYING file
-** with this distribution.)
-*/
-
-#ifndef WINCONFIG_H
-#define WINCONFIG_H
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#undef WIN32_LEAN_AND_MEAN
-
-#include <memory.h>
-#include <string.h>
-
-#define XML_NS 1
-#define XML_DTD 1
-#define XML_CONTEXT_BYTES 1024
-
-/* we will assume all Windows platforms are little endian */
-#define BYTEORDER 1234
-
-/* Windows has memmove() available. */
-#define HAVE_MEMMOVE
-
-#endif /* ndef WINCONFIG_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlparse.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlparse.c
deleted file mode 100644
index 87ee2ea..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlparse.c
+++ /dev/null
@@ -1,6279 +0,0 @@
-/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#define XML_BUILDING_EXPAT 1
-
-#ifdef COMPILED_FROM_DSP
-#include "winconfig.h"
-#elif defined(MACOS_CLASSIC)
-#include "macconfig.h"
-#elif defined(__amigaos4__)
-#include "amigaconfig.h"
-#elif defined(HAVE_EXPAT_CONFIG_H)
-#include <expat_config.h>
-#endif /* ndef COMPILED_FROM_DSP */
-
-#include <stddef.h>
-#include <string.h>                     /* memset(), memcpy() */
-#include <assert.h>
-
-#if defined(UEFI_C_SOURCE)
-  #include <expat/expat.h>
-#else
-#include "expat.h"
-#endif
-
-#ifdef XML_UNICODE
-#define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX
-#define XmlConvert XmlUtf16Convert
-#define XmlGetInternalEncoding XmlGetUtf16InternalEncoding
-#define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS
-#define XmlEncode XmlUtf16Encode
-#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((unsigned long)s) & 1))
-typedef unsigned short ICHAR;
-#else
-#define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX
-#define XmlConvert XmlUtf8Convert
-#define XmlGetInternalEncoding XmlGetUtf8InternalEncoding
-#define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS
-#define XmlEncode XmlUtf8Encode
-#define MUST_CONVERT(enc, s) (!(enc)->isUtf8)
-typedef char ICHAR;
-#endif
-
-
-#ifndef XML_NS
-
-#define XmlInitEncodingNS XmlInitEncoding
-#define XmlInitUnknownEncodingNS XmlInitUnknownEncoding
-#undef XmlGetInternalEncodingNS
-#define XmlGetInternalEncodingNS XmlGetInternalEncoding
-#define XmlParseXmlDeclNS XmlParseXmlDecl
-
-#endif
-
-#ifdef XML_UNICODE
-
-#ifdef XML_UNICODE_WCHAR_T
-#define XML_T(x) (const wchar_t)x
-#define XML_L(x) L ## x
-#else
-#define XML_T(x) (const unsigned short)x
-#define XML_L(x) x
-#endif
-
-#else
-
-#define XML_T(x) x
-#define XML_L(x) x
-
-#endif
-
-/* Round up n to be a multiple of sz, where sz is a power of 2. */
-#define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1))
-
-/* Handle the case where memmove() doesn't exist. */
-#ifndef HAVE_MEMMOVE
-#ifdef HAVE_BCOPY
-#define memmove(d,s,l) bcopy((s),(d),(l))
-#else
-#error memmove does not exist on this platform, nor is a substitute available
-#endif /* HAVE_BCOPY */
-#endif /* HAVE_MEMMOVE */
-
-#include "internal.h"
-#include "xmltok.h"
-#include "xmlrole.h"
-
-typedef const XML_Char *KEY;
-
-typedef struct {
-  KEY name;
-} NAMED;
-
-typedef struct {
-  NAMED **v;
-  unsigned char power;
-  size_t size;
-  size_t used;
-  const XML_Memory_Handling_Suite *mem;
-} HASH_TABLE;
-
-/* Basic character hash algorithm, taken from Python's string hash:
-   h = h * 1000003 ^ character, the constant being a prime number.
-
-*/
-#ifdef XML_UNICODE
-#define CHAR_HASH(h, c) \
-  (((h) * 0xF4243) ^ (unsigned short)(c))
-#else
-#define CHAR_HASH(h, c) \
-  (((h) * 0xF4243) ^ (unsigned char)(c))
-#endif
-
-/* For probing (after a collision) we need a step size relative prime
-   to the hash table size, which is a power of 2. We use double-hashing,
-   since we can calculate a second hash value cheaply by taking those bits
-   of the first hash value that were discarded (masked out) when the table
-   index was calculated: index = hash & mask, where mask = table->size - 1.
-   We limit the maximum step size to table->size / 4 (mask >> 2) and make
-   it odd, since odd numbers are always relative prime to a power of 2.
-*/
-#define SECOND_HASH(hash, mask, power) \
-  ((((hash) & ~(mask)) >> ((power) - 1)) & ((mask) >> 2))
-#define PROBE_STEP(hash, mask, power) \
-  ((unsigned char)((SECOND_HASH(hash, mask, power)) | 1))
-
-typedef struct {
-  NAMED **p;
-  NAMED **end;
-} HASH_TABLE_ITER;
-
-#define INIT_TAG_BUF_SIZE 32  /* must be a multiple of sizeof(XML_Char) */
-#define INIT_DATA_BUF_SIZE 1024
-#define INIT_ATTS_SIZE 16
-#define INIT_ATTS_VERSION 0xFFFFFFFF
-#define INIT_BLOCK_SIZE 1024
-#define INIT_BUFFER_SIZE 1024
-
-#define EXPAND_SPARE 24
-
-typedef struct binding {
-  struct prefix *prefix;
-  struct binding *nextTagBinding;
-  struct binding *prevPrefixBinding;
-  const struct attribute_id *attId;
-  XML_Char *uri;
-  int uriLen;
-  int uriAlloc;
-} BINDING;
-
-typedef struct prefix {
-  const XML_Char *name;
-  BINDING *binding;
-} PREFIX;
-
-typedef struct {
-  const XML_Char *str;
-  const XML_Char *localPart;
-  const XML_Char *prefix;
-  int strLen;
-  int uriLen;
-  int prefixLen;
-} TAG_NAME;
-
-/* TAG represents an open element.
-   The name of the element is stored in both the document and API
-   encodings.  The memory buffer 'buf' is a separately-allocated
-   memory area which stores the name.  During the XML_Parse()/
-   XMLParseBuffer() when the element is open, the memory for the 'raw'
-   version of the name (in the document encoding) is shared with the
-   document buffer.  If the element is open across calls to
-   XML_Parse()/XML_ParseBuffer(), the buffer is re-allocated to
-   contain the 'raw' name as well.
-
-   A parser re-uses these structures, maintaining a list of allocated
-   TAG objects in a free list.
-*/
-typedef struct tag {
-  struct tag *parent;           /* parent of this element */
-  const char *rawName;          /* tagName in the original encoding */
-  int rawNameLength;
-  TAG_NAME name;                /* tagName in the API encoding */
-  char *buf;                    /* buffer for name components */
-  char *bufEnd;                 /* end of the buffer */
-  BINDING *bindings;
-} TAG;
-
-typedef struct {
-  const XML_Char *name;
-  const XML_Char *textPtr;
-  int textLen;                  /* length in XML_Chars */
-  int processed;                /* # of processed bytes - when suspended */
-  const XML_Char *systemId;
-  const XML_Char *base;
-  const XML_Char *publicId;
-  const XML_Char *notation;
-  XML_Bool open;
-  XML_Bool is_param;
-  XML_Bool is_internal; /* true if declared in internal subset outside PE */
-} ENTITY;
-
-typedef struct {
-  enum XML_Content_Type         type;
-  enum XML_Content_Quant        quant;
-  const XML_Char *              name;
-  int                           firstchild;
-  int                           lastchild;
-  int                           childcnt;
-  int                           nextsib;
-} CONTENT_SCAFFOLD;
-
-#define INIT_SCAFFOLD_ELEMENTS 32
-
-typedef struct block {
-  struct block *next;
-  int size;
-  XML_Char s[1];
-} BLOCK;
-
-typedef struct {
-  BLOCK *blocks;
-  BLOCK *freeBlocks;
-  const XML_Char *end;
-  XML_Char *ptr;
-  XML_Char *start;
-  const XML_Memory_Handling_Suite *mem;
-} STRING_POOL;
-
-/* The XML_Char before the name is used to determine whether
-   an attribute has been specified. */
-typedef struct attribute_id {
-  XML_Char *name;
-  PREFIX *prefix;
-  XML_Bool maybeTokenized;
-  XML_Bool xmlns;
-} ATTRIBUTE_ID;
-
-typedef struct {
-  const ATTRIBUTE_ID *id;
-  XML_Bool isCdata;
-  const XML_Char *value;
-} DEFAULT_ATTRIBUTE;
-
-typedef struct {
-  unsigned long version;
-  unsigned long hash;
-  const XML_Char *uriName;
-} NS_ATT;
-
-typedef struct {
-  const XML_Char *name;
-  PREFIX *prefix;
-  const ATTRIBUTE_ID *idAtt;
-  int nDefaultAtts;
-  int allocDefaultAtts;
-  DEFAULT_ATTRIBUTE *defaultAtts;
-} ELEMENT_TYPE;
-
-typedef struct {
-  HASH_TABLE generalEntities;
-  HASH_TABLE elementTypes;
-  HASH_TABLE attributeIds;
-  HASH_TABLE prefixes;
-  STRING_POOL pool;
-  STRING_POOL entityValuePool;
-  /* false once a parameter entity reference has been skipped */
-  XML_Bool keepProcessing;
-  /* true once an internal or external PE reference has been encountered;
-     this includes the reference to an external subset */
-  XML_Bool hasParamEntityRefs;
-  XML_Bool standalone;
-#ifdef XML_DTD
-  /* indicates if external PE has been read */
-  XML_Bool paramEntityRead;
-  HASH_TABLE paramEntities;
-#endif /* XML_DTD */
-  PREFIX defaultPrefix;
-  /* === scaffolding for building content model === */
-  XML_Bool in_eldecl;
-  CONTENT_SCAFFOLD *scaffold;
-  unsigned contentStringLen;
-  unsigned scaffSize;
-  unsigned scaffCount;
-  int scaffLevel;
-  int *scaffIndex;
-} DTD;
-
-typedef struct open_internal_entity {
-  const char *internalEventPtr;
-  const char *internalEventEndPtr;
-  struct open_internal_entity *next;
-  ENTITY *entity;
-  int startTagLevel;
-  XML_Bool betweenDecl; /* WFC: PE Between Declarations */
-} OPEN_INTERNAL_ENTITY;
-
-typedef enum XML_Error PTRCALL Processor(XML_Parser parser,
-                                         const char *start,
-                                         const char *end,
-                                         const char **endPtr);
-
-static Processor prologProcessor;
-static Processor prologInitProcessor;
-static Processor contentProcessor;
-static Processor cdataSectionProcessor;
-#ifdef XML_DTD
-static Processor ignoreSectionProcessor;
-static Processor externalParEntProcessor;
-static Processor externalParEntInitProcessor;
-static Processor entityValueProcessor;
-static Processor entityValueInitProcessor;
-#endif /* XML_DTD */
-static Processor epilogProcessor;
-static Processor errorProcessor;
-static Processor externalEntityInitProcessor;
-static Processor externalEntityInitProcessor2;
-static Processor externalEntityInitProcessor3;
-static Processor externalEntityContentProcessor;
-static Processor internalEntityProcessor;
-
-static enum XML_Error
-handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName);
-static enum XML_Error
-processXmlDecl(XML_Parser parser, int isGeneralTextEntity,
-               const char *s, const char *next);
-static enum XML_Error
-initializeEncoding(XML_Parser parser);
-static enum XML_Error
-doProlog(XML_Parser parser, const ENCODING *enc, const char *s, 
-         const char *end, int tok, const char *next, const char **nextPtr, 
-         XML_Bool haveMore);
-static enum XML_Error
-processInternalEntity(XML_Parser parser, ENTITY *entity, 
-                      XML_Bool betweenDecl);
-static enum XML_Error
-doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
-          const char *start, const char *end, const char **endPtr, 
-          XML_Bool haveMore);
-static enum XML_Error
-doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr,
-               const char *end, const char **nextPtr, XML_Bool haveMore);
-#ifdef XML_DTD
-static enum XML_Error
-doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr,
-                const char *end, const char **nextPtr, XML_Bool haveMore);
-#endif /* XML_DTD */
-
-static enum XML_Error
-storeAtts(XML_Parser parser, const ENCODING *, const char *s,
-          TAG_NAME *tagNamePtr, BINDING **bindingsPtr);
-static enum XML_Error
-addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId,
-           const XML_Char *uri, BINDING **bindingsPtr);
-static int
-defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, 
-                XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser);
-static enum XML_Error
-storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata,
-                    const char *, const char *, STRING_POOL *);
-static enum XML_Error
-appendAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata,
-                     const char *, const char *, STRING_POOL *);
-static ATTRIBUTE_ID *
-getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start,
-               const char *end);
-static int
-setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *);
-static enum XML_Error
-storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start,
-                 const char *end);
-static int
-reportProcessingInstruction(XML_Parser parser, const ENCODING *enc,
-                            const char *start, const char *end);
-static int
-reportComment(XML_Parser parser, const ENCODING *enc, const char *start,
-              const char *end);
-static void
-reportDefault(XML_Parser parser, const ENCODING *enc, const char *start,
-              const char *end);
-
-static const XML_Char * getContext(XML_Parser parser);
-static XML_Bool
-setContext(XML_Parser parser, const XML_Char *context);
-
-static void FASTCALL normalizePublicId(XML_Char *s);
-
-static DTD * dtdCreate(const XML_Memory_Handling_Suite *ms);
-/* do not call if parentParser != NULL */
-static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms);
-static void
-dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms);
-static int
-dtdCopy(DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms);
-static int
-copyEntityTable(HASH_TABLE *, STRING_POOL *, const HASH_TABLE *);
-
-static NAMED *
-lookup(HASH_TABLE *table, KEY name, size_t createSize);
-static void FASTCALL
-hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms);
-static void FASTCALL hashTableClear(HASH_TABLE *);
-static void FASTCALL hashTableDestroy(HASH_TABLE *);
-static void FASTCALL
-hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *);
-static NAMED * FASTCALL hashTableIterNext(HASH_TABLE_ITER *);
-
-static void FASTCALL
-poolInit(STRING_POOL *, const XML_Memory_Handling_Suite *ms);
-static void FASTCALL poolClear(STRING_POOL *);
-static void FASTCALL poolDestroy(STRING_POOL *);
-static XML_Char *
-poolAppend(STRING_POOL *pool, const ENCODING *enc,
-           const char *ptr, const char *end);
-static XML_Char *
-poolStoreString(STRING_POOL *pool, const ENCODING *enc,
-                const char *ptr, const char *end);
-static XML_Bool FASTCALL poolGrow(STRING_POOL *pool);
-static const XML_Char * FASTCALL
-poolCopyString(STRING_POOL *pool, const XML_Char *s);
-static const XML_Char *
-poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n);
-static const XML_Char * FASTCALL
-poolAppendString(STRING_POOL *pool, const XML_Char *s);
-
-static int FASTCALL nextScaffoldPart(XML_Parser parser);
-static XML_Content * build_model(XML_Parser parser);
-static ELEMENT_TYPE *
-getElementType(XML_Parser parser, const ENCODING *enc,
-               const char *ptr, const char *end);
-
-static XML_Parser
-parserCreate(const XML_Char *encodingName,
-             const XML_Memory_Handling_Suite *memsuite,
-             const XML_Char *nameSep,
-             DTD *dtd);
-static void
-parserInit(XML_Parser parser, const XML_Char *encodingName);
-
-#define poolStart(pool) ((pool)->start)
-#define poolEnd(pool) ((pool)->ptr)
-#define poolLength(pool) ((pool)->ptr - (pool)->start)
-#define poolChop(pool) ((void)--(pool->ptr))
-#define poolLastChar(pool) (((pool)->ptr)[-1])
-#define poolDiscard(pool) ((pool)->ptr = (pool)->start)
-#define poolFinish(pool) ((pool)->start = (pool)->ptr)
-#define poolAppendChar(pool, c) \
-  (((pool)->ptr == (pool)->end && !poolGrow(pool)) \
-   ? 0 \
-   : ((*((pool)->ptr)++ = c), 1))
-
-struct XML_ParserStruct {
-  /* The first member must be userData so that the XML_GetUserData
-     macro works. */
-  void *m_userData;
-  void *m_handlerArg;
-  char *m_buffer;
-  const XML_Memory_Handling_Suite m_mem;
-  /* first character to be parsed */
-  const char *m_bufferPtr;
-  /* past last character to be parsed */
-  char *m_bufferEnd;
-  /* allocated end of buffer */
-  const char *m_bufferLim;
-  XML_Index m_parseEndByteIndex;
-  const char *m_parseEndPtr;
-  XML_Char *m_dataBuf;
-  XML_Char *m_dataBufEnd;
-  XML_StartElementHandler m_startElementHandler;
-  XML_EndElementHandler m_endElementHandler;
-  XML_CharacterDataHandler m_characterDataHandler;
-  XML_ProcessingInstructionHandler m_processingInstructionHandler;
-  XML_CommentHandler m_commentHandler;
-  XML_StartCdataSectionHandler m_startCdataSectionHandler;
-  XML_EndCdataSectionHandler m_endCdataSectionHandler;
-  XML_DefaultHandler m_defaultHandler;
-  XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler;
-  XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler;
-  XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler;
-  XML_NotationDeclHandler m_notationDeclHandler;
-  XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler;
-  XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler;
-  XML_NotStandaloneHandler m_notStandaloneHandler;
-  XML_ExternalEntityRefHandler m_externalEntityRefHandler;
-  XML_Parser m_externalEntityRefHandlerArg;
-  XML_SkippedEntityHandler m_skippedEntityHandler;
-  XML_UnknownEncodingHandler m_unknownEncodingHandler;
-  XML_ElementDeclHandler m_elementDeclHandler;
-  XML_AttlistDeclHandler m_attlistDeclHandler;
-  XML_EntityDeclHandler m_entityDeclHandler;
-  XML_XmlDeclHandler m_xmlDeclHandler;
-  const ENCODING *m_encoding;
-  INIT_ENCODING m_initEncoding;
-  const ENCODING *m_internalEncoding;
-  const XML_Char *m_protocolEncodingName;
-  XML_Bool m_ns;
-  XML_Bool m_ns_triplets;
-  void *m_unknownEncodingMem;
-  void *m_unknownEncodingData;
-  void *m_unknownEncodingHandlerData;
-  void (XMLCALL *m_unknownEncodingRelease)(void *);
-  PROLOG_STATE m_prologState;
-  Processor *m_processor;
-  enum XML_Error m_errorCode;
-  const char *m_eventPtr;
-  const char *m_eventEndPtr;
-  const char *m_positionPtr;
-  OPEN_INTERNAL_ENTITY *m_openInternalEntities;
-  OPEN_INTERNAL_ENTITY *m_freeInternalEntities;
-  XML_Bool m_defaultExpandInternalEntities;
-  int m_tagLevel;
-  ENTITY *m_declEntity;
-  const XML_Char *m_doctypeName;
-  const XML_Char *m_doctypeSysid;
-  const XML_Char *m_doctypePubid;
-  const XML_Char *m_declAttributeType;
-  const XML_Char *m_declNotationName;
-  const XML_Char *m_declNotationPublicId;
-  ELEMENT_TYPE *m_declElementType;
-  ATTRIBUTE_ID *m_declAttributeId;
-  XML_Bool m_declAttributeIsCdata;
-  XML_Bool m_declAttributeIsId;
-  DTD *m_dtd;
-  const XML_Char *m_curBase;
-  TAG *m_tagStack;
-  TAG *m_freeTagList;
-  BINDING *m_inheritedBindings;
-  BINDING *m_freeBindingList;
-  int m_attsSize;
-  int m_nSpecifiedAtts;
-  int m_idAttIndex;
-  ATTRIBUTE *m_atts;
-  NS_ATT *m_nsAtts;
-  unsigned long m_nsAttsVersion;
-  unsigned char m_nsAttsPower;
-  POSITION m_position;
-  STRING_POOL m_tempPool;
-  STRING_POOL m_temp2Pool;
-  char *m_groupConnector;
-  unsigned int m_groupSize;
-  XML_Char m_namespaceSeparator;
-  XML_Parser m_parentParser;
-  XML_ParsingStatus m_parsingStatus;
-#ifdef XML_DTD
-  XML_Bool m_isParamEntity;
-  XML_Bool m_useForeignDTD;
-  enum XML_ParamEntityParsing m_paramEntityParsing;
-#endif
-};
-
-#define MALLOC(s) (parser->m_mem.malloc_fcn((s)))
-#define REALLOC(p,s) (parser->m_mem.realloc_fcn((p),(s)))
-#define FREE(p) (parser->m_mem.free_fcn((p)))
-
-#define userData (parser->m_userData)
-#define handlerArg (parser->m_handlerArg)
-#define startElementHandler (parser->m_startElementHandler)
-#define endElementHandler (parser->m_endElementHandler)
-#define characterDataHandler (parser->m_characterDataHandler)
-#define processingInstructionHandler \
-        (parser->m_processingInstructionHandler)
-#define commentHandler (parser->m_commentHandler)
-#define startCdataSectionHandler \
-        (parser->m_startCdataSectionHandler)
-#define endCdataSectionHandler (parser->m_endCdataSectionHandler)
-#define defaultHandler (parser->m_defaultHandler)
-#define startDoctypeDeclHandler (parser->m_startDoctypeDeclHandler)
-#define endDoctypeDeclHandler (parser->m_endDoctypeDeclHandler)
-#define unparsedEntityDeclHandler \
-        (parser->m_unparsedEntityDeclHandler)
-#define notationDeclHandler (parser->m_notationDeclHandler)
-#define startNamespaceDeclHandler \
-        (parser->m_startNamespaceDeclHandler)
-#define endNamespaceDeclHandler (parser->m_endNamespaceDeclHandler)
-#define notStandaloneHandler (parser->m_notStandaloneHandler)
-#define externalEntityRefHandler \
-        (parser->m_externalEntityRefHandler)
-#define externalEntityRefHandlerArg \
-        (parser->m_externalEntityRefHandlerArg)
-#define internalEntityRefHandler \
-        (parser->m_internalEntityRefHandler)
-#define skippedEntityHandler (parser->m_skippedEntityHandler)
-#define unknownEncodingHandler (parser->m_unknownEncodingHandler)
-#define elementDeclHandler (parser->m_elementDeclHandler)
-#define attlistDeclHandler (parser->m_attlistDeclHandler)
-#define entityDeclHandler (parser->m_entityDeclHandler)
-#define xmlDeclHandler (parser->m_xmlDeclHandler)
-#define encoding (parser->m_encoding)
-#define initEncoding (parser->m_initEncoding)
-#define internalEncoding (parser->m_internalEncoding)
-#define unknownEncodingMem (parser->m_unknownEncodingMem)
-#define unknownEncodingData (parser->m_unknownEncodingData)
-#define unknownEncodingHandlerData \
-  (parser->m_unknownEncodingHandlerData)
-#define unknownEncodingRelease (parser->m_unknownEncodingRelease)
-#define protocolEncodingName (parser->m_protocolEncodingName)
-#define ns (parser->m_ns)
-#define ns_triplets (parser->m_ns_triplets)
-#define prologState (parser->m_prologState)
-#define processor (parser->m_processor)
-#define errorCode (parser->m_errorCode)
-#define eventPtr (parser->m_eventPtr)
-#define eventEndPtr (parser->m_eventEndPtr)
-#define positionPtr (parser->m_positionPtr)
-#define position (parser->m_position)
-#define openInternalEntities (parser->m_openInternalEntities)
-#define freeInternalEntities (parser->m_freeInternalEntities)
-#define defaultExpandInternalEntities \
-        (parser->m_defaultExpandInternalEntities)
-#define tagLevel (parser->m_tagLevel)
-#define buffer (parser->m_buffer)
-#define bufferPtr (parser->m_bufferPtr)
-#define bufferEnd (parser->m_bufferEnd)
-#define parseEndByteIndex (parser->m_parseEndByteIndex)
-#define parseEndPtr (parser->m_parseEndPtr)
-#define bufferLim (parser->m_bufferLim)
-#define dataBuf (parser->m_dataBuf)
-#define dataBufEnd (parser->m_dataBufEnd)
-#define _dtd (parser->m_dtd)
-#define curBase (parser->m_curBase)
-#define declEntity (parser->m_declEntity)
-#define doctypeName (parser->m_doctypeName)
-#define doctypeSysid (parser->m_doctypeSysid)
-#define doctypePubid (parser->m_doctypePubid)
-#define declAttributeType (parser->m_declAttributeType)
-#define declNotationName (parser->m_declNotationName)
-#define declNotationPublicId (parser->m_declNotationPublicId)
-#define declElementType (parser->m_declElementType)
-#define declAttributeId (parser->m_declAttributeId)
-#define declAttributeIsCdata (parser->m_declAttributeIsCdata)
-#define declAttributeIsId (parser->m_declAttributeIsId)
-#define freeTagList (parser->m_freeTagList)
-#define freeBindingList (parser->m_freeBindingList)
-#define inheritedBindings (parser->m_inheritedBindings)
-#define tagStack (parser->m_tagStack)
-#define atts (parser->m_atts)
-#define attsSize (parser->m_attsSize)
-#define nSpecifiedAtts (parser->m_nSpecifiedAtts)
-#define idAttIndex (parser->m_idAttIndex)
-#define nsAtts (parser->m_nsAtts)
-#define nsAttsVersion (parser->m_nsAttsVersion)
-#define nsAttsPower (parser->m_nsAttsPower)
-#define tempPool (parser->m_tempPool)
-#define temp2Pool (parser->m_temp2Pool)
-#define groupConnector (parser->m_groupConnector)
-#define groupSize (parser->m_groupSize)
-#define namespaceSeparator (parser->m_namespaceSeparator)
-#define parentParser (parser->m_parentParser)
-#define ps_parsing (parser->m_parsingStatus.parsing)
-#define ps_finalBuffer (parser->m_parsingStatus.finalBuffer)
-#ifdef XML_DTD
-#define isParamEntity (parser->m_isParamEntity)
-#define useForeignDTD (parser->m_useForeignDTD)
-#define paramEntityParsing (parser->m_paramEntityParsing)
-#endif /* XML_DTD */
-
-XML_Parser XMLCALL
-XML_ParserCreate(const XML_Char *encodingName)
-{
-  return XML_ParserCreate_MM(encodingName, NULL, NULL);
-}
-
-XML_Parser XMLCALL
-XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep)
-{
-  XML_Char tmp[2];
-  *tmp = nsSep;
-  return XML_ParserCreate_MM(encodingName, NULL, tmp);
-}
-
-static const XML_Char implicitContext[] = {
-  'x', 'm', 'l', '=', 'h', 't', 't', 'p', ':', '/', '/',
-  'w', 'w', 'w', '.', 'w', '3', '.', 'o', 'r', 'g', '/',
-  'X', 'M', 'L', '/', '1', '9', '9', '8', '/',
-  'n', 'a', 'm', 'e', 's', 'p', 'a', 'c', 'e', '\0'
-};
-
-XML_Parser XMLCALL
-XML_ParserCreate_MM(const XML_Char *encodingName,
-                    const XML_Memory_Handling_Suite *memsuite,
-                    const XML_Char *nameSep)
-{
-  XML_Parser parser = parserCreate(encodingName, memsuite, nameSep, NULL);
-  if (parser != NULL && ns) {
-    /* implicit context only set for root parser, since child
-       parsers (i.e. external entity parsers) will inherit it
-    */
-    if (!setContext(parser, implicitContext)) {
-      XML_ParserFree(parser);
-      return NULL;
-    }
-  }
-  return parser;
-}
-
-static XML_Parser
-parserCreate(const XML_Char *encodingName,
-             const XML_Memory_Handling_Suite *memsuite,
-             const XML_Char *nameSep,
-             DTD *dtd)
-{
-  XML_Parser parser;
-
-  if (memsuite) {
-    XML_Memory_Handling_Suite *mtemp;
-    parser = (XML_Parser)
-      memsuite->malloc_fcn(sizeof(struct XML_ParserStruct));
-    if (parser != NULL) {
-      mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem);
-      mtemp->malloc_fcn = memsuite->malloc_fcn;
-      mtemp->realloc_fcn = memsuite->realloc_fcn;
-      mtemp->free_fcn = memsuite->free_fcn;
-    }
-  }
-  else {
-    XML_Memory_Handling_Suite *mtemp;
-    parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct));
-    if (parser != NULL) {
-      mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem);
-      mtemp->malloc_fcn = malloc;
-      mtemp->realloc_fcn = realloc;
-      mtemp->free_fcn = free;
-    }
-  }
-
-  if (!parser)
-    return parser;
-
-  buffer = NULL;
-  bufferLim = NULL;
-
-  attsSize = INIT_ATTS_SIZE;
-  atts = (ATTRIBUTE *)MALLOC(attsSize * sizeof(ATTRIBUTE));
-  if (atts == NULL) {
-    FREE(parser);
-    return NULL;
-  }
-  dataBuf = (XML_Char *)MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char));
-  if (dataBuf == NULL) {
-    FREE(atts);
-    FREE(parser);
-    return NULL;
-  }
-  dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE;
-
-  if (dtd)
-    _dtd = dtd;
-  else {
-    _dtd = dtdCreate(&parser->m_mem);
-    if (_dtd == NULL) {
-      FREE(dataBuf);
-      FREE(atts);
-      FREE(parser);
-      return NULL;
-    }
-  }
-
-  freeBindingList = NULL;
-  freeTagList = NULL;
-  freeInternalEntities = NULL;
-
-  groupSize = 0;
-  groupConnector = NULL;
-
-  unknownEncodingHandler = NULL;
-  unknownEncodingHandlerData = NULL;
-
-  namespaceSeparator = '!';
-  ns = XML_FALSE;
-  ns_triplets = XML_FALSE;
-
-  nsAtts = NULL;
-  nsAttsVersion = 0;
-  nsAttsPower = 0;
-
-  poolInit(&tempPool, &(parser->m_mem));
-  poolInit(&temp2Pool, &(parser->m_mem));
-  parserInit(parser, encodingName);
-
-  if (encodingName && !protocolEncodingName) {
-    XML_ParserFree(parser);
-    return NULL;
-  }
-
-  if (nameSep) {
-    ns = XML_TRUE;
-    internalEncoding = XmlGetInternalEncodingNS();
-    namespaceSeparator = *nameSep;
-  }
-  else {
-    internalEncoding = XmlGetInternalEncoding();
-  }
-
-  return parser;
-}
-
-static void
-parserInit(XML_Parser parser, const XML_Char *encodingName)
-{
-  processor = prologInitProcessor;
-  XmlPrologStateInit(&prologState);
-  protocolEncodingName = (encodingName != NULL
-                          ? poolCopyString(&tempPool, encodingName)
-                          : NULL);
-  curBase = NULL;
-  XmlInitEncoding(&initEncoding, &encoding, 0);
-  userData = NULL;
-  handlerArg = NULL;
-  startElementHandler = NULL;
-  endElementHandler = NULL;
-  characterDataHandler = NULL;
-  processingInstructionHandler = NULL;
-  commentHandler = NULL;
-  startCdataSectionHandler = NULL;
-  endCdataSectionHandler = NULL;
-  defaultHandler = NULL;
-  startDoctypeDeclHandler = NULL;
-  endDoctypeDeclHandler = NULL;
-  unparsedEntityDeclHandler = NULL;
-  notationDeclHandler = NULL;
-  startNamespaceDeclHandler = NULL;
-  endNamespaceDeclHandler = NULL;
-  notStandaloneHandler = NULL;
-  externalEntityRefHandler = NULL;
-  externalEntityRefHandlerArg = parser;
-  skippedEntityHandler = NULL;
-  elementDeclHandler = NULL;
-  attlistDeclHandler = NULL;
-  entityDeclHandler = NULL;
-  xmlDeclHandler = NULL;
-  bufferPtr = buffer;
-  bufferEnd = buffer;
-  parseEndByteIndex = 0;
-  parseEndPtr = NULL;
-  declElementType = NULL;
-  declAttributeId = NULL;
-  declEntity = NULL;
-  doctypeName = NULL;
-  doctypeSysid = NULL;
-  doctypePubid = NULL;
-  declAttributeType = NULL;
-  declNotationName = NULL;
-  declNotationPublicId = NULL;
-  declAttributeIsCdata = XML_FALSE;
-  declAttributeIsId = XML_FALSE;
-  memset(&position, 0, sizeof(POSITION));
-  errorCode = XML_ERROR_NONE;
-  eventPtr = NULL;
-  eventEndPtr = NULL;
-  positionPtr = NULL;
-  openInternalEntities = NULL;
-  defaultExpandInternalEntities = XML_TRUE;
-  tagLevel = 0;
-  tagStack = NULL;
-  inheritedBindings = NULL;
-  nSpecifiedAtts = 0;
-  unknownEncodingMem = NULL;
-  unknownEncodingRelease = NULL;
-  unknownEncodingData = NULL;
-  parentParser = NULL;
-  ps_parsing = XML_INITIALIZED;
-#ifdef XML_DTD
-  isParamEntity = XML_FALSE;
-  useForeignDTD = XML_FALSE;
-  paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;
-#endif
-}
-
-/* moves list of bindings to freeBindingList */
-static void FASTCALL
-moveToFreeBindingList(XML_Parser parser, BINDING *bindings)
-{
-  while (bindings) {
-    BINDING *b = bindings;
-    bindings = bindings->nextTagBinding;
-    b->nextTagBinding = freeBindingList;
-    freeBindingList = b;
-  }
-}
-
-XML_Bool XMLCALL
-XML_ParserReset(XML_Parser parser, const XML_Char *encodingName)
-{
-  TAG *tStk;
-  OPEN_INTERNAL_ENTITY *openEntityList;
-  if (parentParser)
-    return XML_FALSE;
-  /* move tagStack to freeTagList */
-  tStk = tagStack;
-  while (tStk) {
-    TAG *tag = tStk;
-    tStk = tStk->parent;
-    tag->parent = freeTagList;
-    moveToFreeBindingList(parser, tag->bindings);
-    tag->bindings = NULL;
-    freeTagList = tag;
-  }
-  /* move openInternalEntities to freeInternalEntities */
-  openEntityList = openInternalEntities;
-  while (openEntityList) {
-    OPEN_INTERNAL_ENTITY *openEntity = openEntityList;
-    openEntityList = openEntity->next;
-    openEntity->next = freeInternalEntities;
-    freeInternalEntities = openEntity;
-  }
-  moveToFreeBindingList(parser, inheritedBindings);
-  FREE(unknownEncodingMem);
-  if (unknownEncodingRelease)
-    unknownEncodingRelease(unknownEncodingData);
-  poolClear(&tempPool);
-  poolClear(&temp2Pool);
-  parserInit(parser, encodingName);
-  dtdReset(_dtd, &parser->m_mem);
-  return setContext(parser, implicitContext);
-}
-
-enum XML_Status XMLCALL
-XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName)
-{
-  /* Block after XML_Parse()/XML_ParseBuffer() has been called.
-     XXX There's no way for the caller to determine which of the
-     XXX possible error cases caused the XML_STATUS_ERROR return.
-  */
-  if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
-    return XML_STATUS_ERROR;
-  if (encodingName == NULL)
-    protocolEncodingName = NULL;
-  else {
-    protocolEncodingName = poolCopyString(&tempPool, encodingName);
-    if (!protocolEncodingName)
-      return XML_STATUS_ERROR;
-  }
-  return XML_STATUS_OK;
-}
-
-XML_Parser XMLCALL
-XML_ExternalEntityParserCreate(XML_Parser oldParser,
-                               const XML_Char *context,
-                               const XML_Char *encodingName)
-{
-  XML_Parser parser = oldParser;
-  DTD *newDtd = NULL;
-  DTD *oldDtd = _dtd;
-  XML_StartElementHandler oldStartElementHandler = startElementHandler;
-  XML_EndElementHandler oldEndElementHandler = endElementHandler;
-  XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler;
-  XML_ProcessingInstructionHandler oldProcessingInstructionHandler
-      = processingInstructionHandler;
-  XML_CommentHandler oldCommentHandler = commentHandler;
-  XML_StartCdataSectionHandler oldStartCdataSectionHandler
-      = startCdataSectionHandler;
-  XML_EndCdataSectionHandler oldEndCdataSectionHandler
-      = endCdataSectionHandler;
-  XML_DefaultHandler oldDefaultHandler = defaultHandler;
-  XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler
-      = unparsedEntityDeclHandler;
-  XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler;
-  XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler
-      = startNamespaceDeclHandler;
-  XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler
-      = endNamespaceDeclHandler;
-  XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler;
-  XML_ExternalEntityRefHandler oldExternalEntityRefHandler
-      = externalEntityRefHandler;
-  XML_SkippedEntityHandler oldSkippedEntityHandler = skippedEntityHandler;
-  XML_UnknownEncodingHandler oldUnknownEncodingHandler
-      = unknownEncodingHandler;
-  XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler;
-  XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler;
-  XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler;
-  XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler;
-  ELEMENT_TYPE * oldDeclElementType = declElementType;
-
-  void *oldUserData = userData;
-  void *oldHandlerArg = handlerArg;
-  XML_Bool oldDefaultExpandInternalEntities = defaultExpandInternalEntities;
-  XML_Parser oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg;
-#ifdef XML_DTD
-  enum XML_ParamEntityParsing oldParamEntityParsing = paramEntityParsing;
-  int oldInEntityValue = prologState.inEntityValue;
-#endif
-  XML_Bool oldns_triplets = ns_triplets;
-
-#ifdef XML_DTD
-  if (!context)
-    newDtd = oldDtd;
-#endif /* XML_DTD */
-
-  /* Note that the magical uses of the pre-processor to make field
-     access look more like C++ require that `parser' be overwritten
-     here.  This makes this function more painful to follow than it
-     would be otherwise.
-  */
-  if (ns) {
-    XML_Char tmp[2];
-    *tmp = namespaceSeparator;
-    parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd);
-  }
-  else {
-    parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd);
-  }
-
-  if (!parser)
-    return NULL;
-
-  startElementHandler = oldStartElementHandler;
-  endElementHandler = oldEndElementHandler;
-  characterDataHandler = oldCharacterDataHandler;
-  processingInstructionHandler = oldProcessingInstructionHandler;
-  commentHandler = oldCommentHandler;
-  startCdataSectionHandler = oldStartCdataSectionHandler;
-  endCdataSectionHandler = oldEndCdataSectionHandler;
-  defaultHandler = oldDefaultHandler;
-  unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler;
-  notationDeclHandler = oldNotationDeclHandler;
-  startNamespaceDeclHandler = oldStartNamespaceDeclHandler;
-  endNamespaceDeclHandler = oldEndNamespaceDeclHandler;
-  notStandaloneHandler = oldNotStandaloneHandler;
-  externalEntityRefHandler = oldExternalEntityRefHandler;
-  skippedEntityHandler = oldSkippedEntityHandler;
-  unknownEncodingHandler = oldUnknownEncodingHandler;
-  elementDeclHandler = oldElementDeclHandler;
-  attlistDeclHandler = oldAttlistDeclHandler;
-  entityDeclHandler = oldEntityDeclHandler;
-  xmlDeclHandler = oldXmlDeclHandler;
-  declElementType = oldDeclElementType;
-  userData = oldUserData;
-  if (oldUserData == oldHandlerArg)
-    handlerArg = userData;
-  else
-    handlerArg = parser;
-  if (oldExternalEntityRefHandlerArg != oldParser)
-    externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg;
-  defaultExpandInternalEntities = oldDefaultExpandInternalEntities;
-  ns_triplets = oldns_triplets;
-  parentParser = oldParser;
-#ifdef XML_DTD
-  paramEntityParsing = oldParamEntityParsing;
-  prologState.inEntityValue = oldInEntityValue;
-  if (context) {
-#endif /* XML_DTD */
-    if (!dtdCopy(_dtd, oldDtd, &parser->m_mem)
-      || !setContext(parser, context)) {
-      XML_ParserFree(parser);
-      return NULL;
-    }
-    processor = externalEntityInitProcessor;
-#ifdef XML_DTD
-  }
-  else {
-    /* The DTD instance referenced by _dtd is shared between the document's
-       root parser and external PE parsers, therefore one does not need to
-       call setContext. In addition, one also *must* not call setContext,
-       because this would overwrite existing prefix->binding pointers in
-       _dtd with ones that get destroyed with the external PE parser.
-       This would leave those prefixes with dangling pointers.
-    */
-    isParamEntity = XML_TRUE;
-    XmlPrologStateInitExternalEntity(&prologState);
-    processor = externalParEntInitProcessor;
-  }
-#endif /* XML_DTD */
-  return parser;
-}
-
-static void FASTCALL
-destroyBindings(BINDING *bindings, XML_Parser parser)
-{
-  for (;;) {
-    BINDING *b = bindings;
-    if (!b)
-      break;
-    bindings = b->nextTagBinding;
-    FREE(b->uri);
-    FREE(b);
-  }
-}
-
-void XMLCALL
-XML_ParserFree(XML_Parser parser)
-{
-  TAG *tagList;
-  OPEN_INTERNAL_ENTITY *entityList;
-  if (parser == NULL)
-    return;
-  /* free tagStack and freeTagList */
-  tagList = tagStack;
-  for (;;) {
-    TAG *p;
-    if (tagList == NULL) {
-      if (freeTagList == NULL)
-        break;
-      tagList = freeTagList;
-      freeTagList = NULL;
-    }
-    p = tagList;
-    tagList = tagList->parent;
-    FREE(p->buf);
-    destroyBindings(p->bindings, parser);
-    FREE(p);
-  }
-  /* free openInternalEntities and freeInternalEntities */
-  entityList = openInternalEntities;
-  for (;;) {
-    OPEN_INTERNAL_ENTITY *openEntity;
-    if (entityList == NULL) {
-      if (freeInternalEntities == NULL)
-        break;
-      entityList = freeInternalEntities;
-      freeInternalEntities = NULL;
-    }
-    openEntity = entityList;
-    entityList = entityList->next;
-    FREE(openEntity);
-  }
-
-  destroyBindings(freeBindingList, parser);
-  destroyBindings(inheritedBindings, parser);
-  poolDestroy(&tempPool);
-  poolDestroy(&temp2Pool);
-#ifdef XML_DTD
-  /* external parameter entity parsers share the DTD structure
-     parser->m_dtd with the root parser, so we must not destroy it
-  */
-  if (!isParamEntity && _dtd)
-#else
-  if (_dtd)
-#endif /* XML_DTD */
-    dtdDestroy(_dtd, (XML_Bool)!parentParser, &parser->m_mem);
-  FREE((void *)atts);
-  FREE(groupConnector);
-  FREE(buffer);
-  FREE(dataBuf);
-  FREE(nsAtts);
-  FREE(unknownEncodingMem);
-  if (unknownEncodingRelease)
-    unknownEncodingRelease(unknownEncodingData);
-  FREE(parser);
-}
-
-void XMLCALL
-XML_UseParserAsHandlerArg(XML_Parser parser)
-{
-  handlerArg = parser;
-}
-
-enum XML_Error XMLCALL
-XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD)
-{
-#ifdef XML_DTD
-  /* block after XML_Parse()/XML_ParseBuffer() has been called */
-  if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
-    return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING;
-  useForeignDTD = useDTD;
-  return XML_ERROR_NONE;
-#else
-  return XML_ERROR_FEATURE_REQUIRES_XML_DTD;
-#endif
-}
-
-void XMLCALL
-XML_SetReturnNSTriplet(XML_Parser parser, int do_nst)
-{
-  /* block after XML_Parse()/XML_ParseBuffer() has been called */
-  if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
-    return;
-  ns_triplets = do_nst ? XML_TRUE : XML_FALSE;
-}
-
-void XMLCALL
-XML_SetUserData(XML_Parser parser, void *p)
-{
-  if (handlerArg == userData)
-    handlerArg = userData = p;
-  else
-    userData = p;
-}
-
-enum XML_Status XMLCALL
-XML_SetBase(XML_Parser parser, const XML_Char *p)
-{
-  if (p) {
-    p = poolCopyString(&_dtd->pool, p);
-    if (!p)
-      return XML_STATUS_ERROR;
-    curBase = p;
-  }
-  else
-    curBase = NULL;
-  return XML_STATUS_OK;
-}
-
-const XML_Char * XMLCALL
-XML_GetBase(XML_Parser parser)
-{
-  return curBase;
-}
-
-int XMLCALL
-XML_GetSpecifiedAttributeCount(XML_Parser parser)
-{
-  return nSpecifiedAtts;
-}
-
-int XMLCALL
-XML_GetIdAttributeIndex(XML_Parser parser)
-{
-  return idAttIndex;
-}
-
-void XMLCALL
-XML_SetElementHandler(XML_Parser parser,
-                      XML_StartElementHandler start,
-                      XML_EndElementHandler end)
-{
-  startElementHandler = start;
-  endElementHandler = end;
-}
-
-void XMLCALL
-XML_SetStartElementHandler(XML_Parser parser,
-                           XML_StartElementHandler start) {
-  startElementHandler = start;
-}
-
-void XMLCALL
-XML_SetEndElementHandler(XML_Parser parser,
-                         XML_EndElementHandler end) {
-  endElementHandler = end;
-}
-
-void XMLCALL
-XML_SetCharacterDataHandler(XML_Parser parser,
-                            XML_CharacterDataHandler handler)
-{
-  characterDataHandler = handler;
-}
-
-void XMLCALL
-XML_SetProcessingInstructionHandler(XML_Parser parser,
-                                    XML_ProcessingInstructionHandler handler)
-{
-  processingInstructionHandler = handler;
-}
-
-void XMLCALL
-XML_SetCommentHandler(XML_Parser parser,
-                      XML_CommentHandler handler)
-{
-  commentHandler = handler;
-}
-
-void XMLCALL
-XML_SetCdataSectionHandler(XML_Parser parser,
-                           XML_StartCdataSectionHandler start,
-                           XML_EndCdataSectionHandler end)
-{
-  startCdataSectionHandler = start;
-  endCdataSectionHandler = end;
-}
-
-void XMLCALL
-XML_SetStartCdataSectionHandler(XML_Parser parser,
-                                XML_StartCdataSectionHandler start) {
-  startCdataSectionHandler = start;
-}
-
-void XMLCALL
-XML_SetEndCdataSectionHandler(XML_Parser parser,
-                              XML_EndCdataSectionHandler end) {
-  endCdataSectionHandler = end;
-}
-
-void XMLCALL
-XML_SetDefaultHandler(XML_Parser parser,
-                      XML_DefaultHandler handler)
-{
-  defaultHandler = handler;
-  defaultExpandInternalEntities = XML_FALSE;
-}
-
-void XMLCALL
-XML_SetDefaultHandlerExpand(XML_Parser parser,
-                            XML_DefaultHandler handler)
-{
-  defaultHandler = handler;
-  defaultExpandInternalEntities = XML_TRUE;
-}
-
-void XMLCALL
-XML_SetDoctypeDeclHandler(XML_Parser parser,
-                          XML_StartDoctypeDeclHandler start,
-                          XML_EndDoctypeDeclHandler end)
-{
-  startDoctypeDeclHandler = start;
-  endDoctypeDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetStartDoctypeDeclHandler(XML_Parser parser,
-                               XML_StartDoctypeDeclHandler start) {
-  startDoctypeDeclHandler = start;
-}
-
-void XMLCALL
-XML_SetEndDoctypeDeclHandler(XML_Parser parser,
-                             XML_EndDoctypeDeclHandler end) {
-  endDoctypeDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
-                                 XML_UnparsedEntityDeclHandler handler)
-{
-  unparsedEntityDeclHandler = handler;
-}
-
-void XMLCALL
-XML_SetNotationDeclHandler(XML_Parser parser,
-                           XML_NotationDeclHandler handler)
-{
-  notationDeclHandler = handler;
-}
-
-void XMLCALL
-XML_SetNamespaceDeclHandler(XML_Parser parser,
-                            XML_StartNamespaceDeclHandler start,
-                            XML_EndNamespaceDeclHandler end)
-{
-  startNamespaceDeclHandler = start;
-  endNamespaceDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetStartNamespaceDeclHandler(XML_Parser parser,
-                                 XML_StartNamespaceDeclHandler start) {
-  startNamespaceDeclHandler = start;
-}
-
-void XMLCALL
-XML_SetEndNamespaceDeclHandler(XML_Parser parser,
-                               XML_EndNamespaceDeclHandler end) {
-  endNamespaceDeclHandler = end;
-}
-
-void XMLCALL
-XML_SetNotStandaloneHandler(XML_Parser parser,
-                            XML_NotStandaloneHandler handler)
-{
-  notStandaloneHandler = handler;
-}
-
-void XMLCALL
-XML_SetExternalEntityRefHandler(XML_Parser parser,
-                                XML_ExternalEntityRefHandler handler)
-{
-  externalEntityRefHandler = handler;
-}
-
-void XMLCALL
-XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg)
-{
-  if (arg)
-    externalEntityRefHandlerArg = (XML_Parser)arg;
-  else
-    externalEntityRefHandlerArg = parser;
-}
-
-void XMLCALL
-XML_SetSkippedEntityHandler(XML_Parser parser,
-                            XML_SkippedEntityHandler handler)
-{
-  skippedEntityHandler = handler;
-}
-
-void XMLCALL
-XML_SetUnknownEncodingHandler(XML_Parser parser,
-                              XML_UnknownEncodingHandler handler,
-                              void *data)
-{
-  unknownEncodingHandler = handler;
-  unknownEncodingHandlerData = data;
-}
-
-void XMLCALL
-XML_SetElementDeclHandler(XML_Parser parser,
-                          XML_ElementDeclHandler eldecl)
-{
-  elementDeclHandler = eldecl;
-}
-
-void XMLCALL
-XML_SetAttlistDeclHandler(XML_Parser parser,
-                          XML_AttlistDeclHandler attdecl)
-{
-  attlistDeclHandler = attdecl;
-}
-
-void XMLCALL
-XML_SetEntityDeclHandler(XML_Parser parser,
-                         XML_EntityDeclHandler handler)
-{
-  entityDeclHandler = handler;
-}
-
-void XMLCALL
-XML_SetXmlDeclHandler(XML_Parser parser,
-                      XML_XmlDeclHandler handler) {
-  xmlDeclHandler = handler;
-}
-
-int XMLCALL
-XML_SetParamEntityParsing(XML_Parser parser,
-                          enum XML_ParamEntityParsing peParsing)
-{
-  /* block after XML_Parse()/XML_ParseBuffer() has been called */
-  if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED)
-    return 0;
-#ifdef XML_DTD
-  paramEntityParsing = peParsing;
-  return 1;
-#else
-  return peParsing == XML_PARAM_ENTITY_PARSING_NEVER;
-#endif
-}
-
-enum XML_Status XMLCALL
-XML_Parse(XML_Parser parser, const char *s, int len, int isFinal)
-{
-  switch (ps_parsing) {
-  case XML_SUSPENDED:
-    errorCode = XML_ERROR_SUSPENDED;
-    return XML_STATUS_ERROR;
-  case XML_FINISHED:
-    errorCode = XML_ERROR_FINISHED;
-    return XML_STATUS_ERROR;
-  default:
-    ps_parsing = XML_PARSING;
-  }
-
-  if (len == 0) {
-    ps_finalBuffer = (XML_Bool)isFinal;
-    if (!isFinal)
-      return XML_STATUS_OK;
-    positionPtr = bufferPtr;
-    parseEndPtr = bufferEnd;
-
-    /* If data are left over from last buffer, and we now know that these
-       data are the final chunk of input, then we have to check them again
-       to detect errors based on that fact.
-    */
-    errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr);
-
-    if (errorCode == XML_ERROR_NONE) {
-      switch (ps_parsing) {
-      case XML_SUSPENDED:
-        XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
-        positionPtr = bufferPtr;
-        return XML_STATUS_SUSPENDED;
-      case XML_INITIALIZED: 
-      case XML_PARSING:
-        ps_parsing = XML_FINISHED;
-        /* fall through */
-      default:
-        return XML_STATUS_OK;
-      }
-    }
-    eventEndPtr = eventPtr;
-    processor = errorProcessor;
-    return XML_STATUS_ERROR;
-  }
-#ifndef XML_CONTEXT_BYTES
-  else if (bufferPtr == bufferEnd) {
-    const char *end;
-    int nLeftOver;
-    enum XML_Error result;
-    parseEndByteIndex += len;
-    positionPtr = s;
-    ps_finalBuffer = (XML_Bool)isFinal;
-
-    errorCode = processor(parser, s, parseEndPtr = s + len, &end);
-
-    if (errorCode != XML_ERROR_NONE) {
-      eventEndPtr = eventPtr;
-      processor = errorProcessor;
-      return XML_STATUS_ERROR;
-    }
-    else {
-      switch (ps_parsing) {
-      case XML_SUSPENDED:
-        result = XML_STATUS_SUSPENDED;
-        break;
-      case XML_INITIALIZED:
-      case XML_PARSING:
-        result = XML_STATUS_OK;
-        if (isFinal) {
-          ps_parsing = XML_FINISHED;
-          return result;
-        }
-        break;
-      default:
-        /* XML_FINISHED case required by compiler - but not tested - djv */
-        return XML_STATUS_OK;
-      }
-    }
-
-    XmlUpdatePosition(encoding, positionPtr, end, &position);
-    nLeftOver = s + len - end;
-    if (nLeftOver) {
-      if (buffer == NULL || nLeftOver > bufferLim - buffer) {
-        /* FIXME avoid integer overflow */
-        char *temp;
-        temp = (buffer == NULL
-                ? (char *)MALLOC(len * 2)
-                : (char *)REALLOC(buffer, len * 2));
-        if (temp == NULL) {
-          errorCode = XML_ERROR_NO_MEMORY;
-          return XML_STATUS_ERROR;
-        }
-        buffer = temp;
-        if (!buffer) {
-          errorCode = XML_ERROR_NO_MEMORY;
-          eventPtr = eventEndPtr = NULL;
-          processor = errorProcessor;
-          return XML_STATUS_ERROR;
-        }
-        bufferLim = buffer + len * 2;
-      }
-      memcpy(buffer, end, nLeftOver);
-    }
-    bufferPtr = buffer;
-    bufferEnd = buffer + nLeftOver;
-    positionPtr = bufferPtr;
-    parseEndPtr = bufferEnd;
-    eventPtr = bufferPtr;
-    eventEndPtr = bufferPtr;
-    return result;
-  }
-#endif  /* not defined XML_CONTEXT_BYTES */
-  else {
-    void *buff = XML_GetBuffer(parser, len);
-    if (buff == NULL)
-      return XML_STATUS_ERROR;
-    else {
-      memcpy(buff, s, len);
-      return XML_ParseBuffer(parser, len, isFinal);
-    }
-  }
-}
-
-enum XML_Status XMLCALL
-XML_ParseBuffer(XML_Parser parser, int len, int isFinal)
-{
-  const char *start;
-  enum XML_Status result = XML_STATUS_OK;
-
-  switch (ps_parsing) {
-  case XML_SUSPENDED:
-    errorCode = XML_ERROR_SUSPENDED;
-    return XML_STATUS_ERROR;
-  case XML_FINISHED:
-    errorCode = XML_ERROR_FINISHED;
-    return XML_STATUS_ERROR;
-  default:
-    ps_parsing = XML_PARSING;
-  }
-
-  start = bufferPtr;
-  positionPtr = start;
-  bufferEnd += len;
-  parseEndPtr = bufferEnd;
-  parseEndByteIndex += len;
-  ps_finalBuffer = (XML_Bool)isFinal;
-
-  errorCode = processor(parser, start, parseEndPtr, &bufferPtr);
-
-  if (errorCode != XML_ERROR_NONE) {
-    eventEndPtr = eventPtr;
-    processor = errorProcessor;
-    return XML_STATUS_ERROR;
-  }
-  else {
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      result = XML_STATUS_SUSPENDED;
-      break;
-    case XML_INITIALIZED: 
-    case XML_PARSING:
-      if (isFinal) {
-        ps_parsing = XML_FINISHED;
-        return result;
-      }
-    default: ;  /* should not happen */
-    }
-  }
-
-  XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
-  positionPtr = bufferPtr;
-  return result;
-}
-
-void * XMLCALL
-XML_GetBuffer(XML_Parser parser, int len)
-{
-  switch (ps_parsing) {
-  case XML_SUSPENDED:
-    errorCode = XML_ERROR_SUSPENDED;
-    return NULL;
-  case XML_FINISHED:
-    errorCode = XML_ERROR_FINISHED;
-    return NULL;
-  default: ;
-  }
-
-  if (len > bufferLim - bufferEnd) {
-    /* FIXME avoid integer overflow */
-    int neededSize = len + (int)(bufferEnd - bufferPtr);
-#ifdef XML_CONTEXT_BYTES
-    int keep = (int)(bufferPtr - buffer);
-
-    if (keep > XML_CONTEXT_BYTES)
-      keep = XML_CONTEXT_BYTES;
-    neededSize += keep;
-#endif  /* defined XML_CONTEXT_BYTES */
-    if (neededSize  <= bufferLim - buffer) {
-#ifdef XML_CONTEXT_BYTES
-      if (keep < bufferPtr - buffer) {
-        int offset = (int)(bufferPtr - buffer) - keep;
-        memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep);
-        bufferEnd -= offset;
-        bufferPtr -= offset;
-      }
-#else
-      memmove(buffer, bufferPtr, bufferEnd - bufferPtr);
-      bufferEnd = buffer + (bufferEnd - bufferPtr);
-      bufferPtr = buffer;
-#endif  /* not defined XML_CONTEXT_BYTES */
-    }
-    else {
-      char *newBuf;
-      int bufferSize = (int)(bufferLim - bufferPtr);
-      if (bufferSize == 0)
-        bufferSize = INIT_BUFFER_SIZE;
-      do {
-        bufferSize *= 2;
-      } while (bufferSize < neededSize);
-      newBuf = (char *)MALLOC(bufferSize);
-      if (newBuf == 0) {
-        errorCode = XML_ERROR_NO_MEMORY;
-        return NULL;
-      }
-      bufferLim = newBuf + bufferSize;
-#ifdef XML_CONTEXT_BYTES
-      if (bufferPtr) {
-        int keep = (int)(bufferPtr - buffer);
-        if (keep > XML_CONTEXT_BYTES)
-          keep = XML_CONTEXT_BYTES;
-        memcpy(newBuf, &bufferPtr[-keep], bufferEnd - bufferPtr + keep);
-        FREE(buffer);
-        buffer = newBuf;
-        bufferEnd = buffer + (bufferEnd - bufferPtr) + keep;
-        bufferPtr = buffer + keep;
-      }
-      else {
-        bufferEnd = newBuf + (bufferEnd - bufferPtr);
-        bufferPtr = buffer = newBuf;
-      }
-#else
-      if (bufferPtr) {
-        memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr);
-        FREE(buffer);
-      }
-      bufferEnd = newBuf + (bufferEnd - bufferPtr);
-      bufferPtr = buffer = newBuf;
-#endif  /* not defined XML_CONTEXT_BYTES */
-    }
-  }
-  return bufferEnd;
-}
-
-enum XML_Status XMLCALL
-XML_StopParser(XML_Parser parser, XML_Bool resumable)
-{
-  switch (ps_parsing) {
-  case XML_SUSPENDED:
-    if (resumable) {
-      errorCode = XML_ERROR_SUSPENDED;
-      return XML_STATUS_ERROR;
-    }
-    ps_parsing = XML_FINISHED;
-    break;
-  case XML_FINISHED:
-    errorCode = XML_ERROR_FINISHED;
-    return XML_STATUS_ERROR;
-  default:
-    if (resumable) {
-#ifdef XML_DTD
-      if (isParamEntity) {
-        errorCode = XML_ERROR_SUSPEND_PE;
-        return XML_STATUS_ERROR;
-      }
-#endif
-      ps_parsing = XML_SUSPENDED;
-    }
-    else
-      ps_parsing = XML_FINISHED;
-  }
-  return XML_STATUS_OK;
-}
-
-enum XML_Status XMLCALL
-XML_ResumeParser(XML_Parser parser)
-{
-  enum XML_Status result = XML_STATUS_OK;
-
-  if (ps_parsing != XML_SUSPENDED) {
-    errorCode = XML_ERROR_NOT_SUSPENDED;
-    return XML_STATUS_ERROR;
-  }
-  ps_parsing = XML_PARSING;
-
-  errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr);
-
-  if (errorCode != XML_ERROR_NONE) {
-    eventEndPtr = eventPtr;
-    processor = errorProcessor;
-    return XML_STATUS_ERROR;
-  }
-  else {
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      result = XML_STATUS_SUSPENDED;
-      break;
-    case XML_INITIALIZED: 
-    case XML_PARSING:
-      if (ps_finalBuffer) {
-        ps_parsing = XML_FINISHED;
-        return result;
-      }
-    default: ;
-    }
-  }
-
-  XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);
-  positionPtr = bufferPtr;
-  return result;
-}
-
-void XMLCALL
-XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status)
-{
-  assert(status != NULL);
-  *status = parser->m_parsingStatus;
-}
-
-enum XML_Error XMLCALL
-XML_GetErrorCode(XML_Parser parser)
-{
-  return errorCode;
-}
-
-XML_Index XMLCALL
-XML_GetCurrentByteIndex(XML_Parser parser)
-{
-  if (eventPtr)
-    return parseEndByteIndex - (parseEndPtr - eventPtr);
-  return -1;
-}
-
-int XMLCALL
-XML_GetCurrentByteCount(XML_Parser parser)
-{
-  if (eventEndPtr && eventPtr)
-    return (int)(eventEndPtr - eventPtr);
-  return 0;
-}
-
-const char * XMLCALL
-XML_GetInputContext(XML_Parser parser, int *offset, int *size)
-{
-#ifdef XML_CONTEXT_BYTES
-  if (eventPtr && buffer) {
-    *offset = (int)(eventPtr - buffer);
-    *size   = (int)(bufferEnd - buffer);
-    return buffer;
-  }
-#endif /* defined XML_CONTEXT_BYTES */
-  return (char *) 0;
-}
-
-XML_Size XMLCALL
-XML_GetCurrentLineNumber(XML_Parser parser)
-{
-  if (eventPtr && eventPtr >= positionPtr) {
-    XmlUpdatePosition(encoding, positionPtr, eventPtr, &position);
-    positionPtr = eventPtr;
-  }
-  return position.lineNumber + 1;
-}
-
-XML_Size XMLCALL
-XML_GetCurrentColumnNumber(XML_Parser parser)
-{
-  if (eventPtr && eventPtr >= positionPtr) {
-    XmlUpdatePosition(encoding, positionPtr, eventPtr, &position);
-    positionPtr = eventPtr;
-  }
-  return position.columnNumber;
-}
-
-void XMLCALL
-XML_FreeContentModel(XML_Parser parser, XML_Content *model)
-{
-  FREE(model);
-}
-
-void * XMLCALL
-XML_MemMalloc(XML_Parser parser, size_t size)
-{
-  return MALLOC(size);
-}
-
-void * XMLCALL
-XML_MemRealloc(XML_Parser parser, void *ptr, size_t size)
-{
-  return REALLOC(ptr, size);
-}
-
-void XMLCALL
-XML_MemFree(XML_Parser parser, void *ptr)
-{
-  FREE(ptr);
-}
-
-void XMLCALL
-XML_DefaultCurrent(XML_Parser parser)
-{
-  if (defaultHandler) {
-    if (openInternalEntities)
-      reportDefault(parser,
-                    internalEncoding,
-                    openInternalEntities->internalEventPtr,
-                    openInternalEntities->internalEventEndPtr);
-    else
-      reportDefault(parser, encoding, eventPtr, eventEndPtr);
-  }
-}
-
-const XML_LChar * XMLCALL
-XML_ErrorString(enum XML_Error code)
-{
-  static const XML_LChar* const message[] = {
-    0,
-    XML_L("out of memory"),
-    XML_L("syntax error"),
-    XML_L("no element found"),
-    XML_L("not well-formed (invalid token)"),
-    XML_L("unclosed token"),
-    XML_L("partial character"),
-    XML_L("mismatched tag"),
-    XML_L("duplicate attribute"),
-    XML_L("junk after document element"),
-    XML_L("illegal parameter entity reference"),
-    XML_L("undefined entity"),
-    XML_L("recursive entity reference"),
-    XML_L("asynchronous entity"),
-    XML_L("reference to invalid character number"),
-    XML_L("reference to binary entity"),
-    XML_L("reference to external entity in attribute"),
-    XML_L("XML or text declaration not at start of entity"),
-    XML_L("unknown encoding"),
-    XML_L("encoding specified in XML declaration is incorrect"),
-    XML_L("unclosed CDATA section"),
-    XML_L("error in processing external entity reference"),
-    XML_L("document is not standalone"),
-    XML_L("unexpected parser state - please send a bug report"),
-    XML_L("entity declared in parameter entity"),
-    XML_L("requested feature requires XML_DTD support in Expat"),
-    XML_L("cannot change setting once parsing has begun"),
-    XML_L("unbound prefix"),
-    XML_L("must not undeclare prefix"),
-    XML_L("incomplete markup in parameter entity"),
-    XML_L("XML declaration not well-formed"),
-    XML_L("text declaration not well-formed"),
-    XML_L("illegal character(s) in public id"),
-    XML_L("parser suspended"),
-    XML_L("parser not suspended"),
-    XML_L("parsing aborted"),
-    XML_L("parsing finished"),
-    XML_L("cannot suspend in external parameter entity"),
-    XML_L("reserved prefix (xml) must not be undeclared or bound to another namespace name"),
-    XML_L("reserved prefix (xmlns) must not be declared or undeclared"),
-    XML_L("prefix must not be bound to one of the reserved namespace names")
-  };
-  if (code > 0 && code < sizeof(message)/sizeof(message[0]))
-    return message[code];
-  return NULL;
-}
-
-const XML_LChar * XMLCALL
-XML_ExpatVersion(void) {
-
-  /* V1 is used to string-ize the version number. However, it would
-     string-ize the actual version macro *names* unless we get them
-     substituted before being passed to V1. CPP is defined to expand
-     a macro, then rescan for more expansions. Thus, we use V2 to expand
-     the version macros, then CPP will expand the resulting V1() macro
-     with the correct numerals. */
-  /* ### I'm assuming cpp is portable in this respect... */
-
-#define V1(a,b,c) XML_L(#a)XML_L(".")XML_L(#b)XML_L(".")XML_L(#c)
-#define V2(a,b,c) XML_L("expat_")V1(a,b,c)
-
-  return V2(XML_MAJOR_VERSION, XML_MINOR_VERSION, XML_MICRO_VERSION);
-
-#undef V1
-#undef V2
-}
-
-XML_Expat_Version XMLCALL
-XML_ExpatVersionInfo(void)
-{
-  XML_Expat_Version version;
-
-  version.major = XML_MAJOR_VERSION;
-  version.minor = XML_MINOR_VERSION;
-  version.micro = XML_MICRO_VERSION;
-
-  return version;
-}
-
-const XML_Feature * XMLCALL
-XML_GetFeatureList(void)
-{
-  static const XML_Feature features[] = {
-    {XML_FEATURE_SIZEOF_XML_CHAR,  XML_L("sizeof(XML_Char)"),
-     sizeof(XML_Char)},
-    {XML_FEATURE_SIZEOF_XML_LCHAR, XML_L("sizeof(XML_LChar)"),
-     sizeof(XML_LChar)},
-#ifdef XML_UNICODE
-    {XML_FEATURE_UNICODE,          XML_L("XML_UNICODE"), 0},
-#endif
-#ifdef XML_UNICODE_WCHAR_T
-    {XML_FEATURE_UNICODE_WCHAR_T,  XML_L("XML_UNICODE_WCHAR_T"), 0},
-#endif
-#ifdef XML_DTD
-    {XML_FEATURE_DTD,              XML_L("XML_DTD"), 0},
-#endif
-#ifdef XML_CONTEXT_BYTES
-    {XML_FEATURE_CONTEXT_BYTES,    XML_L("XML_CONTEXT_BYTES"),
-     XML_CONTEXT_BYTES},
-#endif
-#ifdef XML_MIN_SIZE
-    {XML_FEATURE_MIN_SIZE,         XML_L("XML_MIN_SIZE"), 0},
-#endif
-#ifdef XML_NS
-    {XML_FEATURE_NS,               XML_L("XML_NS"), 0},
-#endif
-    {XML_FEATURE_END,              NULL, 0}
-  };
-
-  return features;
-}
-
-/* Initially tag->rawName always points into the parse buffer;
-   for those TAG instances opened while the current parse buffer was
-   processed, and not yet closed, we need to store tag->rawName in a more
-   permanent location, since the parse buffer is about to be discarded.
-*/
-static XML_Bool
-storeRawNames(XML_Parser parser)
-{
-  TAG *tag = tagStack;
-  while (tag) {
-    int bufSize;
-    int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1);
-    char *rawNameBuf = tag->buf + nameLen;
-    /* Stop if already stored.  Since tagStack is a stack, we can stop
-       at the first entry that has already been copied; everything
-       below it in the stack is already been accounted for in a
-       previous call to this function.
-    */
-    if (tag->rawName == rawNameBuf)
-      break;
-    /* For re-use purposes we need to ensure that the
-       size of tag->buf is a multiple of sizeof(XML_Char).
-    */
-    bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char));
-    if (bufSize > tag->bufEnd - tag->buf) {
-      char *temp = (char *)REALLOC(tag->buf, bufSize);
-      if (temp == NULL)
-        return XML_FALSE;
-      /* if tag->name.str points to tag->buf (only when namespace
-         processing is off) then we have to update it
-      */
-      if (tag->name.str == (XML_Char *)tag->buf)
-        tag->name.str = (XML_Char *)temp;
-      /* if tag->name.localPart is set (when namespace processing is on)
-         then update it as well, since it will always point into tag->buf
-      */
-      if (tag->name.localPart)
-        tag->name.localPart = (XML_Char *)temp + (tag->name.localPart -
-                                                  (XML_Char *)tag->buf);
-      tag->buf = temp;
-      tag->bufEnd = temp + bufSize;
-      rawNameBuf = temp + nameLen;
-    }
-    memcpy(rawNameBuf, tag->rawName, tag->rawNameLength);
-    tag->rawName = rawNameBuf;
-    tag = tag->parent;
-  }
-  return XML_TRUE;
-}
-
-static enum XML_Error PTRCALL
-contentProcessor(XML_Parser parser,
-                 const char *start,
-                 const char *end,
-                 const char **endPtr)
-{
-  enum XML_Error result = doContent(parser, 0, encoding, start, end, 
-                                    endPtr, (XML_Bool)!ps_finalBuffer);
-  if (result == XML_ERROR_NONE) {
-    if (!storeRawNames(parser))
-      return XML_ERROR_NO_MEMORY;
-  }
-  return result;
-}
-
-static enum XML_Error PTRCALL
-externalEntityInitProcessor(XML_Parser parser,
-                            const char *start,
-                            const char *end,
-                            const char **endPtr)
-{
-  enum XML_Error result = initializeEncoding(parser);
-  if (result != XML_ERROR_NONE)
-    return result;
-  processor = externalEntityInitProcessor2;
-  return externalEntityInitProcessor2(parser, start, end, endPtr);
-}
-
-static enum XML_Error PTRCALL
-externalEntityInitProcessor2(XML_Parser parser,
-                             const char *start,
-                             const char *end,
-                             const char **endPtr)
-{
-  const char *next = start; /* XmlContentTok doesn't always set the last arg */
-  int tok = XmlContentTok(encoding, start, end, &next);
-  switch (tok) {
-  case XML_TOK_BOM:
-    /* If we are at the end of the buffer, this would cause the next stage,
-       i.e. externalEntityInitProcessor3, to pass control directly to
-       doContent (by detecting XML_TOK_NONE) without processing any xml text
-       declaration - causing the error XML_ERROR_MISPLACED_XML_PI in doContent.
-    */
-    if (next == end && !ps_finalBuffer) {
-      *endPtr = next;
-      return XML_ERROR_NONE;
-    }
-    start = next;
-    break;
-  case XML_TOK_PARTIAL:
-    if (!ps_finalBuffer) {
-      *endPtr = start;
-      return XML_ERROR_NONE;
-    }
-    eventPtr = start;
-    return XML_ERROR_UNCLOSED_TOKEN;
-  case XML_TOK_PARTIAL_CHAR:
-    if (!ps_finalBuffer) {
-      *endPtr = start;
-      return XML_ERROR_NONE;
-    }
-    eventPtr = start;
-    return XML_ERROR_PARTIAL_CHAR;
-  }
-  processor = externalEntityInitProcessor3;
-  return externalEntityInitProcessor3(parser, start, end, endPtr);
-}
-
-static enum XML_Error PTRCALL
-externalEntityInitProcessor3(XML_Parser parser,
-                             const char *start,
-                             const char *end,
-                             const char **endPtr)
-{
-  int tok;
-  const char *next = start; /* XmlContentTok doesn't always set the last arg */
-  eventPtr = start;
-  tok = XmlContentTok(encoding, start, end, &next);
-  eventEndPtr = next;
-
-  switch (tok) {
-  case XML_TOK_XML_DECL:
-    {
-      enum XML_Error result;
-      result = processXmlDecl(parser, 1, start, next);
-      if (result != XML_ERROR_NONE)
-        return result;
-      switch (ps_parsing) {
-      case XML_SUSPENDED: 
-        *endPtr = next;
-        return XML_ERROR_NONE;
-      case XML_FINISHED:
-        return XML_ERROR_ABORTED;
-      default:
-        start = next;
-      }
-    }
-    break;
-  case XML_TOK_PARTIAL:
-    if (!ps_finalBuffer) {
-      *endPtr = start;
-      return XML_ERROR_NONE;
-    }
-    return XML_ERROR_UNCLOSED_TOKEN;
-  case XML_TOK_PARTIAL_CHAR:
-    if (!ps_finalBuffer) {
-      *endPtr = start;
-      return XML_ERROR_NONE;
-    }
-    return XML_ERROR_PARTIAL_CHAR;
-  }
-  processor = externalEntityContentProcessor;
-  tagLevel = 1;
-  return externalEntityContentProcessor(parser, start, end, endPtr);
-}
-
-static enum XML_Error PTRCALL
-externalEntityContentProcessor(XML_Parser parser,
-                               const char *start,
-                               const char *end,
-                               const char **endPtr)
-{
-  enum XML_Error result = doContent(parser, 1, encoding, start, end, 
-                                    endPtr, (XML_Bool)!ps_finalBuffer);
-  if (result == XML_ERROR_NONE) {
-    if (!storeRawNames(parser))
-      return XML_ERROR_NO_MEMORY;
-  }
-  return result;
-}
-
-static enum XML_Error
-doContent(XML_Parser parser,
-          int startTagLevel,
-          const ENCODING *enc,
-          const char *s,
-          const char *end,
-          const char **nextPtr,
-          XML_Bool haveMore)
-{
-  /* save one level of indirection */
-  DTD * const dtd = _dtd;  
-
-  const char **eventPP;
-  const char **eventEndPP;
-  if (enc == encoding) {
-    eventPP = &eventPtr;
-    eventEndPP = &eventEndPtr;
-  }
-  else {
-    eventPP = &(openInternalEntities->internalEventPtr);
-    eventEndPP = &(openInternalEntities->internalEventEndPtr);
-  }
-  *eventPP = s;
-
-  for (;;) {
-    const char *next = s; /* XmlContentTok doesn't always set the last arg */
-    int tok = XmlContentTok(enc, s, end, &next);
-    *eventEndPP = next;
-    switch (tok) {
-    case XML_TOK_TRAILING_CR:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      *eventEndPP = end;
-      if (characterDataHandler) {
-        XML_Char c = 0xA;
-        characterDataHandler(handlerArg, &c, 1);
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, end);
-      /* We are at the end of the final buffer, should we check for 
-         XML_SUSPENDED, XML_FINISHED? 
-      */
-      if (startTagLevel == 0)
-        return XML_ERROR_NO_ELEMENTS;
-      if (tagLevel != startTagLevel)
-        return XML_ERROR_ASYNC_ENTITY;
-      *nextPtr = end;
-      return XML_ERROR_NONE;
-    case XML_TOK_NONE:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      if (startTagLevel > 0) {
-        if (tagLevel != startTagLevel)
-          return XML_ERROR_ASYNC_ENTITY;
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_NO_ELEMENTS;
-    case XML_TOK_INVALID:
-      *eventPP = next;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_UNCLOSED_TOKEN;
-    case XML_TOK_PARTIAL_CHAR:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_PARTIAL_CHAR;
-    case XML_TOK_ENTITY_REF:
-      {
-        const XML_Char *name;
-        ENTITY *entity;
-        XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc,
-                                              s + enc->minBytesPerChar,
-                                              next - enc->minBytesPerChar);
-        if (ch) {
-          if (characterDataHandler)
-            characterDataHandler(handlerArg, &ch, 1);
-          else if (defaultHandler)
-            reportDefault(parser, enc, s, next);
-          break;
-        }
-        name = poolStoreString(&dtd->pool, enc,
-                                s + enc->minBytesPerChar,
-                                next - enc->minBytesPerChar);
-        if (!name)
-          return XML_ERROR_NO_MEMORY;
-        entity = (ENTITY *)lookup(&dtd->generalEntities, name, 0);
-        poolDiscard(&dtd->pool);
-        /* First, determine if a check for an existing declaration is needed;
-           if yes, check that the entity exists, and that it is internal,
-           otherwise call the skipped entity or default handler.
-        */
-        if (!dtd->hasParamEntityRefs || dtd->standalone) {
-          if (!entity)
-            return XML_ERROR_UNDEFINED_ENTITY;
-          else if (!entity->is_internal)
-            return XML_ERROR_ENTITY_DECLARED_IN_PE;
-        }
-        else if (!entity) {
-          if (skippedEntityHandler)
-            skippedEntityHandler(handlerArg, name, 0);
-          else if (defaultHandler)
-            reportDefault(parser, enc, s, next);
-          break;
-        }
-        if (entity->open)
-          return XML_ERROR_RECURSIVE_ENTITY_REF;
-        if (entity->notation)
-          return XML_ERROR_BINARY_ENTITY_REF;
-        if (entity->textPtr) {
-          enum XML_Error result;
-          if (!defaultExpandInternalEntities) {
-            if (skippedEntityHandler)
-              skippedEntityHandler(handlerArg, entity->name, 0);
-            else if (defaultHandler)
-              reportDefault(parser, enc, s, next);
-            break;
-          }
-          result = processInternalEntity(parser, entity, XML_FALSE);
-          if (result != XML_ERROR_NONE)
-            return result;
-        }
-        else if (externalEntityRefHandler) {
-          const XML_Char *context;
-          entity->open = XML_TRUE;
-          context = getContext(parser);
-          entity->open = XML_FALSE;
-          if (!context)
-            return XML_ERROR_NO_MEMORY;
-          if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                        context,
-                                        entity->base,
-                                        entity->systemId,
-                                        entity->publicId))
-            return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-          poolDiscard(&tempPool);
-        }
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        break;
-      }
-    case XML_TOK_START_TAG_NO_ATTS:
-      /* fall through */
-    case XML_TOK_START_TAG_WITH_ATTS:
-      {
-        TAG *tag;
-        enum XML_Error result;
-        XML_Char *toPtr;
-        if (freeTagList) {
-          tag = freeTagList;
-          freeTagList = freeTagList->parent;
-        }
-        else {
-          tag = (TAG *)MALLOC(sizeof(TAG));
-          if (!tag)
-            return XML_ERROR_NO_MEMORY;
-          tag->buf = (char *)MALLOC(INIT_TAG_BUF_SIZE);
-          if (!tag->buf) {
-            FREE(tag);
-            return XML_ERROR_NO_MEMORY;
-          }
-          tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE;
-        }
-        tag->bindings = NULL;
-        tag->parent = tagStack;
-        tagStack = tag;
-        tag->name.localPart = NULL;
-        tag->name.prefix = NULL;
-        tag->rawName = s + enc->minBytesPerChar;
-        tag->rawNameLength = XmlNameLength(enc, tag->rawName);
-        ++tagLevel;
-        {
-          const char *rawNameEnd = tag->rawName + tag->rawNameLength;
-          const char *fromPtr = tag->rawName;
-          toPtr = (XML_Char *)tag->buf;
-          for (;;) {
-            int bufSize;
-            int convLen;
-            XmlConvert(enc,
-                       &fromPtr, rawNameEnd,
-                       (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1);
-            convLen = (int)(toPtr - (XML_Char *)tag->buf);
-            if (fromPtr == rawNameEnd) {
-              tag->name.strLen = convLen;
-              break;
-            }
-            bufSize = (int)(tag->bufEnd - tag->buf) << 1;
-            {
-              char *temp = (char *)REALLOC(tag->buf, bufSize);
-              if (temp == NULL)
-                return XML_ERROR_NO_MEMORY;
-              tag->buf = temp;
-              tag->bufEnd = temp + bufSize;
-              toPtr = (XML_Char *)temp + convLen;
-            }
-          }
-        }
-        tag->name.str = (XML_Char *)tag->buf;
-        *toPtr = XML_T('\0');
-        result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings));
-        if (result)
-          return result;
-        if (startElementHandler)
-          startElementHandler(handlerArg, tag->name.str,
-                              (const XML_Char **)atts);
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        poolClear(&tempPool);
-        break;
-      }
-    case XML_TOK_EMPTY_ELEMENT_NO_ATTS:
-      /* fall through */
-    case XML_TOK_EMPTY_ELEMENT_WITH_ATTS:
-      {
-        const char *rawName = s + enc->minBytesPerChar;
-        enum XML_Error result;
-        BINDING *bindings = NULL;
-        XML_Bool noElmHandlers = XML_TRUE;
-        TAG_NAME name;
-        name.str = poolStoreString(&tempPool, enc, rawName,
-                                   rawName + XmlNameLength(enc, rawName));
-        if (!name.str)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&tempPool);
-        result = storeAtts(parser, enc, s, &name, &bindings);
-        if (result)
-          return result;
-        poolFinish(&tempPool);
-        if (startElementHandler) {
-          startElementHandler(handlerArg, name.str, (const XML_Char **)atts);
-          noElmHandlers = XML_FALSE;
-        }
-        if (endElementHandler) {
-          if (startElementHandler)
-            *eventPP = *eventEndPP;
-          endElementHandler(handlerArg, name.str);
-          noElmHandlers = XML_FALSE;
-        }
-        if (noElmHandlers && defaultHandler)
-          reportDefault(parser, enc, s, next);
-        poolClear(&tempPool);
-        while (bindings) {
-          BINDING *b = bindings;
-          if (endNamespaceDeclHandler)
-            endNamespaceDeclHandler(handlerArg, b->prefix->name);
-          bindings = bindings->nextTagBinding;
-          b->nextTagBinding = freeBindingList;
-          freeBindingList = b;
-          b->prefix->binding = b->prevPrefixBinding;
-        }
-      }
-      if (tagLevel == 0)
-        return epilogProcessor(parser, next, end, nextPtr);
-      break;
-    case XML_TOK_END_TAG:
-      if (tagLevel == startTagLevel)
-        return XML_ERROR_ASYNC_ENTITY;
-      else {
-        int len;
-        const char *rawName;
-        TAG *tag = tagStack;
-        tagStack = tag->parent;
-        tag->parent = freeTagList;
-        freeTagList = tag;
-        rawName = s + enc->minBytesPerChar*2;
-        len = XmlNameLength(enc, rawName);
-        if (len != tag->rawNameLength
-            || memcmp(tag->rawName, rawName, len) != 0) {
-          *eventPP = rawName;
-          return XML_ERROR_TAG_MISMATCH;
-        }
-        --tagLevel;
-        if (endElementHandler) {
-          const XML_Char *localPart;
-          const XML_Char *prefix;
-          XML_Char *uri;
-          localPart = tag->name.localPart;
-          if (ns && localPart) {
-            /* localPart and prefix may have been overwritten in
-               tag->name.str, since this points to the binding->uri
-               buffer which gets re-used; so we have to add them again
-            */
-            uri = (XML_Char *)tag->name.str + tag->name.uriLen;
-            /* don't need to check for space - already done in storeAtts() */
-            while (*localPart) *uri++ = *localPart++;
-            prefix = (XML_Char *)tag->name.prefix;
-            if (ns_triplets && prefix) {
-              *uri++ = namespaceSeparator;
-              while (*prefix) *uri++ = *prefix++;
-             }
-            *uri = XML_T('\0');
-          }
-          endElementHandler(handlerArg, tag->name.str);
-        }
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        while (tag->bindings) {
-          BINDING *b = tag->bindings;
-          if (endNamespaceDeclHandler)
-            endNamespaceDeclHandler(handlerArg, b->prefix->name);
-          tag->bindings = tag->bindings->nextTagBinding;
-          b->nextTagBinding = freeBindingList;
-          freeBindingList = b;
-          b->prefix->binding = b->prevPrefixBinding;
-        }
-        if (tagLevel == 0)
-          return epilogProcessor(parser, next, end, nextPtr);
-      }
-      break;
-    case XML_TOK_CHAR_REF:
-      {
-        int n = XmlCharRefNumber(enc, s);
-        if (n < 0)
-          return XML_ERROR_BAD_CHAR_REF;
-        if (characterDataHandler) {
-          XML_Char buf[XML_ENCODE_MAX];
-          characterDataHandler(handlerArg, buf, XmlEncode(n, (ICHAR *)buf));
-        }
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-      }
-      break;
-    case XML_TOK_XML_DECL:
-      return XML_ERROR_MISPLACED_XML_PI;
-    case XML_TOK_DATA_NEWLINE:
-      if (characterDataHandler) {
-        XML_Char c = 0xA;
-        characterDataHandler(handlerArg, &c, 1);
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      break;
-    case XML_TOK_CDATA_SECT_OPEN:
-      {
-        enum XML_Error result;
-        if (startCdataSectionHandler)
-          startCdataSectionHandler(handlerArg);
-#if 0
-        /* Suppose you doing a transformation on a document that involves
-           changing only the character data.  You set up a defaultHandler
-           and a characterDataHandler.  The defaultHandler simply copies
-           characters through.  The characterDataHandler does the
-           transformation and writes the characters out escaping them as
-           necessary.  This case will fail to work if we leave out the
-           following two lines (because & and < inside CDATA sections will
-           be incorrectly escaped).
-
-           However, now we have a start/endCdataSectionHandler, so it seems
-           easier to let the user deal with this.
-        */
-        else if (characterDataHandler)
-          characterDataHandler(handlerArg, dataBuf, 0);
-#endif
-        else if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        result = doCdataSection(parser, enc, &next, end, nextPtr, haveMore);
-        if (result != XML_ERROR_NONE)
-          return result;
-        else if (!next) {
-          processor = cdataSectionProcessor;
-          return result;
-        }
-      }
-      break;
-    case XML_TOK_TRAILING_RSQB:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      if (characterDataHandler) {
-        if (MUST_CONVERT(enc, s)) {
-          ICHAR *dataPtr = (ICHAR *)dataBuf;
-          XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd);
-          characterDataHandler(handlerArg, dataBuf,
-                               (int)(dataPtr - (ICHAR *)dataBuf));
-        }
-        else
-          characterDataHandler(handlerArg,
-                               (XML_Char *)s,
-                               (int)((XML_Char *)end - (XML_Char *)s));
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, end);
-      /* We are at the end of the final buffer, should we check for 
-         XML_SUSPENDED, XML_FINISHED? 
-      */
-      if (startTagLevel == 0) {
-        *eventPP = end;
-        return XML_ERROR_NO_ELEMENTS;
-      }
-      if (tagLevel != startTagLevel) {
-        *eventPP = end;
-        return XML_ERROR_ASYNC_ENTITY;
-      }
-      *nextPtr = end;
-      return XML_ERROR_NONE;
-    case XML_TOK_DATA_CHARS:
-      if (characterDataHandler) {
-        if (MUST_CONVERT(enc, s)) {
-          for (;;) {
-            ICHAR *dataPtr = (ICHAR *)dataBuf;
-            XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd);
-            *eventEndPP = s;
-            characterDataHandler(handlerArg, dataBuf,
-                                 (int)(dataPtr - (ICHAR *)dataBuf));
-            if (s == next)
-              break;
-            *eventPP = s;
-          }
-        }
-        else
-          characterDataHandler(handlerArg,
-                               (XML_Char *)s,
-                               (int)((XML_Char *)next - (XML_Char *)s));
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      break;
-    case XML_TOK_PI:
-      if (!reportProcessingInstruction(parser, enc, s, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_COMMENT:
-      if (!reportComment(parser, enc, s, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    default:
-      if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      break;
-    }
-    *eventPP = s = next;
-    switch (ps_parsing) {
-    case XML_SUSPENDED: 
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_FINISHED:
-      return XML_ERROR_ABORTED;
-    default: ;
-    }
-  }
-  /* not reached */
-}
-
-/* Precondition: all arguments must be non-NULL;
-   Purpose:
-   - normalize attributes
-   - check attributes for well-formedness
-   - generate namespace aware attribute names (URI, prefix)
-   - build list of attributes for startElementHandler
-   - default attributes
-   - process namespace declarations (check and report them)
-   - generate namespace aware element name (URI, prefix)
-*/
-static enum XML_Error
-storeAtts(XML_Parser parser, const ENCODING *enc,
-          const char *attStr, TAG_NAME *tagNamePtr,
-          BINDING **bindingsPtr)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  ELEMENT_TYPE *elementType;
-  int nDefaultAtts;
-  const XML_Char **appAtts;   /* the attribute list for the application */
-  int attIndex = 0;
-  int prefixLen;
-  int i;
-  int n;
-  XML_Char *uri;
-  int nPrefixes = 0;
-  BINDING *binding;
-  const XML_Char *localPart;
-
-  /* lookup the element type name */
-  elementType = (ELEMENT_TYPE *)lookup(&dtd->elementTypes, tagNamePtr->str,0);
-  if (!elementType) {
-    const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str);
-    if (!name)
-      return XML_ERROR_NO_MEMORY;
-    elementType = (ELEMENT_TYPE *)lookup(&dtd->elementTypes, name,
-                                         sizeof(ELEMENT_TYPE));
-    if (!elementType)
-      return XML_ERROR_NO_MEMORY;
-    if (ns && !setElementTypePrefix(parser, elementType))
-      return XML_ERROR_NO_MEMORY;
-  }
-  nDefaultAtts = elementType->nDefaultAtts;
-
-  /* get the attributes from the tokenizer */
-  n = XmlGetAttributes(enc, attStr, attsSize, atts);
-  if (n + nDefaultAtts > attsSize) {
-    int oldAttsSize = attsSize;
-    ATTRIBUTE *temp;
-    attsSize = n + nDefaultAtts + INIT_ATTS_SIZE;
-    temp = (ATTRIBUTE *)REALLOC((void *)atts, attsSize * sizeof(ATTRIBUTE));
-    if (temp == NULL)
-      return XML_ERROR_NO_MEMORY;
-    atts = temp;
-    if (n > oldAttsSize)
-      XmlGetAttributes(enc, attStr, n, atts);
-  }
-
-  appAtts = (const XML_Char **)atts;
-  for (i = 0; i < n; i++) {
-    /* add the name and value to the attribute list */
-    ATTRIBUTE_ID *attId = getAttributeId(parser, enc, atts[i].name,
-                                         atts[i].name
-                                         + XmlNameLength(enc, atts[i].name));
-    if (!attId)
-      return XML_ERROR_NO_MEMORY;
-    /* Detect duplicate attributes by their QNames. This does not work when
-       namespace processing is turned on and different prefixes for the same
-       namespace are used. For this case we have a check further down.
-    */
-    if ((attId->name)[-1]) {
-      if (enc == encoding)
-        eventPtr = atts[i].name;
-      return XML_ERROR_DUPLICATE_ATTRIBUTE;
-    }
-    (attId->name)[-1] = 1;
-    appAtts[attIndex++] = attId->name;
-    if (!atts[i].normalized) {
-      enum XML_Error result;
-      XML_Bool isCdata = XML_TRUE;
-
-      /* figure out whether declared as other than CDATA */
-      if (attId->maybeTokenized) {
-        int j;
-        for (j = 0; j < nDefaultAtts; j++) {
-          if (attId == elementType->defaultAtts[j].id) {
-            isCdata = elementType->defaultAtts[j].isCdata;
-            break;
-          }
-        }
-      }
-
-      /* normalize the attribute value */
-      result = storeAttributeValue(parser, enc, isCdata,
-                                   atts[i].valuePtr, atts[i].valueEnd,
-                                   &tempPool);
-      if (result)
-        return result;
-      appAtts[attIndex] = poolStart(&tempPool);
-      poolFinish(&tempPool);
-    }
-    else {
-      /* the value did not need normalizing */
-      appAtts[attIndex] = poolStoreString(&tempPool, enc, atts[i].valuePtr,
-                                          atts[i].valueEnd);
-      if (appAtts[attIndex] == 0)
-        return XML_ERROR_NO_MEMORY;
-      poolFinish(&tempPool);
-    }
-    /* handle prefixed attribute names */
-    if (attId->prefix) {
-      if (attId->xmlns) {
-        /* deal with namespace declarations here */
-        enum XML_Error result = addBinding(parser, attId->prefix, attId,
-                                           appAtts[attIndex], bindingsPtr);
-        if (result)
-          return result;
-        --attIndex;
-      }
-      else {
-        /* deal with other prefixed names later */
-        attIndex++;
-        nPrefixes++;
-        (attId->name)[-1] = 2;
-      }
-    }
-    else
-      attIndex++;
-  }
-
-  /* set-up for XML_GetSpecifiedAttributeCount and XML_GetIdAttributeIndex */
-  nSpecifiedAtts = attIndex;
-  if (elementType->idAtt && (elementType->idAtt->name)[-1]) {
-    for (i = 0; i < attIndex; i += 2)
-      if (appAtts[i] == elementType->idAtt->name) {
-        idAttIndex = i;
-        break;
-      }
-  }
-  else
-    idAttIndex = -1;
-
-  /* do attribute defaulting */
-  for (i = 0; i < nDefaultAtts; i++) {
-    const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + i;
-    if (!(da->id->name)[-1] && da->value) {
-      if (da->id->prefix) {
-        if (da->id->xmlns) {
-          enum XML_Error result = addBinding(parser, da->id->prefix, da->id,
-                                             da->value, bindingsPtr);
-          if (result)
-            return result;
-        }
-        else {
-          (da->id->name)[-1] = 2;
-          nPrefixes++;
-          appAtts[attIndex++] = da->id->name;
-          appAtts[attIndex++] = da->value;
-        }
-      }
-      else {
-        (da->id->name)[-1] = 1;
-        appAtts[attIndex++] = da->id->name;
-        appAtts[attIndex++] = da->value;
-      }
-    }
-  }
-  appAtts[attIndex] = 0;
-
-  /* expand prefixed attribute names, check for duplicates,
-     and clear flags that say whether attributes were specified */
-  i = 0;
-  if (nPrefixes) {
-    int j;  /* hash table index */
-    unsigned long version = nsAttsVersion;
-    int nsAttsSize = (int)1 << nsAttsPower;
-    /* size of hash table must be at least 2 * (# of prefixed attributes) */
-    if ((nPrefixes << 1) >> nsAttsPower) {  /* true for nsAttsPower = 0 */
-      NS_ATT *temp;
-      /* hash table size must also be a power of 2 and >= 8 */
-      while (nPrefixes >> nsAttsPower++);
-      if (nsAttsPower < 3)
-        nsAttsPower = 3;
-      nsAttsSize = (int)1 << nsAttsPower;
-      temp = (NS_ATT *)REALLOC(nsAtts, nsAttsSize * sizeof(NS_ATT));
-      if (!temp)
-        return XML_ERROR_NO_MEMORY;
-      nsAtts = temp;
-      version = 0;  /* force re-initialization of nsAtts hash table */
-    }
-    /* using a version flag saves us from initializing nsAtts every time */
-    if (!version) {  /* initialize version flags when version wraps around */
-      version = INIT_ATTS_VERSION;
-      for (j = nsAttsSize; j != 0; )
-        nsAtts[--j].version = version;
-    }
-    nsAttsVersion = --version;
-
-    /* expand prefixed names and check for duplicates */
-    for (; i < attIndex; i += 2) {
-      const XML_Char *s = appAtts[i];
-      if (s[-1] == 2) {  /* prefixed */
-        ATTRIBUTE_ID *id;
-        const BINDING *b;
-        unsigned long uriHash = 0;
-        ((XML_Char *)s)[-1] = 0;  /* clear flag */
-        id = (ATTRIBUTE_ID *)lookup(&dtd->attributeIds, s, 0);
-        if (!id)
-          return XML_ERROR_NO_MEMORY;
-        b = id->prefix->binding;
-        if (!b)
-          return XML_ERROR_UNBOUND_PREFIX;
-
-        /* as we expand the name we also calculate its hash value */
-        for (j = 0; j < b->uriLen; j++) {
-          const XML_Char c = b->uri[j];
-          if (!poolAppendChar(&tempPool, c))
-            return XML_ERROR_NO_MEMORY;
-          uriHash = CHAR_HASH(uriHash, c);
-        }
-        while (*s++ != XML_T(':'))
-          ;
-        do {  /* copies null terminator */
-          const XML_Char c = *s;
-          if (!poolAppendChar(&tempPool, *s))
-            return XML_ERROR_NO_MEMORY;
-          uriHash = CHAR_HASH(uriHash, c);
-        } while (*s++);
-
-        { /* Check hash table for duplicate of expanded name (uriName).
-             Derived from code in lookup(HASH_TABLE *table, ...).
-          */
-          unsigned char step = 0;
-          unsigned long mask = nsAttsSize - 1;
-          j = uriHash & mask;  /* index into hash table */
-          while (nsAtts[j].version == version) {
-            /* for speed we compare stored hash values first */
-            if (uriHash == nsAtts[j].hash) {
-              const XML_Char *s1 = poolStart(&tempPool);
-              const XML_Char *s2 = nsAtts[j].uriName;
-              /* s1 is null terminated, but not s2 */
-              for (; *s1 == *s2 && *s1 != 0; s1++, s2++);
-              if (*s1 == 0)
-                return XML_ERROR_DUPLICATE_ATTRIBUTE;
-            }
-            if (!step)
-              step = PROBE_STEP(uriHash, mask, nsAttsPower);
-            j < step ? (j += nsAttsSize - step) : (j -= step);
-          }
-        }
-
-        if (ns_triplets) {  /* append namespace separator and prefix */
-          tempPool.ptr[-1] = namespaceSeparator;
-          s = b->prefix->name;
-          do {
-            if (!poolAppendChar(&tempPool, *s))
-              return XML_ERROR_NO_MEMORY;
-          } while (*s++);
-        }
-
-        /* store expanded name in attribute list */
-        s = poolStart(&tempPool);
-        poolFinish(&tempPool);
-        appAtts[i] = s;
-
-        /* fill empty slot with new version, uriName and hash value */
-        nsAtts[j].version = version;
-        nsAtts[j].hash = uriHash;
-        nsAtts[j].uriName = s;
-
-        if (!--nPrefixes) {
-          i += 2;
-          break;
-        }
-      }
-      else  /* not prefixed */
-        ((XML_Char *)s)[-1] = 0;  /* clear flag */
-    }
-  }
-  /* clear flags for the remaining attributes */
-  for (; i < attIndex; i += 2)
-    ((XML_Char *)(appAtts[i]))[-1] = 0;
-  for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding)
-    binding->attId->name[-1] = 0;
-
-  if (!ns)
-    return XML_ERROR_NONE;
-
-  /* expand the element type name */
-  if (elementType->prefix) {
-    binding = elementType->prefix->binding;
-    if (!binding)
-      return XML_ERROR_UNBOUND_PREFIX;
-    localPart = tagNamePtr->str;
-    while (*localPart++ != XML_T(':'))
-      ;
-  }
-  else if (dtd->defaultPrefix.binding) {
-    binding = dtd->defaultPrefix.binding;
-    localPart = tagNamePtr->str;
-  }
-  else
-    return XML_ERROR_NONE;
-  prefixLen = 0;
-  if (ns_triplets && binding->prefix->name) {
-    for (; binding->prefix->name[prefixLen++];)
-      ;  /* prefixLen includes null terminator */
-  }
-  tagNamePtr->localPart = localPart;
-  tagNamePtr->uriLen = binding->uriLen;
-  tagNamePtr->prefix = binding->prefix->name;
-  tagNamePtr->prefixLen = prefixLen;
-  for (i = 0; localPart[i++];)
-    ;  /* i includes null terminator */
-  n = i + binding->uriLen + prefixLen;
-  if (n > binding->uriAlloc) {
-    TAG *p;
-    uri = (XML_Char *)MALLOC((n + EXPAND_SPARE) * sizeof(XML_Char));
-    if (!uri)
-      return XML_ERROR_NO_MEMORY;
-    binding->uriAlloc = n + EXPAND_SPARE;
-    memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char));
-    for (p = tagStack; p; p = p->parent)
-      if (p->name.str == binding->uri)
-        p->name.str = uri;
-    FREE(binding->uri);
-    binding->uri = uri;
-  }
-  /* if namespaceSeparator != '\0' then uri includes it already */
-  uri = binding->uri + binding->uriLen;
-  memcpy(uri, localPart, i * sizeof(XML_Char));
-  /* we always have a namespace separator between localPart and prefix */
-  if (prefixLen) {
-    uri += i - 1;
-    *uri = namespaceSeparator;  /* replace null terminator */
-    memcpy(uri + 1, binding->prefix->name, prefixLen * sizeof(XML_Char));
-  }
-  tagNamePtr->str = binding->uri;
-  return XML_ERROR_NONE;
-}
-
-/* addBinding() overwrites the value of prefix->binding without checking.
-   Therefore one must keep track of the old value outside of addBinding().
-*/
-static enum XML_Error
-addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId,
-           const XML_Char *uri, BINDING **bindingsPtr)
-{
-  static const XML_Char xmlNamespace[] = {
-    'h', 't', 't', 'p', ':', '/', '/',
-    'w', 'w', 'w', '.', 'w', '3', '.', 'o', 'r', 'g', '/',
-    'X', 'M', 'L', '/', '1', '9', '9', '8', '/',
-    'n', 'a', 'm', 'e', 's', 'p', 'a', 'c', 'e', '\0'
-  };
-  static const int xmlLen = 
-    (int)sizeof(xmlNamespace)/sizeof(XML_Char) - 1;
-  static const XML_Char xmlnsNamespace[] = {
-    'h', 't', 't', 'p', ':', '/', '/',
-    'w', 'w', 'w', '.', 'w', '3', '.', 'o', 'r', 'g', '/',
-    '2', '0', '0', '0', '/', 'x', 'm', 'l', 'n', 's', '/', '\0'
-  };
-  static const int xmlnsLen = 
-    (int)sizeof(xmlnsNamespace)/sizeof(XML_Char) - 1;
-
-  XML_Bool mustBeXML = XML_FALSE;
-  XML_Bool isXML = XML_TRUE;
-  XML_Bool isXMLNS = XML_TRUE;
-  
-  BINDING *b;
-  int len;
-
-  /* empty URI is only valid for default namespace per XML NS 1.0 (not 1.1) */
-  if (*uri == XML_T('\0') && prefix->name)
-    return XML_ERROR_UNDECLARING_PREFIX;
-
-  if (prefix->name
-      && prefix->name[0] == XML_T('x')
-      && prefix->name[1] == XML_T('m')
-      && prefix->name[2] == XML_T('l')) {
-
-    /* Not allowed to bind xmlns */
-    if (prefix->name[3] == XML_T('n')
-        && prefix->name[4] == XML_T('s')
-        && prefix->name[5] == XML_T('\0'))
-      return XML_ERROR_RESERVED_PREFIX_XMLNS;
-
-    if (prefix->name[3] == XML_T('\0'))
-      mustBeXML = XML_TRUE;
-  }
-
-  for (len = 0; uri[len]; len++) {
-    if (isXML && (len > xmlLen || uri[len] != xmlNamespace[len]))
-      isXML = XML_FALSE;
-
-    if (!mustBeXML && isXMLNS 
-        && (len > xmlnsLen || uri[len] != xmlnsNamespace[len]))
-      isXMLNS = XML_FALSE;
-  }
-  isXML = isXML && len == xmlLen;
-  isXMLNS = isXMLNS && len == xmlnsLen;
-
-  if (mustBeXML != isXML)
-    return mustBeXML ? XML_ERROR_RESERVED_PREFIX_XML
-                     : XML_ERROR_RESERVED_NAMESPACE_URI;
-
-  if (isXMLNS)
-    return XML_ERROR_RESERVED_NAMESPACE_URI;
-
-  if (namespaceSeparator)
-    len++;
-  if (freeBindingList) {
-    b = freeBindingList;
-    if (len > b->uriAlloc) {
-      XML_Char *temp = (XML_Char *)REALLOC(b->uri,
-                          sizeof(XML_Char) * (len + EXPAND_SPARE));
-      if (temp == NULL)
-        return XML_ERROR_NO_MEMORY;
-      b->uri = temp;
-      b->uriAlloc = len + EXPAND_SPARE;
-    }
-    freeBindingList = b->nextTagBinding;
-  }
-  else {
-    b = (BINDING *)MALLOC(sizeof(BINDING));
-    if (!b)
-      return XML_ERROR_NO_MEMORY;
-    b->uri = (XML_Char *)MALLOC(sizeof(XML_Char) * (len + EXPAND_SPARE));
-    if (!b->uri) {
-      FREE(b);
-      return XML_ERROR_NO_MEMORY;
-    }
-    b->uriAlloc = len + EXPAND_SPARE;
-  }
-  b->uriLen = len;
-  memcpy(b->uri, uri, len * sizeof(XML_Char));
-  if (namespaceSeparator)
-    b->uri[len - 1] = namespaceSeparator;
-  b->prefix = prefix;
-  b->attId = attId;
-  b->prevPrefixBinding = prefix->binding;
-  /* NULL binding when default namespace undeclared */
-  if (*uri == XML_T('\0') && prefix == &_dtd->defaultPrefix)
-    prefix->binding = NULL;
-  else
-    prefix->binding = b;
-  b->nextTagBinding = *bindingsPtr;
-  *bindingsPtr = b;
-  /* if attId == NULL then we are not starting a namespace scope */
-  if (attId && startNamespaceDeclHandler)
-    startNamespaceDeclHandler(handlerArg, prefix->name,
-                              prefix->binding ? uri : 0);
-  return XML_ERROR_NONE;
-}
-
-/* The idea here is to avoid using stack for each CDATA section when
-   the whole file is parsed with one call.
-*/
-static enum XML_Error PTRCALL
-cdataSectionProcessor(XML_Parser parser,
-                      const char *start,
-                      const char *end,
-                      const char **endPtr)
-{
-  enum XML_Error result = doCdataSection(parser, encoding, &start, end,
-                                         endPtr, (XML_Bool)!ps_finalBuffer);
-  if (result != XML_ERROR_NONE)
-    return result;
-  if (start) {
-    if (parentParser) {  /* we are parsing an external entity */
-      processor = externalEntityContentProcessor;
-      return externalEntityContentProcessor(parser, start, end, endPtr);
-    }
-    else {
-      processor = contentProcessor;
-      return contentProcessor(parser, start, end, endPtr);
-    }
-  }
-  return result;
-}
-
-/* startPtr gets set to non-null if the section is closed, and to null if
-   the section is not yet closed.
-*/
-static enum XML_Error
-doCdataSection(XML_Parser parser,
-               const ENCODING *enc,
-               const char **startPtr,
-               const char *end,
-               const char **nextPtr,
-               XML_Bool haveMore)
-{
-  const char *s = *startPtr;
-  const char **eventPP;
-  const char **eventEndPP;
-  if (enc == encoding) {
-    eventPP = &eventPtr;
-    *eventPP = s;
-    eventEndPP = &eventEndPtr;
-  }
-  else {
-    eventPP = &(openInternalEntities->internalEventPtr);
-    eventEndPP = &(openInternalEntities->internalEventEndPtr);
-  }
-  *eventPP = s;
-  *startPtr = NULL;
-
-  for (;;) {
-    const char *next;
-    int tok = XmlCdataSectionTok(enc, s, end, &next);
-    *eventEndPP = next;
-    switch (tok) {
-    case XML_TOK_CDATA_SECT_CLOSE:
-      if (endCdataSectionHandler)
-        endCdataSectionHandler(handlerArg);
-#if 0
-      /* see comment under XML_TOK_CDATA_SECT_OPEN */
-      else if (characterDataHandler)
-        characterDataHandler(handlerArg, dataBuf, 0);
-#endif
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      *startPtr = next;
-      *nextPtr = next;
-      if (ps_parsing == XML_FINISHED)
-        return XML_ERROR_ABORTED;
-      else
-        return XML_ERROR_NONE;
-    case XML_TOK_DATA_NEWLINE:
-      if (characterDataHandler) {
-        XML_Char c = 0xA;
-        characterDataHandler(handlerArg, &c, 1);
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      break;
-    case XML_TOK_DATA_CHARS:
-      if (characterDataHandler) {
-        if (MUST_CONVERT(enc, s)) {
-          for (;;) {
-            ICHAR *dataPtr = (ICHAR *)dataBuf;
-            XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd);
-            *eventEndPP = next;
-            characterDataHandler(handlerArg, dataBuf,
-                                 (int)(dataPtr - (ICHAR *)dataBuf));
-            if (s == next)
-              break;
-            *eventPP = s;
-          }
-        }
-        else
-          characterDataHandler(handlerArg,
-                               (XML_Char *)s,
-                               (int)((XML_Char *)next - (XML_Char *)s));
-      }
-      else if (defaultHandler)
-        reportDefault(parser, enc, s, next);
-      break;
-    case XML_TOK_INVALID:
-      *eventPP = next;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL_CHAR:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_PARTIAL_CHAR;
-    case XML_TOK_PARTIAL:
-    case XML_TOK_NONE:
-      if (haveMore) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_UNCLOSED_CDATA_SECTION;
-    default:
-      *eventPP = next;
-      return XML_ERROR_UNEXPECTED_STATE;
-    }
-
-    *eventPP = s = next;
-    switch (ps_parsing) {
-    case XML_SUSPENDED:
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_FINISHED:
-      return XML_ERROR_ABORTED;
-    default: ;
-    }
-  }
-  /* not reached */
-}
-
-#ifdef XML_DTD
-
-/* The idea here is to avoid using stack for each IGNORE section when
-   the whole file is parsed with one call.
-*/
-static enum XML_Error PTRCALL
-ignoreSectionProcessor(XML_Parser parser,
-                       const char *start,
-                       const char *end,
-                       const char **endPtr)
-{
-  enum XML_Error result = doIgnoreSection(parser, encoding, &start, end, 
-                                          endPtr, (XML_Bool)!ps_finalBuffer);
-  if (result != XML_ERROR_NONE)
-    return result;
-  if (start) {
-    processor = prologProcessor;
-    return prologProcessor(parser, start, end, endPtr);
-  }
-  return result;
-}
-
-/* startPtr gets set to non-null is the section is closed, and to null
-   if the section is not yet closed.
-*/
-static enum XML_Error
-doIgnoreSection(XML_Parser parser,
-                const ENCODING *enc,
-                const char **startPtr,
-                const char *end,
-                const char **nextPtr,
-                XML_Bool haveMore)
-{
-  const char *next;
-  int tok;
-  const char *s = *startPtr;
-  const char **eventPP;
-  const char **eventEndPP;
-  if (enc == encoding) {
-    eventPP = &eventPtr;
-    *eventPP = s;
-    eventEndPP = &eventEndPtr;
-  }
-  else {
-    eventPP = &(openInternalEntities->internalEventPtr);
-    eventEndPP = &(openInternalEntities->internalEventEndPtr);
-  }
-  *eventPP = s;
-  *startPtr = NULL;
-  tok = XmlIgnoreSectionTok(enc, s, end, &next);
-  *eventEndPP = next;
-  switch (tok) {
-  case XML_TOK_IGNORE_SECT:
-    if (defaultHandler)
-      reportDefault(parser, enc, s, next);
-    *startPtr = next;
-    *nextPtr = next;
-    if (ps_parsing == XML_FINISHED)
-      return XML_ERROR_ABORTED;
-    else
-      return XML_ERROR_NONE;
-  case XML_TOK_INVALID:
-    *eventPP = next;
-    return XML_ERROR_INVALID_TOKEN;
-  case XML_TOK_PARTIAL_CHAR:
-    if (haveMore) {
-      *nextPtr = s;
-      return XML_ERROR_NONE;
-    }
-    return XML_ERROR_PARTIAL_CHAR;
-  case XML_TOK_PARTIAL:
-  case XML_TOK_NONE:
-    if (haveMore) {
-      *nextPtr = s;
-      return XML_ERROR_NONE;
-    }
-    return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */
-  default:
-    *eventPP = next;
-    return XML_ERROR_UNEXPECTED_STATE;
-  }
-  /* not reached */
-}
-
-#endif /* XML_DTD */
-
-static enum XML_Error
-initializeEncoding(XML_Parser parser)
-{
-  const char *s;
-#ifdef XML_UNICODE
-  char encodingBuf[128];
-  if (!protocolEncodingName)
-    s = NULL;
-  else {
-    int i;
-    for (i = 0; protocolEncodingName[i]; i++) {
-      if (i == sizeof(encodingBuf) - 1
-          || (protocolEncodingName[i] & ~0x7f) != 0) {
-        encodingBuf[0] = '\0';
-        break;
-      }
-      encodingBuf[i] = (char)protocolEncodingName[i];
-    }
-    encodingBuf[i] = '\0';
-    s = encodingBuf;
-  }
-#else
-  s = protocolEncodingName;
-#endif
-  if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s))
-    return XML_ERROR_NONE;
-  return handleUnknownEncoding(parser, protocolEncodingName);
-}
-
-static enum XML_Error
-processXmlDecl(XML_Parser parser, int isGeneralTextEntity,
-               const char *s, const char *next)
-{
-  const char *encodingName = NULL;
-  const XML_Char *storedEncName = NULL;
-  const ENCODING *newEncoding = NULL;
-  const char *version = NULL;
-  const char *versionend;
-  const XML_Char *storedversion = NULL;
-  int standalone = -1;
-  if (!(ns
-        ? XmlParseXmlDeclNS
-        : XmlParseXmlDecl)(isGeneralTextEntity,
-                           encoding,
-                           s,
-                           next,
-                           &eventPtr,
-                           &version,
-                           &versionend,
-                           &encodingName,
-                           &newEncoding,
-                           &standalone)) {
-    if (isGeneralTextEntity)
-      return XML_ERROR_TEXT_DECL;
-    else
-      return XML_ERROR_XML_DECL;
-  }
-  if (!isGeneralTextEntity && standalone == 1) {
-    _dtd->standalone = XML_TRUE;
-#ifdef XML_DTD
-    if (paramEntityParsing == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE)
-      paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;
-#endif /* XML_DTD */
-  }
-  if (xmlDeclHandler) {
-    if (encodingName != NULL) {
-      storedEncName = poolStoreString(&temp2Pool,
-                                      encoding,
-                                      encodingName,
-                                      encodingName
-                                      + XmlNameLength(encoding, encodingName));
-      if (!storedEncName)
-              return XML_ERROR_NO_MEMORY;
-      poolFinish(&temp2Pool);
-    }
-    if (version) {
-      storedversion = poolStoreString(&temp2Pool,
-                                      encoding,
-                                      version,
-                                      versionend - encoding->minBytesPerChar);
-      if (!storedversion)
-        return XML_ERROR_NO_MEMORY;
-    }
-    xmlDeclHandler(handlerArg, storedversion, storedEncName, standalone);
-  }
-  else if (defaultHandler)
-    reportDefault(parser, encoding, s, next);
-  if (protocolEncodingName == NULL) {
-    if (newEncoding) {
-      if (newEncoding->minBytesPerChar != encoding->minBytesPerChar) {
-        eventPtr = encodingName;
-        return XML_ERROR_INCORRECT_ENCODING;
-      }
-      encoding = newEncoding;
-    }
-    else if (encodingName) {
-      enum XML_Error result;
-      if (!storedEncName) {
-        storedEncName = poolStoreString(
-          &temp2Pool, encoding, encodingName,
-          encodingName + XmlNameLength(encoding, encodingName));
-        if (!storedEncName)
-          return XML_ERROR_NO_MEMORY;
-      }
-      result = handleUnknownEncoding(parser, storedEncName);
-      poolClear(&temp2Pool);
-      if (result == XML_ERROR_UNKNOWN_ENCODING)
-        eventPtr = encodingName;
-      return result;
-    }
-  }
-
-  if (storedEncName || storedversion)
-    poolClear(&temp2Pool);
-
-  return XML_ERROR_NONE;
-}
-
-static enum XML_Error
-handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName)
-{
-  if (unknownEncodingHandler) {
-    XML_Encoding info;
-    int i;
-    for (i = 0; i < 256; i++)
-      info.map[i] = -1;
-    info.convert = NULL;
-    info.data = NULL;
-    info.release = NULL;
-    if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName,
-                               &info)) {
-      ENCODING *enc;
-      unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding());
-      if (!unknownEncodingMem) {
-        if (info.release)
-          info.release(info.data);
-        return XML_ERROR_NO_MEMORY;
-      }
-      enc = (ns
-             ? XmlInitUnknownEncodingNS
-             : XmlInitUnknownEncoding)(unknownEncodingMem,
-                                       info.map,
-                                       info.convert,
-                                       info.data);
-      if (enc) {
-        unknownEncodingData = info.data;
-        unknownEncodingRelease = info.release;
-        encoding = enc;
-        return XML_ERROR_NONE;
-      }
-    }
-    if (info.release != NULL)
-      info.release(info.data);
-  }
-  return XML_ERROR_UNKNOWN_ENCODING;
-}
-
-static enum XML_Error PTRCALL
-prologInitProcessor(XML_Parser parser,
-                    const char *s,
-                    const char *end,
-                    const char **nextPtr)
-{
-  enum XML_Error result = initializeEncoding(parser);
-  if (result != XML_ERROR_NONE)
-    return result;
-  processor = prologProcessor;
-  return prologProcessor(parser, s, end, nextPtr);
-}
-
-#ifdef XML_DTD
-
-static enum XML_Error PTRCALL
-externalParEntInitProcessor(XML_Parser parser,
-                            const char *s,
-                            const char *end,
-                            const char **nextPtr)
-{
-  enum XML_Error result = initializeEncoding(parser);
-  if (result != XML_ERROR_NONE)
-    return result;
-
-  /* we know now that XML_Parse(Buffer) has been called,
-     so we consider the external parameter entity read */
-  _dtd->paramEntityRead = XML_TRUE;
-
-  if (prologState.inEntityValue) {
-    processor = entityValueInitProcessor;
-    return entityValueInitProcessor(parser, s, end, nextPtr);
-  }
-  else {
-    processor = externalParEntProcessor;
-    return externalParEntProcessor(parser, s, end, nextPtr);
-  }
-}
-
-static enum XML_Error PTRCALL
-entityValueInitProcessor(XML_Parser parser,
-                         const char *s,
-                         const char *end,
-                         const char **nextPtr)
-{
-  int tok;
-  const char *start = s;
-  const char *next = start;
-  eventPtr = start;
-
-  for (;;) {  
-    tok = XmlPrologTok(encoding, start, end, &next);
-    eventEndPtr = next;
-    if (tok <= 0) {
-      if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      switch (tok) {
-      case XML_TOK_INVALID:
-        return XML_ERROR_INVALID_TOKEN;
-      case XML_TOK_PARTIAL:
-        return XML_ERROR_UNCLOSED_TOKEN;
-      case XML_TOK_PARTIAL_CHAR:
-        return XML_ERROR_PARTIAL_CHAR;
-      case XML_TOK_NONE:   /* start == end */
-      default:
-        break;
-      }
-      /* found end of entity value - can store it now */
-      return storeEntityValue(parser, encoding, s, end);
-    }
-    else if (tok == XML_TOK_XML_DECL) {
-      enum XML_Error result;
-      result = processXmlDecl(parser, 0, start, next);
-      if (result != XML_ERROR_NONE)
-        return result;
-      switch (ps_parsing) {
-      case XML_SUSPENDED: 
-        *nextPtr = next;
-        return XML_ERROR_NONE;
-      case XML_FINISHED:
-        return XML_ERROR_ABORTED;
-      default:
-        *nextPtr = next;
-      }
-      /* stop scanning for text declaration - we found one */
-      processor = entityValueProcessor;
-      return entityValueProcessor(parser, next, end, nextPtr);
-    }
-    /* If we are at the end of the buffer, this would cause XmlPrologTok to
-       return XML_TOK_NONE on the next call, which would then cause the
-       function to exit with *nextPtr set to s - that is what we want for other
-       tokens, but not for the BOM - we would rather like to skip it;
-       then, when this routine is entered the next time, XmlPrologTok will
-       return XML_TOK_INVALID, since the BOM is still in the buffer
-    */
-    else if (tok == XML_TOK_BOM && next == end && !ps_finalBuffer) {
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    }
-    start = next;
-    eventPtr = start;
-  }
-}
-
-static enum XML_Error PTRCALL
-externalParEntProcessor(XML_Parser parser,
-                        const char *s,
-                        const char *end,
-                        const char **nextPtr)
-{
-  const char *next = s;
-  int tok;
-
-  tok = XmlPrologTok(encoding, s, end, &next);
-  if (tok <= 0) {
-    if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
-      *nextPtr = s;
-      return XML_ERROR_NONE;
-    }
-    switch (tok) {
-    case XML_TOK_INVALID:
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL:
-      return XML_ERROR_UNCLOSED_TOKEN;
-    case XML_TOK_PARTIAL_CHAR:
-      return XML_ERROR_PARTIAL_CHAR;
-    case XML_TOK_NONE:   /* start == end */
-    default:
-      break;
-    }
-  }
-  /* This would cause the next stage, i.e. doProlog to be passed XML_TOK_BOM.
-     However, when parsing an external subset, doProlog will not accept a BOM
-     as valid, and report a syntax error, so we have to skip the BOM
-  */
-  else if (tok == XML_TOK_BOM) {
-    s = next;
-    tok = XmlPrologTok(encoding, s, end, &next);
-  }
-
-  processor = prologProcessor;
-  return doProlog(parser, encoding, s, end, tok, next, 
-                  nextPtr, (XML_Bool)!ps_finalBuffer);
-}
-
-static enum XML_Error PTRCALL
-entityValueProcessor(XML_Parser parser,
-                     const char *s,
-                     const char *end,
-                     const char **nextPtr)
-{
-  const char *start = s;
-  const char *next = s;
-  const ENCODING *enc = encoding;
-  int tok;
-
-  for (;;) {
-    tok = XmlPrologTok(enc, start, end, &next);
-    if (tok <= 0) {
-      if (!ps_finalBuffer && tok != XML_TOK_INVALID) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      switch (tok) {
-      case XML_TOK_INVALID:
-        return XML_ERROR_INVALID_TOKEN;
-      case XML_TOK_PARTIAL:
-        return XML_ERROR_UNCLOSED_TOKEN;
-      case XML_TOK_PARTIAL_CHAR:
-        return XML_ERROR_PARTIAL_CHAR;
-      case XML_TOK_NONE:   /* start == end */
-      default:
-        break;
-      }
-      /* found end of entity value - can store it now */
-      return storeEntityValue(parser, enc, s, end);
-    }
-    start = next;
-  }
-}
-
-#endif /* XML_DTD */
-
-static enum XML_Error PTRCALL
-prologProcessor(XML_Parser parser,
-                const char *s,
-                const char *end,
-                const char **nextPtr)
-{
-  const char *next = s;
-  int tok = XmlPrologTok(encoding, s, end, &next);
-  return doProlog(parser, encoding, s, end, tok, next, 
-                  nextPtr, (XML_Bool)!ps_finalBuffer);
-}
-
-static enum XML_Error
-doProlog(XML_Parser parser,
-         const ENCODING *enc,
-         const char *s,
-         const char *end,
-         int tok,
-         const char *next,
-         const char **nextPtr,
-         XML_Bool haveMore)
-{
-#ifdef XML_DTD
-  static const XML_Char externalSubsetName[] = { '#' , '\0' };
-#endif /* XML_DTD */
-  static const XML_Char atypeCDATA[] = { 'C', 'D', 'A', 'T', 'A', '\0' };
-  static const XML_Char atypeID[] = { 'I', 'D', '\0' };
-  static const XML_Char atypeIDREF[] = { 'I', 'D', 'R', 'E', 'F', '\0' };
-  static const XML_Char atypeIDREFS[] = { 'I', 'D', 'R', 'E', 'F', 'S', '\0' };
-  static const XML_Char atypeENTITY[] = { 'E', 'N', 'T', 'I', 'T', 'Y', '\0' };
-  static const XML_Char atypeENTITIES[] =
-      { 'E', 'N', 'T', 'I', 'T', 'I', 'E', 'S', '\0' };
-  static const XML_Char atypeNMTOKEN[] = {
-      'N', 'M', 'T', 'O', 'K', 'E', 'N', '\0' };
-  static const XML_Char atypeNMTOKENS[] = {
-      'N', 'M', 'T', 'O', 'K', 'E', 'N', 'S', '\0' };
-  static const XML_Char notationPrefix[] = {
-      'N', 'O', 'T', 'A', 'T', 'I', 'O', 'N', '(', '\0' };
-  static const XML_Char enumValueSep[] = { '|', '\0' };
-  static const XML_Char enumValueStart[] = { '(', '\0' };
-
-  /* save one level of indirection */
-  DTD * const dtd = _dtd; 
-
-  const char **eventPP;
-  const char **eventEndPP;
-  enum XML_Content_Quant quant;
-
-  if (enc == encoding) {
-    eventPP = &eventPtr;
-    eventEndPP = &eventEndPtr;
-  }
-  else {
-    eventPP = &(openInternalEntities->internalEventPtr);
-    eventEndPP = &(openInternalEntities->internalEventEndPtr);
-  }
-
-  for (;;) {
-    int role;
-    XML_Bool handleDefault = XML_TRUE;
-    *eventPP = s;
-    *eventEndPP = next;
-    if (tok <= 0) {
-      if (haveMore && tok != XML_TOK_INVALID) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      switch (tok) {
-      case XML_TOK_INVALID:
-        *eventPP = next;
-        return XML_ERROR_INVALID_TOKEN;
-      case XML_TOK_PARTIAL:
-        return XML_ERROR_UNCLOSED_TOKEN;
-      case XML_TOK_PARTIAL_CHAR:
-        return XML_ERROR_PARTIAL_CHAR;
-      case -XML_TOK_PROLOG_S:
-        tok = -tok;
-        break;
-      case XML_TOK_NONE:
-#ifdef XML_DTD
-        /* for internal PE NOT referenced between declarations */
-        if (enc != encoding && !openInternalEntities->betweenDecl) {
-          *nextPtr = s;
-          return XML_ERROR_NONE;
-        }
-        /* WFC: PE Between Declarations - must check that PE contains
-           complete markup, not only for external PEs, but also for
-           internal PEs if the reference occurs between declarations.
-        */
-        if (isParamEntity || enc != encoding) {
-          if (XmlTokenRole(&prologState, XML_TOK_NONE, end, end, enc)
-              == XML_ROLE_ERROR)
-            return XML_ERROR_INCOMPLETE_PE;
-          *nextPtr = s;
-          return XML_ERROR_NONE;
-        }
-#endif /* XML_DTD */
-        return XML_ERROR_NO_ELEMENTS;
-      default:
-        tok = -tok;
-        next = end;
-        break;
-      }
-    }
-    role = XmlTokenRole(&prologState, tok, s, next, enc);
-    switch (role) {
-    case XML_ROLE_XML_DECL:
-      {
-        enum XML_Error result = processXmlDecl(parser, 0, s, next);
-        if (result != XML_ERROR_NONE)
-          return result;
-        enc = encoding;
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_DOCTYPE_NAME:
-      if (startDoctypeDeclHandler) {
-        doctypeName = poolStoreString(&tempPool, enc, s, next);
-        if (!doctypeName)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&tempPool);
-        doctypePubid = NULL;
-        handleDefault = XML_FALSE;
-      }
-      doctypeSysid = NULL; /* always initialize to NULL */
-      break;
-    case XML_ROLE_DOCTYPE_INTERNAL_SUBSET:
-      if (startDoctypeDeclHandler) {
-        startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid,
-                                doctypePubid, 1);
-        doctypeName = NULL;
-        poolClear(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-      break;
-#ifdef XML_DTD
-    case XML_ROLE_TEXT_DECL:
-      {
-        enum XML_Error result = processXmlDecl(parser, 1, s, next);
-        if (result != XML_ERROR_NONE)
-          return result;
-        enc = encoding;
-        handleDefault = XML_FALSE;
-      }
-      break;
-#endif /* XML_DTD */
-    case XML_ROLE_DOCTYPE_PUBLIC_ID:
-#ifdef XML_DTD
-      useForeignDTD = XML_FALSE;
-      declEntity = (ENTITY *)lookup(&dtd->paramEntities,
-                                    externalSubsetName,
-                                    sizeof(ENTITY));
-      if (!declEntity)
-        return XML_ERROR_NO_MEMORY;
-#endif /* XML_DTD */
-      dtd->hasParamEntityRefs = XML_TRUE;
-      if (startDoctypeDeclHandler) {
-        if (!XmlIsPublicId(enc, s, next, eventPP))
-          return XML_ERROR_PUBLICID;
-        doctypePubid = poolStoreString(&tempPool, enc,
-                                       s + enc->minBytesPerChar,
-                                       next - enc->minBytesPerChar);
-        if (!doctypePubid)
-          return XML_ERROR_NO_MEMORY;
-        normalizePublicId((XML_Char *)doctypePubid);
-        poolFinish(&tempPool);
-        handleDefault = XML_FALSE;
-        goto alreadyChecked;
-      }
-      /* fall through */
-    case XML_ROLE_ENTITY_PUBLIC_ID:
-      if (!XmlIsPublicId(enc, s, next, eventPP))
-        return XML_ERROR_PUBLICID;
-    alreadyChecked:
-      if (dtd->keepProcessing && declEntity) {
-        XML_Char *tem = poolStoreString(&dtd->pool,
-                                        enc,
-                                        s + enc->minBytesPerChar,
-                                        next - enc->minBytesPerChar);
-        if (!tem)
-          return XML_ERROR_NO_MEMORY;
-        normalizePublicId(tem);
-        declEntity->publicId = tem;
-        poolFinish(&dtd->pool);
-        if (entityDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_DOCTYPE_CLOSE:
-      if (doctypeName) {
-        startDoctypeDeclHandler(handlerArg, doctypeName,
-                                doctypeSysid, doctypePubid, 0);
-        poolClear(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-      /* doctypeSysid will be non-NULL in the case of a previous
-         XML_ROLE_DOCTYPE_SYSTEM_ID, even if startDoctypeDeclHandler
-         was not set, indicating an external subset
-      */
-#ifdef XML_DTD
-      if (doctypeSysid || useForeignDTD) {
-        XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs;
-        dtd->hasParamEntityRefs = XML_TRUE;
-        if (paramEntityParsing && externalEntityRefHandler) {
-          ENTITY *entity = (ENTITY *)lookup(&dtd->paramEntities,
-                                            externalSubsetName,
-                                            sizeof(ENTITY));
-          if (!entity)
-            return XML_ERROR_NO_MEMORY;
-          if (useForeignDTD)
-            entity->base = curBase;
-          dtd->paramEntityRead = XML_FALSE;
-          if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                        0,
-                                        entity->base,
-                                        entity->systemId,
-                                        entity->publicId))
-            return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-          if (dtd->paramEntityRead) {
-            if (!dtd->standalone && 
-                notStandaloneHandler && 
-                !notStandaloneHandler(handlerArg))
-              return XML_ERROR_NOT_STANDALONE;
-          }
-          /* if we didn't read the foreign DTD then this means that there
-             is no external subset and we must reset dtd->hasParamEntityRefs
-          */
-          else if (!doctypeSysid)
-            dtd->hasParamEntityRefs = hadParamEntityRefs;
-          /* end of DTD - no need to update dtd->keepProcessing */
-        }
-        useForeignDTD = XML_FALSE;
-      }
-#endif /* XML_DTD */
-      if (endDoctypeDeclHandler) {
-        endDoctypeDeclHandler(handlerArg);
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_INSTANCE_START:
-#ifdef XML_DTD
-      /* if there is no DOCTYPE declaration then now is the
-         last chance to read the foreign DTD
-      */
-      if (useForeignDTD) {
-        XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs;
-        dtd->hasParamEntityRefs = XML_TRUE;
-        if (paramEntityParsing && externalEntityRefHandler) {
-          ENTITY *entity = (ENTITY *)lookup(&dtd->paramEntities,
-                                            externalSubsetName,
-                                            sizeof(ENTITY));
-          if (!entity)
-            return XML_ERROR_NO_MEMORY;
-          entity->base = curBase;
-          dtd->paramEntityRead = XML_FALSE;
-          if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                        0,
-                                        entity->base,
-                                        entity->systemId,
-                                        entity->publicId))
-            return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-          if (dtd->paramEntityRead) {
-            if (!dtd->standalone &&
-                notStandaloneHandler &&
-                !notStandaloneHandler(handlerArg))
-              return XML_ERROR_NOT_STANDALONE;
-          }
-          /* if we didn't read the foreign DTD then this means that there
-             is no external subset and we must reset dtd->hasParamEntityRefs
-          */
-          else
-            dtd->hasParamEntityRefs = hadParamEntityRefs;
-          /* end of DTD - no need to update dtd->keepProcessing */
-        }
-      }
-#endif /* XML_DTD */
-      processor = contentProcessor;
-      return contentProcessor(parser, s, end, nextPtr);
-    case XML_ROLE_ATTLIST_ELEMENT_NAME:
-      declElementType = getElementType(parser, enc, s, next);
-      if (!declElementType)
-        return XML_ERROR_NO_MEMORY;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_NAME:
-      declAttributeId = getAttributeId(parser, enc, s, next);
-      if (!declAttributeId)
-        return XML_ERROR_NO_MEMORY;
-      declAttributeIsCdata = XML_FALSE;
-      declAttributeType = NULL;
-      declAttributeIsId = XML_FALSE;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_CDATA:
-      declAttributeIsCdata = XML_TRUE;
-      declAttributeType = atypeCDATA;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_ID:
-      declAttributeIsId = XML_TRUE;
-      declAttributeType = atypeID;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_IDREF:
-      declAttributeType = atypeIDREF;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_IDREFS:
-      declAttributeType = atypeIDREFS;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_ENTITY:
-      declAttributeType = atypeENTITY;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES:
-      declAttributeType = atypeENTITIES;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN:
-      declAttributeType = atypeNMTOKEN;
-      goto checkAttListDeclHandler;
-    case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS:
-      declAttributeType = atypeNMTOKENS;
-    checkAttListDeclHandler:
-      if (dtd->keepProcessing && attlistDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_ATTRIBUTE_ENUM_VALUE:
-    case XML_ROLE_ATTRIBUTE_NOTATION_VALUE:
-      if (dtd->keepProcessing && attlistDeclHandler) {
-        const XML_Char *prefix;
-        if (declAttributeType) {
-          prefix = enumValueSep;
-        }
-        else {
-          prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE
-                    ? notationPrefix
-                    : enumValueStart);
-        }
-        if (!poolAppendString(&tempPool, prefix))
-          return XML_ERROR_NO_MEMORY;
-        if (!poolAppend(&tempPool, enc, s, next))
-          return XML_ERROR_NO_MEMORY;
-        declAttributeType = tempPool.start;
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE:
-    case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE:
-      if (dtd->keepProcessing) {
-        if (!defineAttribute(declElementType, declAttributeId,
-                             declAttributeIsCdata, declAttributeIsId,
-                             0, parser))
-          return XML_ERROR_NO_MEMORY;
-        if (attlistDeclHandler && declAttributeType) {
-          if (*declAttributeType == XML_T('(')
-              || (*declAttributeType == XML_T('N')
-                  && declAttributeType[1] == XML_T('O'))) {
-            /* Enumerated or Notation type */
-            if (!poolAppendChar(&tempPool, XML_T(')'))
-                || !poolAppendChar(&tempPool, XML_T('\0')))
-              return XML_ERROR_NO_MEMORY;
-            declAttributeType = tempPool.start;
-            poolFinish(&tempPool);
-          }
-          *eventEndPP = s;
-          attlistDeclHandler(handlerArg, declElementType->name,
-                             declAttributeId->name, declAttributeType,
-                             0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE);
-          poolClear(&tempPool);
-          handleDefault = XML_FALSE;
-        }
-      }
-      break;
-    case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE:
-    case XML_ROLE_FIXED_ATTRIBUTE_VALUE:
-      if (dtd->keepProcessing) {
-        const XML_Char *attVal;
-        enum XML_Error result =
-          storeAttributeValue(parser, enc, declAttributeIsCdata,
-                              s + enc->minBytesPerChar,
-                              next - enc->minBytesPerChar,
-                              &dtd->pool);
-        if (result)
-          return result;
-        attVal = poolStart(&dtd->pool);
-        poolFinish(&dtd->pool);
-        /* ID attributes aren't allowed to have a default */
-        if (!defineAttribute(declElementType, declAttributeId,
-                             declAttributeIsCdata, XML_FALSE, attVal, parser))
-          return XML_ERROR_NO_MEMORY;
-        if (attlistDeclHandler && declAttributeType) {
-          if (*declAttributeType == XML_T('(')
-              || (*declAttributeType == XML_T('N')
-                  && declAttributeType[1] == XML_T('O'))) {
-            /* Enumerated or Notation type */
-            if (!poolAppendChar(&tempPool, XML_T(')'))
-                || !poolAppendChar(&tempPool, XML_T('\0')))
-              return XML_ERROR_NO_MEMORY;
-            declAttributeType = tempPool.start;
-            poolFinish(&tempPool);
-          }
-          *eventEndPP = s;
-          attlistDeclHandler(handlerArg, declElementType->name,
-                             declAttributeId->name, declAttributeType,
-                             attVal,
-                             role == XML_ROLE_FIXED_ATTRIBUTE_VALUE);
-          poolClear(&tempPool);
-          handleDefault = XML_FALSE;
-        }
-      }
-      break;
-    case XML_ROLE_ENTITY_VALUE:
-      if (dtd->keepProcessing) {
-        enum XML_Error result = storeEntityValue(parser, enc,
-                                            s + enc->minBytesPerChar,
-                                            next - enc->minBytesPerChar);
-        if (declEntity) {
-          declEntity->textPtr = poolStart(&dtd->entityValuePool);
-          declEntity->textLen = (int)(poolLength(&dtd->entityValuePool));
-          poolFinish(&dtd->entityValuePool);
-          if (entityDeclHandler) {
-            *eventEndPP = s;
-            entityDeclHandler(handlerArg,
-                              declEntity->name,
-                              declEntity->is_param,
-                              declEntity->textPtr,
-                              declEntity->textLen,
-                              curBase, 0, 0, 0);
-            handleDefault = XML_FALSE;
-          }
-        }
-        else
-          poolDiscard(&dtd->entityValuePool);
-        if (result != XML_ERROR_NONE)
-          return result;
-      }
-      break;
-    case XML_ROLE_DOCTYPE_SYSTEM_ID:
-#ifdef XML_DTD
-      useForeignDTD = XML_FALSE;
-#endif /* XML_DTD */
-      dtd->hasParamEntityRefs = XML_TRUE;
-      if (startDoctypeDeclHandler) {
-        doctypeSysid = poolStoreString(&tempPool, enc,
-                                       s + enc->minBytesPerChar,
-                                       next - enc->minBytesPerChar);
-        if (doctypeSysid == NULL)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-#ifdef XML_DTD
-      else
-        /* use externalSubsetName to make doctypeSysid non-NULL
-           for the case where no startDoctypeDeclHandler is set */
-        doctypeSysid = externalSubsetName;
-#endif /* XML_DTD */
-      if (!dtd->standalone
-#ifdef XML_DTD
-          && !paramEntityParsing
-#endif /* XML_DTD */
-          && notStandaloneHandler
-          && !notStandaloneHandler(handlerArg))
-        return XML_ERROR_NOT_STANDALONE;
-#ifndef XML_DTD
-      break;
-#else /* XML_DTD */
-      if (!declEntity) {
-        declEntity = (ENTITY *)lookup(&dtd->paramEntities,
-                                      externalSubsetName,
-                                      sizeof(ENTITY));
-        if (!declEntity)
-          return XML_ERROR_NO_MEMORY;
-        declEntity->publicId = NULL;
-      }
-      /* fall through */
-#endif /* XML_DTD */
-    case XML_ROLE_ENTITY_SYSTEM_ID:
-      if (dtd->keepProcessing && declEntity) {
-        declEntity->systemId = poolStoreString(&dtd->pool, enc,
-                                               s + enc->minBytesPerChar,
-                                               next - enc->minBytesPerChar);
-        if (!declEntity->systemId)
-          return XML_ERROR_NO_MEMORY;
-        declEntity->base = curBase;
-        poolFinish(&dtd->pool);
-        if (entityDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_ENTITY_COMPLETE:
-      if (dtd->keepProcessing && declEntity && entityDeclHandler) {
-        *eventEndPP = s;
-        entityDeclHandler(handlerArg,
-                          declEntity->name,
-                          declEntity->is_param,
-                          0,0,
-                          declEntity->base,
-                          declEntity->systemId,
-                          declEntity->publicId,
-                          0);
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_ENTITY_NOTATION_NAME:
-      if (dtd->keepProcessing && declEntity) {
-        declEntity->notation = poolStoreString(&dtd->pool, enc, s, next);
-        if (!declEntity->notation)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&dtd->pool);
-        if (unparsedEntityDeclHandler) {
-          *eventEndPP = s;
-          unparsedEntityDeclHandler(handlerArg,
-                                    declEntity->name,
-                                    declEntity->base,
-                                    declEntity->systemId,
-                                    declEntity->publicId,
-                                    declEntity->notation);
-          handleDefault = XML_FALSE;
-        }
-        else if (entityDeclHandler) {
-          *eventEndPP = s;
-          entityDeclHandler(handlerArg,
-                            declEntity->name,
-                            0,0,0,
-                            declEntity->base,
-                            declEntity->systemId,
-                            declEntity->publicId,
-                            declEntity->notation);
-          handleDefault = XML_FALSE;
-        }
-      }
-      break;
-    case XML_ROLE_GENERAL_ENTITY_NAME:
-      {
-        if (XmlPredefinedEntityName(enc, s, next)) {
-          declEntity = NULL;
-          break;
-        }
-        if (dtd->keepProcessing) {
-          const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next);
-          if (!name)
-            return XML_ERROR_NO_MEMORY;
-          declEntity = (ENTITY *)lookup(&dtd->generalEntities, name,
-                                        sizeof(ENTITY));
-          if (!declEntity)
-            return XML_ERROR_NO_MEMORY;
-          if (declEntity->name != name) {
-            poolDiscard(&dtd->pool);
-            declEntity = NULL;
-          }
-          else {
-            poolFinish(&dtd->pool);
-            declEntity->publicId = NULL;
-            declEntity->is_param = XML_FALSE;
-            /* if we have a parent parser or are reading an internal parameter
-               entity, then the entity declaration is not considered "internal"
-            */
-            declEntity->is_internal = !(parentParser || openInternalEntities);
-            if (entityDeclHandler)
-              handleDefault = XML_FALSE;
-          }
-        }
-        else {
-          poolDiscard(&dtd->pool);
-          declEntity = NULL;
-        }
-      }
-      break;
-    case XML_ROLE_PARAM_ENTITY_NAME:
-#ifdef XML_DTD
-      if (dtd->keepProcessing) {
-        const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next);
-        if (!name)
-          return XML_ERROR_NO_MEMORY;
-        declEntity = (ENTITY *)lookup(&dtd->paramEntities,
-                                           name, sizeof(ENTITY));
-        if (!declEntity)
-          return XML_ERROR_NO_MEMORY;
-        if (declEntity->name != name) {
-          poolDiscard(&dtd->pool);
-          declEntity = NULL;
-        }
-        else {
-          poolFinish(&dtd->pool);
-          declEntity->publicId = NULL;
-          declEntity->is_param = XML_TRUE;
-          /* if we have a parent parser or are reading an internal parameter
-             entity, then the entity declaration is not considered "internal"
-          */
-          declEntity->is_internal = !(parentParser || openInternalEntities);
-          if (entityDeclHandler)
-            handleDefault = XML_FALSE;
-        }
-      }
-      else {
-        poolDiscard(&dtd->pool);
-        declEntity = NULL;
-      }
-#else /* not XML_DTD */
-      declEntity = NULL;
-#endif /* XML_DTD */
-      break;
-    case XML_ROLE_NOTATION_NAME:
-      declNotationPublicId = NULL;
-      declNotationName = NULL;
-      if (notationDeclHandler) {
-        declNotationName = poolStoreString(&tempPool, enc, s, next);
-        if (!declNotationName)
-          return XML_ERROR_NO_MEMORY;
-        poolFinish(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_NOTATION_PUBLIC_ID:
-      if (!XmlIsPublicId(enc, s, next, eventPP))
-        return XML_ERROR_PUBLICID;
-      if (declNotationName) {  /* means notationDeclHandler != NULL */
-        XML_Char *tem = poolStoreString(&tempPool,
-                                        enc,
-                                        s + enc->minBytesPerChar,
-                                        next - enc->minBytesPerChar);
-        if (!tem)
-          return XML_ERROR_NO_MEMORY;
-        normalizePublicId(tem);
-        declNotationPublicId = tem;
-        poolFinish(&tempPool);
-        handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_NOTATION_SYSTEM_ID:
-      if (declNotationName && notationDeclHandler) {
-        const XML_Char *systemId
-          = poolStoreString(&tempPool, enc,
-                            s + enc->minBytesPerChar,
-                            next - enc->minBytesPerChar);
-        if (!systemId)
-          return XML_ERROR_NO_MEMORY;
-        *eventEndPP = s;
-        notationDeclHandler(handlerArg,
-                            declNotationName,
-                            curBase,
-                            systemId,
-                            declNotationPublicId);
-        handleDefault = XML_FALSE;
-      }
-      poolClear(&tempPool);
-      break;
-    case XML_ROLE_NOTATION_NO_SYSTEM_ID:
-      if (declNotationPublicId && notationDeclHandler) {
-        *eventEndPP = s;
-        notationDeclHandler(handlerArg,
-                            declNotationName,
-                            curBase,
-                            0,
-                            declNotationPublicId);
-        handleDefault = XML_FALSE;
-      }
-      poolClear(&tempPool);
-      break;
-    case XML_ROLE_ERROR:
-      switch (tok) {
-      case XML_TOK_PARAM_ENTITY_REF:
-        /* PE references in internal subset are
-           not allowed within declarations. */  
-        return XML_ERROR_PARAM_ENTITY_REF;
-      case XML_TOK_XML_DECL:
-        return XML_ERROR_MISPLACED_XML_PI;
-      default:
-        return XML_ERROR_SYNTAX;
-      }
-#ifdef XML_DTD
-    case XML_ROLE_IGNORE_SECT:
-      {
-        enum XML_Error result;
-        if (defaultHandler)
-          reportDefault(parser, enc, s, next);
-        handleDefault = XML_FALSE;
-        result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore);
-        if (result != XML_ERROR_NONE)
-          return result;
-        else if (!next) {
-          processor = ignoreSectionProcessor;
-          return result;
-        }
-      }
-      break;
-#endif /* XML_DTD */
-    case XML_ROLE_GROUP_OPEN:
-      if (prologState.level >= groupSize) {
-        if (groupSize) {
-          char *temp = (char *)REALLOC(groupConnector, groupSize *= 2);
-          if (temp == NULL)
-            return XML_ERROR_NO_MEMORY;
-          groupConnector = temp;
-          if (dtd->scaffIndex) {
-            int *temp = (int *)REALLOC(dtd->scaffIndex,
-                          groupSize * sizeof(int));
-            if (temp == NULL)
-              return XML_ERROR_NO_MEMORY;
-            dtd->scaffIndex = temp;
-          }
-        }
-        else {
-          groupConnector = (char *)MALLOC(groupSize = 32);
-          if (!groupConnector)
-            return XML_ERROR_NO_MEMORY;
-        }
-      }
-      groupConnector[prologState.level] = 0;
-      if (dtd->in_eldecl) {
-        int myindex = nextScaffoldPart(parser);
-        if (myindex < 0)
-          return XML_ERROR_NO_MEMORY;
-        dtd->scaffIndex[dtd->scaffLevel] = myindex;
-        dtd->scaffLevel++;
-        dtd->scaffold[myindex].type = XML_CTYPE_SEQ;
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-    case XML_ROLE_GROUP_SEQUENCE:
-      if (groupConnector[prologState.level] == '|')
-        return XML_ERROR_SYNTAX;
-      groupConnector[prologState.level] = ',';
-      if (dtd->in_eldecl && elementDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_GROUP_CHOICE:
-      if (groupConnector[prologState.level] == ',')
-        return XML_ERROR_SYNTAX;
-      if (dtd->in_eldecl
-          && !groupConnector[prologState.level]
-          && (dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
-              != XML_CTYPE_MIXED)
-          ) {
-        dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
-            = XML_CTYPE_CHOICE;
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      groupConnector[prologState.level] = '|';
-      break;
-    case XML_ROLE_PARAM_ENTITY_REF:
-#ifdef XML_DTD
-    case XML_ROLE_INNER_PARAM_ENTITY_REF:
-      dtd->hasParamEntityRefs = XML_TRUE;
-      if (!paramEntityParsing)
-        dtd->keepProcessing = dtd->standalone;
-      else {
-        const XML_Char *name;
-        ENTITY *entity;
-        name = poolStoreString(&dtd->pool, enc,
-                                s + enc->minBytesPerChar,
-                                next - enc->minBytesPerChar);
-        if (!name)
-          return XML_ERROR_NO_MEMORY;
-        entity = (ENTITY *)lookup(&dtd->paramEntities, name, 0);
-        poolDiscard(&dtd->pool);
-        /* first, determine if a check for an existing declaration is needed;
-           if yes, check that the entity exists, and that it is internal,
-           otherwise call the skipped entity handler
-        */
-        if (prologState.documentEntity &&
-            (dtd->standalone
-             ? !openInternalEntities
-             : !dtd->hasParamEntityRefs)) {
-          if (!entity)
-            return XML_ERROR_UNDEFINED_ENTITY;
-          else if (!entity->is_internal)
-            return XML_ERROR_ENTITY_DECLARED_IN_PE;
-        }
-        else if (!entity) {
-          dtd->keepProcessing = dtd->standalone;
-          /* cannot report skipped entities in declarations */
-          if ((role == XML_ROLE_PARAM_ENTITY_REF) && skippedEntityHandler) {
-            skippedEntityHandler(handlerArg, name, 1);
-            handleDefault = XML_FALSE;
-          }
-          break;
-        }
-        if (entity->open)
-          return XML_ERROR_RECURSIVE_ENTITY_REF;
-        if (entity->textPtr) {
-          enum XML_Error result;
-          XML_Bool betweenDecl = 
-            (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE);
-          result = processInternalEntity(parser, entity, betweenDecl);
-          if (result != XML_ERROR_NONE)
-            return result;
-          handleDefault = XML_FALSE;
-          break;
-        }
-        if (externalEntityRefHandler) {
-          dtd->paramEntityRead = XML_FALSE;
-          entity->open = XML_TRUE;
-          if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                        0,
-                                        entity->base,
-                                        entity->systemId,
-                                        entity->publicId)) {
-            entity->open = XML_FALSE;
-            return XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-          }
-          entity->open = XML_FALSE;
-          handleDefault = XML_FALSE;
-          if (!dtd->paramEntityRead) {
-            dtd->keepProcessing = dtd->standalone;
-            break;
-          }
-        }
-        else {
-          dtd->keepProcessing = dtd->standalone;
-          break;
-        }
-      }
-#endif /* XML_DTD */
-      if (!dtd->standalone &&
-          notStandaloneHandler &&
-          !notStandaloneHandler(handlerArg))
-        return XML_ERROR_NOT_STANDALONE;
-      break;
-
-    /* Element declaration stuff */
-
-    case XML_ROLE_ELEMENT_NAME:
-      if (elementDeclHandler) {
-        declElementType = getElementType(parser, enc, s, next);
-        if (!declElementType)
-          return XML_ERROR_NO_MEMORY;
-        dtd->scaffLevel = 0;
-        dtd->scaffCount = 0;
-        dtd->in_eldecl = XML_TRUE;
-        handleDefault = XML_FALSE;
-      }
-      break;
-
-    case XML_ROLE_CONTENT_ANY:
-    case XML_ROLE_CONTENT_EMPTY:
-      if (dtd->in_eldecl) {
-        if (elementDeclHandler) {
-          XML_Content * content = (XML_Content *) MALLOC(sizeof(XML_Content));
-          if (!content)
-            return XML_ERROR_NO_MEMORY;
-          content->quant = XML_CQUANT_NONE;
-          content->name = NULL;
-          content->numchildren = 0;
-          content->children = NULL;
-          content->type = ((role == XML_ROLE_CONTENT_ANY) ?
-                           XML_CTYPE_ANY :
-                           XML_CTYPE_EMPTY);
-          *eventEndPP = s;
-          elementDeclHandler(handlerArg, declElementType->name, content);
-          handleDefault = XML_FALSE;
-        }
-        dtd->in_eldecl = XML_FALSE;
-      }
-      break;
-
-    case XML_ROLE_CONTENT_PCDATA:
-      if (dtd->in_eldecl) {
-        dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type
-            = XML_CTYPE_MIXED;
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-
-    case XML_ROLE_CONTENT_ELEMENT:
-      quant = XML_CQUANT_NONE;
-      goto elementContent;
-    case XML_ROLE_CONTENT_ELEMENT_OPT:
-      quant = XML_CQUANT_OPT;
-      goto elementContent;
-    case XML_ROLE_CONTENT_ELEMENT_REP:
-      quant = XML_CQUANT_REP;
-      goto elementContent;
-    case XML_ROLE_CONTENT_ELEMENT_PLUS:
-      quant = XML_CQUANT_PLUS;
-    elementContent:
-      if (dtd->in_eldecl) {
-        ELEMENT_TYPE *el;
-        const XML_Char *name;
-        int nameLen;
-        const char *nxt = (quant == XML_CQUANT_NONE
-                           ? next
-                           : next - enc->minBytesPerChar);
-        int myindex = nextScaffoldPart(parser);
-        if (myindex < 0)
-          return XML_ERROR_NO_MEMORY;
-        dtd->scaffold[myindex].type = XML_CTYPE_NAME;
-        dtd->scaffold[myindex].quant = quant;
-        el = getElementType(parser, enc, s, nxt);
-        if (!el)
-          return XML_ERROR_NO_MEMORY;
-        name = el->name;
-        dtd->scaffold[myindex].name = name;
-        nameLen = 0;
-        for (; name[nameLen++]; );
-        dtd->contentStringLen +=  nameLen;
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-      }
-      break;
-
-    case XML_ROLE_GROUP_CLOSE:
-      quant = XML_CQUANT_NONE;
-      goto closeGroup;
-    case XML_ROLE_GROUP_CLOSE_OPT:
-      quant = XML_CQUANT_OPT;
-      goto closeGroup;
-    case XML_ROLE_GROUP_CLOSE_REP:
-      quant = XML_CQUANT_REP;
-      goto closeGroup;
-    case XML_ROLE_GROUP_CLOSE_PLUS:
-      quant = XML_CQUANT_PLUS;
-    closeGroup:
-      if (dtd->in_eldecl) {
-        if (elementDeclHandler)
-          handleDefault = XML_FALSE;
-        dtd->scaffLevel--;
-        dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel]].quant = quant;
-        if (dtd->scaffLevel == 0) {
-          if (!handleDefault) {
-            XML_Content *model = build_model(parser);
-            if (!model)
-              return XML_ERROR_NO_MEMORY;
-            *eventEndPP = s;
-            elementDeclHandler(handlerArg, declElementType->name, model);
-          }
-          dtd->in_eldecl = XML_FALSE;
-          dtd->contentStringLen = 0;
-        }
-      }
-      break;
-      /* End element declaration stuff */
-
-    case XML_ROLE_PI:
-      if (!reportProcessingInstruction(parser, enc, s, next))
-        return XML_ERROR_NO_MEMORY;
-      handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_COMMENT:
-      if (!reportComment(parser, enc, s, next))
-        return XML_ERROR_NO_MEMORY;
-      handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_NONE:
-      switch (tok) {
-      case XML_TOK_BOM:
-        handleDefault = XML_FALSE;
-        break;
-      }
-      break;
-    case XML_ROLE_DOCTYPE_NONE:
-      if (startDoctypeDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_ENTITY_NONE:
-      if (dtd->keepProcessing && entityDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_NOTATION_NONE:
-      if (notationDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_ATTLIST_NONE:
-      if (dtd->keepProcessing && attlistDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    case XML_ROLE_ELEMENT_NONE:
-      if (elementDeclHandler)
-        handleDefault = XML_FALSE;
-      break;
-    } /* end of big switch */
-
-    if (handleDefault && defaultHandler)
-      reportDefault(parser, enc, s, next);
-
-    switch (ps_parsing) {
-    case XML_SUSPENDED: 
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_FINISHED:
-      return XML_ERROR_ABORTED;
-    default:
-      s = next;
-      tok = XmlPrologTok(enc, s, end, &next);
-    }
-  }
-  /* not reached */
-}
-
-static enum XML_Error PTRCALL
-epilogProcessor(XML_Parser parser,
-                const char *s,
-                const char *end,
-                const char **nextPtr)
-{
-  processor = epilogProcessor;
-  eventPtr = s;
-  for (;;) {
-    const char *next = NULL;
-    int tok = XmlPrologTok(encoding, s, end, &next);
-    eventEndPtr = next;
-    switch (tok) {
-    /* report partial linebreak - it might be the last token */
-    case -XML_TOK_PROLOG_S:
-      if (defaultHandler) {
-        reportDefault(parser, encoding, s, next);
-        if (ps_parsing == XML_FINISHED)
-          return XML_ERROR_ABORTED;
-      }
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_TOK_NONE:
-      *nextPtr = s;
-      return XML_ERROR_NONE;
-    case XML_TOK_PROLOG_S:
-      if (defaultHandler)
-        reportDefault(parser, encoding, s, next);
-      break;
-    case XML_TOK_PI:
-      if (!reportProcessingInstruction(parser, encoding, s, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_COMMENT:
-      if (!reportComment(parser, encoding, s, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_INVALID:
-      eventPtr = next;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL:
-      if (!ps_finalBuffer) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_UNCLOSED_TOKEN;
-    case XML_TOK_PARTIAL_CHAR:
-      if (!ps_finalBuffer) {
-        *nextPtr = s;
-        return XML_ERROR_NONE;
-      }
-      return XML_ERROR_PARTIAL_CHAR;
-    default:
-      return XML_ERROR_JUNK_AFTER_DOC_ELEMENT;
-    }
-    eventPtr = s = next;
-    switch (ps_parsing) {
-    case XML_SUSPENDED: 
-      *nextPtr = next;
-      return XML_ERROR_NONE;
-    case XML_FINISHED:
-      return XML_ERROR_ABORTED;
-    default: ;
-    }
-  }
-}
-
-static enum XML_Error
-processInternalEntity(XML_Parser parser, ENTITY *entity,
-                      XML_Bool betweenDecl)
-{
-  const char *textStart, *textEnd;
-  const char *next;
-  enum XML_Error result;
-  OPEN_INTERNAL_ENTITY *openEntity;
-
-  if (freeInternalEntities) {
-    openEntity = freeInternalEntities;
-    freeInternalEntities = openEntity->next;
-  }
-  else {
-    openEntity = (OPEN_INTERNAL_ENTITY *)MALLOC(sizeof(OPEN_INTERNAL_ENTITY));
-    if (!openEntity)
-      return XML_ERROR_NO_MEMORY;
-  }
-  entity->open = XML_TRUE;
-  entity->processed = 0;
-  openEntity->next = openInternalEntities;
-  openInternalEntities = openEntity;
-  openEntity->entity = entity;
-  openEntity->startTagLevel = tagLevel;
-  openEntity->betweenDecl = betweenDecl;
-  openEntity->internalEventPtr = NULL;
-  openEntity->internalEventEndPtr = NULL;
-  textStart = (char *)entity->textPtr;
-  textEnd = (char *)(entity->textPtr + entity->textLen);
-
-#ifdef XML_DTD
-  if (entity->is_param) {
-    int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next);
-    result = doProlog(parser, internalEncoding, textStart, textEnd, tok, 
-                      next, &next, XML_FALSE);
-  }
-  else 
-#endif /* XML_DTD */
-    result = doContent(parser, tagLevel, internalEncoding, textStart, 
-                       textEnd, &next, XML_FALSE);
-
-  if (result == XML_ERROR_NONE) {
-    if (textEnd != next && ps_parsing == XML_SUSPENDED) {
-      entity->processed = (int)(next - textStart);
-      processor = internalEntityProcessor;
-    }
-    else {
-      entity->open = XML_FALSE;
-      openInternalEntities = openEntity->next;
-      /* put openEntity back in list of free instances */
-      openEntity->next = freeInternalEntities;
-      freeInternalEntities = openEntity;
-    }
-  }
-  return result;
-}
-
-static enum XML_Error PTRCALL
-internalEntityProcessor(XML_Parser parser,
-                        const char *s,
-                        const char *end,
-                        const char **nextPtr)
-{
-  ENTITY *entity;
-  const char *textStart, *textEnd;
-  const char *next;
-  enum XML_Error result;
-  OPEN_INTERNAL_ENTITY *openEntity = openInternalEntities;
-  if (!openEntity)
-    return XML_ERROR_UNEXPECTED_STATE;
-
-  entity = openEntity->entity;
-  textStart = ((char *)entity->textPtr) + entity->processed;
-  textEnd = (char *)(entity->textPtr + entity->textLen);
-
-#ifdef XML_DTD
-  if (entity->is_param) {
-    int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next);
-    result = doProlog(parser, internalEncoding, textStart, textEnd, tok, 
-                      next, &next, XML_FALSE);
-  }
-  else
-#endif /* XML_DTD */
-    result = doContent(parser, openEntity->startTagLevel, internalEncoding, 
-                       textStart, textEnd, &next, XML_FALSE);  
-
-  if (result != XML_ERROR_NONE)
-    return result;
-  else if (textEnd != next && ps_parsing == XML_SUSPENDED) {
-    entity->processed = (int)(next - (char *)entity->textPtr);
-    return result;
-  }
-  else {
-    entity->open = XML_FALSE;
-    openInternalEntities = openEntity->next;
-    /* put openEntity back in list of free instances */
-    openEntity->next = freeInternalEntities;
-    freeInternalEntities = openEntity;
-  }
-
-#ifdef XML_DTD
-  if (entity->is_param) {
-    int tok;
-    processor = prologProcessor;
-    tok = XmlPrologTok(encoding, s, end, &next);
-    return doProlog(parser, encoding, s, end, tok, next, nextPtr, 
-                    (XML_Bool)!ps_finalBuffer);
-  }
-  else
-#endif /* XML_DTD */
-  {
-    processor = contentProcessor;
-    /* see externalEntityContentProcessor vs contentProcessor */
-    return doContent(parser, parentParser ? 1 : 0, encoding, s, end,
-                     nextPtr, (XML_Bool)!ps_finalBuffer); 
-  }  
-}
-
-static enum XML_Error PTRCALL
-errorProcessor(XML_Parser parser,
-               const char *s,
-               const char *end,
-               const char **nextPtr)
-{
-  return errorCode;
-}
-
-static enum XML_Error
-storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
-                    const char *ptr, const char *end,
-                    STRING_POOL *pool)
-{
-  enum XML_Error result = appendAttributeValue(parser, enc, isCdata, ptr,
-                                               end, pool);
-  if (result)
-    return result;
-  if (!isCdata && poolLength(pool) && poolLastChar(pool) == 0x20)
-    poolChop(pool);
-  if (!poolAppendChar(pool, XML_T('\0')))
-    return XML_ERROR_NO_MEMORY;
-  return XML_ERROR_NONE;
-}
-
-static enum XML_Error
-appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata,
-                     const char *ptr, const char *end,
-                     STRING_POOL *pool)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  for (;;) {
-    const char *next;
-    int tok = XmlAttributeValueTok(enc, ptr, end, &next);
-    switch (tok) {
-    case XML_TOK_NONE:
-      return XML_ERROR_NONE;
-    case XML_TOK_INVALID:
-      if (enc == encoding)
-        eventPtr = next;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_PARTIAL:
-      if (enc == encoding)
-        eventPtr = ptr;
-      return XML_ERROR_INVALID_TOKEN;
-    case XML_TOK_CHAR_REF:
-      {
-        XML_Char buf[XML_ENCODE_MAX];
-        int i;
-        int n = XmlCharRefNumber(enc, ptr);
-        if (n < 0) {
-          if (enc == encoding)
-            eventPtr = ptr;
-          return XML_ERROR_BAD_CHAR_REF;
-        }
-        if (!isCdata
-            && n == 0x20 /* space */
-            && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20))
-          break;
-        n = XmlEncode(n, (ICHAR *)buf);
-        if (!n) {
-          if (enc == encoding)
-            eventPtr = ptr;
-          return XML_ERROR_BAD_CHAR_REF;
-        }
-        for (i = 0; i < n; i++) {
-          if (!poolAppendChar(pool, buf[i]))
-            return XML_ERROR_NO_MEMORY;
-        }
-      }
-      break;
-    case XML_TOK_DATA_CHARS:
-      if (!poolAppend(pool, enc, ptr, next))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_TRAILING_CR:
-      next = ptr + enc->minBytesPerChar;
-      /* fall through */
-    case XML_TOK_ATTRIBUTE_VALUE_S:
-    case XML_TOK_DATA_NEWLINE:
-      if (!isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20))
-        break;
-      if (!poolAppendChar(pool, 0x20))
-        return XML_ERROR_NO_MEMORY;
-      break;
-    case XML_TOK_ENTITY_REF:
-      {
-        const XML_Char *name;
-        ENTITY *entity;
-        char checkEntityDecl;
-        XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc,
-                                              ptr + enc->minBytesPerChar,
-                                              next - enc->minBytesPerChar);
-        if (ch) {
-          if (!poolAppendChar(pool, ch))
-                return XML_ERROR_NO_MEMORY;
-          break;
-        }
-        name = poolStoreString(&temp2Pool, enc,
-                               ptr + enc->minBytesPerChar,
-                               next - enc->minBytesPerChar);
-        if (!name)
-          return XML_ERROR_NO_MEMORY;
-        entity = (ENTITY *)lookup(&dtd->generalEntities, name, 0);
-        poolDiscard(&temp2Pool);
-        /* First, determine if a check for an existing declaration is needed;
-           if yes, check that the entity exists, and that it is internal.
-        */
-        if (pool == &dtd->pool)  /* are we called from prolog? */
-          checkEntityDecl =
-#ifdef XML_DTD
-              prologState.documentEntity &&
-#endif /* XML_DTD */
-              (dtd->standalone
-               ? !openInternalEntities
-               : !dtd->hasParamEntityRefs);
-        else /* if (pool == &tempPool): we are called from content */
-          checkEntityDecl = !dtd->hasParamEntityRefs || dtd->standalone;
-        if (checkEntityDecl) {
-          if (!entity)
-            return XML_ERROR_UNDEFINED_ENTITY;
-          else if (!entity->is_internal)
-            return XML_ERROR_ENTITY_DECLARED_IN_PE;
-        }
-        else if (!entity) {
-          /* Cannot report skipped entity here - see comments on
-             skippedEntityHandler.
-          if (skippedEntityHandler)
-            skippedEntityHandler(handlerArg, name, 0);
-          */
-          /* Cannot call the default handler because this would be
-             out of sync with the call to the startElementHandler.
-          if ((pool == &tempPool) && defaultHandler)
-            reportDefault(parser, enc, ptr, next);
-          */
-          break;
-        }
-        if (entity->open) {
-          if (enc == encoding)
-            eventPtr = ptr;
-          return XML_ERROR_RECURSIVE_ENTITY_REF;
-        }
-        if (entity->notation) {
-          if (enc == encoding)
-            eventPtr = ptr;
-          return XML_ERROR_BINARY_ENTITY_REF;
-        }
-        if (!entity->textPtr) {
-          if (enc == encoding)
-            eventPtr = ptr;
-              return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF;
-        }
-        else {
-          enum XML_Error result;
-          const XML_Char *textEnd = entity->textPtr + entity->textLen;
-          entity->open = XML_TRUE;
-          result = appendAttributeValue(parser, internalEncoding, isCdata,
-                                        (char *)entity->textPtr,
-                                        (char *)textEnd, pool);
-          entity->open = XML_FALSE;
-          if (result)
-            return result;
-        }
-      }
-      break;
-    default:
-      if (enc == encoding)
-        eventPtr = ptr;
-      return XML_ERROR_UNEXPECTED_STATE;
-    }
-    ptr = next;
-  }
-  /* not reached */
-}
-
-static enum XML_Error
-storeEntityValue(XML_Parser parser,
-                 const ENCODING *enc,
-                 const char *entityTextPtr,
-                 const char *entityTextEnd)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  STRING_POOL *pool = &(dtd->entityValuePool);
-  enum XML_Error result = XML_ERROR_NONE;
-#ifdef XML_DTD
-  int oldInEntityValue = prologState.inEntityValue;
-  prologState.inEntityValue = 1;
-#endif /* XML_DTD */
-  /* never return Null for the value argument in EntityDeclHandler,
-     since this would indicate an external entity; therefore we
-     have to make sure that entityValuePool.start is not null */
-  if (!pool->blocks) {
-    if (!poolGrow(pool))
-      return XML_ERROR_NO_MEMORY;
-  }
-
-  for (;;) {
-    const char *next;
-    int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next);
-    switch (tok) {
-    case XML_TOK_PARAM_ENTITY_REF:
-#ifdef XML_DTD
-      if (isParamEntity || enc != encoding) {
-        const XML_Char *name;
-        ENTITY *entity;
-        name = poolStoreString(&tempPool, enc,
-                               entityTextPtr + enc->minBytesPerChar,
-                               next - enc->minBytesPerChar);
-        if (!name) {
-          result = XML_ERROR_NO_MEMORY;
-          goto endEntityValue;
-        }
-        entity = (ENTITY *)lookup(&dtd->paramEntities, name, 0);
-        poolDiscard(&tempPool);
-        if (!entity) {
-          /* not a well-formedness error - see XML 1.0: WFC Entity Declared */
-          /* cannot report skipped entity here - see comments on
-             skippedEntityHandler
-          if (skippedEntityHandler)
-            skippedEntityHandler(handlerArg, name, 0);
-          */
-          dtd->keepProcessing = dtd->standalone;
-          goto endEntityValue;
-        }
-        if (entity->open) {
-          if (enc == encoding)
-            eventPtr = entityTextPtr;
-          result = XML_ERROR_RECURSIVE_ENTITY_REF;
-          goto endEntityValue;
-        }
-        if (entity->systemId) {
-          if (externalEntityRefHandler) {
-            dtd->paramEntityRead = XML_FALSE;
-            entity->open = XML_TRUE;
-            if (!externalEntityRefHandler(externalEntityRefHandlerArg,
-                                          0,
-                                          entity->base,
-                                          entity->systemId,
-                                          entity->publicId)) {
-              entity->open = XML_FALSE;
-              result = XML_ERROR_EXTERNAL_ENTITY_HANDLING;
-              goto endEntityValue;
-            }
-            entity->open = XML_FALSE;
-            if (!dtd->paramEntityRead)
-              dtd->keepProcessing = dtd->standalone;
-          }
-          else
-            dtd->keepProcessing = dtd->standalone;
-        }
-        else {
-          entity->open = XML_TRUE;
-          result = storeEntityValue(parser,
-                                    internalEncoding,
-                                    (char *)entity->textPtr,
-                                    (char *)(entity->textPtr
-                                             + entity->textLen));
-          entity->open = XML_FALSE;
-          if (result)
-            goto endEntityValue;
-        }
-        break;
-      }
-#endif /* XML_DTD */
-      /* In the internal subset, PE references are not legal
-         within markup declarations, e.g entity values in this case. */
-      eventPtr = entityTextPtr;
-      result = XML_ERROR_PARAM_ENTITY_REF;
-      goto endEntityValue;
-    case XML_TOK_NONE:
-      result = XML_ERROR_NONE;
-      goto endEntityValue;
-    case XML_TOK_ENTITY_REF:
-    case XML_TOK_DATA_CHARS:
-      if (!poolAppend(pool, enc, entityTextPtr, next)) {
-        result = XML_ERROR_NO_MEMORY;
-        goto endEntityValue;
-      }
-      break;
-    case XML_TOK_TRAILING_CR:
-      next = entityTextPtr + enc->minBytesPerChar;
-      /* fall through */
-    case XML_TOK_DATA_NEWLINE:
-      if (pool->end == pool->ptr && !poolGrow(pool)) {
-              result = XML_ERROR_NO_MEMORY;
-        goto endEntityValue;
-      }
-      *(pool->ptr)++ = 0xA;
-      break;
-    case XML_TOK_CHAR_REF:
-      {
-        XML_Char buf[XML_ENCODE_MAX];
-        int i;
-        int n = XmlCharRefNumber(enc, entityTextPtr);
-        if (n < 0) {
-          if (enc == encoding)
-            eventPtr = entityTextPtr;
-          result = XML_ERROR_BAD_CHAR_REF;
-          goto endEntityValue;
-        }
-        n = XmlEncode(n, (ICHAR *)buf);
-        if (!n) {
-          if (enc == encoding)
-            eventPtr = entityTextPtr;
-          result = XML_ERROR_BAD_CHAR_REF;
-          goto endEntityValue;
-        }
-        for (i = 0; i < n; i++) {
-          if (pool->end == pool->ptr && !poolGrow(pool)) {
-            result = XML_ERROR_NO_MEMORY;
-            goto endEntityValue;
-          }
-          *(pool->ptr)++ = buf[i];
-        }
-      }
-      break;
-    case XML_TOK_PARTIAL:
-      if (enc == encoding)
-        eventPtr = entityTextPtr;
-      result = XML_ERROR_INVALID_TOKEN;
-      goto endEntityValue;
-    case XML_TOK_INVALID:
-      if (enc == encoding)
-        eventPtr = next;
-      result = XML_ERROR_INVALID_TOKEN;
-      goto endEntityValue;
-    default:
-      if (enc == encoding)
-        eventPtr = entityTextPtr;
-      result = XML_ERROR_UNEXPECTED_STATE;
-      goto endEntityValue;
-    }
-    entityTextPtr = next;
-  }
-endEntityValue:
-#ifdef XML_DTD
-  prologState.inEntityValue = oldInEntityValue;
-#endif /* XML_DTD */
-  return result;
-}
-
-static void FASTCALL
-normalizeLines(XML_Char *s)
-{
-  XML_Char *p;
-  for (;; s++) {
-    if (*s == XML_T('\0'))
-      return;
-    if (*s == 0xD)
-      break;
-  }
-  p = s;
-  do {
-    if (*s == 0xD) {
-      *p++ = 0xA;
-      if (*++s == 0xA)
-        s++;
-    }
-    else
-      *p++ = *s++;
-  } while (*s);
-  *p = XML_T('\0');
-}
-
-static int
-reportProcessingInstruction(XML_Parser parser, const ENCODING *enc,
-                            const char *start, const char *end)
-{
-  const XML_Char *target;
-  XML_Char *data;
-  const char *tem;
-  if (!processingInstructionHandler) {
-    if (defaultHandler)
-      reportDefault(parser, enc, start, end);
-    return 1;
-  }
-  start += enc->minBytesPerChar * 2;
-  tem = start + XmlNameLength(enc, start);
-  target = poolStoreString(&tempPool, enc, start, tem);
-  if (!target)
-    return 0;
-  poolFinish(&tempPool);
-  data = poolStoreString(&tempPool, enc,
-                        XmlSkipS(enc, tem),
-                        end - enc->minBytesPerChar*2);
-  if (!data)
-    return 0;
-  normalizeLines(data);
-  processingInstructionHandler(handlerArg, target, data);
-  poolClear(&tempPool);
-  return 1;
-}
-
-static int
-reportComment(XML_Parser parser, const ENCODING *enc,
-              const char *start, const char *end)
-{
-  XML_Char *data;
-  if (!commentHandler) {
-    if (defaultHandler)
-      reportDefault(parser, enc, start, end);
-    return 1;
-  }
-  data = poolStoreString(&tempPool,
-                         enc,
-                         start + enc->minBytesPerChar * 4,
-                         end - enc->minBytesPerChar * 3);
-  if (!data)
-    return 0;
-  normalizeLines(data);
-  commentHandler(handlerArg, data);
-  poolClear(&tempPool);
-  return 1;
-}
-
-static void
-reportDefault(XML_Parser parser, const ENCODING *enc,
-              const char *s, const char *end)
-{
-  if (MUST_CONVERT(enc, s)) {
-    const char **eventPP;
-    const char **eventEndPP;
-    if (enc == encoding) {
-      eventPP = &eventPtr;
-      eventEndPP = &eventEndPtr;
-    }
-    else {
-      eventPP = &(openInternalEntities->internalEventPtr);
-      eventEndPP = &(openInternalEntities->internalEventEndPtr);
-    }
-    do {
-      ICHAR *dataPtr = (ICHAR *)dataBuf;
-      XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd);
-      *eventEndPP = s;
-      defaultHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf));
-      *eventPP = s;
-    } while (s != end);
-  }
-  else
-    defaultHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)end - (XML_Char *)s));
-}
-
-
-static int
-defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata,
-                XML_Bool isId, const XML_Char *value, XML_Parser parser)
-{
-  DEFAULT_ATTRIBUTE *att;
-  if (value || isId) {
-    /* The handling of default attributes gets messed up if we have
-       a default which duplicates a non-default. */
-    int i;
-    for (i = 0; i < type->nDefaultAtts; i++)
-      if (attId == type->defaultAtts[i].id)
-        return 1;
-    if (isId && !type->idAtt && !attId->xmlns)
-      type->idAtt = attId;
-  }
-  if (type->nDefaultAtts == type->allocDefaultAtts) {
-    if (type->allocDefaultAtts == 0) {
-      type->allocDefaultAtts = 8;
-      type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(type->allocDefaultAtts
-                            * sizeof(DEFAULT_ATTRIBUTE));
-      if (!type->defaultAtts)
-        return 0;
-    }
-    else {
-      DEFAULT_ATTRIBUTE *temp;
-      int count = type->allocDefaultAtts * 2;
-      temp = (DEFAULT_ATTRIBUTE *)
-        REALLOC(type->defaultAtts, (count * sizeof(DEFAULT_ATTRIBUTE)));
-      if (temp == NULL)
-        return 0;
-      type->allocDefaultAtts = count;
-      type->defaultAtts = temp;
-    }
-  }
-  att = type->defaultAtts + type->nDefaultAtts;
-  att->id = attId;
-  att->value = value;
-  att->isCdata = isCdata;
-  if (!isCdata)
-    attId->maybeTokenized = XML_TRUE;
-  type->nDefaultAtts += 1;
-  return 1;
-}
-
-static int
-setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  const XML_Char *name;
-  for (name = elementType->name; *name; name++) {
-    if (*name == XML_T(':')) {
-      PREFIX *prefix;
-      const XML_Char *s;
-      for (s = elementType->name; s != name; s++) {
-        if (!poolAppendChar(&dtd->pool, *s))
-          return 0;
-      }
-      if (!poolAppendChar(&dtd->pool, XML_T('\0')))
-        return 0;
-      prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&dtd->pool),
-                                sizeof(PREFIX));
-      if (!prefix)
-        return 0;
-      if (prefix->name == poolStart(&dtd->pool))
-        poolFinish(&dtd->pool);
-      else
-        poolDiscard(&dtd->pool);
-      elementType->prefix = prefix;
-
-    }
-  }
-  return 1;
-}
-
-static ATTRIBUTE_ID *
-getAttributeId(XML_Parser parser, const ENCODING *enc,
-               const char *start, const char *end)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  ATTRIBUTE_ID *id;
-  const XML_Char *name;
-  if (!poolAppendChar(&dtd->pool, XML_T('\0')))
-    return NULL;
-  name = poolStoreString(&dtd->pool, enc, start, end);
-  if (!name)
-    return NULL;
-  /* skip quotation mark - its storage will be re-used (like in name[-1]) */
-  ++name;
-  id = (ATTRIBUTE_ID *)lookup(&dtd->attributeIds, name, sizeof(ATTRIBUTE_ID));
-  if (!id)
-    return NULL;
-  if (id->name != name)
-    poolDiscard(&dtd->pool);
-  else {
-    poolFinish(&dtd->pool);
-    if (!ns)
-      ;
-    else if (name[0] == XML_T('x')
-        && name[1] == XML_T('m')
-        && name[2] == XML_T('l')
-        && name[3] == XML_T('n')
-        && name[4] == XML_T('s')
-        && (name[5] == XML_T('\0') || name[5] == XML_T(':'))) {
-      if (name[5] == XML_T('\0'))
-        id->prefix = &dtd->defaultPrefix;
-      else
-        id->prefix = (PREFIX *)lookup(&dtd->prefixes, name + 6, sizeof(PREFIX));
-      id->xmlns = XML_TRUE;
-    }
-    else {
-      int i;
-      for (i = 0; name[i]; i++) {
-        /* attributes without prefix are *not* in the default namespace */
-        if (name[i] == XML_T(':')) {
-          int j;
-          for (j = 0; j < i; j++) {
-            if (!poolAppendChar(&dtd->pool, name[j]))
-              return NULL;
-          }
-          if (!poolAppendChar(&dtd->pool, XML_T('\0')))
-            return NULL;
-          id->prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&dtd->pool),
-                                        sizeof(PREFIX));
-          if (!id->prefix)
-            return NULL;
-          if (id->prefix->name == poolStart(&dtd->pool))
-            poolFinish(&dtd->pool);
-          else
-            poolDiscard(&dtd->pool);
-          break;
-        }
-      }
-    }
-  }
-  return id;
-}
-
-#define CONTEXT_SEP XML_T('\f')
-
-static const XML_Char *
-getContext(XML_Parser parser)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  HASH_TABLE_ITER iter;
-  XML_Bool needSep = XML_FALSE;
-
-  if (dtd->defaultPrefix.binding) {
-    int i;
-    int len;
-    if (!poolAppendChar(&tempPool, XML_T('=')))
-      return NULL;
-    len = dtd->defaultPrefix.binding->uriLen;
-    if (namespaceSeparator)
-      len--;
-    for (i = 0; i < len; i++)
-      if (!poolAppendChar(&tempPool, dtd->defaultPrefix.binding->uri[i]))
-        return NULL;
-    needSep = XML_TRUE;
-  }
-
-  hashTableIterInit(&iter, &(dtd->prefixes));
-  for (;;) {
-    int i;
-    int len;
-    const XML_Char *s;
-    PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter);
-    if (!prefix)
-      break;
-    if (!prefix->binding)
-      continue;
-    if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP))
-      return NULL;
-    for (s = prefix->name; *s; s++)
-      if (!poolAppendChar(&tempPool, *s))
-        return NULL;
-    if (!poolAppendChar(&tempPool, XML_T('=')))
-      return NULL;
-    len = prefix->binding->uriLen;
-    if (namespaceSeparator)
-      len--;
-    for (i = 0; i < len; i++)
-      if (!poolAppendChar(&tempPool, prefix->binding->uri[i]))
-        return NULL;
-    needSep = XML_TRUE;
-  }
-
-
-  hashTableIterInit(&iter, &(dtd->generalEntities));
-  for (;;) {
-    const XML_Char *s;
-    ENTITY *e = (ENTITY *)hashTableIterNext(&iter);
-    if (!e)
-      break;
-    if (!e->open)
-      continue;
-    if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP))
-      return NULL;
-    for (s = e->name; *s; s++)
-      if (!poolAppendChar(&tempPool, *s))
-        return 0;
-    needSep = XML_TRUE;
-  }
-
-  if (!poolAppendChar(&tempPool, XML_T('\0')))
-    return NULL;
-  return tempPool.start;
-}
-
-static XML_Bool
-setContext(XML_Parser parser, const XML_Char *context)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  const XML_Char *s = context;
-
-  while (*context != XML_T('\0')) {
-    if (*s == CONTEXT_SEP || *s == XML_T('\0')) {
-      ENTITY *e;
-      if (!poolAppendChar(&tempPool, XML_T('\0')))
-        return XML_FALSE;
-      e = (ENTITY *)lookup(&dtd->generalEntities, poolStart(&tempPool), 0);
-      if (e)
-        e->open = XML_TRUE;
-      if (*s != XML_T('\0'))
-        s++;
-      context = s;
-      poolDiscard(&tempPool);
-    }
-    else if (*s == XML_T('=')) {
-      PREFIX *prefix;
-      if (poolLength(&tempPool) == 0)
-        prefix = &dtd->defaultPrefix;
-      else {
-        if (!poolAppendChar(&tempPool, XML_T('\0')))
-          return XML_FALSE;
-        prefix = (PREFIX *)lookup(&dtd->prefixes, poolStart(&tempPool),
-                                  sizeof(PREFIX));
-        if (!prefix)
-          return XML_FALSE;
-        if (prefix->name == poolStart(&tempPool)) {
-          prefix->name = poolCopyString(&dtd->pool, prefix->name);
-          if (!prefix->name)
-            return XML_FALSE;
-        }
-        poolDiscard(&tempPool);
-      }
-      for (context = s + 1;
-           *context != CONTEXT_SEP && *context != XML_T('\0');
-           context++)
-        if (!poolAppendChar(&tempPool, *context))
-          return XML_FALSE;
-      if (!poolAppendChar(&tempPool, XML_T('\0')))
-        return XML_FALSE;
-      if (addBinding(parser, prefix, NULL, poolStart(&tempPool),
-                     &inheritedBindings) != XML_ERROR_NONE)
-        return XML_FALSE;
-      poolDiscard(&tempPool);
-      if (*context != XML_T('\0'))
-        ++context;
-      s = context;
-    }
-    else {
-      if (!poolAppendChar(&tempPool, *s))
-        return XML_FALSE;
-      s++;
-    }
-  }
-  return XML_TRUE;
-}
-
-static void FASTCALL
-normalizePublicId(XML_Char *publicId)
-{
-  XML_Char *p = publicId;
-  XML_Char *s;
-  for (s = publicId; *s; s++) {
-    switch (*s) {
-    case 0x20:
-    case 0xD:
-    case 0xA:
-      if (p != publicId && p[-1] != 0x20)
-        *p++ = 0x20;
-      break;
-    default:
-      *p++ = *s;
-    }
-  }
-  if (p != publicId && p[-1] == 0x20)
-    --p;
-  *p = XML_T('\0');
-}
-
-static DTD *
-dtdCreate(const XML_Memory_Handling_Suite *ms)
-{
-  DTD *p = (DTD *)ms->malloc_fcn(sizeof(DTD));
-  if (p == NULL)
-    return p;
-  poolInit(&(p->pool), ms);
-  poolInit(&(p->entityValuePool), ms);
-  hashTableInit(&(p->generalEntities), ms);
-  hashTableInit(&(p->elementTypes), ms);
-  hashTableInit(&(p->attributeIds), ms);
-  hashTableInit(&(p->prefixes), ms);
-#ifdef XML_DTD
-  p->paramEntityRead = XML_FALSE;
-  hashTableInit(&(p->paramEntities), ms);
-#endif /* XML_DTD */
-  p->defaultPrefix.name = NULL;
-  p->defaultPrefix.binding = NULL;
-
-  p->in_eldecl = XML_FALSE;
-  p->scaffIndex = NULL;
-  p->scaffold = NULL;
-  p->scaffLevel = 0;
-  p->scaffSize = 0;
-  p->scaffCount = 0;
-  p->contentStringLen = 0;
-
-  p->keepProcessing = XML_TRUE;
-  p->hasParamEntityRefs = XML_FALSE;
-  p->standalone = XML_FALSE;
-  return p;
-}
-
-static void
-dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms)
-{
-  HASH_TABLE_ITER iter;
-  hashTableIterInit(&iter, &(p->elementTypes));
-  for (;;) {
-    ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter);
-    if (!e)
-      break;
-    if (e->allocDefaultAtts != 0)
-      ms->free_fcn(e->defaultAtts);
-  }
-  hashTableClear(&(p->generalEntities));
-#ifdef XML_DTD
-  p->paramEntityRead = XML_FALSE;
-  hashTableClear(&(p->paramEntities));
-#endif /* XML_DTD */
-  hashTableClear(&(p->elementTypes));
-  hashTableClear(&(p->attributeIds));
-  hashTableClear(&(p->prefixes));
-  poolClear(&(p->pool));
-  poolClear(&(p->entityValuePool));
-  p->defaultPrefix.name = NULL;
-  p->defaultPrefix.binding = NULL;
-
-  p->in_eldecl = XML_FALSE;
-
-  ms->free_fcn(p->scaffIndex);
-  p->scaffIndex = NULL;
-  ms->free_fcn(p->scaffold);
-  p->scaffold = NULL;
-
-  p->scaffLevel = 0;
-  p->scaffSize = 0;
-  p->scaffCount = 0;
-  p->contentStringLen = 0;
-
-  p->keepProcessing = XML_TRUE;
-  p->hasParamEntityRefs = XML_FALSE;
-  p->standalone = XML_FALSE;
-}
-
-static void
-dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms)
-{
-  HASH_TABLE_ITER iter;
-  hashTableIterInit(&iter, &(p->elementTypes));
-  for (;;) {
-    ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter);
-    if (!e)
-      break;
-    if (e->allocDefaultAtts != 0)
-      ms->free_fcn(e->defaultAtts);
-  }
-  hashTableDestroy(&(p->generalEntities));
-#ifdef XML_DTD
-  hashTableDestroy(&(p->paramEntities));
-#endif /* XML_DTD */
-  hashTableDestroy(&(p->elementTypes));
-  hashTableDestroy(&(p->attributeIds));
-  hashTableDestroy(&(p->prefixes));
-  poolDestroy(&(p->pool));
-  poolDestroy(&(p->entityValuePool));
-  if (isDocEntity) {
-    ms->free_fcn(p->scaffIndex);
-    ms->free_fcn(p->scaffold);
-  }
-  ms->free_fcn(p);
-}
-
-/* Do a deep copy of the DTD. Return 0 for out of memory, non-zero otherwise.
-   The new DTD has already been initialized.
-*/
-static int
-dtdCopy(DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms)
-{
-  HASH_TABLE_ITER iter;
-
-  /* Copy the prefix table. */
-
-  hashTableIterInit(&iter, &(oldDtd->prefixes));
-  for (;;) {
-    const XML_Char *name;
-    const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter);
-    if (!oldP)
-      break;
-    name = poolCopyString(&(newDtd->pool), oldP->name);
-    if (!name)
-      return 0;
-    if (!lookup(&(newDtd->prefixes), name, sizeof(PREFIX)))
-      return 0;
-  }
-
-  hashTableIterInit(&iter, &(oldDtd->attributeIds));
-
-  /* Copy the attribute id table. */
-
-  for (;;) {
-    ATTRIBUTE_ID *newA;
-    const XML_Char *name;
-    const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter);
-
-    if (!oldA)
-      break;
-    /* Remember to allocate the scratch byte before the name. */
-    if (!poolAppendChar(&(newDtd->pool), XML_T('\0')))
-      return 0;
-    name = poolCopyString(&(newDtd->pool), oldA->name);
-    if (!name)
-      return 0;
-    ++name;
-    newA = (ATTRIBUTE_ID *)lookup(&(newDtd->attributeIds), name,
-                                  sizeof(ATTRIBUTE_ID));
-    if (!newA)
-      return 0;
-    newA->maybeTokenized = oldA->maybeTokenized;
-    if (oldA->prefix) {
-      newA->xmlns = oldA->xmlns;
-      if (oldA->prefix == &oldDtd->defaultPrefix)
-        newA->prefix = &newDtd->defaultPrefix;
-      else
-        newA->prefix = (PREFIX *)lookup(&(newDtd->prefixes),
-                                        oldA->prefix->name, 0);
-    }
-  }
-
-  /* Copy the element type table. */
-
-  hashTableIterInit(&iter, &(oldDtd->elementTypes));
-
-  for (;;) {
-    int i;
-    ELEMENT_TYPE *newE;
-    const XML_Char *name;
-    const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter);
-    if (!oldE)
-      break;
-    name = poolCopyString(&(newDtd->pool), oldE->name);
-    if (!name)
-      return 0;
-    newE = (ELEMENT_TYPE *)lookup(&(newDtd->elementTypes), name,
-                                  sizeof(ELEMENT_TYPE));
-    if (!newE)
-      return 0;
-    if (oldE->nDefaultAtts) {
-      newE->defaultAtts = (DEFAULT_ATTRIBUTE *)
-          ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE));
-      if (!newE->defaultAtts) {
-        ms->free_fcn(newE);
-        return 0;
-      }
-    }
-    if (oldE->idAtt)
-      newE->idAtt = (ATTRIBUTE_ID *)
-          lookup(&(newDtd->attributeIds), oldE->idAtt->name, 0);
-    newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts;
-    if (oldE->prefix)
-      newE->prefix = (PREFIX *)lookup(&(newDtd->prefixes),
-                                      oldE->prefix->name, 0);
-    for (i = 0; i < newE->nDefaultAtts; i++) {
-      newE->defaultAtts[i].id = (ATTRIBUTE_ID *)
-          lookup(&(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0);
-      newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata;
-      if (oldE->defaultAtts[i].value) {
-        newE->defaultAtts[i].value
-            = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value);
-        if (!newE->defaultAtts[i].value)
-          return 0;
-      }
-      else
-        newE->defaultAtts[i].value = NULL;
-    }
-  }
-
-  /* Copy the entity tables. */
-  if (!copyEntityTable(&(newDtd->generalEntities),
-                       &(newDtd->pool),
-                       &(oldDtd->generalEntities)))
-      return 0;
-
-#ifdef XML_DTD
-  if (!copyEntityTable(&(newDtd->paramEntities),
-                       &(newDtd->pool),
-                       &(oldDtd->paramEntities)))
-      return 0;
-  newDtd->paramEntityRead = oldDtd->paramEntityRead;
-#endif /* XML_DTD */
-
-  newDtd->keepProcessing = oldDtd->keepProcessing;
-  newDtd->hasParamEntityRefs = oldDtd->hasParamEntityRefs;
-  newDtd->standalone = oldDtd->standalone;
-
-  /* Don't want deep copying for scaffolding */
-  newDtd->in_eldecl = oldDtd->in_eldecl;
-  newDtd->scaffold = oldDtd->scaffold;
-  newDtd->contentStringLen = oldDtd->contentStringLen;
-  newDtd->scaffSize = oldDtd->scaffSize;
-  newDtd->scaffLevel = oldDtd->scaffLevel;
-  newDtd->scaffIndex = oldDtd->scaffIndex;
-
-  return 1;
-}  /* End dtdCopy */
-
-static int
-copyEntityTable(HASH_TABLE *newTable,
-                STRING_POOL *newPool,
-                const HASH_TABLE *oldTable)
-{
-  HASH_TABLE_ITER iter;
-  const XML_Char *cachedOldBase = NULL;
-  const XML_Char *cachedNewBase = NULL;
-
-  hashTableIterInit(&iter, oldTable);
-
-  for (;;) {
-    ENTITY *newE;
-    const XML_Char *name;
-    const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter);
-    if (!oldE)
-      break;
-    name = poolCopyString(newPool, oldE->name);
-    if (!name)
-      return 0;
-    newE = (ENTITY *)lookup(newTable, name, sizeof(ENTITY));
-    if (!newE)
-      return 0;
-    if (oldE->systemId) {
-      const XML_Char *tem = poolCopyString(newPool, oldE->systemId);
-      if (!tem)
-        return 0;
-      newE->systemId = tem;
-      if (oldE->base) {
-        if (oldE->base == cachedOldBase)
-          newE->base = cachedNewBase;
-        else {
-          cachedOldBase = oldE->base;
-          tem = poolCopyString(newPool, cachedOldBase);
-          if (!tem)
-            return 0;
-          cachedNewBase = newE->base = tem;
-        }
-      }
-      if (oldE->publicId) {
-        tem = poolCopyString(newPool, oldE->publicId);
-        if (!tem)
-          return 0;
-        newE->publicId = tem;
-      }
-    }
-    else {
-      const XML_Char *tem = poolCopyStringN(newPool, oldE->textPtr,
-                                            oldE->textLen);
-      if (!tem)
-        return 0;
-      newE->textPtr = tem;
-      newE->textLen = oldE->textLen;
-    }
-    if (oldE->notation) {
-      const XML_Char *tem = poolCopyString(newPool, oldE->notation);
-      if (!tem)
-        return 0;
-      newE->notation = tem;
-    }
-    newE->is_param = oldE->is_param;
-    newE->is_internal = oldE->is_internal;
-  }
-  return 1;
-}
-
-#define INIT_POWER 6
-
-static XML_Bool FASTCALL
-keyeq(KEY s1, KEY s2)
-{
-  for (; *s1 == *s2; s1++, s2++)
-    if (*s1 == 0)
-      return XML_TRUE;
-  return XML_FALSE;
-}
-
-static unsigned long FASTCALL
-hash(KEY s)
-{
-  unsigned long h = 0;
-  while (*s)
-    h = CHAR_HASH(h, *s++);
-  return h;
-}
-
-static NAMED *
-lookup(HASH_TABLE *table, KEY name, size_t createSize)
-{
-  size_t i;
-  if (table->size == 0) {
-    size_t tsize;
-    if (!createSize)
-      return NULL;
-    table->power = INIT_POWER;
-    /* table->size is a power of 2 */
-    table->size = (size_t)1 << INIT_POWER;
-    tsize = table->size * sizeof(NAMED *);
-    table->v = (NAMED **)table->mem->malloc_fcn(tsize);
-    if (!table->v) {
-      table->size = 0;
-      return NULL;
-    }
-    memset(table->v, 0, tsize);
-    i = hash(name) & ((unsigned long)table->size - 1);
-  }
-  else {
-    unsigned long h = hash(name);
-    unsigned long mask = (unsigned long)table->size - 1;
-    unsigned char step = 0;
-    i = h & mask;
-    while (table->v[i]) {
-      if (keyeq(name, table->v[i]->name))
-        return table->v[i];
-      if (!step)
-        step = PROBE_STEP(h, mask, table->power);
-      i < step ? (i += table->size - step) : (i -= step);
-    }
-    if (!createSize)
-      return NULL;
-
-    /* check for overflow (table is half full) */
-    if (table->used >> (table->power - 1)) {
-      unsigned char newPower = table->power + 1;
-      size_t newSize = (size_t)1 << newPower;
-      unsigned long newMask = (unsigned long)newSize - 1;
-      size_t tsize = newSize * sizeof(NAMED *);
-      NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize);
-      if (!newV)
-        return NULL;
-      memset(newV, 0, tsize);
-      for (i = 0; i < table->size; i++)
-        if (table->v[i]) {
-          unsigned long newHash = hash(table->v[i]->name);
-          size_t j = newHash & newMask;
-          step = 0;
-          while (newV[j]) {
-            if (!step)
-              step = PROBE_STEP(newHash, newMask, newPower);
-            j < step ? (j += newSize - step) : (j -= step);
-          }
-          newV[j] = table->v[i];
-        }
-      table->mem->free_fcn(table->v);
-      table->v = newV;
-      table->power = newPower;
-      table->size = newSize;
-      i = h & newMask;
-      step = 0;
-      while (table->v[i]) {
-        if (!step)
-          step = PROBE_STEP(h, newMask, newPower);
-        i < step ? (i += newSize - step) : (i -= step);
-      }
-    }
-  }
-  table->v[i] = (NAMED *)table->mem->malloc_fcn(createSize);
-  if (!table->v[i])
-    return NULL;
-  memset(table->v[i], 0, createSize);
-  table->v[i]->name = name;
-  (table->used)++;
-  return table->v[i];
-}
-
-static void FASTCALL
-hashTableClear(HASH_TABLE *table)
-{
-  size_t i;
-  for (i = 0; i < table->size; i++) {
-    table->mem->free_fcn(table->v[i]);
-    table->v[i] = NULL;
-  }
-  table->used = 0;
-}
-
-static void FASTCALL
-hashTableDestroy(HASH_TABLE *table)
-{
-  size_t i;
-  for (i = 0; i < table->size; i++)
-    table->mem->free_fcn(table->v[i]);
-  table->mem->free_fcn(table->v);
-}
-
-static void FASTCALL
-hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms)
-{
-  p->power = 0;
-  p->size = 0;
-  p->used = 0;
-  p->v = NULL;
-  p->mem = ms;
-}
-
-static void FASTCALL
-hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table)
-{
-  iter->p = table->v;
-  iter->end = iter->p + table->size;
-}
-
-static NAMED * FASTCALL
-hashTableIterNext(HASH_TABLE_ITER *iter)
-{
-  while (iter->p != iter->end) {
-    NAMED *tem = *(iter->p)++;
-    if (tem)
-      return tem;
-  }
-  return NULL;
-}
-
-static void FASTCALL
-poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms)
-{
-  pool->blocks = NULL;
-  pool->freeBlocks = NULL;
-  pool->start = NULL;
-  pool->ptr = NULL;
-  pool->end = NULL;
-  pool->mem = ms;
-}
-
-static void FASTCALL
-poolClear(STRING_POOL *pool)
-{
-  if (!pool->freeBlocks)
-    pool->freeBlocks = pool->blocks;
-  else {
-    BLOCK *p = pool->blocks;
-    while (p) {
-      BLOCK *tem = p->next;
-      p->next = pool->freeBlocks;
-      pool->freeBlocks = p;
-      p = tem;
-    }
-  }
-  pool->blocks = NULL;
-  pool->start = NULL;
-  pool->ptr = NULL;
-  pool->end = NULL;
-}
-
-static void FASTCALL
-poolDestroy(STRING_POOL *pool)
-{
-  BLOCK *p = pool->blocks;
-  while (p) {
-    BLOCK *tem = p->next;
-    pool->mem->free_fcn(p);
-    p = tem;
-  }
-  p = pool->freeBlocks;
-  while (p) {
-    BLOCK *tem = p->next;
-    pool->mem->free_fcn(p);
-    p = tem;
-  }
-}
-
-static XML_Char *
-poolAppend(STRING_POOL *pool, const ENCODING *enc,
-           const char *ptr, const char *end)
-{
-  if (!pool->ptr && !poolGrow(pool))
-    return NULL;
-  for (;;) {
-    XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end);
-    if (ptr == end)
-      break;
-    if (!poolGrow(pool))
-      return NULL;
-  }
-  return pool->start;
-}
-
-static const XML_Char * FASTCALL
-poolCopyString(STRING_POOL *pool, const XML_Char *s)
-{
-  do {
-    if (!poolAppendChar(pool, *s))
-      return NULL;
-  } while (*s++);
-  s = pool->start;
-  poolFinish(pool);
-  return s;
-}
-
-static const XML_Char *
-poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n)
-{
-  if (!pool->ptr && !poolGrow(pool))
-    return NULL;
-  for (; n > 0; --n, s++) {
-    if (!poolAppendChar(pool, *s))
-      return NULL;
-  }
-  s = pool->start;
-  poolFinish(pool);
-  return s;
-}
-
-static const XML_Char * FASTCALL
-poolAppendString(STRING_POOL *pool, const XML_Char *s)
-{
-  while (*s) {
-    if (!poolAppendChar(pool, *s))
-      return NULL;
-    s++;
-  }
-  return pool->start;
-}
-
-static XML_Char *
-poolStoreString(STRING_POOL *pool, const ENCODING *enc,
-                const char *ptr, const char *end)
-{
-  if (!poolAppend(pool, enc, ptr, end))
-    return NULL;
-  if (pool->ptr == pool->end && !poolGrow(pool))
-    return NULL;
-  *(pool->ptr)++ = 0;
-  return pool->start;
-}
-
-static XML_Bool FASTCALL
-poolGrow(STRING_POOL *pool)
-{
-  if (pool->freeBlocks) {
-    if (pool->start == 0) {
-      pool->blocks = pool->freeBlocks;
-      pool->freeBlocks = pool->freeBlocks->next;
-      pool->blocks->next = NULL;
-      pool->start = pool->blocks->s;
-      pool->end = pool->start + pool->blocks->size;
-      pool->ptr = pool->start;
-      return XML_TRUE;
-    }
-    if (pool->end - pool->start < pool->freeBlocks->size) {
-      BLOCK *tem = pool->freeBlocks->next;
-      pool->freeBlocks->next = pool->blocks;
-      pool->blocks = pool->freeBlocks;
-      pool->freeBlocks = tem;
-      memcpy(pool->blocks->s, pool->start,
-             (pool->end - pool->start) * sizeof(XML_Char));
-      pool->ptr = pool->blocks->s + (pool->ptr - pool->start);
-      pool->start = pool->blocks->s;
-      pool->end = pool->start + pool->blocks->size;
-      return XML_TRUE;
-    }
-  }
-  if (pool->blocks && pool->start == pool->blocks->s) {
-    int blockSize = (int)(pool->end - pool->start)*2;
-    pool->blocks = (BLOCK *)
-      pool->mem->realloc_fcn(pool->blocks,
-                             (offsetof(BLOCK, s)
-                              + blockSize * sizeof(XML_Char)));
-    if (pool->blocks == NULL)
-      return XML_FALSE;
-    pool->blocks->size = blockSize;
-    pool->ptr = pool->blocks->s + (pool->ptr - pool->start);
-    pool->start = pool->blocks->s;
-    pool->end = pool->start + blockSize;
-  }
-  else {
-    BLOCK *tem;
-    int blockSize = (int)(pool->end - pool->start);
-    if (blockSize < INIT_BLOCK_SIZE)
-      blockSize = INIT_BLOCK_SIZE;
-    else
-      blockSize *= 2;
-    tem = (BLOCK *)pool->mem->malloc_fcn(offsetof(BLOCK, s)
-                                        + blockSize * sizeof(XML_Char));
-    if (!tem)
-      return XML_FALSE;
-    tem->size = blockSize;
-    tem->next = pool->blocks;
-    pool->blocks = tem;
-    if (pool->ptr != pool->start)
-      memcpy(tem->s, pool->start,
-             (pool->ptr - pool->start) * sizeof(XML_Char));
-    pool->ptr = tem->s + (pool->ptr - pool->start);
-    pool->start = tem->s;
-    pool->end = tem->s + blockSize;
-  }
-  return XML_TRUE;
-}
-
-static int FASTCALL
-nextScaffoldPart(XML_Parser parser)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  CONTENT_SCAFFOLD * me;
-  int next;
-
-  if (!dtd->scaffIndex) {
-    dtd->scaffIndex = (int *)MALLOC(groupSize * sizeof(int));
-    if (!dtd->scaffIndex)
-      return -1;
-    dtd->scaffIndex[0] = 0;
-  }
-
-  if (dtd->scaffCount >= dtd->scaffSize) {
-    CONTENT_SCAFFOLD *temp;
-    if (dtd->scaffold) {
-      temp = (CONTENT_SCAFFOLD *)
-        REALLOC(dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD));
-      if (temp == NULL)
-        return -1;
-      dtd->scaffSize *= 2;
-    }
-    else {
-      temp = (CONTENT_SCAFFOLD *)MALLOC(INIT_SCAFFOLD_ELEMENTS
-                                        * sizeof(CONTENT_SCAFFOLD));
-      if (temp == NULL)
-        return -1;
-      dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS;
-    }
-    dtd->scaffold = temp;
-  }
-  next = dtd->scaffCount++;
-  me = &dtd->scaffold[next];
-  if (dtd->scaffLevel) {
-    CONTENT_SCAFFOLD *parent = &dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel-1]];
-    if (parent->lastchild) {
-      dtd->scaffold[parent->lastchild].nextsib = next;
-    }
-    if (!parent->childcnt)
-      parent->firstchild = next;
-    parent->lastchild = next;
-    parent->childcnt++;
-  }
-  me->firstchild = me->lastchild = me->childcnt = me->nextsib = 0;
-  return next;
-}
-
-static void
-build_node(XML_Parser parser,
-           int src_node,
-           XML_Content *dest,
-           XML_Content **contpos,
-           XML_Char **strpos)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  dest->type = dtd->scaffold[src_node].type;
-  dest->quant = dtd->scaffold[src_node].quant;
-  if (dest->type == XML_CTYPE_NAME) {
-    const XML_Char *src;
-    dest->name = *strpos;
-    src = dtd->scaffold[src_node].name;
-    for (;;) {
-      *(*strpos)++ = *src;
-      if (!*src)
-        break;
-      src++;
-    }
-    dest->numchildren = 0;
-    dest->children = NULL;
-  }
-  else {
-    unsigned int i;
-    int cn;
-    dest->numchildren = dtd->scaffold[src_node].childcnt;
-    dest->children = *contpos;
-    *contpos += dest->numchildren;
-    for (i = 0, cn = dtd->scaffold[src_node].firstchild;
-         i < dest->numchildren;
-         i++, cn = dtd->scaffold[cn].nextsib) {
-      build_node(parser, cn, &(dest->children[i]), contpos, strpos);
-    }
-    dest->name = NULL;
-  }
-}
-
-static XML_Content *
-build_model (XML_Parser parser)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  XML_Content *ret;
-  XML_Content *cpos;
-  XML_Char * str;
-  int allocsize = (dtd->scaffCount * sizeof(XML_Content)
-                   + (dtd->contentStringLen * sizeof(XML_Char)));
-
-  ret = (XML_Content *)MALLOC(allocsize);
-  if (!ret)
-    return NULL;
-
-  str =  (XML_Char *) (&ret[dtd->scaffCount]);
-  cpos = &ret[1];
-
-  build_node(parser, 0, ret, &cpos, &str);
-  return ret;
-}
-
-static ELEMENT_TYPE *
-getElementType(XML_Parser parser,
-               const ENCODING *enc,
-               const char *ptr,
-               const char *end)
-{
-  DTD * const dtd = _dtd;  /* save one level of indirection */
-  const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end);
-  ELEMENT_TYPE *ret;
-
-  if (!name)
-    return NULL;
-  ret = (ELEMENT_TYPE *) lookup(&dtd->elementTypes, name, sizeof(ELEMENT_TYPE));
-  if (!ret)
-    return NULL;
-  if (ret->name != name)
-    poolDiscard(&dtd->pool);
-  else {
-    poolFinish(&dtd->pool);
-    if (!setElementTypePrefix(parser, ret))
-      return NULL;
-  }
-  return ret;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlrole.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlrole.c
deleted file mode 100644
index fc19471..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlrole.c
+++ /dev/null
@@ -1,1330 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#ifdef COMPILED_FROM_DSP
-#include "winconfig.h"
-#elif defined(MACOS_CLASSIC)
-#include "macconfig.h"
-#elif defined(__amigaos4__)
-#include "amigaconfig.h"
-#else
-#ifdef HAVE_EXPAT_CONFIG_H
-#include <expat_config.h>
-#endif
-#endif /* ndef COMPILED_FROM_DSP */
-
-#include <stddef.h>
-
-#include "expat_external.h"
-#include "internal.h"
-#include "xmlrole.h"
-#include "ascii.h"
-
-/* Doesn't check:
-
- that ,| are not mixed in a model group
- content of literals
-
-*/
-
-static const char KW_ANY[] = {
-    ASCII_A, ASCII_N, ASCII_Y, '\0' };
-static const char KW_ATTLIST[] = {
-    ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' };
-static const char KW_CDATA[] = {
-    ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' };
-static const char KW_DOCTYPE[] = {
-    ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' };
-static const char KW_ELEMENT[] = {
-    ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' };
-static const char KW_EMPTY[] = {
-    ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' };
-static const char KW_ENTITIES[] = {
-    ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S,
-    '\0' };
-static const char KW_ENTITY[] = {
-    ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' };
-static const char KW_FIXED[] = {
-    ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' };
-static const char KW_ID[] = {
-    ASCII_I, ASCII_D, '\0' };
-static const char KW_IDREF[] = {
-    ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' };
-static const char KW_IDREFS[] = {
-    ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' };
-static const char KW_IGNORE[] = {
-    ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' };
-static const char KW_IMPLIED[] = {
-    ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' };
-static const char KW_INCLUDE[] = {
-    ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' };
-static const char KW_NDATA[] = {
-    ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' };
-static const char KW_NMTOKEN[] = {
-    ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' };
-static const char KW_NMTOKENS[] = {
-    ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S,
-    '\0' };
-static const char KW_NOTATION[] =
-    { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N,
-      '\0' };
-static const char KW_PCDATA[] = {
-    ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' };
-static const char KW_PUBLIC[] = {
-    ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' };
-static const char KW_REQUIRED[] = {
-    ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D,
-    '\0' };
-static const char KW_SYSTEM[] = {
-    ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' };
-
-#ifndef MIN_BYTES_PER_CHAR
-#define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar)
-#endif
-
-#ifdef XML_DTD
-#define setTopLevel(state) \
-  ((state)->handler = ((state)->documentEntity \
-                       ? internalSubset \
-                       : externalSubset1))
-#else /* not XML_DTD */
-#define setTopLevel(state) ((state)->handler = internalSubset)
-#endif /* not XML_DTD */
-
-typedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state,
-                                   int tok,
-                                   const char *ptr,
-                                   const char *end,
-                                   const ENCODING *enc);
-
-static PROLOG_HANDLER
-  prolog0, prolog1, prolog2,
-  doctype0, doctype1, doctype2, doctype3, doctype4, doctype5,
-  internalSubset,
-  entity0, entity1, entity2, entity3, entity4, entity5, entity6,
-  entity7, entity8, entity9, entity10,
-  notation0, notation1, notation2, notation3, notation4,
-  attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6,
-  attlist7, attlist8, attlist9,
-  element0, element1, element2, element3, element4, element5, element6,
-  element7,
-#ifdef XML_DTD
-  externalSubset0, externalSubset1,
-  condSect0, condSect1, condSect2,
-#endif /* XML_DTD */
-  declClose,
-  error;
-
-static int FASTCALL common(PROLOG_STATE *state, int tok);
-
-static int PTRCALL
-prolog0(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    state->handler = prolog1;
-    return XML_ROLE_NONE;
-  case XML_TOK_XML_DECL:
-    state->handler = prolog1;
-    return XML_ROLE_XML_DECL;
-  case XML_TOK_PI:
-    state->handler = prolog1;
-    return XML_ROLE_PI;
-  case XML_TOK_COMMENT:
-    state->handler = prolog1;
-    return XML_ROLE_COMMENT;
-  case XML_TOK_BOM:
-    return XML_ROLE_NONE;
-  case XML_TOK_DECL_OPEN:
-    if (!XmlNameMatchesAscii(enc,
-                             ptr + 2 * MIN_BYTES_PER_CHAR(enc),
-                             end,
-                             KW_DOCTYPE))
-      break;
-    state->handler = doctype0;
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_INSTANCE_START:
-    state->handler = error;
-    return XML_ROLE_INSTANCE_START;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-prolog1(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NONE;
-  case XML_TOK_PI:
-    return XML_ROLE_PI;
-  case XML_TOK_COMMENT:
-    return XML_ROLE_COMMENT;
-  case XML_TOK_BOM:
-    return XML_ROLE_NONE;
-  case XML_TOK_DECL_OPEN:
-    if (!XmlNameMatchesAscii(enc,
-                             ptr + 2 * MIN_BYTES_PER_CHAR(enc),
-                             end,
-                             KW_DOCTYPE))
-      break;
-    state->handler = doctype0;
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_INSTANCE_START:
-    state->handler = error;
-    return XML_ROLE_INSTANCE_START;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-prolog2(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NONE;
-  case XML_TOK_PI:
-    return XML_ROLE_PI;
-  case XML_TOK_COMMENT:
-    return XML_ROLE_COMMENT;
-  case XML_TOK_INSTANCE_START:
-    state->handler = error;
-    return XML_ROLE_INSTANCE_START;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-doctype0(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = doctype1;
-    return XML_ROLE_DOCTYPE_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-doctype1(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_OPEN_BRACKET:
-    state->handler = internalSubset;
-    return XML_ROLE_DOCTYPE_INTERNAL_SUBSET;
-  case XML_TOK_DECL_CLOSE:
-    state->handler = prolog2;
-    return XML_ROLE_DOCTYPE_CLOSE;
-  case XML_TOK_NAME:
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
-      state->handler = doctype3;
-      return XML_ROLE_DOCTYPE_NONE;
-    }
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
-      state->handler = doctype2;
-      return XML_ROLE_DOCTYPE_NONE;
-    }
-    break;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-doctype2(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = doctype3;
-    return XML_ROLE_DOCTYPE_PUBLIC_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-doctype3(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = doctype4;
-    return XML_ROLE_DOCTYPE_SYSTEM_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-doctype4(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_OPEN_BRACKET:
-    state->handler = internalSubset;
-    return XML_ROLE_DOCTYPE_INTERNAL_SUBSET;
-  case XML_TOK_DECL_CLOSE:
-    state->handler = prolog2;
-    return XML_ROLE_DOCTYPE_CLOSE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-doctype5(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_DECL_CLOSE:
-    state->handler = prolog2;
-    return XML_ROLE_DOCTYPE_CLOSE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-internalSubset(PROLOG_STATE *state,
-               int tok,
-               const char *ptr,
-               const char *end,
-               const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NONE;
-  case XML_TOK_DECL_OPEN:
-    if (XmlNameMatchesAscii(enc,
-                            ptr + 2 * MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_ENTITY)) {
-      state->handler = entity0;
-      return XML_ROLE_ENTITY_NONE;
-    }
-    if (XmlNameMatchesAscii(enc,
-                            ptr + 2 * MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_ATTLIST)) {
-      state->handler = attlist0;
-      return XML_ROLE_ATTLIST_NONE;
-    }
-    if (XmlNameMatchesAscii(enc,
-                            ptr + 2 * MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_ELEMENT)) {
-      state->handler = element0;
-      return XML_ROLE_ELEMENT_NONE;
-    }
-    if (XmlNameMatchesAscii(enc,
-                            ptr + 2 * MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_NOTATION)) {
-      state->handler = notation0;
-      return XML_ROLE_NOTATION_NONE;
-    }
-    break;
-  case XML_TOK_PI:
-    return XML_ROLE_PI;
-  case XML_TOK_COMMENT:
-    return XML_ROLE_COMMENT;
-  case XML_TOK_PARAM_ENTITY_REF:
-    return XML_ROLE_PARAM_ENTITY_REF;
-  case XML_TOK_CLOSE_BRACKET:
-    state->handler = doctype5;
-    return XML_ROLE_DOCTYPE_NONE;
-  case XML_TOK_NONE:
-    return XML_ROLE_NONE;
-  }
-  return common(state, tok);
-}
-
-#ifdef XML_DTD
-
-static int PTRCALL
-externalSubset0(PROLOG_STATE *state,
-                int tok,
-                const char *ptr,
-                const char *end,
-                const ENCODING *enc)
-{
-  state->handler = externalSubset1;
-  if (tok == XML_TOK_XML_DECL)
-    return XML_ROLE_TEXT_DECL;
-  return externalSubset1(state, tok, ptr, end, enc);
-}
-
-static int PTRCALL
-externalSubset1(PROLOG_STATE *state,
-                int tok,
-                const char *ptr,
-                const char *end,
-                const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_COND_SECT_OPEN:
-    state->handler = condSect0;
-    return XML_ROLE_NONE;
-  case XML_TOK_COND_SECT_CLOSE:
-    if (state->includeLevel == 0)
-      break;
-    state->includeLevel -= 1;
-    return XML_ROLE_NONE;
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NONE;
-  case XML_TOK_CLOSE_BRACKET:
-    break;
-  case XML_TOK_NONE:
-    if (state->includeLevel)
-      break;
-    return XML_ROLE_NONE;
-  default:
-    return internalSubset(state, tok, ptr, end, enc);
-  }
-  return common(state, tok);
-}
-
-#endif /* XML_DTD */
-
-static int PTRCALL
-entity0(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_PERCENT:
-    state->handler = entity1;
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_NAME:
-    state->handler = entity2;
-    return XML_ROLE_GENERAL_ENTITY_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity1(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_NAME:
-    state->handler = entity7;
-    return XML_ROLE_PARAM_ENTITY_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity2(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_NAME:
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
-      state->handler = entity4;
-      return XML_ROLE_ENTITY_NONE;
-    }
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
-      state->handler = entity3;
-      return XML_ROLE_ENTITY_NONE;
-    }
-    break;
-  case XML_TOK_LITERAL:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_ENTITY_NONE;
-    return XML_ROLE_ENTITY_VALUE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity3(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = entity4;
-    return XML_ROLE_ENTITY_PUBLIC_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity4(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = entity5;
-    return XML_ROLE_ENTITY_SYSTEM_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity5(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_DECL_CLOSE:
-    setTopLevel(state);
-    return XML_ROLE_ENTITY_COMPLETE;
-  case XML_TOK_NAME:
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) {
-      state->handler = entity6;
-      return XML_ROLE_ENTITY_NONE;
-    }
-    break;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity6(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_NAME:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_ENTITY_NONE;
-    return XML_ROLE_ENTITY_NOTATION_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity7(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_NAME:
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
-      state->handler = entity9;
-      return XML_ROLE_ENTITY_NONE;
-    }
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
-      state->handler = entity8;
-      return XML_ROLE_ENTITY_NONE;
-    }
-    break;
-  case XML_TOK_LITERAL:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_ENTITY_NONE;
-    return XML_ROLE_ENTITY_VALUE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity8(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = entity9;
-    return XML_ROLE_ENTITY_PUBLIC_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity9(PROLOG_STATE *state,
-        int tok,
-        const char *ptr,
-        const char *end,
-        const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = entity10;
-    return XML_ROLE_ENTITY_SYSTEM_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-entity10(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ENTITY_NONE;
-  case XML_TOK_DECL_CLOSE:
-    setTopLevel(state);
-    return XML_ROLE_ENTITY_COMPLETE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-notation0(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NOTATION_NONE;
-  case XML_TOK_NAME:
-    state->handler = notation1;
-    return XML_ROLE_NOTATION_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-notation1(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NOTATION_NONE;
-  case XML_TOK_NAME:
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) {
-      state->handler = notation3;
-      return XML_ROLE_NOTATION_NONE;
-    }
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) {
-      state->handler = notation2;
-      return XML_ROLE_NOTATION_NONE;
-    }
-    break;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-notation2(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NOTATION_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = notation4;
-    return XML_ROLE_NOTATION_PUBLIC_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-notation3(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NOTATION_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_NOTATION_NONE;
-    return XML_ROLE_NOTATION_SYSTEM_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-notation4(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NOTATION_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_NOTATION_NONE;
-    return XML_ROLE_NOTATION_SYSTEM_ID;
-  case XML_TOK_DECL_CLOSE:
-    setTopLevel(state);
-    return XML_ROLE_NOTATION_NO_SYSTEM_ID;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist0(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = attlist1;
-    return XML_ROLE_ATTLIST_ELEMENT_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist1(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_DECL_CLOSE:
-    setTopLevel(state);
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = attlist2;
-    return XML_ROLE_ATTRIBUTE_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist2(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_NAME:
-    {
-      static const char * const types[] = {
-        KW_CDATA,
-        KW_ID,
-        KW_IDREF,
-        KW_IDREFS,
-        KW_ENTITY,
-        KW_ENTITIES,
-        KW_NMTOKEN,
-        KW_NMTOKENS,
-      };
-      int i;
-      for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++)
-        if (XmlNameMatchesAscii(enc, ptr, end, types[i])) {
-          state->handler = attlist8;
-          return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i;
-        }
-    }
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) {
-      state->handler = attlist5;
-      return XML_ROLE_ATTLIST_NONE;
-    }
-    break;
-  case XML_TOK_OPEN_PAREN:
-    state->handler = attlist3;
-    return XML_ROLE_ATTLIST_NONE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist3(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_NMTOKEN:
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = attlist4;
-    return XML_ROLE_ATTRIBUTE_ENUM_VALUE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist4(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_CLOSE_PAREN:
-    state->handler = attlist8;
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_OR:
-    state->handler = attlist3;
-    return XML_ROLE_ATTLIST_NONE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist5(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_OPEN_PAREN:
-    state->handler = attlist6;
-    return XML_ROLE_ATTLIST_NONE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist6(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_NAME:
-    state->handler = attlist7;
-    return XML_ROLE_ATTRIBUTE_NOTATION_VALUE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist7(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_CLOSE_PAREN:
-    state->handler = attlist8;
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_OR:
-    state->handler = attlist6;
-    return XML_ROLE_ATTLIST_NONE;
-  }
-  return common(state, tok);
-}
-
-/* default value */
-static int PTRCALL
-attlist8(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_POUND_NAME:
-    if (XmlNameMatchesAscii(enc,
-                            ptr + MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_IMPLIED)) {
-      state->handler = attlist1;
-      return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE;
-    }
-    if (XmlNameMatchesAscii(enc,
-                            ptr + MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_REQUIRED)) {
-      state->handler = attlist1;
-      return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE;
-    }
-    if (XmlNameMatchesAscii(enc,
-                            ptr + MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_FIXED)) {
-      state->handler = attlist9;
-      return XML_ROLE_ATTLIST_NONE;
-    }
-    break;
-  case XML_TOK_LITERAL:
-    state->handler = attlist1;
-    return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-attlist9(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ATTLIST_NONE;
-  case XML_TOK_LITERAL:
-    state->handler = attlist1;
-    return XML_ROLE_FIXED_ATTRIBUTE_VALUE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element0(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = element1;
-    return XML_ROLE_ELEMENT_NAME;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element1(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_NAME:
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) {
-      state->handler = declClose;
-      state->role_none = XML_ROLE_ELEMENT_NONE;
-      return XML_ROLE_CONTENT_EMPTY;
-    }
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) {
-      state->handler = declClose;
-      state->role_none = XML_ROLE_ELEMENT_NONE;
-      return XML_ROLE_CONTENT_ANY;
-    }
-    break;
-  case XML_TOK_OPEN_PAREN:
-    state->handler = element2;
-    state->level = 1;
-    return XML_ROLE_GROUP_OPEN;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element2(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_POUND_NAME:
-    if (XmlNameMatchesAscii(enc,
-                            ptr + MIN_BYTES_PER_CHAR(enc),
-                            end,
-                            KW_PCDATA)) {
-      state->handler = element3;
-      return XML_ROLE_CONTENT_PCDATA;
-    }
-    break;
-  case XML_TOK_OPEN_PAREN:
-    state->level = 2;
-    state->handler = element6;
-    return XML_ROLE_GROUP_OPEN;
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT;
-  case XML_TOK_NAME_QUESTION:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT_OPT;
-  case XML_TOK_NAME_ASTERISK:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT_REP;
-  case XML_TOK_NAME_PLUS:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT_PLUS;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element3(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_CLOSE_PAREN:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_ELEMENT_NONE;
-    return XML_ROLE_GROUP_CLOSE;
-  case XML_TOK_CLOSE_PAREN_ASTERISK:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_ELEMENT_NONE;
-    return XML_ROLE_GROUP_CLOSE_REP;
-  case XML_TOK_OR:
-    state->handler = element4;
-    return XML_ROLE_ELEMENT_NONE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element4(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = element5;
-    return XML_ROLE_CONTENT_ELEMENT;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element5(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_CLOSE_PAREN_ASTERISK:
-    state->handler = declClose;
-    state->role_none = XML_ROLE_ELEMENT_NONE;
-    return XML_ROLE_GROUP_CLOSE_REP;
-  case XML_TOK_OR:
-    state->handler = element4;
-    return XML_ROLE_ELEMENT_NONE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element6(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_OPEN_PAREN:
-    state->level += 1;
-    return XML_ROLE_GROUP_OPEN;
-  case XML_TOK_NAME:
-  case XML_TOK_PREFIXED_NAME:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT;
-  case XML_TOK_NAME_QUESTION:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT_OPT;
-  case XML_TOK_NAME_ASTERISK:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT_REP;
-  case XML_TOK_NAME_PLUS:
-    state->handler = element7;
-    return XML_ROLE_CONTENT_ELEMENT_PLUS;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-element7(PROLOG_STATE *state,
-         int tok,
-         const char *ptr,
-         const char *end,
-         const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_ELEMENT_NONE;
-  case XML_TOK_CLOSE_PAREN:
-    state->level -= 1;
-    if (state->level == 0) {
-      state->handler = declClose;
-      state->role_none = XML_ROLE_ELEMENT_NONE;
-    }
-    return XML_ROLE_GROUP_CLOSE;
-  case XML_TOK_CLOSE_PAREN_ASTERISK:
-    state->level -= 1;
-    if (state->level == 0) {
-      state->handler = declClose;
-      state->role_none = XML_ROLE_ELEMENT_NONE;
-    }
-    return XML_ROLE_GROUP_CLOSE_REP;
-  case XML_TOK_CLOSE_PAREN_QUESTION:
-    state->level -= 1;
-    if (state->level == 0) {
-      state->handler = declClose;
-      state->role_none = XML_ROLE_ELEMENT_NONE;
-    }
-    return XML_ROLE_GROUP_CLOSE_OPT;
-  case XML_TOK_CLOSE_PAREN_PLUS:
-    state->level -= 1;
-    if (state->level == 0) {
-      state->handler = declClose;
-      state->role_none = XML_ROLE_ELEMENT_NONE;
-    }
-    return XML_ROLE_GROUP_CLOSE_PLUS;
-  case XML_TOK_COMMA:
-    state->handler = element6;
-    return XML_ROLE_GROUP_SEQUENCE;
-  case XML_TOK_OR:
-    state->handler = element6;
-    return XML_ROLE_GROUP_CHOICE;
-  }
-  return common(state, tok);
-}
-
-#ifdef XML_DTD
-
-static int PTRCALL
-condSect0(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NONE;
-  case XML_TOK_NAME:
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) {
-      state->handler = condSect1;
-      return XML_ROLE_NONE;
-    }
-    if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) {
-      state->handler = condSect2;
-      return XML_ROLE_NONE;
-    }
-    break;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-condSect1(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NONE;
-  case XML_TOK_OPEN_BRACKET:
-    state->handler = externalSubset1;
-    state->includeLevel += 1;
-    return XML_ROLE_NONE;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-condSect2(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return XML_ROLE_NONE;
-  case XML_TOK_OPEN_BRACKET:
-    state->handler = externalSubset1;
-    return XML_ROLE_IGNORE_SECT;
-  }
-  return common(state, tok);
-}
-
-#endif /* XML_DTD */
-
-static int PTRCALL
-declClose(PROLOG_STATE *state,
-          int tok,
-          const char *ptr,
-          const char *end,
-          const ENCODING *enc)
-{
-  switch (tok) {
-  case XML_TOK_PROLOG_S:
-    return state->role_none;
-  case XML_TOK_DECL_CLOSE:
-    setTopLevel(state);
-    return state->role_none;
-  }
-  return common(state, tok);
-}
-
-static int PTRCALL
-error(PROLOG_STATE *state,
-      int tok,
-      const char *ptr,
-      const char *end,
-      const ENCODING *enc)
-{
-  return XML_ROLE_NONE;
-}
-
-static int FASTCALL
-common(PROLOG_STATE *state, int tok)
-{
-#ifdef XML_DTD
-  if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF)
-    return XML_ROLE_INNER_PARAM_ENTITY_REF;
-#endif
-  state->handler = error;
-  return XML_ROLE_ERROR;
-}
-
-void
-XmlPrologStateInit(PROLOG_STATE *state)
-{
-  state->handler = prolog0;
-#ifdef XML_DTD
-  state->documentEntity = 1;
-  state->includeLevel = 0;
-  state->inEntityValue = 0;
-#endif /* XML_DTD */
-}
-
-#ifdef XML_DTD
-
-void
-XmlPrologStateInitExternalEntity(PROLOG_STATE *state)
-{
-  state->handler = externalSubset0;
-  state->documentEntity = 0;
-  state->includeLevel = 0;
-}
-
-#endif /* XML_DTD */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlrole.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlrole.h
deleted file mode 100644
index 25be6b0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmlrole.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#ifndef XmlRole_INCLUDED
-#define XmlRole_INCLUDED 1
-
-#ifdef __VMS
-/*      0        1         2         3      0        1         2         3
-        1234567890123456789012345678901     1234567890123456789012345678901 */
-#define XmlPrologStateInitExternalEntity    XmlPrologStateInitExternalEnt
-#endif
-
-#include "xmltok.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-enum {
-  XML_ROLE_ERROR = -1,
-  XML_ROLE_NONE = 0,
-  XML_ROLE_XML_DECL,
-  XML_ROLE_INSTANCE_START,
-  XML_ROLE_DOCTYPE_NONE,
-  XML_ROLE_DOCTYPE_NAME,
-  XML_ROLE_DOCTYPE_SYSTEM_ID,
-  XML_ROLE_DOCTYPE_PUBLIC_ID,
-  XML_ROLE_DOCTYPE_INTERNAL_SUBSET,
-  XML_ROLE_DOCTYPE_CLOSE,
-  XML_ROLE_GENERAL_ENTITY_NAME,
-  XML_ROLE_PARAM_ENTITY_NAME,
-  XML_ROLE_ENTITY_NONE,
-  XML_ROLE_ENTITY_VALUE,
-  XML_ROLE_ENTITY_SYSTEM_ID,
-  XML_ROLE_ENTITY_PUBLIC_ID,
-  XML_ROLE_ENTITY_COMPLETE,
-  XML_ROLE_ENTITY_NOTATION_NAME,
-  XML_ROLE_NOTATION_NONE,
-  XML_ROLE_NOTATION_NAME,
-  XML_ROLE_NOTATION_SYSTEM_ID,
-  XML_ROLE_NOTATION_NO_SYSTEM_ID,
-  XML_ROLE_NOTATION_PUBLIC_ID,
-  XML_ROLE_ATTRIBUTE_NAME,
-  XML_ROLE_ATTRIBUTE_TYPE_CDATA,
-  XML_ROLE_ATTRIBUTE_TYPE_ID,
-  XML_ROLE_ATTRIBUTE_TYPE_IDREF,
-  XML_ROLE_ATTRIBUTE_TYPE_IDREFS,
-  XML_ROLE_ATTRIBUTE_TYPE_ENTITY,
-  XML_ROLE_ATTRIBUTE_TYPE_ENTITIES,
-  XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN,
-  XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS,
-  XML_ROLE_ATTRIBUTE_ENUM_VALUE,
-  XML_ROLE_ATTRIBUTE_NOTATION_VALUE,
-  XML_ROLE_ATTLIST_NONE,
-  XML_ROLE_ATTLIST_ELEMENT_NAME,
-  XML_ROLE_IMPLIED_ATTRIBUTE_VALUE,
-  XML_ROLE_REQUIRED_ATTRIBUTE_VALUE,
-  XML_ROLE_DEFAULT_ATTRIBUTE_VALUE,
-  XML_ROLE_FIXED_ATTRIBUTE_VALUE,
-  XML_ROLE_ELEMENT_NONE,
-  XML_ROLE_ELEMENT_NAME,
-  XML_ROLE_CONTENT_ANY,
-  XML_ROLE_CONTENT_EMPTY,
-  XML_ROLE_CONTENT_PCDATA,
-  XML_ROLE_GROUP_OPEN,
-  XML_ROLE_GROUP_CLOSE,
-  XML_ROLE_GROUP_CLOSE_REP,
-  XML_ROLE_GROUP_CLOSE_OPT,
-  XML_ROLE_GROUP_CLOSE_PLUS,
-  XML_ROLE_GROUP_CHOICE,
-  XML_ROLE_GROUP_SEQUENCE,
-  XML_ROLE_CONTENT_ELEMENT,
-  XML_ROLE_CONTENT_ELEMENT_REP,
-  XML_ROLE_CONTENT_ELEMENT_OPT,
-  XML_ROLE_CONTENT_ELEMENT_PLUS,
-  XML_ROLE_PI,
-  XML_ROLE_COMMENT,
-#ifdef XML_DTD
-  XML_ROLE_TEXT_DECL,
-  XML_ROLE_IGNORE_SECT,
-  XML_ROLE_INNER_PARAM_ENTITY_REF,
-#endif /* XML_DTD */
-  XML_ROLE_PARAM_ENTITY_REF
-};
-
-typedef struct prolog_state {
-  int (PTRCALL *handler) (struct prolog_state *state,
-                          int tok,
-                          const char *ptr,
-                          const char *end,
-                          const ENCODING *enc);
-  unsigned level;
-  int role_none;
-#ifdef XML_DTD
-  unsigned includeLevel;
-  int documentEntity;
-  int inEntityValue;
-#endif /* XML_DTD */
-} PROLOG_STATE;
-
-void XmlPrologStateInit(PROLOG_STATE *);
-#ifdef XML_DTD
-void XmlPrologStateInitExternalEntity(PROLOG_STATE *);
-#endif /* XML_DTD */
-
-#define XmlTokenRole(state, tok, ptr, end, enc) \
- (((state)->handler)(state, tok, ptr, end, enc))
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* not XmlRole_INCLUDED */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok.c
deleted file mode 100644
index 393ab2a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok.c
+++ /dev/null
@@ -1,1639 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#ifdef COMPILED_FROM_DSP
-#include "winconfig.h"
-#elif defined(MACOS_CLASSIC)
-#include "macconfig.h"
-#elif defined(__amigaos4__)
-#include "amigaconfig.h"
-#else
-#ifdef HAVE_EXPAT_CONFIG_H
-#include <expat_config.h>
-#endif
-#endif /* ndef COMPILED_FROM_DSP */
-
-#include <stddef.h>
-
-#include "expat_external.h"
-#include "internal.h"
-#include "xmltok.h"
-#include "nametab.h"
-
-#ifdef XML_DTD
-#define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok)
-#else
-#define IGNORE_SECTION_TOK_VTABLE /* as nothing */
-#endif
-
-#define VTABLE1 \
-  { PREFIX(prologTok), PREFIX(contentTok), \
-    PREFIX(cdataSectionTok) IGNORE_SECTION_TOK_VTABLE }, \
-  { PREFIX(attributeValueTok), PREFIX(entityValueTok) }, \
-  PREFIX(sameName), \
-  PREFIX(nameMatchesAscii), \
-  PREFIX(nameLength), \
-  PREFIX(skipS), \
-  PREFIX(getAtts), \
-  PREFIX(charRefNumber), \
-  PREFIX(predefinedEntityName), \
-  PREFIX(updatePosition), \
-  PREFIX(isPublicId)
-
-#define VTABLE VTABLE1, PREFIX(toUtf8), PREFIX(toUtf16)
-
-#define UCS2_GET_NAMING(pages, hi, lo) \
-   (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1 << ((lo) & 0x1F)))
-
-/* A 2 byte UTF-8 representation splits the characters 11 bits between
-   the bottom 5 and 6 bits of the bytes.  We need 8 bits to index into
-   pages, 3 bits to add to that index and 5 bits to generate the mask.
-*/
-#define UTF8_GET_NAMING2(pages, byte) \
-    (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \
-                      + ((((byte)[0]) & 3) << 1) \
-                      + ((((byte)[1]) >> 5) & 1)] \
-         & (1 << (((byte)[1]) & 0x1F)))
-
-/* A 3 byte UTF-8 representation splits the characters 16 bits between
-   the bottom 4, 6 and 6 bits of the bytes.  We need 8 bits to index
-   into pages, 3 bits to add to that index and 5 bits to generate the
-   mask.
-*/
-#define UTF8_GET_NAMING3(pages, byte) \
-  (namingBitmap[((pages)[((((byte)[0]) & 0xF) << 4) \
-                             + ((((byte)[1]) >> 2) & 0xF)] \
-                       << 3) \
-                      + ((((byte)[1]) & 3) << 1) \
-                      + ((((byte)[2]) >> 5) & 1)] \
-         & (1 << (((byte)[2]) & 0x1F)))
-
-#define UTF8_GET_NAMING(pages, p, n) \
-  ((n) == 2 \
-  ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \
-  : ((n) == 3 \
-     ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \
-     : 0))
-
-/* Detection of invalid UTF-8 sequences is based on Table 3.1B
-   of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/
-   with the additional restriction of not allowing the Unicode
-   code points 0xFFFF and 0xFFFE (sequences EF,BF,BF and EF,BF,BE).
-   Implementation details:
-     (A & 0x80) == 0     means A < 0x80
-   and
-     (A & 0xC0) == 0xC0  means A > 0xBF
-*/
-
-#define UTF8_INVALID2(p) \
-  ((*p) < 0xC2 || ((p)[1] & 0x80) == 0 || ((p)[1] & 0xC0) == 0xC0)
-
-#define UTF8_INVALID3(p) \
-  (((p)[2] & 0x80) == 0 \
-  || \
-  ((*p) == 0xEF && (p)[1] == 0xBF \
-    ? \
-    (p)[2] > 0xBD \
-    : \
-    ((p)[2] & 0xC0) == 0xC0) \
-  || \
-  ((*p) == 0xE0 \
-    ? \
-    (p)[1] < 0xA0 || ((p)[1] & 0xC0) == 0xC0 \
-    : \
-    ((p)[1] & 0x80) == 0 \
-    || \
-    ((*p) == 0xED ? (p)[1] > 0x9F : ((p)[1] & 0xC0) == 0xC0)))
-
-#define UTF8_INVALID4(p) \
-  (((p)[3] & 0x80) == 0 || ((p)[3] & 0xC0) == 0xC0 \
-  || \
-  ((p)[2] & 0x80) == 0 || ((p)[2] & 0xC0) == 0xC0 \
-  || \
-  ((*p) == 0xF0 \
-    ? \
-    (p)[1] < 0x90 || ((p)[1] & 0xC0) == 0xC0 \
-    : \
-    ((p)[1] & 0x80) == 0 \
-    || \
-    ((*p) == 0xF4 ? (p)[1] > 0x8F : ((p)[1] & 0xC0) == 0xC0)))
-
-static int PTRFASTCALL
-isNever(const ENCODING *enc, const char *p)
-{
-  return 0;
-}
-
-static int PTRFASTCALL
-utf8_isName2(const ENCODING *enc, const char *p)
-{
-  return UTF8_GET_NAMING2(namePages, (const unsigned char *)p);
-}
-
-static int PTRFASTCALL
-utf8_isName3(const ENCODING *enc, const char *p)
-{
-  return UTF8_GET_NAMING3(namePages, (const unsigned char *)p);
-}
-
-#define utf8_isName4 isNever
-
-static int PTRFASTCALL
-utf8_isNmstrt2(const ENCODING *enc, const char *p)
-{
-  return UTF8_GET_NAMING2(nmstrtPages, (const unsigned char *)p);
-}
-
-static int PTRFASTCALL
-utf8_isNmstrt3(const ENCODING *enc, const char *p)
-{
-  return UTF8_GET_NAMING3(nmstrtPages, (const unsigned char *)p);
-}
-
-#define utf8_isNmstrt4 isNever
-
-static int PTRFASTCALL
-utf8_isInvalid2(const ENCODING *enc, const char *p)
-{
-  return UTF8_INVALID2((const unsigned char *)p);
-}
-
-static int PTRFASTCALL
-utf8_isInvalid3(const ENCODING *enc, const char *p)
-{
-  return UTF8_INVALID3((const unsigned char *)p);
-}
-
-static int PTRFASTCALL
-utf8_isInvalid4(const ENCODING *enc, const char *p)
-{
-  return UTF8_INVALID4((const unsigned char *)p);
-}
-
-struct normal_encoding {
-  ENCODING enc;
-  unsigned char type[256];
-#ifdef XML_MIN_SIZE
-  int (PTRFASTCALL *byteType)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isNameMin)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isNmstrtMin)(const ENCODING *, const char *);
-  int (PTRFASTCALL *byteToAscii)(const ENCODING *, const char *);
-  int (PTRCALL *charMatches)(const ENCODING *, const char *, int);
-#endif /* XML_MIN_SIZE */
-  int (PTRFASTCALL *isName2)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isName3)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isName4)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isNmstrt2)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isNmstrt3)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isNmstrt4)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isInvalid2)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isInvalid3)(const ENCODING *, const char *);
-  int (PTRFASTCALL *isInvalid4)(const ENCODING *, const char *);
-};
-
-#define AS_NORMAL_ENCODING(enc)   ((const struct normal_encoding *) (enc))
-
-#ifdef XML_MIN_SIZE
-
-#define STANDARD_VTABLE(E) \
- E ## byteType, \
- E ## isNameMin, \
- E ## isNmstrtMin, \
- E ## byteToAscii, \
- E ## charMatches,
-
-#else
-
-#define STANDARD_VTABLE(E) /* as nothing */
-
-#endif
-
-#define NORMAL_VTABLE(E) \
- E ## isName2, \
- E ## isName3, \
- E ## isName4, \
- E ## isNmstrt2, \
- E ## isNmstrt3, \
- E ## isNmstrt4, \
- E ## isInvalid2, \
- E ## isInvalid3, \
- E ## isInvalid4
-
-static int FASTCALL checkCharRefNumber(int);
-
-#include "xmltok_impl.h"
-#include "ascii.h"
-
-#ifdef XML_MIN_SIZE
-#define sb_isNameMin isNever
-#define sb_isNmstrtMin isNever
-#endif
-
-#ifdef XML_MIN_SIZE
-#define MINBPC(enc) ((enc)->minBytesPerChar)
-#else
-/* minimum bytes per character */
-#define MINBPC(enc) 1
-#endif
-
-#define SB_BYTE_TYPE(enc, p) \
-  (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)])
-
-#ifdef XML_MIN_SIZE
-static int PTRFASTCALL
-sb_byteType(const ENCODING *enc, const char *p)
-{
-  return SB_BYTE_TYPE(enc, p);
-}
-#define BYTE_TYPE(enc, p) \
- (AS_NORMAL_ENCODING(enc)->byteType(enc, p))
-#else
-#define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p)
-#endif
-
-#ifdef XML_MIN_SIZE
-#define BYTE_TO_ASCII(enc, p) \
- (AS_NORMAL_ENCODING(enc)->byteToAscii(enc, p))
-static int PTRFASTCALL
-sb_byteToAscii(const ENCODING *enc, const char *p)
-{
-  return *p;
-}
-#else
-#define BYTE_TO_ASCII(enc, p) (*(p))
-#endif
-
-#define IS_NAME_CHAR(enc, p, n) \
- (AS_NORMAL_ENCODING(enc)->isName ## n(enc, p))
-#define IS_NMSTRT_CHAR(enc, p, n) \
- (AS_NORMAL_ENCODING(enc)->isNmstrt ## n(enc, p))
-#define IS_INVALID_CHAR(enc, p, n) \
- (AS_NORMAL_ENCODING(enc)->isInvalid ## n(enc, p))
-
-#ifdef XML_MIN_SIZE
-#define IS_NAME_CHAR_MINBPC(enc, p) \
- (AS_NORMAL_ENCODING(enc)->isNameMin(enc, p))
-#define IS_NMSTRT_CHAR_MINBPC(enc, p) \
- (AS_NORMAL_ENCODING(enc)->isNmstrtMin(enc, p))
-#else
-#define IS_NAME_CHAR_MINBPC(enc, p) (0)
-#define IS_NMSTRT_CHAR_MINBPC(enc, p) (0)
-#endif
-
-#ifdef XML_MIN_SIZE
-#define CHAR_MATCHES(enc, p, c) \
- (AS_NORMAL_ENCODING(enc)->charMatches(enc, p, c))
-static int PTRCALL
-sb_charMatches(const ENCODING *enc, const char *p, int c)
-{
-  return *p == c;
-}
-#else
-/* c is an ASCII character */
-#define CHAR_MATCHES(enc, p, c) (*(p) == c)
-#endif
-
-#define PREFIX(ident) normal_ ## ident
-#include "xmltok_impl.c"
-
-#undef MINBPC
-#undef BYTE_TYPE
-#undef BYTE_TO_ASCII
-#undef CHAR_MATCHES
-#undef IS_NAME_CHAR
-#undef IS_NAME_CHAR_MINBPC
-#undef IS_NMSTRT_CHAR
-#undef IS_NMSTRT_CHAR_MINBPC
-#undef IS_INVALID_CHAR
-
-enum {  /* UTF8_cvalN is value of masked first byte of N byte sequence */
-  UTF8_cval1 = 0x00,
-  UTF8_cval2 = 0xc0,
-  UTF8_cval3 = 0xe0,
-  UTF8_cval4 = 0xf0
-};
-
-static void PTRCALL
-utf8_toUtf8(const ENCODING *enc,
-            const char **fromP, const char *fromLim,
-            char **toP, const char *toLim)
-{
-  char *to;
-  const char *from;
-  if (fromLim - *fromP > toLim - *toP) {
-    /* Avoid copying partial characters. */
-    for (fromLim = *fromP + (toLim - *toP); fromLim > *fromP; fromLim--)
-      if (((unsigned char)fromLim[-1] & 0xc0) != 0x80)
-        break;
-  }
-  for (to = *toP, from = *fromP; from != fromLim; from++, to++)
-    *to = *from;
-  *fromP = from;
-  *toP = to;
-}
-
-static void PTRCALL
-utf8_toUtf16(const ENCODING *enc,
-             const char **fromP, const char *fromLim,
-             unsigned short **toP, const unsigned short *toLim)
-{
-  unsigned short *to = *toP;
-  const char *from = *fromP;
-  while (from != fromLim && to != toLim) {
-    switch (((struct normal_encoding *)enc)->type[(unsigned char)*from]) {
-    case BT_LEAD2:
-      *to++ = (unsigned short)(((from[0] & 0x1f) << 6) | (from[1] & 0x3f));
-      from += 2;
-      break;
-    case BT_LEAD3:
-      *to++ = (unsigned short)(((from[0] & 0xf) << 12)
-                               | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f));
-      from += 3;
-      break;
-    case BT_LEAD4:
-      {
-        unsigned long n;
-        if (to + 1 == toLim)
-          goto after;
-        n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12)
-            | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f);
-        n -= 0x10000;
-        to[0] = (unsigned short)((n >> 10) | 0xD800);
-        to[1] = (unsigned short)((n & 0x3FF) | 0xDC00);
-        to += 2;
-        from += 4;
-      }
-      break;
-    default:
-      *to++ = *from++;
-      break;
-    }
-  }
-after:
-  *fromP = from;
-  *toP = to;
-}
-
-#ifdef XML_NS
-static const struct normal_encoding utf8_encoding_ns = {
-  { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
-  {
-#include "asciitab.h"
-#include "utf8tab.h"
-  },
-  STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
-};
-#endif
-
-static const struct normal_encoding utf8_encoding = {
-  { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
-  {
-#define BT_COLON BT_NMSTRT
-#include "asciitab.h"
-#undef BT_COLON
-#include "utf8tab.h"
-  },
-  STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
-};
-
-#ifdef XML_NS
-
-static const struct normal_encoding internal_utf8_encoding_ns = {
-  { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
-  {
-#include "iasciitab.h"
-#include "utf8tab.h"
-  },
-  STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
-};
-
-#endif
-
-static const struct normal_encoding internal_utf8_encoding = {
-  { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
-  {
-#define BT_COLON BT_NMSTRT
-#include "iasciitab.h"
-#undef BT_COLON
-#include "utf8tab.h"
-  },
-  STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_)
-};
-
-static void PTRCALL
-latin1_toUtf8(const ENCODING *enc,
-              const char **fromP, const char *fromLim,
-              char **toP, const char *toLim)
-{
-  for (;;) {
-    unsigned char c;
-    if (*fromP == fromLim)
-      break;
-    c = (unsigned char)**fromP;
-    if (c & 0x80) {
-      if (toLim - *toP < 2)
-        break;
-      *(*toP)++ = (char)((c >> 6) | UTF8_cval2);
-      *(*toP)++ = (char)((c & 0x3f) | 0x80);
-      (*fromP)++;
-    }
-    else {
-      if (*toP == toLim)
-        break;
-      *(*toP)++ = *(*fromP)++;
-    }
-  }
-}
-
-static void PTRCALL
-latin1_toUtf16(const ENCODING *enc,
-               const char **fromP, const char *fromLim,
-               unsigned short **toP, const unsigned short *toLim)
-{
-  while (*fromP != fromLim && *toP != toLim)
-    *(*toP)++ = (unsigned char)*(*fromP)++;
-}
-
-#ifdef XML_NS
-
-static const struct normal_encoding latin1_encoding_ns = {
-  { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 },
-  {
-#include "asciitab.h"
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(sb_)
-};
-
-#endif
-
-static const struct normal_encoding latin1_encoding = {
-  { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 },
-  {
-#define BT_COLON BT_NMSTRT
-#include "asciitab.h"
-#undef BT_COLON
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(sb_)
-};
-
-static void PTRCALL
-ascii_toUtf8(const ENCODING *enc,
-             const char **fromP, const char *fromLim,
-             char **toP, const char *toLim)
-{
-  while (*fromP != fromLim && *toP != toLim)
-    *(*toP)++ = *(*fromP)++;
-}
-
-#ifdef XML_NS
-
-static const struct normal_encoding ascii_encoding_ns = {
-  { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 },
-  {
-#include "asciitab.h"
-/* BT_NONXML == 0 */
-  },
-  STANDARD_VTABLE(sb_)
-};
-
-#endif
-
-static const struct normal_encoding ascii_encoding = {
-  { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 },
-  {
-#define BT_COLON BT_NMSTRT
-#include "asciitab.h"
-#undef BT_COLON
-/* BT_NONXML == 0 */
-  },
-  STANDARD_VTABLE(sb_)
-};
-
-static int PTRFASTCALL
-unicode_byte_type(char hi, char lo)
-{
-  switch ((unsigned char)hi) {
-  case 0xD8: case 0xD9: case 0xDA: case 0xDB:
-    return BT_LEAD4;
-  case 0xDC: case 0xDD: case 0xDE: case 0xDF:
-    return BT_TRAIL;
-  case 0xFF:
-    switch ((unsigned char)lo) {
-    case 0xFF:
-    case 0xFE:
-      return BT_NONXML;
-    }
-    break;
-  }
-  return BT_NONASCII;
-}
-
-#define DEFINE_UTF16_TO_UTF8(E) \
-static void  PTRCALL \
-E ## toUtf8(const ENCODING *enc, \
-            const char **fromP, const char *fromLim, \
-            char **toP, const char *toLim) \
-{ \
-  const char *from; \
-  for (from = *fromP; from != fromLim; from += 2) { \
-    int plane; \
-    unsigned char lo2; \
-    unsigned char lo = GET_LO(from); \
-    unsigned char hi = GET_HI(from); \
-    switch (hi) { \
-    case 0: \
-      if (lo < 0x80) { \
-        if (*toP == toLim) { \
-          *fromP = from; \
-          return; \
-        } \
-        *(*toP)++ = lo; \
-        break; \
-      } \
-      /* fall through */ \
-    case 0x1: case 0x2: case 0x3: \
-    case 0x4: case 0x5: case 0x6: case 0x7: \
-      if (toLim -  *toP < 2) { \
-        *fromP = from; \
-        return; \
-      } \
-      *(*toP)++ = ((lo >> 6) | (hi << 2) |  UTF8_cval2); \
-      *(*toP)++ = ((lo & 0x3f) | 0x80); \
-      break; \
-    default: \
-      if (toLim -  *toP < 3)  { \
-        *fromP = from; \
-        return; \
-      } \
-      /* 16 bits divided 4, 6, 6 amongst 3 bytes */ \
-      *(*toP)++ = ((hi >> 4) | UTF8_cval3); \
-      *(*toP)++ = (((hi & 0xf) << 2) | (lo >> 6) | 0x80); \
-      *(*toP)++ = ((lo & 0x3f) | 0x80); \
-      break; \
-    case 0xD8: case 0xD9: case 0xDA: case 0xDB: \
-      if (toLim -  *toP < 4) { \
-        *fromP = from; \
-        return; \
-      } \
-      plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \
-      *(*toP)++ = ((plane >> 2) | UTF8_cval4); \
-      *(*toP)++ = (((lo >> 2) & 0xF) | ((plane & 0x3) << 4) | 0x80); \
-      from += 2; \
-      lo2 = GET_LO(from); \
-      *(*toP)++ = (((lo & 0x3) << 4) \
-                   | ((GET_HI(from) & 0x3) << 2) \
-                   | (lo2 >> 6) \
-                   | 0x80); \
-      *(*toP)++ = ((lo2 & 0x3f) | 0x80); \
-      break; \
-    } \
-  } \
-  *fromP = from; \
-}
-
-#define DEFINE_UTF16_TO_UTF16(E) \
-static void  PTRCALL \
-E ## toUtf16(const ENCODING *enc, \
-             const char **fromP, const char *fromLim, \
-             unsigned short **toP, const unsigned short *toLim) \
-{ \
-  /* Avoid copying first half only of surrogate */ \
-  if (fromLim - *fromP > ((toLim - *toP) << 1) \
-      && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) \
-    fromLim -= 2; \
-  for (; *fromP != fromLim && *toP != toLim; *fromP += 2) \
-    *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \
-}
-
-#define SET2(ptr, ch) \
-  (((ptr)[0] = ((ch) & 0xff)), ((ptr)[1] = ((ch) >> 8)))
-#define GET_LO(ptr) ((unsigned char)(ptr)[0])
-#define GET_HI(ptr) ((unsigned char)(ptr)[1])
-
-DEFINE_UTF16_TO_UTF8(little2_)
-DEFINE_UTF16_TO_UTF16(little2_)
-
-#undef SET2
-#undef GET_LO
-#undef GET_HI
-
-#define SET2(ptr, ch) \
-  (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch) & 0xFF)))
-#define GET_LO(ptr) ((unsigned char)(ptr)[1])
-#define GET_HI(ptr) ((unsigned char)(ptr)[0])
-
-DEFINE_UTF16_TO_UTF8(big2_)
-DEFINE_UTF16_TO_UTF16(big2_)
-
-#undef SET2
-#undef GET_LO
-#undef GET_HI
-
-#define LITTLE2_BYTE_TYPE(enc, p) \
- ((p)[1] == 0 \
-  ? ((struct normal_encoding *)(enc))->type[(unsigned char)*(p)] \
-  : unicode_byte_type((p)[1], (p)[0]))
-#define LITTLE2_BYTE_TO_ASCII(enc, p) ((p)[1] == 0 ? (p)[0] : -1)
-#define LITTLE2_CHAR_MATCHES(enc, p, c) ((p)[1] == 0 && (p)[0] == c)
-#define LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) \
-  UCS2_GET_NAMING(namePages, (unsigned char)p[1], (unsigned char)p[0])
-#define LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) \
-  UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[1], (unsigned char)p[0])
-
-#ifdef XML_MIN_SIZE
-
-static int PTRFASTCALL
-little2_byteType(const ENCODING *enc, const char *p)
-{
-  return LITTLE2_BYTE_TYPE(enc, p);
-}
-
-static int PTRFASTCALL
-little2_byteToAscii(const ENCODING *enc, const char *p)
-{
-  return LITTLE2_BYTE_TO_ASCII(enc, p);
-}
-
-static int PTRCALL
-little2_charMatches(const ENCODING *enc, const char *p, int c)
-{
-  return LITTLE2_CHAR_MATCHES(enc, p, c);
-}
-
-static int PTRFASTCALL
-little2_isNameMin(const ENCODING *enc, const char *p)
-{
-  return LITTLE2_IS_NAME_CHAR_MINBPC(enc, p);
-}
-
-static int PTRFASTCALL
-little2_isNmstrtMin(const ENCODING *enc, const char *p)
-{
-  return LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p);
-}
-
-#undef VTABLE
-#define VTABLE VTABLE1, little2_toUtf8, little2_toUtf16
-
-#else /* not XML_MIN_SIZE */
-
-#undef PREFIX
-#define PREFIX(ident) little2_ ## ident
-#define MINBPC(enc) 2
-/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */
-#define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p)
-#define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p)
-#define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(enc, p, c)
-#define IS_NAME_CHAR(enc, p, n) 0
-#define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(enc, p)
-#define IS_NMSTRT_CHAR(enc, p, n) (0)
-#define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p)
-
-#include "xmltok_impl.c"
-
-#undef MINBPC
-#undef BYTE_TYPE
-#undef BYTE_TO_ASCII
-#undef CHAR_MATCHES
-#undef IS_NAME_CHAR
-#undef IS_NAME_CHAR_MINBPC
-#undef IS_NMSTRT_CHAR
-#undef IS_NMSTRT_CHAR_MINBPC
-#undef IS_INVALID_CHAR
-
-#endif /* not XML_MIN_SIZE */
-
-#ifdef XML_NS
-
-static const struct normal_encoding little2_encoding_ns = {
-  { VTABLE, 2, 0,
-#if BYTEORDER == 1234
-    1
-#else
-    0
-#endif
-  },
-  {
-#include "asciitab.h"
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(little2_)
-};
-
-#endif
-
-static const struct normal_encoding little2_encoding = {
-  { VTABLE, 2, 0,
-#if BYTEORDER == 1234
-    1
-#else
-    0
-#endif
-  },
-  {
-#define BT_COLON BT_NMSTRT
-#include "asciitab.h"
-#undef BT_COLON
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(little2_)
-};
-
-#if BYTEORDER != 4321
-
-#ifdef XML_NS
-
-static const struct normal_encoding internal_little2_encoding_ns = {
-  { VTABLE, 2, 0, 1 },
-  {
-#include "iasciitab.h"
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(little2_)
-};
-
-#endif
-
-static const struct normal_encoding internal_little2_encoding = {
-  { VTABLE, 2, 0, 1 },
-  {
-#define BT_COLON BT_NMSTRT
-#include "iasciitab.h"
-#undef BT_COLON
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(little2_)
-};
-
-#endif
-
-
-#define BIG2_BYTE_TYPE(enc, p) \
- ((p)[0] == 0 \
-  ? ((struct normal_encoding *)(enc))->type[(unsigned char)(p)[1]] \
-  : unicode_byte_type((p)[0], (p)[1]))
-#define BIG2_BYTE_TO_ASCII(enc, p) ((p)[0] == 0 ? (p)[1] : -1)
-#define BIG2_CHAR_MATCHES(enc, p, c) ((p)[0] == 0 && (p)[1] == c)
-#define BIG2_IS_NAME_CHAR_MINBPC(enc, p) \
-  UCS2_GET_NAMING(namePages, (unsigned char)p[0], (unsigned char)p[1])
-#define BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) \
-  UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[0], (unsigned char)p[1])
-
-#ifdef XML_MIN_SIZE
-
-static int PTRFASTCALL
-big2_byteType(const ENCODING *enc, const char *p)
-{
-  return BIG2_BYTE_TYPE(enc, p);
-}
-
-static int PTRFASTCALL
-big2_byteToAscii(const ENCODING *enc, const char *p)
-{
-  return BIG2_BYTE_TO_ASCII(enc, p);
-}
-
-static int PTRCALL
-big2_charMatches(const ENCODING *enc, const char *p, int c)
-{
-  return BIG2_CHAR_MATCHES(enc, p, c);
-}
-
-static int PTRFASTCALL
-big2_isNameMin(const ENCODING *enc, const char *p)
-{
-  return BIG2_IS_NAME_CHAR_MINBPC(enc, p);
-}
-
-static int PTRFASTCALL
-big2_isNmstrtMin(const ENCODING *enc, const char *p)
-{
-  return BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p);
-}
-
-#undef VTABLE
-#define VTABLE VTABLE1, big2_toUtf8, big2_toUtf16
-
-#else /* not XML_MIN_SIZE */
-
-#undef PREFIX
-#define PREFIX(ident) big2_ ## ident
-#define MINBPC(enc) 2
-/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */
-#define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p)
-#define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p)
-#define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(enc, p, c)
-#define IS_NAME_CHAR(enc, p, n) 0
-#define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(enc, p)
-#define IS_NMSTRT_CHAR(enc, p, n) (0)
-#define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p)
-
-#include "xmltok_impl.c"
-
-#undef MINBPC
-#undef BYTE_TYPE
-#undef BYTE_TO_ASCII
-#undef CHAR_MATCHES
-#undef IS_NAME_CHAR
-#undef IS_NAME_CHAR_MINBPC
-#undef IS_NMSTRT_CHAR
-#undef IS_NMSTRT_CHAR_MINBPC
-#undef IS_INVALID_CHAR
-
-#endif /* not XML_MIN_SIZE */
-
-#ifdef XML_NS
-
-static const struct normal_encoding big2_encoding_ns = {
-  { VTABLE, 2, 0,
-#if BYTEORDER == 4321
-  1
-#else
-  0
-#endif
-  },
-  {
-#include "asciitab.h"
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(big2_)
-};
-
-#endif
-
-static const struct normal_encoding big2_encoding = {
-  { VTABLE, 2, 0,
-#if BYTEORDER == 4321
-  1
-#else
-  0
-#endif
-  },
-  {
-#define BT_COLON BT_NMSTRT
-#include "asciitab.h"
-#undef BT_COLON
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(big2_)
-};
-
-#if BYTEORDER != 1234
-
-#ifdef XML_NS
-
-static const struct normal_encoding internal_big2_encoding_ns = {
-  { VTABLE, 2, 0, 1 },
-  {
-#include "iasciitab.h"
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(big2_)
-};
-
-#endif
-
-static const struct normal_encoding internal_big2_encoding = {
-  { VTABLE, 2, 0, 1 },
-  {
-#define BT_COLON BT_NMSTRT
-#include "iasciitab.h"
-#undef BT_COLON
-#include "latin1tab.h"
-  },
-  STANDARD_VTABLE(big2_)
-};
-
-#endif
-
-#undef PREFIX
-
-static int FASTCALL
-streqci(const char *s1, const char *s2)
-{
-  for (;;) {
-    char c1 = *s1++;
-    char c2 = *s2++;
-    if (ASCII_a <= c1 && c1 <= ASCII_z)
-      c1 += ASCII_A - ASCII_a;
-    if (ASCII_a <= c2 && c2 <= ASCII_z)
-      c2 += ASCII_A - ASCII_a;
-    if (c1 != c2)
-      return 0;
-    if (!c1)
-      break;
-  }
-  return 1;
-}
-
-static void PTRCALL
-initUpdatePosition(const ENCODING *enc, const char *ptr,
-                   const char *end, POSITION *pos)
-{
-  normal_updatePosition(&utf8_encoding.enc, ptr, end, pos);
-}
-
-static int
-toAscii(const ENCODING *enc, const char *ptr, const char *end)
-{
-  char buf[1];
-  char *p = buf;
-  XmlUtf8Convert(enc, &ptr, end, &p, p + 1);
-  if (p == buf)
-    return -1;
-  else
-    return buf[0];
-}
-
-static int FASTCALL
-isSpace(int c)
-{
-  switch (c) {
-  case 0x20:
-  case 0xD:
-  case 0xA:
-  case 0x9:
-    return 1;
-  }
-  return 0;
-}
-
-/* Return 1 if there's just optional white space or there's an S
-   followed by name=val.
-*/
-static int
-parsePseudoAttribute(const ENCODING *enc,
-                     const char *ptr,
-                     const char *end,
-                     const char **namePtr,
-                     const char **nameEndPtr,
-                     const char **valPtr,
-                     const char **nextTokPtr)
-{
-  int c;
-  char open;
-  if (ptr == end) {
-    *namePtr = NULL;
-    return 1;
-  }
-  if (!isSpace(toAscii(enc, ptr, end))) {
-    *nextTokPtr = ptr;
-    return 0;
-  }
-  do {
-    ptr += enc->minBytesPerChar;
-  } while (isSpace(toAscii(enc, ptr, end)));
-  if (ptr == end) {
-    *namePtr = NULL;
-    return 1;
-  }
-  *namePtr = ptr;
-  for (;;) {
-    c = toAscii(enc, ptr, end);
-    if (c == -1) {
-      *nextTokPtr = ptr;
-      return 0;
-    }
-    if (c == ASCII_EQUALS) {
-      *nameEndPtr = ptr;
-      break;
-    }
-    if (isSpace(c)) {
-      *nameEndPtr = ptr;
-      do {
-        ptr += enc->minBytesPerChar;
-      } while (isSpace(c = toAscii(enc, ptr, end)));
-      if (c != ASCII_EQUALS) {
-        *nextTokPtr = ptr;
-        return 0;
-      }
-      break;
-    }
-    ptr += enc->minBytesPerChar;
-  }
-  if (ptr == *namePtr) {
-    *nextTokPtr = ptr;
-    return 0;
-  }
-  ptr += enc->minBytesPerChar;
-  c = toAscii(enc, ptr, end);
-  while (isSpace(c)) {
-    ptr += enc->minBytesPerChar;
-    c = toAscii(enc, ptr, end);
-  }
-  if (c != ASCII_QUOT && c != ASCII_APOS) {
-    *nextTokPtr = ptr;
-    return 0;
-  }
-  open = (char)c;
-  ptr += enc->minBytesPerChar;
-  *valPtr = ptr;
-  for (;; ptr += enc->minBytesPerChar) {
-    c = toAscii(enc, ptr, end);
-    if (c == open)
-      break;
-    if (!(ASCII_a <= c && c <= ASCII_z)
-        && !(ASCII_A <= c && c <= ASCII_Z)
-        && !(ASCII_0 <= c && c <= ASCII_9)
-        && c != ASCII_PERIOD
-        && c != ASCII_MINUS
-        && c != ASCII_UNDERSCORE) {
-      *nextTokPtr = ptr;
-      return 0;
-    }
-  }
-  *nextTokPtr = ptr + enc->minBytesPerChar;
-  return 1;
-}
-
-static const char KW_version[] = {
-  ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0'
-};
-
-static const char KW_encoding[] = {
-  ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, ASCII_i, ASCII_n, ASCII_g, '\0'
-};
-
-static const char KW_standalone[] = {
-  ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, ASCII_l, ASCII_o,
-  ASCII_n, ASCII_e, '\0'
-};
-
-static const char KW_yes[] = {
-  ASCII_y, ASCII_e, ASCII_s,  '\0'
-};
-
-static const char KW_no[] = {
-  ASCII_n, ASCII_o,  '\0'
-};
-
-static int
-doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *,
-                                                 const char *,
-                                                 const char *),
-               int isGeneralTextEntity,
-               const ENCODING *enc,
-               const char *ptr,
-               const char *end,
-               const char **badPtr,
-               const char **versionPtr,
-               const char **versionEndPtr,
-               const char **encodingName,
-               const ENCODING **encoding,
-               int *standalone)
-{
-  const char *val = NULL;
-  const char *name = NULL;
-  const char *nameEnd = NULL;
-  ptr += 5 * enc->minBytesPerChar;
-  end -= 2 * enc->minBytesPerChar;
-  if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)
-      || !name) {
-    *badPtr = ptr;
-    return 0;
-  }
-  if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_version)) {
-    if (!isGeneralTextEntity) {
-      *badPtr = name;
-      return 0;
-    }
-  }
-  else {
-    if (versionPtr)
-      *versionPtr = val;
-    if (versionEndPtr)
-      *versionEndPtr = ptr;
-    if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) {
-      *badPtr = ptr;
-      return 0;
-    }
-    if (!name) {
-      if (isGeneralTextEntity) {
-        /* a TextDecl must have an EncodingDecl */
-        *badPtr = ptr;
-        return 0;
-      }
-      return 1;
-    }
-  }
-  if (XmlNameMatchesAscii(enc, name, nameEnd, KW_encoding)) {
-    int c = toAscii(enc, val, end);
-    if (!(ASCII_a <= c && c <= ASCII_z) && !(ASCII_A <= c && c <= ASCII_Z)) {
-      *badPtr = val;
-      return 0;
-    }
-    if (encodingName)
-      *encodingName = val;
-    if (encoding)
-      *encoding = encodingFinder(enc, val, ptr - enc->minBytesPerChar);
-    if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) {
-      *badPtr = ptr;
-      return 0;
-    }
-    if (!name)
-      return 1;
-  }
-  if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone)
-      || isGeneralTextEntity) {
-    *badPtr = name;
-    return 0;
-  }
-  if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_yes)) {
-    if (standalone)
-      *standalone = 1;
-  }
-  else if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_no)) {
-    if (standalone)
-      *standalone = 0;
-  }
-  else {
-    *badPtr = val;
-    return 0;
-  }
-  while (isSpace(toAscii(enc, ptr, end)))
-    ptr += enc->minBytesPerChar;
-  if (ptr != end) {
-    *badPtr = ptr;
-    return 0;
-  }
-  return 1;
-}
-
-static int FASTCALL
-checkCharRefNumber(int result)
-{
-  switch (result >> 8) {
-  case 0xD8: case 0xD9: case 0xDA: case 0xDB:
-  case 0xDC: case 0xDD: case 0xDE: case 0xDF:
-    return -1;
-  case 0:
-    if (latin1_encoding.type[result] == BT_NONXML)
-      return -1;
-    break;
-  case 0xFF:
-    if (result == 0xFFFE || result == 0xFFFF)
-      return -1;
-    break;
-  }
-  return result;
-}
-
-int FASTCALL
-XmlUtf8Encode(int c, char *buf)
-{
-  enum {
-    /* minN is minimum legal resulting value for N byte sequence */
-    min2 = 0x80,
-    min3 = 0x800,
-    min4 = 0x10000
-  };
-
-  if (c < 0)
-    return 0;
-  if (c < min2) {
-    buf[0] = (char)(c | UTF8_cval1);
-    return 1;
-  }
-  if (c < min3) {
-    buf[0] = (char)((c >> 6) | UTF8_cval2);
-    buf[1] = (char)((c & 0x3f) | 0x80);
-    return 2;
-  }
-  if (c < min4) {
-    buf[0] = (char)((c >> 12) | UTF8_cval3);
-    buf[1] = (char)(((c >> 6) & 0x3f) | 0x80);
-    buf[2] = (char)((c & 0x3f) | 0x80);
-    return 3;
-  }
-  if (c < 0x110000) {
-    buf[0] = (char)((c >> 18) | UTF8_cval4);
-    buf[1] = (char)(((c >> 12) & 0x3f) | 0x80);
-    buf[2] = (char)(((c >> 6) & 0x3f) | 0x80);
-    buf[3] = (char)((c & 0x3f) | 0x80);
-    return 4;
-  }
-  return 0;
-}
-
-int FASTCALL
-XmlUtf16Encode(int charNum, unsigned short *buf)
-{
-  if (charNum < 0)
-    return 0;
-  if (charNum < 0x10000) {
-    buf[0] = (unsigned short)charNum;
-    return 1;
-  }
-  if (charNum < 0x110000) {
-    charNum -= 0x10000;
-    buf[0] = (unsigned short)((charNum >> 10) + 0xD800);
-    buf[1] = (unsigned short)((charNum & 0x3FF) + 0xDC00);
-    return 2;
-  }
-  return 0;
-}
-
-struct unknown_encoding {
-  struct normal_encoding normal;
-  CONVERTER convert;
-  void *userData;
-  unsigned short utf16[256];
-  char utf8[256][4];
-};
-
-#define AS_UNKNOWN_ENCODING(enc)  ((const struct unknown_encoding *) (enc))
-
-int
-XmlSizeOfUnknownEncoding(void)
-{
-  return sizeof(struct unknown_encoding);
-}
-
-static int PTRFASTCALL
-unknown_isName(const ENCODING *enc, const char *p)
-{
-  const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
-  int c = uenc->convert(uenc->userData, p);
-  if (c & ~0xFFFF)
-    return 0;
-  return UCS2_GET_NAMING(namePages, c >> 8, c & 0xFF);
-}
-
-static int PTRFASTCALL
-unknown_isNmstrt(const ENCODING *enc, const char *p)
-{
-  const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
-  int c = uenc->convert(uenc->userData, p);
-  if (c & ~0xFFFF)
-    return 0;
-  return UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xFF);
-}
-
-static int PTRFASTCALL
-unknown_isInvalid(const ENCODING *enc, const char *p)
-{
-  const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
-  int c = uenc->convert(uenc->userData, p);
-  return (c & ~0xFFFF) || checkCharRefNumber(c) < 0;
-}
-
-static void PTRCALL
-unknown_toUtf8(const ENCODING *enc,
-               const char **fromP, const char *fromLim,
-               char **toP, const char *toLim)
-{
-  const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
-  char buf[XML_UTF8_ENCODE_MAX];
-  for (;;) {
-    const char *utf8;
-    int n;
-    if (*fromP == fromLim)
-      break;
-    utf8 = uenc->utf8[(unsigned char)**fromP];
-    n = *utf8++;
-    if (n == 0) {
-      int c = uenc->convert(uenc->userData, *fromP);
-      n = XmlUtf8Encode(c, buf);
-      if (n > toLim - *toP)
-        break;
-      utf8 = buf;
-      *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP]
-                 - (BT_LEAD2 - 2));
-    }
-    else {
-      if (n > toLim - *toP)
-        break;
-      (*fromP)++;
-    }
-    do {
-      *(*toP)++ = *utf8++;
-    } while (--n != 0);
-  }
-}
-
-static void PTRCALL
-unknown_toUtf16(const ENCODING *enc,
-                const char **fromP, const char *fromLim,
-                unsigned short **toP, const unsigned short *toLim)
-{
-  const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc);
-  while (*fromP != fromLim && *toP != toLim) {
-    unsigned short c = uenc->utf16[(unsigned char)**fromP];
-    if (c == 0) {
-      c = (unsigned short)
-          uenc->convert(uenc->userData, *fromP);
-      *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP]
-                 - (BT_LEAD2 - 2));
-    }
-    else
-      (*fromP)++;
-    *(*toP)++ = c;
-  }
-}
-
-ENCODING *
-XmlInitUnknownEncoding(void *mem,
-                       int *table,
-                       CONVERTER convert, 
-                       void *userData)
-{
-  int i;
-  struct unknown_encoding *e = (struct unknown_encoding *)mem;
-  for (i = 0; i < (int)sizeof(struct normal_encoding); i++)
-    ((char *)mem)[i] = ((char *)&latin1_encoding)[i];
-  for (i = 0; i < 128; i++)
-    if (latin1_encoding.type[i] != BT_OTHER
-        && latin1_encoding.type[i] != BT_NONXML
-        && table[i] != i)
-      return 0;
-  for (i = 0; i < 256; i++) {
-    int c = table[i];
-    if (c == -1) {
-      e->normal.type[i] = BT_MALFORM;
-      /* This shouldn't really get used. */
-      e->utf16[i] = 0xFFFF;
-      e->utf8[i][0] = 1;
-      e->utf8[i][1] = 0;
-    }
-    else if (c < 0) {
-      if (c < -4)
-        return 0;
-      e->normal.type[i] = (unsigned char)(BT_LEAD2 - (c + 2));
-      e->utf8[i][0] = 0;
-      e->utf16[i] = 0;
-    }
-    else if (c < 0x80) {
-      if (latin1_encoding.type[c] != BT_OTHER
-          && latin1_encoding.type[c] != BT_NONXML
-          && c != i)
-        return 0;
-      e->normal.type[i] = latin1_encoding.type[c];
-      e->utf8[i][0] = 1;
-      e->utf8[i][1] = (char)c;
-      e->utf16[i] = (unsigned short)(c == 0 ? 0xFFFF : c);
-    }
-    else if (checkCharRefNumber(c) < 0) {
-      e->normal.type[i] = BT_NONXML;
-      /* This shouldn't really get used. */
-      e->utf16[i] = 0xFFFF;
-      e->utf8[i][0] = 1;
-      e->utf8[i][1] = 0;
-    }
-    else {
-      if (c > 0xFFFF)
-        return 0;
-      if (UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xff))
-        e->normal.type[i] = BT_NMSTRT;
-      else if (UCS2_GET_NAMING(namePages, c >> 8, c & 0xff))
-        e->normal.type[i] = BT_NAME;
-      else
-        e->normal.type[i] = BT_OTHER;
-      e->utf8[i][0] = (char)XmlUtf8Encode(c, e->utf8[i] + 1);
-      e->utf16[i] = (unsigned short)c;
-    }
-  }
-  e->userData = userData;
-  e->convert = convert;
-  if (convert) {
-    e->normal.isName2 = unknown_isName;
-    e->normal.isName3 = unknown_isName;
-    e->normal.isName4 = unknown_isName;
-    e->normal.isNmstrt2 = unknown_isNmstrt;
-    e->normal.isNmstrt3 = unknown_isNmstrt;
-    e->normal.isNmstrt4 = unknown_isNmstrt;
-    e->normal.isInvalid2 = unknown_isInvalid;
-    e->normal.isInvalid3 = unknown_isInvalid;
-    e->normal.isInvalid4 = unknown_isInvalid;
-  }
-  e->normal.enc.utf8Convert = unknown_toUtf8;
-  e->normal.enc.utf16Convert = unknown_toUtf16;
-  return &(e->normal.enc);
-}
-
-/* If this enumeration is changed, getEncodingIndex and encodings
-must also be changed. */
-enum {
-  UNKNOWN_ENC = -1,
-  ISO_8859_1_ENC = 0,
-  US_ASCII_ENC,
-  UTF_8_ENC,
-  UTF_16_ENC,
-  UTF_16BE_ENC,
-  UTF_16LE_ENC,
-  /* must match encodingNames up to here */
-  NO_ENC
-};
-
-static const char KW_ISO_8859_1[] = {
-  ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, ASCII_5, ASCII_9,
-  ASCII_MINUS, ASCII_1, '\0'
-};
-static const char KW_US_ASCII[] = {
-  ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, ASCII_C, ASCII_I, ASCII_I,
-  '\0'
-};
-static const char KW_UTF_8[] =  {
-  ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_8, '\0'
-};
-static const char KW_UTF_16[] = {
-  ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, '\0'
-};
-static const char KW_UTF_16BE[] = {
-  ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_B, ASCII_E,
-  '\0'
-};
-static const char KW_UTF_16LE[] = {
-  ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_L, ASCII_E,
-  '\0'
-};
-
-static int FASTCALL
-getEncodingIndex(const char *name)
-{
-  static const char * const encodingNames[] = {
-    KW_ISO_8859_1,
-    KW_US_ASCII,
-    KW_UTF_8,
-    KW_UTF_16,
-    KW_UTF_16BE,
-    KW_UTF_16LE,
-  };
-  int i;
-  if (name == NULL)
-    return NO_ENC;
-  for (i = 0; i < (int)(sizeof(encodingNames)/sizeof(encodingNames[0])); i++)
-    if (streqci(name, encodingNames[i]))
-      return i;
-  return UNKNOWN_ENC;
-}
-
-/* For binary compatibility, we store the index of the encoding
-   specified at initialization in the isUtf16 member.
-*/
-
-#define INIT_ENC_INDEX(enc) ((int)(enc)->initEnc.isUtf16)
-#define SET_INIT_ENC_INDEX(enc, i) ((enc)->initEnc.isUtf16 = (char)i)
-
-/* This is what detects the encoding.  encodingTable maps from
-   encoding indices to encodings; INIT_ENC_INDEX(enc) is the index of
-   the external (protocol) specified encoding; state is
-   XML_CONTENT_STATE if we're parsing an external text entity, and
-   XML_PROLOG_STATE otherwise.
-*/
-
-
-static int
-initScan(const ENCODING * const *encodingTable,
-         const INIT_ENCODING *enc,
-         int state,
-         const char *ptr,
-         const char *end,
-         const char **nextTokPtr)
-{
-  const ENCODING **encPtr;
-
-  if (ptr == end)
-    return XML_TOK_NONE;
-  encPtr = enc->encPtr;
-  if (ptr + 1 == end) {
-    /* only a single byte available for auto-detection */
-#ifndef XML_DTD /* FIXME */
-    /* a well-formed document entity must have more than one byte */
-    if (state != XML_CONTENT_STATE)
-      return XML_TOK_PARTIAL;
-#endif
-    /* so we're parsing an external text entity... */
-    /* if UTF-16 was externally specified, then we need at least 2 bytes */
-    switch (INIT_ENC_INDEX(enc)) {
-    case UTF_16_ENC:
-    case UTF_16LE_ENC:
-    case UTF_16BE_ENC:
-      return XML_TOK_PARTIAL;
-    }
-    switch ((unsigned char)*ptr) {
-    case 0xFE:
-    case 0xFF:
-    case 0xEF: /* possibly first byte of UTF-8 BOM */
-      if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC
-          && state == XML_CONTENT_STATE)
-        break;
-      /* fall through */
-    case 0x00:
-    case 0x3C:
-      return XML_TOK_PARTIAL;
-    }
-  }
-  else {
-    switch (((unsigned char)ptr[0] << 8) | (unsigned char)ptr[1]) {
-    case 0xFEFF:
-      if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC
-          && state == XML_CONTENT_STATE)
-        break;
-      *nextTokPtr = ptr + 2;
-      *encPtr = encodingTable[UTF_16BE_ENC];
-      return XML_TOK_BOM;
-    /* 00 3C is handled in the default case */
-    case 0x3C00:
-      if ((INIT_ENC_INDEX(enc) == UTF_16BE_ENC
-           || INIT_ENC_INDEX(enc) == UTF_16_ENC)
-          && state == XML_CONTENT_STATE)
-        break;
-      *encPtr = encodingTable[UTF_16LE_ENC];
-      return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
-    case 0xFFFE:
-      if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC
-          && state == XML_CONTENT_STATE)
-        break;
-      *nextTokPtr = ptr + 2;
-      *encPtr = encodingTable[UTF_16LE_ENC];
-      return XML_TOK_BOM;
-    case 0xEFBB:
-      /* Maybe a UTF-8 BOM (EF BB BF) */
-      /* If there's an explicitly specified (external) encoding
-         of ISO-8859-1 or some flavour of UTF-16
-         and this is an external text entity,
-         don't look for the BOM,
-         because it might be a legal data.
-      */
-      if (state == XML_CONTENT_STATE) {
-        int e = INIT_ENC_INDEX(enc);
-        if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC
-            || e == UTF_16LE_ENC || e == UTF_16_ENC)
-          break;
-      }
-      if (ptr + 2 == end)
-        return XML_TOK_PARTIAL;
-      if ((unsigned char)ptr[2] == 0xBF) {
-        *nextTokPtr = ptr + 3;
-        *encPtr = encodingTable[UTF_8_ENC];
-        return XML_TOK_BOM;
-      }
-      break;
-    default:
-      if (ptr[0] == '\0') {
-        /* 0 isn't a legal data character. Furthermore a document
-           entity can only start with ASCII characters.  So the only
-           way this can fail to be big-endian UTF-16 if it it's an
-           external parsed general entity that's labelled as
-           UTF-16LE.
-        */
-        if (state == XML_CONTENT_STATE && INIT_ENC_INDEX(enc) == UTF_16LE_ENC)
-          break;
-        *encPtr = encodingTable[UTF_16BE_ENC];
-        return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
-      }
-      else if (ptr[1] == '\0') {
-        /* We could recover here in the case:
-            - parsing an external entity
-            - second byte is 0
-            - no externally specified encoding
-            - no encoding declaration
-           by assuming UTF-16LE.  But we don't, because this would mean when
-           presented just with a single byte, we couldn't reliably determine
-           whether we needed further bytes.
-        */
-        if (state == XML_CONTENT_STATE)
-          break;
-        *encPtr = encodingTable[UTF_16LE_ENC];
-        return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
-      }
-      break;
-    }
-  }
-  *encPtr = encodingTable[INIT_ENC_INDEX(enc)];
-  return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
-}
-
-
-#define NS(x) x
-#define ns(x) x
-#include "xmltok_ns.c"
-#undef NS
-#undef ns
-
-#ifdef XML_NS
-
-#define NS(x) x ## NS
-#define ns(x) x ## _ns
-
-#include "xmltok_ns.c"
-
-#undef NS
-#undef ns
-
-ENCODING *
-XmlInitUnknownEncodingNS(void *mem,
-                         int *table,
-                         CONVERTER convert, 
-                         void *userData)
-{
-  ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData);
-  if (enc)
-    ((struct normal_encoding *)enc)->type[ASCII_COLON] = BT_COLON;
-  return enc;
-}
-
-#endif /* XML_NS */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok.h
deleted file mode 100644
index 497611f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok.h
+++ /dev/null
@@ -1,316 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#ifndef XmlTok_INCLUDED
-#define XmlTok_INCLUDED 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* The following token may be returned by XmlContentTok */
-#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be
-                                    start of illegal ]]> sequence */
-/* The following tokens may be returned by both XmlPrologTok and
-   XmlContentTok.
-*/
-#define XML_TOK_NONE -4          /* The string to be scanned is empty */
-#define XML_TOK_TRAILING_CR -3   /* A CR at the end of the scan;
-                                    might be part of CRLF sequence */
-#define XML_TOK_PARTIAL_CHAR -2  /* only part of a multibyte sequence */
-#define XML_TOK_PARTIAL -1       /* only part of a token */
-#define XML_TOK_INVALID 0
-
-/* The following tokens are returned by XmlContentTok; some are also
-   returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok.
-*/
-#define XML_TOK_START_TAG_WITH_ATTS 1
-#define XML_TOK_START_TAG_NO_ATTS 2
-#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag <e/> */
-#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4
-#define XML_TOK_END_TAG 5
-#define XML_TOK_DATA_CHARS 6
-#define XML_TOK_DATA_NEWLINE 7
-#define XML_TOK_CDATA_SECT_OPEN 8
-#define XML_TOK_ENTITY_REF 9
-#define XML_TOK_CHAR_REF 10               /* numeric character reference */
-
-/* The following tokens may be returned by both XmlPrologTok and
-   XmlContentTok.
-*/
-#define XML_TOK_PI 11                     /* processing instruction */
-#define XML_TOK_XML_DECL 12               /* XML decl or text decl */
-#define XML_TOK_COMMENT 13
-#define XML_TOK_BOM 14                    /* Byte order mark */
-
-/* The following tokens are returned only by XmlPrologTok */
-#define XML_TOK_PROLOG_S 15
-#define XML_TOK_DECL_OPEN 16              /* <!foo */
-#define XML_TOK_DECL_CLOSE 17             /* > */
-#define XML_TOK_NAME 18
-#define XML_TOK_NMTOKEN 19
-#define XML_TOK_POUND_NAME 20             /* #name */
-#define XML_TOK_OR 21                     /* | */
-#define XML_TOK_PERCENT 22
-#define XML_TOK_OPEN_PAREN 23
-#define XML_TOK_CLOSE_PAREN 24
-#define XML_TOK_OPEN_BRACKET 25
-#define XML_TOK_CLOSE_BRACKET 26
-#define XML_TOK_LITERAL 27
-#define XML_TOK_PARAM_ENTITY_REF 28
-#define XML_TOK_INSTANCE_START 29
-
-/* The following occur only in element type declarations */
-#define XML_TOK_NAME_QUESTION 30          /* name? */
-#define XML_TOK_NAME_ASTERISK 31          /* name* */
-#define XML_TOK_NAME_PLUS 32              /* name+ */
-#define XML_TOK_COND_SECT_OPEN 33         /* <![ */
-#define XML_TOK_COND_SECT_CLOSE 34        /* ]]> */
-#define XML_TOK_CLOSE_PAREN_QUESTION 35   /* )? */
-#define XML_TOK_CLOSE_PAREN_ASTERISK 36   /* )* */
-#define XML_TOK_CLOSE_PAREN_PLUS 37       /* )+ */
-#define XML_TOK_COMMA 38
-
-/* The following token is returned only by XmlAttributeValueTok */
-#define XML_TOK_ATTRIBUTE_VALUE_S 39
-
-/* The following token is returned only by XmlCdataSectionTok */
-#define XML_TOK_CDATA_SECT_CLOSE 40
-
-/* With namespace processing this is returned by XmlPrologTok for a
-   name with a colon.
-*/
-#define XML_TOK_PREFIXED_NAME 41
-
-#ifdef XML_DTD
-#define XML_TOK_IGNORE_SECT 42
-#endif /* XML_DTD */
-
-#ifdef XML_DTD
-#define XML_N_STATES 4
-#else /* not XML_DTD */
-#define XML_N_STATES 3
-#endif /* not XML_DTD */
-
-#define XML_PROLOG_STATE 0
-#define XML_CONTENT_STATE 1
-#define XML_CDATA_SECTION_STATE 2
-#ifdef XML_DTD
-#define XML_IGNORE_SECTION_STATE 3
-#endif /* XML_DTD */
-
-#define XML_N_LITERAL_TYPES 2
-#define XML_ATTRIBUTE_VALUE_LITERAL 0
-#define XML_ENTITY_VALUE_LITERAL 1
-
-/* The size of the buffer passed to XmlUtf8Encode must be at least this. */
-#define XML_UTF8_ENCODE_MAX 4
-/* The size of the buffer passed to XmlUtf16Encode must be at least this. */
-#define XML_UTF16_ENCODE_MAX 2
-
-typedef struct position {
-  /* first line and first column are 0 not 1 */
-  XML_Size lineNumber;
-  XML_Size columnNumber;
-} POSITION;
-
-typedef struct {
-  const char *name;
-  const char *valuePtr;
-  const char *valueEnd;
-  char normalized;
-} ATTRIBUTE;
-
-struct encoding;
-typedef struct encoding ENCODING;
-
-typedef int (PTRCALL *SCANNER)(const ENCODING *,
-                               const char *,
-                               const char *,
-                               const char **);
-
-struct encoding {
-  SCANNER scanners[XML_N_STATES];
-  SCANNER literalScanners[XML_N_LITERAL_TYPES];
-  int (PTRCALL *sameName)(const ENCODING *,
-                          const char *,
-                          const char *);
-  int (PTRCALL *nameMatchesAscii)(const ENCODING *,
-                                  const char *,
-                                  const char *,
-                                  const char *);
-  int (PTRFASTCALL *nameLength)(const ENCODING *, const char *);
-  const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *);
-  int (PTRCALL *getAtts)(const ENCODING *enc,
-                         const char *ptr,
-                         int attsMax,
-                         ATTRIBUTE *atts);
-  int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr);
-  int (PTRCALL *predefinedEntityName)(const ENCODING *,
-                                      const char *,
-                                      const char *);
-  void (PTRCALL *updatePosition)(const ENCODING *,
-                                 const char *ptr,
-                                 const char *end,
-                                 POSITION *);
-  int (PTRCALL *isPublicId)(const ENCODING *enc,
-                            const char *ptr,
-                            const char *end,
-                            const char **badPtr);
-  void (PTRCALL *utf8Convert)(const ENCODING *enc,
-                              const char **fromP,
-                              const char *fromLim,
-                              char **toP,
-                              const char *toLim);
-  void (PTRCALL *utf16Convert)(const ENCODING *enc,
-                               const char **fromP,
-                               const char *fromLim,
-                               unsigned short **toP,
-                               const unsigned short *toLim);
-  int minBytesPerChar;
-  char isUtf8;
-  char isUtf16;
-};
-
-/* Scan the string starting at ptr until the end of the next complete
-   token, but do not scan past eptr.  Return an integer giving the
-   type of token.
-
-   Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set.
-
-   Return XML_TOK_PARTIAL when the string does not contain a complete
-   token; nextTokPtr will not be set.
-
-   Return XML_TOK_INVALID when the string does not start a valid
-   token; nextTokPtr will be set to point to the character which made
-   the token invalid.
-
-   Otherwise the string starts with a valid token; nextTokPtr will be
-   set to point to the character following the end of that token.
-
-   Each data character counts as a single token, but adjacent data
-   characters may be returned together.  Similarly for characters in
-   the prolog outside literals, comments and processing instructions.
-*/
-
-
-#define XmlTok(enc, state, ptr, end, nextTokPtr) \
-  (((enc)->scanners[state])(enc, ptr, end, nextTokPtr))
-
-#define XmlPrologTok(enc, ptr, end, nextTokPtr) \
-   XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr)
-
-#define XmlContentTok(enc, ptr, end, nextTokPtr) \
-   XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr)
-
-#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \
-   XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr)
-
-#ifdef XML_DTD
-
-#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \
-   XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr)
-
-#endif /* XML_DTD */
-
-/* This is used for performing a 2nd-level tokenization on the content
-   of a literal that has already been returned by XmlTok.
-*/
-#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \
-  (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr))
-
-#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \
-   XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr)
-
-#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \
-   XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr)
-
-#define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2))
-
-#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \
-  (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2))
-
-#define XmlNameLength(enc, ptr) \
-  (((enc)->nameLength)(enc, ptr))
-
-#define XmlSkipS(enc, ptr) \
-  (((enc)->skipS)(enc, ptr))
-
-#define XmlGetAttributes(enc, ptr, attsMax, atts) \
-  (((enc)->getAtts)(enc, ptr, attsMax, atts))
-
-#define XmlCharRefNumber(enc, ptr) \
-  (((enc)->charRefNumber)(enc, ptr))
-
-#define XmlPredefinedEntityName(enc, ptr, end) \
-  (((enc)->predefinedEntityName)(enc, ptr, end))
-
-#define XmlUpdatePosition(enc, ptr, end, pos) \
-  (((enc)->updatePosition)(enc, ptr, end, pos))
-
-#define XmlIsPublicId(enc, ptr, end, badPtr) \
-  (((enc)->isPublicId)(enc, ptr, end, badPtr))
-
-#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \
-  (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim))
-
-#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \
-  (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim))
-
-typedef struct {
-  ENCODING initEnc;
-  const ENCODING **encPtr;
-} INIT_ENCODING;
-
-int XmlParseXmlDecl(int isGeneralTextEntity,
-                    const ENCODING *enc,
-                    const char *ptr,
-                    const char *end,
-                    const char **badPtr,
-                    const char **versionPtr,
-                    const char **versionEndPtr,
-                    const char **encodingNamePtr,
-                    const ENCODING **namedEncodingPtr,
-                    int *standalonePtr);
-
-int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name);
-const ENCODING *XmlGetUtf8InternalEncoding(void);
-const ENCODING *XmlGetUtf16InternalEncoding(void);
-int FASTCALL XmlUtf8Encode(int charNumber, char *buf);
-int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf);
-int XmlSizeOfUnknownEncoding(void);
-
-
-typedef int (XMLCALL *CONVERTER) (void *userData, const char *p);
-
-ENCODING *
-XmlInitUnknownEncoding(void *mem,
-                       int *table,
-                       CONVERTER convert,
-                       void *userData);
-
-int XmlParseXmlDeclNS(int isGeneralTextEntity,
-                      const ENCODING *enc,
-                      const char *ptr,
-                      const char *end,
-                      const char **badPtr,
-                      const char **versionPtr,
-                      const char **versionEndPtr,
-                      const char **encodingNamePtr,
-                      const ENCODING **namedEncodingPtr,
-                      int *standalonePtr);
-
-int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name);
-const ENCODING *XmlGetUtf8InternalEncodingNS(void);
-const ENCODING *XmlGetUtf16InternalEncodingNS(void);
-ENCODING *
-XmlInitUnknownEncodingNS(void *mem,
-                         int *table,
-                         CONVERTER convert,
-                         void *userData);
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* not XmlTok_INCLUDED */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_impl.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_impl.c
deleted file mode 100644
index 5e4a026..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_impl.c
+++ /dev/null
@@ -1,1779 +0,0 @@
-/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-   See the file COPYING for copying permission.
-*/
-
-#ifndef IS_INVALID_CHAR
-#define IS_INVALID_CHAR(enc, ptr, n) (0)
-#endif
-
-#define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \
-    case BT_LEAD ## n: \
-      if (end - ptr < n) \
-        return XML_TOK_PARTIAL_CHAR; \
-      if (IS_INVALID_CHAR(enc, ptr, n)) { \
-        *(nextTokPtr) = (ptr); \
-        return XML_TOK_INVALID; \
-      } \
-      ptr += n; \
-      break;
-
-#define INVALID_CASES(ptr, nextTokPtr) \
-  INVALID_LEAD_CASE(2, ptr, nextTokPtr) \
-  INVALID_LEAD_CASE(3, ptr, nextTokPtr) \
-  INVALID_LEAD_CASE(4, ptr, nextTokPtr) \
-  case BT_NONXML: \
-  case BT_MALFORM: \
-  case BT_TRAIL: \
-    *(nextTokPtr) = (ptr); \
-    return XML_TOK_INVALID;
-
-#define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \
-   case BT_LEAD ## n: \
-     if (end - ptr < n) \
-       return XML_TOK_PARTIAL_CHAR; \
-     if (!IS_NAME_CHAR(enc, ptr, n)) { \
-       *nextTokPtr = ptr; \
-       return XML_TOK_INVALID; \
-     } \
-     ptr += n; \
-     break;
-
-#define CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) \
-  case BT_NONASCII: \
-    if (!IS_NAME_CHAR_MINBPC(enc, ptr)) { \
-      *nextTokPtr = ptr; \
-      return XML_TOK_INVALID; \
-    } \
-  case BT_NMSTRT: \
-  case BT_HEX: \
-  case BT_DIGIT: \
-  case BT_NAME: \
-  case BT_MINUS: \
-    ptr += MINBPC(enc); \
-    break; \
-  CHECK_NAME_CASE(2, enc, ptr, end, nextTokPtr) \
-  CHECK_NAME_CASE(3, enc, ptr, end, nextTokPtr) \
-  CHECK_NAME_CASE(4, enc, ptr, end, nextTokPtr)
-
-#define CHECK_NMSTRT_CASE(n, enc, ptr, end, nextTokPtr) \
-   case BT_LEAD ## n: \
-     if (end - ptr < n) \
-       return XML_TOK_PARTIAL_CHAR; \
-     if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \
-       *nextTokPtr = ptr; \
-       return XML_TOK_INVALID; \
-     } \
-     ptr += n; \
-     break;
-
-#define CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) \
-  case BT_NONASCII: \
-    if (!IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { \
-      *nextTokPtr = ptr; \
-      return XML_TOK_INVALID; \
-    } \
-  case BT_NMSTRT: \
-  case BT_HEX: \
-    ptr += MINBPC(enc); \
-    break; \
-  CHECK_NMSTRT_CASE(2, enc, ptr, end, nextTokPtr) \
-  CHECK_NMSTRT_CASE(3, enc, ptr, end, nextTokPtr) \
-  CHECK_NMSTRT_CASE(4, enc, ptr, end, nextTokPtr)
-
-#ifndef PREFIX
-#define PREFIX(ident) ident
-#endif
-
-/* ptr points to character following "<!-" */
-
-static int PTRCALL
-PREFIX(scanComment)(const ENCODING *enc, const char *ptr,
-                    const char *end, const char **nextTokPtr)
-{
-  if (ptr != end) {
-    if (!CHAR_MATCHES(enc, ptr, ASCII_MINUS)) {
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-    ptr += MINBPC(enc);
-    while (ptr != end) {
-      switch (BYTE_TYPE(enc, ptr)) {
-      INVALID_CASES(ptr, nextTokPtr)
-      case BT_MINUS:
-        if ((ptr += MINBPC(enc)) == end)
-          return XML_TOK_PARTIAL;
-        if (CHAR_MATCHES(enc, ptr, ASCII_MINUS)) {
-          if ((ptr += MINBPC(enc)) == end)
-            return XML_TOK_PARTIAL;
-          if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-            *nextTokPtr = ptr;
-            return XML_TOK_INVALID;
-          }
-          *nextTokPtr = ptr + MINBPC(enc);
-          return XML_TOK_COMMENT;
-        }
-        break;
-      default:
-        ptr += MINBPC(enc);
-        break;
-      }
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "<!" */
-
-static int PTRCALL
-PREFIX(scanDecl)(const ENCODING *enc, const char *ptr,
-                 const char *end, const char **nextTokPtr)
-{
-  if (ptr == end)
-    return XML_TOK_PARTIAL;
-  switch (BYTE_TYPE(enc, ptr)) {
-  case BT_MINUS:
-    return PREFIX(scanComment)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-  case BT_LSQB:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_COND_SECT_OPEN;
-  case BT_NMSTRT:
-  case BT_HEX:
-    ptr += MINBPC(enc);
-    break;
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    case BT_PERCNT:
-      if (ptr + MINBPC(enc) == end)
-        return XML_TOK_PARTIAL;
-      /* don't allow <!ENTITY% foo "whatever"> */
-      switch (BYTE_TYPE(enc, ptr + MINBPC(enc))) {
-      case BT_S: case BT_CR: case BT_LF: case BT_PERCNT:
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      /* fall through */
-    case BT_S: case BT_CR: case BT_LF:
-      *nextTokPtr = ptr;
-      return XML_TOK_DECL_OPEN;
-    case BT_NMSTRT:
-    case BT_HEX:
-      ptr += MINBPC(enc);
-      break;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr,
-                      const char *end, int *tokPtr)
-{
-  int upper = 0;
-  *tokPtr = XML_TOK_PI;
-  if (end - ptr != MINBPC(enc)*3)
-    return 1;
-  switch (BYTE_TO_ASCII(enc, ptr)) {
-  case ASCII_x:
-    break;
-  case ASCII_X:
-    upper = 1;
-    break;
-  default:
-    return 1;
-  }
-  ptr += MINBPC(enc);
-  switch (BYTE_TO_ASCII(enc, ptr)) {
-  case ASCII_m:
-    break;
-  case ASCII_M:
-    upper = 1;
-    break;
-  default:
-    return 1;
-  }
-  ptr += MINBPC(enc);
-  switch (BYTE_TO_ASCII(enc, ptr)) {
-  case ASCII_l:
-    break;
-  case ASCII_L:
-    upper = 1;
-    break;
-  default:
-    return 1;
-  }
-  if (upper)
-    return 0;
-  *tokPtr = XML_TOK_XML_DECL;
-  return 1;
-}
-
-/* ptr points to character following "<?" */
-
-static int PTRCALL
-PREFIX(scanPi)(const ENCODING *enc, const char *ptr,
-               const char *end, const char **nextTokPtr)
-{
-  int tok;
-  const char *target = ptr;
-  if (ptr == end)
-    return XML_TOK_PARTIAL;
-  switch (BYTE_TYPE(enc, ptr)) {
-  CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-    case BT_S: case BT_CR: case BT_LF:
-      if (!PREFIX(checkPiTarget)(enc, target, ptr, &tok)) {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      ptr += MINBPC(enc);
-      while (ptr != end) {
-        switch (BYTE_TYPE(enc, ptr)) {
-        INVALID_CASES(ptr, nextTokPtr)
-        case BT_QUEST:
-          ptr += MINBPC(enc);
-          if (ptr == end)
-            return XML_TOK_PARTIAL;
-          if (CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-            *nextTokPtr = ptr + MINBPC(enc);
-            return tok;
-          }
-          break;
-        default:
-          ptr += MINBPC(enc);
-          break;
-        }
-      }
-      return XML_TOK_PARTIAL;
-    case BT_QUEST:
-      if (!PREFIX(checkPiTarget)(enc, target, ptr, &tok)) {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      ptr += MINBPC(enc);
-      if (ptr == end)
-        return XML_TOK_PARTIAL;
-      if (CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-        *nextTokPtr = ptr + MINBPC(enc);
-        return tok;
-      }
-      /* fall through */
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(scanCdataSection)(const ENCODING *enc, const char *ptr,
-                         const char *end, const char **nextTokPtr)
-{
-  static const char CDATA_LSQB[] = { ASCII_C, ASCII_D, ASCII_A,
-                                     ASCII_T, ASCII_A, ASCII_LSQB };
-  int i;
-  /* CDATA[ */
-  if (end - ptr < 6 * MINBPC(enc))
-    return XML_TOK_PARTIAL;
-  for (i = 0; i < 6; i++, ptr += MINBPC(enc)) {
-    if (!CHAR_MATCHES(enc, ptr, CDATA_LSQB[i])) {
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  *nextTokPtr = ptr;
-  return XML_TOK_CDATA_SECT_OPEN;
-}
-
-static int PTRCALL
-PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr,
-                        const char *end, const char **nextTokPtr)
-{
-  if (ptr == end)
-    return XML_TOK_NONE;
-  if (MINBPC(enc) > 1) {
-    size_t n = end - ptr;
-    if (n & (MINBPC(enc) - 1)) {
-      n &= ~(MINBPC(enc) - 1);
-      if (n == 0)
-        return XML_TOK_PARTIAL;
-      end = ptr + n;
-    }
-  }
-  switch (BYTE_TYPE(enc, ptr)) {
-  case BT_RSQB:
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return XML_TOK_PARTIAL;
-    if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB))
-      break;
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return XML_TOK_PARTIAL;
-    if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-      ptr -= MINBPC(enc);
-      break;
-    }
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_CDATA_SECT_CLOSE;
-  case BT_CR:
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return XML_TOK_PARTIAL;
-    if (BYTE_TYPE(enc, ptr) == BT_LF)
-      ptr += MINBPC(enc);
-    *nextTokPtr = ptr;
-    return XML_TOK_DATA_NEWLINE;
-  case BT_LF:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_DATA_NEWLINE;
-  INVALID_CASES(ptr, nextTokPtr)
-  default:
-    ptr += MINBPC(enc);
-    break;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: \
-      if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \
-        *nextTokPtr = ptr; \
-        return XML_TOK_DATA_CHARS; \
-      } \
-      ptr += n; \
-      break;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-    case BT_NONXML:
-    case BT_MALFORM:
-    case BT_TRAIL:
-    case BT_CR:
-    case BT_LF:
-    case BT_RSQB:
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    default:
-      ptr += MINBPC(enc);
-      break;
-    }
-  }
-  *nextTokPtr = ptr;
-  return XML_TOK_DATA_CHARS;
-}
-
-/* ptr points to character following "</" */
-
-static int PTRCALL
-PREFIX(scanEndTag)(const ENCODING *enc, const char *ptr,
-                   const char *end, const char **nextTokPtr)
-{
-  if (ptr == end)
-    return XML_TOK_PARTIAL;
-  switch (BYTE_TYPE(enc, ptr)) {
-  CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-    case BT_S: case BT_CR: case BT_LF:
-      for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) {
-        switch (BYTE_TYPE(enc, ptr)) {
-        case BT_S: case BT_CR: case BT_LF:
-          break;
-        case BT_GT:
-          *nextTokPtr = ptr + MINBPC(enc);
-          return XML_TOK_END_TAG;
-        default:
-          *nextTokPtr = ptr;
-          return XML_TOK_INVALID;
-        }
-      }
-      return XML_TOK_PARTIAL;
-#ifdef XML_NS
-    case BT_COLON:
-      /* no need to check qname syntax here,
-         since end-tag must match exactly */
-      ptr += MINBPC(enc);
-      break;
-#endif
-    case BT_GT:
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_END_TAG;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "&#X" */
-
-static int PTRCALL
-PREFIX(scanHexCharRef)(const ENCODING *enc, const char *ptr,
-                       const char *end, const char **nextTokPtr)
-{
-  if (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    case BT_DIGIT:
-    case BT_HEX:
-      break;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-    for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) {
-      switch (BYTE_TYPE(enc, ptr)) {
-      case BT_DIGIT:
-      case BT_HEX:
-        break;
-      case BT_SEMI:
-        *nextTokPtr = ptr + MINBPC(enc);
-        return XML_TOK_CHAR_REF;
-      default:
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "&#" */
-
-static int PTRCALL
-PREFIX(scanCharRef)(const ENCODING *enc, const char *ptr,
-                    const char *end, const char **nextTokPtr)
-{
-  if (ptr != end) {
-    if (CHAR_MATCHES(enc, ptr, ASCII_x))
-      return PREFIX(scanHexCharRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-    switch (BYTE_TYPE(enc, ptr)) {
-    case BT_DIGIT:
-      break;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-    for (ptr += MINBPC(enc); ptr != end; ptr += MINBPC(enc)) {
-      switch (BYTE_TYPE(enc, ptr)) {
-      case BT_DIGIT:
-        break;
-      case BT_SEMI:
-        *nextTokPtr = ptr + MINBPC(enc);
-        return XML_TOK_CHAR_REF;
-      default:
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "&" */
-
-static int PTRCALL
-PREFIX(scanRef)(const ENCODING *enc, const char *ptr, const char *end,
-                const char **nextTokPtr)
-{
-  if (ptr == end)
-    return XML_TOK_PARTIAL;
-  switch (BYTE_TYPE(enc, ptr)) {
-  CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-  case BT_NUM:
-    return PREFIX(scanCharRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-    case BT_SEMI:
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_ENTITY_REF;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following first character of attribute name */
-
-static int PTRCALL
-PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end,
-                 const char **nextTokPtr)
-{
-#ifdef XML_NS
-  int hadColon = 0;
-#endif
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-#ifdef XML_NS
-    case BT_COLON:
-      if (hadColon) {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      hadColon = 1;
-      ptr += MINBPC(enc);
-      if (ptr == end)
-        return XML_TOK_PARTIAL;
-      switch (BYTE_TYPE(enc, ptr)) {
-      CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-      default:
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      break;
-#endif
-    case BT_S: case BT_CR: case BT_LF:
-      for (;;) {
-        int t;
-
-        ptr += MINBPC(enc);
-        if (ptr == end)
-          return XML_TOK_PARTIAL;
-        t = BYTE_TYPE(enc, ptr);
-        if (t == BT_EQUALS)
-          break;
-        switch (t) {
-        case BT_S:
-        case BT_LF:
-        case BT_CR:
-          break;
-        default:
-          *nextTokPtr = ptr;
-          return XML_TOK_INVALID;
-        }
-      }
-    /* fall through */
-    case BT_EQUALS:
-      {
-        int open;
-#ifdef XML_NS
-        hadColon = 0;
-#endif
-        for (;;) {
-          ptr += MINBPC(enc);
-          if (ptr == end)
-            return XML_TOK_PARTIAL;
-          open = BYTE_TYPE(enc, ptr);
-          if (open == BT_QUOT || open == BT_APOS)
-            break;
-          switch (open) {
-          case BT_S:
-          case BT_LF:
-          case BT_CR:
-            break;
-          default:
-            *nextTokPtr = ptr;
-            return XML_TOK_INVALID;
-          }
-        }
-        ptr += MINBPC(enc);
-        /* in attribute value */
-        for (;;) {
-          int t;
-          if (ptr == end)
-            return XML_TOK_PARTIAL;
-          t = BYTE_TYPE(enc, ptr);
-          if (t == open)
-            break;
-          switch (t) {
-          INVALID_CASES(ptr, nextTokPtr)
-          case BT_AMP:
-            {
-              int tok = PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, &ptr);
-              if (tok <= 0) {
-                if (tok == XML_TOK_INVALID)
-                  *nextTokPtr = ptr;
-                return tok;
-              }
-              break;
-            }
-          case BT_LT:
-            *nextTokPtr = ptr;
-            return XML_TOK_INVALID;
-          default:
-            ptr += MINBPC(enc);
-            break;
-          }
-        }
-        ptr += MINBPC(enc);
-        if (ptr == end)
-          return XML_TOK_PARTIAL;
-        switch (BYTE_TYPE(enc, ptr)) {
-        case BT_S:
-        case BT_CR:
-        case BT_LF:
-          break;
-        case BT_SOL:
-          goto sol;
-        case BT_GT:
-          goto gt;
-        default:
-          *nextTokPtr = ptr;
-          return XML_TOK_INVALID;
-        }
-        /* ptr points to closing quote */
-        for (;;) {
-          ptr += MINBPC(enc);
-          if (ptr == end)
-            return XML_TOK_PARTIAL;
-          switch (BYTE_TYPE(enc, ptr)) {
-          CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-          case BT_S: case BT_CR: case BT_LF:
-            continue;
-          case BT_GT:
-          gt:
-            *nextTokPtr = ptr + MINBPC(enc);
-            return XML_TOK_START_TAG_WITH_ATTS;
-          case BT_SOL:
-          sol:
-            ptr += MINBPC(enc);
-            if (ptr == end)
-              return XML_TOK_PARTIAL;
-            if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-              *nextTokPtr = ptr;
-              return XML_TOK_INVALID;
-            }
-            *nextTokPtr = ptr + MINBPC(enc);
-            return XML_TOK_EMPTY_ELEMENT_WITH_ATTS;
-          default:
-            *nextTokPtr = ptr;
-            return XML_TOK_INVALID;
-          }
-          break;
-        }
-        break;
-      }
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-/* ptr points to character following "<" */
-
-static int PTRCALL
-PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end,
-               const char **nextTokPtr)
-{
-#ifdef XML_NS
-  int hadColon;
-#endif
-  if (ptr == end)
-    return XML_TOK_PARTIAL;
-  switch (BYTE_TYPE(enc, ptr)) {
-  CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-  case BT_EXCL:
-    if ((ptr += MINBPC(enc)) == end)
-      return XML_TOK_PARTIAL;
-    switch (BYTE_TYPE(enc, ptr)) {
-    case BT_MINUS:
-      return PREFIX(scanComment)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-    case BT_LSQB:
-      return PREFIX(scanCdataSection)(enc, ptr + MINBPC(enc),
-                                      end, nextTokPtr);
-    }
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  case BT_QUEST:
-    return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-  case BT_SOL:
-    return PREFIX(scanEndTag)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-#ifdef XML_NS
-  hadColon = 0;
-#endif
-  /* we have a start-tag */
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-#ifdef XML_NS
-    case BT_COLON:
-      if (hadColon) {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      hadColon = 1;
-      ptr += MINBPC(enc);
-      if (ptr == end)
-        return XML_TOK_PARTIAL;
-      switch (BYTE_TYPE(enc, ptr)) {
-      CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-      default:
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      break;
-#endif
-    case BT_S: case BT_CR: case BT_LF:
-      {
-        ptr += MINBPC(enc);
-        while (ptr != end) {
-          switch (BYTE_TYPE(enc, ptr)) {
-          CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-          case BT_GT:
-            goto gt;
-          case BT_SOL:
-            goto sol;
-          case BT_S: case BT_CR: case BT_LF:
-            ptr += MINBPC(enc);
-            continue;
-          default:
-            *nextTokPtr = ptr;
-            return XML_TOK_INVALID;
-          }
-          return PREFIX(scanAtts)(enc, ptr, end, nextTokPtr);
-        }
-        return XML_TOK_PARTIAL;
-      }
-    case BT_GT:
-    gt:
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_START_TAG_NO_ATTS;
-    case BT_SOL:
-    sol:
-      ptr += MINBPC(enc);
-      if (ptr == end)
-        return XML_TOK_PARTIAL;
-      if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_EMPTY_ELEMENT_NO_ATTS;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end,
-                   const char **nextTokPtr)
-{
-  if (ptr == end)
-    return XML_TOK_NONE;
-  if (MINBPC(enc) > 1) {
-    size_t n = end - ptr;
-    if (n & (MINBPC(enc) - 1)) {
-      n &= ~(MINBPC(enc) - 1);
-      if (n == 0)
-        return XML_TOK_PARTIAL;
-      end = ptr + n;
-    }
-  }
-  switch (BYTE_TYPE(enc, ptr)) {
-  case BT_LT:
-    return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-  case BT_AMP:
-    return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-  case BT_CR:
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return XML_TOK_TRAILING_CR;
-    if (BYTE_TYPE(enc, ptr) == BT_LF)
-      ptr += MINBPC(enc);
-    *nextTokPtr = ptr;
-    return XML_TOK_DATA_NEWLINE;
-  case BT_LF:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_DATA_NEWLINE;
-  case BT_RSQB:
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return XML_TOK_TRAILING_RSQB;
-    if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB))
-      break;
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return XML_TOK_TRAILING_RSQB;
-    if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-      ptr -= MINBPC(enc);
-      break;
-    }
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  INVALID_CASES(ptr, nextTokPtr)
-  default:
-    ptr += MINBPC(enc);
-    break;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: \
-      if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \
-        *nextTokPtr = ptr; \
-        return XML_TOK_DATA_CHARS; \
-      } \
-      ptr += n; \
-      break;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-    case BT_RSQB:
-      if (ptr + MINBPC(enc) != end) {
-         if (!CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) {
-           ptr += MINBPC(enc);
-           break;
-         }
-         if (ptr + 2*MINBPC(enc) != end) {
-           if (!CHAR_MATCHES(enc, ptr + 2*MINBPC(enc), ASCII_GT)) {
-             ptr += MINBPC(enc);
-             break;
-           }
-           *nextTokPtr = ptr + 2*MINBPC(enc);
-           return XML_TOK_INVALID;
-         }
-      }
-      /* fall through */
-    case BT_AMP:
-    case BT_LT:
-    case BT_NONXML:
-    case BT_MALFORM:
-    case BT_TRAIL:
-    case BT_CR:
-    case BT_LF:
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    default:
-      ptr += MINBPC(enc);
-      break;
-    }
-  }
-  *nextTokPtr = ptr;
-  return XML_TOK_DATA_CHARS;
-}
-
-/* ptr points to character following "%" */
-
-static int PTRCALL
-PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end,
-                    const char **nextTokPtr)
-{
-  if (ptr == end)
-    return -XML_TOK_PERCENT;
-  switch (BYTE_TYPE(enc, ptr)) {
-  CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-  case BT_S: case BT_LF: case BT_CR: case BT_PERCNT:
-    *nextTokPtr = ptr;
-    return XML_TOK_PERCENT;
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-    case BT_SEMI:
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_PARAM_ENTITY_REF;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end,
-                      const char **nextTokPtr)
-{
-  if (ptr == end)
-    return XML_TOK_PARTIAL;
-  switch (BYTE_TYPE(enc, ptr)) {
-  CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr)
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-    case BT_CR: case BT_LF: case BT_S:
-    case BT_RPAR: case BT_GT: case BT_PERCNT: case BT_VERBAR:
-      *nextTokPtr = ptr;
-      return XML_TOK_POUND_NAME;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return -XML_TOK_POUND_NAME;
-}
-
-static int PTRCALL
-PREFIX(scanLit)(int open, const ENCODING *enc,
-                const char *ptr, const char *end,
-                const char **nextTokPtr)
-{
-  while (ptr != end) {
-    int t = BYTE_TYPE(enc, ptr);
-    switch (t) {
-    INVALID_CASES(ptr, nextTokPtr)
-    case BT_QUOT:
-    case BT_APOS:
-      ptr += MINBPC(enc);
-      if (t != open)
-        break;
-      if (ptr == end)
-        return -XML_TOK_LITERAL;
-      *nextTokPtr = ptr;
-      switch (BYTE_TYPE(enc, ptr)) {
-      case BT_S: case BT_CR: case BT_LF:
-      case BT_GT: case BT_PERCNT: case BT_LSQB:
-        return XML_TOK_LITERAL;
-      default:
-        return XML_TOK_INVALID;
-      }
-    default:
-      ptr += MINBPC(enc);
-      break;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-static int PTRCALL
-PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end,
-                  const char **nextTokPtr)
-{
-  int tok;
-  if (ptr == end)
-    return XML_TOK_NONE;
-  if (MINBPC(enc) > 1) {
-    size_t n = end - ptr;
-    if (n & (MINBPC(enc) - 1)) {
-      n &= ~(MINBPC(enc) - 1);
-      if (n == 0)
-        return XML_TOK_PARTIAL;
-      end = ptr + n;
-    }
-  }
-  switch (BYTE_TYPE(enc, ptr)) {
-  case BT_QUOT:
-    return PREFIX(scanLit)(BT_QUOT, enc, ptr + MINBPC(enc), end, nextTokPtr);
-  case BT_APOS:
-    return PREFIX(scanLit)(BT_APOS, enc, ptr + MINBPC(enc), end, nextTokPtr);
-  case BT_LT:
-    {
-      ptr += MINBPC(enc);
-      if (ptr == end)
-        return XML_TOK_PARTIAL;
-      switch (BYTE_TYPE(enc, ptr)) {
-      case BT_EXCL:
-        return PREFIX(scanDecl)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-      case BT_QUEST:
-        return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-      case BT_NMSTRT:
-      case BT_HEX:
-      case BT_NONASCII:
-      case BT_LEAD2:
-      case BT_LEAD3:
-      case BT_LEAD4:
-        *nextTokPtr = ptr - MINBPC(enc);
-        return XML_TOK_INSTANCE_START;
-      }
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  case BT_CR:
-    if (ptr + MINBPC(enc) == end) {
-      *nextTokPtr = end;
-      /* indicate that this might be part of a CR/LF pair */
-      return -XML_TOK_PROLOG_S;
-    }
-    /* fall through */
-  case BT_S: case BT_LF:
-    for (;;) {
-      ptr += MINBPC(enc);
-      if (ptr == end)
-        break;
-      switch (BYTE_TYPE(enc, ptr)) {
-      case BT_S: case BT_LF:
-        break;
-      case BT_CR:
-        /* don't split CR/LF pair */
-        if (ptr + MINBPC(enc) != end)
-          break;
-        /* fall through */
-      default:
-        *nextTokPtr = ptr;
-        return XML_TOK_PROLOG_S;
-      }
-    }
-    *nextTokPtr = ptr;
-    return XML_TOK_PROLOG_S;
-  case BT_PERCNT:
-    return PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-  case BT_COMMA:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_COMMA;
-  case BT_LSQB:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_OPEN_BRACKET;
-  case BT_RSQB:
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return -XML_TOK_CLOSE_BRACKET;
-    if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) {
-      if (ptr + MINBPC(enc) == end)
-        return XML_TOK_PARTIAL;
-      if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_GT)) {
-        *nextTokPtr = ptr + 2*MINBPC(enc);
-        return XML_TOK_COND_SECT_CLOSE;
-      }
-    }
-    *nextTokPtr = ptr;
-    return XML_TOK_CLOSE_BRACKET;
-  case BT_LPAR:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_OPEN_PAREN;
-  case BT_RPAR:
-    ptr += MINBPC(enc);
-    if (ptr == end)
-      return -XML_TOK_CLOSE_PAREN;
-    switch (BYTE_TYPE(enc, ptr)) {
-    case BT_AST:
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_CLOSE_PAREN_ASTERISK;
-    case BT_QUEST:
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_CLOSE_PAREN_QUESTION;
-    case BT_PLUS:
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_CLOSE_PAREN_PLUS;
-    case BT_CR: case BT_LF: case BT_S:
-    case BT_GT: case BT_COMMA: case BT_VERBAR:
-    case BT_RPAR:
-      *nextTokPtr = ptr;
-      return XML_TOK_CLOSE_PAREN;
-    }
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  case BT_VERBAR:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_OR;
-  case BT_GT:
-    *nextTokPtr = ptr + MINBPC(enc);
-    return XML_TOK_DECL_CLOSE;
-  case BT_NUM:
-    return PREFIX(scanPoundName)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-#define LEAD_CASE(n) \
-  case BT_LEAD ## n: \
-    if (end - ptr < n) \
-      return XML_TOK_PARTIAL_CHAR; \
-    if (IS_NMSTRT_CHAR(enc, ptr, n)) { \
-      ptr += n; \
-      tok = XML_TOK_NAME; \
-      break; \
-    } \
-    if (IS_NAME_CHAR(enc, ptr, n)) { \
-      ptr += n; \
-      tok = XML_TOK_NMTOKEN; \
-      break; \
-    } \
-    *nextTokPtr = ptr; \
-    return XML_TOK_INVALID;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-  case BT_NMSTRT:
-  case BT_HEX:
-    tok = XML_TOK_NAME;
-    ptr += MINBPC(enc);
-    break;
-  case BT_DIGIT:
-  case BT_NAME:
-  case BT_MINUS:
-#ifdef XML_NS
-  case BT_COLON:
-#endif
-    tok = XML_TOK_NMTOKEN;
-    ptr += MINBPC(enc);
-    break;
-  case BT_NONASCII:
-    if (IS_NMSTRT_CHAR_MINBPC(enc, ptr)) {
-      ptr += MINBPC(enc);
-      tok = XML_TOK_NAME;
-      break;
-    }
-    if (IS_NAME_CHAR_MINBPC(enc, ptr)) {
-      ptr += MINBPC(enc);
-      tok = XML_TOK_NMTOKEN;
-      break;
-    }
-    /* fall through */
-  default:
-    *nextTokPtr = ptr;
-    return XML_TOK_INVALID;
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-    case BT_GT: case BT_RPAR: case BT_COMMA:
-    case BT_VERBAR: case BT_LSQB: case BT_PERCNT:
-    case BT_S: case BT_CR: case BT_LF:
-      *nextTokPtr = ptr;
-      return tok;
-#ifdef XML_NS
-    case BT_COLON:
-      ptr += MINBPC(enc);
-      switch (tok) {
-      case XML_TOK_NAME:
-        if (ptr == end)
-          return XML_TOK_PARTIAL;
-        tok = XML_TOK_PREFIXED_NAME;
-        switch (BYTE_TYPE(enc, ptr)) {
-        CHECK_NAME_CASES(enc, ptr, end, nextTokPtr)
-        default:
-          tok = XML_TOK_NMTOKEN;
-          break;
-        }
-        break;
-      case XML_TOK_PREFIXED_NAME:
-        tok = XML_TOK_NMTOKEN;
-        break;
-      }
-      break;
-#endif
-    case BT_PLUS:
-      if (tok == XML_TOK_NMTOKEN)  {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_NAME_PLUS;
-    case BT_AST:
-      if (tok == XML_TOK_NMTOKEN)  {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_NAME_ASTERISK;
-    case BT_QUEST:
-      if (tok == XML_TOK_NMTOKEN)  {
-        *nextTokPtr = ptr;
-        return XML_TOK_INVALID;
-      }
-      *nextTokPtr = ptr + MINBPC(enc);
-      return XML_TOK_NAME_QUESTION;
-    default:
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    }
-  }
-  return -tok;
-}
-
-static int PTRCALL
-PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr,
-                          const char *end, const char **nextTokPtr)
-{
-  const char *start;
-  if (ptr == end)
-    return XML_TOK_NONE;
-  start = ptr;
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: ptr += n; break;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-    case BT_AMP:
-      if (ptr == start)
-        return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    case BT_LT:
-      /* this is for inside entity references */
-      *nextTokPtr = ptr;
-      return XML_TOK_INVALID;
-    case BT_LF:
-      if (ptr == start) {
-        *nextTokPtr = ptr + MINBPC(enc);
-        return XML_TOK_DATA_NEWLINE;
-      }
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    case BT_CR:
-      if (ptr == start) {
-        ptr += MINBPC(enc);
-        if (ptr == end)
-          return XML_TOK_TRAILING_CR;
-        if (BYTE_TYPE(enc, ptr) == BT_LF)
-          ptr += MINBPC(enc);
-        *nextTokPtr = ptr;
-        return XML_TOK_DATA_NEWLINE;
-      }
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    case BT_S:
-      if (ptr == start) {
-        *nextTokPtr = ptr + MINBPC(enc);
-        return XML_TOK_ATTRIBUTE_VALUE_S;
-      }
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    default:
-      ptr += MINBPC(enc);
-      break;
-    }
-  }
-  *nextTokPtr = ptr;
-  return XML_TOK_DATA_CHARS;
-}
-
-static int PTRCALL
-PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr,
-                       const char *end, const char **nextTokPtr)
-{
-  const char *start;
-  if (ptr == end)
-    return XML_TOK_NONE;
-  start = ptr;
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: ptr += n; break;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-    case BT_AMP:
-      if (ptr == start)
-        return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr);
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    case BT_PERCNT:
-      if (ptr == start) {
-        int tok =  PREFIX(scanPercent)(enc, ptr + MINBPC(enc),
-                                       end, nextTokPtr);
-        return (tok == XML_TOK_PERCENT) ? XML_TOK_INVALID : tok;
-      }
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    case BT_LF:
-      if (ptr == start) {
-        *nextTokPtr = ptr + MINBPC(enc);
-        return XML_TOK_DATA_NEWLINE;
-      }
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    case BT_CR:
-      if (ptr == start) {
-        ptr += MINBPC(enc);
-        if (ptr == end)
-          return XML_TOK_TRAILING_CR;
-        if (BYTE_TYPE(enc, ptr) == BT_LF)
-          ptr += MINBPC(enc);
-        *nextTokPtr = ptr;
-        return XML_TOK_DATA_NEWLINE;
-      }
-      *nextTokPtr = ptr;
-      return XML_TOK_DATA_CHARS;
-    default:
-      ptr += MINBPC(enc);
-      break;
-    }
-  }
-  *nextTokPtr = ptr;
-  return XML_TOK_DATA_CHARS;
-}
-
-#ifdef XML_DTD
-
-static int PTRCALL
-PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr,
-                         const char *end, const char **nextTokPtr)
-{
-  int level = 0;
-  if (MINBPC(enc) > 1) {
-    size_t n = end - ptr;
-    if (n & (MINBPC(enc) - 1)) {
-      n &= ~(MINBPC(enc) - 1);
-      end = ptr + n;
-    }
-  }
-  while (ptr != end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    INVALID_CASES(ptr, nextTokPtr)
-    case BT_LT:
-      if ((ptr += MINBPC(enc)) == end)
-        return XML_TOK_PARTIAL;
-      if (CHAR_MATCHES(enc, ptr, ASCII_EXCL)) {
-        if ((ptr += MINBPC(enc)) == end)
-          return XML_TOK_PARTIAL;
-        if (CHAR_MATCHES(enc, ptr, ASCII_LSQB)) {
-          ++level;
-          ptr += MINBPC(enc);
-        }
-      }
-      break;
-    case BT_RSQB:
-      if ((ptr += MINBPC(enc)) == end)
-        return XML_TOK_PARTIAL;
-      if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) {
-        if ((ptr += MINBPC(enc)) == end)
-          return XML_TOK_PARTIAL;
-        if (CHAR_MATCHES(enc, ptr, ASCII_GT)) {
-          ptr += MINBPC(enc);
-          if (level == 0) {
-            *nextTokPtr = ptr;
-            return XML_TOK_IGNORE_SECT;
-          }
-          --level;
-        }
-      }
-      break;
-    default:
-      ptr += MINBPC(enc);
-      break;
-    }
-  }
-  return XML_TOK_PARTIAL;
-}
-
-#endif /* XML_DTD */
-
-static int PTRCALL
-PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end,
-                   const char **badPtr)
-{
-  ptr += MINBPC(enc);
-  end -= MINBPC(enc);
-  for (; ptr != end; ptr += MINBPC(enc)) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    case BT_DIGIT:
-    case BT_HEX:
-    case BT_MINUS:
-    case BT_APOS:
-    case BT_LPAR:
-    case BT_RPAR:
-    case BT_PLUS:
-    case BT_COMMA:
-    case BT_SOL:
-    case BT_EQUALS:
-    case BT_QUEST:
-    case BT_CR:
-    case BT_LF:
-    case BT_SEMI:
-    case BT_EXCL:
-    case BT_AST:
-    case BT_PERCNT:
-    case BT_NUM:
-#ifdef XML_NS
-    case BT_COLON:
-#endif
-      break;
-    case BT_S:
-      if (CHAR_MATCHES(enc, ptr, ASCII_TAB)) {
-        *badPtr = ptr;
-        return 0;
-      }
-      break;
-    case BT_NAME:
-    case BT_NMSTRT:
-      if (!(BYTE_TO_ASCII(enc, ptr) & ~0x7f))
-        break;
-    default:
-      switch (BYTE_TO_ASCII(enc, ptr)) {
-      case 0x24: /* $ */
-      case 0x40: /* @ */
-        break;
-      default:
-        *badPtr = ptr;
-        return 0;
-      }
-      break;
-    }
-  }
-  return 1;
-}
-
-/* This must only be called for a well-formed start-tag or empty
-   element tag.  Returns the number of attributes.  Pointers to the
-   first attsMax attributes are stored in atts.
-*/
-
-static int PTRCALL
-PREFIX(getAtts)(const ENCODING *enc, const char *ptr,
-                int attsMax, ATTRIBUTE *atts)
-{
-  enum { other, inName, inValue } state = inName;
-  int nAtts = 0;
-  int open = 0; /* defined when state == inValue;
-                   initialization just to shut up compilers */
-
-  for (ptr += MINBPC(enc);; ptr += MINBPC(enc)) {
-    switch (BYTE_TYPE(enc, ptr)) {
-#define START_NAME \
-      if (state == other) { \
-        if (nAtts < attsMax) { \
-          atts[nAtts].name = ptr; \
-          atts[nAtts].normalized = 1; \
-        } \
-        state = inName; \
-      }
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: START_NAME ptr += (n - MINBPC(enc)); break;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-    case BT_NONASCII:
-    case BT_NMSTRT:
-    case BT_HEX:
-      START_NAME
-      break;
-#undef START_NAME
-    case BT_QUOT:
-      if (state != inValue) {
-        if (nAtts < attsMax)
-          atts[nAtts].valuePtr = ptr + MINBPC(enc);
-        state = inValue;
-        open = BT_QUOT;
-      }
-      else if (open == BT_QUOT) {
-        state = other;
-        if (nAtts < attsMax)
-          atts[nAtts].valueEnd = ptr;
-        nAtts++;
-      }
-      break;
-    case BT_APOS:
-      if (state != inValue) {
-        if (nAtts < attsMax)
-          atts[nAtts].valuePtr = ptr + MINBPC(enc);
-        state = inValue;
-        open = BT_APOS;
-      }
-      else if (open == BT_APOS) {
-        state = other;
-        if (nAtts < attsMax)
-          atts[nAtts].valueEnd = ptr;
-        nAtts++;
-      }
-      break;
-    case BT_AMP:
-      if (nAtts < attsMax)
-        atts[nAtts].normalized = 0;
-      break;
-    case BT_S:
-      if (state == inName)
-        state = other;
-      else if (state == inValue
-               && nAtts < attsMax
-               && atts[nAtts].normalized
-               && (ptr == atts[nAtts].valuePtr
-                   || BYTE_TO_ASCII(enc, ptr) != ASCII_SPACE
-                   || BYTE_TO_ASCII(enc, ptr + MINBPC(enc)) == ASCII_SPACE
-                   || BYTE_TYPE(enc, ptr + MINBPC(enc)) == open))
-        atts[nAtts].normalized = 0;
-      break;
-    case BT_CR: case BT_LF:
-      /* This case ensures that the first attribute name is counted
-         Apart from that we could just change state on the quote. */
-      if (state == inName)
-        state = other;
-      else if (state == inValue && nAtts < attsMax)
-        atts[nAtts].normalized = 0;
-      break;
-    case BT_GT:
-    case BT_SOL:
-      if (state != inValue)
-        return nAtts;
-      break;
-    default:
-      break;
-    }
-  }
-  /* not reached */
-}
-
-static int PTRFASTCALL
-PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr)
-{
-  int result = 0;
-  /* skip &# */
-  ptr += 2*MINBPC(enc);
-  if (CHAR_MATCHES(enc, ptr, ASCII_x)) {
-    for (ptr += MINBPC(enc);
-         !CHAR_MATCHES(enc, ptr, ASCII_SEMI);
-         ptr += MINBPC(enc)) {
-      int c = BYTE_TO_ASCII(enc, ptr);
-      switch (c) {
-      case ASCII_0: case ASCII_1: case ASCII_2: case ASCII_3: case ASCII_4:
-      case ASCII_5: case ASCII_6: case ASCII_7: case ASCII_8: case ASCII_9:
-        result <<= 4;
-        result |= (c - ASCII_0);
-        break;
-      case ASCII_A: case ASCII_B: case ASCII_C:
-      case ASCII_D: case ASCII_E: case ASCII_F:
-        result <<= 4;
-        result += 10 + (c - ASCII_A);
-        break;
-      case ASCII_a: case ASCII_b: case ASCII_c:
-      case ASCII_d: case ASCII_e: case ASCII_f:
-        result <<= 4;
-        result += 10 + (c - ASCII_a);
-        break;
-      }
-      if (result >= 0x110000)
-        return -1;
-    }
-  }
-  else {
-    for (; !CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) {
-      int c = BYTE_TO_ASCII(enc, ptr);
-      result *= 10;
-      result += (c - ASCII_0);
-      if (result >= 0x110000)
-        return -1;
-    }
-  }
-  return checkCharRefNumber(result);
-}
-
-static int PTRCALL
-PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr,
-                             const char *end)
-{
-  switch ((end - ptr)/MINBPC(enc)) {
-  case 2:
-    if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) {
-      switch (BYTE_TO_ASCII(enc, ptr)) {
-      case ASCII_l:
-        return ASCII_LT;
-      case ASCII_g:
-        return ASCII_GT;
-      }
-    }
-    break;
-  case 3:
-    if (CHAR_MATCHES(enc, ptr, ASCII_a)) {
-      ptr += MINBPC(enc);
-      if (CHAR_MATCHES(enc, ptr, ASCII_m)) {
-        ptr += MINBPC(enc);
-        if (CHAR_MATCHES(enc, ptr, ASCII_p))
-          return ASCII_AMP;
-      }
-    }
-    break;
-  case 4:
-    switch (BYTE_TO_ASCII(enc, ptr)) {
-    case ASCII_q:
-      ptr += MINBPC(enc);
-      if (CHAR_MATCHES(enc, ptr, ASCII_u)) {
-        ptr += MINBPC(enc);
-        if (CHAR_MATCHES(enc, ptr, ASCII_o)) {
-          ptr += MINBPC(enc);
-          if (CHAR_MATCHES(enc, ptr, ASCII_t))
-            return ASCII_QUOT;
-        }
-      }
-      break;
-    case ASCII_a:
-      ptr += MINBPC(enc);
-      if (CHAR_MATCHES(enc, ptr, ASCII_p)) {
-        ptr += MINBPC(enc);
-        if (CHAR_MATCHES(enc, ptr, ASCII_o)) {
-          ptr += MINBPC(enc);
-          if (CHAR_MATCHES(enc, ptr, ASCII_s))
-            return ASCII_APOS;
-        }
-      }
-      break;
-    }
-  }
-  return 0;
-}
-
-static int PTRCALL
-PREFIX(sameName)(const ENCODING *enc, const char *ptr1, const char *ptr2)
-{
-  for (;;) {
-    switch (BYTE_TYPE(enc, ptr1)) {
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: \
-      if (*ptr1++ != *ptr2++) \
-        return 0;
-    LEAD_CASE(4) LEAD_CASE(3) LEAD_CASE(2)
-#undef LEAD_CASE
-      /* fall through */
-      if (*ptr1++ != *ptr2++)
-        return 0;
-      break;
-    case BT_NONASCII:
-    case BT_NMSTRT:
-#ifdef XML_NS
-    case BT_COLON:
-#endif
-    case BT_HEX:
-    case BT_DIGIT:
-    case BT_NAME:
-    case BT_MINUS:
-      if (*ptr2++ != *ptr1++)
-        return 0;
-      if (MINBPC(enc) > 1) {
-        if (*ptr2++ != *ptr1++)
-          return 0;
-        if (MINBPC(enc) > 2) {
-          if (*ptr2++ != *ptr1++)
-            return 0;
-          if (MINBPC(enc) > 3) {
-            if (*ptr2++ != *ptr1++)
-              return 0;
-          }
-        }
-      }
-      break;
-    default:
-      if (MINBPC(enc) == 1 && *ptr1 == *ptr2)
-        return 1;
-      switch (BYTE_TYPE(enc, ptr2)) {
-      case BT_LEAD2:
-      case BT_LEAD3:
-      case BT_LEAD4:
-      case BT_NONASCII:
-      case BT_NMSTRT:
-#ifdef XML_NS
-      case BT_COLON:
-#endif
-      case BT_HEX:
-      case BT_DIGIT:
-      case BT_NAME:
-      case BT_MINUS:
-        return 0;
-      default:
-        return 1;
-      }
-    }
-  }
-  /* not reached */
-}
-
-static int PTRCALL
-PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1,
-                         const char *end1, const char *ptr2)
-{
-  for (; *ptr2; ptr1 += MINBPC(enc), ptr2++) {
-    if (ptr1 == end1)
-      return 0;
-    if (!CHAR_MATCHES(enc, ptr1, *ptr2))
-      return 0;
-  }
-  return ptr1 == end1;
-}
-
-static int PTRFASTCALL
-PREFIX(nameLength)(const ENCODING *enc, const char *ptr)
-{
-  const char *start = ptr;
-  for (;;) {
-    switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: ptr += n; break;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-    case BT_NONASCII:
-    case BT_NMSTRT:
-#ifdef XML_NS
-    case BT_COLON:
-#endif
-    case BT_HEX:
-    case BT_DIGIT:
-    case BT_NAME:
-    case BT_MINUS:
-      ptr += MINBPC(enc);
-      break;
-    default:
-      return (int)(ptr - start);
-    }
-  }
-}
-
-static const char * PTRFASTCALL
-PREFIX(skipS)(const ENCODING *enc, const char *ptr)
-{
-  for (;;) {
-    switch (BYTE_TYPE(enc, ptr)) {
-    case BT_LF:
-    case BT_CR:
-    case BT_S:
-      ptr += MINBPC(enc);
-      break;
-    default:
-      return ptr;
-    }
-  }
-}
-
-static void PTRCALL
-PREFIX(updatePosition)(const ENCODING *enc,
-                       const char *ptr,
-                       const char *end,
-                       POSITION *pos)
-{
-  while (ptr < end) {
-    switch (BYTE_TYPE(enc, ptr)) {
-#define LEAD_CASE(n) \
-    case BT_LEAD ## n: \
-      ptr += n; \
-      break;
-    LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4)
-#undef LEAD_CASE
-    case BT_LF:
-      pos->columnNumber = (XML_Size)-1;
-      pos->lineNumber++;
-      ptr += MINBPC(enc);
-      break;
-    case BT_CR:
-      pos->lineNumber++;
-      ptr += MINBPC(enc);
-      if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF)
-        ptr += MINBPC(enc);
-      pos->columnNumber = (XML_Size)-1;
-      break;
-    default:
-      ptr += MINBPC(enc);
-      break;
-    }
-    pos->columnNumber++;
-  }
-}
-
-#undef DO_LEAD_CASE
-#undef MULTIBYTE_CASES
-#undef INVALID_CASES
-#undef CHECK_NAME_CASE
-#undef CHECK_NAME_CASES
-#undef CHECK_NMSTRT_CASE
-#undef CHECK_NMSTRT_CASES
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_impl.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_impl.h
deleted file mode 100644
index 94c7db6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_impl.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
-See the file COPYING for copying permission.
-*/
-
-enum {
-  BT_NONXML,
-  BT_MALFORM,
-  BT_LT,
-  BT_AMP,
-  BT_RSQB,
-  BT_LEAD2,
-  BT_LEAD3,
-  BT_LEAD4,
-  BT_TRAIL,
-  BT_CR,
-  BT_LF,
-  BT_GT,
-  BT_QUOT,
-  BT_APOS,
-  BT_EQUALS,
-  BT_QUEST,
-  BT_EXCL,
-  BT_SOL,
-  BT_SEMI,
-  BT_NUM,
-  BT_LSQB,
-  BT_S,
-  BT_NMSTRT,
-  BT_COLON,
-  BT_HEX,
-  BT_DIGIT,
-  BT_NAME,
-  BT_MINUS,
-  BT_OTHER, /* known not to be a name or name start character */
-  BT_NONASCII, /* might be a name or name start character */
-  BT_PERCNT,
-  BT_LPAR,
-  BT_RPAR,
-  BT_AST,
-  BT_PLUS,
-  BT_COMMA,
-  BT_VERBAR
-};
-
-#include <stddef.h>
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_ns.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_ns.c
deleted file mode 100644
index b282575..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/expat/xmltok_ns.c
+++ /dev/null
@@ -1,106 +0,0 @@
-const ENCODING *
-NS(XmlGetUtf8InternalEncoding)(void)
-{
-  return &ns(internal_utf8_encoding).enc;
-}
-
-const ENCODING *
-NS(XmlGetUtf16InternalEncoding)(void)
-{
-#if BYTEORDER == 1234
-  return &ns(internal_little2_encoding).enc;
-#elif BYTEORDER == 4321
-  return &ns(internal_big2_encoding).enc;
-#else
-  const short n = 1;
-  return (*(const char *)&n
-          ? &ns(internal_little2_encoding).enc
-          : &ns(internal_big2_encoding).enc);
-#endif
-}
-
-static const ENCODING * const NS(encodings)[] = {
-  &ns(latin1_encoding).enc,
-  &ns(ascii_encoding).enc,
-  &ns(utf8_encoding).enc,
-  &ns(big2_encoding).enc,
-  &ns(big2_encoding).enc,
-  &ns(little2_encoding).enc,
-  &ns(utf8_encoding).enc /* NO_ENC */
-};
-
-static int PTRCALL
-NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end,
-                   const char **nextTokPtr)
-{
-  return initScan(NS(encodings), (const INIT_ENCODING *)enc,
-                  XML_PROLOG_STATE, ptr, end, nextTokPtr);
-}
-
-static int PTRCALL
-NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end,
-                    const char **nextTokPtr)
-{
-  return initScan(NS(encodings), (const INIT_ENCODING *)enc,
-                  XML_CONTENT_STATE, ptr, end, nextTokPtr);
-}
-
-int
-NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr,
-                    const char *name)
-{
-  int i = getEncodingIndex(name);
-  if (i == UNKNOWN_ENC)
-    return 0;
-  SET_INIT_ENC_INDEX(p, i);
-  p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog);
-  p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent);
-  p->initEnc.updatePosition = initUpdatePosition;
-  p->encPtr = encPtr;
-  *encPtr = &(p->initEnc);
-  return 1;
-}
-
-static const ENCODING *
-NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end)
-{
-#define ENCODING_MAX 128
-  char buf[ENCODING_MAX];
-  char *p = buf;
-  int i;
-  XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1);
-  if (ptr != end)
-    return 0;
-  *p = 0;
-  if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2)
-    return enc;
-  i = getEncodingIndex(buf);
-  if (i == UNKNOWN_ENC)
-    return 0;
-  return NS(encodings)[i];
-}
-
-int
-NS(XmlParseXmlDecl)(int isGeneralTextEntity,
-                    const ENCODING *enc,
-                    const char *ptr,
-                    const char *end,
-                    const char **badPtr,
-                    const char **versionPtr,
-                    const char **versionEndPtr,
-                    const char **encodingName,
-                    const ENCODING **encoding,
-                    int *standalone)
-{
-  return doParseXmlDecl(NS(findEncoding),
-                        isGeneralTextEntity,
-                        enc,
-                        ptr,
-                        end,
-                        badPtr,
-                        versionPtr,
-                        versionEndPtr,
-                        encodingName,
-                        encoding,
-                        standalone);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/fcntlmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/fcntlmodule.c
deleted file mode 100644
index c9fc233..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/fcntlmodule.c
+++ /dev/null
@@ -1,620 +0,0 @@
-
-/* fcntl module */
-
-#define PY_SSIZE_T_CLEAN
-
-#include "Python.h"
-
-#ifdef HAVE_SYS_FILE_H
-#include <sys/file.h>
-#endif
-
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#ifdef HAVE_STROPTS_H
-#include <stropts.h>
-#endif
-
-static int
-conv_descriptor(PyObject *object, int *target)
-{
-    int fd = PyObject_AsFileDescriptor(object);
-
-    if (fd < 0)
-    return 0;
-    *target = fd;
-    return 1;
-}
-
-
-/* fcntl(fd, opt, [arg]) */
-
-static PyObject *
-fcntl_fcntl(PyObject *self, PyObject *args)
-{
-    int fd;
-    int code;
-    long arg;
-    int ret;
-    char *str;
-    Py_ssize_t len;
-    char buf[1024];
-
-    if (PyArg_ParseTuple(args, "O&is#:fcntl",
-                         conv_descriptor, &fd, &code, &str, &len)) {
-        if (len > sizeof buf) {
-            PyErr_SetString(PyExc_ValueError,
-                            "fcntl string arg too long");
-            return NULL;
-        }
-        memcpy(buf, str, len);
-        Py_BEGIN_ALLOW_THREADS
-        ret = fcntl(fd, code, buf);
-        Py_END_ALLOW_THREADS
-        if (ret < 0) {
-            PyErr_SetFromErrno(PyExc_IOError);
-            return NULL;
-        }
-        return PyString_FromStringAndSize(buf, len);
-    }
-
-    PyErr_Clear();
-    arg = 0;
-    if (!PyArg_ParseTuple(args,
-         "O&i|l;fcntl requires a file or file descriptor,"
-         " an integer and optionally a third integer or a string",
-                          conv_descriptor, &fd, &code, &arg)) {
-      return NULL;
-    }
-    Py_BEGIN_ALLOW_THREADS
-    ret = fcntl(fd, code, arg);
-    Py_END_ALLOW_THREADS
-    if (ret < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    return PyInt_FromLong((long)ret);
-}
-
-PyDoc_STRVAR(fcntl_doc,
-"fcntl(fd, opt, [arg])\n\
-\n\
-Perform the requested operation on file descriptor fd.  The operation\n\
-is defined by op and is operating system dependent.  These constants are\n\
-available from the fcntl module.  The argument arg is optional, and\n\
-defaults to 0; it may be an int or a string.  If arg is given as a string,\n\
-the return value of fcntl is a string of that length, containing the\n\
-resulting value put in the arg buffer by the operating system.  The length\n\
-of the arg string is not allowed to exceed 1024 bytes.  If the arg given\n\
-is an integer or if none is specified, the result value is an integer\n\
-corresponding to the return value of the fcntl call in the C code.");
-
-
-/* ioctl(fd, opt, [arg]) */
-
-static PyObject *
-fcntl_ioctl(PyObject *self, PyObject *args)
-{
-#define IOCTL_BUFSZ 1024
-    int fd;
-    /* In PyArg_ParseTuple below, we use the unsigned non-checked 'I'
-       format for the 'code' parameter because Python turns 0x8000000
-       into either a large positive number (PyLong or PyInt on 64-bit
-       platforms) or a negative number on others (32-bit PyInt)
-       whereas the system expects it to be a 32bit bit field value
-       regardless of it being passed as an int or unsigned long on
-       various platforms.  See the termios.TIOCSWINSZ constant across
-       platforms for an example of thise.
-
-       If any of the 64bit platforms ever decide to use more than 32bits
-       in their unsigned long ioctl codes this will break and need
-       special casing based on the platform being built on.
-     */
-    unsigned int code;
-    int arg;
-    int ret;
-    char *str;
-    Py_ssize_t len;
-    int mutate_arg = 1;
-    char buf[IOCTL_BUFSZ+1];  /* argument plus NUL byte */
-
-    if (PyArg_ParseTuple(args, "O&Iw#|i:ioctl",
-                         conv_descriptor, &fd, &code,
-                         &str, &len, &mutate_arg)) {
-        char *arg;
-
-        if (mutate_arg) {
-            if (len <= IOCTL_BUFSZ) {
-                memcpy(buf, str, len);
-                buf[len] = '\0';
-                arg = buf;
-            }
-            else {
-                arg = str;
-            }
-        }
-        else {
-            if (len > IOCTL_BUFSZ) {
-                PyErr_SetString(PyExc_ValueError,
-                    "ioctl string arg too long");
-                return NULL;
-            }
-            else {
-                memcpy(buf, str, len);
-                buf[len] = '\0';
-                arg = buf;
-            }
-        }
-        if (buf == arg) {
-            Py_BEGIN_ALLOW_THREADS /* think array.resize() */
-            ret = ioctl(fd, code, arg);
-            Py_END_ALLOW_THREADS
-        }
-        else {
-            ret = ioctl(fd, code, arg);
-        }
-        if (mutate_arg && (len <= IOCTL_BUFSZ)) {
-            memcpy(str, buf, len);
-        }
-        if (ret < 0) {
-            PyErr_SetFromErrno(PyExc_IOError);
-            return NULL;
-        }
-        if (mutate_arg) {
-            return PyInt_FromLong(ret);
-        }
-        else {
-            return PyString_FromStringAndSize(buf, len);
-        }
-    }
-
-    PyErr_Clear();
-    if (PyArg_ParseTuple(args, "O&Is#:ioctl",
-                         conv_descriptor, &fd, &code, &str, &len)) {
-        if (len > IOCTL_BUFSZ) {
-            PyErr_SetString(PyExc_ValueError,
-                            "ioctl string arg too long");
-            return NULL;
-        }
-        memcpy(buf, str, len);
-        buf[len] = '\0';
-        Py_BEGIN_ALLOW_THREADS
-        ret = ioctl(fd, code, buf);
-        Py_END_ALLOW_THREADS
-        if (ret < 0) {
-            PyErr_SetFromErrno(PyExc_IOError);
-            return NULL;
-        }
-        return PyString_FromStringAndSize(buf, len);
-    }
-
-    PyErr_Clear();
-    arg = 0;
-    if (!PyArg_ParseTuple(args,
-         "O&I|i;ioctl requires a file or file descriptor,"
-         " an integer and optionally an integer or buffer argument",
-                          conv_descriptor, &fd, &code, &arg)) {
-      return NULL;
-    }
-    Py_BEGIN_ALLOW_THREADS
-#ifdef __VMS
-    ret = ioctl(fd, code, (void *)arg);
-#else
-    ret = ioctl(fd, code, arg);
-#endif
-    Py_END_ALLOW_THREADS
-    if (ret < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    return PyInt_FromLong((long)ret);
-#undef IOCTL_BUFSZ
-}
-
-PyDoc_STRVAR(ioctl_doc,
-"ioctl(fd, opt[, arg[, mutate_flag]])\n\
-\n\
-Perform the requested operation on file descriptor fd.  The operation is\n\
-defined by opt and is operating system dependent.  Typically these codes are\n\
-retrieved from the fcntl or termios library modules.\n\
-\n\
-The argument arg is optional, and defaults to 0; it may be an int or a\n\
-buffer containing character data (most likely a string or an array). \n\
-\n\
-If the argument is a mutable buffer (such as an array) and if the\n\
-mutate_flag argument (which is only allowed in this case) is true then the\n\
-buffer is (in effect) passed to the operating system and changes made by\n\
-the OS will be reflected in the contents of the buffer after the call has\n\
-returned.  The return value is the integer returned by the ioctl system\n\
-call.\n\
-\n\
-If the argument is a mutable buffer and the mutable_flag argument is not\n\
-passed or is false, the behavior is as if a string had been passed.  This\n\
-behavior will change in future releases of Python.\n\
-\n\
-If the argument is an immutable buffer (most likely a string) then a copy\n\
-of the buffer is passed to the operating system and the return value is a\n\
-string of the same length containing whatever the operating system put in\n\
-the buffer.  The length of the arg buffer in this case is not allowed to\n\
-exceed 1024 bytes.\n\
-\n\
-If the arg given is an integer or if none is specified, the result value is\n\
-an integer corresponding to the return value of the ioctl call in the C\n\
-code.");
-
-
-/* flock(fd, operation) */
-
-static PyObject *
-fcntl_flock(PyObject *self, PyObject *args)
-{
-    int fd;
-    int code;
-    int ret;
-
-    if (!PyArg_ParseTuple(args, "O&i:flock",
-                          conv_descriptor, &fd, &code))
-        return NULL;
-
-#ifdef HAVE_FLOCK
-    Py_BEGIN_ALLOW_THREADS
-    ret = flock(fd, code);
-    Py_END_ALLOW_THREADS
-#else
-
-#ifndef LOCK_SH
-#define LOCK_SH         1       /* shared lock */
-#define LOCK_EX         2       /* exclusive lock */
-#define LOCK_NB         4       /* don't block when locking */
-#define LOCK_UN         8       /* unlock */
-#endif
-    {
-        struct flock l;
-        if (code == LOCK_UN)
-            l.l_type = F_UNLCK;
-        else if (code & LOCK_SH)
-            l.l_type = F_RDLCK;
-        else if (code & LOCK_EX)
-            l.l_type = F_WRLCK;
-        else {
-            PyErr_SetString(PyExc_ValueError,
-                            "unrecognized flock argument");
-            return NULL;
-        }
-        l.l_whence = l.l_start = l.l_len = 0;
-        Py_BEGIN_ALLOW_THREADS
-        ret = fcntl(fd, (code & LOCK_NB) ? F_SETLK : F_SETLKW, &l);
-        Py_END_ALLOW_THREADS
-    }
-#endif /* HAVE_FLOCK */
-    if (ret < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(flock_doc,
-"flock(fd, operation)\n\
-\n\
-Perform the lock operation op on file descriptor fd.  See the Unix \n\
-manual page for flock(3) for details.  (On some systems, this function is\n\
-emulated using fcntl().)");
-
-
-/* lockf(fd, operation) */
-static PyObject *
-fcntl_lockf(PyObject *self, PyObject *args)
-{
-    int fd, code, ret, whence = 0;
-    PyObject *lenobj = NULL, *startobj = NULL;
-
-    if (!PyArg_ParseTuple(args, "O&i|OOi:lockf",
-                          conv_descriptor, &fd, &code,
-                          &lenobj, &startobj, &whence))
-        return NULL;
-
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-    PyErr_SetString(PyExc_NotImplementedError,
-                    "lockf not supported on OS/2 (EMX)");
-    return NULL;
-#else
-#ifndef LOCK_SH
-#define LOCK_SH         1       /* shared lock */
-#define LOCK_EX         2       /* exclusive lock */
-#define LOCK_NB         4       /* don't block when locking */
-#define LOCK_UN         8       /* unlock */
-#endif  /* LOCK_SH */
-    {
-        struct flock l;
-        if (code == LOCK_UN)
-            l.l_type = F_UNLCK;
-        else if (code & LOCK_SH)
-            l.l_type = F_RDLCK;
-        else if (code & LOCK_EX)
-            l.l_type = F_WRLCK;
-        else {
-            PyErr_SetString(PyExc_ValueError,
-                            "unrecognized lockf argument");
-            return NULL;
-        }
-        l.l_start = l.l_len = 0;
-        if (startobj != NULL) {
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-            l.l_start = PyInt_AsLong(startobj);
-#else
-            l.l_start = PyLong_Check(startobj) ?
-                            PyLong_AsLongLong(startobj) :
-                    PyInt_AsLong(startobj);
-#endif
-            if (PyErr_Occurred())
-                return NULL;
-        }
-        if (lenobj != NULL) {
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-            l.l_len = PyInt_AsLong(lenobj);
-#else
-            l.l_len = PyLong_Check(lenobj) ?
-                            PyLong_AsLongLong(lenobj) :
-                    PyInt_AsLong(lenobj);
-#endif
-            if (PyErr_Occurred())
-                return NULL;
-        }
-        l.l_whence = whence;
-        Py_BEGIN_ALLOW_THREADS
-        ret = fcntl(fd, (code & LOCK_NB) ? F_SETLK : F_SETLKW, &l);
-        Py_END_ALLOW_THREADS
-    }
-    if (ret < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-#endif  /* defined(PYOS_OS2) && defined(PYCC_GCC) */
-}
-
-PyDoc_STRVAR(lockf_doc,
-"lockf (fd, operation, length=0, start=0, whence=0)\n\
-\n\
-This is essentially a wrapper around the fcntl() locking calls.  fd is the\n\
-file descriptor of the file to lock or unlock, and operation is one of the\n\
-following values:\n\
-\n\
-    LOCK_UN - unlock\n\
-    LOCK_SH - acquire a shared lock\n\
-    LOCK_EX - acquire an exclusive lock\n\
-\n\
-When operation is LOCK_SH or LOCK_EX, it can also be bitwise ORed with\n\
-LOCK_NB to avoid blocking on lock acquisition.  If LOCK_NB is used and the\n\
-lock cannot be acquired, an IOError will be raised and the exception will\n\
-have an errno attribute set to EACCES or EAGAIN (depending on the operating\n\
-system -- for portability, check for either value).\n\
-\n\
-length is the number of bytes to lock, with the default meaning to lock to\n\
-EOF.  start is the byte offset, relative to whence, to that the lock\n\
-starts.  whence is as with fileobj.seek(), specifically:\n\
-\n\
-    0 - relative to the start of the file (SEEK_SET)\n\
-    1 - relative to the current buffer position (SEEK_CUR)\n\
-    2 - relative to the end of the file (SEEK_END)");
-
-/* List of functions */
-
-static PyMethodDef fcntl_methods[] = {
-    {"fcntl",           fcntl_fcntl, METH_VARARGS, fcntl_doc},
-    {"ioctl",           fcntl_ioctl, METH_VARARGS, ioctl_doc},
-    {"flock",           fcntl_flock, METH_VARARGS, flock_doc},
-    {"lockf",       fcntl_lockf, METH_VARARGS, lockf_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-
-PyDoc_STRVAR(module_doc,
-"This module performs file control and I/O control on file \n\
-descriptors.  It is an interface to the fcntl() and ioctl() Unix\n\
-routines.  File descriptors can be obtained with the fileno() method of\n\
-a file or socket object.");
-
-/* Module initialisation */
-
-static int
-ins(PyObject* d, char* symbol, long value)
-{
-    PyObject* v = PyInt_FromLong(value);
-    if (!v || PyDict_SetItemString(d, symbol, v) < 0)
-        return -1;
-
-    Py_DECREF(v);
-    return 0;
-}
-
-#define INS(x) if (ins(d, #x, (long)x)) return -1
-
-static int
-all_ins(PyObject* d)
-{
-    if (ins(d, "LOCK_SH", (long)LOCK_SH)) return -1;
-    if (ins(d, "LOCK_EX", (long)LOCK_EX)) return -1;
-    if (ins(d, "LOCK_NB", (long)LOCK_NB)) return -1;
-    if (ins(d, "LOCK_UN", (long)LOCK_UN)) return -1;
-/* GNU extensions, as of glibc 2.2.4 */
-#ifdef LOCK_MAND
-    if (ins(d, "LOCK_MAND", (long)LOCK_MAND)) return -1;
-#endif
-#ifdef LOCK_READ
-    if (ins(d, "LOCK_READ", (long)LOCK_READ)) return -1;
-#endif
-#ifdef LOCK_WRITE
-    if (ins(d, "LOCK_WRITE", (long)LOCK_WRITE)) return -1;
-#endif
-#ifdef LOCK_RW
-    if (ins(d, "LOCK_RW", (long)LOCK_RW)) return -1;
-#endif
-
-#ifdef F_DUPFD
-    if (ins(d, "F_DUPFD", (long)F_DUPFD)) return -1;
-#endif
-#ifdef F_GETFD
-    if (ins(d, "F_GETFD", (long)F_GETFD)) return -1;
-#endif
-#ifdef F_SETFD
-    if (ins(d, "F_SETFD", (long)F_SETFD)) return -1;
-#endif
-#ifdef F_GETFL
-    if (ins(d, "F_GETFL", (long)F_GETFL)) return -1;
-#endif
-#ifdef F_SETFL
-    if (ins(d, "F_SETFL", (long)F_SETFL)) return -1;
-#endif
-#ifdef F_GETLK
-    if (ins(d, "F_GETLK", (long)F_GETLK)) return -1;
-#endif
-#ifdef F_SETLK
-    if (ins(d, "F_SETLK", (long)F_SETLK)) return -1;
-#endif
-#ifdef F_SETLKW
-    if (ins(d, "F_SETLKW", (long)F_SETLKW)) return -1;
-#endif
-#ifdef F_GETOWN
-    if (ins(d, "F_GETOWN", (long)F_GETOWN)) return -1;
-#endif
-#ifdef F_SETOWN
-    if (ins(d, "F_SETOWN", (long)F_SETOWN)) return -1;
-#endif
-#ifdef F_GETSIG
-    if (ins(d, "F_GETSIG", (long)F_GETSIG)) return -1;
-#endif
-#ifdef F_SETSIG
-    if (ins(d, "F_SETSIG", (long)F_SETSIG)) return -1;
-#endif
-#ifdef F_RDLCK
-    if (ins(d, "F_RDLCK", (long)F_RDLCK)) return -1;
-#endif
-#ifdef F_WRLCK
-    if (ins(d, "F_WRLCK", (long)F_WRLCK)) return -1;
-#endif
-#ifdef F_UNLCK
-    if (ins(d, "F_UNLCK", (long)F_UNLCK)) return -1;
-#endif
-/* LFS constants */
-#ifdef F_GETLK64
-    if (ins(d, "F_GETLK64", (long)F_GETLK64)) return -1;
-#endif
-#ifdef F_SETLK64
-    if (ins(d, "F_SETLK64", (long)F_SETLK64)) return -1;
-#endif
-#ifdef F_SETLKW64
-    if (ins(d, "F_SETLKW64", (long)F_SETLKW64)) return -1;
-#endif
-/* GNU extensions, as of glibc 2.2.4. */
-#ifdef FASYNC
-    if (ins(d, "FASYNC", (long)FASYNC)) return -1;
-#endif
-#ifdef F_SETLEASE
-    if (ins(d, "F_SETLEASE", (long)F_SETLEASE)) return -1;
-#endif
-#ifdef F_GETLEASE
-    if (ins(d, "F_GETLEASE", (long)F_GETLEASE)) return -1;
-#endif
-#ifdef F_NOTIFY
-    if (ins(d, "F_NOTIFY", (long)F_NOTIFY)) return -1;
-#endif
-/* Old BSD flock(). */
-#ifdef F_EXLCK
-    if (ins(d, "F_EXLCK", (long)F_EXLCK)) return -1;
-#endif
-#ifdef F_SHLCK
-    if (ins(d, "F_SHLCK", (long)F_SHLCK)) return -1;
-#endif
-
-/* OS X (and maybe others) let you tell the storage device to flush to physical media */
-#ifdef F_FULLFSYNC
-    if (ins(d, "F_FULLFSYNC", (long)F_FULLFSYNC)) return -1;
-#endif
-
-/* For F_{GET|SET}FL */
-#ifdef FD_CLOEXEC
-    if (ins(d, "FD_CLOEXEC", (long)FD_CLOEXEC)) return -1;
-#endif
-
-/* For F_NOTIFY */
-#ifdef DN_ACCESS
-    if (ins(d, "DN_ACCESS", (long)DN_ACCESS)) return -1;
-#endif
-#ifdef DN_MODIFY
-    if (ins(d, "DN_MODIFY", (long)DN_MODIFY)) return -1;
-#endif
-#ifdef DN_CREATE
-    if (ins(d, "DN_CREATE", (long)DN_CREATE)) return -1;
-#endif
-#ifdef DN_DELETE
-    if (ins(d, "DN_DELETE", (long)DN_DELETE)) return -1;
-#endif
-#ifdef DN_RENAME
-    if (ins(d, "DN_RENAME", (long)DN_RENAME)) return -1;
-#endif
-#ifdef DN_ATTRIB
-    if (ins(d, "DN_ATTRIB", (long)DN_ATTRIB)) return -1;
-#endif
-#ifdef DN_MULTISHOT
-    if (ins(d, "DN_MULTISHOT", (long)DN_MULTISHOT)) return -1;
-#endif
-
-#ifdef HAVE_STROPTS_H
-    /* Unix 98 guarantees that these are in stropts.h. */
-    INS(I_PUSH);
-    INS(I_POP);
-    INS(I_LOOK);
-    INS(I_FLUSH);
-    INS(I_FLUSHBAND);
-    INS(I_SETSIG);
-    INS(I_GETSIG);
-    INS(I_FIND);
-    INS(I_PEEK);
-    INS(I_SRDOPT);
-    INS(I_GRDOPT);
-    INS(I_NREAD);
-    INS(I_FDINSERT);
-    INS(I_STR);
-    INS(I_SWROPT);
-#ifdef I_GWROPT
-    /* despite the comment above, old-ish glibcs miss a couple... */
-    INS(I_GWROPT);
-#endif
-    INS(I_SENDFD);
-    INS(I_RECVFD);
-    INS(I_LIST);
-    INS(I_ATMARK);
-    INS(I_CKBAND);
-    INS(I_GETBAND);
-    INS(I_CANPUT);
-    INS(I_SETCLTIME);
-#ifdef I_GETCLTIME
-    INS(I_GETCLTIME);
-#endif
-    INS(I_LINK);
-    INS(I_UNLINK);
-    INS(I_PLINK);
-    INS(I_PUNLINK);
-#endif
-
-    return 0;
-}
-
-PyMODINIT_FUNC
-initfcntl(void)
-{
-    PyObject *m, *d;
-
-    /* Create the module and add the functions and documentation */
-    m = Py_InitModule3("fcntl", fcntl_methods, module_doc);
-    if (m == NULL)
-        return;
-
-    /* Add some symbolic constants to the module */
-    d = PyModule_GetDict(m);
-    all_ins(d);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/flmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/flmodule.c
deleted file mode 100644
index ce6f766..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/flmodule.c
+++ /dev/null
@@ -1,2144 +0,0 @@
-/* FL module -- interface to Mark Overmars' FORMS Library. */
-
-/* This code works with FORMS version 2.2 (if you defined
-   OBSOLETE_FORMS_CALLS), and 2.3.
-   FORMS can be ftp'ed from ftp.cs.ruu.nl (131.211.80.17), directory
-   /pub/SGI/FORMS. */
-
-/* A half-hearted attempt has been made to allow programs using this
- * module to exploit parallelism (through the threads module). No provisions
- * have been made for multiple threads to use this module at the same time,
- * though. So, a program with a forms thread and a non-forms thread will work
- * fine but a program with two threads using forms will probably crash (unless
- * the program takes precaution to ensure that only one thread can be in
- * this module at any time). This will have to be fixed some time.
- * (A fix will probably also have to synchronize with the gl module).
- */
-
-#include "Python.h"
-#include "forms.h"
-#include "structmember.h"
-
-/* Generic Forms Objects */
-
-typedef struct {
-    PyObject_HEAD
-    FL_OBJECT *ob_generic;
-    PyMethodDef *ob_methods;
-    PyObject *ob_callback;
-    PyObject *ob_callback_arg;
-} genericobject;
-
-static PyTypeObject GenericObjecttype;
-
-#define is_genericobject(g) ((g)->ob_type == &GenericObjecttype)
-
-/* List of all objects (XXX this should be a hash table on address...) */
-
-static PyObject *allgenerics = NULL;
-static int nfreeslots = 0;
-
-/* Add an object to the list of known objects */
-
-static void
-knowgeneric(genericobject *g)
-{
-    int i, n;
-    /* Create the list if it doesn't already exist */
-    if (allgenerics == NULL) {
-        allgenerics = PyList_New(0);
-        if (allgenerics == NULL) {
-            PyErr_Clear();
-            return; /* Too bad, live without allgenerics... */
-        }
-    }
-    if (nfreeslots > 0) {
-        /* Search the list for reusable slots (NULL items) */
-        /* XXX This can be made faster! */
-        n = PyList_Size(allgenerics);
-        for (i = 0; i < n; i++) {
-            if (PyList_GetItem(allgenerics, i) == NULL) {
-                Py_INCREF(g);
-                PyList_SetItem(allgenerics, i, (PyObject *)g);
-                nfreeslots--;
-                return;
-            }
-        }
-        /* Strange... no free slots found... */
-        nfreeslots = 0;
-    }
-    /* No free entries, append new item to the end */
-    PyList_Append(allgenerics, (PyObject *)g);
-}
-
-/* Find an object in the list of known objects */
-
-static genericobject *
-findgeneric(FL_OBJECT *generic)
-{
-    int i, n;
-    genericobject *g;
-
-    if (allgenerics == NULL)
-        return NULL; /* No objects known yet */
-    n = PyList_Size(allgenerics);
-    for (i = 0; i < n; i++) {
-        g = (genericobject *)PyList_GetItem(allgenerics, i);
-        if (g != NULL && g->ob_generic == generic)
-            return g;
-    }
-    return NULL; /* Unknown object */
-}
-
-/* Remove an object from the list of known objects */
-
-static void
-forgetgeneric(genericobject *g)
-{
-    int i, n;
-
-    Py_XDECREF(g->ob_callback);
-    g->ob_callback = NULL;
-    Py_XDECREF(g->ob_callback_arg);
-    g->ob_callback_arg = NULL;
-    if (allgenerics == NULL)
-        return; /* No objects known yet */
-    n = PyList_Size(allgenerics);
-    for (i = 0; i < n; i++) {
-        if (g == (genericobject *)PyList_GetItem(allgenerics, i)) {
-            PyList_SetItem(allgenerics, i, (PyObject *)NULL);
-            nfreeslots++;
-            break;
-        }
-    }
-}
-
-/* Called when a form is about to be freed --
-   remove all the objects that we know about from it. */
-
-static void
-releaseobjects(FL_FORM *form)
-{
-    int i, n;
-    genericobject *g;
-
-    if (allgenerics == NULL)
-        return; /* No objects known yet */
-    n = PyList_Size(allgenerics);
-    for (i = 0; i < n; i++) {
-        g = (genericobject *)PyList_GetItem(allgenerics, i);
-        if (g != NULL && g->ob_generic->form == form) {
-            fl_delete_object(g->ob_generic);
-            /* The object is now unreachable for
-               do_forms and check_forms, so
-               delete it from the list of known objects */
-            Py_XDECREF(g->ob_callback);
-            g->ob_callback = NULL;
-            Py_XDECREF(g->ob_callback_arg);
-            g->ob_callback_arg = NULL;
-            PyList_SetItem(allgenerics, i, (PyObject *)NULL);
-            nfreeslots++;
-        }
-    }
-}
-
-
-/* Methods of generic objects */
-
-static PyObject *
-generic_set_call_back(genericobject *g, PyObject *args)
-{
-    if (PyTuple_GET_SIZE(args) == 0) {
-        Py_XDECREF(g->ob_callback);
-        Py_XDECREF(g->ob_callback_arg);
-        g->ob_callback = NULL;
-        g->ob_callback_arg = NULL;
-    }
-    else {
-    PyObject *a, *b;
-    if (!PyArg_UnpackTuple(args, "set_call_back", 2, 2, &a, &b))
-        return NULL;
-        Py_XDECREF(g->ob_callback);
-        Py_XDECREF(g->ob_callback_arg);
-        g->ob_callback = a;
-        Py_INCREF(g->ob_callback);
-        g->ob_callback_arg = b;
-        Py_INCREF(g->ob_callback_arg);
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-generic_call(genericobject *g, void (*func)(FL_OBJECT *))
-{
-    (*func)(g->ob_generic);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-generic_delete_object(genericobject *g)
-{
-    PyObject *res;
-    res = generic_call(g, fl_delete_object);
-    if (res != NULL)
-        forgetgeneric(g);
-    return res;
-}
-
-static PyObject *
-generic_show_object(genericobject *g)
-{
-    return generic_call(g, fl_show_object);
-}
-
-static PyObject *
-generic_hide_object(genericobject *g)
-{
-    return generic_call(g, fl_hide_object);
-}
-
-static PyObject *
-generic_redraw_object(genericobject *g)
-{
-    return generic_call(g, fl_redraw_object);
-}
-
-#ifdef OBSOLETE_FORMS_CALLS
-
- /* (un)freeze_object() are obsolete in FORMS 2.2 and unsupported
-    in 2.3.  Since there's no foolproof way to tell which version we're
-    using, we omit them unconditionally. */
-
-static PyObject *
-generic_freeze_object(genericobject *g)
-{
-    return generic_call(g, fl_freeze_object);
-}
-
-static PyObject *
-generic_unfreeze_object(genericobject *g)
-{
-    return generic_call(g, fl_unfreeze_object);
-}
-
-#endif /* OBSOLETE_FORMS_CALLS */
-
-static PyObject *
-generic_activate_object(genericobject *g)
-{
-    return generic_call(g, fl_activate_object);
-}
-
-static PyObject *
-generic_deactivate_object(genericobject *g)
-{
-    return generic_call(g, fl_deactivate_object);
-}
-
-static PyObject *
-generic_set_object_shortcut(genericobject *g, PyObject *args)
-{
-    char *str;
-    if (!PyArg_ParseTuple(args, "s:set_object_shortcut", &str))
-        return NULL;
-    fl_set_object_shortcut(g->ob_generic, str);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyMethodDef generic_methods[] = {
-    {"set_call_back",           (PyCFunction)generic_set_call_back, METH_VARARGS},
-    {"delete_object",           (PyCFunction)generic_delete_object, METH_NOARGS},
-    {"show_object",             (PyCFunction)generic_show_object, METH_NOARGS},
-    {"hide_object",             (PyCFunction)generic_hide_object, METH_NOARGS},
-    {"redraw_object",           (PyCFunction)generic_redraw_object, METH_NOARGS},
-#ifdef OBSOLETE_FORMS_CALLS
-    {"freeze_object",           (PyCFunction)generic_freeze_object, METH_NOARGS},
-    {"unfreeze_object",         (PyCFunction)generic_unfreeze_object, METH_NOARGS},
-#endif
-    {"activate_object",         (PyCFunction)generic_activate_object, METH_NOARGS},
-    {"deactivate_object",       (PyCFunction)generic_deactivate_object, METH_NOARGS},
-    {"set_object_shortcut",     (PyCFunction)generic_set_object_shortcut, METH_VARARGS},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-static void
-generic_dealloc(genericobject *g)
-{
-    fl_free_object(g->ob_generic);
-    Py_XDECREF(g->ob_callback);
-    Py_XDECREF(g->ob_callback_arg);
-    PyObject_Del(g);
-}
-
-#define OFF(x) offsetof(FL_OBJECT, x)
-
-static struct memberlist generic_memberlist[] = {
-    {"objclass",        T_INT,          OFF(objclass),  RO},
-    {"type",            T_INT,          OFF(type),      RO},
-    {"boxtype",         T_INT,          OFF(boxtype)},
-    {"x",               T_FLOAT,        OFF(x)},
-    {"y",               T_FLOAT,        OFF(y)},
-    {"w",               T_FLOAT,        OFF(w)},
-    {"h",               T_FLOAT,        OFF(h)},
-    {"col1",            T_INT,          OFF(col1)},
-    {"col2",            T_INT,          OFF(col2)},
-    {"align",           T_INT,          OFF(align)},
-    {"lcol",            T_INT,          OFF(lcol)},
-    {"lsize",           T_FLOAT,        OFF(lsize)},
-    /* "label" is treated specially! */
-    {"lstyle",          T_INT,          OFF(lstyle)},
-    {"pushed",          T_INT,          OFF(pushed),    RO},
-    {"focus",           T_INT,          OFF(focus),     RO},
-    {"belowmouse",      T_INT,          OFF(belowmouse),RO},
-/*      {"frozen",      T_INT,          OFF(frozen),    RO},    */
-    {"active",          T_INT,          OFF(active)},
-    {"input",           T_INT,          OFF(input)},
-    {"visible",         T_INT,          OFF(visible),   RO},
-    {"radio",           T_INT,          OFF(radio)},
-    {"automatic",       T_INT,          OFF(automatic)},
-    {NULL}      /* Sentinel */
-};
-
-#undef OFF
-
-static PyObject *
-generic_getattr(genericobject *g, char *name)
-{
-    PyObject *meth;
-
-    /* XXX Ought to special-case name "__methods__" */
-    if (g-> ob_methods) {
-        meth = Py_FindMethod(g->ob_methods, (PyObject *)g, name);
-        if (meth != NULL) return meth;
-        PyErr_Clear();
-    }
-
-    meth = Py_FindMethod(generic_methods, (PyObject *)g, name);
-    if (meth != NULL)
-        return meth;
-    PyErr_Clear();
-
-    /* "label" is an exception, getmember only works for char pointers,
-       not for char arrays */
-    if (strcmp(name, "label") == 0)
-        return PyString_FromString(g->ob_generic->label);
-
-    return PyMember_Get((char *)g->ob_generic, generic_memberlist, name);
-}
-
-static int
-generic_setattr(genericobject *g, char *name, PyObject *v)
-{
-    int ret;
-
-    if (v == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "can't delete forms object attributes");
-        return -1;
-    }
-
-    /* "label" is an exception: setmember doesn't set strings;
-       and FORMS wants you to call a function to set the label */
-    if (strcmp(name, "label") == 0) {
-        if (!PyString_Check(v)) {
-            PyErr_SetString(PyExc_TypeError,
-                            "label attr must be string");
-            return -1;
-        }
-        fl_set_object_label(g->ob_generic, PyString_AsString(v));
-        return 0;
-    }
-
-    ret = PyMember_Set((char *)g->ob_generic, generic_memberlist, name, v);
-
-    /* Rather than calling all the various set_object_* functions,
-       we call fl_redraw_object here.  This is sometimes redundant
-       but I doubt that's a big problem */
-    if (ret == 0)
-        fl_redraw_object(g->ob_generic);
-
-    return ret;
-}
-
-static PyObject *
-generic_repr(genericobject *g)
-{
-    char buf[100];
-    PyOS_snprintf(buf, sizeof(buf), "<FORMS_object at %p, objclass=%d>",
-                  g, g->ob_generic->objclass);
-    return PyString_FromString(buf);
-}
-
-static PyTypeObject GenericObjecttype = {
-    PyObject_HEAD_INIT(&PyType_Type)
-    0,                                  /*ob_size*/
-    "fl.FORMS_object",                  /*tp_name*/
-    sizeof(genericobject),              /*tp_size*/
-    0,                                  /*tp_itemsize*/
-    /* methods */
-    (destructor)generic_dealloc,        /*tp_dealloc*/
-    0,                                  /*tp_print*/
-    (getattrfunc)generic_getattr,       /*tp_getattr*/
-    (setattrfunc)generic_setattr,       /*tp_setattr*/
-    0,                                  /*tp_compare*/
-    (reprfunc)generic_repr,             /*tp_repr*/
-};
-
-static PyObject *
-newgenericobject(FL_OBJECT *generic, PyMethodDef *methods)
-{
-    genericobject *g;
-    g = PyObject_New(genericobject, &GenericObjecttype);
-    if (g == NULL)
-        return NULL;
-    g-> ob_generic = generic;
-    g->ob_methods = methods;
-    g->ob_callback = NULL;
-    g->ob_callback_arg = NULL;
-    knowgeneric(g);
-    return (PyObject *)g;
-}
-
-/**********************************************************************/
-/* Some common calling sequences */
-
-/* void func (object, float) */
-static PyObject *
-call_forms_INf (void (*func)(FL_OBJECT *, float), FL_OBJECT *obj, PyObject *args)
-{
-    float parameter;
-
-    if (!PyArg_Parse(args, "f", &parameter)) return NULL;
-
-    (*func) (obj, parameter);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/* void func (object, float) */
-static PyObject *
-call_forms_INfINf (void (*func)(FL_OBJECT *, float, float), FL_OBJECT *obj, PyObject *args)
-{
-    float par1, par2;
-
-    if (!PyArg_Parse(args, "(ff)", &par1, &par2)) return NULL;
-
-    (*func) (obj, par1, par2);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/* void func (object, int) */
-static PyObject *
-call_forms_INi (void (*func)(FL_OBJECT *, int), FL_OBJECT *obj, PyObject *args)
-{
-    int parameter;
-
-    if (!PyArg_Parse(args, "i", &parameter)) return NULL;
-
-    (*func) (obj, parameter);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/* void func (object, char) */
-static PyObject *
-call_forms_INc (void (*func)(FL_OBJECT *, int), FL_OBJECT *obj, PyObject *args)
-{
-    char *a;
-
-    if (!PyArg_Parse(args, "s", &a)) return NULL;
-
-    (*func) (obj, a[0]);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/* void func (object, string) */
-static PyObject *
-call_forms_INstr (void (*func)(FL_OBJECT *, char *), FL_OBJECT *obj, PyObject *args)
-{
-    char *a;
-
-    if (!PyArg_Parse(args, "s", &a)) return NULL;
-
-    (*func) (obj, a);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-
-/* void func (object, int, string) */
-static PyObject *
-call_forms_INiINstr (void (*func)(FL_OBJECT *, int, char *), FL_OBJECT *obj, PyObject *args)
-{
-    char *b;
-    int a;
-
-    if (!PyArg_Parse(args, "(is)", &a, &b)) return NULL;
-
-    (*func) (obj, a, b);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-#ifdef UNUSED
-/* void func (object, int, int) */
-static PyObject *
-call_forms_INiINi (void (*func)(FL_OBJECT *, int, int), FL_OBJECT *obj, PyObject *args)
-{
-    int par1, par2;
-
-    if (!PyArg_Parse(args, "(ii)", &par1, &par2)) return NULL;
-
-    (*func) (obj, par1, par2);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-/* int func (object) */
-static PyObject *
-call_forms_Ri (int (*func)(FL_OBJECT *), FL_OBJECT *obj)
-{
-    int retval;
-
-    retval = (*func) (obj);
-
-    return PyInt_FromLong ((long) retval);
-}
-
-/* char * func (object) */
-static PyObject *
-call_forms_Rstr (char * (*func)(FL_OBJECT *), FL_OBJECT *obj)
-{
-    char *str;
-
-    str = (*func) (obj);
-
-    if (str == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyString_FromString (str);
-}
-
-/* int func (object) */
-static PyObject *
-call_forms_Rf (float (*func)(FL_OBJECT *), FL_OBJECT *obj)
-{
-    float retval;
-
-    retval = (*func) (obj);
-
-    return PyFloat_FromDouble (retval);
-}
-
-static PyObject *
-call_forms_OUTfOUTf (void (*func)(FL_OBJECT *, float *, float *), FL_OBJECT *obj)
-{
-    float f1, f2;
-
-    (*func) (obj, &f1, &f2);
-
-    return Py_BuildValue("(ff)", f1, f2);
-}
-
-#ifdef UNUSED
-static PyObject *
-call_forms_OUTf (void (*func)(FL_OBJECT *, float *), FL_OBJECT *obj)
-{
-    float f;
-
-    (*func) (obj, &f);
-
-    return PyFloat_FromDouble (f);
-}
-#endif
-
-/**********************************************************************/
-/* Class : browser */
-
-static PyObject *
-set_browser_topline(genericobject *g, PyObject *args)
-{
-    return call_forms_INi (fl_set_browser_topline, g-> ob_generic, args);
-}
-
-static PyObject *
-clear_browser(genericobject *g)
-{
-    return generic_call (g, fl_clear_browser);
-}
-
-static PyObject *
-add_browser_line (genericobject *g, PyObject *args)
-{
-    return call_forms_INstr (fl_add_browser_line, g-> ob_generic, args);
-}
-
-static PyObject *
-addto_browser (genericobject *g, PyObject *args)
-{
-    return call_forms_INstr (fl_addto_browser, g-> ob_generic, args);
-}
-
-static PyObject *
-insert_browser_line (genericobject *g, PyObject *args)
-{
-    return call_forms_INiINstr (fl_insert_browser_line,
-                                g-> ob_generic, args);
-}
-
-static PyObject *
-delete_browser_line (genericobject *g, PyObject *args)
-{
-    return call_forms_INi (fl_delete_browser_line, g-> ob_generic, args);
-}
-
-static PyObject *
-replace_browser_line (genericobject *g, PyObject *args)
-{
-    return call_forms_INiINstr (fl_replace_browser_line,
-                                g-> ob_generic, args);
-}
-
-static PyObject *
-get_browser_line(genericobject *g, PyObject *args)
-{
-    int i;
-    char *str;
-
-    if (!PyArg_Parse(args, "i", &i))
-        return NULL;
-
-    str = fl_get_browser_line (g->ob_generic, i);
-
-    if (str == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyString_FromString (str);
-}
-
-static PyObject *
-load_browser (genericobject *g, PyObject *args)
-{
-    /* XXX strictly speaking this is wrong since fl_load_browser
-       XXX returns int, not void */
-    return call_forms_INstr (fl_load_browser, g-> ob_generic, args);
-}
-
-static PyObject *
-get_browser_maxline(genericobject *g)
-{
-    return call_forms_Ri (fl_get_browser_maxline, g-> ob_generic);
-}
-
-static PyObject *
-select_browser_line (genericobject *g, PyObject *args)
-{
-    return call_forms_INi (fl_select_browser_line, g-> ob_generic, args);
-}
-
-static PyObject *
-deselect_browser_line (genericobject *g, PyObject *args)
-{
-    return call_forms_INi (fl_deselect_browser_line, g-> ob_generic, args);
-}
-
-static PyObject *
-deselect_browser (genericobject *g)
-{
-    return generic_call (g, fl_deselect_browser);
-}
-
-static PyObject *
-isselected_browser_line (genericobject *g, PyObject *args)
-{
-    int i, j;
-
-    if (!PyArg_Parse(args, "i", &i))
-        return NULL;
-
-    j = fl_isselected_browser_line (g->ob_generic, i);
-
-    return PyInt_FromLong (j);
-}
-
-static PyObject *
-get_browser (genericobject *g)
-{
-    return call_forms_Ri (fl_get_browser, g-> ob_generic);
-}
-
-static PyObject *
-set_browser_fontsize (genericobject *g, PyObject *args)
-{
-    return call_forms_INf (fl_set_browser_fontsize, g-> ob_generic, args);
-}
-
-static PyObject *
-set_browser_fontstyle (genericobject *g, PyObject *args)
-{
-    return call_forms_INi (fl_set_browser_fontstyle, g-> ob_generic, args);
-}
-
-static PyObject *
-set_browser_specialkey (genericobject *g, PyObject *args)
-{
-    return call_forms_INc(fl_set_browser_specialkey, g-> ob_generic, args);
-}
-
-static PyMethodDef browser_methods[] = {
-    {"set_browser_topline",             (PyCFunction)set_browser_topline,
-     METH_OLDARGS},
-    {"clear_browser",                   (PyCFunction)clear_browser,
-     METH_NOARGS},
-    {"add_browser_line",                (PyCFunction)add_browser_line,
-     METH_OLDARGS},
-    {"addto_browser",                   (PyCFunction)addto_browser,
-     METH_OLDARGS},
-    {"insert_browser_line",             (PyCFunction)insert_browser_line,
-     METH_OLDARGS},
-    {"delete_browser_line",             (PyCFunction)delete_browser_line,
-     METH_OLDARGS},
-    {"replace_browser_line",            (PyCFunction)replace_browser_line,
-     METH_OLDARGS},
-    {"get_browser_line",                (PyCFunction)get_browser_line,
-     METH_OLDARGS},
-    {"load_browser",                    (PyCFunction)load_browser,
-     METH_OLDARGS},
-    {"get_browser_maxline",             (PyCFunction)get_browser_maxline,
-     METH_NOARGS,}
-    {"select_browser_line",             (PyCFunction)select_browser_line,
-     METH_OLDARGS},
-    {"deselect_browser_line",           (PyCFunction)deselect_browser_line,
-     METH_OLDARGS},
-    {"deselect_browser",                (PyCFunction)deselect_browser,
-     METH_NOARGS,}
-    {"isselected_browser_line",         (PyCFunction)isselected_browser_line,
-     METH_OLDARGS},
-    {"get_browser",                     (PyCFunction)get_browser,
-     METH_NOARGS,}
-    {"set_browser_fontsize",            (PyCFunction)set_browser_fontsize,
-     METH_OLDARGS},
-    {"set_browser_fontstyle",           (PyCFunction)set_browser_fontstyle,
-     METH_OLDARGS},
-    {"set_browser_specialkey",          (PyCFunction)set_browser_specialkey,
-     METH_OLDARGS},
-    {NULL,                              NULL}           /* sentinel */
-};
-
-/* Class: button */
-
-static PyObject *
-set_button(genericobject *g, PyObject *args)
-{
-    return call_forms_INi (fl_set_button, g-> ob_generic, args);
-}
-
-static PyObject *
-get_button(genericobject *g)
-{
-    return call_forms_Ri (fl_get_button, g-> ob_generic);
-}
-
-static PyObject *
-get_button_numb(genericobject *g)
-{
-    return call_forms_Ri (fl_get_button_numb, g-> ob_generic);
-}
-
-static PyObject *
-set_button_shortcut(genericobject *g, PyObject *args)
-{
-    return call_forms_INstr (fl_set_button_shortcut, g-> ob_generic, args);
-}
-
-static PyMethodDef button_methods[] = {
-    {"set_button",              (PyCFunction)set_button, METH_OLDARGS},
-    {"get_button",              (PyCFunction)get_button, METH_NOARGS},
-    {"get_button_numb",         (PyCFunction)get_button_numb, METH_NOARGS},
-    {"set_button_shortcut",     (PyCFunction)set_button_shortcut, METH_OLDARGS},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-/* Class: choice */
-
-static PyObject *
-set_choice(genericobject *g, PyObject *args)
-{
-    return call_forms_INi (fl_set_choice, g-> ob_generic, args);
-}
-
-static PyObject *
-get_choice(genericobject *g)
-{
-    return call_forms_Ri (fl_get_choice, g-> ob_generic);
-}
-
-static PyObject *
-clear_choice (genericobject *g)
-{
-    return generic_call (g, fl_clear_choice);
-}
-
-static PyObject *
-addto_choice (genericobject *g, PyObject *args)
-{
-    return call_forms_INstr (fl_addto_choice, g-> ob_generic, args);
-}
-
-static PyObject *
-replace_choice (genericobject *g, PyObject *args)
-{
-    return call_forms_INiINstr (fl_replace_choice, g-> ob_generic, args);
-}
-
-static PyObject *
-delete_choice (genericobject *g, PyObject *args)
-{
-    return call_forms_INi (fl_delete_choice, g-> ob_generic, args);
-}
-
-static PyObject *
-get_choice_text (genericobject *g)
-{
-    return call_forms_Rstr (fl_get_choice_text, g-> ob_generic);
-}
-
-static PyObject *
-set_choice_fontsize (genericobject *g, PyObject *args)
-{
-    return call_forms_INf (fl_set_choice_fontsize, g-> ob_generic, args);
-}
-
-static PyObject *
-set_choice_fontstyle (genericobject *g, PyObject *args)
-{
-    return call_forms_INi (fl_set_choice_fontstyle, g-> ob_generic, args);
-}
-
-static PyMethodDef choice_methods[] = {
-    {"set_choice",              (PyCFunction)set_choice,      METH_OLDARGS},
-    {"get_choice",              (PyCFunction)get_choice,      METH_NOARGS},
-    {"clear_choice",            (PyCFunction)clear_choice,    METH_NOARGS},
-    {"addto_choice",            (PyCFunction)addto_choice,    METH_OLDARGS},
-    {"replace_choice",          (PyCFunction)replace_choice,  METH_OLDARGS},
-    {"delete_choice",           (PyCFunction)delete_choice,   METH_OLDARGS},
-    {"get_choice_text",         (PyCFunction)get_choice_text, METH_NOARGS},
-    {"set_choice_fontsize", (PyCFunction)set_choice_fontsize, METH_OLDARGS},
-    {"set_choice_fontstyle",(PyCFunction)set_choice_fontstyle, METH_OLDARGS},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-/* Class : Clock */
-
-static PyObject *
-get_clock(genericobject *g)
-{
-    int i0, i1, i2;
-
-    fl_get_clock (g->ob_generic, &i0, &i1, &i2);
-
-    return Py_BuildValue("(iii)", i0, i1, i2);
-}
-
-static PyMethodDef clock_methods[] = {
-    {"get_clock",               (PyCFunction)get_clock, METH_NOARGS},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-/* CLass : Counters */
-
-static PyObject *
-get_counter_value(genericobject *g)
-{
-    return call_forms_Rf (fl_get_counter_value, g-> ob_generic);
-}
-
-static PyObject *
-set_counter_value (genericobject *g, PyObject *args)
-{
-    return call_forms_INf (fl_set_counter_value, g-> ob_generic, args);
-}
-
-static PyObject *
-set_counter_precision (genericobject *g, PyObject *args)
-{
-    return call_forms_INi (fl_set_counter_precision, g-> ob_generic, args);
-}
-
-static PyObject *
-set_counter_bounds (genericobject *g, PyObject *args)
-{
-    return call_forms_INfINf (fl_set_counter_bounds, g-> ob_generic, args);
-}
-
-static PyObject *
-set_counter_step (genericobject *g, PyObject *args)
-{
-    return call_forms_INfINf (fl_set_counter_step, g-> ob_generic, args);
-}
-
-static PyObject *
-set_counter_return (genericobject *g, PyObject *args)
-{
-    return call_forms_INi (fl_set_counter_return, g-> ob_generic, args);
-}
-
-static PyMethodDef counter_methods[] = {
-    {"set_counter_value",               (PyCFunction)set_counter_value,
-     METH_OLDARGS},
-    {"get_counter_value",               (PyCFunction)get_counter_value,
-     METH_NOARGS},
-    {"set_counter_bounds",              (PyCFunction)set_counter_bounds,
-     METH_OLDARGS},
-    {"set_counter_step",                (PyCFunction)set_counter_step,
-     METH_OLDARGS},
-    {"set_counter_precision",           (PyCFunction)set_counter_precision,
-     METH_OLDARGS},
-    {"set_counter_return",              (PyCFunction)set_counter_return,
-     METH_OLDARGS},
-    {NULL,                              NULL}           /* sentinel */
-};
-
-
-/* Class: Dials */
-
-static PyObject *
-get_dial_value(genericobject *g)
-{
-    return call_forms_Rf (fl_get_dial_value, g-> ob_generic);
-}
-
-static PyObject *
-set_dial_value (genericobject *g, PyObject *args)
-{
-    return call_forms_INf (fl_set_dial_value, g-> ob_generic, args);
-}
-
-static PyObject *
-set_dial_bounds (genericobject *g, PyObject *args)
-{
-    return call_forms_INfINf (fl_set_dial_bounds, g-> ob_generic, args);
-}
-
-static PyObject *
-get_dial_bounds (genericobject *g)
-{
-    return call_forms_OUTfOUTf (fl_get_dial_bounds, g-> ob_generic);
-}
-
-static PyObject *
-set_dial_step (genericobject *g, PyObject *args)
-{
-    return call_forms_INf (fl_set_dial_step, g-> ob_generic, args);
-}
-
-static PyMethodDef dial_methods[] = {
-    {"set_dial_value",          (PyCFunction)set_dial_value,  METH_OLDARGS},
-    {"get_dial_value",          (PyCFunction)get_dial_value,  METH_NOARGS},
-    {"set_dial_bounds",         (PyCFunction)set_dial_bounds, METH_OLDARGS},
-    {"get_dial_bounds",         (PyCFunction)get_dial_bounds, METH_NOARGS},
-    {"set_dial_step",           (PyCFunction)set_dial_step,   METH_OLDARGS},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-/* Class : Input */
-
-static PyObject *
-set_input (genericobject *g, PyObject *args)
-{
-    return call_forms_INstr (fl_set_input, g-> ob_generic, args);
-}
-
-static PyObject *
-get_input (genericobject *g)
-{
-    return call_forms_Rstr (fl_get_input, g-> ob_generic);
-}
-
-static PyObject *
-set_input_color (genericobject *g, PyObject *args)
-{
-    return call_forms_INfINf (fl_set_input_color, g-> ob_generic, args);
-}
-
-static PyObject *
-set_input_return (genericobject *g, PyObject *args)
-{
-    return call_forms_INi (fl_set_input_return, g-> ob_generic, args);
-}
-
-static PyMethodDef input_methods[] = {
-    {"set_input",               (PyCFunction)set_input,        METH_OLDARGS},
-    {"get_input",               (PyCFunction)get_input,        METH_NOARGS},
-    {"set_input_color",         (PyCFunction)set_input_color,  METH_OLDARGS},
-    {"set_input_return",        (PyCFunction)set_input_return, METH_OLDARGS},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-
-/* Class : Menu */
-
-static PyObject *
-set_menu (genericobject *g, PyObject *args)
-{
-    return call_forms_INstr (fl_set_menu, g-> ob_generic, args);
-}
-
-static PyObject *
-get_menu (genericobject *g)
-{
-    /* XXX strictly speaking this is wrong since fl_get_menu
-       XXX returns long, not int */
-    return call_forms_Ri (fl_get_menu, g-> ob_generic);
-}
-
-static PyObject *
-get_menu_text (genericobject *g)
-{
-    return call_forms_Rstr (fl_get_menu_text, g-> ob_generic);
-}
-
-static PyObject *
-addto_menu (genericobject *g, PyObject *args)
-{
-    return call_forms_INstr (fl_addto_menu, g-> ob_generic, args);
-}
-
-static PyMethodDef menu_methods[] = {
-    {"set_menu",                (PyCFunction)set_menu,      METH_OLDARGS},
-    {"get_menu",                (PyCFunction)get_menu,      METH_NOARGS},
-    {"get_menu_text",           (PyCFunction)get_menu_text, METH_NOARGS},
-    {"addto_menu",              (PyCFunction)addto_menu,    METH_OLDARGS},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-
-/* Class: Sliders */
-
-static PyObject *
-get_slider_value(genericobject *g)
-{
-    return call_forms_Rf (fl_get_slider_value, g-> ob_generic);
-}
-
-static PyObject *
-set_slider_value (genericobject *g, PyObject *args)
-{
-    return call_forms_INf (fl_set_slider_value, g-> ob_generic, args);
-}
-
-static PyObject *
-set_slider_bounds (genericobject *g, PyObject *args)
-{
-    return call_forms_INfINf (fl_set_slider_bounds, g-> ob_generic, args);
-}
-
-static PyObject *
-get_slider_bounds (genericobject *g)
-{
-    return call_forms_OUTfOUTf(fl_get_slider_bounds, g-> ob_generic);
-}
-
-static PyObject *
-set_slider_return (genericobject *g, PyObject *args)
-{
-    return call_forms_INf (fl_set_slider_return, g-> ob_generic, args);
-}
-
-static PyObject *
-set_slider_size (genericobject *g, PyObject *args)
-{
-    return call_forms_INf (fl_set_slider_size, g-> ob_generic, args);
-}
-
-static PyObject *
-set_slider_precision (genericobject *g, PyObject *args)
-{
-    return call_forms_INi (fl_set_slider_precision, g-> ob_generic, args);
-}
-
-static PyObject *
-set_slider_step (genericobject *g, PyObject *args)
-{
-    return call_forms_INf (fl_set_slider_step, g-> ob_generic, args);
-}
-
-
-static PyMethodDef slider_methods[] = {
-    {"set_slider_value",        (PyCFunction)set_slider_value,  METH_OLDARGS},
-    {"get_slider_value",        (PyCFunction)get_slider_value,  METH_NOARGS},
-    {"set_slider_bounds",       (PyCFunction)set_slider_bounds, METH_OLDARGS},
-    {"get_slider_bounds",       (PyCFunction)get_slider_bounds, METH_NOARGS},
-    {"set_slider_return",       (PyCFunction)set_slider_return, METH_OLDARGS},
-    {"set_slider_size",         (PyCFunction)set_slider_size,   METH_OLDARGS},
-    {"set_slider_precision",(PyCFunction)set_slider_precision, METH_OLDARGS},
-    {"set_slider_step",         (PyCFunction)set_slider_step,   METH_OLDARGS},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-static PyObject *
-set_positioner_xvalue (genericobject *g, PyObject *args)
-{
-    return call_forms_INf (fl_set_positioner_xvalue, g-> ob_generic, args);
-}
-
-static PyObject *
-set_positioner_xbounds (genericobject *g, PyObject *args)
-{
-    return call_forms_INfINf (fl_set_positioner_xbounds,
-                              g-> ob_generic, args);
-}
-
-static PyObject *
-set_positioner_yvalue (genericobject *g, PyObject *args)
-{
-    return call_forms_INf (fl_set_positioner_yvalue, g-> ob_generic, args);
-}
-
-static PyObject *
-set_positioner_ybounds (genericobject *g, PyObject *args)
-{
-    return call_forms_INfINf (fl_set_positioner_ybounds,
-                              g-> ob_generic, args);
-}
-
-static PyObject *
-get_positioner_xvalue (genericobject *g)
-{
-    return call_forms_Rf (fl_get_positioner_xvalue, g-> ob_generic);
-}
-
-static PyObject *
-get_positioner_xbounds (genericobject *g)
-{
-    return call_forms_OUTfOUTf (fl_get_positioner_xbounds, g-> ob_generic);
-}
-
-static PyObject *
-get_positioner_yvalue (genericobject *g)
-{
-    return call_forms_Rf (fl_get_positioner_yvalue, g-> ob_generic);
-}
-
-static PyObject *
-get_positioner_ybounds (genericobject *g)
-{
-    return call_forms_OUTfOUTf (fl_get_positioner_ybounds, g-> ob_generic);
-}
-
-static PyMethodDef positioner_methods[] = {
-    {"set_positioner_xvalue",           (PyCFunction)set_positioner_xvalue,
-     METH_OLDARGS},
-    {"set_positioner_yvalue",           (PyCFunction)set_positioner_yvalue,
-     METH_OLDARGS},
-    {"set_positioner_xbounds",          (PyCFunction)set_positioner_xbounds,
-     METH_OLDARGS},
-    {"set_positioner_ybounds",          (PyCFunction)set_positioner_ybounds,
-     METH_OLDARGS},
-    {"get_positioner_xvalue",           (PyCFunction)get_positioner_xvalue,
-     METH_NOARGS},
-    {"get_positioner_yvalue",           (PyCFunction)get_positioner_yvalue,
-     METH_NOARGS},
-    {"get_positioner_xbounds",          (PyCFunction)get_positioner_xbounds,
-     METH_NOARGS},
-    {"get_positioner_ybounds",          (PyCFunction)get_positioner_ybounds,
-     METH_NOARGS},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-/* Class timer */
-
-static PyObject *
-set_timer (genericobject *g, PyObject *args)
-{
-    return call_forms_INf (fl_set_timer, g-> ob_generic, args);
-}
-
-static PyObject *
-get_timer (genericobject *g)
-{
-    return call_forms_Rf (fl_get_timer, g-> ob_generic);
-}
-
-static PyMethodDef timer_methods[] = {
-    {"set_timer",               (PyCFunction)set_timer, METH_OLDARGS},
-    {"get_timer",               (PyCFunction)get_timer, METH_NOARGS},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-/* Form objects */
-
-typedef struct {
-    PyObject_HEAD
-    FL_FORM *ob_form;
-} formobject;
-
-static PyTypeObject Formtype;
-
-#define is_formobject(v) ((v)->ob_type == &Formtype)
-
-static PyObject *
-form_show_form(formobject *f, PyObject *args)
-{
-    int place, border;
-    char *name;
-    if (!PyArg_Parse(args, "(iis)", &place, &border, &name))
-        return NULL;
-    fl_show_form(f->ob_form, place, border, name);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-form_call(void (*func)(FL_FORM *), FL_FORM *f)
-{
-    (*func)(f);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-form_call_INiINi(void (*func)(FL_FORM *, int, int), FL_FORM *f, PyObject *args)
-{
-    int a, b;
-
-    if (!PyArg_Parse(args, "(ii)", &a, &b)) return NULL;
-
-    (*func)(f, a, b);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-form_call_INfINf(void (*func)(FL_FORM *, float, float), FL_FORM *f, PyObject *args)
-{
-    float a, b;
-
-    if (!PyArg_Parse(args, "(ff)", &a, &b)) return NULL;
-
-    (*func)(f, a, b);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-form_hide_form(formobject *f)
-{
-    return form_call(fl_hide_form, f-> ob_form);
-}
-
-static PyObject *
-form_redraw_form(formobject *f)
-{
-    return form_call(fl_redraw_form, f-> ob_form);
-}
-
-static PyObject *
-form_set_form_position(formobject *f, PyObject *args)
-{
-    return form_call_INiINi(fl_set_form_position, f-> ob_form, args);
-}
-
-static PyObject *
-form_set_form_size(formobject *f, PyObject *args)
-{
-    return form_call_INiINi(fl_set_form_size, f-> ob_form, args);
-}
-
-static PyObject *
-form_scale_form(formobject *f, PyObject *args)
-{
-    return form_call_INfINf(fl_scale_form, f-> ob_form, args);
-}
-
-static PyObject *
-generic_add_object(formobject *f, PyObject *args, FL_OBJECT *(*func)(int, float, float, float, float, char*), PyMethodDef *internal_methods)
-{
-    int type;
-    float x, y, w, h;
-    char *name;
-    FL_OBJECT *obj;
-
-    if (!PyArg_Parse(args,"(iffffs)", &type,&x,&y,&w,&h,&name))
-        return NULL;
-
-    fl_addto_form (f-> ob_form);
-
-    obj = (*func) (type, x, y, w, h, name);
-
-    fl_end_form();
-
-    if (obj == NULL) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-
-    return newgenericobject (obj, internal_methods);
-}
-
-static PyObject *
-form_add_button(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_button, button_methods);
-}
-
-static PyObject *
-form_add_lightbutton(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_lightbutton, button_methods);
-}
-
-static PyObject *
-form_add_roundbutton(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_roundbutton, button_methods);
-}
-
-static PyObject *
-form_add_menu (formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_menu, menu_methods);
-}
-
-static PyObject *
-form_add_slider(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_slider, slider_methods);
-}
-
-static PyObject *
-form_add_valslider(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_valslider, slider_methods);
-}
-
-static PyObject *
-form_add_dial(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_dial, dial_methods);
-}
-
-static PyObject *
-form_add_counter(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_counter, counter_methods);
-}
-
-static PyObject *
-form_add_clock(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_clock, clock_methods);
-}
-
-static PyObject *
-form_add_box(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_box,
-                              (PyMethodDef *)NULL);
-}
-
-static PyObject *
-form_add_choice(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_choice, choice_methods);
-}
-
-static PyObject *
-form_add_browser(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_browser, browser_methods);
-}
-
-static PyObject *
-form_add_positioner(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_positioner,
-                              positioner_methods);
-}
-
-static PyObject *
-form_add_input(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_input, input_methods);
-}
-
-static PyObject *
-form_add_text(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_text,
-                              (PyMethodDef *)NULL);
-}
-
-static PyObject *
-form_add_timer(formobject *f, PyObject *args)
-{
-    return generic_add_object(f, args, fl_add_timer, timer_methods);
-}
-
-static PyObject *
-form_freeze_form(formobject *f)
-{
-    return form_call(fl_freeze_form, f-> ob_form);
-}
-
-static PyObject *
-form_unfreeze_form(formobject *f)
-{
-    return form_call(fl_unfreeze_form, f-> ob_form);
-}
-
-static PyObject *
-form_activate_form(formobject *f)
-{
-    return form_call(fl_activate_form, f-> ob_form);
-}
-
-static PyObject *
-form_deactivate_form(formobject *f)
-{
-    return form_call(fl_deactivate_form, f-> ob_form);
-}
-
-static PyObject *
-form_bgn_group(formobject *f, PyObject *args)
-{
-    FL_OBJECT *obj;
-
-    fl_addto_form(f-> ob_form);
-    obj = fl_bgn_group();
-    fl_end_form();
-
-    if (obj == NULL) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-
-    return newgenericobject (obj, (PyMethodDef *) NULL);
-}
-
-static PyObject *
-form_end_group(formobject *f, PyObject *args)
-{
-    fl_addto_form(f-> ob_form);
-    fl_end_group();
-    fl_end_form();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-forms_find_first_or_last(FL_OBJECT *(*func)(FL_FORM *, int, float, float), formobject *f, PyObject *args)
-{
-    int type;
-    float mx, my;
-    FL_OBJECT *generic;
-    genericobject *g;
-
-    if (!PyArg_Parse(args, "(iff)", &type, &mx, &my)) return NULL;
-
-    generic = (*func) (f-> ob_form, type, mx, my);
-
-    if (generic == NULL)
-    {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-
-    g = findgeneric(generic);
-    if (g == NULL) {
-        PyErr_SetString(PyExc_RuntimeError,
-                   "forms_find_{first|last} returns unknown object");
-        return NULL;
-    }
-    Py_INCREF(g);
-    return (PyObject *) g;
-}
-
-static PyObject *
-form_find_first(formobject *f, PyObject *args)
-{
-    return forms_find_first_or_last(fl_find_first, f, args);
-}
-
-static PyObject *
-form_find_last(formobject *f, PyObject *args)
-{
-    return forms_find_first_or_last(fl_find_last, f, args);
-}
-
-static PyObject *
-form_set_object_focus(formobject *f, PyObject *args)
-{
-    genericobject *g;
-    if (args == NULL || !is_genericobject(args)) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    g = (genericobject *)args;
-    fl_set_object_focus(f->ob_form, g->ob_generic);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyMethodDef form_methods[] = {
-/* adm */
-    {"show_form",               (PyCFunction)form_show_form,     METH_OLDARGS},
-    {"hide_form",               (PyCFunction)form_hide_form,     METH_NOARGS},
-    {"redraw_form",             (PyCFunction)form_redraw_form,   METH_NOARGS},
-    {"set_form_position",       (PyCFunction)form_set_form_position, METH_OLDARGS},
-    {"set_form_size",           (PyCFunction)form_set_form_size, METH_OLDARGS},
-    {"scale_form",              (PyCFunction)form_scale_form,    METH_OLDARGS},
-    {"freeze_form",             (PyCFunction)form_freeze_form,   METH_NOARGS},
-    {"unfreeze_form",           (PyCFunction)form_unfreeze_form, METH_NOARGS},
-    {"activate_form",           (PyCFunction)form_activate_form, METH_NOARGS},
-    {"deactivate_form",         (PyCFunction)form_deactivate_form, METH_NOARGS},
-    {"bgn_group",               (PyCFunction)form_bgn_group,  METH_OLDARGS},
-    {"end_group",               (PyCFunction)form_end_group,  METH_OLDARGS},
-    {"find_first",              (PyCFunction)form_find_first, METH_OLDARGS},
-    {"find_last",               (PyCFunction)form_find_last,  METH_OLDARGS},
-    {"set_object_focus",        (PyCFunction)form_set_object_focus, METH_OLDARGS},
-
-/* basic objects */
-    {"add_button",              (PyCFunction)form_add_button, METH_OLDARGS},
-/*      {"add_bitmap",          (method)form_add_bitmap, METH_OLDARGS}, */
-    {"add_lightbutton",         (PyCFunction)form_add_lightbutton, METH_OLDARGS},
-    {"add_roundbutton",         (PyCFunction)form_add_roundbutton, METH_OLDARGS},
-    {"add_menu",                (PyCFunction)form_add_menu,      METH_OLDARGS},
-    {"add_slider",              (PyCFunction)form_add_slider,    METH_OLDARGS},
-    {"add_positioner",          (PyCFunction)form_add_positioner, METH_OLDARGS},
-    {"add_valslider",           (PyCFunction)form_add_valslider, METH_OLDARGS},
-    {"add_dial",                (PyCFunction)form_add_dial,      METH_OLDARGS},
-    {"add_counter",             (PyCFunction)form_add_counter,   METH_OLDARGS},
-    {"add_box",                 (PyCFunction)form_add_box,       METH_OLDARGS},
-    {"add_clock",               (PyCFunction)form_add_clock,     METH_OLDARGS},
-    {"add_choice",              (PyCFunction)form_add_choice,    METH_OLDARGS},
-    {"add_browser",             (PyCFunction)form_add_browser,   METH_OLDARGS},
-    {"add_input",               (PyCFunction)form_add_input,     METH_OLDARGS},
-    {"add_timer",               (PyCFunction)form_add_timer,     METH_OLDARGS},
-    {"add_text",                (PyCFunction)form_add_text,      METH_OLDARGS},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-static void
-form_dealloc(formobject *f)
-{
-    releaseobjects(f->ob_form);
-    if (f->ob_form->visible)
-        fl_hide_form(f->ob_form);
-    fl_free_form(f->ob_form);
-    PyObject_Del(f);
-}
-
-#define OFF(x) offsetof(FL_FORM, x)
-
-static struct memberlist form_memberlist[] = {
-    {"window",          T_LONG,         OFF(window),    RO},
-    {"w",               T_FLOAT,        OFF(w)},
-    {"h",               T_FLOAT,        OFF(h)},
-    {"x",               T_FLOAT,        OFF(x),         RO},
-    {"y",               T_FLOAT,        OFF(y),         RO},
-    {"deactivated",     T_INT,          OFF(deactivated)},
-    {"visible",         T_INT,          OFF(visible),   RO},
-    {"frozen",          T_INT,          OFF(frozen),    RO},
-    {"doublebuf",       T_INT,          OFF(doublebuf)},
-    {NULL}      /* Sentinel */
-};
-
-#undef OFF
-
-static PyObject *
-form_getattr(formobject *f, char *name)
-{
-    PyObject *meth;
-
-    meth = Py_FindMethod(form_methods, (PyObject *)f, name);
-    if (meth != NULL)
-        return meth;
-    PyErr_Clear();
-    return PyMember_Get((char *)f->ob_form, form_memberlist, name);
-}
-
-static int
-form_setattr(formobject *f, char *name, PyObject *v)
-{
-    if (v == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "can't delete form attributes");
-        return -1;
-    }
-
-    return PyMember_Set((char *)f->ob_form, form_memberlist, name, v);
-}
-
-static PyObject *
-form_repr(formobject *f)
-{
-    char buf[100];
-    PyOS_snprintf(buf, sizeof(buf), "<FORMS_form at %p, window=%ld>",
-                  f, f->ob_form->window);
-    return PyString_FromString(buf);
-}
-
-static PyTypeObject Formtype = {
-    PyObject_HEAD_INIT(&PyType_Type)
-    0,                                  /*ob_size*/
-    "fl.FORMS_form",                    /*tp_name*/
-    sizeof(formobject),                 /*tp_size*/
-    0,                                  /*tp_itemsize*/
-    /* methods */
-    (destructor)form_dealloc,           /*tp_dealloc*/
-    0,                                  /*tp_print*/
-    (getattrfunc)form_getattr,          /*tp_getattr*/
-    (setattrfunc)form_setattr,          /*tp_setattr*/
-    0,                                  /*tp_compare*/
-    (reprfunc)form_repr,                /*tp_repr*/
-};
-
-static PyObject *
-newformobject(FL_FORM *form)
-{
-    formobject *f;
-    f = PyObject_New(formobject, &Formtype);
-    if (f == NULL)
-        return NULL;
-    f->ob_form = form;
-    return (PyObject *)f;
-}
-
-
-/* The "fl" module */
-
-static PyObject *
-forms_make_form(PyObject *dummy, PyObject *args)
-{
-    int type;
-    float w, h;
-    FL_FORM *form;
-    if (!PyArg_Parse(args, "(iff)", &type, &w, &h))
-        return NULL;
-    form = fl_bgn_form(type, w, h);
-    if (form == NULL) {
-        /* XXX Actually, cannot happen! */
-        PyErr_NoMemory();
-        return NULL;
-    }
-    fl_end_form();
-    return newformobject(form);
-}
-
-static PyObject *
-forms_activate_all_forms(PyObject *f, PyObject *args)
-{
-    fl_activate_all_forms();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-forms_deactivate_all_forms(PyObject *f, PyObject *args)
-{
-    fl_deactivate_all_forms();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *my_event_callback = NULL;
-
-static PyObject *
-forms_set_event_call_back(PyObject *dummy, PyObject *args)
-{
-    if (args == Py_None)
-        args = NULL;
-    my_event_callback = args;
-    Py_XINCREF(args);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-forms_do_or_check_forms(PyObject *dummy, FL_OBJECT *(*func)(void))
-{
-    FL_OBJECT *generic;
-    genericobject *g;
-    PyObject *arg, *res;
-
-    for (;;) {
-        Py_BEGIN_ALLOW_THREADS
-        generic = (*func)();
-        Py_END_ALLOW_THREADS
-        if (generic == NULL) {
-            Py_INCREF(Py_None);
-            return Py_None;
-        }
-        if (generic == FL_EVENT) {
-            int dev;
-            short val;
-            if (my_event_callback == NULL)
-                return PyInt_FromLong(-1L);
-            dev = fl_qread(&val);
-            arg = Py_BuildValue("(ih)", dev, val);
-            if (arg == NULL)
-                return NULL;
-            res = PyEval_CallObject(my_event_callback, arg);
-            Py_XDECREF(res);
-            Py_DECREF(arg);
-            if (res == NULL)
-                return NULL; /* Callback raised exception */
-            continue;
-        }
-        g = findgeneric(generic);
-        if (g == NULL) {
-            /* Object not known to us (some dialogs cause this) */
-            continue; /* Ignore it */
-        }
-        if (g->ob_callback == NULL) {
-            Py_INCREF(g);
-            return ((PyObject *) g);
-        }
-        arg = PyTuple_Pack(2, (PyObject *)g, g->ob_callback_arg);
-        if (arg == NULL)
-            return NULL;
-        res = PyEval_CallObject(g->ob_callback, arg);
-        Py_XDECREF(res);
-        Py_DECREF(arg);
-        if (res == NULL)
-            return NULL; /* Callback raised exception */
-    }
-}
-
-static PyObject *
-forms_do_forms(PyObject *dummy)
-{
-    return forms_do_or_check_forms(dummy, fl_do_forms);
-}
-
-static PyObject *
-forms_check_forms(PyObject *dummy)
-{
-    return forms_do_or_check_forms(dummy, fl_check_forms);
-}
-
-static PyObject *
-forms_do_only_forms(PyObject *dummy)
-{
-    return forms_do_or_check_forms(dummy, fl_do_only_forms);
-}
-
-static PyObject *
-forms_check_only_forms(PyObject *dummy)
-{
-    return forms_do_or_check_forms(dummy, fl_check_only_forms);
-}
-
-#ifdef UNUSED
-static PyObject *
-fl_call(void (*func)(void))
-{
-    (*func)();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-static PyObject *
-forms_set_graphics_mode(PyObject *dummy, PyObject *args)
-{
-    int rgbmode, doublebuf;
-
-    if (!PyArg_Parse(args, "(ii)", &rgbmode, &doublebuf))
-        return NULL;
-    fl_set_graphics_mode(rgbmode,doublebuf);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-forms_get_rgbmode(PyObject *dummy, PyObject *args)
-{
-    extern int fl_rgbmode;
-
-    if (args != NULL) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    return PyInt_FromLong((long)fl_rgbmode);
-}
-
-static PyObject *
-forms_show_errors(PyObject *dummy, PyObject *args)
-{
-    int show;
-    if (!PyArg_Parse(args, "i", &show))
-        return NULL;
-    fl_show_errors(show);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-forms_set_font_name(PyObject *dummy, PyObject *args)
-{
-    int numb;
-    char *name;
-    if (!PyArg_Parse(args, "(is)", &numb, &name))
-        return NULL;
-    fl_set_font_name(numb, name);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-
-static PyObject *
-forms_qdevice(PyObject *self, PyObject *args)
-{
-    short arg1;
-    if (!PyArg_Parse(args, "h", &arg1))
-        return NULL;
-    fl_qdevice(arg1);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-forms_unqdevice(PyObject *self, PyObject *args)
-{
-    short arg1;
-    if (!PyArg_Parse(args, "h", &arg1))
-        return NULL;
-    fl_unqdevice(arg1);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-forms_isqueued(PyObject *self, PyObject *args)
-{
-    long retval;
-    short arg1;
-    if (!PyArg_Parse(args, "h", &arg1))
-        return NULL;
-    retval = fl_isqueued(arg1);
-
-    return PyInt_FromLong(retval);
-}
-
-static PyObject *
-forms_qtest(PyObject *self, PyObject *args)
-{
-    long retval;
-    retval = fl_qtest();
-    return PyInt_FromLong(retval);
-}
-
-
-static PyObject *
-forms_qread(PyObject *self, PyObject *args)
-{
-    int dev;
-    short val;
-    Py_BEGIN_ALLOW_THREADS
-    dev = fl_qread(&val);
-    Py_END_ALLOW_THREADS
-    return Py_BuildValue("(ih)", dev, val);
-}
-
-static PyObject *
-forms_qreset(PyObject *self)
-{
-    fl_qreset();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-forms_qenter(PyObject *self, PyObject *args)
-{
-    short arg1, arg2;
-    if (!PyArg_Parse(args, "(hh)", &arg1, &arg2))
-        return NULL;
-    fl_qenter(arg1, arg2);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-forms_color(PyObject *self, PyObject *args)
-{
-    int arg;
-
-    if (!PyArg_Parse(args, "i", &arg)) return NULL;
-
-    fl_color((short) arg);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-forms_mapcolor(PyObject *self, PyObject *args)
-{
-    int arg0, arg1, arg2, arg3;
-
-    if (!PyArg_Parse(args, "(iiii)", &arg0, &arg1, &arg2, &arg3))
-        return NULL;
-
-    fl_mapcolor(arg0, (short) arg1, (short) arg2, (short) arg3);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-forms_getmcolor(PyObject *self, PyObject *args)
-{
-    int arg;
-    short r, g, b;
-
-    if (!PyArg_Parse(args, "i", &arg)) return NULL;
-
-    fl_getmcolor(arg, &r, &g, &b);
-
-    return Py_BuildValue("(hhh)", r, g, b);
-}
-
-static PyObject *
-forms_get_mouse(PyObject *self)
-{
-    float x, y;
-
-    fl_get_mouse(&x, &y);
-
-    return Py_BuildValue("(ff)", x, y);
-}
-
-static PyObject *
-forms_tie(PyObject *self, PyObject *args)
-{
-    short arg1, arg2, arg3;
-    if (!PyArg_Parse(args, "(hhh)", &arg1, &arg2, &arg3))
-        return NULL;
-    fl_tie(arg1, arg2, arg3);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-forms_show_message(PyObject *f, PyObject *args)
-{
-    char *a, *b, *c;
-
-    if (!PyArg_Parse(args, "(sss)", &a, &b, &c)) return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    fl_show_message(a, b, c);
-    Py_END_ALLOW_THREADS
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-forms_show_choice(PyObject *f, PyObject *args)
-{
-    char *m1, *m2, *m3, *b1, *b2, *b3;
-    int nb;
-    char *format;
-    long rv;
-
-    if (args == NULL || !PyTuple_Check(args)) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    nb = PyTuple_Size(args) - 3;
-    if (nb <= 0) {
-        PyErr_SetString(PyExc_TypeError,
-                        "need at least one button label");
-        return NULL;
-    }
-    if (PyInt_Check(PyTuple_GetItem(args, 3))) {
-        PyErr_SetString(PyExc_TypeError,
-                   "'number-of-buttons' argument not needed");
-        return NULL;
-    }
-    switch (nb) {
-    case 1: format = "(ssss)"; break;
-    case 2: format = "(sssss)"; break;
-    case 3: format = "(ssssss)"; break;
-    default:
-        PyErr_SetString(PyExc_TypeError, "too many button labels");
-        return NULL;
-    }
-
-    if (!PyArg_Parse(args, format, &m1, &m2, &m3, &b1, &b2, &b3))
-        return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    rv = fl_show_choice(m1, m2, m3, nb, b1, b2, b3);
-    Py_END_ALLOW_THREADS
-    return PyInt_FromLong(rv);
-}
-
-static PyObject *
-forms_show_question(PyObject *f, PyObject *args)
-{
-    int ret;
-    char *a, *b, *c;
-
-    if (!PyArg_Parse(args, "(sss)", &a, &b, &c)) return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    ret = fl_show_question(a, b, c);
-    Py_END_ALLOW_THREADS
-
-    return PyInt_FromLong((long) ret);
-}
-
-static PyObject *
-forms_show_input(PyObject *f, PyObject *args)
-{
-    char *str;
-    char *a, *b;
-
-    if (!PyArg_Parse(args, "(ss)", &a, &b)) return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    str = fl_show_input(a, b);
-    Py_END_ALLOW_THREADS
-
-    if (str == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyString_FromString(str);
-}
-
-static PyObject *
-forms_file_selector(PyObject *f, PyObject *args)
-{
-    char *str;
-    char *a, *b, *c, *d;
-
-    if (!PyArg_Parse(args, "(ssss)", &a, &b, &c, &d)) return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    str = fl_show_file_selector(a, b, c, d);
-    Py_END_ALLOW_THREADS
-
-    if (str == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyString_FromString(str);
-}
-
-
-static PyObject *
-forms_file_selector_func(PyObject *args, char *(*func)(void))
-{
-    char *str;
-
-    str = (*func) ();
-
-    if (str == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyString_FromString(str);
-}
-
-static PyObject *
-forms_get_directory(PyObject *f, PyObject *args)
-{
-    return forms_file_selector_func(args, fl_get_directory);
-}
-
-static PyObject *
-forms_get_pattern(PyObject *f, PyObject *args)
-{
-    return forms_file_selector_func(args, fl_get_pattern);
-}
-
-static PyObject *
-forms_get_filename(PyObject *f, PyObject *args)
-{
-    return forms_file_selector_func(args, fl_get_filename);
-}
-
-static PyMethodDef forms_methods[] = {
-/* adm */
-    {"make_form",               forms_make_form, METH_OLDARGS},
-    {"activate_all_forms",      forms_activate_all_forms, METH_OLDARGS},
-    {"deactivate_all_forms",forms_deactivate_all_forms, METH_OLDARGS},
-/* gl support wrappers */
-    {"qdevice",                 forms_qdevice, METH_OLDARGS},
-    {"unqdevice",               forms_unqdevice, METH_OLDARGS},
-    {"isqueued",                forms_isqueued, METH_OLDARGS},
-    {"qtest",                   forms_qtest, METH_OLDARGS},
-    {"qread",                   forms_qread, METH_OLDARGS},
-/*      {"blkqread",            forms_blkqread, METH_OLDARGS}, */
-    {"qreset",                  forms_qreset, METH_NOARGS},
-    {"qenter",                  forms_qenter, METH_OLDARGS},
-    {"get_mouse",               forms_get_mouse, METH_NOARGS},
-    {"tie",                     forms_tie, METH_OLDARGS},
-/*      {"new_events",          forms_new_events, METH_OLDARGS}, */
-    {"color",                   forms_color, METH_OLDARGS},
-    {"mapcolor",                forms_mapcolor, METH_OLDARGS},
-    {"getmcolor",               forms_getmcolor, METH_OLDARGS},
-/* interaction */
-    {"do_forms",                forms_do_forms, METH_NOARGS},
-    {"do_only_forms",           forms_do_only_forms, METH_NOARGS},
-    {"check_forms",             forms_check_forms, METH_NOARGS},
-    {"check_only_forms",        forms_check_only_forms, METH_NOARGS},
-    {"set_event_call_back",     forms_set_event_call_back, METH_OLDARGS},
-/* goodies */
-    {"show_message",            forms_show_message, METH_OLDARGS},
-    {"show_question",           forms_show_question, METH_OLDARGS},
-    {"show_choice",             forms_show_choice, METH_OLDARGS},
-    {"show_input",              forms_show_input, METH_OLDARGS},
-    {"show_file_selector",      forms_file_selector, METH_OLDARGS},
-    {"file_selector",           forms_file_selector, METH_OLDARGS}, /* BW compat */
-    {"get_directory",           forms_get_directory, METH_OLDARGS},
-    {"get_pattern",             forms_get_pattern, METH_OLDARGS},
-    {"get_filename",            forms_get_filename, METH_OLDARGS},
-    {"set_graphics_mode",       forms_set_graphics_mode, METH_OLDARGS},
-    {"get_rgbmode",             forms_get_rgbmode, METH_OLDARGS},
-    {"show_errors",             forms_show_errors, METH_OLDARGS},
-    {"set_font_name",           forms_set_font_name, METH_OLDARGS},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-PyMODINIT_FUNC
-initfl(void)
-{
-
-    if (PyErr_WarnPy3k("the fl module has been removed in "
-                       "Python 3.0", 2) < 0)
-    return;
-
-    Py_InitModule("fl", forms_methods);
-    if (m == NULL)
-        return;
-    foreground();
-    fl_init();
-}
-
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/fmmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/fmmodule.c
deleted file mode 100644
index c8659c8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/fmmodule.c
+++ /dev/null
@@ -1,269 +0,0 @@
-
-/* Font Manager module */
-
-#include "Python.h"
-
-#include <gl.h>
-#include <device.h>
-#include <fmclient.h>
-
-
-/* Font Handle object implementation */
-
-typedef struct {
-    PyObject_HEAD
-    fmfonthandle fh_fh;
-} fhobject;
-
-static PyTypeObject Fhtype;
-
-#define is_fhobject(v)          ((v)->ob_type == &Fhtype)
-
-static PyObject *
-newfhobject(fmfonthandle fh)
-{
-    fhobject *fhp;
-    if (fh == NULL) {
-        PyErr_SetString(PyExc_RuntimeError,
-                        "error creating new font handle");
-        return NULL;
-    }
-    fhp = PyObject_New(fhobject, &Fhtype);
-    if (fhp == NULL)
-        return NULL;
-    fhp->fh_fh = fh;
-    return (PyObject *)fhp;
-}
-
-/* Font Handle methods */
-
-static PyObject *
-fh_scalefont(fhobject *self, PyObject *args)
-{
-    double size;
-    if (!PyArg_ParseTuple(args, "d", &size))
-        return NULL;
-    return newfhobject(fmscalefont(self->fh_fh, size));
-}
-
-/* XXX fmmakefont */
-
-static PyObject *
-fh_setfont(fhobject *self)
-{
-    fmsetfont(self->fh_fh);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-fh_getfontname(fhobject *self)
-{
-    char fontname[256];
-    int len;
-    len = fmgetfontname(self->fh_fh, sizeof fontname, fontname);
-    if (len < 0) {
-        PyErr_SetString(PyExc_RuntimeError, "error in fmgetfontname");
-        return NULL;
-    }
-    return PyString_FromStringAndSize(fontname, len);
-}
-
-static PyObject *
-fh_getcomment(fhobject *self)
-{
-    char comment[256];
-    int len;
-    len = fmgetcomment(self->fh_fh, sizeof comment, comment);
-    if (len < 0) {
-        PyErr_SetString(PyExc_RuntimeError, "error in fmgetcomment");
-        return NULL;
-    }
-    return PyString_FromStringAndSize(comment, len);
-}
-
-static PyObject *
-fh_getfontinfo(fhobject *self)
-{
-    fmfontinfo info;
-    if (fmgetfontinfo(self->fh_fh, &info) < 0) {
-        PyErr_SetString(PyExc_RuntimeError, "error in fmgetfontinfo");
-        return NULL;
-    }
-    return Py_BuildValue("(llllllll)",
-                         info.printermatched,
-                         info.fixed_width,
-                         info.xorig,
-                         info.yorig,
-                         info.xsize,
-                         info.ysize,
-                         info.height,
-                         info.nglyphs);
-}
-
-#if 0
-static PyObject *
-fh_getwholemetrics(fhobject *self, PyObject *args)
-{
-}
-#endif
-
-static PyObject *
-fh_getstrwidth(fhobject *self, PyObject *args)
-{
-    char *str;
-    if (!PyArg_ParseTuple(args, "s", &str))
-        return NULL;
-    return PyInt_FromLong(fmgetstrwidth(self->fh_fh, str));
-}
-
-static PyMethodDef fh_methods[] = {
-    {"scalefont",       (PyCFunction)fh_scalefont,   METH_VARARGS},
-    {"setfont",         (PyCFunction)fh_setfont,     METH_NOARGS},
-    {"getfontname",     (PyCFunction)fh_getfontname, METH_NOARGS},
-    {"getcomment",      (PyCFunction)fh_getcomment,  METH_NOARGS},
-    {"getfontinfo",     (PyCFunction)fh_getfontinfo, METH_NOARGS},
-#if 0
-    {"getwholemetrics",         (PyCFunction)fh_getwholemetrics, METH_VARARGS},
-#endif
-    {"getstrwidth",     (PyCFunction)fh_getstrwidth, METH_VARARGS},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyObject *
-fh_getattr(fhobject *fhp, char *name)
-{
-    return Py_FindMethod(fh_methods, (PyObject *)fhp, name);
-}
-
-static void
-fh_dealloc(fhobject *fhp)
-{
-    fmfreefont(fhp->fh_fh);
-    PyObject_Del(fhp);
-}
-
-static PyTypeObject Fhtype = {
-    PyObject_HEAD_INIT(&PyType_Type)
-    0,                                  /*ob_size*/
-    "fm.font handle",                   /*tp_name*/
-    sizeof(fhobject),                   /*tp_size*/
-    0,                                  /*tp_itemsize*/
-    /* methods */
-    (destructor)fh_dealloc,             /*tp_dealloc*/
-    0,                                  /*tp_print*/
-    (getattrfunc)fh_getattr,            /*tp_getattr*/
-    0,                                  /*tp_setattr*/
-    0,                                  /*tp_compare*/
-    0,                                  /*tp_repr*/
-};
-
-
-/* Font Manager functions */
-
-static PyObject *
-fm_init(PyObject *self)
-{
-    fminit();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-fm_findfont(PyObject *self, PyObject *args)
-{
-    char *str;
-    if (!PyArg_ParseTuple(args, "s", &str))
-        return NULL;
-    return newfhobject(fmfindfont(str));
-}
-
-static PyObject *
-fm_prstr(PyObject *self, PyObject *args)
-{
-    char *str;
-    if (!PyArg_ParseTuple(args, "s", &str))
-        return NULL;
-    fmprstr(str);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/* XXX This uses a global variable as temporary! Not re-entrant! */
-
-static PyObject *fontlist;
-
-static void
-clientproc(char *fontname)
-{
-    int err;
-    PyObject *v;
-    if (fontlist == NULL)
-        return;
-    v = PyString_FromString(fontname);
-    if (v == NULL)
-        err = -1;
-    else {
-        err = PyList_Append(fontlist, v);
-        Py_DECREF(v);
-    }
-    if (err != 0) {
-        Py_DECREF(fontlist);
-        fontlist = NULL;
-    }
-}
-
-static PyObject *
-fm_enumerate(PyObject *self)
-{
-    PyObject *res;
-    fontlist = PyList_New(0);
-    if (fontlist == NULL)
-        return NULL;
-    fmenumerate(clientproc);
-    res = fontlist;
-    fontlist = NULL;
-    return res;
-}
-
-static PyObject *
-fm_setpath(PyObject *self, PyObject *args)
-{
-    char *str;
-    if (!PyArg_ParseTuple(args, "s", &str))
-        return NULL;
-    fmsetpath(str);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-fm_fontpath(PyObject *self)
-{
-    return PyString_FromString(fmfontpath());
-}
-
-static PyMethodDef fm_methods[] = {
-    {"init",            fm_init,      METH_NOARGS},
-    {"findfont",        fm_findfont,  METH_VARARGS},
-    {"enumerate",       fm_enumerate, METH_NOARGS},
-    {"prstr",           fm_prstr,     METH_VARARGS},
-    {"setpath",         fm_setpath,   METH_VARARGS},
-    {"fontpath",        fm_fontpath,  METH_NOARGS},
-    {NULL,              NULL}           /* sentinel */
-};
-
-
-void
-initfm(void)
-{
-
-    if (PyErr_WarnPy3k("the fm module has been removed in "
-                       "Python 3.0", 2) < 0)
-    return;
-
-    Py_InitModule("fm", fm_methods);
-    if (m == NULL)
-        return;
-    fminit();
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/fpectlmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/fpectlmodule.c
deleted file mode 100644
index 705292b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/fpectlmodule.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
-     ---------------------------------------------------------------------
-    /                       Copyright (c) 1996.                           \
-   |          The Regents of the University of California.                 |
-   |                        All rights reserved.                           |
-   |                                                                       |
-   |   Permission to use, copy, modify, and distribute this software for   |
-   |   any purpose without fee is hereby granted, provided that this en-   |
-   |   tire notice is included in all copies of any software which is or   |
-   |   includes  a  copy  or  modification  of  this software and in all   |
-   |   copies of the supporting documentation for such software.           |
-   |                                                                       |
-   |   This  work was produced at the University of California, Lawrence   |
-   |   Livermore National Laboratory under  contract  no.  W-7405-ENG-48   |
-   |   between  the  U.S.  Department  of  Energy and The Regents of the   |
-   |   University of California for the operation of UC LLNL.              |
-   |                                                                       |
-   |                              DISCLAIMER                               |
-   |                                                                       |
-   |   This  software was prepared as an account of work sponsored by an   |
-   |   agency of the United States Government. Neither the United States   |
-   |   Government  nor the University of California nor any of their em-   |
-   |   ployees, makes any warranty, express or implied, or  assumes  any   |
-   |   liability  or  responsibility  for the accuracy, completeness, or   |
-   |   usefulness of any information,  apparatus,  product,  or  process   |
-   |   disclosed,   or  represents  that  its  use  would  not  infringe   |
-   |   privately-owned rights. Reference herein to any specific  commer-   |
-   |   cial  products,  process,  or  service  by trade name, trademark,   |
-   |   manufacturer, or otherwise, does not  necessarily  constitute  or   |
-   |   imply  its endorsement, recommendation, or favoring by the United   |
-   |   States Government or the University of California. The views  and   |
-   |   opinions  of authors expressed herein do not necessarily state or   |
-   |   reflect those of the United States Government or  the  University   |
-   |   of  California,  and shall not be used for advertising or product   |
-    \  endorsement purposes.                                              /
-     ---------------------------------------------------------------------
-*/
-
-/*
-                  Floating point exception control module.
-
-   This Python module provides bare-bones control over floating point
-   units from several hardware manufacturers.  Specifically, it allows
-   the user to turn on the generation of SIGFPE whenever any of the
-   three serious IEEE 754 exceptions (Division by Zero, Overflow,
-   Invalid Operation) occurs.  We currently ignore Underflow and
-   Inexact Result exceptions, although those could certainly be added
-   if desired.
-
-   The module also establishes a signal handler for SIGFPE during
-   initialization.  This builds on code found in the Python
-   distribution at Include/pyfpe.h and Python/pyfpe.c.  If those files
-   are not in your Python distribution, find them in a patch at
-   ftp://icf.llnl.gov/pub/python/busby/patches.961108.tgz.
-
-   This module is only useful to you if it happens to include code
-   specific for your hardware and software environment.  If you can
-   contribute OS-specific code for new platforms, or corrections for
-   the code provided, it will be greatly appreciated.
-
-   ** Version 1.0: September 20, 1996.  Lee Busby, LLNL.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "Python.h"
-#include <signal.h>
-
-#if defined(__FreeBSD__)
-#  include <ieeefp.h>
-#elif defined(__VMS)
-#define __NEW_STARLET
-#include <starlet.h>
-#include <ieeedef.h>
-#endif
-
-#ifndef WANT_SIGFPE_HANDLER
-/* Define locally if they are not defined in Python.  This gives only
- * the limited control to induce a core dump in case of an exception.
- */
-#include <setjmp.h>
-static jmp_buf PyFPE_jbuf;
-static int PyFPE_counter = 0;
-#endif
-
-typedef void Sigfunc(int);
-static Sigfunc sigfpe_handler;
-static void fpe_reset(Sigfunc *);
-
-static PyObject *fpe_error;
-PyMODINIT_FUNC initfpectl(void);
-static PyObject *turnon_sigfpe            (PyObject *self,PyObject *args);
-static PyObject *turnoff_sigfpe           (PyObject *self,PyObject *args);
-
-static PyMethodDef fpectl_methods[] = {
-    {"turnon_sigfpe",            (PyCFunction) turnon_sigfpe,            METH_VARARGS},
-    {"turnoff_sigfpe",           (PyCFunction) turnoff_sigfpe,           METH_VARARGS},
-    {0,0}
-};
-
-static PyObject *turnon_sigfpe(PyObject *self,PyObject *args)
-{
-    /* Do any architecture-specific one-time only initialization here. */
-
-    fpe_reset(sigfpe_handler);
-    Py_INCREF (Py_None);
-    return Py_None;
-}
-
-static void fpe_reset(Sigfunc *handler)
-{
-    /* Reset the exception handling machinery, and reset the signal
-     * handler for SIGFPE to the given handler.
-     */
-
-/*-- IRIX -----------------------------------------------------------------*/
-#if defined(sgi)
-    /* See man page on handle_sigfpes -- must link with -lfpe
-     * My usage doesn't follow the man page exactly.  Maybe somebody
-     * else can explain handle_sigfpes to me....
-     * cc -c -I/usr/local/python/include fpectlmodule.c
-     * ld -shared -o fpectlmodule.so fpectlmodule.o -lfpe
-     */
-#include <sigfpe.h>
-    typedef void user_routine (unsigned[5], int[2]);
-    typedef void abort_routine (unsigned long);
-    handle_sigfpes(_OFF, 0,
-                 (user_routine *)0,
-                 _TURN_OFF_HANDLER_ON_ERROR,
-                 NULL);
-    handle_sigfpes(_ON, _EN_OVERFL | _EN_DIVZERO | _EN_INVALID,
-                 (user_routine *)0,
-                 _ABORT_ON_ERROR,
-                 NULL);
-    PyOS_setsig(SIGFPE, handler);
-
-/*-- SunOS and Solaris ----------------------------------------------------*/
-#elif defined(sun)
-    /* References: ieee_handler, ieee_sun, ieee_functions, and ieee_flags
-       man pages (SunOS or Solaris)
-       cc -c -I/usr/local/python/include fpectlmodule.c
-       ld -G -o fpectlmodule.so -L/opt/SUNWspro/lib fpectlmodule.o -lsunmath -lm
-     */
-#include <math.h>
-#ifndef _SUNMATH_H
-    extern void nonstandard_arithmetic(void);
-    extern int ieee_flags(const char*, const char*, const char*, char **);
-    extern long ieee_handler(const char*, const char*, sigfpe_handler_type);
-#endif
-
-    char *mode="exception", *in="all", *out;
-    (void) nonstandard_arithmetic();
-    (void) ieee_flags("clearall",mode,in,&out);
-    (void) ieee_handler("set","common",(sigfpe_handler_type)handler);
-    PyOS_setsig(SIGFPE, handler);
-
-/*-- HPUX -----------------------------------------------------------------*/
-#elif defined(__hppa) || defined(hppa)
-    /* References:   fpsetmask man page */
-    /* cc -Aa +z -c -I/usr/local/python/include fpectlmodule.c */
-    /* ld -b -o fpectlmodule.sl fpectlmodule.o -lm */
-#include <math.h>
-    fpsetdefaults();
-    PyOS_setsig(SIGFPE, handler);
-
-/*-- IBM AIX --------------------------------------------------------------*/
-#elif defined(__AIX) || defined(_AIX)
-    /* References:   fp_trap, fp_enable man pages */
-#include <fptrap.h>
-    fp_trap(FP_TRAP_SYNC);
-    fp_enable(TRP_INVALID | TRP_DIV_BY_ZERO | TRP_OVERFLOW);
-    PyOS_setsig(SIGFPE, handler);
-
-/*-- DEC ALPHA OSF --------------------------------------------------------*/
-#elif defined(__alpha) && defined(__osf__)
-    /* References:   exception_intro, ieee man pages */
-    /* cc -c -I/usr/local/python/include fpectlmodule.c */
-    /* ld -shared -o fpectlmodule.so fpectlmodule.o */
-#include <machine/fpu.h>
-    unsigned long fp_control =
-    IEEE_TRAP_ENABLE_INV | IEEE_TRAP_ENABLE_DZE | IEEE_TRAP_ENABLE_OVF;
-    ieee_set_fp_control(fp_control);
-    PyOS_setsig(SIGFPE, handler);
-
-/*-- DEC ALPHA LINUX ------------------------------------------------------*/
-#elif defined(__alpha) && defined(linux)
-#include <asm/fpu.h>
-    unsigned long fp_control =
-    IEEE_TRAP_ENABLE_INV | IEEE_TRAP_ENABLE_DZE | IEEE_TRAP_ENABLE_OVF;
-    ieee_set_fp_control(fp_control);
-    PyOS_setsig(SIGFPE, handler);
-
-/*-- DEC ALPHA VMS --------------------------------------------------------*/
-#elif defined(__ALPHA) && defined(__VMS)
-        IEEE clrmsk;
-        IEEE setmsk;
-        clrmsk.ieee$q_flags =
-                IEEE$M_TRAP_ENABLE_UNF |  IEEE$M_TRAP_ENABLE_INE |
-                 IEEE$M_MAP_UMZ;
-        setmsk.ieee$q_flags =
-                IEEE$M_TRAP_ENABLE_INV | IEEE$M_TRAP_ENABLE_DZE |
-                IEEE$M_TRAP_ENABLE_OVF;
-        sys$ieee_set_fp_control(&clrmsk, &setmsk, 0);
-        PyOS_setsig(SIGFPE, handler);
-
-/*-- HP IA64 VMS --------------------------------------------------------*/
-#elif defined(__ia64) && defined(__VMS)
-    PyOS_setsig(SIGFPE, handler);
-
-/*-- Cray Unicos ----------------------------------------------------------*/
-#elif defined(cray)
-    /* UNICOS delivers SIGFPE by default, but no matherr */
-#ifdef HAS_LIBMSET
-    libmset(-1);
-#endif
-    PyOS_setsig(SIGFPE, handler);
-
-/*-- FreeBSD ----------------------------------------------------------------*/
-#elif defined(__FreeBSD__)
-    fpresetsticky(fpgetsticky());
-    fpsetmask(FP_X_INV | FP_X_DZ | FP_X_OFL);
-    PyOS_setsig(SIGFPE, handler);
-
-/*-- Linux ----------------------------------------------------------------*/
-#elif defined(linux)
-#ifdef __GLIBC__
-#include <fpu_control.h>
-#else
-#include <i386/fpu_control.h>
-#endif
-#ifdef _FPU_SETCW
-    {
-        fpu_control_t cw = 0x1372;
-        _FPU_SETCW(cw);
-    }
-#else
-    __setfpucw(0x1372);
-#endif
-    PyOS_setsig(SIGFPE, handler);
-
-/*-- Microsoft Windows, NT ------------------------------------------------*/
-#elif defined(_MSC_VER)
-    /* Reference: Visual C++ Books Online 4.2,
-       Run-Time Library Reference, _control87, _controlfp */
-#include <float.h>
-    unsigned int cw = _EM_INVALID | _EM_ZERODIVIDE | _EM_OVERFLOW;
-    (void)_controlfp(0, cw);
-    PyOS_setsig(SIGFPE, handler);
-
-/*-- Give Up --------------------------------------------------------------*/
-#else
-    fputs("Operation not implemented\n", stderr);
-#endif
-
-}
-
-static PyObject *turnoff_sigfpe(PyObject *self,PyObject *args)
-{
-#ifdef __FreeBSD__
-    fpresetsticky(fpgetsticky());
-    fpsetmask(0);
-#elif defined(__VMS)
-        IEEE clrmsk;
-         clrmsk.ieee$q_flags =
-                IEEE$M_TRAP_ENABLE_UNF |  IEEE$M_TRAP_ENABLE_INE |
-                IEEE$M_MAP_UMZ | IEEE$M_TRAP_ENABLE_INV |
-                IEEE$M_TRAP_ENABLE_DZE | IEEE$M_TRAP_ENABLE_OVF |
-                IEEE$M_INHERIT;
-        sys$ieee_set_fp_control(&clrmsk, 0, 0);
-#else
-    fputs("Operation not implemented\n", stderr);
-#endif
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static void sigfpe_handler(int signo)
-{
-    fpe_reset(sigfpe_handler);
-    if(PyFPE_counter) {
-        longjmp(PyFPE_jbuf, 1);
-    } else {
-        Py_FatalError("Unprotected floating point exception");
-    }
-}
-
-PyMODINIT_FUNC initfpectl(void)
-{
-    PyObject *m, *d;
-    m = Py_InitModule("fpectl", fpectl_methods);
-    if (m == NULL)
-        return;
-    d = PyModule_GetDict(m);
-    fpe_error = PyErr_NewException("fpectl.error", NULL, NULL);
-    if (fpe_error != NULL)
-        PyDict_SetItemString(d, "error", fpe_error);
-}
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/fpetestmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/fpetestmodule.c
deleted file mode 100644
index d834a8d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/fpetestmodule.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
-     ---------------------------------------------------------------------  
-    /                       Copyright (c) 1996.                           \ 
-   |          The Regents of the University of California.                 |
-   |                        All rights reserved.                           |
-   |                                                                       |
-   |   Permission to use, copy, modify, and distribute this software for   |
-   |   any purpose without fee is hereby granted, provided that this en-   |
-   |   tire notice is included in all copies of any software which is or   |
-   |   includes  a  copy  or  modification  of  this software and in all   |
-   |   copies of the supporting documentation for such software.           |
-   |                                                                       |
-   |   This  work was produced at the University of California, Lawrence   |
-   |   Livermore National Laboratory under  contract  no.  W-7405-ENG-48   |
-   |   between  the  U.S.  Department  of  Energy and The Regents of the   |
-   |   University of California for the operation of UC LLNL.              |
-   |                                                                       |
-   |                              DISCLAIMER                               |
-   |                                                                       |
-   |   This  software was prepared as an account of work sponsored by an   |
-   |   agency of the United States Government. Neither the United States   |
-   |   Government  nor the University of California nor any of their em-   |
-   |   ployees, makes any warranty, express or implied, or  assumes  any   |
-   |   liability  or  responsibility  for the accuracy, completeness, or   |
-   |   usefulness of any information,  apparatus,  product,  or  process   |
-   |   disclosed,   or  represents  that  its  use  would  not  infringe   |
-   |   privately-owned rights. Reference herein to any specific  commer-   |
-   |   cial  products,  process,  or  service  by trade name, trademark,   |
-   |   manufacturer, or otherwise, does not  necessarily  constitute  or   |
-   |   imply  its endorsement, recommendation, or favoring by the United   |
-   |   States Government or the University of California. The views  and   |
-   |   opinions  of authors expressed herein do not necessarily state or   |
-   |   reflect those of the United States Government or  the  University   |
-   |   of  California,  and shall not be used for advertising or product   |
-    \  endorsement purposes.                                              / 
-     ---------------------------------------------------------------------  
-*/
-
-/*
-		  Floating point exception test module.
-
- */
-
-#include "Python.h"
-
-static PyObject *fpe_error;
-PyMODINIT_FUNC initfpetest(void);
-static PyObject *test(PyObject *self,PyObject *args);
-static double db0(double);
-static double overflow(double);
-static double nest1(int, double);
-static double nest2(int, double);
-static double nest3(double);
-static void printerr(double);
-
-static PyMethodDef fpetest_methods[] = {
-    {"test",		 (PyCFunction) test,		 METH_VARARGS},
-    {0,0}
-};
-
-static PyObject *test(PyObject *self,PyObject *args)
-{
-    double r;
-
-    fprintf(stderr,"overflow");
-    r = overflow(1.e160);
-    printerr(r);
-
-    fprintf(stderr,"\ndiv by 0");
-    r = db0(0.0);
-    printerr(r);
-
-    fprintf(stderr,"\nnested outer");
-    r = nest1(0, 0.0);
-    printerr(r);
-
-    fprintf(stderr,"\nnested inner");
-    r = nest1(1, 1.0);
-    printerr(r);
-
-    fprintf(stderr,"\ntrailing outer");
-    r = nest1(2, 2.0);
-    printerr(r);
-
-    fprintf(stderr,"\nnested prior");
-    r = nest2(0, 0.0);
-    printerr(r);
-
-    fprintf(stderr,"\nnested interior");
-    r = nest2(1, 1.0);
-    printerr(r);
-
-    fprintf(stderr,"\nnested trailing");
-    r = nest2(2, 2.0);
-    printerr(r);
-
-    Py_INCREF (Py_None);
-    return Py_None;
-}
-
-static void printerr(double r)
-{
-    if(r == 3.1416){
-      fprintf(stderr,"\tPASS\n");
-      PyErr_Print();
-    }else{
-      fprintf(stderr,"\tFAIL\n");
-    }
-    PyErr_Clear();
-}
-
-static double nest1(int i, double x)
-{
-  double a = 1.0;
-
-  PyFPE_START_PROTECT("Division by zero, outer zone", return 3.1416)
-  if(i == 0){
-    a = 1./x;
-  }else if(i == 1){
-    /* This (following) message is never seen. */
-    PyFPE_START_PROTECT("Division by zero, inner zone", return 3.1416)
-    a = 1./(1. - x);
-    PyFPE_END_PROTECT(a)
-  }else if(i == 2){
-    a = 1./(2. - x);
-  }
-  PyFPE_END_PROTECT(a)
-
-  return a;
-}
-
-static double nest2(int i, double x)
-{
-  double a = 1.0;
-  PyFPE_START_PROTECT("Division by zero, prior error", return 3.1416)
-  if(i == 0){
-    a = 1./x;
-  }else if(i == 1){
-    a = nest3(x);
-  }else if(i == 2){
-    a = 1./(2. - x);
-  }
-  PyFPE_END_PROTECT(a)
-  return a;
-}
-
-static double nest3(double x)
-{
-  double result;
-  /* This (following) message is never seen. */
-  PyFPE_START_PROTECT("Division by zero, nest3 error", return 3.1416)
-  result = 1./(1. - x);
-  PyFPE_END_PROTECT(result)
-  return result;
-}
-
-static double db0(double x)
-{
-  double a;
-  PyFPE_START_PROTECT("Division by zero", return 3.1416)
-  a = 1./x;
-  PyFPE_END_PROTECT(a)
-  return a;
-}
-
-static double overflow(double b)
-{
-  double a;
-  PyFPE_START_PROTECT("Overflow", return 3.1416)
-  a = b*b;
-  PyFPE_END_PROTECT(a)
-  return a;
-}
-
-PyMODINIT_FUNC initfpetest(void)
-{
-    PyObject *m, *d;
-
-    m = Py_InitModule("fpetest", fpetest_methods);
-    if (m == NULL)
-    	return;
-    d = PyModule_GetDict(m);
-    fpe_error = PyErr_NewException("fpetest.error", NULL, NULL);
-    if (fpe_error != NULL)
-	    PyDict_SetItemString(d, "error", fpe_error);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/future_builtins.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/future_builtins.c
deleted file mode 100644
index 47696d5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/future_builtins.c
+++ /dev/null
@@ -1,105 +0,0 @@
-
-/* future_builtins module */
-
-/* This module provides functions that will be builtins in Python 3.0,
-   but that conflict with builtins that already exist in Python
-   2.x. */
-
-
-#include "Python.h"
-
-PyDoc_STRVAR(module_doc,
-"This module provides functions that will be builtins in Python 3.0,\n\
-but that conflict with builtins that already exist in Python 2.x.\n\
-\n\
-Functions:\n\
-\n\
-ascii(arg) -- Returns the canonical string representation of an object.\n\
-filter(pred, iterable) -- Returns an iterator yielding those items of \n\
-       iterable for which pred(item) is true.\n\
-hex(arg) -- Returns the hexadecimal representation of an integer.\n\
-map(func, *iterables) -- Returns an iterator that computes the function \n\
-    using arguments from each of the iterables.\n\
-oct(arg) -- Returns the octal representation of an integer.\n\
-zip(iter1 [,iter2 [...]]) -- Returns a zip object whose .next() method \n\
-    returns a tuple where the i-th element comes from the i-th iterable \n\
-    argument.\n\
-\n\
-The typical usage of this module is to replace existing builtins in a\n\
-module's namespace:\n \n\
-from future_builtins import ascii, filter, map, hex, oct, zip\n");
-
-static PyObject *
-builtin_hex(PyObject *self, PyObject *v)
-{
-    return PyNumber_ToBase(v, 16);
-}
-
-PyDoc_STRVAR(hex_doc,
-"hex(number) -> string\n\
-\n\
-Return the hexadecimal representation of an integer or long integer.");
-
-
-static PyObject *
-builtin_oct(PyObject *self, PyObject *v)
-{
-    return PyNumber_ToBase(v, 8);
-}
-
-PyDoc_STRVAR(oct_doc,
-"oct(number) -> string\n\
-\n\
-Return the octal representation of an integer or long integer.");
-
-
-static PyObject *
-builtin_ascii(PyObject *self, PyObject *v)
-{
-    return PyObject_Repr(v);
-}
-
-PyDoc_STRVAR(ascii_doc,
-"ascii(object) -> string\n\
-\n\
-Return the same as repr().  In Python 3.x, the repr() result will\n\
-contain printable characters unescaped, while the ascii() result\n\
-will have such characters backslash-escaped.");
-
-/* List of functions exported by this module */
-
-static PyMethodDef module_functions[] = {
-    {"hex",             builtin_hex,        METH_O, hex_doc},
-    {"oct",             builtin_oct,        METH_O, oct_doc},
-    {"ascii",           builtin_ascii,      METH_O, ascii_doc},
-    {NULL,              NULL}   /* Sentinel */
-};
-
-
-/* Initialize this module. */
-
-PyMODINIT_FUNC
-initfuture_builtins(void)
-{
-    PyObject *m, *itertools, *iter_func;
-    char *it_funcs[] = {"imap", "ifilter", "izip", NULL};
-    char **cur_func;
-
-    m = Py_InitModule3("future_builtins", module_functions, module_doc);
-    if (m == NULL)
-        return;
-
-    itertools = PyImport_ImportModuleNoBlock("itertools");
-    if (itertools == NULL)
-        return;
-
-    /* If anything in the following loop fails, we fall through. */
-    for (cur_func = it_funcs; *cur_func; ++cur_func){
-        iter_func = PyObject_GetAttrString(itertools, *cur_func);
-        if (iter_func == NULL ||
-            PyModule_AddObject(m, *cur_func+1, iter_func) < 0)
-            break;
-    }
-    Py_DECREF(itertools);
-    /* any other initialization needed */
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/gc_weakref.txt b/AppPkg/Applications/Python/Python-2.7.2/Modules/gc_weakref.txt
deleted file mode 100644
index d58e3a6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/gc_weakref.txt
+++ /dev/null
@@ -1,219 +0,0 @@
-Intro
-=====
-
-The basic rule for dealing with weakref callbacks (and __del__ methods too,
-for that matter) during cyclic gc:
-
-    Once gc has computed the set of unreachable objects, no Python-level
-    code can be allowed to access an unreachable object.
-
-If that can happen, then the Python code can resurrect unreachable objects
-too, and gc can't detect that without starting over.  Since gc eventually
-runs tp_clear on all unreachable objects, if an unreachable object is
-resurrected then tp_clear will eventually be called on it (or may already
-have been called before resurrection).  At best (and this has been an
-historically common bug), tp_clear empties an instance's __dict__, and
-"impossible" AttributeErrors result.  At worst, tp_clear leaves behind an
-insane object at the C level, and segfaults result (historically, most
-often by setting a new-style class's mro pointer to NULL, after which
-attribute lookups performed by the class can segfault).
-
-OTOH, it's OK to run Python-level code that can't access unreachable
-objects, and sometimes that's necessary.  The chief example is the callback
-attached to a reachable weakref W to an unreachable object O.  Since O is
-going away, and W is still alive, the callback must be invoked.  Because W
-is still alive, everything reachable from its callback is also reachable,
-so it's also safe to invoke the callback (although that's trickier than it
-sounds, since other reachable weakrefs to other unreachable objects may
-still exist, and be accessible to the callback -- there are lots of painful
-details like this covered in the rest of this file).
-
-Python 2.4/2.3.5
-================
-
-The "Before 2.3.3" section below turned out to be wrong in some ways, but
-I'm leaving it as-is because it's more right than wrong, and serves as a
-wonderful example of how painful analysis can miss not only the forest for
-the trees, but also miss the trees for the aphids sucking the trees
-dry <wink>.
-
-The primary thing it missed is that when a weakref to a piece of cyclic
-trash (CT) exists, then any call to any Python code whatsoever can end up
-materializing a strong reference to that weakref's CT referent, and so
-possibly resurrect an insane object (one for which cyclic gc has called-- or
-will call before it's done --tp_clear()).  It's not even necessarily that a
-weakref callback or __del__ method does something nasty on purpose:  as
-soon as we execute Python code, threads other than the gc thread can run
-too, and they can do ordinary things with weakrefs that end up resurrecting
-CT while gc is running.
-
-    http://www.python.org/sf/1055820
-
-shows how innocent it can be, and also how nasty.  Variants of the three
-focussed test cases attached to that bug report are now part of Python's
-standard Lib/test/test_gc.py.
-
-Jim Fulton gave the best nutshell summary of the new (in 2.4 and 2.3.5)
-approach:
-
-    Clearing cyclic trash can call Python code.  If there are weakrefs to
-    any of the cyclic trash, then those weakrefs can be used to resurrect
-    the objects.  Therefore, *before* clearing cyclic trash, we need to
-    remove any weakrefs.  If any of the weakrefs being removed have
-    callbacks, then we need to save the callbacks and call them *after* all
-    of the weakrefs have been cleared.
-
-Alas, doing just that much doesn't work, because it overlooks what turned
-out to be the much subtler problems that were fixed earlier, and described
-below.  We do clear all weakrefs to CT now before breaking cycles, but not
-all callbacks encountered can be run later.  That's explained in horrid
-detail below.
-
-Older text follows, with a some later comments in [] brackets:
-
-Before 2.3.3
-============
-
-Before 2.3.3, Python's cyclic gc didn't pay any attention to weakrefs.
-Segfaults in Zope3 resulted.
-
-weakrefs in Python are designed to, at worst, let *other* objects learn
-that a given object has died, via a callback function.  The weakly
-referenced object itself is not passed to the callback, and the presumption
-is that the weakly referenced object is unreachable trash at the time the
-callback is invoked.
-
-That's usually true, but not always.  Suppose a weakly referenced object
-becomes part of a clump of cyclic trash.  When enough cycles are broken by
-cyclic gc that the object is reclaimed, the callback is invoked.  If it's
-possible for the callback to get at objects in the cycle(s), then it may be
-possible for those objects to access (via strong references in the cycle)
-the weakly referenced object being torn down, or other objects in the cycle
-that have already suffered a tp_clear() call.  There's no guarantee that an
-object is in a sane state after tp_clear().  Bad things (including
-segfaults) can happen right then, during the callback's execution, or can
-happen at any later time if the callback manages to resurrect an insane
-object.
-
-[That missed that, in addition, a weakref to CT can exist outside CT, and
- any callback into Python can use such a non-CT weakref to resurrect its CT
- referent.  The same bad kinds of things can happen then.]
-
-Note that if it's possible for the callback to get at objects in the trash
-cycles, it must also be the case that the callback itself is part of the
-trash cycles.  Else the callback would have acted as an external root to
-the current collection, and nothing reachable from it would be in cyclic
-trash either.
-
-[Except that a non-CT callback can also use a non-CT weakref to get at
- CT objects.]
-
-More, if the callback itself is in cyclic trash, then the weakref to which
-the callback is attached must also be trash, and for the same kind of
-reason:  if the weakref acted as an external root, then the callback could
-not have been cyclic trash.
-
-So a problem here requires that a weakref, that weakref's callback, and the
-weakly referenced object, all be in cyclic trash at the same time.  This
-isn't easy to stumble into by accident while Python is running, and, indeed,
-it took quite a while to dream up failing test cases.  Zope3 saw segfaults
-during shutdown, during the second call of gc in Py_Finalize, after most
-modules had been torn down.  That creates many trash cycles (esp. those
-involving new-style classes), making the problem much more likely.  Once you
-know what's required to provoke the problem, though, it's easy to create
-tests that segfault before shutdown.
-
-In 2.3.3, before breaking cycles, we first clear all the weakrefs with
-callbacks in cyclic trash.  Since the weakrefs *are* trash, and there's no
-defined-- or even predictable --order in which tp_clear() gets called on
-cyclic trash, it's defensible to first clear weakrefs with callbacks.  It's
-a feature of Python's weakrefs too that when a weakref goes away, the
-callback (if any) associated with it is thrown away too, unexecuted.
-
-[In 2.4/2.3.5, we first clear all weakrefs to CT objects, whether or not
- those weakrefs are themselves CT, and whether or not they have callbacks.
- The callbacks (if any) on non-CT weakrefs (if any) are invoked later,
- after all weakrefs-to-CT have been cleared.  The callbacks (if any) on CT
- weakrefs (if any) are never invoked, for the excruciating reasons
- explained here.]
-
-Just that much is almost enough to prevent problems, by throwing away
-*almost* all the weakref callbacks that could get triggered by gc.  The
-problem remaining is that clearing a weakref with a callback decrefs the
-callback object, and the callback object may *itself* be weakly referenced,
-via another weakref with another callback.  So the process of clearing
-weakrefs can trigger callbacks attached to other weakrefs, and those
-latter weakrefs may or may not be part of cyclic trash.
-
-So, to prevent any Python code from running while gc is invoking tp_clear()
-on all the objects in cyclic trash,
-
-[That was always wrong:  we can't stop Python code from running when gc
- is breaking cycles.  If an object with a __del__ method is not itself in
- a cycle, but is reachable only from CT, then breaking cycles will, as a
- matter of course, drop the refcount on that object to 0, and its __del__
- will run right then.  What we can and must stop is running any Python
- code that could access CT.]
-                                     it's not quite enough just to invoke
-tp_clear() on weakrefs with callbacks first.  Instead the weakref module
-grew a new private function (_PyWeakref_ClearRef) that does only part of
-tp_clear():  it removes the weakref from the weakly-referenced object's list
-of weakrefs, but does not decref the callback object.  So calling
-_PyWeakref_ClearRef(wr) ensures that wr's callback object will never
-trigger, and (unlike weakref's tp_clear()) also prevents any callback
-associated *with* wr's callback object from triggering.
-
-[Although we may trigger such callbacks later, as explained below.]
-
-Then we can call tp_clear on all the cyclic objects and never trigger
-Python code.
-
-[As above, not so:  it means never trigger Python code that can access CT.]
-
-After we do that, the callback objects still need to be decref'ed.  Callbacks
-(if any) *on* the callback objects that were also part of cyclic trash won't
-get invoked, because we cleared all trash weakrefs with callbacks at the
-start.  Callbacks on the callback objects that were not part of cyclic trash
-acted as external roots to everything reachable from them, so nothing
-reachable from them was part of cyclic trash, so gc didn't do any damage to
-objects reachable from them, and it's safe to call them at the end of gc.
-
-[That's so.  In addition, now we also invoke (if any) the callbacks on
- non-CT weakrefs to CT objects, during the same pass that decrefs the
- callback objects.]
-
-An alternative would have been to treat objects with callbacks like objects
-with __del__ methods, refusing to collect them, appending them to gc.garbage
-instead.  That would have been much easier.  Jim Fulton gave a strong
-argument against that (on Python-Dev):
-
-    There's a big difference between __del__ and weakref callbacks.
-    The __del__ method is "internal" to a design.  When you design a
-    class with a del method, you know you have to avoid including the
-    class in cycles.
-
-    Now, suppose you have a design that makes has no __del__ methods but
-    that does use cyclic data structures.  You reason about the design,
-    run tests, and convince yourself you don't have a leak.
-
-    Now, suppose some external code creates a weakref to one of your
-    objects.  All of a sudden, you start leaking.  You can look at your
-    code all you want and you won't find a reason for the leak.
-
-IOW, a class designer can out-think __del__ problems, but has no control
-over who creates weakrefs to his classes or class instances.  The class
-user has little chance either of predicting when the weakrefs he creates
-may end up in cycles.
-
-Callbacks on weakref callbacks are executed in an arbitrary order, and
-that's not good (a primary reason not to collect cycles with objects with
-__del__ methods is to avoid running finalizers in an arbitrary order).
-However, a weakref callback on a weakref callback has got to be rare.
-It's possible to do such a thing, so gc has to be robust against it, but
-I doubt anyone has done it outside the test case I wrote for it.
-
-[The callbacks (if any) on non-CT weakrefs to CT objects are also executed
- in an arbitrary order now.  But they were before too, depending on the
- vagaries of when tp_clear() happened to break enough cycles to trigger
- them.  People simply shouldn't try to use __del__ or weakref callbacks to
- do fancy stuff.]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/gcmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/gcmodule.c
deleted file mode 100644
index 7bc9e74..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/gcmodule.c
+++ /dev/null
@@ -1,1516 +0,0 @@
-/*
-
-  Reference Cycle Garbage Collection
-  ==================================
-
-  Neil Schemenauer <nas@arctrix.com>
-
-  Based on a post on the python-dev list.  Ideas from Guido van Rossum,
-  Eric Tiedemann, and various others.
-
-  http://www.arctrix.com/nas/python/gc/
-  http://www.python.org/pipermail/python-dev/2000-March/003869.html
-  http://www.python.org/pipermail/python-dev/2000-March/004010.html
-  http://www.python.org/pipermail/python-dev/2000-March/004022.html
-
-  For a highlevel view of the collection process, read the collect
-  function.
-
-*/
-
-#include "Python.h"
-#include "frameobject.h"        /* for PyFrame_ClearFreeList */
-
-/* Get an object's GC head */
-#define AS_GC(o) ((PyGC_Head *)(o)-1)
-
-/* Get the object given the GC head */
-#define FROM_GC(g) ((PyObject *)(((PyGC_Head *)g)+1))
-
-/*** Global GC state ***/
-
-struct gc_generation {
-    PyGC_Head head;
-    int threshold; /* collection threshold */
-    int count; /* count of allocations or collections of younger
-                  generations */
-};
-
-#define NUM_GENERATIONS 3
-#define GEN_HEAD(n) (&generations[n].head)
-
-/* linked lists of container objects */
-static struct gc_generation generations[NUM_GENERATIONS] = {
-    /* PyGC_Head,                               threshold,      count */
-    {{{GEN_HEAD(0), GEN_HEAD(0), 0}},           700,            0},
-    {{{GEN_HEAD(1), GEN_HEAD(1), 0}},           10,             0},
-    {{{GEN_HEAD(2), GEN_HEAD(2), 0}},           10,             0},
-};
-
-PyGC_Head *_PyGC_generation0 = GEN_HEAD(0);
-
-static int enabled = 1; /* automatic collection enabled? */
-
-/* true if we are currently running the collector */
-static int collecting = 0;
-
-/* list of uncollectable objects */
-static PyObject *garbage = NULL;
-
-/* Python string to use if unhandled exception occurs */
-static PyObject *gc_str = NULL;
-
-/* Python string used to look for __del__ attribute. */
-static PyObject *delstr = NULL;
-
-/* This is the number of objects who survived the last full collection. It
-   approximates the number of long lived objects tracked by the GC.
-
-   (by "full collection", we mean a collection of the oldest generation).
-*/
-static Py_ssize_t long_lived_total = 0;
-
-/* This is the number of objects who survived all "non-full" collections,
-   and are awaiting to undergo a full collection for the first time.
-
-*/
-static Py_ssize_t long_lived_pending = 0;
-
-/*
-   NOTE: about the counting of long-lived objects.
-
-   To limit the cost of garbage collection, there are two strategies;
-     - make each collection faster, e.g. by scanning fewer objects
-     - do less collections
-   This heuristic is about the latter strategy.
-
-   In addition to the various configurable thresholds, we only trigger a
-   full collection if the ratio
-    long_lived_pending / long_lived_total
-   is above a given value (hardwired to 25%).
-
-   The reason is that, while "non-full" collections (i.e., collections of
-   the young and middle generations) will always examine roughly the same
-   number of objects -- determined by the aforementioned thresholds --,
-   the cost of a full collection is proportional to the total number of
-   long-lived objects, which is virtually unbounded.
-
-   Indeed, it has been remarked that doing a full collection every
-   <constant number> of object creations entails a dramatic performance
-   degradation in workloads which consist in creating and storing lots of
-   long-lived objects (e.g. building a large list of GC-tracked objects would
-   show quadratic performance, instead of linear as expected: see issue #4074).
-
-   Using the above ratio, instead, yields amortized linear performance in
-   the total number of objects (the effect of which can be summarized
-   thusly: "each full garbage collection is more and more costly as the
-   number of objects grows, but we do fewer and fewer of them").
-
-   This heuristic was suggested by Martin von Löwis on python-dev in
-   June 2008. His original analysis and proposal can be found at:
-    http://mail.python.org/pipermail/python-dev/2008-June/080579.html
-*/
-
-
-/* set for debugging information */
-#define DEBUG_STATS             (1<<0) /* print collection statistics */
-#define DEBUG_COLLECTABLE       (1<<1) /* print collectable objects */
-#define DEBUG_UNCOLLECTABLE     (1<<2) /* print uncollectable objects */
-#define DEBUG_INSTANCES         (1<<3) /* print instances */
-#define DEBUG_OBJECTS           (1<<4) /* print other objects */
-#define DEBUG_SAVEALL           (1<<5) /* save all garbage in gc.garbage */
-#define DEBUG_LEAK              DEBUG_COLLECTABLE | \
-                DEBUG_UNCOLLECTABLE | \
-                DEBUG_INSTANCES | \
-                DEBUG_OBJECTS | \
-                DEBUG_SAVEALL
-static int debug;
-static PyObject *tmod = NULL;
-
-/*--------------------------------------------------------------------------
-gc_refs values.
-
-Between collections, every gc'ed object has one of two gc_refs values:
-
-GC_UNTRACKED
-    The initial state; objects returned by PyObject_GC_Malloc are in this
-    state.  The object doesn't live in any generation list, and its
-    tp_traverse slot must not be called.
-
-GC_REACHABLE
-    The object lives in some generation list, and its tp_traverse is safe to
-    call.  An object transitions to GC_REACHABLE when PyObject_GC_Track
-    is called.
-
-During a collection, gc_refs can temporarily take on other states:
-
->= 0
-    At the start of a collection, update_refs() copies the true refcount
-    to gc_refs, for each object in the generation being collected.
-    subtract_refs() then adjusts gc_refs so that it equals the number of
-    times an object is referenced directly from outside the generation
-    being collected.
-    gc_refs remains >= 0 throughout these steps.
-
-GC_TENTATIVELY_UNREACHABLE
-    move_unreachable() then moves objects not reachable (whether directly or
-    indirectly) from outside the generation into an "unreachable" set.
-    Objects that are found to be reachable have gc_refs set to GC_REACHABLE
-    again.  Objects that are found to be unreachable have gc_refs set to
-    GC_TENTATIVELY_UNREACHABLE.  It's "tentatively" because the pass doing
-    this can't be sure until it ends, and GC_TENTATIVELY_UNREACHABLE may
-    transition back to GC_REACHABLE.
-
-    Only objects with GC_TENTATIVELY_UNREACHABLE still set are candidates
-    for collection.  If it's decided not to collect such an object (e.g.,
-    it has a __del__ method), its gc_refs is restored to GC_REACHABLE again.
-----------------------------------------------------------------------------
-*/
-#define GC_UNTRACKED                    _PyGC_REFS_UNTRACKED
-#define GC_REACHABLE                    _PyGC_REFS_REACHABLE
-#define GC_TENTATIVELY_UNREACHABLE      _PyGC_REFS_TENTATIVELY_UNREACHABLE
-
-#define IS_TRACKED(o) ((AS_GC(o))->gc.gc_refs != GC_UNTRACKED)
-#define IS_REACHABLE(o) ((AS_GC(o))->gc.gc_refs == GC_REACHABLE)
-#define IS_TENTATIVELY_UNREACHABLE(o) ( \
-    (AS_GC(o))->gc.gc_refs == GC_TENTATIVELY_UNREACHABLE)
-
-/*** list functions ***/
-
-static void
-gc_list_init(PyGC_Head *list)
-{
-    list->gc.gc_prev = list;
-    list->gc.gc_next = list;
-}
-
-static int
-gc_list_is_empty(PyGC_Head *list)
-{
-    return (list->gc.gc_next == list);
-}
-
-#if 0
-/* This became unused after gc_list_move() was introduced. */
-/* Append `node` to `list`. */
-static void
-gc_list_append(PyGC_Head *node, PyGC_Head *list)
-{
-    node->gc.gc_next = list;
-    node->gc.gc_prev = list->gc.gc_prev;
-    node->gc.gc_prev->gc.gc_next = node;
-    list->gc.gc_prev = node;
-}
-#endif
-
-/* Remove `node` from the gc list it's currently in. */
-static void
-gc_list_remove(PyGC_Head *node)
-{
-    node->gc.gc_prev->gc.gc_next = node->gc.gc_next;
-    node->gc.gc_next->gc.gc_prev = node->gc.gc_prev;
-    node->gc.gc_next = NULL; /* object is not currently tracked */
-}
-
-/* Move `node` from the gc list it's currently in (which is not explicitly
- * named here) to the end of `list`.  This is semantically the same as
- * gc_list_remove(node) followed by gc_list_append(node, list).
- */
-static void
-gc_list_move(PyGC_Head *node, PyGC_Head *list)
-{
-    PyGC_Head *new_prev;
-    PyGC_Head *current_prev = node->gc.gc_prev;
-    PyGC_Head *current_next = node->gc.gc_next;
-    /* Unlink from current list. */
-    current_prev->gc.gc_next = current_next;
-    current_next->gc.gc_prev = current_prev;
-    /* Relink at end of new list. */
-    new_prev = node->gc.gc_prev = list->gc.gc_prev;
-    new_prev->gc.gc_next = list->gc.gc_prev = node;
-    node->gc.gc_next = list;
-}
-
-/* append list `from` onto list `to`; `from` becomes an empty list */
-static void
-gc_list_merge(PyGC_Head *from, PyGC_Head *to)
-{
-    PyGC_Head *tail;
-    assert(from != to);
-    if (!gc_list_is_empty(from)) {
-        tail = to->gc.gc_prev;
-        tail->gc.gc_next = from->gc.gc_next;
-        tail->gc.gc_next->gc.gc_prev = tail;
-        to->gc.gc_prev = from->gc.gc_prev;
-        to->gc.gc_prev->gc.gc_next = to;
-    }
-    gc_list_init(from);
-}
-
-static Py_ssize_t
-gc_list_size(PyGC_Head *list)
-{
-    PyGC_Head *gc;
-    Py_ssize_t n = 0;
-    for (gc = list->gc.gc_next; gc != list; gc = gc->gc.gc_next) {
-        n++;
-    }
-    return n;
-}
-
-/* Append objects in a GC list to a Python list.
- * Return 0 if all OK, < 0 if error (out of memory for list).
- */
-static int
-append_objects(PyObject *py_list, PyGC_Head *gc_list)
-{
-    PyGC_Head *gc;
-    for (gc = gc_list->gc.gc_next; gc != gc_list; gc = gc->gc.gc_next) {
-        PyObject *op = FROM_GC(gc);
-        if (op != py_list) {
-            if (PyList_Append(py_list, op)) {
-                return -1; /* exception */
-            }
-        }
-    }
-    return 0;
-}
-
-/*** end of list stuff ***/
-
-
-/* Set all gc_refs = ob_refcnt.  After this, gc_refs is > 0 for all objects
- * in containers, and is GC_REACHABLE for all tracked gc objects not in
- * containers.
- */
-static void
-update_refs(PyGC_Head *containers)
-{
-    PyGC_Head *gc = containers->gc.gc_next;
-    for (; gc != containers; gc = gc->gc.gc_next) {
-        assert(gc->gc.gc_refs == GC_REACHABLE);
-        gc->gc.gc_refs = Py_REFCNT(FROM_GC(gc));
-        /* Python's cyclic gc should never see an incoming refcount
-         * of 0:  if something decref'ed to 0, it should have been
-         * deallocated immediately at that time.
-         * Possible cause (if the assert triggers):  a tp_dealloc
-         * routine left a gc-aware object tracked during its teardown
-         * phase, and did something-- or allowed something to happen --
-         * that called back into Python.  gc can trigger then, and may
-         * see the still-tracked dying object.  Before this assert
-         * was added, such mistakes went on to allow gc to try to
-         * delete the object again.  In a debug build, that caused
-         * a mysterious segfault, when _Py_ForgetReference tried
-         * to remove the object from the doubly-linked list of all
-         * objects a second time.  In a release build, an actual
-         * double deallocation occurred, which leads to corruption
-         * of the allocator's internal bookkeeping pointers.  That's
-         * so serious that maybe this should be a release-build
-         * check instead of an assert?
-         */
-        assert(gc->gc.gc_refs != 0);
-    }
-}
-
-/* A traversal callback for subtract_refs. */
-static int
-visit_decref(PyObject *op, void *data)
-{
-    assert(op != NULL);
-    if (PyObject_IS_GC(op)) {
-        PyGC_Head *gc = AS_GC(op);
-        /* We're only interested in gc_refs for objects in the
-         * generation being collected, which can be recognized
-         * because only they have positive gc_refs.
-         */
-        assert(gc->gc.gc_refs != 0); /* else refcount was too small */
-        if (gc->gc.gc_refs > 0)
-            gc->gc.gc_refs--;
-    }
-    return 0;
-}
-
-/* Subtract internal references from gc_refs.  After this, gc_refs is >= 0
- * for all objects in containers, and is GC_REACHABLE for all tracked gc
- * objects not in containers.  The ones with gc_refs > 0 are directly
- * reachable from outside containers, and so can't be collected.
- */
-static void
-subtract_refs(PyGC_Head *containers)
-{
-    traverseproc traverse;
-    PyGC_Head *gc = containers->gc.gc_next;
-    for (; gc != containers; gc=gc->gc.gc_next) {
-        traverse = Py_TYPE(FROM_GC(gc))->tp_traverse;
-        (void) traverse(FROM_GC(gc),
-                       (visitproc)visit_decref,
-                       NULL);
-    }
-}
-
-/* A traversal callback for move_unreachable. */
-static int
-visit_reachable(PyObject *op, PyGC_Head *reachable)
-{
-    if (PyObject_IS_GC(op)) {
-        PyGC_Head *gc = AS_GC(op);
-        const Py_ssize_t gc_refs = gc->gc.gc_refs;
-
-        if (gc_refs == 0) {
-            /* This is in move_unreachable's 'young' list, but
-             * the traversal hasn't yet gotten to it.  All
-             * we need to do is tell move_unreachable that it's
-             * reachable.
-             */
-            gc->gc.gc_refs = 1;
-        }
-        else if (gc_refs == GC_TENTATIVELY_UNREACHABLE) {
-            /* This had gc_refs = 0 when move_unreachable got
-             * to it, but turns out it's reachable after all.
-             * Move it back to move_unreachable's 'young' list,
-             * and move_unreachable will eventually get to it
-             * again.
-             */
-            gc_list_move(gc, reachable);
-            gc->gc.gc_refs = 1;
-        }
-        /* Else there's nothing to do.
-         * If gc_refs > 0, it must be in move_unreachable's 'young'
-         * list, and move_unreachable will eventually get to it.
-         * If gc_refs == GC_REACHABLE, it's either in some other
-         * generation so we don't care about it, or move_unreachable
-         * already dealt with it.
-         * If gc_refs == GC_UNTRACKED, it must be ignored.
-         */
-         else {
-            assert(gc_refs > 0
-                   || gc_refs == GC_REACHABLE
-                   || gc_refs == GC_UNTRACKED);
-         }
-    }
-    return 0;
-}
-
-/* Move the unreachable objects from young to unreachable.  After this,
- * all objects in young have gc_refs = GC_REACHABLE, and all objects in
- * unreachable have gc_refs = GC_TENTATIVELY_UNREACHABLE.  All tracked
- * gc objects not in young or unreachable still have gc_refs = GC_REACHABLE.
- * All objects in young after this are directly or indirectly reachable
- * from outside the original young; and all objects in unreachable are
- * not.
- */
-static void
-move_unreachable(PyGC_Head *young, PyGC_Head *unreachable)
-{
-    PyGC_Head *gc = young->gc.gc_next;
-
-    /* Invariants:  all objects "to the left" of us in young have gc_refs
-     * = GC_REACHABLE, and are indeed reachable (directly or indirectly)
-     * from outside the young list as it was at entry.  All other objects
-     * from the original young "to the left" of us are in unreachable now,
-     * and have gc_refs = GC_TENTATIVELY_UNREACHABLE.  All objects to the
-     * left of us in 'young' now have been scanned, and no objects here
-     * or to the right have been scanned yet.
-     */
-
-    while (gc != young) {
-        PyGC_Head *next;
-
-        if (gc->gc.gc_refs) {
-            /* gc is definitely reachable from outside the
-             * original 'young'.  Mark it as such, and traverse
-             * its pointers to find any other objects that may
-             * be directly reachable from it.  Note that the
-             * call to tp_traverse may append objects to young,
-             * so we have to wait until it returns to determine
-             * the next object to visit.
-             */
-            PyObject *op = FROM_GC(gc);
-            traverseproc traverse = Py_TYPE(op)->tp_traverse;
-            assert(gc->gc.gc_refs > 0);
-            gc->gc.gc_refs = GC_REACHABLE;
-            (void) traverse(op,
-                            (visitproc)visit_reachable,
-                            (void *)young);
-            next = gc->gc.gc_next;
-            if (PyTuple_CheckExact(op)) {
-                _PyTuple_MaybeUntrack(op);
-            }
-            else if (PyDict_CheckExact(op)) {
-                _PyDict_MaybeUntrack(op);
-            }
-        }
-        else {
-            /* This *may* be unreachable.  To make progress,
-             * assume it is.  gc isn't directly reachable from
-             * any object we've already traversed, but may be
-             * reachable from an object we haven't gotten to yet.
-             * visit_reachable will eventually move gc back into
-             * young if that's so, and we'll see it again.
-             */
-            next = gc->gc.gc_next;
-            gc_list_move(gc, unreachable);
-            gc->gc.gc_refs = GC_TENTATIVELY_UNREACHABLE;
-        }
-        gc = next;
-    }
-}
-
-/* Return true if object has a finalization method.
- * CAUTION:  An instance of an old-style class has to be checked for a
- *__del__ method, and earlier versions of this used to call PyObject_HasAttr,
- * which in turn could call the class's __getattr__ hook (if any).  That
- * could invoke arbitrary Python code, mutating the object graph in arbitrary
- * ways, and that was the source of some excruciatingly subtle bugs.
- */
-static int
-has_finalizer(PyObject *op)
-{
-    if (PyInstance_Check(op)) {
-        assert(delstr != NULL);
-        return _PyInstance_Lookup(op, delstr) != NULL;
-    }
-    else if (PyType_HasFeature(op->ob_type, Py_TPFLAGS_HEAPTYPE))
-        return op->ob_type->tp_del != NULL;
-    else if (PyGen_CheckExact(op))
-        return PyGen_NeedsFinalizing((PyGenObject *)op);
-    else
-        return 0;
-}
-
-/* Move the objects in unreachable with __del__ methods into `finalizers`.
- * Objects moved into `finalizers` have gc_refs set to GC_REACHABLE; the
- * objects remaining in unreachable are left at GC_TENTATIVELY_UNREACHABLE.
- */
-static void
-move_finalizers(PyGC_Head *unreachable, PyGC_Head *finalizers)
-{
-    PyGC_Head *gc;
-    PyGC_Head *next;
-
-    /* March over unreachable.  Move objects with finalizers into
-     * `finalizers`.
-     */
-    for (gc = unreachable->gc.gc_next; gc != unreachable; gc = next) {
-        PyObject *op = FROM_GC(gc);
-
-        assert(IS_TENTATIVELY_UNREACHABLE(op));
-        next = gc->gc.gc_next;
-
-        if (has_finalizer(op)) {
-            gc_list_move(gc, finalizers);
-            gc->gc.gc_refs = GC_REACHABLE;
-        }
-    }
-}
-
-/* A traversal callback for move_finalizer_reachable. */
-static int
-visit_move(PyObject *op, PyGC_Head *tolist)
-{
-    if (PyObject_IS_GC(op)) {
-        if (IS_TENTATIVELY_UNREACHABLE(op)) {
-            PyGC_Head *gc = AS_GC(op);
-            gc_list_move(gc, tolist);
-            gc->gc.gc_refs = GC_REACHABLE;
-        }
-    }
-    return 0;
-}
-
-/* Move objects that are reachable from finalizers, from the unreachable set
- * into finalizers set.
- */
-static void
-move_finalizer_reachable(PyGC_Head *finalizers)
-{
-    traverseproc traverse;
-    PyGC_Head *gc = finalizers->gc.gc_next;
-    for (; gc != finalizers; gc = gc->gc.gc_next) {
-        /* Note that the finalizers list may grow during this. */
-        traverse = Py_TYPE(FROM_GC(gc))->tp_traverse;
-        (void) traverse(FROM_GC(gc),
-                        (visitproc)visit_move,
-                        (void *)finalizers);
-    }
-}
-
-/* Clear all weakrefs to unreachable objects, and if such a weakref has a
- * callback, invoke it if necessary.  Note that it's possible for such
- * weakrefs to be outside the unreachable set -- indeed, those are precisely
- * the weakrefs whose callbacks must be invoked.  See gc_weakref.txt for
- * overview & some details.  Some weakrefs with callbacks may be reclaimed
- * directly by this routine; the number reclaimed is the return value.  Other
- * weakrefs with callbacks may be moved into the `old` generation.  Objects
- * moved into `old` have gc_refs set to GC_REACHABLE; the objects remaining in
- * unreachable are left at GC_TENTATIVELY_UNREACHABLE.  When this returns,
- * no object in `unreachable` is weakly referenced anymore.
- */
-static int
-handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old)
-{
-    PyGC_Head *gc;
-    PyObject *op;               /* generally FROM_GC(gc) */
-    PyWeakReference *wr;        /* generally a cast of op */
-    PyGC_Head wrcb_to_call;     /* weakrefs with callbacks to call */
-    PyGC_Head *next;
-    int num_freed = 0;
-
-    gc_list_init(&wrcb_to_call);
-
-    /* Clear all weakrefs to the objects in unreachable.  If such a weakref
-     * also has a callback, move it into `wrcb_to_call` if the callback
-     * needs to be invoked.  Note that we cannot invoke any callbacks until
-     * all weakrefs to unreachable objects are cleared, lest the callback
-     * resurrect an unreachable object via a still-active weakref.  We
-     * make another pass over wrcb_to_call, invoking callbacks, after this
-     * pass completes.
-     */
-    for (gc = unreachable->gc.gc_next; gc != unreachable; gc = next) {
-        PyWeakReference **wrlist;
-
-        op = FROM_GC(gc);
-        assert(IS_TENTATIVELY_UNREACHABLE(op));
-        next = gc->gc.gc_next;
-
-        if (! PyType_SUPPORTS_WEAKREFS(Py_TYPE(op)))
-            continue;
-
-        /* It supports weakrefs.  Does it have any? */
-        wrlist = (PyWeakReference **)
-                                PyObject_GET_WEAKREFS_LISTPTR(op);
-
-        /* `op` may have some weakrefs.  March over the list, clear
-         * all the weakrefs, and move the weakrefs with callbacks
-         * that must be called into wrcb_to_call.
-         */
-        for (wr = *wrlist; wr != NULL; wr = *wrlist) {
-            PyGC_Head *wrasgc;                  /* AS_GC(wr) */
-
-            /* _PyWeakref_ClearRef clears the weakref but leaves
-             * the callback pointer intact.  Obscure:  it also
-             * changes *wrlist.
-             */
-            assert(wr->wr_object == op);
-            _PyWeakref_ClearRef(wr);
-            assert(wr->wr_object == Py_None);
-            if (wr->wr_callback == NULL)
-                continue;                       /* no callback */
-
-    /* Headache time.  `op` is going away, and is weakly referenced by
-     * `wr`, which has a callback.  Should the callback be invoked?  If wr
-     * is also trash, no:
-     *
-     * 1. There's no need to call it.  The object and the weakref are
-     *    both going away, so it's legitimate to pretend the weakref is
-     *    going away first.  The user has to ensure a weakref outlives its
-     *    referent if they want a guarantee that the wr callback will get
-     *    invoked.
-     *
-     * 2. It may be catastrophic to call it.  If the callback is also in
-     *    cyclic trash (CT), then although the CT is unreachable from
-     *    outside the current generation, CT may be reachable from the
-     *    callback.  Then the callback could resurrect insane objects.
-     *
-     * Since the callback is never needed and may be unsafe in this case,
-     * wr is simply left in the unreachable set.  Note that because we
-     * already called _PyWeakref_ClearRef(wr), its callback will never
-     * trigger.
-     *
-     * OTOH, if wr isn't part of CT, we should invoke the callback:  the
-     * weakref outlived the trash.  Note that since wr isn't CT in this
-     * case, its callback can't be CT either -- wr acted as an external
-     * root to this generation, and therefore its callback did too.  So
-     * nothing in CT is reachable from the callback either, so it's hard
-     * to imagine how calling it later could create a problem for us.  wr
-     * is moved to wrcb_to_call in this case.
-     */
-            if (IS_TENTATIVELY_UNREACHABLE(wr))
-                continue;
-            assert(IS_REACHABLE(wr));
-
-            /* Create a new reference so that wr can't go away
-             * before we can process it again.
-             */
-            Py_INCREF(wr);
-
-            /* Move wr to wrcb_to_call, for the next pass. */
-            wrasgc = AS_GC(wr);
-            assert(wrasgc != next); /* wrasgc is reachable, but
-                                       next isn't, so they can't
-                                       be the same */
-            gc_list_move(wrasgc, &wrcb_to_call);
-        }
-    }
-
-    /* Invoke the callbacks we decided to honor.  It's safe to invoke them
-     * because they can't reference unreachable objects.
-     */
-    while (! gc_list_is_empty(&wrcb_to_call)) {
-        PyObject *temp;
-        PyObject *callback;
-
-        gc = wrcb_to_call.gc.gc_next;
-        op = FROM_GC(gc);
-        assert(IS_REACHABLE(op));
-        assert(PyWeakref_Check(op));
-        wr = (PyWeakReference *)op;
-        callback = wr->wr_callback;
-        assert(callback != NULL);
-
-        /* copy-paste of weakrefobject.c's handle_callback() */
-        temp = PyObject_CallFunctionObjArgs(callback, wr, NULL);
-        if (temp == NULL)
-            PyErr_WriteUnraisable(callback);
-        else
-            Py_DECREF(temp);
-
-        /* Give up the reference we created in the first pass.  When
-         * op's refcount hits 0 (which it may or may not do right now),
-         * op's tp_dealloc will decref op->wr_callback too.  Note
-         * that the refcount probably will hit 0 now, and because this
-         * weakref was reachable to begin with, gc didn't already
-         * add it to its count of freed objects.  Example:  a reachable
-         * weak value dict maps some key to this reachable weakref.
-         * The callback removes this key->weakref mapping from the
-         * dict, leaving no other references to the weakref (excepting
-         * ours).
-         */
-        Py_DECREF(op);
-        if (wrcb_to_call.gc.gc_next == gc) {
-            /* object is still alive -- move it */
-            gc_list_move(gc, old);
-        }
-        else
-            ++num_freed;
-    }
-
-    return num_freed;
-}
-
-static void
-debug_instance(char *msg, PyInstanceObject *inst)
-{
-    char *cname;
-    /* simple version of instance_repr */
-    PyObject *classname = inst->in_class->cl_name;
-    if (classname != NULL && PyString_Check(classname))
-        cname = PyString_AsString(classname);
-    else
-        cname = "?";
-    PySys_WriteStderr("gc: %.100s <%.100s instance at %p>\n",
-                      msg, cname, inst);
-}
-
-static void
-debug_cycle(char *msg, PyObject *op)
-{
-    if ((debug & DEBUG_INSTANCES) && PyInstance_Check(op)) {
-        debug_instance(msg, (PyInstanceObject *)op);
-    }
-    else if (debug & DEBUG_OBJECTS) {
-        PySys_WriteStderr("gc: %.100s <%.100s %p>\n",
-                          msg, Py_TYPE(op)->tp_name, op);
-    }
-}
-
-/* Handle uncollectable garbage (cycles with finalizers, and stuff reachable
- * only from such cycles).
- * If DEBUG_SAVEALL, all objects in finalizers are appended to the module
- * garbage list (a Python list), else only the objects in finalizers with
- * __del__ methods are appended to garbage.  All objects in finalizers are
- * merged into the old list regardless.
- * Returns 0 if all OK, <0 on error (out of memory to grow the garbage list).
- * The finalizers list is made empty on a successful return.
- */
-static int
-handle_finalizers(PyGC_Head *finalizers, PyGC_Head *old)
-{
-    PyGC_Head *gc = finalizers->gc.gc_next;
-
-    if (garbage == NULL) {
-        garbage = PyList_New(0);
-        if (garbage == NULL)
-            Py_FatalError("gc couldn't create gc.garbage list");
-    }
-    for (; gc != finalizers; gc = gc->gc.gc_next) {
-        PyObject *op = FROM_GC(gc);
-
-        if ((debug & DEBUG_SAVEALL) || has_finalizer(op)) {
-            if (PyList_Append(garbage, op) < 0)
-                return -1;
-        }
-    }
-
-    gc_list_merge(finalizers, old);
-    return 0;
-}
-
-/* Break reference cycles by clearing the containers involved.  This is
- * tricky business as the lists can be changing and we don't know which
- * objects may be freed.  It is possible I screwed something up here.
- */
-static void
-delete_garbage(PyGC_Head *collectable, PyGC_Head *old)
-{
-    inquiry clear;
-
-    while (!gc_list_is_empty(collectable)) {
-        PyGC_Head *gc = collectable->gc.gc_next;
-        PyObject *op = FROM_GC(gc);
-
-        assert(IS_TENTATIVELY_UNREACHABLE(op));
-        if (debug & DEBUG_SAVEALL) {
-            PyList_Append(garbage, op);
-        }
-        else {
-            if ((clear = Py_TYPE(op)->tp_clear) != NULL) {
-                Py_INCREF(op);
-                clear(op);
-                Py_DECREF(op);
-            }
-        }
-        if (collectable->gc.gc_next == gc) {
-            /* object is still alive, move it, it may die later */
-            gc_list_move(gc, old);
-            gc->gc.gc_refs = GC_REACHABLE;
-        }
-    }
-}
-
-/* Clear all free lists
- * All free lists are cleared during the collection of the highest generation.
- * Allocated items in the free list may keep a pymalloc arena occupied.
- * Clearing the free lists may give back memory to the OS earlier.
- */
-static void
-clear_freelists(void)
-{
-    (void)PyMethod_ClearFreeList();
-    (void)PyFrame_ClearFreeList();
-    (void)PyCFunction_ClearFreeList();
-    (void)PyTuple_ClearFreeList();
-#ifdef Py_USING_UNICODE
-    (void)PyUnicode_ClearFreeList();
-#endif
-    (void)PyInt_ClearFreeList();
-    (void)PyFloat_ClearFreeList();
-}
-
-static double
-get_time(void)
-{
-    double result = 0;
-    if (tmod != NULL) {
-        PyObject *f = PyObject_CallMethod(tmod, "time", NULL);
-        if (f == NULL) {
-            PyErr_Clear();
-        }
-        else {
-            if (PyFloat_Check(f))
-                result = PyFloat_AsDouble(f);
-            Py_DECREF(f);
-        }
-    }
-    return result;
-}
-
-/* This is the main function.  Read this to understand how the
- * collection process works. */
-static Py_ssize_t
-collect(int generation)
-{
-    int i;
-    Py_ssize_t m = 0; /* # objects collected */
-    Py_ssize_t n = 0; /* # unreachable objects that couldn't be collected */
-    PyGC_Head *young; /* the generation we are examining */
-    PyGC_Head *old; /* next older generation */
-    PyGC_Head unreachable; /* non-problematic unreachable trash */
-    PyGC_Head finalizers;  /* objects with, & reachable from, __del__ */
-    PyGC_Head *gc;
-    double t1 = 0.0;
-
-    if (delstr == NULL) {
-        delstr = PyString_InternFromString("__del__");
-        if (delstr == NULL)
-            Py_FatalError("gc couldn't allocate \"__del__\"");
-    }
-
-    if (debug & DEBUG_STATS) {
-        PySys_WriteStderr("gc: collecting generation %d...\n",
-                          generation);
-        PySys_WriteStderr("gc: objects in each generation:");
-        for (i = 0; i < NUM_GENERATIONS; i++)
-            PySys_WriteStderr(" %" PY_FORMAT_SIZE_T "d",
-                              gc_list_size(GEN_HEAD(i)));
-        t1 = get_time();
-        PySys_WriteStderr("\n");
-    }
-
-    /* update collection and allocation counters */
-    if (generation+1 < NUM_GENERATIONS)
-        generations[generation+1].count += 1;
-    for (i = 0; i <= generation; i++)
-        generations[i].count = 0;
-
-    /* merge younger generations with one we are currently collecting */
-    for (i = 0; i < generation; i++) {
-        gc_list_merge(GEN_HEAD(i), GEN_HEAD(generation));
-    }
-
-    /* handy references */
-    young = GEN_HEAD(generation);
-    if (generation < NUM_GENERATIONS-1)
-        old = GEN_HEAD(generation+1);
-    else
-        old = young;
-
-    /* Using ob_refcnt and gc_refs, calculate which objects in the
-     * container set are reachable from outside the set (i.e., have a
-     * refcount greater than 0 when all the references within the
-     * set are taken into account).
-     */
-    update_refs(young);
-    subtract_refs(young);
-
-    /* Leave everything reachable from outside young in young, and move
-     * everything else (in young) to unreachable.
-     * NOTE:  This used to move the reachable objects into a reachable
-     * set instead.  But most things usually turn out to be reachable,
-     * so it's more efficient to move the unreachable things.
-     */
-    gc_list_init(&unreachable);
-    move_unreachable(young, &unreachable);
-
-    /* Move reachable objects to next generation. */
-    if (young != old) {
-        if (generation == NUM_GENERATIONS - 2) {
-            long_lived_pending += gc_list_size(young);
-        }
-        gc_list_merge(young, old);
-    }
-    else {
-        long_lived_pending = 0;
-        long_lived_total = gc_list_size(young);
-    }
-
-    /* All objects in unreachable are trash, but objects reachable from
-     * finalizers can't safely be deleted.  Python programmers should take
-     * care not to create such things.  For Python, finalizers means
-     * instance objects with __del__ methods.  Weakrefs with callbacks
-     * can also call arbitrary Python code but they will be dealt with by
-     * handle_weakrefs().
-     */
-    gc_list_init(&finalizers);
-    move_finalizers(&unreachable, &finalizers);
-    /* finalizers contains the unreachable objects with a finalizer;
-     * unreachable objects reachable *from* those are also uncollectable,
-     * and we move those into the finalizers list too.
-     */
-    move_finalizer_reachable(&finalizers);
-
-    /* Collect statistics on collectable objects found and print
-     * debugging information.
-     */
-    for (gc = unreachable.gc.gc_next; gc != &unreachable;
-                    gc = gc->gc.gc_next) {
-        m++;
-        if (debug & DEBUG_COLLECTABLE) {
-            debug_cycle("collectable", FROM_GC(gc));
-        }
-    }
-
-    /* Clear weakrefs and invoke callbacks as necessary. */
-    m += handle_weakrefs(&unreachable, old);
-
-    /* Call tp_clear on objects in the unreachable set.  This will cause
-     * the reference cycles to be broken.  It may also cause some objects
-     * in finalizers to be freed.
-     */
-    delete_garbage(&unreachable, old);
-
-    /* Collect statistics on uncollectable objects found and print
-     * debugging information. */
-    for (gc = finalizers.gc.gc_next;
-         gc != &finalizers;
-         gc = gc->gc.gc_next) {
-        n++;
-        if (debug & DEBUG_UNCOLLECTABLE)
-            debug_cycle("uncollectable", FROM_GC(gc));
-    }
-    if (debug & DEBUG_STATS) {
-        double t2 = get_time();
-        if (m == 0 && n == 0)
-            PySys_WriteStderr("gc: done");
-        else
-            PySys_WriteStderr(
-                "gc: done, "
-                "%" PY_FORMAT_SIZE_T "d unreachable, "
-                "%" PY_FORMAT_SIZE_T "d uncollectable",
-                n+m, n);
-        if (t1 && t2) {
-            PySys_WriteStderr(", %.4fs elapsed", t2-t1);
-        }
-        PySys_WriteStderr(".\n");
-    }
-
-    /* Append instances in the uncollectable set to a Python
-     * reachable list of garbage.  The programmer has to deal with
-     * this if they insist on creating this type of structure.
-     */
-    (void)handle_finalizers(&finalizers, old);
-
-    /* Clear free list only during the collection of the highest
-     * generation */
-    if (generation == NUM_GENERATIONS-1) {
-        clear_freelists();
-    }
-
-    if (PyErr_Occurred()) {
-        if (gc_str == NULL)
-            gc_str = PyString_FromString("garbage collection");
-        PyErr_WriteUnraisable(gc_str);
-        Py_FatalError("unexpected exception during garbage collection");
-    }
-    return n+m;
-}
-
-static Py_ssize_t
-collect_generations(void)
-{
-    int i;
-    Py_ssize_t n = 0;
-
-    /* Find the oldest generation (highest numbered) where the count
-     * exceeds the threshold.  Objects in the that generation and
-     * generations younger than it will be collected. */
-    for (i = NUM_GENERATIONS-1; i >= 0; i--) {
-        if (generations[i].count > generations[i].threshold) {
-            /* Avoid quadratic performance degradation in number
-               of tracked objects. See comments at the beginning
-               of this file, and issue #4074.
-            */
-            if (i == NUM_GENERATIONS - 1
-                && long_lived_pending < long_lived_total / 4)
-                continue;
-            n = collect(i);
-            break;
-        }
-    }
-    return n;
-}
-
-PyDoc_STRVAR(gc_enable__doc__,
-"enable() -> None\n"
-"\n"
-"Enable automatic garbage collection.\n");
-
-static PyObject *
-gc_enable(PyObject *self, PyObject *noargs)
-{
-    enabled = 1;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(gc_disable__doc__,
-"disable() -> None\n"
-"\n"
-"Disable automatic garbage collection.\n");
-
-static PyObject *
-gc_disable(PyObject *self, PyObject *noargs)
-{
-    enabled = 0;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(gc_isenabled__doc__,
-"isenabled() -> status\n"
-"\n"
-"Returns true if automatic garbage collection is enabled.\n");
-
-static PyObject *
-gc_isenabled(PyObject *self, PyObject *noargs)
-{
-    return PyBool_FromLong((long)enabled);
-}
-
-PyDoc_STRVAR(gc_collect__doc__,
-"collect([generation]) -> n\n"
-"\n"
-"With no arguments, run a full collection.  The optional argument\n"
-"may be an integer specifying which generation to collect.  A ValueError\n"
-"is raised if the generation number is invalid.\n\n"
-"The number of unreachable objects is returned.\n");
-
-static PyObject *
-gc_collect(PyObject *self, PyObject *args, PyObject *kws)
-{
-    static char *keywords[] = {"generation", NULL};
-    int genarg = NUM_GENERATIONS - 1;
-    Py_ssize_t n;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kws, "|i", keywords, &genarg))
-        return NULL;
-
-    else if (genarg < 0 || genarg >= NUM_GENERATIONS) {
-        PyErr_SetString(PyExc_ValueError, "invalid generation");
-        return NULL;
-    }
-
-    if (collecting)
-        n = 0; /* already collecting, don't do anything */
-    else {
-        collecting = 1;
-        n = collect(genarg);
-        collecting = 0;
-    }
-
-    return PyInt_FromSsize_t(n);
-}
-
-PyDoc_STRVAR(gc_set_debug__doc__,
-"set_debug(flags) -> None\n"
-"\n"
-"Set the garbage collection debugging flags. Debugging information is\n"
-"written to sys.stderr.\n"
-"\n"
-"flags is an integer and can have the following bits turned on:\n"
-"\n"
-"  DEBUG_STATS - Print statistics during collection.\n"
-"  DEBUG_COLLECTABLE - Print collectable objects found.\n"
-"  DEBUG_UNCOLLECTABLE - Print unreachable but uncollectable objects found.\n"
-"  DEBUG_INSTANCES - Print instance objects.\n"
-"  DEBUG_OBJECTS - Print objects other than instances.\n"
-"  DEBUG_SAVEALL - Save objects to gc.garbage rather than freeing them.\n"
-"  DEBUG_LEAK - Debug leaking programs (everything but STATS).\n");
-
-static PyObject *
-gc_set_debug(PyObject *self, PyObject *args)
-{
-    if (!PyArg_ParseTuple(args, "i:set_debug", &debug))
-        return NULL;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(gc_get_debug__doc__,
-"get_debug() -> flags\n"
-"\n"
-"Get the garbage collection debugging flags.\n");
-
-static PyObject *
-gc_get_debug(PyObject *self, PyObject *noargs)
-{
-    return Py_BuildValue("i", debug);
-}
-
-PyDoc_STRVAR(gc_set_thresh__doc__,
-"set_threshold(threshold0, [threshold1, threshold2]) -> None\n"
-"\n"
-"Sets the collection thresholds.  Setting threshold0 to zero disables\n"
-"collection.\n");
-
-static PyObject *
-gc_set_thresh(PyObject *self, PyObject *args)
-{
-    int i;
-    if (!PyArg_ParseTuple(args, "i|ii:set_threshold",
-                          &generations[0].threshold,
-                          &generations[1].threshold,
-                          &generations[2].threshold))
-        return NULL;
-    for (i = 2; i < NUM_GENERATIONS; i++) {
-        /* generations higher than 2 get the same threshold */
-        generations[i].threshold = generations[2].threshold;
-    }
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(gc_get_thresh__doc__,
-"get_threshold() -> (threshold0, threshold1, threshold2)\n"
-"\n"
-"Return the current collection thresholds\n");
-
-static PyObject *
-gc_get_thresh(PyObject *self, PyObject *noargs)
-{
-    return Py_BuildValue("(iii)",
-                         generations[0].threshold,
-                         generations[1].threshold,
-                         generations[2].threshold);
-}
-
-PyDoc_STRVAR(gc_get_count__doc__,
-"get_count() -> (count0, count1, count2)\n"
-"\n"
-"Return the current collection counts\n");
-
-static PyObject *
-gc_get_count(PyObject *self, PyObject *noargs)
-{
-    return Py_BuildValue("(iii)",
-                         generations[0].count,
-                         generations[1].count,
-                         generations[2].count);
-}
-
-static int
-referrersvisit(PyObject* obj, PyObject *objs)
-{
-    Py_ssize_t i;
-    for (i = 0; i < PyTuple_GET_SIZE(objs); i++)
-        if (PyTuple_GET_ITEM(objs, i) == obj)
-            return 1;
-    return 0;
-}
-
-static int
-gc_referrers_for(PyObject *objs, PyGC_Head *list, PyObject *resultlist)
-{
-    PyGC_Head *gc;
-    PyObject *obj;
-    traverseproc traverse;
-    for (gc = list->gc.gc_next; gc != list; gc = gc->gc.gc_next) {
-        obj = FROM_GC(gc);
-        traverse = Py_TYPE(obj)->tp_traverse;
-        if (obj == objs || obj == resultlist)
-            continue;
-        if (traverse(obj, (visitproc)referrersvisit, objs)) {
-            if (PyList_Append(resultlist, obj) < 0)
-                return 0; /* error */
-        }
-    }
-    return 1; /* no error */
-}
-
-PyDoc_STRVAR(gc_get_referrers__doc__,
-"get_referrers(*objs) -> list\n\
-Return the list of objects that directly refer to any of objs.");
-
-static PyObject *
-gc_get_referrers(PyObject *self, PyObject *args)
-{
-    int i;
-    PyObject *result = PyList_New(0);
-    if (!result) return NULL;
-
-    for (i = 0; i < NUM_GENERATIONS; i++) {
-        if (!(gc_referrers_for(args, GEN_HEAD(i), result))) {
-            Py_DECREF(result);
-            return NULL;
-        }
-    }
-    return result;
-}
-
-/* Append obj to list; return true if error (out of memory), false if OK. */
-static int
-referentsvisit(PyObject *obj, PyObject *list)
-{
-    return PyList_Append(list, obj) < 0;
-}
-
-PyDoc_STRVAR(gc_get_referents__doc__,
-"get_referents(*objs) -> list\n\
-Return the list of objects that are directly referred to by objs.");
-
-static PyObject *
-gc_get_referents(PyObject *self, PyObject *args)
-{
-    Py_ssize_t i;
-    PyObject *result = PyList_New(0);
-
-    if (result == NULL)
-        return NULL;
-
-    for (i = 0; i < PyTuple_GET_SIZE(args); i++) {
-        traverseproc traverse;
-        PyObject *obj = PyTuple_GET_ITEM(args, i);
-
-        if (! PyObject_IS_GC(obj))
-            continue;
-        traverse = Py_TYPE(obj)->tp_traverse;
-        if (! traverse)
-            continue;
-        if (traverse(obj, (visitproc)referentsvisit, result)) {
-            Py_DECREF(result);
-            return NULL;
-        }
-    }
-    return result;
-}
-
-PyDoc_STRVAR(gc_get_objects__doc__,
-"get_objects() -> [...]\n"
-"\n"
-"Return a list of objects tracked by the collector (excluding the list\n"
-"returned).\n");
-
-static PyObject *
-gc_get_objects(PyObject *self, PyObject *noargs)
-{
-    int i;
-    PyObject* result;
-
-    result = PyList_New(0);
-    if (result == NULL)
-        return NULL;
-    for (i = 0; i < NUM_GENERATIONS; i++) {
-        if (append_objects(result, GEN_HEAD(i))) {
-            Py_DECREF(result);
-            return NULL;
-        }
-    }
-    return result;
-}
-
-PyDoc_STRVAR(gc_is_tracked__doc__,
-"is_tracked(obj) -> bool\n"
-"\n"
-"Returns true if the object is tracked by the garbage collector.\n"
-"Simple atomic objects will return false.\n"
-);
-
-static PyObject *
-gc_is_tracked(PyObject *self, PyObject *obj)
-{
-    PyObject *result;
-
-    if (PyObject_IS_GC(obj) && IS_TRACKED(obj))
-        result = Py_True;
-    else
-        result = Py_False;
-    Py_INCREF(result);
-    return result;
-}
-
-
-PyDoc_STRVAR(gc__doc__,
-"This module provides access to the garbage collector for reference cycles.\n"
-"\n"
-"enable() -- Enable automatic garbage collection.\n"
-"disable() -- Disable automatic garbage collection.\n"
-"isenabled() -- Returns true if automatic collection is enabled.\n"
-"collect() -- Do a full collection right now.\n"
-"get_count() -- Return the current collection counts.\n"
-"set_debug() -- Set debugging flags.\n"
-"get_debug() -- Get debugging flags.\n"
-"set_threshold() -- Set the collection thresholds.\n"
-"get_threshold() -- Return the current the collection thresholds.\n"
-"get_objects() -- Return a list of all objects tracked by the collector.\n"
-"is_tracked() -- Returns true if a given object is tracked.\n"
-"get_referrers() -- Return the list of objects that refer to an object.\n"
-"get_referents() -- Return the list of objects that an object refers to.\n");
-
-static PyMethodDef GcMethods[] = {
-    {"enable",             gc_enable,     METH_NOARGS,  gc_enable__doc__},
-    {"disable",            gc_disable,    METH_NOARGS,  gc_disable__doc__},
-    {"isenabled",          gc_isenabled,  METH_NOARGS,  gc_isenabled__doc__},
-    {"set_debug",          gc_set_debug,  METH_VARARGS, gc_set_debug__doc__},
-    {"get_debug",          gc_get_debug,  METH_NOARGS,  gc_get_debug__doc__},
-    {"get_count",          gc_get_count,  METH_NOARGS,  gc_get_count__doc__},
-    {"set_threshold",  gc_set_thresh, METH_VARARGS, gc_set_thresh__doc__},
-    {"get_threshold",  gc_get_thresh, METH_NOARGS,  gc_get_thresh__doc__},
-    {"collect",            (PyCFunction)gc_collect,
-        METH_VARARGS | METH_KEYWORDS,           gc_collect__doc__},
-    {"get_objects",    gc_get_objects,METH_NOARGS,  gc_get_objects__doc__},
-    {"is_tracked",     gc_is_tracked, METH_O,       gc_is_tracked__doc__},
-    {"get_referrers",  gc_get_referrers, METH_VARARGS,
-        gc_get_referrers__doc__},
-    {"get_referents",  gc_get_referents, METH_VARARGS,
-        gc_get_referents__doc__},
-    {NULL,      NULL}           /* Sentinel */
-};
-
-PyMODINIT_FUNC
-initgc(void)
-{
-    PyObject *m;
-
-    m = Py_InitModule4("gc",
-                          GcMethods,
-                          gc__doc__,
-                          NULL,
-                          PYTHON_API_VERSION);
-    if (m == NULL)
-        return;
-
-    if (garbage == NULL) {
-        garbage = PyList_New(0);
-        if (garbage == NULL)
-            return;
-    }
-    Py_INCREF(garbage);
-    if (PyModule_AddObject(m, "garbage", garbage) < 0)
-        return;
-
-    /* Importing can't be done in collect() because collect()
-     * can be called via PyGC_Collect() in Py_Finalize().
-     * This wouldn't be a problem, except that <initialized> is
-     * reset to 0 before calling collect which trips up
-     * the import and triggers an assertion.
-     */
-    if (tmod == NULL) {
-        tmod = PyImport_ImportModuleNoBlock("time");
-        if (tmod == NULL)
-            PyErr_Clear();
-    }
-
-#define ADD_INT(NAME) if (PyModule_AddIntConstant(m, #NAME, NAME) < 0) return
-    ADD_INT(DEBUG_STATS);
-    ADD_INT(DEBUG_COLLECTABLE);
-    ADD_INT(DEBUG_UNCOLLECTABLE);
-    ADD_INT(DEBUG_INSTANCES);
-    ADD_INT(DEBUG_OBJECTS);
-    ADD_INT(DEBUG_SAVEALL);
-    ADD_INT(DEBUG_LEAK);
-#undef ADD_INT
-}
-
-/* API to invoke gc.collect() from C */
-Py_ssize_t
-PyGC_Collect(void)
-{
-    Py_ssize_t n;
-
-    if (collecting)
-        n = 0; /* already collecting, don't do anything */
-    else {
-        collecting = 1;
-        n = collect(NUM_GENERATIONS - 1);
-        collecting = 0;
-    }
-
-    return n;
-}
-
-/* for debugging */
-void
-_PyGC_Dump(PyGC_Head *g)
-{
-    _PyObject_Dump(FROM_GC(g));
-}
-
-/* extension modules might be compiled with GC support so these
-   functions must always be available */
-
-#undef PyObject_GC_Track
-#undef PyObject_GC_UnTrack
-#undef PyObject_GC_Del
-#undef _PyObject_GC_Malloc
-
-void
-PyObject_GC_Track(void *op)
-{
-    _PyObject_GC_TRACK(op);
-}
-
-/* for binary compatibility with 2.2 */
-void
-_PyObject_GC_Track(PyObject *op)
-{
-    PyObject_GC_Track(op);
-}
-
-void
-PyObject_GC_UnTrack(void *op)
-{
-    /* Obscure:  the Py_TRASHCAN mechanism requires that we be able to
-     * call PyObject_GC_UnTrack twice on an object.
-     */
-    if (IS_TRACKED(op))
-        _PyObject_GC_UNTRACK(op);
-}
-
-/* for binary compatibility with 2.2 */
-void
-_PyObject_GC_UnTrack(PyObject *op)
-{
-    PyObject_GC_UnTrack(op);
-}
-
-PyObject *
-_PyObject_GC_Malloc(size_t basicsize)
-{
-    PyObject *op;
-    PyGC_Head *g;
-    if (basicsize > PY_SSIZE_T_MAX - sizeof(PyGC_Head))
-        return PyErr_NoMemory();
-    g = (PyGC_Head *)PyObject_MALLOC(
-        sizeof(PyGC_Head) + basicsize);
-    if (g == NULL)
-        return PyErr_NoMemory();
-    g->gc.gc_refs = GC_UNTRACKED;
-    generations[0].count++; /* number of allocated GC objects */
-    if (generations[0].count > generations[0].threshold &&
-        enabled &&
-        generations[0].threshold &&
-        !collecting &&
-        !PyErr_Occurred()) {
-        collecting = 1;
-        collect_generations();
-        collecting = 0;
-    }
-    op = FROM_GC(g);
-    return op;
-}
-
-PyObject *
-_PyObject_GC_New(PyTypeObject *tp)
-{
-    PyObject *op = _PyObject_GC_Malloc(_PyObject_SIZE(tp));
-    if (op != NULL)
-        op = PyObject_INIT(op, tp);
-    return op;
-}
-
-PyVarObject *
-_PyObject_GC_NewVar(PyTypeObject *tp, Py_ssize_t nitems)
-{
-    const size_t size = _PyObject_VAR_SIZE(tp, nitems);
-    PyVarObject *op = (PyVarObject *) _PyObject_GC_Malloc(size);
-    if (op != NULL)
-        op = PyObject_INIT_VAR(op, tp, nitems);
-    return op;
-}
-
-PyVarObject *
-_PyObject_GC_Resize(PyVarObject *op, Py_ssize_t nitems)
-{
-    const size_t basicsize = _PyObject_VAR_SIZE(Py_TYPE(op), nitems);
-    PyGC_Head *g = AS_GC(op);
-    if (basicsize > PY_SSIZE_T_MAX - sizeof(PyGC_Head))
-        return (PyVarObject *)PyErr_NoMemory();
-    g = (PyGC_Head *)PyObject_REALLOC(g,  sizeof(PyGC_Head) + basicsize);
-    if (g == NULL)
-        return (PyVarObject *)PyErr_NoMemory();
-    op = (PyVarObject *) FROM_GC(g);
-    Py_SIZE(op) = nitems;
-    return op;
-}
-
-void
-PyObject_GC_Del(void *op)
-{
-    PyGC_Head *g = AS_GC(op);
-    if (IS_TRACKED(op))
-        gc_list_remove(g);
-    if (generations[0].count > 0) {
-        generations[0].count--;
-    }
-    PyObject_FREE(g);
-}
-
-/* for binary compatibility with 2.2 */
-#undef _PyObject_GC_Del
-void
-_PyObject_GC_Del(PyObject *op)
-{
-    PyObject_GC_Del(op);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/getaddrinfo.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/getaddrinfo.c
deleted file mode 100644
index 3b554cd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/getaddrinfo.c
+++ /dev/null
@@ -1,638 +0,0 @@
-/*
- * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * GAI_ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR GAI_ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON GAI_ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN GAI_ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * "#ifdef FAITH" part is local hack for supporting IPv4-v6 translator.
- *
- * Issues to be discussed:
- * - Thread safe-ness must be checked.
- * - Return values.  There are nonstandard return values defined and used
- *   in the source code.  This is because RFC2133 is silent about which error
- *   code must be returned for which situation.
- * - PF_UNSPEC case would be handled in getipnodebyname() with the AI_ALL flag.
- */
-
-#if 0
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/sysctl.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <arpa/nameser.h>
-#include <netdb.h>
-#include <resolv.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <ctype.h>
-#include <unistd.h>
-
-#include "addrinfo.h"
-#endif
-
-#if defined(__KAME__) && defined(ENABLE_IPV6)
-# define FAITH
-#endif
-
-#define SUCCESS 0
-#define GAI_ANY 0
-#define YES 1
-#define NO  0
-
-#ifdef FAITH
-static int translate = NO;
-static struct in6_addr faith_prefix = IN6ADDR_GAI_ANY_INIT;
-#endif
-
-static const char in_addrany[] = { 0, 0, 0, 0 };
-static const char in6_addrany[] = {
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-static const char in_loopback[] = { 127, 0, 0, 1 };
-static const char in6_loopback[] = {
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
-};
-
-struct sockinet {
-    u_char      si_len;
-    u_char      si_family;
-    u_short     si_port;
-};
-
-static struct gai_afd {
-    int a_af;
-    int a_addrlen;
-    int a_socklen;
-    int a_off;
-    const char *a_addrany;
-    const char *a_loopback;
-} gai_afdl [] = {
-#ifdef ENABLE_IPV6
-#define N_INET6 0
-    {PF_INET6, sizeof(struct in6_addr),
-     sizeof(struct sockaddr_in6),
-     offsetof(struct sockaddr_in6, sin6_addr),
-     in6_addrany, in6_loopback},
-#define N_INET  1
-#else
-#define N_INET  0
-#endif
-    {PF_INET, sizeof(struct in_addr),
-     sizeof(struct sockaddr_in),
-     offsetof(struct sockaddr_in, sin_addr),
-     in_addrany, in_loopback},
-    {0, 0, 0, 0, NULL, NULL},
-};
-
-#ifdef ENABLE_IPV6
-#define PTON_MAX        16
-#else
-#define PTON_MAX        4
-#endif
-
-#ifndef IN_MULTICAST
-#define IN_MULTICAST(i)     (((i) & 0xf0000000U) == 0xe0000000U)
-#endif
-
-#ifndef IN_EXPERIMENTAL
-#define IN_EXPERIMENTAL(i)  (((i) & 0xe0000000U) == 0xe0000000U)
-#endif
-
-#ifndef IN_LOOPBACKNET
-#define IN_LOOPBACKNET      127
-#endif
-
-static int get_name Py_PROTO((const char *, struct gai_afd *,
-                          struct addrinfo **, char *, struct addrinfo *,
-                          int));
-static int get_addr Py_PROTO((const char *, int, struct addrinfo **,
-                        struct addrinfo *, int));
-static int str_isnumber Py_PROTO((const char *));
-
-static char *ai_errlist[] = {
-    "success.",
-    "address family for hostname not supported.",       /* EAI_ADDRFAMILY */
-    "temporary failure in name resolution.",            /* EAI_AGAIN      */
-    "invalid value for ai_flags.",                      /* EAI_BADFLAGS   */
-    "non-recoverable failure in name resolution.",      /* EAI_FAIL       */
-    "ai_family not supported.",                         /* EAI_FAMILY     */
-    "memory allocation failure.",                       /* EAI_MEMORY     */
-    "no address associated with hostname.",             /* EAI_NODATA     */
-    "hostname nor servname provided, or not known.",/* EAI_NONAME     */
-    "servname not supported for ai_socktype.",          /* EAI_SERVICE    */
-    "ai_socktype not supported.",                       /* EAI_SOCKTYPE   */
-    "system error returned in errno.",                  /* EAI_SYSTEM     */
-    "invalid value for hints.",                         /* EAI_BADHINTS   */
-    "resolved protocol is unknown.",                    /* EAI_PROTOCOL   */
-    "unknown error.",                                   /* EAI_MAX        */
-};
-
-#define GET_CANONNAME(ai, str) \
-if (pai->ai_flags & AI_CANONNAME) {\
-    if (((ai)->ai_canonname = (char *)malloc(strlen(str) + 1)) != NULL) {\
-        strcpy((ai)->ai_canonname, (str));\
-    } else {\
-        error = EAI_MEMORY;\
-        goto free;\
-    }\
-}
-
-#ifdef HAVE_SOCKADDR_SA_LEN
-#define GET_AI(ai, gai_afd, addr, port) {\
-    char *p;\
-    if (((ai) = (struct addrinfo *)malloc(sizeof(struct addrinfo) +\
-                                          ((gai_afd)->a_socklen)))\
-        == NULL) goto free;\
-    memcpy(ai, pai, sizeof(struct addrinfo));\
-    (ai)->ai_addr = (struct sockaddr *)((ai) + 1);\
-    memset((ai)->ai_addr, 0, (gai_afd)->a_socklen);\
-    (ai)->ai_addr->sa_len = (ai)->ai_addrlen = (gai_afd)->a_socklen;\
-    (ai)->ai_addr->sa_family = (ai)->ai_family = (gai_afd)->a_af;\
-    ((struct sockinet *)(ai)->ai_addr)->si_port = port;\
-    p = (char *)((ai)->ai_addr);\
-    memcpy(p + (gai_afd)->a_off, (addr), (gai_afd)->a_addrlen);\
-}
-#else
-#define GET_AI(ai, gai_afd, addr, port) {\
-    char *p;\
-    if (((ai) = (struct addrinfo *)malloc(sizeof(struct addrinfo) +\
-                                          ((gai_afd)->a_socklen)))\
-        == NULL) goto free;\
-    memcpy(ai, pai, sizeof(struct addrinfo));\
-    (ai)->ai_addr = (struct sockaddr *)((ai) + 1);\
-    memset((ai)->ai_addr, 0, (gai_afd)->a_socklen);\
-    (ai)->ai_addrlen = (gai_afd)->a_socklen;\
-    (ai)->ai_addr->sa_family = (ai)->ai_family = (gai_afd)->a_af;\
-    ((struct sockinet *)(ai)->ai_addr)->si_port = port;\
-    p = (char *)((ai)->ai_addr);\
-    memcpy(p + (gai_afd)->a_off, (addr), (gai_afd)->a_addrlen);\
-}
-#endif
-
-#define ERR(err) { error = (err); goto bad; }
-
-char *
-gai_strerror(int ecode)
-{
-    if (ecode < 0 || ecode > EAI_MAX)
-        ecode = EAI_MAX;
-    return ai_errlist[ecode];
-}
-
-void
-freeaddrinfo(struct addrinfo *ai)
-{
-    struct addrinfo *next;
-
-    do {
-        next = ai->ai_next;
-        if (ai->ai_canonname)
-            free(ai->ai_canonname);
-        /* no need to free(ai->ai_addr) */
-        free(ai);
-    } while ((ai = next) != NULL);
-}
-
-static int
-str_isnumber(const char *p)
-{
-    unsigned char *q = (unsigned char *)p;
-    while (*q) {
-        if (! isdigit(*q))
-            return NO;
-        q++;
-    }
-    return YES;
-}
-
-int
-getaddrinfo(const char*hostname, const char*servname,
-            const struct addrinfo *hints, struct addrinfo **res)
-{
-    struct addrinfo sentinel;
-    struct addrinfo *top = NULL;
-    struct addrinfo *cur;
-    int i, error = 0;
-    char pton[PTON_MAX];
-    struct addrinfo ai;
-    struct addrinfo *pai;
-    u_short port;
-
-#ifdef FAITH
-    static int firsttime = 1;
-
-    if (firsttime) {
-        /* translator hack */
-        {
-            char *q = getenv("GAI");
-            if (q && inet_pton(AF_INET6, q, &faith_prefix) == 1)
-                translate = YES;
-        }
-        firsttime = 0;
-    }
-#endif
-
-    /* initialize file static vars */
-    sentinel.ai_next = NULL;
-    cur = &sentinel;
-    pai = &ai;
-    pai->ai_flags = 0;
-    pai->ai_family = PF_UNSPEC;
-    pai->ai_socktype = GAI_ANY;
-    pai->ai_protocol = GAI_ANY;
-    pai->ai_addrlen = 0;
-    pai->ai_canonname = NULL;
-    pai->ai_addr = NULL;
-    pai->ai_next = NULL;
-    port = GAI_ANY;
-
-    if (hostname == NULL && servname == NULL)
-        return EAI_NONAME;
-    if (hints) {
-        /* error check for hints */
-        if (hints->ai_addrlen || hints->ai_canonname ||
-            hints->ai_addr || hints->ai_next)
-            ERR(EAI_BADHINTS); /* xxx */
-        if (hints->ai_flags & ~AI_MASK)
-            ERR(EAI_BADFLAGS);
-        switch (hints->ai_family) {
-        case PF_UNSPEC:
-        case PF_INET:
-#ifdef ENABLE_IPV6
-        case PF_INET6:
-#endif
-            break;
-        default:
-            ERR(EAI_FAMILY);
-        }
-        memcpy(pai, hints, sizeof(*pai));
-        switch (pai->ai_socktype) {
-        case GAI_ANY:
-            switch (pai->ai_protocol) {
-            case GAI_ANY:
-                break;
-            case IPPROTO_UDP:
-                pai->ai_socktype = SOCK_DGRAM;
-                break;
-            case IPPROTO_TCP:
-                pai->ai_socktype = SOCK_STREAM;
-                break;
-            default:
-                pai->ai_socktype = SOCK_RAW;
-                break;
-            }
-            break;
-        case SOCK_RAW:
-            break;
-        case SOCK_DGRAM:
-            if (pai->ai_protocol != IPPROTO_UDP &&
-                pai->ai_protocol != GAI_ANY)
-                ERR(EAI_BADHINTS);                      /*xxx*/
-            pai->ai_protocol = IPPROTO_UDP;
-            break;
-        case SOCK_STREAM:
-            if (pai->ai_protocol != IPPROTO_TCP &&
-                pai->ai_protocol != GAI_ANY)
-                ERR(EAI_BADHINTS);                      /*xxx*/
-            pai->ai_protocol = IPPROTO_TCP;
-            break;
-        default:
-            ERR(EAI_SOCKTYPE);
-            /* unreachable */
-        }
-    }
-
-    /*
-     * service port
-     */
-    if (servname) {
-        if (str_isnumber(servname)) {
-            if (pai->ai_socktype == GAI_ANY) {
-                /* caller accept *GAI_ANY* socktype */
-                pai->ai_socktype = SOCK_DGRAM;
-                pai->ai_protocol = IPPROTO_UDP;
-            }
-            port = htons((u_short)atoi(servname));
-        } else {
-            struct servent *sp;
-            char *proto;
-
-            proto = NULL;
-            switch (pai->ai_socktype) {
-            case GAI_ANY:
-                proto = NULL;
-                break;
-            case SOCK_DGRAM:
-                proto = "udp";
-                break;
-            case SOCK_STREAM:
-                proto = "tcp";
-                break;
-            default:
-                fprintf(stderr, "panic!\n");
-                break;
-            }
-            if ((sp = getservbyname(servname, proto)) == NULL)
-                ERR(EAI_SERVICE);
-            port = sp->s_port;
-            if (pai->ai_socktype == GAI_ANY) {
-                if (strcmp(sp->s_proto, "udp") == 0) {
-                    pai->ai_socktype = SOCK_DGRAM;
-                    pai->ai_protocol = IPPROTO_UDP;
-                } else if (strcmp(sp->s_proto, "tcp") == 0) {
-                    pai->ai_socktype = SOCK_STREAM;
-                    pai->ai_protocol = IPPROTO_TCP;
-                } else
-                    ERR(EAI_PROTOCOL);                          /*xxx*/
-            }
-        }
-    }
-
-    /*
-     * hostname == NULL.
-     * passive socket -> anyaddr (0.0.0.0 or ::)
-     * non-passive socket -> localhost (127.0.0.1 or ::1)
-     */
-    if (hostname == NULL) {
-        struct gai_afd *gai_afd;
-
-        for (gai_afd = &gai_afdl[0]; gai_afd->a_af; gai_afd++) {
-            if (!(pai->ai_family == PF_UNSPEC
-               || pai->ai_family == gai_afd->a_af)) {
-                continue;
-            }
-
-            if (pai->ai_flags & AI_PASSIVE) {
-                GET_AI(cur->ai_next, gai_afd, gai_afd->a_addrany, port);
-                /* xxx meaningless?
-                 * GET_CANONNAME(cur->ai_next, "anyaddr");
-                 */
-            } else {
-                GET_AI(cur->ai_next, gai_afd, gai_afd->a_loopback,
-                    port);
-                /* xxx meaningless?
-                 * GET_CANONNAME(cur->ai_next, "localhost");
-                 */
-            }
-            cur = cur->ai_next;
-        }
-        top = sentinel.ai_next;
-        if (top)
-            goto good;
-        else
-            ERR(EAI_FAMILY);
-    }
-
-    /* hostname as numeric name */
-    for (i = 0; gai_afdl[i].a_af; i++) {
-        if (inet_pton(gai_afdl[i].a_af, hostname, pton)) {
-            u_long v4a;
-#ifdef ENABLE_IPV6
-            u_char pfx;
-#endif
-
-            switch (gai_afdl[i].a_af) {
-            case AF_INET:
-                v4a = ((struct in_addr *)pton)->s_addr;
-                v4a = ntohl(v4a);
-                if (IN_MULTICAST(v4a) || IN_EXPERIMENTAL(v4a))
-                    pai->ai_flags &= ~AI_CANONNAME;
-                v4a >>= IN_CLASSA_NSHIFT;
-                if (v4a == 0 || v4a == IN_LOOPBACKNET)
-                    pai->ai_flags &= ~AI_CANONNAME;
-                break;
-#ifdef ENABLE_IPV6
-            case AF_INET6:
-                pfx = ((struct in6_addr *)pton)->s6_addr8[0];
-                if (pfx == 0 || pfx == 0xfe || pfx == 0xff)
-                    pai->ai_flags &= ~AI_CANONNAME;
-                break;
-#endif
-            }
-
-            if (pai->ai_family == gai_afdl[i].a_af ||
-                pai->ai_family == PF_UNSPEC) {
-                if (! (pai->ai_flags & AI_CANONNAME)) {
-                    GET_AI(top, &gai_afdl[i], pton, port);
-                    goto good;
-                }
-                /*
-                 * if AI_CANONNAME and if reverse lookup
-                 * fail, return ai anyway to pacify
-                 * calling application.
-                 *
-                 * XXX getaddrinfo() is a name->address
-                 * translation function, and it looks strange
-                 * that we do addr->name translation here.
-                 */
-                get_name(pton, &gai_afdl[i], &top, pton, pai, port);
-                goto good;
-            } else
-                ERR(EAI_FAMILY);                        /*xxx*/
-        }
-    }
-
-    if (pai->ai_flags & AI_NUMERICHOST)
-        ERR(EAI_NONAME);
-
-    /* hostname as alphabetical name */
-    error = get_addr(hostname, pai->ai_family, &top, pai, port);
-    if (error == 0) {
-        if (top) {
- good:
-            *res = top;
-            return SUCCESS;
-        } else
-            error = EAI_FAIL;
-    }
- free:
-    if (top)
-        freeaddrinfo(top);
- bad:
-    *res = NULL;
-    return error;
-}
-
-static int
-get_name(addr, gai_afd, res, numaddr, pai, port0)
-    const char *addr;
-    struct gai_afd *gai_afd;
-    struct addrinfo **res;
-    char *numaddr;
-    struct addrinfo *pai;
-    int port0;
-{
-    u_short port = port0 & 0xffff;
-    struct hostent *hp;
-    struct addrinfo *cur;
-    int error = 0;
-#ifdef ENABLE_IPV6
-    int h_error;
-#endif
-
-#ifdef ENABLE_IPV6
-    hp = getipnodebyaddr(addr, gai_afd->a_addrlen, gai_afd->a_af, &h_error);
-#else
-    hp = gethostbyaddr(addr, gai_afd->a_addrlen, AF_INET);
-#endif
-    if (hp && hp->h_name && hp->h_name[0] && hp->h_addr_list[0]) {
-        GET_AI(cur, gai_afd, hp->h_addr_list[0], port);
-        GET_CANONNAME(cur, hp->h_name);
-    } else
-        GET_AI(cur, gai_afd, numaddr, port);
-
-#ifdef ENABLE_IPV6
-    if (hp)
-        freehostent(hp);
-#endif
-    *res = cur;
-    return SUCCESS;
- free:
-    if (cur)
-        freeaddrinfo(cur);
-#ifdef ENABLE_IPV6
-    if (hp)
-        freehostent(hp);
-#endif
- /* bad: */
-    *res = NULL;
-    return error;
-}
-
-static int
-get_addr(hostname, af, res, pai, port0)
-    const char *hostname;
-    int af;
-    struct addrinfo **res;
-    struct addrinfo *pai;
-    int port0;
-{
-    u_short port = port0 & 0xffff;
-    struct addrinfo sentinel;
-    struct hostent *hp;
-    struct addrinfo *top, *cur;
-    struct gai_afd *gai_afd;
-    int i, error = 0, h_error;
-    char *ap;
-
-    top = NULL;
-    sentinel.ai_next = NULL;
-    cur = &sentinel;
-#ifdef ENABLE_IPV6
-    if (af == AF_UNSPEC) {
-        hp = getipnodebyname(hostname, AF_INET6,
-                        AI_ADDRCONFIG|AI_ALL|AI_V4MAPPED, &h_error);
-    } else
-        hp = getipnodebyname(hostname, af, AI_ADDRCONFIG, &h_error);
-#else
-    hp = gethostbyname(hostname);
-    h_error = h_errno;
-#endif
-    if (hp == NULL) {
-        switch (h_error) {
-        case HOST_NOT_FOUND:
-        case NO_DATA:
-            error = EAI_NODATA;
-            break;
-        case TRY_AGAIN:
-            error = EAI_AGAIN;
-            break;
-        case NO_RECOVERY:
-        default:
-            error = EAI_FAIL;
-            break;
-        }
-        goto free;
-    }
-
-    if ((hp->h_name == NULL) || (hp->h_name[0] == 0) ||
-        (hp->h_addr_list[0] == NULL)) {
-        error = EAI_FAIL;
-        goto free;
-    }
-
-    for (i = 0; (ap = hp->h_addr_list[i]) != NULL; i++) {
-        switch (af) {
-#ifdef ENABLE_IPV6
-        case AF_INET6:
-            gai_afd = &gai_afdl[N_INET6];
-            break;
-#endif
-#ifndef ENABLE_IPV6
-        default:                /* AF_UNSPEC */
-#endif
-        case AF_INET:
-            gai_afd = &gai_afdl[N_INET];
-            break;
-#ifdef ENABLE_IPV6
-        default:                /* AF_UNSPEC */
-            if (IN6_IS_ADDR_V4MAPPED((struct in6_addr *)ap)) {
-                ap += sizeof(struct in6_addr) -
-                    sizeof(struct in_addr);
-                gai_afd = &gai_afdl[N_INET];
-            } else
-                gai_afd = &gai_afdl[N_INET6];
-            break;
-#endif
-        }
-#ifdef FAITH
-        if (translate && gai_afd->a_af == AF_INET) {
-            struct in6_addr *in6;
-
-            GET_AI(cur->ai_next, &gai_afdl[N_INET6], ap, port);
-            in6 = &((struct sockaddr_in6 *)cur->ai_next->ai_addr)->sin6_addr;
-            memcpy(&in6->s6_addr32[0], &faith_prefix,
-                sizeof(struct in6_addr) - sizeof(struct in_addr));
-            memcpy(&in6->s6_addr32[3], ap, sizeof(struct in_addr));
-        } else
-#endif /* FAITH */
-        GET_AI(cur->ai_next, gai_afd, ap, port);
-        if (cur == &sentinel) {
-            top = cur->ai_next;
-            GET_CANONNAME(top, hp->h_name);
-        }
-        cur = cur->ai_next;
-    }
-#ifdef ENABLE_IPV6
-    freehostent(hp);
-#endif
-    *res = top;
-    return SUCCESS;
- free:
-    if (top)
-        freeaddrinfo(top);
-#ifdef ENABLE_IPV6
-    if (hp)
-        freehostent(hp);
-#endif
-/* bad: */
-    *res = NULL;
-    return error;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/getbuildinfo.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/getbuildinfo.c
deleted file mode 100644
index d2529b3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/getbuildinfo.c
+++ /dev/null
@@ -1,85 +0,0 @@
-#include "Python.h"
-
-#ifndef DONT_HAVE_STDIO_H
-#include <stdio.h>
-#endif
-
-#ifndef DATE
-#ifdef __DATE__
-#define DATE __DATE__
-#else
-#define DATE "xx/xx/xx"
-#endif
-#endif
-
-#ifndef TIME
-#ifdef __TIME__
-#define TIME __TIME__
-#else
-#define TIME "xx:xx:xx"
-#endif
-#endif
-
-/* on unix, SVNVERSION is passed on the command line.
- * on Windows, the string is interpolated using
- * subwcrev.exe
- */
-#ifndef SVNVERSION
-#define SVNVERSION "$WCRANGE$$WCMODS?M:$"
-#endif
-
-/* XXX Only unix build process has been tested */
-#ifndef HGVERSION
-#define HGVERSION ""
-#endif
-#ifndef HGTAG
-#define HGTAG ""
-#endif
-#ifndef HGBRANCH
-#define HGBRANCH ""
-#endif
-
-const char *
-Py_GetBuildInfo(void)
-{
-    static char buildinfo[50 + sizeof(HGVERSION) +
-                          ((sizeof(HGTAG) > sizeof(HGBRANCH)) ?
-                           sizeof(HGTAG) : sizeof(HGBRANCH))];
-    const char *revision = _Py_hgversion();
-    const char *sep = *revision ? ":" : "";
-    const char *hgid = _Py_hgidentifier();
-    if (!(*hgid))
-        hgid = "default";
-    PyOS_snprintf(buildinfo, sizeof(buildinfo),
-                  "%s%s%s, %.20s, %.9s", hgid, sep, revision,
-                  DATE, TIME);
-    return buildinfo;
-}
-
-const char *
-_Py_svnversion(void)
-{
-    /* the following string can be modified by subwcrev.exe */
-    static const char svnversion[] = SVNVERSION;
-    if (svnversion[0] != '$')
-        return svnversion; /* it was interpolated, or passed on command line */
-    return "Unversioned directory";
-}
-
-const char *
-_Py_hgversion(void)
-{
-    return HGVERSION;
-}
-
-const char *
-_Py_hgidentifier(void)
-{
-    const char *hgtag, *hgid;
-    hgtag = HGTAG;
-    if ((*hgtag) && strcmp(hgtag, "tip") != 0)
-        hgid = hgtag;
-    else
-        hgid = HGBRANCH;
-    return hgid;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/getnameinfo.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/getnameinfo.c
deleted file mode 100644
index c199d66..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/getnameinfo.c
+++ /dev/null
@@ -1,222 +0,0 @@
-/** @file
-  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials are licensed and made available under
-  the terms and conditions of the BSD License that accompanies this distribution.
-  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php.
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-
- * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
-
- * Issues to be discussed:
- * - Thread safe-ness must be checked
- * - Return values.  There seems to be no standard for return value (RFC2133)
- *   but INRIA implementation returns EAI_xxx defined for getaddrinfo().
-**/
-
-#if 0
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <arpa/nameser.h>
-#include <netdb.h>
-#include <resolv.h>
-#include <string.h>
-#include <stddef.h>
-
-#include "addrinfo.h"
-#endif
-
-#define SUCCESS 0
-#define YES 1
-#define NO  0
-
-static struct gni_afd {
-    int a_af;
-    int a_addrlen;
-    int a_socklen;
-    int a_off;
-} gni_afdl [] = {
-#ifdef ENABLE_IPV6
-    {PF_INET6, sizeof(struct in6_addr), sizeof(struct sockaddr_in6),
-        offsetof(struct sockaddr_in6, sin6_addr)},
-#endif
-    {PF_INET, sizeof(struct in_addr), sizeof(struct sockaddr_in),
-        offsetof(struct sockaddr_in, sin_addr)},
-    {0, 0, 0},
-};
-
-struct gni_sockinet {
-    u_char      si_len;
-    u_char      si_family;
-    u_short     si_port;
-};
-
-#define ENI_NOSOCKET    0
-#define ENI_NOSERVNAME  1
-#define ENI_NOHOSTNAME  2
-#define ENI_MEMORY      3
-#define ENI_SYSTEM      4
-#define ENI_FAMILY      5
-#define ENI_SALEN       6
-
-/* forward declaration to make gcc happy */
-int getnameinfo Py_PROTO((const struct sockaddr *, size_t, char *, size_t,
-                          char *, size_t, int));
-
-int
-getnameinfo(sa, salen, host, hostlen, serv, servlen, flags)
-    const struct sockaddr *sa;
-    size_t salen;
-    char *host;
-    size_t hostlen;
-    char *serv;
-    size_t servlen;
-    int flags;
-{
-    struct gni_afd *gni_afd;
-    struct servent *sp;
-    struct hostent *hp;
-    u_short port;
-    int family, len, i;
-    char *addr, *p;
-    u_long v4a;
-#ifdef ENABLE_IPV6
-    u_char pfx;
-    int h_error;
-#endif
-    char numserv[512];
-    char numaddr[512];
-
-    if (sa == NULL)
-        return ENI_NOSOCKET;
-
-#ifdef HAVE_SOCKADDR_SA_LEN
-    len = sa->sa_len;
-    if (len != salen) return ENI_SALEN;
-#else
-    len = salen;
-#endif
-
-    family = sa->sa_family;
-    for (i = 0; gni_afdl[i].a_af; i++)
-        if (gni_afdl[i].a_af == family) {
-            gni_afd = &gni_afdl[i];
-            goto found;
-        }
-    return ENI_FAMILY;
-
- found:
-    if (len != gni_afd->a_socklen) return ENI_SALEN;
-
-    port = ((struct gni_sockinet *)sa)->si_port; /* network byte order */
-    addr = (char *)sa + gni_afd->a_off;
-
-    if (serv == NULL || servlen == 0) {
-        /* what we should do? */
-    } else if (flags & NI_NUMERICSERV) {
-        sprintf(numserv, "%d", ntohs(port));
-        if (strlen(numserv) > servlen)
-            return ENI_MEMORY;
-        strcpy(serv, numserv);
-    } else {
-        sp = getservbyport(port, (flags & NI_DGRAM) ? "udp" : "tcp");
-        if (sp) {
-            if (strlen(sp->s_name) > servlen)
-                return ENI_MEMORY;
-            strcpy(serv, sp->s_name);
-        } else
-            return ENI_NOSERVNAME;
-    }
-
-    switch (sa->sa_family) {
-    case AF_INET:
-        v4a = ((struct sockaddr_in *)sa)->sin_addr.s_addr;
-        if (IN_MULTICAST(v4a) || IN_EXPERIMENTAL(v4a))
-            flags |= NI_NUMERICHOST;
-        v4a >>= IN_CLASSA_NSHIFT;
-        if (v4a == 0 || v4a == IN_LOOPBACKNET)
-            flags |= NI_NUMERICHOST;
-        break;
-#ifdef ENABLE_IPV6
-    case AF_INET6:
-        pfx = ((struct sockaddr_in6 *)sa)->sin6_addr.s6_addr8[0];
-        if (pfx == 0 || pfx == 0xfe || pfx == 0xff)
-            flags |= NI_NUMERICHOST;
-        break;
-#endif
-    }
-    if (host == NULL || hostlen == 0) {
-        /* what should we do? */
-    } else if (flags & NI_NUMERICHOST) {
-        if (inet_ntop(gni_afd->a_af, addr, numaddr, sizeof(numaddr))
-            == NULL)
-            return ENI_SYSTEM;
-        if (strlen(numaddr) > hostlen)
-            return ENI_MEMORY;
-        strcpy(host, numaddr);
-    } else {
-#ifdef ENABLE_IPV6
-        hp = getipnodebyaddr(addr, gni_afd->a_addrlen, gni_afd->a_af, &h_error);
-#else
-        hp = gethostbyaddr(addr, gni_afd->a_addrlen, gni_afd->a_af);
-        //h_error = h_errno;
-#endif
-
-        if (hp) {
-            if (flags & NI_NOFQDN) {
-                p = strchr(hp->h_name, '.');
-                if (p) *p = '\0';
-            }
-            if (strlen(hp->h_name) > hostlen) {
-#ifdef ENABLE_IPV6
-                freehostent(hp);
-#endif
-                return ENI_MEMORY;
-            }
-            strcpy(host, hp->h_name);
-#ifdef ENABLE_IPV6
-            freehostent(hp);
-#endif
-        } else {
-            if (flags & NI_NAMEREQD)
-                return ENI_NOHOSTNAME;
-            if (inet_ntop(gni_afd->a_af, addr, numaddr, sizeof(numaddr))
-                == NULL)
-                return ENI_NOHOSTNAME;
-            if (strlen(numaddr) > hostlen)
-                return ENI_MEMORY;
-            strcpy(host, numaddr);
-        }
-    }
-    return SUCCESS;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/getpath.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/getpath.c
deleted file mode 100644
index 24fedd9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/getpath.c
+++ /dev/null
@@ -1,698 +0,0 @@
-/* Return the initial module search path. */
-
-#include "Python.h"
-#include "osdefs.h"
-
-#include <sys/types.h>
-#include <string.h>
-
-#ifdef __APPLE__
-#include <mach-o/dyld.h>
-#endif
-
-/* Search in some common locations for the associated Python libraries.
- *
- * Two directories must be found, the platform independent directory
- * (prefix), containing the common .py and .pyc files, and the platform
- * dependent directory (exec_prefix), containing the shared library
- * modules.  Note that prefix and exec_prefix can be the same directory,
- * but for some installations, they are different.
- *
- * Py_GetPath() carries out separate searches for prefix and exec_prefix.
- * Each search tries a number of different locations until a ``landmark''
- * file or directory is found.  If no prefix or exec_prefix is found, a
- * warning message is issued and the preprocessor defined PREFIX and
- * EXEC_PREFIX are used (even though they will not work); python carries on
- * as best as is possible, but most imports will fail.
- *
- * Before any searches are done, the location of the executable is
- * determined.  If argv[0] has one or more slashes in it, it is used
- * unchanged.  Otherwise, it must have been invoked from the shell's path,
- * so we search $PATH for the named executable and use that.  If the
- * executable was not found on $PATH (or there was no $PATH environment
- * variable), the original argv[0] string is used.
- *
- * Next, the executable location is examined to see if it is a symbolic
- * link.  If so, the link is chased (correctly interpreting a relative
- * pathname if one is found) and the directory of the link target is used.
- *
- * Finally, argv0_path is set to the directory containing the executable
- * (i.e. the last component is stripped).
- *
- * With argv0_path in hand, we perform a number of steps.  The same steps
- * are performed for prefix and for exec_prefix, but with a different
- * landmark.
- *
- * Step 1. Are we running python out of the build directory?  This is
- * checked by looking for a different kind of landmark relative to
- * argv0_path.  For prefix, the landmark's path is derived from the VPATH
- * preprocessor variable (taking into account that its value is almost, but
- * not quite, what we need).  For exec_prefix, the landmark is
- * Modules/Setup.  If the landmark is found, we're done.
- *
- * For the remaining steps, the prefix landmark will always be
- * lib/python$VERSION/os.py and the exec_prefix will always be
- * lib/python$VERSION/lib-dynload, where $VERSION is Python's version
- * number as supplied by the Makefile.  Note that this means that no more
- * build directory checking is performed; if the first step did not find
- * the landmarks, the assumption is that python is running from an
- * installed setup.
- *
- * Step 2. See if the $PYTHONHOME environment variable points to the
- * installed location of the Python libraries.  If $PYTHONHOME is set, then
- * it points to prefix and exec_prefix.  $PYTHONHOME can be a single
- * directory, which is used for both, or the prefix and exec_prefix
- * directories separated by a colon.
- *
- * Step 3. Try to find prefix and exec_prefix relative to argv0_path,
- * backtracking up the path until it is exhausted.  This is the most common
- * step to succeed.  Note that if prefix and exec_prefix are different,
- * exec_prefix is more likely to be found; however if exec_prefix is a
- * subdirectory of prefix, both will be found.
- *
- * Step 4. Search the directories pointed to by the preprocessor variables
- * PREFIX and EXEC_PREFIX.  These are supplied by the Makefile but can be
- * passed in as options to the configure script.
- *
- * That's it!
- *
- * Well, almost.  Once we have determined prefix and exec_prefix, the
- * preprocessor variable PYTHONPATH is used to construct a path.  Each
- * relative path on PYTHONPATH is prefixed with prefix.  Then the directory
- * containing the shared library modules is appended.  The environment
- * variable $PYTHONPATH is inserted in front of it all.  Finally, the
- * prefix and exec_prefix globals are tweaked so they reflect the values
- * expected by other code, by stripping the "lib/python$VERSION/..." stuff
- * off.  If either points to the build directory, the globals are reset to
- * the corresponding preprocessor variables (so sys.prefix will reflect the
- * installation location, even though sys.path points into the build
- * directory).  This seems to make more sense given that currently the only
- * known use of sys.prefix and sys.exec_prefix is for the ILU installation
- * process to find the installed Python tree.
- */
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-
-#ifndef VERSION
-#define VERSION "2.1"
-#endif
-
-#ifndef VPATH
-#define VPATH "."
-#endif
-
-#ifndef PREFIX
-#  ifdef __VMS
-#    define PREFIX ""
-#  else
-#    define PREFIX "/usr/local"
-#  endif
-#endif
-
-#ifndef EXEC_PREFIX
-#define EXEC_PREFIX PREFIX
-#endif
-
-#ifndef PYTHONPATH
-#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \
-              EXEC_PREFIX "/lib/python" VERSION "/lib-dynload"
-#endif
-
-#ifndef LANDMARK
-#define LANDMARK "os.py"
-#endif
-
-static char prefix[MAXPATHLEN+1];
-static char exec_prefix[MAXPATHLEN+1];
-static char progpath[MAXPATHLEN+1];
-static char *module_search_path = NULL;
-static char lib_python[] = "lib/python" VERSION;
-
-static void
-reduce(char *dir)
-{
-    size_t i = strlen(dir);
-    while (i > 0 && dir[i] != SEP)
-        --i;
-    dir[i] = '\0';
-}
-
-
-static int
-isfile(char *filename)          /* Is file, not directory */
-{
-    struct stat buf;
-    if (stat(filename, &buf) != 0)
-        return 0;
-    if (!S_ISREG(buf.st_mode))
-        return 0;
-    return 1;
-}
-
-
-static int
-ismodule(char *filename)        /* Is module -- check for .pyc/.pyo too */
-{
-    if (isfile(filename))
-        return 1;
-
-    /* Check for the compiled version of prefix. */
-    if (strlen(filename) < MAXPATHLEN) {
-        strcat(filename, Py_OptimizeFlag ? "o" : "c");
-        if (isfile(filename))
-            return 1;
-    }
-    return 0;
-}
-
-
-static int
-isxfile(char *filename)         /* Is executable file */
-{
-    struct stat buf;
-    if (stat(filename, &buf) != 0)
-        return 0;
-    if (!S_ISREG(buf.st_mode))
-        return 0;
-    if ((buf.st_mode & 0111) == 0)
-        return 0;
-    return 1;
-}
-
-
-static int
-isdir(char *filename)                   /* Is directory */
-{
-    struct stat buf;
-    if (stat(filename, &buf) != 0)
-        return 0;
-    if (!S_ISDIR(buf.st_mode))
-        return 0;
-    return 1;
-}
-
-
-/* Add a path component, by appending stuff to buffer.
-   buffer must have at least MAXPATHLEN + 1 bytes allocated, and contain a
-   NUL-terminated string with no more than MAXPATHLEN characters (not counting
-   the trailing NUL).  It's a fatal error if it contains a string longer than
-   that (callers must be careful!).  If these requirements are met, it's
-   guaranteed that buffer will still be a NUL-terminated string with no more
-   than MAXPATHLEN characters at exit.  If stuff is too long, only as much of
-   stuff as fits will be appended.
-*/
-static void
-joinpath(char *buffer, char *stuff)
-{
-    size_t n, k;
-    if (stuff[0] == SEP)
-        n = 0;
-    else {
-        n = strlen(buffer);
-        if (n > 0 && buffer[n-1] != SEP && n < MAXPATHLEN)
-            buffer[n++] = SEP;
-    }
-    if (n > MAXPATHLEN)
-        Py_FatalError("buffer overflow in getpath.c's joinpath()");
-    k = strlen(stuff);
-    if (n + k > MAXPATHLEN)
-        k = MAXPATHLEN - n;
-    strncpy(buffer+n, stuff, k);
-    buffer[n+k] = '\0';
-}
-
-/* copy_absolute requires that path be allocated at least
-   MAXPATHLEN + 1 bytes and that p be no more than MAXPATHLEN bytes. */
-static void
-copy_absolute(char *path, char *p)
-{
-    if (p[0] == SEP)
-        strcpy(path, p);
-    else {
-        if (!getcwd(path, MAXPATHLEN)) {
-            /* unable to get the current directory */
-            strcpy(path, p);
-            return;
-        }
-        if (p[0] == '.' && p[1] == SEP)
-            p += 2;
-        joinpath(path, p);
-    }
-}
-
-/* absolutize() requires that path be allocated at least MAXPATHLEN+1 bytes. */
-static void
-absolutize(char *path)
-{
-    char buffer[MAXPATHLEN + 1];
-
-    if (path[0] == SEP)
-        return;
-    copy_absolute(buffer, path);
-    strcpy(path, buffer);
-}
-
-/* search_for_prefix requires that argv0_path be no more than MAXPATHLEN
-   bytes long.
-*/
-static int
-search_for_prefix(char *argv0_path, char *home)
-{
-    size_t n;
-    char *vpath;
-
-    /* If PYTHONHOME is set, we believe it unconditionally */
-    if (home) {
-        char *delim;
-        strncpy(prefix, home, MAXPATHLEN);
-        delim = strchr(prefix, DELIM);
-        if (delim)
-            *delim = '\0';
-        joinpath(prefix, lib_python);
-        joinpath(prefix, LANDMARK);
-        return 1;
-    }
-
-    /* Check to see if argv[0] is in the build directory */
-    strcpy(prefix, argv0_path);
-    joinpath(prefix, "Modules/Setup");
-    if (isfile(prefix)) {
-        /* Check VPATH to see if argv0_path is in the build directory. */
-        vpath = VPATH;
-        strcpy(prefix, argv0_path);
-        joinpath(prefix, vpath);
-        joinpath(prefix, "Lib");
-        joinpath(prefix, LANDMARK);
-        if (ismodule(prefix))
-            return -1;
-    }
-
-    /* Search from argv0_path, until root is found */
-    copy_absolute(prefix, argv0_path);
-    do {
-        n = strlen(prefix);
-        joinpath(prefix, lib_python);
-        joinpath(prefix, LANDMARK);
-        if (ismodule(prefix))
-            return 1;
-        prefix[n] = '\0';
-        reduce(prefix);
-    } while (prefix[0]);
-
-    /* Look at configure's PREFIX */
-    strncpy(prefix, PREFIX, MAXPATHLEN);
-    joinpath(prefix, lib_python);
-    joinpath(prefix, LANDMARK);
-    if (ismodule(prefix))
-        return 1;
-
-    /* Fail */
-    return 0;
-}
-
-
-/* search_for_exec_prefix requires that argv0_path be no more than
-   MAXPATHLEN bytes long.
-*/
-static int
-search_for_exec_prefix(char *argv0_path, char *home)
-{
-    size_t n;
-
-    /* If PYTHONHOME is set, we believe it unconditionally */
-    if (home) {
-        char *delim;
-        delim = strchr(home, DELIM);
-        if (delim)
-            strncpy(exec_prefix, delim+1, MAXPATHLEN);
-        else
-            strncpy(exec_prefix, home, MAXPATHLEN);
-        joinpath(exec_prefix, lib_python);
-        joinpath(exec_prefix, "lib-dynload");
-        return 1;
-    }
-
-    /* Check to see if argv[0] is in the build directory */
-    strcpy(exec_prefix, argv0_path);
-    joinpath(exec_prefix, "Modules/Setup");
-    if (isfile(exec_prefix)) {
-        reduce(exec_prefix);
-        return -1;
-    }
-
-    /* Search from argv0_path, until root is found */
-    copy_absolute(exec_prefix, argv0_path);
-    do {
-        n = strlen(exec_prefix);
-        joinpath(exec_prefix, lib_python);
-        joinpath(exec_prefix, "lib-dynload");
-        if (isdir(exec_prefix))
-            return 1;
-        exec_prefix[n] = '\0';
-        reduce(exec_prefix);
-    } while (exec_prefix[0]);
-
-    /* Look at configure's EXEC_PREFIX */
-    strncpy(exec_prefix, EXEC_PREFIX, MAXPATHLEN);
-    joinpath(exec_prefix, lib_python);
-    joinpath(exec_prefix, "lib-dynload");
-    if (isdir(exec_prefix))
-        return 1;
-
-    /* Fail */
-    return 0;
-}
-
-
-static void
-calculate_path(void)
-{
-    extern char *Py_GetProgramName(void);
-
-    static char delimiter[2] = {DELIM, '\0'};
-    static char separator[2] = {SEP, '\0'};
-    char *pythonpath = PYTHONPATH;
-    char *rtpypath = Py_GETENV("PYTHONPATH");
-    char *home = Py_GetPythonHome();
-    char *path = getenv("PATH");
-    char *prog = Py_GetProgramName();
-    char argv0_path[MAXPATHLEN+1];
-    char zip_path[MAXPATHLEN+1];
-    int pfound, efound; /* 1 if found; -1 if found build directory */
-    char *buf;
-    size_t bufsz;
-    size_t prefixsz;
-    char *defpath = pythonpath;
-#ifdef WITH_NEXT_FRAMEWORK
-    NSModule pythonModule;
-#endif
-#ifdef __APPLE__
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
-    uint32_t nsexeclength = MAXPATHLEN;
-#else
-    unsigned long nsexeclength = MAXPATHLEN;
-#endif
-#endif
-
-        /* 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
-         * $PATH isn't exported, you lose.
-         */
-        if (strchr(prog, SEP))
-                strncpy(progpath, prog, MAXPATHLEN);
-#ifdef __APPLE__
-     /* On Mac OS X, if a script uses an interpreter of the form
-      * "#!/opt/python2.3/bin/python", the kernel only passes "python"
-      * as argv[0], which falls through to the $PATH search below.
-      * If /opt/python2.3/bin isn't in your path, or is near the end,
-      * this algorithm may incorrectly find /usr/bin/python. To work
-      * around this, we can use _NSGetExecutablePath to get a better
-      * hint of what the intended interpreter was, although this
-      * will fail if a relative path was used. but in that case,
-      * absolutize() should help us out below
-      */
-     else if(0 == _NSGetExecutablePath(progpath, &nsexeclength) && progpath[0] == SEP)
-       ;
-#endif /* __APPLE__ */
-        else if (path) {
-                while (1) {
-                        char *delim = strchr(path, DELIM);
-
-                        if (delim) {
-                                size_t len = delim - path;
-                                if (len > MAXPATHLEN)
-                                        len = MAXPATHLEN;
-                                strncpy(progpath, path, len);
-                                *(progpath + len) = '\0';
-                        }
-                        else
-                                strncpy(progpath, path, MAXPATHLEN);
-
-                        joinpath(progpath, prog);
-                        if (isxfile(progpath))
-                                break;
-
-                        if (!delim) {
-                                progpath[0] = '\0';
-                                break;
-                        }
-                        path = delim + 1;
-                }
-        }
-        else
-                progpath[0] = '\0';
-        if (progpath[0] != SEP && progpath[0] != '\0')
-                absolutize(progpath);
-        strncpy(argv0_path, progpath, MAXPATHLEN);
-        argv0_path[MAXPATHLEN] = '\0';
-
-#ifdef WITH_NEXT_FRAMEWORK
-        /* On Mac OS X we have a special case if we're running from a framework.
-        ** This is because the python home should be set relative to the library,
-        ** which is in the framework, not relative to the executable, which may
-        ** be outside of the framework. Except when we're in the build directory...
-        */
-    pythonModule = NSModuleForSymbol(NSLookupAndBindSymbol("_Py_Initialize"));
-    /* Use dylib functions to find out where the framework was loaded from */
-    buf = (char *)NSLibraryNameForModule(pythonModule);
-    if (buf != NULL) {
-        /* We're in a framework. */
-        /* See if we might be in the build directory. The framework in the
-        ** build directory is incomplete, it only has the .dylib and a few
-        ** needed symlinks, it doesn't have the Lib directories and such.
-        ** If we're running with the framework from the build directory we must
-        ** be running the interpreter in the build directory, so we use the
-        ** build-directory-specific logic to find Lib and such.
-        */
-        strncpy(argv0_path, buf, MAXPATHLEN);
-        reduce(argv0_path);
-        joinpath(argv0_path, lib_python);
-        joinpath(argv0_path, LANDMARK);
-        if (!ismodule(argv0_path)) {
-                /* We are in the build directory so use the name of the
-                   executable - we know that the absolute path is passed */
-                strncpy(argv0_path, progpath, MAXPATHLEN);
-        }
-        else {
-                /* Use the location of the library as the progpath */
-                strncpy(argv0_path, buf, MAXPATHLEN);
-        }
-    }
-#endif
-
-#if HAVE_READLINK
-    {
-        char tmpbuffer[MAXPATHLEN+1];
-        int linklen = readlink(progpath, tmpbuffer, MAXPATHLEN);
-        while (linklen != -1) {
-            /* It's not null terminated! */
-            tmpbuffer[linklen] = '\0';
-            if (tmpbuffer[0] == SEP)
-                /* tmpbuffer should never be longer than MAXPATHLEN,
-                   but extra check does not hurt */
-                strncpy(argv0_path, tmpbuffer, MAXPATHLEN);
-            else {
-                /* Interpret relative to progpath */
-                reduce(argv0_path);
-                joinpath(argv0_path, tmpbuffer);
-            }
-            linklen = readlink(argv0_path, tmpbuffer, MAXPATHLEN);
-        }
-    }
-#endif /* HAVE_READLINK */
-
-    reduce(argv0_path);
-    /* At this point, argv0_path is guaranteed to be less than
-       MAXPATHLEN bytes long.
-    */
-
-    if (!(pfound = search_for_prefix(argv0_path, home))) {
-        if (!Py_FrozenFlag)
-            fprintf(stderr,
-                "Could not find platform independent libraries <prefix>\n");
-        strncpy(prefix, PREFIX, MAXPATHLEN);
-        joinpath(prefix, lib_python);
-    }
-    else
-        reduce(prefix);
-
-    strncpy(zip_path, prefix, MAXPATHLEN);
-    zip_path[MAXPATHLEN] = '\0';
-    if (pfound > 0) { /* Use the reduced prefix returned by Py_GetPrefix() */
-        reduce(zip_path);
-        reduce(zip_path);
-    }
-    else
-        strncpy(zip_path, PREFIX, MAXPATHLEN);
-    joinpath(zip_path, "lib/python00.zip");
-    bufsz = strlen(zip_path);   /* Replace "00" with version */
-    zip_path[bufsz - 6] = VERSION[0];
-    zip_path[bufsz - 5] = VERSION[2];
-
-    if (!(efound = search_for_exec_prefix(argv0_path, home))) {
-        if (!Py_FrozenFlag)
-            fprintf(stderr,
-                "Could not find platform dependent libraries <exec_prefix>\n");
-        strncpy(exec_prefix, EXEC_PREFIX, MAXPATHLEN);
-        joinpath(exec_prefix, "lib/lib-dynload");
-    }
-    /* If we found EXEC_PREFIX do *not* reduce it!  (Yet.) */
-
-    if ((!pfound || !efound) && !Py_FrozenFlag)
-        fprintf(stderr,
-                "Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]\n");
-
-    /* Calculate size of return buffer.
-     */
-    bufsz = 0;
-
-    if (rtpypath)
-        bufsz += strlen(rtpypath) + 1;
-
-    prefixsz = strlen(prefix) + 1;
-
-    while (1) {
-        char *delim = strchr(defpath, DELIM);
-
-        if (defpath[0] != SEP)
-            /* Paths are relative to prefix */
-            bufsz += prefixsz;
-
-        if (delim)
-            bufsz += delim - defpath + 1;
-        else {
-            bufsz += strlen(defpath) + 1;
-            break;
-        }
-        defpath = delim + 1;
-    }
-
-    bufsz += strlen(zip_path) + 1;
-    bufsz += strlen(exec_prefix) + 1;
-
-    /* This is the only malloc call in this file */
-    buf = (char *)PyMem_Malloc(bufsz);
-
-    if (buf == NULL) {
-        /* We can't exit, so print a warning and limp along */
-        fprintf(stderr, "Not enough memory for dynamic PYTHONPATH.\n");
-        fprintf(stderr, "Using default static PYTHONPATH.\n");
-        module_search_path = PYTHONPATH;
-    }
-    else {
-        /* Run-time value of $PYTHONPATH goes first */
-        if (rtpypath) {
-            strcpy(buf, rtpypath);
-            strcat(buf, delimiter);
-        }
-        else
-            buf[0] = '\0';
-
-        /* Next is the default zip path */
-        strcat(buf, zip_path);
-        strcat(buf, delimiter);
-
-        /* Next goes merge of compile-time $PYTHONPATH with
-         * dynamically located prefix.
-         */
-        defpath = pythonpath;
-        while (1) {
-            char *delim = strchr(defpath, DELIM);
-
-            if (defpath[0] != SEP) {
-                strcat(buf, prefix);
-                strcat(buf, separator);
-            }
-
-            if (delim) {
-                size_t len = delim - defpath + 1;
-                size_t end = strlen(buf) + len;
-                strncat(buf, defpath, len);
-                *(buf + end) = '\0';
-            }
-            else {
-                strcat(buf, defpath);
-                break;
-            }
-            defpath = delim + 1;
-        }
-        strcat(buf, delimiter);
-
-        /* Finally, on goes the directory for dynamic-load modules */
-        strcat(buf, exec_prefix);
-
-        /* And publish the results */
-        module_search_path = buf;
-    }
-
-    /* Reduce prefix and exec_prefix to their essence,
-     * e.g. /usr/local/lib/python1.5 is reduced to /usr/local.
-     * If we're loading relative to the build directory,
-     * return the compiled-in defaults instead.
-     */
-    if (pfound > 0) {
-        reduce(prefix);
-        reduce(prefix);
-        /* The prefix is the root directory, but reduce() chopped
-         * off the "/". */
-        if (!prefix[0])
-                strcpy(prefix, separator);
-    }
-    else
-        strncpy(prefix, PREFIX, MAXPATHLEN);
-
-    if (efound > 0) {
-        reduce(exec_prefix);
-        reduce(exec_prefix);
-        reduce(exec_prefix);
-        if (!exec_prefix[0])
-                strcpy(exec_prefix, separator);
-    }
-    else
-        strncpy(exec_prefix, EXEC_PREFIX, MAXPATHLEN);
-}
-
-
-/* External interface */
-
-char *
-Py_GetPath(void)
-{
-    if (!module_search_path)
-        calculate_path();
-    return module_search_path;
-}
-
-char *
-Py_GetPrefix(void)
-{
-    if (!module_search_path)
-        calculate_path();
-    return prefix;
-}
-
-char *
-Py_GetExecPrefix(void)
-{
-    if (!module_search_path)
-        calculate_path();
-    return exec_prefix;
-}
-
-char *
-Py_GetProgramFullPath(void)
-{
-    if (!module_search_path)
-        calculate_path();
-    return progpath;
-}
-
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/imageop.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/imageop.c
deleted file mode 100644
index 918ceda..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/imageop.c
+++ /dev/null
@@ -1,794 +0,0 @@
-
-/* imageopmodule - Various operations on pictures */
-
-#ifdef sun
-#define signed
-#endif
-
-#include "Python.h"
-
-#if SIZEOF_INT == 4
-typedef int Py_Int32;
-typedef unsigned int Py_UInt32;
-#else
-#if SIZEOF_LONG == 4
-typedef long Py_Int32;
-typedef unsigned long Py_UInt32;
-#else
-#error "No 4-byte integral type"
-#endif
-#endif
-
-#define CHARP(cp, xmax, x, y) ((char *)(cp+y*xmax+x))
-#define SHORTP(cp, xmax, x, y) ((short *)(cp+2*(y*xmax+x)))
-#define LONGP(cp, xmax, x, y) ((Py_Int32 *)(cp+4*(y*xmax+x)))
-
-static PyObject *ImageopError;
-static PyObject *ImageopDict;
-
-/**
- * Check a coordonnate, make sure that (0 < value).
- * Return 0 on error.
- */
-static int
-check_coordonnate(int value, const char* name)
-{
-    if ( 0 < value)
-        return 1;
-    PyErr_Format(PyExc_ValueError, "%s value is negative or nul", name);
-    return 0;
-}
-
-/**
- * Check integer overflow to make sure that product == x*y*size.
- * Return 0 on error.
- */
-static int
-check_multiply_size(int product, int x, const char* xname, int y, const char* yname, int size)
-{
-    if ( !check_coordonnate(x, xname) )
-        return 0;
-    if ( !check_coordonnate(y, yname) )
-        return 0;
-    if ( size == (product / y) / x )
-        return 1;
-    PyErr_SetString(ImageopError, "String has incorrect length");
-    return 0;
-}
-
-/**
- * Check integer overflow to make sure that product == x*y.
- * Return 0 on error.
- */
-static int
-check_multiply(int product, int x, int y)
-{
-    return check_multiply_size(product, x, "x", y, "y", 1);
-}
-
-/* If this function returns true (the default if anything goes wrong), we're
-   behaving in a backward-compatible way with respect to how multi-byte pixels
-   are stored in the strings.  The code in this module was originally written
-   for an SGI which is a big-endian system, and so the old code assumed that
-   4-byte integers hold the R, G, and B values in a particular order.
-   However, on little-endian systems the order is reversed, and so not
-   actually compatible with what gl.lrectwrite and imgfile expect.
-   (gl.lrectwrite and imgfile are also SGI-specific, however, it is
-   conceivable that the data handled here comes from or goes to an SGI or that
-   it is otherwise used in the expectation that the byte order in the strings
-   is as specified.)
-
-   The function returns the value of the module variable
-   "backward_compatible", or 1 if the variable does not exist or is not an
-   int.
- */
-
-static int
-imageop_backward_compatible(void)
-{
-    static PyObject *bcos;
-    PyObject *bco;
-    long rc;
-
-    if (ImageopDict == NULL) /* "cannot happen" */
-        return 1;
-    if (bcos == NULL) {
-        /* cache string object for future use */
-        bcos = PyString_FromString("backward_compatible");
-        if (bcos == NULL)
-            return 1;
-    }
-    bco = PyDict_GetItem(ImageopDict, bcos);
-    if (bco == NULL)
-        return 1;
-    if (!PyInt_Check(bco))
-        return 1;
-    rc = PyInt_AsLong(bco);
-    if (PyErr_Occurred()) {
-        /* not an integer, or too large, or something */
-        PyErr_Clear();
-        rc = 1;
-    }
-    return rc != 0;             /* convert to values 0, 1 */
-}
-
-static PyObject *
-imageop_crop(PyObject *self, PyObject *args)
-{
-    char *cp, *ncp;
-    short *nsp;
-    Py_Int32 *nlp;
-    int len, size, x, y, newx1, newx2, newy1, newy2, nlen;
-    int ix, iy, xstep, ystep;
-    PyObject *rv;
-
-    if ( !PyArg_ParseTuple(args, "s#iiiiiii", &cp, &len, &size, &x, &y,
-                      &newx1, &newy1, &newx2, &newy2) )
-        return 0;
-
-    if ( size != 1 && size != 2 && size != 4 ) {
-        PyErr_SetString(ImageopError, "Size should be 1, 2 or 4");
-        return 0;
-    }
-    if ( !check_multiply_size(len, x, "x", y, "y", size) )
-        return 0;
-
-    xstep = (newx1 < newx2)? 1 : -1;
-    ystep = (newy1 < newy2)? 1 : -1;
-
-    nlen = (abs(newx2-newx1)+1)*(abs(newy2-newy1)+1)*size;
-    if ( !check_multiply_size(nlen, abs(newx2-newx1)+1, "abs(newx2-newx1)+1", abs(newy2-newy1)+1, "abs(newy2-newy1)+1", size) )
-        return 0;
-    rv = PyString_FromStringAndSize(NULL, nlen);
-    if ( rv == 0 )
-        return 0;
-    ncp = (char *)PyString_AsString(rv);
-    nsp = (short *)ncp;
-    nlp = (Py_Int32 *)ncp;
-    newy2 += ystep;
-    newx2 += xstep;
-    for( iy = newy1; iy != newy2; iy+=ystep ) {
-        for ( ix = newx1; ix != newx2; ix+=xstep ) {
-            if ( iy < 0 || iy >= y || ix < 0 || ix >= x ) {
-                if ( size == 1 )
-                    *ncp++ = 0;
-                else
-                    *nlp++ = 0;
-            } else {
-                if ( size == 1 )
-                    *ncp++ = *CHARP(cp, x, ix, iy);
-                else if ( size == 2 )
-                    *nsp++ = *SHORTP(cp, x, ix, iy);
-                else
-                    *nlp++ = *LONGP(cp, x, ix, iy);
-            }
-        }
-    }
-    return rv;
-}
-
-static PyObject *
-imageop_scale(PyObject *self, PyObject *args)
-{
-    char *cp, *ncp;
-    short *nsp;
-    Py_Int32 *nlp;
-    int len, size, x, y, newx, newy, nlen;
-    int ix, iy;
-    int oix, oiy;
-    PyObject *rv;
-
-    if ( !PyArg_ParseTuple(args, "s#iiiii",
-                      &cp, &len, &size, &x, &y, &newx, &newy) )
-        return 0;
-
-    if ( size != 1 && size != 2 && size != 4 ) {
-        PyErr_SetString(ImageopError, "Size should be 1, 2 or 4");
-        return 0;
-    }
-    if ( !check_multiply_size(len, x, "x", y, "y", size) )
-        return 0;
-    nlen = newx*newy*size;
-    if ( !check_multiply_size(nlen, newx, "newx", newy, "newy", size) )
-        return 0;
-
-    rv = PyString_FromStringAndSize(NULL, nlen);
-    if ( rv == 0 )
-        return 0;
-    ncp = (char *)PyString_AsString(rv);
-    nsp = (short *)ncp;
-    nlp = (Py_Int32 *)ncp;
-    for( iy = 0; iy < newy; iy++ ) {
-        for ( ix = 0; ix < newx; ix++ ) {
-            oix = ix * x / newx;
-            oiy = iy * y / newy;
-            if ( size == 1 )
-                *ncp++ = *CHARP(cp, x, oix, oiy);
-            else if ( size == 2 )
-                *nsp++ = *SHORTP(cp, x, oix, oiy);
-            else
-                *nlp++ = *LONGP(cp, x, oix, oiy);
-        }
-    }
-    return rv;
-}
-
-/* Note: this routine can use a bit of optimizing */
-
-static PyObject *
-imageop_tovideo(PyObject *self, PyObject *args)
-{
-    int maxx, maxy, x, y, len;
-    int i;
-    unsigned char *cp, *ncp;
-    int width;
-    PyObject *rv;
-
-
-    if ( !PyArg_ParseTuple(args, "s#iii", &cp, &len, &width, &maxx, &maxy) )
-        return 0;
-
-    if ( width != 1 && width != 4 ) {
-        PyErr_SetString(ImageopError, "Size should be 1 or 4");
-        return 0;
-    }
-    if ( !check_multiply_size(len, maxx, "max", maxy, "maxy", width) )
-        return 0;
-
-    rv = PyString_FromStringAndSize(NULL, len);
-    if ( rv == 0 )
-        return 0;
-    ncp = (unsigned char *)PyString_AsString(rv);
-
-    if ( width == 1 ) {
-        memcpy(ncp, cp, maxx);                  /* Copy first line */
-        ncp += maxx;
-        for (y=1; y<maxy; y++) {                /* Interpolate other lines */
-            for(x=0; x<maxx; x++) {
-                i = y*maxx + x;
-                *ncp++ = ((int)cp[i] + (int)cp[i-maxx]) >> 1;
-            }
-        }
-    } else {
-        memcpy(ncp, cp, maxx*4);                        /* Copy first line */
-        ncp += maxx*4;
-        for (y=1; y<maxy; y++) {                /* Interpolate other lines */
-            for(x=0; x<maxx; x++) {
-                i = (y*maxx + x)*4 + 1;
-                *ncp++ = 0;                     /* Skip alfa comp */
-                *ncp++ = ((int)cp[i] + (int)cp[i-4*maxx]) >> 1;
-                i++;
-                *ncp++ = ((int)cp[i] + (int)cp[i-4*maxx]) >> 1;
-                i++;
-                *ncp++ = ((int)cp[i] + (int)cp[i-4*maxx]) >> 1;
-            }
-        }
-    }
-    return rv;
-}
-
-static PyObject *
-imageop_grey2mono(PyObject *self, PyObject *args)
-{
-    int tres, x, y, len;
-    unsigned char *cp, *ncp;
-    unsigned char ovalue;
-    PyObject *rv;
-    int i, bit;
-
-
-    if ( !PyArg_ParseTuple(args, "s#iii", &cp, &len, &x, &y, &tres) )
-        return 0;
-
-    if ( !check_multiply(len, x, y) )
-        return 0;
-
-    rv = PyString_FromStringAndSize(NULL, (len+7)/8);
-    if ( rv == 0 )
-        return 0;
-    ncp = (unsigned char *)PyString_AsString(rv);
-
-    bit = 0x80;
-    ovalue = 0;
-    for ( i=0; i < len; i++ ) {
-        if ( (int)cp[i] > tres )
-            ovalue |= bit;
-        bit >>= 1;
-        if ( bit == 0 ) {
-            *ncp++ = ovalue;
-            bit = 0x80;
-            ovalue = 0;
-        }
-    }
-    if ( bit != 0x80 )
-        *ncp++ = ovalue;
-    return rv;
-}
-
-static PyObject *
-imageop_grey2grey4(PyObject *self, PyObject *args)
-{
-    int x, y, len;
-    unsigned char *cp, *ncp;
-    unsigned char ovalue;
-    PyObject *rv;
-    int i;
-    int pos;
-
-
-    if ( !PyArg_ParseTuple(args, "s#ii", &cp, &len, &x, &y) )
-        return 0;
-
-    if ( !check_multiply(len, x, y) )
-        return 0;
-
-    rv = PyString_FromStringAndSize(NULL, (len+1)/2);
-    if ( rv == 0 )
-        return 0;
-    ncp = (unsigned char *)PyString_AsString(rv);
-    pos = 0;
-    ovalue = 0;
-    for ( i=0; i < len; i++ ) {
-        ovalue |= ((int)cp[i] & 0xf0) >> pos;
-        pos += 4;
-        if ( pos == 8 ) {
-            *ncp++ = ovalue;
-            ovalue = 0;
-            pos = 0;
-        }
-    }
-    if ( pos != 0 )
-        *ncp++ = ovalue;
-    return rv;
-}
-
-static PyObject *
-imageop_grey2grey2(PyObject *self, PyObject *args)
-{
-    int x, y, len;
-    unsigned char *cp, *ncp;
-    unsigned char ovalue;
-    PyObject *rv;
-    int i;
-    int pos;
-
-
-    if ( !PyArg_ParseTuple(args, "s#ii", &cp, &len, &x, &y) )
-        return 0;
-
-    if ( !check_multiply(len, x, y) )
-        return 0;
-
-    rv = PyString_FromStringAndSize(NULL, (len+3)/4);
-    if ( rv == 0 )
-        return 0;
-    ncp = (unsigned char *)PyString_AsString(rv);
-    pos = 0;
-    ovalue = 0;
-    for ( i=0; i < len; i++ ) {
-        ovalue |= ((int)cp[i] & 0xc0) >> pos;
-        pos += 2;
-        if ( pos == 8 ) {
-            *ncp++ = ovalue;
-            ovalue = 0;
-            pos = 0;
-        }
-    }
-    if ( pos != 0 )
-        *ncp++ = ovalue;
-    return rv;
-}
-
-static PyObject *
-imageop_dither2mono(PyObject *self, PyObject *args)
-{
-    int sum, x, y, len;
-    unsigned char *cp, *ncp;
-    unsigned char ovalue;
-    PyObject *rv;
-    int i, bit;
-
-
-    if ( !PyArg_ParseTuple(args, "s#ii", &cp, &len, &x, &y) )
-        return 0;
-
-    if ( !check_multiply(len, x, y) )
-        return 0;
-
-    rv = PyString_FromStringAndSize(NULL, (len+7)/8);
-    if ( rv == 0 )
-        return 0;
-    ncp = (unsigned char *)PyString_AsString(rv);
-
-    bit = 0x80;
-    ovalue = 0;
-    sum = 0;
-    for ( i=0; i < len; i++ ) {
-        sum += cp[i];
-        if ( sum >= 256 ) {
-            sum -= 256;
-            ovalue |= bit;
-        }
-        bit >>= 1;
-        if ( bit == 0 ) {
-            *ncp++ = ovalue;
-            bit = 0x80;
-            ovalue = 0;
-        }
-    }
-    if ( bit != 0x80 )
-        *ncp++ = ovalue;
-    return rv;
-}
-
-static PyObject *
-imageop_dither2grey2(PyObject *self, PyObject *args)
-{
-    int x, y, len;
-    unsigned char *cp, *ncp;
-    unsigned char ovalue;
-    PyObject *rv;
-    int i;
-    int pos;
-    int sum = 0, nvalue;
-
-
-    if ( !PyArg_ParseTuple(args, "s#ii", &cp, &len, &x, &y) )
-        return 0;
-
-    if ( !check_multiply(len, x, y) )
-        return 0;
-
-    rv = PyString_FromStringAndSize(NULL, (len+3)/4);
-    if ( rv == 0 )
-        return 0;
-    ncp = (unsigned char *)PyString_AsString(rv);
-    pos = 1;
-    ovalue = 0;
-    for ( i=0; i < len; i++ ) {
-        sum += cp[i];
-        nvalue = sum & 0x180;
-        sum -= nvalue;
-        ovalue |= nvalue >> pos;
-        pos += 2;
-        if ( pos == 9 ) {
-            *ncp++ = ovalue;
-            ovalue = 0;
-            pos = 1;
-        }
-    }
-    if ( pos != 0 )
-        *ncp++ = ovalue;
-    return rv;
-}
-
-static PyObject *
-imageop_mono2grey(PyObject *self, PyObject *args)
-{
-    int v0, v1, x, y, len, nlen;
-    unsigned char *cp, *ncp;
-    PyObject *rv;
-    int i, bit;
-
-    if ( !PyArg_ParseTuple(args, "s#iiii", &cp, &len, &x, &y, &v0, &v1) )
-        return 0;
-
-    nlen = x*y;
-    if ( !check_multiply(nlen, x, y) )
-        return 0;
-    if ( (nlen+7)/8 != len ) {
-        PyErr_SetString(ImageopError, "String has incorrect length");
-        return 0;
-    }
-
-    rv = PyString_FromStringAndSize(NULL, nlen);
-    if ( rv == 0 )
-        return 0;
-    ncp = (unsigned char *)PyString_AsString(rv);
-
-    bit = 0x80;
-    for ( i=0; i < nlen; i++ ) {
-        if ( *cp & bit )
-            *ncp++ = v1;
-        else
-            *ncp++ = v0;
-        bit >>= 1;
-        if ( bit == 0 ) {
-            bit = 0x80;
-            cp++;
-        }
-    }
-    return rv;
-}
-
-static PyObject *
-imageop_grey22grey(PyObject *self, PyObject *args)
-{
-    int x, y, len, nlen;
-    unsigned char *cp, *ncp;
-    PyObject *rv;
-    int i, pos, value = 0, nvalue;
-
-    if ( !PyArg_ParseTuple(args, "s#ii", &cp, &len, &x, &y) )
-        return 0;
-
-    nlen = x*y;
-    if ( !check_multiply(nlen, x, y) ) {
-        return 0;
-    }
-    if ( (nlen+3)/4 != len ) {
-        PyErr_SetString(ImageopError, "String has incorrect length");
-        return 0;
-    }
-
-    rv = PyString_FromStringAndSize(NULL, nlen);
-    if ( rv == 0 )
-        return 0;
-    ncp = (unsigned char *)PyString_AsString(rv);
-
-    pos = 0;
-    for ( i=0; i < nlen; i++ ) {
-        if ( pos == 0 ) {
-            value = *cp++;
-            pos = 8;
-        }
-        pos -= 2;
-        nvalue = (value >> pos) & 0x03;
-        *ncp++ = nvalue | (nvalue << 2) |
-                 (nvalue << 4) | (nvalue << 6);
-    }
-    return rv;
-}
-
-static PyObject *
-imageop_grey42grey(PyObject *self, PyObject *args)
-{
-    int x, y, len, nlen;
-    unsigned char *cp, *ncp;
-    PyObject *rv;
-    int i, pos, value = 0, nvalue;
-
-    if ( !PyArg_ParseTuple(args, "s#ii", &cp, &len, &x, &y) )
-        return 0;
-
-    nlen = x*y;
-    if ( !check_multiply(nlen, x, y) )
-        return 0;
-    if ( (nlen+1)/2 != len ) {
-        PyErr_SetString(ImageopError, "String has incorrect length");
-        return 0;
-    }
-
-    rv = PyString_FromStringAndSize(NULL, nlen);
-    if ( rv == 0 )
-        return 0;
-    ncp = (unsigned char *)PyString_AsString(rv);
-
-    pos = 0;
-    for ( i=0; i < nlen; i++ ) {
-        if ( pos == 0 ) {
-            value = *cp++;
-            pos = 8;
-        }
-        pos -= 4;
-        nvalue = (value >> pos) & 0x0f;
-        *ncp++ = nvalue | (nvalue << 4);
-    }
-    return rv;
-}
-
-static PyObject *
-imageop_rgb2rgb8(PyObject *self, PyObject *args)
-{
-    int x, y, len, nlen;
-    unsigned char *cp;
-    unsigned char *ncp;
-    PyObject *rv;
-    int i, r, g, b;
-    int backward_compatible = imageop_backward_compatible();
-
-    if ( !PyArg_ParseTuple(args, "s#ii", &cp, &len, &x, &y) )
-        return 0;
-
-    if ( !check_multiply_size(len, x, "x", y, "y", 4) )
-        return 0;
-    nlen = x*y;
-    if ( !check_multiply(nlen, x, y) )
-        return 0;
-
-    rv = PyString_FromStringAndSize(NULL, nlen);
-    if ( rv == 0 )
-        return 0;
-    ncp = (unsigned char *)PyString_AsString(rv);
-
-    for ( i=0; i < nlen; i++ ) {
-        /* Bits in source: aaaaaaaa BBbbbbbb GGGggggg RRRrrrrr */
-        if (backward_compatible) {
-            Py_UInt32 value = * (Py_UInt32 *) cp;
-            cp += 4;
-            r = (int) ((value & 0xff) / 255. * 7. + .5);
-            g = (int) (((value >> 8) & 0xff) / 255. * 7. + .5);
-            b = (int) (((value >> 16) & 0xff) / 255. * 3. + .5);
-        } else {
-            cp++;                       /* skip alpha channel */
-            b = (int) (*cp++ / 255. * 3. + .5);
-            g = (int) (*cp++ / 255. * 7. + .5);
-            r = (int) (*cp++ / 255. * 7. + .5);
-        }
-        *ncp++ = (unsigned char)((r<<5) | (b<<3) | g);
-    }
-    return rv;
-}
-
-static PyObject *
-imageop_rgb82rgb(PyObject *self, PyObject *args)
-{
-    int x, y, len, nlen;
-    unsigned char *cp;
-    unsigned char *ncp;
-    PyObject *rv;
-    int i, r, g, b;
-    unsigned char value;
-    int backward_compatible = imageop_backward_compatible();
-
-    if ( !PyArg_ParseTuple(args, "s#ii", &cp, &len, &x, &y) )
-        return 0;
-
-    if ( !check_multiply(len, x, y) )
-        return 0;
-    nlen = x*y*4;
-    if ( !check_multiply_size(nlen, x, "x", y, "y", 4) )
-        return 0;
-
-    rv = PyString_FromStringAndSize(NULL, nlen);
-    if ( rv == 0 )
-        return 0;
-    ncp = (unsigned char *)PyString_AsString(rv);
-
-    for ( i=0; i < len; i++ ) {
-        /* Bits in source: RRRBBGGG
-        ** Red and Green are multiplied by 36.5, Blue by 85
-        */
-        value = *cp++;
-        r = (value >> 5) & 7;
-        g = (value     ) & 7;
-        b = (value >> 3) & 3;
-        r = (r<<5) | (r<<3) | (r>>1);
-        g = (g<<5) | (g<<3) | (g>>1);
-        b = (b<<6) | (b<<4) | (b<<2) | b;
-        if (backward_compatible) {
-            Py_UInt32 nvalue = r | (g<<8) | (b<<16);
-            * (Py_UInt32 *) ncp = nvalue;
-            ncp += 4;
-        } else {
-            *ncp++ = 0;
-            *ncp++ = b;
-            *ncp++ = g;
-            *ncp++ = r;
-        }
-    }
-    return rv;
-}
-
-static PyObject *
-imageop_rgb2grey(PyObject *self, PyObject *args)
-{
-    int x, y, len, nlen;
-    unsigned char *cp;
-    unsigned char *ncp;
-    PyObject *rv;
-    int i, r, g, b;
-    int nvalue;
-    int backward_compatible = imageop_backward_compatible();
-
-    if ( !PyArg_ParseTuple(args, "s#ii", &cp, &len, &x, &y) )
-        return 0;
-
-    if ( !check_multiply_size(len, x, "x", y, "y", 4) )
-        return 0;
-    nlen = x*y;
-    if ( !check_multiply(nlen, x, y) )
-        return 0;
-
-    rv = PyString_FromStringAndSize(NULL, nlen);
-    if ( rv == 0 )
-        return 0;
-    ncp = (unsigned char *)PyString_AsString(rv);
-
-    for ( i=0; i < nlen; i++ ) {
-        if (backward_compatible) {
-            Py_UInt32 value = * (Py_UInt32 *) cp;
-            cp += 4;
-            r = (int) ((value & 0xff) / 255. * 7. + .5);
-            g = (int) (((value >> 8) & 0xff) / 255. * 7. + .5);
-            b = (int) (((value >> 16) & 0xff) / 255. * 3. + .5);
-        } else {
-            cp++;                       /* skip alpha channel */
-            b = *cp++;
-            g = *cp++;
-            r = *cp++;
-        }
-        nvalue = (int)(0.30*r + 0.59*g + 0.11*b);
-        if ( nvalue > 255 ) nvalue = 255;
-        *ncp++ = (unsigned char)nvalue;
-    }
-    return rv;
-}
-
-static PyObject *
-imageop_grey2rgb(PyObject *self, PyObject *args)
-{
-    int x, y, len, nlen;
-    unsigned char *cp;
-    unsigned char *ncp;
-    PyObject *rv;
-    int i;
-    unsigned char value;
-    int backward_compatible = imageop_backward_compatible();
-
-    if ( !PyArg_ParseTuple(args, "s#ii", &cp, &len, &x, &y) )
-        return 0;
-
-    if ( !check_multiply(len, x, y) )
-        return 0;
-    nlen = x*y*4;
-    if ( !check_multiply_size(nlen, x, "x", y, "y", 4) )
-        return 0;
-
-    rv = PyString_FromStringAndSize(NULL, nlen);
-    if ( rv == 0 )
-        return 0;
-    ncp = (unsigned char *)PyString_AsString(rv);
-
-    for ( i=0; i < len; i++ ) {
-        value = *cp++;
-        if (backward_compatible) {
-            * (Py_UInt32 *) ncp = (Py_UInt32) value | ((Py_UInt32) value << 8 ) | ((Py_UInt32) value << 16);
-            ncp += 4;
-        } else {
-            *ncp++ = 0;
-            *ncp++ = value;
-            *ncp++ = value;
-            *ncp++ = value;
-        }
-    }
-    return rv;
-}
-
-static PyMethodDef imageop_methods[] = {
-    { "crop",                   imageop_crop, METH_VARARGS },
-    { "scale",                  imageop_scale, METH_VARARGS },
-    { "grey2mono",              imageop_grey2mono, METH_VARARGS },
-    { "grey2grey2",             imageop_grey2grey2, METH_VARARGS },
-    { "grey2grey4",             imageop_grey2grey4, METH_VARARGS },
-    { "dither2mono",            imageop_dither2mono, METH_VARARGS },
-    { "dither2grey2",           imageop_dither2grey2, METH_VARARGS },
-    { "mono2grey",              imageop_mono2grey, METH_VARARGS },
-    { "grey22grey",             imageop_grey22grey, METH_VARARGS },
-    { "grey42grey",             imageop_grey42grey, METH_VARARGS },
-    { "tovideo",                imageop_tovideo, METH_VARARGS },
-    { "rgb2rgb8",               imageop_rgb2rgb8, METH_VARARGS },
-    { "rgb82rgb",               imageop_rgb82rgb, METH_VARARGS },
-    { "rgb2grey",               imageop_rgb2grey, METH_VARARGS },
-    { "grey2rgb",               imageop_grey2rgb, METH_VARARGS },
-    { 0,                    0 }
-};
-
-
-PyMODINIT_FUNC
-initimageop(void)
-{
-    PyObject *m;
-
-    if (PyErr_WarnPy3k("the imageop module has been removed in "
-                       "Python 3.0", 2) < 0)
-        return;
-
-    m = Py_InitModule("imageop", imageop_methods);
-    if (m == NULL)
-        return;
-    ImageopDict = PyModule_GetDict(m);
-    ImageopError = PyErr_NewException("imageop.error", NULL, NULL);
-    if (ImageopError != NULL)
-        PyDict_SetItemString(ImageopDict, "error", ImageopError);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/itertoolsmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/itertoolsmodule.c
deleted file mode 100644
index 44f9017..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/itertoolsmodule.c
+++ /dev/null
@@ -1,4097 +0,0 @@
-
-#include "Python.h"
-#include "structmember.h"
-
-/* Itertools module written and maintained
-   by Raymond D. Hettinger <python@rcn.com>
-   Copyright (c) 2003 Python Software Foundation.
-   All rights reserved.
-*/
-
-
-/* groupby object ***********************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *it;
-    PyObject *keyfunc;
-    PyObject *tgtkey;
-    PyObject *currkey;
-    PyObject *currvalue;
-} groupbyobject;
-
-static PyTypeObject groupby_type;
-static PyObject *_grouper_create(groupbyobject *, PyObject *);
-
-static PyObject *
-groupby_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    static char *kwargs[] = {"iterable", "key", NULL};
-    groupbyobject *gbo;
-    PyObject *it, *keyfunc = Py_None;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:groupby", kwargs,
-                                     &it, &keyfunc))
-        return NULL;
-
-    gbo = (groupbyobject *)type->tp_alloc(type, 0);
-    if (gbo == NULL)
-        return NULL;
-    gbo->tgtkey = NULL;
-    gbo->currkey = NULL;
-    gbo->currvalue = NULL;
-    gbo->keyfunc = keyfunc;
-    Py_INCREF(keyfunc);
-    gbo->it = PyObject_GetIter(it);
-    if (gbo->it == NULL) {
-        Py_DECREF(gbo);
-        return NULL;
-    }
-    return (PyObject *)gbo;
-}
-
-static void
-groupby_dealloc(groupbyobject *gbo)
-{
-    PyObject_GC_UnTrack(gbo);
-    Py_XDECREF(gbo->it);
-    Py_XDECREF(gbo->keyfunc);
-    Py_XDECREF(gbo->tgtkey);
-    Py_XDECREF(gbo->currkey);
-    Py_XDECREF(gbo->currvalue);
-    Py_TYPE(gbo)->tp_free(gbo);
-}
-
-static int
-groupby_traverse(groupbyobject *gbo, visitproc visit, void *arg)
-{
-    Py_VISIT(gbo->it);
-    Py_VISIT(gbo->keyfunc);
-    Py_VISIT(gbo->tgtkey);
-    Py_VISIT(gbo->currkey);
-    Py_VISIT(gbo->currvalue);
-    return 0;
-}
-
-static PyObject *
-groupby_next(groupbyobject *gbo)
-{
-    PyObject *newvalue, *newkey, *r, *grouper, *tmp;
-
-    /* skip to next iteration group */
-    for (;;) {
-        if (gbo->currkey == NULL)
-            /* pass */;
-        else if (gbo->tgtkey == NULL)
-            break;
-        else {
-            int rcmp;
-
-            rcmp = PyObject_RichCompareBool(gbo->tgtkey,
-                                            gbo->currkey, Py_EQ);
-            if (rcmp == -1)
-                return NULL;
-            else if (rcmp == 0)
-                break;
-        }
-
-        newvalue = PyIter_Next(gbo->it);
-        if (newvalue == NULL)
-            return NULL;
-
-        if (gbo->keyfunc == Py_None) {
-            newkey = newvalue;
-            Py_INCREF(newvalue);
-        } else {
-            newkey = PyObject_CallFunctionObjArgs(gbo->keyfunc,
-                                                  newvalue, NULL);
-            if (newkey == NULL) {
-                Py_DECREF(newvalue);
-                return NULL;
-            }
-        }
-
-        tmp = gbo->currkey;
-        gbo->currkey = newkey;
-        Py_XDECREF(tmp);
-
-        tmp = gbo->currvalue;
-        gbo->currvalue = newvalue;
-        Py_XDECREF(tmp);
-    }
-
-    Py_INCREF(gbo->currkey);
-    tmp = gbo->tgtkey;
-    gbo->tgtkey = gbo->currkey;
-    Py_XDECREF(tmp);
-
-    grouper = _grouper_create(gbo, gbo->tgtkey);
-    if (grouper == NULL)
-        return NULL;
-
-    r = PyTuple_Pack(2, gbo->currkey, grouper);
-    Py_DECREF(grouper);
-    return r;
-}
-
-PyDoc_STRVAR(groupby_doc,
-"groupby(iterable[, keyfunc]) -> create an iterator which returns\n\
-(key, sub-iterator) grouped by each value of key(value).\n");
-
-static PyTypeObject groupby_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.groupby",                /* tp_name */
-    sizeof(groupbyobject),              /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)groupby_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    groupby_doc,                        /* tp_doc */
-    (traverseproc)groupby_traverse,     /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)groupby_next,         /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    groupby_new,                        /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* _grouper object (internal) ************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *parent;
-    PyObject *tgtkey;
-} _grouperobject;
-
-static PyTypeObject _grouper_type;
-
-static PyObject *
-_grouper_create(groupbyobject *parent, PyObject *tgtkey)
-{
-    _grouperobject *igo;
-
-    igo = PyObject_GC_New(_grouperobject, &_grouper_type);
-    if (igo == NULL)
-        return NULL;
-    igo->parent = (PyObject *)parent;
-    Py_INCREF(parent);
-    igo->tgtkey = tgtkey;
-    Py_INCREF(tgtkey);
-
-    PyObject_GC_Track(igo);
-    return (PyObject *)igo;
-}
-
-static void
-_grouper_dealloc(_grouperobject *igo)
-{
-    PyObject_GC_UnTrack(igo);
-    Py_DECREF(igo->parent);
-    Py_DECREF(igo->tgtkey);
-    PyObject_GC_Del(igo);
-}
-
-static int
-_grouper_traverse(_grouperobject *igo, visitproc visit, void *arg)
-{
-    Py_VISIT(igo->parent);
-    Py_VISIT(igo->tgtkey);
-    return 0;
-}
-
-static PyObject *
-_grouper_next(_grouperobject *igo)
-{
-    groupbyobject *gbo = (groupbyobject *)igo->parent;
-    PyObject *newvalue, *newkey, *r;
-    int rcmp;
-
-    if (gbo->currvalue == NULL) {
-        newvalue = PyIter_Next(gbo->it);
-        if (newvalue == NULL)
-            return NULL;
-
-        if (gbo->keyfunc == Py_None) {
-            newkey = newvalue;
-            Py_INCREF(newvalue);
-        } else {
-            newkey = PyObject_CallFunctionObjArgs(gbo->keyfunc,
-                                                  newvalue, NULL);
-            if (newkey == NULL) {
-                Py_DECREF(newvalue);
-                return NULL;
-            }
-        }
-
-        assert(gbo->currkey == NULL);
-        gbo->currkey = newkey;
-        gbo->currvalue = newvalue;
-    }
-
-    assert(gbo->currkey != NULL);
-    rcmp = PyObject_RichCompareBool(igo->tgtkey, gbo->currkey, Py_EQ);
-    if (rcmp <= 0)
-        /* got any error or current group is end */
-        return NULL;
-
-    r = gbo->currvalue;
-    gbo->currvalue = NULL;
-    Py_CLEAR(gbo->currkey);
-
-    return r;
-}
-
-static PyTypeObject _grouper_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools._grouper",               /* tp_name */
-    sizeof(_grouperobject),             /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)_grouper_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,            /* tp_flags */
-    0,                                  /* tp_doc */
-    (traverseproc)_grouper_traverse,/* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)_grouper_next,        /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    0,                                  /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-
-/* tee object and with supporting function and objects ***************/
-
-/* The teedataobject pre-allocates space for LINKCELLS number of objects.
-   To help the object fit neatly inside cache lines (space for 16 to 32
-   pointers), the value should be a multiple of 16 minus  space for
-   the other structure members including PyHEAD overhead.  The larger the
-   value, the less memory overhead per object and the less time spent
-   allocating/deallocating new links.  The smaller the number, the less
-   wasted space and the more rapid freeing of older data.
-*/
-#define LINKCELLS 57
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *it;
-    int numread;
-    PyObject *nextlink;
-    PyObject *(values[LINKCELLS]);
-} teedataobject;
-
-typedef struct {
-    PyObject_HEAD
-    teedataobject *dataobj;
-    int index;
-    PyObject *weakreflist;
-} teeobject;
-
-static PyTypeObject teedataobject_type;
-
-static PyObject *
-teedataobject_new(PyObject *it)
-{
-    teedataobject *tdo;
-
-    tdo = PyObject_GC_New(teedataobject, &teedataobject_type);
-    if (tdo == NULL)
-        return NULL;
-
-    tdo->numread = 0;
-    tdo->nextlink = NULL;
-    Py_INCREF(it);
-    tdo->it = it;
-    PyObject_GC_Track(tdo);
-    return (PyObject *)tdo;
-}
-
-static PyObject *
-teedataobject_jumplink(teedataobject *tdo)
-{
-    if (tdo->nextlink == NULL)
-        tdo->nextlink = teedataobject_new(tdo->it);
-    Py_XINCREF(tdo->nextlink);
-    return tdo->nextlink;
-}
-
-static PyObject *
-teedataobject_getitem(teedataobject *tdo, int i)
-{
-    PyObject *value;
-
-    assert(i < LINKCELLS);
-    if (i < tdo->numread)
-        value = tdo->values[i];
-    else {
-        /* this is the lead iterator, so fetch more data */
-        assert(i == tdo->numread);
-        value = PyIter_Next(tdo->it);
-        if (value == NULL)
-            return NULL;
-        tdo->numread++;
-        tdo->values[i] = value;
-    }
-    Py_INCREF(value);
-    return value;
-}
-
-static int
-teedataobject_traverse(teedataobject *tdo, visitproc visit, void * arg)
-{
-    int i;
-    Py_VISIT(tdo->it);
-    for (i = 0; i < tdo->numread; i++)
-        Py_VISIT(tdo->values[i]);
-    Py_VISIT(tdo->nextlink);
-    return 0;
-}
-
-static int
-teedataobject_clear(teedataobject *tdo)
-{
-    int i;
-    Py_CLEAR(tdo->it);
-    for (i=0 ; i<tdo->numread ; i++)
-        Py_CLEAR(tdo->values[i]);
-    Py_CLEAR(tdo->nextlink);
-    return 0;
-}
-
-static void
-teedataobject_dealloc(teedataobject *tdo)
-{
-    PyObject_GC_UnTrack(tdo);
-    teedataobject_clear(tdo);
-    PyObject_GC_Del(tdo);
-}
-
-PyDoc_STRVAR(teedataobject_doc, "Data container common to multiple tee objects.");
-
-static PyTypeObject teedataobject_type = {
-    PyVarObject_HEAD_INIT(0, 0)         /* Must fill in type value later */
-    "itertools.tee_dataobject",                 /* tp_name */
-    sizeof(teedataobject),                      /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)teedataobject_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,            /* tp_flags */
-    teedataobject_doc,                          /* tp_doc */
-    (traverseproc)teedataobject_traverse,       /* tp_traverse */
-    (inquiry)teedataobject_clear,               /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    0,                                          /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    0,                                          /* tp_new */
-    PyObject_GC_Del,                            /* tp_free */
-};
-
-
-static PyTypeObject tee_type;
-
-static PyObject *
-tee_next(teeobject *to)
-{
-    PyObject *value, *link;
-
-    if (to->index >= LINKCELLS) {
-        link = teedataobject_jumplink(to->dataobj);
-        Py_DECREF(to->dataobj);
-        to->dataobj = (teedataobject *)link;
-        to->index = 0;
-    }
-    value = teedataobject_getitem(to->dataobj, to->index);
-    if (value == NULL)
-        return NULL;
-    to->index++;
-    return value;
-}
-
-static int
-tee_traverse(teeobject *to, visitproc visit, void *arg)
-{
-    Py_VISIT((PyObject *)to->dataobj);
-    return 0;
-}
-
-static PyObject *
-tee_copy(teeobject *to)
-{
-    teeobject *newto;
-
-    newto = PyObject_GC_New(teeobject, &tee_type);
-    if (newto == NULL)
-        return NULL;
-    Py_INCREF(to->dataobj);
-    newto->dataobj = to->dataobj;
-    newto->index = to->index;
-    newto->weakreflist = NULL;
-    PyObject_GC_Track(newto);
-    return (PyObject *)newto;
-}
-
-PyDoc_STRVAR(teecopy_doc, "Returns an independent iterator.");
-
-static PyObject *
-tee_fromiterable(PyObject *iterable)
-{
-    teeobject *to;
-    PyObject *it = NULL;
-
-    it = PyObject_GetIter(iterable);
-    if (it == NULL)
-        return NULL;
-    if (PyObject_TypeCheck(it, &tee_type)) {
-        to = (teeobject *)tee_copy((teeobject *)it);
-        goto done;
-    }
-
-    to = PyObject_GC_New(teeobject, &tee_type);
-    if (to == NULL)
-        goto done;
-    to->dataobj = (teedataobject *)teedataobject_new(it);
-    if (!to->dataobj) {
-        PyObject_GC_Del(to);
-        to = NULL;
-        goto done;
-    }
-
-    to->index = 0;
-    to->weakreflist = NULL;
-    PyObject_GC_Track(to);
-done:
-    Py_XDECREF(it);
-    return (PyObject *)to;
-}
-
-static PyObject *
-tee_new(PyTypeObject *type, PyObject *args, PyObject *kw)
-{
-    PyObject *iterable;
-
-    if (!PyArg_UnpackTuple(args, "tee", 1, 1, &iterable))
-        return NULL;
-    return tee_fromiterable(iterable);
-}
-
-static int
-tee_clear(teeobject *to)
-{
-    if (to->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) to);
-    Py_CLEAR(to->dataobj);
-    return 0;
-}
-
-static void
-tee_dealloc(teeobject *to)
-{
-    PyObject_GC_UnTrack(to);
-    tee_clear(to);
-    PyObject_GC_Del(to);
-}
-
-PyDoc_STRVAR(teeobject_doc,
-"Iterator wrapped to make it copyable");
-
-static PyMethodDef tee_methods[] = {
-    {"__copy__",        (PyCFunction)tee_copy,  METH_NOARGS, teecopy_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyTypeObject tee_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.tee",                    /* tp_name */
-    sizeof(teeobject),                  /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)tee_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 */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,            /* tp_flags */
-    teeobject_doc,                      /* tp_doc */
-    (traverseproc)tee_traverse,         /* tp_traverse */
-    (inquiry)tee_clear,                 /* tp_clear */
-    0,                                  /* tp_richcompare */
-    offsetof(teeobject, weakreflist),           /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)tee_next,             /* tp_iternext */
-    tee_methods,                        /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    tee_new,                            /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-static PyObject *
-tee(PyObject *self, PyObject *args)
-{
-    Py_ssize_t i, n=2;
-    PyObject *it, *iterable, *copyable, *result;
-
-    if (!PyArg_ParseTuple(args, "O|n", &iterable, &n))
-        return NULL;
-    if (n < 0) {
-        PyErr_SetString(PyExc_ValueError, "n must be >= 0");
-        return NULL;
-    }
-    result = PyTuple_New(n);
-    if (result == NULL)
-        return NULL;
-    if (n == 0)
-        return result;
-    it = PyObject_GetIter(iterable);
-    if (it == NULL) {
-        Py_DECREF(result);
-        return NULL;
-    }
-    if (!PyObject_HasAttrString(it, "__copy__")) {
-        copyable = tee_fromiterable(it);
-        Py_DECREF(it);
-        if (copyable == NULL) {
-            Py_DECREF(result);
-            return NULL;
-        }
-    } else
-        copyable = it;
-    PyTuple_SET_ITEM(result, 0, copyable);
-    for (i=1 ; i<n ; i++) {
-        copyable = PyObject_CallMethod(copyable, "__copy__", NULL);
-        if (copyable == NULL) {
-            Py_DECREF(result);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(result, i, copyable);
-    }
-    return result;
-}
-
-PyDoc_STRVAR(tee_doc,
-"tee(iterable, n=2) --> tuple of n independent iterators.");
-
-
-/* cycle object **********************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *it;
-    PyObject *saved;
-    int firstpass;
-} cycleobject;
-
-static PyTypeObject cycle_type;
-
-static PyObject *
-cycle_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *it;
-    PyObject *iterable;
-    PyObject *saved;
-    cycleobject *lz;
-
-    if (type == &cycle_type && !_PyArg_NoKeywords("cycle()", kwds))
-        return NULL;
-
-    if (!PyArg_UnpackTuple(args, "cycle", 1, 1, &iterable))
-        return NULL;
-
-    /* Get iterator. */
-    it = PyObject_GetIter(iterable);
-    if (it == NULL)
-        return NULL;
-
-    saved = PyList_New(0);
-    if (saved == NULL) {
-        Py_DECREF(it);
-        return NULL;
-    }
-
-    /* create cycleobject structure */
-    lz = (cycleobject *)type->tp_alloc(type, 0);
-    if (lz == NULL) {
-        Py_DECREF(it);
-        Py_DECREF(saved);
-        return NULL;
-    }
-    lz->it = it;
-    lz->saved = saved;
-    lz->firstpass = 0;
-
-    return (PyObject *)lz;
-}
-
-static void
-cycle_dealloc(cycleobject *lz)
-{
-    PyObject_GC_UnTrack(lz);
-    Py_XDECREF(lz->saved);
-    Py_XDECREF(lz->it);
-    Py_TYPE(lz)->tp_free(lz);
-}
-
-static int
-cycle_traverse(cycleobject *lz, visitproc visit, void *arg)
-{
-    Py_VISIT(lz->it);
-    Py_VISIT(lz->saved);
-    return 0;
-}
-
-static PyObject *
-cycle_next(cycleobject *lz)
-{
-    PyObject *item;
-    PyObject *it;
-    PyObject *tmp;
-
-    while (1) {
-        item = PyIter_Next(lz->it);
-        if (item != NULL) {
-            if (!lz->firstpass && PyList_Append(lz->saved, item)) {
-                Py_DECREF(item);
-                return NULL;
-            }
-            return item;
-        }
-        if (PyErr_Occurred()) {
-            if (PyErr_ExceptionMatches(PyExc_StopIteration))
-                PyErr_Clear();
-            else
-                return NULL;
-        }
-        if (PyList_Size(lz->saved) == 0)
-            return NULL;
-        it = PyObject_GetIter(lz->saved);
-        if (it == NULL)
-            return NULL;
-        tmp = lz->it;
-        lz->it = it;
-        lz->firstpass = 1;
-        Py_DECREF(tmp);
-    }
-}
-
-PyDoc_STRVAR(cycle_doc,
-"cycle(iterable) --> cycle object\n\
-\n\
-Return elements from the iterable until it is exhausted.\n\
-Then repeat the sequence indefinitely.");
-
-static PyTypeObject cycle_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.cycle",                  /* tp_name */
-    sizeof(cycleobject),                /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)cycle_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    cycle_doc,                          /* tp_doc */
-    (traverseproc)cycle_traverse,       /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)cycle_next,           /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    cycle_new,                          /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* dropwhile object **********************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *func;
-    PyObject *it;
-    long         start;
-} dropwhileobject;
-
-static PyTypeObject dropwhile_type;
-
-static PyObject *
-dropwhile_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *func, *seq;
-    PyObject *it;
-    dropwhileobject *lz;
-
-    if (type == &dropwhile_type && !_PyArg_NoKeywords("dropwhile()", kwds))
-        return NULL;
-
-    if (!PyArg_UnpackTuple(args, "dropwhile", 2, 2, &func, &seq))
-        return NULL;
-
-    /* Get iterator. */
-    it = PyObject_GetIter(seq);
-    if (it == NULL)
-        return NULL;
-
-    /* create dropwhileobject structure */
-    lz = (dropwhileobject *)type->tp_alloc(type, 0);
-    if (lz == NULL) {
-        Py_DECREF(it);
-        return NULL;
-    }
-    Py_INCREF(func);
-    lz->func = func;
-    lz->it = it;
-    lz->start = 0;
-
-    return (PyObject *)lz;
-}
-
-static void
-dropwhile_dealloc(dropwhileobject *lz)
-{
-    PyObject_GC_UnTrack(lz);
-    Py_XDECREF(lz->func);
-    Py_XDECREF(lz->it);
-    Py_TYPE(lz)->tp_free(lz);
-}
-
-static int
-dropwhile_traverse(dropwhileobject *lz, visitproc visit, void *arg)
-{
-    Py_VISIT(lz->it);
-    Py_VISIT(lz->func);
-    return 0;
-}
-
-static PyObject *
-dropwhile_next(dropwhileobject *lz)
-{
-    PyObject *item, *good;
-    PyObject *it = lz->it;
-    long ok;
-    PyObject *(*iternext)(PyObject *);
-
-    iternext = *Py_TYPE(it)->tp_iternext;
-    for (;;) {
-        item = iternext(it);
-        if (item == NULL)
-            return NULL;
-        if (lz->start == 1)
-            return item;
-
-        good = PyObject_CallFunctionObjArgs(lz->func, item, NULL);
-        if (good == NULL) {
-            Py_DECREF(item);
-            return NULL;
-        }
-        ok = PyObject_IsTrue(good);
-        Py_DECREF(good);
-        if (!ok) {
-            lz->start = 1;
-            return item;
-        }
-        Py_DECREF(item);
-    }
-}
-
-PyDoc_STRVAR(dropwhile_doc,
-"dropwhile(predicate, iterable) --> dropwhile object\n\
-\n\
-Drop items from the iterable while predicate(item) is true.\n\
-Afterwards, return every element until the iterable is exhausted.");
-
-static PyTypeObject dropwhile_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.dropwhile",              /* tp_name */
-    sizeof(dropwhileobject),            /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)dropwhile_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    dropwhile_doc,                      /* tp_doc */
-    (traverseproc)dropwhile_traverse,    /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)dropwhile_next,       /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    dropwhile_new,                      /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* takewhile object **********************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *func;
-    PyObject *it;
-    long         stop;
-} takewhileobject;
-
-static PyTypeObject takewhile_type;
-
-static PyObject *
-takewhile_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *func, *seq;
-    PyObject *it;
-    takewhileobject *lz;
-
-    if (type == &takewhile_type && !_PyArg_NoKeywords("takewhile()", kwds))
-        return NULL;
-
-    if (!PyArg_UnpackTuple(args, "takewhile", 2, 2, &func, &seq))
-        return NULL;
-
-    /* Get iterator. */
-    it = PyObject_GetIter(seq);
-    if (it == NULL)
-        return NULL;
-
-    /* create takewhileobject structure */
-    lz = (takewhileobject *)type->tp_alloc(type, 0);
-    if (lz == NULL) {
-        Py_DECREF(it);
-        return NULL;
-    }
-    Py_INCREF(func);
-    lz->func = func;
-    lz->it = it;
-    lz->stop = 0;
-
-    return (PyObject *)lz;
-}
-
-static void
-takewhile_dealloc(takewhileobject *lz)
-{
-    PyObject_GC_UnTrack(lz);
-    Py_XDECREF(lz->func);
-    Py_XDECREF(lz->it);
-    Py_TYPE(lz)->tp_free(lz);
-}
-
-static int
-takewhile_traverse(takewhileobject *lz, visitproc visit, void *arg)
-{
-    Py_VISIT(lz->it);
-    Py_VISIT(lz->func);
-    return 0;
-}
-
-static PyObject *
-takewhile_next(takewhileobject *lz)
-{
-    PyObject *item, *good;
-    PyObject *it = lz->it;
-    long ok;
-
-    if (lz->stop == 1)
-        return NULL;
-
-    item = (*Py_TYPE(it)->tp_iternext)(it);
-    if (item == NULL)
-        return NULL;
-
-    good = PyObject_CallFunctionObjArgs(lz->func, item, NULL);
-    if (good == NULL) {
-        Py_DECREF(item);
-        return NULL;
-    }
-    ok = PyObject_IsTrue(good);
-    Py_DECREF(good);
-    if (ok)
-        return item;
-    Py_DECREF(item);
-    lz->stop = 1;
-    return NULL;
-}
-
-PyDoc_STRVAR(takewhile_doc,
-"takewhile(predicate, iterable) --> takewhile object\n\
-\n\
-Return successive entries from an iterable as long as the \n\
-predicate evaluates to true for each entry.");
-
-static PyTypeObject takewhile_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.takewhile",              /* tp_name */
-    sizeof(takewhileobject),            /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)takewhile_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    takewhile_doc,                      /* tp_doc */
-    (traverseproc)takewhile_traverse,    /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)takewhile_next,       /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    takewhile_new,                      /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* islice object ************************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *it;
-    Py_ssize_t next;
-    Py_ssize_t stop;
-    Py_ssize_t step;
-    Py_ssize_t cnt;
-} isliceobject;
-
-static PyTypeObject islice_type;
-
-static PyObject *
-islice_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *seq;
-    Py_ssize_t start=0, stop=-1, step=1;
-    PyObject *it, *a1=NULL, *a2=NULL, *a3=NULL;
-    Py_ssize_t numargs;
-    isliceobject *lz;
-
-    if (type == &islice_type && !_PyArg_NoKeywords("islice()", kwds))
-        return NULL;
-
-    if (!PyArg_UnpackTuple(args, "islice", 2, 4, &seq, &a1, &a2, &a3))
-        return NULL;
-
-    numargs = PyTuple_Size(args);
-    if (numargs == 2) {
-        if (a1 != Py_None) {
-            stop = PyInt_AsSsize_t(a1);
-            if (stop == -1) {
-                if (PyErr_Occurred())
-                    PyErr_Clear();
-                PyErr_SetString(PyExc_ValueError,
-                    "Stop argument for islice() must be None or an integer: 0 <= x <= maxint.");
-                return NULL;
-            }
-        }
-    } else {
-        if (a1 != Py_None)
-            start = PyInt_AsSsize_t(a1);
-        if (start == -1 && PyErr_Occurred())
-            PyErr_Clear();
-        if (a2 != Py_None) {
-            stop = PyInt_AsSsize_t(a2);
-            if (stop == -1) {
-                if (PyErr_Occurred())
-                    PyErr_Clear();
-                PyErr_SetString(PyExc_ValueError,
-                   "Stop argument for islice() must be None or an integer: 0 <= x <= maxint.");
-                return NULL;
-            }
-        }
-    }
-    if (start<0 || stop<-1) {
-        PyErr_SetString(PyExc_ValueError,
-           "Indices for islice() must be None or an integer: 0 <= x <= maxint.");
-        return NULL;
-    }
-
-    if (a3 != NULL) {
-        if (a3 != Py_None)
-            step = PyInt_AsSsize_t(a3);
-        if (step == -1 && PyErr_Occurred())
-            PyErr_Clear();
-    }
-    if (step<1) {
-        PyErr_SetString(PyExc_ValueError,
-           "Step for islice() must be a positive integer or None.");
-        return NULL;
-    }
-
-    /* Get iterator. */
-    it = PyObject_GetIter(seq);
-    if (it == NULL)
-        return NULL;
-
-    /* create isliceobject structure */
-    lz = (isliceobject *)type->tp_alloc(type, 0);
-    if (lz == NULL) {
-        Py_DECREF(it);
-        return NULL;
-    }
-    lz->it = it;
-    lz->next = start;
-    lz->stop = stop;
-    lz->step = step;
-    lz->cnt = 0L;
-
-    return (PyObject *)lz;
-}
-
-static void
-islice_dealloc(isliceobject *lz)
-{
-    PyObject_GC_UnTrack(lz);
-    Py_XDECREF(lz->it);
-    Py_TYPE(lz)->tp_free(lz);
-}
-
-static int
-islice_traverse(isliceobject *lz, visitproc visit, void *arg)
-{
-    Py_VISIT(lz->it);
-    return 0;
-}
-
-static PyObject *
-islice_next(isliceobject *lz)
-{
-    PyObject *item;
-    PyObject *it = lz->it;
-    Py_ssize_t stop = lz->stop;
-    Py_ssize_t oldnext;
-    PyObject *(*iternext)(PyObject *);
-
-    iternext = *Py_TYPE(it)->tp_iternext;
-    while (lz->cnt < lz->next) {
-        item = iternext(it);
-        if (item == NULL)
-            return NULL;
-        Py_DECREF(item);
-        lz->cnt++;
-    }
-    if (stop != -1 && lz->cnt >= stop)
-        return NULL;
-    item = iternext(it);
-    if (item == NULL)
-        return NULL;
-    lz->cnt++;
-    oldnext = lz->next;
-    lz->next += lz->step;
-    if (lz->next < oldnext || (stop != -1 && lz->next > stop))
-        lz->next = stop;
-    return item;
-}
-
-PyDoc_STRVAR(islice_doc,
-"islice(iterable, [start,] stop [, step]) --> islice object\n\
-\n\
-Return an iterator whose next() method returns selected values from an\n\
-iterable.  If start is specified, will skip all preceding elements;\n\
-otherwise, start defaults to zero.  Step defaults to one.  If\n\
-specified as another value, step determines how many values are \n\
-skipped between successive calls.  Works like a slice() on a list\n\
-but returns an iterator.");
-
-static PyTypeObject islice_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.islice",                 /* tp_name */
-    sizeof(isliceobject),               /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)islice_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    islice_doc,                         /* tp_doc */
-    (traverseproc)islice_traverse,      /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)islice_next,          /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    islice_new,                         /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* starmap object ************************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *func;
-    PyObject *it;
-} starmapobject;
-
-static PyTypeObject starmap_type;
-
-static PyObject *
-starmap_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *func, *seq;
-    PyObject *it;
-    starmapobject *lz;
-
-    if (type == &starmap_type && !_PyArg_NoKeywords("starmap()", kwds))
-        return NULL;
-
-    if (!PyArg_UnpackTuple(args, "starmap", 2, 2, &func, &seq))
-        return NULL;
-
-    /* Get iterator. */
-    it = PyObject_GetIter(seq);
-    if (it == NULL)
-        return NULL;
-
-    /* create starmapobject structure */
-    lz = (starmapobject *)type->tp_alloc(type, 0);
-    if (lz == NULL) {
-        Py_DECREF(it);
-        return NULL;
-    }
-    Py_INCREF(func);
-    lz->func = func;
-    lz->it = it;
-
-    return (PyObject *)lz;
-}
-
-static void
-starmap_dealloc(starmapobject *lz)
-{
-    PyObject_GC_UnTrack(lz);
-    Py_XDECREF(lz->func);
-    Py_XDECREF(lz->it);
-    Py_TYPE(lz)->tp_free(lz);
-}
-
-static int
-starmap_traverse(starmapobject *lz, visitproc visit, void *arg)
-{
-    Py_VISIT(lz->it);
-    Py_VISIT(lz->func);
-    return 0;
-}
-
-static PyObject *
-starmap_next(starmapobject *lz)
-{
-    PyObject *args;
-    PyObject *result;
-    PyObject *it = lz->it;
-
-    args = (*Py_TYPE(it)->tp_iternext)(it);
-    if (args == NULL)
-        return NULL;
-    if (!PyTuple_CheckExact(args)) {
-        PyObject *newargs = PySequence_Tuple(args);
-        Py_DECREF(args);
-        if (newargs == NULL)
-            return NULL;
-        args = newargs;
-    }
-    result = PyObject_Call(lz->func, args, NULL);
-    Py_DECREF(args);
-    return result;
-}
-
-PyDoc_STRVAR(starmap_doc,
-"starmap(function, sequence) --> starmap object\n\
-\n\
-Return an iterator whose values are returned from the function evaluated\n\
-with a argument tuple taken from the given sequence.");
-
-static PyTypeObject starmap_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.starmap",                /* tp_name */
-    sizeof(starmapobject),              /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)starmap_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    starmap_doc,                        /* tp_doc */
-    (traverseproc)starmap_traverse,     /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)starmap_next,         /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    starmap_new,                        /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* imap object ************************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *iters;
-    PyObject *func;
-} imapobject;
-
-static PyTypeObject imap_type;
-
-static PyObject *
-imap_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *it, *iters, *func;
-    imapobject *lz;
-    Py_ssize_t numargs, i;
-
-    if (type == &imap_type && !_PyArg_NoKeywords("imap()", kwds))
-        return NULL;
-
-    numargs = PyTuple_Size(args);
-    if (numargs < 2) {
-        PyErr_SetString(PyExc_TypeError,
-           "imap() must have at least two arguments.");
-        return NULL;
-    }
-
-    iters = PyTuple_New(numargs-1);
-    if (iters == NULL)
-        return NULL;
-
-    for (i=1 ; i<numargs ; i++) {
-        /* Get iterator. */
-        it = PyObject_GetIter(PyTuple_GET_ITEM(args, i));
-        if (it == NULL) {
-            Py_DECREF(iters);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(iters, i-1, it);
-    }
-
-    /* create imapobject structure */
-    lz = (imapobject *)type->tp_alloc(type, 0);
-    if (lz == NULL) {
-        Py_DECREF(iters);
-        return NULL;
-    }
-    lz->iters = iters;
-    func = PyTuple_GET_ITEM(args, 0);
-    Py_INCREF(func);
-    lz->func = func;
-
-    return (PyObject *)lz;
-}
-
-static void
-imap_dealloc(imapobject *lz)
-{
-    PyObject_GC_UnTrack(lz);
-    Py_XDECREF(lz->iters);
-    Py_XDECREF(lz->func);
-    Py_TYPE(lz)->tp_free(lz);
-}
-
-static int
-imap_traverse(imapobject *lz, visitproc visit, void *arg)
-{
-    Py_VISIT(lz->iters);
-    Py_VISIT(lz->func);
-    return 0;
-}
-
-/*
-imap() is an iterator version of __builtins__.map() except that it does
-not have the None fill-in feature.  That was intentionally left out for
-the following reasons:
-
-  1) Itertools are designed to be easily combined and chained together.
-     Having all tools stop with the shortest input is a unifying principle
-     that makes it easier to combine finite iterators (supplying data) with
-     infinite iterators like count() and repeat() (for supplying sequential
-     or constant arguments to a function).
-
-  2) In typical use cases for combining itertools, having one finite data
-     supplier run out before another is likely to be an error condition which
-     should not pass silently by automatically supplying None.
-
-  3) The use cases for automatic None fill-in are rare -- not many functions
-     do something useful when a parameter suddenly switches type and becomes
-     None.
-
-  4) If a need does arise, it can be met by __builtins__.map() or by
-     writing:  chain(iterable, repeat(None)).
-
-  5) Similar toolsets in Haskell and SML do not have automatic None fill-in.
-*/
-
-static PyObject *
-imap_next(imapobject *lz)
-{
-    PyObject *val;
-    PyObject *argtuple;
-    PyObject *result;
-    Py_ssize_t numargs, i;
-
-    numargs = PyTuple_Size(lz->iters);
-    argtuple = PyTuple_New(numargs);
-    if (argtuple == NULL)
-        return NULL;
-
-    for (i=0 ; i<numargs ; i++) {
-        val = PyIter_Next(PyTuple_GET_ITEM(lz->iters, i));
-        if (val == NULL) {
-            Py_DECREF(argtuple);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(argtuple, i, val);
-    }
-    if (lz->func == Py_None)
-        return argtuple;
-    result = PyObject_Call(lz->func, argtuple, NULL);
-    Py_DECREF(argtuple);
-    return result;
-}
-
-PyDoc_STRVAR(imap_doc,
-"imap(func, *iterables) --> imap object\n\
-\n\
-Make an iterator that computes the function using arguments from\n\
-each of the iterables.  Like map() except that it returns\n\
-an iterator instead of a list and that it stops when the shortest\n\
-iterable is exhausted instead of filling in None for shorter\n\
-iterables.");
-
-static PyTypeObject imap_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.imap",                   /* tp_name */
-    sizeof(imapobject),                 /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)imap_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    imap_doc,                           /* tp_doc */
-    (traverseproc)imap_traverse,        /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)imap_next,            /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    imap_new,                           /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* chain object ************************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *source;                   /* Iterator over input iterables */
-    PyObject *active;                   /* Currently running input iterator */
-} chainobject;
-
-static PyTypeObject chain_type;
-
-static PyObject *
-chain_new_internal(PyTypeObject *type, PyObject *source)
-{
-    chainobject *lz;
-
-    lz = (chainobject *)type->tp_alloc(type, 0);
-    if (lz == NULL) {
-        Py_DECREF(source);
-        return NULL;
-    }
-
-    lz->source = source;
-    lz->active = NULL;
-    return (PyObject *)lz;
-}
-
-static PyObject *
-chain_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *source;
-
-    if (type == &chain_type && !_PyArg_NoKeywords("chain()", kwds))
-        return NULL;
-
-    source = PyObject_GetIter(args);
-    if (source == NULL)
-        return NULL;
-
-    return chain_new_internal(type, source);
-}
-
-static PyObject *
-chain_new_from_iterable(PyTypeObject *type, PyObject *arg)
-{
-    PyObject *source;
-
-    source = PyObject_GetIter(arg);
-    if (source == NULL)
-        return NULL;
-
-    return chain_new_internal(type, source);
-}
-
-static void
-chain_dealloc(chainobject *lz)
-{
-    PyObject_GC_UnTrack(lz);
-    Py_XDECREF(lz->active);
-    Py_XDECREF(lz->source);
-    Py_TYPE(lz)->tp_free(lz);
-}
-
-static int
-chain_traverse(chainobject *lz, visitproc visit, void *arg)
-{
-    Py_VISIT(lz->source);
-    Py_VISIT(lz->active);
-    return 0;
-}
-
-static PyObject *
-chain_next(chainobject *lz)
-{
-    PyObject *item;
-
-    if (lz->source == NULL)
-        return NULL;                                    /* already stopped */
-
-    if (lz->active == NULL) {
-        PyObject *iterable = PyIter_Next(lz->source);
-        if (iterable == NULL) {
-            Py_CLEAR(lz->source);
-            return NULL;                                /* no more input sources */
-        }
-        lz->active = PyObject_GetIter(iterable);
-        Py_DECREF(iterable);
-        if (lz->active == NULL) {
-            Py_CLEAR(lz->source);
-            return NULL;                                /* input not iterable */
-        }
-    }
-    item = PyIter_Next(lz->active);
-    if (item != NULL)
-        return item;
-    if (PyErr_Occurred()) {
-        if (PyErr_ExceptionMatches(PyExc_StopIteration))
-            PyErr_Clear();
-        else
-            return NULL;                                /* input raised an exception */
-    }
-    Py_CLEAR(lz->active);
-    return chain_next(lz);                      /* recurse and use next active */
-}
-
-PyDoc_STRVAR(chain_doc,
-"chain(*iterables) --> chain object\n\
-\n\
-Return a chain object whose .next() method returns elements from the\n\
-first iterable until it is exhausted, then elements from the next\n\
-iterable, until all of the iterables are exhausted.");
-
-PyDoc_STRVAR(chain_from_iterable_doc,
-"chain.from_iterable(iterable) --> chain object\n\
-\n\
-Alternate chain() contructor taking a single iterable argument\n\
-that evaluates lazily.");
-
-static PyMethodDef chain_methods[] = {
-    {"from_iterable", (PyCFunction) chain_new_from_iterable,            METH_O | METH_CLASS,
-        chain_from_iterable_doc},
-    {NULL,              NULL}   /* sentinel */
-};
-
-static PyTypeObject chain_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.chain",                  /* tp_name */
-    sizeof(chainobject),                /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)chain_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    chain_doc,                          /* tp_doc */
-    (traverseproc)chain_traverse,       /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)chain_next,           /* tp_iternext */
-    chain_methods,                      /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    chain_new,                          /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* product object ************************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *pools;                    /* tuple of pool tuples */
-    Py_ssize_t *indices;            /* one index per pool */
-    PyObject *result;               /* most recently returned result tuple */
-    int stopped;                    /* set to 1 when the product iterator is exhausted */
-} productobject;
-
-static PyTypeObject product_type;
-
-static PyObject *
-product_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    productobject *lz;
-    Py_ssize_t nargs, npools, repeat=1;
-    PyObject *pools = NULL;
-    Py_ssize_t *indices = NULL;
-    Py_ssize_t i;
-
-    if (kwds != NULL) {
-        char *kwlist[] = {"repeat", 0};
-        PyObject *tmpargs = PyTuple_New(0);
-        if (tmpargs == NULL)
-            return NULL;
-        if (!PyArg_ParseTupleAndKeywords(tmpargs, kwds, "|n:product", kwlist, &repeat)) {
-            Py_DECREF(tmpargs);
-            return NULL;
-        }
-        Py_DECREF(tmpargs);
-        if (repeat < 0) {
-            PyErr_SetString(PyExc_ValueError,
-                            "repeat argument cannot be negative");
-            return NULL;
-        }
-    }
-
-    assert(PyTuple_Check(args));
-    nargs = (repeat == 0) ? 0 : PyTuple_GET_SIZE(args);
-    npools = nargs * repeat;
-
-    indices = PyMem_Malloc(npools * sizeof(Py_ssize_t));
-    if (indices == NULL) {
-        PyErr_NoMemory();
-        goto error;
-    }
-
-    pools = PyTuple_New(npools);
-    if (pools == NULL)
-        goto error;
-
-    for (i=0; i < nargs ; ++i) {
-        PyObject *item = PyTuple_GET_ITEM(args, i);
-        PyObject *pool = PySequence_Tuple(item);
-        if (pool == NULL)
-            goto error;
-        PyTuple_SET_ITEM(pools, i, pool);
-        indices[i] = 0;
-    }
-    for ( ; i < npools; ++i) {
-        PyObject *pool = PyTuple_GET_ITEM(pools, i - nargs);
-        Py_INCREF(pool);
-        PyTuple_SET_ITEM(pools, i, pool);
-        indices[i] = 0;
-    }
-
-    /* create productobject structure */
-    lz = (productobject *)type->tp_alloc(type, 0);
-    if (lz == NULL)
-        goto error;
-
-    lz->pools = pools;
-    lz->indices = indices;
-    lz->result = NULL;
-    lz->stopped = 0;
-
-    return (PyObject *)lz;
-
-error:
-    if (indices != NULL)
-        PyMem_Free(indices);
-    Py_XDECREF(pools);
-    return NULL;
-}
-
-static void
-product_dealloc(productobject *lz)
-{
-    PyObject_GC_UnTrack(lz);
-    Py_XDECREF(lz->pools);
-    Py_XDECREF(lz->result);
-    if (lz->indices != NULL)
-        PyMem_Free(lz->indices);
-    Py_TYPE(lz)->tp_free(lz);
-}
-
-static int
-product_traverse(productobject *lz, visitproc visit, void *arg)
-{
-    Py_VISIT(lz->pools);
-    Py_VISIT(lz->result);
-    return 0;
-}
-
-static PyObject *
-product_next(productobject *lz)
-{
-    PyObject *pool;
-    PyObject *elem;
-    PyObject *oldelem;
-    PyObject *pools = lz->pools;
-    PyObject *result = lz->result;
-    Py_ssize_t npools = PyTuple_GET_SIZE(pools);
-    Py_ssize_t i;
-
-    if (lz->stopped)
-        return NULL;
-
-    if (result == NULL) {
-        /* On the first pass, return an initial tuple filled with the
-           first element from each pool. */
-        result = PyTuple_New(npools);
-        if (result == NULL)
-            goto empty;
-        lz->result = result;
-        for (i=0; i < npools; i++) {
-            pool = PyTuple_GET_ITEM(pools, i);
-            if (PyTuple_GET_SIZE(pool) == 0)
-                goto empty;
-            elem = PyTuple_GET_ITEM(pool, 0);
-            Py_INCREF(elem);
-            PyTuple_SET_ITEM(result, i, elem);
-        }
-    } else {
-        Py_ssize_t *indices = lz->indices;
-
-        /* Copy the previous result tuple or re-use it if available */
-        if (Py_REFCNT(result) > 1) {
-            PyObject *old_result = result;
-            result = PyTuple_New(npools);
-            if (result == NULL)
-                goto empty;
-            lz->result = result;
-            for (i=0; i < npools; i++) {
-                elem = PyTuple_GET_ITEM(old_result, i);
-                Py_INCREF(elem);
-                PyTuple_SET_ITEM(result, i, elem);
-            }
-            Py_DECREF(old_result);
-        }
-        /* Now, we've got the only copy so we can update it in-place */
-        assert (npools==0 || Py_REFCNT(result) == 1);
-
-        /* Update the pool indices right-to-left.  Only advance to the
-           next pool when the previous one rolls-over */
-        for (i=npools-1 ; i >= 0 ; i--) {
-            pool = PyTuple_GET_ITEM(pools, i);
-            indices[i]++;
-            if (indices[i] == PyTuple_GET_SIZE(pool)) {
-                /* Roll-over and advance to next pool */
-                indices[i] = 0;
-                elem = PyTuple_GET_ITEM(pool, 0);
-                Py_INCREF(elem);
-                oldelem = PyTuple_GET_ITEM(result, i);
-                PyTuple_SET_ITEM(result, i, elem);
-                Py_DECREF(oldelem);
-            } else {
-                /* No rollover. Just increment and stop here. */
-                elem = PyTuple_GET_ITEM(pool, indices[i]);
-                Py_INCREF(elem);
-                oldelem = PyTuple_GET_ITEM(result, i);
-                PyTuple_SET_ITEM(result, i, elem);
-                Py_DECREF(oldelem);
-                break;
-            }
-        }
-
-        /* If i is negative, then the indices have all rolled-over
-           and we're done. */
-        if (i < 0)
-            goto empty;
-    }
-
-    Py_INCREF(result);
-    return result;
-
-empty:
-    lz->stopped = 1;
-    return NULL;
-}
-
-PyDoc_STRVAR(product_doc,
-"product(*iterables) --> product object\n\
-\n\
-Cartesian product of input iterables.  Equivalent to nested for-loops.\n\n\
-For example, product(A, B) returns the same as:  ((x,y) for x in A for y in B).\n\
-The leftmost iterators are in the outermost for-loop, so the output tuples\n\
-cycle in a manner similar to an odometer (with the rightmost element changing\n\
-on every iteration).\n\n\
-To compute the product of an iterable with itself, specify the number\n\
-of repetitions with the optional repeat keyword argument. For example,\n\
-product(A, repeat=4) means the same as product(A, A, A, A).\n\n\
-product('ab', range(3)) --> ('a',0) ('a',1) ('a',2) ('b',0) ('b',1) ('b',2)\n\
-product((0,1), (0,1), (0,1)) --> (0,0,0) (0,0,1) (0,1,0) (0,1,1) (1,0,0) ...");
-
-static PyTypeObject product_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.product",                /* tp_name */
-    sizeof(productobject),      /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)product_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    product_doc,                        /* tp_doc */
-    (traverseproc)product_traverse,     /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)product_next,         /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    product_new,                        /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* combinations object ************************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *pool;                     /* input converted to a tuple */
-    Py_ssize_t *indices;            /* one index per result element */
-    PyObject *result;               /* most recently returned result tuple */
-    Py_ssize_t r;                       /* size of result tuple */
-    int stopped;                        /* set to 1 when the combinations iterator is exhausted */
-} combinationsobject;
-
-static PyTypeObject combinations_type;
-
-static PyObject *
-combinations_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    combinationsobject *co;
-    Py_ssize_t n;
-    Py_ssize_t r;
-    PyObject *pool = NULL;
-    PyObject *iterable = NULL;
-    Py_ssize_t *indices = NULL;
-    Py_ssize_t i;
-    static char *kwargs[] = {"iterable", "r", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "On:combinations", kwargs,
-                                     &iterable, &r))
-        return NULL;
-
-    pool = PySequence_Tuple(iterable);
-    if (pool == NULL)
-        goto error;
-    n = PyTuple_GET_SIZE(pool);
-    if (r < 0) {
-        PyErr_SetString(PyExc_ValueError, "r must be non-negative");
-        goto error;
-    }
-
-    indices = PyMem_Malloc(r * sizeof(Py_ssize_t));
-    if (indices == NULL) {
-        PyErr_NoMemory();
-        goto error;
-    }
-
-    for (i=0 ; i<r ; i++)
-        indices[i] = i;
-
-    /* create combinationsobject structure */
-    co = (combinationsobject *)type->tp_alloc(type, 0);
-    if (co == NULL)
-        goto error;
-
-    co->pool = pool;
-    co->indices = indices;
-    co->result = NULL;
-    co->r = r;
-    co->stopped = r > n ? 1 : 0;
-
-    return (PyObject *)co;
-
-error:
-    if (indices != NULL)
-        PyMem_Free(indices);
-    Py_XDECREF(pool);
-    return NULL;
-}
-
-static void
-combinations_dealloc(combinationsobject *co)
-{
-    PyObject_GC_UnTrack(co);
-    Py_XDECREF(co->pool);
-    Py_XDECREF(co->result);
-    if (co->indices != NULL)
-        PyMem_Free(co->indices);
-    Py_TYPE(co)->tp_free(co);
-}
-
-static int
-combinations_traverse(combinationsobject *co, visitproc visit, void *arg)
-{
-    Py_VISIT(co->pool);
-    Py_VISIT(co->result);
-    return 0;
-}
-
-static PyObject *
-combinations_next(combinationsobject *co)
-{
-    PyObject *elem;
-    PyObject *oldelem;
-    PyObject *pool = co->pool;
-    Py_ssize_t *indices = co->indices;
-    PyObject *result = co->result;
-    Py_ssize_t n = PyTuple_GET_SIZE(pool);
-    Py_ssize_t r = co->r;
-    Py_ssize_t i, j, index;
-
-    if (co->stopped)
-        return NULL;
-
-    if (result == NULL) {
-        /* On the first pass, initialize result tuple using the indices */
-        result = PyTuple_New(r);
-        if (result == NULL)
-            goto empty;
-        co->result = result;
-        for (i=0; i<r ; i++) {
-            index = indices[i];
-            elem = PyTuple_GET_ITEM(pool, index);
-            Py_INCREF(elem);
-            PyTuple_SET_ITEM(result, i, elem);
-        }
-    } else {
-        /* Copy the previous result tuple or re-use it if available */
-        if (Py_REFCNT(result) > 1) {
-            PyObject *old_result = result;
-            result = PyTuple_New(r);
-            if (result == NULL)
-                goto empty;
-            co->result = result;
-            for (i=0; i<r ; i++) {
-                elem = PyTuple_GET_ITEM(old_result, i);
-                Py_INCREF(elem);
-                PyTuple_SET_ITEM(result, i, elem);
-            }
-            Py_DECREF(old_result);
-        }
-        /* Now, we've got the only copy so we can update it in-place
-         * CPython's empty tuple is a singleton and cached in
-         * PyTuple's freelist.
-         */
-        assert(r == 0 || Py_REFCNT(result) == 1);
-
-        /* Scan indices right-to-left until finding one that is not
-           at its maximum (i + n - r). */
-        for (i=r-1 ; i >= 0 && indices[i] == i+n-r ; i--)
-            ;
-
-        /* If i is negative, then the indices are all at
-           their maximum value and we're done. */
-        if (i < 0)
-            goto empty;
-
-        /* Increment the current index which we know is not at its
-           maximum.  Then move back to the right setting each index
-           to its lowest possible value (one higher than the index
-           to its left -- this maintains the sort order invariant). */
-        indices[i]++;
-        for (j=i+1 ; j<r ; j++)
-            indices[j] = indices[j-1] + 1;
-
-        /* Update the result tuple for the new indices
-           starting with i, the leftmost index that changed */
-        for ( ; i<r ; i++) {
-            index = indices[i];
-            elem = PyTuple_GET_ITEM(pool, index);
-            Py_INCREF(elem);
-            oldelem = PyTuple_GET_ITEM(result, i);
-            PyTuple_SET_ITEM(result, i, elem);
-            Py_DECREF(oldelem);
-        }
-    }
-
-    Py_INCREF(result);
-    return result;
-
-empty:
-    co->stopped = 1;
-    return NULL;
-}
-
-PyDoc_STRVAR(combinations_doc,
-"combinations(iterable, r) --> combinations object\n\
-\n\
-Return successive r-length combinations of elements in the iterable.\n\n\
-combinations(range(4), 3) --> (0,1,2), (0,1,3), (0,2,3), (1,2,3)");
-
-static PyTypeObject combinations_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.combinations",                   /* tp_name */
-    sizeof(combinationsobject),         /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)combinations_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    combinations_doc,                           /* tp_doc */
-    (traverseproc)combinations_traverse,        /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)combinations_next,            /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    combinations_new,                           /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* combinations with replacement object *******************************************/
-
-/* Equivalent to:
-
-        def combinations_with_replacement(iterable, r):
-            "combinations_with_replacement('ABC', 2) --> AA AB AC BB BC CC"
-            # number items returned:  (n+r-1)! / r! / (n-1)!
-            pool = tuple(iterable)
-            n = len(pool)
-            indices = [0] * r
-            yield tuple(pool[i] for i in indices)
-            while 1:
-                for i in reversed(range(r)):
-                    if indices[i] != n - 1:
-                        break
-                else:
-                    return
-                indices[i:] = [indices[i] + 1] * (r - i)
-                yield tuple(pool[i] for i in indices)
-
-        def combinations_with_replacement2(iterable, r):
-            'Alternate version that filters from product()'
-            pool = tuple(iterable)
-            n = len(pool)
-            for indices in product(range(n), repeat=r):
-                if sorted(indices) == list(indices):
-                    yield tuple(pool[i] for i in indices)
-*/
-typedef struct {
-    PyObject_HEAD
-    PyObject *pool;                     /* input converted to a tuple */
-    Py_ssize_t *indices;    /* one index per result element */
-    PyObject *result;       /* most recently returned result tuple */
-    Py_ssize_t r;                       /* size of result tuple */
-    int stopped;                        /* set to 1 when the cwr iterator is exhausted */
-} cwrobject;
-
-static PyTypeObject cwr_type;
-
-static PyObject *
-cwr_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    cwrobject *co;
-    Py_ssize_t n;
-    Py_ssize_t r;
-    PyObject *pool = NULL;
-    PyObject *iterable = NULL;
-    Py_ssize_t *indices = NULL;
-    Py_ssize_t i;
-    static char *kwargs[] = {"iterable", "r", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "On:combinations_with_replacement", kwargs,
-                                     &iterable, &r))
-        return NULL;
-
-    pool = PySequence_Tuple(iterable);
-    if (pool == NULL)
-        goto error;
-    n = PyTuple_GET_SIZE(pool);
-    if (r < 0) {
-        PyErr_SetString(PyExc_ValueError, "r must be non-negative");
-        goto error;
-    }
-
-    indices = PyMem_Malloc(r * sizeof(Py_ssize_t));
-    if (indices == NULL) {
-        PyErr_NoMemory();
-        goto error;
-    }
-
-    for (i=0 ; i<r ; i++)
-        indices[i] = 0;
-
-    /* create cwrobject structure */
-    co = (cwrobject *)type->tp_alloc(type, 0);
-    if (co == NULL)
-        goto error;
-
-    co->pool = pool;
-    co->indices = indices;
-    co->result = NULL;
-    co->r = r;
-    co->stopped = !n && r;
-
-    return (PyObject *)co;
-
-error:
-    if (indices != NULL)
-        PyMem_Free(indices);
-    Py_XDECREF(pool);
-    return NULL;
-}
-
-static void
-cwr_dealloc(cwrobject *co)
-{
-    PyObject_GC_UnTrack(co);
-    Py_XDECREF(co->pool);
-    Py_XDECREF(co->result);
-    if (co->indices != NULL)
-        PyMem_Free(co->indices);
-    Py_TYPE(co)->tp_free(co);
-}
-
-static int
-cwr_traverse(cwrobject *co, visitproc visit, void *arg)
-{
-    Py_VISIT(co->pool);
-    Py_VISIT(co->result);
-    return 0;
-}
-
-static PyObject *
-cwr_next(cwrobject *co)
-{
-    PyObject *elem;
-    PyObject *oldelem;
-    PyObject *pool = co->pool;
-    Py_ssize_t *indices = co->indices;
-    PyObject *result = co->result;
-    Py_ssize_t n = PyTuple_GET_SIZE(pool);
-    Py_ssize_t r = co->r;
-    Py_ssize_t i, j, index;
-
-    if (co->stopped)
-        return NULL;
-
-    if (result == NULL) {
-        /* On the first pass, initialize result tuple using the indices */
-        result = PyTuple_New(r);
-        if (result == NULL)
-            goto empty;
-        co->result = result;
-        for (i=0; i<r ; i++) {
-            index = indices[i];
-            elem = PyTuple_GET_ITEM(pool, index);
-            Py_INCREF(elem);
-            PyTuple_SET_ITEM(result, i, elem);
-        }
-    } else {
-        /* Copy the previous result tuple or re-use it if available */
-        if (Py_REFCNT(result) > 1) {
-            PyObject *old_result = result;
-            result = PyTuple_New(r);
-            if (result == NULL)
-                goto empty;
-            co->result = result;
-            for (i=0; i<r ; i++) {
-                elem = PyTuple_GET_ITEM(old_result, i);
-                Py_INCREF(elem);
-                PyTuple_SET_ITEM(result, i, elem);
-            }
-            Py_DECREF(old_result);
-        }
-        /* Now, we've got the only copy so we can update it in-place CPython's
-           empty tuple is a singleton and cached in PyTuple's freelist. */
-        assert(r == 0 || Py_REFCNT(result) == 1);
-
-    /* Scan indices right-to-left until finding one that is not
-     * at its maximum (n-1). */
-        for (i=r-1 ; i >= 0 && indices[i] == n-1; i--)
-            ;
-
-        /* If i is negative, then the indices are all at
-       their maximum value and we're done. */
-        if (i < 0)
-            goto empty;
-
-        /* Increment the current index which we know is not at its
-       maximum.  Then set all to the right to the same value. */
-        indices[i]++;
-        for (j=i+1 ; j<r ; j++)
-            indices[j] = indices[j-1];
-
-        /* Update the result tuple for the new indices
-           starting with i, the leftmost index that changed */
-        for ( ; i<r ; i++) {
-            index = indices[i];
-            elem = PyTuple_GET_ITEM(pool, index);
-            Py_INCREF(elem);
-            oldelem = PyTuple_GET_ITEM(result, i);
-            PyTuple_SET_ITEM(result, i, elem);
-            Py_DECREF(oldelem);
-        }
-    }
-
-    Py_INCREF(result);
-    return result;
-
-empty:
-    co->stopped = 1;
-    return NULL;
-}
-
-PyDoc_STRVAR(cwr_doc,
-"combinations_with_replacement(iterable, r) --> combinations_with_replacement object\n\
-\n\
-Return successive r-length combinations of elements in the iterable\n\
-allowing individual elements to have successive repeats.\n\
-combinations_with_replacement('ABC', 2) --> AA AB AC BB BC CC");
-
-static PyTypeObject cwr_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.combinations_with_replacement",                  /* tp_name */
-    sizeof(cwrobject),                  /* tp_basicsize */
-    0,                                                  /* tp_itemsize */
-    /* methods */
-    (destructor)cwr_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                                  /* tp_setattro */
-    0,                                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    cwr_doc,                                    /* tp_doc */
-    (traverseproc)cwr_traverse,         /* tp_traverse */
-    0,                                                  /* tp_clear */
-    0,                                                  /* tp_richcompare */
-    0,                                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)cwr_next,     /* tp_iternext */
-    0,                                                  /* tp_methods */
-    0,                                                  /* tp_members */
-    0,                                                  /* tp_getset */
-    0,                                                  /* tp_base */
-    0,                                                  /* tp_dict */
-    0,                                                  /* tp_descr_get */
-    0,                                                  /* tp_descr_set */
-    0,                                                  /* tp_dictoffset */
-    0,                                                  /* tp_init */
-    0,                                                  /* tp_alloc */
-    cwr_new,                                    /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* permutations object ************************************************************
-
-def permutations(iterable, r=None):
-    'permutations(range(3), 2) --> (0,1) (0,2) (1,0) (1,2) (2,0) (2,1)'
-    pool = tuple(iterable)
-    n = len(pool)
-    r = n if r is None else r
-    indices = range(n)
-    cycles = range(n-r+1, n+1)[::-1]
-    yield tuple(pool[i] for i in indices[:r])
-    while n:
-    for i in reversed(range(r)):
-        cycles[i] -= 1
-        if cycles[i] == 0:
-        indices[i:] = indices[i+1:] + indices[i:i+1]
-        cycles[i] = n - i
-        else:
-        j = cycles[i]
-        indices[i], indices[-j] = indices[-j], indices[i]
-        yield tuple(pool[i] for i in indices[:r])
-        break
-    else:
-        return
-*/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *pool;                     /* input converted to a tuple */
-    Py_ssize_t *indices;            /* one index per element in the pool */
-    Py_ssize_t *cycles;                 /* one rollover counter per element in the result */
-    PyObject *result;               /* most recently returned result tuple */
-    Py_ssize_t r;                       /* size of result tuple */
-    int stopped;                        /* set to 1 when the permutations iterator is exhausted */
-} permutationsobject;
-
-static PyTypeObject permutations_type;
-
-static PyObject *
-permutations_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    permutationsobject *po;
-    Py_ssize_t n;
-    Py_ssize_t r;
-    PyObject *robj = Py_None;
-    PyObject *pool = NULL;
-    PyObject *iterable = NULL;
-    Py_ssize_t *indices = NULL;
-    Py_ssize_t *cycles = NULL;
-    Py_ssize_t i;
-    static char *kwargs[] = {"iterable", "r", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:permutations", kwargs,
-                                     &iterable, &robj))
-        return NULL;
-
-    pool = PySequence_Tuple(iterable);
-    if (pool == NULL)
-        goto error;
-    n = PyTuple_GET_SIZE(pool);
-
-    r = n;
-    if (robj != Py_None) {
-        r = PyInt_AsSsize_t(robj);
-        if (r == -1 && PyErr_Occurred())
-            goto error;
-    }
-    if (r < 0) {
-        PyErr_SetString(PyExc_ValueError, "r must be non-negative");
-        goto error;
-    }
-
-    indices = PyMem_Malloc(n * sizeof(Py_ssize_t));
-    cycles = PyMem_Malloc(r * sizeof(Py_ssize_t));
-    if (indices == NULL || cycles == NULL) {
-        PyErr_NoMemory();
-        goto error;
-    }
-
-    for (i=0 ; i<n ; i++)
-        indices[i] = i;
-    for (i=0 ; i<r ; i++)
-        cycles[i] = n - i;
-
-    /* create permutationsobject structure */
-    po = (permutationsobject *)type->tp_alloc(type, 0);
-    if (po == NULL)
-        goto error;
-
-    po->pool = pool;
-    po->indices = indices;
-    po->cycles = cycles;
-    po->result = NULL;
-    po->r = r;
-    po->stopped = r > n ? 1 : 0;
-
-    return (PyObject *)po;
-
-error:
-    if (indices != NULL)
-        PyMem_Free(indices);
-    if (cycles != NULL)
-        PyMem_Free(cycles);
-    Py_XDECREF(pool);
-    return NULL;
-}
-
-static void
-permutations_dealloc(permutationsobject *po)
-{
-    PyObject_GC_UnTrack(po);
-    Py_XDECREF(po->pool);
-    Py_XDECREF(po->result);
-    PyMem_Free(po->indices);
-    PyMem_Free(po->cycles);
-    Py_TYPE(po)->tp_free(po);
-}
-
-static int
-permutations_traverse(permutationsobject *po, visitproc visit, void *arg)
-{
-    Py_VISIT(po->pool);
-    Py_VISIT(po->result);
-    return 0;
-}
-
-static PyObject *
-permutations_next(permutationsobject *po)
-{
-    PyObject *elem;
-    PyObject *oldelem;
-    PyObject *pool = po->pool;
-    Py_ssize_t *indices = po->indices;
-    Py_ssize_t *cycles = po->cycles;
-    PyObject *result = po->result;
-    Py_ssize_t n = PyTuple_GET_SIZE(pool);
-    Py_ssize_t r = po->r;
-    Py_ssize_t i, j, k, index;
-
-    if (po->stopped)
-        return NULL;
-
-    if (result == NULL) {
-        /* On the first pass, initialize result tuple using the indices */
-        result = PyTuple_New(r);
-        if (result == NULL)
-            goto empty;
-        po->result = result;
-        for (i=0; i<r ; i++) {
-            index = indices[i];
-            elem = PyTuple_GET_ITEM(pool, index);
-            Py_INCREF(elem);
-            PyTuple_SET_ITEM(result, i, elem);
-        }
-    } else {
-        if (n == 0)
-            goto empty;
-
-        /* Copy the previous result tuple or re-use it if available */
-        if (Py_REFCNT(result) > 1) {
-            PyObject *old_result = result;
-            result = PyTuple_New(r);
-            if (result == NULL)
-                goto empty;
-            po->result = result;
-            for (i=0; i<r ; i++) {
-                elem = PyTuple_GET_ITEM(old_result, i);
-                Py_INCREF(elem);
-                PyTuple_SET_ITEM(result, i, elem);
-            }
-            Py_DECREF(old_result);
-        }
-        /* Now, we've got the only copy so we can update it in-place */
-        assert(r == 0 || Py_REFCNT(result) == 1);
-
-        /* Decrement rightmost cycle, moving leftward upon zero rollover */
-        for (i=r-1 ; i>=0 ; i--) {
-            cycles[i] -= 1;
-            if (cycles[i] == 0) {
-                /* rotatation: indices[i:] = indices[i+1:] + indices[i:i+1] */
-                index = indices[i];
-                for (j=i ; j<n-1 ; j++)
-                    indices[j] = indices[j+1];
-                indices[n-1] = index;
-                cycles[i] = n - i;
-            } else {
-                j = cycles[i];
-                index = indices[i];
-                indices[i] = indices[n-j];
-                indices[n-j] = index;
-
-                for (k=i; k<r ; k++) {
-                    /* start with i, the leftmost element that changed */
-                    /* yield tuple(pool[k] for k in indices[:r]) */
-                    index = indices[k];
-                    elem = PyTuple_GET_ITEM(pool, index);
-                    Py_INCREF(elem);
-                    oldelem = PyTuple_GET_ITEM(result, k);
-                    PyTuple_SET_ITEM(result, k, elem);
-                    Py_DECREF(oldelem);
-                }
-                break;
-            }
-        }
-        /* If i is negative, then the cycles have all
-           rolled-over and we're done. */
-        if (i < 0)
-            goto empty;
-    }
-    Py_INCREF(result);
-    return result;
-
-empty:
-    po->stopped = 1;
-    return NULL;
-}
-
-PyDoc_STRVAR(permutations_doc,
-"permutations(iterable[, r]) --> permutations object\n\
-\n\
-Return successive r-length permutations of elements in the iterable.\n\n\
-permutations(range(3), 2) --> (0,1), (0,2), (1,0), (1,2), (2,0), (2,1)");
-
-static PyTypeObject permutations_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.permutations",                   /* tp_name */
-    sizeof(permutationsobject),         /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)permutations_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    permutations_doc,                           /* tp_doc */
-    (traverseproc)permutations_traverse,        /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)permutations_next,            /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    permutations_new,                           /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* compress object ************************************************************/
-
-/* Equivalent to:
-
-    def compress(data, selectors):
-        "compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F"
-        return (d for d, s in izip(data, selectors) if s)
-*/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *data;
-    PyObject *selectors;
-} compressobject;
-
-static PyTypeObject compress_type;
-
-static PyObject *
-compress_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *seq1, *seq2;
-    PyObject *data=NULL, *selectors=NULL;
-    compressobject *lz;
-    static char *kwargs[] = {"data", "selectors", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO:compress", kwargs, &seq1, &seq2))
-        return NULL;
-
-    data = PyObject_GetIter(seq1);
-    if (data == NULL)
-        goto fail;
-    selectors = PyObject_GetIter(seq2);
-    if (selectors == NULL)
-        goto fail;
-
-    /* create compressobject structure */
-    lz = (compressobject *)type->tp_alloc(type, 0);
-    if (lz == NULL)
-        goto fail;
-    lz->data = data;
-    lz->selectors = selectors;
-    return (PyObject *)lz;
-
-fail:
-    Py_XDECREF(data);
-    Py_XDECREF(selectors);
-    return NULL;
-}
-
-static void
-compress_dealloc(compressobject *lz)
-{
-    PyObject_GC_UnTrack(lz);
-    Py_XDECREF(lz->data);
-    Py_XDECREF(lz->selectors);
-    Py_TYPE(lz)->tp_free(lz);
-}
-
-static int
-compress_traverse(compressobject *lz, visitproc visit, void *arg)
-{
-    Py_VISIT(lz->data);
-    Py_VISIT(lz->selectors);
-    return 0;
-}
-
-static PyObject *
-compress_next(compressobject *lz)
-{
-    PyObject *data = lz->data, *selectors = lz->selectors;
-    PyObject *datum, *selector;
-    PyObject *(*datanext)(PyObject *) = *Py_TYPE(data)->tp_iternext;
-    PyObject *(*selectornext)(PyObject *) = *Py_TYPE(selectors)->tp_iternext;
-    int ok;
-
-    while (1) {
-        /* Steps:  get datum, get selector, evaluate selector.
-           Order is important (to match the pure python version
-           in terms of which input gets a chance to raise an
-           exception first).
-        */
-
-        datum = datanext(data);
-        if (datum == NULL)
-            return NULL;
-
-        selector = selectornext(selectors);
-        if (selector == NULL) {
-            Py_DECREF(datum);
-            return NULL;
-        }
-
-        ok = PyObject_IsTrue(selector);
-        Py_DECREF(selector);
-        if (ok == 1)
-            return datum;
-        Py_DECREF(datum);
-        if (ok == -1)
-            return NULL;
-    }
-}
-
-PyDoc_STRVAR(compress_doc,
-"compress(data, selectors) --> iterator over selected data\n\
-\n\
-Return data elements corresponding to true selector elements.\n\
-Forms a shorter iterator from selected data elements using the\n\
-selectors to choose the data elements.");
-
-static PyTypeObject compress_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.compress",               /* tp_name */
-    sizeof(compressobject),             /* tp_basicsize */
-    0,                                                          /* tp_itemsize */
-    /* methods */
-    (destructor)compress_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                                                  /* tp_setattro */
-    0,                                                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,                    /* tp_flags */
-    compress_doc,                                       /* tp_doc */
-    (traverseproc)compress_traverse,            /* tp_traverse */
-    0,                                                                  /* tp_clear */
-    0,                                                                  /* tp_richcompare */
-    0,                                                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                                  /* tp_iter */
-    (iternextfunc)compress_next,        /* tp_iternext */
-    0,                                                                  /* tp_methods */
-    0,                                                                  /* tp_members */
-    0,                                                                  /* tp_getset */
-    0,                                                                  /* tp_base */
-    0,                                                                  /* tp_dict */
-    0,                                                                  /* tp_descr_get */
-    0,                                                                  /* tp_descr_set */
-    0,                                                                  /* tp_dictoffset */
-    0,                                                                  /* tp_init */
-    0,                                                                  /* tp_alloc */
-    compress_new,                                       /* tp_new */
-    PyObject_GC_Del,                                    /* tp_free */
-};
-
-
-/* ifilter object ************************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *func;
-    PyObject *it;
-} ifilterobject;
-
-static PyTypeObject ifilter_type;
-
-static PyObject *
-ifilter_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *func, *seq;
-    PyObject *it;
-    ifilterobject *lz;
-
-    if (type == &ifilter_type && !_PyArg_NoKeywords("ifilter()", kwds))
-        return NULL;
-
-    if (!PyArg_UnpackTuple(args, "ifilter", 2, 2, &func, &seq))
-        return NULL;
-
-    /* Get iterator. */
-    it = PyObject_GetIter(seq);
-    if (it == NULL)
-        return NULL;
-
-    /* create ifilterobject structure */
-    lz = (ifilterobject *)type->tp_alloc(type, 0);
-    if (lz == NULL) {
-        Py_DECREF(it);
-        return NULL;
-    }
-    Py_INCREF(func);
-    lz->func = func;
-    lz->it = it;
-
-    return (PyObject *)lz;
-}
-
-static void
-ifilter_dealloc(ifilterobject *lz)
-{
-    PyObject_GC_UnTrack(lz);
-    Py_XDECREF(lz->func);
-    Py_XDECREF(lz->it);
-    Py_TYPE(lz)->tp_free(lz);
-}
-
-static int
-ifilter_traverse(ifilterobject *lz, visitproc visit, void *arg)
-{
-    Py_VISIT(lz->it);
-    Py_VISIT(lz->func);
-    return 0;
-}
-
-static PyObject *
-ifilter_next(ifilterobject *lz)
-{
-    PyObject *item;
-    PyObject *it = lz->it;
-    long ok;
-    PyObject *(*iternext)(PyObject *);
-
-    iternext = *Py_TYPE(it)->tp_iternext;
-    for (;;) {
-        item = iternext(it);
-        if (item == NULL)
-            return NULL;
-
-        if (lz->func == Py_None || lz->func == (PyObject *)&PyBool_Type) {
-            ok = PyObject_IsTrue(item);
-        } else {
-            PyObject *good;
-            good = PyObject_CallFunctionObjArgs(lz->func,
-                                                item, NULL);
-            if (good == NULL) {
-                Py_DECREF(item);
-                return NULL;
-            }
-            ok = PyObject_IsTrue(good);
-            Py_DECREF(good);
-        }
-        if (ok)
-            return item;
-        Py_DECREF(item);
-    }
-}
-
-PyDoc_STRVAR(ifilter_doc,
-"ifilter(function or None, sequence) --> ifilter object\n\
-\n\
-Return those items of sequence for which function(item) is true.\n\
-If function is None, return the items that are true.");
-
-static PyTypeObject ifilter_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.ifilter",                /* tp_name */
-    sizeof(ifilterobject),              /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)ifilter_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    ifilter_doc,                        /* tp_doc */
-    (traverseproc)ifilter_traverse,     /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)ifilter_next,         /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    ifilter_new,                        /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* ifilterfalse object ************************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *func;
-    PyObject *it;
-} ifilterfalseobject;
-
-static PyTypeObject ifilterfalse_type;
-
-static PyObject *
-ifilterfalse_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *func, *seq;
-    PyObject *it;
-    ifilterfalseobject *lz;
-
-    if (type == &ifilterfalse_type &&
-        !_PyArg_NoKeywords("ifilterfalse()", kwds))
-        return NULL;
-
-    if (!PyArg_UnpackTuple(args, "ifilterfalse", 2, 2, &func, &seq))
-        return NULL;
-
-    /* Get iterator. */
-    it = PyObject_GetIter(seq);
-    if (it == NULL)
-        return NULL;
-
-    /* create ifilterfalseobject structure */
-    lz = (ifilterfalseobject *)type->tp_alloc(type, 0);
-    if (lz == NULL) {
-        Py_DECREF(it);
-        return NULL;
-    }
-    Py_INCREF(func);
-    lz->func = func;
-    lz->it = it;
-
-    return (PyObject *)lz;
-}
-
-static void
-ifilterfalse_dealloc(ifilterfalseobject *lz)
-{
-    PyObject_GC_UnTrack(lz);
-    Py_XDECREF(lz->func);
-    Py_XDECREF(lz->it);
-    Py_TYPE(lz)->tp_free(lz);
-}
-
-static int
-ifilterfalse_traverse(ifilterfalseobject *lz, visitproc visit, void *arg)
-{
-    Py_VISIT(lz->it);
-    Py_VISIT(lz->func);
-    return 0;
-}
-
-static PyObject *
-ifilterfalse_next(ifilterfalseobject *lz)
-{
-    PyObject *item;
-    PyObject *it = lz->it;
-    long ok;
-    PyObject *(*iternext)(PyObject *);
-
-    iternext = *Py_TYPE(it)->tp_iternext;
-    for (;;) {
-        item = iternext(it);
-        if (item == NULL)
-            return NULL;
-
-        if (lz->func == Py_None || lz->func == (PyObject *)&PyBool_Type) {
-            ok = PyObject_IsTrue(item);
-        } else {
-            PyObject *good;
-            good = PyObject_CallFunctionObjArgs(lz->func,
-                                                item, NULL);
-            if (good == NULL) {
-                Py_DECREF(item);
-                return NULL;
-            }
-            ok = PyObject_IsTrue(good);
-            Py_DECREF(good);
-        }
-        if (!ok)
-            return item;
-        Py_DECREF(item);
-    }
-}
-
-PyDoc_STRVAR(ifilterfalse_doc,
-"ifilterfalse(function or None, sequence) --> ifilterfalse object\n\
-\n\
-Return those items of sequence for which function(item) is false.\n\
-If function is None, return the items that are false.");
-
-static PyTypeObject ifilterfalse_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.ifilterfalse",           /* tp_name */
-    sizeof(ifilterfalseobject),         /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)ifilterfalse_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    ifilterfalse_doc,                   /* tp_doc */
-    (traverseproc)ifilterfalse_traverse,        /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)ifilterfalse_next,            /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    ifilterfalse_new,                   /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* count object ************************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    Py_ssize_t cnt;
-    PyObject *long_cnt;
-    PyObject *long_step;
-} countobject;
-
-/* Counting logic and invariants:
-
-fast_mode:  when cnt an integer < PY_SSIZE_T_MAX and no step is specified.
-
-    assert(cnt != PY_SSIZE_T_MAX && long_cnt == NULL && long_step==PyInt(1));
-    Advances with:  cnt += 1
-    When count hits Y_SSIZE_T_MAX, switch to slow_mode.
-
-slow_mode:  when cnt == PY_SSIZE_T_MAX, step is not int(1), or cnt is a float.
-
-    assert(cnt == PY_SSIZE_T_MAX && long_cnt != NULL && long_step != NULL);
-    All counting is done with python objects (no overflows or underflows).
-    Advances with:  long_cnt += long_step
-    Step may be zero -- effectively a slow version of repeat(cnt).
-    Either long_cnt or long_step may be a float, Fraction, or Decimal.
-*/
-
-static PyTypeObject count_type;
-
-static PyObject *
-count_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    countobject *lz;
-    int slow_mode = 0;
-    Py_ssize_t cnt = 0;
-    PyObject *long_cnt = NULL;
-    PyObject *long_step = NULL;
-    static char *kwlist[] = {"start", "step", 0};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|OO:count",
-                    kwlist, &long_cnt, &long_step))
-        return NULL;
-
-    if ((long_cnt != NULL && !PyNumber_Check(long_cnt)) ||
-        (long_step != NULL && !PyNumber_Check(long_step))) {
-                    PyErr_SetString(PyExc_TypeError, "a number is required");
-                    return NULL;
-    }
-
-    if (long_cnt != NULL) {
-        cnt = PyInt_AsSsize_t(long_cnt);
-        if ((cnt == -1 && PyErr_Occurred()) || !PyInt_Check(long_cnt)) {
-            PyErr_Clear();
-            slow_mode = 1;
-        }
-        Py_INCREF(long_cnt);
-    } else {
-        cnt = 0;
-        long_cnt = PyInt_FromLong(0);
-    }
-
-    /* If not specified, step defaults to 1 */
-    if (long_step == NULL) {
-        long_step = PyInt_FromLong(1);
-        if (long_step == NULL) {
-            Py_DECREF(long_cnt);
-            return NULL;
-        }
-    } else
-        Py_INCREF(long_step);
-
-    assert(long_cnt != NULL && long_step != NULL);
-
-    /* Fast mode only works when the step is 1 */
-    if (!PyInt_Check(long_step) ||
-        PyInt_AS_LONG(long_step) != 1) {
-            slow_mode = 1;
-    }
-
-    if (slow_mode)
-        cnt = PY_SSIZE_T_MAX;
-    else
-        Py_CLEAR(long_cnt);
-
-    assert((cnt != PY_SSIZE_T_MAX && long_cnt == NULL && !slow_mode) ||
-           (cnt == PY_SSIZE_T_MAX && long_cnt != NULL && slow_mode));
-    assert(slow_mode ||
-           (PyInt_Check(long_step) && PyInt_AS_LONG(long_step) == 1));
-
-    /* create countobject structure */
-    lz = (countobject *)type->tp_alloc(type, 0);
-    if (lz == NULL) {
-        Py_XDECREF(long_cnt);
-        return NULL;
-    }
-    lz->cnt = cnt;
-    lz->long_cnt = long_cnt;
-    lz->long_step = long_step;
-
-    return (PyObject *)lz;
-}
-
-static void
-count_dealloc(countobject *lz)
-{
-    PyObject_GC_UnTrack(lz);
-    Py_XDECREF(lz->long_cnt);
-    Py_XDECREF(lz->long_step);
-    Py_TYPE(lz)->tp_free(lz);
-}
-
-static int
-count_traverse(countobject *lz, visitproc visit, void *arg)
-{
-    Py_VISIT(lz->long_cnt);
-    Py_VISIT(lz->long_step);
-    return 0;
-}
-
-static PyObject *
-count_nextlong(countobject *lz)
-{
-    PyObject *long_cnt;
-    PyObject *stepped_up;
-
-    long_cnt = lz->long_cnt;
-    if (long_cnt == NULL) {
-        /* Switch to slow_mode */
-        long_cnt = PyInt_FromSsize_t(PY_SSIZE_T_MAX);
-        if (long_cnt == NULL)
-            return NULL;
-    }
-    assert(lz->cnt == PY_SSIZE_T_MAX && long_cnt != NULL);
-
-    stepped_up = PyNumber_Add(long_cnt, lz->long_step);
-    if (stepped_up == NULL)
-        return NULL;
-    lz->long_cnt = stepped_up;
-    return long_cnt;
-}
-
-static PyObject *
-count_next(countobject *lz)
-{
-    if (lz->cnt == PY_SSIZE_T_MAX)
-        return count_nextlong(lz);
-    return PyInt_FromSsize_t(lz->cnt++);
-}
-
-static PyObject *
-count_repr(countobject *lz)
-{
-    PyObject *cnt_repr, *step_repr = NULL;
-    PyObject *result = NULL;
-
-    if (lz->cnt != PY_SSIZE_T_MAX)
-                return PyString_FromFormat("count(%zd)", lz->cnt);
-
-    cnt_repr = PyObject_Repr(lz->long_cnt);
-    if (cnt_repr == NULL)
-        return NULL;
-
-    if (PyInt_Check(lz->long_step) && PyInt_AS_LONG(lz->long_step) == 1) {
-                    /* Don't display step when it is an integer equal to 1 */
-            result = PyString_FromFormat("count(%s)",
-                                                                     PyString_AS_STRING(cnt_repr));
-    } else {
-        step_repr = PyObject_Repr(lz->long_step);
-        if (step_repr != NULL)
-            result = PyString_FromFormat("count(%s, %s)",
-                                                                    PyString_AS_STRING(cnt_repr),
-                                                                    PyString_AS_STRING(step_repr));
-    }
-    Py_DECREF(cnt_repr);
-    Py_XDECREF(step_repr);
-    return result;
-}
-
-static PyObject *
-count_reduce(countobject *lz)
-{
-    if (lz->cnt == PY_SSIZE_T_MAX)
-        return Py_BuildValue("O(OO)", Py_TYPE(lz), lz->long_cnt, lz->long_step);
-    return Py_BuildValue("O(n)", Py_TYPE(lz), lz->cnt);
-}
-
-PyDoc_STRVAR(count_reduce_doc, "Return state information for pickling.");
-
-static PyMethodDef count_methods[] = {
-    {"__reduce__",      (PyCFunction)count_reduce,      METH_NOARGS,
-     count_reduce_doc},
-    {NULL,              NULL}   /* sentinel */
-};
-
-PyDoc_STRVAR(count_doc,
-                         "count(start=0, step=1) --> count object\n\
-\n\
-Return a count object whose .next() method returns consecutive values.\n\
-Equivalent to:\n\n\
-    def count(firstval=0, step=1):\n\
-    x = firstval\n\
-    while 1:\n\
-        yield x\n\
-        x += step\n");
-
-static PyTypeObject count_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.count",                  /* tp_name */
-    sizeof(countobject),                /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)count_dealloc,          /* tp_dealloc */
-    0,                                  /* tp_print */
-    0,                                  /* tp_getattr */
-    0,                                  /* tp_setattr */
-    0,                                  /* tp_compare */
-    (reprfunc)count_repr,               /* tp_repr */
-    0,                                  /* tp_as_number */
-    0,                                  /* tp_as_sequence */
-    0,                                  /* tp_as_mapping */
-    0,                                  /* tp_hash */
-    0,                                  /* tp_call */
-    0,                                  /* tp_str */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,                    /* tp_flags */
-    count_doc,                          /* tp_doc */
-    (traverseproc)count_traverse,                               /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)count_next,           /* tp_iternext */
-    count_methods,                              /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    count_new,                          /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* izip object ************************************************************/
-
-#include "Python.h"
-
-typedef struct {
-    PyObject_HEAD
-    Py_ssize_t          tuplesize;
-    PyObject *ittuple;                  /* tuple of iterators */
-    PyObject *result;
-} izipobject;
-
-static PyTypeObject izip_type;
-
-static PyObject *
-izip_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    izipobject *lz;
-    Py_ssize_t i;
-    PyObject *ittuple;  /* tuple of iterators */
-    PyObject *result;
-    Py_ssize_t tuplesize = PySequence_Length(args);
-
-    if (type == &izip_type && !_PyArg_NoKeywords("izip()", kwds))
-        return NULL;
-
-    /* args must be a tuple */
-    assert(PyTuple_Check(args));
-
-    /* obtain iterators */
-    ittuple = PyTuple_New(tuplesize);
-    if (ittuple == NULL)
-        return NULL;
-    for (i=0; i < tuplesize; ++i) {
-        PyObject *item = PyTuple_GET_ITEM(args, i);
-        PyObject *it = PyObject_GetIter(item);
-        if (it == NULL) {
-            if (PyErr_ExceptionMatches(PyExc_TypeError))
-                PyErr_Format(PyExc_TypeError,
-                    "izip argument #%zd must support iteration",
-                    i+1);
-            Py_DECREF(ittuple);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(ittuple, i, it);
-    }
-
-    /* create a result holder */
-    result = PyTuple_New(tuplesize);
-    if (result == NULL) {
-        Py_DECREF(ittuple);
-        return NULL;
-    }
-    for (i=0 ; i < tuplesize ; i++) {
-        Py_INCREF(Py_None);
-        PyTuple_SET_ITEM(result, i, Py_None);
-    }
-
-    /* create izipobject structure */
-    lz = (izipobject *)type->tp_alloc(type, 0);
-    if (lz == NULL) {
-        Py_DECREF(ittuple);
-        Py_DECREF(result);
-        return NULL;
-    }
-    lz->ittuple = ittuple;
-    lz->tuplesize = tuplesize;
-    lz->result = result;
-
-    return (PyObject *)lz;
-}
-
-static void
-izip_dealloc(izipobject *lz)
-{
-    PyObject_GC_UnTrack(lz);
-    Py_XDECREF(lz->ittuple);
-    Py_XDECREF(lz->result);
-    Py_TYPE(lz)->tp_free(lz);
-}
-
-static int
-izip_traverse(izipobject *lz, visitproc visit, void *arg)
-{
-    Py_VISIT(lz->ittuple);
-    Py_VISIT(lz->result);
-    return 0;
-}
-
-static PyObject *
-izip_next(izipobject *lz)
-{
-    Py_ssize_t i;
-    Py_ssize_t tuplesize = lz->tuplesize;
-    PyObject *result = lz->result;
-    PyObject *it;
-    PyObject *item;
-    PyObject *olditem;
-
-    if (tuplesize == 0)
-        return NULL;
-    if (Py_REFCNT(result) == 1) {
-        Py_INCREF(result);
-        for (i=0 ; i < tuplesize ; i++) {
-            it = PyTuple_GET_ITEM(lz->ittuple, i);
-            item = (*Py_TYPE(it)->tp_iternext)(it);
-            if (item == NULL) {
-                Py_DECREF(result);
-                return NULL;
-            }
-            olditem = PyTuple_GET_ITEM(result, i);
-            PyTuple_SET_ITEM(result, i, item);
-            Py_DECREF(olditem);
-        }
-    } else {
-        result = PyTuple_New(tuplesize);
-        if (result == NULL)
-            return NULL;
-        for (i=0 ; i < tuplesize ; i++) {
-            it = PyTuple_GET_ITEM(lz->ittuple, i);
-            item = (*Py_TYPE(it)->tp_iternext)(it);
-            if (item == NULL) {
-                Py_DECREF(result);
-                return NULL;
-            }
-            PyTuple_SET_ITEM(result, i, item);
-        }
-    }
-    return result;
-}
-
-PyDoc_STRVAR(izip_doc,
-"izip(iter1 [,iter2 [...]]) --> izip object\n\
-\n\
-Return a izip object whose .next() method returns a tuple where\n\
-the i-th element comes from the i-th iterable argument.  The .next()\n\
-method continues until the shortest iterable in the argument sequence\n\
-is exhausted and then it raises StopIteration.  Works like the zip()\n\
-function but consumes less memory by returning an iterator instead of\n\
-a list.");
-
-static PyTypeObject izip_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.izip",                   /* tp_name */
-    sizeof(izipobject),                 /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)izip_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    izip_doc,                           /* tp_doc */
-    (traverseproc)izip_traverse,    /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)izip_next,            /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    izip_new,                           /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/* repeat object ************************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *element;
-    Py_ssize_t cnt;
-} repeatobject;
-
-static PyTypeObject repeat_type;
-
-static PyObject *
-repeat_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    repeatobject *ro;
-    PyObject *element;
-    Py_ssize_t cnt = -1;
-    static char *kwargs[] = {"object", "times", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|n:repeat", kwargs,
-                                     &element, &cnt))
-        return NULL;
-
-    if (PyTuple_Size(args) == 2 && cnt < 0)
-        cnt = 0;
-
-    ro = (repeatobject *)type->tp_alloc(type, 0);
-    if (ro == NULL)
-        return NULL;
-    Py_INCREF(element);
-    ro->element = element;
-    ro->cnt = cnt;
-    return (PyObject *)ro;
-}
-
-static void
-repeat_dealloc(repeatobject *ro)
-{
-    PyObject_GC_UnTrack(ro);
-    Py_XDECREF(ro->element);
-    Py_TYPE(ro)->tp_free(ro);
-}
-
-static int
-repeat_traverse(repeatobject *ro, visitproc visit, void *arg)
-{
-    Py_VISIT(ro->element);
-    return 0;
-}
-
-static PyObject *
-repeat_next(repeatobject *ro)
-{
-    if (ro->cnt == 0)
-        return NULL;
-    if (ro->cnt > 0)
-        ro->cnt--;
-    Py_INCREF(ro->element);
-    return ro->element;
-}
-
-static PyObject *
-repeat_repr(repeatobject *ro)
-{
-    PyObject *result, *objrepr;
-
-    objrepr = PyObject_Repr(ro->element);
-    if (objrepr == NULL)
-        return NULL;
-
-    if (ro->cnt == -1)
-        result = PyString_FromFormat("repeat(%s)",
-            PyString_AS_STRING(objrepr));
-    else
-        result = PyString_FromFormat("repeat(%s, %zd)",
-            PyString_AS_STRING(objrepr), ro->cnt);
-    Py_DECREF(objrepr);
-    return result;
-}
-
-static PyObject *
-repeat_len(repeatobject *ro)
-{
-    if (ro->cnt == -1) {
-        PyErr_SetString(PyExc_TypeError, "len() of unsized object");
-        return NULL;
-    }
-    return PyInt_FromSize_t(ro->cnt);
-}
-
-PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
-
-static PyMethodDef repeat_methods[] = {
-    {"__length_hint__", (PyCFunction)repeat_len, METH_NOARGS, length_hint_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyDoc_STRVAR(repeat_doc,
-"repeat(object [,times]) -> create an iterator which returns the object\n\
-for the specified number of times.  If not specified, returns the object\n\
-endlessly.");
-
-static PyTypeObject repeat_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.repeat",                 /* tp_name */
-    sizeof(repeatobject),               /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)repeat_dealloc,         /* tp_dealloc */
-    0,                                  /* tp_print */
-    0,                                  /* tp_getattr */
-    0,                                  /* tp_setattr */
-    0,                                  /* tp_compare */
-    (reprfunc)repeat_repr,              /* tp_repr */
-    0,                                  /* tp_as_number */
-    0,                                  /* tp_as_sequence */
-    0,                                  /* tp_as_mapping */
-    0,                                  /* tp_hash */
-    0,                                  /* tp_call */
-    0,                                  /* tp_str */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    repeat_doc,                         /* tp_doc */
-    (traverseproc)repeat_traverse,      /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)repeat_next,          /* tp_iternext */
-    repeat_methods,                     /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    repeat_new,                         /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-/* iziplongest object ************************************************************/
-
-#include "Python.h"
-
-typedef struct {
-    PyObject_HEAD
-    Py_ssize_t tuplesize;
-    Py_ssize_t numactive;
-    PyObject *ittuple;                  /* tuple of iterators */
-    PyObject *result;
-    PyObject *fillvalue;
-} iziplongestobject;
-
-static PyTypeObject iziplongest_type;
-
-static PyObject *
-izip_longest_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    iziplongestobject *lz;
-    Py_ssize_t i;
-    PyObject *ittuple;  /* tuple of iterators */
-    PyObject *result;
-    PyObject *fillvalue = Py_None;
-    Py_ssize_t tuplesize = PySequence_Length(args);
-
-    if (kwds != NULL && PyDict_CheckExact(kwds) && PyDict_Size(kwds) > 0) {
-        fillvalue = PyDict_GetItemString(kwds, "fillvalue");
-        if (fillvalue == NULL  ||  PyDict_Size(kwds) > 1) {
-            PyErr_SetString(PyExc_TypeError,
-                "izip_longest() got an unexpected keyword argument");
-            return NULL;
-        }
-    }
-
-    /* args must be a tuple */
-    assert(PyTuple_Check(args));
-
-    /* obtain iterators */
-    ittuple = PyTuple_New(tuplesize);
-    if (ittuple == NULL)
-        return NULL;
-    for (i=0; i < tuplesize; ++i) {
-        PyObject *item = PyTuple_GET_ITEM(args, i);
-        PyObject *it = PyObject_GetIter(item);
-        if (it == NULL) {
-            if (PyErr_ExceptionMatches(PyExc_TypeError))
-                PyErr_Format(PyExc_TypeError,
-                    "izip_longest argument #%zd must support iteration",
-                    i+1);
-            Py_DECREF(ittuple);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(ittuple, i, it);
-    }
-
-    /* create a result holder */
-    result = PyTuple_New(tuplesize);
-    if (result == NULL) {
-        Py_DECREF(ittuple);
-        return NULL;
-    }
-    for (i=0 ; i < tuplesize ; i++) {
-        Py_INCREF(Py_None);
-        PyTuple_SET_ITEM(result, i, Py_None);
-    }
-
-    /* create iziplongestobject structure */
-    lz = (iziplongestobject *)type->tp_alloc(type, 0);
-    if (lz == NULL) {
-        Py_DECREF(ittuple);
-        Py_DECREF(result);
-        return NULL;
-    }
-    lz->ittuple = ittuple;
-    lz->tuplesize = tuplesize;
-    lz->numactive = tuplesize;
-    lz->result = result;
-    Py_INCREF(fillvalue);
-    lz->fillvalue = fillvalue;
-    return (PyObject *)lz;
-}
-
-static void
-izip_longest_dealloc(iziplongestobject *lz)
-{
-    PyObject_GC_UnTrack(lz);
-    Py_XDECREF(lz->ittuple);
-    Py_XDECREF(lz->result);
-    Py_XDECREF(lz->fillvalue);
-    Py_TYPE(lz)->tp_free(lz);
-}
-
-static int
-izip_longest_traverse(iziplongestobject *lz, visitproc visit, void *arg)
-{
-    Py_VISIT(lz->ittuple);
-    Py_VISIT(lz->result);
-    Py_VISIT(lz->fillvalue);
-    return 0;
-}
-
-static PyObject *
-izip_longest_next(iziplongestobject *lz)
-{
-    Py_ssize_t i;
-    Py_ssize_t tuplesize = lz->tuplesize;
-    PyObject *result = lz->result;
-    PyObject *it;
-    PyObject *item;
-    PyObject *olditem;
-
-    if (tuplesize == 0)
-        return NULL;
-    if (lz->numactive == 0)
-        return NULL;
-    if (Py_REFCNT(result) == 1) {
-        Py_INCREF(result);
-        for (i=0 ; i < tuplesize ; i++) {
-            it = PyTuple_GET_ITEM(lz->ittuple, i);
-            if (it == NULL) {
-                Py_INCREF(lz->fillvalue);
-                item = lz->fillvalue;
-            } else {
-                item = PyIter_Next(it);
-                if (item == NULL) {
-                    lz->numactive -= 1;
-                    if (lz->numactive == 0 || PyErr_Occurred()) {
-                        lz->numactive = 0;
-                        Py_DECREF(result);
-                        return NULL;
-                    } else {
-                        Py_INCREF(lz->fillvalue);
-                        item = lz->fillvalue;
-                        PyTuple_SET_ITEM(lz->ittuple, i, NULL);
-                        Py_DECREF(it);
-                    }
-                }
-            }
-            olditem = PyTuple_GET_ITEM(result, i);
-            PyTuple_SET_ITEM(result, i, item);
-            Py_DECREF(olditem);
-        }
-    } else {
-        result = PyTuple_New(tuplesize);
-        if (result == NULL)
-            return NULL;
-        for (i=0 ; i < tuplesize ; i++) {
-            it = PyTuple_GET_ITEM(lz->ittuple, i);
-            if (it == NULL) {
-                Py_INCREF(lz->fillvalue);
-                item = lz->fillvalue;
-            } else {
-                item = PyIter_Next(it);
-                if (item == NULL) {
-                    lz->numactive -= 1;
-                    if (lz->numactive == 0 || PyErr_Occurred()) {
-                        lz->numactive = 0;
-                        Py_DECREF(result);
-                        return NULL;
-                    } else {
-                        Py_INCREF(lz->fillvalue);
-                        item = lz->fillvalue;
-                        PyTuple_SET_ITEM(lz->ittuple, i, NULL);
-                        Py_DECREF(it);
-                    }
-                }
-            }
-            PyTuple_SET_ITEM(result, i, item);
-        }
-    }
-    return result;
-}
-
-PyDoc_STRVAR(izip_longest_doc,
-"izip_longest(iter1 [,iter2 [...]], [fillvalue=None]) --> izip_longest object\n\
-\n\
-Return an izip_longest object whose .next() method returns a tuple where\n\
-the i-th element comes from the i-th iterable argument.  The .next()\n\
-method continues until the longest iterable in the argument sequence\n\
-is exhausted and then it raises StopIteration.  When the shorter iterables\n\
-are exhausted, the fillvalue is substituted in their place.  The fillvalue\n\
-defaults to None or can be specified by a keyword argument.\n\
-");
-
-static PyTypeObject iziplongest_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "itertools.izip_longest",           /* tp_name */
-    sizeof(iziplongestobject),          /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)izip_longest_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    izip_longest_doc,                           /* tp_doc */
-    (traverseproc)izip_longest_traverse,    /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)izip_longest_next,            /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    izip_longest_new,                           /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-/* module level code ********************************************************/
-
-PyDoc_STRVAR(module_doc,
-"Functional tools for creating and using iterators.\n\
-\n\
-Infinite iterators:\n\
-count([n]) --> n, n+1, n+2, ...\n\
-cycle(p) --> p0, p1, ... plast, p0, p1, ...\n\
-repeat(elem [,n]) --> elem, elem, elem, ... endlessly or up to n times\n\
-\n\
-Iterators terminating on the shortest input sequence:\n\
-chain(p, q, ...) --> p0, p1, ... plast, q0, q1, ... \n\
-compress(data, selectors) --> (d[0] if s[0]), (d[1] if s[1]), ...\n\
-dropwhile(pred, seq) --> seq[n], seq[n+1], starting when pred fails\n\
-groupby(iterable[, keyfunc]) --> sub-iterators grouped by value of keyfunc(v)\n\
-ifilter(pred, seq) --> elements of seq where pred(elem) is True\n\
-ifilterfalse(pred, seq) --> elements of seq where pred(elem) is False\n\
-islice(seq, [start,] stop [, step]) --> elements from\n\
-       seq[start:stop:step]\n\
-imap(fun, p, q, ...) --> fun(p0, q0), fun(p1, q1), ...\n\
-starmap(fun, seq) --> fun(*seq[0]), fun(*seq[1]), ...\n\
-tee(it, n=2) --> (it1, it2 , ... itn) splits one iterator into n\n\
-takewhile(pred, seq) --> seq[0], seq[1], until pred fails\n\
-izip(p, q, ...) --> (p[0], q[0]), (p[1], q[1]), ... \n\
-izip_longest(p, q, ...) --> (p[0], q[0]), (p[1], q[1]), ... \n\
-\n\
-Combinatoric generators:\n\
-product(p, q, ... [repeat=1]) --> cartesian product\n\
-permutations(p[, r])\n\
-combinations(p, r)\n\
-combinations_with_replacement(p, r)\n\
-");
-
-
-static PyMethodDef module_methods[] = {
-    {"tee",     (PyCFunction)tee,       METH_VARARGS, tee_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyMODINIT_FUNC
-inititertools(void)
-{
-    int i;
-    PyObject *m;
-    char *name;
-    PyTypeObject *typelist[] = {
-        &combinations_type,
-        &cwr_type,
-        &cycle_type,
-        &dropwhile_type,
-        &takewhile_type,
-        &islice_type,
-        &starmap_type,
-        &imap_type,
-        &chain_type,
-        &compress_type,
-        &ifilter_type,
-        &ifilterfalse_type,
-        &count_type,
-        &izip_type,
-        &iziplongest_type,
-        &permutations_type,
-        &product_type,
-        &repeat_type,
-        &groupby_type,
-        NULL
-    };
-
-    Py_TYPE(&teedataobject_type) = &PyType_Type;
-    m = Py_InitModule3("itertools", module_methods, module_doc);
-    if (m == NULL)
-        return;
-
-    for (i=0 ; typelist[i] != NULL ; i++) {
-        if (PyType_Ready(typelist[i]) < 0)
-            return;
-        name = strchr(typelist[i]->tp_name, '.');
-        assert (name != NULL);
-        Py_INCREF(typelist[i]);
-        PyModule_AddObject(m, name+1, (PyObject *)typelist[i]);
-    }
-
-    if (PyType_Ready(&teedataobject_type) < 0)
-        return;
-    if (PyType_Ready(&tee_type) < 0)
-        return;
-    if (PyType_Ready(&_grouper_type) < 0)
-        return;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/main.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/main.c
deleted file mode 100644
index 3a14ce9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/main.c
+++ /dev/null
@@ -1,663 +0,0 @@
-/* Python interpreter main program */
-
-#include "Python.h"
-#include "osdefs.h"
-#include "code.h" /* For CO_FUTURE_DIVISION */
-#include "import.h"
-
-#ifdef __VMS
-#include <unixlib.h>
-#endif
-
-#if defined(MS_WINDOWS) || defined(__CYGWIN__)
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#endif
-
-#if (defined(PYOS_OS2) && !defined(PYCC_GCC)) || defined(MS_WINDOWS)
-#define PYTHONHOMEHELP "<prefix>\\lib"
-#else
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-#define PYTHONHOMEHELP "<prefix>/Lib"
-#else
-#define PYTHONHOMEHELP "<prefix>/pythonX.X"
-#endif
-#endif
-
-#include "pygetopt.h"
-
-#define COPYRIGHT \
-    "Type \"help\", \"copyright\", \"credits\" or \"license\" " \
-    "for more information."
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* For Py_GetArgcArgv(); set by main() */
-static char **orig_argv;
-static int  orig_argc;
-
-/* command line options */
-#define BASE_OPTS "3bBc:dEhiJm:OQ:sStuUvVW:xX?"
-
-#ifndef RISCOS
-#define PROGRAM_OPTS BASE_OPTS
-#else /*RISCOS*/
-/* extra option saying that we are running under a special task window
-   frontend; especially my_readline will behave different */
-#define PROGRAM_OPTS BASE_OPTS "w"
-/* corresponding flag */
-extern int Py_RISCOSWimpFlag;
-#endif /*RISCOS*/
-
-/* Short usage message (with %s for argv0) */
-static char *usage_line =
-"usage: %s [option] ... [-c cmd | -m mod | file | -] [arg] ...\n";
-
-/* Long usage message, split into parts < 512 bytes */
-static char *usage_1 = "\
-Options and arguments (and corresponding environment variables):\n\
--B     : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x\n\
--c cmd : program passed in as string (terminates option list)\n\
--d     : debug output from parser; also PYTHONDEBUG=x\n\
--E     : ignore PYTHON* environment variables (such as PYTHONPATH)\n\
--h     : print this help message and exit (also --help)\n\
--i     : inspect interactively after running script; forces a prompt even\n\
-";
-static char *usage_2 = "\
-         if stdin does not appear to be a terminal; also PYTHONINSPECT=x\n\
--m mod : run library module as a script (terminates option list)\n\
--O     : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x\n\
--OO    : remove doc-strings in addition to the -O optimizations\n\
--Q arg : division options: -Qold (default), -Qwarn, -Qwarnall, -Qnew\n\
--s     : don't add user site directory to sys.path; also PYTHONNOUSERSITE\n\
--S     : don't imply 'import site' on initialization\n\
--t     : issue warnings about inconsistent tab usage (-tt: issue errors)\n\
-";
-static char *usage_3 = "\
--u     : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x\n\
-         see man page for details on internal buffering relating to '-u'\n\
--v     : verbose (trace import statements); also PYTHONVERBOSE=x\n\
-         can be supplied multiple times to increase verbosity\n\
--V     : print the Python version number and exit (also --version)\n\
--W arg : warning control; arg is action:message:category:module:lineno\n\
-         also PYTHONWARNINGS=arg\n\
--x     : skip first line of source, allowing use of non-Unix forms of #!cmd\n\
-";
-static char *usage_4 = "\
--3     : warn about Python 3.x incompatibilities that 2to3 cannot trivially fix\n\
-file   : program read from script file\n\
--      : program read from stdin (default; interactive mode if a tty)\n\
-arg ...: arguments passed to program in sys.argv[1:]\n\n\
-Other environment variables:\n\
-PYTHONSTARTUP: file executed on interactive startup (no default)\n\
-PYTHONPATH   : '%c'-separated list of directories prefixed to the\n\
-               default module search path.  The result is sys.path.\n\
-";
-static char *usage_5 = "\
-PYTHONHOME   : alternate <prefix> directory (or <prefix>%c<exec_prefix>).\n\
-               The default module search path uses %s.\n\
-PYTHONCASEOK : ignore case in 'import' statements (Windows).\n\
-PYTHONIOENCODING: Encoding[:errors] used for stdin/stdout/stderr.\n\
-";
-
-
-static int
-usage(int exitcode, char* program)
-{
-    FILE *f = exitcode ? stderr : stdout;
-
-    fprintf(f, usage_line, program);
-    if (exitcode)
-        fprintf(f, "Try `python -h' for more information.\n");
-    else {
-        fputs(usage_1, f);
-        fputs(usage_2, f);
-        fputs(usage_3, f);
-        fprintf(f, usage_4, DELIM);
-        fprintf(f, usage_5, DELIM, PYTHONHOMEHELP);
-    }
-#if defined(__VMS)
-    if (exitcode == 0) {
-        /* suppress 'error' message */
-        return 1;
-    }
-    else {
-        /* STS$M_INHIB_MSG + SS$_ABORT */
-        return 0x1000002c;
-    }
-#else
-    return exitcode;
-#endif
-    /*NOTREACHED*/
-}
-
-static void RunStartupFile(PyCompilerFlags *cf)
-{
-    char *startup = Py_GETENV("PYTHONSTARTUP");
-    if (startup != NULL && startup[0] != '\0') {
-        FILE *fp = fopen(startup, "r");
-        if (fp != NULL) {
-            (void) PyRun_SimpleFileExFlags(fp, startup, 0, cf);
-            PyErr_Clear();
-            fclose(fp);
-           } else {
-                    int save_errno;
-                    save_errno = errno;
-                    PySys_WriteStderr("Could not open PYTHONSTARTUP\n");
-                    errno = save_errno;
-                    PyErr_SetFromErrnoWithFilename(PyExc_IOError,
-                                                   startup);
-                    PyErr_Print();
-                    PyErr_Clear();
-        }
-    }
-}
-
-
-static int RunModule(char *module, int set_argv0)
-{
-    PyObject *runpy, *runmodule, *runargs, *result;
-    runpy = PyImport_ImportModule("runpy");
-    if (runpy == NULL) {
-        fprintf(stderr, "Could not import runpy module\n");
-        return -1;
-    }
-    runmodule = PyObject_GetAttrString(runpy, "_run_module_as_main");
-    if (runmodule == NULL) {
-        fprintf(stderr, "Could not access runpy._run_module_as_main\n");
-        Py_DECREF(runpy);
-        return -1;
-    }
-    runargs = Py_BuildValue("(si)", module, set_argv0);
-    if (runargs == NULL) {
-        fprintf(stderr,
-            "Could not create arguments for runpy._run_module_as_main\n");
-        Py_DECREF(runpy);
-        Py_DECREF(runmodule);
-        return -1;
-    }
-    result = PyObject_Call(runmodule, runargs, NULL);
-    if (result == NULL) {
-        PyErr_Print();
-    }
-    Py_DECREF(runpy);
-    Py_DECREF(runmodule);
-    Py_DECREF(runargs);
-    if (result == NULL) {
-        return -1;
-    }
-    Py_DECREF(result);
-    return 0;
-}
-
-static int RunMainFromImporter(char *filename)
-{
-    PyObject *argv0 = NULL, *importer = NULL;
-
-    if ((argv0 = PyString_FromString(filename)) &&
-        (importer = PyImport_GetImporter(argv0)) &&
-        (importer->ob_type != &PyNullImporter_Type))
-    {
-             /* argv0 is usable as an import source, so
-                    put it in sys.path[0] and import __main__ */
-        PyObject *sys_path = NULL;
-        if ((sys_path = PySys_GetObject("path")) &&
-            !PyList_SetItem(sys_path, 0, argv0))
-        {
-            Py_INCREF(argv0);
-            Py_DECREF(importer);
-            sys_path = NULL;
-            return RunModule("__main__", 0) != 0;
-        }
-    }
-    Py_XDECREF(argv0);
-    Py_XDECREF(importer);
-    if (PyErr_Occurred()) {
-        PyErr_Print();
-        return 1;
-    }
-    return -1;
-}
-
-
-/* Main program */
-
-int
-Py_Main(int argc, char **argv)
-{
-    int c;
-    int sts;
-    char *command = NULL;
-    char *filename = NULL;
-    char *module = NULL;
-    FILE *fp = stdin;
-    char *p;
-    int unbuffered = 0;
-    int skipfirstline = 0;
-    int stdin_is_interactive = 0;
-    int help = 0;
-    int version = 0;
-    int saw_unbuffered_flag = 0;
-    PyCompilerFlags cf;
-
-    cf.cf_flags = 0;
-
-    orig_argc = argc;           /* For Py_GetArgcArgv() */
-    orig_argv = argv;
-
-#ifdef RISCOS
-    Py_RISCOSWimpFlag = 0;
-#endif
-
-    PySys_ResetWarnOptions();
-
-    while ((c = _PyOS_GetOpt(argc, argv, PROGRAM_OPTS)) != EOF) {
-        if (c == 'c') {
-            /* -c is the last option; following arguments
-               that look like options are left for the
-               command to interpret. */
-            command = (char *)malloc(strlen(_PyOS_optarg) + 2);
-            if (command == NULL)
-                Py_FatalError(
-                   "not enough memory to copy -c argument");
-            strcpy(command, _PyOS_optarg);
-            strcat(command, "\n");
-            break;
-        }
-
-        if (c == 'm') {
-            /* -m is the last option; following arguments
-               that look like options are left for the
-               module to interpret. */
-            module = (char *)malloc(strlen(_PyOS_optarg) + 2);
-            if (module == NULL)
-                Py_FatalError(
-                   "not enough memory to copy -m argument");
-            strcpy(module, _PyOS_optarg);
-            break;
-        }
-
-        switch (c) {
-        case 'b':
-            Py_BytesWarningFlag++;
-            break;
-
-        case 'd':
-            Py_DebugFlag++;
-            break;
-
-        case '3':
-            Py_Py3kWarningFlag++;
-            if (!Py_DivisionWarningFlag)
-                Py_DivisionWarningFlag = 1;
-            break;
-
-        case 'Q':
-            if (strcmp(_PyOS_optarg, "old") == 0) {
-                Py_DivisionWarningFlag = 0;
-                break;
-            }
-            if (strcmp(_PyOS_optarg, "warn") == 0) {
-                Py_DivisionWarningFlag = 1;
-                break;
-            }
-            if (strcmp(_PyOS_optarg, "warnall") == 0) {
-                Py_DivisionWarningFlag = 2;
-                break;
-            }
-            if (strcmp(_PyOS_optarg, "new") == 0) {
-                /* This only affects __main__ */
-                cf.cf_flags |= CO_FUTURE_DIVISION;
-                /* And this tells the eval loop to treat
-                   BINARY_DIVIDE as BINARY_TRUE_DIVIDE */
-                _Py_QnewFlag = 1;
-                break;
-            }
-            fprintf(stderr,
-                "-Q option should be `-Qold', "
-                "`-Qwarn', `-Qwarnall', or `-Qnew' only\n");
-            return usage(2, argv[0]);
-            /* NOTREACHED */
-
-        case 'i':
-            Py_InspectFlag++;
-            Py_InteractiveFlag++;
-            break;
-
-        /* case 'J': reserved for Jython */
-
-        case 'O':
-            Py_OptimizeFlag++;
-            break;
-
-        case 'B':
-            Py_DontWriteBytecodeFlag++;
-            break;
-
-        case 's':
-            Py_NoUserSiteDirectory++;
-            break;
-
-        case 'S':
-            Py_NoSiteFlag++;
-            break;
-
-        case 'E':
-            Py_IgnoreEnvironmentFlag++;
-            break;
-
-        case 't':
-            Py_TabcheckFlag++;
-            break;
-
-        case 'u':
-            unbuffered++;
-            saw_unbuffered_flag = 1;
-            break;
-
-        case 'v':
-            Py_VerboseFlag++;
-            break;
-
-#ifdef RISCOS
-        case 'w':
-            Py_RISCOSWimpFlag = 1;
-            break;
-#endif
-
-        case 'x':
-            skipfirstline = 1;
-            break;
-
-        /* case 'X': reserved for implementation-specific arguments */
-
-        case 'U':
-            Py_UnicodeFlag++;
-            break;
-        case 'h':
-        case '?':
-            help++;
-            break;
-        case 'V':
-            version++;
-            break;
-
-        case 'W':
-            PySys_AddWarnOption(_PyOS_optarg);
-            break;
-
-        /* This space reserved for other options */
-
-        default:
-            return usage(2, argv[0]);
-            /*NOTREACHED*/
-
-        }
-    }
-
-    if (help)
-        return usage(0, argv[0]);
-
-    if (version) {
-        fprintf(stderr, "Python %s\n", PY_VERSION);
-        return 0;
-    }
-
-    if (Py_Py3kWarningFlag && !Py_TabcheckFlag)
-        /* -3 implies -t (but not -tt) */
-        Py_TabcheckFlag = 1;
-
-    if (!Py_InspectFlag &&
-        (p = Py_GETENV("PYTHONINSPECT")) && *p != '\0')
-        Py_InspectFlag = 1;
-    if (!saw_unbuffered_flag &&
-        (p = Py_GETENV("PYTHONUNBUFFERED")) && *p != '\0')
-        unbuffered = 1;
-
-    if (!Py_NoUserSiteDirectory &&
-        (p = Py_GETENV("PYTHONNOUSERSITE")) && *p != '\0')
-        Py_NoUserSiteDirectory = 1;
-
-    if ((p = Py_GETENV("PYTHONWARNINGS")) && *p != '\0') {
-        char *buf, *warning;
-
-        buf = (char *)malloc(strlen(p) + 1);
-        if (buf == NULL)
-            Py_FatalError(
-               "not enough memory to copy PYTHONWARNINGS");
-        strcpy(buf, p);
-        for (warning = strtok(buf, ",");
-             warning != NULL;
-             warning = strtok(NULL, ","))
-            PySys_AddWarnOption(warning);
-        free(buf);
-    }
-
-    if (command == NULL && module == NULL && _PyOS_optind < argc &&
-        strcmp(argv[_PyOS_optind], "-") != 0)
-    {
-#ifdef __VMS
-        filename = decc$translate_vms(argv[_PyOS_optind]);
-        if (filename == (char *)0 || filename == (char *)-1)
-            filename = argv[_PyOS_optind];
-
-#else
-        filename = argv[_PyOS_optind];
-#endif
-    }
-
-    stdin_is_interactive = Py_FdIsInteractive(stdin, (char *)0);
-
-    if (unbuffered) {
-#if defined(MS_WINDOWS) || defined(__CYGWIN__)
-        _setmode(fileno(stdin), O_BINARY);
-        _setmode(fileno(stdout), O_BINARY);
-#endif
-#ifdef HAVE_SETVBUF
-        setvbuf(stdin,  (char *)NULL, _IONBF, BUFSIZ);
-        setvbuf(stdout, (char *)NULL, _IONBF, BUFSIZ);
-        setvbuf(stderr, (char *)NULL, _IONBF, BUFSIZ);
-#else /* !HAVE_SETVBUF */
-        setbuf(stdin,  (char *)NULL);
-        setbuf(stdout, (char *)NULL);
-        setbuf(stderr, (char *)NULL);
-#endif /* !HAVE_SETVBUF */
-    }
-    else if (Py_InteractiveFlag) {
-#ifdef MS_WINDOWS
-        /* Doesn't have to have line-buffered -- use unbuffered */
-        /* Any set[v]buf(stdin, ...) screws up Tkinter :-( */
-        setvbuf(stdout, (char *)NULL, _IONBF, BUFSIZ);
-#else /* !MS_WINDOWS */
-#ifdef HAVE_SETVBUF
-        setvbuf(stdin,  (char *)NULL, _IOLBF, BUFSIZ);
-        setvbuf(stdout, (char *)NULL, _IOLBF, BUFSIZ);
-#endif /* HAVE_SETVBUF */
-#endif /* !MS_WINDOWS */
-        /* Leave stderr alone - it should be unbuffered anyway. */
-    }
-#ifdef __VMS
-    else {
-        setvbuf (stdout, (char *)NULL, _IOLBF, BUFSIZ);
-    }
-#endif /* __VMS */
-
-#ifdef __APPLE__
-    /* On MacOS X, when the Python interpreter is embedded in an
-       application bundle, it gets executed by a bootstrapping script
-       that does os.execve() with an argv[0] that's different from the
-       actual Python executable. This is needed to keep the Finder happy,
-       or rather, to work around Apple's overly strict requirements of
-       the process name. However, we still need a usable sys.executable,
-       so the actual executable path is passed in an environment variable.
-       See Lib/plat-mac/bundlebuiler.py for details about the bootstrap
-       script. */
-    if ((p = Py_GETENV("PYTHONEXECUTABLE")) && *p != '\0')
-        Py_SetProgramName(p);
-    else
-        Py_SetProgramName(argv[0]);
-#else
-    Py_SetProgramName(argv[0]);
-#endif
-    Py_Initialize();
-
-    if (Py_VerboseFlag ||
-        (command == NULL && filename == NULL && module == NULL && stdin_is_interactive)) {
-        fprintf(stderr, "Python %s on %s\n",
-            Py_GetVersion(), Py_GetPlatform());
-        if (!Py_NoSiteFlag)
-            fprintf(stderr, "%s\n", COPYRIGHT);
-    }
-
-    if (command != NULL) {
-        /* Backup _PyOS_optind and force sys.argv[0] = '-c' */
-        _PyOS_optind--;
-        argv[_PyOS_optind] = "-c";
-    }
-
-    if (module != NULL) {
-        /* Backup _PyOS_optind and force sys.argv[0] = '-c'
-           so that PySys_SetArgv correctly sets sys.path[0] to ''
-           rather than looking for a file called "-m". See
-           tracker issue #8202 for details. */
-        _PyOS_optind--;
-        argv[_PyOS_optind] = "-c";
-    }
-
-    PySys_SetArgv(argc-_PyOS_optind, argv+_PyOS_optind);
-
-    if ((Py_InspectFlag || (command == NULL && filename == NULL && module == NULL)) &&
-        isatty(fileno(stdin))) {
-        PyObject *v;
-        v = PyImport_ImportModule("readline");
-        if (v == NULL)
-            PyErr_Clear();
-        else
-            Py_DECREF(v);
-    }
-
-    if (command) {
-        sts = PyRun_SimpleStringFlags(command, &cf) != 0;
-        free(command);
-    } else if (module) {
-        sts = RunModule(module, 1);
-        free(module);
-    }
-    else {
-
-        if (filename == NULL && stdin_is_interactive) {
-            Py_InspectFlag = 0; /* do exit on SystemExit */
-            RunStartupFile(&cf);
-        }
-        /* XXX */
-
-        sts = -1;               /* keep track of whether we've already run __main__ */
-
-        if (filename != NULL) {
-            sts = RunMainFromImporter(filename);
-        }
-
-        if (sts==-1 && filename!=NULL) {
-            if ((fp = fopen(filename, "r")) == NULL) {
-                fprintf(stderr, "%s: can't open file '%s': [Errno %d] %s\n",
-                    argv[0], filename, errno, strerror(errno));
-
-                return 2;
-            }
-            else if (skipfirstline) {
-                int ch;
-                /* Push back first newline so line numbers
-                   remain the same */
-                while ((ch = getc(fp)) != EOF) {
-                    if (ch == '\n') {
-                        (void)ungetc(ch, fp);
-                        break;
-                    }
-                }
-            }
-            {
-                /* XXX: does this work on Win/Win64? (see posix_fstat) */
-                struct stat sb;
-                if (fstat(fileno(fp), &sb) == 0 &&
-                    S_ISDIR(sb.st_mode)) {
-                    fprintf(stderr, "%s: '%s' is a directory, cannot continue\n", argv[0], filename);
-                    fclose(fp);
-                    return 1;
-                }
-            }
-        }
-
-        if (sts==-1) {
-            /* call pending calls like signal handlers (SIGINT) */
-            if (Py_MakePendingCalls() == -1) {
-                PyErr_Print();
-                sts = 1;
-            } else {
-                sts = PyRun_AnyFileExFlags(
-                    fp,
-                    filename == NULL ? "<stdin>" : filename,
-                    filename != NULL, &cf) != 0;
-            }
-        }
-
-    }
-
-    /* Check this environment variable at the end, to give programs the
-     * opportunity to set it from Python.
-     */
-    if (!Py_InspectFlag &&
-        (p = Py_GETENV("PYTHONINSPECT")) && *p != '\0')
-    {
-        Py_InspectFlag = 1;
-    }
-
-    if (Py_InspectFlag && stdin_is_interactive &&
-        (filename != NULL || command != NULL || module != NULL)) {
-        Py_InspectFlag = 0;
-        /* XXX */
-        sts = PyRun_AnyFileFlags(stdin, "<stdin>", &cf) != 0;
-    }
-
-    Py_Finalize();
-#ifdef RISCOS
-    if (Py_RISCOSWimpFlag)
-        fprintf(stderr, "\x0cq\x0c"); /* make frontend quit */
-#endif
-
-#ifdef __INSURE__
-    /* Insure++ is a memory analysis tool that aids in discovering
-     * memory leaks and other memory problems.  On Python exit, the
-     * interned string dictionary is flagged as being in use at exit
-     * (which it is).  Under normal circumstances, this is fine because
-     * the memory will be automatically reclaimed by the system.  Under
-     * memory debugging, it's a huge source of useless noise, so we
-     * trade off slower shutdown for less distraction in the memory
-     * reports.  -baw
-     */
-    _Py_ReleaseInternedStrings();
-#endif /* __INSURE__ */
-
-    return sts;
-}
-
-/* this is gonna seem *real weird*, but if you put some other code between
-   Py_Main() and Py_GetArgcArgv() you will need to adjust the test in the
-   while statement in Misc/gdbinit:ppystack */
-
-/* Make the *original* argc/argv available to other modules.
-   This is rare, but it is needed by the secureware extension. */
-
-void
-Py_GetArgcArgv(int *argc, char ***argv)
-{
-    *argc = orig_argc;
-    *argv = orig_argv;
-}
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/mathmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/mathmodule.c
deleted file mode 100644
index 04b66f4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/mathmodule.c
+++ /dev/null
@@ -1,1624 +0,0 @@
-/* Math module -- standard C math library functions, pi and e */
-
-/* Here are some comments from Tim Peters, extracted from the
-   discussion attached to http://bugs.python.org/issue1640.  They
-   describe the general aims of the math module with respect to
-   special values, IEEE-754 floating-point exceptions, and Python
-   exceptions.
-
-These are the "spirit of 754" rules:
-
-1. If the mathematical result is a real number, but of magnitude too
-large to approximate by a machine float, overflow is signaled and the
-result is an infinity (with the appropriate sign).
-
-2. If the mathematical result is a real number, but of magnitude too
-small to approximate by a machine float, underflow is signaled and the
-result is a zero (with the appropriate sign).
-
-3. At a singularity (a value x such that the limit of f(y) as y
-approaches x exists and is an infinity), "divide by zero" is signaled
-and the result is an infinity (with the appropriate sign).  This is
-complicated a little by that the left-side and right-side limits may
-not be the same; e.g., 1/x approaches +inf or -inf as x approaches 0
-from the positive or negative directions.  In that specific case, the
-sign of the zero determines the result of 1/0.
-
-4. At a point where a function has no defined result in the extended
-reals (i.e., the reals plus an infinity or two), invalid operation is
-signaled and a NaN is returned.
-
-And these are what Python has historically /tried/ to do (but not
-always successfully, as platform libm behavior varies a lot):
-
-For #1, raise OverflowError.
-
-For #2, return a zero (with the appropriate sign if that happens by
-accident ;-)).
-
-For #3 and #4, raise ValueError.  It may have made sense to raise
-Python's ZeroDivisionError in #3, but historically that's only been
-raised for division by zero and mod by zero.
-
-*/
-
-/*
-   In general, on an IEEE-754 platform the aim is to follow the C99
-   standard, including Annex 'F', whenever possible.  Where the
-   standard recommends raising the 'divide-by-zero' or 'invalid'
-   floating-point exceptions, Python should raise a ValueError.  Where
-   the standard recommends raising 'overflow', Python should raise an
-   OverflowError.  In all other circumstances a value should be
-   returned.
- */
-
-#include "Python.h"
-#include "_math.h"
-
-#ifdef _OSF_SOURCE
-/* OSF1 5.1 doesn't make this available with XOPEN_SOURCE_EXTENDED defined */
-extern double copysign(double, double);
-#endif
-
-/*
-   sin(pi*x), giving accurate results for all finite x (especially x
-   integral or close to an integer).  This is here for use in the
-   reflection formula for the gamma function.  It conforms to IEEE
-   754-2008 for finite arguments, but not for infinities or nans.
-*/
-
-static const double pi = 3.141592653589793238462643383279502884197;
-static const double sqrtpi = 1.772453850905516027298167483341145182798;
-
-static double
-sinpi(double x)
-{
-    double y, r;
-    int n;
-    /* this function should only ever be called for finite arguments */
-    assert(Py_IS_FINITE(x));
-    y = fmod(fabs(x), 2.0);
-    n = (int)round(2.0*y);
-    assert(0 <= n && n <= 4);
-    switch (n) {
-    case 0:
-        r = sin(pi*y);
-        break;
-    case 1:
-        r = cos(pi*(y-0.5));
-        break;
-    case 2:
-        /* N.B. -sin(pi*(y-1.0)) is *not* equivalent: it would give
-           -0.0 instead of 0.0 when y == 1.0. */
-        r = sin(pi*(1.0-y));
-        break;
-    case 3:
-        r = -cos(pi*(y-1.5));
-        break;
-    case 4:
-        r = sin(pi*(y-2.0));
-        break;
-    default:
-        assert(0);  /* should never get here */
-        r = -1.23e200; /* silence gcc warning */
-    }
-    return copysign(1.0, x)*r;
-}
-
-/* Implementation of the real gamma function.  In extensive but non-exhaustive
-   random tests, this function proved accurate to within <= 10 ulps across the
-   entire float domain.  Note that accuracy may depend on the quality of the
-   system math functions, the pow function in particular.  Special cases
-   follow C99 annex F.  The parameters and method are tailored to platforms
-   whose double format is the IEEE 754 binary64 format.
-
-   Method: for x > 0.0 we use the Lanczos approximation with parameters N=13
-   and g=6.024680040776729583740234375; these parameters are amongst those
-   used by the Boost library.  Following Boost (again), we re-express the
-   Lanczos sum as a rational function, and compute it that way.  The
-   coefficients below were computed independently using MPFR, and have been
-   double-checked against the coefficients in the Boost source code.
-
-   For x < 0.0 we use the reflection formula.
-
-   There's one minor tweak that deserves explanation: Lanczos' formula for
-   Gamma(x) involves computing pow(x+g-0.5, x-0.5) / exp(x+g-0.5).  For many x
-   values, x+g-0.5 can be represented exactly.  However, in cases where it
-   can't be represented exactly the small error in x+g-0.5 can be magnified
-   significantly by the pow and exp calls, especially for large x.  A cheap
-   correction is to multiply by (1 + e*g/(x+g-0.5)), where e is the error
-   involved in the computation of x+g-0.5 (that is, e = computed value of
-   x+g-0.5 - exact value of x+g-0.5).  Here's the proof:
-
-   Correction factor
-   -----------------
-   Write x+g-0.5 = y-e, where y is exactly representable as an IEEE 754
-   double, and e is tiny.  Then:
-
-     pow(x+g-0.5,x-0.5)/exp(x+g-0.5) = pow(y-e, x-0.5)/exp(y-e)
-     = pow(y, x-0.5)/exp(y) * C,
-
-   where the correction_factor C is given by
-
-     C = pow(1-e/y, x-0.5) * exp(e)
-
-   Since e is tiny, pow(1-e/y, x-0.5) ~ 1-(x-0.5)*e/y, and exp(x) ~ 1+e, so:
-
-     C ~ (1-(x-0.5)*e/y) * (1+e) ~ 1 + e*(y-(x-0.5))/y
-
-   But y-(x-0.5) = g+e, and g+e ~ g.  So we get C ~ 1 + e*g/y, and
-
-     pow(x+g-0.5,x-0.5)/exp(x+g-0.5) ~ pow(y, x-0.5)/exp(y) * (1 + e*g/y),
-
-   Note that for accuracy, when computing r*C it's better to do
-
-     r + e*g/y*r;
-
-   than
-
-     r * (1 + e*g/y);
-
-   since the addition in the latter throws away most of the bits of
-   information in e*g/y.
-*/
-
-#define LANCZOS_N 13
-static const double lanczos_g = 6.024680040776729583740234375;
-static const double lanczos_g_minus_half = 5.524680040776729583740234375;
-static const double lanczos_num_coeffs[LANCZOS_N] = {
-    23531376880.410759688572007674451636754734846804940,
-    42919803642.649098768957899047001988850926355848959,
-    35711959237.355668049440185451547166705960488635843,
-    17921034426.037209699919755754458931112671403265390,
-    6039542586.3520280050642916443072979210699388420708,
-    1439720407.3117216736632230727949123939715485786772,
-    248874557.86205415651146038641322942321632125127801,
-    31426415.585400194380614231628318205362874684987640,
-    2876370.6289353724412254090516208496135991145378768,
-    186056.26539522349504029498971604569928220784236328,
-    8071.6720023658162106380029022722506138218516325024,
-    210.82427775157934587250973392071336271166969580291,
-    2.5066282746310002701649081771338373386264310793408
-};
-
-/* denominator is x*(x+1)*...*(x+LANCZOS_N-2) */
-static const double lanczos_den_coeffs[LANCZOS_N] = {
-    0.0, 39916800.0, 120543840.0, 150917976.0, 105258076.0, 45995730.0,
-    13339535.0, 2637558.0, 357423.0, 32670.0, 1925.0, 66.0, 1.0};
-
-/* gamma values for small positive integers, 1 though NGAMMA_INTEGRAL */
-#define NGAMMA_INTEGRAL 23
-static const double gamma_integral[NGAMMA_INTEGRAL] = {
-    1.0, 1.0, 2.0, 6.0, 24.0, 120.0, 720.0, 5040.0, 40320.0, 362880.0,
-    3628800.0, 39916800.0, 479001600.0, 6227020800.0, 87178291200.0,
-    1307674368000.0, 20922789888000.0, 355687428096000.0,
-    6402373705728000.0, 121645100408832000.0, 2432902008176640000.0,
-    51090942171709440000.0, 1124000727777607680000.0,
-};
-
-/* Lanczos' sum L_g(x), for positive x */
-
-static double
-lanczos_sum(double x)
-{
-    double num = 0.0, den = 0.0;
-    int i;
-    assert(x > 0.0);
-    /* evaluate the rational function lanczos_sum(x).  For large
-       x, the obvious algorithm risks overflow, so we instead
-       rescale the denominator and numerator of the rational
-       function by x**(1-LANCZOS_N) and treat this as a
-       rational function in 1/x.  This also reduces the error for
-       larger x values.  The choice of cutoff point (5.0 below) is
-       somewhat arbitrary; in tests, smaller cutoff values than
-       this resulted in lower accuracy. */
-    if (x < 5.0) {
-        for (i = LANCZOS_N; --i >= 0; ) {
-            num = num * x + lanczos_num_coeffs[i];
-            den = den * x + lanczos_den_coeffs[i];
-        }
-    }
-    else {
-        for (i = 0; i < LANCZOS_N; i++) {
-            num = num / x + lanczos_num_coeffs[i];
-            den = den / x + lanczos_den_coeffs[i];
-        }
-    }
-    return num/den;
-}
-
-static double
-m_tgamma(double x)
-{
-    double absx, r, y, z, sqrtpow;
-
-    /* special cases */
-    if (!Py_IS_FINITE(x)) {
-        if (Py_IS_NAN(x) || x > 0.0)
-            return x;  /* tgamma(nan) = nan, tgamma(inf) = inf */
-        else {
-            errno = EDOM;
-            return Py_NAN;  /* tgamma(-inf) = nan, invalid */
-        }
-    }
-    if (x == 0.0) {
-        errno = EDOM;
-        return 1.0/x; /* tgamma(+-0.0) = +-inf, divide-by-zero */
-    }
-
-    /* integer arguments */
-    if (x == floor(x)) {
-        if (x < 0.0) {
-            errno = EDOM;  /* tgamma(n) = nan, invalid for */
-            return Py_NAN; /* negative integers n */
-        }
-        if (x <= NGAMMA_INTEGRAL)
-            return gamma_integral[(int)x - 1];
-    }
-    absx = fabs(x);
-
-    /* tiny arguments:  tgamma(x) ~ 1/x for x near 0 */
-    if (absx < 1e-20) {
-        r = 1.0/x;
-        if (Py_IS_INFINITY(r))
-            errno = ERANGE;
-        return r;
-    }
-
-    /* large arguments: assuming IEEE 754 doubles, tgamma(x) overflows for
-       x > 200, and underflows to +-0.0 for x < -200, not a negative
-       integer. */
-    if (absx > 200.0) {
-        if (x < 0.0) {
-            return 0.0/sinpi(x);
-        }
-        else {
-            errno = ERANGE;
-            return Py_HUGE_VAL;
-        }
-    }
-
-    y = absx + lanczos_g_minus_half;
-    /* compute error in sum */
-    if (absx > lanczos_g_minus_half) {
-        /* note: the correction can be foiled by an optimizing
-           compiler that (incorrectly) thinks that an expression like
-           a + b - a - b can be optimized to 0.0.  This shouldn't
-           happen in a standards-conforming compiler. */
-        double q = y - absx;
-        z = q - lanczos_g_minus_half;
-    }
-    else {
-        double q = y - lanczos_g_minus_half;
-        z = q - absx;
-    }
-    z = z * lanczos_g / y;
-    if (x < 0.0) {
-        r = -pi / sinpi(absx) / absx * exp(y) / lanczos_sum(absx);
-        r -= z * r;
-        if (absx < 140.0) {
-            r /= pow(y, absx - 0.5);
-        }
-        else {
-            sqrtpow = pow(y, absx / 2.0 - 0.25);
-            r /= sqrtpow;
-            r /= sqrtpow;
-        }
-    }
-    else {
-        r = lanczos_sum(absx) / exp(y);
-        r += z * r;
-        if (absx < 140.0) {
-            r *= pow(y, absx - 0.5);
-        }
-        else {
-            sqrtpow = pow(y, absx / 2.0 - 0.25);
-            r *= sqrtpow;
-            r *= sqrtpow;
-        }
-    }
-    if (Py_IS_INFINITY(r))
-        errno = ERANGE;
-    return r;
-}
-
-/*
-   lgamma:  natural log of the absolute value of the Gamma function.
-   For large arguments, Lanczos' formula works extremely well here.
-*/
-
-static double
-m_lgamma(double x)
-{
-    double r, absx;
-
-    /* special cases */
-    if (!Py_IS_FINITE(x)) {
-        if (Py_IS_NAN(x))
-            return x;  /* lgamma(nan) = nan */
-        else
-            return Py_HUGE_VAL; /* lgamma(+-inf) = +inf */
-    }
-
-    /* integer arguments */
-    if (x == floor(x) && x <= 2.0) {
-        if (x <= 0.0) {
-            errno = EDOM;  /* lgamma(n) = inf, divide-by-zero for */
-            return Py_HUGE_VAL; /* integers n <= 0 */
-        }
-        else {
-            return 0.0; /* lgamma(1) = lgamma(2) = 0.0 */
-        }
-    }
-
-    absx = fabs(x);
-    /* tiny arguments: lgamma(x) ~ -log(fabs(x)) for small x */
-    if (absx < 1e-20)
-        return -log(absx);
-
-    /* Lanczos' formula */
-    if (x > 0.0) {
-        /* we could save a fraction of a ulp in accuracy by having a
-           second set of numerator coefficients for lanczos_sum that
-           absorbed the exp(-lanczos_g) term, and throwing out the
-           lanczos_g subtraction below; it's probably not worth it. */
-        r = log(lanczos_sum(x)) - lanczos_g +
-            (x-0.5)*(log(x+lanczos_g-0.5)-1);
-    }
-    else {
-        r = log(pi) - log(fabs(sinpi(absx))) - log(absx) -
-            (log(lanczos_sum(absx)) - lanczos_g +
-             (absx-0.5)*(log(absx+lanczos_g-0.5)-1));
-    }
-    if (Py_IS_INFINITY(r))
-        errno = ERANGE;
-    return r;
-}
-
-/*
-   Implementations of the error function erf(x) and the complementary error
-   function erfc(x).
-
-   Method: following 'Numerical Recipes' by Flannery, Press et. al. (2nd ed.,
-   Cambridge University Press), we use a series approximation for erf for
-   small x, and a continued fraction approximation for erfc(x) for larger x;
-   combined with the relations erf(-x) = -erf(x) and erfc(x) = 1.0 - erf(x),
-   this gives us erf(x) and erfc(x) for all x.
-
-   The series expansion used is:
-
-      erf(x) = x*exp(-x*x)/sqrt(pi) * [
-                     2/1 + 4/3 x**2 + 8/15 x**4 + 16/105 x**6 + ...]
-
-   The coefficient of x**(2k-2) here is 4**k*factorial(k)/factorial(2*k).
-   This series converges well for smallish x, but slowly for larger x.
-
-   The continued fraction expansion used is:
-
-      erfc(x) = x*exp(-x*x)/sqrt(pi) * [1/(0.5 + x**2 -) 0.5/(2.5 + x**2 - )
-                              3.0/(4.5 + x**2 - ) 7.5/(6.5 + x**2 - ) ...]
-
-   after the first term, the general term has the form:
-
-      k*(k-0.5)/(2*k+0.5 + x**2 - ...).
-
-   This expansion converges fast for larger x, but convergence becomes
-   infinitely slow as x approaches 0.0.  The (somewhat naive) continued
-   fraction evaluation algorithm used below also risks overflow for large x;
-   but for large x, erfc(x) == 0.0 to within machine precision.  (For
-   example, erfc(30.0) is approximately 2.56e-393).
-
-   Parameters: use series expansion for abs(x) < ERF_SERIES_CUTOFF and
-   continued fraction expansion for ERF_SERIES_CUTOFF <= abs(x) <
-   ERFC_CONTFRAC_CUTOFF.  ERFC_SERIES_TERMS and ERFC_CONTFRAC_TERMS are the
-   numbers of terms to use for the relevant expansions.  */
-
-#define ERF_SERIES_CUTOFF 1.5
-#define ERF_SERIES_TERMS 25
-#define ERFC_CONTFRAC_CUTOFF 30.0
-#define ERFC_CONTFRAC_TERMS 50
-
-/*
-   Error function, via power series.
-
-   Given a finite float x, return an approximation to erf(x).
-   Converges reasonably fast for small x.
-*/
-
-static double
-m_erf_series(double x)
-{
-    double x2, acc, fk, result;
-    int i, saved_errno;
-
-    x2 = x * x;
-    acc = 0.0;
-    fk = (double)ERF_SERIES_TERMS + 0.5;
-    for (i = 0; i < ERF_SERIES_TERMS; i++) {
-        acc = 2.0 + x2 * acc / fk;
-        fk -= 1.0;
-    }
-    /* Make sure the exp call doesn't affect errno;
-       see m_erfc_contfrac for more. */
-    saved_errno = errno;
-    result = acc * x * exp(-x2) / sqrtpi;
-    errno = saved_errno;
-    return result;
-}
-
-/*
-   Complementary error function, via continued fraction expansion.
-
-   Given a positive float x, return an approximation to erfc(x).  Converges
-   reasonably fast for x large (say, x > 2.0), and should be safe from
-   overflow if x and nterms are not too large.  On an IEEE 754 machine, with x
-   <= 30.0, we're safe up to nterms = 100.  For x >= 30.0, erfc(x) is smaller
-   than the smallest representable nonzero float.  */
-
-static double
-m_erfc_contfrac(double x)
-{
-    double x2, a, da, p, p_last, q, q_last, b, result;
-    int i, saved_errno;
-
-    if (x >= ERFC_CONTFRAC_CUTOFF)
-        return 0.0;
-
-    x2 = x*x;
-    a = 0.0;
-    da = 0.5;
-    p = 1.0; p_last = 0.0;
-    q = da + x2; q_last = 1.0;
-    for (i = 0; i < ERFC_CONTFRAC_TERMS; i++) {
-        double temp;
-        a += da;
-        da += 2.0;
-        b = da + x2;
-        temp = p; p = b*p - a*p_last; p_last = temp;
-        temp = q; q = b*q - a*q_last; q_last = temp;
-    }
-    /* Issue #8986: On some platforms, exp sets errno on underflow to zero;
-       save the current errno value so that we can restore it later. */
-    saved_errno = errno;
-    result = p / q * x * exp(-x2) / sqrtpi;
-    errno = saved_errno;
-    return result;
-}
-
-/* Error function erf(x), for general x */
-
-static double
-m_erf(double x)
-{
-    double absx, cf;
-
-    if (Py_IS_NAN(x))
-        return x;
-    absx = fabs(x);
-    if (absx < ERF_SERIES_CUTOFF)
-        return m_erf_series(x);
-    else {
-        cf = m_erfc_contfrac(absx);
-        return x > 0.0 ? 1.0 - cf : cf - 1.0;
-    }
-}
-
-/* Complementary error function erfc(x), for general x. */
-
-static double
-m_erfc(double x)
-{
-    double absx, cf;
-
-    if (Py_IS_NAN(x))
-        return x;
-    absx = fabs(x);
-    if (absx < ERF_SERIES_CUTOFF)
-        return 1.0 - m_erf_series(x);
-    else {
-        cf = m_erfc_contfrac(absx);
-        return x > 0.0 ? cf : 2.0 - cf;
-    }
-}
-
-/*
-   wrapper for atan2 that deals directly with special cases before
-   delegating to the platform libm for the remaining cases.  This
-   is necessary to get consistent behaviour across platforms.
-   Windows, FreeBSD and alpha Tru64 are amongst platforms that don't
-   always follow C99.
-*/
-
-static double
-m_atan2(double y, double x)
-{
-    if (Py_IS_NAN(x) || Py_IS_NAN(y))
-        return Py_NAN;
-    if (Py_IS_INFINITY(y)) {
-        if (Py_IS_INFINITY(x)) {
-            if (copysign(1., x) == 1.)
-                /* atan2(+-inf, +inf) == +-pi/4 */
-                return copysign(0.25*Py_MATH_PI, y);
-            else
-                /* atan2(+-inf, -inf) == +-pi*3/4 */
-                return copysign(0.75*Py_MATH_PI, y);
-        }
-        /* atan2(+-inf, x) == +-pi/2 for finite x */
-        return copysign(0.5*Py_MATH_PI, y);
-    }
-    if (Py_IS_INFINITY(x) || y == 0.) {
-        if (copysign(1., x) == 1.)
-            /* atan2(+-y, +inf) = atan2(+-0, +x) = +-0. */
-            return copysign(0., y);
-        else
-            /* atan2(+-y, -inf) = atan2(+-0., -x) = +-pi. */
-            return copysign(Py_MATH_PI, y);
-    }
-    return atan2(y, x);
-}
-
-/*
-    Various platforms (Solaris, OpenBSD) do nonstandard things for log(0),
-    log(-ve), log(NaN).  Here are wrappers for log and log10 that deal with
-    special values directly, passing positive non-special values through to
-    the system log/log10.
- */
-
-static double
-m_log(double x)
-{
-    if (Py_IS_FINITE(x)) {
-        if (x > 0.0)
-            return log(x);
-        errno = EDOM;
-        if (x == 0.0)
-            return -Py_HUGE_VAL; /* log(0) = -inf */
-        else
-            return Py_NAN; /* log(-ve) = nan */
-    }
-    else if (Py_IS_NAN(x))
-        return x; /* log(nan) = nan */
-    else if (x > 0.0)
-        return x; /* log(inf) = inf */
-    else {
-        errno = EDOM;
-        return Py_NAN; /* log(-inf) = nan */
-    }
-}
-
-static double
-m_log10(double x)
-{
-    if (Py_IS_FINITE(x)) {
-        if (x > 0.0)
-            return log10(x);
-        errno = EDOM;
-        if (x == 0.0)
-            return -Py_HUGE_VAL; /* log10(0) = -inf */
-        else
-            return Py_NAN; /* log10(-ve) = nan */
-    }
-    else if (Py_IS_NAN(x))
-        return x; /* log10(nan) = nan */
-    else if (x > 0.0)
-        return x; /* log10(inf) = inf */
-    else {
-        errno = EDOM;
-        return Py_NAN; /* log10(-inf) = nan */
-    }
-}
-
-
-/* Call is_error when errno != 0, and where x is the result libm
- * returned.  is_error will usually set up an exception and return
- * true (1), but may return false (0) without setting up an exception.
- */
-static int
-is_error(double x)
-{
-    int result = 1;     /* presumption of guilt */
-    assert(errno);      /* non-zero errno is a precondition for calling */
-    if (errno == EDOM)
-        PyErr_SetString(PyExc_ValueError, "math domain error");
-
-    else if (errno == ERANGE) {
-        /* ANSI C generally requires libm functions to set ERANGE
-         * on overflow, but also generally *allows* them to set
-         * ERANGE on underflow too.  There's no consistency about
-         * the latter across platforms.
-         * Alas, C99 never requires that errno be set.
-         * Here we suppress the underflow errors (libm functions
-         * should return a zero on underflow, and +- HUGE_VAL on
-         * overflow, so testing the result for zero suffices to
-         * distinguish the cases).
-         *
-         * On some platforms (Ubuntu/ia64) it seems that errno can be
-         * set to ERANGE for subnormal results that do *not* underflow
-         * to zero.  So to be safe, we'll ignore ERANGE whenever the
-         * function result is less than one in absolute value.
-         */
-        if (fabs(x) < 1.0)
-            result = 0;
-        else
-            PyErr_SetString(PyExc_OverflowError,
-                            "math range error");
-    }
-    else
-        /* Unexpected math error */
-        PyErr_SetFromErrno(PyExc_ValueError);
-    return result;
-}
-
-/*
-   math_1 is used to wrap a libm function f that takes a double
-   arguments and returns a double.
-
-   The error reporting follows these rules, which are designed to do
-   the right thing on C89/C99 platforms and IEEE 754/non IEEE 754
-   platforms.
-
-   - a NaN result from non-NaN inputs causes ValueError to be raised
-   - an infinite result from finite inputs causes OverflowError to be
-     raised if can_overflow is 1, or raises ValueError if can_overflow
-     is 0.
-   - if the result is finite and errno == EDOM then ValueError is
-     raised
-   - if the result is finite and nonzero and errno == ERANGE then
-     OverflowError is raised
-
-   The last rule is used to catch overflow on platforms which follow
-   C89 but for which HUGE_VAL is not an infinity.
-
-   For the majority of one-argument functions these rules are enough
-   to ensure that Python's functions behave as specified in 'Annex F'
-   of the C99 standard, with the 'invalid' and 'divide-by-zero'
-   floating-point exceptions mapping to Python's ValueError and the
-   'overflow' floating-point exception mapping to OverflowError.
-   math_1 only works for functions that don't have singularities *and*
-   the possibility of overflow; fortunately, that covers everything we
-   care about right now.
-*/
-
-static PyObject *
-math_1(PyObject *arg, double (*func) (double), int can_overflow)
-{
-    double x, r;
-    x = PyFloat_AsDouble(arg);
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-    errno = 0;
-    PyFPE_START_PROTECT("in math_1", return 0);
-    r = (*func)(x);
-    PyFPE_END_PROTECT(r);
-    if (Py_IS_NAN(r)) {
-        if (!Py_IS_NAN(x))
-            errno = EDOM;
-        else
-            errno = 0;
-    }
-    else if (Py_IS_INFINITY(r)) {
-        if (Py_IS_FINITE(x))
-            errno = can_overflow ? ERANGE : EDOM;
-        else
-            errno = 0;
-    }
-    if (errno && is_error(r))
-        return NULL;
-    else
-        return PyFloat_FromDouble(r);
-}
-
-/* variant of math_1, to be used when the function being wrapped is known to
-   set errno properly (that is, errno = EDOM for invalid or divide-by-zero,
-   errno = ERANGE for overflow). */
-
-static PyObject *
-math_1a(PyObject *arg, double (*func) (double))
-{
-    double x, r;
-    x = PyFloat_AsDouble(arg);
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-    errno = 0;
-    PyFPE_START_PROTECT("in math_1a", return 0);
-    r = (*func)(x);
-    PyFPE_END_PROTECT(r);
-    if (errno && is_error(r))
-        return NULL;
-    return PyFloat_FromDouble(r);
-}
-
-/*
-   math_2 is used to wrap a libm function f that takes two double
-   arguments and returns a double.
-
-   The error reporting follows these rules, which are designed to do
-   the right thing on C89/C99 platforms and IEEE 754/non IEEE 754
-   platforms.
-
-   - a NaN result from non-NaN inputs causes ValueError to be raised
-   - an infinite result from finite inputs causes OverflowError to be
-     raised.
-   - if the result is finite and errno == EDOM then ValueError is
-     raised
-   - if the result is finite and nonzero and errno == ERANGE then
-     OverflowError is raised
-
-   The last rule is used to catch overflow on platforms which follow
-   C89 but for which HUGE_VAL is not an infinity.
-
-   For most two-argument functions (copysign, fmod, hypot, atan2)
-   these rules are enough to ensure that Python's functions behave as
-   specified in 'Annex F' of the C99 standard, with the 'invalid' and
-   'divide-by-zero' floating-point exceptions mapping to Python's
-   ValueError and the 'overflow' floating-point exception mapping to
-   OverflowError.
-*/
-
-static PyObject *
-math_2(PyObject *args, double (*func) (double, double), char *funcname)
-{
-    PyObject *ox, *oy;
-    double x, y, r;
-    if (! PyArg_UnpackTuple(args, funcname, 2, 2, &ox, &oy))
-        return NULL;
-    x = PyFloat_AsDouble(ox);
-    y = PyFloat_AsDouble(oy);
-    if ((x == -1.0 || y == -1.0) && PyErr_Occurred())
-        return NULL;
-    errno = 0;
-    PyFPE_START_PROTECT("in math_2", return 0);
-    r = (*func)(x, y);
-    PyFPE_END_PROTECT(r);
-    if (Py_IS_NAN(r)) {
-        if (!Py_IS_NAN(x) && !Py_IS_NAN(y))
-            errno = EDOM;
-        else
-            errno = 0;
-    }
-    else if (Py_IS_INFINITY(r)) {
-        if (Py_IS_FINITE(x) && Py_IS_FINITE(y))
-            errno = ERANGE;
-        else
-            errno = 0;
-    }
-    if (errno && is_error(r))
-        return NULL;
-    else
-        return PyFloat_FromDouble(r);
-}
-
-#define FUNC1(funcname, func, can_overflow, docstring)                  \
-    static PyObject * math_##funcname(PyObject *self, PyObject *args) { \
-        return math_1(args, func, can_overflow);                            \
-    }\
-    PyDoc_STRVAR(math_##funcname##_doc, docstring);
-
-#define FUNC1A(funcname, func, docstring)                               \
-    static PyObject * math_##funcname(PyObject *self, PyObject *args) { \
-        return math_1a(args, func);                                     \
-    }\
-    PyDoc_STRVAR(math_##funcname##_doc, docstring);
-
-#define FUNC2(funcname, func, docstring) \
-    static PyObject * math_##funcname(PyObject *self, PyObject *args) { \
-        return math_2(args, func, #funcname); \
-    }\
-    PyDoc_STRVAR(math_##funcname##_doc, docstring);
-
-FUNC1(acos, acos, 0,
-      "acos(x)\n\nReturn the arc cosine (measured in radians) of x.")
-FUNC1(acosh, m_acosh, 0,
-      "acosh(x)\n\nReturn the hyperbolic arc cosine (measured in radians) of x.")
-FUNC1(asin, asin, 0,
-      "asin(x)\n\nReturn the arc sine (measured in radians) of x.")
-FUNC1(asinh, m_asinh, 0,
-      "asinh(x)\n\nReturn the hyperbolic arc sine (measured in radians) of x.")
-FUNC1(atan, atan, 0,
-      "atan(x)\n\nReturn the arc tangent (measured in radians) of x.")
-FUNC2(atan2, m_atan2,
-      "atan2(y, x)\n\nReturn the arc tangent (measured in radians) of y/x.\n"
-      "Unlike atan(y/x), the signs of both x and y are considered.")
-FUNC1(atanh, m_atanh, 0,
-      "atanh(x)\n\nReturn the hyperbolic arc tangent (measured in radians) of x.")
-FUNC1(ceil, ceil, 0,
-      "ceil(x)\n\nReturn the ceiling of x as a float.\n"
-      "This is the smallest integral value >= x.")
-FUNC2(copysign, copysign,
-      "copysign(x, y)\n\nReturn x with the sign of y.")
-FUNC1(cos, cos, 0,
-      "cos(x)\n\nReturn the cosine of x (measured in radians).")
-FUNC1(cosh, cosh, 1,
-      "cosh(x)\n\nReturn the hyperbolic cosine of x.")
-FUNC1A(erf, m_erf,
-       "erf(x)\n\nError function at x.")
-FUNC1A(erfc, m_erfc,
-       "erfc(x)\n\nComplementary error function at x.")
-FUNC1(exp, exp, 1,
-      "exp(x)\n\nReturn e raised to the power of x.")
-FUNC1(expm1, m_expm1, 1,
-      "expm1(x)\n\nReturn exp(x)-1.\n"
-      "This function avoids the loss of precision involved in the direct "
-      "evaluation of exp(x)-1 for small x.")
-FUNC1(fabs, fabs, 0,
-      "fabs(x)\n\nReturn the absolute value of the float x.")
-FUNC1(floor, floor, 0,
-      "floor(x)\n\nReturn the floor of x as a float.\n"
-      "This is the largest integral value <= x.")
-FUNC1A(gamma, m_tgamma,
-      "gamma(x)\n\nGamma function at x.")
-FUNC1A(lgamma, m_lgamma,
-      "lgamma(x)\n\nNatural logarithm of absolute value of Gamma function at x.")
-FUNC1(log1p, m_log1p, 1,
-      "log1p(x)\n\nReturn the natural logarithm of 1+x (base e).\n"
-      "The result is computed in a way which is accurate for x near zero.")
-FUNC1(sin, sin, 0,
-      "sin(x)\n\nReturn the sine of x (measured in radians).")
-FUNC1(sinh, sinh, 1,
-      "sinh(x)\n\nReturn the hyperbolic sine of x.")
-FUNC1(sqrt, sqrt, 0,
-      "sqrt(x)\n\nReturn the square root of x.")
-FUNC1(tan, tan, 0,
-      "tan(x)\n\nReturn the tangent of x (measured in radians).")
-FUNC1(tanh, tanh, 0,
-      "tanh(x)\n\nReturn the hyperbolic tangent of x.")
-
-/* Precision summation function as msum() by Raymond Hettinger in
-   <http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/393090>,
-   enhanced with the exact partials sum and roundoff from Mark
-   Dickinson's post at <http://bugs.python.org/file10357/msum4.py>.
-   See those links for more details, proofs and other references.
-
-   Note 1: IEEE 754R floating point semantics are assumed,
-   but the current implementation does not re-establish special
-   value semantics across iterations (i.e. handling -Inf + Inf).
-
-   Note 2:  No provision is made for intermediate overflow handling;
-   therefore, sum([1e+308, 1e-308, 1e+308]) returns 1e+308 while
-   sum([1e+308, 1e+308, 1e-308]) raises an OverflowError due to the
-   overflow of the first partial sum.
-
-   Note 3: The intermediate values lo, yr, and hi are declared volatile so
-   aggressive compilers won't algebraically reduce lo to always be exactly 0.0.
-   Also, the volatile declaration forces the values to be stored in memory as
-   regular doubles instead of extended long precision (80-bit) values.  This
-   prevents double rounding because any addition or subtraction of two doubles
-   can be resolved exactly into double-sized hi and lo values.  As long as the
-   hi value gets forced into a double before yr and lo are computed, the extra
-   bits in downstream extended precision operations (x87 for example) will be
-   exactly zero and therefore can be losslessly stored back into a double,
-   thereby preventing double rounding.
-
-   Note 4: A similar implementation is in Modules/cmathmodule.c.
-   Be sure to update both when making changes.
-
-   Note 5: The signature of math.fsum() differs from __builtin__.sum()
-   because the start argument doesn't make sense in the context of
-   accurate summation.  Since the partials table is collapsed before
-   returning a result, sum(seq2, start=sum(seq1)) may not equal the
-   accurate result returned by sum(itertools.chain(seq1, seq2)).
-*/
-
-#define NUM_PARTIALS  32  /* initial partials array size, on stack */
-
-/* Extend the partials array p[] by doubling its size. */
-static int                          /* non-zero on error */
-_fsum_realloc(double **p_ptr, Py_ssize_t  n,
-             double  *ps,    Py_ssize_t *m_ptr)
-{
-    void *v = NULL;
-    Py_ssize_t m = *m_ptr;
-
-    m += m;  /* double */
-    if (n < m && m < (PY_SSIZE_T_MAX / sizeof(double))) {
-        double *p = *p_ptr;
-        if (p == ps) {
-            v = PyMem_Malloc(sizeof(double) * m);
-            if (v != NULL)
-                memcpy(v, ps, sizeof(double) * n);
-        }
-        else
-            v = PyMem_Realloc(p, sizeof(double) * m);
-    }
-    if (v == NULL) {        /* size overflow or no memory */
-        PyErr_SetString(PyExc_MemoryError, "math.fsum partials");
-        return 1;
-    }
-    *p_ptr = (double*) v;
-    *m_ptr = m;
-    return 0;
-}
-
-/* Full precision summation of a sequence of floats.
-
-   def msum(iterable):
-       partials = []  # sorted, non-overlapping partial sums
-       for x in iterable:
-           i = 0
-           for y in partials:
-               if abs(x) < abs(y):
-                   x, y = y, x
-               hi = x + y
-               lo = y - (hi - x)
-               if lo:
-                   partials[i] = lo
-                   i += 1
-               x = hi
-           partials[i:] = [x]
-       return sum_exact(partials)
-
-   Rounded x+y stored in hi with the roundoff stored in lo.  Together hi+lo
-   are exactly equal to x+y.  The inner loop applies hi/lo summation to each
-   partial so that the list of partial sums remains exact.
-
-   Sum_exact() adds the partial sums exactly and correctly rounds the final
-   result (using the round-half-to-even rule).  The items in partials remain
-   non-zero, non-special, non-overlapping and strictly increasing in
-   magnitude, but possibly not all having the same sign.
-
-   Depends on IEEE 754 arithmetic guarantees and half-even rounding.
-*/
-
-static PyObject*
-math_fsum(PyObject *self, PyObject *seq)
-{
-    PyObject *item, *iter, *sum = NULL;
-    Py_ssize_t i, j, n = 0, m = NUM_PARTIALS;
-    double x, y, t, ps[NUM_PARTIALS], *p = ps;
-    double xsave, special_sum = 0.0, inf_sum = 0.0;
-    volatile double hi, yr, lo;
-
-    iter = PyObject_GetIter(seq);
-    if (iter == NULL)
-        return NULL;
-
-    PyFPE_START_PROTECT("fsum", Py_DECREF(iter); return NULL)
-
-    for(;;) {           /* for x in iterable */
-        assert(0 <= n && n <= m);
-        assert((m == NUM_PARTIALS && p == ps) ||
-               (m >  NUM_PARTIALS && p != NULL));
-
-        item = PyIter_Next(iter);
-        if (item == NULL) {
-            if (PyErr_Occurred())
-                goto _fsum_error;
-            break;
-        }
-        x = PyFloat_AsDouble(item);
-        Py_DECREF(item);
-        if (PyErr_Occurred())
-            goto _fsum_error;
-
-        xsave = x;
-        for (i = j = 0; j < n; j++) {       /* for y in partials */
-            y = p[j];
-            if (fabs(x) < fabs(y)) {
-                t = x; x = y; y = t;
-            }
-            hi = x + y;
-            yr = hi - x;
-            lo = y - yr;
-            if (lo != 0.0)
-                p[i++] = lo;
-            x = hi;
-        }
-
-        n = i;                              /* ps[i:] = [x] */
-        if (x != 0.0) {
-            if (! Py_IS_FINITE(x)) {
-                /* a nonfinite x could arise either as
-                   a result of intermediate overflow, or
-                   as a result of a nan or inf in the
-                   summands */
-                if (Py_IS_FINITE(xsave)) {
-                    PyErr_SetString(PyExc_OverflowError,
-                          "intermediate overflow in fsum");
-                    goto _fsum_error;
-                }
-                if (Py_IS_INFINITY(xsave))
-                    inf_sum += xsave;
-                special_sum += xsave;
-                /* reset partials */
-                n = 0;
-            }
-            else if (n >= m && _fsum_realloc(&p, n, ps, &m))
-                goto _fsum_error;
-            else
-                p[n++] = x;
-        }
-    }
-
-    if (special_sum != 0.0) {
-        if (Py_IS_NAN(inf_sum))
-            PyErr_SetString(PyExc_ValueError,
-                            "-inf + inf in fsum");
-        else
-            sum = PyFloat_FromDouble(special_sum);
-        goto _fsum_error;
-    }
-
-    hi = 0.0;
-    if (n > 0) {
-        hi = p[--n];
-        /* sum_exact(ps, hi) from the top, stop when the sum becomes
-           inexact. */
-        while (n > 0) {
-            x = hi;
-            y = p[--n];
-            assert(fabs(y) < fabs(x));
-            hi = x + y;
-            yr = hi - x;
-            lo = y - yr;
-            if (lo != 0.0)
-                break;
-        }
-        /* Make half-even rounding work across multiple partials.
-           Needed so that sum([1e-16, 1, 1e16]) will round-up the last
-           digit to two instead of down to zero (the 1e-16 makes the 1
-           slightly closer to two).  With a potential 1 ULP rounding
-           error fixed-up, math.fsum() can guarantee commutativity. */
-        if (n > 0 && ((lo < 0.0 && p[n-1] < 0.0) ||
-                      (lo > 0.0 && p[n-1] > 0.0))) {
-            y = lo * 2.0;
-            x = hi + y;
-            yr = x - hi;
-            if (y == yr)
-                hi = x;
-        }
-    }
-    sum = PyFloat_FromDouble(hi);
-
-_fsum_error:
-    PyFPE_END_PROTECT(hi)
-    Py_DECREF(iter);
-    if (p != ps)
-        PyMem_Free(p);
-    return sum;
-}
-
-#undef NUM_PARTIALS
-
-PyDoc_STRVAR(math_fsum_doc,
-"fsum(iterable)\n\n\
-Return an accurate floating point sum of values in the iterable.\n\
-Assumes IEEE-754 floating point arithmetic.");
-
-static PyObject *
-math_factorial(PyObject *self, PyObject *arg)
-{
-    long i, x;
-    PyObject *result, *iobj, *newresult;
-
-    if (PyFloat_Check(arg)) {
-        PyObject *lx;
-        double dx = PyFloat_AS_DOUBLE((PyFloatObject *)arg);
-        if (!(Py_IS_FINITE(dx) && dx == floor(dx))) {
-            PyErr_SetString(PyExc_ValueError,
-                "factorial() only accepts integral values");
-            return NULL;
-        }
-        lx = PyLong_FromDouble(dx);
-        if (lx == NULL)
-            return NULL;
-        x = PyLong_AsLong(lx);
-        Py_DECREF(lx);
-    }
-    else
-        x = PyInt_AsLong(arg);
-
-    if (x == -1 && PyErr_Occurred())
-        return NULL;
-    if (x < 0) {
-        PyErr_SetString(PyExc_ValueError,
-            "factorial() not defined for negative values");
-        return NULL;
-    }
-
-    result = (PyObject *)PyInt_FromLong(1);
-    if (result == NULL)
-        return NULL;
-    for (i=1 ; i<=x ; i++) {
-        iobj = (PyObject *)PyInt_FromLong(i);
-        if (iobj == NULL)
-            goto error;
-        newresult = PyNumber_Multiply(result, iobj);
-        Py_DECREF(iobj);
-        if (newresult == NULL)
-            goto error;
-        Py_DECREF(result);
-        result = newresult;
-    }
-    return result;
-
-error:
-    Py_DECREF(result);
-    return NULL;
-}
-
-PyDoc_STRVAR(math_factorial_doc,
-"factorial(x) -> Integral\n"
-"\n"
-"Find x!. Raise a ValueError if x is negative or non-integral.");
-
-static PyObject *
-math_trunc(PyObject *self, PyObject *number)
-{
-    return PyObject_CallMethod(number, "__trunc__", NULL);
-}
-
-PyDoc_STRVAR(math_trunc_doc,
-"trunc(x:Real) -> Integral\n"
-"\n"
-"Truncates x to the nearest Integral toward 0. Uses the __trunc__ magic method.");
-
-static PyObject *
-math_frexp(PyObject *self, PyObject *arg)
-{
-    int i;
-    double x = PyFloat_AsDouble(arg);
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-    /* deal with special cases directly, to sidestep platform
-       differences */
-    if (Py_IS_NAN(x) || Py_IS_INFINITY(x) || !x) {
-        i = 0;
-    }
-    else {
-        PyFPE_START_PROTECT("in math_frexp", return 0);
-        x = frexp(x, &i);
-        PyFPE_END_PROTECT(x);
-    }
-    return Py_BuildValue("(di)", x, i);
-}
-
-PyDoc_STRVAR(math_frexp_doc,
-"frexp(x)\n"
-"\n"
-"Return the mantissa and exponent of x, as pair (m, e).\n"
-"m is a float and e is an int, such that x = m * 2.**e.\n"
-"If x is 0, m and e are both 0.  Else 0.5 <= abs(m) < 1.0.");
-
-static PyObject *
-math_ldexp(PyObject *self, PyObject *args)
-{
-    double x, r;
-    PyObject *oexp;
-    long exp;
-    int overflow;
-    if (! PyArg_ParseTuple(args, "dO:ldexp", &x, &oexp))
-        return NULL;
-
-    if (PyLong_Check(oexp) || PyInt_Check(oexp)) {
-        /* on overflow, replace exponent with either LONG_MAX
-           or LONG_MIN, depending on the sign. */
-        exp = PyLong_AsLongAndOverflow(oexp, &overflow);
-        if (exp == -1 && PyErr_Occurred())
-            return NULL;
-        if (overflow)
-            exp = overflow < 0 ? LONG_MIN : LONG_MAX;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "Expected an int or long as second argument "
-                        "to ldexp.");
-        return NULL;
-    }
-
-    if (x == 0. || !Py_IS_FINITE(x)) {
-        /* NaNs, zeros and infinities are returned unchanged */
-        r = x;
-        errno = 0;
-    } else if (exp > INT_MAX) {
-        /* overflow */
-        r = copysign(Py_HUGE_VAL, x);
-        errno = ERANGE;
-    } else if (exp < INT_MIN) {
-        /* underflow to +-0 */
-        r = copysign(0., x);
-        errno = 0;
-    } else {
-        errno = 0;
-        PyFPE_START_PROTECT("in math_ldexp", return 0);
-        r = ldexp(x, (int)exp);
-        PyFPE_END_PROTECT(r);
-        if (Py_IS_INFINITY(r))
-            errno = ERANGE;
-    }
-
-    if (errno && is_error(r))
-        return NULL;
-    return PyFloat_FromDouble(r);
-}
-
-PyDoc_STRVAR(math_ldexp_doc,
-"ldexp(x, i)\n\n\
-Return x * (2**i).");
-
-static PyObject *
-math_modf(PyObject *self, PyObject *arg)
-{
-    double y, x = PyFloat_AsDouble(arg);
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-    /* some platforms don't do the right thing for NaNs and
-       infinities, so we take care of special cases directly. */
-    if (!Py_IS_FINITE(x)) {
-        if (Py_IS_INFINITY(x))
-            return Py_BuildValue("(dd)", copysign(0., x), x);
-        else if (Py_IS_NAN(x))
-            return Py_BuildValue("(dd)", x, x);
-    }
-
-    errno = 0;
-    PyFPE_START_PROTECT("in math_modf", return 0);
-    x = modf(x, &y);
-    PyFPE_END_PROTECT(x);
-    return Py_BuildValue("(dd)", x, y);
-}
-
-PyDoc_STRVAR(math_modf_doc,
-"modf(x)\n"
-"\n"
-"Return the fractional and integer parts of x.  Both results carry the sign\n"
-"of x and are floats.");
-
-/* A decent logarithm is easy to compute even for huge longs, but libm can't
-   do that by itself -- loghelper can.  func is log or log10, and name is
-   "log" or "log10".  Note that overflow of the result isn't possible: a long
-   can contain no more than INT_MAX * SHIFT bits, so has value certainly less
-   than 2**(2**64 * 2**16) == 2**2**80, and log2 of that is 2**80, which is
-   small enough to fit in an IEEE single.  log and log10 are even smaller.
-   However, intermediate overflow is possible for a long if the number of bits
-   in that long is larger than PY_SSIZE_T_MAX. */
-
-static PyObject*
-loghelper(PyObject* arg, double (*func)(double), char *funcname)
-{
-    /* If it is long, do it ourselves. */
-    if (PyLong_Check(arg)) {
-        double x;
-        Py_ssize_t e;
-        x = _PyLong_Frexp((PyLongObject *)arg, &e);
-        if (x == -1.0 && PyErr_Occurred())
-            return NULL;
-        if (x <= 0.0) {
-            PyErr_SetString(PyExc_ValueError,
-                            "math domain error");
-            return NULL;
-        }
-        /* Special case for log(1), to make sure we get an
-           exact result there. */
-        if (e == 1 && x == 0.5)
-            return PyFloat_FromDouble(0.0);
-        /* Value is ~= x * 2**e, so the log ~= log(x) + log(2) * e. */
-        x = func(x) + func(2.0) * e;
-        return PyFloat_FromDouble(x);
-    }
-
-    /* Else let libm handle it by itself. */
-    return math_1(arg, func, 0);
-}
-
-static PyObject *
-math_log(PyObject *self, PyObject *args)
-{
-    PyObject *arg;
-    PyObject *base = NULL;
-    PyObject *num, *den;
-    PyObject *ans;
-
-    if (!PyArg_UnpackTuple(args, "log", 1, 2, &arg, &base))
-        return NULL;
-
-    num = loghelper(arg, m_log, "log");
-    if (num == NULL || base == NULL)
-        return num;
-
-    den = loghelper(base, m_log, "log");
-    if (den == NULL) {
-        Py_DECREF(num);
-        return NULL;
-    }
-
-    ans = PyNumber_Divide(num, den);
-    Py_DECREF(num);
-    Py_DECREF(den);
-    return ans;
-}
-
-PyDoc_STRVAR(math_log_doc,
-"log(x[, base])\n\n\
-Return the logarithm of x to the given base.\n\
-If the base not specified, returns the natural logarithm (base e) of x.");
-
-static PyObject *
-math_log10(PyObject *self, PyObject *arg)
-{
-    return loghelper(arg, m_log10, "log10");
-}
-
-PyDoc_STRVAR(math_log10_doc,
-"log10(x)\n\nReturn the base 10 logarithm of x.");
-
-static PyObject *
-math_fmod(PyObject *self, PyObject *args)
-{
-    PyObject *ox, *oy;
-    double r, x, y;
-    if (! PyArg_UnpackTuple(args, "fmod", 2, 2, &ox, &oy))
-        return NULL;
-    x = PyFloat_AsDouble(ox);
-    y = PyFloat_AsDouble(oy);
-    if ((x == -1.0 || y == -1.0) && PyErr_Occurred())
-        return NULL;
-    /* fmod(x, +/-Inf) returns x for finite x. */
-    if (Py_IS_INFINITY(y) && Py_IS_FINITE(x))
-        return PyFloat_FromDouble(x);
-    errno = 0;
-    PyFPE_START_PROTECT("in math_fmod", return 0);
-    r = fmod(x, y);
-    PyFPE_END_PROTECT(r);
-    if (Py_IS_NAN(r)) {
-        if (!Py_IS_NAN(x) && !Py_IS_NAN(y))
-            errno = EDOM;
-        else
-            errno = 0;
-    }
-    if (errno && is_error(r))
-        return NULL;
-    else
-        return PyFloat_FromDouble(r);
-}
-
-PyDoc_STRVAR(math_fmod_doc,
-"fmod(x, y)\n\nReturn fmod(x, y), according to platform C."
-"  x % y may differ.");
-
-static PyObject *
-math_hypot(PyObject *self, PyObject *args)
-{
-    PyObject *ox, *oy;
-    double r, x, y;
-    if (! PyArg_UnpackTuple(args, "hypot", 2, 2, &ox, &oy))
-        return NULL;
-    x = PyFloat_AsDouble(ox);
-    y = PyFloat_AsDouble(oy);
-    if ((x == -1.0 || y == -1.0) && PyErr_Occurred())
-        return NULL;
-    /* hypot(x, +/-Inf) returns Inf, even if x is a NaN. */
-    if (Py_IS_INFINITY(x))
-        return PyFloat_FromDouble(fabs(x));
-    if (Py_IS_INFINITY(y))
-        return PyFloat_FromDouble(fabs(y));
-    errno = 0;
-    PyFPE_START_PROTECT("in math_hypot", return 0);
-    r = hypot(x, y);
-    PyFPE_END_PROTECT(r);
-    if (Py_IS_NAN(r)) {
-        if (!Py_IS_NAN(x) && !Py_IS_NAN(y))
-            errno = EDOM;
-        else
-            errno = 0;
-    }
-    else if (Py_IS_INFINITY(r)) {
-        if (Py_IS_FINITE(x) && Py_IS_FINITE(y))
-            errno = ERANGE;
-        else
-            errno = 0;
-    }
-    if (errno && is_error(r))
-        return NULL;
-    else
-        return PyFloat_FromDouble(r);
-}
-
-PyDoc_STRVAR(math_hypot_doc,
-"hypot(x, y)\n\nReturn the Euclidean distance, sqrt(x*x + y*y).");
-
-/* pow can't use math_2, but needs its own wrapper: the problem is
-   that an infinite result can arise either as a result of overflow
-   (in which case OverflowError should be raised) or as a result of
-   e.g. 0.**-5. (for which ValueError needs to be raised.)
-*/
-
-static PyObject *
-math_pow(PyObject *self, PyObject *args)
-{
-    PyObject *ox, *oy;
-    double r, x, y;
-    int odd_y;
-
-    if (! PyArg_UnpackTuple(args, "pow", 2, 2, &ox, &oy))
-        return NULL;
-    x = PyFloat_AsDouble(ox);
-    y = PyFloat_AsDouble(oy);
-    if ((x == -1.0 || y == -1.0) && PyErr_Occurred())
-        return NULL;
-
-    /* deal directly with IEEE specials, to cope with problems on various
-       platforms whose semantics don't exactly match C99 */
-    r = 0.; /* silence compiler warning */
-    if (!Py_IS_FINITE(x) || !Py_IS_FINITE(y)) {
-        errno = 0;
-        if (Py_IS_NAN(x))
-            r = y == 0. ? 1. : x; /* NaN**0 = 1 */
-        else if (Py_IS_NAN(y))
-            r = x == 1. ? 1. : y; /* 1**NaN = 1 */
-        else if (Py_IS_INFINITY(x)) {
-            odd_y = Py_IS_FINITE(y) && fmod(fabs(y), 2.0) == 1.0;
-            if (y > 0.)
-                r = odd_y ? x : fabs(x);
-            else if (y == 0.)
-                r = 1.;
-            else /* y < 0. */
-                r = odd_y ? copysign(0., x) : 0.;
-        }
-        else if (Py_IS_INFINITY(y)) {
-            if (fabs(x) == 1.0)
-                r = 1.;
-            else if (y > 0. && fabs(x) > 1.0)
-                r = y;
-            else if (y < 0. && fabs(x) < 1.0) {
-                r = -y; /* result is +inf */
-                if (x == 0.) /* 0**-inf: divide-by-zero */
-                    errno = EDOM;
-            }
-            else
-                r = 0.;
-        }
-    }
-    else {
-        /* let libm handle finite**finite */
-        errno = 0;
-        PyFPE_START_PROTECT("in math_pow", return 0);
-        r = pow(x, y);
-        PyFPE_END_PROTECT(r);
-        /* a NaN result should arise only from (-ve)**(finite
-           non-integer); in this case we want to raise ValueError. */
-        if (!Py_IS_FINITE(r)) {
-            if (Py_IS_NAN(r)) {
-                errno = EDOM;
-            }
-            /*
-               an infinite result here arises either from:
-               (A) (+/-0.)**negative (-> divide-by-zero)
-               (B) overflow of x**y with x and y finite
-            */
-            else if (Py_IS_INFINITY(r)) {
-                if (x == 0.)
-                    errno = EDOM;
-                else
-                    errno = ERANGE;
-            }
-        }
-    }
-
-    if (errno && is_error(r))
-        return NULL;
-    else
-        return PyFloat_FromDouble(r);
-}
-
-PyDoc_STRVAR(math_pow_doc,
-"pow(x, y)\n\nReturn x**y (x to the power of y).");
-
-static const double degToRad = Py_MATH_PI / 180.0;
-static const double radToDeg = 180.0 / Py_MATH_PI;
-
-static PyObject *
-math_degrees(PyObject *self, PyObject *arg)
-{
-    double x = PyFloat_AsDouble(arg);
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-    return PyFloat_FromDouble(x * radToDeg);
-}
-
-PyDoc_STRVAR(math_degrees_doc,
-"degrees(x)\n\n\
-Convert angle x from radians to degrees.");
-
-static PyObject *
-math_radians(PyObject *self, PyObject *arg)
-{
-    double x = PyFloat_AsDouble(arg);
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-    return PyFloat_FromDouble(x * degToRad);
-}
-
-PyDoc_STRVAR(math_radians_doc,
-"radians(x)\n\n\
-Convert angle x from degrees to radians.");
-
-static PyObject *
-math_isnan(PyObject *self, PyObject *arg)
-{
-    double x = PyFloat_AsDouble(arg);
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-    return PyBool_FromLong((long)Py_IS_NAN(x));
-}
-
-PyDoc_STRVAR(math_isnan_doc,
-"isnan(x) -> bool\n\n\
-Check if float x is not a number (NaN).");
-
-static PyObject *
-math_isinf(PyObject *self, PyObject *arg)
-{
-    double x = PyFloat_AsDouble(arg);
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-    return PyBool_FromLong((long)Py_IS_INFINITY(x));
-}
-
-PyDoc_STRVAR(math_isinf_doc,
-"isinf(x) -> bool\n\n\
-Check if float x is infinite (positive or negative).");
-
-static PyMethodDef math_methods[] = {
-    {"acos",            math_acos,      METH_O,         math_acos_doc},
-    {"acosh",           math_acosh,     METH_O,         math_acosh_doc},
-    {"asin",            math_asin,      METH_O,         math_asin_doc},
-    {"asinh",           math_asinh,     METH_O,         math_asinh_doc},
-    {"atan",            math_atan,      METH_O,         math_atan_doc},
-    {"atan2",           math_atan2,     METH_VARARGS,   math_atan2_doc},
-    {"atanh",           math_atanh,     METH_O,         math_atanh_doc},
-    {"ceil",            math_ceil,      METH_O,         math_ceil_doc},
-    {"copysign",        math_copysign,  METH_VARARGS,   math_copysign_doc},
-    {"cos",             math_cos,       METH_O,         math_cos_doc},
-    {"cosh",            math_cosh,      METH_O,         math_cosh_doc},
-    {"degrees",         math_degrees,   METH_O,         math_degrees_doc},
-    {"erf",             math_erf,       METH_O,         math_erf_doc},
-    {"erfc",            math_erfc,      METH_O,         math_erfc_doc},
-    {"exp",             math_exp,       METH_O,         math_exp_doc},
-    {"expm1",           math_expm1,     METH_O,         math_expm1_doc},
-    {"fabs",            math_fabs,      METH_O,         math_fabs_doc},
-    {"factorial",       math_factorial, METH_O,         math_factorial_doc},
-    {"floor",           math_floor,     METH_O,         math_floor_doc},
-    {"fmod",            math_fmod,      METH_VARARGS,   math_fmod_doc},
-    {"frexp",           math_frexp,     METH_O,         math_frexp_doc},
-    {"fsum",            math_fsum,      METH_O,         math_fsum_doc},
-    {"gamma",           math_gamma,     METH_O,         math_gamma_doc},
-    {"hypot",           math_hypot,     METH_VARARGS,   math_hypot_doc},
-    {"isinf",           math_isinf,     METH_O,         math_isinf_doc},
-    {"isnan",           math_isnan,     METH_O,         math_isnan_doc},
-    {"ldexp",           math_ldexp,     METH_VARARGS,   math_ldexp_doc},
-    {"lgamma",          math_lgamma,    METH_O,         math_lgamma_doc},
-    {"log",             math_log,       METH_VARARGS,   math_log_doc},
-    {"log1p",           math_log1p,     METH_O,         math_log1p_doc},
-    {"log10",           math_log10,     METH_O,         math_log10_doc},
-    {"modf",            math_modf,      METH_O,         math_modf_doc},
-    {"pow",             math_pow,       METH_VARARGS,   math_pow_doc},
-    {"radians",         math_radians,   METH_O,         math_radians_doc},
-    {"sin",             math_sin,       METH_O,         math_sin_doc},
-    {"sinh",            math_sinh,      METH_O,         math_sinh_doc},
-    {"sqrt",            math_sqrt,      METH_O,         math_sqrt_doc},
-    {"tan",             math_tan,       METH_O,         math_tan_doc},
-    {"tanh",            math_tanh,      METH_O,         math_tanh_doc},
-    {"trunc",           math_trunc,     METH_O,         math_trunc_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-
-PyDoc_STRVAR(module_doc,
-"This module is always available.  It provides access to the\n"
-"mathematical functions defined by the C standard.");
-
-PyMODINIT_FUNC
-initmath(void)
-{
-    PyObject *m;
-
-    m = Py_InitModule3("math", math_methods, module_doc);
-    if (m == NULL)
-        goto finally;
-
-    PyModule_AddObject(m, "pi", PyFloat_FromDouble(Py_MATH_PI));
-    PyModule_AddObject(m, "e", PyFloat_FromDouble(Py_MATH_E));
-
-    finally:
-    return;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/md5.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/md5.c
deleted file mode 100644
index 53dbbc6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/md5.c
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
-  Copyright (C) 1999, 2000, 2002 Aladdin Enterprises.  All rights reserved.
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-  L. Peter Deutsch
-  ghost@aladdin.com
-
- */
-/* $Id: md5.c,v 1.6 2002/04/13 19:20:28 lpd Exp $ */
-/*
-  Independent implementation of MD5 (RFC 1321).
-
-  This code implements the MD5 Algorithm defined in RFC 1321, whose
-  text is available at
-        http://www.ietf.org/rfc/rfc1321.txt
-  The code is derived from the text of the RFC, including the test suite
-  (section A.5) but excluding the rest of Appendix A.  It does not include
-  any code or documentation that is identified in the RFC as being
-  copyrighted.
-
-  The original and principal author of md5.c is L. Peter Deutsch
-  <ghost@aladdin.com>.  Other authors are noted in the change history
-  that follows (in reverse chronological order):
-
-  2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order
-        either statically or dynamically; added missing #include <string.h>
-        in library.
-  2002-03-11 lpd Corrected argument list for main(), and added int return
-        type, in test program and T value program.
-  2002-02-21 lpd Added missing #include <stdio.h> in test program.
-  2000-07-03 lpd Patched to eliminate warnings about "constant is
-        unsigned in ANSI C, signed in traditional"; made test program
-        self-checking.
-  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
-  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5).
-  1999-05-03 lpd Original version.
- */
-
-#include "md5.h"
-#include <string.h>
-#include <limits.h>
-
-#undef BYTE_ORDER       /* 1 = big-endian, -1 = little-endian, 0 = unknown */
-#ifdef ARCH_IS_BIG_ENDIAN
-#  define BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1)
-#else
-#  define BYTE_ORDER 0
-#endif
-
-#define T_MASK ((md5_word_t)~0)
-#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)
-#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)
-#define T3    0x242070db
-#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111)
-#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050)
-#define T6    0x4787c62a
-#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec)
-#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe)
-#define T9    0x698098d8
-#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850)
-#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e)
-#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841)
-#define T13    0x6b901122
-#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c)
-#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71)
-#define T16    0x49b40821
-#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d)
-#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf)
-#define T19    0x265e5a51
-#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855)
-#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2)
-#define T22    0x02441453
-#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e)
-#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437)
-#define T25    0x21e1cde6
-#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829)
-#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278)
-#define T28    0x455a14ed
-#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa)
-#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07)
-#define T31    0x676f02d9
-#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375)
-#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd)
-#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e)
-#define T35    0x6d9d6122
-#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3)
-#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb)
-#define T38    0x4bdecfa9
-#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f)
-#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f)
-#define T41    0x289b7ec6
-#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805)
-#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a)
-#define T44    0x04881d05
-#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6)
-#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a)
-#define T47    0x1fa27cf8
-#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a)
-#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb)
-#define T50    0x432aff97
-#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58)
-#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6)
-#define T53    0x655b59c3
-#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d)
-#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82)
-#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e)
-#define T57    0x6fa87e4f
-#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f)
-#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb)
-#define T60    0x4e0811a1
-#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d)
-#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca)
-#define T63    0x2ad7d2bb
-#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e)
-
-
-static void
-md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/)
-{
-    md5_word_t
-        a = pms->abcd[0], b = pms->abcd[1],
-        c = pms->abcd[2], d = pms->abcd[3];
-    md5_word_t t;
-#if BYTE_ORDER > 0
-    /* Define storage only for big-endian CPUs. */
-    md5_word_t X[16];
-#else
-    /* Define storage for little-endian or both types of CPUs. */
-    md5_word_t xbuf[16];
-    const md5_word_t *X;
-#endif
-
-    {
-#if BYTE_ORDER == 0
-        /*
-         * Determine dynamically whether this is a big-endian or
-         * little-endian machine, since we can use a more efficient
-         * algorithm on the latter.
-         */
-        static const int w = 1;
-
-        if (*((const md5_byte_t *)&w)) /* dynamic little-endian */
-#endif
-#if BYTE_ORDER <= 0             /* little-endian */
-        {
-            /*
-             * On little-endian machines, we can process properly aligned
-             * data without copying it.
-             */
-            if (!((data - (const md5_byte_t *)0) & 3)) {
-                /* data are properly aligned */
-                X = (const md5_word_t *)data;
-            } else {
-                /* not aligned */
-                memcpy(xbuf, data, 64);
-                X = xbuf;
-            }
-        }
-#endif
-#if BYTE_ORDER == 0
-        else                    /* dynamic big-endian */
-#endif
-#if BYTE_ORDER >= 0             /* big-endian */
-        {
-            /*
-             * On big-endian machines, we must arrange the bytes in the
-             * right order.
-             */
-            const md5_byte_t *xp = data;
-            int i;
-
-#  if BYTE_ORDER == 0
-            X = xbuf;           /* (dynamic only) */
-#  else
-#    define xbuf X              /* (static only) */
-#  endif
-            for (i = 0; i < 16; ++i, xp += 4)
-                xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24);
-        }
-#endif
-    }
-
-#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
-
-    /* Round 1. */
-    /* Let [abcd k s i] denote the operation
-       a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
-#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
-#define SET(a, b, c, d, k, s, Ti)\
-  t = a + F(b,c,d) + X[k] + Ti;\
-  a = ROTATE_LEFT(t, s) + b
-    /* Do the following 16 operations. */
-    SET(a, b, c, d,  0,  7,  T1);
-    SET(d, a, b, c,  1, 12,  T2);
-    SET(c, d, a, b,  2, 17,  T3);
-    SET(b, c, d, a,  3, 22,  T4);
-    SET(a, b, c, d,  4,  7,  T5);
-    SET(d, a, b, c,  5, 12,  T6);
-    SET(c, d, a, b,  6, 17,  T7);
-    SET(b, c, d, a,  7, 22,  T8);
-    SET(a, b, c, d,  8,  7,  T9);
-    SET(d, a, b, c,  9, 12, T10);
-    SET(c, d, a, b, 10, 17, T11);
-    SET(b, c, d, a, 11, 22, T12);
-    SET(a, b, c, d, 12,  7, T13);
-    SET(d, a, b, c, 13, 12, T14);
-    SET(c, d, a, b, 14, 17, T15);
-    SET(b, c, d, a, 15, 22, T16);
-#undef SET
-
-     /* Round 2. */
-     /* Let [abcd k s i] denote the operation
-          a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
-#define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
-#define SET(a, b, c, d, k, s, Ti)\
-  t = a + G(b,c,d) + X[k] + Ti;\
-  a = ROTATE_LEFT(t, s) + b
-     /* Do the following 16 operations. */
-    SET(a, b, c, d,  1,  5, T17);
-    SET(d, a, b, c,  6,  9, T18);
-    SET(c, d, a, b, 11, 14, T19);
-    SET(b, c, d, a,  0, 20, T20);
-    SET(a, b, c, d,  5,  5, T21);
-    SET(d, a, b, c, 10,  9, T22);
-    SET(c, d, a, b, 15, 14, T23);
-    SET(b, c, d, a,  4, 20, T24);
-    SET(a, b, c, d,  9,  5, T25);
-    SET(d, a, b, c, 14,  9, T26);
-    SET(c, d, a, b,  3, 14, T27);
-    SET(b, c, d, a,  8, 20, T28);
-    SET(a, b, c, d, 13,  5, T29);
-    SET(d, a, b, c,  2,  9, T30);
-    SET(c, d, a, b,  7, 14, T31);
-    SET(b, c, d, a, 12, 20, T32);
-#undef SET
-
-     /* Round 3. */
-     /* Let [abcd k s t] denote the operation
-          a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
-#define H(x, y, z) ((x) ^ (y) ^ (z))
-#define SET(a, b, c, d, k, s, Ti)\
-  t = a + H(b,c,d) + X[k] + Ti;\
-  a = ROTATE_LEFT(t, s) + b
-     /* Do the following 16 operations. */
-    SET(a, b, c, d,  5,  4, T33);
-    SET(d, a, b, c,  8, 11, T34);
-    SET(c, d, a, b, 11, 16, T35);
-    SET(b, c, d, a, 14, 23, T36);
-    SET(a, b, c, d,  1,  4, T37);
-    SET(d, a, b, c,  4, 11, T38);
-    SET(c, d, a, b,  7, 16, T39);
-    SET(b, c, d, a, 10, 23, T40);
-    SET(a, b, c, d, 13,  4, T41);
-    SET(d, a, b, c,  0, 11, T42);
-    SET(c, d, a, b,  3, 16, T43);
-    SET(b, c, d, a,  6, 23, T44);
-    SET(a, b, c, d,  9,  4, T45);
-    SET(d, a, b, c, 12, 11, T46);
-    SET(c, d, a, b, 15, 16, T47);
-    SET(b, c, d, a,  2, 23, T48);
-#undef SET
-
-     /* Round 4. */
-     /* Let [abcd k s t] denote the operation
-          a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
-#define I(x, y, z) ((y) ^ ((x) | ~(z)))
-#define SET(a, b, c, d, k, s, Ti)\
-  t = a + I(b,c,d) + X[k] + Ti;\
-  a = ROTATE_LEFT(t, s) + b
-     /* Do the following 16 operations. */
-    SET(a, b, c, d,  0,  6, T49);
-    SET(d, a, b, c,  7, 10, T50);
-    SET(c, d, a, b, 14, 15, T51);
-    SET(b, c, d, a,  5, 21, T52);
-    SET(a, b, c, d, 12,  6, T53);
-    SET(d, a, b, c,  3, 10, T54);
-    SET(c, d, a, b, 10, 15, T55);
-    SET(b, c, d, a,  1, 21, T56);
-    SET(a, b, c, d,  8,  6, T57);
-    SET(d, a, b, c, 15, 10, T58);
-    SET(c, d, a, b,  6, 15, T59);
-    SET(b, c, d, a, 13, 21, T60);
-    SET(a, b, c, d,  4,  6, T61);
-    SET(d, a, b, c, 11, 10, T62);
-    SET(c, d, a, b,  2, 15, T63);
-    SET(b, c, d, a,  9, 21, T64);
-#undef SET
-
-     /* Then perform the following additions. (That is increment each
-        of the four registers by the value it had before this block
-        was started.) */
-    pms->abcd[0] += a;
-    pms->abcd[1] += b;
-    pms->abcd[2] += c;
-    pms->abcd[3] += d;
-}
-
-void
-md5_init(md5_state_t *pms)
-{
-    pms->count[0] = pms->count[1] = 0;
-    pms->abcd[0] = 0x67452301;
-    pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476;
-    pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301;
-    pms->abcd[3] = 0x10325476;
-}
-
-void
-md5_append(md5_state_t *pms, const md5_byte_t *data, unsigned int nbytes)
-{
-    const md5_byte_t *p = data;
-    unsigned int left = nbytes;
-    unsigned int offset = (pms->count[0] >> 3) & 63;
-    md5_word_t nbits = (md5_word_t)(nbytes << 3);
-
-    if (nbytes <= 0)
-        return;
-
-    /* this special case is handled recursively */
-    if (nbytes > INT_MAX - offset) {
-        unsigned int overlap;
-
-        /* handle the append in two steps to prevent overflow */
-        overlap = 64 - offset;
-
-        md5_append(pms, data, overlap);
-        md5_append(pms, data + overlap, nbytes - overlap);
-        return;
-    }
-
-    /* Update the message length. */
-    pms->count[1] += nbytes >> 29;
-    pms->count[0] += nbits;
-    if (pms->count[0] < nbits)
-        pms->count[1]++;
-
-    /* Process an initial partial block. */
-    if (offset) {
-        unsigned int copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
-
-        memcpy(pms->buf + offset, p, copy);
-        if (offset + copy < 64)
-            return;
-        p += copy;
-        left -= copy;
-        md5_process(pms, pms->buf);
-    }
-
-    /* Process full blocks. */
-    for (; left >= 64; p += 64, left -= 64)
-        md5_process(pms, p);
-
-    /* Process a final partial block. */
-    if (left)
-        memcpy(pms->buf, p, left);
-}
-
-void
-md5_finish(md5_state_t *pms, md5_byte_t digest[16])
-{
-    static const md5_byte_t pad[64] = {
-        0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-    md5_byte_t data[8];
-    int i;
-
-    /* Save the length before padding. */
-    for (i = 0; i < 8; ++i)
-        data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
-    /* Pad to 56 bytes mod 64. */
-    md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
-    /* Append the length. */
-    md5_append(pms, data, 8);
-    for (i = 0; i < 16; ++i)
-        digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/md5.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/md5.h
deleted file mode 100644
index 55560b3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/md5.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-  Copyright (C) 1999, 2002 Aladdin Enterprises.  All rights reserved.
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-  L. Peter Deutsch
-  ghost@aladdin.com
-
- */
-/* $Id$ */
-/*
-  Independent implementation of MD5 (RFC 1321).
-
-  This code implements the MD5 Algorithm defined in RFC 1321, whose
-  text is available at
-	http://www.ietf.org/rfc/rfc1321.txt
-  The code is derived from the text of the RFC, including the test suite
-  (section A.5) but excluding the rest of Appendix A.  It does not include
-  any code or documentation that is identified in the RFC as being
-  copyrighted.
-
-  The original and principal author of md5.h is L. Peter Deutsch
-  <ghost@aladdin.com>.  Other authors are noted in the change history
-  that follows (in reverse chronological order):
-
-  2002-04-13 lpd Removed support for non-ANSI compilers; removed
-	references to Ghostscript; clarified derivation from RFC 1321;
-	now handles byte order either statically or dynamically.
-  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
-  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
-	added conditionalization for C++ compilation from Martin
-	Purschke <purschke@bnl.gov>.
-  1999-05-03 lpd Original version.
- */
-
-#ifndef md5_INCLUDED
-#  define md5_INCLUDED
-
-/*
- * This package supports both compile-time and run-time determination of CPU
- * byte order.  If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
- * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
- * defined as non-zero, the code will be compiled to run only on big-endian
- * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
- * run on either big- or little-endian CPUs, but will run slightly less
- * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
- */
-
-typedef unsigned char md5_byte_t; /* 8-bit byte */
-typedef unsigned int md5_word_t; /* 32-bit word */
-
-/* Define the state of the MD5 Algorithm. */
-typedef struct md5_state_s {
-    md5_word_t count[2];	/* message length in bits, lsw first */
-    md5_word_t abcd[4];		/* digest buffer */
-    md5_byte_t buf[64];		/* accumulate block */
-} md5_state_t;
-
-#ifdef __cplusplus
-extern "C" 
-{
-#endif
-
-/* Initialize the algorithm. */
-void md5_init(md5_state_t *pms);
-
-/* Append a string to the message. */
-void md5_append(md5_state_t *pms, const md5_byte_t *data, unsigned int nbytes);
-
-/* Finish the message and return the digest. */
-void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
-
-#ifdef __cplusplus
-}  /* end extern "C" */
-#endif
-
-#endif /* md5_INCLUDED */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/md5module.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/md5module.c
deleted file mode 100644
index c1ef28c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/md5module.c
+++ /dev/null
@@ -1,315 +0,0 @@
-
-/* MD5 module */
-
-/* This module provides an interface to the RSA Data Security,
-   Inc. MD5 Message-Digest Algorithm, described in RFC 1321.
-   It requires the files md5c.c and md5.h (which are slightly changed
-   from the versions in the RFC to avoid the "global.h" file.) */
-
-
-/* MD5 objects */
-
-#include "Python.h"
-#include "structmember.h"
-#include "md5.h"
-
-typedef struct {
-    PyObject_HEAD
-    md5_state_t         md5;            /* the context holder */
-} md5object;
-
-static PyTypeObject MD5type;
-
-#define is_md5object(v)         ((v)->ob_type == &MD5type)
-
-static md5object *
-newmd5object(void)
-{
-    md5object *md5p;
-
-    md5p = PyObject_New(md5object, &MD5type);
-    if (md5p == NULL)
-        return NULL;
-
-    md5_init(&md5p->md5);       /* actual initialisation */
-    return md5p;
-}
-
-
-/* MD5 methods */
-
-static void
-md5_dealloc(md5object *md5p)
-{
-    PyObject_Del(md5p);
-}
-
-
-/* MD5 methods-as-attributes */
-
-static PyObject *
-md5_update(md5object *self, PyObject *args)
-{
-    Py_buffer view;
-
-    if (!PyArg_ParseTuple(args, "s*:update", &view))
-        return NULL;
-
-    md5_append(&self->md5, (unsigned char*)view.buf,
-               Py_SAFE_DOWNCAST(view.len, Py_ssize_t, unsigned int));
-
-    PyBuffer_Release(&view);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(update_doc,
-"update (arg)\n\
-\n\
-Update the md5 object with the string arg. Repeated calls are\n\
-equivalent to a single call with the concatenation of all the\n\
-arguments.");
-
-
-static PyObject *
-md5_digest(md5object *self)
-{
-    md5_state_t mdContext;
-    unsigned char aDigest[16];
-
-    /* make a temporary copy, and perform the final */
-    mdContext = self->md5;
-    md5_finish(&mdContext, aDigest);
-
-    return PyString_FromStringAndSize((char *)aDigest, 16);
-}
-
-PyDoc_STRVAR(digest_doc,
-"digest() -> string\n\
-\n\
-Return the digest of the strings passed to the update() method so\n\
-far. This is a 16-byte string which may contain non-ASCII characters,\n\
-including null bytes.");
-
-
-static PyObject *
-md5_hexdigest(md5object *self)
-{
-    md5_state_t mdContext;
-    unsigned char digest[16];
-    unsigned char hexdigest[32];
-    int i, j;
-
-    /* make a temporary copy, and perform the final */
-    mdContext = self->md5;
-    md5_finish(&mdContext, digest);
-
-    /* Make hex version of the digest */
-    for(i=j=0; i<16; i++) {
-        char c;
-        c = (digest[i] >> 4) & 0xf;
-        c = (c>9) ? c+'a'-10 : c + '0';
-        hexdigest[j++] = c;
-        c = (digest[i] & 0xf);
-        c = (c>9) ? c+'a'-10 : c + '0';
-        hexdigest[j++] = c;
-    }
-    return PyString_FromStringAndSize((char*)hexdigest, 32);
-}
-
-
-PyDoc_STRVAR(hexdigest_doc,
-"hexdigest() -> string\n\
-\n\
-Like digest(), but returns the digest as a string of hexadecimal digits.");
-
-
-static PyObject *
-md5_copy(md5object *self)
-{
-    md5object *md5p;
-
-    if ((md5p = newmd5object()) == NULL)
-        return NULL;
-
-    md5p->md5 = self->md5;
-
-    return (PyObject *)md5p;
-}
-
-PyDoc_STRVAR(copy_doc,
-"copy() -> md5 object\n\
-\n\
-Return a copy (``clone'') of the md5 object.");
-
-
-static PyMethodDef md5_methods[] = {
-    {"update",    (PyCFunction)md5_update,    METH_VARARGS, update_doc},
-    {"digest",    (PyCFunction)md5_digest,    METH_NOARGS,  digest_doc},
-    {"hexdigest", (PyCFunction)md5_hexdigest, METH_NOARGS,  hexdigest_doc},
-    {"copy",      (PyCFunction)md5_copy,      METH_NOARGS,  copy_doc},
-    {NULL, NULL}                             /* sentinel */
-};
-
-static PyObject *
-md5_get_block_size(PyObject *self, void *closure)
-{
-    return PyInt_FromLong(64);
-}
-
-static PyObject *
-md5_get_digest_size(PyObject *self, void *closure)
-{
-    return PyInt_FromLong(16);
-}
-
-static PyObject *
-md5_get_name(PyObject *self, void *closure)
-{
-    return PyString_FromStringAndSize("MD5", 3);
-}
-
-static PyGetSetDef md5_getseters[] = {
-    {"digest_size",
-     (getter)md5_get_digest_size, NULL,
-     NULL,
-     NULL},
-    {"block_size",
-     (getter)md5_get_block_size, NULL,
-     NULL,
-     NULL},
-    {"name",
-     (getter)md5_get_name, NULL,
-     NULL,
-     NULL},
-    /* the old md5 and sha modules support 'digest_size' as in PEP 247.
-     * the old sha module also supported 'digestsize'.  ugh. */
-    {"digestsize",
-     (getter)md5_get_digest_size, NULL,
-     NULL,
-     NULL},
-    {NULL}  /* Sentinel */
-};
-
-
-PyDoc_STRVAR(module_doc,
-"This module implements the interface to RSA's MD5 message digest\n\
-algorithm (see also Internet RFC 1321). Its use is quite\n\
-straightforward: use the new() to create an md5 object. You can now\n\
-feed this object with arbitrary strings using the update() method, and\n\
-at any point you can ask it for the digest (a strong kind of 128-bit\n\
-checksum, a.k.a. ``fingerprint'') of the concatenation of the strings\n\
-fed to it so far using the digest() method.\n\
-\n\
-Functions:\n\
-\n\
-new([arg]) -- return a new md5 object, initialized with arg if provided\n\
-md5([arg]) -- DEPRECATED, same as new, but for compatibility\n\
-\n\
-Special Objects:\n\
-\n\
-MD5Type -- type object for md5 objects");
-
-PyDoc_STRVAR(md5type_doc,
-"An md5 represents the object used to calculate the MD5 checksum of a\n\
-string of information.\n\
-\n\
-Methods:\n\
-\n\
-update() -- updates the current digest with an additional string\n\
-digest() -- return the current digest value\n\
-hexdigest() -- return the current digest as a string of hexadecimal digits\n\
-copy() -- return a copy of the current md5 object");
-
-static PyTypeObject MD5type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_md5.md5",                   /*tp_name*/
-    sizeof(md5object),            /*tp_size*/
-    0,                            /*tp_itemsize*/
-    /* methods */
-    (destructor)md5_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*/
-    Py_TPFLAGS_DEFAULT,           /*tp_flags*/
-    md5type_doc,                  /*tp_doc*/
-    0,                        /*tp_traverse*/
-    0,                            /*tp_clear*/
-    0,                            /*tp_richcompare*/
-    0,                            /*tp_weaklistoffset*/
-    0,                            /*tp_iter*/
-    0,                            /*tp_iternext*/
-    md5_methods,                  /*tp_methods*/
-    0,                            /*tp_members*/
-    md5_getseters,            /*tp_getset*/
-};
-
-
-/* MD5 functions */
-
-static PyObject *
-MD5_new(PyObject *self, PyObject *args)
-{
-    md5object *md5p;
-    Py_buffer view = { 0 };
-
-    if (!PyArg_ParseTuple(args, "|s*:new", &view))
-        return NULL;
-
-    if ((md5p = newmd5object()) == NULL) {
-        PyBuffer_Release(&view);
-        return NULL;
-    }
-
-    if (view.len > 0) {
-        md5_append(&md5p->md5, (unsigned char*)view.buf,
-               Py_SAFE_DOWNCAST(view.len, Py_ssize_t, unsigned int));
-    }
-    PyBuffer_Release(&view);
-
-    return (PyObject *)md5p;
-}
-
-PyDoc_STRVAR(new_doc,
-"new([arg]) -> md5 object\n\
-\n\
-Return a new md5 object. If arg is present, the method call update(arg)\n\
-is made.");
-
-
-/* List of functions exported by this module */
-
-static PyMethodDef md5_functions[] = {
-    {"new",             (PyCFunction)MD5_new, METH_VARARGS, new_doc},
-    {NULL,              NULL}   /* Sentinel */
-};
-
-
-/* Initialize this module. */
-
-PyMODINIT_FUNC
-init_md5(void)
-{
-    PyObject *m, *d;
-
-    Py_TYPE(&MD5type) = &PyType_Type;
-    if (PyType_Ready(&MD5type) < 0)
-        return;
-    m = Py_InitModule3("_md5", md5_functions, module_doc);
-    if (m == NULL)
-        return;
-    d = PyModule_GetDict(m);
-    PyDict_SetItemString(d, "MD5Type", (PyObject *)&MD5type);
-    PyModule_AddIntConstant(m, "digest_size", 16);
-    /* No need to check the error here, the caller will do that */
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/operator.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/operator.c
deleted file mode 100644
index c0f6bb8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/operator.c
+++ /dev/null
@@ -1,802 +0,0 @@
-
-#include "Python.h"
-
-PyDoc_STRVAR(operator_doc,
-"Operator interface.\n\
-\n\
-This module exports a set of functions implemented in C corresponding\n\
-to the intrinsic operators of Python.  For example, operator.add(x, y)\n\
-is equivalent to the expression x+y.  The function names are those\n\
-used for special methods; variants without leading and trailing\n\
-'__' are also provided for convenience.");
-
-#define spam1(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a1) { \
-  return AOP(a1); }
-
-#define spam2(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a) { \
-  PyObject *a1, *a2; \
-  if(! PyArg_UnpackTuple(a,#OP,2,2,&a1,&a2)) return NULL; \
-  return AOP(a1,a2); }
-
-#define spamoi(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a) { \
-  PyObject *a1; int a2; \
-  if(! PyArg_ParseTuple(a,"Oi:" #OP,&a1,&a2)) return NULL; \
-  return AOP(a1,a2); }
-
-#define spam2n(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a) { \
-  PyObject *a1, *a2; \
-  if(! PyArg_UnpackTuple(a,#OP,2,2,&a1,&a2)) return NULL; \
-  if(-1 == AOP(a1,a2)) return NULL; \
-  Py_INCREF(Py_None); \
-  return Py_None; }
-
-#define spam3n(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a) { \
-  PyObject *a1, *a2, *a3; \
-  if(! PyArg_UnpackTuple(a,#OP,3,3,&a1,&a2,&a3)) return NULL; \
-  if(-1 == AOP(a1,a2,a3)) return NULL; \
-  Py_INCREF(Py_None); \
-  return Py_None; }
-
-#define spami(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a1) { \
-  long r; \
-  if(-1 == (r=AOP(a1))) return NULL; \
-  return PyBool_FromLong(r); }
-
-#define spami2(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a) { \
-  PyObject *a1, *a2; long r; \
-  if(! PyArg_UnpackTuple(a,#OP,2,2,&a1,&a2)) return NULL; \
-  if(-1 == (r=AOP(a1,a2))) return NULL; \
-  return PyInt_FromLong(r); }
-
-#define spamn2(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a) { \
-  PyObject *a1, *a2; Py_ssize_t r; \
-  if(! PyArg_UnpackTuple(a,#OP,2,2,&a1,&a2)) return NULL; \
-  if(-1 == (r=AOP(a1,a2))) return NULL; \
-  return PyInt_FromSsize_t(r); }
-
-#define spami2b(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a) { \
-  PyObject *a1, *a2; long r; \
-  if(! PyArg_UnpackTuple(a,#OP,2,2,&a1,&a2)) return NULL; \
-  if(-1 == (r=AOP(a1,a2))) return NULL; \
-  return PyBool_FromLong(r); }
-
-#define spamrc(OP,A) static PyObject *OP(PyObject *s, PyObject *a) { \
-  PyObject *a1, *a2; \
-  if(! PyArg_UnpackTuple(a,#OP,2,2,&a1,&a2)) return NULL; \
-  return PyObject_RichCompare(a1,a2,A); }
-
-/* Deprecated operators that need warnings. */
-static int
-op_isCallable(PyObject *x)
-{
-    if (PyErr_WarnPy3k("operator.isCallable() is not supported in 3.x. "
-                       "Use hasattr(obj, '__call__').", 1) < 0)
-        return -1;
-    return PyCallable_Check(x);
-}
-
-static int
-op_sequenceIncludes(PyObject *seq, PyObject* ob)
-{
-    if (PyErr_WarnPy3k("operator.sequenceIncludes() is not supported "
-                       "in 3.x. Use operator.contains().", 1) < 0)
-        return -1;
-    return PySequence_Contains(seq, ob);
-}
-
-spami(isCallable       , op_isCallable)
-spami(isNumberType     , PyNumber_Check)
-spami(truth            , PyObject_IsTrue)
-spam2(op_add           , PyNumber_Add)
-spam2(op_sub           , PyNumber_Subtract)
-spam2(op_mul           , PyNumber_Multiply)
-spam2(op_div           , PyNumber_Divide)
-spam2(op_floordiv      , PyNumber_FloorDivide)
-spam2(op_truediv       , PyNumber_TrueDivide)
-spam2(op_mod           , PyNumber_Remainder)
-spam1(op_neg           , PyNumber_Negative)
-spam1(op_pos           , PyNumber_Positive)
-spam1(op_abs           , PyNumber_Absolute)
-spam1(op_inv           , PyNumber_Invert)
-spam1(op_invert        , PyNumber_Invert)
-spam2(op_lshift        , PyNumber_Lshift)
-spam2(op_rshift        , PyNumber_Rshift)
-spami(op_not_          , PyObject_Not)
-spam2(op_and_          , PyNumber_And)
-spam2(op_xor           , PyNumber_Xor)
-spam2(op_or_           , PyNumber_Or)
-spam2(op_iadd          , PyNumber_InPlaceAdd)
-spam2(op_isub          , PyNumber_InPlaceSubtract)
-spam2(op_imul          , PyNumber_InPlaceMultiply)
-spam2(op_idiv          , PyNumber_InPlaceDivide)
-spam2(op_ifloordiv     , PyNumber_InPlaceFloorDivide)
-spam2(op_itruediv      , PyNumber_InPlaceTrueDivide)
-spam2(op_imod          , PyNumber_InPlaceRemainder)
-spam2(op_ilshift       , PyNumber_InPlaceLshift)
-spam2(op_irshift       , PyNumber_InPlaceRshift)
-spam2(op_iand          , PyNumber_InPlaceAnd)
-spam2(op_ixor          , PyNumber_InPlaceXor)
-spam2(op_ior           , PyNumber_InPlaceOr)
-spami(isSequenceType   , PySequence_Check)
-spam2(op_concat        , PySequence_Concat)
-spamoi(op_repeat       , PySequence_Repeat)
-spam2(op_iconcat       , PySequence_InPlaceConcat)
-spamoi(op_irepeat      , PySequence_InPlaceRepeat)
-spami2b(op_contains     , PySequence_Contains)
-spami2b(sequenceIncludes, op_sequenceIncludes)
-spamn2(indexOf         , PySequence_Index)
-spamn2(countOf         , PySequence_Count)
-spami(isMappingType    , PyMapping_Check)
-spam2(op_getitem       , PyObject_GetItem)
-spam2n(op_delitem       , PyObject_DelItem)
-spam3n(op_setitem      , PyObject_SetItem)
-spamrc(op_lt           , Py_LT)
-spamrc(op_le           , Py_LE)
-spamrc(op_eq           , Py_EQ)
-spamrc(op_ne           , Py_NE)
-spamrc(op_gt           , Py_GT)
-spamrc(op_ge           , Py_GE)
-
-static PyObject*
-op_pow(PyObject *s, PyObject *a)
-{
-    PyObject *a1, *a2;
-    if (PyArg_UnpackTuple(a,"pow", 2, 2, &a1, &a2))
-        return PyNumber_Power(a1, a2, Py_None);
-    return NULL;
-}
-
-static PyObject*
-op_ipow(PyObject *s, PyObject *a)
-{
-    PyObject *a1, *a2;
-    if (PyArg_UnpackTuple(a,"ipow", 2, 2, &a1, &a2))
-        return PyNumber_InPlacePower(a1, a2, Py_None);
-    return NULL;
-}
-
-static PyObject *
-op_index(PyObject *s, PyObject *a)
-{
-    return PyNumber_Index(a);
-}
-
-static PyObject*
-is_(PyObject *s, PyObject *a)
-{
-    PyObject *a1, *a2, *result = NULL;
-    if (PyArg_UnpackTuple(a,"is_", 2, 2, &a1, &a2)) {
-        result = (a1 == a2) ? Py_True : Py_False;
-        Py_INCREF(result);
-    }
-    return result;
-}
-
-static PyObject*
-is_not(PyObject *s, PyObject *a)
-{
-    PyObject *a1, *a2, *result = NULL;
-    if (PyArg_UnpackTuple(a,"is_not", 2, 2, &a1, &a2)) {
-        result = (a1 != a2) ? Py_True : Py_False;
-        Py_INCREF(result);
-    }
-    return result;
-}
-
-static PyObject*
-op_getslice(PyObject *s, PyObject *a)
-{
-    PyObject *a1;
-    Py_ssize_t a2, a3;
-
-    if (!PyArg_ParseTuple(a, "Onn:getslice", &a1, &a2, &a3))
-        return NULL;
-    return PySequence_GetSlice(a1, a2, a3);
-}
-
-static PyObject*
-op_setslice(PyObject *s, PyObject *a)
-{
-    PyObject *a1, *a4;
-    Py_ssize_t a2, a3;
-
-    if (!PyArg_ParseTuple(a, "OnnO:setslice", &a1, &a2, &a3, &a4))
-        return NULL;
-
-    if (-1 == PySequence_SetSlice(a1, a2, a3, a4))
-        return NULL;
-
-    Py_RETURN_NONE;
-}
-
-static PyObject*
-op_delslice(PyObject *s, PyObject *a)
-{
-    PyObject *a1;
-    Py_ssize_t a2, a3;
-
-    if (!PyArg_ParseTuple(a, "Onn:delslice", &a1, &a2, &a3))
-        return NULL;
-
-    if (-1 == PySequence_DelSlice(a1, a2, a3))
-        return NULL;
-
-    Py_RETURN_NONE;
-}
-
-#undef spam1
-#undef spam2
-#undef spam1o
-#undef spam1o
-#define spam1(OP,DOC) {#OP, OP, METH_VARARGS, PyDoc_STR(DOC)},
-#define spam2(OP,ALTOP,DOC) {#OP, op_##OP, METH_VARARGS, PyDoc_STR(DOC)}, \
-                           {#ALTOP, op_##OP, METH_VARARGS, PyDoc_STR(DOC)},
-#define spam1o(OP,DOC) {#OP, OP, METH_O, PyDoc_STR(DOC)},
-#define spam2o(OP,ALTOP,DOC) {#OP, op_##OP, METH_O, PyDoc_STR(DOC)}, \
-                           {#ALTOP, op_##OP, METH_O, PyDoc_STR(DOC)},
-
-static struct PyMethodDef operator_methods[] = {
-
-spam1o(isCallable,
- "isCallable(a) -- Same as callable(a).")
-spam1o(isNumberType,
- "isNumberType(a) -- Return True if a has a numeric type, False otherwise.")
-spam1o(isSequenceType,
- "isSequenceType(a) -- Return True if a has a sequence type, False otherwise.")
-spam1o(truth,
- "truth(a) -- Return True if a is true, False otherwise.")
-spam2(contains,__contains__,
- "contains(a, b) -- Same as b in a (note reversed operands).")
-spam1(sequenceIncludes,
- "sequenceIncludes(a, b) -- Same as b in a (note reversed operands; deprecated).")
-spam1(indexOf,
- "indexOf(a, b) -- Return the first index of b in a.")
-spam1(countOf,
- "countOf(a, b) -- Return the number of times b occurs in a.")
-spam1o(isMappingType,
- "isMappingType(a) -- Return True if a has a mapping type, False otherwise.")
-
-spam1(is_, "is_(a, b) -- Same as a is b.")
-spam1(is_not, "is_not(a, b) -- Same as a is not b.")
-spam2o(index, __index__, "index(a) -- Same as a.__index__()")
-spam2(add,__add__, "add(a, b) -- Same as a + b.")
-spam2(sub,__sub__, "sub(a, b) -- Same as a - b.")
-spam2(mul,__mul__, "mul(a, b) -- Same as a * b.")
-spam2(div,__div__, "div(a, b) -- Same as a / b when __future__.division is not in effect.")
-spam2(floordiv,__floordiv__, "floordiv(a, b) -- Same as a // b.")
-spam2(truediv,__truediv__, "truediv(a, b) -- Same as a / b when __future__.division is in effect.")
-spam2(mod,__mod__, "mod(a, b) -- Same as a % b.")
-spam2o(neg,__neg__, "neg(a) -- Same as -a.")
-spam2o(pos,__pos__, "pos(a) -- Same as +a.")
-spam2o(abs,__abs__, "abs(a) -- Same as abs(a).")
-spam2o(inv,__inv__, "inv(a) -- Same as ~a.")
-spam2o(invert,__invert__, "invert(a) -- Same as ~a.")
-spam2(lshift,__lshift__, "lshift(a, b) -- Same as a << b.")
-spam2(rshift,__rshift__, "rshift(a, b) -- Same as a >> b.")
-spam2o(not_,__not__, "not_(a) -- Same as not a.")
-spam2(and_,__and__, "and_(a, b) -- Same as a & b.")
-spam2(xor,__xor__, "xor(a, b) -- Same as a ^ b.")
-spam2(or_,__or__, "or_(a, b) -- Same as a | b.")
-spam2(iadd,__iadd__, "a = iadd(a, b) -- Same as a += b.")
-spam2(isub,__isub__, "a = isub(a, b) -- Same as a -= b.")
-spam2(imul,__imul__, "a = imul(a, b) -- Same as a *= b.")
-spam2(idiv,__idiv__, "a = idiv(a, b) -- Same as a /= b when __future__.division is not in effect.")
-spam2(ifloordiv,__ifloordiv__, "a = ifloordiv(a, b) -- Same as a //= b.")
-spam2(itruediv,__itruediv__, "a = itruediv(a, b) -- Same as a /= b when __future__.division is in effect.")
-spam2(imod,__imod__, "a = imod(a, b) -- Same as a %= b.")
-spam2(ilshift,__ilshift__, "a = ilshift(a, b) -- Same as a <<= b.")
-spam2(irshift,__irshift__, "a = irshift(a, b) -- Same as a >>= b.")
-spam2(iand,__iand__, "a = iand(a, b) -- Same as a &= b.")
-spam2(ixor,__ixor__, "a = ixor(a, b) -- Same as a ^= b.")
-spam2(ior,__ior__, "a = ior(a, b) -- Same as a |= b.")
-spam2(concat,__concat__,
- "concat(a, b) -- Same as a + b, for a and b sequences.")
-spam2(repeat,__repeat__,
- "repeat(a, b) -- Return a * b, where a is a sequence, and b is an integer.")
-spam2(iconcat,__iconcat__,
- "a = iconcat(a, b) -- Same as a += b, for a and b sequences.")
-spam2(irepeat,__irepeat__,
- "a = irepeat(a, b) -- Same as a *= b, where a is a sequence, and b is an integer.")
-spam2(getitem,__getitem__,
- "getitem(a, b) -- Same as a[b].")
-spam2(setitem,__setitem__,
- "setitem(a, b, c) -- Same as a[b] = c.")
-spam2(delitem,__delitem__,
- "delitem(a, b) -- Same as del a[b].")
-spam2(pow,__pow__, "pow(a, b) -- Same as a ** b.")
-spam2(ipow,__ipow__, "a = ipow(a, b) -- Same as a **= b.")
-spam2(getslice,__getslice__,
- "getslice(a, b, c) -- Same as a[b:c].")
-spam2(setslice,__setslice__,
-"setslice(a, b, c, d) -- Same as a[b:c] = d.")
-spam2(delslice,__delslice__,
-"delslice(a, b, c) -- Same as del a[b:c].")
-spam2(lt,__lt__, "lt(a, b) -- Same as a<b.")
-spam2(le,__le__, "le(a, b) -- Same as a<=b.")
-spam2(eq,__eq__, "eq(a, b) -- Same as a==b.")
-spam2(ne,__ne__, "ne(a, b) -- Same as a!=b.")
-spam2(gt,__gt__, "gt(a, b) -- Same as a>b.")
-spam2(ge,__ge__, "ge(a, b) -- Same as a>=b.")
-
-    {NULL,              NULL}           /* sentinel */
-
-};
-
-/* itemgetter object **********************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    Py_ssize_t nitems;
-    PyObject *item;
-} itemgetterobject;
-
-static PyTypeObject itemgetter_type;
-
-static PyObject *
-itemgetter_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    itemgetterobject *ig;
-    PyObject *item;
-    Py_ssize_t nitems;
-
-    if (!_PyArg_NoKeywords("itemgetter()", kwds))
-        return NULL;
-
-    nitems = PyTuple_GET_SIZE(args);
-    if (nitems <= 1) {
-        if (!PyArg_UnpackTuple(args, "itemgetter", 1, 1, &item))
-            return NULL;
-    } else
-        item = args;
-
-    /* create itemgetterobject structure */
-    ig = PyObject_GC_New(itemgetterobject, &itemgetter_type);
-    if (ig == NULL)
-        return NULL;
-
-    Py_INCREF(item);
-    ig->item = item;
-    ig->nitems = nitems;
-
-    PyObject_GC_Track(ig);
-    return (PyObject *)ig;
-}
-
-static void
-itemgetter_dealloc(itemgetterobject *ig)
-{
-    PyObject_GC_UnTrack(ig);
-    Py_XDECREF(ig->item);
-    PyObject_GC_Del(ig);
-}
-
-static int
-itemgetter_traverse(itemgetterobject *ig, visitproc visit, void *arg)
-{
-    Py_VISIT(ig->item);
-    return 0;
-}
-
-static PyObject *
-itemgetter_call(itemgetterobject *ig, PyObject *args, PyObject *kw)
-{
-    PyObject *obj, *result;
-    Py_ssize_t i, nitems=ig->nitems;
-
-    if (!PyArg_UnpackTuple(args, "itemgetter", 1, 1, &obj))
-        return NULL;
-    if (nitems == 1)
-        return PyObject_GetItem(obj, ig->item);
-
-    assert(PyTuple_Check(ig->item));
-    assert(PyTuple_GET_SIZE(ig->item) == nitems);
-
-    result = PyTuple_New(nitems);
-    if (result == NULL)
-        return NULL;
-
-    for (i=0 ; i < nitems ; i++) {
-        PyObject *item, *val;
-        item = PyTuple_GET_ITEM(ig->item, i);
-        val = PyObject_GetItem(obj, item);
-        if (val == NULL) {
-            Py_DECREF(result);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(result, i, val);
-    }
-    return result;
-}
-
-PyDoc_STRVAR(itemgetter_doc,
-"itemgetter(item, ...) --> itemgetter object\n\
-\n\
-Return a callable object that fetches the given item(s) from its operand.\n\
-After, f=itemgetter(2), the call f(r) returns r[2].\n\
-After, g=itemgetter(2,5,3), the call g(r) returns (r[2], r[5], r[3])");
-
-static PyTypeObject itemgetter_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "operator.itemgetter",              /* tp_name */
-    sizeof(itemgetterobject),           /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)itemgetter_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 */
-    (ternaryfunc)itemgetter_call,       /* tp_call */
-    0,                                  /* tp_str */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,            /* tp_flags */
-    itemgetter_doc,                     /* tp_doc */
-    (traverseproc)itemgetter_traverse,          /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    itemgetter_new,                     /* tp_new */
-    0,                                  /* tp_free */
-};
-
-
-/* attrgetter object **********************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    Py_ssize_t nattrs;
-    PyObject *attr;
-} attrgetterobject;
-
-static PyTypeObject attrgetter_type;
-
-static PyObject *
-attrgetter_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    attrgetterobject *ag;
-    PyObject *attr;
-    Py_ssize_t nattrs;
-
-    if (!_PyArg_NoKeywords("attrgetter()", kwds))
-        return NULL;
-
-    nattrs = PyTuple_GET_SIZE(args);
-    if (nattrs <= 1) {
-        if (!PyArg_UnpackTuple(args, "attrgetter", 1, 1, &attr))
-            return NULL;
-    } else
-        attr = args;
-
-    /* create attrgetterobject structure */
-    ag = PyObject_GC_New(attrgetterobject, &attrgetter_type);
-    if (ag == NULL)
-        return NULL;
-
-    Py_INCREF(attr);
-    ag->attr = attr;
-    ag->nattrs = nattrs;
-
-    PyObject_GC_Track(ag);
-    return (PyObject *)ag;
-}
-
-static void
-attrgetter_dealloc(attrgetterobject *ag)
-{
-    PyObject_GC_UnTrack(ag);
-    Py_XDECREF(ag->attr);
-    PyObject_GC_Del(ag);
-}
-
-static int
-attrgetter_traverse(attrgetterobject *ag, visitproc visit, void *arg)
-{
-    Py_VISIT(ag->attr);
-    return 0;
-}
-
-static PyObject *
-dotted_getattr(PyObject *obj, PyObject *attr)
-{
-    char *s, *p;
-
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(attr)) {
-        attr = _PyUnicode_AsDefaultEncodedString(attr, NULL);
-        if (attr == NULL)
-            return NULL;
-    }
-#endif
-
-    if (!PyString_Check(attr)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "attribute name must be a string");
-        return NULL;
-    }
-
-    s = PyString_AS_STRING(attr);
-    Py_INCREF(obj);
-    for (;;) {
-        PyObject *newobj, *str;
-        p = strchr(s, '.');
-        str = p ? PyString_FromStringAndSize(s, (p-s)) :
-              PyString_FromString(s);
-        if (str == NULL) {
-            Py_DECREF(obj);
-            return NULL;
-        }
-        newobj = PyObject_GetAttr(obj, str);
-        Py_DECREF(str);
-        Py_DECREF(obj);
-        if (newobj == NULL)
-            return NULL;
-        obj = newobj;
-        if (p == NULL) break;
-        s = p+1;
-    }
-
-    return obj;
-}
-
-static PyObject *
-attrgetter_call(attrgetterobject *ag, PyObject *args, PyObject *kw)
-{
-    PyObject *obj, *result;
-    Py_ssize_t i, nattrs=ag->nattrs;
-
-    if (!PyArg_UnpackTuple(args, "attrgetter", 1, 1, &obj))
-        return NULL;
-    if (ag->nattrs == 1)
-        return dotted_getattr(obj, ag->attr);
-
-    assert(PyTuple_Check(ag->attr));
-    assert(PyTuple_GET_SIZE(ag->attr) == nattrs);
-
-    result = PyTuple_New(nattrs);
-    if (result == NULL)
-        return NULL;
-
-    for (i=0 ; i < nattrs ; i++) {
-        PyObject *attr, *val;
-        attr = PyTuple_GET_ITEM(ag->attr, i);
-        val = dotted_getattr(obj, attr);
-        if (val == NULL) {
-            Py_DECREF(result);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(result, i, val);
-    }
-    return result;
-}
-
-PyDoc_STRVAR(attrgetter_doc,
-"attrgetter(attr, ...) --> attrgetter object\n\
-\n\
-Return a callable object that fetches the given attribute(s) from its operand.\n\
-After, f=attrgetter('name'), the call f(r) returns r.name.\n\
-After, g=attrgetter('name', 'date'), the call g(r) returns (r.name, r.date).\n\
-After, h=attrgetter('name.first', 'name.last'), the call h(r) returns\n\
-(r.name.first, r.name.last).");
-
-static PyTypeObject attrgetter_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "operator.attrgetter",              /* tp_name */
-    sizeof(attrgetterobject),           /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)attrgetter_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 */
-    (ternaryfunc)attrgetter_call,       /* tp_call */
-    0,                                  /* tp_str */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,            /* tp_flags */
-    attrgetter_doc,                     /* tp_doc */
-    (traverseproc)attrgetter_traverse,          /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    attrgetter_new,                     /* tp_new */
-    0,                                  /* tp_free */
-};
-
-
-/* methodcaller object **********************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *name;
-    PyObject *args;
-    PyObject *kwds;
-} methodcallerobject;
-
-static PyTypeObject methodcaller_type;
-
-static PyObject *
-methodcaller_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    methodcallerobject *mc;
-    PyObject *name, *newargs;
-
-    if (PyTuple_GET_SIZE(args) < 1) {
-        PyErr_SetString(PyExc_TypeError, "methodcaller needs at least "
-                        "one argument, the method name");
-        return NULL;
-    }
-
-    /* create methodcallerobject structure */
-    mc = PyObject_GC_New(methodcallerobject, &methodcaller_type);
-    if (mc == NULL)
-        return NULL;
-
-    newargs = PyTuple_GetSlice(args, 1, PyTuple_GET_SIZE(args));
-    if (newargs == NULL) {
-        Py_DECREF(mc);
-        return NULL;
-    }
-    mc->args = newargs;
-
-    name = PyTuple_GET_ITEM(args, 0);
-    Py_INCREF(name);
-    mc->name = name;
-
-    Py_XINCREF(kwds);
-    mc->kwds = kwds;
-
-    PyObject_GC_Track(mc);
-    return (PyObject *)mc;
-}
-
-static void
-methodcaller_dealloc(methodcallerobject *mc)
-{
-    PyObject_GC_UnTrack(mc);
-    Py_XDECREF(mc->name);
-    Py_XDECREF(mc->args);
-    Py_XDECREF(mc->kwds);
-    PyObject_GC_Del(mc);
-}
-
-static int
-methodcaller_traverse(methodcallerobject *mc, visitproc visit, void *arg)
-{
-    Py_VISIT(mc->args);
-    Py_VISIT(mc->kwds);
-    return 0;
-}
-
-static PyObject *
-methodcaller_call(methodcallerobject *mc, PyObject *args, PyObject *kw)
-{
-    PyObject *method, *obj, *result;
-
-    if (!PyArg_UnpackTuple(args, "methodcaller", 1, 1, &obj))
-        return NULL;
-    method = PyObject_GetAttr(obj, mc->name);
-    if (method == NULL)
-        return NULL;
-    result = PyObject_Call(method, mc->args, mc->kwds);
-    Py_DECREF(method);
-    return result;
-}
-
-PyDoc_STRVAR(methodcaller_doc,
-"methodcaller(name, ...) --> methodcaller object\n\
-\n\
-Return a callable object that calls the given method on its operand.\n\
-After, f = methodcaller('name'), the call f(r) returns r.name().\n\
-After, g = methodcaller('name', 'date', foo=1), the call g(r) returns\n\
-r.name('date', foo=1).");
-
-static PyTypeObject methodcaller_type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "operator.methodcaller",            /* tp_name */
-    sizeof(methodcallerobject),         /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)methodcaller_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 */
-    (ternaryfunc)methodcaller_call,     /* tp_call */
-    0,                                  /* tp_str */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    methodcaller_doc,                           /* tp_doc */
-    (traverseproc)methodcaller_traverse,        /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iternext */
-    0,                                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    methodcaller_new,                   /* tp_new */
-    0,                                  /* tp_free */
-};
-
-
-/* Initialization function for the module (*must* be called initoperator) */
-
-PyMODINIT_FUNC
-initoperator(void)
-{
-    PyObject *m;
-
-    /* Create the module and add the functions */
-    m = Py_InitModule4("operator", operator_methods, operator_doc,
-                   (PyObject*)NULL, PYTHON_API_VERSION);
-    if (m == NULL)
-        return;
-
-    if (PyType_Ready(&itemgetter_type) < 0)
-        return;
-    Py_INCREF(&itemgetter_type);
-    PyModule_AddObject(m, "itemgetter", (PyObject *)&itemgetter_type);
-
-    if (PyType_Ready(&attrgetter_type) < 0)
-        return;
-    Py_INCREF(&attrgetter_type);
-    PyModule_AddObject(m, "attrgetter", (PyObject *)&attrgetter_type);
-
-    if (PyType_Ready(&methodcaller_type) < 0)
-        return;
-    Py_INCREF(&methodcaller_type);
-    PyModule_AddObject(m, "methodcaller", (PyObject *)&methodcaller_type);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/parsermodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/parsermodule.c
deleted file mode 100644
index 27b3357..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/parsermodule.c
+++ /dev/null
@@ -1,3464 +0,0 @@
-/*  parsermodule.c
- *
- *  Copyright 1995-1996 by Fred L. Drake, Jr. and Virginia Polytechnic
- *  Institute and State University, Blacksburg, Virginia, USA.
- *  Portions copyright 1991-1995 by Stichting Mathematisch Centrum,
- *  Amsterdam, The Netherlands.  Copying is permitted under the terms
- *  associated with the main Python distribution, with the additional
- *  restriction that this additional notice be included and maintained
- *  on all distributed copies.
- *
- *  This module serves to replace the original parser module written
- *  by Guido.  The functionality is not matched precisely, but the
- *  original may be implemented on top of this.  This is desirable
- *  since the source of the text to be parsed is now divorced from
- *  this interface.
- *
- *  Unlike the prior interface, the ability to give a parse tree
- *  produced by Python code as a tuple to the compiler is enabled by
- *  this module.  See the documentation for more details.
- *
- *  I've added some annotations that help with the lint code-checking
- *  program, but they're not complete by a long shot.  The real errors
- *  that lint detects are gone, but there are still warnings with
- *  Py_[X]DECREF() and Py_[X]INCREF() macros.  The lint annotations
- *  look like "NOTE(...)".
- */
-
-#include "Python.h"                     /* general Python API             */
-#include "Python-ast.h"                 /* mod_ty */
-#include "graminit.h"                   /* symbols defined in the grammar */
-#include "node.h"                       /* internal parser structure      */
-#include "errcode.h"                    /* error codes for PyNode_*()     */
-#include "token.h"                      /* token definitions              */
-#include "grammar.h"
-#include "parsetok.h"
-                                        /* ISTERMINAL() / ISNONTERMINAL() */
-#include "compile.h"
-#undef Yield
-#include "ast.h"
-#include "pyarena.h"
-
-extern grammar _PyParser_Grammar; /* From graminit.c */
-
-#ifdef lint
-#include <note.h>
-#else
-#define NOTE(x)
-#endif
-
-/*  String constants used to initialize module attributes.
- *
- */
-static char parser_copyright_string[] =
-"Copyright 1995-1996 by Virginia Polytechnic Institute & State\n\
-University, Blacksburg, Virginia, USA, and Fred L. Drake, Jr., Reston,\n\
-Virginia, USA.  Portions copyright 1991-1995 by Stichting Mathematisch\n\
-Centrum, Amsterdam, The Netherlands.";
-
-
-PyDoc_STRVAR(parser_doc_string,
-"This is an interface to Python's internal parser.");
-
-static char parser_version_string[] = "0.5";
-
-
-typedef PyObject* (*SeqMaker) (Py_ssize_t length);
-typedef int (*SeqInserter) (PyObject* sequence,
-                            Py_ssize_t index,
-                            PyObject* element);
-
-/*  The function below is copyrighted by Stichting Mathematisch Centrum.  The
- *  original copyright statement is included below, and continues to apply
- *  in full to the function immediately following.  All other material is
- *  original, copyrighted by Fred L. Drake, Jr. and Virginia Polytechnic
- *  Institute and State University.  Changes were made to comply with the
- *  new naming conventions.  Added arguments to provide support for creating
- *  lists as well as tuples, and optionally including the line numbers.
- */
-
-
-static PyObject*
-node2tuple(node *n,                     /* node to convert               */
-           SeqMaker mkseq,              /* create sequence               */
-           SeqInserter addelem,         /* func. to add elem. in seq.    */
-           int lineno,                  /* include line numbers?         */
-           int col_offset)              /* include column offsets?       */
-{
-    if (n == NULL) {
-        Py_INCREF(Py_None);
-        return (Py_None);
-    }
-    if (ISNONTERMINAL(TYPE(n))) {
-        int i;
-        PyObject *v;
-        PyObject *w;
-
-        v = mkseq(1 + NCH(n) + (TYPE(n) == encoding_decl));
-        if (v == NULL)
-            return (v);
-        w = PyInt_FromLong(TYPE(n));
-        if (w == NULL) {
-            Py_DECREF(v);
-            return ((PyObject*) NULL);
-        }
-        (void) addelem(v, 0, w);
-        for (i = 0; i < NCH(n); i++) {
-            w = node2tuple(CHILD(n, i), mkseq, addelem, lineno, col_offset);
-            if (w == NULL) {
-                Py_DECREF(v);
-                return ((PyObject*) NULL);
-            }
-            (void) addelem(v, i+1, w);
-        }
-
-        if (TYPE(n) == encoding_decl)
-            (void) addelem(v, i+1, PyString_FromString(STR(n)));
-        return (v);
-    }
-    else if (ISTERMINAL(TYPE(n))) {
-        PyObject *result = mkseq(2 + lineno + col_offset);
-        if (result != NULL) {
-            (void) addelem(result, 0, PyInt_FromLong(TYPE(n)));
-            (void) addelem(result, 1, PyString_FromString(STR(n)));
-            if (lineno == 1)
-                (void) addelem(result, 2, PyInt_FromLong(n->n_lineno));
-            if (col_offset == 1)
-                (void) addelem(result, 3, PyInt_FromLong(n->n_col_offset));
-        }
-        return (result);
-    }
-    else {
-        PyErr_SetString(PyExc_SystemError,
-                        "unrecognized parse tree node type");
-        return ((PyObject*) NULL);
-    }
-}
-/*
- *  End of material copyrighted by Stichting Mathematisch Centrum.
- */
-
-
-
-/*  There are two types of intermediate objects we're interested in:
- *  'eval' and 'exec' types.  These constants can be used in the st_type
- *  field of the object type to identify which any given object represents.
- *  These should probably go in an external header to allow other extensions
- *  to use them, but then, we really should be using C++ too.  ;-)
- */
-
-#define PyST_EXPR  1
-#define PyST_SUITE 2
-
-
-/*  These are the internal objects and definitions required to implement the
- *  ST type.  Most of the internal names are more reminiscent of the 'old'
- *  naming style, but the code uses the new naming convention.
- */
-
-static PyObject*
-parser_error = 0;
-
-
-typedef struct {
-    PyObject_HEAD                       /* standard object header           */
-    node* st_node;                      /* the node* returned by the parser */
-    int   st_type;                      /* EXPR or SUITE ?                  */
-    PyCompilerFlags st_flags;           /* Parser and compiler flags        */
-} PyST_Object;
-
-
-static void parser_free(PyST_Object *st);
-static int parser_compare(PyST_Object *left, PyST_Object *right);
-static PyObject *parser_getattr(PyObject *self, char *name);
-
-
-static
-PyTypeObject PyST_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "parser.st",                        /* tp_name              */
-    (int) sizeof(PyST_Object),          /* tp_basicsize         */
-    0,                                  /* tp_itemsize          */
-    (destructor)parser_free,            /* tp_dealloc           */
-    0,                                  /* tp_print             */
-    parser_getattr,                     /* tp_getattr           */
-    0,                                  /* tp_setattr           */
-    (cmpfunc)parser_compare,            /* 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          */
-
-    /* Functions to access object as input/output buffer */
-    0,                                  /* tp_as_buffer         */
-
-    Py_TPFLAGS_DEFAULT,                 /* tp_flags             */
-
-    /* __doc__ */
-    "Intermediate representation of a Python parse tree."
-};  /* PyST_Type */
-
-
-static int
-parser_compare_nodes(node *left, node *right)
-{
-    int j;
-
-    if (TYPE(left) < TYPE(right))
-        return (-1);
-
-    if (TYPE(right) < TYPE(left))
-        return (1);
-
-    if (ISTERMINAL(TYPE(left)))
-        return (strcmp(STR(left), STR(right)));
-
-    if (NCH(left) < NCH(right))
-        return (-1);
-
-    if (NCH(right) < NCH(left))
-        return (1);
-
-    for (j = 0; j < NCH(left); ++j) {
-        int v = parser_compare_nodes(CHILD(left, j), CHILD(right, j));
-
-        if (v != 0)
-            return (v);
-    }
-    return (0);
-}
-
-
-/*  int parser_compare(PyST_Object* left, PyST_Object* right)
- *
- *  Comparison function used by the Python operators ==, !=, <, >, <=, >=
- *  This really just wraps a call to parser_compare_nodes() with some easy
- *  checks and protection code.
- *
- */
-static int
-parser_compare(PyST_Object *left, PyST_Object *right)
-{
-    if (left == right)
-        return (0);
-
-    if ((left == 0) || (right == 0))
-        return (-1);
-
-    return (parser_compare_nodes(left->st_node, right->st_node));
-}
-
-
-/*  parser_newstobject(node* st)
- *
- *  Allocates a new Python object representing an ST.  This is simply the
- *  'wrapper' object that holds a node* and allows it to be passed around in
- *  Python code.
- *
- */
-static PyObject*
-parser_newstobject(node *st, int type)
-{
-    PyST_Object* o = PyObject_New(PyST_Object, &PyST_Type);
-
-    if (o != 0) {
-        o->st_node = st;
-        o->st_type = type;
-        o->st_flags.cf_flags = 0;
-    }
-    else {
-        PyNode_Free(st);
-    }
-    return ((PyObject*)o);
-}
-
-
-/*  void parser_free(PyST_Object* st)
- *
- *  This is called by a del statement that reduces the reference count to 0.
- *
- */
-static void
-parser_free(PyST_Object *st)
-{
-    PyNode_Free(st->st_node);
-    PyObject_Del(st);
-}
-
-
-/*  parser_st2tuple(PyObject* self, PyObject* args, PyObject* kw)
- *
- *  This provides conversion from a node* to a tuple object that can be
- *  returned to the Python-level caller.  The ST object is not modified.
- *
- */
-static PyObject*
-parser_st2tuple(PyST_Object *self, PyObject *args, PyObject *kw)
-{
-    PyObject *line_option = 0;
-    PyObject *col_option = 0;
-    PyObject *res = 0;
-    int ok;
-
-    static char *keywords[] = {"ast", "line_info", "col_info", NULL};
-
-    if (self == NULL) {
-        ok = PyArg_ParseTupleAndKeywords(args, kw, "O!|OO:st2tuple", keywords,
-                                         &PyST_Type, &self, &line_option,
-                                         &col_option);
-    }
-    else
-        ok = PyArg_ParseTupleAndKeywords(args, kw, "|OO:totuple", &keywords[1],
-                                         &line_option, &col_option);
-    if (ok != 0) {
-        int lineno = 0;
-        int col_offset = 0;
-        if (line_option != NULL) {
-            lineno = (PyObject_IsTrue(line_option) != 0) ? 1 : 0;
-        }
-        if (col_option != NULL) {
-            col_offset = (PyObject_IsTrue(col_option) != 0) ? 1 : 0;
-        }
-        /*
-         *  Convert ST into a tuple representation.  Use Guido's function,
-         *  since it's known to work already.
-         */
-        res = node2tuple(((PyST_Object*)self)->st_node,
-                         PyTuple_New, PyTuple_SetItem, lineno, col_offset);
-    }
-    return (res);
-}
-
-static PyObject*
-parser_ast2tuple(PyST_Object *self, PyObject *args, PyObject *kw)
-{
-    if (PyErr_WarnPy3k("ast2tuple is removed in 3.x; use st2tuple", 1) < 0)
-        return NULL;
-    return parser_st2tuple(self, args, kw);
-}
-
-
-/*  parser_st2list(PyObject* self, PyObject* args, PyObject* kw)
- *
- *  This provides conversion from a node* to a list object that can be
- *  returned to the Python-level caller.  The ST object is not modified.
- *
- */
-static PyObject*
-parser_st2list(PyST_Object *self, PyObject *args, PyObject *kw)
-{
-    PyObject *line_option = 0;
-    PyObject *col_option = 0;
-    PyObject *res = 0;
-    int ok;
-
-    static char *keywords[] = {"ast", "line_info", "col_info", NULL};
-
-    if (self == NULL)
-        ok = PyArg_ParseTupleAndKeywords(args, kw, "O!|OO:st2list", keywords,
-                                         &PyST_Type, &self, &line_option,
-                                         &col_option);
-    else
-        ok = PyArg_ParseTupleAndKeywords(args, kw, "|OO:tolist", &keywords[1],
-                                         &line_option, &col_option);
-    if (ok) {
-        int lineno = 0;
-        int col_offset = 0;
-        if (line_option != 0) {
-            lineno = PyObject_IsTrue(line_option) ? 1 : 0;
-        }
-        if (col_option != NULL) {
-            col_offset = (PyObject_IsTrue(col_option) != 0) ? 1 : 0;
-        }
-        /*
-         *  Convert ST into a tuple representation.  Use Guido's function,
-         *  since it's known to work already.
-         */
-        res = node2tuple(self->st_node,
-                         PyList_New, PyList_SetItem, lineno, col_offset);
-    }
-    return (res);
-}
-
-static PyObject*
-parser_ast2list(PyST_Object *self, PyObject *args, PyObject *kw)
-{
-    if (PyErr_WarnPy3k("ast2list is removed in 3.x; use st2list", 1) < 0)
-        return NULL;
-    return parser_st2list(self, args, kw);
-}
-
-
-/*  parser_compilest(PyObject* self, PyObject* args)
- *
- *  This function creates code objects from the parse tree represented by
- *  the passed-in data object.  An optional file name is passed in as well.
- *
- */
-static PyObject*
-parser_compilest(PyST_Object *self, PyObject *args, PyObject *kw)
-{
-    PyObject*     res = 0;
-    PyArena*      arena;
-    mod_ty        mod;
-    char*         str = "<syntax-tree>";
-    int ok;
-
-    static char *keywords[] = {"ast", "filename", NULL};
-
-    if (self == NULL)
-        ok = PyArg_ParseTupleAndKeywords(args, kw, "O!|s:compilest", keywords,
-                                         &PyST_Type, &self, &str);
-    else
-        ok = PyArg_ParseTupleAndKeywords(args, kw, "|s:compile", &keywords[1],
-                                         &str);
-
-    if (ok) {
-        arena = PyArena_New();
-        if (arena) {
-           mod = PyAST_FromNode(self->st_node, &(self->st_flags), str, arena);
-           if (mod) {
-               res = (PyObject *)PyAST_Compile(mod, str, &(self->st_flags), arena);
-           }
-           PyArena_Free(arena);
-        }
-    }
-
-    return (res);
-}
-
-static PyObject*
-parser_compileast(PyST_Object *self, PyObject *args, PyObject *kw)
-{
-    if (PyErr_WarnPy3k("compileast is removed in 3.x; use compilest", 1) < 0)
-        return NULL;
-    return parser_compilest(self, args, kw);
-}
-
-
-/*  PyObject* parser_isexpr(PyObject* self, PyObject* args)
- *  PyObject* parser_issuite(PyObject* self, PyObject* args)
- *
- *  Checks the passed-in ST object to determine if it is an expression or
- *  a statement suite, respectively.  The return is a Python truth value.
- *
- */
-static PyObject*
-parser_isexpr(PyST_Object *self, PyObject *args, PyObject *kw)
-{
-    PyObject* res = 0;
-    int ok;
-
-    static char *keywords[] = {"ast", NULL};
-
-    if (self == NULL)
-        ok = PyArg_ParseTupleAndKeywords(args, kw, "O!:isexpr", keywords,
-                                         &PyST_Type, &self);
-    else
-        ok = PyArg_ParseTupleAndKeywords(args, kw, ":isexpr", &keywords[1]);
-
-    if (ok) {
-        /* Check to see if the ST represents an expression or not. */
-        res = (self->st_type == PyST_EXPR) ? Py_True : Py_False;
-        Py_INCREF(res);
-    }
-    return (res);
-}
-
-
-static PyObject*
-parser_issuite(PyST_Object *self, PyObject *args, PyObject *kw)
-{
-    PyObject* res = 0;
-    int ok;
-
-    static char *keywords[] = {"ast", NULL};
-
-    if (self == NULL)
-        ok = PyArg_ParseTupleAndKeywords(args, kw, "O!:issuite", keywords,
-                                         &PyST_Type, &self);
-    else
-        ok = PyArg_ParseTupleAndKeywords(args, kw, ":issuite", &keywords[1]);
-
-    if (ok) {
-        /* Check to see if the ST represents an expression or not. */
-        res = (self->st_type == PyST_EXPR) ? Py_False : Py_True;
-        Py_INCREF(res);
-    }
-    return (res);
-}
-
-
-#define PUBLIC_METHOD_TYPE (METH_VARARGS|METH_KEYWORDS)
-
-static PyMethodDef
-parser_methods[] = {
-    {"compile",         (PyCFunction)parser_compilest,  PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Compile this ST object into a code object.")},
-    {"isexpr",          (PyCFunction)parser_isexpr,     PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Determines if this ST object was created from an expression.")},
-    {"issuite",         (PyCFunction)parser_issuite,    PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Determines if this ST object was created from a suite.")},
-    {"tolist",          (PyCFunction)parser_st2list,    PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Creates a list-tree representation of this ST.")},
-    {"totuple",         (PyCFunction)parser_st2tuple,   PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Creates a tuple-tree representation of this ST.")},
-
-    {NULL, NULL, 0, NULL}
-};
-
-
-static PyObject*
-parser_getattr(PyObject *self, char *name)
-{
-    return (Py_FindMethod(parser_methods, self, name));
-}
-
-
-/*  err_string(char* message)
- *
- *  Sets the error string for an exception of type ParserError.
- *
- */
-static void
-err_string(char *message)
-{
-    PyErr_SetString(parser_error, message);
-}
-
-
-/*  PyObject* parser_do_parse(PyObject* args, int type)
- *
- *  Internal function to actually execute the parse and return the result if
- *  successful or set an exception if not.
- *
- */
-static PyObject*
-parser_do_parse(PyObject *args, PyObject *kw, char *argspec, int type)
-{
-    char*     string = 0;
-    PyObject* res    = 0;
-    int flags        = 0;
-    perrdetail err;
-
-    static char *keywords[] = {"source", NULL};
-
-    if (PyArg_ParseTupleAndKeywords(args, kw, argspec, keywords, &string)) {
-        node* n = PyParser_ParseStringFlagsFilenameEx(string, NULL,
-                                                       &_PyParser_Grammar,
-                                                      (type == PyST_EXPR)
-                                                      ? eval_input : file_input,
-                                                      &err, &flags);
-
-        if (n) {
-            res = parser_newstobject(n, type);
-            if (res)
-                ((PyST_Object *)res)->st_flags.cf_flags = flags & PyCF_MASK;
-        }
-        else
-            PyParser_SetError(&err);
-    }
-    return (res);
-}
-
-
-/*  PyObject* parser_expr(PyObject* self, PyObject* args)
- *  PyObject* parser_suite(PyObject* self, PyObject* args)
- *
- *  External interfaces to the parser itself.  Which is called determines if
- *  the parser attempts to recognize an expression ('eval' form) or statement
- *  suite ('exec' form).  The real work is done by parser_do_parse() above.
- *
- */
-static PyObject*
-parser_expr(PyST_Object *self, PyObject *args, PyObject *kw)
-{
-    NOTE(ARGUNUSED(self))
-    return (parser_do_parse(args, kw, "s:expr", PyST_EXPR));
-}
-
-
-static PyObject*
-parser_suite(PyST_Object *self, PyObject *args, PyObject *kw)
-{
-    NOTE(ARGUNUSED(self))
-    return (parser_do_parse(args, kw, "s:suite", PyST_SUITE));
-}
-
-
-
-/*  This is the messy part of the code.  Conversion from a tuple to an ST
- *  object requires that the input tuple be valid without having to rely on
- *  catching an exception from the compiler.  This is done to allow the
- *  compiler itself to remain fast, since most of its input will come from
- *  the parser directly, and therefore be known to be syntactically correct.
- *  This validation is done to ensure that we don't core dump the compile
- *  phase, returning an exception instead.
- *
- *  Two aspects can be broken out in this code:  creating a node tree from
- *  the tuple passed in, and verifying that it is indeed valid.  It may be
- *  advantageous to expand the number of ST types to include funcdefs and
- *  lambdadefs to take advantage of the optimizer, recognizing those STs
- *  here.  They are not necessary, and not quite as useful in a raw form.
- *  For now, let's get expressions and suites working reliably.
- */
-
-
-static node* build_node_tree(PyObject *tuple);
-static int   validate_expr_tree(node *tree);
-static int   validate_file_input(node *tree);
-static int   validate_encoding_decl(node *tree);
-
-/*  PyObject* parser_tuple2st(PyObject* self, PyObject* args)
- *
- *  This is the public function, called from the Python code.  It receives a
- *  single tuple object from the caller, and creates an ST object if the
- *  tuple can be validated.  It does this by checking the first code of the
- *  tuple, and, if acceptable, builds the internal representation.  If this
- *  step succeeds, the internal representation is validated as fully as
- *  possible with the various validate_*() routines defined below.
- *
- *  This function must be changed if support is to be added for PyST_FRAGMENT
- *  ST objects.
- *
- */
-static PyObject*
-parser_tuple2st(PyST_Object *self, PyObject *args, PyObject *kw)
-{
-    NOTE(ARGUNUSED(self))
-    PyObject *st = 0;
-    PyObject *tuple;
-    node *tree;
-
-    static char *keywords[] = {"sequence", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "O:sequence2st", keywords,
-                                     &tuple))
-        return (0);
-    if (!PySequence_Check(tuple)) {
-        PyErr_SetString(PyExc_ValueError,
-                        "sequence2st() requires a single sequence argument");
-        return (0);
-    }
-    /*
-     *  Convert the tree to the internal form before checking it.
-     */
-    tree = build_node_tree(tuple);
-    if (tree != 0) {
-        int start_sym = TYPE(tree);
-        if (start_sym == eval_input) {
-            /*  Might be an eval form.  */
-            if (validate_expr_tree(tree))
-                st = parser_newstobject(tree, PyST_EXPR);
-            else
-                PyNode_Free(tree);
-        }
-        else if (start_sym == file_input) {
-            /*  This looks like an exec form so far.  */
-            if (validate_file_input(tree))
-                st = parser_newstobject(tree, PyST_SUITE);
-            else
-                PyNode_Free(tree);
-        }
-        else if (start_sym == encoding_decl) {
-            /* This looks like an encoding_decl so far. */
-            if (validate_encoding_decl(tree))
-                st = parser_newstobject(tree, PyST_SUITE);
-            else
-                PyNode_Free(tree);
-        }
-        else {
-            /*  This is a fragment, at best. */
-            PyNode_Free(tree);
-            err_string("parse tree does not use a valid start symbol");
-        }
-    }
-    /*  Make sure we throw an exception on all errors.  We should never
-     *  get this, but we'd do well to be sure something is done.
-     */
-    if (st == NULL && !PyErr_Occurred())
-        err_string("unspecified ST error occurred");
-
-    return st;
-}
-
-static PyObject*
-parser_tuple2ast(PyST_Object *self, PyObject *args, PyObject *kw)
-{
-    if (PyErr_WarnPy3k("tuple2ast is removed in 3.x; use tuple2st", 1) < 0)
-        return NULL;
-    return parser_tuple2st(self, args, kw);
-}
-
-
-/*  node* build_node_children()
- *
- *  Iterate across the children of the current non-terminal node and build
- *  their structures.  If successful, return the root of this portion of
- *  the tree, otherwise, 0.  Any required exception will be specified already,
- *  and no memory will have been deallocated.
- *
- */
-static node*
-build_node_children(PyObject *tuple, node *root, int *line_num)
-{
-    Py_ssize_t len = PyObject_Size(tuple);
-    Py_ssize_t i;
-    int  err;
-
-    for (i = 1; i < len; ++i) {
-        /* elem must always be a sequence, however simple */
-        PyObject* elem = PySequence_GetItem(tuple, i);
-        int ok = elem != NULL;
-        long  type = 0;
-        char *strn = 0;
-
-        if (ok)
-            ok = PySequence_Check(elem);
-        if (ok) {
-            PyObject *temp = PySequence_GetItem(elem, 0);
-            if (temp == NULL)
-                ok = 0;
-            else {
-                ok = PyInt_Check(temp);
-                if (ok)
-                    type = PyInt_AS_LONG(temp);
-                Py_DECREF(temp);
-            }
-        }
-        if (!ok) {
-            PyObject *err = Py_BuildValue("os", elem,
-                                          "Illegal node construct.");
-            PyErr_SetObject(parser_error, err);
-            Py_XDECREF(err);
-            Py_XDECREF(elem);
-            return (0);
-        }
-        if (ISTERMINAL(type)) {
-            Py_ssize_t len = PyObject_Size(elem);
-            PyObject *temp;
-
-            if ((len != 2) && (len != 3)) {
-                err_string("terminal nodes must have 2 or 3 entries");
-                return 0;
-            }
-            temp = PySequence_GetItem(elem, 1);
-            if (temp == NULL)
-                return 0;
-            if (!PyString_Check(temp)) {
-                PyErr_Format(parser_error,
-                             "second item in terminal node must be a string,"
-                             " found %s",
-                             Py_TYPE(temp)->tp_name);
-                Py_DECREF(temp);
-                return 0;
-            }
-            if (len == 3) {
-                PyObject *o = PySequence_GetItem(elem, 2);
-                if (o != NULL) {
-                    if (PyInt_Check(o))
-                        *line_num = PyInt_AS_LONG(o);
-                    else {
-                        PyErr_Format(parser_error,
-                                     "third item in terminal node must be an"
-                                     " integer, found %s",
-                                     Py_TYPE(temp)->tp_name);
-                        Py_DECREF(o);
-                        Py_DECREF(temp);
-                        return 0;
-                    }
-                    Py_DECREF(o);
-                }
-            }
-            len = PyString_GET_SIZE(temp) + 1;
-            strn = (char *)PyObject_MALLOC(len);
-            if (strn != NULL)
-                (void) memcpy(strn, PyString_AS_STRING(temp), len);
-            Py_DECREF(temp);
-        }
-        else if (!ISNONTERMINAL(type)) {
-            /*
-             *  It has to be one or the other; this is an error.
-             *  Throw an exception.
-             */
-            PyObject *err = Py_BuildValue("os", elem, "unknown node type.");
-            PyErr_SetObject(parser_error, err);
-            Py_XDECREF(err);
-            Py_XDECREF(elem);
-            return (0);
-        }
-        err = PyNode_AddChild(root, type, strn, *line_num, 0);
-        if (err == E_NOMEM) {
-            PyObject_FREE(strn);
-            return (node *) PyErr_NoMemory();
-        }
-        if (err == E_OVERFLOW) {
-            PyObject_FREE(strn);
-            PyErr_SetString(PyExc_ValueError,
-                            "unsupported number of child nodes");
-            return NULL;
-        }
-
-        if (ISNONTERMINAL(type)) {
-            node* new_child = CHILD(root, i - 1);
-
-            if (new_child != build_node_children(elem, new_child, line_num)) {
-                Py_XDECREF(elem);
-                return (0);
-            }
-        }
-        else if (type == NEWLINE) {     /* It's true:  we increment the     */
-            ++(*line_num);              /* line number *after* the newline! */
-        }
-        Py_XDECREF(elem);
-    }
-    return root;
-}
-
-
-static node*
-build_node_tree(PyObject *tuple)
-{
-    node* res = 0;
-    PyObject *temp = PySequence_GetItem(tuple, 0);
-    long num = -1;
-
-    if (temp != NULL)
-        num = PyInt_AsLong(temp);
-    Py_XDECREF(temp);
-    if (ISTERMINAL(num)) {
-        /*
-         *  The tuple is simple, but it doesn't start with a start symbol.
-         *  Throw an exception now and be done with it.
-         */
-        tuple = Py_BuildValue("os", tuple,
-                    "Illegal syntax-tree; cannot start with terminal symbol.");
-        PyErr_SetObject(parser_error, tuple);
-        Py_XDECREF(tuple);
-    }
-    else if (ISNONTERMINAL(num)) {
-        /*
-         *  Not efficient, but that can be handled later.
-         */
-        int line_num = 0;
-        PyObject *encoding = NULL;
-
-        if (num == encoding_decl) {
-            encoding = PySequence_GetItem(tuple, 2);
-            /* tuple isn't borrowed anymore here, need to DECREF */
-            tuple = PySequence_GetSlice(tuple, 0, 2);
-        }
-        res = PyNode_New(num);
-        if (res != NULL) {
-            if (res != build_node_children(tuple, res, &line_num)) {
-                PyNode_Free(res);
-                res = NULL;
-            }
-            if (res && encoding) {
-                Py_ssize_t len;
-                len = PyString_GET_SIZE(encoding) + 1;
-                res->n_str = (char *)PyObject_MALLOC(len);
-                if (res->n_str != NULL)
-                    (void) memcpy(res->n_str, PyString_AS_STRING(encoding), len);
-                Py_DECREF(encoding);
-                Py_DECREF(tuple);
-            }
-        }
-    }
-    else {
-        /*  The tuple is illegal -- if the number is neither TERMINAL nor
-         *  NONTERMINAL, we can't use it.  Not sure the implementation
-         *  allows this condition, but the API doesn't preclude it.
-         */
-        PyObject *err = Py_BuildValue("os", tuple,
-                                      "Illegal component tuple.");
-        PyErr_SetObject(parser_error, err);
-        Py_XDECREF(err);
-    }
-
-    return (res);
-}
-
-
-/*
- *  Validation routines used within the validation section:
- */
-static int validate_terminal(node *terminal, int type, char *string);
-
-#define validate_ampersand(ch)  validate_terminal(ch,      AMPER, "&")
-#define validate_circumflex(ch) validate_terminal(ch, CIRCUMFLEX, "^")
-#define validate_colon(ch)      validate_terminal(ch,      COLON, ":")
-#define validate_comma(ch)      validate_terminal(ch,      COMMA, ",")
-#define validate_dedent(ch)     validate_terminal(ch,     DEDENT, "")
-#define validate_equal(ch)      validate_terminal(ch,      EQUAL, "=")
-#define validate_indent(ch)     validate_terminal(ch,     INDENT, (char*)NULL)
-#define validate_lparen(ch)     validate_terminal(ch,       LPAR, "(")
-#define validate_newline(ch)    validate_terminal(ch,    NEWLINE, (char*)NULL)
-#define validate_rparen(ch)     validate_terminal(ch,       RPAR, ")")
-#define validate_semi(ch)       validate_terminal(ch,       SEMI, ";")
-#define validate_star(ch)       validate_terminal(ch,       STAR, "*")
-#define validate_vbar(ch)       validate_terminal(ch,       VBAR, "|")
-#define validate_doublestar(ch) validate_terminal(ch, DOUBLESTAR, "**")
-#define validate_dot(ch)        validate_terminal(ch,        DOT, ".")
-#define validate_at(ch)         validate_terminal(ch,         AT, "@")
-#define validate_name(ch, str)  validate_terminal(ch,       NAME, str)
-
-#define VALIDATER(n)    static int validate_##n(node *tree)
-
-VALIDATER(node);                VALIDATER(small_stmt);
-VALIDATER(class);               VALIDATER(node);
-VALIDATER(parameters);          VALIDATER(suite);
-VALIDATER(testlist);            VALIDATER(varargslist);
-VALIDATER(fpdef);               VALIDATER(fplist);
-VALIDATER(stmt);                VALIDATER(simple_stmt);
-VALIDATER(expr_stmt);           VALIDATER(power);
-VALIDATER(print_stmt);          VALIDATER(del_stmt);
-VALIDATER(return_stmt);         VALIDATER(list_iter);
-VALIDATER(raise_stmt);          VALIDATER(import_stmt);
-VALIDATER(import_name);         VALIDATER(import_from);
-VALIDATER(global_stmt);         VALIDATER(list_if);
-VALIDATER(assert_stmt);         VALIDATER(list_for);
-VALIDATER(exec_stmt);           VALIDATER(compound_stmt);
-VALIDATER(while);               VALIDATER(for);
-VALIDATER(try);                 VALIDATER(except_clause);
-VALIDATER(test);                VALIDATER(and_test);
-VALIDATER(not_test);            VALIDATER(comparison);
-VALIDATER(comp_op);             VALIDATER(expr);
-VALIDATER(xor_expr);            VALIDATER(and_expr);
-VALIDATER(shift_expr);          VALIDATER(arith_expr);
-VALIDATER(term);                VALIDATER(factor);
-VALIDATER(atom);                VALIDATER(lambdef);
-VALIDATER(trailer);             VALIDATER(subscript);
-VALIDATER(subscriptlist);       VALIDATER(sliceop);
-VALIDATER(exprlist);            VALIDATER(dictorsetmaker);
-VALIDATER(arglist);             VALIDATER(argument);
-VALIDATER(listmaker);           VALIDATER(yield_stmt);
-VALIDATER(testlist1);           VALIDATER(comp_for);
-VALIDATER(comp_iter);           VALIDATER(comp_if);
-VALIDATER(testlist_comp);       VALIDATER(yield_expr);
-VALIDATER(yield_or_testlist);   VALIDATER(or_test);
-VALIDATER(old_test);            VALIDATER(old_lambdef);
-
-#undef VALIDATER
-
-#define is_even(n)      (((n) & 1) == 0)
-#define is_odd(n)       (((n) & 1) == 1)
-
-
-static int
-validate_ntype(node *n, int t)
-{
-    if (TYPE(n) != t) {
-        PyErr_Format(parser_error, "Expected node type %d, got %d.",
-                     t, TYPE(n));
-        return 0;
-    }
-    return 1;
-}
-
-
-/*  Verifies that the number of child nodes is exactly 'num', raising
- *  an exception if it isn't.  The exception message does not indicate
- *  the exact number of nodes, allowing this to be used to raise the
- *  "right" exception when the wrong number of nodes is present in a
- *  specific variant of a statement's syntax.  This is commonly used
- *  in that fashion.
- */
-static int
-validate_numnodes(node *n, int num, const char *const name)
-{
-    if (NCH(n) != num) {
-        PyErr_Format(parser_error,
-                     "Illegal number of children for %s node.", name);
-        return 0;
-    }
-    return 1;
-}
-
-
-static int
-validate_terminal(node *terminal, int type, char *string)
-{
-    int res = (validate_ntype(terminal, type)
-               && ((string == 0) || (strcmp(string, STR(terminal)) == 0)));
-
-    if (!res && !PyErr_Occurred()) {
-        PyErr_Format(parser_error,
-                     "Illegal terminal: expected \"%s\"", string);
-    }
-    return (res);
-}
-
-
-/*  X (',' X) [',']
- */
-static int
-validate_repeating_list(node *tree, int ntype, int (*vfunc)(node *),
-                        const char *const name)
-{
-    int nch = NCH(tree);
-    int res = (nch && validate_ntype(tree, ntype)
-               && vfunc(CHILD(tree, 0)));
-
-    if (!res && !PyErr_Occurred())
-        (void) validate_numnodes(tree, 1, name);
-    else {
-        if (is_even(nch))
-            res = validate_comma(CHILD(tree, --nch));
-        if (res && nch > 1) {
-            int pos = 1;
-            for ( ; res && pos < nch; pos += 2)
-                res = (validate_comma(CHILD(tree, pos))
-                       && vfunc(CHILD(tree, pos + 1)));
-        }
-    }
-    return (res);
-}
-
-
-/*  validate_class()
- *
- *  classdef:
- *      'class' NAME ['(' testlist ')'] ':' suite
- */
-static int
-validate_class(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, classdef) &&
-                ((nch == 4) || (nch == 6) || (nch == 7)));
-
-    if (res) {
-        res = (validate_name(CHILD(tree, 0), "class")
-               && validate_ntype(CHILD(tree, 1), NAME)
-               && validate_colon(CHILD(tree, nch - 2))
-               && validate_suite(CHILD(tree, nch - 1)));
-    }
-    else {
-        (void) validate_numnodes(tree, 4, "class");
-    }
-
-    if (res) {
-        if (nch == 7) {
-                res = ((validate_lparen(CHILD(tree, 2)) &&
-                        validate_testlist(CHILD(tree, 3)) &&
-                        validate_rparen(CHILD(tree, 4))));
-        }
-        else if (nch == 6) {
-                res = (validate_lparen(CHILD(tree,2)) &&
-                        validate_rparen(CHILD(tree,3)));
-        }
-    }
-    return (res);
-}
-
-
-/*  if_stmt:
- *      'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite]
- */
-static int
-validate_if(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, if_stmt)
-               && (nch >= 4)
-               && validate_name(CHILD(tree, 0), "if")
-               && validate_test(CHILD(tree, 1))
-               && validate_colon(CHILD(tree, 2))
-               && validate_suite(CHILD(tree, 3)));
-
-    if (res && ((nch % 4) == 3)) {
-        /*  ... 'else' ':' suite  */
-        res = (validate_name(CHILD(tree, nch - 3), "else")
-               && validate_colon(CHILD(tree, nch - 2))
-               && validate_suite(CHILD(tree, nch - 1)));
-        nch -= 3;
-    }
-    else if (!res && !PyErr_Occurred())
-        (void) validate_numnodes(tree, 4, "if");
-    if ((nch % 4) != 0)
-        /* Will catch the case for nch < 4 */
-        res = validate_numnodes(tree, 0, "if");
-    else if (res && (nch > 4)) {
-        /*  ... ('elif' test ':' suite)+ ...  */
-        int j = 4;
-        while ((j < nch) && res) {
-            res = (validate_name(CHILD(tree, j), "elif")
-                   && validate_colon(CHILD(tree, j + 2))
-                   && validate_test(CHILD(tree, j + 1))
-                   && validate_suite(CHILD(tree, j + 3)));
-            j += 4;
-        }
-    }
-    return (res);
-}
-
-
-/*  parameters:
- *      '(' [varargslist] ')'
- *
- */
-static int
-validate_parameters(node *tree)
-{
-    int nch = NCH(tree);
-    int res = validate_ntype(tree, parameters) && ((nch == 2) || (nch == 3));
-
-    if (res) {
-        res = (validate_lparen(CHILD(tree, 0))
-               && validate_rparen(CHILD(tree, nch - 1)));
-        if (res && (nch == 3))
-            res = validate_varargslist(CHILD(tree, 1));
-    }
-    else {
-        (void) validate_numnodes(tree, 2, "parameters");
-    }
-    return (res);
-}
-
-
-/*  validate_suite()
- *
- *  suite:
- *      simple_stmt
- *    | NEWLINE INDENT stmt+ DEDENT
- */
-static int
-validate_suite(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, suite) && ((nch == 1) || (nch >= 4)));
-
-    if (res && (nch == 1))
-        res = validate_simple_stmt(CHILD(tree, 0));
-    else if (res) {
-        /*  NEWLINE INDENT stmt+ DEDENT  */
-        res = (validate_newline(CHILD(tree, 0))
-               && validate_indent(CHILD(tree, 1))
-               && validate_stmt(CHILD(tree, 2))
-               && validate_dedent(CHILD(tree, nch - 1)));
-
-        if (res && (nch > 4)) {
-            int i = 3;
-            --nch;                      /* forget the DEDENT     */
-            for ( ; res && (i < nch); ++i)
-                res = validate_stmt(CHILD(tree, i));
-        }
-        else if (nch < 4)
-            res = validate_numnodes(tree, 4, "suite");
-    }
-    return (res);
-}
-
-
-static int
-validate_testlist(node *tree)
-{
-    return (validate_repeating_list(tree, testlist,
-                                    validate_test, "testlist"));
-}
-
-
-static int
-validate_testlist1(node *tree)
-{
-    return (validate_repeating_list(tree, testlist1,
-                                    validate_test, "testlist1"));
-}
-
-
-static int
-validate_testlist_safe(node *tree)
-{
-    return (validate_repeating_list(tree, testlist_safe,
-                                    validate_old_test, "testlist_safe"));
-}
-
-
-/* '*' NAME [',' '**' NAME] | '**' NAME
- */
-static int
-validate_varargslist_trailer(node *tree, int start)
-{
-    int nch = NCH(tree);
-    int res = 0;
-    int sym;
-
-    if (nch <= start) {
-        err_string("expected variable argument trailer for varargslist");
-        return 0;
-    }
-    sym = TYPE(CHILD(tree, start));
-    if (sym == STAR) {
-        /*
-         *  ('*' NAME [',' '**' NAME]
-         */
-        if (nch-start == 2)
-            res = validate_name(CHILD(tree, start+1), NULL);
-        else if (nch-start == 5)
-            res = (validate_name(CHILD(tree, start+1), NULL)
-                   && validate_comma(CHILD(tree, start+2))
-                   && validate_doublestar(CHILD(tree, start+3))
-                   && validate_name(CHILD(tree, start+4), NULL));
-    }
-    else if (sym == DOUBLESTAR) {
-        /*
-         *  '**' NAME
-         */
-        if (nch-start == 2)
-            res = validate_name(CHILD(tree, start+1), NULL);
-    }
-    if (!res)
-        err_string("illegal variable argument trailer for varargslist");
-    return res;
-}
-
-
-/*  validate_varargslist()
- *
- *  varargslist:
- *      (fpdef ['=' test] ',')*
- *           ('*' NAME [',' '**' NAME]
- *         | '**' NAME)
- *    | fpdef ['=' test] (',' fpdef ['=' test])* [',']
- *
- */
-static int
-validate_varargslist(node *tree)
-{
-    int nch = NCH(tree);
-    int res = validate_ntype(tree, varargslist) && (nch != 0);
-    int sym;
-
-    if (!res)
-        return 0;
-    if (nch < 1) {
-        err_string("varargslist missing child nodes");
-        return 0;
-    }
-    sym = TYPE(CHILD(tree, 0));
-    if (sym == STAR || sym == DOUBLESTAR)
-        /* whole thing matches:
-         *      '*' NAME [',' '**' NAME] | '**' NAME
-         */
-        res = validate_varargslist_trailer(tree, 0);
-    else if (sym == fpdef) {
-        int i = 0;
-
-        sym = TYPE(CHILD(tree, nch-1));
-        if (sym == NAME) {
-            /*
-             *   (fpdef ['=' test] ',')+
-             *       ('*' NAME [',' '**' NAME]
-             *     | '**' NAME)
-             */
-            /* skip over (fpdef ['=' test] ',')+ */
-            while (res && (i+2 <= nch)) {
-                res = validate_fpdef(CHILD(tree, i));
-                ++i;
-                if (res && TYPE(CHILD(tree, i)) == EQUAL && (i+2 <= nch)) {
-                    res = (validate_equal(CHILD(tree, i))
-                           && validate_test(CHILD(tree, i+1)));
-                    if (res)
-                        i += 2;
-                }
-                if (res && i < nch) {
-                    res = validate_comma(CHILD(tree, i));
-                    ++i;
-                    if (res && i < nch
-                        && (TYPE(CHILD(tree, i)) == DOUBLESTAR
-                            || TYPE(CHILD(tree, i)) == STAR))
-                        break;
-                }
-            }
-            /* ... '*' NAME [',' '**' NAME] | '**' NAME
-             * i --^^^
-             */
-            if (res)
-                res = validate_varargslist_trailer(tree, i);
-        }
-        else {
-            /*
-             *  fpdef ['=' test] (',' fpdef ['=' test])* [',']
-             */
-            /* strip trailing comma node */
-            if (sym == COMMA) {
-                res = validate_comma(CHILD(tree, nch-1));
-                if (!res)
-                    return 0;
-                --nch;
-            }
-            /*
-             *  fpdef ['=' test] (',' fpdef ['=' test])*
-             */
-            res = validate_fpdef(CHILD(tree, 0));
-            ++i;
-            if (res && (i+2 <= nch) && TYPE(CHILD(tree, i)) == EQUAL) {
-                res = (validate_equal(CHILD(tree, i))
-                       && validate_test(CHILD(tree, i+1)));
-                i += 2;
-            }
-            /*
-             *  ... (',' fpdef ['=' test])*
-             *  i ---^^^
-             */
-            while (res && (nch - i) >= 2) {
-                res = (validate_comma(CHILD(tree, i))
-                       && validate_fpdef(CHILD(tree, i+1)));
-                i += 2;
-                if (res && (nch - i) >= 2 && TYPE(CHILD(tree, i)) == EQUAL) {
-                    res = (validate_equal(CHILD(tree, i))
-                           && validate_test(CHILD(tree, i+1)));
-                    i += 2;
-                }
-            }
-            if (res && nch - i != 0) {
-                res = 0;
-                err_string("illegal formation for varargslist");
-            }
-        }
-    }
-    return res;
-}
-
-
-/*  list_iter:  list_for | list_if
- */
-static int
-validate_list_iter(node *tree)
-{
-    int res = (validate_ntype(tree, list_iter)
-               && validate_numnodes(tree, 1, "list_iter"));
-    if (res && TYPE(CHILD(tree, 0)) == list_for)
-        res = validate_list_for(CHILD(tree, 0));
-    else
-        res = validate_list_if(CHILD(tree, 0));
-
-    return res;
-}
-
-/*  comp_iter:  comp_for | comp_if
- */
-static int
-validate_comp_iter(node *tree)
-{
-    int res = (validate_ntype(tree, comp_iter)
-               && validate_numnodes(tree, 1, "comp_iter"));
-    if (res && TYPE(CHILD(tree, 0)) == comp_for)
-        res = validate_comp_for(CHILD(tree, 0));
-    else
-        res = validate_comp_if(CHILD(tree, 0));
-
-    return res;
-}
-
-/*  list_for:  'for' exprlist 'in' testlist [list_iter]
- */
-static int
-validate_list_for(node *tree)
-{
-    int nch = NCH(tree);
-    int res;
-
-    if (nch == 5)
-        res = validate_list_iter(CHILD(tree, 4));
-    else
-        res = validate_numnodes(tree, 4, "list_for");
-
-    if (res)
-        res = (validate_name(CHILD(tree, 0), "for")
-               && validate_exprlist(CHILD(tree, 1))
-               && validate_name(CHILD(tree, 2), "in")
-               && validate_testlist_safe(CHILD(tree, 3)));
-
-    return res;
-}
-
-/*  comp_for:  'for' exprlist 'in' test [comp_iter]
- */
-static int
-validate_comp_for(node *tree)
-{
-    int nch = NCH(tree);
-    int res;
-
-    if (nch == 5)
-        res = validate_comp_iter(CHILD(tree, 4));
-    else
-        res = validate_numnodes(tree, 4, "comp_for");
-
-    if (res)
-        res = (validate_name(CHILD(tree, 0), "for")
-               && validate_exprlist(CHILD(tree, 1))
-               && validate_name(CHILD(tree, 2), "in")
-               && validate_or_test(CHILD(tree, 3)));
-
-    return res;
-}
-
-/*  list_if:  'if' old_test [list_iter]
- */
-static int
-validate_list_if(node *tree)
-{
-    int nch = NCH(tree);
-    int res;
-
-    if (nch == 3)
-        res = validate_list_iter(CHILD(tree, 2));
-    else
-        res = validate_numnodes(tree, 2, "list_if");
-
-    if (res)
-        res = (validate_name(CHILD(tree, 0), "if")
-               && validate_old_test(CHILD(tree, 1)));
-
-    return res;
-}
-
-/*  comp_if:  'if' old_test [comp_iter]
- */
-static int
-validate_comp_if(node *tree)
-{
-    int nch = NCH(tree);
-    int res;
-
-    if (nch == 3)
-        res = validate_comp_iter(CHILD(tree, 2));
-    else
-        res = validate_numnodes(tree, 2, "comp_if");
-
-    if (res)
-        res = (validate_name(CHILD(tree, 0), "if")
-               && validate_old_test(CHILD(tree, 1)));
-
-    return res;
-}
-
-/*  validate_fpdef()
- *
- *  fpdef:
- *      NAME
- *    | '(' fplist ')'
- */
-static int
-validate_fpdef(node *tree)
-{
-    int nch = NCH(tree);
-    int res = validate_ntype(tree, fpdef);
-
-    if (res) {
-        if (nch == 1)
-            res = validate_ntype(CHILD(tree, 0), NAME);
-        else if (nch == 3)
-            res = (validate_lparen(CHILD(tree, 0))
-                   && validate_fplist(CHILD(tree, 1))
-                   && validate_rparen(CHILD(tree, 2)));
-        else
-            res = validate_numnodes(tree, 1, "fpdef");
-    }
-    return (res);
-}
-
-
-static int
-validate_fplist(node *tree)
-{
-    return (validate_repeating_list(tree, fplist,
-                                    validate_fpdef, "fplist"));
-}
-
-
-/*  simple_stmt | compound_stmt
- *
- */
-static int
-validate_stmt(node *tree)
-{
-    int res = (validate_ntype(tree, stmt)
-               && validate_numnodes(tree, 1, "stmt"));
-
-    if (res) {
-        tree = CHILD(tree, 0);
-
-        if (TYPE(tree) == simple_stmt)
-            res = validate_simple_stmt(tree);
-        else
-            res = validate_compound_stmt(tree);
-    }
-    return (res);
-}
-
-
-/*  small_stmt (';' small_stmt)* [';'] NEWLINE
- *
- */
-static int
-validate_simple_stmt(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, simple_stmt)
-               && (nch >= 2)
-               && validate_small_stmt(CHILD(tree, 0))
-               && validate_newline(CHILD(tree, nch - 1)));
-
-    if (nch < 2)
-        res = validate_numnodes(tree, 2, "simple_stmt");
-    --nch;                              /* forget the NEWLINE    */
-    if (res && is_even(nch))
-        res = validate_semi(CHILD(tree, --nch));
-    if (res && (nch > 2)) {
-        int i;
-
-        for (i = 1; res && (i < nch); i += 2)
-            res = (validate_semi(CHILD(tree, i))
-                   && validate_small_stmt(CHILD(tree, i + 1)));
-    }
-    return (res);
-}
-
-
-static int
-validate_small_stmt(node *tree)
-{
-    int nch = NCH(tree);
-    int res = validate_numnodes(tree, 1, "small_stmt");
-
-    if (res) {
-        int ntype = TYPE(CHILD(tree, 0));
-
-        if (  (ntype == expr_stmt)
-              || (ntype == print_stmt)
-              || (ntype == del_stmt)
-              || (ntype == pass_stmt)
-              || (ntype == flow_stmt)
-              || (ntype == import_stmt)
-              || (ntype == global_stmt)
-              || (ntype == assert_stmt)
-              || (ntype == exec_stmt))
-            res = validate_node(CHILD(tree, 0));
-        else {
-            res = 0;
-            err_string("illegal small_stmt child type");
-        }
-    }
-    else if (nch == 1) {
-        res = 0;
-        PyErr_Format(parser_error,
-                     "Unrecognized child node of small_stmt: %d.",
-                     TYPE(CHILD(tree, 0)));
-    }
-    return (res);
-}
-
-
-/*  compound_stmt:
- *      if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated
- */
-static int
-validate_compound_stmt(node *tree)
-{
-    int res = (validate_ntype(tree, compound_stmt)
-               && validate_numnodes(tree, 1, "compound_stmt"));
-    int ntype;
-
-    if (!res)
-        return (0);
-
-    tree = CHILD(tree, 0);
-    ntype = TYPE(tree);
-    if (  (ntype == if_stmt)
-          || (ntype == while_stmt)
-          || (ntype == for_stmt)
-          || (ntype == try_stmt)
-          || (ntype == with_stmt)
-          || (ntype == funcdef)
-          || (ntype == classdef)
-          || (ntype == decorated))
-        res = validate_node(tree);
-    else {
-        res = 0;
-        PyErr_Format(parser_error,
-                     "Illegal compound statement type: %d.", TYPE(tree));
-    }
-    return (res);
-}
-
-static int
-validate_yield_or_testlist(node *tree)
-{
-        if (TYPE(tree) == yield_expr)
-                return validate_yield_expr(tree);
-        else
-                return validate_testlist(tree);
-}
-
-static int
-validate_expr_stmt(node *tree)
-{
-    int j;
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, expr_stmt)
-               && is_odd(nch)
-               && validate_testlist(CHILD(tree, 0)));
-
-    if (res && nch == 3
-        && TYPE(CHILD(tree, 1)) == augassign) {
-        res = validate_numnodes(CHILD(tree, 1), 1, "augassign")
-                && validate_yield_or_testlist(CHILD(tree, 2));
-
-        if (res) {
-            char *s = STR(CHILD(CHILD(tree, 1), 0));
-
-            res = (strcmp(s, "+=") == 0
-                   || strcmp(s, "-=") == 0
-                   || strcmp(s, "*=") == 0
-                   || strcmp(s, "/=") == 0
-                   || strcmp(s, "//=") == 0
-                   || strcmp(s, "%=") == 0
-                   || strcmp(s, "&=") == 0
-                   || strcmp(s, "|=") == 0
-                   || strcmp(s, "^=") == 0
-                   || strcmp(s, "<<=") == 0
-                   || strcmp(s, ">>=") == 0
-                   || strcmp(s, "**=") == 0);
-            if (!res)
-                err_string("illegal augmented assignment operator");
-        }
-    }
-    else {
-        for (j = 1; res && (j < nch); j += 2)
-            res = validate_equal(CHILD(tree, j))
-                   && validate_yield_or_testlist(CHILD(tree, j + 1));
-    }
-    return (res);
-}
-
-
-/*  print_stmt:
- *
- *      'print' ( [ test (',' test)* [','] ]
- *              | '>>' test [ (',' test)+ [','] ] )
- */
-static int
-validate_print_stmt(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, print_stmt)
-               && (nch > 0)
-               && validate_name(CHILD(tree, 0), "print"));
-
-    if (res && nch > 1) {
-        int sym = TYPE(CHILD(tree, 1));
-        int i = 1;
-        int allow_trailing_comma = 1;
-
-        if (sym == test)
-            res = validate_test(CHILD(tree, i++));
-        else {
-            if (nch < 3)
-                res = validate_numnodes(tree, 3, "print_stmt");
-            else {
-                res = (validate_ntype(CHILD(tree, i), RIGHTSHIFT)
-                       && validate_test(CHILD(tree, i+1)));
-                i += 2;
-                allow_trailing_comma = 0;
-            }
-        }
-        if (res) {
-            /*  ... (',' test)* [',']  */
-            while (res && i+2 <= nch) {
-                res = (validate_comma(CHILD(tree, i))
-                       && validate_test(CHILD(tree, i+1)));
-                allow_trailing_comma = 1;
-                i += 2;
-            }
-            if (res && !allow_trailing_comma)
-                res = validate_numnodes(tree, i, "print_stmt");
-            else if (res && i < nch)
-                res = validate_comma(CHILD(tree, i));
-        }
-    }
-    return (res);
-}
-
-
-static int
-validate_del_stmt(node *tree)
-{
-    return (validate_numnodes(tree, 2, "del_stmt")
-            && validate_name(CHILD(tree, 0), "del")
-            && validate_exprlist(CHILD(tree, 1)));
-}
-
-
-static int
-validate_return_stmt(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, return_stmt)
-               && ((nch == 1) || (nch == 2))
-               && validate_name(CHILD(tree, 0), "return"));
-
-    if (res && (nch == 2))
-        res = validate_testlist(CHILD(tree, 1));
-
-    return (res);
-}
-
-
-static int
-validate_raise_stmt(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, raise_stmt)
-               && ((nch == 1) || (nch == 2) || (nch == 4) || (nch == 6)));
-
-    if (res) {
-        res = validate_name(CHILD(tree, 0), "raise");
-        if (res && (nch >= 2))
-            res = validate_test(CHILD(tree, 1));
-        if (res && nch > 2) {
-            res = (validate_comma(CHILD(tree, 2))
-                   && validate_test(CHILD(tree, 3)));
-            if (res && (nch > 4))
-                res = (validate_comma(CHILD(tree, 4))
-                       && validate_test(CHILD(tree, 5)));
-        }
-    }
-    else
-        (void) validate_numnodes(tree, 2, "raise");
-    if (res && (nch == 4))
-        res = (validate_comma(CHILD(tree, 2))
-               && validate_test(CHILD(tree, 3)));
-
-    return (res);
-}
-
-
-/* yield_expr: 'yield' [testlist]
- */
-static int
-validate_yield_expr(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, yield_expr)
-               && ((nch == 1) || (nch == 2))
-               && validate_name(CHILD(tree, 0), "yield"));
-
-    if (res && (nch == 2))
-        res = validate_testlist(CHILD(tree, 1));
-
-    return (res);
-}
-
-
-/* yield_stmt: yield_expr
- */
-static int
-validate_yield_stmt(node *tree)
-{
-    return (validate_ntype(tree, yield_stmt)
-            && validate_numnodes(tree, 1, "yield_stmt")
-            && validate_yield_expr(CHILD(tree, 0)));
-}
-
-
-static int
-validate_import_as_name(node *tree)
-{
-    int nch = NCH(tree);
-    int ok = validate_ntype(tree, import_as_name);
-
-    if (ok) {
-        if (nch == 1)
-            ok = validate_name(CHILD(tree, 0), NULL);
-        else if (nch == 3)
-            ok = (validate_name(CHILD(tree, 0), NULL)
-                  && validate_name(CHILD(tree, 1), "as")
-                  && validate_name(CHILD(tree, 2), NULL));
-        else
-            ok = validate_numnodes(tree, 3, "import_as_name");
-    }
-    return ok;
-}
-
-
-/* dotted_name:  NAME ("." NAME)*
- */
-static int
-validate_dotted_name(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, dotted_name)
-               && is_odd(nch)
-               && validate_name(CHILD(tree, 0), NULL));
-    int i;
-
-    for (i = 1; res && (i < nch); i += 2) {
-        res = (validate_dot(CHILD(tree, i))
-               && validate_name(CHILD(tree, i+1), NULL));
-    }
-    return res;
-}
-
-
-/* dotted_as_name:  dotted_name [NAME NAME]
- */
-static int
-validate_dotted_as_name(node *tree)
-{
-    int nch = NCH(tree);
-    int res = validate_ntype(tree, dotted_as_name);
-
-    if (res) {
-        if (nch == 1)
-            res = validate_dotted_name(CHILD(tree, 0));
-        else if (nch == 3)
-            res = (validate_dotted_name(CHILD(tree, 0))
-                   && validate_name(CHILD(tree, 1), "as")
-                   && validate_name(CHILD(tree, 2), NULL));
-        else {
-            res = 0;
-            err_string("illegal number of children for dotted_as_name");
-        }
-    }
-    return res;
-}
-
-
-/* dotted_as_name (',' dotted_as_name)* */
-static int
-validate_dotted_as_names(node *tree)
-{
-        int nch = NCH(tree);
-        int res = is_odd(nch) && validate_dotted_as_name(CHILD(tree, 0));
-        int i;
-
-        for (i = 1; res && (i < nch); i += 2)
-            res = (validate_comma(CHILD(tree, i))
-                   && validate_dotted_as_name(CHILD(tree, i + 1)));
-        return (res);
-}
-
-
-/* import_as_name (',' import_as_name)* [','] */
-static int
-validate_import_as_names(node *tree)
-{
-    int nch = NCH(tree);
-    int res = validate_import_as_name(CHILD(tree, 0));
-    int i;
-
-    for (i = 1; res && (i + 1 < nch); i += 2)
-        res = (validate_comma(CHILD(tree, i))
-               && validate_import_as_name(CHILD(tree, i + 1)));
-    return (res);
-}
-
-
-/* 'import' dotted_as_names */
-static int
-validate_import_name(node *tree)
-{
-        return (validate_ntype(tree, import_name)
-                && validate_numnodes(tree, 2, "import_name")
-                && validate_name(CHILD(tree, 0), "import")
-                && validate_dotted_as_names(CHILD(tree, 1)));
-}
-
-/* Helper function to count the number of leading dots in
- * 'from ...module import name'
- */
-static int
-count_from_dots(node *tree)
-{
-        int i;
-        for (i = 1; i < NCH(tree); i++)
-                if (TYPE(CHILD(tree, i)) != DOT)
-                        break;
-        return i-1;
-}
-
-/* import_from: ('from' ('.'* dotted_name | '.'+)
- *               'import' ('*' | '(' import_as_names ')' | import_as_names))
- */
-static int
-validate_import_from(node *tree)
-{
-        int nch = NCH(tree);
-        int ndots = count_from_dots(tree);
-        int havename = (TYPE(CHILD(tree, ndots + 1)) == dotted_name);
-        int offset = ndots + havename;
-        int res = validate_ntype(tree, import_from)
-                && (offset >= 1)
-                && (nch >= 3 + offset)
-                && validate_name(CHILD(tree, 0), "from")
-                && (!havename || validate_dotted_name(CHILD(tree, ndots + 1)))
-                && validate_name(CHILD(tree, offset + 1), "import");
-
-        if (res && TYPE(CHILD(tree, offset + 2)) == LPAR)
-            res = ((nch == offset + 5)
-                   && validate_lparen(CHILD(tree, offset + 2))
-                   && validate_import_as_names(CHILD(tree, offset + 3))
-                   && validate_rparen(CHILD(tree, offset + 4)));
-        else if (res && TYPE(CHILD(tree, offset + 2)) != STAR)
-            res = validate_import_as_names(CHILD(tree, offset + 2));
-        return (res);
-}
-
-
-/* import_stmt: import_name | import_from */
-static int
-validate_import_stmt(node *tree)
-{
-    int nch = NCH(tree);
-    int res = validate_numnodes(tree, 1, "import_stmt");
-
-    if (res) {
-        int ntype = TYPE(CHILD(tree, 0));
-
-        if (ntype == import_name || ntype == import_from)
-            res = validate_node(CHILD(tree, 0));
-        else {
-            res = 0;
-            err_string("illegal import_stmt child type");
-        }
-    }
-    else if (nch == 1) {
-        res = 0;
-        PyErr_Format(parser_error,
-                     "Unrecognized child node of import_stmt: %d.",
-                     TYPE(CHILD(tree, 0)));
-    }
-    return (res);
-}
-
-
-
-
-static int
-validate_global_stmt(node *tree)
-{
-    int j;
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, global_stmt)
-               && is_even(nch) && (nch >= 2));
-
-    if (!res && !PyErr_Occurred())
-        err_string("illegal global statement");
-
-    if (res)
-        res = (validate_name(CHILD(tree, 0), "global")
-               && validate_ntype(CHILD(tree, 1), NAME));
-    for (j = 2; res && (j < nch); j += 2)
-        res = (validate_comma(CHILD(tree, j))
-               && validate_ntype(CHILD(tree, j + 1), NAME));
-
-    return (res);
-}
-
-
-/*  exec_stmt:
- *
- *  'exec' expr ['in' test [',' test]]
- */
-static int
-validate_exec_stmt(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, exec_stmt)
-               && ((nch == 2) || (nch == 4) || (nch == 6))
-               && validate_name(CHILD(tree, 0), "exec")
-               && validate_expr(CHILD(tree, 1)));
-
-    if (!res && !PyErr_Occurred())
-        err_string("illegal exec statement");
-    if (res && (nch > 2))
-        res = (validate_name(CHILD(tree, 2), "in")
-               && validate_test(CHILD(tree, 3)));
-    if (res && (nch == 6))
-        res = (validate_comma(CHILD(tree, 4))
-               && validate_test(CHILD(tree, 5)));
-
-    return (res);
-}
-
-
-/*  assert_stmt:
- *
- *  'assert' test [',' test]
- */
-static int
-validate_assert_stmt(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, assert_stmt)
-               && ((nch == 2) || (nch == 4))
-               && (validate_name(CHILD(tree, 0), "assert"))
-               && validate_test(CHILD(tree, 1)));
-
-    if (!res && !PyErr_Occurred())
-        err_string("illegal assert statement");
-    if (res && (nch > 2))
-        res = (validate_comma(CHILD(tree, 2))
-               && validate_test(CHILD(tree, 3)));
-
-    return (res);
-}
-
-
-static int
-validate_while(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, while_stmt)
-               && ((nch == 4) || (nch == 7))
-               && validate_name(CHILD(tree, 0), "while")
-               && validate_test(CHILD(tree, 1))
-               && validate_colon(CHILD(tree, 2))
-               && validate_suite(CHILD(tree, 3)));
-
-    if (res && (nch == 7))
-        res = (validate_name(CHILD(tree, 4), "else")
-               && validate_colon(CHILD(tree, 5))
-               && validate_suite(CHILD(tree, 6)));
-
-    return (res);
-}
-
-
-static int
-validate_for(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, for_stmt)
-               && ((nch == 6) || (nch == 9))
-               && validate_name(CHILD(tree, 0), "for")
-               && validate_exprlist(CHILD(tree, 1))
-               && validate_name(CHILD(tree, 2), "in")
-               && validate_testlist(CHILD(tree, 3))
-               && validate_colon(CHILD(tree, 4))
-               && validate_suite(CHILD(tree, 5)));
-
-    if (res && (nch == 9))
-        res = (validate_name(CHILD(tree, 6), "else")
-               && validate_colon(CHILD(tree, 7))
-               && validate_suite(CHILD(tree, 8)));
-
-    return (res);
-}
-
-
-/*  try_stmt:
- *      'try' ':' suite (except_clause ':' suite)+ ['else' ':' suite]
-                                                   ['finally' ':' suite]
- *    | 'try' ':' suite 'finally' ':' suite
- *
- */
-static int
-validate_try(node *tree)
-{
-    int nch = NCH(tree);
-    int pos = 3;
-    int res = (validate_ntype(tree, try_stmt)
-               && (nch >= 6) && ((nch % 3) == 0));
-
-    if (res)
-        res = (validate_name(CHILD(tree, 0), "try")
-               && validate_colon(CHILD(tree, 1))
-               && validate_suite(CHILD(tree, 2))
-               && validate_colon(CHILD(tree, nch - 2))
-               && validate_suite(CHILD(tree, nch - 1)));
-    else if (!PyErr_Occurred()) {
-        const char* name = "except";
-        if (TYPE(CHILD(tree, nch - 3)) != except_clause)
-            name = STR(CHILD(tree, nch - 3));
-
-        PyErr_Format(parser_error,
-                     "Illegal number of children for try/%s node.", name);
-    }
-    /* Handle try/finally statement */
-    if (res && (TYPE(CHILD(tree, pos)) == NAME) &&
-        (strcmp(STR(CHILD(tree, pos)), "finally") == 0)) {
-        res = (validate_numnodes(tree, 6, "try/finally")
-               && validate_colon(CHILD(tree, 4))
-               && validate_suite(CHILD(tree, 5)));
-        return (res);
-    }
-    /* try/except statement: skip past except_clause sections */
-    while (res && pos < nch && (TYPE(CHILD(tree, pos)) == except_clause)) {
-        res = (validate_except_clause(CHILD(tree, pos))
-               && validate_colon(CHILD(tree, pos + 1))
-               && validate_suite(CHILD(tree, pos + 2)));
-        pos += 3;
-    }
-    /* skip else clause */
-    if (res && pos < nch && (TYPE(CHILD(tree, pos)) == NAME) &&
-        (strcmp(STR(CHILD(tree, pos)), "else") == 0)) {
-        res = (validate_colon(CHILD(tree, pos + 1))
-               && validate_suite(CHILD(tree, pos + 2)));
-        pos += 3;
-    }
-    if (res && pos < nch) {
-        /* last clause must be a finally */
-        res = (validate_name(CHILD(tree, pos), "finally")
-               && validate_numnodes(tree, pos + 3, "try/except/finally")
-               && validate_colon(CHILD(tree, pos + 1))
-               && validate_suite(CHILD(tree, pos + 2)));
-    }
-    return (res);
-}
-
-
-static int
-validate_except_clause(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, except_clause)
-               && ((nch == 1) || (nch == 2) || (nch == 4))
-               && validate_name(CHILD(tree, 0), "except"));
-
-    if (res && (nch > 1))
-        res = validate_test(CHILD(tree, 1));
-    if (res && (nch == 4)) {
-        if (TYPE(CHILD(tree, 2)) == NAME)
-            res = validate_name(CHILD(tree, 2), "as");
-        else
-            res = validate_comma(CHILD(tree, 2));
-        res = res && validate_test(CHILD(tree, 3));
-    }
-    return (res);
-}
-
-
-static int
-validate_test(node *tree)
-{
-    int nch = NCH(tree);
-    int res = validate_ntype(tree, test) && is_odd(nch);
-
-    if (res && (TYPE(CHILD(tree, 0)) == lambdef))
-        res = ((nch == 1)
-               && validate_lambdef(CHILD(tree, 0)));
-    else if (res) {
-        res = validate_or_test(CHILD(tree, 0));
-        res = (res && (nch == 1 || (nch == 5 &&
-            validate_name(CHILD(tree, 1), "if") &&
-            validate_or_test(CHILD(tree, 2)) &&
-            validate_name(CHILD(tree, 3), "else") &&
-            validate_test(CHILD(tree, 4)))));
-    }
-    return (res);
-}
-
-static int
-validate_old_test(node *tree)
-{
-    int nch = NCH(tree);
-    int res = validate_ntype(tree, old_test) && (nch == 1);
-
-    if (res && (TYPE(CHILD(tree, 0)) == old_lambdef))
-        res = (validate_old_lambdef(CHILD(tree, 0)));
-    else if (res) {
-        res = (validate_or_test(CHILD(tree, 0)));
-    }
-    return (res);
-}
-
-static int
-validate_or_test(node *tree)
-{
-    int nch = NCH(tree);
-    int res = validate_ntype(tree, or_test) && is_odd(nch);
-
-    if (res) {
-        int pos;
-        res = validate_and_test(CHILD(tree, 0));
-        for (pos = 1; res && (pos < nch); pos += 2)
-            res = (validate_name(CHILD(tree, pos), "or")
-                   && validate_and_test(CHILD(tree, pos + 1)));
-    }
-    return (res);
-}
-
-
-static int
-validate_and_test(node *tree)
-{
-    int pos;
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, and_test)
-               && is_odd(nch)
-               && validate_not_test(CHILD(tree, 0)));
-
-    for (pos = 1; res && (pos < nch); pos += 2)
-        res = (validate_name(CHILD(tree, pos), "and")
-               && validate_not_test(CHILD(tree, 0)));
-
-    return (res);
-}
-
-
-static int
-validate_not_test(node *tree)
-{
-    int nch = NCH(tree);
-    int res = validate_ntype(tree, not_test) && ((nch == 1) || (nch == 2));
-
-    if (res) {
-        if (nch == 2)
-            res = (validate_name(CHILD(tree, 0), "not")
-                   && validate_not_test(CHILD(tree, 1)));
-        else if (nch == 1)
-            res = validate_comparison(CHILD(tree, 0));
-    }
-    return (res);
-}
-
-
-static int
-validate_comparison(node *tree)
-{
-    int pos;
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, comparison)
-               && is_odd(nch)
-               && validate_expr(CHILD(tree, 0)));
-
-    for (pos = 1; res && (pos < nch); pos += 2)
-        res = (validate_comp_op(CHILD(tree, pos))
-               && validate_expr(CHILD(tree, pos + 1)));
-
-    return (res);
-}
-
-
-static int
-validate_comp_op(node *tree)
-{
-    int res = 0;
-    int nch = NCH(tree);
-
-    if (!validate_ntype(tree, comp_op))
-        return (0);
-    if (nch == 1) {
-        /*
-         *  Only child will be a terminal with a well-defined symbolic name
-         *  or a NAME with a string of either 'is' or 'in'
-         */
-        tree = CHILD(tree, 0);
-        switch (TYPE(tree)) {
-            case LESS:
-            case GREATER:
-            case EQEQUAL:
-            case EQUAL:
-            case LESSEQUAL:
-            case GREATEREQUAL:
-            case NOTEQUAL:
-              res = 1;
-              break;
-            case NAME:
-              res = ((strcmp(STR(tree), "in") == 0)
-                     || (strcmp(STR(tree), "is") == 0));
-              if (!res) {
-                  PyErr_Format(parser_error,
-                               "illegal operator '%s'", STR(tree));
-              }
-              break;
-          default:
-              err_string("illegal comparison operator type");
-              break;
-        }
-    }
-    else if ((res = validate_numnodes(tree, 2, "comp_op")) != 0) {
-        res = (validate_ntype(CHILD(tree, 0), NAME)
-               && validate_ntype(CHILD(tree, 1), NAME)
-               && (((strcmp(STR(CHILD(tree, 0)), "is") == 0)
-                    && (strcmp(STR(CHILD(tree, 1)), "not") == 0))
-                   || ((strcmp(STR(CHILD(tree, 0)), "not") == 0)
-                       && (strcmp(STR(CHILD(tree, 1)), "in") == 0))));
-        if (!res && !PyErr_Occurred())
-            err_string("unknown comparison operator");
-    }
-    return (res);
-}
-
-
-static int
-validate_expr(node *tree)
-{
-    int j;
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, expr)
-               && is_odd(nch)
-               && validate_xor_expr(CHILD(tree, 0)));
-
-    for (j = 2; res && (j < nch); j += 2)
-        res = (validate_xor_expr(CHILD(tree, j))
-               && validate_vbar(CHILD(tree, j - 1)));
-
-    return (res);
-}
-
-
-static int
-validate_xor_expr(node *tree)
-{
-    int j;
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, xor_expr)
-               && is_odd(nch)
-               && validate_and_expr(CHILD(tree, 0)));
-
-    for (j = 2; res && (j < nch); j += 2)
-        res = (validate_circumflex(CHILD(tree, j - 1))
-               && validate_and_expr(CHILD(tree, j)));
-
-    return (res);
-}
-
-
-static int
-validate_and_expr(node *tree)
-{
-    int pos;
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, and_expr)
-               && is_odd(nch)
-               && validate_shift_expr(CHILD(tree, 0)));
-
-    for (pos = 1; res && (pos < nch); pos += 2)
-        res = (validate_ampersand(CHILD(tree, pos))
-               && validate_shift_expr(CHILD(tree, pos + 1)));
-
-    return (res);
-}
-
-
-static int
-validate_chain_two_ops(node *tree, int (*termvalid)(node *), int op1, int op2)
- {
-    int pos = 1;
-    int nch = NCH(tree);
-    int res = (is_odd(nch)
-               && (*termvalid)(CHILD(tree, 0)));
-
-    for ( ; res && (pos < nch); pos += 2) {
-        if (TYPE(CHILD(tree, pos)) != op1)
-            res = validate_ntype(CHILD(tree, pos), op2);
-        if (res)
-            res = (*termvalid)(CHILD(tree, pos + 1));
-    }
-    return (res);
-}
-
-
-static int
-validate_shift_expr(node *tree)
-{
-    return (validate_ntype(tree, shift_expr)
-            && validate_chain_two_ops(tree, validate_arith_expr,
-                                      LEFTSHIFT, RIGHTSHIFT));
-}
-
-
-static int
-validate_arith_expr(node *tree)
-{
-    return (validate_ntype(tree, arith_expr)
-            && validate_chain_two_ops(tree, validate_term, PLUS, MINUS));
-}
-
-
-static int
-validate_term(node *tree)
-{
-    int pos = 1;
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, term)
-               && is_odd(nch)
-               && validate_factor(CHILD(tree, 0)));
-
-    for ( ; res && (pos < nch); pos += 2)
-        res = (((TYPE(CHILD(tree, pos)) == STAR)
-               || (TYPE(CHILD(tree, pos)) == SLASH)
-               || (TYPE(CHILD(tree, pos)) == DOUBLESLASH)
-               || (TYPE(CHILD(tree, pos)) == PERCENT))
-               && validate_factor(CHILD(tree, pos + 1)));
-
-    return (res);
-}
-
-
-/*  factor:
- *
- *  factor: ('+'|'-'|'~') factor | power
- */
-static int
-validate_factor(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, factor)
-               && (((nch == 2)
-                    && ((TYPE(CHILD(tree, 0)) == PLUS)
-                        || (TYPE(CHILD(tree, 0)) == MINUS)
-                        || (TYPE(CHILD(tree, 0)) == TILDE))
-                    && validate_factor(CHILD(tree, 1)))
-                   || ((nch == 1)
-                       && validate_power(CHILD(tree, 0)))));
-    return (res);
-}
-
-
-/*  power:
- *
- *  power: atom trailer* ('**' factor)*
- */
-static int
-validate_power(node *tree)
-{
-    int pos = 1;
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, power) && (nch >= 1)
-               && validate_atom(CHILD(tree, 0)));
-
-    while (res && (pos < nch) && (TYPE(CHILD(tree, pos)) == trailer))
-        res = validate_trailer(CHILD(tree, pos++));
-    if (res && (pos < nch)) {
-        if (!is_even(nch - pos)) {
-            err_string("illegal number of nodes for 'power'");
-            return (0);
-        }
-        for ( ; res && (pos < (nch - 1)); pos += 2)
-            res = (validate_doublestar(CHILD(tree, pos))
-                   && validate_factor(CHILD(tree, pos + 1)));
-    }
-    return (res);
-}
-
-
-static int
-validate_atom(node *tree)
-{
-    int pos;
-    int nch = NCH(tree);
-    int res = validate_ntype(tree, atom);
-
-    if (res && nch < 1)
-        res = validate_numnodes(tree, nch+1, "atom");
-    if (res) {
-        switch (TYPE(CHILD(tree, 0))) {
-          case LPAR:
-            res = ((nch <= 3)
-                   && (validate_rparen(CHILD(tree, nch - 1))));
-
-            if (res && (nch == 3)) {
-                if (TYPE(CHILD(tree, 1))==yield_expr)
-                        res = validate_yield_expr(CHILD(tree, 1));
-                else
-                        res = validate_testlist_comp(CHILD(tree, 1));
-            }
-            break;
-          case LSQB:
-            if (nch == 2)
-                res = validate_ntype(CHILD(tree, 1), RSQB);
-            else if (nch == 3)
-                res = (validate_listmaker(CHILD(tree, 1))
-                       && validate_ntype(CHILD(tree, 2), RSQB));
-            else {
-                res = 0;
-                err_string("illegal list display atom");
-            }
-            break;
-          case LBRACE:
-            res = ((nch <= 3)
-                   && validate_ntype(CHILD(tree, nch - 1), RBRACE));
-
-            if (res && (nch == 3))
-                res = validate_dictorsetmaker(CHILD(tree, 1));
-            break;
-          case BACKQUOTE:
-            res = ((nch == 3)
-                   && validate_testlist1(CHILD(tree, 1))
-                   && validate_ntype(CHILD(tree, 2), BACKQUOTE));
-            break;
-          case NAME:
-          case NUMBER:
-            res = (nch == 1);
-            break;
-          case STRING:
-            for (pos = 1; res && (pos < nch); ++pos)
-                res = validate_ntype(CHILD(tree, pos), STRING);
-            break;
-          default:
-            res = 0;
-            break;
-        }
-    }
-    return (res);
-}
-
-
-/*  listmaker:
- *    test ( list_for | (',' test)* [','] )
- */
-static int
-validate_listmaker(node *tree)
-{
-    int nch = NCH(tree);
-    int ok = nch;
-
-    if (nch == 0)
-        err_string("missing child nodes of listmaker");
-    else
-        ok = validate_test(CHILD(tree, 0));
-
-    /*
-     *  list_for | (',' test)* [',']
-     */
-    if (nch == 2 && TYPE(CHILD(tree, 1)) == list_for)
-        ok = validate_list_for(CHILD(tree, 1));
-    else {
-        /*  (',' test)* [',']  */
-        int i = 1;
-        while (ok && nch - i >= 2) {
-            ok = (validate_comma(CHILD(tree, i))
-                  && validate_test(CHILD(tree, i+1)));
-            i += 2;
-        }
-        if (ok && i == nch-1)
-            ok = validate_comma(CHILD(tree, i));
-        else if (i != nch) {
-            ok = 0;
-            err_string("illegal trailing nodes for listmaker");
-        }
-    }
-    return ok;
-}
-
-/*  testlist_comp:
- *    test ( comp_for | (',' test)* [','] )
- */
-static int
-validate_testlist_comp(node *tree)
-{
-    int nch = NCH(tree);
-    int ok = nch;
-
-    if (nch == 0)
-        err_string("missing child nodes of testlist_comp");
-    else {
-        ok = validate_test(CHILD(tree, 0));
-    }
-
-    /*
-     *  comp_for | (',' test)* [',']
-     */
-    if (nch == 2 && TYPE(CHILD(tree, 1)) == comp_for)
-        ok = validate_comp_for(CHILD(tree, 1));
-    else {
-        /*  (',' test)* [',']  */
-        int i = 1;
-        while (ok && nch - i >= 2) {
-            ok = (validate_comma(CHILD(tree, i))
-                  && validate_test(CHILD(tree, i+1)));
-            i += 2;
-        }
-        if (ok && i == nch-1)
-            ok = validate_comma(CHILD(tree, i));
-        else if (i != nch) {
-            ok = 0;
-            err_string("illegal trailing nodes for testlist_comp");
-        }
-    }
-    return ok;
-}
-
-/*  decorator:
- *    '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
- */
-static int
-validate_decorator(node *tree)
-{
-    int ok;
-    int nch = NCH(tree);
-    ok = (validate_ntype(tree, decorator) &&
-          (nch == 3 || nch == 5 || nch == 6) &&
-          validate_at(CHILD(tree, 0)) &&
-          validate_dotted_name(CHILD(tree, 1)) &&
-          validate_newline(RCHILD(tree, -1)));
-
-    if (ok && nch != 3) {
-        ok = (validate_lparen(CHILD(tree, 2)) &&
-              validate_rparen(RCHILD(tree, -2)));
-
-        if (ok && nch == 6)
-            ok = validate_arglist(CHILD(tree, 3));
-    }
-
-    return ok;
-}
-
-/*  decorators:
- *    decorator+
- */
-static int
-validate_decorators(node *tree)
-{
-    int i, nch, ok;
-    nch = NCH(tree);
-    ok = validate_ntype(tree, decorators) && nch >= 1;
-
-    for (i = 0; ok && i < nch; ++i)
-        ok = validate_decorator(CHILD(tree, i));
-
-    return ok;
-}
-
-/*  with_item:
- *   test ['as' expr]
- */
-static int
-validate_with_item(node *tree)
-{
-    int nch = NCH(tree);
-    int ok = (validate_ntype(tree, with_item)
-              && (nch == 1 || nch == 3)
-              && validate_test(CHILD(tree, 0)));
-    if (ok && nch == 3)
-        ok = (validate_name(CHILD(tree, 1), "as")
-              && validate_expr(CHILD(tree, 2)));
-    return ok;
-}
-
-/*  with_stmt:
- *    0      1          ...             -2   -1
- *   'with' with_item (',' with_item)* ':' suite
- */
-static int
-validate_with_stmt(node *tree)
-{
-    int i;
-    int nch = NCH(tree);
-    int ok = (validate_ntype(tree, with_stmt)
-        && (nch % 2 == 0)
-        && validate_name(CHILD(tree, 0), "with")
-        && validate_colon(RCHILD(tree, -2))
-        && validate_suite(RCHILD(tree, -1)));
-    for (i = 1; ok && i < nch - 2; i += 2)
-        ok = validate_with_item(CHILD(tree, i));
-    return ok;
-}
-
-/*  funcdef:
- *
- *     -5   -4         -3  -2    -1
- *  'def' NAME parameters ':' suite
- */
-static int
-validate_funcdef(node *tree)
-{
-    int nch = NCH(tree);
-    int ok = (validate_ntype(tree, funcdef)
-               && (nch == 5)
-               && validate_name(RCHILD(tree, -5), "def")
-               && validate_ntype(RCHILD(tree, -4), NAME)
-               && validate_colon(RCHILD(tree, -2))
-               && validate_parameters(RCHILD(tree, -3))
-               && validate_suite(RCHILD(tree, -1)));
-    return ok;
-}
-
-
-/* decorated
- *   decorators (classdef | funcdef)
- */
-static int
-validate_decorated(node *tree)
-{
-    int nch = NCH(tree);
-    int ok = (validate_ntype(tree, decorated)
-              && (nch == 2)
-              && validate_decorators(RCHILD(tree, -2)));
-    if (TYPE(RCHILD(tree, -1)) == funcdef)
-        ok = ok && validate_funcdef(RCHILD(tree, -1));
-    else
-        ok = ok && validate_class(RCHILD(tree, -1));
-    return ok;
-}
-
-static int
-validate_lambdef(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, lambdef)
-               && ((nch == 3) || (nch == 4))
-               && validate_name(CHILD(tree, 0), "lambda")
-               && validate_colon(CHILD(tree, nch - 2))
-               && validate_test(CHILD(tree, nch - 1)));
-
-    if (res && (nch == 4))
-        res = validate_varargslist(CHILD(tree, 1));
-    else if (!res && !PyErr_Occurred())
-        (void) validate_numnodes(tree, 3, "lambdef");
-
-    return (res);
-}
-
-
-static int
-validate_old_lambdef(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, old_lambdef)
-               && ((nch == 3) || (nch == 4))
-               && validate_name(CHILD(tree, 0), "lambda")
-               && validate_colon(CHILD(tree, nch - 2))
-               && validate_test(CHILD(tree, nch - 1)));
-
-    if (res && (nch == 4))
-        res = validate_varargslist(CHILD(tree, 1));
-    else if (!res && !PyErr_Occurred())
-        (void) validate_numnodes(tree, 3, "old_lambdef");
-
-    return (res);
-}
-
-
-/*  arglist:
- *
- *  (argument ',')* (argument [','] | '*' test [',' '**' test] | '**' test)
- */
-static int
-validate_arglist(node *tree)
-{
-    int nch = NCH(tree);
-    int i = 0;
-    int ok = 1;
-
-    if (nch <= 0)
-        /* raise the right error from having an invalid number of children */
-        return validate_numnodes(tree, nch + 1, "arglist");
-
-    if (nch > 1) {
-        for (i=0; i<nch; i++) {
-            if (TYPE(CHILD(tree, i)) == argument) {
-                node *ch = CHILD(tree, i);
-                if (NCH(ch) == 2 && TYPE(CHILD(ch, 1)) == comp_for) {
-                    err_string("need '(', ')' for generator expression");
-                    return 0;
-                }
-            }
-        }
-    }
-
-    while (ok && nch-i >= 2) {
-        /* skip leading (argument ',') */
-        ok = (validate_argument(CHILD(tree, i))
-              && validate_comma(CHILD(tree, i+1)));
-        if (ok)
-            i += 2;
-        else
-            PyErr_Clear();
-    }
-    ok = 1;
-    if (nch-i > 0) {
-        /*
-         * argument | '*' test [',' '**' test] | '**' test
-         */
-        int sym = TYPE(CHILD(tree, i));
-
-        if (sym == argument) {
-            ok = validate_argument(CHILD(tree, i));
-            if (ok && i+1 != nch) {
-                err_string("illegal arglist specification"
-                           " (extra stuff on end)");
-                ok = 0;
-            }
-        }
-        else if (sym == STAR) {
-            ok = validate_star(CHILD(tree, i));
-            if (ok && (nch-i == 2))
-                ok = validate_test(CHILD(tree, i+1));
-            else if (ok && (nch-i == 5))
-                ok = (validate_test(CHILD(tree, i+1))
-                      && validate_comma(CHILD(tree, i+2))
-                      && validate_doublestar(CHILD(tree, i+3))
-                      && validate_test(CHILD(tree, i+4)));
-            else {
-                err_string("illegal use of '*' in arglist");
-                ok = 0;
-            }
-        }
-        else if (sym == DOUBLESTAR) {
-            if (nch-i == 2)
-                ok = (validate_doublestar(CHILD(tree, i))
-                      && validate_test(CHILD(tree, i+1)));
-            else {
-                err_string("illegal use of '**' in arglist");
-                ok = 0;
-            }
-        }
-        else {
-            err_string("illegal arglist specification");
-            ok = 0;
-        }
-    }
-    return (ok);
-}
-
-
-
-/*  argument:
- *
- *  [test '='] test [comp_for]
- */
-static int
-validate_argument(node *tree)
-{
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, argument)
-               && ((nch == 1) || (nch == 2) || (nch == 3))
-               && validate_test(CHILD(tree, 0)));
-
-    if (res && (nch == 2))
-        res = validate_comp_for(CHILD(tree, 1));
-    else if (res && (nch == 3))
-        res = (validate_equal(CHILD(tree, 1))
-               && validate_test(CHILD(tree, 2)));
-
-    return (res);
-}
-
-
-
-/*  trailer:
- *
- *  '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME
- */
-static int
-validate_trailer(node *tree)
-{
-    int nch = NCH(tree);
-    int res = validate_ntype(tree, trailer) && ((nch == 2) || (nch == 3));
-
-    if (res) {
-        switch (TYPE(CHILD(tree, 0))) {
-          case LPAR:
-            res = validate_rparen(CHILD(tree, nch - 1));
-            if (res && (nch == 3))
-                res = validate_arglist(CHILD(tree, 1));
-            break;
-          case LSQB:
-            res = (validate_numnodes(tree, 3, "trailer")
-                   && validate_subscriptlist(CHILD(tree, 1))
-                   && validate_ntype(CHILD(tree, 2), RSQB));
-            break;
-          case DOT:
-            res = (validate_numnodes(tree, 2, "trailer")
-                   && validate_ntype(CHILD(tree, 1), NAME));
-            break;
-          default:
-            res = 0;
-            break;
-        }
-    }
-    else {
-        (void) validate_numnodes(tree, 2, "trailer");
-    }
-    return (res);
-}
-
-
-/*  subscriptlist:
- *
- *  subscript (',' subscript)* [',']
- */
-static int
-validate_subscriptlist(node *tree)
-{
-    return (validate_repeating_list(tree, subscriptlist,
-                                    validate_subscript, "subscriptlist"));
-}
-
-
-/*  subscript:
- *
- *  '.' '.' '.' | test | [test] ':' [test] [sliceop]
- */
-static int
-validate_subscript(node *tree)
-{
-    int offset = 0;
-    int nch = NCH(tree);
-    int res = validate_ntype(tree, subscript) && (nch >= 1) && (nch <= 4);
-
-    if (!res) {
-        if (!PyErr_Occurred())
-            err_string("invalid number of arguments for subscript node");
-        return (0);
-    }
-    if (TYPE(CHILD(tree, 0)) == DOT)
-        /* take care of ('.' '.' '.') possibility */
-        return (validate_numnodes(tree, 3, "subscript")
-                && validate_dot(CHILD(tree, 0))
-                && validate_dot(CHILD(tree, 1))
-                && validate_dot(CHILD(tree, 2)));
-    if (nch == 1) {
-        if (TYPE(CHILD(tree, 0)) == test)
-            res = validate_test(CHILD(tree, 0));
-        else
-            res = validate_colon(CHILD(tree, 0));
-        return (res);
-    }
-    /*  Must be [test] ':' [test] [sliceop],
-     *  but at least one of the optional components will
-     *  be present, but we don't know which yet.
-     */
-    if ((TYPE(CHILD(tree, 0)) != COLON) || (nch == 4)) {
-        res = validate_test(CHILD(tree, 0));
-        offset = 1;
-    }
-    if (res)
-        res = validate_colon(CHILD(tree, offset));
-    if (res) {
-        int rem = nch - ++offset;
-        if (rem) {
-            if (TYPE(CHILD(tree, offset)) == test) {
-                res = validate_test(CHILD(tree, offset));
-                ++offset;
-                --rem;
-            }
-            if (res && rem)
-                res = validate_sliceop(CHILD(tree, offset));
-        }
-    }
-    return (res);
-}
-
-
-static int
-validate_sliceop(node *tree)
-{
-    int nch = NCH(tree);
-    int res = ((nch == 1) || validate_numnodes(tree, 2, "sliceop"))
-              && validate_ntype(tree, sliceop);
-    if (!res && !PyErr_Occurred()) {
-        res = validate_numnodes(tree, 1, "sliceop");
-    }
-    if (res)
-        res = validate_colon(CHILD(tree, 0));
-    if (res && (nch == 2))
-        res = validate_test(CHILD(tree, 1));
-
-    return (res);
-}
-
-
-static int
-validate_exprlist(node *tree)
-{
-    return (validate_repeating_list(tree, exprlist,
-                                    validate_expr, "exprlist"));
-}
-
-
-/*
- * dictorsetmaker:
- *
- * (test ':' test (comp_for | (',' test ':' test)* [','])) |
- * (test (comp_for | (',' test)* [',']))
- */
-static int
-validate_dictorsetmaker(node *tree)
-{
-    int nch = NCH(tree);
-    int ok = validate_ntype(tree, dictorsetmaker);
-    int i = 0;
-    int check_trailing_comma = 0;
-
-    assert(nch > 0);
-
-    if (ok && (nch == 1 || TYPE(CHILD(tree, 1)) == COMMA)) {
-        /* We got a set:
-         *     test (',' test)* [',']
-         */
-        ok = validate_test(CHILD(tree, i++));
-        while (ok && nch - i >= 2) {
-            ok = (validate_comma(CHILD(tree, i))
-                   && validate_test(CHILD(tree, i+1)));
-            i += 2;
-        }
-        check_trailing_comma = 1;
-    }
-    else if (ok && TYPE(CHILD(tree, 1)) == comp_for) {
-        /* We got a set comprehension:
-         *     test comp_for
-         */
-        ok = (validate_test(CHILD(tree, 0))
-              && validate_comp_for(CHILD(tree, 1)));
-    }
-    else if (ok && NCH(tree) > 3 && TYPE(CHILD(tree, 3)) == comp_for) {
-        /* We got a dict comprehension:
-         *     test ':' test comp_for
-         */
-        ok = (validate_test(CHILD(tree, 0))
-              && validate_colon(CHILD(tree, 1))
-              && validate_test(CHILD(tree, 2))
-              && validate_comp_for(CHILD(tree, 3)));
-    }
-    else if (ok) {
-        /* We got a dict:
-         *     test ':' test (',' test ':' test)* [',']
-         */
-        if (nch >= 3) {
-            ok = (validate_test(CHILD(tree, i))
-                  && validate_colon(CHILD(tree, i+1))
-                  && validate_test(CHILD(tree, i+2)));
-            i += 3;
-        }
-        else {
-            ok = 0;
-            err_string("illegal number of nodes for dictorsetmaker");
-        }
-
-        while (ok && nch - i >= 4) {
-            ok = (validate_comma(CHILD(tree, i))
-                  && validate_test(CHILD(tree, i+1))
-                  && validate_colon(CHILD(tree, i+2))
-                  && validate_test(CHILD(tree, i+3)));
-            i += 4;
-        }
-        check_trailing_comma = 1;
-    }
-    if (ok && check_trailing_comma) {
-        if (i == nch-1)
-            ok = validate_comma(CHILD(tree, i));
-        else if (i != nch) {
-            ok = 0;
-            err_string("illegal trailing nodes for dictorsetmaker");
-        }
-    }
-
-    return ok;
-}
-
-
-static int
-validate_eval_input(node *tree)
-{
-    int pos;
-    int nch = NCH(tree);
-    int res = (validate_ntype(tree, eval_input)
-               && (nch >= 2)
-               && validate_testlist(CHILD(tree, 0))
-               && validate_ntype(CHILD(tree, nch - 1), ENDMARKER));
-
-    for (pos = 1; res && (pos < (nch - 1)); ++pos)
-        res = validate_ntype(CHILD(tree, pos), NEWLINE);
-
-    return (res);
-}
-
-
-static int
-validate_node(node *tree)
-{
-    int   nch  = 0;                     /* num. children on current node  */
-    int   res  = 1;                     /* result value                   */
-    node* next = 0;                     /* node to process after this one */
-
-    while (res && (tree != 0)) {
-        nch  = NCH(tree);
-        next = 0;
-        switch (TYPE(tree)) {
-            /*
-             *  Definition nodes.
-             */
-          case funcdef:
-            res = validate_funcdef(tree);
-            break;
-          case with_stmt:
-            res = validate_with_stmt(tree);
-            break;
-          case classdef:
-            res = validate_class(tree);
-            break;
-          case decorated:
-            res = validate_decorated(tree);
-            break;
-            /*
-             *  "Trivial" parse tree nodes.
-             *  (Why did I call these trivial?)
-             */
-          case stmt:
-            res = validate_stmt(tree);
-            break;
-          case small_stmt:
-            /*
-             *  expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt
-             *  | import_stmt | global_stmt | exec_stmt | assert_stmt
-             */
-            res = validate_small_stmt(tree);
-            break;
-          case flow_stmt:
-            res  = (validate_numnodes(tree, 1, "flow_stmt")
-                    && ((TYPE(CHILD(tree, 0)) == break_stmt)
-                        || (TYPE(CHILD(tree, 0)) == continue_stmt)
-                        || (TYPE(CHILD(tree, 0)) == yield_stmt)
-                        || (TYPE(CHILD(tree, 0)) == return_stmt)
-                        || (TYPE(CHILD(tree, 0)) == raise_stmt)));
-            if (res)
-                next = CHILD(tree, 0);
-            else if (nch == 1)
-                err_string("illegal flow_stmt type");
-            break;
-          case yield_stmt:
-            res = validate_yield_stmt(tree);
-            break;
-            /*
-             *  Compound statements.
-             */
-          case simple_stmt:
-            res = validate_simple_stmt(tree);
-            break;
-          case compound_stmt:
-            res = validate_compound_stmt(tree);
-            break;
-            /*
-             *  Fundamental statements.
-             */
-          case expr_stmt:
-            res = validate_expr_stmt(tree);
-            break;
-          case print_stmt:
-            res = validate_print_stmt(tree);
-            break;
-          case del_stmt:
-            res = validate_del_stmt(tree);
-            break;
-          case pass_stmt:
-            res = (validate_numnodes(tree, 1, "pass")
-                   && validate_name(CHILD(tree, 0), "pass"));
-            break;
-          case break_stmt:
-            res = (validate_numnodes(tree, 1, "break")
-                   && validate_name(CHILD(tree, 0), "break"));
-            break;
-          case continue_stmt:
-            res = (validate_numnodes(tree, 1, "continue")
-                   && validate_name(CHILD(tree, 0), "continue"));
-            break;
-          case return_stmt:
-            res = validate_return_stmt(tree);
-            break;
-          case raise_stmt:
-            res = validate_raise_stmt(tree);
-            break;
-          case import_stmt:
-            res = validate_import_stmt(tree);
-            break;
-          case import_name:
-            res = validate_import_name(tree);
-            break;
-          case import_from:
-            res = validate_import_from(tree);
-            break;
-          case global_stmt:
-            res = validate_global_stmt(tree);
-            break;
-          case exec_stmt:
-            res = validate_exec_stmt(tree);
-            break;
-          case assert_stmt:
-            res = validate_assert_stmt(tree);
-            break;
-          case if_stmt:
-            res = validate_if(tree);
-            break;
-          case while_stmt:
-            res = validate_while(tree);
-            break;
-          case for_stmt:
-            res = validate_for(tree);
-            break;
-          case try_stmt:
-            res = validate_try(tree);
-            break;
-          case suite:
-            res = validate_suite(tree);
-            break;
-            /*
-             *  Expression nodes.
-             */
-          case testlist:
-            res = validate_testlist(tree);
-            break;
-          case yield_expr:
-            res = validate_yield_expr(tree);
-            break;
-          case testlist1:
-            res = validate_testlist1(tree);
-            break;
-          case test:
-            res = validate_test(tree);
-            break;
-          case and_test:
-            res = validate_and_test(tree);
-            break;
-          case not_test:
-            res = validate_not_test(tree);
-            break;
-          case comparison:
-            res = validate_comparison(tree);
-            break;
-          case exprlist:
-            res = validate_exprlist(tree);
-            break;
-          case comp_op:
-            res = validate_comp_op(tree);
-            break;
-          case expr:
-            res = validate_expr(tree);
-            break;
-          case xor_expr:
-            res = validate_xor_expr(tree);
-            break;
-          case and_expr:
-            res = validate_and_expr(tree);
-            break;
-          case shift_expr:
-            res = validate_shift_expr(tree);
-            break;
-          case arith_expr:
-            res = validate_arith_expr(tree);
-            break;
-          case term:
-            res = validate_term(tree);
-            break;
-          case factor:
-            res = validate_factor(tree);
-            break;
-          case power:
-            res = validate_power(tree);
-            break;
-          case atom:
-            res = validate_atom(tree);
-            break;
-
-          default:
-            /* Hopefully never reached! */
-            err_string("unrecognized node type");
-            res = 0;
-            break;
-        }
-        tree = next;
-    }
-    return (res);
-}
-
-
-static int
-validate_expr_tree(node *tree)
-{
-    int res = validate_eval_input(tree);
-
-    if (!res && !PyErr_Occurred())
-        err_string("could not validate expression tuple");
-
-    return (res);
-}
-
-
-/*  file_input:
- *      (NEWLINE | stmt)* ENDMARKER
- */
-static int
-validate_file_input(node *tree)
-{
-    int j;
-    int nch = NCH(tree) - 1;
-    int res = ((nch >= 0)
-               && validate_ntype(CHILD(tree, nch), ENDMARKER));
-
-    for (j = 0; res && (j < nch); ++j) {
-        if (TYPE(CHILD(tree, j)) == stmt)
-            res = validate_stmt(CHILD(tree, j));
-        else
-            res = validate_newline(CHILD(tree, j));
-    }
-    /*  This stays in to prevent any internal failures from getting to the
-     *  user.  Hopefully, this won't be needed.  If a user reports getting
-     *  this, we have some debugging to do.
-     */
-    if (!res && !PyErr_Occurred())
-        err_string("VALIDATION FAILURE: report this to the maintainer!");
-
-    return (res);
-}
-
-static int
-validate_encoding_decl(node *tree)
-{
-    int nch = NCH(tree);
-    int res = ((nch == 1)
-        && validate_file_input(CHILD(tree, 0)));
-
-    if (!res && !PyErr_Occurred())
-        err_string("Error Parsing encoding_decl");
-
-    return res;
-}
-
-static PyObject*
-pickle_constructor = NULL;
-
-
-static PyObject*
-parser__pickler(PyObject *self, PyObject *args)
-{
-    NOTE(ARGUNUSED(self))
-    PyObject *result = NULL;
-    PyObject *st = NULL;
-    PyObject *empty_dict = NULL;
-
-    if (PyArg_ParseTuple(args, "O!:_pickler", &PyST_Type, &st)) {
-        PyObject *newargs;
-        PyObject *tuple;
-
-        if ((empty_dict = PyDict_New()) == NULL)
-            goto finally;
-        if ((newargs = Py_BuildValue("Oi", st, 1)) == NULL)
-            goto finally;
-        tuple = parser_st2tuple((PyST_Object*)NULL, newargs, empty_dict);
-        if (tuple != NULL) {
-            result = Py_BuildValue("O(O)", pickle_constructor, tuple);
-            Py_DECREF(tuple);
-        }
-        Py_DECREF(empty_dict);
-        Py_DECREF(newargs);
-    }
-  finally:
-    Py_XDECREF(empty_dict);
-
-    return (result);
-}
-
-
-/*  Functions exported by this module.  Most of this should probably
- *  be converted into an ST object with methods, but that is better
- *  done directly in Python, allowing subclasses to be created directly.
- *  We'd really have to write a wrapper around it all anyway to allow
- *  inheritance.
- */
-static PyMethodDef parser_functions[] =  {
-    {"ast2tuple",       (PyCFunction)parser_ast2tuple, PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Creates a tuple-tree representation of an ST.")},
-    {"ast2list",        (PyCFunction)parser_ast2list,  PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Creates a list-tree representation of an ST.")},
-    {"compileast",      (PyCFunction)parser_compileast,PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Compiles an ST object into a code object.")},
-    {"compilest",      (PyCFunction)parser_compilest,  PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Compiles an ST object into a code object.")},
-    {"expr",            (PyCFunction)parser_expr,      PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Creates an ST object from an expression.")},
-    {"isexpr",          (PyCFunction)parser_isexpr,    PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Determines if an ST object was created from an expression.")},
-    {"issuite",         (PyCFunction)parser_issuite,   PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Determines if an ST object was created from a suite.")},
-    {"suite",           (PyCFunction)parser_suite,     PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Creates an ST object from a suite.")},
-    {"sequence2ast",    (PyCFunction)parser_tuple2ast, PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Creates an ST object from a tree representation.")},
-    {"sequence2st",     (PyCFunction)parser_tuple2st,  PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Creates an ST object from a tree representation.")},
-    {"st2tuple",        (PyCFunction)parser_st2tuple,  PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Creates a tuple-tree representation of an ST.")},
-    {"st2list",         (PyCFunction)parser_st2list,   PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Creates a list-tree representation of an ST.")},
-    {"tuple2ast",       (PyCFunction)parser_tuple2ast, PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Creates an ST object from a tree representation.")},
-    {"tuple2st",        (PyCFunction)parser_tuple2st,  PUBLIC_METHOD_TYPE,
-        PyDoc_STR("Creates an ST object from a tree representation.")},
-
-    /* private stuff: support pickle module */
-    {"_pickler",        (PyCFunction)parser__pickler,  METH_VARARGS,
-        PyDoc_STR("Returns the pickle magic to allow ST objects to be pickled.")},
-
-    {NULL, NULL, 0, NULL}
-    };
-
-
-PyMODINIT_FUNC initparser(void);  /* supply a prototype */
-
-PyMODINIT_FUNC
-initparser(void)
-{
-    PyObject *module, *copyreg;
-
-    Py_TYPE(&PyST_Type) = &PyType_Type;
-    module = Py_InitModule("parser", parser_functions);
-    if (module == NULL)
-        return;
-
-    if (parser_error == 0)
-        parser_error = PyErr_NewException("parser.ParserError", NULL, NULL);
-
-    if (parser_error == 0)
-        /* caller will check PyErr_Occurred() */
-        return;
-    /* CAUTION:  The code next used to skip bumping the refcount on
-     * parser_error.  That's a disaster if initparser() gets called more
-     * than once.  By incref'ing, we ensure that each module dict that
-     * gets created owns its reference to the shared parser_error object,
-     * and the file static parser_error vrbl owns a reference too.
-     */
-    Py_INCREF(parser_error);
-    if (PyModule_AddObject(module, "ParserError", parser_error) != 0)
-        return;
-
-    Py_INCREF(&PyST_Type);
-    PyModule_AddObject(module, "ASTType", (PyObject*)&PyST_Type);
-    Py_INCREF(&PyST_Type);
-    PyModule_AddObject(module, "STType", (PyObject*)&PyST_Type);
-
-    PyModule_AddStringConstant(module, "__copyright__",
-                               parser_copyright_string);
-    PyModule_AddStringConstant(module, "__doc__",
-                               parser_doc_string);
-    PyModule_AddStringConstant(module, "__version__",
-                               parser_version_string);
-
-    /* Register to support pickling.
-     * If this fails, the import of this module will fail because an
-     * exception will be raised here; should we clear the exception?
-     */
-    copyreg = PyImport_ImportModuleNoBlock("copy_reg");
-    if (copyreg != NULL) {
-        PyObject *func, *pickler;
-
-        func = PyObject_GetAttrString(copyreg, "pickle");
-        pickle_constructor = PyObject_GetAttrString(module, "sequence2st");
-        pickler = PyObject_GetAttrString(module, "_pickler");
-        Py_XINCREF(pickle_constructor);
-        if ((func != NULL) && (pickle_constructor != NULL)
-            && (pickler != NULL)) {
-            PyObject *res;
-
-            res = PyObject_CallFunctionObjArgs(func, &PyST_Type, pickler,
-                                               pickle_constructor, NULL);
-            Py_XDECREF(res);
-        }
-        Py_XDECREF(func);
-        Py_XDECREF(pickle_constructor);
-        Py_XDECREF(pickler);
-        Py_DECREF(copyreg);
-    }
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/posixmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/posixmodule.c
deleted file mode 100644
index a5c2816..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/posixmodule.c
+++ /dev/null
@@ -1,9396 +0,0 @@
-
-/* POSIX module implementation */
-
-/* This file is also used for Windows NT/MS-Win and OS/2.  In that case the
-   module actually calls itself 'nt' or 'os2', not 'posix', and a few
-   functions are either unimplemented or implemented differently.  The source
-   assumes that for Windows NT, the macro 'MS_WINDOWS' is defined independent
-   of the compiler used.  Different compilers define their own feature
-   test macro, e.g. '__BORLANDC__' or '_MSC_VER'.  For OS/2, the compiler
-   independent macro PYOS_OS2 should be defined.  On OS/2 the default
-   compiler is assumed to be IBM's VisualAge C++ (VACPP).  PYCC_GCC is used
-   as the compiler specific macro for the EMX port of gcc to OS/2. */
-
-/* See also ../Dos/dosmodule.c */
-
-#ifdef __APPLE__
-   /*
-    * Step 1 of support for weak-linking a number of symbols existing on
-    * OSX 10.4 and later, see the comment in the #ifdef __APPLE__ block
-    * at the end of this file for more information.
-    */
-#  pragma weak lchown
-#  pragma weak statvfs
-#  pragma weak fstatvfs
-
-#endif /* __APPLE__ */
-
-#define PY_SSIZE_T_CLEAN
-
-#include "Python.h"
-#include "structseq.h"
-
-#if defined(__VMS)
-#    include <unixio.h>
-#endif /* defined(__VMS) */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-PyDoc_STRVAR(posix__doc__,
-"This module provides access to operating system functionality that is\n\
-standardized by the C Standard and the POSIX standard (a thinly\n\
-disguised Unix interface).  Refer to the library manual and\n\
-corresponding Unix manual entries for more information on calls.");
-
-#ifndef Py_USING_UNICODE
-/* This is used in signatures of functions. */
-#define Py_UNICODE void
-#endif
-
-#if defined(PYOS_OS2)
-#define  INCL_DOS
-#define  INCL_DOSERRORS
-#define  INCL_DOSPROCESS
-#define  INCL_NOPMAPI
-#include <os2.h>
-#if defined(PYCC_GCC)
-#include <ctype.h>
-#include <io.h>
-#include <stdio.h>
-#include <process.h>
-#endif
-#include "osdefs.h"
-#endif
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif /* HAVE_SYS_TYPES_H */
-
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif /* HAVE_SYS_STAT_H */
-
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>           /* For WNOHANG */
-#endif
-
-#ifdef HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif /* HAVE_FCNTL_H */
-
-#ifdef HAVE_GRP_H
-#include <grp.h>
-#endif
-
-#ifdef HAVE_SYSEXITS_H
-#include <sysexits.h>
-#endif /* HAVE_SYSEXITS_H */
-
-#ifdef HAVE_SYS_LOADAVG_H
-#include <sys/loadavg.h>
-#endif
-
-/* Various compilers have only certain posix functions */
-/* XXX Gosh I wish these were all moved into pyconfig.h */
-#if defined(PYCC_VACPP) && defined(PYOS_OS2)
-#include <process.h>
-#else
-#if defined(__WATCOMC__) && !defined(__QNX__)           /* Watcom compiler */
-#define HAVE_GETCWD     1
-#define HAVE_OPENDIR    1
-#define HAVE_SYSTEM     1
-#if defined(__OS2__)
-#define HAVE_EXECV      1
-#define HAVE_WAIT       1
-#endif
-#include <process.h>
-#else
-#ifdef __BORLANDC__             /* Borland compiler */
-#define HAVE_EXECV      1
-#define HAVE_GETCWD     1
-#define HAVE_OPENDIR    1
-#define HAVE_PIPE       1
-#define HAVE_POPEN      1
-#define HAVE_SYSTEM     1
-#define HAVE_WAIT       1
-#else
-#ifdef _MSC_VER         /* Microsoft compiler */
-#define HAVE_GETCWD     1
-#define HAVE_SPAWNV     1
-#define HAVE_EXECV      1
-#define HAVE_PIPE       1
-#define HAVE_POPEN      1
-#define HAVE_SYSTEM     1
-#define HAVE_CWAIT      1
-#define HAVE_FSYNC      1
-#define fsync _commit
-#else
-#if defined(PYOS_OS2) && defined(PYCC_GCC) || 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 */
-#define HAVE_EXECV      1
-#define HAVE_FORK       1
-#if defined(__USLC__) && defined(__SCO_VERSION__)       /* SCO UDK Compiler */
-#define HAVE_FORK1      1
-#endif
-#define HAVE_GETCWD     1
-#define HAVE_GETEGID    1
-#define HAVE_GETEUID    1
-#define HAVE_GETGID     1
-#define HAVE_GETPPID    1
-#define HAVE_GETUID     1
-#define HAVE_KILL       1
-#define HAVE_OPENDIR    1
-#define HAVE_PIPE       1
-#ifndef __rtems__
-#define HAVE_POPEN      1
-#endif
-#define HAVE_SYSTEM     1
-#define HAVE_WAIT       1
-#define HAVE_TTYNAME    1
-#endif  /* PYOS_OS2 && PYCC_GCC && __VMS */
-#endif  /* _MSC_VER */
-#endif  /* __BORLANDC__ */
-#endif  /* ! __WATCOMC__ || __QNX__ */
-#endif /* ! __IBMC__ */
-
-#ifndef _MSC_VER
-
-#if defined(__sgi)&&_COMPILER_VERSION>=700
-/* declare ctermid_r if compiling with MIPSPro 7.x in ANSI C mode
-   (default) */
-extern char        *ctermid_r(char *);
-#endif
-
-#ifndef HAVE_UNISTD_H
-#if defined(PYCC_VACPP)
-extern int mkdir(char *);
-#else
-#if ( defined(__WATCOMC__) || defined(_MSC_VER) ) && !defined(__QNX__)
-extern int mkdir(const char *);
-#else
-extern int mkdir(const char *, mode_t);
-#endif
-#endif
-#if defined(__IBMC__) || defined(__IBMCPP__)
-extern int chdir(char *);
-extern int rmdir(char *);
-#else
-extern int chdir(const char *);
-extern int rmdir(const char *);
-#endif
-#ifdef __BORLANDC__
-extern int chmod(const char *, int);
-#else
-extern int chmod(const char *, mode_t);
-#endif
-/*#ifdef HAVE_FCHMOD
-extern int fchmod(int, mode_t);
-#endif*/
-/*#ifdef HAVE_LCHMOD
-extern int lchmod(const char *, mode_t);
-#endif*/
-extern int chown(const char *, uid_t, gid_t);
-extern char *getcwd(char *, int);
-extern char *strerror(int);
-extern int link(const char *, const char *);
-extern int rename(const char *, const char *);
-extern int stat(const char *, struct stat *);
-extern int unlink(const char *);
-extern int pclose(FILE *);
-#ifdef HAVE_SYMLINK
-extern int symlink(const char *, const char *);
-#endif /* HAVE_SYMLINK */
-#ifdef HAVE_LSTAT
-extern int lstat(const char *, struct stat *);
-#endif /* HAVE_LSTAT */
-#endif /* !HAVE_UNISTD_H */
-
-#endif /* !_MSC_VER */
-
-#ifdef HAVE_UTIME_H
-#include <utime.h>
-#endif /* HAVE_UTIME_H */
-
-#ifdef HAVE_SYS_UTIME_H
-#include <sys/utime.h>
-#define HAVE_UTIME_H /* pretend we do for the rest of this file */
-#endif /* HAVE_SYS_UTIME_H */
-
-#ifdef HAVE_SYS_TIMES_H
-#include <sys/times.h>
-#endif /* HAVE_SYS_TIMES_H */
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif /* HAVE_SYS_PARAM_H */
-
-#ifdef HAVE_SYS_UTSNAME_H
-#include <sys/utsname.h>
-#endif /* HAVE_SYS_UTSNAME_H */
-
-#ifdef HAVE_DIRENT_H
-#include <dirent.h>
-#define NAMLEN(dirent) strlen((dirent)->d_name)
-#else
-#if defined(__WATCOMC__) && !defined(__QNX__)
-#include <direct.h>
-#define NAMLEN(dirent) strlen((dirent)->d_name)
-#else
-#define dirent direct
-#define NAMLEN(dirent) (dirent)->d_namlen
-#endif
-#ifdef HAVE_SYS_NDIR_H
-#include <sys/ndir.h>
-#endif
-#ifdef HAVE_SYS_DIR_H
-#include <sys/dir.h>
-#endif
-#ifdef HAVE_NDIR_H
-#include <ndir.h>
-#endif
-#endif
-
-#ifdef _MSC_VER
-#ifdef HAVE_DIRECT_H
-#include <direct.h>
-#endif
-#ifdef HAVE_IO_H
-#include <io.h>
-#endif
-#ifdef HAVE_PROCESS_H
-#include <process.h>
-#endif
-#include "osdefs.h"
-#include <malloc.h>
-#include <windows.h>
-#include <shellapi.h>   /* for ShellExecute() */
-#define popen   _popen
-#define pclose  _pclose
-#endif /* _MSC_VER */
-
-#if defined(PYCC_VACPP) && defined(PYOS_OS2)
-#include <io.h>
-#endif /* OS2 */
-
-#ifndef MAXPATHLEN
-#if defined(PATH_MAX) && PATH_MAX > 1024
-#define MAXPATHLEN PATH_MAX
-#else
-#define MAXPATHLEN 1024
-#endif
-#endif /* MAXPATHLEN */
-
-#ifdef UNION_WAIT
-/* Emulate some macros on systems that have a union instead of macros */
-
-#ifndef WIFEXITED
-#define WIFEXITED(u_wait) (!(u_wait).w_termsig && !(u_wait).w_coredump)
-#endif
-
-#ifndef WEXITSTATUS
-#define WEXITSTATUS(u_wait) (WIFEXITED(u_wait)?((u_wait).w_retcode):-1)
-#endif
-
-#ifndef WTERMSIG
-#define WTERMSIG(u_wait) ((u_wait).w_termsig)
-#endif
-
-#define WAIT_TYPE union wait
-#define WAIT_STATUS_INT(s) (s.w_status)
-
-#else /* !UNION_WAIT */
-#define WAIT_TYPE int
-#define WAIT_STATUS_INT(s) (s)
-#endif /* UNION_WAIT */
-
-/* Issue #1983: pid_t can be longer than a C long on some systems */
-#if !defined(SIZEOF_PID_T) || SIZEOF_PID_T == SIZEOF_INT
-#define PARSE_PID "i"
-#define PyLong_FromPid PyInt_FromLong
-#define PyLong_AsPid PyInt_AsLong
-#elif SIZEOF_PID_T == SIZEOF_LONG
-#define PARSE_PID "l"
-#define PyLong_FromPid PyInt_FromLong
-#define PyLong_AsPid PyInt_AsLong
-#elif defined(SIZEOF_LONG_LONG) && SIZEOF_PID_T == SIZEOF_LONG_LONG
-#define PARSE_PID "L"
-#define PyLong_FromPid PyLong_FromLongLong
-#define PyLong_AsPid PyInt_AsLongLong
-#else
-#error "sizeof(pid_t) is neither sizeof(int), sizeof(long) or sizeof(long long)"
-#endif /* SIZEOF_PID_T */
-
-/* Don't use the "_r" form if we don't need it (also, won't have a
-   prototype for it, at least on Solaris -- maybe others as well?). */
-#if defined(HAVE_CTERMID_R) && defined(WITH_THREAD)
-#define USE_CTERMID_R
-#endif
-
-#if defined(HAVE_TMPNAM_R) && defined(WITH_THREAD)
-#define USE_TMPNAM_R
-#endif
-
-/* choose the appropriate stat and fstat functions and return structs */
-#undef STAT
-#undef FSTAT
-#undef STRUCT_STAT
-#if defined(MS_WIN64) || defined(MS_WINDOWS)
-#       define STAT win32_stat
-#       define FSTAT win32_fstat
-#       define STRUCT_STAT struct win32_stat
-#else
-#       define STAT stat
-#       define FSTAT fstat
-#       define STRUCT_STAT struct stat
-#endif
-
-#if defined(MAJOR_IN_MKDEV)
-#include <sys/mkdev.h>
-#else
-#if defined(MAJOR_IN_SYSMACROS)
-#include <sys/sysmacros.h>
-#endif
-#if defined(HAVE_MKNOD) && defined(HAVE_SYS_MKDEV_H)
-#include <sys/mkdev.h>
-#endif
-#endif
-
-#if defined _MSC_VER && _MSC_VER >= 1400
-/* Microsoft CRT in VS2005 and higher will verify that a filehandle is
- * valid and throw an assertion if it isn't.
- * Normally, an invalid fd is likely to be a C program error and therefore
- * an assertion can be useful, but it does contradict the POSIX standard
- * which for write(2) states:
- *    "Otherwise, -1 shall be returned and errno set to indicate the error."
- *    "[EBADF] The fildes argument is not a valid file descriptor open for
- *     writing."
- * Furthermore, python allows the user to enter any old integer
- * as a fd and should merely raise a python exception on error.
- * The Microsoft CRT doesn't provide an official way to check for the
- * validity of a file descriptor, but we can emulate its internal behaviour
- * by using the exported __pinfo data member and knowledge of the
- * internal structures involved.
- * The structures below must be updated for each version of visual studio
- * according to the file internal.h in the CRT source, until MS comes
- * up with a less hacky way to do this.
- * (all of this is to avoid globally modifying the CRT behaviour using
- * _set_invalid_parameter_handler() and _CrtSetReportMode())
- */
-/* The actual size of the structure is determined at runtime.
- * Only the first items must be present.
- */
-typedef struct {
-    intptr_t osfhnd;
-    char osfile;
-} my_ioinfo;
-
-extern __declspec(dllimport) char * __pioinfo[];
-#define IOINFO_L2E 5
-#define IOINFO_ARRAY_ELTS   (1 << IOINFO_L2E)
-#define IOINFO_ARRAYS 64
-#define _NHANDLE_           (IOINFO_ARRAYS * IOINFO_ARRAY_ELTS)
-#define FOPEN 0x01
-#define _NO_CONSOLE_FILENO (intptr_t)-2
-
-/* This function emulates what the windows CRT does to validate file handles */
-int
-_PyVerify_fd(int fd)
-{
-    const int i1 = fd >> IOINFO_L2E;
-    const int i2 = fd & ((1 << IOINFO_L2E) - 1);
-
-    static int sizeof_ioinfo = 0;
-
-    /* Determine the actual size of the ioinfo structure,
-     * as used by the CRT loaded in memory
-     */
-    if (sizeof_ioinfo == 0 && __pioinfo[0] != NULL) {
-        sizeof_ioinfo = _msize(__pioinfo[0]) / IOINFO_ARRAY_ELTS;
-    }
-    if (sizeof_ioinfo == 0) {
-        /* This should not happen... */
-        goto fail;
-    }
-
-    /* See that it isn't a special CLEAR fileno */
-    if (fd != _NO_CONSOLE_FILENO) {
-        /* Microsoft CRT would check that 0<=fd<_nhandle but we can't do that.  Instead
-         * we check pointer validity and other info
-         */
-        if (0 <= i1 && i1 < IOINFO_ARRAYS && __pioinfo[i1] != NULL) {
-            /* finally, check that the file is open */
-            my_ioinfo* info = (my_ioinfo*)(__pioinfo[i1] + i2 * sizeof_ioinfo);
-            if (info->osfile & FOPEN) {
-                return 1;
-            }
-        }
-    }
-  fail:
-    errno = EBADF;
-    return 0;
-}
-
-/* the special case of checking dup2.  The target fd must be in a sensible range */
-static int
-_PyVerify_fd_dup2(int fd1, int fd2)
-{
-    if (!_PyVerify_fd(fd1))
-        return 0;
-    if (fd2 == _NO_CONSOLE_FILENO)
-        return 0;
-    if ((unsigned)fd2 < _NHANDLE_)
-        return 1;
-    else
-        return 0;
-}
-#else
-/* dummy version. _PyVerify_fd() is already defined in fileobject.h */
-#define _PyVerify_fd_dup2(A, B) (1)
-#endif
-
-/* Return a dictionary corresponding to the POSIX environment table */
-#ifdef WITH_NEXT_FRAMEWORK
-/* On Darwin/MacOSX a shared library or framework has no access to
-** environ directly, we must obtain it with _NSGetEnviron().
-*/
-#include <crt_externs.h>
-static char **environ;
-#elif !defined(_MSC_VER) && ( !defined(__WATCOMC__) || defined(__QNX__) )
-extern char **environ;
-#endif /* !_MSC_VER */
-
-static PyObject *
-convertenviron(void)
-{
-    PyObject *d;
-    char **e;
-#if defined(PYOS_OS2)
-    APIRET rc;
-    char   buffer[1024]; /* OS/2 Provides a Documented Max of 1024 Chars */
-#endif
-    d = PyDict_New();
-    if (d == NULL)
-        return NULL;
-#ifdef WITH_NEXT_FRAMEWORK
-    if (environ == NULL)
-        environ = *_NSGetEnviron();
-#endif
-    if (environ == NULL)
-        return d;
-    /* This part ignores errors */
-    for (e = environ; *e != NULL; e++) {
-        PyObject *k;
-        PyObject *v;
-        char *p = strchr(*e, '=');
-        if (p == NULL)
-            continue;
-        k = PyString_FromStringAndSize(*e, (int)(p-*e));
-        if (k == NULL) {
-            PyErr_Clear();
-            continue;
-        }
-        v = PyString_FromString(p+1);
-        if (v == NULL) {
-            PyErr_Clear();
-            Py_DECREF(k);
-            continue;
-        }
-        if (PyDict_GetItem(d, k) == NULL) {
-            if (PyDict_SetItem(d, k, v) != 0)
-                PyErr_Clear();
-        }
-        Py_DECREF(k);
-        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);
-    }
-#endif
-    return d;
-}
-
-
-/* Set a POSIX-specific error from errno, and return NULL */
-
-static PyObject *
-posix_error(void)
-{
-    return PyErr_SetFromErrno(PyExc_OSError);
-}
-static PyObject *
-posix_error_with_filename(char* name)
-{
-    return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name);
-}
-
-#ifdef MS_WINDOWS
-static PyObject *
-posix_error_with_unicode_filename(Py_UNICODE* name)
-{
-    return PyErr_SetFromErrnoWithUnicodeFilename(PyExc_OSError, name);
-}
-#endif /* MS_WINDOWS */
-
-
-static PyObject *
-posix_error_with_allocated_filename(char* name)
-{
-    PyObject *rc = PyErr_SetFromErrnoWithFilename(PyExc_OSError, name);
-    PyMem_Free(name);
-    return rc;
-}
-
-#ifdef MS_WINDOWS
-static PyObject *
-win32_error(char* function, char* filename)
-{
-    /* XXX We should pass the function name along in the future.
-       (_winreg.c also wants to pass the function name.)
-       This would however require an additional param to the
-       Windows error object, which is non-trivial.
-    */
-    errno = GetLastError();
-    if (filename)
-        return PyErr_SetFromWindowsErrWithFilename(errno, filename);
-    else
-        return PyErr_SetFromWindowsErr(errno);
-}
-
-static PyObject *
-win32_error_unicode(char* function, Py_UNICODE* filename)
-{
-    /* XXX - see win32_error for comments on 'function' */
-    errno = GetLastError();
-    if (filename)
-        return PyErr_SetFromWindowsErrWithUnicodeFilename(errno, filename);
-    else
-        return PyErr_SetFromWindowsErr(errno);
-}
-
-static int
-convert_to_unicode(PyObject **param)
-{
-    if (PyUnicode_CheckExact(*param))
-        Py_INCREF(*param);
-    else if (PyUnicode_Check(*param))
-        /* For a Unicode subtype that's not a Unicode object,
-           return a true Unicode object with the same data. */
-        *param = PyUnicode_FromUnicode(PyUnicode_AS_UNICODE(*param),
-                                       PyUnicode_GET_SIZE(*param));
-    else
-        *param = PyUnicode_FromEncodedObject(*param,
-                                             Py_FileSystemDefaultEncoding,
-                                             "strict");
-    return (*param) != NULL;
-}
-
-#endif /* MS_WINDOWS */
-
-#if defined(PYOS_OS2)
-/**********************************************************************
- *         Helper Function to Trim and Format OS/2 Messages
- **********************************************************************/
-static void
-os2_formatmsg(char *msgbuf, int msglen, char *reason)
-{
-    msgbuf[msglen] = '\0'; /* OS/2 Doesn't Guarantee a Terminator */
-
-    if (strlen(msgbuf) > 0) { /* If Non-Empty Msg, Trim CRLF */
-        char *lastc = &msgbuf[ strlen(msgbuf)-1 ];
-
-        while (lastc > msgbuf && isspace(Py_CHARMASK(*lastc)))
-            *lastc-- = '\0'; /* Trim Trailing Whitespace (CRLF) */
-    }
-
-    /* Add Optional Reason Text */
-    if (reason) {
-        strcat(msgbuf, " : ");
-        strcat(msgbuf, reason);
-    }
-}
-
-/**********************************************************************
- *             Decode an OS/2 Operating System Error Code
- *
- * A convenience function to lookup an OS/2 error code and return a
- * text message we can use to raise a Python exception.
- *
- * Notes:
- *   The messages for errors returned from the OS/2 kernel reside in
- *   the file OSO001.MSG in the \OS2 directory hierarchy.
- *
- **********************************************************************/
-static char *
-os2_strerror(char *msgbuf, int msgbuflen, int errorcode, char *reason)
-{
-    APIRET rc;
-    ULONG  msglen;
-
-    /* Retrieve Kernel-Related Error Message from OSO001.MSG File */
-    Py_BEGIN_ALLOW_THREADS
-    rc = DosGetMessage(NULL, 0, msgbuf, msgbuflen,
-                       errorcode, "oso001.msg", &msglen);
-    Py_END_ALLOW_THREADS
-
-    if (rc == NO_ERROR)
-        os2_formatmsg(msgbuf, msglen, reason);
-    else
-        PyOS_snprintf(msgbuf, msgbuflen,
-                      "unknown OS error #%d", errorcode);
-
-    return msgbuf;
-}
-
-/* Set an OS/2-specific error and return NULL.  OS/2 kernel
-   errors are not in a global variable e.g. 'errno' nor are
-   they congruent with posix error numbers. */
-
-static PyObject *
-os2_error(int code)
-{
-    char text[1024];
-    PyObject *v;
-
-    os2_strerror(text, sizeof(text), code, "");
-
-    v = Py_BuildValue("(is)", code, text);
-    if (v != NULL) {
-        PyErr_SetObject(PyExc_OSError, v);
-        Py_DECREF(v);
-    }
-    return NULL; /* Signal to Python that an Exception is Pending */
-}
-
-#endif /* OS2 */
-
-/* POSIX generic methods */
-
-static PyObject *
-posix_fildes(PyObject *fdobj, int (*func)(int))
-{
-    int fd;
-    int res;
-    fd = PyObject_AsFileDescriptor(fdobj);
-    if (fd < 0)
-        return NULL;
-    if (!_PyVerify_fd(fd))
-        return posix_error();
-    Py_BEGIN_ALLOW_THREADS
-    res = (*func)(fd);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-posix_1str(PyObject *args, char *format, int (*func)(const char*))
-{
-    char *path1 = NULL;
-    int res;
-    if (!PyArg_ParseTuple(args, format,
-                          Py_FileSystemDefaultEncoding, &path1))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = (*func)(path1);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path1);
-    PyMem_Free(path1);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-posix_2str(PyObject *args,
-           char *format,
-           int (*func)(const char *, const char *))
-{
-    char *path1 = NULL, *path2 = NULL;
-    int res;
-    if (!PyArg_ParseTuple(args, format,
-                          Py_FileSystemDefaultEncoding, &path1,
-                          Py_FileSystemDefaultEncoding, &path2))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = (*func)(path1, path2);
-    Py_END_ALLOW_THREADS
-    PyMem_Free(path1);
-    PyMem_Free(path2);
-    if (res != 0)
-        /* XXX how to report both path1 and path2??? */
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-#ifdef MS_WINDOWS
-static PyObject*
-win32_1str(PyObject* args, char* func,
-           char* format, BOOL (__stdcall *funcA)(LPCSTR),
-           char* wformat, BOOL (__stdcall *funcW)(LPWSTR))
-{
-    PyObject *uni;
-    char *ansi;
-    BOOL result;
-
-    if (!PyArg_ParseTuple(args, wformat, &uni))
-        PyErr_Clear();
-    else {
-        Py_BEGIN_ALLOW_THREADS
-        result = funcW(PyUnicode_AsUnicode(uni));
-        Py_END_ALLOW_THREADS
-        if (!result)
-            return win32_error_unicode(func, PyUnicode_AsUnicode(uni));
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    if (!PyArg_ParseTuple(args, format, &ansi))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    result = funcA(ansi);
-    Py_END_ALLOW_THREADS
-    if (!result)
-        return win32_error(func, ansi);
-    Py_INCREF(Py_None);
-    return Py_None;
-
-}
-
-/* This is a reimplementation of the C library's chdir function,
-   but one that produces Win32 errors instead of DOS error codes.
-   chdir is essentially a wrapper around SetCurrentDirectory; however,
-   it also needs to set "magic" environment variables indicating
-   the per-drive current directory, which are of the form =<drive>: */
-static BOOL __stdcall
-win32_chdir(LPCSTR path)
-{
-    char new_path[MAX_PATH+1];
-    int result;
-    char env[4] = "=x:";
-
-    if(!SetCurrentDirectoryA(path))
-        return FALSE;
-    result = GetCurrentDirectoryA(MAX_PATH+1, new_path);
-    if (!result)
-        return FALSE;
-    /* In the ANSI API, there should not be any paths longer
-       than MAX_PATH. */
-    assert(result <= MAX_PATH+1);
-    if (strncmp(new_path, "\\\\", 2) == 0 ||
-        strncmp(new_path, "//", 2) == 0)
-        /* UNC path, nothing to do. */
-        return TRUE;
-    env[1] = new_path[0];
-    return SetEnvironmentVariableA(env, new_path);
-}
-
-/* The Unicode version differs from the ANSI version
-   since the current directory might exceed MAX_PATH characters */
-static BOOL __stdcall
-win32_wchdir(LPCWSTR path)
-{
-    wchar_t _new_path[MAX_PATH+1], *new_path = _new_path;
-    int result;
-    wchar_t env[4] = L"=x:";
-
-    if(!SetCurrentDirectoryW(path))
-        return FALSE;
-    result = GetCurrentDirectoryW(MAX_PATH+1, new_path);
-    if (!result)
-        return FALSE;
-    if (result > MAX_PATH+1) {
-        new_path = malloc(result * sizeof(wchar_t));
-        if (!new_path) {
-            SetLastError(ERROR_OUTOFMEMORY);
-            return FALSE;
-        }
-        result = GetCurrentDirectoryW(result, new_path);
-        if (!result) {
-            free(new_path);
-            return FALSE;
-        }
-    }
-    if (wcsncmp(new_path, L"\\\\", 2) == 0 ||
-        wcsncmp(new_path, L"//", 2) == 0)
-        /* UNC path, nothing to do. */
-        return TRUE;
-    env[1] = new_path[0];
-    result = SetEnvironmentVariableW(env, new_path);
-    if (new_path != _new_path)
-        free(new_path);
-    return result;
-}
-#endif
-
-#ifdef MS_WINDOWS
-/* The CRT of Windows has a number of flaws wrt. its stat() implementation:
-   - time stamps are restricted to second resolution
-   - file modification times suffer from forth-and-back conversions between
-     UTC and local time
-   Therefore, we implement our own stat, based on the Win32 API directly.
-*/
-#define HAVE_STAT_NSEC 1
-
-struct win32_stat{
-    int st_dev;
-    __int64 st_ino;
-    unsigned short st_mode;
-    int st_nlink;
-    int st_uid;
-    int st_gid;
-    int st_rdev;
-    __int64 st_size;
-    time_t st_atime;
-    int st_atime_nsec;
-    time_t st_mtime;
-    int st_mtime_nsec;
-    time_t st_ctime;
-    int st_ctime_nsec;
-};
-
-static __int64 secs_between_epochs = 11644473600; /* Seconds between 1.1.1601 and 1.1.1970 */
-
-static void
-FILE_TIME_to_time_t_nsec(FILETIME *in_ptr, time_t *time_out, int* nsec_out)
-{
-    /* XXX endianness. Shouldn't matter, as all Windows implementations are little-endian */
-    /* Cannot simply cast and dereference in_ptr,
-       since it might not be aligned properly */
-    __int64 in;
-    memcpy(&in, in_ptr, sizeof(in));
-    *nsec_out = (int)(in % 10000000) * 100; /* FILETIME is in units of 100 nsec. */
-    *time_out = Py_SAFE_DOWNCAST((in / 10000000) - secs_between_epochs, __int64, time_t);
-}
-
-static void
-time_t_to_FILE_TIME(time_t time_in, int nsec_in, FILETIME *out_ptr)
-{
-    /* XXX endianness */
-    __int64 out;
-    out = time_in + secs_between_epochs;
-    out = out * 10000000 + nsec_in / 100;
-    memcpy(out_ptr, &out, sizeof(out));
-}
-
-/* Below, we *know* that ugo+r is 0444 */
-#if _S_IREAD != 0400
-#error Unsupported C library
-#endif
-static int
-attributes_to_mode(DWORD attr)
-{
-    int m = 0;
-    if (attr & FILE_ATTRIBUTE_DIRECTORY)
-        m |= _S_IFDIR | 0111; /* IFEXEC for user,group,other */
-    else
-        m |= _S_IFREG;
-    if (attr & FILE_ATTRIBUTE_READONLY)
-        m |= 0444;
-    else
-        m |= 0666;
-    return m;
-}
-
-static int
-attribute_data_to_stat(WIN32_FILE_ATTRIBUTE_DATA *info, struct win32_stat *result)
-{
-    memset(result, 0, sizeof(*result));
-    result->st_mode = attributes_to_mode(info->dwFileAttributes);
-    result->st_size = (((__int64)info->nFileSizeHigh)<<32) + info->nFileSizeLow;
-    FILE_TIME_to_time_t_nsec(&info->ftCreationTime, &result->st_ctime, &result->st_ctime_nsec);
-    FILE_TIME_to_time_t_nsec(&info->ftLastWriteTime, &result->st_mtime, &result->st_mtime_nsec);
-    FILE_TIME_to_time_t_nsec(&info->ftLastAccessTime, &result->st_atime, &result->st_atime_nsec);
-
-    return 0;
-}
-
-static BOOL
-attributes_from_dir(LPCSTR pszFile, LPWIN32_FILE_ATTRIBUTE_DATA pfad)
-{
-    HANDLE hFindFile;
-    WIN32_FIND_DATAA FileData;
-    hFindFile = FindFirstFileA(pszFile, &FileData);
-    if (hFindFile == INVALID_HANDLE_VALUE)
-        return FALSE;
-    FindClose(hFindFile);
-    pfad->dwFileAttributes = FileData.dwFileAttributes;
-    pfad->ftCreationTime   = FileData.ftCreationTime;
-    pfad->ftLastAccessTime = FileData.ftLastAccessTime;
-    pfad->ftLastWriteTime  = FileData.ftLastWriteTime;
-    pfad->nFileSizeHigh    = FileData.nFileSizeHigh;
-    pfad->nFileSizeLow     = FileData.nFileSizeLow;
-    return TRUE;
-}
-
-static BOOL
-attributes_from_dir_w(LPCWSTR pszFile, LPWIN32_FILE_ATTRIBUTE_DATA pfad)
-{
-    HANDLE hFindFile;
-    WIN32_FIND_DATAW FileData;
-    hFindFile = FindFirstFileW(pszFile, &FileData);
-    if (hFindFile == INVALID_HANDLE_VALUE)
-        return FALSE;
-    FindClose(hFindFile);
-    pfad->dwFileAttributes = FileData.dwFileAttributes;
-    pfad->ftCreationTime   = FileData.ftCreationTime;
-    pfad->ftLastAccessTime = FileData.ftLastAccessTime;
-    pfad->ftLastWriteTime  = FileData.ftLastWriteTime;
-    pfad->nFileSizeHigh    = FileData.nFileSizeHigh;
-    pfad->nFileSizeLow     = FileData.nFileSizeLow;
-    return TRUE;
-}
-
-static int
-win32_stat(const char* path, struct win32_stat *result)
-{
-    WIN32_FILE_ATTRIBUTE_DATA info;
-    int code;
-    char *dot;
-    if (!GetFileAttributesExA(path, GetFileExInfoStandard, &info)) {
-        if (GetLastError() != ERROR_SHARING_VIOLATION) {
-            /* Protocol violation: we explicitly clear errno, instead of
-               setting it to a POSIX error. Callers should use GetLastError. */
-            errno = 0;
-            return -1;
-        } else {
-            /* Could not get attributes on open file. Fall back to
-               reading the directory. */
-            if (!attributes_from_dir(path, &info)) {
-                /* Very strange. This should not fail now */
-                errno = 0;
-                return -1;
-            }
-        }
-    }
-    code = attribute_data_to_stat(&info, result);
-    if (code != 0)
-        return code;
-    /* Set S_IFEXEC if it is an .exe, .bat, ... */
-    dot = strrchr(path, '.');
-    if (dot) {
-        if (stricmp(dot, ".bat") == 0 ||
-        stricmp(dot, ".cmd") == 0 ||
-        stricmp(dot, ".exe") == 0 ||
-        stricmp(dot, ".com") == 0)
-            result->st_mode |= 0111;
-    }
-    return code;
-}
-
-static int
-win32_wstat(const wchar_t* path, struct win32_stat *result)
-{
-    int code;
-    const wchar_t *dot;
-    WIN32_FILE_ATTRIBUTE_DATA info;
-    if (!GetFileAttributesExW(path, GetFileExInfoStandard, &info)) {
-        if (GetLastError() != ERROR_SHARING_VIOLATION) {
-            /* Protocol violation: we explicitly clear errno, instead of
-               setting it to a POSIX error. Callers should use GetLastError. */
-            errno = 0;
-            return -1;
-        } else {
-            /* Could not get attributes on open file. Fall back to
-               reading the directory. */
-            if (!attributes_from_dir_w(path, &info)) {
-                /* Very strange. This should not fail now */
-                errno = 0;
-                return -1;
-            }
-        }
-    }
-    code = attribute_data_to_stat(&info, result);
-    if (code < 0)
-        return code;
-    /* Set IFEXEC if it is an .exe, .bat, ... */
-    dot = wcsrchr(path, '.');
-    if (dot) {
-        if (_wcsicmp(dot, L".bat") == 0 ||
-            _wcsicmp(dot, L".cmd") == 0 ||
-            _wcsicmp(dot, L".exe") == 0 ||
-            _wcsicmp(dot, L".com") == 0)
-            result->st_mode |= 0111;
-    }
-    return code;
-}
-
-static int
-win32_fstat(int file_number, struct win32_stat *result)
-{
-    BY_HANDLE_FILE_INFORMATION info;
-    HANDLE h;
-    int type;
-
-    h = (HANDLE)_get_osfhandle(file_number);
-
-    /* Protocol violation: we explicitly clear errno, instead of
-       setting it to a POSIX error. Callers should use GetLastError. */
-    errno = 0;
-
-    if (h == INVALID_HANDLE_VALUE) {
-        /* This is really a C library error (invalid file handle).
-           We set the Win32 error to the closes one matching. */
-        SetLastError(ERROR_INVALID_HANDLE);
-        return -1;
-    }
-    memset(result, 0, sizeof(*result));
-
-    type = GetFileType(h);
-    if (type == FILE_TYPE_UNKNOWN) {
-        DWORD error = GetLastError();
-        if (error != 0) {
-        return -1;
-        }
-        /* else: valid but unknown file */
-    }
-
-    if (type != FILE_TYPE_DISK) {
-        if (type == FILE_TYPE_CHAR)
-            result->st_mode = _S_IFCHR;
-        else if (type == FILE_TYPE_PIPE)
-            result->st_mode = _S_IFIFO;
-        return 0;
-    }
-
-    if (!GetFileInformationByHandle(h, &info)) {
-        return -1;
-    }
-
-    /* similar to stat() */
-    result->st_mode = attributes_to_mode(info.dwFileAttributes);
-    result->st_size = (((__int64)info.nFileSizeHigh)<<32) + info.nFileSizeLow;
-    FILE_TIME_to_time_t_nsec(&info.ftCreationTime, &result->st_ctime, &result->st_ctime_nsec);
-    FILE_TIME_to_time_t_nsec(&info.ftLastWriteTime, &result->st_mtime, &result->st_mtime_nsec);
-    FILE_TIME_to_time_t_nsec(&info.ftLastAccessTime, &result->st_atime, &result->st_atime_nsec);
-    /* specific to fstat() */
-    result->st_nlink = info.nNumberOfLinks;
-    result->st_ino = (((__int64)info.nFileIndexHigh)<<32) + info.nFileIndexLow;
-    return 0;
-}
-
-#endif /* MS_WINDOWS */
-
-PyDoc_STRVAR(stat_result__doc__,
-"stat_result: Result from stat or lstat.\n\n\
-This object may be accessed either as a tuple of\n\
-  (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)\n\
-or via the attributes st_mode, st_ino, st_dev, st_nlink, st_uid, and so on.\n\
-\n\
-Posix/windows: If your platform supports st_blksize, st_blocks, st_rdev,\n\
-or st_flags, they are available as attributes only.\n\
-\n\
-See os.stat for more information.");
-
-static PyStructSequence_Field stat_result_fields[] = {
-    {"st_mode",    "protection bits"},
-    {"st_ino",     "inode"},
-    {"st_dev",     "device"},
-    {"st_nlink",   "number of hard links"},
-    {"st_uid",     "user ID of owner"},
-    {"st_gid",     "group ID of owner"},
-    {"st_size",    "total size, in bytes"},
-    /* The NULL is replaced with PyStructSequence_UnnamedField later. */
-    {NULL,   "integer time of last access"},
-    {NULL,   "integer time of last modification"},
-    {NULL,   "integer time of last change"},
-    {"st_atime",   "time of last access"},
-    {"st_mtime",   "time of last modification"},
-    {"st_ctime",   "time of last change"},
-#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
-    {"st_blksize", "blocksize for filesystem I/O"},
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
-    {"st_blocks",  "number of blocks allocated"},
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_RDEV
-    {"st_rdev",    "device type (if inode device)"},
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_FLAGS
-    {"st_flags",   "user defined flags for file"},
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_GEN
-    {"st_gen",    "generation number"},
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME
-    {"st_birthtime",   "time of creation"},
-#endif
-    {0}
-};
-
-#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
-#define ST_BLKSIZE_IDX 13
-#else
-#define ST_BLKSIZE_IDX 12
-#endif
-
-#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
-#define ST_BLOCKS_IDX (ST_BLKSIZE_IDX+1)
-#else
-#define ST_BLOCKS_IDX ST_BLKSIZE_IDX
-#endif
-
-#ifdef HAVE_STRUCT_STAT_ST_RDEV
-#define ST_RDEV_IDX (ST_BLOCKS_IDX+1)
-#else
-#define ST_RDEV_IDX ST_BLOCKS_IDX
-#endif
-
-#ifdef HAVE_STRUCT_STAT_ST_FLAGS
-#define ST_FLAGS_IDX (ST_RDEV_IDX+1)
-#else
-#define ST_FLAGS_IDX ST_RDEV_IDX
-#endif
-
-#ifdef HAVE_STRUCT_STAT_ST_GEN
-#define ST_GEN_IDX (ST_FLAGS_IDX+1)
-#else
-#define ST_GEN_IDX ST_FLAGS_IDX
-#endif
-
-#ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME
-#define ST_BIRTHTIME_IDX (ST_GEN_IDX+1)
-#else
-#define ST_BIRTHTIME_IDX ST_GEN_IDX
-#endif
-
-static PyStructSequence_Desc stat_result_desc = {
-    "stat_result", /* name */
-    stat_result__doc__, /* doc */
-    stat_result_fields,
-    10
-};
-
-PyDoc_STRVAR(statvfs_result__doc__,
-"statvfs_result: Result from statvfs or fstatvfs.\n\n\
-This object may be accessed either as a tuple of\n\
-  (bsize, frsize, blocks, bfree, bavail, files, ffree, favail, flag, namemax),\n\
-or via the attributes f_bsize, f_frsize, f_blocks, f_bfree, and so on.\n\
-\n\
-See os.statvfs for more information.");
-
-static PyStructSequence_Field statvfs_result_fields[] = {
-    {"f_bsize",  },
-    {"f_frsize", },
-    {"f_blocks", },
-    {"f_bfree",  },
-    {"f_bavail", },
-    {"f_files",  },
-    {"f_ffree",  },
-    {"f_favail", },
-    {"f_flag",   },
-    {"f_namemax",},
-    {0}
-};
-
-static PyStructSequence_Desc statvfs_result_desc = {
-    "statvfs_result", /* name */
-    statvfs_result__doc__, /* doc */
-    statvfs_result_fields,
-    10
-};
-
-static int initialized;
-static PyTypeObject StatResultType;
-static PyTypeObject StatVFSResultType;
-static newfunc structseq_new;
-
-static PyObject *
-statresult_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyStructSequence *result;
-    int i;
-
-    result = (PyStructSequence*)structseq_new(type, args, kwds);
-    if (!result)
-        return NULL;
-    /* If we have been initialized from a tuple,
-       st_?time might be set to None. Initialize it
-       from the int slots.  */
-    for (i = 7; i <= 9; i++) {
-        if (result->ob_item[i+3] == Py_None) {
-            Py_DECREF(Py_None);
-            Py_INCREF(result->ob_item[i]);
-            result->ob_item[i+3] = result->ob_item[i];
-        }
-    }
-    return (PyObject*)result;
-}
-
-
-
-/* If true, st_?time is float. */
-static int _stat_float_times = 1;
-
-PyDoc_STRVAR(stat_float_times__doc__,
-"stat_float_times([newval]) -> oldval\n\n\
-Determine whether os.[lf]stat represents time stamps as float objects.\n\
-If newval is True, future calls to stat() return floats, if it is False,\n\
-future calls return ints. \n\
-If newval is omitted, return the current setting.\n");
-
-static PyObject*
-stat_float_times(PyObject* self, PyObject *args)
-{
-    int newval = -1;
-    if (!PyArg_ParseTuple(args, "|i:stat_float_times", &newval))
-        return NULL;
-    if (newval == -1)
-        /* Return old value */
-        return PyBool_FromLong(_stat_float_times);
-    _stat_float_times = newval;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static void
-fill_time(PyObject *v, int index, time_t sec, unsigned long nsec)
-{
-    PyObject *fval,*ival;
-#if SIZEOF_TIME_T > SIZEOF_LONG
-    ival = PyLong_FromLongLong((PY_LONG_LONG)sec);
-#else
-    ival = PyInt_FromLong((long)sec);
-#endif
-    if (!ival)
-        return;
-    if (_stat_float_times) {
-        fval = PyFloat_FromDouble(sec + 1e-9*nsec);
-    } else {
-        fval = ival;
-        Py_INCREF(fval);
-    }
-    PyStructSequence_SET_ITEM(v, index, ival);
-    PyStructSequence_SET_ITEM(v, index+3, fval);
-}
-
-/* pack a system stat C structure into the Python stat tuple
-   (used by posix_stat() and posix_fstat()) */
-static PyObject*
-_pystat_fromstructstat(STRUCT_STAT *st)
-{
-    unsigned long ansec, mnsec, cnsec;
-    PyObject *v = PyStructSequence_New(&StatResultType);
-    if (v == NULL)
-        return NULL;
-
-    PyStructSequence_SET_ITEM(v, 0, PyInt_FromLong((long)st->st_mode));
-#ifdef HAVE_LARGEFILE_SUPPORT
-    PyStructSequence_SET_ITEM(v, 1,
-                              PyLong_FromLongLong((PY_LONG_LONG)st->st_ino));
-#else
-    PyStructSequence_SET_ITEM(v, 1, PyInt_FromLong((long)st->st_ino));
-#endif
-#if defined(HAVE_LONG_LONG) && !defined(MS_WINDOWS)
-    PyStructSequence_SET_ITEM(v, 2,
-                              PyLong_FromLongLong((PY_LONG_LONG)st->st_dev));
-#else
-    PyStructSequence_SET_ITEM(v, 2, PyInt_FromLong((long)st->st_dev));
-#endif
-    PyStructSequence_SET_ITEM(v, 3, PyInt_FromLong((long)st->st_nlink));
-    PyStructSequence_SET_ITEM(v, 4, PyInt_FromLong((long)st->st_uid));
-    PyStructSequence_SET_ITEM(v, 5, PyInt_FromLong((long)st->st_gid));
-#ifdef HAVE_LARGEFILE_SUPPORT
-    PyStructSequence_SET_ITEM(v, 6,
-                              PyLong_FromLongLong((PY_LONG_LONG)st->st_size));
-#else
-    PyStructSequence_SET_ITEM(v, 6, PyInt_FromLong(st->st_size));
-#endif
-
-#if defined(HAVE_STAT_TV_NSEC)
-    ansec = st->st_atim.tv_nsec;
-    mnsec = st->st_mtim.tv_nsec;
-    cnsec = st->st_ctim.tv_nsec;
-#elif defined(HAVE_STAT_TV_NSEC2)
-    ansec = st->st_atimespec.tv_nsec;
-    mnsec = st->st_mtimespec.tv_nsec;
-    cnsec = st->st_ctimespec.tv_nsec;
-#elif defined(HAVE_STAT_NSEC)
-    ansec = st->st_atime_nsec;
-    mnsec = st->st_mtime_nsec;
-    cnsec = st->st_ctime_nsec;
-#else
-    ansec = mnsec = cnsec = 0;
-#endif
-    fill_time(v, 7, st->st_atime, ansec);
-    fill_time(v, 8, st->st_mtime, mnsec);
-    fill_time(v, 9, st->st_ctime, cnsec);
-
-#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
-    PyStructSequence_SET_ITEM(v, ST_BLKSIZE_IDX,
-                              PyInt_FromLong((long)st->st_blksize));
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
-    PyStructSequence_SET_ITEM(v, ST_BLOCKS_IDX,
-                              PyInt_FromLong((long)st->st_blocks));
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_RDEV
-    PyStructSequence_SET_ITEM(v, ST_RDEV_IDX,
-                              PyInt_FromLong((long)st->st_rdev));
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_GEN
-    PyStructSequence_SET_ITEM(v, ST_GEN_IDX,
-                              PyInt_FromLong((long)st->st_gen));
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME
-    {
-      PyObject *val;
-      unsigned long bsec,bnsec;
-      bsec = (long)st->st_birthtime;
-#ifdef HAVE_STAT_TV_NSEC2
-      bnsec = st->st_birthtimespec.tv_nsec;
-#else
-      bnsec = 0;
-#endif
-      if (_stat_float_times) {
-        val = PyFloat_FromDouble(bsec + 1e-9*bnsec);
-      } else {
-        val = PyInt_FromLong((long)bsec);
-      }
-      PyStructSequence_SET_ITEM(v, ST_BIRTHTIME_IDX,
-                                val);
-    }
-#endif
-#ifdef HAVE_STRUCT_STAT_ST_FLAGS
-    PyStructSequence_SET_ITEM(v, ST_FLAGS_IDX,
-                              PyInt_FromLong((long)st->st_flags));
-#endif
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(v);
-        return NULL;
-    }
-
-    return v;
-}
-
-#ifdef MS_WINDOWS
-
-/* IsUNCRoot -- test whether the supplied path is of the form \\SERVER\SHARE\,
-   where / can be used in place of \ and the trailing slash is optional.
-   Both SERVER and SHARE must have at least one character.
-*/
-
-#define ISSLASHA(c) ((c) == '\\' || (c) == '/')
-#define ISSLASHW(c) ((c) == L'\\' || (c) == L'/')
-#ifndef ARRAYSIZE
-#define ARRAYSIZE(a) (sizeof(a) / sizeof(a[0]))
-#endif
-
-static BOOL
-IsUNCRootA(char *path, int pathlen)
-{
-    #define ISSLASH ISSLASHA
-
-    int i, share;
-
-    if (pathlen < 5 || !ISSLASH(path[0]) || !ISSLASH(path[1]))
-        /* minimum UNCRoot is \\x\y */
-        return FALSE;
-    for (i = 2; i < pathlen ; i++)
-        if (ISSLASH(path[i])) break;
-    if (i == 2 || i == pathlen)
-        /* do not allow \\\SHARE or \\SERVER */
-        return FALSE;
-    share = i+1;
-    for (i = share; i < pathlen; i++)
-        if (ISSLASH(path[i])) break;
-    return (i != share && (i == pathlen || i == pathlen-1));
-
-    #undef ISSLASH
-}
-
-static BOOL
-IsUNCRootW(Py_UNICODE *path, int pathlen)
-{
-    #define ISSLASH ISSLASHW
-
-    int i, share;
-
-    if (pathlen < 5 || !ISSLASH(path[0]) || !ISSLASH(path[1]))
-        /* minimum UNCRoot is \\x\y */
-        return FALSE;
-    for (i = 2; i < pathlen ; i++)
-        if (ISSLASH(path[i])) break;
-    if (i == 2 || i == pathlen)
-        /* do not allow \\\SHARE or \\SERVER */
-        return FALSE;
-    share = i+1;
-    for (i = share; i < pathlen; i++)
-        if (ISSLASH(path[i])) break;
-    return (i != share && (i == pathlen || i == pathlen-1));
-
-    #undef ISSLASH
-}
-#endif /* MS_WINDOWS */
-
-static PyObject *
-posix_do_stat(PyObject *self, PyObject *args,
-              char *format,
-#ifdef __VMS
-              int (*statfunc)(const char *, STRUCT_STAT *, ...),
-#else
-              int (*statfunc)(const char *, STRUCT_STAT *),
-#endif
-              char *wformat,
-              int (*wstatfunc)(const Py_UNICODE *, STRUCT_STAT *))
-{
-    STRUCT_STAT st;
-    char *path = NULL;          /* pass this to stat; do not free() it */
-    char *pathfree = NULL;  /* this memory must be free'd */
-    int res;
-    PyObject *result;
-
-#ifdef MS_WINDOWS
-    PyUnicodeObject *po;
-    if (PyArg_ParseTuple(args, wformat, &po)) {
-        Py_UNICODE *wpath = PyUnicode_AS_UNICODE(po);
-
-        Py_BEGIN_ALLOW_THREADS
-            /* PyUnicode_AS_UNICODE result OK without
-               thread lock as it is a simple dereference. */
-        res = wstatfunc(wpath, &st);
-        Py_END_ALLOW_THREADS
-
-        if (res != 0)
-            return win32_error_unicode("stat", wpath);
-        return _pystat_fromstructstat(&st);
-    }
-    /* Drop the argument parsing error as narrow strings
-       are also valid. */
-    PyErr_Clear();
-#endif
-
-    if (!PyArg_ParseTuple(args, format,
-                          Py_FileSystemDefaultEncoding, &path))
-        return NULL;
-    pathfree = path;
-
-    Py_BEGIN_ALLOW_THREADS
-    res = (*statfunc)(path, &st);
-    Py_END_ALLOW_THREADS
-
-    if (res != 0) {
-#ifdef MS_WINDOWS
-        result = win32_error("stat", pathfree);
-#else
-        result = posix_error_with_filename(pathfree);
-#endif
-    }
-    else
-        result = _pystat_fromstructstat(&st);
-
-    PyMem_Free(pathfree);
-    return result;
-}
-
-/* POSIX methods */
-
-PyDoc_STRVAR(posix_access__doc__,
-"access(path, mode) -> True if granted, False otherwise\n\n\
-Use the real uid/gid to test for access to a path.  Note that most\n\
-operations will use the effective uid/gid, therefore this routine can\n\
-be used in a suid/sgid environment to test if the invoking user has the\n\
-specified access to the path.  The mode argument can be F_OK to test\n\
-existence, or the inclusive-OR of R_OK, W_OK, and X_OK.");
-
-static PyObject *
-posix_access(PyObject *self, PyObject *args)
-{
-    char *path;
-    int mode;
-
-#ifdef MS_WINDOWS
-    DWORD attr;
-    PyUnicodeObject *po;
-    if (PyArg_ParseTuple(args, "Ui:access", &po, &mode)) {
-        Py_BEGIN_ALLOW_THREADS
-        /* PyUnicode_AS_UNICODE OK without thread lock as
-           it is a simple dereference. */
-        attr = GetFileAttributesW(PyUnicode_AS_UNICODE(po));
-        Py_END_ALLOW_THREADS
-        goto finish;
-    }
-    /* Drop the argument parsing error as narrow strings
-       are also valid. */
-    PyErr_Clear();
-    if (!PyArg_ParseTuple(args, "eti:access",
-                          Py_FileSystemDefaultEncoding, &path, &mode))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    attr = GetFileAttributesA(path);
-    Py_END_ALLOW_THREADS
-    PyMem_Free(path);
-finish:
-    if (attr == 0xFFFFFFFF)
-        /* File does not exist, or cannot read attributes */
-        return PyBool_FromLong(0);
-    /* Access is possible if either write access wasn't requested, or
-       the file isn't read-only, or if it's a directory, as there are
-       no read-only directories on Windows. */
-    return PyBool_FromLong(!(mode & 2)
-                           || !(attr & FILE_ATTRIBUTE_READONLY)
-                           || (attr & FILE_ATTRIBUTE_DIRECTORY));
-#else /* MS_WINDOWS */
-    int res;
-    if (!PyArg_ParseTuple(args, "eti:access",
-                          Py_FileSystemDefaultEncoding, &path, &mode))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = access(path, mode);
-    Py_END_ALLOW_THREADS
-    PyMem_Free(path);
-    return PyBool_FromLong(res == 0);
-#endif /* MS_WINDOWS */
-}
-
-#ifndef F_OK
-#define F_OK 0
-#endif
-#ifndef R_OK
-#define R_OK 4
-#endif
-#ifndef W_OK
-#define W_OK 2
-#endif
-#ifndef X_OK
-#define X_OK 1
-#endif
-
-#ifdef HAVE_TTYNAME
-PyDoc_STRVAR(posix_ttyname__doc__,
-"ttyname(fd) -> string\n\n\
-Return the name of the terminal device connected to 'fd'.");
-
-static PyObject *
-posix_ttyname(PyObject *self, PyObject *args)
-{
-    int id;
-    char *ret;
-
-    if (!PyArg_ParseTuple(args, "i:ttyname", &id))
-        return NULL;
-
-#if defined(__VMS)
-    /* file descriptor 0 only, the default input device (stdin) */
-    if (id == 0) {
-        ret = ttyname();
-    }
-    else {
-        ret = NULL;
-    }
-#else
-    ret = ttyname(id);
-#endif
-    if (ret == NULL)
-        return posix_error();
-    return PyString_FromString(ret);
-}
-#endif
-
-#ifdef HAVE_CTERMID
-PyDoc_STRVAR(posix_ctermid__doc__,
-"ctermid() -> string\n\n\
-Return the name of the controlling terminal for this process.");
-
-static PyObject *
-posix_ctermid(PyObject *self, PyObject *noargs)
-{
-    char *ret;
-    char buffer[L_ctermid];
-
-#ifdef USE_CTERMID_R
-    ret = ctermid_r(buffer);
-#else
-    ret = ctermid(buffer);
-#endif
-    if (ret == NULL)
-        return posix_error();
-    return PyString_FromString(buffer);
-}
-#endif
-
-PyDoc_STRVAR(posix_chdir__doc__,
-"chdir(path)\n\n\
-Change the current working directory to the specified path.");
-
-static PyObject *
-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
-    return posix_1str(args, "et:chdir", chdir);
-#endif
-}
-
-#ifdef HAVE_FCHDIR
-PyDoc_STRVAR(posix_fchdir__doc__,
-"fchdir(fildes)\n\n\
-Change to the directory of the given file descriptor.  fildes must be\n\
-opened on a directory, not a file.");
-
-static PyObject *
-posix_fchdir(PyObject *self, PyObject *fdobj)
-{
-    return posix_fildes(fdobj, fchdir);
-}
-#endif /* HAVE_FCHDIR */
-
-
-PyDoc_STRVAR(posix_chmod__doc__,
-"chmod(path, mode)\n\n\
-Change the access permissions of a file.");
-
-static PyObject *
-posix_chmod(PyObject *self, PyObject *args)
-{
-    char *path = NULL;
-    int i;
-    int res;
-#ifdef MS_WINDOWS
-    DWORD attr;
-    PyUnicodeObject *po;
-    if (PyArg_ParseTuple(args, "Ui|:chmod", &po, &i)) {
-        Py_BEGIN_ALLOW_THREADS
-        attr = GetFileAttributesW(PyUnicode_AS_UNICODE(po));
-        if (attr != 0xFFFFFFFF) {
-            if (i & _S_IWRITE)
-                attr &= ~FILE_ATTRIBUTE_READONLY;
-            else
-                attr |= FILE_ATTRIBUTE_READONLY;
-            res = SetFileAttributesW(PyUnicode_AS_UNICODE(po), attr);
-        }
-        else
-            res = 0;
-        Py_END_ALLOW_THREADS
-        if (!res)
-            return win32_error_unicode("chmod",
-                                       PyUnicode_AS_UNICODE(po));
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    /* Drop the argument parsing error as narrow strings
-       are also valid. */
-    PyErr_Clear();
-
-    if (!PyArg_ParseTuple(args, "eti:chmod", Py_FileSystemDefaultEncoding,
-                          &path, &i))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    attr = GetFileAttributesA(path);
-    if (attr != 0xFFFFFFFF) {
-        if (i & _S_IWRITE)
-            attr &= ~FILE_ATTRIBUTE_READONLY;
-        else
-            attr |= FILE_ATTRIBUTE_READONLY;
-        res = SetFileAttributesA(path, attr);
-    }
-    else
-        res = 0;
-    Py_END_ALLOW_THREADS
-    if (!res) {
-        win32_error("chmod", path);
-        PyMem_Free(path);
-        return NULL;
-    }
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-#else /* MS_WINDOWS */
-    if (!PyArg_ParseTuple(args, "eti:chmod", Py_FileSystemDefaultEncoding,
-                          &path, &i))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = chmod(path, i);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path);
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-#endif
-}
-
-#ifdef HAVE_FCHMOD
-PyDoc_STRVAR(posix_fchmod__doc__,
-"fchmod(fd, mode)\n\n\
-Change the access permissions of the file given by file\n\
-descriptor fd.");
-
-static PyObject *
-posix_fchmod(PyObject *self, PyObject *args)
-{
-    int fd, mode, res;
-    if (!PyArg_ParseTuple(args, "ii:fchmod", &fd, &mode))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = fchmod(fd, mode);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_RETURN_NONE;
-}
-#endif /* HAVE_FCHMOD */
-
-#ifdef HAVE_LCHMOD
-PyDoc_STRVAR(posix_lchmod__doc__,
-"lchmod(path, mode)\n\n\
-Change the access permissions of a file. If path is a symlink, this\n\
-affects the link itself rather than the target.");
-
-static PyObject *
-posix_lchmod(PyObject *self, PyObject *args)
-{
-    char *path = NULL;
-    int i;
-    int res;
-    if (!PyArg_ParseTuple(args, "eti:lchmod", Py_FileSystemDefaultEncoding,
-                          &path, &i))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = lchmod(path, i);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path);
-    PyMem_Free(path);
-    Py_RETURN_NONE;
-}
-#endif /* HAVE_LCHMOD */
-
-
-#ifdef HAVE_CHFLAGS
-PyDoc_STRVAR(posix_chflags__doc__,
-"chflags(path, flags)\n\n\
-Set file flags.");
-
-static PyObject *
-posix_chflags(PyObject *self, PyObject *args)
-{
-    char *path;
-    unsigned long flags;
-    int res;
-    if (!PyArg_ParseTuple(args, "etk:chflags",
-                          Py_FileSystemDefaultEncoding, &path, &flags))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = chflags(path, flags);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path);
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_CHFLAGS */
-
-#ifdef HAVE_LCHFLAGS
-PyDoc_STRVAR(posix_lchflags__doc__,
-"lchflags(path, flags)\n\n\
-Set file flags.\n\
-This function will not follow symbolic links.");
-
-static PyObject *
-posix_lchflags(PyObject *self, PyObject *args)
-{
-    char *path;
-    unsigned long flags;
-    int res;
-    if (!PyArg_ParseTuple(args, "etk:lchflags",
-                          Py_FileSystemDefaultEncoding, &path, &flags))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = lchflags(path, flags);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path);
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_LCHFLAGS */
-
-#ifdef HAVE_CHROOT
-PyDoc_STRVAR(posix_chroot__doc__,
-"chroot(path)\n\n\
-Change root directory to path.");
-
-static PyObject *
-posix_chroot(PyObject *self, PyObject *args)
-{
-    return posix_1str(args, "et:chroot", chroot);
-}
-#endif
-
-#ifdef HAVE_FSYNC
-PyDoc_STRVAR(posix_fsync__doc__,
-"fsync(fildes)\n\n\
-force write of file with filedescriptor to disk.");
-
-static PyObject *
-posix_fsync(PyObject *self, PyObject *fdobj)
-{
-    return posix_fildes(fdobj, fsync);
-}
-#endif /* HAVE_FSYNC */
-
-#ifdef HAVE_FDATASYNC
-
-#ifdef __hpux
-extern int fdatasync(int); /* On HP-UX, in libc but not in unistd.h */
-#endif
-
-PyDoc_STRVAR(posix_fdatasync__doc__,
-"fdatasync(fildes)\n\n\
-force write of file with filedescriptor to disk.\n\
- does not force update of metadata.");
-
-static PyObject *
-posix_fdatasync(PyObject *self, PyObject *fdobj)
-{
-    return posix_fildes(fdobj, fdatasync);
-}
-#endif /* HAVE_FDATASYNC */
-
-
-#ifdef HAVE_CHOWN
-PyDoc_STRVAR(posix_chown__doc__,
-"chown(path, uid, gid)\n\n\
-Change the owner and group id of path to the numeric uid and gid.");
-
-static PyObject *
-posix_chown(PyObject *self, PyObject *args)
-{
-    char *path = NULL;
-    long uid, gid;
-    int res;
-    if (!PyArg_ParseTuple(args, "etll:chown",
-                          Py_FileSystemDefaultEncoding, &path,
-                          &uid, &gid))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = chown(path, (uid_t) uid, (gid_t) gid);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path);
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_CHOWN */
-
-#ifdef HAVE_FCHOWN
-PyDoc_STRVAR(posix_fchown__doc__,
-"fchown(fd, uid, gid)\n\n\
-Change the owner and group id of the file given by file descriptor\n\
-fd to the numeric uid and gid.");
-
-static PyObject *
-posix_fchown(PyObject *self, PyObject *args)
-{
-    int fd;
-    long uid, gid;
-    int res;
-    if (!PyArg_ParseTuple(args, "ill:chown", &fd, &uid, &gid))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = fchown(fd, (uid_t) uid, (gid_t) gid);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_RETURN_NONE;
-}
-#endif /* HAVE_FCHOWN */
-
-#ifdef HAVE_LCHOWN
-PyDoc_STRVAR(posix_lchown__doc__,
-"lchown(path, uid, gid)\n\n\
-Change the owner and group id of path to the numeric uid and gid.\n\
-This function will not follow symbolic links.");
-
-static PyObject *
-posix_lchown(PyObject *self, PyObject *args)
-{
-    char *path = NULL;
-    long uid, gid;
-    int res;
-    if (!PyArg_ParseTuple(args, "etll:lchown",
-                          Py_FileSystemDefaultEncoding, &path,
-                          &uid, &gid))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = lchown(path, (uid_t) uid, (gid_t) gid);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path);
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_LCHOWN */
-
-
-#ifdef HAVE_GETCWD
-PyDoc_STRVAR(posix_getcwd__doc__,
-"getcwd() -> path\n\n\
-Return a string representing the current working directory.");
-
-#if (defined(__sun) && defined(__SVR4)) || defined(__OpenBSD__)
-/* Issue 9185: getcwd() returns NULL/ERANGE indefinitely. */
-static PyObject *
-posix_getcwd(PyObject *self, PyObject *noargs)
-{
-    char buf[PATH_MAX+2];
-    char *res;
-
-    Py_BEGIN_ALLOW_THREADS
-    res = getcwd(buf, sizeof buf);
-    Py_END_ALLOW_THREADS
-
-    if (res == NULL)
-        return posix_error();
-
-    return PyString_FromString(buf);
-}
-#else
-static PyObject *
-posix_getcwd(PyObject *self, PyObject *noargs)
-{
-    int bufsize_incr = 1024;
-    int bufsize = 0;
-    char *tmpbuf = NULL;
-    char *res = NULL;
-    PyObject *dynamic_return;
-
-    Py_BEGIN_ALLOW_THREADS
-    do {
-        bufsize = bufsize + bufsize_incr;
-        tmpbuf = malloc(bufsize);
-        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);
-        }
-    } while ((res == NULL) && (errno == ERANGE));
-    Py_END_ALLOW_THREADS
-
-    if (res == NULL)
-        return posix_error();
-
-    dynamic_return = PyString_FromString(tmpbuf);
-    free(tmpbuf);
-
-    return dynamic_return;
-}
-#endif /* getcwd() NULL/ERANGE workaround. */
-
-#ifdef Py_USING_UNICODE
-PyDoc_STRVAR(posix_getcwdu__doc__,
-"getcwdu() -> path\n\n\
-Return a unicode string representing the current working directory.");
-
-static PyObject *
-posix_getcwdu(PyObject *self, PyObject *noargs)
-{
-    char buf[1026];
-    char *res;
-
-#ifdef MS_WINDOWS
-    DWORD len;
-    wchar_t wbuf[1026];
-    wchar_t *wbuf2 = wbuf;
-    PyObject *resobj;
-    Py_BEGIN_ALLOW_THREADS
-    len = GetCurrentDirectoryW(sizeof wbuf/ sizeof wbuf[0], wbuf);
-    /* If the buffer is large enough, len does not include the
-       terminating \0. If the buffer is too small, len includes
-       the space needed for the terminator. */
-    if (len >= sizeof wbuf/ sizeof wbuf[0]) {
-        wbuf2 = malloc(len * sizeof(wchar_t));
-        if (wbuf2)
-            len = GetCurrentDirectoryW(len, wbuf2);
-    }
-    Py_END_ALLOW_THREADS
-    if (!wbuf2) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-    if (!len) {
-        if (wbuf2 != wbuf) free(wbuf2);
-        return win32_error("getcwdu", NULL);
-    }
-    resobj = PyUnicode_FromWideChar(wbuf2, len);
-    if (wbuf2 != wbuf) free(wbuf2);
-    return resobj;
-#endif /* MS_WINDOWS */
-
-    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();
-    return PyUnicode_Decode(buf, strlen(buf), Py_FileSystemDefaultEncoding,"strict");
-}
-#endif /* Py_USING_UNICODE */
-#endif /* HAVE_GETCWD */
-
-
-#ifdef HAVE_LINK
-PyDoc_STRVAR(posix_link__doc__,
-"link(src, dst)\n\n\
-Create a hard link to a file.");
-
-static PyObject *
-posix_link(PyObject *self, PyObject *args)
-{
-    return posix_2str(args, "etet:link", link);
-}
-#endif /* HAVE_LINK */
-
-
-PyDoc_STRVAR(posix_listdir__doc__,
-"listdir(path) -> list_of_strings\n\n\
-Return a list containing the names of the entries in the directory.\n\
-\n\
-    path: path of directory to list\n\
-\n\
-The list is in arbitrary order.  It does not include the special\n\
-entries '.' and '..' even if they are present in the directory.");
-
-static PyObject *
-posix_listdir(PyObject *self, PyObject *args)
-{
-    /* XXX Should redo this putting the (now four) versions of opendir
-       in separate files instead of having them all here... */
-#if defined(MS_WINDOWS) && !defined(HAVE_OPENDIR)
-
-    PyObject *d, *v;
-    HANDLE hFindFile;
-    BOOL result;
-    WIN32_FIND_DATA FileData;
-    char namebuf[MAX_PATH+5]; /* Overallocate for \\*.*\0 */
-    char *bufptr = namebuf;
-    Py_ssize_t len = sizeof(namebuf)-5; /* only claim to have space for MAX_PATH */
-
-    PyObject *po;
-    if (PyArg_ParseTuple(args, "U:listdir", &po)) {
-        WIN32_FIND_DATAW wFileData;
-        Py_UNICODE *wnamebuf;
-        /* Overallocate for \\*.*\0 */
-        len = PyUnicode_GET_SIZE(po);
-        wnamebuf = malloc((len + 5) * sizeof(wchar_t));
-        if (!wnamebuf) {
-            PyErr_NoMemory();
-            return NULL;
-        }
-        wcscpy(wnamebuf, PyUnicode_AS_UNICODE(po));
-        if (len > 0) {
-            Py_UNICODE wch = wnamebuf[len-1];
-            if (wch != L'/' && wch != L'\\' && wch != L':')
-                wnamebuf[len++] = L'\\';
-            wcscpy(wnamebuf + len, L"*.*");
-        }
-        if ((d = PyList_New(0)) == NULL) {
-            free(wnamebuf);
-            return NULL;
-        }
-        Py_BEGIN_ALLOW_THREADS
-        hFindFile = FindFirstFileW(wnamebuf, &wFileData);
-        Py_END_ALLOW_THREADS
-        if (hFindFile == INVALID_HANDLE_VALUE) {
-            int error = GetLastError();
-            if (error == ERROR_FILE_NOT_FOUND) {
-                free(wnamebuf);
-                return d;
-            }
-            Py_DECREF(d);
-            win32_error_unicode("FindFirstFileW", wnamebuf);
-            free(wnamebuf);
-            return NULL;
-        }
-        do {
-            /* Skip over . and .. */
-            if (wcscmp(wFileData.cFileName, L".") != 0 &&
-                wcscmp(wFileData.cFileName, L"..") != 0) {
-                v = PyUnicode_FromUnicode(wFileData.cFileName, wcslen(wFileData.cFileName));
-                if (v == NULL) {
-                    Py_DECREF(d);
-                    d = NULL;
-                    break;
-                }
-                if (PyList_Append(d, v) != 0) {
-                    Py_DECREF(v);
-                    Py_DECREF(d);
-                    d = NULL;
-                    break;
-                }
-                Py_DECREF(v);
-            }
-            Py_BEGIN_ALLOW_THREADS
-            result = FindNextFileW(hFindFile, &wFileData);
-            Py_END_ALLOW_THREADS
-            /* FindNextFile sets error to ERROR_NO_MORE_FILES if
-               it got to the end of the directory. */
-            if (!result && GetLastError() != ERROR_NO_MORE_FILES) {
-                Py_DECREF(d);
-                win32_error_unicode("FindNextFileW", wnamebuf);
-                FindClose(hFindFile);
-                free(wnamebuf);
-                return NULL;
-            }
-        } while (result == TRUE);
-
-        if (FindClose(hFindFile) == FALSE) {
-            Py_DECREF(d);
-            win32_error_unicode("FindClose", wnamebuf);
-            free(wnamebuf);
-            return NULL;
-        }
-        free(wnamebuf);
-        return d;
-    }
-    /* Drop the argument parsing error as narrow strings
-       are also valid. */
-    PyErr_Clear();
-
-    if (!PyArg_ParseTuple(args, "et#:listdir",
-                          Py_FileSystemDefaultEncoding, &bufptr, &len))
-        return NULL;
-    if (len > 0) {
-        char ch = namebuf[len-1];
-        if (ch != SEP && ch != ALTSEP && ch != ':')
-            namebuf[len++] = '/';
-        strcpy(namebuf + len, "*.*");
-    }
-
-    if ((d = PyList_New(0)) == NULL)
-        return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    hFindFile = FindFirstFile(namebuf, &FileData);
-    Py_END_ALLOW_THREADS
-    if (hFindFile == INVALID_HANDLE_VALUE) {
-        int error = GetLastError();
-        if (error == ERROR_FILE_NOT_FOUND)
-            return d;
-        Py_DECREF(d);
-        return win32_error("FindFirstFile", namebuf);
-    }
-    do {
-        /* Skip over . and .. */
-        if (strcmp(FileData.cFileName, ".") != 0 &&
-            strcmp(FileData.cFileName, "..") != 0) {
-            v = PyString_FromString(FileData.cFileName);
-            if (v == NULL) {
-                Py_DECREF(d);
-                d = NULL;
-                break;
-            }
-            if (PyList_Append(d, v) != 0) {
-                Py_DECREF(v);
-                Py_DECREF(d);
-                d = NULL;
-                break;
-            }
-            Py_DECREF(v);
-        }
-        Py_BEGIN_ALLOW_THREADS
-        result = FindNextFile(hFindFile, &FileData);
-        Py_END_ALLOW_THREADS
-        /* FindNextFile sets error to ERROR_NO_MORE_FILES if
-           it got to the end of the directory. */
-        if (!result && GetLastError() != ERROR_NO_MORE_FILES) {
-            Py_DECREF(d);
-            win32_error("FindNextFile", namebuf);
-            FindClose(hFindFile);
-            return NULL;
-        }
-    } while (result == TRUE);
-
-    if (FindClose(hFindFile) == FALSE) {
-        Py_DECREF(d);
-        return win32_error("FindClose", namebuf);
-    }
-
-    return d;
-
-#elif defined(PYOS_OS2)
-
-#ifndef MAX_PATH
-#define MAX_PATH    CCHMAXPATH
-#endif
-    char *name, *pt;
-    Py_ssize_t len;
-    PyObject *d, *v;
-    char namebuf[MAX_PATH+5];
-    HDIR  hdir = 1;
-    ULONG srchcnt = 1;
-    FILEFINDBUF3   ep;
-    APIRET rc;
-
-    if (!PyArg_ParseTuple(args, "t#:listdir", &name, &len))
-        return NULL;
-    if (len >= MAX_PATH) {
-        PyErr_SetString(PyExc_ValueError, "path too long");
-        return NULL;
-    }
-    strcpy(namebuf, name);
-    for (pt = namebuf; *pt; pt++)
-        if (*pt == ALTSEP)
-            *pt = SEP;
-    if (namebuf[len-1] != SEP)
-        namebuf[len++] = SEP;
-    strcpy(namebuf + len, "*.*");
-
-    if ((d = PyList_New(0)) == NULL)
-        return NULL;
-
-    rc = DosFindFirst(namebuf,         /* Wildcard Pattern to Match */
-                      &hdir,           /* Handle to Use While Search Directory */
-                      FILE_READONLY | FILE_HIDDEN | FILE_SYSTEM | FILE_DIRECTORY,
-                      &ep, sizeof(ep), /* Structure to Receive Directory Entry */
-                      &srchcnt,        /* Max and Actual Count of Entries Per Iteration */
-                      FIL_STANDARD);   /* Format of Entry (EAs or Not) */
-
-    if (rc != NO_ERROR) {
-        errno = ENOENT;
-        return posix_error_with_filename(name);
-    }
-
-    if (srchcnt > 0) { /* If Directory is NOT Totally Empty, */
-        do {
-            if (ep.achName[0] == '.'
-            && (ep.achName[1] == '\0' || (ep.achName[1] == '.' && ep.achName[2] == '\0')))
-                continue; /* Skip Over "." and ".." Names */
-
-            strcpy(namebuf, ep.achName);
-
-            /* Leave Case of Name Alone -- In Native Form */
-            /* (Removed Forced Lowercasing Code) */
-
-            v = PyString_FromString(namebuf);
-            if (v == NULL) {
-                Py_DECREF(d);
-                d = NULL;
-                break;
-            }
-            if (PyList_Append(d, v) != 0) {
-                Py_DECREF(v);
-                Py_DECREF(d);
-                d = NULL;
-                break;
-            }
-            Py_DECREF(v);
-        } while (DosFindNext(hdir, &ep, sizeof(ep), &srchcnt) == NO_ERROR && srchcnt > 0);
-    }
-
-    return d;
-#else
-
-    char *name = NULL;
-    PyObject *d, *v;
-    DIR *dirp;
-    struct dirent *ep;
-    int arg_is_unicode = 1;
-
-    errno = 0;
-    if (!PyArg_ParseTuple(args, "U:listdir", &v)) {
-        arg_is_unicode = 0;
-        PyErr_Clear();
-    }
-    if (!PyArg_ParseTuple(args, "et:listdir", Py_FileSystemDefaultEncoding, &name))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    dirp = opendir(name);
-    Py_END_ALLOW_THREADS
-    if (dirp == NULL) {
-        return posix_error_with_allocated_filename(name);
-    }
-    if ((d = PyList_New(0)) == NULL) {
-        Py_BEGIN_ALLOW_THREADS
-        closedir(dirp);
-        Py_END_ALLOW_THREADS
-        PyMem_Free(name);
-        return NULL;
-    }
-    for (;;) {
-        errno = 0;
-        Py_BEGIN_ALLOW_THREADS
-        ep = readdir(dirp);
-        Py_END_ALLOW_THREADS
-        if (ep == NULL) {
-            if (errno == 0) {
-                break;
-            } else {
-                Py_BEGIN_ALLOW_THREADS
-                closedir(dirp);
-                Py_END_ALLOW_THREADS
-                Py_DECREF(d);
-                return posix_error_with_allocated_filename(name);
-            }
-        }
-        if (ep->d_name[0] == '.' &&
-            (NAMLEN(ep) == 1 ||
-             (ep->d_name[1] == '.' && NAMLEN(ep) == 2)))
-            continue;
-        v = PyString_FromStringAndSize(ep->d_name, NAMLEN(ep));
-        if (v == NULL) {
-            Py_DECREF(d);
-            d = NULL;
-            break;
-        }
-#ifdef Py_USING_UNICODE
-        if (arg_is_unicode) {
-            PyObject *w;
-
-            w = PyUnicode_FromEncodedObject(v,
-                                            Py_FileSystemDefaultEncoding,
-                                            "strict");
-            if (w != NULL) {
-                Py_DECREF(v);
-                v = w;
-            }
-            else {
-                /* fall back to the original byte string, as
-                   discussed in patch #683592 */
-                PyErr_Clear();
-            }
-        }
-#endif
-        if (PyList_Append(d, v) != 0) {
-            Py_DECREF(v);
-            Py_DECREF(d);
-            d = NULL;
-            break;
-        }
-        Py_DECREF(v);
-    }
-    Py_BEGIN_ALLOW_THREADS
-    closedir(dirp);
-    Py_END_ALLOW_THREADS
-    PyMem_Free(name);
-
-    return d;
-
-#endif /* which OS */
-}  /* end of posix_listdir */
-
-#ifdef MS_WINDOWS
-/* A helper function for abspath on win32 */
-static PyObject *
-posix__getfullpathname(PyObject *self, PyObject *args)
-{
-    /* assume encoded strings won't more than double no of chars */
-    char inbuf[MAX_PATH*2];
-    char *inbufp = inbuf;
-    Py_ssize_t insize = sizeof(inbuf);
-    char outbuf[MAX_PATH*2];
-    char *temp;
-
-    PyUnicodeObject *po;
-    if (PyArg_ParseTuple(args, "U|:_getfullpathname", &po)) {
-        Py_UNICODE *wpath = PyUnicode_AS_UNICODE(po);
-        Py_UNICODE woutbuf[MAX_PATH*2], *woutbufp = woutbuf;
-        Py_UNICODE *wtemp;
-        DWORD result;
-        PyObject *v;
-        result = GetFullPathNameW(wpath,
-                                  sizeof(woutbuf)/sizeof(woutbuf[0]),
-                                  woutbuf, &wtemp);
-        if (result > sizeof(woutbuf)/sizeof(woutbuf[0])) {
-            woutbufp = malloc(result * sizeof(Py_UNICODE));
-            if (!woutbufp)
-                return PyErr_NoMemory();
-            result = GetFullPathNameW(wpath, result, woutbufp, &wtemp);
-        }
-        if (result)
-            v = PyUnicode_FromUnicode(woutbufp, wcslen(woutbufp));
-        else
-            v = win32_error_unicode("GetFullPathNameW", wpath);
-        if (woutbufp != woutbuf)
-            free(woutbufp);
-        return v;
-    }
-    /* Drop the argument parsing error as narrow strings
-       are also valid. */
-    PyErr_Clear();
-
-    if (!PyArg_ParseTuple (args, "et#:_getfullpathname",
-                           Py_FileSystemDefaultEncoding, &inbufp,
-                           &insize))
-        return NULL;
-    if (!GetFullPathName(inbuf, sizeof(outbuf)/sizeof(outbuf[0]),
-                         outbuf, &temp))
-        return win32_error("GetFullPathName", inbuf);
-    if (PyUnicode_Check(PyTuple_GetItem(args, 0))) {
-        return PyUnicode_Decode(outbuf, strlen(outbuf),
-                                Py_FileSystemDefaultEncoding, NULL);
-    }
-    return PyString_FromString(outbuf);
-} /* end of posix__getfullpathname */
-#endif /* MS_WINDOWS */
-
-PyDoc_STRVAR(posix_mkdir__doc__,
-"mkdir(path [, mode=0777])\n\n\
-Create a directory.");
-
-static PyObject *
-posix_mkdir(PyObject *self, PyObject *args)
-{
-    int res;
-    char *path = NULL;
-    int mode = 0777;
-
-#ifdef MS_WINDOWS
-    PyUnicodeObject *po;
-    if (PyArg_ParseTuple(args, "U|i:mkdir", &po, &mode)) {
-        Py_BEGIN_ALLOW_THREADS
-        /* PyUnicode_AS_UNICODE OK without thread lock as
-           it is a simple dereference. */
-        res = CreateDirectoryW(PyUnicode_AS_UNICODE(po), NULL);
-        Py_END_ALLOW_THREADS
-        if (!res)
-            return win32_error_unicode("mkdir", PyUnicode_AS_UNICODE(po));
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    /* Drop the argument parsing error as narrow strings
-       are also valid. */
-    PyErr_Clear();
-    if (!PyArg_ParseTuple(args, "et|i:mkdir",
-                          Py_FileSystemDefaultEncoding, &path, &mode))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    /* PyUnicode_AS_UNICODE OK without thread lock as
-       it is a simple dereference. */
-    res = CreateDirectoryA(path, NULL);
-    Py_END_ALLOW_THREADS
-    if (!res) {
-        win32_error("mkdir", path);
-        PyMem_Free(path);
-        return NULL;
-    }
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-#else /* MS_WINDOWS */
-
-    if (!PyArg_ParseTuple(args, "et|i:mkdir",
-                          Py_FileSystemDefaultEncoding, &path, &mode))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-#if ( defined(__WATCOMC__) || defined(PYCC_VACPP) ) && !defined(__QNX__)
-    res = mkdir(path);
-#else
-    res = mkdir(path, mode);
-#endif
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error_with_allocated_filename(path);
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-#endif /* MS_WINDOWS */
-}
-
-
-/* sys/resource.h is needed for at least: wait3(), wait4(), broken nice. */
-#if defined(HAVE_SYS_RESOURCE_H)
-#include <sys/resource.h>
-#endif
-
-
-#ifdef HAVE_NICE
-PyDoc_STRVAR(posix_nice__doc__,
-"nice(inc) -> new_priority\n\n\
-Decrease the priority of process by inc and return the new priority.");
-
-static PyObject *
-posix_nice(PyObject *self, PyObject *args)
-{
-    int increment, value;
-
-    if (!PyArg_ParseTuple(args, "i:nice", &increment))
-        return NULL;
-
-    /* There are two flavours of 'nice': one that returns the new
-       priority (as required by almost all standards out there) and the
-       Linux/FreeBSD/BSDI one, which returns '0' on success and advices
-       the use of getpriority() to get the new priority.
-
-       If we are of the nice family that returns the new priority, we
-       need to clear errno before the call, and check if errno is filled
-       before calling posix_error() on a returnvalue of -1, because the
-       -1 may be the actual new priority! */
-
-    errno = 0;
-    value = nice(increment);
-#if defined(HAVE_BROKEN_NICE) && defined(HAVE_GETPRIORITY)
-    if (value == 0)
-        value = getpriority(PRIO_PROCESS, 0);
-#endif
-    if (value == -1 && errno != 0)
-        /* either nice() or getpriority() returned an error */
-        return posix_error();
-    return PyInt_FromLong((long) value);
-}
-#endif /* HAVE_NICE */
-
-PyDoc_STRVAR(posix_rename__doc__,
-"rename(old, new)\n\n\
-Rename a file or directory.");
-
-static PyObject *
-posix_rename(PyObject *self, PyObject *args)
-{
-#ifdef MS_WINDOWS
-    PyObject *o1, *o2;
-    char *p1, *p2;
-    BOOL result;
-    if (!PyArg_ParseTuple(args, "OO:rename", &o1, &o2))
-        goto error;
-    if (!convert_to_unicode(&o1))
-        goto error;
-    if (!convert_to_unicode(&o2)) {
-        Py_DECREF(o1);
-        goto error;
-    }
-    Py_BEGIN_ALLOW_THREADS
-    result = MoveFileW(PyUnicode_AsUnicode(o1),
-                       PyUnicode_AsUnicode(o2));
-    Py_END_ALLOW_THREADS
-    Py_DECREF(o1);
-    Py_DECREF(o2);
-    if (!result)
-        return win32_error("rename", NULL);
-    Py_INCREF(Py_None);
-    return Py_None;
-error:
-    PyErr_Clear();
-    if (!PyArg_ParseTuple(args, "ss:rename", &p1, &p2))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    result = MoveFileA(p1, p2);
-    Py_END_ALLOW_THREADS
-    if (!result)
-        return win32_error("rename", NULL);
-    Py_INCREF(Py_None);
-    return Py_None;
-#else
-    return posix_2str(args, "etet:rename", rename);
-#endif
-}
-
-
-PyDoc_STRVAR(posix_rmdir__doc__,
-"rmdir(path)\n\n\
-Remove a directory.");
-
-static PyObject *
-posix_rmdir(PyObject *self, PyObject *args)
-{
-#ifdef MS_WINDOWS
-    return win32_1str(args, "rmdir", "s:rmdir", RemoveDirectoryA, "U:rmdir", RemoveDirectoryW);
-#else
-    return posix_1str(args, "et:rmdir", rmdir);
-#endif
-}
-
-
-PyDoc_STRVAR(posix_stat__doc__,
-"stat(path) -> stat result\n\n\
-Perform a stat system call on the given path.");
-
-static PyObject *
-posix_stat(PyObject *self, PyObject *args)
-{
-#ifdef MS_WINDOWS
-    return posix_do_stat(self, args, "et:stat", STAT, "U:stat", win32_wstat);
-#else
-    return posix_do_stat(self, args, "et:stat", STAT, NULL, NULL);
-#endif
-}
-
-
-#ifdef HAVE_SYSTEM
-PyDoc_STRVAR(posix_system__doc__,
-"system(command) -> exit_status\n\n\
-Execute the command (a string) in a subshell.");
-
-static PyObject *
-posix_system(PyObject *self, PyObject *args)
-{
-    char *command;
-    long sts;
-    if (!PyArg_ParseTuple(args, "s:system", &command))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    sts = system(command);
-    Py_END_ALLOW_THREADS
-    return PyInt_FromLong(sts);
-}
-#endif
-
-
-PyDoc_STRVAR(posix_umask__doc__,
-"umask(new_mask) -> old_mask\n\n\
-Set the current numeric umask and return the previous umask.");
-
-static PyObject *
-posix_umask(PyObject *self, PyObject *args)
-{
-    int i;
-    if (!PyArg_ParseTuple(args, "i:umask", &i))
-        return NULL;
-    i = (int)umask(i);
-    if (i < 0)
-        return posix_error();
-    return PyInt_FromLong((long)i);
-}
-
-
-PyDoc_STRVAR(posix_unlink__doc__,
-"unlink(path)\n\n\
-Remove a file (same as remove(path)).");
-
-PyDoc_STRVAR(posix_remove__doc__,
-"remove(path)\n\n\
-Remove a file (same as unlink(path)).");
-
-static PyObject *
-posix_unlink(PyObject *self, PyObject *args)
-{
-#ifdef MS_WINDOWS
-    return win32_1str(args, "remove", "s:remove", DeleteFileA, "U:remove", DeleteFileW);
-#else
-    return posix_1str(args, "et:remove", unlink);
-#endif
-}
-
-
-#ifdef HAVE_UNAME
-PyDoc_STRVAR(posix_uname__doc__,
-"uname() -> (sysname, nodename, release, version, machine)\n\n\
-Return a tuple identifying the current operating system.");
-
-static PyObject *
-posix_uname(PyObject *self, PyObject *noargs)
-{
-    struct utsname u;
-    int res;
-
-    Py_BEGIN_ALLOW_THREADS
-    res = uname(&u);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    return Py_BuildValue("(sssss)",
-                         u.sysname,
-                         u.nodename,
-                         u.release,
-                         u.version,
-                         u.machine);
-}
-#endif /* HAVE_UNAME */
-
-static int
-extract_time(PyObject *t, time_t* sec, long* usec)
-{
-    time_t intval;
-    if (PyFloat_Check(t)) {
-        double tval = PyFloat_AsDouble(t);
-        PyObject *intobj = PyNumber_Long(t);
-        if (!intobj)
-            return -1;
-#if SIZEOF_TIME_T > SIZEOF_LONG
-        intval = PyInt_AsUnsignedLongLongMask(intobj);
-#else
-        intval = PyInt_AsLong(intobj);
-#endif
-        Py_DECREF(intobj);
-        if (intval == -1 && PyErr_Occurred())
-            return -1;
-        *sec = intval;
-        *usec = (long)((tval - intval) * 1e6); /* can't exceed 1000000 */
-        if (*usec < 0)
-            /* If rounding gave us a negative number,
-               truncate.  */
-            *usec = 0;
-        return 0;
-    }
-#if SIZEOF_TIME_T > SIZEOF_LONG
-    intval = PyInt_AsUnsignedLongLongMask(t);
-#else
-    intval = PyInt_AsLong(t);
-#endif
-    if (intval == -1 && PyErr_Occurred())
-        return -1;
-    *sec = intval;
-    *usec = 0;
-    return 0;
-}
-
-PyDoc_STRVAR(posix_utime__doc__,
-"utime(path, (atime, mtime))\n\
-utime(path, None)\n\n\
-Set the access and modified time of the file to the given values.  If the\n\
-second form is used, set the access and modified times to the current time.");
-
-static PyObject *
-posix_utime(PyObject *self, PyObject *args)
-{
-#ifdef MS_WINDOWS
-    PyObject *arg;
-    PyUnicodeObject *obwpath;
-    wchar_t *wpath = NULL;
-    char *apath = NULL;
-    HANDLE hFile;
-    time_t atimesec, mtimesec;
-    long ausec, musec;
-    FILETIME atime, mtime;
-    PyObject *result = NULL;
-
-    if (PyArg_ParseTuple(args, "UO|:utime", &obwpath, &arg)) {
-        wpath = PyUnicode_AS_UNICODE(obwpath);
-        Py_BEGIN_ALLOW_THREADS
-        hFile = CreateFileW(wpath, FILE_WRITE_ATTRIBUTES, 0,
-                            NULL, OPEN_EXISTING,
-                            FILE_FLAG_BACKUP_SEMANTICS, NULL);
-        Py_END_ALLOW_THREADS
-        if (hFile == INVALID_HANDLE_VALUE)
-            return win32_error_unicode("utime", wpath);
-    } else
-        /* Drop the argument parsing error as narrow strings
-           are also valid. */
-        PyErr_Clear();
-
-    if (!wpath) {
-        if (!PyArg_ParseTuple(args, "etO:utime",
-                              Py_FileSystemDefaultEncoding, &apath, &arg))
-            return NULL;
-        Py_BEGIN_ALLOW_THREADS
-        hFile = CreateFileA(apath, FILE_WRITE_ATTRIBUTES, 0,
-                            NULL, OPEN_EXISTING,
-                            FILE_FLAG_BACKUP_SEMANTICS, NULL);
-        Py_END_ALLOW_THREADS
-        if (hFile == INVALID_HANDLE_VALUE) {
-            win32_error("utime", apath);
-            PyMem_Free(apath);
-            return NULL;
-        }
-        PyMem_Free(apath);
-    }
-
-    if (arg == Py_None) {
-        SYSTEMTIME now;
-        GetSystemTime(&now);
-        if (!SystemTimeToFileTime(&now, &mtime) ||
-            !SystemTimeToFileTime(&now, &atime)) {
-            win32_error("utime", NULL);
-            goto done;
-        }
-    }
-    else if (!PyTuple_Check(arg) || PyTuple_Size(arg) != 2) {
-        PyErr_SetString(PyExc_TypeError,
-                        "utime() arg 2 must be a tuple (atime, mtime)");
-        goto done;
-    }
-    else {
-        if (extract_time(PyTuple_GET_ITEM(arg, 0),
-                         &atimesec, &ausec) == -1)
-            goto done;
-        time_t_to_FILE_TIME(atimesec, 1000*ausec, &atime);
-        if (extract_time(PyTuple_GET_ITEM(arg, 1),
-                         &mtimesec, &musec) == -1)
-            goto done;
-        time_t_to_FILE_TIME(mtimesec, 1000*musec, &mtime);
-    }
-    if (!SetFileTime(hFile, NULL, &atime, &mtime)) {
-        /* Avoid putting the file name into the error here,
-           as that may confuse the user into believing that
-           something is wrong with the file, when it also
-           could be the time stamp that gives a problem. */
-        win32_error("utime", NULL);
-        goto done;
-    }
-    Py_INCREF(Py_None);
-    result = Py_None;
-done:
-    CloseHandle(hFile);
-    return result;
-#else /* MS_WINDOWS */
-
-    char *path = NULL;
-    time_t atime, mtime;
-    long ausec, musec;
-    int res;
-    PyObject* arg;
-
-#if defined(HAVE_UTIMES)
-    struct timeval buf[2];
-#define ATIME buf[0].tv_sec
-#define MTIME buf[1].tv_sec
-#elif defined(HAVE_UTIME_H)
-/* XXX should define struct utimbuf instead, above */
-    struct utimbuf buf;
-#define ATIME buf.actime
-#define MTIME buf.modtime
-#define UTIME_ARG &buf
-#else /* HAVE_UTIMES */
-    time_t buf[2];
-#define ATIME buf[0]
-#define MTIME buf[1]
-#define UTIME_ARG buf
-#endif /* HAVE_UTIMES */
-
-
-    if (!PyArg_ParseTuple(args, "etO:utime",
-                          Py_FileSystemDefaultEncoding, &path, &arg))
-        return NULL;
-    if (arg == Py_None) {
-        /* optional time values not given */
-        Py_BEGIN_ALLOW_THREADS
-        res = utime(path, NULL);
-        Py_END_ALLOW_THREADS
-    }
-    else if (!PyTuple_Check(arg) || PyTuple_Size(arg) != 2) {
-        PyErr_SetString(PyExc_TypeError,
-                        "utime() arg 2 must be a tuple (atime, mtime)");
-        PyMem_Free(path);
-        return NULL;
-    }
-    else {
-        if (extract_time(PyTuple_GET_ITEM(arg, 0),
-                         &atime, &ausec) == -1) {
-            PyMem_Free(path);
-            return NULL;
-        }
-        if (extract_time(PyTuple_GET_ITEM(arg, 1),
-                         &mtime, &musec) == -1) {
-            PyMem_Free(path);
-            return NULL;
-        }
-        ATIME = atime;
-        MTIME = mtime;
-#ifdef HAVE_UTIMES
-        buf[0].tv_usec = ausec;
-        buf[1].tv_usec = musec;
-        Py_BEGIN_ALLOW_THREADS
-        res = utimes(path, buf);
-        Py_END_ALLOW_THREADS
-#else
-        Py_BEGIN_ALLOW_THREADS
-        res = utime(path, UTIME_ARG);
-        Py_END_ALLOW_THREADS
-#endif /* HAVE_UTIMES */
-    }
-    if (res < 0) {
-        return posix_error_with_allocated_filename(path);
-    }
-    PyMem_Free(path);
-    Py_INCREF(Py_None);
-    return Py_None;
-#undef UTIME_ARG
-#undef ATIME
-#undef MTIME
-#endif /* MS_WINDOWS */
-}
-
-
-/* Process operations */
-
-PyDoc_STRVAR(posix__exit__doc__,
-"_exit(status)\n\n\
-Exit to the system with specified status, without normal exit processing.");
-
-static PyObject *
-posix__exit(PyObject *self, PyObject *args)
-{
-    int sts;
-    if (!PyArg_ParseTuple(args, "i:_exit", &sts))
-        return NULL;
-    _exit(sts);
-    return NULL; /* Make gcc -Wall happy */
-}
-
-#if defined(HAVE_EXECV) || defined(HAVE_SPAWNV)
-static void
-free_string_array(char **array, Py_ssize_t count)
-{
-    Py_ssize_t i;
-    for (i = 0; i < count; i++)
-        PyMem_Free(array[i]);
-    PyMem_DEL(array);
-}
-#endif
-
-
-#ifdef HAVE_EXECV
-PyDoc_STRVAR(posix_execv__doc__,
-"execv(path, args)\n\n\
-Execute an executable path with arguments, replacing current process.\n\
-\n\
-    path: path of executable file\n\
-    args: tuple or list of strings");
-
-static PyObject *
-posix_execv(PyObject *self, PyObject *args)
-{
-    char *path;
-    PyObject *argv;
-    char **argvlist;
-    Py_ssize_t i, argc;
-    PyObject *(*getitem)(PyObject *, Py_ssize_t);
-
-    /* execv has two arguments: (path, argv), where
-       argv is a list or tuple of strings. */
-
-    if (!PyArg_ParseTuple(args, "etO:execv",
-                          Py_FileSystemDefaultEncoding,
-                          &path, &argv))
-        return NULL;
-    if (PyList_Check(argv)) {
-        argc = PyList_Size(argv);
-        getitem = PyList_GetItem;
-    }
-    else if (PyTuple_Check(argv)) {
-        argc = PyTuple_Size(argv);
-        getitem = PyTuple_GetItem;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError, "execv() arg 2 must be a tuple or list");
-        PyMem_Free(path);
-        return NULL;
-    }
-    if (argc < 1) {
-        PyErr_SetString(PyExc_ValueError, "execv() arg 2 must not be empty");
-        PyMem_Free(path);
-        return NULL;
-    }
-
-    argvlist = PyMem_NEW(char *, argc+1);
-    if (argvlist == NULL) {
-        PyMem_Free(path);
-        return PyErr_NoMemory();
-    }
-    for (i = 0; i < argc; i++) {
-        if (!PyArg_Parse((*getitem)(argv, i), "et",
-                         Py_FileSystemDefaultEncoding,
-                         &argvlist[i])) {
-            free_string_array(argvlist, i);
-            PyErr_SetString(PyExc_TypeError,
-                            "execv() arg 2 must contain only strings");
-            PyMem_Free(path);
-            return NULL;
-
-        }
-    }
-    argvlist[argc] = NULL;
-
-    execv(path, argvlist);
-
-    /* If we get here it's definitely an error */
-
-    free_string_array(argvlist, argc);
-    PyMem_Free(path);
-    return posix_error();
-}
-
-
-PyDoc_STRVAR(posix_execve__doc__,
-"execve(path, args, env)\n\n\
-Execute a path with arguments and environment, replacing current process.\n\
-\n\
-    path: path of executable file\n\
-    args: tuple or list of arguments\n\
-    env: dictionary of strings mapping to strings");
-
-static PyObject *
-posix_execve(PyObject *self, PyObject *args)
-{
-    char *path;
-    PyObject *argv, *env;
-    char **argvlist;
-    char **envlist;
-    PyObject *key, *val, *keys=NULL, *vals=NULL;
-    Py_ssize_t i, pos, argc, envc;
-    PyObject *(*getitem)(PyObject *, Py_ssize_t);
-    Py_ssize_t lastarg = 0;
-
-    /* execve has three arguments: (path, argv, env), where
-       argv is a list or tuple of strings and env is a dictionary
-       like posix.environ. */
-
-    if (!PyArg_ParseTuple(args, "etOO:execve",
-                          Py_FileSystemDefaultEncoding,
-                          &path, &argv, &env))
-        return NULL;
-    if (PyList_Check(argv)) {
-        argc = PyList_Size(argv);
-        getitem = PyList_GetItem;
-    }
-    else if (PyTuple_Check(argv)) {
-        argc = PyTuple_Size(argv);
-        getitem = PyTuple_GetItem;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "execve() arg 2 must be a tuple or list");
-        goto fail_0;
-    }
-    if (!PyMapping_Check(env)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "execve() arg 3 must be a mapping object");
-        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((*getitem)(argv, i),
-                         "et;execve() arg 2 must contain only strings",
-                         Py_FileSystemDefaultEncoding,
-                         &argvlist[i]))
-        {
-            lastarg = i;
-            goto fail_1;
-        }
-    }
-    lastarg = argc;
-    argvlist[argc] = NULL;
-
-    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,
-                        "execve(): 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;execve() arg 3 contains a non-string key",
-                    &k) ||
-            !PyArg_Parse(
-                val,
-                "s;execve() arg 3 contains a non-string value",
-                &v))
-        {
-            goto fail_2;
-        }
-
-#if defined(PYOS_OS2)
-        /* Omit Pseudo-Env Vars that Would Confuse Programs if Passed On */
-        if (stricmp(k, "BEGINLIBPATH") != 0 && stricmp(k, "ENDLIBPATH") != 0) {
-#endif
-        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;
-#if defined(PYOS_OS2)
-        }
-#endif
-    }
-    envlist[envc] = 0;
-
-    execve(path, argvlist, envlist);
-
-    /* If we get here it's definitely an error */
-
-    (void) posix_error();
-
-  fail_2:
-    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:
-    PyMem_Free(path);
-    return NULL;
-}
-#endif /* HAVE_EXECV */
-
-
-#ifdef HAVE_SPAWNV
-PyDoc_STRVAR(posix_spawnv__doc__,
-"spawnv(mode, path, args)\n\n\
-Execute the program 'path' in a new process.\n\
-\n\
-    mode: mode of process creation\n\
-    path: path of executable file\n\
-    args: tuple or list of strings");
-
-static PyObject *
-posix_spawnv(PyObject *self, PyObject *args)
-{
-    char *path;
-    PyObject *argv;
-    char **argvlist;
-    int mode, i;
-    Py_ssize_t argc;
-    Py_intptr_t spawnval;
-    PyObject *(*getitem)(PyObject *, Py_ssize_t);
-
-    /* spawnv has three arguments: (mode, path, argv), where
-       argv is a list or tuple of strings. */
-
-    if (!PyArg_ParseTuple(args, "ietO:spawnv", &mode,
-                          Py_FileSystemDefaultEncoding,
-                          &path, &argv))
-        return NULL;
-    if (PyList_Check(argv)) {
-        argc = PyList_Size(argv);
-        getitem = PyList_GetItem;
-    }
-    else if (PyTuple_Check(argv)) {
-        argc = PyTuple_Size(argv);
-        getitem = PyTuple_GetItem;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "spawnv() arg 2 must be a tuple or list");
-        PyMem_Free(path);
-        return NULL;
-    }
-
-    argvlist = PyMem_NEW(char *, argc+1);
-    if (argvlist == NULL) {
-        PyMem_Free(path);
-        return PyErr_NoMemory();
-    }
-    for (i = 0; i < argc; i++) {
-        if (!PyArg_Parse((*getitem)(argv, i), "et",
-                         Py_FileSystemDefaultEncoding,
-                         &argvlist[i])) {
-            free_string_array(argvlist, i);
-            PyErr_SetString(
-                PyExc_TypeError,
-                "spawnv() arg 2 must contain only strings");
-            PyMem_Free(path);
-            return NULL;
-        }
-    }
-    argvlist[argc] = NULL;
-
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-    Py_BEGIN_ALLOW_THREADS
-    spawnval = spawnv(mode, path, argvlist);
-    Py_END_ALLOW_THREADS
-#else
-    if (mode == _OLD_P_OVERLAY)
-        mode = _P_OVERLAY;
-
-    Py_BEGIN_ALLOW_THREADS
-    spawnval = _spawnv(mode, path, argvlist);
-    Py_END_ALLOW_THREADS
-#endif
-
-    free_string_array(argvlist, argc);
-    PyMem_Free(path);
-
-    if (spawnval == -1)
-        return posix_error();
-    else
-#if SIZEOF_LONG == SIZEOF_VOID_P
-        return Py_BuildValue("l", (long) spawnval);
-#else
-        return Py_BuildValue("L", (PY_LONG_LONG) spawnval);
-#endif
-}
-
-
-PyDoc_STRVAR(posix_spawnve__doc__,
-"spawnve(mode, path, args, env)\n\n\
-Execute the program 'path' in a new process.\n\
-\n\
-    mode: mode of process creation\n\
-    path: path of executable file\n\
-    args: tuple or list of arguments\n\
-    env: dictionary of strings mapping to strings");
-
-static PyObject *
-posix_spawnve(PyObject *self, PyObject *args)
-{
-    char *path;
-    PyObject *argv, *env;
-    char **argvlist;
-    char **envlist;
-    PyObject *key, *val, *keys=NULL, *vals=NULL, *res=NULL;
-    int mode, pos, envc;
-    Py_ssize_t argc, i;
-    Py_intptr_t spawnval;
-    PyObject *(*getitem)(PyObject *, Py_ssize_t);
-    Py_ssize_t lastarg = 0;
-
-    /* spawnve has four arguments: (mode, path, argv, env), where
-       argv is a list or tuple of strings and env is a dictionary
-       like posix.environ. */
-
-    if (!PyArg_ParseTuple(args, "ietOO:spawnve", &mode,
-                          Py_FileSystemDefaultEncoding,
-                          &path, &argv, &env))
-        return NULL;
-    if (PyList_Check(argv)) {
-        argc = PyList_Size(argv);
-        getitem = PyList_GetItem;
-    }
-    else if (PyTuple_Check(argv)) {
-        argc = PyTuple_Size(argv);
-        getitem = PyTuple_GetItem;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "spawnve() arg 2 must be a tuple or list");
-        goto fail_0;
-    }
-    if (!PyMapping_Check(env)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "spawnve() arg 3 must be a mapping object");
-        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((*getitem)(argv, i),
-                     "et;spawnve() arg 2 must contain only strings",
-                         Py_FileSystemDefaultEncoding,
-                         &argvlist[i]))
-        {
-            lastarg = i;
-            goto fail_1;
-        }
-    }
-    lastarg = argc;
-    argvlist[argc] = NULL;
-
-    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,
-                        "spawnve(): 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;spawnve() arg 3 contains a non-string key",
-                    &k) ||
-            !PyArg_Parse(
-                val,
-                "s;spawnve() arg 3 contains a non-string value",
-                &v))
-        {
-            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 defined(PYOS_OS2) && defined(PYCC_GCC)
-    Py_BEGIN_ALLOW_THREADS
-    spawnval = spawnve(mode, path, argvlist, envlist);
-    Py_END_ALLOW_THREADS
-#else
-    if (mode == _OLD_P_OVERLAY)
-        mode = _P_OVERLAY;
-
-    Py_BEGIN_ALLOW_THREADS
-    spawnval = _spawnve(mode, path, argvlist, envlist);
-    Py_END_ALLOW_THREADS
-#endif
-
-    if (spawnval == -1)
-        (void) posix_error();
-    else
-#if SIZEOF_LONG == SIZEOF_VOID_P
-        res = Py_BuildValue("l", (long) spawnval);
-#else
-        res = Py_BuildValue("L", (PY_LONG_LONG) spawnval);
-#endif
-
-  fail_2:
-    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:
-    PyMem_Free(path);
-    return res;
-}
-
-/* OS/2 supports spawnvp & spawnvpe natively */
-#if defined(PYOS_OS2)
-PyDoc_STRVAR(posix_spawnvp__doc__,
-"spawnvp(mode, file, args)\n\n\
-Execute the program 'file' in a new process, using the environment\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");
-
-static PyObject *
-posix_spawnvp(PyObject *self, PyObject *args)
-{
-    char *path;
-    PyObject *argv;
-    char **argvlist;
-    int mode, i, argc;
-    Py_intptr_t spawnval;
-    PyObject *(*getitem)(PyObject *, Py_ssize_t);
-
-    /* spawnvp has three arguments: (mode, path, argv), where
-       argv is a list or tuple of strings. */
-
-    if (!PyArg_ParseTuple(args, "ietO:spawnvp", &mode,
-                          Py_FileSystemDefaultEncoding,
-                          &path, &argv))
-        return NULL;
-    if (PyList_Check(argv)) {
-        argc = PyList_Size(argv);
-        getitem = PyList_GetItem;
-    }
-    else if (PyTuple_Check(argv)) {
-        argc = PyTuple_Size(argv);
-        getitem = PyTuple_GetItem;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "spawnvp() arg 2 must be a tuple or list");
-        PyMem_Free(path);
-        return NULL;
-    }
-
-    argvlist = PyMem_NEW(char *, argc+1);
-    if (argvlist == NULL) {
-        PyMem_Free(path);
-        return PyErr_NoMemory();
-    }
-    for (i = 0; i < argc; i++) {
-        if (!PyArg_Parse((*getitem)(argv, i), "et",
-                         Py_FileSystemDefaultEncoding,
-                         &argvlist[i])) {
-            free_string_array(argvlist, i);
-            PyErr_SetString(
-                PyExc_TypeError,
-                "spawnvp() arg 2 must contain only strings");
-            PyMem_Free(path);
-            return NULL;
-        }
-    }
-    argvlist[argc] = NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-#if defined(PYCC_GCC)
-    spawnval = spawnvp(mode, path, argvlist);
-#else
-    spawnval = _spawnvp(mode, path, argvlist);
-#endif
-    Py_END_ALLOW_THREADS
-
-    free_string_array(argvlist, argc);
-    PyMem_Free(path);
-
-    if (spawnval == -1)
-        return posix_error();
-    else
-        return Py_BuildValue("l", (long) spawnval);
-}
-
-
-PyDoc_STRVAR(posix_spawnvpe__doc__,
-"spawnvpe(mode, file, args, env)\n\n\
-Execute the program 'file' in a new process, using the environment\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 arguments\n\
-    env: dictionary of strings mapping to strings");
-
-static PyObject *
-posix_spawnvpe(PyObject *self, PyObject *args)
-{
-    char *path;
-    PyObject *argv, *env;
-    char **argvlist;
-    char **envlist;
-    PyObject *key, *val, *keys=NULL, *vals=NULL, *res=NULL;
-    int mode, i, pos, argc, envc;
-    Py_intptr_t spawnval;
-    PyObject *(*getitem)(PyObject *, Py_ssize_t);
-    int lastarg = 0;
-
-    /* spawnvpe has four arguments: (mode, path, argv, env), where
-       argv is a list or tuple of strings and env is a dictionary
-       like posix.environ. */
-
-    if (!PyArg_ParseTuple(args, "ietOO:spawnvpe", &mode,
-                          Py_FileSystemDefaultEncoding,
-                          &path, &argv, &env))
-        return NULL;
-    if (PyList_Check(argv)) {
-        argc = PyList_Size(argv);
-        getitem = PyList_GetItem;
-    }
-    else if (PyTuple_Check(argv)) {
-        argc = PyTuple_Size(argv);
-        getitem = PyTuple_GetItem;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "spawnvpe() arg 2 must be a tuple or list");
-        goto fail_0;
-    }
-    if (!PyMapping_Check(env)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "spawnvpe() arg 3 must be a mapping object");
-        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((*getitem)(argv, i),
-                     "et;spawnvpe() arg 2 must contain only strings",
-                         Py_FileSystemDefaultEncoding,
-                         &argvlist[i]))
-        {
-            lastarg = i;
-            goto fail_1;
-        }
-    }
-    lastarg = argc;
-    argvlist[argc] = NULL;
-
-    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,
-                        "spawnvpe(): 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;spawnvpe() arg 3 contains a non-string key",
-                    &k) ||
-            !PyArg_Parse(
-                val,
-                "s;spawnvpe() arg 3 contains a non-string value",
-                &v))
-        {
-            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;
-
-    Py_BEGIN_ALLOW_THREADS
-#if defined(PYCC_GCC)
-    spawnval = spawnvpe(mode, path, argvlist, envlist);
-#else
-    spawnval = _spawnvpe(mode, path, argvlist, envlist);
-#endif
-    Py_END_ALLOW_THREADS
-
-    if (spawnval == -1)
-        (void) posix_error();
-    else
-        res = Py_BuildValue("l", (long) spawnval);
-
-  fail_2:
-    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:
-    PyMem_Free(path);
-    return res;
-}
-#endif /* PYOS_OS2 */
-#endif /* HAVE_SPAWNV */
-
-
-#ifdef HAVE_FORK1
-PyDoc_STRVAR(posix_fork1__doc__,
-"fork1() -> pid\n\n\
-Fork a child process with a single multiplexed (i.e., not bound) thread.\n\
-\n\
-Return 0 to child process and PID of child to parent process.");
-
-static PyObject *
-posix_fork1(PyObject *self, PyObject *noargs)
-{
-    pid_t pid;
-    int result = 0;
-    _PyImport_AcquireLock();
-    pid = fork1();
-    if (pid == 0) {
-        /* child: this clobbers and resets the import lock. */
-        PyOS_AfterFork();
-    } else {
-        /* parent: release the import lock. */
-        result = _PyImport_ReleaseLock();
-    }
-    if (pid == -1)
-        return posix_error();
-    if (result < 0) {
-        /* Don't clobber the OSError if the fork failed. */
-        PyErr_SetString(PyExc_RuntimeError,
-                        "not holding the import lock");
-        return NULL;
-    }
-    return PyLong_FromPid(pid);
-}
-#endif
-
-
-#ifdef HAVE_FORK
-PyDoc_STRVAR(posix_fork__doc__,
-"fork() -> pid\n\n\
-Fork a child process.\n\
-Return 0 to child process and PID of child to parent process.");
-
-static PyObject *
-posix_fork(PyObject *self, PyObject *noargs)
-{
-    pid_t pid;
-    int result = 0;
-    _PyImport_AcquireLock();
-    pid = fork();
-    if (pid == 0) {
-        /* child: this clobbers and resets the import lock. */
-        PyOS_AfterFork();
-    } else {
-        /* parent: release the import lock. */
-        result = _PyImport_ReleaseLock();
-    }
-    if (pid == -1)
-        return posix_error();
-    if (result < 0) {
-        /* Don't clobber the OSError if the fork failed. */
-        PyErr_SetString(PyExc_RuntimeError,
-                        "not holding the import lock");
-        return NULL;
-    }
-    return PyLong_FromPid(pid);
-}
-#endif
-
-/* AIX uses /dev/ptc but is otherwise the same as /dev/ptmx */
-/* IRIX has both /dev/ptc and /dev/ptmx, use ptmx */
-#if defined(HAVE_DEV_PTC) && !defined(HAVE_DEV_PTMX)
-#define DEV_PTY_FILE "/dev/ptc"
-#define HAVE_DEV_PTMX
-#else
-#define DEV_PTY_FILE "/dev/ptmx"
-#endif
-
-#if defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) || defined(HAVE_DEV_PTMX)
-#ifdef HAVE_PTY_H
-#include <pty.h>
-#else
-#ifdef HAVE_LIBUTIL_H
-#include <libutil.h>
-#else
-#ifdef HAVE_UTIL_H
-#include <util.h>
-#endif /* HAVE_UTIL_H */
-#endif /* HAVE_LIBUTIL_H */
-#endif /* HAVE_PTY_H */
-#ifdef HAVE_STROPTS_H
-#include <stropts.h>
-#endif
-#endif /* defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) || defined(HAVE_DEV_PTMX */
-
-#if defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) || defined(HAVE_DEV_PTMX)
-PyDoc_STRVAR(posix_openpty__doc__,
-"openpty() -> (master_fd, slave_fd)\n\n\
-Open a pseudo-terminal, returning open fd's for both master and slave end.\n");
-
-static PyObject *
-posix_openpty(PyObject *self, PyObject *noargs)
-{
-    int master_fd, slave_fd;
-#ifndef HAVE_OPENPTY
-    char * slave_name;
-#endif
-#if defined(HAVE_DEV_PTMX) && !defined(HAVE_OPENPTY) && !defined(HAVE__GETPTY)
-    PyOS_sighandler_t sig_saved;
-#ifdef sun
-    extern char *ptsname(int fildes);
-#endif
-#endif
-
-#ifdef HAVE_OPENPTY
-    if (openpty(&master_fd, &slave_fd, NULL, NULL, NULL) != 0)
-        return posix_error();
-#elif defined(HAVE__GETPTY)
-    slave_name = _getpty(&master_fd, O_RDWR, 0666, 0);
-    if (slave_name == NULL)
-        return posix_error();
-
-    slave_fd = open(slave_name, O_RDWR);
-    if (slave_fd < 0)
-        return posix_error();
-#else
-    master_fd = open(DEV_PTY_FILE, O_RDWR | O_NOCTTY); /* open master */
-    if (master_fd < 0)
-        return posix_error();
-    sig_saved = PyOS_setsig(SIGCHLD, SIG_DFL);
-    /* change permission of slave */
-    if (grantpt(master_fd) < 0) {
-        PyOS_setsig(SIGCHLD, sig_saved);
-        return posix_error();
-    }
-    /* unlock slave */
-    if (unlockpt(master_fd) < 0) {
-        PyOS_setsig(SIGCHLD, sig_saved);
-        return posix_error();
-    }
-    PyOS_setsig(SIGCHLD, sig_saved);
-    slave_name = ptsname(master_fd); /* get name of slave */
-    if (slave_name == NULL)
-        return posix_error();
-    slave_fd = open(slave_name, O_RDWR | O_NOCTTY); /* open slave */
-    if (slave_fd < 0)
-        return posix_error();
-#if !defined(__CYGWIN__) && !defined(HAVE_DEV_PTC)
-    ioctl(slave_fd, I_PUSH, "ptem"); /* push ptem */
-    ioctl(slave_fd, I_PUSH, "ldterm"); /* push ldterm */
-#ifndef __hpux
-    ioctl(slave_fd, I_PUSH, "ttcompat"); /* push ttcompat */
-#endif /* __hpux */
-#endif /* HAVE_CYGWIN */
-#endif /* HAVE_OPENPTY */
-
-    return Py_BuildValue("(ii)", master_fd, slave_fd);
-
-}
-#endif /* defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) || defined(HAVE_DEV_PTMX) */
-
-#ifdef HAVE_FORKPTY
-PyDoc_STRVAR(posix_forkpty__doc__,
-"forkpty() -> (pid, master_fd)\n\n\
-Fork a new process with a new pseudo-terminal as controlling tty.\n\n\
-Like fork(), return 0 as pid to child process, and PID of child to parent.\n\
-To both, return fd of newly opened pseudo-terminal.\n");
-
-static PyObject *
-posix_forkpty(PyObject *self, PyObject *noargs)
-{
-    int master_fd = -1, result = 0;
-    pid_t pid;
-
-    _PyImport_AcquireLock();
-    pid = forkpty(&master_fd, NULL, NULL, NULL);
-    if (pid == 0) {
-        /* child: this clobbers and resets the import lock. */
-        PyOS_AfterFork();
-    } else {
-        /* parent: release the import lock. */
-        result = _PyImport_ReleaseLock();
-    }
-    if (pid == -1)
-        return posix_error();
-    if (result < 0) {
-        /* Don't clobber the OSError if the fork failed. */
-        PyErr_SetString(PyExc_RuntimeError,
-                        "not holding the import lock");
-        return NULL;
-    }
-    return Py_BuildValue("(Ni)", PyLong_FromPid(pid), master_fd);
-}
-#endif
-
-#ifdef HAVE_GETEGID
-PyDoc_STRVAR(posix_getegid__doc__,
-"getegid() -> egid\n\n\
-Return the current process's effective group id.");
-
-static PyObject *
-posix_getegid(PyObject *self, PyObject *noargs)
-{
-    return PyInt_FromLong((long)getegid());
-}
-#endif
-
-
-#ifdef HAVE_GETEUID
-PyDoc_STRVAR(posix_geteuid__doc__,
-"geteuid() -> euid\n\n\
-Return the current process's effective user id.");
-
-static PyObject *
-posix_geteuid(PyObject *self, PyObject *noargs)
-{
-    return PyInt_FromLong((long)geteuid());
-}
-#endif
-
-
-#ifdef HAVE_GETGID
-PyDoc_STRVAR(posix_getgid__doc__,
-"getgid() -> gid\n\n\
-Return the current process's group id.");
-
-static PyObject *
-posix_getgid(PyObject *self, PyObject *noargs)
-{
-    return PyInt_FromLong((long)getgid());
-}
-#endif
-
-
-PyDoc_STRVAR(posix_getpid__doc__,
-"getpid() -> pid\n\n\
-Return the current process id");
-
-static PyObject *
-posix_getpid(PyObject *self, PyObject *noargs)
-{
-    return PyLong_FromPid(getpid());
-}
-
-
-#ifdef HAVE_GETGROUPS
-PyDoc_STRVAR(posix_getgroups__doc__,
-"getgroups() -> list of group IDs\n\n\
-Return list of supplemental group IDs for the process.");
-
-static PyObject *
-posix_getgroups(PyObject *self, PyObject *noargs)
-{
-    PyObject *result = NULL;
-
-#ifdef NGROUPS_MAX
-#define MAX_GROUPS NGROUPS_MAX
-#else
-    /* defined to be 16 on Solaris7, so this should be a small number */
-#define MAX_GROUPS 64
-#endif
-    gid_t grouplist[MAX_GROUPS];
-
-    /* On MacOSX getgroups(2) can return more than MAX_GROUPS results 
-     * This is a helper variable to store the intermediate result when
-     * that happens.
-     *
-     * To keep the code readable the OSX behaviour is unconditional,
-     * according to the POSIX spec this should be safe on all unix-y
-     * systems.
-     */
-    gid_t* alt_grouplist = grouplist;
-    int n;
-
-    n = getgroups(MAX_GROUPS, grouplist);
-    if (n < 0) {
-        if (errno == EINVAL) {
-            n = getgroups(0, NULL);
-            if (n == -1) {
-                return posix_error();
-            }
-            if (n == 0) {
-                /* Avoid malloc(0) */
-                alt_grouplist = grouplist;
-            } else {
-                alt_grouplist = PyMem_Malloc(n * sizeof(gid_t));
-                if (alt_grouplist == NULL) {
-                    errno = EINVAL;
-                    return posix_error();
-                }
-                n = getgroups(n, alt_grouplist);
-                if (n == -1) {
-                    PyMem_Free(alt_grouplist);
-                    return posix_error();
-                }
-            }
-        } else {
-            return posix_error();
-        }
-    }
-    result = PyList_New(n);
-    if (result != NULL) {
-        int i;
-        for (i = 0; i < n; ++i) {
-            PyObject *o = PyInt_FromLong((long)alt_grouplist[i]);
-            if (o == NULL) {
-                Py_DECREF(result);
-                result = NULL;
-                break;
-            }
-            PyList_SET_ITEM(result, i, o);
-        }
-    }
-
-    if (alt_grouplist != grouplist) {
-        PyMem_Free(alt_grouplist);
-    }
-
-    return result;
-}
-#endif
-
-#ifdef HAVE_INITGROUPS
-PyDoc_STRVAR(posix_initgroups__doc__,
-"initgroups(username, gid) -> None\n\n\
-Call the system initgroups() to initialize the group access list with all of\n\
-the groups of which the specified username is a member, plus the specified\n\
-group id.");
-
-static PyObject *
-posix_initgroups(PyObject *self, PyObject *args)
-{
-    char *username;
-    long gid;
-
-    if (!PyArg_ParseTuple(args, "sl:initgroups", &username, &gid))
-        return NULL;
-
-    if (initgroups(username, (gid_t) gid) == -1)
-        return PyErr_SetFromErrno(PyExc_OSError);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-#ifdef HAVE_GETPGID
-PyDoc_STRVAR(posix_getpgid__doc__,
-"getpgid(pid) -> pgid\n\n\
-Call the system call getpgid().");
-
-static PyObject *
-posix_getpgid(PyObject *self, PyObject *args)
-{
-    pid_t pid, pgid;
-    if (!PyArg_ParseTuple(args, PARSE_PID ":getpgid", &pid))
-        return NULL;
-    pgid = getpgid(pid);
-    if (pgid < 0)
-        return posix_error();
-    return PyLong_FromPid(pgid);
-}
-#endif /* HAVE_GETPGID */
-
-
-#ifdef HAVE_GETPGRP
-PyDoc_STRVAR(posix_getpgrp__doc__,
-"getpgrp() -> pgrp\n\n\
-Return the current process group id.");
-
-static PyObject *
-posix_getpgrp(PyObject *self, PyObject *noargs)
-{
-#ifdef GETPGRP_HAVE_ARG
-    return PyLong_FromPid(getpgrp(0));
-#else /* GETPGRP_HAVE_ARG */
-    return PyLong_FromPid(getpgrp());
-#endif /* GETPGRP_HAVE_ARG */
-}
-#endif /* HAVE_GETPGRP */
-
-
-#ifdef HAVE_SETPGRP
-PyDoc_STRVAR(posix_setpgrp__doc__,
-"setpgrp()\n\n\
-Make this process the process group leader.");
-
-static PyObject *
-posix_setpgrp(PyObject *self, PyObject *noargs)
-{
-#ifdef SETPGRP_HAVE_ARG
-    if (setpgrp(0, 0) < 0)
-#else /* SETPGRP_HAVE_ARG */
-    if (setpgrp() < 0)
-#endif /* SETPGRP_HAVE_ARG */
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-#endif /* HAVE_SETPGRP */
-
-#ifdef HAVE_GETPPID
-PyDoc_STRVAR(posix_getppid__doc__,
-"getppid() -> ppid\n\n\
-Return the parent's process id.");
-
-static PyObject *
-posix_getppid(PyObject *self, PyObject *noargs)
-{
-    return PyLong_FromPid(getppid());
-}
-#endif
-
-
-#ifdef HAVE_GETLOGIN
-PyDoc_STRVAR(posix_getlogin__doc__,
-"getlogin() -> string\n\n\
-Return the actual login name.");
-
-static PyObject *
-posix_getlogin(PyObject *self, PyObject *noargs)
-{
-    PyObject *result = NULL;
-    char *name;
-    int old_errno = errno;
-
-    errno = 0;
-    name = getlogin();
-    if (name == NULL) {
-        if (errno)
-        posix_error();
-        else
-        PyErr_SetString(PyExc_OSError,
-                        "unable to determine login name");
-    }
-    else
-        result = PyString_FromString(name);
-    errno = old_errno;
-
-    return result;
-}
-#endif
-
-#ifdef HAVE_GETUID
-PyDoc_STRVAR(posix_getuid__doc__,
-"getuid() -> uid\n\n\
-Return the current process's user id.");
-
-static PyObject *
-posix_getuid(PyObject *self, PyObject *noargs)
-{
-    return PyInt_FromLong((long)getuid());
-}
-#endif
-
-
-#ifdef HAVE_KILL
-PyDoc_STRVAR(posix_kill__doc__,
-"kill(pid, sig)\n\n\
-Kill a process with a signal.");
-
-static PyObject *
-posix_kill(PyObject *self, PyObject *args)
-{
-    pid_t pid;
-    int sig;
-    if (!PyArg_ParseTuple(args, PARSE_PID "i:kill", &pid, &sig))
-        return NULL;
-#if defined(PYOS_OS2) && !defined(PYCC_GCC)
-    if (sig == XCPT_SIGNAL_INTR || sig == XCPT_SIGNAL_BREAK) {
-        APIRET rc;
-        if ((rc = DosSendSignalException(pid, sig)) != NO_ERROR)
-            return os2_error(rc);
-
-    } else if (sig == XCPT_SIGNAL_KILLPROC) {
-        APIRET rc;
-        if ((rc = DosKillProcess(DKP_PROCESS, pid)) != NO_ERROR)
-            return os2_error(rc);
-
-    } else
-        return NULL; /* Unrecognized Signal Requested */
-#else
-    if (kill(pid, sig) == -1)
-        return posix_error();
-#endif
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-#ifdef HAVE_KILLPG
-PyDoc_STRVAR(posix_killpg__doc__,
-"killpg(pgid, sig)\n\n\
-Kill a process group with a signal.");
-
-static PyObject *
-posix_killpg(PyObject *self, PyObject *args)
-{
-    int sig;
-    pid_t pgid;
-    /* XXX some man pages make the `pgid` parameter an int, others
-       a pid_t. Since getpgrp() returns a pid_t, we assume killpg should
-       take the same type. Moreover, pid_t is always at least as wide as
-       int (else compilation of this module fails), which is safe. */
-    if (!PyArg_ParseTuple(args, PARSE_PID "i:killpg", &pgid, &sig))
-        return NULL;
-    if (killpg(pgid, sig) == -1)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-#ifdef MS_WINDOWS
-PyDoc_STRVAR(win32_kill__doc__,
-"kill(pid, sig)\n\n\
-Kill a process with a signal.");
-
-static PyObject *
-win32_kill(PyObject *self, PyObject *args)
-{
-    PyObject *result;
-    DWORD pid, sig, err;
-    HANDLE handle;
-
-    if (!PyArg_ParseTuple(args, "kk:kill", &pid, &sig))
-        return NULL;
-
-    /* Console processes which share a common console can be sent CTRL+C or
-       CTRL+BREAK events, provided they handle said events. */
-    if (sig == CTRL_C_EVENT || sig == CTRL_BREAK_EVENT) {
-        if (GenerateConsoleCtrlEvent(sig, pid) == 0) {
-            err = GetLastError();
-            return PyErr_SetFromWindowsErr(err);
-        }
-        else
-            Py_RETURN_NONE;
-    }
-
-    /* If the signal is outside of what GenerateConsoleCtrlEvent can use,
-       attempt to open and terminate the process. */
-    handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
-    if (handle == NULL) {
-        err = GetLastError();
-        return PyErr_SetFromWindowsErr(err);
-    }
-
-    if (TerminateProcess(handle, sig) == 0) {
-        err = GetLastError();
-        result = PyErr_SetFromWindowsErr(err);
-    } else {
-        Py_INCREF(Py_None);
-        result = Py_None;
-    }
-
-    CloseHandle(handle);
-    return result;
-}
-#endif /* MS_WINDOWS */
-
-#ifdef HAVE_PLOCK
-
-#ifdef HAVE_SYS_LOCK_H
-#include <sys/lock.h>
-#endif
-
-PyDoc_STRVAR(posix_plock__doc__,
-"plock(op)\n\n\
-Lock program segments into memory.");
-
-static PyObject *
-posix_plock(PyObject *self, PyObject *args)
-{
-    int op;
-    if (!PyArg_ParseTuple(args, "i:plock", &op))
-        return NULL;
-    if (plock(op) == -1)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-
-#ifdef HAVE_POPEN
-PyDoc_STRVAR(posix_popen__doc__,
-"popen(command [, mode='r' [, bufsize]]) -> pipe\n\n\
-Open a pipe to/from a command returning a file object.");
-
-#if defined(PYOS_OS2)
-#if defined(PYCC_VACPP)
-static int
-async_system(const char *command)
-{
-    char errormsg[256], args[1024];
-    RESULTCODES rcodes;
-    APIRET rc;
-
-    char *shell = getenv("COMSPEC");
-    if (!shell)
-        shell = "cmd";
-
-    /* avoid overflowing the argument buffer */
-    if (strlen(shell) + 3 + strlen(command) >= 1024)
-        return ERROR_NOT_ENOUGH_MEMORY
-
-    args[0] = '\0';
-    strcat(args, shell);
-    strcat(args, "/c ");
-    strcat(args, command);
-
-    /* execute asynchronously, inheriting the environment */
-    rc = DosExecPgm(errormsg,
-                    sizeof(errormsg),
-                    EXEC_ASYNC,
-                    args,
-                    NULL,
-                    &rcodes,
-                    shell);
-    return rc;
-}
-
-static FILE *
-popen(const char *command, const char *mode, int pipesize, int *err)
-{
-    int oldfd, tgtfd;
-    HFILE pipeh[2];
-    APIRET rc;
-
-    /* mode determines which of stdin or stdout is reconnected to
-     * the pipe to the child
-     */
-    if (strchr(mode, 'r') != NULL) {
-        tgt_fd = 1;             /* stdout */
-    } else if (strchr(mode, 'w')) {
-        tgt_fd = 0;             /* stdin */
-    } else {
-        *err = ERROR_INVALID_ACCESS;
-        return NULL;
-    }
-
-    /* setup the pipe */
-    if ((rc = DosCreatePipe(&pipeh[0], &pipeh[1], pipesize)) != NO_ERROR) {
-        *err = rc;
-        return NULL;
-    }
-
-    /* prevent other threads accessing stdio */
-    DosEnterCritSec();
-
-    /* reconnect stdio and execute child */
-    oldfd = dup(tgtfd);
-    close(tgtfd);
-    if (dup2(pipeh[tgtfd], tgtfd) == 0) {
-        DosClose(pipeh[tgtfd]);
-        rc = async_system(command);
-    }
-
-    /* restore stdio */
-    dup2(oldfd, tgtfd);
-    close(oldfd);
-
-    /* allow other threads access to stdio */
-    DosExitCritSec();
-
-    /* if execution of child was successful return file stream */
-    if (rc == NO_ERROR)
-        return fdopen(pipeh[1 - tgtfd], mode);
-    else {
-        DosClose(pipeh[1 - tgtfd]);
-        *err = rc;
-        return NULL;
-    }
-}
-
-static PyObject *
-posix_popen(PyObject *self, PyObject *args)
-{
-    char *name;
-    char *mode = "r";
-    int   err, bufsize = -1;
-    FILE *fp;
-    PyObject *f;
-    if (!PyArg_ParseTuple(args, "s|si:popen", &name, &mode, &bufsize))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    fp = popen(name, mode, (bufsize > 0) ? bufsize : 4096, &err);
-    Py_END_ALLOW_THREADS
-    if (fp == NULL)
-        return os2_error(err);
-
-    f = PyFile_FromFile(fp, name, mode, fclose);
-    if (f != NULL)
-        PyFile_SetBufSize(f, bufsize);
-    return f;
-}
-
-#elif defined(PYCC_GCC)
-
-/* standard posix version of popen() support */
-static PyObject *
-posix_popen(PyObject *self, PyObject *args)
-{
-    char *name;
-    char *mode = "r";
-    int bufsize = -1;
-    FILE *fp;
-    PyObject *f;
-    if (!PyArg_ParseTuple(args, "s|si:popen", &name, &mode, &bufsize))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    fp = popen(name, mode);
-    Py_END_ALLOW_THREADS
-    if (fp == NULL)
-        return posix_error();
-    f = PyFile_FromFile(fp, name, mode, pclose);
-    if (f != NULL)
-        PyFile_SetBufSize(f, bufsize);
-    return f;
-}
-
-/* fork() under OS/2 has lots'o'warts
- * EMX supports pipe() and spawn*() so we can synthesize popen[234]()
- * most of this code is a ripoff of the win32 code, but using the
- * capabilities of EMX's C library routines
- */
-
-/* These tell _PyPopen() whether to return 1, 2, or 3 file objects. */
-#define POPEN_1 1
-#define POPEN_2 2
-#define POPEN_3 3
-#define POPEN_4 4
-
-static PyObject *_PyPopen(char *, int, int, int);
-static int _PyPclose(FILE *file);
-
-/*
- * Internal dictionary mapping popen* file pointers to process handles,
- * for use when retrieving the process exit code.  See _PyPclose() below
- * for more information on this dictionary's use.
- */
-static PyObject *_PyPopenProcs = NULL;
-
-/* os2emx version of popen2()
- *
- * The result of this function is a pipe (file) connected to the
- * process's stdin, and a pipe connected to the process's stdout.
- */
-
-static PyObject *
-os2emx_popen2(PyObject *self, PyObject  *args)
-{
-    PyObject *f;
-    int tm=0;
-
-    char *cmdstring;
-    char *mode = "t";
-    int bufsize = -1;
-    if (!PyArg_ParseTuple(args, "s|si:popen2", &cmdstring, &mode, &bufsize))
-        return NULL;
-
-    if (*mode == 't')
-        tm = O_TEXT;
-    else if (*mode != 'b') {
-        PyErr_SetString(PyExc_ValueError, "mode must be 't' or 'b'");
-        return NULL;
-    } else
-        tm = O_BINARY;
-
-    f = _PyPopen(cmdstring, tm, POPEN_2, bufsize);
-
-    return f;
-}
-
-/*
- * Variation on os2emx.popen2
- *
- * The result of this function is 3 pipes - the process's stdin,
- * stdout and stderr
- */
-
-static PyObject *
-os2emx_popen3(PyObject *self, PyObject *args)
-{
-    PyObject *f;
-    int tm = 0;
-
-    char *cmdstring;
-    char *mode = "t";
-    int bufsize = -1;
-    if (!PyArg_ParseTuple(args, "s|si:popen3", &cmdstring, &mode, &bufsize))
-        return NULL;
-
-    if (*mode == 't')
-        tm = O_TEXT;
-    else if (*mode != 'b') {
-        PyErr_SetString(PyExc_ValueError, "mode must be 't' or 'b'");
-        return NULL;
-    } else
-        tm = O_BINARY;
-
-    f = _PyPopen(cmdstring, tm, POPEN_3, bufsize);
-
-    return f;
-}
-
-/*
- * Variation on os2emx.popen2
- *
- * The result of this function is 2 pipes - the processes stdin,
- * and stdout+stderr combined as a single pipe.
- */
-
-static PyObject *
-os2emx_popen4(PyObject *self, PyObject  *args)
-{
-    PyObject *f;
-    int tm = 0;
-
-    char *cmdstring;
-    char *mode = "t";
-    int bufsize = -1;
-    if (!PyArg_ParseTuple(args, "s|si:popen4", &cmdstring, &mode, &bufsize))
-        return NULL;
-
-    if (*mode == 't')
-        tm = O_TEXT;
-    else if (*mode != 'b') {
-        PyErr_SetString(PyExc_ValueError, "mode must be 't' or 'b'");
-        return NULL;
-    } else
-        tm = O_BINARY;
-
-    f = _PyPopen(cmdstring, tm, POPEN_4, bufsize);
-
-    return f;
-}
-
-/* a couple of structures for convenient handling of multiple
- * file handles and pipes
- */
-struct file_ref
-{
-    int handle;
-    int flags;
-};
-
-struct pipe_ref
-{
-    int rd;
-    int wr;
-};
-
-/* The following code is derived from the win32 code */
-
-static PyObject *
-_PyPopen(char *cmdstring, int mode, int n, int bufsize)
-{
-    struct file_ref stdio[3];
-    struct pipe_ref p_fd[3];
-    FILE *p_s[3];
-    int file_count, i, pipe_err;
-    pid_t pipe_pid;
-    char *shell, *sh_name, *opt, *rd_mode, *wr_mode;
-    PyObject *f, *p_f[3];
-
-    /* file modes for subsequent fdopen's on pipe handles */
-    if (mode == O_TEXT)
-    {
-        rd_mode = "rt";
-        wr_mode = "wt";
-    }
-    else
-    {
-        rd_mode = "rb";
-        wr_mode = "wb";
-    }
-
-    /* prepare shell references */
-    if ((shell = getenv("EMXSHELL")) == NULL)
-        if ((shell = getenv("COMSPEC")) == NULL)
-        {
-            errno = ENOENT;
-            return posix_error();
-        }
-
-    sh_name = _getname(shell);
-    if (stricmp(sh_name, "cmd.exe") == 0 || stricmp(sh_name, "4os2.exe") == 0)
-        opt = "/c";
-    else
-        opt = "-c";
-
-    /* save current stdio fds + their flags, and set not inheritable */
-    i = pipe_err = 0;
-    while (pipe_err >= 0 && i < 3)
-    {
-        pipe_err = stdio[i].handle = dup(i);
-        stdio[i].flags = fcntl(i, F_GETFD, 0);
-        fcntl(stdio[i].handle, F_SETFD, stdio[i].flags | FD_CLOEXEC);
-        i++;
-    }
-    if (pipe_err < 0)
-    {
-        /* didn't get them all saved - clean up and bail out */
-        int saved_err = errno;
-        while (i-- > 0)
-        {
-            close(stdio[i].handle);
-        }
-        errno = saved_err;
-        return posix_error();
-    }
-
-    /* create pipe ends */
-    file_count = 2;
-    if (n == POPEN_3)
-        file_count = 3;
-    i = pipe_err = 0;
-    while ((pipe_err == 0) && (i < file_count))
-        pipe_err = pipe((int *)&p_fd[i++]);
-    if (pipe_err < 0)
-    {
-        /* didn't get them all made - clean up and bail out */
-        while (i-- > 0)
-        {
-            close(p_fd[i].wr);
-            close(p_fd[i].rd);
-        }
-        errno = EPIPE;
-        return posix_error();
-    }
-
-    /* change the actual standard IO streams over temporarily,
-     * making the retained pipe ends non-inheritable
-     */
-    pipe_err = 0;
-
-    /* - stdin */
-    if (dup2(p_fd[0].rd, 0) == 0)
-    {
-        close(p_fd[0].rd);
-        i = fcntl(p_fd[0].wr, F_GETFD, 0);
-        fcntl(p_fd[0].wr, F_SETFD, i | FD_CLOEXEC);
-        if ((p_s[0] = fdopen(p_fd[0].wr, wr_mode)) == NULL)
-        {
-            close(p_fd[0].wr);
-            pipe_err = -1;
-        }
-    }
-    else
-    {
-        pipe_err = -1;
-    }
-
-    /* - stdout */
-    if (pipe_err == 0)
-    {
-        if (dup2(p_fd[1].wr, 1) == 1)
-        {
-            close(p_fd[1].wr);
-            i = fcntl(p_fd[1].rd, F_GETFD, 0);
-            fcntl(p_fd[1].rd, F_SETFD, i | FD_CLOEXEC);
-            if ((p_s[1] = fdopen(p_fd[1].rd, rd_mode)) == NULL)
-            {
-                close(p_fd[1].rd);
-                pipe_err = -1;
-            }
-        }
-        else
-        {
-            pipe_err = -1;
-        }
-    }
-
-    /* - stderr, as required */
-    if (pipe_err == 0)
-        switch (n)
-        {
-            case POPEN_3:
-            {
-                if (dup2(p_fd[2].wr, 2) == 2)
-                {
-                    close(p_fd[2].wr);
-                    i = fcntl(p_fd[2].rd, F_GETFD, 0);
-                    fcntl(p_fd[2].rd, F_SETFD, i | FD_CLOEXEC);
-                    if ((p_s[2] = fdopen(p_fd[2].rd, rd_mode)) == NULL)
-                    {
-                        close(p_fd[2].rd);
-                        pipe_err = -1;
-                    }
-                }
-                else
-                {
-                    pipe_err = -1;
-                }
-                break;
-            }
-
-            case POPEN_4:
-            {
-                if (dup2(1, 2) != 2)
-                {
-                    pipe_err = -1;
-                }
-                break;
-            }
-        }
-
-    /* spawn the child process */
-    if (pipe_err == 0)
-    {
-        pipe_pid = spawnlp(P_NOWAIT, shell, shell, opt, cmdstring, (char *)0);
-        if (pipe_pid == -1)
-        {
-            pipe_err = -1;
-        }
-        else
-        {
-            /* save the PID into the FILE structure
-             * NOTE: this implementation doesn't actually
-             * take advantage of this, but do it for
-             * completeness - AIM Apr01
-             */
-            for (i = 0; i < file_count; i++)
-                p_s[i]->_pid = pipe_pid;
-        }
-    }
-
-    /* reset standard IO to normal */
-    for (i = 0; i < 3; i++)
-    {
-        dup2(stdio[i].handle, i);
-        fcntl(i, F_SETFD, stdio[i].flags);
-        close(stdio[i].handle);
-    }
-
-    /* if any remnant problems, clean up and bail out */
-    if (pipe_err < 0)
-    {
-        for (i = 0; i < 3; i++)
-        {
-            close(p_fd[i].rd);
-            close(p_fd[i].wr);
-        }
-        errno = EPIPE;
-        return posix_error_with_filename(cmdstring);
-    }
-
-    /* build tuple of file objects to return */
-    if ((p_f[0] = PyFile_FromFile(p_s[0], cmdstring, wr_mode, _PyPclose)) != NULL)
-        PyFile_SetBufSize(p_f[0], bufsize);
-    if ((p_f[1] = PyFile_FromFile(p_s[1], cmdstring, rd_mode, _PyPclose)) != NULL)
-        PyFile_SetBufSize(p_f[1], bufsize);
-    if (n == POPEN_3)
-    {
-        if ((p_f[2] = PyFile_FromFile(p_s[2], cmdstring, rd_mode, _PyPclose)) != NULL)
-            PyFile_SetBufSize(p_f[0], bufsize);
-        f = PyTuple_Pack(3, p_f[0], p_f[1], p_f[2]);
-    }
-    else
-        f = PyTuple_Pack(2, p_f[0], p_f[1]);
-
-    /*
-     * Insert the files we've created into the process dictionary
-     * all referencing the list with the process handle and the
-     * initial number of files (see description below in _PyPclose).
-     * Since if _PyPclose later tried to wait on a process when all
-     * handles weren't closed, it could create a deadlock with the
-     * child, we spend some energy here to try to ensure that we
-     * either insert all file handles into the dictionary or none
-     * at all.  It's a little clumsy with the various popen modes
-     * and variable number of files involved.
-     */
-    if (!_PyPopenProcs)
-    {
-        _PyPopenProcs = PyDict_New();
-    }
-
-    if (_PyPopenProcs)
-    {
-        PyObject *procObj, *pidObj, *intObj, *fileObj[3];
-        int ins_rc[3];
-
-        fileObj[0] = fileObj[1] = fileObj[2] = NULL;
-        ins_rc[0]  = ins_rc[1]  = ins_rc[2]  = 0;
-
-        procObj = PyList_New(2);
-        pidObj = PyLong_FromPid(pipe_pid);
-        intObj = PyInt_FromLong((long) file_count);
-
-        if (procObj && pidObj && intObj)
-        {
-            PyList_SetItem(procObj, 0, pidObj);
-            PyList_SetItem(procObj, 1, intObj);
-
-            fileObj[0] = PyLong_FromVoidPtr(p_s[0]);
-            if (fileObj[0])
-            {
-                ins_rc[0] = PyDict_SetItem(_PyPopenProcs,
-                                           fileObj[0],
-                                           procObj);
-            }
-            fileObj[1] = PyLong_FromVoidPtr(p_s[1]);
-            if (fileObj[1])
-            {
-                ins_rc[1] = PyDict_SetItem(_PyPopenProcs,
-                                           fileObj[1],
-                                           procObj);
-            }
-            if (file_count >= 3)
-            {
-                fileObj[2] = PyLong_FromVoidPtr(p_s[2]);
-                if (fileObj[2])
-                {
-                    ins_rc[2] = PyDict_SetItem(_PyPopenProcs,
-                                               fileObj[2],
-                                               procObj);
-                }
-            }
-
-            if (ins_rc[0] < 0 || !fileObj[0] ||
-                ins_rc[1] < 0 || (file_count > 1 && !fileObj[1]) ||
-                ins_rc[2] < 0 || (file_count > 2 && !fileObj[2]))
-            {
-                /* Something failed - remove any dictionary
-                 * entries that did make it.
-                 */
-                if (!ins_rc[0] && fileObj[0])
-                {
-                    PyDict_DelItem(_PyPopenProcs,
-                                   fileObj[0]);
-                }
-                if (!ins_rc[1] && fileObj[1])
-                {
-                    PyDict_DelItem(_PyPopenProcs,
-                                   fileObj[1]);
-                }
-                if (!ins_rc[2] && fileObj[2])
-                {
-                    PyDict_DelItem(_PyPopenProcs,
-                                   fileObj[2]);
-                }
-            }
-        }
-
-        /*
-         * Clean up our localized references for the dictionary keys
-         * and value since PyDict_SetItem will Py_INCREF any copies
-         * that got placed in the dictionary.
-         */
-        Py_XDECREF(procObj);
-        Py_XDECREF(fileObj[0]);
-        Py_XDECREF(fileObj[1]);
-        Py_XDECREF(fileObj[2]);
-    }
-
-    /* Child is launched. */
-    return f;
-}
-
-/*
- * Wrapper for fclose() to use for popen* files, so we can retrieve the
- * exit code for the child process and return as a result of the close.
- *
- * This function uses the _PyPopenProcs dictionary in order to map the
- * input file pointer to information about the process that was
- * originally created by the popen* call that created the file pointer.
- * The dictionary uses the file pointer as a key (with one entry
- * inserted for each file returned by the original popen* call) and a
- * single list object as the value for all files from a single call.
- * The list object contains the Win32 process handle at [0], and a file
- * count at [1], which is initialized to the total number of file
- * handles using that list.
- *
- * This function closes whichever handle it is passed, and decrements
- * the file count in the dictionary for the process handle pointed to
- * by this file.  On the last close (when the file count reaches zero),
- * this function will wait for the child process and then return its
- * exit code as the result of the close() operation.  This permits the
- * files to be closed in any order - it is always the close() of the
- * final handle that will return the exit code.
- *
- * NOTE: This function is currently called with the GIL released.
- * hence we use the GILState API to manage our state.
- */
-
-static int _PyPclose(FILE *file)
-{
-    int result;
-    int exit_code;
-    pid_t pipe_pid;
-    PyObject *procObj, *pidObj, *intObj, *fileObj;
-    int file_count;
-#ifdef WITH_THREAD
-    PyGILState_STATE state;
-#endif
-
-    /* Close the file handle first, to ensure it can't block the
-     * child from exiting if it's the last handle.
-     */
-    result = fclose(file);
-
-#ifdef WITH_THREAD
-    state = PyGILState_Ensure();
-#endif
-    if (_PyPopenProcs)
-    {
-        if ((fileObj = PyLong_FromVoidPtr(file)) != NULL &&
-            (procObj = PyDict_GetItem(_PyPopenProcs,
-                                      fileObj)) != NULL &&
-            (pidObj = PyList_GetItem(procObj,0)) != NULL &&
-            (intObj = PyList_GetItem(procObj,1)) != NULL)
-        {
-            pipe_pid = (pid_t) PyLong_AsPid(pidObj);
-            file_count = (int) PyInt_AsLong(intObj);
-
-            if (file_count > 1)
-            {
-                /* Still other files referencing process */
-                file_count--;
-                PyList_SetItem(procObj,1,
-                               PyInt_FromLong((long) file_count));
-            }
-            else
-            {
-                /* Last file for this process */
-                if (result != EOF &&
-                    waitpid(pipe_pid, &exit_code, 0) == pipe_pid)
-                {
-                    /* extract exit status */
-                    if (WIFEXITED(exit_code))
-                    {
-                        result = WEXITSTATUS(exit_code);
-                    }
-                    else
-                    {
-                        errno = EPIPE;
-                        result = -1;
-                    }
-                }
-                else
-                {
-                    /* Indicate failure - this will cause the file object
-                     * to raise an I/O error and translate the last
-                     * error code from errno.  We do have a problem with
-                     * last errors that overlap the normal errno table,
-                     * but that's a consistent problem with the file object.
-                     */
-                    result = -1;
-                }
-            }
-
-            /* Remove this file pointer from dictionary */
-            PyDict_DelItem(_PyPopenProcs, fileObj);
-
-            if (PyDict_Size(_PyPopenProcs) == 0)
-            {
-                Py_DECREF(_PyPopenProcs);
-                _PyPopenProcs = NULL;
-            }
-
-        } /* if object retrieval ok */
-
-        Py_XDECREF(fileObj);
-    } /* if _PyPopenProcs */
-
-#ifdef WITH_THREAD
-    PyGILState_Release(state);
-#endif
-    return result;
-}
-
-#endif /* PYCC_??? */
-
-#elif defined(MS_WINDOWS)
-
-/*
- * Portable 'popen' replacement for Win32.
- *
- * Written by Bill Tutt <billtut@microsoft.com>.  Minor tweaks
- * and 2.0 integration by Fredrik Lundh <fredrik@pythonware.com>
- * Return code handling by David Bolen <db3l@fitlinxx.com>.
- */
-
-#include <malloc.h>
-#include <io.h>
-#include <fcntl.h>
-
-/* These tell _PyPopen() wether to return 1, 2, or 3 file objects. */
-#define POPEN_1 1
-#define POPEN_2 2
-#define POPEN_3 3
-#define POPEN_4 4
-
-static PyObject *_PyPopen(char *, int, int);
-static int _PyPclose(FILE *file);
-
-/*
- * Internal dictionary mapping popen* file pointers to process handles,
- * for use when retrieving the process exit code.  See _PyPclose() below
- * for more information on this dictionary's use.
- */
-static PyObject *_PyPopenProcs = NULL;
-
-
-/* popen that works from a GUI.
- *
- * The result of this function is a pipe (file) connected to the
- * processes stdin or stdout, depending on the requested mode.
- */
-
-static PyObject *
-posix_popen(PyObject *self, PyObject *args)
-{
-    PyObject *f;
-    int tm = 0;
-
-    char *cmdstring;
-    char *mode = "r";
-    int bufsize = -1;
-    if (!PyArg_ParseTuple(args, "s|si:popen", &cmdstring, &mode, &bufsize))
-        return NULL;
-
-    if (*mode == 'r')
-        tm = _O_RDONLY;
-    else if (*mode != 'w') {
-        PyErr_SetString(PyExc_ValueError, "popen() arg 2 must be 'r' or 'w'");
-        return NULL;
-    } else
-        tm = _O_WRONLY;
-
-    if (bufsize != -1) {
-        PyErr_SetString(PyExc_ValueError, "popen() arg 3 must be -1");
-        return NULL;
-    }
-
-    if (*(mode+1) == 't')
-        f = _PyPopen(cmdstring, tm | _O_TEXT, POPEN_1);
-    else if (*(mode+1) == 'b')
-        f = _PyPopen(cmdstring, tm | _O_BINARY, POPEN_1);
-    else
-        f = _PyPopen(cmdstring, tm | _O_TEXT, POPEN_1);
-
-    return f;
-}
-
-/* Variation on win32pipe.popen
- *
- * The result of this function is a pipe (file) connected to the
- * process's stdin, and a pipe connected to the process's stdout.
- */
-
-static PyObject *
-win32_popen2(PyObject *self, PyObject  *args)
-{
-    PyObject *f;
-    int tm=0;
-
-    char *cmdstring;
-    char *mode = "t";
-    int bufsize = -1;
-    if (!PyArg_ParseTuple(args, "s|si:popen2", &cmdstring, &mode, &bufsize))
-        return NULL;
-
-    if (*mode == 't')
-        tm = _O_TEXT;
-    else if (*mode != 'b') {
-        PyErr_SetString(PyExc_ValueError, "popen2() arg 2 must be 't' or 'b'");
-        return NULL;
-    } else
-        tm = _O_BINARY;
-
-    if (bufsize != -1) {
-        PyErr_SetString(PyExc_ValueError, "popen2() arg 3 must be -1");
-        return NULL;
-    }
-
-    f = _PyPopen(cmdstring, tm, POPEN_2);
-
-    return f;
-}
-
-/*
- * Variation on <om win32pipe.popen>
- *
- * The result of this function is 3 pipes - the process's stdin,
- * stdout and stderr
- */
-
-static PyObject *
-win32_popen3(PyObject *self, PyObject *args)
-{
-    PyObject *f;
-    int tm = 0;
-
-    char *cmdstring;
-    char *mode = "t";
-    int bufsize = -1;
-    if (!PyArg_ParseTuple(args, "s|si:popen3", &cmdstring, &mode, &bufsize))
-        return NULL;
-
-    if (*mode == 't')
-        tm = _O_TEXT;
-    else if (*mode != 'b') {
-        PyErr_SetString(PyExc_ValueError, "popen3() arg 2 must be 't' or 'b'");
-        return NULL;
-    } else
-        tm = _O_BINARY;
-
-    if (bufsize != -1) {
-        PyErr_SetString(PyExc_ValueError, "popen3() arg 3 must be -1");
-        return NULL;
-    }
-
-    f = _PyPopen(cmdstring, tm, POPEN_3);
-
-    return f;
-}
-
-/*
- * Variation on win32pipe.popen
- *
- * The result of this function is 2 pipes - the processes stdin,
- * and stdout+stderr combined as a single pipe.
- */
-
-static PyObject *
-win32_popen4(PyObject *self, PyObject  *args)
-{
-    PyObject *f;
-    int tm = 0;
-
-    char *cmdstring;
-    char *mode = "t";
-    int bufsize = -1;
-    if (!PyArg_ParseTuple(args, "s|si:popen4", &cmdstring, &mode, &bufsize))
-        return NULL;
-
-    if (*mode == 't')
-        tm = _O_TEXT;
-    else if (*mode != 'b') {
-        PyErr_SetString(PyExc_ValueError, "popen4() arg 2 must be 't' or 'b'");
-        return NULL;
-    } else
-        tm = _O_BINARY;
-
-    if (bufsize != -1) {
-        PyErr_SetString(PyExc_ValueError, "popen4() arg 3 must be -1");
-        return NULL;
-    }
-
-    f = _PyPopen(cmdstring, tm, POPEN_4);
-
-    return f;
-}
-
-static BOOL
-_PyPopenCreateProcess(char *cmdstring,
-                      HANDLE hStdin,
-                      HANDLE hStdout,
-                      HANDLE hStderr,
-                      HANDLE *hProcess)
-{
-    PROCESS_INFORMATION piProcInfo;
-    STARTUPINFO siStartInfo;
-    DWORD dwProcessFlags = 0;  /* no NEW_CONSOLE by default for Ctrl+C handling */
-    char *s1,*s2, *s3 = " /c ";
-    const char *szConsoleSpawn = "w9xpopen.exe";
-    int i;
-    Py_ssize_t x;
-
-    if (i = GetEnvironmentVariable("COMSPEC",NULL,0)) {
-        char *comshell;
-
-        s1 = (char *)alloca(i);
-        if (!(x = GetEnvironmentVariable("COMSPEC", s1, i)))
-            /* x < i, so x fits into an integer */
-            return (int)x;
-
-        /* Explicitly check if we are using COMMAND.COM.  If we are
-         * then use the w9xpopen hack.
-         */
-        comshell = s1 + x;
-        while (comshell >= s1 && *comshell != '\\')
-            --comshell;
-        ++comshell;
-
-        if (GetVersion() < 0x80000000 &&
-            _stricmp(comshell, "command.com") != 0) {
-            /* NT/2000 and not using command.com. */
-            x = i + strlen(s3) + strlen(cmdstring) + 1;
-            s2 = (char *)alloca(x);
-            ZeroMemory(s2, x);
-            PyOS_snprintf(s2, x, "%s%s%s", s1, s3, cmdstring);
-        }
-        else {
-            /*
-             * Oh gag, we're on Win9x or using COMMAND.COM. Use
-             * the workaround listed in KB: Q150956
-             */
-            char modulepath[_MAX_PATH];
-            struct stat statinfo;
-            GetModuleFileName(NULL, modulepath, sizeof(modulepath));
-            for (x = i = 0; modulepath[i]; i++)
-                if (modulepath[i] == SEP)
-                    x = i+1;
-            modulepath[x] = '\0';
-            /* Create the full-name to w9xpopen, so we can test it exists */
-            strncat(modulepath,
-                    szConsoleSpawn,
-                    (sizeof(modulepath)/sizeof(modulepath[0]))
-                        -strlen(modulepath));
-            if (stat(modulepath, &statinfo) != 0) {
-                size_t mplen = sizeof(modulepath)/sizeof(modulepath[0]);
-                /* Eeek - file-not-found - possibly an embedding
-                   situation - see if we can locate it in sys.prefix
-                */
-                strncpy(modulepath,
-                        Py_GetExecPrefix(),
-                        mplen);
-                modulepath[mplen-1] = '\0';
-                if (modulepath[strlen(modulepath)-1] != '\\')
-                    strcat(modulepath, "\\");
-                strncat(modulepath,
-                        szConsoleSpawn,
-                        mplen-strlen(modulepath));
-                /* No where else to look - raise an easily identifiable
-                   error, rather than leaving Windows to report
-                   "file not found" - as the user is probably blissfully
-                   unaware this shim EXE is used, and it will confuse them.
-                   (well, it confused me for a while ;-)
-                */
-                if (stat(modulepath, &statinfo) != 0) {
-                    PyErr_Format(PyExc_RuntimeError,
-                                 "Can not locate '%s' which is needed "
-                                 "for popen to work with your shell "
-                                 "or platform.",
-                                 szConsoleSpawn);
-                    return FALSE;
-                }
-            }
-            x = i + strlen(s3) + strlen(cmdstring) + 1 +
-                strlen(modulepath) +
-                strlen(szConsoleSpawn) + 1;
-
-            s2 = (char *)alloca(x);
-            ZeroMemory(s2, x);
-            /* To maintain correct argument passing semantics,
-               we pass the command-line as it stands, and allow
-               quoting to be applied.  w9xpopen.exe will then
-               use its argv vector, and re-quote the necessary
-               args for the ultimate child process.
-            */
-            PyOS_snprintf(
-                s2, x,
-                "\"%s\" %s%s%s",
-                modulepath,
-                s1,
-                s3,
-                cmdstring);
-            /* Not passing CREATE_NEW_CONSOLE has been known to
-               cause random failures on win9x.  Specifically a
-               dialog:
-               "Your program accessed mem currently in use at xxx"
-               and a hopeful warning about the stability of your
-               system.
-               Cost is Ctrl+C won't kill children, but anyone
-               who cares can have a go!
-            */
-            dwProcessFlags |= CREATE_NEW_CONSOLE;
-        }
-    }
-
-    /* Could be an else here to try cmd.exe / command.com in the path
-       Now we'll just error out.. */
-    else {
-        PyErr_SetString(PyExc_RuntimeError,
-                        "Cannot locate a COMSPEC environment variable to "
-                        "use as the shell");
-        return FALSE;
-    }
-
-    ZeroMemory(&siStartInfo, sizeof(STARTUPINFO));
-    siStartInfo.cb = sizeof(STARTUPINFO);
-    siStartInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
-    siStartInfo.hStdInput = hStdin;
-    siStartInfo.hStdOutput = hStdout;
-    siStartInfo.hStdError = hStderr;
-    siStartInfo.wShowWindow = SW_HIDE;
-
-    if (CreateProcess(NULL,
-                      s2,
-                      NULL,
-                      NULL,
-                      TRUE,
-                      dwProcessFlags,
-                      NULL,
-                      NULL,
-                      &siStartInfo,
-                      &piProcInfo) ) {
-        /* Close the handles now so anyone waiting is woken. */
-        CloseHandle(piProcInfo.hThread);
-
-        /* Return process handle */
-        *hProcess = piProcInfo.hProcess;
-        return TRUE;
-    }
-    win32_error("CreateProcess", s2);
-    return FALSE;
-}
-
-/* The following code is based off of KB: Q190351 */
-
-static PyObject *
-_PyPopen(char *cmdstring, int mode, int n)
-{
-    HANDLE hChildStdinRd, hChildStdinWr, hChildStdoutRd, hChildStdoutWr,
-        hChildStderrRd, hChildStderrWr, hChildStdinWrDup, hChildStdoutRdDup,
-        hChildStderrRdDup, hProcess; /* hChildStdoutWrDup; */
-
-    SECURITY_ATTRIBUTES saAttr;
-    BOOL fSuccess;
-    int fd1, fd2, fd3;
-    FILE *f1, *f2, *f3;
-    long file_count;
-    PyObject *f;
-
-    saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
-    saAttr.bInheritHandle = TRUE;
-    saAttr.lpSecurityDescriptor = NULL;
-
-    if (!CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr, 0))
-        return win32_error("CreatePipe", NULL);
-
-    /* Create new output read handle and the input write handle. Set
-     * the inheritance properties to FALSE. Otherwise, the child inherits
-     * these handles; resulting in non-closeable handles to the pipes
-     * being created. */
-     fSuccess = DuplicateHandle(GetCurrentProcess(), hChildStdinWr,
-                                GetCurrentProcess(), &hChildStdinWrDup, 0,
-                                FALSE,
-                                DUPLICATE_SAME_ACCESS);
-     if (!fSuccess)
-         return win32_error("DuplicateHandle", NULL);
-
-     /* Close the inheritable version of ChildStdin
-    that we're using. */
-     CloseHandle(hChildStdinWr);
-
-     if (!CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr, 0))
-         return win32_error("CreatePipe", NULL);
-
-     fSuccess = DuplicateHandle(GetCurrentProcess(), hChildStdoutRd,
-                                GetCurrentProcess(), &hChildStdoutRdDup, 0,
-                                FALSE, DUPLICATE_SAME_ACCESS);
-     if (!fSuccess)
-         return win32_error("DuplicateHandle", NULL);
-
-     /* Close the inheritable version of ChildStdout
-        that we're using. */
-     CloseHandle(hChildStdoutRd);
-
-     if (n != POPEN_4) {
-         if (!CreatePipe(&hChildStderrRd, &hChildStderrWr, &saAttr, 0))
-             return win32_error("CreatePipe", NULL);
-         fSuccess = DuplicateHandle(GetCurrentProcess(),
-                                    hChildStderrRd,
-                                    GetCurrentProcess(),
-                                    &hChildStderrRdDup, 0,
-                                    FALSE, DUPLICATE_SAME_ACCESS);
-         if (!fSuccess)
-             return win32_error("DuplicateHandle", NULL);
-         /* Close the inheritable version of ChildStdErr that we're using. */
-         CloseHandle(hChildStderrRd);
-     }
-
-     switch (n) {
-     case POPEN_1:
-         switch (mode & (_O_RDONLY | _O_TEXT | _O_BINARY | _O_WRONLY)) {
-         case _O_WRONLY | _O_TEXT:
-             /* Case for writing to child Stdin in text mode. */
-             fd1 = _open_osfhandle((Py_intptr_t)hChildStdinWrDup, mode);
-             f1 = _fdopen(fd1, "w");
-             f = PyFile_FromFile(f1, cmdstring, "w", _PyPclose);
-             PyFile_SetBufSize(f, 0);
-             /* We don't care about these pipes anymore, so close them. */
-             CloseHandle(hChildStdoutRdDup);
-             CloseHandle(hChildStderrRdDup);
-             break;
-
-         case _O_RDONLY | _O_TEXT:
-             /* Case for reading from child Stdout in text mode. */
-             fd1 = _open_osfhandle((Py_intptr_t)hChildStdoutRdDup, mode);
-             f1 = _fdopen(fd1, "r");
-             f = PyFile_FromFile(f1, cmdstring, "r", _PyPclose);
-             PyFile_SetBufSize(f, 0);
-             /* We don't care about these pipes anymore, so close them. */
-             CloseHandle(hChildStdinWrDup);
-             CloseHandle(hChildStderrRdDup);
-             break;
-
-         case _O_RDONLY | _O_BINARY:
-             /* Case for readinig from child Stdout in binary mode. */
-             fd1 = _open_osfhandle((Py_intptr_t)hChildStdoutRdDup, mode);
-             f1 = _fdopen(fd1, "rb");
-             f = PyFile_FromFile(f1, cmdstring, "rb", _PyPclose);
-             PyFile_SetBufSize(f, 0);
-             /* We don't care about these pipes anymore, so close them. */
-             CloseHandle(hChildStdinWrDup);
-             CloseHandle(hChildStderrRdDup);
-             break;
-
-         case _O_WRONLY | _O_BINARY:
-             /* Case for writing to child Stdin in binary mode. */
-             fd1 = _open_osfhandle((Py_intptr_t)hChildStdinWrDup, mode);
-             f1 = _fdopen(fd1, "wb");
-             f = PyFile_FromFile(f1, cmdstring, "wb", _PyPclose);
-             PyFile_SetBufSize(f, 0);
-             /* We don't care about these pipes anymore, so close them. */
-             CloseHandle(hChildStdoutRdDup);
-             CloseHandle(hChildStderrRdDup);
-             break;
-         }
-         file_count = 1;
-         break;
-
-     case POPEN_2:
-     case POPEN_4:
-     {
-         char *m1, *m2;
-         PyObject *p1, *p2;
-
-         if (mode & _O_TEXT) {
-             m1 = "r";
-             m2 = "w";
-         } else {
-             m1 = "rb";
-             m2 = "wb";
-         }
-
-         fd1 = _open_osfhandle((Py_intptr_t)hChildStdinWrDup, mode);
-         f1 = _fdopen(fd1, m2);
-         fd2 = _open_osfhandle((Py_intptr_t)hChildStdoutRdDup, mode);
-         f2 = _fdopen(fd2, m1);
-         p1 = PyFile_FromFile(f1, cmdstring, m2, _PyPclose);
-         PyFile_SetBufSize(p1, 0);
-         p2 = PyFile_FromFile(f2, cmdstring, m1, _PyPclose);
-         PyFile_SetBufSize(p2, 0);
-
-         if (n != 4)
-             CloseHandle(hChildStderrRdDup);
-
-         f = PyTuple_Pack(2,p1,p2);
-         Py_XDECREF(p1);
-         Py_XDECREF(p2);
-         file_count = 2;
-         break;
-     }
-
-     case POPEN_3:
-     {
-         char *m1, *m2;
-         PyObject *p1, *p2, *p3;
-
-         if (mode & _O_TEXT) {
-             m1 = "r";
-             m2 = "w";
-         } else {
-             m1 = "rb";
-             m2 = "wb";
-         }
-
-         fd1 = _open_osfhandle((Py_intptr_t)hChildStdinWrDup, mode);
-         f1 = _fdopen(fd1, m2);
-         fd2 = _open_osfhandle((Py_intptr_t)hChildStdoutRdDup, mode);
-         f2 = _fdopen(fd2, m1);
-         fd3 = _open_osfhandle((Py_intptr_t)hChildStderrRdDup, mode);
-         f3 = _fdopen(fd3, m1);
-         p1 = PyFile_FromFile(f1, cmdstring, m2, _PyPclose);
-         p2 = PyFile_FromFile(f2, cmdstring, m1, _PyPclose);
-         p3 = PyFile_FromFile(f3, cmdstring, m1, _PyPclose);
-         PyFile_SetBufSize(p1, 0);
-         PyFile_SetBufSize(p2, 0);
-         PyFile_SetBufSize(p3, 0);
-         f = PyTuple_Pack(3,p1,p2,p3);
-         Py_XDECREF(p1);
-         Py_XDECREF(p2);
-         Py_XDECREF(p3);
-         file_count = 3;
-         break;
-     }
-     }
-
-     if (n == POPEN_4) {
-         if (!_PyPopenCreateProcess(cmdstring,
-                                    hChildStdinRd,
-                                    hChildStdoutWr,
-                                    hChildStdoutWr,
-                                    &hProcess))
-             return NULL;
-     }
-     else {
-         if (!_PyPopenCreateProcess(cmdstring,
-                                    hChildStdinRd,
-                                    hChildStdoutWr,
-                                    hChildStderrWr,
-                                    &hProcess))
-             return NULL;
-     }
-
-     /*
-      * Insert the files we've created into the process dictionary
-      * all referencing the list with the process handle and the
-      * initial number of files (see description below in _PyPclose).
-      * Since if _PyPclose later tried to wait on a process when all
-      * handles weren't closed, it could create a deadlock with the
-      * child, we spend some energy here to try to ensure that we
-      * either insert all file handles into the dictionary or none
-      * at all.  It's a little clumsy with the various popen modes
-      * and variable number of files involved.
-      */
-     if (!_PyPopenProcs) {
-         _PyPopenProcs = PyDict_New();
-     }
-
-     if (_PyPopenProcs) {
-         PyObject *procObj, *hProcessObj, *intObj, *fileObj[3];
-         int ins_rc[3];
-
-         fileObj[0] = fileObj[1] = fileObj[2] = NULL;
-         ins_rc[0]  = ins_rc[1]  = ins_rc[2]  = 0;
-
-         procObj = PyList_New(2);
-         hProcessObj = PyLong_FromVoidPtr(hProcess);
-         intObj = PyInt_FromLong(file_count);
-
-         if (procObj && hProcessObj && intObj) {
-             PyList_SetItem(procObj,0,hProcessObj);
-             PyList_SetItem(procObj,1,intObj);
-
-             fileObj[0] = PyLong_FromVoidPtr(f1);
-             if (fileObj[0]) {
-                ins_rc[0] = PyDict_SetItem(_PyPopenProcs,
-                                           fileObj[0],
-                                           procObj);
-             }
-             if (file_count >= 2) {
-                 fileObj[1] = PyLong_FromVoidPtr(f2);
-                 if (fileObj[1]) {
-                    ins_rc[1] = PyDict_SetItem(_PyPopenProcs,
-                                               fileObj[1],
-                                               procObj);
-                 }
-             }
-             if (file_count >= 3) {
-                 fileObj[2] = PyLong_FromVoidPtr(f3);
-                 if (fileObj[2]) {
-                    ins_rc[2] = PyDict_SetItem(_PyPopenProcs,
-                                               fileObj[2],
-                                               procObj);
-                 }
-             }
-
-             if (ins_rc[0] < 0 || !fileObj[0] ||
-                 ins_rc[1] < 0 || (file_count > 1 && !fileObj[1]) ||
-                 ins_rc[2] < 0 || (file_count > 2 && !fileObj[2])) {
-                 /* Something failed - remove any dictionary
-                  * entries that did make it.
-                  */
-                 if (!ins_rc[0] && fileObj[0]) {
-                     PyDict_DelItem(_PyPopenProcs,
-                                    fileObj[0]);
-                 }
-                 if (!ins_rc[1] && fileObj[1]) {
-                     PyDict_DelItem(_PyPopenProcs,
-                                    fileObj[1]);
-                 }
-                 if (!ins_rc[2] && fileObj[2]) {
-                     PyDict_DelItem(_PyPopenProcs,
-                                    fileObj[2]);
-                 }
-             }
-         }
-
-         /*
-          * Clean up our localized references for the dictionary keys
-          * and value since PyDict_SetItem will Py_INCREF any copies
-          * that got placed in the dictionary.
-          */
-         Py_XDECREF(procObj);
-         Py_XDECREF(fileObj[0]);
-         Py_XDECREF(fileObj[1]);
-         Py_XDECREF(fileObj[2]);
-     }
-
-     /* Child is launched. Close the parents 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 (!CloseHandle(hChildStdinRd))
-         return win32_error("CloseHandle", NULL);
-
-     if (!CloseHandle(hChildStdoutWr))
-         return win32_error("CloseHandle", NULL);
-
-     if ((n != 4) && (!CloseHandle(hChildStderrWr)))
-         return win32_error("CloseHandle", NULL);
-
-     return f;
-}
-
-/*
- * Wrapper for fclose() to use for popen* files, so we can retrieve the
- * exit code for the child process and return as a result of the close.
- *
- * This function uses the _PyPopenProcs dictionary in order to map the
- * input file pointer to information about the process that was
- * originally created by the popen* call that created the file pointer.
- * The dictionary uses the file pointer as a key (with one entry
- * inserted for each file returned by the original popen* call) and a
- * single list object as the value for all files from a single call.
- * The list object contains the Win32 process handle at [0], and a file
- * count at [1], which is initialized to the total number of file
- * handles using that list.
- *
- * This function closes whichever handle it is passed, and decrements
- * the file count in the dictionary for the process handle pointed to
- * by this file.  On the last close (when the file count reaches zero),
- * this function will wait for the child process and then return its
- * exit code as the result of the close() operation.  This permits the
- * files to be closed in any order - it is always the close() of the
- * final handle that will return the exit code.
- *
- * NOTE: This function is currently called with the GIL released.
- * hence we use the GILState API to manage our state.
- */
-
-static int _PyPclose(FILE *file)
-{
-    int result;
-    DWORD exit_code;
-    HANDLE hProcess;
-    PyObject *procObj, *hProcessObj, *intObj, *fileObj;
-    long file_count;
-#ifdef WITH_THREAD
-    PyGILState_STATE state;
-#endif
-
-    /* Close the file handle first, to ensure it can't block the
-     * child from exiting if it's the last handle.
-     */
-    result = fclose(file);
-#ifdef WITH_THREAD
-    state = PyGILState_Ensure();
-#endif
-    if (_PyPopenProcs) {
-        if ((fileObj = PyLong_FromVoidPtr(file)) != NULL &&
-            (procObj = PyDict_GetItem(_PyPopenProcs,
-                                      fileObj)) != NULL &&
-            (hProcessObj = PyList_GetItem(procObj,0)) != NULL &&
-            (intObj = PyList_GetItem(procObj,1)) != NULL) {
-
-            hProcess = PyLong_AsVoidPtr(hProcessObj);
-            file_count = PyInt_AsLong(intObj);
-
-            if (file_count > 1) {
-                /* Still other files referencing process */
-                file_count--;
-                PyList_SetItem(procObj,1,
-                               PyInt_FromLong(file_count));
-            } else {
-                /* Last file for this process */
-                if (result != EOF &&
-                    WaitForSingleObject(hProcess, INFINITE) != WAIT_FAILED &&
-                    GetExitCodeProcess(hProcess, &exit_code)) {
-                    /* Possible truncation here in 16-bit environments, but
-                     * real exit codes are just the lower byte in any event.
-                     */
-                    result = exit_code;
-                } else {
-                    /* Indicate failure - this will cause the file object
-                     * to raise an I/O error and translate the last Win32
-                     * error code from errno.  We do have a problem with
-                     * last errors that overlap the normal errno table,
-                     * but that's a consistent problem with the file object.
-                     */
-                    if (result != EOF) {
-                        /* If the error wasn't from the fclose(), then
-                         * set errno for the file object error handling.
-                         */
-                        errno = GetLastError();
-                    }
-                    result = -1;
-                }
-
-                /* Free up the native handle at this point */
-                CloseHandle(hProcess);
-            }
-
-            /* Remove this file pointer from dictionary */
-            PyDict_DelItem(_PyPopenProcs, fileObj);
-
-            if (PyDict_Size(_PyPopenProcs) == 0) {
-                Py_DECREF(_PyPopenProcs);
-                _PyPopenProcs = NULL;
-            }
-
-        } /* if object retrieval ok */
-
-        Py_XDECREF(fileObj);
-    } /* if _PyPopenProcs */
-
-#ifdef WITH_THREAD
-    PyGILState_Release(state);
-#endif
-    return result;
-}
-
-#else /* which OS? */
-static PyObject *
-posix_popen(PyObject *self, PyObject *args)
-{
-    char *name;
-    char *mode = "r";
-    int bufsize = -1;
-    FILE *fp;
-    PyObject *f;
-    if (!PyArg_ParseTuple(args, "s|si:popen", &name, &mode, &bufsize))
-        return NULL;
-    /* Strip mode of binary or text modifiers */
-    if (strcmp(mode, "rb") == 0 || strcmp(mode, "rt") == 0)
-        mode = "r";
-    else if (strcmp(mode, "wb") == 0 || strcmp(mode, "wt") == 0)
-        mode = "w";
-    Py_BEGIN_ALLOW_THREADS
-    fp = popen(name, mode);
-    Py_END_ALLOW_THREADS
-    if (fp == NULL)
-        return posix_error();
-    f = PyFile_FromFile(fp, name, mode, pclose);
-    if (f != NULL)
-        PyFile_SetBufSize(f, bufsize);
-    return f;
-}
-
-#endif /* PYOS_??? */
-#endif /* HAVE_POPEN */
-
-
-#ifdef HAVE_SETUID
-PyDoc_STRVAR(posix_setuid__doc__,
-"setuid(uid)\n\n\
-Set the current process's user id.");
-
-static PyObject *
-posix_setuid(PyObject *self, PyObject *args)
-{
-    long uid_arg;
-    uid_t uid;
-    if (!PyArg_ParseTuple(args, "l:setuid", &uid_arg))
-        return NULL;
-    uid = uid_arg;
-    if (uid != uid_arg) {
-        PyErr_SetString(PyExc_OverflowError, "user id too big");
-        return NULL;
-    }
-    if (setuid(uid) < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_SETUID */
-
-
-#ifdef HAVE_SETEUID
-PyDoc_STRVAR(posix_seteuid__doc__,
-"seteuid(uid)\n\n\
-Set the current process's effective user id.");
-
-static PyObject *
-posix_seteuid (PyObject *self, PyObject *args)
-{
-    long euid_arg;
-    uid_t euid;
-    if (!PyArg_ParseTuple(args, "l", &euid_arg))
-        return NULL;
-    euid = euid_arg;
-    if (euid != euid_arg) {
-        PyErr_SetString(PyExc_OverflowError, "user id too big");
-        return NULL;
-    }
-    if (seteuid(euid) < 0) {
-        return posix_error();
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-#endif /* HAVE_SETEUID */
-
-#ifdef HAVE_SETEGID
-PyDoc_STRVAR(posix_setegid__doc__,
-"setegid(gid)\n\n\
-Set the current process's effective group id.");
-
-static PyObject *
-posix_setegid (PyObject *self, PyObject *args)
-{
-    long egid_arg;
-    gid_t egid;
-    if (!PyArg_ParseTuple(args, "l", &egid_arg))
-        return NULL;
-    egid = egid_arg;
-    if (egid != egid_arg) {
-        PyErr_SetString(PyExc_OverflowError, "group id too big");
-        return NULL;
-    }
-    if (setegid(egid) < 0) {
-        return posix_error();
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-#endif /* HAVE_SETEGID */
-
-#ifdef HAVE_SETREUID
-PyDoc_STRVAR(posix_setreuid__doc__,
-"setreuid(ruid, euid)\n\n\
-Set the current process's real and effective user ids.");
-
-static PyObject *
-posix_setreuid (PyObject *self, PyObject *args)
-{
-    long ruid_arg, euid_arg;
-    uid_t ruid, euid;
-    if (!PyArg_ParseTuple(args, "ll", &ruid_arg, &euid_arg))
-        return NULL;
-    if (ruid_arg == -1)
-        ruid = (uid_t)-1;  /* let the compiler choose how -1 fits */
-    else
-        ruid = ruid_arg;  /* otherwise, assign from our long */
-    if (euid_arg == -1)
-        euid = (uid_t)-1;
-    else
-        euid = euid_arg;
-    if ((euid_arg != -1 && euid != euid_arg) ||
-        (ruid_arg != -1 && ruid != ruid_arg)) {
-        PyErr_SetString(PyExc_OverflowError, "user id too big");
-        return NULL;
-    }
-    if (setreuid(ruid, euid) < 0) {
-        return posix_error();
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-#endif /* HAVE_SETREUID */
-
-#ifdef HAVE_SETREGID
-PyDoc_STRVAR(posix_setregid__doc__,
-"setregid(rgid, egid)\n\n\
-Set the current process's real and effective group ids.");
-
-static PyObject *
-posix_setregid (PyObject *self, PyObject *args)
-{
-    long rgid_arg, egid_arg;
-    gid_t rgid, egid;
-    if (!PyArg_ParseTuple(args, "ll", &rgid_arg, &egid_arg))
-        return NULL;
-    if (rgid_arg == -1)
-        rgid = (gid_t)-1;  /* let the compiler choose how -1 fits */
-    else
-        rgid = rgid_arg;  /* otherwise, assign from our long */
-    if (egid_arg == -1)
-        egid = (gid_t)-1;
-    else
-        egid = egid_arg;
-    if ((egid_arg != -1 && egid != egid_arg) ||
-        (rgid_arg != -1 && rgid != rgid_arg)) {
-        PyErr_SetString(PyExc_OverflowError, "group id too big");
-        return NULL;
-    }
-    if (setregid(rgid, egid) < 0) {
-        return posix_error();
-    } else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-#endif /* HAVE_SETREGID */
-
-#ifdef HAVE_SETGID
-PyDoc_STRVAR(posix_setgid__doc__,
-"setgid(gid)\n\n\
-Set the current process's group id.");
-
-static PyObject *
-posix_setgid(PyObject *self, PyObject *args)
-{
-    long gid_arg;
-    gid_t gid;
-    if (!PyArg_ParseTuple(args, "l:setgid", &gid_arg))
-        return NULL;
-    gid = gid_arg;
-    if (gid != gid_arg) {
-        PyErr_SetString(PyExc_OverflowError, "group id too big");
-        return NULL;
-    }
-    if (setgid(gid) < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_SETGID */
-
-#ifdef HAVE_SETGROUPS
-PyDoc_STRVAR(posix_setgroups__doc__,
-"setgroups(list)\n\n\
-Set the groups of the current process to list.");
-
-static PyObject *
-posix_setgroups(PyObject *self, PyObject *groups)
-{
-    int i, len;
-    gid_t grouplist[MAX_GROUPS];
-
-    if (!PySequence_Check(groups)) {
-        PyErr_SetString(PyExc_TypeError, "setgroups argument must be a sequence");
-        return NULL;
-    }
-    len = PySequence_Size(groups);
-    if (len > MAX_GROUPS) {
-        PyErr_SetString(PyExc_ValueError, "too many groups");
-        return NULL;
-    }
-    for(i = 0; i < len; i++) {
-        PyObject *elem;
-        elem = PySequence_GetItem(groups, i);
-        if (!elem)
-            return NULL;
-        if (!PyInt_Check(elem)) {
-            if (!PyLong_Check(elem)) {
-                PyErr_SetString(PyExc_TypeError,
-                                "groups must be integers");
-                Py_DECREF(elem);
-                return NULL;
-            } else {
-                unsigned long x = PyLong_AsUnsignedLong(elem);
-                if (PyErr_Occurred()) {
-                    PyErr_SetString(PyExc_TypeError,
-                                    "group id too big");
-                    Py_DECREF(elem);
-                    return NULL;
-                }
-                grouplist[i] = x;
-                /* read back to see if it fits in gid_t */
-                if (grouplist[i] != x) {
-                    PyErr_SetString(PyExc_TypeError,
-                                    "group id too big");
-                    Py_DECREF(elem);
-                    return NULL;
-                }
-            }
-        } else {
-            long x  = PyInt_AsLong(elem);
-            grouplist[i] = x;
-            if (grouplist[i] != x) {
-                PyErr_SetString(PyExc_TypeError,
-                                "group id too big");
-                Py_DECREF(elem);
-                return NULL;
-            }
-        }
-        Py_DECREF(elem);
-    }
-
-    if (setgroups(len, grouplist) < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_SETGROUPS */
-
-#if defined(HAVE_WAIT3) || defined(HAVE_WAIT4)
-static PyObject *
-wait_helper(pid_t pid, int status, struct rusage *ru)
-{
-    PyObject *result;
-    static PyObject *struct_rusage;
-
-    if (pid == -1)
-        return posix_error();
-
-    if (struct_rusage == NULL) {
-        PyObject *m = PyImport_ImportModuleNoBlock("resource");
-        if (m == NULL)
-            return NULL;
-        struct_rusage = PyObject_GetAttrString(m, "struct_rusage");
-        Py_DECREF(m);
-        if (struct_rusage == NULL)
-            return NULL;
-    }
-
-    /* XXX(nnorwitz): Copied (w/mods) from resource.c, there should be only one. */
-    result = PyStructSequence_New((PyTypeObject*) struct_rusage);
-    if (!result)
-        return NULL;
-
-#ifndef doubletime
-#define doubletime(TV) ((double)(TV).tv_sec + (TV).tv_usec * 0.000001)
-#endif
-
-    PyStructSequence_SET_ITEM(result, 0,
-                              PyFloat_FromDouble(doubletime(ru->ru_utime)));
-    PyStructSequence_SET_ITEM(result, 1,
-                              PyFloat_FromDouble(doubletime(ru->ru_stime)));
-#define SET_INT(result, index, value)\
-        PyStructSequence_SET_ITEM(result, index, PyInt_FromLong(value))
-    SET_INT(result, 2, ru->ru_maxrss);
-    SET_INT(result, 3, ru->ru_ixrss);
-    SET_INT(result, 4, ru->ru_idrss);
-    SET_INT(result, 5, ru->ru_isrss);
-    SET_INT(result, 6, ru->ru_minflt);
-    SET_INT(result, 7, ru->ru_majflt);
-    SET_INT(result, 8, ru->ru_nswap);
-    SET_INT(result, 9, ru->ru_inblock);
-    SET_INT(result, 10, ru->ru_oublock);
-    SET_INT(result, 11, ru->ru_msgsnd);
-    SET_INT(result, 12, ru->ru_msgrcv);
-    SET_INT(result, 13, ru->ru_nsignals);
-    SET_INT(result, 14, ru->ru_nvcsw);
-    SET_INT(result, 15, ru->ru_nivcsw);
-#undef SET_INT
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(result);
-        return NULL;
-    }
-
-    return Py_BuildValue("NiN", PyLong_FromPid(pid), status, result);
-}
-#endif /* HAVE_WAIT3 || HAVE_WAIT4 */
-
-#ifdef HAVE_WAIT3
-PyDoc_STRVAR(posix_wait3__doc__,
-"wait3(options) -> (pid, status, rusage)\n\n\
-Wait for completion of a child process.");
-
-static PyObject *
-posix_wait3(PyObject *self, PyObject *args)
-{
-    pid_t pid;
-    int options;
-    struct rusage ru;
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:wait3", &options))
-        return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    pid = wait3(&status, options, &ru);
-    Py_END_ALLOW_THREADS
-
-    return wait_helper(pid, WAIT_STATUS_INT(status), &ru);
-}
-#endif /* HAVE_WAIT3 */
-
-#ifdef HAVE_WAIT4
-PyDoc_STRVAR(posix_wait4__doc__,
-"wait4(pid, options) -> (pid, status, rusage)\n\n\
-Wait for completion of a given child process.");
-
-static PyObject *
-posix_wait4(PyObject *self, PyObject *args)
-{
-    pid_t pid;
-    int options;
-    struct rusage ru;
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, PARSE_PID "i:wait4", &pid, &options))
-        return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    pid = wait4(pid, &status, options, &ru);
-    Py_END_ALLOW_THREADS
-
-    return wait_helper(pid, WAIT_STATUS_INT(status), &ru);
-}
-#endif /* HAVE_WAIT4 */
-
-#ifdef HAVE_WAITPID
-PyDoc_STRVAR(posix_waitpid__doc__,
-"waitpid(pid, options) -> (pid, status)\n\n\
-Wait for completion of a given child process.");
-
-static PyObject *
-posix_waitpid(PyObject *self, PyObject *args)
-{
-    pid_t pid;
-    int options;
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, PARSE_PID "i:waitpid", &pid, &options))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    pid = waitpid(pid, &status, options);
-    Py_END_ALLOW_THREADS
-    if (pid == -1)
-        return posix_error();
-
-    return Py_BuildValue("Ni", PyLong_FromPid(pid), WAIT_STATUS_INT(status));
-}
-
-#elif defined(HAVE_CWAIT)
-
-/* MS C has a variant of waitpid() that's usable for most purposes. */
-PyDoc_STRVAR(posix_waitpid__doc__,
-"waitpid(pid, options) -> (pid, status << 8)\n\n"
-"Wait for completion of a given process.  options is ignored on Windows.");
-
-static PyObject *
-posix_waitpid(PyObject *self, PyObject *args)
-{
-    Py_intptr_t pid;
-    int status, options;
-
-    if (!PyArg_ParseTuple(args, PARSE_PID "i:waitpid", &pid, &options))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    pid = _cwait(&status, pid, options);
-    Py_END_ALLOW_THREADS
-    if (pid == -1)
-        return posix_error();
-
-    /* shift the status left a byte so this is more like the POSIX waitpid */
-    return Py_BuildValue("Ni", PyLong_FromPid(pid), status << 8);
-}
-#endif /* HAVE_WAITPID || HAVE_CWAIT */
-
-#ifdef HAVE_WAIT
-PyDoc_STRVAR(posix_wait__doc__,
-"wait() -> (pid, status)\n\n\
-Wait for completion of a child process.");
-
-static PyObject *
-posix_wait(PyObject *self, PyObject *noargs)
-{
-    pid_t pid;
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    Py_BEGIN_ALLOW_THREADS
-    pid = wait(&status);
-    Py_END_ALLOW_THREADS
-    if (pid == -1)
-        return posix_error();
-
-    return Py_BuildValue("Ni", PyLong_FromPid(pid), WAIT_STATUS_INT(status));
-}
-#endif
-
-
-PyDoc_STRVAR(posix_lstat__doc__,
-"lstat(path) -> stat result\n\n\
-Like stat(path), but do not follow symbolic links.");
-
-static PyObject *
-posix_lstat(PyObject *self, PyObject *args)
-{
-#ifdef HAVE_LSTAT
-    return posix_do_stat(self, args, "et:lstat", lstat, NULL, NULL);
-#else /* !HAVE_LSTAT */
-#ifdef MS_WINDOWS
-    return posix_do_stat(self, args, "et:lstat", STAT, "U:lstat", win32_wstat);
-#else
-    return posix_do_stat(self, args, "et:lstat", STAT, NULL, NULL);
-#endif
-#endif /* !HAVE_LSTAT */
-}
-
-
-#ifdef HAVE_READLINK
-PyDoc_STRVAR(posix_readlink__doc__,
-"readlink(path) -> path\n\n\
-Return a string representing the path to which the symbolic link points.");
-
-static PyObject *
-posix_readlink(PyObject *self, PyObject *args)
-{
-    PyObject* v;
-    char buf[MAXPATHLEN];
-    char *path;
-    int n;
-#ifdef Py_USING_UNICODE
-    int arg_is_unicode = 0;
-#endif
-
-    if (!PyArg_ParseTuple(args, "et:readlink",
-                          Py_FileSystemDefaultEncoding, &path))
-        return NULL;
-#ifdef Py_USING_UNICODE
-    v = PySequence_GetItem(args, 0);
-    if (v == NULL) {
-        PyMem_Free(path);
-        return NULL;
-    }
-
-    if (PyUnicode_Check(v)) {
-        arg_is_unicode = 1;
-    }
-    Py_DECREF(v);
-#endif
-
-    Py_BEGIN_ALLOW_THREADS
-    n = readlink(path, buf, (int) sizeof buf);
-    Py_END_ALLOW_THREADS
-    if (n < 0)
-        return posix_error_with_allocated_filename(path);
-
-    PyMem_Free(path);
-    v = PyString_FromStringAndSize(buf, n);
-#ifdef Py_USING_UNICODE
-    if (arg_is_unicode) {
-        PyObject *w;
-
-        w = PyUnicode_FromEncodedObject(v,
-                                        Py_FileSystemDefaultEncoding,
-                                        "strict");
-        if (w != NULL) {
-            Py_DECREF(v);
-            v = w;
-        }
-        else {
-            /* fall back to the original byte string, as
-               discussed in patch #683592 */
-            PyErr_Clear();
-        }
-    }
-#endif
-    return v;
-}
-#endif /* HAVE_READLINK */
-
-
-#ifdef HAVE_SYMLINK
-PyDoc_STRVAR(posix_symlink__doc__,
-"symlink(src, dst)\n\n\
-Create a symbolic link pointing to src named dst.");
-
-static PyObject *
-posix_symlink(PyObject *self, PyObject *args)
-{
-    return posix_2str(args, "etet:symlink", symlink);
-}
-#endif /* HAVE_SYMLINK */
-
-
-#ifdef HAVE_TIMES
-#if defined(PYCC_VACPP) && defined(PYOS_OS2)
-static long
-system_uptime(void)
-{
-    ULONG     value = 0;
-
-    Py_BEGIN_ALLOW_THREADS
-    DosQuerySysInfo(QSV_MS_COUNT, QSV_MS_COUNT, &value, sizeof(value));
-    Py_END_ALLOW_THREADS
-
-    return value;
-}
-
-static PyObject *
-posix_times(PyObject *self, PyObject *noargs)
-{
-    /* Currently Only Uptime is Provided -- Others Later */
-    return Py_BuildValue("ddddd",
-                         (double)0 /* t.tms_utime / HZ */,
-                         (double)0 /* t.tms_stime / HZ */,
-                         (double)0 /* t.tms_cutime / HZ */,
-                         (double)0 /* t.tms_cstime / HZ */,
-                         (double)system_uptime() / 1000);
-}
-#else /* not OS2 */
-#define NEED_TICKS_PER_SECOND
-static long ticks_per_second = -1;
-static PyObject *
-posix_times(PyObject *self, PyObject *noargs)
-{
-    struct tms t;
-    clock_t c;
-    errno = 0;
-    c = times(&t);
-    if (c == (clock_t) -1)
-        return posix_error();
-    return Py_BuildValue("ddddd",
-                         (double)t.tms_utime / ticks_per_second,
-                         (double)t.tms_stime / ticks_per_second,
-                         (double)t.tms_cutime / ticks_per_second,
-                         (double)t.tms_cstime / ticks_per_second,
-                         (double)c / ticks_per_second);
-}
-#endif /* not OS2 */
-#endif /* HAVE_TIMES */
-
-
-#ifdef MS_WINDOWS
-#define HAVE_TIMES      /* so the method table will pick it up */
-static PyObject *
-posix_times(PyObject *self, PyObject *noargs)
-{
-    FILETIME create, exit, kernel, user;
-    HANDLE hProc;
-    hProc = GetCurrentProcess();
-    GetProcessTimes(hProc, &create, &exit, &kernel, &user);
-    /* The fields of a FILETIME structure are the hi and lo part
-       of a 64-bit value expressed in 100 nanosecond units.
-       1e7 is one second in such units; 1e-7 the inverse.
-       429.4967296 is 2**32 / 1e7 or 2**32 * 1e-7.
-    */
-    return Py_BuildValue(
-        "ddddd",
-        (double)(user.dwHighDateTime*429.4967296 +
-                 user.dwLowDateTime*1e-7),
-        (double)(kernel.dwHighDateTime*429.4967296 +
-                 kernel.dwLowDateTime*1e-7),
-        (double)0,
-        (double)0,
-        (double)0);
-}
-#endif /* MS_WINDOWS */
-
-#ifdef HAVE_TIMES
-PyDoc_STRVAR(posix_times__doc__,
-"times() -> (utime, stime, cutime, cstime, elapsed_time)\n\n\
-Return a tuple of floating point numbers indicating process times.");
-#endif
-
-
-#ifdef HAVE_GETSID
-PyDoc_STRVAR(posix_getsid__doc__,
-"getsid(pid) -> sid\n\n\
-Call the system call getsid().");
-
-static PyObject *
-posix_getsid(PyObject *self, PyObject *args)
-{
-    pid_t pid;
-    int sid;
-    if (!PyArg_ParseTuple(args, PARSE_PID ":getsid", &pid))
-        return NULL;
-    sid = getsid(pid);
-    if (sid < 0)
-        return posix_error();
-    return PyInt_FromLong((long)sid);
-}
-#endif /* HAVE_GETSID */
-
-
-#ifdef HAVE_SETSID
-PyDoc_STRVAR(posix_setsid__doc__,
-"setsid()\n\n\
-Call the system call setsid().");
-
-static PyObject *
-posix_setsid(PyObject *self, PyObject *noargs)
-{
-    if (setsid() < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_SETSID */
-
-#ifdef HAVE_SETPGID
-PyDoc_STRVAR(posix_setpgid__doc__,
-"setpgid(pid, pgrp)\n\n\
-Call the system call setpgid().");
-
-static PyObject *
-posix_setpgid(PyObject *self, PyObject *args)
-{
-    pid_t pid;
-    int pgrp;
-    if (!PyArg_ParseTuple(args, PARSE_PID "i:setpgid", &pid, &pgrp))
-        return NULL;
-    if (setpgid(pid, pgrp) < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_SETPGID */
-
-
-#ifdef HAVE_TCGETPGRP
-PyDoc_STRVAR(posix_tcgetpgrp__doc__,
-"tcgetpgrp(fd) -> pgid\n\n\
-Return the process group associated with the terminal given by a fd.");
-
-static PyObject *
-posix_tcgetpgrp(PyObject *self, PyObject *args)
-{
-    int fd;
-    pid_t pgid;
-    if (!PyArg_ParseTuple(args, "i:tcgetpgrp", &fd))
-        return NULL;
-    pgid = tcgetpgrp(fd);
-    if (pgid < 0)
-        return posix_error();
-    return PyLong_FromPid(pgid);
-}
-#endif /* HAVE_TCGETPGRP */
-
-
-#ifdef HAVE_TCSETPGRP
-PyDoc_STRVAR(posix_tcsetpgrp__doc__,
-"tcsetpgrp(fd, pgid)\n\n\
-Set the process group associated with the terminal given by a fd.");
-
-static PyObject *
-posix_tcsetpgrp(PyObject *self, PyObject *args)
-{
-    int fd;
-    pid_t pgid;
-    if (!PyArg_ParseTuple(args, "i" PARSE_PID ":tcsetpgrp", &fd, &pgid))
-        return NULL;
-    if (tcsetpgrp(fd, pgid) < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAVE_TCSETPGRP */
-
-/* Functions acting on file descriptors */
-
-PyDoc_STRVAR(posix_open__doc__,
-"open(filename, flag [, mode=0777]) -> fd\n\n\
-Open a file (for low level IO).");
-
-static PyObject *
-posix_open(PyObject *self, PyObject *args)
-{
-    char *file = NULL;
-    int flag;
-    int mode = 0777;
-    int fd;
-
-#ifdef MS_WINDOWS
-    PyUnicodeObject *po;
-    if (PyArg_ParseTuple(args, "Ui|i:mkdir", &po, &flag, &mode)) {
-        Py_BEGIN_ALLOW_THREADS
-        /* PyUnicode_AS_UNICODE OK without thread
-           lock as it is a simple dereference. */
-        fd = _wopen(PyUnicode_AS_UNICODE(po), flag, mode);
-        Py_END_ALLOW_THREADS
-        if (fd < 0)
-            return posix_error();
-        return PyInt_FromLong((long)fd);
-    }
-    /* Drop the argument parsing error as narrow strings
-       are also valid. */
-    PyErr_Clear();
-#endif
-
-    if (!PyArg_ParseTuple(args, "eti|i",
-                          Py_FileSystemDefaultEncoding, &file,
-                          &flag, &mode))
-        return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    fd = open(file, flag, mode);
-    Py_END_ALLOW_THREADS
-    if (fd < 0)
-        return posix_error_with_allocated_filename(file);
-    PyMem_Free(file);
-    return PyInt_FromLong((long)fd);
-}
-
-
-PyDoc_STRVAR(posix_close__doc__,
-"close(fd)\n\n\
-Close a file descriptor (for low level IO).");
-
-static PyObject *
-posix_close(PyObject *self, PyObject *args)
-{
-    int fd, res;
-    if (!PyArg_ParseTuple(args, "i:close", &fd))
-        return NULL;
-    if (!_PyVerify_fd(fd))
-        return posix_error();
-    Py_BEGIN_ALLOW_THREADS
-    res = close(fd);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-
-PyDoc_STRVAR(posix_closerange__doc__,
-"closerange(fd_low, fd_high)\n\n\
-Closes all file descriptors in [fd_low, fd_high), ignoring errors.");
-
-static PyObject *
-posix_closerange(PyObject *self, PyObject *args)
-{
-    int fd_from, fd_to, i;
-    if (!PyArg_ParseTuple(args, "ii:closerange", &fd_from, &fd_to))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    for (i = fd_from; i < fd_to; i++)
-        if (_PyVerify_fd(i))
-            close(i);
-    Py_END_ALLOW_THREADS
-    Py_RETURN_NONE;
-}
-
-
-PyDoc_STRVAR(posix_dup__doc__,
-"dup(fd) -> fd2\n\n\
-Return a duplicate of a file descriptor.");
-
-static PyObject *
-posix_dup(PyObject *self, PyObject *args)
-{
-    int fd;
-    if (!PyArg_ParseTuple(args, "i:dup", &fd))
-        return NULL;
-    if (!_PyVerify_fd(fd))
-        return posix_error();
-    Py_BEGIN_ALLOW_THREADS
-    fd = dup(fd);
-    Py_END_ALLOW_THREADS
-    if (fd < 0)
-        return posix_error();
-    return PyInt_FromLong((long)fd);
-}
-
-
-PyDoc_STRVAR(posix_dup2__doc__,
-"dup2(old_fd, new_fd)\n\n\
-Duplicate file descriptor.");
-
-static PyObject *
-posix_dup2(PyObject *self, PyObject *args)
-{
-    int fd, fd2, res;
-    if (!PyArg_ParseTuple(args, "ii:dup2", &fd, &fd2))
-        return NULL;
-    if (!_PyVerify_fd_dup2(fd, fd2))
-        return posix_error();
-    Py_BEGIN_ALLOW_THREADS
-    res = dup2(fd, fd2);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-
-PyDoc_STRVAR(posix_lseek__doc__,
-"lseek(fd, pos, how) -> newpos\n\n\
-Set the current position of a file descriptor.");
-
-static PyObject *
-posix_lseek(PyObject *self, PyObject *args)
-{
-    int fd, how;
-#if defined(MS_WIN64) || defined(MS_WINDOWS)
-    PY_LONG_LONG pos, res;
-#else
-    off_t pos, res;
-#endif
-    PyObject *posobj;
-    if (!PyArg_ParseTuple(args, "iOi:lseek", &fd, &posobj, &how))
-        return NULL;
-#ifdef SEEK_SET
-    /* Turn 0, 1, 2 into SEEK_{SET,CUR,END} */
-    switch (how) {
-    case 0: how = SEEK_SET; break;
-    case 1: how = SEEK_CUR; break;
-    case 2: how = SEEK_END; break;
-    }
-#endif /* SEEK_END */
-
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    pos = PyInt_AsLong(posobj);
-#else
-    pos = PyLong_Check(posobj) ?
-        PyLong_AsLongLong(posobj) : PyInt_AsLong(posobj);
-#endif
-    if (PyErr_Occurred())
-        return NULL;
-
-    if (!_PyVerify_fd(fd))
-        return posix_error();
-    Py_BEGIN_ALLOW_THREADS
-#if defined(MS_WIN64) || defined(MS_WINDOWS)
-    res = _lseeki64(fd, pos, how);
-#else
-    res = lseek(fd, pos, how);
-#endif
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    return PyInt_FromLong(res);
-#else
-    return PyLong_FromLongLong(res);
-#endif
-}
-
-
-PyDoc_STRVAR(posix_read__doc__,
-"read(fd, buffersize) -> string\n\n\
-Read a file descriptor.");
-
-static PyObject *
-posix_read(PyObject *self, PyObject *args)
-{
-    int fd, size, n;
-    PyObject *buffer;
-    if (!PyArg_ParseTuple(args, "ii:read", &fd, &size))
-        return NULL;
-    if (size < 0) {
-        errno = EINVAL;
-        return posix_error();
-    }
-    buffer = PyString_FromStringAndSize((char *)NULL, size);
-    if (buffer == NULL)
-        return NULL;
-    if (!_PyVerify_fd(fd)) {
-        Py_DECREF(buffer);
-        return posix_error();
-    }
-    Py_BEGIN_ALLOW_THREADS
-    n = read(fd, PyString_AsString(buffer), size);
-    Py_END_ALLOW_THREADS
-    if (n < 0) {
-        Py_DECREF(buffer);
-        return posix_error();
-    }
-    if (n != size)
-        _PyString_Resize(&buffer, n);
-    return buffer;
-}
-
-
-PyDoc_STRVAR(posix_write__doc__,
-"write(fd, string) -> byteswritten\n\n\
-Write a string to a file descriptor.");
-
-static PyObject *
-posix_write(PyObject *self, PyObject *args)
-{
-    Py_buffer pbuf;
-    int fd;
-    Py_ssize_t size;
-
-    if (!PyArg_ParseTuple(args, "is*:write", &fd, &pbuf))
-        return NULL;
-    if (!_PyVerify_fd(fd)) {
-        PyBuffer_Release(&pbuf);
-        return posix_error();
-    }
-    Py_BEGIN_ALLOW_THREADS
-    size = write(fd, pbuf.buf, (size_t)pbuf.len);
-    Py_END_ALLOW_THREADS
-    PyBuffer_Release(&pbuf);
-    if (size < 0)
-        return posix_error();
-    return PyInt_FromSsize_t(size);
-}
-
-
-PyDoc_STRVAR(posix_fstat__doc__,
-"fstat(fd) -> stat result\n\n\
-Like stat(), but for an open file descriptor.");
-
-static PyObject *
-posix_fstat(PyObject *self, PyObject *args)
-{
-    int fd;
-    STRUCT_STAT st;
-    int res;
-    if (!PyArg_ParseTuple(args, "i:fstat", &fd))
-        return NULL;
-#ifdef __VMS
-    /* on OpenVMS we must ensure that all bytes are written to the file */
-    fsync(fd);
-#endif
-    if (!_PyVerify_fd(fd))
-        return posix_error();
-    Py_BEGIN_ALLOW_THREADS
-    res = FSTAT(fd, &st);
-    Py_END_ALLOW_THREADS
-    if (res != 0) {
-#ifdef MS_WINDOWS
-        return win32_error("fstat", NULL);
-#else
-        return posix_error();
-#endif
-    }
-
-    return _pystat_fromstructstat(&st);
-}
-
-
-PyDoc_STRVAR(posix_fdopen__doc__,
-"fdopen(fd [, mode='r' [, bufsize]]) -> file_object\n\n\
-Return an open file object connected to a file descriptor.");
-
-static PyObject *
-posix_fdopen(PyObject *self, PyObject *args)
-{
-    int fd;
-    char *orgmode = "r";
-    int bufsize = -1;
-    FILE *fp;
-    PyObject *f;
-    char *mode;
-    if (!PyArg_ParseTuple(args, "i|si", &fd, &orgmode, &bufsize))
-        return NULL;
-
-    /* Sanitize mode.  See fileobject.c */
-    mode = PyMem_MALLOC(strlen(orgmode)+3);
-    if (!mode) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-    strcpy(mode, orgmode);
-    if (_PyFile_SanitizeMode(mode)) {
-        PyMem_FREE(mode);
-        return NULL;
-    }
-    if (!_PyVerify_fd(fd))
-        return posix_error();
-    Py_BEGIN_ALLOW_THREADS
-#if !defined(MS_WINDOWS) && defined(HAVE_FCNTL_H)
-    if (mode[0] == 'a') {
-        /* try to make sure the O_APPEND flag is set */
-        int flags;
-        flags = fcntl(fd, F_GETFL);
-        if (flags != -1)
-            fcntl(fd, F_SETFL, flags | O_APPEND);
-        fp = fdopen(fd, mode);
-        if (fp == NULL && flags != -1)
-            /* restore old mode if fdopen failed */
-            fcntl(fd, F_SETFL, flags);
-    } else {
-        fp = fdopen(fd, mode);
-    }
-#else
-    fp = fdopen(fd, mode);
-#endif
-    Py_END_ALLOW_THREADS
-    PyMem_FREE(mode);
-    if (fp == NULL)
-        return posix_error();
-    f = PyFile_FromFile(fp, "<fdopen>", orgmode, fclose);
-    if (f != NULL)
-        PyFile_SetBufSize(f, bufsize);
-    return f;
-}
-
-PyDoc_STRVAR(posix_isatty__doc__,
-"isatty(fd) -> bool\n\n\
-Return True if the file descriptor 'fd' is an open file descriptor\n\
-connected to the slave end of a terminal.");
-
-static PyObject *
-posix_isatty(PyObject *self, PyObject *args)
-{
-    int fd;
-    if (!PyArg_ParseTuple(args, "i:isatty", &fd))
-        return NULL;
-    if (!_PyVerify_fd(fd))
-        return PyBool_FromLong(0);
-    return PyBool_FromLong(isatty(fd));
-}
-
-#ifdef HAVE_PIPE
-PyDoc_STRVAR(posix_pipe__doc__,
-"pipe() -> (read_end, write_end)\n\n\
-Create a pipe.");
-
-static PyObject *
-posix_pipe(PyObject *self, PyObject *noargs)
-{
-#if defined(PYOS_OS2)
-    HFILE read, write;
-    APIRET rc;
-
-    Py_BEGIN_ALLOW_THREADS
-    rc = DosCreatePipe( &read, &write, 4096);
-    Py_END_ALLOW_THREADS
-    if (rc != NO_ERROR)
-        return os2_error(rc);
-
-    return Py_BuildValue("(ii)", read, write);
-#else
-#if !defined(MS_WINDOWS)
-    int fds[2];
-    int res;
-    Py_BEGIN_ALLOW_THREADS
-    res = pipe(fds);
-    Py_END_ALLOW_THREADS
-    if (res != 0)
-        return posix_error();
-    return Py_BuildValue("(ii)", fds[0], fds[1]);
-#else /* MS_WINDOWS */
-    HANDLE read, write;
-    int read_fd, write_fd;
-    BOOL ok;
-    Py_BEGIN_ALLOW_THREADS
-    ok = CreatePipe(&read, &write, NULL, 0);
-    Py_END_ALLOW_THREADS
-    if (!ok)
-        return win32_error("CreatePipe", NULL);
-    read_fd = _open_osfhandle((Py_intptr_t)read, 0);
-    write_fd = _open_osfhandle((Py_intptr_t)write, 1);
-    return Py_BuildValue("(ii)", read_fd, write_fd);
-#endif /* MS_WINDOWS */
-#endif
-}
-#endif  /* HAVE_PIPE */
-
-
-#ifdef HAVE_MKFIFO
-PyDoc_STRVAR(posix_mkfifo__doc__,
-"mkfifo(filename [, mode=0666])\n\n\
-Create a FIFO (a POSIX named pipe).");
-
-static PyObject *
-posix_mkfifo(PyObject *self, PyObject *args)
-{
-    char *filename;
-    int mode = 0666;
-    int res;
-    if (!PyArg_ParseTuple(args, "s|i:mkfifo", &filename, &mode))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = mkfifo(filename, mode);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-
-#if defined(HAVE_MKNOD) && defined(HAVE_MAKEDEV)
-PyDoc_STRVAR(posix_mknod__doc__,
-"mknod(filename [, mode=0600, device])\n\n\
-Create a filesystem node (file, device special file or named pipe)\n\
-named filename. mode specifies both the permissions to use and the\n\
-type of node to be created, being combined (bitwise OR) with one of\n\
-S_IFREG, S_IFCHR, S_IFBLK, and S_IFIFO. For S_IFCHR and S_IFBLK,\n\
-device defines the newly created device special file (probably using\n\
-os.makedev()), otherwise it is ignored.");
-
-
-static PyObject *
-posix_mknod(PyObject *self, PyObject *args)
-{
-    char *filename;
-    int mode = 0600;
-    int device = 0;
-    int res;
-    if (!PyArg_ParseTuple(args, "s|ii:mknod", &filename, &mode, &device))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = mknod(filename, mode, device);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-#ifdef HAVE_DEVICE_MACROS
-PyDoc_STRVAR(posix_major__doc__,
-"major(device) -> major number\n\
-Extracts a device major number from a raw device number.");
-
-static PyObject *
-posix_major(PyObject *self, PyObject *args)
-{
-    int device;
-    if (!PyArg_ParseTuple(args, "i:major", &device))
-        return NULL;
-    return PyInt_FromLong((long)major(device));
-}
-
-PyDoc_STRVAR(posix_minor__doc__,
-"minor(device) -> minor number\n\
-Extracts a device minor number from a raw device number.");
-
-static PyObject *
-posix_minor(PyObject *self, PyObject *args)
-{
-    int device;
-    if (!PyArg_ParseTuple(args, "i:minor", &device))
-        return NULL;
-    return PyInt_FromLong((long)minor(device));
-}
-
-PyDoc_STRVAR(posix_makedev__doc__,
-"makedev(major, minor) -> device number\n\
-Composes a raw device number from the major and minor device numbers.");
-
-static PyObject *
-posix_makedev(PyObject *self, PyObject *args)
-{
-    int major, minor;
-    if (!PyArg_ParseTuple(args, "ii:makedev", &major, &minor))
-        return NULL;
-    return PyInt_FromLong((long)makedev(major, minor));
-}
-#endif /* device macros */
-
-
-#ifdef HAVE_FTRUNCATE
-PyDoc_STRVAR(posix_ftruncate__doc__,
-"ftruncate(fd, length)\n\n\
-Truncate a file to a specified length.");
-
-static PyObject *
-posix_ftruncate(PyObject *self, PyObject *args)
-{
-    int fd;
-    off_t length;
-    int res;
-    PyObject *lenobj;
-
-    if (!PyArg_ParseTuple(args, "iO:ftruncate", &fd, &lenobj))
-        return NULL;
-
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    length = PyInt_AsLong(lenobj);
-#else
-    length = PyLong_Check(lenobj) ?
-        PyLong_AsLongLong(lenobj) : PyInt_AsLong(lenobj);
-#endif
-    if (PyErr_Occurred())
-        return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    res = ftruncate(fd, length);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return posix_error();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-#ifdef HAVE_PUTENV
-PyDoc_STRVAR(posix_putenv__doc__,
-"putenv(key, value)\n\n\
-Change or add an environment variable.");
-
-/* Save putenv() parameters as values here, so we can collect them when they
- * get re-set with another call for the same key. */
-static PyObject *posix_putenv_garbage;
-
-static PyObject *
-posix_putenv(PyObject *self, PyObject *args)
-{
-    char *s1, *s2;
-    char *newenv;
-    PyObject *newstr;
-    size_t len;
-
-    if (!PyArg_ParseTuple(args, "ss:putenv", &s1, &s2))
-        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);
-    } else {
-#endif
-
-    /* XXX This can leak memory -- not easy to fix :-( */
-    len = strlen(s1) + strlen(s2) + 2;
-    /* len includes space for a trailing \0; the size arg to
-       PyString_FromStringAndSize does not count that */
-    newstr = PyString_FromStringAndSize(NULL, (int)len - 1);
-    if (newstr == NULL)
-        return PyErr_NoMemory();
-    newenv = PyString_AS_STRING(newstr);
-    PyOS_snprintf(newenv, len, "%s=%s", s1, s2);
-    if (putenv(newenv)) {
-        Py_DECREF(newstr);
-        posix_error();
-        return NULL;
-    }
-    /* Install the first arg and newstr in posix_putenv_garbage;
-     * this will cause previous value to be collected.  This has to
-     * happen after the real putenv() call because the old value
-     * was still accessible until then. */
-    if (PyDict_SetItem(posix_putenv_garbage,
-                       PyTuple_GET_ITEM(args, 0), newstr)) {
-        /* really not much we can do; just leak */
-        PyErr_Clear();
-    }
-    else {
-        Py_DECREF(newstr);
-    }
-
-#if defined(PYOS_OS2)
-    }
-#endif
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* putenv */
-
-#ifdef HAVE_UNSETENV
-PyDoc_STRVAR(posix_unsetenv__doc__,
-"unsetenv(key)\n\n\
-Delete an environment variable.");
-
-static PyObject *
-posix_unsetenv(PyObject *self, PyObject *args)
-{
-    char *s1;
-
-    if (!PyArg_ParseTuple(args, "s:unsetenv", &s1))
-        return NULL;
-
-    unsetenv(s1);
-
-    /* Remove the key from posix_putenv_garbage;
-     * this will cause it to be collected.  This has to
-     * happen after the real unsetenv() call because the
-     * old value was still accessible until then.
-     */
-    if (PyDict_DelItem(posix_putenv_garbage,
-                       PyTuple_GET_ITEM(args, 0))) {
-        /* really not much we can do; just leak */
-        PyErr_Clear();
-    }
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* unsetenv */
-
-PyDoc_STRVAR(posix_strerror__doc__,
-"strerror(code) -> string\n\n\
-Translate an error code to a message string.");
-
-static PyObject *
-posix_strerror(PyObject *self, PyObject *args)
-{
-    int code;
-    char *message;
-    if (!PyArg_ParseTuple(args, "i:strerror", &code))
-        return NULL;
-    message = strerror(code);
-    if (message == NULL) {
-        PyErr_SetString(PyExc_ValueError,
-                        "strerror() argument out of range");
-        return NULL;
-    }
-    return PyString_FromString(message);
-}
-
-
-#ifdef HAVE_SYS_WAIT_H
-
-#ifdef WCOREDUMP
-PyDoc_STRVAR(posix_WCOREDUMP__doc__,
-"WCOREDUMP(status) -> bool\n\n\
-Return True if the process returning 'status' was dumped to a core file.");
-
-static PyObject *
-posix_WCOREDUMP(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WCOREDUMP", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return PyBool_FromLong(WCOREDUMP(status));
-}
-#endif /* WCOREDUMP */
-
-#ifdef WIFCONTINUED
-PyDoc_STRVAR(posix_WIFCONTINUED__doc__,
-"WIFCONTINUED(status) -> bool\n\n\
-Return True if the process returning 'status' was continued from a\n\
-job control stop.");
-
-static PyObject *
-posix_WIFCONTINUED(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WCONTINUED", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return PyBool_FromLong(WIFCONTINUED(status));
-}
-#endif /* WIFCONTINUED */
-
-#ifdef WIFSTOPPED
-PyDoc_STRVAR(posix_WIFSTOPPED__doc__,
-"WIFSTOPPED(status) -> bool\n\n\
-Return True if the process returning 'status' was stopped.");
-
-static PyObject *
-posix_WIFSTOPPED(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WIFSTOPPED", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return PyBool_FromLong(WIFSTOPPED(status));
-}
-#endif /* WIFSTOPPED */
-
-#ifdef WIFSIGNALED
-PyDoc_STRVAR(posix_WIFSIGNALED__doc__,
-"WIFSIGNALED(status) -> bool\n\n\
-Return True if the process returning 'status' was terminated by a signal.");
-
-static PyObject *
-posix_WIFSIGNALED(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WIFSIGNALED", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return PyBool_FromLong(WIFSIGNALED(status));
-}
-#endif /* WIFSIGNALED */
-
-#ifdef WIFEXITED
-PyDoc_STRVAR(posix_WIFEXITED__doc__,
-"WIFEXITED(status) -> bool\n\n\
-Return true if the process returning 'status' exited using the exit()\n\
-system call.");
-
-static PyObject *
-posix_WIFEXITED(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WIFEXITED", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return PyBool_FromLong(WIFEXITED(status));
-}
-#endif /* WIFEXITED */
-
-#ifdef WEXITSTATUS
-PyDoc_STRVAR(posix_WEXITSTATUS__doc__,
-"WEXITSTATUS(status) -> integer\n\n\
-Return the process return code from 'status'.");
-
-static PyObject *
-posix_WEXITSTATUS(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WEXITSTATUS", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return Py_BuildValue("i", WEXITSTATUS(status));
-}
-#endif /* WEXITSTATUS */
-
-#ifdef WTERMSIG
-PyDoc_STRVAR(posix_WTERMSIG__doc__,
-"WTERMSIG(status) -> integer\n\n\
-Return the signal that terminated the process that provided the 'status'\n\
-value.");
-
-static PyObject *
-posix_WTERMSIG(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WTERMSIG", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return Py_BuildValue("i", WTERMSIG(status));
-}
-#endif /* WTERMSIG */
-
-#ifdef WSTOPSIG
-PyDoc_STRVAR(posix_WSTOPSIG__doc__,
-"WSTOPSIG(status) -> integer\n\n\
-Return the signal that stopped the process that provided\n\
-the 'status' value.");
-
-static PyObject *
-posix_WSTOPSIG(PyObject *self, PyObject *args)
-{
-    WAIT_TYPE status;
-    WAIT_STATUS_INT(status) = 0;
-
-    if (!PyArg_ParseTuple(args, "i:WSTOPSIG", &WAIT_STATUS_INT(status)))
-        return NULL;
-
-    return Py_BuildValue("i", WSTOPSIG(status));
-}
-#endif /* WSTOPSIG */
-
-#endif /* HAVE_SYS_WAIT_H */
-
-
-#if defined(HAVE_FSTATVFS) && defined(HAVE_SYS_STATVFS_H)
-#ifdef _SCO_DS
-/* SCO OpenServer 5.0 and later requires _SVID3 before it reveals the
-   needed definitions in sys/statvfs.h */
-#define _SVID3
-#endif
-#include <sys/statvfs.h>
-
-static PyObject*
-_pystatvfs_fromstructstatvfs(struct statvfs st) {
-    PyObject *v = PyStructSequence_New(&StatVFSResultType);
-    if (v == NULL)
-        return NULL;
-
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    PyStructSequence_SET_ITEM(v, 0, PyInt_FromLong((long) st.f_bsize));
-    PyStructSequence_SET_ITEM(v, 1, PyInt_FromLong((long) st.f_frsize));
-    PyStructSequence_SET_ITEM(v, 2, PyInt_FromLong((long) st.f_blocks));
-    PyStructSequence_SET_ITEM(v, 3, PyInt_FromLong((long) st.f_bfree));
-    PyStructSequence_SET_ITEM(v, 4, PyInt_FromLong((long) st.f_bavail));
-    PyStructSequence_SET_ITEM(v, 5, PyInt_FromLong((long) st.f_files));
-    PyStructSequence_SET_ITEM(v, 6, PyInt_FromLong((long) st.f_ffree));
-    PyStructSequence_SET_ITEM(v, 7, PyInt_FromLong((long) st.f_favail));
-    PyStructSequence_SET_ITEM(v, 8, PyInt_FromLong((long) st.f_flag));
-    PyStructSequence_SET_ITEM(v, 9, PyInt_FromLong((long) st.f_namemax));
-#else
-    PyStructSequence_SET_ITEM(v, 0, PyInt_FromLong((long) st.f_bsize));
-    PyStructSequence_SET_ITEM(v, 1, PyInt_FromLong((long) st.f_frsize));
-    PyStructSequence_SET_ITEM(v, 2,
-                              PyLong_FromLongLong((PY_LONG_LONG) st.f_blocks));
-    PyStructSequence_SET_ITEM(v, 3,
-                              PyLong_FromLongLong((PY_LONG_LONG) st.f_bfree));
-    PyStructSequence_SET_ITEM(v, 4,
-                              PyLong_FromLongLong((PY_LONG_LONG) st.f_bavail));
-    PyStructSequence_SET_ITEM(v, 5,
-                              PyLong_FromLongLong((PY_LONG_LONG) st.f_files));
-    PyStructSequence_SET_ITEM(v, 6,
-                              PyLong_FromLongLong((PY_LONG_LONG) st.f_ffree));
-    PyStructSequence_SET_ITEM(v, 7,
-                              PyLong_FromLongLong((PY_LONG_LONG) st.f_favail));
-    PyStructSequence_SET_ITEM(v, 8, PyInt_FromLong((long) st.f_flag));
-    PyStructSequence_SET_ITEM(v, 9, PyInt_FromLong((long) st.f_namemax));
-#endif
-
-    return v;
-}
-
-PyDoc_STRVAR(posix_fstatvfs__doc__,
-"fstatvfs(fd) -> statvfs result\n\n\
-Perform an fstatvfs system call on the given fd.");
-
-static PyObject *
-posix_fstatvfs(PyObject *self, PyObject *args)
-{
-    int fd, res;
-    struct statvfs st;
-
-    if (!PyArg_ParseTuple(args, "i:fstatvfs", &fd))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = fstatvfs(fd, &st);
-    Py_END_ALLOW_THREADS
-    if (res != 0)
-        return posix_error();
-
-    return _pystatvfs_fromstructstatvfs(st);
-}
-#endif /* HAVE_FSTATVFS && HAVE_SYS_STATVFS_H */
-
-
-#if defined(HAVE_STATVFS) && defined(HAVE_SYS_STATVFS_H)
-#include <sys/statvfs.h>
-
-PyDoc_STRVAR(posix_statvfs__doc__,
-"statvfs(path) -> statvfs result\n\n\
-Perform a statvfs system call on the given path.");
-
-static PyObject *
-posix_statvfs(PyObject *self, PyObject *args)
-{
-    char *path;
-    int res;
-    struct statvfs st;
-    if (!PyArg_ParseTuple(args, "s:statvfs", &path))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = statvfs(path, &st);
-    Py_END_ALLOW_THREADS
-    if (res != 0)
-        return posix_error_with_filename(path);
-
-    return _pystatvfs_fromstructstatvfs(st);
-}
-#endif /* HAVE_STATVFS */
-
-
-#ifdef HAVE_TEMPNAM
-PyDoc_STRVAR(posix_tempnam__doc__,
-"tempnam([dir[, prefix]]) -> string\n\n\
-Return a unique name for a temporary file.\n\
-The directory and a prefix may be specified as strings; they may be omitted\n\
-or None if not needed.");
-
-static PyObject *
-posix_tempnam(PyObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-    char *dir = NULL;
-    char *pfx = NULL;
-    char *name;
-
-    if (!PyArg_ParseTuple(args, "|zz:tempnam", &dir, &pfx))
-    return NULL;
-
-    if (PyErr_Warn(PyExc_RuntimeWarning,
-                   "tempnam is a potential security risk to your program") < 0)
-        return NULL;
-
-    if (PyErr_WarnPy3k("tempnam has been removed in 3.x; "
-                       "use the tempfile module", 1) < 0)
-        return NULL;
-
-#ifdef MS_WINDOWS
-    name = _tempnam(dir, pfx);
-#else
-    name = tempnam(dir, pfx);
-#endif
-    if (name == NULL)
-        return PyErr_NoMemory();
-    result = PyString_FromString(name);
-    free(name);
-    return result;
-}
-#endif
-
-
-#ifdef HAVE_TMPFILE
-PyDoc_STRVAR(posix_tmpfile__doc__,
-"tmpfile() -> file object\n\n\
-Create a temporary file with no directory entries.");
-
-static PyObject *
-posix_tmpfile(PyObject *self, PyObject *noargs)
-{
-    FILE *fp;
-
-    if (PyErr_WarnPy3k("tmpfile has been removed in 3.x; "
-                       "use the tempfile module", 1) < 0)
-        return NULL;
-
-    fp = tmpfile();
-    if (fp == NULL)
-        return posix_error();
-    return PyFile_FromFile(fp, "<tmpfile>", "w+b", fclose);
-}
-#endif
-
-
-#ifdef HAVE_TMPNAM
-PyDoc_STRVAR(posix_tmpnam__doc__,
-"tmpnam() -> string\n\n\
-Return a unique name for a temporary file.");
-
-static PyObject *
-posix_tmpnam(PyObject *self, PyObject *noargs)
-{
-    char buffer[L_tmpnam];
-    char *name;
-
-    if (PyErr_Warn(PyExc_RuntimeWarning,
-                   "tmpnam is a potential security risk to your program") < 0)
-        return NULL;
-
-    if (PyErr_WarnPy3k("tmpnam has been removed in 3.x; "
-                       "use the tempfile module", 1) < 0)
-        return NULL;
-
-#ifdef USE_TMPNAM_R
-    name = tmpnam_r(buffer);
-#else
-    name = tmpnam(buffer);
-#endif
-    if (name == NULL) {
-        PyObject *err = Py_BuildValue("is", 0,
-#ifdef USE_TMPNAM_R
-                                      "unexpected NULL from tmpnam_r"
-#else
-                                      "unexpected NULL from tmpnam"
-#endif
-                                      );
-        PyErr_SetObject(PyExc_OSError, err);
-        Py_XDECREF(err);
-        return NULL;
-    }
-    return PyString_FromString(buffer);
-}
-#endif
-
-
-/* This is used for fpathconf(), pathconf(), confstr() and sysconf().
- * It maps strings representing configuration variable names to
- * integer values, allowing those functions to be called with the
- * magic names instead of polluting the module's namespace with tons of
- * rarely-used constants.  There are three separate tables that use
- * these definitions.
- *
- * This code is always included, even if none of the interfaces that
- * need it are included.  The #if hackery needed to avoid it would be
- * sufficiently pervasive that it's not worth the loss of readability.
- */
-struct constdef {
-    char *name;
-    long value;
-};
-
-static int
-conv_confname(PyObject *arg, int *valuep, struct constdef *table,
-              size_t tablesize)
-{
-    if (PyInt_Check(arg)) {
-        *valuep = PyInt_AS_LONG(arg);
-        return 1;
-    }
-    if (PyString_Check(arg)) {
-        /* look up the value in the table using a binary search */
-        size_t lo = 0;
-        size_t mid;
-        size_t hi = tablesize;
-        int cmp;
-        char *confname = PyString_AS_STRING(arg);
-        while (lo < hi) {
-            mid = (lo + hi) / 2;
-            cmp = strcmp(confname, table[mid].name);
-            if (cmp < 0)
-                hi = mid;
-            else if (cmp > 0)
-                lo = mid + 1;
-            else {
-                *valuep = table[mid].value;
-                return 1;
-            }
-        }
-        PyErr_SetString(PyExc_ValueError, "unrecognized configuration name");
-    }
-    else
-        PyErr_SetString(PyExc_TypeError,
-                        "configuration names must be strings or integers");
-    return 0;
-}
-
-
-#if defined(HAVE_FPATHCONF) || defined(HAVE_PATHCONF)
-static struct constdef  posix_constants_pathconf[] = {
-#ifdef _PC_ABI_AIO_XFER_MAX
-    {"PC_ABI_AIO_XFER_MAX",     _PC_ABI_AIO_XFER_MAX},
-#endif
-#ifdef _PC_ABI_ASYNC_IO
-    {"PC_ABI_ASYNC_IO", _PC_ABI_ASYNC_IO},
-#endif
-#ifdef _PC_ASYNC_IO
-    {"PC_ASYNC_IO",     _PC_ASYNC_IO},
-#endif
-#ifdef _PC_CHOWN_RESTRICTED
-    {"PC_CHOWN_RESTRICTED",     _PC_CHOWN_RESTRICTED},
-#endif
-#ifdef _PC_FILESIZEBITS
-    {"PC_FILESIZEBITS", _PC_FILESIZEBITS},
-#endif
-#ifdef _PC_LAST
-    {"PC_LAST", _PC_LAST},
-#endif
-#ifdef _PC_LINK_MAX
-    {"PC_LINK_MAX",     _PC_LINK_MAX},
-#endif
-#ifdef _PC_MAX_CANON
-    {"PC_MAX_CANON",    _PC_MAX_CANON},
-#endif
-#ifdef _PC_MAX_INPUT
-    {"PC_MAX_INPUT",    _PC_MAX_INPUT},
-#endif
-#ifdef _PC_NAME_MAX
-    {"PC_NAME_MAX",     _PC_NAME_MAX},
-#endif
-#ifdef _PC_NO_TRUNC
-    {"PC_NO_TRUNC",     _PC_NO_TRUNC},
-#endif
-#ifdef _PC_PATH_MAX
-    {"PC_PATH_MAX",     _PC_PATH_MAX},
-#endif
-#ifdef _PC_PIPE_BUF
-    {"PC_PIPE_BUF",     _PC_PIPE_BUF},
-#endif
-#ifdef _PC_PRIO_IO
-    {"PC_PRIO_IO",      _PC_PRIO_IO},
-#endif
-#ifdef _PC_SOCK_MAXBUF
-    {"PC_SOCK_MAXBUF",  _PC_SOCK_MAXBUF},
-#endif
-#ifdef _PC_SYNC_IO
-    {"PC_SYNC_IO",      _PC_SYNC_IO},
-#endif
-#ifdef _PC_VDISABLE
-    {"PC_VDISABLE",     _PC_VDISABLE},
-#endif
-};
-
-static int
-conv_path_confname(PyObject *arg, int *valuep)
-{
-    return conv_confname(arg, valuep, posix_constants_pathconf,
-                         sizeof(posix_constants_pathconf)
-                           / sizeof(struct constdef));
-}
-#endif
-
-#ifdef HAVE_FPATHCONF
-PyDoc_STRVAR(posix_fpathconf__doc__,
-"fpathconf(fd, name) -> integer\n\n\
-Return the configuration limit name for the file descriptor fd.\n\
-If there is no limit, return -1.");
-
-static PyObject *
-posix_fpathconf(PyObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-    int name, fd;
-
-    if (PyArg_ParseTuple(args, "iO&:fpathconf", &fd,
-                         conv_path_confname, &name)) {
-        long limit;
-
-        errno = 0;
-        limit = fpathconf(fd, name);
-        if (limit == -1 && errno != 0)
-            posix_error();
-        else
-            result = PyInt_FromLong(limit);
-    }
-    return result;
-}
-#endif
-
-
-#ifdef HAVE_PATHCONF
-PyDoc_STRVAR(posix_pathconf__doc__,
-"pathconf(path, name) -> integer\n\n\
-Return the configuration limit name for the file or directory path.\n\
-If there is no limit, return -1.");
-
-static PyObject *
-posix_pathconf(PyObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-    int name;
-    char *path;
-
-    if (PyArg_ParseTuple(args, "sO&:pathconf", &path,
-                         conv_path_confname, &name)) {
-    long limit;
-
-    errno = 0;
-    limit = pathconf(path, name);
-    if (limit == -1 && errno != 0) {
-        if (errno == EINVAL)
-            /* could be a path or name problem */
-            posix_error();
-        else
-            posix_error_with_filename(path);
-    }
-    else
-        result = PyInt_FromLong(limit);
-    }
-    return result;
-}
-#endif
-
-#ifdef HAVE_CONFSTR
-static struct constdef posix_constants_confstr[] = {
-#ifdef _CS_ARCHITECTURE
-    {"CS_ARCHITECTURE", _CS_ARCHITECTURE},
-#endif
-#ifdef _CS_HOSTNAME
-    {"CS_HOSTNAME",     _CS_HOSTNAME},
-#endif
-#ifdef _CS_HW_PROVIDER
-    {"CS_HW_PROVIDER",  _CS_HW_PROVIDER},
-#endif
-#ifdef _CS_HW_SERIAL
-    {"CS_HW_SERIAL",    _CS_HW_SERIAL},
-#endif
-#ifdef _CS_INITTAB_NAME
-    {"CS_INITTAB_NAME", _CS_INITTAB_NAME},
-#endif
-#ifdef _CS_LFS64_CFLAGS
-    {"CS_LFS64_CFLAGS", _CS_LFS64_CFLAGS},
-#endif
-#ifdef _CS_LFS64_LDFLAGS
-    {"CS_LFS64_LDFLAGS",        _CS_LFS64_LDFLAGS},
-#endif
-#ifdef _CS_LFS64_LIBS
-    {"CS_LFS64_LIBS",   _CS_LFS64_LIBS},
-#endif
-#ifdef _CS_LFS64_LINTFLAGS
-    {"CS_LFS64_LINTFLAGS",      _CS_LFS64_LINTFLAGS},
-#endif
-#ifdef _CS_LFS_CFLAGS
-    {"CS_LFS_CFLAGS",   _CS_LFS_CFLAGS},
-#endif
-#ifdef _CS_LFS_LDFLAGS
-    {"CS_LFS_LDFLAGS",  _CS_LFS_LDFLAGS},
-#endif
-#ifdef _CS_LFS_LIBS
-    {"CS_LFS_LIBS",     _CS_LFS_LIBS},
-#endif
-#ifdef _CS_LFS_LINTFLAGS
-    {"CS_LFS_LINTFLAGS",        _CS_LFS_LINTFLAGS},
-#endif
-#ifdef _CS_MACHINE
-    {"CS_MACHINE",      _CS_MACHINE},
-#endif
-#ifdef _CS_PATH
-    {"CS_PATH", _CS_PATH},
-#endif
-#ifdef _CS_RELEASE
-    {"CS_RELEASE",      _CS_RELEASE},
-#endif
-#ifdef _CS_SRPC_DOMAIN
-    {"CS_SRPC_DOMAIN",  _CS_SRPC_DOMAIN},
-#endif
-#ifdef _CS_SYSNAME
-    {"CS_SYSNAME",      _CS_SYSNAME},
-#endif
-#ifdef _CS_VERSION
-    {"CS_VERSION",      _CS_VERSION},
-#endif
-#ifdef _CS_XBS5_ILP32_OFF32_CFLAGS
-    {"CS_XBS5_ILP32_OFF32_CFLAGS",      _CS_XBS5_ILP32_OFF32_CFLAGS},
-#endif
-#ifdef _CS_XBS5_ILP32_OFF32_LDFLAGS
-    {"CS_XBS5_ILP32_OFF32_LDFLAGS",     _CS_XBS5_ILP32_OFF32_LDFLAGS},
-#endif
-#ifdef _CS_XBS5_ILP32_OFF32_LIBS
-    {"CS_XBS5_ILP32_OFF32_LIBS",        _CS_XBS5_ILP32_OFF32_LIBS},
-#endif
-#ifdef _CS_XBS5_ILP32_OFF32_LINTFLAGS
-    {"CS_XBS5_ILP32_OFF32_LINTFLAGS",   _CS_XBS5_ILP32_OFF32_LINTFLAGS},
-#endif
-#ifdef _CS_XBS5_ILP32_OFFBIG_CFLAGS
-    {"CS_XBS5_ILP32_OFFBIG_CFLAGS",     _CS_XBS5_ILP32_OFFBIG_CFLAGS},
-#endif
-#ifdef _CS_XBS5_ILP32_OFFBIG_LDFLAGS
-    {"CS_XBS5_ILP32_OFFBIG_LDFLAGS",    _CS_XBS5_ILP32_OFFBIG_LDFLAGS},
-#endif
-#ifdef _CS_XBS5_ILP32_OFFBIG_LIBS
-    {"CS_XBS5_ILP32_OFFBIG_LIBS",       _CS_XBS5_ILP32_OFFBIG_LIBS},
-#endif
-#ifdef _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
-    {"CS_XBS5_ILP32_OFFBIG_LINTFLAGS",  _CS_XBS5_ILP32_OFFBIG_LINTFLAGS},
-#endif
-#ifdef _CS_XBS5_LP64_OFF64_CFLAGS
-    {"CS_XBS5_LP64_OFF64_CFLAGS",       _CS_XBS5_LP64_OFF64_CFLAGS},
-#endif
-#ifdef _CS_XBS5_LP64_OFF64_LDFLAGS
-    {"CS_XBS5_LP64_OFF64_LDFLAGS",      _CS_XBS5_LP64_OFF64_LDFLAGS},
-#endif
-#ifdef _CS_XBS5_LP64_OFF64_LIBS
-    {"CS_XBS5_LP64_OFF64_LIBS", _CS_XBS5_LP64_OFF64_LIBS},
-#endif
-#ifdef _CS_XBS5_LP64_OFF64_LINTFLAGS
-    {"CS_XBS5_LP64_OFF64_LINTFLAGS",    _CS_XBS5_LP64_OFF64_LINTFLAGS},
-#endif
-#ifdef _CS_XBS5_LPBIG_OFFBIG_CFLAGS
-    {"CS_XBS5_LPBIG_OFFBIG_CFLAGS",     _CS_XBS5_LPBIG_OFFBIG_CFLAGS},
-#endif
-#ifdef _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
-    {"CS_XBS5_LPBIG_OFFBIG_LDFLAGS",    _CS_XBS5_LPBIG_OFFBIG_LDFLAGS},
-#endif
-#ifdef _CS_XBS5_LPBIG_OFFBIG_LIBS
-    {"CS_XBS5_LPBIG_OFFBIG_LIBS",       _CS_XBS5_LPBIG_OFFBIG_LIBS},
-#endif
-#ifdef _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
-    {"CS_XBS5_LPBIG_OFFBIG_LINTFLAGS",  _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS},
-#endif
-#ifdef _MIPS_CS_AVAIL_PROCESSORS
-    {"MIPS_CS_AVAIL_PROCESSORS",        _MIPS_CS_AVAIL_PROCESSORS},
-#endif
-#ifdef _MIPS_CS_BASE
-    {"MIPS_CS_BASE",    _MIPS_CS_BASE},
-#endif
-#ifdef _MIPS_CS_HOSTID
-    {"MIPS_CS_HOSTID",  _MIPS_CS_HOSTID},
-#endif
-#ifdef _MIPS_CS_HW_NAME
-    {"MIPS_CS_HW_NAME", _MIPS_CS_HW_NAME},
-#endif
-#ifdef _MIPS_CS_NUM_PROCESSORS
-    {"MIPS_CS_NUM_PROCESSORS",  _MIPS_CS_NUM_PROCESSORS},
-#endif
-#ifdef _MIPS_CS_OSREL_MAJ
-    {"MIPS_CS_OSREL_MAJ",       _MIPS_CS_OSREL_MAJ},
-#endif
-#ifdef _MIPS_CS_OSREL_MIN
-    {"MIPS_CS_OSREL_MIN",       _MIPS_CS_OSREL_MIN},
-#endif
-#ifdef _MIPS_CS_OSREL_PATCH
-    {"MIPS_CS_OSREL_PATCH",     _MIPS_CS_OSREL_PATCH},
-#endif
-#ifdef _MIPS_CS_OS_NAME
-    {"MIPS_CS_OS_NAME", _MIPS_CS_OS_NAME},
-#endif
-#ifdef _MIPS_CS_OS_PROVIDER
-    {"MIPS_CS_OS_PROVIDER",     _MIPS_CS_OS_PROVIDER},
-#endif
-#ifdef _MIPS_CS_PROCESSORS
-    {"MIPS_CS_PROCESSORS",      _MIPS_CS_PROCESSORS},
-#endif
-#ifdef _MIPS_CS_SERIAL
-    {"MIPS_CS_SERIAL",  _MIPS_CS_SERIAL},
-#endif
-#ifdef _MIPS_CS_VENDOR
-    {"MIPS_CS_VENDOR",  _MIPS_CS_VENDOR},
-#endif
-};
-
-static int
-conv_confstr_confname(PyObject *arg, int *valuep)
-{
-    return conv_confname(arg, valuep, posix_constants_confstr,
-                         sizeof(posix_constants_confstr)
-                           / sizeof(struct constdef));
-}
-
-PyDoc_STRVAR(posix_confstr__doc__,
-"confstr(name) -> string\n\n\
-Return a string-valued system configuration variable.");
-
-static PyObject *
-posix_confstr(PyObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-    int name;
-    char buffer[256];
-
-    if (PyArg_ParseTuple(args, "O&:confstr", conv_confstr_confname, &name)) {
-    int len;
-
-    errno = 0;
-    len = confstr(name, buffer, sizeof(buffer));
-    if (len == 0) {
-        if (errno) {
-        posix_error();
-        }
-        else {
-        result = Py_None;
-        Py_INCREF(Py_None);
-        }
-    }
-    else {
-        if ((unsigned int)len >= sizeof(buffer)) {
-        result = PyString_FromStringAndSize(NULL, len-1);
-        if (result != NULL)
-            confstr(name, PyString_AS_STRING(result), len);
-        }
-        else
-        result = PyString_FromStringAndSize(buffer, len-1);
-    }
-    }
-    return result;
-}
-#endif
-
-
-#ifdef HAVE_SYSCONF
-static struct constdef posix_constants_sysconf[] = {
-#ifdef _SC_2_CHAR_TERM
-    {"SC_2_CHAR_TERM",  _SC_2_CHAR_TERM},
-#endif
-#ifdef _SC_2_C_BIND
-    {"SC_2_C_BIND",     _SC_2_C_BIND},
-#endif
-#ifdef _SC_2_C_DEV
-    {"SC_2_C_DEV",      _SC_2_C_DEV},
-#endif
-#ifdef _SC_2_C_VERSION
-    {"SC_2_C_VERSION",  _SC_2_C_VERSION},
-#endif
-#ifdef _SC_2_FORT_DEV
-    {"SC_2_FORT_DEV",   _SC_2_FORT_DEV},
-#endif
-#ifdef _SC_2_FORT_RUN
-    {"SC_2_FORT_RUN",   _SC_2_FORT_RUN},
-#endif
-#ifdef _SC_2_LOCALEDEF
-    {"SC_2_LOCALEDEF",  _SC_2_LOCALEDEF},
-#endif
-#ifdef _SC_2_SW_DEV
-    {"SC_2_SW_DEV",     _SC_2_SW_DEV},
-#endif
-#ifdef _SC_2_UPE
-    {"SC_2_UPE",        _SC_2_UPE},
-#endif
-#ifdef _SC_2_VERSION
-    {"SC_2_VERSION",    _SC_2_VERSION},
-#endif
-#ifdef _SC_ABI_ASYNCHRONOUS_IO
-    {"SC_ABI_ASYNCHRONOUS_IO",  _SC_ABI_ASYNCHRONOUS_IO},
-#endif
-#ifdef _SC_ACL
-    {"SC_ACL",  _SC_ACL},
-#endif
-#ifdef _SC_AIO_LISTIO_MAX
-    {"SC_AIO_LISTIO_MAX",       _SC_AIO_LISTIO_MAX},
-#endif
-#ifdef _SC_AIO_MAX
-    {"SC_AIO_MAX",      _SC_AIO_MAX},
-#endif
-#ifdef _SC_AIO_PRIO_DELTA_MAX
-    {"SC_AIO_PRIO_DELTA_MAX",   _SC_AIO_PRIO_DELTA_MAX},
-#endif
-#ifdef _SC_ARG_MAX
-    {"SC_ARG_MAX",      _SC_ARG_MAX},
-#endif
-#ifdef _SC_ASYNCHRONOUS_IO
-    {"SC_ASYNCHRONOUS_IO",      _SC_ASYNCHRONOUS_IO},
-#endif
-#ifdef _SC_ATEXIT_MAX
-    {"SC_ATEXIT_MAX",   _SC_ATEXIT_MAX},
-#endif
-#ifdef _SC_AUDIT
-    {"SC_AUDIT",        _SC_AUDIT},
-#endif
-#ifdef _SC_AVPHYS_PAGES
-    {"SC_AVPHYS_PAGES", _SC_AVPHYS_PAGES},
-#endif
-#ifdef _SC_BC_BASE_MAX
-    {"SC_BC_BASE_MAX",  _SC_BC_BASE_MAX},
-#endif
-#ifdef _SC_BC_DIM_MAX
-    {"SC_BC_DIM_MAX",   _SC_BC_DIM_MAX},
-#endif
-#ifdef _SC_BC_SCALE_MAX
-    {"SC_BC_SCALE_MAX", _SC_BC_SCALE_MAX},
-#endif
-#ifdef _SC_BC_STRING_MAX
-    {"SC_BC_STRING_MAX",        _SC_BC_STRING_MAX},
-#endif
-#ifdef _SC_CAP
-    {"SC_CAP",  _SC_CAP},
-#endif
-#ifdef _SC_CHARCLASS_NAME_MAX
-    {"SC_CHARCLASS_NAME_MAX",   _SC_CHARCLASS_NAME_MAX},
-#endif
-#ifdef _SC_CHAR_BIT
-    {"SC_CHAR_BIT",     _SC_CHAR_BIT},
-#endif
-#ifdef _SC_CHAR_MAX
-    {"SC_CHAR_MAX",     _SC_CHAR_MAX},
-#endif
-#ifdef _SC_CHAR_MIN
-    {"SC_CHAR_MIN",     _SC_CHAR_MIN},
-#endif
-#ifdef _SC_CHILD_MAX
-    {"SC_CHILD_MAX",    _SC_CHILD_MAX},
-#endif
-#ifdef _SC_CLK_TCK
-    {"SC_CLK_TCK",      _SC_CLK_TCK},
-#endif
-#ifdef _SC_COHER_BLKSZ
-    {"SC_COHER_BLKSZ",  _SC_COHER_BLKSZ},
-#endif
-#ifdef _SC_COLL_WEIGHTS_MAX
-    {"SC_COLL_WEIGHTS_MAX",     _SC_COLL_WEIGHTS_MAX},
-#endif
-#ifdef _SC_DCACHE_ASSOC
-    {"SC_DCACHE_ASSOC", _SC_DCACHE_ASSOC},
-#endif
-#ifdef _SC_DCACHE_BLKSZ
-    {"SC_DCACHE_BLKSZ", _SC_DCACHE_BLKSZ},
-#endif
-#ifdef _SC_DCACHE_LINESZ
-    {"SC_DCACHE_LINESZ",        _SC_DCACHE_LINESZ},
-#endif
-#ifdef _SC_DCACHE_SZ
-    {"SC_DCACHE_SZ",    _SC_DCACHE_SZ},
-#endif
-#ifdef _SC_DCACHE_TBLKSZ
-    {"SC_DCACHE_TBLKSZ",        _SC_DCACHE_TBLKSZ},
-#endif
-#ifdef _SC_DELAYTIMER_MAX
-    {"SC_DELAYTIMER_MAX",       _SC_DELAYTIMER_MAX},
-#endif
-#ifdef _SC_EQUIV_CLASS_MAX
-    {"SC_EQUIV_CLASS_MAX",      _SC_EQUIV_CLASS_MAX},
-#endif
-#ifdef _SC_EXPR_NEST_MAX
-    {"SC_EXPR_NEST_MAX",        _SC_EXPR_NEST_MAX},
-#endif
-#ifdef _SC_FSYNC
-    {"SC_FSYNC",        _SC_FSYNC},
-#endif
-#ifdef _SC_GETGR_R_SIZE_MAX
-    {"SC_GETGR_R_SIZE_MAX",     _SC_GETGR_R_SIZE_MAX},
-#endif
-#ifdef _SC_GETPW_R_SIZE_MAX
-    {"SC_GETPW_R_SIZE_MAX",     _SC_GETPW_R_SIZE_MAX},
-#endif
-#ifdef _SC_ICACHE_ASSOC
-    {"SC_ICACHE_ASSOC", _SC_ICACHE_ASSOC},
-#endif
-#ifdef _SC_ICACHE_BLKSZ
-    {"SC_ICACHE_BLKSZ", _SC_ICACHE_BLKSZ},
-#endif
-#ifdef _SC_ICACHE_LINESZ
-    {"SC_ICACHE_LINESZ",        _SC_ICACHE_LINESZ},
-#endif
-#ifdef _SC_ICACHE_SZ
-    {"SC_ICACHE_SZ",    _SC_ICACHE_SZ},
-#endif
-#ifdef _SC_INF
-    {"SC_INF",  _SC_INF},
-#endif
-#ifdef _SC_INT_MAX
-    {"SC_INT_MAX",      _SC_INT_MAX},
-#endif
-#ifdef _SC_INT_MIN
-    {"SC_INT_MIN",      _SC_INT_MIN},
-#endif
-#ifdef _SC_IOV_MAX
-    {"SC_IOV_MAX",      _SC_IOV_MAX},
-#endif
-#ifdef _SC_IP_SECOPTS
-    {"SC_IP_SECOPTS",   _SC_IP_SECOPTS},
-#endif
-#ifdef _SC_JOB_CONTROL
-    {"SC_JOB_CONTROL",  _SC_JOB_CONTROL},
-#endif
-#ifdef _SC_KERN_POINTERS
-    {"SC_KERN_POINTERS",        _SC_KERN_POINTERS},
-#endif
-#ifdef _SC_KERN_SIM
-    {"SC_KERN_SIM",     _SC_KERN_SIM},
-#endif
-#ifdef _SC_LINE_MAX
-    {"SC_LINE_MAX",     _SC_LINE_MAX},
-#endif
-#ifdef _SC_LOGIN_NAME_MAX
-    {"SC_LOGIN_NAME_MAX",       _SC_LOGIN_NAME_MAX},
-#endif
-#ifdef _SC_LOGNAME_MAX
-    {"SC_LOGNAME_MAX",  _SC_LOGNAME_MAX},
-#endif
-#ifdef _SC_LONG_BIT
-    {"SC_LONG_BIT",     _SC_LONG_BIT},
-#endif
-#ifdef _SC_MAC
-    {"SC_MAC",  _SC_MAC},
-#endif
-#ifdef _SC_MAPPED_FILES
-    {"SC_MAPPED_FILES", _SC_MAPPED_FILES},
-#endif
-#ifdef _SC_MAXPID
-    {"SC_MAXPID",       _SC_MAXPID},
-#endif
-#ifdef _SC_MB_LEN_MAX
-    {"SC_MB_LEN_MAX",   _SC_MB_LEN_MAX},
-#endif
-#ifdef _SC_MEMLOCK
-    {"SC_MEMLOCK",      _SC_MEMLOCK},
-#endif
-#ifdef _SC_MEMLOCK_RANGE
-    {"SC_MEMLOCK_RANGE",        _SC_MEMLOCK_RANGE},
-#endif
-#ifdef _SC_MEMORY_PROTECTION
-    {"SC_MEMORY_PROTECTION",    _SC_MEMORY_PROTECTION},
-#endif
-#ifdef _SC_MESSAGE_PASSING
-    {"SC_MESSAGE_PASSING",      _SC_MESSAGE_PASSING},
-#endif
-#ifdef _SC_MMAP_FIXED_ALIGNMENT
-    {"SC_MMAP_FIXED_ALIGNMENT", _SC_MMAP_FIXED_ALIGNMENT},
-#endif
-#ifdef _SC_MQ_OPEN_MAX
-    {"SC_MQ_OPEN_MAX",  _SC_MQ_OPEN_MAX},
-#endif
-#ifdef _SC_MQ_PRIO_MAX
-    {"SC_MQ_PRIO_MAX",  _SC_MQ_PRIO_MAX},
-#endif
-#ifdef _SC_NACLS_MAX
-    {"SC_NACLS_MAX",    _SC_NACLS_MAX},
-#endif
-#ifdef _SC_NGROUPS_MAX
-    {"SC_NGROUPS_MAX",  _SC_NGROUPS_MAX},
-#endif
-#ifdef _SC_NL_ARGMAX
-    {"SC_NL_ARGMAX",    _SC_NL_ARGMAX},
-#endif
-#ifdef _SC_NL_LANGMAX
-    {"SC_NL_LANGMAX",   _SC_NL_LANGMAX},
-#endif
-#ifdef _SC_NL_MSGMAX
-    {"SC_NL_MSGMAX",    _SC_NL_MSGMAX},
-#endif
-#ifdef _SC_NL_NMAX
-    {"SC_NL_NMAX",      _SC_NL_NMAX},
-#endif
-#ifdef _SC_NL_SETMAX
-    {"SC_NL_SETMAX",    _SC_NL_SETMAX},
-#endif
-#ifdef _SC_NL_TEXTMAX
-    {"SC_NL_TEXTMAX",   _SC_NL_TEXTMAX},
-#endif
-#ifdef _SC_NPROCESSORS_CONF
-    {"SC_NPROCESSORS_CONF",     _SC_NPROCESSORS_CONF},
-#endif
-#ifdef _SC_NPROCESSORS_ONLN
-    {"SC_NPROCESSORS_ONLN",     _SC_NPROCESSORS_ONLN},
-#endif
-#ifdef _SC_NPROC_CONF
-    {"SC_NPROC_CONF",   _SC_NPROC_CONF},
-#endif
-#ifdef _SC_NPROC_ONLN
-    {"SC_NPROC_ONLN",   _SC_NPROC_ONLN},
-#endif
-#ifdef _SC_NZERO
-    {"SC_NZERO",        _SC_NZERO},
-#endif
-#ifdef _SC_OPEN_MAX
-    {"SC_OPEN_MAX",     _SC_OPEN_MAX},
-#endif
-#ifdef _SC_PAGESIZE
-    {"SC_PAGESIZE",     _SC_PAGESIZE},
-#endif
-#ifdef _SC_PAGE_SIZE
-    {"SC_PAGE_SIZE",    _SC_PAGE_SIZE},
-#endif
-#ifdef _SC_PASS_MAX
-    {"SC_PASS_MAX",     _SC_PASS_MAX},
-#endif
-#ifdef _SC_PHYS_PAGES
-    {"SC_PHYS_PAGES",   _SC_PHYS_PAGES},
-#endif
-#ifdef _SC_PII
-    {"SC_PII",  _SC_PII},
-#endif
-#ifdef _SC_PII_INTERNET
-    {"SC_PII_INTERNET", _SC_PII_INTERNET},
-#endif
-#ifdef _SC_PII_INTERNET_DGRAM
-    {"SC_PII_INTERNET_DGRAM",   _SC_PII_INTERNET_DGRAM},
-#endif
-#ifdef _SC_PII_INTERNET_STREAM
-    {"SC_PII_INTERNET_STREAM",  _SC_PII_INTERNET_STREAM},
-#endif
-#ifdef _SC_PII_OSI
-    {"SC_PII_OSI",      _SC_PII_OSI},
-#endif
-#ifdef _SC_PII_OSI_CLTS
-    {"SC_PII_OSI_CLTS", _SC_PII_OSI_CLTS},
-#endif
-#ifdef _SC_PII_OSI_COTS
-    {"SC_PII_OSI_COTS", _SC_PII_OSI_COTS},
-#endif
-#ifdef _SC_PII_OSI_M
-    {"SC_PII_OSI_M",    _SC_PII_OSI_M},
-#endif
-#ifdef _SC_PII_SOCKET
-    {"SC_PII_SOCKET",   _SC_PII_SOCKET},
-#endif
-#ifdef _SC_PII_XTI
-    {"SC_PII_XTI",      _SC_PII_XTI},
-#endif
-#ifdef _SC_POLL
-    {"SC_POLL", _SC_POLL},
-#endif
-#ifdef _SC_PRIORITIZED_IO
-    {"SC_PRIORITIZED_IO",       _SC_PRIORITIZED_IO},
-#endif
-#ifdef _SC_PRIORITY_SCHEDULING
-    {"SC_PRIORITY_SCHEDULING",  _SC_PRIORITY_SCHEDULING},
-#endif
-#ifdef _SC_REALTIME_SIGNALS
-    {"SC_REALTIME_SIGNALS",     _SC_REALTIME_SIGNALS},
-#endif
-#ifdef _SC_RE_DUP_MAX
-    {"SC_RE_DUP_MAX",   _SC_RE_DUP_MAX},
-#endif
-#ifdef _SC_RTSIG_MAX
-    {"SC_RTSIG_MAX",    _SC_RTSIG_MAX},
-#endif
-#ifdef _SC_SAVED_IDS
-    {"SC_SAVED_IDS",    _SC_SAVED_IDS},
-#endif
-#ifdef _SC_SCHAR_MAX
-    {"SC_SCHAR_MAX",    _SC_SCHAR_MAX},
-#endif
-#ifdef _SC_SCHAR_MIN
-    {"SC_SCHAR_MIN",    _SC_SCHAR_MIN},
-#endif
-#ifdef _SC_SELECT
-    {"SC_SELECT",       _SC_SELECT},
-#endif
-#ifdef _SC_SEMAPHORES
-    {"SC_SEMAPHORES",   _SC_SEMAPHORES},
-#endif
-#ifdef _SC_SEM_NSEMS_MAX
-    {"SC_SEM_NSEMS_MAX",        _SC_SEM_NSEMS_MAX},
-#endif
-#ifdef _SC_SEM_VALUE_MAX
-    {"SC_SEM_VALUE_MAX",        _SC_SEM_VALUE_MAX},
-#endif
-#ifdef _SC_SHARED_MEMORY_OBJECTS
-    {"SC_SHARED_MEMORY_OBJECTS",        _SC_SHARED_MEMORY_OBJECTS},
-#endif
-#ifdef _SC_SHRT_MAX
-    {"SC_SHRT_MAX",     _SC_SHRT_MAX},
-#endif
-#ifdef _SC_SHRT_MIN
-    {"SC_SHRT_MIN",     _SC_SHRT_MIN},
-#endif
-#ifdef _SC_SIGQUEUE_MAX
-    {"SC_SIGQUEUE_MAX", _SC_SIGQUEUE_MAX},
-#endif
-#ifdef _SC_SIGRT_MAX
-    {"SC_SIGRT_MAX",    _SC_SIGRT_MAX},
-#endif
-#ifdef _SC_SIGRT_MIN
-    {"SC_SIGRT_MIN",    _SC_SIGRT_MIN},
-#endif
-#ifdef _SC_SOFTPOWER
-    {"SC_SOFTPOWER",    _SC_SOFTPOWER},
-#endif
-#ifdef _SC_SPLIT_CACHE
-    {"SC_SPLIT_CACHE",  _SC_SPLIT_CACHE},
-#endif
-#ifdef _SC_SSIZE_MAX
-    {"SC_SSIZE_MAX",    _SC_SSIZE_MAX},
-#endif
-#ifdef _SC_STACK_PROT
-    {"SC_STACK_PROT",   _SC_STACK_PROT},
-#endif
-#ifdef _SC_STREAM_MAX
-    {"SC_STREAM_MAX",   _SC_STREAM_MAX},
-#endif
-#ifdef _SC_SYNCHRONIZED_IO
-    {"SC_SYNCHRONIZED_IO",      _SC_SYNCHRONIZED_IO},
-#endif
-#ifdef _SC_THREADS
-    {"SC_THREADS",      _SC_THREADS},
-#endif
-#ifdef _SC_THREAD_ATTR_STACKADDR
-    {"SC_THREAD_ATTR_STACKADDR",        _SC_THREAD_ATTR_STACKADDR},
-#endif
-#ifdef _SC_THREAD_ATTR_STACKSIZE
-    {"SC_THREAD_ATTR_STACKSIZE",        _SC_THREAD_ATTR_STACKSIZE},
-#endif
-#ifdef _SC_THREAD_DESTRUCTOR_ITERATIONS
-    {"SC_THREAD_DESTRUCTOR_ITERATIONS", _SC_THREAD_DESTRUCTOR_ITERATIONS},
-#endif
-#ifdef _SC_THREAD_KEYS_MAX
-    {"SC_THREAD_KEYS_MAX",      _SC_THREAD_KEYS_MAX},
-#endif
-#ifdef _SC_THREAD_PRIORITY_SCHEDULING
-    {"SC_THREAD_PRIORITY_SCHEDULING",   _SC_THREAD_PRIORITY_SCHEDULING},
-#endif
-#ifdef _SC_THREAD_PRIO_INHERIT
-    {"SC_THREAD_PRIO_INHERIT",  _SC_THREAD_PRIO_INHERIT},
-#endif
-#ifdef _SC_THREAD_PRIO_PROTECT
-    {"SC_THREAD_PRIO_PROTECT",  _SC_THREAD_PRIO_PROTECT},
-#endif
-#ifdef _SC_THREAD_PROCESS_SHARED
-    {"SC_THREAD_PROCESS_SHARED",        _SC_THREAD_PROCESS_SHARED},
-#endif
-#ifdef _SC_THREAD_SAFE_FUNCTIONS
-    {"SC_THREAD_SAFE_FUNCTIONS",        _SC_THREAD_SAFE_FUNCTIONS},
-#endif
-#ifdef _SC_THREAD_STACK_MIN
-    {"SC_THREAD_STACK_MIN",     _SC_THREAD_STACK_MIN},
-#endif
-#ifdef _SC_THREAD_THREADS_MAX
-    {"SC_THREAD_THREADS_MAX",   _SC_THREAD_THREADS_MAX},
-#endif
-#ifdef _SC_TIMERS
-    {"SC_TIMERS",       _SC_TIMERS},
-#endif
-#ifdef _SC_TIMER_MAX
-    {"SC_TIMER_MAX",    _SC_TIMER_MAX},
-#endif
-#ifdef _SC_TTY_NAME_MAX
-    {"SC_TTY_NAME_MAX", _SC_TTY_NAME_MAX},
-#endif
-#ifdef _SC_TZNAME_MAX
-    {"SC_TZNAME_MAX",   _SC_TZNAME_MAX},
-#endif
-#ifdef _SC_T_IOV_MAX
-    {"SC_T_IOV_MAX",    _SC_T_IOV_MAX},
-#endif
-#ifdef _SC_UCHAR_MAX
-    {"SC_UCHAR_MAX",    _SC_UCHAR_MAX},
-#endif
-#ifdef _SC_UINT_MAX
-    {"SC_UINT_MAX",     _SC_UINT_MAX},
-#endif
-#ifdef _SC_UIO_MAXIOV
-    {"SC_UIO_MAXIOV",   _SC_UIO_MAXIOV},
-#endif
-#ifdef _SC_ULONG_MAX
-    {"SC_ULONG_MAX",    _SC_ULONG_MAX},
-#endif
-#ifdef _SC_USHRT_MAX
-    {"SC_USHRT_MAX",    _SC_USHRT_MAX},
-#endif
-#ifdef _SC_VERSION
-    {"SC_VERSION",      _SC_VERSION},
-#endif
-#ifdef _SC_WORD_BIT
-    {"SC_WORD_BIT",     _SC_WORD_BIT},
-#endif
-#ifdef _SC_XBS5_ILP32_OFF32
-    {"SC_XBS5_ILP32_OFF32",     _SC_XBS5_ILP32_OFF32},
-#endif
-#ifdef _SC_XBS5_ILP32_OFFBIG
-    {"SC_XBS5_ILP32_OFFBIG",    _SC_XBS5_ILP32_OFFBIG},
-#endif
-#ifdef _SC_XBS5_LP64_OFF64
-    {"SC_XBS5_LP64_OFF64",      _SC_XBS5_LP64_OFF64},
-#endif
-#ifdef _SC_XBS5_LPBIG_OFFBIG
-    {"SC_XBS5_LPBIG_OFFBIG",    _SC_XBS5_LPBIG_OFFBIG},
-#endif
-#ifdef _SC_XOPEN_CRYPT
-    {"SC_XOPEN_CRYPT",  _SC_XOPEN_CRYPT},
-#endif
-#ifdef _SC_XOPEN_ENH_I18N
-    {"SC_XOPEN_ENH_I18N",       _SC_XOPEN_ENH_I18N},
-#endif
-#ifdef _SC_XOPEN_LEGACY
-    {"SC_XOPEN_LEGACY", _SC_XOPEN_LEGACY},
-#endif
-#ifdef _SC_XOPEN_REALTIME
-    {"SC_XOPEN_REALTIME",       _SC_XOPEN_REALTIME},
-#endif
-#ifdef _SC_XOPEN_REALTIME_THREADS
-    {"SC_XOPEN_REALTIME_THREADS",       _SC_XOPEN_REALTIME_THREADS},
-#endif
-#ifdef _SC_XOPEN_SHM
-    {"SC_XOPEN_SHM",    _SC_XOPEN_SHM},
-#endif
-#ifdef _SC_XOPEN_UNIX
-    {"SC_XOPEN_UNIX",   _SC_XOPEN_UNIX},
-#endif
-#ifdef _SC_XOPEN_VERSION
-    {"SC_XOPEN_VERSION",        _SC_XOPEN_VERSION},
-#endif
-#ifdef _SC_XOPEN_XCU_VERSION
-    {"SC_XOPEN_XCU_VERSION",    _SC_XOPEN_XCU_VERSION},
-#endif
-#ifdef _SC_XOPEN_XPG2
-    {"SC_XOPEN_XPG2",   _SC_XOPEN_XPG2},
-#endif
-#ifdef _SC_XOPEN_XPG3
-    {"SC_XOPEN_XPG3",   _SC_XOPEN_XPG3},
-#endif
-#ifdef _SC_XOPEN_XPG4
-    {"SC_XOPEN_XPG4",   _SC_XOPEN_XPG4},
-#endif
-};
-
-static int
-conv_sysconf_confname(PyObject *arg, int *valuep)
-{
-    return conv_confname(arg, valuep, posix_constants_sysconf,
-                         sizeof(posix_constants_sysconf)
-                           / sizeof(struct constdef));
-}
-
-PyDoc_STRVAR(posix_sysconf__doc__,
-"sysconf(name) -> integer\n\n\
-Return an integer-valued system configuration variable.");
-
-static PyObject *
-posix_sysconf(PyObject *self, PyObject *args)
-{
-    PyObject *result = NULL;
-    int name;
-
-    if (PyArg_ParseTuple(args, "O&:sysconf", conv_sysconf_confname, &name)) {
-        int value;
-
-        errno = 0;
-        value = sysconf(name);
-        if (value == -1 && errno != 0)
-            posix_error();
-        else
-            result = PyInt_FromLong(value);
-    }
-    return result;
-}
-#endif
-
-
-/* This code is used to ensure that the tables of configuration value names
- * are in sorted order as required by conv_confname(), and also to build the
- * the exported dictionaries that are used to publish information about the
- * names available on the host platform.
- *
- * Sorting the table at runtime ensures that the table is properly ordered
- * when used, even for platforms we're not able to test on.  It also makes
- * it easier to add additional entries to the tables.
- */
-
-static int
-cmp_constdefs(const void *v1,  const void *v2)
-{
-    const struct constdef *c1 =
-    (const struct constdef *) v1;
-    const struct constdef *c2 =
-    (const struct constdef *) v2;
-
-    return strcmp(c1->name, c2->name);
-}
-
-static int
-setup_confname_table(struct constdef *table, size_t tablesize,
-                     char *tablename, PyObject *module)
-{
-    PyObject *d = NULL;
-    size_t i;
-
-    qsort(table, tablesize, sizeof(struct constdef), cmp_constdefs);
-    d = PyDict_New();
-    if (d == NULL)
-        return -1;
-
-    for (i=0; i < tablesize; ++i) {
-        PyObject *o = PyInt_FromLong(table[i].value);
-        if (o == NULL || PyDict_SetItemString(d, table[i].name, o) == -1) {
-            Py_XDECREF(o);
-            Py_DECREF(d);
-            return -1;
-        }
-        Py_DECREF(o);
-    }
-    return PyModule_AddObject(module, tablename, d);
-}
-
-/* Return -1 on failure, 0 on success. */
-static int
-setup_confname_tables(PyObject *module)
-{
-#if defined(HAVE_FPATHCONF) || defined(HAVE_PATHCONF)
-    if (setup_confname_table(posix_constants_pathconf,
-                             sizeof(posix_constants_pathconf)
-                               / sizeof(struct constdef),
-                             "pathconf_names", module))
-        return -1;
-#endif
-#ifdef HAVE_CONFSTR
-    if (setup_confname_table(posix_constants_confstr,
-                             sizeof(posix_constants_confstr)
-                               / sizeof(struct constdef),
-                             "confstr_names", module))
-        return -1;
-#endif
-#ifdef HAVE_SYSCONF
-    if (setup_confname_table(posix_constants_sysconf,
-                             sizeof(posix_constants_sysconf)
-                               / sizeof(struct constdef),
-                             "sysconf_names", module))
-        return -1;
-#endif
-    return 0;
-}
-
-
-PyDoc_STRVAR(posix_abort__doc__,
-"abort() -> does not return!\n\n\
-Abort the interpreter immediately.  This 'dumps core' or otherwise fails\n\
-in the hardest way possible on the hosting operating system.");
-
-static PyObject *
-posix_abort(PyObject *self, PyObject *noargs)
-{
-    abort();
-    /*NOTREACHED*/
-    Py_FatalError("abort() called from Python code didn't abort!");
-    return NULL;
-}
-
-#ifdef MS_WINDOWS
-PyDoc_STRVAR(win32_startfile__doc__,
-"startfile(filepath [, operation]) - Start a file with its associated\n\
-application.\n\
-\n\
-When \"operation\" is not specified or \"open\", this acts like\n\
-double-clicking the file in Explorer, or giving the file name as an\n\
-argument to the DOS \"start\" command: the file is opened with whatever\n\
-application (if any) its extension is associated.\n\
-When another \"operation\" is given, it specifies what should be done with\n\
-the file.  A typical operation is \"print\".\n\
-\n\
-startfile returns as soon as the associated application is launched.\n\
-There is no option to wait for the application to close, and no way\n\
-to retrieve the application's exit status.\n\
-\n\
-The filepath is relative to the current directory.  If you want to use\n\
-an absolute path, make sure the first character is not a slash (\"/\");\n\
-the underlying Win32 ShellExecute function doesn't work if it is.");
-
-static PyObject *
-win32_startfile(PyObject *self, PyObject *args)
-{
-    char *filepath;
-    char *operation = NULL;
-    HINSTANCE rc;
-
-    PyObject *unipath, *woperation = NULL;
-    if (!PyArg_ParseTuple(args, "U|s:startfile",
-                          &unipath, &operation)) {
-        PyErr_Clear();
-        goto normal;
-    }
-
-    if (operation) {
-        woperation = PyUnicode_DecodeASCII(operation,
-                                           strlen(operation), NULL);
-        if (!woperation) {
-            PyErr_Clear();
-            operation = NULL;
-            goto normal;
-        }
-    }
-
-    Py_BEGIN_ALLOW_THREADS
-    rc = ShellExecuteW((HWND)0, woperation ? PyUnicode_AS_UNICODE(woperation) : 0,
-        PyUnicode_AS_UNICODE(unipath),
-        NULL, NULL, SW_SHOWNORMAL);
-    Py_END_ALLOW_THREADS
-
-    Py_XDECREF(woperation);
-    if (rc <= (HINSTANCE)32) {
-        PyObject *errval = win32_error_unicode("startfile",
-                                               PyUnicode_AS_UNICODE(unipath));
-        return errval;
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-
-normal:
-    if (!PyArg_ParseTuple(args, "et|s:startfile",
-                          Py_FileSystemDefaultEncoding, &filepath,
-                          &operation))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    rc = ShellExecute((HWND)0, operation, filepath,
-                      NULL, NULL, SW_SHOWNORMAL);
-    Py_END_ALLOW_THREADS
-    if (rc <= (HINSTANCE)32) {
-        PyObject *errval = win32_error("startfile", filepath);
-        PyMem_Free(filepath);
-        return errval;
-    }
-    PyMem_Free(filepath);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* MS_WINDOWS */
-
-#ifdef HAVE_GETLOADAVG
-PyDoc_STRVAR(posix_getloadavg__doc__,
-"getloadavg() -> (float, float, float)\n\n\
-Return the number of processes in the system run queue averaged over\n\
-the last 1, 5, and 15 minutes or raises OSError if the load average\n\
-was unobtainable");
-
-static PyObject *
-posix_getloadavg(PyObject *self, PyObject *noargs)
-{
-    double loadavg[3];
-    if (getloadavg(loadavg, 3)!=3) {
-        PyErr_SetString(PyExc_OSError, "Load averages are unobtainable");
-        return NULL;
-    } else
-        return Py_BuildValue("ddd", loadavg[0], loadavg[1], loadavg[2]);
-}
-#endif
-
-#ifdef MS_WINDOWS
-
-PyDoc_STRVAR(win32_urandom__doc__,
-"urandom(n) -> str\n\n\
-Return a string of n random bytes suitable for cryptographic use.");
-
-typedef BOOL (WINAPI *CRYPTACQUIRECONTEXTA)(HCRYPTPROV *phProv,\
-              LPCSTR pszContainer, LPCSTR pszProvider, DWORD dwProvType,\
-              DWORD dwFlags );
-typedef BOOL (WINAPI *CRYPTGENRANDOM)(HCRYPTPROV hProv, DWORD dwLen,\
-              BYTE *pbBuffer );
-
-static CRYPTGENRANDOM pCryptGenRandom = NULL;
-/* This handle is never explicitly released. Instead, the operating
-   system will release it when the process terminates. */
-static HCRYPTPROV hCryptProv = 0;
-
-static PyObject*
-win32_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");
-
-    if (hCryptProv == 0) {
-        HINSTANCE hAdvAPI32 = NULL;
-        CRYPTACQUIRECONTEXTA pCryptAcquireContext = NULL;
-
-        /* Obtain handle to the DLL containing CryptoAPI
-           This should not fail         */
-        hAdvAPI32 = GetModuleHandle("advapi32.dll");
-        if(hAdvAPI32 == NULL)
-            return win32_error("GetModuleHandle", NULL);
-
-        /* Obtain pointers to the CryptoAPI functions
-           This will fail on some early versions of Win95 */
-        pCryptAcquireContext = (CRYPTACQUIRECONTEXTA)GetProcAddress(
-                                        hAdvAPI32,
-                                        "CryptAcquireContextA");
-        if (pCryptAcquireContext == NULL)
-            return PyErr_Format(PyExc_NotImplementedError,
-                                "CryptAcquireContextA not found");
-
-        pCryptGenRandom = (CRYPTGENRANDOM)GetProcAddress(
-                                        hAdvAPI32, "CryptGenRandom");
-        if (pCryptGenRandom == NULL)
-            return PyErr_Format(PyExc_NotImplementedError,
-                                "CryptGenRandom not found");
-
-        /* Acquire context */
-        if (! pCryptAcquireContext(&hCryptProv, NULL, NULL,
-                                   PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
-            return win32_error("CryptAcquireContext", NULL);
-    }
-
-    /* Allocate bytes */
-    result = PyString_FromStringAndSize(NULL, howMany);
-    if (result != NULL) {
-        /* Get random data */
-        memset(PyString_AS_STRING(result), 0, howMany); /* zero seed */
-        if (! pCryptGenRandom(hCryptProv, howMany, (unsigned char*)
-                              PyString_AS_STRING(result))) {
-            Py_DECREF(result);
-            return win32_error("CryptGenRandom", NULL);
-        }
-    }
-    return result;
-}
-#endif
-
-#ifdef __VMS
-/* Use openssl random routine */
-#include <openssl/rand.h>
-PyDoc_STRVAR(vms_urandom__doc__,
-"urandom(n) -> str\n\n\
-Return a string of n random bytes suitable for cryptographic use.");
-
-static PyObject*
-vms_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__,
-"setresuid(ruid, euid, suid)\n\n\
-Set the current process's real, effective, and saved user ids.");
-
-static PyObject*
-posix_setresuid (PyObject *self, PyObject *args)
-{
-    /* We assume uid_t is no larger than a long. */
-    long ruid, euid, suid;
-    if (!PyArg_ParseTuple(args, "lll", &ruid, &euid, &suid))
-        return NULL;
-    if (setresuid(ruid, euid, suid) < 0)
-        return posix_error();
-    Py_RETURN_NONE;
-}
-#endif
-
-#ifdef HAVE_SETRESGID
-PyDoc_STRVAR(posix_setresgid__doc__,
-"setresgid(rgid, egid, sgid)\n\n\
-Set the current process's real, effective, and saved group ids.");
-
-static PyObject*
-posix_setresgid (PyObject *self, PyObject *args)
-{
-    /* We assume uid_t is no larger than a long. */
-    long rgid, egid, sgid;
-    if (!PyArg_ParseTuple(args, "lll", &rgid, &egid, &sgid))
-        return NULL;
-    if (setresgid(rgid, egid, sgid) < 0)
-        return posix_error();
-    Py_RETURN_NONE;
-}
-#endif
-
-#ifdef HAVE_GETRESUID
-PyDoc_STRVAR(posix_getresuid__doc__,
-"getresuid() -> (ruid, euid, suid)\n\n\
-Get tuple of the current process's real, effective, and saved user ids.");
-
-static PyObject*
-posix_getresuid (PyObject *self, PyObject *noargs)
-{
-    uid_t ruid, euid, suid;
-    long l_ruid, l_euid, l_suid;
-    if (getresuid(&ruid, &euid, &suid) < 0)
-        return posix_error();
-    /* Force the values into long's as we don't know the size of uid_t. */
-    l_ruid = ruid;
-    l_euid = euid;
-    l_suid = suid;
-    return Py_BuildValue("(lll)", l_ruid, l_euid, l_suid);
-}
-#endif
-
-#ifdef HAVE_GETRESGID
-PyDoc_STRVAR(posix_getresgid__doc__,
-"getresgid() -> (rgid, egid, sgid)\n\n\
-Get tuple of the current process's real, effective, and saved group ids.");
-
-static PyObject*
-posix_getresgid (PyObject *self, PyObject *noargs)
-{
-    uid_t rgid, egid, sgid;
-    long l_rgid, l_egid, l_sgid;
-    if (getresgid(&rgid, &egid, &sgid) < 0)
-        return posix_error();
-    /* Force the values into long's as we don't know the size of uid_t. */
-    l_rgid = rgid;
-    l_egid = egid;
-    l_sgid = sgid;
-    return Py_BuildValue("(lll)", l_rgid, l_egid, l_sgid);
-}
-#endif
-
-static PyMethodDef posix_methods[] = {
-    {"access",          posix_access, METH_VARARGS, posix_access__doc__},
-#ifdef HAVE_TTYNAME
-    {"ttyname",         posix_ttyname, METH_VARARGS, posix_ttyname__doc__},
-#endif
-    {"chdir",           posix_chdir, METH_VARARGS, posix_chdir__doc__},
-#ifdef HAVE_CHFLAGS
-    {"chflags",         posix_chflags, METH_VARARGS, posix_chflags__doc__},
-#endif /* HAVE_CHFLAGS */
-    {"chmod",           posix_chmod, METH_VARARGS, posix_chmod__doc__},
-#ifdef HAVE_FCHMOD
-    {"fchmod",          posix_fchmod, METH_VARARGS, posix_fchmod__doc__},
-#endif /* HAVE_FCHMOD */
-#ifdef HAVE_CHOWN
-    {"chown",           posix_chown, METH_VARARGS, posix_chown__doc__},
-#endif /* HAVE_CHOWN */
-#ifdef HAVE_LCHMOD
-    {"lchmod",          posix_lchmod, METH_VARARGS, posix_lchmod__doc__},
-#endif /* HAVE_LCHMOD */
-#ifdef HAVE_FCHOWN
-    {"fchown",          posix_fchown, METH_VARARGS, posix_fchown__doc__},
-#endif /* HAVE_FCHOWN */
-#ifdef HAVE_LCHFLAGS
-    {"lchflags",        posix_lchflags, METH_VARARGS, posix_lchflags__doc__},
-#endif /* HAVE_LCHFLAGS */
-#ifdef HAVE_LCHOWN
-    {"lchown",          posix_lchown, METH_VARARGS, posix_lchown__doc__},
-#endif /* HAVE_LCHOWN */
-#ifdef HAVE_CHROOT
-    {"chroot",          posix_chroot, METH_VARARGS, posix_chroot__doc__},
-#endif
-#ifdef HAVE_CTERMID
-    {"ctermid",         posix_ctermid, METH_NOARGS, posix_ctermid__doc__},
-#endif
-#ifdef HAVE_GETCWD
-    {"getcwd",          posix_getcwd, METH_NOARGS, posix_getcwd__doc__},
-#ifdef Py_USING_UNICODE
-    {"getcwdu",         posix_getcwdu, METH_NOARGS, posix_getcwdu__doc__},
-#endif
-#endif
-#ifdef HAVE_LINK
-    {"link",            posix_link, METH_VARARGS, posix_link__doc__},
-#endif /* HAVE_LINK */
-    {"listdir",         posix_listdir, METH_VARARGS, posix_listdir__doc__},
-    {"lstat",           posix_lstat, METH_VARARGS, posix_lstat__doc__},
-    {"mkdir",           posix_mkdir, METH_VARARGS, posix_mkdir__doc__},
-#ifdef HAVE_NICE
-    {"nice",            posix_nice, METH_VARARGS, posix_nice__doc__},
-#endif /* HAVE_NICE */
-#ifdef HAVE_READLINK
-    {"readlink",        posix_readlink, METH_VARARGS, posix_readlink__doc__},
-#endif /* HAVE_READLINK */
-    {"rename",          posix_rename, METH_VARARGS, posix_rename__doc__},
-    {"rmdir",           posix_rmdir, METH_VARARGS, posix_rmdir__doc__},
-    {"stat",            posix_stat, METH_VARARGS, posix_stat__doc__},
-    {"stat_float_times", stat_float_times, METH_VARARGS, stat_float_times__doc__},
-#ifdef HAVE_SYMLINK
-    {"symlink",         posix_symlink, METH_VARARGS, posix_symlink__doc__},
-#endif /* HAVE_SYMLINK */
-#ifdef HAVE_SYSTEM
-    {"system",          posix_system, METH_VARARGS, posix_system__doc__},
-#endif
-    {"umask",           posix_umask, METH_VARARGS, posix_umask__doc__},
-#ifdef HAVE_UNAME
-    {"uname",           posix_uname, METH_NOARGS, posix_uname__doc__},
-#endif /* HAVE_UNAME */
-    {"unlink",          posix_unlink, METH_VARARGS, posix_unlink__doc__},
-    {"remove",          posix_unlink, METH_VARARGS, posix_remove__doc__},
-    {"utime",           posix_utime, METH_VARARGS, posix_utime__doc__},
-#ifdef HAVE_TIMES
-    {"times",           posix_times, METH_NOARGS, posix_times__doc__},
-#endif /* HAVE_TIMES */
-    {"_exit",           posix__exit, METH_VARARGS, posix__exit__doc__},
-#ifdef HAVE_EXECV
-    {"execv",           posix_execv, METH_VARARGS, posix_execv__doc__},
-    {"execve",          posix_execve, METH_VARARGS, posix_execve__doc__},
-#endif /* HAVE_EXECV */
-#ifdef HAVE_SPAWNV
-    {"spawnv",          posix_spawnv, METH_VARARGS, posix_spawnv__doc__},
-    {"spawnve",         posix_spawnve, METH_VARARGS, posix_spawnve__doc__},
-#if defined(PYOS_OS2)
-    {"spawnvp",         posix_spawnvp, METH_VARARGS, posix_spawnvp__doc__},
-    {"spawnvpe",        posix_spawnvpe, METH_VARARGS, posix_spawnvpe__doc__},
-#endif /* PYOS_OS2 */
-#endif /* HAVE_SPAWNV */
-#ifdef HAVE_FORK1
-    {"fork1",       posix_fork1, METH_NOARGS, posix_fork1__doc__},
-#endif /* HAVE_FORK1 */
-#ifdef HAVE_FORK
-    {"fork",            posix_fork, METH_NOARGS, posix_fork__doc__},
-#endif /* HAVE_FORK */
-#if defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) || defined(HAVE_DEV_PTMX)
-    {"openpty",         posix_openpty, METH_NOARGS, posix_openpty__doc__},
-#endif /* HAVE_OPENPTY || HAVE__GETPTY || HAVE_DEV_PTMX */
-#ifdef HAVE_FORKPTY
-    {"forkpty",         posix_forkpty, METH_NOARGS, posix_forkpty__doc__},
-#endif /* HAVE_FORKPTY */
-#ifdef HAVE_GETEGID
-    {"getegid",         posix_getegid, METH_NOARGS, posix_getegid__doc__},
-#endif /* HAVE_GETEGID */
-#ifdef HAVE_GETEUID
-    {"geteuid",         posix_geteuid, METH_NOARGS, posix_geteuid__doc__},
-#endif /* HAVE_GETEUID */
-#ifdef HAVE_GETGID
-    {"getgid",          posix_getgid, METH_NOARGS, posix_getgid__doc__},
-#endif /* HAVE_GETGID */
-#ifdef HAVE_GETGROUPS
-    {"getgroups",       posix_getgroups, METH_NOARGS, posix_getgroups__doc__},
-#endif
-    {"getpid",          posix_getpid, METH_NOARGS, posix_getpid__doc__},
-#ifdef HAVE_GETPGRP
-    {"getpgrp",         posix_getpgrp, METH_NOARGS, posix_getpgrp__doc__},
-#endif /* HAVE_GETPGRP */
-#ifdef HAVE_GETPPID
-    {"getppid",         posix_getppid, METH_NOARGS, posix_getppid__doc__},
-#endif /* HAVE_GETPPID */
-#ifdef HAVE_GETUID
-    {"getuid",          posix_getuid, METH_NOARGS, posix_getuid__doc__},
-#endif /* HAVE_GETUID */
-#ifdef HAVE_GETLOGIN
-    {"getlogin",        posix_getlogin, METH_NOARGS, posix_getlogin__doc__},
-#endif
-#ifdef HAVE_KILL
-    {"kill",            posix_kill, METH_VARARGS, posix_kill__doc__},
-#endif /* HAVE_KILL */
-#ifdef HAVE_KILLPG
-    {"killpg",          posix_killpg, METH_VARARGS, posix_killpg__doc__},
-#endif /* HAVE_KILLPG */
-#ifdef HAVE_PLOCK
-    {"plock",           posix_plock, METH_VARARGS, posix_plock__doc__},
-#endif /* HAVE_PLOCK */
-#ifdef HAVE_POPEN
-    {"popen",           posix_popen, METH_VARARGS, posix_popen__doc__},
-#ifdef MS_WINDOWS
-    {"popen2",          win32_popen2, METH_VARARGS},
-    {"popen3",          win32_popen3, METH_VARARGS},
-    {"popen4",          win32_popen4, METH_VARARGS},
-    {"startfile",       win32_startfile, METH_VARARGS, win32_startfile__doc__},
-    {"kill",    win32_kill, METH_VARARGS, win32_kill__doc__},
-#else
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-    {"popen2",          os2emx_popen2, METH_VARARGS},
-    {"popen3",          os2emx_popen3, METH_VARARGS},
-    {"popen4",          os2emx_popen4, METH_VARARGS},
-#endif
-#endif
-#endif /* HAVE_POPEN */
-#ifdef HAVE_SETUID
-    {"setuid",          posix_setuid, METH_VARARGS, posix_setuid__doc__},
-#endif /* HAVE_SETUID */
-#ifdef HAVE_SETEUID
-    {"seteuid",         posix_seteuid, METH_VARARGS, posix_seteuid__doc__},
-#endif /* HAVE_SETEUID */
-#ifdef HAVE_SETEGID
-    {"setegid",         posix_setegid, METH_VARARGS, posix_setegid__doc__},
-#endif /* HAVE_SETEGID */
-#ifdef HAVE_SETREUID
-    {"setreuid",        posix_setreuid, METH_VARARGS, posix_setreuid__doc__},
-#endif /* HAVE_SETREUID */
-#ifdef HAVE_SETREGID
-    {"setregid",        posix_setregid, METH_VARARGS, posix_setregid__doc__},
-#endif /* HAVE_SETREGID */
-#ifdef HAVE_SETGID
-    {"setgid",          posix_setgid, METH_VARARGS, posix_setgid__doc__},
-#endif /* HAVE_SETGID */
-#ifdef HAVE_SETGROUPS
-    {"setgroups",       posix_setgroups, METH_O, posix_setgroups__doc__},
-#endif /* HAVE_SETGROUPS */
-#ifdef HAVE_INITGROUPS
-    {"initgroups",      posix_initgroups, METH_VARARGS, posix_initgroups__doc__},
-#endif /* HAVE_INITGROUPS */
-#ifdef HAVE_GETPGID
-    {"getpgid",         posix_getpgid, METH_VARARGS, posix_getpgid__doc__},
-#endif /* HAVE_GETPGID */
-#ifdef HAVE_SETPGRP
-    {"setpgrp",         posix_setpgrp, METH_NOARGS, posix_setpgrp__doc__},
-#endif /* HAVE_SETPGRP */
-#ifdef HAVE_WAIT
-    {"wait",            posix_wait, METH_NOARGS, posix_wait__doc__},
-#endif /* HAVE_WAIT */
-#ifdef HAVE_WAIT3
-    {"wait3",           posix_wait3, METH_VARARGS, posix_wait3__doc__},
-#endif /* HAVE_WAIT3 */
-#ifdef HAVE_WAIT4
-    {"wait4",           posix_wait4, METH_VARARGS, posix_wait4__doc__},
-#endif /* HAVE_WAIT4 */
-#if defined(HAVE_WAITPID) || defined(HAVE_CWAIT)
-    {"waitpid",         posix_waitpid, METH_VARARGS, posix_waitpid__doc__},
-#endif /* HAVE_WAITPID */
-#ifdef HAVE_GETSID
-    {"getsid",          posix_getsid, METH_VARARGS, posix_getsid__doc__},
-#endif /* HAVE_GETSID */
-#ifdef HAVE_SETSID
-    {"setsid",          posix_setsid, METH_NOARGS, posix_setsid__doc__},
-#endif /* HAVE_SETSID */
-#ifdef HAVE_SETPGID
-    {"setpgid",         posix_setpgid, METH_VARARGS, posix_setpgid__doc__},
-#endif /* HAVE_SETPGID */
-#ifdef HAVE_TCGETPGRP
-    {"tcgetpgrp",       posix_tcgetpgrp, METH_VARARGS, posix_tcgetpgrp__doc__},
-#endif /* HAVE_TCGETPGRP */
-#ifdef HAVE_TCSETPGRP
-    {"tcsetpgrp",       posix_tcsetpgrp, METH_VARARGS, posix_tcsetpgrp__doc__},
-#endif /* HAVE_TCSETPGRP */
-    {"open",            posix_open, METH_VARARGS, posix_open__doc__},
-    {"close",           posix_close, METH_VARARGS, posix_close__doc__},
-    {"closerange",      posix_closerange, METH_VARARGS, posix_closerange__doc__},
-    {"dup",             posix_dup, METH_VARARGS, posix_dup__doc__},
-    {"dup2",            posix_dup2, METH_VARARGS, posix_dup2__doc__},
-    {"lseek",           posix_lseek, METH_VARARGS, posix_lseek__doc__},
-    {"read",            posix_read, METH_VARARGS, posix_read__doc__},
-    {"write",           posix_write, METH_VARARGS, posix_write__doc__},
-    {"fstat",           posix_fstat, METH_VARARGS, posix_fstat__doc__},
-    {"fdopen",          posix_fdopen, METH_VARARGS, posix_fdopen__doc__},
-    {"isatty",          posix_isatty, METH_VARARGS, posix_isatty__doc__},
-#ifdef HAVE_PIPE
-    {"pipe",            posix_pipe, METH_NOARGS, posix_pipe__doc__},
-#endif
-#ifdef HAVE_MKFIFO
-    {"mkfifo",          posix_mkfifo, METH_VARARGS, posix_mkfifo__doc__},
-#endif
-#if defined(HAVE_MKNOD) && defined(HAVE_MAKEDEV)
-    {"mknod",           posix_mknod, METH_VARARGS, posix_mknod__doc__},
-#endif
-#ifdef HAVE_DEVICE_MACROS
-    {"major",           posix_major, METH_VARARGS, posix_major__doc__},
-    {"minor",           posix_minor, METH_VARARGS, posix_minor__doc__},
-    {"makedev",         posix_makedev, METH_VARARGS, posix_makedev__doc__},
-#endif
-#ifdef HAVE_FTRUNCATE
-    {"ftruncate",       posix_ftruncate, METH_VARARGS, posix_ftruncate__doc__},
-#endif
-#ifdef HAVE_PUTENV
-    {"putenv",          posix_putenv, METH_VARARGS, posix_putenv__doc__},
-#endif
-#ifdef HAVE_UNSETENV
-    {"unsetenv",        posix_unsetenv, METH_VARARGS, posix_unsetenv__doc__},
-#endif
-    {"strerror",        posix_strerror, METH_VARARGS, posix_strerror__doc__},
-#ifdef HAVE_FCHDIR
-    {"fchdir",          posix_fchdir, METH_O, posix_fchdir__doc__},
-#endif
-#ifdef HAVE_FSYNC
-    {"fsync",       posix_fsync, METH_O, posix_fsync__doc__},
-#endif
-#ifdef HAVE_FDATASYNC
-    {"fdatasync",   posix_fdatasync,  METH_O, posix_fdatasync__doc__},
-#endif
-#ifdef HAVE_SYS_WAIT_H
-#ifdef WCOREDUMP
-    {"WCOREDUMP",       posix_WCOREDUMP, METH_VARARGS, posix_WCOREDUMP__doc__},
-#endif /* WCOREDUMP */
-#ifdef WIFCONTINUED
-    {"WIFCONTINUED",posix_WIFCONTINUED, METH_VARARGS, posix_WIFCONTINUED__doc__},
-#endif /* WIFCONTINUED */
-#ifdef WIFSTOPPED
-    {"WIFSTOPPED",      posix_WIFSTOPPED, METH_VARARGS, posix_WIFSTOPPED__doc__},
-#endif /* WIFSTOPPED */
-#ifdef WIFSIGNALED
-    {"WIFSIGNALED",     posix_WIFSIGNALED, METH_VARARGS, posix_WIFSIGNALED__doc__},
-#endif /* WIFSIGNALED */
-#ifdef WIFEXITED
-    {"WIFEXITED",       posix_WIFEXITED, METH_VARARGS, posix_WIFEXITED__doc__},
-#endif /* WIFEXITED */
-#ifdef WEXITSTATUS
-    {"WEXITSTATUS",     posix_WEXITSTATUS, METH_VARARGS, posix_WEXITSTATUS__doc__},
-#endif /* WEXITSTATUS */
-#ifdef WTERMSIG
-    {"WTERMSIG",        posix_WTERMSIG, METH_VARARGS, posix_WTERMSIG__doc__},
-#endif /* WTERMSIG */
-#ifdef WSTOPSIG
-    {"WSTOPSIG",        posix_WSTOPSIG, METH_VARARGS, posix_WSTOPSIG__doc__},
-#endif /* WSTOPSIG */
-#endif /* HAVE_SYS_WAIT_H */
-#if defined(HAVE_FSTATVFS) && defined(HAVE_SYS_STATVFS_H)
-    {"fstatvfs",        posix_fstatvfs, METH_VARARGS, posix_fstatvfs__doc__},
-#endif
-#if defined(HAVE_STATVFS) && defined(HAVE_SYS_STATVFS_H)
-    {"statvfs",         posix_statvfs, METH_VARARGS, posix_statvfs__doc__},
-#endif
-#ifdef HAVE_TMPFILE
-    {"tmpfile",         posix_tmpfile, METH_NOARGS, posix_tmpfile__doc__},
-#endif
-#ifdef HAVE_TEMPNAM
-    {"tempnam",         posix_tempnam, METH_VARARGS, posix_tempnam__doc__},
-#endif
-#ifdef HAVE_TMPNAM
-    {"tmpnam",          posix_tmpnam, METH_NOARGS, posix_tmpnam__doc__},
-#endif
-#ifdef HAVE_CONFSTR
-    {"confstr",         posix_confstr, METH_VARARGS, posix_confstr__doc__},
-#endif
-#ifdef HAVE_SYSCONF
-    {"sysconf",         posix_sysconf, METH_VARARGS, posix_sysconf__doc__},
-#endif
-#ifdef HAVE_FPATHCONF
-    {"fpathconf",       posix_fpathconf, METH_VARARGS, posix_fpathconf__doc__},
-#endif
-#ifdef HAVE_PATHCONF
-    {"pathconf",        posix_pathconf, METH_VARARGS, posix_pathconf__doc__},
-#endif
-    {"abort",           posix_abort, METH_NOARGS, posix_abort__doc__},
-#ifdef MS_WINDOWS
-    {"_getfullpathname",        posix__getfullpathname, METH_VARARGS, NULL},
-#endif
-#ifdef HAVE_GETLOADAVG
-    {"getloadavg",      posix_getloadavg, METH_NOARGS, posix_getloadavg__doc__},
-#endif
- #ifdef MS_WINDOWS
-    {"urandom", win32_urandom, METH_VARARGS, win32_urandom__doc__},
- #endif
- #ifdef __VMS
-    {"urandom", vms_urandom, METH_VARARGS, vms_urandom__doc__},
- #endif
-#ifdef HAVE_SETRESUID
-    {"setresuid",       posix_setresuid, METH_VARARGS, posix_setresuid__doc__},
-#endif
-#ifdef HAVE_SETRESGID
-    {"setresgid",       posix_setresgid, METH_VARARGS, posix_setresgid__doc__},
-#endif
-#ifdef HAVE_GETRESUID
-    {"getresuid",       posix_getresuid, METH_NOARGS, posix_getresuid__doc__},
-#endif
-#ifdef HAVE_GETRESGID
-    {"getresgid",       posix_getresgid, METH_NOARGS, posix_getresgid__doc__},
-#endif
-
-    {NULL,              NULL}            /* Sentinel */
-};
-
-
-static int
-ins(PyObject *module, char *symbol, long value)
-{
-    return PyModule_AddIntConstant(module, symbol, value);
-}
-
-#if defined(PYOS_OS2)
-/* Insert Platform-Specific Constant Values (Strings & Numbers) of Common Use */
-static int insertvalues(PyObject *module)
-{
-    APIRET    rc;
-    ULONG     values[QSV_MAX+1];
-    PyObject *v;
-    char     *ver, tmp[50];
-
-    Py_BEGIN_ALLOW_THREADS
-    rc = DosQuerySysInfo(1L, QSV_MAX, &values[1], sizeof(ULONG) * QSV_MAX);
-    Py_END_ALLOW_THREADS
-
-    if (rc != NO_ERROR) {
-        os2_error(rc);
-        return -1;
-    }
-
-    if (ins(module, "meminstalled", values[QSV_TOTPHYSMEM])) return -1;
-    if (ins(module, "memkernel",    values[QSV_TOTRESMEM])) return -1;
-    if (ins(module, "memvirtual",   values[QSV_TOTAVAILMEM])) return -1;
-    if (ins(module, "maxpathlen",   values[QSV_MAX_PATH_LENGTH])) return -1;
-    if (ins(module, "maxnamelen",   values[QSV_MAX_COMP_LENGTH])) return -1;
-    if (ins(module, "revision",     values[QSV_VERSION_REVISION])) return -1;
-    if (ins(module, "timeslice",    values[QSV_MIN_SLICE])) return -1;
-
-    switch (values[QSV_VERSION_MINOR]) {
-    case 0:  ver = "2.00"; break;
-    case 10: ver = "2.10"; break;
-    case 11: ver = "2.11"; break;
-    case 30: ver = "3.00"; break;
-    case 40: ver = "4.00"; break;
-    case 50: ver = "5.00"; break;
-    default:
-        PyOS_snprintf(tmp, sizeof(tmp),
-                      "%d-%d", values[QSV_VERSION_MAJOR],
-                      values[QSV_VERSION_MINOR]);
-        ver = &tmp[0];
-    }
-
-    /* Add Indicator of the Version of the Operating System */
-    if (PyModule_AddStringConstant(module, "version", tmp) < 0)
-        return -1;
-
-    /* Add Indicator of Which Drive was Used to Boot the System */
-    tmp[0] = 'A' + values[QSV_BOOT_DRIVE] - 1;
-    tmp[1] = ':';
-    tmp[2] = '\0';
-
-    return PyModule_AddStringConstant(module, "bootdrive", tmp);
-}
-#endif
-
-static int
-all_ins(PyObject *d)
-{
-#ifdef F_OK
-    if (ins(d, "F_OK", (long)F_OK)) return -1;
-#endif
-#ifdef R_OK
-    if (ins(d, "R_OK", (long)R_OK)) return -1;
-#endif
-#ifdef W_OK
-    if (ins(d, "W_OK", (long)W_OK)) return -1;
-#endif
-#ifdef X_OK
-    if (ins(d, "X_OK", (long)X_OK)) return -1;
-#endif
-#ifdef NGROUPS_MAX
-    if (ins(d, "NGROUPS_MAX", (long)NGROUPS_MAX)) return -1;
-#endif
-#ifdef TMP_MAX
-    if (ins(d, "TMP_MAX", (long)TMP_MAX)) return -1;
-#endif
-#ifdef WCONTINUED
-    if (ins(d, "WCONTINUED", (long)WCONTINUED)) return -1;
-#endif
-#ifdef WNOHANG
-    if (ins(d, "WNOHANG", (long)WNOHANG)) return -1;
-#endif
-#ifdef WUNTRACED
-    if (ins(d, "WUNTRACED", (long)WUNTRACED)) return -1;
-#endif
-#ifdef O_RDONLY
-    if (ins(d, "O_RDONLY", (long)O_RDONLY)) return -1;
-#endif
-#ifdef O_WRONLY
-    if (ins(d, "O_WRONLY", (long)O_WRONLY)) return -1;
-#endif
-#ifdef O_RDWR
-    if (ins(d, "O_RDWR", (long)O_RDWR)) return -1;
-#endif
-#ifdef O_NDELAY
-    if (ins(d, "O_NDELAY", (long)O_NDELAY)) return -1;
-#endif
-#ifdef O_NONBLOCK
-    if (ins(d, "O_NONBLOCK", (long)O_NONBLOCK)) return -1;
-#endif
-#ifdef O_APPEND
-    if (ins(d, "O_APPEND", (long)O_APPEND)) return -1;
-#endif
-#ifdef O_DSYNC
-    if (ins(d, "O_DSYNC", (long)O_DSYNC)) return -1;
-#endif
-#ifdef O_RSYNC
-    if (ins(d, "O_RSYNC", (long)O_RSYNC)) return -1;
-#endif
-#ifdef O_SYNC
-    if (ins(d, "O_SYNC", (long)O_SYNC)) return -1;
-#endif
-#ifdef O_NOCTTY
-    if (ins(d, "O_NOCTTY", (long)O_NOCTTY)) return -1;
-#endif
-#ifdef O_CREAT
-    if (ins(d, "O_CREAT", (long)O_CREAT)) return -1;
-#endif
-#ifdef O_EXCL
-    if (ins(d, "O_EXCL", (long)O_EXCL)) return -1;
-#endif
-#ifdef O_TRUNC
-    if (ins(d, "O_TRUNC", (long)O_TRUNC)) return -1;
-#endif
-#ifdef O_BINARY
-    if (ins(d, "O_BINARY", (long)O_BINARY)) return -1;
-#endif
-#ifdef O_TEXT
-    if (ins(d, "O_TEXT", (long)O_TEXT)) return -1;
-#endif
-#ifdef O_LARGEFILE
-    if (ins(d, "O_LARGEFILE", (long)O_LARGEFILE)) return -1;
-#endif
-#ifdef O_SHLOCK
-    if (ins(d, "O_SHLOCK", (long)O_SHLOCK)) return -1;
-#endif
-#ifdef O_EXLOCK
-    if (ins(d, "O_EXLOCK", (long)O_EXLOCK)) return -1;
-#endif
-
-/* MS Windows */
-#ifdef O_NOINHERIT
-    /* Don't inherit in child processes. */
-    if (ins(d, "O_NOINHERIT", (long)O_NOINHERIT)) return -1;
-#endif
-#ifdef _O_SHORT_LIVED
-    /* Optimize for short life (keep in memory). */
-    /* MS forgot to define this one with a non-underscore form too. */
-    if (ins(d, "O_SHORT_LIVED", (long)_O_SHORT_LIVED)) return -1;
-#endif
-#ifdef O_TEMPORARY
-    /* Automatically delete when last handle is closed. */
-    if (ins(d, "O_TEMPORARY", (long)O_TEMPORARY)) return -1;
-#endif
-#ifdef O_RANDOM
-    /* Optimize for random access. */
-    if (ins(d, "O_RANDOM", (long)O_RANDOM)) return -1;
-#endif
-#ifdef O_SEQUENTIAL
-    /* Optimize for sequential access. */
-    if (ins(d, "O_SEQUENTIAL", (long)O_SEQUENTIAL)) return -1;
-#endif
-
-/* GNU extensions. */
-#ifdef O_ASYNC
-    /* Send a SIGIO signal whenever input or output
-       becomes available on file descriptor */
-    if (ins(d, "O_ASYNC", (long)O_ASYNC)) return -1;
-#endif
-#ifdef O_DIRECT
-    /* Direct disk access. */
-    if (ins(d, "O_DIRECT", (long)O_DIRECT)) return -1;
-#endif
-#ifdef O_DIRECTORY
-    /* Must be a directory.      */
-    if (ins(d, "O_DIRECTORY", (long)O_DIRECTORY)) return -1;
-#endif
-#ifdef O_NOFOLLOW
-    /* Do not follow links.      */
-    if (ins(d, "O_NOFOLLOW", (long)O_NOFOLLOW)) return -1;
-#endif
-#ifdef O_NOATIME
-    /* Do not update the access time. */
-    if (ins(d, "O_NOATIME", (long)O_NOATIME)) return -1;
-#endif
-
-    /* These come from sysexits.h */
-#ifdef EX_OK
-    if (ins(d, "EX_OK", (long)EX_OK)) return -1;
-#endif /* EX_OK */
-#ifdef EX_USAGE
-    if (ins(d, "EX_USAGE", (long)EX_USAGE)) return -1;
-#endif /* EX_USAGE */
-#ifdef EX_DATAERR
-    if (ins(d, "EX_DATAERR", (long)EX_DATAERR)) return -1;
-#endif /* EX_DATAERR */
-#ifdef EX_NOINPUT
-    if (ins(d, "EX_NOINPUT", (long)EX_NOINPUT)) return -1;
-#endif /* EX_NOINPUT */
-#ifdef EX_NOUSER
-    if (ins(d, "EX_NOUSER", (long)EX_NOUSER)) return -1;
-#endif /* EX_NOUSER */
-#ifdef EX_NOHOST
-    if (ins(d, "EX_NOHOST", (long)EX_NOHOST)) return -1;
-#endif /* EX_NOHOST */
-#ifdef EX_UNAVAILABLE
-    if (ins(d, "EX_UNAVAILABLE", (long)EX_UNAVAILABLE)) return -1;
-#endif /* EX_UNAVAILABLE */
-#ifdef EX_SOFTWARE
-    if (ins(d, "EX_SOFTWARE", (long)EX_SOFTWARE)) return -1;
-#endif /* EX_SOFTWARE */
-#ifdef EX_OSERR
-    if (ins(d, "EX_OSERR", (long)EX_OSERR)) return -1;
-#endif /* EX_OSERR */
-#ifdef EX_OSFILE
-    if (ins(d, "EX_OSFILE", (long)EX_OSFILE)) return -1;
-#endif /* EX_OSFILE */
-#ifdef EX_CANTCREAT
-    if (ins(d, "EX_CANTCREAT", (long)EX_CANTCREAT)) return -1;
-#endif /* EX_CANTCREAT */
-#ifdef EX_IOERR
-    if (ins(d, "EX_IOERR", (long)EX_IOERR)) return -1;
-#endif /* EX_IOERR */
-#ifdef EX_TEMPFAIL
-    if (ins(d, "EX_TEMPFAIL", (long)EX_TEMPFAIL)) return -1;
-#endif /* EX_TEMPFAIL */
-#ifdef EX_PROTOCOL
-    if (ins(d, "EX_PROTOCOL", (long)EX_PROTOCOL)) return -1;
-#endif /* EX_PROTOCOL */
-#ifdef EX_NOPERM
-    if (ins(d, "EX_NOPERM", (long)EX_NOPERM)) return -1;
-#endif /* EX_NOPERM */
-#ifdef EX_CONFIG
-    if (ins(d, "EX_CONFIG", (long)EX_CONFIG)) return -1;
-#endif /* EX_CONFIG */
-#ifdef EX_NOTFOUND
-    if (ins(d, "EX_NOTFOUND", (long)EX_NOTFOUND)) return -1;
-#endif /* EX_NOTFOUND */
-
-#ifdef HAVE_SPAWNV
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-    if (ins(d, "P_WAIT", (long)P_WAIT)) return -1;
-    if (ins(d, "P_NOWAIT", (long)P_NOWAIT)) return -1;
-    if (ins(d, "P_OVERLAY", (long)P_OVERLAY)) return -1;
-    if (ins(d, "P_DEBUG", (long)P_DEBUG)) return -1;
-    if (ins(d, "P_SESSION", (long)P_SESSION)) return -1;
-    if (ins(d, "P_DETACH", (long)P_DETACH)) return -1;
-    if (ins(d, "P_PM", (long)P_PM)) return -1;
-    if (ins(d, "P_DEFAULT", (long)P_DEFAULT)) return -1;
-    if (ins(d, "P_MINIMIZE", (long)P_MINIMIZE)) return -1;
-    if (ins(d, "P_MAXIMIZE", (long)P_MAXIMIZE)) return -1;
-    if (ins(d, "P_FULLSCREEN", (long)P_FULLSCREEN)) return -1;
-    if (ins(d, "P_WINDOWED", (long)P_WINDOWED)) return -1;
-    if (ins(d, "P_FOREGROUND", (long)P_FOREGROUND)) return -1;
-    if (ins(d, "P_BACKGROUND", (long)P_BACKGROUND)) return -1;
-    if (ins(d, "P_NOCLOSE", (long)P_NOCLOSE)) return -1;
-    if (ins(d, "P_NOSESSION", (long)P_NOSESSION)) return -1;
-    if (ins(d, "P_QUOTE", (long)P_QUOTE)) return -1;
-    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;
-#else
-    if (ins(d, "P_WAIT", (long)_P_WAIT)) return -1;
-    if (ins(d, "P_NOWAIT", (long)_P_NOWAIT)) return -1;
-    if (ins(d, "P_OVERLAY", (long)_OLD_P_OVERLAY)) return -1;
-    if (ins(d, "P_NOWAITO", (long)_P_NOWAITO)) return -1;
-    if (ins(d, "P_DETACH", (long)_P_DETACH)) return -1;
-#endif
-#endif
-
-#if defined(PYOS_OS2)
-    if (insertvalues(d)) return -1;
-#endif
-    return 0;
-}
-
-
-#if (defined(_MSC_VER) || defined(__WATCOMC__) || defined(__BORLANDC__)) && !defined(__QNX__)
-#define INITFUNC initnt
-#define MODNAME "nt"
-
-#elif defined(PYOS_OS2)
-#define INITFUNC initos2
-#define MODNAME "os2"
-
-#else
-#define INITFUNC initposix
-#define MODNAME "posix"
-#endif
-
-PyMODINIT_FUNC
-INITFUNC(void)
-{
-    PyObject *m, *v;
-
-    m = Py_InitModule3(MODNAME,
-                       posix_methods,
-                       posix__doc__);
-    if (m == NULL)
-        return;
-
-    /* Initialize environ dictionary */
-    v = convertenviron();
-    Py_XINCREF(v);
-    if (v == NULL || PyModule_AddObject(m, "environ", v) != 0)
-        return;
-    Py_DECREF(v);
-
-    if (all_ins(m))
-        return;
-
-    if (setup_confname_tables(m))
-        return;
-
-    Py_INCREF(PyExc_OSError);
-    PyModule_AddObject(m, "error", PyExc_OSError);
-
-#ifdef HAVE_PUTENV
-    if (posix_putenv_garbage == NULL)
-        posix_putenv_garbage = PyDict_New();
-#endif
-
-    if (!initialized) {
-        stat_result_desc.name = MODNAME ".stat_result";
-        stat_result_desc.fields[7].name = PyStructSequence_UnnamedField;
-        stat_result_desc.fields[8].name = PyStructSequence_UnnamedField;
-        stat_result_desc.fields[9].name = PyStructSequence_UnnamedField;
-        PyStructSequence_InitType(&StatResultType, &stat_result_desc);
-        structseq_new = StatResultType.tp_new;
-        StatResultType.tp_new = statresult_new;
-
-        statvfs_result_desc.name = MODNAME ".statvfs_result";
-        PyStructSequence_InitType(&StatVFSResultType, &statvfs_result_desc);
-#ifdef NEED_TICKS_PER_SECOND
-#  if defined(HAVE_SYSCONF) && defined(_SC_CLK_TCK)
-        ticks_per_second = sysconf(_SC_CLK_TCK);
-#  elif defined(HZ)
-        ticks_per_second = HZ;
-#  else
-        ticks_per_second = 60; /* magic fallback value; may be bogus */
-#  endif
-#endif
-    }
-    Py_INCREF((PyObject*) &StatResultType);
-    PyModule_AddObject(m, "stat_result", (PyObject*) &StatResultType);
-    Py_INCREF((PyObject*) &StatVFSResultType);
-    PyModule_AddObject(m, "statvfs_result",
-                       (PyObject*) &StatVFSResultType);
-    initialized = 1;
-
-#ifdef __APPLE__
-    /*
-     * Step 2 of weak-linking support on Mac OS X.
-     *
-     * The code below removes functions that are not available on the
-     * currently active platform.
-     *
-     * This block allow one to use a python binary that was build on
-     * OSX 10.4 on OSX 10.3, without loosing access to new APIs on
-     * OSX 10.4.
-     */
-#ifdef HAVE_FSTATVFS
-    if (fstatvfs == NULL) {
-        if (PyObject_DelAttrString(m, "fstatvfs") == -1) {
-            return;
-        }
-    }
-#endif /* HAVE_FSTATVFS */
-
-#ifdef HAVE_STATVFS
-    if (statvfs == NULL) {
-        if (PyObject_DelAttrString(m, "statvfs") == -1) {
-            return;
-        }
-    }
-#endif /* HAVE_STATVFS */
-
-# ifdef HAVE_LCHOWN
-    if (lchown == NULL) {
-        if (PyObject_DelAttrString(m, "lchown") == -1) {
-            return;
-        }
-    }
-#endif /* HAVE_LCHOWN */
-
-
-#endif /* __APPLE__ */
-
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/puremodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/puremodule.c
deleted file mode 100644
index 0f5d809..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/puremodule.c
+++ /dev/null
@@ -1,992 +0,0 @@
-/* This module exports the C API to such Pure Software Inc. (tm) (now
- * called Pure Atria Corporation) products as Purify (tm) and Quantify
- * (tm).  Other packages could be added, but I didn't have those products
- * and thus lack the API documentation.
- *
- * Currently supported: Quantify 2.x, Purify 3.x
- *
- * You need to decide which products you want to incorporate into the
- * module when you compile this file.  The way to do this is to edit
- * <Python>/Modules/Setup to pass the appropriate flags to the compiler.
- * -DWITH_PURIFY compiles in the Purify support, and -DWITH_QUANTIFY
- * compiles in the Quantify support.  -DWITH_ALL_PURE compiles in both.
- * You can also build a Purify'd or Quantify'd interpreter by passing in
- * the LINKCC variable to make.  E.g. if you want to build a Purify'd
- * interpreter and are using gcc, build Python with this command:
- *
- * make LINKCC='purify gcc'
- *
- * It would be nice (and probably easy) to provide this file as a shared
- * library, however since it doesn't appear that Pure gives us shared
- * libraries of the stubs, it doesn't really matter.  For now, you have to
- * link this file in statically.
- *
- * Major bogosity.  The purify.h header file exports purify_exit(), but
- * guess what?  It is not defined in the libpurify_stubs.a file!  I tried
- * to fake one here, hoping the Pure linker would Do The Right Thing when
- * instrumented for Purify, but it doesn't seem to, so I don't export
- * purify_exit() to the Python layer.  In Python you should raise a
- * SystemExit exception anyway.
- *
- * The actual purify.h and quantify.h files which embody the APIs are
- * copyrighted by Pure Software, Inc. and are only attainable through them.
- * This module assumes you have legally installed licenses of their
- * software.  Contact them on the Web via <http://www.pureatria.com/>
- *
- * Author: Barry Warsaw <bwarsaw@python.org>
- *                      <bwarsaw@cnri.reston.va.us>
- */
-
-#include "Python.h"
-
-#if defined(WITH_PURIFY) || defined(WITH_ALL_PURE)
-#    include <purify.h>
-#    define HAS_PURIFY_EXIT 0                /* See note at top of file */
-#    define PURE_PURIFY_VERSION 3            /* not provided by purify.h */
-#endif
-#if defined(WITH_QUANTIFY) || defined(WITH_ALL_PURE)
-#    include <quantify.h>
-#    define PURE_QUANTIFY_VERSION 2          /* not provided by quantify.h */
-#endif
-#if defined(PURIFY_H) || defined(QUANTIFY_H)
-#    define COMMON_PURE_FUNCTIONS
-#endif /* PURIFY_H || QUANTIFY_H */
-
-typedef int (*VoidArgFunc)(void);
-typedef int (*StringArgFunc)(char*);
-typedef int (*PrintfishFunc)(const char*, ...);
-typedef int (*StringIntArgFunc)(const char*, int);
-
-
-
-static PyObject*
-call_voidarg_function(VoidArgFunc func, PyObject *self, PyObject *args)
-{
-    int status;
-
-    if (!PyArg_ParseTuple(args, ""))
-        return NULL;
-
-    status = func();
-    return Py_BuildValue("i", status);
-}
-
-static PyObject*
-call_stringarg_function(StringArgFunc func, PyObject *self, PyObject *args)
-{
-    int status;
-    char* stringarg;
-
-    if (!PyArg_ParseTuple(args, "s", &stringarg))
-        return NULL;
-
-    status = func(stringarg);
-    return Py_BuildValue("i", status);
-}
-
-static PyObject*
-call_stringorint_function(StringArgFunc func, PyObject *self, PyObject *args)
-{
-    int status;
-    int intarg;
-    char* stringarg;
-
-    /* according to the quantify.h file, the argument to
-     * quantify_*_recording_system_call can be an integer or a string,
-     * but the functions are prototyped as taking a single char*
-     * argument. Yikes!
-     */
-    if (PyArg_ParseTuple(args, "i", &intarg))
-        /* func is prototyped as int(*)(char*)
-         * better shut up the compiler
-         */
-        status = func((char*)intarg);
-
-    else {
-        PyErr_Clear();
-        if (!PyArg_ParseTuple(args, "s", &stringarg))
-            return NULL;
-        else
-            status = func(stringarg);
-    }
-    return Py_BuildValue("i", status);
-}
-
-static PyObject*
-call_printfish_function(PrintfishFunc func, PyObject *self, PyObject *args)
-{
-    /* we support the printf() style vararg functions by requiring the
-     * formatting be done in Python.  At the C level we pass just a string
-     * to the printf() style function.
-     */
-    int status;
-    char* argstring;
-
-    if (!PyArg_ParseTuple(args, "s", &argstring))
-        return NULL;
-
-    status = func("%s", argstring);
-    return Py_BuildValue("i", status);
-}
-
-static PyObject*
-call_intasaddr_function(StringArgFunc func, PyObject *self, PyObject *args)
-{
-    long memrep;
-    int id;
-
-    if (!PyArg_ParseTuple(args, "l", &memrep))
-        return NULL;
-
-    id = func((char*)memrep);
-    return Py_BuildValue("i", id);
-}
-
-static PyObject*
-call_stringandint_function(StringIntArgFunc func, PyObject *self,
-                           PyObject *args)
-{
-    long srcrep;
-    int size;
-    int status;
-
-    if (!PyArg_ParseTuple(args, "li", &srcrep, &size))
-        return NULL;
-
-    status = func((char*)srcrep, size);
-    return Py_BuildValue("i", status);
-}
-
-
-
-/* functions common to all products
- *
- * N.B. These printf() style functions are a bit of a kludge.  Since the
- * API doesn't provide vprintf versions of them, we can't call them
- * directly.  They don't support all the standard printf % modifiers
- * anyway.  The way to use these is to use Python's % string operator to do
- * the formatting.  By the time these functions get the thing to print,
- * it's already a string, and they just use "%s" as the format string.
- */
-
-#ifdef COMMON_PURE_FUNCTIONS
-
-static PyObject*
-pure_pure_logfile_printf(PyObject* self, PyObject* args)
-{
-    return call_printfish_function(pure_logfile_printf, self, args);
-}
-
-static PyObject*
-pure_pure_printf(PyObject* self, PyObject* args)
-{
-    return call_printfish_function(pure_printf, self, args);
-}
-
-static PyObject*
-pure_pure_printf_with_banner(PyObject* self, PyObject* args)
-{
-    return call_printfish_function(pure_printf_with_banner, self, args);
-}
-
-
-#endif /* COMMON_PURE_FUNCTIONS */
-
-
-
-/* Purify functions
- *
- * N.B. There are some interfaces described in the purify.h file that are
- * not described in the manual.
- *
- * Unsigned longs purify_report_{address,number,type,result} are not
- * accessible from the Python layer since they seem mostly useful when
- * purify_stop_here() is called by the (C) debugger.  The same is true of
- * the purify_stop_here_internal() function so it isn't exported either.
- * And purify_stop_here() should never be called directly.
- *
- * The header file says purify_{new,all,clear_new}_reports() are obsolete
- * so they aren't exported.
- *
- * None of the custom dynamic loader functions are exported.
- *
- * purify_unsafe_memcpy() isn't exported.
- *
- * purify_{start,size}_of_block() aren't exported.
- *
- * The manual that I have says that the prototype for the second argument
- * to purify_map_pool is:
- *
- *    void (*fn)(char*)
- *
- * but the purify.h file declares it as:
- *
- *    void (*fn)(char*, int, void*)
- *
- * and does not explain what the other arguments are for.  I support the
- * latter but I don't know if I do it right or usefully.
- *
- * The header file says that purify_describe() returns a char* which is the
- * pointer passed to it.  The manual says it returns an int, but I believe
- * that is a typo.
- */
-#ifdef PURIFY_H
-
-static PyObject*
-pure_purify_all_inuse(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_all_inuse, self, args);
-}
-static PyObject*
-pure_purify_all_leaks(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_all_leaks, self, args);
-}
-static PyObject*
-pure_purify_new_inuse(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_new_inuse, self, args);
-}
-static PyObject*
-pure_purify_new_leaks(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_new_leaks, self, args);
-}
-static PyObject*
-pure_purify_clear_inuse(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_clear_inuse, self, args);
-}
-static PyObject*
-pure_purify_clear_leaks(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_clear_leaks, self, args);
-}
-static PyObject*
-pure_purify_all_fds_inuse(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_all_fds_inuse, self, args);
-}
-static PyObject*
-pure_purify_new_fds_inuse(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_new_fds_inuse, self, args);
-}
-static PyObject*
-pure_purify_printf_with_call_chain(PyObject *self, PyObject *args)
-{
-    return call_printfish_function(purify_printf_with_call_chain,
-                                   self, args);
-}
-static PyObject*
-pure_purify_set_pool_id(PyObject *self, PyObject *args)
-{
-    long memrep;
-    int id;
-
-    if (!PyArg_ParseTuple(args, "li:purify_set_pool_id", &memrep, &id))
-        return NULL;
-
-    purify_set_pool_id((char*)memrep, id);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-static PyObject*
-pure_purify_get_pool_id(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_get_pool_id, self, args);
-}
-static PyObject*
-pure_purify_set_user_data(PyObject *self, PyObject *args)
-{
-    long memrep;
-    long datarep;
-
-    if (!PyArg_ParseTuple(args, "ll:purify_set_user_data", &memrep, &datarep))
-        return NULL;
-
-    purify_set_user_data((char*)memrep, (void*)datarep);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-static PyObject*
-pure_purify_get_user_data(PyObject *self, PyObject *args)
-{
-    /* can't use call_intasaddr_function() since purify_get_user_data()
-     * returns a void*
-     */
-    long memrep;
-    void* data;
-
-    if (!PyArg_ParseTuple(args, "l:purify_get_user_data", &memrep))
-        return NULL;
-
-    data = purify_get_user_data((char*)memrep);
-    return Py_BuildValue("l", (long)data);
-}
-
-
-/* this global variable is shared by both mapping functions:
- * pure_purify_map_pool() and pure_purify_map_pool_id().  Since they cache
- * this variable it should be safe in the face of recursion or cross
- * calling.
- *
- * Further note that the prototype for the callback function is wrong in
- * the Purify manual.  The manual says the function takes a single char*,
- * but the header file says it takes an additional int and void*.  I have
- * no idea what these are for!
- */
-static PyObject* MapCallable = NULL;
-
-static void
-map_pool_callback(char* mem, int user_size, void *user_aux_data)
-{
-    long memrep = (long)mem;
-    long user_aux_data_rep = (long)user_aux_data;
-    PyObject* result;
-    PyObject* memobj = Py_BuildValue("lil", memrep, user_size,
-                                     user_aux_data_rep);
-
-    if (memobj == NULL)
-        return;
-
-    result = PyEval_CallObject(MapCallable, memobj);
-    Py_DECREF(result);
-    Py_DECREF(memobj);
-}
-
-static PyObject*
-pure_purify_map_pool(PyObject *self, PyObject *args)
-{
-    /* cache global variable in case of recursion */
-    PyObject* saved_callable = MapCallable;
-    PyObject* arg_callable;
-    int id;
-
-    if (!PyArg_ParseTuple(args, "iO:purify_map_pool", &id, &arg_callable))
-        return NULL;
-
-    if (!PyCallable_Check(arg_callable)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "Second argument must be callable");
-        return NULL;
-    }
-    MapCallable = arg_callable;
-    purify_map_pool(id, map_pool_callback);
-    MapCallable = saved_callable;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static void
-PurifyMapPoolIdCallback(int id)
-{
-    PyObject* result;
-    PyObject* intobj = Py_BuildValue("i", id);
-
-    if (intobj == NULL)
-        return;
-
-    result = PyEval_CallObject(MapCallable, intobj);
-    Py_DECREF(result);
-    Py_DECREF(intobj);
-}
-
-static PyObject*
-pure_purify_map_pool_id(PyObject *self, PyObject *args)
-{
-    /* cache global variable in case of recursion */
-    PyObject* saved_callable = MapCallable;
-    PyObject* arg_callable;
-
-    if (!PyArg_ParseTuple(args, "O:purify_map_pool_id", &arg_callable))
-        return NULL;
-
-    if (!PyCallable_Check(arg_callable)) {
-        PyErr_SetString(PyExc_TypeError, "Argument must be callable.");
-        return NULL;
-    }
-
-    MapCallable = arg_callable;
-    purify_map_pool_id(PurifyMapPoolIdCallback);
-    MapCallable = saved_callable;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-
-
-static PyObject*
-pure_purify_new_messages(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_new_messages, self, args);
-}
-static PyObject*
-pure_purify_all_messages(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_all_messages, self, args);
-}
-static PyObject*
-pure_purify_clear_messages(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_clear_messages, self, args);
-}
-static PyObject*
-pure_purify_clear_new_messages(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_clear_new_messages, self, args);
-}
-static PyObject*
-pure_purify_start_batch(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_start_batch, self, args);
-}
-static PyObject*
-pure_purify_start_batch_show_first(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_start_batch_show_first,
-                                 self, args);
-}
-static PyObject*
-pure_purify_stop_batch(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_stop_batch, self, args);
-}
-static PyObject*
-pure_purify_name_thread(PyObject *self, PyObject *args)
-{
-    /* can't strictly use call_stringarg_function since
-     * purify_name_thread takes a const char*, not a char*
-     */
-    int status;
-    char* stringarg;
-
-    if (!PyArg_ParseTuple(args, "s:purify_name_thread", &stringarg))
-        return NULL;
-
-    status = purify_name_thread(stringarg);
-    return Py_BuildValue("i", status);
-}
-static PyObject*
-pure_purify_watch(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch, self, args);
-}
-static PyObject*
-pure_purify_watch_1(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_1, self, args);
-}
-static PyObject*
-pure_purify_watch_2(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_2, self, args);
-}
-static PyObject*
-pure_purify_watch_4(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_4, self, args);
-}
-static PyObject*
-pure_purify_watch_8(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_8, self, args);
-}
-static PyObject*
-pure_purify_watch_w_1(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_w_1, self, args);
-}
-static PyObject*
-pure_purify_watch_w_2(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_w_2, self, args);
-}
-static PyObject*
-pure_purify_watch_w_4(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_w_4, self, args);
-}
-static PyObject*
-pure_purify_watch_w_8(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_w_8, self, args);
-}
-static PyObject*
-pure_purify_watch_r_1(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_r_1, self, args);
-}
-static PyObject*
-pure_purify_watch_r_2(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_r_2, self, args);
-}
-static PyObject*
-pure_purify_watch_r_4(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_r_4, self, args);
-}
-static PyObject*
-pure_purify_watch_r_8(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_r_8, self, args);
-}
-static PyObject*
-pure_purify_watch_rw_1(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_rw_1, self, args);
-}
-static PyObject*
-pure_purify_watch_rw_2(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_rw_2, self, args);
-}
-static PyObject*
-pure_purify_watch_rw_4(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_rw_4, self, args);
-}
-static PyObject*
-pure_purify_watch_rw_8(PyObject *self, PyObject *args)
-{
-    return call_intasaddr_function(purify_watch_rw_8, self, args);
-}
-
-static PyObject*
-pure_purify_watch_n(PyObject *self, PyObject *args)
-{
-    long addrrep;
-    unsigned int size;
-    char* type;
-    int status;
-
-    if (!PyArg_ParseTuple(args, "lis:purify_watch_n", &addrrep, &size, &type))
-        return NULL;
-
-    status = purify_watch_n((char*)addrrep, size, type);
-    return Py_BuildValue("i", status);
-}
-
-static PyObject*
-pure_purify_watch_info(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_watch_info, self, args);
-}
-
-static PyObject*
-pure_purify_watch_remove(PyObject *self, PyObject *args)
-{
-    int watchno;
-    int status;
-
-    if (!PyArg_ParseTuple(args, "i:purify_watch_remove", &watchno))
-        return NULL;
-
-    status = purify_watch_remove(watchno);
-    return Py_BuildValue("i", status);
-}
-
-static PyObject*
-pure_purify_watch_remove_all(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_watch_remove_all, self, args);
-}
-static PyObject*
-pure_purify_describe(PyObject *self, PyObject *args)
-{
-    long addrrep;
-    char* rtn;
-
-    if (!PyArg_ParseTuple(args, "l:purify_describe", &addrrep))
-        return NULL;
-
-    rtn = purify_describe((char*)addrrep);
-    return Py_BuildValue("l", (long)rtn);
-}
-
-static PyObject*
-pure_purify_what_colors(PyObject *self, PyObject *args)
-{
-    long addrrep;
-    unsigned int size;
-    int status;
-
-    if (!PyArg_ParseTuple(args, "li:purify_what_colors", &addrrep, &size))
-        return NULL;
-
-    status = purify_what_colors((char*)addrrep, size);
-    return Py_BuildValue("i", status);
-}
-
-static PyObject*
-pure_purify_is_running(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(purify_is_running, self, args);
-}
-
-static PyObject*
-pure_purify_assert_is_readable(PyObject *self, PyObject *args)
-{
-    return call_stringandint_function(purify_assert_is_readable,
-                                      self, args);
-}
-static PyObject*
-pure_purify_assert_is_writable(PyObject *self, PyObject *args)
-{
-    return call_stringandint_function(purify_assert_is_writable,
-                                      self, args);
-}
-
-#if HAS_PURIFY_EXIT
-
-/* I wish I could include this, but I can't.  See the notes at the top of
- * the file.
- */
-
-static PyObject*
-pure_purify_exit(PyObject *self, PyObject *args)
-{
-    int status;
-
-    if (!PyArg_ParseTuple(args, "i:purify_exit", &status))
-        return NULL;
-
-    /* purify_exit doesn't always act like exit(). See the manual */
-    purify_exit(status);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* HAS_PURIFY_EXIT */
-
-#endif /* PURIFY_H */
-
-
-
-/* Quantify functions
- *
- * N.B. Some of these functions are only described in the quantify.h file,
- * not in the version of the hardcopy manual that I had.  If you're not
- * sure what some of these do, check the header file, it is documented
- * fairly well.
- *
- * None of the custom dynamic loader functions are exported.
- *
- */
-#ifdef QUANTIFY_H
-
-static PyObject*
-pure_quantify_is_running(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(quantify_is_running, self, args);
-}
-static PyObject*
-pure_quantify_help(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(quantify_help, self, args);
-}
-static PyObject*
-pure_quantify_print_recording_state(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(quantify_print_recording_state,
-                                 self, args);
-}
-static PyObject*
-pure_quantify_start_recording_data(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(quantify_start_recording_data,
-                                 self, args);
-}
-static PyObject*
-pure_quantify_stop_recording_data(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(quantify_stop_recording_data, self, args);
-}
-static PyObject*
-pure_quantify_is_recording_data(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(quantify_is_recording_data, self, args);
-}
-static PyObject*
-pure_quantify_start_recording_system_calls(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(quantify_start_recording_system_calls,
-                                 self, args);
-}
-static PyObject*
-pure_quantify_stop_recording_system_calls(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(quantify_stop_recording_system_calls,
-                                 self, args);
-}
-static PyObject*
-pure_quantify_is_recording_system_calls(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(quantify_is_recording_system_calls,
-                                 self, args);
-}
-static PyObject*
-pure_quantify_start_recording_system_call(PyObject *self, PyObject *args)
-{
-    return call_stringorint_function(quantify_start_recording_system_call,
-                                       self, args);
-}
-static PyObject*
-pure_quantify_stop_recording_system_call(PyObject *self, PyObject *args)
-{
-    return call_stringorint_function(quantify_stop_recording_system_call,
-                                     self, args);
-}
-static PyObject*
-pure_quantify_is_recording_system_call(PyObject *self, PyObject *args)
-{
-    return call_stringorint_function(quantify_is_recording_system_call,
-                                     self, args);
-}
-static PyObject*
-pure_quantify_start_recording_dynamic_library_data(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(
-        quantify_start_recording_dynamic_library_data,
-        self, args);
-}
-static PyObject*
-pure_quantify_stop_recording_dynamic_library_data(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(
-        quantify_stop_recording_dynamic_library_data,
-        self, args);
-}
-static PyObject*
-pure_quantify_is_recording_dynamic_library_data(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(
-        quantify_is_recording_dynamic_library_data,
-        self, args);
-}
-static PyObject*
-pure_quantify_start_recording_register_window_traps(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(
-        quantify_start_recording_register_window_traps,
-        self, args);
-}
-static PyObject*
-pure_quantify_stop_recording_register_window_traps(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(
-        quantify_stop_recording_register_window_traps,
-        self, args);
-}
-static PyObject*
-pure_quantify_is_recording_register_window_traps(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(
-        quantify_is_recording_register_window_traps,
-        self, args);
-}
-static PyObject*
-pure_quantify_disable_recording_data(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(quantify_disable_recording_data,
-                                 self, args);
-}
-static PyObject*
-pure_quantify_clear_data(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(quantify_clear_data, self, args);
-}
-static PyObject*
-pure_quantify_save_data(PyObject *self, PyObject *args)
-{
-    return call_voidarg_function(quantify_save_data, self, args);
-}
-static PyObject*
-pure_quantify_save_data_to_file(PyObject *self, PyObject *args)
-{
-    return call_stringarg_function(quantify_save_data_to_file, self, args);
-}
-static PyObject*
-pure_quantify_add_annotation(PyObject *self, PyObject *args)
-{
-    return call_stringarg_function(quantify_add_annotation, self, args);
-}
-
-#endif /* QUANTIFY_H */
-
-
-
-/* external interface
- */
-static struct PyMethodDef
-pure_methods[] = {
-#ifdef COMMON_PURE_FUNCTIONS
-    {"pure_logfile_printf",            pure_pure_logfile_printf,            METH_VARARGS},
-    {"pure_printf",                    pure_pure_printf,                    METH_VARARGS},
-    {"pure_printf_with_banner",        pure_pure_printf_with_banner,        METH_VARARGS},
-#endif /* COMMON_PURE_FUNCTIONS */
-#ifdef PURIFY_H
-    {"purify_all_inuse",               pure_purify_all_inuse,               METH_VARARGS},
-    {"purify_all_leaks",               pure_purify_all_leaks,               METH_VARARGS},
-    {"purify_new_inuse",               pure_purify_new_inuse,               METH_VARARGS},
-    {"purify_new_leaks",               pure_purify_new_leaks,               METH_VARARGS},
-    {"purify_clear_inuse",             pure_purify_clear_inuse,             METH_VARARGS},
-    {"purify_clear_leaks",             pure_purify_clear_leaks,             METH_VARARGS},
-    {"purify_all_fds_inuse",           pure_purify_all_fds_inuse,           METH_VARARGS},
-    {"purify_new_fds_inuse",           pure_purify_new_fds_inuse,           METH_VARARGS},
-    /* see purify.h */
-    {"purify_logfile_printf",          pure_pure_logfile_printf,            METH_VARARGS},
-    {"purify_printf",                  pure_pure_printf,                    METH_VARARGS},
-    {"purify_printf_with_banner",      pure_pure_printf_with_banner,        METH_VARARGS},
-    /**/
-    {"purify_printf_with_call_chain",  pure_purify_printf_with_call_chain,  METH_VARARGS},
-    {"purify_set_pool_id",             pure_purify_set_pool_id,             METH_VARARGS},
-    {"purify_get_pool_id",             pure_purify_get_pool_id,             METH_VARARGS},
-    {"purify_set_user_data",           pure_purify_set_user_data,           METH_VARARGS},
-    {"purify_get_user_data",           pure_purify_get_user_data,           METH_VARARGS},
-    {"purify_map_pool",                pure_purify_map_pool,                METH_VARARGS},
-    {"purify_map_pool_id",             pure_purify_map_pool_id,             METH_VARARGS},
-    {"purify_new_messages",            pure_purify_new_messages,            METH_VARARGS},
-    {"purify_all_messages",            pure_purify_all_messages,            METH_VARARGS},
-    {"purify_clear_messages",          pure_purify_clear_messages,          METH_VARARGS},
-    {"purify_clear_new_messages",      pure_purify_clear_new_messages,      METH_VARARGS},
-    {"purify_start_batch",             pure_purify_start_batch,             METH_VARARGS},
-    {"purify_start_batch_show_first",  pure_purify_start_batch_show_first,  METH_VARARGS},
-    {"purify_stop_batch",              pure_purify_stop_batch,              METH_VARARGS},
-    {"purify_name_thread",             pure_purify_name_thread,             METH_VARARGS},
-    {"purify_watch",                   pure_purify_watch,                   METH_VARARGS},
-    {"purify_watch_1",                 pure_purify_watch_1,                 METH_VARARGS},
-    {"purify_watch_2",                 pure_purify_watch_2,                 METH_VARARGS},
-    {"purify_watch_4",                 pure_purify_watch_4,                 METH_VARARGS},
-    {"purify_watch_8",                 pure_purify_watch_8,                 METH_VARARGS},
-    {"purify_watch_w_1",               pure_purify_watch_w_1,               METH_VARARGS},
-    {"purify_watch_w_2",               pure_purify_watch_w_2,               METH_VARARGS},
-    {"purify_watch_w_4",               pure_purify_watch_w_4,               METH_VARARGS},
-    {"purify_watch_w_8",               pure_purify_watch_w_8,               METH_VARARGS},
-    {"purify_watch_r_1",               pure_purify_watch_r_1,               METH_VARARGS},
-    {"purify_watch_r_2",               pure_purify_watch_r_2,               METH_VARARGS},
-    {"purify_watch_r_4",               pure_purify_watch_r_4,               METH_VARARGS},
-    {"purify_watch_r_8",               pure_purify_watch_r_8,               METH_VARARGS},
-    {"purify_watch_rw_1",              pure_purify_watch_rw_1,              METH_VARARGS},
-    {"purify_watch_rw_2",              pure_purify_watch_rw_2,              METH_VARARGS},
-    {"purify_watch_rw_4",              pure_purify_watch_rw_4,              METH_VARARGS},
-    {"purify_watch_rw_8",              pure_purify_watch_rw_8,              METH_VARARGS},
-    {"purify_watch_n",                 pure_purify_watch_n,                 METH_VARARGS},
-    {"purify_watch_info",              pure_purify_watch_info,              METH_VARARGS},
-    {"purify_watch_remove",            pure_purify_watch_remove,            METH_VARARGS},
-    {"purify_watch_remove_all",        pure_purify_watch_remove_all,        METH_VARARGS},
-    {"purify_describe",                pure_purify_describe,                METH_VARARGS},
-    {"purify_what_colors",             pure_purify_what_colors,             METH_VARARGS},
-    {"purify_is_running",              pure_purify_is_running,              METH_VARARGS},
-    {"purify_assert_is_readable",      pure_purify_assert_is_readable,      METH_VARARGS},
-    {"purify_assert_is_writable",      pure_purify_assert_is_writable,      METH_VARARGS},
-#if HAS_PURIFY_EXIT
-    /* I wish I could include this, but I can't.  See the notes at the
-     * top of the file.
-     */
-    {"purify_exit",                    pure_purify_exit,                    METH_VARARGS},
-#endif /* HAS_PURIFY_EXIT */
-#endif /* PURIFY_H */
-#ifdef QUANTIFY_H
-    {"quantify_is_running",            pure_quantify_is_running,            METH_VARARGS},
-    {"quantify_help",                  pure_quantify_help,                  METH_VARARGS},
-    {"quantify_print_recording_state", pure_quantify_print_recording_state, METH_VARARGS},
-    {"quantify_start_recording_data",  pure_quantify_start_recording_data,  METH_VARARGS},
-    {"quantify_stop_recording_data",   pure_quantify_stop_recording_data,   METH_VARARGS},
-    {"quantify_is_recording_data",     pure_quantify_is_recording_data,  METH_VARARGS},
-    {"quantify_start_recording_system_calls",
-     pure_quantify_start_recording_system_calls, METH_VARARGS},
-    {"quantify_stop_recording_system_calls",
-     pure_quantify_stop_recording_system_calls, METH_VARARGS},
-    {"quantify_is_recording_system_calls",
-     pure_quantify_is_recording_system_calls, METH_VARARGS},
-    {"quantify_start_recording_system_call",
-     pure_quantify_start_recording_system_call, METH_VARARGS},
-    {"quantify_stop_recording_system_call",
-     pure_quantify_stop_recording_system_call, METH_VARARGS},
-    {"quantify_is_recording_system_call",
-     pure_quantify_is_recording_system_call, METH_VARARGS},
-    {"quantify_start_recording_dynamic_library_data",
-     pure_quantify_start_recording_dynamic_library_data, METH_VARARGS},
-    {"quantify_stop_recording_dynamic_library_data",
-     pure_quantify_stop_recording_dynamic_library_data, METH_VARARGS},
-    {"quantify_is_recording_dynamic_library_data",
-     pure_quantify_is_recording_dynamic_library_data, METH_VARARGS},
-    {"quantify_start_recording_register_window_traps",
-     pure_quantify_start_recording_register_window_traps, METH_VARARGS},
-    {"quantify_stop_recording_register_window_traps",
-     pure_quantify_stop_recording_register_window_traps, METH_VARARGS},
-    {"quantify_is_recording_register_window_traps",
-     pure_quantify_is_recording_register_window_traps, METH_VARARGS},
-    {"quantify_disable_recording_data",
-     pure_quantify_disable_recording_data, METH_VARARGS},
-    {"quantify_clear_data",        pure_quantify_clear_data,        METH_VARARGS},
-    {"quantify_save_data",         pure_quantify_save_data,         METH_VARARGS},
-    {"quantify_save_data_to_file", pure_quantify_save_data_to_file, METH_VARARGS},
-    {"quantify_add_annotation",    pure_quantify_add_annotation,    METH_VARARGS},
-#endif /* QUANTIFY_H */
-    {NULL,  NULL}                            /* sentinel */
-};
-
-
-
-static void
-ins(d, name, val)
-    PyObject *d;
-    char* name;
-    long val;
-{
-    PyObject *v = PyInt_FromLong(val);
-    if (v) {
-        (void)PyDict_SetItemString(d, name, v);
-        Py_DECREF(v);
-    }
-}
-
-
-void
-initpure()
-{
-    PyObject *m, *d;
-
-    if (PyErr_WarnPy3k("the pure module has been removed in "
-                       "Python 3.0", 2) < 0)
-        return;
-
-    m = Py_InitModule("pure", pure_methods);
-    if (m == NULL)
-        return;
-    d = PyModule_GetDict(m);
-
-    /* this is bogus because we should be able to find this information
-     * out from the header files.  Pure's current versions don't
-     * include this information!
-     */
-#ifdef PURE_PURIFY_VERSION
-    ins(d, "PURIFY_VERSION", PURE_PURIFY_VERSION);
-#else
-    PyDict_SetItemString(d, "PURIFY_VERSION", Py_None);
-#endif
-
-    /* these aren't terribly useful because purify_exit() isn't
-     * exported correctly.  See the note at the top of the file.
-     */
-#ifdef PURIFY_EXIT_ERRORS
-    ins(d, "PURIFY_EXIT_ERRORS", PURIFY_EXIT_ERRORS);
-#endif
-#ifdef PURIFY_EXIT_LEAKS
-    ins(d, "PURIFY_EXIT_LEAKS",  PURIFY_EXIT_LEAKS);
-#endif
-#ifdef PURIFY_EXIT_PLEAKS
-    ins(d, "PURIFY_EXIT_PLEAKS", PURIFY_EXIT_PLEAKS);
-#endif
-
-
-#ifdef PURE_QUANTIFY_VERSION
-    ins(d, "QUANTIFY_VERSION", PURE_QUANTIFY_VERSION);
-#else
-    PyDict_SetItemString(d, "QUANTIFY_VERSION", Py_None);
-#endif
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/pwdmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/pwdmodule.c
deleted file mode 100644
index 87dbdbf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/pwdmodule.c
+++ /dev/null
@@ -1,200 +0,0 @@
-
-/* UNIX password file access module */
-
-#include "Python.h"
-#include "structseq.h"
-
-#include <sys/types.h>
-#include <pwd.h>
-
-static PyStructSequence_Field struct_pwd_type_fields[] = {
-    {"pw_name", "user name"},
-    {"pw_passwd", "password"},
-    {"pw_uid", "user id"},
-    {"pw_gid", "group id"},
-    {"pw_gecos", "real name"},
-    {"pw_dir", "home directory"},
-    {"pw_shell", "shell program"},
-    {0}
-};
-
-PyDoc_STRVAR(struct_passwd__doc__,
-"pwd.struct_passwd: Results from getpw*() routines.\n\n\
-This object may be accessed either as a tuple of\n\
-  (pw_name,pw_passwd,pw_uid,pw_gid,pw_gecos,pw_dir,pw_shell)\n\
-or via the object attributes as named in the above tuple.");
-
-static PyStructSequence_Desc struct_pwd_type_desc = {
-    "pwd.struct_passwd",
-    struct_passwd__doc__,
-    struct_pwd_type_fields,
-    7,
-};
-
-PyDoc_STRVAR(pwd__doc__,
-"This module provides access to the Unix password database.\n\
-It is available on all Unix versions.\n\
-\n\
-Password database entries are reported as 7-tuples containing the following\n\
-items from the password database (see `<pwd.h>'), in order:\n\
-pw_name, pw_passwd, pw_uid, pw_gid, pw_gecos, pw_dir, pw_shell.\n\
-The uid and gid items are integers, all others are strings. An\n\
-exception is raised if the entry asked for cannot be found.");
-
-
-static int initialized;
-static PyTypeObject StructPwdType;
-
-static void
-sets(PyObject *v, int i, char* val)
-{
-  if (val)
-      PyStructSequence_SET_ITEM(v, i, PyString_FromString(val));
-  else {
-      PyStructSequence_SET_ITEM(v, i, Py_None);
-      Py_INCREF(Py_None);
-  }
-}
-
-static PyObject *
-mkpwent(struct passwd *p)
-{
-    int setIndex = 0;
-    PyObject *v = PyStructSequence_New(&StructPwdType);
-    if (v == NULL)
-        return NULL;
-
-#define SETI(i,val) PyStructSequence_SET_ITEM(v, i, PyInt_FromLong((long) val))
-#define SETS(i,val) sets(v, i, val)
-
-    SETS(setIndex++, p->pw_name);
-#ifdef __VMS
-    SETS(setIndex++, "");
-#else
-    SETS(setIndex++, p->pw_passwd);
-#endif
-    SETI(setIndex++, p->pw_uid);
-    SETI(setIndex++, p->pw_gid);
-#ifdef __VMS
-    SETS(setIndex++, "");
-#else
-    SETS(setIndex++, p->pw_gecos);
-#endif
-    SETS(setIndex++, p->pw_dir);
-    SETS(setIndex++, p->pw_shell);
-
-#undef SETS
-#undef SETI
-
-    if (PyErr_Occurred()) {
-        Py_XDECREF(v);
-        return NULL;
-    }
-
-    return v;
-}
-
-PyDoc_STRVAR(pwd_getpwuid__doc__,
-"getpwuid(uid) -> (pw_name,pw_passwd,pw_uid,\n\
-                  pw_gid,pw_gecos,pw_dir,pw_shell)\n\
-Return the password database entry for the given numeric user ID.\n\
-See help(pwd) for more on password database entries.");
-
-static PyObject *
-pwd_getpwuid(PyObject *self, PyObject *args)
-{
-    unsigned int uid;
-    struct passwd *p;
-    if (!PyArg_ParseTuple(args, "I:getpwuid", &uid))
-        return NULL;
-    if ((p = getpwuid(uid)) == NULL) {
-        PyErr_Format(PyExc_KeyError,
-                     "getpwuid(): uid not found: %d", uid);
-        return NULL;
-    }
-    return mkpwent(p);
-}
-
-PyDoc_STRVAR(pwd_getpwnam__doc__,
-"getpwnam(name) -> (pw_name,pw_passwd,pw_uid,\n\
-                    pw_gid,pw_gecos,pw_dir,pw_shell)\n\
-Return the password database entry for the given user name.\n\
-See help(pwd) for more on password database entries.");
-
-static PyObject *
-pwd_getpwnam(PyObject *self, PyObject *args)
-{
-    char *name;
-    struct passwd *p;
-    if (!PyArg_ParseTuple(args, "s:getpwnam", &name))
-        return NULL;
-    if ((p = getpwnam(name)) == NULL) {
-        PyErr_Format(PyExc_KeyError,
-                     "getpwnam(): name not found: %s", name);
-        return NULL;
-    }
-    return mkpwent(p);
-}
-
-#ifdef HAVE_GETPWENT
-PyDoc_STRVAR(pwd_getpwall__doc__,
-"getpwall() -> list_of_entries\n\
-Return a list of all available password database entries, \
-in arbitrary order.\n\
-See help(pwd) for more on password database entries.");
-
-static PyObject *
-pwd_getpwall(PyObject *self)
-{
-    PyObject *d;
-    struct passwd *p;
-    if ((d = PyList_New(0)) == NULL)
-        return NULL;
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-    if ((p = getpwuid(0)) != NULL) {
-#else
-    setpwent();
-    while ((p = getpwent()) != NULL) {
-#endif
-        PyObject *v = mkpwent(p);
-        if (v == NULL || PyList_Append(d, v) != 0) {
-            Py_XDECREF(v);
-            Py_DECREF(d);
-            endpwent();
-            return NULL;
-        }
-        Py_DECREF(v);
-    }
-    endpwent();
-    return d;
-}
-#endif
-
-static PyMethodDef pwd_methods[] = {
-    {"getpwuid",        pwd_getpwuid, METH_VARARGS, pwd_getpwuid__doc__},
-    {"getpwnam",        pwd_getpwnam, METH_VARARGS, pwd_getpwnam__doc__},
-#ifdef HAVE_GETPWENT
-    {"getpwall",        (PyCFunction)pwd_getpwall,
-        METH_NOARGS,  pwd_getpwall__doc__},
-#endif
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyMODINIT_FUNC
-initpwd(void)
-{
-    PyObject *m;
-    m = Py_InitModule3("pwd", pwd_methods, pwd__doc__);
-    if (m == NULL)
-        return;
-
-    if (!initialized)
-        PyStructSequence_InitType(&StructPwdType,
-                                  &struct_pwd_type_desc);
-    Py_INCREF((PyObject *) &StructPwdType);
-    PyModule_AddObject(m, "struct_passwd", (PyObject *) &StructPwdType);
-    /* And for b/w compatibility (this was defined by mistake): */
-    Py_INCREF((PyObject *) &StructPwdType);
-    PyModule_AddObject(m, "struct_pwent", (PyObject *) &StructPwdType);
-    initialized = 1;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/pyexpat.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/pyexpat.c
deleted file mode 100644
index e3fca75..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/pyexpat.c
+++ /dev/null
@@ -1,2123 +0,0 @@
-#include "Python.h"
-#include <ctype.h>
-
-#include "frameobject.h"
-#include "expat.h"
-
-#include "pyexpat.h"
-
-#define XML_COMBINED_VERSION (10000*XML_MAJOR_VERSION+100*XML_MINOR_VERSION+XML_MICRO_VERSION)
-
-#ifndef PyDoc_STRVAR
-
-/*
- * fdrake says:
- * Don't change the PyDoc_STR macro definition to (str), because
- * '''the parentheses cause compile failures
- * ("non-constant static initializer" or something like that)
- * on some platforms (Irix?)'''
- */
-#define PyDoc_STR(str)         str
-#define PyDoc_VAR(name)        static char name[]
-#define PyDoc_STRVAR(name,str) PyDoc_VAR(name) = PyDoc_STR(str)
-#endif
-
-#if (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 2)
-/* In Python 2.0 and  2.1, disabling Unicode was not possible. */
-#define Py_USING_UNICODE
-#else
-#define FIX_TRACE
-#endif
-
-enum HandlerTypes {
-    StartElement,
-    EndElement,
-    ProcessingInstruction,
-    CharacterData,
-    UnparsedEntityDecl,
-    NotationDecl,
-    StartNamespaceDecl,
-    EndNamespaceDecl,
-    Comment,
-    StartCdataSection,
-    EndCdataSection,
-    Default,
-    DefaultHandlerExpand,
-    NotStandalone,
-    ExternalEntityRef,
-    StartDoctypeDecl,
-    EndDoctypeDecl,
-    EntityDecl,
-    XmlDecl,
-    ElementDecl,
-    AttlistDecl,
-#if XML_COMBINED_VERSION >= 19504
-    SkippedEntity,
-#endif
-    _DummyDecl
-};
-
-static PyObject *ErrorObject;
-
-/* ----------------------------------------------------- */
-
-/* Declarations for objects of type xmlparser */
-
-typedef struct {
-    PyObject_HEAD
-
-    XML_Parser itself;
-    int returns_unicode;        /* True if Unicode strings are returned;
-                                   if false, UTF-8 strings are returned */
-    int ordered_attributes;     /* Return attributes as a list. */
-    int specified_attributes;   /* Report only specified attributes. */
-    int in_callback;            /* Is a callback active? */
-    int ns_prefixes;            /* Namespace-triplets mode? */
-    XML_Char *buffer;           /* Buffer used when accumulating characters */
-                                /* NULL if not enabled */
-    int buffer_size;            /* Size of buffer, in XML_Char units */
-    int buffer_used;            /* Buffer units in use */
-    PyObject *intern;           /* Dictionary to intern strings */
-    PyObject **handlers;
-} xmlparseobject;
-
-#define CHARACTER_DATA_BUFFER_SIZE 8192
-
-static PyTypeObject Xmlparsetype;
-
-typedef void (*xmlhandlersetter)(XML_Parser self, void *meth);
-typedef void* xmlhandler;
-
-struct HandlerInfo {
-    const char *name;
-    xmlhandlersetter setter;
-    xmlhandler handler;
-    PyCodeObject *tb_code;
-    PyObject *nameobj;
-};
-
-static struct HandlerInfo handler_info[64];
-
-/* Set an integer attribute on the error object; return true on success,
- * false on an exception.
- */
-static int
-set_error_attr(PyObject *err, char *name, int value)
-{
-    PyObject *v = PyInt_FromLong(value);
-
-    if (v == NULL || PyObject_SetAttrString(err, name, v) == -1) {
-        Py_XDECREF(v);
-        return 0;
-    }
-    Py_DECREF(v);
-    return 1;
-}
-
-/* Build and set an Expat exception, including positioning
- * information.  Always returns NULL.
- */
-static PyObject *
-set_error(xmlparseobject *self, enum XML_Error code)
-{
-    PyObject *err;
-    char buffer[256];
-    XML_Parser parser = self->itself;
-    int lineno = XML_GetErrorLineNumber(parser);
-    int column = XML_GetErrorColumnNumber(parser);
-
-    /* There is no risk of overflowing this buffer, since
-       even for 64-bit integers, there is sufficient space. */
-    sprintf(buffer, "%.200s: line %i, column %i",
-            XML_ErrorString(code), lineno, column);
-    err = PyObject_CallFunction(ErrorObject, "s", buffer);
-    if (  err != NULL
-          && set_error_attr(err, "code", code)
-          && set_error_attr(err, "offset", column)
-          && set_error_attr(err, "lineno", lineno)) {
-        PyErr_SetObject(ErrorObject, err);
-    }
-    Py_XDECREF(err);
-    return NULL;
-}
-
-static int
-have_handler(xmlparseobject *self, int type)
-{
-    PyObject *handler = self->handlers[type];
-    return handler != NULL;
-}
-
-static PyObject *
-get_handler_name(struct HandlerInfo *hinfo)
-{
-    PyObject *name = hinfo->nameobj;
-    if (name == NULL) {
-        name = PyString_FromString(hinfo->name);
-        hinfo->nameobj = name;
-    }
-    Py_XINCREF(name);
-    return name;
-}
-
-
-#ifdef Py_USING_UNICODE
-/* Convert a string of XML_Chars into a Unicode string.
-   Returns None if str is a null pointer. */
-
-static PyObject *
-conv_string_to_unicode(const XML_Char *str)
-{
-    /* XXX currently this code assumes that XML_Char is 8-bit,
-       and hence in UTF-8.  */
-    /* UTF-8 from Expat, Unicode desired */
-    if (str == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyUnicode_DecodeUTF8(str, strlen(str), "strict");
-}
-
-static PyObject *
-conv_string_len_to_unicode(const XML_Char *str, int len)
-{
-    /* XXX currently this code assumes that XML_Char is 8-bit,
-       and hence in UTF-8.  */
-    /* UTF-8 from Expat, Unicode desired */
-    if (str == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyUnicode_DecodeUTF8((const char *)str, len, "strict");
-}
-#endif
-
-/* Convert a string of XML_Chars into an 8-bit Python string.
-   Returns None if str is a null pointer. */
-
-static PyObject *
-conv_string_to_utf8(const XML_Char *str)
-{
-    /* XXX currently this code assumes that XML_Char is 8-bit,
-       and hence in UTF-8.  */
-    /* UTF-8 from Expat, UTF-8 desired */
-    if (str == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyString_FromString(str);
-}
-
-static PyObject *
-conv_string_len_to_utf8(const XML_Char *str, int len)
-{
-    /* XXX currently this code assumes that XML_Char is 8-bit,
-       and hence in UTF-8.  */
-    /* UTF-8 from Expat, UTF-8 desired */
-    if (str == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyString_FromStringAndSize((const char *)str, len);
-}
-
-/* Callback routines */
-
-static void clear_handlers(xmlparseobject *self, int initial);
-
-/* This handler is used when an error has been detected, in the hope
-   that actual parsing can be terminated early.  This will only help
-   if an external entity reference is encountered. */
-static int
-error_external_entity_ref_handler(XML_Parser parser,
-                                  const XML_Char *context,
-                                  const XML_Char *base,
-                                  const XML_Char *systemId,
-                                  const XML_Char *publicId)
-{
-    return 0;
-}
-
-/* Dummy character data handler used when an error (exception) has
-   been detected, and the actual parsing can be terminated early.
-   This is needed since character data handler can't be safely removed
-   from within the character data handler, but can be replaced.  It is
-   used only from the character data handler trampoline, and must be
-   used right after `flag_error()` is called. */
-static void
-noop_character_data_handler(void *userData, const XML_Char *data, int len)
-{
-    /* Do nothing. */
-}
-
-static void
-flag_error(xmlparseobject *self)
-{
-    clear_handlers(self, 0);
-    XML_SetExternalEntityRefHandler(self->itself,
-                                    error_external_entity_ref_handler);
-}
-
-static PyCodeObject*
-getcode(enum HandlerTypes slot, char* func_name, int lineno)
-{
-    if (handler_info[slot].tb_code == NULL) {
-        handler_info[slot].tb_code =
-            PyCode_NewEmpty(__FILE__, func_name, lineno);
-    }
-    return handler_info[slot].tb_code;
-}
-
-#ifdef FIX_TRACE
-static int
-trace_frame(PyThreadState *tstate, PyFrameObject *f, int code, PyObject *val)
-{
-    int result = 0;
-    if (!tstate->use_tracing || tstate->tracing)
-        return 0;
-    if (tstate->c_profilefunc != NULL) {
-        tstate->tracing++;
-        result = tstate->c_profilefunc(tstate->c_profileobj,
-                                       f, code , val);
-        tstate->use_tracing = ((tstate->c_tracefunc != NULL)
-                               || (tstate->c_profilefunc != NULL));
-        tstate->tracing--;
-        if (result)
-            return result;
-    }
-    if (tstate->c_tracefunc != NULL) {
-        tstate->tracing++;
-        result = tstate->c_tracefunc(tstate->c_traceobj,
-                                     f, code , val);
-        tstate->use_tracing = ((tstate->c_tracefunc != NULL)
-                               || (tstate->c_profilefunc != NULL));
-        tstate->tracing--;
-    }
-    return result;
-}
-
-static int
-trace_frame_exc(PyThreadState *tstate, PyFrameObject *f)
-{
-    PyObject *type, *value, *traceback, *arg;
-    int err;
-
-    if (tstate->c_tracefunc == NULL)
-        return 0;
-
-    PyErr_Fetch(&type, &value, &traceback);
-    if (value == NULL) {
-        value = Py_None;
-        Py_INCREF(value);
-    }
-#if PY_VERSION_HEX < 0x02040000
-    arg = Py_BuildValue("(OOO)", type, value, traceback);
-#else
-    arg = PyTuple_Pack(3, type, value, traceback);
-#endif
-    if (arg == NULL) {
-        PyErr_Restore(type, value, traceback);
-        return 0;
-    }
-    err = trace_frame(tstate, f, PyTrace_EXCEPTION, arg);
-    Py_DECREF(arg);
-    if (err == 0)
-        PyErr_Restore(type, value, traceback);
-    else {
-        Py_XDECREF(type);
-        Py_XDECREF(value);
-        Py_XDECREF(traceback);
-    }
-    return err;
-}
-#endif
-
-static PyObject*
-call_with_frame(PyCodeObject *c, PyObject* func, PyObject* args,
-                xmlparseobject *self)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-    PyFrameObject *f;
-    PyObject *res;
-
-    if (c == NULL)
-        return NULL;
-
-    f = PyFrame_New(tstate, c, PyEval_GetGlobals(), NULL);
-    if (f == NULL)
-        return NULL;
-    tstate->frame = f;
-#ifdef FIX_TRACE
-    if (trace_frame(tstate, f, PyTrace_CALL, Py_None) < 0) {
-        return NULL;
-    }
-#endif
-    res = PyEval_CallObject(func, args);
-    if (res == NULL) {
-        if (tstate->curexc_traceback == NULL)
-            PyTraceBack_Here(f);
-        XML_StopParser(self->itself, XML_FALSE);
-#ifdef FIX_TRACE
-        if (trace_frame_exc(tstate, f) < 0) {
-            return NULL;
-        }
-    }
-    else {
-        if (trace_frame(tstate, f, PyTrace_RETURN, res) < 0) {
-            Py_XDECREF(res);
-            res = NULL;
-        }
-    }
-#else
-    }
-#endif
-    tstate->frame = f->f_back;
-    Py_DECREF(f);
-    return res;
-}
-
-#ifndef Py_USING_UNICODE
-#define STRING_CONV_FUNC conv_string_to_utf8
-#else
-/* Python 2.0 and later versions, when built with Unicode support */
-#define STRING_CONV_FUNC (self->returns_unicode \
-                          ? conv_string_to_unicode : conv_string_to_utf8)
-#endif
-
-static PyObject*
-string_intern(xmlparseobject *self, const char* str)
-{
-    PyObject *result = STRING_CONV_FUNC(str);
-    PyObject *value;
-    /* result can be NULL if the unicode conversion failed. */
-    if (!result)
-        return result;
-    if (!self->intern)
-        return result;
-    value = PyDict_GetItem(self->intern, result);
-    if (!value) {
-        if (PyDict_SetItem(self->intern, result, result) == 0)
-            return result;
-        else
-            return NULL;
-    }
-    Py_INCREF(value);
-    Py_DECREF(result);
-    return value;
-}
-
-/* Return 0 on success, -1 on exception.
- * flag_error() will be called before return if needed.
- */
-static int
-call_character_handler(xmlparseobject *self, const XML_Char *buffer, int len)
-{
-    PyObject *args;
-    PyObject *temp;
-
-    if (!have_handler(self, CharacterData))
-        return -1;
-
-    args = PyTuple_New(1);
-    if (args == NULL)
-        return -1;
-#ifdef Py_USING_UNICODE
-    temp = (self->returns_unicode
-            ? conv_string_len_to_unicode(buffer, len)
-            : conv_string_len_to_utf8(buffer, len));
-#else
-    temp = conv_string_len_to_utf8(buffer, len);
-#endif
-    if (temp == NULL) {
-        Py_DECREF(args);
-        flag_error(self);
-        XML_SetCharacterDataHandler(self->itself,
-                                    noop_character_data_handler);
-        return -1;
-    }
-    PyTuple_SET_ITEM(args, 0, temp);
-    /* temp is now a borrowed reference; consider it unused. */
-    self->in_callback = 1;
-    temp = call_with_frame(getcode(CharacterData, "CharacterData", __LINE__),
-                           self->handlers[CharacterData], args, self);
-    /* temp is an owned reference again, or NULL */
-    self->in_callback = 0;
-    Py_DECREF(args);
-    if (temp == NULL) {
-        flag_error(self);
-        XML_SetCharacterDataHandler(self->itself,
-                                    noop_character_data_handler);
-        return -1;
-    }
-    Py_DECREF(temp);
-    return 0;
-}
-
-static int
-flush_character_buffer(xmlparseobject *self)
-{
-    int rc;
-    if (self->buffer == NULL || self->buffer_used == 0)
-        return 0;
-    rc = call_character_handler(self, self->buffer, self->buffer_used);
-    self->buffer_used = 0;
-    return rc;
-}
-
-static void
-my_CharacterDataHandler(void *userData, const XML_Char *data, int len)
-{
-    xmlparseobject *self = (xmlparseobject *) userData;
-    if (self->buffer == NULL)
-        call_character_handler(self, data, len);
-    else {
-        if ((self->buffer_used + len) > self->buffer_size) {
-            if (flush_character_buffer(self) < 0)
-                return;
-            /* handler might have changed; drop the rest on the floor
-             * if there isn't a handler anymore
-             */
-            if (!have_handler(self, CharacterData))
-                return;
-        }
-        if (len > self->buffer_size) {
-            call_character_handler(self, data, len);
-            self->buffer_used = 0;
-        }
-        else {
-            memcpy(self->buffer + self->buffer_used,
-                   data, len * sizeof(XML_Char));
-            self->buffer_used += len;
-        }
-    }
-}
-
-static void
-my_StartElementHandler(void *userData,
-                       const XML_Char *name, const XML_Char *atts[])
-{
-    xmlparseobject *self = (xmlparseobject *)userData;
-
-    if (have_handler(self, StartElement)) {
-        PyObject *container, *rv, *args;
-        int i, max;
-
-        if (flush_character_buffer(self) < 0)
-            return;
-        /* Set max to the number of slots filled in atts[]; max/2 is
-         * the number of attributes we need to process.
-         */
-        if (self->specified_attributes) {
-            max = XML_GetSpecifiedAttributeCount(self->itself);
-        }
-        else {
-            max = 0;
-            while (atts[max] != NULL)
-                max += 2;
-        }
-        /* Build the container. */
-        if (self->ordered_attributes)
-            container = PyList_New(max);
-        else
-            container = PyDict_New();
-        if (container == NULL) {
-            flag_error(self);
-            return;
-        }
-        for (i = 0; i < max; i += 2) {
-            PyObject *n = string_intern(self, (XML_Char *) atts[i]);
-            PyObject *v;
-            if (n == NULL) {
-                flag_error(self);
-                Py_DECREF(container);
-                return;
-            }
-            v = STRING_CONV_FUNC((XML_Char *) atts[i+1]);
-            if (v == NULL) {
-                flag_error(self);
-                Py_DECREF(container);
-                Py_DECREF(n);
-                return;
-            }
-            if (self->ordered_attributes) {
-                PyList_SET_ITEM(container, i, n);
-                PyList_SET_ITEM(container, i+1, v);
-            }
-            else if (PyDict_SetItem(container, n, v)) {
-                flag_error(self);
-                Py_DECREF(n);
-                Py_DECREF(v);
-                return;
-            }
-            else {
-                Py_DECREF(n);
-                Py_DECREF(v);
-            }
-        }
-        args = string_intern(self, name);
-        if (args != NULL)
-            args = Py_BuildValue("(NN)", args, container);
-        if (args == NULL) {
-            Py_DECREF(container);
-            return;
-        }
-        /* Container is now a borrowed reference; ignore it. */
-        self->in_callback = 1;
-        rv = call_with_frame(getcode(StartElement, "StartElement", __LINE__),
-                             self->handlers[StartElement], args, self);
-        self->in_callback = 0;
-        Py_DECREF(args);
-        if (rv == NULL) {
-            flag_error(self);
-            return;
-        }
-        Py_DECREF(rv);
-    }
-}
-
-#define RC_HANDLER(RC, NAME, PARAMS, INIT, PARAM_FORMAT, CONVERSION, \
-                RETURN, GETUSERDATA) \
-static RC \
-my_##NAME##Handler PARAMS {\
-    xmlparseobject *self = GETUSERDATA ; \
-    PyObject *args = NULL; \
-    PyObject *rv = NULL; \
-    INIT \
-\
-    if (have_handler(self, NAME)) { \
-        if (flush_character_buffer(self) < 0) \
-            return RETURN; \
-        args = Py_BuildValue PARAM_FORMAT ;\
-        if (!args) { flag_error(self); return RETURN;} \
-        self->in_callback = 1; \
-        rv = call_with_frame(getcode(NAME,#NAME,__LINE__), \
-                             self->handlers[NAME], args, self); \
-        self->in_callback = 0; \
-        Py_DECREF(args); \
-        if (rv == NULL) { \
-            flag_error(self); \
-            return RETURN; \
-        } \
-        CONVERSION \
-        Py_DECREF(rv); \
-    } \
-    return RETURN; \
-}
-
-#define VOID_HANDLER(NAME, PARAMS, PARAM_FORMAT) \
-        RC_HANDLER(void, NAME, PARAMS, ;, PARAM_FORMAT, ;, ;,\
-        (xmlparseobject *)userData)
-
-#define INT_HANDLER(NAME, PARAMS, PARAM_FORMAT)\
-        RC_HANDLER(int, NAME, PARAMS, int rc=0;, PARAM_FORMAT, \
-                        rc = PyInt_AsLong(rv);, rc, \
-        (xmlparseobject *)userData)
-
-VOID_HANDLER(EndElement,
-             (void *userData, const XML_Char *name),
-             ("(N)", string_intern(self, name)))
-
-VOID_HANDLER(ProcessingInstruction,
-             (void *userData,
-              const XML_Char *target,
-              const XML_Char *data),
-             ("(NO&)", string_intern(self, target), STRING_CONV_FUNC,data))
-
-VOID_HANDLER(UnparsedEntityDecl,
-             (void *userData,
-              const XML_Char *entityName,
-              const XML_Char *base,
-              const XML_Char *systemId,
-              const XML_Char *publicId,
-              const XML_Char *notationName),
-             ("(NNNNN)",
-              string_intern(self, entityName), string_intern(self, base),
-              string_intern(self, systemId), string_intern(self, publicId),
-              string_intern(self, notationName)))
-
-#ifndef Py_USING_UNICODE
-VOID_HANDLER(EntityDecl,
-             (void *userData,
-              const XML_Char *entityName,
-              int is_parameter_entity,
-              const XML_Char *value,
-              int value_length,
-              const XML_Char *base,
-              const XML_Char *systemId,
-              const XML_Char *publicId,
-              const XML_Char *notationName),
-             ("NiNNNNN",
-              string_intern(self, entityName), is_parameter_entity,
-              conv_string_len_to_utf8(value, value_length),
-              string_intern(self, base), string_intern(self, systemId),
-              string_intern(self, publicId),
-              string_intern(self, notationName)))
-#else
-VOID_HANDLER(EntityDecl,
-             (void *userData,
-              const XML_Char *entityName,
-              int is_parameter_entity,
-              const XML_Char *value,
-              int value_length,
-              const XML_Char *base,
-              const XML_Char *systemId,
-              const XML_Char *publicId,
-              const XML_Char *notationName),
-             ("NiNNNNN",
-              string_intern(self, entityName), is_parameter_entity,
-              (self->returns_unicode
-               ? conv_string_len_to_unicode(value, value_length)
-               : conv_string_len_to_utf8(value, value_length)),
-              string_intern(self, base), string_intern(self, systemId),
-              string_intern(self, publicId),
-              string_intern(self, notationName)))
-#endif
-
-VOID_HANDLER(XmlDecl,
-             (void *userData,
-              const XML_Char *version,
-              const XML_Char *encoding,
-              int standalone),
-             ("(O&O&i)",
-              STRING_CONV_FUNC,version, STRING_CONV_FUNC,encoding,
-              standalone))
-
-static PyObject *
-conv_content_model(XML_Content * const model,
-                   PyObject *(*conv_string)(const XML_Char *))
-{
-    PyObject *result = NULL;
-    PyObject *children = PyTuple_New(model->numchildren);
-    int i;
-
-    if (children != NULL) {
-        assert(model->numchildren < INT_MAX);
-        for (i = 0; i < (int)model->numchildren; ++i) {
-            PyObject *child = conv_content_model(&model->children[i],
-                                                 conv_string);
-            if (child == NULL) {
-                Py_XDECREF(children);
-                return NULL;
-            }
-            PyTuple_SET_ITEM(children, i, child);
-        }
-        result = Py_BuildValue("(iiO&N)",
-                               model->type, model->quant,
-                               conv_string,model->name, children);
-    }
-    return result;
-}
-
-static void
-my_ElementDeclHandler(void *userData,
-                      const XML_Char *name,
-                      XML_Content *model)
-{
-    xmlparseobject *self = (xmlparseobject *)userData;
-    PyObject *args = NULL;
-
-    if (have_handler(self, ElementDecl)) {
-        PyObject *rv = NULL;
-        PyObject *modelobj, *nameobj;
-
-        if (flush_character_buffer(self) < 0)
-            goto finally;
-#ifdef Py_USING_UNICODE
-        modelobj = conv_content_model(model,
-                                      (self->returns_unicode
-                                       ? conv_string_to_unicode
-                                       : conv_string_to_utf8));
-#else
-        modelobj = conv_content_model(model, conv_string_to_utf8);
-#endif
-        if (modelobj == NULL) {
-            flag_error(self);
-            goto finally;
-        }
-        nameobj = string_intern(self, name);
-        if (nameobj == NULL) {
-            Py_DECREF(modelobj);
-            flag_error(self);
-            goto finally;
-        }
-        args = Py_BuildValue("NN", nameobj, modelobj);
-        if (args == NULL) {
-            Py_DECREF(modelobj);
-            flag_error(self);
-            goto finally;
-        }
-        self->in_callback = 1;
-        rv = call_with_frame(getcode(ElementDecl, "ElementDecl", __LINE__),
-                             self->handlers[ElementDecl], args, self);
-        self->in_callback = 0;
-        if (rv == NULL) {
-            flag_error(self);
-            goto finally;
-        }
-        Py_DECREF(rv);
-    }
- finally:
-    Py_XDECREF(args);
-    XML_FreeContentModel(self->itself, model);
-    return;
-}
-
-VOID_HANDLER(AttlistDecl,
-             (void *userData,
-              const XML_Char *elname,
-              const XML_Char *attname,
-              const XML_Char *att_type,
-              const XML_Char *dflt,
-              int isrequired),
-             ("(NNO&O&i)",
-              string_intern(self, elname), string_intern(self, attname),
-              STRING_CONV_FUNC,att_type, STRING_CONV_FUNC,dflt,
-              isrequired))
-
-#if XML_COMBINED_VERSION >= 19504
-VOID_HANDLER(SkippedEntity,
-             (void *userData,
-              const XML_Char *entityName,
-              int is_parameter_entity),
-             ("Ni",
-              string_intern(self, entityName), is_parameter_entity))
-#endif
-
-VOID_HANDLER(NotationDecl,
-                (void *userData,
-                        const XML_Char *notationName,
-                        const XML_Char *base,
-                        const XML_Char *systemId,
-                        const XML_Char *publicId),
-                ("(NNNN)",
-                 string_intern(self, notationName), string_intern(self, base),
-                 string_intern(self, systemId), string_intern(self, publicId)))
-
-VOID_HANDLER(StartNamespaceDecl,
-                (void *userData,
-                      const XML_Char *prefix,
-                      const XML_Char *uri),
-                ("(NN)",
-                 string_intern(self, prefix), string_intern(self, uri)))
-
-VOID_HANDLER(EndNamespaceDecl,
-                (void *userData,
-                    const XML_Char *prefix),
-                ("(N)", string_intern(self, prefix)))
-
-VOID_HANDLER(Comment,
-               (void *userData, const XML_Char *data),
-                ("(O&)", STRING_CONV_FUNC,data))
-
-VOID_HANDLER(StartCdataSection,
-               (void *userData),
-                ("()"))
-
-VOID_HANDLER(EndCdataSection,
-               (void *userData),
-                ("()"))
-
-#ifndef Py_USING_UNICODE
-VOID_HANDLER(Default,
-              (void *userData, const XML_Char *s, int len),
-              ("(N)", conv_string_len_to_utf8(s,len)))
-
-VOID_HANDLER(DefaultHandlerExpand,
-              (void *userData, const XML_Char *s, int len),
-              ("(N)", conv_string_len_to_utf8(s,len)))
-#else
-VOID_HANDLER(Default,
-              (void *userData, const XML_Char *s, int len),
-              ("(N)", (self->returns_unicode
-                       ? conv_string_len_to_unicode(s,len)
-                       : conv_string_len_to_utf8(s,len))))
-
-VOID_HANDLER(DefaultHandlerExpand,
-              (void *userData, const XML_Char *s, int len),
-              ("(N)", (self->returns_unicode
-                       ? conv_string_len_to_unicode(s,len)
-                       : conv_string_len_to_utf8(s,len))))
-#endif
-
-INT_HANDLER(NotStandalone,
-                (void *userData),
-                ("()"))
-
-RC_HANDLER(int, ExternalEntityRef,
-                (XML_Parser parser,
-                    const XML_Char *context,
-                    const XML_Char *base,
-                    const XML_Char *systemId,
-                    const XML_Char *publicId),
-                int rc=0;,
-                ("(O&NNN)",
-                 STRING_CONV_FUNC,context, string_intern(self, base),
-                 string_intern(self, systemId), string_intern(self, publicId)),
-                rc = PyInt_AsLong(rv);, rc,
-                XML_GetUserData(parser))
-
-/* XXX UnknownEncodingHandler */
-
-VOID_HANDLER(StartDoctypeDecl,
-             (void *userData, const XML_Char *doctypeName,
-              const XML_Char *sysid, const XML_Char *pubid,
-              int has_internal_subset),
-             ("(NNNi)", string_intern(self, doctypeName),
-              string_intern(self, sysid), string_intern(self, pubid),
-              has_internal_subset))
-
-VOID_HANDLER(EndDoctypeDecl, (void *userData), ("()"))
-
-/* ---------------------------------------------------------------- */
-
-static PyObject *
-get_parse_result(xmlparseobject *self, int rv)
-{
-    if (PyErr_Occurred()) {
-        return NULL;
-    }
-    if (rv == 0) {
-        return set_error(self, XML_GetErrorCode(self->itself));
-    }
-    if (flush_character_buffer(self) < 0) {
-        return NULL;
-    }
-    return PyInt_FromLong(rv);
-}
-
-PyDoc_STRVAR(xmlparse_Parse__doc__,
-"Parse(data[, isfinal])\n\
-Parse XML data.  `isfinal' should be true at end of input.");
-
-static PyObject *
-xmlparse_Parse(xmlparseobject *self, PyObject *args)
-{
-    char *s;
-    int slen;
-    int isFinal = 0;
-
-    if (!PyArg_ParseTuple(args, "s#|i:Parse", &s, &slen, &isFinal))
-        return NULL;
-
-    return get_parse_result(self, XML_Parse(self->itself, s, slen, isFinal));
-}
-
-/* File reading copied from cPickle */
-
-#define BUF_SIZE 2048
-
-static int
-readinst(char *buf, int buf_size, PyObject *meth)
-{
-    PyObject *arg = NULL;
-    PyObject *bytes = NULL;
-    PyObject *str = NULL;
-    int len = -1;
-
-    if ((bytes = PyInt_FromLong(buf_size)) == NULL)
-        goto finally;
-
-    if ((arg = PyTuple_New(1)) == NULL) {
-        Py_DECREF(bytes);
-        goto finally;
-    }
-
-    PyTuple_SET_ITEM(arg, 0, bytes);
-
-#if PY_VERSION_HEX < 0x02020000
-    str = PyObject_CallObject(meth, arg);
-#else
-    str = PyObject_Call(meth, arg, NULL);
-#endif
-    if (str == NULL)
-        goto finally;
-
-    /* XXX what to do if it returns a Unicode string? */
-    if (!PyString_Check(str)) {
-        PyErr_Format(PyExc_TypeError,
-                     "read() did not return a string object (type=%.400s)",
-                     Py_TYPE(str)->tp_name);
-        goto finally;
-    }
-    len = PyString_GET_SIZE(str);
-    if (len > buf_size) {
-        PyErr_Format(PyExc_ValueError,
-                     "read() returned too much data: "
-                     "%i bytes requested, %i returned",
-                     buf_size, len);
-        goto finally;
-    }
-    memcpy(buf, PyString_AsString(str), len);
-finally:
-    Py_XDECREF(arg);
-    Py_XDECREF(str);
-    return len;
-}
-
-PyDoc_STRVAR(xmlparse_ParseFile__doc__,
-"ParseFile(file)\n\
-Parse XML data from file-like object.");
-
-static PyObject *
-xmlparse_ParseFile(xmlparseobject *self, PyObject *f)
-{
-    int rv = 1;
-    PyObject *readmethod = NULL;
-
-    readmethod = PyObject_GetAttrString(f, "read");
-    if (readmethod == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "argument must have 'read' attribute");
-        return NULL;
-
-    }
-    for (;;) {
-        int bytes_read;
-        void *buf = XML_GetBuffer(self->itself, BUF_SIZE);
-        if (buf == NULL) {
-            Py_XDECREF(readmethod);
-            return PyErr_NoMemory();
-        }
-
-        bytes_read = readinst(buf, BUF_SIZE, readmethod);
-        if (bytes_read < 0) {
-            Py_XDECREF(readmethod);
-            return NULL;
-        }
-
-        rv = XML_ParseBuffer(self->itself, bytes_read, bytes_read == 0);
-        if (PyErr_Occurred()) {
-            Py_XDECREF(readmethod);
-            return NULL;
-        }
-
-        if (!rv || bytes_read == 0)
-            break;
-    }
-    Py_XDECREF(readmethod);
-    return get_parse_result(self, rv);
-}
-
-PyDoc_STRVAR(xmlparse_SetBase__doc__,
-"SetBase(base_url)\n\
-Set the base URL for the parser.");
-
-static PyObject *
-xmlparse_SetBase(xmlparseobject *self, PyObject *args)
-{
-    char *base;
-
-    if (!PyArg_ParseTuple(args, "s:SetBase", &base))
-        return NULL;
-    if (!XML_SetBase(self->itself, base)) {
-        return PyErr_NoMemory();
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(xmlparse_GetBase__doc__,
-"GetBase() -> url\n\
-Return base URL string for the parser.");
-
-static PyObject *
-xmlparse_GetBase(xmlparseobject *self, PyObject *unused)
-{
-    return Py_BuildValue("z", XML_GetBase(self->itself));
-}
-
-PyDoc_STRVAR(xmlparse_GetInputContext__doc__,
-"GetInputContext() -> string\n\
-Return the untranslated text of the input that caused the current event.\n\
-If the event was generated by a large amount of text (such as a start tag\n\
-for an element with many attributes), not all of the text may be available.");
-
-static PyObject *
-xmlparse_GetInputContext(xmlparseobject *self, PyObject *unused)
-{
-    if (self->in_callback) {
-        int offset, size;
-        const char *buffer
-            = XML_GetInputContext(self->itself, &offset, &size);
-
-        if (buffer != NULL)
-            return PyString_FromStringAndSize(buffer + offset,
-                                              size - offset);
-        else
-            Py_RETURN_NONE;
-    }
-    else
-        Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(xmlparse_ExternalEntityParserCreate__doc__,
-"ExternalEntityParserCreate(context[, encoding])\n\
-Create a parser for parsing an external entity based on the\n\
-information passed to the ExternalEntityRefHandler.");
-
-static PyObject *
-xmlparse_ExternalEntityParserCreate(xmlparseobject *self, PyObject *args)
-{
-    char *context;
-    char *encoding = NULL;
-    xmlparseobject *new_parser;
-    int i;
-
-    if (!PyArg_ParseTuple(args, "z|s:ExternalEntityParserCreate",
-                          &context, &encoding)) {
-        return NULL;
-    }
-
-#ifndef Py_TPFLAGS_HAVE_GC
-    /* Python versions 2.0 and 2.1 */
-    new_parser = PyObject_New(xmlparseobject, &Xmlparsetype);
-#else
-    /* Python versions 2.2 and later */
-    new_parser = PyObject_GC_New(xmlparseobject, &Xmlparsetype);
-#endif
-
-    if (new_parser == NULL)
-        return NULL;
-    new_parser->buffer_size = self->buffer_size;
-    new_parser->buffer_used = 0;
-    if (self->buffer != NULL) {
-        new_parser->buffer = malloc(new_parser->buffer_size);
-        if (new_parser->buffer == NULL) {
-#ifndef Py_TPFLAGS_HAVE_GC
-            /* Code for versions 2.0 and 2.1 */
-            PyObject_Del(new_parser);
-#else
-            /* Code for versions 2.2 and later. */
-            PyObject_GC_Del(new_parser);
-#endif
-            return PyErr_NoMemory();
-        }
-    }
-    else
-        new_parser->buffer = NULL;
-    new_parser->returns_unicode = self->returns_unicode;
-    new_parser->ordered_attributes = self->ordered_attributes;
-    new_parser->specified_attributes = self->specified_attributes;
-    new_parser->in_callback = 0;
-    new_parser->ns_prefixes = self->ns_prefixes;
-    new_parser->itself = XML_ExternalEntityParserCreate(self->itself, context,
-                                                        encoding);
-    new_parser->handlers = 0;
-    new_parser->intern = self->intern;
-    Py_XINCREF(new_parser->intern);
-#ifdef Py_TPFLAGS_HAVE_GC
-    PyObject_GC_Track(new_parser);
-#else
-    PyObject_GC_Init(new_parser);
-#endif
-
-    if (!new_parser->itself) {
-        Py_DECREF(new_parser);
-        return PyErr_NoMemory();
-    }
-
-    XML_SetUserData(new_parser->itself, (void *)new_parser);
-
-    /* allocate and clear handlers first */
-    for (i = 0; handler_info[i].name != NULL; i++)
-        /* do nothing */;
-
-    new_parser->handlers = malloc(sizeof(PyObject *) * i);
-    if (!new_parser->handlers) {
-        Py_DECREF(new_parser);
-        return PyErr_NoMemory();
-    }
-    clear_handlers(new_parser, 1);
-
-    /* then copy handlers from self */
-    for (i = 0; handler_info[i].name != NULL; i++) {
-        PyObject *handler = self->handlers[i];
-        if (handler != NULL) {
-            Py_INCREF(handler);
-            new_parser->handlers[i] = handler;
-            handler_info[i].setter(new_parser->itself,
-                                   handler_info[i].handler);
-        }
-    }
-    return (PyObject *)new_parser;
-}
-
-PyDoc_STRVAR(xmlparse_SetParamEntityParsing__doc__,
-"SetParamEntityParsing(flag) -> success\n\
-Controls parsing of parameter entities (including the external DTD\n\
-subset). Possible flag values are XML_PARAM_ENTITY_PARSING_NEVER,\n\
-XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE and\n\
-XML_PARAM_ENTITY_PARSING_ALWAYS. Returns true if setting the flag\n\
-was successful.");
-
-static PyObject*
-xmlparse_SetParamEntityParsing(xmlparseobject *p, PyObject* args)
-{
-    int flag;
-    if (!PyArg_ParseTuple(args, "i", &flag))
-        return NULL;
-    flag = XML_SetParamEntityParsing(p->itself, flag);
-    return PyInt_FromLong(flag);
-}
-
-
-#if XML_COMBINED_VERSION >= 19505
-PyDoc_STRVAR(xmlparse_UseForeignDTD__doc__,
-"UseForeignDTD([flag])\n\
-Allows the application to provide an artificial external subset if one is\n\
-not specified as part of the document instance.  This readily allows the\n\
-use of a 'default' document type controlled by the application, while still\n\
-getting the advantage of providing document type information to the parser.\n\
-'flag' defaults to True if not provided.");
-
-static PyObject *
-xmlparse_UseForeignDTD(xmlparseobject *self, PyObject *args)
-{
-    PyObject *flagobj = NULL;
-    XML_Bool flag = XML_TRUE;
-    enum XML_Error rc;
-    if (!PyArg_UnpackTuple(args, "UseForeignDTD", 0, 1, &flagobj))
-        return NULL;
-    if (flagobj != NULL)
-        flag = PyObject_IsTrue(flagobj) ? XML_TRUE : XML_FALSE;
-    rc = XML_UseForeignDTD(self->itself, flag);
-    if (rc != XML_ERROR_NONE) {
-        return set_error(self, rc);
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-static struct PyMethodDef xmlparse_methods[] = {
-    {"Parse",     (PyCFunction)xmlparse_Parse,
-                  METH_VARARGS, xmlparse_Parse__doc__},
-    {"ParseFile", (PyCFunction)xmlparse_ParseFile,
-                  METH_O,       xmlparse_ParseFile__doc__},
-    {"SetBase",   (PyCFunction)xmlparse_SetBase,
-                  METH_VARARGS, xmlparse_SetBase__doc__},
-    {"GetBase",   (PyCFunction)xmlparse_GetBase,
-                  METH_NOARGS, xmlparse_GetBase__doc__},
-    {"ExternalEntityParserCreate", (PyCFunction)xmlparse_ExternalEntityParserCreate,
-                  METH_VARARGS, xmlparse_ExternalEntityParserCreate__doc__},
-    {"SetParamEntityParsing", (PyCFunction)xmlparse_SetParamEntityParsing,
-                  METH_VARARGS, xmlparse_SetParamEntityParsing__doc__},
-    {"GetInputContext", (PyCFunction)xmlparse_GetInputContext,
-                  METH_NOARGS, xmlparse_GetInputContext__doc__},
-#if XML_COMBINED_VERSION >= 19505
-    {"UseForeignDTD", (PyCFunction)xmlparse_UseForeignDTD,
-                  METH_VARARGS, xmlparse_UseForeignDTD__doc__},
-#endif
-    {NULL,        NULL}         /* sentinel */
-};
-
-/* ---------- */
-
-
-#ifdef Py_USING_UNICODE
-
-/* pyexpat international encoding support.
-   Make it as simple as possible.
-*/
-
-static char template_buffer[257];
-PyObject *template_string = NULL;
-
-static void
-init_template_buffer(void)
-{
-    int i;
-    for (i = 0; i < 256; i++) {
-        template_buffer[i] = i;
-    }
-    template_buffer[256] = 0;
-}
-
-static int
-PyUnknownEncodingHandler(void *encodingHandlerData,
-                         const XML_Char *name,
-                         XML_Encoding *info)
-{
-    PyUnicodeObject *_u_string = NULL;
-    int result = 0;
-    int i;
-
-    /* Yes, supports only 8bit encodings */
-    _u_string = (PyUnicodeObject *)
-        PyUnicode_Decode(template_buffer, 256, name, "replace");
-
-    if (_u_string == NULL)
-        return result;
-
-    for (i = 0; i < 256; i++) {
-        /* Stupid to access directly, but fast */
-        Py_UNICODE c = _u_string->str[i];
-        if (c == Py_UNICODE_REPLACEMENT_CHARACTER)
-            info->map[i] = -1;
-        else
-            info->map[i] = c;
-    }
-    info->data = NULL;
-    info->convert = NULL;
-    info->release = NULL;
-    result = 1;
-    Py_DECREF(_u_string);
-    return result;
-}
-
-#endif
-
-static PyObject *
-newxmlparseobject(char *encoding, char *namespace_separator, PyObject *intern)
-{
-    int i;
-    xmlparseobject *self;
-
-#ifdef Py_TPFLAGS_HAVE_GC
-    /* Code for versions 2.2 and later */
-    self = PyObject_GC_New(xmlparseobject, &Xmlparsetype);
-#else
-    self = PyObject_New(xmlparseobject, &Xmlparsetype);
-#endif
-    if (self == NULL)
-        return NULL;
-
-#ifdef Py_USING_UNICODE
-    self->returns_unicode = 1;
-#else
-    self->returns_unicode = 0;
-#endif
-
-    self->buffer = NULL;
-    self->buffer_size = CHARACTER_DATA_BUFFER_SIZE;
-    self->buffer_used = 0;
-    self->ordered_attributes = 0;
-    self->specified_attributes = 0;
-    self->in_callback = 0;
-    self->ns_prefixes = 0;
-    self->handlers = NULL;
-    if (namespace_separator != NULL) {
-        self->itself = XML_ParserCreateNS(encoding, *namespace_separator);
-    }
-    else {
-        self->itself = XML_ParserCreate(encoding);
-    }
-    self->intern = intern;
-    Py_XINCREF(self->intern);
-#ifdef Py_TPFLAGS_HAVE_GC
-    PyObject_GC_Track(self);
-#else
-    PyObject_GC_Init(self);
-#endif
-    if (self->itself == NULL) {
-        PyErr_SetString(PyExc_RuntimeError,
-                        "XML_ParserCreate failed");
-        Py_DECREF(self);
-        return NULL;
-    }
-    XML_SetUserData(self->itself, (void *)self);
-#ifdef Py_USING_UNICODE
-    XML_SetUnknownEncodingHandler(self->itself,
-                  (XML_UnknownEncodingHandler) PyUnknownEncodingHandler, NULL);
-#endif
-
-    for (i = 0; handler_info[i].name != NULL; i++)
-        /* do nothing */;
-
-    self->handlers = malloc(sizeof(PyObject *) * i);
-    if (!self->handlers) {
-        Py_DECREF(self);
-        return PyErr_NoMemory();
-    }
-    clear_handlers(self, 1);
-
-    return (PyObject*)self;
-}
-
-
-static void
-xmlparse_dealloc(xmlparseobject *self)
-{
-    int i;
-#ifdef Py_TPFLAGS_HAVE_GC
-    PyObject_GC_UnTrack(self);
-#else
-    PyObject_GC_Fini(self);
-#endif
-    if (self->itself != NULL)
-        XML_ParserFree(self->itself);
-    self->itself = NULL;
-
-    if (self->handlers != NULL) {
-        PyObject *temp;
-        for (i = 0; handler_info[i].name != NULL; i++) {
-            temp = self->handlers[i];
-            self->handlers[i] = NULL;
-            Py_XDECREF(temp);
-        }
-        free(self->handlers);
-        self->handlers = NULL;
-    }
-    if (self->buffer != NULL) {
-        free(self->buffer);
-        self->buffer = NULL;
-    }
-    Py_XDECREF(self->intern);
-#ifndef Py_TPFLAGS_HAVE_GC
-    /* Code for versions 2.0 and 2.1 */
-    PyObject_Del(self);
-#else
-    /* Code for versions 2.2 and later. */
-    PyObject_GC_Del(self);
-#endif
-}
-
-static int
-handlername2int(const char *name)
-{
-    int i;
-    for (i = 0; handler_info[i].name != NULL; i++) {
-        if (strcmp(name, handler_info[i].name) == 0) {
-            return i;
-        }
-    }
-    return -1;
-}
-
-static PyObject *
-get_pybool(int istrue)
-{
-    PyObject *result = istrue ? Py_True : Py_False;
-    Py_INCREF(result);
-    return result;
-}
-
-static PyObject *
-xmlparse_getattr(xmlparseobject *self, char *name)
-{
-    int handlernum = handlername2int(name);
-
-    if (handlernum != -1) {
-        PyObject *result = self->handlers[handlernum];
-        if (result == NULL)
-            result = Py_None;
-        Py_INCREF(result);
-        return result;
-    }
-    if (name[0] == 'E') {
-        if (strcmp(name, "ErrorCode") == 0)
-            return PyInt_FromLong((long)
-                                  XML_GetErrorCode(self->itself));
-        if (strcmp(name, "ErrorLineNumber") == 0)
-            return PyInt_FromLong((long)
-                                  XML_GetErrorLineNumber(self->itself));
-        if (strcmp(name, "ErrorColumnNumber") == 0)
-            return PyInt_FromLong((long)
-                                  XML_GetErrorColumnNumber(self->itself));
-        if (strcmp(name, "ErrorByteIndex") == 0)
-            return PyInt_FromLong((long)
-                                  XML_GetErrorByteIndex(self->itself));
-    }
-    if (name[0] == 'C') {
-        if (strcmp(name, "CurrentLineNumber") == 0)
-            return PyInt_FromLong((long)
-                                  XML_GetCurrentLineNumber(self->itself));
-        if (strcmp(name, "CurrentColumnNumber") == 0)
-            return PyInt_FromLong((long)
-                                  XML_GetCurrentColumnNumber(self->itself));
-        if (strcmp(name, "CurrentByteIndex") == 0)
-            return PyInt_FromLong((long)
-                                  XML_GetCurrentByteIndex(self->itself));
-    }
-    if (name[0] == 'b') {
-        if (strcmp(name, "buffer_size") == 0)
-            return PyInt_FromLong((long) self->buffer_size);
-        if (strcmp(name, "buffer_text") == 0)
-            return get_pybool(self->buffer != NULL);
-        if (strcmp(name, "buffer_used") == 0)
-            return PyInt_FromLong((long) self->buffer_used);
-    }
-    if (strcmp(name, "namespace_prefixes") == 0)
-        return get_pybool(self->ns_prefixes);
-    if (strcmp(name, "ordered_attributes") == 0)
-        return get_pybool(self->ordered_attributes);
-    if (strcmp(name, "returns_unicode") == 0)
-        return get_pybool((long) self->returns_unicode);
-    if (strcmp(name, "specified_attributes") == 0)
-        return get_pybool((long) self->specified_attributes);
-    if (strcmp(name, "intern") == 0) {
-        if (self->intern == NULL) {
-            Py_INCREF(Py_None);
-            return Py_None;
-        }
-        else {
-            Py_INCREF(self->intern);
-            return self->intern;
-        }
-    }
-
-#define APPEND(list, str)                               \
-        do {                                            \
-                PyObject *o = PyString_FromString(str); \
-                if (o != NULL)                          \
-                        PyList_Append(list, o);         \
-                Py_XDECREF(o);                          \
-        } while (0)
-
-    if (strcmp(name, "__members__") == 0) {
-        int i;
-        PyObject *rc = PyList_New(0);
-        if (!rc)
-                return NULL;
-        for (i = 0; handler_info[i].name != NULL; i++) {
-            PyObject *o = get_handler_name(&handler_info[i]);
-            if (o != NULL)
-                PyList_Append(rc, o);
-            Py_XDECREF(o);
-        }
-        APPEND(rc, "ErrorCode");
-        APPEND(rc, "ErrorLineNumber");
-        APPEND(rc, "ErrorColumnNumber");
-        APPEND(rc, "ErrorByteIndex");
-        APPEND(rc, "CurrentLineNumber");
-        APPEND(rc, "CurrentColumnNumber");
-        APPEND(rc, "CurrentByteIndex");
-        APPEND(rc, "buffer_size");
-        APPEND(rc, "buffer_text");
-        APPEND(rc, "buffer_used");
-        APPEND(rc, "namespace_prefixes");
-        APPEND(rc, "ordered_attributes");
-        APPEND(rc, "returns_unicode");
-        APPEND(rc, "specified_attributes");
-        APPEND(rc, "intern");
-
-#undef APPEND
-        return rc;
-    }
-    return Py_FindMethod(xmlparse_methods, (PyObject *)self, name);
-}
-
-static int
-sethandler(xmlparseobject *self, const char *name, PyObject* v)
-{
-    int handlernum = handlername2int(name);
-    if (handlernum >= 0) {
-        xmlhandler c_handler = NULL;
-        PyObject *temp = self->handlers[handlernum];
-
-        if (v == Py_None) {
-            /* If this is the character data handler, and a character
-               data handler is already active, we need to be more
-               careful.  What we can safely do is replace the existing
-               character data handler callback function with a no-op
-               function that will refuse to call Python.  The downside
-               is that this doesn't completely remove the character
-               data handler from the C layer if there's any callback
-               active, so Expat does a little more work than it
-               otherwise would, but that's really an odd case.  A more
-               elaborate system of handlers and state could remove the
-               C handler more effectively. */
-            if (handlernum == CharacterData && self->in_callback)
-                c_handler = noop_character_data_handler;
-            v = NULL;
-        }
-        else if (v != NULL) {
-            Py_INCREF(v);
-            c_handler = handler_info[handlernum].handler;
-        }
-        self->handlers[handlernum] = v;
-        Py_XDECREF(temp);
-        handler_info[handlernum].setter(self->itself, c_handler);
-        return 1;
-    }
-    return 0;
-}
-
-static int
-xmlparse_setattr(xmlparseobject *self, char *name, PyObject *v)
-{
-    /* Set attribute 'name' to value 'v'. v==NULL means delete */
-    if (v == NULL) {
-        PyErr_SetString(PyExc_RuntimeError, "Cannot delete attribute");
-        return -1;
-    }
-    if (strcmp(name, "buffer_text") == 0) {
-        if (PyObject_IsTrue(v)) {
-            if (self->buffer == NULL) {
-                self->buffer = malloc(self->buffer_size);
-                if (self->buffer == NULL) {
-                    PyErr_NoMemory();
-                    return -1;
-                }
-                self->buffer_used = 0;
-            }
-        }
-        else if (self->buffer != NULL) {
-            if (flush_character_buffer(self) < 0)
-                return -1;
-            free(self->buffer);
-            self->buffer = NULL;
-        }
-        return 0;
-    }
-    if (strcmp(name, "namespace_prefixes") == 0) {
-        if (PyObject_IsTrue(v))
-            self->ns_prefixes = 1;
-        else
-            self->ns_prefixes = 0;
-        XML_SetReturnNSTriplet(self->itself, self->ns_prefixes);
-        return 0;
-    }
-    if (strcmp(name, "ordered_attributes") == 0) {
-        if (PyObject_IsTrue(v))
-            self->ordered_attributes = 1;
-        else
-            self->ordered_attributes = 0;
-        return 0;
-    }
-    if (strcmp(name, "returns_unicode") == 0) {
-        if (PyObject_IsTrue(v)) {
-#ifndef Py_USING_UNICODE
-            PyErr_SetString(PyExc_ValueError,
-                            "Unicode support not available");
-            return -1;
-#else
-            self->returns_unicode = 1;
-#endif
-        }
-        else
-            self->returns_unicode = 0;
-        return 0;
-    }
-    if (strcmp(name, "specified_attributes") == 0) {
-        if (PyObject_IsTrue(v))
-            self->specified_attributes = 1;
-        else
-            self->specified_attributes = 0;
-        return 0;
-    }
-
-    if (strcmp(name, "buffer_size") == 0) {
-      long new_buffer_size;
-      if (!PyInt_Check(v)) {
-        PyErr_SetString(PyExc_TypeError, "buffer_size must be an integer");
-        return -1;
-      }
-
-      new_buffer_size=PyInt_AS_LONG(v);
-      /* trivial case -- no change */
-      if (new_buffer_size == self->buffer_size) {
-        return 0;
-      }
-
-      if (new_buffer_size <= 0) {
-        PyErr_SetString(PyExc_ValueError, "buffer_size must be greater than zero");
-        return -1;
-      }
-
-      /* check maximum */
-      if (new_buffer_size > INT_MAX) {
-        char errmsg[100];
-        sprintf(errmsg, "buffer_size must not be greater than %i", INT_MAX);
-        PyErr_SetString(PyExc_ValueError, errmsg);
-        return -1;
-      }
-
-      if (self->buffer != NULL) {
-        /* there is already a buffer */
-        if (self->buffer_used != 0) {
-          flush_character_buffer(self);
-        }
-        /* free existing buffer */
-        free(self->buffer);
-      }
-      self->buffer = malloc(new_buffer_size);
-      if (self->buffer == NULL) {
-        PyErr_NoMemory();
-        return -1;
-      }
-      self->buffer_size = new_buffer_size;
-      return 0;
-    }
-
-    if (strcmp(name, "CharacterDataHandler") == 0) {
-        /* If we're changing the character data handler, flush all
-         * cached data with the old handler.  Not sure there's a
-         * "right" thing to do, though, but this probably won't
-         * happen.
-         */
-        if (flush_character_buffer(self) < 0)
-            return -1;
-    }
-    if (sethandler(self, name, v)) {
-        return 0;
-    }
-    PyErr_SetString(PyExc_AttributeError, name);
-    return -1;
-}
-
-#ifdef WITH_CYCLE_GC
-static int
-xmlparse_traverse(xmlparseobject *op, visitproc visit, void *arg)
-{
-    int i;
-    for (i = 0; handler_info[i].name != NULL; i++)
-        Py_VISIT(op->handlers[i]);
-    return 0;
-}
-
-static int
-xmlparse_clear(xmlparseobject *op)
-{
-    clear_handlers(op, 0);
-    Py_CLEAR(op->intern);
-    return 0;
-}
-#endif
-
-PyDoc_STRVAR(Xmlparsetype__doc__, "XML parser");
-
-static PyTypeObject Xmlparsetype = {
-        PyVarObject_HEAD_INIT(NULL, 0)
-        "pyexpat.xmlparser",            /*tp_name*/
-        sizeof(xmlparseobject) + PyGC_HEAD_SIZE,/*tp_basicsize*/
-        0,                              /*tp_itemsize*/
-        /* methods */
-        (destructor)xmlparse_dealloc,   /*tp_dealloc*/
-        (printfunc)0,           /*tp_print*/
-        (getattrfunc)xmlparse_getattr,  /*tp_getattr*/
-        (setattrfunc)xmlparse_setattr,  /*tp_setattr*/
-        (cmpfunc)0,             /*tp_compare*/
-        (reprfunc)0,            /*tp_repr*/
-        0,                      /*tp_as_number*/
-        0,              /*tp_as_sequence*/
-        0,              /*tp_as_mapping*/
-        (hashfunc)0,            /*tp_hash*/
-        (ternaryfunc)0,         /*tp_call*/
-        (reprfunc)0,            /*tp_str*/
-        0,              /* tp_getattro */
-        0,              /* tp_setattro */
-        0,              /* tp_as_buffer */
-#ifdef Py_TPFLAGS_HAVE_GC
-        Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /*tp_flags*/
-#else
-        Py_TPFLAGS_DEFAULT | Py_TPFLAGS_GC, /*tp_flags*/
-#endif
-        Xmlparsetype__doc__, /* tp_doc - Documentation string */
-#ifdef WITH_CYCLE_GC
-        (traverseproc)xmlparse_traverse,        /* tp_traverse */
-        (inquiry)xmlparse_clear         /* tp_clear */
-#else
-        0, 0
-#endif
-};
-
-/* End of code for xmlparser objects */
-/* -------------------------------------------------------- */
-
-PyDoc_STRVAR(pyexpat_ParserCreate__doc__,
-"ParserCreate([encoding[, namespace_separator]]) -> parser\n\
-Return a new XML parser object.");
-
-static PyObject *
-pyexpat_ParserCreate(PyObject *notused, PyObject *args, PyObject *kw)
-{
-    char *encoding = NULL;
-    char *namespace_separator = NULL;
-    PyObject *intern = NULL;
-    PyObject *result;
-    int intern_decref = 0;
-    static char *kwlist[] = {"encoding", "namespace_separator",
-                                   "intern", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "|zzO:ParserCreate", kwlist,
-                                     &encoding, &namespace_separator, &intern))
-        return NULL;
-    if (namespace_separator != NULL
-        && strlen(namespace_separator) > 1) {
-        PyErr_SetString(PyExc_ValueError,
-                        "namespace_separator must be at most one"
-                        " character, omitted, or None");
-        return NULL;
-    }
-    /* Explicitly passing None means no interning is desired.
-       Not passing anything means that a new dictionary is used. */
-    if (intern == Py_None)
-        intern = NULL;
-    else if (intern == NULL) {
-        intern = PyDict_New();
-        if (!intern)
-            return NULL;
-        intern_decref = 1;
-    }
-    else if (!PyDict_Check(intern)) {
-        PyErr_SetString(PyExc_TypeError, "intern must be a dictionary");
-        return NULL;
-    }
-
-    result = newxmlparseobject(encoding, namespace_separator, intern);
-    if (intern_decref) {
-        Py_DECREF(intern);
-    }
-    return result;
-}
-
-PyDoc_STRVAR(pyexpat_ErrorString__doc__,
-"ErrorString(errno) -> string\n\
-Returns string error for given number.");
-
-static PyObject *
-pyexpat_ErrorString(PyObject *self, PyObject *args)
-{
-    long code = 0;
-
-    if (!PyArg_ParseTuple(args, "l:ErrorString", &code))
-        return NULL;
-    return Py_BuildValue("z", XML_ErrorString((int)code));
-}
-
-/* List of methods defined in the module */
-
-static struct PyMethodDef pyexpat_methods[] = {
-    {"ParserCreate",    (PyCFunction)pyexpat_ParserCreate,
-     METH_VARARGS|METH_KEYWORDS, pyexpat_ParserCreate__doc__},
-    {"ErrorString",     (PyCFunction)pyexpat_ErrorString,
-     METH_VARARGS,      pyexpat_ErrorString__doc__},
-
-    {NULL,       (PyCFunction)NULL, 0, NULL}            /* sentinel */
-};
-
-/* Module docstring */
-
-PyDoc_STRVAR(pyexpat_module_documentation,
-"Python wrapper for Expat parser.");
-
-/* Initialization function for the module */
-
-#ifndef MODULE_NAME
-#define MODULE_NAME "pyexpat"
-#endif
-
-#ifndef MODULE_INITFUNC
-#define MODULE_INITFUNC initpyexpat
-#endif
-
-#ifndef PyMODINIT_FUNC
-#   ifdef MS_WINDOWS
-#       define PyMODINIT_FUNC __declspec(dllexport) void
-#   else
-#       define PyMODINIT_FUNC void
-#   endif
-#endif
-
-PyMODINIT_FUNC MODULE_INITFUNC(void);  /* avoid compiler warnings */
-
-PyMODINIT_FUNC
-MODULE_INITFUNC(void)
-{
-    PyObject *m, *d;
-    PyObject *errmod_name = PyString_FromString(MODULE_NAME ".errors");
-    PyObject *errors_module;
-    PyObject *modelmod_name;
-    PyObject *model_module;
-    PyObject *sys_modules;
-    PyObject *version;
-    static struct PyExpat_CAPI capi;
-    PyObject* capi_object;
-
-    if (errmod_name == NULL)
-        return;
-    modelmod_name = PyString_FromString(MODULE_NAME ".model");
-    if (modelmod_name == NULL)
-        return;
-
-    Py_TYPE(&Xmlparsetype) = &PyType_Type;
-
-    /* Create the module and add the functions */
-    m = Py_InitModule3(MODULE_NAME, pyexpat_methods,
-                       pyexpat_module_documentation);
-    if (m == NULL)
-        return;
-
-    /* Add some symbolic constants to the module */
-    if (ErrorObject == NULL) {
-        ErrorObject = PyErr_NewException("xml.parsers.expat.ExpatError",
-                                         NULL, NULL);
-        if (ErrorObject == NULL)
-            return;
-    }
-    Py_INCREF(ErrorObject);
-    PyModule_AddObject(m, "error", ErrorObject);
-    Py_INCREF(ErrorObject);
-    PyModule_AddObject(m, "ExpatError", ErrorObject);
-    Py_INCREF(&Xmlparsetype);
-    PyModule_AddObject(m, "XMLParserType", (PyObject *) &Xmlparsetype);
-
-    version = PyString_FromString(PY_VERSION);
-    if (!version)
-        return;
-    PyModule_AddObject(m, "__version__", version);
-    PyModule_AddStringConstant(m, "EXPAT_VERSION",
-                               (char *) XML_ExpatVersion());
-    {
-        XML_Expat_Version info = XML_ExpatVersionInfo();
-        PyModule_AddObject(m, "version_info",
-                           Py_BuildValue("(iii)", info.major,
-                                         info.minor, info.micro));
-    }
-#ifdef Py_USING_UNICODE
-    init_template_buffer();
-#endif
-    /* XXX When Expat supports some way of figuring out how it was
-       compiled, this should check and set native_encoding
-       appropriately.
-    */
-    PyModule_AddStringConstant(m, "native_encoding", "UTF-8");
-
-    sys_modules = PySys_GetObject("modules");
-    d = PyModule_GetDict(m);
-    errors_module = PyDict_GetItem(d, errmod_name);
-    if (errors_module == NULL) {
-        errors_module = PyModule_New(MODULE_NAME ".errors");
-        if (errors_module != NULL) {
-            PyDict_SetItem(sys_modules, errmod_name, errors_module);
-            /* gives away the reference to errors_module */
-            PyModule_AddObject(m, "errors", errors_module);
-        }
-    }
-    Py_DECREF(errmod_name);
-    model_module = PyDict_GetItem(d, modelmod_name);
-    if (model_module == NULL) {
-        model_module = PyModule_New(MODULE_NAME ".model");
-        if (model_module != NULL) {
-            PyDict_SetItem(sys_modules, modelmod_name, model_module);
-            /* gives away the reference to model_module */
-            PyModule_AddObject(m, "model", model_module);
-        }
-    }
-    Py_DECREF(modelmod_name);
-    if (errors_module == NULL || model_module == NULL)
-        /* Don't core dump later! */
-        return;
-
-#if XML_COMBINED_VERSION > 19505
-    {
-        const XML_Feature *features = XML_GetFeatureList();
-        PyObject *list = PyList_New(0);
-        if (list == NULL)
-            /* just ignore it */
-            PyErr_Clear();
-        else {
-            int i = 0;
-            for (; features[i].feature != XML_FEATURE_END; ++i) {
-                int ok;
-                PyObject *item = Py_BuildValue("si", features[i].name,
-                                               features[i].value);
-                if (item == NULL) {
-                    Py_DECREF(list);
-                    list = NULL;
-                    break;
-                }
-                ok = PyList_Append(list, item);
-                Py_DECREF(item);
-                if (ok < 0) {
-                    PyErr_Clear();
-                    break;
-                }
-            }
-            if (list != NULL)
-                PyModule_AddObject(m, "features", list);
-        }
-    }
-#endif
-
-#define MYCONST(name) \
-    PyModule_AddStringConstant(errors_module, #name, \
-                               (char*)XML_ErrorString(name))
-
-    MYCONST(XML_ERROR_NO_MEMORY);
-    MYCONST(XML_ERROR_SYNTAX);
-    MYCONST(XML_ERROR_NO_ELEMENTS);
-    MYCONST(XML_ERROR_INVALID_TOKEN);
-    MYCONST(XML_ERROR_UNCLOSED_TOKEN);
-    MYCONST(XML_ERROR_PARTIAL_CHAR);
-    MYCONST(XML_ERROR_TAG_MISMATCH);
-    MYCONST(XML_ERROR_DUPLICATE_ATTRIBUTE);
-    MYCONST(XML_ERROR_JUNK_AFTER_DOC_ELEMENT);
-    MYCONST(XML_ERROR_PARAM_ENTITY_REF);
-    MYCONST(XML_ERROR_UNDEFINED_ENTITY);
-    MYCONST(XML_ERROR_RECURSIVE_ENTITY_REF);
-    MYCONST(XML_ERROR_ASYNC_ENTITY);
-    MYCONST(XML_ERROR_BAD_CHAR_REF);
-    MYCONST(XML_ERROR_BINARY_ENTITY_REF);
-    MYCONST(XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF);
-    MYCONST(XML_ERROR_MISPLACED_XML_PI);
-    MYCONST(XML_ERROR_UNKNOWN_ENCODING);
-    MYCONST(XML_ERROR_INCORRECT_ENCODING);
-    MYCONST(XML_ERROR_UNCLOSED_CDATA_SECTION);
-    MYCONST(XML_ERROR_EXTERNAL_ENTITY_HANDLING);
-    MYCONST(XML_ERROR_NOT_STANDALONE);
-    MYCONST(XML_ERROR_UNEXPECTED_STATE);
-    MYCONST(XML_ERROR_ENTITY_DECLARED_IN_PE);
-    MYCONST(XML_ERROR_FEATURE_REQUIRES_XML_DTD);
-    MYCONST(XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING);
-    /* Added in Expat 1.95.7. */
-    MYCONST(XML_ERROR_UNBOUND_PREFIX);
-    /* Added in Expat 1.95.8. */
-    MYCONST(XML_ERROR_UNDECLARING_PREFIX);
-    MYCONST(XML_ERROR_INCOMPLETE_PE);
-    MYCONST(XML_ERROR_XML_DECL);
-    MYCONST(XML_ERROR_TEXT_DECL);
-    MYCONST(XML_ERROR_PUBLICID);
-    MYCONST(XML_ERROR_SUSPENDED);
-    MYCONST(XML_ERROR_NOT_SUSPENDED);
-    MYCONST(XML_ERROR_ABORTED);
-    MYCONST(XML_ERROR_FINISHED);
-    MYCONST(XML_ERROR_SUSPEND_PE);
-
-    PyModule_AddStringConstant(errors_module, "__doc__",
-                               "Constants used to describe error conditions.");
-
-#undef MYCONST
-
-#define MYCONST(c) PyModule_AddIntConstant(m, #c, c)
-    MYCONST(XML_PARAM_ENTITY_PARSING_NEVER);
-    MYCONST(XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE);
-    MYCONST(XML_PARAM_ENTITY_PARSING_ALWAYS);
-#undef MYCONST
-
-#define MYCONST(c) PyModule_AddIntConstant(model_module, #c, c)
-    PyModule_AddStringConstant(model_module, "__doc__",
-                     "Constants used to interpret content model information.");
-
-    MYCONST(XML_CTYPE_EMPTY);
-    MYCONST(XML_CTYPE_ANY);
-    MYCONST(XML_CTYPE_MIXED);
-    MYCONST(XML_CTYPE_NAME);
-    MYCONST(XML_CTYPE_CHOICE);
-    MYCONST(XML_CTYPE_SEQ);
-
-    MYCONST(XML_CQUANT_NONE);
-    MYCONST(XML_CQUANT_OPT);
-    MYCONST(XML_CQUANT_REP);
-    MYCONST(XML_CQUANT_PLUS);
-#undef MYCONST
-
-    /* initialize pyexpat dispatch table */
-    capi.size = sizeof(capi);
-    capi.magic = PyExpat_CAPI_MAGIC;
-    capi.MAJOR_VERSION = XML_MAJOR_VERSION;
-    capi.MINOR_VERSION = XML_MINOR_VERSION;
-    capi.MICRO_VERSION = XML_MICRO_VERSION;
-    capi.ErrorString = XML_ErrorString;
-    capi.GetErrorCode = XML_GetErrorCode;
-    capi.GetErrorColumnNumber = XML_GetErrorColumnNumber;
-    capi.GetErrorLineNumber = XML_GetErrorLineNumber;
-    capi.Parse = XML_Parse;
-    capi.ParserCreate_MM = XML_ParserCreate_MM;
-    capi.ParserFree = XML_ParserFree;
-    capi.SetCharacterDataHandler = XML_SetCharacterDataHandler;
-    capi.SetCommentHandler = XML_SetCommentHandler;
-    capi.SetDefaultHandlerExpand = XML_SetDefaultHandlerExpand;
-    capi.SetElementHandler = XML_SetElementHandler;
-    capi.SetNamespaceDeclHandler = XML_SetNamespaceDeclHandler;
-    capi.SetProcessingInstructionHandler = XML_SetProcessingInstructionHandler;
-    capi.SetUnknownEncodingHandler = XML_SetUnknownEncodingHandler;
-    capi.SetUserData = XML_SetUserData;
-
-    /* export using capsule */
-    capi_object = PyCapsule_New(&capi, PyExpat_CAPSULE_NAME, NULL);
-    if (capi_object)
-        PyModule_AddObject(m, "expat_CAPI", capi_object);
-}
-
-static void
-clear_handlers(xmlparseobject *self, int initial)
-{
-    int i = 0;
-    PyObject *temp;
-
-    for (; handler_info[i].name != NULL; i++) {
-        if (initial)
-            self->handlers[i] = NULL;
-        else {
-            temp = self->handlers[i];
-            self->handlers[i] = NULL;
-            Py_XDECREF(temp);
-            handler_info[i].setter(self->itself, NULL);
-        }
-    }
-}
-
-static struct HandlerInfo handler_info[] = {
-    {"StartElementHandler",
-     (xmlhandlersetter)XML_SetStartElementHandler,
-     (xmlhandler)my_StartElementHandler},
-    {"EndElementHandler",
-     (xmlhandlersetter)XML_SetEndElementHandler,
-     (xmlhandler)my_EndElementHandler},
-    {"ProcessingInstructionHandler",
-     (xmlhandlersetter)XML_SetProcessingInstructionHandler,
-     (xmlhandler)my_ProcessingInstructionHandler},
-    {"CharacterDataHandler",
-     (xmlhandlersetter)XML_SetCharacterDataHandler,
-     (xmlhandler)my_CharacterDataHandler},
-    {"UnparsedEntityDeclHandler",
-     (xmlhandlersetter)XML_SetUnparsedEntityDeclHandler,
-     (xmlhandler)my_UnparsedEntityDeclHandler},
-    {"NotationDeclHandler",
-     (xmlhandlersetter)XML_SetNotationDeclHandler,
-     (xmlhandler)my_NotationDeclHandler},
-    {"StartNamespaceDeclHandler",
-     (xmlhandlersetter)XML_SetStartNamespaceDeclHandler,
-     (xmlhandler)my_StartNamespaceDeclHandler},
-    {"EndNamespaceDeclHandler",
-     (xmlhandlersetter)XML_SetEndNamespaceDeclHandler,
-     (xmlhandler)my_EndNamespaceDeclHandler},
-    {"CommentHandler",
-     (xmlhandlersetter)XML_SetCommentHandler,
-     (xmlhandler)my_CommentHandler},
-    {"StartCdataSectionHandler",
-     (xmlhandlersetter)XML_SetStartCdataSectionHandler,
-     (xmlhandler)my_StartCdataSectionHandler},
-    {"EndCdataSectionHandler",
-     (xmlhandlersetter)XML_SetEndCdataSectionHandler,
-     (xmlhandler)my_EndCdataSectionHandler},
-    {"DefaultHandler",
-     (xmlhandlersetter)XML_SetDefaultHandler,
-     (xmlhandler)my_DefaultHandler},
-    {"DefaultHandlerExpand",
-     (xmlhandlersetter)XML_SetDefaultHandlerExpand,
-     (xmlhandler)my_DefaultHandlerExpandHandler},
-    {"NotStandaloneHandler",
-     (xmlhandlersetter)XML_SetNotStandaloneHandler,
-     (xmlhandler)my_NotStandaloneHandler},
-    {"ExternalEntityRefHandler",
-     (xmlhandlersetter)XML_SetExternalEntityRefHandler,
-     (xmlhandler)my_ExternalEntityRefHandler},
-    {"StartDoctypeDeclHandler",
-     (xmlhandlersetter)XML_SetStartDoctypeDeclHandler,
-     (xmlhandler)my_StartDoctypeDeclHandler},
-    {"EndDoctypeDeclHandler",
-     (xmlhandlersetter)XML_SetEndDoctypeDeclHandler,
-     (xmlhandler)my_EndDoctypeDeclHandler},
-    {"EntityDeclHandler",
-     (xmlhandlersetter)XML_SetEntityDeclHandler,
-     (xmlhandler)my_EntityDeclHandler},
-    {"XmlDeclHandler",
-     (xmlhandlersetter)XML_SetXmlDeclHandler,
-     (xmlhandler)my_XmlDeclHandler},
-    {"ElementDeclHandler",
-     (xmlhandlersetter)XML_SetElementDeclHandler,
-     (xmlhandler)my_ElementDeclHandler},
-    {"AttlistDeclHandler",
-     (xmlhandlersetter)XML_SetAttlistDeclHandler,
-     (xmlhandler)my_AttlistDeclHandler},
-#if XML_COMBINED_VERSION >= 19504
-    {"SkippedEntityHandler",
-     (xmlhandlersetter)XML_SetSkippedEntityHandler,
-     (xmlhandler)my_SkippedEntityHandler},
-#endif
-
-    {NULL, NULL, NULL} /* sentinel */
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/python.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/python.c
deleted file mode 100644
index a7446e7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/python.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Minimal main program -- everything is loaded from the library */
-
-#include "Python.h"
-
-#ifdef __FreeBSD__
-#include <floatingpoint.h>
-#endif
-
-int
-main(int argc, char **argv)
-{
-	/* 754 requires that FP exceptions run in "no stop" mode by default,
-	 * and until C vendors implement C99's ways to control FP exceptions,
-	 * Python requires non-stop mode.  Alas, some platforms enable FP
-	 * exceptions by default.  Here we disable them.
-	 */
-#ifdef __FreeBSD__
-	fp_except_t m;
-
-	m = fpgetmask();
-	fpsetmask(m & ~FP_X_OFL);
-#endif
-	return Py_Main(argc, argv);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/readline.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/readline.c
deleted file mode 100644
index 9217a35..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/readline.c
+++ /dev/null
@@ -1,1144 +0,0 @@
-/* This module makes GNU readline available to Python.  It has ideas
- * contributed by Lee Busby, LLNL, and William Magro, Cornell Theory
- * Center.  The completer interface was inspired by Lele Gaifax.  More
- * recently, it was largely rewritten by Guido van Rossum.
- */
-
-/* Standard definitions */
-#include "Python.h"
-#include <setjmp.h>
-#include <signal.h>
-#include <errno.h>
-#include <sys/time.h>
-
-#if defined(HAVE_SETLOCALE)
-/* GNU readline() mistakenly sets the LC_CTYPE locale.
- * This is evil.  Only the user or the app's main() should do this!
- * We must save and restore the locale around the rl_initialize() call.
- */
-#define SAVE_LOCALE
-#include <locale.h>
-#endif
-
-#ifdef SAVE_LOCALE
-#  define RESTORE_LOCALE(sl) { setlocale(LC_CTYPE, sl); free(sl); }
-#else
-#  define RESTORE_LOCALE(sl)
-#endif
-
-/* GNU readline definitions */
-#undef HAVE_CONFIG_H /* Else readline/chardefs.h includes strings.h */
-#include <readline/readline.h>
-#include <readline/history.h>
-
-#ifdef HAVE_RL_COMPLETION_MATCHES
-#define completion_matches(x, y) \
-    rl_completion_matches((x), ((rl_compentry_func_t *)(y)))
-#else
-#if defined(_RL_FUNCTION_TYPEDEF)
-extern char **completion_matches(char *, rl_compentry_func_t *);
-#else
-
-#if !defined(__APPLE__)
-extern char **completion_matches(char *, CPFunction *);
-#endif
-#endif
-#endif
-
-#ifdef __APPLE__
-/*
- * It is possible to link the readline module to the readline
- * emulation library of editline/libedit.
- *
- * On OSX this emulation library is not 100% API compatible
- * with the "real" readline and cannot be detected at compile-time,
- * hence we use a runtime check to detect if we're using libedit
- *
- * Currently there is one know API incompatibility:
- * - 'get_history' has a 1-based index with GNU readline, and a 0-based
- *   index with libedit's emulation.
- * - Note that replace_history and remove_history use a 0-based index
- *   with both implementation.
- */
-static int using_libedit_emulation = 0;
-static const char libedit_version_tag[] = "EditLine wrapper";
-#endif /* __APPLE__ */
-
-static void
-on_completion_display_matches_hook(char **matches,
-                                   int num_matches, int max_length);
-
-
-/* Exported function to send one line to readline's init file parser */
-
-static PyObject *
-parse_and_bind(PyObject *self, PyObject *args)
-{
-    char *s, *copy;
-    if (!PyArg_ParseTuple(args, "s:parse_and_bind", &s))
-        return NULL;
-    /* Make a copy -- rl_parse_and_bind() modifies its argument */
-    /* Bernard Herzog */
-    copy = malloc(1 + strlen(s));
-    if (copy == NULL)
-        return PyErr_NoMemory();
-    strcpy(copy, s);
-    rl_parse_and_bind(copy);
-    free(copy); /* Free the copy */
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(doc_parse_and_bind,
-"parse_and_bind(string) -> None\n\
-Parse and execute single line of a readline init file.");
-
-
-/* Exported function to parse a readline init file */
-
-static PyObject *
-read_init_file(PyObject *self, PyObject *args)
-{
-    char *s = NULL;
-    if (!PyArg_ParseTuple(args, "|z:read_init_file", &s))
-        return NULL;
-    errno = rl_read_init_file(s);
-    if (errno)
-        return PyErr_SetFromErrno(PyExc_IOError);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(doc_read_init_file,
-"read_init_file([filename]) -> None\n\
-Parse a readline initialization file.\n\
-The default filename is the last filename used.");
-
-
-/* Exported function to load a readline history file */
-
-static PyObject *
-read_history_file(PyObject *self, PyObject *args)
-{
-    char *s = NULL;
-    if (!PyArg_ParseTuple(args, "|z:read_history_file", &s))
-        return NULL;
-    errno = read_history(s);
-    if (errno)
-        return PyErr_SetFromErrno(PyExc_IOError);
-    Py_RETURN_NONE;
-}
-
-static int _history_length = -1; /* do not truncate history by default */
-PyDoc_STRVAR(doc_read_history_file,
-"read_history_file([filename]) -> None\n\
-Load a readline history file.\n\
-The default filename is ~/.history.");
-
-
-/* Exported function to save a readline history file */
-
-static PyObject *
-write_history_file(PyObject *self, PyObject *args)
-{
-    char *s = NULL;
-    if (!PyArg_ParseTuple(args, "|z:write_history_file", &s))
-        return NULL;
-    errno = write_history(s);
-    if (!errno && _history_length >= 0)
-        history_truncate_file(s, _history_length);
-    if (errno)
-        return PyErr_SetFromErrno(PyExc_IOError);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(doc_write_history_file,
-"write_history_file([filename]) -> None\n\
-Save a readline history file.\n\
-The default filename is ~/.history.");
-
-
-/* Set history length */
-
-static PyObject*
-set_history_length(PyObject *self, PyObject *args)
-{
-    int length = _history_length;
-    if (!PyArg_ParseTuple(args, "i:set_history_length", &length))
-        return NULL;
-    _history_length = length;
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(set_history_length_doc,
-"set_history_length(length) -> None\n\
-set the maximal number of items which will be written to\n\
-the history file. A negative length is used to inhibit\n\
-history truncation.");
-
-
-/* Get history length */
-
-static PyObject*
-get_history_length(PyObject *self, PyObject *noarg)
-{
-    return PyInt_FromLong(_history_length);
-}
-
-PyDoc_STRVAR(get_history_length_doc,
-"get_history_length() -> int\n\
-return the maximum number of items that will be written to\n\
-the history file.");
-
-
-/* Generic hook function setter */
-
-static PyObject *
-set_hook(const char *funcname, PyObject **hook_var, PyObject *args)
-{
-    PyObject *function = Py_None;
-    char buf[80];
-    PyOS_snprintf(buf, sizeof(buf), "|O:set_%.50s", funcname);
-    if (!PyArg_ParseTuple(args, buf, &function))
-        return NULL;
-    if (function == Py_None) {
-        Py_XDECREF(*hook_var);
-        *hook_var = NULL;
-    }
-    else if (PyCallable_Check(function)) {
-        PyObject *tmp = *hook_var;
-        Py_INCREF(function);
-        *hook_var = function;
-        Py_XDECREF(tmp);
-    }
-    else {
-        PyOS_snprintf(buf, sizeof(buf),
-                      "set_%.50s(func): argument not callable",
-                      funcname);
-        PyErr_SetString(PyExc_TypeError, buf);
-        return NULL;
-    }
-    Py_RETURN_NONE;
-}
-
-
-/* Exported functions to specify hook functions in Python */
-
-static PyObject *completion_display_matches_hook = NULL;
-static PyObject *startup_hook = NULL;
-
-#ifdef HAVE_RL_PRE_INPUT_HOOK
-static PyObject *pre_input_hook = NULL;
-#endif
-
-static PyObject *
-set_completion_display_matches_hook(PyObject *self, PyObject *args)
-{
-    PyObject *result = set_hook("completion_display_matches_hook",
-                    &completion_display_matches_hook, args);
-#ifdef HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK
-    /* We cannot set this hook globally, since it replaces the
-       default completion display. */
-    rl_completion_display_matches_hook =
-        completion_display_matches_hook ?
-#if defined(_RL_FUNCTION_TYPEDEF)
-        (rl_compdisp_func_t *)on_completion_display_matches_hook : 0;
-#else
-        (VFunction *)on_completion_display_matches_hook : 0;
-#endif
-#endif
-    return result;
-
-}
-
-PyDoc_STRVAR(doc_set_completion_display_matches_hook,
-"set_completion_display_matches_hook([function]) -> None\n\
-Set or remove the completion display function.\n\
-The function is called as\n\
-  function(substitution, [matches], longest_match_length)\n\
-once each time matches need to be displayed.");
-
-static PyObject *
-set_startup_hook(PyObject *self, PyObject *args)
-{
-    return set_hook("startup_hook", &startup_hook, args);
-}
-
-PyDoc_STRVAR(doc_set_startup_hook,
-"set_startup_hook([function]) -> None\n\
-Set or remove the startup_hook function.\n\
-The function is called with no arguments just\n\
-before readline prints the first prompt.");
-
-
-#ifdef HAVE_RL_PRE_INPUT_HOOK
-
-/* Set pre-input hook */
-
-static PyObject *
-set_pre_input_hook(PyObject *self, PyObject *args)
-{
-    return set_hook("pre_input_hook", &pre_input_hook, args);
-}
-
-PyDoc_STRVAR(doc_set_pre_input_hook,
-"set_pre_input_hook([function]) -> None\n\
-Set or remove the pre_input_hook function.\n\
-The function is called with no arguments after the first prompt\n\
-has been printed and just before readline starts reading input\n\
-characters.");
-
-#endif
-
-
-/* Exported function to specify a word completer in Python */
-
-static PyObject *completer = NULL;
-
-static PyObject *begidx = NULL;
-static PyObject *endidx = NULL;
-
-
-/* Get the completion type for the scope of the tab-completion */
-static PyObject *
-get_completion_type(PyObject *self, PyObject *noarg)
-{
-  return PyInt_FromLong(rl_completion_type);
-}
-
-PyDoc_STRVAR(doc_get_completion_type,
-"get_completion_type() -> int\n\
-Get the type of completion being attempted.");
-
-
-/* Get the beginning index for the scope of the tab-completion */
-
-static PyObject *
-get_begidx(PyObject *self, PyObject *noarg)
-{
-    Py_INCREF(begidx);
-    return begidx;
-}
-
-PyDoc_STRVAR(doc_get_begidx,
-"get_begidx() -> int\n\
-get the beginning index of the readline tab-completion scope");
-
-
-/* Get the ending index for the scope of the tab-completion */
-
-static PyObject *
-get_endidx(PyObject *self, PyObject *noarg)
-{
-    Py_INCREF(endidx);
-    return endidx;
-}
-
-PyDoc_STRVAR(doc_get_endidx,
-"get_endidx() -> int\n\
-get the ending index of the readline tab-completion scope");
-
-
-/* Set the tab-completion word-delimiters that readline uses */
-
-static PyObject *
-set_completer_delims(PyObject *self, PyObject *args)
-{
-    char *break_chars;
-
-    if(!PyArg_ParseTuple(args, "s:set_completer_delims", &break_chars)) {
-        return NULL;
-    }
-    free((void*)rl_completer_word_break_characters);
-    rl_completer_word_break_characters = strdup(break_chars);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(doc_set_completer_delims,
-"set_completer_delims(string) -> None\n\
-set the readline word delimiters for tab-completion");
-
-/* _py_free_history_entry: Utility function to free a history entry. */
-
-#if defined(RL_READLINE_VERSION) && RL_READLINE_VERSION >= 0x0500
-
-/* Readline version >= 5.0 introduced a timestamp field into the history entry
-   structure; this needs to be freed to avoid a memory leak.  This version of
-   readline also introduced the handy 'free_history_entry' function, which
-   takes care of the timestamp. */
-
-static void
-_py_free_history_entry(HIST_ENTRY *entry)
-{
-    histdata_t data = free_history_entry(entry);
-    free(data);
-}
-
-#else
-
-/* No free_history_entry function;  free everything manually. */
-
-static void
-_py_free_history_entry(HIST_ENTRY *entry)
-{
-    if (entry->line)
-        free((void *)entry->line);
-    if (entry->data)
-        free(entry->data);
-    free(entry);
-}
-
-#endif
-
-static PyObject *
-py_remove_history(PyObject *self, PyObject *args)
-{
-    int entry_number;
-    HIST_ENTRY *entry;
-
-    if (!PyArg_ParseTuple(args, "i:remove_history", &entry_number))
-        return NULL;
-    if (entry_number < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "History index cannot be negative");
-        return NULL;
-    }
-    entry = remove_history(entry_number);
-    if (!entry) {
-        PyErr_Format(PyExc_ValueError,
-                     "No history item at position %d",
-                      entry_number);
-        return NULL;
-    }
-    /* free memory allocated for the history entry */
-    _py_free_history_entry(entry);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(doc_remove_history,
-"remove_history_item(pos) -> None\n\
-remove history item given by its position");
-
-static PyObject *
-py_replace_history(PyObject *self, PyObject *args)
-{
-    int entry_number;
-    char *line;
-    HIST_ENTRY *old_entry;
-
-    if (!PyArg_ParseTuple(args, "is:replace_history", &entry_number,
-                          &line)) {
-        return NULL;
-    }
-    if (entry_number < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "History index cannot be negative");
-        return NULL;
-    }
-    old_entry = replace_history_entry(entry_number, line, (void *)NULL);
-    if (!old_entry) {
-        PyErr_Format(PyExc_ValueError,
-                     "No history item at position %d",
-                     entry_number);
-        return NULL;
-    }
-    /* free memory allocated for the old history entry */
-    _py_free_history_entry(old_entry);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(doc_replace_history,
-"replace_history_item(pos, line) -> None\n\
-replaces history item given by its position with contents of line");
-
-/* Add a line to the history buffer */
-
-static PyObject *
-py_add_history(PyObject *self, PyObject *args)
-{
-    char *line;
-
-    if(!PyArg_ParseTuple(args, "s:add_history", &line)) {
-        return NULL;
-    }
-    add_history(line);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(doc_add_history,
-"add_history(string) -> None\n\
-add a line to the history buffer");
-
-
-/* Get the tab-completion word-delimiters that readline uses */
-
-static PyObject *
-get_completer_delims(PyObject *self, PyObject *noarg)
-{
-    return PyString_FromString(rl_completer_word_break_characters);
-}
-
-PyDoc_STRVAR(doc_get_completer_delims,
-"get_completer_delims() -> string\n\
-get the readline word delimiters for tab-completion");
-
-
-/* Set the completer function */
-
-static PyObject *
-set_completer(PyObject *self, PyObject *args)
-{
-    return set_hook("completer", &completer, args);
-}
-
-PyDoc_STRVAR(doc_set_completer,
-"set_completer([function]) -> None\n\
-Set or remove the completer function.\n\
-The function is called as function(text, state),\n\
-for state in 0, 1, 2, ..., until it returns a non-string.\n\
-It should return the next possible completion starting with 'text'.");
-
-
-static PyObject *
-get_completer(PyObject *self, PyObject *noargs)
-{
-    if (completer == NULL) {
-        Py_RETURN_NONE;
-    }
-    Py_INCREF(completer);
-    return completer;
-}
-
-PyDoc_STRVAR(doc_get_completer,
-"get_completer() -> function\n\
-\n\
-Returns current completer function.");
-
-/* Private function to get current length of history.  XXX It may be
- * possible to replace this with a direct use of history_length instead,
- * but it's not clear whether BSD's libedit keeps history_length up to date.
- * See issue #8065.*/
-
-static int
-_py_get_history_length(void)
-{
-    HISTORY_STATE *hist_st = history_get_history_state();
-    int length = hist_st->length;
-    /* the history docs don't say so, but the address of hist_st changes each
-       time history_get_history_state is called which makes me think it's
-       freshly malloc'd memory...  on the other hand, the address of the last
-       line stays the same as long as history isn't extended, so it appears to
-       be malloc'd but managed by the history package... */
-    free(hist_st);
-    return length;
-}
-
-/* Exported function to get any element of history */
-
-static PyObject *
-get_history_item(PyObject *self, PyObject *args)
-{
-    int idx = 0;
-    HIST_ENTRY *hist_ent;
-
-    if (!PyArg_ParseTuple(args, "i:index", &idx))
-        return NULL;
-#ifdef  __APPLE__
-    if (using_libedit_emulation) {
-        /* Libedit emulation uses 0-based indexes,
-         * the real one uses 1-based indexes,
-         * adjust the index to ensure that Python
-         * code doesn't have to worry about the
-         * difference.
-         */
-        int length = _py_get_history_length();
-        idx --;
-
-        /*
-         * Apple's readline emulation crashes when
-         * the index is out of range, therefore
-         * test for that and fail gracefully.
-         */
-        if (idx < 0 || idx >= length) {
-            Py_RETURN_NONE;
-        }
-    }
-#endif /* __APPLE__ */
-    if ((hist_ent = history_get(idx)))
-        return PyString_FromString(hist_ent->line);
-    else {
-        Py_RETURN_NONE;
-    }
-}
-
-PyDoc_STRVAR(doc_get_history_item,
-"get_history_item() -> string\n\
-return the current contents of history item at index.");
-
-
-/* Exported function to get current length of history */
-
-static PyObject *
-get_current_history_length(PyObject *self, PyObject *noarg)
-{
-    return PyInt_FromLong((long)_py_get_history_length());
-}
-
-PyDoc_STRVAR(doc_get_current_history_length,
-"get_current_history_length() -> integer\n\
-return the current (not the maximum) length of history.");
-
-
-/* Exported function to read the current line buffer */
-
-static PyObject *
-get_line_buffer(PyObject *self, PyObject *noarg)
-{
-    return PyString_FromString(rl_line_buffer);
-}
-
-PyDoc_STRVAR(doc_get_line_buffer,
-"get_line_buffer() -> string\n\
-return the current contents of the line buffer.");
-
-
-#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER
-
-/* Exported function to clear the current history */
-
-static PyObject *
-py_clear_history(PyObject *self, PyObject *noarg)
-{
-    clear_history();
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(doc_clear_history,
-"clear_history() -> None\n\
-Clear the current readline history.");
-#endif
-
-
-/* Exported function to insert text into the line buffer */
-
-static PyObject *
-insert_text(PyObject *self, PyObject *args)
-{
-    char *s;
-    if (!PyArg_ParseTuple(args, "s:insert_text", &s))
-        return NULL;
-    rl_insert_text(s);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(doc_insert_text,
-"insert_text(string) -> None\n\
-Insert text into the command line.");
-
-
-/* Redisplay the line buffer */
-
-static PyObject *
-redisplay(PyObject *self, PyObject *noarg)
-{
-    rl_redisplay();
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(doc_redisplay,
-"redisplay() -> None\n\
-Change what's displayed on the screen to reflect the current\n\
-contents of the line buffer.");
-
-
-/* Table of functions exported by the module */
-
-static struct PyMethodDef readline_methods[] =
-{
-    {"parse_and_bind", parse_and_bind, METH_VARARGS, doc_parse_and_bind},
-    {"get_line_buffer", get_line_buffer, METH_NOARGS, doc_get_line_buffer},
-    {"insert_text", insert_text, METH_VARARGS, doc_insert_text},
-    {"redisplay", redisplay, METH_NOARGS, doc_redisplay},
-    {"read_init_file", read_init_file, METH_VARARGS, doc_read_init_file},
-    {"read_history_file", read_history_file,
-     METH_VARARGS, doc_read_history_file},
-    {"write_history_file", write_history_file,
-     METH_VARARGS, doc_write_history_file},
-    {"get_history_item", get_history_item,
-     METH_VARARGS, doc_get_history_item},
-    {"get_current_history_length", (PyCFunction)get_current_history_length,
-     METH_NOARGS, doc_get_current_history_length},
-    {"set_history_length", set_history_length,
-     METH_VARARGS, set_history_length_doc},
-    {"get_history_length", get_history_length,
-     METH_NOARGS, get_history_length_doc},
-    {"set_completer", set_completer, METH_VARARGS, doc_set_completer},
-    {"get_completer", get_completer, METH_NOARGS, doc_get_completer},
-    {"get_completion_type", get_completion_type,
-     METH_NOARGS, doc_get_completion_type},
-    {"get_begidx", get_begidx, METH_NOARGS, doc_get_begidx},
-    {"get_endidx", get_endidx, METH_NOARGS, doc_get_endidx},
-
-    {"set_completer_delims", set_completer_delims,
-     METH_VARARGS, doc_set_completer_delims},
-    {"add_history", py_add_history, METH_VARARGS, doc_add_history},
-    {"remove_history_item", py_remove_history, METH_VARARGS, doc_remove_history},
-    {"replace_history_item", py_replace_history, METH_VARARGS, doc_replace_history},
-    {"get_completer_delims", get_completer_delims,
-     METH_NOARGS, doc_get_completer_delims},
-
-    {"set_completion_display_matches_hook", set_completion_display_matches_hook,
-     METH_VARARGS, doc_set_completion_display_matches_hook},
-    {"set_startup_hook", set_startup_hook,
-     METH_VARARGS, doc_set_startup_hook},
-#ifdef HAVE_RL_PRE_INPUT_HOOK
-    {"set_pre_input_hook", set_pre_input_hook,
-     METH_VARARGS, doc_set_pre_input_hook},
-#endif
-#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER
-    {"clear_history", py_clear_history, METH_NOARGS, doc_clear_history},
-#endif
-    {0, 0}
-};
-
-
-/* C function to call the Python hooks. */
-
-static int
-on_hook(PyObject *func)
-{
-    int result = 0;
-    if (func != NULL) {
-        PyObject *r;
-#ifdef WITH_THREAD
-        PyGILState_STATE gilstate = PyGILState_Ensure();
-#endif
-        r = PyObject_CallFunction(func, NULL);
-        if (r == NULL)
-            goto error;
-        if (r == Py_None)
-            result = 0;
-        else {
-            result = PyInt_AsLong(r);
-            if (result == -1 && PyErr_Occurred())
-                goto error;
-        }
-        Py_DECREF(r);
-        goto done;
-      error:
-        PyErr_Clear();
-        Py_XDECREF(r);
-      done:
-#ifdef WITH_THREAD
-        PyGILState_Release(gilstate);
-#endif
-        return result;
-    }
-    return result;
-}
-
-static int
-on_startup_hook(void)
-{
-    return on_hook(startup_hook);
-}
-
-#ifdef HAVE_RL_PRE_INPUT_HOOK
-static int
-on_pre_input_hook(void)
-{
-    return on_hook(pre_input_hook);
-}
-#endif
-
-
-/* C function to call the Python completion_display_matches */
-
-static void
-on_completion_display_matches_hook(char **matches,
-                                   int num_matches, int max_length)
-{
-    int i;
-    PyObject *m=NULL, *s=NULL, *r=NULL;
-#ifdef WITH_THREAD
-    PyGILState_STATE gilstate = PyGILState_Ensure();
-#endif
-    m = PyList_New(num_matches);
-    if (m == NULL)
-        goto error;
-    for (i = 0; i < num_matches; i++) {
-        s = PyString_FromString(matches[i+1]);
-        if (s == NULL)
-            goto error;
-        if (PyList_SetItem(m, i, s) == -1)
-            goto error;
-    }
-
-    r = PyObject_CallFunction(completion_display_matches_hook,
-                              "sOi", matches[0], m, max_length);
-
-    Py_DECREF(m); m=NULL;
-
-    if (r == NULL ||
-        (r != Py_None && PyInt_AsLong(r) == -1 && PyErr_Occurred())) {
-        goto error;
-    }
-    Py_XDECREF(r); r=NULL;
-
-    if (0) {
-    error:
-        PyErr_Clear();
-        Py_XDECREF(m);
-        Py_XDECREF(r);
-    }
-#ifdef WITH_THREAD
-    PyGILState_Release(gilstate);
-#endif
-}
-
-
-/* C function to call the Python completer. */
-
-static char *
-on_completion(const char *text, int state)
-{
-    char *result = NULL;
-    if (completer != NULL) {
-        PyObject *r;
-#ifdef WITH_THREAD
-        PyGILState_STATE gilstate = PyGILState_Ensure();
-#endif
-        rl_attempted_completion_over = 1;
-        r = PyObject_CallFunction(completer, "si", text, state);
-        if (r == NULL)
-            goto error;
-        if (r == Py_None) {
-            result = NULL;
-        }
-        else {
-            char *s = PyString_AsString(r);
-            if (s == NULL)
-                goto error;
-            result = strdup(s);
-        }
-        Py_DECREF(r);
-        goto done;
-      error:
-        PyErr_Clear();
-        Py_XDECREF(r);
-      done:
-#ifdef WITH_THREAD
-        PyGILState_Release(gilstate);
-#endif
-        return result;
-    }
-    return result;
-}
-
-
-/* A more flexible constructor that saves the "begidx" and "endidx"
- * before calling the normal completer */
-
-static char **
-flex_complete(char *text, int start, int end)
-{
-#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER
-    rl_completion_append_character ='\0';
-#endif
-#ifdef HAVE_RL_COMPLETION_SUPPRESS_APPEND
-    rl_completion_suppress_append = 0;
-#endif
-    Py_XDECREF(begidx);
-    Py_XDECREF(endidx);
-    begidx = PyInt_FromLong((long) start);
-    endidx = PyInt_FromLong((long) end);
-    return completion_matches(text, *on_completion);
-}
-
-
-/* Helper to initialize GNU readline properly. */
-
-static void
-setup_readline(void)
-{
-#ifdef SAVE_LOCALE
-    char *saved_locale = strdup(setlocale(LC_CTYPE, NULL));
-    if (!saved_locale)
-        Py_FatalError("not enough memory to save locale");
-#endif
-
-#ifdef __APPLE__
-    /* the libedit readline emulation resets key bindings etc 
-     * when calling rl_initialize.  So call it upfront
-     */
-    if (using_libedit_emulation)
-        rl_initialize();
-#endif /* __APPLE__ */
-
-    using_history();
-
-    rl_readline_name = "python";
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-    /* Allow $if term= in .inputrc to work */
-    rl_terminal_name = getenv("TERM");
-#endif
-    /* Force rebind of TAB to insert-tab */
-    rl_bind_key('\t', rl_insert);
-    /* Bind both ESC-TAB and ESC-ESC to the completion function */
-    rl_bind_key_in_map ('\t', rl_complete, emacs_meta_keymap);
-    rl_bind_key_in_map ('\033', rl_complete, emacs_meta_keymap);
-    /* Set our hook functions */
-    rl_startup_hook = (Function *)on_startup_hook;
-#ifdef HAVE_RL_PRE_INPUT_HOOK
-    rl_pre_input_hook = (Function *)on_pre_input_hook;
-#endif
-    /* Set our completion function */
-    rl_attempted_completion_function = (CPPFunction *)flex_complete;
-    /* Set Python word break characters */
-    rl_completer_word_break_characters =
-        strdup(" \t\n`~!@#$%^&*()-=+[{]}\\|;:'\",<>/?");
-        /* All nonalphanums except '.' */
-
-    begidx = PyInt_FromLong(0L);
-    endidx = PyInt_FromLong(0L);
-    /* Initialize (allows .inputrc to override)
-     *
-     * XXX: A bug in the readline-2.2 library causes a memory leak
-     * inside this function.  Nothing we can do about it.
-     */
-#ifdef __APPLE__
-    if (using_libedit_emulation)
-	rl_read_init_file(NULL);
-    else
-#endif /* __APPLE__ */
-        rl_initialize();
-    
-    RESTORE_LOCALE(saved_locale)
-}
-
-/* Wrapper around GNU readline that handles signals differently. */
-
-
-#if defined(HAVE_RL_CALLBACK) && defined(HAVE_SELECT)
-
-static  char *completed_input_string;
-static void
-rlhandler(char *text)
-{
-    completed_input_string = text;
-    rl_callback_handler_remove();
-}
-
-extern PyThreadState* _PyOS_ReadlineTState;
-
-static char *
-readline_until_enter_or_signal(char *prompt, int *signal)
-{
-    char * not_done_reading = "";
-    fd_set selectset;
-
-    *signal = 0;
-#ifdef HAVE_RL_CATCH_SIGNAL
-    rl_catch_signals = 0;
-#endif
-
-    rl_callback_handler_install (prompt, rlhandler);
-    FD_ZERO(&selectset);
-
-    completed_input_string = not_done_reading;
-
-    while (completed_input_string == not_done_reading) {
-        int has_input = 0;
-
-        while (!has_input)
-        {               struct timeval timeout = {0, 100000}; /* 0.1 seconds */
-
-            /* [Bug #1552726] Only limit the pause if an input hook has been
-               defined.  */
-            struct timeval *timeoutp = NULL;
-            if (PyOS_InputHook)
-                timeoutp = &timeout;
-            FD_SET(fileno(rl_instream), &selectset);
-            /* select resets selectset if no input was available */
-            has_input = select(fileno(rl_instream) + 1, &selectset,
-                               NULL, NULL, timeoutp);
-            if(PyOS_InputHook) PyOS_InputHook();
-        }
-
-        if(has_input > 0) {
-            rl_callback_read_char();
-        }
-        else if (errno == EINTR) {
-            int s;
-#ifdef WITH_THREAD
-            PyEval_RestoreThread(_PyOS_ReadlineTState);
-#endif
-            s = PyErr_CheckSignals();
-#ifdef WITH_THREAD
-            PyEval_SaveThread();
-#endif
-            if (s < 0) {
-                rl_free_line_state();
-                rl_cleanup_after_signal();
-                rl_callback_handler_remove();
-                *signal = 1;
-                completed_input_string = NULL;
-            }
-        }
-    }
-
-    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(char *prompt, int *signal)
-{
-    PyOS_sighandler_t old_inthandler;
-    char *p;
-
-    *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;
-    }
-    rl_event_hook = PyOS_InputHook;
-    p = readline(prompt);
-    PyOS_setsig(SIGINT, old_inthandler);
-
-    return p;
-}
-#endif /*defined(HAVE_RL_CALLBACK) && defined(HAVE_SELECT) */
-
-
-static char *
-call_readline(FILE *sys_stdin, FILE *sys_stdout, char *prompt)
-{
-    size_t n;
-    char *p, *q;
-    int signal;
-
-#ifdef SAVE_LOCALE
-    char *saved_locale = strdup(setlocale(LC_CTYPE, NULL));
-    if (!saved_locale)
-        Py_FatalError("not enough memory to save locale");
-    setlocale(LC_CTYPE, "");
-#endif
-
-    if (sys_stdin != rl_instream || sys_stdout != rl_outstream) {
-        rl_instream = sys_stdin;
-        rl_outstream = sys_stdout;
-#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER
-        rl_prep_terminal (1);
-#endif
-    }
-
-    p = readline_until_enter_or_signal(prompt, &signal);
-
-    /* we got an interrupt signal */
-    if (signal) {
-        RESTORE_LOCALE(saved_locale)
-        return NULL;
-    }
-
-    /* We got an EOF, return a empty string. */
-    if (p == NULL) {
-        p = PyMem_Malloc(1);
-        if (p != NULL)
-            *p = '\0';
-        RESTORE_LOCALE(saved_locale)
-        return p;
-    }
-
-    /* we have a valid line */
-    n = strlen(p);
-    if (n > 0) {
-        const char *line;
-        int length = _py_get_history_length();
-        if (length > 0)
-#ifdef __APPLE__
-            if (using_libedit_emulation) {
-                /*
-                 * Libedit's emulation uses 0-based indexes,
-                 * the real readline uses 1-based indexes.
-                 */
-                line = history_get(length - 1)->line;
-            } else
-#endif /* __APPLE__ */
-            line = history_get(length)->line;
-        else
-            line = "";
-        if (strcmp(p, line))
-            add_history(p);
-    }
-    /* Copy the malloc'ed buffer into a PyMem_Malloc'ed one and
-       release the original. */
-    q = p;
-    p = PyMem_Malloc(n+2);
-    if (p != NULL) {
-        strncpy(p, q, n);
-        p[n] = '\n';
-        p[n+1] = '\0';
-    }
-    free(q);
-    RESTORE_LOCALE(saved_locale)
-    return p;
-}
-
-
-/* Initialize the module */
-
-PyDoc_STRVAR(doc_module,
-"Importing this module enables command line editing using GNU readline.");
-
-#ifdef __APPLE__
-PyDoc_STRVAR(doc_module_le,
-"Importing this module enables command line editing using libedit readline.");
-#endif /* __APPLE__ */
-
-PyMODINIT_FUNC
-initreadline(void)
-{
-    PyObject *m;
-
-#ifdef __APPLE__
-    if (strncmp(rl_library_version, libedit_version_tag, strlen(libedit_version_tag)) == 0) {
-        using_libedit_emulation = 1;
-    }
-
-    if (using_libedit_emulation)
-        m = Py_InitModule4("readline", readline_methods, doc_module_le,
-                   (PyObject *)NULL, PYTHON_API_VERSION);
-    else
-
-#endif /* __APPLE__ */
-
-    m = Py_InitModule4("readline", readline_methods, doc_module,
-                       (PyObject *)NULL, PYTHON_API_VERSION);
-    if (m == NULL)
-        return;
-
-
-
-    PyOS_ReadlineFunctionPointer = call_readline;
-    setup_readline();
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/resource.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/resource.c
deleted file mode 100644
index e140fc0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/resource.c
+++ /dev/null
@@ -1,329 +0,0 @@
-
-#include "Python.h"
-#include "structseq.h"
-#include <sys/resource.h>
-#include <sys/time.h>
-#include <string.h>
-#include <errno.h>
-/* for sysconf */
-#if defined(HAVE_UNISTD_H)
-#include <unistd.h>
-#endif
-
-/* On some systems, these aren't in any header file.
-   On others they are, with inconsistent prototypes.
-   We declare the (default) return type, to shut up gcc -Wall;
-   but we can't declare the prototype, to avoid errors
-   when the header files declare it different.
-   Worse, on some Linuxes, getpagesize() returns a size_t... */
-
-#define doubletime(TV) ((double)(TV).tv_sec + (TV).tv_usec * 0.000001)
-
-static PyObject *ResourceError;
-
-PyDoc_STRVAR(struct_rusage__doc__,
-"struct_rusage: Result from getrusage.\n\n"
-"This object may be accessed either as a tuple of\n"
-"    (utime,stime,maxrss,ixrss,idrss,isrss,minflt,majflt,\n"
-"    nswap,inblock,oublock,msgsnd,msgrcv,nsignals,nvcsw,nivcsw)\n"
-"or via the attributes ru_utime, ru_stime, ru_maxrss, and so on.");
-
-static PyStructSequence_Field struct_rusage_fields[] = {
-    {"ru_utime",        "user time used"},
-    {"ru_stime",        "system time used"},
-    {"ru_maxrss",       "max. resident set size"},
-    {"ru_ixrss",        "shared memory size"},
-    {"ru_idrss",        "unshared data size"},
-    {"ru_isrss",        "unshared stack size"},
-    {"ru_minflt",       "page faults not requiring I/O"},
-    {"ru_majflt",       "page faults requiring I/O"},
-    {"ru_nswap",        "number of swap outs"},
-    {"ru_inblock",      "block input operations"},
-    {"ru_oublock",      "block output operations"},
-    {"ru_msgsnd",       "IPC messages sent"},
-    {"ru_msgrcv",       "IPC messages received"},
-    {"ru_nsignals",     "signals received"},
-    {"ru_nvcsw",        "voluntary context switches"},
-    {"ru_nivcsw",       "involuntary context switches"},
-    {0}
-};
-
-static PyStructSequence_Desc struct_rusage_desc = {
-    "resource.struct_rusage",           /* name */
-    struct_rusage__doc__,       /* doc */
-    struct_rusage_fields,       /* fields */
-    16          /* n_in_sequence */
-};
-
-static int initialized;
-static PyTypeObject StructRUsageType;
-
-static PyObject *
-resource_getrusage(PyObject *self, PyObject *args)
-{
-    int who;
-    struct rusage ru;
-    PyObject *result;
-
-    if (!PyArg_ParseTuple(args, "i:getrusage", &who))
-        return NULL;
-
-    if (getrusage(who, &ru) == -1) {
-        if (errno == EINVAL) {
-            PyErr_SetString(PyExc_ValueError,
-                            "invalid who parameter");
-            return NULL;
-        }
-        PyErr_SetFromErrno(ResourceError);
-        return NULL;
-    }
-
-    result = PyStructSequence_New(&StructRUsageType);
-    if (!result)
-        return NULL;
-
-    PyStructSequence_SET_ITEM(result, 0,
-                    PyFloat_FromDouble(doubletime(ru.ru_utime)));
-    PyStructSequence_SET_ITEM(result, 1,
-                    PyFloat_FromDouble(doubletime(ru.ru_stime)));
-    PyStructSequence_SET_ITEM(result, 2, PyInt_FromLong(ru.ru_maxrss));
-    PyStructSequence_SET_ITEM(result, 3, PyInt_FromLong(ru.ru_ixrss));
-    PyStructSequence_SET_ITEM(result, 4, PyInt_FromLong(ru.ru_idrss));
-    PyStructSequence_SET_ITEM(result, 5, PyInt_FromLong(ru.ru_isrss));
-    PyStructSequence_SET_ITEM(result, 6, PyInt_FromLong(ru.ru_minflt));
-    PyStructSequence_SET_ITEM(result, 7, PyInt_FromLong(ru.ru_majflt));
-    PyStructSequence_SET_ITEM(result, 8, PyInt_FromLong(ru.ru_nswap));
-    PyStructSequence_SET_ITEM(result, 9, PyInt_FromLong(ru.ru_inblock));
-    PyStructSequence_SET_ITEM(result, 10, PyInt_FromLong(ru.ru_oublock));
-    PyStructSequence_SET_ITEM(result, 11, PyInt_FromLong(ru.ru_msgsnd));
-    PyStructSequence_SET_ITEM(result, 12, PyInt_FromLong(ru.ru_msgrcv));
-    PyStructSequence_SET_ITEM(result, 13, PyInt_FromLong(ru.ru_nsignals));
-    PyStructSequence_SET_ITEM(result, 14, PyInt_FromLong(ru.ru_nvcsw));
-    PyStructSequence_SET_ITEM(result, 15, PyInt_FromLong(ru.ru_nivcsw));
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(result);
-        return NULL;
-    }
-
-    return result;
-}
-
-
-static PyObject *
-resource_getrlimit(PyObject *self, PyObject *args)
-{
-    struct rlimit rl;
-    int resource;
-
-    if (!PyArg_ParseTuple(args, "i:getrlimit", &resource))
-        return NULL;
-
-    if (resource < 0 || resource >= RLIM_NLIMITS) {
-        PyErr_SetString(PyExc_ValueError,
-                        "invalid resource specified");
-        return NULL;
-    }
-
-    if (getrlimit(resource, &rl) == -1) {
-        PyErr_SetFromErrno(ResourceError);
-        return NULL;
-    }
-
-#if defined(HAVE_LONG_LONG)
-    if (sizeof(rl.rlim_cur) > sizeof(long)) {
-        return Py_BuildValue("LL",
-                             (PY_LONG_LONG) rl.rlim_cur,
-                             (PY_LONG_LONG) rl.rlim_max);
-    }
-#endif
-    return Py_BuildValue("ll", (long) rl.rlim_cur, (long) rl.rlim_max);
-}
-
-static PyObject *
-resource_setrlimit(PyObject *self, PyObject *args)
-{
-    struct rlimit rl;
-    int resource;
-    PyObject *curobj, *maxobj;
-
-    if (!PyArg_ParseTuple(args, "i(OO):setrlimit",
-                          &resource, &curobj, &maxobj))
-        return NULL;
-
-    if (resource < 0 || resource >= RLIM_NLIMITS) {
-        PyErr_SetString(PyExc_ValueError,
-                        "invalid resource specified");
-        return NULL;
-    }
-
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    rl.rlim_cur = PyInt_AsLong(curobj);
-    if (rl.rlim_cur == (rlim_t)-1 && PyErr_Occurred())
-        return NULL;
-    rl.rlim_max = PyInt_AsLong(maxobj);
-    if (rl.rlim_max == (rlim_t)-1 && PyErr_Occurred())
-        return NULL;
-#else
-    /* The limits are probably bigger than a long */
-    rl.rlim_cur = PyLong_Check(curobj) ?
-        PyLong_AsLongLong(curobj) : PyInt_AsLong(curobj);
-    if (rl.rlim_cur == (rlim_t)-1 && PyErr_Occurred())
-        return NULL;
-    rl.rlim_max = PyLong_Check(maxobj) ?
-        PyLong_AsLongLong(maxobj) : PyInt_AsLong(maxobj);
-    if (rl.rlim_max == (rlim_t)-1 && PyErr_Occurred())
-        return NULL;
-#endif
-
-    rl.rlim_cur = rl.rlim_cur & RLIM_INFINITY;
-    rl.rlim_max = rl.rlim_max & RLIM_INFINITY;
-    if (setrlimit(resource, &rl) == -1) {
-        if (errno == EINVAL)
-            PyErr_SetString(PyExc_ValueError,
-                            "current limit exceeds maximum limit");
-        else if (errno == EPERM)
-            PyErr_SetString(PyExc_ValueError,
-                            "not allowed to raise maximum limit");
-        else
-            PyErr_SetFromErrno(ResourceError);
-        return NULL;
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-resource_getpagesize(PyObject *self, PyObject *unused)
-{
-    long pagesize = 0;
-#if defined(HAVE_GETPAGESIZE)
-    pagesize = getpagesize();
-#elif defined(HAVE_SYSCONF)
-#if defined(_SC_PAGE_SIZE)
-    pagesize = sysconf(_SC_PAGE_SIZE);
-#else
-    /* Irix 5.3 has _SC_PAGESIZE, but not _SC_PAGE_SIZE */
-    pagesize = sysconf(_SC_PAGESIZE);
-#endif
-#endif
-    return Py_BuildValue("i", pagesize);
-
-}
-
-/* List of functions */
-
-static struct PyMethodDef
-resource_methods[] = {
-    {"getrusage",    resource_getrusage,   METH_VARARGS},
-    {"getrlimit",    resource_getrlimit,   METH_VARARGS},
-    {"setrlimit",    resource_setrlimit,   METH_VARARGS},
-    {"getpagesize",  resource_getpagesize, METH_NOARGS},
-    {NULL, NULL}                             /* sentinel */
-};
-
-
-/* Module initialization */
-
-PyMODINIT_FUNC
-initresource(void)
-{
-    PyObject *m, *v;
-
-    /* Create the module and add the functions */
-    m = Py_InitModule("resource", resource_methods);
-    if (m == NULL)
-        return;
-
-    /* Add some symbolic constants to the module */
-    if (ResourceError == NULL) {
-        ResourceError = PyErr_NewException("resource.error",
-                                           NULL, NULL);
-    }
-    Py_INCREF(ResourceError);
-    PyModule_AddObject(m, "error", ResourceError);
-    if (!initialized)
-        PyStructSequence_InitType(&StructRUsageType,
-                                  &struct_rusage_desc);
-    Py_INCREF(&StructRUsageType);
-    PyModule_AddObject(m, "struct_rusage",
-                       (PyObject*) &StructRUsageType);
-
-    /* insert constants */
-#ifdef RLIMIT_CPU
-    PyModule_AddIntConstant(m, "RLIMIT_CPU", RLIMIT_CPU);
-#endif
-
-#ifdef RLIMIT_FSIZE
-    PyModule_AddIntConstant(m, "RLIMIT_FSIZE", RLIMIT_FSIZE);
-#endif
-
-#ifdef RLIMIT_DATA
-    PyModule_AddIntConstant(m, "RLIMIT_DATA", RLIMIT_DATA);
-#endif
-
-#ifdef RLIMIT_STACK
-    PyModule_AddIntConstant(m, "RLIMIT_STACK", RLIMIT_STACK);
-#endif
-
-#ifdef RLIMIT_CORE
-    PyModule_AddIntConstant(m, "RLIMIT_CORE", RLIMIT_CORE);
-#endif
-
-#ifdef RLIMIT_NOFILE
-    PyModule_AddIntConstant(m, "RLIMIT_NOFILE", RLIMIT_NOFILE);
-#endif
-
-#ifdef RLIMIT_OFILE
-    PyModule_AddIntConstant(m, "RLIMIT_OFILE", RLIMIT_OFILE);
-#endif
-
-#ifdef RLIMIT_VMEM
-    PyModule_AddIntConstant(m, "RLIMIT_VMEM", RLIMIT_VMEM);
-#endif
-
-#ifdef RLIMIT_AS
-    PyModule_AddIntConstant(m, "RLIMIT_AS", RLIMIT_AS);
-#endif
-
-#ifdef RLIMIT_RSS
-    PyModule_AddIntConstant(m, "RLIMIT_RSS", RLIMIT_RSS);
-#endif
-
-#ifdef RLIMIT_NPROC
-    PyModule_AddIntConstant(m, "RLIMIT_NPROC", RLIMIT_NPROC);
-#endif
-
-#ifdef RLIMIT_MEMLOCK
-    PyModule_AddIntConstant(m, "RLIMIT_MEMLOCK", RLIMIT_MEMLOCK);
-#endif
-
-#ifdef RLIMIT_SBSIZE
-    PyModule_AddIntConstant(m, "RLIMIT_SBSIZE", RLIMIT_SBSIZE);
-#endif
-
-#ifdef RUSAGE_SELF
-    PyModule_AddIntConstant(m, "RUSAGE_SELF", RUSAGE_SELF);
-#endif
-
-#ifdef RUSAGE_CHILDREN
-    PyModule_AddIntConstant(m, "RUSAGE_CHILDREN", RUSAGE_CHILDREN);
-#endif
-
-#ifdef RUSAGE_BOTH
-    PyModule_AddIntConstant(m, "RUSAGE_BOTH", RUSAGE_BOTH);
-#endif
-
-#if defined(HAVE_LONG_LONG)
-    if (sizeof(RLIM_INFINITY) > sizeof(long)) {
-        v = PyLong_FromLongLong((PY_LONG_LONG) RLIM_INFINITY);
-    } else
-#endif
-    {
-        v = PyInt_FromLong((long) RLIM_INFINITY);
-    }
-    if (v) {
-        PyModule_AddObject(m, "RLIM_INFINITY", v);
-    }
-    initialized = 1;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/rotatingtree.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/rotatingtree.c
deleted file mode 100644
index b92f915..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/rotatingtree.c
+++ /dev/null
@@ -1,121 +0,0 @@
-#include "rotatingtree.h"
-
-#define KEY_LOWER_THAN(key1, key2)  ((char*)(key1) < (char*)(key2))
-
-/* The randombits() function below is a fast-and-dirty generator that
- * is probably irregular enough for our purposes.  Note that it's biased:
- * I think that ones are slightly more probable than zeroes.  It's not
- * important here, though.
- */
-
-static unsigned int random_value = 1;
-static unsigned int random_stream = 0;
-
-static int
-randombits(int bits)
-{
-    int result;
-    if (random_stream < (1U << bits)) {
-        random_value *= 1082527;
-        random_stream = random_value;
-    }
-    result = random_stream & ((1<<bits)-1);
-    random_stream >>= bits;
-    return result;
-}
-
-
-/* Insert a new node into the tree.
-   (*root) is modified to point to the new root. */
-void
-RotatingTree_Add(rotating_node_t **root, rotating_node_t *node)
-{
-    while (*root != NULL) {
-        if (KEY_LOWER_THAN(node->key, (*root)->key))
-            root = &((*root)->left);
-        else
-            root = &((*root)->right);
-    }
-    node->left = NULL;
-    node->right = NULL;
-    *root = node;
-}
-
-/* Locate the node with the given key.  This is the most complicated
-   function because it occasionally rebalances the tree to move the
-   resulting node closer to the root. */
-rotating_node_t *
-RotatingTree_Get(rotating_node_t **root, void *key)
-{
-    if (randombits(3) != 4) {
-        /* Fast path, no rebalancing */
-        rotating_node_t *node = *root;
-        while (node != NULL) {
-            if (node->key == key)
-                return node;
-            if (KEY_LOWER_THAN(key, node->key))
-                node = node->left;
-            else
-                node = node->right;
-        }
-        return NULL;
-    }
-    else {
-        rotating_node_t **pnode = root;
-        rotating_node_t *node = *pnode;
-        rotating_node_t *next;
-        int rotate;
-        if (node == NULL)
-            return NULL;
-        while (1) {
-            if (node->key == key)
-                return node;
-            rotate = !randombits(1);
-            if (KEY_LOWER_THAN(key, node->key)) {
-                next = node->left;
-                if (next == NULL)
-                    return NULL;
-                if (rotate) {
-                    node->left = next->right;
-                    next->right = node;
-                    *pnode = next;
-                }
-                else
-                    pnode = &(node->left);
-            }
-            else {
-                next = node->right;
-                if (next == NULL)
-                    return NULL;
-                if (rotate) {
-                    node->right = next->left;
-                    next->left = node;
-                    *pnode = next;
-                }
-                else
-                    pnode = &(node->right);
-            }
-            node = next;
-        }
-    }
-}
-
-/* Enumerate all nodes in the tree.  The callback enumfn() should return
-   zero to continue the enumeration, or non-zero to interrupt it.
-   A non-zero value is directly returned by RotatingTree_Enum(). */
-int
-RotatingTree_Enum(rotating_node_t *root, rotating_tree_enum_fn enumfn,
-                  void *arg)
-{
-    int result;
-    rotating_node_t *node;
-    while (root != NULL) {
-        result = RotatingTree_Enum(root->left, enumfn, arg);
-        if (result != 0) return result;
-        node = root->right;
-        result = enumfn(root, arg);
-        if (result != 0) return result;
-        root = node;
-    }
-    return 0;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/rotatingtree.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/rotatingtree.h
deleted file mode 100644
index 22c0089..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/rotatingtree.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* "Rotating trees" (Armin Rigo)
- *
- * Google "splay trees" for the general idea.
- *
- * It's a dict-like data structure that works best when accesses are not
- * random, but follow a strong pattern.  The one implemented here is for
- * access patterns where the same small set of keys is looked up over
- * and over again, and this set of keys evolves slowly over time.
- */
-
-#include <stdlib.h>
-
-#define EMPTY_ROTATING_TREE       ((rotating_node_t *)NULL)
-
-typedef struct rotating_node_s rotating_node_t;
-typedef int (*rotating_tree_enum_fn) (rotating_node_t *node, void *arg);
-
-struct rotating_node_s {
-	void *key;
-	rotating_node_t *left;
-	rotating_node_t *right;
-};
-
-void RotatingTree_Add(rotating_node_t **root, rotating_node_t *node);
-rotating_node_t* RotatingTree_Get(rotating_node_t **root, void *key);
-int RotatingTree_Enum(rotating_node_t *root, rotating_tree_enum_fn enumfn,
-		      void *arg);
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/selectmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/selectmodule.c
deleted file mode 100644
index 81e5af8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/selectmodule.c
+++ /dev/null
@@ -1,1912 +0,0 @@
-/* select - Module containing unix select(2) call.
-   Under Unix, the file descriptors are small integers.
-   Under Win32, select only exists for sockets, and sockets may
-   have any value except INVALID_SOCKET.
-   Under BeOS, we suffer the same dichotomy as Win32; sockets can be anything
-   >= 0.
-*/
-
-#include "Python.h"
-#include <structmember.h>
-
-#ifdef __APPLE__
-    /* Perform runtime testing for a broken poll on OSX to make it easier
-     * to use the same binary on multiple releases of the OS.
-     */
-#undef HAVE_BROKEN_POLL
-#endif
-
-/* Windows #defines FD_SETSIZE to 64 if FD_SETSIZE isn't already defined.
-   64 is too small (too many people have bumped into that limit).
-   Here we boost it.
-   Users who want even more than the boosted limit should #define
-   FD_SETSIZE higher before this; e.g., via compiler /D switch.
-*/
-#if defined(MS_WINDOWS) && !defined(FD_SETSIZE)
-#define FD_SETSIZE 512
-#endif
-
-#if defined(HAVE_POLL_H)
-#include <poll.h>
-#elif defined(HAVE_SYS_POLL_H)
-#include <sys/poll.h>
-#endif
-
-#ifdef __sgi
-/* This is missing from unistd.h */
-extern void bzero(void *, int);
-#endif
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-#if defined(PYOS_OS2) && !defined(PYCC_GCC)
-#include <sys/time.h>
-#include <utils.h>
-#endif
-
-#ifdef MS_WINDOWS
-#  include <winsock2.h>
-#else
-#  define SOCKET int
-#  ifdef __BEOS__
-#    include <net/socket.h>
-#  elif defined(__VMS)
-#    include <socket.h>
-#  endif
-#endif
-
-static PyObject *SelectError;
-
-/* list of Python objects and their file descriptor */
-typedef struct {
-    PyObject *obj;                           /* owned reference */
-    SOCKET fd;
-    int sentinel;                            /* -1 == sentinel */
-} pylist;
-
-static void
-reap_obj(pylist fd2obj[FD_SETSIZE + 1])
-{
-    int i;
-    for (i = 0; i < FD_SETSIZE + 1 && fd2obj[i].sentinel >= 0; i++) {
-        Py_XDECREF(fd2obj[i].obj);
-        fd2obj[i].obj = NULL;
-    }
-    fd2obj[0].sentinel = -1;
-}
-
-
-/* returns -1 and sets the Python exception if an error occurred, otherwise
-   returns a number >= 0
-*/
-static int
-seq2set(PyObject *seq, fd_set *set, pylist fd2obj[FD_SETSIZE + 1])
-{
-    int i;
-    int max = -1;
-    int index = 0;
-    int len = -1;
-    PyObject* fast_seq = NULL;
-    PyObject* o = NULL;
-
-    fd2obj[0].obj = (PyObject*)0;            /* set list to zero size */
-    FD_ZERO(set);
-
-    fast_seq = PySequence_Fast(seq, "arguments 1-3 must be sequences");
-    if (!fast_seq)
-        return -1;
-
-    len = PySequence_Fast_GET_SIZE(fast_seq);
-
-    for (i = 0; i < len; i++)  {
-        SOCKET v;
-
-        /* any intervening fileno() calls could decr this refcnt */
-        if (!(o = PySequence_Fast_GET_ITEM(fast_seq, i)))
-            return -1;
-
-        Py_INCREF(o);
-        v = PyObject_AsFileDescriptor( o );
-        if (v == -1) goto finally;
-
-#if defined(_MSC_VER) && !defined(UEFI_C_SOURCE)
-        max = 0;                             /* not used for Win32 */
-#else  /* !_MSC_VER */
-        if (v < 0 || v >= FD_SETSIZE) {
-            PyErr_SetString(PyExc_ValueError,
-                        "filedescriptor out of range in select()");
-            goto finally;
-        }
-        if (v > max)
-            max = v;
-#endif /* _MSC_VER */
-        FD_SET(v, set);
-
-        /* add object and its file descriptor to the list */
-        if (index >= FD_SETSIZE) {
-            PyErr_SetString(PyExc_ValueError,
-                          "too many file descriptors in select()");
-            goto finally;
-        }
-        fd2obj[index].obj = o;
-        fd2obj[index].fd = v;
-        fd2obj[index].sentinel = 0;
-        fd2obj[++index].sentinel = -1;
-    }
-    Py_DECREF(fast_seq);
-    return max+1;
-
-  finally:
-    Py_XDECREF(o);
-    Py_DECREF(fast_seq);
-    return -1;
-}
-
-/* returns NULL and sets the Python exception if an error occurred */
-static PyObject *
-set2list(fd_set *set, pylist fd2obj[FD_SETSIZE + 1])
-{
-    int i, j, count=0;
-    PyObject *list, *o;
-    SOCKET fd;
-
-    for (j = 0; fd2obj[j].sentinel >= 0; j++) {
-        if (FD_ISSET(fd2obj[j].fd, set))
-            count++;
-    }
-    list = PyList_New(count);
-    if (!list)
-        return NULL;
-
-    i = 0;
-    for (j = 0; fd2obj[j].sentinel >= 0; j++) {
-        fd = fd2obj[j].fd;
-        if (FD_ISSET(fd, set)) {
-#if !defined(_MSC_VER) || defined(UEFI_C_SOURCE)
-            if (fd > FD_SETSIZE) {
-                PyErr_SetString(PyExc_SystemError,
-               "filedescriptor out of range returned in select()");
-                goto finally;
-            }
-#endif
-            o = fd2obj[j].obj;
-            fd2obj[j].obj = NULL;
-            /* transfer ownership */
-            if (PyList_SetItem(list, i, o) < 0)
-                goto finally;
-
-            i++;
-        }
-    }
-    return list;
-  finally:
-    Py_DECREF(list);
-    return NULL;
-}
-
-#undef SELECT_USES_HEAP
-#if FD_SETSIZE > 1024
-#define SELECT_USES_HEAP
-#endif /* FD_SETSIZE > 1024 */
-
-static PyObject *
-select_select(PyObject *self, PyObject *args)
-{
-#ifdef SELECT_USES_HEAP
-    pylist *rfd2obj, *wfd2obj, *efd2obj;
-#else  /* !SELECT_USES_HEAP */
-    /* XXX: All this should probably be implemented as follows:
-     * - find the highest descriptor we're interested in
-     * - add one
-     * - that's the size
-     * See: Stevens, APitUE, $12.5.1
-     */
-    pylist rfd2obj[FD_SETSIZE + 1];
-    pylist wfd2obj[FD_SETSIZE + 1];
-    pylist efd2obj[FD_SETSIZE + 1];
-#endif /* SELECT_USES_HEAP */
-    PyObject *ifdlist, *ofdlist, *efdlist;
-    PyObject *ret = NULL;
-    PyObject *tout = Py_None;
-    fd_set ifdset, ofdset, efdset;
-    double timeout;
-    struct timeval tv, *tvp;
-    long seconds;
-    int imax, omax, emax, max;
-    int n;
-
-    /* convert arguments */
-    if (!PyArg_UnpackTuple(args, "select", 3, 4,
-                          &ifdlist, &ofdlist, &efdlist, &tout))
-        return NULL;
-
-    if (tout == Py_None)
-        tvp = (struct timeval *)0;
-    else if (!PyNumber_Check(tout)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "timeout must be a float or None");
-        return NULL;
-    }
-    else {
-        timeout = PyFloat_AsDouble(tout);
-        if (timeout == -1 && PyErr_Occurred())
-            return NULL;
-        if (timeout > (double)LONG_MAX) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "timeout period too long");
-            return NULL;
-        }
-        seconds = (long)timeout;
-        timeout = timeout - (double)seconds;
-        tv.tv_sec = seconds;
-        tv.tv_usec = (long)(timeout * 1E6);
-        tvp = &tv;
-    }
-
-
-#ifdef SELECT_USES_HEAP
-    /* Allocate memory for the lists */
-    rfd2obj = PyMem_NEW(pylist, FD_SETSIZE + 1);
-    wfd2obj = PyMem_NEW(pylist, FD_SETSIZE + 1);
-    efd2obj = PyMem_NEW(pylist, FD_SETSIZE + 1);
-    if (rfd2obj == NULL || wfd2obj == NULL || efd2obj == NULL) {
-        if (rfd2obj) PyMem_DEL(rfd2obj);
-        if (wfd2obj) PyMem_DEL(wfd2obj);
-        if (efd2obj) PyMem_DEL(efd2obj);
-        return PyErr_NoMemory();
-    }
-#endif /* SELECT_USES_HEAP */
-    /* Convert sequences to fd_sets, and get maximum fd number
-     * propagates the Python exception set in seq2set()
-     */
-    rfd2obj[0].sentinel = -1;
-    wfd2obj[0].sentinel = -1;
-    efd2obj[0].sentinel = -1;
-    if ((imax=seq2set(ifdlist, &ifdset, rfd2obj)) < 0)
-        goto finally;
-    if ((omax=seq2set(ofdlist, &ofdset, wfd2obj)) < 0)
-        goto finally;
-    if ((emax=seq2set(efdlist, &efdset, efd2obj)) < 0)
-        goto finally;
-    max = imax;
-    if (omax > max) max = omax;
-    if (emax > max) max = emax;
-
-    Py_BEGIN_ALLOW_THREADS
-    n = select(max, &ifdset, &ofdset, &efdset, tvp);
-    Py_END_ALLOW_THREADS
-
-#ifdef MS_WINDOWS
-    if (n == SOCKET_ERROR) {
-        PyErr_SetExcFromWindowsErr(SelectError, WSAGetLastError());
-    }
-#else
-    if (n < 0) {
-        PyErr_SetFromErrno(SelectError);
-    }
-#endif
-    else {
-        /* any of these three calls can raise an exception.  it's more
-           convenient to test for this after all three calls... but
-           is that acceptable?
-        */
-        ifdlist = set2list(&ifdset, rfd2obj);
-        ofdlist = set2list(&ofdset, wfd2obj);
-        efdlist = set2list(&efdset, efd2obj);
-        if (PyErr_Occurred())
-            ret = NULL;
-        else
-            ret = PyTuple_Pack(3, ifdlist, ofdlist, efdlist);
-
-        Py_DECREF(ifdlist);
-        Py_DECREF(ofdlist);
-        Py_DECREF(efdlist);
-    }
-
-  finally:
-    reap_obj(rfd2obj);
-    reap_obj(wfd2obj);
-    reap_obj(efd2obj);
-#ifdef SELECT_USES_HEAP
-    PyMem_DEL(rfd2obj);
-    PyMem_DEL(wfd2obj);
-    PyMem_DEL(efd2obj);
-#endif /* SELECT_USES_HEAP */
-    return ret;
-}
-
-#if defined(HAVE_POLL) && !defined(HAVE_BROKEN_POLL)
-/*
- * poll() support
- */
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *dict;
-    int ufd_uptodate;
-    int ufd_len;
-    struct pollfd *ufds;
-} pollObject;
-
-static PyTypeObject poll_Type;
-
-/* Update the malloc'ed array of pollfds to match the dictionary
-   contained within a pollObject.  Return 1 on success, 0 on an error.
-*/
-
-static int
-update_ufd_array(pollObject *self)
-{
-    Py_ssize_t i, pos;
-    PyObject *key, *value;
-    struct pollfd *old_ufds = self->ufds;
-
-    self->ufd_len = PyDict_Size(self->dict);
-    PyMem_RESIZE(self->ufds, struct pollfd, self->ufd_len);
-    if (self->ufds == NULL) {
-        self->ufds = old_ufds;
-        PyErr_NoMemory();
-        return 0;
-    }
-
-    i = pos = 0;
-    while (PyDict_Next(self->dict, &pos, &key, &value)) {
-        self->ufds[i].fd = PyInt_AsLong(key);
-        self->ufds[i].events = (short)PyInt_AsLong(value);
-        i++;
-    }
-    self->ufd_uptodate = 1;
-    return 1;
-}
-
-PyDoc_STRVAR(poll_register_doc,
-"register(fd [, eventmask] ) -> None\n\n\
-Register a file descriptor with the polling object.\n\
-fd -- either an integer, or an object with a fileno() method returning an\n\
-      int.\n\
-events -- an optional bitmask describing the type of events to check for");
-
-static PyObject *
-poll_register(pollObject *self, PyObject *args)
-{
-    PyObject *o, *key, *value;
-    int fd, events = POLLIN | POLLPRI | POLLOUT;
-    int err;
-
-    if (!PyArg_ParseTuple(args, "O|i:register", &o, &events)) {
-        return NULL;
-    }
-
-    fd = PyObject_AsFileDescriptor(o);
-    if (fd == -1) return NULL;
-
-    /* Add entry to the internal dictionary: the key is the
-       file descriptor, and the value is the event mask. */
-    key = PyInt_FromLong(fd);
-    if (key == NULL)
-        return NULL;
-    value = PyInt_FromLong(events);
-    if (value == NULL) {
-        Py_DECREF(key);
-        return NULL;
-    }
-    err = PyDict_SetItem(self->dict, key, value);
-    Py_DECREF(key);
-    Py_DECREF(value);
-    if (err < 0)
-        return NULL;
-
-    self->ufd_uptodate = 0;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(poll_modify_doc,
-"modify(fd, eventmask) -> None\n\n\
-Modify an already registered file descriptor.\n\
-fd -- either an integer, or an object with a fileno() method returning an\n\
-      int.\n\
-events -- an optional bitmask describing the type of events to check for");
-
-static PyObject *
-poll_modify(pollObject *self, PyObject *args)
-{
-    PyObject *o, *key, *value;
-    int fd, events;
-    int err;
-
-    if (!PyArg_ParseTuple(args, "Oi:modify", &o, &events)) {
-        return NULL;
-    }
-
-    fd = PyObject_AsFileDescriptor(o);
-    if (fd == -1) return NULL;
-
-    /* Modify registered fd */
-    key = PyInt_FromLong(fd);
-    if (key == NULL)
-        return NULL;
-    if (PyDict_GetItem(self->dict, key) == NULL) {
-        errno = ENOENT;
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    value = PyInt_FromLong(events);
-    if (value == NULL) {
-        Py_DECREF(key);
-        return NULL;
-    }
-    err = PyDict_SetItem(self->dict, key, value);
-    Py_DECREF(key);
-    Py_DECREF(value);
-    if (err < 0)
-        return NULL;
-
-    self->ufd_uptodate = 0;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-
-PyDoc_STRVAR(poll_unregister_doc,
-"unregister(fd) -> None\n\n\
-Remove a file descriptor being tracked by the polling object.");
-
-static PyObject *
-poll_unregister(pollObject *self, PyObject *o)
-{
-    PyObject *key;
-    int fd;
-
-    fd = PyObject_AsFileDescriptor( o );
-    if (fd == -1)
-        return NULL;
-
-    /* Check whether the fd is already in the array */
-    key = PyInt_FromLong(fd);
-    if (key == NULL)
-        return NULL;
-
-    if (PyDict_DelItem(self->dict, key) == -1) {
-        Py_DECREF(key);
-        /* This will simply raise the KeyError set by PyDict_DelItem
-           if the file descriptor isn't registered. */
-        return NULL;
-    }
-
-    Py_DECREF(key);
-    self->ufd_uptodate = 0;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(poll_poll_doc,
-"poll( [timeout] ) -> list of (fd, event) 2-tuples\n\n\
-Polls the set of registered file descriptors, returning a list containing \n\
-any descriptors that have events or errors to report.");
-
-static PyObject *
-poll_poll(pollObject *self, PyObject *args)
-{
-    PyObject *result_list = NULL, *tout = NULL;
-    int timeout = 0, poll_result, i, j;
-    PyObject *value = NULL, *num = NULL;
-
-    if (!PyArg_UnpackTuple(args, "poll", 0, 1, &tout)) {
-        return NULL;
-    }
-
-    /* Check values for timeout */
-    if (tout == NULL || tout == Py_None)
-        timeout = -1;
-    else if (!PyNumber_Check(tout)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "timeout must be an integer or None");
-        return NULL;
-    }
-    else {
-        tout = PyNumber_Int(tout);
-        if (!tout)
-            return NULL;
-        timeout = PyInt_AsLong(tout);
-        Py_DECREF(tout);
-        if (timeout == -1 && PyErr_Occurred())
-            return NULL;
-    }
-
-    /* Ensure the ufd array is up to date */
-    if (!self->ufd_uptodate)
-        if (update_ufd_array(self) == 0)
-            return NULL;
-
-    /* call poll() */
-    Py_BEGIN_ALLOW_THREADS
-    poll_result = poll(self->ufds, self->ufd_len, timeout);
-    Py_END_ALLOW_THREADS
-
-    if (poll_result < 0) {
-        PyErr_SetFromErrno(SelectError);
-        return NULL;
-    }
-
-    /* build the result list */
-
-    result_list = PyList_New(poll_result);
-    if (!result_list)
-        return NULL;
-    else {
-        for (i = 0, j = 0; j < poll_result; j++) {
-            /* skip to the next fired descriptor */
-            while (!self->ufds[i].revents) {
-                i++;
-            }
-            /* if we hit a NULL return, set value to NULL
-               and break out of loop; code at end will
-               clean up result_list */
-            value = PyTuple_New(2);
-            if (value == NULL)
-                goto error;
-            num = PyInt_FromLong(self->ufds[i].fd);
-            if (num == NULL) {
-                Py_DECREF(value);
-                goto error;
-            }
-            PyTuple_SET_ITEM(value, 0, num);
-
-            /* The &0xffff is a workaround for AIX.  'revents'
-               is a 16-bit short, and IBM assigned POLLNVAL
-               to be 0x8000, so the conversion to int results
-               in a negative number. See SF bug #923315. */
-            num = PyInt_FromLong(self->ufds[i].revents & 0xffff);
-            if (num == NULL) {
-                Py_DECREF(value);
-                goto error;
-            }
-            PyTuple_SET_ITEM(value, 1, num);
-            if ((PyList_SetItem(result_list, j, value)) == -1) {
-                Py_DECREF(value);
-                goto error;
-            }
-            i++;
-        }
-    }
-    return result_list;
-
-  error:
-    Py_DECREF(result_list);
-    return NULL;
-}
-
-static PyMethodDef poll_methods[] = {
-    {"register",        (PyCFunction)poll_register,
-     METH_VARARGS,  poll_register_doc},
-    {"modify",          (PyCFunction)poll_modify,
-     METH_VARARGS,  poll_modify_doc},
-    {"unregister",      (PyCFunction)poll_unregister,
-     METH_O,        poll_unregister_doc},
-    {"poll",            (PyCFunction)poll_poll,
-     METH_VARARGS,  poll_poll_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static pollObject *
-newPollObject(void)
-{
-    pollObject *self;
-    self = PyObject_New(pollObject, &poll_Type);
-    if (self == NULL)
-        return NULL;
-    /* ufd_uptodate is a Boolean, denoting whether the
-       array pointed to by ufds matches the contents of the dictionary. */
-    self->ufd_uptodate = 0;
-    self->ufds = NULL;
-    self->dict = PyDict_New();
-    if (self->dict == NULL) {
-        Py_DECREF(self);
-        return NULL;
-    }
-    return self;
-}
-
-static void
-poll_dealloc(pollObject *self)
-{
-    if (self->ufds != NULL)
-        PyMem_DEL(self->ufds);
-    Py_XDECREF(self->dict);
-    PyObject_Del(self);
-}
-
-static PyObject *
-poll_getattr(pollObject *self, char *name)
-{
-    return Py_FindMethod(poll_methods, (PyObject *)self, name);
-}
-
-static PyTypeObject poll_Type = {
-    /* The ob_type field must be initialized in the module init function
-     * to be portable to Windows without using C++. */
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "select.poll",              /*tp_name*/
-    sizeof(pollObject),         /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    /* methods */
-    (destructor)poll_dealloc, /*tp_dealloc*/
-    0,                          /*tp_print*/
-    (getattrfunc)poll_getattr, /*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*/
-};
-
-PyDoc_STRVAR(poll_doc,
-"Returns a polling object, which supports registering and\n\
-unregistering file descriptors, and then polling them for I/O events.");
-
-static PyObject *
-select_poll(PyObject *self, PyObject *unused)
-{
-    return (PyObject *)newPollObject();
-}
-
-#ifdef __APPLE__
-/*
- * On some systems poll() sets errno on invalid file descriptors. We test
- * for this at runtime because this bug may be fixed or introduced between
- * OS releases.
- */
-static int select_have_broken_poll(void)
-{
-    int poll_test;
-    int filedes[2];
-
-    struct pollfd poll_struct = { 0, POLLIN|POLLPRI|POLLOUT, 0 };
-
-    /* Create a file descriptor to make invalid */
-    if (pipe(filedes) < 0) {
-        return 1;
-    }
-    poll_struct.fd = filedes[0];
-    close(filedes[0]);
-    close(filedes[1]);
-    poll_test = poll(&poll_struct, 1, 0);
-    if (poll_test < 0) {
-        return 1;
-    } else if (poll_test == 0 && poll_struct.revents != POLLNVAL) {
-        return 1;
-    }
-    return 0;
-}
-#endif /* __APPLE__ */
-
-#endif /* HAVE_POLL */
-
-#ifdef HAVE_EPOLL
-/* **************************************************************************
- *                      epoll interface for Linux 2.6
- *
- * Written by Christian Heimes
- * Inspired by Twisted's _epoll.pyx and select.poll()
- */
-
-#ifdef HAVE_SYS_EPOLL_H
-#include <sys/epoll.h>
-#endif
-
-typedef struct {
-    PyObject_HEAD
-    SOCKET epfd;                        /* epoll control file descriptor */
-} pyEpoll_Object;
-
-static PyTypeObject pyEpoll_Type;
-#define pyepoll_CHECK(op) (PyObject_TypeCheck((op), &pyEpoll_Type))
-
-static PyObject *
-pyepoll_err_closed(void)
-{
-    PyErr_SetString(PyExc_ValueError, "I/O operation on closed epoll fd");
-    return NULL;
-}
-
-static int
-pyepoll_internal_close(pyEpoll_Object *self)
-{
-    int save_errno = 0;
-    if (self->epfd >= 0) {
-        int epfd = self->epfd;
-        self->epfd = -1;
-        Py_BEGIN_ALLOW_THREADS
-        if (close(epfd) < 0)
-            save_errno = errno;
-        Py_END_ALLOW_THREADS
-    }
-    return save_errno;
-}
-
-static PyObject *
-newPyEpoll_Object(PyTypeObject *type, int sizehint, SOCKET fd)
-{
-    pyEpoll_Object *self;
-
-    if (sizehint == -1) {
-        sizehint = FD_SETSIZE-1;
-    }
-    else if (sizehint < 1) {
-        PyErr_Format(PyExc_ValueError,
-                     "sizehint must be greater zero, got %d",
-                     sizehint);
-        return NULL;
-    }
-
-    assert(type != NULL && type->tp_alloc != NULL);
-    self = (pyEpoll_Object *) type->tp_alloc(type, 0);
-    if (self == NULL)
-        return NULL;
-
-    if (fd == -1) {
-        Py_BEGIN_ALLOW_THREADS
-        self->epfd = epoll_create(sizehint);
-        Py_END_ALLOW_THREADS
-    }
-    else {
-        self->epfd = fd;
-    }
-    if (self->epfd < 0) {
-        Py_DECREF(self);
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    return (PyObject *)self;
-}
-
-
-static PyObject *
-pyepoll_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    int sizehint = -1;
-    static char *kwlist[] = {"sizehint", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|i:epoll", kwlist,
-                                     &sizehint))
-        return NULL;
-
-    return newPyEpoll_Object(type, sizehint, -1);
-}
-
-
-static void
-pyepoll_dealloc(pyEpoll_Object *self)
-{
-    (void)pyepoll_internal_close(self);
-    Py_TYPE(self)->tp_free(self);
-}
-
-static PyObject*
-pyepoll_close(pyEpoll_Object *self)
-{
-    errno = pyepoll_internal_close(self);
-    if (errno < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(pyepoll_close_doc,
-"close() -> None\n\
-\n\
-Close the epoll control file descriptor. Further operations on the epoll\n\
-object will raise an exception.");
-
-static PyObject*
-pyepoll_get_closed(pyEpoll_Object *self)
-{
-    if (self->epfd < 0)
-        Py_RETURN_TRUE;
-    else
-        Py_RETURN_FALSE;
-}
-
-static PyObject*
-pyepoll_fileno(pyEpoll_Object *self)
-{
-    if (self->epfd < 0)
-        return pyepoll_err_closed();
-    return PyInt_FromLong(self->epfd);
-}
-
-PyDoc_STRVAR(pyepoll_fileno_doc,
-"fileno() -> int\n\
-\n\
-Return the epoll control file descriptor.");
-
-static PyObject*
-pyepoll_fromfd(PyObject *cls, PyObject *args)
-{
-    SOCKET fd;
-
-    if (!PyArg_ParseTuple(args, "i:fromfd", &fd))
-        return NULL;
-
-    return newPyEpoll_Object((PyTypeObject*)cls, -1, fd);
-}
-
-PyDoc_STRVAR(pyepoll_fromfd_doc,
-"fromfd(fd) -> epoll\n\
-\n\
-Create an epoll object from a given control fd.");
-
-static PyObject *
-pyepoll_internal_ctl(int epfd, int op, PyObject *pfd, unsigned int events)
-{
-    struct epoll_event ev;
-    int result;
-    int fd;
-
-    if (epfd < 0)
-        return pyepoll_err_closed();
-
-    fd = PyObject_AsFileDescriptor(pfd);
-    if (fd == -1) {
-        return NULL;
-    }
-
-    switch(op) {
-        case EPOLL_CTL_ADD:
-        case EPOLL_CTL_MOD:
-        ev.events = events;
-        ev.data.fd = fd;
-        Py_BEGIN_ALLOW_THREADS
-        result = epoll_ctl(epfd, op, fd, &ev);
-        Py_END_ALLOW_THREADS
-        break;
-        case EPOLL_CTL_DEL:
-        /* In kernel versions before 2.6.9, the EPOLL_CTL_DEL
-         * operation required a non-NULL pointer in event, even
-         * though this argument is ignored. */
-        Py_BEGIN_ALLOW_THREADS
-        result = epoll_ctl(epfd, op, fd, &ev);
-        if (errno == EBADF) {
-            /* fd already closed */
-            result = 0;
-            errno = 0;
-        }
-        Py_END_ALLOW_THREADS
-        break;
-        default:
-        result = -1;
-        errno = EINVAL;
-    }
-
-    if (result < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    Py_RETURN_NONE;
-}
-
-static PyObject *
-pyepoll_register(pyEpoll_Object *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *pfd;
-    unsigned int events = EPOLLIN | EPOLLOUT | EPOLLPRI;
-    static char *kwlist[] = {"fd", "eventmask", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|I:register", kwlist,
-                                     &pfd, &events)) {
-        return NULL;
-    }
-
-    return pyepoll_internal_ctl(self->epfd, EPOLL_CTL_ADD, pfd, events);
-}
-
-PyDoc_STRVAR(pyepoll_register_doc,
-"register(fd[, eventmask]) -> None\n\
-\n\
-Registers a new fd or modifies an already registered fd.\n\
-fd is the target file descriptor of the operation.\n\
-events is a bit set composed of the various EPOLL constants; the default\n\
-is EPOLL_IN | EPOLL_OUT | EPOLL_PRI.\n\
-\n\
-The epoll interface supports all file descriptors that support poll.");
-
-static PyObject *
-pyepoll_modify(pyEpoll_Object *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *pfd;
-    unsigned int events;
-    static char *kwlist[] = {"fd", "eventmask", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "OI:modify", kwlist,
-                                     &pfd, &events)) {
-        return NULL;
-    }
-
-    return pyepoll_internal_ctl(self->epfd, EPOLL_CTL_MOD, pfd, events);
-}
-
-PyDoc_STRVAR(pyepoll_modify_doc,
-"modify(fd, eventmask) -> None\n\
-\n\
-fd is the target file descriptor of the operation\n\
-events is a bit set composed of the various EPOLL constants");
-
-static PyObject *
-pyepoll_unregister(pyEpoll_Object *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *pfd;
-    static char *kwlist[] = {"fd", NULL};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O:unregister", kwlist,
-                                     &pfd)) {
-        return NULL;
-    }
-
-    return pyepoll_internal_ctl(self->epfd, EPOLL_CTL_DEL, pfd, 0);
-}
-
-PyDoc_STRVAR(pyepoll_unregister_doc,
-"unregister(fd) -> None\n\
-\n\
-fd is the target file descriptor of the operation.");
-
-static PyObject *
-pyepoll_poll(pyEpoll_Object *self, PyObject *args, PyObject *kwds)
-{
-    double dtimeout = -1.;
-    int timeout;
-    int maxevents = -1;
-    int nfds, i;
-    PyObject *elist = NULL, *etuple = NULL;
-    struct epoll_event *evs = NULL;
-    static char *kwlist[] = {"timeout", "maxevents", NULL};
-
-    if (self->epfd < 0)
-        return pyepoll_err_closed();
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|di:poll", kwlist,
-                                     &dtimeout, &maxevents)) {
-        return NULL;
-    }
-
-    if (dtimeout < 0) {
-        timeout = -1;
-    }
-    else if (dtimeout * 1000.0 > INT_MAX) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "timeout is too large");
-        return NULL;
-    }
-    else {
-        timeout = (int)(dtimeout * 1000.0);
-    }
-
-    if (maxevents == -1) {
-        maxevents = FD_SETSIZE-1;
-    }
-    else if (maxevents < 1) {
-        PyErr_Format(PyExc_ValueError,
-                     "maxevents must be greater than 0, got %d",
-                     maxevents);
-        return NULL;
-    }
-
-    evs = PyMem_New(struct epoll_event, maxevents);
-    if (evs == NULL) {
-        Py_DECREF(self);
-        PyErr_NoMemory();
-        return NULL;
-    }
-
-    Py_BEGIN_ALLOW_THREADS
-    nfds = epoll_wait(self->epfd, evs, maxevents, timeout);
-    Py_END_ALLOW_THREADS
-    if (nfds < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        goto error;
-    }
-
-    elist = PyList_New(nfds);
-    if (elist == NULL) {
-        goto error;
-    }
-
-    for (i = 0; i < nfds; i++) {
-        etuple = Py_BuildValue("iI", evs[i].data.fd, evs[i].events);
-        if (etuple == NULL) {
-            Py_CLEAR(elist);
-            goto error;
-        }
-        PyList_SET_ITEM(elist, i, etuple);
-    }
-
-    error:
-    PyMem_Free(evs);
-    return elist;
-}
-
-PyDoc_STRVAR(pyepoll_poll_doc,
-"poll([timeout=-1[, maxevents=-1]]) -> [(fd, events), (...)]\n\
-\n\
-Wait for events on the epoll file descriptor for a maximum time of timeout\n\
-in seconds (as float). -1 makes poll wait indefinitely.\n\
-Up to maxevents are returned to the caller.");
-
-static PyMethodDef pyepoll_methods[] = {
-    {"fromfd",          (PyCFunction)pyepoll_fromfd,
-     METH_VARARGS | METH_CLASS, pyepoll_fromfd_doc},
-    {"close",           (PyCFunction)pyepoll_close,     METH_NOARGS,
-     pyepoll_close_doc},
-    {"fileno",          (PyCFunction)pyepoll_fileno,    METH_NOARGS,
-     pyepoll_fileno_doc},
-    {"modify",          (PyCFunction)pyepoll_modify,
-     METH_VARARGS | METH_KEYWORDS,      pyepoll_modify_doc},
-    {"register",        (PyCFunction)pyepoll_register,
-     METH_VARARGS | METH_KEYWORDS,      pyepoll_register_doc},
-    {"unregister",      (PyCFunction)pyepoll_unregister,
-     METH_VARARGS | METH_KEYWORDS,      pyepoll_unregister_doc},
-    {"poll",            (PyCFunction)pyepoll_poll,
-     METH_VARARGS | METH_KEYWORDS,      pyepoll_poll_doc},
-    {NULL,      NULL},
-};
-
-static PyGetSetDef pyepoll_getsetlist[] = {
-    {"closed", (getter)pyepoll_get_closed, NULL,
-     "True if the epoll handler is closed"},
-    {0},
-};
-
-PyDoc_STRVAR(pyepoll_doc,
-"select.epoll([sizehint=-1])\n\
-\n\
-Returns an epolling object\n\
-\n\
-sizehint must be a positive integer or -1 for the default size. The\n\
-sizehint is used to optimize internal data structures. It doesn't limit\n\
-the maximum number of monitored events.");
-
-static PyTypeObject pyEpoll_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "select.epoll",                                     /* tp_name */
-    sizeof(pyEpoll_Object),                             /* tp_basicsize */
-    0,                                                  /* tp_itemsize */
-    (destructor)pyepoll_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 */
-    PyObject_GenericGetAttr,                            /* tp_getattro */
-    0,                                                  /* tp_setattro */
-    0,                                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                                 /* tp_flags */
-    pyepoll_doc,                                        /* tp_doc */
-    0,                                                  /* tp_traverse */
-    0,                                                  /* tp_clear */
-    0,                                                  /* tp_richcompare */
-    0,                                                  /* tp_weaklistoffset */
-    0,                                                  /* tp_iter */
-    0,                                                  /* tp_iternext */
-    pyepoll_methods,                                    /* tp_methods */
-    0,                                                  /* tp_members */
-    pyepoll_getsetlist,                                 /* tp_getset */
-    0,                                                  /* tp_base */
-    0,                                                  /* tp_dict */
-    0,                                                  /* tp_descr_get */
-    0,                                                  /* tp_descr_set */
-    0,                                                  /* tp_dictoffset */
-    0,                                                  /* tp_init */
-    0,                                                  /* tp_alloc */
-    pyepoll_new,                                        /* tp_new */
-    0,                                                  /* tp_free */
-};
-
-#endif /* HAVE_EPOLL */
-
-#ifdef HAVE_KQUEUE
-/* **************************************************************************
- *                      kqueue interface for BSD
- *
- * Copyright (c) 2000 Doug White, 2006 James Knight, 2007 Christian Heimes
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifdef HAVE_SYS_EVENT_H
-#include <sys/event.h>
-#endif
-
-PyDoc_STRVAR(kqueue_event_doc,
-"kevent(ident, filter=KQ_FILTER_READ, flags=KQ_EV_ADD, fflags=0, data=0, udata=0)\n\
-\n\
-This object is the equivalent of the struct kevent for the C API.\n\
-\n\
-See the kqueue manpage for more detailed information about the meaning\n\
-of the arguments.\n\
-\n\
-One minor note: while you might hope that udata could store a\n\
-reference to a python object, it cannot, because it is impossible to\n\
-keep a proper reference count of the object once it's passed into the\n\
-kernel. Therefore, I have restricted it to only storing an integer.  I\n\
-recommend ignoring it and simply using the 'ident' field to key off\n\
-of. You could also set up a dictionary on the python side to store a\n\
-udata->object mapping.");
-
-typedef struct {
-    PyObject_HEAD
-    struct kevent e;
-} kqueue_event_Object;
-
-static PyTypeObject kqueue_event_Type;
-
-#define kqueue_event_Check(op) (PyObject_TypeCheck((op), &kqueue_event_Type))
-
-typedef struct {
-    PyObject_HEAD
-    SOCKET kqfd;                /* kqueue control fd */
-} kqueue_queue_Object;
-
-static PyTypeObject kqueue_queue_Type;
-
-#define kqueue_queue_Check(op) (PyObject_TypeCheck((op), &kqueue_queue_Type))
-
-#if (SIZEOF_UINTPTR_T != SIZEOF_VOID_P)
-#   error uintptr_t does not match void *!
-#elif (SIZEOF_UINTPTR_T == SIZEOF_LONG_LONG)
-#   define T_UINTPTRT         T_ULONGLONG
-#   define T_INTPTRT          T_LONGLONG
-#   define PyLong_AsUintptr_t PyLong_AsUnsignedLongLong
-#   define UINTPTRT_FMT_UNIT  "K"
-#   define INTPTRT_FMT_UNIT   "L"
-#elif (SIZEOF_UINTPTR_T == SIZEOF_LONG)
-#   define T_UINTPTRT         T_ULONG
-#   define T_INTPTRT          T_LONG
-#   define PyLong_AsUintptr_t PyLong_AsUnsignedLong
-#   define UINTPTRT_FMT_UNIT  "k"
-#   define INTPTRT_FMT_UNIT   "l"
-#elif (SIZEOF_UINTPTR_T == SIZEOF_INT)
-#   define T_UINTPTRT         T_UINT
-#   define T_INTPTRT          T_INT
-#   define PyLong_AsUintptr_t PyLong_AsUnsignedLong
-#   define UINTPTRT_FMT_UNIT  "I"
-#   define INTPTRT_FMT_UNIT   "i"
-#else
-#   error uintptr_t does not match int, long, or long long!
-#endif
-
-/* Unfortunately, we can't store python objects in udata, because
- * kevents in the kernel can be removed without warning, which would
- * forever lose the refcount on the object stored with it.
- */
-
-#define KQ_OFF(x) offsetof(kqueue_event_Object, x)
-static struct PyMemberDef kqueue_event_members[] = {
-    {"ident",           T_UINTPTRT,     KQ_OFF(e.ident)},
-    {"filter",          T_SHORT,        KQ_OFF(e.filter)},
-    {"flags",           T_USHORT,       KQ_OFF(e.flags)},
-    {"fflags",          T_UINT,         KQ_OFF(e.fflags)},
-    {"data",            T_INTPTRT,      KQ_OFF(e.data)},
-    {"udata",           T_UINTPTRT,     KQ_OFF(e.udata)},
-    {NULL} /* Sentinel */
-};
-#undef KQ_OFF
-
-static PyObject *
-
-kqueue_event_repr(kqueue_event_Object *s)
-{
-    char buf[1024];
-    PyOS_snprintf(
-        buf, sizeof(buf),
-        "<select.kevent ident=%zu filter=%d flags=0x%x fflags=0x%x "
-        "data=0x%zd udata=%p>",
-        (size_t)(s->e.ident), s->e.filter, s->e.flags,
-        s->e.fflags, (Py_ssize_t)(s->e.data), s->e.udata);
-    return PyString_FromString(buf);
-}
-
-static int
-kqueue_event_init(kqueue_event_Object *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *pfd;
-    static char *kwlist[] = {"ident", "filter", "flags", "fflags",
-                             "data", "udata", NULL};
-    static char *fmt = "O|hhi" INTPTRT_FMT_UNIT UINTPTRT_FMT_UNIT ":kevent";
-
-    EV_SET(&(self->e), 0, EVFILT_READ, EV_ADD, 0, 0, 0); /* defaults */
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, fmt, kwlist,
-        &pfd, &(self->e.filter), &(self->e.flags),
-        &(self->e.fflags), &(self->e.data), &(self->e.udata))) {
-        return -1;
-    }
-
-    if (PyLong_Check(pfd)) {
-        self->e.ident = PyLong_AsUintptr_t(pfd);
-    }
-    else {
-        self->e.ident = PyObject_AsFileDescriptor(pfd);
-    }
-    if (PyErr_Occurred()) {
-        return -1;
-    }
-    return 0;
-}
-
-static PyObject *
-kqueue_event_richcompare(kqueue_event_Object *s, kqueue_event_Object *o,
-                         int op)
-{
-    Py_intptr_t result = 0;
-
-    if (!kqueue_event_Check(o)) {
-        if (op == Py_EQ || op == Py_NE) {
-            PyObject *res = op == Py_EQ ? Py_False : Py_True;
-            Py_INCREF(res);
-            return res;
-        }
-        PyErr_Format(PyExc_TypeError,
-            "can't compare %.200s to %.200s",
-            Py_TYPE(s)->tp_name, Py_TYPE(o)->tp_name);
-        return NULL;
-    }
-    if (((result = s->e.ident - o->e.ident) == 0) &&
-        ((result = s->e.filter - o->e.filter) == 0) &&
-        ((result = s->e.flags - o->e.flags) == 0) &&
-        ((result = s->e.fflags - o->e.fflags) == 0) &&
-        ((result = s->e.data - o->e.data) == 0) &&
-        ((result = s->e.udata - o->e.udata) == 0)
-       ) {
-        result = 0;
-    }
-
-    switch (op) {
-        case Py_EQ:
-        result = (result == 0);
-        break;
-        case Py_NE:
-        result = (result != 0);
-        break;
-        case Py_LE:
-        result = (result <= 0);
-        break;
-        case Py_GE:
-        result = (result >= 0);
-        break;
-        case Py_LT:
-        result = (result < 0);
-        break;
-        case Py_GT:
-        result = (result > 0);
-        break;
-    }
-    return PyBool_FromLong((long)result);
-}
-
-static PyTypeObject kqueue_event_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "select.kevent",                                    /* tp_name */
-    sizeof(kqueue_event_Object),                        /* tp_basicsize */
-    0,                                                  /* tp_itemsize */
-    0,                                                  /* tp_dealloc */
-    0,                                                  /* tp_print */
-    0,                                                  /* tp_getattr */
-    0,                                                  /* tp_setattr */
-    0,                                                  /* tp_compare */
-    (reprfunc)kqueue_event_repr,                        /* 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 */
-    Py_TPFLAGS_DEFAULT,                                 /* tp_flags */
-    kqueue_event_doc,                                   /* tp_doc */
-    0,                                                  /* tp_traverse */
-    0,                                                  /* tp_clear */
-    (richcmpfunc)kqueue_event_richcompare,              /* tp_richcompare */
-    0,                                                  /* tp_weaklistoffset */
-    0,                                                  /* tp_iter */
-    0,                                                  /* tp_iternext */
-    0,                                                  /* tp_methods */
-    kqueue_event_members,                               /* tp_members */
-    0,                                                  /* tp_getset */
-    0,                                                  /* tp_base */
-    0,                                                  /* tp_dict */
-    0,                                                  /* tp_descr_get */
-    0,                                                  /* tp_descr_set */
-    0,                                                  /* tp_dictoffset */
-    (initproc)kqueue_event_init,                        /* tp_init */
-    0,                                                  /* tp_alloc */
-    0,                                                  /* tp_new */
-    0,                                                  /* tp_free */
-};
-
-static PyObject *
-kqueue_queue_err_closed(void)
-{
-    PyErr_SetString(PyExc_ValueError, "I/O operation on closed kqueue fd");
-    return NULL;
-}
-
-static int
-kqueue_queue_internal_close(kqueue_queue_Object *self)
-{
-    int save_errno = 0;
-    if (self->kqfd >= 0) {
-        int kqfd = self->kqfd;
-        self->kqfd = -1;
-        Py_BEGIN_ALLOW_THREADS
-        if (close(kqfd) < 0)
-            save_errno = errno;
-        Py_END_ALLOW_THREADS
-    }
-    return save_errno;
-}
-
-static PyObject *
-newKqueue_Object(PyTypeObject *type, SOCKET fd)
-{
-    kqueue_queue_Object *self;
-    assert(type != NULL && type->tp_alloc != NULL);
-    self = (kqueue_queue_Object *) type->tp_alloc(type, 0);
-    if (self == NULL) {
-        return NULL;
-    }
-
-    if (fd == -1) {
-        Py_BEGIN_ALLOW_THREADS
-        self->kqfd = kqueue();
-        Py_END_ALLOW_THREADS
-    }
-    else {
-        self->kqfd = fd;
-    }
-    if (self->kqfd < 0) {
-        Py_DECREF(self);
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    return (PyObject *)self;
-}
-
-static PyObject *
-kqueue_queue_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-
-    if ((args != NULL && PyObject_Size(args)) ||
-                    (kwds != NULL && PyObject_Size(kwds))) {
-        PyErr_SetString(PyExc_ValueError,
-                        "select.kqueue doesn't accept arguments");
-        return NULL;
-    }
-
-    return newKqueue_Object(type, -1);
-}
-
-static void
-kqueue_queue_dealloc(kqueue_queue_Object *self)
-{
-    kqueue_queue_internal_close(self);
-    Py_TYPE(self)->tp_free(self);
-}
-
-static PyObject*
-kqueue_queue_close(kqueue_queue_Object *self)
-{
-    errno = kqueue_queue_internal_close(self);
-    if (errno < 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(kqueue_queue_close_doc,
-"close() -> None\n\
-\n\
-Close the kqueue control file descriptor. Further operations on the kqueue\n\
-object will raise an exception.");
-
-static PyObject*
-kqueue_queue_get_closed(kqueue_queue_Object *self)
-{
-    if (self->kqfd < 0)
-        Py_RETURN_TRUE;
-    else
-        Py_RETURN_FALSE;
-}
-
-static PyObject*
-kqueue_queue_fileno(kqueue_queue_Object *self)
-{
-    if (self->kqfd < 0)
-        return kqueue_queue_err_closed();
-    return PyInt_FromLong(self->kqfd);
-}
-
-PyDoc_STRVAR(kqueue_queue_fileno_doc,
-"fileno() -> int\n\
-\n\
-Return the kqueue control file descriptor.");
-
-static PyObject*
-kqueue_queue_fromfd(PyObject *cls, PyObject *args)
-{
-    SOCKET fd;
-
-    if (!PyArg_ParseTuple(args, "i:fromfd", &fd))
-        return NULL;
-
-    return newKqueue_Object((PyTypeObject*)cls, fd);
-}
-
-PyDoc_STRVAR(kqueue_queue_fromfd_doc,
-"fromfd(fd) -> kqueue\n\
-\n\
-Create a kqueue object from a given control fd.");
-
-static PyObject *
-kqueue_queue_control(kqueue_queue_Object *self, PyObject *args)
-{
-    int nevents = 0;
-    int gotevents = 0;
-    int nchanges = 0;
-    int i = 0;
-    PyObject *otimeout = NULL;
-    PyObject *ch = NULL;
-    PyObject *it = NULL, *ei = NULL;
-    PyObject *result = NULL;
-    struct kevent *evl = NULL;
-    struct kevent *chl = NULL;
-    struct timespec timeoutspec;
-    struct timespec *ptimeoutspec;
-
-    if (self->kqfd < 0)
-        return kqueue_queue_err_closed();
-
-    if (!PyArg_ParseTuple(args, "Oi|O:control", &ch, &nevents, &otimeout))
-        return NULL;
-
-    if (nevents < 0) {
-        PyErr_Format(PyExc_ValueError,
-            "Length of eventlist must be 0 or positive, got %d",
-            nevents);
-        return NULL;
-    }
-
-    if (otimeout == Py_None || otimeout == NULL) {
-        ptimeoutspec = NULL;
-    }
-    else if (PyNumber_Check(otimeout)) {
-        double timeout;
-        long seconds;
-
-        timeout = PyFloat_AsDouble(otimeout);
-        if (timeout == -1 && PyErr_Occurred())
-            return NULL;
-        if (timeout > (double)LONG_MAX) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "timeout period too long");
-            return NULL;
-        }
-        if (timeout < 0) {
-            PyErr_SetString(PyExc_ValueError,
-                            "timeout must be positive or None");
-            return NULL;
-        }
-
-        seconds = (long)timeout;
-        timeout = timeout - (double)seconds;
-        timeoutspec.tv_sec = seconds;
-        timeoutspec.tv_nsec = (long)(timeout * 1E9);
-        ptimeoutspec = &timeoutspec;
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-            "timeout argument must be an number "
-            "or None, got %.200s",
-            Py_TYPE(otimeout)->tp_name);
-        return NULL;
-    }
-
-    if (ch != NULL && ch != Py_None) {
-        it = PyObject_GetIter(ch);
-        if (it == NULL) {
-            PyErr_SetString(PyExc_TypeError,
-                            "changelist is not iterable");
-            return NULL;
-        }
-        nchanges = PyObject_Size(ch);
-        if (nchanges < 0) {
-            goto error;
-        }
-
-        chl = PyMem_New(struct kevent, nchanges);
-        if (chl == NULL) {
-            PyErr_NoMemory();
-            goto error;
-        }
-        i = 0;
-        while ((ei = PyIter_Next(it)) != NULL) {
-            if (!kqueue_event_Check(ei)) {
-                Py_DECREF(ei);
-                PyErr_SetString(PyExc_TypeError,
-                    "changelist must be an iterable of "
-                    "select.kevent objects");
-                goto error;
-            } else {
-                chl[i++] = ((kqueue_event_Object *)ei)->e;
-            }
-            Py_DECREF(ei);
-        }
-    }
-    Py_CLEAR(it);
-
-    /* event list */
-    if (nevents) {
-        evl = PyMem_New(struct kevent, nevents);
-        if (evl == NULL) {
-            PyErr_NoMemory();
-            goto error;
-        }
-    }
-
-    Py_BEGIN_ALLOW_THREADS
-    gotevents = kevent(self->kqfd, chl, nchanges,
-                       evl, nevents, ptimeoutspec);
-    Py_END_ALLOW_THREADS
-
-    if (gotevents == -1) {
-        PyErr_SetFromErrno(PyExc_OSError);
-        goto error;
-    }
-
-    result = PyList_New(gotevents);
-    if (result == NULL) {
-        goto error;
-    }
-
-    for (i = 0; i < gotevents; i++) {
-        kqueue_event_Object *ch;
-
-        ch = PyObject_New(kqueue_event_Object, &kqueue_event_Type);
-        if (ch == NULL) {
-            goto error;
-        }
-        ch->e = evl[i];
-        PyList_SET_ITEM(result, i, (PyObject *)ch);
-    }
-    PyMem_Free(chl);
-    PyMem_Free(evl);
-    return result;
-
-    error:
-    PyMem_Free(chl);
-    PyMem_Free(evl);
-    Py_XDECREF(result);
-    Py_XDECREF(it);
-    return NULL;
-}
-
-PyDoc_STRVAR(kqueue_queue_control_doc,
-"control(changelist, max_events[, timeout=None]) -> eventlist\n\
-\n\
-Calls the kernel kevent function.\n\
-- changelist must be a list of kevent objects describing the changes\n\
-  to be made to the kernel's watch list or None.\n\
-- max_events lets you specify the maximum number of events that the\n\
-  kernel will return.\n\
-- timeout is the maximum time to wait in seconds, or else None,\n\
-  to wait forever. timeout accepts floats for smaller timeouts, too.");
-
-
-static PyMethodDef kqueue_queue_methods[] = {
-    {"fromfd",          (PyCFunction)kqueue_queue_fromfd,
-     METH_VARARGS | METH_CLASS, kqueue_queue_fromfd_doc},
-    {"close",           (PyCFunction)kqueue_queue_close,        METH_NOARGS,
-     kqueue_queue_close_doc},
-    {"fileno",          (PyCFunction)kqueue_queue_fileno,       METH_NOARGS,
-     kqueue_queue_fileno_doc},
-    {"control",         (PyCFunction)kqueue_queue_control,
-     METH_VARARGS ,     kqueue_queue_control_doc},
-    {NULL,      NULL},
-};
-
-static PyGetSetDef kqueue_queue_getsetlist[] = {
-    {"closed", (getter)kqueue_queue_get_closed, NULL,
-     "True if the kqueue handler is closed"},
-    {0},
-};
-
-PyDoc_STRVAR(kqueue_queue_doc,
-"Kqueue syscall wrapper.\n\
-\n\
-For example, to start watching a socket for input:\n\
->>> kq = kqueue()\n\
->>> sock = socket()\n\
->>> sock.connect((host, port))\n\
->>> kq.control([kevent(sock, KQ_FILTER_WRITE, KQ_EV_ADD)], 0)\n\
-\n\
-To wait one second for it to become writeable:\n\
->>> kq.control(None, 1, 1000)\n\
-\n\
-To stop listening:\n\
->>> kq.control([kevent(sock, KQ_FILTER_WRITE, KQ_EV_DELETE)], 0)");
-
-static PyTypeObject kqueue_queue_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "select.kqueue",                                    /* tp_name */
-    sizeof(kqueue_queue_Object),                        /* tp_basicsize */
-    0,                                                  /* tp_itemsize */
-    (destructor)kqueue_queue_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 */
-    Py_TPFLAGS_DEFAULT,                                 /* tp_flags */
-    kqueue_queue_doc,                                   /* tp_doc */
-    0,                                                  /* tp_traverse */
-    0,                                                  /* tp_clear */
-    0,                                                  /* tp_richcompare */
-    0,                                                  /* tp_weaklistoffset */
-    0,                                                  /* tp_iter */
-    0,                                                  /* tp_iternext */
-    kqueue_queue_methods,                               /* tp_methods */
-    0,                                                  /* tp_members */
-    kqueue_queue_getsetlist,                            /* tp_getset */
-    0,                                                  /* tp_base */
-    0,                                                  /* tp_dict */
-    0,                                                  /* tp_descr_get */
-    0,                                                  /* tp_descr_set */
-    0,                                                  /* tp_dictoffset */
-    0,                                                  /* tp_init */
-    0,                                                  /* tp_alloc */
-    kqueue_queue_new,                                   /* tp_new */
-    0,                                                  /* tp_free */
-};
-
-#endif /* HAVE_KQUEUE */
-/* ************************************************************************ */
-
-PyDoc_STRVAR(select_doc,
-"select(rlist, wlist, xlist[, timeout]) -> (rlist, wlist, xlist)\n\
-\n\
-Wait until one or more file descriptors are ready for some kind of I/O.\n\
-The first three arguments are sequences of file descriptors to be waited for:\n\
-rlist -- wait until ready for reading\n\
-wlist -- wait until ready for writing\n\
-xlist -- wait for an ``exceptional condition''\n\
-If only one kind of condition is required, pass [] for the other lists.\n\
-A file descriptor is either a socket or file object, or a small integer\n\
-gotten from a fileno() method call on one of those.\n\
-\n\
-The optional 4th argument specifies a timeout in seconds; it may be\n\
-a floating point number to specify fractions of seconds.  If it is absent\n\
-or None, the call will never time out.\n\
-\n\
-The return value is a tuple of three lists corresponding to the first three\n\
-arguments; each contains the subset of the corresponding file descriptors\n\
-that are ready.\n\
-\n\
-*** IMPORTANT NOTICE ***\n\
-On Windows and OpenVMS, only sockets are supported; on Unix, all file\n\
-descriptors can be used.");
-
-static PyMethodDef select_methods[] = {
-    {"select",          select_select,  METH_VARARGS,   select_doc},
-#ifdef HAVE_POLL
-    {"poll",            select_poll,    METH_NOARGS,    poll_doc},
-#endif /* HAVE_POLL */
-    {0,         0},     /* sentinel */
-};
-
-PyDoc_STRVAR(module_doc,
-"This module supports asynchronous I/O on multiple file descriptors.\n\
-\n\
-*** IMPORTANT NOTICE ***\n\
-On Windows and OpenVMS, only sockets are supported; on Unix, all file descriptors.");
-
-PyMODINIT_FUNC
-initselect(void)
-{
-    PyObject *m;
-    m = Py_InitModule3("select", select_methods, module_doc);
-    if (m == NULL)
-        return;
-
-    SelectError = PyErr_NewException("select.error", NULL, NULL);
-    Py_INCREF(SelectError);
-    PyModule_AddObject(m, "error", SelectError);
-
-#ifdef PIPE_BUF
-#ifdef HAVE_BROKEN_PIPE_BUF
-#undef PIPE_BUF
-#define PIPE_BUF 512
-#endif
-    PyModule_AddIntConstant(m, "PIPE_BUF", PIPE_BUF);
-#endif
-
-#if defined(HAVE_POLL)
-#ifdef __APPLE__
-    if (select_have_broken_poll()) {
-        if (PyObject_DelAttrString(m, "poll") == -1) {
-            PyErr_Clear();
-        }
-    } else {
-#else
-    {
-#endif
-        Py_TYPE(&poll_Type) = &PyType_Type;
-        PyModule_AddIntConstant(m, "POLLIN", POLLIN);
-        PyModule_AddIntConstant(m, "POLLPRI", POLLPRI);
-        PyModule_AddIntConstant(m, "POLLOUT", POLLOUT);
-        PyModule_AddIntConstant(m, "POLLERR", POLLERR);
-        PyModule_AddIntConstant(m, "POLLHUP", POLLHUP);
-        PyModule_AddIntConstant(m, "POLLNVAL", POLLNVAL);
-
-#ifdef POLLRDNORM
-        PyModule_AddIntConstant(m, "POLLRDNORM", POLLRDNORM);
-#endif
-#ifdef POLLRDBAND
-        PyModule_AddIntConstant(m, "POLLRDBAND", POLLRDBAND);
-#endif
-#ifdef POLLWRNORM
-        PyModule_AddIntConstant(m, "POLLWRNORM", POLLWRNORM);
-#endif
-#ifdef POLLWRBAND
-        PyModule_AddIntConstant(m, "POLLWRBAND", POLLWRBAND);
-#endif
-#ifdef POLLMSG
-        PyModule_AddIntConstant(m, "POLLMSG", POLLMSG);
-#endif
-    }
-#endif /* HAVE_POLL */
-
-#ifdef HAVE_EPOLL
-    Py_TYPE(&pyEpoll_Type) = &PyType_Type;
-    if (PyType_Ready(&pyEpoll_Type) < 0)
-        return;
-
-    Py_INCREF(&pyEpoll_Type);
-    PyModule_AddObject(m, "epoll", (PyObject *) &pyEpoll_Type);
-
-    PyModule_AddIntConstant(m, "EPOLLIN", EPOLLIN);
-    PyModule_AddIntConstant(m, "EPOLLOUT", EPOLLOUT);
-    PyModule_AddIntConstant(m, "EPOLLPRI", EPOLLPRI);
-    PyModule_AddIntConstant(m, "EPOLLERR", EPOLLERR);
-    PyModule_AddIntConstant(m, "EPOLLHUP", EPOLLHUP);
-    PyModule_AddIntConstant(m, "EPOLLET", EPOLLET);
-#ifdef EPOLLONESHOT
-    /* Kernel 2.6.2+ */
-    PyModule_AddIntConstant(m, "EPOLLONESHOT", EPOLLONESHOT);
-#endif
-    /* PyModule_AddIntConstant(m, "EPOLL_RDHUP", EPOLLRDHUP); */
-    PyModule_AddIntConstant(m, "EPOLLRDNORM", EPOLLRDNORM);
-    PyModule_AddIntConstant(m, "EPOLLRDBAND", EPOLLRDBAND);
-    PyModule_AddIntConstant(m, "EPOLLWRNORM", EPOLLWRNORM);
-    PyModule_AddIntConstant(m, "EPOLLWRBAND", EPOLLWRBAND);
-    PyModule_AddIntConstant(m, "EPOLLMSG", EPOLLMSG);
-#endif /* HAVE_EPOLL */
-
-#ifdef HAVE_KQUEUE
-    kqueue_event_Type.tp_new = PyType_GenericNew;
-    Py_TYPE(&kqueue_event_Type) = &PyType_Type;
-    if(PyType_Ready(&kqueue_event_Type) < 0)
-        return;
-
-    Py_INCREF(&kqueue_event_Type);
-    PyModule_AddObject(m, "kevent", (PyObject *)&kqueue_event_Type);
-
-    Py_TYPE(&kqueue_queue_Type) = &PyType_Type;
-    if(PyType_Ready(&kqueue_queue_Type) < 0)
-        return;
-    Py_INCREF(&kqueue_queue_Type);
-    PyModule_AddObject(m, "kqueue", (PyObject *)&kqueue_queue_Type);
-
-    /* event filters */
-    PyModule_AddIntConstant(m, "KQ_FILTER_READ", EVFILT_READ);
-    PyModule_AddIntConstant(m, "KQ_FILTER_WRITE", EVFILT_WRITE);
-    PyModule_AddIntConstant(m, "KQ_FILTER_AIO", EVFILT_AIO);
-    PyModule_AddIntConstant(m, "KQ_FILTER_VNODE", EVFILT_VNODE);
-    PyModule_AddIntConstant(m, "KQ_FILTER_PROC", EVFILT_PROC);
-#ifdef EVFILT_NETDEV
-    PyModule_AddIntConstant(m, "KQ_FILTER_NETDEV", EVFILT_NETDEV);
-#endif
-    PyModule_AddIntConstant(m, "KQ_FILTER_SIGNAL", EVFILT_SIGNAL);
-    PyModule_AddIntConstant(m, "KQ_FILTER_TIMER", EVFILT_TIMER);
-
-    /* event flags */
-    PyModule_AddIntConstant(m, "KQ_EV_ADD", EV_ADD);
-    PyModule_AddIntConstant(m, "KQ_EV_DELETE", EV_DELETE);
-    PyModule_AddIntConstant(m, "KQ_EV_ENABLE", EV_ENABLE);
-    PyModule_AddIntConstant(m, "KQ_EV_DISABLE", EV_DISABLE);
-    PyModule_AddIntConstant(m, "KQ_EV_ONESHOT", EV_ONESHOT);
-    PyModule_AddIntConstant(m, "KQ_EV_CLEAR", EV_CLEAR);
-
-    PyModule_AddIntConstant(m, "KQ_EV_SYSFLAGS", EV_SYSFLAGS);
-    PyModule_AddIntConstant(m, "KQ_EV_FLAG1", EV_FLAG1);
-
-    PyModule_AddIntConstant(m, "KQ_EV_EOF", EV_EOF);
-    PyModule_AddIntConstant(m, "KQ_EV_ERROR", EV_ERROR);
-
-    /* READ WRITE filter flag */
-    PyModule_AddIntConstant(m, "KQ_NOTE_LOWAT", NOTE_LOWAT);
-
-    /* VNODE filter flags  */
-    PyModule_AddIntConstant(m, "KQ_NOTE_DELETE", NOTE_DELETE);
-    PyModule_AddIntConstant(m, "KQ_NOTE_WRITE", NOTE_WRITE);
-    PyModule_AddIntConstant(m, "KQ_NOTE_EXTEND", NOTE_EXTEND);
-    PyModule_AddIntConstant(m, "KQ_NOTE_ATTRIB", NOTE_ATTRIB);
-    PyModule_AddIntConstant(m, "KQ_NOTE_LINK", NOTE_LINK);
-    PyModule_AddIntConstant(m, "KQ_NOTE_RENAME", NOTE_RENAME);
-    PyModule_AddIntConstant(m, "KQ_NOTE_REVOKE", NOTE_REVOKE);
-
-    /* PROC filter flags  */
-    PyModule_AddIntConstant(m, "KQ_NOTE_EXIT", NOTE_EXIT);
-    PyModule_AddIntConstant(m, "KQ_NOTE_FORK", NOTE_FORK);
-    PyModule_AddIntConstant(m, "KQ_NOTE_EXEC", NOTE_EXEC);
-    PyModule_AddIntConstant(m, "KQ_NOTE_PCTRLMASK", NOTE_PCTRLMASK);
-    PyModule_AddIntConstant(m, "KQ_NOTE_PDATAMASK", NOTE_PDATAMASK);
-
-    PyModule_AddIntConstant(m, "KQ_NOTE_TRACK", NOTE_TRACK);
-    PyModule_AddIntConstant(m, "KQ_NOTE_CHILD", NOTE_CHILD);
-    PyModule_AddIntConstant(m, "KQ_NOTE_TRACKERR", NOTE_TRACKERR);
-
-    /* NETDEV filter flags */
-#ifdef EVFILT_NETDEV
-    PyModule_AddIntConstant(m, "KQ_NOTE_LINKUP", NOTE_LINKUP);
-    PyModule_AddIntConstant(m, "KQ_NOTE_LINKDOWN", NOTE_LINKDOWN);
-    PyModule_AddIntConstant(m, "KQ_NOTE_LINKINV", NOTE_LINKINV);
-#endif
-
-#endif /* HAVE_KQUEUE */
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/sha256module.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/sha256module.c
deleted file mode 100644
index 9fe72f9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/sha256module.c
+++ /dev/null
@@ -1,706 +0,0 @@
-/* SHA256 module */
-
-/* This module provides an interface to NIST's SHA-256 and SHA-224 Algorithms */
-
-/* See below for information about the original code this module was
-   based upon. Additional work performed by:
-
-   Andrew Kuchling (amk@amk.ca)
-   Greg Stein (gstein@lyra.org)
-   Trevor Perrin (trevp@trevp.net)
-
-   Copyright (C) 2005   Gregory P. Smith (greg@krypto.org)
-   Licensed to PSF under a Contributor Agreement.
-
-*/
-
-/* SHA objects */
-
-#include "Python.h"
-#include "structmember.h"
-
-
-/* Endianness testing and definitions */
-#define TestEndianness(variable) {int i=1; variable=PCT_BIG_ENDIAN;\
-        if (*((char*)&i)==1) variable=PCT_LITTLE_ENDIAN;}
-
-#define PCT_LITTLE_ENDIAN 1
-#define PCT_BIG_ENDIAN 0
-
-/* Some useful types */
-
-typedef unsigned char SHA_BYTE;
-
-#if SIZEOF_INT == 4
-typedef unsigned int SHA_INT32; /* 32-bit integer */
-#else
-/* not defined. compilation will die. */
-#endif
-
-/* The SHA block size and message digest sizes, in bytes */
-
-#define SHA_BLOCKSIZE    64
-#define SHA_DIGESTSIZE  32
-
-/* The structure for storing SHA info */
-
-typedef struct {
-    PyObject_HEAD
-    SHA_INT32 digest[8];                /* Message digest */
-    SHA_INT32 count_lo, count_hi;       /* 64-bit bit count */
-    SHA_BYTE data[SHA_BLOCKSIZE];       /* SHA data buffer */
-    int Endianness;
-    int local;                          /* unprocessed amount in data */
-    int digestsize;
-} SHAobject;
-
-/* When run on a little-endian CPU we need to perform byte reversal on an
-   array of longwords. */
-
-static void longReverse(SHA_INT32 *buffer, int byteCount, int Endianness)
-{
-    SHA_INT32 value;
-
-    if ( Endianness == PCT_BIG_ENDIAN )
-        return;
-
-    byteCount /= sizeof(*buffer);
-    while (byteCount--) {
-        value = *buffer;
-        value = ( ( value & 0xFF00FF00L ) >> 8  ) | \
-                ( ( value & 0x00FF00FFL ) << 8 );
-        *buffer++ = ( value << 16 ) | ( value >> 16 );
-    }
-}
-
-static void SHAcopy(SHAobject *src, SHAobject *dest)
-{
-    dest->Endianness = src->Endianness;
-    dest->local = src->local;
-    dest->digestsize = src->digestsize;
-    dest->count_lo = src->count_lo;
-    dest->count_hi = src->count_hi;
-    memcpy(dest->digest, src->digest, sizeof(src->digest));
-    memcpy(dest->data, src->data, sizeof(src->data));
-}
-
-
-/* ------------------------------------------------------------------------
- *
- * This code for the SHA-256 algorithm was noted as public domain. The
- * original headers are pasted below.
- *
- * Several changes have been made to make it more compatible with the
- * Python environment and desired interface.
- *
- */
-
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * gurantee it works.
- *
- * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org
- */
-
-
-/* SHA256 by Tom St Denis */
-
-/* Various logical functions */
-#define ROR(x, y)\
-( ((((unsigned long)(x)&0xFFFFFFFFUL)>>(unsigned long)((y)&31)) | \
-((unsigned long)(x)<<(unsigned long)(32-((y)&31)))) & 0xFFFFFFFFUL)
-#define Ch(x,y,z)       (z ^ (x & (y ^ z)))
-#define Maj(x,y,z)      (((x | y) & z) | (x & y))
-#define S(x, n)         ROR((x),(n))
-#define R(x, n)         (((x)&0xFFFFFFFFUL)>>(n))
-#define Sigma0(x)       (S(x, 2) ^ S(x, 13) ^ S(x, 22))
-#define Sigma1(x)       (S(x, 6) ^ S(x, 11) ^ S(x, 25))
-#define Gamma0(x)       (S(x, 7) ^ S(x, 18) ^ R(x, 3))
-#define Gamma1(x)       (S(x, 17) ^ S(x, 19) ^ R(x, 10))
-
-
-static void
-sha_transform(SHAobject *sha_info)
-{
-    int i;
-        SHA_INT32 S[8], W[64], t0, t1;
-
-    memcpy(W, sha_info->data, sizeof(sha_info->data));
-    longReverse(W, (int)sizeof(sha_info->data), sha_info->Endianness);
-
-    for (i = 16; i < 64; ++i) {
-                W[i] = Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + W[i - 16];
-    }
-    for (i = 0; i < 8; ++i) {
-        S[i] = sha_info->digest[i];
-    }
-
-    /* Compress */
-#define RND(a,b,c,d,e,f,g,h,i,ki)                    \
-     t0 = h + Sigma1(e) + Ch(e, f, g) + ki + W[i];   \
-     t1 = Sigma0(a) + Maj(a, b, c);                  \
-     d += t0;                                        \
-     h  = t0 + t1;
-
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],0,0x428a2f98);
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],1,0x71374491);
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],2,0xb5c0fbcf);
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],3,0xe9b5dba5);
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],4,0x3956c25b);
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],5,0x59f111f1);
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],6,0x923f82a4);
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],7,0xab1c5ed5);
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],8,0xd807aa98);
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],9,0x12835b01);
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],10,0x243185be);
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],11,0x550c7dc3);
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],12,0x72be5d74);
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],13,0x80deb1fe);
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],14,0x9bdc06a7);
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],15,0xc19bf174);
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],16,0xe49b69c1);
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],17,0xefbe4786);
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],18,0x0fc19dc6);
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],19,0x240ca1cc);
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],20,0x2de92c6f);
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],21,0x4a7484aa);
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],22,0x5cb0a9dc);
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],23,0x76f988da);
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],24,0x983e5152);
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],25,0xa831c66d);
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],26,0xb00327c8);
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],27,0xbf597fc7);
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],28,0xc6e00bf3);
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],29,0xd5a79147);
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],30,0x06ca6351);
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],31,0x14292967);
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],32,0x27b70a85);
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],33,0x2e1b2138);
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],34,0x4d2c6dfc);
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],35,0x53380d13);
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],36,0x650a7354);
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],37,0x766a0abb);
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],38,0x81c2c92e);
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],39,0x92722c85);
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],40,0xa2bfe8a1);
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],41,0xa81a664b);
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],42,0xc24b8b70);
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],43,0xc76c51a3);
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],44,0xd192e819);
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],45,0xd6990624);
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],46,0xf40e3585);
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],47,0x106aa070);
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],48,0x19a4c116);
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],49,0x1e376c08);
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],50,0x2748774c);
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],51,0x34b0bcb5);
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],52,0x391c0cb3);
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],53,0x4ed8aa4a);
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],54,0x5b9cca4f);
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],55,0x682e6ff3);
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],56,0x748f82ee);
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],57,0x78a5636f);
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],58,0x84c87814);
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],59,0x8cc70208);
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],60,0x90befffa);
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],61,0xa4506ceb);
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],62,0xbef9a3f7);
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],63,0xc67178f2);
-
-#undef RND
-
-    /* feedback */
-    for (i = 0; i < 8; i++) {
-        sha_info->digest[i] = sha_info->digest[i] + S[i];
-    }
-
-}
-
-
-
-/* initialize the SHA digest */
-
-static void
-sha_init(SHAobject *sha_info)
-{
-    TestEndianness(sha_info->Endianness)
-    sha_info->digest[0] = 0x6A09E667L;
-    sha_info->digest[1] = 0xBB67AE85L;
-    sha_info->digest[2] = 0x3C6EF372L;
-    sha_info->digest[3] = 0xA54FF53AL;
-    sha_info->digest[4] = 0x510E527FL;
-    sha_info->digest[5] = 0x9B05688CL;
-    sha_info->digest[6] = 0x1F83D9ABL;
-    sha_info->digest[7] = 0x5BE0CD19L;
-    sha_info->count_lo = 0L;
-    sha_info->count_hi = 0L;
-    sha_info->local = 0;
-    sha_info->digestsize = 32;
-}
-
-static void
-sha224_init(SHAobject *sha_info)
-{
-    TestEndianness(sha_info->Endianness)
-    sha_info->digest[0] = 0xc1059ed8L;
-    sha_info->digest[1] = 0x367cd507L;
-    sha_info->digest[2] = 0x3070dd17L;
-    sha_info->digest[3] = 0xf70e5939L;
-    sha_info->digest[4] = 0xffc00b31L;
-    sha_info->digest[5] = 0x68581511L;
-    sha_info->digest[6] = 0x64f98fa7L;
-    sha_info->digest[7] = 0xbefa4fa4L;
-    sha_info->count_lo = 0L;
-    sha_info->count_hi = 0L;
-    sha_info->local = 0;
-    sha_info->digestsize = 28;
-}
-
-
-/* update the SHA digest */
-
-static void
-sha_update(SHAobject *sha_info, SHA_BYTE *buffer, int count)
-{
-    int i;
-    SHA_INT32 clo;
-
-    clo = sha_info->count_lo + ((SHA_INT32) count << 3);
-    if (clo < sha_info->count_lo) {
-        ++sha_info->count_hi;
-    }
-    sha_info->count_lo = clo;
-    sha_info->count_hi += (SHA_INT32) count >> 29;
-    if (sha_info->local) {
-        i = SHA_BLOCKSIZE - sha_info->local;
-        if (i > count) {
-            i = count;
-        }
-        memcpy(((SHA_BYTE *) sha_info->data) + sha_info->local, buffer, i);
-        count -= i;
-        buffer += i;
-        sha_info->local += i;
-        if (sha_info->local == SHA_BLOCKSIZE) {
-            sha_transform(sha_info);
-        }
-        else {
-            return;
-        }
-    }
-    while (count >= SHA_BLOCKSIZE) {
-        memcpy(sha_info->data, buffer, SHA_BLOCKSIZE);
-        buffer += SHA_BLOCKSIZE;
-        count -= SHA_BLOCKSIZE;
-        sha_transform(sha_info);
-    }
-    memcpy(sha_info->data, buffer, count);
-    sha_info->local = count;
-}
-
-/* finish computing the SHA digest */
-
-static void
-sha_final(unsigned char digest[SHA_DIGESTSIZE], SHAobject *sha_info)
-{
-    int count;
-    SHA_INT32 lo_bit_count, hi_bit_count;
-
-    lo_bit_count = sha_info->count_lo;
-    hi_bit_count = sha_info->count_hi;
-    count = (int) ((lo_bit_count >> 3) & 0x3f);
-    ((SHA_BYTE *) sha_info->data)[count++] = 0x80;
-    if (count > SHA_BLOCKSIZE - 8) {
-        memset(((SHA_BYTE *) sha_info->data) + count, 0,
-               SHA_BLOCKSIZE - count);
-        sha_transform(sha_info);
-        memset((SHA_BYTE *) sha_info->data, 0, SHA_BLOCKSIZE - 8);
-    }
-    else {
-        memset(((SHA_BYTE *) sha_info->data) + count, 0,
-               SHA_BLOCKSIZE - 8 - count);
-    }
-
-    /* GJS: note that we add the hi/lo in big-endian. sha_transform will
-       swap these values into host-order. */
-    sha_info->data[56] = (hi_bit_count >> 24) & 0xff;
-    sha_info->data[57] = (hi_bit_count >> 16) & 0xff;
-    sha_info->data[58] = (hi_bit_count >>  8) & 0xff;
-    sha_info->data[59] = (hi_bit_count >>  0) & 0xff;
-    sha_info->data[60] = (lo_bit_count >> 24) & 0xff;
-    sha_info->data[61] = (lo_bit_count >> 16) & 0xff;
-    sha_info->data[62] = (lo_bit_count >>  8) & 0xff;
-    sha_info->data[63] = (lo_bit_count >>  0) & 0xff;
-    sha_transform(sha_info);
-    digest[ 0] = (unsigned char) ((sha_info->digest[0] >> 24) & 0xff);
-    digest[ 1] = (unsigned char) ((sha_info->digest[0] >> 16) & 0xff);
-    digest[ 2] = (unsigned char) ((sha_info->digest[0] >>  8) & 0xff);
-    digest[ 3] = (unsigned char) ((sha_info->digest[0]      ) & 0xff);
-    digest[ 4] = (unsigned char) ((sha_info->digest[1] >> 24) & 0xff);
-    digest[ 5] = (unsigned char) ((sha_info->digest[1] >> 16) & 0xff);
-    digest[ 6] = (unsigned char) ((sha_info->digest[1] >>  8) & 0xff);
-    digest[ 7] = (unsigned char) ((sha_info->digest[1]      ) & 0xff);
-    digest[ 8] = (unsigned char) ((sha_info->digest[2] >> 24) & 0xff);
-    digest[ 9] = (unsigned char) ((sha_info->digest[2] >> 16) & 0xff);
-    digest[10] = (unsigned char) ((sha_info->digest[2] >>  8) & 0xff);
-    digest[11] = (unsigned char) ((sha_info->digest[2]      ) & 0xff);
-    digest[12] = (unsigned char) ((sha_info->digest[3] >> 24) & 0xff);
-    digest[13] = (unsigned char) ((sha_info->digest[3] >> 16) & 0xff);
-    digest[14] = (unsigned char) ((sha_info->digest[3] >>  8) & 0xff);
-    digest[15] = (unsigned char) ((sha_info->digest[3]      ) & 0xff);
-    digest[16] = (unsigned char) ((sha_info->digest[4] >> 24) & 0xff);
-    digest[17] = (unsigned char) ((sha_info->digest[4] >> 16) & 0xff);
-    digest[18] = (unsigned char) ((sha_info->digest[4] >>  8) & 0xff);
-    digest[19] = (unsigned char) ((sha_info->digest[4]      ) & 0xff);
-    digest[20] = (unsigned char) ((sha_info->digest[5] >> 24) & 0xff);
-    digest[21] = (unsigned char) ((sha_info->digest[5] >> 16) & 0xff);
-    digest[22] = (unsigned char) ((sha_info->digest[5] >>  8) & 0xff);
-    digest[23] = (unsigned char) ((sha_info->digest[5]      ) & 0xff);
-    digest[24] = (unsigned char) ((sha_info->digest[6] >> 24) & 0xff);
-    digest[25] = (unsigned char) ((sha_info->digest[6] >> 16) & 0xff);
-    digest[26] = (unsigned char) ((sha_info->digest[6] >>  8) & 0xff);
-    digest[27] = (unsigned char) ((sha_info->digest[6]      ) & 0xff);
-    digest[28] = (unsigned char) ((sha_info->digest[7] >> 24) & 0xff);
-    digest[29] = (unsigned char) ((sha_info->digest[7] >> 16) & 0xff);
-    digest[30] = (unsigned char) ((sha_info->digest[7] >>  8) & 0xff);
-    digest[31] = (unsigned char) ((sha_info->digest[7]      ) & 0xff);
-}
-
-/*
- * End of copied SHA code.
- *
- * ------------------------------------------------------------------------
- */
-
-static PyTypeObject SHA224type;
-static PyTypeObject SHA256type;
-
-
-static SHAobject *
-newSHA224object(void)
-{
-    return (SHAobject *)PyObject_New(SHAobject, &SHA224type);
-}
-
-static SHAobject *
-newSHA256object(void)
-{
-    return (SHAobject *)PyObject_New(SHAobject, &SHA256type);
-}
-
-/* Internal methods for a hash object */
-
-static void
-SHA_dealloc(PyObject *ptr)
-{
-    PyObject_Del(ptr);
-}
-
-
-/* External methods for a hash object */
-
-PyDoc_STRVAR(SHA256_copy__doc__, "Return a copy of the hash object.");
-
-static PyObject *
-SHA256_copy(SHAobject *self, PyObject *unused)
-{
-    SHAobject *newobj;
-
-    if (Py_TYPE(self) == &SHA256type) {
-        if ( (newobj = newSHA256object())==NULL)
-            return NULL;
-    } else {
-        if ( (newobj = newSHA224object())==NULL)
-            return NULL;
-    }
-
-    SHAcopy(self, newobj);
-    return (PyObject *)newobj;
-}
-
-PyDoc_STRVAR(SHA256_digest__doc__,
-"Return the digest value as a string of binary data.");
-
-static PyObject *
-SHA256_digest(SHAobject *self, PyObject *unused)
-{
-    unsigned char digest[SHA_DIGESTSIZE];
-    SHAobject temp;
-
-    SHAcopy(self, &temp);
-    sha_final(digest, &temp);
-    return PyString_FromStringAndSize((const char *)digest, self->digestsize);
-}
-
-PyDoc_STRVAR(SHA256_hexdigest__doc__,
-"Return the digest value as a string of hexadecimal digits.");
-
-static PyObject *
-SHA256_hexdigest(SHAobject *self, PyObject *unused)
-{
-    unsigned char digest[SHA_DIGESTSIZE];
-    SHAobject temp;
-    PyObject *retval;
-    char *hex_digest;
-    int i, j;
-
-    /* Get the raw (binary) digest value */
-    SHAcopy(self, &temp);
-    sha_final(digest, &temp);
-
-    /* Create a new string */
-    retval = PyString_FromStringAndSize(NULL, self->digestsize * 2);
-    if (!retval)
-            return NULL;
-    hex_digest = PyString_AsString(retval);
-    if (!hex_digest) {
-            Py_DECREF(retval);
-            return NULL;
-    }
-
-    /* Make hex version of the digest */
-    for(i=j=0; i<self->digestsize; i++) {
-        char c;
-        c = (digest[i] >> 4) & 0xf;
-        c = (c>9) ? c+'a'-10 : c + '0';
-        hex_digest[j++] = c;
-        c = (digest[i] & 0xf);
-        c = (c>9) ? c+'a'-10 : c + '0';
-        hex_digest[j++] = c;
-    }
-    return retval;
-}
-
-PyDoc_STRVAR(SHA256_update__doc__,
-"Update this hash object's state with the provided string.");
-
-static PyObject *
-SHA256_update(SHAobject *self, PyObject *args)
-{
-    Py_buffer buf;
-
-    if (!PyArg_ParseTuple(args, "s*:update", &buf))
-        return NULL;
-
-    sha_update(self, buf.buf, buf.len);
-
-    PyBuffer_Release(&buf);
-    Py_RETURN_NONE;
-}
-
-static PyMethodDef SHA_methods[] = {
-    {"copy",      (PyCFunction)SHA256_copy,      METH_NOARGS,  SHA256_copy__doc__},
-    {"digest",    (PyCFunction)SHA256_digest,    METH_NOARGS,  SHA256_digest__doc__},
-    {"hexdigest", (PyCFunction)SHA256_hexdigest, METH_NOARGS,  SHA256_hexdigest__doc__},
-    {"update",    (PyCFunction)SHA256_update,    METH_VARARGS, SHA256_update__doc__},
-    {NULL,        NULL}         /* sentinel */
-};
-
-static PyObject *
-SHA256_get_block_size(PyObject *self, void *closure)
-{
-    return PyInt_FromLong(SHA_BLOCKSIZE);
-}
-
-static PyObject *
-SHA256_get_name(PyObject *self, void *closure)
-{
-    if (((SHAobject *)self)->digestsize == 32)
-        return PyString_FromStringAndSize("SHA256", 6);
-    else
-        return PyString_FromStringAndSize("SHA224", 6);
-}
-
-static PyGetSetDef SHA_getseters[] = {
-    {"block_size",
-     (getter)SHA256_get_block_size, NULL,
-     NULL,
-     NULL},
-    {"name",
-     (getter)SHA256_get_name, NULL,
-     NULL,
-     NULL},
-    {NULL}  /* Sentinel */
-};
-
-static PyMemberDef SHA_members[] = {
-    {"digest_size", T_INT, offsetof(SHAobject, digestsize), READONLY, NULL},
-    /* the old md5 and sha modules support 'digest_size' as in PEP 247.
-     * the old sha module also supported 'digestsize'.  ugh. */
-    {"digestsize", T_INT, offsetof(SHAobject, digestsize), READONLY, NULL},
-    {NULL}  /* Sentinel */
-};
-
-static PyTypeObject SHA224type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_sha256.sha224",   /*tp_name*/
-    sizeof(SHAobject),  /*tp_size*/
-    0,                  /*tp_itemsize*/
-    /* methods */
-    SHA_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*/
-    Py_TPFLAGS_DEFAULT, /*tp_flags*/
-    0,                  /*tp_doc*/
-    0,                  /*tp_traverse*/
-    0,                  /*tp_clear*/
-    0,                  /*tp_richcompare*/
-    0,                  /*tp_weaklistoffset*/
-    0,                  /*tp_iter*/
-    0,                  /*tp_iternext*/
-    SHA_methods,        /* tp_methods */
-    SHA_members,        /* tp_members */
-    SHA_getseters,      /* tp_getset */
-};
-
-static PyTypeObject SHA256type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_sha256.sha256",   /*tp_name*/
-    sizeof(SHAobject),  /*tp_size*/
-    0,                  /*tp_itemsize*/
-    /* methods */
-    SHA_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*/
-    Py_TPFLAGS_DEFAULT, /*tp_flags*/
-    0,                  /*tp_doc*/
-    0,                  /*tp_traverse*/
-    0,                  /*tp_clear*/
-    0,                  /*tp_richcompare*/
-    0,                  /*tp_weaklistoffset*/
-    0,                  /*tp_iter*/
-    0,                  /*tp_iternext*/
-    SHA_methods,        /* tp_methods */
-    SHA_members,        /* tp_members */
-    SHA_getseters,      /* tp_getset */
-};
-
-
-/* The single module-level function: new() */
-
-PyDoc_STRVAR(SHA256_new__doc__,
-"Return a new SHA-256 hash object; optionally initialized with a string.");
-
-static PyObject *
-SHA256_new(PyObject *self, PyObject *args, PyObject *kwdict)
-{
-    static char *kwlist[] = {"string", NULL};
-    SHAobject *new;
-    Py_buffer buf = { 0 };
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s*:new", kwlist,
-                                     &buf)) {
-        return NULL;
-    }
-
-    if ((new = newSHA256object()) == NULL) {
-        PyBuffer_Release(&buf);
-        return NULL;
-    }
-
-    sha_init(new);
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(new);
-        PyBuffer_Release(&buf);
-        return NULL;
-    }
-    if (buf.len > 0) {
-        sha_update(new, buf.buf, buf.len);
-    }
-    PyBuffer_Release(&buf);
-
-    return (PyObject *)new;
-}
-
-PyDoc_STRVAR(SHA224_new__doc__,
-"Return a new SHA-224 hash object; optionally initialized with a string.");
-
-static PyObject *
-SHA224_new(PyObject *self, PyObject *args, PyObject *kwdict)
-{
-    static char *kwlist[] = {"string", NULL};
-    SHAobject *new;
-    Py_buffer buf = { 0 };
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s*:new", kwlist,
-                                     &buf)) {
-        return NULL;
-    }
-
-    if ((new = newSHA224object()) == NULL) {
-        PyBuffer_Release(&buf);
-        return NULL;
-    }
-
-    sha224_init(new);
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(new);
-        PyBuffer_Release(&buf);
-        return NULL;
-    }
-    if (buf.len > 0) {
-        sha_update(new, buf.buf, buf.len);
-    }
-    PyBuffer_Release(&buf);
-
-    return (PyObject *)new;
-}
-
-
-/* List of functions exported by this module */
-
-static struct PyMethodDef SHA_functions[] = {
-    {"sha256", (PyCFunction)SHA256_new, METH_VARARGS|METH_KEYWORDS, SHA256_new__doc__},
-    {"sha224", (PyCFunction)SHA224_new, METH_VARARGS|METH_KEYWORDS, SHA224_new__doc__},
-    {NULL,      NULL}            /* Sentinel */
-};
-
-
-/* Initialize this module. */
-
-#define insint(n,v) { PyModule_AddIntConstant(m,n,v); }
-
-PyMODINIT_FUNC
-init_sha256(void)
-{
-    PyObject *m;
-
-    Py_TYPE(&SHA224type) = &PyType_Type;
-    if (PyType_Ready(&SHA224type) < 0)
-        return;
-    Py_TYPE(&SHA256type) = &PyType_Type;
-    if (PyType_Ready(&SHA256type) < 0)
-        return;
-    m = Py_InitModule("_sha256", SHA_functions);
-    if (m == NULL)
-        return;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/sha512module.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/sha512module.c
deleted file mode 100644
index 79537e6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/sha512module.c
+++ /dev/null
@@ -1,774 +0,0 @@
-/* SHA512 module */
-
-/* This module provides an interface to NIST's SHA-512 and SHA-384 Algorithms */
-
-/* See below for information about the original code this module was
-   based upon. Additional work performed by:
-
-   Andrew Kuchling (amk@amk.ca)
-   Greg Stein (gstein@lyra.org)
-   Trevor Perrin (trevp@trevp.net)
-
-   Copyright (C) 2005   Gregory P. Smith (greg@krypto.org)
-   Licensed to PSF under a Contributor Agreement.
-
-*/
-
-/* SHA objects */
-
-#include "Python.h"
-#include "structmember.h"
-
-#ifdef PY_LONG_LONG /* If no PY_LONG_LONG, don't compile anything! */
-
-/* Endianness testing and definitions */
-#define TestEndianness(variable) {int i=1; variable=PCT_BIG_ENDIAN;\
-        if (*((char*)&i)==1) variable=PCT_LITTLE_ENDIAN;}
-
-#define PCT_LITTLE_ENDIAN 1
-#define PCT_BIG_ENDIAN 0
-
-/* Some useful types */
-
-typedef unsigned char SHA_BYTE;
-
-#if SIZEOF_INT == 4
-typedef unsigned int SHA_INT32; /* 32-bit integer */
-typedef unsigned PY_LONG_LONG SHA_INT64;        /* 64-bit integer */
-#else
-/* not defined. compilation will die. */
-#endif
-
-/* The SHA block size and message digest sizes, in bytes */
-
-#define SHA_BLOCKSIZE   128
-#define SHA_DIGESTSIZE  64
-
-/* The structure for storing SHA info */
-
-typedef struct {
-    PyObject_HEAD
-    SHA_INT64 digest[8];                /* Message digest */
-    SHA_INT32 count_lo, count_hi;       /* 64-bit bit count */
-    SHA_BYTE data[SHA_BLOCKSIZE];       /* SHA data buffer */
-    int Endianness;
-    int local;                          /* unprocessed amount in data */
-    int digestsize;
-} SHAobject;
-
-/* When run on a little-endian CPU we need to perform byte reversal on an
-   array of longwords. */
-
-static void longReverse(SHA_INT64 *buffer, int byteCount, int Endianness)
-{
-    SHA_INT64 value;
-
-    if ( Endianness == PCT_BIG_ENDIAN )
-        return;
-
-    byteCount /= sizeof(*buffer);
-    while (byteCount--) {
-        value = *buffer;
-
-                ((unsigned char*)buffer)[0] = (unsigned char)(value >> 56) & 0xff;
-                ((unsigned char*)buffer)[1] = (unsigned char)(value >> 48) & 0xff;
-                ((unsigned char*)buffer)[2] = (unsigned char)(value >> 40) & 0xff;
-                ((unsigned char*)buffer)[3] = (unsigned char)(value >> 32) & 0xff;
-                ((unsigned char*)buffer)[4] = (unsigned char)(value >> 24) & 0xff;
-                ((unsigned char*)buffer)[5] = (unsigned char)(value >> 16) & 0xff;
-                ((unsigned char*)buffer)[6] = (unsigned char)(value >>  8) & 0xff;
-                ((unsigned char*)buffer)[7] = (unsigned char)(value      ) & 0xff;
-
-                buffer++;
-    }
-}
-
-static void SHAcopy(SHAobject *src, SHAobject *dest)
-{
-    dest->Endianness = src->Endianness;
-    dest->local = src->local;
-    dest->digestsize = src->digestsize;
-    dest->count_lo = src->count_lo;
-    dest->count_hi = src->count_hi;
-    memcpy(dest->digest, src->digest, sizeof(src->digest));
-    memcpy(dest->data, src->data, sizeof(src->data));
-}
-
-
-/* ------------------------------------------------------------------------
- *
- * This code for the SHA-512 algorithm was noted as public domain. The
- * original headers are pasted below.
- *
- * Several changes have been made to make it more compatible with the
- * Python environment and desired interface.
- *
- */
-
-/* LibTomCrypt, modular cryptographic library -- Tom St Denis
- *
- * LibTomCrypt is a library that provides various cryptographic
- * algorithms in a highly modular and flexible manner.
- *
- * The library is free for all purposes without any express
- * gurantee it works.
- *
- * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org
- */
-
-
-/* SHA512 by Tom St Denis */
-
-/* Various logical functions */
-#define ROR64(x, y) \
-    ( ((((x) & Py_ULL(0xFFFFFFFFFFFFFFFF))>>((unsigned PY_LONG_LONG)(y) & 63)) | \
-      ((x)<<((unsigned PY_LONG_LONG)(64-((y) & 63))))) & Py_ULL(0xFFFFFFFFFFFFFFFF))
-#define Ch(x,y,z)       (z ^ (x & (y ^ z)))
-#define Maj(x,y,z)      (((x | y) & z) | (x & y))
-#define S(x, n)         ROR64((x),(n))
-#define R(x, n)         (((x) & Py_ULL(0xFFFFFFFFFFFFFFFF)) >> ((unsigned PY_LONG_LONG)n))
-#define Sigma0(x)       (S(x, 28) ^ S(x, 34) ^ S(x, 39))
-#define Sigma1(x)       (S(x, 14) ^ S(x, 18) ^ S(x, 41))
-#define Gamma0(x)       (S(x, 1) ^ S(x, 8) ^ R(x, 7))
-#define Gamma1(x)       (S(x, 19) ^ S(x, 61) ^ R(x, 6))
-
-
-static void
-sha512_transform(SHAobject *sha_info)
-{
-    int i;
-    SHA_INT64 S[8], W[80], t0, t1;
-
-    memcpy(W, sha_info->data, sizeof(sha_info->data));
-    longReverse(W, (int)sizeof(sha_info->data), sha_info->Endianness);
-
-    for (i = 16; i < 80; ++i) {
-                W[i] = Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + W[i - 16];
-    }
-    for (i = 0; i < 8; ++i) {
-        S[i] = sha_info->digest[i];
-    }
-
-    /* Compress */
-#define RND(a,b,c,d,e,f,g,h,i,ki)                    \
-     t0 = h + Sigma1(e) + Ch(e, f, g) + ki + W[i];   \
-     t1 = Sigma0(a) + Maj(a, b, c);                  \
-     d += t0;                                        \
-     h  = t0 + t1;
-
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],0,Py_ULL(0x428a2f98d728ae22));
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],1,Py_ULL(0x7137449123ef65cd));
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],2,Py_ULL(0xb5c0fbcfec4d3b2f));
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],3,Py_ULL(0xe9b5dba58189dbbc));
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],4,Py_ULL(0x3956c25bf348b538));
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],5,Py_ULL(0x59f111f1b605d019));
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],6,Py_ULL(0x923f82a4af194f9b));
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],7,Py_ULL(0xab1c5ed5da6d8118));
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],8,Py_ULL(0xd807aa98a3030242));
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],9,Py_ULL(0x12835b0145706fbe));
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],10,Py_ULL(0x243185be4ee4b28c));
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],11,Py_ULL(0x550c7dc3d5ffb4e2));
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],12,Py_ULL(0x72be5d74f27b896f));
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],13,Py_ULL(0x80deb1fe3b1696b1));
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],14,Py_ULL(0x9bdc06a725c71235));
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],15,Py_ULL(0xc19bf174cf692694));
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],16,Py_ULL(0xe49b69c19ef14ad2));
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],17,Py_ULL(0xefbe4786384f25e3));
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],18,Py_ULL(0x0fc19dc68b8cd5b5));
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],19,Py_ULL(0x240ca1cc77ac9c65));
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],20,Py_ULL(0x2de92c6f592b0275));
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],21,Py_ULL(0x4a7484aa6ea6e483));
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],22,Py_ULL(0x5cb0a9dcbd41fbd4));
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],23,Py_ULL(0x76f988da831153b5));
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],24,Py_ULL(0x983e5152ee66dfab));
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],25,Py_ULL(0xa831c66d2db43210));
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],26,Py_ULL(0xb00327c898fb213f));
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],27,Py_ULL(0xbf597fc7beef0ee4));
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],28,Py_ULL(0xc6e00bf33da88fc2));
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],29,Py_ULL(0xd5a79147930aa725));
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],30,Py_ULL(0x06ca6351e003826f));
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],31,Py_ULL(0x142929670a0e6e70));
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],32,Py_ULL(0x27b70a8546d22ffc));
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],33,Py_ULL(0x2e1b21385c26c926));
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],34,Py_ULL(0x4d2c6dfc5ac42aed));
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],35,Py_ULL(0x53380d139d95b3df));
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],36,Py_ULL(0x650a73548baf63de));
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],37,Py_ULL(0x766a0abb3c77b2a8));
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],38,Py_ULL(0x81c2c92e47edaee6));
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],39,Py_ULL(0x92722c851482353b));
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],40,Py_ULL(0xa2bfe8a14cf10364));
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],41,Py_ULL(0xa81a664bbc423001));
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],42,Py_ULL(0xc24b8b70d0f89791));
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],43,Py_ULL(0xc76c51a30654be30));
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],44,Py_ULL(0xd192e819d6ef5218));
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],45,Py_ULL(0xd69906245565a910));
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],46,Py_ULL(0xf40e35855771202a));
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],47,Py_ULL(0x106aa07032bbd1b8));
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],48,Py_ULL(0x19a4c116b8d2d0c8));
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],49,Py_ULL(0x1e376c085141ab53));
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],50,Py_ULL(0x2748774cdf8eeb99));
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],51,Py_ULL(0x34b0bcb5e19b48a8));
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],52,Py_ULL(0x391c0cb3c5c95a63));
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],53,Py_ULL(0x4ed8aa4ae3418acb));
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],54,Py_ULL(0x5b9cca4f7763e373));
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],55,Py_ULL(0x682e6ff3d6b2b8a3));
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],56,Py_ULL(0x748f82ee5defb2fc));
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],57,Py_ULL(0x78a5636f43172f60));
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],58,Py_ULL(0x84c87814a1f0ab72));
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],59,Py_ULL(0x8cc702081a6439ec));
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],60,Py_ULL(0x90befffa23631e28));
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],61,Py_ULL(0xa4506cebde82bde9));
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],62,Py_ULL(0xbef9a3f7b2c67915));
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],63,Py_ULL(0xc67178f2e372532b));
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],64,Py_ULL(0xca273eceea26619c));
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],65,Py_ULL(0xd186b8c721c0c207));
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],66,Py_ULL(0xeada7dd6cde0eb1e));
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],67,Py_ULL(0xf57d4f7fee6ed178));
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],68,Py_ULL(0x06f067aa72176fba));
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],69,Py_ULL(0x0a637dc5a2c898a6));
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],70,Py_ULL(0x113f9804bef90dae));
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],71,Py_ULL(0x1b710b35131c471b));
-    RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],72,Py_ULL(0x28db77f523047d84));
-    RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],73,Py_ULL(0x32caab7b40c72493));
-    RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],74,Py_ULL(0x3c9ebe0a15c9bebc));
-    RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],75,Py_ULL(0x431d67c49c100d4c));
-    RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],76,Py_ULL(0x4cc5d4becb3e42b6));
-    RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],77,Py_ULL(0x597f299cfc657e2a));
-    RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],78,Py_ULL(0x5fcb6fab3ad6faec));
-    RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],79,Py_ULL(0x6c44198c4a475817));
-
-#undef RND
-
-    /* feedback */
-    for (i = 0; i < 8; i++) {
-        sha_info->digest[i] = sha_info->digest[i] + S[i];
-    }
-
-}
-
-
-
-/* initialize the SHA digest */
-
-static void
-sha512_init(SHAobject *sha_info)
-{
-    TestEndianness(sha_info->Endianness)
-    sha_info->digest[0] = Py_ULL(0x6a09e667f3bcc908);
-    sha_info->digest[1] = Py_ULL(0xbb67ae8584caa73b);
-    sha_info->digest[2] = Py_ULL(0x3c6ef372fe94f82b);
-    sha_info->digest[3] = Py_ULL(0xa54ff53a5f1d36f1);
-    sha_info->digest[4] = Py_ULL(0x510e527fade682d1);
-    sha_info->digest[5] = Py_ULL(0x9b05688c2b3e6c1f);
-    sha_info->digest[6] = Py_ULL(0x1f83d9abfb41bd6b);
-    sha_info->digest[7] = Py_ULL(0x5be0cd19137e2179);
-    sha_info->count_lo = 0L;
-    sha_info->count_hi = 0L;
-    sha_info->local = 0;
-    sha_info->digestsize = 64;
-}
-
-static void
-sha384_init(SHAobject *sha_info)
-{
-    TestEndianness(sha_info->Endianness)
-    sha_info->digest[0] = Py_ULL(0xcbbb9d5dc1059ed8);
-    sha_info->digest[1] = Py_ULL(0x629a292a367cd507);
-    sha_info->digest[2] = Py_ULL(0x9159015a3070dd17);
-    sha_info->digest[3] = Py_ULL(0x152fecd8f70e5939);
-    sha_info->digest[4] = Py_ULL(0x67332667ffc00b31);
-    sha_info->digest[5] = Py_ULL(0x8eb44a8768581511);
-    sha_info->digest[6] = Py_ULL(0xdb0c2e0d64f98fa7);
-    sha_info->digest[7] = Py_ULL(0x47b5481dbefa4fa4);
-    sha_info->count_lo = 0L;
-    sha_info->count_hi = 0L;
-    sha_info->local = 0;
-    sha_info->digestsize = 48;
-}
-
-
-/* update the SHA digest */
-
-static void
-sha512_update(SHAobject *sha_info, SHA_BYTE *buffer, int count)
-{
-    int i;
-    SHA_INT32 clo;
-
-    clo = sha_info->count_lo + ((SHA_INT32) count << 3);
-    if (clo < sha_info->count_lo) {
-        ++sha_info->count_hi;
-    }
-    sha_info->count_lo = clo;
-    sha_info->count_hi += (SHA_INT32) count >> 29;
-    if (sha_info->local) {
-        i = SHA_BLOCKSIZE - sha_info->local;
-        if (i > count) {
-            i = count;
-        }
-        memcpy(((SHA_BYTE *) sha_info->data) + sha_info->local, buffer, i);
-        count -= i;
-        buffer += i;
-        sha_info->local += i;
-        if (sha_info->local == SHA_BLOCKSIZE) {
-            sha512_transform(sha_info);
-        }
-        else {
-            return;
-        }
-    }
-    while (count >= SHA_BLOCKSIZE) {
-        memcpy(sha_info->data, buffer, SHA_BLOCKSIZE);
-        buffer += SHA_BLOCKSIZE;
-        count -= SHA_BLOCKSIZE;
-        sha512_transform(sha_info);
-    }
-    memcpy(sha_info->data, buffer, count);
-    sha_info->local = count;
-}
-
-/* finish computing the SHA digest */
-
-static void
-sha512_final(unsigned char digest[SHA_DIGESTSIZE], SHAobject *sha_info)
-{
-    int count;
-    SHA_INT32 lo_bit_count, hi_bit_count;
-
-    lo_bit_count = sha_info->count_lo;
-    hi_bit_count = sha_info->count_hi;
-    count = (int) ((lo_bit_count >> 3) & 0x7f);
-    ((SHA_BYTE *) sha_info->data)[count++] = 0x80;
-    if (count > SHA_BLOCKSIZE - 16) {
-        memset(((SHA_BYTE *) sha_info->data) + count, 0,
-               SHA_BLOCKSIZE - count);
-        sha512_transform(sha_info);
-        memset((SHA_BYTE *) sha_info->data, 0, SHA_BLOCKSIZE - 16);
-    }
-    else {
-        memset(((SHA_BYTE *) sha_info->data) + count, 0,
-               SHA_BLOCKSIZE - 16 - count);
-    }
-
-    /* GJS: note that we add the hi/lo in big-endian. sha512_transform will
-       swap these values into host-order. */
-    sha_info->data[112] = 0;
-    sha_info->data[113] = 0;
-    sha_info->data[114] = 0;
-    sha_info->data[115] = 0;
-    sha_info->data[116] = 0;
-    sha_info->data[117] = 0;
-    sha_info->data[118] = 0;
-    sha_info->data[119] = 0;
-    sha_info->data[120] = (hi_bit_count >> 24) & 0xff;
-    sha_info->data[121] = (hi_bit_count >> 16) & 0xff;
-    sha_info->data[122] = (hi_bit_count >>  8) & 0xff;
-    sha_info->data[123] = (hi_bit_count >>  0) & 0xff;
-    sha_info->data[124] = (lo_bit_count >> 24) & 0xff;
-    sha_info->data[125] = (lo_bit_count >> 16) & 0xff;
-    sha_info->data[126] = (lo_bit_count >>  8) & 0xff;
-    sha_info->data[127] = (lo_bit_count >>  0) & 0xff;
-    sha512_transform(sha_info);
-    digest[ 0] = (unsigned char) ((sha_info->digest[0] >> 56) & 0xff);
-    digest[ 1] = (unsigned char) ((sha_info->digest[0] >> 48) & 0xff);
-    digest[ 2] = (unsigned char) ((sha_info->digest[0] >> 40) & 0xff);
-    digest[ 3] = (unsigned char) ((sha_info->digest[0] >> 32) & 0xff);
-    digest[ 4] = (unsigned char) ((sha_info->digest[0] >> 24) & 0xff);
-    digest[ 5] = (unsigned char) ((sha_info->digest[0] >> 16) & 0xff);
-    digest[ 6] = (unsigned char) ((sha_info->digest[0] >>  8) & 0xff);
-    digest[ 7] = (unsigned char) ((sha_info->digest[0]      ) & 0xff);
-    digest[ 8] = (unsigned char) ((sha_info->digest[1] >> 56) & 0xff);
-    digest[ 9] = (unsigned char) ((sha_info->digest[1] >> 48) & 0xff);
-    digest[10] = (unsigned char) ((sha_info->digest[1] >> 40) & 0xff);
-    digest[11] = (unsigned char) ((sha_info->digest[1] >> 32) & 0xff);
-    digest[12] = (unsigned char) ((sha_info->digest[1] >> 24) & 0xff);
-    digest[13] = (unsigned char) ((sha_info->digest[1] >> 16) & 0xff);
-    digest[14] = (unsigned char) ((sha_info->digest[1] >>  8) & 0xff);
-    digest[15] = (unsigned char) ((sha_info->digest[1]      ) & 0xff);
-    digest[16] = (unsigned char) ((sha_info->digest[2] >> 56) & 0xff);
-    digest[17] = (unsigned char) ((sha_info->digest[2] >> 48) & 0xff);
-    digest[18] = (unsigned char) ((sha_info->digest[2] >> 40) & 0xff);
-    digest[19] = (unsigned char) ((sha_info->digest[2] >> 32) & 0xff);
-    digest[20] = (unsigned char) ((sha_info->digest[2] >> 24) & 0xff);
-    digest[21] = (unsigned char) ((sha_info->digest[2] >> 16) & 0xff);
-    digest[22] = (unsigned char) ((sha_info->digest[2] >>  8) & 0xff);
-    digest[23] = (unsigned char) ((sha_info->digest[2]      ) & 0xff);
-    digest[24] = (unsigned char) ((sha_info->digest[3] >> 56) & 0xff);
-    digest[25] = (unsigned char) ((sha_info->digest[3] >> 48) & 0xff);
-    digest[26] = (unsigned char) ((sha_info->digest[3] >> 40) & 0xff);
-    digest[27] = (unsigned char) ((sha_info->digest[3] >> 32) & 0xff);
-    digest[28] = (unsigned char) ((sha_info->digest[3] >> 24) & 0xff);
-    digest[29] = (unsigned char) ((sha_info->digest[3] >> 16) & 0xff);
-    digest[30] = (unsigned char) ((sha_info->digest[3] >>  8) & 0xff);
-    digest[31] = (unsigned char) ((sha_info->digest[3]      ) & 0xff);
-    digest[32] = (unsigned char) ((sha_info->digest[4] >> 56) & 0xff);
-    digest[33] = (unsigned char) ((sha_info->digest[4] >> 48) & 0xff);
-    digest[34] = (unsigned char) ((sha_info->digest[4] >> 40) & 0xff);
-    digest[35] = (unsigned char) ((sha_info->digest[4] >> 32) & 0xff);
-    digest[36] = (unsigned char) ((sha_info->digest[4] >> 24) & 0xff);
-    digest[37] = (unsigned char) ((sha_info->digest[4] >> 16) & 0xff);
-    digest[38] = (unsigned char) ((sha_info->digest[4] >>  8) & 0xff);
-    digest[39] = (unsigned char) ((sha_info->digest[4]      ) & 0xff);
-    digest[40] = (unsigned char) ((sha_info->digest[5] >> 56) & 0xff);
-    digest[41] = (unsigned char) ((sha_info->digest[5] >> 48) & 0xff);
-    digest[42] = (unsigned char) ((sha_info->digest[5] >> 40) & 0xff);
-    digest[43] = (unsigned char) ((sha_info->digest[5] >> 32) & 0xff);
-    digest[44] = (unsigned char) ((sha_info->digest[5] >> 24) & 0xff);
-    digest[45] = (unsigned char) ((sha_info->digest[5] >> 16) & 0xff);
-    digest[46] = (unsigned char) ((sha_info->digest[5] >>  8) & 0xff);
-    digest[47] = (unsigned char) ((sha_info->digest[5]      ) & 0xff);
-    digest[48] = (unsigned char) ((sha_info->digest[6] >> 56) & 0xff);
-    digest[49] = (unsigned char) ((sha_info->digest[6] >> 48) & 0xff);
-    digest[50] = (unsigned char) ((sha_info->digest[6] >> 40) & 0xff);
-    digest[51] = (unsigned char) ((sha_info->digest[6] >> 32) & 0xff);
-    digest[52] = (unsigned char) ((sha_info->digest[6] >> 24) & 0xff);
-    digest[53] = (unsigned char) ((sha_info->digest[6] >> 16) & 0xff);
-    digest[54] = (unsigned char) ((sha_info->digest[6] >>  8) & 0xff);
-    digest[55] = (unsigned char) ((sha_info->digest[6]      ) & 0xff);
-    digest[56] = (unsigned char) ((sha_info->digest[7] >> 56) & 0xff);
-    digest[57] = (unsigned char) ((sha_info->digest[7] >> 48) & 0xff);
-    digest[58] = (unsigned char) ((sha_info->digest[7] >> 40) & 0xff);
-    digest[59] = (unsigned char) ((sha_info->digest[7] >> 32) & 0xff);
-    digest[60] = (unsigned char) ((sha_info->digest[7] >> 24) & 0xff);
-    digest[61] = (unsigned char) ((sha_info->digest[7] >> 16) & 0xff);
-    digest[62] = (unsigned char) ((sha_info->digest[7] >>  8) & 0xff);
-    digest[63] = (unsigned char) ((sha_info->digest[7]      ) & 0xff);
-}
-
-/*
- * End of copied SHA code.
- *
- * ------------------------------------------------------------------------
- */
-
-static PyTypeObject SHA384type;
-static PyTypeObject SHA512type;
-
-
-static SHAobject *
-newSHA384object(void)
-{
-    return (SHAobject *)PyObject_New(SHAobject, &SHA384type);
-}
-
-static SHAobject *
-newSHA512object(void)
-{
-    return (SHAobject *)PyObject_New(SHAobject, &SHA512type);
-}
-
-/* Internal methods for a hash object */
-
-static void
-SHA512_dealloc(PyObject *ptr)
-{
-    PyObject_Del(ptr);
-}
-
-
-/* External methods for a hash object */
-
-PyDoc_STRVAR(SHA512_copy__doc__, "Return a copy of the hash object.");
-
-static PyObject *
-SHA512_copy(SHAobject *self, PyObject *unused)
-{
-    SHAobject *newobj;
-
-    if (((PyObject*)self)->ob_type == &SHA512type) {
-        if ( (newobj = newSHA512object())==NULL)
-            return NULL;
-    } else {
-        if ( (newobj = newSHA384object())==NULL)
-            return NULL;
-    }
-
-    SHAcopy(self, newobj);
-    return (PyObject *)newobj;
-}
-
-PyDoc_STRVAR(SHA512_digest__doc__,
-"Return the digest value as a string of binary data.");
-
-static PyObject *
-SHA512_digest(SHAobject *self, PyObject *unused)
-{
-    unsigned char digest[SHA_DIGESTSIZE];
-    SHAobject temp;
-
-    SHAcopy(self, &temp);
-    sha512_final(digest, &temp);
-    return PyString_FromStringAndSize((const char *)digest, self->digestsize);
-}
-
-PyDoc_STRVAR(SHA512_hexdigest__doc__,
-"Return the digest value as a string of hexadecimal digits.");
-
-static PyObject *
-SHA512_hexdigest(SHAobject *self, PyObject *unused)
-{
-    unsigned char digest[SHA_DIGESTSIZE];
-    SHAobject temp;
-    PyObject *retval;
-    char *hex_digest;
-    int i, j;
-
-    /* Get the raw (binary) digest value */
-    SHAcopy(self, &temp);
-    sha512_final(digest, &temp);
-
-    /* Create a new string */
-    retval = PyString_FromStringAndSize(NULL, self->digestsize * 2);
-    if (!retval)
-            return NULL;
-    hex_digest = PyString_AsString(retval);
-    if (!hex_digest) {
-            Py_DECREF(retval);
-            return NULL;
-    }
-
-    /* Make hex version of the digest */
-    for (i=j=0; i<self->digestsize; i++) {
-        char c;
-        c = (digest[i] >> 4) & 0xf;
-        c = (c>9) ? c+'a'-10 : c + '0';
-        hex_digest[j++] = c;
-        c = (digest[i] & 0xf);
-        c = (c>9) ? c+'a'-10 : c + '0';
-        hex_digest[j++] = c;
-    }
-    return retval;
-}
-
-PyDoc_STRVAR(SHA512_update__doc__,
-"Update this hash object's state with the provided string.");
-
-static PyObject *
-SHA512_update(SHAobject *self, PyObject *args)
-{
-    Py_buffer buf;
-
-    if (!PyArg_ParseTuple(args, "s*:update", &buf))
-        return NULL;
-
-    sha512_update(self, buf.buf, buf.len);
-
-    PyBuffer_Release(&buf);
-    Py_RETURN_NONE;
-}
-
-static PyMethodDef SHA_methods[] = {
-    {"copy",      (PyCFunction)SHA512_copy,      METH_NOARGS, SHA512_copy__doc__},
-    {"digest",    (PyCFunction)SHA512_digest,    METH_NOARGS, SHA512_digest__doc__},
-    {"hexdigest", (PyCFunction)SHA512_hexdigest, METH_NOARGS, SHA512_hexdigest__doc__},
-    {"update",    (PyCFunction)SHA512_update,    METH_VARARGS, SHA512_update__doc__},
-    {NULL,        NULL}         /* sentinel */
-};
-
-static PyObject *
-SHA512_get_block_size(PyObject *self, void *closure)
-{
-    return PyInt_FromLong(SHA_BLOCKSIZE);
-}
-
-static PyObject *
-SHA512_get_name(PyObject *self, void *closure)
-{
-    if (((SHAobject *)self)->digestsize == 64)
-        return PyString_FromStringAndSize("SHA512", 6);
-    else
-        return PyString_FromStringAndSize("SHA384", 6);
-}
-
-static PyGetSetDef SHA_getseters[] = {
-    {"block_size",
-     (getter)SHA512_get_block_size, NULL,
-     NULL,
-     NULL},
-    {"name",
-     (getter)SHA512_get_name, NULL,
-     NULL,
-     NULL},
-    {NULL}  /* Sentinel */
-};
-
-static PyMemberDef SHA_members[] = {
-    {"digest_size", T_INT, offsetof(SHAobject, digestsize), READONLY, NULL},
-    /* the old md5 and sha modules support 'digest_size' as in PEP 247.
-     * the old sha module also supported 'digestsize'.  ugh. */
-    {"digestsize", T_INT, offsetof(SHAobject, digestsize), READONLY, NULL},
-    {NULL}  /* Sentinel */
-};
-
-static PyTypeObject SHA384type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_sha512.sha384",   /*tp_name*/
-    sizeof(SHAobject),  /*tp_size*/
-    0,                  /*tp_itemsize*/
-    /* methods */
-    SHA512_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*/
-    Py_TPFLAGS_DEFAULT, /*tp_flags*/
-    0,                  /*tp_doc*/
-    0,                  /*tp_traverse*/
-    0,                  /*tp_clear*/
-    0,                  /*tp_richcompare*/
-    0,                  /*tp_weaklistoffset*/
-    0,                  /*tp_iter*/
-    0,                  /*tp_iternext*/
-    SHA_methods,        /* tp_methods */
-    SHA_members,        /* tp_members */
-    SHA_getseters,      /* tp_getset */
-};
-
-static PyTypeObject SHA512type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_sha512.sha512",   /*tp_name*/
-    sizeof(SHAobject),  /*tp_size*/
-    0,                  /*tp_itemsize*/
-    /* methods */
-    SHA512_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*/
-    Py_TPFLAGS_DEFAULT, /*tp_flags*/
-    0,                  /*tp_doc*/
-    0,                  /*tp_traverse*/
-    0,                  /*tp_clear*/
-    0,                  /*tp_richcompare*/
-    0,                  /*tp_weaklistoffset*/
-    0,                  /*tp_iter*/
-    0,                  /*tp_iternext*/
-    SHA_methods,        /* tp_methods */
-    SHA_members,        /* tp_members */
-    SHA_getseters,      /* tp_getset */
-};
-
-
-/* The single module-level function: new() */
-
-PyDoc_STRVAR(SHA512_new__doc__,
-"Return a new SHA-512 hash object; optionally initialized with a string.");
-
-static PyObject *
-SHA512_new(PyObject *self, PyObject *args, PyObject *kwdict)
-{
-    static char *kwlist[] = {"string", NULL};
-    SHAobject *new;
-    Py_buffer buf = { 0 };
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s*:new", kwlist,
-                                     &buf)) {
-        return NULL;
-    }
-
-    if ((new = newSHA512object()) == NULL) {
-        PyBuffer_Release(&buf);
-        return NULL;
-    }
-
-    sha512_init(new);
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(new);
-        PyBuffer_Release(&buf);
-        return NULL;
-    }
-    if (buf.len > 0) {
-        sha512_update(new, buf.buf, buf.len);
-    }
-    PyBuffer_Release(&buf);
-
-    return (PyObject *)new;
-}
-
-PyDoc_STRVAR(SHA384_new__doc__,
-"Return a new SHA-384 hash object; optionally initialized with a string.");
-
-static PyObject *
-SHA384_new(PyObject *self, PyObject *args, PyObject *kwdict)
-{
-    static char *kwlist[] = {"string", NULL};
-    SHAobject *new;
-    Py_buffer buf = { 0 };
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s*:new", kwlist,
-                                     &buf)) {
-        return NULL;
-    }
-
-    if ((new = newSHA384object()) == NULL) {
-        PyBuffer_Release(&buf);
-        return NULL;
-    }
-
-    sha384_init(new);
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(new);
-        PyBuffer_Release(&buf);
-        return NULL;
-    }
-    if (buf.len > 0) {
-        sha512_update(new, buf.buf, buf.len);
-    }
-    PyBuffer_Release(&buf);
-
-    return (PyObject *)new;
-}
-
-
-/* List of functions exported by this module */
-
-static struct PyMethodDef SHA_functions[] = {
-    {"sha512", (PyCFunction)SHA512_new, METH_VARARGS|METH_KEYWORDS, SHA512_new__doc__},
-    {"sha384", (PyCFunction)SHA384_new, METH_VARARGS|METH_KEYWORDS, SHA384_new__doc__},
-    {NULL,      NULL}            /* Sentinel */
-};
-
-
-/* Initialize this module. */
-
-#define insint(n,v) { PyModule_AddIntConstant(m,n,v); }
-
-PyMODINIT_FUNC
-init_sha512(void)
-{
-    PyObject *m;
-
-    Py_TYPE(&SHA384type) = &PyType_Type;
-    if (PyType_Ready(&SHA384type) < 0)
-        return;
-    Py_TYPE(&SHA512type) = &PyType_Type;
-    if (PyType_Ready(&SHA512type) < 0)
-        return;
-    m = Py_InitModule("_sha512", SHA_functions);
-    if (m == NULL)
-        return;
-}
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/shamodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/shamodule.c
deleted file mode 100644
index 8a99abc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/shamodule.c
+++ /dev/null
@@ -1,597 +0,0 @@
-/* SHA module */
-
-/* This module provides an interface to NIST's Secure Hash Algorithm */
-
-/* See below for information about the original code this module was
-   based upon. Additional work performed by:
-
-   Andrew Kuchling (amk@amk.ca)
-   Greg Stein (gstein@lyra.org)
-
-   Copyright (C) 2005   Gregory P. Smith (greg@krypto.org)
-   Licensed to PSF under a Contributor Agreement.
-
-*/
-
-/* SHA objects */
-
-#include "Python.h"
-#include "structmember.h"
-
-
-/* Endianness testing and definitions */
-#define TestEndianness(variable) {int i=1; variable=PCT_BIG_ENDIAN;\
-        if (*((char*)&i)==1) variable=PCT_LITTLE_ENDIAN;}
-
-#define PCT_LITTLE_ENDIAN 1
-#define PCT_BIG_ENDIAN 0
-
-/* Some useful types */
-
-typedef unsigned char SHA_BYTE;
-
-#if SIZEOF_INT == 4
-typedef unsigned int SHA_INT32; /* 32-bit integer */
-#else
-/* not defined. compilation will die. */
-#endif
-
-/* The SHA block size and message digest sizes, in bytes */
-
-#define SHA_BLOCKSIZE    64
-#define SHA_DIGESTSIZE  20
-
-/* The structure for storing SHS info */
-
-typedef struct {
-    PyObject_HEAD
-    SHA_INT32 digest[5];                /* Message digest */
-    SHA_INT32 count_lo, count_hi;       /* 64-bit bit count */
-    SHA_BYTE data[SHA_BLOCKSIZE];       /* SHA data buffer */
-    int Endianness;
-    int local;                          /* unprocessed amount in data */
-} SHAobject;
-
-/* When run on a little-endian CPU we need to perform byte reversal on an
-   array of longwords. */
-
-static void longReverse(SHA_INT32 *buffer, int byteCount, int Endianness)
-{
-    SHA_INT32 value;
-
-    if ( Endianness == PCT_BIG_ENDIAN )
-        return;
-
-    byteCount /= sizeof(*buffer);
-    while (byteCount--) {
-        value = *buffer;
-        value = ( ( value & 0xFF00FF00L ) >> 8  ) | \
-                ( ( value & 0x00FF00FFL ) << 8 );
-        *buffer++ = ( value << 16 ) | ( value >> 16 );
-    }
-}
-
-static void SHAcopy(SHAobject *src, SHAobject *dest)
-{
-    dest->Endianness = src->Endianness;
-    dest->local = src->local;
-    dest->count_lo = src->count_lo;
-    dest->count_hi = src->count_hi;
-    memcpy(dest->digest, src->digest, sizeof(src->digest));
-    memcpy(dest->data, src->data, sizeof(src->data));
-}
-
-
-/* ------------------------------------------------------------------------
- *
- * This code for the SHA algorithm was noted as public domain. The original
- * headers are pasted below.
- *
- * Several changes have been made to make it more compatible with the
- * Python environment and desired interface.
- *
- */
-
-/* NIST Secure Hash Algorithm */
-/* heavily modified by Uwe Hollerbach <uh@alumni.caltech edu> */
-/* from Peter C. Gutmann's implementation as found in */
-/* Applied Cryptography by Bruce Schneier */
-/* Further modifications to include the "UNRAVEL" stuff, below */
-
-/* This code is in the public domain */
-
-/* UNRAVEL should be fastest & biggest */
-/* UNROLL_LOOPS should be just as big, but slightly slower */
-/* both undefined should be smallest and slowest */
-
-#define UNRAVEL
-/* #define UNROLL_LOOPS */
-
-/* The SHA f()-functions.  The f1 and f3 functions can be optimized to
-   save one boolean operation each - thanks to Rich Schroeppel,
-   rcs@cs.arizona.edu for discovering this */
-
-/*#define f1(x,y,z)     ((x & y) | (~x & z))            // Rounds  0-19 */
-#define f1(x,y,z)       (z ^ (x & (y ^ z)))             /* Rounds  0-19 */
-#define f2(x,y,z)       (x ^ y ^ z)                     /* Rounds 20-39 */
-/*#define f3(x,y,z)     ((x & y) | (x & z) | (y & z))   // Rounds 40-59 */
-#define f3(x,y,z)       ((x & y) | (z & (x | y)))       /* Rounds 40-59 */
-#define f4(x,y,z)       (x ^ y ^ z)                     /* Rounds 60-79 */
-
-/* SHA constants */
-
-#define CONST1          0x5a827999L                     /* Rounds  0-19 */
-#define CONST2          0x6ed9eba1L                     /* Rounds 20-39 */
-#define CONST3          0x8f1bbcdcL                     /* Rounds 40-59 */
-#define CONST4          0xca62c1d6L                     /* Rounds 60-79 */
-
-/* 32-bit rotate */
-
-#define R32(x,n)        ((x << n) | (x >> (32 - n)))
-
-/* the generic case, for when the overall rotation is not unraveled */
-
-#define FG(n)   \
-    T = R32(A,5) + f##n(B,C,D) + E + *WP++ + CONST##n;  \
-    E = D; D = C; C = R32(B,30); B = A; A = T
-
-/* specific cases, for when the overall rotation is unraveled */
-
-#define FA(n)   \
-    T = R32(A,5) + f##n(B,C,D) + E + *WP++ + CONST##n; B = R32(B,30)
-
-#define FB(n)   \
-    E = R32(T,5) + f##n(A,B,C) + D + *WP++ + CONST##n; A = R32(A,30)
-
-#define FC(n)   \
-    D = R32(E,5) + f##n(T,A,B) + C + *WP++ + CONST##n; T = R32(T,30)
-
-#define FD(n)   \
-    C = R32(D,5) + f##n(E,T,A) + B + *WP++ + CONST##n; E = R32(E,30)
-
-#define FE(n)   \
-    B = R32(C,5) + f##n(D,E,T) + A + *WP++ + CONST##n; D = R32(D,30)
-
-#define FT(n)   \
-    A = R32(B,5) + f##n(C,D,E) + T + *WP++ + CONST##n; C = R32(C,30)
-
-/* do SHA transformation */
-
-static void
-sha_transform(SHAobject *sha_info)
-{
-    int i;
-    SHA_INT32 T, A, B, C, D, E, W[80], *WP;
-
-    memcpy(W, sha_info->data, sizeof(sha_info->data));
-    longReverse(W, (int)sizeof(sha_info->data), sha_info->Endianness);
-
-    for (i = 16; i < 80; ++i) {
-        W[i] = W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16];
-
-        /* extra rotation fix */
-        W[i] = R32(W[i], 1);
-    }
-    A = sha_info->digest[0];
-    B = sha_info->digest[1];
-    C = sha_info->digest[2];
-    D = sha_info->digest[3];
-    E = sha_info->digest[4];
-    WP = W;
-#ifdef UNRAVEL
-    FA(1); FB(1); FC(1); FD(1); FE(1); FT(1); FA(1); FB(1); FC(1); FD(1);
-    FE(1); FT(1); FA(1); FB(1); FC(1); FD(1); FE(1); FT(1); FA(1); FB(1);
-    FC(2); FD(2); FE(2); FT(2); FA(2); FB(2); FC(2); FD(2); FE(2); FT(2);
-    FA(2); FB(2); FC(2); FD(2); FE(2); FT(2); FA(2); FB(2); FC(2); FD(2);
-    FE(3); FT(3); FA(3); FB(3); FC(3); FD(3); FE(3); FT(3); FA(3); FB(3);
-    FC(3); FD(3); FE(3); FT(3); FA(3); FB(3); FC(3); FD(3); FE(3); FT(3);
-    FA(4); FB(4); FC(4); FD(4); FE(4); FT(4); FA(4); FB(4); FC(4); FD(4);
-    FE(4); FT(4); FA(4); FB(4); FC(4); FD(4); FE(4); FT(4); FA(4); FB(4);
-    sha_info->digest[0] += E;
-    sha_info->digest[1] += T;
-    sha_info->digest[2] += A;
-    sha_info->digest[3] += B;
-    sha_info->digest[4] += C;
-#else /* !UNRAVEL */
-#ifdef UNROLL_LOOPS
-    FG(1); FG(1); FG(1); FG(1); FG(1); FG(1); FG(1); FG(1); FG(1); FG(1);
-    FG(1); FG(1); FG(1); FG(1); FG(1); FG(1); FG(1); FG(1); FG(1); FG(1);
-    FG(2); FG(2); FG(2); FG(2); FG(2); FG(2); FG(2); FG(2); FG(2); FG(2);
-    FG(2); FG(2); FG(2); FG(2); FG(2); FG(2); FG(2); FG(2); FG(2); FG(2);
-    FG(3); FG(3); FG(3); FG(3); FG(3); FG(3); FG(3); FG(3); FG(3); FG(3);
-    FG(3); FG(3); FG(3); FG(3); FG(3); FG(3); FG(3); FG(3); FG(3); FG(3);
-    FG(4); FG(4); FG(4); FG(4); FG(4); FG(4); FG(4); FG(4); FG(4); FG(4);
-    FG(4); FG(4); FG(4); FG(4); FG(4); FG(4); FG(4); FG(4); FG(4); FG(4);
-#else /* !UNROLL_LOOPS */
-    for (i =  0; i < 20; ++i) { FG(1); }
-    for (i = 20; i < 40; ++i) { FG(2); }
-    for (i = 40; i < 60; ++i) { FG(3); }
-    for (i = 60; i < 80; ++i) { FG(4); }
-#endif /* !UNROLL_LOOPS */
-    sha_info->digest[0] += A;
-    sha_info->digest[1] += B;
-    sha_info->digest[2] += C;
-    sha_info->digest[3] += D;
-    sha_info->digest[4] += E;
-#endif /* !UNRAVEL */
-}
-
-/* initialize the SHA digest */
-
-static void
-sha_init(SHAobject *sha_info)
-{
-    TestEndianness(sha_info->Endianness)
-
-    sha_info->digest[0] = 0x67452301L;
-    sha_info->digest[1] = 0xefcdab89L;
-    sha_info->digest[2] = 0x98badcfeL;
-    sha_info->digest[3] = 0x10325476L;
-    sha_info->digest[4] = 0xc3d2e1f0L;
-    sha_info->count_lo = 0L;
-    sha_info->count_hi = 0L;
-    sha_info->local = 0;
-}
-
-/* update the SHA digest */
-
-static void
-sha_update(SHAobject *sha_info, SHA_BYTE *buffer, unsigned int count)
-{
-    unsigned int i;
-    SHA_INT32 clo;
-
-    clo = sha_info->count_lo + ((SHA_INT32) count << 3);
-    if (clo < sha_info->count_lo) {
-        ++sha_info->count_hi;
-    }
-    sha_info->count_lo = clo;
-    sha_info->count_hi += (SHA_INT32) count >> 29;
-    if (sha_info->local) {
-        i = SHA_BLOCKSIZE - sha_info->local;
-        if (i > count) {
-            i = count;
-        }
-        memcpy(((SHA_BYTE *) sha_info->data) + sha_info->local, buffer, i);
-        count -= i;
-        buffer += i;
-        sha_info->local += i;
-        if (sha_info->local == SHA_BLOCKSIZE) {
-            sha_transform(sha_info);
-        }
-        else {
-            return;
-        }
-    }
-    while (count >= SHA_BLOCKSIZE) {
-        memcpy(sha_info->data, buffer, SHA_BLOCKSIZE);
-        buffer += SHA_BLOCKSIZE;
-        count -= SHA_BLOCKSIZE;
-        sha_transform(sha_info);
-    }
-    memcpy(sha_info->data, buffer, count);
-    sha_info->local = count;
-}
-
-/* finish computing the SHA digest */
-
-static void
-sha_final(unsigned char digest[20], SHAobject *sha_info)
-{
-    int count;
-    SHA_INT32 lo_bit_count, hi_bit_count;
-
-    lo_bit_count = sha_info->count_lo;
-    hi_bit_count = sha_info->count_hi;
-    count = (int) ((lo_bit_count >> 3) & 0x3f);
-    ((SHA_BYTE *) sha_info->data)[count++] = 0x80;
-    if (count > SHA_BLOCKSIZE - 8) {
-        memset(((SHA_BYTE *) sha_info->data) + count, 0,
-               SHA_BLOCKSIZE - count);
-        sha_transform(sha_info);
-        memset((SHA_BYTE *) sha_info->data, 0, SHA_BLOCKSIZE - 8);
-    }
-    else {
-        memset(((SHA_BYTE *) sha_info->data) + count, 0,
-               SHA_BLOCKSIZE - 8 - count);
-    }
-
-    /* GJS: note that we add the hi/lo in big-endian. sha_transform will
-       swap these values into host-order. */
-    sha_info->data[56] = (hi_bit_count >> 24) & 0xff;
-    sha_info->data[57] = (hi_bit_count >> 16) & 0xff;
-    sha_info->data[58] = (hi_bit_count >>  8) & 0xff;
-    sha_info->data[59] = (hi_bit_count >>  0) & 0xff;
-    sha_info->data[60] = (lo_bit_count >> 24) & 0xff;
-    sha_info->data[61] = (lo_bit_count >> 16) & 0xff;
-    sha_info->data[62] = (lo_bit_count >>  8) & 0xff;
-    sha_info->data[63] = (lo_bit_count >>  0) & 0xff;
-    sha_transform(sha_info);
-    digest[ 0] = (unsigned char) ((sha_info->digest[0] >> 24) & 0xff);
-    digest[ 1] = (unsigned char) ((sha_info->digest[0] >> 16) & 0xff);
-    digest[ 2] = (unsigned char) ((sha_info->digest[0] >>  8) & 0xff);
-    digest[ 3] = (unsigned char) ((sha_info->digest[0]      ) & 0xff);
-    digest[ 4] = (unsigned char) ((sha_info->digest[1] >> 24) & 0xff);
-    digest[ 5] = (unsigned char) ((sha_info->digest[1] >> 16) & 0xff);
-    digest[ 6] = (unsigned char) ((sha_info->digest[1] >>  8) & 0xff);
-    digest[ 7] = (unsigned char) ((sha_info->digest[1]      ) & 0xff);
-    digest[ 8] = (unsigned char) ((sha_info->digest[2] >> 24) & 0xff);
-    digest[ 9] = (unsigned char) ((sha_info->digest[2] >> 16) & 0xff);
-    digest[10] = (unsigned char) ((sha_info->digest[2] >>  8) & 0xff);
-    digest[11] = (unsigned char) ((sha_info->digest[2]      ) & 0xff);
-    digest[12] = (unsigned char) ((sha_info->digest[3] >> 24) & 0xff);
-    digest[13] = (unsigned char) ((sha_info->digest[3] >> 16) & 0xff);
-    digest[14] = (unsigned char) ((sha_info->digest[3] >>  8) & 0xff);
-    digest[15] = (unsigned char) ((sha_info->digest[3]      ) & 0xff);
-    digest[16] = (unsigned char) ((sha_info->digest[4] >> 24) & 0xff);
-    digest[17] = (unsigned char) ((sha_info->digest[4] >> 16) & 0xff);
-    digest[18] = (unsigned char) ((sha_info->digest[4] >>  8) & 0xff);
-    digest[19] = (unsigned char) ((sha_info->digest[4]      ) & 0xff);
-}
-
-/*
- * End of copied SHA code.
- *
- * ------------------------------------------------------------------------
- */
-
-static PyTypeObject SHAtype;
-
-
-static SHAobject *
-newSHAobject(void)
-{
-    return (SHAobject *)PyObject_New(SHAobject, &SHAtype);
-}
-
-/* Internal methods for a hashing object */
-
-static void
-SHA_dealloc(PyObject *ptr)
-{
-    PyObject_Del(ptr);
-}
-
-
-/* External methods for a hashing object */
-
-PyDoc_STRVAR(SHA_copy__doc__, "Return a copy of the hashing object.");
-
-static PyObject *
-SHA_copy(SHAobject *self, PyObject *unused)
-{
-    SHAobject *newobj;
-
-    if ( (newobj = newSHAobject())==NULL)
-        return NULL;
-
-    SHAcopy(self, newobj);
-    return (PyObject *)newobj;
-}
-
-PyDoc_STRVAR(SHA_digest__doc__,
-"Return the digest value as a string of binary data.");
-
-static PyObject *
-SHA_digest(SHAobject *self, PyObject *unused)
-{
-    unsigned char digest[SHA_DIGESTSIZE];
-    SHAobject temp;
-
-    SHAcopy(self, &temp);
-    sha_final(digest, &temp);
-    return PyString_FromStringAndSize((const char *)digest, sizeof(digest));
-}
-
-PyDoc_STRVAR(SHA_hexdigest__doc__,
-"Return the digest value as a string of hexadecimal digits.");
-
-static PyObject *
-SHA_hexdigest(SHAobject *self, PyObject *unused)
-{
-    unsigned char digest[SHA_DIGESTSIZE];
-    SHAobject temp;
-    PyObject *retval;
-    char *hex_digest;
-    int i, j;
-
-    /* Get the raw (binary) digest value */
-    SHAcopy(self, &temp);
-    sha_final(digest, &temp);
-
-    /* Create a new string */
-    retval = PyString_FromStringAndSize(NULL, sizeof(digest) * 2);
-    if (!retval)
-            return NULL;
-    hex_digest = PyString_AsString(retval);
-    if (!hex_digest) {
-            Py_DECREF(retval);
-            return NULL;
-    }
-
-    /* Make hex version of the digest */
-    for(i=j=0; i<sizeof(digest); i++) {
-        char c;
-        c = (digest[i] >> 4) & 0xf;
-        c = (c>9) ? c+'a'-10 : c + '0';
-        hex_digest[j++] = c;
-        c = (digest[i] & 0xf);
-        c = (c>9) ? c+'a'-10 : c + '0';
-        hex_digest[j++] = c;
-    }
-    return retval;
-}
-
-PyDoc_STRVAR(SHA_update__doc__,
-"Update this hashing object's state with the provided string.");
-
-static PyObject *
-SHA_update(SHAobject *self, PyObject *args)
-{
-    Py_buffer view;
-
-    if (!PyArg_ParseTuple(args, "s*:update", &view))
-        return NULL;
-
-    sha_update(self, (unsigned char*)view.buf,
-               Py_SAFE_DOWNCAST(view.len, Py_ssize_t, unsigned int));
-
-    PyBuffer_Release(&view);
-    Py_RETURN_NONE;
-}
-
-static PyMethodDef SHA_methods[] = {
-    {"copy",      (PyCFunction)SHA_copy,      METH_NOARGS,  SHA_copy__doc__},
-    {"digest",    (PyCFunction)SHA_digest,    METH_NOARGS,  SHA_digest__doc__},
-    {"hexdigest", (PyCFunction)SHA_hexdigest, METH_NOARGS,  SHA_hexdigest__doc__},
-    {"update",    (PyCFunction)SHA_update,    METH_VARARGS, SHA_update__doc__},
-    {NULL,        NULL}         /* sentinel */
-};
-
-static PyObject *
-SHA_get_block_size(PyObject *self, void *closure)
-{
-    return PyInt_FromLong(SHA_BLOCKSIZE);
-}
-
-static PyObject *
-SHA_get_digest_size(PyObject *self, void *closure)
-{
-    return PyInt_FromLong(SHA_DIGESTSIZE);
-}
-
-static PyObject *
-SHA_get_name(PyObject *self, void *closure)
-{
-    return PyString_FromStringAndSize("SHA1", 4);
-}
-
-static PyGetSetDef SHA_getseters[] = {
-    {"digest_size",
-     (getter)SHA_get_digest_size, NULL,
-     NULL,
-     NULL},
-    {"block_size",
-     (getter)SHA_get_block_size, NULL,
-     NULL,
-     NULL},
-    {"name",
-     (getter)SHA_get_name, NULL,
-     NULL,
-     NULL},
-    /* the old md5 and sha modules support 'digest_size' as in PEP 247.
-     * the old sha module also supported 'digestsize'.  ugh. */
-    {"digestsize",
-     (getter)SHA_get_digest_size, NULL,
-     NULL,
-     NULL},
-    {NULL}  /* Sentinel */
-};
-
-static PyTypeObject SHAtype = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "_sha.sha",         /*tp_name*/
-    sizeof(SHAobject),  /*tp_size*/
-    0,                  /*tp_itemsize*/
-    /* methods */
-    SHA_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*/
-    Py_TPFLAGS_DEFAULT, /*tp_flags*/
-    0,                  /*tp_doc*/
-    0,                  /*tp_traverse*/
-    0,                  /*tp_clear*/
-    0,                  /*tp_richcompare*/
-    0,                  /*tp_weaklistoffset*/
-    0,                  /*tp_iter*/
-    0,                  /*tp_iternext*/
-    SHA_methods,        /* tp_methods */
-    0,                  /* tp_members */
-    SHA_getseters,      /* tp_getset */
-};
-
-
-/* The single module-level function: new() */
-
-PyDoc_STRVAR(SHA_new__doc__,
-"Return a new SHA hashing object.  An optional string argument\n\
-may be provided; if present, this string will be automatically\n\
-hashed.");
-
-static PyObject *
-SHA_new(PyObject *self, PyObject *args, PyObject *kwdict)
-{
-    static char *kwlist[] = {"string", NULL};
-    SHAobject *new;
-    Py_buffer view = { 0 };
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s*:new", kwlist,
-                                     &view)) {
-        return NULL;
-    }
-
-    if ((new = newSHAobject()) == NULL) {
-        PyBuffer_Release(&view);
-        return NULL;
-    }
-
-    sha_init(new);
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(new);
-        PyBuffer_Release(&view);
-        return NULL;
-    }
-    if (view.len > 0) {
-        sha_update(new, (unsigned char*)view.buf,
-                   Py_SAFE_DOWNCAST(view.len, Py_ssize_t, unsigned int));
-    }
-    PyBuffer_Release(&view);
-
-    return (PyObject *)new;
-}
-
-
-/* List of functions exported by this module */
-
-static struct PyMethodDef SHA_functions[] = {
-    {"new", (PyCFunction)SHA_new, METH_VARARGS|METH_KEYWORDS, SHA_new__doc__},
-    {NULL,      NULL}            /* Sentinel */
-};
-
-
-/* Initialize this module. */
-
-#define insint(n,v) { PyModule_AddIntConstant(m,n,v); }
-
-PyMODINIT_FUNC
-init_sha(void)
-{
-    PyObject *m;
-
-    Py_TYPE(&SHAtype) = &PyType_Type;
-    if (PyType_Ready(&SHAtype) < 0)
-        return;
-    m = Py_InitModule("_sha", SHA_functions);
-    if (m == NULL)
-        return;
-
-    /* Add some symbolic constants to the module */
-    insint("blocksize", 1);  /* For future use, in case some hash
-                                functions require an integral number of
-                                blocks */
-    insint("digestsize", 20);
-    insint("digest_size", 20);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/signalmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/signalmodule.c
deleted file mode 100644
index 0f2be18..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/signalmodule.c
+++ /dev/null
@@ -1,986 +0,0 @@
-
-/* Signal module -- many thanks to Lance Ellinghaus */
-
-/* XXX Signals should be recorded per thread, now we have thread state. */
-
-#include "Python.h"
-#include "intrcheck.h"
-
-#ifdef MS_WINDOWS
-#include <Windows.h>
-#ifdef HAVE_PROCESS_H
-#include <process.h>
-#endif
-#endif
-
-#ifdef HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-
-#ifndef SIG_ERR
-#define SIG_ERR ((PyOS_sighandler_t)(-1))
-#endif
-
-#if defined(PYOS_OS2) && !defined(PYCC_GCC)
-#define NSIG 12
-#include <process.h>
-#endif
-
-#ifndef NSIG
-# if defined(_NSIG)
-#  define NSIG _NSIG            /* For BSD/SysV */
-# elif defined(_SIGMAX)
-#  define NSIG (_SIGMAX + 1)    /* For QNX */
-# elif defined(SIGMAX)
-#  define NSIG (SIGMAX + 1)     /* For djgpp */
-# else
-#  define NSIG 64               /* Use a reasonable default value */
-# endif
-#endif
-
-
-/*
-   NOTES ON THE INTERACTION BETWEEN SIGNALS AND THREADS
-
-   When threads are supported, we want the following semantics:
-
-   - only the main thread can set a signal handler
-   - any thread can get a signal handler
-   - signals are only delivered to the main thread
-
-   I.e. we don't support "synchronous signals" like SIGFPE (catching
-   this doesn't make much sense in Python anyway) nor do we support
-   signals as a means of inter-thread communication, since not all
-   thread implementations support that (at least our thread library
-   doesn't).
-
-   We still have the problem that in some implementations signals
-   generated by the keyboard (e.g. SIGINT) are delivered to all
-   threads (e.g. SGI), while in others (e.g. Solaris) such signals are
-   delivered to one random thread (an intermediate possibility would
-   be to deliver it to the main thread -- POSIX?).  For now, we have
-   a working implementation that works in all three cases -- the
-   handler ignores signals if getpid() isn't the same as in the main
-   thread.  XXX This is a hack.
-
-   GNU pth is a user-space threading library, and as such, all threads
-   run within the same process. In this case, if the currently running
-   thread is not the main_thread, send the signal to the main_thread.
-*/
-
-#ifdef WITH_THREAD
-#include <sys/types.h> /* For pid_t */
-#include "pythread.h"
-static long main_thread;
-static pid_t main_pid;
-#endif
-
-static struct {
-    int tripped;
-    PyObject *func;
-} Handlers[NSIG];
-
-static sig_atomic_t wakeup_fd = -1;
-
-/* Speed up sigcheck() when none tripped */
-static volatile sig_atomic_t is_tripped = 0;
-
-static PyObject *DefaultHandler;
-static PyObject *IgnoreHandler;
-static PyObject *IntHandler;
-
-/* On Solaris 8, gcc will produce a warning that the function
-   declaration is not a prototype. This is caused by the definition of
-   SIG_DFL as (void (*)())0; the correct declaration would have been
-   (void (*)(int))0. */
-
-static PyOS_sighandler_t old_siginthandler = SIG_DFL;
-
-#ifdef HAVE_GETITIMER
-static PyObject *ItimerError;
-
-/* auxiliary functions for setitimer/getitimer */
-static void
-timeval_from_double(double d, struct timeval *tv)
-{
-    tv->tv_sec = floor(d);
-    tv->tv_usec = fmod(d, 1.0) * 1000000.0;
-}
-
-Py_LOCAL_INLINE(double)
-double_from_timeval(struct timeval *tv)
-{
-    return tv->tv_sec + (double)(tv->tv_usec / 1000000.0);
-}
-
-static PyObject *
-itimer_retval(struct itimerval *iv)
-{
-    PyObject *r, *v;
-
-    r = PyTuple_New(2);
-    if (r == NULL)
-    return NULL;
-
-    if(!(v = PyFloat_FromDouble(double_from_timeval(&iv->it_value)))) {
-    Py_DECREF(r);
-    return NULL;
-    }
-
-    PyTuple_SET_ITEM(r, 0, v);
-
-    if(!(v = PyFloat_FromDouble(double_from_timeval(&iv->it_interval)))) {
-    Py_DECREF(r);
-    return NULL;
-    }
-
-    PyTuple_SET_ITEM(r, 1, v);
-
-    return r;
-}
-#endif
-
-static PyObject *
-signal_default_int_handler(PyObject *self, PyObject *args)
-{
-    PyErr_SetNone(PyExc_KeyboardInterrupt);
-    return NULL;
-}
-
-PyDoc_STRVAR(default_int_handler_doc,
-"default_int_handler(...)\n\
-\n\
-The default handler for SIGINT installed by Python.\n\
-It raises KeyboardInterrupt.");
-
-
-static int
-checksignals_witharg(void * unused)
-{
-    return PyErr_CheckSignals();
-}
-
-static void
-trip_signal(int sig_num)
-{
-    Handlers[sig_num].tripped = 1;
-    if (is_tripped)
-        return;
-    /* Set is_tripped after setting .tripped, as it gets
-       cleared in PyErr_CheckSignals() before .tripped. */
-    is_tripped = 1;
-    Py_AddPendingCall(checksignals_witharg, NULL);
-    if (wakeup_fd != -1)
-        write(wakeup_fd, "\0", 1);
-}
-
-static void
-signal_handler(int sig_num)
-{
-    int save_errno = errno;
-
-#if defined(WITH_THREAD) && defined(WITH_PTH)
-    if (PyThread_get_thread_ident() != main_thread) {
-        pth_raise(*(pth_t *) main_thread, sig_num);
-    }
-    else
-#endif
-    {
-#ifdef WITH_THREAD
-    /* See NOTES section above */
-    if (getpid() == main_pid)
-#endif
-    {
-        trip_signal(sig_num);
-    }
-
-#ifndef HAVE_SIGACTION
-#ifdef SIGCHLD
-    /* To avoid infinite recursion, this signal remains
-       reset until explicit re-instated.
-       Don't clear the 'func' field as it is our pointer
-       to the Python handler... */
-    if (sig_num != SIGCHLD)
-#endif
-    /* If the handler was not set up with sigaction, reinstall it.  See
-     * Python/pythonrun.c for the implementation of PyOS_setsig which
-     * makes this true.  See also issue8354. */
-    PyOS_setsig(sig_num, signal_handler);
-#endif
-    }
-
-    /* Issue #10311: asynchronously executing signal handlers should not
-       mutate errno under the feet of unsuspecting C code. */
-    errno = save_errno;
-}
-
-
-#ifdef HAVE_ALARM
-static PyObject *
-signal_alarm(PyObject *self, PyObject *args)
-{
-    int t;
-    if (!PyArg_ParseTuple(args, "i:alarm", &t))
-        return NULL;
-    /* alarm() returns the number of seconds remaining */
-    return PyInt_FromLong((long)alarm(t));
-}
-
-PyDoc_STRVAR(alarm_doc,
-"alarm(seconds)\n\
-\n\
-Arrange for SIGALRM to arrive after the given number of seconds.");
-#endif
-
-#ifdef HAVE_PAUSE
-static PyObject *
-signal_pause(PyObject *self)
-{
-    Py_BEGIN_ALLOW_THREADS
-    (void)pause();
-    Py_END_ALLOW_THREADS
-    /* make sure that any exceptions that got raised are propagated
-     * back into Python
-     */
-    if (PyErr_CheckSignals())
-        return NULL;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-PyDoc_STRVAR(pause_doc,
-"pause()\n\
-\n\
-Wait until a signal arrives.");
-
-#endif
-
-
-static PyObject *
-signal_signal(PyObject *self, PyObject *args)
-{
-    PyObject *obj;
-    int sig_num;
-    PyObject *old_handler;
-    void (*func)(int);
-    if (!PyArg_ParseTuple(args, "iO:signal", &sig_num, &obj))
-        return NULL;
-#ifdef MS_WINDOWS
-    /* Validate that sig_num is one of the allowable signals */
-    switch (sig_num) {
-        case SIGABRT: break;
-#ifdef SIGBREAK
-        /* Issue #10003: SIGBREAK is not documented as permitted, but works
-           and corresponds to CTRL_BREAK_EVENT. */
-        case SIGBREAK: break;
-#endif
-        case SIGFPE: break;
-        case SIGILL: break;
-        case SIGINT: break;
-        case SIGSEGV: break;
-        case SIGTERM: break;
-        default:
-            PyErr_SetString(PyExc_ValueError, "invalid signal value");
-            return NULL;
-    }
-#endif
-#ifdef WITH_THREAD
-    if (PyThread_get_thread_ident() != main_thread) {
-        PyErr_SetString(PyExc_ValueError,
-                        "signal only works in main thread");
-        return NULL;
-    }
-#endif
-    if (sig_num < 1 || sig_num >= NSIG) {
-        PyErr_SetString(PyExc_ValueError,
-                        "signal number out of range");
-        return NULL;
-    }
-    if (obj == IgnoreHandler)
-        func = SIG_IGN;
-    else if (obj == DefaultHandler)
-        func = SIG_DFL;
-    else if (!PyCallable_Check(obj)) {
-        PyErr_SetString(PyExc_TypeError,
-"signal handler must be signal.SIG_IGN, signal.SIG_DFL, or a callable object");
-                return NULL;
-    }
-    else
-        func = signal_handler;
-    if (PyOS_setsig(sig_num, func) == SIG_ERR) {
-        PyErr_SetFromErrno(PyExc_RuntimeError);
-        return NULL;
-    }
-    old_handler = Handlers[sig_num].func;
-    Handlers[sig_num].tripped = 0;
-    Py_INCREF(obj);
-    Handlers[sig_num].func = obj;
-    return old_handler;
-}
-
-PyDoc_STRVAR(signal_doc,
-"signal(sig, action) -> action\n\
-\n\
-Set the action for the given signal.  The action can be SIG_DFL,\n\
-SIG_IGN, or a callable Python object.  The previous action is\n\
-returned.  See getsignal() for possible return values.\n\
-\n\
-*** IMPORTANT NOTICE ***\n\
-A signal handler function is called with two arguments:\n\
-the first is the signal number, the second is the interrupted stack frame.");
-
-
-static PyObject *
-signal_getsignal(PyObject *self, PyObject *args)
-{
-    int sig_num;
-    PyObject *old_handler;
-    if (!PyArg_ParseTuple(args, "i:getsignal", &sig_num))
-        return NULL;
-    if (sig_num < 1 || sig_num >= NSIG) {
-        PyErr_SetString(PyExc_ValueError,
-                        "signal number out of range");
-        return NULL;
-    }
-    old_handler = Handlers[sig_num].func;
-    Py_INCREF(old_handler);
-    return old_handler;
-}
-
-PyDoc_STRVAR(getsignal_doc,
-"getsignal(sig) -> action\n\
-\n\
-Return the current action for the given signal.  The return value can be:\n\
-SIG_IGN -- if the signal is being ignored\n\
-SIG_DFL -- if the default action for the signal is in effect\n\
-None -- if an unknown handler is in effect\n\
-anything else -- the callable Python object used as a handler");
-
-#ifdef HAVE_SIGINTERRUPT
-PyDoc_STRVAR(siginterrupt_doc,
-"siginterrupt(sig, flag) -> None\n\
-change system call restart behaviour: if flag is False, system calls\n\
-will be restarted when interrupted by signal sig, else system calls\n\
-will be interrupted.");
-
-static PyObject *
-signal_siginterrupt(PyObject *self, PyObject *args)
-{
-    int sig_num;
-    int flag;
-
-    if (!PyArg_ParseTuple(args, "ii:siginterrupt", &sig_num, &flag))
-        return NULL;
-    if (sig_num < 1 || sig_num >= NSIG) {
-        PyErr_SetString(PyExc_ValueError,
-                        "signal number out of range");
-        return NULL;
-    }
-    if (siginterrupt(sig_num, flag)<0) {
-        PyErr_SetFromErrno(PyExc_RuntimeError);
-        return NULL;
-    }
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-#endif
-
-static PyObject *
-signal_set_wakeup_fd(PyObject *self, PyObject *args)
-{
-    struct stat buf;
-    int fd, old_fd;
-    if (!PyArg_ParseTuple(args, "i:set_wakeup_fd", &fd))
-        return NULL;
-#ifdef WITH_THREAD
-    if (PyThread_get_thread_ident() != main_thread) {
-        PyErr_SetString(PyExc_ValueError,
-                        "set_wakeup_fd only works in main thread");
-        return NULL;
-    }
-#endif
-    if (fd != -1 && fstat(fd, &buf) != 0) {
-        PyErr_SetString(PyExc_ValueError, "invalid fd");
-        return NULL;
-    }
-    old_fd = wakeup_fd;
-    wakeup_fd = fd;
-    return PyLong_FromLong(old_fd);
-}
-
-PyDoc_STRVAR(set_wakeup_fd_doc,
-"set_wakeup_fd(fd) -> fd\n\
-\n\
-Sets the fd to be written to (with '\\0') when a signal\n\
-comes in.  A library can use this to wakeup select or poll.\n\
-The previous fd is returned.\n\
-\n\
-The fd must be non-blocking.");
-
-/* C API for the same, without all the error checking */
-int
-PySignal_SetWakeupFd(int fd)
-{
-    int old_fd = wakeup_fd;
-    if (fd < 0)
-        fd = -1;
-    wakeup_fd = fd;
-    return old_fd;
-}
-
-
-#ifdef HAVE_SETITIMER
-static PyObject *
-signal_setitimer(PyObject *self, PyObject *args)
-{
-    double first;
-    double interval = 0;
-    int which;
-    struct itimerval new, old;
-
-    if(!PyArg_ParseTuple(args, "id|d:setitimer", &which, &first, &interval))
-    return NULL;
-
-    timeval_from_double(first, &new.it_value);
-    timeval_from_double(interval, &new.it_interval);
-    /* Let OS check "which" value */
-    if (setitimer(which, &new, &old) != 0) {
-    PyErr_SetFromErrno(ItimerError);
-    return NULL;
-    }
-
-    return itimer_retval(&old);
-}
-
-PyDoc_STRVAR(setitimer_doc,
-"setitimer(which, seconds[, interval])\n\
-\n\
-Sets given itimer (one of ITIMER_REAL, ITIMER_VIRTUAL\n\
-or ITIMER_PROF) to fire after value seconds and after\n\
-that every interval seconds.\n\
-The itimer can be cleared by setting seconds to zero.\n\
-\n\
-Returns old values as a tuple: (delay, interval).");
-#endif
-
-
-#ifdef HAVE_GETITIMER
-static PyObject *
-signal_getitimer(PyObject *self, PyObject *args)
-{
-    int which;
-    struct itimerval old;
-
-    if (!PyArg_ParseTuple(args, "i:getitimer", &which))
-    return NULL;
-
-    if (getitimer(which, &old) != 0) {
-    PyErr_SetFromErrno(ItimerError);
-    return NULL;
-    }
-
-    return itimer_retval(&old);
-}
-
-PyDoc_STRVAR(getitimer_doc,
-"getitimer(which)\n\
-\n\
-Returns current value of given itimer.");
-#endif
-
-
-/* List of functions defined in the module */
-static PyMethodDef signal_methods[] = {
-#ifdef HAVE_ALARM
-    {"alarm",                   signal_alarm, METH_VARARGS, alarm_doc},
-#endif
-#ifdef HAVE_SETITIMER
-    {"setitimer",       signal_setitimer, METH_VARARGS, setitimer_doc},
-#endif
-#ifdef HAVE_GETITIMER
-    {"getitimer",       signal_getitimer, METH_VARARGS, getitimer_doc},
-#endif
-    {"signal",                  signal_signal, METH_VARARGS, signal_doc},
-    {"getsignal",               signal_getsignal, METH_VARARGS, getsignal_doc},
-    {"set_wakeup_fd",           signal_set_wakeup_fd, METH_VARARGS, set_wakeup_fd_doc},
-#ifdef HAVE_SIGINTERRUPT
-    {"siginterrupt",            signal_siginterrupt, METH_VARARGS, siginterrupt_doc},
-#endif
-#ifdef HAVE_PAUSE
-    {"pause",                   (PyCFunction)signal_pause,
-     METH_NOARGS,pause_doc},
-#endif
-    {"default_int_handler", signal_default_int_handler,
-     METH_VARARGS, default_int_handler_doc},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-
-PyDoc_STRVAR(module_doc,
-"This module provides mechanisms to use signal handlers in Python.\n\
-\n\
-Functions:\n\
-\n\
-alarm() -- cause SIGALRM after a specified time [Unix only]\n\
-setitimer() -- cause a signal (described below) after a specified\n\
-               float time and the timer may restart then [Unix only]\n\
-getitimer() -- get current value of timer [Unix only]\n\
-signal() -- set the action for a given signal\n\
-getsignal() -- get the signal action for a given signal\n\
-pause() -- wait until a signal arrives [Unix only]\n\
-default_int_handler() -- default SIGINT handler\n\
-\n\
-signal constants:\n\
-SIG_DFL -- used to refer to the system default handler\n\
-SIG_IGN -- used to ignore the signal\n\
-NSIG -- number of defined signals\n\
-SIGINT, SIGTERM, etc. -- signal numbers\n\
-\n\
-itimer constants:\n\
-ITIMER_REAL -- decrements in real time, and delivers SIGALRM upon\n\
-               expiration\n\
-ITIMER_VIRTUAL -- decrements only when the process is executing,\n\
-               and delivers SIGVTALRM upon expiration\n\
-ITIMER_PROF -- decrements both when the process is executing and\n\
-               when the system is executing on behalf of the process.\n\
-               Coupled with ITIMER_VIRTUAL, this timer is usually\n\
-               used to profile the time spent by the application\n\
-               in user and kernel space. SIGPROF is delivered upon\n\
-               expiration.\n\
-\n\n\
-*** IMPORTANT NOTICE ***\n\
-A signal handler function is called with two arguments:\n\
-the first is the signal number, the second is the interrupted stack frame.");
-
-PyMODINIT_FUNC
-initsignal(void)
-{
-    PyObject *m, *d, *x;
-    int i;
-
-#ifdef WITH_THREAD
-    main_thread = PyThread_get_thread_ident();
-    main_pid = getpid();
-#endif
-
-    /* Create the module and add the functions */
-    m = Py_InitModule3("signal", signal_methods, module_doc);
-    if (m == NULL)
-        return;
-
-    /* Add some symbolic constants to the module */
-    d = PyModule_GetDict(m);
-
-    x = DefaultHandler = PyLong_FromVoidPtr((void *)SIG_DFL);
-    if (!x || PyDict_SetItemString(d, "SIG_DFL", x) < 0)
-        goto finally;
-
-    x = IgnoreHandler = PyLong_FromVoidPtr((void *)SIG_IGN);
-    if (!x || PyDict_SetItemString(d, "SIG_IGN", x) < 0)
-        goto finally;
-
-    x = PyInt_FromLong((long)NSIG);
-    if (!x || PyDict_SetItemString(d, "NSIG", x) < 0)
-        goto finally;
-    Py_DECREF(x);
-
-    x = IntHandler = PyDict_GetItemString(d, "default_int_handler");
-    if (!x)
-        goto finally;
-    Py_INCREF(IntHandler);
-
-    Handlers[0].tripped = 0;
-    for (i = 1; i < NSIG; i++) {
-        void (*t)(int);
-        t = PyOS_getsig(i);
-        Handlers[i].tripped = 0;
-        if (t == SIG_DFL)
-            Handlers[i].func = DefaultHandler;
-        else if (t == SIG_IGN)
-            Handlers[i].func = IgnoreHandler;
-        else
-            Handlers[i].func = Py_None; /* None of our business */
-        Py_INCREF(Handlers[i].func);
-    }
-    if (Handlers[SIGINT].func == DefaultHandler) {
-        /* Install default int handler */
-        Py_INCREF(IntHandler);
-        Py_DECREF(Handlers[SIGINT].func);
-        Handlers[SIGINT].func = IntHandler;
-        old_siginthandler = PyOS_setsig(SIGINT, signal_handler);
-    }
-
-#ifdef SIGHUP
-    x = PyInt_FromLong(SIGHUP);
-    PyDict_SetItemString(d, "SIGHUP", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGINT
-    x = PyInt_FromLong(SIGINT);
-    PyDict_SetItemString(d, "SIGINT", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGBREAK
-    x = PyInt_FromLong(SIGBREAK);
-    PyDict_SetItemString(d, "SIGBREAK", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGQUIT
-    x = PyInt_FromLong(SIGQUIT);
-    PyDict_SetItemString(d, "SIGQUIT", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGILL
-    x = PyInt_FromLong(SIGILL);
-    PyDict_SetItemString(d, "SIGILL", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGTRAP
-    x = PyInt_FromLong(SIGTRAP);
-    PyDict_SetItemString(d, "SIGTRAP", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGIOT
-    x = PyInt_FromLong(SIGIOT);
-    PyDict_SetItemString(d, "SIGIOT", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGABRT
-    x = PyInt_FromLong(SIGABRT);
-    PyDict_SetItemString(d, "SIGABRT", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGEMT
-    x = PyInt_FromLong(SIGEMT);
-    PyDict_SetItemString(d, "SIGEMT", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGFPE
-    x = PyInt_FromLong(SIGFPE);
-    PyDict_SetItemString(d, "SIGFPE", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGKILL
-    x = PyInt_FromLong(SIGKILL);
-    PyDict_SetItemString(d, "SIGKILL", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGBUS
-    x = PyInt_FromLong(SIGBUS);
-    PyDict_SetItemString(d, "SIGBUS", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGSEGV
-    x = PyInt_FromLong(SIGSEGV);
-    PyDict_SetItemString(d, "SIGSEGV", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGSYS
-    x = PyInt_FromLong(SIGSYS);
-    PyDict_SetItemString(d, "SIGSYS", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGPIPE
-    x = PyInt_FromLong(SIGPIPE);
-    PyDict_SetItemString(d, "SIGPIPE", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGALRM
-    x = PyInt_FromLong(SIGALRM);
-    PyDict_SetItemString(d, "SIGALRM", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGTERM
-    x = PyInt_FromLong(SIGTERM);
-    PyDict_SetItemString(d, "SIGTERM", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGUSR1
-    x = PyInt_FromLong(SIGUSR1);
-    PyDict_SetItemString(d, "SIGUSR1", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGUSR2
-    x = PyInt_FromLong(SIGUSR2);
-    PyDict_SetItemString(d, "SIGUSR2", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGCLD
-    x = PyInt_FromLong(SIGCLD);
-    PyDict_SetItemString(d, "SIGCLD", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGCHLD
-    x = PyInt_FromLong(SIGCHLD);
-    PyDict_SetItemString(d, "SIGCHLD", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGPWR
-    x = PyInt_FromLong(SIGPWR);
-    PyDict_SetItemString(d, "SIGPWR", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGIO
-    x = PyInt_FromLong(SIGIO);
-    PyDict_SetItemString(d, "SIGIO", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGURG
-    x = PyInt_FromLong(SIGURG);
-    PyDict_SetItemString(d, "SIGURG", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGWINCH
-    x = PyInt_FromLong(SIGWINCH);
-    PyDict_SetItemString(d, "SIGWINCH", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGPOLL
-    x = PyInt_FromLong(SIGPOLL);
-    PyDict_SetItemString(d, "SIGPOLL", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGSTOP
-    x = PyInt_FromLong(SIGSTOP);
-    PyDict_SetItemString(d, "SIGSTOP", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGTSTP
-    x = PyInt_FromLong(SIGTSTP);
-    PyDict_SetItemString(d, "SIGTSTP", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGCONT
-    x = PyInt_FromLong(SIGCONT);
-    PyDict_SetItemString(d, "SIGCONT", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGTTIN
-    x = PyInt_FromLong(SIGTTIN);
-    PyDict_SetItemString(d, "SIGTTIN", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGTTOU
-    x = PyInt_FromLong(SIGTTOU);
-    PyDict_SetItemString(d, "SIGTTOU", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGVTALRM
-    x = PyInt_FromLong(SIGVTALRM);
-    PyDict_SetItemString(d, "SIGVTALRM", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGPROF
-    x = PyInt_FromLong(SIGPROF);
-    PyDict_SetItemString(d, "SIGPROF", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGXCPU
-    x = PyInt_FromLong(SIGXCPU);
-    PyDict_SetItemString(d, "SIGXCPU", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGXFSZ
-    x = PyInt_FromLong(SIGXFSZ);
-    PyDict_SetItemString(d, "SIGXFSZ", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGRTMIN
-    x = PyInt_FromLong(SIGRTMIN);
-    PyDict_SetItemString(d, "SIGRTMIN", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGRTMAX
-    x = PyInt_FromLong(SIGRTMAX);
-    PyDict_SetItemString(d, "SIGRTMAX", x);
-    Py_XDECREF(x);
-#endif
-#ifdef SIGINFO
-    x = PyInt_FromLong(SIGINFO);
-    PyDict_SetItemString(d, "SIGINFO", x);
-    Py_XDECREF(x);
-#endif
-
-#ifdef ITIMER_REAL
-    x = PyLong_FromLong(ITIMER_REAL);
-    PyDict_SetItemString(d, "ITIMER_REAL", x);
-    Py_DECREF(x);
-#endif
-#ifdef ITIMER_VIRTUAL
-    x = PyLong_FromLong(ITIMER_VIRTUAL);
-    PyDict_SetItemString(d, "ITIMER_VIRTUAL", x);
-    Py_DECREF(x);
-#endif
-#ifdef ITIMER_PROF
-    x = PyLong_FromLong(ITIMER_PROF);
-    PyDict_SetItemString(d, "ITIMER_PROF", x);
-    Py_DECREF(x);
-#endif
-
-#if defined (HAVE_SETITIMER) || defined (HAVE_GETITIMER)
-    ItimerError = PyErr_NewException("signal.ItimerError",
-     PyExc_IOError, NULL);
-    if (ItimerError != NULL)
-    PyDict_SetItemString(d, "ItimerError", ItimerError);
-#endif
-
-#ifdef CTRL_C_EVENT
-    x = PyInt_FromLong(CTRL_C_EVENT);
-    PyDict_SetItemString(d, "CTRL_C_EVENT", x);
-    Py_DECREF(x);
-#endif
-
-#ifdef CTRL_BREAK_EVENT
-    x = PyInt_FromLong(CTRL_BREAK_EVENT);
-    PyDict_SetItemString(d, "CTRL_BREAK_EVENT", x);
-    Py_DECREF(x);
-#endif
-
-    if (!PyErr_Occurred())
-        return;
-
-    /* Check for errors */
-  finally:
-    return;
-}
-
-static void
-finisignal(void)
-{
-    int i;
-    PyObject *func;
-
-    PyOS_setsig(SIGINT, old_siginthandler);
-    old_siginthandler = SIG_DFL;
-
-    for (i = 1; i < NSIG; i++) {
-        func = Handlers[i].func;
-        Handlers[i].tripped = 0;
-        Handlers[i].func = NULL;
-        if (i != SIGINT && func != NULL && func != Py_None &&
-            func != DefaultHandler && func != IgnoreHandler)
-            PyOS_setsig(i, SIG_DFL);
-        Py_XDECREF(func);
-    }
-
-    Py_XDECREF(IntHandler);
-    IntHandler = NULL;
-    Py_XDECREF(DefaultHandler);
-    DefaultHandler = NULL;
-    Py_XDECREF(IgnoreHandler);
-    IgnoreHandler = NULL;
-}
-
-
-/* Declared in pyerrors.h */
-int
-PyErr_CheckSignals(void)
-{
-    int i;
-    PyObject *f;
-
-    if (!is_tripped)
-        return 0;
-
-#ifdef WITH_THREAD
-    if (PyThread_get_thread_ident() != main_thread)
-        return 0;
-#endif
-
-    /*
-     * The is_tripped variable is meant to speed up the calls to
-     * PyErr_CheckSignals (both directly or via pending calls) when no
-     * signal has arrived. This variable is set to 1 when a signal arrives
-     * and it is set to 0 here, when we know some signals arrived. This way
-     * we can run the registered handlers with no signals blocked.
-     *
-     * NOTE: with this approach we can have a situation where is_tripped is
-     *       1 but we have no more signals to handle (Handlers[i].tripped
-     *       is 0 for every signal i). This won't do us any harm (except
-     *       we're gonna spent some cycles for nothing). This happens when
-     *       we receive a signal i after we zero is_tripped and before we
-     *       check Handlers[i].tripped.
-     */
-    is_tripped = 0;
-
-    if (!(f = (PyObject *)PyEval_GetFrame()))
-        f = Py_None;
-
-    for (i = 1; i < NSIG; i++) {
-        if (Handlers[i].tripped) {
-            PyObject *result = NULL;
-            PyObject *arglist = Py_BuildValue("(iO)", i, f);
-            Handlers[i].tripped = 0;
-
-            if (arglist) {
-                result = PyEval_CallObject(Handlers[i].func,
-                                           arglist);
-                Py_DECREF(arglist);
-            }
-            if (!result)
-                return -1;
-
-            Py_DECREF(result);
-        }
-    }
-
-    return 0;
-}
-
-
-/* Replacements for intrcheck.c functionality
- * Declared in pyerrors.h
- */
-void
-PyErr_SetInterrupt(void)
-{
-    trip_signal(SIGINT);
-}
-
-void
-PyOS_InitInterrupts(void)
-{
-    initsignal();
-    _PyImport_FixupExtension("signal", "signal");
-}
-
-void
-PyOS_FiniInterrupts(void)
-{
-    finisignal();
-}
-
-int
-PyOS_InterruptOccurred(void)
-{
-    if (Handlers[SIGINT].tripped) {
-#ifdef WITH_THREAD
-        if (PyThread_get_thread_ident() != main_thread)
-            return 0;
-#endif
-        Handlers[SIGINT].tripped = 0;
-        return 1;
-    }
-    return 0;
-}
-
-void
-PyOS_AfterFork(void)
-{
-#ifdef WITH_THREAD
-    _PyGILState_Reinit();
-    PyEval_ReInitThreads();
-    main_thread = PyThread_get_thread_ident();
-    main_pid = getpid();
-    _PyImport_ReInitLock();
-    PyThread_ReInitTLS();
-#endif
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/socketmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/socketmodule.c
deleted file mode 100644
index 36682be..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/socketmodule.c
+++ /dev/null
@@ -1,5454 +0,0 @@
-/* Socket module */
-
-/*
-
-This module provides an interface to Berkeley socket IPC.
-
-Limitations:
-
-- Only AF_INET, AF_INET6 and AF_UNIX address families are supported in a
-  portable manner, though AF_PACKET, AF_NETLINK and AF_TIPC are supported
-  under Linux.
-- No read/write operations (use sendall/recv or makefile instead).
-- Additional restrictions apply on some non-Unix platforms (compensated
-  for by socket.py).
-
-Module interface:
-
-- socket.error: exception raised for socket specific errors
-- socket.gaierror: exception raised for getaddrinfo/getnameinfo errors,
-    a subclass of socket.error
-- socket.herror: exception raised for gethostby* errors,
-    a subclass of socket.error
-- socket.fromfd(fd, family, type[, proto]) --> new socket object (created
-    from an existing file descriptor)
-- socket.gethostbyname(hostname) --> host IP address (string: 'dd.dd.dd.dd')
-- socket.gethostbyaddr(IP address) --> (hostname, [alias, ...], [IP addr, ...])
-- socket.gethostname() --> host name (string: 'spam' or 'spam.domain.com')
-- socket.getprotobyname(protocolname) --> protocol number
-- socket.getservbyname(servicename[, protocolname]) --> port number
-- socket.getservbyport(portnumber[, protocolname]) --> service name
-- socket.socket([family[, type [, proto]]]) --> new socket object
-- socket.socketpair([family[, type [, proto]]]) --> (socket, socket)
-- socket.ntohs(16 bit value) --> new int object
-- socket.ntohl(32 bit value) --> new int object
-- socket.htons(16 bit value) --> new int object
-- socket.htonl(32 bit value) --> new int object
-- socket.getaddrinfo(host, port [, family, socktype, proto, flags])
-    --> List of (family, socktype, proto, canonname, sockaddr)
-- socket.getnameinfo(sockaddr, flags) --> (host, port)
-- socket.AF_INET, socket.SOCK_STREAM, etc.: constants from <socket.h>
-- socket.has_ipv6: boolean value indicating if IPv6 is supported
-- socket.inet_aton(IP address) -> 32-bit packed IP representation
-- socket.inet_ntoa(packed IP) -> IP address string
-- socket.getdefaulttimeout() -> None | float
-- socket.setdefaulttimeout(None | float)
-- an Internet socket address is a pair (hostname, port)
-  where hostname can be anything recognized by gethostbyname()
-  (including the dd.dd.dd.dd notation) and port is in host byte order
-- where a hostname is returned, the dd.dd.dd.dd notation is used
-- a UNIX domain socket address is a string specifying the pathname
-- an AF_PACKET socket address is a tuple containing a string
-  specifying the ethernet interface and an integer specifying
-  the Ethernet protocol number to be received. For example:
-  ("eth0",0x1234).  Optional 3rd,4th,5th elements in the tuple
-  specify packet-type and ha-type/addr.
-- an AF_TIPC socket address is expressed as
- (addr_type, v1, v2, v3 [, scope]); where addr_type can be one of:
-    TIPC_ADDR_NAMESEQ, TIPC_ADDR_NAME, and TIPC_ADDR_ID;
-  and scope can be one of:
-    TIPC_ZONE_SCOPE, TIPC_CLUSTER_SCOPE, and TIPC_NODE_SCOPE.
-  The meaning of v1, v2 and v3 depends on the value of addr_type:
-    if addr_type is TIPC_ADDR_NAME:
-        v1 is the server type
-        v2 is the port identifier
-        v3 is ignored
-    if addr_type is TIPC_ADDR_NAMESEQ:
-        v1 is the server type
-        v2 is the lower port number
-        v3 is the upper port number
-    if addr_type is TIPC_ADDR_ID:
-        v1 is the node
-        v2 is the ref
-        v3 is ignored
-
-
-Local naming conventions:
-
-- names starting with sock_ are socket object methods
-- names starting with socket_ are module-level functions
-- names starting with PySocket are exported through socketmodule.h
-
-*/
-
-#ifdef __APPLE__
-  /*
-   * inet_aton is not available on OSX 10.3, yet we want to use a binary
-   * that was build on 10.4 or later to work on that release, weak linking
-   * comes to the rescue.
-   */
-# pragma weak inet_aton
-#endif
-
-#include "Python.h"
-#include "structmember.h"
-
-#undef MAX
-#define MAX(x, y) ((x) < (y) ? (y) : (x))
-
-/* Socket object documentation */
-PyDoc_STRVAR(sock_doc,
-"socket([family[, type[, proto]]]) -> socket object\n\
-\n\
-Open a socket of the given type.  The family argument specifies the\n\
-address family; it defaults to AF_INET.  The type argument specifies\n\
-whether this is a stream (SOCK_STREAM, this is the default)\n\
-or datagram (SOCK_DGRAM) socket.  The protocol argument defaults to 0,\n\
-specifying the default protocol.  Keyword arguments are accepted.\n\
-\n\
-A socket object represents one endpoint of a network connection.\n\
-\n\
-Methods of socket objects (keyword arguments not allowed):\n\
-\n\
-accept() -- accept a connection, returning new socket and client address\n\
-bind(addr) -- bind the socket to a local address\n\
-close() -- close the socket\n\
-connect(addr) -- connect the socket to a remote address\n\
-connect_ex(addr) -- connect, return an error code instead of an exception\n\
-dup() -- return a new socket object identical to the current one [*]\n\
-fileno() -- return underlying file descriptor\n\
-getpeername() -- return remote address [*]\n\
-getsockname() -- return local address\n\
-getsockopt(level, optname[, buflen]) -- get socket options\n\
-gettimeout() -- return timeout or None\n\
-listen(n) -- start listening for incoming connections\n\
-makefile([mode, [bufsize]]) -- return a file object for the socket [*]\n\
-recv(buflen[, flags]) -- receive data\n\
-recv_into(buffer[, nbytes[, flags]]) -- receive data (into a buffer)\n\
-recvfrom(buflen[, flags]) -- receive data and sender\'s address\n\
-recvfrom_into(buffer[, nbytes, [, flags])\n\
-  -- receive data and sender\'s address (into a buffer)\n\
-sendall(data[, flags]) -- send all data\n\
-send(data[, flags]) -- send data, may not send all of it\n\
-sendto(data[, flags], addr) -- send data to a given address\n\
-setblocking(0 | 1) -- set or clear the blocking I/O flag\n\
-setsockopt(level, optname, value) -- set socket options\n\
-settimeout(None | float) -- set or clear the timeout\n\
-shutdown(how) -- shut down traffic in one or both directions\n\
-\n\
- [*] not available on all platforms!");
-
-/* XXX This is a terrible mess of platform-dependent preprocessor hacks.
-   I hope some day someone can clean this up please... */
-
-/* Hacks for gethostbyname_r().  On some non-Linux platforms, the configure
-   script doesn't get this right, so we hardcode some platform checks below.
-   On the other hand, not all Linux versions agree, so there the settings
-   computed by the configure script are needed! */
-
-#ifndef linux
-# undef HAVE_GETHOSTBYNAME_R_3_ARG
-# undef HAVE_GETHOSTBYNAME_R_5_ARG
-# undef HAVE_GETHOSTBYNAME_R_6_ARG
-#endif
-
-#ifndef WITH_THREAD
-# undef HAVE_GETHOSTBYNAME_R
-#endif
-
-#ifdef HAVE_GETHOSTBYNAME_R
-# if defined(_AIX) || defined(__osf__)
-#  define HAVE_GETHOSTBYNAME_R_3_ARG
-# elif defined(__sun) || defined(__sgi)
-#  define HAVE_GETHOSTBYNAME_R_5_ARG
-# elif defined(linux)
-/* Rely on the configure script */
-# else
-#  undef HAVE_GETHOSTBYNAME_R
-# endif
-#endif
-
-#if !defined(HAVE_GETHOSTBYNAME_R) && defined(WITH_THREAD) && \
-    !defined(MS_WINDOWS)
-# define USE_GETHOSTBYNAME_LOCK
-#endif
-
-/* To use __FreeBSD_version */
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-/* On systems on which getaddrinfo() is believed to not be thread-safe,
-   (this includes the getaddrinfo emulation) protect access with a lock. */
-#if defined(WITH_THREAD) && (defined(__APPLE__) || \
-    (defined(__FreeBSD__) && __FreeBSD_version+0 < 503000) || \
-    defined(__OpenBSD__) || defined(__NetBSD__) || \
-    defined(__VMS) || !defined(HAVE_GETADDRINFO))
-#define USE_GETADDRINFO_LOCK
-#endif
-
-#ifdef USE_GETADDRINFO_LOCK
-#define ACQUIRE_GETADDRINFO_LOCK PyThread_acquire_lock(netdb_lock, 1);
-#define RELEASE_GETADDRINFO_LOCK PyThread_release_lock(netdb_lock);
-#else
-#define ACQUIRE_GETADDRINFO_LOCK
-#define RELEASE_GETADDRINFO_LOCK
-#endif
-
-#if defined(USE_GETHOSTBYNAME_LOCK) || defined(USE_GETADDRINFO_LOCK)
-# include "pythread.h"
-#endif
-
-#if defined(PYCC_VACPP)
-# include <types.h>
-# include <io.h>
-# include <sys/ioctl.h>
-# include <utils.h>
-# include <ctype.h>
-#endif
-
-#if defined(__VMS)
-#  include <ioctl.h>
-#endif
-
-#if defined(PYOS_OS2)
-# define  INCL_DOS
-# define  INCL_DOSERRORS
-# define  INCL_NOPMAPI
-# include <os2.h>
-#endif
-
-#if defined(__sgi) && _COMPILER_VERSION>700 && !_SGIAPI
-/* make sure that the reentrant (gethostbyaddr_r etc)
-   functions are declared correctly if compiling with
-   MIPSPro 7.x in ANSI C mode (default) */
-
-/* XXX Using _SGIAPI is the wrong thing,
-   but I don't know what the right thing is. */
-#undef _SGIAPI /* to avoid warning */
-#define _SGIAPI 1
-
-#undef _XOPEN_SOURCE
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#ifdef _SS_ALIGNSIZE
-#define HAVE_GETADDRINFO 1
-#define HAVE_GETNAMEINFO 1
-#endif
-
-#define HAVE_INET_PTON
-#include <netdb.h>
-#endif
-
-/* Irix 6.5 fails to define this variable at all. This is needed
-   for both GCC and SGI's compiler. I'd say that the SGI headers
-   are just busted. Same thing for Solaris. */
-#if (defined(__sgi) || defined(sun)) && !defined(INET_ADDRSTRLEN)
-#define INET_ADDRSTRLEN 16
-#endif
-
-/* Generic includes */
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-/* Generic socket object definitions and includes */
-#define PySocket_BUILDING_SOCKET
-#include "socketmodule.h"
-
-/* Addressing includes */
-
-#ifndef MS_WINDOWS
-
-/* Non-MS WINDOWS includes */
-# include <netdb.h>
-
-/* Headers needed for inet_ntoa() and inet_addr() */
-# ifdef __BEOS__
-#  include <net/netdb.h>
-# elif defined(PYOS_OS2) && defined(PYCC_VACPP)
-#  include <netdb.h>
-typedef size_t socklen_t;
-# else
-#   include <arpa/inet.h>
-# endif
-
-# ifndef RISCOS
-#  include <fcntl.h>
-# else
-#  include <sys/ioctl.h>
-#  include <socklib.h>
-#  define NO_DUP
-int h_errno; /* not used */
-#  define INET_ADDRSTRLEN 16
-# endif
-
-#else
-
-/* MS_WINDOWS includes */
-# ifdef HAVE_FCNTL_H
-#  include <fcntl.h>
-# endif
-
-#endif
-
-#include <stddef.h>
-
-#ifndef offsetof
-# define offsetof(type, member) ((size_t)(&((type *)0)->member))
-#endif
-
-#ifndef O_NONBLOCK
-# define O_NONBLOCK O_NDELAY
-#endif
-
-/* include Python's addrinfo.h unless it causes trouble */
-#if defined(__sgi) && _COMPILER_VERSION>700 && defined(_SS_ALIGNSIZE)
-  /* Do not include addinfo.h on some newer IRIX versions.
-   * _SS_ALIGNSIZE is defined in sys/socket.h by 6.5.21,
-   * for example, but not by 6.5.10.
-   */
-#elif defined(_MSC_VER) && _MSC_VER>1201
-  /* Do not include addrinfo.h for MSVC7 or greater. 'addrinfo' and
-   * EAI_* constants are defined in (the already included) ws2tcpip.h.
-   */
-#else
-#  include "addrinfo.h"
-#endif
-
-#ifndef HAVE_INET_PTON
-#if !defined(NTDDI_VERSION) || (NTDDI_VERSION < NTDDI_LONGHORN)
-int inet_pton(int af, const char *src, void *dst);
-const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
-#endif
-#endif
-
-#ifdef __APPLE__
-/* On OS X, getaddrinfo returns no error indication of lookup
-   failure, so we must use the emulation instead of the libinfo
-   implementation. Unfortunately, performing an autoconf test
-   for this bug would require DNS access for the machine performing
-   the configuration, which is not acceptable. Therefore, we
-   determine the bug just by checking for __APPLE__. If this bug
-   gets ever fixed, perhaps checking for sys/version.h would be
-   appropriate, which is 10/0 on the system with the bug. */
-#ifndef HAVE_GETNAMEINFO
-/* This bug seems to be fixed in Jaguar. Ths easiest way I could
-   Find to check for Jaguar is that it has getnameinfo(), which
-   older releases don't have */
-#undef HAVE_GETADDRINFO
-#endif
-
-#ifdef HAVE_INET_ATON
-#define USE_INET_ATON_WEAKLINK
-#endif
-
-#endif
-
-/* I know this is a bad practice, but it is the easiest... */
-#if !defined(HAVE_GETADDRINFO)
-/* avoid clashes with the C library definition of the symbol. */
-#define getaddrinfo fake_getaddrinfo
-#define gai_strerror fake_gai_strerror
-#define freeaddrinfo fake_freeaddrinfo
-#include "getaddrinfo.c"
-#endif
-#if !defined(HAVE_GETNAMEINFO)
-#define getnameinfo fake_getnameinfo
-#include "getnameinfo.c"
-#endif
-
-#if defined(MS_WINDOWS) || defined(__BEOS__)
-/* BeOS suffers from the same socket dichotomy as Win32... - [cjh] */
-/* seem to be a few differences in the API */
-#define SOCKETCLOSE closesocket
-#define NO_DUP /* Actually it exists on NT 3.5, but what the heck... */
-#endif
-
-#ifdef MS_WIN32
-#define EAFNOSUPPORT WSAEAFNOSUPPORT
-#define snprintf _snprintf
-#endif
-
-#if defined(PYOS_OS2) && !defined(PYCC_GCC)
-#define SOCKETCLOSE soclose
-#define NO_DUP /* Sockets are Not Actual File Handles under OS/2 */
-#endif
-
-#ifndef SOCKETCLOSE
-#define SOCKETCLOSE close
-#endif
-
-#if (defined(HAVE_BLUETOOTH_H) || defined(HAVE_BLUETOOTH_BLUETOOTH_H)) && !defined(__NetBSD__) && !defined(__DragonFly__)
-#define USE_BLUETOOTH 1
-#if defined(__FreeBSD__)
-#define BTPROTO_L2CAP BLUETOOTH_PROTO_L2CAP
-#define BTPROTO_RFCOMM BLUETOOTH_PROTO_RFCOMM
-#define BTPROTO_HCI BLUETOOTH_PROTO_HCI
-#define SOL_HCI SOL_HCI_RAW
-#define HCI_FILTER SO_HCI_RAW_FILTER
-#define sockaddr_l2 sockaddr_l2cap
-#define sockaddr_rc sockaddr_rfcomm
-#define hci_dev hci_node
-#define _BT_L2_MEMB(sa, memb) ((sa)->l2cap_##memb)
-#define _BT_RC_MEMB(sa, memb) ((sa)->rfcomm_##memb)
-#define _BT_HCI_MEMB(sa, memb) ((sa)->hci_##memb)
-#elif defined(__NetBSD__) || defined(__DragonFly__)
-#define sockaddr_l2 sockaddr_bt
-#define sockaddr_rc sockaddr_bt
-#define sockaddr_hci sockaddr_bt
-#define sockaddr_sco sockaddr_bt
-#define SOL_HCI BTPROTO_HCI
-#define HCI_DATA_DIR SO_HCI_DIRECTION
-#define _BT_L2_MEMB(sa, memb) ((sa)->bt_##memb)
-#define _BT_RC_MEMB(sa, memb) ((sa)->bt_##memb)
-#define _BT_HCI_MEMB(sa, memb) ((sa)->bt_##memb)
-#define _BT_SCO_MEMB(sa, memb) ((sa)->bt_##memb)
-#else
-#define _BT_L2_MEMB(sa, memb) ((sa)->l2_##memb)
-#define _BT_RC_MEMB(sa, memb) ((sa)->rc_##memb)
-#define _BT_HCI_MEMB(sa, memb) ((sa)->hci_##memb)
-#define _BT_SCO_MEMB(sa, memb) ((sa)->sco_##memb)
-#endif
-#endif
-
-#ifdef __VMS
-/* TCP/IP Services for VMS uses a maximum send/recv buffer length */
-#define SEGMENT_SIZE (32 * 1024 -1)
-#endif
-
-#define SAS2SA(x)       ((struct sockaddr *)(x))
-
-/*
- * Constants for getnameinfo()
- */
-#if !defined(NI_MAXHOST)
-#define NI_MAXHOST 1025
-#endif
-#if !defined(NI_MAXSERV)
-#define NI_MAXSERV 32
-#endif
-
-/* XXX There's a problem here: *static* functions are not supposed to have
-   a Py prefix (or use CapitalizedWords).  Later... */
-
-/* Global variable holding the exception type for errors detected
-   by this module (but not argument type or memory errors, etc.). */
-static PyObject *socket_error;
-static PyObject *socket_herror;
-static PyObject *socket_gaierror;
-static PyObject *socket_timeout;
-
-#ifdef RISCOS
-/* Global variable which is !=0 if Python is running in a RISC OS taskwindow */
-static int taskwindow;
-#endif
-
-/* A forward reference to the socket type object.
-   The sock_type variable contains pointers to various functions,
-   some of which call new_sockobject(), which uses sock_type, so
-   there has to be a circular reference. */
-static PyTypeObject sock_type;
-
-#if defined(HAVE_POLL_H)
-#include <poll.h>
-#elif defined(HAVE_SYS_POLL_H)
-#include <sys/poll.h>
-#endif
-
-#ifdef Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE
-/* Platform can select file descriptors beyond FD_SETSIZE */
-#define IS_SELECTABLE(s) 1
-#elif defined(HAVE_POLL)
-/* Instead of select(), we'll use poll() since poll() works on any fd. */
-#define IS_SELECTABLE(s) 1
-/* Can we call select() with this socket without a buffer overrun? */
-#else
-/* POSIX says selecting file descriptors beyond FD_SETSIZE
-   has undefined behaviour.  If there's no timeout left, we don't have to
-   call select, so it's a safe, little white lie. */
-#define IS_SELECTABLE(s) ((s)->sock_fd < FD_SETSIZE || s->sock_timeout <= 0.0)
-#endif
-
-static PyObject*
-select_error(void)
-{
-    PyErr_SetString(socket_error, "unable to select on socket");
-    return NULL;
-}
-
-/* Convenience function to raise an error according to errno
-   and return a NULL pointer from a function. */
-
-static PyObject *
-set_error(void)
-{
-#ifdef MS_WINDOWS
-    int err_no = WSAGetLastError();
-    /* PyErr_SetExcFromWindowsErr() invokes FormatMessage() which
-       recognizes the error codes used by both GetLastError() and
-       WSAGetLastError */
-    if (err_no)
-        return PyErr_SetExcFromWindowsErr(socket_error, err_no);
-#endif
-
-#if defined(PYOS_OS2) && !defined(PYCC_GCC)
-    if (sock_errno() != NO_ERROR) {
-        APIRET rc;
-        ULONG  msglen;
-        char outbuf[100];
-        int myerrorcode = sock_errno();
-
-        /* Retrieve socket-related error message from MPTN.MSG file */
-        rc = DosGetMessage(NULL, 0, outbuf, sizeof(outbuf),
-                           myerrorcode - SOCBASEERR + 26,
-                           "mptn.msg",
-                           &msglen);
-        if (rc == NO_ERROR) {
-            PyObject *v;
-
-            /* OS/2 doesn't guarantee a terminator */
-            outbuf[msglen] = '\0';
-            if (strlen(outbuf) > 0) {
-                /* If non-empty msg, trim CRLF */
-                char *lastc = &outbuf[ strlen(outbuf)-1 ];
-                while (lastc > outbuf &&
-                       isspace(Py_CHARMASK(*lastc))) {
-                    /* Trim trailing whitespace (CRLF) */
-                    *lastc-- = '\0';
-                }
-            }
-            v = Py_BuildValue("(is)", myerrorcode, outbuf);
-            if (v != NULL) {
-                PyErr_SetObject(socket_error, v);
-                Py_DECREF(v);
-            }
-            return NULL;
-        }
-    }
-#endif
-
-#if defined(RISCOS)
-    if (_inet_error.errnum != NULL) {
-        PyObject *v;
-        v = Py_BuildValue("(is)", errno, _inet_err());
-        if (v != NULL) {
-            PyErr_SetObject(socket_error, v);
-            Py_DECREF(v);
-        }
-        return NULL;
-    }
-#endif
-
-    return PyErr_SetFromErrno(socket_error);
-}
-
-
-static PyObject *
-set_herror(int h_error)
-{
-    PyObject *v;
-
-#ifdef HAVE_HSTRERROR
-    v = Py_BuildValue("(is)", h_error, (char *)hstrerror(h_error));
-#else
-    v = Py_BuildValue("(is)", h_error, "host not found");
-#endif
-    if (v != NULL) {
-        PyErr_SetObject(socket_herror, v);
-        Py_DECREF(v);
-    }
-
-    return NULL;
-}
-
-
-static PyObject *
-set_gaierror(int error)
-{
-    PyObject *v;
-
-#ifdef EAI_SYSTEM
-    /* EAI_SYSTEM is not available on Windows XP. */
-    if (error == EAI_SYSTEM)
-        return set_error();
-#endif
-
-#ifdef HAVE_GAI_STRERROR
-    v = Py_BuildValue("(is)", error, gai_strerror(error));
-#else
-    v = Py_BuildValue("(is)", error, "getaddrinfo failed");
-#endif
-    if (v != NULL) {
-        PyErr_SetObject(socket_gaierror, v);
-        Py_DECREF(v);
-    }
-
-    return NULL;
-}
-
-#ifdef __VMS
-/* Function to send in segments */
-static int
-sendsegmented(int sock_fd, char *buf, int len, int flags)
-{
-    int n = 0;
-    int remaining = len;
-
-    while (remaining > 0) {
-        unsigned int segment;
-
-        segment = (remaining >= SEGMENT_SIZE ? SEGMENT_SIZE : remaining);
-        n = send(sock_fd, buf, segment, flags);
-        if (n < 0) {
-            return n;
-        }
-        remaining -= segment;
-        buf += segment;
-    } /* end while */
-
-    return len;
-}
-#endif
-
-/* Function to perform the setting of socket blocking mode
-   internally. block = (1 | 0). */
-static int
-internal_setblocking(PySocketSockObject *s, int block)
-{
-#ifndef RISCOS
-#ifndef MS_WINDOWS
-    int delay_flag;
-#endif
-#endif
-
-    Py_BEGIN_ALLOW_THREADS
-#ifdef __BEOS__
-    block = !block;
-    setsockopt(s->sock_fd, SOL_SOCKET, SO_NONBLOCK,
-               (void *)(&block), sizeof(int));
-#else
-#ifndef RISCOS
-#ifndef MS_WINDOWS
-#if defined(PYOS_OS2) && !defined(PYCC_GCC)
-    block = !block;
-    ioctl(s->sock_fd, FIONBIO, (caddr_t)&block, sizeof(block));
-#elif defined(__VMS)
-    block = !block;
-    ioctl(s->sock_fd, FIONBIO, (unsigned int *)&block);
-#else  /* !PYOS_OS2 && !__VMS */
-    delay_flag = fcntl(s->sock_fd, F_GETFL, 0);
-    if (block)
-        delay_flag &= (~O_NONBLOCK);
-    else
-        delay_flag |= O_NONBLOCK;
-    fcntl(s->sock_fd, F_SETFL, delay_flag);
-#endif /* !PYOS_OS2 */
-#else /* MS_WINDOWS */
-    block = !block;
-    ioctlsocket(s->sock_fd, FIONBIO, (u_long*)&block);
-#endif /* MS_WINDOWS */
-#else /* RISCOS */
-    block = !block;
-    socketioctl(s->sock_fd, FIONBIO, (u_long*)&block);
-#endif /* RISCOS */
-#endif /* __BEOS__ */
-    Py_END_ALLOW_THREADS
-
-    /* Since these don't return anything */
-    return 1;
-}
-
-/* Do a select()/poll() on the socket, if necessary (sock_timeout > 0).
-   The argument writing indicates the direction.
-   This does not raise an exception; we'll let our caller do that
-   after they've reacquired the interpreter lock.
-   Returns 1 on timeout, -1 on error, 0 otherwise. */
-static int
-internal_select(PySocketSockObject *s, int writing)
-{
-    int n;
-
-    /* Nothing to do unless we're in timeout mode (not non-blocking) */
-    if (s->sock_timeout <= 0.0)
-        return 0;
-
-    /* Guard against closed socket */
-    if (s->sock_fd < 0)
-        return 0;
-
-    /* Prefer poll, if available, since you can poll() any fd
-     * which can't be done with select(). */
-#ifdef HAVE_POLL
-    {
-        struct pollfd pollfd;
-        int timeout;
-
-        pollfd.fd = s->sock_fd;
-        pollfd.events = writing ? POLLOUT : POLLIN;
-
-        /* s->sock_timeout is in seconds, timeout in ms */
-        timeout = (int)(s->sock_timeout * 1000 + 0.5);
-        n = poll(&pollfd, 1, timeout);
-    }
-#else
-    {
-        /* Construct the arguments to select */
-        fd_set fds;
-        struct timeval tv;
-        tv.tv_sec = (int)s->sock_timeout;
-        tv.tv_usec = (int)((s->sock_timeout - tv.tv_sec) * 1e6);
-        FD_ZERO(&fds);
-        FD_SET(s->sock_fd, &fds);
-
-        /* See if the socket is ready */
-        if (writing)
-            n = select(s->sock_fd+1, NULL, &fds, NULL, &tv);
-        else
-            n = select(s->sock_fd+1, &fds, NULL, NULL, &tv);
-    }
-#endif
-
-    if (n < 0)
-        return -1;
-    if (n == 0)
-        return 1;
-    return 0;
-}
-
-/* Initialize a new socket object. */
-
-static double defaulttimeout = -1.0; /* Default timeout for new sockets */
-
-PyMODINIT_FUNC
-init_sockobject(PySocketSockObject *s,
-                SOCKET_T fd, int family, int type, int proto)
-{
-#ifdef RISCOS
-    int block = 1;
-#endif
-    s->sock_fd = fd;
-    s->sock_family = family;
-    s->sock_type = type;
-    s->sock_proto = proto;
-    s->sock_timeout = defaulttimeout;
-
-    s->errorhandler = &set_error;
-
-    if (defaulttimeout >= 0.0)
-        internal_setblocking(s, 0);
-
-#ifdef RISCOS
-    if (taskwindow)
-        socketioctl(s->sock_fd, 0x80046679, (u_long*)&block);
-#endif
-}
-
-
-/* Create a new socket object.
-   This just creates the object and initializes it.
-   If the creation fails, return NULL and set an exception (implicit
-   in NEWOBJ()). */
-
-static PySocketSockObject *
-new_sockobject(SOCKET_T fd, int family, int type, int proto)
-{
-    PySocketSockObject *s;
-    s = (PySocketSockObject *)
-        PyType_GenericNew(&sock_type, NULL, NULL);
-    if (s != NULL)
-        init_sockobject(s, fd, family, type, proto);
-    return s;
-}
-
-
-/* Lock to allow python interpreter to continue, but only allow one
-   thread to be in gethostbyname or getaddrinfo */
-#if defined(USE_GETHOSTBYNAME_LOCK) || defined(USE_GETADDRINFO_LOCK)
-PyThread_type_lock netdb_lock;
-#endif
-
-
-/* Convert a string specifying a host name or one of a few symbolic
-   names to a numeric IP address.  This usually calls gethostbyname()
-   to do the work; the names "" and "<broadcast>" are special.
-   Return the length (IPv4 should be 4 bytes), or negative if
-   an error occurred; then an exception is raised. */
-
-static int
-setipaddr(char *name, struct sockaddr *addr_ret, size_t addr_ret_size, int af)
-{
-    struct addrinfo hints, *res;
-    int error;
-    int d1, d2, d3, d4;
-    char ch;
-
-    memset((void *) addr_ret, '\0', sizeof(*addr_ret));
-    if (name[0] == '\0') {
-        int siz;
-        memset(&hints, 0, sizeof(hints));
-        hints.ai_family = af;
-        hints.ai_socktype = SOCK_DGRAM;         /*dummy*/
-        hints.ai_flags = AI_PASSIVE;
-        Py_BEGIN_ALLOW_THREADS
-        ACQUIRE_GETADDRINFO_LOCK
-        error = getaddrinfo(NULL, "0", &hints, &res);
-        Py_END_ALLOW_THREADS
-        /* We assume that those thread-unsafe getaddrinfo() versions
-           *are* safe regarding their return value, ie. that a
-           subsequent call to getaddrinfo() does not destroy the
-           outcome of the first call. */
-        RELEASE_GETADDRINFO_LOCK
-        if (error) {
-            set_gaierror(error);
-            return -1;
-        }
-        switch (res->ai_family) {
-        case AF_INET:
-            siz = 4;
-            break;
-#ifdef ENABLE_IPV6
-        case AF_INET6:
-            siz = 16;
-            break;
-#endif
-        default:
-            freeaddrinfo(res);
-            PyErr_SetString(socket_error,
-                "unsupported address family");
-            return -1;
-        }
-        if (res->ai_next) {
-            freeaddrinfo(res);
-            PyErr_SetString(socket_error,
-                "wildcard resolved to multiple address");
-            return -1;
-        }
-        if (res->ai_addrlen < addr_ret_size)
-            addr_ret_size = res->ai_addrlen;
-        memcpy(addr_ret, res->ai_addr, addr_ret_size);
-        freeaddrinfo(res);
-        return siz;
-    }
-    if (name[0] == '<' && strcmp(name, "<broadcast>") == 0) {
-        struct sockaddr_in *sin;
-        if (af != AF_INET && af != AF_UNSPEC) {
-            PyErr_SetString(socket_error,
-                "address family mismatched");
-            return -1;
-        }
-        sin = (struct sockaddr_in *)addr_ret;
-        memset((void *) sin, '\0', sizeof(*sin));
-        sin->sin_family = AF_INET;
-#ifdef HAVE_SOCKADDR_SA_LEN
-        sin->sin_len = sizeof(*sin);
-#endif
-        sin->sin_addr.s_addr = INADDR_BROADCAST;
-        return sizeof(sin->sin_addr);
-    }
-    if (sscanf(name, "%d.%d.%d.%d%c", &d1, &d2, &d3, &d4, &ch) == 4 &&
-        0 <= d1 && d1 <= 255 && 0 <= d2 && d2 <= 255 &&
-        0 <= d3 && d3 <= 255 && 0 <= d4 && d4 <= 255) {
-        struct sockaddr_in *sin;
-        sin = (struct sockaddr_in *)addr_ret;
-        sin->sin_addr.s_addr = htonl(
-            ((long) d1 << 24) | ((long) d2 << 16) |
-            ((long) d3 << 8) | ((long) d4 << 0));
-        sin->sin_family = AF_INET;
-#ifdef HAVE_SOCKADDR_SA_LEN
-        sin->sin_len = sizeof(*sin);
-#endif
-        return 4;
-    }
-    memset(&hints, 0, sizeof(hints));
-    hints.ai_family = af;
-    Py_BEGIN_ALLOW_THREADS
-    ACQUIRE_GETADDRINFO_LOCK
-    error = getaddrinfo(name, NULL, &hints, &res);
-#if defined(__digital__) && defined(__unix__)
-    if (error == EAI_NONAME && af == AF_UNSPEC) {
-        /* On Tru64 V5.1, numeric-to-addr conversion fails
-           if no address family is given. Assume IPv4 for now.*/
-        hints.ai_family = AF_INET;
-        error = getaddrinfo(name, NULL, &hints, &res);
-    }
-#endif
-    Py_END_ALLOW_THREADS
-    RELEASE_GETADDRINFO_LOCK  /* see comment in setipaddr() */
-    if (error) {
-        set_gaierror(error);
-        return -1;
-    }
-    if (res->ai_addrlen < addr_ret_size)
-        addr_ret_size = res->ai_addrlen;
-    memcpy((char *) addr_ret, res->ai_addr, addr_ret_size);
-    freeaddrinfo(res);
-    switch (addr_ret->sa_family) {
-    case AF_INET:
-        return 4;
-#ifdef ENABLE_IPV6
-    case AF_INET6:
-        return 16;
-#endif
-    default:
-        PyErr_SetString(socket_error, "unknown address family");
-        return -1;
-    }
-}
-
-
-/* Create a string object representing an IP address.
-   This is always a string of the form 'dd.dd.dd.dd' (with variable
-   size numbers). */
-
-static PyObject *
-makeipaddr(struct sockaddr *addr, int addrlen)
-{
-    char buf[NI_MAXHOST];
-    int error;
-
-    error = getnameinfo(addr, addrlen, buf, sizeof(buf), NULL, 0,
-        NI_NUMERICHOST);
-    if (error) {
-        set_gaierror(error);
-        return NULL;
-    }
-    return PyString_FromString(buf);
-}
-
-
-#ifdef USE_BLUETOOTH
-/* Convert a string representation of a Bluetooth address into a numeric
-   address.  Returns the length (6), or raises an exception and returns -1 if
-   an error occurred. */
-
-static int
-setbdaddr(char *name, bdaddr_t *bdaddr)
-{
-    unsigned int b0, b1, b2, b3, b4, b5;
-    char ch;
-    int n;
-
-    n = sscanf(name, "%X:%X:%X:%X:%X:%X%c",
-               &b5, &b4, &b3, &b2, &b1, &b0, &ch);
-    if (n == 6 && (b0 | b1 | b2 | b3 | b4 | b5) < 256) {
-        bdaddr->b[0] = b0;
-        bdaddr->b[1] = b1;
-        bdaddr->b[2] = b2;
-        bdaddr->b[3] = b3;
-        bdaddr->b[4] = b4;
-        bdaddr->b[5] = b5;
-        return 6;
-    } else {
-        PyErr_SetString(socket_error, "bad bluetooth address");
-        return -1;
-    }
-}
-
-/* Create a string representation of the Bluetooth address.  This is always a
-   string of the form 'XX:XX:XX:XX:XX:XX' where XX is a two digit hexadecimal
-   value (zero padded if necessary). */
-
-static PyObject *
-makebdaddr(bdaddr_t *bdaddr)
-{
-    char buf[(6 * 2) + 5 + 1];
-
-    sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X",
-        bdaddr->b[5], bdaddr->b[4], bdaddr->b[3],
-        bdaddr->b[2], bdaddr->b[1], bdaddr->b[0]);
-    return PyString_FromString(buf);
-}
-#endif
-
-
-/* Create an object representing the given socket address,
-   suitable for passing it back to bind(), connect() etc.
-   The family field of the sockaddr structure is inspected
-   to determine what kind of address it really is. */
-
-/*ARGSUSED*/
-static PyObject *
-makesockaddr(int sockfd, struct sockaddr *addr, int addrlen, int proto)
-{
-    if (addrlen == 0) {
-        /* No address -- may be recvfrom() from known socket */
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-
-#ifdef __BEOS__
-    /* XXX: BeOS version of accept() doesn't set family correctly */
-    addr->sa_family = AF_INET;
-#endif
-
-    switch (addr->sa_family) {
-
-    case AF_INET:
-    {
-        struct sockaddr_in *a;
-        PyObject *addrobj = makeipaddr(addr, sizeof(*a));
-        PyObject *ret = NULL;
-        if (addrobj) {
-            a = (struct sockaddr_in *)addr;
-            ret = Py_BuildValue("Oi", addrobj, ntohs(a->sin_port));
-            Py_DECREF(addrobj);
-        }
-        return ret;
-    }
-
-#if defined(AF_UNIX)
-    case AF_UNIX:
-    {
-        struct sockaddr_un *a = (struct sockaddr_un *) addr;
-#ifdef linux
-        if (a->sun_path[0] == 0) {  /* Linux abstract namespace */
-            addrlen -= offsetof(struct sockaddr_un, sun_path);
-            return PyString_FromStringAndSize(a->sun_path,
-                                              addrlen);
-        }
-        else
-#endif /* linux */
-        {
-            /* regular NULL-terminated string */
-            return PyString_FromString(a->sun_path);
-        }
-    }
-#endif /* AF_UNIX */
-
-#if defined(AF_NETLINK)
-       case AF_NETLINK:
-       {
-           struct sockaddr_nl *a = (struct sockaddr_nl *) addr;
-           return Py_BuildValue("II", a->nl_pid, a->nl_groups);
-       }
-#endif /* AF_NETLINK */
-
-#ifdef ENABLE_IPV6
-    case AF_INET6:
-    {
-        struct sockaddr_in6 *a;
-        PyObject *addrobj = makeipaddr(addr, sizeof(*a));
-        PyObject *ret = NULL;
-        if (addrobj) {
-            a = (struct sockaddr_in6 *)addr;
-            ret = Py_BuildValue("Oiii",
-                                addrobj,
-                                ntohs(a->sin6_port),
-                                a->sin6_flowinfo,
-                                a->sin6_scope_id);
-            Py_DECREF(addrobj);
-        }
-        return ret;
-    }
-#endif
-
-#ifdef USE_BLUETOOTH
-    case AF_BLUETOOTH:
-        switch (proto) {
-
-        case BTPROTO_L2CAP:
-        {
-            struct sockaddr_l2 *a = (struct sockaddr_l2 *) addr;
-            PyObject *addrobj = makebdaddr(&_BT_L2_MEMB(a, bdaddr));
-            PyObject *ret = NULL;
-            if (addrobj) {
-                ret = Py_BuildValue("Oi",
-                                    addrobj,
-                                    _BT_L2_MEMB(a, psm));
-                Py_DECREF(addrobj);
-            }
-            return ret;
-        }
-
-        case BTPROTO_RFCOMM:
-        {
-            struct sockaddr_rc *a = (struct sockaddr_rc *) addr;
-            PyObject *addrobj = makebdaddr(&_BT_RC_MEMB(a, bdaddr));
-            PyObject *ret = NULL;
-            if (addrobj) {
-                ret = Py_BuildValue("Oi",
-                                    addrobj,
-                                    _BT_RC_MEMB(a, channel));
-                Py_DECREF(addrobj);
-            }
-            return ret;
-        }
-
-        case BTPROTO_HCI:
-        {
-            struct sockaddr_hci *a = (struct sockaddr_hci *) addr;
-#if defined(__NetBSD__) || defined(__DragonFly__)
-            return makebdaddr(&_BT_HCI_MEMB(a, bdaddr));
-#else
-            PyObject *ret = NULL;
-            ret = Py_BuildValue("i", _BT_HCI_MEMB(a, dev));
-            return ret;
-#endif
-        }
-
-#if !defined(__FreeBSD__)
-        case BTPROTO_SCO:
-        {
-            struct sockaddr_sco *a = (struct sockaddr_sco *) addr;
-            return makebdaddr(&_BT_SCO_MEMB(a, bdaddr));
-        }
-#endif
-
-        default:
-            PyErr_SetString(PyExc_ValueError,
-                            "Unknown Bluetooth protocol");
-            return NULL;
-        }
-#endif
-
-#if defined(HAVE_NETPACKET_PACKET_H) && defined(SIOCGIFNAME)
-    case AF_PACKET:
-    {
-        struct sockaddr_ll *a = (struct sockaddr_ll *)addr;
-        char *ifname = "";
-        struct ifreq ifr;
-        /* need to look up interface name give index */
-        if (a->sll_ifindex) {
-            ifr.ifr_ifindex = a->sll_ifindex;
-            if (ioctl(sockfd, SIOCGIFNAME, &ifr) == 0)
-                ifname = ifr.ifr_name;
-        }
-        return Py_BuildValue("shbhs#",
-                             ifname,
-                             ntohs(a->sll_protocol),
-                             a->sll_pkttype,
-                             a->sll_hatype,
-                             a->sll_addr,
-                             a->sll_halen);
-    }
-#endif
-
-#ifdef HAVE_LINUX_TIPC_H
-    case AF_TIPC:
-    {
-        struct sockaddr_tipc *a = (struct sockaddr_tipc *) addr;
-        if (a->addrtype == TIPC_ADDR_NAMESEQ) {
-            return Py_BuildValue("IIIII",
-                            a->addrtype,
-                            a->addr.nameseq.type,
-                            a->addr.nameseq.lower,
-                            a->addr.nameseq.upper,
-                            a->scope);
-        } else if (a->addrtype == TIPC_ADDR_NAME) {
-            return Py_BuildValue("IIIII",
-                            a->addrtype,
-                            a->addr.name.name.type,
-                            a->addr.name.name.instance,
-                            a->addr.name.name.instance,
-                            a->scope);
-        } else if (a->addrtype == TIPC_ADDR_ID) {
-            return Py_BuildValue("IIIII",
-                            a->addrtype,
-                            a->addr.id.node,
-                            a->addr.id.ref,
-                            0,
-                            a->scope);
-        } else {
-            PyErr_SetString(PyExc_ValueError,
-                            "Invalid address type");
-            return NULL;
-        }
-    }
-#endif
-
-    /* More cases here... */
-
-    default:
-        /* If we don't know the address family, don't raise an
-           exception -- return it as a tuple. */
-        return Py_BuildValue("is#",
-                             addr->sa_family,
-                             addr->sa_data,
-                             sizeof(addr->sa_data));
-
-    }
-}
-
-
-/* Parse a socket address argument according to the socket object's
-   address family.  Return 1 if the address was in the proper format,
-   0 of not.  The address is returned through addr_ret, its length
-   through len_ret. */
-
-static int
-getsockaddrarg(PySocketSockObject *s, PyObject *args,
-               struct sockaddr *addr_ret, int *len_ret)
-{
-    switch (s->sock_family) {
-
-#if defined(AF_UNIX)
-    case AF_UNIX:
-    {
-        struct sockaddr_un* addr;
-        char *path;
-        int len;
-        if (!PyArg_Parse(args, "t#", &path, &len))
-            return 0;
-
-        addr = (struct sockaddr_un*)addr_ret;
-#ifdef linux
-        if (len > 0 && path[0] == 0) {
-            /* Linux abstract namespace extension */
-            if (len > sizeof addr->sun_path) {
-                PyErr_SetString(socket_error,
-                                "AF_UNIX path too long");
-                return 0;
-            }
-        }
-        else
-#endif /* linux */
-        {
-            /* regular NULL-terminated string */
-            if (len >= sizeof addr->sun_path) {
-                PyErr_SetString(socket_error,
-                                "AF_UNIX path too long");
-                return 0;
-            }
-            addr->sun_path[len] = 0;
-        }
-        addr->sun_family = s->sock_family;
-        memcpy(addr->sun_path, path, len);
-#if defined(PYOS_OS2)
-        *len_ret = sizeof(*addr);
-#else
-        *len_ret = len + offsetof(struct sockaddr_un, sun_path);
-#endif
-        return 1;
-    }
-#endif /* AF_UNIX */
-
-#if defined(AF_NETLINK)
-    case AF_NETLINK:
-    {
-        struct sockaddr_nl* addr;
-        int pid, groups;
-        addr = (struct sockaddr_nl *)addr_ret;
-        if (!PyTuple_Check(args)) {
-            PyErr_Format(
-                PyExc_TypeError,
-                "getsockaddrarg: "
-                "AF_NETLINK address must be tuple, not %.500s",
-                Py_TYPE(args)->tp_name);
-            return 0;
-        }
-        if (!PyArg_ParseTuple(args, "II:getsockaddrarg", &pid, &groups))
-            return 0;
-        addr->nl_family = AF_NETLINK;
-        addr->nl_pid = pid;
-        addr->nl_groups = groups;
-        *len_ret = sizeof(*addr);
-        return 1;
-    }
-#endif
-
-    case AF_INET:
-    {
-        struct sockaddr_in* addr;
-        char *host;
-        int port, result;
-        if (!PyTuple_Check(args)) {
-            PyErr_Format(
-                PyExc_TypeError,
-                "getsockaddrarg: "
-                "AF_INET address must be tuple, not %.500s",
-                Py_TYPE(args)->tp_name);
-            return 0;
-        }
-        if (!PyArg_ParseTuple(args, "eti:getsockaddrarg",
-                              "idna", &host, &port))
-            return 0;
-        addr=(struct sockaddr_in*)addr_ret;
-        result = setipaddr(host, (struct sockaddr *)addr,
-                           sizeof(*addr),  AF_INET);
-        PyMem_Free(host);
-        if (result < 0)
-            return 0;
-        if (port < 0 || port > 0xffff) {
-            PyErr_SetString(
-                PyExc_OverflowError,
-                "getsockaddrarg: port must be 0-65535.");
-            return 0;
-        }
-        addr->sin_family = AF_INET;
-        addr->sin_port = htons((short)port);
-        *len_ret = sizeof *addr;
-        return 1;
-    }
-
-#ifdef ENABLE_IPV6
-    case AF_INET6:
-    {
-        struct sockaddr_in6* addr;
-        char *host;
-        int port, flowinfo, scope_id, result;
-        flowinfo = scope_id = 0;
-        if (!PyTuple_Check(args)) {
-            PyErr_Format(
-                PyExc_TypeError,
-                "getsockaddrarg: "
-                "AF_INET6 address must be tuple, not %.500s",
-                Py_TYPE(args)->tp_name);
-            return 0;
-        }
-        if (!PyArg_ParseTuple(args, "eti|ii",
-                              "idna", &host, &port, &flowinfo,
-                              &scope_id)) {
-            return 0;
-        }
-        addr = (struct sockaddr_in6*)addr_ret;
-        result = setipaddr(host, (struct sockaddr *)addr,
-                           sizeof(*addr), AF_INET6);
-        PyMem_Free(host);
-        if (result < 0)
-            return 0;
-        if (port < 0 || port > 0xffff) {
-            PyErr_SetString(
-                PyExc_OverflowError,
-                "getsockaddrarg: port must be 0-65535.");
-            return 0;
-        }
-        addr->sin6_family = s->sock_family;
-        addr->sin6_port = htons((short)port);
-        addr->sin6_flowinfo = flowinfo;
-        addr->sin6_scope_id = scope_id;
-        *len_ret = sizeof *addr;
-        return 1;
-    }
-#endif
-
-#ifdef USE_BLUETOOTH
-    case AF_BLUETOOTH:
-    {
-        switch (s->sock_proto) {
-        case BTPROTO_L2CAP:
-        {
-            struct sockaddr_l2 *addr;
-            char *straddr;
-
-            addr = (struct sockaddr_l2 *)addr_ret;
-            memset(addr, 0, sizeof(struct sockaddr_l2));
-            _BT_L2_MEMB(addr, family) = AF_BLUETOOTH;
-            if (!PyArg_ParseTuple(args, "si", &straddr,
-                                  &_BT_L2_MEMB(addr, psm))) {
-                PyErr_SetString(socket_error, "getsockaddrarg: "
-                                "wrong format");
-                return 0;
-            }
-            if (setbdaddr(straddr, &_BT_L2_MEMB(addr, bdaddr)) < 0)
-                return 0;
-
-            *len_ret = sizeof *addr;
-            return 1;
-        }
-        case BTPROTO_RFCOMM:
-        {
-            struct sockaddr_rc *addr;
-            char *straddr;
-
-            addr = (struct sockaddr_rc *)addr_ret;
-            _BT_RC_MEMB(addr, family) = AF_BLUETOOTH;
-            if (!PyArg_ParseTuple(args, "si", &straddr,
-                                  &_BT_RC_MEMB(addr, channel))) {
-                PyErr_SetString(socket_error, "getsockaddrarg: "
-                                "wrong format");
-                return 0;
-            }
-            if (setbdaddr(straddr, &_BT_RC_MEMB(addr, bdaddr)) < 0)
-                return 0;
-
-            *len_ret = sizeof *addr;
-            return 1;
-        }
-        case BTPROTO_HCI:
-        {
-            struct sockaddr_hci *addr = (struct sockaddr_hci *)addr_ret;
-#if defined(__NetBSD__) || defined(__DragonFly__)
-			char *straddr = PyBytes_AS_STRING(args);
-
-			_BT_HCI_MEMB(addr, family) = AF_BLUETOOTH;
-            if (straddr == NULL) {
-                PyErr_SetString(socket_error, "getsockaddrarg: "
-                    "wrong format");
-                return 0;
-            }
-            if (setbdaddr(straddr, &_BT_HCI_MEMB(addr, bdaddr)) < 0)
-                return 0;
-#else
-            _BT_HCI_MEMB(addr, family) = AF_BLUETOOTH;
-            if (!PyArg_ParseTuple(args, "i", &_BT_HCI_MEMB(addr, dev))) {
-                PyErr_SetString(socket_error, "getsockaddrarg: "
-                                "wrong format");
-                return 0;
-            }
-#endif
-            *len_ret = sizeof *addr;
-            return 1;
-        }
-#if !defined(__FreeBSD__)
-        case BTPROTO_SCO:
-        {
-            struct sockaddr_sco *addr;
-            char *straddr;
-
-            addr = (struct sockaddr_sco *)addr_ret;
-            _BT_SCO_MEMB(addr, family) = AF_BLUETOOTH;
-            straddr = PyString_AsString(args);
-            if (straddr == NULL) {
-                PyErr_SetString(socket_error, "getsockaddrarg: "
-                                "wrong format");
-                return 0;
-            }
-            if (setbdaddr(straddr, &_BT_SCO_MEMB(addr, bdaddr)) < 0)
-                return 0;
-
-            *len_ret = sizeof *addr;
-            return 1;
-        }
-#endif
-        default:
-            PyErr_SetString(socket_error, "getsockaddrarg: unknown Bluetooth protocol");
-            return 0;
-        }
-    }
-#endif
-
-#if defined(HAVE_NETPACKET_PACKET_H) && defined(SIOCGIFINDEX)
-    case AF_PACKET:
-    {
-        struct sockaddr_ll* addr;
-        struct ifreq ifr;
-        char *interfaceName;
-        int protoNumber;
-        int hatype = 0;
-        int pkttype = 0;
-        char *haddr = NULL;
-        unsigned int halen = 0;
-
-        if (!PyTuple_Check(args)) {
-            PyErr_Format(
-                PyExc_TypeError,
-                "getsockaddrarg: "
-                "AF_PACKET address must be tuple, not %.500s",
-                Py_TYPE(args)->tp_name);
-            return 0;
-        }
-        if (!PyArg_ParseTuple(args, "si|iis#", &interfaceName,
-                              &protoNumber, &pkttype, &hatype,
-                              &haddr, &halen))
-            return 0;
-        strncpy(ifr.ifr_name, interfaceName, sizeof(ifr.ifr_name));
-        ifr.ifr_name[(sizeof(ifr.ifr_name))-1] = '\0';
-        if (ioctl(s->sock_fd, SIOCGIFINDEX, &ifr) < 0) {
-            s->errorhandler();
-            return 0;
-        }
-        if (halen > 8) {
-          PyErr_SetString(PyExc_ValueError,
-                          "Hardware address must be 8 bytes or less");
-          return 0;
-        }
-        if (protoNumber < 0 || protoNumber > 0xffff) {
-            PyErr_SetString(
-                PyExc_OverflowError,
-                "getsockaddrarg: protoNumber must be 0-65535.");
-            return 0;
-        }
-        addr = (struct sockaddr_ll*)addr_ret;
-        addr->sll_family = AF_PACKET;
-        addr->sll_protocol = htons((short)protoNumber);
-        addr->sll_ifindex = ifr.ifr_ifindex;
-        addr->sll_pkttype = pkttype;
-        addr->sll_hatype = hatype;
-        if (halen != 0) {
-          memcpy(&addr->sll_addr, haddr, halen);
-        }
-        addr->sll_halen = halen;
-        *len_ret = sizeof *addr;
-        return 1;
-    }
-#endif
-
-#ifdef HAVE_LINUX_TIPC_H
-    case AF_TIPC:
-    {
-        unsigned int atype, v1, v2, v3;
-        unsigned int scope = TIPC_CLUSTER_SCOPE;
-        struct sockaddr_tipc *addr;
-
-        if (!PyTuple_Check(args)) {
-            PyErr_Format(
-                PyExc_TypeError,
-                "getsockaddrarg: "
-                "AF_TIPC address must be tuple, not %.500s",
-                Py_TYPE(args)->tp_name);
-            return 0;
-        }
-
-        if (!PyArg_ParseTuple(args,
-                                "IIII|I;Invalid TIPC address format",
-                                &atype, &v1, &v2, &v3, &scope))
-            return 0;
-
-        addr = (struct sockaddr_tipc *) addr_ret;
-        memset(addr, 0, sizeof(struct sockaddr_tipc));
-
-        addr->family = AF_TIPC;
-        addr->scope = scope;
-        addr->addrtype = atype;
-
-        if (atype == TIPC_ADDR_NAMESEQ) {
-            addr->addr.nameseq.type = v1;
-            addr->addr.nameseq.lower = v2;
-            addr->addr.nameseq.upper = v3;
-        } else if (atype == TIPC_ADDR_NAME) {
-            addr->addr.name.name.type = v1;
-            addr->addr.name.name.instance = v2;
-        } else if (atype == TIPC_ADDR_ID) {
-            addr->addr.id.node = v1;
-            addr->addr.id.ref = v2;
-        } else {
-            /* Shouldn't happen */
-            PyErr_SetString(PyExc_TypeError, "Invalid address type");
-            return 0;
-        }
-
-        *len_ret = sizeof(*addr);
-
-        return 1;
-    }
-#endif
-
-    /* More cases here... */
-
-    default:
-        PyErr_SetString(socket_error, "getsockaddrarg: bad family");
-        return 0;
-
-    }
-}
-
-
-/* Get the address length according to the socket object's address family.
-   Return 1 if the family is known, 0 otherwise.  The length is returned
-   through len_ret. */
-
-static int
-getsockaddrlen(PySocketSockObject *s, socklen_t *len_ret)
-{
-    switch (s->sock_family) {
-
-#if defined(AF_UNIX)
-    case AF_UNIX:
-    {
-        *len_ret = sizeof (struct sockaddr_un);
-        return 1;
-    }
-#endif /* AF_UNIX */
-#if defined(AF_NETLINK)
-       case AF_NETLINK:
-       {
-           *len_ret = sizeof (struct sockaddr_nl);
-           return 1;
-       }
-#endif
-
-    case AF_INET:
-    {
-        *len_ret = sizeof (struct sockaddr_in);
-        return 1;
-    }
-
-#ifdef ENABLE_IPV6
-    case AF_INET6:
-    {
-        *len_ret = sizeof (struct sockaddr_in6);
-        return 1;
-    }
-#endif
-
-#ifdef USE_BLUETOOTH
-    case AF_BLUETOOTH:
-    {
-        switch(s->sock_proto)
-        {
-
-        case BTPROTO_L2CAP:
-            *len_ret = sizeof (struct sockaddr_l2);
-            return 1;
-        case BTPROTO_RFCOMM:
-            *len_ret = sizeof (struct sockaddr_rc);
-            return 1;
-        case BTPROTO_HCI:
-            *len_ret = sizeof (struct sockaddr_hci);
-            return 1;
-#if !defined(__FreeBSD__)
-        case BTPROTO_SCO:
-            *len_ret = sizeof (struct sockaddr_sco);
-            return 1;
-#endif
-        default:
-            PyErr_SetString(socket_error, "getsockaddrlen: "
-                            "unknown BT protocol");
-            return 0;
-
-        }
-    }
-#endif
-
-#ifdef HAVE_NETPACKET_PACKET_H
-    case AF_PACKET:
-    {
-        *len_ret = sizeof (struct sockaddr_ll);
-        return 1;
-    }
-#endif
-
-#ifdef HAVE_LINUX_TIPC_H
-    case AF_TIPC:
-    {
-        *len_ret = sizeof (struct sockaddr_tipc);
-        return 1;
-    }
-#endif
-
-    /* More cases here... */
-
-    default:
-        PyErr_SetString(socket_error, "getsockaddrlen: bad family");
-        return 0;
-
-    }
-}
-
-
-/* s.accept() method */
-
-static PyObject *
-sock_accept(PySocketSockObject *s)
-{
-    sock_addr_t addrbuf;
-    SOCKET_T newfd;
-    socklen_t addrlen;
-    PyObject *sock = NULL;
-    PyObject *addr = NULL;
-    PyObject *res = NULL;
-    int timeout;
-
-    if (!getsockaddrlen(s, &addrlen))
-        return NULL;
-    memset(&addrbuf, 0, addrlen);
-
-#ifdef MS_WINDOWS
-    newfd = INVALID_SOCKET;
-#else
-    newfd = -1;
-#endif
-
-    if (!IS_SELECTABLE(s))
-        return select_error();
-
-    Py_BEGIN_ALLOW_THREADS
-    timeout = internal_select(s, 0);
-    if (!timeout)
-        newfd = accept(s->sock_fd, SAS2SA(&addrbuf), &addrlen);
-    Py_END_ALLOW_THREADS
-
-    if (timeout == 1) {
-        PyErr_SetString(socket_timeout, "timed out");
-        return NULL;
-    }
-
-#ifdef MS_WINDOWS
-    if (newfd == INVALID_SOCKET)
-#else
-    if (newfd < 0)
-#endif
-        return s->errorhandler();
-
-    /* Create the new object with unspecified family,
-       to avoid calls to bind() etc. on it. */
-    sock = (PyObject *) new_sockobject(newfd,
-                                       s->sock_family,
-                                       s->sock_type,
-                                       s->sock_proto);
-
-    if (sock == NULL) {
-        SOCKETCLOSE(newfd);
-        goto finally;
-    }
-    addr = makesockaddr(s->sock_fd, SAS2SA(&addrbuf),
-                        addrlen, s->sock_proto);
-    if (addr == NULL)
-        goto finally;
-
-    res = PyTuple_Pack(2, sock, addr);
-
-finally:
-    Py_XDECREF(sock);
-    Py_XDECREF(addr);
-    return res;
-}
-
-PyDoc_STRVAR(accept_doc,
-"accept() -> (socket object, address info)\n\
-\n\
-Wait for an incoming connection.  Return a new socket representing the\n\
-connection, and the address of the client.  For IP sockets, the address\n\
-info is a pair (hostaddr, port).");
-
-/* s.setblocking(flag) method.  Argument:
-   False -- non-blocking mode; same as settimeout(0)
-   True -- blocking mode; same as settimeout(None)
-*/
-
-static PyObject *
-sock_setblocking(PySocketSockObject *s, PyObject *arg)
-{
-    int block;
-
-    block = PyInt_AsLong(arg);
-    if (block == -1 && PyErr_Occurred())
-        return NULL;
-
-    s->sock_timeout = block ? -1.0 : 0.0;
-    internal_setblocking(s, block);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(setblocking_doc,
-"setblocking(flag)\n\
-\n\
-Set the socket to blocking (flag is true) or non-blocking (false).\n\
-setblocking(True) is equivalent to settimeout(None);\n\
-setblocking(False) is equivalent to settimeout(0.0).");
-
-/* s.settimeout(timeout) method.  Argument:
-   None -- no timeout, blocking mode; same as setblocking(True)
-   0.0  -- non-blocking mode; same as setblocking(False)
-   > 0  -- timeout mode; operations time out after timeout seconds
-   < 0  -- illegal; raises an exception
-*/
-static PyObject *
-sock_settimeout(PySocketSockObject *s, PyObject *arg)
-{
-    double timeout;
-
-    if (arg == Py_None)
-        timeout = -1.0;
-    else {
-        timeout = PyFloat_AsDouble(arg);
-        if (timeout < 0.0) {
-            if (!PyErr_Occurred())
-                PyErr_SetString(PyExc_ValueError,
-                                "Timeout value out of range");
-            return NULL;
-        }
-    }
-
-    s->sock_timeout = timeout;
-    internal_setblocking(s, timeout < 0.0);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(settimeout_doc,
-"settimeout(timeout)\n\
-\n\
-Set a timeout on socket operations.  'timeout' can be a float,\n\
-giving in seconds, or None.  Setting a timeout of None disables\n\
-the timeout feature and is equivalent to setblocking(1).\n\
-Setting a timeout of zero is the same as setblocking(0).");
-
-/* s.gettimeout() method.
-   Returns the timeout associated with a socket. */
-static PyObject *
-sock_gettimeout(PySocketSockObject *s)
-{
-    if (s->sock_timeout < 0.0) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    else
-        return PyFloat_FromDouble(s->sock_timeout);
-}
-
-PyDoc_STRVAR(gettimeout_doc,
-"gettimeout() -> timeout\n\
-\n\
-Returns the timeout in floating seconds associated with socket \n\
-operations. A timeout of None indicates that timeouts on socket \n\
-operations are disabled.");
-
-#ifdef RISCOS
-/* s.sleeptaskw(1 | 0) method */
-
-static PyObject *
-sock_sleeptaskw(PySocketSockObject *s,PyObject *arg)
-{
-    int block;
-    block = PyInt_AsLong(arg);
-    if (block == -1 && PyErr_Occurred())
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    socketioctl(s->sock_fd, 0x80046679, (u_long*)&block);
-    Py_END_ALLOW_THREADS
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-PyDoc_STRVAR(sleeptaskw_doc,
-"sleeptaskw(flag)\n\
-\n\
-Allow sleeps in taskwindows.");
-#endif
-
-
-/* s.setsockopt() method.
-   With an integer third argument, sets an integer option.
-   With a string third argument, sets an option from a buffer;
-   use optional built-in module 'struct' to encode the string. */
-
-static PyObject *
-sock_setsockopt(PySocketSockObject *s, PyObject *args)
-{
-    int level;
-    int optname;
-    int res;
-    char *buf;
-    int buflen;
-    int flag;
-
-    if (PyArg_ParseTuple(args, "iii:setsockopt",
-                         &level, &optname, &flag)) {
-        buf = (char *) &flag;
-        buflen = sizeof flag;
-    }
-    else {
-        PyErr_Clear();
-        if (!PyArg_ParseTuple(args, "iis#:setsockopt",
-                              &level, &optname, &buf, &buflen))
-            return NULL;
-    }
-    res = setsockopt(s->sock_fd, level, optname, (void *)buf, buflen);
-    if (res < 0)
-        return s->errorhandler();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(setsockopt_doc,
-"setsockopt(level, option, value)\n\
-\n\
-Set a socket option.  See the Unix manual for level and option.\n\
-The value argument can either be an integer or a string.");
-
-
-/* s.getsockopt() method.
-   With two arguments, retrieves an integer option.
-   With a third integer argument, retrieves a string buffer of that size;
-   use optional built-in module 'struct' to decode the string. */
-
-static PyObject *
-sock_getsockopt(PySocketSockObject *s, PyObject *args)
-{
-    int level;
-    int optname;
-    int res;
-    PyObject *buf;
-    socklen_t buflen = 0;
-
-#ifdef __BEOS__
-    /* We have incomplete socket support. */
-    PyErr_SetString(socket_error, "getsockopt not supported");
-    return NULL;
-#else
-
-    if (!PyArg_ParseTuple(args, "ii|i:getsockopt",
-                          &level, &optname, &buflen))
-        return NULL;
-
-    if (buflen == 0) {
-        int flag = 0;
-        socklen_t flagsize = sizeof flag;
-        res = getsockopt(s->sock_fd, level, optname,
-                         (void *)&flag, &flagsize);
-        if (res < 0)
-            return s->errorhandler();
-        return PyInt_FromLong(flag);
-    }
-#ifdef __VMS
-    /* socklen_t is unsigned so no negative test is needed,
-       test buflen == 0 is previously done */
-    if (buflen > 1024) {
-#else
-    if (buflen <= 0 || buflen > 1024) {
-#endif
-        PyErr_SetString(socket_error,
-                        "getsockopt buflen out of range");
-        return NULL;
-    }
-    buf = PyString_FromStringAndSize((char *)NULL, buflen);
-    if (buf == NULL)
-        return NULL;
-    res = getsockopt(s->sock_fd, level, optname,
-                     (void *)PyString_AS_STRING(buf), &buflen);
-    if (res < 0) {
-        Py_DECREF(buf);
-        return s->errorhandler();
-    }
-    _PyString_Resize(&buf, buflen);
-    return buf;
-#endif /* __BEOS__ */
-}
-
-PyDoc_STRVAR(getsockopt_doc,
-"getsockopt(level, option[, buffersize]) -> value\n\
-\n\
-Get a socket option.  See the Unix manual for level and option.\n\
-If a nonzero buffersize argument is given, the return value is a\n\
-string of that length; otherwise it is an integer.");
-
-
-/* s.bind(sockaddr) method */
-
-static PyObject *
-sock_bind(PySocketSockObject *s, PyObject *addro)
-{
-    sock_addr_t addrbuf;
-    int addrlen;
-    int res;
-
-    if (!getsockaddrarg(s, addro, SAS2SA(&addrbuf), &addrlen))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = bind(s->sock_fd, SAS2SA(&addrbuf), addrlen);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return s->errorhandler();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(bind_doc,
-"bind(address)\n\
-\n\
-Bind the socket to a local address.  For IP sockets, the address is a\n\
-pair (host, port); the host must refer to the local host. For raw packet\n\
-sockets the address is a tuple (ifname, proto [,pkttype [,hatype]])");
-
-
-/* s.close() method.
-   Set the file descriptor to -1 so operations tried subsequently
-   will surely fail. */
-
-static PyObject *
-sock_close(PySocketSockObject *s)
-{
-    SOCKET_T fd;
-
-    if ((fd = s->sock_fd) != -1) {
-        s->sock_fd = -1;
-        Py_BEGIN_ALLOW_THREADS
-        (void) SOCKETCLOSE(fd);
-        Py_END_ALLOW_THREADS
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(close_doc,
-"close()\n\
-\n\
-Close the socket.  It cannot be used after this call.");
-
-static int
-internal_connect(PySocketSockObject *s, struct sockaddr *addr, int addrlen,
-                 int *timeoutp)
-{
-    int res, timeout;
-
-    timeout = 0;
-    res = connect(s->sock_fd, addr, addrlen);
-
-#ifdef MS_WINDOWS
-
-    if (s->sock_timeout > 0.0) {
-        if (res < 0 && WSAGetLastError() == WSAEWOULDBLOCK &&
-            IS_SELECTABLE(s)) {
-            /* This is a mess.  Best solution: trust select */
-            fd_set fds;
-            fd_set fds_exc;
-            struct timeval tv;
-            tv.tv_sec = (int)s->sock_timeout;
-            tv.tv_usec = (int)((s->sock_timeout - tv.tv_sec) * 1e6);
-            FD_ZERO(&fds);
-            FD_SET(s->sock_fd, &fds);
-            FD_ZERO(&fds_exc);
-            FD_SET(s->sock_fd, &fds_exc);
-            res = select(s->sock_fd+1, NULL, &fds, &fds_exc, &tv);
-            if (res == 0) {
-                res = WSAEWOULDBLOCK;
-                timeout = 1;
-            } else if (res > 0) {
-                if (FD_ISSET(s->sock_fd, &fds))
-                    /* The socket is in the writeable set - this
-                       means connected */
-                    res = 0;
-                else {
-                    /* As per MS docs, we need to call getsockopt()
-                       to get the underlying error */
-                    int res_size = sizeof res;
-                    /* It must be in the exception set */
-                    assert(FD_ISSET(s->sock_fd, &fds_exc));
-                    if (0 == getsockopt(s->sock_fd, SOL_SOCKET, SO_ERROR,
-                                        (char *)&res, &res_size))
-                        /* getsockopt also clears WSAGetLastError,
-                           so reset it back. */
-                        WSASetLastError(res);
-                    else
-                        res = WSAGetLastError();
-                }
-            }
-            /* else if (res < 0) an error occurred */
-        }
-    }
-
-    if (res < 0)
-        res = WSAGetLastError();
-
-#else
-
-    if (s->sock_timeout > 0.0) {
-        if (res < 0 && errno == EINPROGRESS && IS_SELECTABLE(s)) {
-            timeout = internal_select(s, 1);
-            if (timeout == 0) {
-                /* Bug #1019808: in case of an EINPROGRESS,
-                   use getsockopt(SO_ERROR) to get the real
-                   error. */
-                socklen_t res_size = sizeof res;
-                (void)getsockopt(s->sock_fd, SOL_SOCKET,
-                                 SO_ERROR, &res, &res_size);
-                if (res == EISCONN)
-                    res = 0;
-                errno = res;
-            }
-            else if (timeout == -1) {
-                res = errno;            /* had error */
-            }
-            else
-                res = EWOULDBLOCK;                      /* timed out */
-        }
-    }
-
-    if (res < 0)
-        res = errno;
-
-#endif
-    *timeoutp = timeout;
-
-    return res;
-}
-
-/* s.connect(sockaddr) method */
-
-static PyObject *
-sock_connect(PySocketSockObject *s, PyObject *addro)
-{
-    sock_addr_t addrbuf;
-    int addrlen;
-    int res;
-    int timeout;
-
-    if (!getsockaddrarg(s, addro, SAS2SA(&addrbuf), &addrlen))
-        return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    res = internal_connect(s, SAS2SA(&addrbuf), addrlen, &timeout);
-    Py_END_ALLOW_THREADS
-
-    if (timeout == 1) {
-        PyErr_SetString(socket_timeout, "timed out");
-        return NULL;
-    }
-    if (res != 0)
-        return s->errorhandler();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(connect_doc,
-"connect(address)\n\
-\n\
-Connect the socket to a remote address.  For IP sockets, the address\n\
-is a pair (host, port).");
-
-
-/* s.connect_ex(sockaddr) method */
-
-static PyObject *
-sock_connect_ex(PySocketSockObject *s, PyObject *addro)
-{
-    sock_addr_t addrbuf;
-    int addrlen;
-    int res;
-    int timeout;
-
-    if (!getsockaddrarg(s, addro, SAS2SA(&addrbuf), &addrlen))
-        return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    res = internal_connect(s, SAS2SA(&addrbuf), addrlen, &timeout);
-    Py_END_ALLOW_THREADS
-
-    /* Signals are not errors (though they may raise exceptions).  Adapted
-       from PyErr_SetFromErrnoWithFilenameObject(). */
-#ifdef EINTR
-    if (res == EINTR && PyErr_CheckSignals())
-        return NULL;
-#endif
-
-    return PyInt_FromLong((long) res);
-}
-
-PyDoc_STRVAR(connect_ex_doc,
-"connect_ex(address) -> errno\n\
-\n\
-This is like connect(address), but returns an error code (the errno value)\n\
-instead of raising an exception when an error occurs.");
-
-
-/* s.fileno() method */
-
-static PyObject *
-sock_fileno(PySocketSockObject *s)
-{
-#if SIZEOF_SOCKET_T <= SIZEOF_LONG
-    return PyInt_FromLong((long) s->sock_fd);
-#else
-    return PyLong_FromLongLong((PY_LONG_LONG)s->sock_fd);
-#endif
-}
-
-PyDoc_STRVAR(fileno_doc,
-"fileno() -> integer\n\
-\n\
-Return the integer file descriptor of the socket.");
-
-
-#ifndef NO_DUP
-/* s.dup() method */
-
-static PyObject *
-sock_dup(PySocketSockObject *s)
-{
-    SOCKET_T newfd;
-    PyObject *sock;
-
-    newfd = dup(s->sock_fd);
-    if (newfd < 0)
-        return s->errorhandler();
-    sock = (PyObject *) new_sockobject(newfd,
-                                       s->sock_family,
-                                       s->sock_type,
-                                       s->sock_proto);
-    if (sock == NULL)
-        SOCKETCLOSE(newfd);
-    return sock;
-}
-
-PyDoc_STRVAR(dup_doc,
-"dup() -> socket object\n\
-\n\
-Return a new socket object connected to the same system resource.");
-
-#endif
-
-
-/* s.getsockname() method */
-
-static PyObject *
-sock_getsockname(PySocketSockObject *s)
-{
-    sock_addr_t addrbuf;
-    int res;
-    socklen_t addrlen;
-
-    if (!getsockaddrlen(s, &addrlen))
-        return NULL;
-    memset(&addrbuf, 0, addrlen);
-    Py_BEGIN_ALLOW_THREADS
-    res = getsockname(s->sock_fd, SAS2SA(&addrbuf), &addrlen);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return s->errorhandler();
-    return makesockaddr(s->sock_fd, SAS2SA(&addrbuf), addrlen,
-                        s->sock_proto);
-}
-
-PyDoc_STRVAR(getsockname_doc,
-"getsockname() -> address info\n\
-\n\
-Return the address of the local endpoint.  For IP sockets, the address\n\
-info is a pair (hostaddr, port).");
-
-
-#ifdef HAVE_GETPEERNAME         /* Cray APP doesn't have this :-( */
-/* s.getpeername() method */
-
-static PyObject *
-sock_getpeername(PySocketSockObject *s)
-{
-    sock_addr_t addrbuf;
-    int res;
-    socklen_t addrlen;
-
-    if (!getsockaddrlen(s, &addrlen))
-        return NULL;
-    memset(&addrbuf, 0, addrlen);
-    Py_BEGIN_ALLOW_THREADS
-    res = getpeername(s->sock_fd, SAS2SA(&addrbuf), &addrlen);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return s->errorhandler();
-    return makesockaddr(s->sock_fd, SAS2SA(&addrbuf), addrlen,
-                        s->sock_proto);
-}
-
-PyDoc_STRVAR(getpeername_doc,
-"getpeername() -> address info\n\
-\n\
-Return the address of the remote endpoint.  For IP sockets, the address\n\
-info is a pair (hostaddr, port).");
-
-#endif /* HAVE_GETPEERNAME */
-
-
-/* s.listen(n) method */
-
-static PyObject *
-sock_listen(PySocketSockObject *s, PyObject *arg)
-{
-    int backlog;
-    int res;
-
-    backlog = PyInt_AsLong(arg);
-    if (backlog == -1 && PyErr_Occurred())
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    /* To avoid problems on systems that don't allow a negative backlog
-     * (which doesn't make sense anyway) we force a minimum value of 0. */
-    if (backlog < 0)
-        backlog = 0;
-    res = listen(s->sock_fd, backlog);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return s->errorhandler();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(listen_doc,
-"listen(backlog)\n\
-\n\
-Enable a server to accept connections.  The backlog argument must be at\n\
-least 0 (if it is lower, it is set to 0); it specifies the number of\n\
-unaccepted connections that the system will allow before refusing new\n\
-connections.");
-
-
-#ifndef NO_DUP
-/* s.makefile(mode) method.
-   Create a new open file object referring to a dupped version of
-   the socket's file descriptor.  (The dup() call is necessary so
-   that the open file and socket objects may be closed independent
-   of each other.)
-   The mode argument specifies 'r' or 'w' passed to fdopen(). */
-
-static PyObject *
-sock_makefile(PySocketSockObject *s, PyObject *args)
-{
-    extern int fclose(FILE *);
-    char *mode = "r";
-    int bufsize = -1;
-#ifdef MS_WIN32
-    Py_intptr_t fd;
-#else
-    int fd;
-#endif
-    FILE *fp;
-    PyObject *f;
-#ifdef __VMS
-    char *mode_r = "r";
-    char *mode_w = "w";
-#endif
-
-    if (!PyArg_ParseTuple(args, "|si:makefile", &mode, &bufsize))
-        return NULL;
-#ifdef __VMS
-    if (strcmp(mode,"rb") == 0) {
-        mode = mode_r;
-    }
-    else {
-        if (strcmp(mode,"wb") == 0) {
-            mode = mode_w;
-        }
-    }
-#endif
-#ifdef MS_WIN32
-    if (((fd = _open_osfhandle(s->sock_fd, _O_BINARY)) < 0) ||
-        ((fd = dup(fd)) < 0) || ((fp = fdopen(fd, mode)) == NULL))
-#else
-    if ((fd = dup(s->sock_fd)) < 0 || (fp = fdopen(fd, mode)) == NULL)
-#endif
-    {
-        if (fd >= 0)
-            SOCKETCLOSE(fd);
-        return s->errorhandler();
-    }
-    f = PyFile_FromFile(fp, "<socket>", mode, fclose);
-    if (f != NULL)
-        PyFile_SetBufSize(f, bufsize);
-    return f;
-}
-
-PyDoc_STRVAR(makefile_doc,
-"makefile([mode[, buffersize]]) -> file object\n\
-\n\
-Return a regular file object corresponding to the socket.\n\
-The mode and buffersize arguments are as for the built-in open() function.");
-
-#endif /* NO_DUP */
-
-/*
- * This is the guts of the recv() and recv_into() methods, which reads into a
- * char buffer.  If you have any inc/dec ref to do to the objects that contain
- * the buffer, do it in the caller.  This function returns the number of bytes
- * successfully read.  If there was an error, it returns -1.  Note that it is
- * also possible that we return a number of bytes smaller than the request
- * bytes.
- */
-static ssize_t
-sock_recv_guts(PySocketSockObject *s, char* cbuf, int len, int flags)
-{
-    ssize_t outlen = -1;
-    int timeout;
-#ifdef __VMS
-    int remaining;
-    char *read_buf;
-#endif
-
-    if (!IS_SELECTABLE(s)) {
-        select_error();
-        return -1;
-    }
-
-#ifndef __VMS
-    Py_BEGIN_ALLOW_THREADS
-    timeout = internal_select(s, 0);
-    if (!timeout)
-        outlen = recv(s->sock_fd, cbuf, len, flags);
-    Py_END_ALLOW_THREADS
-
-    if (timeout == 1) {
-        PyErr_SetString(socket_timeout, "timed out");
-        return -1;
-    }
-    if (outlen < 0) {
-        /* Note: the call to errorhandler() ALWAYS indirectly returned
-           NULL, so ignore its return value */
-        s->errorhandler();
-        return -1;
-    }
-#else
-    read_buf = cbuf;
-    remaining = len;
-    while (remaining != 0) {
-        unsigned int segment;
-        int nread = -1;
-
-        segment = remaining /SEGMENT_SIZE;
-        if (segment != 0) {
-            segment = SEGMENT_SIZE;
-        }
-        else {
-            segment = remaining;
-        }
-
-        Py_BEGIN_ALLOW_THREADS
-        timeout = internal_select(s, 0);
-        if (!timeout)
-            nread = recv(s->sock_fd, read_buf, segment, flags);
-        Py_END_ALLOW_THREADS
-
-        if (timeout == 1) {
-            PyErr_SetString(socket_timeout, "timed out");
-            return -1;
-        }
-        if (nread < 0) {
-            s->errorhandler();
-            return -1;
-        }
-        if (nread != remaining) {
-            read_buf += nread;
-            break;
-        }
-
-        remaining -= segment;
-        read_buf += segment;
-    }
-    outlen = read_buf - cbuf;
-#endif /* !__VMS */
-
-    return outlen;
-}
-
-
-/* s.recv(nbytes [,flags]) method */
-
-static PyObject *
-sock_recv(PySocketSockObject *s, PyObject *args)
-{
-    int recvlen, flags = 0;
-    ssize_t outlen;
-    PyObject *buf;
-
-    if (!PyArg_ParseTuple(args, "i|i:recv", &recvlen, &flags))
-        return NULL;
-
-    if (recvlen < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "negative buffersize in recv");
-        return NULL;
-    }
-
-    /* Allocate a new string. */
-    buf = PyString_FromStringAndSize((char *) 0, recvlen);
-    if (buf == NULL)
-        return NULL;
-
-    /* Call the guts */
-    outlen = sock_recv_guts(s, PyString_AS_STRING(buf), recvlen, flags);
-    if (outlen < 0) {
-        /* An error occurred, release the string and return an
-           error. */
-        Py_DECREF(buf);
-        return NULL;
-    }
-    if (outlen != recvlen) {
-        /* We did not read as many bytes as we anticipated, resize the
-           string if possible and be successful. */
-        if (_PyString_Resize(&buf, outlen) < 0)
-            /* Oopsy, not so successful after all. */
-            return NULL;
-    }
-
-    return buf;
-}
-
-PyDoc_STRVAR(recv_doc,
-"recv(buffersize[, flags]) -> data\n\
-\n\
-Receive up to buffersize bytes from the socket.  For the optional flags\n\
-argument, see the Unix manual.  When no data is available, block until\n\
-at least one byte is available or until the remote end is closed.  When\n\
-the remote end is closed and all data is read, return the empty string.");
-
-
-/* s.recv_into(buffer, [nbytes [,flags]]) method */
-
-static PyObject*
-sock_recv_into(PySocketSockObject *s, PyObject *args, PyObject *kwds)
-{
-    static char *kwlist[] = {"buffer", "nbytes", "flags", 0};
-
-    int recvlen = 0, flags = 0;
-    ssize_t readlen;
-    Py_buffer buf;
-    Py_ssize_t buflen;
-
-    /* Get the buffer's memory */
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "w*|ii:recv_into", kwlist,
-                                     &buf, &recvlen, &flags))
-        return NULL;
-    buflen = buf.len;
-    assert(buf.buf != 0 && buflen > 0);
-
-    if (recvlen < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "negative buffersize in recv_into");
-        goto error;
-    }
-    if (recvlen == 0) {
-        /* If nbytes was not specified, use the buffer's length */
-        recvlen = buflen;
-    }
-
-    /* Check if the buffer is large enough */
-    if (buflen < recvlen) {
-        PyErr_SetString(PyExc_ValueError,
-                        "buffer too small for requested bytes");
-        goto error;
-    }
-
-    /* Call the guts */
-    readlen = sock_recv_guts(s, buf.buf, recvlen, flags);
-    if (readlen < 0) {
-        /* Return an error. */
-        goto error;
-    }
-
-    PyBuffer_Release(&buf);
-    /* Return the number of bytes read.  Note that we do not do anything
-       special here in the case that readlen < recvlen. */
-    return PyInt_FromSsize_t(readlen);
-
-error:
-    PyBuffer_Release(&buf);
-    return NULL;
-}
-
-PyDoc_STRVAR(recv_into_doc,
-"recv_into(buffer, [nbytes[, flags]]) -> nbytes_read\n\
-\n\
-A version of recv() that stores its data into a buffer rather than creating \n\
-a new string.  Receive up to buffersize bytes from the socket.  If buffersize \n\
-is not specified (or 0), receive up to the size available in the given buffer.\n\
-\n\
-See recv() for documentation about the flags.");
-
-
-/*
- * This is the guts of the recvfrom() and recvfrom_into() methods, which reads
- * into a char buffer.  If you have any inc/def ref to do to the objects that
- * contain the buffer, do it in the caller.  This function returns the number
- * of bytes successfully read.  If there was an error, it returns -1.  Note
- * that it is also possible that we return a number of bytes smaller than the
- * request bytes.
- *
- * 'addr' is a return value for the address object.  Note that you must decref
- * it yourself.
- */
-static ssize_t
-sock_recvfrom_guts(PySocketSockObject *s, char* cbuf, int len, int flags,
-                   PyObject** addr)
-{
-    sock_addr_t addrbuf;
-    int timeout;
-    ssize_t n = -1;
-    socklen_t addrlen;
-
-    *addr = NULL;
-
-    if (!getsockaddrlen(s, &addrlen))
-        return -1;
-
-    if (!IS_SELECTABLE(s)) {
-        select_error();
-        return -1;
-    }
-
-    Py_BEGIN_ALLOW_THREADS
-    memset(&addrbuf, 0, addrlen);
-    timeout = internal_select(s, 0);
-    if (!timeout) {
-#ifndef MS_WINDOWS
-#if defined(PYOS_OS2) && !defined(PYCC_GCC)
-        n = recvfrom(s->sock_fd, cbuf, len, flags,
-                     SAS2SA(&addrbuf), &addrlen);
-#else
-        n = recvfrom(s->sock_fd, cbuf, len, flags,
-                     (void *) &addrbuf, &addrlen);
-#endif
-#else
-        n = recvfrom(s->sock_fd, cbuf, len, flags,
-                     SAS2SA(&addrbuf), &addrlen);
-#endif
-    }
-    Py_END_ALLOW_THREADS
-
-    if (timeout == 1) {
-        PyErr_SetString(socket_timeout, "timed out");
-        return -1;
-    }
-    if (n < 0) {
-        s->errorhandler();
-        return -1;
-    }
-
-    if (!(*addr = makesockaddr(s->sock_fd, SAS2SA(&addrbuf),
-                               addrlen, s->sock_proto)))
-        return -1;
-
-    return n;
-}
-
-/* s.recvfrom(nbytes [,flags]) method */
-
-static PyObject *
-sock_recvfrom(PySocketSockObject *s, PyObject *args)
-{
-    PyObject *buf = NULL;
-    PyObject *addr = NULL;
-    PyObject *ret = NULL;
-    int recvlen, flags = 0;
-    ssize_t outlen;
-
-    if (!PyArg_ParseTuple(args, "i|i:recvfrom", &recvlen, &flags))
-        return NULL;
-
-    if (recvlen < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "negative buffersize in recvfrom");
-        return NULL;
-    }
-
-    buf = PyString_FromStringAndSize((char *) 0, recvlen);
-    if (buf == NULL)
-        return NULL;
-
-    outlen = sock_recvfrom_guts(s, PyString_AS_STRING(buf),
-                                recvlen, flags, &addr);
-    if (outlen < 0) {
-        goto finally;
-    }
-
-    if (outlen != recvlen) {
-        /* We did not read as many bytes as we anticipated, resize the
-           string if possible and be successful. */
-        if (_PyString_Resize(&buf, outlen) < 0)
-            /* Oopsy, not so successful after all. */
-            goto finally;
-    }
-
-    ret = PyTuple_Pack(2, buf, addr);
-
-finally:
-    Py_XDECREF(buf);
-    Py_XDECREF(addr);
-    return ret;
-}
-
-PyDoc_STRVAR(recvfrom_doc,
-"recvfrom(buffersize[, flags]) -> (data, address info)\n\
-\n\
-Like recv(buffersize, flags) but also return the sender's address info.");
-
-
-/* s.recvfrom_into(buffer[, nbytes [,flags]]) method */
-
-static PyObject *
-sock_recvfrom_into(PySocketSockObject *s, PyObject *args, PyObject* kwds)
-{
-    static char *kwlist[] = {"buffer", "nbytes", "flags", 0};
-
-    int recvlen = 0, flags = 0;
-    ssize_t readlen;
-    Py_buffer buf;
-    int buflen;
-
-    PyObject *addr = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "w*|ii:recvfrom_into",
-                                     kwlist, &buf,
-                                     &recvlen, &flags))
-        return NULL;
-    buflen = buf.len;
-    assert(buf.buf != 0 && buflen > 0);
-
-    if (recvlen < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "negative buffersize in recvfrom_into");
-        goto error;
-    }
-    if (recvlen == 0) {
-        /* If nbytes was not specified, use the buffer's length */
-        recvlen = buflen;
-    }
-
-    readlen = sock_recvfrom_guts(s, buf.buf, recvlen, flags, &addr);
-    if (readlen < 0) {
-        /* Return an error */
-        goto error;
-    }
-
-    PyBuffer_Release(&buf);
-    /* Return the number of bytes read and the address.  Note that we do
-       not do anything special here in the case that readlen < recvlen. */
-    return Py_BuildValue("lN", readlen, addr);
-
-error:
-    Py_XDECREF(addr);
-    PyBuffer_Release(&buf);
-    return NULL;
-}
-
-PyDoc_STRVAR(recvfrom_into_doc,
-"recvfrom_into(buffer[, nbytes[, flags]]) -> (nbytes, address info)\n\
-\n\
-Like recv_into(buffer[, nbytes[, flags]]) but also return the sender's address info.");
-
-
-/* s.send(data [,flags]) method */
-
-static PyObject *
-sock_send(PySocketSockObject *s, PyObject *args)
-{
-    char *buf;
-    int len, n = -1, flags = 0, timeout;
-    Py_buffer pbuf;
-
-    if (!PyArg_ParseTuple(args, "s*|i:send", &pbuf, &flags))
-        return NULL;
-
-    if (!IS_SELECTABLE(s)) {
-        PyBuffer_Release(&pbuf);
-        return select_error();
-    }
-    buf = pbuf.buf;
-    len = pbuf.len;
-
-    Py_BEGIN_ALLOW_THREADS
-    timeout = internal_select(s, 1);
-    if (!timeout)
-#ifdef __VMS
-        n = sendsegmented(s->sock_fd, buf, len, flags);
-#else
-        n = send(s->sock_fd, buf, len, flags);
-#endif
-    Py_END_ALLOW_THREADS
-
-    PyBuffer_Release(&pbuf);
-
-    if (timeout == 1) {
-        PyErr_SetString(socket_timeout, "timed out");
-        return NULL;
-    }
-    if (n < 0)
-        return s->errorhandler();
-    return PyInt_FromLong((long)n);
-}
-
-PyDoc_STRVAR(send_doc,
-"send(data[, flags]) -> count\n\
-\n\
-Send a data string to the socket.  For the optional flags\n\
-argument, see the Unix manual.  Return the number of bytes\n\
-sent; this may be less than len(data) if the network is busy.");
-
-
-/* s.sendall(data [,flags]) method */
-
-static PyObject *
-sock_sendall(PySocketSockObject *s, PyObject *args)
-{
-    char *buf;
-    int len, n = -1, flags = 0, timeout, saved_errno;
-    Py_buffer pbuf;
-
-    if (!PyArg_ParseTuple(args, "s*|i:sendall", &pbuf, &flags))
-        return NULL;
-    buf = pbuf.buf;
-    len = pbuf.len;
-
-    if (!IS_SELECTABLE(s)) {
-        PyBuffer_Release(&pbuf);
-        return select_error();
-    }
-
-    do {
-        Py_BEGIN_ALLOW_THREADS
-        timeout = internal_select(s, 1);
-        n = -1;
-        if (!timeout) {
-#ifdef __VMS
-            n = sendsegmented(s->sock_fd, buf, len, flags);
-#else
-            n = send(s->sock_fd, buf, len, flags);
-#endif
-        }
-        Py_END_ALLOW_THREADS
-        if (timeout == 1) {
-            PyBuffer_Release(&pbuf);
-            PyErr_SetString(socket_timeout, "timed out");
-            return NULL;
-        }
-        /* PyErr_CheckSignals() might change errno */
-        saved_errno = errno;
-        /* We must run our signal handlers before looping again.
-           send() can return a successful partial write when it is
-           interrupted, so we can't restrict ourselves to EINTR. */
-        if (PyErr_CheckSignals()) {
-            PyBuffer_Release(&pbuf);
-            return NULL;
-        }
-        if (n < 0) {
-            /* If interrupted, try again */
-            if (saved_errno == EINTR)
-                continue;
-            else
-                break;
-        }
-        buf += n;
-        len -= n;
-    } while (len > 0);
-    PyBuffer_Release(&pbuf);
-
-    if (n < 0)
-        return s->errorhandler();
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(sendall_doc,
-"sendall(data[, flags])\n\
-\n\
-Send a data string to the socket.  For the optional flags\n\
-argument, see the Unix manual.  This calls send() repeatedly\n\
-until all data is sent.  If an error occurs, it's impossible\n\
-to tell how much data has been sent.");
-
-
-/* s.sendto(data, [flags,] sockaddr) method */
-
-static PyObject *
-sock_sendto(PySocketSockObject *s, PyObject *args)
-{
-    Py_buffer pbuf;
-    PyObject *addro;
-    char *buf;
-    Py_ssize_t len;
-    sock_addr_t addrbuf;
-    int addrlen, n = -1, flags, timeout;
-    int arglen;
-
-    flags = 0;
-    arglen = PyTuple_Size(args);
-    switch(arglen) {
-        case 2:
-            PyArg_ParseTuple(args, "s*O:sendto", &pbuf, &addro);
-            break;
-        case 3:
-            PyArg_ParseTuple(args, "s*iO:sendto", &pbuf, &flags, &addro);
-            break;
-        default:
-            PyErr_Format(PyExc_TypeError, "sendto() takes 2 or 3"
-                         " arguments (%d given)", arglen);
-    }
-    if (PyErr_Occurred())
-        return NULL;
-
-    buf = pbuf.buf;
-    len = pbuf.len;
-
-    if (!IS_SELECTABLE(s)) {
-        PyBuffer_Release(&pbuf);
-        return select_error();
-    }
-
-    if (!getsockaddrarg(s, addro, SAS2SA(&addrbuf), &addrlen)) {
-        PyBuffer_Release(&pbuf);
-        return NULL;
-    }
-
-    Py_BEGIN_ALLOW_THREADS
-    timeout = internal_select(s, 1);
-    if (!timeout)
-        n = sendto(s->sock_fd, buf, len, flags, SAS2SA(&addrbuf), addrlen);
-    Py_END_ALLOW_THREADS
-
-    PyBuffer_Release(&pbuf);
-    if (timeout == 1) {
-        PyErr_SetString(socket_timeout, "timed out");
-        return NULL;
-    }
-    if (n < 0)
-        return s->errorhandler();
-    return PyInt_FromLong((long)n);
-}
-
-PyDoc_STRVAR(sendto_doc,
-"sendto(data[, flags], address) -> count\n\
-\n\
-Like send(data, flags) but allows specifying the destination address.\n\
-For IP sockets, the address is a pair (hostaddr, port).");
-
-
-/* s.shutdown(how) method */
-
-static PyObject *
-sock_shutdown(PySocketSockObject *s, PyObject *arg)
-{
-    int how;
-    int res;
-
-    how = PyInt_AsLong(arg);
-    if (how == -1 && PyErr_Occurred())
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    res = shutdown(s->sock_fd, how);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return s->errorhandler();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(shutdown_doc,
-"shutdown(flag)\n\
-\n\
-Shut down the reading side of the socket (flag == SHUT_RD), the writing side\n\
-of the socket (flag == SHUT_WR), or both ends (flag == SHUT_RDWR).");
-
-#if defined(MS_WINDOWS) && defined(SIO_RCVALL)
-static PyObject*
-sock_ioctl(PySocketSockObject *s, PyObject *arg)
-{
-    unsigned long cmd = SIO_RCVALL;
-    PyObject *argO;
-    DWORD recv;
-
-    if (!PyArg_ParseTuple(arg, "kO:ioctl", &cmd, &argO))
-        return NULL;
-
-    switch (cmd) {
-    case SIO_RCVALL: {
-        unsigned int option = RCVALL_ON;
-        if (!PyArg_ParseTuple(arg, "kI:ioctl", &cmd, &option))
-            return NULL;
-        if (WSAIoctl(s->sock_fd, cmd, &option, sizeof(option),
-                         NULL, 0, &recv, NULL, NULL) == SOCKET_ERROR) {
-            return set_error();
-        }
-        return PyLong_FromUnsignedLong(recv); }
-    case SIO_KEEPALIVE_VALS: {
-        struct tcp_keepalive ka;
-        if (!PyArg_ParseTuple(arg, "k(kkk):ioctl", &cmd,
-                        &ka.onoff, &ka.keepalivetime, &ka.keepaliveinterval))
-            return NULL;
-        if (WSAIoctl(s->sock_fd, cmd, &ka, sizeof(ka),
-                         NULL, 0, &recv, NULL, NULL) == SOCKET_ERROR) {
-            return set_error();
-        }
-        return PyLong_FromUnsignedLong(recv); }
-    default:
-        PyErr_Format(PyExc_ValueError, "invalid ioctl command %d", cmd);
-        return NULL;
-    }
-}
-PyDoc_STRVAR(sock_ioctl_doc,
-"ioctl(cmd, option) -> long\n\
-\n\
-Control the socket with WSAIoctl syscall. Currently supported 'cmd' values are\n\
-SIO_RCVALL:  'option' must be one of the socket.RCVALL_* constants.\n\
-SIO_KEEPALIVE_VALS:  'option' is a tuple of (onoff, timeout, interval).");
-
-#endif
-
-/* List of methods for socket objects */
-
-static PyMethodDef sock_methods[] = {
-    {"accept",            (PyCFunction)sock_accept, METH_NOARGS,
-                      accept_doc},
-    {"bind",              (PyCFunction)sock_bind, METH_O,
-                      bind_doc},
-    {"close",             (PyCFunction)sock_close, METH_NOARGS,
-                      close_doc},
-    {"connect",           (PyCFunction)sock_connect, METH_O,
-                      connect_doc},
-    {"connect_ex",        (PyCFunction)sock_connect_ex, METH_O,
-                      connect_ex_doc},
-#ifndef NO_DUP
-    {"dup",               (PyCFunction)sock_dup, METH_NOARGS,
-                      dup_doc},
-#endif
-    {"fileno",            (PyCFunction)sock_fileno, METH_NOARGS,
-                      fileno_doc},
-#ifdef HAVE_GETPEERNAME
-    {"getpeername",       (PyCFunction)sock_getpeername,
-                      METH_NOARGS, getpeername_doc},
-#endif
-    {"getsockname",       (PyCFunction)sock_getsockname,
-                      METH_NOARGS, getsockname_doc},
-    {"getsockopt",        (PyCFunction)sock_getsockopt, METH_VARARGS,
-                      getsockopt_doc},
-#if defined(MS_WINDOWS) && defined(SIO_RCVALL)
-    {"ioctl",             (PyCFunction)sock_ioctl, METH_VARARGS,
-                      sock_ioctl_doc},
-#endif
-    {"listen",            (PyCFunction)sock_listen, METH_O,
-                      listen_doc},
-#ifndef NO_DUP
-    {"makefile",          (PyCFunction)sock_makefile, METH_VARARGS,
-                      makefile_doc},
-#endif
-    {"recv",              (PyCFunction)sock_recv, METH_VARARGS,
-                      recv_doc},
-    {"recv_into",         (PyCFunction)sock_recv_into, METH_VARARGS | METH_KEYWORDS,
-                      recv_into_doc},
-    {"recvfrom",          (PyCFunction)sock_recvfrom, METH_VARARGS,
-                      recvfrom_doc},
-    {"recvfrom_into",  (PyCFunction)sock_recvfrom_into, METH_VARARGS | METH_KEYWORDS,
-                      recvfrom_into_doc},
-    {"send",              (PyCFunction)sock_send, METH_VARARGS,
-                      send_doc},
-    {"sendall",           (PyCFunction)sock_sendall, METH_VARARGS,
-                      sendall_doc},
-    {"sendto",            (PyCFunction)sock_sendto, METH_VARARGS,
-                      sendto_doc},
-    {"setblocking",       (PyCFunction)sock_setblocking, METH_O,
-                      setblocking_doc},
-    {"settimeout",    (PyCFunction)sock_settimeout, METH_O,
-                      settimeout_doc},
-    {"gettimeout",    (PyCFunction)sock_gettimeout, METH_NOARGS,
-                      gettimeout_doc},
-    {"setsockopt",        (PyCFunction)sock_setsockopt, METH_VARARGS,
-                      setsockopt_doc},
-    {"shutdown",          (PyCFunction)sock_shutdown, METH_O,
-                      shutdown_doc},
-#ifdef RISCOS
-    {"sleeptaskw",        (PyCFunction)sock_sleeptaskw, METH_O,
-                      sleeptaskw_doc},
-#endif
-    {NULL,                      NULL}           /* sentinel */
-};
-
-/* SockObject members */
-static PyMemberDef sock_memberlist[] = {
-       {"family", T_INT, offsetof(PySocketSockObject, sock_family), READONLY, "the socket family"},
-       {"type", T_INT, offsetof(PySocketSockObject, sock_type), READONLY, "the socket type"},
-       {"proto", T_INT, offsetof(PySocketSockObject, sock_proto), READONLY, "the socket protocol"},
-       {"timeout", T_DOUBLE, offsetof(PySocketSockObject, sock_timeout), READONLY, "the socket timeout"},
-       {0},
-};
-
-/* Deallocate a socket object in response to the last Py_DECREF().
-   First close the file description. */
-
-static void
-sock_dealloc(PySocketSockObject *s)
-{
-    if (s->sock_fd != -1)
-        (void) SOCKETCLOSE(s->sock_fd);
-    Py_TYPE(s)->tp_free((PyObject *)s);
-}
-
-
-static PyObject *
-sock_repr(PySocketSockObject *s)
-{
-    char buf[512];
-#if SIZEOF_SOCKET_T > SIZEOF_LONG
-    if (s->sock_fd > LONG_MAX) {
-        /* this can occur on Win64, and actually there is a special
-           ugly printf formatter for decimal pointer length integer
-           printing, only bother if necessary*/
-        PyErr_SetString(PyExc_OverflowError,
-                        "no printf formatter to display "
-                        "the socket descriptor in decimal");
-        return NULL;
-    }
-#endif
-    PyOS_snprintf(
-        buf, sizeof(buf),
-        "<socket object, fd=%ld, family=%d, type=%d, protocol=%d>",
-        (long)s->sock_fd, s->sock_family,
-        s->sock_type,
-        s->sock_proto);
-    return PyString_FromString(buf);
-}
-
-
-/* Create a new, uninitialized socket object. */
-
-static PyObject *
-sock_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *new;
-
-    new = type->tp_alloc(type, 0);
-    if (new != NULL) {
-        ((PySocketSockObject *)new)->sock_fd = -1;
-        ((PySocketSockObject *)new)->sock_timeout = -1.0;
-        ((PySocketSockObject *)new)->errorhandler = &set_error;
-    }
-    return new;
-}
-
-
-/* Initialize a new socket object. */
-
-/*ARGSUSED*/
-static int
-sock_initobj(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    PySocketSockObject *s = (PySocketSockObject *)self;
-    SOCKET_T fd;
-    int family = AF_INET, type = SOCK_STREAM, proto = 0;
-    static char *keywords[] = {"family", "type", "proto", 0};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds,
-                                     "|iii:socket", keywords,
-                                     &family, &type, &proto))
-        return -1;
-
-    Py_BEGIN_ALLOW_THREADS
-    fd = socket(family, type, proto);
-    Py_END_ALLOW_THREADS
-
-#ifdef MS_WINDOWS
-    if (fd == INVALID_SOCKET)
-#else
-    if (fd < 0)
-#endif
-    {
-        set_error();
-        return -1;
-    }
-    init_sockobject(s, fd, family, type, proto);
-
-    return 0;
-
-}
-
-
-/* Type object for socket objects. */
-
-static PyTypeObject sock_type = {
-    PyVarObject_HEAD_INIT(0, 0)         /* Must fill in type value later */
-    "_socket.socket",                           /* tp_name */
-    sizeof(PySocketSockObject),                 /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    (destructor)sock_dealloc,                   /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)sock_repr,                        /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
-    sock_doc,                                   /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    sock_methods,                               /* tp_methods */
-    sock_memberlist,                            /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    sock_initobj,                               /* tp_init */
-    PyType_GenericAlloc,                        /* tp_alloc */
-    sock_new,                                   /* tp_new */
-    PyObject_Del,                               /* tp_free */
-};
-
-
-/* Python interface to gethostname(). */
-
-/*ARGSUSED*/
-static PyObject *
-socket_gethostname(PyObject *self, PyObject *unused)
-{
-    char buf[1024];
-    int res;
-    Py_BEGIN_ALLOW_THREADS
-    res = gethostname(buf, (int) sizeof buf - 1);
-    Py_END_ALLOW_THREADS
-    if (res < 0)
-        return set_error();
-    buf[sizeof buf - 1] = '\0';
-    return PyString_FromString(buf);
-}
-
-PyDoc_STRVAR(gethostname_doc,
-"gethostname() -> string\n\
-\n\
-Return the current host name.");
-
-
-/* Python interface to gethostbyname(name). */
-
-/*ARGSUSED*/
-static PyObject *
-socket_gethostbyname(PyObject *self, PyObject *args)
-{
-    char *name;
-    sock_addr_t addrbuf;
-
-    if (!PyArg_ParseTuple(args, "s:gethostbyname", &name))
-        return NULL;
-    if (setipaddr(name, SAS2SA(&addrbuf),  sizeof(addrbuf), AF_INET) < 0)
-        return NULL;
-    return makeipaddr(SAS2SA(&addrbuf), sizeof(struct sockaddr_in));
-}
-
-PyDoc_STRVAR(gethostbyname_doc,
-"gethostbyname(host) -> address\n\
-\n\
-Return the IP address (a string of the form '255.255.255.255') for a host.");
-
-
-/* Convenience function common to gethostbyname_ex and gethostbyaddr */
-
-static PyObject *
-gethost_common(struct hostent *h, struct sockaddr *addr, int alen, int af)
-{
-    char **pch;
-    PyObject *rtn_tuple = (PyObject *)NULL;
-    PyObject *name_list = (PyObject *)NULL;
-    PyObject *addr_list = (PyObject *)NULL;
-    PyObject *tmp;
-
-    if (h == NULL) {
-        /* Let's get real error message to return */
-#ifndef RISCOS
-        set_herror(h_errno);
-#else
-        PyErr_SetString(socket_error, "host not found");
-#endif
-        return NULL;
-    }
-
-    if (h->h_addrtype != af) {
-        /* Let's get real error message to return */
-        PyErr_SetString(socket_error,
-                        (char *)strerror(EAFNOSUPPORT));
-
-        return NULL;
-    }
-
-    switch (af) {
-
-    case AF_INET:
-        if (alen < sizeof(struct sockaddr_in))
-            return NULL;
-        break;
-
-#ifdef ENABLE_IPV6
-    case AF_INET6:
-        if (alen < sizeof(struct sockaddr_in6))
-            return NULL;
-        break;
-#endif
-
-    }
-
-    if ((name_list = PyList_New(0)) == NULL)
-        goto err;
-
-    if ((addr_list = PyList_New(0)) == NULL)
-        goto err;
-
-    /* SF #1511317: h_aliases can be NULL */
-    if (h->h_aliases) {
-        for (pch = h->h_aliases; *pch != NULL; pch++) {
-            int status;
-            tmp = PyString_FromString(*pch);
-            if (tmp == NULL)
-                goto err;
-
-            status = PyList_Append(name_list, tmp);
-            Py_DECREF(tmp);
-
-            if (status)
-                goto err;
-        }
-    }
-
-    for (pch = h->h_addr_list; *pch != NULL; pch++) {
-        int status;
-
-        switch (af) {
-
-        case AF_INET:
-            {
-            struct sockaddr_in sin;
-            memset(&sin, 0, sizeof(sin));
-            sin.sin_family = af;
-#ifdef HAVE_SOCKADDR_SA_LEN
-            sin.sin_len = sizeof(sin);
-#endif
-            memcpy(&sin.sin_addr, *pch, sizeof(sin.sin_addr));
-            tmp = makeipaddr((struct sockaddr *)&sin, sizeof(sin));
-
-            if (pch == h->h_addr_list && alen >= sizeof(sin))
-                memcpy((char *) addr, &sin, sizeof(sin));
-            break;
-            }
-
-#ifdef ENABLE_IPV6
-        case AF_INET6:
-            {
-            struct sockaddr_in6 sin6;
-            memset(&sin6, 0, sizeof(sin6));
-            sin6.sin6_family = af;
-#ifdef HAVE_SOCKADDR_SA_LEN
-            sin6.sin6_len = sizeof(sin6);
-#endif
-            memcpy(&sin6.sin6_addr, *pch, sizeof(sin6.sin6_addr));
-            tmp = makeipaddr((struct sockaddr *)&sin6,
-                sizeof(sin6));
-
-            if (pch == h->h_addr_list && alen >= sizeof(sin6))
-                memcpy((char *) addr, &sin6, sizeof(sin6));
-            break;
-            }
-#endif
-
-        default:                /* can't happen */
-            PyErr_SetString(socket_error,
-                            "unsupported address family");
-            return NULL;
-        }
-
-        if (tmp == NULL)
-            goto err;
-
-        status = PyList_Append(addr_list, tmp);
-        Py_DECREF(tmp);
-
-        if (status)
-            goto err;
-    }
-
-    rtn_tuple = Py_BuildValue("sOO", h->h_name, name_list, addr_list);
-
- err:
-    Py_XDECREF(name_list);
-    Py_XDECREF(addr_list);
-    return rtn_tuple;
-}
-
-
-/* Python interface to gethostbyname_ex(name). */
-
-/*ARGSUSED*/
-static PyObject *
-socket_gethostbyname_ex(PyObject *self, PyObject *args)
-{
-    char *name;
-    struct hostent *h;
-#ifdef ENABLE_IPV6
-    struct sockaddr_storage addr;
-#else
-    struct sockaddr_in addr;
-#endif
-    struct sockaddr *sa;
-    PyObject *ret;
-#ifdef HAVE_GETHOSTBYNAME_R
-    struct hostent hp_allocated;
-#ifdef HAVE_GETHOSTBYNAME_R_3_ARG
-    struct hostent_data data;
-#else
-    char buf[16384];
-    int buf_len = (sizeof buf) - 1;
-    int errnop;
-#endif
-#if defined(HAVE_GETHOSTBYNAME_R_3_ARG) || defined(HAVE_GETHOSTBYNAME_R_6_ARG)
-    int result;
-#endif
-#endif /* HAVE_GETHOSTBYNAME_R */
-
-    if (!PyArg_ParseTuple(args, "s:gethostbyname_ex", &name))
-        return NULL;
-    if (setipaddr(name, (struct sockaddr *)&addr, sizeof(addr), AF_INET) < 0)
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-#ifdef HAVE_GETHOSTBYNAME_R
-#if   defined(HAVE_GETHOSTBYNAME_R_6_ARG)
-    result = gethostbyname_r(name, &hp_allocated, buf, buf_len,
-                             &h, &errnop);
-#elif defined(HAVE_GETHOSTBYNAME_R_5_ARG)
-    h = gethostbyname_r(name, &hp_allocated, buf, buf_len, &errnop);
-#else /* HAVE_GETHOSTBYNAME_R_3_ARG */
-    memset((void *) &data, '\0', sizeof(data));
-    result = gethostbyname_r(name, &hp_allocated, &data);
-    h = (result != 0) ? NULL : &hp_allocated;
-#endif
-#else /* not HAVE_GETHOSTBYNAME_R */
-#ifdef USE_GETHOSTBYNAME_LOCK
-    PyThread_acquire_lock(netdb_lock, 1);
-#endif
-    h = gethostbyname(name);
-#endif /* HAVE_GETHOSTBYNAME_R */
-    Py_END_ALLOW_THREADS
-    /* Some C libraries would require addr.__ss_family instead of
-       addr.ss_family.
-       Therefore, we cast the sockaddr_storage into sockaddr to
-       access sa_family. */
-    sa = (struct sockaddr*)&addr;
-    ret = gethost_common(h, (struct sockaddr *)&addr, sizeof(addr),
-                         sa->sa_family);
-#ifdef USE_GETHOSTBYNAME_LOCK
-    PyThread_release_lock(netdb_lock);
-#endif
-    return ret;
-}
-
-PyDoc_STRVAR(ghbn_ex_doc,
-"gethostbyname_ex(host) -> (name, aliaslist, addresslist)\n\
-\n\
-Return the true host name, a list of aliases, and a list of IP addresses,\n\
-for a host.  The host argument is a string giving a host name or IP number.");
-
-
-/* Python interface to gethostbyaddr(IP). */
-
-/*ARGSUSED*/
-static PyObject *
-socket_gethostbyaddr(PyObject *self, PyObject *args)
-{
-#ifdef ENABLE_IPV6
-    struct sockaddr_storage addr;
-#else
-    struct sockaddr_in addr;
-#endif
-    struct sockaddr *sa = (struct sockaddr *)&addr;
-    char *ip_num;
-    struct hostent *h;
-    PyObject *ret;
-#ifdef HAVE_GETHOSTBYNAME_R
-    struct hostent hp_allocated;
-#ifdef HAVE_GETHOSTBYNAME_R_3_ARG
-    struct hostent_data data;
-#else
-    /* glibcs up to 2.10 assume that the buf argument to
-       gethostbyaddr_r is 8-byte aligned, which at least llvm-gcc
-       does not ensure. The attribute below instructs the compiler
-       to maintain this alignment. */
-    char buf[16384] Py_ALIGNED(8);
-    int buf_len = (sizeof buf) - 1;
-    int errnop;
-#endif
-#if defined(HAVE_GETHOSTBYNAME_R_3_ARG) || defined(HAVE_GETHOSTBYNAME_R_6_ARG)
-    int result;
-#endif
-#endif /* HAVE_GETHOSTBYNAME_R */
-    char *ap;
-    int al;
-    int af;
-
-    if (!PyArg_ParseTuple(args, "s:gethostbyaddr", &ip_num))
-        return NULL;
-    af = AF_UNSPEC;
-    if (setipaddr(ip_num, sa, sizeof(addr), af) < 0)
-        return NULL;
-    af = sa->sa_family;
-    ap = NULL;
-    switch (af) {
-    case AF_INET:
-        ap = (char *)&((struct sockaddr_in *)sa)->sin_addr;
-        al = sizeof(((struct sockaddr_in *)sa)->sin_addr);
-        break;
-#ifdef ENABLE_IPV6
-    case AF_INET6:
-        ap = (char *)&((struct sockaddr_in6 *)sa)->sin6_addr;
-        al = sizeof(((struct sockaddr_in6 *)sa)->sin6_addr);
-        break;
-#endif
-    default:
-        PyErr_SetString(socket_error, "unsupported address family");
-        return NULL;
-    }
-    Py_BEGIN_ALLOW_THREADS
-#ifdef HAVE_GETHOSTBYNAME_R
-#if   defined(HAVE_GETHOSTBYNAME_R_6_ARG)
-    result = gethostbyaddr_r(ap, al, af,
-        &hp_allocated, buf, buf_len,
-        &h, &errnop);
-#elif defined(HAVE_GETHOSTBYNAME_R_5_ARG)
-    h = gethostbyaddr_r(ap, al, af,
-                        &hp_allocated, buf, buf_len, &errnop);
-#else /* HAVE_GETHOSTBYNAME_R_3_ARG */
-    memset((void *) &data, '\0', sizeof(data));
-    result = gethostbyaddr_r(ap, al, af, &hp_allocated, &data);
-    h = (result != 0) ? NULL : &hp_allocated;
-#endif
-#else /* not HAVE_GETHOSTBYNAME_R */
-#ifdef USE_GETHOSTBYNAME_LOCK
-    PyThread_acquire_lock(netdb_lock, 1);
-#endif
-    h = gethostbyaddr(ap, al, af);
-#endif /* HAVE_GETHOSTBYNAME_R */
-    Py_END_ALLOW_THREADS
-    ret = gethost_common(h, (struct sockaddr *)&addr, sizeof(addr), af);
-#ifdef USE_GETHOSTBYNAME_LOCK
-    PyThread_release_lock(netdb_lock);
-#endif
-    return ret;
-}
-
-PyDoc_STRVAR(gethostbyaddr_doc,
-"gethostbyaddr(host) -> (name, aliaslist, addresslist)\n\
-\n\
-Return the true host name, a list of aliases, and a list of IP addresses,\n\
-for a host.  The host argument is a string giving a host name or IP number.");
-
-
-/* Python interface to getservbyname(name).
-   This only returns the port number, since the other info is already
-   known or not useful (like the list of aliases). */
-
-/*ARGSUSED*/
-static PyObject *
-socket_getservbyname(PyObject *self, PyObject *args)
-{
-    char *name, *proto=NULL;
-    struct servent *sp;
-    if (!PyArg_ParseTuple(args, "s|s:getservbyname", &name, &proto))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    sp = getservbyname(name, proto);
-    Py_END_ALLOW_THREADS
-    if (sp == NULL) {
-        PyErr_SetString(socket_error, "service/proto not found");
-        return NULL;
-    }
-    return PyInt_FromLong((long) ntohs(sp->s_port));
-}
-
-PyDoc_STRVAR(getservbyname_doc,
-"getservbyname(servicename[, protocolname]) -> integer\n\
-\n\
-Return a port number from a service name and protocol name.\n\
-The optional protocol name, if given, should be 'tcp' or 'udp',\n\
-otherwise any protocol will match.");
-
-
-/* Python interface to getservbyport(port).
-   This only returns the service name, since the other info is already
-   known or not useful (like the list of aliases). */
-
-/*ARGSUSED*/
-static PyObject *
-socket_getservbyport(PyObject *self, PyObject *args)
-{
-    int port;
-    char *proto=NULL;
-    struct servent *sp;
-    if (!PyArg_ParseTuple(args, "i|s:getservbyport", &port, &proto))
-        return NULL;
-    if (port < 0 || port > 0xffff) {
-        PyErr_SetString(
-            PyExc_OverflowError,
-            "getservbyport: port must be 0-65535.");
-        return NULL;
-    }
-    Py_BEGIN_ALLOW_THREADS
-    sp = getservbyport(htons((short)port), proto);
-    Py_END_ALLOW_THREADS
-    if (sp == NULL) {
-        PyErr_SetString(socket_error, "port/proto not found");
-        return NULL;
-    }
-    return PyString_FromString(sp->s_name);
-}
-
-PyDoc_STRVAR(getservbyport_doc,
-"getservbyport(port[, protocolname]) -> string\n\
-\n\
-Return the service name from a port number and protocol name.\n\
-The optional protocol name, if given, should be 'tcp' or 'udp',\n\
-otherwise any protocol will match.");
-
-/* Python interface to getprotobyname(name).
-   This only returns the protocol number, since the other info is
-   already known or not useful (like the list of aliases). */
-
-/*ARGSUSED*/
-static PyObject *
-socket_getprotobyname(PyObject *self, PyObject *args)
-{
-    char *name;
-    struct protoent *sp;
-#ifdef __BEOS__
-/* Not available in BeOS yet. - [cjh] */
-    PyErr_SetString(socket_error, "getprotobyname not supported");
-    return NULL;
-#else
-    if (!PyArg_ParseTuple(args, "s:getprotobyname", &name))
-        return NULL;
-    Py_BEGIN_ALLOW_THREADS
-    sp = getprotobyname(name);
-    Py_END_ALLOW_THREADS
-    if (sp == NULL) {
-        PyErr_SetString(socket_error, "protocol not found");
-        return NULL;
-    }
-    return PyInt_FromLong((long) sp->p_proto);
-#endif
-}
-
-PyDoc_STRVAR(getprotobyname_doc,
-"getprotobyname(name) -> integer\n\
-\n\
-Return the protocol number for the named protocol.  (Rarely used.)");
-
-
-#ifdef HAVE_SOCKETPAIR
-/* Create a pair of sockets using the socketpair() function.
-   Arguments as for socket() except the default family is AF_UNIX if
-   defined on the platform; otherwise, the default is AF_INET. */
-
-/*ARGSUSED*/
-static PyObject *
-socket_socketpair(PyObject *self, PyObject *args)
-{
-    PySocketSockObject *s0 = NULL, *s1 = NULL;
-    SOCKET_T sv[2];
-    int family, type = SOCK_STREAM, proto = 0;
-    PyObject *res = NULL;
-
-#if defined(AF_UNIX)
-    family = AF_UNIX;
-#else
-    family = AF_INET;
-#endif
-    if (!PyArg_ParseTuple(args, "|iii:socketpair",
-                          &family, &type, &proto))
-        return NULL;
-    /* Create a pair of socket fds */
-    if (socketpair(family, type, proto, sv) < 0)
-        return set_error();
-    s0 = new_sockobject(sv[0], family, type, proto);
-    if (s0 == NULL)
-        goto finally;
-    s1 = new_sockobject(sv[1], family, type, proto);
-    if (s1 == NULL)
-        goto finally;
-    res = PyTuple_Pack(2, s0, s1);
-
-finally:
-    if (res == NULL) {
-        if (s0 == NULL)
-            SOCKETCLOSE(sv[0]);
-        if (s1 == NULL)
-            SOCKETCLOSE(sv[1]);
-    }
-    Py_XDECREF(s0);
-    Py_XDECREF(s1);
-    return res;
-}
-
-PyDoc_STRVAR(socketpair_doc,
-"socketpair([family[, type[, proto]]]) -> (socket object, socket object)\n\
-\n\
-Create a pair of socket objects from the sockets returned by the platform\n\
-socketpair() function.\n\
-The arguments are the same as for socket() except the default family is\n\
-AF_UNIX if defined on the platform; otherwise, the default is AF_INET.");
-
-#endif /* HAVE_SOCKETPAIR */
-
-
-#ifndef NO_DUP
-/* Create a socket object from a numeric file description.
-   Useful e.g. if stdin is a socket.
-   Additional arguments as for socket(). */
-
-/*ARGSUSED*/
-static PyObject *
-socket_fromfd(PyObject *self, PyObject *args)
-{
-    PySocketSockObject *s;
-    SOCKET_T fd;
-    int family, type, proto = 0;
-    if (!PyArg_ParseTuple(args, "iii|i:fromfd",
-                          &fd, &family, &type, &proto))
-        return NULL;
-    /* Dup the fd so it and the socket can be closed independently */
-    fd = dup(fd);
-    if (fd < 0)
-        return set_error();
-    s = new_sockobject(fd, family, type, proto);
-    return (PyObject *) s;
-}
-
-PyDoc_STRVAR(fromfd_doc,
-"fromfd(fd, family, type[, proto]) -> socket object\n\
-\n\
-Create a socket object from a duplicate of the given\n\
-file descriptor.\n\
-The remaining arguments are the same as for socket().");
-
-#endif /* NO_DUP */
-
-
-static PyObject *
-socket_ntohs(PyObject *self, PyObject *args)
-{
-    int x1, x2;
-
-    if (!PyArg_ParseTuple(args, "i:ntohs", &x1)) {
-        return NULL;
-    }
-    if (x1 < 0) {
-        PyErr_SetString(PyExc_OverflowError,
-            "can't convert negative number to unsigned long");
-        return NULL;
-    }
-    x2 = (unsigned int)ntohs((unsigned short)x1);
-    return PyInt_FromLong(x2);
-}
-
-PyDoc_STRVAR(ntohs_doc,
-"ntohs(integer) -> integer\n\
-\n\
-Convert a 16-bit integer from network to host byte order.");
-
-
-static PyObject *
-socket_ntohl(PyObject *self, PyObject *arg)
-{
-    unsigned long x;
-
-    if (PyInt_Check(arg)) {
-        x = PyInt_AS_LONG(arg);
-        if (x == (unsigned long) -1 && PyErr_Occurred())
-            return NULL;
-        if ((long)x < 0) {
-            PyErr_SetString(PyExc_OverflowError,
-              "can't convert negative number to unsigned long");
-            return NULL;
-        }
-    }
-    else if (PyLong_Check(arg)) {
-        x = PyLong_AsUnsignedLong(arg);
-        if (x == (unsigned long) -1 && PyErr_Occurred())
-            return NULL;
-#if SIZEOF_LONG > 4
-        {
-            unsigned long y;
-            /* only want the trailing 32 bits */
-            y = x & 0xFFFFFFFFUL;
-            if (y ^ x)
-                return PyErr_Format(PyExc_OverflowError,
-                            "long int larger than 32 bits");
-            x = y;
-        }
-#endif
-    }
-    else
-        return PyErr_Format(PyExc_TypeError,
-                            "expected int/long, %s found",
-                            Py_TYPE(arg)->tp_name);
-    if (x == (unsigned long) -1 && PyErr_Occurred())
-        return NULL;
-    return PyLong_FromUnsignedLong(ntohl(x));
-}
-
-PyDoc_STRVAR(ntohl_doc,
-"ntohl(integer) -> integer\n\
-\n\
-Convert a 32-bit integer from network to host byte order.");
-
-
-static PyObject *
-socket_htons(PyObject *self, PyObject *args)
-{
-    int x1, x2;
-
-    if (!PyArg_ParseTuple(args, "i:htons", &x1)) {
-        return NULL;
-    }
-    if (x1 < 0) {
-        PyErr_SetString(PyExc_OverflowError,
-            "can't convert negative number to unsigned long");
-        return NULL;
-    }
-    x2 = (unsigned int)htons((unsigned short)x1);
-    return PyInt_FromLong(x2);
-}
-
-PyDoc_STRVAR(htons_doc,
-"htons(integer) -> integer\n\
-\n\
-Convert a 16-bit integer from host to network byte order.");
-
-
-static PyObject *
-socket_htonl(PyObject *self, PyObject *arg)
-{
-    unsigned long x;
-
-    if (PyInt_Check(arg)) {
-        x = PyInt_AS_LONG(arg);
-        if (x == (unsigned long) -1 && PyErr_Occurred())
-            return NULL;
-        if ((long)x < 0) {
-            PyErr_SetString(PyExc_OverflowError,
-              "can't convert negative number to unsigned long");
-            return NULL;
-        }
-    }
-    else if (PyLong_Check(arg)) {
-        x = PyLong_AsUnsignedLong(arg);
-        if (x == (unsigned long) -1 && PyErr_Occurred())
-            return NULL;
-#if SIZEOF_LONG > 4
-        {
-            unsigned long y;
-            /* only want the trailing 32 bits */
-            y = x & 0xFFFFFFFFUL;
-            if (y ^ x)
-                return PyErr_Format(PyExc_OverflowError,
-                            "long int larger than 32 bits");
-            x = y;
-        }
-#endif
-    }
-    else
-        return PyErr_Format(PyExc_TypeError,
-                            "expected int/long, %s found",
-                            Py_TYPE(arg)->tp_name);
-    return PyLong_FromUnsignedLong(htonl((unsigned long)x));
-}
-
-PyDoc_STRVAR(htonl_doc,
-"htonl(integer) -> integer\n\
-\n\
-Convert a 32-bit integer from host to network byte order.");
-
-/* socket.inet_aton() and socket.inet_ntoa() functions. */
-
-PyDoc_STRVAR(inet_aton_doc,
-"inet_aton(string) -> packed 32-bit IP representation\n\
-\n\
-Convert an IP address in string format (123.45.67.89) to the 32-bit packed\n\
-binary format used in low-level network functions.");
-
-static PyObject*
-socket_inet_aton(PyObject *self, PyObject *args)
-{
-#ifndef INADDR_NONE
-#define INADDR_NONE (-1)
-#endif
-#ifdef HAVE_INET_ATON
-    struct in_addr buf;
-#endif
-
-#if !defined(HAVE_INET_ATON) || defined(USE_INET_ATON_WEAKLINK)
-#if (SIZEOF_INT != 4)
-#error "Not sure if in_addr_t exists and int is not 32-bits."
-#endif
-    /* Have to use inet_addr() instead */
-    unsigned int packed_addr;
-#endif
-    char *ip_addr;
-
-    if (!PyArg_ParseTuple(args, "s:inet_aton", &ip_addr))
-        return NULL;
-
-
-#ifdef HAVE_INET_ATON
-
-#ifdef USE_INET_ATON_WEAKLINK
-    if (inet_aton != NULL) {
-#endif
-    if (inet_aton(ip_addr, &buf))
-        return PyString_FromStringAndSize((char *)(&buf),
-                                          sizeof(buf));
-
-    PyErr_SetString(socket_error,
-                    "illegal IP address string passed to inet_aton");
-    return NULL;
-
-#ifdef USE_INET_ATON_WEAKLINK
-   } else {
-#endif
-
-#endif
-
-#if !defined(HAVE_INET_ATON) || defined(USE_INET_ATON_WEAKLINK)
-
-    /* special-case this address as inet_addr might return INADDR_NONE
-     * for this */
-    if (strcmp(ip_addr, "255.255.255.255") == 0) {
-        packed_addr = 0xFFFFFFFF;
-    } else {
-
-        packed_addr = inet_addr(ip_addr);
-
-        if (packed_addr == INADDR_NONE) {               /* invalid address */
-            PyErr_SetString(socket_error,
-                "illegal IP address string passed to inet_aton");
-            return NULL;
-        }
-    }
-    return PyString_FromStringAndSize((char *) &packed_addr,
-                                      sizeof(packed_addr));
-
-#ifdef USE_INET_ATON_WEAKLINK
-   }
-#endif
-
-#endif
-}
-
-PyDoc_STRVAR(inet_ntoa_doc,
-"inet_ntoa(packed_ip) -> ip_address_string\n\
-\n\
-Convert an IP address from 32-bit packed binary format to string format");
-
-static PyObject*
-socket_inet_ntoa(PyObject *self, PyObject *args)
-{
-    char *packed_str;
-    int addr_len;
-    struct in_addr packed_addr;
-
-    if (!PyArg_ParseTuple(args, "s#:inet_ntoa", &packed_str, &addr_len)) {
-        return NULL;
-    }
-
-    if (addr_len != sizeof(packed_addr)) {
-        PyErr_SetString(socket_error,
-            "packed IP wrong length for inet_ntoa");
-        return NULL;
-    }
-
-    memcpy(&packed_addr, packed_str, addr_len);
-
-    return PyString_FromString(inet_ntoa(packed_addr));
-}
-
-#ifdef HAVE_INET_PTON
-
-PyDoc_STRVAR(inet_pton_doc,
-"inet_pton(af, ip) -> packed IP address string\n\
-\n\
-Convert an IP address from string format to a packed string suitable\n\
-for use with low-level network functions.");
-
-static PyObject *
-socket_inet_pton(PyObject *self, PyObject *args)
-{
-    int af;
-    char* ip;
-    int retval;
-#ifdef ENABLE_IPV6
-    char packed[MAX(sizeof(struct in_addr), sizeof(struct in6_addr))];
-#else
-    char packed[sizeof(struct in_addr)];
-#endif
-    if (!PyArg_ParseTuple(args, "is:inet_pton", &af, &ip)) {
-        return NULL;
-    }
-
-#if !defined(ENABLE_IPV6) && defined(AF_INET6)
-    if(af == AF_INET6) {
-        PyErr_SetString(socket_error,
-                        "can't use AF_INET6, IPv6 is disabled");
-        return NULL;
-    }
-#endif
-
-    retval = inet_pton(af, ip, packed);
-    if (retval < 0) {
-        PyErr_SetFromErrno(socket_error);
-        return NULL;
-    } else if (retval == 0) {
-        PyErr_SetString(socket_error,
-            "illegal IP address string passed to inet_pton");
-        return NULL;
-    } else if (af == AF_INET) {
-        return PyString_FromStringAndSize(packed,
-            sizeof(struct in_addr));
-#ifdef ENABLE_IPV6
-    } else if (af == AF_INET6) {
-        return PyString_FromStringAndSize(packed,
-            sizeof(struct in6_addr));
-#endif
-    } else {
-        PyErr_SetString(socket_error, "unknown address family");
-        return NULL;
-    }
-}
-
-PyDoc_STRVAR(inet_ntop_doc,
-"inet_ntop(af, packed_ip) -> string formatted IP address\n\
-\n\
-Convert a packed IP address of the given family to string format.");
-
-static PyObject *
-socket_inet_ntop(PyObject *self, PyObject *args)
-{
-    int af;
-    char* packed;
-    int len;
-    const char* retval;
-#ifdef ENABLE_IPV6
-    char ip[MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN) + 1];
-#else
-    char ip[INET_ADDRSTRLEN + 1];
-#endif
-
-    /* Guarantee NUL-termination for PyString_FromString() below */
-    memset((void *) &ip[0], '\0', sizeof(ip));
-
-    if (!PyArg_ParseTuple(args, "is#:inet_ntop", &af, &packed, &len)) {
-        return NULL;
-    }
-
-    if (af == AF_INET) {
-        if (len != sizeof(struct in_addr)) {
-            PyErr_SetString(PyExc_ValueError,
-                "invalid length of packed IP address string");
-            return NULL;
-        }
-#ifdef ENABLE_IPV6
-    } else if (af == AF_INET6) {
-        if (len != sizeof(struct in6_addr)) {
-            PyErr_SetString(PyExc_ValueError,
-                "invalid length of packed IP address string");
-            return NULL;
-        }
-#endif
-    } else {
-        PyErr_Format(PyExc_ValueError,
-            "unknown address family %d", af);
-        return NULL;
-    }
-
-    retval = inet_ntop(af, packed, ip, sizeof(ip));
-    if (!retval) {
-        PyErr_SetFromErrno(socket_error);
-        return NULL;
-    } else {
-        return PyString_FromString(retval);
-    }
-
-    /* NOTREACHED */
-    PyErr_SetString(PyExc_RuntimeError, "invalid handling of inet_ntop");
-    return NULL;
-}
-
-#endif /* HAVE_INET_PTON */
-
-/* Python interface to getaddrinfo(host, port). */
-
-/*ARGSUSED*/
-static PyObject *
-socket_getaddrinfo(PyObject *self, PyObject *args)
-{
-    struct addrinfo hints, *res;
-    struct addrinfo *res0 = NULL;
-    PyObject *hobj = NULL;
-    PyObject *pobj = (PyObject *)NULL;
-    char pbuf[30];
-    char *hptr, *pptr;
-    int family, socktype, protocol, flags;
-    int error;
-    PyObject *all = (PyObject *)NULL;
-    PyObject *single = (PyObject *)NULL;
-    PyObject *idna = NULL;
-
-    family = socktype = protocol = flags = 0;
-    family = AF_UNSPEC;
-    if (!PyArg_ParseTuple(args, "OO|iiii:getaddrinfo",
-                          &hobj, &pobj, &family, &socktype,
-                          &protocol, &flags)) {
-        return NULL;
-    }
-    if (hobj == Py_None) {
-        hptr = NULL;
-    } else if (PyUnicode_Check(hobj)) {
-        idna = PyObject_CallMethod(hobj, "encode", "s", "idna");
-        if (!idna)
-            return NULL;
-        hptr = PyString_AsString(idna);
-    } else if (PyString_Check(hobj)) {
-        hptr = PyString_AsString(hobj);
-    } else {
-        PyErr_SetString(PyExc_TypeError,
-                        "getaddrinfo() argument 1 must be string or None");
-        return NULL;
-    }
-    if (PyInt_Check(pobj)) {
-        PyOS_snprintf(pbuf, sizeof(pbuf), "%ld", PyInt_AsLong(pobj));
-        pptr = pbuf;
-    } else if (PyString_Check(pobj)) {
-        pptr = PyString_AsString(pobj);
-    } else if (pobj == Py_None) {
-        pptr = (char *)NULL;
-    } else {
-        PyErr_SetString(socket_error, "Int or String expected");
-        goto err;
-    }
-    memset(&hints, 0, sizeof(hints));
-    hints.ai_family = family;
-    hints.ai_socktype = socktype;
-    hints.ai_protocol = protocol;
-    hints.ai_flags = flags;
-    Py_BEGIN_ALLOW_THREADS
-    ACQUIRE_GETADDRINFO_LOCK
-    error = getaddrinfo(hptr, pptr, &hints, &res0);
-    Py_END_ALLOW_THREADS
-    RELEASE_GETADDRINFO_LOCK  /* see comment in setipaddr() */
-    if (error) {
-        set_gaierror(error);
-        goto err;
-    }
-
-    if ((all = PyList_New(0)) == NULL)
-        goto err;
-    for (res = res0; res; res = res->ai_next) {
-        PyObject *addr =
-            makesockaddr(-1, res->ai_addr, res->ai_addrlen, protocol);
-        if (addr == NULL)
-            goto err;
-        single = Py_BuildValue("iiisO", res->ai_family,
-            res->ai_socktype, res->ai_protocol,
-            res->ai_canonname ? res->ai_canonname : "",
-            addr);
-        Py_DECREF(addr);
-        if (single == NULL)
-            goto err;
-
-        if (PyList_Append(all, single))
-            goto err;
-        Py_XDECREF(single);
-    }
-    Py_XDECREF(idna);
-    if (res0)
-        freeaddrinfo(res0);
-    return all;
- err:
-    Py_XDECREF(single);
-    Py_XDECREF(all);
-    Py_XDECREF(idna);
-    if (res0)
-        freeaddrinfo(res0);
-    return (PyObject *)NULL;
-}
-
-PyDoc_STRVAR(getaddrinfo_doc,
-"getaddrinfo(host, port [, family, socktype, proto, flags])\n\
-    -> list of (family, socktype, proto, canonname, sockaddr)\n\
-\n\
-Resolve host and port into addrinfo struct.");
-
-/* Python interface to getnameinfo(sa, flags). */
-
-/*ARGSUSED*/
-static PyObject *
-socket_getnameinfo(PyObject *self, PyObject *args)
-{
-    PyObject *sa = (PyObject *)NULL;
-    int flags;
-    char *hostp;
-    int port, flowinfo, scope_id;
-    char hbuf[NI_MAXHOST], pbuf[NI_MAXSERV];
-    struct addrinfo hints, *res = NULL;
-    int error;
-    PyObject *ret = (PyObject *)NULL;
-
-    flags = flowinfo = scope_id = 0;
-    if (!PyArg_ParseTuple(args, "Oi:getnameinfo", &sa, &flags))
-        return NULL;
-    if (!PyTuple_Check(sa)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "getnameinfo() argument 1 must be a tuple");
-        return NULL;
-    }
-    if (!PyArg_ParseTuple(sa, "si|ii",
-                          &hostp, &port, &flowinfo, &scope_id))
-        return NULL;
-    PyOS_snprintf(pbuf, sizeof(pbuf), "%d", port);
-    memset(&hints, 0, sizeof(hints));
-    hints.ai_family = AF_UNSPEC;
-    hints.ai_socktype = SOCK_DGRAM;     /* make numeric port happy */
-    Py_BEGIN_ALLOW_THREADS
-    ACQUIRE_GETADDRINFO_LOCK
-    error = getaddrinfo(hostp, pbuf, &hints, &res);
-    Py_END_ALLOW_THREADS
-    RELEASE_GETADDRINFO_LOCK  /* see comment in setipaddr() */
-    if (error) {
-        set_gaierror(error);
-        goto fail;
-    }
-    if (res->ai_next) {
-        PyErr_SetString(socket_error,
-            "sockaddr resolved to multiple addresses");
-        goto fail;
-    }
-    switch (res->ai_family) {
-    case AF_INET:
-        {
-        if (PyTuple_GET_SIZE(sa) != 2) {
-            PyErr_SetString(socket_error,
-                "IPv4 sockaddr must be 2 tuple");
-            goto fail;
-        }
-        break;
-        }
-#ifdef ENABLE_IPV6
-    case AF_INET6:
-        {
-        struct sockaddr_in6 *sin6;
-        sin6 = (struct sockaddr_in6 *)res->ai_addr;
-        sin6->sin6_flowinfo = flowinfo;
-        sin6->sin6_scope_id = scope_id;
-        break;
-        }
-#endif
-    }
-    error = getnameinfo(res->ai_addr, res->ai_addrlen,
-                    hbuf, sizeof(hbuf), pbuf, sizeof(pbuf), flags);
-    if (error) {
-        set_gaierror(error);
-        goto fail;
-    }
-    ret = Py_BuildValue("ss", hbuf, pbuf);
-
-fail:
-    if (res)
-        freeaddrinfo(res);
-    return ret;
-}
-
-PyDoc_STRVAR(getnameinfo_doc,
-"getnameinfo(sockaddr, flags) --> (host, port)\n\
-\n\
-Get host and port for a sockaddr.");
-
-
-/* Python API to getting and setting the default timeout value. */
-
-static PyObject *
-socket_getdefaulttimeout(PyObject *self)
-{
-    if (defaulttimeout < 0.0) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    else
-        return PyFloat_FromDouble(defaulttimeout);
-}
-
-PyDoc_STRVAR(getdefaulttimeout_doc,
-"getdefaulttimeout() -> timeout\n\
-\n\
-Returns the default timeout in floating seconds for new socket objects.\n\
-A value of None indicates that new socket objects have no timeout.\n\
-When the socket module is first imported, the default is None.");
-
-static PyObject *
-socket_setdefaulttimeout(PyObject *self, PyObject *arg)
-{
-    double timeout;
-
-    if (arg == Py_None)
-        timeout = -1.0;
-    else {
-        timeout = PyFloat_AsDouble(arg);
-        if (timeout < 0.0) {
-            if (!PyErr_Occurred())
-                PyErr_SetString(PyExc_ValueError,
-                                "Timeout value out of range");
-            return NULL;
-        }
-    }
-
-    defaulttimeout = timeout;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(setdefaulttimeout_doc,
-"setdefaulttimeout(timeout)\n\
-\n\
-Set the default timeout in floating seconds for new socket objects.\n\
-A value of None indicates that new socket objects have no timeout.\n\
-When the socket module is first imported, the default is None.");
-
-
-/* List of functions exported by this module. */
-
-static PyMethodDef socket_methods[] = {
-    {"gethostbyname",           socket_gethostbyname,
-     METH_VARARGS, gethostbyname_doc},
-    {"gethostbyname_ex",        socket_gethostbyname_ex,
-     METH_VARARGS, ghbn_ex_doc},
-    {"gethostbyaddr",           socket_gethostbyaddr,
-     METH_VARARGS, gethostbyaddr_doc},
-    {"gethostname",             socket_gethostname,
-     METH_NOARGS,  gethostname_doc},
-    {"getservbyname",           socket_getservbyname,
-     METH_VARARGS, getservbyname_doc},
-    {"getservbyport",           socket_getservbyport,
-     METH_VARARGS, getservbyport_doc},
-    {"getprotobyname",          socket_getprotobyname,
-     METH_VARARGS, getprotobyname_doc},
-#ifndef NO_DUP
-    {"fromfd",                  socket_fromfd,
-     METH_VARARGS, fromfd_doc},
-#endif
-#ifdef HAVE_SOCKETPAIR
-    {"socketpair",              socket_socketpair,
-     METH_VARARGS, socketpair_doc},
-#endif
-    {"ntohs",                   socket_ntohs,
-     METH_VARARGS, ntohs_doc},
-    {"ntohl",                   socket_ntohl,
-     METH_O, ntohl_doc},
-    {"htons",                   socket_htons,
-     METH_VARARGS, htons_doc},
-    {"htonl",                   socket_htonl,
-     METH_O, htonl_doc},
-    {"inet_aton",               socket_inet_aton,
-     METH_VARARGS, inet_aton_doc},
-    {"inet_ntoa",               socket_inet_ntoa,
-     METH_VARARGS, inet_ntoa_doc},
-#ifdef HAVE_INET_PTON
-    {"inet_pton",               socket_inet_pton,
-     METH_VARARGS, inet_pton_doc},
-    {"inet_ntop",               socket_inet_ntop,
-     METH_VARARGS, inet_ntop_doc},
-#endif
-    {"getaddrinfo",             socket_getaddrinfo,
-     METH_VARARGS, getaddrinfo_doc},
-    {"getnameinfo",             socket_getnameinfo,
-     METH_VARARGS, getnameinfo_doc},
-    {"getdefaulttimeout",       (PyCFunction)socket_getdefaulttimeout,
-     METH_NOARGS, getdefaulttimeout_doc},
-    {"setdefaulttimeout",       socket_setdefaulttimeout,
-     METH_O, setdefaulttimeout_doc},
-    {NULL,                      NULL}            /* Sentinel */
-};
-
-
-#ifdef RISCOS
-#define OS_INIT_DEFINED
-
-static int
-os_init(void)
-{
-    _kernel_swi_regs r;
-
-    r.r[0] = 0;
-    _kernel_swi(0x43380, &r, &r);
-    taskwindow = r.r[0];
-
-    return 1;
-}
-
-#endif /* RISCOS */
-
-
-#ifdef MS_WINDOWS
-#define OS_INIT_DEFINED
-
-/* Additional initialization and cleanup for Windows */
-
-static void
-os_cleanup(void)
-{
-    WSACleanup();
-}
-
-static int
-os_init(void)
-{
-    WSADATA WSAData;
-    int ret;
-    char buf[100];
-    ret = WSAStartup(0x0101, &WSAData);
-    switch (ret) {
-    case 0:     /* No error */
-        Py_AtExit(os_cleanup);
-        return 1; /* Success */
-    case WSASYSNOTREADY:
-        PyErr_SetString(PyExc_ImportError,
-                        "WSAStartup failed: network not ready");
-        break;
-    case WSAVERNOTSUPPORTED:
-    case WSAEINVAL:
-        PyErr_SetString(
-            PyExc_ImportError,
-            "WSAStartup failed: requested version not supported");
-        break;
-    default:
-        PyOS_snprintf(buf, sizeof(buf),
-                      "WSAStartup failed: error code %d", ret);
-        PyErr_SetString(PyExc_ImportError, buf);
-        break;
-    }
-    return 0; /* Failure */
-}
-
-#endif /* MS_WINDOWS */
-
-
-#ifdef PYOS_OS2
-#define OS_INIT_DEFINED
-
-/* Additional initialization for OS/2 */
-
-static int
-os_init(void)
-{
-#ifndef PYCC_GCC
-    char reason[64];
-    int rc = sock_init();
-
-    if (rc == 0) {
-        return 1; /* Success */
-    }
-
-    PyOS_snprintf(reason, sizeof(reason),
-                  "OS/2 TCP/IP Error# %d", sock_errno());
-    PyErr_SetString(PyExc_ImportError, reason);
-
-    return 0;  /* Failure */
-#else
-    /* No need to initialize sockets with GCC/EMX */
-    return 1; /* Success */
-#endif
-}
-
-#endif /* PYOS_OS2 */
-
-
-#ifndef OS_INIT_DEFINED
-static int
-os_init(void)
-{
-    return 1; /* Success */
-}
-#endif
-
-
-/* C API table - always add new things to the end for binary
-   compatibility. */
-static
-PySocketModule_APIObject PySocketModuleAPI =
-{
-    &sock_type,
-    NULL
-};
-
-
-/* Initialize the _socket module.
-
-   This module is actually called "_socket", and there's a wrapper
-   "socket.py" which implements some additional functionality.  On some
-   platforms (e.g. Windows and OS/2), socket.py also implements a
-   wrapper for the socket type that provides missing functionality such
-   as makefile(), dup() and fromfd().  The import of "_socket" may fail
-   with an ImportError exception if os-specific initialization fails.
-   On Windows, this does WINSOCK initialization.  When WINSOCK is
-   initialized successfully, a call to WSACleanup() is scheduled to be
-   made at exit time.
-*/
-
-PyDoc_STRVAR(socket_doc,
-"Implementation module for socket operations.\n\
-\n\
-See the socket module for documentation.");
-
-PyMODINIT_FUNC
-init_socket(void)
-{
-    PyObject *m, *has_ipv6;
-
-    if (!os_init())
-        return;
-
-    Py_TYPE(&sock_type) = &PyType_Type;
-    m = Py_InitModule3(PySocket_MODULE_NAME,
-                       socket_methods,
-                       socket_doc);
-    if (m == NULL)
-        return;
-
-    socket_error = PyErr_NewException("socket.error",
-                                      PyExc_IOError, NULL);
-    if (socket_error == NULL)
-        return;
-    PySocketModuleAPI.error = socket_error;
-    Py_INCREF(socket_error);
-    PyModule_AddObject(m, "error", socket_error);
-    socket_herror = PyErr_NewException("socket.herror",
-                                       socket_error, NULL);
-    if (socket_herror == NULL)
-        return;
-    Py_INCREF(socket_herror);
-    PyModule_AddObject(m, "herror", socket_herror);
-    socket_gaierror = PyErr_NewException("socket.gaierror", socket_error,
-        NULL);
-    if (socket_gaierror == NULL)
-        return;
-    Py_INCREF(socket_gaierror);
-    PyModule_AddObject(m, "gaierror", socket_gaierror);
-    socket_timeout = PyErr_NewException("socket.timeout",
-                                        socket_error, NULL);
-    if (socket_timeout == NULL)
-        return;
-    Py_INCREF(socket_timeout);
-    PyModule_AddObject(m, "timeout", socket_timeout);
-    Py_INCREF((PyObject *)&sock_type);
-    if (PyModule_AddObject(m, "SocketType",
-                           (PyObject *)&sock_type) != 0)
-        return;
-    Py_INCREF((PyObject *)&sock_type);
-    if (PyModule_AddObject(m, "socket",
-                           (PyObject *)&sock_type) != 0)
-        return;
-
-#ifdef ENABLE_IPV6
-    has_ipv6 = Py_True;
-#else
-    has_ipv6 = Py_False;
-#endif
-    Py_INCREF(has_ipv6);
-    PyModule_AddObject(m, "has_ipv6", has_ipv6);
-
-    /* Export C API */
-    if (PyModule_AddObject(m, PySocket_CAPI_NAME,
-           PyCapsule_New(&PySocketModuleAPI, PySocket_CAPSULE_NAME, NULL)
-                             ) != 0)
-        return;
-
-    /* Address families (we only support AF_INET and AF_UNIX) */
-#ifdef AF_UNSPEC
-    PyModule_AddIntConstant(m, "AF_UNSPEC", AF_UNSPEC);
-#endif
-    PyModule_AddIntConstant(m, "AF_INET", AF_INET);
-#ifdef AF_INET6
-    PyModule_AddIntConstant(m, "AF_INET6", AF_INET6);
-#endif /* AF_INET6 */
-#if defined(AF_UNIX)
-    PyModule_AddIntConstant(m, "AF_UNIX", AF_UNIX);
-#endif /* AF_UNIX */
-#ifdef AF_AX25
-    /* Amateur Radio AX.25 */
-    PyModule_AddIntConstant(m, "AF_AX25", AF_AX25);
-#endif
-#ifdef AF_IPX
-    PyModule_AddIntConstant(m, "AF_IPX", AF_IPX); /* Novell IPX */
-#endif
-#ifdef AF_APPLETALK
-    /* Appletalk DDP */
-    PyModule_AddIntConstant(m, "AF_APPLETALK", AF_APPLETALK);
-#endif
-#ifdef AF_NETROM
-    /* Amateur radio NetROM */
-    PyModule_AddIntConstant(m, "AF_NETROM", AF_NETROM);
-#endif
-#ifdef AF_BRIDGE
-    /* Multiprotocol bridge */
-    PyModule_AddIntConstant(m, "AF_BRIDGE", AF_BRIDGE);
-#endif
-#ifdef AF_ATMPVC
-    /* ATM PVCs */
-    PyModule_AddIntConstant(m, "AF_ATMPVC", AF_ATMPVC);
-#endif
-#ifdef AF_AAL5
-    /* Reserved for Werner's ATM */
-    PyModule_AddIntConstant(m, "AF_AAL5", AF_AAL5);
-#endif
-#ifdef AF_X25
-    /* Reserved for X.25 project */
-    PyModule_AddIntConstant(m, "AF_X25", AF_X25);
-#endif
-#ifdef AF_INET6
-    PyModule_AddIntConstant(m, "AF_INET6", AF_INET6); /* IP version 6 */
-#endif
-#ifdef AF_ROSE
-    /* Amateur Radio X.25 PLP */
-    PyModule_AddIntConstant(m, "AF_ROSE", AF_ROSE);
-#endif
-#ifdef AF_DECnet
-    /* Reserved for DECnet project */
-    PyModule_AddIntConstant(m, "AF_DECnet", AF_DECnet);
-#endif
-#ifdef AF_NETBEUI
-    /* Reserved for 802.2LLC project */
-    PyModule_AddIntConstant(m, "AF_NETBEUI", AF_NETBEUI);
-#endif
-#ifdef AF_SECURITY
-    /* Security callback pseudo AF */
-    PyModule_AddIntConstant(m, "AF_SECURITY", AF_SECURITY);
-#endif
-#ifdef AF_KEY
-    /* PF_KEY key management API */
-    PyModule_AddIntConstant(m, "AF_KEY", AF_KEY);
-#endif
-#ifdef AF_NETLINK
-    /*  */
-    PyModule_AddIntConstant(m, "AF_NETLINK", AF_NETLINK);
-    PyModule_AddIntConstant(m, "NETLINK_ROUTE", NETLINK_ROUTE);
-#ifdef NETLINK_SKIP
-    PyModule_AddIntConstant(m, "NETLINK_SKIP", NETLINK_SKIP);
-#endif
-#ifdef NETLINK_W1
-    PyModule_AddIntConstant(m, "NETLINK_W1", NETLINK_W1);
-#endif
-    PyModule_AddIntConstant(m, "NETLINK_USERSOCK", NETLINK_USERSOCK);
-    PyModule_AddIntConstant(m, "NETLINK_FIREWALL", NETLINK_FIREWALL);
-#ifdef NETLINK_TCPDIAG
-    PyModule_AddIntConstant(m, "NETLINK_TCPDIAG", NETLINK_TCPDIAG);
-#endif
-#ifdef NETLINK_NFLOG
-    PyModule_AddIntConstant(m, "NETLINK_NFLOG", NETLINK_NFLOG);
-#endif
-#ifdef NETLINK_XFRM
-    PyModule_AddIntConstant(m, "NETLINK_XFRM", NETLINK_XFRM);
-#endif
-#ifdef NETLINK_ARPD
-    PyModule_AddIntConstant(m, "NETLINK_ARPD", NETLINK_ARPD);
-#endif
-#ifdef NETLINK_ROUTE6
-    PyModule_AddIntConstant(m, "NETLINK_ROUTE6", NETLINK_ROUTE6);
-#endif
-    PyModule_AddIntConstant(m, "NETLINK_IP6_FW", NETLINK_IP6_FW);
-#ifdef NETLINK_DNRTMSG
-    PyModule_AddIntConstant(m, "NETLINK_DNRTMSG", NETLINK_DNRTMSG);
-#endif
-#ifdef NETLINK_TAPBASE
-    PyModule_AddIntConstant(m, "NETLINK_TAPBASE", NETLINK_TAPBASE);
-#endif
-#endif /* AF_NETLINK */
-#ifdef AF_ROUTE
-    /* Alias to emulate 4.4BSD */
-    PyModule_AddIntConstant(m, "AF_ROUTE", AF_ROUTE);
-#endif
-#ifdef AF_ASH
-    /* Ash */
-    PyModule_AddIntConstant(m, "AF_ASH", AF_ASH);
-#endif
-#ifdef AF_ECONET
-    /* Acorn Econet */
-    PyModule_AddIntConstant(m, "AF_ECONET", AF_ECONET);
-#endif
-#ifdef AF_ATMSVC
-    /* ATM SVCs */
-    PyModule_AddIntConstant(m, "AF_ATMSVC", AF_ATMSVC);
-#endif
-#ifdef AF_SNA
-    /* Linux SNA Project (nutters!) */
-    PyModule_AddIntConstant(m, "AF_SNA", AF_SNA);
-#endif
-#ifdef AF_IRDA
-    /* IRDA sockets */
-    PyModule_AddIntConstant(m, "AF_IRDA", AF_IRDA);
-#endif
-#ifdef AF_PPPOX
-    /* PPPoX sockets */
-    PyModule_AddIntConstant(m, "AF_PPPOX", AF_PPPOX);
-#endif
-#ifdef AF_WANPIPE
-    /* Wanpipe API Sockets */
-    PyModule_AddIntConstant(m, "AF_WANPIPE", AF_WANPIPE);
-#endif
-#ifdef AF_LLC
-    /* Linux LLC */
-    PyModule_AddIntConstant(m, "AF_LLC", AF_LLC);
-#endif
-
-#ifdef USE_BLUETOOTH
-    PyModule_AddIntConstant(m, "AF_BLUETOOTH", AF_BLUETOOTH);
-    PyModule_AddIntConstant(m, "BTPROTO_L2CAP", BTPROTO_L2CAP);
-    PyModule_AddIntConstant(m, "BTPROTO_HCI", BTPROTO_HCI);
-    PyModule_AddIntConstant(m, "SOL_HCI", SOL_HCI);
-#if !defined(__NetBSD__) && !defined(__DragonFly__)
-    PyModule_AddIntConstant(m, "HCI_FILTER", HCI_FILTER);
-#endif
-#if !defined(__FreeBSD__)
-#if !defined(__NetBSD__) && !defined(__DragonFly__)
-    PyModule_AddIntConstant(m, "HCI_TIME_STAMP", HCI_TIME_STAMP);
-#endif
-    PyModule_AddIntConstant(m, "HCI_DATA_DIR", HCI_DATA_DIR);
-    PyModule_AddIntConstant(m, "BTPROTO_SCO", BTPROTO_SCO);
-#endif
-    PyModule_AddIntConstant(m, "BTPROTO_RFCOMM", BTPROTO_RFCOMM);
-    PyModule_AddStringConstant(m, "BDADDR_ANY", "00:00:00:00:00:00");
-    PyModule_AddStringConstant(m, "BDADDR_LOCAL", "00:00:00:FF:FF:FF");
-#endif
-
-#ifdef AF_PACKET
-    PyModule_AddIntMacro(m, AF_PACKET);
-#endif
-#ifdef PF_PACKET
-    PyModule_AddIntMacro(m, PF_PACKET);
-#endif
-#ifdef PACKET_HOST
-    PyModule_AddIntMacro(m, PACKET_HOST);
-#endif
-#ifdef PACKET_BROADCAST
-    PyModule_AddIntMacro(m, PACKET_BROADCAST);
-#endif
-#ifdef PACKET_MULTICAST
-    PyModule_AddIntMacro(m, PACKET_MULTICAST);
-#endif
-#ifdef PACKET_OTHERHOST
-    PyModule_AddIntMacro(m, PACKET_OTHERHOST);
-#endif
-#ifdef PACKET_OUTGOING
-    PyModule_AddIntMacro(m, PACKET_OUTGOING);
-#endif
-#ifdef PACKET_LOOPBACK
-    PyModule_AddIntMacro(m, PACKET_LOOPBACK);
-#endif
-#ifdef PACKET_FASTROUTE
-    PyModule_AddIntMacro(m, PACKET_FASTROUTE);
-#endif
-
-#ifdef HAVE_LINUX_TIPC_H
-    PyModule_AddIntConstant(m, "AF_TIPC", AF_TIPC);
-
-    /* for addresses */
-    PyModule_AddIntConstant(m, "TIPC_ADDR_NAMESEQ", TIPC_ADDR_NAMESEQ);
-    PyModule_AddIntConstant(m, "TIPC_ADDR_NAME", TIPC_ADDR_NAME);
-    PyModule_AddIntConstant(m, "TIPC_ADDR_ID", TIPC_ADDR_ID);
-
-    PyModule_AddIntConstant(m, "TIPC_ZONE_SCOPE", TIPC_ZONE_SCOPE);
-    PyModule_AddIntConstant(m, "TIPC_CLUSTER_SCOPE", TIPC_CLUSTER_SCOPE);
-    PyModule_AddIntConstant(m, "TIPC_NODE_SCOPE", TIPC_NODE_SCOPE);
-
-    /* for setsockopt() */
-    PyModule_AddIntConstant(m, "SOL_TIPC", SOL_TIPC);
-    PyModule_AddIntConstant(m, "TIPC_IMPORTANCE", TIPC_IMPORTANCE);
-    PyModule_AddIntConstant(m, "TIPC_SRC_DROPPABLE", TIPC_SRC_DROPPABLE);
-    PyModule_AddIntConstant(m, "TIPC_DEST_DROPPABLE",
-                    TIPC_DEST_DROPPABLE);
-    PyModule_AddIntConstant(m, "TIPC_CONN_TIMEOUT", TIPC_CONN_TIMEOUT);
-
-    PyModule_AddIntConstant(m, "TIPC_LOW_IMPORTANCE",
-                    TIPC_LOW_IMPORTANCE);
-    PyModule_AddIntConstant(m, "TIPC_MEDIUM_IMPORTANCE",
-                    TIPC_MEDIUM_IMPORTANCE);
-    PyModule_AddIntConstant(m, "TIPC_HIGH_IMPORTANCE",
-                    TIPC_HIGH_IMPORTANCE);
-    PyModule_AddIntConstant(m, "TIPC_CRITICAL_IMPORTANCE",
-                    TIPC_CRITICAL_IMPORTANCE);
-
-    /* for subscriptions */
-    PyModule_AddIntConstant(m, "TIPC_SUB_PORTS", TIPC_SUB_PORTS);
-    PyModule_AddIntConstant(m, "TIPC_SUB_SERVICE", TIPC_SUB_SERVICE);
-#ifdef TIPC_SUB_CANCEL
-    /* doesn't seem to be available everywhere */
-    PyModule_AddIntConstant(m, "TIPC_SUB_CANCEL", TIPC_SUB_CANCEL);
-#endif
-    PyModule_AddIntConstant(m, "TIPC_WAIT_FOREVER", TIPC_WAIT_FOREVER);
-    PyModule_AddIntConstant(m, "TIPC_PUBLISHED", TIPC_PUBLISHED);
-    PyModule_AddIntConstant(m, "TIPC_WITHDRAWN", TIPC_WITHDRAWN);
-    PyModule_AddIntConstant(m, "TIPC_SUBSCR_TIMEOUT", TIPC_SUBSCR_TIMEOUT);
-    PyModule_AddIntConstant(m, "TIPC_CFG_SRV", TIPC_CFG_SRV);
-    PyModule_AddIntConstant(m, "TIPC_TOP_SRV", TIPC_TOP_SRV);
-#endif
-
-    /* Socket types */
-    PyModule_AddIntConstant(m, "SOCK_STREAM", SOCK_STREAM);
-    PyModule_AddIntConstant(m, "SOCK_DGRAM", SOCK_DGRAM);
-#ifndef __BEOS__
-/* We have incomplete socket support. */
-    PyModule_AddIntConstant(m, "SOCK_RAW", SOCK_RAW);
-    PyModule_AddIntConstant(m, "SOCK_SEQPACKET", SOCK_SEQPACKET);
-#if defined(SOCK_RDM)
-    PyModule_AddIntConstant(m, "SOCK_RDM", SOCK_RDM);
-#endif
-#endif
-
-#ifdef  SO_DEBUG
-    PyModule_AddIntConstant(m, "SO_DEBUG", SO_DEBUG);
-#endif
-#ifdef  SO_ACCEPTCONN
-    PyModule_AddIntConstant(m, "SO_ACCEPTCONN", SO_ACCEPTCONN);
-#endif
-#ifdef  SO_REUSEADDR
-    PyModule_AddIntConstant(m, "SO_REUSEADDR", SO_REUSEADDR);
-#endif
-#ifdef SO_EXCLUSIVEADDRUSE
-    PyModule_AddIntConstant(m, "SO_EXCLUSIVEADDRUSE", SO_EXCLUSIVEADDRUSE);
-#endif
-
-#ifdef  SO_KEEPALIVE
-    PyModule_AddIntConstant(m, "SO_KEEPALIVE", SO_KEEPALIVE);
-#endif
-#ifdef  SO_DONTROUTE
-    PyModule_AddIntConstant(m, "SO_DONTROUTE", SO_DONTROUTE);
-#endif
-#ifdef  SO_BROADCAST
-    PyModule_AddIntConstant(m, "SO_BROADCAST", SO_BROADCAST);
-#endif
-#ifdef  SO_USELOOPBACK
-    PyModule_AddIntConstant(m, "SO_USELOOPBACK", SO_USELOOPBACK);
-#endif
-#ifdef  SO_LINGER
-    PyModule_AddIntConstant(m, "SO_LINGER", SO_LINGER);
-#endif
-#ifdef  SO_OOBINLINE
-    PyModule_AddIntConstant(m, "SO_OOBINLINE", SO_OOBINLINE);
-#endif
-#ifdef  SO_REUSEPORT
-    PyModule_AddIntConstant(m, "SO_REUSEPORT", SO_REUSEPORT);
-#endif
-#ifdef  SO_SNDBUF
-    PyModule_AddIntConstant(m, "SO_SNDBUF", SO_SNDBUF);
-#endif
-#ifdef  SO_RCVBUF
-    PyModule_AddIntConstant(m, "SO_RCVBUF", SO_RCVBUF);
-#endif
-#ifdef  SO_SNDLOWAT
-    PyModule_AddIntConstant(m, "SO_SNDLOWAT", SO_SNDLOWAT);
-#endif
-#ifdef  SO_RCVLOWAT
-    PyModule_AddIntConstant(m, "SO_RCVLOWAT", SO_RCVLOWAT);
-#endif
-#ifdef  SO_SNDTIMEO
-    PyModule_AddIntConstant(m, "SO_SNDTIMEO", SO_SNDTIMEO);
-#endif
-#ifdef  SO_RCVTIMEO
-    PyModule_AddIntConstant(m, "SO_RCVTIMEO", SO_RCVTIMEO);
-#endif
-#ifdef  SO_ERROR
-    PyModule_AddIntConstant(m, "SO_ERROR", SO_ERROR);
-#endif
-#ifdef  SO_TYPE
-    PyModule_AddIntConstant(m, "SO_TYPE", SO_TYPE);
-#endif
-#ifdef SO_SETFIB
-    PyModule_AddIntConstant(m, "SO_SETFIB", SO_SETFIB);
-#endif
-
-    /* Maximum number of connections for "listen" */
-#ifdef  SOMAXCONN
-    PyModule_AddIntConstant(m, "SOMAXCONN", SOMAXCONN);
-#else
-    PyModule_AddIntConstant(m, "SOMAXCONN", 5); /* Common value */
-#endif
-
-    /* Flags for send, recv */
-#ifdef  MSG_OOB
-    PyModule_AddIntConstant(m, "MSG_OOB", MSG_OOB);
-#endif
-#ifdef  MSG_PEEK
-    PyModule_AddIntConstant(m, "MSG_PEEK", MSG_PEEK);
-#endif
-#ifdef  MSG_DONTROUTE
-    PyModule_AddIntConstant(m, "MSG_DONTROUTE", MSG_DONTROUTE);
-#endif
-#ifdef  MSG_DONTWAIT
-    PyModule_AddIntConstant(m, "MSG_DONTWAIT", MSG_DONTWAIT);
-#endif
-#ifdef  MSG_EOR
-    PyModule_AddIntConstant(m, "MSG_EOR", MSG_EOR);
-#endif
-#ifdef  MSG_TRUNC
-    PyModule_AddIntConstant(m, "MSG_TRUNC", MSG_TRUNC);
-#endif
-#ifdef  MSG_CTRUNC
-    PyModule_AddIntConstant(m, "MSG_CTRUNC", MSG_CTRUNC);
-#endif
-#ifdef  MSG_WAITALL
-    PyModule_AddIntConstant(m, "MSG_WAITALL", MSG_WAITALL);
-#endif
-#ifdef  MSG_BTAG
-    PyModule_AddIntConstant(m, "MSG_BTAG", MSG_BTAG);
-#endif
-#ifdef  MSG_ETAG
-    PyModule_AddIntConstant(m, "MSG_ETAG", MSG_ETAG);
-#endif
-
-    /* Protocol level and numbers, usable for [gs]etsockopt */
-#ifdef  SOL_SOCKET
-    PyModule_AddIntConstant(m, "SOL_SOCKET", SOL_SOCKET);
-#endif
-#ifdef  SOL_IP
-    PyModule_AddIntConstant(m, "SOL_IP", SOL_IP);
-#else
-    PyModule_AddIntConstant(m, "SOL_IP", 0);
-#endif
-#ifdef  SOL_IPX
-    PyModule_AddIntConstant(m, "SOL_IPX", SOL_IPX);
-#endif
-#ifdef  SOL_AX25
-    PyModule_AddIntConstant(m, "SOL_AX25", SOL_AX25);
-#endif
-#ifdef  SOL_ATALK
-    PyModule_AddIntConstant(m, "SOL_ATALK", SOL_ATALK);
-#endif
-#ifdef  SOL_NETROM
-    PyModule_AddIntConstant(m, "SOL_NETROM", SOL_NETROM);
-#endif
-#ifdef  SOL_ROSE
-    PyModule_AddIntConstant(m, "SOL_ROSE", SOL_ROSE);
-#endif
-#ifdef  SOL_TCP
-    PyModule_AddIntConstant(m, "SOL_TCP", SOL_TCP);
-#else
-    PyModule_AddIntConstant(m, "SOL_TCP", 6);
-#endif
-#ifdef  SOL_UDP
-    PyModule_AddIntConstant(m, "SOL_UDP", SOL_UDP);
-#else
-    PyModule_AddIntConstant(m, "SOL_UDP", 17);
-#endif
-#ifdef  IPPROTO_IP
-    PyModule_AddIntConstant(m, "IPPROTO_IP", IPPROTO_IP);
-#else
-    PyModule_AddIntConstant(m, "IPPROTO_IP", 0);
-#endif
-#ifdef  IPPROTO_HOPOPTS
-    PyModule_AddIntConstant(m, "IPPROTO_HOPOPTS", IPPROTO_HOPOPTS);
-#endif
-#ifdef  IPPROTO_ICMP
-    PyModule_AddIntConstant(m, "IPPROTO_ICMP", IPPROTO_ICMP);
-#else
-    PyModule_AddIntConstant(m, "IPPROTO_ICMP", 1);
-#endif
-#ifdef  IPPROTO_IGMP
-    PyModule_AddIntConstant(m, "IPPROTO_IGMP", IPPROTO_IGMP);
-#endif
-#ifdef  IPPROTO_GGP
-    PyModule_AddIntConstant(m, "IPPROTO_GGP", IPPROTO_GGP);
-#endif
-#ifdef  IPPROTO_IPV4
-    PyModule_AddIntConstant(m, "IPPROTO_IPV4", IPPROTO_IPV4);
-#endif
-#ifdef  IPPROTO_IPV6
-    PyModule_AddIntConstant(m, "IPPROTO_IPV6", IPPROTO_IPV6);
-#endif
-#ifdef  IPPROTO_IPIP
-    PyModule_AddIntConstant(m, "IPPROTO_IPIP", IPPROTO_IPIP);
-#endif
-#ifdef  IPPROTO_TCP
-    PyModule_AddIntConstant(m, "IPPROTO_TCP", IPPROTO_TCP);
-#else
-    PyModule_AddIntConstant(m, "IPPROTO_TCP", 6);
-#endif
-#ifdef  IPPROTO_EGP
-    PyModule_AddIntConstant(m, "IPPROTO_EGP", IPPROTO_EGP);
-#endif
-#ifdef  IPPROTO_PUP
-    PyModule_AddIntConstant(m, "IPPROTO_PUP", IPPROTO_PUP);
-#endif
-#ifdef  IPPROTO_UDP
-    PyModule_AddIntConstant(m, "IPPROTO_UDP", IPPROTO_UDP);
-#else
-    PyModule_AddIntConstant(m, "IPPROTO_UDP", 17);
-#endif
-#ifdef  IPPROTO_IDP
-    PyModule_AddIntConstant(m, "IPPROTO_IDP", IPPROTO_IDP);
-#endif
-#ifdef  IPPROTO_HELLO
-    PyModule_AddIntConstant(m, "IPPROTO_HELLO", IPPROTO_HELLO);
-#endif
-#ifdef  IPPROTO_ND
-    PyModule_AddIntConstant(m, "IPPROTO_ND", IPPROTO_ND);
-#endif
-#ifdef  IPPROTO_TP
-    PyModule_AddIntConstant(m, "IPPROTO_TP", IPPROTO_TP);
-#endif
-#ifdef  IPPROTO_IPV6
-    PyModule_AddIntConstant(m, "IPPROTO_IPV6", IPPROTO_IPV6);
-#endif
-#ifdef  IPPROTO_ROUTING
-    PyModule_AddIntConstant(m, "IPPROTO_ROUTING", IPPROTO_ROUTING);
-#endif
-#ifdef  IPPROTO_FRAGMENT
-    PyModule_AddIntConstant(m, "IPPROTO_FRAGMENT", IPPROTO_FRAGMENT);
-#endif
-#ifdef  IPPROTO_RSVP
-    PyModule_AddIntConstant(m, "IPPROTO_RSVP", IPPROTO_RSVP);
-#endif
-#ifdef  IPPROTO_GRE
-    PyModule_AddIntConstant(m, "IPPROTO_GRE", IPPROTO_GRE);
-#endif
-#ifdef  IPPROTO_ESP
-    PyModule_AddIntConstant(m, "IPPROTO_ESP", IPPROTO_ESP);
-#endif
-#ifdef  IPPROTO_AH
-    PyModule_AddIntConstant(m, "IPPROTO_AH", IPPROTO_AH);
-#endif
-#ifdef  IPPROTO_MOBILE
-    PyModule_AddIntConstant(m, "IPPROTO_MOBILE", IPPROTO_MOBILE);
-#endif
-#ifdef  IPPROTO_ICMPV6
-    PyModule_AddIntConstant(m, "IPPROTO_ICMPV6", IPPROTO_ICMPV6);
-#endif
-#ifdef  IPPROTO_NONE
-    PyModule_AddIntConstant(m, "IPPROTO_NONE", IPPROTO_NONE);
-#endif
-#ifdef  IPPROTO_DSTOPTS
-    PyModule_AddIntConstant(m, "IPPROTO_DSTOPTS", IPPROTO_DSTOPTS);
-#endif
-#ifdef  IPPROTO_XTP
-    PyModule_AddIntConstant(m, "IPPROTO_XTP", IPPROTO_XTP);
-#endif
-#ifdef  IPPROTO_EON
-    PyModule_AddIntConstant(m, "IPPROTO_EON", IPPROTO_EON);
-#endif
-#ifdef  IPPROTO_PIM
-    PyModule_AddIntConstant(m, "IPPROTO_PIM", IPPROTO_PIM);
-#endif
-#ifdef  IPPROTO_IPCOMP
-    PyModule_AddIntConstant(m, "IPPROTO_IPCOMP", IPPROTO_IPCOMP);
-#endif
-#ifdef  IPPROTO_VRRP
-    PyModule_AddIntConstant(m, "IPPROTO_VRRP", IPPROTO_VRRP);
-#endif
-#ifdef  IPPROTO_BIP
-    PyModule_AddIntConstant(m, "IPPROTO_BIP", IPPROTO_BIP);
-#endif
-/**/
-#ifdef  IPPROTO_RAW
-    PyModule_AddIntConstant(m, "IPPROTO_RAW", IPPROTO_RAW);
-#else
-    PyModule_AddIntConstant(m, "IPPROTO_RAW", 255);
-#endif
-#ifdef  IPPROTO_MAX
-    PyModule_AddIntConstant(m, "IPPROTO_MAX", IPPROTO_MAX);
-#endif
-
-    /* Some port configuration */
-#ifdef  IPPORT_RESERVED
-    PyModule_AddIntConstant(m, "IPPORT_RESERVED", IPPORT_RESERVED);
-#else
-    PyModule_AddIntConstant(m, "IPPORT_RESERVED", 1024);
-#endif
-#ifdef  IPPORT_USERRESERVED
-    PyModule_AddIntConstant(m, "IPPORT_USERRESERVED", IPPORT_USERRESERVED);
-#else
-    PyModule_AddIntConstant(m, "IPPORT_USERRESERVED", 5000);
-#endif
-
-    /* Some reserved IP v.4 addresses */
-#ifdef  INADDR_ANY
-    PyModule_AddIntConstant(m, "INADDR_ANY", INADDR_ANY);
-#else
-    PyModule_AddIntConstant(m, "INADDR_ANY", 0x00000000);
-#endif
-#ifdef  INADDR_BROADCAST
-    PyModule_AddIntConstant(m, "INADDR_BROADCAST", INADDR_BROADCAST);
-#else
-    PyModule_AddIntConstant(m, "INADDR_BROADCAST", 0xffffffff);
-#endif
-#ifdef  INADDR_LOOPBACK
-    PyModule_AddIntConstant(m, "INADDR_LOOPBACK", INADDR_LOOPBACK);
-#else
-    PyModule_AddIntConstant(m, "INADDR_LOOPBACK", 0x7F000001);
-#endif
-#ifdef  INADDR_UNSPEC_GROUP
-    PyModule_AddIntConstant(m, "INADDR_UNSPEC_GROUP", INADDR_UNSPEC_GROUP);
-#else
-    PyModule_AddIntConstant(m, "INADDR_UNSPEC_GROUP", 0xe0000000);
-#endif
-#ifdef  INADDR_ALLHOSTS_GROUP
-    PyModule_AddIntConstant(m, "INADDR_ALLHOSTS_GROUP",
-                            INADDR_ALLHOSTS_GROUP);
-#else
-    PyModule_AddIntConstant(m, "INADDR_ALLHOSTS_GROUP", 0xe0000001);
-#endif
-#ifdef  INADDR_MAX_LOCAL_GROUP
-    PyModule_AddIntConstant(m, "INADDR_MAX_LOCAL_GROUP",
-                            INADDR_MAX_LOCAL_GROUP);
-#else
-    PyModule_AddIntConstant(m, "INADDR_MAX_LOCAL_GROUP", 0xe00000ff);
-#endif
-#ifdef  INADDR_NONE
-    PyModule_AddIntConstant(m, "INADDR_NONE", INADDR_NONE);
-#else
-    PyModule_AddIntConstant(m, "INADDR_NONE", 0xffffffff);
-#endif
-
-    /* IPv4 [gs]etsockopt options */
-#ifdef  IP_OPTIONS
-    PyModule_AddIntConstant(m, "IP_OPTIONS", IP_OPTIONS);
-#endif
-#ifdef  IP_HDRINCL
-    PyModule_AddIntConstant(m, "IP_HDRINCL", IP_HDRINCL);
-#endif
-#ifdef  IP_TOS
-    PyModule_AddIntConstant(m, "IP_TOS", IP_TOS);
-#endif
-#ifdef  IP_TTL
-    PyModule_AddIntConstant(m, "IP_TTL", IP_TTL);
-#endif
-#ifdef  IP_RECVOPTS
-    PyModule_AddIntConstant(m, "IP_RECVOPTS", IP_RECVOPTS);
-#endif
-#ifdef  IP_RECVRETOPTS
-    PyModule_AddIntConstant(m, "IP_RECVRETOPTS", IP_RECVRETOPTS);
-#endif
-#ifdef  IP_RECVDSTADDR
-    PyModule_AddIntConstant(m, "IP_RECVDSTADDR", IP_RECVDSTADDR);
-#endif
-#ifdef  IP_RETOPTS
-    PyModule_AddIntConstant(m, "IP_RETOPTS", IP_RETOPTS);
-#endif
-#ifdef  IP_MULTICAST_IF
-    PyModule_AddIntConstant(m, "IP_MULTICAST_IF", IP_MULTICAST_IF);
-#endif
-#ifdef  IP_MULTICAST_TTL
-    PyModule_AddIntConstant(m, "IP_MULTICAST_TTL", IP_MULTICAST_TTL);
-#endif
-#ifdef  IP_MULTICAST_LOOP
-    PyModule_AddIntConstant(m, "IP_MULTICAST_LOOP", IP_MULTICAST_LOOP);
-#endif
-#ifdef  IP_ADD_MEMBERSHIP
-    PyModule_AddIntConstant(m, "IP_ADD_MEMBERSHIP", IP_ADD_MEMBERSHIP);
-#endif
-#ifdef  IP_DROP_MEMBERSHIP
-    PyModule_AddIntConstant(m, "IP_DROP_MEMBERSHIP", IP_DROP_MEMBERSHIP);
-#endif
-#ifdef  IP_DEFAULT_MULTICAST_TTL
-    PyModule_AddIntConstant(m, "IP_DEFAULT_MULTICAST_TTL",
-                            IP_DEFAULT_MULTICAST_TTL);
-#endif
-#ifdef  IP_DEFAULT_MULTICAST_LOOP
-    PyModule_AddIntConstant(m, "IP_DEFAULT_MULTICAST_LOOP",
-                            IP_DEFAULT_MULTICAST_LOOP);
-#endif
-#ifdef  IP_MAX_MEMBERSHIPS
-    PyModule_AddIntConstant(m, "IP_MAX_MEMBERSHIPS", IP_MAX_MEMBERSHIPS);
-#endif
-
-    /* IPv6 [gs]etsockopt options, defined in RFC2553 */
-#ifdef  IPV6_JOIN_GROUP
-    PyModule_AddIntConstant(m, "IPV6_JOIN_GROUP", IPV6_JOIN_GROUP);
-#endif
-#ifdef  IPV6_LEAVE_GROUP
-    PyModule_AddIntConstant(m, "IPV6_LEAVE_GROUP", IPV6_LEAVE_GROUP);
-#endif
-#ifdef  IPV6_MULTICAST_HOPS
-    PyModule_AddIntConstant(m, "IPV6_MULTICAST_HOPS", IPV6_MULTICAST_HOPS);
-#endif
-#ifdef  IPV6_MULTICAST_IF
-    PyModule_AddIntConstant(m, "IPV6_MULTICAST_IF", IPV6_MULTICAST_IF);
-#endif
-#ifdef  IPV6_MULTICAST_LOOP
-    PyModule_AddIntConstant(m, "IPV6_MULTICAST_LOOP", IPV6_MULTICAST_LOOP);
-#endif
-#ifdef  IPV6_UNICAST_HOPS
-    PyModule_AddIntConstant(m, "IPV6_UNICAST_HOPS", IPV6_UNICAST_HOPS);
-#endif
-    /* Additional IPV6 socket options, defined in RFC 3493 */
-#ifdef IPV6_V6ONLY
-    PyModule_AddIntConstant(m, "IPV6_V6ONLY", IPV6_V6ONLY);
-#endif
-    /* Advanced IPV6 socket options, from RFC 3542 */
-#ifdef IPV6_CHECKSUM
-    PyModule_AddIntConstant(m, "IPV6_CHECKSUM", IPV6_CHECKSUM);
-#endif
-#ifdef IPV6_DONTFRAG
-    PyModule_AddIntConstant(m, "IPV6_DONTFRAG", IPV6_DONTFRAG);
-#endif
-#ifdef IPV6_DSTOPTS
-    PyModule_AddIntConstant(m, "IPV6_DSTOPTS", IPV6_DSTOPTS);
-#endif
-#ifdef IPV6_HOPLIMIT
-    PyModule_AddIntConstant(m, "IPV6_HOPLIMIT", IPV6_HOPLIMIT);
-#endif
-#ifdef IPV6_HOPOPTS
-    PyModule_AddIntConstant(m, "IPV6_HOPOPTS", IPV6_HOPOPTS);
-#endif
-#ifdef IPV6_NEXTHOP
-    PyModule_AddIntConstant(m, "IPV6_NEXTHOP", IPV6_NEXTHOP);
-#endif
-#ifdef IPV6_PATHMTU
-    PyModule_AddIntConstant(m, "IPV6_PATHMTU", IPV6_PATHMTU);
-#endif
-#ifdef IPV6_PKTINFO
-    PyModule_AddIntConstant(m, "IPV6_PKTINFO", IPV6_PKTINFO);
-#endif
-#ifdef IPV6_RECVDSTOPTS
-    PyModule_AddIntConstant(m, "IPV6_RECVDSTOPTS", IPV6_RECVDSTOPTS);
-#endif
-#ifdef IPV6_RECVHOPLIMIT
-    PyModule_AddIntConstant(m, "IPV6_RECVHOPLIMIT", IPV6_RECVHOPLIMIT);
-#endif
-#ifdef IPV6_RECVHOPOPTS
-    PyModule_AddIntConstant(m, "IPV6_RECVHOPOPTS", IPV6_RECVHOPOPTS);
-#endif
-#ifdef IPV6_RECVPKTINFO
-    PyModule_AddIntConstant(m, "IPV6_RECVPKTINFO", IPV6_RECVPKTINFO);
-#endif
-#ifdef IPV6_RECVRTHDR
-    PyModule_AddIntConstant(m, "IPV6_RECVRTHDR", IPV6_RECVRTHDR);
-#endif
-#ifdef IPV6_RECVTCLASS
-    PyModule_AddIntConstant(m, "IPV6_RECVTCLASS", IPV6_RECVTCLASS);
-#endif
-#ifdef IPV6_RTHDR
-    PyModule_AddIntConstant(m, "IPV6_RTHDR", IPV6_RTHDR);
-#endif
-#ifdef IPV6_RTHDRDSTOPTS
-    PyModule_AddIntConstant(m, "IPV6_RTHDRDSTOPTS", IPV6_RTHDRDSTOPTS);
-#endif
-#ifdef IPV6_RTHDR_TYPE_0
-    PyModule_AddIntConstant(m, "IPV6_RTHDR_TYPE_0", IPV6_RTHDR_TYPE_0);
-#endif
-#ifdef IPV6_RECVPATHMTU
-    PyModule_AddIntConstant(m, "IPV6_RECVPATHMTU", IPV6_RECVPATHMTU);
-#endif
-#ifdef IPV6_TCLASS
-    PyModule_AddIntConstant(m, "IPV6_TCLASS", IPV6_TCLASS);
-#endif
-#ifdef IPV6_USE_MIN_MTU
-    PyModule_AddIntConstant(m, "IPV6_USE_MIN_MTU", IPV6_USE_MIN_MTU);
-#endif
-
-    /* TCP options */
-#ifdef  TCP_NODELAY
-    PyModule_AddIntConstant(m, "TCP_NODELAY", TCP_NODELAY);
-#endif
-#ifdef  TCP_MAXSEG
-    PyModule_AddIntConstant(m, "TCP_MAXSEG", TCP_MAXSEG);
-#endif
-#ifdef  TCP_CORK
-    PyModule_AddIntConstant(m, "TCP_CORK", TCP_CORK);
-#endif
-#ifdef  TCP_KEEPIDLE
-    PyModule_AddIntConstant(m, "TCP_KEEPIDLE", TCP_KEEPIDLE);
-#endif
-#ifdef  TCP_KEEPINTVL
-    PyModule_AddIntConstant(m, "TCP_KEEPINTVL", TCP_KEEPINTVL);
-#endif
-#ifdef  TCP_KEEPCNT
-    PyModule_AddIntConstant(m, "TCP_KEEPCNT", TCP_KEEPCNT);
-#endif
-#ifdef  TCP_SYNCNT
-    PyModule_AddIntConstant(m, "TCP_SYNCNT", TCP_SYNCNT);
-#endif
-#ifdef  TCP_LINGER2
-    PyModule_AddIntConstant(m, "TCP_LINGER2", TCP_LINGER2);
-#endif
-#ifdef  TCP_DEFER_ACCEPT
-    PyModule_AddIntConstant(m, "TCP_DEFER_ACCEPT", TCP_DEFER_ACCEPT);
-#endif
-#ifdef  TCP_WINDOW_CLAMP
-    PyModule_AddIntConstant(m, "TCP_WINDOW_CLAMP", TCP_WINDOW_CLAMP);
-#endif
-#ifdef  TCP_INFO
-    PyModule_AddIntConstant(m, "TCP_INFO", TCP_INFO);
-#endif
-#ifdef  TCP_QUICKACK
-    PyModule_AddIntConstant(m, "TCP_QUICKACK", TCP_QUICKACK);
-#endif
-
-
-    /* IPX options */
-#ifdef  IPX_TYPE
-    PyModule_AddIntConstant(m, "IPX_TYPE", IPX_TYPE);
-#endif
-
-    /* get{addr,name}info parameters */
-#ifdef EAI_ADDRFAMILY
-    PyModule_AddIntConstant(m, "EAI_ADDRFAMILY", EAI_ADDRFAMILY);
-#endif
-#ifdef EAI_AGAIN
-    PyModule_AddIntConstant(m, "EAI_AGAIN", EAI_AGAIN);
-#endif
-#ifdef EAI_BADFLAGS
-    PyModule_AddIntConstant(m, "EAI_BADFLAGS", EAI_BADFLAGS);
-#endif
-#ifdef EAI_FAIL
-    PyModule_AddIntConstant(m, "EAI_FAIL", EAI_FAIL);
-#endif
-#ifdef EAI_FAMILY
-    PyModule_AddIntConstant(m, "EAI_FAMILY", EAI_FAMILY);
-#endif
-#ifdef EAI_MEMORY
-    PyModule_AddIntConstant(m, "EAI_MEMORY", EAI_MEMORY);
-#endif
-#ifdef EAI_NODATA
-    PyModule_AddIntConstant(m, "EAI_NODATA", EAI_NODATA);
-#endif
-#ifdef EAI_NONAME
-    PyModule_AddIntConstant(m, "EAI_NONAME", EAI_NONAME);
-#endif
-#ifdef EAI_OVERFLOW
-    PyModule_AddIntConstant(m, "EAI_OVERFLOW", EAI_OVERFLOW);
-#endif
-#ifdef EAI_SERVICE
-    PyModule_AddIntConstant(m, "EAI_SERVICE", EAI_SERVICE);
-#endif
-#ifdef EAI_SOCKTYPE
-    PyModule_AddIntConstant(m, "EAI_SOCKTYPE", EAI_SOCKTYPE);
-#endif
-#ifdef EAI_SYSTEM
-    PyModule_AddIntConstant(m, "EAI_SYSTEM", EAI_SYSTEM);
-#endif
-#ifdef EAI_BADHINTS
-    PyModule_AddIntConstant(m, "EAI_BADHINTS", EAI_BADHINTS);
-#endif
-#ifdef EAI_PROTOCOL
-    PyModule_AddIntConstant(m, "EAI_PROTOCOL", EAI_PROTOCOL);
-#endif
-#ifdef EAI_MAX
-    PyModule_AddIntConstant(m, "EAI_MAX", EAI_MAX);
-#endif
-#ifdef AI_PASSIVE
-    PyModule_AddIntConstant(m, "AI_PASSIVE", AI_PASSIVE);
-#endif
-#ifdef AI_CANONNAME
-    PyModule_AddIntConstant(m, "AI_CANONNAME", AI_CANONNAME);
-#endif
-#ifdef AI_NUMERICHOST
-    PyModule_AddIntConstant(m, "AI_NUMERICHOST", AI_NUMERICHOST);
-#endif
-#ifdef AI_NUMERICSERV
-    PyModule_AddIntConstant(m, "AI_NUMERICSERV", AI_NUMERICSERV);
-#endif
-#ifdef AI_MASK
-    PyModule_AddIntConstant(m, "AI_MASK", AI_MASK);
-#endif
-#ifdef AI_ALL
-    PyModule_AddIntConstant(m, "AI_ALL", AI_ALL);
-#endif
-#ifdef AI_V4MAPPED_CFG
-    PyModule_AddIntConstant(m, "AI_V4MAPPED_CFG", AI_V4MAPPED_CFG);
-#endif
-#ifdef AI_ADDRCONFIG
-    PyModule_AddIntConstant(m, "AI_ADDRCONFIG", AI_ADDRCONFIG);
-#endif
-#ifdef AI_V4MAPPED
-    PyModule_AddIntConstant(m, "AI_V4MAPPED", AI_V4MAPPED);
-#endif
-#ifdef AI_DEFAULT
-    PyModule_AddIntConstant(m, "AI_DEFAULT", AI_DEFAULT);
-#endif
-#ifdef NI_MAXHOST
-    PyModule_AddIntConstant(m, "NI_MAXHOST", NI_MAXHOST);
-#endif
-#ifdef NI_MAXSERV
-    PyModule_AddIntConstant(m, "NI_MAXSERV", NI_MAXSERV);
-#endif
-#ifdef NI_NOFQDN
-    PyModule_AddIntConstant(m, "NI_NOFQDN", NI_NOFQDN);
-#endif
-#ifdef NI_NUMERICHOST
-    PyModule_AddIntConstant(m, "NI_NUMERICHOST", NI_NUMERICHOST);
-#endif
-#ifdef NI_NAMEREQD
-    PyModule_AddIntConstant(m, "NI_NAMEREQD", NI_NAMEREQD);
-#endif
-#ifdef NI_NUMERICSERV
-    PyModule_AddIntConstant(m, "NI_NUMERICSERV", NI_NUMERICSERV);
-#endif
-#ifdef NI_DGRAM
-    PyModule_AddIntConstant(m, "NI_DGRAM", NI_DGRAM);
-#endif
-
-    /* shutdown() parameters */
-#ifdef SHUT_RD
-    PyModule_AddIntConstant(m, "SHUT_RD", SHUT_RD);
-#elif defined(SD_RECEIVE)
-    PyModule_AddIntConstant(m, "SHUT_RD", SD_RECEIVE);
-#else
-    PyModule_AddIntConstant(m, "SHUT_RD", 0);
-#endif
-#ifdef SHUT_WR
-    PyModule_AddIntConstant(m, "SHUT_WR", SHUT_WR);
-#elif defined(SD_SEND)
-    PyModule_AddIntConstant(m, "SHUT_WR", SD_SEND);
-#else
-    PyModule_AddIntConstant(m, "SHUT_WR", 1);
-#endif
-#ifdef SHUT_RDWR
-    PyModule_AddIntConstant(m, "SHUT_RDWR", SHUT_RDWR);
-#elif defined(SD_BOTH)
-    PyModule_AddIntConstant(m, "SHUT_RDWR", SD_BOTH);
-#else
-    PyModule_AddIntConstant(m, "SHUT_RDWR", 2);
-#endif
-
-#ifdef SIO_RCVALL
-    {
-        DWORD codes[] = {SIO_RCVALL, SIO_KEEPALIVE_VALS};
-        const char *names[] = {"SIO_RCVALL", "SIO_KEEPALIVE_VALS"};
-        int i;
-        for(i = 0; i<sizeof(codes)/sizeof(*codes); ++i) {
-            PyObject *tmp;
-            tmp = PyLong_FromUnsignedLong(codes[i]);
-            if (tmp == NULL)
-                return;
-            PyModule_AddObject(m, names[i], tmp);
-        }
-    }
-    PyModule_AddIntConstant(m, "RCVALL_OFF", RCVALL_OFF);
-    PyModule_AddIntConstant(m, "RCVALL_ON", RCVALL_ON);
-    PyModule_AddIntConstant(m, "RCVALL_SOCKETLEVELONLY", RCVALL_SOCKETLEVELONLY);
-#ifdef RCVALL_IPLEVEL
-    PyModule_AddIntConstant(m, "RCVALL_IPLEVEL", RCVALL_IPLEVEL);
-#endif
-#ifdef RCVALL_MAX
-    PyModule_AddIntConstant(m, "RCVALL_MAX", RCVALL_MAX);
-#endif
-#endif /* _MSTCPIP_ */
-
-    /* Initialize gethostbyname lock */
-#if defined(USE_GETHOSTBYNAME_LOCK) || defined(USE_GETADDRINFO_LOCK)
-    netdb_lock = PyThread_allocate_lock();
-#endif
-}
-
-
-#ifndef HAVE_INET_PTON
-#if !defined(NTDDI_VERSION) || (NTDDI_VERSION < NTDDI_LONGHORN)
-
-/* Simplistic emulation code for inet_pton that only works for IPv4 */
-/* These are not exposed because they do not set errno properly */
-
-int
-inet_pton(int af, const char *src, void *dst)
-{
-    if (af == AF_INET) {
-#if (SIZEOF_INT != 4)
-#error "Not sure if in_addr_t exists and int is not 32-bits."
-#endif
-        unsigned int packed_addr;
-        packed_addr = inet_addr(src);
-        if (packed_addr == INADDR_NONE)
-            return 0;
-        memcpy(dst, &packed_addr, 4);
-        return 1;
-    }
-    /* Should set errno to EAFNOSUPPORT */
-    return -1;
-}
-
-const char *
-inet_ntop(int af, const void *src, char *dst, socklen_t size)
-{
-    if (af == AF_INET) {
-        struct in_addr packed_addr;
-        if (size < 16)
-            /* Should set errno to ENOSPC. */
-            return NULL;
-        memcpy(&packed_addr, src, sizeof(packed_addr));
-        return strncpy(dst, inet_ntoa(packed_addr), size);
-    }
-    /* Should set errno to EAFNOSUPPORT */
-    return NULL;
-}
-
-#endif
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/socketmodule.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/socketmodule.h
deleted file mode 100644
index 1190bfd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/socketmodule.h
+++ /dev/null
@@ -1,250 +0,0 @@
-/* Socket module header file */
-
-/* Includes needed for the sockaddr_* symbols below */
-#ifndef MS_WINDOWS
-#ifdef __VMS
-#   include <socket.h>
-# else
-#   include <sys/socket.h>
-# endif
-# include <netinet/in.h>
-# if !(defined(UEFI_C_SOURCE) || defined(__BEOS__) || defined(__CYGWIN__) || (defined(PYOS_OS2) && defined(PYCC_VACPP)))
-#  include <netinet/tcp.h>
-# endif
-
-#else /* MS_WINDOWS */
-# include <winsock2.h>
-# include <ws2tcpip.h>
-/* VC6 is shipped with old platform headers, and does not have MSTcpIP.h
- * Separate SDKs have all the functions we want, but older ones don't have
- * any version information.
- * I use SIO_GET_MULTICAST_FILTER to detect a decent SDK.
- */
-# ifdef SIO_GET_MULTICAST_FILTER
-#  include <MSTcpIP.h> /* for SIO_RCVALL */
-#  define HAVE_ADDRINFO
-#  define HAVE_SOCKADDR_STORAGE
-#  define HAVE_GETADDRINFO
-#  define HAVE_GETNAMEINFO
-#  define ENABLE_IPV6
-# else
-typedef int socklen_t;
-# endif /* IPPROTO_IPV6 */
-#endif /* MS_WINDOWS */
-
-#ifdef HAVE_SYS_UN_H
-# include <sys/un.h>
-#else
-# undef AF_UNIX
-#endif
-
-#ifdef HAVE_LINUX_NETLINK_H
-# ifdef HAVE_ASM_TYPES_H
-#  include <asm/types.h>
-# endif
-# include <linux/netlink.h>
-#else
-#  undef AF_NETLINK
-#endif
-
-#ifdef HAVE_BLUETOOTH_BLUETOOTH_H
-#include <bluetooth/bluetooth.h>
-#include <bluetooth/rfcomm.h>
-#include <bluetooth/l2cap.h>
-#include <bluetooth/sco.h>
-#include <bluetooth/hci.h>
-#endif
-
-#ifdef HAVE_BLUETOOTH_H
-#include <bluetooth.h>
-#endif
-
-#ifdef HAVE_NETPACKET_PACKET_H
-# include <sys/ioctl.h>
-# include <net/if.h>
-# include <netpacket/packet.h>
-#endif
-
-#ifdef HAVE_LINUX_TIPC_H
-# include <linux/tipc.h>
-#endif
-
-#ifndef Py__SOCKET_H
-#define Py__SOCKET_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Python module and C API name */
-#define PySocket_MODULE_NAME    "_socket"
-#define PySocket_CAPI_NAME      "CAPI"
-#define PySocket_CAPSULE_NAME  (PySocket_MODULE_NAME "." PySocket_CAPI_NAME)
-
-/* Abstract the socket file descriptor type */
-#ifdef MS_WINDOWS
-typedef SOCKET SOCKET_T;
-#       ifdef MS_WIN64
-#               define SIZEOF_SOCKET_T 8
-#       else
-#               define SIZEOF_SOCKET_T 4
-#       endif
-#else
-typedef int SOCKET_T;
-#       define SIZEOF_SOCKET_T SIZEOF_INT
-#endif
-
-/* Socket address */
-typedef union sock_addr {
-    struct sockaddr_in in;
-#ifdef AF_UNIX
-    struct sockaddr_un un;
-#endif
-#ifdef AF_NETLINK
-    struct sockaddr_nl nl;
-#endif
-#ifdef ENABLE_IPV6
-    struct sockaddr_in6 in6;
-    struct sockaddr_storage storage;
-#endif
-#ifdef HAVE_BLUETOOTH_BLUETOOTH_H
-    struct sockaddr_l2 bt_l2;
-    struct sockaddr_rc bt_rc;
-    struct sockaddr_sco bt_sco;
-    struct sockaddr_hci bt_hci;
-#endif
-#ifdef HAVE_NETPACKET_PACKET_H
-    struct sockaddr_ll ll;
-#endif
-} sock_addr_t;
-
-/* The object holding a socket.  It holds some extra information,
-   like the address family, which is used to decode socket address
-   arguments properly. */
-
-typedef struct {
-    PyObject_HEAD
-    SOCKET_T sock_fd;           /* Socket file descriptor */
-    int sock_family;            /* Address family, e.g., AF_INET */
-    int sock_type;              /* Socket type, e.g., SOCK_STREAM */
-    int sock_proto;             /* Protocol type, usually 0 */
-    PyObject *(*errorhandler)(void); /* Error handler; checks
-                                        errno, returns NULL and
-                                        sets a Python exception */
-    double sock_timeout;                 /* Operation timeout in seconds;
-                                        0.0 means non-blocking */
-} PySocketSockObject;
-
-/* --- C API ----------------------------------------------------*/
-
-/* Short explanation of what this C API export mechanism does
-   and how it works:
-
-    The _ssl module needs access to the type object defined in
-    the _socket module. Since cross-DLL linking introduces a lot of
-    problems on many platforms, the "trick" is to wrap the
-    C API of a module in a struct which then gets exported to
-    other modules via a PyCapsule.
-
-    The code in socketmodule.c defines this struct (which currently
-    only contains the type object reference, but could very
-    well also include other C APIs needed by other modules)
-    and exports it as PyCapsule via the module dictionary
-    under the name "CAPI".
-
-    Other modules can now include the socketmodule.h file
-    which defines the needed C APIs to import and set up
-    a static copy of this struct in the importing module.
-
-    After initialization, the importing module can then
-    access the C APIs from the _socket module by simply
-    referring to the static struct, e.g.
-
-    Load _socket module and its C API; this sets up the global
-    PySocketModule:
-
-    if (PySocketModule_ImportModuleAndAPI())
-        return;
-
-
-    Now use the C API as if it were defined in the using
-    module:
-
-    if (!PyArg_ParseTuple(args, "O!|zz:ssl",
-
-                          PySocketModule.Sock_Type,
-
-                          (PyObject*)&Sock,
-                          &key_file, &cert_file))
-        return NULL;
-
-    Support could easily be extended to export more C APIs/symbols
-    this way. Currently, only the type object is exported,
-    other candidates would be socket constructors and socket
-    access functions.
-
-*/
-
-/* C API for usage by other Python modules */
-typedef struct {
-    PyTypeObject *Sock_Type;
-    PyObject *error;
-} PySocketModule_APIObject;
-
-/* XXX The net effect of the following appears to be to define a function
-   XXX named PySocketModule_APIObject in _ssl.c.  It's unclear why it isn't
-   XXX defined there directly.
-
-   >>> It's defined here because other modules might also want to use
-   >>> the C API.
-
-*/
-#ifndef PySocket_BUILDING_SOCKET
-
-/* --- C API ----------------------------------------------------*/
-
-/* Interfacestructure to C API for other modules.
-   Call PySocketModule_ImportModuleAndAPI() to initialize this
-   structure. After that usage is simple:
-
-   if (!PyArg_ParseTuple(args, "O!|zz:ssl",
-                         &PySocketModule.Sock_Type, (PyObject*)&Sock,
-                         &key_file, &cert_file))
-     return NULL;
-   ...
-*/
-
-static
-PySocketModule_APIObject PySocketModule;
-
-/* You *must* call this before using any of the functions in
-   PySocketModule and check its outcome; otherwise all accesses will
-   result in a segfault. Returns 0 on success. */
-
-#ifndef DPRINTF
-# define DPRINTF if (0) printf
-#endif
-
-static
-int PySocketModule_ImportModuleAndAPI(void)
-{
-    void *api;
-
-  DPRINTF(" Loading capsule %s\n", PySocket_CAPSULE_NAME);
-  api = PyCapsule_Import(PySocket_CAPSULE_NAME, 1);
-    if (api == NULL)
-        goto onError;
-    memcpy(&PySocketModule, api, sizeof(PySocketModule));
-    DPRINTF(" API object loaded and initialized.\n");
-    return 0;
-
- onError:
-    DPRINTF(" not found.\n");
-    return -1;
-}
-
-#endif /* !PySocket_BUILDING_SOCKET */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py__SOCKET_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/sre.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/sre.h
deleted file mode 100644
index 591aa7b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/sre.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Secret Labs' Regular Expression Engine
- *
- * regular expression matching engine
- *
- * Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
- *
- * See the _sre.c file for information on usage and redistribution.
- */
-
-#ifndef SRE_INCLUDED
-#define SRE_INCLUDED
-
-#include "sre_constants.h"
-
-/* size of a code word (must be unsigned short or larger, and
-   large enough to hold a Py_UNICODE character) */
-#ifdef Py_UNICODE_WIDE
-#define SRE_CODE Py_UCS4
-#else
-#define SRE_CODE unsigned short
-#endif
-
-typedef struct {
-    PyObject_VAR_HEAD
-    Py_ssize_t groups; /* must be first! */
-    PyObject* groupindex;
-    PyObject* indexgroup;
-    /* compatibility */
-    PyObject* pattern; /* pattern source (or None) */
-    int flags; /* flags used when compiling pattern source */
-    PyObject *weakreflist; /* List of weak references */
-    /* pattern code */
-    Py_ssize_t codesize;
-    SRE_CODE code[1];
-} PatternObject;
-
-#define PatternObject_GetCode(o) (((PatternObject*)(o))->code)
-
-typedef struct {
-    PyObject_VAR_HEAD
-    PyObject* string; /* link to the target string (must be first) */
-    PyObject* regs; /* cached list of matching spans */
-    PatternObject* pattern; /* link to the regex (pattern) object */
-    Py_ssize_t pos, endpos; /* current target slice */
-    Py_ssize_t lastindex; /* last index marker seen by the engine (-1 if none) */
-    Py_ssize_t groups; /* number of groups (start/end marks) */
-    Py_ssize_t mark[1];
-} MatchObject;
-
-typedef unsigned int (*SRE_TOLOWER_HOOK)(unsigned int ch);
-
-/* FIXME: <fl> shouldn't be a constant, really... */
-#define SRE_MARK_SIZE 200
-
-typedef struct SRE_REPEAT_T {
-    Py_ssize_t count;
-    SRE_CODE* pattern; /* points to REPEAT operator arguments */
-    void* last_ptr; /* helper to check for infinite loops */
-    struct SRE_REPEAT_T *prev; /* points to previous repeat context */
-} SRE_REPEAT;
-
-typedef struct {
-    /* string pointers */
-    void* ptr; /* current position (also end of current slice) */
-    void* beginning; /* start of original string */
-    void* start; /* start of current slice */
-    void* end; /* end of original string */
-    /* attributes for the match object */
-    PyObject* string;
-    Py_ssize_t pos, endpos;
-    /* character size */
-    int charsize;
-    /* registers */
-    Py_ssize_t lastindex;
-    Py_ssize_t lastmark;
-    void* mark[SRE_MARK_SIZE];
-    /* dynamically allocated stuff */
-    char* data_stack;
-    size_t data_stack_size;
-    size_t data_stack_base;
-    /* current repeat context */
-    SRE_REPEAT *repeat;
-    /* hooks */
-    SRE_TOLOWER_HOOK lower;
-} SRE_STATE;
-
-typedef struct {
-    PyObject_HEAD
-    PyObject* pattern;
-    SRE_STATE state;
-} ScannerObject;
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/sre_constants.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/sre_constants.h
deleted file mode 100644
index c0e2f0d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/sre_constants.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Secret Labs' Regular Expression Engine
- *
- * regular expression matching engine
- *
- * NOTE: This file is generated by sre_constants.py.  If you need
- * to change anything in here, edit sre_constants.py and run it.
- *
- * Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
- *
- * See the _sre.c file for information on usage and redistribution.
- */
-
-#define SRE_MAGIC 20031017
-#define SRE_OP_FAILURE 0
-#define SRE_OP_SUCCESS 1
-#define SRE_OP_ANY 2
-#define SRE_OP_ANY_ALL 3
-#define SRE_OP_ASSERT 4
-#define SRE_OP_ASSERT_NOT 5
-#define SRE_OP_AT 6
-#define SRE_OP_BRANCH 7
-#define SRE_OP_CALL 8
-#define SRE_OP_CATEGORY 9
-#define SRE_OP_CHARSET 10
-#define SRE_OP_BIGCHARSET 11
-#define SRE_OP_GROUPREF 12
-#define SRE_OP_GROUPREF_EXISTS 13
-#define SRE_OP_GROUPREF_IGNORE 14
-#define SRE_OP_IN 15
-#define SRE_OP_IN_IGNORE 16
-#define SRE_OP_INFO 17
-#define SRE_OP_JUMP 18
-#define SRE_OP_LITERAL 19
-#define SRE_OP_LITERAL_IGNORE 20
-#define SRE_OP_MARK 21
-#define SRE_OP_MAX_UNTIL 22
-#define SRE_OP_MIN_UNTIL 23
-#define SRE_OP_NOT_LITERAL 24
-#define SRE_OP_NOT_LITERAL_IGNORE 25
-#define SRE_OP_NEGATE 26
-#define SRE_OP_RANGE 27
-#define SRE_OP_REPEAT 28
-#define SRE_OP_REPEAT_ONE 29
-#define SRE_OP_SUBPATTERN 30
-#define SRE_OP_MIN_REPEAT_ONE 31
-#define SRE_AT_BEGINNING 0
-#define SRE_AT_BEGINNING_LINE 1
-#define SRE_AT_BEGINNING_STRING 2
-#define SRE_AT_BOUNDARY 3
-#define SRE_AT_NON_BOUNDARY 4
-#define SRE_AT_END 5
-#define SRE_AT_END_LINE 6
-#define SRE_AT_END_STRING 7
-#define SRE_AT_LOC_BOUNDARY 8
-#define SRE_AT_LOC_NON_BOUNDARY 9
-#define SRE_AT_UNI_BOUNDARY 10
-#define SRE_AT_UNI_NON_BOUNDARY 11
-#define SRE_CATEGORY_DIGIT 0
-#define SRE_CATEGORY_NOT_DIGIT 1
-#define SRE_CATEGORY_SPACE 2
-#define SRE_CATEGORY_NOT_SPACE 3
-#define SRE_CATEGORY_WORD 4
-#define SRE_CATEGORY_NOT_WORD 5
-#define SRE_CATEGORY_LINEBREAK 6
-#define SRE_CATEGORY_NOT_LINEBREAK 7
-#define SRE_CATEGORY_LOC_WORD 8
-#define SRE_CATEGORY_LOC_NOT_WORD 9
-#define SRE_CATEGORY_UNI_DIGIT 10
-#define SRE_CATEGORY_UNI_NOT_DIGIT 11
-#define SRE_CATEGORY_UNI_SPACE 12
-#define SRE_CATEGORY_UNI_NOT_SPACE 13
-#define SRE_CATEGORY_UNI_WORD 14
-#define SRE_CATEGORY_UNI_NOT_WORD 15
-#define SRE_CATEGORY_UNI_LINEBREAK 16
-#define SRE_CATEGORY_UNI_NOT_LINEBREAK 17
-#define SRE_FLAG_TEMPLATE 1
-#define SRE_FLAG_IGNORECASE 2
-#define SRE_FLAG_LOCALE 4
-#define SRE_FLAG_MULTILINE 8
-#define SRE_FLAG_DOTALL 16
-#define SRE_FLAG_UNICODE 32
-#define SRE_FLAG_VERBOSE 64
-#define SRE_INFO_PREFIX 1
-#define SRE_INFO_LITERAL 2
-#define SRE_INFO_CHARSET 4
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/stropmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/stropmodule.c
deleted file mode 100644
index e6a7c15..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/stropmodule.c
+++ /dev/null
@@ -1,1270 +0,0 @@
-/* strop module */
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#include <ctype.h>
-
-PyDoc_STRVAR(strop_module__doc__,
-"Common string manipulations, optimized for speed.\n"
-"\n"
-"Always use \"import string\" rather than referencing\n"
-"this module directly.");
-
-/* XXX This file assumes that the <ctype.h> is*() functions
-   XXX are defined for all 8-bit characters! */
-
-#define WARN if (PyErr_Warn(PyExc_DeprecationWarning, \
-               "strop functions are obsolete; use string methods")) \
-         return NULL
-
-/* The lstrip(), rstrip() and strip() functions are implemented
-   in do_strip(), which uses an additional parameter to indicate what
-   type of strip should occur. */
-
-#define LEFTSTRIP 0
-#define RIGHTSTRIP 1
-#define BOTHSTRIP 2
-
-
-static PyObject *
-split_whitespace(char *s, Py_ssize_t len, Py_ssize_t maxsplit)
-{
-    Py_ssize_t i = 0, j;
-    int err;
-    Py_ssize_t countsplit = 0;
-    PyObject* item;
-    PyObject *list = PyList_New(0);
-
-    if (list == NULL)
-        return NULL;
-
-    while (i < len) {
-        while (i < len && isspace(Py_CHARMASK(s[i]))) {
-            i = i+1;
-        }
-        j = i;
-        while (i < len && !isspace(Py_CHARMASK(s[i]))) {
-            i = i+1;
-        }
-        if (j < i) {
-            item = PyString_FromStringAndSize(s+j, i-j);
-            if (item == NULL)
-                goto finally;
-
-            err = PyList_Append(list, item);
-            Py_DECREF(item);
-            if (err < 0)
-                goto finally;
-
-            countsplit++;
-            while (i < len && isspace(Py_CHARMASK(s[i]))) {
-                i = i+1;
-            }
-            if (maxsplit && (countsplit >= maxsplit) && i < len) {
-                item = PyString_FromStringAndSize(
-                    s+i, len - i);
-                if (item == NULL)
-                    goto finally;
-
-                err = PyList_Append(list, item);
-                Py_DECREF(item);
-                if (err < 0)
-                    goto finally;
-
-                i = len;
-            }
-        }
-    }
-    return list;
-  finally:
-    Py_DECREF(list);
-    return NULL;
-}
-
-
-PyDoc_STRVAR(splitfields__doc__,
-"split(s [,sep [,maxsplit]]) -> list of strings\n"
-"splitfields(s [,sep [,maxsplit]]) -> list of strings\n"
-"\n"
-"Return a list of the words in the string s, using sep as the\n"
-"delimiter string.  If maxsplit is nonzero, splits into at most\n"
-"maxsplit words.  If sep is not specified, any whitespace string\n"
-"is a separator.  Maxsplit defaults to 0.\n"
-"\n"
-"(split and splitfields are synonymous)");
-
-static PyObject *
-strop_splitfields(PyObject *self, PyObject *args)
-{
-    Py_ssize_t len, n, i, j, err;
-    Py_ssize_t splitcount, maxsplit;
-    char *s, *sub;
-    PyObject *list, *item;
-
-    WARN;
-    sub = NULL;
-    n = 0;
-    splitcount = 0;
-    maxsplit = 0;
-    if (!PyArg_ParseTuple(args, "t#|z#n:split", &s, &len, &sub, &n, &maxsplit))
-        return NULL;
-    if (sub == NULL)
-        return split_whitespace(s, len, maxsplit);
-    if (n == 0) {
-        PyErr_SetString(PyExc_ValueError, "empty separator");
-        return NULL;
-    }
-
-    list = PyList_New(0);
-    if (list == NULL)
-        return NULL;
-
-    i = j = 0;
-    while (i+n <= len) {
-        if (s[i] == sub[0] && (n == 1 || memcmp(s+i, sub, n) == 0)) {
-            item = PyString_FromStringAndSize(s+j, i-j);
-            if (item == NULL)
-                goto fail;
-            err = PyList_Append(list, item);
-            Py_DECREF(item);
-            if (err < 0)
-                goto fail;
-            i = j = i + n;
-            splitcount++;
-            if (maxsplit && (splitcount >= maxsplit))
-                break;
-        }
-        else
-            i++;
-    }
-    item = PyString_FromStringAndSize(s+j, len-j);
-    if (item == NULL)
-        goto fail;
-    err = PyList_Append(list, item);
-    Py_DECREF(item);
-    if (err < 0)
-        goto fail;
-
-    return list;
-
- fail:
-    Py_DECREF(list);
-    return NULL;
-}
-
-
-PyDoc_STRVAR(joinfields__doc__,
-"join(list [,sep]) -> string\n"
-"joinfields(list [,sep]) -> string\n"
-"\n"
-"Return a string composed of the words in list, with\n"
-"intervening occurrences of sep.  Sep defaults to a single\n"
-"space.\n"
-"\n"
-"(join and joinfields are synonymous)");
-
-static PyObject *
-strop_joinfields(PyObject *self, PyObject *args)
-{
-    PyObject *seq;
-    char *sep = NULL;
-    Py_ssize_t seqlen, seplen = 0;
-    Py_ssize_t i, reslen = 0, slen = 0, sz = 100;
-    PyObject *res = NULL;
-    char* p = NULL;
-    ssizeargfunc getitemfunc;
-
-    WARN;
-    if (!PyArg_ParseTuple(args, "O|t#:join", &seq, &sep, &seplen))
-        return NULL;
-    if (sep == NULL) {
-        sep = " ";
-        seplen = 1;
-    }
-
-    seqlen = PySequence_Size(seq);
-    if (seqlen < 0 && PyErr_Occurred())
-        return NULL;
-
-    if (seqlen == 1) {
-        /* Optimization if there's only one item */
-        PyObject *item = PySequence_GetItem(seq, 0);
-        if (item && !PyString_Check(item)) {
-            PyErr_SetString(PyExc_TypeError,
-                     "first argument must be sequence of strings");
-            Py_DECREF(item);
-            return NULL;
-        }
-        return item;
-    }
-
-    if (!(res = PyString_FromStringAndSize((char*)NULL, sz)))
-        return NULL;
-    p = PyString_AsString(res);
-
-    /* optimize for lists, since it's the most common case.  all others
-     * (tuples and arbitrary sequences) just use the sequence abstract
-     * interface.
-     */
-    if (PyList_Check(seq)) {
-        for (i = 0; i < seqlen; i++) {
-            PyObject *item = PyList_GET_ITEM(seq, i);
-            if (!PyString_Check(item)) {
-                PyErr_SetString(PyExc_TypeError,
-                "first argument must be sequence of strings");
-                Py_DECREF(res);
-                return NULL;
-            }
-            slen = PyString_GET_SIZE(item);
-            if (slen > PY_SSIZE_T_MAX - reslen ||
-                seplen > PY_SSIZE_T_MAX - reslen - seplen) {
-                PyErr_SetString(PyExc_OverflowError,
-                                "input too long");
-                Py_DECREF(res);
-                return NULL;
-            }
-            while (reslen + slen + seplen >= sz) {
-                if (_PyString_Resize(&res, sz * 2) < 0)
-                    return NULL;
-                sz *= 2;
-                p = PyString_AsString(res) + reslen;
-            }
-            if (i > 0) {
-                memcpy(p, sep, seplen);
-                p += seplen;
-                reslen += seplen;
-            }
-            memcpy(p, PyString_AS_STRING(item), slen);
-            p += slen;
-            reslen += slen;
-        }
-        _PyString_Resize(&res, reslen);
-        return res;
-    }
-
-    if (seq->ob_type->tp_as_sequence == NULL ||
-             (getitemfunc = seq->ob_type->tp_as_sequence->sq_item) == NULL)
-    {
-        PyErr_SetString(PyExc_TypeError,
-                        "first argument must be a sequence");
-        return NULL;
-    }
-    /* This is now type safe */
-    for (i = 0; i < seqlen; i++) {
-        PyObject *item = getitemfunc(seq, i);
-        if (!item || !PyString_Check(item)) {
-            PyErr_SetString(PyExc_TypeError,
-                     "first argument must be sequence of strings");
-            Py_DECREF(res);
-            Py_XDECREF(item);
-            return NULL;
-        }
-        slen = PyString_GET_SIZE(item);
-        if (slen > PY_SSIZE_T_MAX - reslen ||
-            seplen > PY_SSIZE_T_MAX - reslen - seplen) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "input too long");
-            Py_DECREF(res);
-            Py_XDECREF(item);
-            return NULL;
-        }
-        while (reslen + slen + seplen >= sz) {
-            if (_PyString_Resize(&res, sz * 2) < 0) {
-                Py_DECREF(item);
-                return NULL;
-            }
-            sz *= 2;
-            p = PyString_AsString(res) + reslen;
-        }
-        if (i > 0) {
-            memcpy(p, sep, seplen);
-            p += seplen;
-            reslen += seplen;
-        }
-        memcpy(p, PyString_AS_STRING(item), slen);
-        p += slen;
-        reslen += slen;
-        Py_DECREF(item);
-    }
-    _PyString_Resize(&res, reslen);
-    return res;
-}
-
-
-PyDoc_STRVAR(find__doc__,
-"find(s, sub [,start [,end]]) -> in\n"
-"\n"
-"Return the lowest index in s where substring sub is found,\n"
-"such that sub is contained within s[start,end].  Optional\n"
-"arguments start and end are interpreted as in slice notation.\n"
-"\n"
-"Return -1 on failure.");
-
-static PyObject *
-strop_find(PyObject *self, PyObject *args)
-{
-    char *s, *sub;
-    Py_ssize_t len, n, i = 0, last = PY_SSIZE_T_MAX;
-
-    WARN;
-    if (!PyArg_ParseTuple(args, "t#t#|nn:find", &s, &len, &sub, &n, &i, &last))
-        return NULL;
-
-    if (last > len)
-        last = len;
-    if (last < 0)
-        last += len;
-    if (last < 0)
-        last = 0;
-    if (i < 0)
-        i += len;
-    if (i < 0)
-        i = 0;
-
-    if (n == 0 && i <= last)
-        return PyInt_FromLong((long)i);
-
-    last -= n;
-    for (; i <= last; ++i)
-        if (s[i] == sub[0] &&
-            (n == 1 || memcmp(&s[i+1], &sub[1], n-1) == 0))
-            return PyInt_FromLong((long)i);
-
-    return PyInt_FromLong(-1L);
-}
-
-
-PyDoc_STRVAR(rfind__doc__,
-"rfind(s, sub [,start [,end]]) -> int\n"
-"\n"
-"Return the highest index in s where substring sub is found,\n"
-"such that sub is contained within s[start,end].  Optional\n"
-"arguments start and end are interpreted as in slice notation.\n"
-"\n"
-"Return -1 on failure.");
-
-static PyObject *
-strop_rfind(PyObject *self, PyObject *args)
-{
-    char *s, *sub;
-    Py_ssize_t len, n, j;
-    Py_ssize_t i = 0, last = PY_SSIZE_T_MAX;
-
-    WARN;
-    if (!PyArg_ParseTuple(args, "t#t#|nn:rfind", &s, &len, &sub, &n, &i, &last))
-        return NULL;
-
-    if (last > len)
-        last = len;
-    if (last < 0)
-        last += len;
-    if (last < 0)
-        last = 0;
-    if (i < 0)
-        i += len;
-    if (i < 0)
-        i = 0;
-
-    if (n == 0 && i <= last)
-        return PyInt_FromLong((long)last);
-
-    for (j = last-n; j >= i; --j)
-        if (s[j] == sub[0] &&
-            (n == 1 || memcmp(&s[j+1], &sub[1], n-1) == 0))
-            return PyInt_FromLong((long)j);
-
-    return PyInt_FromLong(-1L);
-}
-
-
-static PyObject *
-do_strip(PyObject *args, int striptype)
-{
-    char *s;
-    Py_ssize_t len, i, j;
-
-
-    if (PyString_AsStringAndSize(args, &s, &len))
-        return NULL;
-
-    i = 0;
-    if (striptype != RIGHTSTRIP) {
-        while (i < len && isspace(Py_CHARMASK(s[i]))) {
-            i++;
-        }
-    }
-
-    j = len;
-    if (striptype != LEFTSTRIP) {
-        do {
-            j--;
-        } while (j >= i && isspace(Py_CHARMASK(s[j])));
-        j++;
-    }
-
-    if (i == 0 && j == len) {
-        Py_INCREF(args);
-        return args;
-    }
-    else
-        return PyString_FromStringAndSize(s+i, j-i);
-}
-
-
-PyDoc_STRVAR(strip__doc__,
-"strip(s) -> string\n"
-"\n"
-"Return a copy of the string s with leading and trailing\n"
-"whitespace removed.");
-
-static PyObject *
-strop_strip(PyObject *self, PyObject *args)
-{
-    WARN;
-    return do_strip(args, BOTHSTRIP);
-}
-
-
-PyDoc_STRVAR(lstrip__doc__,
-"lstrip(s) -> string\n"
-"\n"
-"Return a copy of the string s with leading whitespace removed.");
-
-static PyObject *
-strop_lstrip(PyObject *self, PyObject *args)
-{
-    WARN;
-    return do_strip(args, LEFTSTRIP);
-}
-
-
-PyDoc_STRVAR(rstrip__doc__,
-"rstrip(s) -> string\n"
-"\n"
-"Return a copy of the string s with trailing whitespace removed.");
-
-static PyObject *
-strop_rstrip(PyObject *self, PyObject *args)
-{
-    WARN;
-    return do_strip(args, RIGHTSTRIP);
-}
-
-
-PyDoc_STRVAR(lower__doc__,
-"lower(s) -> string\n"
-"\n"
-"Return a copy of the string s converted to lowercase.");
-
-static PyObject *
-strop_lower(PyObject *self, PyObject *args)
-{
-    char *s, *s_new;
-    Py_ssize_t i, n;
-    PyObject *newstr;
-    int changed;
-
-    WARN;
-    if (PyString_AsStringAndSize(args, &s, &n))
-        return NULL;
-    newstr = PyString_FromStringAndSize(NULL, n);
-    if (newstr == NULL)
-        return NULL;
-    s_new = PyString_AsString(newstr);
-    changed = 0;
-    for (i = 0; i < n; i++) {
-        int c = Py_CHARMASK(*s++);
-        if (isupper(c)) {
-            changed = 1;
-            *s_new = tolower(c);
-        } else
-            *s_new = c;
-        s_new++;
-    }
-    if (!changed) {
-        Py_DECREF(newstr);
-        Py_INCREF(args);
-        return args;
-    }
-    return newstr;
-}
-
-
-PyDoc_STRVAR(upper__doc__,
-"upper(s) -> string\n"
-"\n"
-"Return a copy of the string s converted to uppercase.");
-
-static PyObject *
-strop_upper(PyObject *self, PyObject *args)
-{
-    char *s, *s_new;
-    Py_ssize_t i, n;
-    PyObject *newstr;
-    int changed;
-
-    WARN;
-    if (PyString_AsStringAndSize(args, &s, &n))
-        return NULL;
-    newstr = PyString_FromStringAndSize(NULL, n);
-    if (newstr == NULL)
-        return NULL;
-    s_new = PyString_AsString(newstr);
-    changed = 0;
-    for (i = 0; i < n; i++) {
-        int c = Py_CHARMASK(*s++);
-        if (islower(c)) {
-            changed = 1;
-            *s_new = toupper(c);
-        } else
-            *s_new = c;
-        s_new++;
-    }
-    if (!changed) {
-        Py_DECREF(newstr);
-        Py_INCREF(args);
-        return args;
-    }
-    return newstr;
-}
-
-
-PyDoc_STRVAR(capitalize__doc__,
-"capitalize(s) -> string\n"
-"\n"
-"Return a copy of the string s with only its first character\n"
-"capitalized.");
-
-static PyObject *
-strop_capitalize(PyObject *self, PyObject *args)
-{
-    char *s, *s_new;
-    Py_ssize_t i, n;
-    PyObject *newstr;
-    int changed;
-
-    WARN;
-    if (PyString_AsStringAndSize(args, &s, &n))
-        return NULL;
-    newstr = PyString_FromStringAndSize(NULL, n);
-    if (newstr == NULL)
-        return NULL;
-    s_new = PyString_AsString(newstr);
-    changed = 0;
-    if (0 < n) {
-        int c = Py_CHARMASK(*s++);
-        if (islower(c)) {
-            changed = 1;
-            *s_new = toupper(c);
-        } else
-            *s_new = c;
-        s_new++;
-    }
-    for (i = 1; i < n; i++) {
-        int c = Py_CHARMASK(*s++);
-        if (isupper(c)) {
-            changed = 1;
-            *s_new = tolower(c);
-        } else
-            *s_new = c;
-        s_new++;
-    }
-    if (!changed) {
-        Py_DECREF(newstr);
-        Py_INCREF(args);
-        return args;
-    }
-    return newstr;
-}
-
-
-PyDoc_STRVAR(expandtabs__doc__,
-"expandtabs(string, [tabsize]) -> string\n"
-"\n"
-"Expand tabs in a string, i.e. replace them by one or more spaces,\n"
-"depending on the current column and the given tab size (default 8).\n"
-"The column number is reset to zero after each newline occurring in the\n"
-"string.  This doesn't understand other non-printing characters.");
-
-static PyObject *
-strop_expandtabs(PyObject *self, PyObject *args)
-{
-    /* Original by Fredrik Lundh */
-    char* e;
-    char* p;
-    char* q;
-    Py_ssize_t i, j, old_j;
-    PyObject* out;
-    char* string;
-    Py_ssize_t stringlen;
-    int tabsize = 8;
-
-    WARN;
-    /* Get arguments */
-    if (!PyArg_ParseTuple(args, "s#|i:expandtabs", &string, &stringlen, &tabsize))
-        return NULL;
-    if (tabsize < 1) {
-        PyErr_SetString(PyExc_ValueError,
-                        "tabsize must be at least 1");
-        return NULL;
-    }
-
-    /* First pass: determine size of output string */
-    i = j = old_j = 0; /* j: current column; i: total of previous lines */
-    e = string + stringlen;
-    for (p = string; p < e; p++) {
-        if (*p == '\t') {
-            j += tabsize - (j%tabsize);
-            if (old_j > j) {
-                PyErr_SetString(PyExc_OverflowError,
-                                "new string is too long");
-                return NULL;
-            }
-            old_j = j;
-        } else {
-            j++;
-            if (*p == '\n') {
-                i += j;
-                j = 0;
-            }
-        }
-    }
-
-    if ((i + j) < 0) {
-        PyErr_SetString(PyExc_OverflowError, "new string is too long");
-        return NULL;
-    }
-
-    /* Second pass: create output string and fill it */
-    out = PyString_FromStringAndSize(NULL, i+j);
-    if (out == NULL)
-        return NULL;
-
-    i = 0;
-    q = PyString_AS_STRING(out);
-
-    for (p = string; p < e; p++) {
-        if (*p == '\t') {
-            j = tabsize - (i%tabsize);
-            i += j;
-            while (j-- > 0)
-                *q++ = ' ';
-        } else {
-            *q++ = *p;
-            i++;
-            if (*p == '\n')
-                i = 0;
-        }
-    }
-
-    return out;
-}
-
-
-PyDoc_STRVAR(count__doc__,
-"count(s, sub[, start[, end]]) -> int\n"
-"\n"
-"Return the number of occurrences of substring sub in string\n"
-"s[start:end].  Optional arguments start and end are\n"
-"interpreted as in slice notation.");
-
-static PyObject *
-strop_count(PyObject *self, PyObject *args)
-{
-    char *s, *sub;
-    Py_ssize_t len, n;
-    Py_ssize_t i = 0, last = PY_SSIZE_T_MAX;
-    Py_ssize_t m, r;
-
-    WARN;
-    if (!PyArg_ParseTuple(args, "t#t#|nn:count", &s, &len, &sub, &n, &i, &last))
-        return NULL;
-    if (last > len)
-        last = len;
-    if (last < 0)
-        last += len;
-    if (last < 0)
-        last = 0;
-    if (i < 0)
-        i += len;
-    if (i < 0)
-        i = 0;
-    m = last + 1 - n;
-    if (n == 0)
-        return PyInt_FromLong((long) (m-i));
-
-    r = 0;
-    while (i < m) {
-        if (!memcmp(s+i, sub, n)) {
-            r++;
-            i += n;
-        } else {
-            i++;
-        }
-    }
-    return PyInt_FromLong((long) r);
-}
-
-
-PyDoc_STRVAR(swapcase__doc__,
-"swapcase(s) -> string\n"
-"\n"
-"Return a copy of the string s with upper case characters\n"
-"converted to lowercase and vice versa.");
-
-static PyObject *
-strop_swapcase(PyObject *self, PyObject *args)
-{
-    char *s, *s_new;
-    Py_ssize_t i, n;
-    PyObject *newstr;
-    int changed;
-
-    WARN;
-    if (PyString_AsStringAndSize(args, &s, &n))
-        return NULL;
-    newstr = PyString_FromStringAndSize(NULL, n);
-    if (newstr == NULL)
-        return NULL;
-    s_new = PyString_AsString(newstr);
-    changed = 0;
-    for (i = 0; i < n; i++) {
-        int c = Py_CHARMASK(*s++);
-        if (islower(c)) {
-            changed = 1;
-            *s_new = toupper(c);
-        }
-        else if (isupper(c)) {
-            changed = 1;
-            *s_new = tolower(c);
-        }
-        else
-            *s_new = c;
-        s_new++;
-    }
-    if (!changed) {
-        Py_DECREF(newstr);
-        Py_INCREF(args);
-        return args;
-    }
-    return newstr;
-}
-
-
-PyDoc_STRVAR(atoi__doc__,
-"atoi(s [,base]) -> int\n"
-"\n"
-"Return the integer represented by the string s in the given\n"
-"base, which defaults to 10.  The string s must consist of one\n"
-"or more digits, possibly preceded by a sign.  If base is 0, it\n"
-"is chosen from the leading characters of s, 0 for octal, 0x or\n"
-"0X for hexadecimal.  If base is 16, a preceding 0x or 0X is\n"
-"accepted.");
-
-static PyObject *
-strop_atoi(PyObject *self, PyObject *args)
-{
-    char *s, *end;
-    int base = 10;
-    long x;
-    char buffer[256]; /* For errors */
-
-    WARN;
-    if (!PyArg_ParseTuple(args, "s|i:atoi", &s, &base))
-        return NULL;
-
-    if ((base != 0 && base < 2) || base > 36) {
-        PyErr_SetString(PyExc_ValueError, "invalid base for atoi()");
-        return NULL;
-    }
-
-    while (*s && isspace(Py_CHARMASK(*s)))
-        s++;
-    errno = 0;
-    if (base == 0 && s[0] == '0')
-        x = (long) PyOS_strtoul(s, &end, base);
-    else
-        x = PyOS_strtol(s, &end, base);
-    if (end == s || !isalnum(Py_CHARMASK(end[-1])))
-        goto bad;
-    while (*end && isspace(Py_CHARMASK(*end)))
-        end++;
-    if (*end != '\0') {
-  bad:
-        PyOS_snprintf(buffer, sizeof(buffer),
-                      "invalid literal for atoi(): %.200s", s);
-        PyErr_SetString(PyExc_ValueError, buffer);
-        return NULL;
-    }
-    else if (errno != 0) {
-        PyOS_snprintf(buffer, sizeof(buffer),
-                      "atoi() literal too large: %.200s", s);
-        PyErr_SetString(PyExc_ValueError, buffer);
-        return NULL;
-    }
-    return PyInt_FromLong(x);
-}
-
-
-PyDoc_STRVAR(atol__doc__,
-"atol(s [,base]) -> long\n"
-"\n"
-"Return the long integer represented by the string s in the\n"
-"given base, which defaults to 10.  The string s must consist\n"
-"of one or more digits, possibly preceded by a sign.  If base\n"
-"is 0, it is chosen from the leading characters of s, 0 for\n"
-"octal, 0x or 0X for hexadecimal.  If base is 16, a preceding\n"
-"0x or 0X is accepted.  A trailing L or l is not accepted,\n"
-"unless base is 0.");
-
-static PyObject *
-strop_atol(PyObject *self, PyObject *args)
-{
-    char *s, *end;
-    int base = 10;
-    PyObject *x;
-    char buffer[256]; /* For errors */
-
-    WARN;
-    if (!PyArg_ParseTuple(args, "s|i:atol", &s, &base))
-        return NULL;
-
-    if ((base != 0 && base < 2) || base > 36) {
-        PyErr_SetString(PyExc_ValueError, "invalid base for atol()");
-        return NULL;
-    }
-
-    while (*s && isspace(Py_CHARMASK(*s)))
-        s++;
-    if (s[0] == '\0') {
-        PyErr_SetString(PyExc_ValueError, "empty string for atol()");
-        return NULL;
-    }
-    x = PyLong_FromString(s, &end, base);
-    if (x == NULL)
-        return NULL;
-    if (base == 0 && (*end == 'l' || *end == 'L'))
-        end++;
-    while (*end && isspace(Py_CHARMASK(*end)))
-        end++;
-    if (*end != '\0') {
-        PyOS_snprintf(buffer, sizeof(buffer),
-                      "invalid literal for atol(): %.200s", s);
-        PyErr_SetString(PyExc_ValueError, buffer);
-        Py_DECREF(x);
-        return NULL;
-    }
-    return x;
-}
-
-
-PyDoc_STRVAR(atof__doc__,
-"atof(s) -> float\n"
-"\n"
-"Return the floating point number represented by the string s.");
-
-static PyObject *
-strop_atof(PyObject *self, PyObject *args)
-{
-    char *s, *end;
-    double x;
-    char buffer[256]; /* For errors */
-
-    WARN;
-    if (!PyArg_ParseTuple(args, "s:atof", &s))
-        return NULL;
-    while (*s && isspace(Py_CHARMASK(*s)))
-        s++;
-    if (s[0] == '\0') {
-        PyErr_SetString(PyExc_ValueError, "empty string for atof()");
-        return NULL;
-    }
-
-    PyFPE_START_PROTECT("strop_atof", return 0)
-    x = PyOS_string_to_double(s, &end, PyExc_OverflowError);
-    PyFPE_END_PROTECT(x)
-    if (x == -1 && PyErr_Occurred())
-        return NULL;
-    while (*end && isspace(Py_CHARMASK(*end)))
-        end++;
-    if (*end != '\0') {
-        PyOS_snprintf(buffer, sizeof(buffer),
-                      "invalid literal for atof(): %.200s", s);
-        PyErr_SetString(PyExc_ValueError, buffer);
-        return NULL;
-    }
-    return PyFloat_FromDouble(x);
-}
-
-
-PyDoc_STRVAR(maketrans__doc__,
-"maketrans(frm, to) -> string\n"
-"\n"
-"Return a translation table (a string of 256 bytes long)\n"
-"suitable for use in string.translate.  The strings frm and to\n"
-"must be of the same length.");
-
-static PyObject *
-strop_maketrans(PyObject *self, PyObject *args)
-{
-    unsigned char *c, *from=NULL, *to=NULL;
-    Py_ssize_t i, fromlen=0, tolen=0;
-    PyObject *result;
-
-    if (!PyArg_ParseTuple(args, "t#t#:maketrans", &from, &fromlen, &to, &tolen))
-        return NULL;
-
-    if (fromlen != tolen) {
-        PyErr_SetString(PyExc_ValueError,
-                        "maketrans arguments must have same length");
-        return NULL;
-    }
-
-    result = PyString_FromStringAndSize((char *)NULL, 256);
-    if (result == NULL)
-        return NULL;
-    c = (unsigned char *) PyString_AS_STRING((PyStringObject *)result);
-    for (i = 0; i < 256; i++)
-        c[i]=(unsigned char)i;
-    for (i = 0; i < fromlen; i++)
-        c[from[i]]=to[i];
-
-    return result;
-}
-
-
-PyDoc_STRVAR(translate__doc__,
-"translate(s,table [,deletechars]) -> string\n"
-"\n"
-"Return a copy of the string s, where all characters occurring\n"
-"in the optional argument deletechars are removed, and the\n"
-"remaining characters have been mapped through the given\n"
-"translation table, which must be a string of length 256.");
-
-static PyObject *
-strop_translate(PyObject *self, PyObject *args)
-{
-    register char *input, *table, *output;
-    Py_ssize_t i;
-    int c, changed = 0;
-    PyObject *input_obj;
-    char *table1, *output_start, *del_table=NULL;
-    Py_ssize_t inlen, tablen, dellen = 0;
-    PyObject *result;
-    int trans_table[256];
-
-    WARN;
-    if (!PyArg_ParseTuple(args, "St#|t#:translate", &input_obj,
-                          &table1, &tablen, &del_table, &dellen))
-        return NULL;
-    if (tablen != 256) {
-        PyErr_SetString(PyExc_ValueError,
-                      "translation table must be 256 characters long");
-        return NULL;
-    }
-
-    table = table1;
-    inlen = PyString_GET_SIZE(input_obj);
-    result = PyString_FromStringAndSize((char *)NULL, inlen);
-    if (result == NULL)
-        return NULL;
-    output_start = output = PyString_AsString(result);
-    input = PyString_AsString(input_obj);
-
-    if (dellen == 0) {
-        /* If no deletions are required, use faster code */
-        for (i = inlen; --i >= 0; ) {
-            c = Py_CHARMASK(*input++);
-            if (Py_CHARMASK((*output++ = table[c])) != c)
-                changed = 1;
-        }
-        if (changed)
-            return result;
-        Py_DECREF(result);
-        Py_INCREF(input_obj);
-        return input_obj;
-    }
-
-    for (i = 0; i < 256; i++)
-        trans_table[i] = Py_CHARMASK(table[i]);
-
-    for (i = 0; i < dellen; i++)
-        trans_table[(int) Py_CHARMASK(del_table[i])] = -1;
-
-    for (i = inlen; --i >= 0; ) {
-        c = Py_CHARMASK(*input++);
-        if (trans_table[c] != -1)
-            if (Py_CHARMASK(*output++ = (char)trans_table[c]) == c)
-                continue;
-        changed = 1;
-    }
-    if (!changed) {
-        Py_DECREF(result);
-        Py_INCREF(input_obj);
-        return input_obj;
-    }
-    /* Fix the size of the resulting string */
-    if (inlen > 0)
-        _PyString_Resize(&result, output - output_start);
-    return result;
-}
-
-
-/* What follows is used for implementing replace().  Perry Stoll. */
-
-/*
-  mymemfind
-
-  strstr replacement for arbitrary blocks of memory.
-
-  Locates the first occurrence in the memory pointed to by MEM of the
-  contents of memory pointed to by PAT.  Returns the index into MEM if
-  found, or -1 if not found.  If len of PAT is greater than length of
-  MEM, the function returns -1.
-*/
-static Py_ssize_t
-mymemfind(const char *mem, Py_ssize_t len, const char *pat, Py_ssize_t pat_len)
-{
-    register Py_ssize_t ii;
-
-    /* pattern can not occur in the last pat_len-1 chars */
-    len -= pat_len;
-
-    for (ii = 0; ii <= len; ii++) {
-        if (mem[ii] == pat[0] &&
-            (pat_len == 1 ||
-             memcmp(&mem[ii+1], &pat[1], pat_len-1) == 0)) {
-            return ii;
-        }
-    }
-    return -1;
-}
-
-/*
-  mymemcnt
-
-   Return the number of distinct times PAT is found in MEM.
-   meaning mem=1111 and pat==11 returns 2.
-       mem=11111 and pat==11 also return 2.
- */
-static Py_ssize_t
-mymemcnt(const char *mem, Py_ssize_t len, const char *pat, Py_ssize_t pat_len)
-{
-    register Py_ssize_t offset = 0;
-    Py_ssize_t nfound = 0;
-
-    while (len >= 0) {
-        offset = mymemfind(mem, len, pat, pat_len);
-        if (offset == -1)
-            break;
-        mem += offset + pat_len;
-        len -= offset + pat_len;
-        nfound++;
-    }
-    return nfound;
-}
-
-/*
-   mymemreplace
-
-   Return a string in which all occurrences of PAT in memory STR are
-   replaced with SUB.
-
-   If length of PAT is less than length of STR or there are no occurrences
-   of PAT in STR, then the original string is returned. Otherwise, a new
-   string is allocated here and returned.
-
-   on return, out_len is:
-       the length of output string, or
-       -1 if the input string is returned, or
-       unchanged if an error occurs (no memory).
-
-   return value is:
-       the new string allocated locally, or
-       NULL if an error occurred.
-*/
-static char *
-mymemreplace(const char *str, Py_ssize_t len,           /* input string */
-         const char *pat, Py_ssize_t pat_len,           /* pattern string to find */
-         const char *sub, Py_ssize_t sub_len,           /* substitution string */
-         Py_ssize_t count,                              /* number of replacements */
-         Py_ssize_t *out_len)
-{
-    char *out_s;
-    char *new_s;
-    Py_ssize_t nfound, offset, new_len;
-
-    if (len == 0 || pat_len > len)
-        goto return_same;
-
-    /* find length of output string */
-    nfound = mymemcnt(str, len, pat, pat_len);
-    if (count < 0)
-        count = PY_SSIZE_T_MAX;
-    else if (nfound > count)
-        nfound = count;
-    if (nfound == 0)
-        goto return_same;
-
-    new_len = len + nfound*(sub_len - pat_len);
-    if (new_len == 0) {
-        /* Have to allocate something for the caller to free(). */
-        out_s = (char *)PyMem_MALLOC(1);
-        if (out_s == NULL)
-            return NULL;
-        out_s[0] = '\0';
-    }
-    else {
-        assert(new_len > 0);
-        new_s = (char *)PyMem_MALLOC(new_len);
-        if (new_s == NULL)
-            return NULL;
-        out_s = new_s;
-
-        for (; count > 0 && len > 0; --count) {
-            /* find index of next instance of pattern */
-            offset = mymemfind(str, len, pat, pat_len);
-            if (offset == -1)
-                break;
-
-            /* copy non matching part of input string */
-            memcpy(new_s, str, offset);
-            str += offset + pat_len;
-            len -= offset + pat_len;
-
-            /* copy substitute into the output string */
-            new_s += offset;
-            memcpy(new_s, sub, sub_len);
-            new_s += sub_len;
-        }
-        /* copy any remaining values into output string */
-        if (len > 0)
-            memcpy(new_s, str, len);
-    }
-    *out_len = new_len;
-    return out_s;
-
-  return_same:
-    *out_len = -1;
-    return (char *)str; /* cast away const */
-}
-
-
-PyDoc_STRVAR(replace__doc__,
-"replace (str, old, new[, maxsplit]) -> string\n"
-"\n"
-"Return a copy of string str with all occurrences of substring\n"
-"old replaced by new. If the optional argument maxsplit is\n"
-"given, only the first maxsplit occurrences are replaced.");
-
-static PyObject *
-strop_replace(PyObject *self, PyObject *args)
-{
-    char *str, *pat,*sub,*new_s;
-    Py_ssize_t len,pat_len,sub_len,out_len;
-    Py_ssize_t count = -1;
-    PyObject *newstr;
-
-    WARN;
-    if (!PyArg_ParseTuple(args, "t#t#t#|n:replace",
-                          &str, &len, &pat, &pat_len, &sub, &sub_len,
-                          &count))
-        return NULL;
-    if (pat_len <= 0) {
-        PyErr_SetString(PyExc_ValueError, "empty pattern string");
-        return NULL;
-    }
-    /* CAUTION:  strop treats a replace count of 0 as infinity, unlke
-     * current (2.1) string.py and string methods.  Preserve this for
-     * ... well, hard to say for what <wink>.
-     */
-    if (count == 0)
-        count = -1;
-    new_s = mymemreplace(str,len,pat,pat_len,sub,sub_len,count,&out_len);
-    if (new_s == NULL) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-    if (out_len == -1) {
-        /* we're returning another reference to the input string */
-        newstr = PyTuple_GetItem(args, 0);
-        Py_XINCREF(newstr);
-    }
-    else {
-        newstr = PyString_FromStringAndSize(new_s, out_len);
-        PyMem_FREE(new_s);
-    }
-    return newstr;
-}
-
-
-/* List of functions defined in the module */
-
-static PyMethodDef
-strop_methods[] = {
-    {"atof",            strop_atof,        METH_VARARGS, atof__doc__},
-    {"atoi",            strop_atoi,        METH_VARARGS, atoi__doc__},
-    {"atol",            strop_atol,        METH_VARARGS, atol__doc__},
-    {"capitalize",      strop_capitalize,  METH_O,       capitalize__doc__},
-    {"count",           strop_count,       METH_VARARGS, count__doc__},
-    {"expandtabs",      strop_expandtabs,  METH_VARARGS, expandtabs__doc__},
-    {"find",            strop_find,        METH_VARARGS, find__doc__},
-    {"join",            strop_joinfields,  METH_VARARGS, joinfields__doc__},
-    {"joinfields",      strop_joinfields,  METH_VARARGS, joinfields__doc__},
-    {"lstrip",          strop_lstrip,      METH_O,       lstrip__doc__},
-    {"lower",           strop_lower,       METH_O,       lower__doc__},
-    {"maketrans",       strop_maketrans,   METH_VARARGS, maketrans__doc__},
-    {"replace",         strop_replace,     METH_VARARGS, replace__doc__},
-    {"rfind",           strop_rfind,       METH_VARARGS, rfind__doc__},
-    {"rstrip",          strop_rstrip,      METH_O,       rstrip__doc__},
-    {"split",           strop_splitfields, METH_VARARGS, splitfields__doc__},
-    {"splitfields",     strop_splitfields, METH_VARARGS, splitfields__doc__},
-    {"strip",           strop_strip,       METH_O,       strip__doc__},
-    {"swapcase",        strop_swapcase,    METH_O,       swapcase__doc__},
-    {"translate",       strop_translate,   METH_VARARGS, translate__doc__},
-    {"upper",           strop_upper,       METH_O,       upper__doc__},
-    {NULL,              NULL}   /* sentinel */
-};
-
-
-PyMODINIT_FUNC
-initstrop(void)
-{
-    PyObject *m, *s;
-    char buf[256];
-    int c, n;
-    m = Py_InitModule4("strop", strop_methods, strop_module__doc__,
-                       (PyObject*)NULL, PYTHON_API_VERSION);
-    if (m == NULL)
-        return;
-
-    /* Create 'whitespace' object */
-    n = 0;
-    for (c = 0; c < 256; c++) {
-        if (isspace(c))
-            buf[n++] = c;
-    }
-    s = PyString_FromStringAndSize(buf, n);
-    if (s)
-        PyModule_AddObject(m, "whitespace", s);
-
-    /* Create 'lowercase' object */
-    n = 0;
-    for (c = 0; c < 256; c++) {
-        if (islower(c))
-            buf[n++] = c;
-    }
-    s = PyString_FromStringAndSize(buf, n);
-    if (s)
-        PyModule_AddObject(m, "lowercase", s);
-
-    /* Create 'uppercase' object */
-    n = 0;
-    for (c = 0; c < 256; c++) {
-        if (isupper(c))
-            buf[n++] = c;
-    }
-    s = PyString_FromStringAndSize(buf, n);
-    if (s)
-        PyModule_AddObject(m, "uppercase", s);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/symtablemodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/symtablemodule.c
deleted file mode 100644
index 9a495bb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/symtablemodule.c
+++ /dev/null
@@ -1,83 +0,0 @@
-#include "Python.h"
-
-#include "code.h"
-#include "compile.h"
-#include "Python-ast.h"
-#include "symtable.h"
-
-static PyObject *
-symtable_symtable(PyObject *self, PyObject *args)
-{
-    struct symtable *st;
-    PyObject *t;
-
-    char *str;
-    char *filename;
-    char *startstr;
-    int start;
-
-    if (!PyArg_ParseTuple(args, "sss:symtable", &str, &filename,
-                          &startstr))
-        return NULL;
-    if (strcmp(startstr, "exec") == 0)
-        start = Py_file_input;
-    else if (strcmp(startstr, "eval") == 0)
-        start = Py_eval_input;
-    else if (strcmp(startstr, "single") == 0)
-        start = Py_single_input;
-    else {
-        PyErr_SetString(PyExc_ValueError,
-           "symtable() arg 3 must be 'exec' or 'eval' or 'single'");
-        return NULL;
-    }
-    st = Py_SymtableString(str, filename, start);
-    if (st == NULL)
-        return NULL;
-    t = st->st_symbols;
-    Py_INCREF(t);
-    PyMem_Free((void *)st->st_future);
-    PySymtable_Free(st);
-    return t;
-}
-
-static PyMethodDef symtable_methods[] = {
-    {"symtable",        symtable_symtable,      METH_VARARGS,
-     PyDoc_STR("Return symbol and scope dictionaries"
-               " used internally by compiler.")},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyMODINIT_FUNC
-init_symtable(void)
-{
-    PyObject *m;
-
-    m = Py_InitModule("_symtable", symtable_methods);
-    if (m == NULL)
-        return;
-    PyModule_AddIntConstant(m, "USE", USE);
-    PyModule_AddIntConstant(m, "DEF_GLOBAL", DEF_GLOBAL);
-    PyModule_AddIntConstant(m, "DEF_LOCAL", DEF_LOCAL);
-    PyModule_AddIntConstant(m, "DEF_PARAM", DEF_PARAM);
-    PyModule_AddIntConstant(m, "DEF_FREE", DEF_FREE);
-    PyModule_AddIntConstant(m, "DEF_FREE_CLASS", DEF_FREE_CLASS);
-    PyModule_AddIntConstant(m, "DEF_IMPORT", DEF_IMPORT);
-    PyModule_AddIntConstant(m, "DEF_BOUND", DEF_BOUND);
-
-    PyModule_AddIntConstant(m, "TYPE_FUNCTION", FunctionBlock);
-    PyModule_AddIntConstant(m, "TYPE_CLASS", ClassBlock);
-    PyModule_AddIntConstant(m, "TYPE_MODULE", ModuleBlock);
-
-    PyModule_AddIntConstant(m, "OPT_IMPORT_STAR", OPT_IMPORT_STAR);
-    PyModule_AddIntConstant(m, "OPT_EXEC", OPT_EXEC);
-    PyModule_AddIntConstant(m, "OPT_BARE_EXEC", OPT_BARE_EXEC);
-
-    PyModule_AddIntConstant(m, "LOCAL", LOCAL);
-    PyModule_AddIntConstant(m, "GLOBAL_EXPLICIT", GLOBAL_EXPLICIT);
-    PyModule_AddIntConstant(m, "GLOBAL_IMPLICIT", GLOBAL_IMPLICIT);
-    PyModule_AddIntConstant(m, "FREE", FREE);
-    PyModule_AddIntConstant(m, "CELL", CELL);
-
-    PyModule_AddIntConstant(m, "SCOPE_OFF", SCOPE_OFF);
-    PyModule_AddIntConstant(m, "SCOPE_MASK", SCOPE_MASK);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/testcapi_long.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/testcapi_long.h
deleted file mode 100644
index 4ce96dc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/testcapi_long.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/* Poor-man's template.  Macros used:
-   TESTNAME     name of the test (like test_long_api_inner)
-   TYPENAME     the signed type (like long)
-   F_S_TO_PY    convert signed to pylong; TYPENAME -> PyObject*
-   F_PY_TO_S    convert pylong to signed; PyObject* -> TYPENAME
-   F_U_TO_PY    convert unsigned to pylong; unsigned TYPENAME -> PyObject*
-   F_PY_TO_U    convert pylong to unsigned; PyObject* -> unsigned TYPENAME
-*/
-
-static PyObject *
-TESTNAME(PyObject *error(const char*))
-{
-    const int NBITS = sizeof(TYPENAME) * 8;
-    unsigned TYPENAME base;
-    PyObject *pyresult;
-    int i;
-
-    /* Note:  This test lets PyObjects leak if an error is raised.  Since
-       an error should never be raised, leaks are impossible <wink>. */
-
-    /* Test native -> PyLong -> native roundtrip identity.
-     * Generate all powers of 2, and test them and their negations,
-     * plus the numbers +-1 off from them.
-     */
-    base = 1;
-    for (i = 0;
-         i < NBITS + 1;  /* on last, base overflows to 0 */
-         ++i, base <<= 1)
-    {
-        int j;
-        for (j = 0; j < 6; ++j) {
-            TYPENAME in, out;
-            unsigned TYPENAME uin, uout;
-
-            /* For 0, 1, 2 use base; for 3, 4, 5 use -base */
-            uin = j < 3 ? base
-                        : (unsigned TYPENAME)(-(TYPENAME)base);
-
-            /* For 0 & 3, subtract 1.
-             * For 1 & 4, leave alone.
-             * For 2 & 5, add 1.
-             */
-            uin += (unsigned TYPENAME)(TYPENAME)(j % 3 - 1);
-
-            pyresult = F_U_TO_PY(uin);
-            if (pyresult == NULL)
-                return error(
-                 "unsigned unexpected null result");
-
-            uout = F_PY_TO_U(pyresult);
-            if (uout == (unsigned TYPENAME)-1 && PyErr_Occurred())
-                return error(
-                    "unsigned unexpected -1 result");
-            if (uout != uin)
-                return error(
-                    "unsigned output != input");
-            UNBIND(pyresult);
-
-            in = (TYPENAME)uin;
-            pyresult = F_S_TO_PY(in);
-            if (pyresult == NULL)
-                return error(
-                    "signed unexpected null result");
-
-            out = F_PY_TO_S(pyresult);
-            if (out == (TYPENAME)-1 && PyErr_Occurred())
-                return error(
-                    "signed unexpected -1 result");
-            if (out != in)
-                return error(
-                    "signed output != input");
-            UNBIND(pyresult);
-        }
-    }
-
-    /* Overflow tests.  The loop above ensured that all limit cases that
-     * should not overflow don't overflow, so all we need to do here is
-     * provoke one-over-the-limit cases (not exhaustive, but sharp).
-     */
-    {
-        PyObject *one, *x, *y;
-        TYPENAME out;
-        unsigned TYPENAME uout;
-
-        one = PyLong_FromLong(1);
-        if (one == NULL)
-            return error(
-                "unexpected NULL from PyLong_FromLong");
-
-        /* Unsigned complains about -1? */
-        x = PyNumber_Negative(one);
-        if (x == NULL)
-            return error(
-                "unexpected NULL from PyNumber_Negative");
-
-        uout = F_PY_TO_U(x);
-        if (uout != (unsigned TYPENAME)-1 || !PyErr_Occurred())
-            return error(
-                "PyLong_AsUnsignedXXX(-1) didn't complain");
-        if (!PyErr_ExceptionMatches(PyExc_OverflowError))
-            return error(
-                "PyLong_AsUnsignedXXX(-1) raised "
-                "something other than OverflowError");
-        PyErr_Clear();
-        UNBIND(x);
-
-        /* Unsigned complains about 2**NBITS? */
-        y = PyLong_FromLong((long)NBITS);
-        if (y == NULL)
-            return error(
-                "unexpected NULL from PyLong_FromLong");
-
-        x = PyNumber_Lshift(one, y); /* 1L << NBITS, == 2**NBITS */
-        UNBIND(y);
-        if (x == NULL)
-            return error(
-                "unexpected NULL from PyNumber_Lshift");
-
-        uout = F_PY_TO_U(x);
-        if (uout != (unsigned TYPENAME)-1 || !PyErr_Occurred())
-            return error(
-                "PyLong_AsUnsignedXXX(2**NBITS) didn't "
-                "complain");
-        if (!PyErr_ExceptionMatches(PyExc_OverflowError))
-            return error(
-                "PyLong_AsUnsignedXXX(2**NBITS) raised "
-                "something other than OverflowError");
-        PyErr_Clear();
-
-        /* Signed complains about 2**(NBITS-1)?
-           x still has 2**NBITS. */
-        y = PyNumber_Rshift(x, one); /* 2**(NBITS-1) */
-        UNBIND(x);
-        if (y == NULL)
-            return error(
-                "unexpected NULL from PyNumber_Rshift");
-
-        out = F_PY_TO_S(y);
-        if (out != (TYPENAME)-1 || !PyErr_Occurred())
-            return error(
-                "PyLong_AsXXX(2**(NBITS-1)) didn't "
-                "complain");
-        if (!PyErr_ExceptionMatches(PyExc_OverflowError))
-            return error(
-                "PyLong_AsXXX(2**(NBITS-1)) raised "
-                "something other than OverflowError");
-        PyErr_Clear();
-
-        /* Signed complains about -2**(NBITS-1)-1?;
-           y still has 2**(NBITS-1). */
-        x = PyNumber_Negative(y);  /* -(2**(NBITS-1)) */
-        UNBIND(y);
-        if (x == NULL)
-            return error(
-                "unexpected NULL from PyNumber_Negative");
-
-        y = PyNumber_Subtract(x, one); /* -(2**(NBITS-1))-1 */
-        UNBIND(x);
-        if (y == NULL)
-            return error(
-                "unexpected NULL from PyNumber_Subtract");
-
-        out = F_PY_TO_S(y);
-        if (out != (TYPENAME)-1 || !PyErr_Occurred())
-            return error(
-                "PyLong_AsXXX(-2**(NBITS-1)-1) didn't "
-                "complain");
-        if (!PyErr_ExceptionMatches(PyExc_OverflowError))
-            return error(
-                "PyLong_AsXXX(-2**(NBITS-1)-1) raised "
-                "something other than OverflowError");
-        PyErr_Clear();
-        UNBIND(y);
-
-        Py_XDECREF(x);
-        Py_XDECREF(y);
-        Py_DECREF(one);
-    }
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/threadmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/threadmodule.c
deleted file mode 100644
index d59c30a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/threadmodule.c
+++ /dev/null
@@ -1,931 +0,0 @@
-
-/* Thread module */
-/* Interface to Sjoerd's portable C thread library */
-
-#include "Python.h"
-#include "structmember.h" /* offsetof */
-
-#ifndef WITH_THREAD
-#error "Error!  The rest of Python is not compiled with thread support."
-#error "Rerun configure, adding a --with-threads option."
-#error "Then run `make clean' followed by `make'."
-#endif
-
-#include "pythread.h"
-
-static PyObject *ThreadError;
-static PyObject *str_dict;
-static long nb_threads = 0;
-
-/* Lock objects */
-
-typedef struct {
-    PyObject_HEAD
-    PyThread_type_lock lock_lock;
-    PyObject *in_weakreflist;
-} lockobject;
-
-static void
-lock_dealloc(lockobject *self)
-{
-    if (self->in_weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) self);
-    if (self->lock_lock != NULL) {
-        /* Unlock the lock so it's safe to free it */
-        PyThread_acquire_lock(self->lock_lock, 0);
-        PyThread_release_lock(self->lock_lock);
-
-        PyThread_free_lock(self->lock_lock);
-    }
-    PyObject_Del(self);
-}
-
-static PyObject *
-lock_PyThread_acquire_lock(lockobject *self, PyObject *args)
-{
-    int i = 1;
-
-    if (!PyArg_ParseTuple(args, "|i:acquire", &i))
-        return NULL;
-
-    Py_BEGIN_ALLOW_THREADS
-    i = PyThread_acquire_lock(self->lock_lock, i);
-    Py_END_ALLOW_THREADS
-
-    return PyBool_FromLong((long)i);
-}
-
-PyDoc_STRVAR(acquire_doc,
-"acquire([wait]) -> None or bool\n\
-(acquire_lock() is an obsolete synonym)\n\
-\n\
-Lock the lock.  Without argument, this blocks if the lock is already\n\
-locked (even by the same thread), waiting for another thread to release\n\
-the lock, and return None once the lock is acquired.\n\
-With an argument, this will only block if the argument is true,\n\
-and the return value reflects whether the lock is acquired.\n\
-The blocking operation is not interruptible.");
-
-static PyObject *
-lock_PyThread_release_lock(lockobject *self)
-{
-    /* Sanity check: the lock must be locked */
-    if (PyThread_acquire_lock(self->lock_lock, 0)) {
-        PyThread_release_lock(self->lock_lock);
-        PyErr_SetString(ThreadError, "release unlocked lock");
-        return NULL;
-    }
-
-    PyThread_release_lock(self->lock_lock);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(release_doc,
-"release()\n\
-(release_lock() is an obsolete synonym)\n\
-\n\
-Release the lock, allowing another thread that is blocked waiting for\n\
-the lock to acquire the lock.  The lock must be in the locked state,\n\
-but it needn't be locked by the same thread that unlocks it.");
-
-static PyObject *
-lock_locked_lock(lockobject *self)
-{
-    if (PyThread_acquire_lock(self->lock_lock, 0)) {
-        PyThread_release_lock(self->lock_lock);
-        return PyBool_FromLong(0L);
-    }
-    return PyBool_FromLong(1L);
-}
-
-PyDoc_STRVAR(locked_doc,
-"locked() -> bool\n\
-(locked_lock() is an obsolete synonym)\n\
-\n\
-Return whether the lock is in the locked state.");
-
-static PyMethodDef lock_methods[] = {
-    {"acquire_lock", (PyCFunction)lock_PyThread_acquire_lock,
-     METH_VARARGS, acquire_doc},
-    {"acquire",      (PyCFunction)lock_PyThread_acquire_lock,
-     METH_VARARGS, acquire_doc},
-    {"release_lock", (PyCFunction)lock_PyThread_release_lock,
-     METH_NOARGS, release_doc},
-    {"release",      (PyCFunction)lock_PyThread_release_lock,
-     METH_NOARGS, release_doc},
-    {"locked_lock",  (PyCFunction)lock_locked_lock,
-     METH_NOARGS, locked_doc},
-    {"locked",       (PyCFunction)lock_locked_lock,
-     METH_NOARGS, locked_doc},
-    {"__enter__",    (PyCFunction)lock_PyThread_acquire_lock,
-     METH_VARARGS, acquire_doc},
-    {"__exit__",    (PyCFunction)lock_PyThread_release_lock,
-     METH_VARARGS, release_doc},
-    {NULL}              /* sentinel */
-};
-
-static PyTypeObject Locktype = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "thread.lock",                      /*tp_name*/
-    sizeof(lockobject),                 /*tp_size*/
-    0,                                  /*tp_itemsize*/
-    /* methods */
-    (destructor)lock_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 */
-    Py_TPFLAGS_HAVE_WEAKREFS,       /* tp_flags */
-    0,                                  /* tp_doc */
-    0,                                  /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    offsetof(lockobject, in_weakreflist),       /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iternext */
-    lock_methods,                       /* tp_methods */
-};
-
-static lockobject *
-newlockobject(void)
-{
-    lockobject *self;
-    self = PyObject_New(lockobject, &Locktype);
-    if (self == NULL)
-        return NULL;
-    self->lock_lock = PyThread_allocate_lock();
-    self->in_weakreflist = NULL;
-    if (self->lock_lock == NULL) {
-        Py_DECREF(self);
-        PyErr_SetString(ThreadError, "can't allocate lock");
-        return NULL;
-    }
-    return self;
-}
-
-/* Thread-local objects */
-
-#include "structmember.h"
-
-/* Quick overview:
-
-   We need to be able to reclaim reference cycles as soon as possible
-   (both when a thread is being terminated, or a thread-local object
-    becomes unreachable from user data).  Constraints:
-   - it must not be possible for thread-state dicts to be involved in
-     reference cycles (otherwise the cyclic GC will refuse to consider
-     objects referenced from a reachable thread-state dict, even though
-     local_dealloc would clear them)
-   - the death of a thread-state dict must still imply destruction of the
-     corresponding local dicts in all thread-local objects.
-
-   Our implementation uses small "localdummy" objects in order to break
-   the reference chain. These trivial objects are hashable (using the
-   default scheme of identity hashing) and weakrefable.
-   Each thread-state holds a separate localdummy for each local object
-   (as a /strong reference/),
-   and each thread-local object holds a dict mapping /weak references/
-   of localdummies to local dicts.
-
-   Therefore:
-   - only the thread-state dict holds a strong reference to the dummies
-   - only the thread-local object holds a strong reference to the local dicts
-   - only outside objects (application- or library-level) hold strong
-     references to the thread-local objects
-   - as soon as a thread-state dict is destroyed, the weakref callbacks of all
-     dummies attached to that thread are called, and destroy the corresponding
-     local dicts from thread-local objects
-   - as soon as a thread-local object is destroyed, its local dicts are
-     destroyed and its dummies are manually removed from all thread states
-   - the GC can do its work correctly when a thread-local object is dangling,
-     without any interference from the thread-state dicts
-
-   As an additional optimization, each localdummy holds a borrowed reference
-   to the corresponding localdict.  This borrowed reference is only used
-   by the thread-local object which has created the localdummy, which should
-   guarantee that the localdict still exists when accessed.
-*/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *localdict;        /* Borrowed reference! */
-    PyObject *weakreflist;      /* List of weak references to self */
-} localdummyobject;
-
-static void
-localdummy_dealloc(localdummyobject *self)
-{
-    if (self->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) self);
-    Py_TYPE(self)->tp_free((PyObject*)self);
-}
-
-static PyTypeObject localdummytype = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    /* tp_name           */ "_thread._localdummy",
-    /* tp_basicsize      */ sizeof(localdummyobject),
-    /* tp_itemsize       */ 0,
-    /* tp_dealloc        */ (destructor)localdummy_dealloc,
-    /* tp_print          */ 0,
-    /* tp_getattr        */ 0,
-    /* tp_setattr        */ 0,
-    /* tp_reserved       */ 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      */ 0,
-    /* tp_flags          */ Py_TPFLAGS_DEFAULT,
-    /* tp_doc            */ "Thread-local dummy",
-    /* tp_traverse       */ 0,
-    /* tp_clear          */ 0,
-    /* tp_richcompare    */ 0,
-    /* tp_weaklistoffset */ offsetof(localdummyobject, weakreflist)
-};
-
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *key;
-    PyObject *args;
-    PyObject *kw;
-    PyObject *weakreflist;      /* List of weak references to self */
-    /* A {localdummy weakref -> localdict} dict */
-    PyObject *dummies;
-    /* The callback for weakrefs to localdummies */
-    PyObject *wr_callback;
-} localobject;
-
-/* Forward declaration */
-static PyObject *_ldict(localobject *self);
-static PyObject *_localdummy_destroyed(PyObject *meth_self, PyObject *dummyweakref);
-
-/* Create and register the dummy for the current thread.
-   Returns a borrowed reference of the corresponding local dict */
-static PyObject *
-_local_create_dummy(localobject *self)
-{
-    PyObject *tdict, *ldict = NULL, *wr = NULL;
-    localdummyobject *dummy = NULL;
-    int r;
-
-    tdict = PyThreadState_GetDict();
-    if (tdict == NULL) {
-        PyErr_SetString(PyExc_SystemError,
-                        "Couldn't get thread-state dictionary");
-        goto err;
-    }
-
-    ldict = PyDict_New();
-    if (ldict == NULL)
-        goto err;
-    dummy = (localdummyobject *) localdummytype.tp_alloc(&localdummytype, 0);
-    if (dummy == NULL)
-        goto err;
-    dummy->localdict = ldict;
-    wr = PyWeakref_NewRef((PyObject *) dummy, self->wr_callback);
-    if (wr == NULL)
-        goto err;
-
-    /* As a side-effect, this will cache the weakref's hash before the
-       dummy gets deleted */
-    r = PyDict_SetItem(self->dummies, wr, ldict);
-    if (r < 0)
-        goto err;
-    Py_CLEAR(wr);
-    r = PyDict_SetItem(tdict, self->key, (PyObject *) dummy);
-    if (r < 0)
-        goto err;
-    Py_CLEAR(dummy);
-
-    Py_DECREF(ldict);
-    return ldict;
-
-err:
-    Py_XDECREF(ldict);
-    Py_XDECREF(wr);
-    Py_XDECREF(dummy);
-    return NULL;
-}
-
-static PyObject *
-local_new(PyTypeObject *type, PyObject *args, PyObject *kw)
-{
-    localobject *self;
-    PyObject *wr;
-    static PyMethodDef wr_callback_def = {
-        "_localdummy_destroyed", (PyCFunction) _localdummy_destroyed, METH_O
-    };
-
-    if (type->tp_init == PyBaseObject_Type.tp_init
-        && ((args && PyObject_IsTrue(args))
-        || (kw && PyObject_IsTrue(kw)))) {
-        PyErr_SetString(PyExc_TypeError,
-                  "Initialization arguments are not supported");
-        return NULL;
-    }
-
-    self = (localobject *)type->tp_alloc(type, 0);
-    if (self == NULL)
-        return NULL;
-
-    Py_XINCREF(args);
-    self->args = args;
-    Py_XINCREF(kw);
-    self->kw = kw;
-    self->key = PyString_FromFormat("thread.local.%p", self);
-    if (self->key == NULL)
-        goto err;
-
-    self->dummies = PyDict_New();
-    if (self->dummies == NULL)
-        goto err;
-
-    /* We use a weak reference to self in the callback closure
-       in order to avoid spurious reference cycles */
-    wr = PyWeakref_NewRef((PyObject *) self, NULL);
-    if (wr == NULL)
-        goto err;
-    self->wr_callback = PyCFunction_New(&wr_callback_def, wr);
-    Py_DECREF(wr);
-    if (self->wr_callback == NULL)
-        goto err;
-
-    if (_local_create_dummy(self) == NULL)
-        goto err;
-
-    return (PyObject *)self;
-
-  err:
-    Py_DECREF(self);
-    return NULL;
-}
-
-static int
-local_traverse(localobject *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->args);
-    Py_VISIT(self->kw);
-    Py_VISIT(self->dummies);
-    return 0;
-}
-
-static int
-local_clear(localobject *self)
-{
-    PyThreadState *tstate;
-    Py_CLEAR(self->args);
-    Py_CLEAR(self->kw);
-    Py_CLEAR(self->dummies);
-    Py_CLEAR(self->wr_callback);
-    /* Remove all strong references to dummies from the thread states */
-    if (self->key
-        && (tstate = PyThreadState_Get())
-        && tstate->interp) {
-        for(tstate = PyInterpreterState_ThreadHead(tstate->interp);
-            tstate;
-            tstate = PyThreadState_Next(tstate))
-            if (tstate->dict &&
-                PyDict_GetItem(tstate->dict, self->key))
-                PyDict_DelItem(tstate->dict, self->key);
-    }
-    return 0;
-}
-
-static void
-local_dealloc(localobject *self)
-{
-    /* Weakrefs must be invalidated right now, otherwise they can be used
-       from code called below, which is very dangerous since Py_REFCNT(self) == 0 */
-    if (self->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) self);
-
-    PyObject_GC_UnTrack(self);
-
-    local_clear(self);
-    Py_XDECREF(self->key);
-    Py_TYPE(self)->tp_free((PyObject*)self);
-}
-
-/* Returns a borrowed reference to the local dict, creating it if necessary */
-static PyObject *
-_ldict(localobject *self)
-{
-    PyObject *tdict, *ldict, *dummy;
-
-    tdict = PyThreadState_GetDict();
-    if (tdict == NULL) {
-        PyErr_SetString(PyExc_SystemError,
-                        "Couldn't get thread-state dictionary");
-        return NULL;
-    }
-
-    dummy = PyDict_GetItem(tdict, self->key);
-    if (dummy == NULL) {
-        ldict = _local_create_dummy(self);
-        if (ldict == NULL)
-            return NULL;
-
-        if (Py_TYPE(self)->tp_init != PyBaseObject_Type.tp_init &&
-            Py_TYPE(self)->tp_init((PyObject*)self,
-                                   self->args, self->kw) < 0) {
-            /* we need to get rid of ldict from thread so
-               we create a new one the next time we do an attr
-               access */
-            PyDict_DelItem(tdict, self->key);
-            return NULL;
-        }
-    }
-    else {
-        assert(Py_TYPE(dummy) == &localdummytype);
-        ldict = ((localdummyobject *) dummy)->localdict;
-    }
-
-    return ldict;
-}
-
-static int
-local_setattro(localobject *self, PyObject *name, PyObject *v)
-{
-    PyObject *ldict;
-    int r;
-
-    ldict = _ldict(self);
-    if (ldict == NULL)
-        return -1;
-
-    r = PyObject_RichCompareBool(name, str_dict, Py_EQ);
-    if (r == 1) {
-        PyErr_Format(PyExc_AttributeError,
-                     "'%.50s' object attribute '__dict__' is read-only",
-                     Py_TYPE(self)->tp_name);
-        return -1;
-    }
-    if (r == -1)
-        return -1;
-
-    return _PyObject_GenericSetAttrWithDict((PyObject *)self, name, v, ldict);
-}
-
-static PyObject *local_getattro(localobject *, PyObject *);
-
-static PyTypeObject localtype = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    /* tp_name           */ "thread._local",
-    /* tp_basicsize      */ sizeof(localobject),
-    /* tp_itemsize       */ 0,
-    /* tp_dealloc        */ (destructor)local_dealloc,
-    /* 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       */ (getattrofunc)local_getattro,
-    /* tp_setattro       */ (setattrofunc)local_setattro,
-    /* tp_as_buffer      */ 0,
-    /* tp_flags          */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE
-                                               | Py_TPFLAGS_HAVE_GC,
-    /* tp_doc            */ "Thread-local data",
-    /* tp_traverse       */ (traverseproc)local_traverse,
-    /* tp_clear          */ (inquiry)local_clear,
-    /* tp_richcompare    */ 0,
-    /* tp_weaklistoffset */ offsetof(localobject, weakreflist),
-    /* tp_iter           */ 0,
-    /* tp_iternext       */ 0,
-    /* tp_methods        */ 0,
-    /* tp_members        */ 0,
-    /* tp_getset         */ 0,
-    /* tp_base           */ 0,
-    /* tp_dict           */ 0, /* internal use */
-    /* tp_descr_get      */ 0,
-    /* tp_descr_set      */ 0,
-    /* tp_dictoffset     */ 0,
-    /* tp_init           */ 0,
-    /* tp_alloc          */ 0,
-    /* tp_new            */ local_new,
-    /* tp_free           */ 0, /* Low-level free-mem routine */
-    /* tp_is_gc          */ 0, /* For PyObject_IS_GC */
-};
-
-static PyObject *
-local_getattro(localobject *self, PyObject *name)
-{
-    PyObject *ldict, *value;
-    int r;
-
-    ldict = _ldict(self);
-    if (ldict == NULL)
-        return NULL;
-
-    r = PyObject_RichCompareBool(name, str_dict, Py_EQ);
-    if (r == 1) {
-        Py_INCREF(ldict);
-        return ldict;
-    }
-    if (r == -1)
-        return NULL;
-
-    if (Py_TYPE(self) != &localtype)
-        /* use generic lookup for subtypes */
-        return _PyObject_GenericGetAttrWithDict((PyObject *)self, name, ldict);
-
-    /* Optimization: just look in dict ourselves */
-    value = PyDict_GetItem(ldict, name);
-    if (value == NULL)
-        /* Fall back on generic to get __class__ and __dict__ */
-        return _PyObject_GenericGetAttrWithDict((PyObject *)self, name, ldict);
-
-    Py_INCREF(value);
-    return value;
-}
-
-/* Called when a dummy is destroyed. */
-static PyObject *
-_localdummy_destroyed(PyObject *localweakref, PyObject *dummyweakref)
-{
-    PyObject *obj;
-    localobject *self;
-    assert(PyWeakref_CheckRef(localweakref));
-    obj = PyWeakref_GET_OBJECT(localweakref);
-    if (obj == Py_None)
-        Py_RETURN_NONE;
-    Py_INCREF(obj);
-    assert(PyObject_TypeCheck(obj, &localtype));
-    /* If the thread-local object is still alive and not being cleared,
-       remove the corresponding local dict */
-    self = (localobject *) obj;
-    if (self->dummies != NULL) {
-        PyObject *ldict;
-        ldict = PyDict_GetItem(self->dummies, dummyweakref);
-        if (ldict != NULL) {
-            PyDict_DelItem(self->dummies, dummyweakref);
-        }
-        if (PyErr_Occurred())
-            PyErr_WriteUnraisable(obj);
-    }
-    Py_DECREF(obj);
-    Py_RETURN_NONE;
-}
-
-/* Module functions */
-
-struct bootstate {
-    PyInterpreterState *interp;
-    PyObject *func;
-    PyObject *args;
-    PyObject *keyw;
-    PyThreadState *tstate;
-};
-
-static void
-t_bootstrap(void *boot_raw)
-{
-    struct bootstate *boot = (struct bootstate *) boot_raw;
-    PyThreadState *tstate;
-    PyObject *res;
-
-    tstate = boot->tstate;
-    tstate->thread_id = PyThread_get_thread_ident();
-    _PyThreadState_Init(tstate);
-    PyEval_AcquireThread(tstate);
-    nb_threads++;
-    res = PyEval_CallObjectWithKeywords(
-        boot->func, boot->args, boot->keyw);
-    if (res == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_SystemExit))
-            PyErr_Clear();
-        else {
-            PyObject *file;
-            PySys_WriteStderr(
-                "Unhandled exception in thread started by ");
-            file = PySys_GetObject("stderr");
-            if (file)
-                PyFile_WriteObject(boot->func, file, 0);
-            else
-                PyObject_Print(boot->func, stderr, 0);
-            PySys_WriteStderr("\n");
-            PyErr_PrintEx(0);
-        }
-    }
-    else
-        Py_DECREF(res);
-    Py_DECREF(boot->func);
-    Py_DECREF(boot->args);
-    Py_XDECREF(boot->keyw);
-    PyMem_DEL(boot_raw);
-    nb_threads--;
-    PyThreadState_Clear(tstate);
-    PyThreadState_DeleteCurrent();
-    PyThread_exit_thread();
-}
-
-static PyObject *
-thread_PyThread_start_new_thread(PyObject *self, PyObject *fargs)
-{
-    PyObject *func, *args, *keyw = NULL;
-    struct bootstate *boot;
-    long ident;
-
-    if (!PyArg_UnpackTuple(fargs, "start_new_thread", 2, 3,
-                           &func, &args, &keyw))
-        return NULL;
-    if (!PyCallable_Check(func)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "first arg must be callable");
-        return NULL;
-    }
-    if (!PyTuple_Check(args)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "2nd arg must be a tuple");
-        return NULL;
-    }
-    if (keyw != NULL && !PyDict_Check(keyw)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "optional 3rd arg must be a dictionary");
-        return NULL;
-    }
-    boot = PyMem_NEW(struct bootstate, 1);
-    if (boot == NULL)
-        return PyErr_NoMemory();
-    boot->interp = PyThreadState_GET()->interp;
-    boot->func = func;
-    boot->args = args;
-    boot->keyw = keyw;
-    boot->tstate = _PyThreadState_Prealloc(boot->interp);
-    if (boot->tstate == NULL) {
-        PyMem_DEL(boot);
-        return PyErr_NoMemory();
-    }
-    Py_INCREF(func);
-    Py_INCREF(args);
-    Py_XINCREF(keyw);
-    PyEval_InitThreads(); /* Start the interpreter's thread-awareness */
-    ident = PyThread_start_new_thread(t_bootstrap, (void*) boot);
-    if (ident == -1) {
-        PyErr_SetString(ThreadError, "can't start new thread");
-        Py_DECREF(func);
-        Py_DECREF(args);
-        Py_XDECREF(keyw);
-        PyThreadState_Clear(boot->tstate);
-        PyMem_DEL(boot);
-        return NULL;
-    }
-    return PyInt_FromLong(ident);
-}
-
-PyDoc_STRVAR(start_new_doc,
-"start_new_thread(function, args[, kwargs])\n\
-(start_new() is an obsolete synonym)\n\
-\n\
-Start a new thread and return its identifier.  The thread will call the\n\
-function with positional arguments from the tuple args and keyword arguments\n\
-taken from the optional dictionary kwargs.  The thread exits when the\n\
-function returns; the return value is ignored.  The thread will also exit\n\
-when the function raises an unhandled exception; a stack trace will be\n\
-printed unless the exception is SystemExit.\n");
-
-static PyObject *
-thread_PyThread_exit_thread(PyObject *self)
-{
-    PyErr_SetNone(PyExc_SystemExit);
-    return NULL;
-}
-
-PyDoc_STRVAR(exit_doc,
-"exit()\n\
-(PyThread_exit_thread() is an obsolete synonym)\n\
-\n\
-This is synonymous to ``raise SystemExit''.  It will cause the current\n\
-thread to exit silently unless the exception is caught.");
-
-static PyObject *
-thread_PyThread_interrupt_main(PyObject * self)
-{
-    PyErr_SetInterrupt();
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(interrupt_doc,
-"interrupt_main()\n\
-\n\
-Raise a KeyboardInterrupt in the main thread.\n\
-A subthread can use this function to interrupt the main thread."
-);
-
-static lockobject *newlockobject(void);
-
-static PyObject *
-thread_PyThread_allocate_lock(PyObject *self)
-{
-    return (PyObject *) newlockobject();
-}
-
-PyDoc_STRVAR(allocate_doc,
-"allocate_lock() -> lock object\n\
-(allocate() is an obsolete synonym)\n\
-\n\
-Create a new lock object.  See help(LockType) for information about locks.");
-
-static PyObject *
-thread_get_ident(PyObject *self)
-{
-    long ident;
-    ident = PyThread_get_thread_ident();
-    if (ident == -1) {
-        PyErr_SetString(ThreadError, "no current thread ident");
-        return NULL;
-    }
-    return PyInt_FromLong(ident);
-}
-
-PyDoc_STRVAR(get_ident_doc,
-"get_ident() -> integer\n\
-\n\
-Return a non-zero integer that uniquely identifies the current thread\n\
-amongst other threads that exist simultaneously.\n\
-This may be used to identify per-thread resources.\n\
-Even though on some platforms threads identities may appear to be\n\
-allocated consecutive numbers starting at 1, this behavior should not\n\
-be relied upon, and the number should be seen purely as a magic cookie.\n\
-A thread's identity may be reused for another thread after it exits.");
-
-static PyObject *
-thread__count(PyObject *self)
-{
-    return PyInt_FromLong(nb_threads);
-}
-
-PyDoc_STRVAR(_count_doc,
-"_count() -> integer\n\
-\n\
-\
-Return the number of currently running Python threads, excluding \n\
-the main thread. The returned number comprises all threads created\n\
-through `start_new_thread()` as well as `threading.Thread`, and not\n\
-yet finished.\n\
-\n\
-This function is meant for internal and specialized purposes only.\n\
-In most applications `threading.enumerate()` should be used instead.");
-
-static PyObject *
-thread_stack_size(PyObject *self, PyObject *args)
-{
-    size_t old_size;
-    Py_ssize_t new_size = 0;
-    int rc;
-
-    if (!PyArg_ParseTuple(args, "|n:stack_size", &new_size))
-        return NULL;
-
-    if (new_size < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "size must be 0 or a positive value");
-        return NULL;
-    }
-
-    old_size = PyThread_get_stacksize();
-
-    rc = PyThread_set_stacksize((size_t) new_size);
-    if (rc == -1) {
-        PyErr_Format(PyExc_ValueError,
-                     "size not valid: %zd bytes",
-                     new_size);
-        return NULL;
-    }
-    if (rc == -2) {
-        PyErr_SetString(ThreadError,
-                        "setting stack size not supported");
-        return NULL;
-    }
-
-    return PyInt_FromSsize_t((Py_ssize_t) old_size);
-}
-
-PyDoc_STRVAR(stack_size_doc,
-"stack_size([size]) -> size\n\
-\n\
-Return the thread stack size used when creating new threads.  The\n\
-optional size argument specifies the stack size (in bytes) to be used\n\
-for subsequently created threads, and must be 0 (use platform or\n\
-configured default) or a positive integer value of at least 32,768 (32k).\n\
-If changing the thread stack size is unsupported, a ThreadError\n\
-exception is raised.  If the specified size is invalid, a ValueError\n\
-exception is raised, and the stack size is unmodified.  32k bytes\n\
- currently the minimum supported stack size value to guarantee\n\
-sufficient stack space for the interpreter itself.\n\
-\n\
-Note that some platforms may have particular restrictions on values for\n\
-the stack size, such as requiring a minimum stack size larger than 32kB or\n\
-requiring allocation in multiples of the system memory page size\n\
-- platform documentation should be referred to for more information\n\
-(4kB pages are common; using multiples of 4096 for the stack size is\n\
-the suggested approach in the absence of more specific information).");
-
-static PyMethodDef thread_methods[] = {
-    {"start_new_thread",        (PyCFunction)thread_PyThread_start_new_thread,
-                            METH_VARARGS,
-                            start_new_doc},
-    {"start_new",               (PyCFunction)thread_PyThread_start_new_thread,
-                            METH_VARARGS,
-                            start_new_doc},
-    {"allocate_lock",           (PyCFunction)thread_PyThread_allocate_lock,
-     METH_NOARGS, allocate_doc},
-    {"allocate",                (PyCFunction)thread_PyThread_allocate_lock,
-     METH_NOARGS, allocate_doc},
-    {"exit_thread",             (PyCFunction)thread_PyThread_exit_thread,
-     METH_NOARGS, exit_doc},
-    {"exit",                    (PyCFunction)thread_PyThread_exit_thread,
-     METH_NOARGS, exit_doc},
-    {"interrupt_main",          (PyCFunction)thread_PyThread_interrupt_main,
-     METH_NOARGS, interrupt_doc},
-    {"get_ident",               (PyCFunction)thread_get_ident,
-     METH_NOARGS, get_ident_doc},
-    {"_count",                  (PyCFunction)thread__count,
-     METH_NOARGS, _count_doc},
-    {"stack_size",              (PyCFunction)thread_stack_size,
-                            METH_VARARGS,
-                            stack_size_doc},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-
-/* Initialization function */
-
-PyDoc_STRVAR(thread_doc,
-"This module provides primitive operations to write multi-threaded programs.\n\
-The 'threading' module provides a more convenient interface.");
-
-PyDoc_STRVAR(lock_doc,
-"A lock object is a synchronization primitive.  To create a lock,\n\
-call the PyThread_allocate_lock() function.  Methods are:\n\
-\n\
-acquire() -- lock the lock, possibly blocking until it can be obtained\n\
-release() -- unlock of the lock\n\
-locked() -- test whether the lock is currently locked\n\
-\n\
-A lock is not owned by the thread that locked it; another thread may\n\
-unlock it.  A thread attempting to lock a lock that it has already locked\n\
-will block until another thread unlocks it.  Deadlocks may ensue.");
-
-PyMODINIT_FUNC
-initthread(void)
-{
-    PyObject *m, *d;
-
-    /* Initialize types: */
-    if (PyType_Ready(&localdummytype) < 0)
-        return;
-    if (PyType_Ready(&localtype) < 0)
-        return;
-
-    /* Create the module and add the functions */
-    m = Py_InitModule3("thread", thread_methods, thread_doc);
-    if (m == NULL)
-        return;
-
-    /* Add a symbolic constant */
-    d = PyModule_GetDict(m);
-    ThreadError = PyErr_NewException("thread.error", NULL, NULL);
-    PyDict_SetItemString(d, "error", ThreadError);
-    Locktype.tp_doc = lock_doc;
-    if (PyType_Ready(&Locktype) < 0)
-        return;
-    Py_INCREF(&Locktype);
-    PyDict_SetItemString(d, "LockType", (PyObject *)&Locktype);
-
-    Py_INCREF(&localtype);
-    if (PyModule_AddObject(m, "_local", (PyObject *)&localtype) < 0)
-        return;
-
-    nb_threads = 0;
-
-    str_dict = PyString_InternFromString("__dict__");
-    if (str_dict == NULL)
-        return;
-
-    /* Initialize the C thread library */
-    PyThread_init_thread();
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/timemodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/timemodule.c
deleted file mode 100644
index 5a5c947..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/timemodule.c
+++ /dev/null
@@ -1,1054 +0,0 @@
-
-/* Time module */
-
-#include "Python.h"
-#include "structseq.h"
-#include "timefuncs.h"
-
-#ifdef __APPLE__
-#if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_FTIME)
-  /*
-   * floattime falls back to ftime when getttimeofday fails because the latter
-   * might fail on some platforms. This fallback is unwanted on MacOSX because
-   * that makes it impossible to use a binary build on OSX 10.4 on earlier
-   * releases of the OS. Therefore claim we don't support ftime.
-   */
-# undef HAVE_FTIME
-#endif
-#endif
-
-#include <ctype.h>
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif /* HAVE_SYS_TYPES_H */
-
-#ifdef QUICKWIN
-#include <io.h>
-#endif
-
-#ifdef HAVE_FTIME
-#include <sys/timeb.h>
-#if !defined(MS_WINDOWS) && !defined(PYOS_OS2)
-extern int ftime(struct timeb *);
-#endif /* MS_WINDOWS */
-#endif /* HAVE_FTIME */
-
-#if defined(__WATCOMC__) && !defined(__QNX__)
-#include <i86.h>
-#else
-#ifdef MS_WINDOWS
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include "pythread.h"
-
-/* helper to allow us to interrupt sleep() on Windows*/
-static HANDLE hInterruptEvent = NULL;
-static BOOL WINAPI PyCtrlHandler(DWORD dwCtrlType)
-{
-    SetEvent(hInterruptEvent);
-    /* allow other default handlers to be called.
-       Default Python handler will setup the
-       KeyboardInterrupt exception.
-    */
-    return FALSE;
-}
-static long main_thread;
-
-
-#if defined(__BORLANDC__)
-/* These overrides not needed for Win32 */
-#define timezone _timezone
-#define tzname _tzname
-#define daylight _daylight
-#endif /* __BORLANDC__ */
-#endif /* MS_WINDOWS */
-#endif /* !__WATCOMC__ || __QNX__ */
-
-#if defined(MS_WINDOWS) && !defined(__BORLANDC__)
-/* Win32 has better clock replacement; we have our own version below. */
-#undef HAVE_CLOCK
-#endif /* MS_WINDOWS && !defined(__BORLANDC__) */
-
-#if defined(PYOS_OS2)
-#define INCL_DOS
-#define INCL_ERRORS
-#include <os2.h>
-#endif
-
-#if defined(PYCC_VACPP)
-#include <sys/time.h>
-#endif
-
-#ifdef __BEOS__
-#include <time.h>
-/* For bigtime_t, snooze(). - [cjh] */
-#include <support/SupportDefs.h>
-#include <kernel/OS.h>
-#endif
-
-#ifdef RISCOS
-extern int riscos_sleep(double);
-#endif
-
-/* Forward declarations */
-static int floatsleep(double);
-static double floattime(void);
-
-/* For Y2K check */
-static PyObject *moddict;
-
-/* Exposed in timefuncs.h. */
-time_t
-_PyTime_DoubleToTimet(double x)
-{
-    time_t result;
-    double diff;
-
-    result = (time_t)x;
-    /* How much info did we lose?  time_t may be an integral or
-     * floating type, and we don't know which.  If it's integral,
-     * we don't know whether C truncates, rounds, returns the floor,
-     * etc.  If we lost a second or more, the C rounding is
-     * unreasonable, or the input just doesn't fit in a time_t;
-     * call it an error regardless.  Note that the original cast to
-     * time_t can cause a C error too, but nothing we can do to
-     * worm around that.
-     */
-    diff = x - (double)result;
-    if (diff <= -1.0 || diff >= 1.0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "timestamp out of range for platform time_t");
-        result = (time_t)-1;
-    }
-    return result;
-}
-
-static PyObject *
-time_time(PyObject *self, PyObject *unused)
-{
-    double secs;
-    secs = floattime();
-    if (secs == 0.0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        return NULL;
-    }
-    return PyFloat_FromDouble(secs);
-}
-
-PyDoc_STRVAR(time_doc,
-"time() -> floating point number\n\
-\n\
-Return the current time in seconds since the Epoch.\n\
-Fractions of a second may be present if the system clock provides them.");
-
-#ifdef HAVE_CLOCK
-
-#ifndef CLOCKS_PER_SEC
-#ifdef CLK_TCK
-#define CLOCKS_PER_SEC CLK_TCK
-#else
-#define CLOCKS_PER_SEC 1000000
-#endif
-#endif
-
-static PyObject *
-time_clock(PyObject *self, PyObject *unused)
-{
-    return PyFloat_FromDouble(((double)clock()) / CLOCKS_PER_SEC);
-}
-#endif /* HAVE_CLOCK */
-
-#if defined(MS_WINDOWS) && !defined(__BORLANDC__)
-/* Due to Mark Hammond and Tim Peters */
-static PyObject *
-time_clock(PyObject *self, PyObject *unused)
-{
-    static LARGE_INTEGER ctrStart;
-    static double divisor = 0.0;
-    LARGE_INTEGER now;
-    double diff;
-
-    if (divisor == 0.0) {
-        LARGE_INTEGER freq;
-        QueryPerformanceCounter(&ctrStart);
-        if (!QueryPerformanceFrequency(&freq) || freq.QuadPart == 0) {
-            /* Unlikely to happen - this works on all intel
-               machines at least!  Revert to clock() */
-            return PyFloat_FromDouble(((double)clock()) /
-                                      CLOCKS_PER_SEC);
-        }
-        divisor = (double)freq.QuadPart;
-    }
-    QueryPerformanceCounter(&now);
-    diff = (double)(now.QuadPart - ctrStart.QuadPart);
-    return PyFloat_FromDouble(diff / divisor);
-}
-
-#define HAVE_CLOCK /* So it gets included in the methods */
-#endif /* MS_WINDOWS && !defined(__BORLANDC__) */
-
-#ifdef HAVE_CLOCK
-PyDoc_STRVAR(clock_doc,
-"clock() -> floating point number\n\
-\n\
-Return the CPU time or real time since the start of the process or since\n\
-the first call to clock().  This has as much precision as the system\n\
-records.");
-#endif
-
-static PyObject *
-time_sleep(PyObject *self, PyObject *args)
-{
-    double secs;
-    if (!PyArg_ParseTuple(args, "d:sleep", &secs))
-        return NULL;
-    if (floatsleep(secs) != 0)
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(sleep_doc,
-"sleep(seconds)\n\
-\n\
-Delay execution for a given number of seconds.  The argument may be\n\
-a floating point number for subsecond precision.");
-
-static PyStructSequence_Field struct_time_type_fields[] = {
-    {"tm_year", "year, for example, 1993"},
-    {"tm_mon", "month of year, range [1, 12]"},
-    {"tm_mday", "day of month, range [1, 31]"},
-    {"tm_hour", "hours, range [0, 23]"},
-    {"tm_min", "minutes, range [0, 59]"},
-    {"tm_sec", "seconds, range [0, 61])"},
-    {"tm_wday", "day of week, range [0, 6], Monday is 0"},
-    {"tm_yday", "day of year, range [1, 366]"},
-    {"tm_isdst", "1 if summer time is in effect, 0 if not, and -1 if unknown"},
-    {0}
-};
-
-static PyStructSequence_Desc struct_time_type_desc = {
-    "time.struct_time",
-    "The time value as returned by gmtime(), localtime(), and strptime(), and\n"
-    " accepted by asctime(), mktime() and strftime().  May be considered as a\n"
-    " sequence of 9 integers.\n\n"
-    " Note that several fields' values are not the same as those defined by\n"
-    " the C language standard for struct tm.  For example, the value of the\n"
-    " field tm_year is the actual year, not year - 1900.  See individual\n"
-    " fields' descriptions for details.",
-    struct_time_type_fields,
-    9,
-};
-
-static int initialized;
-static PyTypeObject StructTimeType;
-
-static PyObject *
-tmtotuple(struct tm *p)
-{
-    PyObject *v = PyStructSequence_New(&StructTimeType);
-    if (v == NULL)
-        return NULL;
-
-#define SET(i,val) PyStructSequence_SET_ITEM(v, i, PyInt_FromLong((long) val))
-
-    SET(0, p->tm_year + 1900);
-    SET(1, p->tm_mon + 1);         /* Want January == 1 */
-    SET(2, p->tm_mday);
-    SET(3, p->tm_hour);
-    SET(4, p->tm_min);
-    SET(5, p->tm_sec);
-    SET(6, (p->tm_wday + 6) % 7); /* Want Monday == 0 */
-    SET(7, p->tm_yday + 1);        /* Want January, 1 == 1 */
-    SET(8, p->tm_isdst);
-#undef SET
-    if (PyErr_Occurred()) {
-        Py_XDECREF(v);
-        return NULL;
-    }
-
-    return v;
-}
-
-static PyObject *
-time_convert(double when, struct tm * (*function)(const time_t *))
-{
-    struct tm *p;
-    time_t whent = _PyTime_DoubleToTimet(when);
-
-    if (whent == (time_t)-1 && PyErr_Occurred())
-        return NULL;
-    errno = 0;
-    p = function(&whent);
-    if (p == NULL) {
-#ifdef EINVAL
-        if (errno == 0)
-            errno = EINVAL;
-#endif
-        return PyErr_SetFromErrno(PyExc_ValueError);
-    }
-    return tmtotuple(p);
-}
-
-/* Parse arg tuple that can contain an optional float-or-None value;
-   format needs to be "|O:name".
-   Returns non-zero on success (parallels PyArg_ParseTuple).
-*/
-static int
-parse_time_double_args(PyObject *args, char *format, double *pwhen)
-{
-    PyObject *ot = NULL;
-
-    if (!PyArg_ParseTuple(args, format, &ot))
-        return 0;
-    if (ot == NULL || ot == Py_None)
-        *pwhen = floattime();
-    else {
-        double when = PyFloat_AsDouble(ot);
-        if (PyErr_Occurred())
-            return 0;
-        *pwhen = when;
-    }
-    return 1;
-}
-
-static PyObject *
-time_gmtime(PyObject *self, PyObject *args)
-{
-    double when;
-    if (!parse_time_double_args(args, "|O:gmtime", &when))
-        return NULL;
-    return time_convert(when, gmtime);
-}
-
-PyDoc_STRVAR(gmtime_doc,
-"gmtime([seconds]) -> (tm_year, tm_mon, tm_mday, tm_hour, tm_min,\n\
-                       tm_sec, tm_wday, tm_yday, tm_isdst)\n\
-\n\
-Convert seconds since the Epoch to a time tuple expressing UTC (a.k.a.\n\
-GMT).  When 'seconds' is not passed in, convert the current time instead.");
-
-static PyObject *
-time_localtime(PyObject *self, PyObject *args)
-{
-    double when;
-    if (!parse_time_double_args(args, "|O:localtime", &when))
-        return NULL;
-    return time_convert(when, localtime);
-}
-
-PyDoc_STRVAR(localtime_doc,
-"localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min,\n\
-                          tm_sec,tm_wday,tm_yday,tm_isdst)\n\
-\n\
-Convert seconds since the Epoch to a time tuple expressing local time.\n\
-When 'seconds' is not passed in, convert the current time instead.");
-
-static int
-gettmarg(PyObject *args, struct tm *p)
-{
-    int y;
-    memset((void *) p, '\0', sizeof(struct tm));
-
-    if (!PyArg_Parse(args, "(iiiiiiiii)",
-                     &y,
-                     &p->tm_mon,
-                     &p->tm_mday,
-                     &p->tm_hour,
-                     &p->tm_min,
-                     &p->tm_sec,
-                     &p->tm_wday,
-                     &p->tm_yday,
-                     &p->tm_isdst))
-        return 0;
-    if (y < 1900) {
-        PyObject *accept = PyDict_GetItemString(moddict,
-                                                "accept2dyear");
-        if (accept == NULL || !PyInt_Check(accept) ||
-            PyInt_AsLong(accept) == 0) {
-            PyErr_SetString(PyExc_ValueError,
-                            "year >= 1900 required");
-            return 0;
-        }
-        if (69 <= y && y <= 99)
-            y += 1900;
-        else if (0 <= y && y <= 68)
-            y += 2000;
-        else {
-            PyErr_SetString(PyExc_ValueError,
-                            "year out of range");
-            return 0;
-        }
-    }
-    p->tm_year = y - 1900;
-    p->tm_mon--;
-    p->tm_wday = (p->tm_wday + 1) % 7;
-    p->tm_yday--;
-    return 1;
-}
-
-#ifdef HAVE_STRFTIME
-static PyObject *
-time_strftime(PyObject *self, PyObject *args)
-{
-    PyObject *tup = NULL;
-    struct tm buf;
-    const char *fmt;
-    size_t fmtlen, buflen;
-    char *outbuf = 0;
-    size_t i;
-
-    memset((void *) &buf, '\0', sizeof(buf));
-
-    if (!PyArg_ParseTuple(args, "s|O:strftime", &fmt, &tup))
-        return NULL;
-
-    if (tup == NULL) {
-        time_t tt = time(NULL);
-        buf = *localtime(&tt);
-    } else if (!gettmarg(tup, &buf))
-        return NULL;
-
-    /* Checks added to make sure strftime() does not crash Python by
-       indexing blindly into some array for a textual representation
-       by some bad index (fixes bug #897625).
-
-        Also support values of zero from Python code for arguments in which
-        that is out of range by forcing that value to the lowest value that
-        is valid (fixed bug #1520914).
-
-        Valid ranges based on what is allowed in struct tm:
-
-        - tm_year: [0, max(int)] (1)
-        - tm_mon: [0, 11] (2)
-        - tm_mday: [1, 31]
-        - tm_hour: [0, 23]
-        - tm_min: [0, 59]
-        - tm_sec: [0, 60]
-        - tm_wday: [0, 6] (1)
-        - tm_yday: [0, 365] (2)
-        - tm_isdst: [-max(int), max(int)]
-
-        (1) gettmarg() handles bounds-checking.
-        (2) Python's acceptable range is one greater than the range in C,
-        thus need to check against automatic decrement by gettmarg().
-    */
-    if (buf.tm_mon == -1)
-        buf.tm_mon = 0;
-    else if (buf.tm_mon < 0 || buf.tm_mon > 11) {
-        PyErr_SetString(PyExc_ValueError, "month out of range");
-            return NULL;
-    }
-    if (buf.tm_mday == 0)
-        buf.tm_mday = 1;
-    else if (buf.tm_mday < 0 || buf.tm_mday > 31) {
-        PyErr_SetString(PyExc_ValueError, "day of month out of range");
-            return NULL;
-    }
-    if (buf.tm_hour < 0 || buf.tm_hour > 23) {
-        PyErr_SetString(PyExc_ValueError, "hour out of range");
-        return NULL;
-    }
-    if (buf.tm_min < 0 || buf.tm_min > 59) {
-        PyErr_SetString(PyExc_ValueError, "minute out of range");
-        return NULL;
-    }
-    if (buf.tm_sec < 0 || buf.tm_sec > 61) {
-        PyErr_SetString(PyExc_ValueError, "seconds out of range");
-        return NULL;
-    }
-    /* tm_wday does not need checking of its upper-bound since taking
-    ``% 7`` in gettmarg() automatically restricts the range. */
-    if (buf.tm_wday < 0) {
-        PyErr_SetString(PyExc_ValueError, "day of week out of range");
-        return NULL;
-    }
-    if (buf.tm_yday == -1)
-        buf.tm_yday = 0;
-    else if (buf.tm_yday < 0 || buf.tm_yday > 365) {
-        PyErr_SetString(PyExc_ValueError, "day of year out of range");
-        return NULL;
-    }
-    /* Normalize tm_isdst just in case someone foolishly implements %Z
-       based on the assumption that tm_isdst falls within the range of
-       [-1, 1] */
-    if (buf.tm_isdst < -1)
-        buf.tm_isdst = -1;
-    else if (buf.tm_isdst > 1)
-        buf.tm_isdst = 1;
-
-#ifdef MS_WINDOWS
-    /* check that the format string contains only valid directives */
-    for(outbuf = strchr(fmt, '%');
-        outbuf != NULL;
-        outbuf = strchr(outbuf+2, '%'))
-    {
-        if (outbuf[1]=='#')
-            ++outbuf; /* not documented by python, */
-        if (outbuf[1]=='\0' ||
-            !strchr("aAbBcdHIjmMpSUwWxXyYzZ%", outbuf[1]))
-        {
-            PyErr_SetString(PyExc_ValueError, "Invalid format string");
-            return 0;
-        }
-    }
-#endif
-
-    fmtlen = strlen(fmt);
-
-    /* I hate these functions that presume you know how big the output
-     * will be ahead of time...
-     */
-    for (i = 1024; ; i += i) {
-        outbuf = (char *)malloc(i);
-        if (outbuf == NULL) {
-            return PyErr_NoMemory();
-        }
-        buflen = strftime(outbuf, i, fmt, &buf);
-        if (buflen > 0 || i >= 256 * fmtlen) {
-            /* If the buffer is 256 times as long as the format,
-               it's probably not failing for lack of room!
-               More likely, the format yields an empty result,
-               e.g. an empty format, or %Z when the timezone
-               is unknown. */
-            PyObject *ret;
-            ret = PyString_FromStringAndSize(outbuf, buflen);
-            free(outbuf);
-            return ret;
-        }
-        free(outbuf);
-#if defined _MSC_VER && _MSC_VER >= 1400 && defined(__STDC_SECURE_LIB__)
-        /* VisualStudio .NET 2005 does this properly */
-        if (buflen == 0 && errno == EINVAL) {
-            PyErr_SetString(PyExc_ValueError, "Invalid format string");
-            return 0;
-        }
-#endif
-
-    }
-}
-
-PyDoc_STRVAR(strftime_doc,
-"strftime(format[, tuple]) -> string\n\
-\n\
-Convert a time tuple to a string according to a format specification.\n\
-See the library reference manual for formatting codes. When the time tuple\n\
-is not present, current time as returned by localtime() is used.");
-#endif /* HAVE_STRFTIME */
-
-static PyObject *
-time_strptime(PyObject *self, PyObject *args)
-{
-    PyObject *strptime_module = PyImport_ImportModuleNoBlock("_strptime");
-    PyObject *strptime_result;
-
-    if (!strptime_module)
-        return NULL;
-    strptime_result = PyObject_CallMethod(strptime_module,
-                                            "_strptime_time", "O", args);
-    Py_DECREF(strptime_module);
-    return strptime_result;
-}
-
-PyDoc_STRVAR(strptime_doc,
-"strptime(string, format) -> struct_time\n\
-\n\
-Parse a string to a time tuple according to a format specification.\n\
-See the library reference manual for formatting codes (same as strftime()).");
-
-
-static PyObject *
-time_asctime(PyObject *self, PyObject *args)
-{
-    PyObject *tup = NULL;
-    struct tm buf;
-    char *p;
-    if (!PyArg_UnpackTuple(args, "asctime", 0, 1, &tup))
-        return NULL;
-    if (tup == NULL) {
-        time_t tt = time(NULL);
-        buf = *localtime(&tt);
-    } else if (!gettmarg(tup, &buf))
-        return NULL;
-    p = asctime(&buf);
-    if (p == NULL) {
-        PyErr_SetString(PyExc_ValueError, "invalid time");
-        return NULL;
-    }
-    if (p[24] == '\n')
-        p[24] = '\0';
-    return PyString_FromString(p);
-}
-
-PyDoc_STRVAR(asctime_doc,
-"asctime([tuple]) -> string\n\
-\n\
-Convert a time tuple to a string, e.g. 'Sat Jun 06 16:26:11 1998'.\n\
-When the time tuple is not present, current time as returned by localtime()\n\
-is used.");
-
-static PyObject *
-time_ctime(PyObject *self, PyObject *args)
-{
-    PyObject *ot = NULL;
-    time_t tt;
-    char *p;
-
-    if (!PyArg_UnpackTuple(args, "ctime", 0, 1, &ot))
-        return NULL;
-    if (ot == NULL || ot == Py_None)
-        tt = time(NULL);
-    else {
-        double dt = PyFloat_AsDouble(ot);
-        if (PyErr_Occurred())
-            return NULL;
-        tt = _PyTime_DoubleToTimet(dt);
-        if (tt == (time_t)-1 && PyErr_Occurred())
-            return NULL;
-    }
-    p = ctime(&tt);
-    if (p == NULL) {
-        PyErr_SetString(PyExc_ValueError, "unconvertible time");
-        return NULL;
-    }
-    if (p[24] == '\n')
-        p[24] = '\0';
-    return PyString_FromString(p);
-}
-
-PyDoc_STRVAR(ctime_doc,
-"ctime(seconds) -> string\n\
-\n\
-Convert a time in seconds since the Epoch to a string in local time.\n\
-This is equivalent to asctime(localtime(seconds)). When the time tuple is\n\
-not present, current time as returned by localtime() is used.");
-
-#ifdef HAVE_MKTIME
-static PyObject *
-time_mktime(PyObject *self, PyObject *tup)
-{
-    struct tm buf;
-    time_t tt;
-    if (!gettmarg(tup, &buf))
-        return NULL;
-    buf.tm_wday = -1;  /* sentinel; original value ignored */
-    tt = mktime(&buf);
-    /* Return value of -1 does not necessarily mean an error, but tm_wday
-     * cannot remain set to -1 if mktime succeeded. */
-    if (tt == (time_t)(-1) && buf.tm_wday == -1) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "mktime argument out of range");
-        return NULL;
-    }
-    return PyFloat_FromDouble((double)tt);
-}
-
-PyDoc_STRVAR(mktime_doc,
-"mktime(tuple) -> floating point number\n\
-\n\
-Convert a time tuple in local time to seconds since the Epoch.");
-#endif /* HAVE_MKTIME */
-
-#ifdef HAVE_WORKING_TZSET
-static void inittimezone(PyObject *module);
-
-static PyObject *
-time_tzset(PyObject *self, PyObject *unused)
-{
-    PyObject* m;
-
-    m = PyImport_ImportModuleNoBlock("time");
-    if (m == NULL) {
-        return NULL;
-    }
-
-    tzset();
-
-    /* Reset timezone, altzone, daylight and tzname */
-    inittimezone(m);
-    Py_DECREF(m);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(tzset_doc,
-"tzset()\n\
-\n\
-Initialize, or reinitialize, the local timezone to the value stored in\n\
-os.environ['TZ']. The TZ environment variable should be specified in\n\
-standard Unix timezone format as documented in the tzset man page\n\
-(eg. 'US/Eastern', 'Europe/Amsterdam'). Unknown timezones will silently\n\
-fall back to UTC. If the TZ environment variable is not set, the local\n\
-timezone is set to the systems best guess of wallclock time.\n\
-Changing the TZ environment variable without calling tzset *may* change\n\
-the local timezone used by methods such as localtime, but this behaviour\n\
-should not be relied on.");
-#endif /* HAVE_WORKING_TZSET */
-
-static void
-inittimezone(PyObject *m) {
-    /* This code moved from inittime wholesale to allow calling it from
-    time_tzset. In the future, some parts of it can be moved back
-    (for platforms that don't HAVE_WORKING_TZSET, when we know what they
-    are), and the extraneous calls to tzset(3) should be removed.
-    I haven't done this yet, as I don't want to change this code as
-    little as possible when introducing the time.tzset and time.tzsetwall
-    methods. This should simply be a method of doing the following once,
-    at the top of this function and removing the call to tzset() from
-    time_tzset():
-
-        #ifdef HAVE_TZSET
-        tzset()
-        #endif
-
-    And I'm lazy and hate C so nyer.
-     */
-#if defined(HAVE_TZNAME) && !defined(__GLIBC__) && !defined(__CYGWIN__)
-    tzset();
-#ifdef PYOS_OS2
-    PyModule_AddIntConstant(m, "timezone", _timezone);
-#else /* !PYOS_OS2 */
-    PyModule_AddIntConstant(m, "timezone", timezone);
-#endif /* PYOS_OS2 */
-#ifdef HAVE_ALTZONE
-    PyModule_AddIntConstant(m, "altzone", altzone);
-#else
-#ifdef PYOS_OS2
-    PyModule_AddIntConstant(m, "altzone", _timezone-3600);
-#else /* !PYOS_OS2 */
-    PyModule_AddIntConstant(m, "altzone", timezone-3600);
-#endif /* PYOS_OS2 */
-#endif
-    PyModule_AddIntConstant(m, "daylight", daylight);
-    PyModule_AddObject(m, "tzname",
-                       Py_BuildValue("(zz)", tzname[0], tzname[1]));
-#else /* !HAVE_TZNAME || __GLIBC__ || __CYGWIN__*/
-#ifdef HAVE_STRUCT_TM_TM_ZONE
-    {
-#define YEAR ((time_t)((365 * 24 + 6) * 3600))
-        time_t t;
-        struct tm *p;
-        long janzone, julyzone;
-        char janname[10], julyname[10];
-        t = (time((time_t *)0) / YEAR) * YEAR;
-        p = localtime(&t);
-        janzone = -p->tm_gmtoff;
-        strncpy(janname, p->tm_zone ? p->tm_zone : "   ", 9);
-        janname[9] = '\0';
-        t += YEAR/2;
-        p = localtime(&t);
-        julyzone = -p->tm_gmtoff;
-        strncpy(julyname, p->tm_zone ? p->tm_zone : "   ", 9);
-        julyname[9] = '\0';
-
-        if( janzone < julyzone ) {
-            /* DST is reversed in the southern hemisphere */
-            PyModule_AddIntConstant(m, "timezone", julyzone);
-            PyModule_AddIntConstant(m, "altzone", janzone);
-            PyModule_AddIntConstant(m, "daylight",
-                                    janzone != julyzone);
-            PyModule_AddObject(m, "tzname",
-                               Py_BuildValue("(zz)",
-                                             julyname, janname));
-        } else {
-            PyModule_AddIntConstant(m, "timezone", janzone);
-            PyModule_AddIntConstant(m, "altzone", julyzone);
-            PyModule_AddIntConstant(m, "daylight",
-                                    janzone != julyzone);
-            PyModule_AddObject(m, "tzname",
-                               Py_BuildValue("(zz)",
-                                             janname, julyname));
-        }
-    }
-#else
-#endif /* HAVE_STRUCT_TM_TM_ZONE */
-#ifdef __CYGWIN__
-    tzset();
-    PyModule_AddIntConstant(m, "timezone", _timezone);
-    PyModule_AddIntConstant(m, "altzone", _timezone-3600);
-    PyModule_AddIntConstant(m, "daylight", _daylight);
-    PyModule_AddObject(m, "tzname",
-                       Py_BuildValue("(zz)", _tzname[0], _tzname[1]));
-#endif /* __CYGWIN__ */
-#endif /* !HAVE_TZNAME || __GLIBC__ || __CYGWIN__*/
-}
-
-
-static PyMethodDef time_methods[] = {
-    {"time",            time_time, METH_NOARGS, time_doc},
-#ifdef HAVE_CLOCK
-    {"clock",           time_clock, METH_NOARGS, clock_doc},
-#endif
-    {"sleep",           time_sleep, METH_VARARGS, sleep_doc},
-    {"gmtime",          time_gmtime, METH_VARARGS, gmtime_doc},
-    {"localtime",       time_localtime, METH_VARARGS, localtime_doc},
-    {"asctime",         time_asctime, METH_VARARGS, asctime_doc},
-    {"ctime",           time_ctime, METH_VARARGS, ctime_doc},
-#ifdef HAVE_MKTIME
-    {"mktime",          time_mktime, METH_O, mktime_doc},
-#endif
-#ifdef HAVE_STRFTIME
-    {"strftime",        time_strftime, METH_VARARGS, strftime_doc},
-#endif
-    {"strptime",        time_strptime, METH_VARARGS, strptime_doc},
-#ifdef HAVE_WORKING_TZSET
-    {"tzset",           time_tzset, METH_NOARGS, tzset_doc},
-#endif
-    {NULL,              NULL}           /* sentinel */
-};
-
-
-PyDoc_STRVAR(module_doc,
-"This module provides various functions to manipulate time values.\n\
-\n\
-There are two standard representations of time.  One is the number\n\
-of seconds since the Epoch, in UTC (a.k.a. GMT).  It may be an integer\n\
-or a floating point number (to represent fractions of seconds).\n\
-The Epoch is system-defined; on Unix, it is generally January 1st, 1970.\n\
-The actual value can be retrieved by calling gmtime(0).\n\
-\n\
-The other representation is a tuple of 9 integers giving local time.\n\
-The tuple items are:\n\
-  year (four digits, e.g. 1998)\n\
-  month (1-12)\n\
-  day (1-31)\n\
-  hours (0-23)\n\
-  minutes (0-59)\n\
-  seconds (0-59)\n\
-  weekday (0-6, Monday is 0)\n\
-  Julian day (day in the year, 1-366)\n\
-  DST (Daylight Savings Time) flag (-1, 0 or 1)\n\
-If the DST flag is 0, the time is given in the regular time zone;\n\
-if it is 1, the time is given in the DST time zone;\n\
-if it is -1, mktime() should guess based on the date and time.\n\
-\n\
-Variables:\n\
-\n\
-timezone -- difference in seconds between UTC and local standard time\n\
-altzone -- difference in  seconds between UTC and local DST time\n\
-daylight -- whether local time should reflect DST\n\
-tzname -- tuple of (standard time zone name, DST time zone name)\n\
-\n\
-Functions:\n\
-\n\
-time() -- return current time in seconds since the Epoch as a float\n\
-clock() -- return CPU time since process start as a float\n\
-sleep() -- delay for a number of seconds given as a float\n\
-gmtime() -- convert seconds since Epoch to UTC tuple\n\
-localtime() -- convert seconds since Epoch to local time tuple\n\
-asctime() -- convert time tuple to string\n\
-ctime() -- convert time in seconds to string\n\
-mktime() -- convert local time tuple to seconds since Epoch\n\
-strftime() -- convert time tuple to string according to format specification\n\
-strptime() -- parse string to time tuple according to format specification\n\
-tzset() -- change the local timezone");
-
-
-PyMODINIT_FUNC
-inittime(void)
-{
-    PyObject *m;
-    char *p;
-    m = Py_InitModule3("time", time_methods, module_doc);
-    if (m == NULL)
-        return;
-
-    /* Accept 2-digit dates unless PYTHONY2K is set and non-empty */
-    p = Py_GETENV("PYTHONY2K");
-    PyModule_AddIntConstant(m, "accept2dyear", (long) (!p || !*p));
-    /* Squirrel away the module's dictionary for the y2k check */
-    moddict = PyModule_GetDict(m);
-    Py_INCREF(moddict);
-
-    /* Set, or reset, module variables like time.timezone */
-    inittimezone(m);
-
-#ifdef MS_WINDOWS
-    /* Helper to allow interrupts for Windows.
-       If Ctrl+C event delivered while not sleeping
-       it will be ignored.
-    */
-    main_thread = PyThread_get_thread_ident();
-    hInterruptEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
-    SetConsoleCtrlHandler( PyCtrlHandler, TRUE);
-#endif /* MS_WINDOWS */
-    if (!initialized) {
-        PyStructSequence_InitType(&StructTimeType,
-                                  &struct_time_type_desc);
-    }
-    Py_INCREF(&StructTimeType);
-    PyModule_AddObject(m, "struct_time", (PyObject*) &StructTimeType);
-    initialized = 1;
-}
-
-
-/* Implement floattime() for various platforms */
-
-static double
-floattime(void)
-{
-    /* There are three ways to get the time:
-      (1) gettimeofday() -- resolution in microseconds
-      (2) ftime() -- resolution in milliseconds
-      (3) time() -- resolution in seconds
-      In all cases the return value is a float in seconds.
-      Since on some systems (e.g. SCO ODT 3.0) gettimeofday() may
-      fail, so we fall back on ftime() or time().
-      Note: clock resolution does not imply clock accuracy! */
-#ifdef HAVE_GETTIMEOFDAY
-    {
-        struct timeval t;
-#ifdef GETTIMEOFDAY_NO_TZ
-        if (gettimeofday(&t) == 0)
-            return (double)t.tv_sec + t.tv_usec*0.000001;
-#else /* !GETTIMEOFDAY_NO_TZ */
-        if (gettimeofday(&t, (struct timezone *)NULL) == 0)
-            return (double)t.tv_sec + t.tv_usec*0.000001;
-#endif /* !GETTIMEOFDAY_NO_TZ */
-    }
-
-#endif /* !HAVE_GETTIMEOFDAY */
-    {
-#if defined(HAVE_FTIME)
-        struct timeb t;
-        ftime(&t);
-        return (double)t.time + (double)t.millitm * (double)0.001;
-#else /* !HAVE_FTIME */
-        time_t secs;
-        time(&secs);
-        return (double)secs;
-#endif /* !HAVE_FTIME */
-    }
-}
-
-
-/* Implement floatsleep() for various platforms.
-   When interrupted (or when another error occurs), return -1 and
-   set an exception; else return 0. */
-
-static int
-floatsleep(double secs)
-{
-/* XXX Should test for MS_WINDOWS first! */
-#if defined(HAVE_SELECT) && !defined(__BEOS__) && !defined(__EMX__)
-    struct timeval t;
-    double frac;
-    frac = fmod(secs, 1.0);
-    secs = floor(secs);
-    t.tv_sec = (long)secs;
-    t.tv_usec = (long)(frac*1000000.0);
-    Py_BEGIN_ALLOW_THREADS
-    if (select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &t) != 0) {
-#ifdef EINTR
-        if (errno != EINTR) {
-#else
-        if (1) {
-#endif
-            Py_BLOCK_THREADS
-            PyErr_SetFromErrno(PyExc_IOError);
-            return -1;
-        }
-    }
-    Py_END_ALLOW_THREADS
-#elif defined(__WATCOMC__) && !defined(__QNX__)
-    /* XXX Can't interrupt this sleep */
-    Py_BEGIN_ALLOW_THREADS
-    delay((int)(secs * 1000 + 0.5));  /* delay() uses milliseconds */
-    Py_END_ALLOW_THREADS
-#elif defined(MS_WINDOWS)
-    {
-        double millisecs = secs * 1000.0;
-        unsigned long ul_millis;
-
-        if (millisecs > (double)ULONG_MAX) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "sleep length is too large");
-            return -1;
-        }
-        Py_BEGIN_ALLOW_THREADS
-        /* Allow sleep(0) to maintain win32 semantics, and as decreed
-         * by Guido, only the main thread can be interrupted.
-         */
-        ul_millis = (unsigned long)millisecs;
-        if (ul_millis == 0 ||
-            main_thread != PyThread_get_thread_ident())
-            Sleep(ul_millis);
-        else {
-            DWORD rc;
-            ResetEvent(hInterruptEvent);
-            rc = WaitForSingleObject(hInterruptEvent, ul_millis);
-            if (rc == WAIT_OBJECT_0) {
-                /* Yield to make sure real Python signal
-                 * handler called.
-                 */
-                Sleep(1);
-                Py_BLOCK_THREADS
-                errno = EINTR;
-                PyErr_SetFromErrno(PyExc_IOError);
-                return -1;
-            }
-        }
-        Py_END_ALLOW_THREADS
-    }
-#elif defined(PYOS_OS2)
-    /* This Sleep *IS* Interruptable by Exceptions */
-    Py_BEGIN_ALLOW_THREADS
-    if (DosSleep(secs * 1000) != NO_ERROR) {
-        Py_BLOCK_THREADS
-        PyErr_SetFromErrno(PyExc_IOError);
-        return -1;
-    }
-    Py_END_ALLOW_THREADS
-#elif defined(__BEOS__)
-    /* This sleep *CAN BE* interrupted. */
-    {
-        if( secs <= 0.0 ) {
-            return;
-        }
-
-        Py_BEGIN_ALLOW_THREADS
-        /* BeOS snooze() is in microseconds... */
-        if( snooze( (bigtime_t)( secs * 1000.0 * 1000.0 ) ) == B_INTERRUPTED ) {
-            Py_BLOCK_THREADS
-            PyErr_SetFromErrno( PyExc_IOError );
-            return -1;
-        }
-        Py_END_ALLOW_THREADS
-    }
-#elif defined(RISCOS)
-    if (secs <= 0.0)
-        return 0;
-    Py_BEGIN_ALLOW_THREADS
-    /* This sleep *CAN BE* interrupted. */
-    if ( riscos_sleep(secs) )
-        return -1;
-    Py_END_ALLOW_THREADS
-#elif defined(PLAN9)
-    {
-        double millisecs = secs * 1000.0;
-        if (millisecs > (double)LONG_MAX) {
-            PyErr_SetString(PyExc_OverflowError, "sleep length is too large");
-            return -1;
-        }
-        /* This sleep *CAN BE* interrupted. */
-        Py_BEGIN_ALLOW_THREADS
-        if(sleep((long)millisecs) < 0){
-            Py_BLOCK_THREADS
-            PyErr_SetFromErrno(PyExc_IOError);
-            return -1;
-        }
-        Py_END_ALLOW_THREADS
-    }
-#else
-    /* XXX Can't interrupt this sleep */
-    Py_BEGIN_ALLOW_THREADS
-    sleep((int)secs);
-    Py_END_ALLOW_THREADS
-#endif
-
-    return 0;
-}
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/timing.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/timing.h
deleted file mode 100644
index 63e035b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/timing.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 1993 George V. Neville-Neil
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name, George Neville-Neil may not be used to endorse or promote
- *    products derived from this software without specific prior
- *    written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _TIMING_H_
-#define _TIMING_H_
-
-#ifdef TIME_WITH_SYS_TIME
-#include <sys/time.h>
-#include <time.h>
-#else /* !TIME_WITH_SYS_TIME */
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#else /* !HAVE_SYS_TIME_H */
-#include <time.h>
-#endif /* !HAVE_SYS_TIME_H */
-#endif /* !TIME_WITH_SYS_TIME */
-
-static struct timeval aftertp, beforetp;
-
-#define BEGINTIMING gettimeofday(&beforetp, NULL)
-
-#define ENDTIMING gettimeofday(&aftertp, NULL); \
-    if(beforetp.tv_usec > aftertp.tv_usec) \
-    {  \
-         aftertp.tv_usec += 1000000;  \
-         aftertp.tv_sec--; \
-    }
-
-#define TIMINGUS (((aftertp.tv_sec - beforetp.tv_sec) * 1000000) + \
-		  (aftertp.tv_usec - beforetp.tv_usec))
-
-#define TIMINGMS (((aftertp.tv_sec - beforetp.tv_sec) * 1000) + \
-		  ((aftertp.tv_usec - beforetp.tv_usec) / 1000))
-
-#define TIMINGS  ((aftertp.tv_sec - beforetp.tv_sec) + \
-		  (aftertp.tv_usec - beforetp.tv_usec) / 1000000)
-
-#endif /* _TIMING_H_ */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/timingmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/timingmodule.c
deleted file mode 100644
index d55365b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/timingmodule.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Author: George V. Neville-Neil
- */
-
-#include "Python.h"
-
-/* Our stuff... */
-#include "timing.h"
-
-static PyObject *
-start_timing(PyObject *self)
-{
-    Py_INCREF(Py_None);
-    BEGINTIMING;
-    return Py_None;
-}
-
-static PyObject *
-finish_timing(PyObject *self)
-{
-    ENDTIMING
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-seconds(PyObject *self)
-{
-    return PyInt_FromLong(TIMINGS);
-}
-
-static PyObject *
-milli(PyObject *self)
-{
-    return PyInt_FromLong(TIMINGMS);
-}
-
-static PyObject *
-micro(PyObject *self)
-{
-    return PyInt_FromLong(TIMINGUS);
-}
-
-
-static PyMethodDef timing_methods[] = {
-    {"start",   (PyCFunction)start_timing, METH_NOARGS},
-    {"finish",  (PyCFunction)finish_timing, METH_NOARGS},
-    {"seconds", (PyCFunction)seconds, METH_NOARGS},
-    {"milli",   (PyCFunction)milli, METH_NOARGS},
-    {"micro",   (PyCFunction)micro, METH_NOARGS},
-    {NULL,      NULL}
-};
-
-
-PyMODINIT_FUNC inittiming(void)
-{
-    if (PyErr_WarnPy3k("the timing module has been removed in "
-                        "Python 3.0; use time.clock() instead", 2) < 0)
-    return;
-
-    (void)Py_InitModule("timing", timing_methods);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/unicodedata.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/unicodedata.c
deleted file mode 100644
index 501e050..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/unicodedata.c
+++ /dev/null
@@ -1,1280 +0,0 @@
-/* ------------------------------------------------------------------------
-
-   unicodedata -- Provides access to the Unicode 5.2 data base.
-
-   Data was extracted from the Unicode 5.2 UnicodeData.txt file.
-
-   Written by Marc-Andre Lemburg (mal@lemburg.com).
-   Modified for Python 2.0 by Fredrik Lundh (fredrik@pythonware.com)
-   Modified by Martin v. Löwis (martin@v.loewis.de)
-
-   Copyright (c) Corporation for National Research Initiatives.
-
-   ------------------------------------------------------------------------ */
-
-#include "Python.h"
-#include "ucnhash.h"
-#include "structmember.h"
-
-/* character properties */
-
-typedef struct {
-    const unsigned char category;       /* index into
-                                           _PyUnicode_CategoryNames */
-    const unsigned char combining;      /* combining class value 0 - 255 */
-    const unsigned char bidirectional;  /* index into
-                                           _PyUnicode_BidirectionalNames */
-    const unsigned char mirrored;       /* true if mirrored in bidir mode */
-    const unsigned char east_asian_width;       /* index into
-                                                   _PyUnicode_EastAsianWidth */
-    const unsigned char normalization_quick_check; /* see is_normalized() */
-} _PyUnicode_DatabaseRecord;
-
-typedef struct change_record {
-    /* sequence of fields should be the same as in merge_old_version */
-    const unsigned char bidir_changed;
-    const unsigned char category_changed;
-    const unsigned char decimal_changed;
-    const unsigned char mirrored_changed;
-    const double numeric_changed;
-} change_record;
-
-/* data file generated by Tools/unicode/makeunicodedata.py */
-#include "unicodedata_db.h"
-
-static const _PyUnicode_DatabaseRecord*
-_getrecord_ex(Py_UCS4 code)
-{
-    int index;
-    if (code >= 0x110000)
-        index = 0;
-    else {
-        index = index1[(code>>SHIFT)];
-        index = index2[(index<<SHIFT)+(code&((1<<SHIFT)-1))];
-    }
-
-    return &_PyUnicode_Database_Records[index];
-}
-
-/* ------------- Previous-version API ------------------------------------- */
-typedef struct previous_version {
-    PyObject_HEAD
-    const char *name;
-    const change_record* (*getrecord)(Py_UCS4);
-    Py_UCS4 (*normalization)(Py_UCS4);
-} PreviousDBVersion;
-
-#define get_old_record(self, v)    ((((PreviousDBVersion*)self)->getrecord)(v))
-
-static PyMemberDef DB_members[] = {
-        {"unidata_version", T_STRING, offsetof(PreviousDBVersion, name), READONLY},
-        {NULL}
-};
-
-/* forward declaration */
-static PyTypeObject UCD_Type;
-
-static PyObject*
-new_previous_version(const char*name, const change_record* (*getrecord)(Py_UCS4),
-                     Py_UCS4 (*normalization)(Py_UCS4))
-{
-        PreviousDBVersion *self;
-        self = PyObject_New(PreviousDBVersion, &UCD_Type);
-        if (self == NULL)
-                return NULL;
-        self->name = name;
-        self->getrecord = getrecord;
-        self->normalization = normalization;
-        return (PyObject*)self;
-}
-
-
-static Py_UCS4 getuchar(PyUnicodeObject *obj)
-{
-    Py_UNICODE *v = PyUnicode_AS_UNICODE(obj);
-
-    if (PyUnicode_GET_SIZE(obj) == 1)
-        return *v;
-#ifndef Py_UNICODE_WIDE
-    else if ((PyUnicode_GET_SIZE(obj) == 2) &&
-             (0xD800 <= v[0] && v[0] <= 0xDBFF) &&
-             (0xDC00 <= v[1] && v[1] <= 0xDFFF))
-        return (((v[0] & 0x3FF)<<10) | (v[1] & 0x3FF)) + 0x10000;
-#endif
-    PyErr_SetString(PyExc_TypeError,
-                    "need a single Unicode character as parameter");
-    return (Py_UCS4)-1;
-}
-
-/* --- Module API --------------------------------------------------------- */
-
-PyDoc_STRVAR(unicodedata_decimal__doc__,
-"decimal(unichr[, default])\n\
-\n\
-Returns the decimal value assigned to the Unicode character unichr\n\
-as integer. If no such value is defined, default is returned, or, if\n\
-not given, ValueError is raised.");
-
-static PyObject *
-unicodedata_decimal(PyObject *self, PyObject *args)
-{
-    PyUnicodeObject *v;
-    PyObject *defobj = NULL;
-    int have_old = 0;
-    long rc;
-    Py_UCS4 c;
-
-    if (!PyArg_ParseTuple(args, "O!|O:decimal", &PyUnicode_Type, &v, &defobj))
-        return NULL;
-    c = getuchar(v);
-    if (c == (Py_UCS4)-1)
-        return NULL;
-
-    if (self) {
-        const change_record *old = get_old_record(self, c);
-        if (old->category_changed == 0) {
-            /* unassigned */
-            have_old = 1;
-            rc = -1;
-        }
-        else if (old->decimal_changed != 0xFF) {
-            have_old = 1;
-            rc = old->decimal_changed;
-        }
-    }
-
-    if (!have_old)
-        rc = Py_UNICODE_TODECIMAL(c);
-    if (rc < 0) {
-        if (defobj == NULL) {
-            PyErr_SetString(PyExc_ValueError,
-                            "not a decimal");
-            return NULL;
-        }
-        else {
-            Py_INCREF(defobj);
-            return defobj;
-        }
-    }
-    return PyInt_FromLong(rc);
-}
-
-PyDoc_STRVAR(unicodedata_digit__doc__,
-"digit(unichr[, default])\n\
-\n\
-Returns the digit value assigned to the Unicode character unichr as\n\
-integer. If no such value is defined, default is returned, or, if\n\
-not given, ValueError is raised.");
-
-static PyObject *
-unicodedata_digit(PyObject *self, PyObject *args)
-{
-    PyUnicodeObject *v;
-    PyObject *defobj = NULL;
-    long rc;
-    Py_UCS4 c;
-
-    if (!PyArg_ParseTuple(args, "O!|O:digit", &PyUnicode_Type, &v, &defobj))
-        return NULL;
-    c = getuchar(v);
-    if (c == (Py_UCS4)-1)
-        return NULL;
-    rc = Py_UNICODE_TODIGIT(c);
-    if (rc < 0) {
-        if (defobj == NULL) {
-            PyErr_SetString(PyExc_ValueError, "not a digit");
-            return NULL;
-        }
-        else {
-            Py_INCREF(defobj);
-            return defobj;
-        }
-    }
-    return PyInt_FromLong(rc);
-}
-
-PyDoc_STRVAR(unicodedata_numeric__doc__,
-"numeric(unichr[, default])\n\
-\n\
-Returns the numeric value assigned to the Unicode character unichr\n\
-as float. If no such value is defined, default is returned, or, if\n\
-not given, ValueError is raised.");
-
-static PyObject *
-unicodedata_numeric(PyObject *self, PyObject *args)
-{
-    PyUnicodeObject *v;
-    PyObject *defobj = NULL;
-    int have_old = 0;
-    double rc;
-    Py_UCS4 c;
-
-    if (!PyArg_ParseTuple(args, "O!|O:numeric", &PyUnicode_Type, &v, &defobj))
-        return NULL;
-    c = getuchar(v);
-    if (c == (Py_UCS4)-1)
-        return NULL;
-
-    if (self) {
-        const change_record *old = get_old_record(self, c);
-        if (old->category_changed == 0) {
-            /* unassigned */
-            have_old = 1;
-            rc = -1.0;
-        }
-        else if (old->decimal_changed != 0xFF) {
-            have_old = 1;
-            rc = old->decimal_changed;
-        }
-    }
-
-    if (!have_old)
-        rc = Py_UNICODE_TONUMERIC(c);
-    if (rc == -1.0) {
-        if (defobj == NULL) {
-            PyErr_SetString(PyExc_ValueError, "not a numeric character");
-            return NULL;
-        }
-        else {
-            Py_INCREF(defobj);
-            return defobj;
-        }
-    }
-    return PyFloat_FromDouble(rc);
-}
-
-PyDoc_STRVAR(unicodedata_category__doc__,
-"category(unichr)\n\
-\n\
-Returns the general category assigned to the Unicode character\n\
-unichr as string.");
-
-static PyObject *
-unicodedata_category(PyObject *self, PyObject *args)
-{
-    PyUnicodeObject *v;
-    int index;
-    Py_UCS4 c;
-
-    if (!PyArg_ParseTuple(args, "O!:category",
-                          &PyUnicode_Type, &v))
-        return NULL;
-    c = getuchar(v);
-    if (c == (Py_UCS4)-1)
-        return NULL;
-    index = (int) _getrecord_ex(c)->category;
-    if (self) {
-        const change_record *old = get_old_record(self, c);
-        if (old->category_changed != 0xFF)
-            index = old->category_changed;
-    }
-    return PyString_FromString(_PyUnicode_CategoryNames[index]);
-}
-
-PyDoc_STRVAR(unicodedata_bidirectional__doc__,
-"bidirectional(unichr)\n\
-\n\
-Returns the bidirectional category assigned to the Unicode character\n\
-unichr as string. If no such value is defined, an empty string is\n\
-returned.");
-
-static PyObject *
-unicodedata_bidirectional(PyObject *self, PyObject *args)
-{
-    PyUnicodeObject *v;
-    int index;
-    Py_UCS4 c;
-
-    if (!PyArg_ParseTuple(args, "O!:bidirectional",
-                          &PyUnicode_Type, &v))
-        return NULL;
-    c = getuchar(v);
-    if (c == (Py_UCS4)-1)
-        return NULL;
-    index = (int) _getrecord_ex(c)->bidirectional;
-    if (self) {
-        const change_record *old = get_old_record(self, c);
-        if (old->category_changed == 0)
-            index = 0; /* unassigned */
-        else if (old->bidir_changed != 0xFF)
-            index = old->bidir_changed;
-    }
-    return PyString_FromString(_PyUnicode_BidirectionalNames[index]);
-}
-
-PyDoc_STRVAR(unicodedata_combining__doc__,
-"combining(unichr)\n\
-\n\
-Returns the canonical combining class assigned to the Unicode\n\
-character unichr as integer. Returns 0 if no combining class is\n\
-defined.");
-
-static PyObject *
-unicodedata_combining(PyObject *self, PyObject *args)
-{
-    PyUnicodeObject *v;
-    int index;
-    Py_UCS4 c;
-
-    if (!PyArg_ParseTuple(args, "O!:combining",
-                          &PyUnicode_Type, &v))
-        return NULL;
-    c = getuchar(v);
-    if (c == (Py_UCS4)-1)
-        return NULL;
-    index = (int) _getrecord_ex(c)->combining;
-    if (self) {
-        const change_record *old = get_old_record(self, c);
-        if (old->category_changed == 0)
-            index = 0; /* unassigned */
-    }
-    return PyInt_FromLong(index);
-}
-
-PyDoc_STRVAR(unicodedata_mirrored__doc__,
-"mirrored(unichr)\n\
-\n\
-Returns the mirrored property assigned to the Unicode character\n\
-unichr as integer. Returns 1 if the character has been identified as\n\
-a \"mirrored\" character in bidirectional text, 0 otherwise.");
-
-static PyObject *
-unicodedata_mirrored(PyObject *self, PyObject *args)
-{
-    PyUnicodeObject *v;
-    int index;
-    Py_UCS4 c;
-
-    if (!PyArg_ParseTuple(args, "O!:mirrored",
-                          &PyUnicode_Type, &v))
-        return NULL;
-    c = getuchar(v);
-    if (c == (Py_UCS4)-1)
-        return NULL;
-    index = (int) _getrecord_ex(c)->mirrored;
-    if (self) {
-        const change_record *old = get_old_record(self, c);
-        if (old->category_changed == 0)
-            index = 0; /* unassigned */
-        else if (old->mirrored_changed != 0xFF)
-            index = old->mirrored_changed;
-    }
-    return PyInt_FromLong(index);
-}
-
-PyDoc_STRVAR(unicodedata_east_asian_width__doc__,
-"east_asian_width(unichr)\n\
-\n\
-Returns the east asian width assigned to the Unicode character\n\
-unichr as string.");
-
-static PyObject *
-unicodedata_east_asian_width(PyObject *self, PyObject *args)
-{
-    PyUnicodeObject *v;
-    int index;
-    Py_UCS4 c;
-
-    if (!PyArg_ParseTuple(args, "O!:east_asian_width",
-                          &PyUnicode_Type, &v))
-        return NULL;
-    c = getuchar(v);
-    if (c == (Py_UCS4)-1)
-        return NULL;
-    index = (int) _getrecord_ex(c)->east_asian_width;
-    if (self) {
-        const change_record *old = get_old_record(self, c);
-        if (old->category_changed == 0)
-            index = 0; /* unassigned */
-    }
-    return PyString_FromString(_PyUnicode_EastAsianWidthNames[index]);
-}
-
-PyDoc_STRVAR(unicodedata_decomposition__doc__,
-"decomposition(unichr)\n\
-\n\
-Returns the character decomposition mapping assigned to the Unicode\n\
-character unichr as string. An empty string is returned in case no\n\
-such mapping is defined.");
-
-static PyObject *
-unicodedata_decomposition(PyObject *self, PyObject *args)
-{
-    PyUnicodeObject *v;
-    char decomp[256];
-    int code, index, count, i;
-    unsigned int prefix_index;
-    Py_UCS4 c;
-
-    if (!PyArg_ParseTuple(args, "O!:decomposition",
-                          &PyUnicode_Type, &v))
-        return NULL;
-    c = getuchar(v);
-    if (c == (Py_UCS4)-1)
-        return NULL;
-
-    code = (int)c;
-
-    if (self) {
-        const change_record *old = get_old_record(self, c);
-        if (old->category_changed == 0)
-            return PyString_FromString(""); /* unassigned */
-    }
-
-    if (code < 0 || code >= 0x110000)
-        index = 0;
-    else {
-        index = decomp_index1[(code>>DECOMP_SHIFT)];
-        index = decomp_index2[(index<<DECOMP_SHIFT)+
-                             (code&((1<<DECOMP_SHIFT)-1))];
-    }
-
-    /* high byte is number of hex bytes (usually one or two), low byte
-       is prefix code (from*/
-    count = decomp_data[index] >> 8;
-
-    /* XXX: could allocate the PyString up front instead
-       (strlen(prefix) + 5 * count + 1 bytes) */
-
-    /* Based on how index is calculated above and decomp_data is generated
-       from Tools/unicode/makeunicodedata.py, it should not be possible
-       to overflow decomp_prefix. */
-    prefix_index = decomp_data[index] & 255;
-    assert(prefix_index < (sizeof(decomp_prefix)/sizeof(*decomp_prefix)));
-
-    /* copy prefix */
-    i = strlen(decomp_prefix[prefix_index]);
-    memcpy(decomp, decomp_prefix[prefix_index], i);
-
-    while (count-- > 0) {
-        if (i)
-            decomp[i++] = ' ';
-        assert((size_t)i < sizeof(decomp));
-        PyOS_snprintf(decomp + i, sizeof(decomp) - i, "%04X",
-                      decomp_data[++index]);
-        i += strlen(decomp + i);
-    }
-
-    decomp[i] = '\0';
-
-    return PyString_FromString(decomp);
-}
-
-static void
-get_decomp_record(PyObject *self, Py_UCS4 code, int *index, int *prefix, int *count)
-{
-    if (code >= 0x110000) {
-        *index = 0;
-    } else if (self && get_old_record(self, code)->category_changed==0) {
-        /* unassigned in old version */
-        *index = 0;
-    }
-    else {
-        *index = decomp_index1[(code>>DECOMP_SHIFT)];
-        *index = decomp_index2[(*index<<DECOMP_SHIFT)+
-                               (code&((1<<DECOMP_SHIFT)-1))];
-    }
-
-    /* high byte is number of hex bytes (usually one or two), low byte
-       is prefix code (from*/
-    *count = decomp_data[*index] >> 8;
-    *prefix = decomp_data[*index] & 255;
-
-    (*index)++;
-}
-
-#define SBase   0xAC00
-#define LBase   0x1100
-#define VBase   0x1161
-#define TBase   0x11A7
-#define LCount  19
-#define VCount  21
-#define TCount  28
-#define NCount  (VCount*TCount)
-#define SCount  (LCount*NCount)
-
-static PyObject*
-nfd_nfkd(PyObject *self, PyObject *input, int k)
-{
-    PyObject *result;
-    Py_UNICODE *i, *end, *o;
-    /* Longest decomposition in Unicode 3.2: U+FDFA */
-    Py_UNICODE stack[20];
-    Py_ssize_t space, isize;
-    int index, prefix, count, stackptr;
-    unsigned char prev, cur;
-
-    stackptr = 0;
-    isize = PyUnicode_GET_SIZE(input);
-    /* Overallocate atmost 10 characters. */
-    space = (isize > 10 ? 10 : isize) + isize;
-    result = PyUnicode_FromUnicode(NULL, space);
-    if (!result)
-        return NULL;
-    i = PyUnicode_AS_UNICODE(input);
-    end = i + isize;
-    o = PyUnicode_AS_UNICODE(result);
-
-    while (i < end) {
-        stack[stackptr++] = *i++;
-        while(stackptr) {
-            Py_UNICODE code = stack[--stackptr];
-            /* Hangul Decomposition adds three characters in
-               a single step, so we need atleast that much room. */
-            if (space < 3) {
-                Py_ssize_t newsize = PyString_GET_SIZE(result) + 10;
-                space += 10;
-                if (PyUnicode_Resize(&result, newsize) == -1)
-                    return NULL;
-                o = PyUnicode_AS_UNICODE(result) + newsize - space;
-            }
-            /* Hangul Decomposition. */
-            if (SBase <= code && code < (SBase+SCount)) {
-                int SIndex = code - SBase;
-                int L = LBase + SIndex / NCount;
-                int V = VBase + (SIndex % NCount) / TCount;
-                int T = TBase + SIndex % TCount;
-                *o++ = L;
-                *o++ = V;
-                space -= 2;
-                if (T != TBase) {
-                    *o++ = T;
-                    space --;
-                }
-                continue;
-            }
-            /* normalization changes */
-            if (self) {
-                Py_UCS4 value = ((PreviousDBVersion*)self)->normalization(code);
-                if (value != 0) {
-                    stack[stackptr++] = value;
-                    continue;
-                }
-            }
-
-            /* Other decompositions. */
-            get_decomp_record(self, code, &index, &prefix, &count);
-
-            /* Copy character if it is not decomposable, or has a
-               compatibility decomposition, but we do NFD. */
-            if (!count || (prefix && !k)) {
-                *o++ = code;
-                space--;
-                continue;
-            }
-            /* Copy decomposition onto the stack, in reverse
-               order.  */
-            while(count) {
-                code = decomp_data[index + (--count)];
-                stack[stackptr++] = code;
-            }
-        }
-    }
-
-    /* Drop overallocation. Cannot fail. */
-    PyUnicode_Resize(&result, PyUnicode_GET_SIZE(result) - space);
-
-    /* Sort canonically. */
-    i = PyUnicode_AS_UNICODE(result);
-    prev = _getrecord_ex(*i)->combining;
-    end = i + PyUnicode_GET_SIZE(result);
-    for (i++; i < end; i++) {
-        cur = _getrecord_ex(*i)->combining;
-        if (prev == 0 || cur == 0 || prev <= cur) {
-            prev = cur;
-            continue;
-        }
-        /* Non-canonical order. Need to switch *i with previous. */
-        o = i - 1;
-        while (1) {
-            Py_UNICODE tmp = o[1];
-            o[1] = o[0];
-            o[0] = tmp;
-            o--;
-            if (o < PyUnicode_AS_UNICODE(result))
-                break;
-            prev = _getrecord_ex(*o)->combining;
-            if (prev == 0 || prev <= cur)
-                break;
-        }
-        prev = _getrecord_ex(*i)->combining;
-    }
-    return result;
-}
-
-static int
-find_nfc_index(PyObject *self, struct reindex* nfc, Py_UNICODE code)
-{
-    int index;
-    for (index = 0; nfc[index].start; index++) {
-        int start = nfc[index].start;
-        if (code < start)
-            return -1;
-        if (code <= start + nfc[index].count) {
-            int delta = code - start;
-            return nfc[index].index + delta;
-        }
-    }
-    return -1;
-}
-
-static PyObject*
-nfc_nfkc(PyObject *self, PyObject *input, int k)
-{
-    PyObject *result;
-    Py_UNICODE *i, *i1, *o, *end;
-    int f,l,index,index1,comb;
-    Py_UNICODE code;
-    Py_UNICODE *skipped[20];
-    int cskipped = 0;
-
-    result = nfd_nfkd(self, input, k);
-    if (!result)
-        return NULL;
-
-    /* We are going to modify result in-place.
-       If nfd_nfkd is changed to sometimes return the input,
-       this code needs to be reviewed. */
-    assert(result != input);
-
-    i = PyUnicode_AS_UNICODE(result);
-    end = i + PyUnicode_GET_SIZE(result);
-    o = PyUnicode_AS_UNICODE(result);
-
-  again:
-    while (i < end) {
-      for (index = 0; index < cskipped; index++) {
-          if (skipped[index] == i) {
-              /* *i character is skipped.
-                 Remove from list. */
-              skipped[index] = skipped[cskipped-1];
-              cskipped--;
-              i++;
-              goto again; /* continue while */
-          }
-      }
-      /* Hangul Composition. We don't need to check for <LV,T>
-         pairs, since we always have decomposed data. */
-      if (LBase <= *i && *i < (LBase+LCount) &&
-          i + 1 < end &&
-          VBase <= i[1] && i[1] <= (VBase+VCount)) {
-          int LIndex, VIndex;
-          LIndex = i[0] - LBase;
-          VIndex = i[1] - VBase;
-          code = SBase + (LIndex*VCount+VIndex)*TCount;
-          i+=2;
-          if (i < end &&
-              TBase <= *i && *i <= (TBase+TCount)) {
-              code += *i-TBase;
-              i++;
-          }
-          *o++ = code;
-          continue;
-      }
-
-      f = find_nfc_index(self, nfc_first, *i);
-      if (f == -1) {
-          *o++ = *i++;
-          continue;
-      }
-      /* Find next unblocked character. */
-      i1 = i+1;
-      comb = 0;
-      while (i1 < end) {
-          int comb1 = _getrecord_ex(*i1)->combining;
-          if (comb) {
-              if (comb1 == 0)
-                  break;
-              if (comb >= comb1) {
-                  /* Character is blocked. */
-                  i1++;
-                  continue;
-              }
-          }
-          l = find_nfc_index(self, nfc_last, *i1);
-          /* *i1 cannot be combined with *i. If *i1
-             is a starter, we don't need to look further.
-             Otherwise, record the combining class. */
-          if (l == -1) {
-            not_combinable:
-              if (comb1 == 0)
-                  break;
-              comb = comb1;
-              i1++;
-              continue;
-          }
-          index = f*TOTAL_LAST + l;
-          index1 = comp_index[index >> COMP_SHIFT];
-          code = comp_data[(index1<<COMP_SHIFT)+
-                           (index&((1<<COMP_SHIFT)-1))];
-          if (code == 0)
-              goto not_combinable;
-
-          /* Replace the original character. */
-          *i = code;
-          /* Mark the second character unused. */
-          assert(cskipped < 20);
-          skipped[cskipped++] = i1;
-          i1++;
-          f = find_nfc_index(self, nfc_first, *i);
-          if (f == -1)
-              break;
-      }
-      *o++ = *i++;
-    }
-    if (o != end)
-        PyUnicode_Resize(&result, o - PyUnicode_AS_UNICODE(result));
-    return result;
-}
-
-/* Return 1 if the input is certainly normalized, 0 if it might not be. */
-static int
-is_normalized(PyObject *self, PyObject *input, int nfc, int k)
-{
-    Py_UNICODE *i, *end;
-    unsigned char prev_combining = 0, quickcheck_mask;
-
-    /* An older version of the database is requested, quickchecks must be
-       disabled. */
-    if (self != NULL)
-        return 0;
-
-    /* The two quickcheck bits at this shift mean 0=Yes, 1=Maybe, 2=No,
-       as described in http://unicode.org/reports/tr15/#Annex8. */
-    quickcheck_mask = 3 << ((nfc ? 4 : 0) + (k ? 2 : 0));
-
-    i = PyUnicode_AS_UNICODE(input);
-    end = i + PyUnicode_GET_SIZE(input);
-    while (i < end) {
-        const _PyUnicode_DatabaseRecord *record = _getrecord_ex(*i++);
-        unsigned char combining = record->combining;
-        unsigned char quickcheck = record->normalization_quick_check;
-
-        if (quickcheck & quickcheck_mask)
-            return 0; /* this string might need normalization */
-        if (combining && prev_combining > combining)
-            return 0; /* non-canonical sort order, not normalized */
-        prev_combining = combining;
-    }
-    return 1; /* certainly normalized */
-}
-
-PyDoc_STRVAR(unicodedata_normalize__doc__,
-"normalize(form, unistr)\n\
-\n\
-Return the normal form 'form' for the Unicode string unistr.  Valid\n\
-values for form are 'NFC', 'NFKC', 'NFD', and 'NFKD'.");
-
-static PyObject*
-unicodedata_normalize(PyObject *self, PyObject *args)
-{
-    char *form;
-    PyObject *input;
-
-    if(!PyArg_ParseTuple(args, "sO!:normalize",
-                         &form, &PyUnicode_Type, &input))
-        return NULL;
-
-    if (PyUnicode_GetSize(input) == 0) {
-        /* Special case empty input strings, since resizing
-           them  later would cause internal errors. */
-        Py_INCREF(input);
-        return input;
-    }
-
-    if (strcmp(form, "NFC") == 0) {
-        if (is_normalized(self, input, 1, 0)) {
-            Py_INCREF(input);
-            return input;
-        }
-        return nfc_nfkc(self, input, 0);
-    }
-    if (strcmp(form, "NFKC") == 0) {
-        if (is_normalized(self, input, 1, 1)) {
-            Py_INCREF(input);
-            return input;
-        }
-        return nfc_nfkc(self, input, 1);
-    }
-    if (strcmp(form, "NFD") == 0) {
-        if (is_normalized(self, input, 0, 0)) {
-            Py_INCREF(input);
-            return input;
-        }
-        return nfd_nfkd(self, input, 0);
-    }
-    if (strcmp(form, "NFKD") == 0) {
-        if (is_normalized(self, input, 0, 1)) {
-            Py_INCREF(input);
-            return input;
-        }
-        return nfd_nfkd(self, input, 1);
-    }
-    PyErr_SetString(PyExc_ValueError, "invalid normalization form");
-    return NULL;
-}
-
-/* -------------------------------------------------------------------- */
-/* unicode character name tables */
-
-/* data file generated by Tools/unicode/makeunicodedata.py */
-#include "unicodename_db.h"
-
-/* -------------------------------------------------------------------- */
-/* database code (cut and pasted from the unidb package) */
-
-static unsigned long
-_gethash(const char *s, int len, int scale)
-{
-    int i;
-    unsigned long h = 0;
-    unsigned long ix;
-    for (i = 0; i < len; i++) {
-        h = (h * scale) + (unsigned char) toupper(Py_CHARMASK(s[i]));
-        ix = h & 0xff000000;
-        if (ix)
-            h = (h ^ ((ix>>24) & 0xff)) & 0x00ffffff;
-    }
-    return h;
-}
-
-static char *hangul_syllables[][3] = {
-    { "G",  "A",   ""   },
-    { "GG", "AE",  "G"  },
-    { "N",  "YA",  "GG" },
-    { "D",  "YAE", "GS" },
-    { "DD", "EO",  "N", },
-    { "R",  "E",   "NJ" },
-    { "M",  "YEO", "NH" },
-    { "B",  "YE",  "D"  },
-    { "BB", "O",   "L"  },
-    { "S",  "WA",  "LG" },
-    { "SS", "WAE", "LM" },
-    { "",   "OE",  "LB" },
-    { "J",  "YO",  "LS" },
-    { "JJ", "U",   "LT" },
-    { "C",  "WEO", "LP" },
-    { "K",  "WE",  "LH" },
-    { "T",  "WI",  "M"  },
-    { "P",  "YU",  "B"  },
-    { "H",  "EU",  "BS" },
-    { 0,    "YI",  "S"  },
-    { 0,    "I",   "SS" },
-    { 0,    0,     "NG" },
-    { 0,    0,     "J"  },
-    { 0,    0,     "C"  },
-    { 0,    0,     "K"  },
-    { 0,    0,     "T"  },
-    { 0,    0,     "P"  },
-    { 0,    0,     "H"  }
-};
-
-static int
-is_unified_ideograph(Py_UCS4 code)
-{
-    return (
-        (0x3400 <= code && code <= 0x4DB5) || /* CJK Ideograph Extension A */
-        (0x4E00 <= code && code <= 0x9FCB) || /* CJK Ideograph, Unicode 5.2 */
-        (0x20000 <= code && code <= 0x2A6D6) || /* CJK Ideograph Extension B */
-        (0x2A700 <= code && code <= 0x2B734));  /* CJK Ideograph Extension C */
-}
-
-static int
-_getucname(PyObject *self, Py_UCS4 code, char* buffer, int buflen)
-{
-    int offset;
-    int i;
-    int word;
-    unsigned char* w;
-
-    if (code >= 0x110000)
-        return 0;
-
-    if (self) {
-        const change_record *old = get_old_record(self, code);
-        if (old->category_changed == 0) {
-            /* unassigned */
-            return 0;
-        }
-    }
-
-    if (SBase <= code && code < SBase+SCount) {
-        /* Hangul syllable. */
-        int SIndex = code - SBase;
-        int L = SIndex / NCount;
-        int V = (SIndex % NCount) / TCount;
-        int T = SIndex % TCount;
-
-        if (buflen < 27)
-            /* Worst case: HANGUL SYLLABLE <10chars>. */
-            return 0;
-        strcpy(buffer, "HANGUL SYLLABLE ");
-        buffer += 16;
-        strcpy(buffer, hangul_syllables[L][0]);
-        buffer += strlen(hangul_syllables[L][0]);
-        strcpy(buffer, hangul_syllables[V][1]);
-        buffer += strlen(hangul_syllables[V][1]);
-        strcpy(buffer, hangul_syllables[T][2]);
-        buffer += strlen(hangul_syllables[T][2]);
-        *buffer = '\0';
-        return 1;
-    }
-
-    if (is_unified_ideograph(code)) {
-        if (buflen < 28)
-            /* Worst case: CJK UNIFIED IDEOGRAPH-20000 */
-            return 0;
-        sprintf(buffer, "CJK UNIFIED IDEOGRAPH-%X", code);
-        return 1;
-    }
-
-    /* get offset into phrasebook */
-    offset = phrasebook_offset1[(code>>phrasebook_shift)];
-    offset = phrasebook_offset2[(offset<<phrasebook_shift) +
-                               (code&((1<<phrasebook_shift)-1))];
-    if (!offset)
-        return 0;
-
-    i = 0;
-
-    for (;;) {
-        /* get word index */
-        word = phrasebook[offset] - phrasebook_short;
-        if (word >= 0) {
-            word = (word << 8) + phrasebook[offset+1];
-            offset += 2;
-        } else
-            word = phrasebook[offset++];
-        if (i) {
-            if (i > buflen)
-                return 0; /* buffer overflow */
-            buffer[i++] = ' ';
-        }
-        /* copy word string from lexicon.  the last character in the
-           word has bit 7 set.  the last word in a string ends with
-           0x80 */
-        w = lexicon + lexicon_offset[word];
-        while (*w < 128) {
-            if (i >= buflen)
-                return 0; /* buffer overflow */
-            buffer[i++] = *w++;
-        }
-        if (i >= buflen)
-            return 0; /* buffer overflow */
-        buffer[i++] = *w & 127;
-        if (*w == 128)
-            break; /* end of word */
-    }
-
-    return 1;
-}
-
-static int
-_cmpname(PyObject *self, int code, const char* name, int namelen)
-{
-    /* check if code corresponds to the given name */
-    int i;
-    char buffer[NAME_MAXLEN];
-    if (!_getucname(self, code, buffer, sizeof(buffer)))
-        return 0;
-    for (i = 0; i < namelen; i++) {
-        if (toupper(Py_CHARMASK(name[i])) != buffer[i])
-            return 0;
-    }
-    return buffer[namelen] == '\0';
-}
-
-static void
-find_syllable(const char *str, int *len, int *pos, int count, int column)
-{
-    int i, len1;
-    *len = -1;
-    for (i = 0; i < count; i++) {
-        char *s = hangul_syllables[i][column];
-        len1 = strlen(s);
-        if (len1 <= *len)
-            continue;
-        if (strncmp(str, s, len1) == 0) {
-            *len = len1;
-            *pos = i;
-        }
-    }
-    if (*len == -1) {
-        *len = 0;
-    }
-}
-
-static int
-_getcode(PyObject* self, const char* name, int namelen, Py_UCS4* code)
-{
-    unsigned int h, v;
-    unsigned int mask = code_size-1;
-    unsigned int i, incr;
-
-    /* Check for hangul syllables. */
-    if (strncmp(name, "HANGUL SYLLABLE ", 16) == 0) {
-        int len, L = -1, V = -1, T = -1;
-        const char *pos = name + 16;
-        find_syllable(pos, &len, &L, LCount, 0);
-        pos += len;
-        find_syllable(pos, &len, &V, VCount, 1);
-        pos += len;
-        find_syllable(pos, &len, &T, TCount, 2);
-        pos += len;
-        if (L != -1 && V != -1 && T != -1 && pos-name == namelen) {
-            *code = SBase + (L*VCount+V)*TCount + T;
-            return 1;
-        }
-        /* Otherwise, it's an illegal syllable name. */
-        return 0;
-    }
-
-    /* Check for unified ideographs. */
-    if (strncmp(name, "CJK UNIFIED IDEOGRAPH-", 22) == 0) {
-        /* Four or five hexdigits must follow. */
-        v = 0;
-        name += 22;
-        namelen -= 22;
-        if (namelen != 4 && namelen != 5)
-            return 0;
-        while (namelen--) {
-            v *= 16;
-            if (*name >= '0' && *name <= '9')
-                v += *name - '0';
-            else if (*name >= 'A' && *name <= 'F')
-                v += *name - 'A' + 10;
-            else
-                return 0;
-            name++;
-        }
-        if (!is_unified_ideograph(v))
-            return 0;
-        *code = v;
-        return 1;
-    }
-
-    /* the following is the same as python's dictionary lookup, with
-       only minor changes.  see the makeunicodedata script for more
-       details */
-
-    h = (unsigned int) _gethash(name, namelen, code_magic);
-    i = (~h) & mask;
-    v = code_hash[i];
-    if (!v)
-        return 0;
-    if (_cmpname(self, v, name, namelen)) {
-        *code = v;
-        return 1;
-    }
-    incr = (h ^ (h >> 3)) & mask;
-    if (!incr)
-        incr = mask;
-    for (;;) {
-        i = (i + incr) & mask;
-        v = code_hash[i];
-        if (!v)
-            return 0;
-        if (_cmpname(self, v, name, namelen)) {
-            *code = v;
-            return 1;
-        }
-        incr = incr << 1;
-        if (incr > mask)
-            incr = incr ^ code_poly;
-    }
-}
-
-static const _PyUnicode_Name_CAPI hashAPI =
-{
-    sizeof(_PyUnicode_Name_CAPI),
-    _getucname,
-    _getcode
-};
-
-/* -------------------------------------------------------------------- */
-/* Python bindings */
-
-PyDoc_STRVAR(unicodedata_name__doc__,
-"name(unichr[, default])\n\
-Returns the name assigned to the Unicode character unichr as a\n\
-string. If no name is defined, default is returned, or, if not\n\
-given, ValueError is raised.");
-
-static PyObject *
-unicodedata_name(PyObject* self, PyObject* args)
-{
-    char name[NAME_MAXLEN];
-    Py_UCS4 c;
-
-    PyUnicodeObject* v;
-    PyObject* defobj = NULL;
-    if (!PyArg_ParseTuple(args, "O!|O:name", &PyUnicode_Type, &v, &defobj))
-        return NULL;
-
-    c = getuchar(v);
-    if (c == (Py_UCS4)-1)
-        return NULL;
-
-    if (!_getucname(self, c, name, sizeof(name))) {
-        if (defobj == NULL) {
-            PyErr_SetString(PyExc_ValueError, "no such name");
-            return NULL;
-        }
-        else {
-            Py_INCREF(defobj);
-            return defobj;
-        }
-    }
-
-    return Py_BuildValue("s", name);
-}
-
-PyDoc_STRVAR(unicodedata_lookup__doc__,
-"lookup(name)\n\
-\n\
-Look up character by name.  If a character with the\n\
-given name is found, return the corresponding Unicode\n\
-character.  If not found, KeyError is raised.");
-
-static PyObject *
-unicodedata_lookup(PyObject* self, PyObject* args)
-{
-    Py_UCS4 code;
-    Py_UNICODE str[2];
-
-    char* name;
-    int namelen;
-    if (!PyArg_ParseTuple(args, "s#:lookup", &name, &namelen))
-        return NULL;
-
-    if (!_getcode(self, name, namelen, &code)) {
-        PyErr_Format(PyExc_KeyError, "undefined character name '%s'",
-                     name);
-        return NULL;
-    }
-
-#ifndef Py_UNICODE_WIDE
-    if (code >= 0x10000) {
-        str[0] = 0xd800 + ((code - 0x10000) >> 10);
-        str[1] = 0xdc00 + ((code - 0x10000) & 0x3ff);
-        return PyUnicode_FromUnicode(str, 2);
-    }
-#endif
-    str[0] = (Py_UNICODE) code;
-    return PyUnicode_FromUnicode(str, 1);
-}
-
-/* XXX Add doc strings. */
-
-static PyMethodDef unicodedata_functions[] = {
-    {"decimal", unicodedata_decimal, METH_VARARGS, unicodedata_decimal__doc__},
-    {"digit", unicodedata_digit, METH_VARARGS, unicodedata_digit__doc__},
-    {"numeric", unicodedata_numeric, METH_VARARGS, unicodedata_numeric__doc__},
-    {"category", unicodedata_category, METH_VARARGS,
-                 unicodedata_category__doc__},
-    {"bidirectional", unicodedata_bidirectional, METH_VARARGS,
-                      unicodedata_bidirectional__doc__},
-    {"combining", unicodedata_combining, METH_VARARGS,
-                  unicodedata_combining__doc__},
-    {"mirrored", unicodedata_mirrored, METH_VARARGS,
-                 unicodedata_mirrored__doc__},
-    {"east_asian_width", unicodedata_east_asian_width, METH_VARARGS,
-                         unicodedata_east_asian_width__doc__},
-    {"decomposition", unicodedata_decomposition, METH_VARARGS,
-                      unicodedata_decomposition__doc__},
-    {"name", unicodedata_name, METH_VARARGS, unicodedata_name__doc__},
-    {"lookup", unicodedata_lookup, METH_VARARGS, unicodedata_lookup__doc__},
-    {"normalize", unicodedata_normalize, METH_VARARGS,
-                  unicodedata_normalize__doc__},
-    {NULL, NULL}                /* sentinel */
-};
-
-static PyTypeObject UCD_Type = {
-        /* The ob_type field must be initialized in the module init function
-         * to be portable to Windows without using C++. */
-        PyVarObject_HEAD_INIT(NULL, 0)
-        "unicodedata.UCD",              /*tp_name*/
-        sizeof(PreviousDBVersion),      /*tp_basicsize*/
-        0,                      /*tp_itemsize*/
-        /* methods */
-        (destructor)PyObject_Del, /*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*/
-        PyObject_GenericGetAttr,/*tp_getattro*/
-        0,                      /*tp_setattro*/
-        0,                      /*tp_as_buffer*/
-        Py_TPFLAGS_DEFAULT,     /*tp_flags*/
-        0,                      /*tp_doc*/
-        0,                      /*tp_traverse*/
-        0,                      /*tp_clear*/
-        0,                      /*tp_richcompare*/
-        0,                      /*tp_weaklistoffset*/
-        0,                      /*tp_iter*/
-        0,                      /*tp_iternext*/
-        unicodedata_functions,  /*tp_methods*/
-        DB_members,             /*tp_members*/
-        0,                      /*tp_getset*/
-        0,                      /*tp_base*/
-        0,                      /*tp_dict*/
-        0,                      /*tp_descr_get*/
-        0,                      /*tp_descr_set*/
-        0,                      /*tp_dictoffset*/
-        0,                      /*tp_init*/
-        0,                      /*tp_alloc*/
-        0,                      /*tp_new*/
-        0,                      /*tp_free*/
-        0,                      /*tp_is_gc*/
-};
-
-PyDoc_STRVAR(unicodedata_docstring,
-"This module provides access to the Unicode Character Database which\n\
-defines character properties for all Unicode characters. The data in\n\
-this database is based on the UnicodeData.txt file version\n\
-5.2.0 which is publically available from ftp://ftp.unicode.org/.\n\
-\n\
-The module uses the same names and symbols as defined by the\n\
-UnicodeData File Format 5.2.0 (see\n\
-http://www.unicode.org/reports/tr44/tr44-4.html).");
-
-PyMODINIT_FUNC
-initunicodedata(void)
-{
-    PyObject *m, *v;
-
-    Py_TYPE(&UCD_Type) = &PyType_Type;
-
-    m = Py_InitModule3(
-        "unicodedata", unicodedata_functions, unicodedata_docstring);
-    if (!m)
-        return;
-
-    PyModule_AddStringConstant(m, "unidata_version", UNIDATA_VERSION);
-    Py_INCREF(&UCD_Type);
-    PyModule_AddObject(m, "UCD", (PyObject*)&UCD_Type);
-
-    /* Previous versions */
-    v = new_previous_version("3.2.0", get_change_3_2_0, normalization_3_2_0);
-    if (v != NULL)
-        PyModule_AddObject(m, "ucd_3_2_0", v);
-
-    /* Export C API */
-    v = PyCapsule_New((void *)&hashAPI, PyUnicodeData_CAPSULE_NAME, NULL);
-    if (v != NULL)
-        PyModule_AddObject(m, "ucnhash_CAPI", v);
-}
-
-/*
-Local variables:
-c-basic-offset: 4
-indent-tabs-mode: nil
-End:
-*/
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/unicodedata_db.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/unicodedata_db.h
deleted file mode 100644
index 3558c24..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/unicodedata_db.h
+++ /dev/null
@@ -1,6202 +0,0 @@
-/* this file was generated by Tools/unicode/makeunicodedata.py 2.6 */
-
-#define UNIDATA_VERSION "5.2.0"
-/* a list of unique database records */
-const _PyUnicode_DatabaseRecord _PyUnicode_Database_Records[] = {
-    {0, 0, 0, 0, 0, 0},
-    {13, 0, 15, 0, 5, 0},
-    {13, 0, 17, 0, 5, 0},
-    {13, 0, 16, 0, 5, 0},
-    {13, 0, 18, 0, 5, 0},
-    {10, 0, 18, 0, 3, 0},
-    {26, 0, 19, 0, 3, 0},
-    {26, 0, 11, 0, 3, 0},
-    {28, 0, 11, 0, 3, 0},
-    {22, 0, 19, 1, 3, 0},
-    {23, 0, 19, 1, 3, 0},
-    {27, 0, 10, 0, 3, 0},
-    {26, 0, 13, 0, 3, 0},
-    {21, 0, 10, 0, 3, 0},
-    {7, 0, 9, 0, 3, 0},
-    {27, 0, 19, 1, 3, 0},
-    {27, 0, 19, 0, 3, 0},
-    {1, 0, 1, 0, 3, 0},
-    {29, 0, 19, 0, 3, 0},
-    {20, 0, 19, 0, 3, 0},
-    {2, 0, 1, 0, 3, 0},
-    {10, 0, 13, 0, 5, 136},
-    {26, 0, 19, 0, 4, 0},
-    {28, 0, 11, 0, 4, 0},
-    {30, 0, 19, 0, 3, 0},
-    {30, 0, 19, 0, 4, 0},
-    {29, 0, 19, 0, 4, 136},
-    {30, 0, 19, 0, 5, 0},
-    {2, 0, 1, 0, 4, 136},
-    {24, 0, 19, 1, 5, 0},
-    {14, 0, 15, 0, 4, 0},
-    {29, 0, 19, 0, 3, 136},
-    {30, 0, 11, 0, 4, 0},
-    {27, 0, 11, 0, 4, 0},
-    {9, 0, 9, 0, 4, 136},
-    {2, 0, 1, 0, 5, 136},
-    {25, 0, 19, 1, 5, 0},
-    {9, 0, 19, 0, 4, 136},
-    {1, 0, 1, 0, 5, 10},
-    {1, 0, 1, 0, 4, 0},
-    {27, 0, 19, 0, 4, 0},
-    {2, 0, 1, 0, 4, 0},
-    {2, 0, 1, 0, 4, 10},
-    {2, 0, 1, 0, 5, 10},
-    {1, 0, 1, 0, 5, 0},
-    {1, 0, 1, 0, 4, 136},
-    {2, 0, 1, 0, 5, 0},
-    {19, 0, 1, 0, 5, 0},
-    {1, 0, 1, 0, 5, 136},
-    {3, 0, 1, 0, 5, 136},
-    {18, 0, 1, 0, 5, 136},
-    {18, 0, 19, 0, 5, 0},
-    {18, 0, 1, 0, 5, 0},
-    {29, 0, 19, 0, 5, 0},
-    {29, 0, 19, 0, 4, 0},
-    {18, 0, 19, 0, 4, 0},
-    {18, 0, 1, 0, 4, 0},
-    {29, 0, 19, 0, 5, 136},
-    {4, 230, 14, 0, 4, 80},
-    {4, 230, 14, 0, 4, 0},
-    {4, 232, 14, 0, 4, 0},
-    {4, 220, 14, 0, 4, 0},
-    {4, 216, 14, 0, 4, 80},
-    {4, 202, 14, 0, 4, 0},
-    {4, 220, 14, 0, 4, 80},
-    {4, 202, 14, 0, 4, 80},
-    {4, 1, 14, 0, 4, 0},
-    {4, 1, 14, 0, 4, 80},
-    {4, 230, 14, 0, 4, 170},
-    {4, 240, 14, 0, 4, 80},
-    {4, 0, 14, 0, 4, 0},
-    {4, 233, 14, 0, 4, 0},
-    {4, 234, 14, 0, 4, 0},
-    {18, 0, 19, 0, 5, 170},
-    {26, 0, 19, 0, 5, 170},
-    {29, 0, 19, 0, 5, 138},
-    {1, 0, 1, 0, 5, 138},
-    {27, 0, 19, 0, 5, 0},
-    {1, 0, 1, 0, 4, 10},
-    {30, 0, 1, 0, 5, 0},
-    {4, 230, 14, 0, 5, 0},
-    {6, 0, 14, 0, 5, 0},
-    {26, 0, 1, 0, 5, 0},
-    {21, 0, 19, 0, 5, 0},
-    {4, 220, 14, 0, 5, 0},
-    {4, 222, 14, 0, 5, 0},
-    {4, 228, 14, 0, 5, 0},
-    {4, 10, 14, 0, 5, 0},
-    {4, 11, 14, 0, 5, 0},
-    {4, 12, 14, 0, 5, 0},
-    {4, 13, 14, 0, 5, 0},
-    {4, 14, 14, 0, 5, 0},
-    {4, 15, 14, 0, 5, 0},
-    {4, 16, 14, 0, 5, 0},
-    {4, 17, 14, 0, 5, 0},
-    {4, 18, 14, 0, 5, 0},
-    {4, 19, 14, 0, 5, 0},
-    {4, 20, 14, 0, 5, 0},
-    {4, 21, 14, 0, 5, 0},
-    {4, 22, 14, 0, 5, 0},
-    {21, 0, 4, 0, 5, 0},
-    {4, 23, 14, 0, 5, 0},
-    {26, 0, 4, 0, 5, 0},
-    {4, 24, 14, 0, 5, 0},
-    {4, 25, 14, 0, 5, 0},
-    {19, 0, 4, 0, 5, 0},
-    {14, 0, 12, 0, 5, 0},
-    {27, 0, 5, 0, 5, 0},
-    {26, 0, 11, 0, 5, 0},
-    {28, 0, 5, 0, 5, 0},
-    {26, 0, 13, 0, 5, 0},
-    {26, 0, 5, 0, 5, 0},
-    {4, 30, 14, 0, 5, 0},
-    {4, 31, 14, 0, 5, 0},
-    {4, 32, 14, 0, 5, 0},
-    {19, 0, 5, 0, 5, 0},
-    {19, 0, 5, 0, 5, 10},
-    {18, 0, 5, 0, 5, 0},
-    {4, 27, 14, 0, 5, 0},
-    {4, 28, 14, 0, 5, 0},
-    {4, 29, 14, 0, 5, 0},
-    {4, 33, 14, 0, 5, 0},
-    {4, 34, 14, 0, 5, 0},
-    {4, 230, 14, 0, 5, 80},
-    {4, 220, 14, 0, 5, 80},
-    {7, 0, 12, 0, 5, 0},
-    {26, 0, 12, 0, 5, 0},
-    {4, 35, 14, 0, 5, 0},
-    {19, 0, 5, 0, 5, 136},
-    {7, 0, 9, 0, 5, 0},
-    {30, 0, 5, 0, 5, 0},
-    {14, 0, 15, 0, 5, 0},
-    {4, 36, 14, 0, 5, 0},
-    {4, 0, 14, 0, 5, 0},
-    {7, 0, 4, 0, 5, 0},
-    {18, 0, 4, 0, 5, 0},
-    {26, 0, 19, 0, 5, 0},
-    {5, 0, 1, 0, 5, 0},
-    {19, 0, 1, 0, 5, 10},
-    {4, 7, 14, 0, 5, 80},
-    {4, 9, 14, 0, 5, 0},
-    {19, 0, 1, 0, 5, 170},
-    {7, 0, 1, 0, 5, 0},
-    {4, 7, 14, 0, 5, 0},
-    {5, 0, 1, 0, 5, 80},
-    {5, 0, 1, 0, 5, 10},
-    {28, 0, 11, 0, 5, 0},
-    {9, 0, 1, 0, 5, 0},
-    {4, 0, 14, 0, 5, 80},
-    {4, 0, 14, 0, 5, 10},
-    {4, 84, 14, 0, 5, 0},
-    {4, 91, 14, 0, 5, 80},
-    {9, 0, 19, 0, 5, 0},
-    {4, 0, 1, 0, 5, 0},
-    {4, 9, 14, 0, 5, 80},
-    {19, 0, 1, 0, 5, 136},
-    {4, 103, 14, 0, 5, 0},
-    {4, 107, 14, 0, 5, 0},
-    {4, 118, 14, 0, 5, 0},
-    {4, 122, 14, 0, 5, 0},
-    {26, 0, 1, 0, 5, 136},
-    {4, 216, 14, 0, 5, 0},
-    {22, 0, 19, 1, 5, 0},
-    {23, 0, 19, 1, 5, 0},
-    {4, 129, 14, 0, 5, 0},
-    {4, 130, 14, 0, 5, 0},
-    {4, 0, 14, 0, 5, 170},
-    {4, 132, 14, 0, 5, 0},
-    {4, 0, 14, 0, 5, 136},
-    {19, 0, 1, 0, 2, 0},
-    {19, 0, 1, 0, 5, 80},
-    {10, 0, 18, 0, 5, 0},
-    {8, 0, 1, 0, 5, 0},
-    {14, 0, 1, 0, 5, 0},
-    {5, 9, 1, 0, 5, 0},
-    {4, 1, 14, 0, 5, 0},
-    {4, 234, 14, 0, 5, 0},
-    {4, 214, 14, 0, 5, 0},
-    {4, 202, 14, 0, 5, 0},
-    {2, 0, 1, 0, 5, 138},
-    {2, 0, 1, 0, 5, 170},
-    {3, 0, 1, 0, 5, 10},
-    {1, 0, 1, 0, 5, 170},
-    {29, 0, 19, 0, 5, 170},
-    {10, 0, 18, 0, 5, 170},
-    {10, 0, 18, 0, 5, 136},
-    {14, 0, 4, 0, 5, 0},
-    {21, 0, 19, 0, 4, 0},
-    {21, 0, 19, 0, 5, 136},
-    {26, 0, 19, 0, 5, 136},
-    {24, 0, 19, 0, 4, 0},
-    {25, 0, 19, 0, 4, 0},
-    {22, 0, 19, 0, 5, 0},
-    {24, 0, 19, 0, 5, 0},
-    {26, 0, 19, 0, 4, 136},
-    {11, 0, 18, 0, 5, 0},
-    {12, 0, 16, 0, 5, 0},
-    {14, 0, 2, 0, 5, 0},
-    {14, 0, 6, 0, 5, 0},
-    {14, 0, 8, 0, 5, 0},
-    {14, 0, 3, 0, 5, 0},
-    {14, 0, 7, 0, 5, 0},
-    {26, 0, 11, 0, 4, 0},
-    {26, 0, 11, 0, 4, 136},
-    {26, 0, 11, 0, 5, 136},
-    {20, 0, 19, 0, 5, 0},
-    {27, 0, 13, 0, 5, 0},
-    {9, 0, 9, 0, 5, 136},
-    {27, 0, 10, 0, 5, 136},
-    {27, 0, 19, 0, 5, 136},
-    {22, 0, 19, 1, 5, 136},
-    {23, 0, 19, 1, 5, 136},
-    {18, 0, 1, 0, 4, 136},
-    {28, 0, 11, 0, 5, 136},
-    {28, 0, 11, 0, 1, 0},
-    {30, 0, 19, 0, 5, 136},
-    {30, 0, 19, 0, 4, 136},
-    {1, 0, 1, 0, 4, 170},
-    {30, 0, 11, 0, 5, 0},
-    {27, 0, 19, 1, 5, 136},
-    {9, 0, 19, 0, 5, 136},
-    {8, 0, 1, 0, 4, 136},
-    {8, 0, 1, 0, 5, 136},
-    {27, 0, 19, 0, 5, 10},
-    {30, 0, 19, 0, 5, 10},
-    {27, 0, 19, 1, 5, 0},
-    {27, 0, 19, 1, 4, 0},
-    {27, 0, 19, 1, 5, 10},
-    {27, 0, 10, 0, 5, 0},
-    {27, 0, 11, 0, 5, 0},
-    {27, 0, 19, 1, 4, 136},
-    {27, 0, 19, 1, 4, 10},
-    {22, 0, 19, 1, 2, 170},
-    {23, 0, 19, 1, 2, 170},
-    {30, 0, 1, 0, 4, 136},
-    {9, 0, 19, 0, 4, 0},
-    {27, 0, 19, 1, 5, 170},
-    {30, 0, 19, 0, 2, 0},
-    {30, 0, 19, 0, 2, 136},
-    {10, 0, 18, 0, 0, 136},
-    {26, 0, 19, 0, 2, 0},
-    {18, 0, 1, 0, 2, 0},
-    {8, 0, 1, 0, 2, 0},
-    {22, 0, 19, 1, 2, 0},
-    {23, 0, 19, 1, 2, 0},
-    {21, 0, 19, 0, 2, 0},
-    {22, 0, 19, 0, 2, 0},
-    {23, 0, 19, 0, 2, 0},
-    {4, 218, 14, 0, 2, 0},
-    {4, 228, 14, 0, 2, 0},
-    {4, 232, 14, 0, 2, 0},
-    {4, 222, 14, 0, 2, 0},
-    {4, 224, 14, 0, 2, 0},
-    {8, 0, 1, 0, 2, 136},
-    {19, 0, 1, 0, 2, 10},
-    {4, 8, 14, 0, 2, 80},
-    {29, 0, 19, 0, 2, 136},
-    {18, 0, 1, 0, 2, 10},
-    {19, 0, 1, 0, 2, 136},
-    {30, 0, 1, 0, 2, 0},
-    {9, 0, 1, 0, 2, 136},
-    {30, 0, 1, 0, 2, 136},
-    {30, 0, 1, 0, 4, 0},
-    {9, 0, 19, 0, 2, 136},
-    {29, 0, 1, 0, 5, 0},
-    {15, 0, 1, 0, 5, 0},
-    {16, 0, 1, 0, 4, 0},
-    {19, 0, 1, 0, 2, 170},
-    {19, 0, 4, 0, 5, 170},
-    {4, 26, 14, 0, 5, 0},
-    {19, 0, 4, 0, 5, 136},
-    {23, 0, 19, 0, 5, 0},
-    {28, 0, 5, 0, 5, 136},
-    {26, 0, 19, 0, 2, 136},
-    {22, 0, 19, 0, 2, 136},
-    {23, 0, 19, 0, 2, 136},
-    {21, 0, 19, 0, 2, 136},
-    {20, 0, 19, 0, 2, 136},
-    {26, 0, 13, 0, 2, 136},
-    {22, 0, 19, 1, 2, 136},
-    {23, 0, 19, 1, 2, 136},
-    {26, 0, 11, 0, 2, 136},
-    {27, 0, 10, 0, 2, 136},
-    {21, 0, 10, 0, 2, 136},
-    {27, 0, 19, 1, 2, 136},
-    {27, 0, 19, 0, 2, 136},
-    {28, 0, 11, 0, 2, 136},
-    {26, 0, 19, 0, 0, 136},
-    {26, 0, 11, 0, 0, 136},
-    {28, 0, 11, 0, 0, 136},
-    {22, 0, 19, 1, 0, 136},
-    {23, 0, 19, 1, 0, 136},
-    {27, 0, 10, 0, 0, 136},
-    {26, 0, 13, 0, 0, 136},
-    {21, 0, 10, 0, 0, 136},
-    {7, 0, 9, 0, 0, 136},
-    {27, 0, 19, 1, 0, 136},
-    {27, 0, 19, 0, 0, 136},
-    {1, 0, 1, 0, 0, 136},
-    {29, 0, 19, 0, 0, 136},
-    {20, 0, 19, 0, 0, 136},
-    {2, 0, 1, 0, 0, 136},
-    {26, 0, 19, 0, 1, 136},
-    {22, 0, 19, 1, 1, 136},
-    {23, 0, 19, 1, 1, 136},
-    {19, 0, 1, 0, 1, 136},
-    {18, 0, 1, 0, 1, 136},
-    {30, 0, 19, 0, 0, 136},
-    {30, 0, 19, 0, 1, 136},
-    {27, 0, 19, 0, 1, 136},
-    {14, 0, 19, 0, 5, 0},
-    {8, 0, 19, 0, 5, 0},
-    {9, 0, 4, 0, 5, 0},
-    {9, 0, 12, 0, 5, 0},
-    {30, 0, 1, 0, 5, 170},
-    {5, 216, 1, 0, 5, 0},
-    {5, 226, 1, 0, 5, 0},
-    {27, 0, 1, 0, 5, 136},
-    {7, 0, 9, 0, 5, 136},
-    {30, 0, 1, 0, 5, 136},
-};
-
-/* Reindexing of NFC first characters. */
-#define TOTAL_FIRST 370
-#define TOTAL_LAST 55
-struct reindex{int start;short count,index;};
-static struct reindex nfc_first[] = {
-  { 60, 2, 0},
-  { 65, 15, 3},
-  { 82, 8, 19},
-  { 97, 15, 28},
-  { 114, 8, 44},
-  { 168, 0, 53},
-  { 194, 0, 54},
-  { 196, 3, 55},
-  { 202, 0, 59},
-  { 207, 0, 60},
-  { 212, 2, 61},
-  { 216, 0, 64},
-  { 220, 0, 65},
-  { 226, 0, 66},
-  { 228, 3, 67},
-  { 234, 0, 71},
-  { 239, 0, 72},
-  { 244, 2, 73},
-  { 248, 0, 76},
-  { 252, 0, 77},
-  { 258, 1, 78},
-  { 274, 1, 80},
-  { 332, 1, 82},
-  { 346, 1, 84},
-  { 352, 1, 86},
-  { 360, 3, 88},
-  { 383, 0, 92},
-  { 416, 1, 93},
-  { 431, 1, 95},
-  { 439, 0, 97},
-  { 490, 1, 98},
-  { 550, 3, 100},
-  { 558, 1, 104},
-  { 658, 0, 106},
-  { 913, 0, 107},
-  { 917, 0, 108},
-  { 919, 0, 109},
-  { 921, 0, 110},
-  { 927, 0, 111},
-  { 929, 0, 112},
-  { 933, 0, 113},
-  { 937, 0, 114},
-  { 940, 0, 115},
-  { 942, 0, 116},
-  { 945, 0, 117},
-  { 949, 0, 118},
-  { 951, 0, 119},
-  { 953, 0, 120},
-  { 959, 0, 121},
-  { 961, 0, 122},
-  { 965, 0, 123},
-  { 969, 2, 124},
-  { 974, 0, 127},
-  { 978, 0, 128},
-  { 1030, 0, 129},
-  { 1040, 0, 130},
-  { 1043, 0, 131},
-  { 1045, 3, 132},
-  { 1050, 0, 136},
-  { 1054, 0, 137},
-  { 1059, 0, 138},
-  { 1063, 0, 139},
-  { 1067, 0, 140},
-  { 1069, 0, 141},
-  { 1072, 0, 142},
-  { 1075, 0, 143},
-  { 1077, 3, 144},
-  { 1082, 0, 148},
-  { 1086, 0, 149},
-  { 1091, 0, 150},
-  { 1095, 0, 151},
-  { 1099, 0, 152},
-  { 1101, 0, 153},
-  { 1110, 0, 154},
-  { 1140, 1, 155},
-  { 1240, 1, 157},
-  { 1256, 1, 159},
-  { 1575, 0, 161},
-  { 1608, 0, 162},
-  { 1610, 0, 163},
-  { 1729, 0, 164},
-  { 1746, 0, 165},
-  { 1749, 0, 166},
-  { 2344, 0, 167},
-  { 2352, 0, 168},
-  { 2355, 0, 169},
-  { 2503, 0, 170},
-  { 2887, 0, 171},
-  { 2962, 0, 172},
-  { 3014, 1, 173},
-  { 3142, 0, 175},
-  { 3263, 0, 176},
-  { 3270, 0, 177},
-  { 3274, 0, 178},
-  { 3398, 1, 179},
-  { 3545, 0, 181},
-  { 3548, 0, 182},
-  { 4133, 0, 183},
-  { 6917, 0, 184},
-  { 6919, 0, 185},
-  { 6921, 0, 186},
-  { 6923, 0, 187},
-  { 6925, 0, 188},
-  { 6929, 0, 189},
-  { 6970, 0, 190},
-  { 6972, 0, 191},
-  { 6974, 1, 192},
-  { 6978, 0, 194},
-  { 7734, 1, 195},
-  { 7770, 1, 197},
-  { 7778, 1, 199},
-  { 7840, 1, 201},
-  { 7864, 1, 203},
-  { 7884, 1, 205},
-  { 7936, 17, 207},
-  { 7960, 1, 225},
-  { 7968, 17, 227},
-  { 7992, 1, 245},
-  { 8000, 1, 247},
-  { 8008, 1, 249},
-  { 8016, 1, 251},
-  { 8025, 0, 253},
-  { 8032, 16, 254},
-  { 8052, 0, 271},
-  { 8060, 0, 272},
-  { 8118, 0, 273},
-  { 8127, 0, 274},
-  { 8134, 0, 275},
-  { 8182, 0, 276},
-  { 8190, 0, 277},
-  { 8592, 0, 278},
-  { 8594, 0, 279},
-  { 8596, 0, 280},
-  { 8656, 0, 281},
-  { 8658, 0, 282},
-  { 8660, 0, 283},
-  { 8707, 0, 284},
-  { 8712, 0, 285},
-  { 8715, 0, 286},
-  { 8739, 0, 287},
-  { 8741, 0, 288},
-  { 8764, 0, 289},
-  { 8771, 0, 290},
-  { 8773, 0, 291},
-  { 8776, 0, 292},
-  { 8781, 0, 293},
-  { 8801, 0, 294},
-  { 8804, 1, 295},
-  { 8818, 1, 297},
-  { 8822, 1, 299},
-  { 8826, 3, 301},
-  { 8834, 1, 305},
-  { 8838, 1, 307},
-  { 8849, 1, 309},
-  { 8866, 0, 311},
-  { 8872, 1, 312},
-  { 8875, 0, 314},
-  { 8882, 3, 315},
-  { 12358, 0, 319},
-  { 12363, 0, 320},
-  { 12365, 0, 321},
-  { 12367, 0, 322},
-  { 12369, 0, 323},
-  { 12371, 0, 324},
-  { 12373, 0, 325},
-  { 12375, 0, 326},
-  { 12377, 0, 327},
-  { 12379, 0, 328},
-  { 12381, 0, 329},
-  { 12383, 0, 330},
-  { 12385, 0, 331},
-  { 12388, 0, 332},
-  { 12390, 0, 333},
-  { 12392, 0, 334},
-  { 12399, 0, 335},
-  { 12402, 0, 336},
-  { 12405, 0, 337},
-  { 12408, 0, 338},
-  { 12411, 0, 339},
-  { 12445, 0, 340},
-  { 12454, 0, 341},
-  { 12459, 0, 342},
-  { 12461, 0, 343},
-  { 12463, 0, 344},
-  { 12465, 0, 345},
-  { 12467, 0, 346},
-  { 12469, 0, 347},
-  { 12471, 0, 348},
-  { 12473, 0, 349},
-  { 12475, 0, 350},
-  { 12477, 0, 351},
-  { 12479, 0, 352},
-  { 12481, 0, 353},
-  { 12484, 0, 354},
-  { 12486, 0, 355},
-  { 12488, 0, 356},
-  { 12495, 0, 357},
-  { 12498, 0, 358},
-  { 12501, 0, 359},
-  { 12504, 0, 360},
-  { 12507, 0, 361},
-  { 12527, 3, 362},
-  { 12541, 0, 366},
-  { 69785, 0, 367},
-  { 69787, 0, 368},
-  { 69797, 0, 369},
-  {0,0,0}
-};
-
-static struct reindex nfc_last[] = {
-  { 768, 4, 0},
-  { 774, 6, 5},
-  { 783, 0, 12},
-  { 785, 0, 13},
-  { 787, 1, 14},
-  { 795, 0, 16},
-  { 803, 5, 17},
-  { 813, 1, 23},
-  { 816, 1, 25},
-  { 824, 0, 27},
-  { 834, 0, 28},
-  { 837, 0, 29},
-  { 1619, 2, 30},
-  { 2364, 0, 33},
-  { 2494, 0, 34},
-  { 2519, 0, 35},
-  { 2878, 0, 36},
-  { 2902, 1, 37},
-  { 3006, 0, 39},
-  { 3031, 0, 40},
-  { 3158, 0, 41},
-  { 3266, 0, 42},
-  { 3285, 1, 43},
-  { 3390, 0, 45},
-  { 3415, 0, 46},
-  { 3530, 0, 47},
-  { 3535, 0, 48},
-  { 3551, 0, 49},
-  { 4142, 0, 50},
-  { 6965, 0, 51},
-  { 12441, 1, 52},
-  { 69818, 0, 54},
-  {0,0,0}
-};
-
-/* string literals */
-const char *_PyUnicode_CategoryNames[] = {
-    "Cn",
-    "Lu",
-    "Ll",
-    "Lt",
-    "Mn",
-    "Mc",
-    "Me",
-    "Nd",
-    "Nl",
-    "No",
-    "Zs",
-    "Zl",
-    "Zp",
-    "Cc",
-    "Cf",
-    "Cs",
-    "Co",
-    "Cn",
-    "Lm",
-    "Lo",
-    "Pc",
-    "Pd",
-    "Ps",
-    "Pe",
-    "Pi",
-    "Pf",
-    "Po",
-    "Sm",
-    "Sc",
-    "Sk",
-    "So",
-    NULL
-};
-const char *_PyUnicode_BidirectionalNames[] = {
-    "",
-    "L",
-    "LRE",
-    "LRO",
-    "R",
-    "AL",
-    "RLE",
-    "RLO",
-    "PDF",
-    "EN",
-    "ES",
-    "ET",
-    "AN",
-    "CS",
-    "NSM",
-    "BN",
-    "B",
-    "S",
-    "WS",
-    "ON",
-    NULL
-};
-const char *_PyUnicode_EastAsianWidthNames[] = {
-    "F",
-    "H",
-    "W",
-    "Na",
-    "A",
-    "N",
-    NULL
-};
-static const char *decomp_prefix[] = {
-    "",
-    "<noBreak>",
-    "<compat>",
-    "<super>",
-    "<fraction>",
-    "<sub>",
-    "<font>",
-    "<circle>",
-    "<wide>",
-    "<vertical>",
-    "<square>",
-    "<isolated>",
-    "<final>",
-    "<initial>",
-    "<medial>",
-    "<small>",
-    "<narrow>",
-    NULL
-};
-/* index tables for the database records */
-#define SHIFT 7
-static unsigned char index1[] = {
-    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, 41, 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, 78, 79, 80, 81, 82, 83, 17, 84, 85, 86, 87, 88, 
-    89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 101, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 102, 
-    103, 100, 100, 100, 100, 100, 100, 100, 100, 104, 41, 41, 105, 106, 107, 
-    108, 109, 110, 111, 112, 113, 114, 17, 115, 116, 116, 116, 116, 116, 116, 
-    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
-    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
-    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
-    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
-    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
-    116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 118, 118, 
-    118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 120, 120, 121, 122, 123, 124, 
-    125, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 17, 136, 137, 
-    138, 139, 140, 17, 17, 17, 17, 17, 17, 141, 17, 142, 17, 143, 17, 144, 
-    17, 145, 17, 17, 17, 146, 17, 17, 17, 17, 147, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 41, 41, 41, 41, 41, 41, 148, 17, 149, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 41, 41, 41, 41, 41, 41, 41, 41, 150, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 78, 151, 
-    152, 153, 154, 17, 155, 17, 156, 157, 158, 159, 160, 161, 162, 163, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 164, 165, 166, 167, 168, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 169, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 
-    100, 100, 100, 100, 100, 100, 100, 100, 170, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 120, 120, 120, 
-    120, 171, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 172, 17, 173, 174, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 175, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 
-    119, 119, 175, 
-};
-
-static unsigned short index2[] = {
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 2, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 3, 3, 3, 2, 5, 6, 6, 7, 8, 7, 6, 6, 9, 10, 6, 11, 12, 13, 12, 
-    12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 6, 15, 16, 15, 6, 6, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 9, 6, 10, 18, 19, 18, 20, 20, 20, 20, 20, 20, 
-    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 
-    20, 20, 9, 16, 10, 16, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 22, 8, 8, 23, 8, 24, 
-    25, 26, 27, 28, 29, 16, 30, 25, 31, 32, 33, 34, 34, 26, 35, 25, 22, 26, 
-    34, 28, 36, 37, 37, 37, 22, 38, 38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 
-    38, 38, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 40, 39, 38, 38, 38, 38, 
-    38, 39, 41, 42, 42, 43, 43, 43, 43, 41, 43, 42, 42, 42, 43, 42, 42, 43, 
-    43, 41, 43, 42, 42, 43, 43, 43, 40, 41, 42, 42, 43, 42, 43, 41, 43, 38, 
-    42, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 44, 41, 38, 
-    42, 38, 43, 38, 43, 38, 43, 38, 42, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 39, 41, 38, 43, 38, 42, 38, 43, 38, 43, 38, 41, 45, 28, 38, 43, 38, 
-    43, 41, 38, 43, 38, 43, 38, 43, 45, 28, 39, 41, 38, 42, 38, 43, 38, 42, 
-    28, 39, 41, 38, 42, 38, 43, 38, 43, 39, 41, 38, 43, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 39, 41, 38, 43, 38, 42, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 38, 43, 38, 43, 38, 43, 
-    35, 46, 44, 44, 46, 44, 46, 44, 44, 46, 44, 44, 44, 46, 46, 44, 44, 44, 
-    44, 46, 44, 44, 46, 44, 44, 44, 46, 46, 46, 44, 44, 46, 44, 38, 43, 44, 
-    46, 44, 46, 44, 44, 46, 44, 46, 46, 44, 46, 44, 38, 43, 44, 44, 44, 46, 
-    44, 46, 44, 44, 46, 46, 47, 44, 46, 46, 46, 47, 47, 47, 47, 48, 49, 35, 
-    48, 49, 35, 48, 49, 35, 38, 42, 38, 42, 38, 42, 38, 42, 38, 42, 38, 42, 
-    38, 42, 38, 42, 46, 38, 43, 38, 43, 38, 43, 44, 46, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 43, 48, 49, 35, 38, 43, 44, 44, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 44, 46, 38, 43, 44, 
-    46, 44, 46, 44, 46, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 46, 46, 46, 46, 46, 46, 44, 44, 46, 44, 44, 46, 46, 44, 46, 44, 44, 
-    44, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 46, 41, 46, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 41, 46, 46, 46, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 47, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 50, 
-    50, 50, 50, 50, 50, 50, 50, 50, 51, 51, 52, 52, 52, 52, 52, 52, 52, 53, 
-    53, 54, 53, 51, 55, 51, 55, 55, 55, 51, 55, 51, 51, 56, 52, 53, 53, 53, 
-    53, 53, 53, 26, 26, 26, 26, 57, 26, 53, 54, 50, 50, 50, 50, 50, 53, 53, 
-    53, 53, 53, 53, 53, 51, 53, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 
-    53, 53, 53, 53, 53, 53, 53, 58, 58, 58, 58, 58, 59, 58, 58, 58, 58, 58, 
-    58, 58, 59, 59, 58, 59, 58, 59, 58, 58, 60, 61, 61, 61, 61, 60, 62, 61, 
-    61, 61, 61, 61, 63, 63, 64, 64, 64, 64, 65, 65, 61, 61, 61, 61, 64, 64, 
-    61, 64, 64, 61, 61, 66, 66, 66, 66, 67, 61, 61, 61, 61, 59, 59, 59, 68, 
-    68, 58, 68, 68, 69, 59, 61, 61, 61, 59, 59, 59, 61, 61, 70, 59, 59, 59, 
-    61, 61, 61, 61, 59, 60, 61, 61, 59, 71, 72, 72, 71, 72, 72, 71, 59, 59, 
-    59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 44, 46, 44, 46, 73, 53, 44, 
-    46, 0, 0, 50, 46, 46, 46, 74, 0, 0, 0, 0, 0, 57, 75, 38, 74, 38, 38, 38, 
-    0, 38, 0, 38, 38, 43, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 
-    39, 39, 39, 39, 0, 39, 39, 39, 39, 39, 39, 39, 38, 38, 43, 43, 43, 43, 
-    43, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 
-    46, 41, 41, 41, 41, 41, 41, 41, 43, 43, 43, 43, 43, 44, 35, 35, 48, 76, 
-    76, 35, 35, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 35, 35, 35, 46, 48, 35, 77, 44, 
-    46, 48, 44, 46, 46, 44, 44, 44, 38, 78, 44, 38, 44, 44, 44, 38, 44, 44, 
-    44, 44, 38, 38, 38, 44, 39, 39, 39, 39, 39, 39, 39, 39, 39, 78, 39, 39, 
-    39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 
-    39, 39, 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, 41, 41, 41, 41, 41, 41, 
-    41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 43, 42, 
-    46, 43, 46, 46, 46, 43, 46, 46, 46, 46, 43, 43, 43, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    38, 43, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 79, 80, 80, 80, 80, 80, 
-    81, 81, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 38, 43, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 46, 
-    38, 43, 38, 43, 44, 46, 38, 43, 44, 46, 38, 43, 38, 43, 38, 43, 44, 46, 
-    38, 43, 38, 43, 38, 43, 44, 46, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 
-    38, 43, 44, 46, 38, 43, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 
-    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 
-    44, 44, 44, 44, 44, 44, 0, 0, 52, 82, 82, 82, 82, 82, 82, 0, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 35, 
-    0, 82, 83, 0, 0, 0, 0, 0, 0, 84, 80, 80, 80, 80, 84, 80, 80, 80, 85, 84, 
-    80, 80, 80, 80, 80, 80, 84, 84, 84, 84, 84, 84, 80, 80, 84, 80, 80, 85, 
-    86, 80, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 96, 97, 98, 99, 100, 101, 
-    102, 103, 104, 102, 80, 84, 102, 95, 0, 0, 0, 0, 0, 0, 0, 0, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 0, 0, 0, 0, 0, 
-    105, 105, 105, 102, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, 106, 
-    106, 0, 0, 77, 77, 107, 108, 108, 109, 110, 111, 27, 27, 80, 80, 80, 80, 
-    80, 80, 80, 80, 112, 113, 114, 111, 0, 0, 111, 111, 0, 115, 116, 116, 
-    116, 116, 116, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    117, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 118, 119, 120, 
-    112, 113, 114, 121, 122, 123, 123, 124, 84, 80, 80, 80, 80, 80, 84, 80, 
-    80, 0, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 108, 126, 126, 
-    111, 115, 115, 127, 115, 115, 115, 115, 128, 128, 128, 128, 115, 115, 
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 116, 
-    115, 116, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    115, 115, 115, 115, 116, 111, 115, 80, 80, 80, 80, 80, 80, 80, 106, 81, 
-    80, 80, 80, 80, 84, 80, 117, 117, 80, 80, 27, 84, 80, 80, 84, 115, 115, 
-    129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 115, 115, 115, 130, 
-    130, 115, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 
-    111, 111, 0, 131, 115, 132, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    115, 115, 115, 115, 115, 115, 115, 80, 84, 80, 80, 84, 80, 80, 84, 84, 
-    84, 80, 84, 84, 80, 84, 80, 80, 80, 84, 80, 84, 80, 84, 80, 84, 80, 80, 
-    0, 0, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 
-    115, 115, 115, 115, 115, 115, 133, 133, 133, 133, 133, 133, 133, 133, 
-    133, 133, 133, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 134, 
-    134, 134, 134, 134, 134, 134, 134, 134, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 80, 80, 
-    80, 80, 80, 80, 80, 84, 80, 135, 135, 27, 136, 136, 136, 135, 0, 0, 0, 0, 
-    0, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 80, 80, 80, 80, 135, 80, 80, 80, 
-    80, 80, 80, 80, 80, 80, 135, 80, 80, 80, 135, 80, 80, 80, 80, 80, 0, 0, 
-    102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 
-    102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 133, 133, 133, 137, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 138, 47, 47, 47, 47, 47, 47, 47, 138, 47, 47, 
-    138, 47, 47, 47, 47, 47, 0, 0, 139, 47, 137, 137, 137, 133, 133, 133, 
-    133, 133, 133, 133, 133, 137, 137, 137, 137, 140, 137, 0, 47, 80, 84, 80, 
-    80, 133, 0, 0, 141, 141, 141, 141, 141, 141, 141, 141, 47, 47, 133, 133, 
-    82, 82, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 82, 52, 47, 0, 
-    0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 0, 133, 137, 137, 0, 47, 47, 
-    47, 47, 47, 47, 47, 47, 0, 0, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 
-    47, 47, 47, 47, 47, 0, 47, 0, 0, 0, 47, 47, 47, 47, 0, 0, 143, 47, 144, 
-    137, 137, 133, 133, 133, 133, 0, 0, 137, 137, 0, 0, 145, 145, 140, 47, 0, 
-    0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 141, 141, 0, 141, 47, 47, 133, 133, 
-    0, 0, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 47, 47, 146, 146, 
-    147, 147, 147, 147, 147, 147, 79, 146, 0, 0, 0, 0, 0, 133, 133, 137, 0, 
-    47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 
-    47, 47, 47, 47, 47, 47, 0, 47, 141, 0, 47, 141, 0, 47, 47, 0, 0, 143, 0, 
-    137, 137, 137, 133, 133, 0, 0, 0, 0, 133, 133, 0, 0, 133, 133, 140, 0, 0, 
-    0, 133, 0, 0, 0, 0, 0, 0, 0, 141, 141, 141, 47, 0, 141, 0, 0, 0, 0, 0, 0, 
-    0, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 133, 133, 47, 47, 
-    47, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 133, 137, 0, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 
-    47, 47, 47, 47, 0, 47, 47, 0, 47, 47, 47, 47, 47, 0, 0, 143, 47, 137, 
-    137, 137, 133, 133, 133, 133, 133, 0, 133, 133, 137, 0, 137, 137, 140, 0, 
-    0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 133, 133, 0, 
-    0, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 0, 146, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 137, 137, 0, 47, 47, 47, 47, 47, 
-    47, 47, 47, 0, 0, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 
-    47, 47, 0, 47, 47, 0, 47, 47, 47, 47, 47, 0, 0, 143, 47, 144, 133, 137, 
-    133, 133, 133, 133, 0, 0, 137, 145, 0, 0, 145, 145, 140, 0, 0, 0, 0, 0, 
-    0, 0, 0, 148, 144, 0, 0, 0, 0, 141, 141, 0, 47, 47, 47, 133, 133, 0, 0, 
-    142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 79, 47, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 47, 0, 47, 47, 47, 47, 47, 47, 0, 
-    0, 0, 47, 47, 47, 0, 47, 47, 138, 47, 0, 0, 0, 47, 47, 0, 47, 0, 47, 47, 
-    0, 0, 0, 47, 47, 0, 0, 0, 47, 47, 47, 0, 0, 0, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 144, 137, 133, 137, 137, 0, 0, 0, 
-    137, 137, 137, 0, 145, 145, 145, 140, 0, 0, 47, 0, 0, 0, 0, 0, 0, 144, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 142, 142, 142, 142, 142, 142, 
-    142, 142, 142, 147, 147, 147, 27, 27, 27, 27, 27, 27, 146, 27, 0, 0, 0, 
-    0, 0, 0, 137, 137, 137, 0, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 
-    0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 
-    47, 47, 47, 47, 0, 0, 0, 47, 133, 133, 133, 137, 137, 137, 137, 0, 133, 
-    133, 149, 0, 133, 133, 133, 140, 0, 0, 0, 0, 0, 0, 0, 150, 151, 0, 47, 
-    47, 0, 0, 0, 0, 0, 0, 47, 47, 133, 133, 0, 0, 142, 142, 142, 142, 142, 
-    142, 142, 142, 142, 142, 0, 0, 0, 0, 0, 0, 0, 0, 152, 152, 152, 152, 152, 
-    152, 152, 79, 0, 0, 137, 137, 0, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 
-    47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 0, 47, 47, 47, 47, 47, 0, 0, 143, 47, 137, 153, 145, 137, 144, 137, 
-    137, 0, 153, 145, 145, 0, 145, 145, 133, 140, 0, 0, 0, 0, 0, 0, 0, 144, 
-    144, 0, 0, 0, 0, 0, 0, 0, 47, 0, 47, 47, 133, 133, 0, 0, 142, 142, 142, 
-    142, 142, 142, 142, 142, 142, 142, 0, 27, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 137, 137, 0, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 
-    47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 0, 0, 0, 47, 144, 137, 137, 133, 133, 133, 133, 
-    0, 137, 137, 137, 0, 145, 145, 145, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 
-    0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 133, 133, 0, 0, 142, 142, 142, 142, 142, 
-    142, 142, 142, 142, 142, 147, 147, 147, 147, 147, 147, 0, 0, 0, 79, 47, 
-    47, 47, 47, 47, 47, 0, 0, 137, 137, 0, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 0, 0, 47, 47, 47, 47, 47, 
-    47, 47, 0, 0, 0, 154, 0, 0, 0, 0, 144, 137, 137, 133, 133, 133, 0, 133, 
-    0, 137, 137, 145, 137, 145, 145, 145, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 137, 137, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 133, 47, 155, 133, 133, 
-    133, 133, 156, 156, 140, 0, 0, 0, 0, 146, 47, 47, 47, 47, 47, 47, 52, 
-    133, 157, 157, 157, 157, 133, 133, 133, 82, 142, 142, 142, 142, 142, 142, 
-    142, 142, 142, 142, 82, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 
-    0, 47, 0, 0, 47, 47, 0, 47, 0, 0, 47, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 
-    0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 0, 47, 0, 47, 0, 0, 47, 47, 
-    0, 47, 47, 47, 47, 133, 47, 155, 133, 133, 133, 133, 158, 158, 0, 133, 
-    133, 47, 0, 0, 47, 47, 47, 47, 47, 0, 52, 0, 159, 159, 159, 159, 133, 
-    133, 0, 0, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 0, 0, 155, 
-    155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 79, 79, 79, 82, 82, 82, 82, 82, 82, 
-    82, 82, 160, 82, 82, 82, 82, 82, 82, 79, 79, 79, 79, 79, 84, 84, 79, 79, 
-    79, 79, 79, 79, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 147, 
-    147, 147, 147, 147, 147, 147, 147, 147, 147, 79, 84, 79, 84, 79, 161, 
-    162, 163, 162, 163, 137, 137, 47, 47, 47, 141, 47, 47, 47, 47, 0, 47, 47, 
-    47, 47, 141, 47, 47, 47, 47, 141, 47, 47, 47, 47, 141, 47, 47, 47, 47, 
-    141, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 141, 47, 47, 47, 0, 
-    0, 0, 0, 164, 165, 166, 167, 166, 166, 168, 166, 168, 165, 165, 165, 165, 
-    133, 137, 165, 166, 80, 80, 140, 82, 80, 80, 47, 47, 47, 47, 0, 0, 0, 0, 
-    133, 133, 133, 166, 133, 133, 133, 133, 0, 133, 133, 133, 133, 166, 133, 
-    133, 133, 133, 166, 133, 133, 133, 133, 166, 133, 133, 133, 133, 166, 
-    133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 166, 133, 
-    133, 133, 0, 79, 79, 79, 79, 79, 79, 79, 79, 84, 79, 79, 79, 79, 79, 79, 
-    0, 79, 79, 82, 82, 82, 82, 82, 79, 79, 79, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 138, 47, 47, 47, 47, 137, 137, 133, 148, 133, 
-    133, 137, 133, 133, 133, 133, 133, 143, 137, 140, 140, 137, 137, 133, 
-    133, 47, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 82, 82, 82, 
-    82, 82, 82, 47, 47, 47, 47, 47, 47, 137, 137, 133, 133, 47, 47, 47, 47, 
-    133, 133, 133, 47, 137, 137, 137, 47, 47, 137, 137, 137, 137, 137, 137, 
-    137, 47, 47, 47, 133, 133, 133, 133, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 133, 137, 137, 133, 133, 137, 137, 137, 137, 137, 137, 
-    84, 47, 137, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 137, 137, 
-    137, 133, 79, 79, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 
-    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 
-    44, 44, 44, 44, 44, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 82, 50, 0, 0, 0, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 47, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 
-    170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 169, 169, 169, 169, 169, 170, 170, 170, 170, 170, 170, 170, 
-    170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 
-    170, 170, 170, 170, 170, 170, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 169, 169, 169, 169, 169, 169, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 
-    47, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 0, 47, 47, 47, 47, 
-    0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 0, 0, 47, 47, 47, 
-    47, 47, 47, 47, 0, 47, 0, 47, 47, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 0, 
-    0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 80, 
-    79, 82, 82, 82, 82, 82, 82, 82, 82, 147, 147, 147, 147, 147, 147, 147, 
-    147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 0, 0, 0, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 82, 82, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 171, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 163, 0, 0, 0, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 82, 82, 82, 172, 172, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 
-    47, 133, 133, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 133, 133, 140, 82, 
-    82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 133, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 
-    0, 133, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 173, 173, 137, 133, 133, 133, 
-    133, 133, 133, 133, 137, 137, 137, 137, 137, 137, 137, 137, 133, 137, 
-    137, 133, 133, 133, 133, 133, 133, 133, 133, 133, 140, 133, 82, 82, 82, 
-    52, 82, 82, 82, 146, 47, 80, 0, 0, 142, 142, 142, 142, 142, 142, 142, 
-    142, 142, 142, 0, 0, 0, 0, 0, 0, 152, 152, 152, 152, 152, 152, 152, 152, 
-    152, 152, 0, 0, 0, 0, 0, 0, 136, 136, 136, 136, 136, 136, 83, 136, 136, 
-    136, 136, 133, 133, 133, 171, 0, 142, 142, 142, 142, 142, 142, 142, 142, 
-    142, 142, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 52, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 86, 47, 
-    0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 0, 0, 0, 133, 133, 133, 137, 137, 137, 137, 133, 133, 137, 137, 
-    137, 0, 0, 0, 0, 137, 137, 133, 137, 137, 137, 137, 137, 137, 85, 80, 84, 
-    0, 0, 0, 0, 27, 0, 0, 0, 136, 136, 142, 142, 142, 142, 142, 142, 142, 
-    142, 142, 142, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 47, 
-    47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 0, 0, 0, 0, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 
-    137, 137, 137, 137, 137, 137, 137, 47, 47, 47, 47, 47, 47, 47, 137, 137, 
-    0, 0, 0, 0, 0, 0, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 
-    0, 0, 0, 136, 136, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 80, 84, 137, 137, 137, 0, 0, 82, 82, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 137, 133, 137, 
-    133, 133, 133, 133, 133, 133, 133, 0, 140, 137, 133, 137, 137, 133, 133, 
-    133, 133, 133, 133, 133, 133, 137, 137, 137, 137, 137, 137, 133, 133, 80, 
-    80, 80, 80, 80, 80, 80, 80, 0, 0, 84, 142, 142, 142, 142, 142, 142, 142, 
-    142, 142, 142, 0, 0, 0, 0, 0, 0, 142, 142, 142, 142, 142, 142, 142, 142, 
-    142, 142, 0, 0, 0, 0, 0, 0, 82, 82, 82, 82, 82, 82, 82, 52, 82, 82, 82, 
-    82, 82, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, 133, 133, 133, 137, 47, 
-    138, 47, 138, 47, 138, 47, 138, 47, 138, 47, 47, 47, 138, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 143, 144, 133, 133, 133, 133, 
-    133, 145, 133, 145, 137, 137, 145, 145, 133, 145, 174, 47, 47, 47, 47, 
-    47, 47, 47, 0, 0, 0, 0, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 
-    82, 82, 82, 82, 82, 82, 82, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 
-    84, 80, 80, 80, 80, 80, 80, 80, 79, 79, 79, 79, 79, 79, 79, 79, 79, 0, 0, 
-    0, 133, 133, 137, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 137, 133, 
-    133, 133, 133, 137, 137, 133, 133, 174, 0, 0, 0, 47, 47, 142, 142, 142, 
-    142, 142, 142, 142, 142, 142, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 137, 137, 137, 137, 137, 137, 137, 137, 133, 
-    133, 133, 133, 133, 133, 133, 133, 137, 137, 133, 143, 0, 0, 0, 82, 82, 
-    82, 82, 82, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 0, 0, 0, 
-    47, 47, 47, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 82, 82, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 80, 80, 80, 82, 175, 84, 84, 84, 84, 84, 80, 80, 84, 
-    84, 84, 84, 80, 137, 175, 175, 175, 175, 175, 175, 175, 47, 47, 47, 47, 
-    84, 47, 47, 47, 47, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 50, 50, 50, 52, 50, 50, 50, 50, 50, 50, 50, 50, 
-    50, 50, 50, 52, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 
-    50, 50, 50, 50, 52, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 
-    50, 50, 50, 50, 50, 50, 35, 35, 35, 35, 35, 35, 35, 35, 35, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 50, 46, 46, 46, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 50, 50, 50, 50, 50, 50, 50, 50, 50, 
-    50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 
-    50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 80, 80, 84, 80, 80, 80, 80, 80, 
-    80, 80, 84, 80, 80, 176, 177, 84, 178, 80, 80, 80, 80, 80, 80, 80, 80, 
-    80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 80, 84, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 38, 43, 43, 43, 43, 43, 35, 179, 46, 46, 44, 46, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 
-    43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 38, 43, 44, 46, 44, 46, 44, 
-    46, 43, 43, 43, 43, 43, 43, 43, 43, 38, 38, 38, 38, 38, 38, 38, 38, 43, 
-    43, 43, 43, 43, 43, 0, 0, 38, 38, 38, 38, 38, 38, 0, 0, 43, 43, 43, 43, 
-    43, 43, 43, 43, 38, 38, 38, 38, 38, 38, 38, 38, 43, 43, 43, 43, 43, 43, 
-    43, 43, 38, 38, 38, 38, 38, 38, 38, 38, 43, 43, 43, 43, 43, 43, 0, 0, 38, 
-    38, 38, 38, 38, 38, 0, 0, 43, 43, 43, 43, 43, 43, 43, 43, 0, 38, 0, 38, 
-    0, 38, 0, 38, 43, 43, 43, 43, 43, 43, 43, 43, 38, 38, 38, 38, 38, 38, 38, 
-    38, 43, 180, 43, 180, 43, 180, 43, 180, 43, 180, 43, 180, 43, 180, 0, 0, 
-    43, 43, 43, 43, 43, 43, 43, 43, 181, 181, 181, 181, 181, 181, 181, 181, 
-    43, 43, 43, 43, 43, 43, 43, 43, 181, 181, 181, 181, 181, 181, 181, 181, 
-    43, 43, 43, 43, 43, 43, 43, 43, 181, 181, 181, 181, 181, 181, 181, 181, 
-    43, 43, 43, 43, 43, 0, 43, 43, 38, 38, 38, 182, 181, 57, 180, 57, 57, 75, 
-    43, 43, 43, 0, 43, 43, 38, 182, 38, 182, 181, 75, 75, 75, 43, 43, 43, 
-    180, 0, 0, 43, 43, 38, 38, 38, 182, 0, 75, 75, 75, 43, 43, 43, 180, 43, 
-    43, 43, 43, 38, 38, 38, 182, 38, 75, 183, 183, 0, 0, 43, 43, 43, 0, 43, 
-    43, 38, 182, 38, 182, 181, 183, 57, 0, 184, 184, 185, 185, 185, 185, 185, 
-    185, 185, 185, 185, 131, 131, 131, 173, 186, 187, 188, 83, 187, 187, 187, 
-    22, 189, 190, 191, 192, 193, 190, 191, 192, 193, 22, 22, 22, 136, 194, 
-    194, 194, 22, 195, 196, 197, 198, 199, 200, 201, 21, 202, 108, 202, 203, 
-    204, 22, 189, 189, 136, 29, 36, 22, 189, 136, 194, 205, 205, 136, 136, 
-    136, 206, 162, 163, 189, 189, 189, 136, 136, 136, 136, 136, 136, 136, 
-    136, 77, 136, 205, 136, 136, 189, 136, 136, 136, 136, 136, 136, 136, 185, 
-    131, 131, 131, 131, 131, 0, 0, 0, 0, 0, 131, 131, 131, 131, 131, 131, 
-    207, 50, 0, 0, 34, 207, 207, 207, 207, 207, 208, 208, 209, 210, 211, 212, 
-    207, 34, 34, 34, 34, 207, 207, 207, 207, 207, 208, 208, 209, 210, 211, 0, 
-    50, 50, 50, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 146, 146, 146, 
-    146, 146, 146, 146, 213, 214, 146, 146, 23, 146, 146, 146, 146, 146, 146, 
-    146, 146, 146, 146, 146, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 80, 175, 175, 80, 80, 80, 80, 175, 175, 
-    175, 80, 80, 81, 81, 81, 81, 80, 81, 81, 81, 175, 175, 80, 84, 80, 175, 
-    175, 84, 84, 84, 84, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    215, 215, 48, 216, 27, 216, 215, 48, 27, 216, 35, 48, 48, 48, 35, 35, 48, 
-    48, 48, 28, 27, 48, 216, 27, 27, 48, 48, 48, 48, 48, 27, 27, 215, 216, 
-    216, 27, 48, 27, 217, 27, 48, 27, 182, 217, 48, 48, 218, 35, 48, 48, 44, 
-    48, 35, 155, 155, 155, 155, 35, 27, 215, 35, 35, 48, 48, 219, 77, 77, 77, 
-    77, 48, 35, 35, 35, 35, 27, 77, 27, 27, 46, 79, 220, 220, 220, 37, 37, 
-    220, 220, 220, 220, 220, 220, 37, 37, 37, 37, 220, 221, 221, 221, 221, 
-    221, 221, 221, 221, 221, 221, 221, 221, 222, 222, 222, 222, 221, 221, 
-    221, 221, 221, 221, 221, 221, 221, 221, 222, 222, 222, 222, 222, 222, 
-    172, 172, 172, 44, 46, 172, 172, 172, 172, 37, 0, 0, 0, 0, 0, 0, 40, 40, 
-    40, 40, 40, 25, 25, 25, 25, 25, 223, 223, 27, 27, 27, 27, 77, 27, 27, 77, 
-    27, 27, 77, 27, 27, 27, 27, 27, 27, 27, 223, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 25, 25, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 224, 223, 223, 27, 27, 40, 27, 40, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 25, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 77, 77, 77, 77, 77, 77, 77, 77, 77, 
-    77, 77, 77, 40, 225, 226, 226, 227, 77, 77, 40, 226, 227, 225, 226, 227, 
-    225, 77, 40, 77, 226, 228, 229, 77, 226, 225, 77, 77, 77, 226, 225, 225, 
-    226, 40, 226, 226, 225, 225, 40, 227, 40, 227, 40, 40, 40, 40, 226, 230, 
-    219, 226, 219, 219, 225, 225, 225, 40, 40, 40, 40, 77, 225, 77, 225, 226, 
-    226, 225, 225, 225, 227, 225, 225, 227, 225, 225, 227, 226, 227, 225, 
-    225, 226, 77, 77, 77, 77, 77, 226, 225, 225, 225, 77, 77, 77, 77, 77, 77, 
-    77, 77, 77, 225, 231, 40, 227, 77, 226, 226, 226, 226, 225, 225, 226, 
-    226, 77, 223, 231, 231, 227, 227, 225, 225, 227, 227, 225, 225, 227, 227, 
-    225, 225, 225, 225, 225, 225, 227, 227, 226, 226, 227, 227, 226, 226, 
-    227, 227, 225, 225, 225, 77, 77, 225, 225, 225, 225, 77, 77, 40, 77, 77, 
-    225, 40, 77, 77, 77, 77, 77, 77, 77, 77, 225, 225, 77, 40, 225, 225, 225, 
-    225, 225, 225, 227, 227, 227, 227, 225, 225, 225, 225, 225, 225, 225, 
-    225, 225, 77, 77, 77, 77, 77, 225, 226, 77, 77, 77, 77, 77, 77, 77, 77, 
-    77, 225, 225, 225, 225, 225, 77, 77, 225, 225, 77, 77, 77, 77, 225, 225, 
-    225, 225, 225, 225, 225, 225, 225, 225, 227, 227, 227, 227, 225, 225, 
-    225, 225, 225, 225, 227, 227, 227, 227, 77, 77, 225, 225, 225, 225, 225, 
-    225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 27, 27, 27, 27, 
-    27, 27, 27, 27, 225, 225, 225, 225, 27, 27, 27, 27, 27, 27, 25, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 225, 225, 27, 27, 27, 27, 27, 
-    27, 27, 232, 233, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 27, 77, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 79, 27, 27, 27, 27, 27, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 
-    77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 77, 77, 77, 77, 77, 77, 27, 27, 27, 27, 27, 27, 27, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 234, 234, 234, 234, 
-    234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 
-    234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 
-    234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 
-    234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 
-    234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 
-    234, 234, 234, 234, 220, 235, 235, 235, 235, 235, 235, 235, 235, 235, 
-    235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 25, 25, 25, 
-    25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 
-    25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 
-    25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 
-    25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 
-    25, 27, 27, 27, 27, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 
-    25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 
-    25, 25, 25, 25, 25, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 25, 
-    25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 27, 25, 
-    25, 25, 25, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 25, 25, 27, 25, 25, 
-    25, 25, 25, 25, 25, 27, 27, 27, 27, 27, 27, 27, 27, 25, 25, 27, 27, 25, 
-    40, 27, 27, 27, 27, 25, 25, 27, 27, 25, 40, 27, 27, 27, 27, 25, 25, 25, 
-    27, 27, 25, 27, 27, 25, 25, 25, 25, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 25, 25, 25, 25, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 25, 27, 27, 27, 27, 27, 27, 27, 27, 77, 77, 77, 77, 77, 77, 77, 
-    77, 27, 27, 27, 27, 27, 25, 25, 27, 27, 25, 27, 27, 27, 27, 25, 25, 27, 
-    27, 27, 27, 25, 25, 27, 27, 27, 27, 27, 27, 25, 27, 25, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 25, 27, 25, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 25, 25, 27, 25, 25, 25, 27, 25, 25, 25, 25, 
-    27, 25, 25, 27, 40, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 25, 25, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 79, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 25, 25, 27, 27, 27, 27, 25, 
-    25, 25, 25, 25, 25, 25, 25, 25, 25, 0, 25, 25, 25, 25, 25, 25, 25, 25, 
-    25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 0, 25, 0, 0, 0, 0, 25, 25, 
-    25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 
-    25, 25, 25, 25, 0, 27, 27, 27, 27, 0, 27, 27, 27, 27, 0, 0, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 0, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 25, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 0, 27, 0, 27, 27, 27, 27, 0, 0, 0, 27, 25, 
-    27, 27, 27, 27, 27, 27, 27, 0, 0, 27, 27, 27, 27, 27, 27, 27, 162, 163, 
-    162, 163, 162, 163, 162, 163, 162, 163, 162, 163, 162, 163, 235, 235, 
-    235, 235, 235, 235, 235, 235, 235, 235, 152, 152, 152, 152, 152, 152, 
-    152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 27, 
-    0, 0, 0, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 0, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 0, 225, 77, 77, 225, 225, 162, 163, 77, 225, 225, 77, 
-    0, 225, 0, 0, 0, 77, 77, 77, 225, 225, 225, 225, 77, 77, 77, 77, 77, 225, 
-    225, 225, 77, 77, 77, 225, 225, 225, 225, 9, 10, 9, 10, 9, 10, 9, 10, 
-    162, 163, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 
-    77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 
-    77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 
-    77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 
-    77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 
-    77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 
-    77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 
-    77, 77, 77, 77, 77, 77, 77, 162, 163, 9, 10, 162, 163, 162, 163, 162, 
-    163, 162, 163, 162, 163, 162, 163, 162, 163, 162, 163, 162, 163, 77, 77, 
-    225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 
-    225, 225, 225, 225, 225, 225, 225, 77, 77, 77, 77, 77, 77, 77, 77, 225, 
-    77, 77, 77, 77, 77, 77, 77, 225, 225, 225, 225, 225, 225, 77, 77, 77, 
-    225, 77, 77, 77, 77, 225, 225, 225, 225, 225, 77, 225, 225, 77, 77, 162, 
-    163, 162, 163, 225, 77, 77, 77, 77, 225, 77, 225, 225, 225, 77, 77, 225, 
-    225, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 225, 225, 225, 225, 225, 
-    225, 77, 77, 162, 163, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 
-    225, 225, 219, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 
-    225, 225, 225, 225, 225, 77, 225, 225, 225, 225, 77, 77, 225, 77, 225, 
-    77, 77, 225, 77, 225, 225, 225, 225, 77, 77, 77, 77, 77, 225, 225, 77, 
-    77, 77, 77, 77, 77, 225, 225, 225, 77, 77, 77, 77, 77, 77, 77, 77, 77, 
-    77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 225, 225, 77, 
-    77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 225, 225, 77, 77, 77, 77, 225, 
-    225, 225, 225, 77, 225, 225, 77, 77, 225, 219, 209, 209, 77, 77, 225, 
-    225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 
-    225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 
-    225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 77, 
-    77, 225, 225, 225, 225, 225, 225, 225, 225, 77, 225, 225, 225, 225, 225, 
-    225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 
-    225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 
-    225, 225, 225, 225, 225, 225, 225, 77, 77, 77, 77, 77, 236, 77, 225, 77, 
-    77, 77, 225, 225, 225, 225, 225, 77, 77, 77, 77, 77, 225, 225, 225, 77, 
-    77, 77, 77, 225, 77, 77, 77, 225, 225, 225, 225, 225, 77, 225, 77, 77, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 77, 77, 77, 77, 77, 77, 
-    77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 27, 27, 77, 
-    77, 77, 77, 77, 77, 0, 0, 0, 27, 27, 27, 27, 27, 25, 25, 25, 25, 25, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 44, 44, 44, 44, 44, 44, 
-    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 
-    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 
-    44, 44, 44, 0, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 0, 44, 46, 
-    44, 44, 44, 46, 46, 44, 46, 44, 46, 44, 46, 44, 44, 44, 44, 46, 44, 46, 
-    46, 44, 46, 46, 46, 46, 46, 46, 35, 50, 44, 44, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 46, 27, 27, 27, 27, 27, 27, 44, 46, 44, 46, 80, 80, 80, 
-    0, 0, 0, 0, 0, 0, 0, 136, 136, 136, 136, 152, 136, 136, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 
-    47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 
-    47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 0, 
-    47, 47, 47, 47, 47, 47, 47, 0, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 
-    80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 
-    80, 80, 80, 80, 136, 136, 29, 36, 29, 36, 136, 136, 136, 29, 36, 136, 29, 
-    36, 136, 136, 136, 136, 136, 136, 136, 136, 136, 83, 136, 136, 83, 136, 
-    29, 36, 136, 136, 29, 36, 162, 163, 162, 163, 162, 163, 162, 163, 136, 
-    136, 136, 136, 136, 51, 136, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 237, 237, 237, 
-    237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 
-    237, 237, 237, 237, 237, 237, 237, 237, 0, 237, 237, 237, 237, 238, 237, 
-    237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 
-    237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 
-    237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 
-    237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 
-    237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 
-    237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 238, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 
-    238, 238, 238, 238, 238, 238, 238, 238, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 237, 237, 237, 
-    237, 237, 237, 237, 237, 237, 237, 237, 0, 0, 0, 0, 239, 240, 240, 240, 
-    237, 241, 169, 242, 243, 244, 243, 244, 243, 244, 243, 244, 243, 244, 
-    237, 237, 243, 244, 243, 244, 243, 244, 243, 244, 245, 246, 247, 247, 
-    237, 242, 242, 242, 242, 242, 242, 242, 242, 242, 248, 249, 250, 251, 
-    252, 252, 245, 241, 241, 241, 241, 241, 238, 237, 253, 253, 253, 241, 
-    169, 240, 237, 27, 0, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 254, 169, 254, 169, 254, 169, 254, 169, 254, 169, 254, 169, 254, 
-    169, 254, 169, 254, 169, 254, 169, 254, 169, 254, 169, 169, 254, 169, 
-    254, 169, 254, 169, 169, 169, 169, 169, 169, 254, 254, 169, 254, 254, 
-    169, 254, 254, 169, 254, 254, 169, 254, 254, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 254, 169, 169, 0, 0, 255, 255, 256, 256, 241, 257, 258, 
-    245, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 254, 169, 
-    254, 169, 254, 169, 254, 169, 254, 169, 254, 169, 254, 169, 254, 169, 
-    254, 169, 254, 169, 254, 169, 254, 169, 169, 254, 169, 254, 169, 254, 
-    169, 169, 169, 169, 169, 169, 254, 254, 169, 254, 254, 169, 254, 254, 
-    169, 254, 254, 169, 254, 254, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    254, 169, 169, 254, 254, 254, 254, 240, 241, 241, 257, 258, 0, 0, 0, 0, 
-    0, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 0, 0, 0, 
-    258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 
-    258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 
-    258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 
-    258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 
-    258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 
-    258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 
-    258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 0, 259, 259, 260, 260, 
-    260, 260, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 0, 0, 0, 0, 0, 0, 0, 0, 237, 237, 
-    237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 
-    237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 
-    237, 237, 237, 237, 237, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 238, 238, 0, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 262, 262, 262, 262, 262, 262, 262, 262, 238, 263, 263, 263, 
-    263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 238, 238, 
-    238, 259, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 263, 263, 263, 263, 263, 
-    263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 238, 238, 238, 238, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 0, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 238, 238, 238, 238, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 238, 238, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 238, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 241, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 0, 0, 0, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 
-    237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 
-    237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 
-    237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 
-    237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 
-    82, 82, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 136, 136, 
-    136, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 142, 
-    142, 142, 142, 142, 142, 142, 142, 142, 142, 47, 47, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 0, 0, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 
-    46, 47, 80, 81, 81, 81, 136, 0, 0, 0, 0, 0, 0, 0, 0, 80, 80, 136, 51, 44, 
-    46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 
-    46, 44, 46, 44, 46, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 172, 172, 172, 172, 172, 172, 172, 
-    172, 172, 172, 80, 80, 82, 82, 82, 82, 82, 82, 0, 0, 0, 0, 0, 0, 0, 0, 
-    53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 
-    53, 53, 53, 53, 53, 51, 51, 51, 51, 51, 51, 51, 51, 51, 53, 53, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 46, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 
-    44, 46, 44, 46, 50, 46, 46, 46, 46, 46, 46, 46, 46, 44, 46, 44, 46, 44, 
-    44, 46, 44, 46, 44, 46, 44, 46, 44, 46, 51, 264, 264, 44, 46, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 133, 47, 47, 
-    47, 140, 47, 47, 47, 47, 133, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 137, 137, 133, 133, 137, 
-    27, 27, 27, 27, 0, 0, 0, 0, 147, 147, 147, 147, 147, 147, 79, 79, 146, 
-    218, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 136, 136, 136, 136, 0, 0, 0, 0, 0, 0, 0, 0, 137, 137, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 137, 137, 137, 137, 
-    137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 140, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 82, 82, 142, 142, 142, 142, 142, 142, 142, 142, 142, 
-    142, 0, 0, 0, 0, 0, 0, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 
-    80, 80, 80, 80, 80, 80, 47, 47, 47, 47, 47, 47, 82, 82, 82, 47, 0, 0, 0, 
-    0, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 133, 133, 133, 133, 133, 84, 84, 84, 82, 82, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 137, 
-    174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 0, 0, 0, 133, 133, 133, 137, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 143, 137, 137, 133, 133, 133, 
-    133, 137, 137, 133, 137, 137, 137, 174, 82, 82, 82, 82, 82, 82, 82, 82, 
-    82, 82, 82, 82, 82, 0, 52, 142, 142, 142, 142, 142, 142, 142, 142, 142, 
-    142, 0, 0, 0, 0, 82, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 133, 
-    133, 133, 133, 133, 133, 137, 137, 133, 133, 137, 137, 133, 133, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 47, 47, 47, 133, 47, 47, 47, 47, 47, 47, 47, 47, 133, 
-    137, 0, 0, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 0, 0, 82, 
-    82, 82, 82, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 52, 47, 47, 47, 47, 47, 47, 79, 79, 79, 47, 137, 0, 0, 0, 0, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 80, 47, 80, 80, 84, 47, 47, 80, 
-    80, 47, 47, 47, 47, 47, 80, 80, 47, 80, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 52, 82, 82, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 137, 137, 133, 
-    137, 137, 133, 137, 137, 82, 137, 140, 0, 0, 142, 142, 142, 142, 142, 
-    142, 142, 142, 142, 142, 0, 0, 0, 0, 0, 0, 254, 254, 254, 254, 254, 254, 
-    254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 
-    254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 
-    254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 
-    254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 
-    254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 
-    254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 
-    254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 
-    254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 
-    254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 
-    254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 
-    254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 
-    254, 254, 254, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 0, 0, 0, 0, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 0, 0, 0, 0, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 
-    265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 
-    265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 
-    265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 
-    265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 
-    265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 
-    265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 
-    265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 
-    265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 
-    265, 265, 265, 265, 265, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 169, 169, 267, 169, 267, 
-    169, 169, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 169, 267, 
-    169, 267, 169, 169, 267, 267, 169, 169, 169, 267, 267, 267, 267, 0, 0, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 0, 0, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 35, 35, 35, 35, 35, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 35, 35, 35, 0, 0, 0, 0, 0, 
-    268, 269, 268, 270, 270, 270, 270, 270, 270, 270, 270, 270, 208, 268, 
-    268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 0, 268, 268, 
-    268, 268, 268, 0, 268, 0, 268, 268, 0, 268, 268, 0, 268, 268, 268, 268, 
-    268, 268, 268, 268, 268, 270, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 192, 271, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 272, 27, 0, 0, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-    70, 70, 70, 70, 70, 70, 70, 273, 273, 273, 273, 273, 273, 273, 274, 275, 
-    273, 0, 0, 0, 0, 0, 0, 80, 80, 80, 80, 80, 80, 80, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 273, 276, 276, 277, 277, 274, 275, 274, 275, 274, 275, 274, 275, 
-    274, 275, 274, 275, 274, 275, 274, 275, 240, 240, 274, 275, 273, 273, 
-    273, 273, 277, 277, 277, 278, 273, 278, 0, 273, 278, 273, 273, 276, 279, 
-    280, 279, 280, 279, 280, 281, 273, 273, 282, 283, 284, 284, 285, 0, 273, 
-    286, 281, 273, 0, 0, 0, 0, 128, 128, 128, 115, 128, 0, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 
-    128, 128, 128, 128, 128, 128, 0, 0, 131, 0, 287, 287, 288, 289, 288, 287, 
-    287, 290, 291, 287, 292, 293, 294, 293, 293, 295, 295, 295, 295, 295, 
-    295, 295, 295, 295, 295, 293, 287, 296, 297, 296, 287, 287, 298, 298, 
-    298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 
-    298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 290, 287, 291, 299, 
-    300, 299, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 
-    301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 
-    290, 297, 291, 297, 290, 291, 302, 303, 304, 302, 302, 305, 305, 305, 
-    305, 305, 305, 305, 305, 305, 305, 306, 305, 305, 305, 305, 305, 305, 
-    305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 
-    305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 
-    305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 306, 306, 305, 
-    305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 
-    305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 
-    305, 305, 0, 0, 0, 305, 305, 305, 305, 305, 305, 0, 0, 305, 305, 305, 
-    305, 305, 305, 0, 0, 305, 305, 305, 305, 305, 305, 0, 0, 305, 305, 305, 
-    0, 0, 0, 289, 289, 297, 299, 307, 289, 289, 0, 308, 309, 309, 309, 309, 
-    308, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 310, 310, 310, 27, 25, 0, 0, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 0, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 82, 136, 79, 0, 0, 0, 0, 147, 147, 
-    147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 
-    147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 
-    147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 
-    147, 0, 0, 0, 79, 79, 79, 79, 79, 79, 79, 79, 79, 311, 311, 311, 311, 
-    311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 
-    311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 
-    311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 
-    311, 311, 311, 311, 311, 311, 311, 152, 152, 152, 152, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 152, 0, 0, 0, 0, 0, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 84, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 147, 147, 147, 147, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 172, 47, 47, 47, 47, 47, 47, 47, 47, 172, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 82, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 
-    0, 47, 47, 47, 47, 47, 47, 47, 47, 82, 172, 172, 172, 172, 172, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 44, 44, 44, 44, 44, 
-    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 
-    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 
-    46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 
-    46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 0, 0, 142, 142, 142, 142, 142, 142, 142, 142, 
-    142, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 105, 105, 105, 
-    105, 105, 0, 0, 105, 0, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 0, 105, 105, 0, 0, 0, 105, 0, 0, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 0, 102, 312, 312, 312, 312, 312, 312, 
-    312, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    312, 312, 312, 312, 312, 312, 0, 0, 0, 136, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 105, 133, 133, 133, 0, 133, 133, 0, 0, 0, 0, 0, 
-    133, 84, 133, 80, 105, 105, 105, 105, 0, 105, 105, 105, 0, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 0, 0, 0, 0, 80, 175, 
-    84, 0, 0, 0, 0, 140, 312, 312, 312, 312, 312, 312, 312, 312, 0, 0, 0, 0, 
-    0, 0, 0, 0, 102, 102, 102, 102, 102, 102, 102, 102, 102, 0, 0, 0, 0, 0, 
-    0, 0, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 312, 312, 102, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 0, 0, 0, 136, 136, 136, 136, 136, 136, 136, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 0, 0, 312, 312, 312, 312, 312, 312, 312, 312, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 0, 0, 0, 0, 0, 312, 312, 312, 312, 312, 312, 
-    312, 312, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 
-    105, 105, 105, 105, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 313, 313, 313, 313, 
-    313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 
-    313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 0, 133, 133, 
-    137, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 138, 47, 138, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 138, 47, 47, 47, 47, 137, 137, 137, 133, 133, 133, 
-    133, 137, 137, 140, 139, 82, 82, 173, 82, 82, 82, 82, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 
-    172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 
-    172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 
-    172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 
-    172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 
-    172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 
-    172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 
-    172, 172, 172, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 82, 82, 
-    82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 0, 0, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 314, 314, 314, 314, 314, 
-    314, 314, 315, 315, 175, 175, 175, 79, 79, 79, 316, 315, 315, 315, 315, 
-    315, 131, 131, 131, 131, 131, 131, 131, 131, 84, 84, 84, 84, 84, 84, 84, 
-    84, 79, 79, 80, 80, 80, 80, 80, 84, 84, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 80, 80, 80, 80, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 314, 314, 314, 314, 314, 314, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 
-    79, 79, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 80, 80, 80, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 
-    147, 147, 147, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 35, 35, 35, 35, 35, 35, 35, 0, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 48, 0, 48, 48, 0, 0, 48, 0, 0, 48, 
-    48, 0, 0, 48, 48, 48, 48, 0, 48, 48, 48, 48, 48, 48, 48, 48, 35, 35, 35, 
-    35, 0, 35, 0, 35, 35, 35, 35, 35, 35, 35, 0, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 48, 48, 0, 48, 48, 48, 48, 0, 0, 48, 48, 48, 48, 48, 48, 48, 48, 
-    0, 48, 48, 48, 48, 48, 48, 48, 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 48, 48, 
-    0, 48, 48, 48, 48, 0, 48, 48, 48, 48, 48, 0, 48, 0, 0, 0, 48, 48, 48, 48, 
-    48, 48, 48, 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 0, 0, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 317, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    219, 35, 35, 35, 35, 35, 35, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 317, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 219, 35, 35, 35, 35, 35, 35, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    317, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 219, 35, 35, 35, 35, 35, 35, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 317, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 219, 35, 35, 35, 35, 35, 
-    35, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 317, 35, 35, 35, 35, 35, 35, 35, 35, 35, 
-    35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 219, 35, 
-    35, 35, 35, 35, 35, 48, 35, 0, 0, 318, 318, 318, 318, 318, 318, 318, 318, 
-    318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 
-    318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 
-    318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 0, 0, 0, 0, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 
-    27, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 0, 0, 0, 0, 0, 234, 234, 234, 234, 234, 234, 234, 234, 234, 
-    234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 
-    234, 234, 234, 234, 234, 234, 234, 319, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 234, 0, 234, 0, 0, 234, 0, 0, 0, 234, 0, 0, 0, 234, 234, 234, 
-    234, 234, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 
-    262, 262, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 262, 262, 262, 0, 
-    0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-    261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 261, 261, 261, 261, 261, 261, 261, 261, 261, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 
-    169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 
-    267, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 131, 131, 131, 131, 131, 131, 131, 
-    131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 
-    131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 
-    131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 
-    131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 
-    131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 
-    131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 
-    131, 131, 131, 131, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 
-    70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 
-    266, 266, 266, 0, 0, 
-};
-
-/* decomposition data */
-static unsigned int decomp_data[] = {
-    0, 257, 32, 514, 32, 776, 259, 97, 514, 32, 772, 259, 50, 259, 51, 514, 
-    32, 769, 258, 956, 514, 32, 807, 259, 49, 259, 111, 772, 49, 8260, 52, 
-    772, 49, 8260, 50, 772, 51, 8260, 52, 512, 65, 768, 512, 65, 769, 512, 
-    65, 770, 512, 65, 771, 512, 65, 776, 512, 65, 778, 512, 67, 807, 512, 69, 
-    768, 512, 69, 769, 512, 69, 770, 512, 69, 776, 512, 73, 768, 512, 73, 
-    769, 512, 73, 770, 512, 73, 776, 512, 78, 771, 512, 79, 768, 512, 79, 
-    769, 512, 79, 770, 512, 79, 771, 512, 79, 776, 512, 85, 768, 512, 85, 
-    769, 512, 85, 770, 512, 85, 776, 512, 89, 769, 512, 97, 768, 512, 97, 
-    769, 512, 97, 770, 512, 97, 771, 512, 97, 776, 512, 97, 778, 512, 99, 
-    807, 512, 101, 768, 512, 101, 769, 512, 101, 770, 512, 101, 776, 512, 
-    105, 768, 512, 105, 769, 512, 105, 770, 512, 105, 776, 512, 110, 771, 
-    512, 111, 768, 512, 111, 769, 512, 111, 770, 512, 111, 771, 512, 111, 
-    776, 512, 117, 768, 512, 117, 769, 512, 117, 770, 512, 117, 776, 512, 
-    121, 769, 512, 121, 776, 512, 65, 772, 512, 97, 772, 512, 65, 774, 512, 
-    97, 774, 512, 65, 808, 512, 97, 808, 512, 67, 769, 512, 99, 769, 512, 67, 
-    770, 512, 99, 770, 512, 67, 775, 512, 99, 775, 512, 67, 780, 512, 99, 
-    780, 512, 68, 780, 512, 100, 780, 512, 69, 772, 512, 101, 772, 512, 69, 
-    774, 512, 101, 774, 512, 69, 775, 512, 101, 775, 512, 69, 808, 512, 101, 
-    808, 512, 69, 780, 512, 101, 780, 512, 71, 770, 512, 103, 770, 512, 71, 
-    774, 512, 103, 774, 512, 71, 775, 512, 103, 775, 512, 71, 807, 512, 103, 
-    807, 512, 72, 770, 512, 104, 770, 512, 73, 771, 512, 105, 771, 512, 73, 
-    772, 512, 105, 772, 512, 73, 774, 512, 105, 774, 512, 73, 808, 512, 105, 
-    808, 512, 73, 775, 514, 73, 74, 514, 105, 106, 512, 74, 770, 512, 106, 
-    770, 512, 75, 807, 512, 107, 807, 512, 76, 769, 512, 108, 769, 512, 76, 
-    807, 512, 108, 807, 512, 76, 780, 512, 108, 780, 514, 76, 183, 514, 108, 
-    183, 512, 78, 769, 512, 110, 769, 512, 78, 807, 512, 110, 807, 512, 78, 
-    780, 512, 110, 780, 514, 700, 110, 512, 79, 772, 512, 111, 772, 512, 79, 
-    774, 512, 111, 774, 512, 79, 779, 512, 111, 779, 512, 82, 769, 512, 114, 
-    769, 512, 82, 807, 512, 114, 807, 512, 82, 780, 512, 114, 780, 512, 83, 
-    769, 512, 115, 769, 512, 83, 770, 512, 115, 770, 512, 83, 807, 512, 115, 
-    807, 512, 83, 780, 512, 115, 780, 512, 84, 807, 512, 116, 807, 512, 84, 
-    780, 512, 116, 780, 512, 85, 771, 512, 117, 771, 512, 85, 772, 512, 117, 
-    772, 512, 85, 774, 512, 117, 774, 512, 85, 778, 512, 117, 778, 512, 85, 
-    779, 512, 117, 779, 512, 85, 808, 512, 117, 808, 512, 87, 770, 512, 119, 
-    770, 512, 89, 770, 512, 121, 770, 512, 89, 776, 512, 90, 769, 512, 122, 
-    769, 512, 90, 775, 512, 122, 775, 512, 90, 780, 512, 122, 780, 258, 115, 
-    512, 79, 795, 512, 111, 795, 512, 85, 795, 512, 117, 795, 514, 68, 381, 
-    514, 68, 382, 514, 100, 382, 514, 76, 74, 514, 76, 106, 514, 108, 106, 
-    514, 78, 74, 514, 78, 106, 514, 110, 106, 512, 65, 780, 512, 97, 780, 
-    512, 73, 780, 512, 105, 780, 512, 79, 780, 512, 111, 780, 512, 85, 780, 
-    512, 117, 780, 512, 220, 772, 512, 252, 772, 512, 220, 769, 512, 252, 
-    769, 512, 220, 780, 512, 252, 780, 512, 220, 768, 512, 252, 768, 512, 
-    196, 772, 512, 228, 772, 512, 550, 772, 512, 551, 772, 512, 198, 772, 
-    512, 230, 772, 512, 71, 780, 512, 103, 780, 512, 75, 780, 512, 107, 780, 
-    512, 79, 808, 512, 111, 808, 512, 490, 772, 512, 491, 772, 512, 439, 780, 
-    512, 658, 780, 512, 106, 780, 514, 68, 90, 514, 68, 122, 514, 100, 122, 
-    512, 71, 769, 512, 103, 769, 512, 78, 768, 512, 110, 768, 512, 197, 769, 
-    512, 229, 769, 512, 198, 769, 512, 230, 769, 512, 216, 769, 512, 248, 
-    769, 512, 65, 783, 512, 97, 783, 512, 65, 785, 512, 97, 785, 512, 69, 
-    783, 512, 101, 783, 512, 69, 785, 512, 101, 785, 512, 73, 783, 512, 105, 
-    783, 512, 73, 785, 512, 105, 785, 512, 79, 783, 512, 111, 783, 512, 79, 
-    785, 512, 111, 785, 512, 82, 783, 512, 114, 783, 512, 82, 785, 512, 114, 
-    785, 512, 85, 783, 512, 117, 783, 512, 85, 785, 512, 117, 785, 512, 83, 
-    806, 512, 115, 806, 512, 84, 806, 512, 116, 806, 512, 72, 780, 512, 104, 
-    780, 512, 65, 775, 512, 97, 775, 512, 69, 807, 512, 101, 807, 512, 214, 
-    772, 512, 246, 772, 512, 213, 772, 512, 245, 772, 512, 79, 775, 512, 111, 
-    775, 512, 558, 772, 512, 559, 772, 512, 89, 772, 512, 121, 772, 259, 104, 
-    259, 614, 259, 106, 259, 114, 259, 633, 259, 635, 259, 641, 259, 119, 
-    259, 121, 514, 32, 774, 514, 32, 775, 514, 32, 778, 514, 32, 808, 514, 
-    32, 771, 514, 32, 779, 259, 611, 259, 108, 259, 115, 259, 120, 259, 661, 
-    256, 768, 256, 769, 256, 787, 512, 776, 769, 256, 697, 514, 32, 837, 256, 
-    59, 514, 32, 769, 512, 168, 769, 512, 913, 769, 256, 183, 512, 917, 769, 
-    512, 919, 769, 512, 921, 769, 512, 927, 769, 512, 933, 769, 512, 937, 
-    769, 512, 970, 769, 512, 921, 776, 512, 933, 776, 512, 945, 769, 512, 
-    949, 769, 512, 951, 769, 512, 953, 769, 512, 971, 769, 512, 953, 776, 
-    512, 965, 776, 512, 959, 769, 512, 965, 769, 512, 969, 769, 258, 946, 
-    258, 952, 258, 933, 512, 978, 769, 512, 978, 776, 258, 966, 258, 960, 
-    258, 954, 258, 961, 258, 962, 258, 920, 258, 949, 258, 931, 512, 1045, 
-    768, 512, 1045, 776, 512, 1043, 769, 512, 1030, 776, 512, 1050, 769, 512, 
-    1048, 768, 512, 1059, 774, 512, 1048, 774, 512, 1080, 774, 512, 1077, 
-    768, 512, 1077, 776, 512, 1075, 769, 512, 1110, 776, 512, 1082, 769, 512, 
-    1080, 768, 512, 1091, 774, 512, 1140, 783, 512, 1141, 783, 512, 1046, 
-    774, 512, 1078, 774, 512, 1040, 774, 512, 1072, 774, 512, 1040, 776, 512, 
-    1072, 776, 512, 1045, 774, 512, 1077, 774, 512, 1240, 776, 512, 1241, 
-    776, 512, 1046, 776, 512, 1078, 776, 512, 1047, 776, 512, 1079, 776, 512, 
-    1048, 772, 512, 1080, 772, 512, 1048, 776, 512, 1080, 776, 512, 1054, 
-    776, 512, 1086, 776, 512, 1256, 776, 512, 1257, 776, 512, 1069, 776, 512, 
-    1101, 776, 512, 1059, 772, 512, 1091, 772, 512, 1059, 776, 512, 1091, 
-    776, 512, 1059, 779, 512, 1091, 779, 512, 1063, 776, 512, 1095, 776, 512, 
-    1067, 776, 512, 1099, 776, 514, 1381, 1410, 512, 1575, 1619, 512, 1575, 
-    1620, 512, 1608, 1620, 512, 1575, 1621, 512, 1610, 1620, 514, 1575, 1652, 
-    514, 1608, 1652, 514, 1735, 1652, 514, 1610, 1652, 512, 1749, 1620, 512, 
-    1729, 1620, 512, 1746, 1620, 512, 2344, 2364, 512, 2352, 2364, 512, 2355, 
-    2364, 512, 2325, 2364, 512, 2326, 2364, 512, 2327, 2364, 512, 2332, 2364, 
-    512, 2337, 2364, 512, 2338, 2364, 512, 2347, 2364, 512, 2351, 2364, 512, 
-    2503, 2494, 512, 2503, 2519, 512, 2465, 2492, 512, 2466, 2492, 512, 2479, 
-    2492, 512, 2610, 2620, 512, 2616, 2620, 512, 2582, 2620, 512, 2583, 2620, 
-    512, 2588, 2620, 512, 2603, 2620, 512, 2887, 2902, 512, 2887, 2878, 512, 
-    2887, 2903, 512, 2849, 2876, 512, 2850, 2876, 512, 2962, 3031, 512, 3014, 
-    3006, 512, 3015, 3006, 512, 3014, 3031, 512, 3142, 3158, 512, 3263, 3285, 
-    512, 3270, 3285, 512, 3270, 3286, 512, 3270, 3266, 512, 3274, 3285, 512, 
-    3398, 3390, 512, 3399, 3390, 512, 3398, 3415, 512, 3545, 3530, 512, 3545, 
-    3535, 512, 3548, 3530, 512, 3545, 3551, 514, 3661, 3634, 514, 3789, 3762, 
-    514, 3755, 3737, 514, 3755, 3745, 257, 3851, 512, 3906, 4023, 512, 3916, 
-    4023, 512, 3921, 4023, 512, 3926, 4023, 512, 3931, 4023, 512, 3904, 4021, 
-    512, 3953, 3954, 512, 3953, 3956, 512, 4018, 3968, 514, 4018, 3969, 512, 
-    4019, 3968, 514, 4019, 3969, 512, 3953, 3968, 512, 3986, 4023, 512, 3996, 
-    4023, 512, 4001, 4023, 512, 4006, 4023, 512, 4011, 4023, 512, 3984, 4021, 
-    512, 4133, 4142, 259, 4316, 512, 6917, 6965, 512, 6919, 6965, 512, 6921, 
-    6965, 512, 6923, 6965, 512, 6925, 6965, 512, 6929, 6965, 512, 6970, 6965, 
-    512, 6972, 6965, 512, 6974, 6965, 512, 6975, 6965, 512, 6978, 6965, 259, 
-    65, 259, 198, 259, 66, 259, 68, 259, 69, 259, 398, 259, 71, 259, 72, 259, 
-    73, 259, 74, 259, 75, 259, 76, 259, 77, 259, 78, 259, 79, 259, 546, 259, 
-    80, 259, 82, 259, 84, 259, 85, 259, 87, 259, 97, 259, 592, 259, 593, 259, 
-    7426, 259, 98, 259, 100, 259, 101, 259, 601, 259, 603, 259, 604, 259, 
-    103, 259, 107, 259, 109, 259, 331, 259, 111, 259, 596, 259, 7446, 259, 
-    7447, 259, 112, 259, 116, 259, 117, 259, 7453, 259, 623, 259, 118, 259, 
-    7461, 259, 946, 259, 947, 259, 948, 259, 966, 259, 967, 261, 105, 261, 
-    114, 261, 117, 261, 118, 261, 946, 261, 947, 261, 961, 261, 966, 261, 
-    967, 259, 1085, 259, 594, 259, 99, 259, 597, 259, 240, 259, 604, 259, 
-    102, 259, 607, 259, 609, 259, 613, 259, 616, 259, 617, 259, 618, 259, 
-    7547, 259, 669, 259, 621, 259, 7557, 259, 671, 259, 625, 259, 624, 259, 
-    626, 259, 627, 259, 628, 259, 629, 259, 632, 259, 642, 259, 643, 259, 
-    427, 259, 649, 259, 650, 259, 7452, 259, 651, 259, 652, 259, 122, 259, 
-    656, 259, 657, 259, 658, 259, 952, 512, 65, 805, 512, 97, 805, 512, 66, 
-    775, 512, 98, 775, 512, 66, 803, 512, 98, 803, 512, 66, 817, 512, 98, 
-    817, 512, 199, 769, 512, 231, 769, 512, 68, 775, 512, 100, 775, 512, 68, 
-    803, 512, 100, 803, 512, 68, 817, 512, 100, 817, 512, 68, 807, 512, 100, 
-    807, 512, 68, 813, 512, 100, 813, 512, 274, 768, 512, 275, 768, 512, 274, 
-    769, 512, 275, 769, 512, 69, 813, 512, 101, 813, 512, 69, 816, 512, 101, 
-    816, 512, 552, 774, 512, 553, 774, 512, 70, 775, 512, 102, 775, 512, 71, 
-    772, 512, 103, 772, 512, 72, 775, 512, 104, 775, 512, 72, 803, 512, 104, 
-    803, 512, 72, 776, 512, 104, 776, 512, 72, 807, 512, 104, 807, 512, 72, 
-    814, 512, 104, 814, 512, 73, 816, 512, 105, 816, 512, 207, 769, 512, 239, 
-    769, 512, 75, 769, 512, 107, 769, 512, 75, 803, 512, 107, 803, 512, 75, 
-    817, 512, 107, 817, 512, 76, 803, 512, 108, 803, 512, 7734, 772, 512, 
-    7735, 772, 512, 76, 817, 512, 108, 817, 512, 76, 813, 512, 108, 813, 512, 
-    77, 769, 512, 109, 769, 512, 77, 775, 512, 109, 775, 512, 77, 803, 512, 
-    109, 803, 512, 78, 775, 512, 110, 775, 512, 78, 803, 512, 110, 803, 512, 
-    78, 817, 512, 110, 817, 512, 78, 813, 512, 110, 813, 512, 213, 769, 512, 
-    245, 769, 512, 213, 776, 512, 245, 776, 512, 332, 768, 512, 333, 768, 
-    512, 332, 769, 512, 333, 769, 512, 80, 769, 512, 112, 769, 512, 80, 775, 
-    512, 112, 775, 512, 82, 775, 512, 114, 775, 512, 82, 803, 512, 114, 803, 
-    512, 7770, 772, 512, 7771, 772, 512, 82, 817, 512, 114, 817, 512, 83, 
-    775, 512, 115, 775, 512, 83, 803, 512, 115, 803, 512, 346, 775, 512, 347, 
-    775, 512, 352, 775, 512, 353, 775, 512, 7778, 775, 512, 7779, 775, 512, 
-    84, 775, 512, 116, 775, 512, 84, 803, 512, 116, 803, 512, 84, 817, 512, 
-    116, 817, 512, 84, 813, 512, 116, 813, 512, 85, 804, 512, 117, 804, 512, 
-    85, 816, 512, 117, 816, 512, 85, 813, 512, 117, 813, 512, 360, 769, 512, 
-    361, 769, 512, 362, 776, 512, 363, 776, 512, 86, 771, 512, 118, 771, 512, 
-    86, 803, 512, 118, 803, 512, 87, 768, 512, 119, 768, 512, 87, 769, 512, 
-    119, 769, 512, 87, 776, 512, 119, 776, 512, 87, 775, 512, 119, 775, 512, 
-    87, 803, 512, 119, 803, 512, 88, 775, 512, 120, 775, 512, 88, 776, 512, 
-    120, 776, 512, 89, 775, 512, 121, 775, 512, 90, 770, 512, 122, 770, 512, 
-    90, 803, 512, 122, 803, 512, 90, 817, 512, 122, 817, 512, 104, 817, 512, 
-    116, 776, 512, 119, 778, 512, 121, 778, 514, 97, 702, 512, 383, 775, 512, 
-    65, 803, 512, 97, 803, 512, 65, 777, 512, 97, 777, 512, 194, 769, 512, 
-    226, 769, 512, 194, 768, 512, 226, 768, 512, 194, 777, 512, 226, 777, 
-    512, 194, 771, 512, 226, 771, 512, 7840, 770, 512, 7841, 770, 512, 258, 
-    769, 512, 259, 769, 512, 258, 768, 512, 259, 768, 512, 258, 777, 512, 
-    259, 777, 512, 258, 771, 512, 259, 771, 512, 7840, 774, 512, 7841, 774, 
-    512, 69, 803, 512, 101, 803, 512, 69, 777, 512, 101, 777, 512, 69, 771, 
-    512, 101, 771, 512, 202, 769, 512, 234, 769, 512, 202, 768, 512, 234, 
-    768, 512, 202, 777, 512, 234, 777, 512, 202, 771, 512, 234, 771, 512, 
-    7864, 770, 512, 7865, 770, 512, 73, 777, 512, 105, 777, 512, 73, 803, 
-    512, 105, 803, 512, 79, 803, 512, 111, 803, 512, 79, 777, 512, 111, 777, 
-    512, 212, 769, 512, 244, 769, 512, 212, 768, 512, 244, 768, 512, 212, 
-    777, 512, 244, 777, 512, 212, 771, 512, 244, 771, 512, 7884, 770, 512, 
-    7885, 770, 512, 416, 769, 512, 417, 769, 512, 416, 768, 512, 417, 768, 
-    512, 416, 777, 512, 417, 777, 512, 416, 771, 512, 417, 771, 512, 416, 
-    803, 512, 417, 803, 512, 85, 803, 512, 117, 803, 512, 85, 777, 512, 117, 
-    777, 512, 431, 769, 512, 432, 769, 512, 431, 768, 512, 432, 768, 512, 
-    431, 777, 512, 432, 777, 512, 431, 771, 512, 432, 771, 512, 431, 803, 
-    512, 432, 803, 512, 89, 768, 512, 121, 768, 512, 89, 803, 512, 121, 803, 
-    512, 89, 777, 512, 121, 777, 512, 89, 771, 512, 121, 771, 512, 945, 787, 
-    512, 945, 788, 512, 7936, 768, 512, 7937, 768, 512, 7936, 769, 512, 7937, 
-    769, 512, 7936, 834, 512, 7937, 834, 512, 913, 787, 512, 913, 788, 512, 
-    7944, 768, 512, 7945, 768, 512, 7944, 769, 512, 7945, 769, 512, 7944, 
-    834, 512, 7945, 834, 512, 949, 787, 512, 949, 788, 512, 7952, 768, 512, 
-    7953, 768, 512, 7952, 769, 512, 7953, 769, 512, 917, 787, 512, 917, 788, 
-    512, 7960, 768, 512, 7961, 768, 512, 7960, 769, 512, 7961, 769, 512, 951, 
-    787, 512, 951, 788, 512, 7968, 768, 512, 7969, 768, 512, 7968, 769, 512, 
-    7969, 769, 512, 7968, 834, 512, 7969, 834, 512, 919, 787, 512, 919, 788, 
-    512, 7976, 768, 512, 7977, 768, 512, 7976, 769, 512, 7977, 769, 512, 
-    7976, 834, 512, 7977, 834, 512, 953, 787, 512, 953, 788, 512, 7984, 768, 
-    512, 7985, 768, 512, 7984, 769, 512, 7985, 769, 512, 7984, 834, 512, 
-    7985, 834, 512, 921, 787, 512, 921, 788, 512, 7992, 768, 512, 7993, 768, 
-    512, 7992, 769, 512, 7993, 769, 512, 7992, 834, 512, 7993, 834, 512, 959, 
-    787, 512, 959, 788, 512, 8000, 768, 512, 8001, 768, 512, 8000, 769, 512, 
-    8001, 769, 512, 927, 787, 512, 927, 788, 512, 8008, 768, 512, 8009, 768, 
-    512, 8008, 769, 512, 8009, 769, 512, 965, 787, 512, 965, 788, 512, 8016, 
-    768, 512, 8017, 768, 512, 8016, 769, 512, 8017, 769, 512, 8016, 834, 512, 
-    8017, 834, 512, 933, 788, 512, 8025, 768, 512, 8025, 769, 512, 8025, 834, 
-    512, 969, 787, 512, 969, 788, 512, 8032, 768, 512, 8033, 768, 512, 8032, 
-    769, 512, 8033, 769, 512, 8032, 834, 512, 8033, 834, 512, 937, 787, 512, 
-    937, 788, 512, 8040, 768, 512, 8041, 768, 512, 8040, 769, 512, 8041, 769, 
-    512, 8040, 834, 512, 8041, 834, 512, 945, 768, 256, 940, 512, 949, 768, 
-    256, 941, 512, 951, 768, 256, 942, 512, 953, 768, 256, 943, 512, 959, 
-    768, 256, 972, 512, 965, 768, 256, 973, 512, 969, 768, 256, 974, 512, 
-    7936, 837, 512, 7937, 837, 512, 7938, 837, 512, 7939, 837, 512, 7940, 
-    837, 512, 7941, 837, 512, 7942, 837, 512, 7943, 837, 512, 7944, 837, 512, 
-    7945, 837, 512, 7946, 837, 512, 7947, 837, 512, 7948, 837, 512, 7949, 
-    837, 512, 7950, 837, 512, 7951, 837, 512, 7968, 837, 512, 7969, 837, 512, 
-    7970, 837, 512, 7971, 837, 512, 7972, 837, 512, 7973, 837, 512, 7974, 
-    837, 512, 7975, 837, 512, 7976, 837, 512, 7977, 837, 512, 7978, 837, 512, 
-    7979, 837, 512, 7980, 837, 512, 7981, 837, 512, 7982, 837, 512, 7983, 
-    837, 512, 8032, 837, 512, 8033, 837, 512, 8034, 837, 512, 8035, 837, 512, 
-    8036, 837, 512, 8037, 837, 512, 8038, 837, 512, 8039, 837, 512, 8040, 
-    837, 512, 8041, 837, 512, 8042, 837, 512, 8043, 837, 512, 8044, 837, 512, 
-    8045, 837, 512, 8046, 837, 512, 8047, 837, 512, 945, 774, 512, 945, 772, 
-    512, 8048, 837, 512, 945, 837, 512, 940, 837, 512, 945, 834, 512, 8118, 
-    837, 512, 913, 774, 512, 913, 772, 512, 913, 768, 256, 902, 512, 913, 
-    837, 514, 32, 787, 256, 953, 514, 32, 787, 514, 32, 834, 512, 168, 834, 
-    512, 8052, 837, 512, 951, 837, 512, 942, 837, 512, 951, 834, 512, 8134, 
-    837, 512, 917, 768, 256, 904, 512, 919, 768, 256, 905, 512, 919, 837, 
-    512, 8127, 768, 512, 8127, 769, 512, 8127, 834, 512, 953, 774, 512, 953, 
-    772, 512, 970, 768, 256, 912, 512, 953, 834, 512, 970, 834, 512, 921, 
-    774, 512, 921, 772, 512, 921, 768, 256, 906, 512, 8190, 768, 512, 8190, 
-    769, 512, 8190, 834, 512, 965, 774, 512, 965, 772, 512, 971, 768, 256, 
-    944, 512, 961, 787, 512, 961, 788, 512, 965, 834, 512, 971, 834, 512, 
-    933, 774, 512, 933, 772, 512, 933, 768, 256, 910, 512, 929, 788, 512, 
-    168, 768, 256, 901, 256, 96, 512, 8060, 837, 512, 969, 837, 512, 974, 
-    837, 512, 969, 834, 512, 8182, 837, 512, 927, 768, 256, 908, 512, 937, 
-    768, 256, 911, 512, 937, 837, 256, 180, 514, 32, 788, 256, 8194, 256, 
-    8195, 258, 32, 258, 32, 258, 32, 258, 32, 258, 32, 257, 32, 258, 32, 258, 
-    32, 258, 32, 257, 8208, 514, 32, 819, 258, 46, 514, 46, 46, 770, 46, 46, 
-    46, 257, 32, 514, 8242, 8242, 770, 8242, 8242, 8242, 514, 8245, 8245, 
-    770, 8245, 8245, 8245, 514, 33, 33, 514, 32, 773, 514, 63, 63, 514, 63, 
-    33, 514, 33, 63, 1026, 8242, 8242, 8242, 8242, 258, 32, 259, 48, 259, 
-    105, 259, 52, 259, 53, 259, 54, 259, 55, 259, 56, 259, 57, 259, 43, 259, 
-    8722, 259, 61, 259, 40, 259, 41, 259, 110, 261, 48, 261, 49, 261, 50, 
-    261, 51, 261, 52, 261, 53, 261, 54, 261, 55, 261, 56, 261, 57, 261, 43, 
-    261, 8722, 261, 61, 261, 40, 261, 41, 261, 97, 261, 101, 261, 111, 261, 
-    120, 261, 601, 514, 82, 115, 770, 97, 47, 99, 770, 97, 47, 115, 262, 67, 
-    514, 176, 67, 770, 99, 47, 111, 770, 99, 47, 117, 258, 400, 514, 176, 70, 
-    262, 103, 262, 72, 262, 72, 262, 72, 262, 104, 262, 295, 262, 73, 262, 
-    73, 262, 76, 262, 108, 262, 78, 514, 78, 111, 262, 80, 262, 81, 262, 82, 
-    262, 82, 262, 82, 515, 83, 77, 770, 84, 69, 76, 515, 84, 77, 262, 90, 
-    256, 937, 262, 90, 256, 75, 256, 197, 262, 66, 262, 67, 262, 101, 262, 
-    69, 262, 70, 262, 77, 262, 111, 258, 1488, 258, 1489, 258, 1490, 258, 
-    1491, 262, 105, 770, 70, 65, 88, 262, 960, 262, 947, 262, 915, 262, 928, 
-    262, 8721, 262, 68, 262, 100, 262, 101, 262, 105, 262, 106, 772, 49, 
-    8260, 55, 772, 49, 8260, 57, 1028, 49, 8260, 49, 48, 772, 49, 8260, 51, 
-    772, 50, 8260, 51, 772, 49, 8260, 53, 772, 50, 8260, 53, 772, 51, 8260, 
-    53, 772, 52, 8260, 53, 772, 49, 8260, 54, 772, 53, 8260, 54, 772, 49, 
-    8260, 56, 772, 51, 8260, 56, 772, 53, 8260, 56, 772, 55, 8260, 56, 516, 
-    49, 8260, 258, 73, 514, 73, 73, 770, 73, 73, 73, 514, 73, 86, 258, 86, 
-    514, 86, 73, 770, 86, 73, 73, 1026, 86, 73, 73, 73, 514, 73, 88, 258, 88, 
-    514, 88, 73, 770, 88, 73, 73, 258, 76, 258, 67, 258, 68, 258, 77, 258, 
-    105, 514, 105, 105, 770, 105, 105, 105, 514, 105, 118, 258, 118, 514, 
-    118, 105, 770, 118, 105, 105, 1026, 118, 105, 105, 105, 514, 105, 120, 
-    258, 120, 514, 120, 105, 770, 120, 105, 105, 258, 108, 258, 99, 258, 100, 
-    258, 109, 772, 48, 8260, 51, 512, 8592, 824, 512, 8594, 824, 512, 8596, 
-    824, 512, 8656, 824, 512, 8660, 824, 512, 8658, 824, 512, 8707, 824, 512, 
-    8712, 824, 512, 8715, 824, 512, 8739, 824, 512, 8741, 824, 514, 8747, 
-    8747, 770, 8747, 8747, 8747, 514, 8750, 8750, 770, 8750, 8750, 8750, 512, 
-    8764, 824, 512, 8771, 824, 512, 8773, 824, 512, 8776, 824, 512, 61, 824, 
-    512, 8801, 824, 512, 8781, 824, 512, 60, 824, 512, 62, 824, 512, 8804, 
-    824, 512, 8805, 824, 512, 8818, 824, 512, 8819, 824, 512, 8822, 824, 512, 
-    8823, 824, 512, 8826, 824, 512, 8827, 824, 512, 8834, 824, 512, 8835, 
-    824, 512, 8838, 824, 512, 8839, 824, 512, 8866, 824, 512, 8872, 824, 512, 
-    8873, 824, 512, 8875, 824, 512, 8828, 824, 512, 8829, 824, 512, 8849, 
-    824, 512, 8850, 824, 512, 8882, 824, 512, 8883, 824, 512, 8884, 824, 512, 
-    8885, 824, 256, 12296, 256, 12297, 263, 49, 263, 50, 263, 51, 263, 52, 
-    263, 53, 263, 54, 263, 55, 263, 56, 263, 57, 519, 49, 48, 519, 49, 49, 
-    519, 49, 50, 519, 49, 51, 519, 49, 52, 519, 49, 53, 519, 49, 54, 519, 49, 
-    55, 519, 49, 56, 519, 49, 57, 519, 50, 48, 770, 40, 49, 41, 770, 40, 50, 
-    41, 770, 40, 51, 41, 770, 40, 52, 41, 770, 40, 53, 41, 770, 40, 54, 41, 
-    770, 40, 55, 41, 770, 40, 56, 41, 770, 40, 57, 41, 1026, 40, 49, 48, 41, 
-    1026, 40, 49, 49, 41, 1026, 40, 49, 50, 41, 1026, 40, 49, 51, 41, 1026, 
-    40, 49, 52, 41, 1026, 40, 49, 53, 41, 1026, 40, 49, 54, 41, 1026, 40, 49, 
-    55, 41, 1026, 40, 49, 56, 41, 1026, 40, 49, 57, 41, 1026, 40, 50, 48, 41, 
-    514, 49, 46, 514, 50, 46, 514, 51, 46, 514, 52, 46, 514, 53, 46, 514, 54, 
-    46, 514, 55, 46, 514, 56, 46, 514, 57, 46, 770, 49, 48, 46, 770, 49, 49, 
-    46, 770, 49, 50, 46, 770, 49, 51, 46, 770, 49, 52, 46, 770, 49, 53, 46, 
-    770, 49, 54, 46, 770, 49, 55, 46, 770, 49, 56, 46, 770, 49, 57, 46, 770, 
-    50, 48, 46, 770, 40, 97, 41, 770, 40, 98, 41, 770, 40, 99, 41, 770, 40, 
-    100, 41, 770, 40, 101, 41, 770, 40, 102, 41, 770, 40, 103, 41, 770, 40, 
-    104, 41, 770, 40, 105, 41, 770, 40, 106, 41, 770, 40, 107, 41, 770, 40, 
-    108, 41, 770, 40, 109, 41, 770, 40, 110, 41, 770, 40, 111, 41, 770, 40, 
-    112, 41, 770, 40, 113, 41, 770, 40, 114, 41, 770, 40, 115, 41, 770, 40, 
-    116, 41, 770, 40, 117, 41, 770, 40, 118, 41, 770, 40, 119, 41, 770, 40, 
-    120, 41, 770, 40, 121, 41, 770, 40, 122, 41, 263, 65, 263, 66, 263, 67, 
-    263, 68, 263, 69, 263, 70, 263, 71, 263, 72, 263, 73, 263, 74, 263, 75, 
-    263, 76, 263, 77, 263, 78, 263, 79, 263, 80, 263, 81, 263, 82, 263, 83, 
-    263, 84, 263, 85, 263, 86, 263, 87, 263, 88, 263, 89, 263, 90, 263, 97, 
-    263, 98, 263, 99, 263, 100, 263, 101, 263, 102, 263, 103, 263, 104, 263, 
-    105, 263, 106, 263, 107, 263, 108, 263, 109, 263, 110, 263, 111, 263, 
-    112, 263, 113, 263, 114, 263, 115, 263, 116, 263, 117, 263, 118, 263, 
-    119, 263, 120, 263, 121, 263, 122, 263, 48, 1026, 8747, 8747, 8747, 8747, 
-    770, 58, 58, 61, 514, 61, 61, 770, 61, 61, 61, 512, 10973, 824, 261, 106, 
-    259, 86, 259, 11617, 258, 27597, 258, 40863, 258, 19968, 258, 20008, 258, 
-    20022, 258, 20031, 258, 20057, 258, 20101, 258, 20108, 258, 20128, 258, 
-    20154, 258, 20799, 258, 20837, 258, 20843, 258, 20866, 258, 20886, 258, 
-    20907, 258, 20960, 258, 20981, 258, 20992, 258, 21147, 258, 21241, 258, 
-    21269, 258, 21274, 258, 21304, 258, 21313, 258, 21340, 258, 21353, 258, 
-    21378, 258, 21430, 258, 21448, 258, 21475, 258, 22231, 258, 22303, 258, 
-    22763, 258, 22786, 258, 22794, 258, 22805, 258, 22823, 258, 22899, 258, 
-    23376, 258, 23424, 258, 23544, 258, 23567, 258, 23586, 258, 23608, 258, 
-    23662, 258, 23665, 258, 24027, 258, 24037, 258, 24049, 258, 24062, 258, 
-    24178, 258, 24186, 258, 24191, 258, 24308, 258, 24318, 258, 24331, 258, 
-    24339, 258, 24400, 258, 24417, 258, 24435, 258, 24515, 258, 25096, 258, 
-    25142, 258, 25163, 258, 25903, 258, 25908, 258, 25991, 258, 26007, 258, 
-    26020, 258, 26041, 258, 26080, 258, 26085, 258, 26352, 258, 26376, 258, 
-    26408, 258, 27424, 258, 27490, 258, 27513, 258, 27571, 258, 27595, 258, 
-    27604, 258, 27611, 258, 27663, 258, 27668, 258, 27700, 258, 28779, 258, 
-    29226, 258, 29238, 258, 29243, 258, 29247, 258, 29255, 258, 29273, 258, 
-    29275, 258, 29356, 258, 29572, 258, 29577, 258, 29916, 258, 29926, 258, 
-    29976, 258, 29983, 258, 29992, 258, 30000, 258, 30091, 258, 30098, 258, 
-    30326, 258, 30333, 258, 30382, 258, 30399, 258, 30446, 258, 30683, 258, 
-    30690, 258, 30707, 258, 31034, 258, 31160, 258, 31166, 258, 31348, 258, 
-    31435, 258, 31481, 258, 31859, 258, 31992, 258, 32566, 258, 32593, 258, 
-    32650, 258, 32701, 258, 32769, 258, 32780, 258, 32786, 258, 32819, 258, 
-    32895, 258, 32905, 258, 33251, 258, 33258, 258, 33267, 258, 33276, 258, 
-    33292, 258, 33307, 258, 33311, 258, 33390, 258, 33394, 258, 33400, 258, 
-    34381, 258, 34411, 258, 34880, 258, 34892, 258, 34915, 258, 35198, 258, 
-    35211, 258, 35282, 258, 35328, 258, 35895, 258, 35910, 258, 35925, 258, 
-    35960, 258, 35997, 258, 36196, 258, 36208, 258, 36275, 258, 36523, 258, 
-    36554, 258, 36763, 258, 36784, 258, 36789, 258, 37009, 258, 37193, 258, 
-    37318, 258, 37324, 258, 37329, 258, 38263, 258, 38272, 258, 38428, 258, 
-    38582, 258, 38585, 258, 38632, 258, 38737, 258, 38750, 258, 38754, 258, 
-    38761, 258, 38859, 258, 38893, 258, 38899, 258, 38913, 258, 39080, 258, 
-    39131, 258, 39135, 258, 39318, 258, 39321, 258, 39340, 258, 39592, 258, 
-    39640, 258, 39647, 258, 39717, 258, 39727, 258, 39730, 258, 39740, 258, 
-    39770, 258, 40165, 258, 40565, 258, 40575, 258, 40613, 258, 40635, 258, 
-    40643, 258, 40653, 258, 40657, 258, 40697, 258, 40701, 258, 40718, 258, 
-    40723, 258, 40736, 258, 40763, 258, 40778, 258, 40786, 258, 40845, 258, 
-    40860, 258, 40864, 264, 32, 258, 12306, 258, 21313, 258, 21316, 258, 
-    21317, 512, 12363, 12441, 512, 12365, 12441, 512, 12367, 12441, 512, 
-    12369, 12441, 512, 12371, 12441, 512, 12373, 12441, 512, 12375, 12441, 
-    512, 12377, 12441, 512, 12379, 12441, 512, 12381, 12441, 512, 12383, 
-    12441, 512, 12385, 12441, 512, 12388, 12441, 512, 12390, 12441, 512, 
-    12392, 12441, 512, 12399, 12441, 512, 12399, 12442, 512, 12402, 12441, 
-    512, 12402, 12442, 512, 12405, 12441, 512, 12405, 12442, 512, 12408, 
-    12441, 512, 12408, 12442, 512, 12411, 12441, 512, 12411, 12442, 512, 
-    12358, 12441, 514, 32, 12441, 514, 32, 12442, 512, 12445, 12441, 521, 
-    12424, 12426, 512, 12459, 12441, 512, 12461, 12441, 512, 12463, 12441, 
-    512, 12465, 12441, 512, 12467, 12441, 512, 12469, 12441, 512, 12471, 
-    12441, 512, 12473, 12441, 512, 12475, 12441, 512, 12477, 12441, 512, 
-    12479, 12441, 512, 12481, 12441, 512, 12484, 12441, 512, 12486, 12441, 
-    512, 12488, 12441, 512, 12495, 12441, 512, 12495, 12442, 512, 12498, 
-    12441, 512, 12498, 12442, 512, 12501, 12441, 512, 12501, 12442, 512, 
-    12504, 12441, 512, 12504, 12442, 512, 12507, 12441, 512, 12507, 12442, 
-    512, 12454, 12441, 512, 12527, 12441, 512, 12528, 12441, 512, 12529, 
-    12441, 512, 12530, 12441, 512, 12541, 12441, 521, 12467, 12488, 258, 
-    4352, 258, 4353, 258, 4522, 258, 4354, 258, 4524, 258, 4525, 258, 4355, 
-    258, 4356, 258, 4357, 258, 4528, 258, 4529, 258, 4530, 258, 4531, 258, 
-    4532, 258, 4533, 258, 4378, 258, 4358, 258, 4359, 258, 4360, 258, 4385, 
-    258, 4361, 258, 4362, 258, 4363, 258, 4364, 258, 4365, 258, 4366, 258, 
-    4367, 258, 4368, 258, 4369, 258, 4370, 258, 4449, 258, 4450, 258, 4451, 
-    258, 4452, 258, 4453, 258, 4454, 258, 4455, 258, 4456, 258, 4457, 258, 
-    4458, 258, 4459, 258, 4460, 258, 4461, 258, 4462, 258, 4463, 258, 4464, 
-    258, 4465, 258, 4466, 258, 4467, 258, 4468, 258, 4469, 258, 4448, 258, 
-    4372, 258, 4373, 258, 4551, 258, 4552, 258, 4556, 258, 4558, 258, 4563, 
-    258, 4567, 258, 4569, 258, 4380, 258, 4573, 258, 4575, 258, 4381, 258, 
-    4382, 258, 4384, 258, 4386, 258, 4387, 258, 4391, 258, 4393, 258, 4395, 
-    258, 4396, 258, 4397, 258, 4398, 258, 4399, 258, 4402, 258, 4406, 258, 
-    4416, 258, 4423, 258, 4428, 258, 4593, 258, 4594, 258, 4439, 258, 4440, 
-    258, 4441, 258, 4484, 258, 4485, 258, 4488, 258, 4497, 258, 4498, 258, 
-    4500, 258, 4510, 258, 4513, 259, 19968, 259, 20108, 259, 19977, 259, 
-    22235, 259, 19978, 259, 20013, 259, 19979, 259, 30002, 259, 20057, 259, 
-    19993, 259, 19969, 259, 22825, 259, 22320, 259, 20154, 770, 40, 4352, 41, 
-    770, 40, 4354, 41, 770, 40, 4355, 41, 770, 40, 4357, 41, 770, 40, 4358, 
-    41, 770, 40, 4359, 41, 770, 40, 4361, 41, 770, 40, 4363, 41, 770, 40, 
-    4364, 41, 770, 40, 4366, 41, 770, 40, 4367, 41, 770, 40, 4368, 41, 770, 
-    40, 4369, 41, 770, 40, 4370, 41, 1026, 40, 4352, 4449, 41, 1026, 40, 
-    4354, 4449, 41, 1026, 40, 4355, 4449, 41, 1026, 40, 4357, 4449, 41, 1026, 
-    40, 4358, 4449, 41, 1026, 40, 4359, 4449, 41, 1026, 40, 4361, 4449, 41, 
-    1026, 40, 4363, 4449, 41, 1026, 40, 4364, 4449, 41, 1026, 40, 4366, 4449, 
-    41, 1026, 40, 4367, 4449, 41, 1026, 40, 4368, 4449, 41, 1026, 40, 4369, 
-    4449, 41, 1026, 40, 4370, 4449, 41, 1026, 40, 4364, 4462, 41, 1794, 40, 
-    4363, 4457, 4364, 4453, 4523, 41, 1538, 40, 4363, 4457, 4370, 4462, 41, 
-    770, 40, 19968, 41, 770, 40, 20108, 41, 770, 40, 19977, 41, 770, 40, 
-    22235, 41, 770, 40, 20116, 41, 770, 40, 20845, 41, 770, 40, 19971, 41, 
-    770, 40, 20843, 41, 770, 40, 20061, 41, 770, 40, 21313, 41, 770, 40, 
-    26376, 41, 770, 40, 28779, 41, 770, 40, 27700, 41, 770, 40, 26408, 41, 
-    770, 40, 37329, 41, 770, 40, 22303, 41, 770, 40, 26085, 41, 770, 40, 
-    26666, 41, 770, 40, 26377, 41, 770, 40, 31038, 41, 770, 40, 21517, 41, 
-    770, 40, 29305, 41, 770, 40, 36001, 41, 770, 40, 31069, 41, 770, 40, 
-    21172, 41, 770, 40, 20195, 41, 770, 40, 21628, 41, 770, 40, 23398, 41, 
-    770, 40, 30435, 41, 770, 40, 20225, 41, 770, 40, 36039, 41, 770, 40, 
-    21332, 41, 770, 40, 31085, 41, 770, 40, 20241, 41, 770, 40, 33258, 41, 
-    770, 40, 33267, 41, 263, 21839, 263, 24188, 263, 25991, 263, 31631, 778, 
-    80, 84, 69, 519, 50, 49, 519, 50, 50, 519, 50, 51, 519, 50, 52, 519, 50, 
-    53, 519, 50, 54, 519, 50, 55, 519, 50, 56, 519, 50, 57, 519, 51, 48, 519, 
-    51, 49, 519, 51, 50, 519, 51, 51, 519, 51, 52, 519, 51, 53, 263, 4352, 
-    263, 4354, 263, 4355, 263, 4357, 263, 4358, 263, 4359, 263, 4361, 263, 
-    4363, 263, 4364, 263, 4366, 263, 4367, 263, 4368, 263, 4369, 263, 4370, 
-    519, 4352, 4449, 519, 4354, 4449, 519, 4355, 4449, 519, 4357, 4449, 519, 
-    4358, 4449, 519, 4359, 4449, 519, 4361, 4449, 519, 4363, 4449, 519, 4364, 
-    4449, 519, 4366, 4449, 519, 4367, 4449, 519, 4368, 4449, 519, 4369, 4449, 
-    519, 4370, 4449, 1287, 4366, 4449, 4535, 4352, 4457, 1031, 4364, 4462, 
-    4363, 4468, 519, 4363, 4462, 263, 19968, 263, 20108, 263, 19977, 263, 
-    22235, 263, 20116, 263, 20845, 263, 19971, 263, 20843, 263, 20061, 263, 
-    21313, 263, 26376, 263, 28779, 263, 27700, 263, 26408, 263, 37329, 263, 
-    22303, 263, 26085, 263, 26666, 263, 26377, 263, 31038, 263, 21517, 263, 
-    29305, 263, 36001, 263, 31069, 263, 21172, 263, 31192, 263, 30007, 263, 
-    22899, 263, 36969, 263, 20778, 263, 21360, 263, 27880, 263, 38917, 263, 
-    20241, 263, 20889, 263, 27491, 263, 19978, 263, 20013, 263, 19979, 263, 
-    24038, 263, 21491, 263, 21307, 263, 23447, 263, 23398, 263, 30435, 263, 
-    20225, 263, 36039, 263, 21332, 263, 22812, 519, 51, 54, 519, 51, 55, 519, 
-    51, 56, 519, 51, 57, 519, 52, 48, 519, 52, 49, 519, 52, 50, 519, 52, 51, 
-    519, 52, 52, 519, 52, 53, 519, 52, 54, 519, 52, 55, 519, 52, 56, 519, 52, 
-    57, 519, 53, 48, 514, 49, 26376, 514, 50, 26376, 514, 51, 26376, 514, 52, 
-    26376, 514, 53, 26376, 514, 54, 26376, 514, 55, 26376, 514, 56, 26376, 
-    514, 57, 26376, 770, 49, 48, 26376, 770, 49, 49, 26376, 770, 49, 50, 
-    26376, 522, 72, 103, 778, 101, 114, 103, 522, 101, 86, 778, 76, 84, 68, 
-    263, 12450, 263, 12452, 263, 12454, 263, 12456, 263, 12458, 263, 12459, 
-    263, 12461, 263, 12463, 263, 12465, 263, 12467, 263, 12469, 263, 12471, 
-    263, 12473, 263, 12475, 263, 12477, 263, 12479, 263, 12481, 263, 12484, 
-    263, 12486, 263, 12488, 263, 12490, 263, 12491, 263, 12492, 263, 12493, 
-    263, 12494, 263, 12495, 263, 12498, 263, 12501, 263, 12504, 263, 12507, 
-    263, 12510, 263, 12511, 263, 12512, 263, 12513, 263, 12514, 263, 12516, 
-    263, 12518, 263, 12520, 263, 12521, 263, 12522, 263, 12523, 263, 12524, 
-    263, 12525, 263, 12527, 263, 12528, 263, 12529, 263, 12530, 1034, 12450, 
-    12497, 12540, 12488, 1034, 12450, 12523, 12501, 12449, 1034, 12450, 
-    12531, 12506, 12450, 778, 12450, 12540, 12523, 1034, 12452, 12491, 12531, 
-    12464, 778, 12452, 12531, 12481, 778, 12454, 12457, 12531, 1290, 12456, 
-    12473, 12463, 12540, 12489, 1034, 12456, 12540, 12459, 12540, 778, 12458, 
-    12531, 12473, 778, 12458, 12540, 12512, 778, 12459, 12452, 12522, 1034, 
-    12459, 12521, 12483, 12488, 1034, 12459, 12525, 12522, 12540, 778, 12460, 
-    12525, 12531, 778, 12460, 12531, 12510, 522, 12462, 12460, 778, 12462, 
-    12491, 12540, 1034, 12461, 12517, 12522, 12540, 1034, 12462, 12523, 
-    12480, 12540, 522, 12461, 12525, 1290, 12461, 12525, 12464, 12521, 12512, 
-    1546, 12461, 12525, 12513, 12540, 12488, 12523, 1290, 12461, 12525, 
-    12527, 12483, 12488, 778, 12464, 12521, 12512, 1290, 12464, 12521, 12512, 
-    12488, 12531, 1290, 12463, 12523, 12476, 12452, 12525, 1034, 12463, 
-    12525, 12540, 12493, 778, 12465, 12540, 12473, 778, 12467, 12523, 12490, 
-    778, 12467, 12540, 12509, 1034, 12469, 12452, 12463, 12523, 1290, 12469, 
-    12531, 12481, 12540, 12512, 1034, 12471, 12522, 12531, 12464, 778, 12475, 
-    12531, 12481, 778, 12475, 12531, 12488, 778, 12480, 12540, 12473, 522, 
-    12487, 12471, 522, 12489, 12523, 522, 12488, 12531, 522, 12490, 12494, 
-    778, 12494, 12483, 12488, 778, 12495, 12452, 12484, 1290, 12497, 12540, 
-    12475, 12531, 12488, 778, 12497, 12540, 12484, 1034, 12496, 12540, 12524, 
-    12523, 1290, 12500, 12450, 12473, 12488, 12523, 778, 12500, 12463, 12523, 
-    522, 12500, 12467, 522, 12499, 12523, 1290, 12501, 12449, 12521, 12483, 
-    12489, 1034, 12501, 12451, 12540, 12488, 1290, 12502, 12483, 12471, 
-    12455, 12523, 778, 12501, 12521, 12531, 1290, 12504, 12463, 12479, 12540, 
-    12523, 522, 12506, 12477, 778, 12506, 12491, 12498, 778, 12504, 12523, 
-    12484, 778, 12506, 12531, 12473, 778, 12506, 12540, 12472, 778, 12505, 
-    12540, 12479, 1034, 12509, 12452, 12531, 12488, 778, 12508, 12523, 12488, 
-    522, 12507, 12531, 778, 12509, 12531, 12489, 778, 12507, 12540, 12523, 
-    778, 12507, 12540, 12531, 1034, 12510, 12452, 12463, 12525, 778, 12510, 
-    12452, 12523, 778, 12510, 12483, 12495, 778, 12510, 12523, 12463, 1290, 
-    12510, 12531, 12471, 12519, 12531, 1034, 12511, 12463, 12525, 12531, 522, 
-    12511, 12522, 1290, 12511, 12522, 12496, 12540, 12523, 522, 12513, 12460, 
-    1034, 12513, 12460, 12488, 12531, 1034, 12513, 12540, 12488, 12523, 778, 
-    12516, 12540, 12489, 778, 12516, 12540, 12523, 778, 12518, 12450, 12531, 
-    1034, 12522, 12483, 12488, 12523, 522, 12522, 12521, 778, 12523, 12500, 
-    12540, 1034, 12523, 12540, 12502, 12523, 522, 12524, 12512, 1290, 12524, 
-    12531, 12488, 12466, 12531, 778, 12527, 12483, 12488, 514, 48, 28857, 
-    514, 49, 28857, 514, 50, 28857, 514, 51, 28857, 514, 52, 28857, 514, 53, 
-    28857, 514, 54, 28857, 514, 55, 28857, 514, 56, 28857, 514, 57, 28857, 
-    770, 49, 48, 28857, 770, 49, 49, 28857, 770, 49, 50, 28857, 770, 49, 51, 
-    28857, 770, 49, 52, 28857, 770, 49, 53, 28857, 770, 49, 54, 28857, 770, 
-    49, 55, 28857, 770, 49, 56, 28857, 770, 49, 57, 28857, 770, 50, 48, 
-    28857, 770, 50, 49, 28857, 770, 50, 50, 28857, 770, 50, 51, 28857, 770, 
-    50, 52, 28857, 778, 104, 80, 97, 522, 100, 97, 522, 65, 85, 778, 98, 97, 
-    114, 522, 111, 86, 522, 112, 99, 522, 100, 109, 778, 100, 109, 178, 778, 
-    100, 109, 179, 522, 73, 85, 522, 24179, 25104, 522, 26157, 21644, 522, 
-    22823, 27491, 522, 26126, 27835, 1034, 26666, 24335, 20250, 31038, 522, 
-    112, 65, 522, 110, 65, 522, 956, 65, 522, 109, 65, 522, 107, 65, 522, 75, 
-    66, 522, 77, 66, 522, 71, 66, 778, 99, 97, 108, 1034, 107, 99, 97, 108, 
-    522, 112, 70, 522, 110, 70, 522, 956, 70, 522, 956, 103, 522, 109, 103, 
-    522, 107, 103, 522, 72, 122, 778, 107, 72, 122, 778, 77, 72, 122, 778, 
-    71, 72, 122, 778, 84, 72, 122, 522, 956, 8467, 522, 109, 8467, 522, 100, 
-    8467, 522, 107, 8467, 522, 102, 109, 522, 110, 109, 522, 956, 109, 522, 
-    109, 109, 522, 99, 109, 522, 107, 109, 778, 109, 109, 178, 778, 99, 109, 
-    178, 522, 109, 178, 778, 107, 109, 178, 778, 109, 109, 179, 778, 99, 109, 
-    179, 522, 109, 179, 778, 107, 109, 179, 778, 109, 8725, 115, 1034, 109, 
-    8725, 115, 178, 522, 80, 97, 778, 107, 80, 97, 778, 77, 80, 97, 778, 71, 
-    80, 97, 778, 114, 97, 100, 1290, 114, 97, 100, 8725, 115, 1546, 114, 97, 
-    100, 8725, 115, 178, 522, 112, 115, 522, 110, 115, 522, 956, 115, 522, 
-    109, 115, 522, 112, 86, 522, 110, 86, 522, 956, 86, 522, 109, 86, 522, 
-    107, 86, 522, 77, 86, 522, 112, 87, 522, 110, 87, 522, 956, 87, 522, 109, 
-    87, 522, 107, 87, 522, 77, 87, 522, 107, 937, 522, 77, 937, 1034, 97, 46, 
-    109, 46, 522, 66, 113, 522, 99, 99, 522, 99, 100, 1034, 67, 8725, 107, 
-    103, 778, 67, 111, 46, 522, 100, 66, 522, 71, 121, 522, 104, 97, 522, 72, 
-    80, 522, 105, 110, 522, 75, 75, 522, 75, 77, 522, 107, 116, 522, 108, 
-    109, 522, 108, 110, 778, 108, 111, 103, 522, 108, 120, 522, 109, 98, 778, 
-    109, 105, 108, 778, 109, 111, 108, 522, 80, 72, 1034, 112, 46, 109, 46, 
-    778, 80, 80, 77, 522, 80, 82, 522, 115, 114, 522, 83, 118, 522, 87, 98, 
-    778, 86, 8725, 109, 778, 65, 8725, 109, 514, 49, 26085, 514, 50, 26085, 
-    514, 51, 26085, 514, 52, 26085, 514, 53, 26085, 514, 54, 26085, 514, 55, 
-    26085, 514, 56, 26085, 514, 57, 26085, 770, 49, 48, 26085, 770, 49, 49, 
-    26085, 770, 49, 50, 26085, 770, 49, 51, 26085, 770, 49, 52, 26085, 770, 
-    49, 53, 26085, 770, 49, 54, 26085, 770, 49, 55, 26085, 770, 49, 56, 
-    26085, 770, 49, 57, 26085, 770, 50, 48, 26085, 770, 50, 49, 26085, 770, 
-    50, 50, 26085, 770, 50, 51, 26085, 770, 50, 52, 26085, 770, 50, 53, 
-    26085, 770, 50, 54, 26085, 770, 50, 55, 26085, 770, 50, 56, 26085, 770, 
-    50, 57, 26085, 770, 51, 48, 26085, 770, 51, 49, 26085, 778, 103, 97, 108, 
-    259, 42863, 256, 35912, 256, 26356, 256, 36554, 256, 36040, 256, 28369, 
-    256, 20018, 256, 21477, 256, 40860, 256, 40860, 256, 22865, 256, 37329, 
-    256, 21895, 256, 22856, 256, 25078, 256, 30313, 256, 32645, 256, 34367, 
-    256, 34746, 256, 35064, 256, 37007, 256, 27138, 256, 27931, 256, 28889, 
-    256, 29662, 256, 33853, 256, 37226, 256, 39409, 256, 20098, 256, 21365, 
-    256, 27396, 256, 29211, 256, 34349, 256, 40478, 256, 23888, 256, 28651, 
-    256, 34253, 256, 35172, 256, 25289, 256, 33240, 256, 34847, 256, 24266, 
-    256, 26391, 256, 28010, 256, 29436, 256, 37070, 256, 20358, 256, 20919, 
-    256, 21214, 256, 25796, 256, 27347, 256, 29200, 256, 30439, 256, 32769, 
-    256, 34310, 256, 34396, 256, 36335, 256, 38706, 256, 39791, 256, 40442, 
-    256, 30860, 256, 31103, 256, 32160, 256, 33737, 256, 37636, 256, 40575, 
-    256, 35542, 256, 22751, 256, 24324, 256, 31840, 256, 32894, 256, 29282, 
-    256, 30922, 256, 36034, 256, 38647, 256, 22744, 256, 23650, 256, 27155, 
-    256, 28122, 256, 28431, 256, 32047, 256, 32311, 256, 38475, 256, 21202, 
-    256, 32907, 256, 20956, 256, 20940, 256, 31260, 256, 32190, 256, 33777, 
-    256, 38517, 256, 35712, 256, 25295, 256, 27138, 256, 35582, 256, 20025, 
-    256, 23527, 256, 24594, 256, 29575, 256, 30064, 256, 21271, 256, 30971, 
-    256, 20415, 256, 24489, 256, 19981, 256, 27852, 256, 25976, 256, 32034, 
-    256, 21443, 256, 22622, 256, 30465, 256, 33865, 256, 35498, 256, 27578, 
-    256, 36784, 256, 27784, 256, 25342, 256, 33509, 256, 25504, 256, 30053, 
-    256, 20142, 256, 20841, 256, 20937, 256, 26753, 256, 31975, 256, 33391, 
-    256, 35538, 256, 37327, 256, 21237, 256, 21570, 256, 22899, 256, 24300, 
-    256, 26053, 256, 28670, 256, 31018, 256, 38317, 256, 39530, 256, 40599, 
-    256, 40654, 256, 21147, 256, 26310, 256, 27511, 256, 36706, 256, 24180, 
-    256, 24976, 256, 25088, 256, 25754, 256, 28451, 256, 29001, 256, 29833, 
-    256, 31178, 256, 32244, 256, 32879, 256, 36646, 256, 34030, 256, 36899, 
-    256, 37706, 256, 21015, 256, 21155, 256, 21693, 256, 28872, 256, 35010, 
-    256, 35498, 256, 24265, 256, 24565, 256, 25467, 256, 27566, 256, 31806, 
-    256, 29557, 256, 20196, 256, 22265, 256, 23527, 256, 23994, 256, 24604, 
-    256, 29618, 256, 29801, 256, 32666, 256, 32838, 256, 37428, 256, 38646, 
-    256, 38728, 256, 38936, 256, 20363, 256, 31150, 256, 37300, 256, 38584, 
-    256, 24801, 256, 20102, 256, 20698, 256, 23534, 256, 23615, 256, 26009, 
-    256, 27138, 256, 29134, 256, 30274, 256, 34044, 256, 36988, 256, 40845, 
-    256, 26248, 256, 38446, 256, 21129, 256, 26491, 256, 26611, 256, 27969, 
-    256, 28316, 256, 29705, 256, 30041, 256, 30827, 256, 32016, 256, 39006, 
-    256, 20845, 256, 25134, 256, 38520, 256, 20523, 256, 23833, 256, 28138, 
-    256, 36650, 256, 24459, 256, 24900, 256, 26647, 256, 29575, 256, 38534, 
-    256, 21033, 256, 21519, 256, 23653, 256, 26131, 256, 26446, 256, 26792, 
-    256, 27877, 256, 29702, 256, 30178, 256, 32633, 256, 35023, 256, 35041, 
-    256, 37324, 256, 38626, 256, 21311, 256, 28346, 256, 21533, 256, 29136, 
-    256, 29848, 256, 34298, 256, 38563, 256, 40023, 256, 40607, 256, 26519, 
-    256, 28107, 256, 33256, 256, 31435, 256, 31520, 256, 31890, 256, 29376, 
-    256, 28825, 256, 35672, 256, 20160, 256, 33590, 256, 21050, 256, 20999, 
-    256, 24230, 256, 25299, 256, 31958, 256, 23429, 256, 27934, 256, 26292, 
-    256, 36667, 256, 34892, 256, 38477, 256, 35211, 256, 24275, 256, 20800, 
-    256, 21952, 256, 22618, 256, 26228, 256, 20958, 256, 29482, 256, 30410, 
-    256, 31036, 256, 31070, 256, 31077, 256, 31119, 256, 38742, 256, 31934, 
-    256, 32701, 256, 34322, 256, 35576, 256, 36920, 256, 37117, 256, 39151, 
-    256, 39164, 256, 39208, 256, 40372, 256, 20398, 256, 20711, 256, 20813, 
-    256, 21193, 256, 21220, 256, 21329, 256, 21917, 256, 22022, 256, 22120, 
-    256, 22592, 256, 22696, 256, 23652, 256, 23662, 256, 24724, 256, 24936, 
-    256, 24974, 256, 25074, 256, 25935, 256, 26082, 256, 26257, 256, 26757, 
-    256, 28023, 256, 28186, 256, 28450, 256, 29038, 256, 29227, 256, 29730, 
-    256, 30865, 256, 31038, 256, 31049, 256, 31048, 256, 31056, 256, 31062, 
-    256, 31069, 256, 31117, 256, 31118, 256, 31296, 256, 31361, 256, 31680, 
-    256, 32244, 256, 32265, 256, 32321, 256, 32626, 256, 32773, 256, 33261, 
-    256, 33401, 256, 33401, 256, 33879, 256, 35088, 256, 35222, 256, 35585, 
-    256, 35641, 256, 36051, 256, 36104, 256, 36790, 256, 36920, 256, 38627, 
-    256, 38911, 256, 38971, 256, 24693, 256, 148206, 256, 33304, 256, 20006, 
-    256, 20917, 256, 20840, 256, 20352, 256, 20805, 256, 20864, 256, 21191, 
-    256, 21242, 256, 21917, 256, 21845, 256, 21913, 256, 21986, 256, 22618, 
-    256, 22707, 256, 22852, 256, 22868, 256, 23138, 256, 23336, 256, 24274, 
-    256, 24281, 256, 24425, 256, 24493, 256, 24792, 256, 24910, 256, 24840, 
-    256, 24974, 256, 24928, 256, 25074, 256, 25140, 256, 25540, 256, 25628, 
-    256, 25682, 256, 25942, 256, 26228, 256, 26391, 256, 26395, 256, 26454, 
-    256, 27513, 256, 27578, 256, 27969, 256, 28379, 256, 28363, 256, 28450, 
-    256, 28702, 256, 29038, 256, 30631, 256, 29237, 256, 29359, 256, 29482, 
-    256, 29809, 256, 29958, 256, 30011, 256, 30237, 256, 30239, 256, 30410, 
-    256, 30427, 256, 30452, 256, 30538, 256, 30528, 256, 30924, 256, 31409, 
-    256, 31680, 256, 31867, 256, 32091, 256, 32244, 256, 32574, 256, 32773, 
-    256, 33618, 256, 33775, 256, 34681, 256, 35137, 256, 35206, 256, 35222, 
-    256, 35519, 256, 35576, 256, 35531, 256, 35585, 256, 35582, 256, 35565, 
-    256, 35641, 256, 35722, 256, 36104, 256, 36664, 256, 36978, 256, 37273, 
-    256, 37494, 256, 38524, 256, 38627, 256, 38742, 256, 38875, 256, 38911, 
-    256, 38923, 256, 38971, 256, 39698, 256, 40860, 256, 141386, 256, 141380, 
-    256, 144341, 256, 15261, 256, 16408, 256, 16441, 256, 152137, 256, 
-    154832, 256, 163539, 256, 40771, 256, 40846, 514, 102, 102, 514, 102, 
-    105, 514, 102, 108, 770, 102, 102, 105, 770, 102, 102, 108, 514, 383, 
-    116, 514, 115, 116, 514, 1396, 1398, 514, 1396, 1381, 514, 1396, 1387, 
-    514, 1406, 1398, 514, 1396, 1389, 512, 1497, 1460, 512, 1522, 1463, 262, 
-    1506, 262, 1488, 262, 1491, 262, 1492, 262, 1499, 262, 1500, 262, 1501, 
-    262, 1512, 262, 1514, 262, 43, 512, 1513, 1473, 512, 1513, 1474, 512, 
-    64329, 1473, 512, 64329, 1474, 512, 1488, 1463, 512, 1488, 1464, 512, 
-    1488, 1468, 512, 1489, 1468, 512, 1490, 1468, 512, 1491, 1468, 512, 1492, 
-    1468, 512, 1493, 1468, 512, 1494, 1468, 512, 1496, 1468, 512, 1497, 1468, 
-    512, 1498, 1468, 512, 1499, 1468, 512, 1500, 1468, 512, 1502, 1468, 512, 
-    1504, 1468, 512, 1505, 1468, 512, 1507, 1468, 512, 1508, 1468, 512, 1510, 
-    1468, 512, 1511, 1468, 512, 1512, 1468, 512, 1513, 1468, 512, 1514, 1468, 
-    512, 1493, 1465, 512, 1489, 1471, 512, 1499, 1471, 512, 1508, 1471, 514, 
-    1488, 1500, 267, 1649, 268, 1649, 267, 1659, 268, 1659, 269, 1659, 270, 
-    1659, 267, 1662, 268, 1662, 269, 1662, 270, 1662, 267, 1664, 268, 1664, 
-    269, 1664, 270, 1664, 267, 1658, 268, 1658, 269, 1658, 270, 1658, 267, 
-    1663, 268, 1663, 269, 1663, 270, 1663, 267, 1657, 268, 1657, 269, 1657, 
-    270, 1657, 267, 1700, 268, 1700, 269, 1700, 270, 1700, 267, 1702, 268, 
-    1702, 269, 1702, 270, 1702, 267, 1668, 268, 1668, 269, 1668, 270, 1668, 
-    267, 1667, 268, 1667, 269, 1667, 270, 1667, 267, 1670, 268, 1670, 269, 
-    1670, 270, 1670, 267, 1671, 268, 1671, 269, 1671, 270, 1671, 267, 1677, 
-    268, 1677, 267, 1676, 268, 1676, 267, 1678, 268, 1678, 267, 1672, 268, 
-    1672, 267, 1688, 268, 1688, 267, 1681, 268, 1681, 267, 1705, 268, 1705, 
-    269, 1705, 270, 1705, 267, 1711, 268, 1711, 269, 1711, 270, 1711, 267, 
-    1715, 268, 1715, 269, 1715, 270, 1715, 267, 1713, 268, 1713, 269, 1713, 
-    270, 1713, 267, 1722, 268, 1722, 267, 1723, 268, 1723, 269, 1723, 270, 
-    1723, 267, 1728, 268, 1728, 267, 1729, 268, 1729, 269, 1729, 270, 1729, 
-    267, 1726, 268, 1726, 269, 1726, 270, 1726, 267, 1746, 268, 1746, 267, 
-    1747, 268, 1747, 267, 1709, 268, 1709, 269, 1709, 270, 1709, 267, 1735, 
-    268, 1735, 267, 1734, 268, 1734, 267, 1736, 268, 1736, 267, 1655, 267, 
-    1739, 268, 1739, 267, 1733, 268, 1733, 267, 1737, 268, 1737, 267, 1744, 
-    268, 1744, 269, 1744, 270, 1744, 269, 1609, 270, 1609, 523, 1574, 1575, 
-    524, 1574, 1575, 523, 1574, 1749, 524, 1574, 1749, 523, 1574, 1608, 524, 
-    1574, 1608, 523, 1574, 1735, 524, 1574, 1735, 523, 1574, 1734, 524, 1574, 
-    1734, 523, 1574, 1736, 524, 1574, 1736, 523, 1574, 1744, 524, 1574, 1744, 
-    525, 1574, 1744, 523, 1574, 1609, 524, 1574, 1609, 525, 1574, 1609, 267, 
-    1740, 268, 1740, 269, 1740, 270, 1740, 523, 1574, 1580, 523, 1574, 1581, 
-    523, 1574, 1605, 523, 1574, 1609, 523, 1574, 1610, 523, 1576, 1580, 523, 
-    1576, 1581, 523, 1576, 1582, 523, 1576, 1605, 523, 1576, 1609, 523, 1576, 
-    1610, 523, 1578, 1580, 523, 1578, 1581, 523, 1578, 1582, 523, 1578, 1605, 
-    523, 1578, 1609, 523, 1578, 1610, 523, 1579, 1580, 523, 1579, 1605, 523, 
-    1579, 1609, 523, 1579, 1610, 523, 1580, 1581, 523, 1580, 1605, 523, 1581, 
-    1580, 523, 1581, 1605, 523, 1582, 1580, 523, 1582, 1581, 523, 1582, 1605, 
-    523, 1587, 1580, 523, 1587, 1581, 523, 1587, 1582, 523, 1587, 1605, 523, 
-    1589, 1581, 523, 1589, 1605, 523, 1590, 1580, 523, 1590, 1581, 523, 1590, 
-    1582, 523, 1590, 1605, 523, 1591, 1581, 523, 1591, 1605, 523, 1592, 1605, 
-    523, 1593, 1580, 523, 1593, 1605, 523, 1594, 1580, 523, 1594, 1605, 523, 
-    1601, 1580, 523, 1601, 1581, 523, 1601, 1582, 523, 1601, 1605, 523, 1601, 
-    1609, 523, 1601, 1610, 523, 1602, 1581, 523, 1602, 1605, 523, 1602, 1609, 
-    523, 1602, 1610, 523, 1603, 1575, 523, 1603, 1580, 523, 1603, 1581, 523, 
-    1603, 1582, 523, 1603, 1604, 523, 1603, 1605, 523, 1603, 1609, 523, 1603, 
-    1610, 523, 1604, 1580, 523, 1604, 1581, 523, 1604, 1582, 523, 1604, 1605, 
-    523, 1604, 1609, 523, 1604, 1610, 523, 1605, 1580, 523, 1605, 1581, 523, 
-    1605, 1582, 523, 1605, 1605, 523, 1605, 1609, 523, 1605, 1610, 523, 1606, 
-    1580, 523, 1606, 1581, 523, 1606, 1582, 523, 1606, 1605, 523, 1606, 1609, 
-    523, 1606, 1610, 523, 1607, 1580, 523, 1607, 1605, 523, 1607, 1609, 523, 
-    1607, 1610, 523, 1610, 1580, 523, 1610, 1581, 523, 1610, 1582, 523, 1610, 
-    1605, 523, 1610, 1609, 523, 1610, 1610, 523, 1584, 1648, 523, 1585, 1648, 
-    523, 1609, 1648, 779, 32, 1612, 1617, 779, 32, 1613, 1617, 779, 32, 1614, 
-    1617, 779, 32, 1615, 1617, 779, 32, 1616, 1617, 779, 32, 1617, 1648, 524, 
-    1574, 1585, 524, 1574, 1586, 524, 1574, 1605, 524, 1574, 1606, 524, 1574, 
-    1609, 524, 1574, 1610, 524, 1576, 1585, 524, 1576, 1586, 524, 1576, 1605, 
-    524, 1576, 1606, 524, 1576, 1609, 524, 1576, 1610, 524, 1578, 1585, 524, 
-    1578, 1586, 524, 1578, 1605, 524, 1578, 1606, 524, 1578, 1609, 524, 1578, 
-    1610, 524, 1579, 1585, 524, 1579, 1586, 524, 1579, 1605, 524, 1579, 1606, 
-    524, 1579, 1609, 524, 1579, 1610, 524, 1601, 1609, 524, 1601, 1610, 524, 
-    1602, 1609, 524, 1602, 1610, 524, 1603, 1575, 524, 1603, 1604, 524, 1603, 
-    1605, 524, 1603, 1609, 524, 1603, 1610, 524, 1604, 1605, 524, 1604, 1609, 
-    524, 1604, 1610, 524, 1605, 1575, 524, 1605, 1605, 524, 1606, 1585, 524, 
-    1606, 1586, 524, 1606, 1605, 524, 1606, 1606, 524, 1606, 1609, 524, 1606, 
-    1610, 524, 1609, 1648, 524, 1610, 1585, 524, 1610, 1586, 524, 1610, 1605, 
-    524, 1610, 1606, 524, 1610, 1609, 524, 1610, 1610, 525, 1574, 1580, 525, 
-    1574, 1581, 525, 1574, 1582, 525, 1574, 1605, 525, 1574, 1607, 525, 1576, 
-    1580, 525, 1576, 1581, 525, 1576, 1582, 525, 1576, 1605, 525, 1576, 1607, 
-    525, 1578, 1580, 525, 1578, 1581, 525, 1578, 1582, 525, 1578, 1605, 525, 
-    1578, 1607, 525, 1579, 1605, 525, 1580, 1581, 525, 1580, 1605, 525, 1581, 
-    1580, 525, 1581, 1605, 525, 1582, 1580, 525, 1582, 1605, 525, 1587, 1580, 
-    525, 1587, 1581, 525, 1587, 1582, 525, 1587, 1605, 525, 1589, 1581, 525, 
-    1589, 1582, 525, 1589, 1605, 525, 1590, 1580, 525, 1590, 1581, 525, 1590, 
-    1582, 525, 1590, 1605, 525, 1591, 1581, 525, 1592, 1605, 525, 1593, 1580, 
-    525, 1593, 1605, 525, 1594, 1580, 525, 1594, 1605, 525, 1601, 1580, 525, 
-    1601, 1581, 525, 1601, 1582, 525, 1601, 1605, 525, 1602, 1581, 525, 1602, 
-    1605, 525, 1603, 1580, 525, 1603, 1581, 525, 1603, 1582, 525, 1603, 1604, 
-    525, 1603, 1605, 525, 1604, 1580, 525, 1604, 1581, 525, 1604, 1582, 525, 
-    1604, 1605, 525, 1604, 1607, 525, 1605, 1580, 525, 1605, 1581, 525, 1605, 
-    1582, 525, 1605, 1605, 525, 1606, 1580, 525, 1606, 1581, 525, 1606, 1582, 
-    525, 1606, 1605, 525, 1606, 1607, 525, 1607, 1580, 525, 1607, 1605, 525, 
-    1607, 1648, 525, 1610, 1580, 525, 1610, 1581, 525, 1610, 1582, 525, 1610, 
-    1605, 525, 1610, 1607, 526, 1574, 1605, 526, 1574, 1607, 526, 1576, 1605, 
-    526, 1576, 1607, 526, 1578, 1605, 526, 1578, 1607, 526, 1579, 1605, 526, 
-    1579, 1607, 526, 1587, 1605, 526, 1587, 1607, 526, 1588, 1605, 526, 1588, 
-    1607, 526, 1603, 1604, 526, 1603, 1605, 526, 1604, 1605, 526, 1606, 1605, 
-    526, 1606, 1607, 526, 1610, 1605, 526, 1610, 1607, 782, 1600, 1614, 1617, 
-    782, 1600, 1615, 1617, 782, 1600, 1616, 1617, 523, 1591, 1609, 523, 1591, 
-    1610, 523, 1593, 1609, 523, 1593, 1610, 523, 1594, 1609, 523, 1594, 1610, 
-    523, 1587, 1609, 523, 1587, 1610, 523, 1588, 1609, 523, 1588, 1610, 523, 
-    1581, 1609, 523, 1581, 1610, 523, 1580, 1609, 523, 1580, 1610, 523, 1582, 
-    1609, 523, 1582, 1610, 523, 1589, 1609, 523, 1589, 1610, 523, 1590, 1609, 
-    523, 1590, 1610, 523, 1588, 1580, 523, 1588, 1581, 523, 1588, 1582, 523, 
-    1588, 1605, 523, 1588, 1585, 523, 1587, 1585, 523, 1589, 1585, 523, 1590, 
-    1585, 524, 1591, 1609, 524, 1591, 1610, 524, 1593, 1609, 524, 1593, 1610, 
-    524, 1594, 1609, 524, 1594, 1610, 524, 1587, 1609, 524, 1587, 1610, 524, 
-    1588, 1609, 524, 1588, 1610, 524, 1581, 1609, 524, 1581, 1610, 524, 1580, 
-    1609, 524, 1580, 1610, 524, 1582, 1609, 524, 1582, 1610, 524, 1589, 1609, 
-    524, 1589, 1610, 524, 1590, 1609, 524, 1590, 1610, 524, 1588, 1580, 524, 
-    1588, 1581, 524, 1588, 1582, 524, 1588, 1605, 524, 1588, 1585, 524, 1587, 
-    1585, 524, 1589, 1585, 524, 1590, 1585, 525, 1588, 1580, 525, 1588, 1581, 
-    525, 1588, 1582, 525, 1588, 1605, 525, 1587, 1607, 525, 1588, 1607, 525, 
-    1591, 1605, 526, 1587, 1580, 526, 1587, 1581, 526, 1587, 1582, 526, 1588, 
-    1580, 526, 1588, 1581, 526, 1588, 1582, 526, 1591, 1605, 526, 1592, 1605, 
-    524, 1575, 1611, 523, 1575, 1611, 781, 1578, 1580, 1605, 780, 1578, 1581, 
-    1580, 781, 1578, 1581, 1580, 781, 1578, 1581, 1605, 781, 1578, 1582, 
-    1605, 781, 1578, 1605, 1580, 781, 1578, 1605, 1581, 781, 1578, 1605, 
-    1582, 780, 1580, 1605, 1581, 781, 1580, 1605, 1581, 780, 1581, 1605, 
-    1610, 780, 1581, 1605, 1609, 781, 1587, 1581, 1580, 781, 1587, 1580, 
-    1581, 780, 1587, 1580, 1609, 780, 1587, 1605, 1581, 781, 1587, 1605, 
-    1581, 781, 1587, 1605, 1580, 780, 1587, 1605, 1605, 781, 1587, 1605, 
-    1605, 780, 1589, 1581, 1581, 781, 1589, 1581, 1581, 780, 1589, 1605, 
-    1605, 780, 1588, 1581, 1605, 781, 1588, 1581, 1605, 780, 1588, 1580, 
-    1610, 780, 1588, 1605, 1582, 781, 1588, 1605, 1582, 780, 1588, 1605, 
-    1605, 781, 1588, 1605, 1605, 780, 1590, 1581, 1609, 780, 1590, 1582, 
-    1605, 781, 1590, 1582, 1605, 780, 1591, 1605, 1581, 781, 1591, 1605, 
-    1581, 781, 1591, 1605, 1605, 780, 1591, 1605, 1610, 780, 1593, 1580, 
-    1605, 780, 1593, 1605, 1605, 781, 1593, 1605, 1605, 780, 1593, 1605, 
-    1609, 780, 1594, 1605, 1605, 780, 1594, 1605, 1610, 780, 1594, 1605, 
-    1609, 780, 1601, 1582, 1605, 781, 1601, 1582, 1605, 780, 1602, 1605, 
-    1581, 780, 1602, 1605, 1605, 780, 1604, 1581, 1605, 780, 1604, 1581, 
-    1610, 780, 1604, 1581, 1609, 781, 1604, 1580, 1580, 780, 1604, 1580, 
-    1580, 780, 1604, 1582, 1605, 781, 1604, 1582, 1605, 780, 1604, 1605, 
-    1581, 781, 1604, 1605, 1581, 781, 1605, 1581, 1580, 781, 1605, 1581, 
-    1605, 780, 1605, 1581, 1610, 781, 1605, 1580, 1581, 781, 1605, 1580, 
-    1605, 781, 1605, 1582, 1580, 781, 1605, 1582, 1605, 781, 1605, 1580, 
-    1582, 781, 1607, 1605, 1580, 781, 1607, 1605, 1605, 781, 1606, 1581, 
-    1605, 780, 1606, 1581, 1609, 780, 1606, 1580, 1605, 781, 1606, 1580, 
-    1605, 780, 1606, 1580, 1609, 780, 1606, 1605, 1610, 780, 1606, 1605, 
-    1609, 780, 1610, 1605, 1605, 781, 1610, 1605, 1605, 780, 1576, 1582, 
-    1610, 780, 1578, 1580, 1610, 780, 1578, 1580, 1609, 780, 1578, 1582, 
-    1610, 780, 1578, 1582, 1609, 780, 1578, 1605, 1610, 780, 1578, 1605, 
-    1609, 780, 1580, 1605, 1610, 780, 1580, 1581, 1609, 780, 1580, 1605, 
-    1609, 780, 1587, 1582, 1609, 780, 1589, 1581, 1610, 780, 1588, 1581, 
-    1610, 780, 1590, 1581, 1610, 780, 1604, 1580, 1610, 780, 1604, 1605, 
-    1610, 780, 1610, 1581, 1610, 780, 1610, 1580, 1610, 780, 1610, 1605, 
-    1610, 780, 1605, 1605, 1610, 780, 1602, 1605, 1610, 780, 1606, 1581, 
-    1610, 781, 1602, 1605, 1581, 781, 1604, 1581, 1605, 780, 1593, 1605, 
-    1610, 780, 1603, 1605, 1610, 781, 1606, 1580, 1581, 780, 1605, 1582, 
-    1610, 781, 1604, 1580, 1605, 780, 1603, 1605, 1605, 780, 1604, 1580, 
-    1605, 780, 1606, 1580, 1581, 780, 1580, 1581, 1610, 780, 1581, 1580, 
-    1610, 780, 1605, 1580, 1610, 780, 1601, 1605, 1610, 780, 1576, 1581, 
-    1610, 781, 1603, 1605, 1605, 781, 1593, 1580, 1605, 781, 1589, 1605, 
-    1605, 780, 1587, 1582, 1610, 780, 1606, 1580, 1610, 779, 1589, 1604, 
-    1746, 779, 1602, 1604, 1746, 1035, 1575, 1604, 1604, 1607, 1035, 1575, 
-    1603, 1576, 1585, 1035, 1605, 1581, 1605, 1583, 1035, 1589, 1604, 1593, 
-    1605, 1035, 1585, 1587, 1608, 1604, 1035, 1593, 1604, 1610, 1607, 1035, 
-    1608, 1587, 1604, 1605, 779, 1589, 1604, 1609, 4619, 1589, 1604, 1609, 
-    32, 1575, 1604, 1604, 1607, 32, 1593, 1604, 1610, 1607, 32, 1608, 1587, 
-    1604, 1605, 2059, 1580, 1604, 32, 1580, 1604, 1575, 1604, 1607, 1035, 
-    1585, 1740, 1575, 1604, 265, 44, 265, 12289, 265, 12290, 265, 58, 265, 
-    59, 265, 33, 265, 63, 265, 12310, 265, 12311, 265, 8230, 265, 8229, 265, 
-    8212, 265, 8211, 265, 95, 265, 95, 265, 40, 265, 41, 265, 123, 265, 125, 
-    265, 12308, 265, 12309, 265, 12304, 265, 12305, 265, 12298, 265, 12299, 
-    265, 12296, 265, 12297, 265, 12300, 265, 12301, 265, 12302, 265, 12303, 
-    265, 91, 265, 93, 258, 8254, 258, 8254, 258, 8254, 258, 8254, 258, 95, 
-    258, 95, 258, 95, 271, 44, 271, 12289, 271, 46, 271, 59, 271, 58, 271, 
-    63, 271, 33, 271, 8212, 271, 40, 271, 41, 271, 123, 271, 125, 271, 12308, 
-    271, 12309, 271, 35, 271, 38, 271, 42, 271, 43, 271, 45, 271, 60, 271, 
-    62, 271, 61, 271, 92, 271, 36, 271, 37, 271, 64, 523, 32, 1611, 526, 
-    1600, 1611, 523, 32, 1612, 523, 32, 1613, 523, 32, 1614, 526, 1600, 1614, 
-    523, 32, 1615, 526, 1600, 1615, 523, 32, 1616, 526, 1600, 1616, 523, 32, 
-    1617, 526, 1600, 1617, 523, 32, 1618, 526, 1600, 1618, 267, 1569, 267, 
-    1570, 268, 1570, 267, 1571, 268, 1571, 267, 1572, 268, 1572, 267, 1573, 
-    268, 1573, 267, 1574, 268, 1574, 269, 1574, 270, 1574, 267, 1575, 268, 
-    1575, 267, 1576, 268, 1576, 269, 1576, 270, 1576, 267, 1577, 268, 1577, 
-    267, 1578, 268, 1578, 269, 1578, 270, 1578, 267, 1579, 268, 1579, 269, 
-    1579, 270, 1579, 267, 1580, 268, 1580, 269, 1580, 270, 1580, 267, 1581, 
-    268, 1581, 269, 1581, 270, 1581, 267, 1582, 268, 1582, 269, 1582, 270, 
-    1582, 267, 1583, 268, 1583, 267, 1584, 268, 1584, 267, 1585, 268, 1585, 
-    267, 1586, 268, 1586, 267, 1587, 268, 1587, 269, 1587, 270, 1587, 267, 
-    1588, 268, 1588, 269, 1588, 270, 1588, 267, 1589, 268, 1589, 269, 1589, 
-    270, 1589, 267, 1590, 268, 1590, 269, 1590, 270, 1590, 267, 1591, 268, 
-    1591, 269, 1591, 270, 1591, 267, 1592, 268, 1592, 269, 1592, 270, 1592, 
-    267, 1593, 268, 1593, 269, 1593, 270, 1593, 267, 1594, 268, 1594, 269, 
-    1594, 270, 1594, 267, 1601, 268, 1601, 269, 1601, 270, 1601, 267, 1602, 
-    268, 1602, 269, 1602, 270, 1602, 267, 1603, 268, 1603, 269, 1603, 270, 
-    1603, 267, 1604, 268, 1604, 269, 1604, 270, 1604, 267, 1605, 268, 1605, 
-    269, 1605, 270, 1605, 267, 1606, 268, 1606, 269, 1606, 270, 1606, 267, 
-    1607, 268, 1607, 269, 1607, 270, 1607, 267, 1608, 268, 1608, 267, 1609, 
-    268, 1609, 267, 1610, 268, 1610, 269, 1610, 270, 1610, 523, 1604, 1570, 
-    524, 1604, 1570, 523, 1604, 1571, 524, 1604, 1571, 523, 1604, 1573, 524, 
-    1604, 1573, 523, 1604, 1575, 524, 1604, 1575, 264, 33, 264, 34, 264, 35, 
-    264, 36, 264, 37, 264, 38, 264, 39, 264, 40, 264, 41, 264, 42, 264, 43, 
-    264, 44, 264, 45, 264, 46, 264, 47, 264, 48, 264, 49, 264, 50, 264, 51, 
-    264, 52, 264, 53, 264, 54, 264, 55, 264, 56, 264, 57, 264, 58, 264, 59, 
-    264, 60, 264, 61, 264, 62, 264, 63, 264, 64, 264, 65, 264, 66, 264, 67, 
-    264, 68, 264, 69, 264, 70, 264, 71, 264, 72, 264, 73, 264, 74, 264, 75, 
-    264, 76, 264, 77, 264, 78, 264, 79, 264, 80, 264, 81, 264, 82, 264, 83, 
-    264, 84, 264, 85, 264, 86, 264, 87, 264, 88, 264, 89, 264, 90, 264, 91, 
-    264, 92, 264, 93, 264, 94, 264, 95, 264, 96, 264, 97, 264, 98, 264, 99, 
-    264, 100, 264, 101, 264, 102, 264, 103, 264, 104, 264, 105, 264, 106, 
-    264, 107, 264, 108, 264, 109, 264, 110, 264, 111, 264, 112, 264, 113, 
-    264, 114, 264, 115, 264, 116, 264, 117, 264, 118, 264, 119, 264, 120, 
-    264, 121, 264, 122, 264, 123, 264, 124, 264, 125, 264, 126, 264, 10629, 
-    264, 10630, 272, 12290, 272, 12300, 272, 12301, 272, 12289, 272, 12539, 
-    272, 12530, 272, 12449, 272, 12451, 272, 12453, 272, 12455, 272, 12457, 
-    272, 12515, 272, 12517, 272, 12519, 272, 12483, 272, 12540, 272, 12450, 
-    272, 12452, 272, 12454, 272, 12456, 272, 12458, 272, 12459, 272, 12461, 
-    272, 12463, 272, 12465, 272, 12467, 272, 12469, 272, 12471, 272, 12473, 
-    272, 12475, 272, 12477, 272, 12479, 272, 12481, 272, 12484, 272, 12486, 
-    272, 12488, 272, 12490, 272, 12491, 272, 12492, 272, 12493, 272, 12494, 
-    272, 12495, 272, 12498, 272, 12501, 272, 12504, 272, 12507, 272, 12510, 
-    272, 12511, 272, 12512, 272, 12513, 272, 12514, 272, 12516, 272, 12518, 
-    272, 12520, 272, 12521, 272, 12522, 272, 12523, 272, 12524, 272, 12525, 
-    272, 12527, 272, 12531, 272, 12441, 272, 12442, 272, 12644, 272, 12593, 
-    272, 12594, 272, 12595, 272, 12596, 272, 12597, 272, 12598, 272, 12599, 
-    272, 12600, 272, 12601, 272, 12602, 272, 12603, 272, 12604, 272, 12605, 
-    272, 12606, 272, 12607, 272, 12608, 272, 12609, 272, 12610, 272, 12611, 
-    272, 12612, 272, 12613, 272, 12614, 272, 12615, 272, 12616, 272, 12617, 
-    272, 12618, 272, 12619, 272, 12620, 272, 12621, 272, 12622, 272, 12623, 
-    272, 12624, 272, 12625, 272, 12626, 272, 12627, 272, 12628, 272, 12629, 
-    272, 12630, 272, 12631, 272, 12632, 272, 12633, 272, 12634, 272, 12635, 
-    272, 12636, 272, 12637, 272, 12638, 272, 12639, 272, 12640, 272, 12641, 
-    272, 12642, 272, 12643, 264, 162, 264, 163, 264, 172, 264, 175, 264, 166, 
-    264, 165, 264, 8361, 272, 9474, 272, 8592, 272, 8593, 272, 8594, 272, 
-    8595, 272, 9632, 272, 9675, 512, 69785, 69818, 512, 69787, 69818, 512, 
-    69797, 69818, 512, 119127, 119141, 512, 119128, 119141, 512, 119135, 
-    119150, 512, 119135, 119151, 512, 119135, 119152, 512, 119135, 119153, 
-    512, 119135, 119154, 512, 119225, 119141, 512, 119226, 119141, 512, 
-    119227, 119150, 512, 119228, 119150, 512, 119227, 119151, 512, 119228, 
-    119151, 262, 65, 262, 66, 262, 67, 262, 68, 262, 69, 262, 70, 262, 71, 
-    262, 72, 262, 73, 262, 74, 262, 75, 262, 76, 262, 77, 262, 78, 262, 79, 
-    262, 80, 262, 81, 262, 82, 262, 83, 262, 84, 262, 85, 262, 86, 262, 87, 
-    262, 88, 262, 89, 262, 90, 262, 97, 262, 98, 262, 99, 262, 100, 262, 101, 
-    262, 102, 262, 103, 262, 104, 262, 105, 262, 106, 262, 107, 262, 108, 
-    262, 109, 262, 110, 262, 111, 262, 112, 262, 113, 262, 114, 262, 115, 
-    262, 116, 262, 117, 262, 118, 262, 119, 262, 120, 262, 121, 262, 122, 
-    262, 65, 262, 66, 262, 67, 262, 68, 262, 69, 262, 70, 262, 71, 262, 72, 
-    262, 73, 262, 74, 262, 75, 262, 76, 262, 77, 262, 78, 262, 79, 262, 80, 
-    262, 81, 262, 82, 262, 83, 262, 84, 262, 85, 262, 86, 262, 87, 262, 88, 
-    262, 89, 262, 90, 262, 97, 262, 98, 262, 99, 262, 100, 262, 101, 262, 
-    102, 262, 103, 262, 105, 262, 106, 262, 107, 262, 108, 262, 109, 262, 
-    110, 262, 111, 262, 112, 262, 113, 262, 114, 262, 115, 262, 116, 262, 
-    117, 262, 118, 262, 119, 262, 120, 262, 121, 262, 122, 262, 65, 262, 66, 
-    262, 67, 262, 68, 262, 69, 262, 70, 262, 71, 262, 72, 262, 73, 262, 74, 
-    262, 75, 262, 76, 262, 77, 262, 78, 262, 79, 262, 80, 262, 81, 262, 82, 
-    262, 83, 262, 84, 262, 85, 262, 86, 262, 87, 262, 88, 262, 89, 262, 90, 
-    262, 97, 262, 98, 262, 99, 262, 100, 262, 101, 262, 102, 262, 103, 262, 
-    104, 262, 105, 262, 106, 262, 107, 262, 108, 262, 109, 262, 110, 262, 
-    111, 262, 112, 262, 113, 262, 114, 262, 115, 262, 116, 262, 117, 262, 
-    118, 262, 119, 262, 120, 262, 121, 262, 122, 262, 65, 262, 67, 262, 68, 
-    262, 71, 262, 74, 262, 75, 262, 78, 262, 79, 262, 80, 262, 81, 262, 83, 
-    262, 84, 262, 85, 262, 86, 262, 87, 262, 88, 262, 89, 262, 90, 262, 97, 
-    262, 98, 262, 99, 262, 100, 262, 102, 262, 104, 262, 105, 262, 106, 262, 
-    107, 262, 108, 262, 109, 262, 110, 262, 112, 262, 113, 262, 114, 262, 
-    115, 262, 116, 262, 117, 262, 118, 262, 119, 262, 120, 262, 121, 262, 
-    122, 262, 65, 262, 66, 262, 67, 262, 68, 262, 69, 262, 70, 262, 71, 262, 
-    72, 262, 73, 262, 74, 262, 75, 262, 76, 262, 77, 262, 78, 262, 79, 262, 
-    80, 262, 81, 262, 82, 262, 83, 262, 84, 262, 85, 262, 86, 262, 87, 262, 
-    88, 262, 89, 262, 90, 262, 97, 262, 98, 262, 99, 262, 100, 262, 101, 262, 
-    102, 262, 103, 262, 104, 262, 105, 262, 106, 262, 107, 262, 108, 262, 
-    109, 262, 110, 262, 111, 262, 112, 262, 113, 262, 114, 262, 115, 262, 
-    116, 262, 117, 262, 118, 262, 119, 262, 120, 262, 121, 262, 122, 262, 65, 
-    262, 66, 262, 68, 262, 69, 262, 70, 262, 71, 262, 74, 262, 75, 262, 76, 
-    262, 77, 262, 78, 262, 79, 262, 80, 262, 81, 262, 83, 262, 84, 262, 85, 
-    262, 86, 262, 87, 262, 88, 262, 89, 262, 97, 262, 98, 262, 99, 262, 100, 
-    262, 101, 262, 102, 262, 103, 262, 104, 262, 105, 262, 106, 262, 107, 
-    262, 108, 262, 109, 262, 110, 262, 111, 262, 112, 262, 113, 262, 114, 
-    262, 115, 262, 116, 262, 117, 262, 118, 262, 119, 262, 120, 262, 121, 
-    262, 122, 262, 65, 262, 66, 262, 68, 262, 69, 262, 70, 262, 71, 262, 73, 
-    262, 74, 262, 75, 262, 76, 262, 77, 262, 79, 262, 83, 262, 84, 262, 85, 
-    262, 86, 262, 87, 262, 88, 262, 89, 262, 97, 262, 98, 262, 99, 262, 100, 
-    262, 101, 262, 102, 262, 103, 262, 104, 262, 105, 262, 106, 262, 107, 
-    262, 108, 262, 109, 262, 110, 262, 111, 262, 112, 262, 113, 262, 114, 
-    262, 115, 262, 116, 262, 117, 262, 118, 262, 119, 262, 120, 262, 121, 
-    262, 122, 262, 65, 262, 66, 262, 67, 262, 68, 262, 69, 262, 70, 262, 71, 
-    262, 72, 262, 73, 262, 74, 262, 75, 262, 76, 262, 77, 262, 78, 262, 79, 
-    262, 80, 262, 81, 262, 82, 262, 83, 262, 84, 262, 85, 262, 86, 262, 87, 
-    262, 88, 262, 89, 262, 90, 262, 97, 262, 98, 262, 99, 262, 100, 262, 101, 
-    262, 102, 262, 103, 262, 104, 262, 105, 262, 106, 262, 107, 262, 108, 
-    262, 109, 262, 110, 262, 111, 262, 112, 262, 113, 262, 114, 262, 115, 
-    262, 116, 262, 117, 262, 118, 262, 119, 262, 120, 262, 121, 262, 122, 
-    262, 65, 262, 66, 262, 67, 262, 68, 262, 69, 262, 70, 262, 71, 262, 72, 
-    262, 73, 262, 74, 262, 75, 262, 76, 262, 77, 262, 78, 262, 79, 262, 80, 
-    262, 81, 262, 82, 262, 83, 262, 84, 262, 85, 262, 86, 262, 87, 262, 88, 
-    262, 89, 262, 90, 262, 97, 262, 98, 262, 99, 262, 100, 262, 101, 262, 
-    102, 262, 103, 262, 104, 262, 105, 262, 106, 262, 107, 262, 108, 262, 
-    109, 262, 110, 262, 111, 262, 112, 262, 113, 262, 114, 262, 115, 262, 
-    116, 262, 117, 262, 118, 262, 119, 262, 120, 262, 121, 262, 122, 262, 65, 
-    262, 66, 262, 67, 262, 68, 262, 69, 262, 70, 262, 71, 262, 72, 262, 73, 
-    262, 74, 262, 75, 262, 76, 262, 77, 262, 78, 262, 79, 262, 80, 262, 81, 
-    262, 82, 262, 83, 262, 84, 262, 85, 262, 86, 262, 87, 262, 88, 262, 89, 
-    262, 90, 262, 97, 262, 98, 262, 99, 262, 100, 262, 101, 262, 102, 262, 
-    103, 262, 104, 262, 105, 262, 106, 262, 107, 262, 108, 262, 109, 262, 
-    110, 262, 111, 262, 112, 262, 113, 262, 114, 262, 115, 262, 116, 262, 
-    117, 262, 118, 262, 119, 262, 120, 262, 121, 262, 122, 262, 65, 262, 66, 
-    262, 67, 262, 68, 262, 69, 262, 70, 262, 71, 262, 72, 262, 73, 262, 74, 
-    262, 75, 262, 76, 262, 77, 262, 78, 262, 79, 262, 80, 262, 81, 262, 82, 
-    262, 83, 262, 84, 262, 85, 262, 86, 262, 87, 262, 88, 262, 89, 262, 90, 
-    262, 97, 262, 98, 262, 99, 262, 100, 262, 101, 262, 102, 262, 103, 262, 
-    104, 262, 105, 262, 106, 262, 107, 262, 108, 262, 109, 262, 110, 262, 
-    111, 262, 112, 262, 113, 262, 114, 262, 115, 262, 116, 262, 117, 262, 
-    118, 262, 119, 262, 120, 262, 121, 262, 122, 262, 65, 262, 66, 262, 67, 
-    262, 68, 262, 69, 262, 70, 262, 71, 262, 72, 262, 73, 262, 74, 262, 75, 
-    262, 76, 262, 77, 262, 78, 262, 79, 262, 80, 262, 81, 262, 82, 262, 83, 
-    262, 84, 262, 85, 262, 86, 262, 87, 262, 88, 262, 89, 262, 90, 262, 97, 
-    262, 98, 262, 99, 262, 100, 262, 101, 262, 102, 262, 103, 262, 104, 262, 
-    105, 262, 106, 262, 107, 262, 108, 262, 109, 262, 110, 262, 111, 262, 
-    112, 262, 113, 262, 114, 262, 115, 262, 116, 262, 117, 262, 118, 262, 
-    119, 262, 120, 262, 121, 262, 122, 262, 65, 262, 66, 262, 67, 262, 68, 
-    262, 69, 262, 70, 262, 71, 262, 72, 262, 73, 262, 74, 262, 75, 262, 76, 
-    262, 77, 262, 78, 262, 79, 262, 80, 262, 81, 262, 82, 262, 83, 262, 84, 
-    262, 85, 262, 86, 262, 87, 262, 88, 262, 89, 262, 90, 262, 97, 262, 98, 
-    262, 99, 262, 100, 262, 101, 262, 102, 262, 103, 262, 104, 262, 105, 262, 
-    106, 262, 107, 262, 108, 262, 109, 262, 110, 262, 111, 262, 112, 262, 
-    113, 262, 114, 262, 115, 262, 116, 262, 117, 262, 118, 262, 119, 262, 
-    120, 262, 121, 262, 122, 262, 305, 262, 567, 262, 913, 262, 914, 262, 
-    915, 262, 916, 262, 917, 262, 918, 262, 919, 262, 920, 262, 921, 262, 
-    922, 262, 923, 262, 924, 262, 925, 262, 926, 262, 927, 262, 928, 262, 
-    929, 262, 1012, 262, 931, 262, 932, 262, 933, 262, 934, 262, 935, 262, 
-    936, 262, 937, 262, 8711, 262, 945, 262, 946, 262, 947, 262, 948, 262, 
-    949, 262, 950, 262, 951, 262, 952, 262, 953, 262, 954, 262, 955, 262, 
-    956, 262, 957, 262, 958, 262, 959, 262, 960, 262, 961, 262, 962, 262, 
-    963, 262, 964, 262, 965, 262, 966, 262, 967, 262, 968, 262, 969, 262, 
-    8706, 262, 1013, 262, 977, 262, 1008, 262, 981, 262, 1009, 262, 982, 262, 
-    913, 262, 914, 262, 915, 262, 916, 262, 917, 262, 918, 262, 919, 262, 
-    920, 262, 921, 262, 922, 262, 923, 262, 924, 262, 925, 262, 926, 262, 
-    927, 262, 928, 262, 929, 262, 1012, 262, 931, 262, 932, 262, 933, 262, 
-    934, 262, 935, 262, 936, 262, 937, 262, 8711, 262, 945, 262, 946, 262, 
-    947, 262, 948, 262, 949, 262, 950, 262, 951, 262, 952, 262, 953, 262, 
-    954, 262, 955, 262, 956, 262, 957, 262, 958, 262, 959, 262, 960, 262, 
-    961, 262, 962, 262, 963, 262, 964, 262, 965, 262, 966, 262, 967, 262, 
-    968, 262, 969, 262, 8706, 262, 1013, 262, 977, 262, 1008, 262, 981, 262, 
-    1009, 262, 982, 262, 913, 262, 914, 262, 915, 262, 916, 262, 917, 262, 
-    918, 262, 919, 262, 920, 262, 921, 262, 922, 262, 923, 262, 924, 262, 
-    925, 262, 926, 262, 927, 262, 928, 262, 929, 262, 1012, 262, 931, 262, 
-    932, 262, 933, 262, 934, 262, 935, 262, 936, 262, 937, 262, 8711, 262, 
-    945, 262, 946, 262, 947, 262, 948, 262, 949, 262, 950, 262, 951, 262, 
-    952, 262, 953, 262, 954, 262, 955, 262, 956, 262, 957, 262, 958, 262, 
-    959, 262, 960, 262, 961, 262, 962, 262, 963, 262, 964, 262, 965, 262, 
-    966, 262, 967, 262, 968, 262, 969, 262, 8706, 262, 1013, 262, 977, 262, 
-    1008, 262, 981, 262, 1009, 262, 982, 262, 913, 262, 914, 262, 915, 262, 
-    916, 262, 917, 262, 918, 262, 919, 262, 920, 262, 921, 262, 922, 262, 
-    923, 262, 924, 262, 925, 262, 926, 262, 927, 262, 928, 262, 929, 262, 
-    1012, 262, 931, 262, 932, 262, 933, 262, 934, 262, 935, 262, 936, 262, 
-    937, 262, 8711, 262, 945, 262, 946, 262, 947, 262, 948, 262, 949, 262, 
-    950, 262, 951, 262, 952, 262, 953, 262, 954, 262, 955, 262, 956, 262, 
-    957, 262, 958, 262, 959, 262, 960, 262, 961, 262, 962, 262, 963, 262, 
-    964, 262, 965, 262, 966, 262, 967, 262, 968, 262, 969, 262, 8706, 262, 
-    1013, 262, 977, 262, 1008, 262, 981, 262, 1009, 262, 982, 262, 913, 262, 
-    914, 262, 915, 262, 916, 262, 917, 262, 918, 262, 919, 262, 920, 262, 
-    921, 262, 922, 262, 923, 262, 924, 262, 925, 262, 926, 262, 927, 262, 
-    928, 262, 929, 262, 1012, 262, 931, 262, 932, 262, 933, 262, 934, 262, 
-    935, 262, 936, 262, 937, 262, 8711, 262, 945, 262, 946, 262, 947, 262, 
-    948, 262, 949, 262, 950, 262, 951, 262, 952, 262, 953, 262, 954, 262, 
-    955, 262, 956, 262, 957, 262, 958, 262, 959, 262, 960, 262, 961, 262, 
-    962, 262, 963, 262, 964, 262, 965, 262, 966, 262, 967, 262, 968, 262, 
-    969, 262, 8706, 262, 1013, 262, 977, 262, 1008, 262, 981, 262, 1009, 262, 
-    982, 262, 988, 262, 989, 262, 48, 262, 49, 262, 50, 262, 51, 262, 52, 
-    262, 53, 262, 54, 262, 55, 262, 56, 262, 57, 262, 48, 262, 49, 262, 50, 
-    262, 51, 262, 52, 262, 53, 262, 54, 262, 55, 262, 56, 262, 57, 262, 48, 
-    262, 49, 262, 50, 262, 51, 262, 52, 262, 53, 262, 54, 262, 55, 262, 56, 
-    262, 57, 262, 48, 262, 49, 262, 50, 262, 51, 262, 52, 262, 53, 262, 54, 
-    262, 55, 262, 56, 262, 57, 262, 48, 262, 49, 262, 50, 262, 51, 262, 52, 
-    262, 53, 262, 54, 262, 55, 262, 56, 262, 57, 514, 48, 46, 514, 48, 44, 
-    514, 49, 44, 514, 50, 44, 514, 51, 44, 514, 52, 44, 514, 53, 44, 514, 54, 
-    44, 514, 55, 44, 514, 56, 44, 514, 57, 44, 770, 40, 65, 41, 770, 40, 66, 
-    41, 770, 40, 67, 41, 770, 40, 68, 41, 770, 40, 69, 41, 770, 40, 70, 41, 
-    770, 40, 71, 41, 770, 40, 72, 41, 770, 40, 73, 41, 770, 40, 74, 41, 770, 
-    40, 75, 41, 770, 40, 76, 41, 770, 40, 77, 41, 770, 40, 78, 41, 770, 40, 
-    79, 41, 770, 40, 80, 41, 770, 40, 81, 41, 770, 40, 82, 41, 770, 40, 83, 
-    41, 770, 40, 84, 41, 770, 40, 85, 41, 770, 40, 86, 41, 770, 40, 87, 41, 
-    770, 40, 88, 41, 770, 40, 89, 41, 770, 40, 90, 41, 770, 12308, 83, 12309, 
-    263, 67, 263, 82, 519, 67, 68, 519, 87, 90, 266, 66, 266, 78, 266, 80, 
-    266, 83, 266, 87, 522, 72, 86, 522, 77, 86, 522, 83, 68, 522, 83, 83, 
-    778, 80, 80, 86, 522, 68, 74, 522, 12411, 12363, 266, 25163, 266, 23383, 
-    266, 21452, 266, 12487, 266, 20108, 266, 22810, 266, 35299, 266, 22825, 
-    266, 20132, 266, 26144, 266, 28961, 266, 26009, 266, 21069, 266, 24460, 
-    266, 20877, 266, 26032, 266, 21021, 266, 32066, 266, 29983, 266, 36009, 
-    266, 22768, 266, 21561, 266, 28436, 266, 25237, 266, 25429, 266, 19968, 
-    266, 19977, 266, 36938, 266, 24038, 266, 20013, 266, 21491, 266, 25351, 
-    266, 36208, 266, 25171, 770, 12308, 26412, 12309, 770, 12308, 19977, 
-    12309, 770, 12308, 20108, 12309, 770, 12308, 23433, 12309, 770, 12308, 
-    28857, 12309, 770, 12308, 25171, 12309, 770, 12308, 30423, 12309, 770, 
-    12308, 21213, 12309, 770, 12308, 25943, 12309, 256, 20029, 256, 20024, 
-    256, 20033, 256, 131362, 256, 20320, 256, 20398, 256, 20411, 256, 20482, 
-    256, 20602, 256, 20633, 256, 20711, 256, 20687, 256, 13470, 256, 132666, 
-    256, 20813, 256, 20820, 256, 20836, 256, 20855, 256, 132380, 256, 13497, 
-    256, 20839, 256, 20877, 256, 132427, 256, 20887, 256, 20900, 256, 20172, 
-    256, 20908, 256, 20917, 256, 168415, 256, 20981, 256, 20995, 256, 13535, 
-    256, 21051, 256, 21062, 256, 21106, 256, 21111, 256, 13589, 256, 21191, 
-    256, 21193, 256, 21220, 256, 21242, 256, 21253, 256, 21254, 256, 21271, 
-    256, 21321, 256, 21329, 256, 21338, 256, 21363, 256, 21373, 256, 21375, 
-    256, 21375, 256, 21375, 256, 133676, 256, 28784, 256, 21450, 256, 21471, 
-    256, 133987, 256, 21483, 256, 21489, 256, 21510, 256, 21662, 256, 21560, 
-    256, 21576, 256, 21608, 256, 21666, 256, 21750, 256, 21776, 256, 21843, 
-    256, 21859, 256, 21892, 256, 21892, 256, 21913, 256, 21931, 256, 21939, 
-    256, 21954, 256, 22294, 256, 22022, 256, 22295, 256, 22097, 256, 22132, 
-    256, 20999, 256, 22766, 256, 22478, 256, 22516, 256, 22541, 256, 22411, 
-    256, 22578, 256, 22577, 256, 22700, 256, 136420, 256, 22770, 256, 22775, 
-    256, 22790, 256, 22810, 256, 22818, 256, 22882, 256, 136872, 256, 136938, 
-    256, 23020, 256, 23067, 256, 23079, 256, 23000, 256, 23142, 256, 14062, 
-    256, 14076, 256, 23304, 256, 23358, 256, 23358, 256, 137672, 256, 23491, 
-    256, 23512, 256, 23527, 256, 23539, 256, 138008, 256, 23551, 256, 23558, 
-    256, 24403, 256, 23586, 256, 14209, 256, 23648, 256, 23662, 256, 23744, 
-    256, 23693, 256, 138724, 256, 23875, 256, 138726, 256, 23918, 256, 23915, 
-    256, 23932, 256, 24033, 256, 24034, 256, 14383, 256, 24061, 256, 24104, 
-    256, 24125, 256, 24169, 256, 14434, 256, 139651, 256, 14460, 256, 24240, 
-    256, 24243, 256, 24246, 256, 24266, 256, 172946, 256, 24318, 256, 140081, 
-    256, 140081, 256, 33281, 256, 24354, 256, 24354, 256, 14535, 256, 144056, 
-    256, 156122, 256, 24418, 256, 24427, 256, 14563, 256, 24474, 256, 24525, 
-    256, 24535, 256, 24569, 256, 24705, 256, 14650, 256, 14620, 256, 24724, 
-    256, 141012, 256, 24775, 256, 24904, 256, 24908, 256, 24910, 256, 24908, 
-    256, 24954, 256, 24974, 256, 25010, 256, 24996, 256, 25007, 256, 25054, 
-    256, 25074, 256, 25078, 256, 25104, 256, 25115, 256, 25181, 256, 25265, 
-    256, 25300, 256, 25424, 256, 142092, 256, 25405, 256, 25340, 256, 25448, 
-    256, 25475, 256, 25572, 256, 142321, 256, 25634, 256, 25541, 256, 25513, 
-    256, 14894, 256, 25705, 256, 25726, 256, 25757, 256, 25719, 256, 14956, 
-    256, 25935, 256, 25964, 256, 143370, 256, 26083, 256, 26360, 256, 26185, 
-    256, 15129, 256, 26257, 256, 15112, 256, 15076, 256, 20882, 256, 20885, 
-    256, 26368, 256, 26268, 256, 32941, 256, 17369, 256, 26391, 256, 26395, 
-    256, 26401, 256, 26462, 256, 26451, 256, 144323, 256, 15177, 256, 26618, 
-    256, 26501, 256, 26706, 256, 26757, 256, 144493, 256, 26766, 256, 26655, 
-    256, 26900, 256, 15261, 256, 26946, 256, 27043, 256, 27114, 256, 27304, 
-    256, 145059, 256, 27355, 256, 15384, 256, 27425, 256, 145575, 256, 27476, 
-    256, 15438, 256, 27506, 256, 27551, 256, 27578, 256, 27579, 256, 146061, 
-    256, 138507, 256, 146170, 256, 27726, 256, 146620, 256, 27839, 256, 
-    27853, 256, 27751, 256, 27926, 256, 27966, 256, 28023, 256, 27969, 256, 
-    28009, 256, 28024, 256, 28037, 256, 146718, 256, 27956, 256, 28207, 256, 
-    28270, 256, 15667, 256, 28363, 256, 28359, 256, 147153, 256, 28153, 256, 
-    28526, 256, 147294, 256, 147342, 256, 28614, 256, 28729, 256, 28702, 256, 
-    28699, 256, 15766, 256, 28746, 256, 28797, 256, 28791, 256, 28845, 256, 
-    132389, 256, 28997, 256, 148067, 256, 29084, 256, 148395, 256, 29224, 
-    256, 29237, 256, 29264, 256, 149000, 256, 29312, 256, 29333, 256, 149301, 
-    256, 149524, 256, 29562, 256, 29579, 256, 16044, 256, 29605, 256, 16056, 
-    256, 16056, 256, 29767, 256, 29788, 256, 29809, 256, 29829, 256, 29898, 
-    256, 16155, 256, 29988, 256, 150582, 256, 30014, 256, 150674, 256, 30064, 
-    256, 139679, 256, 30224, 256, 151457, 256, 151480, 256, 151620, 256, 
-    16380, 256, 16392, 256, 30452, 256, 151795, 256, 151794, 256, 151833, 
-    256, 151859, 256, 30494, 256, 30495, 256, 30495, 256, 30538, 256, 16441, 
-    256, 30603, 256, 16454, 256, 16534, 256, 152605, 256, 30798, 256, 30860, 
-    256, 30924, 256, 16611, 256, 153126, 256, 31062, 256, 153242, 256, 
-    153285, 256, 31119, 256, 31211, 256, 16687, 256, 31296, 256, 31306, 256, 
-    31311, 256, 153980, 256, 154279, 256, 154279, 256, 31470, 256, 16898, 
-    256, 154539, 256, 31686, 256, 31689, 256, 16935, 256, 154752, 256, 31954, 
-    256, 17056, 256, 31976, 256, 31971, 256, 32000, 256, 155526, 256, 32099, 
-    256, 17153, 256, 32199, 256, 32258, 256, 32325, 256, 17204, 256, 156200, 
-    256, 156231, 256, 17241, 256, 156377, 256, 32634, 256, 156478, 256, 
-    32661, 256, 32762, 256, 32773, 256, 156890, 256, 156963, 256, 32864, 256, 
-    157096, 256, 32880, 256, 144223, 256, 17365, 256, 32946, 256, 33027, 256, 
-    17419, 256, 33086, 256, 23221, 256, 157607, 256, 157621, 256, 144275, 
-    256, 144284, 256, 33281, 256, 33284, 256, 36766, 256, 17515, 256, 33425, 
-    256, 33419, 256, 33437, 256, 21171, 256, 33457, 256, 33459, 256, 33469, 
-    256, 33510, 256, 158524, 256, 33509, 256, 33565, 256, 33635, 256, 33709, 
-    256, 33571, 256, 33725, 256, 33767, 256, 33879, 256, 33619, 256, 33738, 
-    256, 33740, 256, 33756, 256, 158774, 256, 159083, 256, 158933, 256, 
-    17707, 256, 34033, 256, 34035, 256, 34070, 256, 160714, 256, 34148, 256, 
-    159532, 256, 17757, 256, 17761, 256, 159665, 256, 159954, 256, 17771, 
-    256, 34384, 256, 34396, 256, 34407, 256, 34409, 256, 34473, 256, 34440, 
-    256, 34574, 256, 34530, 256, 34681, 256, 34600, 256, 34667, 256, 34694, 
-    256, 17879, 256, 34785, 256, 34817, 256, 17913, 256, 34912, 256, 34915, 
-    256, 161383, 256, 35031, 256, 35038, 256, 17973, 256, 35066, 256, 13499, 
-    256, 161966, 256, 162150, 256, 18110, 256, 18119, 256, 35488, 256, 35565, 
-    256, 35722, 256, 35925, 256, 162984, 256, 36011, 256, 36033, 256, 36123, 
-    256, 36215, 256, 163631, 256, 133124, 256, 36299, 256, 36284, 256, 36336, 
-    256, 133342, 256, 36564, 256, 36664, 256, 165330, 256, 165357, 256, 
-    37012, 256, 37105, 256, 37137, 256, 165678, 256, 37147, 256, 37432, 256, 
-    37591, 256, 37592, 256, 37500, 256, 37881, 256, 37909, 256, 166906, 256, 
-    38283, 256, 18837, 256, 38327, 256, 167287, 256, 18918, 256, 38595, 256, 
-    23986, 256, 38691, 256, 168261, 256, 168474, 256, 19054, 256, 19062, 256, 
-    38880, 256, 168970, 256, 19122, 256, 169110, 256, 38923, 256, 38923, 256, 
-    38953, 256, 169398, 256, 39138, 256, 19251, 256, 39209, 256, 39335, 256, 
-    39362, 256, 39422, 256, 19406, 256, 170800, 256, 39698, 256, 40000, 256, 
-    40189, 256, 19662, 256, 19693, 256, 40295, 256, 172238, 256, 19704, 256, 
-    172293, 256, 172558, 256, 172689, 256, 40635, 256, 19798, 256, 40697, 
-    256, 40702, 256, 40709, 256, 40719, 256, 40726, 256, 40763, 256, 173568, 
-};
-
-/* index tables for the decomposition data */
-#define DECOMP_SHIFT 8
-static unsigned char decomp_index1[] = {
-    0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 16, 7, 17, 18, 19, 20, 21, 22, 23, 24, 7, 7, 7, 7, 7, 25, 
-    7, 26, 27, 28, 29, 30, 31, 32, 33, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 34, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 35, 36, 37, 38, 39, 40, 
-    41, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 42, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 43, 7, 7, 44, 45, 
-    46, 47, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 48, 49, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 50, 51, 52, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-};
-
-static unsigned short decomp_index2[] = {
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 
-    3, 0, 6, 0, 0, 0, 0, 8, 0, 0, 11, 13, 15, 18, 0, 0, 20, 23, 25, 0, 27, 
-    31, 35, 0, 39, 42, 45, 48, 51, 54, 0, 57, 60, 63, 66, 69, 72, 75, 78, 81, 
-    0, 84, 87, 90, 93, 96, 99, 0, 0, 102, 105, 108, 111, 114, 0, 0, 117, 120, 
-    123, 126, 129, 132, 0, 135, 138, 141, 144, 147, 150, 153, 156, 159, 0, 
-    162, 165, 168, 171, 174, 177, 0, 0, 180, 183, 186, 189, 192, 0, 195, 198, 
-    201, 204, 207, 210, 213, 216, 219, 222, 225, 228, 231, 234, 237, 240, 
-    243, 0, 0, 246, 249, 252, 255, 258, 261, 264, 267, 270, 273, 276, 279, 
-    282, 285, 288, 291, 294, 297, 300, 303, 0, 0, 306, 309, 312, 315, 318, 
-    321, 324, 327, 330, 0, 333, 336, 339, 342, 345, 348, 0, 351, 354, 357, 
-    360, 363, 366, 369, 372, 0, 0, 375, 378, 381, 384, 387, 390, 393, 0, 0, 
-    396, 399, 402, 405, 408, 411, 0, 0, 414, 417, 420, 423, 426, 429, 432, 
-    435, 438, 441, 444, 447, 450, 453, 456, 459, 462, 465, 0, 0, 468, 471, 
-    474, 477, 480, 483, 486, 489, 492, 495, 498, 501, 504, 507, 510, 513, 
-    516, 519, 522, 525, 528, 531, 534, 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 539, 542, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 545, 548, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 551, 554, 557, 560, 563, 566, 569, 572, 
-    575, 578, 581, 584, 587, 590, 593, 596, 599, 602, 605, 608, 611, 614, 
-    617, 620, 623, 0, 626, 629, 632, 635, 638, 641, 0, 0, 644, 647, 650, 653, 
-    656, 659, 662, 665, 668, 671, 674, 677, 680, 683, 686, 689, 0, 0, 692, 
-    695, 698, 701, 704, 707, 710, 713, 716, 719, 722, 725, 728, 731, 734, 
-    737, 740, 743, 746, 749, 752, 755, 758, 761, 764, 767, 770, 773, 776, 
-    779, 782, 785, 788, 791, 794, 797, 0, 0, 800, 803, 0, 0, 0, 0, 0, 0, 806, 
-    809, 812, 815, 818, 821, 824, 827, 830, 833, 836, 839, 842, 845, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 848, 850, 852, 854, 856, 858, 860, 862, 864, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 866, 
-    869, 872, 875, 878, 881, 0, 0, 884, 886, 888, 890, 892, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 894, 896, 0, 898, 900, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 903, 0, 0, 0, 0, 
-    0, 905, 0, 0, 0, 908, 0, 0, 0, 0, 0, 910, 913, 916, 919, 921, 924, 927, 
-    0, 930, 0, 933, 936, 939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 942, 945, 948, 951, 954, 957, 960, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 963, 966, 
-    969, 972, 975, 0, 978, 980, 982, 984, 987, 990, 992, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 994, 996, 998, 0, 
-    1000, 1002, 0, 0, 0, 1004, 0, 0, 0, 0, 0, 0, 1006, 1009, 0, 1012, 0, 0, 
-    0, 1015, 0, 0, 0, 0, 1018, 1021, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    1027, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 1030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 1033, 1036, 0, 1039, 0, 0, 0, 1042, 0, 0, 0, 
-    0, 1045, 1048, 1051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 1054, 1057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 1066, 1069, 1072, 1075, 0, 0, 1078, 1081, 0, 0, 1084, 1087, 
-    1090, 1093, 1096, 1099, 0, 0, 1102, 1105, 1108, 1111, 1114, 1117, 0, 0, 
-    1120, 1123, 1126, 1129, 1132, 1135, 1138, 1141, 1144, 1147, 1150, 1153, 
-    0, 0, 1156, 1159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 1162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1165, 1168, 1171, 1174, 
-    1177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 1180, 1183, 1186, 1189, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1192, 0, 1195, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1201, 0, 0, 0, 
-    0, 0, 0, 0, 1204, 0, 0, 1207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1210, 
-    1213, 1216, 1219, 1222, 1225, 1228, 1231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 1234, 1237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1240, 1243, 
-    0, 1246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1249, 0, 0, 1252, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 1255, 1258, 1261, 0, 0, 1264, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 1267, 0, 0, 1270, 1273, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 1276, 1279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1282, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 1285, 1288, 1291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1297, 0, 0, 0, 0, 0, 0, 1300, 1303, 0, 
-    1306, 1309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1312, 1315, 1318, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1321, 0, 1324, 1327, 1330, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1336, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1339, 1342, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1345, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    1347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1350, 0, 0, 0, 0, 1353, 0, 0, 0, 0, 
-    1356, 0, 0, 0, 0, 1359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1362, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 1365, 0, 1368, 1371, 1374, 1377, 1380, 0, 0, 0, 0, 
-    0, 0, 0, 1383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1386, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 1389, 0, 0, 0, 0, 1392, 0, 0, 0, 0, 1395, 0, 
-    0, 0, 0, 1398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1401, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 1404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 1407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1409, 0, 1412, 0, 
-    1415, 0, 1418, 0, 1421, 0, 0, 0, 1424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 1427, 0, 1430, 0, 0, 1433, 1436, 0, 1439, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1442, 1444, 1446, 0, 1448, 1450, 1452, 
-    1454, 1456, 1458, 1460, 1462, 1464, 1466, 1468, 0, 1470, 1472, 1474, 
-    1476, 1478, 1480, 1482, 1484, 1486, 1488, 1490, 1492, 1494, 1496, 1498, 
-    1500, 1502, 1504, 0, 1506, 1508, 1510, 1512, 1514, 1516, 1518, 1520, 
-    1522, 1524, 1526, 1528, 1530, 1532, 1534, 1536, 1538, 1540, 1542, 1544, 
-    1546, 1548, 1550, 1552, 1554, 1556, 1558, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 1562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1564, 1566, 1568, 
-    1570, 1572, 1574, 1576, 1578, 1580, 1582, 1584, 1586, 1588, 1590, 1592, 
-    1594, 1596, 1598, 1600, 1602, 1604, 1606, 1608, 1610, 1612, 1614, 1616, 
-    1618, 1620, 1622, 1624, 1626, 1628, 1630, 1632, 1634, 1636, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1638, 1641, 1644, 1647, 1650, 1653, 
-    1656, 1659, 1662, 1665, 1668, 1671, 1674, 1677, 1680, 1683, 1686, 1689, 
-    1692, 1695, 1698, 1701, 1704, 1707, 1710, 1713, 1716, 1719, 1722, 1725, 
-    1728, 1731, 1734, 1737, 1740, 1743, 1746, 1749, 1752, 1755, 1758, 1761, 
-    1764, 1767, 1770, 1773, 1776, 1779, 1782, 1785, 1788, 1791, 1794, 1797, 
-    1800, 1803, 1806, 1809, 1812, 1815, 1818, 1821, 1824, 1827, 1830, 1833, 
-    1836, 1839, 1842, 1845, 1848, 1851, 1854, 1857, 1860, 1863, 1866, 1869, 
-    1872, 1875, 1878, 1881, 1884, 1887, 1890, 1893, 1896, 1899, 1902, 1905, 
-    1908, 1911, 1914, 1917, 1920, 1923, 1926, 1929, 1932, 1935, 1938, 1941, 
-    1944, 1947, 1950, 1953, 1956, 1959, 1962, 1965, 1968, 1971, 1974, 1977, 
-    1980, 1983, 1986, 1989, 1992, 1995, 1998, 2001, 2004, 2007, 2010, 2013, 
-    2016, 2019, 2022, 2025, 2028, 2031, 2034, 2037, 2040, 2043, 2046, 2049, 
-    2052, 2055, 2058, 2061, 2064, 2067, 2070, 2073, 2076, 2079, 2082, 2085, 
-    2088, 2091, 2094, 2097, 2100, 2103, 0, 0, 0, 0, 2106, 2109, 2112, 2115, 
-    2118, 2121, 2124, 2127, 2130, 2133, 2136, 2139, 2142, 2145, 2148, 2151, 
-    2154, 2157, 2160, 2163, 2166, 2169, 2172, 2175, 2178, 2181, 2184, 2187, 
-    2190, 2193, 2196, 2199, 2202, 2205, 2208, 2211, 2214, 2217, 2220, 2223, 
-    2226, 2229, 2232, 2235, 2238, 2241, 2244, 2247, 2250, 2253, 2256, 2259, 
-    2262, 2265, 2268, 2271, 2274, 2277, 2280, 2283, 2286, 2289, 2292, 2295, 
-    2298, 2301, 2304, 2307, 2310, 2313, 2316, 2319, 2322, 2325, 2328, 2331, 
-    2334, 2337, 2340, 2343, 2346, 2349, 2352, 2355, 2358, 2361, 2364, 2367, 
-    2370, 2373, 0, 0, 0, 0, 0, 0, 2376, 2379, 2382, 2385, 2388, 2391, 2394, 
-    2397, 2400, 2403, 2406, 2409, 2412, 2415, 2418, 2421, 2424, 2427, 2430, 
-    2433, 2436, 2439, 0, 0, 2442, 2445, 2448, 2451, 2454, 2457, 0, 0, 2460, 
-    2463, 2466, 2469, 2472, 2475, 2478, 2481, 2484, 2487, 2490, 2493, 2496, 
-    2499, 2502, 2505, 2508, 2511, 2514, 2517, 2520, 2523, 2526, 2529, 2532, 
-    2535, 2538, 2541, 2544, 2547, 2550, 2553, 2556, 2559, 2562, 2565, 2568, 
-    2571, 0, 0, 2574, 2577, 2580, 2583, 2586, 2589, 0, 0, 2592, 2595, 2598, 
-    2601, 2604, 2607, 2610, 2613, 0, 2616, 0, 2619, 0, 2622, 0, 2625, 2628, 
-    2631, 2634, 2637, 2640, 2643, 2646, 2649, 2652, 2655, 2658, 2661, 2664, 
-    2667, 2670, 2673, 2676, 2679, 2681, 2684, 2686, 2689, 2691, 2694, 2696, 
-    2699, 2701, 2704, 2706, 2709, 0, 0, 2711, 2714, 2717, 2720, 2723, 2726, 
-    2729, 2732, 2735, 2738, 2741, 2744, 2747, 2750, 2753, 2756, 2759, 2762, 
-    2765, 2768, 2771, 2774, 2777, 2780, 2783, 2786, 2789, 2792, 2795, 2798, 
-    2801, 2804, 2807, 2810, 2813, 2816, 2819, 2822, 2825, 2828, 2831, 2834, 
-    2837, 2840, 2843, 2846, 2849, 2852, 2855, 2858, 2861, 2864, 2867, 0, 
-    2870, 2873, 2876, 2879, 2882, 2885, 2887, 2890, 2893, 2895, 2898, 2901, 
-    2904, 2907, 2910, 0, 2913, 2916, 2919, 2922, 2924, 2927, 2929, 2932, 
-    2935, 2938, 2941, 2944, 2947, 2950, 0, 0, 2952, 2955, 2958, 2961, 2964, 
-    2967, 0, 2969, 2972, 2975, 2978, 2981, 2984, 2987, 2989, 2992, 2995, 
-    2998, 3001, 3004, 3007, 3010, 3012, 3015, 3018, 3020, 0, 0, 3022, 3025, 
-    3028, 0, 3031, 3034, 3037, 3040, 3042, 3045, 3047, 3050, 3052, 0, 3055, 
-    3057, 3059, 3061, 3063, 3065, 3067, 3069, 3071, 3073, 3075, 0, 0, 0, 0, 
-    0, 0, 3077, 0, 0, 0, 0, 0, 3079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    3082, 3084, 3087, 0, 0, 0, 0, 0, 0, 0, 0, 3091, 0, 0, 0, 3093, 3096, 0, 
-    3100, 3103, 0, 0, 0, 0, 3107, 0, 3110, 0, 0, 0, 0, 0, 0, 0, 0, 3113, 
-    3116, 3119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3122, 0, 0, 0, 0, 0, 
-    0, 0, 3127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3129, 3131, 
-    0, 0, 3133, 3135, 3137, 3139, 3141, 3143, 3145, 3147, 3149, 3151, 3153, 
-    3155, 3157, 3159, 3161, 3163, 3165, 3167, 3169, 3171, 3173, 3175, 3177, 
-    3179, 3181, 3183, 3185, 0, 3187, 3189, 3191, 3193, 3195, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3197, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 3200, 3204, 3208, 3210, 0, 3213, 3217, 3221, 0, 
-    3223, 3226, 3228, 3230, 3232, 3234, 3236, 3238, 3240, 3242, 3244, 0, 
-    3246, 3248, 0, 0, 3251, 3253, 3255, 3257, 3259, 0, 0, 3261, 3264, 3268, 
-    0, 3271, 0, 3273, 0, 3275, 0, 3277, 3279, 3281, 3283, 0, 3285, 3287, 
-    3289, 0, 3291, 3293, 3295, 3297, 3299, 3301, 3303, 0, 3305, 3309, 3311, 
-    3313, 3315, 3317, 0, 0, 0, 0, 3319, 3321, 3323, 3325, 3327, 0, 0, 0, 0, 
-    0, 0, 3329, 3333, 3337, 3342, 3346, 3350, 3354, 3358, 3362, 3366, 3370, 
-    3374, 3378, 3382, 3386, 3390, 3393, 3395, 3398, 3402, 3405, 3407, 3410, 
-    3414, 3419, 3422, 3424, 3427, 3431, 3433, 3435, 3437, 3439, 3441, 3444, 
-    3448, 3451, 3453, 3456, 3460, 3465, 3468, 3470, 3473, 3477, 3479, 3481, 
-    3483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 3489, 3492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 3495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3498, 3501, 3504, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3507, 0, 
-    0, 0, 0, 3510, 0, 0, 3513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 3516, 0, 3519, 0, 0, 0, 0, 0, 3522, 3525, 0, 
-    3529, 3532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3536, 0, 0, 
-    3539, 0, 0, 3542, 0, 3545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 3548, 0, 3551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3554, 
-    3557, 3560, 3563, 3566, 0, 0, 3569, 3572, 0, 0, 3575, 3578, 0, 0, 0, 0, 
-    0, 0, 3581, 3584, 0, 0, 3587, 3590, 0, 0, 3593, 3596, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 3599, 3602, 3605, 3608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3611, 3614, 3617, 3620, 0, 0, 0, 0, 
-    0, 0, 3623, 3626, 3629, 3632, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3635, 
-    3637, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    3639, 3641, 3643, 3645, 3647, 3649, 3651, 3653, 3655, 3657, 3660, 3663, 
-    3666, 3669, 3672, 3675, 3678, 3681, 3684, 3687, 3690, 3694, 3698, 3702, 
-    3706, 3710, 3714, 3718, 3722, 3726, 3731, 3736, 3741, 3746, 3751, 3756, 
-    3761, 3766, 3771, 3776, 3781, 3784, 3787, 3790, 3793, 3796, 3799, 3802, 
-    3805, 3808, 3812, 3816, 3820, 3824, 3828, 3832, 3836, 3840, 3844, 3848, 
-    3852, 3856, 3860, 3864, 3868, 3872, 3876, 3880, 3884, 3888, 3892, 3896, 
-    3900, 3904, 3908, 3912, 3916, 3920, 3924, 3928, 3932, 3936, 3940, 3944, 
-    3948, 3952, 3956, 3958, 3960, 3962, 3964, 3966, 3968, 3970, 3972, 3974, 
-    3976, 3978, 3980, 3982, 3984, 3986, 3988, 3990, 3992, 3994, 3996, 3998, 
-    4000, 4002, 4004, 4006, 4008, 4010, 4012, 4014, 4016, 4018, 4020, 4022, 
-    4024, 4026, 4028, 4030, 4032, 4034, 4036, 4038, 4040, 4042, 4044, 4046, 
-    4048, 4050, 4052, 4054, 4056, 4058, 4060, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    4062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 4067, 4071, 4074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4078, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4081, 4083, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4085, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    4089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4091, 4093, 4095, 4097, 4099, 
-    4101, 4103, 4105, 4107, 4109, 4111, 4113, 4115, 4117, 4119, 4121, 4123, 
-    4125, 4127, 4129, 4131, 4133, 4135, 4137, 4139, 4141, 4143, 4145, 4147, 
-    4149, 4151, 4153, 4155, 4157, 4159, 4161, 4163, 4165, 4167, 4169, 4171, 
-    4173, 4175, 4177, 4179, 4181, 4183, 4185, 4187, 4189, 4191, 4193, 4195, 
-    4197, 4199, 4201, 4203, 4205, 4207, 4209, 4211, 4213, 4215, 4217, 4219, 
-    4221, 4223, 4225, 4227, 4229, 4231, 4233, 4235, 4237, 4239, 4241, 4243, 
-    4245, 4247, 4249, 4251, 4253, 4255, 4257, 4259, 4261, 4263, 4265, 4267, 
-    4269, 4271, 4273, 4275, 4277, 4279, 4281, 4283, 4285, 4287, 4289, 4291, 
-    4293, 4295, 4297, 4299, 4301, 4303, 4305, 4307, 4309, 4311, 4313, 4315, 
-    4317, 4319, 4321, 4323, 4325, 4327, 4329, 4331, 4333, 4335, 4337, 4339, 
-    4341, 4343, 4345, 4347, 4349, 4351, 4353, 4355, 4357, 4359, 4361, 4363, 
-    4365, 4367, 4369, 4371, 4373, 4375, 4377, 4379, 4381, 4383, 4385, 4387, 
-    4389, 4391, 4393, 4395, 4397, 4399, 4401, 4403, 4405, 4407, 4409, 4411, 
-    4413, 4415, 4417, 4419, 4421, 4423, 4425, 4427, 4429, 4431, 4433, 4435, 
-    4437, 4439, 4441, 4443, 4445, 4447, 4449, 4451, 4453, 4455, 4457, 4459, 
-    4461, 4463, 4465, 4467, 4469, 4471, 4473, 4475, 4477, 4479, 4481, 4483, 
-    4485, 4487, 4489, 4491, 4493, 4495, 4497, 4499, 4501, 4503, 4505, 4507, 
-    4509, 4511, 4513, 4515, 4517, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 4519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4521, 0, 4523, 4525, 4527, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4529, 0, 4532, 0, 4535, 0, 4538, 
-    0, 4541, 0, 4544, 0, 4547, 0, 4550, 0, 4553, 0, 4556, 0, 4559, 0, 4562, 
-    0, 0, 4565, 0, 4568, 0, 4571, 0, 0, 0, 0, 0, 0, 4574, 4577, 0, 4580, 
-    4583, 0, 4586, 4589, 0, 4592, 4595, 0, 4598, 4601, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4604, 0, 0, 0, 0, 0, 0, 
-    4607, 4610, 0, 4613, 4616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4619, 0, 
-    4622, 0, 4625, 0, 4628, 0, 4631, 0, 4634, 0, 4637, 0, 4640, 0, 4643, 0, 
-    4646, 0, 4649, 0, 4652, 0, 0, 4655, 0, 4658, 0, 4661, 0, 0, 0, 0, 0, 0, 
-    4664, 4667, 0, 4670, 4673, 0, 4676, 4679, 0, 4682, 4685, 0, 4688, 4691, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4694, 
-    0, 0, 4697, 4700, 4703, 4706, 0, 0, 0, 4709, 4712, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4715, 4717, 4719, 
-    4721, 4723, 4725, 4727, 4729, 4731, 4733, 4735, 4737, 4739, 4741, 4743, 
-    4745, 4747, 4749, 4751, 4753, 4755, 4757, 4759, 4761, 4763, 4765, 4767, 
-    4769, 4771, 4773, 4775, 4777, 4779, 4781, 4783, 4785, 4787, 4789, 4791, 
-    4793, 4795, 4797, 4799, 4801, 4803, 4805, 4807, 4809, 4811, 4813, 4815, 
-    4817, 4819, 4821, 4823, 4825, 4827, 4829, 4831, 4833, 4835, 4837, 4839, 
-    4841, 4843, 4845, 4847, 4849, 4851, 4853, 4855, 4857, 4859, 4861, 4863, 
-    4865, 4867, 4869, 4871, 4873, 4875, 4877, 4879, 4881, 4883, 4885, 4887, 
-    4889, 4891, 4893, 4895, 4897, 4899, 4901, 0, 0, 0, 4903, 4905, 4907, 
-    4909, 4911, 4913, 4915, 4917, 4919, 4921, 4923, 4925, 4927, 4929, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4931, 
-    4935, 4939, 4943, 4947, 4951, 4955, 4959, 4963, 4967, 4971, 4975, 4979, 
-    4983, 4987, 4992, 4997, 5002, 5007, 5012, 5017, 5022, 5027, 5032, 5037, 
-    5042, 5047, 5052, 5057, 5062, 5070, 0, 5077, 5081, 5085, 5089, 5093, 
-    5097, 5101, 5105, 5109, 5113, 5117, 5121, 5125, 5129, 5133, 5137, 5141, 
-    5145, 5149, 5153, 5157, 5161, 5165, 5169, 5173, 5177, 5181, 5185, 5189, 
-    5193, 5197, 5201, 5205, 5209, 5213, 5217, 5221, 5223, 5225, 5227, 0, 0, 
-    0, 0, 0, 0, 0, 0, 5229, 5233, 5236, 5239, 5242, 5245, 5248, 5251, 5254, 
-    5257, 5260, 5263, 5266, 5269, 5272, 5275, 5278, 5280, 5282, 5284, 5286, 
-    5288, 5290, 5292, 5294, 5296, 5298, 5300, 5302, 5304, 5306, 5309, 5312, 
-    5315, 5318, 5321, 5324, 5327, 5330, 5333, 5336, 5339, 5342, 5345, 5348, 
-    5354, 5359, 0, 5362, 5364, 5366, 5368, 5370, 5372, 5374, 5376, 5378, 
-    5380, 5382, 5384, 5386, 5388, 5390, 5392, 5394, 5396, 5398, 5400, 5402, 
-    5404, 5406, 5408, 5410, 5412, 5414, 5416, 5418, 5420, 5422, 5424, 5426, 
-    5428, 5430, 5432, 5434, 5436, 5438, 5440, 5442, 5444, 5446, 5448, 5450, 
-    5452, 5454, 5456, 5458, 5460, 5463, 5466, 5469, 5472, 5475, 5478, 5481, 
-    5484, 5487, 5490, 5493, 5496, 5499, 5502, 5505, 5508, 5511, 5514, 5517, 
-    5520, 5523, 5526, 5529, 5532, 5536, 5540, 5544, 5547, 5551, 5554, 5558, 
-    5560, 5562, 5564, 5566, 5568, 5570, 5572, 5574, 5576, 5578, 5580, 5582, 
-    5584, 5586, 5588, 5590, 5592, 5594, 5596, 5598, 5600, 5602, 5604, 5606, 
-    5608, 5610, 5612, 5614, 5616, 5618, 5620, 5622, 5624, 5626, 5628, 5630, 
-    5632, 5634, 5636, 5638, 5640, 5642, 5644, 5646, 5648, 5650, 0, 5652, 
-    5657, 5662, 5667, 5671, 5676, 5680, 5684, 5690, 5695, 5699, 5703, 5707, 
-    5712, 5717, 5721, 5725, 5728, 5732, 5737, 5742, 5745, 5751, 5758, 5764, 
-    5768, 5774, 5780, 5785, 5789, 5793, 5797, 5802, 5808, 5813, 5817, 5821, 
-    5825, 5828, 5831, 5834, 5837, 5841, 5845, 5851, 5855, 5860, 5866, 5870, 
-    5873, 5876, 5882, 5887, 5893, 5897, 5903, 5906, 5910, 5914, 5918, 5922, 
-    5926, 5931, 5935, 5938, 5942, 5946, 5950, 5955, 5959, 5963, 5967, 5973, 
-    5978, 5981, 5987, 5990, 5995, 6000, 6004, 6008, 6012, 6017, 6020, 6024, 
-    6029, 6032, 6038, 6042, 6045, 6048, 6051, 6054, 6057, 6060, 6063, 6066, 
-    6069, 6072, 6076, 6080, 6084, 6088, 6092, 6096, 6100, 6104, 6108, 6112, 
-    6116, 6120, 6124, 6128, 6132, 6136, 6139, 6142, 6146, 6149, 6152, 6155, 
-    6159, 6163, 6166, 6169, 6172, 6175, 6178, 6183, 6186, 6189, 6192, 6195, 
-    6198, 6201, 6204, 6207, 6211, 6216, 6219, 6222, 6225, 6228, 6231, 6234, 
-    6237, 6241, 6245, 6249, 6253, 6256, 6259, 6262, 6265, 6268, 6271, 6274, 
-    6277, 6280, 6283, 6287, 6291, 6294, 6298, 6302, 6306, 6309, 6313, 6317, 
-    6322, 6325, 6329, 6333, 6337, 6341, 6347, 6354, 6357, 6360, 6363, 6366, 
-    6369, 6372, 6375, 6378, 6381, 6384, 6387, 6390, 6393, 6396, 6399, 6402, 
-    6405, 6408, 6413, 6416, 6419, 6422, 6427, 6431, 6434, 6437, 6440, 6443, 
-    6446, 6449, 6452, 6455, 6458, 6461, 6465, 6468, 6471, 6475, 6479, 6482, 
-    6487, 6491, 6494, 6497, 6500, 6503, 6507, 6511, 6514, 6517, 6520, 6523, 
-    6526, 6529, 6532, 6535, 6538, 6542, 6546, 6550, 6554, 6558, 6562, 6566, 
-    6570, 6574, 6578, 6582, 6586, 6590, 6594, 6598, 6602, 6606, 6610, 6614, 
-    6618, 6622, 6626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6630, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    6632, 6634, 6636, 6638, 6640, 6642, 6644, 6646, 6648, 6650, 6652, 6654, 
-    6656, 6658, 6660, 6662, 6664, 6666, 6668, 6670, 6672, 6674, 6676, 6678, 
-    6680, 6682, 6684, 6686, 6688, 6690, 6692, 6694, 6696, 6698, 6700, 6702, 
-    6704, 6706, 6708, 6710, 6712, 6714, 6716, 6718, 6720, 6722, 6724, 6726, 
-    6728, 6730, 6732, 6734, 6736, 6738, 6740, 6742, 6744, 6746, 6748, 6750, 
-    6752, 6754, 6756, 6758, 6760, 6762, 6764, 6766, 6768, 6770, 6772, 6774, 
-    6776, 6778, 6780, 6782, 6784, 6786, 6788, 6790, 6792, 6794, 6796, 6798, 
-    6800, 6802, 6804, 6806, 6808, 6810, 6812, 6814, 6816, 6818, 6820, 6822, 
-    6824, 6826, 6828, 6830, 6832, 6834, 6836, 6838, 6840, 6842, 6844, 6846, 
-    6848, 6850, 6852, 6854, 6856, 6858, 6860, 6862, 6864, 6866, 6868, 6870, 
-    6872, 6874, 6876, 6878, 6880, 6882, 6884, 6886, 6888, 6890, 6892, 6894, 
-    6896, 6898, 6900, 6902, 6904, 6906, 6908, 6910, 6912, 6914, 6916, 6918, 
-    6920, 6922, 6924, 6926, 6928, 6930, 6932, 6934, 6936, 6938, 6940, 6942, 
-    6944, 6946, 6948, 6950, 6952, 6954, 6956, 6958, 6960, 6962, 6964, 6966, 
-    6968, 6970, 6972, 6974, 6976, 6978, 6980, 6982, 6984, 6986, 6988, 6990, 
-    6992, 6994, 6996, 6998, 7000, 7002, 7004, 7006, 7008, 7010, 7012, 7014, 
-    7016, 7018, 7020, 7022, 7024, 7026, 7028, 7030, 7032, 7034, 7036, 7038, 
-    7040, 7042, 7044, 7046, 7048, 7050, 7052, 7054, 7056, 7058, 7060, 7062, 
-    7064, 7066, 7068, 7070, 7072, 7074, 7076, 7078, 7080, 7082, 7084, 7086, 
-    7088, 7090, 7092, 7094, 7096, 7098, 7100, 7102, 7104, 7106, 7108, 7110, 
-    7112, 7114, 7116, 7118, 7120, 7122, 7124, 7126, 7128, 7130, 7132, 7134, 
-    7136, 7138, 7140, 7142, 7144, 7146, 7148, 7150, 7152, 7154, 7156, 7158, 
-    7160, 7162, 7164, 7166, 7168, 7170, 0, 0, 7172, 0, 7174, 0, 0, 7176, 
-    7178, 7180, 7182, 7184, 7186, 7188, 7190, 7192, 7194, 0, 7196, 0, 7198, 
-    0, 0, 7200, 7202, 0, 0, 0, 7204, 7206, 7208, 7210, 0, 0, 7212, 7214, 
-    7216, 7218, 7220, 7222, 7224, 7226, 7228, 7230, 7232, 7234, 7236, 7238, 
-    7240, 7242, 7244, 7246, 7248, 7250, 7252, 7254, 7256, 7258, 7260, 7262, 
-    7264, 7266, 7268, 7270, 7272, 7274, 7276, 7278, 7280, 7282, 7284, 7286, 
-    7288, 7290, 7292, 7294, 7296, 7298, 7300, 7302, 7304, 7306, 7308, 7310, 
-    7312, 7314, 7316, 7318, 7320, 7322, 7324, 7326, 7328, 7330, 7332, 7334, 
-    0, 0, 7336, 7338, 7340, 7342, 7344, 7346, 7348, 7350, 7352, 7354, 7356, 
-    7358, 7360, 7362, 7364, 7366, 7368, 7370, 7372, 7374, 7376, 7378, 7380, 
-    7382, 7384, 7386, 7388, 7390, 7392, 7394, 7396, 7398, 7400, 7402, 7404, 
-    7406, 7408, 7410, 7412, 7414, 7416, 7418, 7420, 7422, 7424, 7426, 7428, 
-    7430, 7432, 7434, 7436, 7438, 7440, 7442, 7444, 7446, 7448, 7450, 7452, 
-    7454, 7456, 7458, 7460, 7462, 7464, 7466, 7468, 7470, 7472, 7474, 7476, 
-    7478, 7480, 7482, 7484, 7486, 7488, 7490, 7492, 7494, 7496, 7498, 7500, 
-    7502, 7504, 7506, 7508, 7510, 7512, 7514, 7516, 7518, 7520, 7522, 7524, 
-    7526, 7528, 7530, 7532, 7534, 7536, 7538, 7540, 7542, 7544, 7546, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7548, 7551, 7554, 7557, 7561, 7565, 
-    7568, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7571, 7574, 7577, 7580, 7583, 
-    0, 0, 0, 0, 0, 7586, 0, 7589, 7592, 7594, 7596, 7598, 7600, 7602, 7604, 
-    7606, 7608, 7610, 7612, 7615, 7618, 7621, 7624, 7627, 7630, 7633, 7636, 
-    7639, 7642, 7645, 7648, 0, 7651, 7654, 7657, 7660, 7663, 0, 7666, 0, 
-    7669, 7672, 0, 7675, 7678, 0, 7681, 7684, 7687, 7690, 7693, 7696, 7699, 
-    7702, 7705, 7708, 7711, 7713, 7715, 7717, 7719, 7721, 7723, 7725, 7727, 
-    7729, 7731, 7733, 7735, 7737, 7739, 7741, 7743, 7745, 7747, 7749, 7751, 
-    7753, 7755, 7757, 7759, 7761, 7763, 7765, 7767, 7769, 7771, 7773, 7775, 
-    7777, 7779, 7781, 7783, 7785, 7787, 7789, 7791, 7793, 7795, 7797, 7799, 
-    7801, 7803, 7805, 7807, 7809, 7811, 7813, 7815, 7817, 7819, 7821, 7823, 
-    7825, 7827, 7829, 7831, 7833, 7835, 7837, 7839, 7841, 7843, 7845, 7847, 
-    7849, 7851, 7853, 7855, 7857, 7859, 7861, 7863, 7865, 7867, 7869, 7871, 
-    7873, 7875, 7877, 7879, 7881, 7883, 7885, 7887, 7889, 7891, 7893, 7895, 
-    7897, 7899, 7901, 7903, 7905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7907, 7909, 
-    7911, 7913, 7915, 7917, 7919, 7921, 7923, 7925, 7927, 7929, 7931, 7933, 
-    7935, 7937, 7939, 7941, 7943, 7945, 7947, 7949, 7951, 7953, 7956, 7959, 
-    7962, 7965, 7968, 7971, 7974, 7977, 7980, 7983, 7986, 7989, 7992, 7995, 
-    7998, 8001, 8004, 8007, 8009, 8011, 8013, 8015, 8018, 8021, 8024, 8027, 
-    8030, 8033, 8036, 8039, 8042, 8045, 8048, 8051, 8054, 8057, 8060, 8063, 
-    8066, 8069, 8072, 8075, 8078, 8081, 8084, 8087, 8090, 8093, 8096, 8099, 
-    8102, 8105, 8108, 8111, 8114, 8117, 8120, 8123, 8126, 8129, 8132, 8135, 
-    8138, 8141, 8144, 8147, 8150, 8153, 8156, 8159, 8162, 8165, 8168, 8171, 
-    8174, 8177, 8180, 8183, 8186, 8189, 8192, 8195, 8198, 8201, 8204, 8207, 
-    8210, 8213, 8216, 8219, 8222, 8225, 8228, 8231, 8234, 8237, 8240, 8243, 
-    8246, 8249, 8252, 8255, 8258, 8261, 8264, 8267, 8270, 8273, 8276, 8279, 
-    8282, 8285, 8288, 8291, 8294, 8297, 8301, 8305, 8309, 8313, 8317, 8321, 
-    8324, 8327, 8330, 8333, 8336, 8339, 8342, 8345, 8348, 8351, 8354, 8357, 
-    8360, 8363, 8366, 8369, 8372, 8375, 8378, 8381, 8384, 8387, 8390, 8393, 
-    8396, 8399, 8402, 8405, 8408, 8411, 8414, 8417, 8420, 8423, 8426, 8429, 
-    8432, 8435, 8438, 8441, 8444, 8447, 8450, 8453, 8456, 8459, 8462, 8465, 
-    8468, 8471, 8474, 8477, 8480, 8483, 8486, 8489, 8492, 8495, 8498, 8501, 
-    8504, 8507, 8510, 8513, 8516, 8519, 8522, 8525, 8528, 8531, 8534, 8537, 
-    8540, 8543, 8546, 8549, 8552, 8555, 8558, 8561, 8564, 8567, 8570, 8573, 
-    8576, 8579, 8582, 8585, 8588, 8591, 8594, 8597, 8600, 8603, 8606, 8609, 
-    8612, 8615, 8618, 8621, 8624, 8627, 8630, 8633, 8636, 8639, 8642, 8645, 
-    8648, 8651, 8654, 8657, 8660, 8663, 8666, 8669, 8672, 8675, 8678, 8681, 
-    8684, 8687, 8690, 8693, 8696, 8699, 8702, 8705, 8708, 8711, 8714, 8717, 
-    8720, 8723, 8726, 8729, 8732, 8735, 8738, 8741, 8744, 8747, 8751, 8755, 
-    8759, 8762, 8765, 8768, 8771, 8774, 8777, 8780, 8783, 8786, 8789, 8792, 
-    8795, 8798, 8801, 8804, 8807, 8810, 8813, 8816, 8819, 8822, 8825, 8828, 
-    8831, 8834, 8837, 8840, 8843, 8846, 8849, 8852, 8855, 8858, 8861, 8864, 
-    8867, 8870, 8873, 8876, 8879, 8882, 8885, 8888, 8891, 8894, 8897, 8900, 
-    8903, 8906, 8909, 8912, 8915, 8918, 8921, 8924, 8927, 8930, 8933, 8936, 
-    8939, 8942, 8945, 8948, 8951, 8954, 8957, 8960, 8963, 8966, 8969, 8972, 
-    8975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8978, 8982, 
-    8986, 8990, 8994, 8998, 9002, 9006, 9010, 9014, 9018, 9022, 9026, 9030, 
-    9034, 9038, 9042, 9046, 9050, 9054, 9058, 9062, 9066, 9070, 9074, 9078, 
-    9082, 9086, 9090, 9094, 9098, 9102, 9106, 9110, 9114, 9118, 9122, 9126, 
-    9130, 9134, 9138, 9142, 9146, 9150, 9154, 9158, 9162, 9166, 9170, 9174, 
-    9178, 9182, 9186, 9190, 9194, 9198, 9202, 9206, 9210, 9214, 9218, 9222, 
-    9226, 9230, 0, 0, 9234, 9238, 9242, 9246, 9250, 9254, 9258, 9262, 9266, 
-    9270, 9274, 9278, 9282, 9286, 9290, 9294, 9298, 9302, 9306, 9310, 9314, 
-    9318, 9322, 9326, 9330, 9334, 9338, 9342, 9346, 9350, 9354, 9358, 9362, 
-    9366, 9370, 9374, 9378, 9382, 9386, 9390, 9394, 9398, 9402, 9406, 9410, 
-    9414, 9418, 9422, 9426, 9430, 9434, 9438, 9442, 9446, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9450, 9454, 9458, 9463, 9468, 9473, 9478, 
-    9483, 9488, 9493, 9497, 9516, 9525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 9530, 9532, 9534, 9536, 9538, 9540, 9542, 9544, 
-    9546, 9548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 9550, 9552, 9554, 9556, 9558, 9560, 9562, 9564, 9566, 9568, 9570, 
-    9572, 9574, 9576, 9578, 9580, 9582, 9584, 9586, 9588, 9590, 0, 0, 9592, 
-    9594, 9596, 9598, 9600, 9602, 9604, 9606, 9608, 9610, 9612, 9614, 0, 
-    9616, 9618, 9620, 9622, 9624, 9626, 9628, 9630, 9632, 9634, 9636, 9638, 
-    9640, 9642, 9644, 9646, 9648, 9650, 9652, 0, 9654, 9656, 9658, 9660, 0, 
-    0, 0, 0, 9662, 9665, 9668, 0, 9671, 0, 9674, 9677, 9680, 9683, 9686, 
-    9689, 9692, 9695, 9698, 9701, 9704, 9706, 9708, 9710, 9712, 9714, 9716, 
-    9718, 9720, 9722, 9724, 9726, 9728, 9730, 9732, 9734, 9736, 9738, 9740, 
-    9742, 9744, 9746, 9748, 9750, 9752, 9754, 9756, 9758, 9760, 9762, 9764, 
-    9766, 9768, 9770, 9772, 9774, 9776, 9778, 9780, 9782, 9784, 9786, 9788, 
-    9790, 9792, 9794, 9796, 9798, 9800, 9802, 9804, 9806, 9808, 9810, 9812, 
-    9814, 9816, 9818, 9820, 9822, 9824, 9826, 9828, 9830, 9832, 9834, 9836, 
-    9838, 9840, 9842, 9844, 9846, 9848, 9850, 9852, 9854, 9856, 9858, 9860, 
-    9862, 9864, 9866, 9868, 9870, 9872, 9874, 9876, 9878, 9880, 9882, 9884, 
-    9886, 9888, 9890, 9892, 9894, 9896, 9898, 9900, 9902, 9904, 9906, 9908, 
-    9910, 9912, 9914, 9916, 9918, 9920, 9922, 9924, 9926, 9928, 9930, 9932, 
-    9934, 9936, 9938, 9941, 9944, 9947, 9950, 9953, 9956, 9959, 0, 0, 0, 0, 
-    9962, 9964, 9966, 9968, 9970, 9972, 9974, 9976, 9978, 9980, 9982, 9984, 
-    9986, 9988, 9990, 9992, 9994, 9996, 9998, 10000, 10002, 10004, 10006, 
-    10008, 10010, 10012, 10014, 10016, 10018, 10020, 10022, 10024, 10026, 
-    10028, 10030, 10032, 10034, 10036, 10038, 10040, 10042, 10044, 10046, 
-    10048, 10050, 10052, 10054, 10056, 10058, 10060, 10062, 10064, 10066, 
-    10068, 10070, 10072, 10074, 10076, 10078, 10080, 10082, 10084, 10086, 
-    10088, 10090, 10092, 10094, 10096, 10098, 10100, 10102, 10104, 10106, 
-    10108, 10110, 10112, 10114, 10116, 10118, 10120, 10122, 10124, 10126, 
-    10128, 10130, 10132, 10134, 10136, 10138, 10140, 10142, 10144, 10146, 
-    10148, 10150, 10152, 10154, 10156, 10158, 10160, 10162, 10164, 10166, 
-    10168, 10170, 10172, 10174, 10176, 10178, 10180, 10182, 10184, 10186, 
-    10188, 10190, 10192, 10194, 10196, 10198, 10200, 10202, 10204, 10206, 
-    10208, 10210, 10212, 10214, 10216, 10218, 10220, 10222, 10224, 10226, 
-    10228, 10230, 10232, 10234, 10236, 10238, 10240, 10242, 10244, 10246, 
-    10248, 10250, 10252, 10254, 10256, 10258, 10260, 10262, 10264, 10266, 
-    10268, 10270, 10272, 10274, 10276, 10278, 10280, 10282, 10284, 10286, 
-    10288, 10290, 10292, 10294, 10296, 10298, 10300, 10302, 10304, 10306, 
-    10308, 10310, 10312, 10314, 10316, 10318, 10320, 10322, 10324, 10326, 
-    10328, 10330, 10332, 10334, 10336, 10338, 10340, 0, 0, 0, 10342, 10344, 
-    10346, 10348, 10350, 10352, 0, 0, 10354, 10356, 10358, 10360, 10362, 
-    10364, 0, 0, 10366, 10368, 10370, 10372, 10374, 10376, 0, 0, 10378, 
-    10380, 10382, 0, 0, 0, 10384, 10386, 10388, 10390, 10392, 10394, 10396, 
-    0, 10398, 10400, 10402, 10404, 10406, 10408, 10410, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10412, 0, 
-    10415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10418, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 10421, 10424, 10427, 10430, 10433, 10436, 10439, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10442, 10445, 10448, 10451, 10454, 10457, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10460, 10462, 10464, 10466, 
-    10468, 10470, 10472, 10474, 10476, 10478, 10480, 10482, 10484, 10486, 
-    10488, 10490, 10492, 10494, 10496, 10498, 10500, 10502, 10504, 10506, 
-    10508, 10510, 10512, 10514, 10516, 10518, 10520, 10522, 10524, 10526, 
-    10528, 10530, 10532, 10534, 10536, 10538, 10540, 10542, 10544, 10546, 
-    10548, 10550, 10552, 10554, 10556, 10558, 10560, 10562, 10564, 10566, 
-    10568, 10570, 10572, 10574, 10576, 10578, 10580, 10582, 10584, 10586, 
-    10588, 10590, 10592, 10594, 10596, 10598, 10600, 10602, 10604, 10606, 
-    10608, 10610, 10612, 10614, 10616, 10618, 10620, 10622, 10624, 10626, 
-    10628, 0, 10630, 10632, 10634, 10636, 10638, 10640, 10642, 10644, 10646, 
-    10648, 10650, 10652, 10654, 10656, 10658, 10660, 10662, 10664, 10666, 
-    10668, 10670, 10672, 10674, 10676, 10678, 10680, 10682, 10684, 10686, 
-    10688, 10690, 10692, 10694, 10696, 10698, 10700, 10702, 10704, 10706, 
-    10708, 10710, 10712, 10714, 10716, 10718, 10720, 10722, 10724, 10726, 
-    10728, 10730, 10732, 10734, 10736, 10738, 10740, 10742, 10744, 10746, 
-    10748, 10750, 10752, 10754, 10756, 10758, 10760, 10762, 10764, 10766, 
-    10768, 10770, 0, 10772, 10774, 0, 0, 10776, 0, 0, 10778, 10780, 0, 0, 
-    10782, 10784, 10786, 10788, 0, 10790, 10792, 10794, 10796, 10798, 10800, 
-    10802, 10804, 10806, 10808, 10810, 10812, 0, 10814, 0, 10816, 10818, 
-    10820, 10822, 10824, 10826, 10828, 0, 10830, 10832, 10834, 10836, 10838, 
-    10840, 10842, 10844, 10846, 10848, 10850, 10852, 10854, 10856, 10858, 
-    10860, 10862, 10864, 10866, 10868, 10870, 10872, 10874, 10876, 10878, 
-    10880, 10882, 10884, 10886, 10888, 10890, 10892, 10894, 10896, 10898, 
-    10900, 10902, 10904, 10906, 10908, 10910, 10912, 10914, 10916, 10918, 
-    10920, 10922, 10924, 10926, 10928, 10930, 10932, 10934, 10936, 10938, 
-    10940, 10942, 10944, 10946, 10948, 10950, 10952, 10954, 10956, 10958, 0, 
-    10960, 10962, 10964, 10966, 0, 0, 10968, 10970, 10972, 10974, 10976, 
-    10978, 10980, 10982, 0, 10984, 10986, 10988, 10990, 10992, 10994, 10996, 
-    0, 10998, 11000, 11002, 11004, 11006, 11008, 11010, 11012, 11014, 11016, 
-    11018, 11020, 11022, 11024, 11026, 11028, 11030, 11032, 11034, 11036, 
-    11038, 11040, 11042, 11044, 11046, 11048, 11050, 11052, 0, 11054, 11056, 
-    11058, 11060, 0, 11062, 11064, 11066, 11068, 11070, 0, 11072, 0, 0, 0, 
-    11074, 11076, 11078, 11080, 11082, 11084, 11086, 0, 11088, 11090, 11092, 
-    11094, 11096, 11098, 11100, 11102, 11104, 11106, 11108, 11110, 11112, 
-    11114, 11116, 11118, 11120, 11122, 11124, 11126, 11128, 11130, 11132, 
-    11134, 11136, 11138, 11140, 11142, 11144, 11146, 11148, 11150, 11152, 
-    11154, 11156, 11158, 11160, 11162, 11164, 11166, 11168, 11170, 11172, 
-    11174, 11176, 11178, 11180, 11182, 11184, 11186, 11188, 11190, 11192, 
-    11194, 11196, 11198, 11200, 11202, 11204, 11206, 11208, 11210, 11212, 
-    11214, 11216, 11218, 11220, 11222, 11224, 11226, 11228, 11230, 11232, 
-    11234, 11236, 11238, 11240, 11242, 11244, 11246, 11248, 11250, 11252, 
-    11254, 11256, 11258, 11260, 11262, 11264, 11266, 11268, 11270, 11272, 
-    11274, 11276, 11278, 11280, 11282, 11284, 11286, 11288, 11290, 11292, 
-    11294, 11296, 11298, 11300, 11302, 11304, 11306, 11308, 11310, 11312, 
-    11314, 11316, 11318, 11320, 11322, 11324, 11326, 11328, 11330, 11332, 
-    11334, 11336, 11338, 11340, 11342, 11344, 11346, 11348, 11350, 11352, 
-    11354, 11356, 11358, 11360, 11362, 11364, 11366, 11368, 11370, 11372, 
-    11374, 11376, 11378, 11380, 11382, 11384, 11386, 11388, 11390, 11392, 
-    11394, 11396, 11398, 11400, 11402, 11404, 11406, 11408, 11410, 11412, 
-    11414, 11416, 11418, 11420, 11422, 11424, 11426, 11428, 11430, 11432, 
-    11434, 11436, 11438, 11440, 11442, 11444, 11446, 11448, 11450, 11452, 
-    11454, 11456, 11458, 11460, 11462, 11464, 11466, 11468, 11470, 11472, 
-    11474, 11476, 11478, 11480, 11482, 11484, 11486, 11488, 11490, 11492, 
-    11494, 11496, 11498, 11500, 11502, 11504, 11506, 11508, 11510, 11512, 
-    11514, 11516, 11518, 11520, 11522, 11524, 11526, 11528, 11530, 11532, 
-    11534, 11536, 11538, 11540, 11542, 11544, 11546, 11548, 11550, 11552, 
-    11554, 11556, 11558, 11560, 11562, 11564, 11566, 11568, 11570, 11572, 
-    11574, 11576, 11578, 11580, 11582, 11584, 11586, 11588, 11590, 11592, 
-    11594, 11596, 11598, 11600, 11602, 11604, 11606, 11608, 11610, 11612, 
-    11614, 11616, 11618, 11620, 11622, 11624, 11626, 11628, 11630, 11632, 
-    11634, 11636, 11638, 11640, 11642, 11644, 11646, 11648, 11650, 11652, 
-    11654, 11656, 11658, 11660, 11662, 11664, 11666, 11668, 11670, 11672, 
-    11674, 11676, 11678, 11680, 11682, 11684, 11686, 11688, 11690, 11692, 
-    11694, 11696, 11698, 11700, 11702, 11704, 11706, 11708, 11710, 11712, 
-    11714, 11716, 11718, 11720, 11722, 11724, 11726, 11728, 11730, 11732, 
-    11734, 11736, 11738, 11740, 11742, 11744, 11746, 11748, 11750, 11752, 
-    11754, 11756, 11758, 11760, 11762, 11764, 11766, 0, 0, 11768, 11770, 
-    11772, 11774, 11776, 11778, 11780, 11782, 11784, 11786, 11788, 11790, 
-    11792, 11794, 11796, 11798, 11800, 11802, 11804, 11806, 11808, 11810, 
-    11812, 11814, 11816, 11818, 11820, 11822, 11824, 11826, 11828, 11830, 
-    11832, 11834, 11836, 11838, 11840, 11842, 11844, 11846, 11848, 11850, 
-    11852, 11854, 11856, 11858, 11860, 11862, 11864, 11866, 11868, 11870, 
-    11872, 11874, 11876, 11878, 11880, 11882, 11884, 11886, 11888, 11890, 
-    11892, 11894, 11896, 11898, 11900, 11902, 11904, 11906, 11908, 11910, 
-    11912, 11914, 11916, 11918, 11920, 11922, 11924, 11926, 11928, 11930, 
-    11932, 11934, 11936, 11938, 11940, 11942, 11944, 11946, 11948, 11950, 
-    11952, 11954, 11956, 11958, 11960, 11962, 11964, 11966, 11968, 11970, 
-    11972, 11974, 11976, 11978, 11980, 11982, 11984, 11986, 11988, 11990, 
-    11992, 11994, 11996, 11998, 12000, 12002, 12004, 12006, 12008, 12010, 
-    12012, 12014, 12016, 12018, 12020, 12022, 12024, 12026, 12028, 12030, 
-    12032, 12034, 12036, 12038, 12040, 12042, 12044, 12046, 12048, 12050, 
-    12052, 12054, 12056, 12058, 12060, 12062, 12064, 12066, 12068, 12070, 
-    12072, 12074, 12076, 12078, 12080, 12082, 12084, 12086, 12088, 12090, 
-    12092, 12094, 12096, 12098, 12100, 12102, 12104, 12106, 12108, 12110, 
-    12112, 12114, 12116, 12118, 12120, 12122, 12124, 12126, 12128, 12130, 
-    12132, 12134, 12136, 12138, 12140, 12142, 12144, 12146, 12148, 12150, 
-    12152, 12154, 12156, 12158, 12160, 12162, 12164, 12166, 12168, 12170, 
-    12172, 12174, 12176, 12178, 12180, 12182, 12184, 12186, 12188, 12190, 
-    12192, 12194, 12196, 12198, 12200, 12202, 12204, 12206, 12208, 12210, 
-    12212, 12214, 12216, 12218, 12220, 12222, 12224, 12226, 12228, 12230, 
-    12232, 12234, 12236, 12238, 12240, 12242, 12244, 12246, 12248, 12250, 
-    12252, 12254, 12256, 12258, 12260, 12262, 12264, 12266, 12268, 12270, 
-    12272, 12274, 12276, 12278, 12280, 12282, 12284, 12286, 12288, 12290, 
-    12292, 12294, 12296, 12298, 12300, 12302, 12304, 12306, 12308, 12310, 
-    12312, 12314, 12316, 12318, 12320, 12322, 12324, 12326, 12328, 12330, 
-    12332, 12334, 12336, 12338, 12340, 12342, 12344, 12346, 12348, 12350, 0, 
-    0, 12352, 12354, 12356, 12358, 12360, 12362, 12364, 12366, 12368, 12370, 
-    12372, 12374, 12376, 12378, 12380, 12382, 12384, 12386, 12388, 12390, 
-    12392, 12394, 12396, 12398, 12400, 12402, 12404, 12406, 12408, 12410, 
-    12412, 12414, 12416, 12418, 12420, 12422, 12424, 12426, 12428, 12430, 
-    12432, 12434, 12436, 12438, 12440, 12442, 12444, 12446, 12448, 12450, 
-    12452, 12455, 12458, 12461, 12464, 12467, 12470, 12473, 12476, 12479, 
-    12482, 0, 0, 0, 0, 0, 12485, 12489, 12493, 12497, 12501, 12505, 12509, 
-    12513, 12517, 12521, 12525, 12529, 12533, 12537, 12541, 12545, 12549, 
-    12553, 12557, 12561, 12565, 12569, 12573, 12577, 12581, 12585, 12589, 
-    12593, 12595, 12597, 12600, 0, 0, 12603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    12605, 0, 12607, 0, 0, 12609, 0, 0, 0, 12611, 0, 0, 0, 12613, 12616, 
-    12619, 12622, 12625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    12629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12632, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12635, 12637, 12639, 12641, 12643, 12645, 
-    12647, 12649, 12651, 12653, 12655, 12657, 12659, 12661, 12663, 12665, 
-    12667, 12669, 12671, 12673, 12675, 12677, 12679, 12681, 12683, 12685, 
-    12687, 12689, 12691, 12693, 12695, 12697, 12699, 12701, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 12703, 12707, 12711, 12715, 12719, 12723, 12727, 
-    12731, 12735, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12739, 12741, 
-    12743, 12745, 12747, 12749, 12751, 12753, 12755, 12757, 12759, 12761, 
-    12763, 12765, 12767, 12769, 12771, 12773, 12775, 12777, 12779, 12781, 
-    12783, 12785, 12787, 12789, 12791, 12793, 12795, 12797, 12799, 12801, 
-    12803, 12805, 12807, 12809, 12811, 12813, 12815, 12817, 12819, 12821, 
-    12823, 12825, 12827, 12829, 12831, 12833, 12835, 12837, 12839, 12841, 
-    12843, 12845, 12847, 12849, 12851, 12853, 12855, 12857, 12859, 12861, 
-    12863, 12865, 12867, 12869, 12871, 12873, 12875, 12877, 12879, 12881, 
-    12883, 12885, 12887, 12889, 12891, 12893, 12895, 12897, 12899, 12901, 
-    12903, 12905, 12907, 12909, 12911, 12913, 12915, 12917, 12919, 12921, 
-    12923, 12925, 12927, 12929, 12931, 12933, 12935, 12937, 12939, 12941, 
-    12943, 12945, 12947, 12949, 12951, 12953, 12955, 12957, 12959, 12961, 
-    12963, 12965, 12967, 12969, 12971, 12973, 12975, 12977, 12979, 12981, 
-    12983, 12985, 12987, 12989, 12991, 12993, 12995, 12997, 12999, 13001, 
-    13003, 13005, 13007, 13009, 13011, 13013, 13015, 13017, 13019, 13021, 
-    13023, 13025, 13027, 13029, 13031, 13033, 13035, 13037, 13039, 13041, 
-    13043, 13045, 13047, 13049, 13051, 13053, 13055, 13057, 13059, 13061, 
-    13063, 13065, 13067, 13069, 13071, 13073, 13075, 13077, 13079, 13081, 
-    13083, 13085, 13087, 13089, 13091, 13093, 13095, 13097, 13099, 13101, 
-    13103, 13105, 13107, 13109, 13111, 13113, 13115, 13117, 13119, 13121, 
-    13123, 13125, 13127, 13129, 13131, 13133, 13135, 13137, 13139, 13141, 
-    13143, 13145, 13147, 13149, 13151, 13153, 13155, 13157, 13159, 13161, 
-    13163, 13165, 13167, 13169, 13171, 13173, 13175, 13177, 13179, 13181, 
-    13183, 13185, 13187, 13189, 13191, 13193, 13195, 13197, 13199, 13201, 
-    13203, 13205, 13207, 13209, 13211, 13213, 13215, 13217, 13219, 13221, 
-    13223, 13225, 13227, 13229, 13231, 13233, 13235, 13237, 13239, 13241, 
-    13243, 13245, 13247, 13249, 13251, 13253, 13255, 13257, 13259, 13261, 
-    13263, 13265, 13267, 13269, 13271, 13273, 13275, 13277, 13279, 13281, 
-    13283, 13285, 13287, 13289, 13291, 13293, 13295, 13297, 13299, 13301, 
-    13303, 13305, 13307, 13309, 13311, 13313, 13315, 13317, 13319, 13321, 
-    13323, 13325, 13327, 13329, 13331, 13333, 13335, 13337, 13339, 13341, 
-    13343, 13345, 13347, 13349, 13351, 13353, 13355, 13357, 13359, 13361, 
-    13363, 13365, 13367, 13369, 13371, 13373, 13375, 13377, 13379, 13381, 
-    13383, 13385, 13387, 13389, 13391, 13393, 13395, 13397, 13399, 13401, 
-    13403, 13405, 13407, 13409, 13411, 13413, 13415, 13417, 13419, 13421, 
-    13423, 13425, 13427, 13429, 13431, 13433, 13435, 13437, 13439, 13441, 
-    13443, 13445, 13447, 13449, 13451, 13453, 13455, 13457, 13459, 13461, 
-    13463, 13465, 13467, 13469, 13471, 13473, 13475, 13477, 13479, 13481, 
-    13483, 13485, 13487, 13489, 13491, 13493, 13495, 13497, 13499, 13501, 
-    13503, 13505, 13507, 13509, 13511, 13513, 13515, 13517, 13519, 13521, 
-    13523, 13525, 13527, 13529, 13531, 13533, 13535, 13537, 13539, 13541, 
-    13543, 13545, 13547, 13549, 13551, 13553, 13555, 13557, 13559, 13561, 
-    13563, 13565, 13567, 13569, 13571, 13573, 13575, 13577, 13579, 13581, 
-    13583, 13585, 13587, 13589, 13591, 13593, 13595, 13597, 13599, 13601, 
-    13603, 13605, 13607, 13609, 13611, 13613, 13615, 13617, 13619, 13621, 
-    13623, 13625, 13627, 13629, 13631, 13633, 13635, 13637, 13639, 13641, 
-    13643, 13645, 13647, 13649, 13651, 13653, 13655, 13657, 13659, 13661, 
-    13663, 13665, 13667, 13669, 13671, 13673, 13675, 13677, 13679, 13681, 
-    13683, 13685, 13687, 13689, 13691, 13693, 13695, 13697, 13699, 13701, 
-    13703, 13705, 13707, 13709, 13711, 13713, 13715, 13717, 13719, 13721, 
-    13723, 13725, 13727, 13729, 13731, 13733, 13735, 13737, 13739, 13741, 
-    13743, 13745, 13747, 13749, 13751, 13753, 13755, 13757, 13759, 13761, 
-    13763, 13765, 13767, 13769, 13771, 13773, 13775, 13777, 13779, 13781, 
-    13783, 13785, 13787, 13789, 13791, 13793, 13795, 13797, 13799, 13801, 
-    13803, 13805, 13807, 13809, 13811, 13813, 13815, 13817, 13819, 13821, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 
-};
-
-/* NFC pairs */
-#define COMP_SHIFT 2
-static unsigned short comp_index[] = {
-    0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 8, 9, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 11, 0, 12, 0, 0, 0, 0, 0, 0, 0, 13, 14, 
-    15, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 18, 19, 20, 21, 22, 0, 0, 0, 
-    0, 0, 0, 23, 24, 25, 26, 27, 28, 29, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 
-    35, 36, 37, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 41, 42, 43, 44, 45, 46, 47, 
-    0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 
-    50, 0, 51, 52, 53, 0, 0, 0, 0, 0, 0, 54, 0, 0, 55, 56, 57, 58, 59, 0, 0, 
-    0, 0, 0, 0, 60, 61, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, 65, 0, 
-    66, 67, 68, 0, 0, 0, 0, 0, 0, 69, 70, 71, 72, 73, 74, 75, 0, 0, 0, 0, 0, 
-    0, 0, 76, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 79, 0, 80, 81, 82, 
-    83, 0, 0, 0, 0, 0, 0, 0, 84, 85, 86, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 89, 90, 0, 91, 92, 93, 0, 0, 0, 0, 0, 0, 94, 95, 96, 97, 98, 99, 100, 
-    0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 
-    104, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 107, 108, 109, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 112, 
-    0, 113, 114, 0, 115, 0, 0, 0, 0, 0, 0, 0, 116, 117, 118, 119, 120, 121, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 123, 0, 124, 0, 0, 0, 0, 0, 0, 125, 
-    126, 127, 128, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 131, 132, 133, 
-    134, 0, 0, 0, 0, 0, 0, 0, 135, 136, 137, 138, 139, 140, 141, 0, 0, 0, 0, 
-    0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 144, 145, 146, 0, 
-    147, 0, 0, 0, 0, 0, 0, 0, 0, 148, 149, 150, 151, 152, 153, 154, 0, 0, 0, 
-    0, 0, 0, 0, 155, 156, 157, 158, 159, 160, 161, 0, 0, 0, 0, 0, 0, 0, 162, 
-    0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 165, 166, 167, 0, 168, 
-    0, 0, 0, 0, 0, 0, 169, 0, 0, 170, 171, 172, 173, 0, 0, 0, 0, 0, 0, 0, 
-    174, 175, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 177, 178, 179, 180, 0, 181, 
-    182, 183, 0, 0, 0, 0, 0, 0, 184, 185, 186, 187, 188, 0, 189, 0, 0, 0, 0, 
-    0, 0, 0, 190, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 194, 
-    195, 196, 197, 198, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 0, 202, 203, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 204, 205, 206, 207, 208, 209, 0, 0, 0, 0, 0, 0, 
-    210, 211, 212, 213, 214, 215, 216, 0, 0, 0, 0, 0, 0, 0, 217, 0, 0, 0, 
-    218, 0, 0, 0, 0, 0, 0, 0, 0, 219, 220, 221, 222, 0, 223, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, 0, 
-    228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 230, 231, 0, 232, 0, 233, 0, 0, 0, 
-    0, 0, 0, 234, 235, 0, 0, 0, 0, 0, 236, 0, 0, 0, 0, 0, 0, 237, 238, 239, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 245, 246, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    248, 249, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 252, 253, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 257, 0, 258, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 259, 260, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 266, 267, 268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 270, 271, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 273, 274, 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 276, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, 279, 
-    0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 281, 282, 283, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 284, 285, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 287, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 288, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 291, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 293, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 298, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 0, 0, 304, 0, 0, 0, 
-    0, 0, 0, 0, 0, 305, 306, 307, 0, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, 
-    310, 311, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 0, 314, 0, 315, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 326, 327, 0, 328, 329, 0, 0, 330, 0, 0, 0, 0, 0, 0, 331, 0, 
-    0, 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, 334, 0, 0, 335, 0, 0, 0, 336, 0, 
-    0, 0, 0, 0, 337, 338, 339, 0, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 341, 0, 0, 
-    342, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 344, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 345, 346, 347, 0, 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 0, 0, 0, 
-    350, 0, 0, 351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, 354, 355, 356, 0, 357, 0, 
-    0, 358, 359, 0, 0, 0, 0, 0, 360, 0, 0, 0, 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    362, 0, 0, 363, 364, 0, 0, 365, 0, 0, 0, 0, 0, 0, 366, 367, 0, 368, 0, 0, 
-    0, 369, 0, 0, 0, 0, 0, 370, 371, 0, 0, 372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 374, 375, 376, 377, 378, 0, 0, 
-    379, 0, 0, 0, 0, 0, 0, 380, 0, 0, 381, 0, 0, 0, 382, 0, 0, 0, 0, 0, 383, 
-    384, 0, 0, 0, 0, 0, 385, 0, 0, 0, 0, 0, 0, 386, 0, 0, 0, 0, 0, 0, 387, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 392, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 395, 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 397, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 399, 400, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 402, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 404, 
-    405, 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 409, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 410, 411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 413, 414, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 417, 418, 419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 421, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 422, 423, 424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 428, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 433, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 434, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 435, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 436, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 438, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 439, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 441, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 443, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 448, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 449, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 451, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 453, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 454, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 455, 456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 457, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 458, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 459, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 462, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 464, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 466, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 467, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 468, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 469, 0, 
-    470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 471, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 473, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 476, 477, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 479, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 482, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 483, 0, 0, 0, 0, 0, 0, 484, 0, 0, 0, 0, 0, 0, 485, 0, 0, 0, 
-    0, 0, 0, 486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 487, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 489, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 492, 0, 0, 0, 0, 0, 0, 
-    493, 0, 0, 0, 0, 0, 0, 494, 0, 0, 0, 0, 0, 0, 495, 0, 0, 0, 0, 0, 0, 496, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 499, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 501, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 502, 0, 0, 0, 0, 0, 0, 503, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 505, 
-    506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 508, 0, 0, 0, 0, 0, 0, 509, 0, 0, 0, 0, 0, 0, 510, 0, 0, 0, 
-    0, 0, 0, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 514, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 517, 0, 0, 0, 0, 0, 0, 
-    518, 0, 0, 0, 0, 0, 0, 519, 0, 0, 0, 0, 0, 0, 520, 0, 0, 0, 0, 0, 0, 521, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 524, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 526, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 527, 0, 0, 0, 0, 0, 0, 528, 0, 0, 0, 0, 
-    0, 0, 529, 0, 0, 0, 0, 0, 0, 530, 0, 0, 0, 0, 0, 0, 531, 0, 0, 0, 0, 0, 
-    532, 533, 0, 0, 0, 0, 0, 534, 0, 0, 0, 0, 0, 0, 535, 0, 0, 0, 0, 0, 0, 
-    536, 0, 0, 0, 0, 0, 0, 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 538, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 539, 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 542, 0, 0, 0, 0, 0, 
-    0, 543, 0, 0, 0, 0, 0, 0, 544, 0, 0, 0, 0, 0, 0, 545, 0, 0, 0, 0, 0, 546, 
-    547, 0, 0, 0, 0, 0, 548, 0, 0, 0, 0, 0, 0, 549, 0, 0, 0, 0, 0, 0, 550, 0, 
-    0, 0, 0, 0, 0, 551, 0, 0, 0, 0, 0, 0, 552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 554, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 555, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 556, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 558, 0, 0, 0, 0, 0, 559, 0, 0, 0, 0, 0, 0, 560, 0, 0, 0, 0, 0, 0, 
-    561, 0, 0, 0, 0, 0, 0, 562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 563, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 564, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 566, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 568, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 571, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 572, 0, 0, 0, 0, 0, 573, 0, 0, 0, 0, 0, 0, 574, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 576, 0, 0, 0, 0, 0, 577, 578, 0, 0, 0, 0, 0, 579, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 581, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 584, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 586, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 589, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 591, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 592, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 596, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 598, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 601, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 602, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 603, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 608, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 611, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 613, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 618, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 619, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 621, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 624, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 626, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    628, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 631, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 632, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    633, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 634, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 635, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 636, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 637, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 639, 640, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 642, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    649, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 650, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 651, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 652, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 653, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 655, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 656, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 657, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    659, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 660, 661, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 663, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    665, 666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 669, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    671, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 672, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 673, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 674, 
-};
-
-static unsigned int comp_data[] = {
-    0, 0, 0, 0, 0, 0, 0, 8814, 0, 0, 8800, 0, 0, 8815, 0, 0, 0, 192, 193, 
-    194, 195, 256, 258, 550, 196, 7842, 197, 0, 461, 512, 514, 0, 0, 0, 7840, 
-    0, 7680, 0, 0, 260, 0, 0, 7682, 0, 0, 7684, 0, 0, 0, 0, 7686, 0, 262, 
-    264, 0, 0, 0, 266, 0, 0, 0, 0, 268, 0, 199, 0, 0, 0, 7690, 0, 0, 0, 0, 
-    270, 0, 0, 0, 0, 0, 7692, 0, 0, 0, 7696, 0, 7698, 0, 0, 7694, 0, 0, 0, 0, 
-    200, 201, 202, 7868, 274, 276, 278, 203, 7866, 0, 0, 282, 516, 518, 0, 0, 
-    0, 7864, 0, 0, 0, 552, 280, 7704, 0, 7706, 0, 0, 0, 7710, 0, 500, 284, 0, 
-    7712, 286, 288, 0, 0, 0, 0, 486, 0, 290, 0, 0, 0, 292, 0, 0, 0, 7714, 
-    7718, 0, 0, 0, 542, 0, 0, 0, 0, 0, 7716, 0, 0, 0, 7720, 0, 0, 7722, 0, 0, 
-    204, 205, 206, 296, 298, 300, 304, 207, 7880, 0, 0, 463, 520, 522, 0, 0, 
-    0, 7882, 0, 0, 0, 0, 302, 0, 0, 7724, 0, 0, 0, 308, 0, 7728, 0, 0, 0, 0, 
-    0, 488, 0, 7730, 0, 0, 0, 310, 0, 0, 0, 0, 7732, 0, 0, 0, 0, 0, 313, 0, 
-    317, 0, 0, 0, 0, 0, 7734, 0, 0, 0, 315, 0, 7740, 0, 0, 7738, 0, 0, 0, 0, 
-    0, 7742, 0, 0, 0, 0, 7744, 0, 0, 7746, 0, 504, 323, 0, 209, 0, 0, 7748, 
-    0, 0, 0, 0, 327, 0, 7750, 0, 0, 0, 325, 0, 7754, 0, 0, 7752, 0, 0, 0, 0, 
-    210, 211, 212, 213, 332, 334, 558, 214, 7886, 0, 336, 465, 524, 526, 0, 
-    0, 416, 7884, 0, 0, 0, 0, 490, 0, 0, 0, 0, 0, 7764, 7766, 0, 0, 0, 0, 0, 
-    340, 0, 0, 0, 0, 7768, 344, 528, 530, 0, 0, 0, 7770, 0, 0, 0, 342, 0, 0, 
-    0, 0, 7774, 0, 346, 348, 0, 0, 0, 7776, 0, 0, 0, 0, 352, 0, 7778, 0, 0, 
-    536, 350, 0, 0, 0, 7786, 0, 0, 0, 0, 356, 0, 7788, 0, 0, 538, 354, 0, 
-    7792, 0, 0, 7790, 0, 0, 0, 0, 217, 218, 219, 360, 362, 364, 0, 220, 7910, 
-    366, 368, 467, 532, 534, 0, 0, 431, 7908, 7794, 0, 0, 0, 370, 7798, 0, 
-    7796, 7804, 0, 0, 0, 0, 0, 7806, 0, 7808, 7810, 372, 0, 0, 0, 7814, 7812, 
-    0, 7816, 0, 0, 0, 7818, 7820, 0, 0, 0, 7922, 221, 374, 7928, 562, 0, 
-    7822, 376, 7926, 0, 0, 0, 0, 7924, 0, 0, 377, 7824, 0, 0, 0, 379, 381, 0, 
-    0, 0, 0, 0, 7826, 0, 0, 0, 0, 7828, 224, 225, 226, 227, 257, 259, 551, 
-    228, 7843, 229, 0, 462, 513, 515, 0, 0, 0, 7841, 0, 7681, 0, 0, 261, 0, 
-    0, 7683, 0, 0, 7685, 0, 0, 0, 0, 7687, 0, 0, 0, 0, 0, 263, 265, 0, 0, 0, 
-    267, 0, 0, 0, 0, 269, 0, 0, 0, 0, 0, 231, 0, 0, 0, 7691, 271, 0, 0, 0, 0, 
-    0, 7693, 0, 0, 0, 7697, 0, 7699, 0, 0, 7695, 232, 233, 234, 7869, 275, 
-    277, 279, 235, 7867, 0, 0, 283, 517, 519, 0, 0, 0, 7865, 0, 0, 0, 553, 
-    281, 7705, 0, 7707, 0, 0, 0, 7711, 0, 0, 0, 0, 0, 501, 285, 0, 7713, 287, 
-    289, 0, 0, 0, 0, 487, 0, 0, 0, 0, 0, 291, 0, 0, 0, 293, 0, 0, 0, 7715, 
-    7719, 0, 0, 0, 543, 0, 0, 0, 0, 0, 7717, 0, 0, 0, 7721, 0, 0, 7723, 0, 
-    7830, 236, 237, 238, 297, 299, 301, 0, 239, 7881, 0, 0, 464, 521, 523, 0, 
-    0, 0, 7883, 0, 0, 0, 0, 303, 0, 0, 7725, 0, 0, 0, 309, 0, 0, 0, 0, 496, 
-    0, 0, 0, 0, 7729, 0, 489, 0, 0, 0, 0, 0, 7731, 0, 0, 0, 311, 7733, 0, 0, 
-    0, 0, 0, 314, 0, 318, 0, 0, 0, 0, 0, 7735, 0, 0, 0, 316, 0, 7741, 0, 0, 
-    7739, 0, 7743, 0, 0, 0, 0, 7745, 0, 0, 7747, 0, 0, 0, 0, 0, 505, 324, 0, 
-    241, 0, 0, 7749, 0, 0, 0, 0, 328, 0, 7751, 0, 0, 0, 326, 0, 7755, 0, 0, 
-    7753, 0, 0, 0, 0, 242, 243, 244, 245, 333, 335, 559, 246, 7887, 0, 337, 
-    466, 525, 527, 0, 0, 417, 7885, 491, 0, 0, 0, 0, 0, 7765, 0, 0, 0, 0, 
-    7767, 0, 341, 0, 0, 0, 0, 7769, 0, 0, 0, 0, 345, 529, 531, 0, 0, 0, 7771, 
-    0, 0, 0, 343, 0, 0, 0, 0, 7775, 0, 347, 349, 0, 0, 0, 7777, 0, 0, 0, 0, 
-    353, 0, 7779, 0, 0, 537, 351, 0, 0, 0, 7787, 7831, 0, 0, 0, 357, 0, 0, 0, 
-    0, 0, 7789, 0, 0, 539, 355, 0, 7793, 0, 0, 7791, 0, 0, 0, 0, 249, 250, 
-    251, 361, 363, 365, 0, 252, 7911, 367, 369, 468, 533, 535, 0, 0, 432, 
-    7909, 7795, 0, 0, 0, 371, 7799, 0, 7797, 0, 0, 0, 0, 7805, 0, 7807, 0, 0, 
-    0, 0, 0, 7809, 7811, 373, 0, 0, 0, 7815, 7813, 0, 7832, 0, 0, 0, 7817, 0, 
-    0, 0, 7819, 7821, 0, 0, 0, 7923, 253, 375, 7929, 563, 0, 7823, 255, 7927, 
-    7833, 0, 0, 0, 7925, 0, 0, 378, 7825, 0, 0, 0, 380, 0, 0, 0, 0, 382, 0, 
-    7827, 0, 0, 0, 0, 7829, 0, 0, 0, 0, 8173, 901, 0, 0, 0, 0, 0, 0, 8129, 0, 
-    0, 7846, 7844, 0, 7850, 0, 0, 0, 0, 7848, 0, 0, 478, 0, 0, 0, 506, 0, 0, 
-    508, 0, 0, 482, 0, 0, 0, 7688, 0, 7872, 7870, 0, 7876, 0, 0, 0, 0, 7874, 
-    0, 0, 0, 7726, 0, 0, 0, 0, 0, 7890, 7888, 0, 7894, 0, 0, 0, 0, 7892, 0, 
-    0, 0, 7756, 0, 0, 556, 0, 0, 7758, 0, 0, 0, 554, 0, 0, 0, 510, 0, 0, 0, 
-    0, 0, 475, 471, 0, 0, 469, 0, 0, 473, 0, 0, 0, 7847, 7845, 0, 7851, 0, 0, 
-    0, 0, 7849, 0, 0, 479, 0, 0, 0, 507, 0, 0, 509, 0, 0, 483, 0, 0, 0, 7689, 
-    0, 7873, 7871, 0, 7877, 0, 0, 0, 0, 7875, 0, 0, 0, 7727, 0, 0, 0, 0, 0, 
-    7891, 7889, 0, 7895, 0, 0, 0, 0, 7893, 0, 0, 0, 7757, 0, 0, 557, 0, 0, 
-    7759, 0, 0, 0, 555, 0, 0, 0, 511, 0, 0, 0, 0, 0, 476, 472, 0, 0, 470, 0, 
-    0, 474, 0, 0, 0, 7856, 7854, 0, 7860, 0, 0, 0, 0, 7858, 0, 0, 7857, 7855, 
-    0, 7861, 0, 0, 0, 0, 7859, 0, 0, 7700, 7702, 0, 0, 0, 0, 0, 7701, 7703, 
-    0, 0, 0, 0, 0, 7760, 7762, 0, 7761, 7763, 0, 0, 0, 7780, 0, 0, 7781, 0, 
-    0, 7782, 0, 0, 0, 0, 0, 0, 7783, 0, 7800, 0, 0, 7801, 0, 0, 0, 0, 7802, 
-    0, 0, 7803, 0, 0, 0, 0, 0, 7835, 0, 0, 0, 0, 7900, 7898, 0, 7904, 0, 0, 
-    0, 0, 7902, 7906, 0, 0, 0, 0, 0, 7901, 7899, 0, 7905, 0, 0, 0, 0, 7903, 
-    0, 0, 0, 0, 7907, 0, 7914, 7912, 0, 7918, 0, 0, 0, 0, 7916, 0, 0, 0, 0, 
-    7920, 0, 7915, 7913, 0, 7919, 7917, 0, 0, 0, 0, 7921, 0, 0, 0, 0, 494, 0, 
-    0, 0, 492, 0, 0, 493, 0, 0, 480, 0, 0, 0, 0, 0, 0, 481, 0, 0, 0, 7708, 0, 
-    0, 7709, 0, 560, 0, 0, 0, 0, 0, 0, 561, 0, 495, 0, 0, 0, 8122, 902, 0, 0, 
-    8121, 8120, 0, 0, 0, 0, 7944, 7945, 0, 0, 0, 0, 0, 8124, 0, 8136, 904, 0, 
-    0, 0, 0, 7960, 7961, 0, 0, 0, 8138, 905, 0, 0, 0, 0, 7976, 7977, 0, 8140, 
-    0, 0, 0, 0, 0, 8154, 906, 0, 0, 8153, 8152, 0, 938, 0, 0, 7992, 7993, 0, 
-    0, 0, 8184, 908, 0, 0, 0, 0, 8008, 8009, 0, 0, 0, 0, 0, 0, 8172, 0, 0, 0, 
-    8170, 910, 0, 0, 8169, 8168, 0, 939, 0, 0, 0, 8025, 0, 0, 0, 8186, 911, 
-    8040, 8041, 0, 0, 0, 0, 0, 8188, 0, 0, 8116, 0, 0, 8132, 0, 0, 0, 0, 0, 
-    8048, 940, 0, 0, 8113, 8112, 0, 0, 0, 0, 7936, 7937, 0, 0, 0, 0, 8118, 
-    8115, 0, 0, 0, 0, 0, 8050, 941, 7952, 7953, 0, 0, 0, 8052, 942, 0, 0, 0, 
-    0, 7968, 7969, 0, 0, 0, 0, 8134, 8131, 0, 8054, 943, 0, 0, 8145, 8144, 0, 
-    970, 0, 0, 7984, 7985, 8150, 0, 0, 0, 0, 0, 0, 8056, 972, 0, 0, 0, 0, 
-    8000, 8001, 0, 8164, 8165, 0, 0, 0, 8058, 973, 0, 0, 8161, 8160, 0, 971, 
-    0, 0, 0, 0, 0, 0, 8016, 8017, 0, 0, 0, 0, 8166, 0, 0, 8060, 974, 0, 0, 0, 
-    0, 8032, 8033, 8182, 8179, 0, 0, 0, 0, 0, 8146, 912, 0, 0, 0, 0, 0, 0, 
-    8151, 0, 0, 8162, 944, 0, 0, 8167, 0, 0, 0, 8180, 0, 0, 979, 0, 0, 0, 0, 
-    0, 980, 0, 0, 1031, 0, 0, 0, 0, 1232, 0, 1234, 0, 0, 0, 0, 1027, 0, 1024, 
-    0, 0, 0, 0, 1238, 0, 1025, 1217, 0, 1244, 0, 0, 1246, 0, 0, 0, 1037, 0, 
-    0, 0, 1250, 1049, 0, 1252, 0, 0, 0, 0, 1036, 0, 0, 0, 0, 1254, 0, 0, 0, 
-    1262, 1038, 0, 1264, 0, 0, 1266, 0, 0, 0, 1268, 0, 0, 0, 0, 0, 0, 1272, 
-    0, 0, 1260, 0, 0, 0, 0, 1233, 0, 1235, 0, 0, 0, 0, 1107, 0, 1104, 0, 0, 
-    0, 0, 1239, 0, 1105, 1218, 0, 1245, 0, 0, 1247, 0, 0, 0, 1117, 0, 0, 0, 
-    1251, 1081, 0, 1253, 0, 0, 0, 0, 1116, 0, 0, 0, 0, 1255, 0, 0, 0, 1263, 
-    1118, 0, 1265, 0, 0, 1267, 0, 0, 0, 1269, 0, 0, 0, 0, 0, 0, 1273, 0, 0, 
-    1261, 0, 0, 1111, 0, 0, 0, 1142, 0, 0, 1143, 0, 0, 0, 0, 0, 1242, 0, 0, 
-    1243, 0, 0, 1258, 0, 0, 0, 0, 0, 0, 1259, 0, 1570, 1571, 1573, 0, 1572, 
-    0, 0, 1574, 0, 0, 0, 0, 0, 0, 1730, 0, 0, 1747, 0, 0, 1728, 0, 0, 0, 0, 
-    2345, 0, 0, 2353, 0, 0, 2356, 0, 0, 0, 2507, 2508, 0, 0, 0, 2891, 2888, 
-    2892, 2964, 0, 0, 0, 0, 0, 3018, 3020, 0, 3019, 0, 0, 0, 0, 3144, 0, 0, 
-    0, 0, 3264, 0, 3274, 3271, 3272, 0, 3275, 0, 0, 0, 0, 3402, 3404, 0, 
-    3403, 0, 0, 0, 0, 3546, 3548, 3550, 0, 0, 0, 0, 3549, 0, 0, 0, 0, 0, 
-    4134, 0, 0, 0, 6918, 0, 0, 6920, 0, 0, 6922, 0, 0, 6924, 0, 0, 0, 0, 0, 
-    0, 6926, 0, 0, 6930, 0, 0, 6971, 0, 0, 6973, 0, 0, 0, 0, 0, 0, 6976, 0, 
-    0, 6977, 0, 0, 6979, 0, 0, 0, 7736, 0, 0, 7737, 0, 0, 0, 0, 0, 0, 7772, 
-    0, 0, 7773, 0, 0, 0, 0, 7784, 0, 0, 7785, 0, 0, 7852, 0, 0, 7862, 0, 0, 
-    0, 7853, 0, 0, 7863, 0, 0, 0, 7878, 0, 0, 7879, 0, 0, 7896, 0, 0, 7897, 
-    0, 0, 0, 0, 7938, 7940, 0, 0, 7942, 8064, 0, 7939, 7941, 0, 0, 7943, 
-    8065, 0, 0, 8066, 0, 0, 0, 0, 0, 0, 8067, 0, 0, 8068, 0, 0, 8069, 0, 0, 
-    8070, 0, 0, 0, 0, 0, 0, 8071, 0, 7946, 7948, 0, 0, 7950, 8072, 0, 7947, 
-    7949, 0, 0, 7951, 8073, 0, 0, 8074, 0, 0, 0, 0, 0, 0, 8075, 0, 0, 8076, 
-    0, 0, 8077, 0, 0, 8078, 0, 0, 0, 0, 0, 0, 8079, 0, 7954, 7956, 0, 7955, 
-    7957, 0, 0, 0, 0, 0, 7962, 7964, 0, 0, 0, 0, 0, 7963, 7965, 0, 7970, 
-    7972, 0, 0, 7974, 8080, 0, 7971, 7973, 0, 0, 7975, 8081, 0, 0, 8082, 0, 
-    0, 0, 0, 0, 0, 8083, 0, 0, 8084, 0, 0, 8085, 0, 0, 8086, 0, 0, 0, 0, 0, 
-    0, 8087, 0, 7978, 7980, 0, 0, 7982, 8088, 0, 7979, 7981, 0, 0, 7983, 
-    8089, 0, 0, 8090, 0, 0, 0, 0, 0, 0, 8091, 0, 0, 8092, 0, 0, 8093, 0, 0, 
-    8094, 0, 0, 0, 0, 0, 0, 8095, 0, 7986, 7988, 0, 0, 7990, 0, 0, 7987, 
-    7989, 0, 0, 7991, 0, 0, 0, 0, 0, 0, 7994, 7996, 0, 0, 0, 0, 0, 0, 7998, 
-    0, 0, 7995, 7997, 0, 0, 7999, 0, 0, 8002, 8004, 0, 8003, 8005, 0, 0, 0, 
-    0, 0, 8010, 8012, 0, 0, 0, 0, 0, 8011, 8013, 0, 8018, 8020, 0, 0, 8022, 
-    0, 0, 8019, 8021, 0, 0, 8023, 0, 0, 0, 0, 0, 0, 8027, 8029, 0, 0, 0, 0, 
-    0, 0, 8031, 0, 0, 8034, 8036, 0, 0, 8038, 8096, 0, 8035, 8037, 0, 0, 
-    8039, 8097, 0, 0, 8098, 0, 0, 8099, 0, 0, 0, 0, 0, 0, 8100, 0, 0, 8101, 
-    0, 0, 8102, 0, 0, 8103, 0, 0, 0, 0, 0, 8042, 8044, 0, 0, 8046, 8104, 0, 
-    8043, 8045, 0, 0, 8047, 8105, 0, 0, 8106, 0, 0, 8107, 0, 0, 0, 0, 0, 0, 
-    8108, 0, 0, 8109, 0, 0, 8110, 0, 0, 8111, 0, 0, 0, 0, 0, 0, 8114, 0, 0, 
-    8130, 0, 0, 8178, 0, 0, 8119, 0, 0, 0, 0, 0, 8141, 8142, 0, 0, 8143, 0, 
-    0, 0, 8135, 0, 0, 8183, 0, 0, 0, 0, 0, 8157, 8158, 0, 0, 0, 0, 0, 0, 
-    8159, 0, 8602, 0, 0, 8603, 0, 0, 0, 0, 0, 0, 8622, 0, 0, 8653, 0, 0, 
-    8655, 0, 0, 8654, 0, 0, 0, 0, 0, 0, 8708, 0, 0, 8713, 0, 0, 8716, 0, 0, 
-    8740, 0, 0, 0, 0, 0, 0, 8742, 0, 0, 8769, 0, 0, 8772, 0, 0, 8775, 0, 0, 
-    0, 0, 0, 0, 8777, 0, 0, 8813, 0, 0, 8802, 0, 0, 8816, 0, 0, 0, 0, 0, 0, 
-    8817, 0, 0, 8820, 0, 0, 8821, 0, 0, 8824, 0, 0, 0, 0, 0, 0, 8825, 0, 0, 
-    8832, 0, 0, 8833, 0, 0, 8928, 0, 0, 0, 0, 0, 0, 8929, 0, 0, 8836, 0, 0, 
-    8837, 0, 0, 8840, 0, 0, 0, 0, 0, 0, 8841, 0, 0, 8930, 0, 0, 8931, 0, 0, 
-    8876, 0, 0, 0, 0, 0, 0, 8877, 0, 0, 8878, 0, 0, 8879, 0, 0, 8938, 0, 0, 
-    0, 0, 0, 0, 8939, 0, 0, 8940, 0, 0, 8941, 0, 0, 0, 12436, 0, 0, 12364, 0, 
-    0, 0, 0, 0, 0, 12366, 0, 0, 12368, 0, 0, 12370, 0, 0, 12372, 0, 0, 0, 0, 
-    0, 0, 12374, 0, 0, 12376, 0, 0, 12378, 0, 0, 12380, 0, 0, 0, 0, 0, 0, 
-    12382, 0, 0, 12384, 0, 0, 12386, 0, 0, 12389, 0, 0, 0, 0, 0, 0, 12391, 0, 
-    0, 12393, 0, 0, 12400, 12401, 0, 12403, 12404, 0, 0, 0, 0, 0, 12406, 
-    12407, 0, 0, 0, 0, 0, 12409, 12410, 0, 12412, 12413, 0, 12446, 0, 0, 0, 
-    0, 0, 0, 12532, 0, 0, 12460, 0, 0, 12462, 0, 0, 12464, 0, 0, 0, 0, 0, 0, 
-    12466, 0, 0, 12468, 0, 0, 12470, 0, 0, 12472, 0, 0, 0, 0, 0, 0, 12474, 0, 
-    0, 12476, 0, 0, 12478, 0, 0, 12480, 0, 0, 0, 0, 0, 0, 12482, 0, 0, 12485, 
-    0, 0, 12487, 0, 0, 12489, 0, 0, 0, 0, 0, 0, 12496, 12497, 0, 0, 0, 0, 0, 
-    12499, 12500, 0, 12502, 12503, 0, 12505, 12506, 0, 0, 0, 0, 0, 12508, 
-    12509, 0, 0, 0, 0, 0, 12535, 0, 0, 12536, 0, 0, 12537, 0, 0, 0, 0, 0, 0, 
-    12538, 0, 0, 12542, 0, 0, 0, 0, 69786, 0, 0, 69788, 0, 0, 69803, 
-};
-
-static const change_record change_records_3_2_0[] = {
-	{ 255, 255, 255, 255, 0 },
-	{ 11, 255, 255, 255, 0 },
-	{ 10, 255, 255, 255, 0 },
-	{ 19, 21, 255, 255, 0 },
-	{ 255, 255, 2, 255, 0 },
-	{ 255, 255, 3, 255, 0 },
-	{ 255, 255, 1, 255, 0 },
-	{ 255, 0, 255, 255, 0 },
-	{ 255, 2, 255, 255, 0 },
-	{ 255, 29, 255, 255, 0 },
-	{ 255, 26, 255, 255, 0 },
-	{ 5, 255, 255, 255, 0 },
-	{ 255, 255, 255, 255, 1.0 },
-	{ 255, 255, 255, 255, 2.0 },
-	{ 255, 255, 255, 255, 3.0 },
-	{ 255, 255, 255, 255, 4.0 },
-	{ 255, 255, 255, 255, -1 },
-	{ 14, 255, 255, 255, 0 },
-	{ 255, 255, 255, 0, 0 },
-	{ 255, 7, 1, 255, 0 },
-	{ 255, 7, 2, 255, 0 },
-	{ 255, 7, 3, 255, 0 },
-	{ 255, 7, 4, 255, 0 },
-	{ 255, 7, 5, 255, 0 },
-	{ 255, 7, 6, 255, 0 },
-	{ 255, 7, 7, 255, 0 },
-	{ 255, 7, 8, 255, 0 },
-	{ 255, 7, 9, 255, 0 },
-	{ 255, 5, 255, 255, 0 },
-	{ 15, 14, 255, 255, 0 },
-	{ 255, 10, 255, 255, 0 },
-	{ 18, 255, 255, 255, 0 },
-	{ 19, 255, 255, 255, 0 },
-	{ 255, 255, 0, 255, 0 },
-	{ 255, 255, 4, 255, 0 },
-	{ 255, 255, 5, 255, 0 },
-	{ 255, 255, 6, 255, 0 },
-	{ 255, 255, 7, 255, 0 },
-	{ 255, 255, 8, 255, 0 },
-	{ 255, 255, 9, 255, 0 },
-	{ 19, 30, 255, 255, 0 },
-	{ 255, 8, 255, 255, 0 },
-	{ 255, 22, 255, 255, 0 },
-	{ 255, 23, 255, 255, 0 },
-	{ 9, 255, 255, 255, 0 },
-	{ 255, 20, 255, 255, 0 },
-	{ 255, 255, 255, 255, 1e+16 },
-	{ 255, 255, 255, 255, 1e+20 },
-	{ 255, 19, 255, 255, 0 },
-	{ 15, 255, 255, 255, 0 },
-	{ 255, 19, 255, 255, -1 },
-	{ 1, 255, 255, 0, 0 },
-};
-static unsigned char changes_3_2_0_index[] = {
-    0, 1, 2, 2, 3, 4, 5, 6, 2, 7, 8, 9, 10, 11, 12, 13, 14, 2, 15, 16, 17, 
-    18, 19, 20, 21, 22, 23, 2, 2, 2, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 
-    34, 2, 2, 2, 35, 36, 2, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 
-    49, 2, 50, 2, 2, 51, 52, 53, 54, 55, 2, 2, 56, 57, 58, 2, 2, 59, 60, 61, 
-    62, 63, 63, 2, 2, 2, 2, 64, 2, 65, 66, 67, 68, 69, 2, 2, 2, 2, 70, 71, 
-    72, 73, 74, 75, 76, 77, 78, 2, 2, 2, 2, 2, 2, 79, 2, 2, 2, 2, 2, 80, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 81, 2, 82, 2, 2, 2, 2, 2, 2, 2, 2, 83, 
-    84, 2, 2, 2, 2, 2, 2, 2, 85, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 86, 87, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 88, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 89, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 90, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 91, 92, 2, 2, 2, 2, 2, 2, 2, 2, 93, 48, 48, 
-    94, 95, 48, 96, 97, 98, 99, 100, 101, 102, 2, 103, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 104, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 105, 106, 107, 108, 109, 2, 2, 2, 2, 110, 111, 2, 112, 113, 114, 
-    115, 116, 117, 2, 118, 119, 120, 121, 122, 2, 2, 2, 2, 2, 2, 123, 2, 124, 
-    2, 125, 2, 126, 2, 127, 2, 2, 2, 128, 2, 2, 2, 2, 129, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    48, 48, 48, 48, 48, 48, 130, 2, 131, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 48, 48, 48, 48, 48, 48, 48, 48, 132, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    133, 2, 134, 2, 135, 2, 2, 136, 2, 2, 2, 137, 138, 139, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 140, 141, 142, 143, 
-    144, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 145, 146, 90, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    79, 147, 2, 148, 149, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 150, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 151, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 152, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 153, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 
-    48, 154, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 150, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 48, 
-    155, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
-};
-
-static unsigned char changes_3_2_0_data[] = {
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 2, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 9, 0, 7, 7, 0, 0, 0, 7, 7, 7, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 7, 7, 7, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 
-    0, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 12, 13, 14, 15, 16, 0, 0, 7, 0, 0, 0, 0, 0, 7, 0, 7, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 
-    0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 
-    17, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 
-    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 7, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 
-    0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 7, 7, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 
-    7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 
-    0, 0, 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 
-    0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 0, 0, 0, 0, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 
-    0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 
-    0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 
-    7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 0, 7, 7, 7, 
-    7, 7, 7, 7, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 8, 0, 
-    0, 34, 35, 36, 37, 38, 39, 1, 1, 0, 0, 0, 8, 33, 6, 4, 5, 34, 35, 36, 37, 
-    38, 39, 1, 1, 0, 0, 0, 0, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 
-    7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 42, 43, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 
-    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 
-    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    0, 7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 7, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 
-    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 
-    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 
-    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 
-    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 
-    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 
-    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 
-    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 0, 
-    7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 0, 
-    7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 0, 
-    7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 
-    0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 
-    0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7, 7, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 0, 
-    0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 18, 18, 18, 0, 0, 0, 1, 1, 18, 
-    18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 2, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 0, 0, 0, 0, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 
-    7, 7, 0, 0, 7, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 0, 7, 7, 0, 0, 0, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 0, 7, 7, 0, 0, 0, 0, 0, 
-    7, 7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 0, 
-    0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 
-    0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 0, 0, 7, 0, 
-    0, 0, 7, 0, 0, 0, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 
-    0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 7, 0, 7, 7, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 
-    7, 7, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 
-    0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
-    7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-};
-
-static const change_record* get_change_3_2_0(Py_UCS4 n)
-{
-	int index;
-	if (n >= 0x110000) index = 0;
-	else {
-		index = changes_3_2_0_index[n>>7];
-		index = changes_3_2_0_data[(index<<7)+(n & 127)];
-	}
-	return change_records_3_2_0+index;
-}
-
-static Py_UCS4 normalization_3_2_0(Py_UCS4 n)
-{
-	switch(n) {
-	case 0x2f868: return 0x2136A;
-	case 0x2f874: return 0x5F33;
-	case 0x2f91f: return 0x43AB;
-	case 0x2f95f: return 0x7AAE;
-	case 0x2f9bf: return 0x4D57;
-	default: return 0;
-	}
-}
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/unicodename_db.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/unicodename_db.h
deleted file mode 100644
index 5f70051..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/unicodename_db.h
+++ /dev/null
@@ -1,17259 +0,0 @@
-/* this file was generated by Tools/unicode/makeunicodedata.py 2.6 */
-
-#define NAME_MAXLEN 256
-
-/* lexicon */
-static unsigned char lexicon[] = {
-    76, 69, 84, 84, 69, 210, 87, 73, 84, 200, 83, 77, 65, 76, 204, 83, 89, 
-    76, 76, 65, 66, 76, 197, 83, 73, 71, 206, 67, 65, 80, 73, 84, 65, 204, 
-    76, 65, 84, 73, 206, 89, 201, 67, 74, 203, 69, 71, 89, 80, 84, 73, 65, 
-    206, 72, 73, 69, 82, 79, 71, 76, 89, 80, 200, 65, 82, 65, 66, 73, 195, 
-    67, 79, 77, 80, 65, 84, 73, 66, 73, 76, 73, 84, 217, 77, 65, 84, 72, 69, 
-    77, 65, 84, 73, 67, 65, 204, 67, 85, 78, 69, 73, 70, 79, 82, 205, 83, 89, 
-    77, 66, 79, 204, 70, 79, 82, 77, 128, 67, 65, 78, 65, 68, 73, 65, 206, 
-    83, 89, 76, 76, 65, 66, 73, 67, 211, 68, 73, 71, 73, 212, 66, 79, 76, 
-    196, 72, 65, 78, 71, 85, 204, 71, 82, 69, 69, 203, 76, 73, 71, 65, 84, 
-    85, 82, 197, 65, 78, 196, 77, 85, 83, 73, 67, 65, 204, 84, 73, 77, 69, 
-    211, 69, 84, 72, 73, 79, 80, 73, 195, 86, 79, 87, 69, 204, 73, 84, 65, 
-    76, 73, 195, 67, 89, 82, 73, 76, 76, 73, 195, 82, 65, 68, 73, 67, 65, 
-    204, 83, 65, 78, 83, 45, 83, 69, 82, 73, 198, 67, 73, 82, 67, 76, 69, 
-    196, 70, 79, 210, 67, 79, 77, 66, 73, 78, 73, 78, 199, 84, 65, 201, 86, 
-    65, 201, 70, 73, 78, 65, 204, 83, 81, 85, 65, 82, 197, 86, 65, 82, 73, 
-    65, 84, 73, 79, 206, 76, 69, 70, 212, 66, 82, 65, 73, 76, 76, 197, 80, 
-    65, 84, 84, 69, 82, 206, 82, 73, 71, 72, 212, 66, 89, 90, 65, 78, 84, 73, 
-    78, 197, 73, 83, 79, 76, 65, 84, 69, 196, 194, 65, 66, 79, 86, 69, 128, 
-    68, 79, 85, 66, 76, 197, 75, 65, 84, 65, 75, 65, 78, 193, 75, 65, 78, 71, 
-    88, 201, 78, 85, 77, 66, 69, 210, 83, 73, 71, 78, 128, 66, 69, 76, 79, 
-    87, 128, 76, 73, 78, 69, 65, 210, 77, 79, 68, 73, 70, 73, 69, 210, 84, 
-    73, 66, 69, 84, 65, 206, 65, 128, 68, 79, 212, 77, 69, 69, 205, 77, 89, 
-    65, 78, 77, 65, 210, 67, 65, 82, 82, 73, 69, 210, 65, 82, 82, 79, 87, 
-    128, 73, 78, 73, 84, 73, 65, 204, 87, 72, 73, 84, 197, 85, 128, 86, 69, 
-    82, 84, 73, 67, 65, 204, 89, 69, 200, 65, 66, 79, 86, 197, 73, 128, 79, 
-    128, 67, 79, 80, 84, 73, 195, 65, 82, 82, 79, 215, 77, 79, 78, 71, 79, 
-    76, 73, 65, 206, 77, 65, 82, 75, 128, 75, 72, 77, 69, 210, 68, 69, 86, 
-    65, 78, 65, 71, 65, 82, 201, 84, 73, 76, 197, 80, 65, 82, 69, 78, 84, 72, 
-    69, 83, 73, 90, 69, 196, 84, 72, 65, 205, 66, 76, 65, 67, 203, 74, 79, 
-    78, 71, 83, 69, 79, 78, 199, 66, 79, 216, 72, 69, 66, 82, 69, 215, 80, 
-    76, 85, 211, 68, 82, 65, 87, 73, 78, 71, 211, 82, 73, 71, 72, 84, 87, 65, 
-    82, 68, 211, 67, 72, 79, 83, 69, 79, 78, 199, 83, 84, 82, 79, 75, 69, 
-    128, 72, 65, 76, 70, 87, 73, 68, 84, 200, 66, 65, 76, 73, 78, 69, 83, 
-    197, 71, 69, 79, 82, 71, 73, 65, 206, 72, 79, 79, 75, 128, 73, 68, 69, 
-    79, 71, 82, 65, 205, 73, 68, 69, 79, 71, 82, 65, 80, 72, 73, 195, 65, 76, 
-    69, 198, 83, 89, 77, 66, 79, 76, 128, 84, 79, 128, 83, 67, 82, 73, 80, 
-    212, 84, 87, 79, 128, 79, 86, 69, 210, 213, 72, 69, 65, 86, 217, 79, 78, 
-    69, 128, 85, 208, 76, 79, 215, 70, 85, 76, 76, 87, 73, 68, 84, 200, 72, 
-    65, 200, 68, 79, 87, 206, 69, 81, 85, 65, 204, 66, 82, 65, 67, 75, 69, 
-    84, 128, 72, 73, 71, 200, 79, 198, 84, 65, 199, 68, 79, 77, 73, 78, 207, 
-    78, 85, 77, 69, 82, 73, 195, 70, 82, 65, 75, 84, 85, 210, 74, 85, 78, 71, 
-    83, 69, 79, 78, 199, 77, 65, 76, 65, 89, 65, 76, 65, 205, 84, 87, 207, 
-    71, 76, 65, 71, 79, 76, 73, 84, 73, 195, 67, 72, 65, 82, 65, 67, 84, 69, 
-    210, 76, 69, 70, 84, 87, 65, 82, 68, 211, 77, 69, 68, 73, 65, 204, 84, 
-    69, 76, 85, 71, 213, 66, 69, 78, 71, 65, 76, 201, 79, 78, 197, 65, 82, 
-    77, 69, 78, 73, 65, 206, 74, 65, 86, 65, 78, 69, 83, 197, 74, 69, 69, 
-    205, 66, 65, 82, 128, 72, 73, 82, 65, 71, 65, 78, 193, 87, 69, 83, 84, 
-    45, 67, 82, 69, 197, 73, 68, 69, 79, 71, 82, 65, 80, 200, 66, 65, 77, 85, 
-    205, 84, 72, 65, 201, 75, 65, 78, 78, 65, 68, 193, 67, 72, 69, 82, 79, 
-    75, 69, 197, 72, 65, 76, 198, 84, 79, 78, 197, 78, 69, 215, 79, 82, 73, 
-    89, 193, 84, 72, 82, 69, 197, 67, 72, 65, 205, 71, 85, 74, 65, 82, 65, 
-    84, 201, 76, 85, 197, 70, 79, 85, 82, 128, 72, 65, 128, 82, 85, 78, 73, 
-    195, 83, 65, 85, 82, 65, 83, 72, 84, 82, 193, 84, 69, 84, 82, 65, 71, 82, 
-    65, 205, 84, 72, 82, 69, 69, 128, 68, 69, 83, 69, 82, 69, 212, 83, 73, 
-    78, 72, 65, 76, 193, 71, 85, 82, 77, 85, 75, 72, 201, 77, 65, 82, 203, 
-    78, 79, 84, 65, 84, 73, 79, 206, 83, 89, 82, 73, 65, 195, 86, 79, 67, 65, 
-    76, 73, 195, 65, 67, 85, 84, 69, 128, 76, 69, 80, 67, 72, 193, 76, 73, 
-    71, 72, 212, 76, 79, 78, 199, 84, 85, 82, 75, 73, 195, 68, 79, 85, 66, 
-    76, 69, 45, 83, 84, 82, 85, 67, 203, 70, 73, 86, 69, 128, 75, 65, 128, 
-    84, 65, 77, 73, 204, 86, 73, 69, 212, 65, 80, 204, 70, 85, 78, 67, 84, 
-    73, 79, 78, 65, 204, 72, 65, 77, 90, 193, 83, 73, 88, 128, 84, 69, 76, 
-    69, 71, 82, 65, 80, 200, 89, 65, 128, 69, 73, 71, 72, 84, 128, 72, 79, 
-    82, 73, 90, 79, 78, 84, 65, 204, 80, 65, 128, 68, 79, 84, 211, 78, 73, 
-    78, 69, 128, 83, 69, 86, 69, 78, 128, 66, 65, 82, 194, 68, 65, 83, 73, 
-    193, 75, 65, 73, 84, 72, 201, 76, 73, 77, 66, 213, 77, 65, 128, 77, 65, 
-    75, 83, 85, 82, 193, 83, 128, 84, 207, 66, 79, 80, 79, 77, 79, 70, 207, 
-    75, 72, 65, 82, 79, 83, 72, 84, 72, 201, 76, 65, 207, 82, 65, 128, 83, 
-    81, 85, 65, 82, 69, 196, 72, 69, 88, 65, 71, 82, 65, 205, 75, 193, 78, 
-    65, 128, 80, 83, 73, 76, 201, 82, 69, 86, 69, 82, 83, 69, 196, 77, 79, 
-    78, 79, 83, 80, 65, 67, 197, 78, 79, 212, 83, 65, 77, 65, 82, 73, 84, 65, 
-    206, 83, 84, 82, 79, 75, 197, 84, 85, 82, 78, 69, 196, 86, 128, 90, 90, 
-    89, 88, 128, 90, 90, 89, 84, 128, 90, 90, 89, 82, 88, 128, 90, 90, 89, 
-    82, 128, 90, 90, 89, 80, 128, 90, 90, 89, 128, 90, 90, 85, 88, 128, 90, 
-    90, 85, 82, 88, 128, 90, 90, 85, 82, 128, 90, 90, 85, 80, 128, 90, 90, 
-    85, 128, 90, 90, 79, 88, 128, 90, 90, 79, 80, 128, 90, 90, 79, 128, 90, 
-    90, 73, 88, 128, 90, 90, 73, 84, 128, 90, 90, 73, 80, 128, 90, 90, 73, 
-    69, 88, 128, 90, 90, 73, 69, 84, 128, 90, 90, 73, 69, 80, 128, 90, 90, 
-    73, 69, 128, 90, 90, 73, 128, 90, 90, 69, 88, 128, 90, 90, 69, 80, 128, 
-    90, 90, 69, 69, 128, 90, 90, 69, 128, 90, 90, 65, 88, 128, 90, 90, 65, 
-    84, 128, 90, 90, 65, 80, 128, 90, 90, 65, 65, 128, 90, 90, 65, 128, 90, 
-    89, 71, 79, 83, 128, 90, 87, 65, 82, 65, 75, 65, 89, 128, 90, 87, 65, 
-    128, 90, 85, 84, 128, 90, 85, 79, 88, 128, 90, 85, 79, 80, 128, 90, 85, 
-    79, 128, 90, 85, 77, 128, 90, 85, 66, 85, 82, 128, 90, 85, 53, 128, 90, 
-    85, 181, 90, 82, 65, 128, 90, 81, 65, 80, 72, 193, 90, 79, 84, 128, 90, 
-    79, 79, 128, 90, 79, 65, 128, 90, 76, 65, 77, 193, 90, 76, 65, 128, 90, 
-    76, 193, 90, 74, 69, 128, 90, 73, 90, 50, 128, 90, 73, 81, 65, 65, 128, 
-    90, 73, 78, 79, 82, 128, 90, 73, 76, 68, 69, 128, 90, 73, 71, 90, 65, 
-    199, 90, 73, 71, 128, 90, 73, 68, 193, 90, 73, 66, 128, 90, 73, 194, 90, 
-    73, 51, 128, 90, 201, 90, 72, 89, 88, 128, 90, 72, 89, 84, 128, 90, 72, 
-    89, 82, 88, 128, 90, 72, 89, 82, 128, 90, 72, 89, 80, 128, 90, 72, 89, 
-    128, 90, 72, 87, 69, 128, 90, 72, 87, 65, 128, 90, 72, 85, 88, 128, 90, 
-    72, 85, 84, 128, 90, 72, 85, 82, 88, 128, 90, 72, 85, 82, 128, 90, 72, 
-    85, 80, 128, 90, 72, 85, 79, 88, 128, 90, 72, 85, 79, 80, 128, 90, 72, 
-    85, 79, 128, 90, 72, 85, 128, 90, 72, 79, 88, 128, 90, 72, 79, 84, 128, 
-    90, 72, 79, 80, 128, 90, 72, 79, 79, 128, 90, 72, 79, 128, 90, 72, 73, 
-    86, 69, 84, 69, 128, 90, 72, 73, 128, 90, 72, 69, 88, 128, 90, 72, 69, 
-    84, 128, 90, 72, 69, 80, 128, 90, 72, 69, 69, 128, 90, 72, 69, 128, 90, 
-    72, 197, 90, 72, 65, 88, 128, 90, 72, 65, 84, 128, 90, 72, 65, 82, 128, 
-    90, 72, 65, 80, 128, 90, 72, 65, 73, 78, 128, 90, 72, 65, 65, 128, 90, 
-    72, 65, 128, 90, 72, 128, 90, 69, 84, 65, 128, 90, 69, 82, 79, 128, 90, 
-    69, 82, 207, 90, 69, 78, 128, 90, 69, 77, 76, 89, 65, 128, 90, 69, 77, 
-    76, 74, 65, 128, 90, 69, 50, 128, 90, 197, 90, 65, 89, 78, 128, 90, 65, 
-    89, 73, 78, 128, 90, 65, 89, 73, 206, 90, 65, 86, 73, 89, 65, 78, 73, 
-    128, 90, 65, 84, 65, 128, 90, 65, 82, 81, 65, 128, 90, 65, 81, 69, 198, 
-    90, 65, 77, 88, 128, 90, 65, 204, 90, 65, 73, 78, 128, 90, 65, 73, 206, 
-    90, 65, 73, 128, 90, 65, 72, 128, 90, 65, 200, 90, 65, 71, 128, 90, 65, 
-    69, 70, 128, 90, 48, 49, 54, 72, 128, 90, 48, 49, 54, 71, 128, 90, 48, 
-    49, 54, 70, 128, 90, 48, 49, 54, 69, 128, 90, 48, 49, 54, 68, 128, 90, 
-    48, 49, 54, 67, 128, 90, 48, 49, 54, 66, 128, 90, 48, 49, 54, 65, 128, 
-    90, 48, 49, 54, 128, 90, 48, 49, 53, 73, 128, 90, 48, 49, 53, 72, 128, 
-    90, 48, 49, 53, 71, 128, 90, 48, 49, 53, 70, 128, 90, 48, 49, 53, 69, 
-    128, 90, 48, 49, 53, 68, 128, 90, 48, 49, 53, 67, 128, 90, 48, 49, 53, 
-    66, 128, 90, 48, 49, 53, 65, 128, 90, 48, 49, 53, 128, 90, 48, 49, 52, 
-    128, 90, 48, 49, 51, 128, 90, 48, 49, 50, 128, 90, 48, 49, 49, 128, 90, 
-    48, 49, 48, 128, 90, 48, 48, 57, 128, 90, 48, 48, 56, 128, 90, 48, 48, 
-    55, 128, 90, 48, 48, 54, 128, 90, 48, 48, 53, 65, 128, 90, 48, 48, 53, 
-    128, 90, 48, 48, 52, 65, 128, 90, 48, 48, 52, 128, 90, 48, 48, 51, 66, 
-    128, 90, 48, 48, 51, 65, 128, 90, 48, 48, 51, 128, 90, 48, 48, 50, 68, 
-    128, 90, 48, 48, 50, 67, 128, 90, 48, 48, 50, 66, 128, 90, 48, 48, 50, 
-    65, 128, 90, 48, 48, 50, 128, 90, 48, 48, 49, 128, 90, 128, 218, 89, 89, 
-    88, 128, 89, 89, 84, 128, 89, 89, 82, 88, 128, 89, 89, 82, 128, 89, 89, 
-    80, 128, 89, 89, 69, 128, 89, 89, 65, 128, 89, 89, 128, 89, 87, 79, 79, 
-    128, 89, 87, 79, 128, 89, 87, 73, 73, 128, 89, 87, 73, 128, 89, 87, 69, 
-    128, 89, 87, 65, 65, 128, 89, 87, 65, 128, 89, 86, 128, 89, 85, 88, 128, 
-    89, 85, 85, 75, 65, 76, 69, 65, 80, 73, 78, 84, 85, 128, 89, 85, 84, 128, 
-    89, 85, 83, 128, 89, 85, 211, 89, 85, 82, 88, 128, 89, 85, 82, 128, 89, 
-    85, 81, 128, 89, 85, 80, 128, 89, 85, 79, 88, 128, 89, 85, 79, 84, 128, 
-    89, 85, 79, 80, 128, 89, 85, 79, 128, 89, 85, 68, 72, 128, 89, 85, 68, 
-    200, 89, 85, 65, 78, 128, 89, 85, 45, 89, 69, 79, 128, 89, 85, 45, 89, 
-    69, 128, 89, 85, 45, 85, 128, 89, 85, 45, 79, 128, 89, 85, 45, 73, 128, 
-    89, 85, 45, 69, 79, 128, 89, 85, 45, 69, 128, 89, 85, 45, 65, 69, 128, 
-    89, 85, 45, 65, 128, 89, 85, 128, 89, 213, 89, 80, 83, 73, 76, 73, 128, 
-    89, 80, 79, 82, 82, 79, 73, 128, 89, 80, 79, 75, 82, 73, 83, 73, 83, 128, 
-    89, 80, 79, 75, 82, 73, 83, 73, 211, 89, 80, 79, 71, 69, 71, 82, 65, 77, 
-    77, 69, 78, 73, 128, 89, 79, 89, 128, 89, 79, 88, 128, 89, 79, 85, 84, 
-    72, 70, 85, 76, 78, 69, 83, 83, 128, 89, 79, 85, 84, 72, 70, 85, 204, 89, 
-    79, 84, 128, 89, 79, 82, 73, 128, 89, 79, 81, 128, 89, 79, 80, 128, 89, 
-    79, 79, 128, 89, 79, 77, 79, 128, 89, 79, 71, 72, 128, 89, 79, 68, 72, 
-    128, 89, 79, 68, 128, 89, 79, 196, 89, 79, 65, 128, 89, 79, 45, 89, 69, 
-    79, 128, 89, 79, 45, 89, 65, 69, 128, 89, 79, 45, 89, 65, 128, 89, 79, 
-    45, 79, 128, 89, 79, 45, 73, 128, 89, 79, 45, 69, 79, 128, 89, 79, 45, 
-    65, 69, 128, 89, 79, 45, 65, 128, 89, 79, 128, 89, 207, 89, 73, 90, 69, 
-    84, 128, 89, 73, 88, 128, 89, 73, 87, 78, 128, 89, 73, 84, 128, 89, 73, 
-    80, 128, 89, 73, 78, 71, 128, 89, 73, 73, 128, 89, 73, 199, 89, 73, 69, 
-    88, 128, 89, 73, 69, 84, 128, 89, 73, 69, 80, 128, 89, 73, 69, 128, 89, 
-    73, 68, 68, 73, 83, 200, 89, 73, 45, 85, 128, 89, 73, 128, 89, 70, 69, 
-    83, 73, 83, 128, 89, 70, 69, 83, 73, 211, 89, 70, 69, 206, 89, 69, 89, 
-    128, 89, 69, 87, 128, 89, 69, 84, 73, 86, 128, 89, 69, 83, 84, 85, 128, 
-    89, 69, 83, 73, 69, 85, 78, 71, 45, 83, 73, 79, 83, 128, 89, 69, 83, 73, 
-    69, 85, 78, 71, 45, 80, 65, 78, 83, 73, 79, 83, 128, 89, 69, 83, 73, 69, 
-    85, 78, 71, 45, 77, 73, 69, 85, 77, 128, 89, 69, 83, 73, 69, 85, 78, 71, 
-    45, 72, 73, 69, 85, 72, 128, 89, 69, 83, 73, 69, 85, 78, 71, 128, 89, 69, 
-    82, 85, 128, 89, 69, 82, 213, 89, 69, 82, 73, 128, 89, 69, 82, 65, 200, 
-    89, 69, 82, 128, 89, 69, 79, 82, 73, 78, 72, 73, 69, 85, 72, 128, 89, 69, 
-    79, 45, 89, 65, 128, 89, 69, 79, 45, 85, 128, 89, 69, 79, 45, 79, 128, 
-    89, 69, 78, 73, 83, 69, 201, 89, 69, 78, 65, 80, 128, 89, 69, 206, 89, 
-    69, 76, 76, 79, 87, 128, 89, 69, 72, 128, 89, 69, 69, 128, 89, 69, 65, 
-    210, 89, 69, 65, 128, 89, 65, 90, 90, 128, 89, 65, 90, 72, 128, 89, 65, 
-    90, 128, 89, 65, 89, 65, 78, 78, 65, 128, 89, 65, 89, 128, 89, 65, 87, 
-    128, 89, 65, 86, 128, 89, 65, 84, 84, 128, 89, 65, 84, 73, 128, 89, 65, 
-    84, 72, 128, 89, 65, 84, 128, 89, 65, 83, 83, 128, 89, 65, 83, 72, 128, 
-    89, 65, 83, 128, 89, 65, 82, 82, 128, 89, 65, 82, 128, 89, 65, 210, 89, 
-    65, 81, 128, 89, 65, 80, 128, 89, 65, 78, 71, 128, 89, 65, 78, 199, 89, 
-    65, 78, 128, 89, 65, 77, 79, 75, 128, 89, 65, 77, 65, 75, 75, 65, 78, 
-    128, 89, 65, 77, 128, 89, 65, 76, 128, 89, 65, 75, 72, 72, 128, 89, 65, 
-    75, 72, 128, 89, 65, 75, 65, 83, 72, 128, 89, 65, 75, 128, 89, 65, 74, 
-    85, 82, 86, 69, 68, 73, 195, 89, 65, 74, 128, 89, 65, 72, 72, 128, 89, 
-    65, 72, 128, 89, 65, 71, 78, 128, 89, 65, 71, 72, 72, 128, 89, 65, 71, 
-    72, 128, 89, 65, 71, 128, 89, 65, 70, 128, 89, 65, 68, 72, 128, 89, 65, 
-    68, 68, 72, 128, 89, 65, 68, 68, 128, 89, 65, 68, 128, 89, 65, 67, 72, 
-    128, 89, 65, 66, 72, 128, 89, 65, 66, 128, 89, 65, 65, 82, 85, 128, 89, 
-    65, 65, 73, 128, 89, 65, 65, 68, 79, 128, 89, 65, 65, 128, 89, 65, 45, 
-    89, 79, 128, 89, 65, 45, 85, 128, 89, 65, 45, 79, 128, 89, 48, 48, 56, 
-    128, 89, 48, 48, 55, 128, 89, 48, 48, 54, 128, 89, 48, 48, 53, 128, 89, 
-    48, 48, 52, 128, 89, 48, 48, 51, 128, 89, 48, 48, 50, 128, 89, 48, 48, 
-    49, 65, 128, 89, 48, 48, 49, 128, 89, 45, 67, 82, 69, 197, 88, 89, 88, 
-    128, 88, 89, 85, 128, 88, 89, 84, 128, 88, 89, 82, 88, 128, 88, 89, 82, 
-    128, 88, 89, 80, 128, 88, 89, 79, 128, 88, 89, 73, 128, 88, 89, 69, 69, 
-    128, 88, 89, 69, 128, 88, 89, 65, 65, 128, 88, 89, 65, 128, 88, 89, 128, 
-    88, 87, 73, 128, 88, 87, 69, 69, 128, 88, 87, 69, 128, 88, 87, 65, 65, 
-    128, 88, 87, 65, 128, 88, 86, 69, 128, 88, 86, 65, 128, 88, 85, 79, 88, 
-    128, 88, 85, 79, 128, 88, 85, 128, 88, 83, 72, 65, 65, 89, 65, 84, 72, 
-    73, 89, 65, 128, 88, 79, 88, 128, 88, 79, 84, 128, 88, 79, 82, 128, 88, 
-    79, 80, 128, 88, 79, 65, 128, 88, 79, 128, 88, 73, 88, 128, 88, 73, 84, 
-    128, 88, 73, 82, 79, 206, 88, 73, 80, 128, 88, 73, 69, 88, 128, 88, 73, 
-    69, 84, 128, 88, 73, 69, 80, 128, 88, 73, 69, 128, 88, 73, 128, 88, 71, 
-    128, 88, 69, 83, 84, 69, 211, 88, 69, 72, 128, 88, 69, 69, 128, 88, 69, 
-    128, 88, 65, 78, 128, 88, 65, 65, 128, 88, 65, 128, 88, 48, 48, 56, 65, 
-    128, 88, 48, 48, 56, 128, 88, 48, 48, 55, 128, 88, 48, 48, 54, 65, 128, 
-    88, 48, 48, 54, 128, 88, 48, 48, 53, 128, 88, 48, 48, 52, 66, 128, 88, 
-    48, 48, 52, 65, 128, 88, 48, 48, 52, 128, 88, 48, 48, 51, 128, 88, 48, 
-    48, 50, 128, 88, 48, 48, 49, 128, 87, 90, 128, 87, 89, 78, 78, 128, 87, 
-    89, 78, 206, 87, 86, 128, 87, 85, 79, 88, 128, 87, 85, 79, 80, 128, 87, 
-    85, 79, 128, 87, 85, 78, 74, 207, 87, 85, 78, 128, 87, 85, 76, 85, 128, 
-    87, 85, 76, 213, 87, 85, 69, 128, 87, 85, 128, 87, 82, 79, 78, 71, 128, 
-    87, 82, 73, 84, 73, 78, 199, 87, 82, 69, 65, 84, 200, 87, 82, 65, 80, 
-    128, 87, 79, 88, 128, 87, 79, 82, 75, 128, 87, 79, 82, 203, 87, 79, 82, 
-    68, 83, 80, 65, 67, 69, 128, 87, 79, 82, 196, 87, 79, 80, 128, 87, 79, 
-    79, 78, 128, 87, 79, 79, 76, 128, 87, 79, 79, 68, 83, 45, 67, 82, 69, 
-    197, 87, 79, 79, 68, 128, 87, 79, 78, 128, 87, 79, 206, 87, 79, 77, 65, 
-    78, 128, 87, 79, 76, 79, 83, 79, 128, 87, 79, 69, 128, 87, 79, 65, 128, 
-    87, 73, 84, 72, 79, 85, 212, 87, 73, 78, 84, 69, 82, 128, 87, 73, 78, 74, 
-    65, 128, 87, 73, 78, 69, 128, 87, 73, 78, 68, 85, 128, 87, 73, 78, 68, 
-    128, 87, 73, 78, 128, 87, 73, 71, 78, 89, 65, 78, 128, 87, 73, 71, 71, 
-    76, 217, 87, 73, 68, 69, 45, 72, 69, 65, 68, 69, 196, 87, 73, 68, 197, 
-    87, 73, 65, 78, 71, 87, 65, 65, 75, 128, 87, 73, 65, 78, 71, 128, 87, 72, 
-    79, 76, 197, 87, 72, 73, 84, 69, 45, 70, 69, 65, 84, 72, 69, 82, 69, 196, 
-    87, 72, 73, 84, 69, 128, 87, 72, 69, 69, 76, 69, 196, 87, 72, 69, 69, 76, 
-    67, 72, 65, 73, 210, 87, 72, 69, 69, 76, 128, 87, 72, 69, 69, 204, 87, 
-    72, 69, 65, 84, 128, 87, 71, 128, 87, 69, 88, 128, 87, 69, 83, 84, 69, 
-    82, 206, 87, 69, 83, 84, 128, 87, 69, 83, 212, 87, 69, 80, 128, 87, 69, 
-    79, 128, 87, 69, 78, 128, 87, 69, 76, 76, 128, 87, 69, 73, 71, 72, 212, 
-    87, 69, 69, 78, 128, 87, 69, 68, 71, 69, 45, 84, 65, 73, 76, 69, 196, 87, 
-    69, 65, 80, 79, 78, 128, 87, 66, 128, 87, 65, 89, 128, 87, 65, 217, 87, 
-    65, 88, 128, 87, 65, 87, 45, 65, 89, 73, 78, 45, 82, 69, 83, 72, 128, 87, 
-    65, 87, 128, 87, 65, 215, 87, 65, 86, 217, 87, 65, 86, 69, 128, 87, 65, 
-    86, 197, 87, 65, 85, 128, 87, 65, 84, 84, 79, 128, 87, 65, 84, 69, 82, 
-    128, 87, 65, 84, 69, 210, 87, 65, 84, 67, 72, 128, 87, 65, 84, 128, 87, 
-    65, 83, 84, 73, 78, 71, 128, 87, 65, 83, 83, 65, 76, 76, 65, 77, 128, 87, 
-    65, 83, 76, 65, 128, 87, 65, 83, 76, 193, 87, 65, 83, 65, 76, 76, 65, 77, 
-    128, 87, 65, 83, 65, 76, 76, 65, 205, 87, 65, 82, 78, 73, 78, 199, 87, 
-    65, 80, 128, 87, 65, 78, 68, 69, 82, 69, 82, 128, 87, 65, 78, 128, 87, 
-    65, 76, 76, 128, 87, 65, 76, 75, 128, 87, 65, 76, 203, 87, 65, 73, 84, 
-    73, 78, 71, 128, 87, 65, 73, 128, 87, 65, 69, 78, 128, 87, 65, 69, 128, 
-    87, 65, 65, 86, 85, 128, 87, 48, 50, 53, 128, 87, 48, 50, 52, 65, 128, 
-    87, 48, 50, 52, 128, 87, 48, 50, 51, 128, 87, 48, 50, 50, 128, 87, 48, 
-    50, 49, 128, 87, 48, 50, 48, 128, 87, 48, 49, 57, 128, 87, 48, 49, 56, 
-    65, 128, 87, 48, 49, 56, 128, 87, 48, 49, 55, 65, 128, 87, 48, 49, 55, 
-    128, 87, 48, 49, 54, 128, 87, 48, 49, 53, 128, 87, 48, 49, 52, 65, 128, 
-    87, 48, 49, 52, 128, 87, 48, 49, 51, 128, 87, 48, 49, 50, 128, 87, 48, 
-    49, 49, 128, 87, 48, 49, 48, 65, 128, 87, 48, 49, 48, 128, 87, 48, 48, 
-    57, 65, 128, 87, 48, 48, 57, 128, 87, 48, 48, 56, 128, 87, 48, 48, 55, 
-    128, 87, 48, 48, 54, 128, 87, 48, 48, 53, 128, 87, 48, 48, 52, 128, 87, 
-    48, 48, 51, 65, 128, 87, 48, 48, 51, 128, 87, 48, 48, 50, 128, 87, 48, 
-    48, 49, 128, 86, 90, 77, 69, 84, 128, 86, 89, 88, 128, 86, 89, 84, 128, 
-    86, 89, 82, 88, 128, 86, 89, 82, 128, 86, 89, 80, 128, 86, 89, 128, 86, 
-    87, 65, 128, 86, 85, 88, 128, 86, 85, 84, 128, 86, 85, 82, 88, 128, 86, 
-    85, 82, 128, 86, 85, 80, 128, 86, 85, 76, 71, 65, 210, 86, 82, 65, 67, 
-    72, 89, 128, 86, 79, 88, 128, 86, 79, 87, 69, 76, 45, 67, 65, 82, 82, 73, 
-    69, 210, 86, 79, 87, 128, 86, 79, 85, 128, 86, 79, 84, 128, 86, 79, 80, 
-    128, 86, 79, 79, 128, 86, 79, 76, 85, 77, 197, 86, 79, 76, 84, 65, 71, 
-    197, 86, 79, 73, 196, 86, 79, 73, 67, 73, 78, 71, 128, 86, 79, 73, 67, 
-    69, 76, 69, 83, 211, 86, 79, 73, 67, 69, 196, 86, 79, 67, 65, 204, 86, 
-    79, 128, 86, 73, 88, 128, 86, 73, 84, 128, 86, 73, 83, 73, 71, 79, 84, 
-    72, 73, 195, 86, 73, 83, 65, 82, 71, 65, 89, 65, 128, 86, 73, 83, 65, 82, 
-    71, 65, 128, 86, 73, 83, 65, 82, 71, 193, 86, 73, 82, 73, 65, 77, 128, 
-    86, 73, 82, 71, 79, 128, 86, 73, 82, 71, 65, 128, 86, 73, 82, 65, 77, 65, 
-    128, 86, 73, 80, 128, 86, 73, 78, 69, 128, 86, 73, 78, 128, 86, 73, 76, 
-    76, 65, 71, 69, 128, 86, 73, 69, 88, 128, 86, 73, 69, 87, 68, 65, 84, 
-    193, 86, 73, 69, 84, 128, 86, 73, 69, 80, 128, 86, 73, 69, 128, 86, 73, 
-    68, 65, 128, 86, 73, 67, 84, 79, 82, 217, 86, 73, 128, 86, 69, 88, 128, 
-    86, 69, 87, 128, 86, 69, 215, 86, 69, 83, 84, 65, 128, 86, 69, 83, 83, 
-    69, 204, 86, 69, 82, 217, 86, 69, 82, 84, 73, 67, 65, 76, 76, 89, 128, 
-    86, 69, 82, 84, 73, 67, 65, 76, 76, 217, 86, 69, 82, 84, 73, 67, 65, 76, 
-    45, 48, 54, 45, 48, 54, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 54, 
-    45, 48, 53, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 54, 45, 48, 52, 
-    128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 54, 45, 48, 51, 128, 86, 69, 
-    82, 84, 73, 67, 65, 76, 45, 48, 54, 45, 48, 50, 128, 86, 69, 82, 84, 73, 
-    67, 65, 76, 45, 48, 54, 45, 48, 49, 128, 86, 69, 82, 84, 73, 67, 65, 76, 
-    45, 48, 54, 45, 48, 48, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 53, 
-    45, 48, 54, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 53, 45, 48, 53, 
-    128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 53, 45, 48, 52, 128, 86, 69, 
-    82, 84, 73, 67, 65, 76, 45, 48, 53, 45, 48, 51, 128, 86, 69, 82, 84, 73, 
-    67, 65, 76, 45, 48, 53, 45, 48, 50, 128, 86, 69, 82, 84, 73, 67, 65, 76, 
-    45, 48, 53, 45, 48, 49, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 53, 
-    45, 48, 48, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 52, 45, 48, 54, 
-    128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 52, 45, 48, 53, 128, 86, 69, 
-    82, 84, 73, 67, 65, 76, 45, 48, 52, 45, 48, 52, 128, 86, 69, 82, 84, 73, 
-    67, 65, 76, 45, 48, 52, 45, 48, 51, 128, 86, 69, 82, 84, 73, 67, 65, 76, 
-    45, 48, 52, 45, 48, 50, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 52, 
-    45, 48, 49, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 52, 45, 48, 48, 
-    128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 51, 45, 48, 54, 128, 86, 69, 
-    82, 84, 73, 67, 65, 76, 45, 48, 51, 45, 48, 53, 128, 86, 69, 82, 84, 73, 
-    67, 65, 76, 45, 48, 51, 45, 48, 52, 128, 86, 69, 82, 84, 73, 67, 65, 76, 
-    45, 48, 51, 45, 48, 51, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 51, 
-    45, 48, 50, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 51, 45, 48, 49, 
-    128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 51, 45, 48, 48, 128, 86, 69, 
-    82, 84, 73, 67, 65, 76, 45, 48, 50, 45, 48, 54, 128, 86, 69, 82, 84, 73, 
-    67, 65, 76, 45, 48, 50, 45, 48, 53, 128, 86, 69, 82, 84, 73, 67, 65, 76, 
-    45, 48, 50, 45, 48, 52, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 50, 
-    45, 48, 51, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 50, 45, 48, 50, 
-    128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 50, 45, 48, 49, 128, 86, 69, 
-    82, 84, 73, 67, 65, 76, 45, 48, 50, 45, 48, 48, 128, 86, 69, 82, 84, 73, 
-    67, 65, 76, 45, 48, 49, 45, 48, 54, 128, 86, 69, 82, 84, 73, 67, 65, 76, 
-    45, 48, 49, 45, 48, 53, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 49, 
-    45, 48, 52, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 49, 45, 48, 51, 
-    128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 49, 45, 48, 50, 128, 86, 69, 
-    82, 84, 73, 67, 65, 76, 45, 48, 49, 45, 48, 49, 128, 86, 69, 82, 84, 73, 
-    67, 65, 76, 45, 48, 49, 45, 48, 48, 128, 86, 69, 82, 84, 73, 67, 65, 76, 
-    45, 48, 48, 45, 48, 54, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 48, 
-    45, 48, 53, 128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 48, 45, 48, 52, 
-    128, 86, 69, 82, 84, 73, 67, 65, 76, 45, 48, 48, 45, 48, 51, 128, 86, 69, 
-    82, 84, 73, 67, 65, 76, 45, 48, 48, 45, 48, 50, 128, 86, 69, 82, 84, 73, 
-    67, 65, 76, 45, 48, 48, 45, 48, 49, 128, 86, 69, 82, 84, 73, 67, 65, 76, 
-    45, 48, 48, 45, 48, 48, 128, 86, 69, 82, 84, 73, 67, 65, 76, 128, 86, 69, 
-    82, 83, 73, 67, 76, 69, 128, 86, 69, 82, 83, 197, 86, 69, 82, 71, 69, 
-    128, 86, 69, 80, 128, 86, 69, 78, 68, 128, 86, 69, 72, 128, 86, 69, 200, 
-    86, 69, 69, 128, 86, 69, 197, 86, 69, 68, 69, 128, 86, 69, 67, 84, 79, 
-    210, 86, 65, 89, 65, 78, 78, 65, 128, 86, 65, 88, 128, 86, 65, 86, 128, 
-    86, 65, 214, 86, 65, 84, 72, 89, 128, 86, 65, 84, 128, 86, 65, 83, 84, 
-    78, 69, 83, 211, 86, 65, 83, 73, 83, 128, 86, 65, 82, 89, 211, 86, 65, 
-    82, 73, 75, 65, 128, 86, 65, 82, 73, 65, 78, 212, 86, 65, 82, 73, 65, 
-    128, 86, 65, 82, 73, 193, 86, 65, 82, 69, 73, 65, 201, 86, 65, 82, 69, 
-    73, 193, 86, 65, 80, 128, 86, 65, 78, 69, 128, 86, 65, 77, 65, 71, 79, 
-    77, 85, 75, 72, 65, 128, 86, 65, 77, 65, 71, 79, 77, 85, 75, 72, 193, 86, 
-    65, 76, 76, 69, 89, 128, 86, 65, 65, 86, 85, 128, 86, 65, 65, 128, 86, 
-    48, 52, 48, 65, 128, 86, 48, 52, 48, 128, 86, 48, 51, 57, 128, 86, 48, 
-    51, 56, 128, 86, 48, 51, 55, 65, 128, 86, 48, 51, 55, 128, 86, 48, 51, 
-    54, 128, 86, 48, 51, 53, 128, 86, 48, 51, 52, 128, 86, 48, 51, 51, 65, 
-    128, 86, 48, 51, 51, 128, 86, 48, 51, 50, 128, 86, 48, 51, 49, 65, 128, 
-    86, 48, 51, 49, 128, 86, 48, 51, 48, 65, 128, 86, 48, 51, 48, 128, 86, 
-    48, 50, 57, 65, 128, 86, 48, 50, 57, 128, 86, 48, 50, 56, 65, 128, 86, 
-    48, 50, 56, 128, 86, 48, 50, 55, 128, 86, 48, 50, 54, 128, 86, 48, 50, 
-    53, 128, 86, 48, 50, 52, 128, 86, 48, 50, 51, 65, 128, 86, 48, 50, 51, 
-    128, 86, 48, 50, 50, 128, 86, 48, 50, 49, 128, 86, 48, 50, 48, 76, 128, 
-    86, 48, 50, 48, 75, 128, 86, 48, 50, 48, 74, 128, 86, 48, 50, 48, 73, 
-    128, 86, 48, 50, 48, 72, 128, 86, 48, 50, 48, 71, 128, 86, 48, 50, 48, 
-    70, 128, 86, 48, 50, 48, 69, 128, 86, 48, 50, 48, 68, 128, 86, 48, 50, 
-    48, 67, 128, 86, 48, 50, 48, 66, 128, 86, 48, 50, 48, 65, 128, 86, 48, 
-    50, 48, 128, 86, 48, 49, 57, 128, 86, 48, 49, 56, 128, 86, 48, 49, 55, 
-    128, 86, 48, 49, 54, 128, 86, 48, 49, 53, 128, 86, 48, 49, 52, 128, 86, 
-    48, 49, 51, 128, 86, 48, 49, 50, 66, 128, 86, 48, 49, 50, 65, 128, 86, 
-    48, 49, 50, 128, 86, 48, 49, 49, 67, 128, 86, 48, 49, 49, 66, 128, 86, 
-    48, 49, 49, 65, 128, 86, 48, 49, 49, 128, 86, 48, 49, 48, 128, 86, 48, 
-    48, 57, 128, 86, 48, 48, 56, 128, 86, 48, 48, 55, 66, 128, 86, 48, 48, 
-    55, 65, 128, 86, 48, 48, 55, 128, 86, 48, 48, 54, 128, 86, 48, 48, 53, 
-    128, 86, 48, 48, 52, 128, 86, 48, 48, 51, 128, 86, 48, 48, 50, 65, 128, 
-    86, 48, 48, 50, 128, 86, 48, 48, 49, 73, 128, 86, 48, 48, 49, 72, 128, 
-    86, 48, 48, 49, 71, 128, 86, 48, 48, 49, 70, 128, 86, 48, 48, 49, 69, 
-    128, 86, 48, 48, 49, 68, 128, 86, 48, 48, 49, 67, 128, 86, 48, 48, 49, 
-    66, 128, 86, 48, 48, 49, 65, 128, 86, 48, 48, 49, 128, 85, 90, 85, 128, 
-    85, 90, 51, 128, 85, 90, 179, 85, 89, 65, 78, 78, 65, 128, 85, 89, 128, 
-    85, 85, 89, 65, 78, 78, 65, 128, 85, 85, 85, 85, 128, 85, 85, 85, 51, 
-    128, 85, 85, 85, 50, 128, 85, 85, 69, 128, 85, 84, 85, 75, 73, 128, 85, 
-    83, 83, 85, 51, 128, 85, 83, 83, 85, 128, 85, 83, 72, 88, 128, 85, 83, 
-    72, 85, 77, 88, 128, 85, 83, 72, 50, 128, 85, 83, 72, 128, 85, 83, 200, 
-    85, 83, 69, 196, 85, 83, 69, 128, 85, 82, 85, 218, 85, 82, 85, 83, 128, 
-    85, 82, 85, 68, 65, 128, 85, 82, 85, 68, 193, 85, 82, 85, 128, 85, 82, 
-    213, 85, 82, 78, 128, 85, 82, 73, 51, 128, 85, 82, 73, 128, 85, 82, 65, 
-    78, 85, 83, 128, 85, 82, 65, 128, 85, 82, 52, 128, 85, 82, 50, 128, 85, 
-    82, 178, 85, 80, 87, 65, 82, 68, 83, 128, 85, 80, 87, 65, 82, 68, 211, 
-    85, 80, 87, 65, 82, 68, 128, 85, 80, 87, 65, 82, 196, 85, 80, 84, 85, 82, 
-    78, 128, 85, 80, 83, 73, 76, 79, 78, 128, 85, 80, 83, 73, 76, 79, 206, 
-    85, 80, 82, 73, 71, 72, 212, 85, 80, 80, 69, 210, 85, 80, 65, 68, 72, 77, 
-    65, 78, 73, 89, 65, 128, 85, 80, 45, 80, 79, 73, 78, 84, 73, 78, 199, 85, 
-    79, 78, 128, 85, 78, 78, 128, 85, 78, 77, 65, 82, 82, 73, 69, 196, 85, 
-    78, 73, 86, 69, 82, 83, 65, 204, 85, 78, 73, 84, 89, 128, 85, 78, 73, 84, 
-    128, 85, 78, 73, 212, 85, 78, 73, 79, 78, 128, 85, 78, 73, 79, 206, 85, 
-    78, 73, 70, 73, 69, 196, 85, 78, 68, 207, 85, 78, 68, 69, 82, 84, 73, 69, 
-    128, 85, 78, 68, 69, 82, 76, 73, 78, 197, 85, 78, 68, 69, 82, 68, 79, 84, 
-    128, 85, 78, 68, 69, 82, 66, 65, 82, 128, 85, 78, 68, 69, 210, 85, 78, 
-    67, 73, 193, 85, 78, 65, 83, 80, 73, 82, 65, 84, 69, 68, 128, 85, 78, 65, 
-    80, 128, 85, 78, 65, 128, 85, 206, 85, 77, 85, 77, 128, 85, 77, 85, 205, 
-    85, 77, 66, 82, 69, 76, 76, 65, 128, 85, 77, 66, 82, 69, 76, 76, 193, 85, 
-    77, 66, 73, 78, 128, 85, 75, 85, 128, 85, 75, 82, 65, 73, 78, 73, 65, 
-    206, 85, 75, 65, 82, 65, 128, 85, 75, 65, 82, 193, 85, 75, 128, 85, 73, 
-    76, 76, 69, 65, 78, 78, 128, 85, 73, 71, 72, 85, 210, 85, 71, 65, 82, 73, 
-    84, 73, 195, 85, 69, 89, 128, 85, 69, 69, 128, 85, 69, 65, 128, 85, 68, 
-    85, 71, 128, 85, 68, 65, 84, 84, 65, 128, 85, 68, 65, 84, 84, 193, 85, 
-    68, 65, 65, 84, 128, 85, 68, 128, 85, 196, 85, 67, 128, 85, 66, 85, 70, 
-    73, 76, 73, 128, 85, 66, 72, 65, 89, 65, 84, 207, 85, 66, 65, 68, 65, 77, 
-    65, 128, 85, 66, 128, 85, 65, 84, 72, 128, 85, 65, 128, 85, 178, 85, 48, 
-    52, 50, 128, 85, 48, 52, 49, 128, 85, 48, 52, 48, 128, 85, 48, 51, 57, 
-    128, 85, 48, 51, 56, 128, 85, 48, 51, 55, 128, 85, 48, 51, 54, 128, 85, 
-    48, 51, 53, 128, 85, 48, 51, 52, 128, 85, 48, 51, 51, 128, 85, 48, 51, 
-    50, 65, 128, 85, 48, 51, 50, 128, 85, 48, 51, 49, 128, 85, 48, 51, 48, 
-    128, 85, 48, 50, 57, 65, 128, 85, 48, 50, 57, 128, 85, 48, 50, 56, 128, 
-    85, 48, 50, 55, 128, 85, 48, 50, 54, 128, 85, 48, 50, 53, 128, 85, 48, 
-    50, 52, 128, 85, 48, 50, 51, 65, 128, 85, 48, 50, 51, 128, 85, 48, 50, 
-    50, 128, 85, 48, 50, 49, 128, 85, 48, 50, 48, 128, 85, 48, 49, 57, 128, 
-    85, 48, 49, 56, 128, 85, 48, 49, 55, 128, 85, 48, 49, 54, 128, 85, 48, 
-    49, 53, 128, 85, 48, 49, 52, 128, 85, 48, 49, 51, 128, 85, 48, 49, 50, 
-    128, 85, 48, 49, 49, 128, 85, 48, 49, 48, 128, 85, 48, 48, 57, 128, 85, 
-    48, 48, 56, 128, 85, 48, 48, 55, 128, 85, 48, 48, 54, 66, 128, 85, 48, 
-    48, 54, 65, 128, 85, 48, 48, 54, 128, 85, 48, 48, 53, 128, 85, 48, 48, 
-    52, 128, 85, 48, 48, 51, 128, 85, 48, 48, 50, 128, 85, 48, 48, 49, 128, 
-    85, 45, 73, 45, 73, 128, 85, 45, 69, 79, 45, 69, 85, 128, 84, 90, 85, 
-    128, 84, 90, 79, 65, 128, 84, 90, 79, 128, 84, 90, 73, 210, 84, 90, 73, 
-    128, 84, 90, 69, 69, 128, 84, 90, 69, 128, 84, 90, 65, 65, 128, 84, 90, 
-    65, 128, 84, 90, 128, 84, 89, 210, 84, 89, 80, 69, 45, 183, 84, 89, 80, 
-    69, 45, 182, 84, 89, 80, 69, 45, 181, 84, 89, 80, 69, 45, 180, 84, 89, 
-    80, 69, 45, 179, 84, 89, 80, 69, 45, 178, 84, 89, 80, 69, 45, 177, 84, 
-    89, 80, 197, 84, 89, 79, 128, 84, 89, 73, 128, 84, 89, 69, 128, 84, 89, 
-    65, 128, 84, 87, 79, 79, 128, 84, 87, 79, 45, 87, 65, 217, 84, 87, 79, 
-    45, 76, 73, 78, 197, 84, 87, 79, 45, 72, 69, 65, 68, 69, 196, 84, 87, 73, 
-    73, 128, 84, 87, 73, 128, 84, 87, 69, 78, 84, 89, 45, 84, 87, 79, 128, 
-    84, 87, 69, 78, 84, 89, 45, 84, 72, 82, 69, 69, 128, 84, 87, 69, 78, 84, 
-    89, 45, 83, 73, 88, 128, 84, 87, 69, 78, 84, 89, 45, 83, 69, 86, 69, 78, 
-    128, 84, 87, 69, 78, 84, 89, 45, 79, 78, 69, 128, 84, 87, 69, 78, 84, 89, 
-    45, 78, 73, 78, 69, 128, 84, 87, 69, 78, 84, 89, 45, 70, 79, 85, 82, 128, 
-    84, 87, 69, 78, 84, 89, 45, 70, 73, 86, 69, 128, 84, 87, 69, 78, 84, 89, 
-    45, 69, 73, 71, 72, 84, 200, 84, 87, 69, 78, 84, 89, 45, 69, 73, 71, 72, 
-    84, 128, 84, 87, 69, 78, 84, 89, 128, 84, 87, 69, 78, 84, 217, 84, 87, 
-    69, 76, 86, 69, 128, 84, 87, 69, 76, 86, 197, 84, 87, 69, 128, 84, 87, 
-    65, 65, 128, 84, 87, 65, 128, 84, 86, 82, 73, 68, 79, 128, 84, 86, 73, 
-    77, 65, 68, 85, 210, 84, 85, 88, 128, 84, 85, 85, 77, 85, 128, 84, 85, 
-    84, 69, 89, 65, 83, 65, 84, 128, 84, 85, 84, 128, 84, 85, 82, 88, 128, 
-    84, 85, 82, 85, 128, 84, 85, 82, 84, 76, 69, 128, 84, 85, 82, 79, 50, 
-    128, 84, 85, 82, 78, 83, 84, 73, 76, 69, 128, 84, 85, 82, 206, 84, 85, 
-    82, 66, 65, 78, 128, 84, 85, 82, 128, 84, 85, 80, 128, 84, 85, 79, 88, 
-    128, 84, 85, 79, 84, 128, 84, 85, 79, 80, 128, 84, 85, 79, 128, 84, 85, 
-    78, 78, 89, 128, 84, 85, 77, 69, 84, 69, 83, 128, 84, 85, 77, 128, 84, 
-    85, 75, 87, 69, 78, 84, 73, 83, 128, 84, 85, 75, 128, 84, 85, 71, 82, 73, 
-    203, 84, 85, 71, 50, 128, 84, 85, 71, 178, 84, 85, 65, 82, 69, 199, 84, 
-    84, 85, 68, 68, 65, 71, 128, 84, 84, 85, 68, 68, 65, 65, 71, 128, 84, 84, 
-    85, 128, 84, 84, 84, 72, 65, 128, 84, 84, 83, 85, 128, 84, 84, 83, 79, 
-    128, 84, 84, 83, 73, 128, 84, 84, 83, 69, 69, 128, 84, 84, 83, 69, 128, 
-    84, 84, 83, 65, 128, 84, 84, 73, 128, 84, 84, 72, 87, 69, 128, 84, 84, 
-    72, 79, 79, 128, 84, 84, 72, 79, 128, 84, 84, 72, 73, 128, 84, 84, 72, 
-    69, 128, 84, 84, 72, 65, 65, 128, 84, 84, 72, 128, 84, 84, 69, 72, 69, 
-    72, 128, 84, 84, 69, 72, 69, 200, 84, 84, 69, 72, 128, 84, 84, 69, 200, 
-    84, 84, 69, 69, 128, 84, 84, 69, 128, 84, 84, 65, 89, 65, 78, 78, 65, 
-    128, 84, 84, 65, 65, 128, 84, 84, 50, 128, 84, 83, 87, 69, 128, 84, 83, 
-    87, 65, 128, 84, 83, 86, 128, 84, 83, 83, 69, 128, 84, 83, 72, 85, 71, 
-    83, 128, 84, 83, 72, 79, 79, 75, 128, 84, 83, 72, 79, 79, 203, 84, 83, 
-    72, 69, 83, 128, 84, 83, 72, 69, 71, 128, 84, 83, 72, 69, 199, 84, 83, 
-    72, 69, 128, 84, 83, 72, 65, 128, 84, 83, 69, 82, 69, 128, 84, 83, 65, 
-    68, 73, 128, 84, 83, 65, 68, 201, 84, 83, 65, 65, 68, 73, 89, 128, 84, 
-    83, 65, 65, 128, 84, 83, 193, 84, 82, 89, 66, 76, 73, 79, 206, 84, 82, 
-    85, 84, 72, 128, 84, 82, 85, 78, 75, 128, 84, 82, 85, 78, 67, 65, 84, 69, 
-    196, 84, 82, 85, 69, 128, 84, 82, 85, 67, 75, 128, 84, 82, 79, 77, 73, 
-    75, 79, 83, 89, 78, 65, 71, 77, 65, 128, 84, 82, 79, 77, 73, 75, 79, 80, 
-    83, 73, 70, 73, 83, 84, 79, 78, 128, 84, 82, 79, 77, 73, 75, 79, 80, 65, 
-    82, 65, 75, 65, 76, 69, 83, 77, 65, 128, 84, 82, 79, 77, 73, 75, 79, 78, 
-    128, 84, 82, 79, 77, 73, 75, 79, 206, 84, 82, 79, 77, 73, 75, 79, 76, 89, 
-    71, 73, 83, 77, 65, 128, 84, 82, 79, 75, 85, 84, 65, 83, 84, 201, 84, 82, 
-    79, 69, 90, 69, 78, 73, 65, 206, 84, 82, 73, 84, 79, 211, 84, 82, 73, 84, 
-    73, 77, 79, 82, 73, 79, 78, 128, 84, 82, 73, 83, 73, 77, 79, 85, 128, 84, 
-    82, 73, 83, 69, 77, 69, 128, 84, 82, 73, 80, 79, 68, 128, 84, 82, 73, 80, 
-    76, 73, 128, 84, 82, 73, 80, 76, 197, 84, 82, 73, 79, 206, 84, 82, 73, 
-    73, 83, 65, 80, 128, 84, 82, 73, 71, 82, 65, 77, 77, 79, 211, 84, 82, 73, 
-    71, 82, 65, 205, 84, 82, 73, 71, 79, 82, 71, 79, 78, 128, 84, 82, 73, 70, 
-    79, 78, 73, 65, 83, 128, 84, 82, 73, 70, 79, 76, 73, 65, 84, 197, 84, 82, 
-    73, 67, 79, 76, 79, 78, 128, 84, 82, 73, 65, 78, 71, 85, 76, 65, 210, 84, 
-    82, 73, 65, 78, 71, 76, 69, 45, 82, 79, 85, 78, 196, 84, 82, 73, 65, 78, 
-    71, 76, 69, 45, 72, 69, 65, 68, 69, 196, 84, 82, 73, 65, 78, 71, 76, 69, 
-    128, 84, 82, 73, 65, 78, 71, 76, 197, 84, 82, 73, 65, 128, 84, 82, 73, 
-    128, 84, 82, 69, 83, 73, 76, 76, 79, 128, 84, 82, 69, 77, 79, 76, 79, 45, 
-    51, 128, 84, 82, 69, 77, 79, 76, 79, 45, 50, 128, 84, 82, 69, 77, 79, 76, 
-    79, 45, 49, 128, 84, 82, 69, 69, 128, 84, 82, 69, 197, 84, 82, 69, 65, 
-    68, 73, 78, 71, 128, 84, 82, 65, 80, 69, 90, 73, 85, 77, 128, 84, 82, 65, 
-    78, 83, 86, 69, 82, 83, 65, 204, 84, 82, 65, 78, 83, 80, 79, 83, 73, 84, 
-    73, 79, 206, 84, 82, 65, 78, 83, 77, 73, 83, 83, 73, 79, 78, 128, 84, 82, 
-    65, 78, 83, 77, 73, 83, 83, 73, 79, 206, 84, 82, 65, 70, 70, 73, 67, 128, 
-    84, 82, 65, 68, 197, 84, 82, 65, 67, 75, 128, 84, 82, 128, 84, 79, 88, 
-    128, 84, 79, 85, 82, 78, 79, 73, 211, 84, 79, 84, 65, 204, 84, 79, 84, 
-    128, 84, 79, 82, 84, 79, 73, 83, 197, 84, 79, 82, 67, 85, 76, 85, 83, 
-    128, 84, 79, 82, 67, 85, 76, 85, 211, 84, 79, 80, 66, 65, 82, 128, 84, 
-    79, 80, 45, 76, 73, 71, 72, 84, 69, 196, 84, 79, 80, 128, 84, 79, 208, 
-    84, 79, 79, 84, 72, 128, 84, 79, 79, 128, 84, 79, 78, 79, 83, 128, 84, 
-    79, 78, 71, 85, 69, 128, 84, 79, 78, 71, 128, 84, 79, 78, 69, 45, 54, 
-    128, 84, 79, 78, 69, 45, 53, 128, 84, 79, 78, 69, 45, 52, 128, 84, 79, 
-    78, 69, 45, 51, 128, 84, 79, 78, 69, 45, 50, 128, 84, 79, 78, 69, 45, 49, 
-    128, 84, 79, 78, 69, 128, 84, 79, 78, 65, 204, 84, 79, 76, 79, 78, 71, 
-    128, 84, 79, 71, 69, 84, 72, 69, 82, 128, 84, 79, 68, 207, 84, 79, 65, 
-    78, 68, 65, 75, 72, 73, 65, 84, 128, 84, 79, 65, 128, 84, 78, 128, 84, 
-    76, 86, 128, 84, 76, 85, 128, 84, 76, 79, 128, 84, 76, 73, 128, 84, 76, 
-    72, 87, 69, 128, 84, 76, 72, 85, 128, 84, 76, 72, 79, 79, 128, 84, 76, 
-    72, 79, 128, 84, 76, 72, 73, 128, 84, 76, 72, 69, 69, 128, 84, 76, 72, 
-    69, 128, 84, 76, 72, 65, 128, 84, 76, 69, 69, 128, 84, 76, 65, 128, 84, 
-    74, 69, 128, 84, 73, 88, 128, 84, 73, 87, 78, 128, 84, 73, 87, 65, 218, 
-    84, 73, 84, 76, 79, 128, 84, 73, 84, 128, 84, 73, 82, 89, 65, 75, 128, 
-    84, 73, 82, 84, 193, 84, 73, 82, 79, 78, 73, 65, 206, 84, 73, 82, 128, 
-    84, 73, 210, 84, 73, 80, 80, 73, 128, 84, 73, 80, 69, 72, 65, 128, 84, 
-    73, 80, 128, 84, 73, 208, 84, 73, 78, 89, 128, 84, 73, 78, 217, 84, 73, 
-    78, 78, 69, 128, 84, 73, 78, 65, 71, 77, 65, 128, 84, 73, 77, 69, 83, 
-    128, 84, 73, 77, 69, 128, 84, 73, 76, 68, 69, 128, 84, 73, 76, 68, 197, 
-    84, 73, 76, 128, 84, 73, 204, 84, 73, 75, 69, 85, 84, 45, 84, 72, 73, 69, 
-    85, 84, 72, 128, 84, 73, 75, 69, 85, 84, 45, 83, 73, 79, 83, 45, 75, 73, 
-    89, 69, 79, 75, 128, 84, 73, 75, 69, 85, 84, 45, 83, 73, 79, 83, 128, 84, 
-    73, 75, 69, 85, 84, 45, 82, 73, 69, 85, 76, 128, 84, 73, 75, 69, 85, 84, 
-    45, 80, 73, 69, 85, 80, 128, 84, 73, 75, 69, 85, 84, 45, 77, 73, 69, 85, 
-    77, 128, 84, 73, 75, 69, 85, 84, 45, 75, 73, 89, 69, 79, 75, 128, 84, 73, 
-    75, 69, 85, 84, 45, 67, 73, 69, 85, 67, 128, 84, 73, 75, 69, 85, 84, 45, 
-    67, 72, 73, 69, 85, 67, 72, 128, 84, 73, 75, 69, 85, 84, 128, 84, 73, 75, 
-    69, 85, 212, 84, 73, 73, 128, 84, 73, 71, 72, 212, 84, 73, 71, 69, 82, 
-    128, 84, 73, 70, 73, 78, 65, 71, 200, 84, 73, 69, 88, 128, 84, 73, 69, 
-    80, 128, 84, 73, 197, 84, 73, 67, 75, 128, 84, 73, 67, 203, 84, 73, 65, 
-    82, 65, 128, 84, 72, 90, 128, 84, 72, 89, 79, 79, 205, 84, 72, 87, 79, 
-    79, 128, 84, 72, 87, 79, 128, 84, 72, 87, 73, 73, 128, 84, 72, 87, 73, 
-    128, 84, 72, 87, 69, 69, 128, 84, 72, 87, 65, 65, 128, 84, 72, 87, 65, 
-    128, 84, 72, 85, 82, 211, 84, 72, 85, 82, 73, 83, 65, 218, 84, 72, 85, 
-    78, 71, 128, 84, 72, 85, 78, 68, 69, 82, 83, 84, 79, 82, 77, 128, 84, 72, 
-    85, 78, 68, 69, 82, 128, 84, 72, 85, 78, 68, 69, 210, 84, 72, 85, 128, 
-    84, 72, 82, 79, 85, 71, 72, 128, 84, 72, 82, 79, 85, 71, 200, 84, 72, 82, 
-    69, 69, 45, 80, 69, 82, 45, 69, 205, 84, 72, 82, 69, 69, 45, 76, 73, 78, 
-    197, 84, 72, 82, 69, 69, 45, 196, 84, 72, 82, 69, 65, 68, 128, 84, 72, 
-    79, 85, 83, 65, 78, 68, 211, 84, 72, 79, 85, 83, 65, 78, 68, 128, 84, 72, 
-    79, 85, 83, 65, 78, 196, 84, 72, 79, 85, 128, 84, 72, 79, 82, 78, 128, 
-    84, 72, 79, 82, 206, 84, 72, 79, 78, 71, 128, 84, 72, 79, 65, 128, 84, 
-    72, 207, 84, 72, 73, 85, 84, 72, 128, 84, 72, 73, 84, 65, 128, 84, 72, 
-    73, 82, 84, 89, 45, 83, 69, 67, 79, 78, 196, 84, 72, 73, 82, 84, 89, 45, 
-    79, 78, 69, 128, 84, 72, 73, 82, 84, 89, 128, 84, 72, 73, 82, 84, 217, 
-    84, 72, 73, 82, 84, 69, 69, 78, 128, 84, 72, 73, 82, 84, 69, 69, 206, 84, 
-    72, 73, 82, 68, 83, 128, 84, 72, 73, 82, 68, 211, 84, 72, 73, 82, 68, 
-    128, 84, 72, 73, 82, 196, 84, 72, 73, 206, 84, 72, 73, 73, 128, 84, 72, 
-    73, 71, 72, 128, 84, 72, 73, 69, 85, 84, 200, 84, 72, 69, 89, 128, 84, 
-    72, 69, 84, 72, 69, 128, 84, 72, 69, 84, 72, 128, 84, 72, 69, 84, 65, 
-    128, 84, 72, 69, 84, 193, 84, 72, 69, 83, 80, 73, 65, 206, 84, 72, 69, 
-    83, 69, 79, 83, 128, 84, 72, 69, 83, 69, 79, 211, 84, 72, 69, 211, 84, 
-    72, 69, 82, 77, 79, 68, 89, 78, 65, 77, 73, 67, 128, 84, 72, 69, 82, 69, 
-    70, 79, 82, 69, 128, 84, 72, 69, 82, 197, 84, 72, 69, 206, 84, 72, 69, 
-    77, 65, 84, 73, 83, 77, 79, 211, 84, 72, 69, 77, 65, 128, 84, 72, 69, 77, 
-    193, 84, 72, 69, 72, 128, 84, 72, 69, 200, 84, 72, 69, 69, 128, 84, 72, 
-    197, 84, 72, 65, 87, 128, 84, 72, 65, 78, 84, 72, 65, 75, 72, 65, 84, 
-    128, 84, 72, 65, 78, 78, 65, 128, 84, 72, 65, 78, 128, 84, 72, 65, 206, 
-    84, 72, 65, 76, 128, 84, 72, 65, 204, 84, 72, 65, 72, 65, 78, 128, 84, 
-    72, 65, 65, 78, 193, 84, 72, 65, 65, 76, 85, 128, 84, 72, 45, 67, 82, 69, 
-    197, 84, 69, 88, 84, 128, 84, 69, 88, 128, 84, 69, 86, 73, 82, 128, 84, 
-    69, 84, 82, 65, 83, 73, 77, 79, 85, 128, 84, 69, 84, 82, 65, 83, 69, 77, 
-    69, 128, 84, 69, 84, 82, 65, 80, 76, 73, 128, 84, 69, 84, 82, 65, 70, 79, 
-    78, 73, 65, 83, 128, 84, 69, 84, 72, 128, 84, 69, 84, 200, 84, 69, 84, 
-    65, 82, 84, 79, 211, 84, 69, 84, 65, 82, 84, 73, 77, 79, 82, 73, 79, 78, 
-    128, 84, 69, 84, 128, 84, 69, 212, 84, 69, 83, 83, 69, 82, 65, 128, 84, 
-    69, 83, 83, 69, 82, 193, 84, 69, 83, 83, 65, 82, 79, 206, 84, 69, 83, 
-    200, 84, 69, 82, 77, 73, 78, 65, 84, 79, 82, 128, 84, 69, 80, 128, 84, 
-    69, 78, 85, 84, 79, 128, 84, 69, 78, 85, 128, 84, 69, 78, 213, 84, 69, 
-    78, 84, 72, 128, 84, 69, 78, 84, 128, 84, 69, 78, 211, 84, 69, 78, 71, 
-    197, 84, 69, 78, 128, 84, 69, 206, 84, 69, 77, 80, 85, 211, 84, 69, 76, 
-    85, 128, 84, 69, 76, 79, 85, 211, 84, 69, 76, 73, 83, 72, 193, 84, 69, 
-    76, 69, 80, 72, 79, 78, 69, 128, 84, 69, 76, 69, 80, 72, 79, 78, 197, 84, 
-    69, 76, 69, 73, 65, 128, 84, 69, 73, 87, 83, 128, 84, 69, 71, 69, 72, 
-    128, 84, 69, 197, 84, 69, 68, 85, 78, 71, 128, 84, 69, 65, 82, 68, 82, 
-    79, 80, 45, 83, 80, 79, 75, 69, 196, 84, 69, 65, 82, 68, 82, 79, 80, 45, 
-    83, 72, 65, 78, 75, 69, 196, 84, 69, 65, 82, 68, 82, 79, 80, 45, 66, 65, 
-    82, 66, 69, 196, 84, 69, 45, 85, 128, 84, 67, 72, 69, 72, 69, 72, 128, 
-    84, 67, 72, 69, 72, 69, 200, 84, 67, 72, 69, 72, 128, 84, 67, 72, 69, 
-    200, 84, 67, 72, 69, 128, 84, 195, 84, 65, 89, 128, 84, 65, 88, 128, 84, 
-    65, 87, 69, 76, 76, 69, 77, 69, 212, 84, 65, 87, 65, 128, 84, 65, 87, 
-    128, 84, 65, 86, 73, 89, 65, 78, 73, 128, 84, 65, 86, 128, 84, 65, 214, 
-    84, 65, 85, 82, 85, 83, 128, 84, 65, 85, 128, 84, 65, 213, 84, 65, 84, 
-    87, 69, 69, 76, 128, 84, 65, 84, 87, 69, 69, 204, 84, 65, 84, 84, 79, 79, 
-    69, 196, 84, 65, 84, 128, 84, 65, 82, 85, 78, 71, 128, 84, 65, 82, 128, 
-    84, 65, 80, 69, 82, 128, 84, 65, 80, 197, 84, 65, 80, 128, 84, 65, 79, 
-    128, 84, 65, 78, 78, 69, 196, 84, 65, 78, 199, 84, 65, 78, 128, 84, 65, 
-    77, 73, 78, 71, 128, 84, 65, 77, 128, 84, 65, 76, 76, 128, 84, 65, 76, 
-    204, 84, 65, 76, 73, 78, 71, 128, 84, 65, 76, 73, 78, 199, 84, 65, 76, 
-    69, 78, 84, 83, 128, 84, 65, 76, 69, 78, 212, 84, 65, 75, 72, 65, 76, 76, 
-    85, 83, 128, 84, 65, 75, 69, 128, 84, 65, 75, 52, 128, 84, 65, 75, 128, 
-    84, 65, 73, 83, 89, 79, 85, 128, 84, 65, 73, 76, 76, 69, 83, 211, 84, 65, 
-    73, 76, 128, 84, 65, 73, 204, 84, 65, 72, 128, 84, 65, 200, 84, 65, 71, 
-    66, 65, 78, 87, 193, 84, 65, 71, 65, 76, 79, 199, 84, 65, 71, 128, 84, 
-    65, 69, 128, 84, 65, 67, 75, 128, 84, 65, 67, 203, 84, 65, 66, 85, 76, 
-    65, 84, 73, 79, 78, 128, 84, 65, 66, 76, 69, 128, 84, 65, 66, 128, 84, 
-    65, 194, 84, 65, 65, 76, 85, 74, 193, 84, 65, 65, 73, 128, 84, 65, 65, 
-    70, 128, 84, 65, 50, 128, 84, 65, 45, 82, 79, 76, 128, 84, 48, 51, 54, 
-    128, 84, 48, 51, 53, 128, 84, 48, 51, 52, 128, 84, 48, 51, 51, 65, 128, 
-    84, 48, 51, 51, 128, 84, 48, 51, 50, 65, 128, 84, 48, 51, 50, 128, 84, 
-    48, 51, 49, 128, 84, 48, 51, 48, 128, 84, 48, 50, 57, 128, 84, 48, 50, 
-    56, 128, 84, 48, 50, 55, 128, 84, 48, 50, 54, 128, 84, 48, 50, 53, 128, 
-    84, 48, 50, 52, 128, 84, 48, 50, 51, 128, 84, 48, 50, 50, 128, 84, 48, 
-    50, 49, 128, 84, 48, 50, 48, 128, 84, 48, 49, 57, 128, 84, 48, 49, 56, 
-    128, 84, 48, 49, 55, 128, 84, 48, 49, 54, 65, 128, 84, 48, 49, 54, 128, 
-    84, 48, 49, 53, 128, 84, 48, 49, 52, 128, 84, 48, 49, 51, 128, 84, 48, 
-    49, 50, 128, 84, 48, 49, 49, 65, 128, 84, 48, 49, 49, 128, 84, 48, 49, 
-    48, 128, 84, 48, 48, 57, 65, 128, 84, 48, 48, 57, 128, 84, 48, 48, 56, 
-    65, 128, 84, 48, 48, 56, 128, 84, 48, 48, 55, 65, 128, 84, 48, 48, 55, 
-    128, 84, 48, 48, 54, 128, 84, 48, 48, 53, 128, 84, 48, 48, 52, 128, 84, 
-    48, 48, 51, 65, 128, 84, 48, 48, 51, 128, 84, 48, 48, 50, 128, 84, 48, 
-    48, 49, 128, 83, 90, 90, 128, 83, 90, 87, 71, 128, 83, 90, 87, 65, 128, 
-    83, 90, 85, 128, 83, 90, 79, 128, 83, 90, 73, 128, 83, 90, 69, 69, 128, 
-    83, 90, 69, 128, 83, 90, 65, 65, 128, 83, 90, 65, 128, 83, 90, 128, 83, 
-    89, 88, 128, 83, 89, 84, 128, 83, 89, 82, 88, 128, 83, 89, 82, 77, 65, 
-    84, 73, 75, 73, 128, 83, 89, 82, 77, 65, 128, 83, 89, 82, 128, 83, 89, 
-    80, 128, 83, 89, 79, 85, 87, 65, 128, 83, 89, 78, 69, 86, 77, 65, 128, 
-    83, 89, 78, 68, 69, 83, 77, 79, 211, 83, 89, 78, 67, 72, 82, 79, 78, 79, 
-    85, 211, 83, 89, 78, 65, 71, 77, 193, 83, 89, 78, 65, 70, 73, 128, 83, 
-    89, 77, 77, 69, 84, 82, 89, 128, 83, 89, 77, 77, 69, 84, 82, 73, 195, 83, 
-    89, 77, 66, 79, 76, 45, 57, 128, 83, 89, 77, 66, 79, 76, 45, 56, 128, 83, 
-    89, 77, 66, 79, 76, 45, 55, 128, 83, 89, 77, 66, 79, 76, 45, 54, 128, 83, 
-    89, 77, 66, 79, 76, 45, 53, 52, 128, 83, 89, 77, 66, 79, 76, 45, 53, 51, 
-    128, 83, 89, 77, 66, 79, 76, 45, 53, 50, 128, 83, 89, 77, 66, 79, 76, 45, 
-    53, 49, 128, 83, 89, 77, 66, 79, 76, 45, 53, 48, 128, 83, 89, 77, 66, 79, 
-    76, 45, 53, 128, 83, 89, 77, 66, 79, 76, 45, 52, 57, 128, 83, 89, 77, 66, 
-    79, 76, 45, 52, 56, 128, 83, 89, 77, 66, 79, 76, 45, 52, 55, 128, 83, 89, 
-    77, 66, 79, 76, 45, 52, 53, 128, 83, 89, 77, 66, 79, 76, 45, 52, 51, 128, 
-    83, 89, 77, 66, 79, 76, 45, 52, 50, 128, 83, 89, 77, 66, 79, 76, 45, 52, 
-    48, 128, 83, 89, 77, 66, 79, 76, 45, 52, 128, 83, 89, 77, 66, 79, 76, 45, 
-    51, 57, 128, 83, 89, 77, 66, 79, 76, 45, 51, 56, 128, 83, 89, 77, 66, 79, 
-    76, 45, 51, 55, 128, 83, 89, 77, 66, 79, 76, 45, 51, 54, 128, 83, 89, 77, 
-    66, 79, 76, 45, 51, 50, 128, 83, 89, 77, 66, 79, 76, 45, 51, 48, 128, 83, 
-    89, 77, 66, 79, 76, 45, 51, 128, 83, 89, 77, 66, 79, 76, 45, 50, 57, 128, 
-    83, 89, 77, 66, 79, 76, 45, 50, 55, 128, 83, 89, 77, 66, 79, 76, 45, 50, 
-    54, 128, 83, 89, 77, 66, 79, 76, 45, 50, 53, 128, 83, 89, 77, 66, 79, 76, 
-    45, 50, 52, 128, 83, 89, 77, 66, 79, 76, 45, 50, 51, 128, 83, 89, 77, 66, 
-    79, 76, 45, 50, 50, 128, 83, 89, 77, 66, 79, 76, 45, 50, 49, 128, 83, 89, 
-    77, 66, 79, 76, 45, 50, 48, 128, 83, 89, 77, 66, 79, 76, 45, 50, 128, 83, 
-    89, 77, 66, 79, 76, 45, 49, 57, 128, 83, 89, 77, 66, 79, 76, 45, 49, 56, 
-    128, 83, 89, 77, 66, 79, 76, 45, 49, 55, 128, 83, 89, 77, 66, 79, 76, 45, 
-    49, 54, 128, 83, 89, 77, 66, 79, 76, 45, 49, 53, 128, 83, 89, 77, 66, 79, 
-    76, 45, 49, 52, 128, 83, 89, 77, 66, 79, 76, 45, 49, 51, 128, 83, 89, 77, 
-    66, 79, 76, 45, 49, 50, 128, 83, 89, 77, 66, 79, 76, 45, 49, 49, 128, 83, 
-    89, 77, 66, 79, 76, 45, 49, 48, 128, 83, 89, 77, 66, 79, 76, 45, 49, 128, 
-    83, 89, 76, 79, 84, 201, 83, 89, 65, 128, 83, 89, 128, 83, 87, 90, 128, 
-    83, 87, 85, 78, 199, 83, 87, 79, 82, 68, 83, 128, 83, 87, 79, 82, 68, 
-    128, 83, 87, 79, 79, 128, 83, 87, 79, 128, 83, 87, 73, 73, 128, 83, 87, 
-    73, 128, 83, 87, 71, 128, 83, 87, 69, 69, 84, 128, 83, 87, 65, 83, 200, 
-    83, 87, 65, 80, 80, 73, 78, 71, 128, 83, 87, 65, 65, 128, 83, 87, 128, 
-    83, 86, 65, 83, 84, 201, 83, 86, 65, 82, 73, 84, 65, 128, 83, 86, 65, 82, 
-    73, 84, 193, 83, 85, 88, 128, 83, 85, 85, 128, 83, 85, 84, 128, 83, 85, 
-    83, 80, 69, 78, 83, 73, 79, 206, 83, 85, 82, 88, 128, 83, 85, 82, 82, 79, 
-    85, 78, 68, 128, 83, 85, 82, 82, 79, 85, 78, 196, 83, 85, 82, 70, 65, 67, 
-    197, 83, 85, 82, 69, 128, 83, 85, 82, 65, 78, 71, 128, 83, 85, 82, 57, 
-    128, 83, 85, 82, 128, 83, 85, 210, 83, 85, 80, 82, 65, 76, 73, 78, 69, 
-    65, 210, 83, 85, 80, 69, 82, 86, 73, 83, 69, 128, 83, 85, 80, 69, 82, 83, 
-    69, 84, 128, 83, 85, 80, 69, 82, 83, 69, 212, 83, 85, 80, 69, 82, 83, 67, 
-    82, 73, 80, 212, 83, 85, 80, 69, 82, 73, 77, 80, 79, 83, 69, 196, 83, 85, 
-    80, 69, 82, 70, 73, 88, 69, 196, 83, 85, 80, 128, 83, 85, 79, 88, 128, 
-    83, 85, 79, 80, 128, 83, 85, 79, 128, 83, 85, 78, 71, 128, 83, 85, 78, 
-    68, 65, 78, 69, 83, 197, 83, 85, 78, 128, 83, 85, 206, 83, 85, 77, 77, 
-    69, 82, 128, 83, 85, 77, 77, 65, 84, 73, 79, 78, 128, 83, 85, 77, 77, 65, 
-    84, 73, 79, 206, 83, 85, 77, 65, 83, 72, 128, 83, 85, 77, 128, 83, 85, 
-    75, 85, 78, 128, 83, 85, 75, 85, 206, 83, 85, 75, 85, 128, 83, 85, 75, 
-    213, 83, 85, 73, 84, 65, 66, 76, 69, 128, 83, 85, 73, 84, 128, 83, 85, 
-    72, 85, 82, 128, 83, 85, 68, 50, 128, 83, 85, 68, 128, 83, 85, 67, 67, 
-    69, 69, 68, 83, 128, 83, 85, 67, 67, 69, 69, 68, 211, 83, 85, 67, 67, 69, 
-    69, 68, 128, 83, 85, 67, 67, 69, 69, 196, 83, 85, 66, 85, 78, 73, 84, 
-    128, 83, 85, 66, 83, 84, 73, 84, 85, 84, 73, 79, 206, 83, 85, 66, 83, 84, 
-    73, 84, 85, 84, 69, 128, 83, 85, 66, 83, 84, 73, 84, 85, 84, 197, 83, 85, 
-    66, 83, 69, 84, 128, 83, 85, 66, 83, 69, 212, 83, 85, 66, 83, 67, 82, 73, 
-    80, 212, 83, 85, 66, 80, 85, 78, 67, 84, 73, 83, 128, 83, 85, 66, 76, 73, 
-    78, 69, 65, 210, 83, 85, 66, 74, 79, 73, 78, 69, 196, 83, 85, 66, 74, 69, 
-    67, 84, 128, 83, 85, 66, 73, 84, 79, 128, 83, 85, 66, 71, 82, 79, 85, 80, 
-    128, 83, 85, 66, 71, 82, 79, 85, 208, 83, 85, 65, 128, 83, 213, 83, 84, 
-    87, 65, 128, 83, 84, 85, 68, 89, 128, 83, 84, 82, 79, 75, 69, 83, 128, 
-    83, 84, 82, 79, 75, 69, 211, 83, 84, 82, 79, 75, 69, 45, 57, 128, 83, 84, 
-    82, 79, 75, 69, 45, 56, 128, 83, 84, 82, 79, 75, 69, 45, 55, 128, 83, 84, 
-    82, 79, 75, 69, 45, 54, 128, 83, 84, 82, 79, 75, 69, 45, 53, 128, 83, 84, 
-    82, 79, 75, 69, 45, 52, 128, 83, 84, 82, 79, 75, 69, 45, 51, 128, 83, 84, 
-    82, 79, 75, 69, 45, 50, 128, 83, 84, 82, 79, 75, 69, 45, 49, 49, 128, 83, 
-    84, 82, 79, 75, 69, 45, 49, 48, 128, 83, 84, 82, 79, 75, 69, 45, 49, 128, 
-    83, 84, 82, 73, 80, 69, 128, 83, 84, 82, 73, 75, 69, 84, 72, 82, 79, 85, 
-    71, 72, 128, 83, 84, 82, 73, 68, 69, 128, 83, 84, 82, 73, 67, 84, 76, 
-    217, 83, 84, 82, 69, 84, 67, 72, 69, 196, 83, 84, 82, 69, 83, 211, 83, 
-    84, 82, 69, 78, 71, 84, 72, 128, 83, 84, 82, 65, 84, 73, 65, 206, 83, 84, 
-    82, 65, 73, 78, 69, 82, 128, 83, 84, 82, 65, 73, 71, 72, 84, 78, 69, 83, 
-    83, 128, 83, 84, 82, 65, 73, 71, 72, 212, 83, 84, 82, 65, 73, 70, 128, 
-    83, 84, 82, 65, 71, 71, 73, 83, 77, 65, 84, 65, 128, 83, 84, 79, 86, 69, 
-    128, 83, 84, 79, 80, 80, 73, 78, 71, 128, 83, 84, 79, 80, 80, 65, 71, 69, 
-    128, 83, 84, 79, 80, 128, 83, 84, 79, 208, 83, 84, 79, 78, 69, 128, 83, 
-    84, 79, 67, 75, 128, 83, 84, 73, 77, 77, 69, 128, 83, 84, 73, 76, 204, 
-    83, 84, 73, 76, 197, 83, 84, 73, 71, 77, 65, 128, 83, 84, 69, 80, 128, 
-    83, 84, 69, 77, 128, 83, 84, 69, 205, 83, 84, 69, 65, 77, 128, 83, 84, 
-    65, 86, 82, 79, 85, 128, 83, 84, 65, 86, 82, 79, 83, 128, 83, 84, 65, 86, 
-    82, 79, 211, 83, 84, 65, 85, 82, 79, 83, 128, 83, 84, 65, 84, 69, 82, 83, 
-    128, 83, 84, 65, 82, 212, 83, 84, 65, 82, 75, 128, 83, 84, 65, 82, 128, 
-    83, 84, 65, 210, 83, 84, 65, 78, 68, 83, 84, 73, 76, 76, 128, 83, 84, 65, 
-    78, 68, 65, 82, 196, 83, 84, 65, 78, 68, 128, 83, 84, 65, 78, 128, 83, 
-    84, 65, 76, 76, 73, 79, 78, 128, 83, 84, 65, 70, 70, 128, 83, 84, 65, 70, 
-    198, 83, 84, 65, 67, 67, 65, 84, 79, 128, 83, 84, 65, 67, 67, 65, 84, 73, 
-    83, 83, 73, 77, 79, 128, 83, 84, 50, 128, 83, 83, 89, 88, 128, 83, 83, 
-    89, 84, 128, 83, 83, 89, 82, 88, 128, 83, 83, 89, 82, 128, 83, 83, 89, 
-    80, 128, 83, 83, 89, 128, 83, 83, 85, 88, 128, 83, 83, 85, 84, 128, 83, 
-    83, 85, 80, 128, 83, 83, 79, 88, 128, 83, 83, 79, 84, 128, 83, 83, 79, 
-    80, 128, 83, 83, 79, 128, 83, 83, 73, 88, 128, 83, 83, 73, 84, 128, 83, 
-    83, 73, 80, 128, 83, 83, 73, 69, 88, 128, 83, 83, 73, 69, 80, 128, 83, 
-    83, 73, 69, 128, 83, 83, 73, 128, 83, 83, 72, 69, 128, 83, 83, 69, 88, 
-    128, 83, 83, 69, 80, 128, 83, 83, 69, 69, 128, 83, 83, 65, 88, 128, 83, 
-    83, 65, 84, 128, 83, 83, 65, 80, 128, 83, 83, 65, 78, 71, 89, 69, 79, 82, 
-    73, 78, 72, 73, 69, 85, 72, 128, 83, 83, 65, 78, 71, 84, 73, 75, 69, 85, 
-    84, 45, 80, 73, 69, 85, 80, 128, 83, 83, 65, 78, 71, 84, 73, 75, 69, 85, 
-    84, 128, 83, 83, 65, 78, 71, 84, 72, 73, 69, 85, 84, 72, 128, 83, 83, 65, 
-    78, 71, 83, 73, 79, 83, 45, 84, 73, 75, 69, 85, 84, 128, 83, 83, 65, 78, 
-    71, 83, 73, 79, 83, 45, 80, 73, 69, 85, 80, 128, 83, 83, 65, 78, 71, 83, 
-    73, 79, 83, 45, 75, 73, 89, 69, 79, 75, 128, 83, 83, 65, 78, 71, 83, 73, 
-    79, 83, 128, 83, 83, 65, 78, 71, 82, 73, 69, 85, 76, 45, 75, 72, 73, 69, 
-    85, 75, 72, 128, 83, 83, 65, 78, 71, 82, 73, 69, 85, 76, 128, 83, 83, 65, 
-    78, 71, 80, 73, 69, 85, 80, 128, 83, 83, 65, 78, 71, 78, 73, 69, 85, 78, 
-    128, 83, 83, 65, 78, 71, 77, 73, 69, 85, 77, 128, 83, 83, 65, 78, 71, 75, 
-    73, 89, 69, 79, 75, 128, 83, 83, 65, 78, 71, 73, 69, 85, 78, 71, 128, 83, 
-    83, 65, 78, 71, 72, 73, 69, 85, 72, 128, 83, 83, 65, 78, 71, 67, 73, 69, 
-    85, 67, 45, 72, 73, 69, 85, 72, 128, 83, 83, 65, 78, 71, 67, 73, 69, 85, 
-    67, 128, 83, 83, 65, 78, 71, 65, 82, 65, 69, 65, 128, 83, 83, 65, 65, 
-    128, 83, 83, 65, 128, 83, 82, 128, 83, 81, 85, 73, 83, 200, 83, 81, 85, 
-    73, 82, 82, 69, 204, 83, 81, 85, 73, 71, 71, 76, 197, 83, 81, 85, 65, 
-    212, 83, 81, 85, 65, 82, 69, 83, 128, 83, 81, 85, 65, 82, 69, 68, 128, 
-    83, 81, 85, 65, 82, 69, 128, 83, 80, 87, 65, 128, 83, 80, 85, 78, 71, 
-    211, 83, 80, 82, 79, 85, 84, 128, 83, 80, 82, 73, 78, 71, 83, 128, 83, 
-    80, 82, 73, 78, 71, 128, 83, 80, 82, 69, 67, 72, 71, 69, 83, 65, 78, 199, 
-    83, 80, 79, 84, 128, 83, 80, 79, 79, 78, 128, 83, 80, 76, 73, 84, 84, 73, 
-    78, 199, 83, 80, 73, 82, 73, 84, 85, 211, 83, 80, 73, 82, 73, 84, 128, 
-    83, 80, 73, 82, 73, 212, 83, 80, 73, 82, 65, 78, 84, 128, 83, 80, 73, 82, 
-    65, 76, 128, 83, 80, 73, 68, 69, 82, 217, 83, 80, 73, 67, 69, 128, 83, 
-    80, 72, 69, 82, 73, 67, 65, 204, 83, 80, 69, 83, 77, 73, 76, 207, 83, 80, 
-    69, 69, 67, 72, 128, 83, 80, 69, 67, 73, 65, 76, 128, 83, 80, 69, 65, 82, 
-    128, 83, 80, 65, 84, 72, 73, 128, 83, 80, 65, 82, 75, 76, 69, 128, 83, 
-    80, 65, 68, 197, 83, 80, 65, 67, 73, 78, 199, 83, 80, 128, 83, 79, 89, 
-    128, 83, 79, 87, 73, 76, 207, 83, 79, 87, 128, 83, 79, 85, 84, 72, 45, 
-    83, 76, 65, 86, 69, 217, 83, 79, 85, 84, 200, 83, 79, 85, 82, 67, 69, 
-    128, 83, 79, 85, 78, 68, 128, 83, 79, 85, 78, 196, 83, 79, 85, 78, 65, 
-    80, 128, 83, 79, 85, 128, 83, 79, 79, 128, 83, 79, 78, 71, 128, 83, 79, 
-    78, 128, 83, 79, 76, 73, 68, 85, 83, 128, 83, 79, 76, 73, 68, 85, 211, 
-    83, 79, 71, 68, 73, 65, 206, 83, 79, 70, 84, 87, 65, 82, 69, 45, 70, 85, 
-    78, 67, 84, 73, 79, 206, 83, 79, 70, 212, 83, 79, 198, 83, 79, 67, 73, 
-    69, 84, 89, 128, 83, 79, 67, 67, 69, 210, 83, 79, 65, 128, 83, 207, 83, 
-    78, 79, 87, 77, 65, 78, 128, 83, 78, 79, 87, 77, 65, 206, 83, 78, 79, 87, 
-    70, 76, 65, 75, 69, 128, 83, 78, 79, 87, 128, 83, 78, 79, 85, 84, 128, 
-    83, 78, 79, 85, 212, 83, 78, 65, 208, 83, 78, 65, 75, 69, 128, 83, 78, 
-    65, 75, 197, 83, 78, 193, 83, 77, 73, 76, 73, 78, 199, 83, 77, 73, 76, 
-    69, 128, 83, 77, 69, 65, 82, 128, 83, 77, 65, 83, 200, 83, 77, 65, 76, 
-    76, 69, 210, 83, 77, 65, 76, 76, 128, 83, 76, 85, 82, 128, 83, 76, 79, 
-    87, 76, 89, 128, 83, 76, 79, 215, 83, 76, 79, 86, 79, 128, 83, 76, 79, 
-    80, 73, 78, 199, 83, 76, 79, 80, 69, 128, 83, 76, 73, 78, 71, 128, 83, 
-    76, 73, 68, 73, 78, 71, 128, 83, 76, 73, 67, 69, 128, 83, 76, 65, 86, 79, 
-    78, 73, 195, 83, 76, 65, 86, 69, 128, 83, 76, 65, 83, 72, 128, 83, 76, 
-    65, 83, 200, 83, 76, 65, 78, 84, 69, 196, 83, 75, 87, 65, 128, 83, 75, 
-    87, 128, 83, 75, 85, 76, 204, 83, 75, 76, 73, 82, 79, 206, 83, 75, 73, 
-    78, 128, 83, 75, 73, 69, 82, 128, 83, 75, 69, 87, 69, 196, 83, 75, 65, 
-    84, 69, 128, 83, 75, 128, 83, 74, 69, 128, 83, 73, 88, 84, 89, 45, 70, 
-    79, 85, 82, 84, 200, 83, 73, 88, 84, 89, 128, 83, 73, 88, 84, 217, 83, 
-    73, 88, 84, 72, 83, 128, 83, 73, 88, 84, 72, 211, 83, 73, 88, 84, 72, 
-    128, 83, 73, 88, 84, 69, 69, 78, 84, 72, 83, 128, 83, 73, 88, 84, 69, 69, 
-    78, 84, 72, 128, 83, 73, 88, 84, 69, 69, 78, 84, 200, 83, 73, 88, 84, 69, 
-    69, 78, 128, 83, 73, 88, 84, 69, 69, 206, 83, 73, 88, 45, 83, 84, 82, 73, 
-    78, 199, 83, 73, 88, 45, 80, 69, 82, 45, 69, 205, 83, 73, 88, 45, 76, 73, 
-    78, 197, 83, 73, 216, 83, 73, 84, 69, 128, 83, 73, 82, 73, 78, 71, 85, 
-    128, 83, 73, 79, 83, 45, 84, 72, 73, 69, 85, 84, 72, 128, 83, 73, 79, 83, 
-    45, 83, 83, 65, 78, 71, 83, 73, 79, 83, 128, 83, 73, 79, 83, 45, 82, 73, 
-    69, 85, 76, 128, 83, 73, 79, 83, 45, 80, 73, 69, 85, 80, 45, 75, 73, 89, 
-    69, 79, 75, 128, 83, 73, 79, 83, 45, 80, 72, 73, 69, 85, 80, 72, 128, 83, 
-    73, 79, 83, 45, 80, 65, 78, 83, 73, 79, 83, 128, 83, 73, 79, 83, 45, 78, 
-    73, 69, 85, 78, 128, 83, 73, 79, 83, 45, 77, 73, 69, 85, 77, 128, 83, 73, 
-    79, 83, 45, 75, 72, 73, 69, 85, 75, 72, 128, 83, 73, 79, 83, 45, 75, 65, 
-    80, 89, 69, 79, 85, 78, 80, 73, 69, 85, 80, 128, 83, 73, 79, 83, 45, 73, 
-    69, 85, 78, 71, 128, 83, 73, 79, 83, 45, 72, 73, 69, 85, 72, 128, 83, 73, 
-    79, 83, 45, 67, 73, 69, 85, 67, 128, 83, 73, 79, 83, 45, 67, 72, 73, 69, 
-    85, 67, 72, 128, 83, 73, 79, 211, 83, 73, 78, 75, 73, 78, 71, 128, 83, 
-    73, 78, 71, 76, 69, 45, 76, 73, 78, 197, 83, 73, 78, 71, 76, 69, 128, 83, 
-    73, 78, 71, 76, 197, 83, 73, 78, 71, 65, 65, 84, 128, 83, 73, 78, 197, 
-    83, 73, 78, 68, 72, 201, 83, 73, 206, 83, 73, 77, 80, 76, 73, 70, 73, 69, 
-    196, 83, 73, 77, 73, 76, 65, 82, 128, 83, 73, 77, 73, 76, 65, 210, 83, 
-    73, 77, 65, 78, 83, 73, 211, 83, 73, 77, 65, 128, 83, 73, 76, 75, 128, 
-    83, 73, 76, 73, 81, 85, 193, 83, 73, 76, 65, 51, 128, 83, 73, 75, 73, 
-    128, 83, 73, 75, 50, 128, 83, 73, 75, 178, 83, 73, 73, 128, 83, 73, 71, 
-    78, 83, 128, 83, 73, 71, 77, 65, 128, 83, 73, 71, 77, 193, 83, 73, 71, 
-    69, 204, 83, 73, 71, 52, 128, 83, 73, 71, 180, 83, 73, 71, 128, 83, 73, 
-    68, 69, 87, 65, 89, 211, 83, 73, 67, 75, 78, 69, 83, 83, 128, 83, 73, 67, 
-    75, 76, 69, 128, 83, 73, 66, 197, 83, 201, 83, 72, 89, 88, 128, 83, 72, 
-    89, 84, 128, 83, 72, 89, 82, 88, 128, 83, 72, 89, 82, 128, 83, 72, 89, 
-    80, 128, 83, 72, 89, 69, 128, 83, 72, 89, 65, 128, 83, 72, 89, 128, 83, 
-    72, 87, 79, 89, 128, 83, 72, 87, 79, 79, 128, 83, 72, 87, 79, 128, 83, 
-    72, 87, 73, 73, 128, 83, 72, 87, 73, 128, 83, 72, 87, 69, 128, 83, 72, 
-    87, 65, 65, 128, 83, 72, 87, 65, 128, 83, 72, 85, 88, 128, 83, 72, 85, 
-    84, 128, 83, 72, 85, 82, 88, 128, 83, 72, 85, 82, 128, 83, 72, 85, 80, 
-    128, 83, 72, 85, 79, 88, 128, 83, 72, 85, 79, 80, 128, 83, 72, 85, 79, 
-    128, 83, 72, 85, 70, 70, 76, 197, 83, 72, 85, 66, 85, 82, 128, 83, 72, 
-    85, 50, 128, 83, 72, 85, 178, 83, 72, 85, 128, 83, 72, 213, 83, 72, 84, 
-    65, 80, 73, 67, 128, 83, 72, 84, 65, 128, 83, 72, 82, 73, 78, 69, 128, 
-    83, 72, 79, 89, 128, 83, 72, 79, 88, 128, 83, 72, 79, 85, 76, 68, 69, 82, 
-    69, 196, 83, 72, 79, 84, 128, 83, 72, 79, 82, 84, 83, 128, 83, 72, 79, 
-    82, 84, 211, 83, 72, 79, 82, 84, 69, 78, 69, 82, 128, 83, 72, 79, 82, 84, 
-    45, 84, 87, 73, 71, 45, 89, 82, 128, 83, 72, 79, 82, 84, 45, 84, 87, 73, 
-    71, 45, 84, 89, 210, 83, 72, 79, 82, 84, 45, 84, 87, 73, 71, 45, 83, 79, 
-    204, 83, 72, 79, 82, 84, 45, 84, 87, 73, 71, 45, 79, 83, 211, 83, 72, 79, 
-    82, 84, 45, 84, 87, 73, 71, 45, 78, 65, 85, 196, 83, 72, 79, 82, 84, 45, 
-    84, 87, 73, 71, 45, 77, 65, 68, 210, 83, 72, 79, 82, 84, 45, 84, 87, 73, 
-    71, 45, 72, 65, 71, 65, 76, 204, 83, 72, 79, 82, 84, 45, 84, 87, 73, 71, 
-    45, 66, 74, 65, 82, 75, 65, 206, 83, 72, 79, 82, 84, 45, 84, 87, 73, 71, 
-    45, 65, 210, 83, 72, 79, 82, 84, 128, 83, 72, 79, 82, 212, 83, 72, 79, 
-    80, 128, 83, 72, 79, 79, 84, 128, 83, 72, 79, 79, 128, 83, 72, 79, 71, 
-    201, 83, 72, 79, 199, 83, 72, 79, 197, 83, 72, 79, 65, 128, 83, 72, 79, 
-    128, 83, 72, 73, 89, 89, 65, 65, 76, 65, 65, 128, 83, 72, 73, 84, 65, 
-    128, 83, 72, 73, 84, 193, 83, 72, 73, 82, 128, 83, 72, 73, 210, 83, 72, 
-    73, 80, 128, 83, 72, 73, 78, 84, 207, 83, 72, 73, 78, 73, 71, 128, 83, 
-    72, 73, 78, 128, 83, 72, 73, 206, 83, 72, 73, 77, 65, 128, 83, 72, 73, 
-    77, 193, 83, 72, 73, 77, 128, 83, 72, 73, 205, 83, 72, 73, 73, 78, 128, 
-    83, 72, 73, 73, 128, 83, 72, 73, 70, 212, 83, 72, 73, 69, 76, 68, 128, 
-    83, 72, 73, 68, 128, 83, 72, 73, 196, 83, 72, 73, 128, 83, 72, 72, 65, 
-    128, 83, 72, 69, 88, 128, 83, 72, 69, 86, 65, 128, 83, 72, 69, 85, 88, 
-    128, 83, 72, 69, 84, 128, 83, 72, 69, 83, 72, 76, 65, 77, 128, 83, 72, 
-    69, 83, 72, 73, 71, 128, 83, 72, 69, 83, 72, 73, 199, 83, 72, 69, 83, 72, 
-    50, 128, 83, 72, 69, 83, 72, 128, 83, 72, 69, 81, 69, 204, 83, 72, 69, 
-    80, 128, 83, 72, 69, 78, 128, 83, 72, 69, 76, 76, 128, 83, 72, 69, 76, 
-    204, 83, 72, 69, 76, 70, 128, 83, 72, 69, 73, 128, 83, 72, 69, 71, 57, 
-    128, 83, 72, 69, 69, 80, 128, 83, 72, 69, 69, 78, 85, 128, 83, 72, 69, 
-    69, 78, 128, 83, 72, 69, 69, 206, 83, 72, 69, 69, 128, 83, 72, 69, 45, 
-    71, 79, 65, 84, 128, 83, 72, 197, 83, 72, 67, 72, 65, 128, 83, 72, 65, 
-    89, 128, 83, 72, 65, 88, 128, 83, 72, 65, 86, 73, 89, 65, 78, 73, 128, 
-    83, 72, 65, 86, 73, 65, 206, 83, 72, 65, 84, 128, 83, 72, 65, 82, 85, 
-    128, 83, 72, 65, 82, 213, 83, 72, 65, 82, 80, 128, 83, 72, 65, 82, 208, 
-    83, 72, 65, 82, 65, 128, 83, 72, 65, 82, 50, 128, 83, 72, 65, 82, 178, 
-    83, 72, 65, 80, 73, 78, 71, 128, 83, 72, 65, 80, 69, 83, 128, 83, 72, 65, 
-    80, 128, 83, 72, 65, 78, 71, 128, 83, 72, 65, 78, 128, 83, 72, 65, 206, 
-    83, 72, 65, 77, 82, 79, 67, 75, 128, 83, 72, 65, 76, 83, 72, 69, 76, 69, 
-    84, 128, 83, 72, 65, 75, 84, 73, 128, 83, 72, 65, 68, 79, 87, 69, 196, 
-    83, 72, 65, 68, 69, 128, 83, 72, 65, 68, 68, 65, 128, 83, 72, 65, 68, 68, 
-    193, 83, 72, 65, 68, 128, 83, 72, 65, 196, 83, 72, 65, 66, 54, 128, 83, 
-    72, 65, 65, 128, 83, 72, 65, 54, 128, 83, 72, 65, 51, 128, 83, 72, 65, 
-    179, 83, 71, 82, 193, 83, 71, 79, 210, 83, 71, 65, 215, 83, 71, 65, 194, 
-    83, 71, 128, 83, 69, 88, 84, 85, 76, 193, 83, 69, 88, 84, 73, 76, 69, 
-    128, 83, 69, 88, 84, 65, 78, 211, 83, 69, 86, 69, 82, 65, 78, 67, 69, 
-    128, 83, 69, 86, 69, 78, 84, 89, 128, 83, 69, 86, 69, 78, 84, 217, 83, 
-    69, 86, 69, 78, 84, 72, 128, 83, 69, 86, 69, 78, 84, 69, 69, 78, 128, 83, 
-    69, 86, 69, 78, 84, 69, 69, 206, 83, 69, 86, 69, 206, 83, 69, 85, 88, 
-    128, 83, 69, 83, 84, 69, 82, 84, 73, 85, 211, 83, 69, 83, 81, 85, 73, 81, 
-    85, 65, 68, 82, 65, 84, 69, 128, 83, 69, 83, 65, 77, 197, 83, 69, 82, 86, 
-    73, 67, 197, 83, 69, 82, 73, 70, 83, 128, 83, 69, 82, 73, 70, 211, 83, 
-    69, 80, 84, 69, 77, 66, 69, 82, 128, 83, 69, 80, 65, 82, 65, 84, 79, 82, 
-    128, 83, 69, 80, 65, 82, 65, 84, 79, 210, 83, 69, 78, 84, 79, 128, 83, 
-    69, 78, 84, 73, 128, 83, 69, 77, 85, 78, 67, 73, 193, 83, 69, 77, 75, 65, 
-    84, 72, 128, 83, 69, 77, 75, 128, 83, 69, 77, 73, 86, 79, 87, 69, 204, 
-    83, 69, 77, 73, 83, 79, 70, 212, 83, 69, 77, 73, 83, 69, 88, 84, 73, 76, 
-    69, 128, 83, 69, 77, 73, 77, 73, 78, 73, 77, 193, 83, 69, 77, 73, 68, 73, 
-    82, 69, 67, 212, 83, 69, 77, 73, 67, 79, 76, 79, 78, 128, 83, 69, 77, 73, 
-    67, 79, 76, 79, 206, 83, 69, 77, 73, 67, 73, 82, 67, 85, 76, 65, 210, 83, 
-    69, 77, 73, 67, 73, 82, 67, 76, 197, 83, 69, 77, 73, 66, 82, 69, 86, 73, 
-    211, 83, 69, 77, 73, 45, 86, 79, 73, 67, 69, 196, 83, 69, 76, 70, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 57, 57, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 57, 56, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 57, 55, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 57, 54, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 57, 53, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 57, 52, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 57, 51, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 57, 50, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 57, 49, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 57, 48, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 57, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 56, 57, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 56, 56, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 56, 55, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 56, 54, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 56, 53, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 56, 52, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 56, 51, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 56, 50, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 56, 49, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 56, 48, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 56, 128, 83, 69, 76, 69, 67, 84, 79, 82, 
-    45, 55, 57, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 55, 56, 128, 83, 69, 
-    76, 69, 67, 84, 79, 82, 45, 55, 55, 128, 83, 69, 76, 69, 67, 84, 79, 82, 
-    45, 55, 54, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 55, 53, 128, 83, 69, 
-    76, 69, 67, 84, 79, 82, 45, 55, 52, 128, 83, 69, 76, 69, 67, 84, 79, 82, 
-    45, 55, 51, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 55, 50, 128, 83, 69, 
-    76, 69, 67, 84, 79, 82, 45, 55, 49, 128, 83, 69, 76, 69, 67, 84, 79, 82, 
-    45, 55, 48, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 55, 128, 83, 69, 76, 
-    69, 67, 84, 79, 82, 45, 54, 57, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 
-    54, 56, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 54, 55, 128, 83, 69, 76, 
-    69, 67, 84, 79, 82, 45, 54, 54, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 
-    54, 53, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 54, 52, 128, 83, 69, 76, 
-    69, 67, 84, 79, 82, 45, 54, 51, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 
-    54, 50, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 54, 49, 128, 83, 69, 76, 
-    69, 67, 84, 79, 82, 45, 54, 48, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 
-    54, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 53, 57, 128, 83, 69, 76, 69, 
-    67, 84, 79, 82, 45, 53, 56, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 53, 
-    55, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 53, 54, 128, 83, 69, 76, 69, 
-    67, 84, 79, 82, 45, 53, 53, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 53, 
-    52, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 53, 51, 128, 83, 69, 76, 69, 
-    67, 84, 79, 82, 45, 53, 50, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 53, 
-    49, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 53, 48, 128, 83, 69, 76, 69, 
-    67, 84, 79, 82, 45, 53, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 52, 57, 
-    128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 52, 56, 128, 83, 69, 76, 69, 67, 
-    84, 79, 82, 45, 52, 55, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 52, 54, 
-    128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 52, 53, 128, 83, 69, 76, 69, 67, 
-    84, 79, 82, 45, 52, 52, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 52, 51, 
-    128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 52, 50, 128, 83, 69, 76, 69, 67, 
-    84, 79, 82, 45, 52, 49, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 52, 48, 
-    128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 52, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 51, 57, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 51, 56, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 51, 55, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 51, 54, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 51, 53, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 51, 52, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 51, 51, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 51, 50, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 51, 49, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 51, 48, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 51, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 50, 57, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 50, 56, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 55, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 50, 54, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 50, 53, 54, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 53, 53, 
-    128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 53, 52, 128, 83, 69, 76, 69, 
-    67, 84, 79, 82, 45, 50, 53, 51, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 
-    50, 53, 50, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 53, 49, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 50, 53, 48, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 50, 53, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 52, 57, 
-    128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 52, 56, 128, 83, 69, 76, 69, 
-    67, 84, 79, 82, 45, 50, 52, 55, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 
-    50, 52, 54, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 52, 53, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 50, 52, 52, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 50, 52, 51, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 52, 
-    50, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 52, 49, 128, 83, 69, 76, 
-    69, 67, 84, 79, 82, 45, 50, 52, 48, 128, 83, 69, 76, 69, 67, 84, 79, 82, 
-    45, 50, 52, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 51, 57, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 50, 51, 56, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 50, 51, 55, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 51, 
-    54, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 51, 53, 128, 83, 69, 76, 
-    69, 67, 84, 79, 82, 45, 50, 51, 52, 128, 83, 69, 76, 69, 67, 84, 79, 82, 
-    45, 50, 51, 51, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 51, 50, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 51, 49, 128, 83, 69, 76, 69, 67, 
-    84, 79, 82, 45, 50, 51, 48, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 
-    51, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 50, 57, 128, 83, 69, 76, 
-    69, 67, 84, 79, 82, 45, 50, 50, 56, 128, 83, 69, 76, 69, 67, 84, 79, 82, 
-    45, 50, 50, 55, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 50, 54, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 50, 53, 128, 83, 69, 76, 69, 67, 
-    84, 79, 82, 45, 50, 50, 52, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 
-    50, 51, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 50, 50, 128, 83, 69, 
-    76, 69, 67, 84, 79, 82, 45, 50, 50, 49, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 50, 50, 48, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 50, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 49, 57, 128, 83, 69, 76, 69, 67, 
-    84, 79, 82, 45, 50, 49, 56, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 
-    49, 55, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 49, 54, 128, 83, 69, 
-    76, 69, 67, 84, 79, 82, 45, 50, 49, 53, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 50, 49, 52, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 49, 51, 
-    128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 49, 50, 128, 83, 69, 76, 69, 
-    67, 84, 79, 82, 45, 50, 49, 49, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 
-    50, 49, 48, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 49, 128, 83, 69, 
-    76, 69, 67, 84, 79, 82, 45, 50, 48, 57, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 50, 48, 56, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 48, 55, 
-    128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 48, 54, 128, 83, 69, 76, 69, 
-    67, 84, 79, 82, 45, 50, 48, 53, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 
-    50, 48, 52, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 48, 51, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 50, 48, 50, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 50, 48, 49, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 48, 
-    48, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 50, 48, 128, 83, 69, 76, 69, 
-    67, 84, 79, 82, 45, 50, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 57, 
-    57, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 57, 56, 128, 83, 69, 76, 
-    69, 67, 84, 79, 82, 45, 49, 57, 55, 128, 83, 69, 76, 69, 67, 84, 79, 82, 
-    45, 49, 57, 54, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 57, 53, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 57, 52, 128, 83, 69, 76, 69, 67, 
-    84, 79, 82, 45, 49, 57, 51, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 
-    57, 50, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 57, 49, 128, 83, 69, 
-    76, 69, 67, 84, 79, 82, 45, 49, 57, 48, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 49, 57, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 56, 57, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 56, 56, 128, 83, 69, 76, 69, 67, 
-    84, 79, 82, 45, 49, 56, 55, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 
-    56, 54, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 56, 53, 128, 83, 69, 
-    76, 69, 67, 84, 79, 82, 45, 49, 56, 52, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 49, 56, 51, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 56, 50, 
-    128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 56, 49, 128, 83, 69, 76, 69, 
-    67, 84, 79, 82, 45, 49, 56, 48, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 
-    49, 56, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 55, 57, 128, 83, 69, 
-    76, 69, 67, 84, 79, 82, 45, 49, 55, 56, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 49, 55, 55, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 55, 54, 
-    128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 55, 53, 128, 83, 69, 76, 69, 
-    67, 84, 79, 82, 45, 49, 55, 52, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 
-    49, 55, 51, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 55, 50, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 49, 55, 49, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 49, 55, 48, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 55, 
-    128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 54, 57, 128, 83, 69, 76, 69, 
-    67, 84, 79, 82, 45, 49, 54, 56, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 
-    49, 54, 55, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 54, 54, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 49, 54, 53, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 49, 54, 52, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 54, 
-    51, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 54, 50, 128, 83, 69, 76, 
-    69, 67, 84, 79, 82, 45, 49, 54, 49, 128, 83, 69, 76, 69, 67, 84, 79, 82, 
-    45, 49, 54, 48, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 54, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 49, 53, 57, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 49, 53, 56, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 53, 
-    55, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 53, 54, 128, 83, 69, 76, 
-    69, 67, 84, 79, 82, 45, 49, 53, 53, 128, 83, 69, 76, 69, 67, 84, 79, 82, 
-    45, 49, 53, 52, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 53, 51, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 53, 50, 128, 83, 69, 76, 69, 67, 
-    84, 79, 82, 45, 49, 53, 49, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 
-    53, 48, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 53, 128, 83, 69, 76, 
-    69, 67, 84, 79, 82, 45, 49, 52, 57, 128, 83, 69, 76, 69, 67, 84, 79, 82, 
-    45, 49, 52, 56, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 52, 55, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 52, 54, 128, 83, 69, 76, 69, 67, 
-    84, 79, 82, 45, 49, 52, 53, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 
-    52, 52, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 52, 51, 128, 83, 69, 
-    76, 69, 67, 84, 79, 82, 45, 49, 52, 50, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 49, 52, 49, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 52, 48, 
-    128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 52, 128, 83, 69, 76, 69, 67, 
-    84, 79, 82, 45, 49, 51, 57, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 
-    51, 56, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 51, 55, 128, 83, 69, 
-    76, 69, 67, 84, 79, 82, 45, 49, 51, 54, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 49, 51, 53, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 51, 52, 
-    128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 51, 51, 128, 83, 69, 76, 69, 
-    67, 84, 79, 82, 45, 49, 51, 50, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 
-    49, 51, 49, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 51, 48, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 49, 51, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 49, 50, 57, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 50, 56, 
-    128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 50, 55, 128, 83, 69, 76, 69, 
-    67, 84, 79, 82, 45, 49, 50, 54, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 
-    49, 50, 53, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 50, 52, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 49, 50, 51, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 49, 50, 50, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 50, 
-    49, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 50, 48, 128, 83, 69, 76, 
-    69, 67, 84, 79, 82, 45, 49, 50, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 
-    49, 49, 57, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 49, 56, 128, 83, 
-    69, 76, 69, 67, 84, 79, 82, 45, 49, 49, 55, 128, 83, 69, 76, 69, 67, 84, 
-    79, 82, 45, 49, 49, 54, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 49, 
-    53, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 49, 52, 128, 83, 69, 76, 
-    69, 67, 84, 79, 82, 45, 49, 49, 51, 128, 83, 69, 76, 69, 67, 84, 79, 82, 
-    45, 49, 49, 50, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 49, 49, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 49, 48, 128, 83, 69, 76, 69, 67, 
-    84, 79, 82, 45, 49, 49, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 48, 
-    57, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 48, 56, 128, 83, 69, 76, 
-    69, 67, 84, 79, 82, 45, 49, 48, 55, 128, 83, 69, 76, 69, 67, 84, 79, 82, 
-    45, 49, 48, 54, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 48, 53, 128, 
-    83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 48, 52, 128, 83, 69, 76, 69, 67, 
-    84, 79, 82, 45, 49, 48, 51, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 
-    48, 50, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 48, 49, 128, 83, 69, 
-    76, 69, 67, 84, 79, 82, 45, 49, 48, 48, 128, 83, 69, 76, 69, 67, 84, 79, 
-    82, 45, 49, 48, 128, 83, 69, 76, 69, 67, 84, 79, 82, 45, 49, 128, 83, 69, 
-    76, 69, 67, 84, 79, 210, 83, 69, 73, 83, 77, 65, 128, 83, 69, 73, 83, 77, 
-    193, 83, 69, 72, 128, 83, 69, 71, 79, 76, 128, 83, 69, 71, 78, 79, 128, 
-    83, 69, 71, 77, 69, 78, 84, 128, 83, 69, 69, 78, 85, 128, 83, 69, 69, 78, 
-    128, 83, 69, 69, 206, 83, 69, 67, 84, 79, 82, 128, 83, 69, 67, 84, 73, 
-    79, 78, 128, 83, 69, 67, 84, 73, 79, 206, 83, 69, 67, 82, 69, 84, 128, 
-    83, 69, 67, 79, 78, 68, 128, 83, 69, 66, 65, 84, 66, 69, 73, 212, 83, 69, 
-    65, 76, 128, 83, 69, 65, 71, 85, 76, 204, 83, 68, 79, 78, 199, 83, 68, 
-    128, 83, 67, 87, 65, 128, 83, 67, 82, 85, 80, 76, 69, 128, 83, 67, 82, 
-    73, 80, 84, 128, 83, 67, 82, 69, 69, 78, 128, 83, 67, 82, 69, 69, 206, 
-    83, 67, 79, 82, 80, 73, 85, 83, 128, 83, 67, 73, 83, 83, 79, 82, 83, 128, 
-    83, 67, 72, 87, 65, 128, 83, 67, 72, 87, 193, 83, 67, 72, 82, 79, 69, 68, 
-    69, 82, 128, 83, 67, 72, 79, 79, 76, 128, 83, 67, 72, 79, 76, 65, 82, 
-    128, 83, 67, 72, 69, 77, 193, 83, 67, 65, 78, 68, 73, 67, 85, 83, 128, 
-    83, 67, 65, 78, 68, 73, 67, 85, 211, 83, 67, 65, 206, 83, 67, 65, 76, 69, 
-    83, 128, 83, 66, 85, 194, 83, 66, 82, 85, 204, 83, 65, 89, 73, 83, 201, 
-    83, 65, 89, 65, 78, 78, 65, 128, 83, 65, 89, 128, 83, 65, 88, 73, 77, 65, 
-    84, 65, 128, 83, 65, 87, 65, 78, 128, 83, 65, 87, 128, 83, 65, 85, 73, 
-    76, 128, 83, 65, 84, 85, 82, 78, 128, 83, 65, 84, 75, 65, 65, 78, 75, 85, 
-    85, 128, 83, 65, 84, 75, 65, 65, 78, 128, 83, 65, 83, 65, 75, 128, 83, 
-    65, 82, 73, 128, 83, 65, 82, 193, 83, 65, 82, 128, 83, 65, 80, 65, 128, 
-    83, 65, 78, 89, 79, 79, 71, 193, 83, 65, 78, 89, 65, 75, 193, 83, 65, 78, 
-    84, 73, 73, 77, 85, 128, 83, 65, 78, 78, 89, 65, 128, 83, 65, 78, 71, 65, 
-    50, 128, 83, 65, 78, 65, 72, 128, 83, 65, 78, 128, 83, 65, 77, 89, 79, 
-    203, 83, 65, 77, 80, 73, 128, 83, 65, 77, 80, 72, 65, 79, 128, 83, 65, 
-    77, 75, 65, 128, 83, 65, 77, 69, 75, 72, 128, 83, 65, 77, 69, 75, 200, 
-    83, 65, 77, 66, 65, 128, 83, 65, 77, 128, 83, 65, 76, 84, 73, 82, 69, 
-    128, 83, 65, 76, 84, 73, 76, 76, 79, 128, 83, 65, 76, 84, 128, 83, 65, 
-    76, 76, 65, 76, 76, 65, 72, 79, 213, 83, 65, 76, 76, 193, 83, 65, 76, 65, 
-    205, 83, 65, 76, 65, 128, 83, 65, 76, 128, 83, 65, 75, 79, 84, 128, 83, 
-    65, 74, 68, 65, 72, 128, 83, 65, 73, 76, 66, 79, 65, 84, 128, 83, 65, 73, 
-    76, 128, 83, 65, 73, 75, 85, 82, 85, 128, 83, 65, 71, 73, 84, 84, 65, 82, 
-    73, 85, 83, 128, 83, 65, 71, 65, 128, 83, 65, 71, 128, 83, 65, 199, 83, 
-    65, 70, 72, 65, 128, 83, 65, 68, 72, 69, 128, 83, 65, 68, 69, 128, 83, 
-    65, 68, 128, 83, 65, 196, 83, 65, 67, 82, 73, 70, 73, 67, 73, 65, 204, 
-    83, 65, 65, 73, 128, 83, 65, 65, 68, 72, 85, 128, 83, 65, 45, 73, 128, 
-    83, 48, 52, 54, 128, 83, 48, 52, 53, 128, 83, 48, 52, 52, 128, 83, 48, 
-    52, 51, 128, 83, 48, 52, 50, 128, 83, 48, 52, 49, 128, 83, 48, 52, 48, 
-    128, 83, 48, 51, 57, 128, 83, 48, 51, 56, 128, 83, 48, 51, 55, 128, 83, 
-    48, 51, 54, 128, 83, 48, 51, 53, 65, 128, 83, 48, 51, 53, 128, 83, 48, 
-    51, 52, 128, 83, 48, 51, 51, 128, 83, 48, 51, 50, 128, 83, 48, 51, 49, 
-    128, 83, 48, 51, 48, 128, 83, 48, 50, 57, 128, 83, 48, 50, 56, 128, 83, 
-    48, 50, 55, 128, 83, 48, 50, 54, 66, 128, 83, 48, 50, 54, 65, 128, 83, 
-    48, 50, 54, 128, 83, 48, 50, 53, 128, 83, 48, 50, 52, 128, 83, 48, 50, 
-    51, 128, 83, 48, 50, 50, 128, 83, 48, 50, 49, 128, 83, 48, 50, 48, 128, 
-    83, 48, 49, 57, 128, 83, 48, 49, 56, 128, 83, 48, 49, 55, 65, 128, 83, 
-    48, 49, 55, 128, 83, 48, 49, 54, 128, 83, 48, 49, 53, 128, 83, 48, 49, 
-    52, 66, 128, 83, 48, 49, 52, 65, 128, 83, 48, 49, 52, 128, 83, 48, 49, 
-    51, 128, 83, 48, 49, 50, 128, 83, 48, 49, 49, 128, 83, 48, 49, 48, 128, 
-    83, 48, 48, 57, 128, 83, 48, 48, 56, 128, 83, 48, 48, 55, 128, 83, 48, 
-    48, 54, 65, 128, 83, 48, 48, 54, 128, 83, 48, 48, 53, 128, 83, 48, 48, 
-    52, 128, 83, 48, 48, 51, 128, 83, 48, 48, 50, 65, 128, 83, 48, 48, 50, 
-    128, 83, 48, 48, 49, 128, 83, 45, 87, 128, 83, 45, 83, 72, 65, 80, 69, 
-    196, 82, 89, 89, 128, 82, 89, 88, 128, 82, 89, 84, 128, 82, 89, 82, 88, 
-    128, 82, 89, 82, 128, 82, 89, 80, 128, 82, 89, 65, 128, 82, 87, 79, 79, 
-    128, 82, 87, 79, 128, 82, 87, 73, 73, 128, 82, 87, 73, 128, 82, 87, 69, 
-    69, 128, 82, 87, 69, 128, 82, 87, 65, 72, 65, 128, 82, 87, 65, 65, 128, 
-    82, 87, 65, 128, 82, 85, 88, 128, 82, 85, 85, 66, 85, 82, 85, 128, 82, 
-    85, 84, 128, 82, 85, 83, 73, 128, 82, 85, 82, 88, 128, 82, 85, 82, 128, 
-    82, 85, 80, 73, 73, 128, 82, 85, 80, 69, 197, 82, 85, 80, 128, 82, 85, 
-    79, 88, 128, 82, 85, 79, 80, 128, 82, 85, 79, 128, 82, 85, 78, 79, 85, 
-    84, 128, 82, 85, 78, 128, 82, 85, 77, 201, 82, 85, 77, 65, 201, 82, 85, 
-    77, 128, 82, 85, 205, 82, 85, 76, 69, 45, 68, 69, 76, 65, 89, 69, 68, 
-    128, 82, 85, 76, 69, 128, 82, 85, 75, 75, 65, 75, 72, 65, 128, 82, 85, 
-    73, 83, 128, 82, 85, 194, 82, 85, 65, 128, 82, 84, 72, 65, 78, 199, 82, 
-    84, 65, 71, 83, 128, 82, 84, 65, 71, 211, 82, 82, 89, 88, 128, 82, 82, 
-    89, 84, 128, 82, 82, 89, 82, 88, 128, 82, 82, 89, 82, 128, 82, 82, 89, 
-    80, 128, 82, 82, 89, 128, 82, 82, 85, 88, 128, 82, 82, 85, 84, 128, 82, 
-    82, 85, 82, 88, 128, 82, 82, 85, 82, 128, 82, 82, 85, 80, 128, 82, 82, 
-    85, 79, 88, 128, 82, 82, 85, 79, 128, 82, 82, 85, 128, 82, 82, 79, 88, 
-    128, 82, 82, 79, 84, 128, 82, 82, 79, 80, 128, 82, 82, 79, 128, 82, 82, 
-    69, 88, 128, 82, 82, 69, 84, 128, 82, 82, 69, 80, 128, 82, 82, 69, 72, 
-    128, 82, 82, 69, 200, 82, 82, 69, 128, 82, 82, 65, 88, 128, 82, 82, 65, 
-    128, 82, 79, 85, 78, 68, 69, 196, 82, 79, 85, 78, 68, 45, 84, 73, 80, 80, 
-    69, 196, 82, 79, 84, 85, 78, 68, 65, 128, 82, 79, 84, 65, 84, 69, 196, 
-    82, 79, 83, 72, 128, 82, 79, 83, 69, 84, 84, 69, 128, 82, 79, 79, 84, 
-    128, 82, 79, 79, 75, 128, 82, 79, 79, 70, 128, 82, 79, 79, 128, 82, 79, 
-    77, 65, 206, 82, 79, 196, 82, 79, 67, 128, 82, 79, 66, 65, 84, 128, 82, 
-    79, 65, 82, 128, 82, 79, 65, 128, 82, 78, 89, 73, 78, 199, 82, 78, 79, 
-    79, 78, 128, 82, 78, 79, 79, 206, 82, 78, 65, 205, 82, 74, 69, 211, 82, 
-    74, 69, 128, 82, 74, 197, 82, 73, 86, 69, 82, 128, 82, 73, 84, 85, 65, 
-    76, 128, 82, 73, 84, 84, 79, 82, 85, 128, 82, 73, 84, 83, 73, 128, 82, 
-    73, 83, 73, 78, 199, 82, 73, 83, 72, 128, 82, 73, 82, 65, 128, 82, 73, 
-    80, 128, 82, 73, 78, 71, 211, 82, 73, 78, 70, 79, 82, 90, 65, 78, 68, 79, 
-    128, 82, 73, 206, 82, 73, 75, 82, 73, 75, 128, 82, 73, 73, 128, 82, 73, 
-    71, 86, 69, 68, 73, 195, 82, 73, 71, 72, 84, 87, 65, 82, 68, 83, 128, 82, 
-    73, 71, 72, 84, 72, 65, 78, 196, 82, 73, 71, 72, 84, 45, 84, 79, 45, 76, 
-    69, 70, 212, 82, 73, 71, 72, 84, 45, 83, 73, 68, 197, 82, 73, 71, 72, 84, 
-    45, 83, 72, 65, 68, 79, 87, 69, 196, 82, 73, 71, 72, 84, 45, 83, 72, 65, 
-    68, 69, 196, 82, 73, 71, 72, 84, 45, 80, 79, 73, 78, 84, 73, 78, 199, 82, 
-    73, 71, 72, 84, 45, 72, 65, 78, 196, 82, 73, 71, 72, 84, 45, 70, 65, 67, 
-    73, 78, 199, 82, 73, 71, 72, 84, 128, 82, 73, 69, 85, 76, 45, 89, 69, 83, 
-    73, 69, 85, 78, 71, 128, 82, 73, 69, 85, 76, 45, 89, 69, 79, 82, 73, 78, 
-    72, 73, 69, 85, 72, 45, 72, 73, 69, 85, 72, 128, 82, 73, 69, 85, 76, 45, 
-    89, 69, 79, 82, 73, 78, 72, 73, 69, 85, 72, 128, 82, 73, 69, 85, 76, 45, 
-    84, 73, 75, 69, 85, 84, 45, 72, 73, 69, 85, 72, 128, 82, 73, 69, 85, 76, 
-    45, 84, 73, 75, 69, 85, 84, 128, 82, 73, 69, 85, 76, 45, 84, 72, 73, 69, 
-    85, 84, 72, 128, 82, 73, 69, 85, 76, 45, 83, 83, 65, 78, 71, 84, 73, 75, 
-    69, 85, 84, 128, 82, 73, 69, 85, 76, 45, 83, 83, 65, 78, 71, 83, 73, 79, 
-    83, 128, 82, 73, 69, 85, 76, 45, 83, 83, 65, 78, 71, 80, 73, 69, 85, 80, 
-    128, 82, 73, 69, 85, 76, 45, 83, 83, 65, 78, 71, 75, 73, 89, 69, 79, 75, 
-    128, 82, 73, 69, 85, 76, 45, 83, 73, 79, 83, 128, 82, 73, 69, 85, 76, 45, 
-    80, 73, 69, 85, 80, 45, 84, 73, 75, 69, 85, 84, 128, 82, 73, 69, 85, 76, 
-    45, 80, 73, 69, 85, 80, 45, 83, 73, 79, 83, 128, 82, 73, 69, 85, 76, 45, 
-    80, 73, 69, 85, 80, 45, 80, 72, 73, 69, 85, 80, 72, 128, 82, 73, 69, 85, 
-    76, 45, 80, 73, 69, 85, 80, 45, 72, 73, 69, 85, 72, 128, 82, 73, 69, 85, 
-    76, 45, 80, 73, 69, 85, 80, 128, 82, 73, 69, 85, 76, 45, 80, 72, 73, 69, 
-    85, 80, 72, 128, 82, 73, 69, 85, 76, 45, 80, 65, 78, 83, 73, 79, 83, 128, 
-    82, 73, 69, 85, 76, 45, 78, 73, 69, 85, 78, 128, 82, 73, 69, 85, 76, 45, 
-    77, 73, 69, 85, 77, 45, 83, 73, 79, 83, 128, 82, 73, 69, 85, 76, 45, 77, 
-    73, 69, 85, 77, 45, 75, 73, 89, 69, 79, 75, 128, 82, 73, 69, 85, 76, 45, 
-    77, 73, 69, 85, 77, 45, 72, 73, 69, 85, 72, 128, 82, 73, 69, 85, 76, 45, 
-    77, 73, 69, 85, 77, 128, 82, 73, 69, 85, 76, 45, 75, 73, 89, 69, 79, 75, 
-    45, 83, 73, 79, 83, 128, 82, 73, 69, 85, 76, 45, 75, 73, 89, 69, 79, 75, 
-    45, 72, 73, 69, 85, 72, 128, 82, 73, 69, 85, 76, 45, 75, 73, 89, 69, 79, 
-    75, 128, 82, 73, 69, 85, 76, 45, 75, 65, 80, 89, 69, 79, 85, 78, 80, 73, 
-    69, 85, 80, 128, 82, 73, 69, 85, 76, 45, 72, 73, 69, 85, 72, 128, 82, 73, 
-    69, 85, 76, 45, 67, 73, 69, 85, 67, 128, 82, 73, 69, 85, 204, 82, 73, 69, 
-    76, 128, 82, 73, 69, 69, 128, 82, 73, 67, 69, 77, 128, 82, 73, 67, 69, 
-    128, 82, 73, 65, 204, 82, 72, 79, 84, 73, 195, 82, 72, 79, 128, 82, 72, 
-    207, 82, 72, 65, 128, 82, 71, 89, 73, 78, 71, 83, 128, 82, 71, 89, 65, 
-    78, 128, 82, 71, 89, 193, 82, 69, 86, 79, 76, 85, 84, 73, 79, 78, 128, 
-    82, 69, 86, 77, 65, 128, 82, 69, 86, 73, 65, 128, 82, 69, 86, 69, 82, 83, 
-    69, 68, 128, 82, 69, 86, 69, 82, 83, 197, 82, 69, 85, 88, 128, 82, 69, 
-    84, 85, 82, 78, 128, 82, 69, 84, 85, 82, 206, 82, 69, 84, 82, 79, 70, 76, 
-    69, 216, 82, 69, 84, 82, 69, 65, 84, 128, 82, 69, 83, 85, 80, 73, 78, 85, 
-    83, 128, 82, 69, 83, 84, 82, 73, 67, 84, 69, 196, 82, 69, 83, 84, 128, 
-    82, 69, 83, 80, 79, 78, 83, 69, 128, 82, 69, 83, 79, 85, 82, 67, 69, 128, 
-    82, 69, 83, 79, 76, 85, 84, 73, 79, 78, 128, 82, 69, 83, 73, 83, 84, 65, 
-    78, 67, 69, 128, 82, 69, 83, 73, 68, 69, 78, 67, 69, 128, 82, 69, 83, 
-    200, 82, 69, 82, 69, 78, 71, 71, 65, 78, 128, 82, 69, 82, 69, 75, 65, 78, 
-    128, 82, 69, 80, 82, 69, 83, 69, 78, 84, 128, 82, 69, 80, 76, 65, 67, 69, 
-    77, 69, 78, 212, 82, 69, 80, 69, 65, 84, 69, 196, 82, 69, 80, 69, 65, 84, 
-    128, 82, 69, 80, 69, 65, 212, 82, 69, 80, 65, 128, 82, 69, 80, 193, 82, 
-    69, 78, 84, 79, 71, 69, 78, 128, 82, 69, 78, 128, 82, 69, 77, 85, 128, 
-    82, 69, 76, 73, 71, 73, 79, 78, 128, 82, 69, 76, 69, 65, 83, 69, 128, 82, 
-    69, 76, 65, 84, 73, 79, 78, 65, 204, 82, 69, 76, 65, 84, 73, 79, 78, 128, 
-    82, 69, 76, 65, 65, 128, 82, 69, 74, 65, 78, 199, 82, 69, 73, 196, 82, 
-    69, 71, 73, 83, 84, 69, 82, 69, 196, 82, 69, 70, 69, 82, 69, 78, 67, 197, 
-    82, 69, 68, 85, 80, 76, 73, 67, 65, 84, 73, 79, 78, 128, 82, 69, 67, 89, 
-    67, 76, 73, 78, 199, 82, 69, 67, 89, 67, 76, 69, 196, 82, 69, 67, 84, 73, 
-    76, 73, 78, 69, 65, 210, 82, 69, 67, 84, 65, 78, 71, 85, 76, 65, 210, 82, 
-    69, 67, 84, 65, 78, 71, 76, 69, 128, 82, 69, 67, 84, 65, 78, 71, 76, 197, 
-    82, 69, 67, 79, 82, 68, 73, 78, 199, 82, 69, 67, 79, 82, 68, 69, 82, 128, 
-    82, 69, 67, 79, 82, 196, 82, 69, 67, 69, 80, 84, 73, 86, 197, 82, 69, 65, 
-    72, 77, 85, 75, 128, 82, 69, 65, 67, 72, 128, 82, 68, 207, 82, 68, 69, 
-    204, 82, 66, 65, 83, 193, 82, 65, 89, 83, 128, 82, 65, 89, 65, 78, 78, 
-    65, 128, 82, 65, 89, 128, 82, 65, 84, 73, 79, 128, 82, 65, 84, 72, 65, 
-    128, 82, 65, 84, 72, 193, 82, 65, 84, 65, 128, 82, 65, 84, 128, 82, 65, 
-    83, 87, 65, 68, 73, 128, 82, 65, 83, 79, 85, 204, 82, 65, 83, 72, 65, 
-    128, 82, 65, 80, 73, 83, 77, 65, 128, 82, 65, 78, 71, 197, 82, 65, 78, 
-    65, 128, 82, 65, 78, 128, 82, 65, 77, 211, 82, 65, 77, 66, 65, 84, 128, 
-    82, 65, 77, 128, 82, 65, 75, 72, 65, 78, 71, 128, 82, 65, 73, 83, 69, 
-    196, 82, 65, 73, 78, 128, 82, 65, 73, 206, 82, 65, 73, 68, 207, 82, 65, 
-    73, 68, 65, 128, 82, 65, 73, 128, 82, 65, 72, 77, 65, 84, 85, 76, 76, 65, 
-    200, 82, 65, 70, 69, 128, 82, 65, 69, 128, 82, 65, 68, 73, 79, 65, 67, 
-    84, 73, 86, 197, 82, 65, 68, 201, 82, 65, 68, 128, 82, 65, 196, 82, 65, 
-    66, 128, 82, 65, 65, 73, 128, 82, 65, 65, 128, 82, 65, 51, 128, 82, 65, 
-    50, 128, 82, 48, 50, 57, 128, 82, 48, 50, 56, 128, 82, 48, 50, 55, 128, 
-    82, 48, 50, 54, 128, 82, 48, 50, 53, 128, 82, 48, 50, 52, 128, 82, 48, 
-    50, 51, 128, 82, 48, 50, 50, 128, 82, 48, 50, 49, 128, 82, 48, 50, 48, 
-    128, 82, 48, 49, 57, 128, 82, 48, 49, 56, 128, 82, 48, 49, 55, 128, 82, 
-    48, 49, 54, 65, 128, 82, 48, 49, 54, 128, 82, 48, 49, 53, 128, 82, 48, 
-    49, 52, 128, 82, 48, 49, 51, 128, 82, 48, 49, 50, 128, 82, 48, 49, 49, 
-    128, 82, 48, 49, 48, 65, 128, 82, 48, 49, 48, 128, 82, 48, 48, 57, 128, 
-    82, 48, 48, 56, 128, 82, 48, 48, 55, 128, 82, 48, 48, 54, 128, 82, 48, 
-    48, 53, 128, 82, 48, 48, 52, 128, 82, 48, 48, 51, 66, 128, 82, 48, 48, 
-    51, 65, 128, 82, 48, 48, 51, 128, 82, 48, 48, 50, 65, 128, 82, 48, 48, 
-    50, 128, 82, 48, 48, 49, 128, 82, 45, 67, 82, 69, 197, 81, 89, 88, 128, 
-    81, 89, 85, 128, 81, 89, 84, 128, 81, 89, 82, 88, 128, 81, 89, 82, 128, 
-    81, 89, 80, 128, 81, 89, 79, 128, 81, 89, 73, 128, 81, 89, 69, 69, 128, 
-    81, 89, 69, 128, 81, 89, 65, 65, 128, 81, 89, 65, 128, 81, 89, 128, 81, 
-    87, 73, 128, 81, 87, 69, 69, 128, 81, 87, 69, 128, 81, 87, 65, 65, 128, 
-    81, 87, 65, 128, 81, 85, 88, 128, 81, 85, 86, 128, 81, 85, 85, 86, 128, 
-    81, 85, 85, 128, 81, 85, 84, 128, 81, 85, 83, 72, 83, 72, 65, 89, 65, 
-    128, 81, 85, 82, 88, 128, 81, 85, 82, 128, 81, 85, 80, 128, 81, 85, 79, 
-    88, 128, 81, 85, 79, 84, 197, 81, 85, 79, 84, 65, 84, 73, 79, 206, 81, 
-    85, 79, 84, 128, 81, 85, 79, 80, 128, 81, 85, 79, 128, 81, 85, 75, 128, 
-    81, 85, 73, 78, 68, 73, 67, 69, 83, 73, 77, 193, 81, 85, 73, 78, 67, 85, 
-    78, 88, 128, 81, 85, 73, 78, 65, 82, 73, 85, 211, 81, 85, 73, 76, 76, 
-    128, 81, 85, 73, 128, 81, 85, 70, 128, 81, 85, 69, 83, 84, 73, 79, 78, 
-    69, 196, 81, 85, 69, 83, 84, 73, 79, 78, 128, 81, 85, 69, 83, 84, 73, 79, 
-    206, 81, 85, 69, 69, 78, 128, 81, 85, 69, 128, 81, 85, 66, 85, 84, 83, 
-    128, 81, 85, 65, 84, 69, 82, 78, 73, 79, 206, 81, 85, 65, 82, 84, 69, 82, 
-    83, 128, 81, 85, 65, 82, 84, 69, 82, 211, 81, 85, 65, 82, 84, 69, 82, 
-    128, 81, 85, 65, 82, 84, 69, 210, 81, 85, 65, 78, 84, 73, 84, 217, 81, 
-    85, 65, 68, 82, 85, 80, 76, 197, 81, 85, 65, 68, 82, 65, 78, 84, 128, 81, 
-    85, 65, 68, 82, 65, 78, 212, 81, 85, 65, 68, 128, 81, 85, 65, 196, 81, 
-    85, 65, 128, 81, 85, 128, 81, 208, 81, 79, 88, 128, 81, 79, 84, 128, 81, 
-    79, 80, 72, 128, 81, 79, 80, 65, 128, 81, 79, 80, 128, 81, 79, 79, 128, 
-    81, 79, 207, 81, 79, 70, 128, 81, 79, 198, 81, 79, 65, 128, 81, 79, 128, 
-    81, 78, 128, 81, 73, 88, 128, 81, 73, 84, 83, 65, 128, 81, 73, 84, 128, 
-    81, 73, 80, 128, 81, 73, 73, 128, 81, 73, 69, 88, 128, 81, 73, 69, 84, 
-    128, 81, 73, 69, 80, 128, 81, 73, 69, 128, 81, 73, 128, 81, 72, 87, 73, 
-    128, 81, 72, 87, 69, 69, 128, 81, 72, 87, 69, 128, 81, 72, 87, 65, 65, 
-    128, 81, 72, 87, 65, 128, 81, 72, 85, 128, 81, 72, 79, 128, 81, 72, 73, 
-    128, 81, 72, 69, 69, 128, 81, 72, 69, 128, 81, 72, 65, 65, 128, 81, 72, 
-    65, 128, 81, 69, 84, 65, 78, 65, 128, 81, 69, 69, 128, 81, 69, 128, 81, 
-    65, 85, 128, 81, 65, 84, 65, 78, 128, 81, 65, 82, 78, 69, 217, 81, 65, 
-    82, 128, 81, 65, 81, 128, 81, 65, 80, 72, 128, 81, 65, 77, 65, 84, 83, 
-    128, 81, 65, 77, 65, 84, 211, 81, 65, 76, 193, 81, 65, 73, 82, 84, 72, 
-    82, 65, 128, 81, 65, 73, 128, 81, 65, 70, 128, 81, 65, 198, 81, 65, 68, 
-    77, 65, 128, 81, 65, 65, 73, 128, 81, 65, 65, 70, 85, 128, 81, 65, 65, 
-    70, 128, 81, 48, 48, 55, 128, 81, 48, 48, 54, 128, 81, 48, 48, 53, 128, 
-    81, 48, 48, 52, 128, 81, 48, 48, 51, 128, 81, 48, 48, 50, 128, 81, 48, 
-    48, 49, 128, 209, 80, 90, 128, 80, 89, 88, 128, 80, 89, 84, 128, 80, 89, 
-    82, 88, 128, 80, 89, 82, 128, 80, 89, 80, 128, 80, 89, 128, 80, 87, 79, 
-    89, 128, 80, 87, 79, 79, 128, 80, 87, 79, 128, 80, 87, 207, 80, 87, 73, 
-    73, 128, 80, 87, 73, 128, 80, 87, 69, 69, 128, 80, 87, 69, 128, 80, 87, 
-    65, 65, 128, 80, 87, 128, 80, 86, 128, 80, 85, 88, 128, 80, 85, 84, 128, 
-    80, 85, 83, 72, 80, 73, 75, 65, 128, 80, 85, 83, 72, 73, 78, 199, 80, 85, 
-    82, 88, 128, 80, 85, 82, 73, 84, 89, 128, 80, 85, 82, 128, 80, 85, 80, 
-    128, 80, 85, 79, 88, 128, 80, 85, 79, 80, 128, 80, 85, 79, 128, 80, 85, 
-    78, 71, 128, 80, 85, 78, 67, 84, 85, 65, 84, 73, 79, 78, 128, 80, 85, 78, 
-    67, 84, 85, 65, 84, 73, 79, 206, 80, 85, 77, 80, 128, 80, 85, 69, 128, 
-    80, 85, 65, 69, 128, 80, 85, 50, 128, 80, 85, 128, 80, 84, 72, 65, 72, 
-    193, 80, 84, 69, 128, 80, 83, 73, 70, 73, 83, 84, 79, 83, 89, 78, 65, 71, 
-    77, 65, 128, 80, 83, 73, 70, 73, 83, 84, 79, 80, 65, 82, 65, 75, 65, 76, 
-    69, 83, 77, 65, 128, 80, 83, 73, 70, 73, 83, 84, 79, 206, 80, 83, 73, 70, 
-    73, 83, 84, 79, 76, 89, 71, 73, 83, 77, 65, 128, 80, 83, 73, 128, 80, 83, 
-    128, 80, 82, 79, 86, 69, 128, 80, 82, 79, 84, 79, 86, 65, 82, 89, 211, 
-    80, 82, 79, 84, 79, 211, 80, 82, 79, 83, 71, 69, 71, 82, 65, 77, 77, 69, 
-    78, 73, 128, 80, 82, 79, 80, 79, 82, 84, 73, 79, 78, 65, 204, 80, 82, 79, 
-    80, 79, 82, 84, 73, 79, 78, 128, 80, 82, 79, 80, 69, 82, 84, 217, 80, 82, 
-    79, 80, 69, 76, 76, 69, 210, 80, 82, 79, 79, 70, 128, 80, 82, 79, 76, 79, 
-    78, 71, 69, 196, 80, 82, 79, 76, 65, 84, 73, 79, 78, 197, 80, 82, 79, 74, 
-    69, 67, 84, 73, 86, 69, 128, 80, 82, 79, 74, 69, 67, 84, 73, 79, 78, 128, 
-    80, 82, 79, 71, 82, 69, 83, 83, 128, 80, 82, 79, 70, 79, 85, 78, 68, 128, 
-    80, 82, 79, 68, 85, 67, 84, 128, 80, 82, 79, 68, 85, 67, 212, 80, 82, 73, 
-    86, 65, 84, 69, 128, 80, 82, 73, 83, 72, 84, 72, 65, 77, 65, 84, 82, 193, 
-    80, 82, 73, 78, 84, 128, 80, 82, 73, 78, 212, 80, 82, 73, 77, 69, 128, 
-    80, 82, 73, 77, 197, 80, 82, 69, 86, 73, 79, 85, 211, 80, 82, 69, 83, 69, 
-    78, 84, 65, 84, 73, 79, 206, 80, 82, 69, 83, 67, 82, 73, 80, 84, 73, 79, 
-    206, 80, 82, 69, 80, 79, 78, 68, 69, 82, 65, 78, 67, 69, 128, 80, 82, 69, 
-    78, 75, 72, 65, 128, 80, 82, 69, 70, 65, 67, 197, 80, 82, 69, 67, 69, 68, 
-    73, 78, 199, 80, 82, 69, 67, 69, 68, 69, 83, 128, 80, 82, 69, 67, 69, 68, 
-    69, 211, 80, 82, 69, 67, 69, 68, 69, 196, 80, 82, 69, 67, 69, 68, 69, 
-    128, 80, 82, 69, 67, 69, 68, 197, 80, 82, 65, 77, 45, 80, 73, 73, 128, 
-    80, 82, 65, 77, 45, 80, 73, 201, 80, 82, 65, 77, 45, 77, 85, 79, 89, 128, 
-    80, 82, 65, 77, 45, 77, 85, 79, 217, 80, 82, 65, 77, 45, 66, 85, 79, 78, 
-    128, 80, 82, 65, 77, 45, 66, 85, 79, 206, 80, 82, 65, 77, 45, 66, 69, 73, 
-    128, 80, 82, 65, 77, 45, 66, 69, 201, 80, 82, 65, 77, 128, 80, 82, 65, 
-    205, 80, 82, 128, 80, 80, 86, 128, 80, 80, 77, 128, 80, 80, 65, 128, 80, 
-    79, 89, 128, 80, 79, 88, 128, 80, 79, 87, 69, 82, 211, 80, 79, 87, 69, 
-    82, 128, 80, 79, 85, 78, 196, 80, 79, 83, 84, 80, 79, 83, 73, 84, 73, 79, 
-    206, 80, 79, 83, 84, 65, 204, 80, 79, 83, 83, 69, 83, 83, 73, 79, 78, 
-    128, 80, 79, 82, 82, 69, 67, 84, 85, 83, 128, 80, 79, 82, 82, 69, 67, 84, 
-    85, 211, 80, 79, 80, 128, 80, 79, 208, 80, 79, 79, 128, 80, 79, 78, 68, 
-    79, 128, 80, 79, 76, 201, 80, 79, 76, 69, 128, 80, 79, 75, 82, 89, 84, 
-    73, 69, 128, 80, 79, 75, 79, 74, 73, 128, 80, 79, 73, 78, 84, 79, 128, 
-    80, 79, 73, 78, 84, 69, 82, 128, 80, 79, 73, 78, 84, 69, 196, 80, 79, 73, 
-    78, 84, 128, 80, 79, 73, 78, 212, 80, 79, 69, 84, 82, 217, 80, 79, 69, 
-    84, 73, 195, 80, 79, 68, 65, 84, 85, 83, 128, 80, 79, 65, 128, 80, 79, 
-    128, 80, 207, 80, 78, 69, 85, 77, 65, 84, 65, 128, 80, 76, 85, 84, 79, 
-    128, 80, 76, 85, 83, 45, 77, 73, 78, 85, 211, 80, 76, 85, 83, 128, 80, 
-    76, 85, 77, 69, 196, 80, 76, 85, 77, 128, 80, 76, 85, 75, 128, 80, 76, 
-    79, 87, 128, 80, 76, 79, 80, 72, 85, 128, 80, 76, 69, 84, 72, 82, 79, 78, 
-    128, 80, 76, 65, 83, 84, 73, 67, 83, 128, 80, 76, 65, 78, 69, 128, 80, 
-    76, 65, 78, 197, 80, 76, 65, 78, 67, 203, 80, 76, 65, 75, 128, 80, 76, 
-    65, 71, 73, 79, 211, 80, 76, 65, 67, 69, 72, 79, 76, 68, 69, 210, 80, 76, 
-    65, 67, 197, 80, 76, 65, 128, 80, 73, 90, 90, 73, 67, 65, 84, 79, 128, 
-    80, 73, 88, 128, 80, 73, 87, 82, 128, 80, 73, 84, 67, 72, 70, 79, 82, 75, 
-    128, 80, 73, 84, 67, 72, 70, 79, 82, 203, 80, 73, 84, 128, 80, 73, 83, 
-    69, 76, 69, 72, 128, 80, 73, 83, 67, 69, 83, 128, 80, 73, 82, 73, 71, 
-    128, 80, 73, 82, 73, 199, 80, 73, 80, 73, 78, 71, 128, 80, 73, 80, 128, 
-    80, 73, 78, 87, 72, 69, 69, 204, 80, 73, 76, 67, 82, 79, 215, 80, 73, 75, 
-    85, 82, 85, 128, 80, 73, 75, 79, 128, 80, 73, 71, 128, 80, 73, 69, 88, 
-    128, 80, 73, 69, 85, 80, 45, 84, 72, 73, 69, 85, 84, 72, 128, 80, 73, 69, 
-    85, 80, 45, 83, 83, 65, 78, 71, 83, 73, 79, 83, 128, 80, 73, 69, 85, 80, 
-    45, 83, 73, 79, 83, 45, 84, 73, 75, 69, 85, 84, 128, 80, 73, 69, 85, 80, 
-    45, 83, 73, 79, 83, 45, 84, 72, 73, 69, 85, 84, 72, 128, 80, 73, 69, 85, 
-    80, 45, 83, 73, 79, 83, 45, 80, 73, 69, 85, 80, 128, 80, 73, 69, 85, 80, 
-    45, 83, 73, 79, 83, 45, 75, 73, 89, 69, 79, 75, 128, 80, 73, 69, 85, 80, 
-    45, 83, 73, 79, 83, 45, 67, 73, 69, 85, 67, 128, 80, 73, 69, 85, 80, 45, 
-    82, 73, 69, 85, 76, 45, 80, 72, 73, 69, 85, 80, 72, 128, 80, 73, 69, 85, 
-    80, 45, 82, 73, 69, 85, 76, 128, 80, 73, 69, 85, 80, 45, 78, 73, 69, 85, 
-    78, 128, 80, 73, 69, 85, 80, 45, 77, 73, 69, 85, 77, 128, 80, 73, 69, 85, 
-    80, 45, 75, 72, 73, 69, 85, 75, 72, 128, 80, 73, 69, 85, 80, 45, 67, 73, 
-    69, 85, 67, 128, 80, 73, 69, 85, 80, 45, 67, 72, 73, 69, 85, 67, 72, 128, 
-    80, 73, 69, 85, 208, 80, 73, 69, 80, 128, 80, 73, 69, 67, 69, 128, 80, 
-    73, 69, 128, 80, 73, 67, 75, 128, 80, 73, 65, 83, 85, 84, 79, 82, 85, 
-    128, 80, 73, 65, 83, 77, 193, 80, 73, 65, 78, 79, 128, 80, 201, 80, 72, 
-    87, 65, 128, 80, 72, 85, 84, 72, 65, 79, 128, 80, 72, 85, 210, 80, 72, 
-    85, 78, 71, 128, 80, 72, 82, 65, 83, 69, 128, 80, 72, 79, 69, 78, 73, 67, 
-    73, 65, 206, 80, 72, 79, 65, 128, 80, 72, 79, 128, 80, 72, 207, 80, 72, 
-    78, 65, 69, 203, 80, 72, 73, 78, 84, 72, 85, 128, 80, 72, 73, 76, 73, 80, 
-    80, 73, 78, 197, 80, 72, 73, 69, 85, 80, 72, 45, 84, 72, 73, 69, 85, 84, 
-    72, 128, 80, 72, 73, 69, 85, 80, 72, 45, 83, 73, 79, 83, 128, 80, 72, 73, 
-    69, 85, 80, 72, 45, 80, 73, 69, 85, 80, 128, 80, 72, 73, 69, 85, 80, 72, 
-    45, 72, 73, 69, 85, 72, 128, 80, 72, 73, 69, 85, 80, 200, 80, 72, 73, 
-    128, 80, 72, 201, 80, 72, 69, 69, 128, 80, 72, 69, 128, 80, 72, 65, 82, 
-    89, 78, 71, 69, 65, 204, 80, 72, 65, 82, 128, 80, 72, 65, 78, 128, 80, 
-    72, 65, 77, 128, 80, 72, 65, 73, 83, 84, 79, 211, 80, 72, 65, 71, 83, 45, 
-    80, 193, 80, 72, 65, 65, 82, 75, 65, 65, 128, 80, 72, 65, 65, 128, 80, 
-    72, 65, 128, 80, 71, 128, 80, 70, 128, 80, 69, 85, 88, 128, 80, 69, 84, 
-    65, 83, 84, 79, 75, 79, 85, 70, 73, 83, 77, 65, 128, 80, 69, 84, 65, 83, 
-    84, 73, 128, 80, 69, 84, 65, 83, 77, 65, 128, 80, 69, 84, 65, 76, 76, 69, 
-    196, 80, 69, 83, 79, 128, 80, 69, 83, 207, 80, 69, 83, 72, 50, 128, 80, 
-    69, 83, 69, 84, 193, 80, 69, 211, 80, 69, 82, 84, 72, 207, 80, 69, 82, 
-    83, 80, 69, 67, 84, 73, 86, 69, 128, 80, 69, 82, 83, 79, 78, 128, 80, 69, 
-    82, 83, 79, 206, 80, 69, 82, 83, 73, 65, 206, 80, 69, 82, 80, 69, 78, 68, 
-    73, 67, 85, 76, 65, 82, 128, 80, 69, 82, 80, 69, 78, 68, 73, 67, 85, 76, 
-    65, 210, 80, 69, 82, 77, 65, 78, 69, 78, 212, 80, 69, 82, 73, 83, 80, 79, 
-    77, 69, 78, 73, 128, 80, 69, 82, 73, 83, 80, 79, 77, 69, 78, 201, 80, 69, 
-    82, 70, 69, 67, 84, 85, 205, 80, 69, 82, 70, 69, 67, 84, 65, 128, 80, 69, 
-    82, 70, 69, 67, 84, 193, 80, 69, 82, 67, 85, 83, 83, 73, 86, 69, 128, 80, 
-    69, 82, 67, 69, 78, 212, 80, 69, 80, 69, 84, 128, 80, 69, 80, 69, 212, 
-    80, 69, 79, 82, 84, 200, 80, 69, 78, 84, 65, 83, 69, 77, 69, 128, 80, 69, 
-    78, 84, 65, 71, 79, 78, 128, 80, 69, 78, 83, 85, 128, 80, 69, 78, 78, 
-    217, 80, 69, 78, 73, 72, 73, 128, 80, 69, 78, 71, 75, 65, 76, 128, 80, 
-    69, 78, 69, 84, 82, 65, 84, 73, 79, 78, 128, 80, 69, 78, 67, 73, 76, 128, 
-    80, 69, 76, 65, 83, 84, 79, 78, 128, 80, 69, 76, 65, 83, 84, 79, 206, 80, 
-    69, 73, 84, 72, 128, 80, 69, 72, 69, 72, 128, 80, 69, 72, 69, 200, 80, 
-    69, 72, 128, 80, 69, 200, 80, 69, 69, 90, 73, 128, 80, 69, 69, 80, 128, 
-    80, 69, 69, 128, 80, 69, 68, 69, 83, 84, 82, 73, 65, 78, 128, 80, 69, 68, 
-    69, 83, 84, 65, 76, 128, 80, 69, 68, 69, 83, 84, 65, 204, 80, 69, 68, 65, 
-    204, 80, 69, 65, 67, 69, 128, 80, 69, 65, 67, 197, 80, 68, 128, 80, 67, 
-    128, 80, 65, 90, 69, 82, 128, 80, 65, 89, 69, 82, 79, 75, 128, 80, 65, 
-    89, 65, 78, 78, 65, 128, 80, 65, 89, 128, 80, 65, 88, 128, 80, 65, 87, 
-    78, 128, 80, 65, 215, 80, 65, 86, 73, 89, 65, 78, 73, 128, 80, 65, 84, 
-    84, 69, 82, 78, 128, 80, 65, 84, 72, 65, 77, 65, 83, 65, 84, 128, 80, 65, 
-    84, 200, 80, 65, 84, 65, 75, 128, 80, 65, 84, 65, 72, 128, 80, 65, 84, 
-    128, 80, 65, 83, 85, 81, 128, 80, 65, 83, 83, 73, 86, 69, 45, 80, 85, 76, 
-    76, 45, 85, 80, 45, 79, 85, 84, 80, 85, 212, 80, 65, 83, 83, 73, 86, 69, 
-    45, 80, 85, 76, 76, 45, 68, 79, 87, 78, 45, 79, 85, 84, 80, 85, 212, 80, 
-    65, 83, 72, 84, 65, 128, 80, 65, 83, 69, 81, 128, 80, 65, 82, 84, 78, 69, 
-    82, 83, 72, 73, 208, 80, 65, 82, 84, 73, 65, 76, 76, 89, 45, 82, 69, 67, 
-    89, 67, 76, 69, 196, 80, 65, 82, 84, 73, 65, 204, 80, 65, 82, 84, 72, 73, 
-    65, 206, 80, 65, 82, 212, 80, 65, 82, 73, 67, 72, 79, 78, 128, 80, 65, 
-    82, 69, 83, 84, 73, 71, 77, 69, 78, 79, 206, 80, 65, 82, 69, 82, 69, 78, 
-    128, 80, 65, 82, 69, 78, 84, 72, 69, 83, 73, 83, 128, 80, 65, 82, 69, 78, 
-    84, 72, 69, 83, 73, 211, 80, 65, 82, 65, 80, 72, 82, 65, 83, 197, 80, 65, 
-    82, 65, 76, 76, 69, 76, 79, 71, 82, 65, 77, 128, 80, 65, 82, 65, 76, 76, 
-    69, 76, 128, 80, 65, 82, 65, 76, 76, 69, 204, 80, 65, 82, 65, 75, 76, 73, 
-    84, 73, 75, 73, 128, 80, 65, 82, 65, 75, 76, 73, 84, 73, 75, 201, 80, 65, 
-    82, 65, 75, 65, 76, 69, 83, 77, 193, 80, 65, 82, 65, 71, 82, 65, 80, 72, 
-    79, 83, 128, 80, 65, 82, 65, 71, 82, 65, 80, 72, 128, 80, 65, 82, 65, 71, 
-    82, 65, 80, 200, 80, 65, 82, 65, 128, 80, 65, 82, 128, 80, 65, 80, 89, 
-    82, 85, 83, 128, 80, 65, 80, 69, 210, 80, 65, 80, 128, 80, 65, 208, 80, 
-    65, 207, 80, 65, 78, 89, 85, 75, 85, 128, 80, 65, 78, 89, 73, 75, 85, 
-    128, 80, 65, 78, 89, 69, 67, 69, 75, 128, 80, 65, 78, 89, 65, 78, 71, 71, 
-    65, 128, 80, 65, 78, 89, 65, 75, 82, 65, 128, 80, 65, 78, 84, 73, 128, 
-    80, 65, 78, 83, 73, 79, 83, 45, 80, 73, 69, 85, 80, 128, 80, 65, 78, 83, 
-    73, 79, 83, 45, 75, 65, 80, 89, 69, 79, 85, 78, 80, 73, 69, 85, 80, 128, 
-    80, 65, 78, 79, 76, 79, 78, 71, 128, 80, 65, 78, 71, 87, 73, 83, 65, 68, 
-    128, 80, 65, 78, 71, 82, 65, 78, 71, 75, 69, 80, 128, 80, 65, 78, 71, 76, 
-    65, 89, 65, 82, 128, 80, 65, 78, 71, 75, 79, 78, 128, 80, 65, 78, 71, 75, 
-    65, 84, 128, 80, 65, 78, 71, 72, 85, 76, 85, 128, 80, 65, 78, 71, 128, 
-    80, 65, 78, 69, 85, 76, 69, 85, 78, 71, 128, 80, 65, 78, 65, 69, 76, 65, 
-    69, 78, 71, 128, 80, 65, 78, 128, 80, 65, 77, 85, 78, 71, 75, 65, 72, 
-    128, 80, 65, 77, 85, 68, 80, 79, 68, 128, 80, 65, 77, 80, 72, 89, 76, 73, 
-    65, 206, 80, 65, 77, 73, 78, 71, 75, 65, 76, 128, 80, 65, 77, 69, 80, 69, 
-    84, 128, 80, 65, 77, 69, 78, 69, 78, 71, 128, 80, 65, 77, 65, 68, 65, 
-    128, 80, 65, 77, 65, 65, 69, 72, 128, 80, 65, 76, 85, 84, 65, 128, 80, 
-    65, 76, 79, 67, 72, 75, 65, 128, 80, 65, 76, 205, 80, 65, 76, 76, 65, 87, 
-    65, 128, 80, 65, 76, 76, 65, 83, 128, 80, 65, 76, 65, 85, 78, 199, 80, 
-    65, 76, 65, 84, 65, 76, 73, 90, 69, 196, 80, 65, 76, 65, 84, 65, 76, 73, 
-    90, 65, 84, 73, 79, 78, 128, 80, 65, 76, 65, 84, 65, 204, 80, 65, 73, 89, 
-    65, 78, 78, 79, 73, 128, 80, 65, 73, 82, 84, 72, 82, 65, 128, 80, 65, 73, 
-    82, 69, 196, 80, 65, 72, 76, 65, 86, 201, 80, 65, 68, 77, 193, 80, 65, 
-    68, 193, 80, 65, 68, 128, 80, 65, 67, 75, 73, 78, 71, 128, 80, 65, 65, 
-    84, 85, 128, 80, 65, 65, 83, 69, 78, 84, 79, 128, 80, 65, 65, 73, 128, 
-    80, 65, 65, 45, 80, 73, 76, 76, 65, 128, 80, 65, 65, 128, 80, 50, 128, 
-    80, 48, 49, 49, 128, 80, 48, 49, 48, 128, 80, 48, 48, 57, 128, 80, 48, 
-    48, 56, 128, 80, 48, 48, 55, 128, 80, 48, 48, 54, 128, 80, 48, 48, 53, 
-    128, 80, 48, 48, 52, 128, 80, 48, 48, 51, 65, 128, 80, 48, 48, 51, 128, 
-    80, 48, 48, 50, 128, 80, 48, 48, 49, 65, 128, 80, 48, 48, 49, 128, 79, 
-    89, 82, 65, 78, 73, 83, 77, 193, 79, 89, 65, 78, 78, 65, 128, 79, 88, 73, 
-    65, 128, 79, 88, 73, 193, 79, 88, 69, 73, 65, 201, 79, 88, 69, 73, 193, 
-    79, 86, 69, 82, 82, 73, 68, 69, 128, 79, 86, 69, 82, 76, 79, 78, 199, 79, 
-    86, 69, 82, 76, 73, 78, 69, 128, 79, 86, 69, 82, 76, 65, 89, 128, 79, 86, 
-    69, 82, 76, 65, 80, 80, 73, 78, 199, 79, 86, 69, 82, 76, 65, 73, 68, 128, 
-    79, 86, 69, 82, 66, 65, 82, 128, 79, 86, 65, 204, 79, 86, 128, 79, 85, 
-    84, 76, 73, 78, 69, 196, 79, 85, 84, 76, 73, 78, 69, 128, 79, 85, 84, 69, 
-    210, 79, 85, 78, 75, 73, 193, 79, 85, 78, 67, 197, 79, 84, 85, 128, 79, 
-    84, 84, 65, 86, 193, 79, 84, 84, 128, 79, 84, 72, 65, 76, 65, 206, 79, 
-    84, 72, 65, 76, 128, 79, 83, 77, 65, 78, 89, 193, 79, 82, 84, 72, 79, 71, 
-    79, 78, 65, 204, 79, 82, 84, 72, 79, 68, 79, 216, 79, 82, 78, 65, 84, 
-    197, 79, 82, 78, 65, 77, 69, 78, 84, 128, 79, 82, 78, 65, 77, 69, 78, 
-    212, 79, 82, 75, 72, 79, 206, 79, 82, 73, 71, 73, 78, 65, 204, 79, 82, 
-    73, 71, 73, 78, 128, 79, 82, 68, 73, 78, 65, 204, 79, 82, 67, 72, 73, 68, 
-    128, 79, 80, 84, 73, 79, 206, 79, 80, 80, 82, 69, 83, 83, 73, 79, 78, 
-    128, 79, 80, 80, 79, 83, 73, 84, 73, 79, 78, 128, 79, 80, 80, 79, 83, 73, 
-    78, 199, 79, 80, 80, 79, 83, 69, 128, 79, 80, 69, 82, 65, 84, 79, 82, 
-    128, 79, 80, 69, 82, 65, 84, 79, 210, 79, 80, 69, 78, 73, 78, 199, 79, 
-    80, 69, 78, 45, 80, 128, 79, 80, 69, 78, 45, 79, 85, 84, 76, 73, 78, 69, 
-    196, 79, 80, 69, 78, 45, 72, 69, 65, 68, 69, 196, 79, 80, 69, 78, 45, 67, 
-    73, 82, 67, 85, 73, 84, 45, 79, 85, 84, 80, 85, 212, 79, 80, 69, 206, 79, 
-    79, 90, 69, 128, 79, 79, 89, 65, 78, 78, 65, 128, 79, 79, 85, 128, 79, 
-    79, 77, 85, 128, 79, 79, 66, 79, 79, 70, 73, 76, 73, 128, 79, 78, 85, 
-    128, 79, 78, 83, 85, 128, 79, 78, 78, 128, 79, 78, 75, 65, 82, 128, 79, 
-    78, 69, 83, 69, 76, 70, 128, 79, 78, 69, 45, 87, 65, 217, 79, 78, 69, 45, 
-    76, 73, 78, 197, 79, 78, 65, 80, 128, 79, 77, 73, 83, 83, 73, 79, 206, 
-    79, 77, 73, 67, 82, 79, 78, 128, 79, 77, 73, 67, 82, 79, 206, 79, 77, 69, 
-    71, 65, 128, 79, 77, 69, 71, 193, 79, 77, 65, 76, 79, 78, 128, 79, 77, 
-    128, 79, 76, 73, 86, 69, 128, 79, 76, 73, 71, 79, 206, 79, 76, 68, 128, 
-    79, 75, 84, 207, 79, 75, 65, 82, 65, 128, 79, 75, 65, 82, 193, 79, 74, 
-    73, 66, 87, 65, 217, 79, 74, 69, 79, 78, 128, 79, 73, 76, 128, 79, 72, 
-    77, 128, 79, 72, 205, 79, 72, 128, 79, 71, 79, 78, 69, 75, 128, 79, 71, 
-    79, 78, 69, 203, 79, 71, 72, 65, 205, 79, 69, 75, 128, 79, 68, 196, 79, 
-    67, 84, 79, 66, 69, 82, 128, 79, 67, 210, 79, 67, 67, 76, 85, 83, 73, 79, 
-    78, 128, 79, 66, 83, 84, 82, 85, 67, 84, 73, 79, 78, 128, 79, 66, 79, 76, 
-    211, 79, 66, 79, 204, 79, 66, 79, 70, 73, 76, 73, 128, 79, 66, 76, 73, 
-    81, 85, 197, 79, 66, 74, 69, 67, 212, 79, 66, 69, 76, 85, 83, 128, 79, 
-    66, 69, 76, 79, 83, 128, 79, 66, 128, 79, 65, 89, 128, 79, 65, 75, 128, 
-    79, 65, 66, 79, 65, 70, 73, 76, 73, 128, 79, 193, 79, 48, 53, 49, 128, 
-    79, 48, 53, 48, 66, 128, 79, 48, 53, 48, 65, 128, 79, 48, 53, 48, 128, 
-    79, 48, 52, 57, 128, 79, 48, 52, 56, 128, 79, 48, 52, 55, 128, 79, 48, 
-    52, 54, 128, 79, 48, 52, 53, 128, 79, 48, 52, 52, 128, 79, 48, 52, 51, 
-    128, 79, 48, 52, 50, 128, 79, 48, 52, 49, 128, 79, 48, 52, 48, 128, 79, 
-    48, 51, 57, 128, 79, 48, 51, 56, 128, 79, 48, 51, 55, 128, 79, 48, 51, 
-    54, 68, 128, 79, 48, 51, 54, 67, 128, 79, 48, 51, 54, 66, 128, 79, 48, 
-    51, 54, 65, 128, 79, 48, 51, 54, 128, 79, 48, 51, 53, 128, 79, 48, 51, 
-    52, 128, 79, 48, 51, 51, 65, 128, 79, 48, 51, 51, 128, 79, 48, 51, 50, 
-    128, 79, 48, 51, 49, 128, 79, 48, 51, 48, 65, 128, 79, 48, 51, 48, 128, 
-    79, 48, 50, 57, 65, 128, 79, 48, 50, 57, 128, 79, 48, 50, 56, 128, 79, 
-    48, 50, 55, 128, 79, 48, 50, 54, 128, 79, 48, 50, 53, 65, 128, 79, 48, 
-    50, 53, 128, 79, 48, 50, 52, 65, 128, 79, 48, 50, 52, 128, 79, 48, 50, 
-    51, 128, 79, 48, 50, 50, 128, 79, 48, 50, 49, 128, 79, 48, 50, 48, 65, 
-    128, 79, 48, 50, 48, 128, 79, 48, 49, 57, 65, 128, 79, 48, 49, 57, 128, 
-    79, 48, 49, 56, 128, 79, 48, 49, 55, 128, 79, 48, 49, 54, 128, 79, 48, 
-    49, 53, 128, 79, 48, 49, 52, 128, 79, 48, 49, 51, 128, 79, 48, 49, 50, 
-    128, 79, 48, 49, 49, 128, 79, 48, 49, 48, 67, 128, 79, 48, 49, 48, 66, 
-    128, 79, 48, 49, 48, 65, 128, 79, 48, 49, 48, 128, 79, 48, 48, 57, 128, 
-    79, 48, 48, 56, 128, 79, 48, 48, 55, 128, 79, 48, 48, 54, 70, 128, 79, 
-    48, 48, 54, 69, 128, 79, 48, 48, 54, 68, 128, 79, 48, 48, 54, 67, 128, 
-    79, 48, 48, 54, 66, 128, 79, 48, 48, 54, 65, 128, 79, 48, 48, 54, 128, 
-    79, 48, 48, 53, 65, 128, 79, 48, 48, 53, 128, 79, 48, 48, 52, 128, 79, 
-    48, 48, 51, 128, 79, 48, 48, 50, 128, 79, 48, 48, 49, 65, 128, 79, 48, 
-    48, 49, 128, 79, 45, 89, 69, 128, 79, 45, 79, 45, 73, 128, 79, 45, 69, 
-    128, 78, 90, 89, 88, 128, 78, 90, 89, 84, 128, 78, 90, 89, 82, 88, 128, 
-    78, 90, 89, 82, 128, 78, 90, 89, 80, 128, 78, 90, 89, 128, 78, 90, 85, 
-    88, 128, 78, 90, 85, 82, 88, 128, 78, 90, 85, 82, 128, 78, 90, 85, 80, 
-    128, 78, 90, 85, 79, 88, 128, 78, 90, 85, 79, 128, 78, 90, 85, 128, 78, 
-    90, 79, 88, 128, 78, 90, 79, 80, 128, 78, 90, 73, 88, 128, 78, 90, 73, 
-    84, 128, 78, 90, 73, 80, 128, 78, 90, 73, 69, 88, 128, 78, 90, 73, 69, 
-    80, 128, 78, 90, 73, 69, 128, 78, 90, 73, 128, 78, 90, 69, 88, 128, 78, 
-    90, 69, 128, 78, 90, 65, 88, 128, 78, 90, 65, 84, 128, 78, 90, 65, 80, 
-    128, 78, 90, 65, 128, 78, 89, 87, 65, 128, 78, 89, 85, 88, 128, 78, 89, 
-    85, 84, 128, 78, 89, 85, 80, 128, 78, 89, 85, 79, 88, 128, 78, 89, 85, 
-    79, 80, 128, 78, 89, 85, 79, 128, 78, 89, 85, 128, 78, 89, 79, 88, 128, 
-    78, 89, 79, 84, 128, 78, 89, 79, 80, 128, 78, 89, 79, 79, 128, 78, 89, 
-    79, 65, 128, 78, 89, 79, 128, 78, 89, 74, 65, 128, 78, 89, 73, 88, 128, 
-    78, 89, 73, 84, 128, 78, 89, 73, 211, 78, 89, 73, 80, 128, 78, 89, 73, 
-    78, 45, 68, 79, 128, 78, 89, 73, 69, 88, 128, 78, 89, 73, 69, 84, 128, 
-    78, 89, 73, 69, 80, 128, 78, 89, 73, 69, 128, 78, 89, 73, 128, 78, 89, 
-    201, 78, 89, 69, 212, 78, 89, 69, 72, 128, 78, 89, 69, 200, 78, 89, 69, 
-    69, 128, 78, 89, 69, 128, 78, 89, 196, 78, 89, 67, 65, 128, 78, 89, 65, 
-    65, 128, 78, 87, 79, 79, 128, 78, 87, 79, 128, 78, 87, 73, 73, 128, 78, 
-    87, 73, 128, 78, 87, 69, 128, 78, 87, 65, 65, 128, 78, 87, 65, 128, 78, 
-    87, 128, 78, 86, 128, 78, 85, 88, 128, 78, 85, 85, 78, 128, 78, 85, 84, 
-    73, 76, 76, 85, 128, 78, 85, 84, 128, 78, 85, 82, 88, 128, 78, 85, 82, 
-    128, 78, 85, 80, 128, 78, 85, 79, 88, 128, 78, 85, 79, 80, 128, 78, 85, 
-    79, 128, 78, 85, 78, 85, 90, 128, 78, 85, 78, 85, 218, 78, 85, 78, 71, 
-    128, 78, 85, 78, 65, 86, 85, 212, 78, 85, 78, 65, 86, 73, 203, 78, 85, 
-    78, 128, 78, 85, 206, 78, 85, 77, 69, 82, 207, 78, 85, 77, 69, 82, 65, 
-    84, 79, 210, 78, 85, 77, 69, 82, 65, 204, 78, 85, 77, 66, 69, 82, 128, 
-    78, 85, 77, 128, 78, 85, 76, 76, 128, 78, 85, 76, 204, 78, 85, 75, 84, 
-    65, 128, 78, 85, 69, 78, 71, 128, 78, 85, 69, 128, 78, 85, 66, 73, 65, 
-    206, 78, 85, 65, 69, 128, 78, 85, 49, 49, 128, 78, 85, 48, 50, 50, 65, 
-    128, 78, 85, 48, 50, 50, 128, 78, 85, 48, 50, 49, 128, 78, 85, 48, 50, 
-    48, 128, 78, 85, 48, 49, 57, 128, 78, 85, 48, 49, 56, 65, 128, 78, 85, 
-    48, 49, 56, 128, 78, 85, 48, 49, 55, 128, 78, 85, 48, 49, 54, 128, 78, 
-    85, 48, 49, 53, 128, 78, 85, 48, 49, 52, 128, 78, 85, 48, 49, 51, 128, 
-    78, 85, 48, 49, 50, 128, 78, 85, 48, 49, 49, 65, 128, 78, 85, 48, 49, 49, 
-    128, 78, 85, 48, 49, 48, 65, 128, 78, 85, 48, 49, 48, 128, 78, 85, 48, 
-    48, 57, 128, 78, 85, 48, 48, 56, 128, 78, 85, 48, 48, 55, 128, 78, 85, 
-    48, 48, 54, 128, 78, 85, 48, 48, 53, 128, 78, 85, 48, 48, 52, 128, 78, 
-    85, 48, 48, 51, 128, 78, 85, 48, 48, 50, 128, 78, 85, 48, 48, 49, 128, 
-    78, 84, 85, 85, 128, 78, 84, 69, 69, 128, 78, 83, 72, 65, 128, 78, 82, 
-    89, 88, 128, 78, 82, 89, 84, 128, 78, 82, 89, 82, 88, 128, 78, 82, 89, 
-    82, 128, 78, 82, 89, 80, 128, 78, 82, 89, 128, 78, 82, 85, 88, 128, 78, 
-    82, 85, 84, 128, 78, 82, 85, 82, 88, 128, 78, 82, 85, 82, 128, 78, 82, 
-    85, 80, 128, 78, 82, 85, 128, 78, 82, 79, 88, 128, 78, 82, 79, 80, 128, 
-    78, 82, 79, 128, 78, 82, 69, 88, 128, 78, 82, 69, 84, 128, 78, 82, 69, 
-    80, 128, 78, 82, 69, 128, 78, 82, 65, 88, 128, 78, 82, 65, 84, 128, 78, 
-    82, 65, 80, 128, 78, 82, 65, 128, 78, 79, 89, 128, 78, 79, 88, 128, 78, 
-    79, 86, 69, 77, 66, 69, 82, 128, 78, 79, 84, 84, 79, 128, 78, 79, 84, 69, 
-    83, 128, 78, 79, 84, 69, 72, 69, 65, 68, 128, 78, 79, 84, 69, 72, 69, 65, 
-    196, 78, 79, 84, 69, 128, 78, 79, 84, 197, 78, 79, 84, 67, 72, 69, 196, 
-    78, 79, 84, 67, 72, 128, 78, 79, 84, 128, 78, 79, 83, 69, 128, 78, 79, 
-    82, 84, 72, 87, 69, 83, 212, 78, 79, 82, 84, 200, 78, 79, 82, 77, 65, 
-    204, 78, 79, 210, 78, 79, 80, 128, 78, 79, 79, 78, 85, 128, 78, 79, 79, 
-    128, 78, 79, 78, 70, 79, 82, 75, 73, 78, 71, 128, 78, 79, 78, 45, 74, 79, 
-    73, 78, 69, 82, 128, 78, 79, 78, 45, 66, 82, 69, 65, 75, 73, 78, 199, 78, 
-    79, 77, 73, 78, 65, 204, 78, 79, 75, 72, 85, 75, 128, 78, 79, 68, 69, 
-    128, 78, 79, 65, 128, 78, 79, 45, 66, 82, 69, 65, 203, 78, 78, 79, 128, 
-    78, 78, 78, 65, 128, 78, 78, 71, 79, 79, 128, 78, 78, 71, 79, 128, 78, 
-    78, 71, 73, 73, 128, 78, 78, 71, 73, 128, 78, 78, 71, 65, 65, 128, 78, 
-    78, 71, 65, 128, 78, 78, 71, 128, 78, 77, 128, 78, 76, 48, 50, 48, 128, 
-    78, 76, 48, 49, 57, 128, 78, 76, 48, 49, 56, 128, 78, 76, 48, 49, 55, 65, 
-    128, 78, 76, 48, 49, 55, 128, 78, 76, 48, 49, 54, 128, 78, 76, 48, 49, 
-    53, 128, 78, 76, 48, 49, 52, 128, 78, 76, 48, 49, 51, 128, 78, 76, 48, 
-    49, 50, 128, 78, 76, 48, 49, 49, 128, 78, 76, 48, 49, 48, 128, 78, 76, 
-    48, 48, 57, 128, 78, 76, 48, 48, 56, 128, 78, 76, 48, 48, 55, 128, 78, 
-    76, 48, 48, 54, 128, 78, 76, 48, 48, 53, 65, 128, 78, 76, 48, 48, 53, 
-    128, 78, 76, 48, 48, 52, 128, 78, 76, 48, 48, 51, 128, 78, 76, 48, 48, 
-    50, 128, 78, 76, 48, 48, 49, 128, 78, 75, 207, 78, 74, 89, 88, 128, 78, 
-    74, 89, 84, 128, 78, 74, 89, 82, 88, 128, 78, 74, 89, 82, 128, 78, 74, 
-    89, 80, 128, 78, 74, 89, 128, 78, 74, 85, 88, 128, 78, 74, 85, 82, 88, 
-    128, 78, 74, 85, 82, 128, 78, 74, 85, 80, 128, 78, 74, 85, 79, 88, 128, 
-    78, 74, 85, 79, 128, 78, 74, 85, 65, 69, 128, 78, 74, 85, 128, 78, 74, 
-    79, 88, 128, 78, 74, 79, 84, 128, 78, 74, 79, 80, 128, 78, 74, 79, 79, 
-    128, 78, 74, 79, 128, 78, 74, 73, 88, 128, 78, 74, 73, 84, 128, 78, 74, 
-    73, 80, 128, 78, 74, 73, 69, 88, 128, 78, 74, 73, 69, 84, 128, 78, 74, 
-    73, 69, 80, 128, 78, 74, 73, 69, 128, 78, 74, 73, 128, 78, 74, 69, 69, 
-    128, 78, 74, 69, 128, 78, 74, 65, 69, 77, 76, 73, 128, 78, 74, 65, 69, 
-    77, 128, 78, 74, 128, 78, 73, 88, 128, 78, 73, 83, 65, 71, 128, 78, 73, 
-    82, 85, 71, 85, 128, 78, 73, 80, 128, 78, 73, 78, 84, 72, 128, 78, 73, 
-    78, 69, 84, 89, 128, 78, 73, 78, 69, 84, 217, 78, 73, 78, 69, 84, 69, 69, 
-    78, 128, 78, 73, 78, 69, 84, 69, 69, 206, 78, 73, 78, 197, 78, 73, 78, 
-    68, 65, 50, 128, 78, 73, 78, 68, 65, 178, 78, 73, 77, 128, 78, 73, 205, 
-    78, 73, 75, 72, 65, 72, 73, 84, 128, 78, 73, 75, 65, 72, 73, 84, 128, 78, 
-    73, 73, 128, 78, 73, 72, 83, 72, 86, 65, 83, 65, 128, 78, 73, 71, 73, 68, 
-    65, 77, 73, 78, 128, 78, 73, 71, 73, 68, 65, 69, 83, 72, 128, 78, 73, 71, 
-    72, 84, 128, 78, 73, 71, 71, 65, 72, 73, 84, 65, 128, 78, 73, 69, 88, 
-    128, 78, 73, 69, 85, 78, 45, 84, 73, 75, 69, 85, 84, 128, 78, 73, 69, 85, 
-    78, 45, 84, 72, 73, 69, 85, 84, 72, 128, 78, 73, 69, 85, 78, 45, 83, 73, 
-    79, 83, 128, 78, 73, 69, 85, 78, 45, 82, 73, 69, 85, 76, 128, 78, 73, 69, 
-    85, 78, 45, 80, 73, 69, 85, 80, 128, 78, 73, 69, 85, 78, 45, 80, 65, 78, 
-    83, 73, 79, 83, 128, 78, 73, 69, 85, 78, 45, 75, 73, 89, 69, 79, 75, 128, 
-    78, 73, 69, 85, 78, 45, 72, 73, 69, 85, 72, 128, 78, 73, 69, 85, 78, 45, 
-    67, 73, 69, 85, 67, 128, 78, 73, 69, 85, 78, 45, 67, 72, 73, 69, 85, 67, 
-    72, 128, 78, 73, 69, 85, 206, 78, 73, 69, 80, 128, 78, 73, 69, 128, 78, 
-    73, 66, 128, 78, 73, 65, 128, 78, 73, 50, 128, 78, 72, 85, 69, 128, 78, 
-    72, 74, 65, 128, 78, 72, 65, 128, 78, 72, 128, 78, 71, 89, 69, 128, 78, 
-    71, 86, 69, 128, 78, 71, 85, 79, 88, 128, 78, 71, 85, 79, 84, 128, 78, 
-    71, 85, 79, 128, 78, 71, 79, 88, 128, 78, 71, 79, 85, 128, 78, 71, 79, 
-    213, 78, 71, 79, 84, 128, 78, 71, 79, 80, 128, 78, 71, 79, 78, 128, 78, 
-    71, 79, 69, 72, 128, 78, 71, 79, 69, 200, 78, 71, 207, 78, 71, 75, 87, 
-    65, 69, 78, 128, 78, 71, 75, 65, 128, 78, 71, 73, 69, 88, 128, 78, 71, 
-    73, 69, 80, 128, 78, 71, 73, 69, 128, 78, 71, 71, 85, 128, 78, 71, 71, 
-    79, 79, 128, 78, 71, 71, 79, 128, 78, 71, 71, 73, 128, 78, 71, 71, 69, 
-    78, 128, 78, 71, 71, 69, 69, 128, 78, 71, 71, 69, 128, 78, 71, 71, 128, 
-    78, 71, 69, 88, 128, 78, 71, 69, 80, 128, 78, 71, 69, 78, 128, 78, 71, 
-    69, 65, 68, 65, 76, 128, 78, 71, 69, 128, 78, 71, 65, 88, 128, 78, 71, 
-    65, 84, 128, 78, 71, 65, 211, 78, 71, 65, 80, 128, 78, 71, 65, 78, 128, 
-    78, 71, 65, 73, 128, 78, 71, 65, 65, 73, 128, 78, 71, 193, 78, 70, 128, 
-    78, 69, 88, 212, 78, 69, 88, 128, 78, 69, 87, 76, 73, 78, 69, 128, 78, 
-    69, 85, 84, 82, 65, 204, 78, 69, 85, 84, 69, 82, 128, 78, 69, 84, 128, 
-    78, 69, 212, 78, 69, 83, 84, 69, 196, 78, 69, 81, 85, 68, 65, 65, 128, 
-    78, 69, 80, 84, 85, 78, 69, 128, 78, 69, 80, 128, 78, 69, 79, 128, 78, 
-    69, 207, 78, 69, 78, 65, 78, 79, 128, 78, 69, 78, 128, 78, 69, 73, 84, 
-    72, 69, 210, 78, 69, 71, 65, 84, 73, 86, 197, 78, 69, 71, 65, 84, 73, 79, 
-    206, 78, 69, 71, 65, 84, 69, 196, 78, 69, 69, 128, 78, 69, 66, 69, 78, 
-    83, 84, 73, 77, 77, 69, 128, 78, 68, 85, 88, 128, 78, 68, 85, 84, 128, 
-    78, 68, 85, 82, 88, 128, 78, 68, 85, 82, 128, 78, 68, 85, 80, 128, 78, 
-    68, 79, 88, 128, 78, 68, 79, 84, 128, 78, 68, 79, 80, 128, 78, 68, 79, 
-    79, 128, 78, 68, 79, 76, 197, 78, 68, 73, 88, 128, 78, 68, 73, 84, 128, 
-    78, 68, 73, 80, 128, 78, 68, 73, 69, 88, 128, 78, 68, 73, 69, 128, 78, 
-    68, 73, 128, 78, 68, 69, 88, 128, 78, 68, 69, 80, 128, 78, 68, 69, 69, 
-    128, 78, 68, 69, 128, 78, 68, 65, 88, 128, 78, 68, 65, 84, 128, 78, 68, 
-    65, 80, 128, 78, 68, 65, 65, 128, 78, 66, 89, 88, 128, 78, 66, 89, 84, 
-    128, 78, 66, 89, 82, 88, 128, 78, 66, 89, 82, 128, 78, 66, 89, 80, 128, 
-    78, 66, 89, 128, 78, 66, 85, 88, 128, 78, 66, 85, 84, 128, 78, 66, 85, 
-    82, 88, 128, 78, 66, 85, 82, 128, 78, 66, 85, 80, 128, 78, 66, 85, 128, 
-    78, 66, 79, 88, 128, 78, 66, 79, 84, 128, 78, 66, 79, 80, 128, 78, 66, 
-    79, 128, 78, 66, 73, 88, 128, 78, 66, 73, 84, 128, 78, 66, 73, 80, 128, 
-    78, 66, 73, 69, 88, 128, 78, 66, 73, 69, 80, 128, 78, 66, 73, 69, 128, 
-    78, 66, 73, 128, 78, 66, 65, 88, 128, 78, 66, 65, 84, 128, 78, 66, 65, 
-    80, 128, 78, 66, 65, 128, 78, 65, 89, 65, 78, 78, 65, 128, 78, 65, 89, 
-    128, 78, 65, 88, 73, 65, 206, 78, 65, 88, 128, 78, 65, 85, 84, 72, 83, 
-    128, 78, 65, 85, 68, 73, 218, 78, 65, 84, 85, 82, 65, 204, 78, 65, 84, 
-    73, 79, 78, 65, 204, 78, 65, 83, 75, 65, 80, 201, 78, 65, 83, 72, 73, 
-    128, 78, 65, 83, 65, 76, 73, 90, 65, 84, 73, 79, 206, 78, 65, 82, 82, 79, 
-    215, 78, 65, 82, 128, 78, 65, 79, 211, 78, 65, 78, 71, 77, 79, 78, 84, 
-    72, 79, 128, 78, 65, 78, 68, 128, 78, 65, 78, 65, 128, 78, 65, 77, 69, 
-    128, 78, 65, 77, 197, 78, 65, 77, 50, 128, 78, 65, 77, 128, 78, 65, 73, 
-    82, 193, 78, 65, 71, 82, 201, 78, 65, 71, 65, 82, 128, 78, 65, 71, 65, 
-    128, 78, 65, 71, 193, 78, 65, 71, 128, 78, 65, 199, 78, 65, 66, 76, 65, 
-    128, 78, 65, 65, 83, 73, 75, 89, 65, 89, 65, 128, 78, 65, 65, 75, 83, 73, 
-    75, 89, 65, 89, 65, 128, 78, 65, 65, 73, 128, 78, 65, 65, 128, 78, 65, 
-    193, 78, 65, 50, 128, 78, 48, 52, 50, 128, 78, 48, 52, 49, 128, 78, 48, 
-    52, 48, 128, 78, 48, 51, 57, 128, 78, 48, 51, 56, 128, 78, 48, 51, 55, 
-    65, 128, 78, 48, 51, 55, 128, 78, 48, 51, 54, 128, 78, 48, 51, 53, 65, 
-    128, 78, 48, 51, 53, 128, 78, 48, 51, 52, 65, 128, 78, 48, 51, 52, 128, 
-    78, 48, 51, 51, 65, 128, 78, 48, 51, 51, 128, 78, 48, 51, 50, 128, 78, 
-    48, 51, 49, 128, 78, 48, 51, 48, 128, 78, 48, 50, 57, 128, 78, 48, 50, 
-    56, 128, 78, 48, 50, 55, 128, 78, 48, 50, 54, 128, 78, 48, 50, 53, 65, 
-    128, 78, 48, 50, 53, 128, 78, 48, 50, 52, 128, 78, 48, 50, 51, 128, 78, 
-    48, 50, 50, 128, 78, 48, 50, 49, 128, 78, 48, 50, 48, 128, 78, 48, 49, 
-    57, 128, 78, 48, 49, 56, 66, 128, 78, 48, 49, 56, 65, 128, 78, 48, 49, 
-    56, 128, 78, 48, 49, 55, 128, 78, 48, 49, 54, 128, 78, 48, 49, 53, 128, 
-    78, 48, 49, 52, 128, 78, 48, 49, 51, 128, 78, 48, 49, 50, 128, 78, 48, 
-    49, 49, 128, 78, 48, 49, 48, 128, 78, 48, 48, 57, 128, 78, 48, 48, 56, 
-    128, 78, 48, 48, 55, 128, 78, 48, 48, 54, 128, 78, 48, 48, 53, 128, 78, 
-    48, 48, 52, 128, 78, 48, 48, 51, 128, 78, 48, 48, 50, 128, 78, 48, 48, 
-    49, 128, 78, 45, 67, 82, 69, 197, 78, 45, 65, 82, 217, 77, 89, 88, 128, 
-    77, 89, 84, 128, 77, 89, 83, 76, 73, 84, 69, 128, 77, 89, 80, 128, 77, 
-    89, 65, 128, 77, 89, 193, 77, 89, 128, 77, 87, 79, 79, 128, 77, 87, 79, 
-    128, 77, 87, 73, 73, 128, 77, 87, 73, 128, 77, 87, 69, 69, 128, 77, 87, 
-    69, 128, 77, 87, 65, 65, 128, 77, 87, 65, 128, 77, 87, 128, 77, 215, 77, 
-    86, 128, 77, 214, 77, 85, 88, 128, 77, 85, 85, 83, 73, 75, 65, 84, 79, 
-    65, 78, 128, 77, 85, 85, 82, 68, 72, 65, 74, 193, 77, 85, 84, 128, 77, 
-    85, 83, 73, 67, 128, 77, 85, 83, 73, 195, 77, 85, 83, 72, 51, 128, 77, 
-    85, 83, 72, 179, 77, 85, 83, 72, 128, 77, 85, 83, 200, 77, 85, 82, 88, 
-    128, 77, 85, 82, 71, 85, 50, 128, 77, 85, 82, 69, 128, 77, 85, 82, 68, 
-    65, 128, 77, 85, 82, 68, 193, 77, 85, 82, 128, 77, 85, 81, 68, 65, 77, 
-    128, 77, 85, 80, 128, 77, 85, 79, 88, 128, 77, 85, 79, 84, 128, 77, 85, 
-    79, 80, 128, 77, 85, 79, 128, 77, 85, 78, 83, 85, 66, 128, 77, 85, 78, 
-    65, 72, 128, 77, 85, 76, 84, 73, 83, 69, 84, 128, 77, 85, 76, 84, 73, 83, 
-    69, 212, 77, 85, 76, 84, 73, 80, 76, 73, 67, 65, 84, 73, 79, 78, 128, 77, 
-    85, 76, 84, 73, 80, 76, 73, 67, 65, 84, 73, 79, 206, 77, 85, 76, 84, 73, 
-    80, 76, 197, 77, 85, 76, 84, 73, 79, 67, 85, 76, 65, 210, 77, 85, 76, 84, 
-    73, 77, 65, 80, 128, 77, 85, 76, 84, 201, 77, 85, 75, 80, 72, 82, 69, 78, 
-    71, 128, 77, 85, 73, 78, 128, 77, 85, 71, 128, 77, 85, 199, 77, 85, 69, 
-    128, 77, 85, 67, 200, 77, 85, 67, 65, 65, 68, 128, 77, 85, 65, 78, 128, 
-    77, 85, 45, 71, 65, 65, 72, 76, 65, 193, 77, 213, 77, 83, 128, 77, 80, 
-    65, 128, 77, 79, 88, 128, 77, 79, 86, 69, 196, 77, 79, 85, 84, 72, 128, 
-    77, 79, 85, 84, 200, 77, 79, 85, 78, 84, 65, 73, 78, 128, 77, 79, 85, 78, 
-    68, 128, 77, 79, 85, 78, 196, 77, 79, 84, 72, 69, 82, 128, 77, 79, 84, 
-    128, 77, 79, 82, 84, 65, 82, 128, 77, 79, 82, 80, 72, 79, 76, 79, 71, 73, 
-    67, 65, 204, 77, 79, 82, 78, 73, 78, 71, 128, 77, 79, 80, 128, 77, 79, 
-    79, 83, 69, 45, 67, 82, 69, 197, 77, 79, 79, 78, 128, 77, 79, 79, 206, 
-    77, 79, 79, 128, 77, 79, 78, 84, 72, 128, 77, 79, 78, 84, 200, 77, 79, 
-    78, 79, 83, 84, 65, 66, 76, 197, 77, 79, 78, 79, 71, 82, 65, 80, 200, 77, 
-    79, 78, 79, 71, 82, 65, 77, 77, 79, 211, 77, 79, 78, 79, 71, 82, 65, 205, 
-    77, 79, 78, 79, 70, 79, 78, 73, 65, 83, 128, 77, 79, 78, 79, 67, 85, 76, 
-    65, 210, 77, 79, 206, 77, 79, 76, 128, 77, 79, 72, 65, 77, 77, 65, 196, 
-    77, 79, 68, 85, 76, 207, 77, 79, 68, 69, 83, 84, 89, 128, 77, 79, 68, 69, 
-    76, 83, 128, 77, 79, 68, 69, 76, 128, 77, 79, 65, 128, 77, 207, 77, 78, 
-    89, 65, 205, 77, 78, 65, 83, 128, 77, 77, 128, 77, 205, 77, 76, 65, 128, 
-    77, 76, 128, 77, 73, 88, 128, 77, 73, 84, 128, 77, 73, 212, 77, 73, 83, 
-    82, 65, 128, 77, 73, 82, 73, 66, 65, 65, 82, 85, 128, 77, 73, 82, 73, 
-    128, 77, 73, 82, 69, 68, 128, 77, 73, 80, 128, 77, 73, 78, 89, 128, 77, 
-    73, 78, 85, 83, 45, 79, 82, 45, 80, 76, 85, 211, 77, 73, 78, 85, 83, 128, 
-    77, 73, 78, 73, 83, 84, 69, 82, 128, 77, 73, 78, 73, 77, 65, 128, 77, 73, 
-    77, 69, 128, 77, 73, 77, 128, 77, 73, 76, 76, 73, 79, 78, 211, 77, 73, 
-    76, 76, 69, 84, 128, 77, 73, 76, 76, 197, 77, 73, 76, 204, 77, 73, 76, 
-    128, 77, 73, 75, 85, 82, 79, 78, 128, 77, 73, 75, 82, 79, 206, 77, 73, 
-    75, 82, 73, 128, 77, 73, 73, 78, 128, 77, 73, 73, 128, 77, 73, 199, 77, 
-    73, 69, 88, 128, 77, 73, 69, 85, 77, 45, 84, 73, 75, 69, 85, 84, 128, 77, 
-    73, 69, 85, 77, 45, 83, 83, 65, 78, 71, 83, 73, 79, 83, 128, 77, 73, 69, 
-    85, 77, 45, 83, 83, 65, 78, 71, 78, 73, 69, 85, 78, 128, 77, 73, 69, 85, 
-    77, 45, 82, 73, 69, 85, 76, 128, 77, 73, 69, 85, 77, 45, 80, 73, 69, 85, 
-    80, 45, 83, 73, 79, 83, 128, 77, 73, 69, 85, 77, 45, 80, 73, 69, 85, 80, 
-    128, 77, 73, 69, 85, 77, 45, 80, 65, 78, 83, 73, 79, 83, 128, 77, 73, 69, 
-    85, 77, 45, 78, 73, 69, 85, 78, 128, 77, 73, 69, 85, 77, 45, 67, 73, 69, 
-    85, 67, 128, 77, 73, 69, 85, 77, 45, 67, 72, 73, 69, 85, 67, 72, 128, 77, 
-    73, 69, 85, 205, 77, 73, 69, 80, 128, 77, 73, 69, 128, 77, 73, 68, 76, 
-    73, 78, 197, 77, 73, 68, 68, 76, 69, 45, 87, 69, 76, 83, 200, 77, 73, 68, 
-    68, 76, 197, 77, 73, 196, 77, 73, 67, 82, 207, 77, 73, 128, 77, 72, 90, 
-    128, 77, 72, 128, 77, 71, 85, 88, 128, 77, 71, 85, 84, 128, 77, 71, 85, 
-    82, 88, 128, 77, 71, 85, 82, 128, 77, 71, 85, 80, 128, 77, 71, 85, 79, 
-    88, 128, 77, 71, 85, 79, 80, 128, 77, 71, 85, 79, 128, 77, 71, 85, 128, 
-    77, 71, 79, 88, 128, 77, 71, 79, 84, 128, 77, 71, 79, 80, 128, 77, 71, 
-    79, 128, 77, 71, 207, 77, 71, 73, 69, 88, 128, 77, 71, 73, 69, 128, 77, 
-    71, 69, 88, 128, 77, 71, 69, 80, 128, 77, 71, 69, 128, 77, 71, 66, 85, 
-    128, 77, 71, 66, 79, 79, 128, 77, 71, 66, 79, 128, 77, 71, 66, 73, 128, 
-    77, 71, 66, 69, 69, 128, 77, 71, 66, 69, 128, 77, 71, 66, 65, 128, 77, 
-    71, 65, 88, 128, 77, 71, 65, 84, 128, 77, 71, 65, 80, 128, 77, 71, 65, 
-    128, 77, 71, 128, 77, 69, 90, 90, 79, 128, 77, 69, 88, 128, 77, 69, 84, 
-    82, 73, 67, 65, 204, 77, 69, 84, 82, 73, 65, 128, 77, 69, 84, 82, 69, 84, 
-    69, 211, 77, 69, 84, 79, 66, 69, 76, 85, 83, 128, 77, 69, 84, 69, 71, 
-    128, 77, 69, 84, 65, 76, 128, 77, 69, 84, 193, 77, 69, 83, 83, 69, 78, 
-    73, 65, 206, 77, 69, 83, 79, 128, 77, 69, 83, 73, 128, 77, 69, 83, 72, 
-    128, 77, 69, 82, 75, 72, 65, 128, 77, 69, 82, 75, 72, 193, 77, 69, 82, 
-    73, 128, 77, 69, 82, 71, 69, 128, 77, 69, 82, 67, 85, 82, 89, 128, 77, 
-    69, 78, 68, 85, 84, 128, 77, 69, 78, 128, 77, 69, 206, 77, 69, 77, 66, 
-    69, 82, 83, 72, 73, 80, 128, 77, 69, 77, 66, 69, 82, 128, 77, 69, 77, 66, 
-    69, 210, 77, 69, 77, 45, 81, 79, 80, 72, 128, 77, 69, 77, 128, 77, 69, 
-    205, 77, 69, 76, 79, 78, 128, 77, 69, 76, 79, 68, 73, 195, 77, 69, 76, 
-    73, 75, 128, 77, 69, 73, 90, 73, 128, 77, 69, 71, 65, 84, 79, 78, 128, 
-    77, 69, 71, 65, 76, 73, 128, 77, 69, 69, 84, 79, 82, 85, 128, 77, 69, 69, 
-    84, 69, 201, 77, 69, 69, 84, 128, 77, 69, 69, 77, 85, 128, 77, 69, 69, 
-    77, 128, 77, 69, 69, 69, 69, 128, 77, 69, 69, 128, 77, 69, 68, 73, 85, 
-    77, 128, 77, 69, 68, 73, 85, 205, 77, 69, 68, 73, 67, 73, 78, 69, 128, 
-    77, 69, 65, 84, 128, 77, 69, 65, 83, 85, 82, 69, 196, 77, 69, 65, 83, 85, 
-    82, 69, 128, 77, 69, 65, 83, 85, 82, 197, 77, 68, 85, 206, 77, 67, 72, 
-    213, 77, 66, 85, 128, 77, 66, 79, 79, 128, 77, 66, 79, 128, 77, 66, 73, 
-    128, 77, 66, 69, 78, 128, 77, 66, 69, 69, 128, 77, 66, 69, 128, 77, 66, 
-    65, 65, 128, 77, 66, 52, 128, 77, 66, 51, 128, 77, 66, 50, 128, 77, 66, 
-    128, 77, 194, 77, 65, 89, 69, 203, 77, 65, 89, 65, 78, 78, 65, 128, 77, 
-    65, 89, 128, 77, 65, 88, 73, 77, 65, 128, 77, 65, 88, 128, 77, 65, 84, 
-    84, 79, 67, 75, 128, 77, 65, 84, 82, 73, 88, 128, 77, 65, 84, 69, 82, 73, 
-    65, 76, 83, 128, 77, 65, 84, 128, 77, 65, 83, 213, 77, 65, 83, 83, 73, 
-    78, 71, 128, 77, 65, 83, 79, 82, 193, 77, 65, 83, 72, 70, 65, 65, 84, 
-    128, 77, 65, 83, 72, 50, 128, 77, 65, 83, 67, 85, 76, 73, 78, 197, 77, 
-    65, 82, 85, 75, 85, 128, 77, 65, 82, 84, 89, 82, 73, 193, 77, 65, 82, 82, 
-    89, 73, 78, 199, 77, 65, 82, 82, 73, 65, 71, 197, 77, 65, 82, 75, 69, 82, 
-    128, 77, 65, 82, 75, 45, 52, 128, 77, 65, 82, 75, 45, 51, 128, 77, 65, 
-    82, 75, 45, 50, 128, 77, 65, 82, 75, 45, 49, 128, 77, 65, 82, 69, 128, 
-    77, 65, 82, 67, 72, 128, 77, 65, 82, 67, 65, 84, 79, 45, 83, 84, 65, 67, 
-    67, 65, 84, 79, 128, 77, 65, 82, 67, 65, 84, 79, 128, 77, 65, 82, 66, 85, 
-    84, 65, 128, 77, 65, 82, 66, 85, 84, 193, 77, 65, 82, 128, 77, 65, 81, 
-    65, 70, 128, 77, 65, 80, 73, 81, 128, 77, 65, 208, 77, 65, 78, 83, 89, 
-    79, 78, 128, 77, 65, 78, 78, 65, 218, 77, 65, 78, 78, 65, 128, 77, 65, 
-    78, 71, 65, 76, 65, 77, 128, 77, 65, 78, 67, 72, 213, 77, 65, 78, 65, 67, 
-    76, 69, 83, 128, 77, 65, 76, 84, 69, 83, 197, 77, 65, 76, 69, 128, 77, 
-    65, 76, 197, 77, 65, 76, 65, 75, 79, 206, 77, 65, 75, 83, 85, 82, 65, 
-    128, 77, 65, 73, 89, 65, 77, 79, 75, 128, 77, 65, 73, 84, 65, 73, 75, 72, 
-    85, 128, 77, 65, 73, 82, 85, 128, 77, 65, 73, 77, 85, 65, 78, 128, 77, 
-    65, 73, 77, 65, 76, 65, 73, 128, 77, 65, 73, 75, 85, 82, 79, 128, 77, 65, 
-    73, 68, 69, 78, 128, 77, 65, 72, 74, 79, 78, 199, 77, 65, 72, 72, 65, 
-    128, 77, 65, 72, 65, 80, 82, 65, 78, 65, 128, 77, 65, 72, 65, 80, 65, 75, 
-    72, 128, 77, 65, 72, 65, 65, 80, 82, 65, 65, 78, 193, 77, 65, 72, 128, 
-    77, 65, 68, 89, 65, 128, 77, 65, 68, 85, 128, 77, 65, 68, 68, 65, 200, 
-    77, 65, 68, 68, 65, 128, 77, 65, 68, 68, 193, 77, 65, 67, 82, 79, 78, 45, 
-    71, 82, 65, 86, 69, 128, 77, 65, 67, 82, 79, 78, 45, 66, 82, 69, 86, 69, 
-    128, 77, 65, 67, 82, 79, 78, 45, 65, 67, 85, 84, 69, 128, 77, 65, 67, 82, 
-    79, 78, 128, 77, 65, 67, 82, 79, 206, 77, 65, 65, 73, 128, 77, 65, 65, 
-    128, 77, 65, 50, 128, 77, 48, 52, 52, 128, 77, 48, 52, 51, 128, 77, 48, 
-    52, 50, 128, 77, 48, 52, 49, 128, 77, 48, 52, 48, 65, 128, 77, 48, 52, 
-    48, 128, 77, 48, 51, 57, 128, 77, 48, 51, 56, 128, 77, 48, 51, 55, 128, 
-    77, 48, 51, 54, 128, 77, 48, 51, 53, 128, 77, 48, 51, 52, 128, 77, 48, 
-    51, 51, 66, 128, 77, 48, 51, 51, 65, 128, 77, 48, 51, 51, 128, 77, 48, 
-    51, 50, 128, 77, 48, 51, 49, 65, 128, 77, 48, 51, 49, 128, 77, 48, 51, 
-    48, 128, 77, 48, 50, 57, 128, 77, 48, 50, 56, 65, 128, 77, 48, 50, 56, 
-    128, 77, 48, 50, 55, 128, 77, 48, 50, 54, 128, 77, 48, 50, 53, 128, 77, 
-    48, 50, 52, 65, 128, 77, 48, 50, 52, 128, 77, 48, 50, 51, 128, 77, 48, 
-    50, 50, 65, 128, 77, 48, 50, 50, 128, 77, 48, 50, 49, 128, 77, 48, 50, 
-    48, 128, 77, 48, 49, 57, 128, 77, 48, 49, 56, 128, 77, 48, 49, 55, 65, 
-    128, 77, 48, 49, 55, 128, 77, 48, 49, 54, 65, 128, 77, 48, 49, 54, 128, 
-    77, 48, 49, 53, 65, 128, 77, 48, 49, 53, 128, 77, 48, 49, 52, 128, 77, 
-    48, 49, 51, 128, 77, 48, 49, 50, 72, 128, 77, 48, 49, 50, 71, 128, 77, 
-    48, 49, 50, 70, 128, 77, 48, 49, 50, 69, 128, 77, 48, 49, 50, 68, 128, 
-    77, 48, 49, 50, 67, 128, 77, 48, 49, 50, 66, 128, 77, 48, 49, 50, 65, 
-    128, 77, 48, 49, 50, 128, 77, 48, 49, 49, 128, 77, 48, 49, 48, 65, 128, 
-    77, 48, 49, 48, 128, 77, 48, 48, 57, 128, 77, 48, 48, 56, 128, 77, 48, 
-    48, 55, 128, 77, 48, 48, 54, 128, 77, 48, 48, 53, 128, 77, 48, 48, 52, 
-    128, 77, 48, 48, 51, 65, 128, 77, 48, 48, 51, 128, 77, 48, 48, 50, 128, 
-    77, 48, 48, 49, 66, 128, 77, 48, 48, 49, 65, 128, 77, 48, 48, 49, 128, 
-    76, 218, 76, 89, 89, 128, 76, 89, 88, 128, 76, 89, 84, 128, 76, 89, 82, 
-    88, 128, 76, 89, 82, 128, 76, 89, 80, 128, 76, 89, 68, 73, 65, 206, 76, 
-    89, 67, 73, 65, 206, 76, 88, 128, 76, 87, 79, 79, 128, 76, 87, 79, 128, 
-    76, 87, 73, 73, 128, 76, 87, 73, 128, 76, 87, 69, 128, 76, 87, 65, 65, 
-    128, 76, 87, 65, 128, 76, 85, 88, 128, 76, 85, 84, 128, 76, 85, 82, 88, 
-    128, 76, 85, 80, 128, 76, 85, 79, 88, 128, 76, 85, 79, 84, 128, 76, 85, 
-    79, 80, 128, 76, 85, 79, 128, 76, 85, 78, 71, 83, 73, 128, 76, 85, 78, 
-    65, 84, 197, 76, 85, 205, 76, 85, 76, 128, 76, 85, 73, 83, 128, 76, 85, 
-    72, 85, 82, 128, 76, 85, 72, 128, 76, 85, 71, 65, 76, 128, 76, 85, 71, 
-    65, 204, 76, 85, 69, 128, 76, 85, 51, 128, 76, 85, 50, 128, 76, 85, 178, 
-    76, 79, 90, 69, 78, 71, 69, 128, 76, 79, 90, 69, 78, 71, 197, 76, 79, 88, 
-    128, 76, 79, 87, 69, 210, 76, 79, 87, 45, 185, 76, 79, 85, 82, 69, 128, 
-    76, 79, 84, 85, 83, 128, 76, 79, 84, 128, 76, 79, 82, 82, 65, 73, 78, 69, 
-    128, 76, 79, 81, 128, 76, 79, 80, 128, 76, 79, 79, 84, 128, 76, 79, 79, 
-    80, 128, 76, 79, 79, 128, 76, 79, 78, 83, 85, 77, 128, 76, 79, 78, 71, 
-    65, 128, 76, 79, 78, 71, 193, 76, 79, 78, 71, 45, 66, 82, 65, 78, 67, 72, 
-    45, 89, 82, 128, 76, 79, 78, 71, 45, 66, 82, 65, 78, 67, 72, 45, 83, 79, 
-    204, 76, 79, 78, 71, 45, 66, 82, 65, 78, 67, 72, 45, 79, 83, 211, 76, 79, 
-    78, 71, 45, 66, 82, 65, 78, 67, 72, 45, 77, 65, 68, 210, 76, 79, 78, 71, 
-    45, 66, 82, 65, 78, 67, 72, 45, 72, 65, 71, 65, 76, 204, 76, 79, 78, 71, 
-    45, 66, 82, 65, 78, 67, 72, 45, 65, 210, 76, 79, 76, 76, 128, 76, 79, 71, 
-    210, 76, 79, 71, 79, 84, 89, 80, 197, 76, 79, 71, 79, 71, 82, 65, 205, 
-    76, 79, 71, 128, 76, 79, 67, 65, 84, 73, 86, 69, 128, 76, 79, 67, 65, 84, 
-    73, 79, 206, 76, 79, 65, 128, 76, 78, 128, 76, 77, 128, 76, 76, 76, 65, 
-    128, 76, 74, 85, 68, 73, 74, 69, 128, 76, 74, 69, 128, 76, 74, 128, 76, 
-    73, 88, 128, 76, 73, 87, 78, 128, 76, 73, 86, 82, 197, 76, 73, 84, 84, 
-    76, 197, 76, 73, 84, 82, 193, 76, 73, 84, 128, 76, 73, 83, 213, 76, 73, 
-    83, 72, 128, 76, 73, 82, 193, 76, 73, 81, 85, 73, 196, 76, 73, 80, 128, 
-    76, 73, 78, 75, 73, 78, 199, 76, 73, 78, 203, 76, 73, 78, 71, 83, 65, 
-    128, 76, 73, 78, 69, 83, 128, 76, 73, 78, 69, 211, 76, 73, 78, 69, 45, 
-    57, 128, 76, 73, 78, 69, 45, 55, 128, 76, 73, 78, 69, 45, 51, 128, 76, 
-    73, 78, 69, 45, 49, 128, 76, 73, 77, 77, 85, 52, 128, 76, 73, 77, 77, 85, 
-    50, 128, 76, 73, 77, 77, 85, 128, 76, 73, 77, 77, 213, 76, 73, 77, 73, 
-    84, 69, 196, 76, 73, 77, 73, 84, 65, 84, 73, 79, 78, 128, 76, 73, 77, 73, 
-    84, 128, 76, 73, 76, 89, 128, 76, 73, 76, 73, 84, 72, 128, 76, 73, 76, 
-    128, 76, 73, 73, 128, 76, 73, 71, 72, 84, 78, 73, 78, 71, 128, 76, 73, 
-    71, 72, 84, 72, 79, 85, 83, 69, 128, 76, 73, 71, 72, 84, 128, 76, 73, 70, 
-    69, 128, 76, 73, 69, 88, 128, 76, 73, 69, 84, 128, 76, 73, 69, 80, 128, 
-    76, 73, 69, 128, 76, 73, 68, 128, 76, 73, 66, 82, 65, 128, 76, 73, 65, 
-    66, 73, 76, 73, 84, 217, 76, 72, 73, 73, 128, 76, 72, 65, 86, 73, 89, 65, 
-    78, 73, 128, 76, 72, 65, 199, 76, 72, 65, 65, 128, 76, 72, 128, 76, 69, 
-    90, 72, 128, 76, 69, 88, 128, 76, 69, 86, 69, 204, 76, 69, 84, 84, 69, 
-    82, 128, 76, 69, 83, 83, 69, 210, 76, 69, 83, 83, 45, 84, 72, 65, 78, 
-    128, 76, 69, 83, 83, 45, 84, 72, 65, 206, 76, 69, 80, 128, 76, 69, 79, 
-    128, 76, 69, 78, 84, 73, 67, 85, 76, 65, 210, 76, 69, 78, 73, 83, 128, 
-    76, 69, 78, 71, 84, 72, 69, 78, 69, 82, 128, 76, 69, 78, 71, 84, 200, 76, 
-    69, 78, 71, 65, 128, 76, 69, 78, 71, 193, 76, 69, 77, 79, 73, 128, 76, 
-    69, 76, 69, 84, 128, 76, 69, 76, 69, 212, 76, 69, 203, 76, 69, 73, 77, 
-    77, 65, 128, 76, 69, 73, 77, 77, 193, 76, 69, 71, 83, 128, 76, 69, 71, 
-    73, 79, 78, 128, 76, 69, 71, 69, 84, 79, 211, 76, 69, 71, 128, 76, 69, 
-    70, 84, 87, 65, 82, 68, 83, 128, 76, 69, 70, 84, 45, 84, 79, 45, 82, 73, 
-    71, 72, 212, 76, 69, 70, 84, 45, 83, 84, 69, 205, 76, 69, 70, 84, 45, 83, 
-    73, 68, 197, 76, 69, 70, 84, 45, 83, 72, 65, 68, 69, 196, 76, 69, 70, 84, 
-    45, 80, 79, 73, 78, 84, 73, 78, 199, 76, 69, 70, 84, 45, 72, 65, 78, 196, 
-    76, 69, 70, 84, 45, 70, 65, 67, 73, 78, 199, 76, 69, 70, 84, 128, 76, 69, 
-    69, 75, 128, 76, 69, 69, 69, 69, 128, 76, 69, 65, 84, 72, 69, 82, 128, 
-    76, 69, 65, 70, 128, 76, 69, 65, 68, 69, 82, 128, 76, 68, 65, 78, 128, 
-    76, 68, 50, 128, 76, 67, 201, 76, 67, 197, 76, 65, 90, 217, 76, 65, 89, 
-    65, 78, 78, 65, 128, 76, 65, 88, 128, 76, 65, 215, 76, 65, 85, 76, 65, 
-    128, 76, 65, 85, 75, 65, 218, 76, 65, 84, 73, 78, 65, 84, 197, 76, 65, 
-    84, 73, 75, 128, 76, 65, 84, 69, 82, 65, 204, 76, 65, 84, 197, 76, 65, 
-    84, 128, 76, 65, 83, 212, 76, 65, 82, 89, 78, 71, 69, 65, 204, 76, 65, 
-    82, 71, 69, 210, 76, 65, 82, 71, 197, 76, 65, 80, 128, 76, 65, 78, 71, 
-    85, 65, 71, 197, 76, 65, 78, 69, 83, 128, 76, 65, 77, 69, 68, 72, 128, 
-    76, 65, 77, 69, 68, 128, 76, 65, 77, 69, 196, 76, 65, 77, 69, 128, 76, 
-    65, 77, 197, 76, 65, 77, 68, 65, 128, 76, 65, 77, 68, 128, 76, 65, 77, 
-    66, 68, 193, 76, 65, 77, 65, 68, 72, 128, 76, 65, 76, 128, 76, 65, 204, 
-    76, 65, 75, 75, 72, 65, 78, 71, 89, 65, 79, 128, 76, 65, 74, 65, 78, 89, 
-    65, 76, 65, 78, 128, 76, 65, 201, 76, 65, 72, 83, 72, 85, 128, 76, 65, 
-    71, 85, 83, 128, 76, 65, 71, 213, 76, 65, 71, 65, 82, 128, 76, 65, 71, 
-    65, 210, 76, 65, 71, 65, 66, 128, 76, 65, 71, 65, 194, 76, 65, 69, 86, 
-    128, 76, 65, 69, 128, 76, 65, 67, 75, 128, 76, 65, 67, 65, 128, 76, 65, 
-    66, 79, 85, 82, 73, 78, 71, 128, 76, 65, 66, 79, 82, 128, 76, 65, 66, 73, 
-    65, 76, 73, 90, 65, 84, 73, 79, 206, 76, 65, 66, 65, 84, 128, 76, 65, 65, 
-    78, 128, 76, 65, 65, 77, 85, 128, 76, 65, 65, 73, 128, 76, 48, 48, 54, 
-    65, 128, 76, 48, 48, 50, 65, 128, 76, 45, 84, 89, 80, 197, 76, 45, 83, 
-    72, 65, 80, 69, 196, 75, 89, 85, 82, 73, 73, 128, 75, 89, 85, 128, 75, 
-    89, 79, 128, 75, 89, 76, 73, 83, 77, 65, 128, 75, 89, 73, 128, 75, 89, 
-    69, 69, 128, 75, 89, 69, 128, 75, 89, 65, 84, 72, 79, 211, 75, 89, 65, 
-    65, 128, 75, 89, 65, 128, 75, 88, 87, 73, 128, 75, 88, 87, 69, 69, 128, 
-    75, 88, 87, 69, 128, 75, 88, 87, 65, 65, 128, 75, 88, 87, 65, 128, 75, 
-    88, 85, 128, 75, 88, 79, 128, 75, 88, 73, 128, 75, 88, 69, 69, 128, 75, 
-    88, 69, 128, 75, 88, 65, 65, 128, 75, 88, 65, 128, 75, 87, 85, 51, 49, 
-    56, 128, 75, 87, 79, 79, 128, 75, 87, 79, 128, 75, 87, 73, 73, 128, 75, 
-    87, 73, 128, 75, 87, 69, 69, 128, 75, 87, 69, 128, 75, 87, 65, 89, 128, 
-    75, 87, 65, 65, 128, 75, 86, 65, 128, 75, 86, 128, 75, 85, 88, 128, 75, 
-    85, 85, 72, 128, 75, 85, 84, 128, 75, 85, 83, 77, 65, 128, 75, 85, 83, 
-    72, 85, 50, 128, 75, 85, 82, 88, 128, 75, 85, 82, 85, 90, 69, 73, 82, 79, 
-    128, 75, 85, 82, 84, 128, 75, 85, 82, 79, 79, 78, 69, 128, 75, 85, 82, 
-    128, 75, 85, 210, 75, 85, 80, 128, 75, 85, 79, 88, 128, 75, 85, 79, 80, 
-    128, 75, 85, 79, 128, 75, 85, 78, 71, 128, 75, 85, 78, 68, 68, 65, 76, 
-    73, 89, 65, 128, 75, 85, 76, 128, 75, 85, 204, 75, 85, 55, 128, 75, 85, 
-    52, 128, 75, 85, 180, 75, 85, 51, 128, 75, 85, 179, 75, 84, 128, 75, 83, 
-    83, 65, 128, 75, 83, 73, 128, 75, 82, 69, 77, 65, 83, 84, 73, 128, 75, 
-    82, 65, 84, 73, 77, 79, 89, 80, 79, 82, 82, 79, 79, 78, 128, 75, 82, 65, 
-    84, 73, 77, 79, 75, 79, 85, 70, 73, 83, 77, 65, 128, 75, 82, 65, 84, 73, 
-    77, 65, 84, 65, 128, 75, 82, 65, 84, 73, 77, 193, 75, 80, 85, 128, 75, 
-    80, 79, 79, 128, 75, 80, 79, 128, 75, 80, 73, 128, 75, 80, 69, 78, 128, 
-    75, 80, 69, 69, 128, 75, 80, 69, 128, 75, 80, 65, 78, 128, 75, 80, 65, 
-    128, 75, 79, 88, 128, 75, 79, 86, 85, 85, 128, 75, 79, 84, 79, 128, 75, 
-    79, 82, 85, 78, 65, 128, 75, 79, 82, 79, 78, 73, 83, 128, 75, 79, 82, 69, 
-    65, 206, 75, 79, 82, 65, 78, 73, 195, 75, 79, 81, 78, 68, 79, 78, 128, 
-    75, 79, 80, 80, 65, 128, 75, 79, 80, 128, 75, 79, 79, 80, 79, 128, 75, 
-    79, 79, 77, 85, 85, 84, 128, 75, 79, 79, 128, 75, 79, 78, 84, 69, 86, 77, 
-    65, 128, 75, 79, 78, 84, 69, 86, 77, 193, 75, 79, 77, 201, 75, 79, 77, 
-    66, 85, 86, 65, 128, 75, 79, 77, 66, 85, 86, 193, 75, 79, 77, 66, 213, 
-    75, 79, 75, 128, 75, 79, 203, 75, 79, 73, 128, 75, 79, 201, 75, 79, 72, 
-    128, 75, 79, 71, 72, 79, 77, 128, 75, 79, 69, 84, 128, 75, 79, 65, 128, 
-    75, 78, 73, 71, 72, 84, 128, 75, 78, 73, 70, 69, 128, 75, 78, 73, 70, 
-    197, 75, 77, 128, 75, 205, 75, 76, 73, 84, 79, 78, 128, 75, 76, 65, 83, 
-    77, 65, 128, 75, 76, 65, 83, 77, 193, 75, 76, 65, 128, 75, 76, 128, 75, 
-    75, 85, 128, 75, 75, 79, 128, 75, 75, 73, 128, 75, 75, 69, 69, 128, 75, 
-    75, 69, 128, 75, 75, 65, 128, 75, 75, 128, 75, 74, 69, 128, 75, 73, 89, 
-    69, 79, 75, 45, 84, 73, 75, 69, 85, 84, 128, 75, 73, 89, 69, 79, 75, 45, 
-    83, 73, 79, 83, 45, 75, 73, 89, 69, 79, 75, 128, 75, 73, 89, 69, 79, 75, 
-    45, 82, 73, 69, 85, 76, 128, 75, 73, 89, 69, 79, 75, 45, 80, 73, 69, 85, 
-    80, 128, 75, 73, 89, 69, 79, 75, 45, 78, 73, 69, 85, 78, 128, 75, 73, 89, 
-    69, 79, 75, 45, 75, 72, 73, 69, 85, 75, 72, 128, 75, 73, 89, 69, 79, 75, 
-    45, 67, 72, 73, 69, 85, 67, 72, 128, 75, 73, 89, 69, 79, 203, 75, 73, 88, 
-    128, 75, 73, 84, 128, 75, 73, 83, 73, 77, 53, 128, 75, 73, 83, 73, 77, 
-    181, 75, 73, 83, 72, 128, 75, 73, 83, 65, 76, 128, 75, 73, 82, 79, 87, 
-    65, 84, 84, 79, 128, 75, 73, 82, 79, 77, 69, 69, 84, 79, 82, 85, 128, 75, 
-    73, 82, 79, 71, 85, 82, 65, 77, 85, 128, 75, 73, 82, 79, 128, 75, 73, 82, 
-    71, 72, 73, 218, 75, 73, 80, 128, 75, 73, 208, 75, 73, 78, 83, 72, 73, 
-    80, 128, 75, 73, 78, 68, 69, 82, 71, 65, 82, 84, 69, 78, 128, 75, 73, 73, 
-    128, 75, 73, 72, 128, 75, 73, 69, 88, 128, 75, 73, 69, 80, 128, 75, 73, 
-    69, 128, 75, 73, 68, 128, 75, 73, 196, 75, 73, 67, 75, 128, 75, 72, 90, 
-    128, 75, 72, 87, 65, 73, 128, 75, 72, 85, 69, 78, 45, 76, 85, 197, 75, 
-    72, 85, 69, 206, 75, 72, 85, 65, 84, 128, 75, 72, 79, 85, 128, 75, 72, 
-    79, 212, 75, 72, 79, 78, 128, 75, 72, 79, 77, 85, 84, 128, 75, 72, 79, 
-    128, 75, 72, 207, 75, 72, 73, 84, 128, 75, 72, 73, 69, 85, 75, 200, 75, 
-    72, 73, 128, 75, 72, 72, 79, 128, 75, 72, 72, 65, 128, 75, 72, 69, 84, 
-    72, 128, 75, 72, 69, 73, 128, 75, 72, 69, 69, 128, 75, 72, 69, 128, 75, 
-    72, 65, 82, 128, 75, 72, 65, 80, 72, 128, 75, 72, 65, 78, 199, 75, 72, 
-    65, 78, 68, 193, 75, 72, 65, 78, 128, 75, 72, 65, 77, 84, 201, 75, 72, 
-    65, 75, 65, 83, 83, 73, 65, 206, 75, 72, 65, 73, 128, 75, 72, 65, 72, 
-    128, 75, 72, 65, 200, 75, 72, 65, 65, 128, 75, 71, 128, 75, 69, 89, 67, 
-    65, 80, 128, 75, 69, 89, 66, 79, 65, 82, 68, 128, 75, 69, 89, 128, 75, 
-    69, 217, 75, 69, 88, 128, 75, 69, 85, 88, 128, 75, 69, 84, 84, 201, 75, 
-    69, 83, 72, 50, 128, 75, 69, 82, 69, 84, 128, 75, 69, 79, 87, 128, 75, 
-    69, 78, 84, 73, 77, 65, 84, 65, 128, 75, 69, 78, 84, 73, 77, 65, 84, 193, 
-    75, 69, 78, 84, 73, 77, 193, 75, 69, 78, 65, 84, 128, 75, 69, 78, 128, 
-    75, 69, 77, 80, 85, 76, 128, 75, 69, 77, 80, 85, 204, 75, 69, 77, 80, 76, 
-    73, 128, 75, 69, 77, 80, 76, 201, 75, 69, 77, 80, 72, 82, 69, 78, 71, 
-    128, 75, 69, 77, 66, 65, 78, 71, 128, 75, 69, 76, 86, 73, 206, 75, 69, 
-    72, 69, 72, 128, 75, 69, 72, 69, 200, 75, 69, 72, 128, 75, 69, 70, 85, 
-    76, 65, 128, 75, 69, 69, 83, 85, 128, 75, 69, 69, 80, 73, 78, 199, 75, 
-    69, 69, 78, 71, 128, 75, 67, 65, 76, 128, 75, 66, 128, 75, 65, 90, 65, 
-    75, 200, 75, 65, 89, 65, 78, 78, 65, 128, 75, 65, 89, 65, 200, 75, 65, 
-    88, 128, 75, 65, 87, 73, 128, 75, 65, 86, 89, 75, 65, 128, 75, 65, 85, 
-    78, 65, 128, 75, 65, 85, 206, 75, 65, 84, 79, 128, 75, 65, 84, 72, 73, 
-    83, 84, 73, 128, 75, 65, 84, 72, 65, 75, 193, 75, 65, 84, 65, 86, 65, 83, 
-    77, 65, 128, 75, 65, 84, 65, 86, 193, 75, 65, 84, 65, 75, 65, 78, 65, 45, 
-    72, 73, 82, 65, 71, 65, 78, 193, 75, 65, 83, 82, 65, 84, 65, 78, 128, 75, 
-    65, 83, 82, 65, 84, 65, 206, 75, 65, 83, 82, 65, 128, 75, 65, 83, 82, 
-    193, 75, 65, 83, 75, 65, 76, 128, 75, 65, 83, 75, 65, 204, 75, 65, 83, 
-    72, 77, 73, 82, 201, 75, 65, 82, 83, 72, 65, 78, 65, 128, 75, 65, 82, 79, 
-    82, 73, 73, 128, 75, 65, 82, 69, 206, 75, 65, 82, 65, 84, 84, 79, 128, 
-    75, 65, 82, 65, 78, 128, 75, 65, 80, 89, 69, 79, 85, 78, 83, 83, 65, 78, 
-    71, 80, 73, 69, 85, 80, 128, 75, 65, 80, 89, 69, 79, 85, 78, 82, 73, 69, 
-    85, 76, 128, 75, 65, 80, 89, 69, 79, 85, 78, 80, 72, 73, 69, 85, 80, 72, 
-    128, 75, 65, 80, 89, 69, 79, 85, 78, 77, 73, 69, 85, 77, 128, 75, 65, 80, 
-    80, 65, 128, 75, 65, 80, 80, 193, 75, 65, 80, 79, 128, 75, 65, 80, 72, 
-    128, 75, 65, 80, 65, 76, 128, 75, 65, 80, 65, 128, 75, 65, 80, 128, 75, 
-    65, 78, 84, 65, 74, 193, 75, 65, 78, 71, 128, 75, 65, 78, 199, 75, 65, 
-    78, 65, 75, 79, 128, 75, 65, 77, 52, 128, 75, 65, 77, 50, 128, 75, 65, 
-    75, 79, 128, 75, 65, 75, 65, 66, 65, 84, 128, 75, 65, 75, 128, 75, 65, 
-    203, 75, 65, 73, 82, 73, 128, 75, 65, 73, 128, 75, 65, 201, 75, 65, 70, 
-    128, 75, 65, 198, 75, 65, 68, 53, 128, 75, 65, 68, 181, 75, 65, 68, 52, 
-    128, 75, 65, 68, 51, 128, 75, 65, 68, 179, 75, 65, 68, 50, 128, 75, 65, 
-    66, 193, 75, 65, 66, 128, 75, 65, 65, 73, 128, 75, 65, 65, 70, 85, 128, 
-    75, 65, 65, 70, 128, 75, 65, 50, 128, 75, 65, 178, 75, 48, 48, 56, 128, 
-    75, 48, 48, 55, 128, 75, 48, 48, 54, 128, 75, 48, 48, 53, 128, 75, 48, 
-    48, 52, 128, 75, 48, 48, 51, 128, 75, 48, 48, 50, 128, 75, 48, 48, 49, 
-    128, 74, 87, 65, 128, 74, 85, 85, 128, 74, 85, 84, 128, 74, 85, 80, 73, 
-    84, 69, 82, 128, 74, 85, 79, 84, 128, 74, 85, 79, 80, 128, 74, 85, 78, 
-    79, 128, 74, 85, 78, 69, 128, 74, 85, 76, 89, 128, 74, 85, 69, 85, 73, 
-    128, 74, 85, 68, 71, 69, 128, 74, 85, 68, 69, 79, 45, 83, 80, 65, 78, 73, 
-    83, 200, 74, 79, 89, 79, 85, 211, 74, 79, 89, 128, 74, 79, 212, 74, 79, 
-    78, 71, 128, 74, 79, 78, 193, 74, 79, 75, 69, 82, 128, 74, 79, 73, 78, 
-    69, 68, 128, 74, 79, 73, 78, 128, 74, 79, 65, 128, 74, 74, 89, 88, 128, 
-    74, 74, 89, 84, 128, 74, 74, 89, 80, 128, 74, 74, 89, 128, 74, 74, 85, 
-    88, 128, 74, 74, 85, 84, 128, 74, 74, 85, 82, 88, 128, 74, 74, 85, 82, 
-    128, 74, 74, 85, 80, 128, 74, 74, 85, 79, 88, 128, 74, 74, 85, 79, 80, 
-    128, 74, 74, 85, 79, 128, 74, 74, 85, 128, 74, 74, 79, 88, 128, 74, 74, 
-    79, 84, 128, 74, 74, 79, 80, 128, 74, 74, 79, 128, 74, 74, 73, 88, 128, 
-    74, 74, 73, 84, 128, 74, 74, 73, 80, 128, 74, 74, 73, 69, 88, 128, 74, 
-    74, 73, 69, 84, 128, 74, 74, 73, 69, 80, 128, 74, 74, 73, 69, 128, 74, 
-    74, 73, 128, 74, 74, 69, 69, 128, 74, 74, 69, 128, 74, 74, 65, 128, 74, 
-    73, 76, 128, 74, 73, 72, 86, 65, 77, 85, 76, 73, 89, 65, 128, 74, 73, 65, 
-    128, 74, 72, 79, 128, 74, 72, 69, 72, 128, 74, 72, 65, 78, 128, 74, 72, 
-    65, 77, 128, 74, 72, 65, 128, 74, 69, 85, 128, 74, 69, 82, 85, 83, 65, 
-    76, 69, 77, 128, 74, 69, 82, 65, 206, 74, 69, 82, 65, 128, 74, 69, 82, 
-    128, 74, 69, 72, 128, 74, 69, 200, 74, 69, 71, 79, 71, 65, 78, 128, 74, 
-    69, 69, 77, 128, 74, 65, 89, 65, 78, 78, 65, 128, 74, 65, 86, 73, 89, 65, 
-    78, 73, 128, 74, 65, 82, 128, 74, 65, 80, 65, 78, 69, 83, 197, 74, 65, 
-    78, 85, 65, 82, 89, 128, 74, 65, 76, 76, 65, 74, 65, 76, 65, 76, 79, 85, 
-    72, 79, 85, 128, 74, 65, 68, 69, 128, 74, 65, 65, 128, 74, 45, 83, 73, 
-    77, 80, 76, 73, 70, 73, 69, 196, 202, 73, 90, 72, 73, 84, 83, 65, 128, 
-    73, 90, 72, 73, 84, 83, 193, 73, 90, 72, 69, 128, 73, 89, 69, 75, 128, 
-    73, 89, 65, 78, 78, 65, 128, 73, 85, 74, 65, 128, 73, 85, 128, 73, 84, 
-    69, 82, 65, 84, 73, 79, 206, 73, 84, 69, 77, 128, 73, 83, 83, 72, 65, 82, 
-    128, 73, 83, 211, 73, 83, 79, 78, 128, 73, 83, 79, 206, 73, 83, 69, 78, 
-    45, 73, 83, 69, 78, 128, 73, 83, 65, 75, 73, 193, 73, 83, 45, 80, 73, 76, 
-    76, 65, 128, 73, 82, 85, 89, 65, 78, 78, 65, 128, 73, 82, 85, 85, 89, 65, 
-    78, 78, 65, 128, 73, 79, 84, 73, 70, 73, 69, 196, 73, 79, 84, 65, 84, 69, 
-    196, 73, 79, 84, 65, 128, 73, 79, 84, 193, 73, 79, 82, 128, 73, 79, 68, 
-    72, 65, 68, 72, 128, 73, 78, 86, 73, 83, 73, 66, 76, 197, 73, 78, 86, 69, 
-    82, 84, 69, 68, 128, 73, 78, 86, 69, 82, 84, 69, 196, 73, 78, 86, 69, 82, 
-    83, 197, 73, 78, 84, 73, 128, 73, 78, 84, 69, 82, 83, 89, 76, 76, 65, 66, 
-    73, 195, 73, 78, 84, 69, 82, 83, 69, 67, 84, 73, 79, 78, 128, 73, 78, 84, 
-    69, 82, 83, 69, 67, 84, 73, 79, 206, 73, 78, 84, 69, 82, 83, 69, 67, 84, 
-    73, 78, 199, 73, 78, 84, 69, 82, 82, 79, 66, 65, 78, 71, 128, 73, 78, 84, 
-    69, 82, 80, 79, 76, 65, 84, 73, 79, 206, 73, 78, 84, 69, 82, 76, 79, 67, 
-    75, 69, 196, 73, 78, 84, 69, 82, 76, 73, 78, 69, 65, 210, 73, 78, 84, 69, 
-    82, 73, 79, 210, 73, 78, 84, 69, 82, 69, 83, 212, 73, 78, 84, 69, 82, 67, 
-    65, 76, 65, 84, 69, 128, 73, 78, 84, 69, 71, 82, 65, 84, 73, 79, 78, 128, 
-    73, 78, 84, 69, 71, 82, 65, 84, 73, 79, 206, 73, 78, 84, 69, 71, 82, 65, 
-    76, 128, 73, 78, 84, 69, 71, 82, 65, 204, 73, 78, 83, 85, 76, 65, 210, 
-    73, 78, 83, 84, 82, 85, 77, 69, 78, 84, 65, 204, 73, 78, 83, 73, 68, 69, 
-    128, 73, 78, 83, 69, 82, 84, 73, 79, 206, 73, 78, 83, 69, 67, 84, 128, 
-    73, 78, 83, 67, 82, 73, 80, 84, 73, 79, 78, 65, 204, 73, 78, 78, 79, 67, 
-    69, 78, 67, 69, 128, 73, 78, 78, 78, 128, 73, 78, 78, 69, 82, 128, 73, 
-    78, 78, 69, 210, 73, 78, 78, 128, 73, 78, 73, 78, 71, 85, 128, 73, 78, 
-    73, 128, 73, 78, 72, 73, 66, 73, 212, 73, 78, 72, 69, 82, 69, 78, 212, 
-    73, 78, 71, 87, 65, 90, 128, 73, 78, 70, 79, 82, 77, 65, 84, 73, 79, 206, 
-    73, 78, 70, 76, 85, 69, 78, 67, 69, 128, 73, 78, 70, 73, 78, 73, 84, 89, 
-    128, 73, 78, 70, 73, 78, 73, 84, 217, 73, 78, 68, 85, 83, 84, 82, 73, 65, 
-    204, 73, 78, 68, 73, 82, 69, 67, 212, 73, 78, 68, 73, 67, 65, 84, 79, 82, 
-    128, 73, 78, 68, 73, 195, 73, 78, 68, 69, 88, 128, 73, 78, 68, 69, 80, 
-    69, 78, 68, 69, 78, 212, 73, 78, 67, 82, 69, 77, 69, 78, 84, 128, 73, 78, 
-    67, 82, 69, 65, 83, 69, 211, 73, 78, 67, 82, 69, 65, 83, 69, 128, 73, 78, 
-    67, 79, 77, 80, 76, 69, 84, 197, 73, 78, 67, 76, 85, 68, 73, 78, 199, 73, 
-    78, 67, 72, 128, 73, 78, 65, 80, 128, 73, 78, 45, 65, 76, 65, 70, 128, 
-    73, 77, 80, 69, 82, 73, 65, 204, 73, 77, 80, 69, 82, 70, 69, 67, 84, 85, 
-    205, 73, 77, 80, 69, 82, 70, 69, 67, 84, 65, 128, 73, 77, 80, 69, 82, 70, 
-    69, 67, 84, 193, 73, 77, 73, 83, 69, 79, 211, 73, 77, 73, 78, 51, 128, 
-    73, 77, 73, 78, 128, 73, 77, 73, 206, 73, 77, 73, 70, 84, 72, 79, 82, 79, 
-    78, 128, 73, 77, 73, 70, 84, 72, 79, 82, 65, 128, 73, 77, 73, 70, 79, 78, 
-    79, 78, 128, 73, 77, 73, 68, 73, 65, 82, 71, 79, 78, 128, 73, 77, 65, 71, 
-    197, 73, 76, 85, 89, 65, 78, 78, 65, 128, 73, 76, 85, 89, 128, 73, 76, 
-    85, 85, 89, 65, 78, 78, 65, 128, 73, 76, 85, 84, 128, 73, 76, 73, 77, 77, 
-    85, 52, 128, 73, 76, 73, 77, 77, 85, 51, 128, 73, 76, 73, 77, 77, 85, 
-    128, 73, 76, 73, 77, 77, 213, 73, 76, 50, 128, 73, 75, 65, 82, 65, 128, 
-    73, 75, 65, 82, 193, 73, 74, 128, 73, 73, 89, 65, 78, 78, 65, 128, 73, 
-    71, 73, 128, 73, 71, 201, 73, 71, 71, 87, 83, 128, 73, 70, 73, 78, 128, 
-    73, 69, 85, 78, 71, 45, 84, 73, 75, 69, 85, 84, 128, 73, 69, 85, 78, 71, 
-    45, 84, 72, 73, 69, 85, 84, 72, 128, 73, 69, 85, 78, 71, 45, 83, 83, 65, 
-    78, 71, 75, 73, 89, 69, 79, 75, 128, 73, 69, 85, 78, 71, 45, 82, 73, 69, 
-    85, 76, 128, 73, 69, 85, 78, 71, 45, 80, 73, 69, 85, 80, 128, 73, 69, 85, 
-    78, 71, 45, 80, 72, 73, 69, 85, 80, 72, 128, 73, 69, 85, 78, 71, 45, 75, 
-    73, 89, 69, 79, 75, 128, 73, 69, 85, 78, 71, 45, 75, 72, 73, 69, 85, 75, 
-    72, 128, 73, 69, 85, 78, 71, 45, 67, 73, 69, 85, 67, 128, 73, 69, 85, 78, 
-    71, 45, 67, 72, 73, 69, 85, 67, 72, 128, 73, 69, 85, 78, 199, 73, 68, 76, 
-    69, 128, 73, 68, 73, 77, 128, 73, 68, 73, 205, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 68, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 68, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    68, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 68, 54, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 68, 53, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 68, 52, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 68, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 68, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    68, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 68, 48, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 67, 70, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 67, 69, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 67, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 67, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    67, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 67, 65, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 67, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 67, 56, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 67, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 67, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    67, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 67, 52, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 67, 51, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 67, 50, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 67, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 67, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    66, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 66, 69, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 66, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 66, 67, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 66, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 66, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    66, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 66, 56, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 66, 55, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 66, 54, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 66, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 66, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    66, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 66, 50, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 66, 49, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 66, 48, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 65, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 65, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    65, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 65, 67, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 65, 66, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 65, 65, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 65, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 65, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    65, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 65, 54, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 65, 53, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 65, 52, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 65, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 65, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    65, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 65, 48, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 57, 70, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 57, 69, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 57, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 57, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    57, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 57, 65, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 57, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 57, 56, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 57, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 57, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    57, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 57, 52, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 57, 51, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 57, 50, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 57, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 57, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    56, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 56, 69, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 56, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 56, 67, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 56, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 56, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    56, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 56, 56, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 56, 55, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 56, 54, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 56, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 56, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    56, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 56, 50, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 56, 49, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 56, 48, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 55, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 55, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    55, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 55, 67, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 55, 66, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 55, 65, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 55, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 55, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    55, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 55, 54, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 55, 53, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 55, 52, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 55, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 55, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    55, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 55, 48, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 54, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 54, 67, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 54, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 54, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    54, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 54, 56, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 54, 55, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 54, 54, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 54, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 54, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    54, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 54, 50, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 54, 49, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 54, 48, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 53, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 53, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    53, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 53, 67, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 53, 66, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 53, 65, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 53, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 53, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    53, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 53, 54, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 53, 53, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 53, 52, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 53, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 53, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    53, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 53, 48, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 52, 70, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 52, 69, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 52, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 52, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    52, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 52, 65, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 52, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 52, 56, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 52, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 52, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    52, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 52, 52, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 52, 51, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 52, 50, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 52, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 52, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    51, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 51, 69, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 51, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 51, 67, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 51, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 51, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    51, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 51, 56, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 51, 55, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 51, 54, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 51, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 51, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    51, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 51, 50, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 51, 49, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 51, 48, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 50, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 50, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    50, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 50, 65, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 50, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 50, 56, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 50, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 50, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    50, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 50, 52, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 50, 51, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 50, 50, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 50, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 50, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    49, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 49, 69, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 49, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 49, 67, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 49, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 49, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    49, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 49, 56, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 49, 55, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 49, 54, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 49, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 49, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    49, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 49, 50, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 49, 49, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 49, 48, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 48, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 48, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    48, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 48, 67, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 48, 66, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 48, 65, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 48, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 48, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    48, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 48, 54, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 48, 53, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 65, 48, 52, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 65, 48, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 65, 48, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 
-    48, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 65, 48, 48, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 70, 70, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 70, 69, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 70, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 70, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    70, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 70, 65, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 70, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 70, 56, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 70, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 70, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    70, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 70, 52, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 70, 51, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 70, 50, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 70, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 70, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    69, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 69, 69, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 69, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 69, 67, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 69, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 69, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    69, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 69, 56, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 69, 55, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 69, 54, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 69, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 69, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    69, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 69, 50, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 69, 49, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 69, 48, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 68, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 68, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    68, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 68, 67, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 68, 66, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 68, 65, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 68, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 68, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    68, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 68, 54, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 68, 53, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 68, 52, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 68, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 68, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    68, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 68, 48, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 67, 70, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 67, 69, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 67, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 67, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    67, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 67, 65, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 67, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 67, 56, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 67, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 67, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    67, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 67, 52, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 67, 51, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 67, 50, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 67, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 67, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    66, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 66, 69, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 66, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 66, 67, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 66, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 66, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    66, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 66, 56, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 66, 55, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 66, 54, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 66, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 66, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    66, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 66, 50, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 66, 49, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 66, 48, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 65, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 65, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    65, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 65, 67, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 65, 66, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 65, 65, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 65, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 65, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    65, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 65, 54, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 65, 53, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 65, 52, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 65, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 65, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    65, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 65, 48, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 57, 70, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 57, 69, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 57, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 57, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    57, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 57, 65, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 57, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 57, 56, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 57, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 57, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    57, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 57, 52, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 57, 51, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 57, 50, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 57, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 57, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    56, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 56, 69, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 56, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 56, 67, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 56, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 56, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    56, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 56, 56, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 56, 55, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 56, 54, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 56, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 56, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    56, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 56, 50, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 56, 49, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 56, 48, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 55, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 55, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    55, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 55, 67, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 55, 66, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 55, 65, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 55, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 55, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    55, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 55, 54, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 55, 53, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 55, 52, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 55, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 55, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    55, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 55, 48, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 54, 70, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 54, 69, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 54, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 54, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    54, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 54, 65, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 54, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 54, 56, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 54, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 54, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    54, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 54, 52, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 54, 51, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 54, 50, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 54, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 54, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    53, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 53, 69, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 53, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 53, 67, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 53, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 53, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    53, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 53, 56, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 53, 55, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 53, 54, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 53, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 53, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    53, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 53, 50, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 53, 49, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 53, 48, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 52, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 52, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    52, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 52, 67, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 52, 66, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 52, 65, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 52, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 52, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    52, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 52, 54, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 52, 53, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 52, 52, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 52, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 52, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    52, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 52, 48, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 51, 70, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 51, 69, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 51, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 51, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    51, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 51, 65, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 51, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 51, 56, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 51, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 51, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    51, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 51, 52, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 51, 51, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 51, 50, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 51, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 51, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    50, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 50, 69, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 50, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 50, 67, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 50, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 50, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    50, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 50, 56, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 50, 55, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 50, 54, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 50, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 50, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    50, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 50, 50, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 50, 49, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 50, 48, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 49, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 49, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    49, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 49, 67, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 49, 66, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 49, 65, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 49, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 49, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    49, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 49, 54, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 49, 53, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 49, 52, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 49, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 49, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    49, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 49, 48, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 48, 70, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 48, 69, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 48, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 48, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    48, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 48, 65, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 48, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 48, 56, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 48, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 48, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 
-    48, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 48, 52, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 70, 57, 48, 51, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 70, 57, 48, 50, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 70, 57, 48, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 70, 57, 48, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 57, 48, 
-    52, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 56, 68, 55, 48, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 56, 67, 65, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 56, 57, 69, 51, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 55, 68, 52, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 55, 54, 68, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 55, 53, 
-    49, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 55, 49, 50, 49, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 55, 48, 66, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 54, 70, 49, 52, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 54, 55, 50, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 54, 54, 50, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 54, 53, 
-    66, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 54, 53, 57, 57, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 54, 53, 53, 55, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 54, 51, 53, 53, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 54, 51, 48, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 54, 50, 57, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 54, 50, 
-    53, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 54, 50, 52, 66, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 53, 70, 56, 67, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 53, 68, 69, 54, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 53, 66, 56, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 53, 66, 53, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 53, 57, 
-    50, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 53, 57, 49, 65, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 53, 56, 70, 48, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 53, 52, 51, 57, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 53, 51, 70, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 53, 51, 67, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 53, 50, 
-    68, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 53, 50, 52, 68, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 53, 50, 49, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 53, 49, 56, 68, 128, 73, 68, 69, 79, 71, 82, 
-    65, 80, 72, 45, 52, 69, 65, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 52, 69, 56, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 52, 69, 
-    50, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 52, 69, 48, 57, 128, 
-    73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 52, 69, 48, 48, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 49, 68, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 65, 49, 67, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 65, 49, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 65, 49, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 65, 49, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 
-    49, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 49, 55, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 49, 54, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 49, 53, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 49, 52, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 65, 49, 51, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 65, 49, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 65, 49, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 65, 49, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 
-    48, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 48, 69, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 48, 68, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 48, 67, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 48, 66, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 65, 48, 65, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 65, 48, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 65, 48, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 65, 48, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 
-    48, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 48, 53, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 48, 52, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 48, 51, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 65, 48, 50, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 65, 48, 49, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 65, 48, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 70, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 70, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    70, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 70, 67, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 70, 66, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 70, 65, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 70, 57, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 70, 56, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 70, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 70, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 70, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    70, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 70, 51, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 70, 50, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 70, 49, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 70, 48, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 69, 70, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 69, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 69, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 69, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    69, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 69, 65, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 69, 57, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 69, 56, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 69, 55, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 69, 54, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 69, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 69, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 69, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    69, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 69, 49, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 69, 48, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 68, 70, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 68, 69, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 68, 68, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 68, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 68, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 68, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    68, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 68, 56, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 68, 55, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 68, 54, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 68, 53, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 68, 52, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 68, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 68, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 68, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    68, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 67, 70, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 67, 69, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 67, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 67, 67, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 67, 66, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 67, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 67, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 67, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    67, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 67, 54, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 67, 53, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 67, 52, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 67, 51, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 67, 50, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 67, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 67, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 66, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    66, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 66, 68, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 66, 67, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 66, 66, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 66, 65, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 66, 57, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 66, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 66, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 66, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    66, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 66, 52, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 66, 51, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 66, 50, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 66, 49, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 66, 48, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 65, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 65, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 65, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    65, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 65, 66, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 65, 65, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 65, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 65, 56, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 65, 55, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 65, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 65, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 65, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    65, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 65, 50, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 65, 49, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 65, 48, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 57, 70, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 57, 69, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 57, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 57, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 57, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    57, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 57, 57, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 57, 56, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 57, 55, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 57, 54, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 57, 53, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 57, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 57, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 57, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    57, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 57, 48, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 56, 70, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 56, 69, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 56, 68, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 56, 67, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 56, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 56, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 56, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    56, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 56, 55, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 56, 54, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 56, 53, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 56, 52, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 56, 51, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 56, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 56, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 56, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    55, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 55, 69, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 55, 68, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 55, 67, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 55, 66, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 55, 65, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 55, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 55, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 55, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    55, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 55, 53, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 55, 52, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 55, 51, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 55, 50, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 55, 49, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 55, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 54, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 54, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    54, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 54, 67, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 54, 66, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 54, 65, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 54, 57, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 54, 56, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 54, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 54, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 54, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    54, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 54, 51, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 54, 50, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 54, 49, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 54, 48, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 53, 70, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 53, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 53, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 53, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    53, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 53, 65, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 53, 57, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 53, 56, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 53, 55, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 53, 54, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 53, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 53, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 53, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    53, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 53, 49, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 53, 48, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 52, 70, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 52, 69, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 52, 68, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 52, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 52, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 52, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    52, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 52, 56, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 52, 55, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 52, 54, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 52, 53, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 52, 52, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 52, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 52, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 52, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    52, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 51, 70, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 51, 69, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 51, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 51, 67, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 51, 66, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 51, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 51, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 51, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    51, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 51, 54, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 51, 53, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 51, 52, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 51, 51, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 51, 50, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 51, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 51, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 50, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    50, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 50, 68, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 50, 67, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 50, 66, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 50, 65, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 50, 57, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 50, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 50, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 50, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    50, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 50, 52, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 50, 51, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 50, 50, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 50, 49, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 50, 48, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 49, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 49, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 49, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    49, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 49, 66, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 49, 65, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 49, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 49, 56, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 49, 55, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 49, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 49, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 49, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    49, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 49, 50, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 49, 49, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 49, 48, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 48, 70, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 48, 69, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 48, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 48, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 48, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    48, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 48, 57, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 48, 56, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 48, 55, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 48, 54, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 57, 48, 53, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 57, 48, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 57, 48, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 57, 48, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 
-    48, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 57, 48, 48, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 70, 70, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 70, 69, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 70, 68, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 70, 67, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 70, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 70, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 70, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    70, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 70, 55, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 70, 54, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 70, 53, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 70, 52, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 70, 51, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 70, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 70, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 70, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    69, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 69, 69, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 69, 68, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 69, 67, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 69, 66, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 69, 65, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 69, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 69, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 69, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    69, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 69, 53, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 69, 52, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 69, 51, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 69, 50, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 69, 49, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 69, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 68, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 68, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    68, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 68, 67, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 68, 66, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 68, 65, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 68, 57, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 68, 56, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 68, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 68, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 68, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    68, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 68, 51, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 68, 50, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 68, 49, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 68, 48, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 67, 70, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 67, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 67, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 67, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    67, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 67, 65, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 67, 57, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 67, 56, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 67, 55, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 67, 54, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 67, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 67, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 67, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    67, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 67, 49, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 67, 48, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 66, 70, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 66, 69, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 66, 68, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 66, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 66, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 66, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    66, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 66, 56, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 66, 55, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 66, 54, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 66, 53, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 66, 52, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 66, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 66, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 66, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    66, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 65, 70, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 65, 69, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 65, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 65, 67, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 65, 66, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 65, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 65, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 65, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    65, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 65, 54, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 65, 53, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 65, 52, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 65, 51, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 65, 50, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 65, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 65, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 57, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    57, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 57, 68, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 57, 67, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 57, 66, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 57, 65, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 57, 57, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 57, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 57, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 57, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    57, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 57, 52, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 57, 51, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 57, 50, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 57, 49, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 57, 48, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 56, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 56, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 56, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    56, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 56, 66, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 56, 65, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 56, 57, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 56, 56, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 56, 55, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 56, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 56, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 56, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    56, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 56, 50, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 56, 49, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 56, 48, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 55, 70, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 55, 69, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 55, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 55, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 55, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    55, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 55, 57, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 55, 56, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 55, 55, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 55, 54, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 55, 53, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 55, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 55, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 55, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    55, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 55, 48, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 54, 70, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 54, 69, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 54, 68, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 54, 67, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 54, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 54, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 54, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    54, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 54, 55, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 54, 54, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 54, 53, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 54, 52, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 54, 51, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 54, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 54, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 54, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    53, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 53, 69, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 53, 68, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 53, 67, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 53, 66, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 53, 65, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 53, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 53, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 53, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    53, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 53, 53, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 53, 52, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 53, 51, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 53, 50, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 53, 49, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 53, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 52, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 52, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    52, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 52, 67, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 52, 66, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 52, 65, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 52, 57, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 52, 56, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 52, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 52, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 52, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    52, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 52, 51, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 52, 50, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 52, 49, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 52, 48, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 51, 70, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 51, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 51, 68, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 51, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    51, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 51, 65, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 51, 57, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 51, 56, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 51, 55, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 51, 54, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 51, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 51, 52, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 51, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    51, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 51, 49, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 51, 48, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 50, 70, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 50, 69, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 50, 68, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 50, 67, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 50, 66, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 50, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    50, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 50, 56, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 50, 55, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 50, 54, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 50, 53, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 50, 52, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 50, 51, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 50, 50, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 50, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    50, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 49, 70, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 49, 69, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 49, 68, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 49, 67, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 49, 66, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 49, 65, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 49, 57, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 49, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    49, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 49, 54, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 49, 53, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 49, 52, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 49, 51, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 49, 50, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 49, 49, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 49, 48, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 48, 70, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    48, 69, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 48, 68, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 48, 67, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 48, 66, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 48, 65, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 48, 57, 128, 73, 68, 69, 79, 71, 82, 65, 
-    80, 72, 45, 50, 70, 56, 48, 56, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 
-    45, 50, 70, 56, 48, 55, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 
-    70, 56, 48, 54, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 
-    48, 53, 128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 48, 52, 
-    128, 73, 68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 48, 51, 128, 73, 
-    68, 69, 79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 48, 50, 128, 73, 68, 69, 
-    79, 71, 82, 65, 80, 72, 45, 50, 70, 56, 48, 49, 128, 73, 68, 69, 79, 71, 
-    82, 65, 80, 72, 45, 50, 70, 56, 48, 48, 128, 73, 68, 69, 78, 84, 73, 70, 
-    73, 67, 65, 84, 73, 79, 78, 128, 73, 68, 69, 78, 84, 73, 67, 65, 204, 73, 
-    67, 72, 79, 85, 128, 73, 67, 72, 79, 83, 128, 73, 67, 72, 73, 77, 65, 84, 
-    79, 83, 128, 73, 67, 72, 65, 68, 73, 78, 128, 73, 67, 69, 76, 65, 78, 68, 
-    73, 67, 45, 89, 82, 128, 73, 66, 73, 70, 73, 76, 73, 128, 73, 65, 85, 68, 
-    65, 128, 73, 48, 49, 53, 128, 73, 48, 49, 52, 128, 73, 48, 49, 51, 128, 
-    73, 48, 49, 50, 128, 73, 48, 49, 49, 65, 128, 73, 48, 49, 49, 128, 73, 
-    48, 49, 48, 65, 128, 73, 48, 49, 48, 128, 73, 48, 48, 57, 65, 128, 73, 
-    48, 48, 57, 128, 73, 48, 48, 56, 128, 73, 48, 48, 55, 128, 73, 48, 48, 
-    54, 128, 73, 48, 48, 53, 65, 128, 73, 48, 48, 53, 128, 73, 48, 48, 52, 
-    128, 73, 48, 48, 51, 128, 73, 48, 48, 50, 128, 73, 48, 48, 49, 128, 73, 
-    45, 89, 85, 128, 73, 45, 89, 79, 128, 73, 45, 89, 69, 79, 128, 73, 45, 
-    89, 69, 128, 73, 45, 89, 65, 69, 128, 73, 45, 89, 65, 45, 79, 128, 73, 
-    45, 89, 65, 128, 73, 45, 79, 45, 73, 128, 73, 45, 79, 128, 73, 45, 69, 
-    85, 128, 73, 45, 66, 69, 65, 77, 128, 73, 45, 65, 82, 65, 69, 65, 128, 
-    73, 45, 65, 128, 72, 90, 90, 90, 71, 128, 72, 90, 90, 90, 128, 72, 90, 
-    90, 80, 128, 72, 90, 90, 128, 72, 90, 87, 71, 128, 72, 90, 87, 128, 72, 
-    90, 84, 128, 72, 90, 71, 128, 72, 89, 83, 84, 69, 82, 69, 83, 73, 211, 
-    72, 89, 80, 79, 68, 73, 65, 83, 84, 79, 76, 69, 128, 72, 89, 80, 72, 69, 
-    78, 65, 84, 73, 79, 206, 72, 89, 80, 72, 69, 78, 45, 77, 73, 78, 85, 83, 
-    128, 72, 89, 80, 72, 69, 78, 128, 72, 89, 80, 72, 69, 206, 72, 88, 87, 
-    71, 128, 72, 88, 85, 79, 88, 128, 72, 88, 85, 79, 84, 128, 72, 88, 85, 
-    79, 80, 128, 72, 88, 85, 79, 128, 72, 88, 79, 88, 128, 72, 88, 79, 84, 
-    128, 72, 88, 79, 80, 128, 72, 88, 79, 128, 72, 88, 73, 88, 128, 72, 88, 
-    73, 84, 128, 72, 88, 73, 80, 128, 72, 88, 73, 69, 88, 128, 72, 88, 73, 
-    69, 84, 128, 72, 88, 73, 69, 80, 128, 72, 88, 73, 69, 128, 72, 88, 73, 
-    128, 72, 88, 69, 88, 128, 72, 88, 69, 80, 128, 72, 88, 69, 128, 72, 88, 
-    65, 88, 128, 72, 88, 65, 84, 128, 72, 88, 65, 80, 128, 72, 88, 65, 128, 
-    72, 87, 85, 128, 72, 87, 65, 73, 82, 128, 72, 86, 128, 72, 85, 82, 65, 
-    78, 128, 72, 85, 79, 84, 128, 72, 85, 78, 68, 82, 69, 68, 128, 72, 85, 
-    78, 68, 82, 69, 196, 72, 85, 78, 128, 72, 85, 77, 65, 78, 128, 72, 85, 
-    77, 65, 206, 72, 85, 76, 50, 128, 72, 85, 73, 73, 84, 79, 128, 72, 85, 
-    66, 50, 128, 72, 85, 66, 178, 72, 85, 66, 128, 72, 85, 65, 82, 65, 68, 
-    68, 79, 128, 72, 82, 89, 86, 78, 73, 193, 72, 80, 87, 71, 128, 72, 80, 
-    65, 128, 72, 80, 128, 72, 79, 85, 82, 71, 76, 65, 83, 83, 128, 72, 79, 
-    85, 210, 72, 79, 84, 65, 128, 72, 79, 82, 83, 69, 128, 72, 79, 82, 73, 
-    90, 79, 78, 84, 65, 76, 76, 217, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 
-    45, 48, 54, 45, 48, 54, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 
-    48, 54, 45, 48, 53, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 
-    54, 45, 48, 52, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 54, 
-    45, 48, 51, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 54, 45, 
-    48, 50, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 54, 45, 48, 
-    49, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 54, 45, 48, 48, 
-    128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 53, 45, 48, 54, 128, 
-    72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 53, 45, 48, 53, 128, 72, 
-    79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 53, 45, 48, 52, 128, 72, 79, 
-    82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 53, 45, 48, 51, 128, 72, 79, 82, 
-    73, 90, 79, 78, 84, 65, 76, 45, 48, 53, 45, 48, 50, 128, 72, 79, 82, 73, 
-    90, 79, 78, 84, 65, 76, 45, 48, 53, 45, 48, 49, 128, 72, 79, 82, 73, 90, 
-    79, 78, 84, 65, 76, 45, 48, 53, 45, 48, 48, 128, 72, 79, 82, 73, 90, 79, 
-    78, 84, 65, 76, 45, 48, 52, 45, 48, 54, 128, 72, 79, 82, 73, 90, 79, 78, 
-    84, 65, 76, 45, 48, 52, 45, 48, 53, 128, 72, 79, 82, 73, 90, 79, 78, 84, 
-    65, 76, 45, 48, 52, 45, 48, 52, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 
-    76, 45, 48, 52, 45, 48, 51, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 
-    45, 48, 52, 45, 48, 50, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 
-    48, 52, 45, 48, 49, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 
-    52, 45, 48, 48, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 51, 
-    45, 48, 54, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 51, 45, 
-    48, 53, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 51, 45, 48, 
-    52, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 51, 45, 48, 51, 
-    128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 51, 45, 48, 50, 128, 
-    72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 51, 45, 48, 49, 128, 72, 
-    79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 51, 45, 48, 48, 128, 72, 79, 
-    82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 50, 45, 48, 54, 128, 72, 79, 82, 
-    73, 90, 79, 78, 84, 65, 76, 45, 48, 50, 45, 48, 53, 128, 72, 79, 82, 73, 
-    90, 79, 78, 84, 65, 76, 45, 48, 50, 45, 48, 52, 128, 72, 79, 82, 73, 90, 
-    79, 78, 84, 65, 76, 45, 48, 50, 45, 48, 51, 128, 72, 79, 82, 73, 90, 79, 
-    78, 84, 65, 76, 45, 48, 50, 45, 48, 50, 128, 72, 79, 82, 73, 90, 79, 78, 
-    84, 65, 76, 45, 48, 50, 45, 48, 49, 128, 72, 79, 82, 73, 90, 79, 78, 84, 
-    65, 76, 45, 48, 50, 45, 48, 48, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 
-    76, 45, 48, 49, 45, 48, 54, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 
-    45, 48, 49, 45, 48, 53, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 
-    48, 49, 45, 48, 52, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 
-    49, 45, 48, 51, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 49, 
-    45, 48, 50, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 49, 45, 
-    48, 49, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 49, 45, 48, 
-    48, 128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 48, 45, 48, 54, 
-    128, 72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 48, 45, 48, 53, 128, 
-    72, 79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 48, 45, 48, 52, 128, 72, 
-    79, 82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 48, 45, 48, 51, 128, 72, 79, 
-    82, 73, 90, 79, 78, 84, 65, 76, 45, 48, 48, 45, 48, 50, 128, 72, 79, 82, 
-    73, 90, 79, 78, 84, 65, 76, 45, 48, 48, 45, 48, 49, 128, 72, 79, 82, 73, 
-    90, 79, 78, 84, 65, 76, 45, 48, 48, 45, 48, 48, 128, 72, 79, 82, 73, 90, 
-    79, 78, 84, 65, 76, 128, 72, 79, 82, 73, 128, 72, 79, 82, 193, 72, 79, 
-    79, 82, 85, 128, 72, 79, 79, 78, 128, 72, 79, 77, 79, 84, 72, 69, 84, 73, 
-    67, 128, 72, 79, 77, 79, 84, 72, 69, 84, 73, 195, 72, 79, 76, 69, 128, 
-    72, 79, 76, 68, 73, 78, 199, 72, 79, 76, 65, 77, 128, 72, 79, 76, 65, 
-    205, 72, 79, 75, 65, 128, 72, 79, 73, 128, 72, 79, 69, 128, 72, 78, 85, 
-    84, 128, 72, 78, 85, 79, 88, 128, 72, 78, 85, 79, 128, 72, 78, 79, 88, 
-    128, 72, 78, 79, 84, 128, 72, 78, 79, 80, 128, 72, 78, 73, 88, 128, 72, 
-    78, 73, 84, 128, 72, 78, 73, 80, 128, 72, 78, 73, 69, 88, 128, 72, 78, 
-    73, 69, 84, 128, 72, 78, 73, 69, 80, 128, 72, 78, 73, 69, 128, 72, 78, 
-    73, 128, 72, 78, 69, 88, 128, 72, 78, 69, 80, 128, 72, 78, 69, 128, 72, 
-    78, 65, 88, 128, 72, 78, 65, 84, 128, 72, 78, 65, 80, 128, 72, 78, 65, 
-    128, 72, 77, 89, 88, 128, 72, 77, 89, 82, 88, 128, 72, 77, 89, 82, 128, 
-    72, 77, 89, 80, 128, 72, 77, 89, 128, 72, 77, 85, 88, 128, 72, 77, 85, 
-    84, 128, 72, 77, 85, 82, 88, 128, 72, 77, 85, 82, 128, 72, 77, 85, 80, 
-    128, 72, 77, 85, 79, 88, 128, 72, 77, 85, 79, 80, 128, 72, 77, 85, 79, 
-    128, 72, 77, 85, 128, 72, 77, 79, 88, 128, 72, 77, 79, 84, 128, 72, 77, 
-    79, 80, 128, 72, 77, 79, 128, 72, 77, 73, 88, 128, 72, 77, 73, 84, 128, 
-    72, 77, 73, 80, 128, 72, 77, 73, 69, 88, 128, 72, 77, 73, 69, 80, 128, 
-    72, 77, 73, 69, 128, 72, 77, 73, 128, 72, 77, 69, 128, 72, 77, 65, 88, 
-    128, 72, 77, 65, 84, 128, 72, 77, 65, 80, 128, 72, 77, 65, 128, 72, 76, 
-    89, 88, 128, 72, 76, 89, 84, 128, 72, 76, 89, 82, 88, 128, 72, 76, 89, 
-    82, 128, 72, 76, 89, 80, 128, 72, 76, 89, 128, 72, 76, 85, 88, 128, 72, 
-    76, 85, 84, 128, 72, 76, 85, 82, 88, 128, 72, 76, 85, 82, 128, 72, 76, 
-    85, 80, 128, 72, 76, 85, 79, 88, 128, 72, 76, 85, 79, 80, 128, 72, 76, 
-    85, 79, 128, 72, 76, 85, 128, 72, 76, 79, 88, 128, 72, 76, 79, 80, 128, 
-    72, 76, 79, 128, 72, 76, 73, 88, 128, 72, 76, 73, 84, 128, 72, 76, 73, 
-    80, 128, 72, 76, 73, 69, 88, 128, 72, 76, 73, 69, 80, 128, 72, 76, 73, 
-    69, 128, 72, 76, 73, 128, 72, 76, 69, 88, 128, 72, 76, 69, 80, 128, 72, 
-    76, 69, 128, 72, 76, 65, 88, 128, 72, 76, 65, 84, 128, 72, 76, 65, 80, 
-    128, 72, 76, 65, 128, 72, 75, 128, 72, 73, 90, 66, 128, 72, 73, 83, 84, 
-    79, 82, 73, 195, 72, 73, 82, 73, 81, 128, 72, 73, 71, 72, 45, 82, 69, 86, 
-    69, 82, 83, 69, 68, 45, 185, 72, 73, 69, 88, 128, 72, 73, 69, 85, 72, 45, 
-    83, 73, 79, 83, 128, 72, 73, 69, 85, 72, 45, 82, 73, 69, 85, 76, 128, 72, 
-    73, 69, 85, 72, 45, 80, 73, 69, 85, 80, 128, 72, 73, 69, 85, 72, 45, 78, 
-    73, 69, 85, 78, 128, 72, 73, 69, 85, 72, 45, 77, 73, 69, 85, 77, 128, 72, 
-    73, 69, 85, 200, 72, 73, 69, 128, 72, 73, 68, 73, 78, 199, 72, 73, 68, 
-    69, 84, 128, 72, 73, 68, 69, 128, 72, 72, 87, 65, 128, 72, 72, 85, 128, 
-    72, 72, 73, 128, 72, 72, 69, 69, 128, 72, 72, 69, 128, 72, 72, 65, 65, 
-    128, 72, 71, 128, 72, 69, 88, 73, 70, 79, 82, 205, 72, 69, 88, 65, 71, 
-    79, 78, 128, 72, 69, 82, 85, 84, 85, 128, 72, 69, 82, 85, 128, 72, 69, 
-    82, 77, 73, 84, 73, 65, 206, 72, 69, 82, 77, 73, 79, 78, 73, 65, 206, 72, 
-    69, 82, 77, 69, 83, 128, 72, 69, 82, 65, 69, 85, 205, 72, 69, 78, 71, 
-    128, 72, 69, 78, 199, 72, 69, 77, 80, 128, 72, 69, 76, 77, 69, 84, 128, 
-    72, 69, 76, 77, 69, 212, 72, 69, 76, 205, 72, 69, 75, 85, 84, 65, 65, 82, 
-    85, 128, 72, 69, 73, 83, 69, 73, 128, 72, 69, 65, 86, 89, 128, 72, 69, 
-    65, 86, 69, 78, 76, 217, 72, 69, 65, 86, 69, 78, 128, 72, 69, 65, 86, 69, 
-    206, 72, 69, 65, 82, 84, 128, 72, 69, 65, 82, 212, 72, 69, 65, 68, 83, 
-    84, 82, 79, 75, 69, 128, 72, 69, 65, 68, 83, 84, 79, 78, 197, 72, 69, 65, 
-    68, 73, 78, 71, 128, 72, 66, 65, 83, 65, 45, 69, 83, 65, 83, 193, 72, 66, 
-    65, 83, 193, 72, 65, 89, 65, 78, 78, 65, 128, 72, 65, 86, 69, 128, 72, 
-    65, 85, 80, 84, 83, 84, 73, 77, 77, 69, 128, 72, 65, 84, 72, 73, 128, 72, 
-    65, 84, 69, 128, 72, 65, 84, 65, 198, 72, 65, 83, 69, 210, 72, 65, 83, 
-    65, 78, 84, 65, 128, 72, 65, 82, 80, 79, 79, 78, 128, 72, 65, 82, 80, 79, 
-    79, 206, 72, 65, 82, 77, 79, 78, 73, 67, 128, 72, 65, 82, 75, 76, 69, 65, 
-    206, 72, 65, 82, 68, 78, 69, 83, 83, 128, 72, 65, 82, 196, 72, 65, 78, 
-    85, 78, 79, 207, 72, 65, 78, 71, 90, 72, 79, 213, 72, 65, 78, 68, 83, 
-    128, 72, 65, 78, 68, 76, 69, 83, 128, 72, 65, 78, 68, 128, 72, 65, 78, 
-    45, 65, 75, 65, 84, 128, 72, 65, 77, 90, 65, 128, 72, 65, 77, 77, 69, 
-    210, 72, 65, 76, 70, 128, 72, 65, 76, 66, 69, 82, 68, 128, 72, 65, 76, 
-    65, 78, 84, 65, 128, 72, 65, 73, 84, 85, 128, 72, 65, 73, 82, 128, 72, 
-    65, 71, 76, 65, 218, 72, 65, 71, 76, 128, 72, 65, 70, 85, 75, 72, 65, 
-    128, 72, 65, 70, 85, 75, 72, 128, 72, 65, 69, 71, 204, 72, 65, 69, 128, 
-    72, 65, 65, 82, 85, 128, 72, 65, 65, 77, 128, 72, 65, 193, 72, 65, 45, 
-    72, 65, 128, 72, 48, 48, 56, 128, 72, 48, 48, 55, 128, 72, 48, 48, 54, 
-    65, 128, 72, 48, 48, 54, 128, 72, 48, 48, 53, 128, 72, 48, 48, 52, 128, 
-    72, 48, 48, 51, 128, 72, 48, 48, 50, 128, 72, 48, 48, 49, 128, 72, 45, 
-    84, 89, 80, 197, 71, 89, 85, 128, 71, 89, 79, 78, 128, 71, 89, 79, 128, 
-    71, 89, 73, 128, 71, 89, 70, 213, 71, 89, 69, 69, 128, 71, 89, 65, 83, 
-    128, 71, 89, 65, 65, 128, 71, 89, 65, 128, 71, 89, 128, 71, 87, 85, 128, 
-    71, 87, 73, 128, 71, 87, 69, 69, 128, 71, 87, 69, 128, 71, 87, 65, 65, 
-    128, 71, 87, 65, 128, 71, 86, 128, 71, 85, 82, 85, 83, 72, 128, 71, 85, 
-    82, 85, 78, 128, 71, 85, 82, 65, 77, 85, 84, 79, 78, 128, 71, 85, 82, 55, 
-    128, 71, 85, 78, 85, 128, 71, 85, 78, 213, 71, 85, 77, 128, 71, 85, 205, 
-    71, 85, 76, 128, 71, 85, 199, 71, 85, 69, 72, 128, 71, 85, 69, 200, 71, 
-    85, 68, 128, 71, 85, 196, 71, 85, 65, 82, 68, 69, 68, 78, 69, 83, 83, 
-    128, 71, 85, 65, 82, 65, 78, 201, 71, 85, 178, 71, 84, 69, 210, 71, 83, 
-    85, 77, 128, 71, 83, 85, 205, 71, 82, 213, 71, 82, 79, 85, 78, 68, 128, 
-    71, 82, 79, 78, 84, 72, 73, 83, 77, 65, 84, 65, 128, 71, 82, 69, 71, 79, 
-    82, 73, 65, 206, 71, 82, 69, 69, 206, 71, 82, 69, 65, 84, 78, 69, 83, 83, 
-    128, 71, 82, 69, 65, 84, 69, 82, 45, 84, 72, 65, 78, 128, 71, 82, 69, 65, 
-    84, 69, 82, 45, 84, 72, 65, 206, 71, 82, 69, 65, 84, 69, 210, 71, 82, 69, 
-    65, 212, 71, 82, 65, 86, 69, 89, 65, 82, 196, 71, 82, 65, 86, 69, 45, 77, 
-    65, 67, 82, 79, 78, 128, 71, 82, 65, 86, 69, 45, 65, 67, 85, 84, 69, 45, 
-    71, 82, 65, 86, 69, 128, 71, 82, 65, 86, 197, 71, 82, 65, 84, 69, 82, 
-    128, 71, 82, 65, 83, 83, 128, 71, 82, 65, 83, 211, 71, 82, 65, 80, 72, 
-    69, 77, 197, 71, 82, 65, 77, 77, 193, 71, 82, 65, 73, 78, 128, 71, 82, 
-    65, 67, 69, 128, 71, 82, 65, 67, 197, 71, 80, 65, 128, 71, 79, 82, 84, 
-    72, 77, 73, 75, 79, 206, 71, 79, 82, 84, 128, 71, 79, 82, 71, 79, 84, 69, 
-    82, 73, 128, 71, 79, 82, 71, 79, 83, 89, 78, 84, 72, 69, 84, 79, 78, 128, 
-    71, 79, 82, 71, 79, 206, 71, 79, 82, 71, 73, 128, 71, 79, 82, 65, 128, 
-    71, 79, 78, 71, 128, 71, 79, 76, 68, 128, 71, 79, 75, 128, 71, 79, 73, 
-    78, 199, 71, 79, 65, 76, 128, 71, 79, 65, 204, 71, 79, 65, 128, 71, 78, 
-    89, 73, 83, 128, 71, 78, 65, 86, 73, 89, 65, 78, 73, 128, 71, 76, 79, 84, 
-    84, 65, 204, 71, 76, 73, 83, 83, 65, 78, 68, 207, 71, 76, 69, 73, 67, 
-    200, 71, 76, 65, 71, 79, 76, 73, 128, 71, 76, 65, 128, 71, 74, 69, 128, 
-    71, 73, 88, 128, 71, 73, 84, 128, 71, 73, 83, 72, 128, 71, 73, 83, 200, 
-    71, 73, 83, 65, 76, 128, 71, 73, 82, 85, 68, 65, 65, 128, 71, 73, 82, 51, 
-    128, 71, 73, 82, 179, 71, 73, 82, 50, 128, 71, 73, 82, 178, 71, 73, 80, 
-    128, 71, 73, 78, 73, 73, 128, 71, 73, 77, 69, 76, 128, 71, 73, 77, 69, 
-    204, 71, 73, 77, 128, 71, 73, 71, 65, 128, 71, 73, 69, 84, 128, 71, 73, 
-    68, 73, 77, 128, 71, 73, 66, 65, 128, 71, 73, 52, 128, 71, 73, 180, 71, 
-    72, 90, 128, 71, 72, 87, 65, 128, 71, 72, 85, 78, 78, 65, 128, 71, 72, 
-    85, 78, 78, 193, 71, 72, 85, 128, 71, 72, 79, 85, 128, 71, 72, 79, 83, 
-    84, 128, 71, 72, 79, 128, 71, 72, 73, 128, 71, 72, 72, 65, 128, 71, 72, 
-    69, 69, 128, 71, 72, 69, 128, 71, 72, 197, 71, 72, 65, 89, 78, 128, 71, 
-    72, 65, 78, 128, 71, 72, 65, 77, 65, 76, 128, 71, 72, 65, 73, 78, 85, 
-    128, 71, 72, 65, 73, 78, 128, 71, 72, 65, 73, 206, 71, 72, 65, 68, 128, 
-    71, 72, 65, 128, 71, 71, 87, 73, 128, 71, 71, 87, 69, 69, 128, 71, 71, 
-    87, 69, 128, 71, 71, 87, 65, 65, 128, 71, 71, 87, 65, 128, 71, 71, 85, 
-    88, 128, 71, 71, 85, 84, 128, 71, 71, 85, 82, 88, 128, 71, 71, 85, 82, 
-    128, 71, 71, 85, 80, 128, 71, 71, 85, 79, 88, 128, 71, 71, 85, 79, 84, 
-    128, 71, 71, 85, 79, 80, 128, 71, 71, 85, 79, 128, 71, 71, 79, 88, 128, 
-    71, 71, 79, 84, 128, 71, 71, 79, 80, 128, 71, 71, 73, 88, 128, 71, 71, 
-    73, 84, 128, 71, 71, 73, 69, 88, 128, 71, 71, 73, 69, 80, 128, 71, 71, 
-    73, 69, 128, 71, 71, 69, 88, 128, 71, 71, 69, 84, 128, 71, 71, 69, 80, 
-    128, 71, 71, 65, 88, 128, 71, 71, 65, 84, 128, 71, 71, 65, 80, 128, 71, 
-    71, 65, 65, 128, 71, 69, 84, 193, 71, 69, 83, 72, 85, 128, 71, 69, 83, 
-    72, 84, 73, 78, 128, 71, 69, 83, 72, 84, 73, 206, 71, 69, 83, 72, 50, 
-    128, 71, 69, 82, 83, 72, 65, 89, 73, 77, 128, 71, 69, 82, 77, 65, 206, 
-    71, 69, 82, 69, 83, 72, 128, 71, 69, 82, 69, 83, 200, 71, 69, 79, 77, 69, 
-    84, 82, 73, 67, 65, 76, 76, 217, 71, 69, 79, 77, 69, 84, 82, 73, 195, 71, 
-    69, 78, 84, 76, 197, 71, 69, 78, 73, 84, 73, 86, 69, 128, 71, 69, 78, 73, 
-    75, 201, 71, 69, 78, 69, 82, 73, 195, 71, 69, 77, 73, 78, 73, 128, 71, 
-    69, 77, 73, 78, 65, 84, 73, 79, 206, 71, 69, 68, 79, 76, 65, 128, 71, 69, 
-    68, 69, 128, 71, 69, 66, 207, 71, 69, 66, 193, 71, 69, 65, 82, 128, 71, 
-    69, 65, 210, 71, 68, 65, 78, 128, 71, 67, 73, 71, 128, 71, 67, 65, 206, 
-    71, 66, 79, 78, 128, 71, 66, 69, 78, 128, 71, 66, 65, 75, 85, 82, 85, 78, 
-    69, 78, 128, 71, 66, 128, 71, 65, 89, 65, 78, 85, 75, 73, 84, 84, 65, 
-    128, 71, 65, 89, 65, 78, 78, 65, 128, 71, 65, 89, 128, 71, 65, 85, 78, 
-    84, 76, 69, 84, 128, 71, 65, 84, 72, 69, 82, 73, 78, 71, 128, 71, 65, 84, 
-    72, 69, 82, 73, 78, 199, 71, 65, 84, 69, 128, 71, 65, 83, 72, 65, 78, 
-    128, 71, 65, 82, 83, 72, 85, 78, 73, 128, 71, 65, 82, 79, 78, 128, 71, 
-    65, 82, 77, 69, 78, 84, 128, 71, 65, 82, 51, 128, 71, 65, 80, 80, 69, 
-    196, 71, 65, 208, 71, 65, 78, 77, 65, 128, 71, 65, 78, 71, 73, 65, 128, 
-    71, 65, 78, 68, 193, 71, 65, 78, 50, 128, 71, 65, 78, 178, 71, 65, 77, 
-    77, 65, 128, 71, 65, 77, 76, 65, 128, 71, 65, 77, 76, 128, 71, 65, 77, 
-    65, 78, 128, 71, 65, 77, 65, 76, 128, 71, 65, 77, 65, 204, 71, 65, 77, 
-    128, 71, 65, 71, 128, 71, 65, 70, 128, 71, 65, 198, 71, 65, 69, 84, 84, 
-    65, 45, 80, 73, 76, 76, 65, 128, 71, 65, 68, 79, 76, 128, 71, 65, 68, 
-    128, 71, 65, 196, 71, 65, 66, 65, 128, 71, 65, 66, 193, 71, 65, 65, 70, 
-    85, 128, 71, 65, 178, 71, 48, 53, 52, 128, 71, 48, 53, 51, 128, 71, 48, 
-    53, 50, 128, 71, 48, 53, 49, 128, 71, 48, 53, 48, 128, 71, 48, 52, 57, 
-    128, 71, 48, 52, 56, 128, 71, 48, 52, 55, 128, 71, 48, 52, 54, 128, 71, 
-    48, 52, 53, 65, 128, 71, 48, 52, 53, 128, 71, 48, 52, 52, 128, 71, 48, 
-    52, 51, 65, 128, 71, 48, 52, 51, 128, 71, 48, 52, 50, 128, 71, 48, 52, 
-    49, 128, 71, 48, 52, 48, 128, 71, 48, 51, 57, 128, 71, 48, 51, 56, 128, 
-    71, 48, 51, 55, 65, 128, 71, 48, 51, 55, 128, 71, 48, 51, 54, 65, 128, 
-    71, 48, 51, 54, 128, 71, 48, 51, 53, 128, 71, 48, 51, 52, 128, 71, 48, 
-    51, 51, 128, 71, 48, 51, 50, 128, 71, 48, 51, 49, 128, 71, 48, 51, 48, 
-    128, 71, 48, 50, 57, 128, 71, 48, 50, 56, 128, 71, 48, 50, 55, 128, 71, 
-    48, 50, 54, 65, 128, 71, 48, 50, 54, 128, 71, 48, 50, 53, 128, 71, 48, 
-    50, 52, 128, 71, 48, 50, 51, 128, 71, 48, 50, 50, 128, 71, 48, 50, 49, 
-    128, 71, 48, 50, 48, 65, 128, 71, 48, 50, 48, 128, 71, 48, 49, 57, 128, 
-    71, 48, 49, 56, 128, 71, 48, 49, 55, 128, 71, 48, 49, 54, 128, 71, 48, 
-    49, 53, 128, 71, 48, 49, 52, 128, 71, 48, 49, 51, 128, 71, 48, 49, 50, 
-    128, 71, 48, 49, 49, 65, 128, 71, 48, 49, 49, 128, 71, 48, 49, 48, 128, 
-    71, 48, 48, 57, 128, 71, 48, 48, 56, 128, 71, 48, 48, 55, 66, 128, 71, 
-    48, 48, 55, 65, 128, 71, 48, 48, 55, 128, 71, 48, 48, 54, 65, 128, 71, 
-    48, 48, 54, 128, 71, 48, 48, 53, 128, 71, 48, 48, 52, 128, 71, 48, 48, 
-    51, 128, 71, 48, 48, 50, 128, 71, 48, 48, 49, 128, 70, 89, 88, 128, 70, 
-    89, 84, 128, 70, 89, 80, 128, 70, 89, 65, 128, 70, 89, 128, 70, 87, 73, 
-    128, 70, 87, 69, 69, 128, 70, 87, 69, 128, 70, 87, 65, 65, 128, 70, 87, 
-    65, 128, 70, 85, 88, 128, 70, 85, 84, 128, 70, 85, 83, 69, 128, 70, 85, 
-    83, 193, 70, 85, 82, 88, 128, 70, 85, 82, 128, 70, 85, 80, 128, 70, 85, 
-    78, 69, 82, 65, 204, 70, 85, 78, 67, 84, 73, 79, 78, 128, 70, 85, 76, 76, 
-    78, 69, 83, 83, 128, 70, 85, 76, 204, 70, 85, 69, 204, 70, 84, 72, 79, 
-    82, 193, 70, 82, 79, 87, 78, 73, 78, 199, 70, 82, 79, 87, 78, 128, 70, 
-    82, 79, 78, 84, 45, 84, 73, 76, 84, 69, 196, 70, 82, 79, 205, 70, 82, 79, 
-    71, 128, 70, 82, 73, 84, 85, 128, 70, 82, 73, 67, 65, 84, 73, 86, 69, 
-    128, 70, 82, 69, 84, 66, 79, 65, 82, 68, 128, 70, 82, 69, 78, 67, 200, 
-    70, 82, 69, 197, 70, 82, 65, 78, 195, 70, 82, 65, 77, 69, 128, 70, 82, 
-    65, 71, 82, 65, 78, 84, 128, 70, 82, 65, 71, 77, 69, 78, 84, 128, 70, 82, 
-    65, 67, 84, 73, 79, 206, 70, 79, 88, 128, 70, 79, 85, 82, 84, 69, 69, 78, 
-    128, 70, 79, 85, 82, 84, 69, 69, 206, 70, 79, 85, 82, 45, 83, 84, 82, 73, 
-    78, 199, 70, 79, 85, 82, 45, 80, 69, 82, 45, 69, 205, 70, 79, 85, 82, 45, 
-    76, 73, 78, 197, 70, 79, 85, 210, 70, 79, 85, 78, 84, 65, 73, 78, 128, 
-    70, 79, 83, 84, 69, 82, 73, 78, 71, 128, 70, 79, 82, 84, 89, 128, 70, 79, 
-    82, 84, 217, 70, 79, 82, 84, 69, 128, 70, 79, 82, 77, 211, 70, 79, 82, 
-    77, 65, 84, 84, 73, 78, 71, 128, 70, 79, 82, 75, 69, 196, 70, 79, 82, 67, 
-    69, 83, 128, 70, 79, 82, 67, 69, 128, 70, 79, 80, 128, 70, 79, 79, 84, 
-    83, 84, 79, 79, 76, 128, 70, 79, 79, 84, 78, 79, 84, 197, 70, 79, 79, 84, 
-    128, 70, 79, 79, 128, 70, 79, 78, 71, 77, 65, 78, 128, 70, 79, 77, 128, 
-    70, 79, 76, 76, 89, 128, 70, 79, 76, 76, 79, 87, 73, 78, 71, 128, 70, 79, 
-    128, 70, 77, 128, 70, 76, 89, 128, 70, 76, 85, 84, 69, 128, 70, 76, 79, 
-    87, 69, 82, 128, 70, 76, 79, 87, 69, 210, 70, 76, 79, 85, 82, 73, 83, 72, 
-    128, 70, 76, 79, 82, 69, 84, 84, 69, 128, 70, 76, 79, 82, 65, 204, 70, 
-    76, 79, 79, 82, 128, 70, 76, 73, 80, 128, 70, 76, 73, 71, 72, 84, 128, 
-    70, 76, 69, 88, 85, 83, 128, 70, 76, 69, 85, 82, 45, 68, 69, 45, 76, 73, 
-    83, 128, 70, 76, 65, 84, 84, 69, 78, 69, 196, 70, 76, 65, 84, 78, 69, 83, 
-    83, 128, 70, 76, 65, 84, 128, 70, 76, 65, 212, 70, 76, 65, 71, 45, 53, 
-    128, 70, 76, 65, 71, 45, 52, 128, 70, 76, 65, 71, 45, 51, 128, 70, 76, 
-    65, 71, 45, 50, 128, 70, 76, 65, 71, 45, 49, 128, 70, 76, 65, 71, 128, 
-    70, 76, 65, 199, 70, 76, 65, 128, 70, 76, 128, 70, 73, 88, 69, 68, 45, 
-    70, 79, 82, 205, 70, 73, 88, 128, 70, 73, 86, 69, 45, 76, 73, 78, 197, 
-    70, 73, 86, 197, 70, 73, 84, 65, 128, 70, 73, 84, 128, 70, 73, 83, 72, 
-    72, 79, 79, 75, 128, 70, 73, 83, 72, 72, 79, 79, 203, 70, 73, 83, 72, 69, 
-    89, 69, 128, 70, 73, 83, 72, 128, 70, 73, 83, 200, 70, 73, 82, 83, 212, 
-    70, 73, 82, 69, 128, 70, 73, 80, 128, 70, 73, 78, 73, 84, 197, 70, 73, 
-    78, 71, 69, 82, 78, 65, 73, 76, 83, 128, 70, 73, 78, 71, 69, 82, 69, 196, 
-    70, 73, 78, 65, 78, 67, 73, 65, 76, 128, 70, 73, 76, 76, 69, 82, 128, 70, 
-    73, 76, 76, 69, 196, 70, 73, 76, 76, 128, 70, 73, 76, 204, 70, 73, 76, 
-    197, 70, 73, 73, 128, 70, 73, 71, 85, 82, 69, 45, 51, 128, 70, 73, 71, 
-    85, 82, 69, 45, 50, 128, 70, 73, 71, 85, 82, 69, 45, 49, 128, 70, 73, 71, 
-    85, 82, 197, 70, 73, 71, 72, 84, 128, 70, 73, 70, 84, 89, 128, 70, 73, 
-    70, 84, 217, 70, 73, 70, 84, 72, 83, 128, 70, 73, 70, 84, 72, 128, 70, 
-    73, 70, 84, 69, 69, 78, 128, 70, 73, 70, 84, 69, 69, 206, 70, 73, 69, 76, 
-    68, 128, 70, 72, 84, 79, 82, 193, 70, 70, 76, 128, 70, 70, 73, 128, 70, 
-    69, 83, 84, 73, 86, 65, 76, 128, 70, 69, 82, 82, 89, 128, 70, 69, 82, 77, 
-    65, 84, 65, 128, 70, 69, 82, 77, 65, 84, 193, 70, 69, 79, 200, 70, 69, 
-    78, 199, 70, 69, 78, 67, 69, 128, 70, 69, 77, 73, 78, 73, 78, 197, 70, 
-    69, 77, 65, 76, 69, 128, 70, 69, 77, 65, 76, 197, 70, 69, 76, 76, 79, 87, 
-    83, 72, 73, 80, 128, 70, 69, 73, 128, 70, 69, 72, 213, 70, 69, 72, 128, 
-    70, 69, 200, 70, 69, 69, 78, 71, 128, 70, 69, 69, 68, 128, 70, 69, 69, 
-    196, 70, 69, 69, 128, 70, 69, 66, 82, 85, 65, 82, 89, 128, 70, 69, 65, 
-    84, 72, 69, 82, 128, 70, 69, 65, 84, 72, 69, 210, 70, 69, 65, 82, 78, 
-    128, 70, 65, 89, 65, 78, 78, 65, 128, 70, 65, 88, 128, 70, 65, 84, 72, 
-    69, 82, 128, 70, 65, 84, 72, 65, 84, 65, 78, 128, 70, 65, 84, 72, 65, 84, 
-    65, 206, 70, 65, 84, 72, 65, 128, 70, 65, 84, 72, 193, 70, 65, 84, 128, 
-    70, 65, 82, 83, 201, 70, 65, 80, 128, 70, 65, 78, 71, 128, 70, 65, 78, 
-    69, 82, 79, 83, 73, 211, 70, 65, 78, 128, 70, 65, 77, 73, 76, 89, 128, 
-    70, 65, 76, 76, 73, 78, 199, 70, 65, 73, 76, 85, 82, 69, 128, 70, 65, 73, 
-    72, 85, 128, 70, 65, 72, 82, 69, 78, 72, 69, 73, 84, 128, 70, 65, 67, 84, 
-    79, 210, 70, 65, 67, 83, 73, 77, 73, 76, 197, 70, 65, 67, 69, 45, 54, 
-    128, 70, 65, 67, 69, 45, 53, 128, 70, 65, 67, 69, 45, 52, 128, 70, 65, 
-    67, 69, 45, 51, 128, 70, 65, 67, 69, 45, 50, 128, 70, 65, 67, 69, 45, 49, 
-    128, 70, 65, 65, 77, 65, 69, 128, 70, 65, 65, 73, 128, 70, 65, 65, 70, 
-    85, 128, 70, 65, 65, 128, 70, 48, 53, 51, 128, 70, 48, 53, 50, 128, 70, 
-    48, 53, 49, 67, 128, 70, 48, 53, 49, 66, 128, 70, 48, 53, 49, 65, 128, 
-    70, 48, 53, 49, 128, 70, 48, 53, 48, 128, 70, 48, 52, 57, 128, 70, 48, 
-    52, 56, 128, 70, 48, 52, 55, 65, 128, 70, 48, 52, 55, 128, 70, 48, 52, 
-    54, 65, 128, 70, 48, 52, 54, 128, 70, 48, 52, 53, 65, 128, 70, 48, 52, 
-    53, 128, 70, 48, 52, 52, 128, 70, 48, 52, 51, 128, 70, 48, 52, 50, 128, 
-    70, 48, 52, 49, 128, 70, 48, 52, 48, 128, 70, 48, 51, 57, 128, 70, 48, 
-    51, 56, 65, 128, 70, 48, 51, 56, 128, 70, 48, 51, 55, 65, 128, 70, 48, 
-    51, 55, 128, 70, 48, 51, 54, 128, 70, 48, 51, 53, 128, 70, 48, 51, 52, 
-    128, 70, 48, 51, 51, 128, 70, 48, 51, 50, 128, 70, 48, 51, 49, 65, 128, 
-    70, 48, 51, 49, 128, 70, 48, 51, 48, 128, 70, 48, 50, 57, 128, 70, 48, 
-    50, 56, 128, 70, 48, 50, 55, 128, 70, 48, 50, 54, 128, 70, 48, 50, 53, 
-    128, 70, 48, 50, 52, 128, 70, 48, 50, 51, 128, 70, 48, 50, 50, 128, 70, 
-    48, 50, 49, 65, 128, 70, 48, 50, 49, 128, 70, 48, 50, 48, 128, 70, 48, 
-    49, 57, 128, 70, 48, 49, 56, 128, 70, 48, 49, 55, 128, 70, 48, 49, 54, 
-    128, 70, 48, 49, 53, 128, 70, 48, 49, 52, 128, 70, 48, 49, 51, 65, 128, 
-    70, 48, 49, 51, 128, 70, 48, 49, 50, 128, 70, 48, 49, 49, 128, 70, 48, 
-    49, 48, 128, 70, 48, 48, 57, 128, 70, 48, 48, 56, 128, 70, 48, 48, 55, 
-    128, 70, 48, 48, 54, 128, 70, 48, 48, 53, 128, 70, 48, 48, 52, 128, 70, 
-    48, 48, 51, 128, 70, 48, 48, 50, 128, 70, 48, 48, 49, 65, 128, 70, 48, 
-    48, 49, 128, 69, 90, 200, 69, 90, 69, 78, 128, 69, 90, 69, 206, 69, 90, 
-    128, 69, 89, 66, 69, 89, 70, 73, 76, 73, 128, 69, 89, 65, 78, 78, 65, 
-    128, 69, 88, 84, 82, 65, 45, 76, 79, 215, 69, 88, 84, 82, 65, 45, 72, 73, 
-    71, 200, 69, 88, 84, 69, 78, 83, 73, 79, 78, 128, 69, 88, 84, 69, 78, 68, 
-    69, 196, 69, 88, 80, 79, 78, 69, 78, 212, 69, 88, 79, 128, 69, 88, 207, 
-    69, 88, 73, 83, 84, 83, 128, 69, 88, 73, 83, 84, 128, 69, 88, 72, 65, 85, 
-    83, 84, 73, 79, 78, 128, 69, 88, 67, 76, 65, 77, 65, 84, 73, 79, 78, 128, 
-    69, 88, 67, 76, 65, 77, 65, 84, 73, 79, 206, 69, 88, 67, 69, 83, 83, 128, 
-    69, 88, 67, 69, 76, 76, 69, 78, 84, 128, 69, 87, 69, 128, 69, 86, 69, 78, 
-    73, 78, 71, 128, 69, 85, 82, 79, 45, 67, 85, 82, 82, 69, 78, 67, 217, 69, 
-    85, 82, 207, 69, 85, 76, 69, 210, 69, 85, 45, 85, 128, 69, 85, 45, 79, 
-    128, 69, 85, 45, 69, 85, 128, 69, 85, 45, 69, 79, 128, 69, 85, 45, 69, 
-    128, 69, 85, 45, 65, 128, 69, 84, 78, 65, 72, 84, 65, 128, 69, 84, 72, 
-    69, 204, 69, 84, 69, 82, 79, 206, 69, 84, 69, 82, 78, 73, 84, 89, 128, 
-    69, 83, 85, 75, 85, 85, 68, 79, 128, 69, 83, 84, 73, 77, 65, 84, 69, 83, 
-    128, 69, 83, 84, 73, 77, 65, 84, 69, 196, 69, 83, 72, 69, 51, 128, 69, 
-    83, 72, 50, 49, 128, 69, 83, 72, 178, 69, 83, 72, 49, 54, 128, 69, 83, 
-    67, 65, 80, 69, 128, 69, 83, 45, 84, 69, 128, 69, 82, 82, 79, 82, 45, 66, 
-    65, 82, 82, 69, 196, 69, 82, 82, 128, 69, 82, 73, 78, 50, 128, 69, 82, 
-    71, 128, 69, 82, 65, 83, 197, 69, 81, 85, 73, 86, 65, 76, 69, 78, 212, 
-    69, 81, 85, 73, 68, 128, 69, 81, 85, 73, 65, 78, 71, 85, 76, 65, 210, 69, 
-    81, 85, 65, 76, 83, 128, 69, 81, 85, 65, 76, 211, 69, 81, 85, 65, 76, 
-    128, 69, 80, 83, 73, 76, 79, 78, 128, 69, 80, 83, 73, 76, 79, 206, 69, 
-    80, 73, 71, 82, 65, 80, 72, 73, 195, 69, 80, 73, 68, 65, 85, 82, 69, 65, 
-    206, 69, 80, 69, 78, 84, 72, 69, 84, 73, 195, 69, 80, 69, 71, 69, 82, 77, 
-    65, 128, 69, 79, 76, 72, 88, 128, 69, 79, 72, 128, 69, 78, 89, 128, 69, 
-    78, 86, 69, 76, 79, 80, 69, 128, 69, 78, 85, 77, 69, 82, 65, 84, 73, 79, 
-    206, 69, 78, 84, 82, 89, 45, 50, 128, 69, 78, 84, 82, 89, 45, 49, 128, 
-    69, 78, 84, 82, 89, 128, 69, 78, 84, 72, 85, 83, 73, 65, 83, 77, 128, 69, 
-    78, 84, 69, 82, 80, 82, 73, 83, 69, 128, 69, 78, 84, 69, 82, 73, 78, 199, 
-    69, 78, 84, 69, 82, 128, 69, 78, 84, 69, 210, 69, 78, 81, 85, 73, 82, 89, 
-    128, 69, 78, 79, 211, 69, 78, 78, 128, 69, 78, 76, 65, 82, 71, 69, 77, 
-    69, 78, 84, 128, 69, 78, 68, 79, 70, 79, 78, 79, 78, 128, 69, 78, 68, 73, 
-    78, 199, 69, 78, 68, 69, 80, 128, 69, 78, 68, 69, 65, 86, 79, 85, 82, 
-    128, 69, 78, 196, 69, 78, 67, 79, 85, 78, 84, 69, 82, 83, 128, 69, 78, 
-    67, 76, 79, 83, 85, 82, 69, 128, 69, 78, 67, 76, 79, 83, 73, 78, 199, 69, 
-    78, 67, 128, 69, 78, 65, 82, 88, 73, 211, 69, 78, 65, 82, 77, 79, 78, 73, 
-    79, 211, 69, 77, 80, 84, 217, 69, 77, 80, 72, 65, 84, 73, 195, 69, 77, 
-    80, 72, 65, 83, 73, 211, 69, 77, 66, 82, 79, 73, 68, 69, 82, 89, 128, 69, 
-    77, 66, 69, 76, 76, 73, 83, 72, 77, 69, 78, 84, 128, 69, 77, 66, 69, 68, 
-    68, 73, 78, 71, 128, 69, 76, 84, 128, 69, 76, 76, 73, 80, 83, 73, 83, 
-    128, 69, 76, 76, 73, 80, 83, 69, 128, 69, 76, 73, 70, 73, 128, 69, 76, 
-    69, 86, 69, 78, 128, 69, 76, 69, 86, 69, 206, 69, 76, 69, 77, 69, 78, 
-    212, 69, 76, 69, 67, 84, 82, 73, 67, 65, 204, 69, 76, 69, 67, 84, 82, 73, 
-    195, 69, 76, 65, 70, 82, 79, 78, 128, 69, 75, 83, 84, 82, 69, 80, 84, 79, 
-    78, 128, 69, 75, 83, 128, 69, 75, 70, 79, 78, 73, 84, 73, 75, 79, 78, 
-    128, 69, 75, 65, 82, 65, 128, 69, 74, 69, 67, 212, 69, 73, 83, 128, 69, 
-    73, 71, 72, 84, 89, 128, 69, 73, 71, 72, 84, 217, 69, 73, 71, 72, 84, 72, 
-    83, 128, 69, 73, 71, 72, 84, 72, 211, 69, 73, 71, 72, 84, 72, 128, 69, 
-    73, 71, 72, 84, 69, 69, 78, 128, 69, 73, 71, 72, 84, 69, 69, 206, 69, 73, 
-    69, 128, 69, 72, 87, 65, 218, 69, 71, 89, 80, 84, 79, 76, 79, 71, 73, 67, 
-    65, 204, 69, 71, 73, 82, 128, 69, 71, 71, 128, 69, 69, 89, 65, 78, 78, 
-    65, 128, 69, 69, 75, 65, 65, 128, 69, 69, 66, 69, 69, 70, 73, 76, 73, 
-    128, 69, 68, 73, 84, 79, 82, 73, 65, 204, 69, 68, 73, 78, 128, 69, 68, 
-    68, 128, 69, 67, 200, 69, 66, 69, 70, 73, 76, 73, 128, 69, 65, 83, 84, 
-    69, 82, 206, 69, 65, 83, 212, 69, 65, 82, 84, 72, 76, 217, 69, 65, 82, 
-    84, 72, 128, 69, 65, 82, 84, 200, 69, 65, 82, 76, 217, 69, 65, 77, 72, 
-    65, 78, 67, 72, 79, 76, 76, 128, 69, 65, 71, 76, 69, 128, 69, 65, 68, 72, 
-    65, 68, 72, 128, 69, 65, 66, 72, 65, 68, 72, 128, 69, 178, 69, 48, 51, 
-    56, 128, 69, 48, 51, 55, 128, 69, 48, 51, 54, 128, 69, 48, 51, 52, 65, 
-    128, 69, 48, 51, 52, 128, 69, 48, 51, 51, 128, 69, 48, 51, 50, 128, 69, 
-    48, 51, 49, 128, 69, 48, 51, 48, 128, 69, 48, 50, 57, 128, 69, 48, 50, 
-    56, 65, 128, 69, 48, 50, 56, 128, 69, 48, 50, 55, 128, 69, 48, 50, 54, 
-    128, 69, 48, 50, 53, 128, 69, 48, 50, 52, 128, 69, 48, 50, 51, 128, 69, 
-    48, 50, 50, 128, 69, 48, 50, 49, 128, 69, 48, 50, 48, 65, 128, 69, 48, 
-    50, 48, 128, 69, 48, 49, 57, 128, 69, 48, 49, 56, 128, 69, 48, 49, 55, 
-    65, 128, 69, 48, 49, 55, 128, 69, 48, 49, 54, 65, 128, 69, 48, 49, 54, 
-    128, 69, 48, 49, 53, 128, 69, 48, 49, 52, 128, 69, 48, 49, 51, 128, 69, 
-    48, 49, 50, 128, 69, 48, 49, 49, 128, 69, 48, 49, 48, 128, 69, 48, 48, 
-    57, 65, 128, 69, 48, 48, 57, 128, 69, 48, 48, 56, 65, 128, 69, 48, 48, 
-    56, 128, 69, 48, 48, 55, 128, 69, 48, 48, 54, 128, 69, 48, 48, 53, 128, 
-    69, 48, 48, 52, 128, 69, 48, 48, 51, 128, 69, 48, 48, 50, 128, 69, 48, 
-    48, 49, 128, 68, 90, 90, 69, 128, 68, 90, 87, 69, 128, 68, 90, 85, 128, 
-    68, 90, 79, 128, 68, 90, 74, 69, 128, 68, 90, 73, 128, 68, 90, 72, 69, 
-    128, 68, 90, 72, 65, 128, 68, 90, 69, 76, 79, 128, 68, 90, 69, 69, 128, 
-    68, 90, 69, 128, 68, 90, 65, 128, 68, 90, 128, 68, 218, 68, 89, 79, 128, 
-    68, 89, 207, 68, 89, 69, 72, 128, 68, 89, 69, 200, 68, 87, 79, 128, 68, 
-    87, 69, 128, 68, 87, 65, 128, 68, 86, 73, 83, 86, 65, 82, 65, 128, 68, 
-    86, 128, 68, 85, 84, 73, 69, 83, 128, 68, 85, 82, 65, 84, 73, 79, 78, 
-    128, 68, 85, 82, 50, 128, 68, 85, 80, 79, 78, 68, 73, 85, 211, 68, 85, 
-    79, 88, 128, 68, 85, 79, 128, 68, 85, 78, 52, 128, 68, 85, 78, 51, 128, 
-    68, 85, 78, 179, 68, 85, 78, 128, 68, 85, 77, 128, 68, 85, 76, 128, 68, 
-    85, 204, 68, 85, 72, 128, 68, 85, 71, 85, 68, 128, 68, 85, 66, 50, 128, 
-    68, 85, 66, 128, 68, 85, 194, 68, 213, 68, 82, 89, 128, 68, 82, 217, 68, 
-    82, 85, 77, 128, 68, 82, 85, 205, 68, 82, 79, 80, 83, 128, 68, 82, 79, 
-    80, 45, 83, 72, 65, 68, 79, 87, 69, 196, 68, 82, 73, 86, 69, 128, 68, 82, 
-    73, 86, 197, 68, 82, 73, 204, 68, 82, 65, 85, 71, 72, 84, 211, 68, 82, 
-    65, 71, 79, 78, 128, 68, 82, 65, 70, 84, 73, 78, 199, 68, 82, 65, 67, 72, 
-    77, 65, 83, 128, 68, 82, 65, 67, 72, 77, 65, 128, 68, 82, 65, 67, 72, 77, 
-    193, 68, 79, 87, 78, 87, 65, 82, 68, 83, 128, 68, 79, 87, 78, 87, 65, 82, 
-    68, 211, 68, 79, 87, 78, 45, 80, 79, 73, 78, 84, 73, 78, 199, 68, 79, 87, 
-    78, 128, 68, 79, 86, 69, 128, 68, 79, 85, 66, 84, 128, 68, 79, 85, 66, 
-    76, 69, 196, 68, 79, 85, 66, 76, 69, 45, 76, 73, 78, 197, 68, 79, 85, 66, 
-    76, 69, 45, 69, 78, 68, 69, 196, 68, 79, 85, 66, 76, 69, 128, 68, 79, 84, 
-    84, 69, 68, 45, 80, 128, 68, 79, 84, 84, 69, 68, 45, 78, 128, 68, 79, 84, 
-    84, 69, 68, 45, 76, 128, 68, 79, 84, 84, 69, 68, 128, 68, 79, 84, 84, 69, 
-    196, 68, 79, 84, 83, 45, 56, 128, 68, 79, 84, 83, 45, 55, 56, 128, 68, 
-    79, 84, 83, 45, 55, 128, 68, 79, 84, 83, 45, 54, 56, 128, 68, 79, 84, 83, 
-    45, 54, 55, 56, 128, 68, 79, 84, 83, 45, 54, 55, 128, 68, 79, 84, 83, 45, 
-    54, 128, 68, 79, 84, 83, 45, 53, 56, 128, 68, 79, 84, 83, 45, 53, 55, 56, 
-    128, 68, 79, 84, 83, 45, 53, 55, 128, 68, 79, 84, 83, 45, 53, 54, 56, 
-    128, 68, 79, 84, 83, 45, 53, 54, 55, 56, 128, 68, 79, 84, 83, 45, 53, 54, 
-    55, 128, 68, 79, 84, 83, 45, 53, 54, 128, 68, 79, 84, 83, 45, 53, 128, 
-    68, 79, 84, 83, 45, 52, 56, 128, 68, 79, 84, 83, 45, 52, 55, 56, 128, 68, 
-    79, 84, 83, 45, 52, 55, 128, 68, 79, 84, 83, 45, 52, 54, 56, 128, 68, 79, 
-    84, 83, 45, 52, 54, 55, 56, 128, 68, 79, 84, 83, 45, 52, 54, 55, 128, 68, 
-    79, 84, 83, 45, 52, 54, 128, 68, 79, 84, 83, 45, 52, 53, 56, 128, 68, 79, 
-    84, 83, 45, 52, 53, 55, 56, 128, 68, 79, 84, 83, 45, 52, 53, 55, 128, 68, 
-    79, 84, 83, 45, 52, 53, 54, 56, 128, 68, 79, 84, 83, 45, 52, 53, 54, 55, 
-    56, 128, 68, 79, 84, 83, 45, 52, 53, 54, 55, 128, 68, 79, 84, 83, 45, 52, 
-    53, 54, 128, 68, 79, 84, 83, 45, 52, 53, 128, 68, 79, 84, 83, 45, 52, 
-    128, 68, 79, 84, 83, 45, 51, 56, 128, 68, 79, 84, 83, 45, 51, 55, 56, 
-    128, 68, 79, 84, 83, 45, 51, 55, 128, 68, 79, 84, 83, 45, 51, 54, 56, 
-    128, 68, 79, 84, 83, 45, 51, 54, 55, 56, 128, 68, 79, 84, 83, 45, 51, 54, 
-    55, 128, 68, 79, 84, 83, 45, 51, 54, 128, 68, 79, 84, 83, 45, 51, 53, 56, 
-    128, 68, 79, 84, 83, 45, 51, 53, 55, 56, 128, 68, 79, 84, 83, 45, 51, 53, 
-    55, 128, 68, 79, 84, 83, 45, 51, 53, 54, 56, 128, 68, 79, 84, 83, 45, 51, 
-    53, 54, 55, 56, 128, 68, 79, 84, 83, 45, 51, 53, 54, 55, 128, 68, 79, 84, 
-    83, 45, 51, 53, 54, 128, 68, 79, 84, 83, 45, 51, 53, 128, 68, 79, 84, 83, 
-    45, 51, 52, 56, 128, 68, 79, 84, 83, 45, 51, 52, 55, 56, 128, 68, 79, 84, 
-    83, 45, 51, 52, 55, 128, 68, 79, 84, 83, 45, 51, 52, 54, 56, 128, 68, 79, 
-    84, 83, 45, 51, 52, 54, 55, 56, 128, 68, 79, 84, 83, 45, 51, 52, 54, 55, 
-    128, 68, 79, 84, 83, 45, 51, 52, 54, 128, 68, 79, 84, 83, 45, 51, 52, 53, 
-    56, 128, 68, 79, 84, 83, 45, 51, 52, 53, 55, 56, 128, 68, 79, 84, 83, 45, 
-    51, 52, 53, 55, 128, 68, 79, 84, 83, 45, 51, 52, 53, 54, 56, 128, 68, 79, 
-    84, 83, 45, 51, 52, 53, 54, 55, 56, 128, 68, 79, 84, 83, 45, 51, 52, 53, 
-    54, 55, 128, 68, 79, 84, 83, 45, 51, 52, 53, 54, 128, 68, 79, 84, 83, 45, 
-    51, 52, 53, 128, 68, 79, 84, 83, 45, 51, 52, 128, 68, 79, 84, 83, 45, 51, 
-    128, 68, 79, 84, 83, 45, 50, 56, 128, 68, 79, 84, 83, 45, 50, 55, 56, 
-    128, 68, 79, 84, 83, 45, 50, 55, 128, 68, 79, 84, 83, 45, 50, 54, 56, 
-    128, 68, 79, 84, 83, 45, 50, 54, 55, 56, 128, 68, 79, 84, 83, 45, 50, 54, 
-    55, 128, 68, 79, 84, 83, 45, 50, 54, 128, 68, 79, 84, 83, 45, 50, 53, 56, 
-    128, 68, 79, 84, 83, 45, 50, 53, 55, 56, 128, 68, 79, 84, 83, 45, 50, 53, 
-    55, 128, 68, 79, 84, 83, 45, 50, 53, 54, 56, 128, 68, 79, 84, 83, 45, 50, 
-    53, 54, 55, 56, 128, 68, 79, 84, 83, 45, 50, 53, 54, 55, 128, 68, 79, 84, 
-    83, 45, 50, 53, 54, 128, 68, 79, 84, 83, 45, 50, 53, 128, 68, 79, 84, 83, 
-    45, 50, 52, 56, 128, 68, 79, 84, 83, 45, 50, 52, 55, 56, 128, 68, 79, 84, 
-    83, 45, 50, 52, 55, 128, 68, 79, 84, 83, 45, 50, 52, 54, 56, 128, 68, 79, 
-    84, 83, 45, 50, 52, 54, 55, 56, 128, 68, 79, 84, 83, 45, 50, 52, 54, 55, 
-    128, 68, 79, 84, 83, 45, 50, 52, 54, 128, 68, 79, 84, 83, 45, 50, 52, 53, 
-    56, 128, 68, 79, 84, 83, 45, 50, 52, 53, 55, 56, 128, 68, 79, 84, 83, 45, 
-    50, 52, 53, 55, 128, 68, 79, 84, 83, 45, 50, 52, 53, 54, 56, 128, 68, 79, 
-    84, 83, 45, 50, 52, 53, 54, 55, 56, 128, 68, 79, 84, 83, 45, 50, 52, 53, 
-    54, 55, 128, 68, 79, 84, 83, 45, 50, 52, 53, 54, 128, 68, 79, 84, 83, 45, 
-    50, 52, 53, 128, 68, 79, 84, 83, 45, 50, 52, 128, 68, 79, 84, 83, 45, 50, 
-    51, 56, 128, 68, 79, 84, 83, 45, 50, 51, 55, 56, 128, 68, 79, 84, 83, 45, 
-    50, 51, 55, 128, 68, 79, 84, 83, 45, 50, 51, 54, 56, 128, 68, 79, 84, 83, 
-    45, 50, 51, 54, 55, 56, 128, 68, 79, 84, 83, 45, 50, 51, 54, 55, 128, 68, 
-    79, 84, 83, 45, 50, 51, 54, 128, 68, 79, 84, 83, 45, 50, 51, 53, 56, 128, 
-    68, 79, 84, 83, 45, 50, 51, 53, 55, 56, 128, 68, 79, 84, 83, 45, 50, 51, 
-    53, 55, 128, 68, 79, 84, 83, 45, 50, 51, 53, 54, 56, 128, 68, 79, 84, 83, 
-    45, 50, 51, 53, 54, 55, 56, 128, 68, 79, 84, 83, 45, 50, 51, 53, 54, 55, 
-    128, 68, 79, 84, 83, 45, 50, 51, 53, 54, 128, 68, 79, 84, 83, 45, 50, 51, 
-    53, 128, 68, 79, 84, 83, 45, 50, 51, 52, 56, 128, 68, 79, 84, 83, 45, 50, 
-    51, 52, 55, 56, 128, 68, 79, 84, 83, 45, 50, 51, 52, 55, 128, 68, 79, 84, 
-    83, 45, 50, 51, 52, 54, 56, 128, 68, 79, 84, 83, 45, 50, 51, 52, 54, 55, 
-    56, 128, 68, 79, 84, 83, 45, 50, 51, 52, 54, 55, 128, 68, 79, 84, 83, 45, 
-    50, 51, 52, 54, 128, 68, 79, 84, 83, 45, 50, 51, 52, 53, 56, 128, 68, 79, 
-    84, 83, 45, 50, 51, 52, 53, 55, 56, 128, 68, 79, 84, 83, 45, 50, 51, 52, 
-    53, 55, 128, 68, 79, 84, 83, 45, 50, 51, 52, 53, 54, 56, 128, 68, 79, 84, 
-    83, 45, 50, 51, 52, 53, 54, 55, 56, 128, 68, 79, 84, 83, 45, 50, 51, 52, 
-    53, 54, 55, 128, 68, 79, 84, 83, 45, 50, 51, 52, 53, 54, 128, 68, 79, 84, 
-    83, 45, 50, 51, 52, 53, 128, 68, 79, 84, 83, 45, 50, 51, 52, 128, 68, 79, 
-    84, 83, 45, 50, 51, 128, 68, 79, 84, 83, 45, 50, 128, 68, 79, 84, 83, 45, 
-    49, 56, 128, 68, 79, 84, 83, 45, 49, 55, 56, 128, 68, 79, 84, 83, 45, 49, 
-    55, 128, 68, 79, 84, 83, 45, 49, 54, 56, 128, 68, 79, 84, 83, 45, 49, 54, 
-    55, 56, 128, 68, 79, 84, 83, 45, 49, 54, 55, 128, 68, 79, 84, 83, 45, 49, 
-    54, 128, 68, 79, 84, 83, 45, 49, 53, 56, 128, 68, 79, 84, 83, 45, 49, 53, 
-    55, 56, 128, 68, 79, 84, 83, 45, 49, 53, 55, 128, 68, 79, 84, 83, 45, 49, 
-    53, 54, 56, 128, 68, 79, 84, 83, 45, 49, 53, 54, 55, 56, 128, 68, 79, 84, 
-    83, 45, 49, 53, 54, 55, 128, 68, 79, 84, 83, 45, 49, 53, 54, 128, 68, 79, 
-    84, 83, 45, 49, 53, 128, 68, 79, 84, 83, 45, 49, 52, 56, 128, 68, 79, 84, 
-    83, 45, 49, 52, 55, 56, 128, 68, 79, 84, 83, 45, 49, 52, 55, 128, 68, 79, 
-    84, 83, 45, 49, 52, 54, 56, 128, 68, 79, 84, 83, 45, 49, 52, 54, 55, 56, 
-    128, 68, 79, 84, 83, 45, 49, 52, 54, 55, 128, 68, 79, 84, 83, 45, 49, 52, 
-    54, 128, 68, 79, 84, 83, 45, 49, 52, 53, 56, 128, 68, 79, 84, 83, 45, 49, 
-    52, 53, 55, 56, 128, 68, 79, 84, 83, 45, 49, 52, 53, 55, 128, 68, 79, 84, 
-    83, 45, 49, 52, 53, 54, 56, 128, 68, 79, 84, 83, 45, 49, 52, 53, 54, 55, 
-    56, 128, 68, 79, 84, 83, 45, 49, 52, 53, 54, 55, 128, 68, 79, 84, 83, 45, 
-    49, 52, 53, 54, 128, 68, 79, 84, 83, 45, 49, 52, 53, 128, 68, 79, 84, 83, 
-    45, 49, 52, 128, 68, 79, 84, 83, 45, 49, 51, 56, 128, 68, 79, 84, 83, 45, 
-    49, 51, 55, 56, 128, 68, 79, 84, 83, 45, 49, 51, 55, 128, 68, 79, 84, 83, 
-    45, 49, 51, 54, 56, 128, 68, 79, 84, 83, 45, 49, 51, 54, 55, 56, 128, 68, 
-    79, 84, 83, 45, 49, 51, 54, 55, 128, 68, 79, 84, 83, 45, 49, 51, 54, 128, 
-    68, 79, 84, 83, 45, 49, 51, 53, 56, 128, 68, 79, 84, 83, 45, 49, 51, 53, 
-    55, 56, 128, 68, 79, 84, 83, 45, 49, 51, 53, 55, 128, 68, 79, 84, 83, 45, 
-    49, 51, 53, 54, 56, 128, 68, 79, 84, 83, 45, 49, 51, 53, 54, 55, 56, 128, 
-    68, 79, 84, 83, 45, 49, 51, 53, 54, 55, 128, 68, 79, 84, 83, 45, 49, 51, 
-    53, 54, 128, 68, 79, 84, 83, 45, 49, 51, 53, 128, 68, 79, 84, 83, 45, 49, 
-    51, 52, 56, 128, 68, 79, 84, 83, 45, 49, 51, 52, 55, 56, 128, 68, 79, 84, 
-    83, 45, 49, 51, 52, 55, 128, 68, 79, 84, 83, 45, 49, 51, 52, 54, 56, 128, 
-    68, 79, 84, 83, 45, 49, 51, 52, 54, 55, 56, 128, 68, 79, 84, 83, 45, 49, 
-    51, 52, 54, 55, 128, 68, 79, 84, 83, 45, 49, 51, 52, 54, 128, 68, 79, 84, 
-    83, 45, 49, 51, 52, 53, 56, 128, 68, 79, 84, 83, 45, 49, 51, 52, 53, 55, 
-    56, 128, 68, 79, 84, 83, 45, 49, 51, 52, 53, 55, 128, 68, 79, 84, 83, 45, 
-    49, 51, 52, 53, 54, 56, 128, 68, 79, 84, 83, 45, 49, 51, 52, 53, 54, 55, 
-    56, 128, 68, 79, 84, 83, 45, 49, 51, 52, 53, 54, 55, 128, 68, 79, 84, 83, 
-    45, 49, 51, 52, 53, 54, 128, 68, 79, 84, 83, 45, 49, 51, 52, 53, 128, 68, 
-    79, 84, 83, 45, 49, 51, 52, 128, 68, 79, 84, 83, 45, 49, 51, 128, 68, 79, 
-    84, 83, 45, 49, 50, 56, 128, 68, 79, 84, 83, 45, 49, 50, 55, 56, 128, 68, 
-    79, 84, 83, 45, 49, 50, 55, 128, 68, 79, 84, 83, 45, 49, 50, 54, 56, 128, 
-    68, 79, 84, 83, 45, 49, 50, 54, 55, 56, 128, 68, 79, 84, 83, 45, 49, 50, 
-    54, 55, 128, 68, 79, 84, 83, 45, 49, 50, 54, 128, 68, 79, 84, 83, 45, 49, 
-    50, 53, 56, 128, 68, 79, 84, 83, 45, 49, 50, 53, 55, 56, 128, 68, 79, 84, 
-    83, 45, 49, 50, 53, 55, 128, 68, 79, 84, 83, 45, 49, 50, 53, 54, 56, 128, 
-    68, 79, 84, 83, 45, 49, 50, 53, 54, 55, 56, 128, 68, 79, 84, 83, 45, 49, 
-    50, 53, 54, 55, 128, 68, 79, 84, 83, 45, 49, 50, 53, 54, 128, 68, 79, 84, 
-    83, 45, 49, 50, 53, 128, 68, 79, 84, 83, 45, 49, 50, 52, 56, 128, 68, 79, 
-    84, 83, 45, 49, 50, 52, 55, 56, 128, 68, 79, 84, 83, 45, 49, 50, 52, 55, 
-    128, 68, 79, 84, 83, 45, 49, 50, 52, 54, 56, 128, 68, 79, 84, 83, 45, 49, 
-    50, 52, 54, 55, 56, 128, 68, 79, 84, 83, 45, 49, 50, 52, 54, 55, 128, 68, 
-    79, 84, 83, 45, 49, 50, 52, 54, 128, 68, 79, 84, 83, 45, 49, 50, 52, 53, 
-    56, 128, 68, 79, 84, 83, 45, 49, 50, 52, 53, 55, 56, 128, 68, 79, 84, 83, 
-    45, 49, 50, 52, 53, 55, 128, 68, 79, 84, 83, 45, 49, 50, 52, 53, 54, 56, 
-    128, 68, 79, 84, 83, 45, 49, 50, 52, 53, 54, 55, 56, 128, 68, 79, 84, 83, 
-    45, 49, 50, 52, 53, 54, 55, 128, 68, 79, 84, 83, 45, 49, 50, 52, 53, 54, 
-    128, 68, 79, 84, 83, 45, 49, 50, 52, 53, 128, 68, 79, 84, 83, 45, 49, 50, 
-    52, 128, 68, 79, 84, 83, 45, 49, 50, 51, 56, 128, 68, 79, 84, 83, 45, 49, 
-    50, 51, 55, 56, 128, 68, 79, 84, 83, 45, 49, 50, 51, 55, 128, 68, 79, 84, 
-    83, 45, 49, 50, 51, 54, 56, 128, 68, 79, 84, 83, 45, 49, 50, 51, 54, 55, 
-    56, 128, 68, 79, 84, 83, 45, 49, 50, 51, 54, 55, 128, 68, 79, 84, 83, 45, 
-    49, 50, 51, 54, 128, 68, 79, 84, 83, 45, 49, 50, 51, 53, 56, 128, 68, 79, 
-    84, 83, 45, 49, 50, 51, 53, 55, 56, 128, 68, 79, 84, 83, 45, 49, 50, 51, 
-    53, 55, 128, 68, 79, 84, 83, 45, 49, 50, 51, 53, 54, 56, 128, 68, 79, 84, 
-    83, 45, 49, 50, 51, 53, 54, 55, 56, 128, 68, 79, 84, 83, 45, 49, 50, 51, 
-    53, 54, 55, 128, 68, 79, 84, 83, 45, 49, 50, 51, 53, 54, 128, 68, 79, 84, 
-    83, 45, 49, 50, 51, 53, 128, 68, 79, 84, 83, 45, 49, 50, 51, 52, 56, 128, 
-    68, 79, 84, 83, 45, 49, 50, 51, 52, 55, 56, 128, 68, 79, 84, 83, 45, 49, 
-    50, 51, 52, 55, 128, 68, 79, 84, 83, 45, 49, 50, 51, 52, 54, 56, 128, 68, 
-    79, 84, 83, 45, 49, 50, 51, 52, 54, 55, 56, 128, 68, 79, 84, 83, 45, 49, 
-    50, 51, 52, 54, 55, 128, 68, 79, 84, 83, 45, 49, 50, 51, 52, 54, 128, 68, 
-    79, 84, 83, 45, 49, 50, 51, 52, 53, 56, 128, 68, 79, 84, 83, 45, 49, 50, 
-    51, 52, 53, 55, 56, 128, 68, 79, 84, 83, 45, 49, 50, 51, 52, 53, 55, 128, 
-    68, 79, 84, 83, 45, 49, 50, 51, 52, 53, 54, 56, 128, 68, 79, 84, 83, 45, 
-    49, 50, 51, 52, 53, 54, 55, 56, 128, 68, 79, 84, 83, 45, 49, 50, 51, 52, 
-    53, 54, 55, 128, 68, 79, 84, 83, 45, 49, 50, 51, 52, 53, 54, 128, 68, 79, 
-    84, 83, 45, 49, 50, 51, 52, 53, 128, 68, 79, 84, 83, 45, 49, 50, 51, 52, 
-    128, 68, 79, 84, 83, 45, 49, 50, 51, 128, 68, 79, 84, 83, 45, 49, 50, 
-    128, 68, 79, 84, 83, 45, 49, 128, 68, 79, 84, 83, 128, 68, 79, 84, 76, 
-    69, 83, 211, 68, 79, 82, 85, 128, 68, 79, 79, 82, 128, 68, 79, 79, 78, 
-    71, 128, 68, 79, 78, 71, 128, 68, 79, 77, 65, 73, 206, 68, 79, 76, 76, 
-    65, 210, 68, 79, 76, 73, 85, 77, 128, 68, 79, 75, 77, 65, 73, 128, 68, 
-    79, 73, 84, 128, 68, 79, 71, 128, 68, 79, 69, 211, 68, 79, 68, 69, 75, 
-    65, 84, 65, 128, 68, 79, 66, 82, 79, 128, 68, 79, 65, 67, 72, 65, 83, 72, 
-    77, 69, 69, 128, 68, 79, 65, 67, 72, 65, 83, 72, 77, 69, 197, 68, 79, 65, 
-    128, 68, 79, 45, 79, 128, 68, 77, 128, 68, 205, 68, 76, 85, 128, 68, 76, 
-    79, 128, 68, 76, 73, 128, 68, 76, 69, 69, 128, 68, 76, 65, 128, 68, 76, 
-    128, 68, 75, 65, 82, 128, 68, 75, 65, 210, 68, 74, 69, 82, 86, 73, 128, 
-    68, 74, 69, 82, 86, 128, 68, 74, 69, 128, 68, 74, 65, 128, 68, 74, 128, 
-    68, 73, 86, 79, 82, 67, 197, 68, 73, 86, 73, 83, 73, 79, 78, 128, 68, 73, 
-    86, 73, 83, 73, 79, 206, 68, 73, 86, 73, 78, 65, 84, 73, 79, 78, 128, 68, 
-    73, 86, 73, 68, 69, 83, 128, 68, 73, 86, 73, 68, 69, 82, 128, 68, 73, 86, 
-    73, 68, 69, 196, 68, 73, 86, 73, 68, 69, 128, 68, 73, 86, 73, 68, 197, 
-    68, 73, 86, 69, 82, 71, 69, 78, 67, 69, 128, 68, 73, 84, 84, 207, 68, 73, 
-    83, 84, 79, 82, 84, 73, 79, 78, 128, 68, 73, 83, 84, 73, 78, 71, 85, 73, 
-    83, 72, 128, 68, 73, 83, 80, 69, 82, 83, 73, 79, 78, 128, 68, 73, 83, 73, 
-    77, 79, 85, 128, 68, 73, 83, 72, 128, 68, 73, 83, 67, 79, 78, 84, 73, 78, 
-    85, 79, 85, 211, 68, 73, 83, 195, 68, 73, 83, 65, 66, 76, 69, 196, 68, 
-    73, 82, 71, 193, 68, 73, 82, 69, 67, 84, 76, 217, 68, 73, 82, 69, 67, 84, 
-    73, 79, 78, 65, 204, 68, 73, 80, 84, 69, 128, 68, 73, 80, 80, 69, 82, 
-    128, 68, 73, 80, 76, 79, 85, 78, 128, 68, 73, 80, 76, 73, 128, 68, 73, 
-    80, 76, 201, 68, 73, 78, 71, 66, 65, 212, 68, 73, 206, 68, 73, 77, 77, 
-    73, 78, 71, 128, 68, 73, 77, 73, 78, 85, 84, 73, 79, 78, 45, 51, 128, 68, 
-    73, 77, 73, 78, 85, 84, 73, 79, 78, 45, 50, 128, 68, 73, 77, 73, 78, 85, 
-    84, 73, 79, 78, 45, 49, 128, 68, 73, 77, 73, 78, 73, 83, 72, 77, 69, 78, 
-    84, 128, 68, 73, 77, 73, 68, 73, 193, 68, 73, 77, 69, 78, 83, 73, 79, 78, 
-    65, 204, 68, 73, 77, 69, 78, 83, 73, 79, 206, 68, 73, 77, 50, 128, 68, 
-    73, 76, 128, 68, 73, 71, 82, 65, 80, 72, 128, 68, 73, 71, 82, 65, 80, 
-    200, 68, 73, 71, 82, 65, 77, 77, 79, 211, 68, 73, 71, 82, 65, 77, 77, 
-    193, 68, 73, 71, 82, 65, 205, 68, 73, 71, 79, 82, 71, 79, 78, 128, 68, 
-    73, 71, 79, 82, 71, 79, 206, 68, 73, 71, 65, 77, 77, 65, 128, 68, 73, 71, 
-    193, 68, 73, 70, 84, 79, 71, 71, 79, 211, 68, 73, 70, 79, 78, 73, 65, 83, 
-    128, 68, 73, 70, 70, 73, 67, 85, 76, 84, 217, 68, 73, 70, 70, 73, 67, 85, 
-    76, 84, 73, 69, 83, 128, 68, 73, 70, 70, 69, 82, 69, 78, 84, 73, 65, 76, 
-    128, 68, 73, 70, 70, 69, 82, 69, 78, 67, 197, 68, 73, 70, 65, 84, 128, 
-    68, 73, 69, 83, 73, 83, 128, 68, 73, 69, 83, 73, 211, 68, 73, 69, 80, 
-    128, 68, 73, 197, 68, 73, 66, 128, 68, 73, 65, 84, 79, 78, 79, 206, 68, 
-    73, 65, 84, 79, 78, 73, 75, 201, 68, 73, 65, 83, 84, 79, 76, 201, 68, 73, 
-    65, 77, 79, 78, 68, 128, 68, 73, 65, 77, 79, 78, 196, 68, 73, 65, 77, 69, 
-    84, 69, 210, 68, 73, 65, 76, 89, 84, 73, 75, 65, 128, 68, 73, 65, 76, 89, 
-    84, 73, 75, 193, 68, 73, 65, 76, 69, 67, 84, 45, 208, 68, 73, 65, 71, 79, 
-    78, 65, 76, 128, 68, 73, 65, 71, 79, 78, 65, 204, 68, 73, 65, 69, 82, 69, 
-    83, 73, 90, 69, 196, 68, 73, 65, 69, 82, 69, 83, 73, 83, 128, 68, 73, 65, 
-    69, 82, 69, 83, 73, 211, 68, 72, 79, 85, 128, 68, 72, 79, 79, 128, 68, 
-    72, 79, 128, 68, 72, 73, 128, 68, 72, 72, 85, 128, 68, 72, 72, 79, 79, 
-    128, 68, 72, 72, 79, 128, 68, 72, 72, 73, 128, 68, 72, 72, 69, 69, 128, 
-    68, 72, 72, 69, 128, 68, 72, 72, 65, 128, 68, 72, 69, 69, 128, 68, 72, 
-    65, 82, 77, 65, 128, 68, 72, 65, 76, 69, 84, 72, 128, 68, 72, 65, 76, 65, 
-    84, 72, 128, 68, 72, 65, 76, 128, 68, 72, 65, 68, 72, 69, 128, 68, 72, 
-    65, 65, 76, 85, 128, 68, 72, 65, 128, 68, 69, 90, 200, 68, 69, 89, 84, 
-    69, 82, 79, 213, 68, 69, 89, 84, 69, 82, 79, 211, 68, 69, 88, 73, 65, 
-    128, 68, 69, 86, 73, 67, 197, 68, 69, 86, 69, 76, 79, 80, 77, 69, 78, 84, 
-    128, 68, 69, 85, 78, 71, 128, 68, 69, 83, 73, 128, 68, 69, 83, 67, 82, 
-    73, 80, 84, 73, 79, 206, 68, 69, 83, 67, 69, 78, 68, 73, 78, 199, 68, 69, 
-    83, 67, 69, 78, 68, 69, 82, 128, 68, 69, 82, 69, 84, 45, 72, 73, 68, 69, 
-    84, 128, 68, 69, 82, 69, 84, 128, 68, 69, 80, 65, 82, 84, 85, 82, 69, 
-    128, 68, 69, 80, 65, 82, 84, 73, 78, 199, 68, 69, 78, 84, 73, 83, 84, 82, 
-    217, 68, 69, 78, 84, 65, 204, 68, 69, 78, 79, 77, 73, 78, 65, 84, 79, 82, 
-    128, 68, 69, 78, 79, 77, 73, 78, 65, 84, 79, 210, 68, 69, 78, 78, 69, 78, 
-    128, 68, 69, 78, 71, 128, 68, 69, 78, 197, 68, 69, 78, 65, 82, 73, 85, 
-    211, 68, 69, 76, 84, 65, 128, 68, 69, 76, 84, 193, 68, 69, 76, 84, 128, 
-    68, 69, 76, 80, 72, 73, 195, 68, 69, 76, 73, 86, 69, 82, 65, 78, 67, 69, 
-    128, 68, 69, 76, 73, 77, 73, 84, 69, 82, 128, 68, 69, 76, 73, 77, 73, 84, 
-    69, 210, 68, 69, 76, 69, 84, 69, 128, 68, 69, 76, 69, 84, 197, 68, 69, 
-    75, 65, 128, 68, 69, 75, 128, 68, 69, 73, 128, 68, 69, 72, 73, 128, 68, 
-    69, 71, 82, 69, 197, 68, 69, 70, 73, 78, 73, 84, 73, 79, 78, 128, 68, 69, 
-    70, 69, 67, 84, 73, 86, 69, 78, 69, 83, 211, 68, 69, 69, 82, 128, 68, 69, 
-    69, 76, 128, 68, 69, 67, 82, 69, 83, 67, 69, 78, 68, 79, 128, 68, 69, 67, 
-    82, 69, 65, 83, 69, 128, 68, 69, 67, 73, 83, 73, 86, 69, 78, 69, 83, 83, 
-    128, 68, 69, 67, 73, 77, 65, 204, 68, 69, 67, 69, 77, 66, 69, 82, 128, 
-    68, 69, 67, 65, 89, 69, 68, 128, 68, 69, 66, 73, 212, 68, 69, 65, 84, 72, 
-    128, 68, 69, 65, 68, 128, 68, 68, 87, 65, 128, 68, 68, 85, 88, 128, 68, 
-    68, 85, 84, 128, 68, 68, 85, 82, 88, 128, 68, 68, 85, 82, 128, 68, 68, 
-    85, 80, 128, 68, 68, 85, 79, 88, 128, 68, 68, 85, 79, 80, 128, 68, 68, 
-    85, 79, 128, 68, 68, 85, 128, 68, 68, 79, 88, 128, 68, 68, 79, 84, 128, 
-    68, 68, 79, 80, 128, 68, 68, 79, 65, 128, 68, 68, 73, 88, 128, 68, 68, 
-    73, 84, 128, 68, 68, 73, 80, 128, 68, 68, 73, 69, 88, 128, 68, 68, 73, 
-    69, 80, 128, 68, 68, 73, 69, 128, 68, 68, 73, 128, 68, 68, 72, 79, 128, 
-    68, 68, 72, 65, 128, 68, 68, 69, 88, 128, 68, 68, 69, 80, 128, 68, 68, 
-    69, 69, 128, 68, 68, 69, 128, 68, 68, 68, 72, 65, 128, 68, 68, 68, 65, 
-    128, 68, 68, 65, 89, 65, 78, 78, 65, 128, 68, 68, 65, 88, 128, 68, 68, 
-    65, 84, 128, 68, 68, 65, 80, 128, 68, 68, 65, 76, 128, 68, 68, 65, 204, 
-    68, 68, 65, 72, 65, 76, 128, 68, 68, 65, 72, 65, 204, 68, 68, 65, 65, 
-    128, 68, 194, 68, 65, 217, 68, 65, 86, 73, 89, 65, 78, 73, 128, 68, 65, 
-    86, 73, 68, 128, 68, 65, 84, 197, 68, 65, 83, 73, 65, 128, 68, 65, 83, 
-    72, 69, 196, 68, 65, 83, 72, 128, 68, 65, 83, 200, 68, 65, 83, 69, 73, 
-    65, 128, 68, 65, 82, 84, 128, 68, 65, 82, 75, 69, 78, 73, 78, 71, 128, 
-    68, 65, 82, 75, 69, 78, 73, 78, 199, 68, 65, 82, 203, 68, 65, 82, 71, 65, 
-    128, 68, 65, 82, 65, 52, 128, 68, 65, 82, 65, 51, 128, 68, 65, 82, 128, 
-    68, 65, 80, 45, 80, 82, 65, 205, 68, 65, 80, 45, 80, 73, 201, 68, 65, 80, 
-    45, 77, 85, 79, 217, 68, 65, 80, 45, 66, 85, 79, 206, 68, 65, 80, 45, 66, 
-    69, 201, 68, 65, 208, 68, 65, 78, 84, 65, 74, 193, 68, 65, 78, 71, 128, 
-    68, 65, 78, 199, 68, 65, 78, 68, 65, 128, 68, 65, 77, 80, 128, 68, 65, 
-    77, 208, 68, 65, 77, 77, 65, 84, 65, 78, 128, 68, 65, 77, 77, 65, 84, 65, 
-    206, 68, 65, 77, 77, 65, 128, 68, 65, 77, 77, 193, 68, 65, 77, 65, 82, 
-    85, 128, 68, 65, 76, 69, 84, 72, 128, 68, 65, 76, 69, 84, 128, 68, 65, 
-    76, 69, 212, 68, 65, 76, 68, 65, 128, 68, 65, 76, 65, 84, 72, 128, 68, 
-    65, 76, 65, 84, 200, 68, 65, 76, 65, 84, 128, 68, 65, 73, 82, 128, 68, 
-    65, 73, 78, 71, 128, 68, 65, 72, 89, 65, 65, 85, 83, 72, 45, 50, 128, 68, 
-    65, 72, 89, 65, 65, 85, 83, 72, 128, 68, 65, 71, 83, 128, 68, 65, 71, 71, 
-    69, 82, 128, 68, 65, 71, 69, 83, 72, 128, 68, 65, 71, 69, 83, 200, 68, 
-    65, 71, 66, 65, 83, 73, 78, 78, 65, 128, 68, 65, 71, 65, 218, 68, 65, 71, 
-    65, 76, 71, 65, 128, 68, 65, 199, 68, 65, 69, 78, 71, 128, 68, 65, 69, 
-    199, 68, 65, 68, 128, 68, 65, 196, 68, 65, 65, 83, 85, 128, 68, 65, 65, 
-    68, 72, 85, 128, 68, 48, 54, 55, 72, 128, 68, 48, 54, 55, 71, 128, 68, 
-    48, 54, 55, 70, 128, 68, 48, 54, 55, 69, 128, 68, 48, 54, 55, 68, 128, 
-    68, 48, 54, 55, 67, 128, 68, 48, 54, 55, 66, 128, 68, 48, 54, 55, 65, 
-    128, 68, 48, 54, 55, 128, 68, 48, 54, 54, 128, 68, 48, 54, 53, 128, 68, 
-    48, 54, 52, 128, 68, 48, 54, 51, 128, 68, 48, 54, 50, 128, 68, 48, 54, 
-    49, 128, 68, 48, 54, 48, 128, 68, 48, 53, 57, 128, 68, 48, 53, 56, 128, 
-    68, 48, 53, 55, 128, 68, 48, 53, 54, 128, 68, 48, 53, 53, 128, 68, 48, 
-    53, 52, 65, 128, 68, 48, 53, 52, 128, 68, 48, 53, 51, 128, 68, 48, 53, 
-    50, 65, 128, 68, 48, 53, 50, 128, 68, 48, 53, 49, 128, 68, 48, 53, 48, 
-    73, 128, 68, 48, 53, 48, 72, 128, 68, 48, 53, 48, 71, 128, 68, 48, 53, 
-    48, 70, 128, 68, 48, 53, 48, 69, 128, 68, 48, 53, 48, 68, 128, 68, 48, 
-    53, 48, 67, 128, 68, 48, 53, 48, 66, 128, 68, 48, 53, 48, 65, 128, 68, 
-    48, 53, 48, 128, 68, 48, 52, 57, 128, 68, 48, 52, 56, 65, 128, 68, 48, 
-    52, 56, 128, 68, 48, 52, 55, 128, 68, 48, 52, 54, 65, 128, 68, 48, 52, 
-    54, 128, 68, 48, 52, 53, 128, 68, 48, 52, 52, 128, 68, 48, 52, 51, 128, 
-    68, 48, 52, 50, 128, 68, 48, 52, 49, 128, 68, 48, 52, 48, 128, 68, 48, 
-    51, 57, 128, 68, 48, 51, 56, 128, 68, 48, 51, 55, 128, 68, 48, 51, 54, 
-    128, 68, 48, 51, 53, 128, 68, 48, 51, 52, 65, 128, 68, 48, 51, 52, 128, 
-    68, 48, 51, 51, 128, 68, 48, 51, 50, 128, 68, 48, 51, 49, 65, 128, 68, 
-    48, 51, 49, 128, 68, 48, 51, 48, 128, 68, 48, 50, 57, 128, 68, 48, 50, 
-    56, 128, 68, 48, 50, 55, 65, 128, 68, 48, 50, 55, 128, 68, 48, 50, 54, 
-    128, 68, 48, 50, 53, 128, 68, 48, 50, 52, 128, 68, 48, 50, 51, 128, 68, 
-    48, 50, 50, 128, 68, 48, 50, 49, 128, 68, 48, 50, 48, 128, 68, 48, 49, 
-    57, 128, 68, 48, 49, 56, 128, 68, 48, 49, 55, 128, 68, 48, 49, 54, 128, 
-    68, 48, 49, 53, 128, 68, 48, 49, 52, 128, 68, 48, 49, 51, 128, 68, 48, 
-    49, 50, 128, 68, 48, 49, 49, 128, 68, 48, 49, 48, 128, 68, 48, 48, 57, 
-    128, 68, 48, 48, 56, 65, 128, 68, 48, 48, 56, 128, 68, 48, 48, 55, 128, 
-    68, 48, 48, 54, 128, 68, 48, 48, 53, 128, 68, 48, 48, 52, 128, 68, 48, 
-    48, 51, 128, 68, 48, 48, 50, 128, 68, 48, 48, 49, 128, 67, 89, 88, 128, 
-    67, 89, 84, 128, 67, 89, 82, 88, 128, 67, 89, 82, 69, 78, 65, 73, 195, 
-    67, 89, 82, 128, 67, 89, 80, 82, 73, 79, 212, 67, 89, 80, 69, 82, 85, 83, 
-    128, 67, 89, 80, 128, 67, 89, 76, 73, 78, 68, 82, 73, 67, 73, 84, 89, 
-    128, 67, 89, 65, 128, 67, 89, 128, 67, 87, 79, 79, 128, 67, 87, 79, 128, 
-    67, 87, 73, 73, 128, 67, 87, 73, 128, 67, 87, 69, 79, 82, 84, 72, 128, 
-    67, 87, 69, 128, 67, 87, 65, 65, 128, 67, 85, 88, 128, 67, 85, 84, 128, 
-    67, 85, 212, 67, 85, 83, 84, 79, 77, 69, 210, 67, 85, 82, 88, 128, 67, 
-    85, 82, 86, 73, 78, 199, 67, 85, 82, 86, 69, 196, 67, 85, 82, 86, 69, 
-    128, 67, 85, 82, 86, 197, 67, 85, 82, 82, 69, 78, 84, 128, 67, 85, 82, 
-    82, 69, 78, 212, 67, 85, 82, 76, 217, 67, 85, 82, 76, 128, 67, 85, 82, 
-    128, 67, 85, 80, 128, 67, 85, 208, 67, 85, 79, 88, 128, 67, 85, 79, 80, 
-    128, 67, 85, 79, 128, 67, 85, 205, 67, 85, 66, 69, 68, 128, 67, 85, 66, 
-    197, 67, 85, 65, 84, 82, 73, 76, 76, 79, 128, 67, 85, 65, 84, 82, 73, 76, 
-    76, 207, 67, 85, 128, 67, 82, 89, 80, 84, 79, 71, 82, 65, 77, 77, 73, 
-    195, 67, 82, 85, 90, 69, 73, 82, 207, 67, 82, 79, 83, 83, 73, 78, 199, 
-    67, 82, 79, 83, 83, 72, 65, 84, 67, 200, 67, 82, 79, 83, 83, 69, 68, 45, 
-    84, 65, 73, 76, 128, 67, 82, 79, 83, 83, 69, 196, 67, 82, 79, 83, 83, 66, 
-    79, 78, 69, 83, 128, 67, 82, 79, 83, 83, 128, 67, 82, 79, 83, 211, 67, 
-    82, 79, 80, 128, 67, 82, 79, 73, 88, 128, 67, 82, 69, 83, 67, 69, 78, 84, 
-    128, 67, 82, 69, 83, 67, 69, 78, 212, 67, 82, 69, 68, 73, 212, 67, 82, 
-    69, 65, 84, 73, 86, 197, 67, 79, 88, 128, 67, 79, 87, 128, 67, 79, 86, 
-    69, 82, 128, 67, 79, 85, 78, 84, 73, 78, 199, 67, 79, 85, 78, 84, 69, 82, 
-    83, 73, 78, 75, 128, 67, 79, 85, 78, 84, 69, 82, 66, 79, 82, 69, 128, 67, 
-    79, 85, 78, 67, 73, 204, 67, 79, 84, 128, 67, 79, 82, 82, 69, 83, 80, 79, 
-    78, 68, 211, 67, 79, 82, 82, 69, 67, 84, 128, 67, 79, 82, 80, 83, 69, 
-    128, 67, 79, 82, 80, 79, 82, 65, 84, 73, 79, 78, 128, 67, 79, 82, 79, 78, 
-    73, 83, 128, 67, 79, 82, 78, 69, 82, 83, 128, 67, 79, 82, 78, 69, 82, 
-    128, 67, 79, 82, 78, 69, 210, 67, 79, 80, 89, 82, 73, 71, 72, 84, 128, 
-    67, 79, 80, 89, 82, 73, 71, 72, 212, 67, 79, 80, 89, 128, 67, 79, 80, 82, 
-    79, 68, 85, 67, 84, 128, 67, 79, 80, 128, 67, 79, 79, 128, 67, 79, 78, 
-    86, 69, 82, 71, 73, 78, 199, 67, 79, 78, 84, 82, 79, 204, 67, 79, 78, 84, 
-    82, 65, 82, 73, 69, 84, 89, 128, 67, 79, 78, 84, 82, 65, 67, 84, 73, 79, 
-    78, 128, 67, 79, 78, 84, 79, 85, 82, 69, 196, 67, 79, 78, 84, 79, 85, 
-    210, 67, 79, 78, 84, 69, 78, 84, 73, 79, 78, 128, 67, 79, 78, 84, 69, 77, 
-    80, 76, 65, 84, 73, 79, 78, 128, 67, 79, 78, 84, 65, 73, 78, 211, 67, 79, 
-    78, 84, 65, 73, 78, 73, 78, 199, 67, 79, 78, 84, 65, 73, 206, 67, 79, 78, 
-    84, 65, 67, 84, 128, 67, 79, 78, 83, 84, 65, 78, 84, 128, 67, 79, 78, 83, 
-    84, 65, 78, 212, 67, 79, 78, 83, 84, 65, 78, 67, 89, 128, 67, 79, 78, 83, 
-    79, 78, 65, 78, 212, 67, 79, 78, 83, 69, 67, 85, 84, 73, 86, 197, 67, 79, 
-    78, 74, 85, 78, 67, 84, 73, 79, 78, 128, 67, 79, 78, 74, 85, 71, 65, 84, 
-    197, 67, 79, 78, 74, 79, 73, 78, 73, 78, 199, 67, 79, 78, 73, 67, 65, 
-    204, 67, 79, 78, 71, 82, 85, 69, 78, 212, 67, 79, 78, 71, 82, 65, 84, 85, 
-    76, 65, 84, 73, 79, 78, 128, 67, 79, 78, 70, 76, 73, 67, 84, 128, 67, 79, 
-    78, 67, 65, 86, 69, 45, 83, 73, 68, 69, 196, 67, 79, 78, 67, 65, 86, 69, 
-    45, 80, 79, 73, 78, 84, 69, 196, 67, 79, 78, 128, 67, 79, 77, 80, 79, 83, 
-    73, 84, 73, 79, 78, 128, 67, 79, 77, 80, 79, 83, 73, 84, 73, 79, 206, 67, 
-    79, 77, 80, 76, 73, 65, 78, 67, 69, 128, 67, 79, 77, 80, 76, 69, 84, 73, 
-    79, 78, 128, 67, 79, 77, 80, 76, 69, 84, 69, 68, 128, 67, 79, 77, 80, 76, 
-    69, 77, 69, 78, 84, 128, 67, 79, 77, 80, 65, 82, 69, 128, 67, 79, 77, 77, 
-    79, 206, 67, 79, 77, 77, 69, 82, 67, 73, 65, 204, 67, 79, 77, 77, 65, 
-    128, 67, 79, 77, 77, 193, 67, 79, 77, 73, 78, 199, 67, 79, 77, 69, 84, 
-    128, 67, 79, 77, 66, 128, 67, 79, 76, 85, 77, 78, 128, 67, 79, 76, 79, 
-    82, 128, 67, 79, 76, 76, 128, 67, 79, 70, 70, 73, 78, 128, 67, 79, 69, 
-    78, 71, 128, 67, 79, 68, 65, 128, 67, 79, 65, 128, 67, 79, 128, 67, 77, 
-    128, 67, 205, 67, 76, 85, 83, 84, 69, 210, 67, 76, 85, 66, 45, 83, 80, 
-    79, 75, 69, 196, 67, 76, 85, 66, 128, 67, 76, 85, 194, 67, 76, 79, 85, 
-    68, 128, 67, 76, 79, 85, 196, 67, 76, 79, 84, 72, 69, 83, 128, 67, 76, 
-    79, 84, 72, 128, 67, 76, 79, 83, 69, 78, 69, 83, 83, 128, 67, 76, 79, 83, 
-    69, 68, 128, 67, 76, 79, 83, 69, 196, 67, 76, 79, 83, 197, 67, 76, 79, 
-    67, 75, 87, 73, 83, 197, 67, 76, 73, 86, 73, 83, 128, 67, 76, 73, 78, 71, 
-    73, 78, 199, 67, 76, 73, 77, 65, 67, 85, 83, 128, 67, 76, 73, 70, 70, 
-    128, 67, 76, 73, 67, 75, 128, 67, 76, 69, 70, 45, 50, 128, 67, 76, 69, 
-    70, 45, 49, 128, 67, 76, 69, 70, 128, 67, 76, 69, 198, 67, 76, 69, 65, 
-    210, 67, 76, 65, 87, 128, 67, 76, 65, 78, 128, 67, 73, 88, 128, 67, 73, 
-    86, 73, 76, 73, 65, 78, 128, 67, 73, 84, 128, 67, 73, 82, 67, 85, 77, 70, 
-    76, 69, 88, 128, 67, 73, 82, 67, 85, 77, 70, 76, 69, 216, 67, 73, 82, 67, 
-    85, 76, 65, 84, 73, 79, 206, 67, 73, 82, 67, 76, 69, 83, 128, 67, 73, 82, 
-    67, 76, 69, 128, 67, 73, 80, 128, 67, 73, 73, 128, 67, 73, 69, 88, 128, 
-    67, 73, 69, 85, 67, 45, 83, 83, 65, 78, 71, 80, 73, 69, 85, 80, 128, 67, 
-    73, 69, 85, 67, 45, 80, 73, 69, 85, 80, 128, 67, 73, 69, 85, 67, 45, 73, 
-    69, 85, 78, 71, 128, 67, 73, 69, 85, 195, 67, 73, 69, 84, 128, 67, 73, 
-    69, 80, 128, 67, 73, 69, 128, 67, 73, 128, 67, 72, 89, 88, 128, 67, 72, 
-    89, 84, 128, 67, 72, 89, 82, 88, 128, 67, 72, 89, 82, 128, 67, 72, 89, 
-    80, 128, 67, 72, 85, 88, 128, 67, 72, 85, 82, 88, 128, 67, 72, 85, 82, 
-    67, 72, 128, 67, 72, 85, 82, 128, 67, 72, 85, 80, 128, 67, 72, 85, 79, 
-    88, 128, 67, 72, 85, 79, 84, 128, 67, 72, 85, 79, 80, 128, 67, 72, 85, 
-    79, 128, 67, 72, 85, 76, 65, 128, 67, 72, 85, 128, 67, 72, 82, 89, 83, 
-    65, 78, 84, 72, 69, 77, 85, 77, 128, 67, 72, 82, 79, 78, 79, 85, 128, 67, 
-    72, 82, 79, 78, 79, 78, 128, 67, 72, 82, 79, 77, 193, 67, 72, 82, 79, 
-    193, 67, 72, 82, 73, 86, 73, 128, 67, 72, 79, 88, 128, 67, 72, 79, 84, 
-    128, 67, 72, 79, 82, 69, 86, 77, 193, 67, 72, 79, 80, 128, 67, 72, 79, 
-    75, 69, 128, 67, 72, 79, 69, 128, 67, 72, 79, 65, 128, 67, 72, 79, 128, 
-    67, 72, 207, 67, 72, 73, 84, 85, 69, 85, 77, 83, 83, 65, 78, 71, 83, 73, 
-    79, 83, 128, 67, 72, 73, 84, 85, 69, 85, 77, 83, 83, 65, 78, 71, 67, 73, 
-    69, 85, 67, 128, 67, 72, 73, 84, 85, 69, 85, 77, 83, 73, 79, 83, 128, 67, 
-    72, 73, 84, 85, 69, 85, 77, 67, 73, 69, 85, 67, 128, 67, 72, 73, 84, 85, 
-    69, 85, 77, 67, 72, 73, 69, 85, 67, 72, 128, 67, 72, 73, 82, 79, 78, 128, 
-    67, 72, 73, 82, 69, 84, 128, 67, 72, 73, 78, 71, 128, 67, 72, 73, 78, 69, 
-    83, 197, 67, 72, 73, 78, 128, 67, 72, 73, 76, 76, 213, 67, 72, 73, 76, 
-    68, 128, 67, 72, 73, 76, 128, 67, 72, 73, 75, 201, 67, 72, 73, 69, 85, 
-    67, 72, 45, 75, 72, 73, 69, 85, 75, 72, 128, 67, 72, 73, 69, 85, 67, 72, 
-    45, 72, 73, 69, 85, 72, 128, 67, 72, 73, 69, 85, 67, 200, 67, 72, 73, 
-    128, 67, 72, 201, 67, 72, 72, 65, 128, 67, 72, 69, 88, 128, 67, 72, 69, 
-    86, 82, 79, 206, 67, 72, 69, 84, 128, 67, 72, 69, 83, 211, 67, 72, 69, 
-    80, 128, 67, 72, 69, 206, 67, 72, 69, 73, 78, 65, 80, 128, 67, 72, 69, 
-    73, 75, 72, 69, 73, 128, 67, 72, 69, 69, 128, 67, 72, 69, 67, 75, 128, 
-    67, 72, 69, 67, 203, 67, 72, 197, 67, 72, 65, 88, 128, 67, 72, 65, 86, 
-    73, 89, 65, 78, 73, 128, 67, 72, 65, 84, 84, 65, 87, 65, 128, 67, 72, 65, 
-    84, 128, 67, 72, 65, 82, 73, 79, 84, 128, 67, 72, 65, 82, 73, 79, 212, 
-    67, 72, 65, 82, 65, 67, 84, 69, 82, 83, 128, 67, 72, 65, 82, 65, 67, 84, 
-    69, 82, 128, 67, 72, 65, 82, 128, 67, 72, 65, 80, 128, 67, 72, 65, 78, 
-    71, 69, 128, 67, 72, 65, 78, 71, 128, 67, 72, 65, 78, 128, 67, 72, 65, 
-    77, 75, 79, 128, 67, 72, 65, 77, 73, 76, 79, 78, 128, 67, 72, 65, 77, 73, 
-    76, 73, 128, 67, 72, 65, 73, 82, 128, 67, 72, 65, 73, 78, 83, 128, 67, 
-    72, 65, 68, 65, 128, 67, 72, 65, 196, 67, 72, 65, 65, 128, 67, 69, 88, 
-    128, 67, 69, 82, 69, 83, 128, 67, 69, 82, 69, 75, 128, 67, 69, 82, 45, 
-    87, 65, 128, 67, 69, 80, 128, 67, 69, 79, 78, 71, 67, 72, 73, 69, 85, 77, 
-    83, 83, 65, 78, 71, 83, 73, 79, 83, 128, 67, 69, 79, 78, 71, 67, 72, 73, 
-    69, 85, 77, 83, 83, 65, 78, 71, 67, 73, 69, 85, 67, 128, 67, 69, 79, 78, 
-    71, 67, 72, 73, 69, 85, 77, 83, 73, 79, 83, 128, 67, 69, 79, 78, 71, 67, 
-    72, 73, 69, 85, 77, 67, 73, 69, 85, 67, 128, 67, 69, 79, 78, 71, 67, 72, 
-    73, 69, 85, 77, 67, 72, 73, 69, 85, 67, 72, 128, 67, 69, 78, 84, 85, 82, 
-    73, 65, 204, 67, 69, 78, 84, 82, 69, 76, 73, 78, 197, 67, 69, 78, 84, 82, 
-    69, 196, 67, 69, 78, 84, 82, 69, 128, 67, 69, 78, 84, 82, 197, 67, 69, 
-    78, 128, 67, 69, 76, 83, 73, 85, 83, 128, 67, 69, 73, 82, 84, 128, 67, 
-    69, 73, 76, 73, 78, 71, 128, 67, 69, 69, 128, 67, 69, 68, 73, 76, 76, 65, 
-    128, 67, 69, 68, 73, 76, 76, 193, 67, 69, 68, 201, 67, 69, 67, 69, 75, 
-    128, 67, 69, 67, 65, 75, 128, 67, 69, 67, 65, 203, 67, 69, 65, 76, 67, 
-    128, 67, 67, 85, 128, 67, 67, 79, 128, 67, 67, 73, 128, 67, 67, 72, 85, 
-    128, 67, 67, 72, 79, 128, 67, 67, 72, 73, 128, 67, 67, 72, 69, 69, 128, 
-    67, 67, 72, 69, 128, 67, 67, 72, 65, 65, 128, 67, 67, 72, 65, 128, 67, 
-    67, 69, 69, 128, 67, 67, 69, 128, 67, 67, 65, 65, 128, 67, 67, 65, 128, 
-    67, 65, 89, 78, 128, 67, 65, 89, 65, 78, 78, 65, 128, 67, 65, 88, 128, 
-    67, 65, 86, 69, 128, 67, 65, 85, 84, 73, 79, 206, 67, 65, 85, 76, 68, 82, 
-    79, 78, 128, 67, 65, 85, 68, 65, 128, 67, 65, 84, 65, 87, 65, 128, 67, 
-    65, 84, 128, 67, 65, 83, 84, 76, 69, 128, 67, 65, 82, 89, 83, 84, 73, 65, 
-    206, 67, 65, 82, 84, 128, 67, 65, 82, 82, 73, 65, 71, 197, 67, 65, 82, 
-    80, 69, 78, 84, 82, 217, 67, 65, 82, 79, 78, 128, 67, 65, 82, 79, 206, 
-    67, 65, 82, 73, 203, 67, 65, 82, 73, 65, 206, 67, 65, 82, 69, 84, 128, 
-    67, 65, 82, 69, 212, 67, 65, 82, 197, 67, 65, 82, 128, 67, 65, 210, 67, 
-    65, 80, 84, 73, 86, 69, 128, 67, 65, 80, 82, 73, 67, 79, 82, 78, 128, 67, 
-    65, 80, 79, 128, 67, 65, 80, 73, 84, 65, 76, 128, 67, 65, 78, 84, 73, 76, 
-    76, 65, 84, 73, 79, 206, 67, 65, 78, 199, 67, 65, 78, 68, 82, 65, 66, 73, 
-    78, 68, 85, 128, 67, 65, 78, 68, 82, 65, 66, 73, 78, 68, 213, 67, 65, 78, 
-    68, 82, 65, 128, 67, 65, 78, 68, 82, 193, 67, 65, 78, 67, 69, 82, 128, 
-    67, 65, 78, 67, 69, 76, 76, 65, 84, 73, 79, 206, 67, 65, 78, 67, 69, 76, 
-    128, 67, 65, 78, 67, 69, 204, 67, 65, 78, 128, 67, 65, 77, 78, 85, 195, 
-    67, 65, 76, 89, 65, 128, 67, 65, 76, 89, 193, 67, 65, 76, 76, 128, 67, 
-    65, 76, 67, 128, 67, 65, 75, 82, 65, 128, 67, 65, 69, 83, 85, 82, 65, 
-    128, 67, 65, 68, 85, 67, 69, 85, 83, 128, 67, 65, 68, 193, 67, 65, 65, 
-    78, 71, 128, 67, 65, 65, 73, 128, 67, 193, 67, 48, 50, 52, 128, 67, 48, 
-    50, 51, 128, 67, 48, 50, 50, 128, 67, 48, 50, 49, 128, 67, 48, 50, 48, 
-    128, 67, 48, 49, 57, 128, 67, 48, 49, 56, 128, 67, 48, 49, 55, 128, 67, 
-    48, 49, 54, 128, 67, 48, 49, 53, 128, 67, 48, 49, 52, 128, 67, 48, 49, 
-    51, 128, 67, 48, 49, 50, 128, 67, 48, 49, 49, 128, 67, 48, 49, 48, 65, 
-    128, 67, 48, 49, 48, 128, 67, 48, 48, 57, 128, 67, 48, 48, 56, 128, 67, 
-    48, 48, 55, 128, 67, 48, 48, 54, 128, 67, 48, 48, 53, 128, 67, 48, 48, 
-    52, 128, 67, 48, 48, 51, 128, 67, 48, 48, 50, 67, 128, 67, 48, 48, 50, 
-    66, 128, 67, 48, 48, 50, 65, 128, 67, 48, 48, 50, 128, 67, 48, 48, 49, 
-    128, 67, 45, 83, 73, 77, 80, 76, 73, 70, 73, 69, 196, 67, 45, 51, 57, 
-    128, 67, 45, 49, 56, 128, 66, 90, 85, 78, 199, 66, 90, 72, 201, 66, 89, 
-    69, 76, 79, 82, 85, 83, 83, 73, 65, 78, 45, 85, 75, 82, 65, 73, 78, 73, 
-    65, 206, 66, 217, 66, 88, 71, 128, 66, 87, 73, 128, 66, 87, 69, 69, 128, 
-    66, 87, 69, 128, 66, 87, 65, 128, 66, 85, 85, 77, 73, 83, 72, 128, 66, 
-    85, 212, 66, 85, 83, 83, 89, 69, 82, 85, 128, 66, 85, 82, 213, 66, 85, 
-    82, 50, 128, 66, 85, 210, 66, 85, 79, 88, 128, 66, 85, 79, 80, 128, 66, 
-    85, 79, 128, 66, 85, 77, 80, 217, 66, 85, 76, 85, 71, 128, 66, 85, 76, 
-    85, 199, 66, 85, 76, 76, 83, 69, 89, 69, 128, 66, 85, 76, 76, 211, 66, 
-    85, 76, 76, 69, 84, 128, 66, 85, 76, 76, 69, 212, 66, 85, 76, 76, 128, 
-    66, 85, 75, 89, 128, 66, 85, 72, 73, 196, 66, 85, 71, 73, 78, 69, 83, 
-    197, 66, 85, 67, 75, 76, 69, 128, 66, 83, 84, 65, 82, 128, 66, 83, 75, 
-    85, 210, 66, 83, 75, 65, 173, 66, 83, 68, 85, 211, 66, 82, 85, 83, 72, 
-    128, 66, 82, 85, 83, 200, 66, 82, 79, 78, 90, 69, 128, 66, 82, 79, 75, 
-    69, 206, 66, 82, 79, 65, 196, 66, 82, 73, 83, 84, 76, 69, 128, 66, 82, 
-    73, 68, 71, 197, 66, 82, 69, 86, 73, 83, 128, 66, 82, 69, 86, 69, 45, 77, 
-    65, 67, 82, 79, 78, 128, 66, 82, 69, 86, 197, 66, 82, 69, 65, 84, 200, 
-    66, 82, 69, 65, 75, 84, 72, 82, 79, 85, 71, 72, 128, 66, 82, 68, 193, 66, 
-    82, 65, 78, 67, 72, 73, 78, 199, 66, 82, 65, 78, 67, 72, 128, 66, 82, 65, 
-    78, 67, 200, 66, 82, 65, 75, 67, 69, 84, 128, 66, 82, 65, 67, 75, 69, 84, 
-    69, 196, 66, 82, 65, 67, 75, 69, 212, 66, 82, 65, 67, 69, 128, 66, 81, 
-    128, 66, 79, 87, 84, 73, 69, 128, 66, 79, 87, 84, 73, 197, 66, 79, 87, 
-    128, 66, 79, 215, 66, 79, 85, 78, 68, 65, 82, 217, 66, 79, 84, 84, 79, 
-    77, 45, 76, 73, 71, 72, 84, 69, 196, 66, 79, 84, 84, 79, 77, 128, 66, 79, 
-    84, 84, 79, 205, 66, 79, 82, 85, 84, 79, 128, 66, 79, 79, 77, 69, 82, 65, 
-    78, 71, 128, 66, 79, 78, 69, 128, 66, 79, 76, 212, 66, 79, 68, 89, 128, 
-    66, 79, 65, 82, 128, 66, 79, 65, 128, 66, 76, 85, 69, 128, 66, 76, 79, 
-    79, 68, 128, 66, 76, 79, 67, 75, 128, 66, 76, 69, 78, 68, 69, 196, 66, 
-    76, 65, 78, 75, 128, 66, 76, 65, 78, 203, 66, 76, 65, 68, 197, 66, 76, 
-    65, 67, 75, 70, 79, 79, 212, 66, 76, 65, 67, 75, 45, 76, 69, 84, 84, 69, 
-    210, 66, 76, 65, 67, 75, 45, 70, 69, 65, 84, 72, 69, 82, 69, 196, 66, 76, 
-    65, 67, 75, 128, 66, 75, 65, 173, 66, 73, 84, 84, 69, 82, 128, 66, 73, 
-    84, 73, 78, 199, 66, 73, 83, 77, 73, 76, 76, 65, 200, 66, 73, 83, 72, 79, 
-    80, 128, 66, 73, 83, 69, 67, 84, 73, 78, 199, 66, 73, 83, 65, 72, 128, 
-    66, 73, 82, 85, 128, 66, 73, 82, 71, 65, 128, 66, 73, 82, 68, 128, 66, 
-    73, 79, 72, 65, 90, 65, 82, 196, 66, 73, 78, 79, 67, 85, 76, 65, 210, 66, 
-    73, 78, 68, 73, 78, 199, 66, 73, 78, 68, 73, 128, 66, 73, 78, 65, 82, 
-    217, 66, 73, 76, 65, 66, 73, 65, 204, 66, 73, 71, 128, 66, 73, 199, 66, 
-    73, 69, 84, 128, 66, 73, 68, 69, 78, 84, 65, 204, 66, 73, 66, 76, 69, 45, 
-    67, 82, 69, 197, 66, 73, 66, 128, 66, 201, 66, 72, 85, 128, 66, 72, 79, 
-    79, 128, 66, 72, 79, 128, 66, 72, 73, 128, 66, 72, 69, 84, 72, 128, 66, 
-    72, 69, 69, 128, 66, 72, 69, 128, 66, 72, 65, 77, 128, 66, 72, 65, 128, 
-    66, 69, 89, 89, 65, 76, 128, 66, 69, 88, 128, 66, 69, 86, 69, 82, 65, 71, 
-    69, 128, 66, 69, 84, 87, 69, 69, 78, 128, 66, 69, 84, 87, 69, 69, 206, 
-    66, 69, 84, 72, 128, 66, 69, 84, 65, 128, 66, 69, 84, 193, 66, 69, 84, 
-    128, 66, 69, 212, 66, 69, 83, 73, 68, 197, 66, 69, 82, 75, 65, 78, 65, 
-    206, 66, 69, 82, 66, 69, 210, 66, 69, 80, 128, 66, 69, 79, 82, 195, 66, 
-    69, 78, 90, 69, 78, 197, 66, 69, 78, 68, 69, 128, 66, 69, 78, 68, 128, 
-    66, 69, 206, 66, 69, 76, 84, 128, 66, 69, 76, 212, 66, 69, 76, 79, 215, 
-    66, 69, 76, 76, 128, 66, 69, 76, 204, 66, 69, 76, 71, 84, 72, 79, 210, 
-    66, 69, 73, 84, 72, 128, 66, 69, 72, 73, 78, 196, 66, 69, 72, 69, 72, 
-    128, 66, 69, 72, 69, 200, 66, 69, 72, 128, 66, 69, 200, 66, 69, 71, 73, 
-    78, 78, 73, 78, 71, 128, 66, 69, 71, 73, 206, 66, 69, 70, 79, 82, 197, 
-    66, 69, 69, 84, 65, 128, 66, 69, 69, 72, 73, 86, 69, 128, 66, 69, 69, 72, 
-    128, 66, 69, 69, 200, 66, 69, 67, 65, 85, 83, 69, 128, 66, 69, 65, 86, 
-    69, 210, 66, 69, 65, 84, 128, 66, 69, 65, 78, 128, 66, 69, 65, 77, 69, 
-    196, 66, 67, 65, 68, 128, 66, 67, 65, 196, 66, 66, 89, 88, 128, 66, 66, 
-    89, 84, 128, 66, 66, 89, 80, 128, 66, 66, 89, 128, 66, 66, 85, 88, 128, 
-    66, 66, 85, 84, 128, 66, 66, 85, 82, 88, 128, 66, 66, 85, 82, 128, 66, 
-    66, 85, 80, 128, 66, 66, 85, 79, 88, 128, 66, 66, 85, 79, 80, 128, 66, 
-    66, 85, 79, 128, 66, 66, 85, 128, 66, 66, 79, 88, 128, 66, 66, 79, 84, 
-    128, 66, 66, 79, 80, 128, 66, 66, 79, 128, 66, 66, 73, 88, 128, 66, 66, 
-    73, 84, 128, 66, 66, 73, 80, 128, 66, 66, 73, 69, 88, 128, 66, 66, 73, 
-    69, 84, 128, 66, 66, 73, 69, 80, 128, 66, 66, 73, 69, 128, 66, 66, 73, 
-    128, 66, 66, 69, 88, 128, 66, 66, 69, 80, 128, 66, 66, 69, 128, 66, 66, 
-    65, 88, 128, 66, 66, 65, 84, 128, 66, 66, 65, 80, 128, 66, 66, 65, 128, 
-    66, 65, 89, 65, 78, 78, 65, 128, 66, 65, 85, 128, 66, 65, 84, 72, 84, 85, 
-    66, 128, 66, 65, 84, 72, 65, 77, 65, 83, 65, 84, 128, 66, 65, 83, 83, 65, 
-    128, 66, 65, 83, 72, 75, 73, 210, 66, 65, 83, 72, 128, 66, 65, 83, 69, 
-    66, 65, 76, 76, 128, 66, 65, 83, 69, 128, 66, 65, 83, 197, 66, 65, 82, 
-    83, 128, 66, 65, 82, 82, 73, 69, 82, 128, 66, 65, 82, 82, 69, 75, 72, 
-    128, 66, 65, 82, 82, 69, 69, 128, 66, 65, 82, 82, 69, 197, 66, 65, 82, 
-    76, 73, 78, 69, 128, 66, 65, 82, 76, 69, 89, 128, 66, 65, 82, 73, 89, 79, 
-    79, 83, 65, 78, 128, 66, 65, 82, 65, 50, 128, 66, 65, 210, 66, 65, 78, 
-    84, 79, 67, 128, 66, 65, 78, 203, 66, 65, 78, 68, 128, 66, 65, 78, 50, 
-    128, 66, 65, 78, 178, 66, 65, 77, 66, 79, 79, 83, 128, 66, 65, 77, 66, 
-    79, 79, 128, 66, 65, 76, 85, 68, 65, 128, 66, 65, 76, 76, 79, 212, 66, 
-    65, 76, 76, 79, 79, 78, 45, 83, 80, 79, 75, 69, 196, 66, 65, 76, 65, 71, 
-    128, 66, 65, 76, 128, 66, 65, 204, 66, 65, 73, 82, 75, 65, 78, 128, 66, 
-    65, 73, 77, 65, 73, 128, 66, 65, 72, 84, 128, 66, 65, 72, 73, 82, 71, 79, 
-    77, 85, 75, 72, 65, 128, 66, 65, 72, 65, 82, 50, 128, 66, 65, 71, 65, 
-    128, 66, 65, 71, 51, 128, 66, 65, 199, 66, 65, 68, 71, 69, 82, 128, 66, 
-    65, 68, 128, 66, 65, 67, 75, 83, 80, 65, 67, 69, 128, 66, 65, 67, 75, 83, 
-    76, 65, 83, 72, 128, 66, 65, 67, 75, 83, 76, 65, 83, 200, 66, 65, 67, 75, 
-    45, 84, 73, 76, 84, 69, 196, 66, 65, 67, 75, 128, 66, 65, 67, 203, 66, 
-    65, 65, 82, 69, 82, 85, 128, 66, 51, 48, 53, 128, 66, 50, 53, 57, 128, 
-    66, 50, 53, 56, 128, 66, 50, 53, 55, 128, 66, 50, 53, 54, 128, 66, 50, 
-    53, 53, 128, 66, 50, 53, 180, 66, 50, 53, 51, 128, 66, 50, 53, 50, 128, 
-    66, 50, 53, 49, 128, 66, 50, 53, 48, 128, 66, 50, 52, 57, 128, 66, 50, 
-    52, 56, 128, 66, 50, 52, 183, 66, 50, 52, 54, 128, 66, 50, 52, 53, 128, 
-    66, 50, 52, 179, 66, 50, 52, 178, 66, 50, 52, 177, 66, 50, 52, 176, 66, 
-    50, 51, 54, 128, 66, 50, 51, 52, 128, 66, 50, 51, 179, 66, 50, 51, 50, 
-    128, 66, 50, 51, 177, 66, 50, 51, 176, 66, 50, 50, 57, 128, 66, 50, 50, 
-    56, 128, 66, 50, 50, 55, 128, 66, 50, 50, 54, 128, 66, 50, 50, 181, 66, 
-    50, 50, 50, 128, 66, 50, 50, 49, 128, 66, 50, 50, 176, 66, 50, 49, 57, 
-    128, 66, 50, 49, 56, 128, 66, 50, 49, 55, 128, 66, 50, 49, 54, 128, 66, 
-    50, 49, 53, 128, 66, 50, 49, 52, 128, 66, 50, 49, 51, 128, 66, 50, 49, 
-    50, 128, 66, 50, 49, 49, 128, 66, 50, 49, 48, 128, 66, 50, 48, 57, 128, 
-    66, 50, 48, 56, 128, 66, 50, 48, 55, 128, 66, 50, 48, 54, 128, 66, 50, 
-    48, 53, 128, 66, 50, 48, 52, 128, 66, 50, 48, 51, 128, 66, 50, 48, 50, 
-    128, 66, 50, 48, 49, 128, 66, 50, 48, 48, 128, 66, 49, 57, 177, 66, 49, 
-    57, 48, 128, 66, 49, 56, 57, 128, 66, 49, 56, 53, 128, 66, 49, 56, 52, 
-    128, 66, 49, 56, 51, 128, 66, 49, 56, 50, 128, 66, 49, 56, 49, 128, 66, 
-    49, 56, 48, 128, 66, 49, 55, 57, 128, 66, 49, 55, 56, 128, 66, 49, 55, 
-    55, 128, 66, 49, 55, 182, 66, 49, 55, 52, 128, 66, 49, 55, 179, 66, 49, 
-    55, 50, 128, 66, 49, 55, 49, 128, 66, 49, 55, 48, 128, 66, 49, 54, 57, 
-    128, 66, 49, 54, 56, 128, 66, 49, 54, 55, 128, 66, 49, 54, 54, 128, 66, 
-    49, 54, 53, 128, 66, 49, 54, 52, 128, 66, 49, 54, 179, 66, 49, 54, 178, 
-    66, 49, 54, 49, 128, 66, 49, 54, 48, 128, 66, 49, 53, 185, 66, 49, 53, 
-    56, 128, 66, 49, 53, 55, 128, 66, 49, 53, 182, 66, 49, 53, 53, 128, 66, 
-    49, 53, 52, 128, 66, 49, 53, 51, 128, 66, 49, 53, 50, 128, 66, 49, 53, 
-    177, 66, 49, 53, 48, 128, 66, 49, 52, 54, 128, 66, 49, 52, 181, 66, 49, 
-    52, 50, 128, 66, 49, 52, 177, 66, 49, 52, 176, 66, 49, 51, 181, 66, 49, 
-    51, 179, 66, 49, 51, 50, 128, 66, 49, 51, 177, 66, 49, 51, 176, 66, 49, 
-    50, 184, 66, 49, 50, 183, 66, 49, 50, 181, 66, 49, 50, 179, 66, 49, 50, 
-    178, 66, 49, 50, 177, 66, 49, 50, 176, 66, 49, 48, 57, 205, 66, 49, 48, 
-    57, 198, 66, 49, 48, 56, 205, 66, 49, 48, 56, 198, 66, 49, 48, 55, 205, 
-    66, 49, 48, 55, 198, 66, 49, 48, 54, 205, 66, 49, 48, 54, 198, 66, 49, 
-    48, 53, 205, 66, 49, 48, 53, 198, 66, 49, 48, 181, 66, 49, 48, 180, 66, 
-    49, 48, 178, 66, 49, 48, 176, 66, 48, 57, 177, 66, 48, 57, 176, 66, 48, 
-    56, 57, 128, 66, 48, 56, 183, 66, 48, 56, 54, 128, 66, 48, 56, 181, 66, 
-    48, 56, 51, 128, 66, 48, 56, 50, 128, 66, 48, 56, 177, 66, 48, 56, 176, 
-    66, 48, 55, 57, 128, 66, 48, 55, 184, 66, 48, 55, 183, 66, 48, 55, 182, 
-    66, 48, 55, 181, 66, 48, 55, 180, 66, 48, 55, 179, 66, 48, 55, 178, 66, 
-    48, 55, 177, 66, 48, 55, 176, 66, 48, 54, 185, 66, 48, 54, 184, 66, 48, 
-    54, 183, 66, 48, 54, 182, 66, 48, 54, 181, 66, 48, 54, 52, 128, 66, 48, 
-    54, 51, 128, 66, 48, 54, 178, 66, 48, 54, 177, 66, 48, 54, 176, 66, 48, 
-    53, 185, 66, 48, 53, 184, 66, 48, 53, 183, 66, 48, 53, 54, 128, 66, 48, 
-    53, 181, 66, 48, 53, 180, 66, 48, 53, 179, 66, 48, 53, 178, 66, 48, 53, 
-    177, 66, 48, 53, 176, 66, 48, 52, 57, 128, 66, 48, 52, 184, 66, 48, 52, 
-    55, 128, 66, 48, 52, 182, 66, 48, 52, 181, 66, 48, 52, 180, 66, 48, 52, 
-    179, 66, 48, 52, 178, 66, 48, 52, 177, 66, 48, 52, 176, 66, 48, 51, 185, 
-    66, 48, 51, 184, 66, 48, 51, 183, 66, 48, 51, 182, 66, 48, 51, 52, 128, 
-    66, 48, 51, 179, 66, 48, 51, 178, 66, 48, 51, 177, 66, 48, 51, 176, 66, 
-    48, 50, 185, 66, 48, 50, 184, 66, 48, 50, 183, 66, 48, 50, 182, 66, 48, 
-    50, 181, 66, 48, 50, 180, 66, 48, 50, 179, 66, 48, 50, 50, 128, 66, 48, 
-    50, 177, 66, 48, 50, 176, 66, 48, 49, 57, 128, 66, 48, 49, 56, 128, 66, 
-    48, 49, 183, 66, 48, 49, 182, 66, 48, 49, 181, 66, 48, 49, 180, 66, 48, 
-    49, 179, 66, 48, 49, 178, 66, 48, 49, 177, 66, 48, 49, 176, 66, 48, 48, 
-    57, 128, 66, 48, 48, 185, 66, 48, 48, 56, 128, 66, 48, 48, 184, 66, 48, 
-    48, 55, 128, 66, 48, 48, 183, 66, 48, 48, 54, 128, 66, 48, 48, 182, 66, 
-    48, 48, 53, 65, 128, 66, 48, 48, 53, 128, 66, 48, 48, 181, 66, 48, 48, 
-    52, 128, 66, 48, 48, 180, 66, 48, 48, 51, 128, 66, 48, 48, 179, 66, 48, 
-    48, 50, 128, 66, 48, 48, 178, 66, 48, 48, 49, 128, 66, 48, 48, 177, 65, 
-    90, 85, 128, 65, 89, 69, 210, 65, 89, 66, 128, 65, 89, 65, 72, 128, 65, 
-    88, 69, 128, 65, 87, 69, 128, 65, 86, 69, 83, 84, 65, 206, 65, 86, 69, 
-    82, 65, 71, 197, 65, 86, 65, 75, 82, 65, 72, 65, 83, 65, 78, 89, 65, 128, 
-    65, 86, 65, 71, 82, 65, 72, 65, 128, 65, 85, 89, 65, 78, 78, 65, 128, 65, 
-    85, 84, 85, 77, 78, 128, 65, 85, 83, 84, 82, 65, 204, 65, 85, 82, 65, 77, 
-    65, 90, 68, 65, 65, 72, 65, 128, 65, 85, 82, 65, 77, 65, 90, 68, 65, 65, 
-    45, 50, 128, 65, 85, 82, 65, 77, 65, 90, 68, 65, 65, 128, 65, 85, 78, 78, 
-    128, 65, 85, 71, 85, 83, 84, 128, 65, 85, 71, 77, 69, 78, 84, 65, 84, 73, 
-    79, 206, 65, 85, 69, 128, 65, 84, 84, 73, 195, 65, 84, 84, 72, 65, 67, 
-    65, 78, 128, 65, 84, 84, 69, 78, 84, 73, 79, 78, 128, 65, 84, 84, 65, 
-    203, 65, 84, 79, 205, 65, 84, 78, 65, 200, 65, 84, 77, 65, 65, 85, 128, 
-    65, 84, 73, 89, 65, 128, 65, 84, 72, 65, 82, 86, 65, 86, 69, 68, 73, 195, 
-    65, 84, 72, 65, 80, 65, 83, 67, 65, 206, 65, 83, 89, 85, 82, 193, 65, 83, 
-    89, 77, 80, 84, 79, 84, 73, 67, 65, 76, 76, 217, 65, 83, 84, 82, 79, 76, 
-    79, 71, 73, 67, 65, 204, 65, 83, 84, 69, 82, 73, 83, 77, 128, 65, 83, 84, 
-    69, 82, 73, 83, 75, 211, 65, 83, 84, 69, 82, 73, 83, 75, 128, 65, 83, 84, 
-    69, 82, 73, 83, 203, 65, 83, 84, 69, 82, 73, 83, 67, 85, 83, 128, 65, 83, 
-    83, 89, 82, 73, 65, 206, 65, 83, 83, 69, 82, 84, 73, 79, 78, 128, 65, 83, 
-    80, 73, 82, 65, 84, 69, 196, 65, 83, 80, 69, 82, 128, 65, 83, 72, 71, 65, 
-    66, 128, 65, 83, 72, 57, 128, 65, 83, 72, 178, 65, 83, 67, 69, 78, 84, 
-    128, 65, 83, 67, 69, 78, 68, 73, 78, 199, 65, 83, 65, 76, 50, 128, 65, 
-    82, 85, 72, 85, 65, 128, 65, 82, 84, 65, 66, 197, 65, 82, 83, 69, 79, 83, 
-    128, 65, 82, 83, 69, 79, 211, 65, 82, 82, 79, 87, 83, 128, 65, 82, 82, 
-    79, 87, 72, 69, 65, 68, 128, 65, 82, 82, 79, 87, 72, 69, 65, 196, 65, 82, 
-    82, 79, 87, 45, 84, 65, 73, 76, 128, 65, 82, 82, 73, 86, 69, 128, 65, 82, 
-    82, 65, 89, 128, 65, 82, 80, 69, 71, 71, 73, 65, 84, 207, 65, 82, 79, 85, 
-    83, 73, 78, 199, 65, 82, 79, 85, 82, 193, 65, 82, 79, 85, 78, 68, 45, 80, 
-    82, 79, 70, 73, 76, 69, 128, 65, 82, 79, 85, 78, 196, 65, 82, 77, 89, 
-    128, 65, 82, 77, 79, 85, 82, 128, 65, 82, 205, 65, 82, 76, 65, 85, 199, 
-    65, 82, 75, 84, 73, 75, 207, 65, 82, 75, 65, 66, 128, 65, 82, 75, 65, 65, 
-    78, 85, 128, 65, 82, 73, 83, 84, 69, 82, 65, 128, 65, 82, 73, 83, 84, 69, 
-    82, 193, 65, 82, 73, 69, 83, 128, 65, 82, 71, 79, 84, 69, 82, 73, 128, 
-    65, 82, 71, 79, 83, 89, 78, 84, 72, 69, 84, 79, 78, 128, 65, 82, 71, 73, 
-    128, 65, 82, 69, 80, 65, 128, 65, 82, 68, 72, 65, 86, 73, 83, 65, 82, 71, 
-    65, 128, 65, 82, 67, 72, 65, 73, 79, 78, 128, 65, 82, 67, 72, 65, 73, 79, 
-    206, 65, 82, 67, 72, 65, 73, 195, 65, 82, 67, 200, 65, 82, 67, 128, 65, 
-    82, 195, 65, 82, 65, 77, 65, 73, 195, 65, 82, 65, 69, 65, 69, 128, 65, 
-    82, 65, 69, 65, 45, 85, 128, 65, 82, 65, 69, 65, 45, 73, 128, 65, 82, 65, 
-    69, 65, 45, 69, 79, 128, 65, 82, 65, 69, 65, 45, 69, 128, 65, 82, 65, 69, 
-    65, 45, 65, 128, 65, 82, 65, 68, 128, 65, 82, 65, 196, 65, 82, 65, 66, 
-    73, 67, 45, 73, 78, 68, 73, 195, 65, 82, 65, 66, 73, 65, 206, 65, 82, 45, 
-    82, 65, 72, 77, 65, 206, 65, 82, 45, 82, 65, 72, 69, 69, 77, 128, 65, 81, 
-    85, 65, 82, 73, 85, 83, 128, 65, 80, 85, 206, 65, 80, 82, 73, 76, 128, 
-    65, 80, 80, 82, 79, 88, 73, 77, 65, 84, 69, 76, 217, 65, 80, 80, 82, 79, 
-    88, 73, 77, 65, 84, 69, 128, 65, 80, 80, 82, 79, 65, 67, 72, 69, 211, 65, 
-    80, 80, 82, 79, 65, 67, 72, 128, 65, 80, 80, 76, 73, 67, 65, 84, 73, 79, 
-    78, 128, 65, 80, 79, 84, 72, 69, 83, 128, 65, 80, 79, 84, 72, 69, 77, 65, 
-    128, 65, 80, 79, 83, 84, 82, 79, 80, 72, 69, 128, 65, 80, 79, 83, 84, 82, 
-    79, 70, 79, 83, 128, 65, 80, 79, 83, 84, 82, 79, 70, 79, 211, 65, 80, 79, 
-    83, 84, 82, 79, 70, 79, 201, 65, 80, 79, 68, 69, 88, 73, 65, 128, 65, 80, 
-    79, 68, 69, 82, 77, 193, 65, 80, 76, 79, 85, 78, 128, 65, 80, 76, 201, 
-    65, 80, 73, 78, 128, 65, 80, 69, 83, 207, 65, 80, 65, 82, 84, 128, 65, 
-    80, 65, 65, 84, 79, 128, 65, 78, 85, 83, 86, 65, 82, 65, 89, 65, 128, 65, 
-    78, 85, 83, 86, 65, 82, 65, 128, 65, 78, 85, 83, 86, 65, 82, 193, 65, 78, 
-    85, 68, 65, 84, 84, 65, 128, 65, 78, 85, 68, 65, 84, 84, 193, 65, 78, 84, 
-    73, 82, 69, 83, 84, 82, 73, 67, 84, 73, 79, 78, 128, 65, 78, 84, 73, 75, 
-    69, 78, 79, 77, 65, 128, 65, 78, 84, 73, 75, 69, 78, 79, 75, 89, 76, 73, 
-    83, 77, 65, 128, 65, 78, 84, 73, 70, 79, 78, 73, 65, 128, 65, 78, 84, 73, 
-    67, 76, 79, 67, 75, 87, 73, 83, 69, 45, 82, 79, 84, 65, 84, 69, 196, 65, 
-    78, 84, 73, 67, 76, 79, 67, 75, 87, 73, 83, 197, 65, 78, 84, 65, 82, 71, 
-    79, 77, 85, 75, 72, 65, 128, 65, 78, 83, 85, 218, 65, 78, 83, 72, 69, 
-    128, 65, 78, 80, 69, 65, 128, 65, 78, 207, 65, 78, 78, 85, 73, 84, 217, 
-    65, 78, 78, 79, 84, 65, 84, 73, 79, 206, 65, 78, 78, 65, 65, 85, 128, 65, 
-    78, 75, 72, 128, 65, 78, 72, 85, 128, 65, 78, 71, 85, 76, 65, 82, 128, 
-    65, 78, 71, 83, 84, 82, 79, 205, 65, 78, 71, 75, 72, 65, 78, 75, 72, 85, 
-    128, 65, 78, 71, 69, 68, 128, 65, 78, 68, 65, 80, 128, 65, 78, 67, 79, 
-    82, 65, 128, 65, 78, 67, 72, 79, 82, 128, 65, 78, 65, 84, 82, 73, 67, 72, 
-    73, 83, 77, 65, 128, 65, 78, 65, 80, 128, 65, 77, 80, 83, 128, 65, 77, 
-    80, 69, 82, 83, 65, 78, 68, 128, 65, 77, 79, 85, 78, 212, 65, 77, 66, 
-    193, 65, 77, 65, 82, 128, 65, 77, 65, 210, 65, 77, 65, 76, 71, 65, 77, 
-    65, 84, 73, 79, 206, 65, 76, 86, 69, 79, 76, 65, 210, 65, 76, 84, 69, 82, 
-    78, 65, 84, 73, 86, 197, 65, 76, 84, 69, 82, 78, 65, 84, 73, 79, 206, 65, 
-    76, 84, 69, 82, 78, 65, 84, 197, 65, 76, 84, 65, 128, 65, 76, 80, 72, 65, 
-    128, 65, 76, 80, 72, 193, 65, 76, 80, 65, 80, 82, 65, 78, 65, 128, 65, 
-    76, 80, 65, 80, 82, 65, 65, 78, 193, 65, 76, 80, 65, 128, 65, 76, 77, 79, 
-    83, 212, 65, 76, 76, 79, 128, 65, 76, 76, 73, 65, 78, 67, 69, 128, 65, 
-    76, 76, 201, 65, 76, 76, 65, 200, 65, 76, 73, 71, 78, 69, 196, 65, 76, 
-    73, 70, 85, 128, 65, 76, 71, 73, 218, 65, 76, 70, 65, 128, 65, 76, 69, 
-    85, 212, 65, 76, 69, 80, 72, 128, 65, 76, 69, 77, 66, 73, 67, 128, 65, 
-    76, 69, 70, 128, 65, 76, 65, 89, 72, 69, 128, 65, 76, 65, 89, 72, 197, 
-    65, 76, 65, 80, 72, 128, 65, 76, 45, 76, 65, 75, 85, 78, 65, 128, 65, 75, 
-    84, 73, 69, 83, 69, 76, 83, 75, 65, 66, 128, 65, 75, 72, 77, 73, 77, 73, 
-    195, 65, 75, 66, 65, 210, 65, 75, 65, 82, 65, 128, 65, 75, 65, 82, 193, 
-    65, 73, 89, 65, 78, 78, 65, 128, 65, 73, 86, 73, 76, 73, 203, 65, 73, 84, 
-    79, 206, 65, 73, 82, 80, 76, 65, 78, 69, 128, 65, 73, 78, 78, 128, 65, 
-    73, 76, 77, 128, 65, 73, 75, 65, 82, 65, 128, 65, 73, 72, 86, 85, 83, 
-    128, 65, 72, 83, 68, 65, 128, 65, 72, 83, 65, 128, 65, 72, 65, 71, 71, 
-    65, 210, 65, 72, 65, 68, 128, 65, 71, 85, 78, 71, 128, 65, 71, 79, 71, 
-    201, 65, 71, 71, 82, 65, 86, 65, 84, 73, 79, 78, 128, 65, 71, 71, 82, 65, 
-    86, 65, 84, 69, 196, 65, 71, 65, 73, 78, 128, 65, 70, 84, 69, 210, 65, 
-    70, 83, 65, 65, 81, 128, 65, 70, 82, 73, 67, 65, 206, 65, 70, 79, 82, 69, 
-    77, 69, 78, 84, 73, 79, 78, 69, 68, 128, 65, 70, 71, 72, 65, 78, 201, 65, 
-    69, 89, 65, 78, 78, 65, 128, 65, 69, 89, 128, 65, 69, 84, 128, 65, 69, 
-    83, 67, 85, 76, 65, 80, 73, 85, 83, 128, 65, 69, 83, 67, 128, 65, 69, 83, 
-    128, 65, 69, 82, 128, 65, 69, 76, 65, 45, 80, 73, 76, 76, 65, 128, 65, 
-    69, 76, 128, 65, 69, 75, 128, 65, 69, 71, 69, 65, 206, 65, 69, 71, 128, 
-    65, 69, 69, 89, 65, 78, 78, 65, 128, 65, 69, 69, 128, 65, 69, 68, 65, 45, 
-    80, 73, 76, 76, 65, 128, 65, 69, 68, 128, 65, 69, 66, 128, 65, 197, 65, 
-    68, 86, 65, 78, 67, 69, 128, 65, 68, 69, 71, 128, 65, 68, 69, 199, 65, 
-    68, 68, 82, 69, 83, 83, 69, 196, 65, 68, 68, 65, 75, 128, 65, 68, 65, 
-    203, 65, 67, 85, 84, 69, 45, 77, 65, 67, 82, 79, 78, 128, 65, 67, 85, 84, 
-    69, 45, 71, 82, 65, 86, 69, 45, 65, 67, 85, 84, 69, 128, 65, 67, 85, 84, 
-    197, 65, 67, 84, 85, 65, 76, 76, 217, 65, 67, 84, 73, 86, 65, 84, 197, 
-    65, 67, 82, 79, 80, 72, 79, 78, 73, 195, 65, 67, 75, 78, 79, 87, 76, 69, 
-    68, 71, 69, 128, 65, 67, 67, 85, 77, 85, 76, 65, 84, 73, 79, 78, 128, 65, 
-    67, 67, 79, 85, 78, 212, 65, 67, 67, 69, 78, 84, 45, 83, 84, 65, 67, 67, 
-    65, 84, 79, 128, 65, 67, 67, 69, 78, 84, 128, 65, 67, 67, 69, 78, 212, 
-    65, 67, 65, 68, 69, 77, 217, 65, 66, 89, 83, 77, 65, 204, 65, 66, 85, 78, 
-    68, 65, 78, 67, 69, 128, 65, 66, 75, 72, 65, 83, 73, 65, 206, 65, 66, 66, 
-    82, 69, 86, 73, 65, 84, 73, 79, 206, 65, 66, 65, 70, 73, 76, 73, 128, 65, 
-    66, 178, 65, 65, 89, 65, 78, 78, 65, 128, 65, 65, 89, 128, 65, 65, 87, 
-    128, 65, 65, 79, 128, 65, 65, 74, 128, 65, 65, 66, 65, 65, 70, 73, 76, 
-    73, 128, 65, 65, 48, 51, 50, 128, 65, 65, 48, 51, 49, 128, 65, 65, 48, 
-    51, 48, 128, 65, 65, 48, 50, 57, 128, 65, 65, 48, 50, 56, 128, 65, 65, 
-    48, 50, 55, 128, 65, 65, 48, 50, 54, 128, 65, 65, 48, 50, 53, 128, 65, 
-    65, 48, 50, 52, 128, 65, 65, 48, 50, 51, 128, 65, 65, 48, 50, 50, 128, 
-    65, 65, 48, 50, 49, 128, 65, 65, 48, 50, 48, 128, 65, 65, 48, 49, 57, 
-    128, 65, 65, 48, 49, 56, 128, 65, 65, 48, 49, 55, 128, 65, 65, 48, 49, 
-    54, 128, 65, 65, 48, 49, 53, 128, 65, 65, 48, 49, 52, 128, 65, 65, 48, 
-    49, 51, 128, 65, 65, 48, 49, 50, 128, 65, 65, 48, 49, 49, 128, 65, 65, 
-    48, 49, 48, 128, 65, 65, 48, 48, 57, 128, 65, 65, 48, 48, 56, 128, 65, 
-    65, 48, 48, 55, 66, 128, 65, 65, 48, 48, 55, 65, 128, 65, 65, 48, 48, 55, 
-    128, 65, 65, 48, 48, 54, 128, 65, 65, 48, 48, 53, 128, 65, 65, 48, 48, 
-    52, 128, 65, 65, 48, 48, 51, 128, 65, 65, 48, 48, 50, 128, 65, 65, 48, 
-    48, 49, 128, 65, 48, 55, 48, 128, 65, 48, 54, 57, 128, 65, 48, 54, 56, 
-    128, 65, 48, 54, 55, 128, 65, 48, 54, 54, 128, 65, 48, 54, 53, 128, 65, 
-    48, 54, 52, 128, 65, 48, 54, 51, 128, 65, 48, 54, 50, 128, 65, 48, 54, 
-    49, 128, 65, 48, 54, 48, 128, 65, 48, 53, 57, 128, 65, 48, 53, 56, 128, 
-    65, 48, 53, 55, 128, 65, 48, 53, 54, 128, 65, 48, 53, 53, 128, 65, 48, 
-    53, 52, 128, 65, 48, 53, 51, 128, 65, 48, 53, 50, 128, 65, 48, 53, 49, 
-    128, 65, 48, 53, 48, 128, 65, 48, 52, 57, 128, 65, 48, 52, 56, 128, 65, 
-    48, 52, 55, 128, 65, 48, 52, 54, 128, 65, 48, 52, 53, 65, 128, 65, 48, 
-    52, 53, 128, 65, 48, 52, 52, 128, 65, 48, 52, 51, 65, 128, 65, 48, 52, 
-    51, 128, 65, 48, 52, 50, 65, 128, 65, 48, 52, 50, 128, 65, 48, 52, 49, 
-    128, 65, 48, 52, 48, 65, 128, 65, 48, 52, 48, 128, 65, 48, 51, 57, 128, 
-    65, 48, 51, 56, 128, 65, 48, 51, 55, 128, 65, 48, 51, 54, 128, 65, 48, 
-    51, 53, 128, 65, 48, 51, 52, 128, 65, 48, 51, 51, 128, 65, 48, 51, 50, 
-    65, 128, 65, 48, 49, 55, 65, 128, 65, 48, 49, 52, 65, 128, 65, 48, 48, 
-    54, 66, 128, 65, 48, 48, 54, 65, 128, 65, 48, 48, 53, 65, 128, 65, 45, 
-    69, 85, 128, 45, 85, 205, 45, 80, 72, 82, 85, 128, 45, 75, 72, 89, 85, 
-    196, 45, 75, 72, 89, 73, 76, 128, 45, 68, 90, 85, 196, 45, 67, 72, 65, 
-    210, 45, 67, 72, 65, 76, 128, 
-};
-
-static unsigned int lexicon_offset[] = {
-    0, 0, 6, 10, 15, 23, 27, 34, 39, 41, 44, 52, 62, 68, 81, 93, 102, 108, 
-    113, 121, 130, 135, 139, 145, 150, 158, 161, 168, 173, 181, 186, 192, 
-    200, 207, 217, 224, 227, 236, 239, 242, 247, 253, 262, 266, 273, 280, 
-    285, 294, 136, 302, 303, 309, 315, 323, 329, 335, 340, 346, 352, 360, 
-    367, 369, 372, 376, 383, 390, 396, 403, 408, 410, 418, 421, 426, 307, 
-    428, 430, 436, 441, 450, 455, 460, 470, 474, 487, 491, 496, 505, 508, 
-    514, 518, 526, 536, 544, 551, 560, 568, 576, 581, 589, 600, 604, 611, 
-    614, 620, 624, 628, 629, 634, 638, 640, 643, 652, 322, 655, 659, 664, 
-    672, 676, 678, 681, 687, 694, 701, 710, 719, 722, 732, 741, 750, 756, 
-    762, 769, 772, 780, 788, 792, 796, 804, 813, 822, 827, 831, 686, 838, 
-    846, 850, 854, 857, 862, 867, 871, 879, 794, 609, 882, 887, 225, 890, 
-    895, 905, 914, 920, 927, 934, 942, 946, 954, 960, 967, 973, 979, 984, 
-    988, 994, 1007, 1012, 1015, 1020, 22, 1024, 1027, 1037, 1042, 1046, 1055, 
-    1058, 1064, 1074, 1077, 111, 1081, 1086, 1092, 1096, 1101, 1107, 1112, 
-    1115, 1122, 1124, 1126, 1134, 1144, 1147, 1150, 1157, 1165, 338, 1167, 
-    1170, 1175, 1183, 1192, 1195, 1204, 1210, 1216, 1218, 1223, 1228, 1234, 
-    1239, 1244, 1248, 1253, 1259, 1264, 1269, 1273, 1278, 1283, 1287, 1292, 
-    1297, 1302, 1308, 1314, 1320, 1325, 1329, 1334, 1339, 1344, 1348, 1353, 
-    1358, 1363, 1368, 1219, 1224, 1229, 1235, 1240, 1372, 1245, 1378, 1387, 
-    1249, 1391, 1254, 1260, 1265, 1395, 1400, 1405, 1409, 1413, 1419, 1423, 
-    1270, 1426, 1430, 1274, 1436, 1279, 1440, 1444, 1284, 1448, 1453, 1457, 
-    1460, 1464, 1288, 1293, 1469, 1298, 1475, 1481, 1487, 1493, 1303, 1315, 
-    1321, 1497, 1501, 1505, 1508, 1326, 1512, 1514, 1519, 1524, 1530, 1535, 
-    1540, 1544, 1549, 1554, 1559, 1564, 1570, 1575, 1580, 1586, 1592, 1597, 
-    1601, 1606, 1611, 1616, 1621, 1625, 1633, 1637, 1642, 1647, 1652, 1657, 
-    1661, 1664, 1669, 1674, 1679, 1684, 1690, 1695, 1699, 1330, 1702, 1707, 
-    1712, 1335, 1716, 1720, 1727, 1340, 1734, 1345, 1738, 1740, 1745, 1751, 
-    1349, 1756, 1765, 1354, 1770, 1776, 1359, 1781, 1786, 1789, 1794, 1798, 
-    1802, 1806, 1809, 1813, 1364, 1369, 1040, 1818, 1824, 1830, 1836, 1842, 
-    1848, 1854, 1860, 1866, 1871, 1877, 1883, 1889, 1895, 1901, 1907, 1913, 
-    1919, 1925, 1930, 1935, 1940, 1945, 1950, 1955, 1960, 1965, 1970, 1975, 
-    1981, 1986, 1992, 1997, 2003, 2009, 2014, 2020, 2026, 2032, 2038, 2043, 
-    2048, 2050, 2051, 2055, 2059, 2064, 2068, 2072, 2076, 2080, 2083, 2088, 
-    2092, 2097, 2101, 2105, 2110, 2114, 2117, 2121, 2135, 2139, 2143, 2146, 
-    2151, 2155, 2159, 2163, 2168, 2173, 2178, 2182, 2187, 2191, 2196, 2203, 
-    2209, 2214, 2219, 2224, 2230, 2235, 2241, 2246, 2249, 1236, 2251, 2258, 
-    2266, 2276, 2285, 2299, 2303, 2307, 2320, 2328, 2332, 2337, 2341, 2345, 
-    2349, 2354, 2359, 2364, 2368, 2371, 2375, 2382, 2389, 2395, 2400, 2405, 
-    2411, 2417, 2422, 2425, 1742, 2427, 2433, 2437, 2442, 2446, 2450, 1747, 
-    1753, 2455, 2459, 2462, 2467, 2472, 2477, 2481, 2488, 2493, 2496, 2503, 
-    2509, 2513, 2517, 2521, 2527, 2533, 2547, 2564, 2579, 2594, 2603, 2608, 
-    2612, 2617, 2622, 2626, 2638, 2645, 2651, 2199, 2657, 2664, 2670, 2673, 
-    2680, 2684, 2688, 2692, 2073, 2696, 2701, 2706, 2710, 2718, 2722, 2726, 
-    2730, 2735, 2740, 2745, 2749, 2754, 2759, 2763, 2768, 2772, 2775, 2779, 
-    2783, 2788, 2792, 2796, 2802, 2811, 2815, 2819, 2825, 2830, 2837, 2841, 
-    2851, 2855, 2860, 2864, 2869, 2875, 2880, 2884, 2385, 2888, 2893, 2899, 
-    2904, 2908, 2913, 2918, 2922, 2928, 2933, 2939, 2943, 2949, 2954, 2959, 
-    2964, 2969, 2974, 2979, 2984, 2989, 2994, 3000, 3005, 1246, 80, 3011, 
-    3015, 3019, 3023, 3028, 3032, 3036, 3040, 3044, 3049, 3053, 3058, 3062, 
-    3065, 3069, 3074, 3078, 3083, 3087, 3091, 3095, 3100, 3104, 3107, 3120, 
-    3124, 3128, 3132, 3136, 3140, 3143, 3147, 3151, 3156, 3160, 3165, 3170, 
-    3175, 3179, 3182, 3185, 3191, 3195, 3199, 3202, 3206, 3210, 3213, 3219, 
-    3224, 3229, 3235, 3240, 3245, 3251, 3257, 3262, 3267, 3272, 1044, 507, 
-    3277, 3280, 3285, 3289, 3292, 3297, 3302, 3306, 3311, 3315, 3320, 3324, 
-    3328, 3331, 3337, 3344, 3350, 3355, 3359, 3364, 3368, 3378, 3382, 3386, 
-    3391, 3396, 3406, 2084, 3411, 3415, 3418, 3424, 3431, 3435, 621, 720, 
-    3439, 3446, 3453, 3459, 3464, 3470, 3475, 2093, 3479, 3487, 555, 3493, 
-    3504, 3508, 3518, 2098, 3524, 3529, 3544, 3550, 3557, 3567, 3573, 3578, 
-    3584, 3587, 3591, 3598, 3603, 3607, 3611, 3615, 3619, 3624, 3630, 3070, 
-    3635, 3647, 1546, 3654, 3657, 3661, 3664, 3668, 3682, 3686, 3689, 3693, 
-    3698, 3702, 3706, 3712, 3718, 3723, 3729, 3733, 3741, 3751, 3757, 3762, 
-    3771, 3779, 3786, 3790, 3799, 3803, 3808, 3813, 3817, 3825, 3829, 3834, 
-    3838, 2106, 1388, 3844, 3849, 3855, 3860, 3865, 3870, 3875, 3880, 3885, 
-    3891, 3896, 3902, 3907, 3912, 3917, 3923, 3928, 3933, 3938, 3943, 3949, 
-    3954, 3960, 3965, 3970, 3975, 3980, 3985, 3990, 3996, 4001, 4006, 344, 
-    440, 4011, 4017, 4021, 4025, 4030, 4034, 4038, 4041, 4045, 4049, 4053, 
-    4058, 4062, 4066, 3841, 4072, 4079, 4083, 4096, 4100, 4104, 4108, 4112, 
-    4116, 4122, 4129, 4133, 4141, 4150, 4156, 4161, 4164, 4168, 4172, 4182, 
-    4192, 4200, 4207, 4214, 4220, 4226, 4233, 4237, 4242, 4246, 4254, 4259, 
-    4267, 4272, 4277, 4281, 4286, 4293, 4296, 4300, 4304, 4307, 4313, 4319, 
-    4323, 4334, 4344, 4359, 4374, 4389, 4404, 4419, 4434, 4449, 4464, 4479, 
-    4494, 4509, 4524, 4539, 4554, 4569, 4584, 4599, 4614, 4629, 4644, 4659, 
-    4674, 4689, 4704, 4719, 4734, 4749, 4764, 4779, 4794, 4809, 4824, 4839, 
-    4854, 4869, 4884, 4899, 4914, 4929, 4944, 4959, 4974, 4989, 5004, 5019, 
-    5034, 5049, 5064, 5079, 5088, 5097, 5102, 5108, 5112, 5117, 5121, 5124, 
-    5128, 2846, 5131, 5136, 306, 424, 5142, 5150, 5154, 5158, 5161, 5167, 
-    5171, 5179, 5185, 5190, 5197, 5204, 5210, 5215, 5222, 5228, 5232, 5237, 
-    5249, 5260, 5267, 5273, 3092, 5277, 5283, 5288, 5293, 5298, 5304, 5309, 
-    5314, 5319, 5324, 5330, 5335, 5340, 5346, 5351, 5357, 5362, 5368, 5373, 
-    5379, 5384, 5389, 5394, 5399, 5404, 5410, 5415, 5420, 5425, 5431, 5437, 
-    5443, 5449, 5455, 5461, 5467, 5473, 5479, 5485, 5491, 5497, 5502, 5507, 
-    5512, 5517, 5522, 5527, 5532, 5537, 5543, 5549, 5554, 5560, 5566, 5572, 
-    5577, 5582, 5587, 5592, 5598, 5604, 5609, 5614, 5619, 5624, 5629, 5635, 
-    5640, 5646, 5652, 5658, 5664, 5670, 5676, 5682, 5688, 5694, 5160, 5699, 
-    5703, 5707, 5710, 5717, 5720, 5728, 5733, 5738, 5729, 5743, 5730, 5747, 
-    5753, 5759, 5764, 5769, 5776, 5781, 5785, 5788, 5792, 2140, 516, 5796, 
-    5800, 5805, 5811, 5816, 5820, 5823, 5827, 5832, 5836, 5843, 5847, 5851, 
-    5855, 884, 699, 5858, 5866, 5873, 5880, 5886, 5893, 5901, 5908, 5915, 
-    5920, 5932, 1266, 1396, 1401, 5943, 1406, 5947, 5951, 5960, 5969, 5975, 
-    5980, 5984, 5990, 5995, 6002, 6006, 6015, 6024, 6033, 6042, 6047, 6052, 
-    6064, 6069, 3312, 6073, 6075, 6080, 6084, 6093, 6101, 1410, 825, 3316, 
-    3321, 6107, 6111, 6120, 6126, 6131, 6134, 6143, 2591, 6149, 6157, 6161, 
-    6165, 3325, 6169, 6174, 6181, 6187, 6193, 6196, 6198, 6201, 6209, 6217, 
-    6225, 6228, 6233, 5740, 6236, 6238, 6243, 6248, 6253, 6258, 6263, 6268, 
-    6273, 6278, 6283, 6288, 6294, 6299, 6304, 6309, 6315, 6320, 6325, 6330, 
-    6335, 6340, 6345, 6351, 6356, 6361, 6366, 6371, 6376, 6381, 6386, 6391, 
-    6396, 6401, 6406, 6411, 6416, 6421, 6426, 6431, 6436, 6442, 6448, 6453, 
-    6458, 6463, 6468, 6473, 2197, 2204, 2210, 6478, 6484, 2236, 2242, 6492, 
-    6496, 6501, 6505, 6509, 6513, 6518, 6522, 6527, 6531, 6534, 6537, 6543, 
-    6549, 6555, 6561, 6567, 6573, 6579, 6583, 6587, 6591, 6595, 6599, 6604, 
-    6611, 6619, 6629, 6634, 6638, 6649, 6662, 6673, 6686, 6697, 6709, 6721, 
-    6733, 6746, 6759, 6766, 6772, 6779, 6785, 6789, 6794, 6798, 6805, 6813, 
-    6817, 6823, 6833, 6837, 6842, 6847, 6854, 6860, 5888, 6870, 6874, 6881, 
-    698, 6885, 6889, 6894, 6899, 6904, 6908, 6914, 6922, 6926, 6936, 6940, 
-    6946, 6951, 6955, 2132, 6961, 6969, 6978, 6982, 6988, 6993, 6998, 7003, 
-    7009, 7014, 3708, 7019, 7023, 7029, 7035, 7040, 7045, 7050, 6983, 7056, 
-    7060, 7067, 7073, 7078, 7082, 7087, 7091, 7100, 6177, 6184, 7105, 2732, 
-    7109, 7114, 7119, 6989, 7123, 6994, 6999, 7128, 7135, 7142, 7148, 7154, 
-    7160, 7165, 7170, 7175, 7004, 7010, 7181, 7187, 7192, 7200, 7015, 7205, 
-    1079, 7208, 7216, 7222, 7228, 7237, 7242, 7248, 7263, 7280, 7299, 7308, 
-    7316, 7331, 7341, 7351, 7357, 7369, 7378, 7386, 7393, 7400, 7406, 7411, 
-    7419, 7429, 7436, 7446, 7456, 7466, 7475, 7485, 7499, 7514, 7523, 7531, 
-    7536, 7540, 7549, 7559, 7569, 7579, 7584, 7588, 7597, 7607, 7618, 7631, 
-    7644, 7656, 7664, 7669, 7675, 7678, 7682, 7690, 7695, 7699, 7707, 7716, 
-    7724, 7731, 7742, 7746, 7749, 7755, 7759, 7765, 7772, 7777, 7784, 7791, 
-    7798, 7805, 7812, 7819, 7824, 7276, 7829, 7836, 7845, 7849, 7861, 7865, 
-    7868, 7872, 7876, 7880, 7884, 7890, 7895, 7901, 7906, 7911, 7917, 7922, 
-    7927, 6850, 7932, 7936, 7940, 7944, 7949, 7954, 7960, 7964, 7971, 7976, 
-    7984, 7988, 7991, 7997, 8004, 8008, 8011, 8016, 8020, 3736, 8026, 8034, 
-    8040, 6865, 8045, 8051, 8056, 8060, 8063, 8078, 8097, 8109, 8122, 8135, 
-    8148, 8162, 8175, 8190, 8197, 8203, 8207, 8212, 8218, 8226, 8231, 6011, 
-    8236, 8239, 8244, 8248, 2737, 877, 8254, 8258, 8264, 8270, 8275, 8281, 
-    8286, 7024, 8292, 8298, 8303, 8308, 8316, 8322, 8335, 8343, 8350, 8354, 
-    8362, 8369, 8381, 8391, 8398, 8405, 8414, 8423, 8431, 8436, 8442, 7030, 
-    8447, 8453, 7036, 8458, 8461, 8468, 8474, 8487, 8498, 8505, 8511, 8520, 
-    8528, 8535, 8541, 8547, 8552, 8556, 8561, 8070, 8567, 7041, 8574, 8579, 
-    8586, 8592, 8598, 8603, 8611, 8619, 8626, 8630, 8644, 8654, 8659, 8663, 
-    8674, 8680, 8685, 8690, 8694, 7046, 8699, 8702, 8707, 8719, 8726, 8731, 
-    8735, 8740, 8744, 8751, 8757, 7051, 6984, 8764, 2742, 8, 8771, 8776, 
-    8780, 8786, 8797, 8807, 8816, 8828, 8833, 8837, 8845, 8859, 8863, 8866, 
-    8874, 8881, 8889, 8893, 8904, 8908, 8915, 8920, 8924, 8930, 8935, 8939, 
-    8944, 8948, 8951, 8957, 8962, 8968, 8975, 8985, 8994, 9001, 7061, 7068, 
-    7074, 7079, 9007, 7083, 9013, 9016, 9023, 9038, 9054, 9069, 970, 406, 
-    9074, 9082, 9089, 9095, 9100, 9105, 7092, 9107, 9111, 9115, 9125, 9130, 
-    9134, 9143, 9147, 9150, 9157, 9161, 9164, 9172, 9179, 9187, 9191, 9198, 
-    9202, 9208, 9212, 9216, 9220, 9226, 9230, 9234, 9241, 9245, 9250, 9254, 
-    9261, 9267, 9275, 9281, 9291, 9296, 9301, 9305, 9313, 3641, 9321, 9326, 
-    9330, 9334, 9337, 9345, 9352, 9356, 9360, 9365, 9369, 9380, 9386, 9390, 
-    9393, 9400, 9405, 7101, 9410, 9414, 1704, 4265, 9421, 9426, 9431, 9436, 
-    9442, 9447, 9453, 9458, 9463, 9468, 9473, 9478, 9483, 9488, 9493, 9498, 
-    9503, 9508, 9513, 9518, 9523, 9528, 9533, 9539, 9544, 9549, 9554, 9559, 
-    9564, 9570, 9575, 9580, 9586, 9591, 9597, 9602, 9608, 9613, 9618, 9623, 
-    9628, 9634, 9639, 9644, 670, 134, 9649, 9653, 9658, 9663, 9667, 9671, 
-    9675, 9680, 9684, 9689, 9693, 9696, 9700, 9704, 9709, 9719, 9725, 9729, 
-    9733, 9740, 9748, 9757, 9768, 9775, 9782, 9791, 9800, 9809, 9818, 9827, 
-    9836, 9846, 9856, 9866, 9876, 9886, 9895, 9905, 9915, 9925, 9935, 9945, 
-    9955, 9965, 9974, 9984, 9994, 10004, 10014, 10024, 10034, 10043, 10053, 
-    10063, 10073, 10083, 10093, 10103, 10113, 10123, 10133, 10142, 10152, 
-    10162, 10172, 10182, 10192, 10202, 10212, 10222, 10232, 10242, 10251, 
-    10257, 10261, 10264, 10268, 10273, 10280, 10286, 10291, 10295, 10300, 
-    10304, 10308, 7110, 10314, 10319, 10328, 7115, 10333, 10336, 10342, 
-    10350, 7120, 10357, 10361, 10365, 10369, 10379, 10384, 10393, 10401, 
-    10408, 10413, 10420, 10425, 10429, 10432, 10443, 10453, 10462, 10470, 
-    10481, 10493, 10503, 10507, 10512, 10517, 10521, 10526, 10535, 10539, 
-    10542, 10549, 10559, 10568, 10575, 10579, 10585, 10590, 10595, 10599, 
-    10608, 10613, 10619, 10624, 10628, 10637, 10645, 10653, 10660, 10668, 
-    10680, 10691, 10701, 10708, 10714, 10723, 10734, 10743, 10752, 10760, 
-    10767, 10776, 10784, 5761, 10788, 10790, 10795, 10801, 10809, 10816, 
-    10825, 10834, 10843, 10852, 10861, 10870, 10879, 10888, 10898, 10908, 
-    10917, 10924, 10938, 10945, 10953, 10962, 10968, 10977, 10985, 10994, 
-    11007, 11015, 11022, 11035, 11041, 11050, 11059, 11064, 11068, 11074, 
-    11080, 11087, 6864, 11092, 11097, 11104, 11109, 11114, 11118, 11124, 
-    11132, 11140, 11147, 11155, 11163, 11168, 11174, 11179, 11183, 11194, 
-    11202, 11208, 11213, 11222, 11228, 11233, 11242, 11256, 3600, 11260, 
-    11265, 11270, 11276, 11281, 11286, 11290, 11295, 11300, 5760, 11305, 
-    11310, 11315, 11320, 11324, 11329, 11334, 11339, 11345, 11351, 11356, 
-    11360, 11365, 11370, 11375, 7124, 11380, 11385, 11390, 11395, 11412, 
-    11430, 11442, 11455, 11472, 11488, 11505, 11515, 11534, 11545, 11556, 
-    11567, 11578, 11590, 11601, 11612, 11629, 11640, 11651, 11656, 2317, 
-    11660, 11663, 11669, 11677, 11685, 11690, 11698, 11706, 11713, 11718, 
-    11724, 11731, 11739, 11746, 11758, 11763, 9032, 11769, 11778, 11786, 
-    11793, 11799, 11807, 11814, 11821, 11827, 11836, 11844, 11851, 11859, 
-    11865, 11872, 11880, 11885, 3372, 1187, 11892, 11895, 11306, 11899, 
-    11905, 11909, 11921, 11926, 11933, 11939, 11944, 11951, 11311, 11316, 
-    11955, 11959, 11964, 11968, 11976, 11983, 11990, 12007, 12011, 12014, 
-    12022, 12028, 3428, 12032, 12034, 12042, 12049, 12059, 12064, 12070, 
-    12075, 12079, 12085, 12090, 12093, 12100, 12106, 12112, 12117, 12124, 
-    12130, 12135, 12142, 12146, 12152, 12159, 12165, 12171, 12179, 12185, 
-    12193, 12199, 12205, 12210, 12217, 12222, 12226, 12231, 12238, 12243, 
-    12249, 12255, 12261, 12264, 12268, 12280, 12286, 12291, 12298, 12304, 
-    12310, 12321, 12331, 12340, 12348, 12355, 12365, 12375, 12383, 12386, 
-    11330, 12391, 11335, 11460, 12399, 12412, 12427, 12438, 11477, 12456, 
-    12469, 12482, 12493, 8085, 12504, 12517, 12536, 12547, 12558, 12569, 
-    2542, 12582, 12586, 12594, 12605, 12612, 12618, 12626, 12630, 12636, 
-    12639, 12649, 12657, 12664, 12672, 12677, 12682, 12689, 12695, 12700, 
-    12705, 12709, 12713, 12719, 12725, 12730, 12735, 12740, 12744, 11340, 
-    11346, 11352, 12748, 12756, 12765, 12772, 7000, 12776, 12778, 12783, 
-    12788, 12794, 12799, 12804, 12809, 12814, 12818, 12824, 12830, 12835, 
-    12841, 12846, 12851, 12857, 12862, 12867, 12872, 12878, 12883, 12888, 
-    12894, 12900, 12905, 12912, 12919, 12924, 12928, 12932, 12935, 12943, 
-    12948, 12955, 12960, 12965, 12975, 12980, 12987, 12993, 13003, 13017, 
-    13031, 13045, 13059, 13074, 13089, 13106, 13124, 13137, 13143, 13148, 
-    13153, 13159, 13164, 13169, 13173, 13177, 13182, 13186, 13197, 13203, 
-    13208, 13213, 13217, 13222, 13228, 13235, 13240, 13244, 13250, 13255, 
-    13260, 13264, 13270, 13275, 13280, 13287, 13292, 13296, 13300, 13305, 
-    13310, 13316, 13322, 13327, 13336, 13344, 13351, 13358, 13364, 13370, 
-    13375, 13380, 13386, 13391, 13397, 13402, 13408, 13414, 13421, 13427, 
-    13432, 13437, 7166, 13446, 13449, 13455, 13460, 13465, 13475, 13482, 
-    13487, 13493, 13498, 13504, 13509, 13515, 13521, 13526, 13534, 13541, 
-    13546, 13552, 13557, 13561, 13570, 13581, 13588, 13596, 13602, 13609, 
-    13615, 13620, 13624, 13630, 13635, 13640, 13645, 7171, 5777, 2756, 13649, 
-    13653, 13657, 13661, 13665, 13668, 13675, 13683, 11366, 13690, 13700, 
-    13708, 13715, 13723, 13733, 13742, 13747, 10458, 10467, 13752, 13762, 
-    13777, 13783, 13790, 13797, 13803, 13813, 13823, 11371, 13832, 13838, 
-    13844, 13852, 13860, 13865, 13874, 13882, 13894, 13904, 13914, 13924, 
-    13933, 13945, 13955, 13965, 13976, 13981, 13993, 14005, 14017, 14029, 
-    14041, 14053, 14065, 14077, 14089, 14101, 14112, 14124, 14136, 14148, 
-    14160, 14172, 14184, 14196, 14208, 14220, 14232, 14243, 14255, 14267, 
-    14279, 14291, 14303, 14315, 14327, 14339, 14351, 14363, 14374, 14386, 
-    14398, 14410, 14422, 14434, 14446, 14458, 14470, 14482, 14494, 14505, 
-    14517, 14529, 14541, 14553, 14565, 14577, 14589, 14601, 14613, 14625, 
-    14636, 14648, 14660, 14672, 14684, 14696, 14708, 14720, 14732, 14744, 
-    14756, 14767, 14779, 14791, 14803, 14815, 14827, 14839, 14851, 14863, 
-    14875, 14887, 14898, 14910, 14922, 14934, 14946, 14959, 14972, 14985, 
-    14998, 15011, 15024, 15037, 15049, 15062, 15075, 15088, 15101, 15114, 
-    15127, 15140, 15153, 15166, 15179, 15191, 15204, 15217, 15230, 15243, 
-    15256, 15269, 15282, 15295, 15308, 15321, 15333, 15346, 15359, 15372, 
-    15385, 15398, 15411, 15424, 15437, 15450, 15463, 15475, 15488, 15501, 
-    15514, 15527, 15540, 15553, 15566, 15579, 15592, 15605, 15617, 15630, 
-    15643, 15656, 15669, 15682, 15695, 15708, 15721, 15734, 15747, 15759, 
-    15770, 15783, 15796, 15809, 15822, 15835, 15848, 15861, 15874, 15887, 
-    15900, 15912, 15925, 15938, 15951, 15964, 15977, 15990, 16003, 16016, 
-    16029, 16042, 16054, 16067, 16080, 16093, 16106, 16119, 16132, 16145, 
-    16158, 16171, 16184, 16196, 16209, 16222, 16235, 16248, 16261, 16274, 
-    16287, 16300, 16313, 16326, 16338, 16351, 16364, 16377, 16390, 16403, 
-    16416, 16429, 16442, 16455, 16468, 16480, 16493, 16506, 16519, 16532, 
-    16545, 16558, 16571, 16584, 16597, 16610, 16622, 16635, 16648, 16661, 
-    16674, 16687, 16700, 16713, 16726, 16739, 16752, 16764, 16777, 16790, 
-    16803, 16816, 16829, 16842, 16855, 16868, 16881, 16894, 16906, 16919, 
-    16932, 16945, 16958, 16971, 16984, 16997, 17010, 17023, 17036, 17048, 
-    17061, 17074, 17087, 17100, 17113, 17126, 17139, 17152, 17165, 17178, 
-    17190, 17201, 17209, 17216, 17222, 17226, 17232, 17238, 17246, 17252, 
-    17257, 7005, 17261, 17268, 17276, 17283, 17290, 8481, 17297, 17306, 
-    17311, 5793, 17318, 17323, 17326, 17331, 17339, 17346, 17353, 17359, 
-    17368, 17377, 17383, 17388, 17398, 17405, 17413, 17419, 17429, 17438, 
-    17442, 17449, 17453, 17458, 17464, 17472, 17476, 11381, 17485, 17491, 
-    17495, 17501, 17508, 17519, 6829, 17527, 17533, 17538, 17542, 17546, 
-    7415, 17551, 17559, 17566, 17575, 17582, 17589, 17595, 17599, 17605, 
-    17611, 17619, 17625, 17632, 17638, 17644, 17648, 17656, 17665, 17670, 
-    17681, 17686, 17691, 17696, 5966, 17700, 17706, 17713, 17722, 17727, 
-    17735, 17747, 17752, 17756, 17759, 17765, 17771, 17776, 17780, 17783, 
-    17794, 17799, 7201, 17806, 7016, 7206, 17811, 17816, 17821, 17826, 17831, 
-    17836, 17841, 17846, 17851, 17856, 17861, 17866, 17872, 17877, 17882, 
-    17887, 17892, 17897, 17902, 17907, 17912, 17917, 17923, 17929, 17934, 
-    17939, 17944, 17949, 17954, 17959, 17964, 17969, 17974, 17980, 17985, 
-    17990, 17995, 18001, 18007, 18012, 18017, 18022, 18027, 18032, 18037, 
-    18042, 18047, 18053, 18058, 18063, 18068, 18073, 18079, 18084, 18089, 
-    18093, 129, 18101, 18105, 18109, 18113, 18118, 18122, 18126, 9788, 18130, 
-    18135, 18139, 18144, 18148, 18153, 18157, 18163, 18168, 18172, 18176, 
-    18184, 18188, 18193, 18198, 18202, 18208, 18213, 18217, 18222, 18227, 
-    18231, 18238, 18242, 18246, 18251, 18255, 18258, 18271, 18276, 18285, 
-    7238, 18290, 18293, 2605, 2610, 18297, 18303, 18309, 18314, 18319, 18324, 
-    18330, 18335, 18340, 18344, 18349, 18354, 18360, 18365, 18370, 18376, 
-    18381, 18385, 18390, 18395, 18400, 18404, 18409, 18414, 18419, 18424, 
-    18428, 18432, 18437, 2765, 18386, 18441, 18448, 7494, 18460, 18468, 
-    18391, 18475, 18480, 18396, 18488, 18493, 18498, 18503, 18507, 18512, 
-    18515, 18519, 18525, 18530, 6856, 1709, 1714, 18534, 18540, 18546, 18551, 
-    18555, 18559, 18563, 18566, 18572, 18579, 18587, 18593, 18599, 18604, 
-    18609, 18613, 11741, 12361, 18618, 18630, 18633, 18640, 18644, 18652, 
-    18663, 18672, 18685, 18695, 18709, 18721, 18735, 18745, 18757, 18763, 
-    18778, 18802, 18820, 18839, 18852, 18866, 18884, 18900, 18917, 18935, 
-    18946, 18965, 18982, 19002, 19020, 19032, 19046, 19060, 19072, 19089, 
-    19108, 19126, 19138, 19156, 19175, 11520, 19188, 19208, 19220, 8116, 
-    19232, 19237, 19242, 19247, 19253, 19258, 2334, 19262, 19268, 19272, 
-    19275, 19279, 19287, 19293, 18405, 19297, 19308, 19314, 19320, 19329, 
-    19336, 19341, 19348, 19354, 19363, 19371, 19381, 19391, 19396, 19405, 
-    19414, 19425, 19436, 3677, 19446, 19450, 19460, 19468, 19478, 19489, 
-    19497, 19504, 19510, 19515, 18415, 19519, 19528, 19532, 19537, 19546, 
-    19554, 19564, 19573, 19579, 19585, 18420, 18425, 19589, 19599, 916, 
-    19608, 11702, 1154, 19622, 19631, 19639, 19650, 19661, 19671, 19680, 
-    19689, 19698, 19704, 19713, 19721, 7178, 19727, 19730, 19734, 19739, 
-    19744, 19752, 18433, 19756, 19762, 19768, 19773, 19778, 19782, 19790, 
-    19796, 19802, 3351, 19810, 19815, 19820, 19824, 19828, 19835, 19839, 
-    19847, 19853, 19858, 19862, 19867, 19873, 19877, 19888, 19893, 19897, 
-    19908, 19912, 19916, 19919, 19923, 19928, 19932, 19936, 903, 19940, 
-    19945, 19950, 19955, 19960, 19965, 19970, 19975, 19980, 19985, 19990, 
-    19995, 20000, 20005, 20011, 20016, 20021, 20026, 20031, 20036, 20041, 
-    20047, 20052, 20057, 20062, 20067, 20072, 20077, 20082, 20088, 20094, 
-    20099, 20105, 20110, 20115, 5, 20121, 20125, 20129, 20133, 20138, 20142, 
-    20146, 20150, 20154, 20159, 20163, 20168, 20172, 20175, 20179, 20184, 
-    20188, 20193, 20197, 20201, 20205, 20210, 20214, 20218, 20228, 20233, 
-    20237, 20241, 20246, 20251, 20260, 20265, 20270, 20274, 20278, 20290, 
-    20299, 20308, 20314, 20318, 20322, 20332, 20341, 20349, 20355, 20359, 
-    20366, 20376, 20385, 20393, 20401, 20408, 20416, 20425, 20434, 20442, 
-    20447, 20451, 20455, 20458, 20460, 20464, 20468, 20473, 20478, 20482, 
-    20486, 20489, 20493, 20496, 20500, 20503, 20506, 20510, 20516, 20520, 
-    20524, 20528, 20533, 20538, 20543, 20547, 20550, 20555, 20561, 20566, 
-    20572, 20577, 20581, 20585, 20589, 20594, 20598, 20603, 20607, 20614, 
-    20618, 20621, 20625, 20631, 20637, 20641, 20645, 20650, 20657, 20663, 
-    20667, 20676, 20680, 20684, 20687, 20693, 20698, 20704, 1471, 1773, 
-    20709, 20714, 20719, 20724, 20729, 20734, 20739, 2157, 20744, 20745, 
-    20748, 20752, 20756, 20761, 20765, 20769, 20772, 20777, 20782, 20786, 
-    20789, 20794, 20798, 20803, 20807, 11714, 20812, 20815, 20818, 20822, 
-    20826, 20835, 20842, 20847, 20854, 20858, 20862, 20867, 20872, 20876, 
-    20881, 20893, 20904, 20909, 20913, 20918, 20922, 20925, 20931, 5894, 
-    2252, 20935, 20951, 7270, 20971, 20980, 20996, 21000, 21003, 21009, 
-    21019, 21025, 21040, 21052, 21063, 21071, 21080, 21086, 21095, 21105, 
-    21116, 21127, 21136, 21145, 21153, 21160, 21168, 21181, 21187, 21192, 
-    21198, 21203, 21211, 21223, 21235, 21249, 21257, 21264, 21273, 21282, 
-    21290, 21298, 21306, 21313, 21322, 21330, 21340, 21349, 21359, 21368, 
-    21377, 21385, 21390, 21394, 21397, 21401, 21405, 21409, 21413, 21417, 
-    21423, 21429, 11759, 21434, 21446, 21452, 7623, 21463, 21473, 21482, 
-    21486, 21489, 21493, 21499, 21503, 21508, 21517, 21524, 5935, 21531, 
-    21539, 21546, 21552, 21557, 21563, 21569, 21577, 21581, 21584, 21586, 
-    21402, 21595, 21601, 21611, 21616, 21622, 21627, 21632, 21637, 21644, 
-    21653, 21662, 21668, 21673, 21679, 21684, 21691, 21702, 21707, 21711, 
-    21721, 21725, 21730, 21740, 21749, 21753, 21761, 21768, 21774, 21779, 
-    21786, 21790, 10323, 21798, 21805, 21812, 18204, 21327, 21817, 21821, 
-    18952, 21826, 21840, 21856, 21874, 21893, 21910, 21928, 18971, 21945, 
-    21965, 18988, 21977, 21989, 12443, 22001, 19008, 22015, 22027, 8129, 
-    22041, 22046, 22051, 22057, 22061, 22066, 22076, 22082, 7994, 22088, 
-    22090, 22095, 22103, 22107, 21640, 22113, 22120, 22130, 22135, 22139, 
-    22142, 22148, 22156, 22166, 22182, 22195, 22209, 12461, 22223, 22230, 
-    22234, 22237, 22242, 22246, 22256, 22261, 22266, 22271, 22279, 22287, 
-    22296, 22301, 12466, 22305, 22308, 22311, 22316, 22332, 22340, 22348, 
-    22356, 22361, 22365, 22371, 22377, 22380, 22386, 22398, 22405, 22411, 
-    22418, 22432, 22445, 22454, 22466, 22477, 22486, 22495, 22503, 22514, 
-    5917, 22521, 22527, 22532, 22538, 22548, 22557, 22563, 22568, 22575, 
-    22583, 22595, 22602, 22611, 22619, 22625, 22631, 22636, 22640, 22643, 
-    22649, 22654, 22658, 22669, 22678, 22686, 22691, 22697, 10921, 6581, 
-    22702, 22705, 22708, 22714, 22722, 22730, 22734, 22738, 22743, 22746, 
-    22755, 22763, 22774, 22778, 22784, 22790, 22794, 22800, 22822, 22846, 
-    22853, 22859, 22870, 22888, 22895, 22903, 22907, 22916, 22929, 22937, 
-    22949, 22960, 22970, 22984, 22993, 23001, 23013, 7287, 23024, 23035, 
-    23047, 23057, 23066, 23071, 23075, 23083, 23088, 23092, 23095, 23098, 
-    23106, 23114, 23123, 23133, 23142, 23148, 23162, 2556, 23184, 23193, 
-    23203, 23215, 23225, 23233, 23241, 23250, 23255, 23266, 23277, 23281, 
-    23291, 23300, 23310, 23320, 23328, 23337, 23344, 23352, 23359, 23368, 
-    23372, 23380, 23387, 23394, 23405, 23420, 23427, 23437, 23446, 23452, 
-    11054, 23459, 23464, 23468, 23472, 23480, 23486, 23495, 23500, 23510, 
-    19517, 23514, 23517, 23522, 23527, 23532, 23537, 23542, 23547, 23552, 
-    23557, 23563, 23568, 23573, 23579, 1242, 639, 23584, 23593, 2300, 23600, 
-    23605, 23609, 23615, 1275, 506, 343, 23620, 23629, 23637, 23646, 23654, 
-    23665, 23674, 23682, 23686, 23689, 23697, 23705, 11727, 23710, 23716, 
-    4101, 23721, 23725, 23731, 23735, 23742, 1437, 23748, 7355, 23755, 23765, 
-    23773, 23779, 23788, 23796, 23802, 23810, 23817, 23824, 1478, 2338, 
-    23831, 23837, 23848, 23859, 23867, 23874, 23883, 23891, 23898, 23905, 
-    23918, 23929, 23948, 1280, 23952, 23957, 23965, 3387, 23969, 23974, 1441, 
-    20487, 23984, 23988, 23993, 23997, 3333, 24003, 24011, 24018, 24026, 
-    3388, 260, 24031, 24039, 24047, 24054, 24060, 24065, 24072, 24075, 24081, 
-    21504, 24087, 106, 24091, 24095, 24101, 24106, 24113, 24119, 2263, 24123, 
-    24127, 24130, 24133, 24140, 24146, 18500, 24151, 3432, 13175, 24155, 
-    24158, 24166, 24169, 24179, 24191, 24196, 24200, 24208, 24215, 24221, 
-    24228, 24235, 24238, 24242, 24246, 1445, 24256, 24258, 24263, 24269, 
-    24275, 24280, 24285, 24290, 24295, 24300, 24305, 24310, 24315, 24320, 
-    24325, 24330, 24335, 24340, 24345, 24351, 24357, 24363, 24369, 24374, 
-    24379, 24384, 24390, 24395, 24400, 24405, 24411, 24416, 24422, 24427, 
-    24432, 24437, 24442, 24448, 24453, 24459, 24464, 24469, 24474, 24479, 
-    24485, 24490, 24496, 24501, 24506, 24511, 24516, 24521, 24526, 24531, 
-    24536, 24541, 24547, 24553, 24559, 24564, 24569, 24574, 24579, 24585, 
-    24591, 24597, 24603, 24609, 24615, 24620, 24626, 24631, 24636, 24641, 
-    24646, 24652, 2376, 24657, 2383, 2390, 2647, 24662, 2396, 2406, 24668, 
-    24672, 24677, 24682, 24688, 24693, 24698, 24702, 24707, 24713, 24718, 
-    24723, 24729, 24734, 24738, 24743, 24748, 24753, 24758, 24763, 24769, 
-    24775, 24780, 24784, 24789, 24793, 24798, 24803, 24808, 24812, 24817, 
-    24822, 24827, 24832, 24838, 24844, 24849, 24853, 24858, 24863, 24868, 
-    24873, 24878, 24882, 24887, 24892, 24897, 24901, 24906, 24914, 24920, 
-    24926, 24932, 24937, 24941, 24944, 24948, 24953, 24957, 24962, 24966, 
-    24969, 24974, 17578, 23752, 24979, 24984, 24988, 24993, 24997, 25001, 
-    25006, 25010, 25013, 25016, 25020, 25025, 25033, 25037, 25042, 25046, 
-    25050, 25055, 25060, 25064, 25070, 25075, 25080, 25087, 25094, 25098, 
-    25101, 25107, 25116, 25123, 25130, 25134, 25139, 25143, 25149, 25155, 
-    25159, 25165, 25170, 25175, 25182, 25188, 25194, 25200, 25206, 25213, 
-    25219, 25225, 25231, 25237, 25243, 25249, 25255, 25262, 25268, 25275, 
-    25281, 25287, 25293, 25299, 25305, 25311, 25317, 25323, 25329, 8917, 
-    25335, 25340, 25345, 12716, 25350, 25355, 25360, 25366, 25371, 25376, 
-    25380, 25385, 25390, 25396, 25401, 25406, 25410, 25415, 25420, 25424, 
-    25429, 25434, 25439, 25443, 25448, 25453, 25458, 25462, 25466, 12060, 
-    25470, 25479, 25485, 25491, 25500, 25508, 25513, 25517, 25524, 25530, 
-    25534, 25539, 25548, 25553, 1477, 25559, 25562, 25566, 18541, 18547, 
-    25572, 25576, 25587, 25598, 25610, 25617, 25624, 25629, 25633, 17235, 
-    685, 17577, 25641, 25645, 25650, 25656, 25661, 25667, 25672, 25678, 
-    25683, 8022, 2714, 3282, 25687, 25690, 25696, 25702, 25708, 25715, 25721, 
-    25727, 25733, 25739, 25745, 25751, 25757, 25763, 25769, 25775, 25781, 
-    25787, 25794, 25800, 25806, 25812, 25818, 25824, 25827, 25832, 25837, 
-    25843, 25848, 25853, 25857, 25862, 25868, 25873, 25878, 25884, 25889, 
-    25895, 25899, 25904, 25909, 25914, 25919, 25923, 25928, 25933, 25938, 
-    25944, 25950, 25956, 25961, 25965, 25970, 25974, 25982, 3455, 25988, 
-    25991, 5976, 25995, 26001, 26008, 5985, 26012, 26018, 26025, 26031, 
-    26040, 26048, 26052, 26059, 26065, 26069, 26072, 26081, 26089, 26093, 
-    26103, 26113, 26123, 26129, 26139, 26144, 26157, 26171, 26182, 26194, 
-    26206, 26220, 26233, 26245, 26257, 11561, 26271, 26276, 26281, 26285, 
-    26289, 26293, 1762, 22475, 26297, 26302, 26307, 26311, 26314, 26319, 
-    26324, 26330, 26336, 7767, 12395, 26341, 26346, 26351, 26355, 26360, 
-    25651, 26365, 26370, 26376, 25657, 26381, 26384, 26392, 25662, 26397, 
-    26403, 26409, 25668, 26414, 26419, 26425, 26430, 26435, 26441, 26447, 
-    23128, 26452, 26456, 26461, 26466, 26471, 26479, 26483, 26488, 26493, 
-    26497, 26502, 26507, 26512, 25673, 25679, 26518, 2452, 234, 26521, 26524, 
-    26528, 26532, 26540, 26547, 26554, 26558, 26561, 26567, 26575, 26583, 
-    26587, 26591, 26594, 26601, 26605, 26612, 26620, 26628, 26635, 26639, 
-    635, 292, 26651, 26656, 26661, 26667, 26672, 3466, 26677, 26682, 26687, 
-    26692, 26697, 18626, 26702, 26707, 26712, 26717, 26723, 26728, 26732, 
-    26737, 26742, 26747, 26751, 26756, 26761, 26766, 18464, 3472, 26771, 
-    26776, 26781, 26787, 26792, 26797, 26801, 26806, 26811, 26817, 26822, 
-    26827, 26831, 26836, 26841, 26846, 26850, 26855, 26860, 26865, 26871, 
-    26877, 26882, 26886, 26891, 26896, 26901, 26905, 26913, 26917, 26923, 
-    26927, 26934, 13070, 26940, 26947, 26955, 26962, 26968, 26980, 26986, 
-    2666, 26990, 26596, 26994, 27005, 27010, 27015, 27020, 27024, 27029, 
-    18552, 27033, 17591, 27038, 27043, 27049, 27054, 27058, 27062, 27065, 
-    27071, 27082, 27094, 27099, 27103, 27106, 321, 27110, 27115, 27120, 
-    27125, 27130, 27135, 27141, 27146, 27151, 27157, 27162, 27168, 27173, 
-    27179, 27184, 27189, 27194, 27199, 27204, 27209, 27214, 27219, 27225, 
-    27230, 27235, 27240, 27245, 27250, 27255, 27260, 27266, 27272, 27277, 
-    27282, 27287, 27292, 27297, 27302, 27307, 27312, 27317, 27322, 27327, 
-    27332, 27337, 27342, 27347, 27352, 27357, 27362, 27368, 26, 27373, 27377, 
-    27381, 27389, 27393, 27397, 27400, 27403, 27408, 27412, 27417, 27421, 
-    27426, 27430, 27435, 27439, 27442, 27444, 27447, 27449, 27453, 27465, 
-    27474, 27478, 27484, 27489, 27495, 27500, 27505, 27509, 27514, 27521, 
-    27526, 27532, 27537, 27541, 27548, 21335, 21345, 27552, 27557, 27562, 
-    27567, 27571, 27578, 6076, 27584, 27593, 27601, 27616, 27630, 27638, 
-    27649, 27658, 27663, 5243, 27673, 27678, 27682, 27685, 27689, 27693, 
-    27700, 27705, 6820, 27715, 27717, 27720, 27724, 27728, 27733, 27739, 
-    27744, 27753, 27759, 27764, 27771, 27775, 27782, 27795, 27803, 27807, 
-    27817, 27822, 27826, 27830, 27836, 27841, 27851, 27860, 27871, 27879, 
-    27890, 27899, 27902, 27906, 27914, 27920, 27928, 27935, 27941, 2351, 
-    27945, 27947, 27952, 27957, 27960, 27962, 27966, 27969, 27973, 27977, 
-    27980, 27986, 27996, 28001, 28007, 28011, 28016, 28029, 21606, 28035, 
-    28044, 13898, 26109, 28051, 28056, 28060, 28068, 28075, 28080, 28084, 
-    28088, 28096, 28102, 28108, 28113, 28117, 28120, 28125, 28138, 28154, 
-    19078, 28171, 28183, 28200, 28212, 28226, 19095, 19114, 28238, 28250, 
-    2573, 28264, 28269, 28274, 28278, 28285, 28297, 28303, 28306, 28311, 
-    18244, 28314, 28318, 28321, 28326, 28331, 28337, 28342, 28347, 28353, 
-    28359, 28364, 28368, 28373, 28378, 28383, 28387, 28390, 28396, 28401, 
-    28406, 28411, 28415, 28420, 28426, 28431, 28436, 28442, 28447, 28452, 
-    28457, 28462, 28467, 28471, 28474, 28480, 28484, 28492, 28499, 28507, 
-    28517, 28523, 28529, 28533, 28542, 28547, 28552, 8036, 28557, 28564, 
-    28570, 28575, 28581, 28589, 28596, 28600, 28603, 28614, 28621, 28627, 
-    28636, 28640, 28643, 28649, 28656, 28662, 28668, 28676, 24055, 28683, 
-    28691, 28697, 28702, 28708, 28713, 28719, 28723, 28730, 28736, 21619, 
-    28745, 28750, 28758, 28766, 7383, 4120, 28773, 28777, 28781, 28785, 
-    28790, 28794, 28798, 28803, 28808, 28812, 17640, 28817, 28821, 28825, 
-    28829, 28832, 28834, 28839, 28847, 28851, 28858, 28862, 28870, 28877, 
-    28887, 28891, 28895, 28903, 28909, 28918, 10570, 28924, 28933, 28940, 
-    28948, 28956, 28964, 28971, 28978, 28985, 28992, 28999, 29004, 29010, 
-    29027, 29035, 29043, 29050, 380, 29054, 29060, 27654, 29066, 29069, 
-    29077, 29083, 29089, 29098, 29104, 3420, 12046, 29113, 29120, 29125, 
-    29129, 29136, 29144, 29153, 29163, 29169, 29177, 29186, 29194, 18248, 
-    29201, 29208, 29214, 29224, 29233, 29244, 29248, 29254, 29259, 29265, 
-    29271, 29276, 29289, 29302, 29315, 29322, 29328, 29333, 29337, 1451, 
-    29341, 29346, 29351, 29356, 29361, 29367, 29372, 29377, 29382, 29387, 
-    29392, 29397, 29402, 29408, 29414, 29419, 29424, 29430, 29435, 29440, 
-    29445, 29451, 29456, 29461, 29466, 29471, 29477, 29482, 29487, 29493, 
-    29498, 29503, 29508, 29513, 29518, 29524, 29529, 29535, 29540, 29546, 
-    29551, 29556, 29561, 29567, 29573, 29579, 29585, 29591, 29597, 29603, 
-    29609, 29614, 29619, 29625, 29630, 29635, 29640, 29645, 29650, 29655, 
-    29660, 29666, 29671, 29676, 29682, 29688, 101, 29693, 29695, 29699, 
-    29703, 29707, 29712, 29716, 7323, 29720, 29726, 4331, 29732, 29735, 
-    29740, 29744, 29749, 29753, 29757, 29762, 7869, 29766, 29770, 29774, 
-    12131, 29779, 29783, 29788, 29793, 29798, 29802, 29809, 21623, 29815, 
-    29818, 29822, 29827, 29833, 29837, 29843, 29848, 29852, 29856, 29860, 
-    3317, 3322, 24194, 29863, 29871, 29878, 29882, 29887, 342, 29892, 29898, 
-    29904, 29908, 29917, 29921, 29925, 29930, 29935, 29939, 29946, 29952, 
-    29957, 29972, 29987, 30002, 30018, 30036, 7831, 30050, 30055, 30059, 
-    30067, 27788, 30075, 30079, 30088, 30096, 7546, 11842, 30100, 30103, 
-    30106, 6089, 3621, 30111, 30119, 30123, 30126, 30130, 30135, 30140, 
-    30146, 30151, 30155, 30159, 30164, 30168, 30174, 30178, 30185, 30189, 
-    9256, 30196, 30202, 30207, 30214, 30221, 30228, 23641, 6020, 30235, 
-    30242, 30249, 30255, 30260, 30267, 30278, 30284, 30289, 30296, 30300, 
-    30304, 30314, 30325, 30331, 30336, 30341, 30346, 30351, 30355, 30359, 
-    30365, 2255, 767, 7891, 7896, 7902, 30374, 7907, 7912, 7918, 30379, 
-    30389, 30393, 7923, 30398, 30401, 30406, 30410, 30415, 30422, 30428, 
-    30438, 4146, 30447, 30451, 30455, 30465, 30471, 30482, 30488, 30494, 
-    30499, 30505, 30511, 30516, 30519, 30526, 30532, 30537, 30544, 30551, 
-    30555, 30565, 30578, 30587, 30596, 30607, 30620, 30629, 30640, 30645, 
-    30650, 7928, 30656, 30664, 30669, 5094, 21, 30676, 30681, 13284, 30685, 
-    30688, 30691, 23219, 30695, 23650, 30703, 30707, 30710, 30716, 30722, 
-    30730, 30736, 30743, 30747, 30751, 23383, 30755, 30764, 30770, 30775, 
-    30779, 30787, 21669, 30793, 30800, 30806, 30811, 30816, 30820, 30826, 
-    30831, 30837, 3747, 716, 30844, 30848, 30851, 12054, 30863, 29182, 30874, 
-    30877, 30884, 30890, 30894, 30900, 30905, 30911, 30916, 30921, 30925, 
-    30930, 30935, 30945, 30951, 30964, 30970, 30975, 30981, 13193, 1454, 932, 
-    25770, 25776, 30986, 25782, 25795, 25801, 25807, 30992, 25813, 25819, 
-    30998, 31004, 14, 31012, 31019, 31023, 31027, 31035, 31039, 31044, 31048, 
-    31055, 31060, 31064, 31069, 31075, 31080, 31086, 31091, 31095, 31099, 
-    31103, 31108, 31112, 31117, 31121, 31128, 31133, 31137, 31142, 31146, 
-    31151, 31155, 31160, 12218, 12223, 31165, 31169, 31172, 31176, 31181, 
-    31185, 31191, 31198, 31203, 31213, 31218, 31226, 31230, 31233, 31237, 
-    31242, 31247, 31251, 31256, 10581, 31267, 31271, 31274, 31278, 31282, 
-    31285, 31289, 6108, 10597, 31292, 31295, 31300, 31304, 31313, 31329, 
-    31345, 31355, 23138, 31362, 31366, 31371, 31375, 31379, 31384, 31389, 
-    31393, 31398, 31402, 31406, 22323, 31412, 17702, 31417, 31424, 31432, 
-    31438, 31445, 31453, 31459, 31463, 31469, 31477, 31481, 31490, 7304, 
-    31498, 31502, 31510, 31517, 31522, 31526, 31529, 31533, 31536, 31540, 
-    31547, 31552, 21814, 25825, 31556, 31563, 31569, 31574, 31577, 31579, 
-    31586, 31593, 31599, 31603, 31606, 31610, 31614, 31618, 31623, 31627, 
-    31631, 31634, 31638, 31652, 19144, 31671, 31684, 31697, 31710, 19162, 
-    31725, 8090, 31740, 31746, 31750, 31754, 31761, 31767, 31772, 31778, 
-    31788, 31800, 31811, 31816, 31823, 31827, 31830, 12589, 31838, 12239, 
-    31851, 31855, 31859, 31864, 31869, 31873, 31877, 31880, 5750, 23022, 
-    31885, 31889, 31895, 31904, 31909, 29159, 31915, 31920, 31924, 31929, 
-    31936, 31940, 31943, 11526, 31948, 31955, 939, 31959, 31964, 31969, 
-    31975, 31980, 31985, 31989, 31994, 32000, 32005, 32011, 32016, 32022, 
-    32032, 32037, 32042, 32046, 5245, 5257, 32051, 32054, 32061, 32070, 
-    32074, 32077, 32081, 32086, 668, 32091, 32097, 23211, 32103, 32108, 
-    32118, 32127, 32134, 32140, 32144, 32151, 32157, 32164, 32170, 32180, 
-    32188, 32194, 32200, 32205, 32209, 32216, 32222, 32229, 31619, 548, 1208, 
-    32235, 32240, 32243, 32249, 32257, 1383, 32262, 32266, 32271, 32278, 
-    32284, 32288, 32293, 32302, 32309, 32319, 32325, 23237, 32342, 32351, 
-    32359, 32365, 32370, 32377, 32383, 32391, 32400, 32408, 32413, 32421, 
-    32427, 32446, 12522, 32460, 32476, 32490, 32496, 32501, 32506, 32511, 
-    32517, 32522, 32526, 32533, 32538, 32542, 319, 2807, 32549, 32554, 22579, 
-    32380, 32559, 32564, 32572, 32576, 32579, 32585, 32589, 23287, 32592, 
-    32596, 32599, 32604, 32608, 32613, 32618, 32622, 32627, 32631, 17511, 
-    17522, 32635, 32640, 32646, 22292, 32651, 32655, 12702, 32658, 32663, 
-    32668, 32673, 32678, 32683, 32688, 32693, 453, 43, 25828, 25833, 25838, 
-    25844, 25849, 25854, 32698, 25858, 32702, 32706, 25863, 25869, 32710, 
-    25874, 25879, 32718, 32723, 25885, 32728, 32733, 32738, 32743, 32749, 
-    32755, 25896, 32768, 32774, 25900, 25905, 32778, 25910, 25915, 32781, 
-    32786, 32790, 25591, 32796, 10746, 32803, 32808, 25920, 32812, 32817, 
-    32822, 32827, 32831, 32836, 32841, 32847, 32852, 32857, 32863, 32869, 
-    32874, 32878, 32883, 32888, 32893, 32897, 32902, 32907, 32912, 32918, 
-    32924, 32930, 32935, 32939, 32944, 32948, 25924, 25929, 25934, 32952, 
-    32956, 25939, 25945, 25951, 25957, 32968, 21521, 32972, 32976, 32981, 
-    32986, 32991, 32995, 32999, 33009, 33014, 33019, 33023, 33027, 33030, 
-    33038, 25966, 1461, 33043, 33051, 33060, 33064, 33072, 33080, 33096, 
-    33101, 1731, 9398, 33105, 2853, 33117, 33118, 33126, 33133, 33138, 33143, 
-    7197, 1043, 7950, 33150, 33155, 33158, 33167, 1294, 33172, 33179, 33182, 
-    33187, 18600, 2485, 33191, 8312, 33201, 33207, 2273, 2283, 33216, 33225, 
-    27997, 7985, 3565, 29063, 1299, 33235, 33243, 33250, 33255, 33259, 33263, 
-    19759, 8012, 33271, 33280, 33289, 33297, 33304, 33309, 33322, 33335, 
-    33347, 33359, 33371, 33384, 33395, 33406, 33414, 33422, 33434, 33446, 
-    33457, 33466, 33474, 33481, 33493, 33500, 33509, 33516, 33529, 33539, 
-    33544, 33550, 33555, 33559, 33566, 33570, 33577, 33585, 2451, 33592, 
-    33603, 33613, 33622, 33630, 33640, 33648, 33658, 33663, 33669, 33680, 
-    33690, 33699, 33708, 33718, 33727, 33732, 33737, 1687, 37, 33745, 33753, 
-    33764, 33775, 33785, 33792, 33798, 33803, 33807, 33818, 33828, 33837, 
-    33848, 13257, 13262, 33853, 33862, 33867, 33877, 33882, 33890, 33898, 
-    33905, 33911, 8057, 1018, 33915, 33921, 33926, 33929, 2094, 31856, 33937, 
-    33941, 33944, 1494, 33950, 11019, 1304, 33955, 33968, 33982, 2536, 34000, 
-    34012, 34024, 2550, 2567, 34038, 34051, 2582, 34065, 34077, 2597, 34091, 
-    1310, 1316, 1322, 8237, 34096, 34101, 34106, 34110, 34125, 34140, 34155, 
-    34170, 34185, 34200, 34215, 34230, 34245, 34260, 34275, 34290, 34305, 
-    34320, 34335, 34350, 34365, 34380, 34395, 34410, 34425, 34440, 34455, 
-    34470, 34485, 34500, 34515, 34530, 34545, 34560, 34575, 34590, 34605, 
-    34620, 34635, 34650, 34665, 34680, 34695, 34710, 34725, 34740, 34755, 
-    34770, 34785, 34800, 34815, 34830, 34845, 34860, 34875, 34890, 34905, 
-    34920, 34935, 34950, 34965, 34980, 34995, 35010, 35025, 35040, 35055, 
-    35070, 35085, 35100, 35115, 35130, 35145, 35160, 35175, 35190, 35205, 
-    35220, 35235, 35250, 35265, 35280, 35295, 35310, 35325, 35340, 35355, 
-    35370, 35385, 35400, 35415, 35430, 35445, 35460, 35475, 35490, 35505, 
-    35520, 35535, 35550, 35565, 35580, 35595, 35610, 35625, 35640, 35655, 
-    35670, 35685, 35700, 35715, 35730, 35745, 35760, 35775, 35790, 35805, 
-    35820, 35835, 35850, 35865, 35880, 35895, 35910, 35925, 35940, 35955, 
-    35970, 35985, 36000, 36015, 36030, 36045, 36060, 36075, 36090, 36105, 
-    36120, 36135, 36150, 36165, 36180, 36195, 36210, 36225, 36240, 36255, 
-    36270, 36285, 36300, 36315, 36330, 36345, 36360, 36375, 36390, 36405, 
-    36420, 36435, 36450, 36465, 36480, 36495, 36510, 36525, 36540, 36555, 
-    36570, 36585, 36600, 36615, 36630, 36645, 36660, 36675, 36690, 36705, 
-    36720, 36735, 36750, 36765, 36780, 36795, 36810, 36825, 36840, 36855, 
-    36870, 36885, 36900, 36915, 36930, 36945, 36960, 36975, 36990, 37005, 
-    37020, 37035, 37050, 37065, 37080, 37095, 37110, 37125, 37140, 37155, 
-    37170, 37185, 37200, 37215, 37230, 37245, 37260, 37275, 37290, 37305, 
-    37320, 37335, 37350, 37365, 37380, 37395, 37410, 37425, 37440, 37455, 
-    37470, 37485, 37500, 37515, 37530, 37545, 37560, 37575, 37590, 37605, 
-    37620, 37635, 37650, 37665, 37680, 37695, 37710, 37725, 37740, 37755, 
-    37770, 37785, 37800, 37815, 37830, 37845, 37860, 37875, 37890, 37905, 
-    37920, 37935, 37950, 37965, 37980, 37995, 38010, 38025, 38040, 38055, 
-    38070, 38085, 38100, 38115, 38130, 38145, 38160, 38175, 38190, 38205, 
-    38220, 38235, 38250, 38265, 38280, 38295, 38310, 38325, 38340, 38355, 
-    38370, 38385, 38400, 38415, 38430, 38445, 38460, 38475, 38490, 38505, 
-    38520, 38535, 38550, 38565, 38580, 38595, 38610, 38625, 38640, 38655, 
-    38670, 38685, 38700, 38715, 38730, 38745, 38760, 38775, 38790, 38805, 
-    38820, 38835, 38850, 38865, 38880, 38895, 38910, 38925, 38940, 38955, 
-    38970, 38985, 39000, 39015, 39030, 39045, 39060, 39075, 39090, 39105, 
-    39120, 39135, 39150, 39165, 39180, 39195, 39210, 39225, 39240, 39255, 
-    39270, 39285, 39300, 39315, 39330, 39345, 39360, 39375, 39390, 39405, 
-    39420, 39435, 39450, 39465, 39480, 39495, 39510, 39525, 39540, 39555, 
-    39570, 39585, 39600, 39615, 39630, 39645, 39660, 39675, 39690, 39705, 
-    39720, 39735, 39750, 39765, 39780, 39795, 39810, 39825, 39840, 39855, 
-    39870, 39885, 39900, 39915, 39930, 39945, 39960, 39975, 39990, 40005, 
-    40020, 40035, 40050, 40065, 40080, 40095, 40110, 40125, 40140, 40155, 
-    40170, 40185, 40200, 40215, 40230, 40245, 40260, 40275, 40290, 40305, 
-    40320, 40335, 40350, 40365, 40380, 40395, 40410, 40425, 40440, 40455, 
-    40470, 40485, 40500, 40515, 40530, 40545, 40560, 40575, 40590, 40605, 
-    40620, 40635, 40650, 40665, 40680, 40695, 40710, 40725, 40740, 40755, 
-    40770, 40785, 40800, 40815, 40830, 40845, 40860, 40875, 40890, 40905, 
-    40920, 40935, 40950, 40965, 40980, 40995, 41010, 41025, 41040, 41055, 
-    41070, 41085, 41100, 41115, 41130, 41145, 41160, 41175, 41190, 41205, 
-    41220, 41235, 41250, 41265, 41280, 41295, 41310, 41325, 41340, 41355, 
-    41370, 41385, 41400, 41415, 41430, 41445, 41460, 41475, 41490, 41505, 
-    41520, 41535, 41550, 41565, 41580, 41595, 41610, 41625, 41640, 41655, 
-    41670, 41685, 41700, 41715, 41730, 41745, 41761, 41777, 41793, 41809, 
-    41825, 41841, 41857, 41873, 41889, 41905, 41921, 41937, 41953, 41969, 
-    41985, 42001, 42017, 42033, 42049, 42065, 42081, 42097, 42113, 42129, 
-    42145, 42161, 42177, 42193, 42209, 42225, 42241, 42257, 42273, 42289, 
-    42305, 42321, 42337, 42353, 42369, 42385, 42401, 42417, 42433, 42449, 
-    42465, 42481, 42497, 42513, 42529, 42545, 42561, 42577, 42593, 42609, 
-    42625, 42641, 42657, 42673, 42689, 42705, 42721, 42737, 42753, 42769, 
-    42785, 42801, 42817, 42833, 42849, 42865, 42881, 42897, 42913, 42929, 
-    42945, 42961, 42977, 42993, 43009, 43025, 43041, 43057, 43073, 43089, 
-    43105, 43121, 43137, 43153, 43169, 43185, 43201, 43217, 43233, 43249, 
-    43265, 43281, 43297, 43313, 43329, 43345, 43361, 43377, 43393, 43409, 
-    43425, 43441, 43457, 43473, 43489, 43505, 43521, 43537, 43553, 43569, 
-    43585, 43601, 43617, 43633, 43649, 43665, 43681, 43697, 43713, 43729, 
-    43745, 43761, 43777, 43793, 43809, 43825, 43841, 43857, 43873, 43889, 
-    43905, 43921, 43937, 43953, 43969, 43985, 44001, 44017, 44033, 44049, 
-    44065, 44081, 44097, 44113, 44129, 44145, 44161, 44177, 44193, 44209, 
-    44225, 44241, 44257, 44273, 44289, 44305, 44321, 44337, 44353, 44369, 
-    44385, 44401, 44417, 44433, 44449, 44465, 44481, 44497, 44513, 44529, 
-    44545, 44561, 44577, 44593, 44609, 44625, 44641, 44657, 44673, 44689, 
-    44705, 44721, 44737, 44753, 44769, 44785, 44801, 44817, 44833, 44849, 
-    44865, 44881, 44897, 44913, 44929, 44945, 44961, 44977, 44993, 45009, 
-    45025, 45041, 45057, 45073, 45089, 45105, 45121, 45137, 45153, 45169, 
-    45185, 45201, 45217, 45233, 45249, 45265, 45281, 45297, 45313, 45329, 
-    45345, 45361, 45377, 45393, 45409, 45425, 45441, 45457, 45473, 45489, 
-    45505, 45521, 45537, 45553, 45569, 45585, 45601, 45617, 45633, 45649, 
-    45665, 45681, 45697, 45713, 45729, 45745, 45761, 45777, 45793, 45809, 
-    45825, 45841, 45857, 45873, 45889, 45905, 45921, 45937, 45953, 45969, 
-    45985, 46001, 46017, 46033, 46049, 46065, 46081, 46097, 46113, 46129, 
-    46145, 46161, 46177, 46193, 46209, 46225, 46241, 46257, 46273, 46289, 
-    46305, 46321, 46337, 46353, 46369, 46385, 46401, 46417, 46433, 46449, 
-    46465, 46481, 46497, 46513, 46529, 46545, 46561, 46577, 46593, 46609, 
-    46625, 46641, 46657, 46673, 46689, 46705, 46721, 46737, 46753, 46769, 
-    46785, 46801, 46817, 46833, 46849, 46865, 46881, 46897, 46913, 46929, 
-    46945, 46961, 46977, 46993, 47009, 47025, 47041, 47057, 47073, 47089, 
-    47105, 47121, 47137, 47153, 47169, 47185, 47201, 47217, 47233, 47249, 
-    47265, 47281, 47297, 47313, 47329, 47345, 47361, 47377, 47393, 47409, 
-    47425, 47441, 47457, 47473, 47489, 47505, 47521, 47537, 47553, 47569, 
-    47585, 47601, 47617, 47633, 47649, 47665, 47681, 47697, 47713, 47729, 
-    47745, 47761, 47777, 47793, 47809, 47825, 47841, 47857, 47873, 47889, 
-    47905, 47921, 47937, 47953, 47969, 47985, 48001, 48017, 48033, 48049, 
-    48065, 48081, 48097, 48113, 48129, 48145, 48161, 48177, 48193, 48209, 
-    48225, 48241, 48257, 48273, 48289, 48305, 48321, 48337, 48353, 48369, 
-    48385, 48401, 48417, 48433, 48449, 48465, 48481, 48497, 48513, 48529, 
-    48545, 48561, 48577, 48593, 48609, 48625, 48641, 48657, 48673, 48689, 
-    48705, 48721, 48737, 48753, 48769, 48785, 48801, 48817, 48833, 48849, 
-    48865, 48881, 48897, 48913, 48929, 48945, 48961, 48977, 48993, 49009, 
-    49025, 49041, 49057, 49073, 49089, 49105, 49121, 49137, 49153, 49169, 
-    49185, 49201, 49217, 49233, 49249, 49265, 49281, 49297, 49313, 49329, 
-    49345, 49361, 49377, 49393, 49409, 49425, 49441, 49457, 49473, 49489, 
-    49505, 49521, 49537, 49553, 49569, 49585, 49601, 49617, 49633, 49649, 
-    49665, 49681, 49697, 49713, 49729, 49745, 49761, 49777, 49793, 49809, 
-    49825, 49841, 49857, 49873, 49889, 49905, 49921, 49937, 49953, 49969, 
-    49985, 50001, 50017, 50033, 50049, 50065, 50081, 50097, 50113, 50129, 
-    50145, 50161, 50177, 50193, 50209, 50225, 50241, 50257, 50273, 50289, 
-    50305, 50321, 50337, 50353, 50369, 50385, 50401, 50417, 50432, 50441, 
-    50447, 50453, 50463, 50471, 11823, 13787, 7661, 50484, 1502, 50492, 
-    22665, 5207, 50498, 50503, 50508, 50513, 50518, 50524, 50529, 50535, 
-    50540, 50546, 50551, 50556, 50561, 50566, 50572, 50577, 50582, 50587, 
-    50592, 50597, 50602, 50607, 50613, 50618, 50624, 50631, 2489, 50636, 
-    50642, 6480, 50646, 50651, 50658, 50666, 40, 50670, 50676, 50681, 50686, 
-    50690, 50695, 50699, 50703, 8255, 50707, 50717, 50730, 50741, 50754, 
-    50761, 50767, 50772, 50778, 50784, 50790, 50795, 50800, 50805, 50810, 
-    50814, 50819, 50824, 50829, 50835, 50841, 50847, 50852, 50856, 50861, 
-    50866, 50870, 50875, 50880, 50885, 50889, 8271, 8282, 8287, 1545, 50893, 
-    1550, 50899, 50902, 1581, 50908, 1587, 1593, 8317, 50913, 50921, 50928, 
-    50932, 50938, 50943, 25620, 50948, 50955, 50960, 50964, 50968, 1598, 
-    12933, 12944, 50977, 50984, 50989, 50993, 12956, 1602, 30319, 50996, 
-    51006, 51010, 1607, 31921, 51015, 8437, 8443, 51021, 51033, 51050, 51067, 
-    51084, 51101, 51118, 51135, 51152, 51169, 51186, 51203, 51220, 51237, 
-    51254, 51271, 51288, 51305, 51322, 51339, 51356, 51373, 51390, 51407, 
-    51424, 51441, 51458, 51475, 51492, 51509, 51526, 51543, 51560, 51577, 
-    51594, 51611, 51628, 51645, 51662, 51679, 51696, 51713, 51730, 51747, 
-    51764, 51781, 51798, 51815, 51832, 51849, 51866, 51877, 51882, 1612, 
-    51886, 51892, 7144, 1617, 22912, 51897, 51908, 51918, 51923, 51930, 
-    51936, 51941, 51946, 51950, 8454, 1622, 8459, 51954, 51959, 51965, 51970, 
-    51975, 51980, 51985, 51990, 51995, 52000, 52006, 52012, 52018, 52023, 
-    52027, 52032, 52037, 52041, 52046, 52051, 52056, 52060, 52065, 52071, 
-    52076, 52081, 52085, 52090, 52095, 52101, 52106, 52111, 52117, 52123, 
-    52128, 52132, 52137, 52142, 52147, 52151, 52156, 52161, 52166, 52172, 
-    52178, 52183, 52187, 52191, 52196, 52201, 52206, 24124, 52210, 52215, 
-    52220, 52226, 52231, 52236, 52240, 52245, 52250, 52256, 52261, 52266, 
-    52272, 52278, 52283, 52287, 52292, 52297, 52301, 52306, 52311, 52316, 
-    52322, 52328, 52333, 52337, 52342, 52347, 52351, 52356, 52361, 52366, 
-    52370, 52373, 26077, 52378, 52386, 13218, 13236, 8557, 52392, 8562, 
-    52407, 52412, 52423, 52435, 52447, 52459, 2588, 52471, 52476, 52480, 
-    52486, 52492, 1634, 940, 52497, 52502, 31960, 52506, 52510, 52515, 52519, 
-    13301, 52524, 52527, 52535, 1638, 8587, 8593, 1643, 52543, 52550, 52555, 
-    52564, 52574, 52581, 1648, 52588, 52593, 13376, 52597, 52602, 52609, 
-    52615, 52619, 52629, 13398, 7063, 7070, 1653, 52636, 52642, 52650, 52657, 
-    52663, 52669, 52674, 52685, 52694, 3498, 25495, 25504, 13438, 1658, 1662, 
-    52702, 52713, 52718, 1665, 52726, 52731, 52743, 52749, 52754, 1670, 
-    52759, 52764, 52772, 52780, 52787, 52796, 52804, 52813, 1675, 1680, 
-    52817, 52824, 13547, 52832, 52838, 52846, 52851, 8727, 52860, 52866, 
-    52872, 52877, 52885, 8736, 8741, 52893, 52899, 3563, 32038, 52904, 52910, 
-    52915, 52923, 52930, 52935, 52939, 52945, 1691, 52950, 52953, 977, 52959, 
-    52964, 52969, 52975, 52980, 52985, 52990, 52995, 53000, 53005, 1700, 9, 
-    53011, 53015, 53020, 53024, 53028, 53032, 26315, 53037, 53042, 53047, 
-    53051, 53054, 53058, 53062, 53067, 53071, 53076, 53080, 28322, 28327, 
-    28332, 53083, 53090, 53096, 31804, 53106, 28338, 28343, 26325, 26331, 
-    28354, 26337, 53111, 53116, 53120, 53124, 53127, 53131, 53134, 53139, 
-    53143, 53147, 53150, 53162, 27517, 53169, 12396, 760, 53172, 53176, 
-    53181, 53185, 10779, 53188, 53195, 53208, 53217, 53222, 53232, 53245, 
-    53257, 53264, 53269, 53278, 53291, 29283, 53309, 53314, 53321, 53327, 
-    53332, 53340, 22979, 585, 53346, 53352, 53358, 53363, 26342, 4176, 26356, 
-    53367, 53377, 53382, 53392, 53407, 53413, 53419, 26361, 25652, 53424, 
-    53429, 53434, 53438, 53443, 53448, 53452, 4217, 26382, 53456, 53462, 337, 
-    53472, 53479, 53488, 53494, 53502, 53506, 53510, 53514, 53518, 53523, 
-    53527, 53533, 53541, 53546, 53550, 53555, 53559, 53563, 53569, 53575, 
-    53580, 53584, 26398, 53589, 26404, 26410, 53594, 53600, 53605, 53609, 
-    25669, 13167, 53612, 53616, 53621, 53628, 53634, 53638, 53643, 53649, 
-    53653, 53657, 53662, 53667, 53671, 53674, 53680, 53685, 53692, 53699, 
-    53705, 53710, 53715, 53719, 53724, 53730, 53735, 53741, 53746, 53751, 
-    53756, 53762, 53767, 53772, 53778, 53784, 53790, 26415, 53795, 53800, 
-    53805, 26426, 53810, 53815, 53820, 53826, 53832, 26431, 53837, 53842, 
-    53847, 26442, 26448, 53852, 53857, 53862, 53867, 23129, 26453, 26457, 
-    53872, 53843, 53876, 53882, 53890, 53897, 53903, 53913, 53919, 53926, 
-    8214, 26462, 53932, 53945, 53954, 53960, 53969, 53975, 19524, 53982, 
-    53989, 26443, 53999, 54006, 54011, 54015, 54019, 54024, 4251, 54028, 
-    54033, 54038, 28416, 28421, 54042, 28427, 28432, 54047, 28437, 28443, 
-    54052, 28448, 54063, 54066, 54078, 54086, 26484, 54090, 54099, 54109, 
-    54118, 26489, 54123, 54130, 54139, 54145, 54153, 27045, 4069, 54158, 
-    26498, 54164, 54167, 54173, 54180, 54185, 54190, 19456, 54194, 54200, 
-    54206, 54211, 54217, 54223, 54228, 765, 29092, 29839, 29845, 54232, 
-    54236, 54240, 54243, 54256, 54262, 54266, 54269, 54274, 27708, 54278, 
-    25674, 17585, 54284, 4197, 4205, 6948, 54287, 54292, 54297, 54302, 54307, 
-    54312, 54317, 54322, 54327, 54332, 54338, 54343, 54348, 54354, 54359, 
-    54364, 54369, 54374, 54379, 54384, 54390, 54395, 54401, 54406, 54411, 
-    54416, 54421, 54426, 54431, 54436, 54441, 54446, 54451, 54457, 54462, 
-    54467, 54472, 54477, 54482, 54487, 54493, 54498, 54503, 54508, 54513, 
-    54518, 54523, 54528, 54533, 54538, 54544, 54549, 54554, 54559, 54564, 
-    54570, 54576, 54581, 54587, 54592, 54597, 54602, 54607, 54612, 1495, 235, 
-    54617, 54621, 54625, 54629, 54633, 54636, 54640, 54645, 54649, 54654, 
-    54658, 54662, 54666, 54671, 54675, 54680, 54684, 54688, 54695, 11999, 
-    54704, 54713, 54717, 20701, 54721, 54727, 54735, 54741, 54753, 54757, 
-    54762, 54768, 54778, 54788, 54794, 54798, 54803, 54809, 54818, 54827, 
-    54835, 12274, 54839, 54848, 54856, 54867, 54878, 54887, 54891, 54900, 
-    54910, 54916, 54921, 54927, 54932, 98, 25579, 54943, 21735, 54949, 54956, 
-    54962, 54966, 54976, 54984, 54989, 54993, 55001, 55005, 55011, 55021, 
-    1132, 55024, 55027, 55031, 55037, 55044, 55050, 55059, 55068, 55074, 
-    55080, 55085, 55092, 55099, 55112, 55121, 55130, 55135, 55139, 55146, 
-    55153, 55160, 55167, 55174, 55179, 55183, 55187, 55190, 55200, 55204, 
-    55213, 55217, 55222, 55226, 55235, 55243, 55251, 55256, 55260, 55265, 
-    55270, 55274, 55280, 55292, 55300, 55310, 55317, 55323, 55328, 55332, 
-    55336, 55340, 55349, 55358, 55367, 55373, 55379, 55385, 55390, 55397, 
-    55403, 55411, 55418, 9779, 55424, 55430, 55434, 11225, 55438, 55447, 
-    55453, 55461, 55468, 55472, 55476, 55482, 55490, 55497, 55503, 55514, 
-    55518, 55522, 55526, 55529, 55535, 55540, 55544, 55548, 55557, 55565, 
-    55572, 19890, 31572, 55578, 55586, 55590, 55597, 55606, 55614, 55620, 
-    55625, 55629, 55634, 55638, 55643, 55652, 55656, 55663, 55670, 55678, 
-    55684, 55695, 55701, 55710, 55717, 55724, 55731, 55738, 55745, 34285, 
-    55752, 55759, 55764, 55770, 37407, 55774, 55779, 55784, 55790, 55796, 
-    55802, 55807, 55812, 55817, 55822, 55828, 55833, 55839, 55844, 55850, 
-    55855, 55860, 55865, 55870, 55875, 55880, 55885, 55891, 55896, 55902, 
-    55907, 55912, 55917, 55922, 55927, 55932, 55938, 55943, 55948, 55953, 
-    55958, 55963, 55968, 55973, 55978, 55983, 55988, 55994, 55999, 56004, 
-    56009, 56014, 56019, 56024, 56029, 56034, 56040, 56045, 56050, 56055, 
-    56060, 56065, 56070, 56075, 56080, 56085, 56090, 56095, 56100, 56106, 
-    1816, 216, 30402, 56111, 56114, 56119, 56123, 55247, 56126, 56136, 56143, 
-    56152, 56162, 56172, 56180, 56188, 56192, 56195, 56202, 56208, 56219, 
-    56231, 56242, 56249, 1305, 19361, 56259, 2518, 56263, 1087, 13743, 30918, 
-    56271, 56284, 56288, 56293, 56298, 56303, 56309, 56315, 56320, 6489, 
-    56325, 56333, 8588, 56338, 56344, 1703, 8600, 669, 56353, 56362, 56372, 
-    22357, 56381, 56387, 13353, 56393, 56397, 3678, 8890, 56403, 52708, 
-    56410, 6919, 171, 11159, 56416, 56428, 56432, 56438, 22932, 56442, 8878, 
-    2623, 4, 56447, 56457, 56463, 56474, 56481, 56487, 56493, 56501, 56508, 
-    56518, 56528, 56538, 1317, 56547, 56553, 2646, 2652, 6486, 2200, 56557, 
-    56561, 56570, 56581, 56589, 56597, 56603, 56614, 56625, 56633, 56639, 
-    8931, 56644, 56652, 56656, 56660, 23273, 56672, 56682, 56688, 56694, 
-    56704, 56707, 56718, 56728, 56737, 56741, 56748, 1089, 2511, 56758, 
-    56763, 56771, 56779, 56790, 56804, 11111, 374, 56814, 56818, 56827, 
-    56835, 56841, 56848, 56854, 56861, 56871, 56879, 3570, 184, 56887, 56898, 
-    56902, 56914, 23120, 148, 56920, 56925, 56929, 56936, 56942, 56950, 
-    56957, 6740, 56964, 56973, 3625, 56981, 13399, 56985, 2681, 419, 56990, 
-    57003, 57008, 1815, 602, 57012, 3631, 57020, 57026, 917, 57036, 57045, 
-    57050, 11847, 57054, 37617, 57057, 3580, 19507, 57065, 57072, 19549, 
-    57076, 57083, 57089, 57094, 11861, 57099, 57111, 57117, 57125, 2693, 
-    1735, 57133, 57135, 57140, 57145, 57150, 57156, 57161, 57166, 57171, 
-    57176, 57181, 57186, 57192, 57197, 57202, 57207, 57212, 57217, 57222, 
-    57227, 57232, 57238, 57243, 57248, 57253, 57259, 57264, 57270, 57275, 
-    57280, 57285, 57290, 57295, 57300, 57305, 57311, 57316, 57322, 57327, 
-    57332, 57337, 57342, 57347, 57352, 57357, 57362, 57367, 57372, 57376, 
-    57380, 57385, 57389, 57394, 57399, 57405, 57410, 57414, 57418, 57421, 
-    57423, 57427, 57430, 57435, 57439, 57443, 57447, 57451, 57460, 26652, 
-    57463, 26657, 26662, 57470, 57479, 26668, 57484, 26673, 57493, 57498, 
-    9018, 57502, 57507, 57512, 57516, 57520, 57524, 57528, 57531, 57535, 
-    6170, 57541, 57546, 57550, 3467, 57553, 57555, 57559, 57562, 57567, 
-    57571, 57577, 57590, 57596, 57601, 57605, 57613, 57620, 57628, 57637, 
-    57645, 26678, 57652, 57662, 57671, 57684, 57689, 57694, 57700, 57707, 
-    57718, 57730, 57737, 57746, 57755, 57764, 57771, 57777, 57784, 57792, 
-    57799, 57807, 57816, 57824, 57831, 57839, 57848, 57856, 57865, 57875, 
-    57884, 57892, 57899, 57907, 57916, 57924, 57933, 57943, 57952, 57960, 
-    57969, 57979, 57988, 57998, 58009, 58019, 58028, 58036, 58043, 58051, 
-    58060, 58068, 58077, 58087, 58096, 58104, 58113, 58123, 58132, 58142, 
-    58153, 58163, 58172, 58180, 58189, 58199, 58208, 58218, 58229, 58239, 
-    58248, 58258, 58269, 58279, 58290, 58302, 58313, 58323, 58332, 58340, 
-    58347, 58355, 58364, 58372, 58381, 58391, 58400, 58408, 58417, 58427, 
-    58436, 58446, 58457, 58467, 58476, 58484, 58493, 58503, 58512, 58522, 
-    58533, 58543, 58552, 58562, 58573, 58583, 58594, 58606, 58617, 58627, 
-    58636, 58644, 58653, 58663, 58672, 58682, 58693, 58703, 58712, 58722, 
-    58733, 58743, 58754, 58766, 58777, 58787, 58796, 58806, 58817, 58827, 
-    58838, 58850, 58861, 58871, 58882, 58894, 58905, 58917, 58930, 58942, 
-    58953, 58963, 58972, 58980, 58987, 58995, 59004, 59012, 59021, 59031, 
-    59040, 59048, 59057, 59067, 59076, 59086, 59097, 59107, 59116, 59124, 
-    59133, 59143, 59152, 59162, 59173, 59183, 59192, 59202, 59213, 59223, 
-    59234, 59246, 59257, 59267, 59276, 59284, 59293, 59303, 59312, 59322, 
-    59333, 59343, 59352, 59362, 59373, 59383, 59394, 59406, 59417, 59427, 
-    59436, 59446, 59457, 59467, 59478, 59490, 59501, 59511, 59522, 59534, 
-    59545, 59557, 59570, 59582, 59593, 59603, 59612, 59620, 59629, 59639, 
-    59648, 59658, 59669, 59679, 59688, 59698, 59709, 59719, 59730, 59742, 
-    59753, 59763, 59772, 59782, 59793, 59803, 59814, 59826, 59837, 59847, 
-    59858, 59870, 59881, 59893, 59906, 59918, 59929, 59939, 59948, 59958, 
-    59969, 59979, 59990, 60002, 60013, 60023, 60034, 60046, 60057, 60069, 
-    60082, 60094, 60105, 60115, 60126, 60138, 60149, 60161, 60174, 60186, 
-    60197, 60209, 60222, 60234, 60247, 60261, 60274, 60286, 60297, 60307, 
-    60316, 60324, 60331, 60336, 6029, 60343, 26688, 60348, 60353, 26693, 
-    60359, 17319, 31449, 60364, 60370, 60376, 60383, 60390, 60395, 60399, 
-    60403, 60412, 60418, 60430, 60441, 60445, 2936, 6004, 60450, 60453, 
-    60455, 60459, 60463, 60467, 34097, 60472, 60476, 60479, 60484, 60488, 
-    60495, 60501, 60505, 60509, 26703, 60512, 60519, 60528, 60536, 60547, 
-    60555, 60563, 60570, 60577, 60583, 60594, 26708, 60599, 60610, 60622, 
-    60633, 60641, 2484, 60646, 60659, 60663, 60671, 60676, 60684, 13908, 
-    60695, 60701, 60708, 60716, 60722, 26713, 60727, 7592, 50467, 60734, 
-    60737, 60745, 60758, 60771, 60784, 60797, 60804, 60815, 60824, 34102, 
-    34107, 60829, 60833, 60841, 60848, 60857, 60865, 60871, 60880, 60888, 
-    60896, 60900, 60909, 60918, 60928, 60941, 60954, 60964, 26718, 60970, 
-    60977, 60983, 26724, 60988, 60991, 60995, 61003, 61012, 33840, 61020, 
-    61028, 61035, 61043, 61053, 61062, 61071, 61080, 61088, 61099, 61109, 
-    7184, 17802, 61118, 61123, 61128, 61132, 61136, 61141, 61147, 61152, 
-    61157, 61163, 61168, 61173, 17767, 61178, 61185, 61193, 61201, 61206, 
-    61213, 61220, 61224, 61228, 61236, 61244, 26733, 61250, 61256, 61268, 
-    61274, 61279, 61290, 61300, 61310, 61322, 61328, 61338, 26738, 61347, 
-    61356, 61362, 61374, 61385, 61392, 61397, 61401, 61409, 61415, 61420, 
-    61425, 61432, 61444, 61454, 61463, 61470, 27937, 19731, 61476, 61481, 
-    61485, 61489, 61494, 61500, 61511, 61524, 61529, 26743, 61534, 61546, 
-    61555, 61568, 61575, 61584, 61592, 61597, 61603, 1484, 61608, 61613, 
-    61618, 61623, 61629, 61634, 61639, 61645, 61651, 61656, 61660, 61665, 
-    61670, 61675, 50973, 61680, 61685, 61690, 61695, 61701, 61707, 61712, 
-    61716, 61721, 61726, 61731, 61736, 61741, 61745, 61751, 61756, 61765, 
-    61770, 61775, 61780, 61785, 61789, 61796, 61802, 13605, 13612, 37872, 
-    61807, 61757, 61809, 26752, 61812, 61821, 61827, 4263, 26757, 61831, 
-    61837, 61843, 61848, 61852, 61859, 61864, 61874, 61883, 61887, 61893, 
-    61899, 61905, 61909, 61917, 61924, 61932, 61940, 26762, 61947, 61950, 
-    61957, 61962, 61966, 61972, 61977, 61981, 61990, 61998, 62004, 62009, 
-    27544, 62016, 62023, 62029, 62034, 62040, 62047, 62053, 26475, 22688, 
-    62059, 62064, 62070, 62082, 61790, 61797, 62092, 62097, 62104, 62111, 
-    62117, 62128, 62133, 6965, 62141, 62144, 62150, 62154, 62158, 62161, 
-    62167, 26571, 4283, 836, 10621, 62174, 62180, 62186, 62192, 62198, 62204, 
-    62210, 62216, 62222, 62227, 62232, 62237, 62242, 62247, 62252, 62257, 
-    62262, 62267, 62272, 62277, 62282, 62287, 62293, 62298, 62303, 62309, 
-    62314, 62319, 62325, 62331, 62337, 62343, 62349, 62355, 62361, 62367, 
-    62373, 62378, 62383, 62389, 62394, 62399, 62405, 62410, 62415, 62420, 
-    62425, 62430, 62435, 62440, 62445, 62450, 62455, 62460, 62465, 62471, 
-    62476, 62481, 62486, 62492, 62497, 62502, 62507, 62512, 62518, 62523, 
-    62528, 62533, 62538, 62543, 62548, 62553, 62558, 62563, 62568, 62573, 
-    62578, 62583, 62588, 62593, 62598, 62603, 62608, 62613, 62619, 62624, 
-    62629, 62634, 62639, 62644, 62649, 62654, 1846, 138, 62659, 62663, 62667, 
-    62672, 62680, 62684, 62691, 62699, 62703, 62716, 62720, 62723, 62728, 
-    62732, 62737, 62741, 62749, 62753, 17327, 62758, 62762, 62766, 62769, 
-    62777, 62782, 62789, 62795, 62801, 62806, 62814, 56276, 62821, 62826, 
-    62831, 62835, 62839, 62842, 62847, 62852, 62856, 62859, 62865, 62869, 
-    62879, 62888, 62891, 62904, 62912, 62920, 62930, 62943, 62950, 62961, 
-    62967, 62972, 62977, 62983, 62992, 61536, 63000, 63006, 63014, 63018, 
-    63022, 63028, 63036, 63048, 63060, 63067, 63071, 63082, 63090, 63097, 
-    63109, 63117, 63125, 63132, 63138, 63148, 63157, 63162, 63172, 63176, 
-    63180, 63190, 63197, 63209, 63221, 63230, 60649, 63237, 63248, 63262, 
-    63270, 63280, 63287, 63295, 63304, 63312, 63322, 63331, 63342, 63354, 
-    63363, 63373, 63380, 63389, 63404, 63413, 63426, 63441, 63445, 63457, 
-    63468, 63479, 63490, 63500, 63511, 63519, 63525, 63535, 63541, 63546, 
-    63552, 63558, 63563, 63570, 7469, 13928, 63576, 63581, 63588, 63594, 
-    63599, 63603, 63606, 63609, 63611, 63618, 63629, 63634, 63638, 63644, 
-    63649, 63657, 56720, 56730, 63663, 63673, 63680, 63686, 63691, 63700, 
-    63707, 63715, 63724, 63730, 63736, 63743, 63750, 63755, 63759, 63764, 
-    63769, 63774, 63778, 62711, 63787, 63791, 63802, 63812, 13937, 63823, 
-    63831, 13949, 63838, 22598, 63842, 63846, 63851, 63868, 63880, 8169, 
-    63892, 63897, 63902, 63907, 63911, 63914, 63919, 63924, 63930, 63935, 
-    4075, 17378, 63940, 63945, 63951, 63958, 63963, 63968, 63974, 63980, 
-    63986, 63991, 63997, 64001, 64015, 64023, 64031, 64037, 64042, 64049, 
-    64054, 64059, 64067, 64072, 64078, 64083, 64088, 64092, 64095, 64113, 
-    64132, 64145, 64159, 64175, 64182, 64189, 64195, 64202, 64207, 64213, 
-    64219, 64224, 64229, 64245, 8182, 64259, 64266, 64270, 64273, 64278, 
-    64283, 64290, 64295, 64300, 64305, 64309, 64317, 9090, 64326, 64331, 
-    64337, 9101, 64342, 64345, 64350, 64360, 64369, 64374, 64382, 64389, 
-    64400, 64410, 64415, 64420, 64427, 64433, 64438, 64445, 64454, 64462, 
-    64468, 64475, 64481, 64485, 13451, 2910, 64490, 64494, 64500, 64506, 
-    64513, 64517, 64538, 64560, 64576, 64593, 64612, 64621, 64631, 64638, 
-    64645, 22517, 64651, 64655, 64663, 64669, 64677, 64681, 64689, 64696, 
-    64700, 64706, 64712, 64717, 3375, 34302, 64723, 64727, 64731, 64735, 
-    64740, 64745, 64750, 64756, 64761, 64767, 64772, 64777, 64781, 64786, 
-    34317, 64790, 64795, 64803, 64807, 64812, 64819, 64828, 64834, 64841, 
-    64845, 64852, 64861, 64866, 64874, 64883, 64889, 64894, 64899, 64905, 
-    64911, 64916, 64920, 64924, 64927, 64935, 64945, 64950, 32057, 64958, 
-    64970, 64974, 64986, 64997, 65004, 65010, 65017, 65029, 65036, 65042, 
-    17439, 65046, 65052, 65058, 65063, 65068, 5084, 65073, 65079, 65087, 
-    65096, 65100, 65106, 64782, 24971, 65111, 65113, 65118, 65123, 65128, 
-    65133, 65138, 65143, 65148, 65153, 65158, 65163, 65168, 65173, 65178, 
-    65183, 65189, 65194, 65199, 65204, 65209, 65214, 65219, 65224, 65229, 
-    65235, 65241, 65247, 65252, 65257, 65269, 65274, 1852, 67, 65279, 65284, 
-    26772, 26777, 26782, 26788, 26793, 65288, 26798, 65310, 65312, 65316, 
-    65320, 65325, 65329, 26802, 65333, 26807, 65341, 65344, 26812, 18179, 
-    65353, 65357, 1415, 65362, 26823, 65365, 65370, 21354, 21364, 65375, 
-    65379, 65384, 65390, 65395, 65404, 65409, 65416, 65422, 65427, 65432, 
-    65437, 65445, 26828, 1110, 65452, 65458, 65463, 65468, 65473, 65479, 
-    65484, 65491, 65497, 65502, 65510, 65516, 13959, 65523, 29296, 65536, 
-    65541, 65547, 65560, 65564, 65573, 65580, 65586, 65594, 65603, 65610, 
-    65616, 26832, 65619, 65626, 65632, 65636, 65639, 65647, 65661, 65668, 
-    26837, 65674, 26842, 65681, 28422, 65691, 65696, 65700, 17717, 65705, 
-    65710, 26847, 54013, 65714, 65719, 65725, 65731, 65738, 65744, 65749, 
-    65754, 65763, 65775, 65790, 27067, 65796, 13117, 26851, 65800, 65807, 
-    26856, 65813, 65822, 65829, 65838, 65844, 65849, 65855, 26861, 65860, 
-    65869, 65878, 65885, 65891, 65897, 65905, 65909, 26866, 65912, 26872, 
-    26878, 65917, 65925, 65935, 26883, 65939, 65941, 65945, 65950, 65954, 
-    65958, 65964, 65969, 65973, 65978, 2915, 65982, 65989, 65993, 66002, 
-    66010, 66017, 66022, 66027, 66031, 66035, 66038, 66044, 66052, 66058, 
-    66062, 66067, 66074, 66080, 28799, 66085, 66088, 66093, 66097, 66102, 
-    66107, 66111, 66119, 21373, 21382, 66125, 66131, 66137, 66142, 66146, 
-    66149, 66159, 66164, 66170, 66176, 66184, 66189, 28438, 66193, 66201, 
-    66207, 66212, 66217, 50653, 28444, 66223, 66228, 66232, 66237, 66242, 
-    66247, 66251, 66256, 66261, 66267, 66272, 66277, 66283, 66289, 66294, 
-    66298, 66303, 66308, 66313, 66317, 66322, 66327, 66332, 66338, 66344, 
-    66350, 66355, 66359, 66364, 66369, 66373, 66378, 66383, 66388, 66392, 
-    26887, 66400, 66404, 66412, 18521, 66423, 66429, 66436, 66441, 66450, 
-    66455, 66459, 66464, 66472, 66480, 66487, 56422, 66493, 66501, 66508, 
-    66519, 66525, 26897, 66528, 66535, 32183, 66539, 66544, 66549, 6877, 
-    66553, 66561, 66568, 66575, 66581, 66445, 66595, 66601, 66605, 66608, 
-    66616, 66623, 66628, 66641, 66648, 66653, 66658, 66661, 66668, 66672, 
-    66682, 66692, 66701, 66712, 66717, 66721, 28813, 17641, 32629, 66729, 
-    66734, 66739, 66744, 66749, 66754, 66759, 66763, 66768, 66773, 66778, 
-    66783, 66788, 66793, 66797, 66802, 66807, 66811, 66815, 66819, 66823, 
-    66828, 66833, 66837, 66842, 66846, 66850, 66855, 66860, 66865, 66870, 
-    66874, 66879, 66884, 66888, 66893, 66898, 66903, 66908, 66913, 66918, 
-    66923, 66928, 66933, 66938, 66943, 66948, 66953, 66958, 66963, 66968, 
-    66973, 66978, 66983, 66988, 66992, 66997, 67002, 67007, 67012, 67017, 
-    67022, 67027, 67032, 67037, 67042, 67047, 67051, 67056, 67060, 67065, 
-    67070, 67075, 67080, 67085, 67090, 67095, 67100, 67105, 67109, 67113, 
-    67118, 67123, 67127, 67132, 67137, 67141, 67146, 67151, 67156, 67161, 
-    67165, 67170, 67175, 67179, 67184, 67188, 67192, 67196, 67200, 67205, 
-    67209, 67213, 67217, 67221, 67225, 67229, 67233, 67237, 67241, 67246, 
-    67251, 67256, 67261, 67266, 67271, 67276, 67281, 67286, 67291, 67295, 
-    67299, 67303, 67307, 67311, 67315, 67320, 67324, 67329, 67333, 67338, 
-    67343, 67347, 67351, 67356, 67360, 67364, 67368, 67372, 67376, 67380, 
-    67384, 67388, 67392, 67396, 67400, 67404, 67408, 67412, 67417, 67422, 
-    67426, 67430, 67434, 67438, 67442, 67446, 67451, 67455, 67459, 67463, 
-    67467, 67471, 67475, 67480, 67484, 67489, 67493, 67497, 67501, 67505, 
-    67509, 67513, 67517, 67521, 67525, 67529, 67533, 67538, 67542, 67546, 
-    67550, 67554, 67558, 67562, 67566, 67570, 67574, 67578, 67582, 67587, 
-    67591, 67595, 67600, 67605, 67609, 67613, 67617, 67621, 67625, 67629, 
-    67633, 67637, 67642, 67646, 67651, 67655, 67660, 67664, 67669, 67673, 
-    67679, 67684, 67688, 67693, 67697, 67702, 67706, 67711, 67715, 67720, 
-    1503, 67724, 1741, 1746, 67728, 67732, 2711, 67736, 1384, 67741, 1350, 
-    67745, 67749, 67756, 67763, 67777, 2727, 5159, 67786, 67794, 67801, 
-    67808, 67821, 67834, 67845, 67850, 67857, 67869, 3703, 9162, 67873, 
-    67878, 67887, 67897, 67902, 67906, 67911, 67918, 67924, 67936, 1355, 
-    11688, 67946, 67952, 67966, 67978, 67987, 67996, 68005, 68013, 68024, 
-    68032, 3742, 68042, 68051, 68057, 68064, 28919, 68069, 2755, 10316, 
-    68073, 68080, 6828, 68089, 2760, 26495, 68095, 68102, 68108, 68115, 
-    68121, 68128, 68138, 68147, 68158, 68165, 68171, 68181, 68189, 68195, 
-    68210, 68216, 68221, 68228, 68231, 68237, 68244, 68250, 68258, 68267, 
-    68275, 68281, 68290, 33842, 68304, 68309, 11709, 68315, 68328, 68337, 
-    68345, 68352, 68356, 68360, 68363, 68370, 68377, 68385, 68393, 68402, 
-    68410, 11645, 68418, 68423, 68427, 68439, 68446, 68455, 793, 68465, 2776, 
-    68474, 68478, 68484, 68497, 68509, 68519, 68528, 68540, 68548, 68557, 
-    68568, 68579, 68589, 68599, 68608, 68616, 8811, 68623, 68627, 68632, 
-    68637, 68643, 1360, 9217, 68650, 68661, 68670, 68678, 68687, 68695, 
-    68711, 68722, 68738, 68748, 68769, 68782, 68795, 68800, 68806, 22084, 
-    68812, 68815, 68822, 68832, 6139, 68839, 68844, 68849, 68857, 7517, 7526, 
-    68865, 68876, 2784, 2789, 68882, 8419, 68888, 68895, 68902, 68915, 2193, 
-    50, 68920, 68925, 68935, 68941, 68945, 68950, 68954, 2812, 68966, 68974, 
-    68985, 68996, 69005, 69010, 69016, 69021, 69031, 69041, 69046, 69052, 
-    69057, 69066, 17674, 69070, 3804, 12, 69075, 69082, 766, 69088, 69093, 
-    52873, 69098, 69103, 69109, 69117, 69122, 69129, 69135, 30869, 33740, 
-    69141, 2816, 32, 69151, 69164, 69172, 69177, 69183, 2838, 25639, 69188, 
-    69196, 69203, 69208, 50895, 53694, 69217, 1686, 1795, 69222, 69227, 
-    69234, 1799, 237, 69241, 69247, 69252, 69259, 1803, 69264, 69270, 69275, 
-    69287, 4250, 69297, 1810, 69303, 69308, 69315, 69322, 69337, 69344, 
-    69352, 69356, 69360, 69372, 69377, 69381, 23272, 3830, 69385, 69396, 
-    69400, 69404, 69410, 69414, 69423, 69427, 69438, 69442, 2238, 69446, 
-    69448, 2935, 7189, 69456, 69461, 69465, 69474, 69480, 2905, 13622, 69484, 
-    69497, 69515, 69520, 69528, 69536, 69546, 69558, 69571, 69578, 69594, 
-    69601, 69607, 958, 69614, 69621, 69631, 69640, 69652, 34706, 69660, 2919, 
-    9391, 69663, 69671, 69675, 2923, 69679, 17523, 52946, 3514, 69683, 2929, 
-    69687, 69697, 69703, 69709, 69715, 69721, 69727, 69733, 69739, 69745, 
-    69751, 69757, 69763, 69769, 69775, 69781, 69787, 69793, 69799, 69805, 
-    69811, 69817, 69823, 69829, 69835, 69841, 69847, 69854, 69861, 69867, 
-    69873, 69879, 69885, 69891, 69897, 1365, 12692, 9411, 69903, 69908, 
-    69913, 69918, 69923, 69928, 69933, 69938, 69943, 69948, 69953, 69958, 
-    69963, 69968, 69973, 69978, 69983, 69988, 69993, 69998, 70003, 70008, 
-    70013, 70018, 70023, 70028, 70034, 70039, 70044, 70050, 70055, 70061, 
-    70066, 70071, 70077, 70082, 70087, 70092, 70097, 70102, 70107, 70112, 
-    70117, 69698, 69704, 69710, 69716, 69722, 69728, 69734, 69740, 69746, 
-    69752, 69758, 69764, 69770, 69776, 69782, 70123, 69788, 69794, 69800, 
-    70129, 69806, 69812, 69818, 69824, 69830, 69836, 69842, 69862, 70135, 
-    70141, 69868, 70147, 69874, 69880, 69886, 69892, 69898, 2950, 2955, 
-    70153, 70158, 70161, 70167, 70173, 70180, 70185, 70190, 2243, 
-};
-
-/* code->name phrasebook */
-#define phrasebook_shift 7
-#define phrasebook_short 216
-static unsigned char phrasebook[] = {
-    0, 223, 254, 246, 95, 78, 228, 69, 78, 54, 55, 248, 155, 55, 229, 169, 
-    55, 254, 134, 254, 79, 42, 229, 229, 45, 229, 229, 253, 251, 88, 55, 250, 
-    168, 242, 120, 245, 90, 223, 136, 224, 17, 20, 217, 84, 20, 107, 20, 103, 
-    20, 160, 20, 154, 20, 174, 20, 182, 20, 191, 20, 185, 20, 190, 250, 175, 
-    225, 67, 235, 87, 55, 246, 154, 55, 244, 30, 55, 228, 82, 78, 250, 167, 
-    253, 244, 7, 6, 1, 60, 7, 6, 1, 253, 204, 7, 6, 1, 251, 202, 7, 6, 1, 
-    250, 46, 7, 6, 1, 73, 7, 6, 1, 246, 74, 7, 6, 1, 245, 67, 7, 6, 1, 243, 
-    225, 7, 6, 1, 72, 7, 6, 1, 237, 126, 7, 6, 1, 237, 17, 7, 6, 1, 153, 7, 
-    6, 1, 189, 7, 6, 1, 207, 7, 6, 1, 74, 7, 6, 1, 230, 59, 7, 6, 1, 228, 
-    163, 7, 6, 1, 152, 7, 6, 1, 198, 7, 6, 1, 222, 201, 7, 6, 1, 68, 7, 6, 1, 
-    216, 216, 7, 6, 1, 219, 40, 7, 6, 1, 218, 151, 7, 6, 1, 218, 90, 7, 6, 1, 
-    217, 157, 42, 40, 115, 227, 160, 224, 17, 45, 40, 115, 250, 217, 255, 0, 
-    109, 235, 43, 244, 37, 255, 0, 7, 3, 1, 60, 7, 3, 1, 253, 204, 7, 3, 1, 
-    251, 202, 7, 3, 1, 250, 46, 7, 3, 1, 73, 7, 3, 1, 246, 74, 7, 3, 1, 245, 
-    67, 7, 3, 1, 243, 225, 7, 3, 1, 72, 7, 3, 1, 237, 126, 7, 3, 1, 237, 17, 
-    7, 3, 1, 153, 7, 3, 1, 189, 7, 3, 1, 207, 7, 3, 1, 74, 7, 3, 1, 230, 59, 
-    7, 3, 1, 228, 163, 7, 3, 1, 152, 7, 3, 1, 198, 7, 3, 1, 222, 201, 7, 3, 
-    1, 68, 7, 3, 1, 216, 216, 7, 3, 1, 219, 40, 7, 3, 1, 218, 151, 7, 3, 1, 
-    218, 90, 7, 3, 1, 217, 157, 42, 250, 79, 115, 69, 235, 43, 45, 250, 79, 
-    115, 221, 179, 231, 203, 223, 254, 237, 170, 246, 95, 78, 251, 86, 55, 
-    229, 11, 55, 250, 78, 55, 218, 19, 55, 252, 1, 135, 226, 87, 55, 249, 13, 
-    250, 126, 55, 245, 215, 230, 103, 237, 211, 235, 112, 51, 254, 120, 228, 
-    69, 78, 212, 55, 224, 21, 242, 121, 227, 198, 55, 234, 115, 249, 77, 55, 
-    229, 42, 55, 223, 59, 103, 223, 59, 160, 254, 248, 255, 0, 233, 195, 55, 
-    229, 73, 55, 233, 193, 248, 145, 251, 92, 223, 59, 107, 234, 58, 230, 
-    103, 237, 211, 227, 106, 51, 254, 120, 228, 69, 78, 219, 55, 245, 108, 
-    131, 228, 89, 219, 55, 245, 108, 131, 243, 194, 219, 55, 245, 108, 148, 
-    228, 87, 237, 170, 228, 82, 78, 7, 6, 1, 112, 2, 244, 36, 7, 6, 1, 112, 
-    2, 168, 7, 6, 1, 112, 2, 250, 216, 7, 6, 1, 112, 2, 221, 179, 7, 6, 1, 
-    112, 2, 249, 13, 7, 6, 1, 112, 2, 227, 94, 50, 7, 6, 1, 254, 234, 7, 6, 
-    1, 251, 203, 2, 251, 92, 7, 6, 1, 178, 2, 244, 36, 7, 6, 1, 178, 2, 168, 
-    7, 6, 1, 178, 2, 250, 216, 7, 6, 1, 178, 2, 249, 13, 7, 6, 1, 242, 107, 
-    2, 244, 36, 7, 6, 1, 242, 107, 2, 168, 7, 6, 1, 242, 107, 2, 250, 216, 7, 
-    6, 1, 242, 107, 2, 249, 13, 7, 6, 1, 246, 118, 7, 6, 1, 233, 34, 2, 221, 
-    179, 7, 6, 1, 142, 2, 244, 36, 7, 6, 1, 142, 2, 168, 7, 6, 1, 142, 2, 
-    250, 216, 7, 6, 1, 142, 2, 221, 179, 7, 6, 1, 142, 2, 249, 13, 233, 84, 
-    55, 7, 6, 1, 142, 2, 92, 7, 6, 1, 105, 2, 244, 36, 7, 6, 1, 105, 2, 168, 
-    7, 6, 1, 105, 2, 250, 216, 7, 6, 1, 105, 2, 249, 13, 7, 6, 1, 218, 91, 2, 
-    168, 7, 6, 1, 221, 234, 7, 3, 1, 225, 1, 198, 7, 3, 1, 112, 2, 244, 36, 
-    7, 3, 1, 112, 2, 168, 7, 3, 1, 112, 2, 250, 216, 7, 3, 1, 112, 2, 221, 
-    179, 7, 3, 1, 112, 2, 249, 13, 7, 3, 1, 112, 2, 227, 94, 50, 7, 3, 1, 
-    254, 234, 7, 3, 1, 251, 203, 2, 251, 92, 7, 3, 1, 178, 2, 244, 36, 7, 3, 
-    1, 178, 2, 168, 7, 3, 1, 178, 2, 250, 216, 7, 3, 1, 178, 2, 249, 13, 7, 
-    3, 1, 242, 107, 2, 244, 36, 7, 3, 1, 242, 107, 2, 168, 7, 3, 1, 242, 107, 
-    2, 250, 216, 7, 3, 1, 242, 107, 2, 249, 13, 7, 3, 1, 246, 118, 7, 3, 1, 
-    233, 34, 2, 221, 179, 7, 3, 1, 142, 2, 244, 36, 7, 3, 1, 142, 2, 168, 7, 
-    3, 1, 142, 2, 250, 216, 7, 3, 1, 142, 2, 221, 179, 7, 3, 1, 142, 2, 249, 
-    13, 248, 188, 55, 7, 3, 1, 142, 2, 92, 7, 3, 1, 105, 2, 244, 36, 7, 3, 1, 
-    105, 2, 168, 7, 3, 1, 105, 2, 250, 216, 7, 3, 1, 105, 2, 249, 13, 7, 3, 
-    1, 218, 91, 2, 168, 7, 3, 1, 221, 234, 7, 3, 1, 218, 91, 2, 249, 13, 7, 
-    6, 1, 112, 2, 234, 115, 7, 3, 1, 112, 2, 234, 115, 7, 6, 1, 112, 2, 252, 
-    8, 7, 3, 1, 112, 2, 252, 8, 7, 6, 1, 112, 2, 230, 162, 7, 3, 1, 112, 2, 
-    230, 162, 7, 6, 1, 251, 203, 2, 168, 7, 3, 1, 251, 203, 2, 168, 7, 6, 1, 
-    251, 203, 2, 250, 216, 7, 3, 1, 251, 203, 2, 250, 216, 7, 6, 1, 251, 203, 
-    2, 61, 50, 7, 3, 1, 251, 203, 2, 61, 50, 7, 6, 1, 251, 203, 2, 251, 130, 
-    7, 3, 1, 251, 203, 2, 251, 130, 7, 6, 1, 250, 47, 2, 251, 130, 7, 3, 1, 
-    250, 47, 2, 251, 130, 7, 6, 1, 250, 47, 2, 92, 7, 3, 1, 250, 47, 2, 92, 
-    7, 6, 1, 178, 2, 234, 115, 7, 3, 1, 178, 2, 234, 115, 7, 6, 1, 178, 2, 
-    252, 8, 7, 3, 1, 178, 2, 252, 8, 7, 6, 1, 178, 2, 61, 50, 7, 3, 1, 178, 
-    2, 61, 50, 7, 6, 1, 178, 2, 230, 162, 7, 3, 1, 178, 2, 230, 162, 7, 6, 1, 
-    178, 2, 251, 130, 7, 3, 1, 178, 2, 251, 130, 7, 6, 1, 245, 68, 2, 250, 
-    216, 7, 3, 1, 245, 68, 2, 250, 216, 7, 6, 1, 245, 68, 2, 252, 8, 7, 3, 1, 
-    245, 68, 2, 252, 8, 7, 6, 1, 245, 68, 2, 61, 50, 7, 3, 1, 245, 68, 2, 61, 
-    50, 7, 6, 1, 245, 68, 2, 251, 92, 7, 3, 1, 245, 68, 2, 251, 92, 7, 6, 1, 
-    243, 226, 2, 250, 216, 7, 3, 1, 243, 226, 2, 250, 216, 7, 6, 1, 243, 226, 
-    2, 92, 7, 3, 1, 243, 226, 2, 92, 7, 6, 1, 242, 107, 2, 221, 179, 7, 3, 1, 
-    242, 107, 2, 221, 179, 7, 6, 1, 242, 107, 2, 234, 115, 7, 3, 1, 242, 107, 
-    2, 234, 115, 7, 6, 1, 242, 107, 2, 252, 8, 7, 3, 1, 242, 107, 2, 252, 8, 
-    7, 6, 1, 242, 107, 2, 230, 162, 7, 3, 1, 242, 107, 2, 230, 162, 7, 6, 1, 
-    242, 107, 2, 61, 50, 7, 3, 1, 248, 144, 72, 7, 6, 24, 237, 253, 7, 3, 24, 
-    237, 253, 7, 6, 1, 237, 127, 2, 250, 216, 7, 3, 1, 237, 127, 2, 250, 216, 
-    7, 6, 1, 237, 18, 2, 251, 92, 7, 3, 1, 237, 18, 2, 251, 92, 7, 3, 1, 236, 
-    17, 7, 6, 1, 235, 202, 2, 168, 7, 3, 1, 235, 202, 2, 168, 7, 6, 1, 235, 
-    202, 2, 251, 92, 7, 3, 1, 235, 202, 2, 251, 92, 7, 6, 1, 235, 202, 2, 
-    251, 130, 7, 3, 1, 235, 202, 2, 251, 130, 7, 6, 1, 235, 202, 2, 233, 193, 
-    248, 145, 7, 3, 1, 235, 202, 2, 233, 193, 248, 145, 7, 6, 1, 235, 202, 2, 
-    92, 7, 3, 1, 235, 202, 2, 92, 7, 6, 1, 233, 34, 2, 168, 7, 3, 1, 233, 34, 
-    2, 168, 7, 6, 1, 233, 34, 2, 251, 92, 7, 3, 1, 233, 34, 2, 251, 92, 7, 6, 
-    1, 233, 34, 2, 251, 130, 7, 3, 1, 233, 34, 2, 251, 130, 7, 3, 1, 233, 34, 
-    228, 246, 251, 213, 254, 79, 7, 6, 1, 246, 185, 7, 3, 1, 246, 185, 7, 6, 
-    1, 142, 2, 234, 115, 7, 3, 1, 142, 2, 234, 115, 7, 6, 1, 142, 2, 252, 8, 
-    7, 3, 1, 142, 2, 252, 8, 7, 6, 1, 142, 2, 51, 168, 7, 3, 1, 142, 2, 51, 
-    168, 7, 6, 24, 230, 167, 7, 3, 24, 230, 167, 7, 6, 1, 228, 39, 2, 168, 7, 
-    3, 1, 228, 39, 2, 168, 7, 6, 1, 228, 39, 2, 251, 92, 7, 3, 1, 228, 39, 2, 
-    251, 92, 7, 6, 1, 228, 39, 2, 251, 130, 7, 3, 1, 228, 39, 2, 251, 130, 7, 
-    6, 1, 226, 235, 2, 168, 7, 3, 1, 226, 235, 2, 168, 7, 6, 1, 226, 235, 2, 
-    250, 216, 7, 3, 1, 226, 235, 2, 250, 216, 7, 6, 1, 226, 235, 2, 251, 92, 
-    7, 3, 1, 226, 235, 2, 251, 92, 7, 6, 1, 226, 235, 2, 251, 130, 7, 3, 1, 
-    226, 235, 2, 251, 130, 7, 6, 1, 222, 202, 2, 251, 92, 7, 3, 1, 222, 202, 
-    2, 251, 92, 7, 6, 1, 222, 202, 2, 251, 130, 7, 3, 1, 222, 202, 2, 251, 
-    130, 7, 6, 1, 222, 202, 2, 92, 7, 3, 1, 222, 202, 2, 92, 7, 6, 1, 105, 2, 
-    221, 179, 7, 3, 1, 105, 2, 221, 179, 7, 6, 1, 105, 2, 234, 115, 7, 3, 1, 
-    105, 2, 234, 115, 7, 6, 1, 105, 2, 252, 8, 7, 3, 1, 105, 2, 252, 8, 7, 6, 
-    1, 105, 2, 227, 94, 50, 7, 3, 1, 105, 2, 227, 94, 50, 7, 6, 1, 105, 2, 
-    51, 168, 7, 3, 1, 105, 2, 51, 168, 7, 6, 1, 105, 2, 230, 162, 7, 3, 1, 
-    105, 2, 230, 162, 7, 6, 1, 219, 41, 2, 250, 216, 7, 3, 1, 219, 41, 2, 
-    250, 216, 7, 6, 1, 218, 91, 2, 250, 216, 7, 3, 1, 218, 91, 2, 250, 216, 
-    7, 6, 1, 218, 91, 2, 249, 13, 7, 6, 1, 217, 158, 2, 168, 7, 3, 1, 217, 
-    158, 2, 168, 7, 6, 1, 217, 158, 2, 61, 50, 7, 3, 1, 217, 158, 2, 61, 50, 
-    7, 6, 1, 217, 158, 2, 251, 130, 7, 3, 1, 217, 158, 2, 251, 130, 7, 3, 1, 
-    171, 198, 7, 3, 1, 49, 2, 92, 7, 6, 1, 49, 2, 96, 7, 6, 1, 49, 2, 221, 
-    117, 7, 3, 1, 49, 2, 221, 117, 7, 6, 1, 145, 182, 7, 3, 1, 145, 182, 7, 
-    6, 1, 230, 119, 74, 7, 6, 1, 251, 203, 2, 96, 7, 3, 1, 251, 203, 2, 96, 
-    7, 6, 1, 254, 212, 250, 46, 7, 6, 1, 250, 47, 2, 96, 7, 6, 1, 250, 47, 2, 
-    221, 117, 7, 3, 1, 250, 47, 2, 221, 117, 7, 3, 1, 215, 249, 62, 7, 6, 1, 
-    210, 73, 7, 6, 1, 226, 104, 7, 6, 1, 230, 119, 73, 7, 6, 1, 246, 75, 2, 
-    96, 7, 3, 1, 246, 75, 2, 96, 7, 6, 1, 245, 68, 2, 96, 7, 6, 1, 244, 231, 
-    7, 3, 1, 242, 154, 7, 6, 1, 237, 162, 7, 6, 1, 242, 107, 2, 92, 7, 6, 1, 
-    237, 18, 2, 96, 7, 3, 1, 237, 18, 2, 96, 7, 3, 1, 235, 202, 2, 135, 7, 3, 
-    1, 235, 158, 2, 92, 7, 6, 1, 215, 189, 7, 6, 1, 233, 34, 2, 42, 96, 7, 3, 
-    1, 233, 34, 2, 171, 45, 235, 106, 7, 6, 1, 142, 2, 233, 193, 221, 179, 7, 
-    6, 1, 142, 2, 242, 189, 7, 3, 1, 142, 2, 242, 189, 7, 6, 1, 230, 158, 7, 
-    3, 1, 230, 158, 7, 6, 1, 230, 60, 2, 96, 7, 3, 1, 230, 60, 2, 96, 7, 1, 
-    217, 202, 7, 6, 1, 145, 103, 7, 3, 1, 145, 103, 7, 6, 1, 246, 133, 7, 1, 
-    210, 246, 134, 234, 247, 7, 3, 1, 222, 202, 2, 230, 29, 96, 7, 6, 1, 222, 
-    202, 2, 96, 7, 3, 1, 222, 202, 2, 96, 7, 6, 1, 222, 202, 2, 227, 164, 96, 
-    7, 6, 1, 105, 2, 242, 189, 7, 3, 1, 105, 2, 242, 189, 7, 6, 1, 220, 57, 
-    7, 6, 1, 220, 11, 2, 96, 7, 6, 1, 218, 91, 2, 96, 7, 3, 1, 218, 91, 2, 
-    96, 7, 6, 1, 217, 158, 2, 92, 7, 3, 1, 217, 158, 2, 92, 7, 6, 1, 246, 76, 
-    7, 6, 1, 246, 77, 227, 159, 7, 3, 1, 246, 77, 227, 159, 7, 3, 1, 246, 77, 
-    2, 222, 135, 7, 1, 124, 2, 92, 7, 6, 1, 145, 174, 7, 3, 1, 145, 174, 7, 
-    1, 237, 170, 244, 73, 223, 137, 2, 92, 7, 1, 218, 154, 7, 1, 249, 55, 
-    250, 204, 7, 1, 235, 139, 250, 204, 7, 1, 254, 141, 250, 204, 7, 1, 227, 
-    164, 250, 204, 7, 6, 1, 247, 76, 2, 251, 130, 7, 6, 1, 250, 47, 2, 3, 1, 
-    217, 158, 2, 251, 130, 7, 3, 1, 247, 76, 2, 251, 130, 7, 6, 1, 235, 21, 
-    7, 6, 1, 235, 202, 2, 3, 1, 237, 126, 7, 3, 1, 235, 21, 7, 6, 1, 232, 19, 
-    7, 6, 1, 233, 34, 2, 3, 1, 237, 126, 7, 3, 1, 232, 19, 7, 6, 1, 112, 2, 
-    251, 130, 7, 3, 1, 112, 2, 251, 130, 7, 6, 1, 242, 107, 2, 251, 130, 7, 
-    3, 1, 242, 107, 2, 251, 130, 7, 6, 1, 142, 2, 251, 130, 7, 3, 1, 142, 2, 
-    251, 130, 7, 6, 1, 105, 2, 251, 130, 7, 3, 1, 105, 2, 251, 130, 7, 6, 1, 
-    105, 2, 249, 14, 25, 234, 115, 7, 3, 1, 105, 2, 249, 14, 25, 234, 115, 7, 
-    6, 1, 105, 2, 249, 14, 25, 168, 7, 3, 1, 105, 2, 249, 14, 25, 168, 7, 6, 
-    1, 105, 2, 249, 14, 25, 251, 130, 7, 3, 1, 105, 2, 249, 14, 25, 251, 130, 
-    7, 6, 1, 105, 2, 249, 14, 25, 244, 36, 7, 3, 1, 105, 2, 249, 14, 25, 244, 
-    36, 7, 3, 1, 215, 73, 7, 6, 1, 112, 2, 249, 14, 25, 234, 115, 7, 3, 1, 
-    112, 2, 249, 14, 25, 234, 115, 7, 6, 1, 112, 2, 61, 71, 25, 234, 115, 7, 
-    3, 1, 112, 2, 61, 71, 25, 234, 115, 7, 6, 1, 254, 235, 2, 234, 115, 7, 3, 
-    1, 254, 235, 2, 234, 115, 7, 6, 1, 245, 68, 2, 92, 7, 3, 1, 245, 68, 2, 
-    92, 7, 6, 1, 245, 68, 2, 251, 130, 7, 3, 1, 245, 68, 2, 251, 130, 7, 6, 
-    1, 237, 18, 2, 251, 130, 7, 3, 1, 237, 18, 2, 251, 130, 7, 6, 1, 142, 2, 
-    230, 162, 7, 3, 1, 142, 2, 230, 162, 7, 6, 1, 142, 2, 230, 163, 25, 234, 
-    115, 7, 3, 1, 142, 2, 230, 163, 25, 234, 115, 7, 6, 1, 246, 77, 2, 251, 
-    130, 7, 3, 1, 246, 77, 2, 251, 130, 7, 3, 1, 237, 127, 2, 251, 130, 7, 6, 
-    1, 247, 75, 7, 6, 1, 250, 47, 2, 3, 1, 217, 157, 7, 3, 1, 247, 75, 7, 6, 
-    1, 245, 68, 2, 168, 7, 3, 1, 245, 68, 2, 168, 7, 6, 1, 242, 152, 7, 6, 1, 
-    218, 154, 7, 6, 1, 233, 34, 2, 244, 36, 7, 3, 1, 233, 34, 2, 244, 36, 7, 
-    6, 1, 112, 2, 227, 94, 71, 25, 168, 7, 3, 1, 112, 2, 227, 94, 71, 25, 
-    168, 7, 6, 1, 254, 235, 2, 168, 7, 3, 1, 254, 235, 2, 168, 7, 6, 1, 142, 
-    2, 214, 25, 168, 7, 3, 1, 142, 2, 214, 25, 168, 7, 6, 1, 112, 2, 51, 244, 
-    36, 7, 3, 1, 112, 2, 51, 244, 36, 7, 6, 1, 112, 2, 237, 170, 252, 8, 7, 
-    3, 1, 112, 2, 237, 170, 252, 8, 7, 6, 1, 178, 2, 51, 244, 36, 7, 3, 1, 
-    178, 2, 51, 244, 36, 7, 6, 1, 178, 2, 237, 170, 252, 8, 7, 3, 1, 178, 2, 
-    237, 170, 252, 8, 7, 6, 1, 242, 107, 2, 51, 244, 36, 7, 3, 1, 242, 107, 
-    2, 51, 244, 36, 7, 6, 1, 242, 107, 2, 237, 170, 252, 8, 7, 3, 1, 242, 
-    107, 2, 237, 170, 252, 8, 7, 6, 1, 142, 2, 51, 244, 36, 7, 3, 1, 142, 2, 
-    51, 244, 36, 7, 6, 1, 142, 2, 237, 170, 252, 8, 7, 3, 1, 142, 2, 237, 
-    170, 252, 8, 7, 6, 1, 228, 39, 2, 51, 244, 36, 7, 3, 1, 228, 39, 2, 51, 
-    244, 36, 7, 6, 1, 228, 39, 2, 237, 170, 252, 8, 7, 3, 1, 228, 39, 2, 237, 
-    170, 252, 8, 7, 6, 1, 105, 2, 51, 244, 36, 7, 3, 1, 105, 2, 51, 244, 36, 
-    7, 6, 1, 105, 2, 237, 170, 252, 8, 7, 3, 1, 105, 2, 237, 170, 252, 8, 7, 
-    6, 1, 226, 235, 2, 250, 169, 56, 7, 3, 1, 226, 235, 2, 250, 169, 56, 7, 
-    6, 1, 222, 202, 2, 250, 169, 56, 7, 3, 1, 222, 202, 2, 250, 169, 56, 7, 
-    6, 1, 217, 218, 7, 3, 1, 217, 218, 7, 6, 1, 243, 226, 2, 251, 130, 7, 3, 
-    1, 243, 226, 2, 251, 130, 7, 6, 1, 233, 34, 2, 171, 45, 235, 106, 7, 3, 
-    1, 250, 47, 2, 250, 80, 7, 6, 1, 230, 86, 7, 3, 1, 230, 86, 7, 6, 1, 217, 
-    158, 2, 96, 7, 3, 1, 217, 158, 2, 96, 7, 6, 1, 112, 2, 61, 50, 7, 3, 1, 
-    112, 2, 61, 50, 7, 6, 1, 178, 2, 251, 92, 7, 3, 1, 178, 2, 251, 92, 7, 6, 
-    1, 142, 2, 249, 14, 25, 234, 115, 7, 3, 1, 142, 2, 249, 14, 25, 234, 115, 
-    7, 6, 1, 142, 2, 221, 180, 25, 234, 115, 7, 3, 1, 142, 2, 221, 180, 25, 
-    234, 115, 7, 6, 1, 142, 2, 61, 50, 7, 3, 1, 142, 2, 61, 50, 7, 6, 1, 142, 
-    2, 61, 71, 25, 234, 115, 7, 3, 1, 142, 2, 61, 71, 25, 234, 115, 7, 6, 1, 
-    218, 91, 2, 234, 115, 7, 3, 1, 218, 91, 2, 234, 115, 7, 3, 1, 235, 202, 
-    2, 250, 80, 7, 3, 1, 233, 34, 2, 250, 80, 7, 3, 1, 222, 202, 2, 250, 80, 
-    7, 3, 1, 248, 144, 237, 126, 7, 3, 1, 249, 135, 248, 233, 7, 3, 1, 228, 
-    99, 248, 233, 7, 6, 1, 112, 2, 92, 7, 6, 1, 251, 203, 2, 92, 7, 3, 1, 
-    251, 203, 2, 92, 7, 6, 1, 235, 202, 2, 135, 7, 6, 1, 222, 202, 2, 249, 
-    11, 92, 7, 3, 1, 226, 235, 2, 223, 33, 222, 135, 7, 3, 1, 217, 158, 2, 
-    223, 33, 222, 135, 7, 6, 1, 244, 73, 223, 136, 7, 3, 1, 244, 73, 223, 
-    136, 7, 6, 1, 49, 2, 92, 7, 6, 1, 105, 135, 7, 6, 1, 215, 216, 216, 7, 6, 
-    1, 178, 2, 92, 7, 3, 1, 178, 2, 92, 7, 6, 1, 237, 127, 2, 92, 7, 3, 1, 
-    237, 127, 2, 92, 7, 6, 1, 3, 228, 164, 2, 242, 247, 222, 135, 7, 3, 1, 
-    228, 164, 2, 242, 247, 222, 135, 7, 6, 1, 228, 39, 2, 92, 7, 3, 1, 228, 
-    39, 2, 92, 7, 6, 1, 218, 91, 2, 92, 7, 3, 1, 218, 91, 2, 92, 7, 3, 1, 
-    215, 60, 7, 3, 1, 254, 146, 7, 3, 1, 215, 254, 146, 7, 3, 1, 49, 2, 96, 
-    7, 3, 1, 230, 119, 74, 7, 3, 1, 251, 203, 2, 250, 80, 7, 3, 1, 250, 47, 
-    2, 222, 135, 7, 3, 1, 250, 47, 2, 96, 7, 3, 1, 210, 73, 7, 3, 1, 226, 
-    104, 7, 3, 1, 226, 105, 2, 96, 7, 3, 1, 230, 119, 73, 7, 3, 1, 210, 230, 
-    119, 73, 7, 3, 1, 210, 230, 119, 178, 2, 96, 7, 3, 1, 250, 197, 210, 230, 
-    119, 73, 7, 3, 1, 248, 144, 237, 127, 2, 92, 7, 3, 1, 245, 68, 2, 96, 7, 
-    3, 1, 102, 245, 67, 7, 1, 3, 6, 245, 67, 7, 3, 1, 244, 231, 7, 3, 1, 227, 
-    237, 242, 189, 7, 3, 1, 215, 243, 225, 7, 3, 1, 243, 226, 2, 96, 7, 3, 1, 
-    243, 137, 2, 96, 7, 3, 1, 242, 107, 2, 92, 7, 3, 1, 237, 162, 7, 1, 3, 6, 
-    72, 7, 3, 1, 235, 202, 2, 233, 193, 221, 179, 7, 3, 1, 235, 202, 2, 252, 
-    116, 7, 3, 1, 235, 202, 2, 227, 164, 96, 7, 3, 1, 235, 81, 7, 3, 1, 215, 
-    189, 7, 3, 1, 215, 234, 187, 2, 171, 235, 106, 7, 3, 1, 234, 187, 2, 96, 
-    7, 3, 1, 233, 34, 2, 42, 96, 7, 3, 1, 233, 34, 2, 227, 164, 96, 7, 1, 3, 
-    6, 207, 7, 3, 1, 252, 196, 74, 7, 1, 3, 6, 230, 167, 7, 3, 1, 250, 197, 
-    230, 143, 7, 3, 1, 229, 129, 7, 3, 1, 215, 152, 7, 3, 1, 215, 228, 39, 2, 
-    171, 235, 106, 7, 3, 1, 215, 228, 39, 2, 96, 7, 3, 1, 228, 39, 2, 171, 
-    235, 106, 7, 3, 1, 228, 39, 2, 222, 135, 7, 3, 1, 228, 39, 2, 245, 173, 
-    7, 3, 1, 210, 228, 39, 2, 245, 173, 7, 1, 3, 6, 152, 7, 1, 3, 6, 237, 
-    170, 152, 7, 3, 1, 226, 235, 2, 96, 7, 3, 1, 246, 133, 7, 3, 1, 248, 144, 
-    237, 127, 2, 214, 25, 96, 7, 3, 1, 223, 224, 210, 246, 133, 7, 3, 1, 246, 
-    134, 2, 250, 80, 7, 3, 1, 215, 222, 201, 7, 3, 1, 222, 202, 2, 227, 164, 
-    96, 7, 3, 1, 105, 135, 7, 3, 1, 220, 57, 7, 3, 1, 220, 11, 2, 96, 7, 3, 
-    1, 215, 216, 216, 7, 3, 1, 215, 219, 40, 7, 3, 1, 215, 218, 90, 7, 1, 3, 
-    6, 218, 90, 7, 3, 1, 217, 158, 2, 227, 164, 96, 7, 3, 1, 217, 158, 2, 
-    250, 80, 7, 3, 1, 246, 76, 7, 3, 1, 246, 77, 2, 250, 80, 7, 1, 244, 73, 
-    223, 136, 7, 1, 229, 133, 219, 70, 245, 100, 7, 1, 237, 170, 244, 73, 
-    223, 136, 7, 1, 223, 124, 251, 202, 7, 1, 252, 74, 250, 204, 7, 1, 3, 6, 
-    253, 204, 7, 3, 1, 250, 197, 230, 119, 73, 7, 1, 3, 6, 245, 68, 2, 96, 7, 
-    1, 3, 6, 243, 225, 7, 3, 1, 237, 127, 2, 250, 97, 7, 3, 1, 215, 237, 17, 
-    7, 1, 3, 6, 153, 7, 3, 1, 228, 164, 2, 96, 7, 1, 244, 73, 223, 137, 2, 
-    92, 7, 1, 210, 244, 73, 223, 137, 2, 92, 7, 3, 1, 247, 76, 248, 233, 7, 
-    3, 1, 249, 37, 248, 233, 7, 3, 1, 247, 76, 248, 234, 2, 250, 80, 7, 3, 1, 
-    221, 57, 248, 233, 7, 3, 1, 222, 55, 248, 233, 7, 3, 1, 222, 94, 248, 
-    234, 2, 250, 80, 7, 3, 1, 245, 213, 248, 233, 7, 3, 1, 234, 233, 248, 
-    233, 7, 3, 1, 234, 188, 248, 233, 7, 1, 252, 74, 229, 168, 7, 1, 252, 81, 
-    229, 168, 7, 3, 1, 215, 243, 226, 2, 245, 173, 7, 3, 1, 215, 243, 226, 2, 
-    245, 174, 25, 222, 135, 58, 1, 3, 243, 225, 58, 1, 3, 243, 226, 2, 96, 
-    58, 1, 3, 237, 126, 58, 1, 3, 152, 58, 1, 3, 215, 152, 58, 1, 3, 215, 
-    228, 39, 2, 96, 58, 1, 3, 6, 237, 170, 152, 58, 1, 3, 219, 40, 58, 1, 3, 
-    218, 90, 58, 1, 228, 235, 58, 1, 51, 228, 235, 58, 1, 215, 250, 168, 58, 
-    1, 254, 79, 58, 1, 210, 250, 168, 58, 1, 45, 144, 227, 93, 58, 1, 42, 
-    144, 227, 93, 58, 1, 244, 73, 223, 136, 58, 1, 210, 244, 73, 223, 136, 
-    58, 1, 42, 254, 20, 58, 1, 45, 254, 20, 58, 1, 108, 254, 20, 58, 1, 113, 
-    254, 20, 58, 1, 250, 217, 255, 0, 251, 130, 58, 1, 69, 235, 43, 58, 1, 
-    234, 115, 58, 1, 254, 248, 255, 0, 58, 1, 244, 37, 255, 0, 58, 1, 109, 
-    69, 235, 43, 58, 1, 109, 234, 115, 58, 1, 109, 244, 37, 255, 0, 58, 1, 
-    109, 254, 248, 255, 0, 58, 1, 221, 87, 250, 175, 58, 1, 144, 221, 87, 
-    250, 175, 58, 1, 251, 83, 45, 144, 227, 93, 58, 1, 251, 83, 42, 144, 227, 
-    93, 58, 1, 108, 222, 143, 58, 1, 113, 222, 143, 58, 1, 88, 55, 58, 1, 
-    233, 155, 55, 252, 8, 61, 50, 227, 94, 50, 230, 162, 3, 221, 179, 51, 
-    254, 248, 255, 0, 58, 1, 227, 148, 96, 58, 1, 250, 101, 255, 0, 58, 1, 3, 
-    244, 231, 58, 1, 3, 153, 58, 1, 3, 198, 58, 1, 3, 218, 151, 58, 1, 3, 
-    210, 244, 73, 223, 136, 58, 1, 246, 85, 145, 135, 58, 1, 116, 145, 135, 
-    58, 1, 233, 194, 145, 135, 58, 1, 109, 145, 135, 58, 1, 246, 84, 145, 
-    135, 58, 1, 217, 241, 249, 52, 145, 78, 58, 1, 218, 46, 249, 52, 145, 78, 
-    58, 1, 219, 68, 58, 1, 220, 84, 58, 1, 51, 254, 79, 58, 1, 109, 113, 254, 
-    20, 58, 1, 109, 108, 254, 20, 58, 1, 109, 42, 254, 20, 58, 1, 109, 45, 
-    254, 20, 58, 1, 109, 227, 93, 58, 1, 233, 193, 244, 37, 255, 0, 58, 1, 
-    233, 193, 51, 244, 37, 255, 0, 58, 1, 233, 193, 51, 254, 248, 255, 0, 58, 
-    1, 109, 221, 179, 58, 1, 227, 241, 250, 175, 58, 1, 252, 131, 116, 221, 
-    132, 58, 1, 246, 190, 116, 221, 132, 58, 1, 252, 131, 109, 221, 132, 58, 
-    1, 246, 190, 109, 221, 132, 58, 1, 224, 237, 58, 1, 230, 119, 224, 237, 
-    58, 1, 109, 42, 65, 36, 244, 37, 255, 0, 36, 254, 248, 255, 0, 36, 250, 
-    217, 255, 0, 36, 221, 179, 36, 234, 115, 36, 230, 73, 36, 252, 8, 36, 61, 
-    50, 36, 249, 13, 36, 242, 247, 50, 36, 227, 94, 50, 36, 51, 254, 248, 
-    255, 0, 36, 251, 130, 36, 69, 235, 44, 50, 36, 51, 69, 235, 44, 50, 36, 
-    51, 244, 37, 255, 0, 36, 251, 146, 36, 237, 170, 252, 8, 36, 215, 250, 
-    169, 50, 36, 250, 169, 50, 36, 210, 250, 169, 50, 36, 250, 169, 71, 227, 
-    109, 36, 244, 37, 255, 1, 56, 36, 254, 248, 255, 1, 56, 36, 42, 222, 144, 
-    56, 36, 45, 222, 144, 56, 36, 42, 254, 120, 50, 36, 242, 189, 36, 42, 
-    144, 227, 94, 56, 36, 108, 222, 144, 56, 36, 113, 222, 144, 56, 36, 88, 
-    5, 56, 36, 233, 155, 5, 56, 36, 230, 27, 242, 247, 56, 36, 227, 164, 242, 
-    247, 56, 36, 61, 56, 36, 249, 14, 56, 36, 227, 94, 56, 36, 250, 169, 56, 
-    36, 251, 92, 36, 230, 162, 36, 69, 235, 44, 56, 36, 252, 4, 56, 36, 237, 
-    170, 51, 254, 50, 56, 36, 251, 131, 56, 36, 250, 217, 255, 1, 56, 36, 
-    252, 9, 56, 36, 237, 170, 252, 9, 56, 36, 221, 180, 56, 36, 234, 116, 56, 
-    36, 109, 235, 43, 36, 51, 109, 235, 43, 36, 221, 180, 230, 74, 36, 224, 
-    192, 214, 230, 74, 36, 171, 214, 230, 74, 36, 224, 192, 224, 18, 230, 74, 
-    36, 171, 224, 18, 230, 74, 36, 45, 144, 227, 94, 56, 36, 237, 170, 252, 
-    4, 56, 36, 40, 56, 36, 226, 93, 56, 36, 218, 152, 50, 36, 69, 221, 179, 
-    36, 51, 230, 73, 36, 244, 37, 145, 78, 36, 254, 248, 145, 78, 36, 23, 
-    229, 163, 36, 23, 236, 33, 36, 23, 249, 8, 221, 123, 36, 23, 217, 207, 
-    36, 252, 4, 50, 36, 246, 154, 5, 56, 36, 51, 69, 235, 44, 56, 36, 42, 
-    254, 120, 56, 36, 212, 221, 180, 50, 36, 242, 251, 50, 36, 254, 151, 114, 
-    199, 50, 36, 42, 45, 76, 56, 36, 220, 53, 76, 56, 36, 244, 41, 237, 54, 
-    36, 45, 254, 21, 50, 36, 42, 144, 227, 94, 50, 36, 245, 210, 36, 218, 
-    152, 56, 36, 42, 254, 21, 56, 36, 45, 254, 21, 56, 36, 45, 254, 21, 25, 
-    108, 254, 21, 56, 36, 45, 144, 227, 94, 50, 36, 61, 71, 227, 109, 36, 
-    253, 252, 56, 36, 51, 227, 94, 56, 36, 217, 33, 50, 36, 51, 252, 9, 56, 
-    36, 51, 252, 8, 36, 51, 234, 115, 36, 51, 234, 116, 56, 36, 51, 221, 179, 
-    36, 51, 237, 170, 252, 8, 36, 51, 90, 76, 56, 36, 7, 3, 1, 60, 36, 7, 3, 
-    1, 73, 36, 7, 3, 1, 72, 36, 7, 3, 1, 74, 36, 7, 3, 1, 68, 36, 7, 3, 1, 
-    251, 202, 36, 7, 3, 1, 250, 46, 36, 7, 3, 1, 243, 225, 36, 7, 3, 1, 189, 
-    36, 7, 3, 1, 152, 36, 7, 3, 1, 222, 201, 36, 7, 3, 1, 216, 216, 36, 7, 3, 
-    1, 218, 151, 23, 6, 1, 243, 127, 23, 3, 1, 243, 127, 23, 6, 1, 254, 49, 
-    226, 142, 23, 3, 1, 254, 49, 226, 142, 23, 231, 107, 55, 23, 234, 237, 
-    231, 107, 55, 23, 6, 1, 230, 15, 248, 240, 23, 3, 1, 230, 15, 248, 240, 
-    23, 217, 207, 23, 3, 210, 234, 218, 224, 128, 100, 23, 3, 247, 143, 234, 
-    218, 224, 128, 100, 23, 3, 210, 247, 143, 234, 218, 224, 128, 100, 23, 
-    228, 82, 78, 23, 221, 123, 23, 249, 8, 221, 123, 23, 6, 1, 254, 147, 2, 
-    221, 123, 23, 254, 110, 222, 73, 23, 6, 1, 246, 157, 2, 221, 123, 23, 6, 
-    1, 246, 122, 2, 221, 123, 23, 6, 1, 237, 163, 2, 221, 123, 23, 6, 1, 230, 
-    142, 2, 221, 123, 23, 6, 1, 220, 58, 2, 221, 123, 23, 6, 1, 230, 144, 2, 
-    221, 123, 23, 3, 1, 237, 163, 2, 249, 8, 25, 221, 123, 23, 6, 1, 254, 
-    146, 23, 6, 1, 252, 102, 23, 6, 1, 244, 231, 23, 6, 1, 249, 62, 23, 6, 1, 
-    246, 156, 23, 6, 1, 217, 83, 23, 6, 1, 246, 121, 23, 6, 1, 222, 6, 23, 6, 
-    1, 237, 162, 23, 6, 1, 236, 221, 23, 6, 1, 235, 156, 23, 6, 1, 233, 99, 
-    23, 6, 1, 231, 144, 23, 6, 1, 218, 130, 23, 6, 1, 230, 141, 23, 6, 1, 
-    229, 108, 23, 6, 1, 227, 149, 23, 6, 1, 224, 127, 23, 6, 1, 222, 105, 23, 
-    6, 1, 220, 57, 23, 6, 1, 229, 129, 23, 6, 1, 251, 31, 23, 6, 1, 228, 212, 
-    23, 6, 1, 230, 143, 23, 6, 1, 237, 163, 2, 249, 7, 23, 6, 1, 220, 58, 2, 
-    249, 7, 23, 3, 1, 254, 147, 2, 221, 123, 23, 3, 1, 246, 157, 2, 221, 123, 
-    23, 3, 1, 246, 122, 2, 221, 123, 23, 3, 1, 237, 163, 2, 221, 123, 23, 3, 
-    1, 220, 58, 2, 249, 8, 25, 221, 123, 23, 3, 1, 254, 146, 23, 3, 1, 252, 
-    102, 23, 3, 1, 244, 231, 23, 3, 1, 249, 62, 23, 3, 1, 246, 156, 23, 3, 1, 
-    217, 83, 23, 3, 1, 246, 121, 23, 3, 1, 222, 6, 23, 3, 1, 237, 162, 23, 3, 
-    1, 236, 221, 23, 3, 1, 235, 156, 23, 3, 1, 233, 99, 23, 3, 1, 231, 144, 
-    23, 3, 1, 218, 130, 23, 3, 1, 230, 141, 23, 3, 1, 229, 108, 23, 3, 1, 
-    227, 149, 23, 3, 1, 39, 224, 127, 23, 3, 1, 224, 127, 23, 3, 1, 222, 105, 
-    23, 3, 1, 220, 57, 23, 3, 1, 229, 129, 23, 3, 1, 251, 31, 23, 3, 1, 228, 
-    212, 23, 3, 1, 230, 143, 23, 3, 1, 237, 163, 2, 249, 7, 23, 3, 1, 220, 
-    58, 2, 249, 7, 23, 3, 1, 230, 142, 2, 221, 123, 23, 3, 1, 220, 58, 2, 
-    221, 123, 23, 3, 1, 230, 144, 2, 221, 123, 23, 6, 236, 244, 100, 23, 252, 
-    103, 100, 23, 222, 7, 100, 23, 220, 58, 2, 242, 247, 100, 23, 220, 58, 2, 
-    254, 248, 25, 242, 247, 100, 23, 220, 58, 2, 249, 14, 25, 242, 247, 100, 
-    23, 229, 130, 100, 23, 229, 109, 100, 23, 236, 244, 100, 23, 1, 254, 49, 
-    236, 37, 23, 3, 1, 254, 49, 236, 37, 23, 1, 223, 144, 23, 3, 1, 223, 144, 
-    23, 1, 248, 240, 23, 3, 1, 248, 240, 23, 1, 236, 37, 23, 3, 1, 236, 37, 
-    23, 1, 226, 142, 23, 3, 1, 226, 142, 75, 6, 1, 224, 238, 75, 3, 1, 224, 
-    238, 75, 6, 1, 245, 219, 75, 3, 1, 245, 219, 75, 6, 1, 236, 135, 75, 3, 
-    1, 236, 135, 75, 6, 1, 242, 242, 75, 3, 1, 242, 242, 75, 6, 1, 244, 226, 
-    75, 3, 1, 244, 226, 75, 6, 1, 224, 211, 75, 3, 1, 224, 211, 75, 6, 1, 
-    249, 75, 75, 3, 1, 249, 75, 23, 236, 222, 100, 23, 227, 150, 100, 23, 
-    234, 218, 224, 128, 100, 23, 1, 217, 212, 23, 6, 222, 7, 100, 23, 234, 
-    218, 246, 157, 100, 23, 210, 234, 218, 246, 157, 100, 23, 6, 1, 224, 200, 
-    23, 3, 1, 224, 200, 23, 6, 234, 218, 224, 128, 100, 23, 6, 1, 226, 140, 
-    23, 3, 1, 226, 140, 23, 227, 150, 2, 214, 100, 23, 6, 210, 234, 218, 224, 
-    128, 100, 23, 6, 247, 143, 234, 218, 224, 128, 100, 23, 6, 210, 247, 143, 
-    234, 218, 224, 128, 100, 31, 6, 1, 238, 27, 2, 244, 36, 31, 6, 1, 237, 
-    166, 31, 6, 1, 248, 182, 31, 6, 1, 244, 78, 31, 6, 1, 220, 99, 238, 26, 
-    31, 6, 1, 247, 73, 31, 6, 1, 251, 211, 72, 31, 6, 1, 217, 250, 31, 6, 1, 
-    237, 114, 31, 6, 1, 235, 20, 31, 6, 1, 232, 15, 31, 6, 1, 221, 46, 31, 6, 
-    1, 236, 76, 31, 6, 1, 242, 107, 2, 244, 36, 31, 6, 1, 224, 192, 68, 31, 
-    6, 1, 247, 69, 31, 6, 1, 60, 31, 6, 1, 252, 144, 31, 6, 1, 219, 165, 31, 
-    6, 1, 244, 116, 31, 6, 1, 249, 92, 31, 6, 1, 238, 26, 31, 6, 1, 217, 72, 
-    31, 6, 1, 217, 92, 31, 6, 1, 72, 31, 6, 1, 224, 192, 72, 31, 6, 1, 175, 
-    31, 6, 1, 246, 217, 31, 6, 1, 246, 205, 31, 6, 1, 246, 197, 31, 6, 1, 74, 
-    31, 6, 1, 229, 198, 31, 6, 1, 246, 148, 31, 6, 1, 246, 138, 31, 6, 1, 
-    222, 87, 31, 6, 1, 68, 31, 6, 1, 246, 244, 31, 6, 1, 155, 31, 6, 1, 221, 
-    50, 31, 6, 1, 251, 46, 31, 6, 1, 225, 25, 31, 6, 1, 224, 248, 31, 6, 1, 
-    243, 181, 55, 31, 6, 1, 218, 7, 31, 6, 1, 224, 21, 55, 31, 6, 1, 73, 31, 
-    6, 1, 217, 200, 31, 6, 1, 184, 31, 3, 1, 60, 31, 3, 1, 252, 144, 31, 3, 
-    1, 219, 165, 31, 3, 1, 244, 116, 31, 3, 1, 249, 92, 31, 3, 1, 238, 26, 
-    31, 3, 1, 217, 72, 31, 3, 1, 217, 92, 31, 3, 1, 72, 31, 3, 1, 224, 192, 
-    72, 31, 3, 1, 175, 31, 3, 1, 246, 217, 31, 3, 1, 246, 205, 31, 3, 1, 246, 
-    197, 31, 3, 1, 74, 31, 3, 1, 229, 198, 31, 3, 1, 246, 148, 31, 3, 1, 246, 
-    138, 31, 3, 1, 222, 87, 31, 3, 1, 68, 31, 3, 1, 246, 244, 31, 3, 1, 155, 
-    31, 3, 1, 221, 50, 31, 3, 1, 251, 46, 31, 3, 1, 225, 25, 31, 3, 1, 224, 
-    248, 31, 3, 1, 243, 181, 55, 31, 3, 1, 218, 7, 31, 3, 1, 224, 21, 55, 31, 
-    3, 1, 73, 31, 3, 1, 217, 200, 31, 3, 1, 184, 31, 3, 1, 238, 27, 2, 244, 
-    36, 31, 3, 1, 237, 166, 31, 3, 1, 248, 182, 31, 3, 1, 244, 78, 31, 3, 1, 
-    220, 99, 238, 26, 31, 3, 1, 247, 73, 31, 3, 1, 251, 211, 72, 31, 3, 1, 
-    217, 250, 31, 3, 1, 237, 114, 31, 3, 1, 235, 20, 31, 3, 1, 232, 15, 31, 
-    3, 1, 221, 46, 31, 3, 1, 236, 76, 31, 3, 1, 242, 107, 2, 244, 36, 31, 3, 
-    1, 224, 192, 68, 31, 3, 1, 247, 69, 31, 6, 1, 230, 143, 31, 3, 1, 230, 
-    143, 31, 6, 1, 218, 36, 31, 3, 1, 218, 36, 31, 6, 1, 237, 160, 73, 31, 3, 
-    1, 237, 160, 73, 31, 6, 1, 235, 25, 217, 178, 31, 3, 1, 235, 25, 217, 
-    178, 31, 6, 1, 237, 160, 235, 25, 217, 178, 31, 3, 1, 237, 160, 235, 25, 
-    217, 178, 31, 6, 1, 252, 76, 217, 178, 31, 3, 1, 252, 76, 217, 178, 31, 
-    6, 1, 237, 160, 252, 76, 217, 178, 31, 3, 1, 237, 160, 252, 76, 217, 178, 
-    31, 6, 1, 236, 11, 31, 3, 1, 236, 11, 31, 6, 1, 228, 212, 31, 3, 1, 228, 
-    212, 31, 6, 1, 245, 171, 31, 3, 1, 245, 171, 31, 6, 1, 237, 128, 31, 3, 
-    1, 237, 128, 31, 6, 1, 237, 129, 2, 51, 244, 37, 255, 0, 31, 3, 1, 237, 
-    129, 2, 51, 244, 37, 255, 0, 31, 6, 1, 220, 102, 31, 3, 1, 220, 102, 31, 
-    6, 1, 227, 57, 230, 143, 31, 3, 1, 227, 57, 230, 143, 31, 6, 1, 230, 144, 
-    2, 221, 160, 31, 3, 1, 230, 144, 2, 221, 160, 31, 6, 1, 230, 92, 31, 3, 
-    1, 230, 92, 31, 6, 1, 236, 37, 31, 3, 1, 236, 37, 31, 221, 230, 55, 36, 
-    31, 221, 160, 36, 31, 230, 28, 36, 31, 193, 229, 39, 36, 31, 209, 229, 
-    39, 36, 31, 229, 25, 36, 31, 242, 162, 221, 230, 55, 36, 31, 233, 162, 
-    55, 31, 6, 1, 224, 192, 242, 107, 2, 222, 135, 31, 3, 1, 224, 192, 242, 
-    107, 2, 222, 135, 31, 6, 1, 225, 63, 55, 31, 3, 1, 225, 63, 55, 31, 6, 1, 
-    246, 149, 2, 221, 202, 31, 3, 1, 246, 149, 2, 221, 202, 31, 6, 1, 244, 
-    117, 2, 220, 56, 31, 3, 1, 244, 117, 2, 220, 56, 31, 6, 1, 244, 117, 2, 
-    92, 31, 3, 1, 244, 117, 2, 92, 31, 6, 1, 244, 117, 2, 233, 193, 96, 31, 
-    3, 1, 244, 117, 2, 233, 193, 96, 31, 6, 1, 217, 73, 2, 249, 48, 31, 3, 1, 
-    217, 73, 2, 249, 48, 31, 6, 1, 217, 93, 2, 249, 48, 31, 3, 1, 217, 93, 2, 
-    249, 48, 31, 6, 1, 206, 2, 249, 48, 31, 3, 1, 206, 2, 249, 48, 31, 6, 1, 
-    206, 2, 69, 92, 31, 3, 1, 206, 2, 69, 92, 31, 6, 1, 206, 2, 92, 31, 3, 1, 
-    206, 2, 92, 31, 6, 1, 252, 186, 175, 31, 3, 1, 252, 186, 175, 31, 6, 1, 
-    246, 198, 2, 249, 48, 31, 3, 1, 246, 198, 2, 249, 48, 31, 6, 24, 246, 
-    198, 244, 116, 31, 3, 24, 246, 198, 244, 116, 31, 6, 1, 229, 199, 2, 233, 
-    193, 96, 31, 3, 1, 229, 199, 2, 233, 193, 96, 31, 6, 1, 255, 6, 155, 31, 
-    3, 1, 255, 6, 155, 31, 6, 1, 246, 139, 2, 249, 48, 31, 3, 1, 246, 139, 2, 
-    249, 48, 31, 6, 1, 222, 88, 2, 249, 48, 31, 3, 1, 222, 88, 2, 249, 48, 
-    31, 6, 1, 223, 130, 68, 31, 3, 1, 223, 130, 68, 31, 6, 1, 223, 130, 105, 
-    2, 92, 31, 3, 1, 223, 130, 105, 2, 92, 31, 6, 1, 243, 214, 2, 249, 48, 
-    31, 3, 1, 243, 214, 2, 249, 48, 31, 6, 24, 222, 88, 221, 50, 31, 3, 24, 
-    222, 88, 221, 50, 31, 6, 1, 251, 47, 2, 249, 48, 31, 3, 1, 251, 47, 2, 
-    249, 48, 31, 6, 1, 251, 47, 2, 69, 92, 31, 3, 1, 251, 47, 2, 69, 92, 31, 
-    6, 1, 224, 222, 31, 3, 1, 224, 222, 31, 6, 1, 255, 6, 251, 46, 31, 3, 1, 
-    255, 6, 251, 46, 31, 6, 1, 255, 6, 251, 47, 2, 249, 48, 31, 3, 1, 255, 6, 
-    251, 47, 2, 249, 48, 31, 1, 230, 22, 31, 6, 1, 217, 73, 2, 252, 8, 31, 3, 
-    1, 217, 73, 2, 252, 8, 31, 6, 1, 206, 2, 96, 31, 3, 1, 206, 2, 96, 31, 6, 
-    1, 246, 218, 2, 222, 135, 31, 3, 1, 246, 218, 2, 222, 135, 31, 6, 1, 246, 
-    198, 2, 96, 31, 3, 1, 246, 198, 2, 96, 31, 6, 1, 246, 198, 2, 222, 135, 
-    31, 3, 1, 246, 198, 2, 222, 135, 31, 6, 1, 236, 144, 251, 46, 31, 3, 1, 
-    236, 144, 251, 46, 31, 6, 1, 246, 206, 2, 222, 135, 31, 3, 1, 246, 206, 
-    2, 222, 135, 31, 3, 1, 230, 22, 31, 6, 1, 112, 2, 252, 8, 31, 3, 1, 112, 
-    2, 252, 8, 31, 6, 1, 112, 2, 249, 13, 31, 3, 1, 112, 2, 249, 13, 31, 6, 
-    24, 112, 238, 26, 31, 3, 24, 112, 238, 26, 31, 6, 1, 238, 27, 2, 252, 8, 
-    31, 3, 1, 238, 27, 2, 252, 8, 31, 6, 1, 226, 104, 31, 3, 1, 226, 104, 31, 
-    6, 1, 226, 105, 2, 249, 13, 31, 3, 1, 226, 105, 2, 249, 13, 31, 6, 1, 
-    217, 73, 2, 249, 13, 31, 3, 1, 217, 73, 2, 249, 13, 31, 6, 1, 217, 93, 2, 
-    249, 13, 31, 3, 1, 217, 93, 2, 249, 13, 31, 6, 1, 255, 6, 247, 73, 31, 3, 
-    1, 255, 6, 247, 73, 31, 6, 1, 242, 107, 2, 234, 115, 31, 3, 1, 242, 107, 
-    2, 234, 115, 31, 6, 1, 242, 107, 2, 249, 13, 31, 3, 1, 242, 107, 2, 249, 
-    13, 31, 6, 1, 142, 2, 249, 13, 31, 3, 1, 142, 2, 249, 13, 31, 6, 1, 252, 
-    196, 74, 31, 3, 1, 252, 196, 74, 31, 6, 1, 252, 196, 142, 2, 249, 13, 31, 
-    3, 1, 252, 196, 142, 2, 249, 13, 31, 6, 1, 178, 2, 249, 13, 31, 3, 1, 
-    178, 2, 249, 13, 31, 6, 1, 105, 2, 234, 115, 31, 3, 1, 105, 2, 234, 115, 
-    31, 6, 1, 105, 2, 249, 13, 31, 3, 1, 105, 2, 249, 13, 31, 6, 1, 105, 2, 
-    51, 168, 31, 3, 1, 105, 2, 51, 168, 31, 6, 1, 251, 47, 2, 249, 13, 31, 3, 
-    1, 251, 47, 2, 249, 13, 31, 6, 1, 244, 117, 2, 249, 48, 31, 3, 1, 244, 
-    117, 2, 249, 48, 31, 6, 1, 218, 8, 2, 249, 13, 31, 3, 1, 218, 8, 2, 249, 
-    13, 31, 6, 1, 244, 117, 2, 214, 25, 96, 31, 3, 1, 244, 117, 2, 214, 25, 
-    96, 31, 6, 1, 243, 214, 2, 96, 31, 3, 1, 243, 214, 2, 96, 31, 6, 1, 243, 
-    214, 2, 92, 31, 3, 1, 243, 214, 2, 92, 31, 6, 1, 236, 45, 249, 92, 31, 3, 
-    1, 236, 45, 249, 92, 31, 6, 1, 236, 45, 248, 182, 31, 3, 1, 236, 45, 248, 
-    182, 31, 6, 1, 236, 45, 217, 25, 31, 3, 1, 236, 45, 217, 25, 31, 6, 1, 
-    236, 45, 247, 67, 31, 3, 1, 236, 45, 247, 67, 31, 6, 1, 236, 45, 235, 20, 
-    31, 3, 1, 236, 45, 235, 20, 31, 6, 1, 236, 45, 232, 15, 31, 3, 1, 236, 
-    45, 232, 15, 31, 6, 1, 236, 45, 224, 67, 31, 3, 1, 236, 45, 224, 67, 31, 
-    6, 1, 236, 45, 221, 156, 31, 3, 1, 236, 45, 221, 156, 31, 6, 1, 210, 217, 
-    92, 31, 3, 1, 210, 217, 92, 31, 6, 1, 246, 218, 2, 96, 31, 3, 1, 246, 
-    218, 2, 96, 31, 6, 1, 235, 79, 31, 3, 1, 235, 79, 31, 6, 1, 227, 151, 31, 
-    3, 1, 227, 151, 31, 6, 1, 218, 65, 31, 3, 1, 218, 65, 31, 6, 1, 228, 155, 
-    31, 3, 1, 228, 155, 31, 6, 1, 218, 227, 31, 3, 1, 218, 227, 31, 6, 1, 
-    254, 165, 175, 31, 3, 1, 254, 165, 175, 31, 6, 1, 246, 218, 2, 233, 193, 
-    96, 31, 3, 1, 246, 218, 2, 233, 193, 96, 31, 6, 1, 246, 198, 2, 233, 193, 
-    96, 31, 3, 1, 246, 198, 2, 233, 193, 96, 31, 6, 1, 229, 199, 2, 249, 48, 
-    31, 3, 1, 229, 199, 2, 249, 48, 132, 6, 1, 253, 209, 132, 6, 1, 252, 114, 
-    132, 6, 1, 244, 93, 132, 6, 1, 249, 207, 132, 6, 1, 246, 254, 132, 6, 1, 
-    217, 114, 132, 6, 1, 246, 239, 132, 6, 1, 246, 123, 132, 6, 1, 101, 132, 
-    6, 1, 217, 72, 132, 6, 1, 237, 200, 132, 6, 1, 235, 23, 132, 6, 1, 218, 
-    133, 132, 6, 1, 251, 169, 132, 6, 1, 236, 168, 132, 6, 1, 243, 4, 132, 6, 
-    1, 237, 123, 132, 6, 1, 244, 124, 132, 6, 1, 251, 42, 132, 6, 1, 233, 
-    251, 132, 6, 1, 217, 250, 132, 6, 1, 231, 174, 132, 6, 1, 225, 25, 132, 
-    6, 1, 219, 72, 132, 6, 1, 251, 69, 132, 6, 1, 229, 187, 132, 6, 1, 237, 
-    100, 132, 6, 1, 203, 132, 6, 1, 226, 77, 132, 6, 1, 219, 96, 132, 6, 1, 
-    221, 158, 132, 6, 1, 227, 196, 132, 6, 1, 250, 182, 132, 6, 1, 217, 236, 
-    132, 6, 1, 229, 61, 132, 6, 1, 236, 178, 132, 6, 1, 230, 161, 132, 6, 1, 
-    245, 221, 132, 58, 1, 42, 144, 227, 93, 132, 254, 79, 132, 246, 201, 78, 
-    132, 246, 95, 78, 132, 250, 168, 132, 228, 82, 78, 132, 255, 7, 78, 132, 
-    3, 1, 253, 209, 132, 3, 1, 252, 114, 132, 3, 1, 244, 93, 132, 3, 1, 249, 
-    207, 132, 3, 1, 246, 254, 132, 3, 1, 217, 114, 132, 3, 1, 246, 239, 132, 
-    3, 1, 246, 123, 132, 3, 1, 101, 132, 3, 1, 217, 72, 132, 3, 1, 237, 200, 
-    132, 3, 1, 235, 23, 132, 3, 1, 218, 133, 132, 3, 1, 251, 169, 132, 3, 1, 
-    236, 168, 132, 3, 1, 243, 4, 132, 3, 1, 237, 123, 132, 3, 1, 244, 124, 
-    132, 3, 1, 251, 42, 132, 3, 1, 233, 251, 132, 3, 1, 217, 250, 132, 3, 1, 
-    231, 174, 132, 3, 1, 225, 25, 132, 3, 1, 219, 72, 132, 3, 1, 251, 69, 
-    132, 3, 1, 229, 187, 132, 3, 1, 237, 100, 132, 3, 1, 203, 132, 3, 1, 226, 
-    77, 132, 3, 1, 219, 96, 132, 3, 1, 221, 158, 132, 3, 1, 227, 196, 132, 3, 
-    1, 250, 182, 132, 3, 1, 217, 236, 132, 3, 1, 229, 61, 132, 3, 1, 236, 
-    178, 132, 3, 1, 230, 161, 132, 3, 1, 245, 221, 132, 3, 24, 246, 255, 217, 
-    236, 132, 245, 90, 223, 136, 132, 242, 121, 87, 255, 1, 246, 116, 87, 
-    255, 1, 226, 78, 87, 255, 1, 225, 12, 87, 255, 1, 217, 102, 228, 138, 87, 
-    255, 1, 217, 102, 244, 246, 87, 255, 1, 221, 168, 87, 255, 1, 227, 158, 
-    87, 255, 1, 217, 101, 87, 255, 1, 229, 219, 87, 255, 1, 218, 0, 87, 255, 
-    1, 222, 41, 87, 255, 1, 244, 171, 87, 255, 1, 244, 172, 233, 70, 87, 255, 
-    1, 244, 169, 87, 255, 1, 228, 139, 229, 242, 87, 255, 1, 222, 70, 244, 
-    185, 87, 255, 1, 229, 202, 87, 255, 1, 253, 239, 243, 206, 87, 255, 1, 
-    233, 79, 87, 255, 1, 234, 104, 87, 255, 1, 233, 245, 87, 255, 1, 233, 
-    246, 236, 179, 87, 255, 1, 249, 153, 87, 255, 1, 228, 150, 87, 255, 1, 
-    222, 70, 228, 134, 87, 255, 1, 218, 10, 252, 115, 217, 217, 87, 255, 1, 
-    230, 149, 87, 255, 1, 237, 241, 87, 255, 1, 249, 76, 87, 255, 1, 217, 31, 
-    87, 164, 234, 54, 250, 221, 87, 229, 32, 224, 224, 87, 229, 32, 243, 172, 
-    226, 78, 87, 229, 32, 243, 172, 229, 214, 87, 229, 32, 243, 172, 228, 
-    143, 87, 229, 32, 243, 94, 87, 229, 32, 221, 48, 87, 229, 32, 226, 78, 
-    87, 229, 32, 229, 214, 87, 229, 32, 228, 143, 87, 229, 32, 242, 254, 87, 
-    229, 32, 242, 255, 243, 174, 35, 219, 169, 87, 229, 32, 228, 85, 87, 229, 
-    32, 249, 194, 156, 234, 77, 87, 229, 32, 233, 237, 87, 228, 197, 234, 76, 
-    87, 229, 32, 227, 248, 87, 228, 197, 229, 220, 87, 229, 32, 224, 210, 
-    248, 145, 87, 229, 32, 224, 113, 248, 145, 87, 228, 197, 224, 22, 229, 
-    216, 87, 164, 220, 60, 248, 145, 87, 164, 234, 237, 248, 145, 87, 228, 
-    197, 231, 104, 243, 205, 87, 229, 32, 228, 144, 228, 138, 87, 1, 254, 
-    168, 87, 1, 252, 104, 87, 1, 244, 91, 87, 1, 249, 177, 87, 1, 243, 162, 
-    87, 1, 219, 169, 87, 1, 217, 95, 87, 1, 243, 128, 87, 1, 222, 50, 87, 1, 
-    217, 220, 87, 1, 39, 236, 246, 87, 1, 236, 246, 87, 1, 235, 152, 87, 1, 
-    39, 234, 1, 87, 1, 234, 1, 87, 1, 39, 231, 103, 87, 1, 231, 103, 87, 1, 
-    226, 145, 87, 1, 253, 207, 87, 1, 39, 229, 198, 87, 1, 229, 198, 87, 1, 
-    39, 221, 51, 87, 1, 221, 51, 87, 1, 228, 107, 87, 1, 227, 174, 87, 1, 
-    224, 209, 87, 1, 222, 102, 87, 24, 217, 248, 51, 219, 169, 87, 24, 217, 
-    248, 219, 170, 217, 220, 87, 24, 217, 248, 51, 217, 220, 87, 228, 197, 
-    244, 171, 87, 228, 197, 244, 169, 12, 54, 55, 12, 5, 226, 139, 12, 245, 
-    132, 234, 63, 12, 5, 226, 167, 254, 63, 250, 89, 227, 64, 254, 63, 245, 
-    110, 227, 64, 12, 227, 222, 254, 63, 229, 170, 233, 164, 55, 254, 63, 
-    229, 170, 222, 66, 221, 232, 55, 254, 214, 55, 12, 250, 168, 12, 249, 
-    141, 225, 54, 12, 229, 34, 219, 154, 55, 12, 5, 233, 147, 12, 5, 226, 
-    152, 254, 170, 218, 245, 12, 5, 254, 170, 254, 0, 12, 5, 227, 247, 254, 
-    169, 12, 5, 227, 251, 254, 155, 254, 116, 12, 5, 222, 128, 12, 3, 116, 
-    222, 137, 12, 3, 116, 24, 99, 2, 235, 161, 2, 218, 21, 12, 3, 116, 217, 
-    106, 12, 3, 245, 238, 12, 3, 249, 172, 12, 3, 236, 206, 12, 225, 67, 12, 
-    221, 78, 61, 228, 197, 78, 12, 228, 82, 78, 12, 1, 243, 192, 12, 1, 99, 
-    2, 234, 111, 50, 12, 1, 99, 2, 181, 50, 12, 1, 218, 234, 2, 181, 50, 12, 
-    1, 99, 2, 181, 56, 12, 1, 70, 2, 181, 50, 12, 1, 254, 168, 12, 1, 252, 
-    128, 12, 1, 222, 78, 234, 72, 12, 1, 222, 77, 12, 1, 222, 19, 12, 1, 237, 
-    112, 12, 1, 243, 202, 12, 1, 236, 146, 12, 1, 249, 183, 12, 1, 222, 29, 
-    12, 1, 227, 196, 12, 1, 217, 106, 12, 1, 226, 82, 12, 1, 224, 242, 12, 1, 
-    226, 170, 12, 1, 249, 202, 12, 1, 222, 137, 12, 1, 217, 109, 12, 1, 254, 
-    191, 12, 1, 244, 122, 12, 1, 236, 177, 2, 124, 188, 50, 12, 1, 236, 177, 
-    2, 148, 188, 56, 12, 1, 245, 241, 70, 2, 237, 170, 216, 216, 12, 1, 245, 
-    241, 70, 2, 124, 188, 50, 12, 1, 245, 241, 70, 2, 148, 188, 50, 12, 222, 
-    107, 12, 1, 245, 221, 12, 1, 228, 148, 12, 1, 236, 246, 12, 1, 235, 160, 
-    12, 1, 234, 14, 12, 1, 231, 193, 12, 1, 243, 146, 12, 1, 218, 233, 12, 1, 
-    99, 234, 92, 12, 1, 218, 21, 12, 245, 236, 12, 249, 170, 12, 236, 204, 
-    12, 245, 238, 12, 249, 172, 12, 236, 206, 12, 225, 16, 12, 223, 75, 12, 
-    234, 109, 50, 12, 181, 50, 12, 181, 56, 12, 223, 94, 254, 168, 12, 237, 
-    170, 249, 172, 12, 164, 231, 194, 244, 107, 12, 216, 255, 12, 29, 5, 3, 
-    220, 11, 50, 12, 29, 5, 237, 170, 3, 220, 11, 50, 12, 29, 5, 61, 56, 12, 
-    210, 249, 172, 12, 245, 239, 2, 124, 248, 143, 254, 63, 20, 217, 84, 254, 
-    63, 20, 107, 254, 63, 20, 103, 254, 63, 20, 160, 254, 63, 20, 154, 254, 
-    63, 20, 174, 254, 63, 20, 182, 254, 63, 20, 191, 254, 63, 20, 185, 254, 
-    63, 20, 190, 12, 229, 169, 55, 12, 249, 86, 225, 54, 12, 221, 230, 225, 
-    54, 12, 245, 170, 229, 30, 223, 156, 12, 1, 248, 144, 252, 128, 12, 1, 
-    248, 144, 228, 148, 12, 1, 223, 59, 254, 168, 12, 1, 99, 218, 246, 12, 1, 
-    99, 2, 218, 235, 181, 50, 12, 1, 99, 2, 218, 235, 181, 56, 12, 1, 116, 
-    243, 192, 12, 1, 116, 181, 254, 168, 12, 1, 116, 181, 218, 233, 12, 1, 
-    105, 2, 181, 50, 12, 1, 116, 181, 218, 21, 12, 1, 221, 23, 12, 1, 221, 
-    21, 12, 1, 252, 135, 12, 1, 222, 78, 2, 227, 93, 12, 1, 222, 78, 2, 148, 
-    188, 71, 247, 129, 12, 1, 229, 187, 12, 1, 222, 75, 12, 1, 252, 126, 12, 
-    1, 111, 2, 181, 50, 12, 1, 111, 2, 124, 188, 69, 50, 12, 1, 231, 70, 12, 
-    1, 247, 79, 12, 1, 111, 2, 148, 188, 50, 12, 1, 222, 91, 12, 1, 222, 89, 
-    12, 1, 249, 127, 12, 1, 249, 184, 2, 227, 93, 12, 1, 249, 184, 2, 61, 56, 
-    12, 1, 249, 184, 2, 61, 252, 118, 25, 3, 222, 137, 12, 1, 249, 189, 12, 
-    1, 249, 129, 12, 1, 247, 103, 12, 1, 249, 184, 2, 148, 188, 71, 247, 129, 
-    12, 1, 249, 184, 2, 245, 116, 188, 50, 12, 1, 227, 48, 12, 1, 227, 197, 
-    2, 3, 216, 216, 12, 1, 227, 197, 2, 227, 93, 12, 1, 227, 197, 2, 61, 56, 
-    12, 1, 227, 197, 2, 3, 220, 11, 56, 12, 1, 227, 197, 2, 61, 252, 118, 25, 
-    61, 50, 12, 1, 227, 197, 2, 124, 188, 50, 12, 1, 237, 109, 12, 1, 227, 
-    197, 2, 245, 116, 188, 50, 12, 1, 226, 83, 2, 61, 252, 118, 25, 61, 50, 
-    12, 1, 226, 83, 2, 148, 188, 56, 12, 1, 226, 83, 2, 148, 188, 252, 118, 
-    25, 148, 188, 50, 12, 1, 226, 171, 2, 124, 188, 56, 12, 1, 226, 171, 2, 
-    148, 188, 50, 12, 1, 222, 138, 2, 148, 188, 50, 12, 1, 254, 192, 2, 148, 
-    188, 50, 12, 1, 248, 144, 245, 221, 12, 1, 245, 222, 2, 61, 233, 104, 56, 
-    12, 1, 245, 222, 2, 61, 56, 12, 1, 219, 158, 12, 1, 245, 222, 2, 148, 
-    188, 56, 12, 1, 229, 185, 12, 1, 228, 149, 2, 61, 50, 12, 1, 228, 149, 2, 
-    148, 188, 50, 12, 1, 236, 176, 12, 1, 223, 33, 236, 246, 12, 1, 236, 247, 
-    2, 227, 93, 12, 1, 236, 247, 2, 61, 50, 12, 1, 232, 117, 12, 1, 236, 247, 
-    2, 148, 188, 56, 12, 1, 244, 243, 12, 1, 244, 244, 2, 227, 93, 12, 1, 
-    232, 82, 12, 1, 244, 244, 2, 124, 188, 56, 12, 1, 244, 9, 12, 1, 244, 
-    244, 2, 148, 188, 50, 12, 1, 235, 161, 2, 3, 216, 216, 12, 1, 235, 161, 
-    2, 61, 50, 12, 1, 235, 161, 2, 148, 188, 50, 12, 1, 235, 161, 2, 148, 
-    188, 56, 12, 1, 231, 194, 2, 61, 56, 12, 1, 231, 194, 244, 107, 12, 1, 
-    227, 78, 12, 1, 231, 194, 2, 227, 93, 12, 1, 231, 194, 2, 148, 188, 50, 
-    12, 1, 243, 147, 248, 163, 12, 1, 222, 92, 2, 61, 50, 12, 1, 243, 147, 2, 
-    70, 50, 12, 1, 243, 147, 244, 65, 12, 1, 243, 147, 244, 66, 2, 181, 50, 
-    12, 1, 222, 78, 234, 73, 244, 65, 12, 1, 218, 234, 2, 227, 93, 12, 1, 
-    236, 98, 230, 167, 12, 1, 230, 167, 12, 1, 68, 12, 1, 217, 200, 12, 1, 
-    236, 98, 217, 200, 12, 1, 218, 234, 2, 124, 188, 50, 12, 1, 219, 165, 12, 
-    1, 245, 241, 218, 21, 12, 1, 70, 2, 222, 135, 12, 1, 70, 2, 3, 216, 216, 
-    12, 1, 218, 234, 2, 61, 50, 12, 1, 73, 12, 1, 70, 2, 148, 188, 56, 12, 1, 
-    70, 252, 194, 12, 1, 70, 252, 195, 2, 181, 50, 12, 245, 90, 223, 136, 12, 
-    1, 254, 234, 12, 3, 116, 24, 226, 171, 2, 235, 161, 2, 99, 234, 92, 12, 
-    3, 116, 24, 228, 149, 2, 235, 161, 2, 99, 234, 92, 12, 3, 116, 62, 66, 
-    17, 12, 3, 116, 235, 161, 254, 168, 12, 3, 116, 237, 112, 12, 3, 116, 
-    148, 248, 143, 12, 3, 116, 226, 82, 12, 246, 190, 117, 253, 211, 12, 223, 
-    154, 117, 227, 20, 246, 218, 243, 91, 12, 3, 116, 227, 55, 217, 84, 12, 
-    3, 116, 220, 59, 227, 207, 217, 84, 12, 3, 116, 248, 144, 243, 160, 117, 
-    236, 146, 12, 3, 116, 62, 47, 17, 12, 3, 109, 226, 82, 12, 3, 116, 234, 
-    110, 12, 3, 218, 233, 12, 3, 218, 21, 12, 3, 116, 218, 21, 12, 3, 116, 
-    231, 193, 12, 229, 57, 117, 226, 159, 12, 246, 199, 251, 85, 109, 223, 
-    136, 12, 246, 199, 251, 85, 116, 223, 136, 12, 227, 55, 116, 223, 137, 2, 
-    245, 186, 251, 84, 12, 3, 109, 234, 14, 12, 1, 249, 184, 2, 237, 170, 
-    216, 216, 12, 1, 227, 197, 2, 237, 170, 216, 216, 246, 87, 254, 63, 20, 
-    217, 84, 246, 87, 254, 63, 20, 107, 246, 87, 254, 63, 20, 103, 246, 87, 
-    254, 63, 20, 160, 246, 87, 254, 63, 20, 154, 246, 87, 254, 63, 20, 174, 
-    246, 87, 254, 63, 20, 182, 246, 87, 254, 63, 20, 191, 246, 87, 254, 63, 
-    20, 185, 246, 87, 254, 63, 20, 190, 12, 1, 224, 243, 2, 61, 56, 12, 1, 
-    249, 203, 2, 61, 56, 12, 1, 244, 123, 2, 61, 56, 12, 5, 224, 112, 254, 
-    134, 12, 5, 224, 112, 229, 13, 233, 251, 12, 1, 243, 147, 2, 237, 170, 
-    216, 216, 166, 246, 190, 117, 229, 240, 166, 223, 55, 245, 90, 223, 136, 
-    166, 223, 96, 245, 90, 223, 136, 166, 223, 55, 250, 175, 166, 223, 96, 
-    250, 175, 166, 186, 250, 175, 166, 250, 176, 224, 64, 235, 115, 166, 250, 
-    176, 224, 64, 227, 109, 166, 223, 55, 250, 176, 224, 64, 235, 115, 166, 
-    223, 96, 250, 176, 224, 64, 227, 109, 166, 250, 134, 166, 243, 179, 230, 
-    179, 166, 243, 179, 233, 236, 166, 243, 179, 253, 253, 166, 255, 7, 78, 
-    166, 1, 254, 171, 166, 1, 223, 59, 254, 171, 166, 1, 252, 101, 166, 1, 
-    244, 235, 166, 1, 244, 236, 244, 216, 166, 1, 249, 180, 166, 1, 248, 144, 
-    249, 181, 227, 89, 166, 1, 243, 162, 166, 1, 218, 233, 166, 1, 217, 106, 
-    166, 1, 243, 126, 166, 1, 222, 46, 166, 1, 222, 47, 244, 216, 166, 1, 
-    217, 188, 166, 1, 217, 189, 243, 162, 166, 1, 236, 224, 166, 1, 235, 159, 
-    166, 1, 233, 161, 166, 1, 231, 103, 166, 1, 225, 60, 166, 1, 39, 225, 60, 
-    166, 1, 73, 166, 1, 229, 198, 166, 1, 210, 229, 198, 166, 1, 226, 168, 
-    166, 1, 228, 142, 166, 1, 227, 89, 166, 1, 224, 209, 166, 1, 222, 100, 
-    166, 1, 229, 159, 252, 90, 166, 1, 229, 159, 244, 120, 166, 1, 229, 159, 
-    249, 32, 166, 228, 203, 50, 166, 228, 203, 56, 166, 228, 203, 247, 142, 
-    166, 217, 15, 50, 166, 217, 15, 56, 166, 217, 15, 247, 142, 166, 227, 
-    219, 50, 166, 227, 219, 56, 166, 247, 143, 217, 22, 242, 241, 166, 247, 
-    143, 217, 22, 254, 117, 166, 243, 165, 50, 166, 243, 165, 56, 166, 243, 
-    164, 247, 142, 166, 246, 136, 50, 166, 246, 136, 56, 166, 226, 250, 166, 
-    245, 215, 248, 145, 166, 228, 63, 166, 227, 17, 166, 124, 69, 188, 50, 
-    166, 124, 69, 188, 56, 166, 148, 188, 50, 166, 148, 188, 56, 166, 230, 
-    177, 235, 44, 50, 166, 230, 177, 235, 44, 56, 166, 233, 58, 166, 252, 
-    193, 166, 1, 224, 19, 217, 78, 166, 1, 224, 19, 236, 139, 166, 1, 224, 
-    19, 245, 231, 12, 1, 252, 129, 2, 148, 188, 242, 191, 56, 12, 1, 252, 
-    129, 2, 61, 252, 118, 25, 148, 188, 50, 12, 1, 252, 129, 2, 148, 188, 
-    229, 28, 220, 53, 56, 12, 1, 252, 129, 2, 148, 188, 229, 28, 220, 53, 
-    252, 118, 25, 124, 188, 50, 12, 1, 252, 129, 2, 124, 188, 252, 118, 25, 
-    61, 50, 12, 1, 252, 129, 2, 237, 170, 3, 220, 11, 56, 12, 1, 252, 129, 2, 
-    3, 216, 216, 12, 1, 111, 2, 124, 188, 50, 12, 1, 111, 2, 148, 188, 229, 
-    28, 220, 53, 56, 12, 1, 249, 184, 2, 124, 188, 219, 102, 252, 118, 25, 3, 
-    222, 137, 12, 1, 249, 184, 2, 237, 170, 3, 220, 11, 56, 12, 1, 227, 197, 
-    2, 92, 12, 1, 226, 83, 2, 245, 116, 188, 50, 12, 1, 254, 192, 2, 124, 
-    188, 50, 12, 1, 254, 192, 2, 148, 188, 229, 28, 247, 130, 50, 12, 1, 254, 
-    192, 2, 124, 188, 219, 102, 50, 12, 1, 245, 222, 2, 124, 188, 56, 12, 1, 
-    245, 222, 2, 148, 188, 229, 28, 220, 53, 56, 12, 1, 236, 177, 2, 61, 50, 
-    12, 1, 236, 177, 2, 148, 188, 50, 12, 1, 236, 177, 2, 148, 188, 229, 28, 
-    220, 53, 56, 12, 1, 62, 2, 61, 50, 12, 1, 62, 2, 61, 56, 12, 1, 231, 194, 
-    2, 124, 188, 56, 12, 1, 231, 194, 2, 3, 222, 137, 12, 1, 231, 194, 2, 3, 
-    216, 216, 12, 1, 235, 161, 2, 135, 12, 1, 227, 197, 2, 124, 188, 219, 
-    102, 50, 12, 1, 227, 197, 2, 181, 50, 12, 1, 226, 83, 2, 124, 188, 219, 
-    102, 50, 12, 1, 111, 2, 3, 12, 1, 222, 138, 56, 12, 1, 111, 2, 3, 12, 1, 
-    222, 138, 25, 124, 248, 143, 12, 1, 226, 83, 2, 3, 12, 1, 222, 138, 25, 
-    124, 248, 143, 12, 1, 227, 197, 2, 3, 12, 1, 222, 138, 25, 124, 248, 143, 
-    12, 1, 111, 2, 3, 12, 1, 222, 138, 50, 12, 1, 99, 2, 246, 87, 254, 63, 
-    20, 124, 50, 12, 1, 99, 2, 246, 87, 254, 63, 20, 148, 50, 12, 1, 245, 
-    241, 70, 2, 246, 87, 254, 63, 20, 124, 50, 12, 1, 245, 241, 70, 2, 246, 
-    87, 254, 63, 20, 148, 50, 12, 1, 245, 241, 70, 2, 246, 87, 254, 63, 20, 
-    245, 116, 56, 12, 1, 218, 234, 2, 246, 87, 254, 63, 20, 124, 50, 12, 1, 
-    218, 234, 2, 246, 87, 254, 63, 20, 148, 50, 12, 1, 70, 252, 195, 2, 246, 
-    87, 254, 63, 20, 124, 50, 12, 1, 70, 252, 195, 2, 246, 87, 254, 63, 20, 
-    148, 50, 12, 1, 111, 2, 246, 87, 254, 63, 20, 245, 116, 56, 12, 1, 226, 
-    83, 2, 246, 87, 254, 63, 20, 245, 116, 50, 12, 1, 226, 83, 2, 237, 170, 
-    216, 216, 12, 1, 236, 247, 2, 124, 188, 50, 222, 32, 1, 243, 211, 222, 
-    32, 1, 224, 251, 222, 32, 1, 231, 192, 222, 32, 1, 228, 0, 222, 32, 1, 
-    252, 236, 222, 32, 1, 235, 76, 222, 32, 1, 237, 3, 222, 32, 1, 254, 160, 
-    222, 32, 1, 219, 187, 222, 32, 1, 234, 13, 222, 32, 1, 246, 6, 222, 32, 
-    1, 249, 35, 222, 32, 1, 222, 34, 222, 32, 1, 235, 185, 222, 32, 1, 244, 
-    252, 222, 32, 1, 244, 71, 222, 32, 1, 226, 81, 222, 32, 1, 249, 139, 222, 
-    32, 1, 217, 98, 222, 32, 1, 222, 101, 222, 32, 1, 218, 76, 222, 32, 1, 
-    229, 209, 222, 32, 1, 237, 116, 222, 32, 1, 251, 49, 222, 32, 1, 221, 28, 
-    222, 32, 1, 243, 120, 222, 32, 1, 236, 148, 222, 32, 1, 222, 33, 222, 32, 
-    1, 217, 113, 222, 32, 1, 224, 241, 222, 32, 1, 226, 174, 222, 32, 1, 249, 
-    205, 222, 32, 1, 101, 222, 32, 1, 217, 21, 222, 32, 1, 254, 189, 222, 32, 
-    1, 244, 121, 222, 32, 1, 228, 152, 222, 32, 1, 219, 5, 222, 32, 255, 8, 
-    222, 32, 255, 23, 222, 32, 242, 68, 222, 32, 246, 249, 222, 32, 220, 118, 
-    222, 32, 230, 126, 222, 32, 247, 1, 222, 32, 246, 82, 222, 32, 230, 176, 
-    222, 32, 230, 184, 222, 32, 223, 75, 222, 32, 1, 232, 235, 231, 242, 20, 
-    217, 84, 231, 242, 20, 107, 231, 242, 20, 103, 231, 242, 20, 160, 231, 
-    242, 20, 154, 231, 242, 20, 174, 231, 242, 20, 182, 231, 242, 20, 191, 
-    231, 242, 20, 185, 231, 242, 20, 190, 231, 242, 1, 60, 231, 242, 1, 246, 
-    250, 231, 242, 1, 72, 231, 242, 1, 73, 231, 242, 1, 68, 231, 242, 1, 230, 
-    127, 231, 242, 1, 74, 231, 242, 1, 249, 195, 231, 242, 1, 207, 231, 242, 
-    1, 252, 237, 231, 242, 1, 187, 231, 242, 1, 222, 155, 231, 242, 1, 237, 
-    123, 231, 242, 1, 251, 69, 231, 242, 1, 249, 207, 231, 242, 1, 203, 231, 
-    242, 1, 227, 52, 231, 242, 1, 226, 177, 231, 242, 1, 244, 204, 231, 242, 
-    1, 246, 8, 231, 242, 1, 175, 231, 242, 1, 235, 188, 231, 242, 1, 232, 
-    238, 218, 184, 231, 242, 1, 196, 231, 242, 1, 231, 77, 231, 242, 1, 208, 
-    231, 242, 1, 155, 231, 242, 1, 219, 7, 231, 242, 1, 184, 231, 242, 1, 
-    231, 78, 218, 184, 231, 242, 1, 237, 52, 237, 123, 231, 242, 1, 237, 52, 
-    251, 69, 231, 242, 1, 237, 52, 203, 231, 242, 36, 224, 192, 116, 221, 
-    132, 231, 242, 36, 224, 192, 109, 221, 132, 231, 242, 36, 224, 192, 227, 
-    88, 221, 132, 231, 242, 36, 171, 249, 47, 221, 132, 231, 242, 36, 171, 
-    116, 221, 132, 231, 242, 36, 171, 109, 221, 132, 231, 242, 36, 171, 227, 
-    88, 221, 132, 231, 242, 36, 232, 209, 78, 231, 242, 36, 51, 61, 50, 231, 
-    242, 116, 145, 254, 79, 231, 242, 109, 145, 254, 79, 231, 242, 16, 230, 
-    128, 249, 58, 231, 242, 16, 244, 203, 231, 242, 250, 168, 231, 242, 246, 
-    95, 78, 231, 242, 235, 166, 213, 1, 254, 173, 213, 1, 252, 60, 213, 1, 
-    244, 234, 213, 1, 249, 182, 213, 1, 237, 133, 213, 1, 252, 236, 213, 1, 
-    217, 87, 213, 1, 237, 140, 213, 1, 221, 161, 213, 1, 217, 177, 213, 1, 
-    237, 4, 213, 1, 235, 183, 213, 1, 233, 161, 213, 1, 231, 103, 213, 1, 
-    224, 110, 213, 1, 237, 223, 213, 1, 245, 203, 213, 1, 221, 53, 213, 1, 
-    228, 79, 213, 1, 227, 89, 213, 1, 225, 9, 213, 1, 222, 151, 213, 164, 
-    237, 223, 213, 164, 237, 222, 213, 164, 230, 172, 213, 164, 249, 193, 
-    213, 58, 1, 246, 160, 217, 177, 213, 164, 246, 160, 217, 177, 213, 29, 5, 
-    171, 73, 213, 29, 5, 73, 213, 29, 5, 230, 72, 255, 58, 213, 29, 5, 171, 
-    255, 58, 213, 29, 5, 255, 58, 213, 29, 5, 230, 72, 60, 213, 29, 5, 171, 
-    60, 213, 29, 5, 60, 213, 58, 1, 224, 192, 60, 213, 29, 5, 224, 192, 60, 
-    213, 29, 5, 171, 68, 213, 29, 5, 68, 213, 58, 1, 72, 213, 29, 5, 171, 72, 
-    213, 29, 5, 72, 213, 29, 5, 74, 213, 29, 5, 223, 75, 213, 164, 232, 128, 
-    213, 228, 197, 232, 128, 213, 228, 197, 254, 211, 213, 228, 197, 254, 
-    122, 213, 228, 197, 252, 181, 213, 228, 197, 253, 240, 213, 228, 197, 
-    224, 201, 213, 255, 7, 78, 213, 228, 197, 234, 4, 228, 113, 213, 228, 
-    197, 217, 29, 213, 228, 197, 228, 113, 213, 228, 197, 217, 112, 213, 228, 
-    197, 220, 233, 213, 228, 197, 254, 36, 213, 228, 197, 224, 22, 234, 55, 
-    213, 228, 197, 254, 113, 80, 5, 237, 170, 251, 146, 80, 5, 251, 146, 80, 
-    5, 254, 95, 80, 5, 219, 77, 80, 1, 224, 192, 60, 80, 1, 60, 80, 1, 255, 
-    58, 80, 1, 72, 80, 1, 237, 255, 80, 1, 68, 80, 1, 220, 23, 80, 1, 167, 
-    152, 80, 1, 167, 153, 80, 1, 251, 149, 73, 80, 1, 224, 192, 73, 80, 1, 
-    73, 80, 1, 254, 196, 80, 1, 251, 149, 74, 80, 1, 224, 192, 74, 80, 1, 74, 
-    80, 1, 253, 232, 80, 1, 175, 80, 1, 236, 149, 80, 1, 245, 0, 80, 1, 244, 
-    125, 80, 1, 232, 115, 80, 1, 251, 169, 80, 1, 251, 69, 80, 1, 237, 123, 
-    80, 1, 237, 103, 80, 1, 231, 77, 80, 1, 221, 29, 80, 1, 221, 19, 80, 1, 
-    249, 132, 80, 1, 249, 116, 80, 1, 231, 217, 80, 1, 222, 155, 80, 1, 222, 
-    35, 80, 1, 249, 207, 80, 1, 249, 36, 80, 1, 208, 80, 1, 231, 208, 80, 1, 
-    187, 80, 1, 229, 141, 80, 1, 252, 237, 80, 1, 252, 94, 80, 1, 196, 80, 1, 
-    184, 80, 1, 203, 80, 1, 227, 52, 80, 1, 235, 188, 80, 1, 235, 17, 80, 1, 
-    235, 16, 80, 1, 219, 189, 80, 1, 225, 25, 80, 1, 223, 218, 80, 1, 226, 
-    177, 80, 1, 155, 80, 5, 231, 112, 80, 5, 253, 219, 80, 29, 5, 255, 58, 
-    80, 29, 5, 72, 80, 29, 5, 237, 255, 80, 29, 5, 68, 80, 29, 5, 220, 23, 
-    80, 29, 5, 167, 152, 80, 29, 5, 167, 227, 53, 80, 29, 5, 251, 149, 73, 
-    80, 29, 5, 224, 192, 73, 80, 29, 5, 73, 80, 29, 5, 254, 196, 80, 29, 5, 
-    251, 149, 74, 80, 29, 5, 224, 192, 74, 80, 29, 5, 74, 80, 29, 5, 253, 
-    232, 80, 5, 219, 82, 80, 29, 5, 228, 232, 73, 80, 230, 146, 80, 223, 125, 
-    5, 220, 112, 80, 223, 125, 5, 254, 97, 80, 244, 37, 255, 0, 80, 254, 248, 
-    255, 0, 80, 29, 5, 251, 149, 171, 73, 80, 1, 228, 155, 80, 1, 236, 133, 
-    80, 1, 244, 114, 80, 1, 217, 114, 80, 1, 249, 121, 80, 1, 227, 151, 80, 
-    1, 246, 8, 80, 1, 217, 165, 80, 1, 167, 227, 53, 80, 1, 167, 235, 18, 80, 
-    29, 5, 167, 153, 80, 29, 5, 167, 235, 18, 80, 249, 167, 80, 51, 249, 167, 
-    80, 20, 217, 84, 80, 20, 107, 80, 20, 103, 80, 20, 160, 80, 20, 154, 80, 
-    20, 174, 80, 20, 182, 80, 20, 191, 80, 20, 185, 80, 20, 190, 80, 255, 7, 
-    55, 80, 5, 116, 223, 253, 248, 145, 80, 1, 251, 149, 60, 80, 1, 217, 80, 
-    80, 1, 106, 184, 80, 1, 244, 160, 80, 1, 237, 87, 80, 1, 244, 73, 223, 
-    136, 80, 1, 249, 122, 80, 1, 252, 178, 130, 5, 251, 146, 130, 5, 254, 95, 
-    130, 5, 219, 77, 130, 1, 60, 130, 1, 255, 58, 130, 1, 72, 130, 1, 237, 
-    255, 130, 1, 68, 130, 1, 220, 23, 130, 1, 167, 152, 130, 1, 167, 153, 
-    130, 1, 73, 130, 1, 254, 196, 130, 1, 74, 130, 1, 253, 232, 130, 1, 175, 
-    130, 1, 236, 149, 130, 1, 245, 0, 130, 1, 244, 125, 130, 1, 232, 115, 
-    130, 1, 251, 169, 130, 1, 251, 69, 130, 1, 237, 123, 130, 1, 237, 103, 
-    130, 1, 231, 77, 130, 1, 221, 29, 130, 1, 221, 19, 130, 1, 249, 132, 130, 
-    1, 249, 116, 130, 1, 231, 217, 130, 1, 222, 155, 130, 1, 222, 35, 130, 1, 
-    249, 207, 130, 1, 249, 36, 130, 1, 208, 130, 1, 187, 130, 1, 229, 141, 
-    130, 1, 252, 237, 130, 1, 252, 94, 130, 1, 196, 130, 1, 184, 130, 1, 203, 
-    130, 1, 235, 188, 130, 1, 225, 25, 130, 1, 223, 218, 130, 1, 226, 177, 
-    130, 1, 155, 130, 5, 231, 112, 130, 5, 253, 219, 130, 29, 5, 255, 58, 
-    130, 29, 5, 72, 130, 29, 5, 237, 255, 130, 29, 5, 68, 130, 29, 5, 220, 
-    23, 130, 29, 5, 167, 152, 130, 29, 5, 167, 227, 53, 130, 29, 5, 73, 130, 
-    29, 5, 254, 196, 130, 29, 5, 74, 130, 29, 5, 253, 232, 130, 5, 219, 82, 
-    130, 1, 236, 141, 222, 155, 130, 253, 233, 235, 94, 78, 130, 1, 227, 52, 
-    130, 1, 227, 151, 130, 1, 217, 165, 130, 1, 167, 227, 53, 130, 1, 167, 
-    235, 18, 130, 29, 5, 167, 153, 130, 29, 5, 167, 235, 18, 130, 20, 217, 
-    84, 130, 20, 107, 130, 20, 103, 130, 20, 160, 130, 20, 154, 130, 20, 174, 
-    130, 20, 182, 130, 20, 191, 130, 20, 185, 130, 20, 190, 130, 1, 228, 3, 
-    2, 233, 193, 249, 10, 130, 1, 228, 3, 2, 234, 237, 249, 10, 130, 227, 4, 
-    78, 130, 227, 4, 55, 130, 250, 78, 231, 106, 107, 130, 250, 78, 231, 106, 
-    103, 130, 250, 78, 231, 106, 160, 130, 250, 78, 231, 106, 154, 130, 250, 
-    78, 231, 106, 131, 235, 88, 222, 28, 222, 23, 249, 56, 130, 250, 78, 249, 
-    57, 224, 77, 130, 237, 141, 130, 244, 227, 78, 163, 5, 254, 243, 252, 72, 
-    163, 5, 252, 72, 163, 5, 219, 77, 163, 1, 60, 163, 1, 255, 58, 163, 1, 
-    72, 163, 1, 237, 255, 163, 1, 68, 163, 1, 220, 23, 163, 1, 246, 250, 163, 
-    1, 254, 196, 163, 1, 230, 127, 163, 1, 253, 232, 163, 1, 175, 163, 1, 
-    236, 149, 163, 1, 245, 0, 163, 1, 244, 125, 163, 1, 232, 115, 163, 1, 
-    251, 169, 163, 1, 251, 69, 163, 1, 237, 123, 163, 1, 237, 103, 163, 1, 
-    231, 77, 163, 1, 221, 29, 163, 1, 221, 19, 163, 1, 249, 132, 163, 1, 249, 
-    116, 163, 1, 231, 217, 163, 1, 222, 155, 163, 1, 222, 35, 163, 1, 249, 
-    207, 163, 1, 249, 36, 163, 1, 208, 163, 1, 187, 163, 1, 229, 141, 163, 1, 
-    252, 237, 163, 1, 252, 94, 163, 1, 196, 163, 1, 184, 163, 1, 203, 163, 1, 
-    235, 188, 163, 1, 235, 17, 163, 1, 219, 189, 163, 1, 225, 25, 163, 1, 
-    226, 177, 163, 1, 155, 163, 5, 231, 112, 163, 29, 5, 255, 58, 163, 29, 5, 
-    72, 163, 29, 5, 237, 255, 163, 29, 5, 68, 163, 29, 5, 220, 23, 163, 29, 
-    5, 246, 250, 163, 29, 5, 254, 196, 163, 29, 5, 230, 127, 163, 29, 5, 253, 
-    232, 163, 5, 219, 82, 163, 5, 220, 114, 163, 1, 236, 133, 163, 1, 244, 
-    114, 163, 1, 217, 114, 163, 1, 227, 52, 163, 1, 246, 8, 163, 20, 217, 84, 
-    163, 20, 107, 163, 20, 103, 163, 20, 160, 163, 20, 154, 163, 20, 174, 
-    163, 20, 182, 163, 20, 191, 163, 20, 185, 163, 20, 190, 163, 221, 167, 
-    163, 254, 242, 163, 237, 155, 163, 220, 46, 163, 246, 224, 230, 132, 163, 
-    5, 218, 54, 150, 5, 251, 146, 150, 5, 254, 95, 150, 5, 219, 77, 150, 1, 
-    60, 150, 1, 255, 58, 150, 1, 72, 150, 1, 237, 255, 150, 1, 68, 150, 1, 
-    220, 23, 150, 1, 167, 152, 150, 1, 167, 153, 150, 29, 251, 149, 73, 150, 
-    1, 73, 150, 1, 254, 196, 150, 29, 251, 149, 74, 150, 1, 74, 150, 1, 253, 
-    232, 150, 1, 175, 150, 1, 236, 149, 150, 1, 245, 0, 150, 1, 244, 125, 
-    150, 1, 232, 115, 150, 1, 251, 169, 150, 1, 251, 69, 150, 1, 237, 123, 
-    150, 1, 237, 103, 150, 1, 231, 77, 150, 1, 221, 29, 150, 1, 221, 19, 150, 
-    1, 249, 132, 150, 1, 249, 116, 150, 1, 231, 217, 150, 1, 222, 155, 150, 
-    1, 222, 35, 150, 1, 249, 207, 150, 1, 249, 36, 150, 1, 208, 150, 1, 187, 
-    150, 1, 229, 141, 150, 1, 252, 237, 150, 1, 252, 94, 150, 1, 196, 150, 1, 
-    184, 150, 1, 203, 150, 1, 235, 188, 150, 1, 235, 17, 150, 1, 219, 189, 
-    150, 1, 225, 25, 150, 1, 223, 218, 150, 1, 226, 177, 150, 1, 155, 150, 5, 
-    231, 112, 150, 5, 253, 219, 150, 29, 5, 255, 58, 150, 29, 5, 72, 150, 29, 
-    5, 237, 255, 150, 29, 5, 68, 150, 29, 5, 220, 23, 150, 29, 5, 167, 152, 
-    150, 29, 5, 167, 227, 53, 150, 29, 5, 251, 149, 73, 150, 29, 5, 73, 150, 
-    29, 5, 254, 196, 150, 29, 5, 251, 149, 74, 150, 29, 5, 74, 150, 29, 5, 
-    253, 232, 150, 5, 219, 82, 150, 230, 146, 150, 1, 167, 227, 53, 150, 1, 
-    167, 235, 18, 150, 29, 5, 167, 153, 150, 29, 5, 167, 235, 18, 150, 20, 
-    217, 84, 150, 20, 107, 150, 20, 103, 150, 20, 160, 150, 20, 154, 150, 20, 
-    174, 150, 20, 182, 150, 20, 191, 150, 20, 185, 150, 20, 190, 150, 227, 4, 
-    55, 147, 5, 251, 146, 147, 5, 254, 95, 147, 5, 219, 77, 147, 1, 60, 147, 
-    1, 255, 58, 147, 1, 72, 147, 1, 237, 255, 147, 1, 68, 147, 1, 220, 23, 
-    147, 1, 167, 152, 147, 1, 167, 153, 147, 1, 73, 147, 1, 254, 196, 147, 1, 
-    74, 147, 1, 253, 232, 147, 1, 175, 147, 1, 236, 149, 147, 1, 245, 0, 147, 
-    1, 244, 125, 147, 1, 232, 115, 147, 1, 251, 169, 147, 1, 251, 69, 147, 1, 
-    237, 123, 147, 1, 237, 103, 147, 1, 231, 77, 147, 1, 221, 29, 147, 1, 
-    221, 19, 147, 1, 249, 132, 147, 1, 249, 116, 147, 1, 231, 217, 147, 1, 
-    222, 155, 147, 1, 222, 35, 147, 1, 249, 207, 147, 1, 249, 36, 147, 1, 
-    208, 147, 1, 187, 147, 1, 229, 141, 147, 1, 252, 237, 147, 1, 252, 94, 
-    147, 1, 196, 147, 1, 184, 147, 1, 203, 147, 1, 235, 188, 147, 1, 235, 17, 
-    147, 1, 219, 189, 147, 1, 225, 25, 147, 1, 223, 218, 147, 1, 226, 177, 
-    147, 1, 155, 147, 5, 231, 112, 147, 5, 253, 219, 147, 29, 5, 255, 58, 
-    147, 29, 5, 72, 147, 29, 5, 237, 255, 147, 29, 5, 68, 147, 29, 5, 220, 
-    23, 147, 29, 5, 167, 152, 147, 29, 5, 167, 227, 53, 147, 29, 5, 73, 147, 
-    29, 5, 254, 196, 147, 29, 5, 74, 147, 29, 5, 253, 232, 147, 5, 219, 82, 
-    147, 254, 197, 235, 94, 78, 147, 253, 233, 235, 94, 78, 147, 1, 227, 52, 
-    147, 1, 227, 151, 147, 1, 217, 165, 147, 1, 167, 227, 53, 147, 1, 167, 
-    235, 18, 147, 29, 5, 167, 153, 147, 29, 5, 167, 235, 18, 147, 20, 217, 
-    84, 147, 20, 107, 147, 20, 103, 147, 20, 160, 147, 20, 154, 147, 20, 174, 
-    147, 20, 182, 147, 20, 191, 147, 20, 185, 147, 20, 190, 147, 237, 141, 
-    147, 1, 219, 7, 176, 5, 254, 95, 176, 5, 219, 77, 176, 1, 60, 176, 1, 
-    255, 58, 176, 1, 72, 176, 1, 237, 255, 176, 1, 68, 176, 1, 220, 23, 176, 
-    1, 73, 176, 1, 246, 250, 176, 1, 254, 196, 176, 1, 74, 176, 1, 230, 127, 
-    176, 1, 253, 232, 176, 1, 175, 176, 1, 232, 115, 176, 1, 251, 169, 176, 
-    1, 237, 123, 176, 1, 231, 77, 176, 1, 221, 29, 176, 1, 231, 217, 176, 1, 
-    222, 155, 176, 1, 208, 176, 1, 231, 208, 176, 1, 187, 176, 1, 196, 176, 
-    1, 184, 176, 1, 203, 176, 1, 227, 52, 176, 1, 235, 188, 176, 1, 235, 17, 
-    176, 1, 235, 16, 176, 1, 219, 189, 176, 1, 225, 25, 176, 1, 223, 218, 
-    176, 1, 226, 177, 176, 1, 155, 176, 29, 5, 255, 58, 176, 29, 5, 72, 176, 
-    29, 5, 237, 255, 176, 29, 5, 68, 176, 29, 5, 220, 23, 176, 29, 5, 73, 
-    176, 29, 5, 246, 250, 176, 29, 5, 254, 196, 176, 29, 5, 74, 176, 29, 5, 
-    230, 127, 176, 29, 5, 253, 232, 176, 5, 219, 82, 176, 230, 146, 176, 253, 
-    233, 235, 94, 78, 176, 20, 217, 84, 176, 20, 107, 176, 20, 103, 176, 20, 
-    160, 176, 20, 154, 176, 20, 174, 176, 20, 182, 176, 20, 191, 176, 20, 
-    185, 176, 20, 190, 176, 54, 222, 65, 176, 54, 131, 242, 161, 176, 54, 
-    131, 221, 231, 176, 249, 137, 55, 176, 233, 121, 55, 176, 218, 23, 55, 
-    176, 249, 89, 55, 176, 250, 107, 55, 176, 254, 14, 71, 55, 176, 227, 4, 
-    55, 176, 54, 55, 129, 5, 251, 146, 129, 5, 254, 95, 129, 5, 219, 77, 129, 
-    1, 60, 129, 1, 255, 58, 129, 1, 72, 129, 1, 237, 255, 129, 1, 68, 129, 1, 
-    220, 23, 129, 1, 167, 152, 129, 1, 167, 153, 129, 1, 73, 129, 1, 246, 
-    250, 129, 1, 254, 196, 129, 1, 74, 129, 1, 230, 127, 129, 1, 253, 232, 
-    129, 1, 175, 129, 1, 236, 149, 129, 1, 245, 0, 129, 1, 244, 125, 129, 1, 
-    232, 115, 129, 1, 251, 169, 129, 1, 251, 69, 129, 1, 237, 123, 129, 1, 
-    237, 103, 129, 1, 231, 77, 129, 1, 221, 29, 129, 1, 221, 19, 129, 1, 249, 
-    132, 129, 1, 249, 116, 129, 1, 231, 217, 129, 1, 222, 155, 129, 1, 222, 
-    35, 129, 1, 249, 207, 129, 1, 249, 36, 129, 1, 208, 129, 1, 187, 129, 1, 
-    229, 141, 129, 1, 252, 237, 129, 1, 252, 94, 129, 1, 196, 129, 1, 184, 
-    129, 1, 203, 129, 1, 227, 52, 129, 1, 235, 188, 129, 1, 235, 17, 129, 1, 
-    219, 189, 129, 1, 225, 25, 129, 1, 223, 218, 129, 1, 226, 177, 129, 1, 
-    155, 129, 5, 253, 219, 129, 29, 5, 255, 58, 129, 29, 5, 72, 129, 29, 5, 
-    237, 255, 129, 29, 5, 68, 129, 29, 5, 220, 23, 129, 29, 5, 167, 152, 129, 
-    29, 5, 167, 227, 53, 129, 29, 5, 73, 129, 29, 5, 246, 250, 129, 29, 5, 
-    254, 196, 129, 29, 5, 74, 129, 29, 5, 230, 127, 129, 29, 5, 253, 232, 
-    129, 5, 219, 82, 129, 235, 94, 78, 129, 254, 197, 235, 94, 78, 129, 1, 
-    221, 55, 129, 1, 247, 74, 129, 1, 167, 227, 53, 129, 1, 167, 235, 18, 
-    129, 29, 5, 167, 153, 129, 29, 5, 167, 235, 18, 129, 20, 217, 84, 129, 
-    20, 107, 129, 20, 103, 129, 20, 160, 129, 20, 154, 129, 20, 174, 129, 20, 
-    182, 129, 20, 191, 129, 20, 185, 129, 20, 190, 129, 245, 108, 20, 217, 
-    85, 35, 230, 169, 229, 9, 117, 154, 129, 245, 108, 20, 131, 35, 230, 169, 
-    229, 9, 117, 154, 129, 245, 108, 20, 124, 35, 230, 169, 229, 9, 117, 154, 
-    129, 245, 108, 20, 148, 35, 230, 169, 229, 9, 117, 154, 129, 245, 108, 
-    20, 131, 35, 246, 104, 229, 9, 117, 154, 129, 245, 108, 20, 124, 35, 246, 
-    104, 229, 9, 117, 154, 129, 245, 108, 20, 148, 35, 246, 104, 229, 9, 117, 
-    154, 129, 5, 220, 229, 141, 5, 254, 95, 141, 5, 219, 77, 141, 1, 60, 141, 
-    1, 255, 58, 141, 1, 72, 141, 1, 237, 255, 141, 1, 68, 141, 1, 220, 23, 
-    141, 1, 167, 152, 141, 1, 167, 153, 141, 1, 73, 141, 1, 246, 250, 141, 1, 
-    254, 196, 141, 1, 74, 141, 1, 230, 127, 141, 1, 253, 232, 141, 1, 175, 
-    141, 1, 236, 149, 141, 1, 245, 0, 141, 1, 244, 125, 141, 1, 232, 115, 
-    141, 1, 251, 169, 141, 1, 251, 69, 141, 1, 237, 123, 141, 1, 237, 103, 
-    141, 1, 231, 77, 141, 1, 221, 29, 141, 1, 221, 19, 141, 1, 249, 132, 141, 
-    1, 249, 116, 141, 1, 231, 217, 141, 1, 222, 155, 141, 1, 222, 35, 141, 1, 
-    249, 207, 141, 1, 249, 36, 141, 1, 208, 141, 1, 187, 141, 1, 229, 141, 
-    141, 1, 252, 237, 141, 1, 252, 94, 141, 1, 196, 141, 1, 184, 141, 1, 203, 
-    141, 1, 227, 52, 141, 1, 235, 188, 141, 1, 235, 17, 141, 1, 219, 189, 
-    141, 1, 225, 25, 141, 1, 223, 218, 141, 1, 226, 177, 141, 1, 155, 141, 5, 
-    231, 112, 141, 5, 253, 219, 141, 29, 5, 255, 58, 141, 29, 5, 72, 141, 29, 
-    5, 237, 255, 141, 29, 5, 68, 141, 29, 5, 220, 23, 141, 29, 5, 167, 152, 
-    141, 29, 5, 167, 227, 53, 141, 29, 5, 73, 141, 29, 5, 246, 250, 141, 29, 
-    5, 254, 196, 141, 29, 5, 74, 141, 29, 5, 230, 127, 141, 29, 5, 253, 232, 
-    141, 5, 219, 82, 141, 235, 94, 78, 141, 254, 197, 235, 94, 78, 141, 1, 
-    246, 8, 141, 1, 167, 227, 53, 141, 1, 167, 235, 18, 141, 29, 5, 167, 153, 
-    141, 29, 5, 167, 235, 18, 141, 20, 217, 84, 141, 20, 107, 141, 20, 103, 
-    141, 20, 160, 141, 20, 154, 141, 20, 174, 141, 20, 182, 141, 20, 191, 
-    141, 20, 185, 141, 20, 190, 141, 5, 237, 92, 141, 5, 220, 61, 123, 5, 
-    254, 95, 123, 5, 219, 77, 123, 1, 60, 123, 1, 255, 58, 123, 1, 72, 123, 
-    1, 237, 255, 123, 1, 68, 123, 1, 220, 23, 123, 1, 167, 152, 123, 1, 167, 
-    153, 123, 1, 73, 123, 1, 246, 250, 123, 1, 254, 196, 123, 1, 74, 123, 1, 
-    230, 127, 123, 1, 253, 232, 123, 1, 175, 123, 1, 236, 149, 123, 1, 245, 
-    0, 123, 1, 244, 125, 123, 1, 232, 115, 123, 1, 251, 169, 123, 1, 251, 69, 
-    123, 1, 237, 123, 123, 1, 237, 103, 123, 1, 231, 77, 123, 1, 221, 29, 
-    123, 1, 221, 19, 123, 1, 249, 132, 123, 1, 249, 116, 123, 1, 231, 217, 
-    123, 1, 222, 155, 123, 1, 222, 35, 123, 1, 249, 207, 123, 1, 249, 36, 
-    123, 1, 208, 123, 1, 187, 123, 1, 229, 141, 123, 1, 252, 237, 123, 1, 
-    252, 94, 123, 1, 196, 123, 1, 184, 123, 1, 203, 123, 1, 227, 52, 123, 1, 
-    235, 188, 123, 1, 235, 17, 123, 1, 235, 16, 123, 1, 219, 189, 123, 1, 
-    225, 25, 123, 1, 223, 218, 123, 1, 226, 177, 123, 1, 155, 123, 5, 253, 
-    219, 123, 29, 5, 255, 58, 123, 29, 5, 72, 123, 29, 5, 237, 255, 123, 29, 
-    5, 68, 123, 29, 5, 220, 23, 123, 29, 5, 167, 152, 123, 29, 5, 167, 227, 
-    53, 123, 29, 5, 73, 123, 29, 5, 246, 250, 123, 29, 5, 254, 196, 123, 29, 
-    5, 74, 123, 29, 5, 230, 127, 123, 29, 5, 253, 232, 123, 5, 219, 82, 123, 
-    253, 233, 235, 94, 78, 123, 1, 167, 227, 53, 123, 1, 167, 235, 18, 123, 
-    29, 5, 167, 153, 123, 29, 5, 167, 235, 18, 123, 20, 217, 84, 123, 20, 
-    107, 123, 20, 103, 123, 20, 160, 123, 20, 154, 123, 20, 174, 123, 20, 
-    182, 123, 20, 191, 123, 20, 185, 123, 20, 190, 123, 54, 222, 65, 123, 54, 
-    131, 242, 161, 123, 54, 131, 221, 231, 123, 245, 108, 131, 228, 89, 123, 
-    245, 108, 131, 243, 194, 123, 245, 108, 148, 228, 87, 123, 249, 141, 78, 
-    123, 1, 251, 23, 231, 218, 123, 1, 251, 23, 207, 123, 1, 251, 23, 227, 
-    53, 123, 1, 251, 23, 153, 123, 1, 251, 23, 235, 18, 123, 1, 251, 23, 237, 
-    17, 162, 5, 254, 94, 162, 5, 219, 76, 162, 1, 253, 210, 162, 1, 255, 13, 
-    162, 1, 254, 215, 162, 1, 254, 229, 162, 1, 237, 132, 162, 1, 237, 254, 
-    162, 1, 220, 15, 162, 1, 220, 17, 162, 1, 237, 153, 162, 1, 237, 154, 
-    162, 1, 237, 240, 162, 1, 237, 242, 162, 1, 246, 83, 162, 1, 246, 246, 
-    162, 1, 254, 184, 162, 1, 230, 62, 162, 1, 230, 122, 162, 1, 253, 222, 
-    162, 1, 254, 149, 236, 189, 162, 1, 234, 105, 236, 189, 162, 1, 254, 149, 
-    244, 207, 162, 1, 234, 105, 244, 207, 162, 1, 236, 228, 232, 232, 162, 1, 
-    226, 135, 244, 207, 162, 1, 254, 149, 251, 117, 162, 1, 234, 105, 251, 
-    117, 162, 1, 254, 149, 237, 115, 162, 1, 234, 105, 237, 115, 162, 1, 222, 
-    149, 232, 232, 162, 1, 222, 149, 226, 134, 232, 233, 162, 1, 226, 135, 
-    237, 115, 162, 1, 254, 149, 221, 27, 162, 1, 234, 105, 221, 27, 162, 1, 
-    254, 149, 249, 123, 162, 1, 234, 105, 249, 123, 162, 1, 233, 56, 232, 
-    198, 162, 1, 226, 135, 249, 123, 162, 1, 254, 149, 222, 95, 162, 1, 234, 
-    105, 222, 95, 162, 1, 254, 149, 249, 136, 162, 1, 234, 105, 249, 136, 
-    162, 1, 249, 164, 232, 198, 162, 1, 226, 135, 249, 136, 162, 1, 254, 149, 
-    229, 204, 162, 1, 234, 105, 229, 204, 162, 1, 254, 149, 252, 179, 162, 1, 
-    234, 105, 252, 179, 162, 1, 234, 44, 162, 1, 254, 136, 252, 179, 162, 1, 
-    218, 29, 162, 1, 227, 221, 162, 1, 249, 164, 235, 131, 162, 1, 219, 167, 
-    162, 1, 222, 149, 226, 117, 162, 1, 233, 56, 226, 117, 162, 1, 249, 164, 
-    226, 117, 162, 1, 243, 166, 162, 1, 233, 56, 235, 131, 162, 1, 245, 233, 
-    162, 5, 254, 174, 162, 29, 5, 254, 224, 162, 29, 5, 236, 158, 254, 231, 
-    162, 29, 5, 248, 241, 254, 231, 162, 29, 5, 236, 158, 237, 150, 162, 29, 
-    5, 248, 241, 237, 150, 162, 29, 5, 236, 158, 230, 42, 162, 29, 5, 248, 
-    241, 230, 42, 162, 29, 5, 244, 245, 162, 29, 5, 236, 46, 162, 29, 5, 248, 
-    241, 236, 46, 162, 29, 5, 236, 48, 249, 73, 162, 29, 5, 236, 47, 243, 
-    212, 254, 224, 162, 29, 5, 236, 47, 243, 212, 248, 241, 254, 224, 162, 
-    29, 5, 236, 47, 243, 212, 244, 206, 162, 29, 5, 244, 206, 162, 29, 5, 
-    248, 241, 244, 245, 162, 29, 5, 248, 241, 244, 206, 162, 228, 197, 235, 
-    254, 140, 126, 236, 58, 236, 243, 140, 126, 236, 126, 236, 145, 140, 126, 
-    236, 126, 236, 119, 140, 126, 236, 126, 236, 116, 140, 126, 236, 126, 
-    236, 123, 140, 126, 236, 126, 227, 240, 140, 126, 232, 85, 232, 74, 140, 
-    126, 251, 12, 251, 60, 140, 126, 251, 12, 251, 20, 140, 126, 251, 12, 
-    251, 59, 140, 126, 224, 27, 224, 26, 140, 126, 251, 12, 251, 9, 140, 126, 
-    217, 232, 217, 239, 140, 126, 248, 168, 251, 66, 140, 126, 199, 229, 213, 
-    140, 126, 221, 240, 222, 27, 140, 126, 221, 240, 232, 215, 140, 126, 221, 
-    240, 229, 111, 140, 126, 231, 205, 232, 134, 140, 126, 248, 168, 249, 74, 
-    140, 126, 199, 222, 116, 140, 126, 221, 240, 221, 219, 140, 126, 221, 
-    240, 222, 31, 140, 126, 221, 240, 221, 237, 140, 126, 231, 205, 231, 144, 
-    140, 126, 252, 42, 252, 220, 140, 126, 229, 38, 229, 58, 140, 126, 229, 
-    119, 229, 113, 140, 126, 245, 140, 246, 8, 140, 126, 229, 119, 229, 135, 
-    140, 126, 245, 140, 245, 245, 140, 126, 229, 119, 226, 143, 140, 126, 
-    233, 137, 196, 140, 126, 217, 232, 218, 55, 140, 126, 227, 76, 227, 21, 
-    140, 126, 227, 22, 140, 126, 235, 13, 235, 36, 140, 126, 234, 231, 140, 
-    126, 218, 188, 219, 3, 140, 126, 224, 27, 226, 155, 140, 126, 224, 27, 
-    227, 0, 140, 126, 224, 27, 223, 102, 140, 126, 243, 5, 243, 95, 140, 126, 
-    235, 13, 250, 252, 140, 126, 142, 254, 123, 140, 126, 243, 5, 231, 200, 
-    140, 126, 230, 30, 140, 126, 226, 130, 60, 140, 126, 234, 100, 243, 190, 
-    140, 126, 226, 130, 255, 58, 140, 126, 226, 130, 254, 140, 140, 126, 226, 
-    130, 72, 140, 126, 226, 130, 237, 255, 140, 126, 226, 130, 220, 110, 140, 
-    126, 226, 130, 220, 108, 140, 126, 226, 130, 68, 140, 126, 226, 130, 220, 
-    23, 140, 126, 229, 121, 140, 250, 78, 16, 252, 221, 140, 126, 226, 130, 
-    73, 140, 126, 226, 130, 254, 234, 140, 126, 226, 130, 74, 140, 126, 226, 
-    130, 254, 197, 234, 96, 140, 126, 226, 130, 254, 197, 234, 97, 140, 126, 
-    235, 164, 140, 126, 234, 93, 140, 126, 234, 94, 140, 126, 234, 100, 246, 
-    223, 140, 126, 234, 100, 221, 239, 140, 126, 234, 100, 221, 93, 140, 126, 
-    234, 100, 251, 50, 140, 126, 222, 25, 140, 126, 232, 36, 140, 126, 218, 
-    49, 140, 126, 245, 135, 140, 20, 217, 84, 140, 20, 107, 140, 20, 103, 
-    140, 20, 160, 140, 20, 154, 140, 20, 174, 140, 20, 182, 140, 20, 191, 
-    140, 20, 185, 140, 20, 190, 140, 126, 254, 121, 140, 126, 236, 124, 202, 
-    1, 236, 57, 202, 1, 236, 126, 223, 66, 202, 1, 236, 126, 222, 121, 202, 
-    1, 232, 84, 202, 1, 250, 182, 202, 1, 224, 27, 222, 121, 202, 1, 231, 56, 
-    202, 1, 248, 167, 202, 1, 101, 202, 1, 221, 240, 223, 66, 202, 1, 221, 
-    240, 222, 121, 202, 1, 231, 204, 202, 1, 252, 41, 202, 1, 229, 37, 202, 
-    1, 229, 119, 223, 66, 202, 1, 245, 140, 222, 121, 202, 1, 229, 119, 222, 
-    121, 202, 1, 245, 140, 223, 66, 202, 1, 233, 136, 202, 1, 217, 231, 202, 
-    1, 235, 13, 235, 36, 202, 1, 235, 13, 234, 246, 202, 1, 218, 187, 202, 1, 
-    224, 27, 223, 66, 202, 1, 243, 5, 223, 66, 202, 1, 74, 202, 1, 243, 5, 
-    222, 121, 202, 246, 208, 202, 29, 5, 60, 202, 29, 5, 234, 100, 236, 233, 
-    202, 29, 5, 255, 58, 202, 29, 5, 254, 140, 202, 29, 5, 72, 202, 29, 5, 
-    237, 255, 202, 29, 5, 218, 90, 202, 29, 5, 217, 166, 202, 29, 5, 68, 202, 
-    29, 5, 220, 23, 202, 29, 5, 234, 100, 236, 44, 202, 225, 62, 5, 235, 12, 
-    202, 225, 62, 5, 231, 56, 202, 29, 5, 73, 202, 29, 5, 246, 237, 202, 29, 
-    5, 74, 202, 29, 5, 253, 212, 202, 29, 5, 254, 196, 202, 236, 58, 235, 
-    188, 202, 145, 234, 100, 246, 223, 202, 145, 234, 100, 221, 239, 202, 
-    145, 234, 100, 221, 205, 202, 145, 234, 100, 251, 123, 202, 251, 151, 78, 
-    202, 232, 43, 202, 20, 217, 84, 202, 20, 107, 202, 20, 103, 202, 20, 160, 
-    202, 20, 154, 202, 20, 174, 202, 20, 182, 202, 20, 191, 202, 20, 185, 
-    202, 20, 190, 202, 243, 5, 231, 204, 202, 243, 5, 233, 136, 59, 4, 230, 
-    146, 59, 164, 244, 19, 217, 243, 233, 213, 221, 61, 60, 59, 164, 244, 19, 
-    217, 243, 233, 213, 255, 144, 227, 80, 252, 146, 196, 59, 164, 244, 19, 
-    217, 243, 233, 213, 255, 144, 244, 19, 221, 45, 196, 59, 164, 66, 217, 
-    243, 233, 213, 234, 27, 196, 59, 164, 250, 194, 217, 243, 233, 213, 225, 
-    31, 196, 59, 164, 251, 135, 217, 243, 233, 213, 229, 112, 225, 19, 196, 
-    59, 164, 217, 243, 233, 213, 221, 45, 225, 19, 196, 59, 164, 226, 115, 
-    225, 18, 59, 164, 251, 251, 217, 243, 233, 212, 59, 164, 252, 55, 224, 
-    197, 217, 243, 233, 212, 59, 164, 237, 173, 221, 44, 59, 164, 249, 68, 
-    221, 45, 251, 250, 59, 164, 225, 18, 59, 164, 231, 60, 225, 18, 59, 164, 
-    221, 45, 225, 18, 59, 164, 231, 60, 221, 45, 225, 18, 59, 164, 227, 96, 
-    251, 39, 223, 229, 225, 18, 59, 164, 227, 154, 244, 44, 225, 18, 59, 164, 
-    251, 135, 255, 148, 227, 26, 234, 26, 171, 251, 154, 59, 164, 244, 19, 
-    221, 44, 59, 235, 5, 5, 251, 67, 227, 25, 59, 235, 5, 5, 235, 77, 227, 
-    25, 59, 253, 248, 5, 225, 28, 244, 194, 255, 149, 227, 25, 59, 253, 248, 
-    5, 255, 146, 187, 59, 253, 248, 5, 226, 95, 221, 40, 59, 5, 227, 218, 
-    248, 179, 244, 193, 59, 5, 227, 218, 248, 179, 244, 70, 59, 5, 227, 218, 
-    248, 179, 244, 20, 59, 5, 227, 218, 232, 230, 244, 193, 59, 5, 227, 218, 
-    232, 230, 244, 70, 59, 5, 227, 218, 248, 179, 227, 218, 232, 229, 59, 20, 
-    217, 84, 59, 20, 107, 59, 20, 103, 59, 20, 160, 59, 20, 154, 59, 20, 174, 
-    59, 20, 182, 59, 20, 191, 59, 20, 185, 59, 20, 190, 59, 20, 144, 107, 59, 
-    20, 144, 103, 59, 20, 144, 160, 59, 20, 144, 154, 59, 20, 144, 174, 59, 
-    20, 144, 182, 59, 20, 144, 191, 59, 20, 144, 185, 59, 20, 144, 190, 59, 
-    20, 144, 217, 84, 59, 164, 251, 253, 227, 25, 59, 164, 232, 109, 251, 
-    204, 231, 68, 217, 23, 59, 164, 251, 135, 255, 148, 227, 26, 251, 205, 
-    233, 172, 251, 154, 59, 164, 232, 109, 251, 204, 225, 29, 227, 25, 59, 
-    164, 251, 47, 233, 212, 59, 164, 221, 56, 255, 145, 59, 164, 244, 8, 227, 
-    26, 243, 228, 59, 164, 244, 8, 227, 26, 243, 234, 59, 164, 254, 124, 236, 
-    140, 243, 228, 59, 164, 254, 124, 236, 140, 243, 234, 59, 5, 218, 42, 
-    221, 43, 59, 5, 234, 75, 221, 43, 59, 1, 175, 59, 1, 236, 149, 59, 1, 
-    245, 0, 59, 1, 244, 125, 59, 1, 232, 115, 59, 1, 251, 169, 59, 1, 251, 
-    69, 59, 1, 237, 123, 59, 1, 231, 77, 59, 1, 221, 29, 59, 1, 221, 19, 59, 
-    1, 249, 132, 59, 1, 249, 116, 59, 1, 231, 217, 59, 1, 222, 155, 59, 1, 
-    222, 35, 59, 1, 249, 207, 59, 1, 249, 36, 59, 1, 208, 59, 1, 187, 59, 1, 
-    229, 141, 59, 1, 252, 237, 59, 1, 252, 94, 59, 1, 196, 59, 1, 221, 55, 
-    59, 1, 221, 47, 59, 1, 247, 74, 59, 1, 247, 70, 59, 1, 219, 7, 59, 1, 
-    217, 80, 59, 1, 217, 114, 59, 1, 255, 151, 59, 1, 184, 59, 1, 203, 59, 1, 
-    235, 188, 59, 1, 225, 25, 59, 1, 223, 218, 59, 1, 226, 177, 59, 1, 155, 
-    59, 1, 60, 59, 1, 236, 10, 59, 1, 245, 167, 203, 59, 1, 236, 74, 59, 1, 
-    227, 52, 59, 29, 5, 255, 58, 59, 29, 5, 72, 59, 29, 5, 237, 255, 59, 29, 
-    5, 68, 59, 29, 5, 220, 23, 59, 29, 5, 167, 152, 59, 29, 5, 167, 227, 53, 
-    59, 29, 5, 167, 153, 59, 29, 5, 167, 235, 18, 59, 29, 5, 73, 59, 29, 5, 
-    246, 250, 59, 29, 5, 74, 59, 29, 5, 230, 127, 59, 5, 227, 81, 223, 104, 
-    232, 116, 227, 75, 59, 5, 227, 80, 252, 145, 59, 29, 5, 210, 72, 59, 29, 
-    5, 210, 237, 255, 59, 5, 231, 68, 217, 24, 232, 236, 249, 207, 59, 5, 
-    224, 37, 235, 124, 59, 164, 243, 196, 59, 164, 230, 21, 59, 5, 235, 127, 
-    227, 25, 59, 5, 218, 46, 227, 25, 59, 5, 235, 128, 221, 56, 251, 154, 59, 
-    5, 234, 28, 251, 154, 59, 5, 244, 22, 251, 155, 227, 152, 59, 5, 244, 22, 
-    234, 20, 227, 152, 59, 223, 97, 1, 175, 59, 223, 97, 1, 236, 149, 59, 
-    223, 97, 1, 245, 0, 59, 223, 97, 1, 244, 125, 59, 223, 97, 1, 232, 115, 
-    59, 223, 97, 1, 251, 169, 59, 223, 97, 1, 251, 69, 59, 223, 97, 1, 237, 
-    123, 59, 223, 97, 1, 231, 77, 59, 223, 97, 1, 221, 29, 59, 223, 97, 1, 
-    221, 19, 59, 223, 97, 1, 249, 132, 59, 223, 97, 1, 249, 116, 59, 223, 97, 
-    1, 231, 217, 59, 223, 97, 1, 222, 155, 59, 223, 97, 1, 222, 35, 59, 223, 
-    97, 1, 249, 207, 59, 223, 97, 1, 249, 36, 59, 223, 97, 1, 208, 59, 223, 
-    97, 1, 187, 59, 223, 97, 1, 229, 141, 59, 223, 97, 1, 252, 237, 59, 223, 
-    97, 1, 252, 94, 59, 223, 97, 1, 196, 59, 223, 97, 1, 221, 55, 59, 223, 
-    97, 1, 221, 47, 59, 223, 97, 1, 247, 74, 59, 223, 97, 1, 247, 70, 59, 
-    223, 97, 1, 219, 7, 59, 223, 97, 1, 217, 80, 59, 223, 97, 1, 217, 114, 
-    59, 223, 97, 1, 255, 151, 59, 223, 97, 1, 184, 59, 223, 97, 1, 203, 59, 
-    223, 97, 1, 235, 188, 59, 223, 97, 1, 225, 25, 59, 223, 97, 1, 223, 218, 
-    59, 223, 97, 1, 226, 177, 59, 223, 97, 1, 155, 59, 223, 97, 1, 60, 59, 
-    223, 97, 1, 236, 10, 59, 223, 97, 1, 245, 167, 219, 7, 59, 223, 97, 1, 
-    245, 167, 184, 59, 223, 97, 1, 245, 167, 203, 59, 236, 8, 227, 23, 236, 
-    149, 59, 236, 8, 227, 23, 236, 150, 251, 205, 233, 172, 251, 154, 59, 
-    251, 144, 5, 106, 252, 140, 59, 251, 144, 5, 170, 252, 140, 59, 251, 144, 
-    5, 251, 145, 222, 86, 59, 251, 144, 5, 226, 114, 255, 150, 59, 16, 247, 
-    121, 251, 248, 59, 16, 227, 217, 227, 82, 59, 16, 230, 35, 244, 192, 59, 
-    16, 227, 217, 227, 83, 227, 154, 244, 43, 59, 16, 229, 112, 187, 59, 16, 
-    231, 190, 251, 248, 59, 16, 231, 190, 251, 249, 231, 60, 255, 147, 59, 
-    16, 231, 190, 251, 249, 244, 21, 255, 147, 59, 16, 231, 190, 251, 249, 
-    251, 205, 255, 147, 59, 5, 227, 218, 232, 230, 227, 218, 248, 178, 59, 5, 
-    227, 218, 232, 230, 244, 20, 59, 164, 251, 252, 224, 197, 244, 104, 233, 
-    213, 227, 153, 59, 164, 233, 138, 217, 243, 244, 104, 233, 213, 227, 153, 
-    59, 164, 231, 60, 221, 44, 59, 164, 66, 252, 12, 227, 77, 217, 243, 233, 
-    213, 234, 27, 196, 59, 164, 250, 194, 252, 12, 227, 77, 217, 243, 233, 
-    213, 225, 31, 196, 227, 108, 223, 38, 55, 235, 114, 223, 38, 55, 227, 
-    108, 223, 38, 5, 2, 248, 143, 235, 114, 223, 38, 5, 2, 248, 143, 63, 1, 
-    175, 63, 1, 236, 149, 63, 1, 245, 0, 63, 1, 244, 125, 63, 1, 232, 115, 
-    63, 1, 251, 169, 63, 1, 251, 69, 63, 1, 237, 123, 63, 1, 237, 103, 63, 1, 
-    231, 77, 63, 1, 231, 206, 63, 1, 221, 29, 63, 1, 221, 19, 63, 1, 249, 
-    132, 63, 1, 249, 116, 63, 1, 231, 217, 63, 1, 222, 155, 63, 1, 222, 35, 
-    63, 1, 249, 207, 63, 1, 249, 36, 63, 1, 208, 63, 1, 187, 63, 1, 229, 141, 
-    63, 1, 252, 237, 63, 1, 252, 94, 63, 1, 196, 63, 1, 184, 63, 1, 203, 63, 
-    1, 235, 188, 63, 1, 219, 7, 63, 1, 226, 177, 63, 1, 155, 63, 1, 235, 17, 
-    63, 1, 60, 63, 1, 225, 10, 60, 63, 1, 72, 63, 1, 237, 255, 63, 1, 68, 63, 
-    1, 220, 23, 63, 1, 73, 63, 1, 233, 128, 73, 63, 1, 74, 63, 1, 253, 232, 
-    63, 29, 5, 222, 123, 255, 58, 63, 29, 5, 255, 58, 63, 29, 5, 72, 63, 29, 
-    5, 237, 255, 63, 29, 5, 68, 63, 29, 5, 220, 23, 63, 29, 5, 73, 63, 29, 5, 
-    254, 196, 63, 29, 5, 233, 128, 237, 255, 63, 29, 5, 233, 128, 74, 63, 29, 
-    5, 178, 50, 63, 5, 254, 95, 63, 5, 61, 56, 63, 5, 219, 77, 63, 5, 219, 
-    82, 63, 5, 254, 11, 63, 250, 147, 5, 128, 184, 63, 250, 147, 5, 128, 203, 
-    63, 250, 147, 5, 128, 219, 7, 63, 250, 147, 5, 128, 155, 63, 1, 244, 32, 
-    226, 177, 63, 20, 217, 84, 63, 20, 107, 63, 20, 103, 63, 20, 160, 63, 20, 
-    154, 63, 20, 174, 63, 20, 182, 63, 20, 191, 63, 20, 185, 63, 20, 190, 63, 
-    5, 235, 25, 226, 86, 63, 5, 226, 86, 63, 16, 235, 9, 63, 16, 250, 163, 
-    63, 16, 254, 213, 63, 16, 244, 178, 63, 1, 225, 25, 63, 1, 223, 218, 63, 
-    1, 167, 152, 63, 1, 167, 227, 53, 63, 1, 167, 153, 63, 1, 167, 235, 18, 
-    63, 29, 5, 167, 152, 63, 29, 5, 167, 227, 53, 63, 29, 5, 167, 153, 63, 
-    29, 5, 167, 235, 18, 63, 1, 233, 128, 232, 115, 63, 1, 233, 128, 237, 
-    103, 63, 1, 233, 128, 252, 178, 63, 1, 233, 128, 252, 174, 63, 250, 147, 
-    5, 233, 128, 128, 208, 63, 250, 147, 5, 233, 128, 128, 196, 63, 250, 147, 
-    5, 233, 128, 128, 235, 188, 63, 1, 225, 30, 236, 213, 225, 25, 63, 29, 5, 
-    225, 30, 236, 213, 246, 115, 63, 145, 164, 225, 30, 236, 213, 243, 170, 
-    63, 145, 164, 225, 30, 236, 213, 236, 185, 229, 118, 63, 1, 218, 215, 
-    228, 175, 236, 213, 222, 35, 63, 1, 218, 215, 228, 175, 236, 213, 228, 
-    181, 63, 29, 5, 218, 215, 228, 175, 236, 213, 246, 115, 63, 29, 5, 218, 
-    215, 228, 175, 236, 213, 220, 110, 63, 5, 218, 215, 228, 175, 236, 213, 
-    221, 131, 63, 5, 218, 215, 228, 175, 236, 213, 221, 130, 63, 5, 218, 215, 
-    228, 175, 236, 213, 221, 129, 63, 5, 218, 215, 228, 175, 236, 213, 221, 
-    128, 63, 5, 218, 215, 228, 175, 236, 213, 221, 127, 63, 1, 247, 4, 228, 
-    175, 236, 213, 231, 217, 63, 1, 247, 4, 228, 175, 236, 213, 217, 173, 63, 
-    1, 247, 4, 228, 175, 236, 213, 244, 106, 63, 29, 5, 244, 188, 236, 213, 
-    72, 63, 29, 5, 236, 190, 230, 167, 63, 29, 5, 236, 190, 68, 63, 29, 5, 
-    236, 190, 246, 250, 63, 1, 225, 10, 175, 63, 1, 225, 10, 236, 149, 63, 1, 
-    225, 10, 245, 0, 63, 1, 225, 10, 251, 169, 63, 1, 225, 10, 217, 114, 63, 
-    1, 225, 10, 231, 77, 63, 1, 225, 10, 249, 207, 63, 1, 225, 10, 208, 63, 
-    1, 225, 10, 229, 141, 63, 1, 225, 10, 246, 8, 63, 1, 225, 10, 252, 237, 
-    63, 1, 225, 10, 222, 35, 63, 1, 225, 10, 155, 63, 250, 147, 5, 225, 10, 
-    128, 219, 7, 63, 29, 5, 225, 10, 255, 58, 63, 29, 5, 225, 10, 73, 63, 29, 
-    5, 225, 10, 178, 50, 63, 29, 5, 225, 10, 39, 218, 90, 63, 5, 225, 10, 
-    221, 130, 63, 5, 225, 10, 221, 129, 63, 5, 225, 10, 221, 127, 63, 5, 225, 
-    10, 221, 126, 63, 5, 225, 10, 250, 115, 221, 130, 63, 5, 225, 10, 250, 
-    115, 221, 129, 63, 5, 225, 10, 250, 115, 246, 200, 221, 132, 63, 1, 227, 
-    12, 230, 26, 246, 8, 63, 5, 227, 12, 230, 26, 221, 127, 63, 225, 10, 20, 
-    217, 84, 63, 225, 10, 20, 107, 63, 225, 10, 20, 103, 63, 225, 10, 20, 
-    160, 63, 225, 10, 20, 154, 63, 225, 10, 20, 174, 63, 225, 10, 20, 182, 
-    63, 225, 10, 20, 191, 63, 225, 10, 20, 185, 63, 225, 10, 20, 190, 63, 5, 
-    236, 143, 221, 131, 63, 5, 236, 143, 221, 129, 63, 29, 5, 254, 186, 60, 
-    63, 29, 5, 254, 186, 254, 196, 63, 16, 225, 10, 107, 63, 16, 225, 10, 
-    246, 94, 95, 6, 1, 254, 131, 95, 6, 1, 252, 209, 95, 6, 1, 244, 230, 95, 
-    6, 1, 248, 153, 95, 6, 1, 246, 197, 95, 6, 1, 219, 85, 95, 6, 1, 217, 87, 
-    95, 6, 1, 222, 119, 95, 6, 1, 237, 223, 95, 6, 1, 236, 233, 95, 6, 1, 
-    235, 143, 95, 6, 1, 234, 86, 95, 6, 1, 232, 211, 95, 6, 1, 230, 138, 95, 
-    6, 1, 229, 243, 95, 6, 1, 217, 76, 95, 6, 1, 227, 249, 95, 6, 1, 226, 
-    140, 95, 6, 1, 222, 112, 95, 6, 1, 220, 87, 95, 6, 1, 229, 134, 95, 6, 1, 
-    236, 138, 95, 6, 1, 244, 119, 95, 6, 1, 228, 140, 95, 6, 1, 224, 209, 95, 
-    6, 1, 251, 22, 95, 6, 1, 251, 154, 95, 6, 1, 237, 91, 95, 6, 1, 250, 224, 
-    95, 6, 1, 251, 56, 95, 6, 1, 218, 136, 95, 6, 1, 237, 101, 95, 6, 1, 243, 
-    208, 95, 6, 1, 243, 162, 95, 6, 1, 243, 108, 95, 6, 1, 218, 227, 95, 6, 
-    1, 243, 182, 95, 6, 1, 243, 2, 95, 1, 254, 131, 95, 1, 252, 209, 95, 1, 
-    244, 230, 95, 1, 248, 153, 95, 1, 246, 197, 95, 1, 219, 85, 95, 1, 217, 
-    87, 95, 1, 222, 119, 95, 1, 237, 223, 95, 1, 236, 233, 95, 1, 235, 143, 
-    95, 1, 234, 86, 95, 1, 232, 211, 95, 1, 230, 138, 95, 1, 229, 243, 95, 1, 
-    217, 76, 95, 1, 227, 249, 95, 1, 226, 140, 95, 1, 222, 112, 95, 1, 220, 
-    87, 95, 1, 229, 134, 95, 1, 236, 138, 95, 1, 244, 119, 95, 1, 228, 140, 
-    95, 1, 224, 209, 95, 1, 251, 22, 95, 1, 251, 154, 95, 1, 237, 91, 95, 1, 
-    250, 224, 95, 1, 251, 56, 95, 1, 218, 136, 95, 1, 237, 101, 95, 1, 243, 
-    208, 95, 1, 243, 162, 95, 1, 243, 108, 95, 1, 218, 227, 95, 1, 243, 182, 
-    95, 1, 243, 2, 95, 1, 245, 203, 95, 1, 217, 233, 95, 1, 246, 210, 95, 1, 
-    215, 244, 230, 95, 1, 254, 191, 95, 229, 241, 225, 54, 58, 1, 95, 232, 
-    211, 22, 91, 236, 86, 22, 91, 223, 211, 22, 91, 232, 55, 22, 91, 221, 
-    192, 22, 91, 223, 200, 22, 91, 227, 140, 22, 91, 233, 187, 22, 91, 229, 
-    99, 22, 91, 223, 208, 22, 91, 224, 104, 22, 91, 223, 205, 22, 91, 238, 
-    22, 22, 91, 250, 230, 22, 91, 223, 215, 22, 91, 251, 29, 22, 91, 236, 
-    128, 22, 91, 222, 0, 22, 91, 229, 127, 22, 91, 243, 106, 22, 91, 232, 51, 
-    22, 91, 223, 209, 22, 91, 232, 45, 22, 91, 232, 49, 22, 91, 221, 189, 22, 
-    91, 227, 128, 22, 91, 223, 207, 22, 91, 227, 138, 22, 91, 236, 217, 22, 
-    91, 233, 180, 22, 91, 236, 220, 22, 91, 229, 94, 22, 91, 229, 92, 22, 91, 
-    229, 80, 22, 91, 229, 88, 22, 91, 229, 86, 22, 91, 229, 83, 22, 91, 229, 
-    85, 22, 91, 229, 82, 22, 91, 229, 87, 22, 91, 229, 97, 22, 91, 229, 98, 
-    22, 91, 229, 81, 22, 91, 229, 91, 22, 91, 236, 218, 22, 91, 236, 216, 22, 
-    91, 224, 97, 22, 91, 224, 95, 22, 91, 224, 87, 22, 91, 224, 90, 22, 91, 
-    224, 96, 22, 91, 224, 92, 22, 91, 224, 91, 22, 91, 224, 89, 22, 91, 224, 
-    100, 22, 91, 224, 102, 22, 91, 224, 103, 22, 91, 224, 98, 22, 91, 224, 
-    88, 22, 91, 224, 93, 22, 91, 224, 101, 22, 91, 251, 15, 22, 91, 251, 13, 
-    22, 91, 251, 78, 22, 91, 251, 76, 22, 91, 230, 1, 22, 91, 238, 17, 22, 
-    91, 238, 8, 22, 91, 238, 16, 22, 91, 238, 13, 22, 91, 238, 11, 22, 91, 
-    238, 15, 22, 91, 223, 212, 22, 91, 238, 20, 22, 91, 238, 21, 22, 91, 238, 
-    9, 22, 91, 238, 14, 22, 91, 218, 6, 22, 91, 250, 229, 22, 91, 251, 16, 
-    22, 91, 251, 14, 22, 91, 251, 79, 22, 91, 251, 77, 22, 91, 251, 27, 22, 
-    91, 251, 28, 22, 91, 251, 17, 22, 91, 251, 80, 22, 91, 229, 125, 22, 91, 
-    236, 219, 22, 91, 223, 213, 22, 91, 218, 12, 22, 91, 236, 77, 22, 91, 
-    232, 47, 22, 91, 232, 53, 22, 91, 232, 52, 22, 91, 221, 186, 22, 91, 245, 
-    185, 22, 122, 245, 185, 22, 122, 60, 22, 122, 254, 234, 22, 122, 184, 22, 
-    122, 218, 65, 22, 122, 246, 168, 22, 122, 73, 22, 122, 218, 16, 22, 122, 
-    218, 25, 22, 122, 74, 22, 122, 219, 7, 22, 122, 219, 4, 22, 122, 230, 
-    167, 22, 122, 217, 231, 22, 122, 68, 22, 122, 218, 219, 22, 122, 218, 
-    227, 22, 122, 218, 204, 22, 122, 217, 200, 22, 122, 246, 115, 22, 122, 
-    217, 250, 22, 122, 72, 22, 122, 255, 142, 22, 122, 255, 141, 22, 122, 
-    218, 79, 22, 122, 218, 77, 22, 122, 246, 166, 22, 122, 246, 165, 22, 122, 
-    246, 167, 22, 122, 218, 15, 22, 122, 218, 14, 22, 122, 231, 13, 22, 122, 
-    231, 14, 22, 122, 231, 7, 22, 122, 231, 12, 22, 122, 231, 10, 22, 122, 
-    217, 225, 22, 122, 217, 224, 22, 122, 217, 223, 22, 122, 217, 226, 22, 
-    122, 217, 227, 22, 122, 220, 179, 22, 122, 220, 178, 22, 122, 220, 177, 
-    22, 122, 220, 174, 22, 122, 220, 175, 22, 122, 217, 199, 22, 122, 217, 
-    196, 22, 122, 217, 197, 22, 122, 217, 191, 22, 122, 217, 192, 22, 122, 
-    217, 193, 22, 122, 217, 195, 22, 122, 246, 109, 22, 122, 246, 111, 22, 
-    122, 217, 249, 22, 122, 242, 106, 22, 122, 242, 98, 22, 122, 242, 101, 
-    22, 122, 242, 99, 22, 122, 242, 103, 22, 122, 242, 105, 22, 122, 254, 60, 
-    22, 122, 254, 57, 22, 122, 254, 55, 22, 122, 254, 56, 22, 122, 223, 216, 
-    22, 122, 255, 143, 22, 122, 218, 78, 22, 122, 218, 13, 22, 122, 231, 9, 
-    22, 122, 231, 8, 22, 85, 236, 86, 22, 85, 223, 211, 22, 85, 236, 79, 22, 
-    85, 232, 55, 22, 85, 232, 53, 22, 85, 232, 52, 22, 85, 221, 192, 22, 85, 
-    227, 140, 22, 85, 227, 135, 22, 85, 227, 132, 22, 85, 227, 125, 22, 85, 
-    227, 120, 22, 85, 227, 115, 22, 85, 227, 126, 22, 85, 227, 138, 22, 85, 
-    233, 187, 22, 85, 229, 99, 22, 85, 229, 88, 22, 85, 224, 104, 22, 85, 
-    223, 205, 22, 85, 238, 22, 22, 85, 250, 230, 22, 85, 251, 29, 22, 85, 
-    236, 128, 22, 85, 222, 0, 22, 85, 229, 127, 22, 85, 243, 106, 22, 85, 
-    236, 80, 22, 85, 236, 78, 22, 85, 232, 51, 22, 85, 232, 45, 22, 85, 232, 
-    47, 22, 85, 232, 50, 22, 85, 232, 46, 22, 85, 221, 189, 22, 85, 221, 186, 
-    22, 85, 227, 133, 22, 85, 227, 128, 22, 85, 227, 114, 22, 85, 227, 113, 
-    22, 85, 223, 207, 22, 85, 227, 130, 22, 85, 227, 129, 22, 85, 227, 122, 
-    22, 85, 227, 124, 22, 85, 227, 137, 22, 85, 227, 117, 22, 85, 227, 127, 
-    22, 85, 227, 136, 22, 85, 227, 112, 22, 85, 233, 183, 22, 85, 233, 178, 
-    22, 85, 233, 180, 22, 85, 233, 177, 22, 85, 233, 175, 22, 85, 233, 181, 
-    22, 85, 233, 186, 22, 85, 233, 184, 22, 85, 236, 220, 22, 85, 229, 90, 
-    22, 85, 229, 91, 22, 85, 229, 96, 22, 85, 236, 218, 22, 85, 224, 97, 22, 
-    85, 224, 87, 22, 85, 224, 90, 22, 85, 224, 92, 22, 85, 230, 1, 22, 85, 
-    238, 17, 22, 85, 238, 10, 22, 85, 223, 212, 22, 85, 238, 18, 22, 85, 218, 
-    6, 22, 85, 218, 2, 22, 85, 218, 3, 22, 85, 229, 125, 22, 85, 236, 219, 
-    22, 85, 243, 104, 22, 85, 243, 102, 22, 85, 243, 105, 22, 85, 243, 103, 
-    22, 85, 218, 12, 22, 85, 236, 82, 22, 85, 236, 81, 22, 85, 236, 85, 22, 
-    85, 236, 83, 22, 85, 236, 84, 22, 85, 223, 209, 28, 4, 155, 28, 4, 242, 
-    173, 28, 4, 243, 112, 28, 4, 243, 211, 28, 4, 243, 148, 28, 4, 243, 162, 
-    28, 4, 243, 4, 28, 4, 243, 3, 28, 4, 235, 188, 28, 4, 234, 231, 28, 4, 
-    235, 67, 28, 4, 235, 187, 28, 4, 235, 118, 28, 4, 235, 122, 28, 4, 235, 
-    12, 28, 4, 234, 206, 28, 4, 243, 121, 28, 4, 243, 115, 28, 4, 243, 117, 
-    28, 4, 243, 120, 28, 4, 243, 118, 28, 4, 243, 119, 28, 4, 243, 116, 28, 
-    4, 243, 114, 28, 4, 196, 28, 4, 233, 99, 28, 4, 233, 196, 28, 4, 234, 
-    118, 28, 4, 234, 16, 28, 4, 234, 25, 28, 4, 233, 136, 28, 4, 233, 49, 28, 
-    4, 222, 212, 28, 4, 222, 206, 28, 4, 222, 208, 28, 4, 222, 211, 28, 4, 
-    222, 209, 28, 4, 222, 210, 28, 4, 222, 207, 28, 4, 222, 205, 28, 4, 203, 
-    28, 4, 227, 22, 28, 4, 227, 147, 28, 4, 228, 0, 28, 4, 227, 200, 28, 4, 
-    227, 216, 28, 4, 227, 75, 28, 4, 226, 252, 28, 4, 226, 177, 28, 4, 223, 
-    103, 28, 4, 224, 140, 28, 4, 226, 175, 28, 4, 226, 84, 28, 4, 226, 94, 
-    28, 4, 224, 26, 28, 4, 223, 36, 28, 4, 225, 25, 28, 4, 224, 170, 28, 4, 
-    224, 221, 28, 4, 225, 21, 28, 4, 224, 244, 28, 4, 224, 246, 28, 4, 224, 
-    200, 28, 4, 224, 157, 28, 4, 228, 155, 28, 4, 228, 98, 28, 4, 228, 121, 
-    28, 4, 228, 154, 28, 4, 228, 135, 28, 4, 228, 136, 28, 4, 228, 110, 28, 
-    4, 228, 109, 28, 4, 228, 57, 28, 4, 228, 53, 28, 4, 228, 56, 28, 4, 228, 
-    54, 28, 4, 228, 55, 28, 4, 228, 133, 28, 4, 228, 127, 28, 4, 228, 129, 
-    28, 4, 228, 132, 28, 4, 228, 130, 28, 4, 228, 131, 28, 4, 228, 128, 28, 
-    4, 228, 126, 28, 4, 228, 122, 28, 4, 228, 125, 28, 4, 228, 123, 28, 4, 
-    228, 124, 28, 4, 252, 237, 28, 4, 251, 248, 28, 4, 252, 84, 28, 4, 252, 
-    236, 28, 4, 252, 137, 28, 4, 252, 144, 28, 4, 252, 41, 28, 4, 251, 218, 
-    28, 4, 219, 189, 28, 4, 219, 56, 28, 4, 219, 94, 28, 4, 219, 188, 28, 4, 
-    219, 160, 28, 4, 219, 165, 28, 4, 219, 72, 28, 4, 219, 49, 28, 4, 222, 
-    155, 28, 4, 221, 0, 28, 4, 221, 205, 28, 4, 222, 152, 28, 4, 222, 80, 28, 
-    4, 222, 87, 28, 4, 101, 28, 4, 220, 225, 28, 4, 251, 169, 28, 4, 250, 92, 
-    28, 4, 250, 235, 28, 4, 251, 168, 28, 4, 251, 91, 28, 4, 251, 99, 28, 4, 
-    250, 182, 28, 4, 250, 66, 28, 4, 218, 138, 28, 4, 218, 114, 28, 4, 218, 
-    130, 28, 4, 218, 137, 28, 4, 218, 134, 28, 4, 218, 135, 28, 4, 218, 121, 
-    28, 4, 218, 120, 28, 4, 218, 109, 28, 4, 218, 105, 28, 4, 218, 108, 28, 
-    4, 218, 106, 28, 4, 218, 107, 28, 4, 208, 28, 4, 231, 144, 28, 4, 232, 
-    62, 28, 4, 232, 235, 28, 4, 232, 139, 28, 4, 232, 141, 28, 4, 231, 204, 
-    28, 4, 231, 85, 28, 4, 231, 77, 28, 4, 231, 50, 28, 4, 231, 67, 28, 4, 
-    231, 76, 28, 4, 231, 72, 28, 4, 231, 73, 28, 4, 231, 56, 28, 4, 231, 43, 
-    28, 4, 244, 73, 60, 28, 4, 244, 73, 68, 28, 4, 244, 73, 72, 28, 4, 244, 
-    73, 255, 58, 28, 4, 244, 73, 246, 250, 28, 4, 244, 73, 73, 28, 4, 244, 
-    73, 74, 28, 4, 244, 73, 219, 7, 28, 4, 175, 28, 4, 236, 7, 28, 4, 236, 
-    113, 28, 4, 237, 5, 28, 4, 236, 183, 28, 4, 236, 184, 28, 4, 236, 57, 28, 
-    4, 236, 56, 28, 4, 235, 234, 28, 4, 235, 229, 28, 4, 235, 233, 28, 4, 
-    235, 230, 28, 4, 235, 231, 28, 4, 235, 224, 28, 4, 235, 218, 28, 4, 235, 
-    220, 28, 4, 235, 223, 28, 4, 235, 221, 28, 4, 235, 222, 28, 4, 235, 219, 
-    28, 4, 235, 217, 28, 4, 235, 213, 28, 4, 235, 216, 28, 4, 235, 214, 28, 
-    4, 235, 215, 28, 4, 219, 7, 28, 4, 218, 165, 28, 4, 218, 204, 28, 4, 219, 
-    6, 28, 4, 218, 224, 28, 4, 218, 227, 28, 4, 218, 187, 28, 4, 218, 186, 
-    28, 4, 229, 133, 60, 28, 4, 229, 133, 68, 28, 4, 229, 133, 72, 28, 4, 
-    229, 133, 255, 58, 28, 4, 229, 133, 246, 250, 28, 4, 229, 133, 73, 28, 4, 
-    229, 133, 74, 28, 4, 217, 114, 28, 4, 217, 13, 28, 4, 217, 42, 28, 4, 
-    217, 113, 28, 4, 217, 90, 28, 4, 217, 92, 28, 4, 217, 21, 28, 4, 217, 0, 
-    28, 4, 217, 80, 28, 4, 217, 60, 28, 4, 217, 67, 28, 4, 217, 79, 28, 4, 
-    217, 71, 28, 4, 217, 72, 28, 4, 217, 65, 28, 4, 217, 51, 28, 4, 184, 28, 
-    4, 217, 200, 28, 4, 217, 250, 28, 4, 218, 76, 28, 4, 218, 22, 28, 4, 218, 
-    25, 28, 4, 217, 231, 28, 4, 217, 222, 28, 4, 249, 207, 28, 4, 247, 111, 
-    28, 4, 249, 15, 28, 4, 249, 206, 28, 4, 249, 82, 28, 4, 249, 92, 28, 4, 
-    248, 167, 28, 4, 247, 83, 28, 4, 249, 132, 28, 4, 249, 102, 28, 4, 249, 
-    114, 28, 4, 249, 131, 28, 4, 249, 119, 28, 4, 249, 120, 28, 4, 249, 107, 
-    28, 4, 249, 93, 28, 4, 237, 123, 28, 4, 237, 43, 28, 4, 237, 98, 28, 4, 
-    237, 122, 28, 4, 237, 113, 28, 4, 237, 114, 28, 4, 237, 59, 28, 4, 237, 
-    25, 28, 4, 245, 0, 28, 4, 244, 17, 28, 4, 244, 103, 28, 4, 244, 253, 28, 
-    4, 244, 184, 28, 4, 244, 191, 28, 4, 244, 68, 28, 4, 244, 67, 28, 4, 243, 
-    243, 28, 4, 243, 239, 28, 4, 243, 242, 28, 4, 243, 240, 28, 4, 243, 241, 
-    28, 4, 244, 160, 28, 4, 244, 140, 28, 4, 244, 150, 28, 4, 244, 159, 28, 
-    4, 244, 154, 28, 4, 244, 155, 28, 4, 244, 144, 28, 4, 244, 129, 28, 4, 
-    222, 35, 28, 4, 221, 223, 28, 4, 222, 2, 28, 4, 222, 34, 28, 4, 222, 21, 
-    28, 4, 222, 22, 28, 4, 221, 239, 28, 4, 221, 216, 28, 4, 251, 69, 28, 4, 
-    250, 253, 28, 4, 251, 31, 28, 4, 251, 68, 28, 4, 251, 43, 28, 4, 251, 46, 
-    28, 4, 251, 11, 28, 4, 250, 242, 28, 4, 229, 141, 28, 4, 229, 114, 28, 4, 
-    229, 129, 28, 4, 229, 140, 28, 4, 229, 131, 28, 4, 229, 132, 28, 4, 229, 
-    118, 28, 4, 229, 110, 28, 4, 221, 55, 28, 4, 221, 36, 28, 4, 221, 39, 28, 
-    4, 221, 54, 28, 4, 221, 49, 28, 4, 221, 50, 28, 4, 221, 38, 28, 4, 221, 
-    34, 28, 4, 220, 188, 28, 4, 220, 180, 28, 4, 220, 184, 28, 4, 220, 187, 
-    28, 4, 220, 185, 28, 4, 220, 186, 28, 4, 220, 182, 28, 4, 220, 181, 28, 
-    4, 246, 8, 28, 4, 245, 92, 28, 4, 245, 203, 28, 4, 246, 7, 28, 4, 245, 
-    226, 28, 4, 245, 231, 28, 4, 245, 139, 28, 4, 245, 78, 28, 4, 187, 28, 4, 
-    228, 202, 28, 4, 229, 108, 28, 4, 230, 43, 28, 4, 229, 191, 28, 4, 229, 
-    198, 28, 4, 229, 37, 28, 4, 228, 181, 28, 4, 226, 242, 28, 4, 233, 39, 
-    28, 4, 245, 72, 28, 36, 244, 183, 78, 28, 226, 87, 78, 28, 218, 173, 28, 
-    245, 90, 223, 136, 28, 250, 168, 28, 225, 67, 28, 250, 175, 28, 228, 242, 
-    250, 175, 28, 228, 82, 78, 28, 229, 241, 225, 54, 28, 20, 107, 28, 20, 
-    103, 28, 20, 160, 28, 20, 154, 28, 20, 174, 28, 20, 182, 28, 20, 191, 28, 
-    20, 185, 28, 20, 190, 28, 54, 222, 65, 28, 54, 220, 219, 28, 54, 221, 
-    245, 28, 54, 245, 119, 28, 54, 245, 196, 28, 54, 224, 69, 28, 54, 225, 
-    38, 28, 54, 246, 227, 28, 54, 232, 27, 28, 54, 242, 161, 28, 54, 222, 66, 
-    221, 231, 28, 4, 226, 91, 233, 49, 28, 4, 233, 45, 28, 4, 233, 46, 28, 4, 
-    233, 47, 28, 4, 226, 91, 251, 218, 28, 4, 251, 215, 28, 4, 251, 216, 28, 
-    4, 251, 217, 28, 4, 226, 91, 245, 78, 28, 4, 245, 74, 28, 4, 245, 75, 28, 
-    4, 245, 76, 28, 4, 226, 91, 228, 181, 28, 4, 228, 177, 28, 4, 228, 178, 
-    28, 4, 228, 179, 28, 221, 133, 164, 217, 234, 28, 221, 133, 164, 249, 50, 
-    28, 221, 133, 164, 227, 97, 28, 221, 133, 164, 224, 192, 227, 97, 28, 
-    221, 133, 164, 248, 248, 28, 221, 133, 164, 236, 167, 28, 221, 133, 164, 
-    251, 19, 28, 221, 133, 164, 243, 110, 28, 221, 133, 164, 249, 49, 28, 
-    221, 133, 164, 235, 245, 143, 1, 60, 143, 1, 73, 143, 1, 72, 143, 1, 74, 
-    143, 1, 68, 143, 1, 216, 216, 143, 1, 245, 0, 143, 1, 175, 143, 1, 244, 
-    191, 143, 1, 244, 103, 143, 1, 244, 68, 143, 1, 244, 17, 143, 1, 243, 
-    244, 143, 1, 155, 143, 1, 243, 162, 143, 1, 243, 112, 143, 1, 243, 4, 
-    143, 1, 242, 173, 143, 1, 242, 154, 143, 1, 235, 188, 143, 1, 235, 122, 
-    143, 1, 235, 67, 143, 1, 235, 12, 143, 1, 234, 231, 143, 1, 234, 207, 
-    143, 1, 196, 143, 1, 234, 25, 143, 1, 233, 196, 143, 1, 233, 136, 143, 1, 
-    233, 99, 143, 1, 208, 143, 1, 243, 26, 143, 1, 232, 224, 143, 1, 232, 
-    141, 143, 1, 232, 62, 143, 1, 231, 204, 143, 1, 231, 144, 143, 1, 231, 
-    87, 143, 1, 228, 97, 143, 1, 228, 84, 143, 1, 228, 78, 143, 1, 228, 72, 
-    143, 1, 228, 61, 143, 1, 228, 59, 143, 1, 226, 177, 143, 1, 198, 143, 1, 
-    226, 94, 143, 1, 224, 140, 143, 1, 224, 26, 143, 1, 223, 103, 143, 1, 
-    223, 41, 143, 1, 249, 207, 143, 1, 222, 155, 143, 1, 249, 92, 143, 1, 
-    222, 87, 143, 1, 249, 15, 143, 1, 221, 205, 143, 1, 248, 167, 143, 1, 
-    247, 111, 143, 1, 247, 85, 143, 1, 248, 176, 143, 1, 221, 155, 143, 1, 
-    221, 154, 143, 1, 221, 144, 143, 1, 221, 143, 143, 1, 221, 142, 143, 1, 
-    221, 141, 143, 1, 221, 55, 143, 1, 221, 50, 143, 1, 221, 39, 143, 1, 221, 
-    38, 143, 1, 221, 36, 143, 1, 221, 35, 143, 1, 219, 7, 143, 1, 218, 227, 
-    143, 1, 218, 204, 143, 1, 218, 187, 143, 1, 218, 165, 143, 1, 218, 156, 
-    143, 1, 184, 143, 1, 218, 25, 143, 1, 217, 250, 143, 1, 217, 231, 143, 1, 
-    217, 200, 143, 1, 217, 174, 18, 19, 242, 121, 18, 19, 73, 18, 19, 255, 
-    22, 18, 19, 72, 18, 19, 237, 255, 18, 19, 74, 18, 19, 230, 127, 18, 19, 
-    218, 89, 230, 127, 18, 19, 64, 246, 250, 18, 19, 64, 72, 18, 19, 60, 18, 
-    19, 255, 58, 18, 19, 218, 227, 18, 19, 137, 218, 227, 18, 19, 218, 204, 
-    18, 19, 137, 218, 204, 18, 19, 218, 196, 18, 19, 137, 218, 196, 18, 19, 
-    218, 187, 18, 19, 137, 218, 187, 18, 19, 218, 180, 18, 19, 137, 218, 180, 
-    18, 19, 232, 207, 218, 180, 18, 19, 219, 7, 18, 19, 137, 219, 7, 18, 19, 
-    219, 6, 18, 19, 137, 219, 6, 18, 19, 232, 207, 219, 6, 18, 19, 254, 196, 
-    18, 19, 218, 89, 219, 40, 18, 19, 244, 73, 223, 136, 18, 19, 39, 168, 18, 
-    19, 39, 244, 36, 18, 19, 39, 252, 29, 144, 227, 93, 18, 19, 39, 221, 120, 
-    144, 227, 93, 18, 19, 39, 45, 144, 227, 93, 18, 19, 39, 227, 93, 18, 19, 
-    39, 51, 168, 18, 19, 39, 51, 224, 192, 69, 223, 107, 18, 19, 39, 233, 
-    193, 248, 145, 18, 19, 39, 224, 192, 186, 92, 18, 19, 39, 229, 43, 18, 
-    19, 39, 113, 222, 143, 18, 19, 246, 197, 18, 19, 237, 223, 18, 19, 230, 
-    138, 18, 19, 254, 131, 18, 19, 229, 198, 18, 19, 230, 41, 18, 19, 229, 
-    108, 18, 19, 229, 76, 18, 19, 229, 37, 18, 19, 229, 21, 18, 19, 218, 89, 
-    229, 21, 18, 19, 64, 243, 148, 18, 19, 64, 243, 112, 18, 19, 187, 18, 19, 
-    230, 43, 18, 19, 228, 179, 18, 19, 137, 228, 179, 18, 19, 228, 177, 18, 
-    19, 137, 228, 177, 18, 19, 228, 176, 18, 19, 137, 228, 176, 18, 19, 228, 
-    174, 18, 19, 137, 228, 174, 18, 19, 228, 173, 18, 19, 137, 228, 173, 18, 
-    19, 228, 181, 18, 19, 137, 228, 181, 18, 19, 228, 180, 18, 19, 137, 228, 
-    180, 18, 19, 218, 89, 228, 180, 18, 19, 230, 59, 18, 19, 137, 230, 59, 
-    18, 19, 64, 243, 225, 18, 19, 222, 87, 18, 19, 222, 150, 18, 19, 221, 
-    205, 18, 19, 221, 194, 18, 19, 101, 18, 19, 221, 122, 18, 19, 218, 89, 
-    221, 122, 18, 19, 64, 249, 82, 18, 19, 64, 249, 15, 18, 19, 222, 155, 18, 
-    19, 222, 152, 18, 19, 220, 223, 18, 19, 137, 220, 223, 18, 19, 220, 208, 
-    18, 19, 137, 220, 208, 18, 19, 220, 207, 18, 19, 137, 220, 207, 18, 19, 
-    103, 18, 19, 137, 103, 18, 19, 220, 203, 18, 19, 137, 220, 203, 18, 19, 
-    220, 225, 18, 19, 137, 220, 225, 18, 19, 220, 224, 18, 19, 137, 220, 224, 
-    18, 19, 232, 207, 220, 224, 18, 19, 222, 201, 18, 19, 221, 26, 18, 19, 
-    221, 12, 18, 19, 221, 11, 18, 19, 221, 29, 18, 19, 236, 184, 18, 19, 237, 
-    2, 18, 19, 236, 113, 18, 19, 236, 105, 18, 19, 236, 57, 18, 19, 236, 41, 
-    18, 19, 218, 89, 236, 41, 18, 19, 175, 18, 19, 237, 5, 18, 19, 235, 231, 
-    18, 19, 137, 235, 231, 18, 19, 235, 229, 18, 19, 137, 235, 229, 18, 19, 
-    235, 228, 18, 19, 137, 235, 228, 18, 19, 235, 227, 18, 19, 137, 235, 227, 
-    18, 19, 235, 226, 18, 19, 137, 235, 226, 18, 19, 235, 234, 18, 19, 137, 
-    235, 234, 18, 19, 235, 233, 18, 19, 137, 235, 233, 18, 19, 232, 207, 235, 
-    233, 18, 19, 237, 17, 18, 19, 235, 235, 18, 19, 224, 5, 236, 178, 18, 19, 
-    224, 5, 236, 106, 18, 19, 224, 5, 236, 53, 18, 19, 224, 5, 236, 245, 18, 
-    19, 251, 99, 18, 19, 251, 167, 18, 19, 250, 235, 18, 19, 250, 225, 18, 
-    19, 250, 182, 18, 19, 250, 130, 18, 19, 218, 89, 250, 130, 18, 19, 251, 
-    169, 18, 19, 251, 168, 18, 19, 250, 64, 18, 19, 137, 250, 64, 18, 19, 
-    250, 62, 18, 19, 137, 250, 62, 18, 19, 250, 61, 18, 19, 137, 250, 61, 18, 
-    19, 250, 60, 18, 19, 137, 250, 60, 18, 19, 250, 59, 18, 19, 137, 250, 59, 
-    18, 19, 250, 66, 18, 19, 137, 250, 66, 18, 19, 250, 65, 18, 19, 137, 250, 
-    65, 18, 19, 232, 207, 250, 65, 18, 19, 251, 202, 18, 19, 226, 116, 222, 
-    37, 18, 19, 234, 25, 18, 19, 234, 117, 18, 19, 233, 196, 18, 19, 233, 
-    171, 18, 19, 233, 136, 18, 19, 233, 119, 18, 19, 218, 89, 233, 119, 18, 
-    19, 196, 18, 19, 234, 118, 18, 19, 233, 47, 18, 19, 137, 233, 47, 18, 19, 
-    233, 45, 18, 19, 137, 233, 45, 18, 19, 233, 44, 18, 19, 137, 233, 44, 18, 
-    19, 233, 43, 18, 19, 137, 233, 43, 18, 19, 233, 42, 18, 19, 137, 233, 42, 
-    18, 19, 233, 49, 18, 19, 137, 233, 49, 18, 19, 233, 48, 18, 19, 137, 233, 
-    48, 18, 19, 232, 207, 233, 48, 18, 19, 189, 18, 19, 137, 189, 18, 19, 
-    233, 199, 18, 19, 253, 243, 189, 18, 19, 226, 116, 189, 18, 19, 232, 141, 
-    18, 19, 232, 234, 18, 19, 232, 62, 18, 19, 232, 38, 18, 19, 231, 204, 18, 
-    19, 231, 195, 18, 19, 218, 89, 231, 195, 18, 19, 208, 18, 19, 232, 235, 
-    18, 19, 231, 83, 18, 19, 137, 231, 83, 18, 19, 231, 85, 18, 19, 137, 231, 
-    85, 18, 19, 231, 84, 18, 19, 137, 231, 84, 18, 19, 232, 207, 231, 84, 18, 
-    19, 207, 18, 19, 64, 232, 117, 18, 19, 232, 67, 18, 19, 235, 122, 18, 19, 
-    235, 186, 18, 19, 235, 67, 18, 19, 235, 55, 18, 19, 235, 12, 18, 19, 234, 
-    248, 18, 19, 218, 89, 234, 248, 18, 19, 235, 188, 18, 19, 235, 187, 18, 
-    19, 234, 204, 18, 19, 137, 234, 204, 18, 19, 234, 203, 18, 19, 137, 234, 
-    203, 18, 19, 234, 202, 18, 19, 137, 234, 202, 18, 19, 234, 201, 18, 19, 
-    137, 234, 201, 18, 19, 234, 200, 18, 19, 137, 234, 200, 18, 19, 234, 206, 
-    18, 19, 137, 234, 206, 18, 19, 234, 205, 18, 19, 137, 234, 205, 18, 19, 
-    153, 18, 19, 137, 153, 18, 19, 128, 153, 18, 19, 226, 94, 18, 19, 226, 
-    173, 18, 19, 224, 140, 18, 19, 224, 125, 18, 19, 224, 26, 18, 19, 224, 
-    14, 18, 19, 218, 89, 224, 14, 18, 19, 226, 177, 18, 19, 226, 175, 18, 19, 
-    223, 32, 18, 19, 137, 223, 32, 18, 19, 223, 29, 18, 19, 137, 223, 29, 18, 
-    19, 223, 28, 18, 19, 137, 223, 28, 18, 19, 223, 27, 18, 19, 137, 223, 27, 
-    18, 19, 223, 26, 18, 19, 137, 223, 26, 18, 19, 223, 36, 18, 19, 137, 223, 
-    36, 18, 19, 223, 35, 18, 19, 137, 223, 35, 18, 19, 232, 207, 223, 35, 18, 
-    19, 198, 18, 19, 253, 243, 198, 18, 19, 223, 37, 18, 19, 252, 50, 198, 
-    18, 19, 233, 116, 224, 66, 18, 19, 232, 207, 224, 59, 18, 19, 232, 207, 
-    226, 233, 18, 19, 232, 207, 223, 228, 18, 19, 232, 207, 223, 105, 18, 19, 
-    232, 207, 224, 58, 18, 19, 232, 207, 226, 97, 18, 19, 224, 246, 18, 19, 
-    224, 221, 18, 19, 224, 216, 18, 19, 224, 200, 18, 19, 224, 195, 18, 19, 
-    225, 25, 18, 19, 225, 21, 18, 19, 224, 155, 18, 19, 137, 224, 155, 18, 
-    19, 224, 154, 18, 19, 137, 224, 154, 18, 19, 224, 153, 18, 19, 137, 224, 
-    153, 18, 19, 224, 152, 18, 19, 137, 224, 152, 18, 19, 224, 151, 18, 19, 
-    137, 224, 151, 18, 19, 224, 157, 18, 19, 137, 224, 157, 18, 19, 224, 156, 
-    18, 19, 137, 224, 156, 18, 19, 225, 27, 18, 19, 218, 25, 18, 19, 218, 74, 
-    18, 19, 217, 250, 18, 19, 217, 242, 18, 19, 217, 231, 18, 19, 217, 216, 
-    18, 19, 218, 89, 217, 216, 18, 19, 184, 18, 19, 218, 76, 18, 19, 217, 
-    171, 18, 19, 137, 217, 171, 18, 19, 217, 170, 18, 19, 137, 217, 170, 18, 
-    19, 217, 169, 18, 19, 137, 217, 169, 18, 19, 217, 168, 18, 19, 137, 217, 
-    168, 18, 19, 217, 167, 18, 19, 137, 217, 167, 18, 19, 217, 173, 18, 19, 
-    137, 217, 173, 18, 19, 217, 172, 18, 19, 137, 217, 172, 18, 19, 232, 207, 
-    217, 172, 18, 19, 218, 90, 18, 19, 252, 82, 218, 90, 18, 19, 137, 218, 
-    90, 18, 19, 226, 116, 217, 250, 18, 19, 227, 216, 18, 19, 228, 38, 227, 
-    216, 18, 19, 137, 235, 122, 18, 19, 227, 255, 18, 19, 227, 147, 18, 19, 
-    227, 98, 18, 19, 227, 75, 18, 19, 227, 67, 18, 19, 137, 235, 12, 18, 19, 
-    203, 18, 19, 228, 0, 18, 19, 137, 235, 188, 18, 19, 226, 251, 18, 19, 
-    137, 226, 251, 18, 19, 152, 18, 19, 137, 152, 18, 19, 128, 152, 18, 19, 
-    245, 231, 18, 19, 246, 5, 18, 19, 245, 203, 18, 19, 245, 190, 18, 19, 
-    245, 139, 18, 19, 245, 134, 18, 19, 246, 8, 18, 19, 246, 7, 18, 19, 245, 
-    77, 18, 19, 137, 245, 77, 18, 19, 246, 74, 18, 19, 222, 22, 18, 19, 233, 
-    32, 222, 22, 18, 19, 222, 2, 18, 19, 233, 32, 222, 2, 18, 19, 221, 254, 
-    18, 19, 233, 32, 221, 254, 18, 19, 221, 239, 18, 19, 221, 236, 18, 19, 
-    222, 35, 18, 19, 222, 34, 18, 19, 221, 215, 18, 19, 137, 221, 215, 18, 
-    19, 222, 37, 18, 19, 221, 17, 18, 19, 221, 16, 18, 19, 221, 15, 18, 19, 
-    221, 19, 18, 19, 221, 20, 18, 19, 220, 201, 18, 19, 220, 200, 18, 19, 
-    220, 199, 18, 19, 220, 202, 18, 19, 231, 102, 243, 162, 18, 19, 231, 102, 
-    243, 112, 18, 19, 231, 102, 243, 97, 18, 19, 231, 102, 243, 4, 18, 19, 
-    231, 102, 242, 248, 18, 19, 231, 102, 155, 18, 19, 231, 102, 243, 211, 
-    18, 19, 231, 102, 243, 225, 18, 19, 231, 101, 243, 225, 18, 19, 243, 90, 
-    18, 19, 228, 151, 18, 19, 228, 121, 18, 19, 228, 116, 18, 19, 228, 110, 
-    18, 19, 228, 105, 18, 19, 228, 155, 18, 19, 228, 154, 18, 19, 228, 163, 
-    18, 19, 221, 151, 18, 19, 221, 149, 18, 19, 221, 148, 18, 19, 221, 152, 
-    18, 19, 137, 227, 216, 18, 19, 137, 227, 147, 18, 19, 137, 227, 75, 18, 
-    19, 137, 203, 18, 19, 232, 113, 18, 19, 232, 92, 18, 19, 232, 88, 18, 19, 
-    232, 84, 18, 19, 232, 80, 18, 19, 232, 115, 18, 19, 232, 114, 18, 19, 
-    232, 117, 18, 19, 231, 215, 18, 19, 226, 116, 224, 246, 18, 19, 226, 116, 
-    224, 221, 18, 19, 226, 116, 224, 200, 18, 19, 226, 116, 225, 25, 18, 19, 
-    218, 178, 222, 22, 18, 19, 218, 178, 222, 2, 18, 19, 218, 178, 221, 239, 
-    18, 19, 218, 178, 222, 35, 18, 19, 218, 178, 222, 37, 18, 19, 235, 73, 
-    18, 19, 235, 72, 18, 19, 235, 71, 18, 19, 235, 70, 18, 19, 235, 79, 18, 
-    19, 235, 78, 18, 19, 235, 80, 18, 19, 222, 36, 222, 22, 18, 19, 222, 36, 
-    222, 2, 18, 19, 222, 36, 221, 254, 18, 19, 222, 36, 221, 239, 18, 19, 
-    222, 36, 221, 236, 18, 19, 222, 36, 222, 35, 18, 19, 222, 36, 222, 34, 
-    18, 19, 222, 36, 222, 37, 18, 19, 254, 185, 253, 204, 18, 19, 252, 50, 
-    73, 18, 19, 252, 50, 72, 18, 19, 252, 50, 74, 18, 19, 252, 50, 60, 18, 
-    19, 252, 50, 218, 227, 18, 19, 252, 50, 218, 204, 18, 19, 252, 50, 218, 
-    187, 18, 19, 252, 50, 219, 7, 18, 19, 252, 50, 232, 141, 18, 19, 252, 50, 
-    232, 62, 18, 19, 252, 50, 231, 204, 18, 19, 252, 50, 208, 18, 19, 252, 
-    50, 236, 184, 18, 19, 252, 50, 236, 113, 18, 19, 252, 50, 236, 57, 18, 
-    19, 252, 50, 175, 18, 19, 226, 116, 243, 162, 18, 19, 226, 116, 243, 112, 
-    18, 19, 226, 116, 243, 4, 18, 19, 226, 116, 155, 18, 19, 64, 244, 109, 
-    18, 19, 64, 244, 112, 18, 19, 64, 244, 116, 18, 19, 64, 244, 115, 18, 19, 
-    64, 244, 113, 18, 19, 64, 244, 125, 18, 19, 64, 227, 22, 18, 19, 64, 227, 
-    75, 18, 19, 64, 227, 216, 18, 19, 64, 227, 200, 18, 19, 64, 227, 147, 18, 
-    19, 64, 203, 18, 19, 64, 218, 165, 18, 19, 64, 218, 187, 18, 19, 64, 218, 
-    227, 18, 19, 64, 218, 224, 18, 19, 64, 218, 204, 18, 19, 64, 219, 7, 18, 
-    19, 64, 242, 147, 18, 19, 64, 242, 148, 18, 19, 64, 242, 151, 18, 19, 64, 
-    242, 150, 18, 19, 64, 242, 149, 18, 19, 64, 242, 153, 18, 19, 64, 221, 
-    223, 18, 19, 64, 221, 239, 18, 19, 64, 222, 22, 18, 19, 64, 222, 21, 18, 
-    19, 64, 222, 2, 18, 19, 64, 222, 35, 18, 19, 64, 221, 3, 18, 19, 64, 221, 
-    11, 18, 19, 64, 221, 26, 18, 19, 64, 221, 25, 18, 19, 64, 221, 12, 18, 
-    19, 64, 221, 29, 18, 19, 64, 228, 202, 18, 19, 64, 229, 37, 18, 19, 64, 
-    229, 198, 18, 19, 64, 229, 191, 18, 19, 64, 229, 108, 18, 19, 64, 187, 
-    18, 19, 64, 230, 59, 18, 19, 64, 244, 17, 18, 19, 64, 244, 68, 18, 19, 
-    64, 244, 191, 18, 19, 64, 244, 184, 18, 19, 64, 244, 103, 18, 19, 64, 
-    245, 0, 18, 19, 64, 236, 120, 18, 19, 64, 236, 125, 18, 19, 64, 236, 137, 
-    18, 19, 64, 236, 136, 18, 19, 64, 236, 130, 18, 19, 64, 236, 149, 18, 19, 
-    64, 236, 69, 18, 19, 64, 236, 70, 18, 19, 64, 236, 73, 18, 19, 64, 236, 
-    72, 18, 19, 64, 236, 71, 18, 19, 64, 236, 74, 18, 19, 64, 236, 75, 18, 
-    19, 64, 231, 144, 18, 19, 64, 231, 204, 18, 19, 64, 232, 141, 18, 19, 64, 
-    232, 139, 18, 19, 64, 232, 62, 18, 19, 64, 208, 18, 19, 64, 233, 99, 18, 
-    19, 64, 233, 136, 18, 19, 64, 234, 25, 18, 19, 64, 234, 16, 18, 19, 64, 
-    233, 196, 18, 19, 64, 196, 18, 19, 64, 217, 200, 18, 19, 64, 217, 231, 
-    18, 19, 64, 218, 25, 18, 19, 64, 218, 22, 18, 19, 64, 217, 250, 18, 19, 
-    64, 184, 18, 19, 64, 237, 43, 18, 19, 226, 116, 237, 43, 18, 19, 64, 237, 
-    59, 18, 19, 64, 237, 114, 18, 19, 64, 237, 113, 18, 19, 64, 237, 98, 18, 
-    19, 226, 116, 237, 98, 18, 19, 64, 237, 123, 18, 19, 64, 237, 72, 18, 19, 
-    64, 237, 76, 18, 19, 64, 237, 86, 18, 19, 64, 237, 85, 18, 19, 64, 237, 
-    84, 18, 19, 64, 237, 87, 18, 19, 64, 234, 231, 18, 19, 64, 235, 12, 18, 
-    19, 64, 235, 122, 18, 19, 64, 235, 118, 18, 19, 64, 235, 67, 18, 19, 64, 
-    235, 188, 18, 19, 64, 248, 171, 18, 19, 64, 248, 172, 18, 19, 64, 248, 
-    175, 18, 19, 64, 248, 174, 18, 19, 64, 248, 173, 18, 19, 64, 248, 176, 
-    18, 19, 64, 235, 69, 18, 19, 64, 235, 71, 18, 19, 64, 235, 75, 18, 19, 
-    64, 235, 74, 18, 19, 64, 235, 73, 18, 19, 64, 235, 79, 18, 19, 64, 221, 
-    146, 18, 19, 64, 221, 148, 18, 19, 64, 221, 151, 18, 19, 64, 221, 150, 
-    18, 19, 64, 221, 149, 18, 19, 64, 221, 152, 18, 19, 64, 221, 142, 18, 19, 
-    64, 221, 143, 18, 19, 64, 221, 154, 18, 19, 64, 221, 153, 18, 19, 64, 
-    221, 144, 18, 19, 64, 221, 155, 18, 19, 64, 217, 13, 18, 19, 64, 217, 21, 
-    18, 19, 64, 217, 92, 18, 19, 64, 217, 90, 18, 19, 64, 217, 42, 18, 19, 
-    64, 217, 114, 18, 19, 64, 217, 157, 18, 19, 64, 66, 217, 157, 18, 19, 64, 
-    247, 65, 18, 19, 64, 247, 66, 18, 19, 64, 247, 73, 18, 19, 64, 247, 72, 
-    18, 19, 64, 247, 68, 18, 19, 64, 247, 74, 18, 19, 64, 223, 103, 18, 19, 
-    64, 224, 26, 18, 19, 64, 226, 94, 18, 19, 64, 226, 84, 18, 19, 64, 224, 
-    140, 18, 19, 64, 226, 177, 18, 19, 64, 224, 170, 18, 19, 64, 224, 200, 
-    18, 19, 64, 224, 246, 18, 19, 64, 224, 244, 18, 19, 64, 224, 221, 18, 19, 
-    64, 225, 25, 18, 19, 64, 225, 27, 18, 19, 64, 221, 36, 18, 19, 64, 221, 
-    38, 18, 19, 64, 221, 50, 18, 19, 64, 221, 49, 18, 19, 64, 221, 39, 18, 
-    19, 64, 221, 55, 18, 19, 64, 250, 253, 18, 19, 64, 251, 11, 18, 19, 64, 
-    251, 46, 18, 19, 64, 251, 43, 18, 19, 64, 251, 31, 18, 19, 64, 251, 69, 
-    18, 19, 64, 221, 5, 18, 19, 64, 221, 6, 18, 19, 64, 221, 9, 18, 19, 64, 
-    221, 8, 18, 19, 64, 221, 7, 18, 19, 64, 221, 10, 18, 19, 251, 32, 55, 18, 
-    19, 245, 90, 223, 136, 18, 19, 228, 147, 18, 19, 232, 112, 18, 19, 231, 
-    212, 18, 19, 231, 211, 18, 19, 231, 210, 18, 19, 231, 209, 18, 19, 231, 
-    214, 18, 19, 231, 213, 18, 19, 218, 178, 221, 213, 18, 19, 218, 178, 221, 
-    212, 18, 19, 218, 178, 221, 211, 18, 19, 218, 178, 221, 210, 18, 19, 218, 
-    178, 221, 209, 18, 19, 218, 178, 221, 216, 18, 19, 218, 178, 221, 215, 
-    18, 19, 218, 178, 39, 222, 37, 18, 19, 252, 50, 219, 40, 230, 164, 223, 
-    255, 78, 230, 164, 1, 252, 122, 230, 164, 1, 234, 222, 230, 164, 1, 245, 
-    230, 230, 164, 1, 226, 161, 230, 164, 1, 232, 25, 230, 164, 1, 220, 122, 
-    230, 164, 1, 249, 185, 230, 164, 1, 221, 173, 230, 164, 1, 250, 177, 230, 
-    164, 1, 251, 89, 230, 164, 1, 233, 91, 230, 164, 1, 244, 53, 230, 164, 1, 
-    232, 105, 230, 164, 1, 223, 131, 230, 164, 1, 227, 18, 230, 164, 1, 254, 
-    193, 230, 164, 1, 230, 131, 230, 164, 1, 220, 50, 230, 164, 1, 247, 14, 
-    230, 164, 1, 237, 165, 230, 164, 1, 247, 15, 230, 164, 1, 230, 105, 230, 
-    164, 1, 220, 103, 230, 164, 1, 238, 5, 230, 164, 1, 247, 12, 230, 164, 1, 
-    229, 184, 230, 164, 245, 229, 78, 230, 164, 210, 245, 229, 78, 157, 1, 
-    245, 220, 245, 212, 245, 232, 246, 74, 157, 1, 216, 216, 157, 1, 220, 36, 
-    220, 51, 68, 157, 1, 217, 202, 157, 1, 218, 90, 157, 1, 219, 40, 157, 1, 
-    221, 218, 221, 217, 221, 234, 157, 1, 246, 118, 157, 1, 254, 106, 60, 
-    157, 1, 230, 94, 74, 157, 1, 255, 3, 60, 157, 1, 254, 219, 157, 1, 234, 
-    254, 74, 157, 1, 224, 185, 74, 157, 1, 74, 157, 1, 230, 167, 157, 1, 230, 
-    138, 157, 1, 227, 244, 227, 253, 227, 195, 152, 157, 1, 236, 195, 157, 1, 
-    251, 87, 157, 1, 236, 196, 237, 17, 157, 1, 245, 67, 157, 1, 246, 185, 
-    157, 1, 244, 187, 243, 231, 245, 67, 157, 1, 244, 220, 157, 1, 218, 160, 
-    218, 155, 219, 40, 157, 1, 243, 203, 243, 225, 157, 1, 243, 207, 243, 
-    225, 157, 1, 235, 0, 243, 225, 157, 1, 224, 188, 243, 225, 157, 1, 232, 
-    203, 231, 74, 232, 204, 207, 157, 1, 224, 186, 207, 157, 1, 247, 140, 
-    157, 1, 237, 148, 237, 152, 237, 142, 72, 157, 1, 73, 157, 1, 237, 106, 
-    237, 126, 157, 1, 244, 173, 157, 1, 235, 1, 254, 234, 157, 1, 224, 190, 
-    60, 157, 1, 237, 135, 246, 164, 157, 1, 229, 155, 229, 173, 230, 59, 157, 
-    1, 254, 162, 246, 163, 157, 1, 224, 3, 198, 157, 1, 224, 129, 234, 253, 
-    198, 157, 1, 224, 184, 198, 157, 1, 251, 202, 157, 1, 217, 157, 157, 1, 
-    221, 159, 221, 166, 220, 190, 222, 201, 157, 1, 224, 183, 222, 201, 157, 
-    1, 250, 46, 157, 1, 252, 107, 252, 110, 252, 56, 253, 204, 157, 1, 224, 
-    189, 253, 204, 157, 1, 247, 139, 157, 1, 230, 115, 157, 1, 246, 238, 246, 
-    240, 73, 157, 1, 234, 81, 234, 87, 189, 157, 1, 234, 255, 189, 157, 1, 
-    224, 187, 189, 157, 1, 235, 136, 235, 171, 235, 4, 153, 157, 1, 247, 141, 
-    157, 1, 237, 203, 157, 1, 237, 204, 157, 1, 249, 196, 249, 201, 250, 46, 
-    157, 1, 230, 90, 246, 117, 74, 157, 1, 247, 11, 157, 1, 237, 164, 157, 1, 
-    250, 63, 157, 1, 251, 160, 157, 1, 251, 98, 157, 1, 223, 161, 157, 1, 
-    234, 252, 157, 1, 224, 182, 157, 1, 242, 64, 157, 1, 228, 163, 157, 1, 
-    218, 151, 157, 224, 109, 228, 196, 157, 233, 85, 228, 196, 157, 250, 101, 
-    228, 196, 157, 254, 33, 100, 157, 220, 227, 100, 157, 252, 121, 100, 222, 
-    140, 1, 60, 222, 140, 1, 72, 222, 140, 1, 68, 222, 140, 1, 175, 222, 140, 
-    1, 245, 0, 222, 140, 1, 232, 115, 222, 140, 1, 222, 155, 222, 140, 1, 
-    249, 207, 222, 140, 1, 208, 222, 140, 1, 187, 222, 140, 1, 252, 237, 222, 
-    140, 1, 196, 222, 140, 1, 184, 222, 140, 1, 235, 188, 222, 140, 1, 219, 
-    7, 222, 140, 1, 226, 177, 222, 140, 1, 155, 222, 140, 29, 5, 72, 222, 
-    140, 29, 5, 68, 222, 140, 5, 219, 82, 243, 184, 1, 60, 243, 184, 1, 72, 
-    243, 184, 1, 68, 243, 184, 1, 175, 243, 184, 1, 245, 0, 243, 184, 1, 232, 
-    115, 243, 184, 1, 222, 155, 243, 184, 1, 249, 207, 243, 184, 1, 208, 243, 
-    184, 1, 187, 243, 184, 1, 252, 237, 243, 184, 1, 196, 243, 184, 1, 184, 
-    243, 184, 1, 203, 243, 184, 1, 235, 188, 243, 184, 1, 219, 7, 243, 184, 
-    1, 226, 177, 243, 184, 1, 155, 243, 184, 29, 5, 72, 243, 184, 29, 5, 68, 
-    243, 184, 5, 230, 14, 229, 122, 224, 109, 228, 196, 229, 122, 51, 228, 
-    196, 251, 245, 1, 60, 251, 245, 1, 72, 251, 245, 1, 68, 251, 245, 1, 175, 
-    251, 245, 1, 245, 0, 251, 245, 1, 232, 115, 251, 245, 1, 222, 155, 251, 
-    245, 1, 249, 207, 251, 245, 1, 208, 251, 245, 1, 187, 251, 245, 1, 252, 
-    237, 251, 245, 1, 196, 251, 245, 1, 184, 251, 245, 1, 203, 251, 245, 1, 
-    235, 188, 251, 245, 1, 219, 7, 251, 245, 1, 226, 177, 251, 245, 1, 155, 
-    251, 245, 29, 5, 72, 251, 245, 29, 5, 68, 222, 139, 1, 60, 222, 139, 1, 
-    72, 222, 139, 1, 68, 222, 139, 1, 175, 222, 139, 1, 245, 0, 222, 139, 1, 
-    232, 115, 222, 139, 1, 222, 155, 222, 139, 1, 249, 207, 222, 139, 1, 208, 
-    222, 139, 1, 187, 222, 139, 1, 252, 237, 222, 139, 1, 196, 222, 139, 1, 
-    184, 222, 139, 1, 235, 188, 222, 139, 1, 219, 7, 222, 139, 1, 226, 177, 
-    222, 139, 29, 5, 72, 222, 139, 29, 5, 68, 79, 1, 175, 79, 1, 236, 149, 
-    79, 1, 236, 57, 79, 1, 236, 125, 79, 1, 232, 84, 79, 1, 251, 169, 79, 1, 
-    251, 69, 79, 1, 250, 182, 79, 1, 251, 11, 79, 1, 231, 56, 79, 1, 249, 
-    207, 79, 1, 221, 19, 79, 1, 248, 167, 79, 1, 221, 15, 79, 1, 231, 207, 
-    79, 1, 222, 155, 79, 1, 222, 35, 79, 1, 101, 79, 1, 221, 239, 79, 1, 231, 
-    204, 79, 1, 252, 237, 79, 1, 229, 141, 79, 1, 229, 37, 79, 1, 229, 118, 
-    79, 1, 233, 136, 79, 1, 217, 231, 79, 1, 227, 75, 79, 1, 235, 12, 79, 1, 
-    219, 72, 79, 1, 225, 25, 79, 1, 223, 182, 79, 1, 226, 177, 79, 1, 155, 
-    79, 1, 235, 188, 79, 1, 228, 155, 79, 237, 214, 29, 228, 141, 79, 237, 
-    214, 29, 228, 154, 79, 237, 214, 29, 228, 121, 79, 237, 214, 29, 228, 
-    116, 79, 237, 214, 29, 228, 98, 79, 237, 214, 29, 228, 73, 79, 237, 214, 
-    29, 228, 61, 79, 237, 214, 29, 228, 60, 79, 237, 214, 29, 226, 243, 79, 
-    237, 214, 29, 226, 236, 79, 237, 214, 29, 234, 198, 79, 237, 214, 29, 
-    234, 189, 79, 237, 214, 29, 228, 136, 79, 237, 214, 29, 228, 147, 79, 
-    237, 214, 29, 228, 106, 220, 198, 107, 79, 237, 214, 29, 228, 106, 220, 
-    198, 103, 79, 237, 214, 29, 228, 137, 79, 29, 237, 202, 254, 69, 79, 29, 
-    237, 202, 255, 58, 79, 29, 5, 255, 58, 79, 29, 5, 72, 79, 29, 5, 237, 
-    255, 79, 29, 5, 218, 90, 79, 29, 5, 217, 166, 79, 29, 5, 68, 79, 29, 5, 
-    220, 23, 79, 29, 5, 220, 123, 79, 29, 5, 230, 167, 79, 29, 5, 184, 79, 
-    29, 5, 238, 26, 79, 29, 5, 73, 79, 29, 5, 254, 234, 79, 29, 5, 254, 196, 
-    79, 29, 5, 230, 127, 79, 29, 5, 253, 232, 79, 5, 232, 37, 79, 5, 227, 
-    214, 79, 5, 217, 176, 79, 5, 233, 55, 79, 5, 221, 80, 79, 5, 252, 203, 
-    79, 5, 227, 71, 79, 5, 221, 138, 79, 5, 236, 239, 79, 5, 254, 198, 79, 5, 
-    226, 141, 226, 137, 79, 5, 219, 79, 79, 5, 250, 179, 79, 5, 252, 183, 79, 
-    5, 236, 142, 79, 5, 252, 199, 79, 5, 251, 156, 229, 77, 235, 239, 79, 5, 
-    235, 100, 221, 122, 79, 5, 252, 96, 79, 5, 229, 120, 233, 97, 79, 5, 236, 
-    40, 79, 250, 78, 16, 227, 142, 79, 5, 253, 218, 79, 5, 253, 235, 79, 20, 
-    217, 84, 79, 20, 107, 79, 20, 103, 79, 20, 160, 79, 20, 154, 79, 20, 174, 
-    79, 20, 182, 79, 20, 191, 79, 20, 185, 79, 20, 190, 79, 16, 235, 100, 
-    253, 237, 224, 16, 79, 16, 235, 100, 253, 237, 233, 72, 79, 16, 235, 100, 
-    253, 237, 229, 76, 79, 16, 235, 100, 253, 237, 252, 123, 79, 16, 235, 
-    100, 253, 237, 251, 233, 79, 16, 235, 100, 253, 237, 229, 1, 79, 16, 235, 
-    100, 253, 237, 228, 251, 79, 16, 235, 100, 253, 237, 228, 249, 79, 16, 
-    235, 100, 253, 237, 228, 255, 79, 16, 235, 100, 253, 237, 228, 253, 77, 
-    252, 66, 77, 246, 208, 77, 250, 168, 77, 245, 90, 223, 136, 77, 250, 175, 
-    77, 245, 116, 248, 143, 77, 221, 137, 224, 21, 242, 121, 77, 224, 139, 4, 
-    252, 26, 234, 63, 77, 234, 84, 250, 168, 77, 234, 84, 245, 90, 223, 136, 
-    77, 232, 23, 77, 245, 103, 41, 226, 74, 107, 77, 245, 103, 41, 226, 74, 
-    103, 77, 245, 103, 41, 226, 74, 160, 77, 29, 225, 54, 77, 20, 217, 84, 
-    77, 20, 107, 77, 20, 103, 77, 20, 160, 77, 20, 154, 77, 20, 174, 77, 20, 
-    182, 77, 20, 191, 77, 20, 185, 77, 20, 190, 77, 1, 60, 77, 1, 73, 77, 1, 
-    72, 77, 1, 74, 77, 1, 68, 77, 1, 230, 167, 77, 1, 220, 110, 77, 1, 246, 
-    250, 77, 1, 208, 77, 1, 254, 123, 77, 1, 252, 237, 77, 1, 187, 77, 1, 
-    228, 155, 77, 1, 245, 0, 77, 1, 196, 77, 1, 235, 188, 77, 1, 226, 177, 
-    77, 1, 225, 25, 77, 1, 222, 155, 77, 1, 249, 207, 77, 1, 251, 69, 77, 1, 
-    237, 123, 77, 1, 184, 77, 1, 203, 77, 1, 219, 7, 77, 1, 246, 8, 77, 1, 
-    175, 77, 1, 236, 149, 77, 1, 221, 55, 77, 1, 217, 114, 77, 1, 243, 211, 
-    77, 1, 217, 14, 77, 1, 235, 79, 77, 1, 217, 67, 77, 1, 251, 31, 77, 1, 
-    221, 137, 171, 29, 55, 77, 1, 221, 137, 73, 77, 1, 221, 137, 72, 77, 1, 
-    221, 137, 74, 77, 1, 221, 137, 68, 77, 1, 221, 137, 230, 167, 77, 1, 221, 
-    137, 220, 110, 77, 1, 221, 137, 254, 123, 77, 1, 221, 137, 252, 237, 77, 
-    1, 221, 137, 187, 77, 1, 221, 137, 228, 155, 77, 1, 221, 137, 245, 0, 77, 
-    1, 221, 137, 196, 77, 1, 221, 137, 222, 155, 77, 1, 221, 137, 249, 207, 
-    77, 1, 221, 137, 251, 69, 77, 1, 221, 137, 237, 123, 77, 1, 221, 137, 
-    221, 55, 77, 1, 221, 137, 184, 77, 1, 221, 137, 219, 7, 77, 1, 221, 137, 
-    175, 77, 1, 221, 137, 244, 253, 77, 1, 221, 137, 243, 211, 77, 1, 221, 
-    137, 237, 97, 77, 1, 221, 137, 232, 60, 77, 1, 221, 137, 247, 74, 77, 1, 
-    224, 139, 73, 77, 1, 224, 139, 72, 77, 1, 224, 139, 237, 133, 77, 1, 224, 
-    139, 220, 110, 77, 1, 224, 139, 68, 77, 1, 224, 139, 254, 123, 77, 1, 
-    224, 139, 175, 77, 1, 224, 139, 245, 0, 77, 1, 224, 139, 155, 77, 1, 224, 
-    139, 187, 77, 1, 224, 139, 225, 25, 77, 1, 224, 139, 222, 155, 77, 1, 
-    224, 139, 249, 207, 77, 1, 224, 139, 237, 123, 77, 1, 224, 139, 246, 8, 
-    77, 1, 224, 139, 244, 253, 77, 1, 224, 139, 243, 211, 77, 1, 224, 139, 
-    221, 55, 77, 1, 224, 139, 217, 114, 77, 1, 224, 139, 228, 0, 77, 1, 224, 
-    139, 251, 69, 77, 1, 224, 139, 217, 80, 77, 1, 234, 84, 72, 77, 1, 234, 
-    84, 175, 77, 1, 234, 84, 203, 77, 1, 234, 84, 246, 8, 77, 1, 234, 84, 
-    217, 80, 77, 1, 254, 161, 244, 238, 254, 96, 107, 77, 1, 254, 161, 244, 
-    238, 219, 78, 107, 77, 1, 254, 161, 244, 238, 249, 174, 77, 1, 254, 161, 
-    244, 238, 220, 120, 77, 1, 254, 161, 244, 238, 237, 170, 220, 120, 77, 1, 
-    254, 161, 244, 238, 252, 212, 77, 1, 254, 161, 244, 238, 148, 252, 212, 
-    77, 1, 254, 161, 244, 238, 60, 77, 1, 254, 161, 244, 238, 72, 77, 1, 254, 
-    161, 244, 238, 175, 77, 1, 254, 161, 244, 238, 232, 115, 77, 1, 254, 161, 
-    244, 238, 251, 169, 77, 1, 254, 161, 244, 238, 221, 29, 77, 1, 254, 161, 
-    244, 238, 221, 19, 77, 1, 254, 161, 244, 238, 249, 132, 77, 1, 254, 161, 
-    244, 238, 231, 217, 77, 1, 254, 161, 244, 238, 222, 155, 77, 1, 254, 161, 
-    244, 238, 249, 207, 77, 1, 254, 161, 244, 238, 187, 77, 1, 254, 161, 244, 
-    238, 229, 141, 77, 1, 254, 161, 244, 238, 223, 218, 77, 1, 254, 161, 244, 
-    238, 217, 80, 77, 1, 254, 161, 244, 238, 217, 114, 77, 1, 254, 161, 244, 
-    238, 254, 202, 77, 1, 221, 137, 254, 161, 244, 238, 222, 155, 77, 1, 221, 
-    137, 254, 161, 244, 238, 217, 80, 77, 1, 234, 84, 254, 161, 244, 238, 
-    244, 125, 77, 1, 234, 84, 254, 161, 244, 238, 232, 115, 77, 1, 234, 84, 
-    254, 161, 244, 238, 251, 169, 77, 1, 234, 84, 254, 161, 244, 238, 237, 
-    103, 77, 1, 234, 84, 254, 161, 244, 238, 221, 29, 77, 1, 234, 84, 254, 
-    161, 244, 238, 249, 116, 77, 1, 234, 84, 254, 161, 244, 238, 222, 155, 
-    77, 1, 234, 84, 254, 161, 244, 238, 249, 36, 77, 1, 234, 84, 254, 161, 
-    244, 238, 223, 218, 77, 1, 234, 84, 254, 161, 244, 238, 250, 57, 77, 1, 
-    234, 84, 254, 161, 244, 238, 217, 80, 77, 1, 234, 84, 254, 161, 244, 238, 
-    217, 114, 77, 1, 254, 161, 244, 238, 144, 68, 77, 1, 254, 161, 244, 238, 
-    144, 184, 77, 1, 234, 84, 254, 161, 244, 238, 252, 94, 77, 1, 254, 161, 
-    244, 238, 249, 197, 77, 1, 234, 84, 254, 161, 244, 238, 235, 79, 18, 19, 
-    230, 63, 18, 19, 253, 212, 18, 19, 255, 14, 18, 19, 218, 229, 18, 19, 
-    229, 7, 18, 19, 229, 205, 18, 19, 228, 172, 18, 19, 222, 96, 18, 19, 236, 
-    191, 18, 19, 235, 232, 18, 19, 234, 45, 18, 19, 231, 172, 18, 19, 232, 
-    199, 18, 19, 235, 132, 18, 19, 224, 1, 18, 19, 226, 118, 18, 19, 224, 
-    175, 18, 19, 224, 249, 18, 19, 224, 150, 18, 19, 217, 208, 18, 19, 218, 
-    30, 18, 19, 227, 222, 18, 19, 231, 82, 18, 19, 230, 155, 231, 82, 18, 19, 
-    231, 81, 18, 19, 230, 155, 231, 81, 18, 19, 231, 80, 18, 19, 230, 155, 
-    231, 80, 18, 19, 231, 79, 18, 19, 230, 155, 231, 79, 18, 19, 226, 248, 
-    18, 19, 226, 247, 18, 19, 226, 246, 18, 19, 226, 245, 18, 19, 226, 244, 
-    18, 19, 226, 252, 18, 19, 230, 155, 230, 59, 18, 19, 230, 155, 222, 201, 
-    18, 19, 230, 155, 237, 17, 18, 19, 230, 155, 251, 202, 18, 19, 230, 155, 
-    189, 18, 19, 230, 155, 207, 18, 19, 230, 155, 198, 18, 19, 230, 155, 225, 
-    27, 18, 19, 247, 4, 219, 40, 18, 19, 218, 215, 219, 40, 18, 19, 39, 3, 
-    227, 93, 18, 19, 39, 227, 241, 248, 145, 18, 19, 228, 38, 226, 249, 18, 
-    19, 137, 234, 248, 18, 19, 137, 235, 187, 18, 19, 221, 214, 18, 19, 221, 
-    216, 18, 19, 221, 13, 18, 19, 221, 14, 18, 19, 221, 18, 18, 19, 221, 145, 
-    18, 19, 221, 147, 18, 19, 226, 116, 224, 155, 18, 19, 226, 116, 224, 195, 
-    18, 19, 226, 116, 242, 248, 18, 19, 64, 243, 238, 18, 19, 64, 249, 60, 
-    244, 184, 18, 19, 64, 244, 253, 18, 19, 64, 243, 243, 18, 19, 226, 116, 
-    237, 27, 18, 19, 64, 237, 25, 18, 19, 252, 139, 249, 60, 153, 18, 19, 
-    252, 139, 249, 60, 152, 18, 19, 64, 249, 55, 198, 195, 219, 59, 235, 84, 
-    195, 1, 175, 195, 1, 236, 149, 195, 1, 245, 0, 195, 1, 244, 125, 195, 1, 
-    232, 115, 195, 1, 251, 169, 195, 1, 251, 69, 195, 1, 237, 123, 195, 1, 
-    237, 103, 195, 1, 218, 47, 195, 1, 222, 155, 195, 1, 222, 35, 195, 1, 
-    249, 207, 195, 1, 249, 36, 195, 1, 208, 195, 1, 187, 195, 1, 229, 141, 
-    195, 1, 252, 237, 195, 1, 252, 94, 195, 1, 196, 195, 1, 184, 195, 1, 203, 
-    195, 1, 235, 188, 195, 1, 219, 7, 195, 1, 225, 25, 195, 1, 223, 218, 195, 
-    1, 226, 177, 195, 1, 155, 195, 29, 5, 60, 195, 29, 5, 72, 195, 29, 5, 68, 
-    195, 29, 5, 246, 250, 195, 29, 5, 254, 196, 195, 29, 5, 230, 127, 195, 
-    29, 5, 253, 232, 195, 29, 5, 73, 195, 29, 5, 74, 195, 223, 97, 1, 184, 
-    195, 223, 97, 1, 203, 195, 223, 97, 1, 219, 7, 195, 3, 1, 175, 195, 3, 1, 
-    232, 115, 195, 3, 1, 254, 95, 195, 3, 1, 222, 155, 195, 3, 1, 208, 195, 
-    3, 1, 187, 195, 3, 1, 196, 195, 3, 1, 203, 195, 3, 1, 235, 188, 195, 5, 
-    233, 89, 195, 5, 236, 173, 195, 5, 226, 176, 195, 5, 234, 248, 195, 246, 
-    95, 78, 195, 228, 82, 78, 195, 20, 217, 84, 195, 20, 107, 195, 20, 103, 
-    195, 20, 160, 195, 20, 154, 195, 20, 174, 195, 20, 182, 195, 20, 191, 
-    195, 20, 185, 195, 20, 190, 37, 235, 123, 1, 175, 37, 235, 123, 1, 218, 
-    138, 37, 235, 123, 1, 232, 115, 37, 235, 123, 1, 221, 55, 37, 235, 123, 
-    1, 226, 177, 37, 235, 123, 1, 184, 37, 235, 123, 1, 222, 155, 37, 235, 
-    123, 1, 222, 35, 37, 235, 123, 1, 235, 188, 37, 235, 123, 1, 187, 37, 
-    235, 123, 1, 229, 141, 37, 235, 123, 1, 196, 37, 235, 123, 1, 246, 8, 37, 
-    235, 123, 1, 219, 189, 37, 235, 123, 1, 155, 37, 235, 123, 1, 228, 155, 
-    37, 235, 123, 1, 236, 149, 37, 235, 123, 1, 221, 47, 37, 235, 123, 1, 
-    208, 37, 235, 123, 1, 60, 37, 235, 123, 1, 72, 37, 235, 123, 1, 246, 250, 
-    37, 235, 123, 1, 246, 239, 37, 235, 123, 1, 68, 37, 235, 123, 1, 230, 
-    127, 37, 235, 123, 1, 74, 37, 235, 123, 1, 220, 110, 37, 235, 123, 1, 73, 
-    37, 235, 123, 1, 253, 231, 37, 235, 123, 1, 254, 196, 37, 235, 123, 1, 
-    221, 130, 37, 235, 123, 1, 221, 129, 37, 235, 123, 1, 221, 128, 37, 235, 
-    123, 1, 221, 127, 37, 235, 123, 1, 221, 126, 146, 37, 151, 1, 116, 228, 
-    155, 146, 37, 151, 1, 109, 228, 155, 146, 37, 151, 1, 116, 175, 146, 37, 
-    151, 1, 116, 218, 138, 146, 37, 151, 1, 116, 232, 115, 146, 37, 151, 1, 
-    109, 175, 146, 37, 151, 1, 109, 218, 138, 146, 37, 151, 1, 109, 232, 115, 
-    146, 37, 151, 1, 116, 221, 55, 146, 37, 151, 1, 116, 226, 177, 146, 37, 
-    151, 1, 116, 184, 146, 37, 151, 1, 109, 221, 55, 146, 37, 151, 1, 109, 
-    226, 177, 146, 37, 151, 1, 109, 184, 146, 37, 151, 1, 116, 222, 155, 146, 
-    37, 151, 1, 116, 222, 35, 146, 37, 151, 1, 116, 208, 146, 37, 151, 1, 
-    109, 222, 155, 146, 37, 151, 1, 109, 222, 35, 146, 37, 151, 1, 109, 208, 
-    146, 37, 151, 1, 116, 187, 146, 37, 151, 1, 116, 229, 141, 146, 37, 151, 
-    1, 116, 196, 146, 37, 151, 1, 109, 187, 146, 37, 151, 1, 109, 229, 141, 
-    146, 37, 151, 1, 109, 196, 146, 37, 151, 1, 116, 246, 8, 146, 37, 151, 1, 
-    116, 219, 189, 146, 37, 151, 1, 116, 235, 188, 146, 37, 151, 1, 109, 246, 
-    8, 146, 37, 151, 1, 109, 219, 189, 146, 37, 151, 1, 109, 235, 188, 146, 
-    37, 151, 1, 116, 155, 146, 37, 151, 1, 116, 249, 207, 146, 37, 151, 1, 
-    116, 252, 237, 146, 37, 151, 1, 109, 155, 146, 37, 151, 1, 109, 249, 207, 
-    146, 37, 151, 1, 109, 252, 237, 146, 37, 151, 1, 116, 235, 236, 146, 37, 
-    151, 1, 116, 218, 111, 146, 37, 151, 1, 109, 235, 236, 146, 37, 151, 1, 
-    109, 218, 111, 146, 37, 151, 1, 116, 223, 102, 146, 37, 151, 1, 109, 223, 
-    102, 146, 37, 151, 29, 5, 29, 224, 181, 146, 37, 151, 29, 5, 255, 58, 
-    146, 37, 151, 29, 5, 237, 255, 146, 37, 151, 29, 5, 68, 146, 37, 151, 29, 
-    5, 220, 23, 146, 37, 151, 29, 5, 73, 146, 37, 151, 29, 5, 254, 234, 146, 
-    37, 151, 29, 5, 74, 146, 37, 151, 29, 5, 230, 185, 146, 37, 151, 29, 5, 
-    220, 110, 146, 37, 151, 29, 5, 253, 212, 146, 37, 151, 29, 5, 255, 14, 
-    146, 37, 151, 29, 5, 220, 16, 146, 37, 151, 29, 5, 230, 63, 146, 37, 151, 
-    29, 5, 230, 182, 146, 37, 151, 29, 5, 220, 107, 146, 37, 151, 29, 5, 237, 
-    133, 146, 37, 151, 1, 39, 216, 216, 146, 37, 151, 1, 39, 232, 117, 146, 
-    37, 151, 1, 39, 207, 146, 37, 151, 1, 39, 189, 146, 37, 151, 1, 39, 237, 
-    17, 146, 37, 151, 1, 39, 250, 46, 146, 37, 151, 1, 39, 253, 204, 146, 37, 
-    151, 145, 234, 67, 146, 37, 151, 145, 234, 66, 146, 37, 151, 20, 217, 84, 
-    146, 37, 151, 20, 107, 146, 37, 151, 20, 103, 146, 37, 151, 20, 160, 146, 
-    37, 151, 20, 154, 146, 37, 151, 20, 174, 146, 37, 151, 20, 182, 146, 37, 
-    151, 20, 191, 146, 37, 151, 20, 185, 146, 37, 151, 20, 190, 146, 37, 151, 
-    83, 20, 107, 146, 37, 151, 5, 235, 177, 146, 37, 151, 5, 235, 176, 79, 
-    16, 229, 211, 79, 16, 233, 73, 236, 55, 79, 16, 229, 77, 236, 55, 79, 16, 
-    252, 124, 236, 55, 79, 16, 251, 234, 236, 55, 79, 16, 229, 2, 236, 55, 
-    79, 16, 228, 252, 236, 55, 79, 16, 228, 250, 236, 55, 79, 16, 229, 0, 
-    236, 55, 79, 16, 228, 254, 236, 55, 79, 16, 249, 163, 236, 55, 79, 16, 
-    249, 159, 236, 55, 79, 16, 249, 158, 236, 55, 79, 16, 249, 161, 236, 55, 
-    79, 16, 249, 160, 236, 55, 79, 16, 249, 157, 236, 55, 79, 16, 220, 230, 
-    79, 16, 233, 73, 227, 70, 79, 16, 229, 77, 227, 70, 79, 16, 252, 124, 
-    227, 70, 79, 16, 251, 234, 227, 70, 79, 16, 229, 2, 227, 70, 79, 16, 228, 
-    252, 227, 70, 79, 16, 228, 250, 227, 70, 79, 16, 229, 0, 227, 70, 79, 16, 
-    228, 254, 227, 70, 79, 16, 249, 163, 227, 70, 79, 16, 249, 159, 227, 70, 
-    79, 16, 249, 158, 227, 70, 79, 16, 249, 161, 227, 70, 79, 16, 249, 160, 
-    227, 70, 79, 16, 249, 157, 227, 70, 251, 246, 1, 175, 251, 246, 1, 245, 
-    0, 251, 246, 1, 232, 115, 251, 246, 1, 232, 87, 251, 246, 1, 187, 251, 
-    246, 1, 252, 237, 251, 246, 1, 196, 251, 246, 1, 233, 102, 251, 246, 1, 
-    222, 155, 251, 246, 1, 249, 207, 251, 246, 1, 208, 251, 246, 1, 231, 171, 
-    251, 246, 1, 251, 169, 251, 246, 1, 237, 123, 251, 246, 1, 231, 77, 251, 
-    246, 1, 231, 75, 251, 246, 1, 184, 251, 246, 1, 203, 251, 246, 1, 235, 
-    188, 251, 246, 1, 219, 189, 251, 246, 1, 226, 177, 251, 246, 1, 60, 251, 
-    246, 1, 155, 251, 246, 29, 5, 72, 251, 246, 29, 5, 68, 251, 246, 29, 5, 
-    73, 251, 246, 29, 5, 74, 251, 246, 29, 5, 254, 234, 251, 246, 230, 24, 
-    251, 246, 246, 190, 117, 226, 86, 37, 83, 1, 116, 175, 37, 83, 1, 116, 
-    236, 149, 37, 83, 1, 116, 235, 224, 37, 83, 1, 109, 175, 37, 83, 1, 109, 
-    235, 224, 37, 83, 1, 109, 236, 149, 37, 83, 1, 232, 115, 37, 83, 1, 116, 
-    251, 169, 37, 83, 1, 116, 251, 69, 37, 83, 1, 109, 251, 169, 37, 83, 1, 
-    109, 226, 177, 37, 83, 1, 109, 251, 69, 37, 83, 1, 231, 77, 37, 83, 1, 
-    227, 227, 37, 83, 1, 116, 227, 225, 37, 83, 1, 249, 207, 37, 83, 1, 109, 
-    227, 225, 37, 83, 1, 227, 235, 37, 83, 1, 116, 222, 155, 37, 83, 1, 116, 
-    222, 35, 37, 83, 1, 109, 222, 155, 37, 83, 1, 109, 222, 35, 37, 83, 1, 
-    208, 37, 83, 1, 252, 237, 37, 83, 1, 116, 187, 37, 83, 1, 116, 229, 141, 
-    37, 83, 1, 116, 246, 8, 37, 83, 1, 109, 187, 37, 83, 1, 109, 246, 8, 37, 
-    83, 1, 109, 229, 141, 37, 83, 1, 196, 37, 83, 1, 109, 184, 37, 83, 1, 
-    116, 184, 37, 83, 1, 203, 37, 83, 1, 227, 19, 37, 83, 1, 235, 188, 37, 
-    83, 1, 234, 227, 37, 83, 1, 219, 7, 37, 83, 1, 116, 225, 25, 37, 83, 1, 
-    116, 223, 218, 37, 83, 1, 116, 226, 177, 37, 83, 1, 116, 155, 37, 83, 1, 
-    235, 17, 37, 83, 1, 60, 37, 83, 1, 109, 155, 37, 83, 1, 72, 37, 83, 1, 
-    237, 255, 37, 83, 1, 68, 37, 83, 1, 220, 23, 37, 83, 1, 246, 250, 37, 83, 
-    1, 230, 127, 37, 83, 1, 235, 177, 37, 83, 1, 244, 32, 226, 177, 37, 83, 
-    250, 147, 5, 128, 203, 37, 83, 250, 147, 5, 128, 235, 188, 37, 83, 250, 
-    147, 5, 235, 189, 222, 118, 235, 167, 37, 83, 5, 234, 100, 236, 230, 235, 
-    167, 37, 83, 250, 147, 5, 39, 232, 115, 37, 83, 250, 147, 5, 109, 187, 
-    37, 83, 250, 147, 5, 116, 227, 226, 156, 109, 187, 37, 83, 250, 147, 5, 
-    196, 37, 83, 250, 147, 5, 252, 237, 37, 83, 250, 147, 5, 226, 177, 37, 
-    83, 5, 226, 158, 37, 83, 29, 5, 60, 37, 83, 29, 5, 234, 100, 226, 127, 
-    37, 83, 29, 5, 255, 58, 37, 83, 29, 5, 222, 123, 255, 58, 37, 83, 29, 5, 
-    72, 37, 83, 29, 5, 237, 255, 37, 83, 29, 5, 220, 110, 37, 83, 29, 5, 220, 
-    22, 37, 83, 29, 5, 68, 37, 83, 29, 5, 220, 23, 37, 83, 29, 5, 74, 37, 83, 
-    29, 5, 230, 186, 56, 37, 83, 29, 5, 230, 63, 37, 83, 29, 5, 73, 37, 83, 
-    29, 5, 254, 234, 37, 83, 29, 5, 230, 127, 37, 83, 29, 5, 254, 196, 37, 
-    83, 29, 5, 83, 254, 196, 37, 83, 29, 5, 230, 186, 50, 37, 83, 5, 234, 
-    100, 236, 229, 37, 83, 5, 221, 131, 37, 83, 5, 221, 130, 37, 83, 5, 236, 
-    118, 221, 129, 37, 83, 5, 236, 118, 221, 128, 37, 83, 5, 236, 118, 221, 
-    127, 37, 83, 5, 228, 3, 243, 210, 37, 83, 5, 234, 100, 226, 148, 37, 83, 
-    5, 236, 117, 236, 215, 37, 83, 36, 250, 93, 248, 145, 37, 83, 242, 243, 
-    20, 217, 84, 37, 83, 242, 243, 20, 107, 37, 83, 242, 243, 20, 103, 37, 
-    83, 242, 243, 20, 160, 37, 83, 242, 243, 20, 154, 37, 83, 242, 243, 20, 
-    174, 37, 83, 242, 243, 20, 182, 37, 83, 242, 243, 20, 191, 37, 83, 242, 
-    243, 20, 185, 37, 83, 242, 243, 20, 190, 37, 83, 83, 20, 217, 84, 37, 83, 
-    83, 20, 107, 37, 83, 83, 20, 103, 37, 83, 83, 20, 160, 37, 83, 83, 20, 
-    154, 37, 83, 83, 20, 174, 37, 83, 83, 20, 182, 37, 83, 83, 20, 191, 37, 
-    83, 83, 20, 185, 37, 83, 83, 20, 190, 37, 83, 5, 218, 203, 37, 83, 5, 
-    218, 202, 37, 83, 5, 226, 121, 37, 83, 5, 236, 163, 37, 83, 5, 242, 180, 
-    37, 83, 5, 248, 157, 37, 83, 5, 210, 227, 59, 227, 235, 37, 83, 5, 234, 
-    100, 218, 48, 37, 83, 5, 237, 1, 37, 83, 5, 237, 0, 37, 83, 5, 226, 126, 
-    37, 83, 5, 226, 125, 37, 83, 5, 243, 186, 37, 83, 5, 251, 166, 94, 5, 
-    220, 97, 227, 144, 94, 5, 220, 97, 251, 148, 94, 5, 251, 95, 94, 5, 223, 
-    51, 94, 5, 252, 64, 94, 1, 254, 180, 94, 1, 254, 181, 222, 82, 94, 1, 
-    237, 251, 94, 1, 237, 252, 222, 82, 94, 1, 220, 100, 94, 1, 220, 101, 
-    222, 82, 94, 1, 228, 3, 227, 183, 94, 1, 228, 3, 227, 184, 222, 82, 94, 
-    1, 235, 189, 235, 95, 94, 1, 235, 189, 235, 96, 222, 82, 94, 1, 246, 222, 
-    94, 1, 254, 194, 94, 1, 230, 153, 94, 1, 230, 154, 222, 82, 94, 1, 175, 
-    94, 1, 206, 234, 103, 94, 1, 245, 0, 94, 1, 245, 1, 244, 58, 94, 1, 232, 
-    115, 94, 1, 251, 169, 94, 1, 251, 170, 235, 179, 94, 1, 237, 123, 94, 1, 
-    237, 124, 237, 107, 94, 1, 231, 77, 94, 1, 222, 156, 235, 138, 94, 1, 
-    222, 156, 233, 68, 234, 103, 94, 1, 249, 208, 233, 68, 254, 148, 94, 1, 
-    249, 208, 233, 68, 234, 103, 94, 1, 232, 238, 227, 238, 94, 1, 222, 155, 
-    94, 1, 222, 156, 222, 99, 94, 1, 249, 207, 94, 1, 249, 208, 234, 108, 94, 
-    1, 208, 94, 1, 187, 94, 1, 230, 44, 236, 225, 94, 1, 252, 237, 94, 1, 
-    252, 238, 236, 174, 94, 1, 196, 94, 1, 184, 94, 1, 203, 94, 1, 235, 188, 
-    94, 1, 219, 7, 94, 1, 226, 178, 226, 164, 94, 1, 226, 178, 226, 132, 94, 
-    1, 226, 177, 94, 1, 155, 94, 5, 227, 177, 94, 29, 5, 222, 82, 94, 29, 5, 
-    220, 96, 94, 29, 5, 220, 97, 226, 129, 94, 29, 5, 223, 77, 94, 29, 5, 
-    223, 78, 237, 243, 94, 29, 5, 228, 3, 227, 183, 94, 29, 5, 228, 3, 227, 
-    184, 222, 82, 94, 29, 5, 235, 189, 235, 95, 94, 29, 5, 235, 189, 235, 96, 
-    222, 82, 94, 29, 5, 222, 124, 94, 29, 5, 222, 125, 227, 183, 94, 29, 5, 
-    222, 125, 222, 82, 94, 29, 5, 222, 125, 227, 184, 222, 82, 94, 29, 5, 
-    229, 171, 94, 29, 5, 229, 172, 222, 82, 94, 254, 240, 254, 239, 94, 1, 
-    236, 247, 226, 128, 94, 1, 236, 122, 226, 128, 94, 1, 220, 183, 226, 128, 
-    94, 1, 246, 245, 226, 128, 94, 1, 219, 166, 226, 128, 94, 1, 217, 105, 
-    226, 128, 94, 1, 253, 246, 226, 128, 94, 20, 217, 84, 94, 20, 107, 94, 
-    20, 103, 94, 20, 160, 94, 20, 154, 94, 20, 174, 94, 20, 182, 94, 20, 191, 
-    94, 20, 185, 94, 20, 190, 94, 229, 254, 94, 230, 19, 94, 218, 193, 94, 
-    251, 132, 230, 13, 94, 251, 132, 224, 122, 94, 251, 132, 229, 228, 94, 
-    230, 18, 94, 26, 16, 248, 151, 94, 26, 16, 249, 59, 94, 26, 16, 247, 97, 
-    94, 26, 16, 249, 165, 94, 26, 16, 249, 166, 223, 51, 94, 26, 16, 248, 
-    218, 94, 26, 16, 249, 200, 94, 26, 16, 249, 44, 94, 26, 16, 249, 186, 94, 
-    26, 16, 249, 166, 244, 186, 94, 26, 16, 36, 222, 79, 94, 26, 16, 36, 246, 
-    188, 94, 26, 16, 36, 236, 169, 94, 26, 16, 36, 236, 171, 94, 26, 16, 36, 
-    237, 111, 94, 26, 16, 36, 236, 170, 2, 237, 111, 94, 26, 16, 36, 236, 
-    172, 2, 237, 111, 94, 26, 16, 36, 252, 112, 94, 26, 16, 36, 244, 61, 94, 
-    26, 16, 227, 107, 230, 119, 247, 107, 94, 26, 16, 227, 107, 230, 119, 
-    249, 198, 94, 26, 16, 227, 107, 250, 197, 220, 251, 94, 26, 16, 227, 107, 
-    250, 197, 222, 131, 94, 26, 16, 235, 113, 230, 119, 230, 9, 94, 26, 16, 
-    235, 113, 230, 119, 228, 195, 94, 26, 16, 235, 113, 250, 197, 229, 54, 
-    94, 26, 16, 235, 113, 250, 197, 229, 46, 94, 26, 16, 235, 113, 230, 119, 
-    229, 72, 223, 67, 5, 229, 251, 223, 67, 5, 230, 5, 223, 67, 5, 230, 3, 
-    223, 67, 1, 60, 223, 67, 1, 72, 223, 67, 1, 68, 223, 67, 1, 254, 234, 
-    223, 67, 1, 74, 223, 67, 1, 73, 223, 67, 1, 246, 115, 223, 67, 1, 175, 
-    223, 67, 1, 228, 155, 223, 67, 1, 245, 0, 223, 67, 1, 232, 115, 223, 67, 
-    1, 251, 169, 223, 67, 1, 237, 123, 223, 67, 1, 217, 114, 223, 67, 1, 231, 
-    77, 223, 67, 1, 222, 155, 223, 67, 1, 249, 207, 223, 67, 1, 208, 223, 67, 
-    1, 187, 223, 67, 1, 246, 8, 223, 67, 1, 219, 189, 223, 67, 1, 252, 237, 
-    223, 67, 1, 196, 223, 67, 1, 184, 223, 67, 1, 203, 223, 67, 1, 235, 188, 
-    223, 67, 1, 219, 7, 223, 67, 1, 226, 177, 223, 67, 1, 218, 138, 223, 67, 
-    1, 155, 223, 67, 250, 147, 5, 230, 16, 223, 67, 250, 147, 5, 229, 253, 
-    223, 67, 250, 147, 5, 229, 250, 223, 67, 29, 5, 230, 8, 223, 67, 29, 5, 
-    229, 249, 223, 67, 29, 5, 230, 11, 223, 67, 29, 5, 230, 2, 223, 67, 29, 
-    5, 230, 17, 223, 67, 29, 5, 230, 10, 223, 67, 5, 230, 20, 223, 67, 1, 
-    236, 149, 223, 67, 1, 223, 20, 223, 67, 20, 217, 84, 223, 67, 20, 107, 
-    223, 67, 20, 103, 223, 67, 20, 160, 223, 67, 20, 154, 223, 67, 20, 174, 
-    223, 67, 20, 182, 223, 67, 20, 191, 223, 67, 20, 185, 223, 67, 20, 190, 
-    169, 1, 175, 169, 1, 236, 67, 169, 1, 236, 149, 169, 1, 245, 0, 169, 1, 
-    244, 77, 169, 1, 232, 115, 169, 1, 251, 169, 169, 1, 251, 69, 169, 1, 
-    237, 123, 169, 1, 231, 77, 169, 1, 222, 155, 169, 1, 222, 35, 169, 1, 
-    249, 207, 169, 1, 208, 169, 1, 187, 169, 1, 229, 58, 169, 1, 229, 141, 
-    169, 1, 246, 8, 169, 1, 245, 165, 169, 1, 252, 237, 169, 1, 252, 54, 169, 
-    1, 196, 169, 1, 233, 142, 169, 1, 221, 55, 169, 1, 221, 47, 169, 1, 247, 
-    74, 169, 1, 184, 169, 1, 203, 169, 1, 235, 188, 169, 1, 155, 169, 1, 243, 
-    89, 169, 1, 219, 189, 169, 1, 226, 177, 169, 1, 225, 25, 169, 1, 219, 7, 
-    169, 1, 60, 169, 223, 97, 1, 184, 169, 223, 97, 1, 203, 169, 29, 5, 255, 
-    58, 169, 29, 5, 72, 169, 29, 5, 74, 169, 29, 5, 230, 127, 169, 29, 5, 68, 
-    169, 29, 5, 220, 23, 169, 29, 5, 73, 169, 250, 147, 5, 237, 17, 169, 250, 
-    147, 5, 189, 169, 250, 147, 5, 153, 169, 250, 147, 5, 207, 169, 250, 147, 
-    5, 230, 59, 169, 250, 147, 5, 152, 169, 250, 147, 5, 222, 201, 169, 250, 
-    147, 5, 231, 62, 169, 250, 147, 5, 236, 229, 169, 5, 227, 236, 169, 5, 
-    231, 112, 169, 228, 197, 222, 154, 169, 228, 197, 231, 69, 221, 208, 222, 
-    154, 169, 228, 197, 251, 74, 169, 228, 197, 221, 42, 251, 74, 169, 228, 
-    197, 221, 41, 169, 20, 217, 84, 169, 20, 107, 169, 20, 103, 169, 20, 160, 
-    169, 20, 154, 169, 20, 174, 169, 20, 182, 169, 20, 191, 169, 20, 185, 
-    169, 20, 190, 169, 1, 221, 29, 169, 1, 221, 19, 169, 1, 249, 132, 230, 
-    151, 251, 26, 20, 217, 84, 230, 151, 251, 26, 20, 107, 230, 151, 251, 26, 
-    20, 103, 230, 151, 251, 26, 20, 160, 230, 151, 251, 26, 20, 154, 230, 
-    151, 251, 26, 20, 174, 230, 151, 251, 26, 20, 182, 230, 151, 251, 26, 20, 
-    191, 230, 151, 251, 26, 20, 185, 230, 151, 251, 26, 20, 190, 230, 151, 
-    251, 26, 1, 235, 188, 230, 151, 251, 26, 1, 253, 244, 230, 151, 251, 26, 
-    1, 254, 209, 230, 151, 251, 26, 1, 254, 123, 230, 151, 251, 26, 1, 254, 
-    175, 230, 151, 251, 26, 1, 235, 187, 230, 151, 251, 26, 1, 255, 20, 230, 
-    151, 251, 26, 1, 255, 21, 230, 151, 251, 26, 1, 255, 19, 230, 151, 251, 
-    26, 1, 255, 15, 230, 151, 251, 26, 1, 235, 67, 230, 151, 251, 26, 1, 237, 
-    151, 230, 151, 251, 26, 1, 238, 0, 230, 151, 251, 26, 1, 237, 167, 230, 
-    151, 251, 26, 1, 237, 156, 230, 151, 251, 26, 1, 234, 231, 230, 151, 251, 
-    26, 1, 220, 117, 230, 151, 251, 26, 1, 220, 115, 230, 151, 251, 26, 1, 
-    220, 68, 230, 151, 251, 26, 1, 220, 16, 230, 151, 251, 26, 1, 235, 122, 
-    230, 151, 251, 26, 1, 246, 162, 230, 151, 251, 26, 1, 246, 253, 230, 151, 
-    251, 26, 1, 246, 197, 230, 151, 251, 26, 1, 246, 142, 230, 151, 251, 26, 
-    1, 235, 12, 230, 151, 251, 26, 1, 230, 89, 230, 151, 251, 26, 1, 230, 
-    181, 230, 151, 251, 26, 1, 230, 79, 230, 151, 251, 26, 1, 230, 161, 230, 
-    151, 251, 26, 233, 100, 221, 1, 230, 151, 251, 26, 244, 251, 221, 2, 230, 
-    151, 251, 26, 233, 98, 221, 2, 230, 151, 251, 26, 227, 193, 230, 151, 
-    251, 26, 229, 139, 230, 151, 251, 26, 254, 201, 230, 151, 251, 26, 228, 
-    197, 233, 96, 230, 151, 251, 26, 228, 197, 51, 233, 96, 219, 162, 145, 
-    236, 211, 219, 162, 145, 225, 2, 219, 162, 145, 228, 241, 219, 162, 5, 
-    232, 39, 219, 162, 5, 218, 56, 233, 191, 223, 39, 219, 162, 145, 218, 56, 
-    254, 206, 237, 214, 223, 39, 219, 162, 145, 218, 56, 237, 214, 223, 39, 
-    219, 162, 145, 218, 56, 236, 199, 237, 214, 223, 39, 219, 162, 145, 251, 
-    149, 56, 219, 162, 145, 218, 56, 236, 199, 237, 214, 223, 40, 226, 106, 
-    219, 162, 145, 51, 223, 39, 219, 162, 145, 221, 78, 223, 39, 219, 162, 
-    145, 236, 199, 254, 97, 219, 162, 145, 61, 56, 219, 162, 145, 124, 188, 
-    56, 219, 162, 145, 148, 188, 56, 219, 162, 145, 227, 99, 236, 210, 237, 
-    214, 223, 39, 219, 162, 145, 253, 242, 237, 214, 223, 39, 219, 162, 5, 
-    219, 78, 223, 39, 219, 162, 5, 219, 78, 220, 112, 219, 162, 5, 210, 219, 
-    78, 220, 112, 219, 162, 5, 219, 78, 254, 97, 219, 162, 5, 210, 219, 78, 
-    254, 97, 219, 162, 5, 219, 78, 220, 113, 2, 222, 135, 219, 162, 5, 219, 
-    78, 254, 98, 2, 222, 135, 219, 162, 5, 254, 96, 254, 105, 219, 162, 5, 
-    254, 96, 252, 222, 219, 162, 5, 254, 96, 219, 184, 219, 162, 5, 254, 96, 
-    219, 185, 2, 222, 135, 219, 162, 5, 221, 162, 219, 162, 5, 243, 123, 171, 
-    254, 95, 219, 162, 5, 171, 254, 95, 219, 162, 5, 227, 24, 171, 254, 95, 
-    219, 162, 5, 254, 96, 220, 119, 233, 90, 219, 162, 5, 254, 46, 7, 1, 3, 
-    6, 60, 7, 1, 3, 6, 254, 234, 7, 3, 1, 215, 254, 234, 7, 1, 3, 6, 252, 
-    196, 253, 204, 7, 1, 3, 6, 251, 202, 7, 1, 3, 6, 250, 46, 7, 1, 3, 6, 
-    246, 118, 7, 1, 3, 6, 73, 7, 3, 1, 215, 230, 119, 73, 7, 3, 1, 215, 72, 
-    7, 1, 3, 6, 237, 126, 7, 1, 3, 6, 237, 17, 7, 1, 3, 6, 235, 202, 2, 92, 
-    7, 1, 3, 6, 189, 7, 1, 3, 6, 210, 207, 7, 1, 3, 6, 74, 7, 1, 3, 6, 230, 
-    119, 74, 7, 3, 1, 224, 136, 74, 7, 3, 1, 224, 136, 230, 119, 74, 7, 3, 1, 
-    224, 136, 142, 2, 92, 7, 3, 1, 215, 230, 167, 7, 1, 3, 6, 230, 86, 7, 3, 
-    1, 221, 120, 144, 74, 7, 3, 1, 252, 29, 144, 74, 7, 1, 3, 6, 230, 59, 7, 
-    1, 3, 6, 210, 152, 7, 1, 3, 6, 215, 152, 7, 1, 3, 6, 222, 201, 7, 1, 3, 
-    6, 68, 7, 3, 1, 224, 136, 68, 7, 3, 1, 224, 136, 249, 12, 68, 7, 3, 1, 
-    224, 136, 215, 189, 7, 1, 3, 6, 216, 216, 7, 1, 3, 6, 219, 40, 7, 1, 3, 
-    6, 217, 157, 7, 1, 3, 6, 246, 76, 7, 1, 219, 70, 235, 144, 223, 241, 7, 
-    1, 254, 191, 23, 1, 3, 6, 244, 231, 23, 1, 3, 6, 235, 156, 23, 1, 3, 6, 
-    229, 108, 23, 1, 3, 6, 227, 149, 23, 1, 3, 6, 228, 212, 31, 1, 3, 6, 246, 
-    217, 58, 1, 6, 60, 58, 1, 6, 254, 234, 58, 1, 6, 253, 204, 58, 1, 6, 252, 
-    196, 253, 204, 58, 1, 6, 250, 46, 58, 1, 6, 73, 58, 1, 6, 210, 73, 58, 1, 
-    6, 245, 67, 58, 1, 6, 243, 225, 58, 1, 6, 72, 58, 1, 6, 237, 126, 58, 1, 
-    6, 237, 17, 58, 1, 6, 153, 58, 1, 6, 189, 58, 1, 6, 207, 58, 1, 6, 210, 
-    207, 58, 1, 6, 74, 58, 1, 6, 230, 86, 58, 1, 6, 230, 59, 58, 1, 6, 152, 
-    58, 1, 6, 222, 201, 58, 1, 6, 68, 58, 1, 6, 219, 40, 58, 1, 3, 60, 58, 1, 
-    3, 215, 60, 58, 1, 3, 254, 146, 58, 1, 3, 215, 254, 234, 58, 1, 3, 253, 
-    204, 58, 1, 3, 250, 46, 58, 1, 3, 73, 58, 1, 3, 226, 104, 58, 1, 3, 230, 
-    119, 73, 58, 1, 3, 215, 230, 119, 73, 58, 1, 3, 245, 67, 58, 1, 3, 215, 
-    72, 58, 1, 3, 237, 17, 58, 1, 3, 189, 58, 1, 3, 246, 185, 58, 1, 3, 74, 
-    58, 1, 3, 230, 119, 74, 58, 1, 3, 221, 120, 144, 74, 58, 1, 3, 252, 29, 
-    144, 74, 58, 1, 3, 230, 59, 58, 1, 3, 222, 201, 58, 1, 3, 68, 58, 1, 3, 
-    224, 136, 68, 58, 1, 3, 215, 189, 58, 1, 3, 216, 216, 58, 1, 3, 254, 191, 
-    58, 1, 3, 252, 102, 58, 1, 3, 23, 244, 231, 58, 1, 3, 249, 62, 58, 1, 3, 
-    23, 229, 129, 58, 1, 3, 251, 31, 7, 223, 94, 3, 1, 72, 7, 223, 94, 3, 1, 
-    152, 7, 223, 94, 3, 1, 68, 7, 223, 94, 3, 1, 216, 216, 23, 223, 94, 3, 1, 
-    252, 102, 23, 223, 94, 3, 1, 244, 231, 23, 223, 94, 3, 1, 227, 149, 23, 
-    223, 94, 3, 1, 229, 129, 23, 223, 94, 3, 1, 251, 31, 7, 3, 1, 220, 110, 
-    7, 3, 1, 49, 2, 233, 193, 221, 179, 7, 3, 1, 250, 47, 2, 233, 193, 221, 
-    179, 7, 3, 1, 246, 75, 2, 233, 193, 221, 179, 7, 3, 1, 234, 187, 2, 233, 
-    193, 221, 179, 7, 3, 1, 233, 34, 2, 233, 193, 221, 179, 7, 3, 1, 230, 60, 
-    2, 233, 193, 221, 179, 7, 3, 1, 228, 39, 2, 233, 193, 221, 179, 7, 3, 1, 
-    228, 39, 2, 245, 174, 25, 233, 193, 221, 179, 7, 3, 1, 226, 235, 2, 233, 
-    193, 221, 179, 7, 3, 1, 222, 202, 2, 233, 193, 221, 179, 7, 3, 1, 217, 
-    158, 2, 233, 193, 221, 179, 7, 3, 1, 215, 245, 67, 58, 1, 31, 246, 197, 
-    7, 3, 1, 237, 188, 245, 67, 7, 3, 1, 222, 38, 2, 223, 121, 7, 3, 6, 1, 
-    242, 107, 2, 92, 7, 3, 1, 237, 163, 2, 92, 7, 3, 1, 230, 60, 2, 92, 7, 3, 
-    6, 1, 105, 2, 92, 7, 3, 1, 220, 58, 2, 92, 7, 3, 1, 49, 2, 230, 29, 96, 
-    7, 3, 1, 250, 47, 2, 230, 29, 96, 7, 3, 1, 246, 75, 2, 230, 29, 96, 7, 3, 
-    1, 245, 68, 2, 230, 29, 96, 7, 3, 1, 237, 18, 2, 230, 29, 96, 7, 3, 1, 
-    235, 202, 2, 230, 29, 96, 7, 3, 1, 234, 187, 2, 230, 29, 96, 7, 3, 1, 
-    233, 34, 2, 230, 29, 96, 7, 3, 1, 230, 60, 2, 230, 29, 96, 7, 3, 1, 228, 
-    39, 2, 230, 29, 96, 7, 3, 1, 226, 235, 2, 230, 29, 96, 7, 3, 1, 246, 134, 
-    2, 230, 29, 96, 7, 3, 1, 220, 11, 2, 230, 29, 96, 7, 3, 1, 218, 152, 2, 
-    230, 29, 96, 7, 3, 1, 217, 158, 2, 230, 29, 96, 7, 3, 1, 112, 2, 227, 
-    164, 96, 7, 3, 1, 254, 147, 2, 227, 164, 96, 7, 3, 1, 250, 47, 2, 242, 
-    247, 25, 222, 135, 7, 3, 1, 178, 2, 227, 164, 96, 7, 3, 1, 230, 119, 178, 
-    2, 227, 164, 96, 7, 3, 1, 210, 230, 119, 178, 2, 227, 164, 96, 7, 3, 1, 
-    226, 105, 2, 227, 164, 96, 7, 3, 1, 242, 107, 2, 227, 164, 96, 7, 3, 1, 
-    230, 119, 142, 2, 227, 164, 96, 7, 3, 1, 246, 134, 2, 227, 164, 96, 7, 3, 
-    1, 105, 2, 227, 164, 96, 7, 3, 1, 246, 77, 2, 227, 164, 96, 58, 1, 3, 
-    215, 254, 146, 58, 1, 3, 251, 202, 58, 1, 3, 251, 203, 2, 250, 80, 58, 1, 
-    3, 246, 118, 58, 1, 3, 210, 230, 119, 73, 58, 1, 3, 246, 74, 58, 1, 3, 
-    248, 144, 237, 127, 2, 92, 58, 1, 3, 102, 245, 67, 58, 1, 3, 215, 243, 
-    225, 58, 1, 3, 242, 107, 2, 92, 58, 1, 3, 237, 162, 58, 1, 3, 6, 72, 58, 
-    1, 3, 6, 242, 107, 2, 92, 58, 1, 3, 237, 127, 2, 250, 97, 58, 1, 3, 235, 
-    202, 2, 227, 164, 96, 58, 1, 3, 235, 202, 2, 230, 29, 96, 58, 1, 3, 6, 
-    153, 58, 1, 3, 234, 187, 2, 96, 58, 1, 3, 215, 234, 187, 2, 171, 235, 
-    106, 58, 1, 3, 233, 34, 2, 42, 96, 58, 1, 3, 233, 34, 2, 227, 164, 96, 
-    58, 1, 3, 6, 207, 58, 1, 3, 252, 196, 74, 58, 1, 3, 229, 129, 58, 1, 3, 
-    226, 235, 2, 96, 58, 1, 3, 246, 133, 58, 1, 3, 222, 202, 2, 230, 29, 96, 
-    58, 1, 3, 105, 135, 58, 1, 3, 220, 57, 58, 1, 3, 6, 68, 58, 1, 3, 220, 
-    11, 2, 96, 58, 1, 3, 215, 216, 216, 58, 1, 3, 217, 157, 58, 1, 3, 217, 
-    158, 2, 227, 164, 96, 58, 1, 3, 217, 158, 2, 250, 80, 58, 1, 3, 246, 76, 
-    58, 1, 3, 222, 6, 36, 247, 143, 244, 37, 255, 0, 36, 247, 143, 254, 248, 
-    255, 0, 36, 224, 36, 56, 36, 223, 45, 78, 36, 234, 114, 36, 244, 34, 36, 
-    234, 112, 36, 254, 246, 36, 244, 35, 36, 254, 247, 36, 7, 3, 1, 228, 39, 
-    56, 36, 252, 7, 36, 234, 113, 36, 51, 250, 217, 50, 36, 230, 163, 50, 36, 
-    217, 33, 56, 36, 237, 152, 56, 36, 220, 51, 50, 36, 220, 35, 50, 36, 7, 
-    3, 1, 245, 154, 230, 119, 112, 50, 36, 7, 3, 1, 254, 234, 36, 7, 3, 1, 
-    254, 93, 36, 7, 3, 1, 253, 220, 36, 7, 3, 1, 251, 203, 251, 92, 36, 7, 3, 
-    1, 237, 188, 250, 46, 36, 7, 3, 1, 246, 118, 36, 7, 3, 1, 245, 67, 36, 7, 
-    1, 3, 6, 245, 67, 36, 7, 3, 1, 237, 17, 36, 7, 3, 1, 153, 36, 7, 1, 3, 6, 
-    153, 36, 7, 1, 3, 6, 189, 36, 7, 3, 1, 207, 36, 7, 1, 3, 6, 207, 36, 7, 
-    1, 3, 6, 152, 36, 7, 3, 1, 228, 39, 227, 58, 36, 7, 3, 1, 198, 36, 7, 3, 
-    1, 171, 198, 36, 7, 3, 1, 217, 157, 36, 254, 151, 114, 199, 56, 36, 42, 
-    254, 21, 50, 36, 45, 254, 21, 25, 113, 254, 21, 56, 7, 6, 1, 112, 2, 227, 
-    94, 56, 7, 3, 1, 112, 2, 227, 94, 56, 7, 6, 1, 49, 2, 61, 50, 7, 3, 1, 
-    49, 2, 61, 50, 7, 6, 1, 49, 2, 61, 56, 7, 3, 1, 49, 2, 61, 56, 7, 6, 1, 
-    49, 2, 235, 44, 56, 7, 3, 1, 49, 2, 235, 44, 56, 7, 6, 1, 251, 203, 2, 
-    251, 93, 25, 168, 7, 3, 1, 251, 203, 2, 251, 93, 25, 168, 7, 6, 1, 250, 
-    47, 2, 61, 50, 7, 3, 1, 250, 47, 2, 61, 50, 7, 6, 1, 250, 47, 2, 61, 56, 
-    7, 3, 1, 250, 47, 2, 61, 56, 7, 6, 1, 250, 47, 2, 235, 44, 56, 7, 3, 1, 
-    250, 47, 2, 235, 44, 56, 7, 6, 1, 250, 47, 2, 251, 92, 7, 3, 1, 250, 47, 
-    2, 251, 92, 7, 6, 1, 250, 47, 2, 250, 217, 56, 7, 3, 1, 250, 47, 2, 250, 
-    217, 56, 7, 6, 1, 178, 2, 234, 116, 25, 244, 36, 7, 3, 1, 178, 2, 234, 
-    116, 25, 244, 36, 7, 6, 1, 178, 2, 234, 116, 25, 168, 7, 3, 1, 178, 2, 
-    234, 116, 25, 168, 7, 6, 1, 178, 2, 250, 217, 56, 7, 3, 1, 178, 2, 250, 
-    217, 56, 7, 6, 1, 178, 2, 221, 180, 56, 7, 3, 1, 178, 2, 221, 180, 56, 7, 
-    6, 1, 178, 2, 251, 93, 25, 252, 8, 7, 3, 1, 178, 2, 251, 93, 25, 252, 8, 
-    7, 6, 1, 246, 75, 2, 61, 50, 7, 3, 1, 246, 75, 2, 61, 50, 7, 6, 1, 245, 
-    68, 2, 234, 115, 7, 3, 1, 245, 68, 2, 234, 115, 7, 6, 1, 243, 226, 2, 61, 
-    50, 7, 3, 1, 243, 226, 2, 61, 50, 7, 6, 1, 243, 226, 2, 61, 56, 7, 3, 1, 
-    243, 226, 2, 61, 56, 7, 6, 1, 243, 226, 2, 249, 13, 7, 3, 1, 243, 226, 2, 
-    249, 13, 7, 6, 1, 243, 226, 2, 251, 92, 7, 3, 1, 243, 226, 2, 251, 92, 7, 
-    6, 1, 243, 226, 2, 252, 9, 56, 7, 3, 1, 243, 226, 2, 252, 9, 56, 7, 6, 1, 
-    242, 107, 2, 221, 180, 56, 7, 3, 1, 242, 107, 2, 221, 180, 56, 7, 6, 1, 
-    242, 107, 2, 249, 14, 25, 168, 7, 3, 1, 242, 107, 2, 249, 14, 25, 168, 7, 
-    6, 1, 237, 18, 2, 168, 7, 3, 1, 237, 18, 2, 168, 7, 6, 1, 237, 18, 2, 61, 
-    56, 7, 3, 1, 237, 18, 2, 61, 56, 7, 6, 1, 237, 18, 2, 235, 44, 56, 7, 3, 
-    1, 237, 18, 2, 235, 44, 56, 7, 6, 1, 235, 202, 2, 61, 56, 7, 3, 1, 235, 
-    202, 2, 61, 56, 7, 6, 1, 235, 202, 2, 61, 252, 118, 25, 234, 115, 7, 3, 
-    1, 235, 202, 2, 61, 252, 118, 25, 234, 115, 7, 6, 1, 235, 202, 2, 235, 
-    44, 56, 7, 3, 1, 235, 202, 2, 235, 44, 56, 7, 6, 1, 235, 202, 2, 250, 
-    217, 56, 7, 3, 1, 235, 202, 2, 250, 217, 56, 7, 6, 1, 234, 187, 2, 168, 
-    7, 3, 1, 234, 187, 2, 168, 7, 6, 1, 234, 187, 2, 61, 50, 7, 3, 1, 234, 
-    187, 2, 61, 50, 7, 6, 1, 234, 187, 2, 61, 56, 7, 3, 1, 234, 187, 2, 61, 
-    56, 7, 6, 1, 233, 34, 2, 61, 50, 7, 3, 1, 233, 34, 2, 61, 50, 7, 6, 1, 
-    233, 34, 2, 61, 56, 7, 3, 1, 233, 34, 2, 61, 56, 7, 6, 1, 233, 34, 2, 
-    235, 44, 56, 7, 3, 1, 233, 34, 2, 235, 44, 56, 7, 6, 1, 233, 34, 2, 250, 
-    217, 56, 7, 3, 1, 233, 34, 2, 250, 217, 56, 7, 6, 1, 142, 2, 221, 180, 
-    25, 168, 7, 3, 1, 142, 2, 221, 180, 25, 168, 7, 6, 1, 142, 2, 221, 180, 
-    25, 249, 13, 7, 3, 1, 142, 2, 221, 180, 25, 249, 13, 7, 6, 1, 142, 2, 
-    234, 116, 25, 244, 36, 7, 3, 1, 142, 2, 234, 116, 25, 244, 36, 7, 6, 1, 
-    142, 2, 234, 116, 25, 168, 7, 3, 1, 142, 2, 234, 116, 25, 168, 7, 6, 1, 
-    230, 60, 2, 168, 7, 3, 1, 230, 60, 2, 168, 7, 6, 1, 230, 60, 2, 61, 50, 
-    7, 3, 1, 230, 60, 2, 61, 50, 7, 6, 1, 228, 39, 2, 61, 50, 7, 3, 1, 228, 
-    39, 2, 61, 50, 7, 6, 1, 228, 39, 2, 61, 56, 7, 3, 1, 228, 39, 2, 61, 56, 
-    7, 6, 1, 228, 39, 2, 61, 252, 118, 25, 234, 115, 7, 3, 1, 228, 39, 2, 61, 
-    252, 118, 25, 234, 115, 7, 6, 1, 228, 39, 2, 235, 44, 56, 7, 3, 1, 228, 
-    39, 2, 235, 44, 56, 7, 6, 1, 226, 235, 2, 61, 50, 7, 3, 1, 226, 235, 2, 
-    61, 50, 7, 6, 1, 226, 235, 2, 61, 56, 7, 3, 1, 226, 235, 2, 61, 56, 7, 6, 
-    1, 226, 235, 2, 254, 248, 25, 61, 50, 7, 3, 1, 226, 235, 2, 254, 248, 25, 
-    61, 50, 7, 6, 1, 226, 235, 2, 251, 131, 25, 61, 50, 7, 3, 1, 226, 235, 2, 
-    251, 131, 25, 61, 50, 7, 6, 1, 226, 235, 2, 61, 252, 118, 25, 61, 50, 7, 
-    3, 1, 226, 235, 2, 61, 252, 118, 25, 61, 50, 7, 6, 1, 222, 202, 2, 61, 
-    50, 7, 3, 1, 222, 202, 2, 61, 50, 7, 6, 1, 222, 202, 2, 61, 56, 7, 3, 1, 
-    222, 202, 2, 61, 56, 7, 6, 1, 222, 202, 2, 235, 44, 56, 7, 3, 1, 222, 
-    202, 2, 235, 44, 56, 7, 6, 1, 222, 202, 2, 250, 217, 56, 7, 3, 1, 222, 
-    202, 2, 250, 217, 56, 7, 6, 1, 105, 2, 249, 14, 56, 7, 3, 1, 105, 2, 249, 
-    14, 56, 7, 6, 1, 105, 2, 221, 180, 56, 7, 3, 1, 105, 2, 221, 180, 56, 7, 
-    6, 1, 105, 2, 250, 217, 56, 7, 3, 1, 105, 2, 250, 217, 56, 7, 6, 1, 105, 
-    2, 221, 180, 25, 168, 7, 3, 1, 105, 2, 221, 180, 25, 168, 7, 6, 1, 105, 
-    2, 234, 116, 25, 249, 13, 7, 3, 1, 105, 2, 234, 116, 25, 249, 13, 7, 6, 
-    1, 220, 11, 2, 221, 179, 7, 3, 1, 220, 11, 2, 221, 179, 7, 6, 1, 220, 11, 
-    2, 61, 56, 7, 3, 1, 220, 11, 2, 61, 56, 7, 6, 1, 219, 41, 2, 244, 36, 7, 
-    3, 1, 219, 41, 2, 244, 36, 7, 6, 1, 219, 41, 2, 168, 7, 3, 1, 219, 41, 2, 
-    168, 7, 6, 1, 219, 41, 2, 249, 13, 7, 3, 1, 219, 41, 2, 249, 13, 7, 6, 1, 
-    219, 41, 2, 61, 50, 7, 3, 1, 219, 41, 2, 61, 50, 7, 6, 1, 219, 41, 2, 61, 
-    56, 7, 3, 1, 219, 41, 2, 61, 56, 7, 6, 1, 218, 152, 2, 61, 50, 7, 3, 1, 
-    218, 152, 2, 61, 50, 7, 6, 1, 218, 152, 2, 249, 13, 7, 3, 1, 218, 152, 2, 
-    249, 13, 7, 6, 1, 218, 91, 2, 61, 50, 7, 3, 1, 218, 91, 2, 61, 50, 7, 6, 
-    1, 217, 158, 2, 250, 216, 7, 3, 1, 217, 158, 2, 250, 216, 7, 6, 1, 217, 
-    158, 2, 61, 56, 7, 3, 1, 217, 158, 2, 61, 56, 7, 6, 1, 217, 158, 2, 235, 
-    44, 56, 7, 3, 1, 217, 158, 2, 235, 44, 56, 7, 3, 1, 243, 226, 2, 235, 44, 
-    56, 7, 3, 1, 222, 202, 2, 249, 13, 7, 3, 1, 219, 41, 2, 227, 94, 50, 7, 
-    3, 1, 218, 91, 2, 227, 94, 50, 7, 3, 1, 112, 2, 45, 144, 227, 93, 7, 3, 
-    1, 171, 226, 235, 2, 61, 50, 7, 3, 1, 171, 226, 235, 2, 249, 11, 92, 7, 
-    3, 1, 171, 226, 235, 2, 116, 92, 7, 6, 1, 225, 1, 198, 7, 3, 1, 249, 62, 
-    7, 6, 1, 112, 2, 61, 56, 7, 3, 1, 112, 2, 61, 56, 7, 6, 1, 112, 2, 242, 
-    247, 50, 7, 3, 1, 112, 2, 242, 247, 50, 7, 6, 1, 112, 2, 250, 217, 25, 
-    168, 7, 3, 1, 112, 2, 250, 217, 25, 168, 7, 6, 1, 112, 2, 250, 217, 25, 
-    244, 36, 7, 3, 1, 112, 2, 250, 217, 25, 244, 36, 7, 6, 1, 112, 2, 250, 
-    217, 25, 242, 247, 50, 7, 3, 1, 112, 2, 250, 217, 25, 242, 247, 50, 7, 6, 
-    1, 112, 2, 250, 217, 25, 221, 179, 7, 3, 1, 112, 2, 250, 217, 25, 221, 
-    179, 7, 6, 1, 112, 2, 250, 217, 25, 61, 56, 7, 3, 1, 112, 2, 250, 217, 
-    25, 61, 56, 7, 6, 1, 112, 2, 252, 9, 25, 168, 7, 3, 1, 112, 2, 252, 9, 
-    25, 168, 7, 6, 1, 112, 2, 252, 9, 25, 244, 36, 7, 3, 1, 112, 2, 252, 9, 
-    25, 244, 36, 7, 6, 1, 112, 2, 252, 9, 25, 242, 247, 50, 7, 3, 1, 112, 2, 
-    252, 9, 25, 242, 247, 50, 7, 6, 1, 112, 2, 252, 9, 25, 221, 179, 7, 3, 1, 
-    112, 2, 252, 9, 25, 221, 179, 7, 6, 1, 112, 2, 252, 9, 25, 61, 56, 7, 3, 
-    1, 112, 2, 252, 9, 25, 61, 56, 7, 6, 1, 178, 2, 61, 56, 7, 3, 1, 178, 2, 
-    61, 56, 7, 6, 1, 178, 2, 242, 247, 50, 7, 3, 1, 178, 2, 242, 247, 50, 7, 
-    6, 1, 178, 2, 221, 179, 7, 3, 1, 178, 2, 221, 179, 7, 6, 1, 178, 2, 250, 
-    217, 25, 168, 7, 3, 1, 178, 2, 250, 217, 25, 168, 7, 6, 1, 178, 2, 250, 
-    217, 25, 244, 36, 7, 3, 1, 178, 2, 250, 217, 25, 244, 36, 7, 6, 1, 178, 
-    2, 250, 217, 25, 242, 247, 50, 7, 3, 1, 178, 2, 250, 217, 25, 242, 247, 
-    50, 7, 6, 1, 178, 2, 250, 217, 25, 221, 179, 7, 3, 1, 178, 2, 250, 217, 
-    25, 221, 179, 7, 6, 1, 178, 2, 250, 217, 25, 61, 56, 7, 3, 1, 178, 2, 
-    250, 217, 25, 61, 56, 7, 6, 1, 242, 107, 2, 242, 247, 50, 7, 3, 1, 242, 
-    107, 2, 242, 247, 50, 7, 6, 1, 242, 107, 2, 61, 56, 7, 3, 1, 242, 107, 2, 
-    61, 56, 7, 6, 1, 142, 2, 61, 56, 7, 3, 1, 142, 2, 61, 56, 7, 6, 1, 142, 
-    2, 242, 247, 50, 7, 3, 1, 142, 2, 242, 247, 50, 7, 6, 1, 142, 2, 250, 
-    217, 25, 168, 7, 3, 1, 142, 2, 250, 217, 25, 168, 7, 6, 1, 142, 2, 250, 
-    217, 25, 244, 36, 7, 3, 1, 142, 2, 250, 217, 25, 244, 36, 7, 6, 1, 142, 
-    2, 250, 217, 25, 242, 247, 50, 7, 3, 1, 142, 2, 250, 217, 25, 242, 247, 
-    50, 7, 6, 1, 142, 2, 250, 217, 25, 221, 179, 7, 3, 1, 142, 2, 250, 217, 
-    25, 221, 179, 7, 6, 1, 142, 2, 250, 217, 25, 61, 56, 7, 3, 1, 142, 2, 
-    250, 217, 25, 61, 56, 7, 6, 1, 142, 2, 242, 190, 25, 168, 7, 3, 1, 142, 
-    2, 242, 190, 25, 168, 7, 6, 1, 142, 2, 242, 190, 25, 244, 36, 7, 3, 1, 
-    142, 2, 242, 190, 25, 244, 36, 7, 6, 1, 142, 2, 242, 190, 25, 242, 247, 
-    50, 7, 3, 1, 142, 2, 242, 190, 25, 242, 247, 50, 7, 6, 1, 142, 2, 242, 
-    190, 25, 221, 179, 7, 3, 1, 142, 2, 242, 190, 25, 221, 179, 7, 6, 1, 142, 
-    2, 242, 190, 25, 61, 56, 7, 3, 1, 142, 2, 242, 190, 25, 61, 56, 7, 6, 1, 
-    105, 2, 61, 56, 7, 3, 1, 105, 2, 61, 56, 7, 6, 1, 105, 2, 242, 247, 50, 
-    7, 3, 1, 105, 2, 242, 247, 50, 7, 6, 1, 105, 2, 242, 190, 25, 168, 7, 3, 
-    1, 105, 2, 242, 190, 25, 168, 7, 6, 1, 105, 2, 242, 190, 25, 244, 36, 7, 
-    3, 1, 105, 2, 242, 190, 25, 244, 36, 7, 6, 1, 105, 2, 242, 190, 25, 242, 
-    247, 50, 7, 3, 1, 105, 2, 242, 190, 25, 242, 247, 50, 7, 6, 1, 105, 2, 
-    242, 190, 25, 221, 179, 7, 3, 1, 105, 2, 242, 190, 25, 221, 179, 7, 6, 1, 
-    105, 2, 242, 190, 25, 61, 56, 7, 3, 1, 105, 2, 242, 190, 25, 61, 56, 7, 
-    6, 1, 218, 91, 2, 244, 36, 7, 3, 1, 218, 91, 2, 244, 36, 7, 6, 1, 218, 
-    91, 2, 61, 56, 7, 3, 1, 218, 91, 2, 61, 56, 7, 6, 1, 218, 91, 2, 242, 
-    247, 50, 7, 3, 1, 218, 91, 2, 242, 247, 50, 7, 6, 1, 218, 91, 2, 221, 
-    179, 7, 3, 1, 218, 91, 2, 221, 179, 7, 6, 1, 233, 192, 235, 18, 7, 3, 1, 
-    233, 192, 235, 18, 7, 6, 1, 233, 192, 216, 216, 7, 3, 1, 233, 192, 216, 
-    216, 7, 6, 1, 218, 91, 2, 234, 247, 7, 3, 1, 218, 91, 2, 234, 247, 23, 3, 
-    1, 254, 147, 2, 228, 206, 23, 3, 1, 254, 147, 2, 249, 144, 23, 3, 1, 254, 
-    147, 2, 209, 25, 219, 178, 23, 3, 1, 254, 147, 2, 193, 25, 219, 178, 23, 
-    3, 1, 254, 147, 2, 209, 25, 230, 64, 23, 3, 1, 254, 147, 2, 193, 25, 230, 
-    64, 23, 3, 1, 254, 147, 2, 209, 25, 229, 163, 23, 3, 1, 254, 147, 2, 193, 
-    25, 229, 163, 23, 6, 1, 254, 147, 2, 228, 206, 23, 6, 1, 254, 147, 2, 
-    249, 144, 23, 6, 1, 254, 147, 2, 209, 25, 219, 178, 23, 6, 1, 254, 147, 
-    2, 193, 25, 219, 178, 23, 6, 1, 254, 147, 2, 209, 25, 230, 64, 23, 6, 1, 
-    254, 147, 2, 193, 25, 230, 64, 23, 6, 1, 254, 147, 2, 209, 25, 229, 163, 
-    23, 6, 1, 254, 147, 2, 193, 25, 229, 163, 23, 3, 1, 246, 157, 2, 228, 
-    206, 23, 3, 1, 246, 157, 2, 249, 144, 23, 3, 1, 246, 157, 2, 209, 25, 
-    219, 178, 23, 3, 1, 246, 157, 2, 193, 25, 219, 178, 23, 3, 1, 246, 157, 
-    2, 209, 25, 230, 64, 23, 3, 1, 246, 157, 2, 193, 25, 230, 64, 23, 6, 1, 
-    246, 157, 2, 228, 206, 23, 6, 1, 246, 157, 2, 249, 144, 23, 6, 1, 246, 
-    157, 2, 209, 25, 219, 178, 23, 6, 1, 246, 157, 2, 193, 25, 219, 178, 23, 
-    6, 1, 246, 157, 2, 209, 25, 230, 64, 23, 6, 1, 246, 157, 2, 193, 25, 230, 
-    64, 23, 3, 1, 246, 122, 2, 228, 206, 23, 3, 1, 246, 122, 2, 249, 144, 23, 
-    3, 1, 246, 122, 2, 209, 25, 219, 178, 23, 3, 1, 246, 122, 2, 193, 25, 
-    219, 178, 23, 3, 1, 246, 122, 2, 209, 25, 230, 64, 23, 3, 1, 246, 122, 2, 
-    193, 25, 230, 64, 23, 3, 1, 246, 122, 2, 209, 25, 229, 163, 23, 3, 1, 
-    246, 122, 2, 193, 25, 229, 163, 23, 6, 1, 246, 122, 2, 228, 206, 23, 6, 
-    1, 246, 122, 2, 249, 144, 23, 6, 1, 246, 122, 2, 209, 25, 219, 178, 23, 
-    6, 1, 246, 122, 2, 193, 25, 219, 178, 23, 6, 1, 246, 122, 2, 209, 25, 
-    230, 64, 23, 6, 1, 246, 122, 2, 193, 25, 230, 64, 23, 6, 1, 246, 122, 2, 
-    209, 25, 229, 163, 23, 6, 1, 246, 122, 2, 193, 25, 229, 163, 23, 3, 1, 
-    237, 163, 2, 228, 206, 23, 3, 1, 237, 163, 2, 249, 144, 23, 3, 1, 237, 
-    163, 2, 209, 25, 219, 178, 23, 3, 1, 237, 163, 2, 193, 25, 219, 178, 23, 
-    3, 1, 237, 163, 2, 209, 25, 230, 64, 23, 3, 1, 237, 163, 2, 193, 25, 230, 
-    64, 23, 3, 1, 237, 163, 2, 209, 25, 229, 163, 23, 3, 1, 237, 163, 2, 193, 
-    25, 229, 163, 23, 6, 1, 237, 163, 2, 228, 206, 23, 6, 1, 237, 163, 2, 
-    249, 144, 23, 6, 1, 237, 163, 2, 209, 25, 219, 178, 23, 6, 1, 237, 163, 
-    2, 193, 25, 219, 178, 23, 6, 1, 237, 163, 2, 209, 25, 230, 64, 23, 6, 1, 
-    237, 163, 2, 193, 25, 230, 64, 23, 6, 1, 237, 163, 2, 209, 25, 229, 163, 
-    23, 6, 1, 237, 163, 2, 193, 25, 229, 163, 23, 3, 1, 230, 142, 2, 228, 
-    206, 23, 3, 1, 230, 142, 2, 249, 144, 23, 3, 1, 230, 142, 2, 209, 25, 
-    219, 178, 23, 3, 1, 230, 142, 2, 193, 25, 219, 178, 23, 3, 1, 230, 142, 
-    2, 209, 25, 230, 64, 23, 3, 1, 230, 142, 2, 193, 25, 230, 64, 23, 6, 1, 
-    230, 142, 2, 228, 206, 23, 6, 1, 230, 142, 2, 249, 144, 23, 6, 1, 230, 
-    142, 2, 209, 25, 219, 178, 23, 6, 1, 230, 142, 2, 193, 25, 219, 178, 23, 
-    6, 1, 230, 142, 2, 209, 25, 230, 64, 23, 6, 1, 230, 142, 2, 193, 25, 230, 
-    64, 23, 3, 1, 220, 58, 2, 228, 206, 23, 3, 1, 220, 58, 2, 249, 144, 23, 
-    3, 1, 220, 58, 2, 209, 25, 219, 178, 23, 3, 1, 220, 58, 2, 193, 25, 219, 
-    178, 23, 3, 1, 220, 58, 2, 209, 25, 230, 64, 23, 3, 1, 220, 58, 2, 193, 
-    25, 230, 64, 23, 3, 1, 220, 58, 2, 209, 25, 229, 163, 23, 3, 1, 220, 58, 
-    2, 193, 25, 229, 163, 23, 6, 1, 220, 58, 2, 249, 144, 23, 6, 1, 220, 58, 
-    2, 193, 25, 219, 178, 23, 6, 1, 220, 58, 2, 193, 25, 230, 64, 23, 6, 1, 
-    220, 58, 2, 193, 25, 229, 163, 23, 3, 1, 230, 144, 2, 228, 206, 23, 3, 1, 
-    230, 144, 2, 249, 144, 23, 3, 1, 230, 144, 2, 209, 25, 219, 178, 23, 3, 
-    1, 230, 144, 2, 193, 25, 219, 178, 23, 3, 1, 230, 144, 2, 209, 25, 230, 
-    64, 23, 3, 1, 230, 144, 2, 193, 25, 230, 64, 23, 3, 1, 230, 144, 2, 209, 
-    25, 229, 163, 23, 3, 1, 230, 144, 2, 193, 25, 229, 163, 23, 6, 1, 230, 
-    144, 2, 228, 206, 23, 6, 1, 230, 144, 2, 249, 144, 23, 6, 1, 230, 144, 2, 
-    209, 25, 219, 178, 23, 6, 1, 230, 144, 2, 193, 25, 219, 178, 23, 6, 1, 
-    230, 144, 2, 209, 25, 230, 64, 23, 6, 1, 230, 144, 2, 193, 25, 230, 64, 
-    23, 6, 1, 230, 144, 2, 209, 25, 229, 163, 23, 6, 1, 230, 144, 2, 193, 25, 
-    229, 163, 23, 3, 1, 254, 147, 2, 219, 178, 23, 3, 1, 254, 147, 2, 230, 
-    64, 23, 3, 1, 246, 157, 2, 219, 178, 23, 3, 1, 246, 157, 2, 230, 64, 23, 
-    3, 1, 246, 122, 2, 219, 178, 23, 3, 1, 246, 122, 2, 230, 64, 23, 3, 1, 
-    237, 163, 2, 219, 178, 23, 3, 1, 237, 163, 2, 230, 64, 23, 3, 1, 230, 
-    142, 2, 219, 178, 23, 3, 1, 230, 142, 2, 230, 64, 23, 3, 1, 220, 58, 2, 
-    219, 178, 23, 3, 1, 220, 58, 2, 230, 64, 23, 3, 1, 230, 144, 2, 219, 178, 
-    23, 3, 1, 230, 144, 2, 230, 64, 23, 3, 1, 254, 147, 2, 209, 25, 217, 207, 
-    23, 3, 1, 254, 147, 2, 193, 25, 217, 207, 23, 3, 1, 254, 147, 2, 209, 25, 
-    219, 179, 25, 217, 207, 23, 3, 1, 254, 147, 2, 193, 25, 219, 179, 25, 
-    217, 207, 23, 3, 1, 254, 147, 2, 209, 25, 230, 65, 25, 217, 207, 23, 3, 
-    1, 254, 147, 2, 193, 25, 230, 65, 25, 217, 207, 23, 3, 1, 254, 147, 2, 
-    209, 25, 229, 164, 25, 217, 207, 23, 3, 1, 254, 147, 2, 193, 25, 229, 
-    164, 25, 217, 207, 23, 6, 1, 254, 147, 2, 209, 25, 228, 217, 23, 6, 1, 
-    254, 147, 2, 193, 25, 228, 217, 23, 6, 1, 254, 147, 2, 209, 25, 219, 179, 
-    25, 228, 217, 23, 6, 1, 254, 147, 2, 193, 25, 219, 179, 25, 228, 217, 23, 
-    6, 1, 254, 147, 2, 209, 25, 230, 65, 25, 228, 217, 23, 6, 1, 254, 147, 2, 
-    193, 25, 230, 65, 25, 228, 217, 23, 6, 1, 254, 147, 2, 209, 25, 229, 164, 
-    25, 228, 217, 23, 6, 1, 254, 147, 2, 193, 25, 229, 164, 25, 228, 217, 23, 
-    3, 1, 246, 122, 2, 209, 25, 217, 207, 23, 3, 1, 246, 122, 2, 193, 25, 
-    217, 207, 23, 3, 1, 246, 122, 2, 209, 25, 219, 179, 25, 217, 207, 23, 3, 
-    1, 246, 122, 2, 193, 25, 219, 179, 25, 217, 207, 23, 3, 1, 246, 122, 2, 
-    209, 25, 230, 65, 25, 217, 207, 23, 3, 1, 246, 122, 2, 193, 25, 230, 65, 
-    25, 217, 207, 23, 3, 1, 246, 122, 2, 209, 25, 229, 164, 25, 217, 207, 23, 
-    3, 1, 246, 122, 2, 193, 25, 229, 164, 25, 217, 207, 23, 6, 1, 246, 122, 
-    2, 209, 25, 228, 217, 23, 6, 1, 246, 122, 2, 193, 25, 228, 217, 23, 6, 1, 
-    246, 122, 2, 209, 25, 219, 179, 25, 228, 217, 23, 6, 1, 246, 122, 2, 193, 
-    25, 219, 179, 25, 228, 217, 23, 6, 1, 246, 122, 2, 209, 25, 230, 65, 25, 
-    228, 217, 23, 6, 1, 246, 122, 2, 193, 25, 230, 65, 25, 228, 217, 23, 6, 
-    1, 246, 122, 2, 209, 25, 229, 164, 25, 228, 217, 23, 6, 1, 246, 122, 2, 
-    193, 25, 229, 164, 25, 228, 217, 23, 3, 1, 230, 144, 2, 209, 25, 217, 
-    207, 23, 3, 1, 230, 144, 2, 193, 25, 217, 207, 23, 3, 1, 230, 144, 2, 
-    209, 25, 219, 179, 25, 217, 207, 23, 3, 1, 230, 144, 2, 193, 25, 219, 
-    179, 25, 217, 207, 23, 3, 1, 230, 144, 2, 209, 25, 230, 65, 25, 217, 207, 
-    23, 3, 1, 230, 144, 2, 193, 25, 230, 65, 25, 217, 207, 23, 3, 1, 230, 
-    144, 2, 209, 25, 229, 164, 25, 217, 207, 23, 3, 1, 230, 144, 2, 193, 25, 
-    229, 164, 25, 217, 207, 23, 6, 1, 230, 144, 2, 209, 25, 228, 217, 23, 6, 
-    1, 230, 144, 2, 193, 25, 228, 217, 23, 6, 1, 230, 144, 2, 209, 25, 219, 
-    179, 25, 228, 217, 23, 6, 1, 230, 144, 2, 193, 25, 219, 179, 25, 228, 
-    217, 23, 6, 1, 230, 144, 2, 209, 25, 230, 65, 25, 228, 217, 23, 6, 1, 
-    230, 144, 2, 193, 25, 230, 65, 25, 228, 217, 23, 6, 1, 230, 144, 2, 209, 
-    25, 229, 164, 25, 228, 217, 23, 6, 1, 230, 144, 2, 193, 25, 229, 164, 25, 
-    228, 217, 23, 3, 1, 254, 147, 2, 219, 57, 23, 3, 1, 254, 147, 2, 234, 
-    115, 23, 3, 1, 254, 147, 2, 219, 179, 25, 217, 207, 23, 3, 1, 254, 147, 
-    2, 217, 207, 23, 3, 1, 254, 147, 2, 230, 65, 25, 217, 207, 23, 3, 1, 254, 
-    147, 2, 229, 163, 23, 3, 1, 254, 147, 2, 229, 164, 25, 217, 207, 23, 6, 
-    1, 254, 147, 2, 219, 57, 23, 6, 1, 254, 147, 2, 234, 115, 23, 6, 1, 254, 
-    147, 2, 219, 178, 23, 6, 1, 254, 147, 2, 230, 64, 23, 6, 1, 254, 147, 2, 
-    228, 217, 23, 236, 33, 23, 228, 217, 23, 228, 206, 23, 229, 163, 23, 249, 
-    8, 25, 229, 163, 23, 3, 1, 246, 122, 2, 219, 179, 25, 217, 207, 23, 3, 1, 
-    246, 122, 2, 217, 207, 23, 3, 1, 246, 122, 2, 230, 65, 25, 217, 207, 23, 
-    3, 1, 246, 122, 2, 229, 163, 23, 3, 1, 246, 122, 2, 229, 164, 25, 217, 
-    207, 23, 6, 1, 246, 157, 2, 219, 178, 23, 6, 1, 246, 157, 2, 230, 64, 23, 
-    6, 1, 246, 122, 2, 219, 178, 23, 6, 1, 246, 122, 2, 230, 64, 23, 6, 1, 
-    246, 122, 2, 228, 217, 23, 209, 25, 219, 178, 23, 209, 25, 230, 64, 23, 
-    209, 25, 229, 163, 23, 3, 1, 237, 163, 2, 219, 57, 23, 3, 1, 237, 163, 2, 
-    234, 115, 23, 3, 1, 237, 163, 2, 249, 8, 25, 219, 178, 23, 3, 1, 237, 
-    163, 2, 249, 8, 25, 230, 64, 23, 3, 1, 237, 163, 2, 229, 163, 23, 3, 1, 
-    237, 163, 2, 249, 8, 25, 229, 163, 23, 6, 1, 237, 163, 2, 219, 57, 23, 6, 
-    1, 237, 163, 2, 234, 115, 23, 6, 1, 237, 163, 2, 219, 178, 23, 6, 1, 237, 
-    163, 2, 230, 64, 23, 193, 25, 219, 178, 23, 193, 25, 230, 64, 23, 193, 
-    25, 229, 163, 23, 3, 1, 220, 58, 2, 219, 57, 23, 3, 1, 220, 58, 2, 234, 
-    115, 23, 3, 1, 220, 58, 2, 249, 8, 25, 219, 178, 23, 3, 1, 220, 58, 2, 
-    249, 8, 25, 230, 64, 23, 3, 1, 227, 150, 2, 228, 206, 23, 3, 1, 227, 150, 
-    2, 249, 144, 23, 3, 1, 220, 58, 2, 229, 163, 23, 3, 1, 220, 58, 2, 249, 
-    8, 25, 229, 163, 23, 6, 1, 220, 58, 2, 219, 57, 23, 6, 1, 220, 58, 2, 
-    234, 115, 23, 6, 1, 220, 58, 2, 219, 178, 23, 6, 1, 220, 58, 2, 230, 64, 
-    23, 6, 1, 227, 150, 2, 249, 144, 23, 249, 8, 25, 219, 178, 23, 249, 8, 
-    25, 230, 64, 23, 219, 178, 23, 3, 1, 230, 144, 2, 219, 179, 25, 217, 207, 
-    23, 3, 1, 230, 144, 2, 217, 207, 23, 3, 1, 230, 144, 2, 230, 65, 25, 217, 
-    207, 23, 3, 1, 230, 144, 2, 229, 163, 23, 3, 1, 230, 144, 2, 229, 164, 
-    25, 217, 207, 23, 6, 1, 230, 142, 2, 219, 178, 23, 6, 1, 230, 142, 2, 
-    230, 64, 23, 6, 1, 230, 144, 2, 219, 178, 23, 6, 1, 230, 144, 2, 230, 64, 
-    23, 6, 1, 230, 144, 2, 228, 217, 23, 230, 64, 23, 249, 144, 246, 198, 
-    228, 95, 246, 206, 228, 95, 246, 198, 223, 254, 246, 206, 223, 254, 221, 
-    226, 223, 254, 245, 114, 223, 254, 224, 80, 223, 254, 245, 194, 223, 254, 
-    228, 197, 223, 254, 221, 253, 223, 254, 243, 201, 223, 254, 217, 85, 218, 
-    199, 223, 254, 217, 85, 218, 199, 231, 197, 217, 85, 218, 199, 237, 54, 
-    235, 108, 78, 227, 102, 78, 242, 121, 231, 198, 242, 121, 245, 194, 249, 
-    146, 246, 198, 249, 146, 246, 206, 249, 146, 186, 135, 51, 69, 235, 43, 
-    51, 109, 235, 43, 42, 224, 109, 228, 69, 78, 45, 224, 109, 228, 69, 78, 
-    224, 109, 234, 238, 228, 69, 78, 224, 109, 243, 98, 228, 69, 78, 42, 51, 
-    228, 69, 78, 45, 51, 228, 69, 78, 51, 234, 238, 228, 69, 78, 51, 243, 98, 
-    228, 69, 78, 249, 192, 51, 249, 192, 251, 241, 221, 87, 251, 241, 131, 
-    61, 235, 121, 124, 61, 235, 121, 186, 246, 208, 242, 119, 229, 31, 235, 
-    44, 225, 54, 229, 241, 225, 54, 235, 108, 246, 204, 227, 102, 246, 204, 
-    229, 20, 248, 209, 245, 123, 235, 108, 230, 71, 227, 102, 230, 71, 232, 
-    210, 231, 203, 223, 254, 229, 170, 233, 164, 55, 229, 170, 222, 66, 221, 
-    232, 55, 228, 235, 51, 228, 235, 221, 78, 228, 235, 210, 228, 235, 210, 
-    51, 228, 235, 210, 221, 78, 228, 235, 251, 134, 224, 109, 235, 112, 254, 
-    120, 228, 69, 78, 224, 109, 227, 106, 254, 120, 228, 69, 78, 227, 199, 
-    78, 51, 246, 95, 78, 237, 177, 230, 73, 220, 78, 126, 221, 200, 251, 135, 
-    237, 191, 229, 31, 253, 249, 242, 122, 251, 241, 245, 108, 224, 55, 42, 
-    40, 252, 18, 2, 228, 77, 45, 40, 252, 18, 2, 228, 77, 51, 228, 82, 78, 
-    228, 82, 246, 95, 78, 246, 95, 228, 82, 78, 221, 164, 5, 246, 123, 210, 
-    229, 73, 55, 84, 127, 251, 241, 84, 90, 251, 241, 109, 253, 251, 210, 
-    225, 67, 250, 198, 220, 63, 124, 253, 250, 254, 159, 219, 101, 250, 167, 
-    233, 155, 55, 223, 23, 249, 146, 237, 170, 220, 78, 245, 145, 228, 197, 
-    78, 148, 61, 228, 196, 228, 92, 228, 235, 245, 116, 61, 228, 196, 245, 
-    170, 61, 228, 196, 124, 61, 228, 196, 245, 116, 61, 78, 247, 143, 250, 
-    100, 221, 86, 69, 245, 116, 248, 143, 234, 18, 14, 223, 254, 218, 174, 
-    237, 54, 245, 88, 254, 76, 237, 168, 221, 176, 237, 168, 225, 54, 237, 
-    168, 229, 43, 237, 201, 222, 228, 223, 34, 254, 250, 222, 228, 223, 34, 
-    237, 201, 12, 245, 124, 225, 5, 254, 250, 12, 245, 124, 225, 5, 232, 206, 
-    20, 225, 6, 231, 199, 20, 225, 6, 223, 59, 217, 84, 223, 59, 7, 3, 1, 72, 
-    223, 59, 154, 223, 59, 174, 223, 59, 182, 223, 59, 191, 223, 59, 185, 
-    223, 59, 190, 223, 59, 88, 55, 223, 59, 233, 154, 223, 59, 246, 154, 55, 
-    223, 59, 42, 229, 229, 223, 59, 45, 229, 229, 223, 59, 7, 3, 1, 207, 223, 
-    94, 217, 84, 223, 94, 107, 223, 94, 103, 223, 94, 160, 223, 94, 154, 223, 
-    94, 174, 223, 94, 182, 223, 94, 191, 223, 94, 185, 223, 94, 190, 223, 94, 
-    88, 55, 223, 94, 233, 154, 223, 94, 246, 154, 55, 223, 94, 42, 229, 229, 
-    223, 94, 45, 229, 229, 7, 223, 94, 3, 1, 60, 7, 223, 94, 3, 1, 73, 7, 
-    223, 94, 3, 1, 74, 7, 223, 94, 3, 1, 218, 151, 7, 223, 94, 3, 1, 226, 
-    104, 246, 106, 55, 250, 176, 55, 250, 94, 55, 245, 102, 245, 104, 55, 
-    235, 30, 55, 233, 165, 55, 232, 223, 55, 229, 153, 55, 227, 4, 55, 218, 
-    182, 55, 146, 224, 232, 55, 248, 152, 55, 246, 107, 55, 236, 100, 55, 
-    220, 252, 55, 247, 127, 55, 244, 170, 229, 177, 55, 229, 151, 55, 244, 
-    14, 55, 253, 224, 55, 242, 176, 55, 251, 94, 55, 235, 24, 221, 111, 55, 
-    223, 246, 55, 222, 64, 55, 36, 42, 243, 177, 50, 36, 45, 243, 177, 50, 
-    36, 171, 69, 235, 44, 230, 74, 36, 224, 192, 69, 235, 44, 230, 74, 36, 
-    254, 104, 76, 50, 36, 250, 199, 76, 50, 36, 42, 76, 50, 36, 45, 76, 50, 
-    36, 227, 94, 230, 74, 36, 250, 199, 227, 94, 230, 74, 36, 254, 104, 227, 
-    94, 230, 74, 36, 148, 188, 50, 36, 245, 116, 188, 50, 36, 246, 193, 250, 
-    221, 36, 246, 193, 223, 227, 36, 246, 193, 249, 4, 36, 246, 193, 250, 
-    222, 252, 230, 36, 42, 45, 76, 50, 36, 246, 193, 226, 100, 36, 246, 193, 
-    236, 152, 36, 246, 193, 220, 55, 229, 28, 221, 90, 36, 227, 160, 224, 18, 
-    230, 74, 36, 51, 69, 214, 230, 74, 36, 254, 111, 100, 36, 221, 78, 220, 
-    80, 36, 218, 201, 252, 4, 50, 36, 127, 76, 230, 74, 36, 171, 51, 224, 18, 
-    230, 74, 36, 90, 243, 177, 2, 192, 247, 129, 36, 127, 243, 177, 2, 192, 
-    247, 129, 36, 42, 76, 56, 36, 45, 76, 56, 36, 253, 252, 50, 254, 254, 
-    230, 165, 254, 241, 199, 222, 23, 223, 98, 173, 6, 251, 202, 249, 77, 
-    251, 88, 251, 85, 235, 44, 100, 251, 136, 230, 165, 251, 165, 220, 86, 
-    246, 108, 250, 144, 226, 98, 249, 77, 245, 250, 102, 3, 245, 67, 102, 6, 
-    243, 225, 252, 51, 6, 243, 225, 173, 6, 243, 225, 229, 53, 250, 144, 229, 
-    53, 250, 145, 104, 124, 229, 108, 102, 6, 72, 252, 51, 6, 72, 102, 6, 
-    153, 102, 3, 153, 235, 202, 49, 252, 201, 100, 173, 6, 207, 231, 105, 55, 
-    224, 9, 227, 210, 250, 125, 102, 6, 230, 59, 173, 6, 230, 59, 173, 6, 
-    228, 163, 102, 6, 152, 252, 51, 6, 152, 173, 6, 152, 228, 239, 222, 129, 
-    227, 169, 225, 50, 78, 222, 72, 55, 221, 107, 164, 55, 219, 153, 173, 6, 
-    217, 157, 230, 85, 55, 230, 160, 55, 237, 170, 230, 160, 55, 252, 51, 6, 
-    217, 157, 215, 23, 3, 1, 237, 162, 236, 175, 55, 254, 118, 55, 102, 6, 
-    253, 204, 252, 51, 6, 251, 202, 246, 126, 100, 102, 3, 73, 102, 6, 73, 
-    102, 6, 246, 74, 215, 6, 246, 74, 102, 6, 189, 102, 3, 74, 99, 100, 252, 
-    105, 100, 244, 92, 100, 249, 178, 100, 237, 205, 224, 7, 227, 59, 6, 228, 
-    163, 245, 252, 55, 173, 3, 229, 108, 173, 3, 244, 231, 173, 6, 244, 231, 
-    173, 6, 229, 108, 173, 233, 33, 223, 71, 215, 33, 6, 245, 67, 215, 33, 6, 
-    153, 210, 33, 6, 153, 215, 33, 6, 218, 90, 173, 30, 6, 250, 46, 173, 30, 
-    3, 250, 46, 173, 30, 3, 73, 173, 30, 3, 72, 173, 30, 3, 237, 126, 228, 
-    220, 235, 43, 215, 254, 134, 229, 170, 55, 254, 177, 215, 3, 246, 74, 16, 
-    35, 213, 224, 7, 219, 55, 245, 108, 131, 225, 40, 219, 55, 245, 108, 131, 
-    232, 26, 219, 55, 245, 108, 131, 222, 61, 219, 55, 245, 108, 131, 221, 
-    251, 219, 55, 245, 108, 124, 221, 249, 219, 55, 245, 108, 131, 245, 199, 
-    219, 55, 245, 108, 124, 245, 198, 219, 55, 245, 108, 148, 245, 198, 219, 
-    55, 245, 108, 245, 116, 245, 198, 219, 55, 245, 108, 131, 224, 73, 219, 
-    55, 245, 108, 245, 170, 224, 71, 219, 55, 245, 108, 131, 246, 231, 219, 
-    55, 245, 108, 148, 246, 229, 219, 55, 245, 108, 245, 170, 246, 229, 219, 
-    55, 245, 108, 225, 43, 246, 229, 245, 108, 231, 106, 107, 227, 68, 231, 
-    107, 107, 227, 68, 231, 107, 103, 227, 68, 231, 107, 160, 227, 68, 231, 
-    107, 154, 227, 68, 231, 107, 174, 227, 68, 231, 107, 182, 227, 68, 231, 
-    107, 191, 227, 68, 231, 107, 185, 227, 68, 231, 107, 190, 227, 68, 231, 
-    107, 222, 65, 227, 68, 231, 107, 246, 211, 227, 68, 231, 107, 220, 221, 
-    227, 68, 231, 107, 245, 196, 227, 68, 231, 107, 131, 242, 161, 227, 68, 
-    231, 107, 245, 170, 242, 161, 227, 68, 231, 107, 131, 221, 231, 3, 227, 
-    68, 231, 107, 107, 3, 227, 68, 231, 107, 103, 3, 227, 68, 231, 107, 160, 
-    3, 227, 68, 231, 107, 154, 3, 227, 68, 231, 107, 174, 3, 227, 68, 231, 
-    107, 182, 3, 227, 68, 231, 107, 191, 3, 227, 68, 231, 107, 185, 3, 227, 
-    68, 231, 107, 190, 3, 227, 68, 231, 107, 222, 65, 3, 227, 68, 231, 107, 
-    246, 211, 3, 227, 68, 231, 107, 220, 221, 3, 227, 68, 231, 107, 245, 196, 
-    3, 227, 68, 231, 107, 131, 242, 161, 3, 227, 68, 231, 107, 245, 170, 242, 
-    161, 3, 227, 68, 231, 107, 131, 221, 231, 227, 68, 231, 107, 131, 221, 
-    232, 251, 203, 250, 46, 227, 68, 231, 107, 245, 170, 221, 231, 227, 68, 
-    231, 107, 222, 66, 221, 231, 227, 68, 231, 107, 210, 131, 242, 161, 7, 3, 
-    1, 210, 251, 202, 227, 68, 231, 107, 224, 82, 235, 140, 17, 227, 68, 231, 
-    107, 245, 197, 247, 10, 17, 227, 68, 231, 107, 245, 197, 221, 231, 227, 
-    68, 231, 107, 131, 242, 162, 221, 231, 219, 55, 245, 108, 217, 85, 221, 
-    249, 127, 65, 220, 53, 65, 90, 65, 247, 130, 65, 42, 45, 65, 108, 113, 
-    65, 231, 187, 218, 217, 65, 231, 187, 247, 5, 65, 224, 6, 247, 5, 65, 
-    224, 6, 218, 217, 65, 127, 76, 2, 92, 90, 76, 2, 92, 127, 218, 237, 65, 
-    90, 218, 237, 65, 127, 124, 243, 158, 65, 220, 53, 124, 243, 158, 65, 90, 
-    124, 243, 158, 65, 247, 130, 124, 243, 158, 65, 127, 76, 2, 222, 135, 90, 
-    76, 2, 222, 135, 127, 76, 245, 97, 135, 220, 53, 76, 245, 97, 135, 90, 
-    76, 245, 97, 135, 247, 130, 76, 245, 97, 135, 108, 113, 76, 2, 252, 189, 
-    127, 76, 2, 96, 90, 76, 2, 96, 127, 76, 2, 234, 247, 90, 76, 2, 234, 247, 
-    42, 45, 218, 237, 65, 42, 45, 76, 2, 92, 247, 130, 217, 33, 65, 220, 53, 
-    76, 2, 221, 170, 235, 107, 220, 53, 76, 2, 221, 170, 227, 100, 247, 130, 
-    76, 2, 221, 170, 235, 107, 247, 130, 76, 2, 221, 170, 227, 100, 90, 76, 
-    2, 250, 124, 247, 129, 247, 130, 76, 2, 250, 124, 235, 107, 254, 104, 
-    221, 120, 225, 70, 65, 250, 199, 221, 120, 225, 70, 65, 231, 187, 218, 
-    217, 76, 199, 171, 135, 127, 76, 199, 252, 201, 104, 90, 76, 199, 135, 
-    254, 104, 230, 119, 250, 222, 65, 250, 199, 230, 119, 250, 222, 65, 127, 
-    243, 177, 2, 192, 220, 52, 127, 243, 177, 2, 192, 247, 129, 220, 53, 243, 
-    177, 2, 192, 227, 100, 220, 53, 243, 177, 2, 192, 235, 107, 90, 243, 177, 
-    2, 192, 220, 52, 90, 243, 177, 2, 192, 247, 129, 247, 130, 243, 177, 2, 
-    192, 227, 100, 247, 130, 243, 177, 2, 192, 235, 107, 90, 76, 104, 127, 
-    65, 220, 53, 76, 127, 117, 247, 130, 65, 127, 76, 104, 90, 65, 127, 230, 
-    32, 254, 19, 220, 53, 230, 32, 254, 19, 90, 230, 32, 254, 19, 247, 130, 
-    230, 32, 254, 19, 127, 243, 177, 104, 90, 243, 176, 90, 243, 177, 104, 
-    127, 243, 176, 127, 51, 76, 2, 92, 42, 45, 51, 76, 2, 92, 90, 51, 76, 2, 
-    92, 127, 51, 65, 220, 53, 51, 65, 90, 51, 65, 247, 130, 51, 65, 42, 45, 
-    51, 65, 108, 113, 51, 65, 231, 187, 218, 217, 51, 65, 231, 187, 247, 5, 
-    51, 65, 224, 6, 247, 5, 51, 65, 224, 6, 218, 217, 51, 65, 127, 221, 78, 
-    65, 90, 221, 78, 65, 127, 223, 223, 65, 90, 223, 223, 65, 220, 53, 76, 2, 
-    51, 92, 247, 130, 76, 2, 51, 92, 127, 249, 145, 65, 220, 53, 249, 145, 
-    65, 90, 249, 145, 65, 247, 130, 249, 145, 65, 127, 76, 199, 135, 90, 76, 
-    199, 135, 127, 67, 65, 220, 53, 67, 65, 90, 67, 65, 247, 130, 67, 65, 
-    220, 53, 67, 76, 245, 97, 135, 220, 53, 67, 76, 230, 139, 229, 193, 220, 
-    53, 67, 76, 230, 139, 229, 194, 2, 186, 135, 220, 53, 67, 76, 230, 139, 
-    229, 194, 2, 69, 135, 220, 53, 67, 51, 65, 220, 53, 67, 51, 76, 230, 139, 
-    229, 193, 90, 67, 76, 245, 97, 218, 254, 231, 187, 218, 217, 76, 199, 
-    250, 123, 224, 6, 247, 5, 76, 199, 250, 123, 108, 113, 67, 65, 45, 76, 2, 
-    3, 250, 221, 247, 130, 76, 127, 117, 220, 53, 65, 148, 90, 254, 19, 127, 
-    76, 2, 69, 92, 90, 76, 2, 69, 92, 42, 45, 76, 2, 69, 92, 127, 76, 2, 51, 
-    69, 92, 90, 76, 2, 51, 69, 92, 42, 45, 76, 2, 51, 69, 92, 127, 230, 117, 
-    65, 90, 230, 117, 65, 42, 45, 230, 117, 65, 35, 254, 157, 250, 164, 229, 
-    223, 248, 246, 222, 14, 246, 91, 222, 14, 248, 160, 212, 246, 92, 246, 
-    199, 225, 45, 237, 215, 232, 231, 246, 213, 230, 165, 212, 254, 132, 246, 
-    213, 230, 165, 3, 246, 213, 230, 165, 250, 140, 254, 14, 233, 254, 248, 
-    160, 212, 250, 142, 254, 14, 233, 254, 3, 250, 140, 254, 14, 233, 254, 
-    246, 190, 117, 228, 222, 233, 33, 228, 229, 233, 33, 250, 128, 233, 33, 
-    223, 71, 233, 155, 55, 233, 153, 55, 61, 229, 43, 248, 188, 224, 55, 225, 
-    46, 233, 154, 253, 252, 230, 112, 227, 94, 230, 112, 251, 242, 230, 112, 
-    40, 227, 64, 250, 89, 227, 64, 245, 110, 227, 64, 228, 218, 101, 237, 
-    207, 45, 254, 119, 254, 119, 234, 22, 254, 119, 223, 245, 254, 119, 248, 
-    190, 248, 160, 212, 248, 193, 229, 234, 101, 212, 229, 234, 101, 235, 7, 
-    254, 126, 235, 7, 230, 105, 237, 174, 220, 74, 237, 186, 51, 237, 186, 
-    221, 78, 237, 186, 250, 136, 237, 186, 223, 49, 237, 186, 219, 65, 237, 
-    186, 250, 199, 237, 186, 250, 199, 250, 136, 237, 186, 254, 104, 250, 
-    136, 237, 186, 222, 13, 252, 138, 227, 224, 228, 219, 61, 233, 154, 246, 
-    96, 244, 176, 228, 219, 242, 250, 221, 180, 230, 112, 210, 221, 179, 237, 
-    170, 235, 129, 198, 224, 111, 218, 236, 218, 168, 228, 229, 212, 221, 
-    179, 233, 155, 221, 179, 253, 247, 114, 101, 212, 253, 247, 114, 101, 
-    254, 72, 114, 101, 254, 72, 251, 222, 212, 254, 249, 114, 101, 232, 135, 
-    254, 72, 231, 190, 254, 249, 114, 101, 254, 151, 114, 101, 212, 254, 151, 
-    114, 101, 254, 151, 114, 156, 114, 101, 221, 78, 221, 179, 254, 158, 114, 
-    101, 246, 150, 101, 244, 175, 246, 150, 101, 248, 247, 252, 99, 254, 74, 
-    222, 23, 235, 51, 244, 175, 114, 101, 254, 72, 114, 199, 156, 222, 23, 
-    237, 237, 230, 165, 237, 237, 117, 156, 254, 72, 114, 101, 250, 176, 246, 
-    153, 246, 154, 250, 175, 227, 94, 237, 224, 114, 101, 227, 94, 114, 101, 
-    250, 117, 101, 246, 125, 246, 152, 101, 223, 157, 246, 153, 249, 63, 114, 
-    101, 114, 199, 251, 213, 249, 78, 234, 22, 251, 212, 228, 80, 114, 101, 
-    212, 114, 101, 242, 59, 101, 212, 242, 59, 101, 223, 123, 246, 150, 101, 
-    235, 87, 156, 114, 101, 244, 30, 156, 114, 101, 235, 87, 104, 114, 101, 
-    244, 30, 104, 114, 101, 235, 87, 251, 222, 212, 114, 101, 244, 30, 251, 
-    222, 212, 114, 101, 233, 95, 235, 86, 233, 95, 244, 29, 252, 99, 212, 
-    246, 150, 101, 212, 235, 86, 212, 244, 29, 232, 135, 235, 87, 231, 190, 
-    114, 101, 232, 135, 244, 30, 231, 190, 114, 101, 235, 87, 156, 246, 150, 
-    101, 244, 30, 156, 246, 150, 101, 232, 135, 235, 87, 231, 190, 246, 150, 
-    101, 232, 135, 244, 30, 231, 190, 246, 150, 101, 235, 87, 156, 244, 29, 
-    244, 30, 156, 235, 86, 232, 135, 235, 87, 231, 190, 244, 29, 232, 135, 
-    244, 30, 231, 190, 235, 86, 228, 244, 223, 84, 228, 245, 156, 114, 101, 
-    223, 85, 156, 114, 101, 228, 245, 156, 246, 150, 101, 223, 85, 156, 246, 
-    150, 101, 248, 160, 212, 228, 247, 248, 160, 212, 223, 86, 223, 93, 230, 
-    165, 223, 58, 230, 165, 212, 112, 223, 93, 230, 165, 212, 112, 223, 58, 
-    230, 165, 223, 93, 117, 156, 114, 101, 223, 58, 117, 156, 114, 101, 232, 
-    135, 112, 223, 93, 117, 231, 190, 114, 101, 232, 135, 112, 223, 58, 117, 
-    231, 190, 114, 101, 223, 93, 117, 2, 212, 114, 101, 223, 58, 117, 2, 212, 
-    114, 101, 233, 81, 233, 82, 233, 83, 233, 82, 220, 74, 40, 237, 237, 230, 
-    165, 40, 230, 101, 230, 165, 40, 237, 237, 117, 156, 114, 101, 40, 230, 
-    101, 117, 156, 114, 101, 40, 251, 143, 40, 250, 82, 34, 229, 43, 34, 233, 
-    154, 34, 221, 176, 34, 248, 188, 224, 55, 34, 61, 230, 112, 34, 227, 94, 
-    230, 112, 34, 253, 252, 230, 112, 34, 246, 153, 34, 249, 146, 204, 229, 
-    43, 204, 233, 154, 204, 221, 176, 204, 61, 230, 112, 45, 222, 143, 42, 
-    222, 143, 113, 222, 143, 108, 222, 143, 253, 255, 233, 133, 221, 62, 245, 
-    128, 221, 78, 69, 252, 201, 45, 220, 236, 51, 69, 252, 201, 51, 45, 220, 
-    236, 248, 160, 212, 228, 214, 212, 221, 62, 248, 160, 212, 245, 129, 232, 
-    138, 51, 69, 252, 201, 51, 45, 220, 236, 228, 245, 220, 82, 227, 192, 
-    223, 85, 220, 82, 227, 192, 231, 188, 223, 101, 230, 165, 250, 140, 254, 
-    14, 231, 188, 223, 100, 231, 188, 223, 101, 117, 156, 114, 101, 250, 140, 
-    254, 14, 231, 188, 223, 101, 156, 114, 101, 230, 101, 230, 165, 237, 237, 
-    230, 165, 233, 87, 243, 131, 250, 150, 234, 49, 237, 183, 218, 118, 232, 
-    216, 231, 189, 45, 254, 120, 2, 254, 51, 45, 221, 90, 233, 33, 235, 7, 
-    254, 126, 233, 33, 235, 7, 230, 105, 233, 33, 237, 174, 233, 33, 220, 74, 
-    249, 5, 230, 112, 61, 230, 112, 223, 157, 230, 112, 248, 188, 221, 176, 
-    252, 22, 42, 231, 188, 245, 251, 225, 66, 228, 229, 45, 231, 188, 245, 
-    251, 225, 66, 228, 229, 42, 225, 66, 228, 229, 45, 225, 66, 228, 229, 
-    210, 221, 180, 246, 153, 250, 79, 235, 7, 230, 105, 250, 79, 235, 7, 254, 
-    126, 51, 223, 92, 51, 223, 57, 51, 237, 174, 51, 220, 74, 229, 62, 114, 
-    25, 229, 234, 101, 235, 87, 2, 248, 145, 244, 30, 2, 248, 145, 219, 100, 
-    233, 95, 235, 86, 219, 100, 233, 95, 244, 29, 235, 87, 114, 199, 156, 
-    244, 29, 244, 30, 114, 199, 156, 235, 86, 114, 199, 156, 235, 86, 114, 
-    199, 156, 244, 29, 114, 199, 156, 228, 244, 114, 199, 156, 223, 84, 248, 
-    160, 212, 228, 248, 156, 246, 155, 248, 160, 212, 223, 87, 156, 246, 155, 
-    212, 40, 237, 237, 117, 156, 114, 101, 212, 40, 230, 101, 117, 156, 114, 
-    101, 40, 237, 237, 117, 156, 212, 114, 101, 40, 230, 101, 117, 156, 212, 
-    114, 101, 235, 87, 251, 222, 212, 246, 150, 101, 244, 30, 251, 222, 212, 
-    246, 150, 101, 228, 245, 251, 222, 212, 246, 150, 101, 223, 85, 251, 222, 
-    212, 246, 150, 101, 212, 231, 188, 223, 101, 230, 165, 248, 160, 212, 
-    250, 142, 254, 14, 231, 188, 223, 100, 212, 231, 188, 223, 101, 117, 156, 
-    114, 101, 248, 160, 212, 250, 142, 254, 14, 231, 188, 223, 101, 156, 246, 
-    155, 69, 246, 208, 233, 191, 186, 246, 208, 108, 45, 249, 11, 246, 208, 
-    113, 45, 249, 11, 246, 208, 246, 213, 117, 2, 171, 186, 92, 246, 213, 
-    117, 2, 69, 252, 201, 253, 245, 246, 190, 117, 186, 92, 3, 246, 213, 117, 
-    2, 69, 252, 201, 253, 245, 246, 190, 117, 186, 92, 246, 213, 117, 2, 61, 
-    50, 246, 213, 117, 2, 230, 77, 3, 246, 213, 117, 2, 230, 77, 246, 213, 
-    117, 2, 220, 81, 246, 213, 117, 2, 124, 186, 223, 107, 250, 140, 2, 171, 
-    186, 92, 250, 140, 2, 69, 252, 201, 253, 245, 246, 190, 117, 186, 92, 3, 
-    250, 140, 2, 69, 252, 201, 253, 245, 246, 190, 117, 186, 92, 250, 140, 2, 
-    230, 77, 3, 250, 140, 2, 230, 77, 217, 158, 165, 252, 226, 233, 253, 249, 
-    6, 55, 246, 215, 65, 242, 182, 108, 254, 20, 113, 254, 20, 228, 225, 229, 
-    156, 218, 235, 235, 43, 42, 251, 90, 45, 251, 90, 42, 245, 149, 45, 245, 
-    149, 252, 29, 45, 250, 102, 252, 29, 42, 250, 102, 221, 120, 45, 250, 
-    102, 221, 120, 42, 250, 102, 210, 212, 55, 40, 234, 234, 254, 51, 226, 
-    80, 226, 85, 222, 72, 227, 211, 229, 16, 237, 211, 219, 88, 223, 227, 
-    229, 57, 117, 237, 182, 55, 215, 212, 55, 218, 242, 242, 183, 221, 120, 
-    42, 250, 123, 221, 120, 45, 250, 123, 252, 29, 42, 250, 123, 252, 29, 45, 
-    250, 123, 221, 120, 144, 237, 186, 252, 29, 144, 237, 186, 245, 95, 224, 
-    39, 108, 254, 21, 252, 100, 124, 186, 252, 191, 230, 107, 236, 154, 246, 
-    146, 199, 222, 23, 227, 109, 218, 152, 237, 224, 112, 227, 209, 252, 21, 
-    236, 153, 235, 112, 254, 120, 115, 227, 106, 254, 120, 115, 246, 146, 
-    199, 222, 23, 235, 115, 252, 111, 227, 93, 250, 56, 254, 158, 254, 28, 
-    222, 227, 221, 112, 227, 9, 248, 228, 230, 102, 250, 152, 222, 113, 224, 
-    49, 250, 114, 250, 113, 179, 180, 16, 242, 104, 179, 180, 16, 223, 221, 
-    228, 95, 179, 180, 16, 228, 96, 246, 155, 179, 180, 16, 228, 96, 248, 
-    193, 179, 180, 16, 228, 96, 249, 4, 179, 180, 16, 228, 96, 237, 47, 179, 
-    180, 16, 228, 96, 250, 221, 179, 180, 16, 250, 222, 223, 142, 179, 180, 
-    16, 250, 222, 237, 47, 179, 180, 16, 224, 56, 135, 179, 180, 16, 252, 
-    231, 135, 179, 180, 16, 228, 96, 224, 55, 179, 180, 16, 228, 96, 252, 
-    230, 179, 180, 16, 228, 96, 235, 86, 179, 180, 16, 228, 96, 244, 29, 179, 
-    180, 16, 127, 219, 183, 179, 180, 16, 90, 219, 183, 179, 180, 16, 228, 
-    96, 127, 65, 179, 180, 16, 228, 96, 90, 65, 179, 180, 16, 250, 222, 252, 
-    230, 179, 180, 16, 113, 222, 144, 220, 81, 179, 180, 16, 249, 63, 223, 
-    142, 179, 180, 16, 228, 96, 113, 251, 134, 179, 180, 16, 228, 96, 249, 
-    62, 179, 180, 16, 113, 222, 144, 237, 47, 179, 180, 16, 220, 53, 219, 
-    183, 179, 180, 16, 228, 96, 220, 53, 65, 179, 180, 16, 108, 222, 144, 
-    230, 77, 179, 180, 16, 249, 72, 223, 142, 179, 180, 16, 228, 96, 108, 
-    251, 134, 179, 180, 16, 228, 96, 249, 71, 179, 180, 16, 108, 222, 144, 
-    237, 47, 179, 180, 16, 247, 130, 219, 183, 179, 180, 16, 228, 96, 247, 
-    130, 65, 179, 180, 16, 228, 68, 220, 81, 179, 180, 16, 249, 63, 220, 81, 
-    179, 180, 16, 249, 5, 220, 81, 179, 180, 16, 237, 48, 220, 81, 179, 180, 
-    16, 250, 222, 220, 81, 179, 180, 16, 108, 224, 198, 237, 47, 179, 180, 
-    16, 228, 68, 228, 95, 179, 180, 16, 250, 222, 223, 156, 179, 180, 16, 
-    228, 96, 250, 175, 179, 180, 16, 108, 222, 144, 249, 13, 179, 180, 16, 
-    249, 72, 249, 13, 179, 180, 16, 223, 157, 249, 13, 179, 180, 16, 237, 48, 
-    249, 13, 179, 180, 16, 250, 222, 249, 13, 179, 180, 16, 113, 224, 198, 
-    223, 142, 179, 180, 16, 42, 224, 198, 223, 142, 179, 180, 16, 221, 180, 
-    249, 13, 179, 180, 16, 244, 30, 249, 13, 179, 180, 16, 250, 169, 135, 
-    179, 180, 16, 249, 72, 221, 179, 179, 180, 16, 217, 32, 179, 180, 16, 
-    223, 143, 221, 179, 179, 180, 16, 225, 68, 220, 81, 179, 180, 16, 228, 
-    96, 212, 246, 155, 179, 180, 16, 228, 96, 228, 81, 179, 180, 16, 113, 
-    251, 135, 221, 179, 179, 180, 16, 108, 251, 135, 221, 179, 179, 180, 16, 
-    237, 162, 179, 180, 16, 227, 149, 179, 180, 16, 230, 143, 179, 180, 16, 
-    254, 147, 220, 81, 179, 180, 16, 246, 157, 220, 81, 179, 180, 16, 237, 
-    163, 220, 81, 179, 180, 16, 230, 144, 220, 81, 179, 180, 16, 254, 146, 
-    212, 251, 45, 78, 45, 254, 120, 2, 247, 130, 217, 33, 65, 224, 177, 230, 
-    119, 252, 21, 252, 120, 100, 69, 235, 44, 2, 233, 193, 248, 145, 237, 
-    191, 100, 250, 137, 220, 79, 100, 248, 204, 220, 79, 100, 246, 201, 100, 
-    250, 160, 100, 67, 40, 2, 251, 85, 69, 235, 43, 246, 179, 100, 254, 142, 
-    236, 155, 100, 243, 142, 100, 34, 186, 252, 201, 2, 231, 183, 34, 221, 
-    91, 247, 132, 252, 1, 250, 222, 2, 231, 186, 65, 220, 77, 100, 233, 122, 
-    100, 242, 117, 100, 230, 118, 243, 224, 100, 230, 118, 235, 200, 100, 
-    229, 218, 100, 229, 217, 100, 248, 210, 250, 77, 16, 245, 124, 103, 224, 
-    20, 100, 179, 180, 16, 228, 95, 249, 86, 225, 55, 236, 155, 100, 228, 
-    237, 230, 34, 232, 120, 230, 34, 228, 234, 226, 101, 100, 250, 209, 226, 
-    101, 100, 42, 229, 230, 220, 60, 96, 42, 229, 230, 246, 86, 42, 229, 230, 
-    234, 237, 96, 45, 229, 230, 220, 60, 96, 45, 229, 230, 246, 86, 45, 229, 
-    230, 234, 237, 96, 42, 40, 252, 18, 220, 60, 250, 123, 42, 40, 252, 18, 
-    246, 86, 42, 40, 252, 18, 234, 237, 250, 123, 45, 40, 252, 18, 220, 60, 
-    250, 123, 45, 40, 252, 18, 246, 86, 45, 40, 252, 18, 234, 237, 250, 123, 
-    42, 250, 79, 252, 18, 220, 60, 96, 42, 250, 79, 252, 18, 233, 193, 229, 
-    102, 42, 250, 79, 252, 18, 234, 237, 96, 250, 79, 252, 18, 246, 86, 45, 
-    250, 79, 252, 18, 220, 60, 96, 45, 250, 79, 252, 18, 233, 193, 229, 102, 
-    45, 250, 79, 252, 18, 234, 237, 96, 237, 187, 246, 86, 186, 235, 44, 246, 
-    86, 220, 60, 42, 156, 234, 237, 45, 250, 79, 252, 18, 226, 86, 220, 60, 
-    45, 156, 234, 237, 42, 250, 79, 252, 18, 226, 86, 223, 72, 221, 119, 223, 
-    72, 252, 28, 221, 120, 40, 115, 252, 29, 40, 115, 252, 29, 40, 252, 18, 
-    104, 221, 120, 40, 115, 32, 16, 252, 28, 42, 69, 86, 235, 43, 45, 69, 86, 
-    235, 43, 186, 226, 112, 235, 42, 186, 226, 112, 235, 41, 186, 226, 112, 
-    235, 40, 186, 226, 112, 235, 39, 249, 54, 16, 170, 69, 25, 221, 120, 227, 
-    109, 249, 54, 16, 170, 69, 25, 252, 29, 227, 109, 249, 54, 16, 170, 69, 
-    2, 250, 221, 249, 54, 16, 170, 113, 25, 186, 2, 250, 221, 249, 54, 16, 
-    170, 108, 25, 186, 2, 250, 221, 249, 54, 16, 170, 69, 2, 221, 90, 249, 
-    54, 16, 170, 113, 25, 186, 2, 221, 90, 249, 54, 16, 170, 108, 25, 186, 2, 
-    221, 90, 249, 54, 16, 170, 69, 25, 218, 236, 249, 54, 16, 170, 113, 25, 
-    186, 2, 218, 236, 249, 54, 16, 170, 108, 25, 186, 2, 218, 236, 249, 54, 
-    16, 170, 113, 25, 242, 241, 249, 54, 16, 170, 108, 25, 242, 241, 249, 54, 
-    16, 170, 69, 25, 221, 120, 235, 115, 249, 54, 16, 170, 69, 25, 252, 29, 
-    235, 115, 40, 245, 133, 227, 163, 100, 246, 225, 100, 69, 235, 44, 246, 
-    86, 233, 233, 252, 8, 233, 233, 171, 104, 224, 191, 233, 233, 224, 192, 
-    104, 235, 2, 233, 233, 171, 104, 124, 224, 179, 233, 233, 124, 224, 180, 
-    104, 235, 2, 233, 233, 124, 224, 180, 237, 55, 233, 233, 221, 75, 233, 
-    233, 222, 43, 233, 233, 229, 174, 247, 9, 244, 24, 245, 81, 221, 120, 
-    229, 229, 252, 29, 229, 229, 221, 120, 250, 79, 115, 252, 29, 250, 79, 
-    115, 221, 120, 221, 114, 224, 236, 115, 252, 29, 221, 114, 224, 236, 115, 
-    67, 221, 101, 252, 111, 227, 94, 2, 250, 221, 223, 129, 245, 155, 255, 3, 
-    250, 76, 246, 214, 237, 174, 249, 86, 246, 88, 100, 16, 35, 231, 110, 16, 
-    35, 223, 154, 117, 243, 157, 16, 35, 223, 154, 117, 222, 39, 16, 35, 246, 
-    190, 117, 222, 39, 16, 35, 246, 190, 117, 221, 104, 16, 35, 246, 181, 16, 
-    35, 254, 252, 16, 35, 252, 119, 16, 35, 252, 229, 16, 35, 186, 222, 145, 
-    16, 35, 235, 44, 245, 224, 16, 35, 69, 222, 145, 16, 35, 245, 124, 245, 
-    224, 16, 35, 251, 128, 227, 162, 16, 35, 224, 217, 230, 83, 16, 35, 224, 
-    217, 237, 223, 16, 35, 249, 142, 235, 34, 246, 135, 16, 35, 249, 42, 250, 
-    132, 107, 16, 35, 249, 42, 250, 132, 103, 16, 35, 249, 42, 250, 132, 160, 
-    16, 35, 249, 42, 250, 132, 154, 16, 35, 232, 136, 254, 252, 16, 35, 222, 
-    224, 238, 28, 16, 35, 246, 190, 117, 221, 105, 252, 45, 16, 35, 251, 152, 
-    16, 35, 246, 190, 117, 234, 17, 16, 35, 223, 90, 16, 35, 246, 135, 16, 
-    35, 245, 189, 225, 54, 16, 35, 244, 23, 225, 54, 16, 35, 227, 212, 225, 
-    54, 16, 35, 220, 73, 225, 54, 16, 35, 223, 254, 16, 35, 249, 69, 252, 48, 
-    100, 230, 119, 252, 21, 16, 35, 232, 122, 16, 35, 249, 70, 245, 124, 103, 
-    16, 35, 223, 91, 245, 124, 103, 230, 171, 96, 230, 171, 251, 64, 230, 
-    171, 245, 127, 230, 171, 237, 170, 245, 127, 230, 171, 252, 117, 251, 
-    247, 230, 171, 252, 25, 221, 200, 230, 171, 252, 15, 252, 204, 242, 58, 
-    230, 171, 254, 135, 117, 251, 44, 230, 171, 249, 146, 230, 171, 250, 70, 
-    254, 254, 231, 108, 230, 171, 51, 252, 230, 34, 20, 107, 34, 20, 103, 34, 
-    20, 160, 34, 20, 154, 34, 20, 174, 34, 20, 182, 34, 20, 191, 34, 20, 185, 
-    34, 20, 190, 34, 54, 222, 65, 34, 54, 246, 211, 34, 54, 220, 221, 34, 54, 
-    221, 247, 34, 54, 245, 111, 34, 54, 245, 200, 34, 54, 224, 77, 34, 54, 
-    225, 41, 34, 54, 246, 233, 34, 54, 232, 29, 34, 54, 220, 219, 82, 20, 
-    107, 82, 20, 103, 82, 20, 160, 82, 20, 154, 82, 20, 174, 82, 20, 182, 82, 
-    20, 191, 82, 20, 185, 82, 20, 190, 82, 54, 222, 65, 82, 54, 246, 211, 82, 
-    54, 220, 221, 82, 54, 221, 247, 82, 54, 245, 111, 82, 54, 245, 200, 82, 
-    54, 224, 77, 82, 54, 225, 41, 82, 54, 246, 233, 82, 54, 232, 29, 82, 54, 
-    220, 219, 20, 131, 245, 90, 223, 136, 20, 124, 245, 90, 223, 136, 20, 
-    148, 245, 90, 223, 136, 20, 245, 116, 245, 90, 223, 136, 20, 245, 170, 
-    245, 90, 223, 136, 20, 224, 82, 245, 90, 223, 136, 20, 225, 43, 245, 90, 
-    223, 136, 20, 246, 235, 245, 90, 223, 136, 20, 232, 31, 245, 90, 223, 
-    136, 54, 222, 66, 245, 90, 223, 136, 54, 246, 212, 245, 90, 223, 136, 54, 
-    220, 222, 245, 90, 223, 136, 54, 221, 248, 245, 90, 223, 136, 54, 245, 
-    112, 245, 90, 223, 136, 54, 245, 201, 245, 90, 223, 136, 54, 224, 78, 
-    245, 90, 223, 136, 54, 225, 42, 245, 90, 223, 136, 54, 246, 234, 245, 90, 
-    223, 136, 54, 232, 30, 245, 90, 223, 136, 54, 220, 220, 245, 90, 223, 
-    136, 82, 7, 3, 1, 60, 82, 7, 3, 1, 253, 204, 82, 7, 3, 1, 251, 202, 82, 
-    7, 3, 1, 250, 46, 82, 7, 3, 1, 73, 82, 7, 3, 1, 246, 74, 82, 7, 3, 1, 
-    245, 67, 82, 7, 3, 1, 243, 225, 82, 7, 3, 1, 72, 82, 7, 3, 1, 237, 126, 
-    82, 7, 3, 1, 237, 17, 82, 7, 3, 1, 153, 82, 7, 3, 1, 189, 82, 7, 3, 1, 
-    207, 82, 7, 3, 1, 74, 82, 7, 3, 1, 230, 59, 82, 7, 3, 1, 228, 163, 82, 7, 
-    3, 1, 152, 82, 7, 3, 1, 198, 82, 7, 3, 1, 222, 201, 82, 7, 3, 1, 68, 82, 
-    7, 3, 1, 216, 216, 82, 7, 3, 1, 219, 40, 82, 7, 3, 1, 218, 151, 82, 7, 3, 
-    1, 218, 90, 82, 7, 3, 1, 217, 157, 34, 7, 6, 1, 60, 34, 7, 6, 1, 253, 
-    204, 34, 7, 6, 1, 251, 202, 34, 7, 6, 1, 250, 46, 34, 7, 6, 1, 73, 34, 7, 
-    6, 1, 246, 74, 34, 7, 6, 1, 245, 67, 34, 7, 6, 1, 243, 225, 34, 7, 6, 1, 
-    72, 34, 7, 6, 1, 237, 126, 34, 7, 6, 1, 237, 17, 34, 7, 6, 1, 153, 34, 7, 
-    6, 1, 189, 34, 7, 6, 1, 207, 34, 7, 6, 1, 74, 34, 7, 6, 1, 230, 59, 34, 
-    7, 6, 1, 228, 163, 34, 7, 6, 1, 152, 34, 7, 6, 1, 198, 34, 7, 6, 1, 222, 
-    201, 34, 7, 6, 1, 68, 34, 7, 6, 1, 216, 216, 34, 7, 6, 1, 219, 40, 34, 7, 
-    6, 1, 218, 151, 34, 7, 6, 1, 218, 90, 34, 7, 6, 1, 217, 157, 34, 7, 3, 1, 
-    60, 34, 7, 3, 1, 253, 204, 34, 7, 3, 1, 251, 202, 34, 7, 3, 1, 250, 46, 
-    34, 7, 3, 1, 73, 34, 7, 3, 1, 246, 74, 34, 7, 3, 1, 245, 67, 34, 7, 3, 1, 
-    243, 225, 34, 7, 3, 1, 72, 34, 7, 3, 1, 237, 126, 34, 7, 3, 1, 237, 17, 
-    34, 7, 3, 1, 153, 34, 7, 3, 1, 189, 34, 7, 3, 1, 207, 34, 7, 3, 1, 74, 
-    34, 7, 3, 1, 230, 59, 34, 7, 3, 1, 228, 163, 34, 7, 3, 1, 152, 34, 7, 3, 
-    1, 198, 34, 7, 3, 1, 222, 201, 34, 7, 3, 1, 68, 34, 7, 3, 1, 216, 216, 
-    34, 7, 3, 1, 219, 40, 34, 7, 3, 1, 218, 151, 34, 7, 3, 1, 218, 90, 34, 7, 
-    3, 1, 217, 157, 34, 20, 217, 84, 232, 136, 34, 54, 246, 211, 232, 136, 
-    34, 54, 220, 221, 232, 136, 34, 54, 221, 247, 232, 136, 34, 54, 245, 111, 
-    232, 136, 34, 54, 245, 200, 232, 136, 34, 54, 224, 77, 232, 136, 34, 54, 
-    225, 41, 232, 136, 34, 54, 246, 233, 232, 136, 34, 54, 232, 29, 232, 136, 
-    34, 54, 220, 219, 51, 34, 20, 107, 51, 34, 20, 103, 51, 34, 20, 160, 51, 
-    34, 20, 154, 51, 34, 20, 174, 51, 34, 20, 182, 51, 34, 20, 191, 51, 34, 
-    20, 185, 51, 34, 20, 190, 51, 34, 54, 222, 65, 232, 136, 34, 20, 217, 84, 
-    86, 89, 170, 242, 241, 86, 89, 106, 242, 241, 86, 89, 170, 219, 152, 86, 
-    89, 106, 219, 152, 86, 89, 170, 221, 78, 249, 147, 242, 241, 86, 89, 106, 
-    221, 78, 249, 147, 242, 241, 86, 89, 170, 221, 78, 249, 147, 219, 152, 
-    86, 89, 106, 221, 78, 249, 147, 219, 152, 86, 89, 170, 228, 92, 249, 147, 
-    242, 241, 86, 89, 106, 228, 92, 249, 147, 242, 241, 86, 89, 170, 228, 92, 
-    249, 147, 219, 152, 86, 89, 106, 228, 92, 249, 147, 219, 152, 86, 89, 
-    170, 113, 25, 227, 109, 86, 89, 113, 170, 25, 45, 243, 149, 86, 89, 113, 
-    106, 25, 45, 235, 58, 86, 89, 106, 113, 25, 227, 109, 86, 89, 170, 113, 
-    25, 235, 115, 86, 89, 113, 170, 25, 42, 243, 149, 86, 89, 113, 106, 25, 
-    42, 235, 58, 86, 89, 106, 113, 25, 235, 115, 86, 89, 170, 108, 25, 227, 
-    109, 86, 89, 108, 170, 25, 45, 243, 149, 86, 89, 108, 106, 25, 45, 235, 
-    58, 86, 89, 106, 108, 25, 227, 109, 86, 89, 170, 108, 25, 235, 115, 86, 
-    89, 108, 170, 25, 42, 243, 149, 86, 89, 108, 106, 25, 42, 235, 58, 86, 
-    89, 106, 108, 25, 235, 115, 86, 89, 170, 69, 25, 227, 109, 86, 89, 69, 
-    170, 25, 45, 243, 149, 86, 89, 108, 106, 25, 45, 113, 235, 58, 86, 89, 
-    113, 106, 25, 45, 108, 235, 58, 86, 89, 69, 106, 25, 45, 235, 58, 86, 89, 
-    113, 170, 25, 45, 108, 243, 149, 86, 89, 108, 170, 25, 45, 113, 243, 149, 
-    86, 89, 106, 69, 25, 227, 109, 86, 89, 170, 69, 25, 235, 115, 86, 89, 69, 
-    170, 25, 42, 243, 149, 86, 89, 108, 106, 25, 42, 113, 235, 58, 86, 89, 
-    113, 106, 25, 42, 108, 235, 58, 86, 89, 69, 106, 25, 42, 235, 58, 86, 89, 
-    113, 170, 25, 42, 108, 243, 149, 86, 89, 108, 170, 25, 42, 113, 243, 149, 
-    86, 89, 106, 69, 25, 235, 115, 86, 89, 170, 113, 25, 242, 241, 86, 89, 
-    42, 106, 25, 45, 113, 235, 58, 86, 89, 45, 106, 25, 42, 113, 235, 58, 86, 
-    89, 113, 170, 25, 186, 243, 149, 86, 89, 113, 106, 25, 186, 235, 58, 86, 
-    89, 45, 170, 25, 42, 113, 243, 149, 86, 89, 42, 170, 25, 45, 113, 243, 
-    149, 86, 89, 106, 113, 25, 242, 241, 86, 89, 170, 108, 25, 242, 241, 86, 
-    89, 42, 106, 25, 45, 108, 235, 58, 86, 89, 45, 106, 25, 42, 108, 235, 58, 
-    86, 89, 108, 170, 25, 186, 243, 149, 86, 89, 108, 106, 25, 186, 235, 58, 
-    86, 89, 45, 170, 25, 42, 108, 243, 149, 86, 89, 42, 170, 25, 45, 108, 
-    243, 149, 86, 89, 106, 108, 25, 242, 241, 86, 89, 170, 69, 25, 242, 241, 
-    86, 89, 42, 106, 25, 45, 69, 235, 58, 86, 89, 45, 106, 25, 42, 69, 235, 
-    58, 86, 89, 69, 170, 25, 186, 243, 149, 86, 89, 108, 106, 25, 113, 186, 
-    235, 58, 86, 89, 113, 106, 25, 108, 186, 235, 58, 86, 89, 69, 106, 25, 
-    186, 235, 58, 86, 89, 42, 108, 106, 25, 45, 113, 235, 58, 86, 89, 45, 
-    108, 106, 25, 42, 113, 235, 58, 86, 89, 42, 113, 106, 25, 45, 108, 235, 
-    58, 86, 89, 45, 113, 106, 25, 42, 108, 235, 58, 86, 89, 113, 170, 25, 
-    108, 186, 243, 149, 86, 89, 108, 170, 25, 113, 186, 243, 149, 86, 89, 45, 
-    170, 25, 42, 69, 243, 149, 86, 89, 42, 170, 25, 45, 69, 243, 149, 86, 89, 
-    106, 69, 25, 242, 241, 86, 89, 170, 51, 249, 147, 242, 241, 86, 89, 106, 
-    51, 249, 147, 242, 241, 86, 89, 170, 51, 249, 147, 219, 152, 86, 89, 106, 
-    51, 249, 147, 219, 152, 86, 89, 51, 242, 241, 86, 89, 51, 219, 152, 86, 
-    89, 113, 224, 109, 25, 45, 247, 138, 86, 89, 113, 51, 25, 45, 224, 108, 
-    86, 89, 51, 113, 25, 227, 109, 86, 89, 113, 224, 109, 25, 42, 247, 138, 
-    86, 89, 113, 51, 25, 42, 224, 108, 86, 89, 51, 113, 25, 235, 115, 86, 89, 
-    108, 224, 109, 25, 45, 247, 138, 86, 89, 108, 51, 25, 45, 224, 108, 86, 
-    89, 51, 108, 25, 227, 109, 86, 89, 108, 224, 109, 25, 42, 247, 138, 86, 
-    89, 108, 51, 25, 42, 224, 108, 86, 89, 51, 108, 25, 235, 115, 86, 89, 69, 
-    224, 109, 25, 45, 247, 138, 86, 89, 69, 51, 25, 45, 224, 108, 86, 89, 51, 
-    69, 25, 227, 109, 86, 89, 69, 224, 109, 25, 42, 247, 138, 86, 89, 69, 51, 
-    25, 42, 224, 108, 86, 89, 51, 69, 25, 235, 115, 86, 89, 113, 224, 109, 
-    25, 186, 247, 138, 86, 89, 113, 51, 25, 186, 224, 108, 86, 89, 51, 113, 
-    25, 242, 241, 86, 89, 108, 224, 109, 25, 186, 247, 138, 86, 89, 108, 51, 
-    25, 186, 224, 108, 86, 89, 51, 108, 25, 242, 241, 86, 89, 69, 224, 109, 
-    25, 186, 247, 138, 86, 89, 69, 51, 25, 186, 224, 108, 86, 89, 51, 69, 25, 
-    242, 241, 86, 89, 170, 254, 52, 113, 25, 227, 109, 86, 89, 170, 254, 52, 
-    113, 25, 235, 115, 86, 89, 170, 254, 52, 108, 25, 235, 115, 86, 89, 170, 
-    254, 52, 108, 25, 227, 109, 86, 89, 170, 249, 11, 220, 60, 45, 199, 234, 
-    237, 235, 115, 86, 89, 170, 249, 11, 220, 60, 42, 199, 234, 237, 227, 
-    109, 86, 89, 170, 249, 11, 250, 100, 86, 89, 170, 235, 115, 86, 89, 170, 
-    220, 63, 86, 89, 170, 227, 109, 86, 89, 170, 247, 132, 86, 89, 106, 235, 
-    115, 86, 89, 106, 220, 63, 86, 89, 106, 227, 109, 86, 89, 106, 247, 132, 
-    86, 89, 170, 42, 25, 106, 227, 109, 86, 89, 170, 108, 25, 106, 247, 132, 
-    86, 89, 106, 42, 25, 170, 227, 109, 86, 89, 106, 108, 25, 170, 247, 132, 
-    220, 60, 144, 252, 45, 234, 237, 131, 246, 232, 252, 45, 234, 237, 131, 
-    228, 90, 252, 45, 234, 237, 148, 246, 230, 252, 45, 234, 237, 144, 252, 
-    45, 234, 237, 245, 170, 246, 230, 252, 45, 234, 237, 148, 228, 88, 252, 
-    45, 234, 237, 225, 43, 246, 230, 252, 45, 245, 90, 252, 45, 42, 225, 43, 
-    246, 230, 252, 45, 42, 148, 228, 88, 252, 45, 42, 245, 170, 246, 230, 
-    252, 45, 42, 144, 252, 45, 42, 148, 246, 230, 252, 45, 42, 131, 228, 90, 
-    252, 45, 42, 131, 246, 232, 252, 45, 45, 144, 252, 45, 170, 225, 15, 234, 
-    18, 225, 15, 249, 152, 225, 15, 220, 60, 131, 246, 232, 252, 45, 45, 131, 
-    246, 232, 252, 45, 228, 94, 234, 237, 235, 115, 228, 94, 234, 237, 227, 
-    109, 228, 94, 220, 60, 235, 115, 228, 94, 220, 60, 42, 25, 234, 237, 42, 
-    25, 234, 237, 227, 109, 228, 94, 220, 60, 42, 25, 234, 237, 227, 109, 
-    228, 94, 220, 60, 42, 25, 220, 60, 45, 25, 234, 237, 235, 115, 228, 94, 
-    220, 60, 42, 25, 220, 60, 45, 25, 234, 237, 227, 109, 228, 94, 220, 60, 
-    227, 109, 228, 94, 220, 60, 45, 25, 234, 237, 235, 115, 228, 94, 220, 60, 
-    45, 25, 234, 237, 42, 25, 234, 237, 227, 109, 84, 223, 227, 67, 223, 227, 
-    67, 40, 2, 227, 55, 250, 122, 67, 40, 250, 141, 84, 3, 223, 227, 40, 2, 
-    186, 245, 187, 40, 2, 69, 245, 187, 40, 2, 230, 95, 250, 96, 245, 187, 
-    40, 2, 220, 60, 42, 199, 234, 237, 45, 245, 187, 40, 2, 220, 60, 45, 199, 
-    234, 237, 42, 245, 187, 40, 2, 249, 11, 250, 96, 245, 187, 84, 3, 223, 
-    227, 67, 3, 223, 227, 84, 227, 208, 67, 227, 208, 84, 69, 227, 208, 67, 
-    69, 227, 208, 84, 229, 232, 67, 229, 232, 84, 220, 62, 221, 90, 67, 220, 
-    62, 221, 90, 84, 220, 62, 3, 221, 90, 67, 220, 62, 3, 221, 90, 84, 227, 
-    106, 221, 90, 67, 227, 106, 221, 90, 84, 227, 106, 3, 221, 90, 67, 227, 
-    106, 3, 221, 90, 84, 227, 106, 229, 29, 67, 227, 106, 229, 29, 84, 247, 
-    131, 221, 90, 67, 247, 131, 221, 90, 84, 247, 131, 3, 221, 90, 67, 247, 
-    131, 3, 221, 90, 84, 235, 112, 221, 90, 67, 235, 112, 221, 90, 84, 235, 
-    112, 3, 221, 90, 67, 235, 112, 3, 221, 90, 84, 235, 112, 229, 29, 67, 
-    235, 112, 229, 29, 84, 249, 4, 67, 249, 4, 67, 249, 5, 250, 141, 84, 3, 
-    249, 4, 245, 175, 234, 234, 67, 250, 221, 247, 143, 250, 221, 250, 222, 
-    2, 69, 245, 187, 251, 239, 84, 250, 221, 250, 222, 2, 42, 144, 252, 53, 
-    250, 222, 2, 45, 144, 252, 53, 250, 222, 2, 234, 237, 144, 252, 53, 250, 
-    222, 2, 220, 60, 144, 252, 53, 250, 222, 2, 220, 60, 45, 228, 94, 252, 
-    53, 250, 222, 2, 254, 158, 251, 222, 220, 60, 42, 228, 94, 252, 53, 42, 
-    144, 84, 250, 221, 45, 144, 84, 250, 221, 237, 171, 251, 241, 237, 171, 
-    67, 250, 221, 220, 60, 144, 237, 171, 67, 250, 221, 234, 237, 144, 237, 
-    171, 67, 250, 221, 220, 60, 42, 228, 94, 250, 219, 254, 51, 220, 60, 45, 
-    228, 94, 250, 219, 254, 51, 234, 237, 45, 228, 94, 250, 219, 254, 51, 
-    234, 237, 42, 228, 94, 250, 219, 254, 51, 220, 60, 144, 250, 221, 234, 
-    237, 144, 250, 221, 84, 234, 237, 45, 221, 90, 84, 234, 237, 42, 221, 90, 
-    84, 220, 60, 42, 221, 90, 84, 220, 60, 45, 221, 90, 67, 251, 241, 40, 2, 
-    42, 144, 252, 53, 40, 2, 45, 144, 252, 53, 40, 2, 220, 60, 42, 249, 11, 
-    144, 252, 53, 40, 2, 234, 237, 45, 249, 11, 144, 252, 53, 67, 40, 2, 69, 
-    252, 63, 235, 43, 67, 220, 62, 221, 91, 2, 248, 145, 220, 62, 221, 91, 2, 
-    42, 144, 252, 53, 220, 62, 221, 91, 2, 45, 144, 252, 53, 235, 146, 250, 
-    221, 67, 40, 2, 220, 60, 42, 228, 93, 67, 40, 2, 234, 237, 42, 228, 93, 
-    67, 40, 2, 234, 237, 45, 228, 93, 67, 40, 2, 220, 60, 45, 228, 93, 67, 
-    250, 222, 2, 220, 60, 42, 228, 93, 67, 250, 222, 2, 234, 237, 42, 228, 
-    93, 67, 250, 222, 2, 234, 237, 45, 228, 93, 67, 250, 222, 2, 220, 60, 45, 
-    228, 93, 220, 60, 42, 221, 90, 220, 60, 45, 221, 90, 234, 237, 42, 221, 
-    90, 67, 234, 18, 223, 227, 84, 234, 18, 223, 227, 67, 234, 18, 3, 223, 
-    227, 84, 234, 18, 3, 223, 227, 234, 237, 45, 221, 90, 84, 223, 69, 2, 
-    227, 220, 250, 189, 220, 91, 224, 28, 250, 171, 84, 223, 156, 67, 223, 
-    156, 235, 56, 221, 220, 223, 68, 254, 10, 231, 201, 249, 47, 231, 201, 
-    250, 149, 230, 109, 84, 222, 71, 67, 222, 71, 252, 213, 252, 21, 252, 
-    213, 86, 2, 251, 44, 252, 213, 86, 2, 218, 151, 226, 149, 220, 92, 2, 
-    227, 243, 247, 117, 242, 187, 252, 98, 67, 224, 196, 229, 102, 84, 224, 
-    196, 229, 102, 225, 11, 210, 227, 59, 245, 148, 243, 154, 251, 241, 84, 
-    42, 229, 28, 237, 213, 84, 45, 229, 28, 237, 213, 67, 42, 229, 28, 237, 
-    213, 67, 108, 229, 28, 237, 213, 67, 45, 229, 28, 237, 213, 67, 113, 229, 
-    28, 237, 213, 224, 60, 25, 250, 99, 251, 120, 55, 227, 250, 55, 252, 69, 
-    55, 251, 164, 254, 115, 230, 96, 250, 100, 251, 32, 227, 149, 250, 101, 
-    117, 234, 243, 250, 101, 117, 237, 105, 223, 157, 25, 250, 104, 245, 241, 
-    100, 254, 238, 225, 13, 243, 193, 25, 224, 138, 229, 197, 100, 217, 241, 
-    218, 45, 221, 82, 35, 243, 151, 221, 82, 35, 235, 165, 221, 82, 35, 245, 
-    179, 221, 82, 35, 221, 221, 221, 82, 35, 218, 194, 221, 82, 35, 218, 240, 
-    221, 82, 35, 233, 107, 221, 82, 35, 247, 8, 218, 211, 117, 249, 30, 67, 
-    245, 94, 246, 3, 67, 224, 38, 246, 3, 84, 224, 38, 246, 3, 67, 223, 69, 
-    2, 227, 220, 245, 178, 228, 90, 233, 117, 235, 142, 228, 90, 233, 117, 
-    233, 249, 245, 217, 55, 247, 8, 234, 90, 55, 237, 31, 226, 124, 220, 45, 
-    232, 129, 229, 41, 254, 39, 222, 104, 244, 182, 251, 150, 235, 90, 219, 
-    80, 235, 65, 226, 102, 226, 163, 251, 140, 254, 68, 229, 66, 67, 251, 37, 
-    236, 102, 67, 251, 37, 228, 83, 67, 251, 37, 227, 65, 67, 251, 37, 252, 
-    62, 67, 251, 37, 236, 59, 67, 251, 37, 229, 207, 84, 251, 37, 236, 102, 
-    84, 251, 37, 228, 83, 84, 251, 37, 227, 65, 84, 251, 37, 252, 62, 84, 
-    251, 37, 236, 59, 84, 251, 37, 229, 207, 84, 223, 252, 223, 80, 67, 243, 
-    154, 223, 80, 67, 249, 5, 223, 80, 84, 250, 188, 223, 80, 67, 223, 252, 
-    223, 80, 84, 243, 154, 223, 80, 84, 249, 5, 223, 80, 67, 250, 188, 223, 
-    80, 242, 187, 223, 231, 228, 90, 231, 180, 246, 232, 231, 180, 252, 142, 
-    246, 232, 231, 177, 252, 142, 224, 76, 231, 177, 233, 59, 245, 157, 55, 
-    233, 59, 232, 205, 55, 233, 59, 225, 1, 55, 218, 217, 166, 250, 100, 247, 
-    5, 166, 250, 100, 220, 70, 227, 204, 100, 227, 204, 16, 35, 220, 197, 
-    229, 50, 227, 204, 16, 35, 220, 196, 229, 50, 227, 204, 16, 35, 220, 195, 
-    229, 50, 227, 204, 16, 35, 220, 194, 229, 50, 227, 204, 16, 35, 220, 193, 
-    229, 50, 227, 204, 16, 35, 220, 192, 229, 50, 227, 204, 16, 35, 220, 191, 
-    229, 50, 227, 204, 16, 35, 244, 180, 234, 50, 84, 220, 70, 227, 204, 100, 
-    227, 205, 229, 245, 100, 229, 222, 229, 245, 100, 229, 162, 229, 245, 55, 
-    218, 209, 100, 248, 254, 246, 2, 248, 254, 246, 1, 248, 254, 246, 0, 248, 
-    254, 245, 255, 248, 254, 245, 254, 248, 254, 245, 253, 67, 250, 222, 2, 
-    61, 227, 109, 67, 250, 222, 2, 124, 248, 143, 84, 250, 222, 2, 67, 61, 
-    227, 109, 84, 250, 222, 2, 124, 67, 248, 143, 233, 125, 35, 218, 45, 233, 
-    125, 35, 217, 240, 248, 237, 35, 244, 31, 218, 45, 248, 237, 35, 235, 85, 
-    217, 240, 248, 237, 35, 235, 85, 218, 45, 248, 237, 35, 244, 31, 217, 
-    240, 67, 245, 163, 84, 245, 163, 243, 193, 25, 229, 104, 254, 128, 250, 
-    98, 223, 24, 223, 164, 117, 254, 218, 226, 113, 254, 167, 245, 144, 244, 
-    189, 223, 164, 117, 243, 133, 253, 238, 100, 245, 153, 230, 80, 67, 223, 
-    156, 148, 235, 38, 250, 131, 227, 109, 148, 235, 38, 250, 131, 235, 115, 
-    218, 250, 55, 116, 219, 66, 55, 247, 135, 245, 217, 55, 247, 135, 234, 
-    90, 55, 237, 179, 245, 217, 25, 234, 90, 55, 234, 90, 25, 245, 217, 55, 
-    234, 90, 2, 214, 55, 234, 90, 2, 214, 25, 234, 90, 25, 245, 217, 55, 69, 
-    234, 90, 2, 214, 55, 186, 234, 90, 2, 214, 55, 234, 18, 67, 250, 221, 
-    234, 18, 84, 250, 221, 234, 18, 3, 67, 250, 221, 234, 62, 100, 248, 186, 
-    100, 220, 69, 229, 221, 100, 250, 178, 245, 86, 220, 42, 232, 124, 251, 
-    72, 230, 25, 237, 37, 219, 98, 251, 18, 84, 233, 118, 235, 53, 225, 34, 
-    225, 64, 228, 75, 225, 48, 224, 24, 252, 215, 252, 188, 204, 236, 154, 
-    67, 247, 122, 234, 86, 67, 247, 122, 236, 102, 84, 247, 122, 234, 86, 84, 
-    247, 122, 236, 102, 224, 29, 218, 189, 224, 31, 223, 69, 252, 125, 250, 
-    189, 227, 242, 84, 224, 28, 221, 222, 250, 190, 25, 227, 242, 215, 67, 
-    224, 196, 229, 102, 215, 84, 224, 196, 229, 102, 67, 249, 5, 237, 224, 
-    223, 227, 250, 95, 235, 149, 248, 206, 251, 137, 229, 104, 251, 138, 224, 
-    51, 243, 141, 2, 67, 250, 100, 34, 250, 95, 235, 149, 251, 65, 231, 205, 
-    246, 174, 254, 144, 230, 135, 42, 218, 230, 221, 106, 84, 220, 204, 42, 
-    218, 230, 221, 106, 67, 220, 204, 42, 218, 230, 221, 106, 84, 42, 235, 
-    150, 233, 248, 67, 42, 235, 150, 233, 248, 247, 120, 224, 46, 55, 106, 
-    67, 247, 131, 221, 90, 42, 250, 197, 246, 174, 204, 226, 149, 245, 247, 
-    249, 11, 237, 224, 67, 250, 222, 237, 224, 84, 223, 227, 84, 221, 63, 
-    227, 167, 42, 246, 173, 227, 167, 42, 246, 172, 106, 250, 222, 2, 214, 
-    25, 124, 188, 50, 84, 250, 101, 230, 139, 224, 218, 224, 207, 224, 174, 
-    250, 245, 251, 125, 243, 93, 224, 83, 244, 190, 218, 189, 242, 171, 244, 
-    190, 2, 243, 188, 234, 79, 16, 35, 235, 57, 233, 107, 220, 92, 230, 139, 
-    244, 24, 245, 117, 245, 164, 237, 224, 242, 252, 245, 209, 226, 160, 40, 
-    245, 116, 250, 122, 224, 63, 242, 66, 224, 65, 229, 158, 2, 252, 215, 
-    222, 62, 237, 118, 252, 204, 100, 243, 156, 244, 33, 100, 245, 91, 228, 
-    198, 250, 83, 230, 139, 84, 223, 227, 67, 245, 164, 2, 186, 233, 193, 84, 
-    223, 120, 220, 60, 252, 49, 226, 103, 84, 226, 103, 234, 237, 252, 49, 
-    226, 103, 67, 226, 103, 222, 72, 235, 10, 55, 222, 114, 247, 119, 254, 
-    187, 246, 170, 219, 93, 243, 189, 218, 167, 243, 189, 234, 237, 45, 229, 
-    181, 229, 181, 220, 60, 45, 229, 181, 67, 232, 59, 84, 232, 59, 251, 45, 
-    78, 106, 251, 45, 78, 233, 84, 218, 151, 106, 233, 84, 218, 151, 252, 
-    213, 218, 151, 106, 252, 213, 218, 151, 230, 80, 23, 250, 100, 106, 23, 
-    250, 100, 230, 119, 251, 85, 250, 100, 106, 230, 119, 251, 85, 250, 100, 
-    7, 250, 100, 225, 14, 67, 7, 250, 100, 230, 80, 7, 250, 100, 234, 88, 
-    250, 100, 223, 157, 117, 249, 140, 245, 116, 222, 83, 253, 251, 245, 116, 
-    252, 214, 253, 251, 106, 245, 116, 252, 214, 253, 251, 245, 116, 250, 
-    186, 253, 251, 84, 245, 116, 229, 30, 223, 156, 67, 245, 116, 229, 30, 
-    223, 156, 223, 125, 230, 80, 67, 223, 156, 34, 67, 223, 156, 230, 119, 
-    251, 85, 84, 223, 156, 84, 251, 85, 67, 223, 156, 230, 80, 84, 223, 156, 
-    106, 230, 80, 84, 223, 156, 229, 71, 223, 156, 225, 14, 67, 223, 156, 
-    106, 253, 251, 230, 119, 251, 85, 253, 251, 246, 235, 223, 236, 253, 251, 
-    246, 235, 229, 30, 84, 223, 156, 246, 235, 229, 30, 229, 71, 223, 156, 
-    224, 82, 229, 30, 84, 223, 156, 246, 235, 229, 30, 227, 206, 84, 223, 
-    156, 106, 246, 235, 229, 30, 227, 206, 84, 223, 156, 220, 222, 229, 30, 
-    84, 223, 156, 224, 78, 229, 30, 253, 251, 222, 83, 253, 251, 230, 119, 
-    251, 85, 222, 83, 253, 251, 106, 222, 83, 253, 251, 224, 82, 229, 149, 
-    84, 25, 67, 245, 147, 84, 245, 147, 67, 245, 147, 246, 235, 229, 149, 
-    230, 80, 84, 245, 147, 34, 230, 119, 251, 85, 246, 235, 229, 30, 223, 
-    156, 106, 222, 83, 229, 71, 253, 251, 224, 30, 221, 195, 221, 85, 224, 
-    30, 106, 251, 35, 224, 30, 223, 251, 106, 223, 251, 252, 214, 253, 251, 
-    246, 235, 222, 83, 228, 221, 253, 251, 106, 246, 235, 222, 83, 228, 221, 
-    253, 251, 225, 14, 67, 250, 221, 234, 237, 45, 247, 118, 67, 223, 227, 
-    220, 60, 45, 247, 118, 67, 223, 227, 234, 237, 45, 225, 14, 67, 223, 227, 
-    220, 60, 45, 225, 14, 67, 223, 227, 84, 249, 5, 233, 155, 67, 218, 151, 
-    106, 246, 95, 164, 100, 170, 69, 135, 234, 18, 69, 135, 106, 69, 135, 
-    106, 224, 109, 215, 250, 169, 228, 69, 164, 230, 98, 106, 224, 109, 250, 
-    169, 228, 69, 164, 230, 98, 106, 51, 215, 250, 169, 228, 69, 164, 230, 
-    98, 106, 51, 250, 169, 228, 69, 164, 230, 98, 250, 73, 223, 147, 229, 
-    241, 5, 230, 98, 106, 246, 95, 164, 230, 98, 106, 243, 154, 246, 95, 164, 
-    230, 98, 106, 84, 243, 153, 227, 59, 106, 84, 243, 154, 251, 241, 245, 
-    148, 243, 153, 227, 59, 245, 148, 243, 154, 251, 241, 234, 18, 42, 229, 
-    230, 230, 98, 234, 18, 45, 229, 230, 230, 98, 234, 18, 245, 154, 42, 229, 
-    230, 230, 98, 234, 18, 245, 154, 45, 229, 230, 230, 98, 234, 18, 235, 
-    112, 254, 120, 252, 18, 230, 98, 234, 18, 227, 106, 254, 120, 252, 18, 
-    230, 98, 106, 235, 112, 254, 120, 228, 69, 164, 230, 98, 106, 227, 106, 
-    254, 120, 228, 69, 164, 230, 98, 106, 235, 112, 254, 120, 252, 18, 230, 
-    98, 106, 227, 106, 254, 120, 252, 18, 230, 98, 170, 42, 221, 114, 224, 
-    236, 252, 18, 230, 98, 170, 45, 221, 114, 224, 236, 252, 18, 230, 98, 
-    234, 18, 42, 250, 79, 252, 18, 230, 98, 234, 18, 45, 250, 79, 252, 18, 
-    230, 98, 248, 217, 232, 136, 34, 20, 107, 248, 217, 232, 136, 34, 20, 
-    103, 248, 217, 232, 136, 34, 20, 160, 248, 217, 232, 136, 34, 20, 154, 
-    248, 217, 232, 136, 34, 20, 174, 248, 217, 232, 136, 34, 20, 182, 248, 
-    217, 232, 136, 34, 20, 191, 248, 217, 232, 136, 34, 20, 185, 248, 217, 
-    232, 136, 34, 20, 190, 248, 217, 232, 136, 34, 54, 222, 65, 248, 217, 34, 
-    33, 20, 107, 248, 217, 34, 33, 20, 103, 248, 217, 34, 33, 20, 160, 248, 
-    217, 34, 33, 20, 154, 248, 217, 34, 33, 20, 174, 248, 217, 34, 33, 20, 
-    182, 248, 217, 34, 33, 20, 191, 248, 217, 34, 33, 20, 185, 248, 217, 34, 
-    33, 20, 190, 248, 217, 34, 33, 54, 222, 65, 248, 217, 232, 136, 34, 33, 
-    20, 107, 248, 217, 232, 136, 34, 33, 20, 103, 248, 217, 232, 136, 34, 33, 
-    20, 160, 248, 217, 232, 136, 34, 33, 20, 154, 248, 217, 232, 136, 34, 33, 
-    20, 174, 248, 217, 232, 136, 34, 33, 20, 182, 248, 217, 232, 136, 34, 33, 
-    20, 191, 248, 217, 232, 136, 34, 33, 20, 185, 248, 217, 232, 136, 34, 33, 
-    20, 190, 248, 217, 232, 136, 34, 33, 54, 222, 65, 106, 218, 200, 90, 65, 
-    106, 224, 6, 247, 5, 65, 106, 90, 65, 106, 231, 187, 247, 5, 65, 247, 
-    124, 229, 32, 90, 65, 106, 227, 56, 90, 65, 221, 89, 90, 65, 106, 221, 
-    89, 90, 65, 249, 145, 221, 89, 90, 65, 106, 249, 145, 221, 89, 90, 65, 
-    84, 90, 65, 221, 228, 221, 118, 90, 254, 20, 221, 228, 252, 27, 90, 254, 
-    20, 84, 90, 254, 20, 106, 84, 250, 73, 247, 130, 25, 90, 65, 106, 84, 
-    250, 73, 220, 53, 25, 90, 65, 223, 224, 84, 90, 65, 106, 250, 157, 84, 
-    90, 65, 227, 105, 67, 90, 65, 235, 111, 67, 90, 65, 252, 232, 225, 14, 
-    67, 90, 65, 245, 96, 225, 14, 67, 90, 65, 106, 234, 237, 227, 104, 67, 
-    90, 65, 106, 220, 60, 227, 104, 67, 90, 65, 231, 182, 234, 237, 227, 104, 
-    67, 90, 65, 231, 182, 220, 60, 227, 104, 67, 90, 65, 34, 106, 67, 90, 65, 
-    218, 206, 90, 65, 252, 52, 224, 6, 247, 5, 65, 252, 52, 90, 65, 252, 52, 
-    231, 187, 247, 5, 65, 106, 252, 52, 224, 6, 247, 5, 65, 106, 252, 52, 90, 
-    65, 106, 252, 52, 231, 187, 247, 5, 65, 222, 85, 90, 65, 106, 222, 84, 
-    90, 65, 218, 225, 90, 65, 106, 218, 225, 90, 65, 230, 116, 90, 65, 148, 
-    248, 227, 254, 119, 67, 221, 91, 250, 141, 3, 67, 221, 90, 229, 160, 230, 
-    119, 223, 92, 230, 119, 223, 57, 42, 226, 234, 252, 226, 249, 67, 45, 
-    226, 234, 252, 226, 249, 67, 156, 2, 61, 237, 190, 227, 160, 224, 18, 
-    228, 243, 223, 92, 223, 58, 228, 243, 224, 17, 69, 252, 201, 2, 186, 92, 
-    171, 248, 187, 67, 249, 5, 2, 251, 83, 248, 145, 25, 2, 248, 145, 246, 
-    213, 117, 230, 114, 220, 52, 234, 237, 45, 250, 124, 2, 248, 145, 220, 
-    60, 42, 250, 124, 2, 248, 145, 42, 230, 82, 237, 57, 45, 230, 82, 237, 
-    57, 245, 90, 230, 82, 237, 57, 235, 146, 108, 222, 143, 235, 146, 113, 
-    222, 143, 42, 25, 45, 51, 220, 236, 42, 25, 45, 222, 143, 42, 233, 87, 
-    171, 45, 222, 143, 171, 42, 222, 143, 108, 222, 144, 2, 250, 222, 50, 
-    234, 235, 248, 192, 251, 213, 186, 227, 16, 67, 250, 156, 249, 4, 67, 
-    250, 156, 249, 5, 2, 127, 221, 202, 67, 250, 156, 249, 5, 2, 90, 221, 
-    202, 67, 40, 2, 127, 221, 202, 67, 40, 2, 90, 221, 202, 14, 42, 67, 40, 
-    115, 14, 45, 67, 40, 115, 14, 42, 254, 120, 115, 14, 45, 254, 120, 115, 
-    14, 42, 51, 254, 120, 115, 14, 45, 51, 254, 120, 115, 14, 42, 67, 221, 
-    114, 224, 236, 115, 14, 45, 67, 221, 114, 224, 236, 115, 14, 42, 245, 
-    154, 229, 229, 14, 45, 245, 154, 229, 229, 220, 53, 228, 92, 65, 247, 
-    130, 228, 92, 65, 254, 104, 244, 222, 250, 222, 65, 250, 199, 244, 222, 
-    250, 222, 65, 45, 76, 2, 34, 229, 43, 171, 127, 65, 171, 90, 65, 171, 42, 
-    45, 65, 171, 127, 51, 65, 171, 90, 51, 65, 171, 42, 45, 51, 65, 171, 127, 
-    76, 245, 97, 135, 171, 90, 76, 245, 97, 135, 171, 127, 51, 76, 245, 97, 
-    135, 171, 90, 51, 76, 245, 97, 135, 171, 90, 223, 223, 65, 43, 44, 252, 
-    47, 43, 44, 248, 142, 43, 44, 248, 14, 43, 44, 248, 141, 43, 44, 247, 
-    206, 43, 44, 248, 77, 43, 44, 248, 13, 43, 44, 248, 140, 43, 44, 247, 
-    174, 43, 44, 248, 45, 43, 44, 247, 237, 43, 44, 248, 108, 43, 44, 247, 
-    205, 43, 44, 248, 76, 43, 44, 248, 12, 43, 44, 248, 139, 43, 44, 247, 
-    158, 43, 44, 248, 29, 43, 44, 247, 221, 43, 44, 248, 92, 43, 44, 247, 
-    189, 43, 44, 248, 60, 43, 44, 247, 252, 43, 44, 248, 123, 43, 44, 247, 
-    173, 43, 44, 248, 44, 43, 44, 247, 236, 43, 44, 248, 107, 43, 44, 247, 
-    204, 43, 44, 248, 75, 43, 44, 248, 11, 43, 44, 248, 138, 43, 44, 247, 
-    150, 43, 44, 248, 21, 43, 44, 247, 213, 43, 44, 248, 84, 43, 44, 247, 
-    181, 43, 44, 248, 52, 43, 44, 247, 244, 43, 44, 248, 115, 43, 44, 247, 
-    165, 43, 44, 248, 36, 43, 44, 247, 228, 43, 44, 248, 99, 43, 44, 247, 
-    196, 43, 44, 248, 67, 43, 44, 248, 3, 43, 44, 248, 130, 43, 44, 247, 157, 
-    43, 44, 248, 28, 43, 44, 247, 220, 43, 44, 248, 91, 43, 44, 247, 188, 43, 
-    44, 248, 59, 43, 44, 247, 251, 43, 44, 248, 122, 43, 44, 247, 172, 43, 
-    44, 248, 43, 43, 44, 247, 235, 43, 44, 248, 106, 43, 44, 247, 203, 43, 
-    44, 248, 74, 43, 44, 248, 10, 43, 44, 248, 137, 43, 44, 247, 146, 43, 44, 
-    248, 17, 43, 44, 247, 209, 43, 44, 248, 80, 43, 44, 247, 177, 43, 44, 
-    248, 48, 43, 44, 247, 240, 43, 44, 248, 111, 43, 44, 247, 161, 43, 44, 
-    248, 32, 43, 44, 247, 224, 43, 44, 248, 95, 43, 44, 247, 192, 43, 44, 
-    248, 63, 43, 44, 247, 255, 43, 44, 248, 126, 43, 44, 247, 153, 43, 44, 
-    248, 24, 43, 44, 247, 216, 43, 44, 248, 87, 43, 44, 247, 184, 43, 44, 
-    248, 55, 43, 44, 247, 247, 43, 44, 248, 118, 43, 44, 247, 168, 43, 44, 
-    248, 39, 43, 44, 247, 231, 43, 44, 248, 102, 43, 44, 247, 199, 43, 44, 
-    248, 70, 43, 44, 248, 6, 43, 44, 248, 133, 43, 44, 247, 149, 43, 44, 248, 
-    20, 43, 44, 247, 212, 43, 44, 248, 83, 43, 44, 247, 180, 43, 44, 248, 51, 
-    43, 44, 247, 243, 43, 44, 248, 114, 43, 44, 247, 164, 43, 44, 248, 35, 
-    43, 44, 247, 227, 43, 44, 248, 98, 43, 44, 247, 195, 43, 44, 248, 66, 43, 
-    44, 248, 2, 43, 44, 248, 129, 43, 44, 247, 156, 43, 44, 248, 27, 43, 44, 
-    247, 219, 43, 44, 248, 90, 43, 44, 247, 187, 43, 44, 248, 58, 43, 44, 
-    247, 250, 43, 44, 248, 121, 43, 44, 247, 171, 43, 44, 248, 42, 43, 44, 
-    247, 234, 43, 44, 248, 105, 43, 44, 247, 202, 43, 44, 248, 73, 43, 44, 
-    248, 9, 43, 44, 248, 136, 43, 44, 247, 144, 43, 44, 248, 15, 43, 44, 247, 
-    207, 43, 44, 248, 78, 43, 44, 247, 175, 43, 44, 248, 46, 43, 44, 247, 
-    238, 43, 44, 248, 109, 43, 44, 247, 159, 43, 44, 248, 30, 43, 44, 247, 
-    222, 43, 44, 248, 93, 43, 44, 247, 190, 43, 44, 248, 61, 43, 44, 247, 
-    253, 43, 44, 248, 124, 43, 44, 247, 151, 43, 44, 248, 22, 43, 44, 247, 
-    214, 43, 44, 248, 85, 43, 44, 247, 182, 43, 44, 248, 53, 43, 44, 247, 
-    245, 43, 44, 248, 116, 43, 44, 247, 166, 43, 44, 248, 37, 43, 44, 247, 
-    229, 43, 44, 248, 100, 43, 44, 247, 197, 43, 44, 248, 68, 43, 44, 248, 4, 
-    43, 44, 248, 131, 43, 44, 247, 147, 43, 44, 248, 18, 43, 44, 247, 210, 
-    43, 44, 248, 81, 43, 44, 247, 178, 43, 44, 248, 49, 43, 44, 247, 241, 43, 
-    44, 248, 112, 43, 44, 247, 162, 43, 44, 248, 33, 43, 44, 247, 225, 43, 
-    44, 248, 96, 43, 44, 247, 193, 43, 44, 248, 64, 43, 44, 248, 0, 43, 44, 
-    248, 127, 43, 44, 247, 154, 43, 44, 248, 25, 43, 44, 247, 217, 43, 44, 
-    248, 88, 43, 44, 247, 185, 43, 44, 248, 56, 43, 44, 247, 248, 43, 44, 
-    248, 119, 43, 44, 247, 169, 43, 44, 248, 40, 43, 44, 247, 232, 43, 44, 
-    248, 103, 43, 44, 247, 200, 43, 44, 248, 71, 43, 44, 248, 7, 43, 44, 248, 
-    134, 43, 44, 247, 145, 43, 44, 248, 16, 43, 44, 247, 208, 43, 44, 248, 
-    79, 43, 44, 247, 176, 43, 44, 248, 47, 43, 44, 247, 239, 43, 44, 248, 
-    110, 43, 44, 247, 160, 43, 44, 248, 31, 43, 44, 247, 223, 43, 44, 248, 
-    94, 43, 44, 247, 191, 43, 44, 248, 62, 43, 44, 247, 254, 43, 44, 248, 
-    125, 43, 44, 247, 152, 43, 44, 248, 23, 43, 44, 247, 215, 43, 44, 248, 
-    86, 43, 44, 247, 183, 43, 44, 248, 54, 43, 44, 247, 246, 43, 44, 248, 
-    117, 43, 44, 247, 167, 43, 44, 248, 38, 43, 44, 247, 230, 43, 44, 248, 
-    101, 43, 44, 247, 198, 43, 44, 248, 69, 43, 44, 248, 5, 43, 44, 248, 132, 
-    43, 44, 247, 148, 43, 44, 248, 19, 43, 44, 247, 211, 43, 44, 248, 82, 43, 
-    44, 247, 179, 43, 44, 248, 50, 43, 44, 247, 242, 43, 44, 248, 113, 43, 
-    44, 247, 163, 43, 44, 248, 34, 43, 44, 247, 226, 43, 44, 248, 97, 43, 44, 
-    247, 194, 43, 44, 248, 65, 43, 44, 248, 1, 43, 44, 248, 128, 43, 44, 247, 
-    155, 43, 44, 248, 26, 43, 44, 247, 218, 43, 44, 248, 89, 43, 44, 247, 
-    186, 43, 44, 248, 57, 43, 44, 247, 249, 43, 44, 248, 120, 43, 44, 247, 
-    170, 43, 44, 248, 41, 43, 44, 247, 233, 43, 44, 248, 104, 43, 44, 247, 
-    201, 43, 44, 248, 72, 43, 44, 248, 8, 43, 44, 248, 135, 90, 220, 206, 76, 
-    2, 69, 92, 90, 220, 206, 76, 2, 51, 69, 92, 127, 51, 76, 2, 69, 92, 90, 
-    51, 76, 2, 69, 92, 42, 45, 51, 76, 2, 69, 92, 90, 220, 206, 76, 245, 97, 
-    135, 127, 51, 76, 245, 97, 135, 90, 51, 76, 245, 97, 135, 247, 130, 76, 
-    2, 186, 92, 220, 53, 76, 2, 186, 92, 220, 53, 221, 78, 65, 247, 130, 221, 
-    78, 65, 127, 51, 249, 147, 65, 90, 51, 249, 147, 65, 127, 221, 78, 249, 
-    147, 65, 90, 221, 78, 249, 147, 65, 90, 220, 206, 221, 78, 249, 147, 65, 
-    90, 76, 2, 247, 143, 223, 146, 220, 53, 76, 199, 135, 247, 130, 76, 199, 
-    135, 90, 76, 2, 222, 136, 2, 69, 92, 90, 76, 2, 222, 136, 2, 51, 69, 92, 
-    90, 220, 206, 76, 2, 222, 135, 90, 220, 206, 76, 2, 222, 136, 2, 69, 92, 
-    90, 220, 206, 76, 2, 222, 136, 2, 51, 69, 92, 127, 254, 22, 90, 254, 22, 
-    127, 51, 254, 22, 90, 51, 254, 22, 127, 76, 199, 84, 249, 4, 90, 76, 199, 
-    84, 249, 4, 127, 76, 245, 97, 252, 201, 199, 84, 249, 4, 90, 76, 245, 97, 
-    252, 201, 199, 84, 249, 4, 231, 187, 218, 217, 25, 224, 6, 247, 5, 65, 
-    231, 187, 247, 5, 25, 224, 6, 218, 217, 65, 231, 187, 218, 217, 76, 2, 
-    96, 231, 187, 247, 5, 76, 2, 96, 224, 6, 247, 5, 76, 2, 96, 224, 6, 218, 
-    217, 76, 2, 96, 231, 187, 218, 217, 76, 25, 231, 187, 247, 5, 65, 231, 
-    187, 247, 5, 76, 25, 224, 6, 247, 5, 65, 224, 6, 247, 5, 76, 25, 224, 6, 
-    218, 217, 65, 224, 6, 218, 217, 76, 25, 231, 187, 218, 217, 65, 227, 88, 
-    249, 11, 250, 95, 245, 247, 249, 10, 245, 247, 249, 11, 250, 95, 227, 88, 
-    249, 10, 224, 6, 247, 5, 76, 250, 95, 231, 187, 247, 5, 65, 231, 187, 
-    247, 5, 76, 250, 95, 224, 6, 247, 5, 65, 245, 247, 249, 11, 250, 95, 231, 
-    187, 247, 5, 65, 227, 88, 249, 11, 250, 95, 224, 6, 247, 5, 65, 231, 187, 
-    247, 5, 76, 250, 95, 231, 187, 218, 217, 65, 231, 187, 218, 217, 76, 250, 
-    95, 231, 187, 247, 5, 65, 218, 237, 76, 229, 28, 248, 208, 227, 109, 76, 
-    229, 28, 90, 222, 15, 250, 72, 220, 52, 76, 229, 28, 90, 222, 15, 250, 
-    72, 247, 129, 76, 229, 28, 247, 130, 222, 15, 250, 72, 235, 107, 76, 229, 
-    28, 247, 130, 222, 15, 250, 72, 227, 100, 227, 103, 254, 52, 250, 199, 
-    65, 235, 110, 254, 52, 254, 104, 65, 221, 120, 254, 52, 254, 104, 65, 
-    252, 29, 254, 52, 254, 104, 65, 221, 120, 254, 52, 250, 199, 76, 2, 233, 
-    154, 221, 120, 254, 52, 254, 104, 76, 2, 229, 43, 234, 237, 45, 225, 69, 
-    250, 199, 65, 234, 237, 42, 225, 69, 254, 104, 65, 254, 104, 250, 197, 
-    250, 222, 65, 250, 199, 250, 197, 250, 222, 65, 90, 76, 71, 224, 192, 
-    127, 65, 127, 76, 71, 224, 192, 90, 65, 224, 192, 90, 76, 71, 127, 65, 
-    90, 76, 2, 88, 56, 127, 76, 2, 88, 56, 90, 76, 221, 225, 218, 151, 42, 
-    45, 76, 221, 225, 3, 250, 221, 220, 53, 220, 206, 76, 245, 97, 3, 250, 
-    221, 42, 192, 108, 45, 192, 113, 243, 176, 42, 192, 113, 45, 192, 108, 
-    243, 176, 108, 192, 45, 113, 192, 42, 243, 176, 108, 192, 42, 113, 192, 
-    45, 243, 176, 42, 192, 108, 45, 192, 108, 243, 176, 108, 192, 45, 113, 
-    192, 45, 243, 176, 42, 192, 113, 45, 192, 113, 243, 176, 108, 192, 42, 
-    113, 192, 42, 243, 176, 127, 243, 177, 2, 192, 108, 199, 135, 90, 243, 
-    177, 2, 192, 108, 199, 135, 220, 53, 243, 177, 2, 192, 45, 199, 135, 247, 
-    130, 243, 177, 2, 192, 45, 199, 135, 127, 243, 177, 2, 192, 113, 199, 
-    135, 90, 243, 177, 2, 192, 113, 199, 135, 220, 53, 243, 177, 2, 192, 42, 
-    199, 135, 247, 130, 243, 177, 2, 192, 42, 199, 135, 127, 243, 177, 2, 
-    192, 108, 245, 97, 135, 90, 243, 177, 2, 192, 108, 245, 97, 135, 220, 53, 
-    243, 177, 2, 192, 45, 245, 97, 135, 247, 130, 243, 177, 2, 192, 45, 245, 
-    97, 135, 127, 243, 177, 2, 192, 113, 245, 97, 135, 90, 243, 177, 2, 192, 
-    113, 245, 97, 135, 220, 53, 243, 177, 2, 192, 42, 245, 97, 135, 247, 130, 
-    243, 177, 2, 192, 42, 245, 97, 135, 127, 243, 177, 2, 192, 108, 71, 127, 
-    243, 177, 2, 192, 247, 132, 220, 53, 243, 177, 2, 192, 42, 252, 106, 220, 
-    53, 243, 177, 2, 192, 227, 109, 90, 243, 177, 2, 192, 108, 71, 90, 243, 
-    177, 2, 192, 247, 132, 247, 130, 243, 177, 2, 192, 42, 252, 106, 247, 
-    130, 243, 177, 2, 192, 227, 109, 127, 243, 177, 2, 192, 108, 71, 90, 243, 
-    177, 2, 192, 220, 63, 127, 243, 177, 2, 192, 113, 71, 90, 243, 177, 2, 
-    192, 247, 132, 90, 243, 177, 2, 192, 108, 71, 127, 243, 177, 2, 192, 220, 
-    63, 90, 243, 177, 2, 192, 113, 71, 127, 243, 177, 2, 192, 247, 132, 127, 
-    243, 177, 2, 192, 108, 71, 171, 249, 146, 127, 243, 177, 2, 192, 113, 
-    252, 118, 171, 249, 146, 90, 243, 177, 2, 192, 108, 71, 171, 249, 146, 
-    90, 243, 177, 2, 192, 113, 252, 118, 171, 249, 146, 220, 53, 243, 177, 2, 
-    192, 42, 252, 106, 247, 130, 243, 177, 2, 192, 227, 109, 247, 130, 243, 
-    177, 2, 192, 42, 252, 106, 220, 53, 243, 177, 2, 192, 227, 109, 45, 51, 
-    76, 2, 227, 55, 243, 159, 246, 154, 5, 71, 90, 65, 221, 180, 230, 113, 
-    71, 90, 65, 127, 76, 71, 221, 180, 230, 112, 90, 76, 71, 221, 180, 230, 
-    112, 90, 76, 71, 254, 151, 114, 101, 235, 87, 71, 127, 65, 127, 76, 221, 
-    225, 235, 86, 244, 30, 71, 90, 65, 223, 93, 71, 90, 65, 127, 76, 221, 
-    225, 223, 92, 223, 58, 71, 127, 65, 42, 245, 177, 222, 135, 45, 245, 177, 
-    222, 135, 108, 245, 177, 222, 135, 113, 245, 177, 222, 135, 221, 78, 69, 
-    252, 201, 249, 67, 217, 158, 165, 223, 234, 217, 158, 165, 220, 198, 250, 
-    175, 42, 67, 250, 79, 115, 45, 67, 250, 79, 115, 42, 67, 229, 229, 45, 
-    67, 229, 229, 217, 158, 165, 42, 237, 237, 115, 217, 158, 165, 45, 237, 
-    237, 115, 217, 158, 165, 42, 252, 71, 115, 217, 158, 165, 45, 252, 71, 
-    115, 42, 40, 252, 18, 2, 220, 81, 45, 40, 252, 18, 2, 220, 81, 42, 40, 
-    252, 18, 2, 221, 203, 237, 224, 221, 120, 250, 123, 45, 40, 252, 18, 2, 
-    221, 203, 237, 224, 252, 29, 250, 123, 42, 40, 252, 18, 2, 221, 203, 237, 
-    224, 252, 29, 250, 123, 45, 40, 252, 18, 2, 221, 203, 237, 224, 221, 120, 
-    250, 123, 42, 254, 120, 252, 18, 2, 248, 145, 45, 254, 120, 252, 18, 2, 
-    248, 145, 42, 254, 52, 235, 87, 115, 45, 254, 52, 244, 30, 115, 51, 42, 
-    254, 52, 244, 30, 115, 51, 45, 254, 52, 235, 87, 115, 42, 84, 221, 114, 
-    224, 236, 115, 45, 84, 221, 114, 224, 236, 115, 247, 143, 245, 214, 69, 
-    217, 33, 235, 43, 234, 22, 254, 120, 230, 114, 235, 115, 45, 254, 120, 
-    219, 177, 2, 223, 227, 234, 22, 45, 254, 120, 2, 248, 145, 254, 120, 2, 
-    226, 235, 237, 190, 254, 248, 254, 119, 223, 245, 254, 120, 230, 114, 
-    235, 115, 223, 245, 254, 120, 230, 114, 220, 63, 215, 254, 119, 210, 254, 
-    119, 254, 120, 2, 220, 81, 210, 254, 120, 2, 220, 81, 230, 177, 254, 120, 
-    230, 114, 220, 63, 230, 177, 254, 120, 230, 114, 247, 132, 234, 22, 254, 
-    120, 2, 230, 119, 254, 32, 246, 187, 237, 224, 76, 229, 28, 108, 25, 227, 
-    109, 234, 22, 254, 120, 2, 230, 119, 254, 32, 246, 187, 237, 224, 76, 
-    229, 28, 108, 25, 235, 115, 234, 22, 254, 120, 2, 230, 119, 254, 32, 246, 
-    187, 237, 224, 76, 229, 28, 113, 25, 227, 109, 234, 22, 254, 120, 2, 230, 
-    119, 254, 32, 246, 187, 237, 224, 76, 229, 28, 113, 25, 235, 115, 234, 
-    22, 254, 120, 2, 230, 119, 254, 32, 246, 187, 237, 224, 76, 229, 28, 45, 
-    25, 220, 63, 234, 22, 254, 120, 2, 230, 119, 254, 32, 246, 187, 237, 224, 
-    76, 229, 28, 42, 25, 220, 63, 234, 22, 254, 120, 2, 230, 119, 254, 32, 
-    246, 187, 237, 224, 76, 229, 28, 45, 25, 247, 132, 234, 22, 254, 120, 2, 
-    230, 119, 254, 32, 246, 187, 237, 224, 76, 229, 28, 42, 25, 247, 132, 
-    210, 246, 199, 225, 45, 246, 199, 225, 46, 2, 230, 77, 246, 199, 225, 46, 
-    2, 3, 250, 222, 50, 246, 199, 225, 46, 2, 45, 76, 50, 246, 199, 225, 46, 
-    2, 42, 76, 50, 250, 222, 2, 186, 135, 34, 69, 135, 34, 229, 233, 34, 227, 
-    160, 224, 17, 34, 229, 160, 250, 222, 248, 192, 251, 213, 186, 252, 201, 
-    25, 221, 120, 144, 248, 192, 251, 213, 69, 135, 250, 222, 2, 223, 60, 
-    218, 151, 34, 254, 103, 248, 188, 55, 108, 76, 221, 225, 250, 221, 34, 
-    67, 251, 241, 34, 251, 241, 34, 235, 86, 34, 244, 29, 250, 222, 2, 3, 
-    250, 222, 199, 222, 23, 227, 109, 250, 222, 2, 124, 186, 223, 108, 199, 
-    222, 23, 227, 109, 204, 227, 88, 249, 11, 224, 55, 204, 245, 247, 249, 
-    11, 224, 55, 204, 253, 251, 204, 3, 250, 221, 204, 223, 227, 124, 237, 
-    56, 223, 225, 221, 91, 2, 61, 50, 221, 91, 2, 220, 81, 226, 235, 237, 
-    224, 221, 90, 221, 91, 2, 225, 52, 253, 245, 252, 28, 45, 221, 91, 71, 
-    42, 221, 90, 42, 221, 91, 252, 106, 69, 135, 69, 252, 201, 252, 106, 45, 
-    221, 90, 252, 23, 2, 42, 144, 252, 53, 252, 23, 2, 45, 144, 252, 53, 84, 
-    252, 22, 27, 2, 42, 144, 252, 53, 27, 2, 45, 144, 252, 53, 67, 242, 183, 
-    84, 242, 183, 42, 218, 198, 245, 214, 45, 218, 198, 245, 214, 42, 51, 
-    218, 198, 245, 214, 45, 51, 218, 198, 245, 214, 237, 218, 237, 207, 221, 
-    201, 104, 237, 207, 237, 208, 232, 138, 2, 69, 135, 247, 137, 233, 87, 
-    40, 2, 250, 135, 230, 81, 237, 216, 254, 13, 224, 166, 228, 229, 246, 
-    154, 5, 25, 224, 57, 229, 233, 246, 154, 5, 25, 224, 57, 229, 234, 2, 
-    221, 180, 50, 242, 59, 199, 25, 224, 57, 229, 233, 244, 75, 223, 155, 
-    222, 12, 247, 131, 221, 91, 2, 42, 144, 252, 53, 247, 131, 221, 91, 2, 
-    45, 144, 252, 53, 84, 249, 5, 2, 113, 65, 84, 234, 234, 67, 250, 222, 2, 
-    113, 65, 84, 250, 222, 2, 113, 65, 246, 141, 67, 223, 227, 246, 141, 84, 
-    223, 227, 246, 141, 67, 249, 4, 246, 141, 84, 249, 4, 246, 141, 67, 250, 
-    221, 246, 141, 84, 250, 221, 227, 15, 227, 160, 224, 18, 230, 112, 224, 
-    18, 2, 230, 77, 227, 160, 224, 18, 2, 186, 92, 252, 76, 224, 17, 252, 76, 
-    227, 160, 224, 17, 51, 229, 43, 221, 78, 229, 43, 235, 112, 250, 73, 254, 
-    120, 115, 227, 106, 250, 73, 254, 120, 115, 221, 171, 233, 152, 233, 33, 
-    34, 61, 230, 112, 233, 33, 34, 88, 230, 112, 233, 33, 34, 27, 230, 112, 
-    233, 33, 220, 75, 230, 113, 2, 248, 145, 233, 33, 220, 75, 230, 113, 2, 
-    229, 43, 233, 33, 40, 237, 175, 230, 112, 233, 33, 40, 220, 75, 230, 112, 
-    124, 235, 7, 25, 230, 112, 124, 235, 7, 156, 230, 112, 233, 33, 27, 230, 
-    112, 233, 131, 124, 223, 74, 223, 72, 2, 237, 186, 228, 92, 237, 187, 
-    230, 112, 245, 181, 229, 225, 237, 186, 237, 187, 2, 51, 92, 237, 187, 
-    253, 217, 2, 224, 55, 250, 218, 245, 87, 254, 104, 237, 184, 235, 44, 
-    237, 185, 2, 227, 207, 229, 212, 254, 29, 229, 24, 235, 44, 237, 185, 2, 
-    225, 69, 229, 212, 254, 29, 229, 24, 235, 44, 237, 185, 212, 237, 219, 
-    222, 23, 229, 24, 237, 187, 254, 29, 112, 229, 32, 230, 112, 228, 86, 
-    237, 187, 230, 112, 237, 187, 2, 127, 76, 2, 96, 237, 187, 2, 27, 55, 
-    237, 187, 2, 237, 174, 237, 187, 2, 220, 74, 237, 187, 2, 230, 77, 237, 
-    187, 2, 220, 81, 237, 57, 235, 146, 42, 221, 91, 230, 112, 217, 158, 165, 
-    226, 109, 250, 159, 217, 158, 165, 226, 109, 229, 69, 217, 158, 165, 226, 
-    109, 228, 226, 88, 5, 2, 3, 250, 222, 50, 88, 5, 2, 250, 217, 255, 1, 50, 
-    88, 5, 2, 221, 180, 50, 88, 5, 2, 61, 56, 88, 5, 2, 221, 180, 56, 88, 5, 
-    2, 223, 94, 103, 88, 5, 2, 84, 221, 90, 233, 155, 5, 2, 250, 169, 50, 
-    233, 155, 5, 2, 61, 56, 233, 155, 5, 2, 245, 247, 248, 143, 233, 155, 5, 
-    2, 227, 88, 248, 143, 88, 5, 237, 224, 42, 144, 250, 221, 88, 5, 237, 
-    224, 45, 144, 250, 221, 219, 164, 156, 250, 101, 228, 229, 233, 84, 5, 2, 
-    61, 50, 233, 84, 5, 2, 220, 81, 225, 66, 228, 230, 2, 252, 29, 250, 196, 
-    224, 41, 228, 229, 233, 84, 5, 237, 224, 42, 144, 250, 221, 233, 84, 5, 
-    237, 224, 45, 144, 250, 221, 34, 233, 84, 5, 2, 250, 217, 255, 0, 233, 
-    84, 5, 237, 224, 51, 250, 221, 34, 248, 188, 55, 88, 5, 237, 224, 221, 
-    90, 233, 155, 5, 237, 224, 221, 90, 233, 84, 5, 237, 224, 221, 90, 237, 
-    181, 228, 229, 227, 101, 237, 181, 228, 229, 217, 158, 165, 227, 191, 
-    250, 159, 254, 139, 156, 250, 128, 237, 175, 2, 248, 145, 220, 75, 2, 
-    233, 155, 55, 220, 75, 2, 230, 77, 237, 175, 2, 230, 77, 237, 175, 2, 
-    235, 7, 254, 126, 220, 75, 2, 235, 7, 230, 105, 220, 75, 71, 237, 174, 
-    237, 175, 71, 220, 74, 220, 75, 71, 252, 201, 71, 237, 174, 237, 175, 71, 
-    252, 201, 71, 220, 74, 220, 75, 252, 106, 25, 237, 56, 2, 220, 74, 237, 
-    175, 252, 106, 25, 237, 56, 2, 237, 174, 250, 197, 220, 75, 2, 225, 51, 
-    250, 197, 237, 175, 2, 225, 51, 51, 40, 237, 174, 51, 40, 220, 74, 250, 
-    197, 220, 75, 2, 225, 52, 25, 224, 41, 228, 229, 235, 7, 25, 2, 61, 50, 
-    235, 7, 156, 2, 61, 50, 51, 235, 7, 254, 126, 51, 235, 7, 230, 105, 124, 
-    237, 176, 235, 7, 254, 126, 124, 237, 176, 235, 7, 230, 105, 224, 48, 
-    235, 146, 230, 105, 224, 48, 235, 146, 254, 126, 235, 7, 156, 230, 75, 
-    235, 7, 254, 126, 235, 7, 25, 2, 233, 193, 223, 146, 235, 7, 156, 2, 233, 
-    193, 223, 146, 235, 7, 25, 2, 186, 249, 146, 235, 7, 156, 2, 186, 249, 
-    146, 235, 7, 25, 2, 51, 230, 77, 235, 7, 25, 2, 220, 81, 235, 7, 25, 2, 
-    51, 220, 81, 3, 219, 161, 2, 220, 81, 235, 7, 156, 2, 51, 230, 77, 235, 
-    7, 156, 2, 51, 220, 81, 217, 158, 165, 248, 154, 254, 99, 217, 158, 165, 
-    227, 234, 254, 99, 246, 154, 5, 2, 61, 56, 242, 59, 2, 61, 50, 221, 78, 
-    186, 252, 201, 2, 51, 69, 92, 221, 78, 186, 252, 201, 2, 221, 78, 69, 92, 
-    221, 180, 230, 113, 2, 61, 50, 221, 180, 230, 113, 2, 227, 88, 248, 143, 
-    224, 116, 233, 155, 224, 115, 250, 153, 2, 61, 50, 246, 154, 2, 253, 251, 
-    254, 151, 114, 199, 2, 250, 217, 255, 0, 254, 72, 114, 156, 114, 101, 
-    246, 154, 5, 71, 88, 55, 88, 5, 71, 246, 154, 55, 246, 154, 5, 71, 221, 
-    180, 230, 112, 51, 250, 176, 246, 155, 124, 250, 148, 246, 154, 224, 126, 
-    148, 250, 148, 246, 154, 224, 126, 246, 154, 5, 2, 124, 188, 71, 25, 124, 
-    188, 56, 246, 150, 2, 245, 116, 188, 50, 235, 87, 2, 250, 222, 237, 190, 
-    244, 30, 2, 250, 222, 237, 190, 235, 87, 2, 228, 82, 164, 50, 244, 30, 2, 
-    228, 82, 164, 50, 235, 87, 156, 224, 57, 114, 101, 244, 30, 156, 224, 57, 
-    114, 101, 235, 87, 156, 224, 57, 114, 199, 2, 61, 237, 190, 244, 30, 156, 
-    224, 57, 114, 199, 2, 61, 237, 190, 235, 87, 156, 224, 57, 114, 199, 2, 
-    61, 50, 244, 30, 156, 224, 57, 114, 199, 2, 61, 50, 235, 87, 156, 224, 
-    57, 114, 199, 2, 61, 71, 227, 109, 244, 30, 156, 224, 57, 114, 199, 2, 
-    61, 71, 235, 115, 235, 87, 156, 254, 73, 244, 30, 156, 254, 73, 235, 87, 
-    25, 224, 107, 212, 114, 101, 244, 30, 25, 224, 107, 212, 114, 101, 235, 
-    87, 25, 212, 254, 73, 244, 30, 25, 212, 254, 73, 235, 87, 71, 247, 136, 
-    114, 71, 244, 29, 244, 30, 71, 247, 136, 114, 71, 235, 86, 235, 87, 71, 
-    224, 116, 156, 246, 155, 244, 30, 71, 224, 116, 156, 246, 155, 235, 87, 
-    71, 224, 116, 71, 244, 29, 244, 30, 71, 224, 116, 71, 235, 86, 235, 87, 
-    71, 244, 30, 71, 247, 136, 246, 155, 244, 30, 71, 235, 87, 71, 247, 136, 
-    246, 155, 235, 87, 71, 224, 57, 114, 71, 244, 30, 71, 224, 57, 246, 155, 
-    244, 30, 71, 224, 57, 114, 71, 235, 87, 71, 224, 57, 246, 155, 224, 57, 
-    114, 199, 156, 235, 86, 224, 57, 114, 199, 156, 244, 29, 224, 57, 114, 
-    199, 156, 235, 87, 2, 61, 237, 190, 224, 57, 114, 199, 156, 244, 30, 2, 
-    61, 237, 190, 247, 136, 114, 199, 156, 235, 86, 247, 136, 114, 199, 156, 
-    244, 29, 247, 136, 224, 57, 114, 199, 156, 235, 86, 247, 136, 224, 57, 
-    114, 199, 156, 244, 29, 224, 116, 156, 235, 86, 224, 116, 156, 244, 29, 
-    224, 116, 71, 235, 87, 71, 246, 154, 55, 224, 116, 71, 244, 30, 71, 246, 
-    154, 55, 51, 232, 127, 235, 86, 51, 232, 127, 244, 29, 51, 232, 127, 235, 
-    87, 2, 220, 81, 244, 30, 230, 75, 235, 86, 244, 30, 252, 106, 235, 86, 
-    235, 87, 250, 197, 251, 213, 250, 74, 244, 30, 250, 197, 251, 213, 250, 
-    74, 235, 87, 250, 197, 251, 213, 250, 75, 71, 224, 57, 246, 155, 244, 30, 
-    250, 197, 251, 213, 250, 75, 71, 224, 57, 246, 155, 224, 42, 222, 27, 
-    235, 145, 222, 27, 224, 42, 222, 28, 156, 114, 101, 235, 145, 222, 28, 
-    156, 114, 101, 246, 154, 5, 2, 251, 236, 50, 228, 245, 71, 224, 107, 246, 
-    154, 55, 223, 85, 71, 224, 107, 246, 154, 55, 228, 245, 71, 224, 107, 
-    212, 114, 101, 223, 85, 71, 224, 107, 212, 114, 101, 228, 245, 71, 246, 
-    154, 55, 223, 85, 71, 246, 154, 55, 228, 245, 71, 212, 114, 101, 223, 85, 
-    71, 212, 114, 101, 228, 245, 71, 254, 151, 114, 101, 223, 85, 71, 254, 
-    151, 114, 101, 228, 245, 71, 212, 254, 151, 114, 101, 223, 85, 71, 212, 
-    254, 151, 114, 101, 51, 228, 244, 51, 223, 84, 223, 93, 2, 248, 145, 223, 
-    58, 2, 248, 145, 223, 93, 2, 88, 5, 56, 223, 58, 2, 88, 5, 56, 223, 93, 
-    2, 233, 84, 5, 56, 223, 58, 2, 233, 84, 5, 56, 223, 93, 117, 156, 114, 
-    199, 2, 61, 50, 223, 58, 117, 156, 114, 199, 2, 61, 50, 223, 93, 117, 71, 
-    246, 154, 55, 223, 58, 117, 71, 246, 154, 55, 223, 93, 117, 71, 221, 180, 
-    230, 112, 223, 58, 117, 71, 221, 180, 230, 112, 223, 93, 117, 71, 254, 
-    151, 114, 101, 223, 58, 117, 71, 254, 151, 114, 101, 223, 93, 117, 71, 
-    212, 114, 101, 223, 58, 117, 71, 212, 114, 101, 40, 42, 230, 119, 86, 
-    230, 112, 40, 45, 230, 119, 86, 230, 112, 250, 197, 223, 92, 250, 197, 
-    223, 57, 250, 197, 223, 93, 156, 114, 101, 250, 197, 223, 58, 156, 114, 
-    101, 223, 93, 71, 223, 57, 223, 58, 71, 223, 92, 223, 93, 71, 223, 92, 
-    223, 58, 71, 223, 57, 223, 58, 252, 106, 223, 92, 223, 58, 252, 106, 25, 
-    237, 56, 251, 213, 249, 147, 2, 223, 92, 246, 213, 117, 230, 114, 247, 
-    129, 229, 63, 2, 222, 81, 221, 119, 221, 102, 237, 174, 245, 125, 231, 
-    196, 224, 192, 42, 222, 143, 224, 192, 113, 222, 143, 224, 192, 108, 222, 
-    143, 229, 161, 2, 198, 69, 252, 201, 221, 78, 45, 220, 236, 51, 69, 252, 
-    201, 42, 220, 236, 69, 252, 201, 51, 42, 220, 236, 51, 69, 252, 201, 51, 
-    42, 220, 236, 171, 249, 147, 245, 97, 42, 233, 255, 117, 51, 219, 152, 
-    224, 192, 113, 222, 144, 2, 230, 77, 224, 192, 108, 222, 144, 2, 220, 81, 
-    224, 192, 108, 222, 144, 71, 224, 192, 113, 222, 143, 51, 113, 222, 143, 
-    51, 108, 222, 143, 51, 214, 212, 55, 210, 51, 214, 212, 55, 248, 160, 
-    212, 248, 194, 2, 210, 232, 137, 224, 55, 69, 235, 44, 2, 250, 222, 50, 
-    69, 235, 44, 2, 250, 222, 56, 113, 222, 144, 2, 250, 222, 56, 229, 234, 
-    2, 186, 92, 229, 234, 2, 221, 180, 230, 112, 221, 78, 69, 252, 201, 252, 
-    73, 227, 192, 221, 78, 69, 252, 201, 2, 186, 92, 221, 78, 250, 176, 230, 
-    112, 221, 78, 232, 127, 235, 86, 221, 78, 232, 127, 244, 29, 247, 136, 
-    224, 57, 235, 87, 156, 114, 101, 247, 136, 224, 57, 244, 30, 156, 114, 
-    101, 221, 78, 224, 18, 252, 73, 227, 192, 235, 146, 221, 78, 69, 252, 
-    201, 230, 112, 51, 224, 18, 230, 112, 67, 69, 135, 233, 33, 67, 69, 135, 
-    231, 187, 247, 5, 67, 65, 231, 187, 218, 217, 67, 65, 224, 6, 247, 5, 67, 
-    65, 224, 6, 218, 217, 67, 65, 42, 45, 67, 65, 127, 84, 65, 220, 53, 84, 
-    65, 247, 130, 84, 65, 231, 187, 247, 5, 84, 65, 231, 187, 218, 217, 84, 
-    65, 224, 6, 247, 5, 84, 65, 224, 6, 218, 217, 84, 65, 42, 45, 84, 65, 
-    108, 113, 84, 65, 90, 76, 2, 221, 170, 247, 129, 90, 76, 2, 221, 170, 
-    220, 52, 127, 76, 2, 221, 170, 247, 129, 127, 76, 2, 221, 170, 220, 52, 
-    40, 2, 221, 120, 144, 252, 53, 40, 2, 252, 29, 144, 252, 53, 40, 2, 220, 
-    60, 45, 249, 11, 144, 252, 53, 40, 2, 234, 237, 42, 249, 11, 144, 252, 
-    53, 249, 5, 2, 42, 144, 252, 53, 249, 5, 2, 45, 144, 252, 53, 249, 5, 2, 
-    221, 120, 144, 252, 53, 249, 5, 2, 252, 29, 144, 252, 53, 247, 143, 223, 
-    227, 84, 235, 146, 223, 227, 67, 235, 146, 223, 227, 84, 219, 100, 3, 
-    223, 227, 67, 219, 100, 3, 223, 227, 84, 229, 175, 67, 229, 175, 67, 243, 
-    124, 84, 243, 124, 186, 84, 243, 124, 84, 235, 146, 250, 221, 84, 234, 
-    18, 249, 4, 67, 234, 18, 249, 4, 84, 234, 18, 234, 234, 67, 234, 18, 234, 
-    234, 84, 3, 249, 4, 84, 3, 234, 234, 67, 3, 234, 234, 84, 186, 246, 209, 
-    67, 186, 246, 209, 84, 69, 246, 209, 67, 69, 246, 209, 42, 76, 2, 3, 250, 
-    221, 148, 127, 254, 19, 42, 76, 2, 34, 229, 43, 171, 127, 223, 223, 65, 
-    127, 220, 206, 76, 2, 69, 92, 127, 220, 206, 76, 2, 51, 69, 92, 127, 220, 
-    206, 76, 245, 97, 135, 127, 220, 206, 221, 78, 249, 147, 65, 127, 76, 2, 
-    247, 143, 223, 146, 127, 76, 2, 222, 136, 2, 69, 92, 127, 76, 2, 222, 
-    136, 2, 51, 69, 92, 127, 220, 206, 76, 2, 222, 135, 127, 220, 206, 76, 2, 
-    222, 136, 2, 69, 92, 127, 220, 206, 76, 2, 222, 136, 2, 51, 69, 92, 127, 
-    76, 221, 225, 218, 151, 218, 237, 76, 229, 28, 248, 208, 235, 115, 246, 
-    154, 5, 71, 127, 65, 227, 160, 221, 180, 230, 113, 71, 127, 65, 127, 76, 
-    71, 227, 160, 254, 151, 114, 101, 90, 76, 221, 225, 244, 29, 90, 76, 221, 
-    225, 223, 57, 127, 228, 92, 65, 90, 228, 92, 65, 227, 160, 221, 180, 230, 
-    113, 71, 90, 65, 90, 76, 71, 227, 160, 254, 151, 114, 101, 221, 180, 230, 
-    113, 71, 127, 65, 127, 76, 71, 254, 151, 114, 101, 127, 76, 71, 227, 160, 
-    221, 180, 230, 112, 90, 76, 71, 227, 160, 221, 180, 230, 112, 67, 234, 
-    18, 223, 156, 84, 3, 223, 156, 67, 3, 223, 156, 84, 227, 106, 229, 175, 
-    67, 227, 106, 229, 175, 106, 235, 146, 250, 221, 106, 230, 78, 2, 230, 
-    78, 237, 190, 106, 250, 222, 2, 250, 222, 237, 190, 106, 250, 221, 106, 
-    34, 226, 149, 125, 6, 1, 253, 205, 125, 6, 1, 251, 244, 125, 6, 1, 219, 
-    163, 125, 6, 1, 244, 76, 125, 6, 1, 248, 162, 125, 6, 1, 218, 1, 125, 6, 
-    1, 217, 66, 125, 6, 1, 247, 71, 125, 6, 1, 217, 89, 125, 6, 1, 237, 130, 
-    125, 6, 1, 66, 237, 130, 125, 6, 1, 72, 125, 6, 1, 248, 180, 125, 6, 1, 
-    236, 238, 125, 6, 1, 235, 19, 125, 6, 1, 233, 37, 125, 6, 1, 232, 208, 
-    125, 6, 1, 230, 129, 125, 6, 1, 229, 26, 125, 6, 1, 227, 87, 125, 6, 1, 
-    224, 47, 125, 6, 1, 220, 226, 125, 6, 1, 220, 98, 125, 6, 1, 245, 99, 
-    125, 6, 1, 243, 130, 125, 6, 1, 230, 87, 125, 6, 1, 229, 198, 125, 6, 1, 
-    224, 173, 125, 6, 1, 221, 39, 125, 6, 1, 251, 3, 125, 6, 1, 225, 25, 125, 
-    6, 1, 218, 7, 125, 6, 1, 218, 9, 125, 6, 1, 218, 34, 125, 6, 1, 223, 243, 
-    155, 125, 6, 1, 217, 200, 125, 6, 1, 3, 217, 178, 125, 6, 1, 3, 217, 179, 
-    2, 222, 135, 125, 6, 1, 217, 231, 125, 6, 1, 237, 161, 3, 217, 178, 125, 
-    6, 1, 252, 76, 217, 178, 125, 6, 1, 237, 161, 252, 76, 217, 178, 125, 6, 
-    1, 245, 171, 125, 6, 1, 237, 128, 125, 6, 1, 224, 172, 125, 6, 1, 221, 
-    70, 60, 125, 6, 1, 235, 137, 233, 37, 125, 3, 1, 253, 205, 125, 3, 1, 
-    251, 244, 125, 3, 1, 219, 163, 125, 3, 1, 244, 76, 125, 3, 1, 248, 162, 
-    125, 3, 1, 218, 1, 125, 3, 1, 217, 66, 125, 3, 1, 247, 71, 125, 3, 1, 
-    217, 89, 125, 3, 1, 237, 130, 125, 3, 1, 66, 237, 130, 125, 3, 1, 72, 
-    125, 3, 1, 248, 180, 125, 3, 1, 236, 238, 125, 3, 1, 235, 19, 125, 3, 1, 
-    233, 37, 125, 3, 1, 232, 208, 125, 3, 1, 230, 129, 125, 3, 1, 229, 26, 
-    125, 3, 1, 227, 87, 125, 3, 1, 224, 47, 125, 3, 1, 220, 226, 125, 3, 1, 
-    220, 98, 125, 3, 1, 245, 99, 125, 3, 1, 243, 130, 125, 3, 1, 230, 87, 
-    125, 3, 1, 229, 198, 125, 3, 1, 224, 173, 125, 3, 1, 221, 39, 125, 3, 1, 
-    251, 3, 125, 3, 1, 225, 25, 125, 3, 1, 218, 7, 125, 3, 1, 218, 9, 125, 3, 
-    1, 218, 34, 125, 3, 1, 223, 243, 155, 125, 3, 1, 217, 200, 125, 3, 1, 3, 
-    217, 178, 125, 3, 1, 3, 217, 179, 2, 222, 135, 125, 3, 1, 217, 231, 125, 
-    3, 1, 237, 161, 3, 217, 178, 125, 3, 1, 252, 76, 217, 178, 125, 3, 1, 
-    237, 161, 252, 76, 217, 178, 125, 3, 1, 245, 171, 125, 3, 1, 237, 128, 
-    125, 3, 1, 224, 172, 125, 3, 1, 221, 70, 60, 125, 3, 1, 235, 137, 233, 
-    37, 7, 6, 1, 235, 202, 2, 51, 135, 7, 3, 1, 235, 202, 2, 51, 135, 7, 6, 
-    1, 235, 202, 2, 233, 193, 221, 179, 7, 6, 1, 230, 60, 2, 92, 7, 6, 1, 
-    228, 39, 2, 222, 135, 7, 3, 1, 112, 2, 92, 7, 3, 1, 222, 202, 2, 249, 11, 
-    92, 7, 6, 1, 243, 226, 2, 249, 48, 7, 3, 1, 243, 226, 2, 249, 48, 7, 6, 
-    1, 237, 18, 2, 249, 48, 7, 3, 1, 237, 18, 2, 249, 48, 7, 6, 1, 217, 158, 
-    2, 249, 48, 7, 3, 1, 217, 158, 2, 249, 48, 7, 6, 1, 254, 146, 7, 6, 1, 
-    234, 187, 2, 96, 7, 6, 1, 215, 60, 7, 6, 1, 215, 254, 146, 7, 3, 1, 220, 
-    11, 2, 45, 96, 7, 6, 1, 219, 41, 2, 96, 7, 3, 1, 219, 41, 2, 96, 7, 3, 1, 
-    220, 11, 2, 250, 80, 7, 6, 1, 144, 243, 225, 7, 3, 1, 144, 243, 225, 7, 
-    3, 1, 222, 133, 229, 129, 7, 3, 1, 178, 2, 231, 183, 7, 3, 1, 215, 228, 
-    39, 2, 222, 135, 7, 3, 1, 142, 2, 109, 227, 94, 237, 190, 7, 1, 3, 6, 
-    215, 73, 7, 223, 94, 3, 1, 237, 126, 58, 1, 6, 216, 216, 7, 6, 1, 226, 
-    235, 2, 223, 33, 222, 135, 7, 6, 1, 217, 158, 2, 223, 33, 222, 135, 75, 
-    6, 1, 254, 163, 75, 3, 1, 254, 163, 75, 6, 1, 219, 92, 75, 3, 1, 219, 92, 
-    75, 6, 1, 244, 231, 75, 3, 1, 244, 231, 75, 6, 1, 249, 179, 75, 3, 1, 
-    249, 179, 75, 6, 1, 246, 236, 75, 3, 1, 246, 236, 75, 6, 1, 224, 11, 75, 
-    3, 1, 224, 11, 75, 6, 1, 217, 99, 75, 3, 1, 217, 99, 75, 6, 1, 243, 171, 
-    75, 3, 1, 243, 171, 75, 6, 1, 222, 4, 75, 3, 1, 222, 4, 75, 6, 1, 242, 
-    70, 75, 3, 1, 242, 70, 75, 6, 1, 236, 226, 75, 3, 1, 236, 226, 75, 6, 1, 
-    235, 135, 75, 3, 1, 235, 135, 75, 6, 1, 233, 196, 75, 3, 1, 233, 196, 75, 
-    6, 1, 232, 62, 75, 3, 1, 232, 62, 75, 6, 1, 236, 11, 75, 3, 1, 236, 11, 
-    75, 6, 1, 74, 75, 3, 1, 74, 75, 6, 1, 229, 108, 75, 3, 1, 229, 108, 75, 
-    6, 1, 227, 75, 75, 3, 1, 227, 75, 75, 6, 1, 224, 118, 75, 3, 1, 224, 118, 
-    75, 6, 1, 222, 105, 75, 3, 1, 222, 105, 75, 6, 1, 220, 123, 75, 3, 1, 
-    220, 123, 75, 6, 1, 245, 203, 75, 3, 1, 245, 203, 75, 6, 1, 236, 130, 75, 
-    3, 1, 236, 130, 75, 6, 1, 228, 212, 75, 3, 1, 228, 212, 75, 6, 1, 230, 
-    123, 75, 3, 1, 230, 123, 75, 6, 1, 249, 9, 254, 168, 75, 3, 1, 249, 9, 
-    254, 168, 75, 6, 1, 48, 75, 254, 191, 75, 3, 1, 48, 75, 254, 191, 75, 6, 
-    1, 250, 93, 246, 236, 75, 3, 1, 250, 93, 246, 236, 75, 6, 1, 249, 9, 236, 
-    226, 75, 3, 1, 249, 9, 236, 226, 75, 6, 1, 249, 9, 232, 62, 75, 3, 1, 
-    249, 9, 232, 62, 75, 6, 1, 250, 93, 232, 62, 75, 3, 1, 250, 93, 232, 62, 
-    75, 6, 1, 48, 75, 230, 123, 75, 3, 1, 48, 75, 230, 123, 75, 6, 1, 226, 
-    142, 75, 3, 1, 226, 142, 75, 6, 1, 250, 98, 224, 238, 75, 3, 1, 250, 98, 
-    224, 238, 75, 6, 1, 48, 75, 224, 238, 75, 3, 1, 48, 75, 224, 238, 75, 6, 
-    1, 48, 75, 246, 133, 75, 3, 1, 48, 75, 246, 133, 75, 6, 1, 254, 178, 236, 
-    135, 75, 3, 1, 254, 178, 236, 135, 75, 6, 1, 249, 9, 242, 242, 75, 3, 1, 
-    249, 9, 242, 242, 75, 6, 1, 48, 75, 242, 242, 75, 3, 1, 48, 75, 242, 242, 
-    75, 6, 1, 48, 75, 155, 75, 3, 1, 48, 75, 155, 75, 6, 1, 235, 201, 155, 
-    75, 3, 1, 235, 201, 155, 75, 6, 1, 48, 75, 243, 145, 75, 3, 1, 48, 75, 
-    243, 145, 75, 6, 1, 48, 75, 243, 173, 75, 3, 1, 48, 75, 243, 173, 75, 6, 
-    1, 48, 75, 244, 226, 75, 3, 1, 48, 75, 244, 226, 75, 6, 1, 48, 75, 248, 
-    183, 75, 3, 1, 48, 75, 248, 183, 75, 6, 1, 48, 75, 224, 211, 75, 3, 1, 
-    48, 75, 224, 211, 75, 6, 1, 48, 231, 115, 224, 211, 75, 3, 1, 48, 231, 
-    115, 224, 211, 75, 6, 1, 48, 231, 115, 232, 92, 75, 3, 1, 48, 231, 115, 
-    232, 92, 75, 6, 1, 48, 231, 115, 231, 67, 75, 3, 1, 48, 231, 115, 231, 
-    67, 75, 6, 1, 48, 231, 115, 218, 238, 75, 3, 1, 48, 231, 115, 218, 238, 
-    75, 16, 236, 243, 75, 16, 233, 197, 227, 75, 75, 16, 229, 109, 227, 75, 
-    75, 16, 223, 152, 75, 16, 222, 106, 227, 75, 75, 16, 236, 131, 227, 75, 
-    75, 16, 224, 212, 224, 118, 75, 6, 1, 250, 93, 224, 238, 75, 3, 1, 250, 
-    93, 224, 238, 75, 6, 1, 250, 93, 244, 226, 75, 3, 1, 250, 93, 244, 226, 
-    75, 36, 232, 63, 50, 75, 36, 223, 238, 254, 2, 75, 36, 223, 238, 235, 92, 
-    75, 48, 231, 115, 245, 90, 223, 136, 75, 48, 231, 115, 248, 210, 228, 82, 
-    78, 75, 48, 231, 115, 237, 210, 228, 82, 78, 75, 48, 231, 115, 219, 154, 
-    248, 191, 75, 245, 108, 131, 243, 194, 75, 245, 90, 223, 136, 75, 233, 
-    113, 248, 191, 95, 3, 1, 254, 131, 95, 3, 1, 252, 209, 95, 3, 1, 244, 
-    230, 95, 3, 1, 248, 153, 95, 3, 1, 246, 197, 95, 3, 1, 219, 85, 95, 3, 1, 
-    217, 87, 95, 3, 1, 222, 119, 95, 3, 1, 237, 223, 95, 3, 1, 236, 233, 95, 
-    3, 1, 235, 143, 95, 3, 1, 234, 86, 95, 3, 1, 232, 211, 95, 3, 1, 230, 
-    138, 95, 3, 1, 229, 243, 95, 3, 1, 217, 76, 95, 3, 1, 227, 249, 95, 3, 1, 
-    226, 140, 95, 3, 1, 222, 112, 95, 3, 1, 220, 87, 95, 3, 1, 229, 134, 95, 
-    3, 1, 236, 138, 95, 3, 1, 244, 119, 95, 3, 1, 228, 140, 95, 3, 1, 224, 
-    209, 95, 3, 1, 251, 22, 95, 3, 1, 251, 154, 95, 3, 1, 237, 91, 95, 3, 1, 
-    250, 224, 95, 3, 1, 251, 56, 95, 3, 1, 218, 136, 95, 3, 1, 237, 101, 95, 
-    3, 1, 243, 208, 95, 3, 1, 243, 162, 95, 3, 1, 243, 108, 95, 3, 1, 218, 
-    227, 95, 3, 1, 243, 182, 95, 3, 1, 243, 2, 221, 197, 1, 184, 221, 197, 1, 
-    218, 72, 221, 197, 1, 218, 71, 221, 197, 1, 218, 63, 221, 197, 1, 218, 
-    61, 221, 197, 1, 252, 108, 255, 2, 218, 57, 221, 197, 1, 218, 57, 221, 
-    197, 1, 218, 69, 221, 197, 1, 218, 66, 221, 197, 1, 218, 68, 221, 197, 1, 
-    218, 67, 221, 197, 1, 217, 254, 221, 197, 1, 218, 64, 221, 197, 1, 218, 
-    55, 221, 197, 1, 220, 255, 218, 55, 221, 197, 1, 218, 52, 221, 197, 1, 
-    218, 59, 221, 197, 1, 252, 108, 255, 2, 218, 59, 221, 197, 1, 220, 255, 
-    218, 59, 221, 197, 1, 218, 58, 221, 197, 1, 218, 76, 221, 197, 1, 218, 
-    53, 221, 197, 1, 220, 255, 218, 53, 221, 197, 1, 218, 43, 221, 197, 1, 
-    220, 255, 218, 43, 221, 197, 1, 217, 250, 221, 197, 1, 218, 27, 221, 197, 
-    1, 254, 200, 218, 27, 221, 197, 1, 220, 255, 218, 27, 221, 197, 1, 218, 
-    51, 221, 197, 1, 218, 50, 221, 197, 1, 218, 47, 221, 197, 1, 220, 255, 
-    218, 60, 221, 197, 1, 220, 255, 218, 45, 221, 197, 1, 218, 44, 221, 197, 
-    1, 217, 200, 221, 197, 1, 218, 41, 221, 197, 1, 218, 40, 221, 197, 1, 
-    218, 62, 221, 197, 1, 220, 255, 218, 62, 221, 197, 1, 253, 208, 218, 62, 
-    221, 197, 1, 218, 39, 221, 197, 1, 218, 37, 221, 197, 1, 218, 38, 221, 
-    197, 1, 218, 36, 221, 197, 1, 218, 35, 221, 197, 1, 218, 70, 221, 197, 1, 
-    218, 33, 221, 197, 1, 218, 32, 221, 197, 1, 218, 31, 221, 197, 1, 218, 
-    30, 221, 197, 1, 218, 28, 221, 197, 1, 222, 98, 218, 28, 221, 197, 1, 
-    218, 26, 221, 197, 58, 1, 235, 182, 78, 28, 4, 235, 11, 28, 4, 233, 135, 
-    28, 4, 227, 73, 28, 4, 224, 25, 28, 4, 224, 199, 28, 4, 252, 40, 28, 4, 
-    221, 139, 28, 4, 250, 181, 28, 4, 231, 202, 28, 4, 231, 55, 28, 4, 244, 
-    73, 230, 185, 28, 4, 217, 20, 28, 4, 248, 165, 28, 4, 249, 106, 28, 4, 
-    237, 58, 28, 4, 221, 238, 28, 4, 251, 10, 28, 4, 229, 117, 28, 4, 229, 
-    36, 28, 4, 244, 130, 28, 4, 244, 126, 28, 4, 244, 127, 28, 4, 244, 128, 
-    28, 4, 223, 218, 28, 4, 223, 178, 28, 4, 223, 189, 28, 4, 223, 217, 28, 
-    4, 223, 193, 28, 4, 223, 194, 28, 4, 223, 182, 28, 4, 251, 114, 28, 4, 
-    251, 101, 28, 4, 251, 103, 28, 4, 251, 113, 28, 4, 251, 111, 28, 4, 251, 
-    112, 28, 4, 251, 102, 28, 4, 216, 247, 28, 4, 216, 227, 28, 4, 216, 238, 
-    28, 4, 216, 246, 28, 4, 216, 241, 28, 4, 216, 242, 28, 4, 216, 230, 28, 
-    4, 251, 110, 28, 4, 251, 104, 28, 4, 251, 106, 28, 4, 251, 109, 28, 4, 
-    251, 107, 28, 4, 251, 108, 28, 4, 251, 105, 28, 4, 228, 51, 28, 4, 228, 
-    41, 28, 4, 228, 47, 28, 4, 228, 50, 28, 4, 228, 48, 28, 4, 228, 49, 28, 
-    4, 228, 46, 28, 4, 235, 212, 28, 4, 235, 204, 28, 4, 235, 207, 28, 4, 
-    235, 211, 28, 4, 235, 208, 28, 4, 235, 209, 28, 4, 235, 205, 28, 4, 218, 
-    103, 28, 4, 218, 93, 28, 4, 218, 99, 28, 4, 218, 102, 28, 4, 218, 100, 
-    28, 4, 218, 101, 28, 4, 218, 98, 28, 4, 243, 236, 28, 4, 243, 227, 28, 4, 
-    243, 230, 28, 4, 243, 235, 28, 4, 243, 232, 28, 4, 243, 233, 28, 4, 243, 
-    229, 36, 31, 1, 252, 144, 36, 31, 1, 219, 165, 36, 31, 1, 244, 116, 36, 
-    31, 1, 249, 92, 36, 31, 1, 217, 72, 36, 31, 1, 217, 92, 36, 31, 1, 175, 
-    36, 31, 1, 246, 217, 36, 31, 1, 246, 205, 36, 31, 1, 246, 197, 36, 31, 1, 
-    74, 36, 31, 1, 229, 198, 36, 31, 1, 246, 148, 36, 31, 1, 246, 138, 36, 
-    31, 1, 222, 87, 36, 31, 1, 155, 36, 31, 1, 221, 50, 36, 31, 1, 251, 46, 
-    36, 31, 1, 225, 25, 36, 31, 1, 224, 248, 36, 31, 1, 245, 171, 36, 31, 1, 
-    246, 137, 36, 31, 1, 60, 36, 31, 1, 238, 26, 36, 31, 1, 248, 181, 36, 31, 
-    1, 233, 123, 220, 102, 36, 31, 1, 218, 36, 36, 31, 1, 217, 200, 36, 31, 
-    1, 237, 160, 60, 36, 31, 1, 235, 25, 217, 178, 36, 31, 1, 252, 76, 217, 
-    178, 36, 31, 1, 237, 160, 252, 76, 217, 178, 45, 254, 120, 223, 89, 234, 
-    63, 45, 254, 120, 247, 143, 223, 89, 234, 63, 42, 223, 89, 115, 45, 223, 
-    89, 115, 42, 247, 143, 223, 89, 115, 45, 247, 143, 223, 89, 115, 227, 
-    241, 237, 178, 234, 63, 227, 241, 247, 143, 237, 178, 234, 63, 247, 143, 
-    221, 103, 234, 63, 42, 221, 103, 115, 45, 221, 103, 115, 227, 241, 223, 
-    227, 42, 227, 241, 230, 140, 115, 45, 227, 241, 230, 140, 115, 246, 251, 
-    250, 121, 229, 239, 245, 126, 229, 239, 210, 245, 126, 229, 239, 242, 
-    118, 247, 143, 230, 180, 247, 130, 254, 127, 220, 53, 254, 127, 247, 143, 
-    227, 106, 254, 119, 51, 230, 177, 242, 121, 237, 170, 237, 177, 230, 23, 
-    252, 14, 242, 122, 2, 249, 13, 221, 180, 2, 227, 94, 50, 42, 109, 229, 
-    231, 115, 45, 109, 229, 231, 115, 221, 180, 2, 61, 50, 221, 180, 2, 61, 
-    56, 42, 69, 252, 201, 2, 228, 77, 45, 69, 252, 201, 2, 228, 77, 221, 120, 
-    42, 144, 115, 221, 120, 45, 144, 115, 252, 29, 42, 144, 115, 252, 29, 45, 
-    144, 115, 42, 224, 136, 105, 115, 45, 224, 136, 105, 115, 42, 51, 229, 
-    229, 45, 51, 229, 229, 124, 188, 104, 131, 61, 228, 196, 131, 61, 104, 
-    124, 188, 228, 196, 204, 245, 116, 61, 228, 196, 245, 170, 61, 78, 210, 
-    228, 82, 78, 69, 221, 179, 227, 94, 229, 31, 218, 174, 225, 55, 233, 193, 
-    248, 145, 9, 32, 227, 181, 9, 32, 250, 203, 9, 32, 226, 90, 107, 9, 32, 
-    226, 90, 103, 9, 32, 226, 90, 160, 9, 32, 229, 157, 9, 32, 252, 21, 9, 
-    32, 222, 146, 9, 32, 236, 61, 107, 9, 32, 236, 61, 103, 9, 32, 248, 189, 
-    9, 32, 226, 92, 9, 32, 3, 107, 9, 32, 3, 103, 9, 32, 235, 155, 107, 9, 
-    32, 235, 155, 103, 9, 32, 235, 155, 160, 9, 32, 235, 155, 154, 9, 32, 
-    224, 35, 9, 32, 221, 229, 9, 32, 224, 33, 107, 9, 32, 224, 33, 103, 9, 
-    32, 243, 154, 107, 9, 32, 243, 154, 103, 9, 32, 243, 189, 9, 32, 227, 
-    233, 9, 32, 251, 8, 9, 32, 223, 68, 9, 32, 233, 117, 9, 32, 249, 90, 9, 
-    32, 233, 110, 9, 32, 250, 213, 9, 32, 218, 241, 107, 9, 32, 218, 241, 
-    103, 9, 32, 245, 179, 9, 32, 229, 208, 107, 9, 32, 229, 208, 103, 9, 32, 
-    224, 114, 144, 221, 99, 221, 60, 9, 32, 250, 110, 9, 32, 248, 159, 9, 32, 
-    237, 121, 9, 32, 252, 36, 117, 250, 192, 9, 32, 246, 81, 9, 32, 223, 240, 
-    107, 9, 32, 223, 240, 103, 9, 32, 252, 211, 9, 32, 224, 119, 9, 32, 251, 
-    199, 224, 119, 9, 32, 232, 126, 107, 9, 32, 232, 126, 103, 9, 32, 232, 
-    126, 160, 9, 32, 232, 126, 154, 9, 32, 233, 243, 9, 32, 224, 240, 9, 32, 
-    227, 239, 9, 32, 246, 100, 9, 32, 230, 150, 9, 32, 251, 255, 107, 9, 32, 
-    251, 255, 103, 9, 32, 234, 21, 9, 32, 233, 112, 9, 32, 244, 40, 107, 9, 
-    32, 244, 40, 103, 9, 32, 244, 40, 160, 9, 32, 221, 196, 9, 32, 250, 191, 
-    9, 32, 218, 217, 107, 9, 32, 218, 217, 103, 9, 32, 251, 199, 226, 84, 9, 
-    32, 224, 114, 242, 189, 9, 32, 242, 189, 9, 32, 251, 199, 223, 247, 9, 
-    32, 251, 199, 224, 235, 9, 32, 245, 133, 9, 32, 251, 199, 251, 127, 9, 
-    32, 224, 114, 218, 255, 9, 32, 219, 0, 107, 9, 32, 219, 0, 103, 9, 32, 
-    250, 214, 9, 32, 251, 199, 244, 62, 9, 32, 171, 107, 9, 32, 171, 103, 9, 
-    32, 251, 199, 235, 2, 9, 32, 251, 199, 244, 213, 9, 32, 233, 109, 107, 9, 
-    32, 233, 109, 103, 9, 32, 227, 242, 9, 32, 252, 43, 9, 32, 251, 199, 222, 
-    117, 235, 119, 9, 32, 251, 199, 235, 120, 9, 32, 251, 199, 218, 194, 9, 
-    32, 251, 199, 245, 142, 9, 32, 247, 3, 107, 9, 32, 247, 3, 103, 9, 32, 
-    247, 3, 160, 9, 32, 251, 199, 247, 2, 9, 32, 243, 159, 9, 32, 251, 199, 
-    242, 188, 9, 32, 252, 35, 9, 32, 244, 111, 9, 32, 251, 199, 245, 176, 9, 
-    32, 251, 199, 252, 67, 9, 32, 251, 199, 226, 151, 9, 32, 224, 114, 218, 
-    212, 9, 32, 224, 114, 218, 20, 9, 32, 251, 199, 245, 98, 9, 32, 237, 125, 
-    246, 103, 9, 32, 251, 199, 246, 103, 9, 32, 237, 125, 221, 121, 9, 32, 
-    251, 199, 221, 121, 9, 32, 237, 125, 247, 123, 9, 32, 251, 199, 247, 123, 
-    9, 32, 220, 234, 9, 32, 237, 125, 220, 234, 9, 32, 251, 199, 220, 234, 
-    53, 32, 107, 53, 32, 235, 43, 53, 32, 248, 145, 53, 32, 224, 55, 53, 32, 
-    226, 89, 53, 32, 96, 53, 32, 103, 53, 32, 235, 64, 53, 32, 234, 86, 53, 
-    32, 235, 103, 53, 32, 246, 178, 53, 32, 185, 53, 32, 113, 252, 21, 53, 
-    32, 250, 111, 53, 32, 242, 65, 53, 32, 222, 146, 53, 32, 230, 119, 252, 
-    21, 53, 32, 236, 60, 53, 32, 229, 10, 53, 32, 218, 169, 53, 32, 223, 235, 
-    53, 32, 45, 230, 119, 252, 21, 53, 32, 243, 109, 246, 192, 53, 32, 222, 
-    65, 53, 32, 248, 189, 53, 32, 226, 92, 53, 32, 250, 203, 53, 32, 228, 
-    231, 53, 32, 254, 208, 53, 32, 233, 105, 53, 32, 246, 192, 53, 32, 247, 
-    8, 53, 32, 226, 108, 53, 32, 244, 68, 53, 32, 244, 69, 224, 45, 53, 32, 
-    246, 102, 53, 32, 252, 75, 53, 32, 218, 183, 53, 32, 251, 24, 53, 32, 
-    227, 66, 53, 32, 237, 220, 53, 32, 224, 43, 53, 32, 235, 154, 53, 32, 
-    250, 119, 53, 32, 223, 230, 53, 32, 233, 107, 53, 32, 227, 84, 53, 32, 
-    218, 171, 53, 32, 230, 134, 53, 32, 220, 239, 53, 32, 247, 113, 53, 32, 
-    224, 192, 221, 229, 53, 32, 247, 143, 250, 203, 53, 32, 171, 223, 122, 
-    53, 32, 124, 243, 187, 53, 32, 224, 194, 53, 32, 252, 24, 53, 32, 224, 
-    32, 53, 32, 252, 3, 53, 32, 223, 145, 53, 32, 243, 153, 53, 32, 243, 195, 
-    53, 32, 248, 148, 53, 32, 243, 189, 53, 32, 252, 14, 53, 32, 227, 233, 
-    53, 32, 226, 99, 53, 32, 248, 212, 53, 32, 253, 213, 53, 32, 223, 227, 
-    53, 32, 231, 184, 53, 32, 223, 68, 53, 32, 226, 118, 53, 32, 233, 117, 
-    53, 32, 221, 98, 53, 32, 235, 178, 53, 32, 223, 136, 53, 32, 249, 90, 53, 
-    32, 218, 226, 53, 32, 248, 168, 231, 184, 53, 32, 250, 165, 53, 32, 245, 
-    84, 53, 32, 250, 211, 53, 32, 223, 148, 53, 32, 218, 240, 53, 32, 245, 
-    179, 53, 32, 250, 210, 53, 32, 245, 235, 53, 32, 51, 218, 151, 53, 32, 
-    144, 221, 99, 221, 60, 53, 32, 224, 52, 53, 32, 245, 243, 53, 32, 250, 
-    110, 53, 32, 248, 159, 53, 32, 228, 228, 53, 32, 237, 121, 53, 32, 234, 
-    3, 53, 32, 221, 178, 53, 32, 223, 31, 53, 32, 235, 59, 53, 32, 220, 33, 
-    53, 32, 245, 202, 53, 32, 252, 36, 117, 250, 192, 53, 32, 224, 137, 53, 
-    32, 247, 143, 222, 62, 53, 32, 218, 207, 53, 32, 224, 62, 53, 32, 248, 
-    202, 53, 32, 246, 81, 53, 32, 223, 249, 53, 32, 65, 53, 32, 223, 138, 53, 
-    32, 223, 239, 53, 32, 221, 108, 53, 32, 244, 45, 53, 32, 251, 119, 53, 
-    32, 223, 160, 53, 32, 252, 211, 53, 32, 227, 145, 53, 32, 224, 119, 53, 
-    32, 237, 117, 53, 32, 232, 125, 53, 32, 224, 240, 53, 32, 245, 228, 53, 
-    32, 230, 150, 53, 32, 254, 126, 53, 32, 229, 47, 53, 32, 247, 11, 53, 32, 
-    251, 254, 53, 32, 234, 21, 53, 32, 233, 156, 53, 32, 225, 73, 53, 32, 
-    254, 23, 53, 32, 233, 112, 53, 32, 221, 124, 53, 32, 230, 111, 53, 32, 
-    252, 38, 53, 32, 223, 134, 53, 32, 250, 174, 53, 32, 244, 39, 53, 32, 
-    221, 196, 53, 32, 237, 192, 53, 32, 252, 44, 53, 32, 219, 0, 246, 192, 
-    53, 32, 250, 191, 53, 32, 218, 216, 53, 32, 226, 84, 53, 32, 242, 189, 
-    53, 32, 223, 247, 53, 32, 219, 186, 53, 32, 252, 141, 53, 32, 229, 78, 
-    53, 32, 252, 227, 53, 32, 224, 235, 53, 32, 227, 202, 53, 32, 227, 10, 
-    53, 32, 245, 133, 53, 32, 252, 37, 53, 32, 251, 127, 53, 32, 252, 58, 53, 
-    32, 233, 114, 53, 32, 218, 255, 53, 32, 250, 214, 53, 32, 218, 192, 53, 
-    32, 248, 199, 53, 32, 219, 86, 53, 32, 244, 62, 53, 32, 235, 2, 53, 32, 
-    244, 213, 53, 32, 233, 108, 53, 32, 224, 54, 53, 32, 224, 192, 222, 134, 
-    252, 67, 53, 32, 227, 242, 53, 32, 252, 43, 53, 32, 218, 166, 53, 32, 
-    246, 3, 53, 32, 235, 119, 53, 32, 222, 117, 235, 119, 53, 32, 235, 116, 
-    53, 32, 224, 8, 53, 32, 235, 120, 53, 32, 218, 194, 53, 32, 245, 142, 53, 
-    32, 247, 2, 53, 32, 243, 159, 53, 32, 245, 106, 53, 32, 242, 188, 53, 32, 
-    252, 35, 53, 32, 222, 122, 53, 32, 243, 200, 53, 32, 245, 195, 53, 32, 
-    226, 172, 218, 192, 53, 32, 251, 121, 53, 32, 244, 111, 53, 32, 245, 176, 
-    53, 32, 252, 67, 53, 32, 226, 151, 53, 32, 249, 80, 53, 32, 218, 212, 53, 
-    32, 243, 139, 53, 32, 218, 20, 53, 32, 233, 163, 53, 32, 252, 53, 53, 32, 
-    246, 202, 53, 32, 245, 98, 53, 32, 221, 76, 53, 32, 247, 115, 53, 32, 
-    227, 228, 53, 32, 231, 185, 53, 32, 246, 103, 53, 32, 221, 121, 53, 32, 
-    247, 123, 53, 32, 220, 234, 53, 32, 245, 143, 98, 249, 46, 126, 42, 199, 
-    227, 109, 98, 249, 46, 126, 71, 199, 56, 98, 249, 46, 126, 42, 199, 233, 
-    193, 25, 227, 109, 98, 249, 46, 126, 71, 199, 233, 193, 25, 56, 98, 249, 
-    46, 126, 245, 90, 223, 47, 98, 249, 46, 126, 223, 48, 245, 97, 50, 98, 
-    249, 46, 126, 223, 48, 245, 97, 56, 98, 249, 46, 126, 223, 48, 245, 97, 
-    235, 115, 98, 249, 46, 126, 223, 48, 245, 97, 220, 60, 235, 115, 98, 249, 
-    46, 126, 223, 48, 245, 97, 220, 60, 227, 109, 98, 249, 46, 126, 223, 48, 
-    245, 97, 234, 237, 235, 115, 98, 249, 46, 126, 230, 76, 98, 223, 254, 98, 
-    250, 168, 98, 245, 90, 223, 136, 248, 196, 78, 237, 118, 237, 209, 223, 
-    159, 100, 98, 237, 138, 78, 98, 250, 194, 78, 98, 54, 217, 84, 42, 254, 
-    120, 115, 45, 254, 120, 115, 42, 51, 254, 120, 115, 45, 51, 254, 120, 
-    115, 42, 250, 124, 115, 45, 250, 124, 115, 42, 67, 250, 124, 115, 45, 67, 
-    250, 124, 115, 42, 84, 235, 91, 115, 45, 84, 235, 91, 115, 229, 14, 78, 
-    244, 163, 78, 42, 221, 114, 224, 236, 115, 45, 221, 114, 224, 236, 115, 
-    42, 67, 235, 91, 115, 45, 67, 235, 91, 115, 42, 67, 221, 114, 224, 236, 
-    115, 45, 67, 221, 114, 224, 236, 115, 42, 67, 40, 115, 45, 67, 40, 115, 
-    218, 237, 249, 146, 210, 51, 228, 236, 228, 69, 78, 51, 228, 236, 228, 
-    69, 78, 109, 51, 228, 236, 228, 69, 78, 229, 14, 164, 246, 3, 243, 185, 
-    231, 107, 107, 243, 185, 231, 107, 103, 243, 185, 231, 107, 160, 243, 
-    185, 231, 107, 154, 243, 185, 231, 107, 174, 243, 185, 231, 107, 182, 
-    243, 185, 231, 107, 191, 243, 185, 231, 107, 185, 243, 185, 231, 107, 
-    190, 98, 235, 83, 145, 78, 98, 227, 88, 145, 78, 98, 249, 52, 145, 78, 
-    98, 246, 177, 145, 78, 22, 224, 109, 61, 145, 78, 22, 51, 61, 145, 78, 
-    218, 235, 249, 146, 69, 236, 232, 227, 182, 78, 69, 236, 232, 227, 182, 
-    2, 219, 70, 224, 9, 78, 69, 236, 232, 227, 182, 164, 220, 60, 243, 194, 
-    69, 236, 232, 227, 182, 2, 219, 70, 224, 9, 164, 220, 60, 243, 194, 69, 
-    236, 232, 227, 182, 164, 234, 237, 243, 194, 34, 229, 14, 78, 98, 183, 
-    235, 44, 245, 225, 225, 55, 100, 243, 185, 231, 107, 222, 65, 243, 185, 
-    231, 107, 220, 219, 243, 185, 231, 107, 221, 245, 69, 98, 237, 138, 78, 
-    234, 52, 78, 229, 225, 254, 143, 78, 98, 41, 237, 211, 98, 144, 245, 188, 
-    223, 254, 136, 1, 3, 60, 136, 1, 60, 136, 1, 3, 72, 136, 1, 72, 136, 1, 
-    3, 68, 136, 1, 68, 136, 1, 3, 73, 136, 1, 73, 136, 1, 3, 74, 136, 1, 74, 
-    136, 1, 175, 136, 1, 245, 0, 136, 1, 236, 113, 136, 1, 244, 103, 136, 1, 
-    236, 7, 136, 1, 244, 17, 136, 1, 236, 184, 136, 1, 244, 191, 136, 1, 236, 
-    57, 136, 1, 244, 68, 136, 1, 226, 177, 136, 1, 217, 114, 136, 1, 224, 
-    140, 136, 1, 217, 42, 136, 1, 223, 103, 136, 1, 217, 13, 136, 1, 226, 94, 
-    136, 1, 217, 92, 136, 1, 224, 26, 136, 1, 217, 21, 136, 1, 222, 155, 136, 
-    1, 249, 207, 136, 1, 221, 205, 136, 1, 249, 15, 136, 1, 3, 221, 0, 136, 
-    1, 221, 0, 136, 1, 247, 111, 136, 1, 222, 87, 136, 1, 249, 92, 136, 1, 
-    101, 136, 1, 248, 167, 136, 1, 208, 136, 1, 232, 62, 136, 1, 231, 144, 
-    136, 1, 232, 141, 136, 1, 231, 204, 136, 1, 155, 136, 1, 252, 237, 136, 
-    1, 187, 136, 1, 243, 112, 136, 1, 252, 84, 136, 1, 229, 108, 136, 1, 242, 
-    173, 136, 1, 251, 248, 136, 1, 228, 202, 136, 1, 243, 162, 136, 1, 252, 
-    144, 136, 1, 229, 198, 136, 1, 243, 4, 136, 1, 252, 41, 136, 1, 229, 37, 
-    136, 1, 196, 136, 1, 233, 196, 136, 1, 233, 99, 136, 1, 234, 25, 136, 1, 
-    233, 136, 136, 1, 3, 184, 136, 1, 184, 136, 1, 3, 217, 200, 136, 1, 217, 
-    200, 136, 1, 3, 217, 231, 136, 1, 217, 231, 136, 1, 203, 136, 1, 227, 
-    147, 136, 1, 227, 22, 136, 1, 227, 216, 136, 1, 227, 75, 136, 1, 3, 219, 
-    7, 136, 1, 219, 7, 136, 1, 218, 204, 136, 1, 218, 227, 136, 1, 218, 187, 
-    136, 1, 207, 136, 1, 219, 56, 136, 1, 3, 175, 136, 1, 3, 236, 184, 36, 
-    236, 202, 219, 70, 224, 9, 78, 36, 236, 202, 225, 72, 224, 9, 78, 236, 
-    202, 219, 70, 224, 9, 78, 236, 202, 225, 72, 224, 9, 78, 136, 237, 138, 
-    78, 136, 219, 70, 237, 138, 78, 136, 248, 234, 217, 213, 236, 202, 51, 
-    242, 121, 52, 1, 3, 60, 52, 1, 60, 52, 1, 3, 72, 52, 1, 72, 52, 1, 3, 68, 
-    52, 1, 68, 52, 1, 3, 73, 52, 1, 73, 52, 1, 3, 74, 52, 1, 74, 52, 1, 175, 
-    52, 1, 245, 0, 52, 1, 236, 113, 52, 1, 244, 103, 52, 1, 236, 7, 52, 1, 
-    244, 17, 52, 1, 236, 184, 52, 1, 244, 191, 52, 1, 236, 57, 52, 1, 244, 
-    68, 52, 1, 226, 177, 52, 1, 217, 114, 52, 1, 224, 140, 52, 1, 217, 42, 
-    52, 1, 223, 103, 52, 1, 217, 13, 52, 1, 226, 94, 52, 1, 217, 92, 52, 1, 
-    224, 26, 52, 1, 217, 21, 52, 1, 222, 155, 52, 1, 249, 207, 52, 1, 221, 
-    205, 52, 1, 249, 15, 52, 1, 3, 221, 0, 52, 1, 221, 0, 52, 1, 247, 111, 
-    52, 1, 222, 87, 52, 1, 249, 92, 52, 1, 101, 52, 1, 248, 167, 52, 1, 208, 
-    52, 1, 232, 62, 52, 1, 231, 144, 52, 1, 232, 141, 52, 1, 231, 204, 52, 1, 
-    155, 52, 1, 252, 237, 52, 1, 187, 52, 1, 243, 112, 52, 1, 252, 84, 52, 1, 
-    229, 108, 52, 1, 242, 173, 52, 1, 251, 248, 52, 1, 228, 202, 52, 1, 243, 
-    162, 52, 1, 252, 144, 52, 1, 229, 198, 52, 1, 243, 4, 52, 1, 252, 41, 52, 
-    1, 229, 37, 52, 1, 196, 52, 1, 233, 196, 52, 1, 233, 99, 52, 1, 234, 25, 
-    52, 1, 233, 136, 52, 1, 3, 184, 52, 1, 184, 52, 1, 3, 217, 200, 52, 1, 
-    217, 200, 52, 1, 3, 217, 231, 52, 1, 217, 231, 52, 1, 203, 52, 1, 227, 
-    147, 52, 1, 227, 22, 52, 1, 227, 216, 52, 1, 227, 75, 52, 1, 3, 219, 7, 
-    52, 1, 219, 7, 52, 1, 218, 204, 52, 1, 218, 227, 52, 1, 218, 187, 52, 1, 
-    207, 52, 1, 219, 56, 52, 1, 3, 175, 52, 1, 3, 236, 184, 52, 1, 219, 189, 
-    52, 1, 219, 94, 52, 1, 219, 165, 52, 1, 219, 72, 52, 233, 193, 248, 145, 
-    236, 202, 228, 223, 224, 9, 78, 52, 237, 138, 78, 52, 219, 70, 237, 138, 
-    78, 52, 248, 234, 236, 30, 200, 1, 253, 204, 200, 1, 230, 59, 200, 1, 
-    189, 200, 1, 246, 74, 200, 1, 250, 46, 200, 1, 222, 201, 200, 1, 207, 
-    200, 1, 153, 200, 1, 245, 67, 200, 1, 237, 17, 200, 1, 243, 225, 200, 1, 
-    237, 126, 200, 1, 228, 163, 200, 1, 218, 151, 200, 1, 217, 81, 200, 1, 
-    251, 70, 200, 1, 225, 27, 200, 1, 152, 200, 1, 217, 157, 200, 1, 251, 
-    202, 200, 1, 198, 200, 1, 60, 200, 1, 74, 200, 1, 73, 200, 1, 246, 239, 
-    200, 1, 254, 196, 200, 1, 246, 237, 200, 1, 253, 232, 200, 1, 230, 86, 
-    200, 1, 254, 131, 200, 1, 246, 197, 200, 1, 254, 123, 200, 1, 246, 185, 
-    200, 1, 246, 148, 200, 1, 72, 200, 1, 68, 200, 1, 237, 137, 200, 1, 216, 
-    216, 200, 1, 232, 117, 200, 1, 244, 72, 200, 1, 238, 0, 22, 1, 236, 86, 
-    22, 1, 223, 211, 22, 1, 236, 79, 22, 1, 232, 55, 22, 1, 232, 53, 22, 1, 
-    232, 52, 22, 1, 221, 192, 22, 1, 223, 200, 22, 1, 227, 140, 22, 1, 227, 
-    135, 22, 1, 227, 132, 22, 1, 227, 125, 22, 1, 227, 120, 22, 1, 227, 115, 
-    22, 1, 227, 126, 22, 1, 227, 138, 22, 1, 233, 187, 22, 1, 229, 99, 22, 1, 
-    223, 208, 22, 1, 229, 88, 22, 1, 224, 104, 22, 1, 223, 205, 22, 1, 238, 
-    22, 22, 1, 250, 230, 22, 1, 223, 215, 22, 1, 251, 29, 22, 1, 236, 128, 
-    22, 1, 222, 0, 22, 1, 229, 127, 22, 1, 243, 106, 22, 1, 60, 22, 1, 254, 
-    234, 22, 1, 184, 22, 1, 218, 65, 22, 1, 246, 168, 22, 1, 73, 22, 1, 218, 
-    16, 22, 1, 218, 25, 22, 1, 74, 22, 1, 219, 7, 22, 1, 219, 4, 22, 1, 230, 
-    167, 22, 1, 217, 231, 22, 1, 68, 22, 1, 218, 219, 22, 1, 218, 227, 22, 1, 
-    218, 204, 22, 1, 217, 200, 22, 1, 246, 115, 22, 1, 217, 250, 22, 1, 72, 
-    22, 245, 185, 22, 1, 223, 209, 22, 1, 232, 45, 22, 1, 232, 47, 22, 1, 
-    232, 50, 22, 1, 227, 133, 22, 1, 227, 114, 22, 1, 227, 122, 22, 1, 227, 
-    127, 22, 1, 227, 112, 22, 1, 233, 180, 22, 1, 233, 177, 22, 1, 233, 181, 
-    22, 1, 236, 220, 22, 1, 229, 94, 22, 1, 229, 80, 22, 1, 229, 86, 22, 1, 
-    229, 83, 22, 1, 229, 97, 22, 1, 229, 81, 22, 1, 236, 218, 22, 1, 236, 
-    216, 22, 1, 224, 97, 22, 1, 224, 95, 22, 1, 224, 87, 22, 1, 224, 92, 22, 
-    1, 224, 102, 22, 1, 230, 1, 22, 1, 223, 212, 22, 1, 218, 6, 22, 1, 218, 
-    2, 22, 1, 218, 3, 22, 1, 236, 219, 22, 1, 223, 213, 22, 1, 218, 12, 22, 
-    1, 217, 225, 22, 1, 217, 224, 22, 1, 217, 227, 22, 1, 217, 191, 22, 1, 
-    217, 192, 22, 1, 217, 195, 22, 1, 254, 60, 22, 1, 254, 54, 98, 254, 112, 
-    235, 33, 78, 98, 254, 112, 227, 160, 78, 98, 254, 112, 131, 78, 98, 254, 
-    112, 124, 78, 98, 254, 112, 148, 78, 98, 254, 112, 245, 116, 78, 98, 254, 
-    112, 221, 120, 78, 98, 254, 112, 233, 193, 78, 98, 254, 112, 252, 29, 78, 
-    98, 254, 112, 245, 178, 78, 98, 254, 112, 226, 90, 78, 98, 254, 112, 221, 
-    252, 78, 98, 254, 112, 245, 110, 78, 98, 254, 112, 243, 152, 78, 98, 254, 
-    112, 247, 9, 78, 98, 254, 112, 234, 87, 78, 200, 1, 251, 248, 200, 1, 
-    217, 42, 200, 1, 237, 98, 200, 1, 244, 17, 200, 1, 246, 250, 200, 1, 246, 
-    183, 200, 1, 230, 127, 200, 1, 230, 131, 200, 1, 237, 156, 200, 1, 254, 
-    114, 200, 1, 237, 198, 200, 1, 220, 68, 200, 1, 237, 238, 200, 1, 232, 
-    101, 200, 1, 254, 190, 200, 1, 253, 228, 200, 1, 254, 140, 200, 1, 230, 
-    146, 200, 1, 230, 133, 200, 1, 237, 195, 200, 39, 1, 230, 59, 200, 39, 1, 
-    222, 201, 200, 39, 1, 237, 17, 200, 39, 1, 243, 225, 9, 214, 222, 201, 9, 
-    214, 218, 213, 9, 214, 218, 131, 9, 214, 251, 214, 9, 214, 223, 37, 9, 
-    214, 242, 111, 9, 214, 242, 115, 9, 214, 242, 179, 9, 214, 242, 112, 9, 
-    214, 222, 204, 9, 214, 242, 114, 9, 214, 242, 110, 9, 214, 242, 177, 9, 
-    214, 242, 113, 9, 214, 242, 109, 9, 214, 207, 9, 214, 243, 225, 9, 214, 
-    198, 9, 214, 230, 59, 9, 214, 224, 0, 9, 214, 250, 46, 9, 214, 242, 116, 
-    9, 214, 243, 122, 9, 214, 222, 213, 9, 214, 223, 22, 9, 214, 223, 168, 9, 
-    214, 225, 32, 9, 214, 229, 200, 9, 214, 228, 165, 9, 214, 221, 140, 9, 
-    214, 222, 203, 9, 214, 223, 30, 9, 214, 242, 123, 9, 214, 242, 108, 9, 
-    214, 229, 143, 9, 214, 228, 163, 52, 1, 3, 236, 7, 52, 1, 3, 224, 140, 
-    52, 1, 3, 223, 103, 52, 1, 3, 101, 52, 1, 3, 231, 144, 52, 1, 3, 155, 52, 
-    1, 3, 243, 112, 52, 1, 3, 242, 173, 52, 1, 3, 243, 162, 52, 1, 3, 243, 4, 
-    52, 1, 3, 233, 99, 52, 1, 3, 203, 52, 1, 3, 227, 147, 52, 1, 3, 227, 22, 
-    52, 1, 3, 227, 216, 52, 1, 3, 227, 75, 82, 22, 236, 86, 82, 22, 232, 55, 
-    82, 22, 221, 192, 82, 22, 227, 140, 82, 22, 233, 187, 82, 22, 229, 99, 
-    82, 22, 224, 104, 82, 22, 238, 22, 82, 22, 250, 230, 82, 22, 251, 29, 82, 
-    22, 236, 128, 82, 22, 222, 0, 82, 22, 229, 127, 82, 22, 243, 106, 82, 22, 
-    236, 87, 60, 82, 22, 232, 56, 60, 82, 22, 221, 193, 60, 82, 22, 227, 141, 
-    60, 82, 22, 233, 188, 60, 82, 22, 229, 100, 60, 82, 22, 224, 105, 60, 82, 
-    22, 238, 23, 60, 82, 22, 250, 231, 60, 82, 22, 251, 30, 60, 82, 22, 236, 
-    129, 60, 82, 22, 222, 1, 60, 82, 22, 229, 128, 60, 82, 22, 243, 107, 60, 
-    82, 22, 250, 231, 68, 82, 236, 34, 126, 230, 156, 82, 236, 34, 126, 142, 
-    242, 173, 82, 138, 107, 82, 138, 103, 82, 138, 160, 82, 138, 154, 82, 
-    138, 174, 82, 138, 182, 82, 138, 191, 82, 138, 185, 82, 138, 190, 82, 
-    138, 222, 65, 82, 138, 233, 117, 82, 138, 245, 179, 82, 138, 218, 240, 
-    82, 138, 218, 179, 82, 138, 233, 238, 82, 138, 247, 8, 82, 138, 223, 68, 
-    82, 138, 223, 139, 82, 138, 243, 168, 82, 138, 224, 23, 82, 138, 232, 
-    218, 82, 138, 223, 248, 82, 138, 245, 184, 82, 138, 250, 154, 82, 138, 
-    235, 181, 82, 138, 227, 178, 82, 138, 251, 159, 82, 138, 223, 106, 82, 
-    138, 223, 56, 82, 138, 246, 176, 82, 138, 227, 170, 82, 138, 254, 153, 
-    82, 138, 245, 208, 82, 138, 227, 168, 82, 138, 225, 73, 82, 138, 227, 
-    215, 34, 138, 228, 81, 34, 138, 236, 103, 34, 138, 226, 107, 34, 138, 
-    236, 30, 34, 54, 222, 66, 230, 139, 84, 223, 227, 34, 54, 220, 220, 230, 
-    139, 84, 223, 227, 34, 54, 221, 246, 230, 139, 84, 223, 227, 34, 54, 245, 
-    120, 230, 139, 84, 223, 227, 34, 54, 245, 197, 230, 139, 84, 223, 227, 
-    34, 54, 224, 70, 230, 139, 84, 223, 227, 34, 54, 225, 39, 230, 139, 84, 
-    223, 227, 34, 54, 246, 228, 230, 139, 84, 223, 227, 229, 221, 55, 34, 54, 
-    220, 220, 107, 34, 54, 220, 220, 103, 34, 54, 220, 220, 160, 34, 54, 220, 
-    220, 154, 34, 54, 220, 220, 174, 34, 54, 220, 220, 182, 34, 54, 220, 220, 
-    191, 34, 54, 220, 220, 185, 34, 54, 220, 220, 190, 34, 54, 221, 245, 34, 
-    54, 221, 246, 107, 34, 54, 221, 246, 103, 34, 54, 221, 246, 160, 34, 54, 
-    221, 246, 154, 34, 54, 221, 246, 174, 34, 22, 236, 86, 34, 22, 232, 55, 
-    34, 22, 221, 192, 34, 22, 227, 140, 34, 22, 233, 187, 34, 22, 229, 99, 
-    34, 22, 224, 104, 34, 22, 238, 22, 34, 22, 250, 230, 34, 22, 251, 29, 34, 
-    22, 236, 128, 34, 22, 222, 0, 34, 22, 229, 127, 34, 22, 243, 106, 34, 22, 
-    236, 87, 60, 34, 22, 232, 56, 60, 34, 22, 221, 193, 60, 34, 22, 227, 141, 
-    60, 34, 22, 233, 188, 60, 34, 22, 229, 100, 60, 34, 22, 224, 105, 60, 34, 
-    22, 238, 23, 60, 34, 22, 250, 231, 60, 34, 22, 251, 30, 60, 34, 22, 236, 
-    129, 60, 34, 22, 222, 1, 60, 34, 22, 229, 128, 60, 34, 22, 243, 107, 60, 
-    34, 236, 34, 126, 251, 61, 34, 236, 34, 126, 237, 40, 34, 22, 238, 23, 
-    68, 236, 34, 223, 159, 100, 34, 138, 107, 34, 138, 103, 34, 138, 160, 34, 
-    138, 154, 34, 138, 174, 34, 138, 182, 34, 138, 191, 34, 138, 185, 34, 
-    138, 190, 34, 138, 222, 65, 34, 138, 233, 117, 34, 138, 245, 179, 34, 
-    138, 218, 240, 34, 138, 218, 179, 34, 138, 233, 238, 34, 138, 247, 8, 34, 
-    138, 223, 68, 34, 138, 223, 139, 34, 138, 243, 168, 34, 138, 224, 23, 34, 
-    138, 232, 218, 34, 138, 223, 248, 34, 138, 245, 184, 34, 138, 250, 154, 
-    34, 138, 235, 181, 34, 138, 226, 88, 34, 138, 234, 89, 34, 138, 245, 216, 
-    34, 138, 223, 79, 34, 138, 246, 97, 34, 138, 228, 233, 34, 138, 253, 236, 
-    34, 138, 237, 139, 34, 138, 227, 168, 34, 138, 250, 127, 34, 138, 250, 
-    118, 34, 138, 243, 99, 34, 138, 251, 84, 34, 138, 234, 239, 34, 138, 235, 
-    115, 34, 138, 227, 109, 34, 138, 234, 19, 34, 138, 227, 189, 34, 138, 
-    223, 106, 34, 138, 223, 56, 34, 138, 246, 176, 34, 138, 227, 170, 34, 
-    138, 254, 153, 34, 138, 232, 42, 34, 54, 221, 246, 182, 34, 54, 221, 246, 
-    191, 34, 54, 221, 246, 185, 34, 54, 221, 246, 190, 34, 54, 245, 119, 34, 
-    54, 245, 120, 107, 34, 54, 245, 120, 103, 34, 54, 245, 120, 160, 34, 54, 
-    245, 120, 154, 34, 54, 245, 120, 174, 34, 54, 245, 120, 182, 34, 54, 245, 
-    120, 191, 34, 54, 245, 120, 185, 34, 54, 245, 120, 190, 34, 54, 245, 196, 
-    98, 183, 16, 35, 237, 119, 98, 183, 16, 35, 245, 227, 98, 183, 16, 35, 
-    234, 69, 98, 183, 16, 35, 254, 71, 98, 183, 16, 35, 234, 45, 98, 183, 16, 
-    35, 237, 38, 98, 183, 16, 35, 237, 39, 98, 183, 16, 35, 253, 229, 98, 
-    183, 16, 35, 225, 53, 98, 183, 16, 35, 230, 170, 98, 183, 16, 35, 231, 
-    175, 98, 183, 16, 35, 249, 87, 40, 243, 122, 40, 246, 144, 40, 246, 105, 
-    235, 49, 235, 66, 55, 34, 52, 60, 34, 52, 72, 34, 52, 68, 34, 52, 73, 34, 
-    52, 74, 34, 52, 175, 34, 52, 236, 113, 34, 52, 236, 7, 34, 52, 236, 184, 
-    34, 52, 236, 57, 34, 52, 226, 177, 34, 52, 224, 140, 34, 52, 223, 103, 
-    34, 52, 226, 94, 34, 52, 224, 26, 34, 52, 222, 155, 34, 52, 221, 205, 34, 
-    52, 221, 0, 34, 52, 222, 87, 34, 52, 101, 34, 52, 208, 34, 52, 232, 62, 
-    34, 52, 231, 144, 34, 52, 232, 141, 34, 52, 231, 204, 34, 52, 155, 34, 
-    52, 243, 112, 34, 52, 242, 173, 34, 52, 243, 162, 34, 52, 243, 4, 34, 52, 
-    196, 34, 52, 233, 196, 34, 52, 233, 99, 34, 52, 234, 25, 34, 52, 233, 
-    136, 34, 52, 184, 34, 52, 217, 200, 34, 52, 217, 231, 34, 52, 203, 34, 
-    52, 227, 147, 34, 52, 227, 22, 34, 52, 227, 216, 34, 52, 227, 75, 34, 52, 
-    219, 7, 34, 52, 218, 204, 34, 52, 218, 227, 34, 52, 218, 187, 40, 254, 
-    91, 40, 254, 15, 40, 254, 108, 40, 255, 16, 40, 237, 199, 40, 237, 172, 
-    40, 220, 66, 40, 246, 124, 40, 246, 248, 40, 230, 130, 40, 230, 125, 40, 
-    236, 242, 40, 236, 214, 40, 236, 212, 40, 244, 217, 40, 244, 225, 40, 
-    244, 94, 40, 244, 90, 40, 235, 203, 40, 244, 84, 40, 236, 97, 40, 236, 
-    96, 40, 236, 95, 40, 236, 94, 40, 243, 251, 40, 243, 250, 40, 235, 244, 
-    40, 235, 246, 40, 236, 180, 40, 236, 32, 40, 236, 39, 40, 226, 162, 40, 
-    226, 136, 40, 224, 85, 40, 225, 58, 40, 225, 57, 40, 249, 204, 40, 249, 
-    45, 40, 248, 146, 40, 221, 134, 40, 232, 214, 40, 231, 176, 40, 243, 199, 
-    40, 230, 40, 40, 230, 39, 40, 252, 235, 40, 229, 105, 40, 229, 74, 40, 
-    229, 75, 40, 252, 65, 40, 242, 172, 40, 242, 168, 40, 251, 223, 40, 242, 
-    155, 40, 243, 143, 40, 229, 150, 40, 229, 178, 40, 243, 129, 40, 229, 
-    176, 40, 229, 189, 40, 252, 133, 40, 229, 27, 40, 252, 31, 40, 242, 249, 
-    40, 229, 22, 40, 242, 245, 40, 242, 246, 40, 234, 98, 40, 234, 95, 40, 
-    234, 102, 40, 234, 59, 40, 234, 80, 40, 233, 167, 40, 233, 149, 40, 233, 
-    148, 40, 234, 9, 40, 234, 7, 40, 234, 10, 40, 218, 75, 40, 218, 73, 40, 
-    217, 190, 40, 227, 86, 40, 227, 90, 40, 227, 3, 40, 226, 254, 40, 227, 
-    188, 40, 227, 186, 40, 218, 239, 98, 183, 16, 35, 242, 184, 217, 84, 98, 
-    183, 16, 35, 242, 184, 107, 98, 183, 16, 35, 242, 184, 103, 98, 183, 16, 
-    35, 242, 184, 160, 98, 183, 16, 35, 242, 184, 154, 98, 183, 16, 35, 242, 
-    184, 174, 98, 183, 16, 35, 242, 184, 182, 98, 183, 16, 35, 242, 184, 191, 
-    98, 183, 16, 35, 242, 184, 185, 98, 183, 16, 35, 242, 184, 190, 98, 183, 
-    16, 35, 242, 184, 222, 65, 98, 183, 16, 35, 242, 184, 246, 211, 98, 183, 
-    16, 35, 242, 184, 220, 221, 98, 183, 16, 35, 242, 184, 221, 247, 98, 183, 
-    16, 35, 242, 184, 245, 111, 98, 183, 16, 35, 242, 184, 245, 200, 98, 183, 
-    16, 35, 242, 184, 224, 77, 98, 183, 16, 35, 242, 184, 225, 41, 98, 183, 
-    16, 35, 242, 184, 246, 233, 98, 183, 16, 35, 242, 184, 232, 29, 98, 183, 
-    16, 35, 242, 184, 220, 219, 98, 183, 16, 35, 242, 184, 220, 213, 98, 183, 
-    16, 35, 242, 184, 220, 209, 98, 183, 16, 35, 242, 184, 220, 210, 98, 183, 
-    16, 35, 242, 184, 220, 215, 40, 242, 178, 40, 249, 207, 40, 253, 232, 40, 
-    135, 40, 230, 79, 40, 229, 201, 40, 248, 169, 40, 248, 170, 223, 226, 40, 
-    248, 170, 250, 88, 40, 237, 137, 40, 246, 147, 232, 219, 243, 144, 40, 
-    246, 147, 232, 219, 222, 221, 40, 246, 147, 232, 219, 222, 132, 40, 246, 
-    147, 232, 219, 234, 6, 40, 250, 120, 40, 230, 44, 254, 133, 40, 208, 40, 
-    233, 100, 60, 40, 196, 40, 175, 40, 236, 187, 40, 234, 41, 40, 244, 205, 
-    40, 251, 161, 40, 236, 186, 40, 229, 144, 40, 232, 119, 40, 233, 100, 
-    246, 74, 40, 233, 100, 245, 67, 40, 233, 230, 40, 236, 151, 40, 242, 116, 
-    40, 236, 115, 40, 233, 198, 40, 244, 105, 40, 221, 207, 40, 233, 100, 
-    153, 40, 233, 143, 40, 248, 177, 40, 236, 68, 40, 245, 141, 40, 231, 219, 
-    40, 233, 100, 189, 40, 233, 140, 40, 250, 183, 40, 236, 62, 40, 233, 141, 
-    223, 226, 40, 250, 184, 223, 226, 40, 234, 187, 223, 226, 40, 236, 63, 
-    223, 226, 40, 233, 141, 250, 88, 40, 250, 184, 250, 88, 40, 234, 187, 
-    250, 88, 40, 236, 63, 250, 88, 40, 234, 187, 104, 198, 40, 234, 187, 104, 
-    226, 235, 223, 226, 40, 187, 40, 236, 26, 40, 233, 102, 40, 244, 48, 40, 
-    227, 252, 40, 227, 253, 104, 198, 40, 227, 253, 104, 226, 235, 223, 226, 
-    40, 228, 213, 40, 231, 148, 40, 233, 100, 198, 40, 233, 101, 40, 228, 
-    183, 40, 231, 87, 40, 233, 100, 216, 216, 40, 233, 52, 40, 235, 237, 40, 
-    233, 53, 234, 9, 40, 228, 182, 40, 231, 86, 40, 233, 100, 219, 40, 40, 
-    233, 50, 40, 235, 235, 40, 233, 51, 234, 9, 40, 237, 18, 230, 159, 40, 
-    234, 187, 230, 159, 40, 254, 140, 40, 252, 20, 40, 251, 115, 40, 251, 
-    100, 40, 251, 203, 104, 236, 151, 40, 250, 182, 40, 249, 134, 40, 243, 
-    237, 40, 155, 40, 242, 179, 40, 237, 223, 40, 236, 75, 40, 236, 63, 251, 
-    142, 40, 236, 9, 40, 235, 15, 40, 235, 14, 40, 235, 8, 40, 234, 199, 40, 
-    234, 42, 224, 43, 40, 233, 166, 40, 233, 129, 40, 229, 142, 40, 229, 40, 
-    40, 229, 5, 40, 229, 3, 40, 223, 220, 40, 223, 41, 40, 218, 228, 40, 220, 
-    11, 104, 189, 40, 112, 104, 189, 98, 183, 16, 35, 249, 137, 107, 98, 183, 
-    16, 35, 249, 137, 103, 98, 183, 16, 35, 249, 137, 160, 98, 183, 16, 35, 
-    249, 137, 154, 98, 183, 16, 35, 249, 137, 174, 98, 183, 16, 35, 249, 137, 
-    182, 98, 183, 16, 35, 249, 137, 191, 98, 183, 16, 35, 249, 137, 185, 98, 
-    183, 16, 35, 249, 137, 190, 98, 183, 16, 35, 249, 137, 222, 65, 98, 183, 
-    16, 35, 249, 137, 246, 211, 98, 183, 16, 35, 249, 137, 220, 221, 98, 183, 
-    16, 35, 249, 137, 221, 247, 98, 183, 16, 35, 249, 137, 245, 111, 98, 183, 
-    16, 35, 249, 137, 245, 200, 98, 183, 16, 35, 249, 137, 224, 77, 98, 183, 
-    16, 35, 249, 137, 225, 41, 98, 183, 16, 35, 249, 137, 246, 233, 98, 183, 
-    16, 35, 249, 137, 232, 29, 98, 183, 16, 35, 249, 137, 220, 219, 98, 183, 
-    16, 35, 249, 137, 220, 213, 98, 183, 16, 35, 249, 137, 220, 209, 98, 183, 
-    16, 35, 249, 137, 220, 210, 98, 183, 16, 35, 249, 137, 220, 215, 98, 183, 
-    16, 35, 249, 137, 220, 216, 98, 183, 16, 35, 249, 137, 220, 211, 98, 183, 
-    16, 35, 249, 137, 220, 212, 98, 183, 16, 35, 249, 137, 220, 218, 98, 183, 
-    16, 35, 249, 137, 220, 214, 98, 183, 16, 35, 249, 137, 221, 245, 98, 183, 
-    16, 35, 249, 137, 221, 244, 40, 244, 240, 205, 35, 222, 23, 250, 108, 
-    243, 151, 205, 35, 222, 23, 227, 213, 247, 8, 205, 35, 248, 244, 253, 
-    245, 222, 23, 252, 130, 205, 35, 217, 211, 245, 137, 205, 35, 219, 1, 
-    205, 35, 250, 155, 205, 35, 222, 23, 254, 30, 205, 35, 242, 253, 221, 
-    136, 205, 35, 3, 222, 120, 205, 35, 221, 100, 205, 35, 229, 196, 205, 35, 
-    223, 158, 205, 35, 245, 218, 205, 35, 244, 32, 229, 15, 205, 35, 233, 
-    132, 205, 35, 246, 175, 205, 35, 245, 138, 205, 35, 218, 172, 230, 139, 
-    222, 23, 249, 88, 205, 35, 254, 75, 205, 35, 250, 139, 205, 35, 252, 59, 
-    221, 224, 205, 35, 244, 46, 205, 35, 223, 237, 254, 90, 205, 35, 227, 
-    162, 205, 35, 237, 194, 205, 35, 244, 32, 222, 120, 205, 35, 233, 106, 
-    250, 122, 205, 35, 244, 32, 228, 240, 205, 35, 222, 23, 255, 4, 218, 240, 
-    205, 35, 222, 23, 250, 201, 245, 179, 205, 35, 237, 206, 205, 35, 247, 
-    90, 205, 35, 227, 165, 205, 35, 244, 32, 229, 10, 205, 35, 228, 227, 205, 
-    35, 249, 151, 117, 222, 23, 235, 58, 205, 35, 222, 23, 245, 246, 205, 35, 
-    230, 109, 205, 35, 230, 173, 205, 35, 249, 66, 205, 35, 249, 84, 205, 35, 
-    237, 217, 205, 35, 252, 11, 205, 35, 250, 170, 199, 234, 12, 205, 35, 
-    244, 212, 221, 136, 205, 35, 228, 187, 220, 54, 205, 35, 230, 108, 205, 
-    35, 222, 23, 218, 221, 205, 35, 227, 156, 205, 35, 222, 23, 251, 121, 
-    205, 35, 222, 23, 254, 26, 221, 221, 205, 35, 222, 23, 236, 181, 223, 
-    141, 233, 107, 205, 35, 249, 43, 205, 35, 222, 23, 234, 61, 234, 99, 205, 
-    35, 255, 5, 205, 35, 222, 23, 218, 252, 205, 35, 222, 23, 244, 177, 218, 
-    194, 205, 35, 222, 23, 237, 44, 235, 165, 205, 35, 248, 200, 205, 35, 
-    235, 50, 205, 35, 237, 197, 221, 59, 205, 35, 3, 228, 240, 205, 35, 254, 
-    210, 250, 162, 205, 35, 252, 132, 250, 162, 8, 4, 237, 140, 8, 4, 237, 
-    134, 8, 4, 72, 8, 4, 237, 159, 8, 4, 238, 24, 8, 4, 238, 7, 8, 4, 238, 
-    26, 8, 4, 238, 25, 8, 4, 253, 244, 8, 4, 253, 214, 8, 4, 60, 8, 4, 254, 
-    92, 8, 4, 220, 64, 8, 4, 220, 67, 8, 4, 220, 65, 8, 4, 230, 92, 8, 4, 
-    230, 68, 8, 4, 74, 8, 4, 230, 120, 8, 4, 246, 98, 8, 4, 73, 8, 4, 218, 
-    165, 8, 4, 252, 60, 8, 4, 252, 57, 8, 4, 252, 84, 8, 4, 252, 68, 8, 4, 
-    252, 78, 8, 4, 252, 77, 8, 4, 252, 80, 8, 4, 252, 79, 8, 4, 252, 184, 8, 
-    4, 252, 180, 8, 4, 252, 237, 8, 4, 252, 202, 8, 4, 251, 231, 8, 4, 251, 
-    235, 8, 4, 251, 232, 8, 4, 252, 30, 8, 4, 252, 21, 8, 4, 252, 41, 8, 4, 
-    252, 32, 8, 4, 252, 97, 8, 4, 252, 144, 8, 4, 252, 109, 8, 4, 251, 221, 
-    8, 4, 251, 219, 8, 4, 251, 248, 8, 4, 251, 230, 8, 4, 251, 224, 8, 4, 
-    251, 228, 8, 4, 251, 207, 8, 4, 251, 206, 8, 4, 251, 212, 8, 4, 251, 210, 
-    8, 4, 251, 208, 8, 4, 251, 209, 8, 4, 229, 64, 8, 4, 229, 60, 8, 4, 229, 
-    108, 8, 4, 229, 70, 8, 4, 229, 79, 8, 4, 229, 103, 8, 4, 229, 101, 8, 4, 
-    229, 215, 8, 4, 229, 206, 8, 4, 187, 8, 4, 229, 246, 8, 4, 228, 192, 8, 
-    4, 228, 194, 8, 4, 228, 193, 8, 4, 229, 12, 8, 4, 229, 8, 8, 4, 229, 37, 
-    8, 4, 229, 19, 8, 4, 228, 185, 8, 4, 228, 184, 8, 4, 228, 202, 8, 4, 228, 
-    191, 8, 4, 228, 188, 8, 4, 228, 190, 8, 4, 228, 167, 8, 4, 228, 166, 8, 
-    4, 228, 171, 8, 4, 228, 170, 8, 4, 228, 168, 8, 4, 228, 169, 8, 4, 252, 
-    165, 8, 4, 252, 164, 8, 4, 252, 171, 8, 4, 252, 166, 8, 4, 252, 168, 8, 
-    4, 252, 167, 8, 4, 252, 170, 8, 4, 252, 169, 8, 4, 252, 176, 8, 4, 252, 
-    175, 8, 4, 252, 178, 8, 4, 252, 177, 8, 4, 252, 156, 8, 4, 252, 158, 8, 
-    4, 252, 157, 8, 4, 252, 161, 8, 4, 252, 160, 8, 4, 252, 163, 8, 4, 252, 
-    162, 8, 4, 252, 172, 8, 4, 252, 174, 8, 4, 252, 173, 8, 4, 252, 152, 8, 
-    4, 252, 151, 8, 4, 252, 159, 8, 4, 252, 155, 8, 4, 252, 153, 8, 4, 252, 
-    154, 8, 4, 252, 148, 8, 4, 252, 147, 8, 4, 252, 150, 8, 4, 252, 149, 8, 
-    4, 232, 188, 8, 4, 232, 187, 8, 4, 232, 193, 8, 4, 232, 189, 8, 4, 232, 
-    190, 8, 4, 232, 192, 8, 4, 232, 191, 8, 4, 232, 195, 8, 4, 232, 194, 8, 
-    4, 232, 197, 8, 4, 232, 196, 8, 4, 232, 184, 8, 4, 232, 183, 8, 4, 232, 
-    186, 8, 4, 232, 185, 8, 4, 232, 178, 8, 4, 232, 177, 8, 4, 232, 182, 8, 
-    4, 232, 181, 8, 4, 232, 179, 8, 4, 232, 180, 8, 4, 232, 172, 8, 4, 232, 
-    171, 8, 4, 232, 176, 8, 4, 232, 175, 8, 4, 232, 173, 8, 4, 232, 174, 8, 
-    4, 243, 46, 8, 4, 243, 45, 8, 4, 243, 51, 8, 4, 243, 47, 8, 4, 243, 48, 
-    8, 4, 243, 50, 8, 4, 243, 49, 8, 4, 243, 54, 8, 4, 243, 53, 8, 4, 243, 
-    56, 8, 4, 243, 55, 8, 4, 243, 37, 8, 4, 243, 39, 8, 4, 243, 38, 8, 4, 
-    243, 42, 8, 4, 243, 41, 8, 4, 243, 44, 8, 4, 243, 43, 8, 4, 243, 33, 8, 
-    4, 243, 32, 8, 4, 243, 40, 8, 4, 243, 36, 8, 4, 243, 34, 8, 4, 243, 35, 
-    8, 4, 243, 27, 8, 4, 243, 31, 8, 4, 243, 30, 8, 4, 243, 28, 8, 4, 243, 
-    29, 8, 4, 233, 145, 8, 4, 233, 144, 8, 4, 233, 196, 8, 4, 233, 151, 8, 4, 
-    233, 173, 8, 4, 233, 190, 8, 4, 233, 189, 8, 4, 234, 51, 8, 4, 234, 47, 
-    8, 4, 196, 8, 4, 234, 78, 8, 4, 233, 75, 8, 4, 233, 74, 8, 4, 233, 77, 8, 
-    4, 233, 76, 8, 4, 233, 111, 8, 4, 233, 103, 8, 4, 233, 136, 8, 4, 233, 
-    115, 8, 4, 233, 232, 8, 4, 234, 25, 8, 4, 233, 57, 8, 4, 233, 54, 8, 4, 
-    233, 99, 8, 4, 233, 71, 8, 4, 233, 64, 8, 4, 233, 69, 8, 4, 233, 36, 8, 
-    4, 233, 35, 8, 4, 233, 41, 8, 4, 233, 38, 8, 4, 245, 172, 8, 4, 245, 168, 
-    8, 4, 245, 203, 8, 4, 245, 180, 8, 4, 245, 240, 8, 4, 245, 234, 8, 4, 
-    246, 8, 8, 4, 245, 242, 8, 4, 245, 109, 8, 4, 245, 139, 8, 4, 245, 130, 
-    8, 4, 245, 80, 8, 4, 245, 79, 8, 4, 245, 92, 8, 4, 245, 85, 8, 4, 245, 
-    83, 8, 4, 245, 84, 8, 4, 245, 70, 8, 4, 245, 69, 8, 4, 245, 73, 8, 4, 
-    245, 71, 8, 4, 219, 74, 8, 4, 219, 73, 8, 4, 219, 94, 8, 4, 219, 83, 8, 
-    4, 219, 89, 8, 4, 219, 87, 8, 4, 219, 91, 8, 4, 219, 90, 8, 4, 219, 172, 
-    8, 4, 219, 168, 8, 4, 219, 189, 8, 4, 219, 182, 8, 4, 219, 62, 8, 4, 219, 
-    58, 8, 4, 219, 72, 8, 4, 219, 63, 8, 4, 219, 95, 8, 4, 219, 156, 8, 4, 
-    219, 51, 8, 4, 219, 50, 8, 4, 219, 56, 8, 4, 219, 54, 8, 4, 219, 52, 8, 
-    4, 219, 53, 8, 4, 219, 44, 8, 4, 219, 43, 8, 4, 219, 48, 8, 4, 219, 47, 
-    8, 4, 219, 45, 8, 4, 219, 46, 8, 4, 248, 197, 8, 4, 248, 185, 8, 4, 249, 
-    15, 8, 4, 248, 216, 8, 4, 248, 249, 8, 4, 248, 253, 8, 4, 248, 252, 8, 4, 
-    249, 143, 8, 4, 249, 138, 8, 4, 249, 207, 8, 4, 249, 162, 8, 4, 247, 95, 
-    8, 4, 247, 96, 8, 4, 248, 145, 8, 4, 247, 128, 8, 4, 248, 167, 8, 4, 248, 
-    147, 8, 4, 249, 41, 8, 4, 249, 92, 8, 4, 249, 53, 8, 4, 247, 88, 8, 4, 
-    247, 86, 8, 4, 247, 111, 8, 4, 247, 94, 8, 4, 247, 89, 8, 4, 247, 92, 8, 
-    4, 221, 161, 8, 4, 221, 157, 8, 4, 221, 205, 8, 4, 221, 169, 8, 4, 221, 
-    198, 8, 4, 221, 200, 8, 4, 221, 199, 8, 4, 222, 110, 8, 4, 222, 97, 8, 4, 
-    222, 155, 8, 4, 222, 115, 8, 4, 220, 244, 8, 4, 220, 243, 8, 4, 220, 246, 
-    8, 4, 220, 245, 8, 4, 221, 113, 8, 4, 221, 110, 8, 4, 101, 8, 4, 221, 
-    119, 8, 4, 222, 40, 8, 4, 222, 87, 8, 4, 222, 57, 8, 4, 220, 231, 8, 4, 
-    220, 228, 8, 4, 221, 0, 8, 4, 220, 242, 8, 4, 220, 232, 8, 4, 220, 240, 
-    8, 4, 249, 109, 8, 4, 249, 108, 8, 4, 249, 114, 8, 4, 249, 110, 8, 4, 
-    249, 111, 8, 4, 249, 113, 8, 4, 249, 112, 8, 4, 249, 125, 8, 4, 249, 124, 
-    8, 4, 249, 132, 8, 4, 249, 126, 8, 4, 249, 99, 8, 4, 249, 101, 8, 4, 249, 
-    100, 8, 4, 249, 104, 8, 4, 249, 103, 8, 4, 249, 107, 8, 4, 249, 105, 8, 
-    4, 249, 117, 8, 4, 249, 120, 8, 4, 249, 118, 8, 4, 249, 95, 8, 4, 249, 
-    94, 8, 4, 249, 102, 8, 4, 249, 98, 8, 4, 249, 96, 8, 4, 249, 97, 8, 4, 
-    232, 156, 8, 4, 232, 155, 8, 4, 232, 160, 8, 4, 232, 157, 8, 4, 232, 158, 
-    8, 4, 232, 159, 8, 4, 232, 166, 8, 4, 232, 165, 8, 4, 232, 169, 8, 4, 
-    232, 167, 8, 4, 232, 150, 8, 4, 232, 149, 8, 4, 232, 154, 8, 4, 232, 151, 
-    8, 4, 232, 161, 8, 4, 232, 164, 8, 4, 232, 162, 8, 4, 232, 144, 8, 4, 
-    232, 143, 8, 4, 232, 148, 8, 4, 232, 147, 8, 4, 232, 145, 8, 4, 232, 146, 
-    8, 4, 243, 13, 8, 4, 243, 12, 8, 4, 243, 19, 8, 4, 243, 14, 8, 4, 243, 
-    16, 8, 4, 243, 15, 8, 4, 243, 18, 8, 4, 243, 17, 8, 4, 243, 24, 8, 4, 
-    243, 23, 8, 4, 243, 26, 8, 4, 243, 25, 8, 4, 243, 7, 8, 4, 243, 8, 8, 4, 
-    243, 10, 8, 4, 243, 9, 8, 4, 243, 11, 8, 4, 243, 20, 8, 4, 243, 22, 8, 4, 
-    243, 21, 8, 4, 243, 6, 8, 4, 232, 21, 8, 4, 232, 20, 8, 4, 232, 62, 8, 4, 
-    232, 24, 8, 4, 232, 44, 8, 4, 232, 58, 8, 4, 232, 57, 8, 4, 232, 201, 8, 
-    4, 208, 8, 4, 232, 212, 8, 4, 231, 95, 8, 4, 231, 97, 8, 4, 231, 96, 8, 
-    4, 231, 184, 8, 4, 231, 173, 8, 4, 231, 204, 8, 4, 231, 191, 8, 4, 232, 
-    121, 8, 4, 232, 141, 8, 4, 232, 130, 8, 4, 231, 91, 8, 4, 231, 88, 8, 4, 
-    231, 144, 8, 4, 231, 94, 8, 4, 231, 92, 8, 4, 231, 93, 8, 4, 243, 77, 8, 
-    4, 243, 76, 8, 4, 243, 82, 8, 4, 243, 78, 8, 4, 243, 79, 8, 4, 243, 81, 
-    8, 4, 243, 80, 8, 4, 243, 87, 8, 4, 243, 86, 8, 4, 243, 89, 8, 4, 243, 
-    88, 8, 4, 243, 69, 8, 4, 243, 71, 8, 4, 243, 70, 8, 4, 243, 73, 8, 4, 
-    243, 75, 8, 4, 243, 74, 8, 4, 243, 83, 8, 4, 243, 85, 8, 4, 243, 84, 8, 
-    4, 243, 65, 8, 4, 243, 64, 8, 4, 243, 72, 8, 4, 243, 68, 8, 4, 243, 66, 
-    8, 4, 243, 67, 8, 4, 243, 59, 8, 4, 243, 58, 8, 4, 243, 63, 8, 4, 243, 
-    62, 8, 4, 243, 60, 8, 4, 243, 61, 8, 4, 235, 27, 8, 4, 235, 22, 8, 4, 
-    235, 67, 8, 4, 235, 32, 8, 4, 235, 61, 8, 4, 235, 60, 8, 4, 235, 63, 8, 
-    4, 235, 62, 8, 4, 235, 141, 8, 4, 235, 133, 8, 4, 235, 188, 8, 4, 235, 
-    147, 8, 4, 234, 214, 8, 4, 234, 213, 8, 4, 234, 216, 8, 4, 234, 215, 8, 
-    4, 234, 242, 8, 4, 234, 236, 8, 4, 235, 12, 8, 4, 234, 245, 8, 4, 235, 
-    82, 8, 4, 235, 122, 8, 4, 235, 89, 8, 4, 234, 209, 8, 4, 234, 208, 8, 4, 
-    234, 231, 8, 4, 234, 212, 8, 4, 234, 210, 8, 4, 234, 211, 8, 4, 234, 191, 
-    8, 4, 234, 190, 8, 4, 234, 198, 8, 4, 234, 194, 8, 4, 234, 192, 8, 4, 
-    234, 193, 8, 4, 244, 80, 8, 4, 244, 79, 8, 4, 244, 103, 8, 4, 244, 89, 8, 
-    4, 244, 96, 8, 4, 244, 95, 8, 4, 244, 98, 8, 4, 244, 97, 8, 4, 244, 214, 
-    8, 4, 244, 209, 8, 4, 245, 0, 8, 4, 244, 223, 8, 4, 244, 0, 8, 4, 243, 
-    255, 8, 4, 244, 2, 8, 4, 244, 1, 8, 4, 244, 51, 8, 4, 244, 49, 8, 4, 244, 
-    68, 8, 4, 244, 59, 8, 4, 244, 164, 8, 4, 244, 162, 8, 4, 244, 191, 8, 4, 
-    244, 174, 8, 4, 243, 246, 8, 4, 243, 245, 8, 4, 244, 17, 8, 4, 243, 254, 
-    8, 4, 243, 247, 8, 4, 243, 253, 8, 4, 236, 89, 8, 4, 236, 88, 8, 4, 236, 
-    113, 8, 4, 236, 99, 8, 4, 236, 107, 8, 4, 236, 109, 8, 4, 236, 108, 8, 4, 
-    236, 203, 8, 4, 236, 192, 8, 4, 175, 8, 4, 236, 227, 8, 4, 235, 250, 8, 
-    4, 235, 252, 8, 4, 235, 251, 8, 4, 236, 31, 8, 4, 236, 27, 8, 4, 236, 57, 
-    8, 4, 236, 38, 8, 4, 236, 159, 8, 4, 236, 156, 8, 4, 236, 184, 8, 4, 236, 
-    162, 8, 4, 235, 240, 8, 4, 235, 238, 8, 4, 236, 7, 8, 4, 235, 249, 8, 4, 
-    235, 243, 8, 4, 235, 247, 8, 4, 244, 146, 8, 4, 244, 145, 8, 4, 244, 150, 
-    8, 4, 244, 147, 8, 4, 244, 149, 8, 4, 244, 148, 8, 4, 244, 157, 8, 4, 
-    244, 156, 8, 4, 244, 160, 8, 4, 244, 158, 8, 4, 244, 137, 8, 4, 244, 136, 
-    8, 4, 244, 139, 8, 4, 244, 138, 8, 4, 244, 142, 8, 4, 244, 141, 8, 4, 
-    244, 144, 8, 4, 244, 143, 8, 4, 244, 152, 8, 4, 244, 151, 8, 4, 244, 155, 
-    8, 4, 244, 153, 8, 4, 244, 132, 8, 4, 244, 131, 8, 4, 244, 140, 8, 4, 
-    244, 135, 8, 4, 244, 133, 8, 4, 244, 134, 8, 4, 233, 214, 8, 4, 233, 215, 
-    8, 4, 233, 227, 8, 4, 233, 226, 8, 4, 233, 229, 8, 4, 233, 228, 8, 4, 
-    233, 205, 8, 4, 233, 207, 8, 4, 233, 206, 8, 4, 233, 210, 8, 4, 233, 209, 
-    8, 4, 233, 212, 8, 4, 233, 211, 8, 4, 233, 216, 8, 4, 233, 218, 8, 4, 
-    233, 217, 8, 4, 233, 201, 8, 4, 233, 200, 8, 4, 233, 208, 8, 4, 233, 204, 
-    8, 4, 233, 202, 8, 4, 233, 203, 8, 4, 242, 133, 8, 4, 242, 132, 8, 4, 
-    242, 139, 8, 4, 242, 134, 8, 4, 242, 136, 8, 4, 242, 135, 8, 4, 242, 138, 
-    8, 4, 242, 137, 8, 4, 242, 144, 8, 4, 242, 143, 8, 4, 242, 146, 8, 4, 
-    242, 145, 8, 4, 242, 125, 8, 4, 242, 124, 8, 4, 242, 127, 8, 4, 242, 126, 
-    8, 4, 242, 129, 8, 4, 242, 128, 8, 4, 242, 131, 8, 4, 242, 130, 8, 4, 
-    242, 140, 8, 4, 242, 142, 8, 4, 242, 141, 8, 4, 232, 89, 8, 4, 232, 91, 
-    8, 4, 232, 90, 8, 4, 232, 108, 8, 4, 232, 107, 8, 4, 232, 115, 8, 4, 232, 
-    110, 8, 4, 232, 71, 8, 4, 232, 70, 8, 4, 232, 72, 8, 4, 232, 78, 8, 4, 
-    232, 75, 8, 4, 232, 84, 8, 4, 232, 79, 8, 4, 232, 102, 8, 4, 232, 106, 8, 
-    4, 232, 103, 8, 4, 243, 92, 8, 4, 243, 100, 8, 4, 243, 108, 8, 4, 243, 
-    173, 8, 4, 243, 167, 8, 4, 155, 8, 4, 243, 183, 8, 4, 242, 157, 8, 4, 
-    242, 156, 8, 4, 242, 159, 8, 4, 242, 158, 8, 4, 242, 186, 8, 4, 242, 181, 
-    8, 4, 243, 4, 8, 4, 242, 244, 8, 4, 243, 125, 8, 4, 243, 162, 8, 4, 243, 
-    135, 8, 4, 218, 243, 8, 4, 218, 231, 8, 4, 219, 7, 8, 4, 218, 251, 8, 4, 
-    218, 157, 8, 4, 218, 159, 8, 4, 218, 158, 8, 4, 218, 170, 8, 4, 218, 187, 
-    8, 4, 218, 175, 8, 4, 218, 214, 8, 4, 218, 227, 8, 4, 218, 218, 8, 4, 
-    217, 28, 8, 4, 217, 27, 8, 4, 217, 42, 8, 4, 217, 30, 8, 4, 217, 35, 8, 
-    4, 217, 37, 8, 4, 217, 36, 8, 4, 217, 100, 8, 4, 217, 97, 8, 4, 217, 114, 
-    8, 4, 217, 103, 8, 4, 217, 6, 8, 4, 217, 8, 8, 4, 217, 7, 8, 4, 217, 17, 
-    8, 4, 217, 16, 8, 4, 217, 21, 8, 4, 217, 18, 8, 4, 217, 82, 8, 4, 217, 
-    92, 8, 4, 217, 86, 8, 4, 217, 2, 8, 4, 217, 1, 8, 4, 217, 13, 8, 4, 217, 
-    5, 8, 4, 217, 3, 8, 4, 217, 4, 8, 4, 216, 249, 8, 4, 216, 248, 8, 4, 216, 
-    254, 8, 4, 216, 252, 8, 4, 216, 250, 8, 4, 216, 251, 8, 4, 250, 215, 8, 
-    4, 250, 212, 8, 4, 250, 235, 8, 4, 250, 223, 8, 4, 250, 232, 8, 4, 250, 
-    226, 8, 4, 250, 234, 8, 4, 250, 233, 8, 4, 251, 124, 8, 4, 251, 118, 8, 
-    4, 251, 169, 8, 4, 251, 143, 8, 4, 250, 84, 8, 4, 250, 86, 8, 4, 250, 85, 
-    8, 4, 250, 116, 8, 4, 250, 109, 8, 4, 250, 182, 8, 4, 250, 129, 8, 4, 
-    251, 71, 8, 4, 251, 99, 8, 4, 251, 75, 8, 4, 250, 68, 8, 4, 250, 67, 8, 
-    4, 250, 92, 8, 4, 250, 82, 8, 4, 250, 71, 8, 4, 250, 81, 8, 4, 250, 49, 
-    8, 4, 250, 48, 8, 4, 250, 58, 8, 4, 250, 55, 8, 4, 250, 50, 8, 4, 250, 
-    52, 8, 4, 216, 232, 8, 4, 216, 231, 8, 4, 216, 238, 8, 4, 216, 233, 8, 4, 
-    216, 235, 8, 4, 216, 234, 8, 4, 216, 237, 8, 4, 216, 236, 8, 4, 216, 244, 
-    8, 4, 216, 243, 8, 4, 216, 247, 8, 4, 216, 245, 8, 4, 216, 228, 8, 4, 
-    216, 230, 8, 4, 216, 229, 8, 4, 216, 239, 8, 4, 216, 242, 8, 4, 216, 240, 
-    8, 4, 216, 223, 8, 4, 216, 227, 8, 4, 216, 226, 8, 4, 216, 224, 8, 4, 
-    216, 225, 8, 4, 216, 218, 8, 4, 216, 217, 8, 4, 216, 222, 8, 4, 216, 221, 
-    8, 4, 216, 219, 8, 4, 216, 220, 8, 4, 231, 31, 8, 4, 231, 30, 8, 4, 231, 
-    36, 8, 4, 231, 32, 8, 4, 231, 33, 8, 4, 231, 35, 8, 4, 231, 34, 8, 4, 
-    231, 40, 8, 4, 231, 39, 8, 4, 231, 42, 8, 4, 231, 41, 8, 4, 231, 25, 8, 
-    4, 231, 26, 8, 4, 231, 28, 8, 4, 231, 29, 8, 4, 231, 37, 8, 4, 231, 38, 
-    8, 4, 231, 21, 8, 4, 231, 27, 8, 4, 231, 24, 8, 4, 231, 22, 8, 4, 231, 
-    23, 8, 4, 231, 16, 8, 4, 231, 15, 8, 4, 231, 20, 8, 4, 231, 19, 8, 4, 
-    231, 17, 8, 4, 231, 18, 8, 4, 224, 84, 8, 4, 182, 8, 4, 224, 140, 8, 4, 
-    224, 86, 8, 4, 224, 133, 8, 4, 224, 135, 8, 4, 224, 134, 8, 4, 226, 127, 
-    8, 4, 226, 120, 8, 4, 226, 177, 8, 4, 226, 133, 8, 4, 223, 63, 8, 4, 223, 
-    65, 8, 4, 223, 64, 8, 4, 224, 12, 8, 4, 224, 2, 8, 4, 224, 26, 8, 4, 224, 
-    13, 8, 4, 225, 36, 8, 4, 226, 94, 8, 4, 225, 56, 8, 4, 223, 44, 8, 4, 
-    223, 42, 8, 4, 223, 103, 8, 4, 223, 62, 8, 4, 223, 46, 8, 4, 223, 53, 8, 
-    4, 222, 215, 8, 4, 222, 214, 8, 4, 223, 21, 8, 4, 222, 220, 8, 4, 222, 
-    216, 8, 4, 222, 219, 8, 4, 223, 184, 8, 4, 223, 183, 8, 4, 223, 189, 8, 
-    4, 223, 185, 8, 4, 223, 186, 8, 4, 223, 188, 8, 4, 223, 187, 8, 4, 223, 
-    196, 8, 4, 223, 195, 8, 4, 223, 218, 8, 4, 223, 197, 8, 4, 223, 180, 8, 
-    4, 223, 179, 8, 4, 223, 182, 8, 4, 223, 181, 8, 4, 223, 191, 8, 4, 223, 
-    194, 8, 4, 223, 192, 8, 4, 223, 176, 8, 4, 223, 175, 8, 4, 223, 178, 8, 
-    4, 223, 177, 8, 4, 223, 170, 8, 4, 223, 169, 8, 4, 223, 174, 8, 4, 223, 
-    173, 8, 4, 223, 171, 8, 4, 223, 172, 8, 4, 217, 75, 8, 4, 217, 74, 8, 4, 
-    217, 80, 8, 4, 217, 77, 8, 4, 217, 57, 8, 4, 217, 59, 8, 4, 217, 58, 8, 
-    4, 217, 62, 8, 4, 217, 61, 8, 4, 217, 65, 8, 4, 217, 63, 8, 4, 217, 69, 
-    8, 4, 217, 68, 8, 4, 217, 72, 8, 4, 217, 70, 8, 4, 217, 53, 8, 4, 217, 
-    52, 8, 4, 217, 60, 8, 4, 217, 56, 8, 4, 217, 54, 8, 4, 217, 55, 8, 4, 
-    217, 45, 8, 4, 217, 44, 8, 4, 217, 49, 8, 4, 217, 48, 8, 4, 217, 46, 8, 
-    4, 217, 47, 8, 4, 251, 51, 8, 4, 251, 48, 8, 4, 251, 69, 8, 4, 251, 57, 
-    8, 4, 250, 249, 8, 4, 250, 248, 8, 4, 250, 251, 8, 4, 250, 250, 8, 4, 
-    251, 5, 8, 4, 251, 4, 8, 4, 251, 11, 8, 4, 251, 7, 8, 4, 251, 36, 8, 4, 
-    251, 34, 8, 4, 251, 46, 8, 4, 251, 38, 8, 4, 250, 243, 8, 4, 250, 253, 8, 
-    4, 250, 247, 8, 4, 250, 244, 8, 4, 250, 246, 8, 4, 250, 237, 8, 4, 250, 
-    236, 8, 4, 250, 241, 8, 4, 250, 240, 8, 4, 250, 238, 8, 4, 250, 239, 8, 
-    4, 227, 51, 8, 4, 227, 52, 8, 4, 227, 38, 8, 4, 227, 39, 8, 4, 227, 42, 
-    8, 4, 227, 41, 8, 4, 227, 44, 8, 4, 227, 43, 8, 4, 227, 46, 8, 4, 227, 
-    45, 8, 4, 227, 50, 8, 4, 227, 47, 8, 4, 227, 34, 8, 4, 227, 33, 8, 4, 
-    227, 40, 8, 4, 227, 37, 8, 4, 227, 35, 8, 4, 227, 36, 8, 4, 227, 28, 8, 
-    4, 227, 27, 8, 4, 227, 32, 8, 4, 227, 31, 8, 4, 227, 29, 8, 4, 227, 30, 
-    8, 4, 231, 169, 8, 4, 231, 168, 8, 4, 231, 171, 8, 4, 231, 170, 8, 4, 
-    231, 161, 8, 4, 231, 163, 8, 4, 231, 162, 8, 4, 231, 165, 8, 4, 231, 164, 
-    8, 4, 231, 167, 8, 4, 231, 166, 8, 4, 231, 156, 8, 4, 231, 155, 8, 4, 
-    231, 160, 8, 4, 231, 159, 8, 4, 231, 157, 8, 4, 231, 158, 8, 4, 231, 150, 
-    8, 4, 231, 149, 8, 4, 231, 154, 8, 4, 231, 153, 8, 4, 231, 151, 8, 4, 
-    231, 152, 8, 4, 224, 253, 8, 4, 224, 250, 8, 4, 225, 25, 8, 4, 225, 7, 8, 
-    4, 224, 163, 8, 4, 224, 165, 8, 4, 224, 164, 8, 4, 224, 178, 8, 4, 224, 
-    176, 8, 4, 224, 200, 8, 4, 224, 193, 8, 4, 224, 226, 8, 4, 224, 223, 8, 
-    4, 224, 246, 8, 4, 224, 233, 8, 4, 224, 159, 8, 4, 224, 158, 8, 4, 224, 
-    170, 8, 4, 224, 162, 8, 4, 224, 160, 8, 4, 224, 161, 8, 4, 224, 143, 8, 
-    4, 224, 142, 8, 4, 224, 149, 8, 4, 224, 146, 8, 4, 224, 144, 8, 4, 224, 
-    145, 8, 4, 227, 228, 8, 4, 227, 223, 8, 4, 203, 8, 4, 227, 233, 8, 4, 
-    227, 6, 8, 4, 227, 8, 8, 4, 227, 7, 8, 4, 227, 60, 8, 4, 227, 54, 8, 4, 
-    227, 75, 8, 4, 227, 63, 8, 4, 227, 155, 8, 4, 227, 216, 8, 4, 227, 185, 
-    8, 4, 226, 255, 8, 4, 226, 253, 8, 4, 227, 22, 8, 4, 227, 5, 8, 4, 227, 
-    1, 8, 4, 227, 2, 8, 4, 226, 238, 8, 4, 226, 237, 8, 4, 226, 243, 8, 4, 
-    226, 241, 8, 4, 226, 239, 8, 4, 226, 240, 8, 4, 237, 89, 8, 4, 237, 88, 
-    8, 4, 237, 98, 8, 4, 237, 90, 8, 4, 237, 94, 8, 4, 237, 93, 8, 4, 237, 
-    96, 8, 4, 237, 95, 8, 4, 237, 34, 8, 4, 237, 33, 8, 4, 237, 36, 8, 4, 
-    237, 35, 8, 4, 237, 47, 8, 4, 237, 46, 8, 4, 237, 59, 8, 4, 237, 49, 8, 
-    4, 237, 28, 8, 4, 237, 26, 8, 4, 237, 43, 8, 4, 237, 32, 8, 4, 237, 29, 
-    8, 4, 237, 30, 8, 4, 237, 20, 8, 4, 237, 19, 8, 4, 237, 24, 8, 4, 237, 
-    23, 8, 4, 237, 21, 8, 4, 237, 22, 8, 4, 228, 114, 8, 4, 228, 112, 8, 4, 
-    228, 121, 8, 4, 228, 115, 8, 4, 228, 118, 8, 4, 228, 117, 8, 4, 228, 120, 
-    8, 4, 228, 119, 8, 4, 228, 70, 8, 4, 228, 67, 8, 4, 228, 72, 8, 4, 228, 
-    71, 8, 4, 228, 101, 8, 4, 228, 100, 8, 4, 228, 110, 8, 4, 228, 104, 8, 4, 
-    228, 62, 8, 4, 228, 58, 8, 4, 228, 98, 8, 4, 228, 66, 8, 4, 228, 64, 8, 
-    4, 228, 65, 8, 4, 228, 42, 8, 4, 228, 40, 8, 4, 228, 52, 8, 4, 228, 45, 
-    8, 4, 228, 43, 8, 4, 228, 44, 8, 4, 237, 78, 8, 4, 237, 77, 8, 4, 237, 
-    84, 8, 4, 237, 79, 8, 4, 237, 81, 8, 4, 237, 80, 8, 4, 237, 83, 8, 4, 
-    237, 82, 8, 4, 237, 69, 8, 4, 237, 71, 8, 4, 237, 70, 8, 4, 237, 74, 8, 
-    4, 237, 73, 8, 4, 237, 76, 8, 4, 237, 75, 8, 4, 237, 65, 8, 4, 237, 64, 
-    8, 4, 237, 72, 8, 4, 237, 68, 8, 4, 237, 66, 8, 4, 237, 67, 8, 4, 237, 
-    61, 8, 4, 237, 60, 8, 4, 237, 63, 8, 4, 237, 62, 8, 4, 232, 7, 8, 4, 232, 
-    6, 8, 4, 232, 13, 8, 4, 232, 8, 8, 4, 232, 10, 8, 4, 232, 9, 8, 4, 232, 
-    12, 8, 4, 232, 11, 8, 4, 231, 253, 8, 4, 231, 254, 8, 4, 232, 2, 8, 4, 
-    232, 1, 8, 4, 232, 5, 8, 4, 232, 3, 8, 4, 231, 249, 8, 4, 232, 0, 8, 4, 
-    231, 252, 8, 4, 231, 250, 8, 4, 231, 251, 8, 4, 231, 244, 8, 4, 231, 243, 
-    8, 4, 231, 248, 8, 4, 231, 247, 8, 4, 231, 245, 8, 4, 231, 246, 8, 4, 
-    231, 59, 8, 4, 231, 58, 8, 4, 231, 67, 8, 4, 231, 61, 8, 4, 231, 64, 8, 
-    4, 231, 63, 8, 4, 231, 66, 8, 4, 231, 65, 8, 4, 231, 47, 8, 4, 231, 49, 
-    8, 4, 231, 48, 8, 4, 231, 52, 8, 4, 231, 51, 8, 4, 231, 56, 8, 4, 231, 
-    53, 8, 4, 231, 45, 8, 4, 231, 44, 8, 4, 231, 50, 8, 4, 231, 46, 8, 4, 
-    218, 123, 8, 4, 218, 122, 8, 4, 218, 130, 8, 4, 218, 125, 8, 4, 218, 127, 
-    8, 4, 218, 126, 8, 4, 218, 129, 8, 4, 218, 128, 8, 4, 218, 112, 8, 4, 
-    218, 113, 8, 4, 218, 117, 8, 4, 218, 116, 8, 4, 218, 121, 8, 4, 218, 119, 
-    8, 4, 218, 94, 8, 4, 218, 92, 8, 4, 218, 104, 8, 4, 218, 97, 8, 4, 218, 
-    95, 8, 4, 218, 96, 8, 4, 217, 237, 8, 4, 217, 235, 8, 4, 217, 250, 8, 4, 
-    217, 238, 8, 4, 217, 245, 8, 4, 217, 244, 8, 4, 217, 247, 8, 4, 217, 246, 
-    8, 4, 217, 185, 8, 4, 217, 184, 8, 4, 217, 187, 8, 4, 217, 186, 8, 4, 
-    217, 212, 8, 4, 217, 209, 8, 4, 217, 231, 8, 4, 217, 215, 8, 4, 217, 177, 
-    8, 4, 217, 175, 8, 4, 217, 200, 8, 4, 217, 183, 8, 4, 217, 180, 8, 4, 
-    217, 181, 8, 4, 217, 160, 8, 4, 217, 159, 8, 4, 217, 166, 8, 4, 217, 163, 
-    8, 4, 217, 161, 8, 4, 217, 162, 8, 32, 228, 101, 8, 32, 235, 67, 8, 32, 
-    236, 89, 8, 32, 231, 61, 8, 32, 250, 55, 8, 32, 223, 189, 8, 32, 244, 
-    143, 8, 32, 244, 174, 8, 32, 233, 196, 8, 32, 242, 133, 8, 32, 234, 193, 
-    8, 32, 252, 152, 8, 32, 233, 115, 8, 32, 217, 231, 8, 32, 228, 185, 8, 
-    32, 242, 127, 8, 32, 222, 110, 8, 32, 245, 0, 8, 32, 217, 5, 8, 32, 250, 
-    49, 8, 32, 249, 97, 8, 32, 251, 228, 8, 32, 244, 139, 8, 32, 231, 53, 8, 
-    32, 221, 0, 8, 32, 230, 120, 8, 32, 237, 65, 8, 32, 217, 17, 8, 32, 228, 
-    167, 8, 32, 243, 44, 8, 32, 217, 237, 8, 32, 219, 53, 8, 32, 224, 149, 8, 
-    32, 219, 156, 8, 32, 217, 114, 8, 32, 237, 59, 8, 32, 231, 24, 8, 32, 
-    237, 63, 8, 32, 244, 51, 8, 32, 237, 83, 8, 32, 218, 187, 8, 32, 247, 
-    111, 8, 32, 224, 161, 8, 32, 235, 63, 8, 32, 250, 58, 8, 32, 250, 85, 8, 
-    32, 250, 223, 8, 32, 242, 130, 8, 32, 224, 253, 8, 32, 217, 4, 8, 32, 
-    224, 193, 8, 32, 251, 46, 8, 32, 216, 235, 8, 32, 232, 192, 8, 32, 236, 
-    184, 235, 28, 1, 252, 237, 235, 28, 1, 187, 235, 28, 1, 229, 141, 235, 
-    28, 1, 249, 207, 235, 28, 1, 222, 155, 235, 28, 1, 222, 35, 235, 28, 1, 
-    245, 0, 235, 28, 1, 175, 235, 28, 1, 236, 149, 235, 28, 1, 237, 123, 235, 
-    28, 1, 251, 169, 235, 28, 1, 251, 69, 235, 28, 1, 247, 74, 235, 28, 1, 
-    221, 55, 235, 28, 1, 221, 47, 235, 28, 1, 196, 235, 28, 1, 208, 235, 28, 
-    1, 235, 188, 235, 28, 1, 226, 177, 235, 28, 1, 217, 80, 235, 28, 1, 217, 
-    114, 235, 28, 1, 232, 115, 235, 28, 1, 155, 235, 28, 1, 218, 138, 235, 
-    28, 1, 243, 121, 235, 28, 1, 246, 8, 235, 28, 1, 219, 7, 235, 28, 1, 225, 
-    25, 235, 28, 1, 184, 235, 28, 1, 244, 125, 235, 28, 1, 60, 235, 28, 1, 
-    254, 234, 235, 28, 1, 73, 235, 28, 1, 246, 115, 235, 28, 1, 72, 235, 28, 
-    1, 74, 235, 28, 1, 68, 235, 28, 1, 220, 110, 235, 28, 1, 220, 105, 235, 
-    28, 1, 230, 167, 235, 28, 1, 145, 233, 40, 221, 205, 235, 28, 1, 145, 
-    232, 238, 229, 37, 235, 28, 1, 145, 233, 40, 250, 57, 235, 28, 1, 145, 
-    233, 40, 252, 41, 235, 28, 1, 145, 233, 40, 208, 235, 28, 1, 145, 233, 
-    40, 237, 104, 235, 28, 228, 197, 250, 168, 235, 28, 228, 197, 245, 90, 
-    223, 136, 38, 4, 246, 250, 38, 4, 246, 247, 38, 4, 243, 148, 38, 4, 218, 
-    224, 38, 4, 218, 223, 38, 4, 229, 191, 38, 4, 252, 91, 38, 4, 252, 137, 
-    38, 4, 234, 34, 38, 4, 236, 23, 38, 4, 233, 223, 38, 4, 244, 201, 38, 4, 
-    245, 226, 38, 4, 219, 160, 38, 4, 222, 80, 38, 4, 222, 21, 38, 4, 249, 
-    28, 38, 4, 249, 25, 38, 4, 235, 118, 38, 4, 227, 200, 38, 4, 249, 82, 38, 
-    4, 232, 163, 38, 4, 226, 84, 38, 4, 224, 244, 38, 4, 217, 90, 38, 4, 217, 
-    71, 38, 4, 251, 91, 38, 4, 237, 113, 38, 4, 232, 14, 38, 4, 218, 22, 38, 
-    4, 236, 183, 38, 4, 232, 98, 38, 4, 244, 184, 38, 4, 234, 16, 38, 4, 232, 
-    139, 38, 4, 231, 72, 38, 4, 72, 38, 4, 237, 223, 38, 4, 243, 112, 38, 4, 
-    243, 96, 38, 4, 218, 204, 38, 4, 218, 195, 38, 4, 229, 108, 38, 4, 252, 
-    89, 38, 4, 252, 84, 38, 4, 234, 32, 38, 4, 236, 21, 38, 4, 233, 222, 38, 
-    4, 244, 199, 38, 4, 245, 203, 38, 4, 219, 94, 38, 4, 221, 205, 38, 4, 
-    222, 2, 38, 4, 249, 20, 38, 4, 249, 24, 38, 4, 235, 67, 38, 4, 227, 147, 
-    38, 4, 249, 15, 38, 4, 232, 160, 38, 4, 224, 140, 38, 4, 224, 221, 38, 4, 
-    217, 42, 38, 4, 217, 67, 38, 4, 250, 235, 38, 4, 237, 98, 38, 4, 232, 13, 
-    38, 4, 217, 250, 38, 4, 236, 113, 38, 4, 232, 96, 38, 4, 244, 103, 38, 4, 
-    233, 196, 38, 4, 232, 62, 38, 4, 231, 67, 38, 4, 60, 38, 4, 254, 131, 38, 
-    4, 232, 111, 38, 4, 155, 38, 4, 243, 191, 38, 4, 219, 7, 38, 4, 218, 253, 
-    38, 4, 187, 38, 4, 252, 94, 38, 4, 252, 237, 38, 4, 234, 37, 38, 4, 236, 
-    26, 38, 4, 236, 25, 38, 4, 233, 225, 38, 4, 244, 204, 38, 4, 246, 8, 38, 
-    4, 219, 189, 38, 4, 222, 155, 38, 4, 222, 35, 38, 4, 249, 36, 38, 4, 249, 
-    27, 38, 4, 235, 188, 38, 4, 203, 38, 4, 249, 207, 38, 4, 232, 169, 38, 4, 
-    226, 177, 38, 4, 225, 25, 38, 4, 217, 114, 38, 4, 217, 80, 38, 4, 251, 
-    169, 38, 4, 237, 123, 38, 4, 232, 18, 38, 4, 184, 38, 4, 175, 38, 4, 236, 
-    233, 38, 4, 232, 100, 38, 4, 245, 0, 38, 4, 196, 38, 4, 208, 38, 4, 231, 
-    77, 38, 4, 230, 127, 38, 4, 230, 124, 38, 4, 242, 248, 38, 4, 218, 180, 
-    38, 4, 218, 176, 38, 4, 229, 21, 38, 4, 252, 87, 38, 4, 252, 34, 38, 4, 
-    234, 30, 38, 4, 236, 19, 38, 4, 233, 220, 38, 4, 244, 196, 38, 4, 245, 
-    134, 38, 4, 219, 64, 38, 4, 221, 122, 38, 4, 221, 236, 38, 4, 249, 18, 
-    38, 4, 249, 22, 38, 4, 234, 248, 38, 4, 227, 67, 38, 4, 248, 150, 38, 4, 
-    232, 152, 38, 4, 224, 14, 38, 4, 224, 195, 38, 4, 217, 19, 38, 4, 217, 
-    64, 38, 4, 250, 130, 38, 4, 237, 50, 38, 4, 232, 4, 38, 4, 217, 216, 38, 
-    4, 236, 41, 38, 4, 232, 94, 38, 4, 244, 60, 38, 4, 233, 119, 38, 4, 231, 
-    195, 38, 4, 231, 54, 38, 4, 68, 38, 4, 220, 87, 38, 4, 242, 173, 38, 4, 
-    242, 163, 38, 4, 218, 165, 38, 4, 218, 161, 38, 4, 228, 202, 38, 4, 252, 
-    86, 38, 4, 251, 248, 38, 4, 234, 29, 38, 4, 236, 18, 38, 4, 233, 219, 38, 
-    4, 244, 195, 38, 4, 245, 92, 38, 4, 219, 56, 38, 4, 221, 0, 38, 4, 221, 
-    223, 38, 4, 249, 16, 38, 4, 249, 21, 38, 4, 234, 231, 38, 4, 227, 22, 38, 
-    4, 247, 111, 38, 4, 232, 148, 38, 4, 223, 103, 38, 4, 224, 170, 38, 4, 
-    217, 13, 38, 4, 217, 60, 38, 4, 250, 92, 38, 4, 237, 43, 38, 4, 232, 0, 
-    38, 4, 217, 200, 38, 4, 236, 7, 38, 4, 232, 93, 38, 4, 244, 17, 38, 4, 
-    233, 99, 38, 4, 231, 144, 38, 4, 231, 50, 38, 4, 74, 38, 4, 230, 138, 38, 
-    4, 232, 81, 38, 4, 243, 4, 38, 4, 242, 249, 38, 4, 218, 187, 38, 4, 218, 
-    181, 38, 4, 229, 37, 38, 4, 252, 88, 38, 4, 252, 41, 38, 4, 234, 31, 38, 
-    4, 236, 20, 38, 4, 233, 221, 38, 4, 244, 198, 38, 4, 244, 197, 38, 4, 
-    245, 139, 38, 4, 219, 72, 38, 4, 101, 38, 4, 221, 239, 38, 4, 249, 19, 
-    38, 4, 249, 23, 38, 4, 235, 12, 38, 4, 227, 75, 38, 4, 248, 167, 38, 4, 
-    232, 154, 38, 4, 224, 26, 38, 4, 224, 200, 38, 4, 217, 21, 38, 4, 217, 
-    65, 38, 4, 250, 182, 38, 4, 237, 59, 38, 4, 232, 5, 38, 4, 217, 231, 38, 
-    4, 236, 57, 38, 4, 232, 95, 38, 4, 244, 68, 38, 4, 233, 136, 38, 4, 231, 
-    204, 38, 4, 231, 56, 38, 4, 73, 38, 4, 246, 197, 38, 4, 232, 104, 38, 4, 
-    243, 162, 38, 4, 243, 138, 38, 4, 218, 227, 38, 4, 218, 220, 38, 4, 229, 
-    198, 38, 4, 252, 92, 38, 4, 252, 144, 38, 4, 234, 35, 38, 4, 236, 24, 38, 
-    4, 236, 22, 38, 4, 233, 224, 38, 4, 244, 202, 38, 4, 244, 200, 38, 4, 
-    245, 231, 38, 4, 219, 165, 38, 4, 222, 87, 38, 4, 222, 22, 38, 4, 249, 
-    29, 38, 4, 249, 26, 38, 4, 235, 122, 38, 4, 227, 216, 38, 4, 249, 92, 38, 
-    4, 232, 164, 38, 4, 226, 94, 38, 4, 224, 246, 38, 4, 217, 92, 38, 4, 217, 
-    72, 38, 4, 251, 99, 38, 4, 237, 114, 38, 4, 232, 15, 38, 4, 218, 25, 38, 
-    4, 236, 184, 38, 4, 232, 99, 38, 4, 232, 97, 38, 4, 244, 191, 38, 4, 244, 
-    181, 38, 4, 234, 25, 38, 4, 232, 141, 38, 4, 231, 73, 38, 4, 232, 117, 
-    38, 4, 235, 93, 38, 250, 168, 38, 245, 90, 223, 136, 38, 228, 82, 78, 38, 
-    4, 232, 153, 246, 8, 38, 4, 232, 153, 175, 38, 4, 232, 153, 224, 14, 38, 
-    16, 245, 223, 38, 16, 236, 182, 38, 16, 221, 174, 38, 16, 232, 38, 38, 
-    16, 252, 205, 38, 16, 246, 7, 38, 16, 222, 152, 38, 16, 249, 165, 38, 16, 
-    248, 149, 38, 16, 235, 253, 38, 16, 221, 125, 38, 16, 248, 166, 38, 16, 
-    237, 51, 38, 20, 217, 84, 38, 20, 107, 38, 20, 103, 38, 20, 160, 38, 20, 
-    154, 38, 20, 174, 38, 20, 182, 38, 20, 191, 38, 20, 185, 38, 20, 190, 38, 
-    4, 232, 153, 196, 38, 4, 232, 153, 248, 167, 31, 6, 1, 217, 88, 31, 3, 1, 
-    217, 88, 31, 6, 1, 247, 71, 31, 3, 1, 247, 71, 31, 6, 1, 210, 247, 73, 
-    31, 3, 1, 210, 247, 73, 31, 6, 1, 237, 162, 31, 3, 1, 237, 162, 31, 6, 1, 
-    248, 181, 31, 3, 1, 248, 181, 31, 6, 1, 233, 123, 220, 102, 31, 3, 1, 
-    233, 123, 220, 102, 31, 6, 1, 252, 2, 230, 143, 31, 3, 1, 252, 2, 230, 
-    143, 31, 6, 1, 232, 123, 218, 11, 31, 3, 1, 232, 123, 218, 11, 31, 6, 1, 
-    218, 8, 2, 252, 234, 218, 11, 31, 3, 1, 218, 8, 2, 252, 234, 218, 11, 31, 
-    6, 1, 237, 160, 218, 36, 31, 3, 1, 237, 160, 218, 36, 31, 6, 1, 210, 217, 
-    200, 31, 3, 1, 210, 217, 200, 31, 6, 1, 237, 160, 60, 31, 3, 1, 237, 160, 
-    60, 31, 6, 1, 250, 197, 235, 25, 217, 178, 31, 3, 1, 250, 197, 235, 25, 
-    217, 178, 31, 6, 1, 252, 46, 217, 178, 31, 3, 1, 252, 46, 217, 178, 31, 
-    6, 1, 237, 160, 250, 197, 235, 25, 217, 178, 31, 3, 1, 237, 160, 250, 
-    197, 235, 25, 217, 178, 31, 6, 1, 217, 233, 31, 3, 1, 217, 233, 31, 6, 1, 
-    224, 21, 249, 92, 31, 3, 1, 224, 21, 249, 92, 31, 6, 1, 224, 21, 246, 
-    217, 31, 3, 1, 224, 21, 246, 217, 31, 6, 1, 224, 21, 246, 205, 31, 3, 1, 
-    224, 21, 246, 205, 31, 6, 1, 233, 127, 74, 31, 3, 1, 233, 127, 74, 31, 6, 
-    1, 252, 70, 74, 31, 3, 1, 252, 70, 74, 31, 6, 1, 51, 233, 127, 74, 31, 3, 
-    1, 51, 233, 127, 74, 31, 1, 233, 86, 74, 36, 31, 219, 42, 36, 31, 222, 
-    66, 233, 162, 55, 36, 31, 242, 162, 233, 162, 55, 36, 31, 221, 232, 233, 
-    162, 55, 224, 53, 253, 251, 36, 31, 236, 194, 36, 31, 229, 203, 31, 236, 
-    194, 31, 229, 203, 31, 6, 1, 247, 82, 31, 3, 1, 247, 82, 31, 6, 1, 247, 
-    64, 31, 3, 1, 247, 64, 31, 6, 1, 217, 50, 31, 3, 1, 217, 50, 31, 6, 1, 
-    251, 108, 31, 3, 1, 251, 108, 31, 6, 1, 247, 63, 31, 3, 1, 247, 63, 31, 
-    6, 1, 222, 88, 2, 233, 193, 96, 31, 3, 1, 222, 88, 2, 233, 193, 96, 31, 
-    6, 1, 220, 223, 31, 3, 1, 220, 223, 31, 6, 1, 221, 33, 31, 3, 1, 221, 33, 
-    31, 6, 1, 221, 37, 31, 3, 1, 221, 37, 31, 6, 1, 222, 93, 31, 3, 1, 222, 
-    93, 31, 6, 1, 242, 151, 31, 3, 1, 242, 151, 31, 6, 1, 224, 155, 31, 3, 1, 
-    224, 155, 139, 1, 60, 139, 1, 175, 139, 1, 68, 139, 1, 236, 7, 139, 1, 
-    246, 250, 139, 1, 227, 200, 139, 1, 222, 142, 139, 1, 74, 139, 1, 231, 
-    67, 139, 1, 72, 139, 1, 235, 188, 139, 1, 187, 139, 1, 227, 98, 139, 1, 
-    227, 143, 139, 1, 235, 117, 139, 1, 234, 15, 139, 1, 222, 152, 139, 1, 
-    232, 168, 139, 1, 232, 17, 139, 1, 189, 139, 1, 223, 43, 139, 1, 233, 99, 
-    139, 1, 224, 216, 139, 1, 224, 140, 139, 1, 224, 225, 139, 1, 225, 44, 
-    139, 1, 235, 208, 139, 1, 236, 159, 139, 1, 231, 116, 139, 1, 231, 144, 
-    139, 1, 231, 255, 139, 1, 217, 214, 139, 1, 224, 170, 139, 1, 217, 182, 
-    139, 1, 184, 139, 1, 231, 147, 139, 1, 236, 157, 139, 1, 229, 145, 139, 
-    1, 232, 14, 139, 1, 231, 146, 139, 1, 228, 199, 139, 1, 218, 164, 139, 1, 
-    229, 191, 139, 1, 245, 226, 139, 1, 227, 22, 139, 1, 234, 231, 139, 1, 
-    233, 196, 139, 1, 232, 62, 139, 1, 227, 161, 139, 1, 227, 249, 139, 1, 
-    236, 168, 139, 1, 232, 86, 139, 1, 232, 100, 139, 1, 232, 115, 139, 1, 
-    224, 200, 139, 1, 228, 200, 139, 1, 245, 92, 139, 1, 245, 136, 139, 1, 
-    219, 7, 139, 1, 208, 139, 1, 235, 67, 139, 1, 229, 108, 139, 1, 234, 244, 
-    139, 1, 236, 57, 139, 1, 234, 33, 139, 1, 227, 187, 139, 1, 233, 251, 
-    139, 1, 196, 139, 1, 221, 205, 139, 1, 236, 113, 139, 1, 233, 136, 139, 
-    1, 234, 36, 139, 1, 222, 50, 139, 1, 236, 26, 139, 1, 222, 65, 139, 1, 
-    231, 145, 139, 1, 226, 147, 139, 1, 246, 4, 139, 1, 236, 28, 139, 1, 236, 
-    54, 139, 36, 164, 236, 36, 139, 36, 164, 220, 250, 139, 232, 16, 139, 
-    245, 90, 223, 136, 139, 250, 175, 139, 250, 168, 139, 225, 67, 139, 228, 
-    82, 78, 58, 1, 251, 21, 145, 217, 241, 229, 72, 58, 1, 251, 21, 145, 218, 
-    46, 229, 72, 58, 1, 251, 21, 145, 217, 241, 225, 8, 58, 1, 251, 21, 145, 
-    218, 46, 225, 8, 58, 1, 251, 21, 145, 217, 241, 228, 98, 58, 1, 251, 21, 
-    145, 218, 46, 228, 98, 58, 1, 251, 21, 145, 217, 241, 227, 22, 58, 1, 
-    251, 21, 145, 218, 46, 227, 22, 58, 1, 246, 85, 247, 143, 145, 135, 58, 
-    1, 116, 247, 143, 145, 135, 58, 1, 233, 194, 247, 143, 145, 135, 58, 1, 
-    109, 247, 143, 145, 135, 58, 1, 246, 84, 247, 143, 145, 135, 58, 1, 246, 
-    85, 247, 143, 235, 109, 145, 135, 58, 1, 116, 247, 143, 235, 109, 145, 
-    135, 58, 1, 233, 194, 247, 143, 235, 109, 145, 135, 58, 1, 109, 247, 143, 
-    235, 109, 145, 135, 58, 1, 246, 84, 247, 143, 235, 109, 145, 135, 58, 1, 
-    246, 85, 235, 109, 145, 135, 58, 1, 116, 235, 109, 145, 135, 58, 1, 233, 
-    194, 235, 109, 145, 135, 58, 1, 109, 235, 109, 145, 135, 58, 1, 246, 84, 
-    235, 109, 145, 135, 58, 1, 61, 69, 135, 58, 1, 61, 224, 55, 58, 1, 61, 
-    186, 135, 58, 1, 234, 237, 45, 250, 124, 254, 119, 58, 1, 227, 241, 108, 
-    65, 58, 1, 227, 241, 113, 65, 58, 1, 227, 241, 246, 95, 78, 58, 1, 227, 
-    241, 237, 170, 246, 95, 78, 58, 1, 109, 237, 170, 246, 95, 78, 58, 1, 
-    223, 125, 25, 116, 221, 132, 58, 1, 223, 125, 25, 109, 221, 132, 7, 6, 1, 
-    246, 241, 254, 168, 7, 3, 1, 246, 241, 254, 168, 7, 6, 1, 246, 241, 254, 
-    191, 7, 3, 1, 246, 241, 254, 191, 7, 6, 1, 243, 136, 7, 3, 1, 243, 136, 
-    7, 6, 1, 220, 189, 7, 3, 1, 220, 189, 7, 6, 1, 221, 94, 7, 3, 1, 221, 94, 
-    7, 6, 1, 250, 90, 7, 3, 1, 250, 90, 7, 6, 1, 250, 91, 2, 250, 168, 7, 3, 
-    1, 250, 91, 2, 250, 168, 7, 1, 3, 6, 246, 74, 7, 1, 3, 6, 198, 7, 6, 1, 
-    255, 58, 7, 3, 1, 255, 58, 7, 6, 1, 254, 93, 7, 3, 1, 254, 93, 7, 6, 1, 
-    253, 232, 7, 3, 1, 253, 232, 7, 6, 1, 253, 220, 7, 3, 1, 253, 220, 7, 6, 
-    1, 253, 221, 2, 186, 135, 7, 3, 1, 253, 221, 2, 186, 135, 7, 6, 1, 253, 
-    212, 7, 3, 1, 253, 212, 7, 6, 1, 210, 251, 203, 2, 248, 145, 7, 3, 1, 
-    210, 251, 203, 2, 248, 145, 7, 6, 1, 237, 18, 2, 92, 7, 3, 1, 237, 18, 2, 
-    92, 7, 6, 1, 237, 18, 2, 249, 11, 92, 7, 3, 1, 237, 18, 2, 249, 11, 92, 
-    7, 6, 1, 237, 18, 2, 214, 25, 249, 11, 92, 7, 3, 1, 237, 18, 2, 214, 25, 
-    249, 11, 92, 7, 6, 1, 252, 1, 153, 7, 3, 1, 252, 1, 153, 7, 6, 1, 235, 
-    202, 2, 116, 92, 7, 3, 1, 235, 202, 2, 116, 92, 7, 6, 1, 142, 2, 171, 
-    214, 230, 74, 7, 3, 1, 142, 2, 171, 214, 230, 74, 7, 6, 1, 142, 2, 234, 
-    247, 7, 3, 1, 142, 2, 234, 247, 7, 6, 1, 230, 127, 7, 3, 1, 230, 127, 7, 
-    6, 1, 230, 60, 2, 214, 221, 225, 249, 48, 7, 3, 1, 230, 60, 2, 214, 221, 
-    225, 249, 48, 7, 6, 1, 230, 60, 2, 245, 146, 7, 3, 1, 230, 60, 2, 245, 
-    146, 7, 6, 1, 230, 60, 2, 223, 222, 222, 135, 7, 3, 1, 230, 60, 2, 223, 
-    222, 222, 135, 7, 6, 1, 228, 164, 2, 214, 221, 225, 249, 48, 7, 3, 1, 
-    228, 164, 2, 214, 221, 225, 249, 48, 7, 6, 1, 228, 164, 2, 249, 11, 92, 
-    7, 3, 1, 228, 164, 2, 249, 11, 92, 7, 6, 1, 228, 39, 227, 58, 7, 3, 1, 
-    228, 39, 227, 58, 7, 6, 1, 227, 14, 227, 58, 7, 3, 1, 227, 14, 227, 58, 
-    7, 6, 1, 220, 11, 2, 249, 11, 92, 7, 3, 1, 220, 11, 2, 249, 11, 92, 7, 6, 
-    1, 219, 48, 7, 3, 1, 219, 48, 7, 6, 1, 219, 75, 217, 157, 7, 3, 1, 219, 
-    75, 217, 157, 7, 6, 1, 221, 235, 2, 92, 7, 3, 1, 221, 235, 2, 92, 7, 6, 
-    1, 221, 235, 2, 214, 221, 225, 249, 48, 7, 3, 1, 221, 235, 2, 214, 221, 
-    225, 249, 48, 7, 6, 1, 219, 157, 7, 3, 1, 219, 157, 7, 6, 1, 246, 123, 7, 
-    3, 1, 246, 123, 7, 6, 1, 237, 151, 7, 3, 1, 237, 151, 7, 6, 1, 250, 158, 
-    7, 3, 1, 250, 158, 58, 1, 220, 34, 7, 3, 1, 247, 102, 7, 3, 1, 234, 219, 
-    7, 3, 1, 233, 80, 7, 3, 1, 231, 109, 7, 3, 1, 227, 13, 7, 1, 3, 6, 227, 
-    13, 7, 3, 1, 220, 249, 7, 3, 1, 220, 94, 7, 6, 1, 237, 188, 250, 46, 7, 
-    3, 1, 237, 188, 250, 46, 7, 6, 1, 237, 188, 246, 74, 7, 3, 1, 237, 188, 
-    246, 74, 7, 6, 1, 237, 188, 245, 67, 7, 6, 1, 215, 237, 188, 245, 67, 7, 
-    3, 1, 215, 237, 188, 245, 67, 7, 6, 1, 215, 153, 7, 3, 1, 215, 153, 7, 6, 
-    1, 237, 188, 152, 7, 3, 1, 237, 188, 152, 7, 6, 1, 237, 188, 198, 7, 3, 
-    1, 237, 188, 198, 7, 6, 1, 237, 188, 222, 201, 7, 3, 1, 237, 188, 222, 
-    201, 58, 1, 109, 250, 217, 255, 0, 58, 1, 250, 175, 58, 1, 224, 192, 246, 
-    154, 55, 7, 6, 1, 226, 150, 7, 3, 1, 226, 150, 7, 246, 158, 1, 210, 246, 
-    74, 7, 246, 158, 1, 210, 230, 59, 7, 246, 158, 1, 237, 170, 189, 7, 246, 
-    158, 1, 242, 107, 234, 250, 7, 246, 158, 1, 254, 49, 189, 223, 19, 232, 
-    225, 1, 60, 223, 19, 232, 225, 1, 72, 223, 19, 232, 225, 5, 247, 84, 223, 
-    19, 232, 225, 1, 68, 223, 19, 232, 225, 1, 73, 223, 19, 232, 225, 1, 74, 
-    223, 19, 232, 225, 5, 243, 175, 223, 19, 232, 225, 1, 236, 57, 223, 19, 
-    232, 225, 1, 236, 125, 223, 19, 232, 225, 1, 244, 68, 223, 19, 232, 225, 
-    1, 244, 112, 223, 19, 232, 225, 5, 254, 95, 223, 19, 232, 225, 1, 250, 
-    182, 223, 19, 232, 225, 1, 251, 11, 223, 19, 232, 225, 1, 237, 59, 223, 
-    19, 232, 225, 1, 237, 99, 223, 19, 232, 225, 1, 221, 11, 223, 19, 232, 
-    225, 1, 221, 15, 223, 19, 232, 225, 1, 249, 107, 223, 19, 232, 225, 1, 
-    249, 115, 223, 19, 232, 225, 1, 101, 223, 19, 232, 225, 1, 221, 239, 223, 
-    19, 232, 225, 1, 248, 167, 223, 19, 232, 225, 1, 249, 19, 223, 19, 232, 
-    225, 1, 231, 204, 223, 19, 232, 225, 1, 229, 37, 223, 19, 232, 225, 1, 
-    229, 118, 223, 19, 232, 225, 1, 252, 41, 223, 19, 232, 225, 1, 252, 88, 
-    223, 19, 232, 225, 1, 233, 136, 223, 19, 232, 225, 1, 227, 75, 223, 19, 
-    232, 225, 1, 235, 12, 223, 19, 232, 225, 1, 227, 44, 223, 19, 232, 225, 
-    1, 224, 26, 223, 19, 232, 225, 1, 243, 4, 223, 19, 232, 225, 29, 5, 60, 
-    223, 19, 232, 225, 29, 5, 72, 223, 19, 232, 225, 29, 5, 68, 223, 19, 232, 
-    225, 29, 5, 73, 223, 19, 232, 225, 29, 5, 230, 127, 223, 19, 232, 225, 
-    229, 33, 234, 67, 223, 19, 232, 225, 229, 33, 234, 66, 223, 19, 232, 225, 
-    229, 33, 234, 65, 223, 19, 232, 225, 229, 33, 234, 64, 231, 187, 237, 
-    212, 245, 108, 131, 228, 89, 231, 187, 237, 212, 245, 108, 131, 243, 194, 
-    231, 187, 237, 212, 245, 108, 148, 228, 87, 231, 187, 237, 212, 245, 108, 
-    131, 224, 75, 231, 187, 237, 212, 245, 108, 131, 246, 231, 231, 187, 237, 
-    212, 245, 108, 148, 224, 74, 231, 187, 237, 212, 228, 90, 78, 231, 187, 
-    237, 212, 229, 56, 78, 231, 187, 237, 212, 227, 4, 78, 231, 187, 237, 
-    212, 228, 91, 78, 229, 138, 1, 175, 229, 138, 1, 236, 149, 229, 138, 1, 
-    245, 0, 229, 138, 1, 232, 115, 229, 138, 1, 251, 169, 229, 138, 1, 251, 
-    69, 229, 138, 1, 237, 123, 229, 138, 1, 231, 77, 229, 138, 1, 222, 155, 
-    229, 138, 1, 222, 35, 229, 138, 1, 249, 207, 229, 138, 1, 208, 229, 138, 
-    1, 187, 229, 138, 1, 229, 141, 229, 138, 1, 252, 237, 229, 138, 1, 196, 
-    229, 138, 1, 221, 55, 229, 138, 1, 221, 47, 229, 138, 1, 247, 74, 229, 
-    138, 1, 219, 7, 229, 138, 1, 217, 80, 229, 138, 1, 217, 114, 229, 138, 1, 
-    3, 60, 229, 138, 1, 184, 229, 138, 1, 203, 229, 138, 1, 235, 188, 229, 
-    138, 1, 225, 25, 229, 138, 1, 226, 177, 229, 138, 1, 155, 229, 138, 1, 
-    60, 229, 138, 1, 72, 229, 138, 1, 68, 229, 138, 1, 73, 229, 138, 1, 74, 
-    229, 138, 1, 228, 155, 229, 138, 1, 218, 138, 229, 138, 1, 246, 8, 229, 
-    138, 1, 244, 160, 229, 138, 1, 246, 250, 229, 138, 223, 97, 1, 219, 7, 
-    229, 138, 223, 97, 1, 184, 229, 138, 1, 221, 29, 229, 138, 1, 221, 19, 
-    229, 138, 1, 249, 132, 229, 138, 1, 231, 217, 229, 138, 1, 254, 144, 184, 
-    229, 138, 1, 219, 69, 225, 25, 229, 138, 1, 219, 70, 155, 229, 138, 1, 
-    254, 1, 246, 8, 229, 138, 223, 97, 1, 203, 229, 138, 223, 61, 1, 203, 
-    229, 138, 1, 251, 146, 229, 138, 224, 109, 243, 160, 78, 229, 138, 51, 
-    243, 160, 78, 229, 138, 164, 225, 18, 229, 138, 164, 51, 225, 18, 158, 5, 
-    254, 95, 158, 5, 219, 77, 158, 1, 60, 158, 1, 255, 58, 158, 1, 72, 158, 
-    1, 237, 255, 158, 1, 68, 158, 1, 220, 23, 158, 1, 167, 152, 158, 1, 167, 
-    227, 53, 158, 1, 167, 153, 158, 1, 167, 235, 18, 158, 1, 73, 158, 1, 246, 
-    250, 158, 1, 254, 196, 158, 1, 74, 158, 1, 230, 127, 158, 1, 253, 232, 
-    158, 1, 175, 158, 1, 236, 149, 158, 1, 245, 0, 158, 1, 244, 125, 158, 1, 
-    232, 115, 158, 1, 251, 169, 158, 1, 251, 69, 158, 1, 237, 123, 158, 1, 
-    237, 103, 158, 1, 231, 77, 158, 1, 221, 29, 158, 1, 221, 19, 158, 1, 249, 
-    132, 158, 1, 249, 116, 158, 1, 231, 217, 158, 1, 222, 155, 158, 1, 222, 
-    35, 158, 1, 249, 207, 158, 1, 249, 36, 158, 1, 208, 158, 1, 187, 158, 1, 
-    229, 141, 158, 1, 252, 237, 158, 1, 252, 94, 158, 1, 196, 158, 1, 184, 
-    158, 1, 203, 158, 1, 235, 188, 158, 1, 219, 189, 158, 1, 225, 25, 158, 1, 
-    223, 218, 158, 1, 226, 177, 158, 1, 155, 158, 1, 235, 17, 158, 250, 147, 
-    5, 243, 209, 158, 29, 5, 255, 58, 158, 29, 5, 72, 158, 29, 5, 237, 255, 
-    158, 29, 5, 68, 158, 29, 5, 220, 23, 158, 29, 5, 167, 152, 158, 29, 5, 
-    167, 227, 53, 158, 29, 5, 167, 153, 158, 29, 5, 167, 235, 18, 158, 29, 5, 
-    73, 158, 29, 5, 246, 250, 158, 29, 5, 254, 196, 158, 29, 5, 74, 158, 29, 
-    5, 230, 127, 158, 29, 5, 253, 232, 158, 5, 219, 82, 158, 249, 167, 158, 
-    51, 249, 167, 158, 20, 217, 84, 158, 20, 107, 158, 20, 103, 158, 20, 160, 
-    158, 20, 154, 158, 20, 174, 158, 20, 182, 158, 20, 191, 158, 20, 185, 
-    158, 20, 190, 36, 80, 20, 217, 84, 36, 80, 20, 107, 36, 80, 20, 103, 36, 
-    80, 20, 160, 36, 80, 20, 154, 36, 80, 20, 174, 36, 80, 20, 182, 36, 80, 
-    20, 191, 36, 80, 20, 185, 36, 80, 20, 190, 36, 80, 1, 60, 36, 80, 1, 68, 
-    36, 80, 1, 175, 36, 80, 1, 208, 36, 80, 1, 187, 36, 80, 1, 203, 36, 80, 
-    1, 219, 94, 36, 80, 5, 253, 219, 80, 5, 223, 253, 251, 146, 80, 5, 251, 
-    147, 219, 82, 80, 5, 51, 251, 147, 219, 82, 80, 5, 251, 147, 103, 80, 5, 
-    251, 147, 160, 80, 5, 251, 147, 253, 219, 80, 5, 228, 186, 80, 244, 224, 
-    245, 185, 80, 251, 134, 80, 243, 155, 236, 190, 235, 68, 20, 217, 84, 
-    236, 190, 235, 68, 20, 107, 236, 190, 235, 68, 20, 103, 236, 190, 235, 
-    68, 20, 160, 236, 190, 235, 68, 20, 154, 236, 190, 235, 68, 20, 174, 236, 
-    190, 235, 68, 20, 182, 236, 190, 235, 68, 20, 191, 236, 190, 235, 68, 20, 
-    185, 236, 190, 235, 68, 20, 190, 236, 190, 235, 68, 1, 175, 236, 190, 
-    235, 68, 1, 236, 149, 236, 190, 235, 68, 1, 245, 0, 236, 190, 235, 68, 1, 
-    232, 115, 236, 190, 235, 68, 1, 226, 177, 236, 190, 235, 68, 1, 225, 25, 
-    236, 190, 235, 68, 1, 217, 114, 236, 190, 235, 68, 1, 231, 77, 236, 190, 
-    235, 68, 1, 222, 155, 236, 190, 235, 68, 1, 242, 175, 236, 190, 235, 68, 
-    1, 208, 236, 190, 235, 68, 1, 187, 236, 190, 235, 68, 1, 229, 141, 236, 
-    190, 235, 68, 1, 196, 236, 190, 235, 68, 1, 249, 207, 236, 190, 235, 68, 
-    1, 252, 237, 236, 190, 235, 68, 1, 203, 236, 190, 235, 68, 1, 184, 236, 
-    190, 235, 68, 1, 235, 188, 236, 190, 235, 68, 1, 219, 7, 236, 190, 235, 
-    68, 1, 222, 35, 236, 190, 235, 68, 1, 155, 236, 190, 235, 68, 1, 219, 
-    189, 236, 190, 235, 68, 1, 251, 169, 236, 190, 235, 68, 1, 60, 236, 190, 
-    235, 68, 1, 230, 167, 236, 190, 235, 68, 1, 72, 236, 190, 235, 68, 1, 
-    230, 127, 236, 190, 235, 68, 29, 220, 110, 236, 190, 235, 68, 29, 73, 
-    236, 190, 235, 68, 29, 68, 236, 190, 235, 68, 29, 246, 250, 236, 190, 
-    235, 68, 29, 74, 236, 190, 235, 68, 145, 229, 48, 236, 190, 235, 68, 145, 
-    251, 157, 236, 190, 235, 68, 145, 251, 158, 229, 48, 236, 190, 235, 68, 
-    5, 250, 62, 236, 190, 235, 68, 5, 224, 148, 227, 194, 1, 175, 227, 194, 
-    1, 245, 0, 227, 194, 1, 232, 115, 227, 194, 1, 222, 155, 227, 194, 1, 
-    249, 207, 227, 194, 1, 208, 227, 194, 1, 187, 227, 194, 1, 252, 237, 227, 
-    194, 1, 196, 227, 194, 1, 251, 169, 227, 194, 1, 237, 123, 227, 194, 1, 
-    231, 77, 227, 194, 1, 226, 177, 227, 194, 1, 203, 227, 194, 1, 235, 188, 
-    227, 194, 1, 184, 227, 194, 1, 219, 7, 227, 194, 1, 155, 227, 194, 1, 
-    234, 37, 227, 194, 1, 232, 100, 227, 194, 1, 232, 169, 227, 194, 1, 231, 
-    57, 227, 194, 1, 60, 227, 194, 29, 5, 72, 227, 194, 29, 5, 68, 227, 194, 
-    29, 5, 73, 227, 194, 29, 5, 254, 196, 227, 194, 29, 5, 74, 227, 194, 29, 
-    5, 253, 232, 227, 194, 29, 5, 246, 115, 227, 194, 29, 5, 247, 16, 227, 
-    194, 250, 147, 5, 232, 117, 227, 194, 250, 147, 5, 207, 227, 194, 250, 
-    147, 5, 152, 227, 194, 250, 147, 5, 243, 225, 227, 194, 219, 82, 227, 
-    194, 226, 87, 78, 22, 91, 221, 188, 22, 91, 221, 187, 22, 91, 221, 185, 
-    22, 91, 221, 190, 22, 91, 227, 135, 22, 91, 227, 119, 22, 91, 227, 114, 
-    22, 91, 227, 116, 22, 91, 227, 132, 22, 91, 227, 125, 22, 91, 227, 118, 
-    22, 91, 227, 137, 22, 91, 227, 120, 22, 91, 227, 139, 22, 91, 227, 136, 
-    22, 91, 233, 183, 22, 91, 233, 174, 22, 91, 233, 177, 22, 91, 229, 84, 
-    22, 91, 229, 95, 22, 91, 229, 96, 22, 91, 223, 203, 22, 91, 238, 12, 22, 
-    91, 238, 19, 22, 91, 223, 214, 22, 91, 223, 201, 22, 91, 229, 126, 22, 
-    91, 243, 101, 22, 91, 223, 198, 133, 5, 229, 252, 133, 5, 251, 96, 133, 
-    5, 235, 130, 133, 5, 218, 197, 133, 1, 60, 133, 1, 242, 107, 236, 193, 
-    133, 1, 72, 133, 1, 237, 255, 133, 1, 68, 133, 1, 230, 44, 251, 73, 133, 
-    1, 232, 116, 235, 98, 133, 1, 232, 116, 235, 99, 227, 229, 133, 1, 73, 
-    133, 1, 254, 196, 133, 1, 74, 133, 1, 175, 133, 1, 206, 226, 128, 133, 1, 
-    206, 233, 67, 133, 1, 245, 0, 133, 1, 245, 1, 233, 67, 133, 1, 232, 115, 
-    133, 1, 251, 169, 133, 1, 251, 170, 233, 67, 133, 1, 237, 123, 133, 1, 
-    231, 78, 233, 67, 133, 1, 237, 124, 234, 103, 133, 1, 231, 77, 133, 1, 
-    221, 29, 133, 1, 221, 30, 234, 103, 133, 1, 249, 132, 133, 1, 249, 133, 
-    234, 103, 133, 1, 232, 238, 233, 67, 133, 1, 222, 155, 133, 1, 222, 156, 
-    233, 67, 133, 1, 249, 207, 133, 1, 249, 208, 234, 103, 133, 1, 208, 133, 
-    1, 187, 133, 1, 230, 44, 233, 67, 133, 1, 252, 237, 133, 1, 252, 238, 
-    233, 67, 133, 1, 196, 133, 1, 184, 133, 1, 203, 133, 1, 228, 3, 254, 203, 
-    133, 1, 235, 188, 133, 1, 219, 7, 133, 1, 226, 178, 233, 67, 133, 1, 226, 
-    178, 234, 103, 133, 1, 226, 177, 133, 1, 155, 133, 5, 251, 97, 222, 68, 
-    133, 29, 5, 222, 111, 133, 29, 5, 221, 135, 133, 29, 5, 218, 162, 133, 
-    29, 5, 218, 163, 234, 5, 133, 29, 5, 223, 77, 133, 29, 5, 223, 78, 233, 
-    250, 133, 29, 5, 222, 124, 133, 29, 5, 248, 207, 233, 66, 133, 29, 5, 
-    229, 171, 133, 250, 147, 5, 236, 161, 133, 250, 147, 5, 229, 179, 133, 
-    250, 147, 5, 251, 162, 133, 230, 6, 133, 42, 227, 176, 133, 45, 227, 176, 
-    133, 230, 36, 254, 125, 133, 230, 36, 234, 107, 133, 230, 36, 234, 223, 
-    133, 230, 36, 218, 193, 133, 230, 36, 230, 7, 133, 230, 36, 235, 35, 133, 
-    230, 36, 234, 217, 133, 230, 36, 254, 239, 133, 230, 36, 254, 240, 254, 
-    239, 133, 230, 36, 229, 65, 133, 215, 230, 36, 229, 65, 133, 230, 4, 133, 
-    20, 217, 84, 133, 20, 107, 133, 20, 103, 133, 20, 160, 133, 20, 154, 133, 
-    20, 174, 133, 20, 182, 133, 20, 191, 133, 20, 185, 133, 20, 190, 133, 
-    230, 36, 221, 163, 220, 248, 133, 230, 36, 237, 147, 149, 1, 60, 149, 1, 
-    72, 149, 1, 68, 149, 1, 73, 149, 1, 254, 196, 149, 1, 74, 149, 1, 175, 
-    149, 1, 236, 149, 149, 1, 245, 0, 149, 1, 244, 125, 149, 1, 232, 73, 149, 
-    1, 232, 115, 149, 1, 251, 69, 149, 1, 251, 33, 149, 1, 237, 123, 149, 1, 
-    237, 103, 149, 1, 232, 64, 149, 1, 232, 66, 149, 1, 232, 65, 149, 1, 222, 
-    155, 149, 1, 222, 35, 149, 1, 249, 207, 149, 1, 249, 36, 149, 1, 231, 
-    114, 149, 1, 208, 149, 1, 249, 132, 149, 1, 187, 149, 1, 229, 6, 149, 1, 
-    229, 141, 149, 1, 252, 237, 149, 1, 252, 94, 149, 1, 233, 94, 149, 1, 
-    196, 149, 1, 252, 178, 149, 1, 184, 149, 1, 203, 149, 1, 235, 188, 149, 
-    1, 219, 189, 149, 1, 223, 218, 149, 1, 226, 177, 149, 1, 155, 149, 29, 5, 
-    255, 58, 149, 29, 5, 72, 149, 29, 5, 237, 255, 149, 29, 5, 246, 237, 149, 
-    29, 5, 68, 149, 29, 5, 230, 167, 149, 29, 5, 74, 149, 29, 5, 254, 196, 
-    149, 29, 5, 253, 232, 149, 29, 5, 220, 110, 149, 250, 147, 5, 184, 149, 
-    250, 147, 5, 203, 149, 250, 147, 5, 235, 188, 149, 250, 147, 5, 219, 7, 
-    149, 1, 39, 237, 17, 149, 1, 39, 245, 67, 149, 1, 39, 232, 117, 149, 250, 
-    147, 5, 39, 232, 117, 149, 1, 39, 251, 70, 149, 1, 39, 222, 201, 149, 1, 
-    39, 207, 149, 1, 39, 230, 59, 149, 1, 39, 218, 90, 149, 1, 39, 152, 149, 
-    1, 39, 153, 149, 1, 39, 223, 219, 149, 250, 147, 5, 39, 189, 149, 250, 
-    147, 5, 39, 243, 225, 149, 20, 217, 84, 149, 20, 107, 149, 20, 103, 149, 
-    20, 160, 149, 20, 154, 149, 20, 174, 149, 20, 182, 149, 20, 191, 149, 20, 
-    185, 149, 20, 190, 149, 228, 197, 223, 242, 149, 228, 197, 249, 167, 149, 
-    228, 197, 51, 249, 167, 149, 228, 197, 221, 78, 249, 167, 63, 1, 236, 
-    143, 245, 0, 63, 1, 236, 143, 251, 169, 63, 1, 236, 143, 251, 69, 63, 1, 
-    236, 143, 237, 123, 63, 1, 236, 143, 237, 103, 63, 1, 236, 143, 231, 77, 
-    63, 1, 236, 143, 221, 29, 63, 1, 236, 143, 221, 19, 63, 1, 236, 143, 249, 
-    132, 63, 1, 236, 143, 249, 116, 63, 1, 236, 143, 249, 36, 63, 1, 236, 
-    143, 208, 63, 1, 236, 143, 226, 177, 63, 1, 236, 143, 155, 63, 1, 236, 
-    143, 243, 121, 63, 1, 236, 143, 246, 8, 63, 58, 1, 236, 143, 227, 201, 
-    63, 1, 236, 143, 218, 138, 63, 1, 236, 143, 217, 114, 63, 1, 236, 143, 
-    203, 63, 235, 6, 236, 143, 230, 182, 63, 235, 6, 236, 143, 228, 111, 63, 
-    235, 6, 236, 143, 243, 57, 63, 16, 254, 186, 246, 94, 63, 16, 254, 186, 
-    107, 63, 16, 254, 186, 103, 63, 1, 254, 186, 203, 63, 5, 229, 248, 236, 
-    213, 221, 132, 37, 177, 1, 109, 236, 57, 37, 177, 1, 116, 236, 57, 37, 
-    177, 1, 109, 236, 125, 37, 177, 1, 116, 236, 125, 37, 177, 1, 109, 236, 
-    132, 37, 177, 1, 116, 236, 132, 37, 177, 1, 109, 244, 68, 37, 177, 1, 
-    116, 244, 68, 37, 177, 1, 109, 232, 84, 37, 177, 1, 116, 232, 84, 37, 
-    177, 1, 109, 250, 182, 37, 177, 1, 116, 250, 182, 37, 177, 1, 109, 251, 
-    11, 37, 177, 1, 116, 251, 11, 37, 177, 1, 109, 224, 26, 37, 177, 1, 116, 
-    224, 26, 37, 177, 1, 109, 231, 56, 37, 177, 1, 116, 231, 56, 37, 177, 1, 
-    109, 248, 167, 37, 177, 1, 116, 248, 167, 37, 177, 1, 109, 101, 37, 177, 
-    1, 116, 101, 37, 177, 1, 109, 221, 239, 37, 177, 1, 116, 221, 239, 37, 
-    177, 1, 109, 231, 204, 37, 177, 1, 116, 231, 204, 37, 177, 1, 109, 252, 
-    41, 37, 177, 1, 116, 252, 41, 37, 177, 1, 109, 229, 37, 37, 177, 1, 116, 
-    229, 37, 37, 177, 1, 109, 229, 118, 37, 177, 1, 116, 229, 118, 37, 177, 
-    1, 109, 245, 139, 37, 177, 1, 116, 245, 139, 37, 177, 1, 109, 233, 136, 
-    37, 177, 1, 116, 233, 136, 37, 177, 1, 109, 217, 231, 37, 177, 1, 116, 
-    217, 231, 37, 177, 1, 109, 227, 75, 37, 177, 1, 116, 227, 75, 37, 177, 1, 
-    109, 235, 12, 37, 177, 1, 116, 235, 12, 37, 177, 1, 109, 219, 72, 37, 
-    177, 1, 116, 219, 72, 37, 177, 1, 109, 243, 4, 37, 177, 1, 116, 243, 4, 
-    37, 177, 1, 109, 74, 37, 177, 1, 116, 74, 37, 177, 234, 100, 236, 229, 
-    37, 177, 29, 255, 58, 37, 177, 29, 72, 37, 177, 29, 220, 110, 37, 177, 
-    29, 68, 37, 177, 29, 73, 37, 177, 29, 74, 37, 177, 234, 100, 236, 127, 
-    37, 177, 29, 242, 72, 37, 177, 29, 220, 109, 37, 177, 29, 220, 123, 37, 
-    177, 29, 253, 231, 37, 177, 29, 253, 212, 37, 177, 29, 254, 131, 37, 177, 
-    29, 254, 140, 37, 177, 145, 234, 100, 246, 223, 37, 177, 145, 234, 100, 
-    231, 113, 37, 177, 145, 234, 100, 221, 239, 37, 177, 145, 234, 100, 224, 
-    15, 37, 177, 16, 236, 44, 37, 177, 16, 231, 113, 37, 177, 16, 226, 148, 
-    37, 177, 16, 243, 5, 243, 1, 37, 177, 16, 236, 52, 236, 51, 234, 11, 234, 
-    43, 1, 236, 49, 234, 11, 234, 43, 1, 226, 148, 234, 11, 234, 43, 1, 235, 
-    167, 234, 11, 234, 43, 1, 233, 145, 234, 11, 234, 43, 1, 187, 234, 11, 
-    234, 43, 1, 208, 234, 11, 234, 43, 1, 251, 25, 234, 11, 234, 43, 1, 221, 
-    181, 234, 11, 234, 43, 1, 236, 121, 234, 11, 234, 43, 1, 232, 76, 234, 
-    11, 234, 43, 1, 221, 233, 234, 11, 234, 43, 1, 219, 2, 234, 11, 234, 43, 
-    1, 218, 45, 234, 11, 234, 43, 1, 242, 167, 234, 11, 234, 43, 1, 220, 87, 
-    234, 11, 234, 43, 1, 72, 234, 11, 234, 43, 1, 229, 136, 234, 11, 234, 43, 
-    1, 253, 241, 234, 11, 234, 43, 1, 244, 63, 234, 11, 234, 43, 1, 237, 102, 
-    234, 11, 234, 43, 1, 227, 246, 234, 11, 234, 43, 1, 252, 237, 234, 11, 
-    234, 43, 1, 237, 91, 234, 11, 234, 43, 1, 248, 232, 234, 11, 234, 43, 1, 
-    244, 110, 234, 11, 234, 43, 1, 249, 17, 234, 11, 234, 43, 1, 252, 93, 
-    234, 11, 234, 43, 1, 236, 50, 234, 249, 234, 11, 234, 43, 1, 235, 168, 
-    234, 249, 234, 11, 234, 43, 1, 233, 146, 234, 249, 234, 11, 234, 43, 1, 
-    230, 44, 234, 249, 234, 11, 234, 43, 1, 232, 238, 234, 249, 234, 11, 234, 
-    43, 1, 221, 182, 234, 249, 234, 11, 234, 43, 1, 232, 77, 234, 249, 234, 
-    11, 234, 43, 1, 242, 107, 234, 249, 234, 11, 234, 43, 29, 5, 230, 137, 
-    234, 11, 234, 43, 29, 5, 237, 221, 234, 11, 234, 43, 29, 5, 254, 130, 
-    234, 11, 234, 43, 29, 5, 218, 18, 234, 11, 234, 43, 29, 5, 224, 10, 234, 
-    11, 234, 43, 29, 5, 220, 85, 234, 11, 234, 43, 29, 5, 251, 40, 234, 11, 
-    234, 43, 29, 5, 231, 100, 234, 11, 234, 43, 251, 41, 234, 11, 234, 43, 
-    234, 220, 237, 131, 234, 11, 234, 43, 254, 70, 237, 131, 234, 11, 234, 
-    43, 20, 217, 84, 234, 11, 234, 43, 20, 107, 234, 11, 234, 43, 20, 103, 
-    234, 11, 234, 43, 20, 160, 234, 11, 234, 43, 20, 154, 234, 11, 234, 43, 
-    20, 174, 234, 11, 234, 43, 20, 182, 234, 11, 234, 43, 20, 191, 234, 11, 
-    234, 43, 20, 185, 234, 11, 234, 43, 20, 190, 22, 122, 231, 6, 22, 122, 
-    231, 11, 22, 122, 217, 230, 22, 122, 217, 229, 22, 122, 217, 228, 22, 
-    122, 220, 173, 22, 122, 220, 176, 22, 122, 217, 198, 22, 122, 217, 194, 
-    22, 122, 246, 114, 22, 122, 246, 112, 22, 122, 246, 113, 22, 122, 246, 
-    110, 22, 122, 242, 97, 22, 122, 242, 96, 22, 122, 242, 94, 22, 122, 242, 
-    95, 22, 122, 242, 100, 22, 122, 242, 93, 22, 122, 242, 92, 22, 122, 242, 
-    102, 22, 122, 254, 59, 22, 122, 254, 58, 22, 85, 232, 48, 22, 85, 232, 
-    54, 22, 85, 223, 200, 22, 85, 223, 199, 22, 85, 221, 187, 22, 85, 221, 
-    185, 22, 85, 221, 184, 22, 85, 221, 190, 22, 85, 221, 191, 22, 85, 221, 
-    183, 22, 85, 227, 119, 22, 85, 227, 134, 22, 85, 223, 206, 22, 85, 227, 
-    131, 22, 85, 227, 121, 22, 85, 227, 123, 22, 85, 227, 110, 22, 85, 227, 
-    111, 22, 85, 236, 217, 22, 85, 233, 182, 22, 85, 233, 176, 22, 85, 223, 
-    210, 22, 85, 233, 179, 22, 85, 233, 185, 22, 85, 229, 80, 22, 85, 229, 
-    89, 22, 85, 229, 93, 22, 85, 223, 208, 22, 85, 229, 83, 22, 85, 229, 97, 
-    22, 85, 229, 98, 22, 85, 224, 96, 22, 85, 224, 99, 22, 85, 223, 204, 22, 
-    85, 223, 202, 22, 85, 224, 94, 22, 85, 224, 102, 22, 85, 224, 103, 22, 
-    85, 224, 88, 22, 85, 224, 101, 22, 85, 229, 255, 22, 85, 230, 0, 22, 85, 
-    218, 4, 22, 85, 218, 5, 22, 85, 250, 228, 22, 85, 250, 227, 22, 85, 223, 
-    215, 22, 85, 229, 124, 22, 85, 229, 123, 9, 13, 239, 244, 9, 13, 239, 
-    243, 9, 13, 239, 242, 9, 13, 239, 241, 9, 13, 239, 240, 9, 13, 239, 239, 
-    9, 13, 239, 238, 9, 13, 239, 237, 9, 13, 239, 236, 9, 13, 239, 235, 9, 
-    13, 239, 234, 9, 13, 239, 233, 9, 13, 239, 232, 9, 13, 239, 231, 9, 13, 
-    239, 230, 9, 13, 239, 229, 9, 13, 239, 228, 9, 13, 239, 227, 9, 13, 239, 
-    226, 9, 13, 239, 225, 9, 13, 239, 224, 9, 13, 239, 223, 9, 13, 239, 222, 
-    9, 13, 239, 221, 9, 13, 239, 220, 9, 13, 239, 219, 9, 13, 239, 218, 9, 
-    13, 239, 217, 9, 13, 239, 216, 9, 13, 239, 215, 9, 13, 239, 214, 9, 13, 
-    239, 213, 9, 13, 239, 212, 9, 13, 239, 211, 9, 13, 239, 210, 9, 13, 239, 
-    209, 9, 13, 239, 208, 9, 13, 239, 207, 9, 13, 239, 206, 9, 13, 239, 205, 
-    9, 13, 239, 204, 9, 13, 239, 203, 9, 13, 239, 202, 9, 13, 239, 201, 9, 
-    13, 239, 200, 9, 13, 239, 199, 9, 13, 239, 198, 9, 13, 239, 197, 9, 13, 
-    239, 196, 9, 13, 239, 195, 9, 13, 239, 194, 9, 13, 239, 193, 9, 13, 239, 
-    192, 9, 13, 239, 191, 9, 13, 239, 190, 9, 13, 239, 189, 9, 13, 239, 188, 
-    9, 13, 239, 187, 9, 13, 239, 186, 9, 13, 239, 185, 9, 13, 239, 184, 9, 
-    13, 239, 183, 9, 13, 239, 182, 9, 13, 239, 181, 9, 13, 239, 180, 9, 13, 
-    239, 179, 9, 13, 239, 178, 9, 13, 239, 177, 9, 13, 239, 176, 9, 13, 239, 
-    175, 9, 13, 239, 174, 9, 13, 239, 173, 9, 13, 239, 172, 9, 13, 239, 171, 
-    9, 13, 239, 170, 9, 13, 239, 169, 9, 13, 239, 168, 9, 13, 239, 167, 9, 
-    13, 239, 166, 9, 13, 239, 165, 9, 13, 239, 164, 9, 13, 239, 163, 9, 13, 
-    239, 162, 9, 13, 239, 161, 9, 13, 239, 160, 9, 13, 239, 159, 9, 13, 239, 
-    158, 9, 13, 239, 157, 9, 13, 239, 156, 9, 13, 239, 155, 9, 13, 239, 154, 
-    9, 13, 239, 153, 9, 13, 239, 152, 9, 13, 239, 151, 9, 13, 239, 150, 9, 
-    13, 239, 149, 9, 13, 239, 148, 9, 13, 239, 147, 9, 13, 239, 146, 9, 13, 
-    239, 145, 9, 13, 239, 144, 9, 13, 239, 143, 9, 13, 239, 142, 9, 13, 239, 
-    141, 9, 13, 239, 140, 9, 13, 239, 139, 9, 13, 239, 138, 9, 13, 239, 137, 
-    9, 13, 239, 136, 9, 13, 239, 135, 9, 13, 239, 134, 9, 13, 239, 133, 9, 
-    13, 239, 132, 9, 13, 239, 131, 9, 13, 239, 130, 9, 13, 239, 129, 9, 13, 
-    239, 128, 9, 13, 239, 127, 9, 13, 239, 126, 9, 13, 239, 125, 9, 13, 239, 
-    124, 9, 13, 239, 123, 9, 13, 239, 122, 9, 13, 239, 121, 9, 13, 239, 120, 
-    9, 13, 239, 119, 9, 13, 239, 118, 9, 13, 239, 117, 9, 13, 239, 116, 9, 
-    13, 239, 115, 9, 13, 239, 114, 9, 13, 239, 113, 9, 13, 239, 112, 9, 13, 
-    239, 111, 9, 13, 239, 110, 9, 13, 239, 109, 9, 13, 239, 108, 9, 13, 239, 
-    107, 9, 13, 239, 106, 9, 13, 239, 105, 9, 13, 239, 104, 9, 13, 239, 103, 
-    9, 13, 239, 102, 9, 13, 239, 101, 9, 13, 239, 100, 9, 13, 239, 99, 9, 13, 
-    239, 98, 9, 13, 239, 97, 9, 13, 239, 96, 9, 13, 239, 95, 9, 13, 239, 94, 
-    9, 13, 239, 93, 9, 13, 239, 92, 9, 13, 239, 91, 9, 13, 239, 90, 9, 13, 
-    239, 89, 9, 13, 239, 88, 9, 13, 239, 87, 9, 13, 239, 86, 9, 13, 239, 85, 
-    9, 13, 239, 84, 9, 13, 239, 83, 9, 13, 239, 82, 9, 13, 239, 81, 9, 13, 
-    239, 80, 9, 13, 239, 79, 9, 13, 239, 78, 9, 13, 239, 77, 9, 13, 239, 76, 
-    9, 13, 239, 75, 9, 13, 239, 74, 9, 13, 239, 73, 9, 13, 239, 72, 9, 13, 
-    239, 71, 9, 13, 239, 70, 9, 13, 239, 69, 9, 13, 239, 68, 9, 13, 239, 67, 
-    9, 13, 239, 66, 9, 13, 239, 65, 9, 13, 239, 64, 9, 13, 239, 63, 9, 13, 
-    239, 62, 9, 13, 239, 61, 9, 13, 239, 60, 9, 13, 239, 59, 9, 13, 239, 58, 
-    9, 13, 239, 57, 9, 13, 239, 56, 9, 13, 239, 55, 9, 13, 239, 54, 9, 13, 
-    239, 53, 9, 13, 239, 52, 9, 13, 239, 51, 9, 13, 239, 50, 9, 13, 239, 49, 
-    9, 13, 239, 48, 9, 13, 239, 47, 9, 13, 239, 46, 9, 13, 239, 45, 9, 13, 
-    239, 44, 9, 13, 239, 43, 9, 13, 239, 42, 9, 13, 239, 41, 9, 13, 239, 40, 
-    9, 13, 239, 39, 9, 13, 239, 38, 9, 13, 239, 37, 9, 13, 239, 36, 9, 13, 
-    239, 35, 9, 13, 239, 34, 9, 13, 239, 33, 9, 13, 239, 32, 9, 13, 239, 31, 
-    9, 13, 239, 30, 9, 13, 239, 29, 9, 13, 239, 28, 9, 13, 239, 27, 9, 13, 
-    239, 26, 9, 13, 239, 25, 9, 13, 239, 24, 9, 13, 239, 23, 9, 13, 239, 22, 
-    9, 13, 239, 21, 9, 13, 239, 20, 9, 13, 239, 19, 9, 13, 239, 18, 9, 13, 
-    239, 17, 9, 13, 239, 16, 9, 13, 239, 15, 9, 13, 239, 14, 9, 13, 239, 13, 
-    9, 13, 239, 12, 9, 13, 239, 11, 9, 13, 239, 10, 9, 13, 239, 9, 9, 13, 
-    239, 8, 9, 13, 239, 7, 9, 13, 239, 6, 9, 13, 239, 5, 9, 13, 239, 4, 9, 
-    13, 239, 3, 9, 13, 239, 2, 9, 13, 239, 1, 9, 13, 239, 0, 9, 13, 238, 255, 
-    9, 13, 238, 254, 9, 13, 238, 253, 9, 13, 238, 252, 9, 13, 238, 251, 9, 
-    13, 238, 250, 9, 13, 238, 249, 9, 13, 238, 248, 9, 13, 238, 247, 9, 13, 
-    238, 246, 9, 13, 238, 245, 9, 13, 238, 244, 9, 13, 238, 243, 9, 13, 238, 
-    242, 9, 13, 238, 241, 9, 13, 238, 240, 9, 13, 238, 239, 9, 13, 238, 238, 
-    9, 13, 238, 237, 9, 13, 238, 236, 9, 13, 238, 235, 9, 13, 238, 234, 9, 
-    13, 238, 233, 9, 13, 238, 232, 9, 13, 238, 231, 9, 13, 238, 230, 9, 13, 
-    238, 229, 9, 13, 238, 228, 9, 13, 238, 227, 9, 13, 238, 226, 9, 13, 238, 
-    225, 9, 13, 238, 224, 9, 13, 238, 223, 9, 13, 238, 222, 9, 13, 238, 221, 
-    9, 13, 238, 220, 9, 13, 238, 219, 9, 13, 238, 218, 9, 13, 238, 217, 9, 
-    13, 238, 216, 9, 13, 238, 215, 9, 13, 238, 214, 9, 13, 238, 213, 9, 13, 
-    238, 212, 9, 13, 238, 211, 9, 13, 238, 210, 9, 13, 238, 209, 9, 13, 238, 
-    208, 9, 13, 238, 207, 9, 13, 238, 206, 9, 13, 238, 205, 9, 13, 238, 204, 
-    9, 13, 238, 203, 9, 13, 238, 202, 9, 13, 238, 201, 9, 13, 238, 200, 9, 
-    13, 238, 199, 9, 13, 238, 198, 9, 13, 238, 197, 9, 13, 238, 196, 9, 13, 
-    238, 195, 9, 13, 238, 194, 9, 13, 238, 193, 9, 13, 238, 192, 9, 13, 238, 
-    191, 9, 13, 238, 190, 9, 13, 238, 189, 9, 13, 238, 188, 9, 13, 238, 187, 
-    9, 13, 238, 186, 9, 13, 238, 185, 9, 13, 238, 184, 9, 13, 238, 183, 9, 
-    13, 238, 182, 9, 13, 238, 181, 9, 13, 238, 180, 9, 13, 238, 179, 9, 13, 
-    238, 178, 9, 13, 238, 177, 9, 13, 238, 176, 9, 13, 238, 175, 9, 13, 238, 
-    174, 9, 13, 238, 173, 9, 13, 238, 172, 9, 13, 238, 171, 9, 13, 238, 170, 
-    9, 13, 238, 169, 9, 13, 238, 168, 9, 13, 238, 167, 9, 13, 238, 166, 9, 
-    13, 238, 165, 9, 13, 238, 164, 9, 13, 238, 163, 9, 13, 238, 162, 9, 13, 
-    238, 161, 9, 13, 238, 160, 9, 13, 238, 159, 9, 13, 238, 158, 9, 13, 238, 
-    157, 9, 13, 238, 156, 9, 13, 238, 155, 9, 13, 238, 154, 9, 13, 238, 153, 
-    9, 13, 238, 152, 9, 13, 238, 151, 9, 13, 238, 150, 9, 13, 238, 149, 9, 
-    13, 238, 148, 9, 13, 238, 147, 9, 13, 238, 146, 9, 13, 238, 145, 9, 13, 
-    238, 144, 9, 13, 238, 143, 9, 13, 238, 142, 9, 13, 238, 141, 9, 13, 238, 
-    140, 9, 13, 238, 139, 9, 13, 238, 138, 9, 13, 238, 137, 9, 13, 238, 136, 
-    9, 13, 238, 135, 9, 13, 238, 134, 9, 13, 238, 133, 9, 13, 238, 132, 9, 
-    13, 238, 131, 9, 13, 238, 130, 9, 13, 238, 129, 9, 13, 238, 128, 9, 13, 
-    238, 127, 9, 13, 238, 126, 9, 13, 238, 125, 9, 13, 238, 124, 9, 13, 238, 
-    123, 9, 13, 238, 122, 9, 13, 238, 121, 9, 13, 238, 120, 9, 13, 238, 119, 
-    9, 13, 238, 118, 9, 13, 238, 117, 9, 13, 238, 116, 9, 13, 238, 115, 9, 
-    13, 238, 114, 9, 13, 238, 113, 9, 13, 238, 112, 9, 13, 238, 111, 9, 13, 
-    238, 110, 9, 13, 238, 109, 9, 13, 238, 108, 9, 13, 238, 107, 9, 13, 238, 
-    106, 9, 13, 238, 105, 9, 13, 238, 104, 9, 13, 238, 103, 9, 13, 238, 102, 
-    9, 13, 238, 101, 9, 13, 238, 100, 9, 13, 238, 99, 9, 13, 238, 98, 9, 13, 
-    238, 97, 9, 13, 238, 96, 9, 13, 238, 95, 9, 13, 238, 94, 9, 13, 238, 93, 
-    9, 13, 238, 92, 9, 13, 238, 91, 9, 13, 238, 90, 9, 13, 238, 89, 9, 13, 
-    238, 88, 9, 13, 238, 87, 9, 13, 238, 86, 9, 13, 238, 85, 9, 13, 238, 84, 
-    9, 13, 238, 83, 9, 13, 238, 82, 9, 13, 238, 81, 9, 13, 238, 80, 9, 13, 
-    238, 79, 9, 13, 238, 78, 9, 13, 238, 77, 9, 13, 238, 76, 9, 13, 238, 75, 
-    9, 13, 238, 74, 9, 13, 238, 73, 9, 13, 238, 72, 9, 13, 238, 71, 9, 13, 
-    238, 70, 9, 13, 238, 69, 9, 13, 238, 68, 9, 13, 238, 67, 9, 13, 238, 66, 
-    9, 13, 238, 65, 9, 13, 238, 64, 9, 13, 238, 63, 9, 13, 238, 62, 9, 13, 
-    238, 61, 9, 13, 238, 60, 9, 13, 238, 59, 9, 13, 238, 58, 9, 13, 238, 57, 
-    9, 13, 238, 56, 9, 13, 238, 55, 9, 13, 238, 54, 9, 13, 238, 53, 9, 13, 
-    238, 52, 9, 13, 238, 51, 9, 13, 238, 50, 9, 13, 238, 49, 9, 13, 238, 48, 
-    9, 13, 238, 47, 9, 13, 238, 46, 9, 13, 238, 45, 9, 13, 238, 44, 9, 13, 
-    238, 43, 9, 13, 238, 42, 9, 13, 238, 41, 9, 13, 238, 40, 9, 13, 238, 39, 
-    9, 13, 238, 38, 9, 13, 238, 37, 9, 13, 238, 36, 9, 13, 238, 35, 9, 13, 
-    238, 34, 9, 13, 238, 33, 9, 13, 238, 32, 9, 13, 238, 31, 7, 3, 24, 245, 
-    207, 7, 3, 24, 245, 203, 7, 3, 24, 245, 166, 7, 3, 24, 245, 206, 7, 3, 
-    24, 245, 205, 7, 3, 24, 171, 226, 235, 222, 201, 7, 3, 24, 223, 168, 132, 
-    3, 24, 233, 252, 231, 174, 132, 3, 24, 233, 252, 246, 254, 132, 3, 24, 
-    233, 252, 237, 200, 132, 3, 24, 219, 97, 231, 174, 132, 3, 24, 233, 252, 
-    218, 133, 87, 1, 217, 221, 2, 243, 94, 87, 229, 32, 237, 42, 219, 176, 
-    87, 24, 217, 248, 217, 221, 217, 221, 229, 214, 87, 1, 254, 142, 253, 
-    207, 87, 1, 218, 201, 254, 168, 87, 1, 218, 201, 249, 177, 87, 1, 218, 
-    201, 243, 162, 87, 1, 218, 201, 236, 246, 87, 1, 218, 201, 235, 152, 87, 
-    1, 218, 201, 39, 234, 1, 87, 1, 218, 201, 227, 174, 87, 1, 218, 201, 222, 
-    102, 87, 1, 254, 142, 88, 55, 87, 1, 224, 210, 2, 224, 210, 248, 145, 87, 
-    1, 224, 210, 2, 224, 113, 248, 145, 87, 1, 224, 210, 2, 249, 194, 25, 
-    224, 210, 248, 145, 87, 1, 224, 210, 2, 249, 194, 25, 224, 113, 248, 145, 
-    87, 1, 99, 2, 229, 214, 87, 1, 99, 2, 228, 143, 87, 1, 99, 2, 234, 77, 
-    87, 1, 252, 105, 2, 249, 193, 87, 1, 244, 92, 2, 249, 193, 87, 1, 249, 
-    178, 2, 249, 193, 87, 1, 243, 163, 2, 234, 77, 87, 1, 219, 170, 2, 249, 
-    193, 87, 1, 217, 96, 2, 249, 193, 87, 1, 222, 51, 2, 249, 193, 87, 1, 
-    217, 221, 2, 249, 193, 87, 1, 39, 236, 247, 2, 249, 193, 87, 1, 236, 247, 
-    2, 249, 193, 87, 1, 235, 153, 2, 249, 193, 87, 1, 234, 2, 2, 249, 193, 
-    87, 1, 231, 104, 2, 249, 193, 87, 1, 226, 146, 2, 249, 193, 87, 1, 39, 
-    229, 199, 2, 249, 193, 87, 1, 229, 199, 2, 249, 193, 87, 1, 221, 52, 2, 
-    249, 193, 87, 1, 228, 108, 2, 249, 193, 87, 1, 227, 175, 2, 249, 193, 87, 
-    1, 224, 210, 2, 249, 193, 87, 1, 222, 103, 2, 249, 193, 87, 1, 219, 170, 
-    2, 242, 254, 87, 1, 252, 105, 2, 227, 248, 87, 1, 236, 247, 2, 227, 248, 
-    87, 1, 229, 199, 2, 227, 248, 87, 24, 99, 235, 152, 12, 1, 99, 218, 247, 
-    47, 17, 12, 1, 99, 218, 247, 39, 17, 12, 1, 252, 136, 47, 17, 12, 1, 252, 
-    136, 39, 17, 12, 1, 252, 136, 66, 17, 12, 1, 252, 136, 128, 17, 12, 1, 
-    229, 188, 47, 17, 12, 1, 229, 188, 39, 17, 12, 1, 229, 188, 66, 17, 12, 
-    1, 229, 188, 128, 17, 12, 1, 252, 127, 47, 17, 12, 1, 252, 127, 39, 17, 
-    12, 1, 252, 127, 66, 17, 12, 1, 252, 127, 128, 17, 12, 1, 221, 22, 47, 
-    17, 12, 1, 221, 22, 39, 17, 12, 1, 221, 22, 66, 17, 12, 1, 221, 22, 128, 
-    17, 12, 1, 222, 76, 47, 17, 12, 1, 222, 76, 39, 17, 12, 1, 222, 76, 66, 
-    17, 12, 1, 222, 76, 128, 17, 12, 1, 221, 24, 47, 17, 12, 1, 221, 24, 39, 
-    17, 12, 1, 221, 24, 66, 17, 12, 1, 221, 24, 128, 17, 12, 1, 219, 159, 47, 
-    17, 12, 1, 219, 159, 39, 17, 12, 1, 219, 159, 66, 17, 12, 1, 219, 159, 
-    128, 17, 12, 1, 229, 186, 47, 17, 12, 1, 229, 186, 39, 17, 12, 1, 229, 
-    186, 66, 17, 12, 1, 229, 186, 128, 17, 12, 1, 247, 80, 47, 17, 12, 1, 
-    247, 80, 39, 17, 12, 1, 247, 80, 66, 17, 12, 1, 247, 80, 128, 17, 12, 1, 
-    231, 71, 47, 17, 12, 1, 231, 71, 39, 17, 12, 1, 231, 71, 66, 17, 12, 1, 
-    231, 71, 128, 17, 12, 1, 222, 92, 47, 17, 12, 1, 222, 92, 39, 17, 12, 1, 
-    222, 92, 66, 17, 12, 1, 222, 92, 128, 17, 12, 1, 222, 90, 47, 17, 12, 1, 
-    222, 90, 39, 17, 12, 1, 222, 90, 66, 17, 12, 1, 222, 90, 128, 17, 12, 1, 
-    249, 130, 47, 17, 12, 1, 249, 130, 39, 17, 12, 1, 249, 190, 47, 17, 12, 
-    1, 249, 190, 39, 17, 12, 1, 247, 104, 47, 17, 12, 1, 247, 104, 39, 17, 
-    12, 1, 249, 128, 47, 17, 12, 1, 249, 128, 39, 17, 12, 1, 237, 110, 47, 
-    17, 12, 1, 237, 110, 39, 17, 12, 1, 227, 49, 47, 17, 12, 1, 227, 49, 39, 
-    17, 12, 1, 236, 177, 47, 17, 12, 1, 236, 177, 39, 17, 12, 1, 236, 177, 
-    66, 17, 12, 1, 236, 177, 128, 17, 12, 1, 244, 244, 47, 17, 12, 1, 244, 
-    244, 39, 17, 12, 1, 244, 244, 66, 17, 12, 1, 244, 244, 128, 17, 12, 1, 
-    244, 10, 47, 17, 12, 1, 244, 10, 39, 17, 12, 1, 244, 10, 66, 17, 12, 1, 
-    244, 10, 128, 17, 12, 1, 232, 83, 47, 17, 12, 1, 232, 83, 39, 17, 12, 1, 
-    232, 83, 66, 17, 12, 1, 232, 83, 128, 17, 12, 1, 231, 194, 244, 108, 47, 
-    17, 12, 1, 231, 194, 244, 108, 39, 17, 12, 1, 227, 79, 47, 17, 12, 1, 
-    227, 79, 39, 17, 12, 1, 227, 79, 66, 17, 12, 1, 227, 79, 128, 17, 12, 1, 
-    243, 147, 2, 70, 71, 47, 17, 12, 1, 243, 147, 2, 70, 71, 39, 17, 12, 1, 
-    243, 147, 244, 66, 47, 17, 12, 1, 243, 147, 244, 66, 39, 17, 12, 1, 243, 
-    147, 244, 66, 66, 17, 12, 1, 243, 147, 244, 66, 128, 17, 12, 1, 243, 147, 
-    248, 164, 47, 17, 12, 1, 243, 147, 248, 164, 39, 17, 12, 1, 243, 147, 
-    248, 164, 66, 17, 12, 1, 243, 147, 248, 164, 128, 17, 12, 1, 70, 252, 
-    195, 47, 17, 12, 1, 70, 252, 195, 39, 17, 12, 1, 70, 252, 195, 2, 181, 
-    71, 47, 17, 12, 1, 70, 252, 195, 2, 181, 71, 39, 17, 12, 1, 232, 118, 47, 
-    17, 12, 1, 232, 118, 39, 17, 12, 1, 232, 118, 66, 17, 12, 1, 232, 118, 
-    128, 17, 12, 1, 105, 47, 17, 12, 1, 105, 39, 17, 12, 1, 230, 168, 47, 17, 
-    12, 1, 230, 168, 39, 17, 12, 1, 217, 201, 47, 17, 12, 1, 217, 201, 39, 
-    17, 12, 1, 105, 2, 181, 71, 47, 17, 12, 1, 219, 166, 47, 17, 12, 1, 219, 
-    166, 39, 17, 12, 1, 236, 98, 230, 168, 47, 17, 12, 1, 236, 98, 230, 168, 
-    39, 17, 12, 1, 236, 98, 217, 201, 47, 17, 12, 1, 236, 98, 217, 201, 39, 
-    17, 12, 1, 178, 47, 17, 12, 1, 178, 39, 17, 12, 1, 178, 66, 17, 12, 1, 
-    178, 128, 17, 12, 1, 220, 104, 236, 188, 236, 98, 99, 197, 66, 17, 12, 1, 
-    220, 104, 236, 188, 236, 98, 99, 197, 128, 17, 12, 24, 70, 2, 181, 71, 2, 
-    99, 47, 17, 12, 24, 70, 2, 181, 71, 2, 99, 39, 17, 12, 24, 70, 2, 181, 
-    71, 2, 254, 235, 47, 17, 12, 24, 70, 2, 181, 71, 2, 254, 235, 39, 17, 12, 
-    24, 70, 2, 181, 71, 2, 218, 234, 47, 17, 12, 24, 70, 2, 181, 71, 2, 218, 
-    234, 39, 17, 12, 24, 70, 2, 181, 71, 2, 105, 47, 17, 12, 24, 70, 2, 181, 
-    71, 2, 105, 39, 17, 12, 24, 70, 2, 181, 71, 2, 230, 168, 47, 17, 12, 24, 
-    70, 2, 181, 71, 2, 230, 168, 39, 17, 12, 24, 70, 2, 181, 71, 2, 217, 201, 
-    47, 17, 12, 24, 70, 2, 181, 71, 2, 217, 201, 39, 17, 12, 24, 70, 2, 181, 
-    71, 2, 178, 47, 17, 12, 24, 70, 2, 181, 71, 2, 178, 39, 17, 12, 24, 70, 
-    2, 181, 71, 2, 178, 66, 17, 12, 24, 220, 104, 236, 98, 70, 2, 181, 71, 2, 
-    99, 197, 47, 17, 12, 24, 220, 104, 236, 98, 70, 2, 181, 71, 2, 99, 197, 
-    39, 17, 12, 24, 220, 104, 236, 98, 70, 2, 181, 71, 2, 99, 197, 66, 17, 
-    12, 1, 245, 241, 70, 47, 17, 12, 1, 245, 241, 70, 39, 17, 12, 1, 245, 
-    241, 70, 66, 17, 12, 1, 245, 241, 70, 128, 17, 12, 24, 70, 2, 181, 71, 2, 
-    134, 47, 17, 12, 24, 70, 2, 181, 71, 2, 111, 47, 17, 12, 24, 70, 2, 181, 
-    71, 2, 62, 47, 17, 12, 24, 70, 2, 181, 71, 2, 99, 197, 47, 17, 12, 24, 
-    70, 2, 181, 71, 2, 70, 47, 17, 12, 24, 252, 129, 2, 134, 47, 17, 12, 24, 
-    252, 129, 2, 111, 47, 17, 12, 24, 252, 129, 2, 236, 147, 47, 17, 12, 24, 
-    252, 129, 2, 62, 47, 17, 12, 24, 252, 129, 2, 99, 197, 47, 17, 12, 24, 
-    252, 129, 2, 70, 47, 17, 12, 24, 222, 78, 2, 134, 47, 17, 12, 24, 222, 
-    78, 2, 111, 47, 17, 12, 24, 222, 78, 2, 236, 147, 47, 17, 12, 24, 222, 
-    78, 2, 62, 47, 17, 12, 24, 222, 78, 2, 99, 197, 47, 17, 12, 24, 222, 78, 
-    2, 70, 47, 17, 12, 24, 222, 20, 2, 134, 47, 17, 12, 24, 222, 20, 2, 62, 
-    47, 17, 12, 24, 222, 20, 2, 99, 197, 47, 17, 12, 24, 222, 20, 2, 70, 47, 
-    17, 12, 24, 134, 2, 111, 47, 17, 12, 24, 134, 2, 62, 47, 17, 12, 24, 111, 
-    2, 134, 47, 17, 12, 24, 111, 2, 62, 47, 17, 12, 24, 236, 147, 2, 134, 47, 
-    17, 12, 24, 236, 147, 2, 111, 47, 17, 12, 24, 236, 147, 2, 62, 47, 17, 
-    12, 24, 226, 83, 2, 134, 47, 17, 12, 24, 226, 83, 2, 111, 47, 17, 12, 24, 
-    226, 83, 2, 236, 147, 47, 17, 12, 24, 226, 83, 2, 62, 47, 17, 12, 24, 
-    226, 171, 2, 111, 47, 17, 12, 24, 226, 171, 2, 62, 47, 17, 12, 24, 249, 
-    203, 2, 134, 47, 17, 12, 24, 249, 203, 2, 111, 47, 17, 12, 24, 249, 203, 
-    2, 236, 147, 47, 17, 12, 24, 249, 203, 2, 62, 47, 17, 12, 24, 222, 138, 
-    2, 111, 47, 17, 12, 24, 222, 138, 2, 62, 47, 17, 12, 24, 217, 110, 2, 62, 
-    47, 17, 12, 24, 254, 192, 2, 134, 47, 17, 12, 24, 254, 192, 2, 62, 47, 
-    17, 12, 24, 244, 123, 2, 134, 47, 17, 12, 24, 244, 123, 2, 62, 47, 17, 
-    12, 24, 245, 222, 2, 134, 47, 17, 12, 24, 245, 222, 2, 111, 47, 17, 12, 
-    24, 245, 222, 2, 236, 147, 47, 17, 12, 24, 245, 222, 2, 62, 47, 17, 12, 
-    24, 245, 222, 2, 99, 197, 47, 17, 12, 24, 245, 222, 2, 70, 47, 17, 12, 
-    24, 228, 149, 2, 111, 47, 17, 12, 24, 228, 149, 2, 62, 47, 17, 12, 24, 
-    228, 149, 2, 99, 197, 47, 17, 12, 24, 228, 149, 2, 70, 47, 17, 12, 24, 
-    236, 247, 2, 99, 47, 17, 12, 24, 236, 247, 2, 134, 47, 17, 12, 24, 236, 
-    247, 2, 111, 47, 17, 12, 24, 236, 247, 2, 236, 147, 47, 17, 12, 24, 236, 
-    247, 2, 235, 161, 47, 17, 12, 24, 236, 247, 2, 62, 47, 17, 12, 24, 236, 
-    247, 2, 99, 197, 47, 17, 12, 24, 236, 247, 2, 70, 47, 17, 12, 24, 235, 
-    161, 2, 134, 47, 17, 12, 24, 235, 161, 2, 111, 47, 17, 12, 24, 235, 161, 
-    2, 236, 147, 47, 17, 12, 24, 235, 161, 2, 62, 47, 17, 12, 24, 235, 161, 
-    2, 99, 197, 47, 17, 12, 24, 235, 161, 2, 70, 47, 17, 12, 24, 62, 2, 134, 
-    47, 17, 12, 24, 62, 2, 111, 47, 17, 12, 24, 62, 2, 236, 147, 47, 17, 12, 
-    24, 62, 2, 62, 47, 17, 12, 24, 62, 2, 99, 197, 47, 17, 12, 24, 62, 2, 70, 
-    47, 17, 12, 24, 231, 194, 2, 134, 47, 17, 12, 24, 231, 194, 2, 111, 47, 
-    17, 12, 24, 231, 194, 2, 236, 147, 47, 17, 12, 24, 231, 194, 2, 62, 47, 
-    17, 12, 24, 231, 194, 2, 99, 197, 47, 17, 12, 24, 231, 194, 2, 70, 47, 
-    17, 12, 24, 243, 147, 2, 134, 47, 17, 12, 24, 243, 147, 2, 62, 47, 17, 
-    12, 24, 243, 147, 2, 99, 197, 47, 17, 12, 24, 243, 147, 2, 70, 47, 17, 
-    12, 24, 70, 2, 134, 47, 17, 12, 24, 70, 2, 111, 47, 17, 12, 24, 70, 2, 
-    236, 147, 47, 17, 12, 24, 70, 2, 62, 47, 17, 12, 24, 70, 2, 99, 197, 47, 
-    17, 12, 24, 70, 2, 70, 47, 17, 12, 24, 222, 30, 2, 223, 59, 99, 47, 17, 
-    12, 24, 227, 197, 2, 223, 59, 99, 47, 17, 12, 24, 99, 197, 2, 223, 59, 
-    99, 47, 17, 12, 24, 225, 17, 2, 249, 171, 47, 17, 12, 24, 225, 17, 2, 
-    236, 205, 47, 17, 12, 24, 225, 17, 2, 245, 239, 47, 17, 12, 24, 225, 17, 
-    2, 249, 173, 47, 17, 12, 24, 225, 17, 2, 236, 207, 47, 17, 12, 24, 225, 
-    17, 2, 223, 59, 99, 47, 17, 12, 24, 70, 2, 181, 71, 2, 227, 197, 39, 17, 
-    12, 24, 70, 2, 181, 71, 2, 217, 107, 39, 17, 12, 24, 70, 2, 181, 71, 2, 
-    62, 39, 17, 12, 24, 70, 2, 181, 71, 2, 231, 194, 39, 17, 12, 24, 70, 2, 
-    181, 71, 2, 99, 197, 39, 17, 12, 24, 70, 2, 181, 71, 2, 70, 39, 17, 12, 
-    24, 252, 129, 2, 227, 197, 39, 17, 12, 24, 252, 129, 2, 217, 107, 39, 17, 
-    12, 24, 252, 129, 2, 62, 39, 17, 12, 24, 252, 129, 2, 231, 194, 39, 17, 
-    12, 24, 252, 129, 2, 99, 197, 39, 17, 12, 24, 252, 129, 2, 70, 39, 17, 
-    12, 24, 222, 78, 2, 227, 197, 39, 17, 12, 24, 222, 78, 2, 217, 107, 39, 
-    17, 12, 24, 222, 78, 2, 62, 39, 17, 12, 24, 222, 78, 2, 231, 194, 39, 17, 
-    12, 24, 222, 78, 2, 99, 197, 39, 17, 12, 24, 222, 78, 2, 70, 39, 17, 12, 
-    24, 222, 20, 2, 227, 197, 39, 17, 12, 24, 222, 20, 2, 217, 107, 39, 17, 
-    12, 24, 222, 20, 2, 62, 39, 17, 12, 24, 222, 20, 2, 231, 194, 39, 17, 12, 
-    24, 222, 20, 2, 99, 197, 39, 17, 12, 24, 222, 20, 2, 70, 39, 17, 12, 24, 
-    245, 222, 2, 99, 197, 39, 17, 12, 24, 245, 222, 2, 70, 39, 17, 12, 24, 
-    228, 149, 2, 99, 197, 39, 17, 12, 24, 228, 149, 2, 70, 39, 17, 12, 24, 
-    236, 247, 2, 99, 39, 17, 12, 24, 236, 247, 2, 235, 161, 39, 17, 12, 24, 
-    236, 247, 2, 62, 39, 17, 12, 24, 236, 247, 2, 99, 197, 39, 17, 12, 24, 
-    236, 247, 2, 70, 39, 17, 12, 24, 235, 161, 2, 62, 39, 17, 12, 24, 235, 
-    161, 2, 99, 197, 39, 17, 12, 24, 235, 161, 2, 70, 39, 17, 12, 24, 62, 2, 
-    99, 39, 17, 12, 24, 62, 2, 62, 39, 17, 12, 24, 231, 194, 2, 227, 197, 39, 
-    17, 12, 24, 231, 194, 2, 217, 107, 39, 17, 12, 24, 231, 194, 2, 62, 39, 
-    17, 12, 24, 231, 194, 2, 231, 194, 39, 17, 12, 24, 231, 194, 2, 99, 197, 
-    39, 17, 12, 24, 231, 194, 2, 70, 39, 17, 12, 24, 99, 197, 2, 223, 59, 99, 
-    39, 17, 12, 24, 70, 2, 227, 197, 39, 17, 12, 24, 70, 2, 217, 107, 39, 17, 
-    12, 24, 70, 2, 62, 39, 17, 12, 24, 70, 2, 231, 194, 39, 17, 12, 24, 70, 
-    2, 99, 197, 39, 17, 12, 24, 70, 2, 70, 39, 17, 12, 24, 70, 2, 181, 71, 2, 
-    134, 66, 17, 12, 24, 70, 2, 181, 71, 2, 111, 66, 17, 12, 24, 70, 2, 181, 
-    71, 2, 236, 147, 66, 17, 12, 24, 70, 2, 181, 71, 2, 62, 66, 17, 12, 24, 
-    70, 2, 181, 71, 2, 243, 147, 66, 17, 12, 24, 252, 129, 2, 134, 66, 17, 
-    12, 24, 252, 129, 2, 111, 66, 17, 12, 24, 252, 129, 2, 236, 147, 66, 17, 
-    12, 24, 252, 129, 2, 62, 66, 17, 12, 24, 252, 129, 2, 243, 147, 66, 17, 
-    12, 24, 222, 78, 2, 134, 66, 17, 12, 24, 222, 78, 2, 111, 66, 17, 12, 24, 
-    222, 78, 2, 236, 147, 66, 17, 12, 24, 222, 78, 2, 62, 66, 17, 12, 24, 
-    222, 78, 2, 243, 147, 66, 17, 12, 24, 222, 20, 2, 62, 66, 17, 12, 24, 
-    134, 2, 111, 66, 17, 12, 24, 134, 2, 62, 66, 17, 12, 24, 111, 2, 134, 66, 
-    17, 12, 24, 111, 2, 62, 66, 17, 12, 24, 236, 147, 2, 134, 66, 17, 12, 24, 
-    236, 147, 2, 62, 66, 17, 12, 24, 226, 83, 2, 134, 66, 17, 12, 24, 226, 
-    83, 2, 111, 66, 17, 12, 24, 226, 83, 2, 236, 147, 66, 17, 12, 24, 226, 
-    83, 2, 62, 66, 17, 12, 24, 226, 171, 2, 111, 66, 17, 12, 24, 226, 171, 2, 
-    236, 147, 66, 17, 12, 24, 226, 171, 2, 62, 66, 17, 12, 24, 249, 203, 2, 
-    134, 66, 17, 12, 24, 249, 203, 2, 111, 66, 17, 12, 24, 249, 203, 2, 236, 
-    147, 66, 17, 12, 24, 249, 203, 2, 62, 66, 17, 12, 24, 222, 138, 2, 111, 
-    66, 17, 12, 24, 217, 110, 2, 62, 66, 17, 12, 24, 254, 192, 2, 134, 66, 
-    17, 12, 24, 254, 192, 2, 62, 66, 17, 12, 24, 244, 123, 2, 134, 66, 17, 
-    12, 24, 244, 123, 2, 62, 66, 17, 12, 24, 245, 222, 2, 134, 66, 17, 12, 
-    24, 245, 222, 2, 111, 66, 17, 12, 24, 245, 222, 2, 236, 147, 66, 17, 12, 
-    24, 245, 222, 2, 62, 66, 17, 12, 24, 228, 149, 2, 111, 66, 17, 12, 24, 
-    228, 149, 2, 62, 66, 17, 12, 24, 236, 247, 2, 134, 66, 17, 12, 24, 236, 
-    247, 2, 111, 66, 17, 12, 24, 236, 247, 2, 236, 147, 66, 17, 12, 24, 236, 
-    247, 2, 235, 161, 66, 17, 12, 24, 236, 247, 2, 62, 66, 17, 12, 24, 235, 
-    161, 2, 134, 66, 17, 12, 24, 235, 161, 2, 111, 66, 17, 12, 24, 235, 161, 
-    2, 236, 147, 66, 17, 12, 24, 235, 161, 2, 62, 66, 17, 12, 24, 235, 161, 
-    2, 243, 147, 66, 17, 12, 24, 62, 2, 134, 66, 17, 12, 24, 62, 2, 111, 66, 
-    17, 12, 24, 62, 2, 236, 147, 66, 17, 12, 24, 62, 2, 62, 66, 17, 12, 24, 
-    231, 194, 2, 134, 66, 17, 12, 24, 231, 194, 2, 111, 66, 17, 12, 24, 231, 
-    194, 2, 236, 147, 66, 17, 12, 24, 231, 194, 2, 62, 66, 17, 12, 24, 231, 
-    194, 2, 243, 147, 66, 17, 12, 24, 243, 147, 2, 134, 66, 17, 12, 24, 243, 
-    147, 2, 62, 66, 17, 12, 24, 243, 147, 2, 223, 59, 99, 66, 17, 12, 24, 70, 
-    2, 134, 66, 17, 12, 24, 70, 2, 111, 66, 17, 12, 24, 70, 2, 236, 147, 66, 
-    17, 12, 24, 70, 2, 62, 66, 17, 12, 24, 70, 2, 243, 147, 66, 17, 12, 24, 
-    70, 2, 181, 71, 2, 62, 128, 17, 12, 24, 70, 2, 181, 71, 2, 243, 147, 128, 
-    17, 12, 24, 252, 129, 2, 62, 128, 17, 12, 24, 252, 129, 2, 243, 147, 128, 
-    17, 12, 24, 222, 78, 2, 62, 128, 17, 12, 24, 222, 78, 2, 243, 147, 128, 
-    17, 12, 24, 222, 20, 2, 62, 128, 17, 12, 24, 222, 20, 2, 243, 147, 128, 
-    17, 12, 24, 226, 83, 2, 62, 128, 17, 12, 24, 226, 83, 2, 243, 147, 128, 
-    17, 12, 24, 224, 243, 2, 62, 128, 17, 12, 24, 224, 243, 2, 243, 147, 128, 
-    17, 12, 24, 236, 247, 2, 235, 161, 128, 17, 12, 24, 236, 247, 2, 62, 128, 
-    17, 12, 24, 235, 161, 2, 62, 128, 17, 12, 24, 231, 194, 2, 62, 128, 17, 
-    12, 24, 231, 194, 2, 243, 147, 128, 17, 12, 24, 70, 2, 62, 128, 17, 12, 
-    24, 70, 2, 243, 147, 128, 17, 12, 24, 225, 17, 2, 245, 239, 128, 17, 12, 
-    24, 225, 17, 2, 249, 173, 128, 17, 12, 24, 225, 17, 2, 236, 207, 128, 17, 
-    12, 24, 222, 138, 2, 99, 197, 47, 17, 12, 24, 222, 138, 2, 70, 47, 17, 
-    12, 24, 254, 192, 2, 99, 197, 47, 17, 12, 24, 254, 192, 2, 70, 47, 17, 
-    12, 24, 244, 123, 2, 99, 197, 47, 17, 12, 24, 244, 123, 2, 70, 47, 17, 
-    12, 24, 226, 83, 2, 99, 197, 47, 17, 12, 24, 226, 83, 2, 70, 47, 17, 12, 
-    24, 224, 243, 2, 99, 197, 47, 17, 12, 24, 224, 243, 2, 70, 47, 17, 12, 
-    24, 111, 2, 99, 197, 47, 17, 12, 24, 111, 2, 70, 47, 17, 12, 24, 134, 2, 
-    99, 197, 47, 17, 12, 24, 134, 2, 70, 47, 17, 12, 24, 236, 147, 2, 99, 
-    197, 47, 17, 12, 24, 236, 147, 2, 70, 47, 17, 12, 24, 226, 171, 2, 99, 
-    197, 47, 17, 12, 24, 226, 171, 2, 70, 47, 17, 12, 24, 249, 203, 2, 99, 
-    197, 47, 17, 12, 24, 249, 203, 2, 70, 47, 17, 12, 24, 224, 243, 2, 134, 
-    47, 17, 12, 24, 224, 243, 2, 111, 47, 17, 12, 24, 224, 243, 2, 236, 147, 
-    47, 17, 12, 24, 224, 243, 2, 62, 47, 17, 12, 24, 224, 243, 2, 227, 197, 
-    47, 17, 12, 24, 226, 83, 2, 227, 197, 47, 17, 12, 24, 226, 171, 2, 227, 
-    197, 47, 17, 12, 24, 249, 203, 2, 227, 197, 47, 17, 12, 24, 222, 138, 2, 
-    99, 197, 39, 17, 12, 24, 222, 138, 2, 70, 39, 17, 12, 24, 254, 192, 2, 
-    99, 197, 39, 17, 12, 24, 254, 192, 2, 70, 39, 17, 12, 24, 244, 123, 2, 
-    99, 197, 39, 17, 12, 24, 244, 123, 2, 70, 39, 17, 12, 24, 226, 83, 2, 99, 
-    197, 39, 17, 12, 24, 226, 83, 2, 70, 39, 17, 12, 24, 224, 243, 2, 99, 
-    197, 39, 17, 12, 24, 224, 243, 2, 70, 39, 17, 12, 24, 111, 2, 99, 197, 
-    39, 17, 12, 24, 111, 2, 70, 39, 17, 12, 24, 134, 2, 99, 197, 39, 17, 12, 
-    24, 134, 2, 70, 39, 17, 12, 24, 236, 147, 2, 99, 197, 39, 17, 12, 24, 
-    236, 147, 2, 70, 39, 17, 12, 24, 226, 171, 2, 99, 197, 39, 17, 12, 24, 
-    226, 171, 2, 70, 39, 17, 12, 24, 249, 203, 2, 99, 197, 39, 17, 12, 24, 
-    249, 203, 2, 70, 39, 17, 12, 24, 224, 243, 2, 134, 39, 17, 12, 24, 224, 
-    243, 2, 111, 39, 17, 12, 24, 224, 243, 2, 236, 147, 39, 17, 12, 24, 224, 
-    243, 2, 62, 39, 17, 12, 24, 224, 243, 2, 227, 197, 39, 17, 12, 24, 226, 
-    83, 2, 227, 197, 39, 17, 12, 24, 226, 171, 2, 227, 197, 39, 17, 12, 24, 
-    249, 203, 2, 227, 197, 39, 17, 12, 24, 224, 243, 2, 134, 66, 17, 12, 24, 
-    224, 243, 2, 111, 66, 17, 12, 24, 224, 243, 2, 236, 147, 66, 17, 12, 24, 
-    224, 243, 2, 62, 66, 17, 12, 24, 226, 83, 2, 243, 147, 66, 17, 12, 24, 
-    224, 243, 2, 243, 147, 66, 17, 12, 24, 222, 138, 2, 62, 66, 17, 12, 24, 
-    226, 83, 2, 134, 128, 17, 12, 24, 226, 83, 2, 111, 128, 17, 12, 24, 226, 
-    83, 2, 236, 147, 128, 17, 12, 24, 224, 243, 2, 134, 128, 17, 12, 24, 224, 
-    243, 2, 111, 128, 17, 12, 24, 224, 243, 2, 236, 147, 128, 17, 12, 24, 
-    222, 138, 2, 62, 128, 17, 12, 24, 217, 110, 2, 62, 128, 17, 12, 24, 99, 
-    2, 245, 237, 39, 17, 12, 24, 99, 2, 245, 237, 47, 17, 230, 97, 42, 229, 
-    229, 230, 97, 45, 229, 229, 12, 24, 222, 78, 2, 134, 2, 62, 66, 17, 12, 
-    24, 222, 78, 2, 111, 2, 134, 39, 17, 12, 24, 222, 78, 2, 111, 2, 134, 66, 
-    17, 12, 24, 222, 78, 2, 111, 2, 62, 66, 17, 12, 24, 222, 78, 2, 236, 147, 
-    2, 62, 66, 17, 12, 24, 222, 78, 2, 62, 2, 134, 66, 17, 12, 24, 222, 78, 
-    2, 62, 2, 111, 66, 17, 12, 24, 222, 78, 2, 62, 2, 236, 147, 66, 17, 12, 
-    24, 134, 2, 62, 2, 111, 39, 17, 12, 24, 134, 2, 62, 2, 111, 66, 17, 12, 
-    24, 111, 2, 62, 2, 70, 39, 17, 12, 24, 111, 2, 62, 2, 99, 197, 39, 17, 
-    12, 24, 226, 83, 2, 111, 2, 134, 66, 17, 12, 24, 226, 83, 2, 134, 2, 111, 
-    66, 17, 12, 24, 226, 83, 2, 134, 2, 99, 197, 39, 17, 12, 24, 226, 83, 2, 
-    62, 2, 111, 39, 17, 12, 24, 226, 83, 2, 62, 2, 111, 66, 17, 12, 24, 226, 
-    83, 2, 62, 2, 134, 66, 17, 12, 24, 226, 83, 2, 62, 2, 62, 39, 17, 12, 24, 
-    226, 83, 2, 62, 2, 62, 66, 17, 12, 24, 226, 171, 2, 111, 2, 111, 39, 17, 
-    12, 24, 226, 171, 2, 111, 2, 111, 66, 17, 12, 24, 226, 171, 2, 62, 2, 62, 
-    39, 17, 12, 24, 224, 243, 2, 111, 2, 62, 39, 17, 12, 24, 224, 243, 2, 
-    111, 2, 62, 66, 17, 12, 24, 224, 243, 2, 134, 2, 70, 39, 17, 12, 24, 224, 
-    243, 2, 62, 2, 236, 147, 39, 17, 12, 24, 224, 243, 2, 62, 2, 236, 147, 
-    66, 17, 12, 24, 224, 243, 2, 62, 2, 62, 39, 17, 12, 24, 224, 243, 2, 62, 
-    2, 62, 66, 17, 12, 24, 249, 203, 2, 111, 2, 99, 197, 39, 17, 12, 24, 249, 
-    203, 2, 236, 147, 2, 62, 39, 17, 12, 24, 249, 203, 2, 236, 147, 2, 62, 
-    66, 17, 12, 24, 222, 138, 2, 62, 2, 111, 39, 17, 12, 24, 222, 138, 2, 62, 
-    2, 111, 66, 17, 12, 24, 222, 138, 2, 62, 2, 62, 66, 17, 12, 24, 222, 138, 
-    2, 62, 2, 70, 39, 17, 12, 24, 254, 192, 2, 134, 2, 62, 39, 17, 12, 24, 
-    254, 192, 2, 62, 2, 62, 39, 17, 12, 24, 254, 192, 2, 62, 2, 62, 66, 17, 
-    12, 24, 254, 192, 2, 62, 2, 99, 197, 39, 17, 12, 24, 244, 123, 2, 62, 2, 
-    62, 39, 17, 12, 24, 244, 123, 2, 62, 2, 70, 39, 17, 12, 24, 244, 123, 2, 
-    62, 2, 99, 197, 39, 17, 12, 24, 245, 222, 2, 236, 147, 2, 62, 39, 17, 12, 
-    24, 245, 222, 2, 236, 147, 2, 62, 66, 17, 12, 24, 228, 149, 2, 62, 2, 
-    111, 39, 17, 12, 24, 228, 149, 2, 62, 2, 62, 39, 17, 12, 24, 235, 161, 2, 
-    111, 2, 62, 39, 17, 12, 24, 235, 161, 2, 111, 2, 70, 39, 17, 12, 24, 235, 
-    161, 2, 111, 2, 99, 197, 39, 17, 12, 24, 235, 161, 2, 134, 2, 134, 66, 
-    17, 12, 24, 235, 161, 2, 134, 2, 134, 39, 17, 12, 24, 235, 161, 2, 236, 
-    147, 2, 62, 39, 17, 12, 24, 235, 161, 2, 236, 147, 2, 62, 66, 17, 12, 24, 
-    235, 161, 2, 62, 2, 111, 39, 17, 12, 24, 235, 161, 2, 62, 2, 111, 66, 17, 
-    12, 24, 62, 2, 111, 2, 134, 66, 17, 12, 24, 62, 2, 111, 2, 62, 66, 17, 
-    12, 24, 62, 2, 111, 2, 70, 39, 17, 12, 24, 62, 2, 134, 2, 111, 66, 17, 
-    12, 24, 62, 2, 134, 2, 62, 66, 17, 12, 24, 62, 2, 236, 147, 2, 134, 66, 
-    17, 12, 24, 62, 2, 236, 147, 2, 62, 66, 17, 12, 24, 62, 2, 134, 2, 236, 
-    147, 66, 17, 12, 24, 243, 147, 2, 62, 2, 134, 66, 17, 12, 24, 243, 147, 
-    2, 62, 2, 62, 66, 17, 12, 24, 231, 194, 2, 111, 2, 62, 66, 17, 12, 24, 
-    231, 194, 2, 111, 2, 99, 197, 39, 17, 12, 24, 231, 194, 2, 134, 2, 62, 
-    39, 17, 12, 24, 231, 194, 2, 134, 2, 62, 66, 17, 12, 24, 231, 194, 2, 
-    134, 2, 99, 197, 39, 17, 12, 24, 231, 194, 2, 62, 2, 70, 39, 17, 12, 24, 
-    231, 194, 2, 62, 2, 99, 197, 39, 17, 12, 24, 70, 2, 62, 2, 62, 39, 17, 
-    12, 24, 70, 2, 62, 2, 62, 66, 17, 12, 24, 252, 129, 2, 236, 147, 2, 70, 
-    39, 17, 12, 24, 222, 78, 2, 134, 2, 70, 39, 17, 12, 24, 222, 78, 2, 134, 
-    2, 99, 197, 39, 17, 12, 24, 222, 78, 2, 236, 147, 2, 70, 39, 17, 12, 24, 
-    222, 78, 2, 236, 147, 2, 99, 197, 39, 17, 12, 24, 222, 78, 2, 62, 2, 70, 
-    39, 17, 12, 24, 222, 78, 2, 62, 2, 99, 197, 39, 17, 12, 24, 134, 2, 62, 
-    2, 70, 39, 17, 12, 24, 134, 2, 111, 2, 99, 197, 39, 17, 12, 24, 134, 2, 
-    62, 2, 99, 197, 39, 17, 12, 24, 226, 83, 2, 236, 147, 2, 99, 197, 39, 17, 
-    12, 24, 226, 171, 2, 111, 2, 70, 39, 17, 12, 24, 224, 243, 2, 111, 2, 70, 
-    39, 17, 12, 24, 249, 203, 2, 111, 2, 70, 39, 17, 12, 24, 235, 161, 2, 
-    134, 2, 70, 39, 17, 12, 24, 235, 161, 2, 62, 2, 70, 39, 17, 12, 24, 70, 
-    2, 111, 2, 70, 39, 17, 12, 24, 70, 2, 134, 2, 70, 39, 17, 12, 24, 70, 2, 
-    62, 2, 70, 39, 17, 12, 24, 62, 2, 62, 2, 70, 39, 17, 12, 24, 228, 149, 2, 
-    62, 2, 70, 39, 17, 12, 24, 231, 194, 2, 111, 2, 70, 39, 17, 12, 24, 228, 
-    149, 2, 62, 2, 111, 66, 17, 12, 24, 235, 161, 2, 111, 2, 62, 66, 17, 12, 
-    24, 254, 192, 2, 62, 2, 70, 39, 17, 12, 24, 236, 247, 2, 62, 2, 70, 39, 
-    17, 12, 24, 231, 194, 2, 134, 2, 111, 66, 17, 12, 24, 62, 2, 236, 147, 2, 
-    70, 39, 17, 12, 24, 235, 161, 2, 134, 2, 62, 66, 17, 12, 24, 236, 247, 2, 
-    62, 2, 62, 39, 17, 12, 24, 235, 161, 2, 134, 2, 62, 39, 17, 12, 24, 231, 
-    194, 2, 134, 2, 111, 39, 17, 12, 24, 134, 2, 111, 2, 70, 39, 17, 12, 24, 
-    111, 2, 134, 2, 70, 39, 17, 12, 24, 62, 2, 134, 2, 70, 39, 17, 12, 24, 
-    245, 222, 2, 62, 2, 70, 39, 17, 12, 24, 252, 129, 2, 111, 2, 70, 39, 17, 
-    12, 24, 236, 247, 2, 62, 2, 62, 66, 17, 12, 24, 254, 192, 2, 134, 2, 62, 
-    66, 17, 12, 24, 226, 171, 2, 62, 2, 62, 66, 17, 12, 24, 226, 83, 2, 236, 
-    147, 2, 70, 39, 17, 12, 24, 231, 194, 2, 134, 2, 70, 39, 17, 12, 24, 226, 
-    153, 220, 32, 254, 14, 236, 35, 223, 137, 5, 47, 17, 12, 24, 228, 145, 
-    220, 32, 254, 14, 236, 35, 223, 137, 5, 47, 17, 12, 24, 254, 156, 47, 17, 
-    12, 24, 254, 179, 47, 17, 12, 24, 233, 130, 47, 17, 12, 24, 226, 154, 47, 
-    17, 12, 24, 227, 230, 47, 17, 12, 24, 254, 170, 47, 17, 12, 24, 218, 249, 
-    47, 17, 12, 24, 226, 153, 47, 17, 12, 24, 226, 152, 254, 170, 218, 248, 
-    12, 24, 237, 120, 227, 146, 55, 12, 24, 252, 61, 254, 65, 254, 66, 41, 
-    226, 73, 41, 225, 218, 41, 225, 150, 41, 225, 139, 41, 225, 128, 41, 225, 
-    117, 41, 225, 106, 41, 225, 95, 41, 225, 84, 41, 226, 72, 41, 226, 61, 
-    41, 226, 50, 41, 226, 39, 41, 226, 28, 41, 226, 17, 41, 226, 6, 228, 238, 
-    245, 124, 35, 69, 250, 168, 228, 238, 245, 124, 35, 69, 98, 250, 168, 
-    228, 238, 245, 124, 35, 69, 98, 245, 90, 223, 136, 228, 238, 245, 124, 
-    35, 69, 250, 175, 228, 238, 245, 124, 35, 69, 225, 67, 228, 238, 245, 
-    124, 35, 69, 246, 95, 78, 228, 238, 245, 124, 35, 69, 228, 82, 78, 228, 
-    238, 245, 124, 35, 69, 42, 67, 235, 91, 115, 228, 238, 245, 124, 35, 69, 
-    45, 67, 235, 91, 252, 16, 228, 238, 245, 124, 35, 69, 186, 246, 208, 36, 
-    24, 42, 243, 194, 36, 24, 45, 243, 194, 36, 51, 221, 180, 42, 243, 194, 
-    36, 51, 221, 180, 45, 243, 194, 36, 234, 116, 42, 243, 194, 36, 234, 116, 
-    45, 243, 194, 36, 250, 151, 234, 115, 228, 238, 245, 124, 35, 69, 124, 
-    61, 235, 121, 228, 238, 245, 124, 35, 69, 246, 206, 249, 146, 228, 238, 
-    245, 124, 35, 69, 246, 198, 249, 146, 228, 238, 245, 124, 35, 69, 109, 
-    235, 43, 228, 238, 245, 124, 35, 69, 218, 235, 109, 235, 43, 228, 238, 
-    245, 124, 35, 69, 42, 229, 229, 228, 238, 245, 124, 35, 69, 45, 229, 229, 
-    228, 238, 245, 124, 35, 69, 42, 250, 79, 115, 228, 238, 245, 124, 35, 69, 
-    45, 250, 79, 115, 228, 238, 245, 124, 35, 69, 42, 221, 114, 224, 236, 
-    115, 228, 238, 245, 124, 35, 69, 45, 221, 114, 224, 236, 115, 228, 238, 
-    245, 124, 35, 69, 42, 84, 235, 91, 115, 228, 238, 245, 124, 35, 69, 45, 
-    84, 235, 91, 115, 228, 238, 245, 124, 35, 69, 42, 51, 254, 120, 115, 228, 
-    238, 245, 124, 35, 69, 45, 51, 254, 120, 115, 228, 238, 245, 124, 35, 69, 
-    42, 254, 120, 115, 228, 238, 245, 124, 35, 69, 45, 254, 120, 115, 228, 
-    238, 245, 124, 35, 69, 42, 250, 124, 115, 228, 238, 245, 124, 35, 69, 45, 
-    250, 124, 115, 228, 238, 245, 124, 35, 69, 42, 67, 250, 124, 115, 228, 
-    238, 245, 124, 35, 69, 45, 67, 250, 124, 115, 225, 49, 248, 145, 67, 225, 
-    49, 248, 145, 228, 238, 245, 124, 35, 69, 42, 40, 115, 228, 238, 245, 
-    124, 35, 69, 45, 40, 115, 249, 145, 230, 73, 251, 82, 230, 73, 218, 235, 
-    230, 73, 51, 218, 235, 230, 73, 249, 145, 109, 235, 43, 251, 82, 109, 
-    235, 43, 218, 235, 109, 235, 43, 3, 250, 168, 3, 98, 250, 168, 3, 245, 
-    90, 223, 136, 3, 225, 67, 3, 250, 175, 3, 228, 82, 78, 3, 246, 95, 78, 3, 
-    246, 206, 249, 146, 3, 42, 229, 229, 3, 45, 229, 229, 3, 42, 250, 79, 
-    115, 3, 45, 250, 79, 115, 3, 42, 221, 114, 224, 236, 115, 3, 45, 221, 
-    114, 224, 236, 115, 3, 54, 55, 3, 254, 134, 3, 253, 251, 3, 88, 55, 3, 
-    242, 120, 3, 235, 87, 55, 3, 244, 30, 55, 3, 246, 154, 55, 3, 227, 160, 
-    224, 17, 3, 248, 155, 55, 3, 229, 169, 55, 3, 250, 167, 253, 244, 12, 
-    245, 237, 47, 17, 12, 222, 108, 2, 245, 237, 50, 12, 249, 171, 47, 17, 
-    12, 222, 136, 245, 107, 12, 236, 205, 47, 17, 12, 245, 239, 47, 17, 12, 
-    245, 239, 128, 17, 12, 249, 173, 47, 17, 12, 249, 173, 128, 17, 12, 236, 
-    207, 47, 17, 12, 236, 207, 128, 17, 12, 225, 17, 47, 17, 12, 225, 17, 
-    128, 17, 12, 223, 76, 47, 17, 12, 223, 76, 128, 17, 12, 1, 181, 47, 17, 
-    12, 1, 99, 2, 234, 111, 71, 47, 17, 12, 1, 99, 2, 234, 111, 71, 39, 17, 
-    12, 1, 99, 2, 181, 71, 47, 17, 12, 1, 99, 2, 181, 71, 39, 17, 12, 1, 218, 
-    234, 2, 181, 71, 47, 17, 12, 1, 218, 234, 2, 181, 71, 39, 17, 12, 1, 99, 
-    2, 181, 252, 118, 47, 17, 12, 1, 99, 2, 181, 252, 118, 39, 17, 12, 1, 70, 
-    2, 181, 71, 47, 17, 12, 1, 70, 2, 181, 71, 39, 17, 12, 1, 70, 2, 181, 71, 
-    66, 17, 12, 1, 70, 2, 181, 71, 128, 17, 12, 1, 99, 47, 17, 12, 1, 99, 39, 
-    17, 12, 1, 252, 129, 47, 17, 12, 1, 252, 129, 39, 17, 12, 1, 252, 129, 
-    66, 17, 12, 1, 252, 129, 128, 17, 12, 1, 222, 78, 234, 73, 47, 17, 12, 1, 
-    222, 78, 234, 73, 39, 17, 12, 1, 222, 78, 47, 17, 12, 1, 222, 78, 39, 17, 
-    12, 1, 222, 78, 66, 17, 12, 1, 222, 78, 128, 17, 12, 1, 222, 20, 47, 17, 
-    12, 1, 222, 20, 39, 17, 12, 1, 222, 20, 66, 17, 12, 1, 222, 20, 128, 17, 
-    12, 1, 134, 47, 17, 12, 1, 134, 39, 17, 12, 1, 134, 66, 17, 12, 1, 134, 
-    128, 17, 12, 1, 111, 47, 17, 12, 1, 111, 39, 17, 12, 1, 111, 66, 17, 12, 
-    1, 111, 128, 17, 12, 1, 236, 147, 47, 17, 12, 1, 236, 147, 39, 17, 12, 1, 
-    236, 147, 66, 17, 12, 1, 236, 147, 128, 17, 12, 1, 249, 184, 47, 17, 12, 
-    1, 249, 184, 39, 17, 12, 1, 222, 30, 47, 17, 12, 1, 222, 30, 39, 17, 12, 
-    1, 227, 197, 47, 17, 12, 1, 227, 197, 39, 17, 12, 1, 217, 107, 47, 17, 
-    12, 1, 217, 107, 39, 17, 12, 1, 226, 83, 47, 17, 12, 1, 226, 83, 39, 17, 
-    12, 1, 226, 83, 66, 17, 12, 1, 226, 83, 128, 17, 12, 1, 224, 243, 47, 17, 
-    12, 1, 224, 243, 39, 17, 12, 1, 224, 243, 66, 17, 12, 1, 224, 243, 128, 
-    17, 12, 1, 226, 171, 47, 17, 12, 1, 226, 171, 39, 17, 12, 1, 226, 171, 
-    66, 17, 12, 1, 226, 171, 128, 17, 12, 1, 249, 203, 47, 17, 12, 1, 249, 
-    203, 39, 17, 12, 1, 249, 203, 66, 17, 12, 1, 249, 203, 128, 17, 12, 1, 
-    222, 138, 47, 17, 12, 1, 222, 138, 39, 17, 12, 1, 222, 138, 66, 17, 12, 
-    1, 222, 138, 128, 17, 12, 1, 217, 110, 47, 17, 12, 1, 217, 110, 39, 17, 
-    12, 1, 217, 110, 66, 17, 12, 1, 217, 110, 128, 17, 12, 1, 254, 192, 47, 
-    17, 12, 1, 254, 192, 39, 17, 12, 1, 254, 192, 66, 17, 12, 1, 254, 192, 
-    128, 17, 12, 1, 244, 123, 47, 17, 12, 1, 244, 123, 39, 17, 12, 1, 244, 
-    123, 66, 17, 12, 1, 244, 123, 128, 17, 12, 1, 245, 222, 47, 17, 12, 1, 
-    245, 222, 39, 17, 12, 1, 245, 222, 66, 17, 12, 1, 245, 222, 128, 17, 12, 
-    1, 228, 149, 47, 17, 12, 1, 228, 149, 39, 17, 12, 1, 228, 149, 66, 17, 
-    12, 1, 228, 149, 128, 17, 12, 1, 236, 247, 47, 17, 12, 1, 236, 247, 39, 
-    17, 12, 1, 236, 247, 66, 17, 12, 1, 236, 247, 128, 17, 12, 1, 235, 161, 
-    47, 17, 12, 1, 235, 161, 39, 17, 12, 1, 235, 161, 66, 17, 12, 1, 235, 
-    161, 128, 17, 12, 1, 62, 47, 17, 12, 1, 62, 39, 17, 12, 1, 62, 66, 17, 
-    12, 1, 62, 128, 17, 12, 1, 231, 194, 47, 17, 12, 1, 231, 194, 39, 17, 12, 
-    1, 231, 194, 66, 17, 12, 1, 231, 194, 128, 17, 12, 1, 243, 147, 47, 17, 
-    12, 1, 243, 147, 39, 17, 12, 1, 243, 147, 66, 17, 12, 1, 243, 147, 128, 
-    17, 12, 1, 218, 234, 47, 17, 12, 1, 218, 234, 39, 17, 12, 1, 99, 197, 47, 
-    17, 12, 1, 99, 197, 39, 17, 12, 1, 70, 47, 17, 12, 1, 70, 39, 17, 12, 1, 
-    70, 66, 17, 12, 1, 70, 128, 17, 12, 24, 235, 161, 2, 99, 2, 234, 111, 71, 
-    47, 17, 12, 24, 235, 161, 2, 99, 2, 234, 111, 71, 39, 17, 12, 24, 235, 
-    161, 2, 99, 2, 181, 71, 47, 17, 12, 24, 235, 161, 2, 99, 2, 181, 71, 39, 
-    17, 12, 24, 235, 161, 2, 99, 2, 181, 252, 118, 47, 17, 12, 24, 235, 161, 
-    2, 99, 2, 181, 252, 118, 39, 17, 12, 24, 235, 161, 2, 99, 47, 17, 12, 24, 
-    235, 161, 2, 99, 39, 17, 217, 85, 218, 199, 231, 203, 223, 254, 110, 246, 
-    95, 78, 110, 228, 69, 78, 110, 54, 55, 110, 248, 155, 55, 110, 229, 169, 
-    55, 110, 254, 134, 110, 254, 79, 110, 42, 229, 229, 110, 45, 229, 229, 
-    110, 253, 251, 110, 88, 55, 110, 250, 168, 110, 242, 120, 110, 245, 90, 
-    223, 136, 110, 224, 17, 110, 20, 217, 84, 110, 20, 107, 110, 20, 103, 
-    110, 20, 160, 110, 20, 154, 110, 20, 174, 110, 20, 182, 110, 20, 191, 
-    110, 20, 185, 110, 20, 190, 110, 250, 175, 110, 225, 67, 110, 235, 87, 
-    55, 110, 246, 154, 55, 110, 244, 30, 55, 110, 228, 82, 78, 110, 250, 167, 
-    253, 244, 110, 7, 6, 1, 60, 110, 7, 6, 1, 253, 204, 110, 7, 6, 1, 251, 
-    202, 110, 7, 6, 1, 250, 46, 110, 7, 6, 1, 73, 110, 7, 6, 1, 246, 74, 110, 
-    7, 6, 1, 245, 67, 110, 7, 6, 1, 243, 225, 110, 7, 6, 1, 72, 110, 7, 6, 1, 
-    237, 126, 110, 7, 6, 1, 237, 17, 110, 7, 6, 1, 153, 110, 7, 6, 1, 189, 
-    110, 7, 6, 1, 207, 110, 7, 6, 1, 74, 110, 7, 6, 1, 230, 59, 110, 7, 6, 1, 
-    228, 163, 110, 7, 6, 1, 152, 110, 7, 6, 1, 198, 110, 7, 6, 1, 222, 201, 
-    110, 7, 6, 1, 68, 110, 7, 6, 1, 216, 216, 110, 7, 6, 1, 219, 40, 110, 7, 
-    6, 1, 218, 151, 110, 7, 6, 1, 218, 90, 110, 7, 6, 1, 217, 157, 110, 42, 
-    40, 115, 110, 227, 160, 224, 17, 110, 45, 40, 115, 110, 250, 217, 255, 0, 
-    110, 109, 235, 43, 110, 244, 37, 255, 0, 110, 7, 3, 1, 60, 110, 7, 3, 1, 
-    253, 204, 110, 7, 3, 1, 251, 202, 110, 7, 3, 1, 250, 46, 110, 7, 3, 1, 
-    73, 110, 7, 3, 1, 246, 74, 110, 7, 3, 1, 245, 67, 110, 7, 3, 1, 243, 225, 
-    110, 7, 3, 1, 72, 110, 7, 3, 1, 237, 126, 110, 7, 3, 1, 237, 17, 110, 7, 
-    3, 1, 153, 110, 7, 3, 1, 189, 110, 7, 3, 1, 207, 110, 7, 3, 1, 74, 110, 
-    7, 3, 1, 230, 59, 110, 7, 3, 1, 228, 163, 110, 7, 3, 1, 152, 110, 7, 3, 
-    1, 198, 110, 7, 3, 1, 222, 201, 110, 7, 3, 1, 68, 110, 7, 3, 1, 216, 216, 
-    110, 7, 3, 1, 219, 40, 110, 7, 3, 1, 218, 151, 110, 7, 3, 1, 218, 90, 
-    110, 7, 3, 1, 217, 157, 110, 42, 250, 79, 115, 110, 69, 235, 43, 110, 45, 
-    250, 79, 115, 110, 221, 179, 110, 42, 67, 229, 229, 110, 45, 67, 229, 
-    229, 93, 98, 245, 90, 223, 136, 93, 42, 250, 124, 115, 93, 45, 250, 124, 
-    115, 93, 98, 250, 168, 93, 52, 233, 193, 248, 145, 93, 52, 1, 218, 187, 
-    93, 52, 1, 3, 60, 93, 52, 1, 3, 72, 93, 52, 1, 3, 68, 93, 52, 1, 3, 73, 
-    93, 52, 1, 3, 74, 93, 52, 1, 3, 184, 93, 52, 1, 3, 217, 200, 93, 52, 1, 
-    3, 217, 231, 93, 52, 1, 3, 221, 0, 93, 236, 202, 228, 223, 224, 9, 78, 
-    93, 52, 1, 60, 93, 52, 1, 72, 93, 52, 1, 68, 93, 52, 1, 73, 93, 52, 1, 
-    74, 93, 52, 1, 175, 93, 52, 1, 236, 113, 93, 52, 1, 236, 7, 93, 52, 1, 
-    236, 184, 93, 52, 1, 236, 57, 93, 52, 1, 226, 177, 93, 52, 1, 224, 140, 
-    93, 52, 1, 223, 103, 93, 52, 1, 226, 94, 93, 52, 1, 224, 26, 93, 52, 1, 
-    222, 155, 93, 52, 1, 221, 205, 93, 52, 1, 221, 0, 93, 52, 1, 222, 87, 93, 
-    52, 1, 101, 93, 52, 1, 208, 93, 52, 1, 232, 62, 93, 52, 1, 231, 144, 93, 
-    52, 1, 232, 141, 93, 52, 1, 231, 204, 93, 52, 1, 155, 93, 52, 1, 243, 
-    112, 93, 52, 1, 242, 173, 93, 52, 1, 243, 162, 93, 52, 1, 243, 4, 93, 52, 
-    1, 196, 93, 52, 1, 233, 196, 93, 52, 1, 233, 99, 93, 52, 1, 234, 25, 93, 
-    52, 1, 233, 136, 93, 52, 1, 184, 93, 52, 1, 217, 200, 93, 52, 1, 217, 
-    231, 93, 52, 1, 203, 93, 52, 1, 227, 147, 93, 52, 1, 227, 22, 93, 52, 1, 
-    227, 216, 93, 52, 1, 227, 75, 93, 52, 1, 219, 7, 93, 52, 1, 207, 93, 52, 
-    219, 70, 224, 9, 78, 93, 52, 225, 72, 224, 9, 78, 93, 22, 245, 185, 93, 
-    22, 1, 236, 86, 93, 22, 1, 223, 211, 93, 22, 1, 236, 79, 93, 22, 1, 232, 
-    55, 93, 22, 1, 232, 53, 93, 22, 1, 232, 52, 93, 22, 1, 221, 192, 93, 22, 
-    1, 223, 200, 93, 22, 1, 227, 140, 93, 22, 1, 227, 135, 93, 22, 1, 227, 
-    132, 93, 22, 1, 227, 125, 93, 22, 1, 227, 120, 93, 22, 1, 227, 115, 93, 
-    22, 1, 227, 126, 93, 22, 1, 227, 138, 93, 22, 1, 233, 187, 93, 22, 1, 
-    229, 99, 93, 22, 1, 223, 208, 93, 22, 1, 229, 88, 93, 22, 1, 224, 104, 
-    93, 22, 1, 223, 205, 93, 22, 1, 238, 22, 93, 22, 1, 250, 230, 93, 22, 1, 
-    223, 215, 93, 22, 1, 251, 29, 93, 22, 1, 236, 128, 93, 22, 1, 222, 0, 93, 
-    22, 1, 229, 127, 93, 22, 1, 243, 106, 93, 22, 1, 60, 93, 22, 1, 254, 234, 
-    93, 22, 1, 184, 93, 22, 1, 218, 65, 93, 22, 1, 246, 168, 93, 22, 1, 73, 
-    93, 22, 1, 218, 16, 93, 22, 1, 218, 25, 93, 22, 1, 74, 93, 22, 1, 219, 7, 
-    93, 22, 1, 219, 4, 93, 22, 1, 230, 167, 93, 22, 1, 217, 231, 93, 22, 1, 
-    68, 93, 22, 1, 218, 219, 93, 22, 1, 218, 227, 93, 22, 1, 218, 204, 93, 
-    22, 1, 217, 200, 93, 22, 1, 246, 115, 93, 22, 1, 217, 250, 93, 22, 1, 72, 
-    110, 251, 86, 55, 110, 229, 11, 55, 110, 212, 55, 110, 234, 115, 110, 
-    252, 1, 135, 110, 218, 19, 55, 110, 218, 182, 55, 93, 245, 122, 170, 219, 
-    152, 93, 127, 65, 93, 220, 53, 65, 93, 90, 65, 93, 247, 130, 65, 93, 84, 
-    223, 227, 93, 67, 250, 221, 237, 180, 254, 112, 254, 128, 237, 180, 254, 
-    112, 225, 54, 237, 180, 254, 112, 222, 56, 230, 178, 227, 179, 251, 55, 
-    227, 179, 251, 55, 57, 49, 4, 253, 188, 60, 57, 49, 4, 253, 157, 73, 57, 
-    49, 4, 253, 166, 72, 57, 49, 4, 253, 134, 74, 57, 49, 4, 253, 184, 68, 
-    57, 49, 4, 253, 203, 249, 207, 57, 49, 4, 253, 150, 249, 92, 57, 49, 4, 
-    253, 190, 249, 15, 57, 49, 4, 253, 180, 248, 167, 57, 49, 4, 253, 144, 
-    247, 111, 57, 49, 4, 253, 138, 237, 123, 57, 49, 4, 253, 149, 237, 114, 
-    57, 49, 4, 253, 159, 237, 59, 57, 49, 4, 253, 130, 237, 43, 57, 49, 4, 
-    253, 118, 175, 57, 49, 4, 253, 151, 236, 184, 57, 49, 4, 253, 128, 236, 
-    113, 57, 49, 4, 253, 125, 236, 57, 57, 49, 4, 253, 114, 236, 7, 57, 49, 
-    4, 253, 115, 196, 57, 49, 4, 253, 181, 234, 25, 57, 49, 4, 253, 122, 233, 
-    196, 57, 49, 4, 253, 179, 233, 136, 57, 49, 4, 253, 171, 233, 99, 57, 49, 
-    4, 253, 192, 208, 57, 49, 4, 253, 170, 232, 141, 57, 49, 4, 253, 164, 
-    232, 62, 57, 49, 4, 253, 143, 231, 204, 57, 49, 4, 253, 140, 231, 144, 
-    57, 49, 4, 253, 199, 187, 57, 49, 4, 253, 123, 229, 198, 57, 49, 4, 253, 
-    156, 229, 108, 57, 49, 4, 253, 183, 229, 37, 57, 49, 4, 253, 145, 228, 
-    202, 57, 49, 4, 253, 178, 228, 155, 57, 49, 4, 253, 117, 228, 136, 57, 
-    49, 4, 253, 173, 228, 121, 57, 49, 4, 253, 162, 228, 110, 57, 49, 4, 253, 
-    135, 203, 57, 49, 4, 253, 167, 227, 216, 57, 49, 4, 253, 142, 227, 147, 
-    57, 49, 4, 253, 201, 227, 75, 57, 49, 4, 253, 168, 227, 22, 57, 49, 4, 
-    253, 163, 226, 177, 57, 49, 4, 253, 186, 226, 94, 57, 49, 4, 253, 154, 
-    224, 140, 57, 49, 4, 253, 182, 224, 26, 57, 49, 4, 253, 137, 223, 103, 
-    57, 49, 4, 253, 136, 222, 155, 57, 49, 4, 253, 197, 222, 87, 57, 49, 4, 
-    253, 158, 221, 205, 57, 49, 4, 253, 195, 101, 57, 49, 4, 253, 126, 221, 
-    0, 57, 49, 4, 253, 141, 219, 7, 57, 49, 4, 253, 120, 218, 227, 57, 49, 4, 
-    253, 155, 218, 204, 57, 49, 4, 253, 153, 218, 187, 57, 49, 4, 253, 177, 
-    217, 114, 57, 49, 4, 253, 121, 217, 92, 57, 49, 4, 253, 174, 217, 21, 57, 
-    49, 4, 253, 169, 255, 60, 57, 49, 4, 253, 152, 255, 59, 57, 49, 4, 253, 
-    111, 253, 232, 57, 49, 4, 253, 124, 247, 82, 57, 49, 4, 253, 107, 247, 
-    81, 57, 49, 4, 253, 147, 231, 85, 57, 49, 4, 253, 165, 228, 201, 57, 49, 
-    4, 253, 133, 228, 204, 57, 49, 4, 253, 119, 228, 2, 57, 49, 4, 253, 161, 
-    228, 1, 57, 49, 4, 253, 127, 227, 74, 57, 49, 4, 253, 129, 222, 153, 57, 
-    49, 4, 253, 109, 220, 223, 57, 49, 4, 253, 106, 103, 57, 49, 16, 253, 
-    176, 57, 49, 16, 253, 175, 57, 49, 16, 253, 172, 57, 49, 16, 253, 160, 
-    57, 49, 16, 253, 148, 57, 49, 16, 253, 146, 57, 49, 16, 253, 139, 57, 49, 
-    16, 253, 132, 57, 49, 16, 253, 131, 57, 49, 16, 253, 116, 57, 49, 16, 
-    253, 113, 57, 49, 16, 253, 112, 57, 49, 16, 253, 110, 57, 49, 16, 253, 
-    108, 57, 49, 97, 253, 105, 234, 86, 57, 49, 97, 253, 104, 218, 183, 57, 
-    49, 97, 253, 103, 249, 80, 57, 49, 97, 253, 102, 246, 151, 57, 49, 97, 
-    253, 101, 234, 68, 57, 49, 97, 253, 100, 223, 162, 57, 49, 97, 253, 99, 
-    246, 100, 57, 49, 97, 253, 98, 227, 239, 57, 49, 97, 253, 97, 224, 245, 
-    57, 49, 97, 253, 96, 243, 161, 57, 49, 97, 253, 95, 224, 4, 57, 49, 97, 
-    253, 94, 252, 39, 57, 49, 97, 253, 93, 250, 110, 57, 49, 97, 253, 92, 
-    251, 243, 57, 49, 97, 253, 91, 218, 212, 57, 49, 97, 253, 90, 252, 198, 
-    57, 49, 97, 253, 89, 230, 147, 57, 49, 97, 253, 88, 223, 244, 57, 49, 97, 
-    253, 87, 250, 54, 57, 49, 233, 125, 253, 86, 236, 223, 57, 49, 233, 125, 
-    253, 85, 236, 231, 57, 49, 97, 253, 84, 230, 157, 57, 49, 97, 253, 83, 
-    218, 192, 57, 49, 97, 253, 82, 57, 49, 233, 125, 253, 81, 254, 44, 57, 
-    49, 233, 125, 253, 80, 233, 247, 57, 49, 97, 253, 79, 252, 0, 57, 49, 97, 
-    253, 78, 244, 62, 57, 49, 97, 253, 77, 57, 49, 97, 253, 76, 218, 177, 57, 
-    49, 97, 253, 75, 57, 49, 97, 253, 74, 57, 49, 97, 253, 73, 242, 189, 57, 
-    49, 97, 253, 72, 57, 49, 97, 253, 71, 57, 49, 97, 253, 70, 57, 49, 233, 
-    125, 253, 68, 220, 235, 57, 49, 97, 253, 67, 57, 49, 97, 253, 66, 57, 49, 
-    97, 253, 65, 250, 192, 57, 49, 97, 253, 64, 57, 49, 97, 253, 63, 57, 49, 
-    97, 253, 62, 244, 218, 57, 49, 97, 253, 61, 254, 31, 57, 49, 97, 253, 60, 
-    57, 49, 97, 253, 59, 57, 49, 97, 253, 58, 57, 49, 97, 253, 57, 57, 49, 
-    97, 253, 56, 57, 49, 97, 253, 55, 57, 49, 97, 253, 54, 57, 49, 97, 253, 
-    53, 57, 49, 97, 253, 52, 57, 49, 97, 253, 51, 233, 120, 57, 49, 97, 253, 
-    50, 57, 49, 97, 253, 49, 221, 98, 57, 49, 97, 253, 48, 57, 49, 97, 253, 
-    47, 57, 49, 97, 253, 46, 57, 49, 97, 253, 45, 57, 49, 97, 253, 44, 57, 
-    49, 97, 253, 43, 57, 49, 97, 253, 42, 57, 49, 97, 253, 41, 57, 49, 97, 
-    253, 40, 57, 49, 97, 253, 39, 57, 49, 97, 253, 38, 57, 49, 97, 253, 37, 
-    243, 140, 57, 49, 97, 253, 16, 245, 131, 57, 49, 97, 253, 13, 252, 182, 
-    57, 49, 97, 253, 8, 223, 249, 57, 49, 97, 253, 7, 65, 57, 49, 97, 253, 6, 
-    57, 49, 97, 253, 5, 223, 25, 57, 49, 97, 253, 4, 57, 49, 97, 253, 3, 57, 
-    49, 97, 253, 2, 218, 208, 251, 52, 57, 49, 97, 253, 1, 251, 52, 57, 49, 
-    97, 253, 0, 251, 53, 245, 105, 57, 49, 97, 252, 255, 218, 210, 57, 49, 
-    97, 252, 254, 57, 49, 97, 252, 253, 57, 49, 233, 125, 252, 252, 248, 211, 
-    57, 49, 97, 252, 251, 57, 49, 97, 252, 250, 57, 49, 97, 252, 248, 57, 49, 
-    97, 252, 247, 57, 49, 97, 252, 246, 57, 49, 97, 252, 245, 249, 149, 57, 
-    49, 97, 252, 244, 57, 49, 97, 252, 243, 57, 49, 97, 252, 242, 57, 49, 97, 
-    252, 241, 57, 49, 97, 252, 240, 57, 49, 97, 219, 99, 253, 69, 57, 49, 97, 
-    219, 99, 253, 36, 57, 49, 97, 219, 99, 253, 35, 57, 49, 97, 219, 99, 253, 
-    34, 57, 49, 97, 219, 99, 253, 33, 57, 49, 97, 219, 99, 253, 32, 57, 49, 
-    97, 219, 99, 253, 31, 57, 49, 97, 219, 99, 253, 30, 57, 49, 97, 219, 99, 
-    253, 29, 57, 49, 97, 219, 99, 253, 28, 57, 49, 97, 219, 99, 253, 27, 57, 
-    49, 97, 219, 99, 253, 26, 57, 49, 97, 219, 99, 253, 25, 57, 49, 97, 219, 
-    99, 253, 24, 57, 49, 97, 219, 99, 253, 23, 57, 49, 97, 219, 99, 253, 22, 
-    57, 49, 97, 219, 99, 253, 21, 57, 49, 97, 219, 99, 253, 20, 57, 49, 97, 
-    219, 99, 253, 19, 57, 49, 97, 219, 99, 253, 18, 57, 49, 97, 219, 99, 253, 
-    17, 57, 49, 97, 219, 99, 253, 15, 57, 49, 97, 219, 99, 253, 14, 57, 49, 
-    97, 219, 99, 253, 12, 57, 49, 97, 219, 99, 253, 11, 57, 49, 97, 219, 99, 
-    253, 10, 57, 49, 97, 219, 99, 253, 9, 57, 49, 97, 219, 99, 252, 249, 57, 
-    49, 97, 219, 99, 252, 239, 254, 227, 218, 174, 225, 55, 235, 43, 254, 
-    227, 218, 174, 225, 55, 248, 145, 254, 227, 251, 45, 78, 254, 227, 54, 
-    107, 254, 227, 54, 103, 254, 227, 54, 160, 254, 227, 54, 154, 254, 227, 
-    54, 174, 254, 227, 54, 182, 254, 227, 54, 191, 254, 227, 54, 185, 254, 
-    227, 54, 190, 254, 227, 54, 222, 65, 254, 227, 54, 220, 219, 254, 227, 
-    54, 221, 245, 254, 227, 54, 245, 119, 254, 227, 54, 245, 196, 254, 227, 
-    54, 224, 69, 254, 227, 54, 225, 38, 254, 227, 54, 246, 227, 254, 227, 54, 
-    232, 27, 254, 227, 54, 131, 242, 161, 254, 227, 54, 124, 242, 161, 254, 
-    227, 54, 148, 242, 161, 254, 227, 54, 245, 116, 242, 161, 254, 227, 54, 
-    245, 170, 242, 161, 254, 227, 54, 224, 82, 242, 161, 254, 227, 54, 225, 
-    43, 242, 161, 254, 227, 54, 246, 235, 242, 161, 254, 227, 54, 232, 31, 
-    242, 161, 254, 227, 54, 131, 221, 231, 254, 227, 54, 124, 221, 231, 254, 
-    227, 54, 148, 221, 231, 254, 227, 54, 245, 116, 221, 231, 254, 227, 54, 
-    245, 170, 221, 231, 254, 227, 54, 224, 82, 221, 231, 254, 227, 54, 225, 
-    43, 221, 231, 254, 227, 54, 246, 235, 221, 231, 254, 227, 54, 232, 31, 
-    221, 231, 254, 227, 54, 222, 66, 221, 231, 254, 227, 54, 220, 220, 221, 
-    231, 254, 227, 54, 221, 246, 221, 231, 254, 227, 54, 245, 120, 221, 231, 
-    254, 227, 54, 245, 197, 221, 231, 254, 227, 54, 224, 70, 221, 231, 254, 
-    227, 54, 225, 39, 221, 231, 254, 227, 54, 246, 228, 221, 231, 254, 227, 
-    54, 232, 28, 221, 231, 254, 227, 218, 222, 252, 190, 220, 72, 254, 227, 
-    218, 222, 245, 178, 223, 88, 254, 227, 218, 222, 226, 90, 223, 88, 254, 
-    227, 218, 222, 221, 252, 223, 88, 254, 227, 218, 222, 245, 110, 223, 88, 
-    254, 227, 247, 114, 234, 24, 245, 178, 223, 88, 254, 227, 235, 31, 234, 
-    24, 245, 178, 223, 88, 254, 227, 234, 24, 226, 90, 223, 88, 254, 227, 
-    234, 24, 221, 252, 223, 88, 23, 254, 251, 253, 234, 131, 228, 89, 23, 
-    254, 251, 253, 234, 131, 243, 194, 23, 254, 251, 253, 234, 131, 247, 126, 
-    23, 254, 251, 253, 234, 174, 23, 254, 251, 253, 234, 245, 196, 23, 254, 
-    251, 253, 234, 245, 170, 242, 161, 23, 254, 251, 253, 234, 245, 170, 221, 
-    231, 23, 254, 251, 253, 234, 245, 197, 221, 231, 23, 254, 251, 253, 234, 
-    245, 170, 222, 126, 23, 254, 251, 253, 234, 222, 66, 222, 126, 23, 254, 
-    251, 253, 234, 245, 197, 222, 126, 23, 254, 251, 253, 234, 131, 242, 162, 
-    222, 126, 23, 254, 251, 253, 234, 245, 170, 242, 162, 222, 126, 23, 254, 
-    251, 253, 234, 131, 221, 232, 222, 126, 23, 254, 251, 253, 234, 245, 170, 
-    221, 232, 222, 126, 23, 254, 251, 253, 234, 245, 170, 223, 153, 23, 254, 
-    251, 253, 234, 222, 66, 223, 153, 23, 254, 251, 253, 234, 245, 197, 223, 
-    153, 23, 254, 251, 253, 234, 131, 242, 162, 223, 153, 23, 254, 251, 253, 
-    234, 245, 170, 242, 162, 223, 153, 23, 254, 251, 253, 234, 131, 221, 232, 
-    223, 153, 23, 254, 251, 253, 234, 222, 66, 221, 232, 223, 153, 23, 254, 
-    251, 253, 234, 245, 197, 221, 232, 223, 153, 23, 254, 251, 253, 234, 222, 
-    66, 233, 139, 23, 254, 251, 243, 134, 131, 229, 49, 23, 254, 251, 222, 8, 
-    107, 23, 254, 251, 243, 132, 107, 23, 254, 251, 246, 159, 103, 23, 254, 
-    251, 222, 8, 103, 23, 254, 251, 250, 51, 124, 247, 125, 23, 254, 251, 
-    246, 159, 124, 247, 125, 23, 254, 251, 221, 71, 174, 23, 254, 251, 221, 
-    71, 222, 65, 23, 254, 251, 221, 71, 222, 66, 254, 144, 17, 23, 254, 251, 
-    243, 132, 222, 65, 23, 254, 251, 233, 240, 222, 65, 23, 254, 251, 222, 8, 
-    222, 65, 23, 254, 251, 222, 8, 221, 245, 23, 254, 251, 221, 71, 245, 196, 
-    23, 254, 251, 221, 71, 245, 197, 254, 144, 17, 23, 254, 251, 243, 132, 
-    245, 196, 23, 254, 251, 222, 8, 245, 196, 23, 254, 251, 222, 8, 131, 242, 
-    161, 23, 254, 251, 222, 8, 148, 242, 161, 23, 254, 251, 246, 159, 245, 
-    170, 242, 161, 23, 254, 251, 221, 71, 245, 170, 242, 161, 23, 254, 251, 
-    222, 8, 245, 170, 242, 161, 23, 254, 251, 251, 126, 245, 170, 242, 161, 
-    23, 254, 251, 232, 200, 245, 170, 242, 161, 23, 254, 251, 222, 8, 131, 
-    221, 231, 23, 254, 251, 222, 8, 245, 170, 221, 231, 23, 254, 251, 249, 
-    65, 245, 170, 233, 139, 23, 254, 251, 223, 127, 245, 197, 233, 139, 23, 
-    131, 144, 55, 23, 131, 144, 5, 254, 144, 17, 23, 124, 221, 250, 55, 23, 
-    148, 228, 88, 55, 23, 218, 23, 55, 23, 222, 127, 55, 23, 247, 127, 55, 
-    23, 230, 175, 55, 23, 124, 230, 174, 55, 23, 148, 230, 174, 55, 23, 245, 
-    116, 230, 174, 55, 23, 245, 170, 230, 174, 55, 23, 233, 235, 55, 23, 235, 
-    210, 252, 190, 55, 23, 235, 26, 55, 23, 230, 84, 55, 23, 218, 132, 55, 
-    23, 254, 16, 55, 23, 254, 27, 55, 23, 244, 42, 55, 23, 221, 58, 252, 190, 
-    55, 23, 217, 85, 55, 227, 68, 225, 35, 55, 227, 68, 220, 83, 55, 227, 68, 
-    225, 59, 55, 227, 68, 225, 33, 55, 227, 68, 248, 226, 225, 33, 55, 227, 
-    68, 224, 120, 55, 227, 68, 249, 61, 55, 227, 68, 228, 76, 55, 227, 68, 
-    225, 47, 55, 227, 68, 247, 93, 55, 227, 68, 254, 14, 55, 227, 68, 251, 
-    81, 55, 229, 137, 248, 205, 5, 229, 192, 229, 137, 248, 205, 5, 229, 44, 
-    243, 159, 229, 137, 248, 205, 5, 222, 109, 243, 159, 229, 137, 248, 205, 
-    5, 251, 139, 229, 137, 248, 205, 5, 251, 24, 229, 137, 248, 205, 5, 218, 
-    183, 229, 137, 248, 205, 5, 243, 140, 229, 137, 248, 205, 5, 244, 210, 
-    229, 137, 248, 205, 5, 221, 204, 229, 137, 248, 205, 5, 65, 229, 137, 
-    248, 205, 5, 252, 24, 229, 137, 248, 205, 5, 224, 218, 229, 137, 248, 
-    205, 5, 250, 187, 229, 137, 248, 205, 5, 234, 85, 229, 137, 248, 205, 5, 
-    234, 48, 229, 137, 248, 205, 5, 226, 122, 229, 137, 248, 205, 5, 235, 64, 
-    229, 137, 248, 205, 5, 252, 33, 229, 137, 248, 205, 5, 251, 129, 229, 51, 
-    229, 137, 248, 205, 5, 248, 156, 229, 137, 248, 205, 5, 250, 172, 229, 
-    137, 248, 205, 5, 224, 50, 229, 137, 248, 205, 5, 250, 173, 229, 137, 
-    248, 205, 5, 252, 134, 229, 137, 248, 205, 5, 224, 206, 229, 137, 248, 
-    205, 5, 242, 189, 229, 137, 248, 205, 5, 243, 111, 229, 137, 248, 205, 5, 
-    251, 240, 235, 106, 229, 137, 248, 205, 5, 251, 124, 229, 137, 248, 205, 
-    5, 227, 239, 229, 137, 248, 205, 5, 247, 13, 229, 137, 248, 205, 5, 247, 
-    133, 229, 137, 248, 205, 5, 220, 247, 229, 137, 248, 205, 5, 252, 137, 
-    229, 137, 248, 205, 5, 229, 52, 221, 98, 229, 137, 248, 205, 5, 219, 84, 
-    229, 137, 248, 205, 5, 229, 244, 229, 137, 248, 205, 5, 227, 62, 229, 
-    137, 248, 205, 5, 235, 52, 229, 137, 248, 205, 5, 230, 69, 252, 233, 229, 
-    137, 248, 205, 5, 245, 143, 229, 137, 248, 205, 5, 244, 38, 229, 137, 
-    248, 205, 5, 223, 128, 229, 137, 248, 205, 5, 3, 253, 213, 229, 137, 248, 
-    205, 5, 218, 235, 252, 206, 229, 137, 248, 205, 5, 36, 230, 177, 92, 234, 
-    197, 1, 60, 234, 197, 1, 73, 234, 197, 1, 253, 204, 234, 197, 1, 252, 95, 
-    234, 197, 1, 245, 67, 234, 197, 1, 250, 46, 234, 197, 1, 72, 234, 197, 1, 
-    219, 40, 234, 197, 1, 217, 157, 234, 197, 1, 222, 37, 234, 197, 1, 237, 
-    126, 234, 197, 1, 237, 17, 234, 197, 1, 228, 163, 234, 197, 1, 153, 234, 
-    197, 1, 189, 234, 197, 1, 207, 234, 197, 1, 233, 140, 234, 197, 1, 231, 
-    218, 234, 197, 1, 68, 234, 197, 1, 230, 59, 234, 197, 1, 236, 75, 234, 
-    197, 1, 152, 234, 197, 1, 198, 234, 197, 1, 222, 201, 234, 197, 1, 221, 
-    32, 234, 197, 1, 254, 131, 234, 197, 1, 246, 197, 234, 197, 1, 243, 225, 
-    234, 197, 1, 218, 151, 251, 133, 1, 60, 251, 133, 1, 230, 45, 251, 133, 
-    1, 250, 46, 251, 133, 1, 153, 251, 133, 1, 220, 21, 251, 133, 1, 152, 
-    251, 133, 1, 235, 126, 251, 133, 1, 255, 60, 251, 133, 1, 228, 163, 251, 
-    133, 1, 253, 204, 251, 133, 1, 189, 251, 133, 1, 74, 251, 133, 1, 249, 
-    209, 251, 133, 1, 222, 201, 251, 133, 1, 225, 27, 251, 133, 1, 225, 26, 
-    251, 133, 1, 198, 251, 133, 1, 251, 201, 251, 133, 1, 68, 251, 133, 1, 
-    231, 218, 251, 133, 1, 218, 151, 251, 133, 1, 207, 251, 133, 1, 221, 31, 
-    251, 133, 1, 230, 59, 251, 133, 1, 223, 219, 251, 133, 1, 72, 251, 133, 
-    1, 73, 251, 133, 1, 220, 18, 251, 133, 1, 237, 17, 251, 133, 1, 237, 8, 
-    251, 133, 1, 232, 170, 251, 133, 1, 220, 23, 251, 133, 1, 245, 67, 251, 
-    133, 1, 245, 2, 251, 133, 1, 223, 168, 251, 133, 1, 223, 167, 251, 133, 
-    1, 232, 117, 251, 133, 1, 237, 255, 251, 133, 1, 251, 200, 251, 133, 1, 
-    221, 32, 251, 133, 1, 220, 20, 251, 133, 1, 227, 53, 251, 133, 1, 234, 
-    41, 251, 133, 1, 234, 40, 251, 133, 1, 234, 39, 251, 133, 1, 234, 38, 
-    251, 133, 1, 235, 125, 251, 133, 1, 247, 17, 251, 133, 1, 220, 19, 48, 
-    30, 1, 60, 48, 30, 1, 252, 144, 48, 30, 1, 236, 184, 48, 30, 1, 249, 92, 
-    48, 30, 1, 73, 48, 30, 1, 219, 165, 48, 30, 1, 217, 92, 48, 30, 1, 243, 
-    162, 48, 30, 1, 222, 22, 48, 30, 1, 72, 48, 30, 1, 175, 48, 30, 1, 246, 
-    217, 48, 30, 1, 246, 205, 48, 30, 1, 246, 197, 48, 30, 1, 246, 133, 48, 
-    30, 1, 74, 48, 30, 1, 229, 198, 48, 30, 1, 224, 246, 48, 30, 1, 236, 7, 
-    48, 30, 1, 246, 148, 48, 30, 1, 246, 138, 48, 30, 1, 222, 87, 48, 30, 1, 
-    68, 48, 30, 1, 246, 220, 48, 30, 1, 229, 132, 48, 30, 1, 236, 137, 48, 
-    30, 1, 246, 244, 48, 30, 1, 246, 140, 48, 30, 1, 251, 46, 48, 30, 1, 237, 
-    255, 48, 30, 1, 220, 23, 48, 30, 231, 107, 107, 48, 30, 231, 107, 174, 
-    48, 30, 231, 107, 222, 65, 48, 30, 231, 107, 245, 196, 244, 50, 1, 254, 
-    199, 244, 50, 1, 252, 219, 244, 50, 1, 244, 100, 244, 50, 1, 249, 191, 
-    244, 50, 1, 254, 195, 244, 50, 1, 228, 146, 244, 50, 1, 237, 136, 244, 
-    50, 1, 243, 204, 244, 50, 1, 221, 241, 244, 50, 1, 246, 226, 244, 50, 1, 
-    235, 241, 244, 50, 1, 235, 170, 244, 50, 1, 234, 82, 244, 50, 1, 232, 
-    202, 244, 50, 1, 237, 108, 244, 50, 1, 220, 37, 244, 50, 1, 230, 31, 244, 
-    50, 1, 232, 27, 244, 50, 1, 227, 245, 244, 50, 1, 226, 123, 244, 50, 1, 
-    222, 74, 244, 50, 1, 218, 191, 244, 50, 1, 245, 249, 244, 50, 1, 238, 3, 
-    244, 50, 1, 242, 152, 244, 50, 1, 230, 91, 244, 50, 1, 232, 31, 242, 161, 
-    220, 106, 1, 254, 150, 220, 106, 1, 252, 102, 220, 106, 1, 244, 232, 220, 
-    106, 1, 236, 149, 220, 106, 1, 249, 62, 220, 106, 1, 243, 4, 220, 106, 1, 
-    218, 187, 220, 106, 1, 217, 83, 220, 106, 1, 242, 185, 220, 106, 1, 222, 
-    50, 220, 106, 1, 217, 220, 220, 106, 1, 236, 246, 220, 106, 1, 224, 209, 
-    220, 106, 1, 235, 156, 220, 106, 1, 234, 1, 220, 106, 1, 249, 33, 220, 
-    106, 1, 231, 103, 220, 106, 1, 217, 13, 220, 106, 1, 226, 144, 220, 106, 
-    1, 254, 191, 220, 106, 1, 228, 202, 220, 106, 1, 226, 169, 220, 106, 1, 
-    228, 103, 220, 106, 1, 227, 231, 220, 106, 1, 222, 26, 220, 106, 1, 244, 
-    122, 220, 106, 1, 101, 220, 106, 1, 72, 220, 106, 1, 68, 220, 106, 1, 
-    223, 178, 220, 106, 218, 174, 248, 191, 48, 229, 159, 5, 60, 48, 229, 
-    159, 5, 72, 48, 229, 159, 5, 68, 48, 229, 159, 5, 175, 48, 229, 159, 5, 
-    236, 7, 48, 229, 159, 5, 245, 0, 48, 229, 159, 5, 244, 17, 48, 229, 159, 
-    5, 218, 138, 48, 229, 159, 5, 251, 169, 48, 229, 159, 5, 237, 123, 48, 
-    229, 159, 5, 237, 98, 48, 229, 159, 5, 222, 155, 48, 229, 159, 5, 221, 0, 
-    48, 229, 159, 5, 249, 207, 48, 229, 159, 5, 249, 15, 48, 229, 159, 5, 
-    247, 111, 48, 229, 159, 5, 222, 35, 48, 229, 159, 5, 187, 48, 229, 159, 
-    5, 252, 237, 48, 229, 159, 5, 246, 8, 48, 229, 159, 5, 208, 48, 229, 159, 
-    5, 231, 144, 48, 229, 159, 5, 196, 48, 229, 159, 5, 233, 196, 48, 229, 
-    159, 5, 233, 99, 48, 229, 159, 5, 184, 48, 229, 159, 5, 219, 189, 48, 
-    229, 159, 5, 219, 94, 48, 229, 159, 5, 203, 48, 229, 159, 5, 227, 22, 48, 
-    229, 159, 5, 235, 188, 48, 229, 159, 5, 226, 177, 48, 229, 159, 5, 217, 
-    114, 48, 229, 159, 5, 225, 25, 48, 229, 159, 5, 223, 218, 48, 229, 159, 
-    5, 155, 48, 229, 159, 5, 253, 227, 48, 229, 159, 5, 253, 226, 48, 229, 
-    159, 5, 253, 225, 48, 229, 159, 5, 218, 115, 48, 229, 159, 5, 249, 188, 
-    48, 229, 159, 5, 249, 187, 48, 229, 159, 5, 252, 224, 48, 229, 159, 5, 
-    251, 220, 48, 229, 159, 218, 174, 248, 191, 48, 229, 159, 54, 107, 48, 
-    229, 159, 54, 103, 48, 229, 159, 54, 222, 65, 48, 229, 159, 54, 220, 219, 
-    48, 229, 159, 54, 242, 161, 161, 6, 1, 171, 72, 161, 6, 1, 171, 73, 161, 
-    6, 1, 171, 60, 161, 6, 1, 171, 254, 202, 161, 6, 1, 171, 74, 161, 6, 1, 
-    171, 230, 127, 161, 6, 1, 224, 192, 72, 161, 6, 1, 224, 192, 73, 161, 6, 
-    1, 224, 192, 60, 161, 6, 1, 224, 192, 254, 202, 161, 6, 1, 224, 192, 74, 
-    161, 6, 1, 224, 192, 230, 127, 161, 6, 1, 253, 212, 161, 6, 1, 230, 70, 
-    161, 6, 1, 218, 165, 161, 6, 1, 218, 22, 161, 6, 1, 243, 225, 161, 6, 1, 
-    229, 191, 161, 6, 1, 252, 137, 161, 6, 1, 222, 80, 161, 6, 1, 249, 82, 
-    161, 6, 1, 251, 43, 161, 6, 1, 237, 113, 161, 6, 1, 236, 191, 161, 6, 1, 
-    244, 208, 161, 6, 1, 246, 244, 161, 6, 1, 219, 160, 161, 6, 1, 246, 118, 
-    161, 6, 1, 222, 21, 161, 6, 1, 246, 138, 161, 6, 1, 217, 90, 161, 6, 1, 
-    246, 133, 161, 6, 1, 217, 71, 161, 6, 1, 246, 148, 161, 6, 1, 246, 217, 
-    161, 6, 1, 246, 205, 161, 6, 1, 246, 197, 161, 6, 1, 246, 185, 161, 6, 1, 
-    230, 158, 161, 6, 1, 246, 101, 161, 3, 1, 171, 72, 161, 3, 1, 171, 73, 
-    161, 3, 1, 171, 60, 161, 3, 1, 171, 254, 202, 161, 3, 1, 171, 74, 161, 3, 
-    1, 171, 230, 127, 161, 3, 1, 224, 192, 72, 161, 3, 1, 224, 192, 73, 161, 
-    3, 1, 224, 192, 60, 161, 3, 1, 224, 192, 254, 202, 161, 3, 1, 224, 192, 
-    74, 161, 3, 1, 224, 192, 230, 127, 161, 3, 1, 253, 212, 161, 3, 1, 230, 
-    70, 161, 3, 1, 218, 165, 161, 3, 1, 218, 22, 161, 3, 1, 243, 225, 161, 3, 
-    1, 229, 191, 161, 3, 1, 252, 137, 161, 3, 1, 222, 80, 161, 3, 1, 249, 82, 
-    161, 3, 1, 251, 43, 161, 3, 1, 237, 113, 161, 3, 1, 236, 191, 161, 3, 1, 
-    244, 208, 161, 3, 1, 246, 244, 161, 3, 1, 219, 160, 161, 3, 1, 246, 118, 
-    161, 3, 1, 222, 21, 161, 3, 1, 246, 138, 161, 3, 1, 217, 90, 161, 3, 1, 
-    246, 133, 161, 3, 1, 217, 71, 161, 3, 1, 246, 148, 161, 3, 1, 246, 217, 
-    161, 3, 1, 246, 205, 161, 3, 1, 246, 197, 161, 3, 1, 246, 185, 161, 3, 1, 
-    230, 158, 161, 3, 1, 246, 101, 224, 252, 1, 229, 190, 224, 252, 1, 221, 
-    113, 224, 252, 1, 236, 112, 224, 252, 1, 245, 226, 224, 252, 1, 221, 255, 
-    224, 252, 1, 224, 26, 224, 252, 1, 223, 50, 224, 252, 1, 250, 245, 224, 
-    252, 1, 218, 24, 224, 252, 1, 242, 160, 224, 252, 1, 252, 83, 224, 252, 
-    1, 249, 91, 224, 252, 1, 244, 242, 224, 252, 1, 219, 60, 224, 252, 1, 
-    222, 3, 224, 252, 1, 217, 19, 224, 252, 1, 234, 23, 224, 252, 1, 237, 41, 
-    224, 252, 1, 218, 185, 224, 252, 1, 243, 213, 224, 252, 1, 235, 3, 224, 
-    252, 1, 233, 160, 224, 252, 1, 238, 6, 224, 252, 1, 246, 243, 224, 252, 
-    1, 254, 7, 224, 252, 1, 254, 237, 224, 252, 1, 230, 138, 224, 252, 1, 
-    218, 177, 224, 252, 1, 230, 83, 224, 252, 1, 254, 202, 224, 252, 1, 227, 
-    72, 224, 252, 1, 231, 103, 224, 252, 1, 247, 2, 224, 252, 1, 254, 207, 
-    224, 252, 1, 242, 65, 224, 252, 1, 220, 63, 224, 252, 1, 230, 183, 224, 
-    252, 1, 230, 121, 224, 252, 1, 230, 157, 224, 252, 1, 253, 215, 224, 252, 
-    1, 254, 45, 224, 252, 1, 230, 105, 224, 252, 1, 254, 188, 224, 252, 1, 
-    246, 142, 224, 252, 1, 254, 24, 224, 252, 1, 247, 11, 224, 252, 1, 242, 
-    71, 224, 252, 1, 217, 255, 230, 93, 1, 254, 168, 230, 93, 1, 252, 237, 
-    230, 93, 1, 222, 155, 230, 93, 1, 237, 123, 230, 93, 1, 218, 138, 230, 
-    93, 1, 236, 149, 230, 93, 1, 249, 81, 230, 93, 1, 203, 230, 93, 1, 226, 
-    177, 230, 93, 1, 224, 215, 230, 93, 1, 249, 36, 230, 93, 1, 251, 116, 
-    230, 93, 1, 245, 0, 230, 93, 1, 246, 8, 230, 93, 1, 228, 153, 230, 93, 1, 
-    237, 4, 230, 93, 1, 235, 184, 230, 93, 1, 233, 170, 230, 93, 1, 231, 89, 
-    230, 93, 1, 218, 233, 230, 93, 1, 155, 230, 93, 1, 184, 230, 93, 1, 60, 
-    230, 93, 1, 73, 230, 93, 1, 72, 230, 93, 1, 74, 230, 93, 1, 68, 230, 93, 
-    1, 255, 58, 230, 93, 1, 246, 250, 230, 93, 1, 230, 127, 230, 93, 20, 217, 
-    84, 230, 93, 20, 107, 230, 93, 20, 103, 230, 93, 20, 160, 230, 93, 20, 
-    154, 230, 93, 20, 174, 230, 93, 20, 182, 230, 93, 20, 191, 230, 93, 20, 
-    185, 230, 93, 20, 190, 250, 53, 4, 60, 250, 53, 4, 73, 250, 53, 4, 72, 
-    250, 53, 4, 74, 250, 53, 4, 68, 250, 53, 4, 237, 123, 250, 53, 4, 237, 
-    59, 250, 53, 4, 175, 250, 53, 4, 236, 184, 250, 53, 4, 236, 113, 250, 53, 
-    4, 236, 57, 250, 53, 4, 236, 7, 250, 53, 4, 235, 188, 250, 53, 4, 235, 
-    122, 250, 53, 4, 235, 67, 250, 53, 4, 235, 12, 250, 53, 4, 234, 231, 250, 
-    53, 4, 196, 250, 53, 4, 234, 25, 250, 53, 4, 233, 196, 250, 53, 4, 233, 
-    136, 250, 53, 4, 233, 99, 250, 53, 4, 208, 250, 53, 4, 232, 141, 250, 53, 
-    4, 232, 62, 250, 53, 4, 231, 204, 250, 53, 4, 231, 144, 250, 53, 4, 187, 
-    250, 53, 4, 229, 198, 250, 53, 4, 229, 108, 250, 53, 4, 229, 37, 250, 53, 
-    4, 228, 202, 250, 53, 4, 203, 250, 53, 4, 227, 216, 250, 53, 4, 227, 147, 
-    250, 53, 4, 227, 75, 250, 53, 4, 227, 22, 250, 53, 4, 226, 177, 250, 53, 
-    4, 226, 94, 250, 53, 4, 224, 140, 250, 53, 4, 224, 26, 250, 53, 4, 223, 
-    103, 250, 53, 4, 222, 155, 250, 53, 4, 222, 87, 250, 53, 4, 221, 205, 
-    250, 53, 4, 101, 250, 53, 4, 221, 0, 250, 53, 4, 219, 7, 250, 53, 4, 218, 
-    227, 250, 53, 4, 218, 204, 250, 53, 4, 218, 187, 250, 53, 4, 218, 138, 
-    250, 53, 4, 218, 135, 250, 53, 4, 217, 114, 250, 53, 4, 217, 21, 237, 
-    225, 254, 53, 1, 254, 166, 237, 225, 254, 53, 1, 252, 101, 237, 225, 254, 
-    53, 1, 244, 91, 237, 225, 254, 53, 1, 249, 176, 237, 225, 254, 53, 1, 
-    243, 162, 237, 225, 254, 53, 1, 218, 233, 237, 225, 254, 53, 1, 217, 95, 
-    237, 225, 254, 53, 1, 243, 126, 237, 225, 254, 53, 1, 222, 46, 237, 225, 
-    254, 53, 1, 217, 219, 237, 225, 254, 53, 1, 236, 224, 237, 225, 254, 53, 
-    1, 235, 151, 237, 225, 254, 53, 1, 234, 1, 237, 225, 254, 53, 1, 231, 
-    103, 237, 225, 254, 53, 1, 226, 145, 237, 225, 254, 53, 1, 253, 207, 237, 
-    225, 254, 53, 1, 229, 198, 237, 225, 254, 53, 1, 226, 168, 237, 225, 254, 
-    53, 1, 228, 102, 237, 225, 254, 53, 1, 227, 174, 237, 225, 254, 53, 1, 
-    224, 209, 237, 225, 254, 53, 1, 222, 100, 237, 225, 254, 53, 226, 87, 55, 
-    237, 225, 254, 53, 54, 107, 237, 225, 254, 53, 54, 103, 237, 225, 254, 
-    53, 54, 160, 237, 225, 254, 53, 54, 222, 65, 237, 225, 254, 53, 54, 220, 
-    219, 237, 225, 254, 53, 54, 131, 242, 161, 237, 225, 254, 53, 54, 131, 
-    221, 231, 237, 225, 254, 53, 54, 222, 66, 221, 231, 229, 116, 1, 254, 
-    164, 229, 116, 1, 252, 104, 229, 116, 1, 244, 233, 229, 116, 1, 249, 64, 
-    229, 116, 1, 243, 162, 229, 116, 1, 218, 238, 229, 116, 1, 217, 108, 229, 
-    116, 1, 243, 128, 229, 116, 1, 222, 50, 229, 116, 1, 217, 220, 229, 116, 
-    1, 236, 246, 229, 116, 1, 235, 157, 229, 116, 1, 234, 1, 229, 116, 1, 
-    231, 103, 229, 116, 1, 225, 61, 229, 116, 1, 254, 191, 229, 116, 1, 229, 
-    198, 229, 116, 1, 226, 169, 229, 116, 1, 228, 107, 229, 116, 1, 227, 61, 
-    229, 116, 1, 224, 209, 229, 116, 1, 222, 105, 229, 116, 54, 107, 229, 
-    116, 54, 222, 65, 229, 116, 54, 220, 219, 229, 116, 54, 131, 242, 161, 
-    229, 116, 54, 103, 229, 116, 54, 160, 229, 116, 218, 174, 225, 54, 234, 
-    196, 1, 60, 234, 196, 1, 253, 204, 234, 196, 1, 245, 67, 234, 196, 1, 
-    250, 46, 234, 196, 1, 73, 234, 196, 1, 216, 216, 234, 196, 1, 72, 234, 
-    196, 1, 218, 90, 234, 196, 1, 237, 17, 234, 196, 1, 153, 234, 196, 1, 
-    189, 234, 196, 1, 207, 234, 196, 1, 74, 234, 196, 1, 152, 234, 196, 1, 
-    223, 219, 234, 196, 1, 222, 201, 234, 196, 1, 68, 234, 196, 1, 246, 74, 
-    234, 196, 1, 228, 163, 234, 196, 1, 198, 234, 196, 1, 221, 32, 234, 196, 
-    1, 254, 131, 234, 196, 1, 246, 197, 234, 196, 1, 234, 198, 234, 196, 1, 
-    231, 218, 234, 196, 1, 251, 202, 234, 196, 221, 87, 78, 201, 1, 60, 201, 
-    29, 5, 72, 201, 29, 5, 68, 201, 29, 5, 167, 152, 201, 29, 5, 73, 201, 29, 
-    5, 74, 201, 29, 235, 94, 78, 201, 5, 51, 227, 94, 56, 201, 5, 254, 95, 
-    201, 5, 219, 77, 201, 1, 175, 201, 1, 236, 149, 201, 1, 245, 0, 201, 1, 
-    244, 125, 201, 1, 251, 169, 201, 1, 251, 69, 201, 1, 237, 123, 201, 1, 
-    231, 77, 201, 1, 221, 29, 201, 1, 221, 19, 201, 1, 249, 132, 201, 1, 249, 
-    116, 201, 1, 231, 217, 201, 1, 222, 155, 201, 1, 222, 35, 201, 1, 249, 
-    207, 201, 1, 249, 36, 201, 1, 208, 201, 1, 187, 201, 1, 229, 141, 201, 1, 
-    252, 237, 201, 1, 252, 94, 201, 1, 196, 201, 1, 184, 201, 1, 203, 201, 1, 
-    235, 188, 201, 1, 219, 189, 201, 1, 225, 25, 201, 1, 223, 218, 201, 1, 
-    226, 177, 201, 1, 217, 114, 201, 1, 155, 201, 1, 236, 74, 201, 1, 221, 4, 
-    201, 5, 252, 201, 50, 201, 5, 251, 122, 201, 5, 61, 56, 201, 219, 82, 
-    201, 20, 107, 201, 20, 103, 201, 20, 160, 201, 20, 154, 201, 54, 222, 65, 
-    201, 54, 220, 219, 201, 54, 131, 242, 161, 201, 54, 131, 221, 231, 201, 
-    228, 197, 248, 145, 201, 228, 197, 3, 250, 221, 201, 228, 197, 250, 221, 
-    201, 228, 197, 250, 105, 135, 201, 228, 197, 234, 83, 201, 228, 197, 234, 
-    241, 201, 228, 197, 249, 167, 201, 228, 197, 51, 249, 167, 201, 228, 197, 
-    235, 37, 48, 224, 6, 254, 64, 1, 243, 162, 48, 224, 6, 254, 64, 1, 235, 
-    151, 48, 224, 6, 254, 64, 1, 243, 126, 48, 224, 6, 254, 64, 1, 234, 1, 
-    48, 224, 6, 254, 64, 1, 228, 102, 48, 224, 6, 254, 64, 1, 218, 233, 48, 
-    224, 6, 254, 64, 1, 224, 209, 48, 224, 6, 254, 64, 1, 227, 174, 48, 224, 
-    6, 254, 64, 1, 252, 101, 48, 224, 6, 254, 64, 1, 222, 100, 48, 224, 6, 
-    254, 64, 1, 226, 127, 48, 224, 6, 254, 64, 1, 236, 224, 48, 224, 6, 254, 
-    64, 1, 231, 103, 48, 224, 6, 254, 64, 1, 236, 134, 48, 224, 6, 254, 64, 
-    1, 226, 168, 48, 224, 6, 254, 64, 1, 226, 145, 48, 224, 6, 254, 64, 1, 
-    245, 231, 48, 224, 6, 254, 64, 1, 254, 168, 48, 224, 6, 254, 64, 1, 253, 
-    206, 48, 224, 6, 254, 64, 1, 249, 34, 48, 224, 6, 254, 64, 1, 244, 91, 
-    48, 224, 6, 254, 64, 1, 249, 176, 48, 224, 6, 254, 64, 1, 244, 118, 48, 
-    224, 6, 254, 64, 1, 222, 46, 48, 224, 6, 254, 64, 1, 217, 94, 48, 224, 6, 
-    254, 64, 1, 249, 31, 48, 224, 6, 254, 64, 1, 217, 219, 48, 224, 6, 254, 
-    64, 1, 222, 24, 48, 224, 6, 254, 64, 1, 222, 5, 48, 224, 6, 254, 64, 54, 
-    107, 48, 224, 6, 254, 64, 54, 245, 196, 48, 224, 6, 254, 64, 120, 237, 
-    211, 253, 216, 1, 60, 253, 216, 1, 255, 58, 253, 216, 1, 254, 93, 253, 
-    216, 1, 255, 17, 253, 216, 1, 254, 131, 253, 216, 1, 255, 18, 253, 216, 
-    1, 254, 234, 253, 216, 1, 254, 230, 253, 216, 1, 73, 253, 216, 1, 246, 
-    250, 253, 216, 1, 74, 253, 216, 1, 230, 127, 253, 216, 1, 72, 253, 216, 
-    1, 237, 255, 253, 216, 1, 68, 253, 216, 1, 220, 23, 253, 216, 1, 236, 
-    184, 253, 216, 1, 218, 135, 253, 216, 1, 218, 101, 253, 216, 1, 218, 110, 
-    253, 216, 1, 244, 191, 253, 216, 1, 244, 155, 253, 216, 1, 244, 116, 253, 
-    216, 1, 251, 99, 253, 216, 1, 237, 114, 253, 216, 1, 222, 87, 253, 216, 
-    1, 222, 22, 253, 216, 1, 249, 92, 253, 216, 1, 249, 29, 253, 216, 1, 221, 
-    26, 253, 216, 1, 229, 198, 253, 216, 1, 245, 231, 253, 216, 1, 252, 144, 
-    253, 216, 1, 252, 92, 253, 216, 1, 232, 106, 253, 216, 1, 232, 68, 253, 
-    216, 1, 232, 69, 253, 216, 1, 232, 141, 253, 216, 1, 231, 73, 253, 216, 
-    1, 231, 216, 253, 216, 1, 234, 25, 253, 216, 1, 243, 52, 253, 216, 1, 
-    217, 164, 253, 216, 1, 218, 25, 253, 216, 1, 219, 165, 253, 216, 1, 227, 
-    216, 253, 216, 1, 235, 122, 253, 216, 1, 226, 94, 253, 216, 1, 217, 92, 
-    253, 216, 1, 224, 246, 253, 216, 1, 217, 72, 253, 216, 1, 224, 147, 253, 
-    216, 1, 223, 190, 253, 216, 1, 243, 162, 253, 216, 255, 7, 78, 221, 172, 
-    124, 188, 104, 131, 61, 228, 196, 3, 124, 188, 104, 131, 61, 228, 196, 
-    235, 146, 124, 188, 104, 131, 61, 228, 196, 235, 146, 131, 61, 104, 124, 
-    188, 228, 196, 235, 146, 124, 227, 92, 104, 131, 227, 94, 228, 196, 235, 
-    146, 131, 227, 94, 104, 124, 227, 92, 228, 196, 237, 193, 229, 224, 1, 
-    254, 166, 237, 193, 229, 224, 1, 252, 101, 237, 193, 229, 224, 1, 244, 
-    91, 237, 193, 229, 224, 1, 249, 176, 237, 193, 229, 224, 1, 243, 162, 
-    237, 193, 229, 224, 1, 218, 233, 237, 193, 229, 224, 1, 217, 95, 237, 
-    193, 229, 224, 1, 243, 126, 237, 193, 229, 224, 1, 222, 46, 237, 193, 
-    229, 224, 1, 217, 219, 237, 193, 229, 224, 1, 236, 224, 237, 193, 229, 
-    224, 1, 235, 151, 237, 193, 229, 224, 1, 234, 1, 237, 193, 229, 224, 1, 
-    231, 103, 237, 193, 229, 224, 1, 226, 145, 237, 193, 229, 224, 1, 253, 
-    207, 237, 193, 229, 224, 1, 229, 198, 237, 193, 229, 224, 1, 226, 168, 
-    237, 193, 229, 224, 1, 228, 102, 237, 193, 229, 224, 1, 227, 174, 237, 
-    193, 229, 224, 1, 224, 209, 237, 193, 229, 224, 1, 222, 100, 237, 193, 
-    229, 224, 54, 107, 237, 193, 229, 224, 54, 103, 237, 193, 229, 224, 54, 
-    160, 237, 193, 229, 224, 54, 154, 237, 193, 229, 224, 54, 222, 65, 237, 
-    193, 229, 224, 54, 220, 219, 237, 193, 229, 224, 54, 131, 242, 161, 237, 
-    193, 229, 224, 54, 131, 221, 231, 237, 193, 230, 33, 1, 254, 166, 237, 
-    193, 230, 33, 1, 252, 101, 237, 193, 230, 33, 1, 244, 91, 237, 193, 230, 
-    33, 1, 249, 176, 237, 193, 230, 33, 1, 243, 162, 237, 193, 230, 33, 1, 
-    218, 232, 237, 193, 230, 33, 1, 217, 95, 237, 193, 230, 33, 1, 243, 126, 
-    237, 193, 230, 33, 1, 222, 46, 237, 193, 230, 33, 1, 217, 219, 237, 193, 
-    230, 33, 1, 236, 224, 237, 193, 230, 33, 1, 235, 151, 237, 193, 230, 33, 
-    1, 234, 0, 237, 193, 230, 33, 1, 231, 103, 237, 193, 230, 33, 1, 226, 
-    145, 237, 193, 230, 33, 1, 229, 198, 237, 193, 230, 33, 1, 226, 168, 237, 
-    193, 230, 33, 1, 224, 209, 237, 193, 230, 33, 1, 222, 100, 237, 193, 230, 
-    33, 54, 107, 237, 193, 230, 33, 54, 103, 237, 193, 230, 33, 54, 160, 237, 
-    193, 230, 33, 54, 154, 237, 193, 230, 33, 54, 222, 65, 237, 193, 230, 33, 
-    54, 220, 219, 237, 193, 230, 33, 54, 131, 242, 161, 237, 193, 230, 33, 
-    54, 131, 221, 231, 48, 172, 1, 230, 100, 60, 48, 172, 1, 218, 17, 60, 48, 
-    172, 1, 218, 17, 254, 234, 48, 172, 1, 230, 100, 72, 48, 172, 1, 218, 17, 
-    72, 48, 172, 1, 218, 17, 73, 48, 172, 1, 230, 100, 74, 48, 172, 1, 230, 
-    100, 230, 167, 48, 172, 1, 218, 17, 230, 167, 48, 172, 1, 230, 100, 255, 
-    11, 48, 172, 1, 218, 17, 255, 11, 48, 172, 1, 230, 100, 254, 233, 48, 
-    172, 1, 218, 17, 254, 233, 48, 172, 1, 230, 100, 254, 209, 48, 172, 1, 
-    218, 17, 254, 209, 48, 172, 1, 230, 100, 254, 228, 48, 172, 1, 218, 17, 
-    254, 228, 48, 172, 1, 230, 100, 254, 244, 48, 172, 1, 218, 17, 254, 244, 
-    48, 172, 1, 230, 100, 254, 232, 48, 172, 1, 230, 100, 246, 80, 48, 172, 
-    1, 218, 17, 246, 80, 48, 172, 1, 230, 100, 253, 212, 48, 172, 1, 218, 17, 
-    253, 212, 48, 172, 1, 230, 100, 254, 216, 48, 172, 1, 218, 17, 254, 216, 
-    48, 172, 1, 230, 100, 254, 226, 48, 172, 1, 218, 17, 254, 226, 48, 172, 
-    1, 230, 100, 230, 166, 48, 172, 1, 218, 17, 230, 166, 48, 172, 1, 230, 
-    100, 254, 175, 48, 172, 1, 218, 17, 254, 175, 48, 172, 1, 230, 100, 254, 
-    225, 48, 172, 1, 230, 100, 246, 207, 48, 172, 1, 230, 100, 246, 205, 48, 
-    172, 1, 230, 100, 254, 131, 48, 172, 1, 230, 100, 254, 223, 48, 172, 1, 
-    218, 17, 254, 223, 48, 172, 1, 230, 100, 246, 180, 48, 172, 1, 218, 17, 
-    246, 180, 48, 172, 1, 230, 100, 246, 194, 48, 172, 1, 218, 17, 246, 194, 
-    48, 172, 1, 230, 100, 246, 169, 48, 172, 1, 218, 17, 246, 169, 48, 172, 
-    1, 218, 17, 254, 123, 48, 172, 1, 230, 100, 246, 185, 48, 172, 1, 218, 
-    17, 254, 222, 48, 172, 1, 230, 100, 246, 162, 48, 172, 1, 230, 100, 230, 
-    120, 48, 172, 1, 230, 100, 242, 67, 48, 172, 1, 230, 100, 247, 0, 48, 
-    172, 1, 218, 17, 247, 0, 48, 172, 1, 230, 100, 254, 69, 48, 172, 1, 218, 
-    17, 254, 69, 48, 172, 1, 230, 100, 237, 158, 48, 172, 1, 218, 17, 237, 
-    158, 48, 172, 1, 230, 100, 230, 106, 48, 172, 1, 218, 17, 230, 106, 48, 
-    172, 1, 230, 100, 254, 67, 48, 172, 1, 218, 17, 254, 67, 48, 172, 1, 230, 
-    100, 254, 221, 48, 172, 1, 230, 100, 254, 13, 48, 172, 1, 230, 100, 254, 
-    220, 48, 172, 1, 230, 100, 254, 7, 48, 172, 1, 218, 17, 254, 7, 48, 172, 
-    1, 230, 100, 246, 133, 48, 172, 1, 218, 17, 246, 133, 48, 172, 1, 230, 
-    100, 253, 244, 48, 172, 1, 218, 17, 253, 244, 48, 172, 1, 230, 100, 254, 
-    217, 48, 172, 1, 218, 17, 254, 217, 48, 172, 1, 230, 100, 230, 92, 48, 
-    172, 1, 230, 100, 252, 187, 227, 11, 20, 107, 227, 11, 20, 103, 227, 11, 
-    20, 160, 227, 11, 20, 154, 227, 11, 20, 174, 227, 11, 20, 182, 227, 11, 
-    20, 191, 227, 11, 20, 185, 227, 11, 20, 190, 227, 11, 54, 222, 65, 227, 
-    11, 54, 220, 219, 227, 11, 54, 221, 245, 227, 11, 54, 245, 119, 227, 11, 
-    54, 245, 196, 227, 11, 54, 224, 69, 227, 11, 54, 225, 38, 227, 11, 54, 
-    246, 227, 227, 11, 54, 232, 27, 227, 11, 54, 131, 242, 161, 227, 11, 54, 
-    124, 242, 161, 227, 11, 54, 148, 242, 161, 227, 11, 54, 245, 116, 242, 
-    161, 227, 11, 54, 245, 170, 242, 161, 227, 11, 54, 224, 82, 242, 161, 
-    227, 11, 54, 225, 43, 242, 161, 227, 11, 54, 246, 235, 242, 161, 227, 11, 
-    54, 232, 31, 242, 161, 227, 11, 245, 108, 131, 243, 194, 227, 11, 245, 
-    108, 131, 228, 89, 227, 11, 245, 108, 131, 221, 251, 227, 11, 245, 108, 
-    124, 221, 249, 194, 5, 251, 146, 194, 5, 254, 95, 194, 5, 219, 77, 194, 
-    1, 60, 194, 1, 255, 58, 194, 1, 72, 194, 1, 237, 255, 194, 1, 68, 194, 1, 
-    220, 23, 194, 1, 73, 194, 1, 254, 196, 194, 1, 74, 194, 1, 253, 232, 194, 
-    1, 175, 194, 1, 236, 149, 194, 1, 245, 0, 194, 1, 244, 125, 194, 1, 232, 
-    115, 194, 1, 251, 169, 194, 1, 251, 69, 194, 1, 237, 123, 194, 1, 237, 
-    103, 194, 1, 231, 77, 194, 1, 221, 29, 194, 1, 221, 19, 194, 1, 249, 132, 
-    194, 1, 249, 121, 194, 1, 249, 116, 194, 1, 227, 151, 194, 1, 231, 217, 
-    194, 1, 222, 155, 194, 1, 222, 35, 194, 1, 249, 207, 194, 1, 249, 36, 
-    194, 1, 208, 194, 1, 187, 194, 1, 229, 141, 194, 1, 252, 237, 194, 1, 
-    252, 94, 194, 1, 196, 194, 1, 184, 194, 1, 203, 194, 1, 235, 188, 194, 1, 
-    219, 189, 194, 1, 225, 25, 194, 1, 223, 218, 194, 1, 226, 177, 194, 1, 
-    155, 194, 29, 5, 255, 58, 194, 29, 5, 72, 194, 29, 5, 237, 255, 194, 29, 
-    5, 68, 194, 29, 5, 220, 23, 194, 29, 5, 73, 194, 29, 5, 254, 196, 194, 
-    29, 5, 74, 194, 29, 5, 253, 232, 194, 5, 219, 82, 194, 5, 231, 112, 194, 
-    255, 7, 55, 194, 246, 171, 55, 194, 54, 55, 194, 226, 87, 78, 194, 51, 
-    226, 87, 78, 194, 249, 167, 194, 51, 249, 167, 15, 5, 60, 15, 5, 112, 27, 
-    60, 15, 5, 112, 27, 252, 228, 15, 5, 112, 27, 244, 229, 222, 59, 15, 5, 
-    112, 27, 155, 15, 5, 112, 27, 238, 1, 15, 5, 112, 27, 235, 173, 244, 3, 
-    15, 5, 112, 27, 233, 62, 15, 5, 112, 27, 226, 165, 15, 5, 255, 60, 15, 5, 
-    255, 11, 15, 5, 255, 12, 27, 254, 5, 15, 5, 255, 12, 27, 247, 100, 244, 
-    3, 15, 5, 255, 12, 27, 244, 240, 15, 5, 255, 12, 27, 244, 229, 222, 59, 
-    15, 5, 255, 12, 27, 155, 15, 5, 255, 12, 27, 238, 2, 244, 3, 15, 5, 255, 
-    12, 27, 237, 231, 15, 5, 255, 12, 27, 235, 174, 15, 5, 255, 12, 27, 224, 
-    231, 15, 5, 255, 12, 27, 105, 88, 105, 88, 68, 15, 5, 255, 12, 244, 3, 
-    15, 5, 255, 9, 15, 5, 255, 10, 27, 252, 216, 15, 5, 255, 10, 27, 244, 
-    229, 222, 59, 15, 5, 255, 10, 27, 234, 26, 88, 246, 197, 15, 5, 255, 10, 
-    27, 225, 23, 15, 5, 255, 10, 27, 222, 130, 15, 5, 254, 244, 15, 5, 254, 
-    182, 15, 5, 254, 183, 27, 246, 143, 15, 5, 254, 183, 27, 224, 203, 88, 
-    244, 81, 15, 5, 254, 175, 15, 5, 254, 176, 27, 254, 175, 15, 5, 254, 176, 
-    27, 248, 229, 15, 5, 254, 176, 27, 244, 81, 15, 5, 254, 176, 27, 155, 15, 
-    5, 254, 176, 27, 236, 251, 15, 5, 254, 176, 27, 236, 113, 15, 5, 254, 
-    176, 27, 224, 246, 15, 5, 254, 176, 27, 220, 30, 15, 5, 254, 172, 15, 5, 
-    254, 166, 15, 5, 254, 137, 15, 5, 254, 138, 27, 224, 246, 15, 5, 254, 
-    131, 15, 5, 254, 132, 104, 254, 131, 15, 5, 254, 132, 148, 221, 176, 15, 
-    5, 254, 132, 88, 232, 228, 230, 110, 254, 132, 88, 232, 227, 15, 5, 254, 
-    132, 88, 232, 228, 223, 226, 15, 5, 254, 107, 15, 5, 254, 88, 15, 5, 254, 
-    61, 15, 5, 254, 62, 27, 235, 247, 15, 5, 254, 35, 15, 5, 254, 12, 15, 5, 
-    254, 7, 15, 5, 254, 8, 217, 38, 222, 59, 15, 5, 254, 8, 236, 254, 222, 
-    59, 15, 5, 254, 8, 104, 254, 8, 220, 254, 104, 220, 254, 220, 254, 104, 
-    220, 254, 229, 246, 15, 5, 254, 8, 104, 254, 8, 104, 254, 7, 15, 5, 254, 
-    8, 104, 254, 8, 104, 254, 8, 250, 95, 254, 8, 104, 254, 8, 104, 254, 7, 
-    15, 5, 254, 5, 15, 5, 254, 3, 15, 5, 252, 237, 15, 5, 252, 228, 15, 5, 
-    252, 225, 15, 5, 252, 223, 15, 5, 252, 217, 15, 5, 252, 218, 104, 252, 
-    217, 15, 5, 252, 216, 15, 5, 135, 15, 5, 252, 200, 15, 5, 252, 84, 15, 5, 
-    252, 85, 27, 60, 15, 5, 252, 85, 27, 244, 220, 15, 5, 252, 85, 27, 238, 
-    2, 244, 3, 15, 5, 251, 248, 15, 5, 251, 249, 104, 251, 249, 255, 11, 15, 
-    5, 251, 249, 104, 251, 249, 220, 87, 15, 5, 251, 249, 250, 95, 251, 248, 
-    15, 5, 251, 237, 15, 5, 251, 238, 104, 251, 237, 15, 5, 251, 228, 15, 5, 
-    251, 227, 15, 5, 249, 207, 15, 5, 249, 198, 15, 5, 249, 199, 236, 91, 27, 
-    112, 88, 234, 57, 15, 5, 249, 199, 236, 91, 27, 254, 137, 15, 5, 249, 
-    199, 236, 91, 27, 252, 216, 15, 5, 249, 199, 236, 91, 27, 252, 84, 15, 5, 
-    249, 199, 236, 91, 27, 245, 0, 15, 5, 249, 199, 236, 91, 27, 245, 1, 88, 
-    234, 57, 15, 5, 249, 199, 236, 91, 27, 244, 103, 15, 5, 249, 199, 236, 
-    91, 27, 244, 87, 15, 5, 249, 199, 236, 91, 27, 244, 11, 15, 5, 249, 199, 
-    236, 91, 27, 155, 15, 5, 249, 199, 236, 91, 27, 237, 156, 15, 5, 249, 
-    199, 236, 91, 27, 237, 157, 88, 234, 231, 15, 5, 249, 199, 236, 91, 27, 
-    236, 240, 15, 5, 249, 199, 236, 91, 27, 235, 188, 15, 5, 249, 199, 236, 
-    91, 27, 234, 231, 15, 5, 249, 199, 236, 91, 27, 234, 232, 88, 234, 56, 
-    15, 5, 249, 199, 236, 91, 27, 234, 219, 15, 5, 249, 199, 236, 91, 27, 
-    232, 141, 15, 5, 249, 199, 236, 91, 27, 229, 247, 88, 229, 246, 15, 5, 
-    249, 199, 236, 91, 27, 224, 140, 15, 5, 249, 199, 236, 91, 27, 222, 130, 
-    15, 5, 249, 199, 236, 91, 27, 220, 125, 88, 244, 87, 15, 5, 249, 199, 
-    236, 91, 27, 220, 30, 15, 5, 249, 175, 15, 5, 249, 156, 15, 5, 249, 155, 
-    15, 5, 249, 154, 15, 5, 249, 15, 15, 5, 248, 255, 15, 5, 248, 230, 15, 5, 
-    248, 231, 27, 224, 246, 15, 5, 248, 229, 15, 5, 248, 219, 15, 5, 248, 
-    220, 236, 209, 105, 244, 4, 248, 202, 15, 5, 248, 202, 15, 5, 247, 111, 
-    15, 5, 247, 112, 104, 247, 111, 15, 5, 247, 112, 244, 3, 15, 5, 247, 112, 
-    224, 228, 15, 5, 247, 109, 15, 5, 247, 110, 27, 246, 130, 15, 5, 247, 
-    108, 15, 5, 247, 107, 15, 5, 247, 106, 15, 5, 247, 105, 15, 5, 247, 101, 
-    15, 5, 247, 99, 15, 5, 247, 100, 244, 3, 15, 5, 247, 100, 244, 4, 244, 3, 
-    15, 5, 247, 98, 15, 5, 247, 91, 15, 5, 73, 15, 5, 178, 27, 229, 246, 15, 
-    5, 178, 104, 178, 231, 104, 104, 231, 103, 15, 5, 247, 17, 15, 5, 247, 
-    18, 27, 112, 88, 243, 214, 88, 249, 207, 15, 5, 247, 18, 27, 244, 220, 
-    15, 5, 247, 18, 27, 233, 196, 15, 5, 247, 18, 27, 226, 156, 15, 5, 247, 
-    18, 27, 224, 246, 15, 5, 247, 18, 27, 68, 15, 5, 246, 252, 15, 5, 246, 
-    242, 15, 5, 246, 217, 15, 5, 246, 197, 15, 5, 246, 198, 27, 244, 228, 15, 
-    5, 246, 198, 27, 244, 229, 222, 59, 15, 5, 246, 198, 27, 234, 25, 15, 5, 
-    246, 198, 250, 95, 246, 197, 15, 5, 246, 198, 230, 110, 246, 197, 15, 5, 
-    246, 198, 223, 226, 15, 5, 246, 145, 15, 5, 246, 143, 15, 5, 246, 130, 
-    15, 5, 246, 78, 15, 5, 246, 79, 27, 60, 15, 5, 246, 79, 27, 112, 88, 235, 
-    162, 15, 5, 246, 79, 27, 112, 88, 235, 163, 27, 235, 162, 15, 5, 246, 79, 
-    27, 254, 131, 15, 5, 246, 79, 27, 252, 228, 15, 5, 246, 79, 27, 247, 100, 
-    244, 3, 15, 5, 246, 79, 27, 247, 100, 244, 4, 244, 3, 15, 5, 246, 79, 27, 
-    155, 15, 5, 246, 79, 27, 243, 214, 244, 3, 15, 5, 246, 79, 27, 238, 2, 
-    244, 3, 15, 5, 246, 79, 27, 236, 208, 15, 5, 246, 79, 27, 236, 209, 223, 
-    226, 15, 5, 246, 79, 27, 236, 5, 15, 5, 246, 79, 27, 235, 188, 15, 5, 
-    246, 79, 27, 235, 163, 27, 235, 162, 15, 5, 246, 79, 27, 235, 67, 15, 5, 
-    246, 79, 27, 234, 231, 15, 5, 246, 79, 27, 220, 124, 15, 5, 246, 79, 27, 
-    220, 115, 15, 5, 245, 0, 15, 5, 245, 1, 244, 3, 15, 5, 244, 254, 15, 5, 
-    244, 255, 27, 112, 88, 249, 208, 88, 155, 15, 5, 244, 255, 27, 112, 88, 
-    155, 15, 5, 244, 255, 27, 112, 88, 238, 1, 15, 5, 244, 255, 27, 255, 10, 
-    222, 60, 88, 222, 147, 15, 5, 244, 255, 27, 254, 131, 15, 5, 244, 255, 
-    27, 254, 7, 15, 5, 244, 255, 27, 254, 6, 88, 244, 240, 15, 5, 244, 255, 
-    27, 252, 228, 15, 5, 244, 255, 27, 252, 201, 88, 203, 15, 5, 244, 255, 
-    27, 251, 228, 15, 5, 244, 255, 27, 251, 229, 88, 203, 15, 5, 244, 255, 
-    27, 249, 207, 15, 5, 244, 255, 27, 249, 15, 15, 5, 244, 255, 27, 248, 
-    231, 27, 224, 246, 15, 5, 244, 255, 27, 247, 109, 15, 5, 244, 255, 27, 
-    246, 217, 15, 5, 244, 255, 27, 246, 218, 88, 235, 188, 15, 5, 244, 255, 
-    27, 246, 197, 15, 5, 244, 255, 27, 246, 198, 27, 244, 229, 222, 59, 15, 
-    5, 244, 255, 27, 244, 229, 222, 59, 15, 5, 244, 255, 27, 244, 220, 15, 5, 
-    244, 255, 27, 244, 103, 15, 5, 244, 255, 27, 244, 101, 15, 5, 244, 255, 
-    27, 244, 102, 88, 60, 15, 5, 244, 255, 27, 244, 88, 88, 223, 103, 15, 5, 
-    244, 255, 27, 243, 214, 88, 234, 232, 88, 246, 130, 15, 5, 244, 255, 27, 
-    243, 197, 15, 5, 244, 255, 27, 243, 198, 88, 235, 188, 15, 5, 244, 255, 
-    27, 243, 113, 88, 235, 67, 15, 5, 244, 255, 27, 242, 169, 15, 5, 244, 
-    255, 27, 238, 2, 244, 3, 15, 5, 244, 255, 27, 237, 146, 88, 242, 174, 88, 
-    254, 7, 15, 5, 244, 255, 27, 236, 240, 15, 5, 244, 255, 27, 236, 208, 15, 
-    5, 244, 255, 27, 236, 110, 15, 5, 244, 255, 27, 236, 111, 88, 235, 162, 
-    15, 5, 244, 255, 27, 236, 6, 88, 254, 131, 15, 5, 244, 255, 27, 235, 188, 
-    15, 5, 244, 255, 27, 234, 26, 88, 246, 197, 15, 5, 244, 255, 27, 233, 
-    196, 15, 5, 244, 255, 27, 231, 103, 15, 5, 244, 255, 27, 231, 104, 104, 
-    231, 103, 15, 5, 244, 255, 27, 187, 15, 5, 244, 255, 27, 226, 156, 15, 5, 
-    244, 255, 27, 226, 131, 15, 5, 244, 255, 27, 224, 246, 15, 5, 244, 255, 
-    27, 224, 247, 88, 220, 240, 15, 5, 244, 255, 27, 224, 219, 15, 5, 244, 
-    255, 27, 223, 74, 15, 5, 244, 255, 27, 222, 130, 15, 5, 244, 255, 27, 68, 
-    15, 5, 244, 255, 27, 220, 115, 15, 5, 244, 255, 27, 220, 116, 88, 247, 
-    111, 15, 5, 244, 255, 104, 244, 254, 15, 5, 244, 249, 15, 5, 244, 250, 
-    250, 95, 244, 249, 15, 5, 244, 247, 15, 5, 244, 248, 104, 244, 248, 244, 
-    221, 104, 244, 220, 15, 5, 244, 240, 15, 5, 244, 241, 244, 248, 104, 244, 
-    248, 244, 221, 104, 244, 220, 15, 5, 244, 239, 15, 5, 244, 237, 15, 5, 
-    244, 230, 15, 5, 244, 228, 15, 5, 244, 229, 222, 59, 15, 5, 244, 229, 
-    104, 244, 228, 15, 5, 244, 229, 250, 95, 244, 228, 15, 5, 244, 220, 15, 
-    5, 244, 219, 15, 5, 244, 215, 15, 5, 244, 166, 15, 5, 244, 167, 27, 235, 
-    247, 15, 5, 244, 103, 15, 5, 244, 104, 27, 73, 15, 5, 244, 104, 27, 68, 
-    15, 5, 244, 104, 250, 95, 244, 103, 15, 5, 244, 101, 15, 5, 244, 102, 
-    104, 244, 101, 15, 5, 244, 102, 250, 95, 244, 101, 15, 5, 244, 99, 15, 5, 
-    244, 87, 15, 5, 244, 88, 244, 3, 15, 5, 244, 85, 15, 5, 244, 86, 27, 112, 
-    88, 238, 1, 15, 5, 244, 86, 27, 244, 229, 222, 59, 15, 5, 244, 86, 27, 
-    238, 1, 15, 5, 244, 86, 27, 234, 232, 88, 238, 1, 15, 5, 244, 86, 27, 
-    187, 15, 5, 244, 83, 15, 5, 244, 81, 15, 5, 244, 82, 250, 95, 244, 81, 
-    15, 5, 244, 82, 27, 252, 228, 15, 5, 244, 82, 27, 222, 130, 15, 5, 244, 
-    82, 222, 59, 15, 5, 244, 17, 15, 5, 244, 18, 250, 95, 244, 17, 15, 5, 
-    244, 15, 15, 5, 244, 16, 27, 236, 240, 15, 5, 244, 16, 27, 236, 241, 27, 
-    238, 2, 244, 3, 15, 5, 244, 16, 27, 231, 103, 15, 5, 244, 16, 27, 226, 
-    157, 88, 220, 253, 15, 5, 244, 16, 244, 3, 15, 5, 244, 11, 15, 5, 244, 
-    12, 27, 112, 88, 235, 247, 15, 5, 244, 12, 27, 235, 247, 15, 5, 244, 12, 
-    104, 244, 12, 234, 225, 15, 5, 244, 7, 15, 5, 244, 5, 15, 5, 244, 6, 27, 
-    224, 246, 15, 5, 243, 253, 15, 5, 243, 252, 15, 5, 243, 249, 15, 5, 243, 
-    248, 15, 5, 155, 15, 5, 243, 214, 222, 59, 15, 5, 243, 214, 244, 3, 15, 
-    5, 243, 197, 15, 5, 243, 112, 15, 5, 243, 113, 27, 254, 7, 15, 5, 243, 
-    113, 27, 254, 5, 15, 5, 243, 113, 27, 252, 228, 15, 5, 243, 113, 27, 248, 
-    202, 15, 5, 243, 113, 27, 244, 247, 15, 5, 243, 113, 27, 236, 104, 15, 5, 
-    243, 113, 27, 231, 103, 15, 5, 243, 113, 27, 224, 246, 15, 5, 243, 113, 
-    27, 68, 15, 5, 242, 173, 15, 5, 242, 169, 15, 5, 242, 170, 27, 254, 131, 
-    15, 5, 242, 170, 27, 243, 197, 15, 5, 242, 170, 27, 236, 208, 15, 5, 242, 
-    170, 27, 235, 29, 15, 5, 242, 170, 27, 220, 115, 15, 5, 242, 166, 15, 5, 
-    72, 15, 5, 242, 107, 60, 15, 5, 242, 69, 15, 5, 238, 29, 15, 5, 238, 30, 
-    104, 238, 30, 251, 228, 15, 5, 238, 30, 104, 238, 30, 223, 226, 15, 5, 
-    238, 4, 15, 5, 238, 1, 15, 5, 238, 2, 248, 255, 15, 5, 238, 2, 227, 147, 
-    15, 5, 238, 2, 104, 238, 2, 224, 205, 104, 224, 205, 220, 116, 104, 220, 
-    115, 15, 5, 238, 2, 244, 3, 15, 5, 237, 249, 15, 5, 237, 250, 27, 244, 
-    229, 222, 59, 15, 5, 237, 248, 15, 5, 237, 238, 15, 5, 237, 239, 27, 222, 
-    130, 15, 5, 237, 239, 250, 95, 237, 238, 15, 5, 237, 239, 230, 110, 237, 
-    238, 15, 5, 237, 239, 223, 226, 15, 5, 237, 231, 15, 5, 237, 223, 15, 5, 
-    237, 156, 15, 5, 237, 145, 15, 5, 175, 15, 5, 206, 27, 60, 15, 5, 206, 
-    27, 254, 244, 15, 5, 206, 27, 254, 245, 88, 236, 5, 15, 5, 206, 27, 254, 
-    5, 15, 5, 206, 27, 252, 228, 15, 5, 206, 27, 252, 216, 15, 5, 206, 27, 
-    135, 15, 5, 206, 27, 252, 84, 15, 5, 206, 27, 246, 143, 15, 5, 206, 27, 
-    246, 130, 15, 5, 206, 27, 245, 0, 15, 5, 206, 27, 244, 240, 15, 5, 206, 
-    27, 244, 229, 222, 59, 15, 5, 206, 27, 244, 220, 15, 5, 206, 27, 244, 
-    221, 88, 225, 24, 88, 60, 15, 5, 206, 27, 244, 103, 15, 5, 206, 27, 244, 
-    87, 15, 5, 206, 27, 244, 82, 88, 226, 131, 15, 5, 206, 27, 244, 82, 250, 
-    95, 244, 81, 15, 5, 206, 27, 244, 17, 15, 5, 206, 27, 243, 252, 15, 5, 
-    206, 27, 238, 1, 15, 5, 206, 27, 237, 238, 15, 5, 206, 27, 236, 240, 15, 
-    5, 206, 27, 236, 113, 15, 5, 206, 27, 236, 110, 15, 5, 206, 27, 235, 67, 
-    15, 5, 206, 27, 234, 231, 15, 5, 206, 27, 234, 25, 15, 5, 206, 27, 234, 
-    26, 88, 247, 111, 15, 5, 206, 27, 234, 26, 88, 244, 103, 15, 5, 206, 27, 
-    234, 26, 88, 222, 87, 15, 5, 206, 27, 233, 196, 15, 5, 206, 27, 233, 197, 
-    88, 231, 98, 15, 5, 206, 27, 232, 141, 15, 5, 206, 27, 231, 103, 15, 5, 
-    206, 27, 229, 108, 15, 5, 206, 27, 227, 22, 15, 5, 206, 27, 226, 177, 15, 
-    5, 206, 27, 226, 131, 15, 5, 206, 27, 225, 25, 15, 5, 206, 27, 224, 246, 
-    15, 5, 206, 27, 224, 219, 15, 5, 206, 27, 224, 170, 15, 5, 206, 27, 224, 
-    132, 15, 5, 206, 27, 223, 81, 15, 5, 206, 27, 222, 112, 15, 5, 206, 27, 
-    68, 15, 5, 206, 27, 220, 124, 15, 5, 206, 27, 220, 115, 15, 5, 206, 27, 
-    220, 90, 27, 187, 15, 5, 206, 27, 220, 30, 15, 5, 206, 27, 217, 42, 15, 
-    5, 237, 6, 15, 5, 237, 7, 250, 95, 237, 6, 15, 5, 236, 255, 15, 5, 236, 
-    253, 15, 5, 236, 251, 15, 5, 236, 250, 15, 5, 236, 248, 15, 5, 236, 249, 
-    104, 236, 248, 15, 5, 236, 240, 15, 5, 236, 241, 27, 238, 2, 244, 3, 15, 
-    5, 236, 236, 15, 5, 236, 237, 27, 252, 228, 15, 5, 236, 237, 250, 95, 
-    236, 236, 15, 5, 236, 235, 15, 5, 236, 234, 15, 5, 236, 208, 15, 5, 236, 
-    209, 235, 175, 27, 105, 104, 235, 175, 27, 68, 15, 5, 236, 209, 104, 236, 
-    209, 235, 175, 27, 105, 104, 235, 175, 27, 68, 15, 5, 236, 160, 15, 5, 
-    236, 113, 15, 5, 236, 114, 27, 252, 228, 15, 5, 236, 114, 27, 68, 15, 5, 
-    236, 114, 27, 220, 115, 15, 5, 236, 110, 15, 5, 236, 104, 15, 5, 236, 93, 
-    15, 5, 236, 92, 15, 5, 236, 90, 15, 5, 236, 91, 104, 236, 90, 15, 5, 236, 
-    7, 15, 5, 236, 8, 104, 243, 113, 27, 254, 6, 236, 8, 104, 243, 113, 27, 
-    254, 5, 15, 5, 236, 5, 15, 5, 236, 3, 15, 5, 236, 4, 219, 177, 17, 15, 5, 
-    236, 2, 15, 5, 236, 0, 15, 5, 236, 1, 244, 3, 15, 5, 235, 255, 15, 5, 
-    235, 247, 15, 5, 235, 248, 230, 110, 235, 247, 15, 5, 235, 242, 15, 5, 
-    235, 225, 15, 5, 235, 188, 15, 5, 235, 174, 15, 5, 235, 175, 27, 60, 15, 
-    5, 235, 175, 27, 112, 88, 249, 208, 88, 155, 15, 5, 235, 175, 27, 112, 
-    88, 244, 220, 15, 5, 235, 175, 27, 112, 88, 235, 162, 15, 5, 235, 175, 
-    27, 254, 175, 15, 5, 235, 175, 27, 254, 131, 15, 5, 235, 175, 27, 254, 8, 
-    217, 38, 222, 59, 15, 5, 235, 175, 27, 252, 228, 15, 5, 235, 175, 27, 
-    252, 84, 15, 5, 235, 175, 27, 249, 156, 15, 5, 235, 175, 27, 246, 197, 
-    15, 5, 235, 175, 27, 245, 0, 15, 5, 235, 175, 27, 244, 220, 15, 5, 235, 
-    175, 27, 244, 11, 15, 5, 235, 175, 27, 244, 12, 88, 244, 11, 15, 5, 235, 
-    175, 27, 155, 15, 5, 235, 175, 27, 243, 197, 15, 5, 235, 175, 27, 243, 
-    113, 27, 231, 103, 15, 5, 235, 175, 27, 238, 2, 244, 3, 15, 5, 235, 175, 
-    27, 237, 238, 15, 5, 235, 175, 27, 237, 239, 88, 155, 15, 5, 235, 175, 
-    27, 237, 239, 88, 234, 231, 15, 5, 235, 175, 27, 236, 113, 15, 5, 235, 
-    175, 27, 236, 104, 15, 5, 235, 175, 27, 236, 5, 15, 5, 235, 175, 27, 236, 
-    0, 15, 5, 235, 175, 27, 236, 1, 88, 243, 113, 88, 60, 15, 5, 235, 175, 
-    27, 235, 174, 15, 5, 235, 175, 27, 235, 29, 15, 5, 235, 175, 27, 234, 
-    231, 15, 5, 235, 175, 27, 234, 221, 15, 5, 235, 175, 27, 234, 25, 15, 5, 
-    235, 175, 27, 234, 26, 88, 246, 197, 15, 5, 235, 175, 27, 233, 62, 15, 5, 
-    235, 175, 27, 232, 141, 15, 5, 235, 175, 27, 224, 247, 88, 223, 74, 15, 
-    5, 235, 175, 27, 224, 203, 88, 244, 82, 88, 246, 143, 15, 5, 235, 175, 
-    27, 224, 203, 88, 244, 82, 222, 59, 15, 5, 235, 175, 27, 224, 168, 15, 5, 
-    235, 175, 27, 224, 169, 88, 224, 168, 15, 5, 235, 175, 27, 223, 74, 15, 
-    5, 235, 175, 27, 222, 141, 15, 5, 235, 175, 27, 222, 130, 15, 5, 235, 
-    175, 27, 222, 88, 88, 112, 88, 223, 104, 88, 208, 15, 5, 235, 175, 27, 
-    68, 15, 5, 235, 175, 27, 105, 88, 60, 15, 5, 235, 175, 27, 105, 88, 105, 
-    88, 68, 15, 5, 235, 175, 27, 220, 125, 88, 254, 7, 15, 5, 235, 175, 27, 
-    220, 115, 15, 5, 235, 175, 27, 220, 30, 15, 5, 235, 175, 223, 226, 15, 5, 
-    235, 172, 15, 5, 235, 173, 27, 224, 246, 15, 5, 235, 173, 27, 224, 247, 
-    88, 223, 74, 15, 5, 235, 173, 244, 3, 15, 5, 235, 173, 244, 4, 104, 235, 
-    173, 244, 4, 224, 246, 15, 5, 235, 169, 15, 5, 235, 162, 15, 5, 235, 163, 
-    27, 235, 162, 15, 5, 235, 160, 15, 5, 235, 161, 27, 235, 247, 15, 5, 235, 
-    161, 27, 235, 248, 88, 227, 22, 15, 5, 235, 67, 15, 5, 235, 54, 15, 5, 
-    235, 46, 15, 5, 235, 29, 15, 5, 234, 231, 15, 5, 234, 232, 27, 252, 228, 
-    15, 5, 234, 229, 15, 5, 234, 230, 27, 254, 175, 15, 5, 234, 230, 27, 252, 
-    228, 15, 5, 234, 230, 27, 246, 130, 15, 5, 234, 230, 27, 246, 131, 222, 
-    59, 15, 5, 234, 230, 27, 244, 229, 222, 59, 15, 5, 234, 230, 27, 243, 
-    113, 27, 252, 228, 15, 5, 234, 230, 27, 237, 238, 15, 5, 234, 230, 27, 
-    236, 253, 15, 5, 234, 230, 27, 236, 251, 15, 5, 234, 230, 27, 236, 252, 
-    88, 254, 7, 15, 5, 234, 230, 27, 236, 113, 15, 5, 234, 230, 27, 235, 189, 
-    88, 254, 7, 15, 5, 234, 230, 27, 235, 174, 15, 5, 234, 230, 27, 234, 26, 
-    88, 246, 197, 15, 5, 234, 230, 27, 232, 141, 15, 5, 234, 230, 27, 231, 
-    144, 15, 5, 234, 230, 27, 224, 141, 88, 254, 7, 15, 5, 234, 230, 27, 224, 
-    124, 88, 251, 248, 15, 5, 234, 230, 27, 220, 253, 15, 5, 234, 230, 222, 
-    59, 15, 5, 234, 230, 250, 95, 234, 229, 15, 5, 234, 230, 230, 110, 234, 
-    229, 15, 5, 234, 230, 223, 226, 15, 5, 234, 230, 224, 228, 15, 5, 234, 
-    228, 15, 5, 234, 225, 15, 5, 234, 226, 104, 234, 225, 15, 5, 234, 226, 
-    230, 110, 234, 225, 15, 5, 234, 226, 224, 228, 15, 5, 234, 224, 15, 5, 
-    234, 221, 15, 5, 234, 219, 15, 5, 234, 220, 104, 234, 219, 15, 5, 234, 
-    220, 104, 234, 220, 244, 221, 104, 244, 220, 15, 5, 196, 15, 5, 234, 120, 
-    27, 222, 130, 15, 5, 234, 120, 244, 3, 15, 5, 234, 119, 15, 5, 234, 106, 
-    15, 5, 234, 74, 15, 5, 234, 57, 15, 5, 234, 56, 15, 5, 234, 25, 15, 5, 
-    233, 244, 15, 5, 233, 196, 15, 5, 233, 159, 15, 5, 233, 99, 15, 5, 233, 
-    100, 104, 233, 99, 15, 5, 233, 92, 15, 5, 233, 93, 244, 3, 15, 5, 233, 
-    78, 15, 5, 233, 65, 15, 5, 233, 62, 15, 5, 233, 63, 27, 60, 15, 5, 233, 
-    63, 27, 235, 247, 15, 5, 233, 63, 27, 217, 114, 15, 5, 233, 63, 104, 233, 
-    62, 15, 5, 233, 63, 104, 233, 63, 27, 112, 88, 208, 15, 5, 233, 63, 250, 
-    95, 233, 62, 15, 5, 233, 60, 15, 5, 233, 61, 27, 60, 15, 5, 233, 61, 27, 
-    112, 88, 249, 15, 15, 5, 233, 61, 27, 249, 15, 15, 5, 233, 61, 244, 3, 
-    15, 5, 208, 15, 5, 232, 237, 15, 5, 232, 227, 15, 5, 232, 228, 237, 169, 
-    15, 5, 232, 228, 27, 224, 171, 222, 59, 15, 5, 232, 228, 230, 110, 232, 
-    227, 15, 5, 232, 226, 15, 5, 232, 222, 231, 90, 15, 5, 232, 221, 15, 5, 
-    232, 220, 15, 5, 232, 141, 15, 5, 232, 142, 27, 60, 15, 5, 232, 142, 27, 
-    220, 115, 15, 5, 232, 142, 224, 228, 15, 5, 232, 62, 15, 5, 232, 63, 27, 
-    73, 15, 5, 232, 61, 15, 5, 232, 34, 15, 5, 232, 35, 27, 244, 229, 222, 
-    59, 15, 5, 232, 35, 27, 244, 221, 88, 244, 229, 222, 59, 15, 5, 232, 32, 
-    15, 5, 232, 33, 27, 254, 131, 15, 5, 232, 33, 27, 254, 7, 15, 5, 232, 33, 
-    27, 254, 8, 88, 254, 7, 15, 5, 232, 33, 27, 244, 11, 15, 5, 232, 33, 27, 
-    234, 26, 88, 244, 229, 222, 59, 15, 5, 232, 33, 27, 232, 141, 15, 5, 232, 
-    33, 27, 231, 103, 15, 5, 232, 33, 27, 224, 246, 15, 5, 232, 33, 27, 224, 
-    247, 88, 112, 254, 131, 15, 5, 232, 33, 27, 224, 247, 88, 254, 7, 15, 5, 
-    232, 33, 27, 224, 247, 88, 254, 8, 88, 254, 7, 15, 5, 232, 33, 27, 220, 
-    125, 88, 254, 7, 15, 5, 232, 33, 27, 220, 30, 15, 5, 232, 22, 15, 5, 231, 
-    144, 15, 5, 231, 117, 15, 5, 231, 103, 15, 5, 231, 104, 235, 173, 27, 
-    244, 220, 15, 5, 231, 104, 235, 173, 27, 234, 57, 15, 5, 231, 104, 235, 
-    173, 27, 226, 156, 15, 5, 231, 104, 235, 173, 27, 226, 157, 104, 231, 
-    104, 235, 173, 27, 226, 156, 15, 5, 231, 104, 235, 173, 27, 220, 30, 15, 
-    5, 231, 104, 222, 59, 15, 5, 231, 104, 104, 231, 103, 15, 5, 231, 104, 
-    250, 95, 231, 103, 15, 5, 231, 104, 250, 95, 231, 104, 235, 173, 104, 
-    235, 172, 15, 5, 231, 98, 15, 5, 231, 99, 255, 10, 27, 254, 3, 15, 5, 
-    231, 99, 255, 10, 27, 252, 84, 15, 5, 231, 99, 255, 10, 27, 247, 107, 15, 
-    5, 231, 99, 255, 10, 27, 244, 11, 15, 5, 231, 99, 255, 10, 27, 238, 2, 
-    244, 3, 15, 5, 231, 99, 255, 10, 27, 236, 251, 15, 5, 231, 99, 255, 10, 
-    27, 235, 188, 15, 5, 231, 99, 255, 10, 27, 232, 141, 15, 5, 231, 99, 255, 
-    10, 27, 224, 121, 15, 5, 231, 99, 255, 10, 27, 220, 124, 15, 5, 231, 99, 
-    236, 91, 27, 252, 84, 15, 5, 231, 99, 236, 91, 27, 252, 85, 68, 15, 5, 
-    187, 15, 5, 230, 37, 15, 5, 230, 12, 15, 5, 229, 246, 15, 5, 229, 152, 
-    15, 5, 229, 108, 15, 5, 229, 109, 27, 60, 15, 5, 229, 109, 27, 255, 11, 
-    15, 5, 229, 109, 27, 252, 84, 15, 5, 229, 109, 27, 251, 248, 15, 5, 229, 
-    109, 27, 73, 15, 5, 229, 109, 27, 72, 15, 5, 229, 109, 27, 242, 69, 15, 
-    5, 229, 109, 27, 68, 15, 5, 229, 109, 27, 220, 124, 15, 5, 229, 109, 250, 
-    95, 229, 108, 15, 5, 229, 67, 15, 5, 229, 68, 27, 236, 236, 15, 5, 229, 
-    68, 27, 220, 115, 15, 5, 229, 68, 27, 217, 114, 15, 5, 229, 68, 230, 110, 
-    229, 67, 15, 5, 203, 15, 5, 227, 254, 15, 5, 227, 147, 15, 5, 227, 22, 
-    15, 5, 226, 177, 15, 5, 226, 166, 231, 90, 15, 5, 226, 165, 15, 5, 226, 
-    166, 27, 60, 15, 5, 226, 166, 27, 247, 111, 15, 5, 226, 166, 27, 247, 
-    109, 15, 5, 226, 166, 27, 155, 15, 5, 226, 166, 27, 236, 240, 15, 5, 226, 
-    166, 27, 235, 247, 15, 5, 226, 166, 27, 234, 219, 15, 5, 226, 166, 27, 
-    233, 196, 15, 5, 226, 166, 27, 231, 103, 15, 5, 226, 166, 27, 226, 156, 
-    15, 5, 226, 166, 27, 224, 219, 15, 5, 226, 166, 27, 222, 147, 15, 5, 226, 
-    166, 27, 220, 124, 15, 5, 226, 166, 27, 220, 121, 15, 5, 226, 166, 27, 
-    220, 94, 15, 5, 226, 166, 27, 220, 50, 15, 5, 226, 166, 27, 220, 30, 15, 
-    5, 226, 166, 104, 226, 165, 15, 5, 226, 166, 244, 3, 15, 5, 226, 156, 15, 
-    5, 226, 157, 235, 175, 27, 254, 5, 15, 5, 226, 138, 15, 5, 226, 131, 15, 
-    5, 225, 25, 15, 5, 225, 23, 15, 5, 225, 24, 27, 60, 15, 5, 225, 24, 27, 
-    252, 228, 15, 5, 225, 24, 27, 244, 81, 15, 5, 225, 24, 27, 232, 141, 15, 
-    5, 225, 24, 27, 224, 168, 15, 5, 225, 24, 27, 220, 240, 15, 5, 225, 24, 
-    27, 68, 15, 5, 225, 24, 27, 105, 88, 60, 15, 5, 225, 22, 15, 5, 225, 20, 
-    15, 5, 225, 3, 15, 5, 224, 246, 15, 5, 224, 247, 242, 173, 15, 5, 224, 
-    247, 104, 224, 247, 244, 248, 104, 244, 248, 244, 221, 104, 244, 220, 15, 
-    5, 224, 247, 104, 224, 247, 222, 148, 104, 222, 148, 244, 221, 104, 244, 
-    220, 15, 5, 224, 239, 15, 5, 224, 234, 15, 5, 224, 231, 15, 5, 224, 230, 
-    15, 5, 224, 227, 15, 5, 224, 219, 15, 5, 224, 220, 27, 60, 15, 5, 224, 
-    220, 27, 237, 238, 15, 5, 224, 213, 15, 5, 224, 214, 27, 60, 15, 5, 224, 
-    214, 27, 252, 217, 15, 5, 224, 214, 27, 251, 237, 15, 5, 224, 214, 27, 
-    248, 219, 15, 5, 224, 214, 27, 244, 220, 15, 5, 224, 214, 27, 238, 1, 15, 
-    5, 224, 214, 27, 238, 2, 244, 3, 15, 5, 224, 214, 27, 235, 242, 15, 5, 
-    224, 214, 27, 234, 221, 15, 5, 224, 214, 27, 233, 92, 15, 5, 224, 214, 
-    27, 226, 156, 15, 5, 224, 208, 15, 5, 224, 204, 15, 5, 224, 205, 222, 59, 
-    15, 5, 224, 205, 104, 224, 205, 251, 229, 104, 251, 228, 15, 5, 224, 202, 
-    15, 5, 224, 170, 15, 5, 224, 171, 104, 237, 170, 224, 170, 15, 5, 224, 
-    168, 15, 5, 224, 167, 15, 5, 224, 140, 15, 5, 224, 141, 244, 3, 15, 5, 
-    224, 132, 15, 5, 224, 130, 15, 5, 224, 131, 104, 224, 131, 224, 168, 15, 
-    5, 224, 123, 15, 5, 224, 121, 15, 5, 223, 103, 15, 5, 223, 104, 104, 223, 
-    103, 15, 5, 223, 83, 15, 5, 223, 82, 15, 5, 223, 81, 15, 5, 223, 74, 15, 
-    5, 223, 73, 15, 5, 223, 53, 15, 5, 223, 52, 15, 5, 222, 155, 15, 5, 222, 
-    156, 253, 251, 15, 5, 222, 156, 27, 243, 112, 15, 5, 222, 156, 27, 233, 
-    196, 15, 5, 222, 156, 244, 3, 15, 5, 222, 147, 15, 5, 222, 148, 104, 222, 
-    148, 232, 63, 104, 232, 63, 248, 203, 104, 248, 202, 15, 5, 222, 148, 
-    223, 226, 15, 5, 222, 141, 15, 5, 118, 27, 252, 84, 15, 5, 118, 27, 244, 
-    11, 15, 5, 118, 27, 224, 246, 15, 5, 118, 27, 224, 170, 15, 5, 118, 27, 
-    220, 253, 15, 5, 118, 27, 220, 115, 15, 5, 222, 130, 15, 5, 222, 112, 15, 
-    5, 222, 87, 15, 5, 222, 88, 244, 3, 15, 5, 221, 205, 15, 5, 221, 206, 
-    222, 59, 15, 5, 221, 181, 15, 5, 221, 165, 15, 5, 221, 166, 27, 222, 130, 
-    15, 5, 221, 166, 104, 221, 165, 15, 5, 221, 166, 104, 221, 166, 244, 248, 
-    104, 244, 248, 244, 221, 104, 244, 220, 15, 5, 221, 0, 15, 5, 220, 253, 
-    15, 5, 220, 251, 15, 5, 220, 249, 15, 5, 220, 240, 15, 5, 220, 241, 104, 
-    220, 241, 217, 115, 104, 217, 114, 15, 5, 68, 15, 5, 105, 244, 11, 15, 5, 
-    105, 105, 68, 15, 5, 105, 104, 105, 230, 44, 104, 230, 44, 244, 221, 104, 
-    244, 220, 15, 5, 105, 104, 105, 223, 54, 104, 223, 53, 15, 5, 105, 104, 
-    105, 105, 210, 104, 105, 227, 159, 15, 5, 220, 124, 15, 5, 220, 121, 15, 
-    5, 220, 115, 15, 5, 220, 116, 235, 242, 15, 5, 220, 116, 27, 252, 228, 
-    15, 5, 220, 116, 27, 233, 196, 15, 5, 220, 116, 27, 105, 88, 105, 88, 68, 
-    15, 5, 220, 116, 27, 105, 88, 105, 88, 105, 244, 3, 15, 5, 220, 116, 244, 
-    3, 15, 5, 220, 116, 224, 228, 15, 5, 220, 116, 224, 229, 27, 252, 228, 
-    15, 5, 220, 111, 15, 5, 220, 94, 15, 5, 220, 95, 27, 235, 174, 15, 5, 
-    220, 95, 27, 234, 26, 88, 249, 207, 15, 5, 220, 95, 27, 225, 23, 15, 5, 
-    220, 95, 27, 68, 15, 5, 220, 93, 15, 5, 220, 89, 15, 5, 220, 90, 27, 236, 
-    208, 15, 5, 220, 90, 27, 187, 15, 5, 220, 87, 15, 5, 220, 88, 244, 3, 15, 
-    5, 220, 50, 15, 5, 220, 51, 250, 95, 220, 50, 15, 5, 220, 51, 224, 228, 
-    15, 5, 220, 48, 15, 5, 220, 49, 27, 112, 88, 155, 15, 5, 220, 49, 27, 
-    112, 88, 208, 15, 5, 220, 49, 27, 254, 175, 15, 5, 220, 49, 27, 155, 15, 
-    5, 220, 49, 27, 231, 103, 15, 5, 220, 49, 27, 220, 124, 15, 5, 220, 49, 
-    27, 220, 125, 88, 254, 7, 15, 5, 220, 49, 27, 220, 125, 88, 252, 84, 15, 
-    5, 220, 47, 15, 5, 220, 44, 15, 5, 220, 43, 15, 5, 220, 40, 15, 5, 220, 
-    41, 27, 60, 15, 5, 220, 41, 27, 254, 3, 15, 5, 220, 41, 27, 135, 15, 5, 
-    220, 41, 27, 247, 101, 15, 5, 220, 41, 27, 245, 0, 15, 5, 220, 41, 27, 
-    244, 240, 15, 5, 220, 41, 27, 244, 229, 222, 59, 15, 5, 220, 41, 27, 244, 
-    220, 15, 5, 220, 41, 27, 244, 17, 15, 5, 220, 41, 27, 155, 15, 5, 220, 
-    41, 27, 238, 1, 15, 5, 220, 41, 27, 237, 238, 15, 5, 220, 41, 27, 237, 
-    145, 15, 5, 220, 41, 27, 236, 113, 15, 5, 220, 41, 27, 234, 219, 15, 5, 
-    220, 41, 27, 233, 159, 15, 5, 220, 41, 27, 187, 15, 5, 220, 41, 27, 224, 
-    246, 15, 5, 220, 41, 27, 224, 130, 15, 5, 220, 41, 27, 221, 0, 15, 5, 
-    220, 41, 27, 105, 88, 244, 11, 15, 5, 220, 41, 27, 220, 115, 15, 5, 220, 
-    41, 27, 220, 38, 15, 5, 220, 38, 15, 5, 220, 39, 27, 68, 15, 5, 220, 30, 
-    15, 5, 220, 31, 27, 60, 15, 5, 220, 31, 27, 236, 7, 15, 5, 220, 31, 27, 
-    235, 247, 15, 5, 220, 31, 27, 222, 130, 15, 5, 220, 27, 15, 5, 220, 29, 
-    15, 5, 220, 28, 15, 5, 220, 24, 15, 5, 220, 13, 15, 5, 220, 14, 27, 236, 
-    208, 15, 5, 220, 12, 15, 5, 217, 114, 15, 5, 217, 115, 222, 59, 15, 5, 
-    217, 115, 204, 27, 235, 247, 15, 5, 217, 111, 15, 5, 217, 104, 15, 5, 
-    217, 91, 15, 5, 217, 42, 15, 5, 217, 43, 104, 217, 42, 15, 5, 217, 41, 
-    15, 5, 217, 39, 15, 5, 217, 40, 236, 254, 222, 59, 15, 5, 217, 34, 15, 5, 
-    217, 26, 15, 5, 217, 13, 15, 5, 217, 11, 15, 5, 217, 12, 27, 60, 15, 5, 
-    217, 10, 15, 5, 217, 9, 15, 120, 5, 124, 254, 7, 15, 120, 5, 148, 254, 7, 
-    15, 120, 5, 245, 116, 254, 7, 15, 120, 5, 245, 170, 254, 7, 15, 120, 5, 
-    224, 82, 254, 7, 15, 120, 5, 225, 43, 254, 7, 15, 120, 5, 246, 235, 254, 
-    7, 15, 120, 5, 232, 31, 254, 7, 15, 120, 5, 148, 248, 202, 15, 120, 5, 
-    245, 116, 248, 202, 15, 120, 5, 245, 170, 248, 202, 15, 120, 5, 224, 82, 
-    248, 202, 15, 120, 5, 225, 43, 248, 202, 15, 120, 5, 246, 235, 248, 202, 
-    15, 120, 5, 232, 31, 248, 202, 15, 120, 5, 245, 116, 68, 15, 120, 5, 245, 
-    170, 68, 15, 120, 5, 224, 82, 68, 15, 120, 5, 225, 43, 68, 15, 120, 5, 
-    246, 235, 68, 15, 120, 5, 232, 31, 68, 15, 120, 5, 131, 244, 168, 15, 
-    120, 5, 124, 244, 168, 15, 120, 5, 148, 244, 168, 15, 120, 5, 245, 116, 
-    244, 168, 15, 120, 5, 245, 170, 244, 168, 15, 120, 5, 224, 82, 244, 168, 
-    15, 120, 5, 225, 43, 244, 168, 15, 120, 5, 246, 235, 244, 168, 15, 120, 
-    5, 232, 31, 244, 168, 15, 120, 5, 131, 244, 165, 15, 120, 5, 124, 244, 
-    165, 15, 120, 5, 148, 244, 165, 15, 120, 5, 245, 116, 244, 165, 15, 120, 
-    5, 245, 170, 244, 165, 15, 120, 5, 124, 225, 3, 15, 120, 5, 148, 225, 3, 
-    15, 120, 5, 148, 225, 4, 219, 177, 17, 15, 120, 5, 245, 116, 225, 3, 15, 
-    120, 5, 245, 170, 225, 3, 15, 120, 5, 224, 82, 225, 3, 15, 120, 5, 225, 
-    43, 225, 3, 15, 120, 5, 246, 235, 225, 3, 15, 120, 5, 232, 31, 225, 3, 
-    15, 120, 5, 131, 224, 254, 15, 120, 5, 124, 224, 254, 15, 120, 5, 148, 
-    224, 254, 15, 120, 5, 148, 224, 255, 219, 177, 17, 15, 120, 5, 245, 116, 
-    224, 254, 15, 120, 5, 245, 170, 224, 254, 15, 120, 5, 225, 4, 27, 244, 
-    241, 88, 248, 202, 15, 120, 5, 225, 4, 27, 244, 241, 88, 233, 159, 15, 
-    120, 5, 131, 251, 225, 15, 120, 5, 124, 251, 225, 15, 120, 5, 148, 251, 
-    225, 15, 120, 5, 148, 251, 226, 219, 177, 17, 15, 120, 5, 245, 116, 251, 
-    225, 15, 120, 5, 245, 170, 251, 225, 15, 120, 5, 148, 219, 177, 245, 124, 
-    246, 132, 15, 120, 5, 148, 219, 177, 245, 124, 246, 129, 15, 120, 5, 245, 
-    116, 219, 177, 245, 124, 235, 47, 15, 120, 5, 245, 116, 219, 177, 245, 
-    124, 235, 45, 15, 120, 5, 245, 116, 219, 177, 245, 124, 235, 48, 60, 15, 
-    120, 5, 245, 116, 219, 177, 245, 124, 235, 48, 253, 204, 15, 120, 5, 224, 
-    82, 219, 177, 245, 124, 254, 4, 15, 120, 5, 225, 43, 219, 177, 245, 124, 
-    237, 230, 15, 120, 5, 225, 43, 219, 177, 245, 124, 237, 232, 60, 15, 120, 
-    5, 225, 43, 219, 177, 245, 124, 237, 232, 253, 204, 15, 120, 5, 246, 235, 
-    219, 177, 245, 124, 220, 26, 15, 120, 5, 246, 235, 219, 177, 245, 124, 
-    220, 25, 15, 120, 5, 232, 31, 219, 177, 245, 124, 237, 246, 15, 120, 5, 
-    232, 31, 219, 177, 245, 124, 237, 245, 15, 120, 5, 232, 31, 219, 177, 
-    245, 124, 237, 244, 15, 120, 5, 232, 31, 219, 177, 245, 124, 237, 247, 
-    60, 15, 120, 5, 124, 254, 8, 222, 59, 15, 120, 5, 148, 254, 8, 222, 59, 
-    15, 120, 5, 245, 116, 254, 8, 222, 59, 15, 120, 5, 245, 170, 254, 8, 222, 
-    59, 15, 120, 5, 224, 82, 254, 8, 222, 59, 15, 120, 5, 131, 252, 207, 15, 
-    120, 5, 124, 252, 207, 15, 120, 5, 148, 252, 207, 15, 120, 5, 245, 116, 
-    252, 207, 15, 120, 5, 245, 116, 252, 208, 219, 177, 17, 15, 120, 5, 245, 
-    170, 252, 207, 15, 120, 5, 245, 170, 252, 208, 219, 177, 17, 15, 120, 5, 
-    232, 40, 15, 120, 5, 232, 41, 15, 120, 5, 131, 246, 128, 15, 120, 5, 124, 
-    246, 128, 15, 120, 5, 131, 221, 252, 248, 202, 15, 120, 5, 124, 221, 250, 
-    248, 202, 15, 120, 5, 245, 170, 224, 72, 248, 202, 15, 120, 5, 131, 221, 
-    252, 219, 177, 245, 124, 60, 15, 120, 5, 124, 221, 250, 219, 177, 245, 
-    124, 60, 15, 120, 5, 131, 246, 232, 254, 7, 15, 120, 5, 131, 228, 90, 
-    254, 7, 15, 120, 5, 48, 253, 254, 131, 224, 73, 15, 120, 5, 48, 253, 254, 
-    131, 228, 89, 15, 228, 197, 5, 48, 253, 254, 218, 174, 248, 191, 15, 228, 
-    197, 5, 69, 250, 175, 15, 228, 197, 5, 249, 11, 250, 175, 15, 228, 197, 
-    5, 249, 11, 221, 86, 10, 11, 255, 140, 10, 11, 255, 139, 10, 11, 255, 
-    138, 10, 11, 255, 137, 10, 11, 255, 136, 10, 11, 255, 135, 10, 11, 255, 
-    134, 10, 11, 255, 133, 10, 11, 255, 132, 10, 11, 255, 131, 10, 11, 255, 
-    130, 10, 11, 255, 129, 10, 11, 255, 128, 10, 11, 255, 127, 10, 11, 255, 
-    126, 10, 11, 255, 125, 10, 11, 255, 124, 10, 11, 255, 123, 10, 11, 255, 
-    122, 10, 11, 255, 121, 10, 11, 255, 120, 10, 11, 255, 119, 10, 11, 255, 
-    118, 10, 11, 255, 117, 10, 11, 255, 116, 10, 11, 255, 115, 10, 11, 255, 
-    114, 10, 11, 255, 113, 10, 11, 255, 112, 10, 11, 255, 111, 10, 11, 255, 
-    110, 10, 11, 255, 109, 10, 11, 255, 108, 10, 11, 255, 107, 10, 11, 255, 
-    106, 10, 11, 255, 105, 10, 11, 255, 104, 10, 11, 255, 103, 10, 11, 255, 
-    102, 10, 11, 255, 101, 10, 11, 255, 100, 10, 11, 255, 99, 10, 11, 255, 
-    98, 10, 11, 255, 97, 10, 11, 255, 96, 10, 11, 255, 95, 10, 11, 255, 94, 
-    10, 11, 255, 93, 10, 11, 255, 92, 10, 11, 255, 91, 10, 11, 255, 90, 10, 
-    11, 255, 89, 10, 11, 255, 88, 10, 11, 255, 87, 10, 11, 255, 86, 10, 11, 
-    255, 85, 10, 11, 255, 84, 10, 11, 255, 83, 10, 11, 255, 82, 10, 11, 255, 
-    81, 10, 11, 255, 80, 10, 11, 255, 79, 10, 11, 255, 78, 10, 11, 255, 77, 
-    10, 11, 255, 76, 10, 11, 255, 75, 10, 11, 255, 74, 10, 11, 255, 73, 10, 
-    11, 255, 72, 10, 11, 255, 71, 10, 11, 255, 70, 10, 11, 255, 69, 10, 11, 
-    255, 68, 10, 11, 255, 67, 10, 11, 255, 66, 10, 11, 255, 65, 10, 11, 255, 
-    64, 10, 11, 255, 63, 10, 11, 255, 62, 10, 11, 255, 61, 10, 11, 253, 202, 
-    10, 11, 253, 200, 10, 11, 253, 198, 10, 11, 253, 196, 10, 11, 253, 194, 
-    10, 11, 253, 193, 10, 11, 253, 191, 10, 11, 253, 189, 10, 11, 253, 187, 
-    10, 11, 253, 185, 10, 11, 251, 198, 10, 11, 251, 197, 10, 11, 251, 196, 
-    10, 11, 251, 195, 10, 11, 251, 194, 10, 11, 251, 193, 10, 11, 251, 192, 
-    10, 11, 251, 191, 10, 11, 251, 190, 10, 11, 251, 189, 10, 11, 251, 188, 
-    10, 11, 251, 187, 10, 11, 251, 186, 10, 11, 251, 185, 10, 11, 251, 184, 
-    10, 11, 251, 183, 10, 11, 251, 182, 10, 11, 251, 181, 10, 11, 251, 180, 
-    10, 11, 251, 179, 10, 11, 251, 178, 10, 11, 251, 177, 10, 11, 251, 176, 
-    10, 11, 251, 175, 10, 11, 251, 174, 10, 11, 251, 173, 10, 11, 251, 172, 
-    10, 11, 251, 171, 10, 11, 250, 45, 10, 11, 250, 44, 10, 11, 250, 43, 10, 
-    11, 250, 42, 10, 11, 250, 41, 10, 11, 250, 40, 10, 11, 250, 39, 10, 11, 
-    250, 38, 10, 11, 250, 37, 10, 11, 250, 36, 10, 11, 250, 35, 10, 11, 250, 
-    34, 10, 11, 250, 33, 10, 11, 250, 32, 10, 11, 250, 31, 10, 11, 250, 30, 
-    10, 11, 250, 29, 10, 11, 250, 28, 10, 11, 250, 27, 10, 11, 250, 26, 10, 
-    11, 250, 25, 10, 11, 250, 24, 10, 11, 250, 23, 10, 11, 250, 22, 10, 11, 
-    250, 21, 10, 11, 250, 20, 10, 11, 250, 19, 10, 11, 250, 18, 10, 11, 250, 
-    17, 10, 11, 250, 16, 10, 11, 250, 15, 10, 11, 250, 14, 10, 11, 250, 13, 
-    10, 11, 250, 12, 10, 11, 250, 11, 10, 11, 250, 10, 10, 11, 250, 9, 10, 
-    11, 250, 8, 10, 11, 250, 7, 10, 11, 250, 6, 10, 11, 250, 5, 10, 11, 250, 
-    4, 10, 11, 250, 3, 10, 11, 250, 2, 10, 11, 250, 1, 10, 11, 250, 0, 10, 
-    11, 249, 255, 10, 11, 249, 254, 10, 11, 249, 253, 10, 11, 249, 252, 10, 
-    11, 249, 251, 10, 11, 249, 250, 10, 11, 249, 249, 10, 11, 249, 248, 10, 
-    11, 249, 247, 10, 11, 249, 246, 10, 11, 249, 245, 10, 11, 249, 244, 10, 
-    11, 249, 243, 10, 11, 249, 242, 10, 11, 249, 241, 10, 11, 249, 240, 10, 
-    11, 249, 239, 10, 11, 249, 238, 10, 11, 249, 237, 10, 11, 249, 236, 10, 
-    11, 249, 235, 10, 11, 249, 234, 10, 11, 249, 233, 10, 11, 249, 232, 10, 
-    11, 249, 231, 10, 11, 249, 230, 10, 11, 249, 229, 10, 11, 249, 228, 10, 
-    11, 249, 227, 10, 11, 249, 226, 10, 11, 249, 225, 10, 11, 249, 224, 10, 
-    11, 249, 223, 10, 11, 249, 222, 10, 11, 249, 221, 10, 11, 249, 220, 10, 
-    11, 249, 219, 10, 11, 249, 218, 10, 11, 249, 217, 10, 11, 249, 216, 10, 
-    11, 249, 215, 10, 11, 249, 214, 10, 11, 249, 213, 10, 11, 249, 212, 10, 
-    11, 249, 211, 10, 11, 249, 210, 10, 11, 247, 62, 10, 11, 247, 61, 10, 11, 
-    247, 60, 10, 11, 247, 59, 10, 11, 247, 58, 10, 11, 247, 57, 10, 11, 247, 
-    56, 10, 11, 247, 55, 10, 11, 247, 54, 10, 11, 247, 53, 10, 11, 247, 52, 
-    10, 11, 247, 51, 10, 11, 247, 50, 10, 11, 247, 49, 10, 11, 247, 48, 10, 
-    11, 247, 47, 10, 11, 247, 46, 10, 11, 247, 45, 10, 11, 247, 44, 10, 11, 
-    247, 43, 10, 11, 247, 42, 10, 11, 247, 41, 10, 11, 247, 40, 10, 11, 247, 
-    39, 10, 11, 247, 38, 10, 11, 247, 37, 10, 11, 247, 36, 10, 11, 247, 35, 
-    10, 11, 247, 34, 10, 11, 247, 33, 10, 11, 247, 32, 10, 11, 247, 31, 10, 
-    11, 247, 30, 10, 11, 247, 29, 10, 11, 247, 28, 10, 11, 247, 27, 10, 11, 
-    247, 26, 10, 11, 247, 25, 10, 11, 247, 24, 10, 11, 247, 23, 10, 11, 247, 
-    22, 10, 11, 247, 21, 10, 11, 247, 20, 10, 11, 247, 19, 10, 11, 246, 73, 
-    10, 11, 246, 72, 10, 11, 246, 71, 10, 11, 246, 70, 10, 11, 246, 69, 10, 
-    11, 246, 68, 10, 11, 246, 67, 10, 11, 246, 66, 10, 11, 246, 65, 10, 11, 
-    246, 64, 10, 11, 246, 63, 10, 11, 246, 62, 10, 11, 246, 61, 10, 11, 246, 
-    60, 10, 11, 246, 59, 10, 11, 246, 58, 10, 11, 246, 57, 10, 11, 246, 56, 
-    10, 11, 246, 55, 10, 11, 246, 54, 10, 11, 246, 53, 10, 11, 246, 52, 10, 
-    11, 246, 51, 10, 11, 246, 50, 10, 11, 246, 49, 10, 11, 246, 48, 10, 11, 
-    246, 47, 10, 11, 246, 46, 10, 11, 246, 45, 10, 11, 246, 44, 10, 11, 246, 
-    43, 10, 11, 246, 42, 10, 11, 246, 41, 10, 11, 246, 40, 10, 11, 246, 39, 
-    10, 11, 246, 38, 10, 11, 246, 37, 10, 11, 246, 36, 10, 11, 246, 35, 10, 
-    11, 246, 34, 10, 11, 246, 33, 10, 11, 246, 32, 10, 11, 246, 31, 10, 11, 
-    246, 30, 10, 11, 246, 29, 10, 11, 246, 28, 10, 11, 246, 27, 10, 11, 246, 
-    26, 10, 11, 246, 25, 10, 11, 246, 24, 10, 11, 246, 23, 10, 11, 246, 22, 
-    10, 11, 246, 21, 10, 11, 246, 20, 10, 11, 246, 19, 10, 11, 246, 18, 10, 
-    11, 246, 17, 10, 11, 246, 16, 10, 11, 246, 15, 10, 11, 246, 14, 10, 11, 
-    246, 13, 10, 11, 246, 12, 10, 11, 246, 11, 10, 11, 246, 10, 10, 11, 246, 
-    9, 10, 11, 245, 66, 10, 11, 245, 65, 10, 11, 245, 64, 10, 11, 245, 63, 
-    10, 11, 245, 62, 10, 11, 245, 61, 10, 11, 245, 60, 10, 11, 245, 59, 10, 
-    11, 245, 58, 10, 11, 245, 57, 10, 11, 245, 56, 10, 11, 245, 55, 10, 11, 
-    245, 54, 10, 11, 245, 53, 10, 11, 245, 52, 10, 11, 245, 51, 10, 11, 245, 
-    50, 10, 11, 245, 49, 10, 11, 245, 48, 10, 11, 245, 47, 10, 11, 245, 46, 
-    10, 11, 245, 45, 10, 11, 245, 44, 10, 11, 245, 43, 10, 11, 245, 42, 10, 
-    11, 245, 41, 10, 11, 245, 40, 10, 11, 245, 39, 10, 11, 245, 38, 10, 11, 
-    245, 37, 10, 11, 245, 36, 10, 11, 245, 35, 10, 11, 245, 34, 10, 11, 245, 
-    33, 10, 11, 245, 32, 10, 11, 245, 31, 10, 11, 245, 30, 10, 11, 245, 29, 
-    10, 11, 245, 28, 10, 11, 245, 27, 10, 11, 245, 26, 10, 11, 245, 25, 10, 
-    11, 245, 24, 10, 11, 245, 23, 10, 11, 245, 22, 10, 11, 245, 21, 10, 11, 
-    245, 20, 10, 11, 245, 19, 10, 11, 245, 18, 10, 11, 245, 17, 10, 11, 245, 
-    16, 10, 11, 245, 15, 10, 11, 245, 14, 10, 11, 245, 13, 10, 11, 245, 12, 
-    10, 11, 245, 11, 10, 11, 245, 10, 10, 11, 245, 9, 10, 11, 245, 8, 10, 11, 
-    245, 7, 10, 11, 245, 6, 10, 11, 245, 5, 10, 11, 245, 4, 10, 11, 245, 3, 
-    10, 11, 243, 223, 10, 11, 243, 222, 10, 11, 243, 221, 10, 11, 243, 220, 
-    10, 11, 243, 219, 10, 11, 243, 218, 10, 11, 243, 217, 10, 11, 243, 216, 
-    10, 11, 243, 215, 10, 11, 242, 91, 10, 11, 242, 90, 10, 11, 242, 89, 10, 
-    11, 242, 88, 10, 11, 242, 87, 10, 11, 242, 86, 10, 11, 242, 85, 10, 11, 
-    242, 84, 10, 11, 242, 83, 10, 11, 242, 82, 10, 11, 242, 81, 10, 11, 242, 
-    80, 10, 11, 242, 79, 10, 11, 242, 78, 10, 11, 242, 77, 10, 11, 242, 76, 
-    10, 11, 242, 75, 10, 11, 242, 74, 10, 11, 242, 73, 10, 11, 237, 16, 10, 
-    11, 237, 15, 10, 11, 237, 14, 10, 11, 237, 13, 10, 11, 237, 12, 10, 11, 
-    237, 11, 10, 11, 237, 10, 10, 11, 237, 9, 10, 11, 235, 199, 10, 11, 235, 
-    198, 10, 11, 235, 197, 10, 11, 235, 196, 10, 11, 235, 195, 10, 11, 235, 
-    194, 10, 11, 235, 193, 10, 11, 235, 192, 10, 11, 235, 191, 10, 11, 235, 
-    190, 10, 11, 234, 186, 10, 11, 234, 185, 10, 11, 234, 184, 10, 11, 234, 
-    183, 10, 11, 234, 182, 10, 11, 234, 181, 10, 11, 234, 180, 10, 11, 234, 
-    179, 10, 11, 234, 178, 10, 11, 234, 177, 10, 11, 234, 176, 10, 11, 234, 
-    175, 10, 11, 234, 174, 10, 11, 234, 173, 10, 11, 234, 172, 10, 11, 234, 
-    171, 10, 11, 234, 170, 10, 11, 234, 169, 10, 11, 234, 168, 10, 11, 234, 
-    167, 10, 11, 234, 166, 10, 11, 234, 165, 10, 11, 234, 164, 10, 11, 234, 
-    163, 10, 11, 234, 162, 10, 11, 234, 161, 10, 11, 234, 160, 10, 11, 234, 
-    159, 10, 11, 234, 158, 10, 11, 234, 157, 10, 11, 234, 156, 10, 11, 234, 
-    155, 10, 11, 234, 154, 10, 11, 234, 153, 10, 11, 234, 152, 10, 11, 234, 
-    151, 10, 11, 234, 150, 10, 11, 234, 149, 10, 11, 234, 148, 10, 11, 234, 
-    147, 10, 11, 234, 146, 10, 11, 234, 145, 10, 11, 234, 144, 10, 11, 234, 
-    143, 10, 11, 234, 142, 10, 11, 234, 141, 10, 11, 234, 140, 10, 11, 234, 
-    139, 10, 11, 234, 138, 10, 11, 234, 137, 10, 11, 234, 136, 10, 11, 234, 
-    135, 10, 11, 234, 134, 10, 11, 234, 133, 10, 11, 234, 132, 10, 11, 234, 
-    131, 10, 11, 234, 130, 10, 11, 234, 129, 10, 11, 234, 128, 10, 11, 234, 
-    127, 10, 11, 234, 126, 10, 11, 234, 125, 10, 11, 234, 124, 10, 11, 234, 
-    123, 10, 11, 234, 122, 10, 11, 234, 121, 10, 11, 233, 31, 10, 11, 233, 
-    30, 10, 11, 233, 29, 10, 11, 233, 28, 10, 11, 233, 27, 10, 11, 233, 26, 
-    10, 11, 233, 25, 10, 11, 233, 24, 10, 11, 233, 23, 10, 11, 233, 22, 10, 
-    11, 233, 21, 10, 11, 233, 20, 10, 11, 233, 19, 10, 11, 233, 18, 10, 11, 
-    233, 17, 10, 11, 233, 16, 10, 11, 233, 15, 10, 11, 233, 14, 10, 11, 233, 
-    13, 10, 11, 233, 12, 10, 11, 233, 11, 10, 11, 233, 10, 10, 11, 233, 9, 
-    10, 11, 233, 8, 10, 11, 233, 7, 10, 11, 233, 6, 10, 11, 233, 5, 10, 11, 
-    233, 4, 10, 11, 233, 3, 10, 11, 233, 2, 10, 11, 233, 1, 10, 11, 233, 0, 
-    10, 11, 232, 255, 10, 11, 232, 254, 10, 11, 232, 253, 10, 11, 232, 252, 
-    10, 11, 232, 251, 10, 11, 232, 250, 10, 11, 232, 249, 10, 11, 232, 248, 
-    10, 11, 232, 247, 10, 11, 232, 246, 10, 11, 232, 245, 10, 11, 232, 244, 
-    10, 11, 232, 243, 10, 11, 232, 242, 10, 11, 232, 241, 10, 11, 232, 240, 
-    10, 11, 232, 239, 10, 11, 231, 241, 10, 11, 231, 240, 10, 11, 231, 239, 
-    10, 11, 231, 238, 10, 11, 231, 237, 10, 11, 231, 236, 10, 11, 231, 235, 
-    10, 11, 231, 234, 10, 11, 231, 233, 10, 11, 231, 232, 10, 11, 231, 231, 
-    10, 11, 231, 230, 10, 11, 231, 229, 10, 11, 231, 228, 10, 11, 231, 227, 
-    10, 11, 231, 226, 10, 11, 231, 225, 10, 11, 231, 224, 10, 11, 231, 223, 
-    10, 11, 231, 222, 10, 11, 231, 221, 10, 11, 231, 220, 10, 11, 231, 143, 
-    10, 11, 231, 142, 10, 11, 231, 141, 10, 11, 231, 140, 10, 11, 231, 139, 
-    10, 11, 231, 138, 10, 11, 231, 137, 10, 11, 231, 136, 10, 11, 231, 135, 
-    10, 11, 231, 134, 10, 11, 231, 133, 10, 11, 231, 132, 10, 11, 231, 131, 
-    10, 11, 231, 130, 10, 11, 231, 129, 10, 11, 231, 128, 10, 11, 231, 127, 
-    10, 11, 231, 126, 10, 11, 231, 125, 10, 11, 231, 124, 10, 11, 231, 123, 
-    10, 11, 231, 122, 10, 11, 231, 121, 10, 11, 231, 120, 10, 11, 231, 119, 
-    10, 11, 231, 118, 10, 11, 231, 5, 10, 11, 231, 4, 10, 11, 231, 3, 10, 11, 
-    231, 2, 10, 11, 231, 1, 10, 11, 231, 0, 10, 11, 230, 255, 10, 11, 230, 
-    254, 10, 11, 230, 253, 10, 11, 230, 252, 10, 11, 230, 251, 10, 11, 230, 
-    250, 10, 11, 230, 249, 10, 11, 230, 248, 10, 11, 230, 247, 10, 11, 230, 
-    246, 10, 11, 230, 245, 10, 11, 230, 244, 10, 11, 230, 243, 10, 11, 230, 
-    242, 10, 11, 230, 241, 10, 11, 230, 240, 10, 11, 230, 239, 10, 11, 230, 
-    238, 10, 11, 230, 237, 10, 11, 230, 236, 10, 11, 230, 235, 10, 11, 230, 
-    234, 10, 11, 230, 233, 10, 11, 230, 232, 10, 11, 230, 231, 10, 11, 230, 
-    230, 10, 11, 230, 229, 10, 11, 230, 228, 10, 11, 230, 227, 10, 11, 230, 
-    226, 10, 11, 230, 225, 10, 11, 230, 224, 10, 11, 230, 223, 10, 11, 230, 
-    222, 10, 11, 230, 221, 10, 11, 230, 220, 10, 11, 230, 219, 10, 11, 230, 
-    218, 10, 11, 230, 217, 10, 11, 230, 216, 10, 11, 230, 215, 10, 11, 230, 
-    214, 10, 11, 230, 213, 10, 11, 230, 212, 10, 11, 230, 211, 10, 11, 230, 
-    210, 10, 11, 230, 209, 10, 11, 230, 208, 10, 11, 230, 207, 10, 11, 230, 
-    206, 10, 11, 230, 205, 10, 11, 230, 204, 10, 11, 230, 203, 10, 11, 230, 
-    202, 10, 11, 230, 201, 10, 11, 230, 200, 10, 11, 230, 199, 10, 11, 230, 
-    198, 10, 11, 230, 197, 10, 11, 230, 196, 10, 11, 230, 195, 10, 11, 230, 
-    194, 10, 11, 230, 193, 10, 11, 230, 192, 10, 11, 230, 191, 10, 11, 230, 
-    190, 10, 11, 230, 189, 10, 11, 230, 188, 10, 11, 230, 187, 10, 11, 230, 
-    58, 10, 11, 230, 57, 10, 11, 230, 56, 10, 11, 230, 55, 10, 11, 230, 54, 
-    10, 11, 230, 53, 10, 11, 230, 52, 10, 11, 230, 51, 10, 11, 230, 50, 10, 
-    11, 230, 49, 10, 11, 230, 48, 10, 11, 230, 47, 10, 11, 230, 46, 10, 11, 
-    228, 162, 10, 11, 228, 161, 10, 11, 228, 160, 10, 11, 228, 159, 10, 11, 
-    228, 158, 10, 11, 228, 157, 10, 11, 228, 156, 10, 11, 228, 37, 10, 11, 
-    228, 36, 10, 11, 228, 35, 10, 11, 228, 34, 10, 11, 228, 33, 10, 11, 228, 
-    32, 10, 11, 228, 31, 10, 11, 228, 30, 10, 11, 228, 29, 10, 11, 228, 28, 
-    10, 11, 228, 27, 10, 11, 228, 26, 10, 11, 228, 25, 10, 11, 228, 24, 10, 
-    11, 228, 23, 10, 11, 228, 22, 10, 11, 228, 21, 10, 11, 228, 20, 10, 11, 
-    228, 19, 10, 11, 228, 18, 10, 11, 228, 17, 10, 11, 228, 16, 10, 11, 228, 
-    15, 10, 11, 228, 14, 10, 11, 228, 13, 10, 11, 228, 12, 10, 11, 228, 11, 
-    10, 11, 228, 10, 10, 11, 228, 9, 10, 11, 228, 8, 10, 11, 228, 7, 10, 11, 
-    228, 6, 10, 11, 228, 5, 10, 11, 228, 4, 10, 11, 226, 232, 10, 11, 226, 
-    231, 10, 11, 226, 230, 10, 11, 226, 229, 10, 11, 226, 228, 10, 11, 226, 
-    227, 10, 11, 226, 226, 10, 11, 226, 225, 10, 11, 226, 224, 10, 11, 226, 
-    223, 10, 11, 226, 222, 10, 11, 226, 221, 10, 11, 226, 220, 10, 11, 226, 
-    219, 10, 11, 226, 218, 10, 11, 226, 217, 10, 11, 226, 216, 10, 11, 226, 
-    215, 10, 11, 226, 214, 10, 11, 226, 213, 10, 11, 226, 212, 10, 11, 226, 
-    211, 10, 11, 226, 210, 10, 11, 226, 209, 10, 11, 226, 208, 10, 11, 226, 
-    207, 10, 11, 226, 206, 10, 11, 226, 205, 10, 11, 226, 204, 10, 11, 226, 
-    203, 10, 11, 226, 202, 10, 11, 226, 201, 10, 11, 226, 200, 10, 11, 226, 
-    199, 10, 11, 226, 198, 10, 11, 226, 197, 10, 11, 226, 196, 10, 11, 226, 
-    195, 10, 11, 226, 194, 10, 11, 226, 193, 10, 11, 226, 192, 10, 11, 226, 
-    191, 10, 11, 226, 190, 10, 11, 226, 189, 10, 11, 226, 188, 10, 11, 226, 
-    187, 10, 11, 226, 186, 10, 11, 226, 185, 10, 11, 226, 184, 10, 11, 226, 
-    183, 10, 11, 226, 182, 10, 11, 226, 181, 10, 11, 226, 180, 10, 11, 226, 
-    179, 10, 11, 222, 200, 10, 11, 222, 199, 10, 11, 222, 198, 10, 11, 222, 
-    197, 10, 11, 222, 196, 10, 11, 222, 195, 10, 11, 222, 194, 10, 11, 222, 
-    193, 10, 11, 222, 192, 10, 11, 222, 191, 10, 11, 222, 190, 10, 11, 222, 
-    189, 10, 11, 222, 188, 10, 11, 222, 187, 10, 11, 222, 186, 10, 11, 222, 
-    185, 10, 11, 222, 184, 10, 11, 222, 183, 10, 11, 222, 182, 10, 11, 222, 
-    181, 10, 11, 222, 180, 10, 11, 222, 179, 10, 11, 222, 178, 10, 11, 222, 
-    177, 10, 11, 222, 176, 10, 11, 222, 175, 10, 11, 222, 174, 10, 11, 222, 
-    173, 10, 11, 222, 172, 10, 11, 222, 171, 10, 11, 222, 170, 10, 11, 222, 
-    169, 10, 11, 222, 168, 10, 11, 222, 167, 10, 11, 222, 166, 10, 11, 222, 
-    165, 10, 11, 222, 164, 10, 11, 222, 163, 10, 11, 222, 162, 10, 11, 222, 
-    161, 10, 11, 222, 160, 10, 11, 222, 159, 10, 11, 222, 158, 10, 11, 222, 
-    157, 10, 11, 220, 172, 10, 11, 220, 171, 10, 11, 220, 170, 10, 11, 220, 
-    169, 10, 11, 220, 168, 10, 11, 220, 167, 10, 11, 220, 166, 10, 11, 220, 
-    165, 10, 11, 220, 164, 10, 11, 220, 163, 10, 11, 220, 162, 10, 11, 220, 
-    161, 10, 11, 220, 160, 10, 11, 220, 159, 10, 11, 220, 158, 10, 11, 220, 
-    157, 10, 11, 220, 156, 10, 11, 220, 155, 10, 11, 220, 154, 10, 11, 220, 
-    153, 10, 11, 220, 152, 10, 11, 220, 151, 10, 11, 220, 150, 10, 11, 220, 
-    149, 10, 11, 220, 148, 10, 11, 220, 147, 10, 11, 220, 146, 10, 11, 220, 
-    145, 10, 11, 220, 144, 10, 11, 220, 143, 10, 11, 220, 142, 10, 11, 220, 
-    141, 10, 11, 220, 140, 10, 11, 220, 139, 10, 11, 220, 138, 10, 11, 220, 
-    137, 10, 11, 220, 136, 10, 11, 220, 135, 10, 11, 220, 134, 10, 11, 220, 
-    133, 10, 11, 220, 132, 10, 11, 220, 131, 10, 11, 220, 130, 10, 11, 220, 
-    129, 10, 11, 220, 128, 10, 11, 220, 127, 10, 11, 220, 126, 10, 11, 220, 
-    10, 10, 11, 220, 9, 10, 11, 220, 8, 10, 11, 220, 7, 10, 11, 220, 6, 10, 
-    11, 220, 5, 10, 11, 220, 4, 10, 11, 220, 3, 10, 11, 220, 2, 10, 11, 220, 
-    1, 10, 11, 220, 0, 10, 11, 219, 255, 10, 11, 219, 254, 10, 11, 219, 253, 
-    10, 11, 219, 252, 10, 11, 219, 251, 10, 11, 219, 250, 10, 11, 219, 249, 
-    10, 11, 219, 248, 10, 11, 219, 247, 10, 11, 219, 246, 10, 11, 219, 245, 
-    10, 11, 219, 244, 10, 11, 219, 243, 10, 11, 219, 242, 10, 11, 219, 241, 
-    10, 11, 219, 240, 10, 11, 219, 239, 10, 11, 219, 238, 10, 11, 219, 237, 
-    10, 11, 219, 236, 10, 11, 219, 235, 10, 11, 219, 234, 10, 11, 219, 233, 
-    10, 11, 219, 232, 10, 11, 219, 231, 10, 11, 219, 230, 10, 11, 219, 229, 
-    10, 11, 219, 228, 10, 11, 219, 227, 10, 11, 219, 226, 10, 11, 219, 225, 
-    10, 11, 219, 224, 10, 11, 219, 223, 10, 11, 219, 222, 10, 11, 219, 221, 
-    10, 11, 219, 220, 10, 11, 219, 219, 10, 11, 219, 218, 10, 11, 219, 217, 
-    10, 11, 219, 216, 10, 11, 219, 215, 10, 11, 219, 214, 10, 11, 219, 213, 
-    10, 11, 219, 212, 10, 11, 219, 211, 10, 11, 219, 210, 10, 11, 219, 209, 
-    10, 11, 219, 208, 10, 11, 219, 207, 10, 11, 219, 206, 10, 11, 219, 205, 
-    10, 11, 219, 204, 10, 11, 219, 203, 10, 11, 219, 202, 10, 11, 219, 201, 
-    10, 11, 219, 200, 10, 11, 219, 199, 10, 11, 219, 198, 10, 11, 219, 197, 
-    10, 11, 219, 196, 10, 11, 219, 195, 10, 11, 219, 194, 10, 11, 219, 193, 
-    10, 11, 219, 192, 10, 11, 219, 191, 10, 11, 219, 190, 10, 11, 219, 39, 
-    10, 11, 219, 38, 10, 11, 219, 37, 10, 11, 219, 36, 10, 11, 219, 35, 10, 
-    11, 219, 34, 10, 11, 219, 33, 10, 11, 219, 32, 10, 11, 219, 31, 10, 11, 
-    219, 30, 10, 11, 219, 29, 10, 11, 219, 28, 10, 11, 219, 27, 10, 11, 219, 
-    26, 10, 11, 219, 25, 10, 11, 219, 24, 10, 11, 219, 23, 10, 11, 219, 22, 
-    10, 11, 219, 21, 10, 11, 219, 20, 10, 11, 219, 19, 10, 11, 219, 18, 10, 
-    11, 219, 17, 10, 11, 219, 16, 10, 11, 219, 15, 10, 11, 219, 14, 10, 11, 
-    219, 13, 10, 11, 219, 12, 10, 11, 219, 11, 10, 11, 219, 10, 10, 11, 219, 
-    9, 10, 11, 219, 8, 10, 11, 218, 150, 10, 11, 218, 149, 10, 11, 218, 148, 
-    10, 11, 218, 147, 10, 11, 218, 146, 10, 11, 218, 145, 10, 11, 218, 144, 
-    10, 11, 218, 143, 10, 11, 218, 142, 10, 11, 218, 141, 10, 11, 218, 140, 
-    10, 11, 218, 139, 10, 11, 218, 88, 10, 11, 218, 87, 10, 11, 218, 86, 10, 
-    11, 218, 85, 10, 11, 218, 84, 10, 11, 218, 83, 10, 11, 218, 82, 10, 11, 
-    218, 81, 10, 11, 218, 80, 10, 11, 217, 156, 10, 11, 217, 155, 10, 11, 
-    217, 154, 10, 11, 217, 153, 10, 11, 217, 152, 10, 11, 217, 151, 10, 11, 
-    217, 150, 10, 11, 217, 149, 10, 11, 217, 148, 10, 11, 217, 147, 10, 11, 
-    217, 146, 10, 11, 217, 145, 10, 11, 217, 144, 10, 11, 217, 143, 10, 11, 
-    217, 142, 10, 11, 217, 141, 10, 11, 217, 140, 10, 11, 217, 139, 10, 11, 
-    217, 138, 10, 11, 217, 137, 10, 11, 217, 136, 10, 11, 217, 135, 10, 11, 
-    217, 134, 10, 11, 217, 133, 10, 11, 217, 132, 10, 11, 217, 131, 10, 11, 
-    217, 130, 10, 11, 217, 129, 10, 11, 217, 128, 10, 11, 217, 127, 10, 11, 
-    217, 126, 10, 11, 217, 125, 10, 11, 217, 124, 10, 11, 217, 123, 10, 11, 
-    217, 122, 10, 11, 217, 121, 10, 11, 217, 120, 10, 11, 217, 119, 10, 11, 
-    217, 118, 10, 11, 217, 117, 10, 11, 217, 116, 10, 11, 255, 57, 10, 11, 
-    255, 56, 10, 11, 255, 55, 10, 11, 255, 54, 10, 11, 255, 53, 10, 11, 255, 
-    52, 10, 11, 255, 51, 10, 11, 255, 50, 10, 11, 255, 49, 10, 11, 255, 48, 
-    10, 11, 255, 47, 10, 11, 255, 46, 10, 11, 255, 45, 10, 11, 255, 44, 10, 
-    11, 255, 43, 10, 11, 255, 42, 10, 11, 255, 41, 10, 11, 255, 40, 10, 11, 
-    255, 39, 10, 11, 255, 38, 10, 11, 255, 37, 10, 11, 255, 36, 10, 11, 255, 
-    35, 10, 11, 255, 34, 10, 11, 255, 33, 10, 11, 255, 32, 10, 11, 255, 31, 
-    10, 11, 255, 30, 10, 11, 255, 29, 10, 11, 255, 28, 10, 11, 255, 27, 10, 
-    11, 255, 26, 10, 11, 255, 25, 10, 11, 255, 24, 46, 26, 16, 228, 206, 46, 
-    26, 16, 249, 148, 46, 26, 16, 229, 163, 46, 26, 16, 230, 67, 246, 221, 
-    46, 26, 16, 230, 67, 248, 214, 46, 26, 16, 219, 181, 246, 221, 46, 26, 
-    16, 219, 181, 248, 214, 46, 26, 16, 236, 198, 46, 26, 16, 222, 217, 46, 
-    26, 16, 229, 235, 46, 26, 16, 217, 205, 46, 26, 16, 217, 206, 248, 214, 
-    46, 26, 16, 236, 12, 46, 26, 16, 254, 89, 246, 221, 46, 26, 16, 246, 90, 
-    246, 221, 46, 26, 16, 222, 73, 46, 26, 16, 236, 164, 46, 26, 16, 254, 80, 
-    46, 26, 16, 254, 81, 248, 214, 46, 26, 16, 222, 222, 46, 26, 16, 221, 
-    242, 46, 26, 16, 230, 148, 254, 47, 46, 26, 16, 244, 56, 254, 47, 46, 26, 
-    16, 228, 205, 46, 26, 16, 251, 62, 46, 26, 16, 219, 171, 46, 26, 16, 237, 
-    144, 254, 47, 46, 26, 16, 236, 166, 254, 47, 46, 26, 16, 236, 165, 254, 
-    47, 46, 26, 16, 226, 119, 46, 26, 16, 229, 226, 46, 26, 16, 223, 151, 
-    254, 83, 46, 26, 16, 230, 66, 254, 47, 46, 26, 16, 219, 180, 254, 47, 46, 
-    26, 16, 254, 84, 254, 47, 46, 26, 16, 254, 78, 46, 26, 16, 236, 65, 46, 
-    26, 16, 227, 157, 46, 26, 16, 229, 106, 254, 47, 46, 26, 16, 221, 175, 
-    46, 26, 16, 254, 129, 46, 26, 16, 226, 75, 46, 26, 16, 222, 225, 254, 47, 
-    46, 26, 16, 222, 225, 233, 239, 223, 149, 46, 26, 16, 230, 61, 254, 47, 
-    46, 26, 16, 222, 17, 46, 26, 16, 235, 97, 46, 26, 16, 247, 77, 46, 26, 
-    16, 221, 92, 46, 26, 16, 222, 52, 46, 26, 16, 236, 15, 46, 26, 16, 254, 
-    89, 246, 90, 232, 131, 46, 26, 16, 245, 93, 254, 47, 46, 26, 16, 237, 
-    234, 46, 26, 16, 221, 68, 254, 47, 46, 26, 16, 236, 201, 221, 67, 46, 26, 
-    16, 229, 182, 46, 26, 16, 228, 209, 46, 26, 16, 236, 42, 46, 26, 16, 251, 
-    6, 254, 47, 46, 26, 16, 227, 232, 46, 26, 16, 229, 238, 254, 47, 46, 26, 
-    16, 229, 236, 254, 47, 46, 26, 16, 242, 63, 46, 26, 16, 232, 217, 46, 26, 
-    16, 229, 148, 46, 26, 16, 236, 43, 254, 152, 46, 26, 16, 221, 68, 254, 
-    152, 46, 26, 16, 223, 132, 46, 26, 16, 244, 25, 46, 26, 16, 237, 144, 
-    232, 131, 46, 26, 16, 230, 148, 232, 131, 46, 26, 16, 230, 67, 232, 131, 
-    46, 26, 16, 229, 147, 46, 26, 16, 236, 29, 46, 26, 16, 229, 146, 46, 26, 
-    16, 236, 14, 46, 26, 16, 229, 183, 232, 131, 46, 26, 16, 236, 165, 232, 
-    132, 254, 109, 46, 26, 16, 236, 166, 232, 132, 254, 109, 46, 26, 16, 217, 
-    203, 46, 26, 16, 254, 81, 232, 131, 46, 26, 16, 254, 82, 222, 223, 232, 
-    131, 46, 26, 16, 217, 204, 46, 26, 16, 236, 13, 46, 26, 16, 246, 216, 46, 
-    26, 16, 251, 63, 46, 26, 16, 233, 168, 237, 143, 46, 26, 16, 219, 181, 
-    232, 131, 46, 26, 16, 229, 106, 232, 131, 46, 26, 16, 228, 210, 232, 131, 
-    46, 26, 16, 230, 145, 46, 26, 16, 254, 100, 46, 26, 16, 234, 195, 46, 26, 
-    16, 229, 236, 232, 131, 46, 26, 16, 229, 238, 232, 131, 46, 26, 16, 246, 
-    119, 229, 237, 46, 26, 16, 235, 206, 46, 26, 16, 254, 101, 46, 26, 16, 
-    221, 68, 232, 131, 46, 26, 16, 246, 219, 46, 26, 16, 222, 225, 232, 131, 
-    46, 26, 16, 222, 218, 46, 26, 16, 251, 6, 232, 131, 46, 26, 16, 246, 161, 
-    46, 26, 16, 226, 76, 232, 131, 46, 26, 16, 218, 124, 236, 65, 46, 26, 16, 
-    221, 65, 46, 26, 16, 228, 211, 46, 26, 16, 221, 69, 46, 26, 16, 221, 66, 
-    46, 26, 16, 228, 208, 46, 26, 16, 221, 64, 46, 26, 16, 228, 207, 46, 26, 
-    16, 244, 55, 46, 26, 16, 254, 41, 46, 26, 16, 246, 119, 254, 41, 46, 26, 
-    16, 230, 61, 232, 131, 46, 26, 16, 222, 16, 246, 127, 46, 26, 16, 222, 
-    16, 246, 89, 46, 26, 16, 222, 18, 254, 85, 46, 26, 16, 222, 11, 236, 244, 
-    254, 77, 46, 26, 16, 236, 200, 46, 26, 16, 246, 186, 46, 26, 16, 217, 
-    253, 236, 197, 46, 26, 16, 217, 253, 254, 109, 46, 26, 16, 223, 150, 46, 
-    26, 16, 236, 66, 254, 109, 46, 26, 16, 248, 215, 254, 47, 46, 26, 16, 
-    236, 16, 254, 47, 46, 26, 16, 236, 16, 254, 152, 46, 26, 16, 236, 16, 
-    232, 131, 46, 26, 16, 254, 84, 232, 131, 46, 26, 16, 254, 86, 46, 26, 16, 
-    248, 214, 46, 26, 16, 221, 77, 46, 26, 16, 222, 44, 46, 26, 16, 236, 33, 
-    46, 26, 16, 235, 102, 246, 182, 250, 255, 46, 26, 16, 235, 102, 247, 78, 
-    251, 0, 46, 26, 16, 235, 102, 221, 79, 251, 0, 46, 26, 16, 235, 102, 222, 
-    54, 251, 0, 46, 26, 16, 235, 102, 237, 229, 250, 255, 46, 26, 16, 244, 
-    56, 232, 132, 254, 109, 46, 26, 16, 244, 56, 229, 227, 254, 37, 46, 26, 
-    16, 244, 56, 229, 227, 249, 40, 46, 26, 16, 248, 238, 46, 26, 16, 248, 
-    239, 229, 227, 254, 38, 236, 197, 46, 26, 16, 248, 239, 229, 227, 254, 
-    38, 254, 109, 46, 26, 16, 248, 239, 229, 227, 249, 40, 46, 26, 16, 221, 
-    83, 46, 26, 16, 254, 42, 46, 26, 16, 237, 236, 46, 26, 16, 249, 3, 46, 
-    26, 16, 254, 204, 229, 23, 254, 43, 46, 26, 16, 254, 204, 254, 40, 46, 
-    26, 16, 254, 204, 254, 43, 46, 26, 16, 254, 204, 233, 234, 46, 26, 16, 
-    254, 204, 233, 242, 46, 26, 16, 254, 204, 244, 57, 46, 26, 16, 254, 204, 
-    244, 54, 46, 26, 16, 254, 204, 229, 23, 244, 57, 46, 26, 16, 234, 60, 
-    228, 216, 242, 61, 46, 26, 16, 234, 60, 254, 154, 228, 216, 242, 61, 46, 
-    26, 16, 234, 60, 249, 39, 242, 61, 46, 26, 16, 234, 60, 254, 154, 249, 
-    39, 242, 61, 46, 26, 16, 234, 60, 221, 72, 242, 61, 46, 26, 16, 234, 60, 
-    221, 84, 46, 26, 16, 234, 60, 222, 48, 242, 61, 46, 26, 16, 234, 60, 222, 
-    48, 235, 105, 242, 61, 46, 26, 16, 234, 60, 235, 105, 242, 61, 46, 26, 
-    16, 234, 60, 229, 55, 242, 61, 46, 26, 16, 237, 149, 222, 69, 242, 62, 
-    46, 26, 16, 254, 82, 222, 69, 242, 62, 46, 26, 16, 245, 244, 222, 45, 46, 
-    26, 16, 245, 244, 233, 126, 46, 26, 16, 245, 244, 248, 243, 46, 26, 16, 
-    234, 60, 219, 175, 242, 61, 46, 26, 16, 234, 60, 228, 215, 242, 61, 46, 
-    26, 16, 234, 60, 229, 55, 222, 48, 242, 61, 46, 26, 16, 244, 52, 233, 34, 
-    254, 85, 46, 26, 16, 244, 52, 233, 34, 248, 213, 46, 26, 16, 246, 195, 
-    236, 244, 245, 93, 219, 61, 46, 26, 16, 237, 235, 46, 26, 16, 237, 233, 
-    46, 26, 16, 245, 93, 254, 48, 249, 38, 242, 60, 46, 26, 16, 245, 93, 249, 
-    1, 187, 46, 26, 16, 245, 93, 249, 1, 232, 217, 46, 26, 16, 245, 93, 232, 
-    213, 242, 61, 46, 26, 16, 245, 93, 249, 1, 249, 15, 46, 26, 16, 245, 93, 
-    224, 61, 249, 0, 249, 15, 46, 26, 16, 245, 93, 249, 1, 236, 184, 46, 26, 
-    16, 245, 93, 249, 1, 217, 21, 46, 26, 16, 245, 93, 249, 1, 232, 63, 236, 
-    197, 46, 26, 16, 245, 93, 249, 1, 232, 63, 254, 109, 46, 26, 16, 245, 93, 
-    234, 91, 251, 1, 248, 243, 46, 26, 16, 245, 93, 234, 91, 251, 1, 233, 
-    126, 46, 26, 16, 245, 204, 224, 61, 251, 1, 219, 174, 46, 26, 16, 245, 
-    93, 224, 61, 251, 1, 222, 226, 46, 26, 16, 245, 93, 232, 133, 46, 26, 16, 
-    251, 2, 216, 253, 46, 26, 16, 251, 2, 236, 64, 46, 26, 16, 251, 2, 223, 
-    250, 46, 26, 16, 245, 93, 242, 107, 217, 252, 222, 49, 46, 26, 16, 245, 
-    93, 246, 196, 254, 102, 46, 26, 16, 217, 252, 221, 73, 46, 26, 16, 248, 
-    251, 221, 73, 46, 26, 16, 248, 251, 222, 49, 46, 26, 16, 248, 251, 254, 
-    87, 247, 78, 248, 161, 46, 26, 16, 248, 251, 233, 124, 222, 53, 248, 161, 
-    46, 26, 16, 248, 251, 248, 235, 246, 99, 248, 161, 46, 26, 16, 248, 251, 
-    221, 81, 230, 152, 248, 161, 46, 26, 16, 217, 252, 254, 87, 247, 78, 248, 
-    161, 46, 26, 16, 217, 252, 233, 124, 222, 53, 248, 161, 46, 26, 16, 217, 
-    252, 248, 235, 246, 99, 248, 161, 46, 26, 16, 217, 252, 221, 81, 230, 
-    152, 248, 161, 46, 26, 16, 244, 179, 248, 250, 46, 26, 16, 244, 179, 217, 
-    251, 46, 26, 16, 249, 2, 254, 87, 233, 169, 46, 26, 16, 249, 2, 254, 87, 
-    234, 8, 46, 26, 16, 249, 2, 248, 214, 46, 26, 16, 249, 2, 222, 9, 46, 26, 
-    16, 224, 117, 222, 9, 46, 26, 16, 224, 117, 222, 10, 248, 201, 46, 26, 
-    16, 224, 117, 222, 10, 221, 74, 46, 26, 16, 224, 117, 222, 10, 222, 42, 
-    46, 26, 16, 224, 117, 254, 17, 46, 26, 16, 224, 117, 254, 18, 248, 201, 
-    46, 26, 16, 224, 117, 254, 18, 221, 74, 46, 26, 16, 224, 117, 254, 18, 
-    222, 42, 46, 26, 16, 248, 236, 244, 161, 46, 26, 16, 248, 242, 230, 86, 
-    46, 26, 16, 223, 144, 46, 26, 16, 254, 34, 187, 46, 26, 16, 254, 34, 219, 
-    61, 46, 26, 16, 254, 34, 245, 0, 46, 26, 16, 254, 34, 249, 15, 46, 26, 
-    16, 254, 34, 236, 184, 46, 26, 16, 254, 34, 217, 21, 46, 26, 16, 254, 34, 
-    232, 62, 46, 26, 16, 236, 165, 232, 132, 233, 241, 46, 26, 16, 236, 166, 
-    232, 132, 233, 241, 46, 26, 16, 236, 165, 232, 132, 236, 197, 46, 26, 16, 
-    236, 166, 232, 132, 236, 197, 46, 26, 16, 236, 66, 236, 197, 46, 26, 16, 
-    244, 56, 232, 132, 236, 197, 26, 16, 224, 109, 252, 197, 26, 16, 51, 252, 
-    197, 26, 16, 39, 252, 197, 26, 16, 227, 160, 39, 252, 197, 26, 16, 249, 
-    145, 252, 197, 26, 16, 224, 192, 252, 197, 26, 16, 42, 227, 182, 55, 26, 
-    16, 45, 227, 182, 55, 26, 16, 227, 182, 248, 143, 26, 16, 249, 184, 226, 
-    79, 26, 16, 249, 208, 251, 141, 26, 16, 226, 79, 26, 16, 250, 180, 26, 
-    16, 227, 180, 245, 193, 26, 16, 227, 180, 245, 192, 26, 16, 227, 180, 
-    245, 191, 26, 16, 245, 210, 26, 16, 245, 211, 56, 26, 16, 252, 10, 78, 
-    26, 16, 251, 163, 26, 16, 252, 19, 26, 16, 115, 26, 16, 230, 136, 223, 
-    163, 26, 16, 220, 205, 223, 163, 26, 16, 221, 227, 223, 163, 26, 16, 245, 
-    115, 223, 163, 26, 16, 245, 169, 223, 163, 26, 16, 224, 81, 223, 163, 26, 
-    16, 224, 79, 245, 101, 26, 16, 245, 113, 245, 101, 26, 16, 245, 68, 250, 
-    207, 26, 16, 245, 68, 250, 208, 230, 88, 254, 145, 26, 16, 245, 68, 250, 
-    208, 230, 88, 252, 185, 26, 16, 251, 203, 250, 207, 26, 16, 246, 75, 250, 
-    207, 26, 16, 246, 75, 250, 208, 230, 88, 254, 145, 26, 16, 246, 75, 250, 
-    208, 230, 88, 252, 185, 26, 16, 247, 116, 250, 206, 26, 16, 247, 116, 
-    250, 205, 26, 16, 233, 85, 234, 24, 227, 168, 26, 16, 51, 225, 0, 26, 16, 
-    51, 245, 156, 26, 16, 245, 157, 220, 63, 26, 16, 245, 157, 247, 132, 26, 
-    16, 232, 205, 220, 63, 26, 16, 232, 205, 247, 132, 26, 16, 225, 1, 220, 
-    63, 26, 16, 225, 1, 247, 132, 26, 16, 228, 90, 145, 225, 0, 26, 16, 228, 
-    90, 145, 245, 156, 26, 16, 250, 166, 221, 177, 26, 16, 250, 69, 221, 177, 
-    26, 16, 230, 88, 254, 145, 26, 16, 230, 88, 252, 185, 26, 16, 228, 74, 
-    254, 145, 26, 16, 228, 74, 252, 185, 26, 16, 233, 88, 227, 168, 26, 16, 
-    218, 205, 227, 168, 26, 16, 144, 227, 168, 26, 16, 228, 90, 227, 168, 26, 
-    16, 246, 232, 227, 168, 26, 16, 224, 76, 227, 168, 26, 16, 221, 243, 227, 
-    168, 26, 16, 224, 68, 227, 168, 26, 16, 131, 242, 162, 220, 217, 227, 
-    168, 26, 16, 218, 152, 231, 178, 26, 16, 88, 231, 178, 26, 16, 250, 222, 
-    218, 152, 231, 178, 26, 16, 40, 231, 179, 218, 207, 26, 16, 40, 231, 179, 
-    252, 53, 26, 16, 221, 91, 231, 179, 108, 218, 207, 26, 16, 221, 91, 231, 
-    179, 108, 252, 53, 26, 16, 221, 91, 231, 179, 42, 218, 207, 26, 16, 221, 
-    91, 231, 179, 42, 252, 53, 26, 16, 221, 91, 231, 179, 45, 218, 207, 26, 
-    16, 221, 91, 231, 179, 45, 252, 53, 26, 16, 221, 91, 231, 179, 113, 218, 
-    207, 26, 16, 221, 91, 231, 179, 113, 252, 53, 26, 16, 221, 91, 231, 179, 
-    108, 45, 218, 207, 26, 16, 221, 91, 231, 179, 108, 45, 252, 53, 26, 16, 
-    233, 118, 231, 179, 218, 207, 26, 16, 233, 118, 231, 179, 252, 53, 26, 
-    16, 221, 88, 231, 179, 113, 218, 207, 26, 16, 221, 88, 231, 179, 113, 
-    252, 53, 26, 16, 229, 230, 231, 178, 26, 16, 219, 67, 231, 178, 26, 16, 
-    231, 179, 252, 53, 26, 16, 231, 111, 231, 178, 26, 16, 250, 185, 231, 
-    179, 218, 207, 26, 16, 250, 185, 231, 179, 252, 53, 26, 16, 252, 8, 26, 
-    16, 218, 205, 231, 180, 26, 16, 144, 231, 180, 26, 16, 228, 90, 231, 180, 
-    26, 16, 246, 232, 231, 180, 26, 16, 224, 76, 231, 180, 26, 16, 221, 243, 
-    231, 180, 26, 16, 224, 68, 231, 180, 26, 16, 131, 242, 162, 220, 217, 
-    231, 180, 26, 16, 36, 223, 146, 26, 16, 36, 223, 233, 223, 146, 26, 16, 
-    36, 221, 97, 26, 16, 36, 221, 96, 26, 16, 36, 221, 95, 26, 16, 245, 183, 
-    221, 97, 26, 16, 245, 183, 221, 96, 26, 16, 245, 183, 221, 95, 26, 16, 
-    36, 253, 230, 248, 145, 26, 16, 36, 245, 162, 26, 16, 36, 245, 161, 26, 
-    16, 36, 245, 160, 26, 16, 36, 245, 159, 26, 16, 36, 245, 158, 26, 16, 
-    252, 131, 252, 143, 26, 16, 246, 190, 252, 143, 26, 16, 252, 131, 221, 
-    200, 26, 16, 246, 190, 221, 200, 26, 16, 252, 131, 224, 44, 26, 16, 246, 
-    190, 224, 44, 26, 16, 252, 131, 229, 115, 26, 16, 246, 190, 229, 115, 26, 
-    16, 36, 255, 0, 26, 16, 36, 223, 165, 26, 16, 36, 222, 58, 26, 16, 36, 
-    223, 166, 26, 16, 36, 234, 71, 26, 16, 36, 234, 70, 26, 16, 36, 254, 255, 
-    26, 16, 36, 234, 240, 26, 16, 254, 25, 220, 63, 26, 16, 254, 25, 247, 
-    132, 26, 16, 36, 248, 158, 26, 16, 36, 227, 91, 26, 16, 36, 245, 150, 26, 
-    16, 36, 224, 40, 26, 16, 36, 252, 113, 26, 16, 36, 51, 221, 124, 26, 16, 
-    36, 221, 78, 221, 124, 26, 16, 227, 95, 26, 16, 223, 99, 26, 16, 217, 
-    157, 26, 16, 229, 107, 26, 16, 233, 231, 26, 16, 245, 121, 26, 16, 250, 
-    106, 26, 16, 249, 83, 26, 16, 244, 47, 231, 181, 224, 55, 26, 16, 244, 
-    47, 231, 181, 231, 205, 224, 55, 26, 16, 221, 109, 26, 16, 220, 237, 26, 
-    16, 237, 170, 220, 237, 26, 16, 220, 238, 224, 55, 26, 16, 220, 238, 220, 
-    63, 26, 16, 230, 99, 223, 119, 26, 16, 230, 99, 223, 116, 26, 16, 230, 
-    99, 223, 115, 26, 16, 230, 99, 223, 114, 26, 16, 230, 99, 223, 113, 26, 
-    16, 230, 99, 223, 112, 26, 16, 230, 99, 223, 111, 26, 16, 230, 99, 223, 
-    110, 26, 16, 230, 99, 223, 109, 26, 16, 230, 99, 223, 118, 26, 16, 230, 
-    99, 223, 117, 26, 16, 243, 169, 26, 16, 232, 140, 26, 16, 246, 190, 117, 
-    223, 140, 26, 16, 249, 77, 224, 55, 26, 16, 36, 113, 252, 24, 26, 16, 36, 
-    108, 252, 24, 26, 16, 36, 243, 178, 26, 16, 36, 224, 34, 229, 59, 26, 16, 
-    229, 195, 78, 26, 16, 229, 195, 108, 78, 26, 16, 144, 229, 195, 78, 26, 
-    16, 244, 74, 220, 63, 26, 16, 244, 74, 247, 132, 26, 16, 2, 245, 182, 26, 
-    16, 249, 168, 26, 16, 249, 169, 254, 157, 26, 16, 234, 46, 26, 16, 234, 
-    250, 26, 16, 252, 5, 26, 16, 225, 71, 218, 207, 26, 16, 225, 71, 252, 53, 
-    26, 16, 233, 157, 26, 16, 233, 158, 252, 53, 26, 16, 225, 65, 218, 207, 
-    26, 16, 225, 65, 252, 53, 26, 16, 245, 82, 218, 207, 26, 16, 245, 82, 
-    252, 53, 26, 16, 234, 251, 229, 167, 227, 168, 26, 16, 234, 251, 237, 
-    228, 227, 168, 26, 16, 252, 6, 227, 168, 26, 16, 225, 71, 227, 168, 26, 
-    16, 233, 158, 227, 168, 26, 16, 225, 65, 227, 168, 26, 16, 222, 67, 229, 
-    165, 250, 87, 228, 224, 229, 166, 26, 16, 222, 67, 229, 165, 250, 87, 
-    228, 224, 237, 227, 26, 16, 222, 67, 229, 165, 250, 87, 228, 224, 229, 
-    167, 248, 224, 26, 16, 222, 67, 237, 226, 250, 87, 228, 224, 229, 166, 
-    26, 16, 222, 67, 237, 226, 250, 87, 228, 224, 237, 227, 26, 16, 222, 67, 
-    237, 226, 250, 87, 228, 224, 237, 228, 248, 224, 26, 16, 222, 67, 237, 
-    226, 250, 87, 228, 224, 237, 228, 248, 223, 26, 16, 222, 67, 237, 226, 
-    250, 87, 228, 224, 237, 228, 248, 222, 26, 16, 250, 103, 26, 16, 244, 26, 
-    251, 203, 250, 207, 26, 16, 244, 26, 246, 75, 250, 207, 26, 16, 40, 253, 
-    204, 26, 16, 219, 81, 26, 16, 229, 35, 26, 16, 250, 200, 26, 16, 226, 
-    110, 26, 16, 250, 202, 26, 16, 221, 115, 26, 16, 229, 17, 26, 16, 229, 
-    18, 245, 152, 26, 16, 226, 111, 245, 152, 26, 16, 221, 116, 227, 166, 26, 
-    16, 229, 154, 223, 95, 23, 219, 71, 165, 223, 18, 23, 219, 71, 165, 223, 
-    7, 23, 219, 71, 165, 222, 253, 23, 219, 71, 165, 222, 246, 23, 219, 71, 
-    165, 222, 238, 23, 219, 71, 165, 222, 232, 23, 219, 71, 165, 222, 231, 
-    23, 219, 71, 165, 222, 230, 23, 219, 71, 165, 222, 229, 23, 219, 71, 165, 
-    223, 17, 23, 219, 71, 165, 223, 16, 23, 219, 71, 165, 223, 15, 23, 219, 
-    71, 165, 223, 14, 23, 219, 71, 165, 223, 13, 23, 219, 71, 165, 223, 12, 
-    23, 219, 71, 165, 223, 11, 23, 219, 71, 165, 223, 10, 23, 219, 71, 165, 
-    223, 9, 23, 219, 71, 165, 223, 8, 23, 219, 71, 165, 223, 6, 23, 219, 71, 
-    165, 223, 5, 23, 219, 71, 165, 223, 4, 23, 219, 71, 165, 223, 3, 23, 219, 
-    71, 165, 223, 2, 23, 219, 71, 165, 222, 237, 23, 219, 71, 165, 222, 236, 
-    23, 219, 71, 165, 222, 235, 23, 219, 71, 165, 222, 234, 23, 219, 71, 165, 
-    222, 233, 23, 237, 189, 165, 223, 18, 23, 237, 189, 165, 223, 7, 23, 237, 
-    189, 165, 222, 246, 23, 237, 189, 165, 222, 238, 23, 237, 189, 165, 222, 
-    231, 23, 237, 189, 165, 222, 230, 23, 237, 189, 165, 223, 16, 23, 237, 
-    189, 165, 223, 15, 23, 237, 189, 165, 223, 14, 23, 237, 189, 165, 223, 
-    13, 23, 237, 189, 165, 223, 10, 23, 237, 189, 165, 223, 9, 23, 237, 189, 
-    165, 223, 8, 23, 237, 189, 165, 223, 3, 23, 237, 189, 165, 223, 2, 23, 
-    237, 189, 165, 223, 1, 23, 237, 189, 165, 223, 0, 23, 237, 189, 165, 222, 
-    255, 23, 237, 189, 165, 222, 254, 23, 237, 189, 165, 222, 252, 23, 237, 
-    189, 165, 222, 251, 23, 237, 189, 165, 222, 250, 23, 237, 189, 165, 222, 
-    249, 23, 237, 189, 165, 222, 248, 23, 237, 189, 165, 222, 247, 23, 237, 
-    189, 165, 222, 245, 23, 237, 189, 165, 222, 244, 23, 237, 189, 165, 222, 
-    243, 23, 237, 189, 165, 222, 242, 23, 237, 189, 165, 222, 241, 23, 237, 
-    189, 165, 222, 240, 23, 237, 189, 165, 222, 239, 23, 237, 189, 165, 222, 
-    237, 23, 237, 189, 165, 222, 236, 23, 237, 189, 165, 222, 235, 23, 237, 
-    189, 165, 222, 234, 23, 237, 189, 165, 222, 233, 36, 23, 26, 221, 75, 36, 
-    23, 26, 222, 43, 36, 23, 26, 229, 174, 23, 26, 235, 101, 233, 125, 35, 
-    247, 8, 248, 237, 35, 243, 150, 247, 8, 248, 237, 35, 242, 165, 247, 8, 
-    248, 237, 35, 247, 7, 243, 151, 248, 237, 35, 247, 7, 242, 164, 248, 237, 
-    35, 247, 8, 159, 35, 251, 84, 159, 35, 245, 90, 250, 221, 159, 35, 233, 
-    150, 159, 35, 252, 192, 159, 35, 236, 181, 224, 43, 159, 35, 250, 133, 
-    159, 35, 254, 9, 159, 35, 230, 109, 159, 35, 252, 13, 230, 83, 159, 35, 
-    249, 79, 156, 248, 198, 159, 35, 248, 195, 159, 35, 217, 210, 159, 35, 
-    237, 217, 159, 35, 229, 180, 159, 35, 227, 215, 159, 35, 250, 143, 159, 
-    35, 242, 253, 252, 233, 159, 35, 219, 1, 159, 35, 245, 138, 159, 35, 254, 
-    236, 159, 35, 227, 190, 159, 35, 227, 172, 159, 35, 247, 6, 159, 35, 237, 
-    45, 159, 35, 250, 138, 159, 35, 246, 189, 159, 35, 247, 87, 159, 35, 251, 
-    58, 159, 35, 249, 85, 159, 35, 21, 227, 171, 159, 35, 230, 38, 159, 35, 
-    235, 104, 159, 35, 250, 195, 159, 35, 236, 101, 159, 35, 244, 211, 159, 
-    35, 223, 126, 159, 35, 228, 189, 159, 35, 245, 89, 159, 35, 227, 173, 
-    159, 35, 235, 134, 156, 233, 134, 159, 35, 227, 169, 159, 35, 244, 64, 
-    199, 234, 12, 159, 35, 246, 191, 159, 35, 223, 133, 159, 35, 244, 28, 
-    159, 35, 246, 184, 159, 35, 229, 210, 159, 35, 227, 85, 159, 35, 245, 
-    151, 159, 35, 219, 173, 156, 218, 244, 159, 35, 250, 146, 159, 35, 234, 
-    23, 159, 35, 246, 120, 159, 35, 220, 71, 159, 35, 248, 225, 159, 35, 250, 
-    197, 233, 105, 159, 35, 244, 13, 159, 35, 244, 212, 237, 223, 159, 35, 
-    234, 53, 159, 35, 254, 253, 159, 35, 246, 203, 159, 35, 247, 134, 159, 
-    35, 218, 242, 159, 35, 224, 106, 159, 35, 237, 196, 159, 35, 249, 51, 
-    159, 35, 249, 150, 159, 35, 248, 221, 159, 35, 246, 93, 159, 35, 225, 37, 
-    159, 35, 223, 135, 159, 35, 243, 180, 159, 35, 250, 162, 159, 35, 250, 
-    193, 159, 35, 245, 248, 159, 35, 254, 205, 159, 35, 250, 161, 159, 35, 
-    230, 139, 222, 23, 219, 155, 159, 35, 248, 245, 159, 35, 235, 180, 159, 
-    35, 245, 118, 250, 112, 227, 69, 220, 73, 20, 107, 250, 112, 227, 69, 
-    220, 73, 20, 103, 250, 112, 227, 69, 220, 73, 20, 160, 250, 112, 227, 69, 
-    220, 73, 20, 154, 250, 112, 227, 69, 220, 73, 20, 174, 250, 112, 227, 69, 
-    220, 73, 20, 182, 250, 112, 227, 69, 220, 73, 20, 191, 250, 112, 227, 69, 
-    220, 73, 20, 185, 250, 112, 227, 69, 220, 73, 20, 190, 250, 112, 227, 69, 
-    222, 63, 20, 107, 250, 112, 227, 69, 222, 63, 20, 103, 250, 112, 227, 69, 
-    222, 63, 20, 160, 250, 112, 227, 69, 222, 63, 20, 154, 250, 112, 227, 69, 
-    222, 63, 20, 174, 250, 112, 227, 69, 222, 63, 20, 182, 250, 112, 227, 69, 
-    222, 63, 20, 191, 250, 112, 227, 69, 222, 63, 20, 185, 250, 112, 227, 69, 
-    222, 63, 20, 190, 14, 21, 6, 60, 14, 21, 6, 253, 204, 14, 21, 6, 251, 
-    202, 14, 21, 6, 250, 46, 14, 21, 6, 73, 14, 21, 6, 246, 74, 14, 21, 6, 
-    245, 67, 14, 21, 6, 243, 225, 14, 21, 6, 72, 14, 21, 6, 237, 126, 14, 21, 
-    6, 237, 17, 14, 21, 6, 153, 14, 21, 6, 189, 14, 21, 6, 207, 14, 21, 6, 
-    74, 14, 21, 6, 230, 59, 14, 21, 6, 228, 163, 14, 21, 6, 152, 14, 21, 6, 
-    198, 14, 21, 6, 222, 201, 14, 21, 6, 68, 14, 21, 6, 216, 216, 14, 21, 6, 
-    219, 40, 14, 21, 6, 218, 151, 14, 21, 6, 218, 90, 14, 21, 6, 217, 157, 
-    14, 21, 3, 60, 14, 21, 3, 253, 204, 14, 21, 3, 251, 202, 14, 21, 3, 250, 
-    46, 14, 21, 3, 73, 14, 21, 3, 246, 74, 14, 21, 3, 245, 67, 14, 21, 3, 
-    243, 225, 14, 21, 3, 72, 14, 21, 3, 237, 126, 14, 21, 3, 237, 17, 14, 21, 
-    3, 153, 14, 21, 3, 189, 14, 21, 3, 207, 14, 21, 3, 74, 14, 21, 3, 230, 
-    59, 14, 21, 3, 228, 163, 14, 21, 3, 152, 14, 21, 3, 198, 14, 21, 3, 222, 
-    201, 14, 21, 3, 68, 14, 21, 3, 216, 216, 14, 21, 3, 219, 40, 14, 21, 3, 
-    218, 151, 14, 21, 3, 218, 90, 14, 21, 3, 217, 157, 14, 30, 6, 60, 14, 30, 
-    6, 253, 204, 14, 30, 6, 251, 202, 14, 30, 6, 250, 46, 14, 30, 6, 73, 14, 
-    30, 6, 246, 74, 14, 30, 6, 245, 67, 14, 30, 6, 243, 225, 14, 30, 6, 72, 
-    14, 30, 6, 237, 126, 14, 30, 6, 237, 17, 14, 30, 6, 153, 14, 30, 6, 189, 
-    14, 30, 6, 207, 14, 30, 6, 74, 14, 30, 6, 230, 59, 14, 30, 6, 228, 163, 
-    14, 30, 6, 152, 14, 30, 6, 198, 14, 30, 6, 222, 201, 14, 30, 6, 68, 14, 
-    30, 6, 216, 216, 14, 30, 6, 219, 40, 14, 30, 6, 218, 151, 14, 30, 6, 218, 
-    90, 14, 30, 6, 217, 157, 14, 30, 3, 60, 14, 30, 3, 253, 204, 14, 30, 3, 
-    251, 202, 14, 30, 3, 250, 46, 14, 30, 3, 73, 14, 30, 3, 246, 74, 14, 30, 
-    3, 245, 67, 14, 30, 3, 72, 14, 30, 3, 237, 126, 14, 30, 3, 237, 17, 14, 
-    30, 3, 153, 14, 30, 3, 189, 14, 30, 3, 207, 14, 30, 3, 74, 14, 30, 3, 
-    230, 59, 14, 30, 3, 228, 163, 14, 30, 3, 152, 14, 30, 3, 198, 14, 30, 3, 
-    222, 201, 14, 30, 3, 68, 14, 30, 3, 216, 216, 14, 30, 3, 219, 40, 14, 30, 
-    3, 218, 151, 14, 30, 3, 218, 90, 14, 30, 3, 217, 157, 14, 21, 30, 6, 60, 
-    14, 21, 30, 6, 253, 204, 14, 21, 30, 6, 251, 202, 14, 21, 30, 6, 250, 46, 
-    14, 21, 30, 6, 73, 14, 21, 30, 6, 246, 74, 14, 21, 30, 6, 245, 67, 14, 
-    21, 30, 6, 243, 225, 14, 21, 30, 6, 72, 14, 21, 30, 6, 237, 126, 14, 21, 
-    30, 6, 237, 17, 14, 21, 30, 6, 153, 14, 21, 30, 6, 189, 14, 21, 30, 6, 
-    207, 14, 21, 30, 6, 74, 14, 21, 30, 6, 230, 59, 14, 21, 30, 6, 228, 163, 
-    14, 21, 30, 6, 152, 14, 21, 30, 6, 198, 14, 21, 30, 6, 222, 201, 14, 21, 
-    30, 6, 68, 14, 21, 30, 6, 216, 216, 14, 21, 30, 6, 219, 40, 14, 21, 30, 
-    6, 218, 151, 14, 21, 30, 6, 218, 90, 14, 21, 30, 6, 217, 157, 14, 21, 30, 
-    3, 60, 14, 21, 30, 3, 253, 204, 14, 21, 30, 3, 251, 202, 14, 21, 30, 3, 
-    250, 46, 14, 21, 30, 3, 73, 14, 21, 30, 3, 246, 74, 14, 21, 30, 3, 245, 
-    67, 14, 21, 30, 3, 243, 225, 14, 21, 30, 3, 72, 14, 21, 30, 3, 237, 126, 
-    14, 21, 30, 3, 237, 17, 14, 21, 30, 3, 153, 14, 21, 30, 3, 189, 14, 21, 
-    30, 3, 207, 14, 21, 30, 3, 74, 14, 21, 30, 3, 230, 59, 14, 21, 30, 3, 
-    228, 163, 14, 21, 30, 3, 152, 14, 21, 30, 3, 198, 14, 21, 30, 3, 222, 
-    201, 14, 21, 30, 3, 68, 14, 21, 30, 3, 216, 216, 14, 21, 30, 3, 219, 40, 
-    14, 21, 30, 3, 218, 151, 14, 21, 30, 3, 218, 90, 14, 21, 30, 3, 217, 157, 
-    14, 102, 6, 60, 14, 102, 6, 251, 202, 14, 102, 6, 250, 46, 14, 102, 6, 
-    245, 67, 14, 102, 6, 237, 126, 14, 102, 6, 237, 17, 14, 102, 6, 207, 14, 
-    102, 6, 74, 14, 102, 6, 230, 59, 14, 102, 6, 228, 163, 14, 102, 6, 198, 
-    14, 102, 6, 222, 201, 14, 102, 6, 68, 14, 102, 6, 216, 216, 14, 102, 6, 
-    219, 40, 14, 102, 6, 218, 151, 14, 102, 6, 218, 90, 14, 102, 6, 217, 157, 
-    14, 102, 3, 60, 14, 102, 3, 253, 204, 14, 102, 3, 251, 202, 14, 102, 3, 
-    250, 46, 14, 102, 3, 246, 74, 14, 102, 3, 243, 225, 14, 102, 3, 72, 14, 
-    102, 3, 237, 126, 14, 102, 3, 237, 17, 14, 102, 3, 153, 14, 102, 3, 189, 
-    14, 102, 3, 207, 14, 102, 3, 230, 59, 14, 102, 3, 228, 163, 14, 102, 3, 
-    152, 14, 102, 3, 198, 14, 102, 3, 222, 201, 14, 102, 3, 68, 14, 102, 3, 
-    216, 216, 14, 102, 3, 219, 40, 14, 102, 3, 218, 151, 14, 102, 3, 218, 90, 
-    14, 102, 3, 217, 157, 14, 21, 102, 6, 60, 14, 21, 102, 6, 253, 204, 14, 
-    21, 102, 6, 251, 202, 14, 21, 102, 6, 250, 46, 14, 21, 102, 6, 73, 14, 
-    21, 102, 6, 246, 74, 14, 21, 102, 6, 245, 67, 14, 21, 102, 6, 243, 225, 
-    14, 21, 102, 6, 72, 14, 21, 102, 6, 237, 126, 14, 21, 102, 6, 237, 17, 
-    14, 21, 102, 6, 153, 14, 21, 102, 6, 189, 14, 21, 102, 6, 207, 14, 21, 
-    102, 6, 74, 14, 21, 102, 6, 230, 59, 14, 21, 102, 6, 228, 163, 14, 21, 
-    102, 6, 152, 14, 21, 102, 6, 198, 14, 21, 102, 6, 222, 201, 14, 21, 102, 
-    6, 68, 14, 21, 102, 6, 216, 216, 14, 21, 102, 6, 219, 40, 14, 21, 102, 6, 
-    218, 151, 14, 21, 102, 6, 218, 90, 14, 21, 102, 6, 217, 157, 14, 21, 102, 
-    3, 60, 14, 21, 102, 3, 253, 204, 14, 21, 102, 3, 251, 202, 14, 21, 102, 
-    3, 250, 46, 14, 21, 102, 3, 73, 14, 21, 102, 3, 246, 74, 14, 21, 102, 3, 
-    245, 67, 14, 21, 102, 3, 243, 225, 14, 21, 102, 3, 72, 14, 21, 102, 3, 
-    237, 126, 14, 21, 102, 3, 237, 17, 14, 21, 102, 3, 153, 14, 21, 102, 3, 
-    189, 14, 21, 102, 3, 207, 14, 21, 102, 3, 74, 14, 21, 102, 3, 230, 59, 
-    14, 21, 102, 3, 228, 163, 14, 21, 102, 3, 152, 14, 21, 102, 3, 198, 14, 
-    21, 102, 3, 222, 201, 14, 21, 102, 3, 68, 14, 21, 102, 3, 216, 216, 14, 
-    21, 102, 3, 219, 40, 14, 21, 102, 3, 218, 151, 14, 21, 102, 3, 218, 90, 
-    14, 21, 102, 3, 217, 157, 14, 121, 6, 60, 14, 121, 6, 253, 204, 14, 121, 
-    6, 250, 46, 14, 121, 6, 73, 14, 121, 6, 246, 74, 14, 121, 6, 245, 67, 14, 
-    121, 6, 237, 126, 14, 121, 6, 237, 17, 14, 121, 6, 153, 14, 121, 6, 189, 
-    14, 121, 6, 207, 14, 121, 6, 74, 14, 121, 6, 230, 59, 14, 121, 6, 228, 
-    163, 14, 121, 6, 198, 14, 121, 6, 222, 201, 14, 121, 6, 68, 14, 121, 6, 
-    216, 216, 14, 121, 6, 219, 40, 14, 121, 6, 218, 151, 14, 121, 6, 218, 90, 
-    14, 121, 3, 60, 14, 121, 3, 253, 204, 14, 121, 3, 251, 202, 14, 121, 3, 
-    250, 46, 14, 121, 3, 73, 14, 121, 3, 246, 74, 14, 121, 3, 245, 67, 14, 
-    121, 3, 243, 225, 14, 121, 3, 72, 14, 121, 3, 237, 126, 14, 121, 3, 237, 
-    17, 14, 121, 3, 153, 14, 121, 3, 189, 14, 121, 3, 207, 14, 121, 3, 74, 
-    14, 121, 3, 230, 59, 14, 121, 3, 228, 163, 14, 121, 3, 152, 14, 121, 3, 
-    198, 14, 121, 3, 222, 201, 14, 121, 3, 68, 14, 121, 3, 216, 216, 14, 121, 
-    3, 219, 40, 14, 121, 3, 218, 151, 14, 121, 3, 218, 90, 14, 121, 3, 217, 
-    157, 14, 173, 6, 60, 14, 173, 6, 253, 204, 14, 173, 6, 250, 46, 14, 173, 
-    6, 73, 14, 173, 6, 246, 74, 14, 173, 6, 245, 67, 14, 173, 6, 72, 14, 173, 
-    6, 237, 126, 14, 173, 6, 237, 17, 14, 173, 6, 153, 14, 173, 6, 189, 14, 
-    173, 6, 74, 14, 173, 6, 198, 14, 173, 6, 222, 201, 14, 173, 6, 68, 14, 
-    173, 6, 216, 216, 14, 173, 6, 219, 40, 14, 173, 6, 218, 151, 14, 173, 6, 
-    218, 90, 14, 173, 3, 60, 14, 173, 3, 253, 204, 14, 173, 3, 251, 202, 14, 
-    173, 3, 250, 46, 14, 173, 3, 73, 14, 173, 3, 246, 74, 14, 173, 3, 245, 
-    67, 14, 173, 3, 243, 225, 14, 173, 3, 72, 14, 173, 3, 237, 126, 14, 173, 
-    3, 237, 17, 14, 173, 3, 153, 14, 173, 3, 189, 14, 173, 3, 207, 14, 173, 
-    3, 74, 14, 173, 3, 230, 59, 14, 173, 3, 228, 163, 14, 173, 3, 152, 14, 
-    173, 3, 198, 14, 173, 3, 222, 201, 14, 173, 3, 68, 14, 173, 3, 216, 216, 
-    14, 173, 3, 219, 40, 14, 173, 3, 218, 151, 14, 173, 3, 218, 90, 14, 173, 
-    3, 217, 157, 14, 21, 121, 6, 60, 14, 21, 121, 6, 253, 204, 14, 21, 121, 
-    6, 251, 202, 14, 21, 121, 6, 250, 46, 14, 21, 121, 6, 73, 14, 21, 121, 6, 
-    246, 74, 14, 21, 121, 6, 245, 67, 14, 21, 121, 6, 243, 225, 14, 21, 121, 
-    6, 72, 14, 21, 121, 6, 237, 126, 14, 21, 121, 6, 237, 17, 14, 21, 121, 6, 
-    153, 14, 21, 121, 6, 189, 14, 21, 121, 6, 207, 14, 21, 121, 6, 74, 14, 
-    21, 121, 6, 230, 59, 14, 21, 121, 6, 228, 163, 14, 21, 121, 6, 152, 14, 
-    21, 121, 6, 198, 14, 21, 121, 6, 222, 201, 14, 21, 121, 6, 68, 14, 21, 
-    121, 6, 216, 216, 14, 21, 121, 6, 219, 40, 14, 21, 121, 6, 218, 151, 14, 
-    21, 121, 6, 218, 90, 14, 21, 121, 6, 217, 157, 14, 21, 121, 3, 60, 14, 
-    21, 121, 3, 253, 204, 14, 21, 121, 3, 251, 202, 14, 21, 121, 3, 250, 46, 
-    14, 21, 121, 3, 73, 14, 21, 121, 3, 246, 74, 14, 21, 121, 3, 245, 67, 14, 
-    21, 121, 3, 243, 225, 14, 21, 121, 3, 72, 14, 21, 121, 3, 237, 126, 14, 
-    21, 121, 3, 237, 17, 14, 21, 121, 3, 153, 14, 21, 121, 3, 189, 14, 21, 
-    121, 3, 207, 14, 21, 121, 3, 74, 14, 21, 121, 3, 230, 59, 14, 21, 121, 3, 
-    228, 163, 14, 21, 121, 3, 152, 14, 21, 121, 3, 198, 14, 21, 121, 3, 222, 
-    201, 14, 21, 121, 3, 68, 14, 21, 121, 3, 216, 216, 14, 21, 121, 3, 219, 
-    40, 14, 21, 121, 3, 218, 151, 14, 21, 121, 3, 218, 90, 14, 21, 121, 3, 
-    217, 157, 14, 33, 6, 60, 14, 33, 6, 253, 204, 14, 33, 6, 251, 202, 14, 
-    33, 6, 250, 46, 14, 33, 6, 73, 14, 33, 6, 246, 74, 14, 33, 6, 245, 67, 
-    14, 33, 6, 243, 225, 14, 33, 6, 72, 14, 33, 6, 237, 126, 14, 33, 6, 237, 
-    17, 14, 33, 6, 153, 14, 33, 6, 189, 14, 33, 6, 207, 14, 33, 6, 74, 14, 
-    33, 6, 230, 59, 14, 33, 6, 228, 163, 14, 33, 6, 152, 14, 33, 6, 198, 14, 
-    33, 6, 222, 201, 14, 33, 6, 68, 14, 33, 6, 216, 216, 14, 33, 6, 219, 40, 
-    14, 33, 6, 218, 151, 14, 33, 6, 218, 90, 14, 33, 6, 217, 157, 14, 33, 3, 
-    60, 14, 33, 3, 253, 204, 14, 33, 3, 251, 202, 14, 33, 3, 250, 46, 14, 33, 
-    3, 73, 14, 33, 3, 246, 74, 14, 33, 3, 245, 67, 14, 33, 3, 243, 225, 14, 
-    33, 3, 72, 14, 33, 3, 237, 126, 14, 33, 3, 237, 17, 14, 33, 3, 153, 14, 
-    33, 3, 189, 14, 33, 3, 207, 14, 33, 3, 74, 14, 33, 3, 230, 59, 14, 33, 3, 
-    228, 163, 14, 33, 3, 152, 14, 33, 3, 198, 14, 33, 3, 222, 201, 14, 33, 3, 
-    68, 14, 33, 3, 216, 216, 14, 33, 3, 219, 40, 14, 33, 3, 218, 151, 14, 33, 
-    3, 218, 90, 14, 33, 3, 217, 157, 14, 33, 21, 6, 60, 14, 33, 21, 6, 253, 
-    204, 14, 33, 21, 6, 251, 202, 14, 33, 21, 6, 250, 46, 14, 33, 21, 6, 73, 
-    14, 33, 21, 6, 246, 74, 14, 33, 21, 6, 245, 67, 14, 33, 21, 6, 243, 225, 
-    14, 33, 21, 6, 72, 14, 33, 21, 6, 237, 126, 14, 33, 21, 6, 237, 17, 14, 
-    33, 21, 6, 153, 14, 33, 21, 6, 189, 14, 33, 21, 6, 207, 14, 33, 21, 6, 
-    74, 14, 33, 21, 6, 230, 59, 14, 33, 21, 6, 228, 163, 14, 33, 21, 6, 152, 
-    14, 33, 21, 6, 198, 14, 33, 21, 6, 222, 201, 14, 33, 21, 6, 68, 14, 33, 
-    21, 6, 216, 216, 14, 33, 21, 6, 219, 40, 14, 33, 21, 6, 218, 151, 14, 33, 
-    21, 6, 218, 90, 14, 33, 21, 6, 217, 157, 14, 33, 21, 3, 60, 14, 33, 21, 
-    3, 253, 204, 14, 33, 21, 3, 251, 202, 14, 33, 21, 3, 250, 46, 14, 33, 21, 
-    3, 73, 14, 33, 21, 3, 246, 74, 14, 33, 21, 3, 245, 67, 14, 33, 21, 3, 
-    243, 225, 14, 33, 21, 3, 72, 14, 33, 21, 3, 237, 126, 14, 33, 21, 3, 237, 
-    17, 14, 33, 21, 3, 153, 14, 33, 21, 3, 189, 14, 33, 21, 3, 207, 14, 33, 
-    21, 3, 74, 14, 33, 21, 3, 230, 59, 14, 33, 21, 3, 228, 163, 14, 33, 21, 
-    3, 152, 14, 33, 21, 3, 198, 14, 33, 21, 3, 222, 201, 14, 33, 21, 3, 68, 
-    14, 33, 21, 3, 216, 216, 14, 33, 21, 3, 219, 40, 14, 33, 21, 3, 218, 151, 
-    14, 33, 21, 3, 218, 90, 14, 33, 21, 3, 217, 157, 14, 33, 30, 6, 60, 14, 
-    33, 30, 6, 253, 204, 14, 33, 30, 6, 251, 202, 14, 33, 30, 6, 250, 46, 14, 
-    33, 30, 6, 73, 14, 33, 30, 6, 246, 74, 14, 33, 30, 6, 245, 67, 14, 33, 
-    30, 6, 243, 225, 14, 33, 30, 6, 72, 14, 33, 30, 6, 237, 126, 14, 33, 30, 
-    6, 237, 17, 14, 33, 30, 6, 153, 14, 33, 30, 6, 189, 14, 33, 30, 6, 207, 
-    14, 33, 30, 6, 74, 14, 33, 30, 6, 230, 59, 14, 33, 30, 6, 228, 163, 14, 
-    33, 30, 6, 152, 14, 33, 30, 6, 198, 14, 33, 30, 6, 222, 201, 14, 33, 30, 
-    6, 68, 14, 33, 30, 6, 216, 216, 14, 33, 30, 6, 219, 40, 14, 33, 30, 6, 
-    218, 151, 14, 33, 30, 6, 218, 90, 14, 33, 30, 6, 217, 157, 14, 33, 30, 3, 
-    60, 14, 33, 30, 3, 253, 204, 14, 33, 30, 3, 251, 202, 14, 33, 30, 3, 250, 
-    46, 14, 33, 30, 3, 73, 14, 33, 30, 3, 246, 74, 14, 33, 30, 3, 245, 67, 
-    14, 33, 30, 3, 243, 225, 14, 33, 30, 3, 72, 14, 33, 30, 3, 237, 126, 14, 
-    33, 30, 3, 237, 17, 14, 33, 30, 3, 153, 14, 33, 30, 3, 189, 14, 33, 30, 
-    3, 207, 14, 33, 30, 3, 74, 14, 33, 30, 3, 230, 59, 14, 33, 30, 3, 228, 
-    163, 14, 33, 30, 3, 152, 14, 33, 30, 3, 198, 14, 33, 30, 3, 222, 201, 14, 
-    33, 30, 3, 68, 14, 33, 30, 3, 216, 216, 14, 33, 30, 3, 219, 40, 14, 33, 
-    30, 3, 218, 151, 14, 33, 30, 3, 218, 90, 14, 33, 30, 3, 217, 157, 14, 33, 
-    21, 30, 6, 60, 14, 33, 21, 30, 6, 253, 204, 14, 33, 21, 30, 6, 251, 202, 
-    14, 33, 21, 30, 6, 250, 46, 14, 33, 21, 30, 6, 73, 14, 33, 21, 30, 6, 
-    246, 74, 14, 33, 21, 30, 6, 245, 67, 14, 33, 21, 30, 6, 243, 225, 14, 33, 
-    21, 30, 6, 72, 14, 33, 21, 30, 6, 237, 126, 14, 33, 21, 30, 6, 237, 17, 
-    14, 33, 21, 30, 6, 153, 14, 33, 21, 30, 6, 189, 14, 33, 21, 30, 6, 207, 
-    14, 33, 21, 30, 6, 74, 14, 33, 21, 30, 6, 230, 59, 14, 33, 21, 30, 6, 
-    228, 163, 14, 33, 21, 30, 6, 152, 14, 33, 21, 30, 6, 198, 14, 33, 21, 30, 
-    6, 222, 201, 14, 33, 21, 30, 6, 68, 14, 33, 21, 30, 6, 216, 216, 14, 33, 
-    21, 30, 6, 219, 40, 14, 33, 21, 30, 6, 218, 151, 14, 33, 21, 30, 6, 218, 
-    90, 14, 33, 21, 30, 6, 217, 157, 14, 33, 21, 30, 3, 60, 14, 33, 21, 30, 
-    3, 253, 204, 14, 33, 21, 30, 3, 251, 202, 14, 33, 21, 30, 3, 250, 46, 14, 
-    33, 21, 30, 3, 73, 14, 33, 21, 30, 3, 246, 74, 14, 33, 21, 30, 3, 245, 
-    67, 14, 33, 21, 30, 3, 243, 225, 14, 33, 21, 30, 3, 72, 14, 33, 21, 30, 
-    3, 237, 126, 14, 33, 21, 30, 3, 237, 17, 14, 33, 21, 30, 3, 153, 14, 33, 
-    21, 30, 3, 189, 14, 33, 21, 30, 3, 207, 14, 33, 21, 30, 3, 74, 14, 33, 
-    21, 30, 3, 230, 59, 14, 33, 21, 30, 3, 228, 163, 14, 33, 21, 30, 3, 152, 
-    14, 33, 21, 30, 3, 198, 14, 33, 21, 30, 3, 222, 201, 14, 33, 21, 30, 3, 
-    68, 14, 33, 21, 30, 3, 216, 216, 14, 33, 21, 30, 3, 219, 40, 14, 33, 21, 
-    30, 3, 218, 151, 14, 33, 21, 30, 3, 218, 90, 14, 33, 21, 30, 3, 217, 157, 
-    14, 211, 6, 60, 14, 211, 6, 253, 204, 14, 211, 6, 251, 202, 14, 211, 6, 
-    250, 46, 14, 211, 6, 73, 14, 211, 6, 246, 74, 14, 211, 6, 245, 67, 14, 
-    211, 6, 243, 225, 14, 211, 6, 72, 14, 211, 6, 237, 126, 14, 211, 6, 237, 
-    17, 14, 211, 6, 153, 14, 211, 6, 189, 14, 211, 6, 207, 14, 211, 6, 74, 
-    14, 211, 6, 230, 59, 14, 211, 6, 228, 163, 14, 211, 6, 152, 14, 211, 6, 
-    198, 14, 211, 6, 222, 201, 14, 211, 6, 68, 14, 211, 6, 216, 216, 14, 211, 
-    6, 219, 40, 14, 211, 6, 218, 151, 14, 211, 6, 218, 90, 14, 211, 6, 217, 
-    157, 14, 211, 3, 60, 14, 211, 3, 253, 204, 14, 211, 3, 251, 202, 14, 211, 
-    3, 250, 46, 14, 211, 3, 73, 14, 211, 3, 246, 74, 14, 211, 3, 245, 67, 14, 
-    211, 3, 243, 225, 14, 211, 3, 72, 14, 211, 3, 237, 126, 14, 211, 3, 237, 
-    17, 14, 211, 3, 153, 14, 211, 3, 189, 14, 211, 3, 207, 14, 211, 3, 74, 
-    14, 211, 3, 230, 59, 14, 211, 3, 228, 163, 14, 211, 3, 152, 14, 211, 3, 
-    198, 14, 211, 3, 222, 201, 14, 211, 3, 68, 14, 211, 3, 216, 216, 14, 211, 
-    3, 219, 40, 14, 211, 3, 218, 151, 14, 211, 3, 218, 90, 14, 211, 3, 217, 
-    157, 14, 30, 3, 248, 144, 72, 14, 30, 3, 248, 144, 237, 126, 14, 21, 6, 
-    254, 146, 14, 21, 6, 252, 102, 14, 21, 6, 244, 231, 14, 21, 6, 249, 62, 
-    14, 21, 6, 246, 156, 14, 21, 6, 217, 83, 14, 21, 6, 246, 121, 14, 21, 6, 
-    222, 6, 14, 21, 6, 237, 162, 14, 21, 6, 236, 221, 14, 21, 6, 235, 156, 
-    14, 21, 6, 233, 99, 14, 21, 6, 231, 144, 14, 21, 6, 218, 130, 14, 21, 6, 
-    230, 141, 14, 21, 6, 229, 108, 14, 21, 6, 227, 149, 14, 21, 6, 222, 7, 
-    100, 14, 21, 6, 224, 127, 14, 21, 6, 222, 105, 14, 21, 6, 220, 57, 14, 
-    21, 6, 229, 129, 14, 21, 6, 251, 31, 14, 21, 6, 228, 212, 14, 21, 6, 230, 
-    143, 14, 21, 232, 231, 14, 21, 3, 254, 146, 14, 21, 3, 252, 102, 14, 21, 
-    3, 244, 231, 14, 21, 3, 249, 62, 14, 21, 3, 246, 156, 14, 21, 3, 217, 83, 
-    14, 21, 3, 246, 121, 14, 21, 3, 222, 6, 14, 21, 3, 237, 162, 14, 21, 3, 
-    236, 221, 14, 21, 3, 235, 156, 14, 21, 3, 233, 99, 14, 21, 3, 231, 144, 
-    14, 21, 3, 218, 130, 14, 21, 3, 230, 141, 14, 21, 3, 229, 108, 14, 21, 3, 
-    227, 149, 14, 21, 3, 39, 224, 127, 14, 21, 3, 224, 127, 14, 21, 3, 222, 
-    105, 14, 21, 3, 220, 57, 14, 21, 3, 229, 129, 14, 21, 3, 251, 31, 14, 21, 
-    3, 228, 212, 14, 21, 3, 230, 143, 14, 21, 229, 223, 248, 246, 14, 21, 
-    246, 157, 100, 14, 21, 222, 7, 100, 14, 21, 236, 222, 100, 14, 21, 229, 
-    130, 100, 14, 21, 227, 150, 100, 14, 21, 229, 109, 100, 14, 30, 6, 254, 
-    146, 14, 30, 6, 252, 102, 14, 30, 6, 244, 231, 14, 30, 6, 249, 62, 14, 
-    30, 6, 246, 156, 14, 30, 6, 217, 83, 14, 30, 6, 246, 121, 14, 30, 6, 222, 
-    6, 14, 30, 6, 237, 162, 14, 30, 6, 236, 221, 14, 30, 6, 235, 156, 14, 30, 
-    6, 233, 99, 14, 30, 6, 231, 144, 14, 30, 6, 218, 130, 14, 30, 6, 230, 
-    141, 14, 30, 6, 229, 108, 14, 30, 6, 227, 149, 14, 30, 6, 222, 7, 100, 
-    14, 30, 6, 224, 127, 14, 30, 6, 222, 105, 14, 30, 6, 220, 57, 14, 30, 6, 
-    229, 129, 14, 30, 6, 251, 31, 14, 30, 6, 228, 212, 14, 30, 6, 230, 143, 
-    14, 30, 232, 231, 14, 30, 3, 254, 146, 14, 30, 3, 252, 102, 14, 30, 3, 
-    244, 231, 14, 30, 3, 249, 62, 14, 30, 3, 246, 156, 14, 30, 3, 217, 83, 
-    14, 30, 3, 246, 121, 14, 30, 3, 222, 6, 14, 30, 3, 237, 162, 14, 30, 3, 
-    236, 221, 14, 30, 3, 235, 156, 14, 30, 3, 233, 99, 14, 30, 3, 231, 144, 
-    14, 30, 3, 218, 130, 14, 30, 3, 230, 141, 14, 30, 3, 229, 108, 14, 30, 3, 
-    227, 149, 14, 30, 3, 39, 224, 127, 14, 30, 3, 224, 127, 14, 30, 3, 222, 
-    105, 14, 30, 3, 220, 57, 14, 30, 3, 229, 129, 14, 30, 3, 251, 31, 14, 30, 
-    3, 228, 212, 14, 30, 3, 230, 143, 14, 30, 229, 223, 248, 246, 14, 30, 
-    246, 157, 100, 14, 30, 222, 7, 100, 14, 30, 236, 222, 100, 14, 30, 229, 
-    130, 100, 14, 30, 227, 150, 100, 14, 30, 229, 109, 100, 14, 21, 30, 6, 
-    254, 146, 14, 21, 30, 6, 252, 102, 14, 21, 30, 6, 244, 231, 14, 21, 30, 
-    6, 249, 62, 14, 21, 30, 6, 246, 156, 14, 21, 30, 6, 217, 83, 14, 21, 30, 
-    6, 246, 121, 14, 21, 30, 6, 222, 6, 14, 21, 30, 6, 237, 162, 14, 21, 30, 
-    6, 236, 221, 14, 21, 30, 6, 235, 156, 14, 21, 30, 6, 233, 99, 14, 21, 30, 
-    6, 231, 144, 14, 21, 30, 6, 218, 130, 14, 21, 30, 6, 230, 141, 14, 21, 
-    30, 6, 229, 108, 14, 21, 30, 6, 227, 149, 14, 21, 30, 6, 222, 7, 100, 14, 
-    21, 30, 6, 224, 127, 14, 21, 30, 6, 222, 105, 14, 21, 30, 6, 220, 57, 14, 
-    21, 30, 6, 229, 129, 14, 21, 30, 6, 251, 31, 14, 21, 30, 6, 228, 212, 14, 
-    21, 30, 6, 230, 143, 14, 21, 30, 232, 231, 14, 21, 30, 3, 254, 146, 14, 
-    21, 30, 3, 252, 102, 14, 21, 30, 3, 244, 231, 14, 21, 30, 3, 249, 62, 14, 
-    21, 30, 3, 246, 156, 14, 21, 30, 3, 217, 83, 14, 21, 30, 3, 246, 121, 14, 
-    21, 30, 3, 222, 6, 14, 21, 30, 3, 237, 162, 14, 21, 30, 3, 236, 221, 14, 
-    21, 30, 3, 235, 156, 14, 21, 30, 3, 233, 99, 14, 21, 30, 3, 231, 144, 14, 
-    21, 30, 3, 218, 130, 14, 21, 30, 3, 230, 141, 14, 21, 30, 3, 229, 108, 
-    14, 21, 30, 3, 227, 149, 14, 21, 30, 3, 39, 224, 127, 14, 21, 30, 3, 224, 
-    127, 14, 21, 30, 3, 222, 105, 14, 21, 30, 3, 220, 57, 14, 21, 30, 3, 229, 
-    129, 14, 21, 30, 3, 251, 31, 14, 21, 30, 3, 228, 212, 14, 21, 30, 3, 230, 
-    143, 14, 21, 30, 229, 223, 248, 246, 14, 21, 30, 246, 157, 100, 14, 21, 
-    30, 222, 7, 100, 14, 21, 30, 236, 222, 100, 14, 21, 30, 229, 130, 100, 
-    14, 21, 30, 227, 150, 100, 14, 21, 30, 229, 109, 100, 14, 33, 21, 6, 254, 
-    146, 14, 33, 21, 6, 252, 102, 14, 33, 21, 6, 244, 231, 14, 33, 21, 6, 
-    249, 62, 14, 33, 21, 6, 246, 156, 14, 33, 21, 6, 217, 83, 14, 33, 21, 6, 
-    246, 121, 14, 33, 21, 6, 222, 6, 14, 33, 21, 6, 237, 162, 14, 33, 21, 6, 
-    236, 221, 14, 33, 21, 6, 235, 156, 14, 33, 21, 6, 233, 99, 14, 33, 21, 6, 
-    231, 144, 14, 33, 21, 6, 218, 130, 14, 33, 21, 6, 230, 141, 14, 33, 21, 
-    6, 229, 108, 14, 33, 21, 6, 227, 149, 14, 33, 21, 6, 222, 7, 100, 14, 33, 
-    21, 6, 224, 127, 14, 33, 21, 6, 222, 105, 14, 33, 21, 6, 220, 57, 14, 33, 
-    21, 6, 229, 129, 14, 33, 21, 6, 251, 31, 14, 33, 21, 6, 228, 212, 14, 33, 
-    21, 6, 230, 143, 14, 33, 21, 232, 231, 14, 33, 21, 3, 254, 146, 14, 33, 
-    21, 3, 252, 102, 14, 33, 21, 3, 244, 231, 14, 33, 21, 3, 249, 62, 14, 33, 
-    21, 3, 246, 156, 14, 33, 21, 3, 217, 83, 14, 33, 21, 3, 246, 121, 14, 33, 
-    21, 3, 222, 6, 14, 33, 21, 3, 237, 162, 14, 33, 21, 3, 236, 221, 14, 33, 
-    21, 3, 235, 156, 14, 33, 21, 3, 233, 99, 14, 33, 21, 3, 231, 144, 14, 33, 
-    21, 3, 218, 130, 14, 33, 21, 3, 230, 141, 14, 33, 21, 3, 229, 108, 14, 
-    33, 21, 3, 227, 149, 14, 33, 21, 3, 39, 224, 127, 14, 33, 21, 3, 224, 
-    127, 14, 33, 21, 3, 222, 105, 14, 33, 21, 3, 220, 57, 14, 33, 21, 3, 229, 
-    129, 14, 33, 21, 3, 251, 31, 14, 33, 21, 3, 228, 212, 14, 33, 21, 3, 230, 
-    143, 14, 33, 21, 229, 223, 248, 246, 14, 33, 21, 246, 157, 100, 14, 33, 
-    21, 222, 7, 100, 14, 33, 21, 236, 222, 100, 14, 33, 21, 229, 130, 100, 
-    14, 33, 21, 227, 150, 100, 14, 33, 21, 229, 109, 100, 14, 33, 21, 30, 6, 
-    254, 146, 14, 33, 21, 30, 6, 252, 102, 14, 33, 21, 30, 6, 244, 231, 14, 
-    33, 21, 30, 6, 249, 62, 14, 33, 21, 30, 6, 246, 156, 14, 33, 21, 30, 6, 
-    217, 83, 14, 33, 21, 30, 6, 246, 121, 14, 33, 21, 30, 6, 222, 6, 14, 33, 
-    21, 30, 6, 237, 162, 14, 33, 21, 30, 6, 236, 221, 14, 33, 21, 30, 6, 235, 
-    156, 14, 33, 21, 30, 6, 233, 99, 14, 33, 21, 30, 6, 231, 144, 14, 33, 21, 
-    30, 6, 218, 130, 14, 33, 21, 30, 6, 230, 141, 14, 33, 21, 30, 6, 229, 
-    108, 14, 33, 21, 30, 6, 227, 149, 14, 33, 21, 30, 6, 222, 7, 100, 14, 33, 
-    21, 30, 6, 224, 127, 14, 33, 21, 30, 6, 222, 105, 14, 33, 21, 30, 6, 220, 
-    57, 14, 33, 21, 30, 6, 229, 129, 14, 33, 21, 30, 6, 251, 31, 14, 33, 21, 
-    30, 6, 228, 212, 14, 33, 21, 30, 6, 230, 143, 14, 33, 21, 30, 232, 231, 
-    14, 33, 21, 30, 3, 254, 146, 14, 33, 21, 30, 3, 252, 102, 14, 33, 21, 30, 
-    3, 244, 231, 14, 33, 21, 30, 3, 249, 62, 14, 33, 21, 30, 3, 246, 156, 14, 
-    33, 21, 30, 3, 217, 83, 14, 33, 21, 30, 3, 246, 121, 14, 33, 21, 30, 3, 
-    222, 6, 14, 33, 21, 30, 3, 237, 162, 14, 33, 21, 30, 3, 236, 221, 14, 33, 
-    21, 30, 3, 235, 156, 14, 33, 21, 30, 3, 233, 99, 14, 33, 21, 30, 3, 231, 
-    144, 14, 33, 21, 30, 3, 218, 130, 14, 33, 21, 30, 3, 230, 141, 14, 33, 
-    21, 30, 3, 229, 108, 14, 33, 21, 30, 3, 227, 149, 14, 33, 21, 30, 3, 39, 
-    224, 127, 14, 33, 21, 30, 3, 224, 127, 14, 33, 21, 30, 3, 222, 105, 14, 
-    33, 21, 30, 3, 220, 57, 14, 33, 21, 30, 3, 229, 129, 14, 33, 21, 30, 3, 
-    251, 31, 14, 33, 21, 30, 3, 228, 212, 14, 33, 21, 30, 3, 230, 143, 14, 
-    33, 21, 30, 229, 223, 248, 246, 14, 33, 21, 30, 246, 157, 100, 14, 33, 
-    21, 30, 222, 7, 100, 14, 33, 21, 30, 236, 222, 100, 14, 33, 21, 30, 229, 
-    130, 100, 14, 33, 21, 30, 227, 150, 100, 14, 33, 21, 30, 229, 109, 100, 
-    14, 21, 6, 248, 240, 14, 21, 3, 248, 240, 14, 21, 20, 217, 84, 14, 21, 
-    20, 107, 14, 21, 20, 103, 14, 21, 20, 160, 14, 21, 20, 154, 14, 21, 20, 
-    174, 14, 21, 20, 182, 14, 21, 20, 191, 14, 21, 20, 185, 14, 21, 20, 190, 
-    14, 173, 20, 217, 84, 14, 173, 20, 107, 14, 173, 20, 103, 14, 173, 20, 
-    160, 14, 173, 20, 154, 14, 173, 20, 174, 14, 173, 20, 182, 14, 173, 20, 
-    191, 14, 173, 20, 185, 14, 173, 20, 190, 14, 33, 20, 217, 84, 14, 33, 20, 
-    107, 14, 33, 20, 103, 14, 33, 20, 160, 14, 33, 20, 154, 14, 33, 20, 174, 
-    14, 33, 20, 182, 14, 33, 20, 191, 14, 33, 20, 185, 14, 33, 20, 190, 14, 
-    33, 21, 20, 217, 84, 14, 33, 21, 20, 107, 14, 33, 21, 20, 103, 14, 33, 
-    21, 20, 160, 14, 33, 21, 20, 154, 14, 33, 21, 20, 174, 14, 33, 21, 20, 
-    182, 14, 33, 21, 20, 191, 14, 33, 21, 20, 185, 14, 33, 21, 20, 190, 14, 
-    211, 20, 217, 84, 14, 211, 20, 107, 14, 211, 20, 103, 14, 211, 20, 160, 
-    14, 211, 20, 154, 14, 211, 20, 174, 14, 211, 20, 182, 14, 211, 20, 191, 
-    14, 211, 20, 185, 14, 211, 20, 190, 234, 101, 81, 247, 5, 218, 194, 234, 
-    101, 81, 224, 6, 218, 194, 234, 101, 81, 218, 217, 218, 194, 234, 101, 
-    81, 231, 187, 218, 194, 234, 101, 81, 227, 203, 247, 123, 234, 101, 81, 
-    244, 27, 247, 123, 234, 101, 81, 67, 247, 123, 234, 101, 81, 131, 117, 
-    251, 54, 234, 101, 81, 124, 117, 251, 54, 234, 101, 81, 148, 117, 251, 
-    54, 234, 101, 81, 245, 116, 117, 251, 54, 234, 101, 81, 245, 170, 117, 
-    251, 54, 234, 101, 81, 224, 82, 117, 251, 54, 234, 101, 81, 225, 43, 117, 
-    251, 54, 234, 101, 81, 246, 235, 117, 251, 54, 234, 101, 81, 232, 31, 
-    117, 251, 54, 234, 101, 81, 131, 117, 252, 210, 234, 101, 81, 124, 117, 
-    252, 210, 234, 101, 81, 148, 117, 252, 210, 234, 101, 81, 245, 116, 117, 
-    252, 210, 234, 101, 81, 245, 170, 117, 252, 210, 234, 101, 81, 224, 82, 
-    117, 252, 210, 234, 101, 81, 225, 43, 117, 252, 210, 234, 101, 81, 246, 
-    235, 117, 252, 210, 234, 101, 81, 232, 31, 117, 252, 210, 234, 101, 81, 
-    131, 117, 250, 220, 234, 101, 81, 124, 117, 250, 220, 234, 101, 81, 148, 
-    117, 250, 220, 234, 101, 81, 245, 116, 117, 250, 220, 234, 101, 81, 245, 
-    170, 117, 250, 220, 234, 101, 81, 224, 82, 117, 250, 220, 234, 101, 81, 
-    225, 43, 117, 250, 220, 234, 101, 81, 246, 235, 117, 250, 220, 234, 101, 
-    81, 232, 31, 117, 250, 220, 234, 101, 81, 229, 45, 234, 101, 81, 230, 
-    104, 234, 101, 81, 252, 211, 234, 101, 81, 250, 254, 234, 101, 81, 223, 
-    232, 234, 101, 81, 223, 70, 234, 101, 81, 253, 223, 234, 101, 81, 218, 
-    190, 234, 101, 81, 237, 53, 234, 101, 81, 252, 233, 119, 81, 186, 252, 
-    233, 119, 81, 242, 240, 119, 81, 242, 239, 119, 81, 242, 238, 119, 81, 
-    242, 237, 119, 81, 242, 236, 119, 81, 242, 235, 119, 81, 242, 234, 119, 
-    81, 242, 233, 119, 81, 242, 232, 119, 81, 242, 231, 119, 81, 242, 230, 
-    119, 81, 242, 229, 119, 81, 242, 228, 119, 81, 242, 227, 119, 81, 242, 
-    226, 119, 81, 242, 225, 119, 81, 242, 224, 119, 81, 242, 223, 119, 81, 
-    242, 222, 119, 81, 242, 221, 119, 81, 242, 220, 119, 81, 242, 219, 119, 
-    81, 242, 218, 119, 81, 242, 217, 119, 81, 242, 216, 119, 81, 242, 215, 
-    119, 81, 242, 214, 119, 81, 242, 213, 119, 81, 242, 212, 119, 81, 242, 
-    211, 119, 81, 242, 210, 119, 81, 242, 209, 119, 81, 242, 208, 119, 81, 
-    242, 207, 119, 81, 242, 206, 119, 81, 242, 205, 119, 81, 242, 204, 119, 
-    81, 242, 203, 119, 81, 242, 202, 119, 81, 242, 201, 119, 81, 242, 200, 
-    119, 81, 242, 199, 119, 81, 242, 198, 119, 81, 242, 197, 119, 81, 242, 
-    196, 119, 81, 242, 195, 119, 81, 242, 194, 119, 81, 242, 193, 119, 81, 
-    242, 192, 119, 81, 69, 252, 233, 119, 81, 219, 151, 119, 81, 219, 150, 
-    119, 81, 219, 149, 119, 81, 219, 148, 119, 81, 219, 147, 119, 81, 219, 
-    146, 119, 81, 219, 145, 119, 81, 219, 144, 119, 81, 219, 143, 119, 81, 
-    219, 142, 119, 81, 219, 141, 119, 81, 219, 140, 119, 81, 219, 139, 119, 
-    81, 219, 138, 119, 81, 219, 137, 119, 81, 219, 136, 119, 81, 219, 135, 
-    119, 81, 219, 134, 119, 81, 219, 133, 119, 81, 219, 132, 119, 81, 219, 
-    131, 119, 81, 219, 130, 119, 81, 219, 129, 119, 81, 219, 128, 119, 81, 
-    219, 127, 119, 81, 219, 126, 119, 81, 219, 125, 119, 81, 219, 124, 119, 
-    81, 219, 123, 119, 81, 219, 122, 119, 81, 219, 121, 119, 81, 219, 120, 
-    119, 81, 219, 119, 119, 81, 219, 118, 119, 81, 219, 117, 119, 81, 219, 
-    116, 119, 81, 219, 115, 119, 81, 219, 114, 119, 81, 219, 113, 119, 81, 
-    219, 112, 119, 81, 219, 111, 119, 81, 219, 110, 119, 81, 219, 109, 119, 
-    81, 219, 108, 119, 81, 219, 107, 119, 81, 219, 106, 119, 81, 219, 105, 
-    119, 81, 219, 104, 119, 81, 219, 103, 20, 217, 85, 245, 90, 223, 136, 20, 
-    217, 85, 250, 168, 20, 131, 250, 168, 20, 124, 250, 168, 20, 148, 250, 
-    168, 20, 245, 116, 250, 168, 20, 245, 170, 250, 168, 20, 224, 82, 250, 
-    168, 20, 225, 43, 250, 168, 20, 246, 235, 250, 168, 20, 232, 31, 250, 
-    168, 82, 7, 6, 1, 60, 82, 7, 6, 1, 253, 204, 82, 7, 6, 1, 251, 202, 82, 
-    7, 6, 1, 250, 46, 82, 7, 6, 1, 73, 82, 7, 6, 1, 246, 74, 82, 7, 6, 1, 
-    245, 67, 82, 7, 6, 1, 243, 225, 82, 7, 6, 1, 72, 82, 7, 6, 1, 237, 126, 
-    82, 7, 6, 1, 237, 17, 82, 7, 6, 1, 153, 82, 7, 6, 1, 189, 82, 7, 6, 1, 
-    207, 82, 7, 6, 1, 74, 82, 7, 6, 1, 230, 59, 82, 7, 6, 1, 228, 163, 82, 7, 
-    6, 1, 152, 82, 7, 6, 1, 198, 82, 7, 6, 1, 222, 201, 82, 7, 6, 1, 68, 82, 
-    7, 6, 1, 216, 216, 82, 7, 6, 1, 219, 40, 82, 7, 6, 1, 218, 151, 82, 7, 6, 
-    1, 218, 90, 82, 7, 6, 1, 217, 157, 221, 114, 224, 236, 252, 17, 7, 6, 1, 
-    198, 34, 30, 7, 6, 1, 251, 202, 34, 30, 7, 6, 1, 152, 34, 251, 100, 34, 
-    218, 153, 204, 7, 6, 1, 253, 204, 204, 7, 6, 1, 207, 204, 7, 6, 1, 230, 
-    59, 204, 7, 6, 1, 198, 204, 7, 6, 1, 219, 40, 204, 242, 154, 204, 233, 
-    52, 204, 226, 96, 204, 223, 219, 204, 229, 4, 232, 136, 34, 7, 6, 1, 243, 
-    225, 232, 136, 34, 7, 6, 1, 230, 59, 232, 136, 204, 7, 6, 1, 237, 126, 
-    232, 136, 204, 7, 6, 1, 153, 232, 136, 204, 7, 6, 1, 189, 232, 136, 204, 
-    7, 6, 1, 230, 59, 250, 98, 232, 136, 204, 7, 6, 1, 230, 59, 232, 136, 
-    204, 242, 67, 232, 136, 204, 187, 232, 136, 204, 226, 177, 40, 248, 184, 
-    40, 136, 243, 0, 204, 9, 220, 76, 240, 8, 204, 9, 220, 76, 240, 12, 204, 
-    9, 220, 76, 240, 18, 204, 52, 249, 92, 204, 9, 220, 76, 240, 24, 204, 9, 
-    220, 76, 240, 14, 204, 9, 220, 76, 239, 248, 204, 9, 220, 76, 240, 13, 
-    204, 9, 220, 76, 240, 23, 204, 9, 220, 76, 240, 0, 204, 9, 220, 76, 239, 
-    252, 204, 9, 220, 76, 240, 2, 204, 9, 220, 76, 240, 20, 204, 9, 220, 76, 
-    240, 9, 204, 9, 220, 76, 240, 22, 204, 9, 220, 76, 240, 1, 204, 9, 220, 
-    76, 240, 21, 204, 9, 220, 76, 239, 249, 204, 9, 220, 76, 239, 251, 204, 
-    9, 220, 76, 239, 247, 204, 9, 220, 76, 240, 15, 204, 9, 220, 76, 240, 16, 
-    204, 9, 220, 76, 239, 254, 204, 9, 220, 76, 240, 6, 204, 9, 220, 76, 240, 
-    4, 204, 9, 220, 76, 240, 27, 204, 9, 220, 76, 240, 26, 204, 9, 220, 76, 
-    239, 245, 204, 9, 220, 76, 240, 10, 204, 9, 220, 76, 240, 25, 204, 9, 
-    220, 76, 240, 17, 204, 9, 220, 76, 240, 5, 204, 9, 220, 76, 239, 246, 
-    204, 9, 220, 76, 240, 7, 221, 114, 224, 236, 252, 17, 9, 220, 76, 239, 
-    255, 221, 114, 224, 236, 252, 17, 9, 220, 76, 240, 26, 221, 114, 224, 
-    236, 252, 17, 9, 220, 76, 240, 24, 221, 114, 224, 236, 252, 17, 9, 220, 
-    76, 240, 11, 221, 114, 224, 236, 252, 17, 9, 220, 76, 239, 253, 221, 114, 
-    224, 236, 252, 17, 9, 220, 76, 240, 7, 221, 114, 224, 236, 252, 17, 9, 
-    220, 76, 239, 250, 221, 114, 224, 236, 252, 17, 9, 220, 76, 240, 19, 221, 
-    114, 224, 236, 252, 17, 9, 220, 76, 240, 3, 9, 13, 242, 57, 9, 13, 242, 
-    56, 9, 13, 242, 55, 9, 13, 242, 54, 9, 13, 242, 53, 9, 13, 242, 52, 9, 
-    13, 242, 51, 9, 13, 242, 50, 9, 13, 242, 49, 9, 13, 242, 48, 9, 13, 242, 
-    47, 9, 13, 242, 46, 9, 13, 242, 45, 9, 13, 242, 44, 9, 13, 242, 43, 9, 
-    13, 242, 42, 9, 13, 242, 41, 9, 13, 242, 40, 9, 13, 242, 39, 9, 13, 242, 
-    38, 9, 13, 242, 37, 9, 13, 242, 36, 9, 13, 242, 35, 9, 13, 242, 34, 9, 
-    13, 242, 33, 9, 13, 242, 32, 9, 13, 242, 31, 9, 13, 242, 30, 9, 13, 242, 
-    29, 9, 13, 242, 28, 9, 13, 242, 27, 9, 13, 242, 26, 9, 13, 242, 25, 9, 
-    13, 242, 24, 9, 13, 242, 23, 9, 13, 242, 22, 9, 13, 242, 21, 9, 13, 242, 
-    20, 9, 13, 242, 19, 9, 13, 242, 18, 9, 13, 242, 17, 9, 13, 242, 16, 9, 
-    13, 242, 15, 9, 13, 242, 14, 9, 13, 242, 13, 9, 13, 242, 12, 9, 13, 242, 
-    11, 9, 13, 242, 10, 9, 13, 242, 9, 9, 13, 242, 8, 9, 13, 242, 7, 9, 13, 
-    242, 6, 9, 13, 242, 5, 9, 13, 242, 4, 9, 13, 242, 3, 9, 13, 242, 2, 9, 
-    13, 242, 1, 9, 13, 242, 0, 9, 13, 241, 255, 9, 13, 241, 254, 9, 13, 241, 
-    253, 9, 13, 241, 252, 9, 13, 241, 251, 9, 13, 241, 250, 9, 13, 241, 249, 
-    9, 13, 241, 248, 9, 13, 241, 247, 9, 13, 241, 246, 9, 13, 241, 245, 9, 
-    13, 241, 244, 9, 13, 241, 243, 9, 13, 241, 242, 9, 13, 241, 241, 9, 13, 
-    241, 240, 9, 13, 241, 239, 9, 13, 241, 238, 9, 13, 241, 237, 9, 13, 241, 
-    236, 9, 13, 241, 235, 9, 13, 241, 234, 9, 13, 241, 233, 9, 13, 241, 232, 
-    9, 13, 241, 231, 9, 13, 241, 230, 9, 13, 241, 229, 9, 13, 241, 228, 9, 
-    13, 241, 227, 9, 13, 241, 226, 9, 13, 241, 225, 9, 13, 241, 224, 9, 13, 
-    241, 223, 9, 13, 241, 222, 9, 13, 241, 221, 9, 13, 241, 220, 9, 13, 241, 
-    219, 9, 13, 241, 218, 9, 13, 241, 217, 9, 13, 241, 216, 9, 13, 241, 215, 
-    9, 13, 241, 214, 9, 13, 241, 213, 9, 13, 241, 212, 9, 13, 241, 211, 9, 
-    13, 241, 210, 9, 13, 241, 209, 9, 13, 241, 208, 9, 13, 241, 207, 9, 13, 
-    241, 206, 9, 13, 241, 205, 9, 13, 241, 204, 9, 13, 241, 203, 9, 13, 241, 
-    202, 9, 13, 241, 201, 9, 13, 241, 200, 9, 13, 241, 199, 9, 13, 241, 198, 
-    9, 13, 241, 197, 9, 13, 241, 196, 9, 13, 241, 195, 9, 13, 241, 194, 9, 
-    13, 241, 193, 9, 13, 241, 192, 9, 13, 241, 191, 9, 13, 241, 190, 9, 13, 
-    241, 189, 9, 13, 241, 188, 9, 13, 241, 187, 9, 13, 241, 186, 9, 13, 241, 
-    185, 9, 13, 241, 184, 9, 13, 241, 183, 9, 13, 241, 182, 9, 13, 241, 181, 
-    9, 13, 241, 180, 9, 13, 241, 179, 9, 13, 241, 178, 9, 13, 241, 177, 9, 
-    13, 241, 176, 9, 13, 241, 175, 9, 13, 241, 174, 9, 13, 241, 173, 9, 13, 
-    241, 172, 9, 13, 241, 171, 9, 13, 241, 170, 9, 13, 241, 169, 9, 13, 241, 
-    168, 9, 13, 241, 167, 9, 13, 241, 166, 9, 13, 241, 165, 9, 13, 241, 164, 
-    9, 13, 241, 163, 9, 13, 241, 162, 9, 13, 241, 161, 9, 13, 241, 160, 9, 
-    13, 241, 159, 9, 13, 241, 158, 9, 13, 241, 157, 9, 13, 241, 156, 9, 13, 
-    241, 155, 9, 13, 241, 154, 9, 13, 241, 153, 9, 13, 241, 152, 9, 13, 241, 
-    151, 9, 13, 241, 150, 9, 13, 241, 149, 9, 13, 241, 148, 9, 13, 241, 147, 
-    9, 13, 241, 146, 9, 13, 241, 145, 9, 13, 241, 144, 9, 13, 241, 143, 9, 
-    13, 241, 142, 9, 13, 241, 141, 9, 13, 241, 140, 9, 13, 241, 139, 9, 13, 
-    241, 138, 9, 13, 241, 137, 9, 13, 241, 136, 9, 13, 241, 135, 9, 13, 241, 
-    134, 9, 13, 241, 133, 9, 13, 241, 132, 9, 13, 241, 131, 9, 13, 241, 130, 
-    9, 13, 241, 129, 9, 13, 241, 128, 9, 13, 241, 127, 9, 13, 241, 126, 9, 
-    13, 241, 125, 9, 13, 241, 124, 9, 13, 241, 123, 9, 13, 241, 122, 9, 13, 
-    241, 121, 9, 13, 241, 120, 9, 13, 241, 119, 9, 13, 241, 118, 9, 13, 241, 
-    117, 9, 13, 241, 116, 9, 13, 241, 115, 9, 13, 241, 114, 9, 13, 241, 113, 
-    9, 13, 241, 112, 9, 13, 241, 111, 9, 13, 241, 110, 9, 13, 241, 109, 9, 
-    13, 241, 108, 9, 13, 241, 107, 9, 13, 241, 106, 9, 13, 241, 105, 9, 13, 
-    241, 104, 9, 13, 241, 103, 9, 13, 241, 102, 9, 13, 241, 101, 9, 13, 241, 
-    100, 9, 13, 241, 99, 9, 13, 241, 98, 9, 13, 241, 97, 9, 13, 241, 96, 9, 
-    13, 241, 95, 9, 13, 241, 94, 9, 13, 241, 93, 9, 13, 241, 92, 9, 13, 241, 
-    91, 9, 13, 241, 90, 9, 13, 241, 89, 9, 13, 241, 88, 9, 13, 241, 87, 9, 
-    13, 241, 86, 9, 13, 241, 85, 9, 13, 241, 84, 9, 13, 241, 83, 9, 13, 241, 
-    82, 9, 13, 241, 81, 9, 13, 241, 80, 9, 13, 241, 79, 9, 13, 241, 78, 9, 
-    13, 241, 77, 9, 13, 241, 76, 9, 13, 241, 75, 9, 13, 241, 74, 9, 13, 241, 
-    73, 9, 13, 241, 72, 9, 13, 241, 71, 9, 13, 241, 70, 9, 13, 241, 69, 9, 
-    13, 241, 68, 9, 13, 241, 67, 9, 13, 241, 66, 9, 13, 241, 65, 9, 13, 241, 
-    64, 9, 13, 241, 63, 9, 13, 241, 62, 9, 13, 241, 61, 9, 13, 241, 60, 9, 
-    13, 241, 59, 9, 13, 241, 58, 9, 13, 241, 57, 9, 13, 241, 56, 9, 13, 241, 
-    55, 9, 13, 241, 54, 9, 13, 241, 53, 9, 13, 241, 52, 9, 13, 241, 51, 9, 
-    13, 241, 50, 9, 13, 241, 49, 9, 13, 241, 48, 9, 13, 241, 47, 9, 13, 241, 
-    46, 9, 13, 241, 45, 9, 13, 241, 44, 9, 13, 241, 43, 9, 13, 241, 42, 9, 
-    13, 241, 41, 9, 13, 241, 40, 9, 13, 241, 39, 9, 13, 241, 38, 9, 13, 241, 
-    37, 9, 13, 241, 36, 9, 13, 241, 35, 9, 13, 241, 34, 9, 13, 241, 33, 9, 
-    13, 241, 32, 9, 13, 241, 31, 9, 13, 241, 30, 9, 13, 241, 29, 9, 13, 241, 
-    28, 9, 13, 241, 27, 9, 13, 241, 26, 9, 13, 241, 25, 9, 13, 241, 24, 9, 
-    13, 241, 23, 9, 13, 241, 22, 9, 13, 241, 21, 9, 13, 241, 20, 9, 13, 241, 
-    19, 9, 13, 241, 18, 9, 13, 241, 17, 9, 13, 241, 16, 9, 13, 241, 15, 9, 
-    13, 241, 14, 9, 13, 241, 13, 9, 13, 241, 12, 9, 13, 241, 11, 9, 13, 241, 
-    10, 9, 13, 241, 9, 9, 13, 241, 8, 9, 13, 241, 7, 9, 13, 241, 6, 9, 13, 
-    241, 5, 9, 13, 241, 4, 9, 13, 241, 3, 9, 13, 241, 2, 9, 13, 241, 1, 9, 
-    13, 241, 0, 9, 13, 240, 255, 9, 13, 240, 254, 9, 13, 240, 253, 9, 13, 
-    240, 252, 9, 13, 240, 251, 9, 13, 240, 250, 9, 13, 240, 249, 9, 13, 240, 
-    248, 9, 13, 240, 247, 9, 13, 240, 246, 9, 13, 240, 245, 9, 13, 240, 244, 
-    9, 13, 240, 243, 9, 13, 240, 242, 9, 13, 240, 241, 9, 13, 240, 240, 9, 
-    13, 240, 239, 9, 13, 240, 238, 9, 13, 240, 237, 9, 13, 240, 236, 9, 13, 
-    240, 235, 9, 13, 240, 234, 9, 13, 240, 233, 9, 13, 240, 232, 9, 13, 240, 
-    231, 9, 13, 240, 230, 9, 13, 240, 229, 9, 13, 240, 228, 9, 13, 240, 227, 
-    9, 13, 240, 226, 9, 13, 240, 225, 9, 13, 240, 224, 9, 13, 240, 223, 9, 
-    13, 240, 222, 9, 13, 240, 221, 9, 13, 240, 220, 9, 13, 240, 219, 9, 13, 
-    240, 218, 9, 13, 240, 217, 9, 13, 240, 216, 9, 13, 240, 215, 9, 13, 240, 
-    214, 9, 13, 240, 213, 9, 13, 240, 212, 9, 13, 240, 211, 9, 13, 240, 210, 
-    9, 13, 240, 209, 9, 13, 240, 208, 9, 13, 240, 207, 9, 13, 240, 206, 9, 
-    13, 240, 205, 9, 13, 240, 204, 9, 13, 240, 203, 9, 13, 240, 202, 9, 13, 
-    240, 201, 9, 13, 240, 200, 9, 13, 240, 199, 9, 13, 240, 198, 9, 13, 240, 
-    197, 9, 13, 240, 196, 9, 13, 240, 195, 9, 13, 240, 194, 9, 13, 240, 193, 
-    9, 13, 240, 192, 9, 13, 240, 191, 9, 13, 240, 190, 9, 13, 240, 189, 9, 
-    13, 240, 188, 9, 13, 240, 187, 9, 13, 240, 186, 9, 13, 240, 185, 9, 13, 
-    240, 184, 9, 13, 240, 183, 9, 13, 240, 182, 9, 13, 240, 181, 9, 13, 240, 
-    180, 9, 13, 240, 179, 9, 13, 240, 178, 9, 13, 240, 177, 9, 13, 240, 176, 
-    9, 13, 240, 175, 9, 13, 240, 174, 9, 13, 240, 173, 9, 13, 240, 172, 9, 
-    13, 240, 171, 9, 13, 240, 170, 9, 13, 240, 169, 9, 13, 240, 168, 9, 13, 
-    240, 167, 9, 13, 240, 166, 9, 13, 240, 165, 9, 13, 240, 164, 9, 13, 240, 
-    163, 9, 13, 240, 162, 9, 13, 240, 161, 9, 13, 240, 160, 9, 13, 240, 159, 
-    9, 13, 240, 158, 9, 13, 240, 157, 9, 13, 240, 156, 9, 13, 240, 155, 9, 
-    13, 240, 154, 9, 13, 240, 153, 9, 13, 240, 152, 9, 13, 240, 151, 9, 13, 
-    240, 150, 9, 13, 240, 149, 9, 13, 240, 148, 9, 13, 240, 147, 9, 13, 240, 
-    146, 9, 13, 240, 145, 9, 13, 240, 144, 9, 13, 240, 143, 9, 13, 240, 142, 
-    9, 13, 240, 141, 9, 13, 240, 140, 9, 13, 240, 139, 9, 13, 240, 138, 9, 
-    13, 240, 137, 9, 13, 240, 136, 9, 13, 240, 135, 9, 13, 240, 134, 9, 13, 
-    240, 133, 9, 13, 240, 132, 9, 13, 240, 131, 9, 13, 240, 130, 9, 13, 240, 
-    129, 9, 13, 240, 128, 9, 13, 240, 127, 9, 13, 240, 126, 9, 13, 240, 125, 
-    9, 13, 240, 124, 9, 13, 240, 123, 9, 13, 240, 122, 9, 13, 240, 121, 9, 
-    13, 240, 120, 9, 13, 240, 119, 9, 13, 240, 118, 9, 13, 240, 117, 9, 13, 
-    240, 116, 9, 13, 240, 115, 9, 13, 240, 114, 9, 13, 240, 113, 9, 13, 240, 
-    112, 9, 13, 240, 111, 9, 13, 240, 110, 9, 13, 240, 109, 9, 13, 240, 108, 
-    9, 13, 240, 107, 9, 13, 240, 106, 9, 13, 240, 105, 9, 13, 240, 104, 9, 
-    13, 240, 103, 9, 13, 240, 102, 9, 13, 240, 101, 9, 13, 240, 100, 9, 13, 
-    240, 99, 9, 13, 240, 98, 9, 13, 240, 97, 9, 13, 240, 96, 9, 13, 240, 95, 
-    9, 13, 240, 94, 9, 13, 240, 93, 9, 13, 240, 92, 9, 13, 240, 91, 9, 13, 
-    240, 90, 9, 13, 240, 89, 9, 13, 240, 88, 9, 13, 240, 87, 9, 13, 240, 86, 
-    9, 13, 240, 85, 9, 13, 240, 84, 9, 13, 240, 83, 9, 13, 240, 82, 9, 13, 
-    240, 81, 9, 13, 240, 80, 9, 13, 240, 79, 9, 13, 240, 78, 9, 13, 240, 77, 
-    9, 13, 240, 76, 9, 13, 240, 75, 9, 13, 240, 74, 9, 13, 240, 73, 9, 13, 
-    240, 72, 9, 13, 240, 71, 9, 13, 240, 70, 9, 13, 240, 69, 9, 13, 240, 68, 
-    9, 13, 240, 67, 9, 13, 240, 66, 9, 13, 240, 65, 9, 13, 240, 64, 9, 13, 
-    240, 63, 9, 13, 240, 62, 9, 13, 240, 61, 9, 13, 240, 60, 9, 13, 240, 59, 
-    9, 13, 240, 58, 9, 13, 240, 57, 9, 13, 240, 56, 9, 13, 240, 55, 9, 13, 
-    240, 54, 9, 13, 240, 53, 9, 13, 240, 52, 9, 13, 240, 51, 9, 13, 240, 50, 
-    9, 13, 240, 49, 9, 13, 240, 48, 9, 13, 240, 47, 9, 13, 240, 46, 9, 13, 
-    240, 45, 9, 13, 240, 44, 9, 13, 240, 43, 9, 13, 240, 42, 9, 13, 240, 41, 
-    9, 13, 240, 40, 9, 13, 240, 39, 9, 13, 240, 38, 9, 13, 240, 37, 9, 13, 
-    240, 36, 9, 13, 240, 35, 9, 13, 240, 34, 9, 13, 240, 33, 9, 13, 240, 32, 
-    9, 13, 240, 31, 9, 13, 240, 30, 9, 13, 240, 29, 9, 13, 240, 28, 235, 148, 
-    222, 141, 118, 223, 254, 118, 246, 95, 78, 118, 228, 69, 78, 118, 54, 55, 
-    118, 248, 155, 55, 118, 229, 169, 55, 118, 254, 134, 118, 254, 79, 118, 
-    42, 229, 229, 118, 45, 229, 229, 118, 253, 251, 118, 88, 55, 118, 250, 
-    168, 118, 242, 120, 118, 245, 90, 223, 136, 118, 224, 17, 118, 20, 217, 
-    84, 118, 20, 107, 118, 20, 103, 118, 20, 160, 118, 20, 154, 118, 20, 174, 
-    118, 20, 182, 118, 20, 191, 118, 20, 185, 118, 20, 190, 118, 250, 175, 
-    118, 225, 67, 118, 235, 87, 55, 118, 246, 154, 55, 118, 244, 30, 55, 118, 
-    228, 82, 78, 118, 250, 167, 253, 244, 118, 7, 6, 1, 60, 118, 7, 6, 1, 
-    253, 204, 118, 7, 6, 1, 251, 202, 118, 7, 6, 1, 250, 46, 118, 7, 6, 1, 
-    73, 118, 7, 6, 1, 246, 74, 118, 7, 6, 1, 245, 67, 118, 7, 6, 1, 243, 225, 
-    118, 7, 6, 1, 72, 118, 7, 6, 1, 237, 126, 118, 7, 6, 1, 237, 17, 118, 7, 
-    6, 1, 153, 118, 7, 6, 1, 189, 118, 7, 6, 1, 207, 118, 7, 6, 1, 74, 118, 
-    7, 6, 1, 230, 59, 118, 7, 6, 1, 228, 163, 118, 7, 6, 1, 152, 118, 7, 6, 
-    1, 198, 118, 7, 6, 1, 222, 201, 118, 7, 6, 1, 68, 118, 7, 6, 1, 216, 216, 
-    118, 7, 6, 1, 219, 40, 118, 7, 6, 1, 218, 151, 118, 7, 6, 1, 218, 90, 
-    118, 7, 6, 1, 217, 157, 118, 42, 40, 115, 118, 227, 160, 224, 17, 118, 
-    45, 40, 115, 118, 250, 217, 255, 0, 118, 109, 235, 43, 118, 244, 37, 255, 
-    0, 118, 7, 3, 1, 60, 118, 7, 3, 1, 253, 204, 118, 7, 3, 1, 251, 202, 118, 
-    7, 3, 1, 250, 46, 118, 7, 3, 1, 73, 118, 7, 3, 1, 246, 74, 118, 7, 3, 1, 
-    245, 67, 118, 7, 3, 1, 243, 225, 118, 7, 3, 1, 72, 118, 7, 3, 1, 237, 
-    126, 118, 7, 3, 1, 237, 17, 118, 7, 3, 1, 153, 118, 7, 3, 1, 189, 118, 7, 
-    3, 1, 207, 118, 7, 3, 1, 74, 118, 7, 3, 1, 230, 59, 118, 7, 3, 1, 228, 
-    163, 118, 7, 3, 1, 152, 118, 7, 3, 1, 198, 118, 7, 3, 1, 222, 201, 118, 
-    7, 3, 1, 68, 118, 7, 3, 1, 216, 216, 118, 7, 3, 1, 219, 40, 118, 7, 3, 1, 
-    218, 151, 118, 7, 3, 1, 218, 90, 118, 7, 3, 1, 217, 157, 118, 42, 250, 
-    79, 115, 118, 69, 235, 43, 118, 45, 250, 79, 115, 118, 221, 179, 251, 
-    153, 222, 141, 41, 225, 251, 41, 225, 240, 41, 225, 229, 41, 225, 217, 
-    41, 225, 206, 41, 225, 195, 41, 225, 184, 41, 225, 173, 41, 225, 162, 41, 
-    225, 154, 41, 225, 153, 41, 225, 152, 41, 225, 151, 41, 225, 149, 41, 
-    225, 148, 41, 225, 147, 41, 225, 146, 41, 225, 145, 41, 225, 144, 41, 
-    225, 143, 41, 225, 142, 41, 225, 141, 41, 225, 140, 41, 225, 138, 41, 
-    225, 137, 41, 225, 136, 41, 225, 135, 41, 225, 134, 41, 225, 133, 41, 
-    225, 132, 41, 225, 131, 41, 225, 130, 41, 225, 129, 41, 225, 127, 41, 
-    225, 126, 41, 225, 125, 41, 225, 124, 41, 225, 123, 41, 225, 122, 41, 
-    225, 121, 41, 225, 120, 41, 225, 119, 41, 225, 118, 41, 225, 116, 41, 
-    225, 115, 41, 225, 114, 41, 225, 113, 41, 225, 112, 41, 225, 111, 41, 
-    225, 110, 41, 225, 109, 41, 225, 108, 41, 225, 107, 41, 225, 105, 41, 
-    225, 104, 41, 225, 103, 41, 225, 102, 41, 225, 101, 41, 225, 100, 41, 
-    225, 99, 41, 225, 98, 41, 225, 97, 41, 225, 96, 41, 225, 94, 41, 225, 93, 
-    41, 225, 92, 41, 225, 91, 41, 225, 90, 41, 225, 89, 41, 225, 88, 41, 225, 
-    87, 41, 225, 86, 41, 225, 85, 41, 225, 83, 41, 225, 82, 41, 225, 81, 41, 
-    225, 80, 41, 225, 79, 41, 225, 78, 41, 225, 77, 41, 225, 76, 41, 225, 75, 
-    41, 225, 74, 41, 226, 71, 41, 226, 70, 41, 226, 69, 41, 226, 68, 41, 226, 
-    67, 41, 226, 66, 41, 226, 65, 41, 226, 64, 41, 226, 63, 41, 226, 62, 41, 
-    226, 60, 41, 226, 59, 41, 226, 58, 41, 226, 57, 41, 226, 56, 41, 226, 55, 
-    41, 226, 54, 41, 226, 53, 41, 226, 52, 41, 226, 51, 41, 226, 49, 41, 226, 
-    48, 41, 226, 47, 41, 226, 46, 41, 226, 45, 41, 226, 44, 41, 226, 43, 41, 
-    226, 42, 41, 226, 41, 41, 226, 40, 41, 226, 38, 41, 226, 37, 41, 226, 36, 
-    41, 226, 35, 41, 226, 34, 41, 226, 33, 41, 226, 32, 41, 226, 31, 41, 226, 
-    30, 41, 226, 29, 41, 226, 27, 41, 226, 26, 41, 226, 25, 41, 226, 24, 41, 
-    226, 23, 41, 226, 22, 41, 226, 21, 41, 226, 20, 41, 226, 19, 41, 226, 18, 
-    41, 226, 16, 41, 226, 15, 41, 226, 14, 41, 226, 13, 41, 226, 12, 41, 226, 
-    11, 41, 226, 10, 41, 226, 9, 41, 226, 8, 41, 226, 7, 41, 226, 5, 41, 226, 
-    4, 41, 226, 3, 41, 226, 2, 41, 226, 1, 41, 226, 0, 41, 225, 255, 41, 225, 
-    254, 41, 225, 253, 41, 225, 252, 41, 225, 250, 41, 225, 249, 41, 225, 
-    248, 41, 225, 247, 41, 225, 246, 41, 225, 245, 41, 225, 244, 41, 225, 
-    243, 41, 225, 242, 41, 225, 241, 41, 225, 239, 41, 225, 238, 41, 225, 
-    237, 41, 225, 236, 41, 225, 235, 41, 225, 234, 41, 225, 233, 41, 225, 
-    232, 41, 225, 231, 41, 225, 230, 41, 225, 228, 41, 225, 227, 41, 225, 
-    226, 41, 225, 225, 41, 225, 224, 41, 225, 223, 41, 225, 222, 41, 225, 
-    221, 41, 225, 220, 41, 225, 219, 41, 225, 216, 41, 225, 215, 41, 225, 
-    214, 41, 225, 213, 41, 225, 212, 41, 225, 211, 41, 225, 210, 41, 225, 
-    209, 41, 225, 208, 41, 225, 207, 41, 225, 205, 41, 225, 204, 41, 225, 
-    203, 41, 225, 202, 41, 225, 201, 41, 225, 200, 41, 225, 199, 41, 225, 
-    198, 41, 225, 197, 41, 225, 196, 41, 225, 194, 41, 225, 193, 41, 225, 
-    192, 41, 225, 191, 41, 225, 190, 41, 225, 189, 41, 225, 188, 41, 225, 
-    187, 41, 225, 186, 41, 225, 185, 41, 225, 183, 41, 225, 182, 41, 225, 
-    181, 41, 225, 180, 41, 225, 179, 41, 225, 178, 41, 225, 177, 41, 225, 
-    176, 41, 225, 175, 41, 225, 174, 41, 225, 172, 41, 225, 171, 41, 225, 
-    170, 41, 225, 169, 41, 225, 168, 41, 225, 167, 41, 225, 166, 41, 225, 
-    165, 41, 225, 164, 41, 225, 163, 41, 225, 161, 41, 225, 160, 41, 225, 
-    159, 41, 225, 158, 41, 225, 157, 41, 225, 156, 41, 225, 155, 
-};
-
-static unsigned char phrasebook_offset1[] = {
-    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, 17, 87, 88, 89, 90, 91, 
-    92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 103, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 104, 105, 106, 107, 108, 
-    109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 
-    123, 124, 125, 17, 126, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 127, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 128, 129, 
-    130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 
-    144, 145, 17, 146, 147, 148, 149, 150, 17, 17, 17, 17, 17, 17, 151, 17, 
-    152, 17, 153, 17, 154, 17, 155, 17, 17, 17, 156, 17, 17, 17, 17, 157, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 158, 159, 160, 161, 162, 163, 
-    164, 17, 165, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 166, 167, 168, 169, 170, 171, 172, 173, 
-    174, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 175, 176, 177, 178, 179, 17, 180, 17, 181, 182, 
-    183, 184, 185, 186, 187, 188, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 189, 190, 191, 192, 193, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 194, 195, 196, 197, 198, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 199, 17, 200, 201, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-};
-
-static unsigned int phrasebook_offset2[] = {
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 6, 9, 11, 14, 17, 19, 21, 24, 27, 29, 31, 
-    33, 35, 39, 41, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 69, 72, 
-    75, 78, 82, 86, 91, 96, 101, 105, 110, 115, 120, 124, 129, 134, 138, 142, 
-    146, 150, 155, 160, 164, 168, 173, 177, 182, 187, 192, 197, 202, 205, 
-    209, 212, 216, 219, 223, 227, 232, 237, 242, 246, 251, 256, 261, 265, 
-    270, 275, 279, 283, 287, 291, 296, 301, 305, 309, 314, 318, 323, 328, 
-    333, 338, 343, 347, 350, 354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 356, 360, 365, 
-    368, 371, 374, 377, 380, 383, 385, 388, 394, 402, 404, 408, 411, 413, 
-    416, 419, 422, 425, 429, 432, 435, 439, 441, 444, 450, 458, 465, 472, 
-    479, 484, 491, 497, 504, 511, 518, 526, 531, 539, 546, 552, 559, 566, 
-    574, 581, 589, 597, 602, 610, 617, 623, 630, 637, 644, 647, 653, 660, 
-    666, 673, 680, 687, 692, 698, 705, 711, 718, 725, 732, 740, 745, 753, 
-    760, 766, 773, 780, 788, 795, 803, 811, 816, 824, 831, 837, 844, 851, 
-    858, 861, 867, 874, 880, 887, 894, 901, 906, 914, 921, 928, 935, 942, 
-    949, 956, 963, 970, 978, 986, 994, 1002, 1010, 1018, 1026, 1034, 1041, 
-    1048, 1055, 1062, 1069, 1076, 1083, 1090, 1097, 1104, 1111, 1118, 1126, 
-    1134, 1142, 1150, 1158, 1166, 1174, 1182, 1190, 1198, 1205, 1212, 1220, 
-    1228, 1236, 1244, 1252, 1260, 1268, 1276, 1284, 1290, 1295, 1300, 1308, 
-    1316, 1324, 1332, 1337, 1344, 1351, 1359, 1367, 1375, 1383, 1393, 1403, 
-    1410, 1417, 1424, 1431, 1439, 1447, 1455, 1463, 1474, 1479, 1484, 1491, 
-    1498, 1505, 1512, 1519, 1526, 1531, 1536, 1543, 1550, 1558, 1566, 1574, 
-    1582, 1589, 1596, 1604, 1612, 1620, 1628, 1636, 1644, 1652, 1660, 1668, 
-    1676, 1683, 1690, 1697, 1704, 1711, 1718, 1725, 1732, 1740, 1748, 1755, 
-    1762, 1769, 1776, 1784, 1792, 1800, 1808, 1816, 1823, 1830, 1838, 1846, 
-    1854, 1862, 1867, 1873, 1879, 1886, 1893, 1898, 1903, 1909, 1916, 1923, 
-    1930, 1937, 1945, 1953, 1959, 1964, 1969, 1975, 1982, 1989, 1996, 2001, 
-    2006, 2011, 2018, 2025, 2032, 2039, 2046, 2051, 2059, 2069, 2078, 2085, 
-    2092, 2097, 2102, 2109, 2116, 2120, 2125, 2130, 2135, 2142, 2151, 2158, 
-    2165, 2174, 2181, 2188, 2193, 2200, 2207, 2214, 2221, 2228, 2233, 2240, 
-    2247, 2255, 2260, 2265, 2270, 2280, 2284, 2290, 2296, 2302, 2308, 2316, 
-    2329, 2337, 2342, 2352, 2357, 2362, 2372, 2377, 2384, 2391, 2399, 2407, 
-    2414, 2421, 2428, 2435, 2445, 2455, 2464, 2473, 2483, 2493, 2503, 2513, 
-    2518, 2528, 2538, 2548, 2558, 2566, 2574, 2581, 2588, 2596, 2604, 2612, 
-    2620, 2627, 2634, 2644, 2654, 2662, 2670, 2678, 2683, 2693, 2698, 2705, 
-    2712, 2717, 2722, 2730, 2738, 2748, 2758, 2765, 2772, 2780, 2788, 2796, 
-    2804, 2813, 2822, 2830, 2838, 2847, 2856, 2865, 2874, 2884, 2894, 2902, 
-    2910, 2919, 2928, 2937, 2946, 2956, 2966, 2974, 2982, 2991, 3000, 3009, 
-    3018, 3027, 3036, 3041, 3046, 3054, 3062, 3072, 3080, 3085, 3090, 3097, 
-    3104, 3111, 3118, 3125, 3132, 3142, 3152, 3162, 3172, 3179, 3186, 3196, 
-    3206, 3214, 3222, 3230, 3238, 3246, 3253, 3260, 3267, 3273, 3280, 3287, 
-    3294, 3303, 3313, 3323, 3330, 3337, 3343, 3348, 3354, 3360, 3366, 3373, 
-    3380, 3391, 3401, 3408, 3415, 3422, 3429, 3434, 3439, 3445, 3451, 3457, 
-    3465, 3473, 3480, 3485, 3490, 3497, 3503, 3510, 3519, 3528, 3537, 3544, 
-    3550, 3556, 3561, 3568, 3574, 3581, 3588, 3595, 3600, 3605, 3615, 3623, 
-    3632, 3637, 3642, 3652, 3659, 3667, 3676, 3681, 3687, 3693, 3700, 3705, 
-    3710, 3720, 3728, 3737, 3745, 3753, 3762, 3767, 3774, 3781, 3786, 3797, 
-    3805, 3813, 3819, 3828, 3833, 3838, 3845, 3851, 3857, 3863, 3869, 3878, 
-    3886, 3891, 3899, 3905, 3913, 3921, 3927, 3933, 3939, 3947, 3955, 3961, 
-    3969, 3975, 3980, 3987, 3995, 4004, 4011, 4018, 4028, 4035, 4042, 4052, 
-    4059, 4066, 4073, 4079, 4085, 4094, 4106, 4111, 4118, 4123, 4127, 4132, 
-    4140, 4147, 4152, 4157, 4161, 4166, 4171, 4175, 4180, 4186, 4192, 4198, 
-    4205, 4210, 4215, 4220, 4225, 4231, 4233, 4238, 4242, 4248, 4254, 4260, 
-    4265, 4272, 4279, 4285, 4292, 4300, 4308, 4313, 4318, 4322, 4327, 4329, 
-    4331, 4334, 4336, 4339, 4344, 4349, 4355, 4360, 4364, 4368, 4373, 4381, 
-    4387, 4392, 4398, 4403, 4409, 4417, 4425, 4429, 4433, 4438, 4444, 4450, 
-    4456, 4462, 4467, 4475, 4484, 4493, 4498, 4504, 4511, 4518, 4525, 4532, 
-    4536, 4542, 4547, 4552, 4557, 4562, 4565, 4568, 4571, 4574, 4577, 4580, 
-    4584, 4588, 4594, 4597, 4602, 4608, 4614, 4617, 4622, 4627, 4631, 4636, 
-    4642, 4648, 4654, 4659, 4664, 4669, 4672, 4678, 4683, 4688, 4692, 4697, 
-    4703, 4709, 4712, 4716, 4720, 4724, 4727, 4730, 4735, 4739, 4746, 4750, 
-    4756, 4760, 4766, 4770, 4774, 4778, 4783, 4788, 4794, 4799, 4806, 4812, 
-    4818, 4824, 4827, 4831, 4835, 4839, 4843, 4848, 4853, 4857, 4861, 4867, 
-    4871, 4875, 4880, 4886, 4891, 4896, 4900, 4906, 4911, 4916, 4921, 4926, 
-    4932, 4935, 4939, 4944, 4949, 4958, 4964, 4969, 4973, 4978, 4982, 4987, 
-    4991, 4995, 5000, 5004, 5010, 5015, 5020, 5025, 5030, 5035, 5040, 5046, 
-    5052, 5058, 5063, 5068, 5074, 5080, 5086, 5091, 5096, 5103, 5110, 5114, 
-    5120, 5127, 0, 0, 5134, 5137, 5145, 5154, 5164, 0, 0, 0, 0, 0, 5168, 
-    5171, 5176, 5184, 5189, 5197, 5205, 0, 5213, 0, 5221, 5229, 5237, 5248, 
-    5253, 5258, 5263, 5268, 5273, 5278, 5283, 5288, 5293, 5298, 5303, 5308, 
-    5313, 5318, 5323, 5328, 0, 5333, 5338, 5343, 5348, 5353, 5358, 5363, 
-    5368, 5376, 5384, 5392, 5400, 5408, 5416, 5427, 5432, 5437, 5442, 5447, 
-    5452, 5457, 5462, 5467, 5472, 5477, 5482, 5487, 5492, 5497, 5502, 5507, 
-    5512, 5518, 5523, 5528, 5533, 5538, 5543, 5548, 5553, 5561, 5569, 5577, 
-    5585, 5593, 5598, 5602, 5606, 5613, 5623, 5633, 5637, 5641, 5645, 5651, 
-    5658, 5662, 5667, 5671, 5676, 5680, 5685, 5689, 5694, 5699, 5704, 5709, 
-    5714, 5719, 5724, 5729, 5734, 5739, 5744, 5749, 5754, 5759, 5764, 5768, 
-    5772, 5778, 5782, 5787, 5793, 5800, 5805, 5810, 5817, 5822, 5827, 5833, 
-    5841, 5850, 5860, 5868, 5873, 5878, 5883, 5890, 5895, 5901, 5906, 5911, 
-    5916, 5921, 5926, 5931, 5939, 5945, 5950, 5954, 5959, 5964, 5969, 5974, 
-    5979, 5984, 5989, 5993, 5999, 6003, 6008, 6013, 6018, 6022, 6027, 6032, 
-    6037, 6042, 6046, 6051, 6055, 6060, 6065, 6070, 6075, 6081, 6086, 6092, 
-    6096, 6101, 6105, 6109, 6114, 6119, 6124, 6129, 6134, 6139, 6144, 6148, 
-    6154, 6158, 6163, 6168, 6173, 6177, 6182, 6187, 6192, 6197, 6201, 6206, 
-    6210, 6215, 6220, 6225, 6230, 6236, 6241, 6247, 6251, 6256, 6260, 6268, 
-    6273, 6278, 6283, 6290, 6295, 6301, 6306, 6311, 6316, 6321, 6326, 6331, 
-    6339, 6345, 6350, 6355, 6360, 6365, 6370, 6376, 6382, 6389, 6396, 6405, 
-    6414, 6421, 6428, 6437, 6446, 6451, 6456, 6461, 6466, 6471, 6476, 6481, 
-    6486, 6497, 6508, 6513, 6518, 6525, 6532, 6540, 6548, 6553, 6558, 6563, 
-    6568, 6572, 6576, 6580, 6585, 6590, 6594, 6601, 6606, 6616, 6626, 6632, 
-    6638, 6646, 6654, 6662, 6670, 6677, 6684, 6693, 6702, 6710, 6718, 6726, 
-    6734, 6741, 6748, 6755, 6762, 6768, 6774, 6780, 6786, 6794, 6802, 6809, 
-    6816, 6825, 6834, 6840, 6846, 6854, 6862, 6870, 6878, 6884, 6890, 6898, 
-    6906, 6914, 6922, 6929, 6936, 6944, 6952, 6960, 6968, 6973, 6978, 6985, 
-    6992, 7002, 7012, 7016, 7024, 7032, 7038, 7044, 7052, 7060, 7067, 7074, 
-    7082, 7090, 7097, 7104, 7112, 7120, 7125, 7132, 7139, 7146, 7153, 7159, 
-    7165, 7173, 7181, 7186, 7191, 7199, 7207, 7215, 7223, 7231, 7239, 7246, 
-    7253, 7261, 7269, 7277, 7285, 7292, 7299, 7305, 7311, 7320, 7329, 7336, 
-    7343, 7350, 7357, 7364, 7371, 7378, 7385, 7393, 7401, 7409, 7417, 7425, 
-    7433, 7442, 7451, 7458, 7465, 7472, 7479, 7486, 7493, 7500, 7507, 7514, 
-    7521, 7528, 7535, 7542, 7549, 7556, 7563, 7570, 7577, 7584, 7591, 7597, 
-    7603, 7610, 7617, 7622, 7627, 7632, 7637, 7642, 7647, 7652, 7657, 7662, 
-    7667, 7673, 7679, 7688, 7697, 7706, 7715, 7723, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 7731, 7736, 7741, 7746, 7751, 7756, 7761, 7766, 7771, 7775, 
-    7780, 7785, 7790, 7795, 7800, 7805, 7810, 7815, 7820, 7825, 7830, 7835, 
-    7840, 7845, 7850, 7855, 7860, 7865, 7869, 7874, 7879, 7884, 7889, 7894, 
-    7899, 7904, 7909, 7914, 0, 0, 7919, 7926, 7929, 7933, 7937, 7940, 7944, 
-    0, 7948, 7953, 7958, 7963, 7968, 7973, 7978, 7983, 7988, 7992, 7997, 
-    8002, 8007, 8012, 8017, 8022, 8027, 8032, 8037, 8042, 8047, 8052, 8057, 
-    8062, 8067, 8072, 8077, 8082, 8086, 8091, 8096, 8101, 8106, 8111, 8116, 
-    8121, 8126, 8131, 8136, 0, 8143, 8148, 0, 0, 0, 0, 0, 0, 8151, 8156, 
-    8161, 8166, 8173, 8180, 8185, 8190, 8195, 8200, 8205, 8210, 8215, 8222, 
-    8227, 8234, 8241, 8246, 8253, 8258, 8263, 8268, 8275, 8280, 8285, 8292, 
-    8301, 8306, 8311, 8316, 8321, 8327, 8332, 8339, 8346, 8353, 8358, 8363, 
-    8368, 8373, 8378, 8383, 8393, 8398, 8406, 8411, 8416, 8421, 8426, 8433, 
-    8440, 8447, 8453, 8459, 8466, 0, 0, 0, 0, 0, 0, 0, 0, 8473, 8477, 8481, 
-    8485, 8489, 8493, 8497, 8501, 8505, 8509, 8513, 8518, 8522, 8526, 8531, 
-    8535, 8540, 8544, 8548, 8552, 8557, 8561, 8566, 8570, 8574, 8578, 8582, 
-    0, 0, 0, 0, 0, 8586, 8593, 8601, 8608, 8613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 8618, 8621, 8625, 8630, 0, 0, 8634, 8640, 8646, 8649, 8656, 8665, 
-    8668, 8671, 8676, 8682, 8686, 8694, 8700, 8706, 8714, 8718, 8723, 8734, 
-    8739, 8743, 8747, 8751, 0, 0, 8754, 8761, 0, 8765, 8769, 8776, 8782, 
-    8789, 8795, 8801, 8805, 8809, 8815, 8819, 8823, 8827, 8831, 8835, 8839, 
-    8843, 8847, 8851, 8855, 8859, 8863, 8867, 8871, 8875, 8879, 8883, 8891, 
-    8899, 8909, 8918, 8927, 8930, 8934, 8938, 8942, 8946, 8950, 8954, 8958, 
-    8962, 8967, 8971, 8974, 8977, 8980, 8983, 8986, 8989, 8992, 8995, 8999, 
-    9002, 9005, 9010, 9015, 9021, 9024, 9031, 9040, 9045, 9049, 0, 9056, 
-    9061, 9065, 9069, 9073, 9077, 9081, 9085, 9089, 9093, 9097, 9101, 9106, 
-    9111, 9118, 9124, 9130, 9136, 9141, 9149, 9157, 9162, 9168, 9174, 9180, 
-    9186, 9190, 9194, 9198, 9205, 9215, 9219, 9223, 9227, 9233, 9241, 9245, 
-    9249, 9256, 9260, 9264, 9268, 9275, 9282, 9294, 9298, 9302, 9306, 9316, 
-    9325, 9329, 9337, 9344, 9351, 9360, 9371, 9379, 9383, 9392, 9403, 9411, 
-    9424, 9432, 9440, 9448, 9456, 9462, 9471, 9478, 9482, 9490, 9494, 9501, 
-    9509, 9513, 9519, 9526, 9533, 9537, 9545, 9549, 9556, 9560, 9568, 9572, 
-    9580, 9588, 9595, 9603, 9611, 9618, 9624, 9628, 9635, 9643, 9649, 9656, 
-    9663, 9669, 9678, 9686, 9693, 9699, 9703, 9706, 9710, 9716, 9724, 9728, 
-    9734, 9740, 9747, 9754, 9757, 9764, 9769, 9777, 9782, 9786, 9799, 9812, 
-    9818, 9825, 9830, 9836, 9841, 9847, 9857, 9864, 9873, 9883, 9889, 9894, 
-    9899, 9903, 9907, 9912, 9917, 9923, 9931, 9939, 9950, 9955, 9964, 9973, 
-    9980, 9986, 9992, 9998, 10004, 10010, 10016, 10022, 10028, 10034, 10041, 
-    10048, 10055, 10061, 10069, 10078, 10084, 10091, 10098, 10103, 10108, 
-    10112, 10119, 10126, 10135, 10144, 10147, 10152, 10157, 0, 10162, 10166, 
-    10170, 10176, 10180, 10184, 10190, 10194, 10202, 10206, 10210, 10214, 
-    10218, 10222, 10228, 10232, 10238, 10242, 10246, 10250, 10254, 10258, 
-    10263, 10266, 10270, 10275, 10279, 10283, 10287, 10291, 10295, 10301, 
-    10307, 10313, 10317, 10321, 10326, 10330, 10334, 10339, 10343, 10347, 
-    10354, 10361, 10365, 10369, 10374, 10378, 10382, 10385, 10390, 10393, 
-    10396, 10401, 10406, 10410, 10414, 10420, 10426, 10429, 0, 0, 10432, 
-    10438, 10444, 10450, 10460, 10472, 10484, 10501, 10513, 10524, 10532, 
-    10539, 10550, 10565, 10576, 10582, 10591, 10599, 10611, 10621, 10629, 
-    10641, 10648, 10656, 10668, 10674, 10680, 10688, 10696, 10704, 10710, 
-    10720, 10727, 10737, 10747, 10760, 10774, 10788, 10798, 10809, 10820, 
-    10833, 10846, 10860, 10872, 10884, 10897, 10910, 10922, 10935, 10944, 
-    10952, 10957, 10962, 10967, 10972, 10977, 10982, 10987, 10992, 10997, 
-    11002, 11007, 11012, 11017, 11022, 11027, 11032, 11037, 11042, 11047, 
-    11052, 11057, 11062, 11067, 11072, 11077, 11082, 11087, 11092, 11097, 
-    11102, 11107, 11112, 11116, 11121, 11126, 11131, 11136, 11141, 11145, 
-    11149, 11153, 11157, 11161, 11165, 11169, 11173, 11177, 11181, 11185, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11190, 11195, 11199, 11203, 11207, 
-    11211, 11215, 11219, 11223, 11227, 11231, 11235, 11240, 11244, 11248, 
-    11252, 11257, 11261, 11266, 11270, 11275, 11279, 11284, 11289, 11294, 
-    11299, 11303, 11308, 11313, 11318, 11323, 11327, 11332, 11339, 11343, 
-    11348, 11352, 11356, 11361, 11365, 11372, 11379, 11386, 11392, 11400, 
-    11408, 11417, 11425, 11432, 11439, 11447, 11453, 11459, 11465, 11471, 
-    11478, 11483, 11487, 11492, 0, 0, 0, 0, 0, 11496, 11500, 11504, 11508, 
-    11512, 11516, 11520, 11524, 11528, 11532, 11536, 11540, 11544, 11548, 
-    11552, 11556, 11560, 11564, 11568, 11572, 11576, 11580, 11584, 11588, 
-    11592, 11596, 11600, 11607, 11613, 11618, 11622, 11629, 11635, 11640, 
-    11646, 11651, 11655, 11661, 11667, 11672, 11676, 11680, 11685, 11689, 
-    11693, 11698, 0, 0, 11702, 11707, 11712, 11717, 11722, 11727, 11732, 
-    11736, 11743, 11748, 11753, 11758, 11763, 11768, 11775, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11780, 11786, 
-    11790, 11794, 11798, 11803, 11806, 11810, 11813, 11817, 11820, 11824, 
-    11828, 11832, 11837, 11842, 11845, 11849, 11854, 11859, 11862, 11866, 
-    11869, 11873, 11877, 11881, 11885, 11889, 11893, 11897, 11901, 11905, 
-    11909, 11913, 11917, 11921, 11925, 11929, 11933, 11937, 11941, 11944, 
-    11948, 11951, 11955, 11959, 11963, 11966, 11969, 11972, 11976, 11980, 
-    11984, 11988, 11992, 11996, 12000, 12004, 0, 0, 12007, 12011, 12015, 
-    12020, 12024, 12029, 12033, 12038, 12043, 12049, 12055, 12061, 12065, 
-    12070, 12076, 12082, 12086, 12091, 12095, 0, 12101, 12104, 12110, 12116, 
-    12121, 12126, 0, 0, 12133, 12137, 12141, 12145, 12149, 12153, 12157, 
-    12161, 12165, 12170, 12175, 12180, 12186, 12189, 12193, 12197, 12200, 
-    12203, 12206, 12209, 12212, 12215, 12218, 12221, 12224, 12228, 12235, 0, 
-    0, 0, 0, 0, 0, 12240, 12244, 12248, 12252, 12256, 12262, 12266, 0, 12270, 
-    12274, 12278, 0, 12282, 12285, 12289, 12292, 12296, 12299, 12303, 12307, 
-    0, 0, 12311, 12314, 0, 0, 12318, 12321, 12325, 12328, 12332, 12336, 
-    12340, 12344, 12348, 12352, 12356, 12360, 12364, 12368, 12372, 12376, 
-    12380, 12384, 12388, 12392, 12396, 12400, 0, 12403, 12406, 12410, 12414, 
-    12418, 12421, 12424, 0, 12427, 0, 0, 0, 12431, 12435, 12439, 12443, 0, 0, 
-    12446, 12450, 12454, 12459, 12463, 12468, 12472, 12477, 12482, 0, 0, 
-    12488, 12492, 0, 0, 12497, 12501, 12506, 12510, 0, 0, 0, 0, 0, 0, 0, 0, 
-    12516, 0, 0, 0, 0, 12522, 12526, 0, 12530, 12534, 12539, 12544, 12549, 0, 
-    0, 12555, 12559, 12562, 12565, 12568, 12571, 12574, 12577, 12580, 12583, 
-    12586, 12595, 12604, 12608, 12612, 12618, 12624, 12630, 12636, 12650, 
-    12657, 12660, 0, 0, 0, 0, 0, 12664, 12670, 12674, 0, 12678, 12681, 12685, 
-    12688, 12692, 12695, 0, 0, 0, 0, 12699, 12703, 0, 0, 12707, 12711, 12715, 
-    12718, 12722, 12726, 12730, 12734, 12738, 12742, 12746, 12750, 12754, 
-    12758, 12762, 12766, 12770, 12774, 12778, 12782, 12786, 12790, 0, 12793, 
-    12796, 12800, 12804, 12808, 12811, 12814, 0, 12817, 12821, 0, 12825, 
-    12829, 0, 12833, 12837, 0, 0, 12840, 0, 12844, 12849, 12853, 12858, 
-    12862, 0, 0, 0, 0, 12867, 12872, 0, 0, 12877, 12882, 12887, 0, 0, 0, 
-    12891, 0, 0, 0, 0, 0, 0, 0, 12895, 12899, 12903, 12907, 0, 12911, 0, 0, 
-    0, 0, 0, 0, 0, 12915, 12919, 12922, 12925, 12928, 12931, 12934, 12937, 
-    12940, 12943, 12946, 12949, 12952, 12955, 12958, 12963, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 12967, 12971, 12975, 0, 12979, 12982, 12986, 12989, 12993, 
-    12996, 13000, 13004, 13008, 0, 13013, 13016, 13020, 0, 13025, 13028, 
-    13032, 13035, 13039, 13043, 13047, 13051, 13055, 13059, 13063, 13067, 
-    13071, 13075, 13079, 13083, 13087, 13091, 13095, 13099, 13103, 13107, 0, 
-    13110, 13113, 13117, 13121, 13125, 13128, 13131, 0, 13134, 13138, 0, 
-    13142, 13146, 13150, 13154, 13158, 0, 0, 13161, 13165, 13169, 13174, 
-    13178, 13183, 13187, 13192, 13197, 13203, 0, 13209, 13213, 13218, 0, 
-    13224, 13228, 13233, 0, 0, 13237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 13240, 13245, 13250, 13255, 0, 0, 13261, 13265, 13268, 13271, 
-    13274, 13277, 13280, 13283, 13286, 13289, 0, 13292, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 13296, 13300, 13304, 0, 13308, 13311, 13315, 
-    13318, 13322, 13325, 13329, 13333, 0, 0, 13337, 13340, 0, 0, 13344, 
-    13347, 13351, 13354, 13358, 13362, 13366, 13370, 13374, 13378, 13382, 
-    13386, 13390, 13394, 13398, 13402, 13406, 13410, 13414, 13418, 13422, 
-    13426, 0, 13429, 13432, 13436, 13440, 13444, 13447, 13450, 0, 13453, 
-    13457, 0, 13461, 13465, 13469, 13473, 13477, 0, 0, 13480, 13484, 13488, 
-    13493, 13497, 13502, 13506, 13511, 13516, 0, 0, 13522, 13526, 0, 0, 
-    13531, 13535, 13540, 0, 0, 0, 0, 0, 0, 0, 0, 13544, 13550, 0, 0, 0, 0, 
-    13556, 13560, 0, 13564, 13568, 13573, 13578, 13583, 0, 0, 13589, 13593, 
-    13596, 13599, 13602, 13605, 13608, 13611, 13614, 13617, 13620, 13623, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13627, 13631, 0, 13635, 
-    13638, 13642, 13645, 13649, 13652, 0, 0, 0, 13656, 13659, 13663, 0, 
-    13667, 13670, 13674, 13678, 0, 0, 0, 13681, 13685, 0, 13689, 0, 13693, 
-    13697, 0, 0, 0, 13701, 13705, 0, 0, 0, 13709, 13712, 13716, 0, 0, 0, 
-    13719, 13722, 13725, 13728, 13732, 13736, 13740, 13744, 13748, 13752, 
-    13756, 13760, 0, 0, 0, 0, 13763, 13768, 13772, 13777, 13781, 0, 0, 0, 
-    13786, 13790, 13795, 0, 13800, 13804, 13809, 13814, 0, 0, 13818, 0, 0, 0, 
-    0, 0, 0, 13821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13827, 13831, 
-    13834, 13837, 13840, 13843, 13846, 13849, 13852, 13855, 13858, 13862, 
-    13867, 13872, 13876, 13880, 13884, 13888, 13892, 13897, 13901, 0, 0, 0, 
-    0, 0, 0, 13904, 13908, 13912, 0, 13916, 13919, 13923, 13926, 13930, 
-    13933, 13937, 13941, 0, 13945, 13948, 13952, 0, 13956, 13959, 13963, 
-    13967, 13970, 13974, 13978, 13982, 13986, 13990, 13994, 13998, 14002, 
-    14006, 14010, 14014, 14018, 14022, 14026, 14030, 14034, 14038, 14042, 0, 
-    14045, 14048, 14052, 14056, 14060, 14063, 14066, 14069, 14073, 14077, 0, 
-    14081, 14085, 14089, 14093, 14097, 0, 0, 0, 14100, 14104, 14109, 14113, 
-    14118, 14122, 14127, 14132, 0, 14138, 14142, 14147, 0, 14152, 14156, 
-    14161, 14166, 0, 0, 0, 0, 0, 0, 0, 14170, 14174, 0, 14180, 14184, 0, 0, 
-    0, 0, 0, 0, 14188, 14193, 14198, 14203, 0, 0, 14209, 14213, 14216, 14219, 
-    14222, 14225, 14228, 14231, 14234, 14237, 0, 0, 0, 0, 0, 0, 0, 0, 14240, 
-    14253, 14265, 14277, 14289, 14301, 14313, 14325, 0, 0, 14329, 14333, 0, 
-    14337, 14340, 14344, 14347, 14351, 14354, 14358, 14362, 0, 14366, 14369, 
-    14373, 0, 14377, 14380, 14384, 14388, 14391, 14395, 14399, 14403, 14407, 
-    14411, 14415, 14419, 14423, 14427, 14431, 14435, 14439, 14443, 14447, 
-    14451, 14455, 14459, 14463, 0, 14466, 14469, 14473, 14477, 14481, 14484, 
-    14487, 14490, 14494, 14498, 0, 14502, 14506, 14510, 14514, 14518, 0, 0, 
-    14521, 14525, 14529, 14534, 14538, 14543, 14547, 14552, 14557, 0, 14563, 
-    14567, 14572, 0, 14577, 14581, 14586, 14591, 0, 0, 0, 0, 0, 0, 0, 14595, 
-    14599, 0, 0, 0, 0, 0, 0, 0, 14605, 0, 14609, 14614, 14619, 14624, 0, 0, 
-    14630, 14634, 14637, 14640, 14643, 14646, 14649, 14652, 14655, 14658, 0, 
-    14661, 14665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14669, 14673, 
-    0, 14677, 14680, 14684, 14687, 14691, 14694, 14698, 14702, 0, 14706, 
-    14709, 14713, 0, 14717, 14720, 14724, 14728, 14731, 14735, 14739, 14743, 
-    14747, 14751, 14755, 14759, 14763, 14767, 14771, 14775, 14779, 14783, 
-    14787, 14791, 14795, 14799, 14803, 0, 14806, 14809, 14813, 14817, 14821, 
-    14824, 14827, 14830, 14834, 14838, 14842, 14846, 14850, 14854, 14858, 
-    14862, 0, 0, 0, 14865, 14869, 14874, 14878, 14883, 14887, 14892, 14897, 
-    0, 14903, 14907, 14912, 0, 14917, 14921, 14926, 14931, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 14935, 0, 0, 0, 0, 0, 0, 0, 0, 14941, 14946, 14951, 14956, 0, 0, 
-    14962, 14966, 14969, 14972, 14975, 14978, 14981, 14984, 14987, 14990, 
-    14993, 14997, 15002, 15007, 15013, 15019, 0, 0, 0, 15025, 15029, 15035, 
-    15040, 15046, 15051, 15057, 0, 0, 15063, 15067, 0, 15071, 15075, 15079, 
-    15083, 15087, 15091, 15095, 15099, 15103, 15107, 15111, 15115, 15119, 
-    15123, 15127, 15131, 15135, 15139, 0, 0, 0, 15143, 15149, 15155, 15161, 
-    15167, 15173, 15179, 15185, 15191, 15197, 15203, 15209, 15217, 15223, 
-    15229, 15235, 15241, 15247, 15253, 15259, 15265, 15271, 15277, 15283, 0, 
-    15289, 15295, 15301, 15307, 15313, 15319, 15323, 15329, 15333, 0, 15337, 
-    0, 0, 15343, 15347, 15353, 15359, 15365, 15369, 15375, 0, 0, 0, 15379, 0, 
-    0, 0, 0, 15383, 15388, 15395, 15402, 15409, 15416, 0, 15423, 0, 15430, 
-    15435, 15440, 15447, 15454, 15463, 15474, 15483, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15488, 15495, 15502, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 15507, 15513, 15519, 15525, 15531, 15537, 15543, 15549, 
-    15555, 15561, 15567, 15573, 15579, 15585, 15591, 15596, 15602, 15608, 
-    15614, 15620, 15626, 15631, 15637, 15643, 15649, 15655, 15661, 15667, 
-    15673, 15679, 15685, 15691, 15697, 15702, 15708, 15714, 15718, 15724, 
-    15728, 15734, 15740, 15746, 15752, 15758, 15764, 15769, 15775, 15779, 
-    15784, 15790, 15796, 15802, 15807, 15813, 15819, 15825, 15830, 15836, 0, 
-    0, 0, 0, 15840, 15846, 15851, 15857, 15862, 15870, 15878, 15882, 15886, 
-    15890, 15896, 15902, 15908, 15914, 15918, 15922, 15926, 15930, 15934, 
-    15937, 15940, 15943, 15946, 15949, 15952, 15955, 15958, 15961, 15965, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15969, 15973, 0, 15979, 0, 0, 15985, 
-    15989, 0, 15993, 0, 0, 15999, 0, 0, 0, 0, 0, 0, 16003, 16007, 16010, 
-    16016, 0, 16022, 16026, 16030, 16034, 16040, 16046, 16052, 0, 16058, 
-    16062, 16066, 0, 16072, 0, 16078, 0, 0, 16082, 16088, 0, 16094, 16097, 
-    16103, 16106, 16110, 16117, 16122, 16127, 16131, 16136, 16141, 16146, 
-    16150, 0, 16155, 16162, 16168, 0, 0, 16174, 16178, 16183, 16187, 16192, 
-    0, 16197, 0, 16202, 16208, 16214, 16220, 16226, 16230, 0, 0, 16233, 
-    16237, 16240, 16243, 16246, 16249, 16252, 16255, 16258, 16261, 0, 0, 
-    16264, 16269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16274, 16278, 16289, 16304, 
-    16319, 16329, 16340, 16353, 16364, 16370, 16378, 16388, 16394, 16402, 
-    16406, 16412, 16418, 16426, 16436, 16444, 16457, 16463, 16471, 16479, 
-    16491, 16498, 16506, 16514, 16522, 16530, 16538, 16546, 16556, 16560, 
-    16563, 16566, 16569, 16572, 16575, 16578, 16581, 16584, 16587, 16591, 
-    16595, 16599, 16603, 16607, 16611, 16615, 16619, 16623, 16628, 16634, 
-    16644, 16658, 16668, 16674, 16680, 16688, 16696, 16704, 16712, 16718, 
-    16724, 16727, 16731, 16735, 16739, 16743, 16747, 16751, 0, 16755, 16759, 
-    16763, 16767, 16771, 16775, 16779, 16783, 16787, 16791, 16795, 16798, 
-    16801, 16805, 16809, 16813, 16816, 16820, 16824, 16828, 16832, 16836, 
-    16840, 16844, 16848, 16851, 16854, 16858, 16862, 16866, 16870, 16873, 
-    16876, 16880, 16885, 16889, 0, 0, 0, 0, 16893, 16898, 16902, 16907, 
-    16911, 16916, 16921, 16927, 16932, 16938, 16942, 16947, 16951, 16956, 
-    16966, 16972, 16977, 16983, 16993, 16999, 17003, 17007, 17013, 17019, 
-    17027, 17033, 17041, 0, 0, 0, 0, 17049, 17054, 17060, 17066, 17072, 
-    17078, 17084, 17090, 0, 17096, 17102, 17108, 17114, 17120, 17126, 17132, 
-    17138, 17144, 17150, 17156, 17161, 17166, 17172, 17178, 17184, 17189, 
-    17195, 17201, 17207, 17213, 17219, 17225, 17231, 17237, 17242, 17247, 
-    17253, 17259, 17265, 17271, 17276, 17281, 17287, 17295, 17302, 0, 17309, 
-    17316, 17329, 17336, 17343, 17351, 17359, 17365, 17371, 17377, 17387, 
-    17392, 17398, 17408, 17418, 0, 17428, 17438, 17446, 17458, 17470, 17476, 
-    17490, 17505, 17510, 17515, 17523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 17531, 17534, 17538, 17542, 17546, 17550, 17554, 17558, 17562, 
-    17566, 17570, 17574, 17578, 17582, 17586, 17590, 17594, 17598, 17602, 
-    17606, 17610, 17613, 17616, 17620, 17624, 17628, 17631, 17634, 17637, 
-    17641, 17645, 17649, 17652, 17656, 17659, 17664, 17667, 17671, 17674, 
-    17678, 17681, 17686, 17689, 17693, 17700, 17705, 17709, 17714, 17718, 
-    17723, 17727, 17732, 17739, 17745, 17750, 17754, 17758, 17762, 17766, 
-    17770, 17776, 17782, 17789, 17795, 17801, 17805, 17808, 17811, 17814, 
-    17817, 17820, 17823, 17826, 17829, 17832, 17838, 17842, 17846, 17850, 
-    17854, 17858, 17862, 17866, 17870, 17875, 17879, 17884, 17889, 17895, 
-    17900, 17906, 17912, 17918, 17924, 17930, 17938, 17946, 17955, 17963, 
-    17972, 17981, 17992, 18002, 18012, 18023, 18034, 18044, 18054, 18064, 
-    18074, 18084, 18094, 18104, 18114, 18122, 18129, 18135, 18142, 18147, 
-    18153, 18159, 18165, 18171, 18177, 18183, 18188, 18194, 18200, 18206, 
-    18212, 18217, 18226, 18233, 18239, 18246, 18254, 18260, 18266, 18272, 
-    18278, 18286, 18294, 18304, 18312, 18320, 18326, 18331, 18336, 18341, 
-    18346, 18351, 18356, 18361, 18366, 18371, 18377, 18383, 18389, 18396, 
-    18401, 18407, 18412, 18417, 18422, 18427, 18432, 18437, 18442, 18447, 
-    18452, 18457, 18462, 18467, 18472, 18477, 18482, 18487, 18492, 18497, 
-    18502, 18507, 18512, 18517, 18522, 18527, 18532, 18537, 18542, 18547, 
-    18552, 18557, 18562, 18567, 18572, 18577, 18582, 18587, 18592, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 18597, 18601, 18605, 18609, 18613, 18617, 18621, 
-    18625, 18629, 18633, 18637, 18641, 18645, 18649, 18653, 18657, 18661, 
-    18665, 18669, 18673, 18677, 18681, 18685, 18689, 18693, 18697, 18701, 
-    18705, 18709, 18713, 18717, 18721, 18725, 18729, 18733, 18737, 18741, 
-    18745, 18749, 18753, 18757, 18761, 18766, 18770, 18775, 0, 0, 0, 18780, 
-    18784, 18788, 18792, 18796, 18800, 18804, 18808, 18812, 18816, 18820, 
-    18824, 18828, 18832, 18836, 18840, 18844, 18848, 18852, 18856, 18860, 
-    18864, 18868, 18872, 18876, 18880, 18884, 18888, 18892, 18896, 18900, 
-    18904, 18908, 18912, 18916, 18920, 18924, 18928, 18932, 18936, 18940, 
-    18944, 18948, 18952, 18956, 18960, 18964, 18968, 18972, 18976, 18980, 
-    18984, 18988, 18992, 18996, 19000, 19004, 19008, 19012, 19016, 19020, 
-    19024, 19028, 19032, 19036, 19040, 19044, 19048, 19052, 19056, 19060, 
-    19064, 19068, 19072, 19076, 19080, 19084, 19088, 19092, 19096, 19100, 
-    19104, 19108, 19112, 19116, 19120, 19124, 19128, 19132, 19136, 19140, 
-    19144, 19148, 19152, 19156, 19160, 19164, 19168, 19171, 19175, 19178, 
-    19182, 19186, 19189, 19193, 19197, 19200, 19204, 19208, 19212, 19216, 
-    19219, 19223, 19227, 19231, 19235, 19239, 19243, 19246, 19250, 19254, 
-    19258, 19262, 19266, 19270, 19274, 19278, 19282, 19286, 19290, 19294, 
-    19298, 19302, 19306, 19310, 19314, 19318, 19322, 19326, 19330, 19334, 
-    19338, 19342, 19346, 19350, 19354, 19358, 19362, 19366, 19370, 19374, 
-    19378, 19382, 19386, 19390, 19394, 19398, 19402, 19406, 19410, 19414, 
-    19418, 19422, 19426, 19430, 19434, 19438, 19442, 19446, 19450, 19454, 
-    19458, 19462, 19466, 19470, 19474, 19478, 19482, 19486, 19490, 19494, 
-    19498, 19502, 19506, 19510, 19514, 19518, 19522, 19526, 19530, 19534, 
-    19538, 19542, 19546, 19550, 19554, 19558, 19562, 19566, 19570, 19574, 
-    19578, 19582, 19586, 19590, 19594, 19598, 19602, 19606, 19610, 19614, 
-    19618, 19622, 19626, 19630, 19634, 19638, 19642, 19646, 19650, 19654, 
-    19658, 19662, 19666, 19670, 19674, 19678, 19682, 19686, 19690, 19694, 
-    19698, 19702, 19706, 19710, 19714, 19718, 19722, 19726, 19730, 19734, 
-    19738, 19742, 19746, 19750, 19754, 19758, 19762, 19766, 19770, 19774, 
-    19778, 19782, 19786, 19790, 19794, 19798, 19801, 19805, 19809, 19813, 
-    19817, 19821, 19825, 19829, 19833, 19837, 19841, 19845, 19849, 19853, 
-    19857, 19861, 19865, 19869, 19873, 19877, 19881, 19885, 19889, 19893, 
-    19896, 19900, 19904, 19908, 19912, 19916, 19920, 19924, 19928, 19932, 
-    19936, 19940, 19944, 19948, 19952, 19956, 19959, 19963, 19967, 19971, 
-    19975, 19979, 19983, 19987, 19991, 19995, 19999, 20003, 20007, 20011, 
-    20015, 20019, 20023, 20027, 20031, 20035, 20039, 20043, 20047, 20051, 
-    20055, 20059, 20063, 20067, 20071, 20075, 20079, 20083, 0, 20087, 20091, 
-    20095, 20099, 0, 0, 20103, 20107, 20111, 20115, 20119, 20123, 20127, 0, 
-    20131, 0, 20135, 20139, 20143, 20147, 0, 0, 20151, 20155, 20159, 20163, 
-    20167, 20171, 20175, 20179, 20183, 20187, 20191, 20195, 20199, 20203, 
-    20207, 20211, 20215, 20219, 20223, 20227, 20231, 20235, 20239, 20242, 
-    20246, 20250, 20254, 20258, 20262, 20266, 20270, 20274, 20278, 20282, 
-    20286, 20290, 20294, 20298, 20302, 20306, 20310, 0, 20314, 20318, 20322, 
-    20326, 0, 0, 20330, 20333, 20337, 20341, 20345, 20349, 20353, 20357, 
-    20361, 20365, 20369, 20373, 20377, 20381, 20385, 20389, 20393, 20398, 
-    20403, 20408, 20414, 20420, 20425, 20430, 20436, 20439, 20443, 20447, 
-    20451, 20455, 20459, 20463, 20467, 0, 20471, 20475, 20479, 20483, 0, 0, 
-    20487, 20491, 20495, 20499, 20503, 20507, 20511, 0, 20515, 0, 20519, 
-    20523, 20527, 20531, 0, 0, 20535, 20539, 20543, 20547, 20551, 20555, 
-    20559, 20563, 20567, 20572, 20577, 20582, 20588, 20594, 20599, 0, 20604, 
-    20608, 20612, 20616, 20620, 20624, 20628, 20632, 20636, 20640, 20644, 
-    20648, 20652, 20656, 20660, 20664, 20668, 20671, 20675, 20679, 20683, 
-    20687, 20691, 20695, 20699, 20703, 20707, 20711, 20715, 20719, 20723, 
-    20727, 20731, 20735, 20739, 20743, 20747, 20751, 20755, 20759, 20763, 
-    20767, 20771, 20775, 20779, 20783, 20787, 20791, 20795, 20799, 20803, 
-    20807, 20811, 20815, 20819, 20823, 20827, 0, 20831, 20835, 20839, 20843, 
-    0, 0, 20847, 20851, 20855, 20859, 20863, 20867, 20871, 20875, 20879, 
-    20883, 20887, 20891, 20895, 20899, 20903, 20907, 20911, 20915, 20919, 
-    20923, 20927, 20931, 20935, 20939, 20943, 20947, 20951, 20955, 20959, 
-    20963, 20967, 20971, 20975, 20979, 20983, 20987, 20991, 20995, 20999, 
-    21003, 21007, 21011, 21015, 21019, 21023, 21027, 21031, 21035, 21039, 
-    21043, 21047, 21051, 21055, 21059, 21063, 21067, 21071, 21074, 21078, 
-    21082, 21086, 21090, 21094, 21098, 21102, 21106, 21110, 0, 0, 0, 0, 
-    21114, 21119, 21123, 21126, 21131, 21134, 21137, 21140, 21145, 21149, 
-    21154, 21157, 21160, 21163, 21166, 21169, 21172, 21175, 21178, 21181, 
-    21185, 21189, 21193, 21197, 21201, 21205, 21209, 21213, 21217, 21221, 0, 
-    0, 0, 21227, 21233, 21237, 21241, 21245, 21251, 21255, 21259, 21263, 
-    21269, 21273, 21277, 21281, 21287, 21291, 21295, 21299, 21305, 21311, 
-    21317, 21325, 21331, 21337, 21343, 21349, 21355, 0, 0, 0, 0, 0, 0, 21361, 
-    21364, 21367, 21370, 21373, 21376, 21380, 21384, 21387, 21391, 21395, 
-    21399, 21403, 21407, 21410, 21414, 21418, 21422, 21426, 21430, 21434, 
-    21438, 21442, 21446, 21450, 21454, 21457, 21461, 21465, 21469, 21473, 
-    21476, 21480, 21484, 21488, 21492, 21496, 21500, 21504, 21508, 21512, 
-    21516, 21520, 21524, 21528, 21532, 21535, 21539, 21543, 21547, 21551, 
-    21555, 21559, 21563, 21567, 21571, 21575, 21579, 21583, 21587, 21591, 
-    21595, 21599, 21603, 21607, 21611, 21615, 21619, 21623, 21627, 21631, 
-    21635, 21639, 21643, 21647, 21651, 21655, 21659, 21663, 21667, 21670, 
-    21674, 21678, 21682, 21686, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21690, 
-    21694, 21697, 21701, 21704, 21708, 21711, 21715, 21721, 21726, 21730, 
-    21733, 21737, 21741, 21746, 21750, 21755, 21759, 21764, 21768, 21773, 
-    21777, 21782, 21788, 21792, 21797, 21801, 21806, 21812, 21816, 21822, 
-    21828, 21832, 21837, 21845, 21853, 21860, 21865, 21870, 21879, 21886, 
-    21893, 21898, 21904, 21908, 21912, 21916, 21920, 21924, 21928, 21932, 
-    21936, 21940, 21944, 21950, 21955, 21960, 21963, 21967, 21971, 21976, 
-    21980, 21985, 21989, 21994, 21998, 22003, 22007, 22012, 22016, 22021, 
-    22025, 22030, 22036, 22040, 22045, 22050, 22054, 22058, 22062, 22066, 
-    22069, 22073, 22079, 22084, 22089, 22093, 22097, 22101, 22106, 22110, 
-    22115, 22119, 22124, 22127, 22131, 22135, 22140, 22144, 22149, 22153, 
-    22158, 22164, 22168, 22172, 22176, 22180, 22184, 22188, 22192, 22196, 
-    22200, 22204, 22208, 22214, 22217, 22221, 22225, 22230, 22234, 22239, 
-    22243, 22248, 22252, 22257, 22261, 22266, 22270, 22275, 22279, 22284, 
-    22290, 22294, 22298, 22304, 22310, 22316, 22322, 22326, 22330, 22334, 
-    22338, 22342, 22346, 22352, 22356, 22360, 22364, 22369, 22373, 22378, 
-    22382, 22387, 22391, 22396, 22400, 22405, 22409, 22414, 22418, 22423, 
-    22429, 22433, 22439, 22443, 22447, 22451, 22455, 22459, 22463, 22469, 
-    22472, 22476, 22480, 22485, 22489, 22494, 22498, 22503, 22507, 22512, 
-    22516, 22521, 22525, 22530, 22534, 22539, 22545, 22548, 22552, 22556, 
-    22561, 22566, 22570, 22574, 22578, 22582, 22586, 22590, 22596, 22599, 
-    22603, 22607, 22612, 22616, 22621, 22625, 22630, 22636, 22639, 22644, 
-    22648, 22652, 22656, 22660, 22664, 22668, 22672, 22678, 22682, 22686, 
-    22690, 22695, 22699, 22704, 22708, 22713, 22717, 22722, 22726, 22731, 
-    22735, 22740, 22744, 22749, 22752, 22756, 22760, 22764, 22768, 22772, 
-    22776, 22780, 22784, 22790, 22794, 22798, 22802, 22807, 22811, 22816, 
-    22820, 22825, 22829, 22834, 22838, 22843, 22847, 22852, 22856, 22861, 
-    22867, 22870, 22875, 22879, 22884, 22890, 22896, 22902, 22908, 22914, 
-    22920, 22926, 22930, 22934, 22938, 22942, 22946, 22950, 22954, 22958, 
-    22963, 22967, 22972, 22976, 22981, 22985, 22990, 22994, 22999, 23003, 
-    23008, 23012, 23017, 23021, 23025, 23029, 23033, 23037, 23041, 23045, 
-    23051, 23054, 23058, 23062, 23067, 23071, 23076, 23080, 23085, 23089, 
-    23094, 23098, 23103, 23107, 23112, 23116, 23121, 23127, 23131, 23137, 
-    23142, 23148, 23152, 23158, 23163, 23167, 23171, 23175, 23179, 23183, 
-    23188, 23191, 23195, 23200, 23204, 23209, 23212, 23216, 23220, 23224, 
-    23228, 23232, 23236, 23240, 23244, 23248, 23252, 23256, 23261, 23265, 
-    23269, 23275, 23279, 23285, 23289, 23295, 23299, 23303, 23307, 23311, 
-    23315, 23320, 23324, 23328, 23332, 23336, 23340, 23344, 23348, 23352, 
-    23356, 23360, 23366, 23372, 23378, 23384, 23390, 23395, 23401, 23407, 
-    23413, 23417, 23421, 23425, 23429, 23433, 23437, 23441, 23445, 23449, 
-    23453, 23457, 23461, 23465, 23470, 23475, 23480, 23484, 23488, 23492, 
-    23496, 23500, 23504, 23508, 23512, 23516, 23520, 23526, 23532, 23538, 
-    23544, 23550, 23556, 23562, 23568, 23574, 23578, 23582, 23586, 23590, 
-    23594, 23598, 23602, 23608, 23614, 23620, 23626, 23632, 23638, 23644, 
-    23650, 23656, 23661, 23666, 23671, 23676, 23682, 23688, 23694, 23700, 
-    23706, 23712, 23718, 23723, 23729, 23735, 23741, 23746, 23752, 23758, 
-    23764, 23769, 23774, 23779, 23784, 23789, 23794, 23799, 23804, 23809, 
-    23814, 23819, 23824, 23828, 23833, 23838, 23843, 23848, 23853, 23858, 
-    23863, 23868, 23873, 23878, 23883, 23888, 23893, 23898, 23903, 23908, 
-    23913, 23918, 23923, 23928, 23933, 23938, 23943, 23948, 23953, 23958, 
-    23963, 23968, 23973, 23977, 23982, 23987, 23992, 23997, 24002, 24007, 
-    24012, 24017, 24022, 24027, 24032, 24037, 24042, 24047, 24052, 24057, 
-    24062, 24067, 24072, 24077, 24082, 24087, 24092, 24097, 24102, 24106, 
-    24111, 24116, 24121, 24126, 24131, 24135, 24140, 24145, 24150, 24155, 
-    24160, 24164, 24169, 24175, 24180, 24185, 24190, 24195, 24201, 24206, 
-    24211, 24216, 24221, 24226, 24231, 24236, 24241, 24246, 24251, 24256, 
-    24261, 24266, 24271, 24276, 24281, 24286, 24291, 24296, 24301, 24306, 
-    24311, 24316, 24321, 24326, 24331, 24336, 24341, 24346, 24351, 24356, 
-    24361, 24366, 24371, 24376, 24381, 24386, 24391, 24396, 24401, 24406, 
-    24411, 24416, 24421, 24427, 24432, 24437, 24442, 24447, 24452, 24457, 
-    24462, 24467, 24472, 24477, 24482, 24487, 24492, 24497, 24502, 24507, 
-    24512, 24517, 24522, 24527, 24532, 24537, 24542, 24547, 24552, 24557, 
-    24562, 24567, 24572, 24577, 24582, 24587, 24592, 24597, 24602, 24607, 
-    24612, 24617, 24623, 24627, 24631, 24635, 24639, 24643, 24647, 24651, 
-    24655, 24661, 24667, 24673, 24679, 24685, 24691, 24697, 24704, 24710, 
-    24715, 24720, 24725, 24730, 24735, 24740, 24745, 24750, 24755, 24760, 
-    24765, 24770, 24775, 24780, 24785, 24790, 24795, 24800, 24805, 24810, 
-    24815, 24820, 24825, 24830, 24835, 24840, 24845, 24850, 0, 0, 0, 24856, 
-    24866, 24870, 24877, 24881, 24885, 24889, 24897, 24901, 24906, 24911, 
-    24916, 24920, 24925, 24930, 24933, 24937, 24941, 24950, 24954, 24958, 
-    24964, 24968, 24972, 24980, 24984, 24992, 24998, 25004, 25010, 25016, 
-    25025, 25030, 25034, 25043, 25046, 25052, 25056, 25062, 25067, 25073, 
-    25081, 25087, 25092, 25099, 25104, 25108, 25112, 25122, 25128, 25132, 
-    25142, 25148, 25152, 25156, 25163, 25170, 25175, 25180, 25189, 25193, 
-    25197, 25201, 25209, 25216, 25220, 25224, 25228, 25232, 25236, 25240, 
-    25244, 25248, 25252, 25256, 25260, 25265, 25270, 25275, 25279, 25283, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25287, 25291, 25295, 25299, 
-    25303, 25308, 25313, 25318, 25323, 25327, 25331, 25336, 25340, 0, 25344, 
-    25349, 25354, 25359, 25363, 25368, 25373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 25378, 25382, 25386, 25390, 25394, 25399, 25404, 25409, 25414, 25418, 
-    25422, 25427, 25431, 25435, 25439, 25444, 25449, 25454, 25458, 25463, 
-    25468, 25473, 25479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25484, 25488, 25492, 
-    25496, 25500, 25505, 25510, 25515, 25520, 25524, 25528, 25533, 25537, 
-    25541, 25545, 25550, 25555, 25560, 25564, 25569, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 25574, 25578, 25582, 25586, 25590, 25595, 25600, 25605, 
-    25610, 25614, 25618, 25623, 25627, 0, 25631, 25636, 25641, 0, 25646, 
-    25651, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25656, 25659, 25663, 25667, 
-    25671, 25675, 25679, 25683, 25687, 25691, 25695, 25699, 25703, 25707, 
-    25711, 25715, 25719, 25723, 25726, 25730, 25734, 25738, 25742, 25746, 
-    25750, 25754, 25758, 25762, 25766, 25770, 25774, 25778, 25782, 25785, 
-    25789, 25793, 25799, 25805, 25811, 25817, 25823, 25829, 25835, 25841, 
-    25847, 25853, 25859, 25865, 25871, 25877, 25886, 25895, 25901, 25907, 
-    25913, 25918, 25922, 25927, 25932, 25937, 25941, 25946, 25951, 25956, 
-    25960, 25965, 25969, 25974, 25979, 25984, 25989, 25993, 25997, 26001, 
-    26005, 26009, 26013, 26017, 26021, 26025, 26029, 26035, 26039, 26043, 
-    26047, 26051, 26055, 26063, 26069, 26073, 26079, 26083, 26089, 26093, 0, 
-    0, 26097, 26101, 26104, 26107, 26110, 26113, 26116, 26119, 26122, 26125, 
-    0, 0, 0, 0, 0, 0, 26128, 26136, 26144, 26152, 26160, 26168, 26176, 26184, 
-    26192, 26200, 0, 0, 0, 0, 0, 0, 26208, 26211, 26214, 26217, 26222, 26225, 
-    26230, 26237, 26245, 26250, 26257, 26260, 26267, 26274, 26281, 0, 26285, 
-    26289, 26292, 26295, 26298, 26301, 26304, 26307, 26310, 26313, 0, 0, 0, 
-    0, 0, 0, 26316, 26319, 26322, 26325, 26328, 26331, 26335, 26339, 26343, 
-    26346, 26350, 26354, 26357, 26361, 26365, 26368, 26372, 26376, 26380, 
-    26384, 26388, 26392, 26396, 26399, 26402, 26406, 26410, 26413, 26417, 
-    26421, 26425, 26429, 26433, 26437, 26441, 26445, 26452, 26457, 26462, 
-    26467, 26472, 26478, 26484, 26490, 26496, 26501, 26507, 26513, 26518, 
-    26524, 26530, 26536, 26542, 26548, 26553, 26559, 26564, 26570, 26576, 
-    26582, 26588, 26594, 26599, 26604, 26610, 26616, 26621, 26627, 26632, 
-    26638, 26643, 26648, 26654, 26660, 26666, 26672, 26678, 26684, 26690, 
-    26696, 26702, 26708, 26714, 26720, 26725, 26730, 26735, 26741, 0, 0, 0, 
-    0, 0, 0, 0, 0, 26747, 26756, 26765, 26773, 26781, 26791, 26799, 26808, 
-    26815, 26822, 26829, 26837, 26845, 26853, 26861, 26869, 26877, 26885, 
-    26893, 26900, 26908, 26916, 26924, 26932, 26940, 26950, 26960, 26970, 
-    26980, 26990, 27000, 27010, 27020, 27030, 27040, 27050, 27060, 27070, 
-    27080, 27088, 27096, 27106, 27114, 0, 0, 0, 0, 0, 27124, 27128, 27132, 
-    27136, 27140, 27144, 27148, 27152, 27156, 27160, 27164, 27168, 27172, 
-    27176, 27180, 27184, 27188, 27192, 27196, 27200, 27204, 27208, 27212, 
-    27216, 27222, 27226, 27232, 27236, 27242, 27246, 27252, 27256, 27260, 
-    27264, 27268, 27272, 27276, 27282, 27288, 27294, 27300, 27305, 27310, 
-    27315, 27321, 27327, 27333, 27339, 27346, 27352, 27357, 27362, 27366, 
-    27370, 27374, 27378, 27382, 27386, 27390, 27396, 27402, 27408, 27413, 
-    27420, 27425, 27430, 27436, 27441, 27448, 27455, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 27461, 27466, 27469, 27473, 27477, 27481, 27485, 27489, 27493, 
-    27497, 27501, 27505, 27509, 27513, 27517, 27521, 27524, 27527, 27531, 
-    27535, 27539, 27542, 27545, 27548, 27552, 27556, 27560, 27564, 27568, 0, 
-    0, 0, 27571, 27575, 27579, 27583, 27588, 27593, 27598, 27603, 27607, 
-    27611, 27616, 27621, 0, 0, 0, 0, 27627, 27631, 27636, 27641, 27646, 
-    27650, 27654, 27658, 27662, 27667, 27671, 27675, 0, 0, 0, 0, 27679, 0, 0, 
-    0, 27683, 27687, 27691, 27695, 27698, 27701, 27704, 27707, 27710, 27713, 
-    27716, 27719, 27722, 27727, 27733, 27739, 27745, 27751, 27756, 27762, 
-    27768, 27774, 27779, 27785, 27790, 27796, 27802, 27807, 27813, 27819, 
-    27825, 27830, 27835, 27840, 27846, 27852, 27857, 27863, 27868, 27874, 
-    27879, 27885, 0, 0, 27891, 27897, 27903, 27909, 27915, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 27921, 27928, 27935, 27941, 27948, 27955, 27961, 27968, 
-    27975, 27982, 27989, 27995, 28002, 28009, 28015, 28022, 28029, 28035, 
-    28042, 28049, 28055, 28061, 28068, 28074, 28080, 28087, 28093, 28100, 
-    28107, 28114, 28121, 28128, 28135, 28141, 28148, 28155, 28161, 28168, 
-    28175, 28182, 28189, 28196, 28203, 28210, 0, 0, 0, 0, 28217, 28225, 
-    28232, 28239, 28245, 28252, 28258, 28265, 28271, 28278, 28285, 28292, 
-    28299, 28306, 28313, 28320, 28327, 28334, 28341, 28348, 28354, 28360, 
-    28367, 28374, 28381, 28387, 0, 0, 0, 0, 0, 0, 28393, 28399, 28404, 28409, 
-    28414, 28419, 28424, 28429, 28434, 28439, 28444, 0, 0, 0, 28450, 28456, 
-    28462, 28466, 28472, 28478, 28484, 28490, 28496, 28502, 28508, 28514, 
-    28520, 28526, 28532, 28538, 28544, 28550, 28556, 28560, 28566, 28572, 
-    28578, 28584, 28590, 28596, 28602, 28608, 28614, 28620, 28626, 28632, 
-    28638, 28644, 28650, 28654, 28659, 28664, 28669, 28673, 28678, 28682, 
-    28687, 28692, 28697, 28701, 28706, 28711, 28716, 28721, 28726, 28730, 
-    28734, 28739, 28744, 28749, 28753, 28757, 28762, 28767, 28772, 28777, 0, 
-    0, 28783, 28787, 28794, 28799, 28805, 28811, 28816, 28822, 28828, 28833, 
-    28839, 28845, 28851, 28857, 28863, 28868, 28873, 28879, 28884, 28890, 
-    28895, 28901, 28907, 28913, 28919, 28923, 28928, 28933, 28939, 28945, 
-    28950, 28956, 28962, 28966, 28971, 28976, 28980, 28985, 28990, 28995, 
-    29000, 29006, 29012, 29018, 29023, 29028, 29032, 29037, 29041, 29046, 
-    29050, 29055, 29060, 29065, 29070, 29077, 29084, 29092, 29103, 29112, 
-    29120, 29127, 29138, 29144, 29151, 0, 29158, 29163, 29168, 29176, 29182, 
-    29190, 29195, 29201, 29207, 29213, 29218, 29224, 29229, 29236, 29242, 
-    29247, 29253, 29259, 29265, 29272, 29279, 29286, 29291, 29296, 29303, 
-    29310, 29317, 29324, 29331, 0, 0, 29338, 29345, 29352, 29358, 29364, 
-    29370, 29376, 29382, 29388, 29394, 29400, 0, 0, 0, 0, 0, 0, 29406, 29412, 
-    29417, 29422, 29427, 29432, 29437, 29442, 29447, 29452, 0, 0, 0, 0, 0, 0, 
-    29457, 29462, 29467, 29472, 29477, 29482, 29487, 29495, 29502, 29507, 
-    29512, 29517, 29522, 29527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29532, 29538, 
-    29544, 29548, 29552, 29556, 29560, 29566, 29570, 29576, 29580, 29586, 
-    29592, 29600, 29606, 29614, 29618, 29622, 29626, 29632, 29635, 29640, 
-    29644, 29650, 29654, 29658, 29664, 29668, 29674, 29678, 29684, 29692, 
-    29700, 29708, 29714, 29718, 29724, 29728, 29734, 29737, 29740, 29746, 
-    29750, 29756, 29759, 29762, 29765, 29769, 29773, 29779, 29785, 29789, 
-    29792, 29796, 29801, 29806, 29813, 29818, 29825, 29832, 29841, 29848, 
-    29857, 29862, 29869, 29876, 29885, 29890, 29897, 29902, 29908, 29914, 
-    29920, 29926, 29932, 29938, 0, 0, 0, 0, 29944, 29948, 29951, 29954, 
-    29957, 29960, 29963, 29966, 29969, 29972, 29975, 29978, 29981, 29984, 
-    29989, 29994, 29999, 30002, 30007, 30012, 30017, 30022, 30029, 30034, 
-    30039, 30044, 30049, 30056, 30062, 30068, 30074, 30080, 30086, 30095, 
-    30104, 30110, 30116, 30125, 30134, 30143, 30152, 30161, 30170, 30179, 
-    30188, 0, 0, 0, 30197, 30202, 30207, 30212, 30216, 30220, 30224, 30229, 
-    30233, 30237, 30242, 30246, 30251, 30256, 30261, 30266, 30271, 30276, 
-    30281, 30286, 30291, 30295, 30299, 30304, 30309, 30314, 30318, 30322, 
-    30326, 30331, 30336, 30341, 30346, 30350, 30357, 30364, 30371, 30377, 
-    30383, 30389, 30395, 30401, 30407, 0, 0, 0, 30412, 30417, 30422, 30427, 
-    30431, 30435, 30439, 30443, 30447, 30451, 30455, 30459, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30463, 30466, 30470, 
-    30474, 30478, 30482, 30486, 30490, 30494, 30498, 30502, 30506, 30510, 
-    30514, 30517, 30520, 30524, 30528, 30532, 30536, 30540, 30544, 30547, 
-    30551, 30555, 30559, 30563, 30566, 30569, 30573, 30576, 30580, 30584, 
-    30588, 30592, 30596, 30599, 30604, 30609, 30614, 30618, 30622, 30627, 
-    30631, 30636, 30640, 30646, 30651, 30656, 30661, 30667, 30672, 30678, 
-    30684, 30690, 30694, 0, 0, 0, 30698, 30703, 30712, 30717, 30724, 30729, 
-    30733, 30736, 30739, 30742, 30745, 30748, 30751, 30754, 30757, 0, 0, 0, 
-    30760, 30764, 30768, 30772, 30779, 30785, 30791, 30797, 30803, 30809, 
-    30815, 30821, 30827, 30833, 30840, 30847, 30854, 30861, 30868, 30875, 
-    30882, 30889, 30896, 30903, 30910, 30917, 30924, 30931, 30938, 30945, 
-    30952, 30959, 30966, 30973, 30980, 30987, 30994, 31001, 31008, 31015, 
-    31022, 31029, 31036, 31043, 31051, 31059, 31067, 31073, 31079, 31085, 
-    31093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31102, 31107, 31112, 31117, 31122, 31131, 
-    31142, 31151, 31162, 31168, 31181, 31187, 31194, 31201, 31206, 31212, 
-    31218, 31229, 31238, 31245, 31252, 31260, 31267, 31275, 31285, 31295, 
-    31302, 31309, 31316, 31326, 31331, 31339, 31345, 31353, 31362, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31367, 31372, 31378, 31384, 31392, 31398, 
-    31404, 31410, 31415, 31422, 31427, 31433, 31439, 31447, 31452, 31458, 
-    31463, 31470, 31476, 31484, 31492, 31498, 31504, 31511, 31518, 31524, 
-    31530, 31536, 31542, 31547, 31553, 31561, 31568, 31574, 31580, 31586, 
-    31592, 31600, 31604, 31610, 31616, 31622, 31628, 31634, 31640, 31644, 
-    31649, 31654, 31661, 31666, 31670, 31675, 31680, 31685, 31689, 31694, 
-    31699, 31703, 31707, 31711, 31716, 31720, 31725, 31730, 31734, 31739, 
-    31743, 31748, 31752, 31757, 31762, 31768, 31773, 31778, 31782, 31787, 
-    31793, 31800, 31805, 31810, 31815, 31819, 31824, 31828, 31834, 31841, 
-    31848, 31853, 31858, 31862, 31868, 31873, 31878, 31883, 31888, 31894, 
-    31899, 31905, 31910, 31916, 31922, 31928, 31935, 31942, 31949, 31956, 
-    31963, 31970, 31975, 31984, 31994, 32004, 32014, 32024, 32034, 32044, 
-    32057, 32067, 32077, 32087, 32093, 32098, 32105, 32113, 32121, 32128, 
-    32135, 32142, 32149, 32157, 32166, 32175, 32184, 32193, 32202, 32211, 
-    32220, 32229, 32238, 32247, 32256, 32265, 32274, 32283, 32291, 32300, 
-    32311, 32319, 32329, 32340, 32349, 32358, 32368, 32377, 32385, 32394, 
-    32400, 32405, 32413, 32418, 32425, 32430, 32439, 32445, 32451, 32458, 
-    32463, 32468, 32476, 32484, 32493, 32502, 32507, 32514, 32524, 32532, 
-    32541, 32546, 32552, 32557, 32564, 32569, 32578, 32583, 32588, 32593, 
-    32600, 32606, 32611, 32620, 32628, 32633, 32638, 32645, 32652, 32656, 
-    32660, 32663, 32666, 32669, 32672, 32675, 32678, 32685, 32688, 32691, 
-    32696, 32700, 32704, 32708, 32712, 32716, 32726, 32732, 32738, 32744, 
-    32752, 32760, 32766, 32772, 32779, 32785, 32790, 32796, 32802, 32807, 
-    32813, 32819, 32827, 32832, 32838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 32844, 32850, 32855, 32864, 32872, 32880, 
-    32887, 32894, 32901, 32908, 32916, 32924, 32934, 32944, 32952, 32960, 
-    32968, 32976, 32985, 32994, 33002, 33010, 33019, 33028, 33038, 33048, 
-    33057, 33066, 33074, 33082, 33090, 33098, 33108, 33118, 33126, 33134, 
-    33142, 33150, 33158, 33166, 33174, 33182, 33190, 33198, 33206, 33214, 
-    33223, 33232, 33241, 33250, 33260, 33270, 33277, 33284, 33292, 33300, 
-    33309, 33318, 33326, 33334, 33346, 33358, 33367, 33376, 33385, 33394, 
-    33401, 33408, 33416, 33424, 33432, 33440, 33448, 33456, 33464, 33472, 
-    33481, 33490, 33499, 33508, 33517, 33526, 33536, 33546, 33556, 33566, 
-    33575, 33584, 33591, 33598, 33606, 33614, 33622, 33630, 33638, 33646, 
-    33658, 33670, 33679, 33688, 33696, 33704, 33712, 33720, 33731, 33742, 
-    33753, 33764, 33776, 33788, 33796, 33804, 33812, 33820, 33829, 33838, 
-    33847, 33856, 33864, 33872, 33880, 33888, 33896, 33904, 33913, 33922, 
-    33932, 33942, 33950, 33958, 33966, 33974, 33982, 33990, 33997, 34004, 
-    34012, 34020, 34028, 34036, 34044, 34052, 34060, 34068, 34076, 34084, 
-    34092, 34100, 34108, 34116, 34124, 34132, 34141, 34150, 34159, 34167, 
-    34176, 34185, 34194, 34203, 34213, 34222, 34228, 34233, 34240, 34247, 
-    34255, 34263, 34272, 34281, 34291, 34301, 34312, 34323, 34333, 34343, 
-    34353, 34363, 34372, 34381, 34391, 34401, 34412, 34423, 34433, 34443, 
-    34453, 34463, 34470, 34477, 34485, 34493, 34500, 34507, 34516, 34525, 
-    34535, 34545, 34556, 34567, 34577, 34587, 34597, 34607, 34616, 34625, 
-    34633, 34641, 34648, 34655, 34663, 34671, 34680, 34689, 34699, 34709, 
-    34720, 34731, 34741, 34751, 34761, 34771, 34780, 34789, 34799, 34809, 
-    34820, 34831, 34841, 34851, 34861, 34871, 34878, 34885, 34893, 34901, 
-    34910, 34919, 34929, 34939, 34950, 34961, 34971, 34981, 34991, 35001, 
-    35009, 35017, 35025, 35033, 35042, 35051, 35059, 35067, 35074, 35081, 
-    35088, 35095, 35103, 35111, 35119, 35127, 35137, 35147, 35157, 35167, 
-    35177, 35187, 35195, 35203, 35213, 35223, 35233, 35243, 35253, 35263, 
-    35271, 35279, 35289, 35299, 35309, 0, 0, 35319, 35327, 35335, 35345, 
-    35355, 35365, 0, 0, 35375, 35383, 35391, 35401, 35411, 35421, 35431, 
-    35441, 35451, 35459, 35467, 35477, 35487, 35497, 35507, 35517, 35527, 
-    35535, 35543, 35553, 35563, 35573, 35583, 35593, 35603, 35611, 35619, 
-    35629, 35639, 35649, 35659, 35669, 35679, 35687, 35695, 35705, 35715, 
-    35725, 0, 0, 35735, 35743, 35751, 35761, 35771, 35781, 0, 0, 35791, 
-    35799, 35807, 35817, 35827, 35837, 35847, 35857, 0, 35867, 0, 35875, 0, 
-    35885, 0, 35895, 35905, 35913, 35921, 35931, 35941, 35951, 35961, 35971, 
-    35981, 35989, 35997, 36007, 36017, 36027, 36037, 36047, 36057, 36065, 
-    36073, 36081, 36089, 36097, 36105, 36113, 36121, 36129, 36137, 36145, 
-    36153, 36161, 0, 0, 36169, 36179, 36189, 36202, 36215, 36228, 36241, 
-    36254, 36267, 36277, 36287, 36300, 36313, 36326, 36339, 36352, 36365, 
-    36375, 36385, 36398, 36411, 36424, 36437, 36450, 36463, 36473, 36483, 
-    36496, 36509, 36522, 36535, 36548, 36561, 36571, 36581, 36594, 36607, 
-    36620, 36633, 36646, 36659, 36669, 36679, 36692, 36705, 36718, 36731, 
-    36744, 36757, 36765, 36773, 36784, 36792, 0, 36803, 36811, 36822, 36830, 
-    36838, 36846, 36854, 36862, 36865, 36868, 36871, 36874, 36880, 36891, 
-    36899, 0, 36910, 36918, 36929, 36937, 36945, 36953, 36961, 36969, 36974, 
-    36979, 36984, 36992, 37000, 37011, 0, 0, 37022, 37030, 37041, 37049, 
-    37057, 37065, 0, 37073, 37078, 37083, 37088, 37096, 37104, 37115, 37126, 
-    37134, 37142, 37150, 37161, 37169, 37177, 37185, 37193, 37201, 37207, 
-    37213, 0, 0, 37216, 37227, 37235, 0, 37246, 37254, 37265, 37273, 37281, 
-    37289, 37297, 37305, 37308, 0, 37311, 37315, 37319, 37323, 37327, 37331, 
-    37335, 37339, 37343, 37347, 37351, 37355, 37361, 37367, 37373, 37376, 
-    37379, 37381, 37385, 37389, 37393, 37397, 37399, 37403, 37407, 37413, 
-    37419, 37426, 37433, 37438, 37443, 37449, 37455, 37457, 37460, 37462, 
-    37466, 37470, 37474, 37477, 37481, 37485, 37489, 37493, 37497, 37503, 
-    37507, 37511, 37517, 37522, 37529, 37531, 37534, 37538, 37541, 37545, 
-    37550, 37552, 37561, 37570, 37573, 37577, 37579, 37581, 37583, 37586, 
-    37592, 37594, 37598, 37602, 37609, 37616, 37620, 37625, 37630, 37635, 
-    37639, 37643, 37647, 37650, 37653, 37657, 37664, 37669, 37673, 37677, 
-    37682, 37686, 37690, 37695, 37700, 37704, 37708, 37712, 37714, 37719, 
-    37724, 37728, 37732, 37736, 37740, 0, 0, 0, 0, 0, 37744, 37750, 37756, 
-    37763, 37770, 37775, 37780, 37784, 0, 0, 37790, 37793, 37796, 37799, 
-    37802, 37805, 37808, 37812, 37816, 37821, 37826, 37831, 37837, 37841, 
-    37844, 37847, 37850, 37853, 37856, 37859, 37862, 37865, 37868, 37872, 
-    37876, 37881, 37886, 0, 37891, 37897, 37903, 37909, 37916, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 37923, 37926, 37929, 37932, 37937, 37940, 37943, 37946, 
-    37949, 37952, 37955, 37959, 37962, 37965, 37968, 37971, 37974, 37979, 
-    37982, 37985, 37988, 37991, 37994, 37999, 38002, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38005, 38010, 38015, 38022, 
-    38030, 38035, 38040, 38044, 38048, 38053, 38060, 38067, 38071, 38076, 
-    38081, 38086, 38091, 38098, 38103, 38108, 38113, 38122, 38129, 38135, 
-    38139, 38144, 38150, 38155, 38162, 38170, 38178, 38182, 38186, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38190, 38194, 38201, 38205, 38209, 
-    38214, 38218, 38222, 38226, 38228, 38232, 38236, 38240, 38245, 38249, 
-    38253, 38261, 38264, 38268, 38271, 38274, 38280, 38283, 38286, 38292, 
-    38296, 38300, 38304, 38307, 38311, 38314, 38318, 38320, 38323, 38326, 
-    38330, 38332, 38336, 38339, 38342, 38347, 38352, 38358, 38361, 38364, 
-    38368, 38373, 38376, 38379, 38382, 38386, 38390, 38393, 38396, 38398, 
-    38401, 38404, 38407, 38411, 38416, 38419, 38423, 38427, 38431, 38435, 
-    38440, 38445, 38449, 38453, 38458, 38463, 38468, 38472, 38476, 38481, 
-    38485, 38488, 38491, 38493, 38497, 38502, 38509, 38516, 38523, 38530, 
-    38537, 38544, 38551, 38558, 38566, 38573, 38581, 38588, 38595, 38603, 
-    38611, 38616, 38621, 38626, 38631, 38636, 38641, 38646, 38651, 38656, 
-    38661, 38667, 38673, 38679, 38685, 38692, 38700, 38707, 38713, 38719, 
-    38725, 38731, 38737, 38743, 38749, 38755, 38761, 38768, 38775, 38782, 
-    38789, 38797, 38806, 38814, 38825, 38833, 38841, 38849, 38855, 38864, 
-    38873, 38881, 38890, 0, 0, 0, 0, 0, 0, 38898, 38900, 38903, 38905, 38908, 
-    38911, 38914, 38919, 38924, 38929, 38934, 38938, 38942, 38946, 38950, 
-    38955, 38961, 38966, 38972, 38977, 38982, 38987, 38993, 38998, 39004, 
-    39010, 39014, 39018, 39023, 39028, 39033, 39038, 39043, 39051, 39059, 
-    39067, 39075, 39082, 39090, 39097, 39104, 39112, 39122, 39129, 39136, 
-    39143, 39150, 39158, 39166, 39173, 39180, 39188, 39196, 39201, 39209, 
-    39214, 39219, 39225, 39230, 39236, 39243, 39250, 39255, 39261, 39266, 
-    39269, 39273, 39276, 39280, 39284, 39288, 39294, 39300, 39306, 39312, 
-    39316, 39320, 39324, 39328, 39334, 39340, 39344, 39349, 39353, 39358, 
-    39362, 39366, 39369, 39373, 39376, 39380, 39387, 39395, 39406, 39417, 
-    39422, 39431, 39438, 39446, 39454, 39458, 39464, 39472, 39476, 39481, 
-    39486, 39492, 39498, 39504, 39511, 39515, 39519, 39524, 39527, 39529, 
-    39533, 39537, 39544, 39548, 39550, 39552, 39556, 39563, 39568, 39574, 
-    39583, 39590, 39595, 39599, 39603, 39607, 39610, 39613, 39616, 39620, 
-    39624, 39628, 39632, 39636, 39639, 39643, 39647, 39650, 39652, 39655, 
-    39657, 39661, 39665, 39667, 39672, 39675, 39679, 39683, 39687, 39689, 
-    39691, 39693, 39696, 39700, 39704, 39708, 39712, 39716, 39722, 39728, 
-    39730, 39732, 39734, 39736, 39739, 39741, 39745, 39747, 39751, 39754, 
-    39759, 39763, 39767, 39770, 39774, 39778, 39783, 39787, 39796, 39806, 
-    39810, 39815, 39821, 39825, 39829, 39832, 39837, 39841, 39847, 39851, 
-    39862, 39870, 39874, 39878, 39884, 39888, 39891, 39893, 39896, 39900, 
-    39904, 39910, 39914, 39918, 39921, 39924, 39928, 39933, 39938, 39943, 
-    39948, 39953, 39960, 39967, 39971, 39975, 39977, 39981, 39984, 39987, 
-    39995, 40003, 40009, 40015, 40024, 40033, 40038, 40043, 40051, 40059, 
-    40061, 40063, 40068, 40073, 40079, 40085, 40090, 40095, 40099, 40103, 
-    40109, 40115, 40121, 40127, 40137, 40147, 40154, 40161, 40163, 40167, 
-    40171, 40176, 40181, 40188, 40195, 40198, 40201, 40204, 40207, 40210, 
-    40215, 40219, 40224, 40229, 40232, 40235, 40238, 40241, 40244, 40248, 
-    40251, 40254, 40257, 40260, 40262, 40264, 40266, 40268, 40276, 40284, 
-    40289, 40292, 40297, 40307, 40313, 40319, 40325, 40333, 40341, 40352, 
-    40356, 40360, 40362, 40368, 40370, 40372, 40374, 40376, 40382, 40385, 
-    40391, 40397, 40401, 40405, 40409, 40412, 40416, 40420, 40422, 40431, 
-    40440, 40445, 40450, 40455, 40461, 40467, 40470, 40473, 40476, 40479, 
-    40481, 40486, 40491, 40496, 40502, 40508, 40515, 40522, 40527, 40532, 
-    40537, 40542, 40550, 40558, 40566, 40574, 40582, 40590, 40598, 40606, 
-    40614, 40622, 40629, 40640, 40649, 40663, 40666, 40671, 40677, 40683, 
-    40690, 40704, 40719, 40725, 40731, 40738, 40744, 40752, 40758, 40771, 
-    40785, 40790, 40796, 40803, 40806, 40809, 40811, 40814, 40817, 40819, 
-    40821, 40825, 40828, 40831, 40834, 40837, 40842, 40847, 40852, 40857, 
-    40860, 40863, 40865, 40867, 40869, 40873, 40877, 40881, 40887, 40890, 
-    40892, 40894, 40899, 40904, 40909, 40914, 40919, 40924, 40926, 40928, 
-    40937, 40941, 40948, 40957, 40959, 40964, 40969, 40976, 40980, 40982, 
-    40986, 40988, 40992, 40996, 41000, 41002, 41004, 41006, 41011, 41018, 
-    41025, 41032, 41039, 41046, 41053, 41060, 41067, 41073, 41079, 41086, 
-    41093, 41100, 41107, 41113, 41119, 41126, 41133, 41140, 41148, 41155, 
-    41163, 41170, 41178, 41185, 41193, 41201, 41208, 41216, 41223, 41231, 
-    41238, 41246, 41253, 41260, 41267, 41274, 41281, 41289, 41296, 41303, 
-    41310, 41318, 41325, 41332, 41339, 41346, 41354, 41362, 41369, 41376, 
-    41382, 41389, 41394, 41401, 41408, 41416, 41423, 41431, 41439, 41444, 
-    41449, 41454, 41461, 41468, 41475, 41482, 41487, 41491, 41500, 41506, 
-    41509, 41517, 41520, 41525, 41530, 41533, 41536, 41544, 41547, 41552, 
-    41555, 41562, 41567, 41575, 41578, 41581, 41584, 41589, 41594, 41597, 
-    41600, 41608, 41611, 41616, 41623, 41627, 41631, 41636, 41641, 41647, 
-    41652, 41658, 41664, 41669, 41675, 41683, 41689, 41697, 41705, 41711, 
-    41719, 41727, 41736, 41744, 41750, 41758, 41767, 41775, 41779, 41784, 
-    41797, 41810, 41814, 41818, 41822, 41826, 41836, 41840, 41845, 41850, 
-    41855, 41860, 41865, 41870, 41880, 41890, 41898, 41908, 41918, 41926, 
-    41936, 41946, 41954, 41964, 41974, 41982, 41990, 42000, 42010, 42013, 
-    42016, 42019, 42024, 42028, 42034, 42041, 42048, 42056, 42063, 42067, 
-    42071, 42075, 42079, 42081, 42085, 42089, 42094, 42099, 42106, 42113, 
-    42116, 42123, 42125, 42127, 42131, 42135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42140, 42144, 42151, 42158, 42165, 
-    42172, 42176, 42180, 42184, 42188, 42193, 42199, 42204, 42210, 42216, 
-    42222, 42228, 42236, 42243, 42250, 42257, 42264, 42270, 42276, 42285, 
-    42289, 42296, 42300, 42304, 42310, 42316, 42322, 42328, 42332, 42336, 
-    42339, 42343, 42347, 42354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42361, 42364, 42368, 42372, 42378, 42384, 
-    42390, 42398, 42405, 42409, 42417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 42422, 42425, 42428, 42431, 42434, 42437, 42440, 
-    42443, 42446, 42449, 42453, 42457, 42461, 42465, 42469, 42473, 42477, 
-    42481, 42485, 42489, 42493, 42496, 42499, 42502, 42505, 42508, 42511, 
-    42514, 42517, 42520, 42524, 42528, 42532, 42536, 42540, 42544, 42548, 
-    42552, 42556, 42560, 42564, 42570, 42576, 42582, 42589, 42596, 42603, 
-    42610, 42617, 42624, 42631, 42638, 42645, 42652, 42659, 42666, 42673, 
-    42680, 42687, 42694, 42701, 42706, 42712, 42718, 42724, 42729, 42735, 
-    42741, 42747, 42752, 42758, 42764, 42769, 42774, 42779, 42784, 42790, 
-    42796, 42801, 42806, 42812, 42817, 42823, 42829, 42835, 42841, 42847, 
-    42852, 42858, 42864, 42870, 42875, 42881, 42887, 42893, 42898, 42904, 
-    42910, 42915, 42920, 42925, 42930, 42936, 42942, 42947, 42952, 42958, 
-    42963, 42969, 42975, 42981, 42987, 42993, 42998, 43004, 43010, 43016, 
-    43021, 43027, 43033, 43039, 43044, 43050, 43056, 43061, 43066, 43071, 
-    43076, 43082, 43088, 43093, 43098, 43104, 43109, 43115, 43121, 43127, 
-    43133, 43139, 43143, 43149, 43155, 43161, 43167, 43173, 43179, 43185, 
-    43191, 43197, 43203, 43207, 43211, 43215, 43219, 43223, 43227, 43231, 
-    43235, 43239, 43244, 43250, 43255, 43260, 43265, 43270, 43279, 43288, 
-    43297, 43306, 43315, 43324, 43333, 43342, 43349, 43357, 43365, 43372, 
-    43379, 43387, 43395, 43402, 43409, 43417, 43425, 43432, 43439, 43447, 
-    43455, 43462, 43469, 43477, 43486, 43495, 43503, 43512, 43521, 43528, 
-    43535, 43543, 43552, 43561, 43569, 43578, 43587, 43594, 43601, 43610, 
-    43619, 43627, 43635, 43644, 43653, 43660, 43667, 43676, 43685, 43693, 
-    43701, 43710, 43719, 43726, 43733, 43742, 43751, 43759, 43768, 43777, 
-    43785, 43795, 43805, 43815, 43825, 43834, 43843, 43852, 43861, 43868, 
-    43876, 43884, 43892, 43900, 43905, 43910, 43919, 43927, 43934, 43943, 
-    43951, 43958, 43967, 43975, 43982, 43991, 43999, 44006, 44015, 44023, 
-    44030, 44039, 44047, 44054, 44063, 44071, 44078, 44087, 44095, 44102, 
-    44111, 44119, 44126, 44135, 44144, 44153, 44162, 44175, 44188, 44195, 
-    44200, 44205, 44210, 44215, 44220, 44225, 44230, 44235, 44243, 44251, 
-    44259, 44267, 44272, 44279, 44286, 44293, 44298, 44306, 44313, 44321, 
-    44325, 44332, 44338, 44345, 44349, 44355, 44361, 44367, 44371, 44374, 
-    44378, 44382, 44389, 44395, 44401, 44407, 44413, 44427, 44437, 44451, 
-    44465, 44471, 44481, 44495, 44498, 44501, 44508, 44516, 44521, 44526, 
-    44534, 44545, 44556, 44564, 44568, 44572, 44575, 44578, 44582, 44586, 
-    44589, 44592, 44597, 44602, 44608, 44614, 44619, 44624, 44630, 44636, 
-    44641, 44646, 44651, 44656, 44662, 44668, 44673, 44678, 44684, 44690, 
-    44695, 44700, 44703, 44706, 44715, 44717, 44719, 44722, 44726, 44732, 
-    44734, 44737, 44744, 44751, 44759, 44767, 44777, 44791, 44796, 44801, 
-    44805, 44810, 44818, 44826, 44835, 44844, 44853, 44862, 44867, 44872, 
-    44878, 44884, 44890, 44896, 44899, 44905, 44911, 44921, 44931, 44939, 
-    44947, 44956, 44965, 44969, 44977, 44985, 44993, 45001, 45010, 45019, 
-    45028, 45037, 45042, 45047, 45052, 45057, 45062, 45068, 45074, 45079, 
-    45085, 45087, 45089, 45091, 45093, 45096, 45099, 45101, 45103, 45105, 
-    45109, 45113, 45115, 45117, 45120, 45123, 45127, 45133, 45139, 45141, 
-    45148, 45152, 45157, 45162, 45164, 45173, 45179, 45185, 45191, 45197, 
-    45203, 45209, 45214, 45217, 45220, 45223, 45225, 45227, 45231, 45235, 
-    45240, 45245, 45250, 45253, 45257, 45262, 45265, 45269, 45274, 45279, 
-    45284, 45289, 45294, 45299, 45304, 45309, 45314, 45319, 45324, 45329, 
-    45335, 45341, 45347, 45349, 45352, 45354, 45357, 45359, 45361, 45363, 
-    45365, 45367, 45369, 45371, 45373, 45375, 45377, 45379, 45381, 45383, 
-    45385, 45387, 45389, 45391, 45396, 45401, 45406, 45411, 45416, 45421, 
-    45426, 45431, 45436, 45441, 45446, 45451, 45456, 45461, 45466, 45471, 
-    45476, 45481, 45486, 45491, 45495, 45499, 45503, 45509, 45515, 45520, 
-    45525, 45530, 45535, 45540, 45545, 45553, 45561, 45569, 45577, 45585, 
-    45593, 45601, 45609, 45615, 45620, 45625, 45630, 45633, 45637, 45641, 
-    45645, 45649, 45653, 45657, 45664, 45671, 45679, 45687, 45692, 45697, 
-    45704, 45711, 45718, 45725, 45728, 45731, 45736, 45738, 45742, 45747, 
-    45749, 45751, 45753, 45755, 45760, 45763, 45765, 45770, 45777, 45784, 
-    45787, 45791, 45796, 45801, 45809, 45815, 45820, 45831, 45837, 45843, 
-    45848, 45853, 45859, 45862, 45865, 45870, 45872, 45876, 45878, 45880, 
-    45882, 45884, 45886, 45888, 45893, 45895, 45897, 45899, 45901, 45905, 
-    45907, 45910, 45915, 45920, 45925, 45930, 45936, 45942, 45944, 45947, 
-    45954, 45960, 45966, 45973, 45977, 0, 45981, 45983, 45987, 45993, 45998, 
-    46000, 46004, 46013, 46021, 46029, 46035, 46041, 46046, 46052, 46057, 
-    46060, 46074, 46077, 46082, 0, 46087, 0, 0, 0, 0, 46096, 46103, 46107, 
-    46109, 46111, 46115, 46121, 46126, 46132, 46134, 46140, 46142, 46148, 
-    46150, 46152, 46157, 46159, 46163, 46168, 46170, 46175, 46180, 46184, 
-    46191, 0, 46201, 46207, 46210, 46216, 0, 46219, 46224, 46228, 46230, 0, 
-    0, 46232, 46236, 46240, 46245, 46247, 46252, 46255, 46258, 46261, 46265, 
-    46269, 46274, 46278, 46283, 46288, 46292, 46298, 46305, 46308, 46314, 
-    46319, 46323, 46328, 46334, 46340, 46347, 46353, 46360, 0, 46367, 46374, 
-    46378, 46385, 46391, 46396, 46402, 46406, 46411, 46414, 46420, 46426, 
-    46433, 46441, 46448, 46457, 46467, 46474, 46480, 46484, 46492, 46497, 
-    46506, 46509, 46512, 46521, 46532, 46539, 46541, 46547, 46552, 46554, 
-    46557, 46561, 46569, 0, 46578, 0, 46583, 46591, 46599, 46607, 0, 0, 0, 
-    46615, 46623, 46628, 46631, 46635, 46638, 46649, 46659, 46669, 0, 0, 
-    46678, 46687, 46693, 46701, 46705, 46713, 46717, 46725, 46732, 46739, 
-    46748, 46757, 46767, 46777, 46787, 46797, 46806, 46815, 46825, 46835, 
-    46844, 46853, 46860, 46867, 46874, 46881, 46888, 46895, 46902, 46909, 
-    46916, 46924, 46930, 46936, 46942, 46948, 46954, 46960, 46966, 46972, 
-    46978, 46985, 46993, 47001, 47009, 47017, 47025, 47033, 47041, 47049, 
-    47057, 47066, 0, 0, 0, 47071, 47077, 47080, 47086, 47092, 47097, 47101, 
-    47106, 47112, 47119, 47122, 47129, 47136, 47140, 47149, 47158, 47163, 
-    47169, 47174, 47179, 47186, 47193, 47201, 47209, 0, 47218, 47227, 47232, 
-    47236, 47243, 47247, 47254, 47262, 47267, 47275, 47279, 47284, 47288, 
-    47293, 0, 47297, 47302, 47311, 47313, 47317, 47321, 47328, 47335, 47340, 
-    47348, 47354, 0, 47360, 0, 0, 0, 47363, 47371, 47375, 47382, 47390, 
-    47398, 47403, 47408, 47414, 47419, 47424, 47430, 47435, 47438, 47442, 
-    47446, 47453, 47462, 47467, 47476, 47485, 47491, 47497, 47502, 47507, 
-    47512, 47517, 47523, 47529, 47537, 47545, 47551, 47557, 47562, 47567, 
-    47574, 47581, 47587, 47590, 47593, 47597, 47601, 47605, 47610, 47616, 
-    47622, 47629, 47636, 47641, 47645, 47649, 47653, 47657, 47661, 47665, 
-    47669, 47673, 47677, 47681, 47685, 47689, 47693, 47697, 47701, 47705, 
-    47709, 47713, 47717, 47721, 47725, 47729, 47733, 47737, 47741, 47745, 
-    47749, 47753, 47757, 47761, 47765, 47769, 47773, 47777, 47781, 47785, 
-    47789, 47793, 47797, 47801, 47805, 47809, 47813, 47817, 47821, 47825, 
-    47829, 47833, 47837, 47841, 47845, 47849, 47853, 47857, 47861, 47865, 
-    47869, 47873, 47877, 47881, 47885, 47889, 47893, 47897, 47901, 47905, 
-    47909, 47913, 47917, 47921, 47925, 47929, 47933, 47937, 47941, 47945, 
-    47949, 47953, 47957, 47961, 47965, 47969, 47973, 47977, 47981, 47985, 
-    47989, 47993, 47997, 48001, 48005, 48009, 48013, 48017, 48021, 48025, 
-    48029, 48033, 48037, 48041, 48045, 48049, 48053, 48057, 48061, 48065, 
-    48069, 48073, 48077, 48081, 48085, 48089, 48093, 48097, 48101, 48105, 
-    48109, 48113, 48117, 48121, 48125, 48129, 48133, 48137, 48141, 48145, 
-    48149, 48153, 48157, 48161, 48165, 48169, 48173, 48177, 48181, 48185, 
-    48189, 48193, 48197, 48201, 48205, 48209, 48213, 48217, 48221, 48225, 
-    48229, 48233, 48237, 48241, 48245, 48249, 48253, 48257, 48261, 48265, 
-    48269, 48273, 48277, 48281, 48285, 48289, 48293, 48297, 48301, 48305, 
-    48309, 48313, 48317, 48321, 48325, 48329, 48333, 48337, 48341, 48345, 
-    48349, 48353, 48357, 48361, 48365, 48369, 48373, 48377, 48381, 48385, 
-    48389, 48393, 48397, 48401, 48405, 48409, 48413, 48417, 48421, 48425, 
-    48429, 48433, 48437, 48441, 48445, 48449, 48453, 48457, 48461, 48465, 
-    48469, 48473, 48477, 48481, 48485, 48489, 48493, 48497, 48501, 48505, 
-    48509, 48513, 48517, 48521, 48525, 48529, 48533, 48537, 48541, 48545, 
-    48549, 48553, 48557, 48561, 48565, 48569, 48573, 48577, 48581, 48585, 
-    48589, 48593, 48597, 48601, 48605, 48609, 48613, 48617, 48621, 48625, 
-    48629, 48633, 48637, 48641, 48645, 48649, 48653, 48657, 48661, 48665, 
-    48672, 48680, 48686, 48692, 48699, 48706, 48712, 48718, 48724, 48730, 
-    48735, 48740, 48745, 48750, 48756, 48762, 48770, 48777, 48782, 48787, 
-    48795, 48804, 48811, 48821, 48832, 48835, 48838, 48842, 48846, 48852, 
-    48858, 48868, 48878, 48888, 48898, 48905, 48912, 48919, 48926, 48937, 
-    48948, 48959, 48970, 48980, 48990, 49002, 49014, 49025, 49036, 49048, 
-    49060, 49069, 49079, 49089, 49100, 49111, 49118, 49125, 49132, 49139, 
-    49149, 49159, 49167, 49175, 49182, 49189, 49196, 49203, 49210, 49215, 
-    49220, 49226, 49234, 49244, 49252, 49260, 49268, 49276, 49284, 49292, 
-    49300, 49308, 49316, 49324, 49333, 49342, 49350, 49358, 49367, 49376, 
-    49385, 49394, 49404, 49414, 49423, 49432, 49442, 49452, 49466, 49483, 
-    49497, 49514, 49528, 49542, 49556, 49570, 49580, 49591, 49601, 49612, 
-    49629, 49646, 49654, 49660, 49667, 49674, 49681, 49688, 49693, 49699, 
-    49704, 49709, 49715, 49720, 49725, 49730, 49735, 49740, 49747, 49752, 
-    49759, 49764, 49769, 49773, 49777, 49784, 49791, 49798, 49805, 49812, 
-    49819, 49832, 49845, 49858, 49871, 49879, 49887, 49893, 49899, 49906, 
-    49913, 49920, 49927, 49931, 49936, 49944, 49952, 49960, 49967, 49971, 
-    49979, 49987, 49990, 49993, 49998, 50004, 50012, 50020, 50040, 50060, 
-    50080, 50100, 50120, 50140, 50160, 50180, 50185, 50192, 50201, 50209, 
-    50217, 50222, 50225, 50228, 50233, 50236, 50255, 50262, 50268, 50274, 
-    50278, 50281, 50284, 50287, 50298, 50310, 50317, 50324, 50327, 50331, 
-    50334, 50339, 50344, 50349, 50355, 50364, 50371, 50378, 50386, 50393, 
-    50400, 50403, 50409, 50415, 50418, 50421, 50426, 50431, 50437, 50443, 
-    50447, 50452, 50459, 50463, 50469, 50473, 50477, 50485, 50497, 50505, 
-    50509, 50511, 50520, 50529, 50535, 50538, 50544, 50550, 50555, 50560, 
-    50565, 50570, 50575, 50580, 50582, 50588, 50593, 50600, 50604, 50610, 
-    50613, 50617, 50624, 50631, 50633, 50635, 50641, 50647, 50653, 50662, 
-    50671, 50678, 50685, 50691, 50697, 50702, 50707, 50712, 50718, 50724, 
-    50729, 50736, 50740, 50744, 50757, 50770, 50781, 50790, 50796, 50803, 
-    50808, 50813, 50818, 50823, 50828, 50830, 50837, 50844, 50851, 50858, 
-    50865, 50873, 50879, 50884, 50890, 50896, 50902, 50909, 50915, 50923, 
-    50931, 50939, 50947, 50954, 50960, 50966, 50975, 50979, 50988, 50997, 
-    51006, 51014, 51018, 51024, 51031, 51038, 51042, 51048, 51055, 51060, 
-    51065, 51071, 51076, 51081, 51088, 51095, 51100, 51105, 51113, 51121, 
-    51131, 51141, 51148, 51155, 51159, 51163, 51175, 51181, 51187, 51192, 
-    51197, 51204, 51211, 51217, 51223, 51232, 51240, 51248, 51255, 51262, 
-    51269, 51275, 51282, 51288, 51295, 51302, 51309, 51316, 51322, 51327, 
-    51336, 51346, 51353, 51362, 51368, 51373, 51378, 51387, 51393, 51399, 
-    51405, 51413, 51418, 51425, 51432, 51443, 51450, 51457, 51464, 51471, 
-    51478, 51485, 51492, 51503, 51514, 51524, 51534, 51546, 51558, 51563, 
-    51568, 51576, 51584, 51590, 51596, 51605, 51614, 51622, 51630, 51638, 
-    51646, 51656, 51666, 51680, 51694, 51701, 51708, 51719, 51730, 51737, 
-    51744, 51753, 51762, 51767, 51772, 51781, 51790, 51795, 51800, 51808, 
-    51814, 51820, 51828, 51836, 51849, 51862, 51866, 51870, 51877, 51884, 
-    51891, 51899, 51907, 51915, 51923, 51929, 51935, 51941, 51947, 51954, 
-    51961, 51969, 51977, 51980, 51983, 51988, 51993, 51999, 52005, 52012, 
-    52019, 52028, 52037, 52044, 52051, 52059, 52067, 52075, 52083, 52090, 
-    52097, 52104, 52111, 52115, 52119, 52126, 52133, 52138, 52143, 52148, 
-    52153, 52159, 52173, 52180, 52187, 52191, 52193, 52195, 52200, 52205, 
-    52210, 52214, 52222, 52229, 52236, 52244, 52256, 52264, 52272, 52283, 
-    52287, 52291, 52295, 52300, 52311, 52318, 52325, 52332, 52337, 52344, 
-    52353, 52361, 52367, 52373, 52379, 52388, 52397, 52405, 52414, 52419, 
-    52422, 52427, 52433, 52439, 52445, 52451, 52455, 52458, 52462, 52466, 
-    52472, 52478, 52484, 52490, 52494, 52498, 52505, 52512, 52519, 52526, 
-    52533, 52540, 52550, 52560, 52567, 52574, 52582, 52590, 52594, 52599, 
-    52604, 52610, 52616, 52619, 52622, 52625, 52628, 52632, 52637, 52642, 
-    52647, 52652, 52657, 52661, 52665, 52669, 52673, 52677, 52681, 52685, 
-    52691, 52695, 52701, 52706, 52713, 52721, 52728, 52736, 52743, 52751, 
-    52760, 52767, 52777, 52788, 52794, 52803, 52809, 52818, 52827, 52833, 
-    52839, 52843, 52847, 52856, 52865, 52872, 52879, 52888, 0, 0, 0, 52897, 
-    52902, 52906, 52910, 52915, 52920, 52925, 52933, 52941, 52944, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52948, 52953, 52958, 52963, 52968, 
-    52973, 52978, 52983, 52988, 52993, 52998, 53004, 53008, 53013, 53018, 
-    53023, 53028, 53033, 53038, 53043, 53048, 53053, 53058, 53063, 53068, 
-    53073, 53078, 53083, 53088, 53093, 53098, 53103, 53108, 53113, 53118, 
-    53124, 53129, 53135, 53144, 53149, 53157, 53164, 53173, 53178, 53183, 
-    53188, 53194, 0, 53201, 53206, 53211, 53216, 53221, 53226, 53231, 53236, 
-    53241, 53246, 53251, 53257, 53261, 53266, 53271, 53276, 53281, 53286, 
-    53291, 53296, 53301, 53306, 53311, 53316, 53321, 53326, 53331, 53336, 
-    53341, 53346, 53351, 53356, 53361, 53366, 53371, 53377, 53382, 53388, 
-    53397, 53402, 53410, 53417, 53426, 53431, 53436, 53441, 53447, 0, 53454, 
-    53462, 53470, 53480, 53487, 53495, 53501, 53510, 53518, 53526, 53534, 
-    53542, 53550, 53558, 53563, 53570, 53575, 53581, 53589, 53596, 53603, 
-    53611, 53617, 53623, 53630, 53637, 53646, 53656, 53662, 53669, 53674, 
-    53684, 53694, 53699, 53704, 53709, 53714, 53719, 53724, 53729, 53734, 
-    53739, 53744, 53749, 53754, 53759, 53764, 53769, 53774, 53779, 53784, 
-    53789, 53794, 53799, 53804, 53809, 53814, 53819, 53824, 53829, 53834, 
-    53839, 53844, 53848, 53852, 53857, 53862, 53867, 53872, 53877, 53882, 
-    53887, 53892, 53897, 53902, 53907, 53912, 53917, 53922, 53927, 53932, 
-    53937, 53942, 53949, 53956, 53963, 53970, 53977, 53984, 53991, 53998, 
-    54005, 54012, 54019, 54026, 54033, 54040, 54045, 54050, 54057, 54064, 
-    54071, 54078, 54085, 54092, 54099, 54106, 54113, 54120, 54127, 54134, 
-    54140, 54146, 54152, 54158, 54165, 54172, 54179, 54186, 54193, 54200, 
-    54207, 54214, 54221, 54228, 54236, 54244, 54252, 54260, 54268, 54276, 
-    54284, 54292, 54296, 54302, 54308, 54312, 54318, 54324, 54330, 54337, 
-    54344, 54351, 54358, 54363, 54369, 0, 0, 0, 0, 0, 0, 0, 54375, 54383, 
-    54392, 54401, 54409, 54415, 54420, 54425, 54430, 54435, 54440, 54445, 
-    54450, 54455, 54460, 54465, 54470, 54475, 54480, 54485, 54490, 54495, 
-    54500, 54505, 54510, 54515, 54520, 54525, 54530, 54535, 54540, 54545, 
-    54550, 54555, 54560, 54565, 54570, 54575, 54580, 54585, 54590, 54595, 
-    54600, 54605, 54610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54615, 54619, 54624, 
-    54629, 54634, 54639, 54648, 54653, 54658, 54663, 54668, 54673, 54678, 
-    54683, 54688, 54695, 54700, 54705, 54714, 54721, 54726, 54731, 54736, 
-    54743, 54748, 54755, 54760, 54765, 54772, 54779, 54784, 54789, 54794, 
-    54801, 54808, 54813, 54818, 54823, 54828, 54833, 54840, 54847, 54852, 
-    54857, 54862, 54867, 54872, 54877, 54882, 54887, 54892, 54897, 54902, 
-    54909, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 54921, 54925, 54929, 54933, 54937, 54941, 54945, 54949, 
-    54953, 54957, 54961, 54967, 54971, 54975, 54979, 54983, 54987, 54991, 
-    54995, 54999, 55003, 55007, 55011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55015, 
-    55019, 55023, 55027, 55031, 55035, 55039, 0, 55043, 55047, 55051, 55055, 
-    55059, 55063, 55067, 0, 55071, 55075, 55079, 55083, 55087, 55091, 55095, 
-    0, 55099, 55103, 55107, 55111, 55115, 55119, 55123, 0, 55127, 55131, 
-    55135, 55139, 55143, 55147, 55151, 0, 55155, 55159, 55163, 55167, 55171, 
-    55175, 55179, 0, 55183, 55187, 55191, 55195, 55199, 55203, 55207, 0, 
-    55211, 55215, 55219, 55223, 55227, 55231, 55235, 0, 55239, 55244, 55249, 
-    55254, 55259, 55264, 55269, 55273, 55278, 55283, 55288, 55292, 55297, 
-    55302, 55307, 55312, 55316, 55321, 55326, 55331, 55336, 55341, 55346, 
-    55350, 55355, 55360, 55367, 55372, 55377, 55383, 55390, 55397, 55406, 
-    55413, 55422, 55426, 55430, 55436, 55442, 55448, 55456, 55462, 55466, 
-    55470, 55474, 55480, 55486, 55490, 55492, 55496, 55501, 55503, 55507, 
-    55511, 55515, 55521, 55526, 55530, 55534, 55539, 55545, 55550, 55555, 
-    55560, 55565, 55572, 55579, 55584, 55589, 55594, 55599, 55604, 55609, 
-    55613, 55617, 55624, 55631, 55637, 55641, 55645, 55648, 55652, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 55660, 55664, 55668, 55673, 55678, 55683, 55687, 55691, 55695, 
-    55700, 55705, 55709, 55713, 55717, 55721, 55726, 55731, 55736, 55741, 
-    55745, 55749, 55754, 55759, 55764, 55769, 55773, 0, 55777, 55781, 55785, 
-    55789, 55793, 55797, 55801, 55806, 55811, 55815, 55820, 55825, 55834, 
-    55838, 55842, 55846, 55853, 55857, 55862, 55867, 55871, 55875, 55881, 
-    55886, 55891, 55896, 55901, 55905, 55909, 55913, 55917, 55921, 55926, 
-    55931, 55935, 55939, 55944, 55949, 55954, 55958, 55962, 55967, 55972, 
-    55978, 55984, 55988, 55994, 56000, 56004, 56010, 56016, 56021, 56026, 
-    56030, 56036, 56040, 56044, 56050, 56056, 56061, 56066, 56070, 56074, 
-    56082, 56088, 56094, 56100, 56105, 56110, 56115, 56121, 56125, 56131, 
-    56135, 56139, 56145, 56151, 56157, 56163, 56169, 56175, 56181, 56187, 
-    56193, 56199, 56205, 56211, 56215, 56221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 56227, 56230, 56234, 56238, 56242, 56246, 56249, 56252, 56256, 
-    56260, 56264, 56268, 56271, 56276, 56280, 56284, 56288, 56294, 56298, 
-    56302, 56306, 56310, 56317, 56323, 56327, 56331, 56335, 56339, 56343, 
-    56347, 56351, 56355, 56359, 56363, 56367, 56373, 56377, 56381, 56385, 
-    56389, 56393, 56397, 56401, 56405, 56409, 56413, 56417, 56421, 56425, 
-    56429, 56433, 56437, 56443, 56449, 56454, 56459, 56463, 56467, 56471, 
-    56475, 56479, 56483, 56487, 56491, 56495, 56499, 56503, 56507, 56511, 
-    56515, 56519, 56523, 56527, 56531, 56535, 56539, 56543, 56547, 56551, 
-    56555, 56561, 56565, 56569, 56573, 56577, 56581, 56585, 56589, 56593, 
-    56598, 56605, 56609, 56613, 56617, 56621, 56625, 56629, 56633, 56637, 
-    56641, 56645, 56649, 56653, 56660, 56664, 56670, 56674, 56678, 56682, 
-    56686, 56690, 56693, 56697, 56701, 56705, 56709, 56713, 56717, 56721, 
-    56725, 56729, 56733, 56737, 56741, 56745, 56749, 56753, 56757, 56761, 
-    56765, 56769, 56773, 56777, 56781, 56785, 56789, 56793, 56797, 56801, 
-    56805, 56809, 56813, 56817, 56821, 56827, 56831, 56835, 56839, 56843, 
-    56847, 56851, 56855, 56859, 56863, 56867, 56871, 56875, 56879, 56883, 
-    56887, 56891, 56895, 56899, 56903, 56907, 56911, 56915, 56919, 56923, 
-    56927, 56931, 56935, 56943, 56947, 56951, 56955, 56959, 56963, 56969, 
-    56973, 56977, 56981, 56985, 56989, 56993, 56997, 57001, 57005, 57009, 
-    57013, 57017, 57021, 57027, 57031, 57035, 57039, 57043, 57047, 57051, 
-    57055, 57059, 57063, 57067, 57071, 57075, 57079, 57083, 57087, 57091, 
-    57095, 57099, 57103, 57107, 57111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57115, 57123, 57130, 57141, 57151, 
-    57159, 57168, 57177, 57187, 57199, 57211, 57223, 0, 0, 0, 0, 57229, 
-    57232, 57235, 57240, 57243, 57250, 57254, 57258, 57262, 57266, 57270, 
-    57275, 57280, 57284, 57288, 57293, 57298, 57303, 57308, 57311, 57314, 
-    57320, 57326, 57331, 57336, 57343, 57350, 57354, 57358, 57362, 57369, 
-    57375, 57382, 57387, 57392, 57397, 57402, 57407, 57412, 57417, 57422, 
-    57427, 57432, 57437, 57442, 57447, 57452, 57458, 57463, 57467, 57473, 
-    57484, 57494, 57509, 57519, 57523, 57532, 57538, 57544, 57550, 57555, 
-    57558, 57563, 57567, 0, 57573, 57577, 57580, 57584, 57587, 57591, 57594, 
-    57598, 57601, 57605, 57608, 57611, 57615, 57619, 57623, 57627, 57631, 
-    57635, 57639, 57643, 57647, 57651, 57655, 57659, 57663, 57667, 57671, 
-    57675, 57679, 57683, 57687, 57691, 57695, 57699, 57703, 57708, 57712, 
-    57716, 57720, 57724, 57727, 57731, 57734, 57738, 57742, 57746, 57750, 
-    57753, 57757, 57760, 57764, 57768, 57772, 57776, 57780, 57784, 57788, 
-    57792, 57796, 57800, 57804, 57808, 57811, 57815, 57819, 57823, 57827, 
-    57831, 57834, 57839, 57843, 57848, 57852, 57855, 57859, 57863, 57867, 
-    57871, 57876, 57880, 57884, 57888, 57892, 57895, 57899, 57903, 0, 0, 
-    57908, 57916, 57924, 57931, 57938, 57942, 57948, 57953, 57958, 57962, 
-    57965, 57969, 57972, 57976, 57979, 57983, 57986, 57990, 57993, 57996, 
-    58000, 58004, 58008, 58012, 58016, 58020, 58024, 58028, 58032, 58036, 
-    58040, 58044, 58048, 58052, 58056, 58060, 58064, 58068, 58072, 58076, 
-    58080, 58084, 58088, 58093, 58097, 58101, 58105, 58109, 58112, 58116, 
-    58119, 58123, 58127, 58131, 58135, 58138, 58142, 58145, 58149, 58153, 
-    58157, 58161, 58165, 58169, 58173, 58177, 58181, 58185, 58189, 58193, 
-    58196, 58200, 58204, 58208, 58212, 58216, 58219, 58224, 58228, 58233, 
-    58237, 58240, 58244, 58248, 58252, 58256, 58261, 58265, 58269, 58273, 
-    58277, 58280, 58284, 58288, 58293, 58297, 58301, 58305, 58309, 58314, 
-    58321, 58325, 58331, 0, 0, 0, 0, 0, 58336, 58340, 58344, 58347, 58351, 
-    58355, 58359, 58362, 58365, 58369, 58373, 58377, 58381, 58385, 58389, 
-    58393, 58397, 58401, 58404, 58408, 58412, 58415, 58418, 58421, 58424, 
-    58428, 58432, 58436, 58440, 58444, 58448, 58452, 58456, 58460, 58464, 
-    58467, 58470, 58474, 58478, 58482, 58486, 0, 0, 0, 58490, 58494, 58498, 
-    58502, 58506, 58510, 58514, 58518, 58522, 58526, 58530, 58534, 58538, 
-    58542, 58546, 58550, 58554, 58558, 58562, 58566, 58570, 58574, 58578, 
-    58582, 58586, 58590, 58594, 58598, 58602, 58606, 58610, 58613, 58617, 
-    58620, 58624, 58628, 58631, 58635, 58639, 58642, 58646, 58650, 58654, 
-    58658, 58661, 58665, 58669, 58673, 58677, 58681, 58685, 58688, 58691, 
-    58695, 58699, 58703, 58707, 58711, 58715, 58719, 58723, 58727, 58731, 
-    58735, 58739, 58743, 58747, 58751, 58755, 58759, 58763, 58767, 58771, 
-    58775, 58779, 58783, 58787, 58791, 58795, 58799, 58803, 58807, 58811, 
-    58815, 58819, 58823, 58827, 58831, 58835, 58839, 58843, 58847, 58851, 
-    58855, 0, 58859, 58865, 58871, 58876, 58881, 58886, 58892, 58898, 58904, 
-    58910, 58916, 58922, 58928, 58934, 58940, 58946, 58952, 58956, 58960, 
-    58964, 58968, 58972, 58976, 58980, 58984, 58988, 58992, 58996, 59000, 
-    59004, 59008, 59012, 59016, 59020, 59024, 59028, 59032, 59037, 59042, 
-    59047, 0, 0, 0, 0, 0, 0, 0, 0, 59052, 59056, 59060, 59064, 59068, 59072, 
-    59076, 59080, 59084, 59088, 59092, 59096, 59100, 59104, 59108, 59112, 
-    59115, 59119, 59122, 59126, 59130, 59134, 59138, 59142, 59146, 59150, 
-    59154, 59158, 59162, 59166, 59170, 59174, 59178, 59182, 59186, 59190, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59194, 59199, 59204, 59209, 59213, 
-    59218, 59222, 59227, 59232, 59237, 59242, 59247, 59251, 59256, 59261, 
-    59266, 59271, 59275, 59279, 59283, 59287, 59291, 59295, 59299, 59303, 
-    59307, 59311, 59315, 59319, 59323, 59327, 59332, 59337, 59342, 59347, 
-    59352, 59357, 59362, 59367, 59372, 59377, 59382, 59387, 59392, 59397, 
-    59402, 59408, 0, 59415, 59418, 59421, 59424, 59427, 59430, 59433, 59436, 
-    59439, 59442, 59446, 59450, 59454, 59458, 59462, 59466, 59470, 59474, 
-    59478, 59482, 59486, 59490, 59494, 59498, 59502, 59506, 59510, 59514, 
-    59518, 59522, 59526, 59530, 59534, 59538, 59542, 59546, 59550, 59554, 
-    59558, 59562, 59566, 59575, 59584, 59593, 59602, 59611, 59620, 59629, 
-    59638, 59641, 59646, 59651, 59656, 59661, 59666, 59671, 59676, 59681, 
-    59686, 59690, 59695, 59700, 59705, 59710, 59715, 59719, 59723, 59727, 
-    59731, 59735, 59739, 59743, 59747, 59751, 59755, 59759, 59763, 59767, 
-    59771, 59776, 59781, 59786, 59791, 59796, 59801, 59806, 59811, 59816, 
-    59821, 59826, 59831, 59836, 59841, 59847, 59853, 59858, 59863, 59866, 
-    59869, 59872, 59875, 59878, 59881, 59884, 59887, 59890, 59894, 59898, 
-    59902, 59906, 59910, 59914, 59918, 59922, 59926, 59930, 59934, 59938, 
-    59942, 59946, 59950, 59954, 59958, 59962, 59966, 59970, 59974, 59978, 
-    59982, 59986, 59990, 59994, 59998, 60002, 60006, 60010, 60014, 60018, 
-    60022, 60026, 60030, 60034, 60038, 60042, 60046, 60050, 60055, 60060, 
-    60065, 60070, 60074, 60079, 60084, 60089, 60094, 60099, 60104, 60109, 
-    60114, 60119, 60123, 60129, 60135, 60141, 60147, 60153, 60159, 60165, 
-    60171, 60177, 60183, 60189, 60195, 60198, 60201, 60204, 60209, 60212, 
-    60215, 60218, 60221, 60224, 60227, 60231, 60235, 60239, 60243, 60247, 
-    60251, 60255, 60259, 60263, 60267, 60271, 60275, 60279, 60282, 60285, 
-    60289, 60293, 60297, 60301, 60304, 60308, 60312, 60316, 60320, 60323, 
-    60327, 60331, 60335, 60339, 60342, 60346, 60350, 60353, 60357, 60361, 
-    60365, 60369, 60373, 60377, 60381, 0, 60385, 60388, 60391, 60394, 60397, 
-    60400, 60403, 60406, 60409, 60412, 60415, 60418, 60421, 60424, 60427, 
-    60430, 60433, 60436, 60439, 60442, 60445, 60448, 60451, 60454, 60457, 
-    60460, 60463, 60466, 60469, 60472, 60475, 60478, 60481, 60484, 60487, 
-    60490, 60493, 60496, 60499, 60502, 60505, 60508, 60511, 60514, 60517, 
-    60520, 60523, 60526, 60529, 60532, 60535, 60538, 60541, 60544, 60547, 
-    60550, 60553, 60556, 60559, 60562, 60565, 60568, 60571, 60574, 60577, 
-    60580, 60583, 60586, 60589, 60592, 60595, 60598, 60601, 60604, 60607, 
-    60610, 60613, 60616, 60619, 60622, 60625, 60628, 60631, 60634, 60637, 
-    60640, 60643, 60646, 60649, 60657, 60664, 60671, 60678, 60685, 60692, 
-    60699, 60706, 60713, 60720, 60728, 60736, 60744, 60752, 60760, 60768, 
-    60776, 60784, 60792, 60800, 60808, 60816, 60824, 60832, 60840, 60843, 
-    60846, 60849, 60851, 60854, 60857, 60860, 60865, 60870, 60873, 60880, 
-    60887, 60894, 60901, 60904, 60909, 60911, 60915, 60917, 60919, 60922, 
-    60925, 60928, 60931, 60934, 60937, 60940, 60945, 60950, 60953, 60956, 
-    60959, 60962, 60965, 60968, 60971, 60975, 60978, 60981, 60984, 60987, 
-    60990, 60994, 60997, 61000, 61003, 61008, 61013, 61018, 61023, 61028, 
-    61033, 61038, 61043, 61048, 61056, 61058, 61061, 61064, 61067, 61070, 
-    61075, 61083, 61086, 61089, 61093, 61096, 61099, 61102, 61107, 61110, 
-    61113, 61118, 61121, 61124, 61129, 61132, 61135, 61140, 61145, 61150, 
-    61153, 61156, 61159, 61162, 61168, 61171, 61174, 61177, 61179, 61182, 
-    61185, 61188, 61193, 61196, 61199, 61202, 61205, 61208, 61213, 61216, 
-    61219, 61222, 61225, 61228, 61231, 61234, 61237, 61240, 61245, 61249, 
-    61256, 61263, 61270, 61277, 61284, 61291, 61298, 61305, 61312, 61320, 
-    61328, 61336, 61344, 61352, 61360, 61368, 61376, 61384, 61392, 61400, 
-    61408, 61416, 61424, 61432, 61440, 61448, 61456, 61464, 61472, 61480, 
-    61488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61491, 61499, 
-    61507, 61517, 61523, 61527, 61531, 61537, 61543, 61548, 61552, 61556, 
-    61560, 61564, 61570, 61574, 61578, 61582, 61592, 61596, 61600, 61606, 
-    61610, 61616, 61620, 61624, 61630, 61636, 61642, 61650, 61658, 61662, 
-    61666, 61670, 61676, 61680, 61689, 61695, 61699, 61703, 61707, 61711, 
-    61715, 61719, 61726, 61732, 61738, 61742, 61748, 61752, 61758, 61766, 
-    61776, 61780, 61788, 61792, 61798, 61806, 61814, 61818, 61822, 61828, 
-    61833, 61839, 61845, 61849, 61853, 61856, 61860, 61864, 61868, 61872, 
-    61876, 61880, 61884, 61887, 61891, 61895, 61899, 61903, 61907, 61911, 
-    61914, 61918, 61922, 61925, 61929, 61933, 61937, 61941, 61945, 61949, 
-    61953, 61957, 61961, 61965, 61969, 61973, 61977, 61981, 61985, 61989, 
-    61993, 61997, 62001, 62005, 62009, 62013, 62017, 62021, 62025, 62029, 
-    62033, 62037, 62041, 62045, 62049, 62053, 62057, 62061, 62065, 62069, 
-    62073, 62077, 62081, 62085, 62089, 62093, 62097, 62101, 62104, 62108, 
-    62112, 62116, 62120, 62124, 62128, 62132, 62136, 62140, 62144, 62148, 
-    62152, 62156, 62160, 62164, 62168, 62172, 62176, 62180, 62184, 62188, 
-    62192, 62196, 62200, 62204, 62208, 62212, 62216, 62220, 62224, 62228, 
-    62232, 62236, 62240, 62244, 62248, 62252, 62256, 62260, 62264, 62268, 
-    62272, 62276, 62280, 62284, 62288, 62292, 62296, 62300, 62304, 62308, 
-    62312, 62316, 62320, 62324, 62328, 62332, 62336, 62340, 62344, 62348, 
-    62352, 62356, 62360, 62364, 62368, 62372, 62376, 62380, 62384, 62388, 
-    62392, 62396, 62400, 62404, 62408, 62412, 62416, 62420, 62424, 62428, 
-    62432, 62436, 62440, 62444, 62448, 62452, 62456, 62460, 62464, 62468, 
-    62472, 62476, 62480, 62484, 62488, 62492, 62496, 62500, 62504, 62508, 
-    62512, 62516, 62520, 62524, 62528, 62532, 62536, 62540, 62544, 62548, 
-    62552, 62556, 62560, 62564, 62568, 62572, 62575, 62579, 62583, 62587, 
-    62591, 62595, 62599, 62603, 62607, 62611, 62615, 62619, 62623, 62627, 
-    62631, 62635, 62639, 62643, 62647, 62651, 62655, 62659, 62663, 62667, 
-    62671, 62675, 62679, 62683, 62687, 62691, 62695, 62699, 62703, 62707, 
-    62711, 62715, 62719, 62723, 62727, 62731, 62735, 62739, 62743, 62747, 
-    62751, 62755, 62759, 62763, 62767, 62771, 62775, 62779, 62783, 62787, 
-    62791, 62795, 62799, 62803, 62807, 62811, 62815, 62819, 62823, 62827, 
-    62831, 62835, 62839, 62843, 62847, 62851, 62855, 62859, 62863, 62867, 
-    62871, 62875, 62879, 62883, 62887, 62891, 62895, 62899, 62903, 62907, 
-    62911, 62915, 62919, 62923, 62927, 62931, 62935, 62939, 62943, 62947, 
-    62951, 62955, 62959, 62963, 62967, 62971, 62975, 62979, 62983, 62987, 
-    62991, 62995, 62999, 63003, 63007, 63011, 63015, 63019, 63023, 63027, 
-    63031, 63035, 63038, 63042, 63046, 63050, 63054, 63058, 63062, 63066, 
-    63070, 63074, 63078, 63082, 63086, 63090, 63094, 63098, 63102, 63106, 
-    63110, 63114, 63118, 63122, 63126, 63130, 63134, 63138, 63142, 63146, 
-    63150, 63154, 63158, 63162, 63166, 63170, 63174, 63178, 63182, 63186, 
-    63190, 63194, 63198, 63202, 63206, 63210, 63214, 63218, 63222, 63226, 
-    63230, 63234, 63238, 63242, 63246, 63250, 63254, 63258, 63262, 63266, 
-    63270, 63274, 63278, 63282, 63286, 63290, 63294, 63298, 63302, 63306, 
-    63310, 63314, 63318, 63322, 63326, 63330, 63334, 63338, 63342, 63346, 
-    63350, 63354, 63358, 63362, 63366, 63370, 63374, 63378, 63382, 63386, 
-    63390, 63394, 63397, 63401, 63405, 63409, 63413, 63417, 63421, 63425, 
-    63429, 63433, 63437, 63441, 63445, 63449, 63453, 63457, 63461, 63465, 
-    63469, 63473, 63477, 63481, 63485, 63489, 63493, 63497, 63501, 63505, 
-    63509, 63513, 63517, 63521, 63525, 63529, 63533, 63537, 63541, 63545, 
-    63549, 63553, 63557, 63561, 63565, 63569, 63573, 63577, 63581, 63585, 
-    63589, 63593, 63597, 63601, 63605, 63609, 63613, 63617, 63621, 63625, 
-    63629, 63633, 63637, 63641, 63645, 63649, 63653, 63657, 63661, 63665, 
-    63669, 63673, 63677, 63681, 63685, 63689, 63693, 63697, 63701, 63705, 
-    63709, 63713, 63717, 63721, 63725, 63729, 63733, 63737, 63741, 63745, 
-    63749, 63753, 63757, 63761, 63765, 63769, 63773, 63777, 63781, 63785, 
-    63789, 63793, 63797, 63801, 63805, 63809, 63813, 63817, 63821, 63825, 
-    63829, 63833, 63837, 63841, 63845, 63849, 63853, 63857, 63861, 63865, 
-    63869, 63873, 63877, 63881, 63885, 63889, 63892, 63896, 63900, 63904, 
-    63908, 63912, 63916, 63920, 63924, 63928, 63932, 63936, 63940, 63944, 
-    63948, 63952, 63956, 63960, 63964, 63968, 63972, 63976, 63980, 63984, 
-    63988, 63992, 63996, 64000, 64004, 64008, 64012, 64016, 64020, 64024, 
-    64028, 64032, 64036, 64040, 64044, 64048, 64052, 64056, 64060, 64064, 
-    64068, 64072, 64076, 64080, 64084, 64088, 64092, 64096, 64100, 64104, 
-    64108, 64112, 64116, 64120, 64124, 64128, 64132, 64136, 64140, 64144, 
-    64148, 64152, 64156, 64160, 64164, 64168, 64172, 64176, 64180, 64184, 
-    64188, 64192, 64196, 64200, 64204, 64208, 64212, 64216, 64220, 64224, 
-    64228, 64232, 64236, 64240, 64244, 64248, 64252, 64256, 64260, 64264, 
-    64268, 64272, 64276, 64280, 64284, 64288, 64292, 64296, 64300, 64304, 
-    64308, 64312, 64316, 64320, 64324, 64328, 64332, 64336, 64340, 64344, 
-    64347, 64351, 64355, 64359, 64363, 64367, 64371, 64375, 64379, 64383, 
-    64387, 64391, 64395, 64399, 64403, 64407, 64411, 64415, 64419, 64423, 
-    64427, 64431, 64435, 64439, 64443, 64447, 64451, 64455, 64459, 64463, 
-    64467, 64471, 64475, 64479, 64483, 64487, 64491, 64495, 64499, 64503, 
-    64507, 64511, 64515, 64519, 64523, 64527, 64531, 64535, 64539, 64543, 
-    64547, 64551, 64555, 64559, 64563, 64567, 64571, 64575, 64579, 64583, 
-    64587, 64591, 64595, 64599, 64603, 64607, 64611, 64615, 64619, 64623, 
-    64627, 64631, 64635, 64639, 64643, 64647, 64651, 64655, 64659, 64663, 
-    64667, 64671, 64675, 64679, 64683, 64687, 64691, 64695, 64699, 64703, 
-    64707, 64711, 64715, 64719, 64723, 64727, 64731, 64735, 64739, 64743, 
-    64747, 64751, 64755, 64759, 64763, 64767, 64771, 64775, 64779, 64783, 
-    64787, 64791, 64795, 64799, 64803, 64807, 64811, 64815, 64819, 64823, 
-    64827, 64831, 64835, 64839, 64843, 64847, 64851, 64855, 64859, 64863, 
-    64867, 64871, 64875, 64879, 64883, 64887, 64891, 64895, 64899, 64903, 
-    64907, 64911, 64915, 64919, 64923, 64927, 64931, 64935, 64939, 64943, 
-    64947, 64950, 64954, 64958, 64962, 64966, 64970, 64974, 64978, 64982, 
-    64986, 64990, 64994, 64998, 65002, 65006, 65010, 65014, 65018, 65022, 
-    65026, 65030, 65034, 65038, 65042, 65046, 65050, 65054, 65058, 65062, 
-    65066, 65070, 65074, 65078, 65082, 65086, 65090, 65094, 65098, 65102, 
-    65106, 65110, 65114, 65118, 65122, 65126, 65130, 65134, 65138, 65142, 
-    65146, 65150, 65154, 65158, 65162, 65166, 65170, 65174, 65178, 65182, 
-    65186, 65190, 65194, 65198, 65202, 65206, 65210, 65214, 65218, 65222, 
-    65226, 65230, 65234, 65238, 65242, 65246, 65250, 65254, 65258, 65262, 
-    65266, 65270, 65274, 65278, 65282, 65286, 65290, 65294, 65298, 65302, 
-    65306, 65310, 65314, 65318, 65322, 65326, 65330, 65334, 65338, 65342, 
-    65346, 65350, 65354, 65358, 65362, 65366, 65370, 65374, 65378, 65382, 
-    65386, 65390, 65394, 65398, 65402, 65406, 65410, 65414, 65418, 65422, 
-    65426, 65430, 65434, 65438, 65442, 65446, 65450, 65454, 65458, 65462, 
-    65466, 65470, 65474, 65478, 65482, 65486, 65490, 65494, 65498, 65502, 
-    65506, 65510, 65514, 65518, 65522, 65526, 65530, 65534, 65538, 65542, 
-    65546, 65550, 65554, 65558, 65562, 65566, 65570, 65574, 65578, 65582, 
-    65586, 65590, 65594, 65598, 65602, 65606, 65610, 65614, 65618, 65622, 
-    65626, 65630, 65634, 65638, 65642, 65646, 65650, 65654, 65658, 65662, 
-    65666, 65670, 65674, 65678, 65682, 65686, 65690, 65694, 65698, 65702, 
-    65706, 65709, 65713, 65717, 65721, 65725, 65729, 65733, 65737, 65741, 
-    65745, 65749, 65753, 65757, 65761, 65765, 65769, 65773, 65777, 65781, 
-    65785, 65789, 65793, 65797, 65801, 65805, 65809, 65813, 65817, 65821, 
-    65825, 65829, 65833, 65837, 65841, 65845, 65849, 65853, 65857, 65861, 
-    65865, 65869, 65873, 65877, 65881, 65885, 65889, 65893, 65897, 65901, 
-    65905, 65909, 65913, 65917, 65921, 65925, 65929, 65933, 65937, 65941, 
-    65945, 65949, 65953, 65957, 65961, 65965, 65969, 65973, 65977, 65981, 
-    65985, 65989, 65993, 65997, 66001, 66005, 66009, 66013, 66017, 66021, 
-    66025, 66029, 66033, 66037, 66041, 66045, 66049, 66053, 66057, 66061, 
-    66065, 66069, 66073, 66077, 66081, 66085, 66089, 66093, 66097, 66101, 
-    66105, 66109, 66113, 66117, 66121, 66125, 66129, 66133, 66137, 66141, 
-    66145, 66149, 66153, 66157, 66161, 66165, 66169, 66173, 66177, 66181, 
-    66185, 66189, 66193, 66197, 66201, 66205, 66209, 66213, 66217, 66221, 
-    66225, 66229, 66233, 66237, 66241, 66245, 66249, 66253, 66257, 66261, 
-    66265, 66269, 66273, 66277, 66281, 66285, 66289, 66293, 66297, 66301, 
-    66305, 66309, 66313, 66317, 66321, 66325, 66329, 66333, 66337, 66341, 
-    66345, 66349, 66353, 66357, 66361, 66365, 66369, 66373, 66377, 66381, 
-    66385, 66389, 66393, 66397, 66401, 66405, 66409, 66413, 66417, 66421, 
-    66425, 66429, 66433, 66437, 66441, 66445, 66449, 66453, 66457, 66461, 
-    66465, 66469, 66473, 66477, 66481, 66485, 66489, 0, 0, 0, 66493, 66497, 
-    66501, 66505, 66509, 66513, 66517, 66521, 66525, 66529, 66533, 66537, 
-    66541, 66545, 66549, 66553, 66557, 66561, 66565, 66569, 66573, 66577, 
-    66581, 66585, 66589, 66593, 66597, 66601, 66605, 66609, 66613, 66617, 
-    66621, 66625, 66629, 66633, 66637, 66641, 66645, 66649, 66653, 66657, 
-    66661, 66665, 66669, 66673, 66677, 66681, 66685, 66689, 66693, 66697, 
-    66701, 66705, 66709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66713, 66718, 66722, 
-    66727, 66732, 66737, 66742, 66747, 66751, 66756, 66761, 66766, 66771, 
-    66776, 66781, 66786, 66790, 66794, 66799, 66804, 66809, 66814, 66819, 
-    66823, 66828, 66833, 66838, 66843, 66848, 66852, 66857, 66861, 66866, 
-    66870, 66875, 66879, 66883, 66887, 66892, 66897, 66902, 66910, 66918, 
-    66926, 66934, 66941, 66949, 66955, 66963, 66967, 66971, 66975, 66979, 
-    66983, 66987, 66991, 66995, 66999, 67003, 67007, 67011, 67015, 67019, 
-    67023, 67027, 67031, 67035, 67039, 67043, 67047, 67051, 67055, 67059, 
-    67063, 67067, 67071, 67075, 67079, 67083, 67087, 67091, 67095, 67099, 
-    67103, 67107, 67110, 67114, 67118, 67122, 67126, 67130, 67134, 67138, 
-    67142, 67146, 67150, 67154, 67158, 67162, 67166, 67170, 67174, 67178, 
-    67182, 67186, 67190, 67194, 67198, 67202, 67206, 67210, 67214, 67218, 
-    67222, 67226, 67230, 67234, 67238, 67242, 67246, 67250, 67254, 67257, 
-    67261, 67265, 67268, 67272, 67276, 67280, 67283, 67287, 67291, 67295, 
-    67299, 67303, 67307, 67311, 67315, 67319, 67323, 67327, 67331, 67335, 
-    67339, 67342, 67346, 67350, 67354, 67358, 67362, 67366, 67370, 67374, 
-    67378, 67381, 67384, 67388, 67392, 67396, 67399, 67402, 67406, 67410, 
-    67414, 67418, 67422, 67426, 67430, 67434, 67438, 67442, 67446, 67450, 
-    67454, 67458, 67462, 67466, 67470, 67474, 67478, 67482, 67486, 67490, 
-    67494, 67498, 67502, 67506, 67510, 67514, 67518, 67522, 67526, 67530, 
-    67534, 67538, 67542, 67546, 67550, 67553, 67557, 67561, 67565, 67569, 
-    67573, 67577, 67581, 67585, 67589, 67593, 67597, 67601, 67605, 67609, 
-    67613, 67617, 67621, 67625, 67629, 67633, 67637, 67641, 67645, 67649, 
-    67653, 67657, 67661, 67665, 67669, 67673, 67677, 67681, 67685, 67689, 
-    67693, 67697, 67700, 67704, 67708, 67712, 67716, 67720, 67724, 67728, 
-    67732, 67736, 67740, 67744, 67748, 67752, 67756, 67760, 67764, 67767, 
-    67771, 67775, 67779, 67783, 67787, 67791, 67795, 67799, 67803, 67807, 
-    67811, 67815, 67819, 67823, 67827, 67831, 67835, 67839, 67843, 67847, 
-    67851, 67854, 67858, 67862, 67866, 67870, 67874, 67878, 67882, 67886, 
-    67890, 67894, 67898, 67902, 67906, 67910, 67914, 67918, 67922, 67926, 
-    67930, 67934, 67938, 67942, 67946, 67950, 67954, 67958, 67962, 67966, 
-    67970, 67974, 67978, 67982, 67986, 67990, 67994, 67998, 68002, 68006, 
-    68010, 68014, 68018, 68022, 68026, 68029, 68034, 68038, 68044, 68049, 
-    68055, 68059, 68063, 68067, 68071, 68075, 68079, 68083, 68087, 68091, 
-    68095, 68099, 68103, 68107, 68111, 68114, 68117, 68120, 68123, 68126, 
-    68129, 68132, 68135, 68138, 68143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 68149, 68154, 68159, 68164, 68169, 68175, 68181, 
-    68186, 68191, 68196, 68201, 68208, 68215, 68222, 68229, 68236, 68243, 
-    68253, 68263, 68270, 68277, 68283, 68289, 68295, 68301, 68310, 68319, 
-    68326, 68333, 68344, 68355, 68360, 0, 0, 68365, 68372, 68379, 68386, 
-    68393, 68400, 68407, 68413, 68419, 68425, 68431, 68438, 68445, 68450, 
-    68454, 68461, 68468, 68475, 0, 0, 0, 0, 0, 0, 0, 0, 68479, 68483, 68487, 
-    68490, 68493, 68498, 68503, 68508, 68513, 68518, 68523, 68528, 68533, 
-    68538, 68543, 68552, 68561, 68566, 68571, 68576, 68581, 68586, 68591, 
-    68596, 68601, 68606, 68611, 68616, 0, 0, 0, 0, 0, 0, 0, 0, 68621, 68624, 
-    68627, 68630, 68634, 68638, 68642, 68646, 68649, 68653, 68656, 68660, 
-    68663, 68667, 68671, 68675, 68679, 68683, 68687, 68691, 68694, 68698, 
-    68702, 68706, 68710, 68714, 68718, 68722, 68726, 68730, 68734, 68738, 
-    68742, 68746, 68750, 68753, 68757, 68761, 68765, 68769, 68773, 68777, 
-    68781, 68785, 68789, 68793, 68797, 68801, 68805, 68809, 68813, 68817, 
-    68821, 68825, 68829, 68833, 68837, 68841, 68845, 68849, 68852, 68856, 
-    68860, 68864, 68868, 68872, 68876, 68880, 68883, 68887, 68891, 68895, 
-    68899, 68903, 68907, 68911, 68915, 68919, 68923, 68927, 68931, 68936, 
-    68941, 68944, 68949, 68952, 68955, 68958, 0, 0, 0, 0, 0, 0, 0, 0, 68962, 
-    68971, 68980, 68989, 68998, 69007, 69016, 69025, 69034, 69042, 69049, 
-    69057, 69064, 69072, 69082, 69091, 69101, 69110, 69120, 69128, 69135, 
-    69143, 69150, 69158, 69163, 69168, 69173, 69182, 69188, 69194, 69201, 
-    69210, 69218, 69226, 69234, 69241, 69248, 69255, 69262, 69267, 69272, 
-    69277, 69282, 69287, 69292, 69297, 69302, 69310, 69318, 69324, 69329, 
-    69334, 69339, 69344, 69349, 69354, 69359, 69364, 69369, 69377, 69385, 
-    69390, 69395, 69404, 69413, 69420, 69427, 69436, 69445, 69456, 69467, 
-    69473, 69479, 69487, 69495, 69504, 69513, 69520, 69527, 69532, 69537, 
-    69548, 69559, 69567, 69575, 69585, 69595, 69606, 69617, 69626, 69635, 
-    69642, 69649, 69656, 69663, 69672, 69681, 69686, 69691, 69698, 69705, 
-    69712, 69719, 69730, 69741, 69746, 69751, 69756, 69761, 69766, 69771, 
-    69776, 69781, 69785, 69790, 69795, 69800, 69805, 69810, 69816, 69821, 
-    69826, 69833, 69840, 69847, 69854, 69861, 69869, 69877, 69882, 69887, 
-    69893, 69899, 69905, 69911, 69918, 69925, 69932, 69936, 69943, 69948, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69953, 69960, 69967, 69974, 69982, 
-    69989, 69995, 70001, 70008, 70014, 70020, 70026, 70033, 70040, 70047, 
-    70054, 70061, 70068, 70075, 70082, 70089, 70096, 70103, 70110, 70117, 
-    70124, 70130, 70137, 70144, 70151, 70158, 70165, 70172, 70179, 70186, 
-    70193, 70200, 70207, 70214, 70221, 70228, 70235, 70242, 70249, 70256, 
-    70264, 70272, 70280, 70288, 0, 0, 0, 0, 70296, 70305, 70314, 70323, 
-    70332, 70341, 70350, 70357, 70364, 70371, 0, 0, 0, 0, 0, 0, 70378, 70382, 
-    70387, 70392, 70397, 70402, 70407, 70412, 70417, 70422, 70427, 70432, 
-    70436, 70440, 70445, 70450, 70454, 70459, 70464, 70469, 70474, 70479, 
-    70484, 70489, 70493, 70497, 70502, 70507, 70512, 70516, 70520, 70524, 
-    70528, 70532, 70536, 70541, 70546, 70551, 70556, 70561, 70568, 70574, 
-    70579, 70584, 70589, 70594, 70600, 70607, 70613, 70620, 70626, 70632, 
-    70637, 70644, 70650, 70655, 0, 0, 0, 0, 0, 0, 0, 0, 70661, 70665, 70669, 
-    70672, 70676, 70679, 70683, 70686, 70690, 70694, 70699, 70703, 70708, 
-    70711, 70715, 70719, 70722, 70726, 70730, 70733, 70737, 70741, 70745, 
-    70749, 70753, 70757, 70761, 70765, 70769, 70773, 70777, 70781, 70785, 
-    70789, 70793, 70797, 70801, 70805, 70808, 70811, 70815, 70819, 70823, 
-    70826, 70829, 70832, 70836, 70840, 70844, 70848, 70852, 70855, 70859, 
-    70865, 70870, 70874, 70879, 70883, 70888, 70893, 70899, 70904, 70910, 
-    70914, 70919, 70924, 70928, 70933, 70938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    70942, 70945, 70949, 70953, 70956, 70959, 70962, 70965, 70968, 70971, 
-    70974, 70977, 0, 0, 0, 0, 0, 0, 70980, 70985, 70989, 70993, 70997, 71001, 
-    71005, 71009, 71013, 71017, 71021, 71025, 71029, 71033, 71037, 71041, 
-    71045, 71050, 71055, 71061, 71067, 71074, 71079, 71084, 71090, 71094, 
-    71099, 71102, 0, 0, 0, 0, 71105, 71112, 71118, 71124, 71130, 71136, 
-    71142, 71148, 71154, 71160, 71166, 71172, 71179, 71186, 71193, 71200, 
-    71207, 71214, 71221, 71228, 71235, 71241, 71247, 71254, 71260, 71267, 
-    71274, 71280, 71286, 71293, 71300, 71307, 71313, 71320, 71327, 71333, 
-    71340, 71346, 71353, 71360, 71366, 71372, 71379, 71385, 71392, 71399, 
-    71408, 71415, 71422, 71426, 71431, 71436, 71441, 71446, 71450, 71454, 
-    71459, 71463, 71468, 71473, 71478, 71483, 71487, 71492, 71496, 71501, 
-    71505, 71510, 71515, 71520, 71525, 71529, 71534, 71539, 71544, 71550, 
-    71555, 71561, 71567, 71573, 71580, 71586, 71592, 71599, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 71603, 71608, 71612, 71616, 71620, 71624, 71628, 71632, 
-    71636, 71640, 71644, 71648, 71652, 71656, 71660, 71664, 71668, 71672, 
-    71676, 71680, 71684, 71688, 71692, 71696, 71700, 71704, 71708, 71712, 
-    71716, 71720, 0, 0, 0, 71724, 71728, 71732, 71736, 71740, 71743, 71749, 
-    71752, 71756, 71759, 71765, 71771, 71779, 71782, 71786, 71789, 71792, 
-    71797, 71802, 71806, 71812, 71816, 71820, 71826, 71830, 71836, 71842, 
-    71846, 71850, 71856, 71860, 71866, 71872, 71876, 71882, 71886, 71892, 
-    71895, 71898, 71904, 71908, 71914, 71917, 71920, 71923, 71929, 71933, 
-    71937, 71943, 71949, 71953, 71956, 71962, 71967, 71972, 71977, 71984, 
-    71989, 71996, 72001, 72008, 72013, 72019, 72025, 72031, 72034, 72038, 
-    72042, 72047, 72052, 72057, 72062, 72067, 72072, 72077, 72082, 72089, 
-    72094, 0, 72100, 72103, 72107, 72110, 72113, 72116, 72119, 72122, 72125, 
-    72128, 72131, 0, 0, 0, 0, 72134, 72141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72146, 
-    72149, 72152, 72155, 72158, 72162, 72165, 72168, 72172, 72176, 72180, 
-    72184, 72188, 72192, 72196, 72200, 72204, 72208, 72212, 72216, 72220, 
-    72224, 72228, 72232, 72236, 72239, 72243, 72246, 72250, 72254, 72258, 
-    72262, 72266, 72269, 72273, 72276, 72279, 72283, 72287, 72291, 72295, 
-    72298, 72303, 72307, 72312, 72317, 72321, 72326, 72330, 72335, 72340, 
-    72345, 72350, 72355, 72361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72367, 72372, 
-    72377, 72382, 72389, 72394, 72399, 72403, 72408, 72413, 72417, 72421, 
-    72426, 72432, 0, 0, 72439, 72443, 72446, 72449, 72452, 72455, 72458, 
-    72461, 72464, 72467, 0, 0, 72470, 72475, 72480, 72486, 72493, 72499, 
-    72505, 72511, 72517, 72523, 72529, 72535, 72541, 72547, 72553, 72559, 
-    72564, 72570, 72575, 72581, 72587, 72594, 72600, 72606, 72611, 72618, 
-    72625, 72632, 72638, 72643, 72648, 72653, 0, 0, 0, 0, 72661, 72667, 
-    72673, 72679, 72685, 72691, 72697, 72703, 72709, 72715, 72721, 72727, 
-    72733, 72739, 72745, 72751, 72757, 72763, 72769, 72775, 72781, 72786, 
-    72791, 72797, 72803, 72809, 72815, 72821, 72827, 72833, 72839, 72845, 
-    72851, 72857, 72863, 72869, 72875, 72881, 72887, 72893, 72899, 72905, 
-    72911, 72917, 72923, 72929, 72935, 72940, 72945, 72951, 72956, 72960, 
-    72965, 72969, 72973, 72977, 72983, 72988, 72993, 72998, 73003, 73008, 
-    73013, 73018, 73025, 73032, 73039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73046, 73051, 73056, 73061, 73068, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73075, 
-    73082, 73089, 73096, 73103, 73109, 73115, 73122, 73129, 73136, 73143, 
-    73150, 73157, 73164, 73171, 73178, 73184, 73191, 73198, 73205, 73212, 
-    73219, 73226, 73233, 73240, 73247, 73254, 73261, 73270, 73279, 73288, 
-    73297, 73306, 73315, 73324, 73333, 73341, 73349, 73357, 73365, 73373, 
-    73381, 73389, 73397, 73403, 73411, 0, 0, 73419, 73426, 73432, 73438, 
-    73444, 73450, 73456, 73462, 73468, 73474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73480, 73484, 
-    73488, 73492, 73496, 73500, 73504, 73508, 73512, 73516, 73520, 73524, 
-    73528, 73532, 73536, 73540, 73544, 73548, 73552, 73556, 73560, 73564, 
-    73568, 0, 0, 0, 0, 73572, 73576, 73580, 73584, 73588, 73592, 73596, 
-    73600, 73604, 73608, 73612, 73616, 73620, 73624, 73628, 73632, 73636, 
-    73640, 73644, 73648, 73652, 73656, 73660, 73664, 73668, 73672, 73676, 
-    73680, 73684, 73688, 73692, 73696, 73700, 73704, 73708, 73712, 73716, 
-    73720, 73724, 73728, 73732, 73736, 73740, 73744, 73748, 73752, 73756, 
-    73760, 73764, 0, 0, 0, 0, 73768, 73772, 73776, 73780, 73784, 73788, 
-    73792, 73796, 73800, 73804, 73808, 73812, 73816, 73820, 73824, 73828, 
-    73832, 73836, 73840, 73844, 73848, 73852, 73856, 73860, 73864, 73868, 
-    73872, 73876, 73880, 73884, 73888, 73892, 73896, 73900, 73904, 73908, 
-    73912, 73916, 73920, 73924, 73928, 73932, 73936, 73940, 73944, 73948, 
-    73952, 73956, 73960, 73964, 73968, 73972, 73976, 73980, 73984, 73988, 
-    73992, 73996, 74000, 74004, 74008, 74012, 74016, 74020, 74024, 74028, 
-    74032, 74036, 74040, 74044, 74048, 74052, 74056, 74060, 74064, 74068, 
-    74072, 74076, 74080, 74084, 74088, 74092, 74096, 74100, 74104, 74108, 
-    74112, 74116, 74120, 74124, 74128, 74132, 74136, 74140, 74144, 74148, 
-    74152, 74156, 74160, 74164, 74168, 74172, 74176, 74180, 74184, 74188, 
-    74192, 74196, 74200, 74204, 74208, 74212, 74216, 74220, 74224, 74228, 
-    74232, 74236, 74240, 74244, 74248, 74252, 74256, 74260, 74264, 74268, 
-    74272, 74276, 74280, 74284, 74288, 74292, 74296, 74300, 74304, 74308, 
-    74312, 74316, 74320, 74324, 74328, 74332, 74336, 74340, 74344, 74348, 
-    74352, 74356, 74360, 74364, 74368, 74372, 74376, 74380, 74384, 74388, 
-    74392, 74396, 74400, 74404, 74408, 74412, 74416, 74420, 74424, 74428, 
-    74432, 74436, 74440, 74444, 74448, 74452, 74456, 74460, 74464, 74468, 
-    74472, 74476, 74480, 74484, 74488, 74492, 74496, 74500, 74504, 74508, 
-    74512, 74516, 74520, 74524, 74528, 74532, 74536, 74540, 74544, 74548, 
-    74552, 74556, 74560, 74564, 74568, 74572, 74576, 74580, 74584, 74588, 
-    74592, 74596, 74600, 74604, 74608, 74612, 74616, 74620, 74624, 74628, 
-    74632, 74636, 74640, 74644, 74648, 74652, 74656, 74660, 74664, 74668, 
-    74672, 74676, 74680, 74684, 74688, 74692, 74696, 74700, 74704, 74708, 
-    74712, 74716, 74720, 74724, 74728, 74732, 74736, 74740, 74744, 74748, 
-    74752, 74756, 74760, 74764, 74768, 74772, 74776, 74780, 74784, 74788, 
-    74792, 74796, 74800, 74804, 74808, 74812, 74816, 74820, 74824, 74828, 
-    74832, 74836, 74840, 74844, 74848, 74852, 74856, 74860, 74864, 74868, 
-    74872, 74876, 74880, 74884, 74888, 74892, 74896, 74900, 74904, 74908, 
-    74912, 74916, 74920, 74924, 74928, 74932, 74936, 74940, 74944, 74948, 
-    74952, 74956, 74960, 74964, 74968, 74972, 0, 0, 74976, 74980, 74984, 
-    74988, 74992, 74996, 75000, 75004, 75008, 75012, 75016, 75020, 75024, 
-    75028, 75032, 75036, 75040, 75044, 75048, 75052, 75056, 75060, 75064, 
-    75068, 75072, 75076, 75080, 75084, 75088, 75092, 75096, 75100, 75104, 
-    75108, 75112, 75116, 75120, 75124, 75128, 75132, 75136, 75140, 75144, 
-    75148, 75152, 75156, 75160, 75164, 75168, 75172, 75176, 75180, 75184, 
-    75188, 75192, 75196, 75200, 75204, 75208, 75212, 75216, 75220, 0, 0, 
-    75224, 75228, 75232, 75236, 75240, 75244, 75248, 75252, 75256, 75260, 
-    75264, 75268, 75272, 75276, 75280, 75284, 75288, 75292, 75296, 75300, 
-    75304, 75308, 75312, 75316, 75320, 75324, 75328, 75332, 75336, 75340, 
-    75344, 75348, 75352, 75356, 75360, 75364, 75368, 75372, 75376, 75380, 
-    75384, 75388, 75392, 75396, 75400, 75404, 75408, 75412, 75416, 75420, 
-    75424, 75428, 75432, 75436, 75440, 75444, 75448, 75452, 75456, 75460, 
-    75464, 75468, 75472, 75476, 75480, 75484, 75488, 75492, 75496, 75500, 
-    75504, 75508, 75512, 75516, 75520, 75524, 75528, 75532, 75536, 75540, 
-    75544, 75548, 75552, 75556, 75560, 75564, 75568, 75572, 75576, 75580, 
-    75584, 75588, 75592, 75596, 75600, 75604, 75608, 75612, 75616, 75620, 
-    75624, 75628, 75632, 75636, 75640, 75644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 75648, 75653, 75658, 75663, 75668, 75673, 75681, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 75686, 75693, 75700, 75707, 75714, 0, 0, 0, 0, 0, 
-    75721, 75728, 75735, 75745, 75751, 75757, 75763, 75769, 75775, 75781, 
-    75788, 75794, 75800, 75806, 75815, 75824, 75836, 75848, 75854, 75860, 
-    75866, 75873, 75880, 75887, 75894, 75901, 0, 75908, 75915, 75922, 75930, 
-    75937, 0, 75944, 0, 75951, 75958, 0, 75965, 75973, 0, 75980, 75987, 
-    75994, 76001, 76008, 76015, 76022, 76029, 76036, 76043, 76048, 76055, 
-    76062, 76068, 76074, 76080, 76086, 76092, 76098, 76104, 76110, 76116, 
-    76122, 76128, 76134, 76140, 76146, 76152, 76158, 76164, 76170, 76176, 
-    76182, 76188, 76194, 76200, 76206, 76212, 76218, 76224, 76230, 76236, 
-    76242, 76248, 76254, 76260, 76266, 76272, 76278, 76284, 76290, 76296, 
-    76302, 76308, 76314, 76320, 76326, 76332, 76338, 76344, 76350, 76356, 
-    76362, 76368, 76374, 76380, 76386, 76392, 76398, 76404, 76410, 76416, 
-    76422, 76428, 76434, 76440, 76446, 76452, 76458, 76464, 76470, 76476, 
-    76482, 76488, 76494, 76500, 76506, 76512, 76518, 76526, 76534, 76540, 
-    76546, 76552, 76558, 76567, 76576, 76584, 76592, 76600, 76608, 76616, 
-    76624, 76632, 76640, 76647, 76654, 76664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    76674, 76680, 76686, 76692, 76698, 76703, 76708, 76714, 76720, 76726, 
-    76732, 76740, 76746, 76752, 76760, 76768, 76776, 76784, 76789, 76794, 
-    76799, 76804, 76816, 76828, 76838, 76848, 76859, 76870, 76881, 76892, 
-    76902, 76912, 76923, 76934, 76945, 76956, 76966, 76976, 76986, 77001, 
-    77016, 77031, 77038, 77045, 77052, 77059, 77069, 77079, 77089, 77100, 
-    77110, 77118, 77126, 77135, 77143, 77152, 77160, 77168, 77176, 77185, 
-    77193, 77202, 77210, 77218, 77226, 77235, 77243, 77250, 77257, 77264, 
-    77271, 77279, 77287, 77295, 77303, 77311, 77320, 77328, 77336, 77344, 
-    77352, 77360, 77369, 77377, 77385, 77393, 77401, 77409, 77417, 77425, 
-    77433, 77441, 77449, 77458, 77466, 77475, 77483, 77491, 77499, 77508, 
-    77516, 77524, 77532, 77540, 77549, 77558, 77566, 77575, 77583, 77591, 
-    77599, 77608, 77616, 77625, 77633, 77640, 77647, 77655, 77662, 77670, 
-    77677, 77685, 77693, 77702, 77710, 77719, 77727, 77735, 77743, 77752, 
-    77760, 77767, 77774, 77782, 77789, 77797, 77804, 77814, 77824, 77834, 
-    77843, 77852, 77861, 77870, 77879, 77889, 77900, 77911, 77921, 77932, 
-    77943, 77953, 77962, 77971, 77979, 77988, 77997, 78005, 78014, 78023, 
-    78031, 78040, 78049, 78057, 78066, 78075, 78083, 78092, 78101, 78109, 
-    78118, 78126, 78135, 78143, 78151, 78160, 78168, 78177, 78185, 78193, 
-    78202, 78210, 78217, 78224, 78233, 78242, 78250, 78259, 78268, 78276, 
-    78286, 78294, 78302, 78309, 78317, 78325, 78332, 78342, 78352, 78363, 
-    78373, 78384, 78392, 78400, 78409, 78417, 78426, 78434, 78442, 78451, 
-    78459, 78468, 78476, 78483, 78490, 78497, 78504, 78512, 78520, 78528, 
-    78536, 78545, 78553, 78561, 78570, 78578, 78586, 78594, 78603, 78611, 
-    78619, 78627, 78635, 78643, 78651, 78659, 78667, 78675, 78684, 78692, 
-    78700, 78708, 78716, 78724, 78733, 78742, 78750, 78758, 78766, 78775, 
-    78783, 78792, 78799, 78806, 78814, 78821, 78829, 78837, 78846, 78854, 
-    78863, 78871, 78879, 78889, 78896, 78903, 78911, 78918, 78926, 78936, 
-    78947, 78955, 78964, 78972, 78981, 78989, 78998, 79006, 79015, 79023, 
-    79032, 79041, 79049, 79057, 79065, 79074, 79081, 79089, 79098, 79107, 
-    79116, 79125, 79133, 79142, 79150, 79159, 79167, 79176, 79184, 79193, 
-    79201, 79209, 79216, 79224, 79231, 79240, 79248, 79257, 79265, 79274, 
-    79282, 79290, 79298, 79307, 79315, 79324, 79333, 79342, 79351, 79360, 
-    79368, 79377, 79385, 79394, 79402, 79411, 79419, 79428, 79436, 79444, 
-    79451, 79459, 79466, 79475, 79483, 79492, 79500, 79509, 79517, 79525, 
-    79533, 79542, 79550, 79559, 79568, 79577, 79586, 79594, 79602, 79611, 
-    79619, 79628, 79637, 79645, 79653, 79661, 79670, 79678, 79686, 79695, 
-    79703, 79711, 79719, 79727, 79732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 79737, 79747, 79757, 79767, 79777, 79788, 79798, 79808, 79819, 
-    79828, 79837, 79846, 79856, 79866, 79876, 79887, 79897, 79907, 79917, 
-    79927, 79937, 79947, 79957, 79967, 79977, 79987, 79997, 80008, 80019, 
-    80029, 80039, 80050, 80061, 80072, 80082, 80092, 80102, 80112, 80122, 
-    80132, 80142, 80153, 80163, 80173, 80184, 80195, 80206, 80216, 80226, 
-    80236, 80246, 80257, 80267, 80277, 80288, 80299, 80309, 80319, 80328, 
-    80337, 80346, 80355, 80364, 80374, 0, 0, 80384, 80394, 80404, 80414, 
-    80424, 80435, 80445, 80455, 80466, 80476, 80487, 80496, 80505, 80516, 
-    80526, 80537, 80548, 80560, 80570, 80581, 80590, 80600, 80610, 80622, 
-    80632, 80642, 80652, 80662, 80672, 80681, 80690, 80699, 80708, 80718, 
-    80728, 80738, 80748, 80758, 80768, 80778, 80788, 80798, 80808, 80818, 
-    80828, 80837, 80846, 80855, 80865, 80875, 80885, 80895, 80905, 80916, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80926, 80941, 80956, 80962, 
-    80968, 80974, 80980, 80986, 80992, 80998, 81004, 81012, 81016, 81019, 0, 
-    0, 81027, 81030, 81033, 81036, 81039, 81042, 81045, 81048, 81051, 81054, 
-    81057, 81060, 81063, 81066, 81069, 81072, 81075, 81083, 81092, 81103, 
-    81111, 81119, 81128, 81137, 81148, 81160, 0, 0, 0, 0, 0, 0, 81169, 81174, 
-    81179, 81186, 81193, 81199, 81205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81210, 
-    81220, 81230, 81240, 81249, 81260, 81269, 81278, 81288, 81298, 81310, 
-    81322, 81333, 81344, 81355, 81366, 81376, 81386, 81396, 81406, 81417, 
-    81428, 81432, 81437, 81446, 81455, 81459, 81463, 81467, 81472, 81477, 
-    81482, 81487, 81490, 81494, 0, 81499, 81502, 81505, 81509, 81513, 81518, 
-    81522, 81526, 81531, 81536, 81543, 81550, 81553, 81556, 81559, 81562, 
-    81565, 81569, 81573, 0, 81577, 81582, 81586, 81590, 0, 0, 0, 0, 81595, 
-    81600, 81607, 81612, 81617, 0, 81622, 81627, 81632, 81637, 81642, 81647, 
-    81652, 81657, 81662, 81667, 81672, 81677, 81686, 81695, 81703, 81711, 
-    81720, 81729, 81738, 81747, 81755, 81763, 81771, 81779, 81784, 81789, 
-    81795, 81801, 81807, 81813, 81821, 81829, 81835, 81841, 81847, 81853, 
-    81859, 81865, 81871, 81877, 81882, 81887, 81892, 81897, 81902, 81907, 
-    81912, 81917, 81923, 81929, 81935, 81941, 81947, 81953, 81959, 81965, 
-    81971, 81977, 81983, 81989, 81995, 82001, 82007, 82013, 82019, 82025, 
-    82031, 82037, 82043, 82049, 82055, 82061, 82067, 82073, 82079, 82085, 
-    82091, 82097, 82103, 82109, 82115, 82121, 82127, 82133, 82139, 82145, 
-    82151, 82157, 82163, 82169, 82175, 82181, 82187, 82193, 82199, 82205, 
-    82211, 82217, 82223, 82229, 82235, 82241, 82247, 82253, 82259, 82265, 
-    82271, 82277, 82282, 82287, 82292, 82297, 82303, 82309, 82315, 82321, 
-    82327, 82333, 82339, 82345, 82351, 82357, 82363, 82369, 82374, 82379, 
-    82384, 82389, 82401, 82413, 82424, 82435, 82447, 82459, 82467, 0, 0, 
-    82475, 0, 82483, 82487, 82491, 82494, 82498, 82502, 82505, 82508, 82512, 
-    82516, 82519, 82522, 82525, 82528, 82533, 82536, 82540, 82543, 82546, 
-    82549, 82552, 82555, 82558, 82561, 82564, 82567, 82570, 82573, 82577, 
-    82581, 82585, 82589, 82594, 82599, 82605, 82611, 82617, 82622, 82628, 
-    82634, 82640, 82645, 82651, 82657, 82662, 82667, 82672, 82677, 82683, 
-    82689, 82694, 82699, 82705, 82710, 82716, 82722, 82728, 82734, 82740, 
-    82744, 82749, 82753, 82758, 82762, 82767, 82772, 82778, 82784, 82790, 
-    82795, 82801, 82807, 82813, 82818, 82824, 82830, 82835, 82840, 82845, 
-    82850, 82856, 82862, 82867, 82872, 82878, 82883, 82889, 82895, 82901, 
-    82907, 82913, 82918, 82922, 82927, 82930, 82935, 82940, 82946, 82951, 
-    82956, 82960, 82966, 82971, 82976, 82981, 82986, 82991, 82996, 83001, 
-    83007, 83013, 83019, 83027, 83031, 83035, 83039, 83043, 83047, 83051, 
-    83056, 83061, 83066, 83071, 83076, 83081, 83086, 83091, 83096, 83101, 
-    83106, 83111, 83116, 83120, 83124, 83129, 83134, 83139, 83144, 83148, 
-    83153, 83158, 83163, 83168, 83172, 83177, 83182, 83187, 83192, 83196, 
-    83201, 83206, 83210, 83215, 83220, 83225, 83230, 83235, 83239, 83246, 
-    83253, 83257, 83262, 83267, 83272, 83277, 83282, 83287, 83292, 83297, 
-    83302, 83307, 83312, 83317, 83322, 83327, 83332, 83337, 83342, 83347, 
-    83352, 83357, 83362, 83367, 83372, 83377, 83382, 83387, 83392, 83397, 
-    83402, 0, 0, 0, 83407, 83411, 83416, 83420, 83425, 83430, 0, 0, 83434, 
-    83439, 83444, 83448, 83453, 83458, 0, 0, 83463, 83468, 83472, 83477, 
-    83482, 83487, 0, 0, 83492, 83497, 83502, 0, 0, 0, 83506, 83510, 83514, 
-    83517, 83520, 83524, 83528, 0, 83532, 83538, 83541, 83545, 83548, 83552, 
-    83556, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83560, 83566, 83572, 83578, 83584, 
-    0, 0, 83588, 83594, 83600, 83606, 83612, 83618, 83625, 83632, 83639, 
-    83646, 83653, 83660, 0, 83667, 83674, 83681, 83687, 83694, 83701, 83708, 
-    83715, 83721, 83728, 83735, 83742, 83749, 83755, 83762, 83769, 83776, 
-    83783, 83789, 83796, 83803, 83810, 83817, 83824, 83831, 83838, 0, 83845, 
-    83851, 83858, 83865, 83872, 83879, 83886, 83893, 83900, 83907, 83914, 
-    83921, 83928, 83935, 83941, 83948, 83955, 83962, 83969, 0, 83976, 83983, 
-    0, 83990, 83997, 84004, 84011, 84018, 84025, 84032, 84039, 84046, 84053, 
-    84060, 84067, 84074, 84081, 84088, 0, 0, 84094, 84099, 84104, 84109, 
-    84114, 84119, 84124, 84129, 84134, 84139, 84144, 84149, 84154, 84159, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 84164, 84171, 84178, 84185, 84192, 84199, 
-    84206, 84213, 84220, 84227, 84234, 84241, 84248, 84255, 84262, 84269, 
-    84276, 84283, 84290, 84297, 84305, 84313, 84320, 84327, 84332, 84340, 
-    84348, 84355, 84362, 84367, 84374, 84379, 84384, 84391, 84396, 84401, 
-    84406, 84414, 84419, 84424, 84431, 84436, 84441, 84448, 84455, 84460, 
-    84465, 84470, 84475, 84480, 84485, 84490, 84495, 84500, 84507, 84512, 
-    84519, 84524, 84529, 84534, 84539, 84544, 84549, 84554, 84559, 84564, 
-    84569, 84574, 84581, 84588, 84595, 84602, 84608, 84613, 84620, 84625, 
-    84630, 84639, 84646, 84655, 84662, 84667, 84672, 84680, 84685, 84690, 
-    84695, 84700, 84705, 84712, 84717, 84722, 84727, 84732, 84737, 84744, 
-    84751, 84758, 84765, 84772, 84779, 84786, 84793, 84800, 84807, 84814, 
-    84821, 84828, 84835, 84842, 84849, 84856, 84863, 84870, 84877, 84884, 
-    84891, 84898, 84905, 84912, 84919, 84926, 84933, 0, 0, 0, 0, 0, 84940, 
-    84948, 84956, 0, 0, 0, 0, 84961, 84965, 84969, 84973, 84977, 84981, 
-    84985, 84989, 84993, 84997, 85002, 85007, 85012, 85017, 85022, 85027, 
-    85032, 85037, 85042, 85048, 85054, 85060, 85067, 85074, 85081, 85088, 
-    85095, 85102, 85108, 85114, 85120, 85127, 85134, 85141, 85148, 85155, 
-    85162, 85169, 85176, 85183, 85190, 85197, 85204, 85211, 85218, 0, 0, 0, 
-    85225, 85233, 85241, 85249, 85257, 85265, 85275, 85285, 85293, 85301, 
-    85309, 85317, 85325, 85331, 85338, 85347, 85356, 85365, 85374, 85383, 
-    85392, 85402, 85413, 85423, 85434, 85443, 85452, 85461, 85471, 85482, 
-    85492, 85503, 85514, 85523, 85531, 85537, 85543, 85549, 85555, 85563, 
-    85571, 85577, 85584, 85594, 85601, 85608, 85615, 85622, 85629, 85639, 
-    85646, 85653, 85661, 85669, 85678, 85687, 85696, 85705, 85714, 85722, 
-    85731, 85740, 85749, 85753, 85760, 85765, 85770, 85774, 85778, 85782, 
-    85786, 85791, 85796, 85802, 85808, 85812, 85818, 85822, 85826, 85830, 
-    85834, 85838, 85842, 85848, 0, 0, 0, 0, 0, 85852, 85857, 85862, 85867, 
-    85872, 85879, 85884, 85889, 85894, 85899, 85904, 85909, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85914, 
-    85921, 85930, 85939, 85946, 85953, 85960, 85967, 85974, 85981, 85987, 
-    85994, 86001, 86008, 86015, 86022, 86029, 86036, 86043, 86052, 86059, 
-    86066, 86073, 86080, 86087, 86094, 86101, 86108, 86117, 86124, 86131, 
-    86138, 86145, 86152, 86159, 86168, 86175, 86182, 86189, 86196, 86205, 
-    86212, 86219, 86226, 86234, 86243, 0, 0, 86252, 86256, 86260, 86265, 
-    86270, 86275, 86280, 86284, 86289, 86294, 86299, 86304, 86309, 86314, 
-    86318, 86322, 86326, 86331, 86336, 86340, 86345, 86350, 86354, 86358, 
-    86363, 86368, 86373, 86378, 86383, 0, 0, 0, 86388, 86392, 86397, 86402, 
-    86406, 86411, 86415, 86420, 86425, 86430, 86435, 86439, 86443, 86448, 
-    86453, 86458, 86463, 86467, 86472, 86476, 86481, 86486, 86490, 86495, 
-    86500, 86505, 86509, 86513, 86518, 86523, 86528, 86533, 86538, 86543, 
-    86548, 86553, 86558, 86563, 86568, 86573, 86578, 86583, 86588, 86593, 
-    86598, 86603, 86608, 86613, 86618, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86623, 86627, 86632, 86637, 86642, 86646, 
-    86651, 86656, 86661, 86666, 86670, 86674, 86679, 86684, 86689, 86694, 
-    86698, 86703, 86708, 86713, 86718, 86723, 86728, 86732, 86737, 86742, 
-    86747, 86752, 86757, 86762, 86767, 0, 86772, 86777, 86782, 86788, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86794, 86799, 86804, 86809, 86814, 86819, 
-    86824, 86829, 86834, 86839, 86844, 86849, 86854, 86859, 86864, 86869, 
-    86874, 86879, 86884, 86889, 86894, 86899, 86904, 86909, 86914, 86919, 
-    86924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 86931, 86936, 86941, 86946, 86951, 86956, 86961, 
-    86966, 86971, 86976, 86981, 86986, 86991, 86996, 87001, 87006, 87011, 
-    87016, 87021, 87026, 87031, 87036, 87041, 87046, 87051, 87056, 87061, 
-    87065, 87069, 87073, 0, 87078, 87084, 87089, 87094, 87099, 87104, 87110, 
-    87116, 87122, 87128, 87134, 87140, 87146, 87152, 87158, 87164, 87170, 
-    87176, 87182, 87187, 87193, 87199, 87204, 87210, 87215, 87221, 87227, 
-    87232, 87238, 87244, 87249, 87255, 87261, 87267, 87273, 87279, 87285, 0, 
-    0, 0, 0, 87290, 87296, 87302, 87308, 87314, 87320, 87326, 87332, 87338, 
-    87345, 87350, 87355, 87361, 87367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 87373, 87378, 87383, 87388, 87394, 87399, 87405, 87411, 
-    87417, 87423, 87430, 87436, 87443, 87448, 87453, 87458, 87463, 87468, 
-    87473, 87478, 87483, 87488, 87493, 87498, 87503, 87508, 87513, 87518, 
-    87523, 87528, 87533, 87538, 87543, 87548, 87553, 87558, 87563, 87568, 
-    87573, 87578, 87583, 87588, 87593, 87598, 87604, 87609, 87615, 87621, 
-    87627, 87633, 87640, 87646, 87653, 87658, 87663, 87668, 87673, 87678, 
-    87683, 87688, 87693, 87698, 87703, 87708, 87713, 87718, 87723, 87728, 
-    87733, 87738, 87743, 87748, 87753, 87758, 87763, 87768, 87773, 87778, 
-    87783, 87788, 87793, 87798, 87803, 87808, 87813, 87818, 87823, 87828, 
-    87833, 87838, 87843, 87848, 87853, 87858, 87863, 87868, 87873, 87878, 
-    87883, 87888, 87893, 87898, 87903, 87908, 87913, 87918, 87923, 87928, 
-    87933, 87938, 87943, 87948, 87953, 87958, 87963, 87968, 87973, 87978, 
-    87983, 87988, 87993, 87998, 88003, 88008, 88013, 88018, 88023, 88028, 
-    88033, 88038, 88043, 88048, 88053, 88058, 88063, 88068, 88072, 88077, 
-    88082, 88087, 88092, 88097, 88102, 88107, 88112, 88117, 88122, 88127, 
-    88132, 88136, 88140, 88144, 88148, 88152, 88156, 88160, 88165, 88170, 0, 
-    0, 88175, 88180, 88184, 88188, 88192, 88196, 88200, 88204, 88208, 88212, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88216, 88220, 88224, 88228, 
-    88232, 88236, 0, 0, 88241, 0, 88246, 88250, 88255, 88260, 88265, 88270, 
-    88275, 88280, 88285, 88290, 88295, 88299, 88304, 88309, 88314, 88319, 
-    88323, 88328, 88333, 88338, 88343, 88347, 88352, 88357, 88362, 88367, 
-    88371, 88376, 88381, 88386, 88391, 88396, 88401, 88406, 88411, 88416, 
-    88421, 88426, 88431, 88435, 88440, 88445, 88450, 88455, 0, 88460, 88465, 
-    0, 0, 0, 88470, 0, 0, 88475, 88480, 88487, 88494, 88501, 88508, 88515, 
-    88522, 88529, 88536, 88543, 88550, 88557, 88564, 88571, 88578, 88585, 
-    88592, 88599, 88606, 88613, 88620, 88627, 0, 88634, 88641, 88647, 88653, 
-    88659, 88666, 88673, 88681, 88689, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88698, 88703, 
-    88708, 88713, 88718, 88723, 88728, 88733, 88738, 88743, 88748, 88753, 
-    88758, 88763, 88768, 88773, 88778, 88783, 88788, 88793, 88798, 88803, 
-    88808, 88812, 88817, 88822, 88828, 88832, 0, 0, 0, 88836, 88842, 88846, 
-    88851, 88856, 88861, 88865, 88870, 88874, 88879, 88884, 88888, 88892, 
-    88896, 88900, 88904, 88909, 88914, 88918, 88923, 88928, 88932, 88937, 
-    88942, 88947, 88952, 88957, 0, 0, 0, 0, 0, 88962, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 88967, 88970, 88974, 88978, 0, 88983, 88987, 0, 
-    0, 0, 0, 0, 88991, 88996, 89002, 89006, 89010, 89013, 89017, 89021, 0, 
-    89025, 89029, 89033, 0, 89037, 89041, 89045, 89049, 89053, 89057, 89061, 
-    89065, 89069, 89073, 89077, 89080, 89083, 89087, 89091, 89095, 89098, 
-    89101, 89104, 89108, 89112, 89116, 89120, 89124, 89128, 89131, 89135, 0, 
-    0, 0, 0, 89139, 89144, 89148, 0, 0, 0, 0, 89152, 89155, 89158, 89161, 
-    89164, 89167, 89171, 89175, 89180, 0, 0, 0, 0, 0, 0, 0, 0, 89185, 89190, 
-    89196, 89201, 89207, 89212, 89217, 89222, 89228, 0, 0, 0, 0, 0, 0, 0, 
-    89233, 89241, 89249, 89257, 89265, 89273, 89281, 89289, 89297, 89305, 
-    89313, 89321, 89329, 89337, 89345, 89353, 89361, 89369, 89377, 89385, 
-    89393, 89401, 89409, 89417, 89425, 89433, 89441, 89449, 89457, 89465, 
-    89472, 89480, 89488, 89492, 89497, 89502, 89507, 89512, 89517, 89522, 
-    89527, 89531, 89536, 89540, 89545, 89549, 89554, 89558, 89563, 89568, 
-    89573, 89578, 89583, 89588, 89593, 89598, 89603, 89608, 89613, 89618, 
-    89623, 89628, 89633, 89638, 89643, 89648, 89653, 89658, 89663, 89668, 
-    89673, 89678, 89683, 89688, 89693, 89698, 89703, 89708, 89713, 89718, 
-    89723, 89728, 89733, 89738, 89743, 89748, 0, 0, 0, 89753, 89758, 89767, 
-    89775, 89784, 89793, 89804, 89815, 89822, 89829, 89836, 89843, 89850, 
-    89857, 89864, 89871, 89878, 89885, 89892, 89899, 89906, 89913, 89920, 
-    89927, 89934, 89941, 89948, 89955, 89962, 0, 0, 89969, 89975, 89981, 
-    89987, 89993, 90000, 90007, 90015, 90023, 90030, 90037, 90044, 90051, 
-    90058, 90065, 90072, 90079, 90086, 90093, 90100, 90107, 90114, 90121, 
-    90128, 90135, 90142, 90149, 0, 0, 0, 0, 0, 90156, 90162, 90168, 90174, 
-    90180, 90187, 90194, 90202, 90210, 90216, 90222, 90229, 90235, 90241, 
-    90247, 90253, 90260, 90267, 90274, 90281, 90288, 90295, 90302, 90309, 
-    90316, 90323, 90330, 90337, 90344, 90351, 90358, 90365, 90372, 90379, 
-    90386, 90393, 90400, 90407, 90414, 90421, 90428, 90435, 90442, 90449, 
-    90456, 90463, 90470, 90477, 90484, 90491, 90498, 90505, 90512, 90519, 
-    90526, 90533, 90540, 90547, 90554, 90561, 90568, 90575, 90582, 90589, 
-    90596, 90603, 90610, 90617, 90624, 90631, 90638, 90645, 90652, 90659, 
-    90666, 90673, 90680, 90687, 90694, 90701, 90708, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    90715, 90719, 90723, 90727, 90731, 90735, 90739, 90743, 90747, 90751, 
-    90756, 90761, 90766, 90771, 90776, 90781, 90786, 90791, 90796, 90802, 
-    90808, 90814, 90821, 90828, 90835, 90842, 90849, 90856, 90863, 90870, 
-    90877, 0, 90884, 90888, 90892, 90896, 90899, 90903, 90906, 90910, 90913, 
-    90917, 90920, 90924, 90927, 90931, 90934, 90938, 90942, 90946, 90950, 
-    90954, 90958, 90962, 90966, 90970, 90974, 90978, 90982, 90986, 90990, 
-    90994, 90998, 91002, 91006, 91010, 91014, 91017, 91020, 91024, 91028, 
-    91032, 91035, 91038, 91041, 91045, 91049, 91053, 91057, 91061, 91064, 
-    91069, 91073, 91078, 91082, 91087, 91091, 91096, 91100, 91105, 91109, 
-    91113, 91117, 91121, 91124, 91128, 91133, 91136, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 91140, 91143, 91148, 91154, 91162, 91167, 91173, 91181, 
-    91187, 91193, 91197, 91201, 91208, 91217, 91224, 91233, 91239, 91248, 
-    91255, 91262, 91269, 91279, 91285, 91289, 91296, 91305, 91315, 91322, 
-    91329, 91333, 91337, 91344, 91354, 91358, 91365, 91372, 91379, 91385, 
-    91392, 91399, 91406, 91413, 91417, 91421, 91425, 91432, 91436, 91443, 
-    91450, 91464, 91473, 91477, 91481, 91485, 91492, 91496, 91500, 91504, 
-    91512, 91520, 91539, 91549, 91569, 91573, 91577, 91581, 91585, 91589, 
-    91593, 91597, 91604, 91608, 91611, 91615, 91619, 91625, 91632, 91641, 
-    91645, 91654, 91663, 91671, 91675, 91682, 91686, 91690, 91694, 91698, 
-    91709, 91718, 91727, 91736, 91745, 91757, 91766, 91775, 91784, 91792, 
-    91801, 91813, 91822, 91831, 91840, 91852, 91861, 91870, 91882, 91891, 
-    91900, 91912, 91921, 91925, 91929, 91933, 91937, 91941, 91945, 91949, 
-    91956, 91960, 91964, 91975, 91979, 91983, 91990, 91996, 92002, 92006, 
-    92013, 92017, 92021, 92025, 92029, 92033, 92037, 92043, 92051, 92055, 
-    92059, 92062, 92068, 92078, 92082, 92094, 92101, 92108, 92115, 92122, 
-    92128, 92132, 92136, 92140, 92144, 92151, 92160, 92167, 92175, 92183, 
-    92189, 92193, 92197, 92201, 92205, 92211, 92220, 92232, 92239, 92246, 
-    92255, 92266, 92272, 92281, 92290, 92297, 92306, 92313, 92320, 92330, 
-    92337, 92344, 92351, 92358, 92362, 92368, 92372, 92383, 92391, 92400, 
-    92412, 92419, 92426, 92436, 92443, 92452, 92459, 92468, 92475, 92482, 
-    92492, 92499, 92506, 92516, 92523, 92535, 92544, 92551, 92558, 92565, 
-    92574, 92584, 92597, 92604, 92614, 92624, 92631, 92640, 92653, 92660, 
-    92667, 92674, 92684, 92694, 92701, 92711, 92718, 92725, 92735, 92741, 
-    92748, 92755, 92762, 92772, 92779, 92786, 92793, 92799, 92806, 92816, 
-    92823, 92827, 92835, 92839, 92851, 92855, 92869, 92873, 92877, 92881, 
-    92885, 92891, 92898, 92906, 92910, 92914, 92918, 92922, 92929, 92933, 
-    92939, 92945, 92953, 92957, 92964, 92972, 92976, 92980, 92986, 92990, 
-    92999, 93008, 93015, 93025, 93031, 93035, 93039, 93047, 93054, 93061, 
-    93067, 93071, 93079, 93083, 93090, 93102, 93109, 93119, 93125, 93129, 
-    93138, 93145, 93154, 93158, 93162, 93169, 93173, 93177, 93181, 93185, 
-    93188, 93194, 93200, 93204, 93208, 93215, 93222, 93229, 93236, 93243, 
-    93250, 93257, 93264, 93270, 93274, 93278, 93285, 93292, 93299, 93306, 
-    93313, 93317, 93320, 93325, 93329, 93333, 93342, 93351, 93355, 93359, 
-    93365, 93371, 93388, 93394, 93398, 93407, 93411, 93415, 93422, 93430, 
-    93438, 93444, 93448, 93452, 93456, 93460, 93463, 93468, 93474, 93483, 
-    93489, 93495, 93501, 93506, 93512, 93518, 93524, 93530, 93536, 93544, 
-    93550, 93561, 93567, 93573, 93582, 93592, 93598, 93604, 93610, 93616, 
-    93622, 93628, 93634, 93640, 93646, 93652, 93661, 93670, 93679, 93685, 
-    93694, 93700, 93706, 93712, 93718, 93724, 93730, 93736, 93742, 93748, 
-    93754, 93760, 93766, 93772, 93777, 93783, 93789, 93797, 93803, 93809, 
-    93813, 93821, 93825, 93829, 93833, 93837, 93841, 93848, 93852, 93861, 
-    93865, 93872, 93880, 93884, 93888, 93892, 93905, 93921, 93925, 93929, 
-    93936, 93942, 93949, 93953, 93957, 93961, 93965, 93969, 93976, 93980, 
-    93998, 94002, 94006, 94013, 94017, 94021, 94027, 94031, 94035, 94043, 
-    94047, 94051, 94055, 94059, 94065, 94076, 94085, 94094, 94101, 94108, 
-    94119, 94126, 94133, 94140, 94147, 94154, 94161, 94168, 94178, 94184, 
-    94191, 94201, 94210, 94217, 94226, 94236, 94243, 94250, 94257, 94264, 
-    94276, 94283, 94290, 94297, 94304, 94311, 94321, 94328, 94335, 94345, 
-    94358, 94370, 94377, 94387, 94394, 94401, 94408, 94422, 94428, 94436, 
-    94446, 94456, 94463, 94470, 94476, 94480, 94487, 94497, 94503, 94516, 
-    94520, 94524, 94531, 94535, 94542, 94552, 94556, 94560, 94564, 94568, 
-    94572, 94579, 94583, 94590, 94597, 94604, 94613, 94622, 94632, 94639, 
-    94646, 94653, 94663, 94670, 94680, 94687, 94697, 94704, 94711, 94721, 
-    94731, 94738, 94744, 94752, 94760, 94766, 94772, 94776, 94780, 94787, 
-    94795, 94801, 94805, 94809, 94813, 94820, 94832, 94835, 94842, 94848, 
-    94852, 94856, 94860, 94864, 94868, 94872, 94876, 94880, 94884, 94888, 
-    94895, 94899, 94905, 94909, 94913, 94917, 94923, 94930, 94937, 94944, 
-    94955, 94963, 94967, 94973, 94982, 94989, 94995, 94998, 95002, 95006, 
-    95012, 95021, 95029, 95033, 95039, 95043, 95047, 95051, 95057, 95064, 
-    95070, 95074, 95080, 95084, 95088, 95097, 95109, 95113, 95120, 95127, 
-    95137, 95144, 95156, 95163, 95170, 95177, 95188, 95198, 95211, 95221, 
-    95228, 95232, 95236, 95240, 95244, 95253, 95262, 95271, 95288, 95297, 
-    95303, 95310, 95318, 95331, 95335, 95344, 95353, 95362, 95371, 95382, 
-    95391, 95400, 95409, 95418, 95427, 95436, 95446, 95449, 95453, 95457, 
-    95461, 95465, 95469, 95475, 95482, 95489, 95496, 95502, 95508, 95515, 
-    95521, 95528, 95536, 95540, 95547, 95554, 95561, 95569, 95572, 95576, 
-    95580, 95584, 95588, 95594, 95598, 95604, 95611, 95618, 95624, 95631, 
-    95638, 95645, 95652, 95659, 95666, 95673, 95680, 95687, 95694, 95701, 
-    95708, 95715, 95722, 95728, 95732, 95741, 95745, 95749, 95753, 95757, 
-    95763, 95770, 95777, 95784, 95791, 95798, 95804, 95812, 95816, 95820, 
-    95824, 95828, 95834, 95851, 95868, 95872, 95876, 95880, 95884, 95888, 
-    95892, 95898, 95905, 95909, 95915, 95922, 95929, 95936, 95943, 95950, 
-    95959, 95966, 95973, 95980, 95987, 95991, 95995, 96001, 96013, 96017, 
-    96021, 96030, 96034, 96038, 96042, 96048, 96052, 96056, 96065, 96069, 
-    96073, 96077, 96084, 96088, 96092, 96096, 96100, 96104, 96108, 96112, 
-    96116, 96122, 96129, 96136, 96142, 96146, 96163, 96169, 96173, 96179, 
-    96185, 96191, 96197, 96203, 96209, 96213, 96217, 96221, 96227, 96231, 
-    96237, 96241, 96245, 96252, 96259, 96276, 96280, 96284, 96288, 96292, 
-    96296, 96308, 96311, 96316, 96321, 96336, 96346, 96357, 96361, 96365, 
-    96369, 96375, 96382, 96389, 96399, 96411, 96417, 96423, 96432, 96436, 
-    96440, 96447, 96457, 96464, 96470, 96474, 96478, 96485, 96491, 96495, 
-    96501, 96505, 96513, 96519, 96523, 96531, 96539, 96546, 96552, 96559, 
-    96566, 96576, 96586, 96590, 96594, 96598, 96602, 96608, 96615, 96621, 
-    96628, 96635, 96642, 96651, 96658, 96665, 96671, 96678, 96685, 96692, 
-    96699, 96706, 96713, 96719, 96726, 96733, 96740, 96749, 96756, 96763, 
-    96767, 96773, 96777, 96783, 96790, 96797, 96804, 96808, 96812, 96816, 
-    96820, 96824, 96831, 96835, 96839, 96845, 96853, 96857, 96861, 96865, 
-    96869, 96876, 96880, 96884, 96892, 96896, 96900, 96904, 96908, 96914, 
-    96918, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96922, 96928, 
-    96934, 96941, 96948, 96955, 96962, 96969, 96976, 96982, 96989, 96996, 
-    97003, 97010, 97017, 97024, 97030, 97036, 97042, 97048, 97054, 97060, 
-    97066, 97072, 97078, 97085, 97092, 97099, 97106, 97113, 97120, 97126, 
-    97132, 97138, 97145, 97152, 97158, 97164, 97173, 97180, 97187, 97194, 
-    97201, 97208, 97215, 97221, 97227, 97233, 97242, 97249, 97256, 97267, 
-    97278, 97284, 97290, 97296, 97305, 97312, 97319, 97329, 97339, 97350, 
-    97361, 97373, 97386, 97397, 97408, 97420, 97433, 97444, 97455, 97466, 
-    97477, 97488, 97500, 97508, 97516, 97525, 97534, 97543, 97549, 97555, 
-    97561, 97568, 97578, 97585, 97595, 97600, 97605, 97611, 97617, 97625, 
-    97633, 97642, 97653, 97664, 97672, 97680, 97689, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 97698, 97709, 97716, 97724, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 97732, 97736, 97740, 97744, 97748, 97752, 97756, 97760, 97764, 
-    97768, 97772, 97776, 97780, 97784, 97788, 97792, 97796, 97800, 97804, 
-    97808, 97812, 97816, 97820, 97824, 97828, 97832, 97836, 97840, 97844, 
-    97848, 97852, 97856, 97860, 97864, 97868, 97872, 97876, 97880, 97884, 
-    97888, 97892, 97896, 97900, 97904, 97908, 97912, 97916, 97920, 97924, 
-    97928, 97932, 97936, 97940, 97944, 97948, 97952, 97956, 97960, 97964, 
-    97968, 97972, 97976, 97980, 97984, 97988, 97992, 97996, 98000, 98004, 
-    98008, 98012, 98016, 98020, 98024, 98028, 98032, 98036, 98040, 98044, 
-    98048, 98052, 98056, 98060, 98064, 98068, 98072, 98076, 98080, 98084, 
-    98088, 98092, 98096, 98100, 98104, 98108, 98112, 98116, 98120, 98124, 
-    98128, 98132, 98136, 98140, 98144, 98148, 98152, 98156, 98160, 98164, 
-    98168, 98172, 98176, 98180, 98184, 98188, 98192, 98196, 98200, 98204, 
-    98208, 98212, 98216, 98220, 98224, 98228, 98232, 98236, 98240, 98244, 
-    98248, 98252, 98256, 98260, 98264, 98268, 98272, 98276, 98280, 98284, 
-    98288, 98292, 98296, 98300, 98304, 98308, 98312, 98316, 98320, 98324, 
-    98328, 98332, 98336, 98340, 98344, 98348, 98352, 98356, 98360, 98364, 
-    98368, 98372, 98376, 98380, 98384, 98388, 98392, 98396, 98400, 98404, 
-    98408, 98412, 98416, 98420, 98424, 98428, 98432, 98436, 98440, 98444, 
-    98448, 98452, 98456, 98460, 98464, 98468, 98472, 98476, 98480, 98484, 
-    98488, 98492, 98496, 98500, 98504, 98508, 98512, 98516, 98520, 98524, 
-    98528, 98532, 98536, 98540, 98544, 98548, 98552, 98556, 98560, 98564, 
-    98568, 98572, 98576, 98580, 98584, 98588, 98592, 98596, 98600, 98604, 
-    98608, 98612, 98616, 98620, 98624, 98628, 98632, 98636, 98640, 98644, 
-    98648, 98652, 98656, 98660, 98664, 98668, 98672, 98676, 98680, 98684, 
-    98688, 98692, 98696, 98700, 98704, 98708, 98712, 98716, 98720, 98724, 
-    98728, 98732, 98736, 98740, 98744, 98748, 98752, 98756, 98760, 98764, 
-    98768, 98772, 98776, 98780, 98784, 98788, 98792, 98796, 98800, 98804, 
-    98808, 98812, 98816, 98820, 98824, 98828, 98832, 98836, 98840, 98844, 
-    98848, 98852, 98856, 98860, 98864, 98868, 98872, 98876, 98880, 98884, 
-    98888, 98892, 98896, 98900, 98904, 98908, 98912, 98916, 98920, 98924, 
-    98928, 98932, 98936, 98940, 98944, 98948, 98952, 98956, 98960, 98964, 
-    98968, 98972, 98976, 98980, 98984, 98988, 98992, 98996, 99000, 99004, 
-    99008, 99012, 99016, 99020, 99024, 99028, 99032, 99036, 99040, 99044, 
-    99048, 99052, 99056, 99060, 99064, 99068, 99072, 99076, 99080, 99084, 
-    99088, 99092, 99096, 99100, 99104, 99108, 99112, 99116, 99120, 99124, 
-    99128, 99132, 99136, 99140, 99144, 99148, 99152, 99156, 99160, 99164, 
-    99168, 99172, 99176, 99180, 99184, 99188, 99192, 99196, 99200, 99204, 
-    99208, 99212, 99216, 99220, 99224, 99228, 99232, 99236, 99240, 99244, 
-    99248, 99252, 99256, 99260, 99264, 99268, 99272, 99276, 99280, 99284, 
-    99288, 99292, 99296, 99300, 99304, 99308, 99312, 99316, 99320, 99324, 
-    99328, 99332, 99336, 99340, 99344, 99348, 99352, 99356, 99360, 99364, 
-    99368, 99372, 99376, 99380, 99384, 99388, 99392, 99396, 99400, 99404, 
-    99408, 99412, 99416, 99420, 99424, 99428, 99432, 99436, 99440, 99444, 
-    99448, 99452, 99456, 99460, 99464, 99468, 99472, 99476, 99480, 99484, 
-    99488, 99492, 99496, 99500, 99504, 99508, 99512, 99516, 99520, 99524, 
-    99528, 99532, 99536, 99540, 99544, 99548, 99552, 99556, 99560, 99564, 
-    99568, 99572, 99576, 99580, 99584, 99588, 99592, 99596, 99600, 99604, 
-    99608, 99612, 99616, 99620, 99624, 99628, 99632, 99636, 99640, 99644, 
-    99648, 99652, 99656, 99660, 99664, 99668, 99672, 99676, 99680, 99684, 
-    99688, 99692, 99696, 99700, 99704, 99708, 99712, 99716, 99720, 99724, 
-    99728, 99732, 99736, 99740, 99744, 99748, 99752, 99756, 99760, 99764, 
-    99768, 99772, 99776, 99780, 99784, 99788, 99792, 99796, 99800, 99804, 
-    99808, 99812, 99816, 99820, 99824, 99828, 99832, 99836, 99840, 99844, 
-    99848, 99852, 99856, 99860, 99864, 99868, 99872, 99876, 99880, 99884, 
-    99888, 99892, 99896, 99900, 99904, 99908, 99912, 99916, 99920, 99924, 
-    99928, 99932, 99936, 99940, 99944, 99948, 99952, 99956, 99960, 99964, 
-    99968, 99972, 99976, 99980, 99984, 99988, 99992, 99996, 100000, 100004, 
-    100008, 100012, 100016, 100020, 100024, 100028, 100032, 100036, 100040, 
-    100044, 100048, 100052, 100056, 100060, 100064, 100068, 100072, 100076, 
-    100080, 100084, 100088, 100092, 100096, 100100, 100104, 100108, 100112, 
-    100116, 100120, 100124, 100128, 100132, 100136, 100140, 100144, 100148, 
-    100152, 100156, 100160, 100164, 100168, 100172, 100176, 100180, 100184, 
-    100188, 100192, 100196, 100200, 100204, 100208, 100212, 100216, 100220, 
-    100224, 100228, 100232, 100236, 100240, 100244, 100248, 100252, 100256, 
-    100260, 100264, 100268, 100272, 100276, 100280, 100284, 100288, 100292, 
-    100296, 100300, 100304, 100308, 100312, 100316, 100320, 100324, 100328, 
-    100332, 100336, 100340, 100344, 100348, 100352, 100356, 100360, 100364, 
-    100368, 100372, 100376, 100380, 100384, 100388, 100392, 100396, 100400, 
-    100404, 100408, 100412, 100416, 100420, 100424, 100428, 100432, 100436, 
-    100440, 100444, 100448, 100452, 100456, 100460, 100464, 100468, 100472, 
-    100476, 100480, 100484, 100488, 100492, 100496, 100500, 100504, 100508, 
-    100512, 100516, 100520, 100524, 100528, 100532, 100536, 100540, 100544, 
-    100548, 100552, 100556, 100560, 100564, 100568, 100572, 100576, 100580, 
-    100584, 100588, 100592, 100596, 100600, 100604, 100608, 100612, 100616, 
-    100620, 100624, 100628, 100632, 100636, 100640, 100644, 100648, 100652, 
-    100656, 100660, 100664, 100668, 100672, 100676, 100680, 100684, 100688, 
-    100692, 100696, 100700, 100704, 100708, 100712, 100716, 100720, 100724, 
-    100728, 100732, 100736, 100740, 100744, 100748, 100752, 100756, 100760, 
-    100764, 100768, 100772, 100776, 100780, 100784, 100788, 100792, 100796, 
-    100800, 100804, 100808, 100812, 100816, 100820, 100824, 100828, 100832, 
-    100836, 100840, 100844, 100848, 100852, 100856, 100860, 100864, 100868, 
-    100872, 100876, 100880, 100884, 100888, 100892, 100896, 100900, 100904, 
-    100908, 100912, 100916, 100920, 100924, 100928, 100932, 100936, 100940, 
-    100944, 100948, 100952, 100956, 100960, 100964, 100968, 100972, 100976, 
-    100980, 100984, 100988, 100992, 100996, 101000, 101004, 101008, 101012, 
-    101016, 101020, 101024, 101028, 101032, 101036, 101040, 101044, 101048, 
-    101052, 101056, 101060, 101064, 101068, 101072, 101076, 101080, 101084, 
-    101088, 101092, 101096, 101100, 101104, 101108, 101112, 101116, 101120, 
-    101124, 101128, 101132, 101136, 101140, 101144, 101148, 101152, 101156, 
-    101160, 101164, 101168, 101172, 101176, 101180, 101184, 101188, 101192, 
-    101196, 101200, 101204, 101208, 101212, 101216, 101220, 101224, 101228, 
-    101232, 101236, 101240, 101244, 101248, 101252, 101256, 101260, 101264, 
-    101268, 101272, 101276, 101280, 101284, 101288, 101292, 101296, 101300, 
-    101304, 101308, 101312, 101316, 101320, 101324, 101328, 101332, 101336, 
-    101340, 101344, 101348, 101352, 101356, 101360, 101364, 101368, 101372, 
-    101376, 101380, 101384, 101388, 101392, 101396, 101400, 101404, 101408, 
-    101412, 101416, 101420, 101424, 101428, 101432, 101436, 101440, 101444, 
-    101448, 101452, 101456, 101460, 101464, 101468, 101472, 101476, 101480, 
-    101484, 101488, 101492, 101496, 101500, 101504, 101508, 101512, 101516, 
-    101520, 101524, 101528, 101532, 101536, 101540, 101544, 101548, 101552, 
-    101556, 101560, 101564, 101568, 101572, 101576, 101580, 101584, 101588, 
-    101592, 101596, 101600, 101604, 101608, 101612, 101616, 101620, 101624, 
-    101628, 101632, 101636, 101640, 101644, 101648, 101652, 101656, 101660, 
-    101664, 101668, 101672, 101676, 101680, 101684, 101688, 101692, 101696, 
-    101700, 101704, 101708, 101712, 101716, 101720, 101724, 101728, 101732, 
-    101736, 101740, 101744, 101748, 101752, 101756, 101760, 101764, 101768, 
-    101772, 101776, 101780, 101784, 101788, 101792, 101796, 101800, 101804, 
-    101808, 101812, 101816, 101820, 101824, 101828, 101832, 101836, 101840, 
-    101844, 101848, 101852, 101856, 101860, 101864, 101868, 101872, 101876, 
-    101880, 101884, 101888, 101892, 101896, 101900, 101904, 101908, 101912, 
-    101916, 101920, 101924, 101928, 101932, 101936, 101940, 101944, 101948, 
-    101952, 101956, 101960, 101964, 101968, 101972, 101976, 101980, 101984, 
-    101988, 101992, 101996, 102000, 102004, 102008, 102012, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 102016, 102021, 102026, 102031, 102038, 102045, 102052, 102059, 
-    102064, 102069, 102074, 102079, 102086, 102091, 102098, 102105, 102110, 
-    102115, 102120, 102127, 102132, 102137, 102144, 102151, 102156, 102161, 
-    102166, 102173, 102180, 102187, 102192, 102197, 102204, 102211, 102218, 
-    102225, 102230, 102235, 102240, 102247, 102252, 102257, 102262, 102269, 
-    102278, 102285, 102290, 102295, 102300, 102305, 102310, 102315, 102324, 
-    102331, 102336, 102343, 102350, 102355, 102360, 102365, 102372, 102377, 
-    102384, 102391, 102396, 102401, 102406, 102413, 102420, 102425, 102430, 
-    102437, 102444, 102451, 102456, 102461, 102466, 102471, 102478, 102487, 
-    102496, 102501, 102508, 102517, 102522, 102527, 102532, 102537, 102544, 
-    102551, 102558, 102565, 102570, 102575, 102580, 102587, 102594, 102601, 
-    102606, 102611, 102618, 102623, 102630, 102635, 102642, 102647, 102654, 
-    102661, 102666, 102671, 102676, 102681, 102686, 102691, 102696, 102701, 
-    102706, 102713, 102720, 102727, 102734, 102741, 102750, 102755, 102760, 
-    102767, 102774, 102779, 102786, 102793, 102800, 102807, 102814, 102821, 
-    102826, 102831, 102836, 102841, 102846, 102855, 102864, 102873, 102882, 
-    102891, 102900, 102909, 102918, 102923, 102934, 102945, 102954, 102959, 
-    102964, 102969, 102974, 102983, 102990, 102997, 103004, 103011, 103018, 
-    103025, 103034, 103043, 103054, 103063, 103074, 103083, 103090, 103099, 
-    103110, 103119, 103128, 103137, 103146, 103153, 103160, 103167, 103176, 
-    103185, 103196, 103205, 103214, 103225, 103230, 103235, 103246, 103254, 
-    103263, 103272, 103281, 103292, 103301, 103310, 103321, 103332, 103343, 
-    103354, 103365, 103376, 103383, 103390, 103397, 103404, 103415, 103424, 
-    103431, 103438, 103445, 103456, 103467, 103478, 103489, 103500, 103511, 
-    103522, 103533, 103540, 103547, 103556, 103565, 103572, 103579, 103586, 
-    103595, 103604, 103613, 103620, 103629, 103638, 103647, 103654, 103661, 
-    103666, 103672, 103679, 103686, 103693, 103700, 103707, 103714, 103723, 
-    103732, 103741, 103750, 103757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103766, 
-    103772, 103777, 103782, 103789, 103795, 103801, 103807, 103813, 103819, 
-    103825, 103831, 103835, 103839, 103845, 103851, 103857, 103861, 103866, 
-    103871, 103875, 103879, 103882, 103888, 103894, 103900, 103906, 103912, 
-    103918, 103924, 103930, 103936, 103946, 103956, 103962, 103968, 103978, 
-    103988, 103994, 0, 0, 104000, 104008, 104013, 104018, 104024, 104030, 
-    104036, 104042, 104048, 104054, 104061, 104068, 104074, 104080, 104086, 
-    104092, 104098, 104104, 104110, 104116, 104121, 104127, 104133, 104139, 
-    104145, 104151, 104160, 104166, 104171, 104179, 104186, 104193, 104202, 
-    104211, 104220, 104229, 104238, 104247, 104256, 104265, 104275, 104285, 
-    104293, 104301, 104310, 104319, 104325, 104331, 104337, 104343, 104351, 
-    104359, 104363, 104369, 104374, 104380, 104386, 104392, 104398, 104404, 
-    104413, 104418, 104425, 104430, 104435, 104440, 104446, 104452, 104458, 
-    104465, 104470, 104475, 104480, 104485, 104490, 104496, 104502, 104508, 
-    104514, 104520, 104526, 104532, 104538, 104543, 104548, 104553, 104558, 
-    104563, 104568, 104573, 104578, 104584, 104590, 104595, 104600, 104605, 
-    104610, 104615, 104621, 104628, 104632, 104636, 104640, 104644, 104648, 
-    104652, 104656, 104660, 104668, 104678, 104682, 104686, 104692, 104698, 
-    104704, 104710, 104716, 104722, 104728, 104734, 104740, 104746, 104752, 
-    104758, 104764, 104770, 104774, 104778, 104785, 104791, 104797, 104803, 
-    104808, 104815, 104820, 104826, 104832, 104838, 104844, 104849, 104853, 
-    104859, 104863, 104867, 104871, 104877, 104883, 104887, 104893, 104899, 
-    104905, 104911, 104917, 104925, 104933, 104939, 104945, 104951, 104957, 
-    104969, 104981, 104995, 105007, 105019, 105033, 105047, 105061, 105065, 
-    105073, 105081, 105086, 105090, 105094, 105098, 105102, 105106, 105110, 
-    105114, 105120, 105126, 105132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105138, 
-    105144, 105150, 105156, 105162, 105168, 105174, 105180, 105186, 105192, 
-    105198, 105204, 105210, 105216, 105222, 105228, 105234, 105240, 105246, 
-    105252, 105258, 105264, 105270, 105276, 105282, 105288, 105294, 105300, 
-    105306, 105312, 105318, 105324, 105330, 105336, 105342, 105348, 105354, 
-    105360, 105366, 105372, 105378, 105384, 105390, 105396, 105402, 105408, 
-    105414, 105420, 105426, 105432, 105438, 105444, 105450, 105456, 105462, 
-    105468, 105474, 105480, 105486, 105492, 105498, 105504, 105510, 105516, 
-    105522, 105528, 105534, 105539, 105544, 105549, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 105553, 105558, 105565, 105572, 105579, 105586, 105591, 105595, 
-    105601, 105605, 105609, 105615, 105619, 105623, 105627, 105633, 105640, 
-    105644, 105648, 105652, 105656, 105660, 105664, 105670, 105674, 105678, 
-    105682, 105686, 105690, 105694, 105698, 105702, 105706, 105710, 105714, 
-    105718, 105723, 105727, 105731, 105735, 105739, 105743, 105747, 105751, 
-    105755, 105759, 105766, 105770, 105777, 105781, 105785, 105789, 105793, 
-    105797, 105801, 105805, 105812, 105816, 105820, 105824, 105828, 105832, 
-    105838, 105842, 105848, 105852, 105856, 105860, 105864, 105868, 105872, 
-    105876, 105880, 105884, 105888, 105892, 105896, 105900, 105904, 105908, 
-    105912, 105916, 105920, 105924, 105932, 105936, 105940, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 105944, 105952, 105960, 105968, 105976, 105984, 105992, 106000, 
-    106008, 106016, 106024, 106032, 106040, 106048, 106056, 106064, 106072, 
-    106080, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106088, 106092, 106097, 
-    106102, 106107, 106111, 106116, 106121, 106126, 106130, 106135, 106140, 
-    106144, 106148, 106152, 106156, 106161, 106166, 106170, 106174, 106179, 
-    106183, 106188, 106193, 106198, 106203, 106208, 106212, 106217, 106222, 
-    106227, 106231, 106236, 106241, 106246, 106250, 106255, 106260, 106264, 
-    106268, 106272, 106276, 106281, 106286, 106290, 106294, 106299, 106303, 
-    106308, 106313, 106318, 106323, 106328, 106332, 106337, 106342, 106347, 
-    106351, 106356, 106361, 106366, 106370, 106375, 106380, 106384, 106388, 
-    106392, 106396, 106401, 106406, 106410, 106414, 106419, 106423, 106428, 
-    106433, 106438, 106443, 106448, 106452, 106457, 106462, 106467, 106471, 
-    106476, 0, 106481, 106485, 106490, 106495, 106499, 106503, 106507, 
-    106511, 106516, 106521, 106525, 106529, 106534, 106538, 106543, 106548, 
-    106553, 106558, 106563, 106568, 106574, 106580, 106586, 106591, 106597, 
-    106603, 106609, 106614, 106620, 106626, 106631, 106636, 106641, 106646, 
-    106652, 106658, 106663, 106668, 106674, 106679, 106685, 106691, 106697, 
-    106703, 106709, 106714, 106720, 106726, 106732, 106737, 106743, 106749, 
-    106755, 106760, 106766, 106772, 106777, 106782, 106787, 106792, 106798, 
-    106804, 106809, 106814, 106820, 106825, 106831, 106837, 106843, 106849, 
-    106855, 0, 106859, 106864, 0, 0, 106869, 0, 0, 106874, 106879, 0, 0, 
-    106884, 106888, 106892, 106897, 0, 106902, 106906, 106911, 106915, 
-    106920, 106925, 106930, 106935, 106940, 106944, 106949, 106954, 0, 
-    106959, 0, 106964, 106969, 106973, 106978, 106983, 106987, 106991, 0, 
-    106995, 107000, 107005, 107009, 107013, 107018, 107022, 107027, 107032, 
-    107037, 107042, 107047, 107052, 107058, 107064, 107070, 107075, 107081, 
-    107087, 107093, 107098, 107104, 107110, 107115, 107120, 107125, 107130, 
-    107136, 107142, 107147, 107152, 107158, 107163, 107169, 107175, 107181, 
-    107187, 107193, 107198, 107204, 107210, 107216, 107221, 107227, 107233, 
-    107239, 107244, 107250, 107256, 107261, 107266, 107271, 107276, 107282, 
-    107288, 107293, 107298, 107304, 107309, 107315, 107321, 107327, 107333, 
-    107339, 107343, 0, 107348, 107353, 107357, 107362, 0, 0, 107367, 107372, 
-    107377, 107381, 107385, 107389, 107393, 107398, 0, 107403, 107407, 
-    107412, 107416, 107421, 107426, 107431, 0, 107436, 107440, 107445, 
-    107450, 107455, 107459, 107464, 107469, 107474, 107478, 107483, 107488, 
-    107492, 107496, 107500, 107504, 107509, 107514, 107518, 107522, 107527, 
-    107531, 107536, 107541, 107546, 107551, 107556, 107560, 0, 107565, 
-    107570, 107574, 107579, 0, 107584, 107588, 107593, 107598, 107602, 0, 
-    107606, 0, 0, 0, 107610, 107614, 107619, 107623, 107628, 107633, 107638, 
-    0, 107643, 107647, 107652, 107657, 107662, 107666, 107671, 107676, 
-    107681, 107685, 107690, 107695, 107699, 107703, 107707, 107711, 107716, 
-    107721, 107725, 107729, 107734, 107738, 107743, 107748, 107753, 107758, 
-    107763, 107768, 107774, 107780, 107786, 107791, 107797, 107803, 107809, 
-    107814, 107820, 107826, 107831, 107836, 107841, 107846, 107852, 107858, 
-    107863, 107868, 107874, 107879, 107885, 107891, 107897, 107903, 107909, 
-    107914, 107920, 107926, 107932, 107937, 107943, 107949, 107955, 107960, 
-    107966, 107972, 107977, 107982, 107987, 107992, 107998, 108004, 108009, 
-    108014, 108020, 108025, 108031, 108037, 108043, 108049, 108055, 108059, 
-    108064, 108069, 108074, 108078, 108083, 108088, 108093, 108097, 108102, 
-    108107, 108111, 108115, 108119, 108123, 108128, 108133, 108137, 108141, 
-    108146, 108150, 108155, 108160, 108165, 108170, 108175, 108179, 108184, 
-    108189, 108194, 108198, 108203, 108208, 108213, 108217, 108222, 108227, 
-    108231, 108235, 108239, 108243, 108248, 108253, 108257, 108261, 108266, 
-    108270, 108275, 108280, 108285, 108290, 108295, 108300, 108306, 108312, 
-    108318, 108323, 108329, 108335, 108341, 108346, 108352, 108358, 108363, 
-    108368, 108373, 108378, 108384, 108390, 108395, 108400, 108406, 108411, 
-    108417, 108423, 108429, 108435, 108441, 108446, 108452, 108458, 108464, 
-    108469, 108475, 108481, 108487, 108492, 108498, 108504, 108509, 108514, 
-    108519, 108524, 108530, 108536, 108541, 108546, 108552, 108557, 108563, 
-    108569, 108575, 108581, 108587, 108592, 108598, 108604, 108610, 108615, 
-    108621, 108627, 108633, 108638, 108644, 108650, 108655, 108660, 108665, 
-    108670, 108676, 108682, 108687, 108692, 108698, 108703, 108709, 108715, 
-    108721, 108727, 108733, 108738, 108744, 108750, 108756, 108761, 108767, 
-    108773, 108779, 108784, 108790, 108796, 108801, 108806, 108811, 108816, 
-    108822, 108828, 108833, 108838, 108844, 108849, 108855, 108861, 108867, 
-    108873, 108879, 108885, 108892, 108899, 108906, 108912, 108919, 108926, 
-    108933, 108939, 108946, 108953, 108959, 108965, 108971, 108977, 108984, 
-    108991, 108997, 109003, 109010, 109016, 109023, 109030, 109037, 109044, 
-    109051, 109057, 109064, 109071, 109078, 109084, 109091, 109098, 109105, 
-    109111, 109118, 109125, 109131, 109137, 109143, 109149, 109156, 109163, 
-    109169, 109175, 109182, 109188, 109195, 109202, 109209, 109216, 109223, 
-    109227, 109232, 109237, 109242, 109246, 109251, 109256, 109261, 109265, 
-    109270, 109275, 109279, 109283, 109287, 109291, 109296, 109301, 109305, 
-    109309, 109314, 109318, 109323, 109328, 109333, 109338, 109343, 109347, 
-    109352, 109357, 109362, 109366, 109371, 109376, 109381, 109385, 109390, 
-    109395, 109399, 109403, 109407, 109411, 109416, 109421, 109425, 109429, 
-    109434, 109438, 109443, 109448, 109453, 109458, 109463, 109469, 0, 0, 
-    109476, 109481, 109486, 109491, 109496, 109501, 109506, 109511, 109516, 
-    109521, 109526, 109531, 109536, 109541, 109546, 109551, 109556, 109561, 
-    109567, 109572, 109577, 109582, 109587, 109592, 109597, 109602, 109606, 
-    109611, 109616, 109621, 109626, 109631, 109636, 109641, 109646, 109651, 
-    109656, 109661, 109666, 109671, 109676, 109681, 109686, 109691, 109697, 
-    109702, 109707, 109712, 109717, 109722, 109727, 109732, 109738, 109743, 
-    109748, 109753, 109758, 109763, 109768, 109773, 109778, 109783, 109788, 
-    109793, 109798, 109803, 109808, 109813, 109818, 109823, 109828, 109833, 
-    109838, 109843, 109848, 109853, 109859, 109864, 109869, 109874, 109879, 
-    109884, 109889, 109894, 109898, 109903, 109908, 109913, 109918, 109923, 
-    109928, 109933, 109938, 109943, 109948, 109953, 109958, 109963, 109968, 
-    109973, 109978, 109983, 109989, 109994, 109999, 110004, 110009, 110014, 
-    110019, 110024, 110030, 110035, 110040, 110045, 110050, 110055, 110060, 
-    110066, 110072, 110078, 110084, 110090, 110096, 110102, 110108, 110114, 
-    110120, 110126, 110132, 110138, 110144, 110150, 110156, 110162, 110169, 
-    110175, 110181, 110187, 110193, 110199, 110205, 110211, 110216, 110222, 
-    110228, 110234, 110240, 110246, 110252, 110258, 110264, 110270, 110276, 
-    110282, 110288, 110294, 110300, 110306, 110312, 110318, 110325, 110331, 
-    110337, 110343, 110349, 110355, 110361, 110367, 110374, 110380, 110386, 
-    110392, 110398, 110404, 110410, 110416, 110422, 110428, 110434, 110440, 
-    110446, 110452, 110458, 110464, 110470, 110476, 110482, 110488, 110494, 
-    110500, 110506, 110512, 110519, 110525, 110531, 110537, 110543, 110549, 
-    110555, 110561, 110566, 110572, 110578, 110584, 110590, 110596, 110602, 
-    110608, 110614, 110620, 110626, 110632, 110638, 110644, 110650, 110656, 
-    110662, 110668, 110675, 110681, 110687, 110693, 110699, 110705, 110711, 
-    110717, 110724, 110730, 110736, 110742, 110748, 110754, 110760, 110767, 
-    110774, 110781, 110788, 110795, 110802, 110809, 110816, 110823, 110830, 
-    110837, 110844, 110851, 110858, 110865, 110872, 110879, 110887, 110894, 
-    110901, 110908, 110915, 110922, 110929, 110936, 110942, 110949, 110956, 
-    110963, 110970, 110977, 110984, 110991, 110998, 111005, 111012, 111019, 
-    111026, 111033, 111040, 111047, 111054, 111061, 111069, 111076, 111083, 
-    111090, 111097, 111104, 111111, 111118, 111126, 111133, 111140, 111147, 
-    111154, 111161, 111168, 111173, 0, 0, 111178, 111183, 111187, 111191, 
-    111195, 111199, 111203, 111207, 111211, 111215, 111219, 111224, 111228, 
-    111232, 111236, 111240, 111244, 111248, 111252, 111256, 111260, 111265, 
-    111269, 111273, 111277, 111281, 111285, 111289, 111293, 111297, 111301, 
-    111307, 111312, 111317, 111322, 111327, 111332, 111337, 111342, 111347, 
-    111352, 111357, 111361, 111365, 111369, 111373, 111377, 111381, 111385, 
-    111389, 111393, 111400, 111407, 111414, 111421, 111428, 111435, 111441, 
-    111448, 111455, 111462, 111470, 111478, 111486, 111494, 111502, 111510, 
-    111517, 111524, 111531, 111539, 111547, 111555, 111563, 111571, 111579, 
-    111586, 111593, 111600, 111608, 111616, 111624, 111632, 111640, 111648, 
-    111653, 111658, 111663, 111668, 111673, 111678, 111683, 111688, 111693, 
-    0, 0, 0, 0, 111698, 111703, 111707, 111711, 111715, 111719, 111723, 
-    111727, 111731, 111735, 111739, 111743, 111747, 111751, 111755, 111759, 
-    111763, 111767, 111771, 111775, 111779, 111783, 111787, 111791, 111795, 
-    111799, 111803, 111807, 111811, 111815, 111819, 111823, 111827, 111831, 
-    111835, 111839, 111843, 111847, 111851, 111855, 111859, 111863, 111867, 
-    111871, 111875, 111879, 111883, 111887, 111891, 111895, 111899, 111904, 
-    111908, 111912, 111916, 111920, 111924, 111928, 111932, 111936, 111940, 
-    111944, 111948, 111952, 111956, 111960, 111964, 111968, 111972, 111976, 
-    111980, 111984, 111988, 111992, 111996, 112000, 112004, 112008, 112012, 
-    112016, 112020, 112024, 112028, 112032, 112036, 112040, 112044, 112048, 
-    112052, 112056, 112060, 112064, 112068, 112072, 112076, 112080, 112084, 
-    112088, 112092, 112096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112100, 
-    112107, 112112, 112116, 112120, 112124, 112129, 112134, 112139, 112144, 
-    112149, 0, 0, 0, 0, 0, 112154, 112159, 112165, 112171, 112177, 112182, 
-    112188, 112194, 112200, 112205, 112211, 112217, 112222, 112227, 112232, 
-    112237, 112243, 112249, 112254, 112259, 112265, 112270, 112276, 112282, 
-    112288, 112294, 112300, 112310, 112317, 112323, 112326, 0, 0, 112329, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112335, 0, 112340, 0, 0, 112346, 0, 0, 0, 
-    112351, 0, 0, 0, 112357, 112360, 112363, 112366, 112369, 0, 0, 0, 0, 0, 
-    0, 0, 0, 112372, 0, 0, 0, 0, 0, 0, 0, 112380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112388, 0, 112396, 
-    112403, 0, 0, 112410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112418, 112428, 
-    112433, 112437, 0, 0, 112442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 112445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112449, 112455, 
-    112461, 112467, 112471, 112477, 112483, 112489, 112495, 112501, 112507, 
-    112513, 112519, 112525, 112531, 112537, 112543, 112549, 112555, 112561, 
-    112567, 112573, 112579, 112585, 112591, 112597, 112603, 112609, 112615, 
-    112621, 112627, 112633, 112639, 112645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 112651, 112662, 112673, 112684, 112695, 112706, 112717, 112728, 
-    112739, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 112750, 112754, 112758, 112762, 112766, 
-    112770, 112774, 112778, 112782, 112786, 112790, 112794, 112798, 112802, 
-    112806, 112810, 112814, 112818, 112822, 112826, 112830, 112834, 112838, 
-    112842, 112846, 112850, 112854, 112858, 112862, 112866, 112870, 112874, 
-    112878, 112882, 112886, 112890, 112894, 112898, 112902, 112906, 112910, 
-    112914, 112918, 112922, 112926, 112930, 112934, 112938, 112942, 112946, 
-    112950, 112954, 112958, 112962, 112966, 112970, 112974, 112978, 112982, 
-    112986, 112990, 112994, 112998, 113002, 113006, 113010, 113014, 113018, 
-    113022, 113026, 113030, 113034, 113038, 113042, 113046, 113050, 113054, 
-    113058, 113062, 113066, 113070, 113074, 113078, 113082, 113086, 113090, 
-    113094, 113098, 113102, 113106, 113110, 113114, 113118, 113122, 113126, 
-    113130, 113134, 113138, 113142, 113146, 113150, 113154, 113158, 113162, 
-    113166, 113170, 113174, 113178, 113182, 113186, 113190, 113194, 113198, 
-    113202, 113206, 113210, 113214, 113218, 113222, 113226, 113230, 113234, 
-    113238, 113242, 113246, 113250, 113254, 113258, 113262, 113266, 113270, 
-    113274, 113278, 113282, 113286, 113290, 113294, 113298, 113302, 113306, 
-    113310, 113314, 113318, 113322, 113326, 113330, 113334, 113338, 113342, 
-    113346, 113350, 113354, 113358, 113362, 113366, 113370, 113374, 113378, 
-    113382, 113386, 113390, 113394, 113398, 113402, 113406, 113410, 113414, 
-    113418, 113422, 113426, 113430, 113434, 113438, 113442, 113446, 113450, 
-    113454, 113458, 113462, 113466, 113470, 113474, 113478, 113482, 113486, 
-    113490, 113494, 113498, 113502, 113506, 113510, 113514, 113518, 113522, 
-    113526, 113530, 113534, 113538, 113542, 113546, 113550, 113554, 113558, 
-    113562, 113566, 113570, 113574, 113578, 113582, 113586, 113590, 113594, 
-    113598, 113602, 113606, 113610, 113614, 113618, 113622, 113626, 113630, 
-    113634, 113638, 113642, 113646, 113650, 113654, 113658, 113662, 113666, 
-    113670, 113674, 113678, 113682, 113686, 113690, 113694, 113698, 113702, 
-    113706, 113710, 113714, 113718, 113722, 113726, 113730, 113734, 113738, 
-    113742, 113746, 113750, 113754, 113758, 113762, 113766, 113770, 113774, 
-    113778, 113782, 113786, 113790, 113794, 113798, 113802, 113806, 113810, 
-    113814, 113818, 113822, 113826, 113830, 113834, 113838, 113842, 113846, 
-    113850, 113854, 113858, 113862, 113866, 113870, 113874, 113878, 113882, 
-    113886, 113890, 113894, 113898, 113902, 113906, 113910, 113914, 113918, 
-    113922, 113926, 113930, 113934, 113938, 113942, 113946, 113950, 113954, 
-    113958, 113962, 113966, 113970, 113974, 113978, 113982, 113986, 113990, 
-    113994, 113998, 114002, 114006, 114010, 114014, 114018, 114022, 114026, 
-    114030, 114034, 114038, 114042, 114046, 114050, 114054, 114058, 114062, 
-    114066, 114070, 114074, 114078, 114082, 114086, 114090, 114094, 114098, 
-    114102, 114106, 114110, 114114, 114118, 114122, 114126, 114130, 114134, 
-    114138, 114142, 114146, 114150, 114154, 114158, 114162, 114166, 114170, 
-    114174, 114178, 114182, 114186, 114190, 114194, 114198, 114202, 114206, 
-    114210, 114214, 114218, 114222, 114226, 114230, 114234, 114238, 114242, 
-    114246, 114250, 114254, 114258, 114262, 114266, 114270, 114274, 114278, 
-    114282, 114286, 114290, 114294, 114298, 114302, 114306, 114310, 114314, 
-    114318, 114322, 114326, 114330, 114334, 114338, 114342, 114346, 114350, 
-    114354, 114358, 114362, 114366, 114370, 114374, 114378, 114382, 114386, 
-    114390, 114394, 114398, 114402, 114406, 114410, 114414, 114418, 114422, 
-    114426, 114430, 114434, 114438, 114442, 114446, 114450, 114454, 114458, 
-    114462, 114466, 114470, 114474, 114478, 114482, 114486, 114490, 114494, 
-    114498, 114502, 114506, 114510, 114514, 114518, 114522, 114526, 114530, 
-    114534, 114538, 114542, 114546, 114550, 114554, 114558, 114562, 114566, 
-    114570, 114574, 114578, 114582, 114586, 114590, 114594, 114598, 114602, 
-    114606, 114610, 114614, 114618, 114622, 114626, 114630, 114634, 114638, 
-    114642, 114646, 114650, 114654, 114658, 114662, 114666, 114670, 114674, 
-    114678, 114682, 114686, 114690, 114694, 114698, 114702, 114706, 114710, 
-    114714, 114718, 114722, 114726, 114730, 114734, 114738, 114742, 114746, 
-    114750, 114754, 114758, 114762, 114766, 114770, 114774, 114778, 114782, 
-    114786, 114790, 114794, 114798, 114802, 114806, 114810, 114814, 114818, 
-    114822, 114826, 114830, 114834, 114838, 114842, 114846, 114850, 114854, 
-    114858, 114862, 114866, 114870, 114874, 114878, 114882, 114886, 114890, 
-    114894, 114898, 114902, 114906, 114910, 114914, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114918, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 114922, 114925, 114929, 114933, 114936, 114940, 114944, 114947, 
-    114950, 114954, 114958, 114961, 114964, 114967, 114970, 114975, 114978, 
-    114982, 114985, 114988, 114991, 114994, 114997, 115000, 115003, 115006, 
-    115009, 115012, 115015, 115019, 115023, 115027, 115031, 115036, 115041, 
-    115047, 115053, 115059, 115064, 115070, 115076, 115082, 115087, 115093, 
-    115099, 115104, 115109, 115114, 115119, 115125, 115131, 115136, 115141, 
-    115147, 115152, 115158, 115164, 115170, 115176, 115182, 115186, 115191, 
-    115195, 115200, 115204, 115209, 115214, 115220, 115226, 115232, 115237, 
-    115243, 115249, 115255, 115260, 115266, 115272, 115277, 115282, 115287, 
-    115292, 115298, 115304, 115309, 115314, 115320, 115325, 115331, 115337, 
-    115343, 115349, 115355, 115360, 115364, 115369, 115372, 115376, 115379, 
-    115382, 115385, 115388, 115391, 115394, 115397, 115400, 115403, 115406, 
-    115409, 115412, 115415, 115418, 115421, 115424, 115427, 115430, 115433, 
-    115436, 115439, 115442, 115445, 115448, 115451, 115454, 115457, 115460, 
-    115463, 115466, 115469, 115472, 115475, 115478, 115481, 115484, 115487, 
-    115490, 115493, 115496, 115499, 115502, 115505, 115508, 115511, 115514, 
-    115517, 115520, 115523, 115526, 115529, 115532, 115535, 115538, 115541, 
-    115544, 115547, 115550, 115553, 115556, 115559, 115562, 115565, 115568, 
-    115571, 115574, 115577, 115580, 115583, 115586, 115589, 115592, 115595, 
-    115598, 115601, 115604, 115607, 115610, 115613, 115616, 115619, 115622, 
-    115625, 115628, 115631, 115634, 115637, 115640, 115643, 115646, 115649, 
-    115652, 115655, 115658, 115661, 115664, 115667, 115670, 115673, 115676, 
-    115679, 115682, 115685, 115688, 115691, 115694, 115697, 115700, 115703, 
-    115706, 115709, 115712, 115715, 115718, 115721, 115724, 115727, 115730, 
-    115733, 115736, 115739, 115742, 115745, 115748, 115751, 115754, 115757, 
-    115760, 115763, 115766, 115769, 115772, 115775, 115778, 115781, 115784, 
-    115787, 115790, 115793, 115796, 115799, 115802, 115805, 115808, 115811, 
-    115814, 115817, 115820, 115823, 115826, 115829, 115832, 115835, 115838, 
-    115841, 115844, 115847, 115850, 115853, 115856, 115859, 115862, 115865, 
-    115868, 115871, 115874, 115877, 115880, 115883, 115886, 115889, 115892, 
-    115895, 115898, 115901, 115904, 115907, 115910, 115913, 115916, 115919, 
-    115922, 115925, 115928, 115931, 115934, 115937, 115940, 115943, 115946, 
-    115949, 115952, 115955, 115958, 115961, 115964, 115967, 115970, 115973, 
-    115976, 115979, 115982, 115985, 115988, 115991, 115994, 115997, 116000, 
-    116003, 116006, 116009, 116012, 116015, 116018, 116021, 116024, 116027, 
-    116030, 116033, 116036, 116039, 116042, 116045, 116048, 116051, 116054, 
-    116057, 116060, 116063, 116066, 116069, 116072, 116075, 116078, 116081, 
-    116084, 116087, 116090, 116093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 
-};
-
-/* name->code dictionary */
-static unsigned int code_hash[] = {
-    74224, 4851, 0, 78156, 78499, 0, 7929, 0, 194682, 0, 78500, 66480, 0, 
-    42833, 74529, 12064, 0, 596, 0, 0, 13192, 8651, 0, 0, 120218, 12995, 
-    64865, 1373, 0, 0, 5816, 119067, 64810, 4231, 6825, 0, 4233, 4234, 4232, 
-    917836, 74415, 120210, 6384, 917840, 78108, 8851, 0, 0, 0, 41601, 8874, 
-    0, 7748, 0, 0, 0, 0, 41603, 9784, 0, 9188, 41600, 0, 120618, 0, 1457, 
-    3535, 0, 0, 0, 0, 65240, 11951, 0, 3404, 0, 0, 0, 1759, 0, 41076, 68383, 
-    120572, 119205, 66577, 0, 0, 65859, 0, 7404, 0, 0, 0, 0, 65908, 9834, 
-    3055, 9852, 0, 65288, 0, 11398, 0, 0, 119255, 0, 0, 603, 74398, 43548, 0, 
-    0, 917824, 3350, 120817, 64318, 917828, 127089, 3390, 74483, 43265, 
-    120599, 917830, 78573, 0, 1919, 3400, 0, 917813, 0, 917540, 66446, 64141, 
-    8562, 64139, 64138, 4043, 8712, 64134, 64133, 11297, 0, 0, 11966, 64128, 
-    0, 0, 0, 64132, 10867, 64130, 64129, 0, 43374, 9779, 2764, 66002, 10167, 
-    9471, 0, 66021, 0, 0, 5457, 5440, 8857, 0, 65282, 2843, 5355, 0, 0, 0, 
-    5194, 11657, 43984, 0, 0, 0, 0, 0, 127027, 10717, 64570, 5630, 74350, 
-    64143, 10682, 0, 10602, 800, 42499, 66186, 0, 0, 64930, 11631, 64146, 
-    64145, 64144, 762, 13172, 118859, 194661, 64468, 10906, 1353, 6960, 0, 0, 
-    5828, 8724, 917806, 8933, 1601, 42244, 858, 7080, 64109, 64108, 8090, 0, 
-    74401, 917811, 587, 0, 0, 0, 0, 0, 78214, 2750, 0, 556, 64158, 64157, 0, 
-    12213, 194678, 2760, 0, 0, 0, 0, 64156, 64155, 42496, 0, 64151, 64150, 
-    12679, 10053, 10421, 11093, 64153, 64152, 0, 0, 4839, 0, 0, 1874, 119016, 
-    0, 6577, 64125, 64124, 64123, 0, 0, 0, 7007, 7590, 65443, 9036, 0, 64122, 
-    74422, 66609, 0, 64117, 64116, 6287, 64114, 2725, 64120, 64119, 43981, 
-    42128, 0, 1177, 65601, 12322, 64106, 0, 127306, 64102, 7859, 1945, 64099, 
-    0, 10453, 64104, 7188, 7997, 0, 7389, 0, 8705, 64097, 64096, 9571, 528, 
-    917989, 44017, 11429, 0, 0, 0, 917990, 73841, 0, 0, 9056, 0, 6188, 
-    120019, 6155, 64068, 1823, 64066, 64065, 64072, 64071, 63, 7233, 120698, 
-    0, 41904, 6639, 64064, 0, 0, 0, 1176, 118959, 0, 8162, 0, 0, 0, 120519, 
-    66376, 66242, 11415, 4333, 9855, 64112, 64642, 0, 5388, 0, 0, 0, 7714, 
-    66222, 0, 7768, 0, 4199, 64708, 0, 0, 0, 8708, 9560, 64077, 64076, 8996, 
-    4992, 4471, 42622, 64079, 64078, 0, 0, 0, 0, 64615, 0, 0, 12075, 0, 0, 
-    5174, 0, 0, 127557, 3123, 0, 12685, 0, 8408, 64704, 0, 0, 9223, 0, 41616, 
-    0, 73797, 0, 1116, 0, 43049, 0, 43050, 8548, 120485, 0, 119061, 917999, 
-    0, 13115, 43675, 64091, 9322, 0, 120595, 64095, 64094, 8111, 66247, 
-    42332, 64089, 64088, 6199, 0, 0, 11434, 64083, 64082, 11329, 7737, 64087, 
-    64086, 64085, 64084, 0, 9927, 41335, 4118, 1797, 0, 41334, 0, 46, 43448, 
-    0, 298, 0, 0, 0, 42627, 0, 32, 6187, 119052, 11495, 11459, 3665, 0, 
-    42871, 0, 19923, 74335, 0, 0, 66239, 0, 64403, 4412, 7240, 0, 0, 0, 
-    65758, 12750, 4181, 8544, 0, 120199, 917897, 120198, 120203, 6181, 65014, 
-    0, 0, 0, 3639, 119588, 0, 0, 0, 10073, 120206, 0, 0, 68409, 42844, 7498, 
-    1098, 0, 0, 0, 0, 10207, 8789, 0, 0, 0, 0, 9234, 0, 6182, 0, 65058, 0, 0, 
-    0, 0, 5471, 9461, 5573, 118936, 5473, 44, 0, 66244, 118907, 0, 66238, 
-    12844, 0, 1622, 7767, 1900, 41339, 11458, 0, 0, 6581, 5576, 0, 64405, 
-    41337, 0, 41631, 8947, 68390, 0, 41694, 0, 0, 7908, 0, 10408, 6579, 0, 
-    64618, 0, 120147, 0, 6583, 7761, 127010, 120504, 194828, 0, 5058, 41010, 
-    9992, 0, 5057, 0, 0, 74538, 5054, 118951, 194971, 78606, 0, 1437, 41617, 
-    658, 3497, 0, 7486, 5061, 5060, 4235, 0, 0, 0, 12113, 4236, 4727, 0, 0, 
-    7693, 10749, 0, 7488, 5773, 978, 0, 0, 41619, 10239, 68611, 0, 66209, 0, 
-    0, 9748, 0, 127524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9341, 119596, 
-    2379, 11325, 0, 64668, 67854, 8125, 120545, 6743, 119175, 917940, 2369, 
-    0, 0, 0, 119235, 74092, 73936, 7008, 43660, 0, 0, 0, 2367, 0, 0, 264, 
-    2375, 8060, 6194, 119858, 1844, 119084, 0, 12858, 0, 0, 6961, 0, 118839, 
-    0, 8800, 0, 42862, 4463, 65581, 6192, 194676, 42771, 0, 0, 725, 65042, 
-    118797, 120800, 0, 12892, 0, 0, 0, 0, 0, 0, 0, 120707, 0, 0, 5074, 5073, 
-    0, 8983, 0, 74493, 0, 5072, 0, 6198, 11614, 0, 196, 0, 0, 0, 4929, 
-    120342, 0, 0, 0, 0, 42847, 0, 0, 0, 4934, 0, 41323, 9758, 0, 120341, 0, 
-    42584, 0, 4329, 41321, 4979, 3048, 7752, 41320, 0, 74418, 12819, 0, 5071, 
-    0, 3642, 0, 5070, 10042, 118835, 3987, 5068, 0, 8909, 78650, 78649, 0, 
-    10636, 73981, 11806, 43167, 4531, 1245, 9105, 66463, 4921, 120219, 4926, 
-    65544, 73884, 194619, 0, 0, 64709, 0, 194620, 78880, 4922, 325, 992, 
-    119568, 4925, 0, 0, 9526, 4920, 0, 948, 0, 120208, 4930, 0, 0, 120275, 
-    4933, 0, 0, 118985, 4928, 0, 0, 74770, 120194, 0, 722, 0, 19908, 12637, 
-    0, 119855, 8753, 1509, 0, 5468, 9511, 0, 0, 1672, 6205, 10864, 74586, 0, 
-    0, 0, 0, 0, 73863, 0, 0, 41607, 120115, 1679, 120116, 120180, 120113, 0, 
-    7005, 41609, 9580, 0, 401, 0, 120109, 6968, 5761, 342, 8553, 0, 8143, 
-    127115, 11983, 127113, 624, 74508, 0, 119630, 5078, 74258, 12478, 0, 
-    5076, 0, 194609, 0, 120097, 685, 9025, 1524, 12618, 0, 5539, 0, 120095, 
-    120102, 120094, 120552, 0, 194611, 78752, 0, 12520, 8058, 9732, 0, 5080, 
-    64775, 5036, 5035, 120590, 42604, 0, 0, 8074, 275, 13291, 1907, 78838, 
-    4432, 127271, 5033, 127273, 127272, 4836, 3888, 73792, 10729, 64546, 
-    127262, 43704, 127264, 127251, 67588, 119000, 127252, 127255, 8858, 6409, 
-    127256, 120252, 0, 0, 0, 66321, 0, 12814, 127248, 3432, 10218, 0, 6094, 
-    7641, 42445, 0, 0, 42406, 1676, 74320, 194607, 0, 5030, 0, 0, 0, 0, 9622, 
-    0, 0, 6787, 0, 0, 0, 0, 10544, 12919, 0, 0, 0, 0, 0, 120789, 0, 947, 
-    119835, 194586, 194585, 10969, 119935, 7613, 119937, 119936, 4795, 
-    119930, 7018, 7376, 120181, 120192, 120268, 0, 43567, 74056, 917910, 
-    118963, 119919, 7216, 65232, 7217, 251, 7218, 7895, 4395, 43538, 119926, 
-    119929, 119928, 7213, 119922, 7214, 7215, 0, 74141, 8880, 7685, 66459, 
-    120173, 65540, 119618, 625, 8187, 42861, 1113, 7236, 7915, 3630, 120176, 
-    8179, 74264, 67886, 9316, 10980, 2489, 65624, 8150, 1359, 67652, 0, 0, 
-    73756, 5042, 5041, 42769, 12084, 0, 0, 0, 127319, 0, 917906, 0, 0, 12283, 
-    1616, 3795, 0, 8795, 66245, 0, 0, 0, 1138, 73905, 12677, 0, 0, 3239, 0, 
-    0, 0, 8431, 0, 42164, 0, 11778, 12620, 6826, 73773, 119073, 5040, 0, 0, 
-    0, 78420, 0, 5039, 0, 78418, 0, 5038, 0, 0, 13184, 74293, 0, 64648, 0, 
-    9359, 78416, 0, 0, 65157, 6662, 0, 0, 3863, 73909, 4835, 55266, 43432, 0, 
-    4309, 0, 194569, 0, 194568, 1301, 0, 42589, 569, 0, 73813, 711, 119085, 
-    0, 0, 73880, 11610, 11368, 0, 194571, 41331, 1006, 74240, 0, 1550, 8201, 
-    73737, 7627, 5499, 5031, 77908, 42738, 65784, 77907, 65267, 3758, 0, 
-    65781, 64734, 0, 2440, 65780, 77913, 8449, 0, 5008, 0, 8822, 0, 12121, 
-    8255, 5512, 73875, 119560, 0, 64313, 2641, 5906, 1119, 127068, 13038, 0, 
-    2455, 0, 118809, 0, 0, 0, 0, 8714, 0, 4211, 0, 0, 0, 0, 43713, 5052, 
-    66220, 5821, 6186, 65778, 65775, 5051, 65773, 1429, 42647, 5050, 302, 
-    388, 41115, 735, 6637, 5907, 120670, 0, 12726, 74594, 9117, 0, 195010, 
-    5513, 6666, 5053, 74230, 5510, 78451, 0, 78447, 2470, 78437, 0, 1925, 0, 
-    0, 74807, 0, 5048, 5047, 0, 0, 0, 194863, 0, 74497, 0, 8089, 6929, 639, 
-    0, 68179, 0, 0, 0, 4599, 41402, 6674, 43397, 43294, 1476, 648, 0, 65819, 
-    3233, 0, 41782, 6951, 0, 0, 3530, 9750, 0, 0, 6656, 194858, 0, 5046, 
-    8512, 65856, 74261, 8967, 0, 5045, 0, 1916, 7986, 5044, 120556, 9006, 
-    13128, 5043, 0, 7853, 74068, 74004, 9669, 12341, 12703, 8402, 0, 119070, 
-    0, 41750, 3586, 64508, 43148, 0, 0, 119606, 0, 13296, 517, 0, 0, 0, 
-    41528, 123, 65454, 0, 0, 74478, 10531, 7784, 41526, 10829, 73991, 8057, 
-    1126, 73895, 0, 194591, 0, 3925, 4251, 8069, 10517, 120439, 489, 0, 4250, 
-    120441, 120452, 43151, 0, 0, 66200, 0, 0, 0, 78423, 0, 0, 8711, 6183, 0, 
-    0, 0, 120448, 7623, 118925, 194853, 9235, 12760, 74176, 0, 66445, 43540, 
-    120437, 3743, 11514, 11078, 0, 12136, 0, 0, 120435, 0, 7726, 0, 19922, 
-    267, 3393, 42198, 1371, 194849, 69233, 2458, 0, 6201, 0, 41074, 4266, 
-    10652, 41612, 41077, 3402, 9050, 3398, 0, 0, 0, 3391, 41075, 2476, 0, 
-    917550, 0, 10625, 0, 12767, 13017, 78743, 64261, 64934, 127537, 13014, 
-    13013, 0, 6673, 0, 0, 0, 12438, 0, 0, 0, 0, 0, 9053, 13015, 74523, 0, 
-    704, 66215, 6195, 0, 6660, 78758, 917760, 917793, 42212, 12629, 11435, 0, 
-    55256, 65538, 0, 0, 0, 74547, 0, 65448, 78100, 12948, 119001, 195002, 
-    119238, 195004, 78099, 127085, 0, 0, 4287, 8276, 4902, 1131, 0, 78458, 
-    66728, 1816, 0, 42533, 168, 42845, 4898, 64298, 0, 0, 4901, 1821, 0, 578, 
-    3653, 0, 791, 9162, 6977, 0, 119298, 74561, 0, 73731, 8354, 43590, 0, 0, 
-    7557, 0, 119301, 8234, 7241, 0, 194994, 119167, 194996, 12811, 65925, 
-    3946, 78078, 10998, 78080, 673, 194867, 64397, 0, 74599, 78449, 8890, 
-    194977, 194976, 2448, 78085, 10267, 8424, 2452, 78083, 194864, 8729, 
-    78456, 0, 7845, 0, 78692, 4408, 4122, 6772, 11039, 8723, 194990, 194989, 
-    119302, 731, 119304, 119303, 2438, 64855, 119300, 119299, 1175, 0, 42135, 
-    373, 119172, 5396, 11457, 11521, 7723, 0, 0, 0, 41952, 0, 5273, 8248, 
-    5269, 6337, 5202, 2404, 5267, 42823, 11291, 19915, 5277, 12963, 0, 6189, 
-    4125, 1314, 12133, 0, 118873, 1271, 0, 0, 66024, 41482, 3864, 74539, 0, 
-    3879, 0, 12978, 4166, 4574, 0, 7567, 7459, 0, 41390, 5384, 41882, 67647, 
-    0, 5759, 0, 0, 41388, 0, 41392, 64288, 41387, 0, 8706, 5552, 0, 700, 0, 
-    5553, 0, 7088, 5356, 7499, 78110, 66596, 0, 0, 10263, 5554, 0, 12344, 
-    10311, 78113, 6665, 0, 0, 7618, 8517, 11455, 78440, 64632, 66017, 5555, 
-    78088, 78093, 78091, 0, 42803, 65033, 9143, 6668, 195067, 195066, 195069, 
-    656, 195071, 65037, 4577, 64624, 0, 0, 0, 0, 4269, 73885, 917775, 42846, 
-    917774, 950, 0, 0, 66580, 118895, 66683, 10554, 917778, 119121, 0, 5098, 
-    917770, 0, 119099, 5097, 4935, 9848, 10381, 0, 917560, 0, 3651, 0, 0, 
-    127556, 5102, 5101, 10269, 12983, 8138, 4517, 1932, 5100, 1439, 12093, 
-    1247, 10034, 195064, 5099, 78373, 1441, 42087, 3063, 650, 0, 7838, 0, 
-    195041, 195040, 119142, 9031, 120790, 195044, 9078, 8545, 66356, 195048, 
-    0, 9154, 9118, 0, 0, 2676, 7750, 0, 73812, 6190, 8599, 195053, 0, 10795, 
-    9857, 7014, 9856, 195033, 0, 12129, 0, 8481, 0, 6202, 195035, 10920, 
-    195037, 5203, 195039, 195038, 5108, 5107, 65818, 66019, 9762, 0, 5541, 
-    74772, 0, 12613, 5284, 6657, 207, 0, 4275, 74819, 854, 68147, 74381, 0, 
-    0, 5103, 0, 64348, 41368, 43974, 488, 69811, 0, 0, 10157, 0, 43034, 
-    11438, 0, 0, 0, 68431, 41771, 5106, 6669, 8504, 65154, 69813, 41367, 
-    5105, 195030, 69809, 6476, 5104, 0, 304, 3176, 0, 0, 932, 0, 6567, 238, 
-    74522, 195011, 194595, 19905, 120577, 195015, 120187, 41044, 67640, 
-    194902, 42055, 9912, 65939, 10670, 74093, 13273, 0, 12552, 195019, 8803, 
-    309, 6622, 8151, 10858, 194596, 67636, 0, 12568, 0, 12553, 0, 43275, 
-    6950, 9712, 68680, 43970, 0, 65165, 0, 0, 66466, 0, 0, 0, 66725, 6191, 
-    11351, 10437, 11316, 67634, 0, 0, 41754, 67635, 9370, 2720, 194975, 
-    68462, 8232, 118817, 0, 3222, 0, 0, 0, 66663, 0, 0, 10834, 0, 0, 65732, 
-    0, 917547, 119579, 67679, 195020, 0, 7781, 41383, 64568, 0, 120738, 
-    12077, 0, 64586, 917620, 42396, 55255, 3475, 0, 2479, 0, 3632, 120728, 
-    10698, 8376, 3648, 194960, 74844, 67639, 3636, 67894, 3650, 8837, 65229, 
-    1843, 42283, 43250, 41562, 9100, 74548, 0, 3640, 0, 42321, 7284, 194974, 
-    194973, 194950, 194949, 194952, 194951, 0, 194953, 42080, 2529, 0, 0, 0, 
-    42083, 120678, 68398, 194957, 67619, 66367, 194958, 9634, 0, 9988, 0, 
-    41068, 0, 0, 65264, 0, 0, 917923, 0, 785, 8236, 194942, 9027, 68160, 
-    67623, 64383, 0, 925, 0, 0, 41985, 41071, 9586, 0, 41984, 9217, 0, 0, 0, 
-    9186, 2067, 4016, 0, 0, 381, 0, 0, 42077, 0, 194946, 5184, 42078, 194947, 
-    10810, 0, 4585, 19943, 5860, 67633, 0, 0, 812, 3615, 0, 5178, 44000, 
-    120548, 78807, 5188, 74287, 67629, 3605, 10692, 1166, 64429, 42639, 924, 
-    0, 67631, 0, 0, 2442, 10703, 78789, 67632, 917924, 12771, 12736, 12753, 
-    0, 73933, 67626, 42401, 0, 0, 127373, 42288, 12751, 0, 8542, 13145, 0, 
-    2468, 66706, 41294, 3626, 3883, 64388, 42479, 0, 41117, 0, 0, 0, 0, 
-    67624, 0, 1290, 0, 65585, 2715, 806, 65208, 41884, 917883, 7027, 64731, 
-    0, 0, 0, 66325, 3465, 2405, 9240, 0, 12756, 65259, 0, 0, 12752, 5833, 
-    1432, 0, 41883, 73912, 9799, 0, 41886, 2480, 0, 2062, 127293, 6494, 5537, 
-    78656, 0, 194587, 0, 1211, 0, 0, 0, 118832, 12318, 0, 0, 0, 10622, 0, 0, 
-    0, 6566, 78659, 0, 73780, 0, 64864, 0, 78660, 0, 8284, 0, 0, 3589, 0, 
-    4035, 6492, 118981, 4265, 6642, 3977, 74186, 41778, 836, 119216, 2488, 0, 
-    4582, 0, 0, 41777, 12926, 0, 7528, 10550, 0, 0, 0, 0, 0, 1374, 64878, 
-    119014, 0, 42389, 41374, 0, 0, 78492, 41377, 0, 0, 400, 12597, 120586, 0, 
-    0, 6661, 0, 64827, 0, 73817, 390, 0, 74755, 0, 3473, 7718, 0, 0, 0, 
-    55285, 0, 0, 0, 11969, 0, 0, 6365, 1887, 6763, 0, 8080, 7006, 0, 0, 6757, 
-    0, 1544, 0, 6766, 64677, 120716, 0, 6146, 0, 771, 0, 0, 12812, 13168, 
-    42272, 12200, 917927, 7904, 0, 953, 12917, 0, 12300, 0, 11491, 9724, 
-    10341, 0, 9524, 7490, 11389, 7489, 3379, 0, 7487, 0, 471, 7484, 7482, 
-    6753, 7480, 7479, 7478, 7477, 6501, 7475, 6918, 7473, 7472, 2474, 7470, 
-    7468, 10232, 10615, 10213, 0, 120222, 10049, 78884, 3544, 0, 6017, 65311, 
-    0, 120216, 13306, 10533, 7870, 73949, 7625, 0, 120544, 0, 0, 0, 0, 0, 0, 
-    19961, 2472, 42665, 120699, 0, 6019, 4256, 120776, 74380, 0, 42675, 
-    42658, 12845, 0, 0, 65138, 119355, 67862, 0, 65671, 120000, 120008, 8066, 
-    7678, 74865, 0, 0, 0, 0, 7186, 0, 120555, 0, 445, 120566, 0, 0, 0, 8330, 
-    0, 0, 42797, 0, 120215, 0, 3902, 0, 1770, 0, 0, 1560, 120209, 194972, 
-    4584, 73843, 0, 11712, 10866, 118928, 1118, 0, 0, 0, 1081, 7436, 68420, 
-    7252, 0, 5996, 0, 4903, 0, 41386, 5162, 119189, 1330, 0, 42848, 0, 12047, 
-    41384, 0, 0, 1848, 4334, 6324, 41975, 64777, 10674, 12308, 12186, 0, 0, 
-    0, 12715, 0, 0, 0, 2018, 66672, 41979, 66685, 119157, 0, 0, 0, 126984, 0, 
-    9334, 0, 127310, 0, 7975, 0, 77957, 0, 66621, 4884, 66597, 0, 0, 0, 6313, 
-    65513, 0, 0, 0, 0, 2345, 43697, 463, 0, 0, 119607, 3117, 5460, 0, 0, 0, 
-    0, 42279, 194577, 0, 78415, 0, 0, 0, 13248, 0, 0, 0, 0, 0, 0, 5663, 0, 0, 
-    0, 0, 2482, 1471, 0, 0, 42247, 12378, 73925, 127233, 0, 12374, 0, 0, 0, 
-    0, 2460, 0, 11944, 12376, 0, 64679, 0, 12380, 10557, 64473, 5870, 0, 
-    2024, 0, 0, 0, 539, 0, 0, 0, 3853, 65180, 0, 120796, 120245, 0, 0, 8659, 
-    0, 12474, 0, 9503, 194969, 2478, 0, 4162, 0, 4260, 12953, 0, 120089, 
-    12470, 0, 74189, 2742, 12476, 11798, 10946, 0, 5000, 0, 0, 0, 0, 8213, 
-    74017, 7771, 6161, 0, 6709, 0, 78885, 0, 194892, 120582, 78547, 0, 10301, 
-    10333, 10397, 0, 0, 73791, 0, 0, 0, 0, 0, 4014, 12842, 73952, 12015, 0, 
-    8275, 3893, 0, 0, 127555, 7221, 42147, 0, 74550, 74465, 64747, 118841, 0, 
-    12516, 4444, 0, 119017, 74537, 10892, 8231, 0, 6473, 41968, 78388, 41973, 
-    3591, 41969, 0, 2453, 0, 0, 64705, 0, 0, 10349, 10413, 43591, 41962, 
-    3202, 74353, 0, 8316, 0, 0, 0, 687, 0, 0, 0, 1840, 0, 68671, 119809, 
-    4883, 285, 4723, 77927, 0, 4459, 74577, 0, 41720, 11089, 240, 19906, 0, 
-    42323, 0, 9743, 120232, 13134, 0, 0, 0, 0, 0, 42634, 0, 43437, 3081, 
-    11463, 120230, 0, 0, 10445, 0, 0, 66717, 2614, 9125, 119023, 1729, 0, 
-    120236, 65221, 63883, 43334, 64852, 0, 120235, 66201, 0, 66578, 5001, 
-    41879, 74427, 4121, 5003, 884, 66700, 63879, 4943, 5150, 73889, 74182, 0, 
-    643, 3086, 0, 42448, 42299, 58, 0, 0, 120083, 63873, 8491, 0, 0, 0, 4530, 
-    42409, 0, 194575, 2721, 120074, 119096, 19929, 0, 194574, 0, 4242, 4264, 
-    120077, 0, 66179, 42412, 65941, 13114, 64522, 10740, 3094, 0, 9754, 
-    119102, 4437, 73948, 0, 0, 55280, 42174, 194925, 42430, 0, 0, 42355, 
-    66026, 4306, 41380, 68432, 0, 0, 66667, 127309, 0, 0, 42200, 42566, 0, 0, 
-    5088, 6948, 0, 8524, 0, 0, 12385, 0, 0, 0, 1386, 64580, 11480, 6116, 
-    65039, 65038, 12392, 65036, 8064, 0, 12101, 5822, 119004, 2080, 710, 
-    77999, 11663, 1666, 42091, 119657, 12383, 43671, 42092, 68418, 4289, 0, 
-    63896, 12061, 42096, 43621, 3362, 12377, 0, 0, 68449, 7461, 73901, 1244, 
-    331, 73786, 12683, 10662, 0, 8112, 0, 65852, 0, 12379, 194877, 120818, 
-    41964, 42208, 63843, 2084, 41965, 0, 65866, 4327, 0, 63840, 78549, 41220, 
-    13032, 0, 584, 12933, 43177, 12373, 0, 13000, 1351, 0, 8698, 12665, 0, 
-    1930, 0, 78229, 12427, 66514, 0, 13031, 0, 63901, 0, 3657, 0, 65202, 
-    6000, 119206, 12426, 0, 0, 41740, 12428, 41283, 41916, 119210, 0, 0, 
-    12429, 6727, 0, 7562, 0, 5170, 0, 41755, 676, 0, 66704, 66664, 9978, 
-    66491, 3536, 0, 9752, 0, 6162, 0, 69228, 10113, 41829, 65886, 5159, 
-    12422, 41832, 439, 43077, 0, 42207, 74549, 11796, 40970, 41830, 0, 
-    917799, 8308, 917797, 917796, 0, 67864, 917801, 917800, 12336, 4135, 
-    69805, 341, 2727, 4129, 3539, 0, 63861, 0, 7913, 0, 63859, 4131, 63868, 
-    0, 63867, 4133, 11371, 210, 4600, 0, 74560, 4137, 8082, 78506, 119062, 
-    78504, 6704, 4591, 0, 0, 0, 9680, 0, 120623, 561, 12159, 195, 78508, 
-    41501, 0, 42031, 5719, 7172, 42687, 8368, 0, 41499, 0, 0, 42242, 41498, 
-    917794, 42025, 78567, 65805, 42463, 0, 2924, 0, 120510, 0, 0, 119213, 
-    73941, 0, 42330, 917784, 3969, 0, 0, 7169, 1992, 9652, 73977, 7246, 
-    42086, 917790, 917789, 0, 0, 0, 0, 0, 327, 0, 9042, 917777, 917776, 
-    65148, 12433, 917781, 127276, 917779, 12431, 8668, 12434, 0, 917782, 
-    5999, 0, 7712, 12432, 0, 43653, 1726, 1015, 0, 8212, 0, 0, 42423, 119066, 
-    0, 0, 66709, 0, 8811, 927, 0, 0, 12436, 0, 42021, 0, 0, 1299, 12240, 
-    42350, 65143, 0, 195016, 0, 78197, 11348, 0, 78037, 0, 0, 0, 19914, 
-    12179, 0, 9648, 194923, 63836, 63832, 917773, 10967, 63816, 2594, 3444, 
-    63817, 64651, 0, 41503, 0, 11265, 0, 0, 194922, 0, 5664, 3972, 0, 0, 0, 
-    917766, 12416, 917764, 119608, 10816, 917769, 917768, 12418, 74111, 3882, 
-    8532, 917771, 1573, 0, 119847, 4596, 66339, 12417, 66001, 65343, 194782, 
-    12414, 8287, 68219, 195017, 68108, 1143, 119169, 0, 12415, 6626, 42763, 
-    0, 118884, 9021, 120783, 0, 11724, 0, 0, 127104, 194794, 0, 0, 8027, 
-    10997, 9171, 12741, 11400, 74197, 194799, 0, 194798, 0, 0, 0, 127523, 
-    120190, 194773, 67608, 194772, 42368, 0, 7715, 3881, 41487, 12118, 42514, 
-    68651, 0, 0, 3009, 41476, 41489, 69825, 3007, 1448, 3018, 194809, 3889, 
-    8521, 5083, 5082, 119859, 120184, 8519, 0, 3014, 5081, 65853, 0, 0, 
-    120183, 78219, 5079, 64802, 42210, 4597, 65532, 78444, 120185, 12371, 0, 
-    8407, 0, 10805, 8518, 10779, 120188, 0, 0, 12367, 42170, 0, 0, 629, 1924, 
-    0, 12037, 74366, 5987, 8462, 8005, 12365, 63933, 127370, 120815, 12369, 
-    10649, 0, 5077, 127108, 10880, 63927, 5075, 0, 0, 65075, 0, 11007, 0, 
-    66659, 0, 0, 66684, 0, 3434, 4954, 1904, 0, 5266, 126980, 5272, 10499, 
-    4507, 9578, 63923, 120177, 7979, 0, 9831, 0, 194926, 461, 9803, 0, 4504, 
-    1505, 0, 6325, 5276, 43021, 0, 0, 55236, 0, 66461, 5177, 41324, 12055, 
-    8722, 0, 41327, 0, 66695, 4114, 409, 4383, 8900, 8948, 41325, 0, 721, 
-    10182, 9108, 0, 0, 119185, 42229, 194912, 0, 5998, 0, 42353, 74825, 0, 
-    12587, 0, 78571, 0, 0, 0, 41576, 42215, 78570, 119207, 0, 8578, 5995, 
-    7573, 41575, 74789, 74752, 63944, 63949, 64767, 2670, 4167, 0, 11723, 0, 
-    74120, 0, 65076, 938, 43414, 73854, 11737, 9721, 0, 0, 0, 11742, 0, 0, 
-    11493, 12334, 0, 4153, 12302, 10793, 5250, 12407, 11978, 4404, 9189, 
-    12401, 42007, 5775, 6759, 65806, 43997, 0, 42002, 12404, 0, 0, 4940, 
-    12410, 7683, 1167, 73729, 4983, 0, 861, 0, 0, 0, 0, 65577, 43370, 0, 0, 
-    11956, 0, 0, 0, 9616, 6631, 0, 12816, 74583, 42218, 12710, 68674, 12721, 
-    4101, 66185, 0, 5992, 7616, 0, 0, 12577, 0, 0, 853, 42693, 0, 0, 0, 5016, 
-    43535, 63893, 42835, 9491, 917913, 0, 917914, 0, 12712, 917919, 0, 65060, 
-    120797, 9900, 0, 0, 194919, 0, 0, 0, 64778, 12585, 10565, 0, 12177, 0, 0, 
-    0, 77824, 0, 4900, 0, 12878, 0, 8984, 4119, 74768, 8971, 78593, 43113, 
-    9702, 78594, 11025, 9245, 13048, 4927, 4138, 74185, 194921, 0, 12397, 
-    77827, 0, 13054, 12394, 0, 0, 0, 13053, 0, 3948, 10781, 1546, 0, 5010, 
-    1680, 10507, 78590, 78583, 0, 0, 0, 194915, 7267, 0, 74833, 0, 5993, 
-    2819, 0, 12706, 77840, 1893, 7266, 63915, 7264, 7265, 0, 1363, 0, 63997, 
-    63910, 63996, 3077, 0, 0, 1512, 0, 12589, 41479, 0, 0, 43339, 0, 9836, 
-    120727, 0, 41481, 43335, 7832, 42343, 3090, 43337, 817, 1664, 1850, 0, 
-    3079, 11340, 42408, 42447, 194704, 120020, 42307, 12386, 42304, 0, 0, 
-    12389, 0, 194694, 41996, 11526, 63985, 5864, 1147, 63992, 42887, 1987, 0, 
-    5480, 7858, 11653, 4116, 12391, 66193, 0, 4939, 12384, 0, 0, 41686, 
-    63905, 119601, 194688, 0, 0, 12649, 0, 0, 8247, 507, 91, 2042, 120775, 
-    43643, 194689, 66028, 10036, 41844, 119813, 774, 119831, 0, 119815, 5994, 
-    12539, 0, 78375, 120597, 119833, 0, 119600, 0, 0, 7719, 6026, 2486, 0, 
-    119808, 162, 0, 65219, 41073, 9687, 41681, 6304, 119812, 66196, 0, 5262, 
-    0, 55233, 12681, 42379, 0, 7534, 12219, 0, 127528, 42810, 10492, 0, 0, 0, 
-    43119, 0, 120753, 12403, 2500, 195013, 0, 4899, 0, 0, 0, 74113, 2343, 
-    4103, 19946, 74112, 77851, 13112, 0, 0, 12859, 0, 120148, 66369, 5861, 0, 
-    11999, 12400, 0, 0, 12645, 5146, 11320, 68410, 6748, 65040, 0, 64184, 
-    12974, 64183, 67613, 120645, 5147, 0, 0, 74524, 0, 1928, 0, 67649, 5991, 
-    3445, 67609, 4976, 64176, 0, 67610, 8241, 0, 77868, 4206, 0, 0, 0, 0, 0, 
-    10138, 0, 0, 8897, 0, 0, 8357, 4124, 77862, 65836, 120641, 0, 77859, 0, 
-    0, 1123, 963, 41553, 10120, 12405, 120150, 0, 398, 13278, 9723, 6366, 
-    120311, 7945, 0, 4402, 9970, 12402, 0, 42392, 1305, 12408, 0, 44007, 0, 
-    0, 41464, 12411, 12969, 120824, 41465, 0, 8528, 1575, 0, 63955, 165, 
-    3024, 41467, 119163, 0, 9093, 0, 9147, 0, 63958, 0, 9148, 9692, 4096, 53, 
-    73776, 6750, 195018, 0, 9594, 0, 0, 43527, 0, 727, 0, 0, 5805, 0, 6726, 
-    0, 42176, 12370, 11655, 119095, 10591, 12364, 0, 12372, 120642, 120307, 
-    0, 0, 0, 12366, 10963, 6066, 1329, 0, 3052, 9220, 0, 64478, 0, 10803, 
-    4132, 120306, 68474, 0, 0, 0, 74837, 0, 1499, 0, 8055, 42740, 63965, 0, 
-    63962, 74042, 8924, 43123, 5988, 3660, 63969, 11781, 42718, 8788, 1357, 
-    64851, 65743, 0, 8774, 0, 127086, 9941, 120172, 0, 1933, 120154, 9564, 0, 
-    0, 73866, 0, 0, 2487, 67614, 3121, 1804, 3311, 67615, 0, 78302, 12220, 
-    67616, 120598, 0, 0, 68200, 6675, 0, 0, 67592, 120685, 0, 64771, 1198, 
-    9132, 0, 64619, 510, 64663, 0, 0, 4561, 2101, 1398, 0, 0, 74034, 41569, 
-    0, 11406, 8167, 12127, 0, 840, 0, 0, 0, 6967, 0, 0, 9796, 0, 333, 0, 0, 
-    8144, 0, 0, 0, 12406, 0, 19931, 119089, 6678, 7769, 0, 12621, 0, 0, 
-    10227, 4764, 43101, 9981, 0, 40986, 4127, 66487, 0, 42202, 12754, 195022, 
-    0, 0, 0, 67594, 2048, 12944, 4050, 67595, 917967, 43102, 10581, 12985, 
-    4533, 195021, 74003, 6490, 0, 12038, 0, 0, 120704, 65461, 9798, 0, 0, 
-    1948, 119007, 0, 952, 0, 0, 0, 120802, 6449, 9494, 120313, 0, 43098, 
-    4843, 8142, 64160, 4098, 64170, 0, 0, 3436, 0, 0, 12817, 67597, 6676, 
-    3930, 66708, 0, 0, 67598, 0, 0, 0, 65591, 41581, 65916, 1453, 0, 0, 0, 
-    8500, 42222, 120142, 73743, 120400, 4317, 11543, 67676, 64676, 0, 0, 
-    67606, 119083, 0, 42217, 13102, 0, 66003, 6672, 0, 0, 0, 0, 63841, 9613, 
-    9001, 4526, 11274, 67601, 64520, 64210, 6664, 78704, 42056, 10228, 64957, 
-    11281, 0, 64213, 1469, 66640, 65381, 42197, 4988, 42372, 0, 9598, 904, 
-    352, 42225, 1451, 8061, 8453, 4134, 0, 74847, 66576, 0, 0, 10520, 8575, 
-    9960, 1201, 0, 12846, 0, 0, 11919, 64962, 0, 43739, 127281, 8511, 9460, 
-    823, 11587, 12305, 0, 64695, 0, 12387, 1253, 13183, 65766, 500, 42783, 
-    65765, 64208, 64369, 65760, 65761, 119585, 11606, 64784, 11702, 66498, 
-    9821, 0, 0, 5152, 11048, 7533, 68366, 64410, 0, 0, 4323, 120062, 0, 0, 
-    127052, 42587, 42214, 41394, 0, 4763, 4112, 118935, 0, 5260, 43143, 0, 
-    326, 120131, 68423, 0, 10771, 2876, 74074, 194835, 194924, 41398, 7382, 
-    9802, 127077, 127076, 453, 41396, 120524, 42720, 12140, 9572, 0, 7003, 
-    194883, 42334, 7704, 0, 0, 43144, 4123, 8494, 43146, 9977, 0, 0, 65759, 
-    10765, 64061, 4465, 9808, 64056, 65582, 4126, 0, 9521, 9589, 64755, 0, 
-    64020, 0, 10464, 0, 0, 194869, 64514, 11528, 64024, 0, 679, 64013, 0, 
-    5850, 758, 7536, 0, 0, 41441, 10693, 64006, 0, 64005, 10541, 119019, 0, 
-    64660, 0, 119050, 0, 0, 1139, 43298, 64027, 64029, 8970, 0, 64000, 0, 
-    10774, 0, 42201, 12421, 194876, 0, 1852, 3057, 0, 73744, 64034, 64039, 0, 
-    0, 0, 0, 0, 7645, 12854, 74338, 3496, 0, 0, 0, 9102, 627, 0, 6158, 8327, 
-    74553, 66632, 12419, 13309, 11570, 0, 19960, 11696, 0, 1018, 118970, 
-    194909, 0, 1682, 194896, 194911, 42756, 6765, 194906, 0, 0, 73814, 11412, 
-    6768, 10728, 194830, 119010, 118863, 43311, 64966, 11577, 0, 43040, 1833, 
-    11576, 0, 74779, 0, 185, 65085, 74533, 64754, 194848, 7535, 8085, 42525, 
-    120387, 9749, 41701, 6131, 1949, 4117, 7847, 120489, 194711, 64483, 
-    65693, 0, 0, 0, 0, 42240, 0, 0, 42864, 0, 64667, 41868, 1184, 0, 815, 
-    11484, 127535, 67840, 0, 0, 0, 0, 10986, 64683, 0, 0, 0, 0, 0, 9879, 0, 
-    0, 4158, 0, 68166, 0, 0, 0, 0, 0, 332, 118808, 0, 5142, 2407, 0, 42199, 
-    0, 0, 74373, 0, 55217, 0, 63870, 43163, 0, 0, 119081, 42867, 1834, 0, 0, 
-    69817, 10940, 65249, 119040, 8662, 0, 0, 2652, 120527, 11539, 10784, 
-    195093, 67674, 0, 0, 0, 0, 74562, 917505, 1828, 74474, 120327, 78620, 
-    8531, 12499, 6280, 12324, 118854, 65238, 68374, 4832, 65573, 0, 6279, 
-    12508, 12904, 12502, 9161, 0, 1620, 0, 3601, 195094, 0, 0, 609, 11555, 0, 
-    12496, 0, 74181, 4343, 12505, 0, 0, 0, 11377, 239, 0, 637, 0, 0, 42671, 
-    0, 0, 0, 43565, 127082, 0, 12696, 0, 0, 0, 12929, 0, 712, 0, 4197, 0, 
-    42818, 0, 0, 120490, 0, 0, 1506, 43562, 0, 0, 0, 12651, 0, 64628, 74517, 
-    12058, 74084, 917838, 7494, 0, 4924, 65592, 118844, 0, 127088, 355, 9719, 
-    127087, 13066, 64796, 0, 0, 12033, 42178, 0, 69760, 42571, 917837, 0, 0, 
-    0, 0, 0, 0, 3178, 0, 0, 0, 0, 9080, 127000, 120352, 0, 68209, 0, 11082, 
-    0, 5699, 195100, 66000, 9488, 65166, 119112, 0, 0, 0, 0, 0, 0, 5265, 
-    69235, 0, 11487, 67858, 12464, 0, 43045, 0, 0, 43345, 0, 10770, 118994, 
-    6807, 465, 9829, 0, 74348, 0, 43346, 8116, 795, 0, 0, 12462, 10930, 
-    10831, 0, 118952, 64362, 74334, 0, 120811, 0, 12468, 8607, 1008, 0, 
-    10092, 0, 917842, 67855, 55257, 73771, 1766, 11282, 11996, 1820, 4547, 0, 
-    0, 0, 0, 13223, 0, 64595, 0, 0, 0, 4345, 12616, 0, 0, 0, 74467, 0, 0, 0, 
-    5382, 0, 0, 0, 119060, 64953, 5406, 19920, 0, 66510, 3590, 0, 1130, 0, 0, 
-    42016, 11823, 43023, 0, 118896, 7742, 0, 13280, 0, 9326, 73826, 5310, 
-    74812, 0, 119962, 8959, 43589, 6747, 66723, 0, 8568, 0, 120496, 73816, 
-    120803, 0, 42670, 0, 11621, 12460, 0, 120631, 0, 43063, 74519, 0, 0, 0, 
-    0, 0, 11689, 5410, 5783, 10468, 8403, 5400, 11594, 0, 0, 118990, 10491, 
-    0, 64412, 0, 0, 5587, 42865, 64404, 8268, 4923, 65086, 8981, 12382, 
-    42133, 120755, 9706, 0, 0, 66610, 10461, 12103, 0, 8642, 0, 42766, 0, 
-    66566, 9983, 0, 119105, 0, 0, 0, 7398, 41515, 0, 11802, 8041, 1461, 910, 
-    119133, 0, 6749, 3658, 0, 120525, 0, 7617, 0, 12888, 0, 67668, 13143, 0, 
-    41514, 11097, 5703, 0, 41517, 41504, 41519, 10016, 64305, 0, 65864, 623, 
-    781, 670, 10660, 5769, 613, 7543, 120279, 477, 41083, 0, 0, 592, 1578, 
-    12459, 43449, 0, 0, 8225, 0, 654, 11345, 653, 652, 0, 647, 0, 633, 
-    120744, 0, 0, 12480, 43243, 0, 39, 12487, 0, 120529, 74199, 12482, 0, 
-    12489, 0, 3195, 5550, 0, 7897, 0, 1203, 74396, 1813, 64544, 41311, 12090, 
-    0, 2877, 0, 0, 1675, 0, 0, 0, 0, 10070, 10595, 0, 119077, 0, 0, 0, 0, 0, 
-    43244, 0, 0, 0, 119561, 0, 0, 0, 0, 0, 0, 0, 77860, 0, 0, 270, 0, 10714, 
-    0, 0, 0, 0, 0, 65372, 0, 74038, 119558, 6273, 66679, 364, 9595, 194908, 
-    0, 0, 707, 0, 0, 9282, 66489, 224, 0, 68670, 9332, 4966, 68677, 0, 68644, 
-    0, 3841, 68634, 0, 10732, 68640, 850, 4972, 0, 64699, 2909, 68619, 44008, 
-    68627, 0, 11544, 10203, 9608, 0, 0, 11962, 0, 12507, 1196, 0, 0, 777, 0, 
-    4375, 65271, 67678, 0, 12198, 0, 64824, 0, 0, 9454, 63778, 8658, 42528, 
-    0, 2705, 917975, 41520, 0, 0, 11986, 7765, 42502, 8280, 0, 2701, 0, 0, 
-    5767, 0, 0, 9809, 8353, 63747, 66701, 63772, 0, 63745, 1748, 63770, 0, 0, 
-    0, 65542, 63766, 55244, 3061, 0, 63764, 63787, 9067, 6096, 0, 7694, 0, 
-    7257, 63768, 3485, 12987, 0, 127522, 120628, 63807, 1591, 0, 6386, 63783, 
-    0, 0, 0, 0, 0, 0, 74575, 0, 65719, 13083, 64574, 65012, 0, 1640, 12495, 
-    66691, 7624, 3138, 10996, 0, 1922, 0, 12498, 10987, 0, 0, 3894, 65543, 0, 
-    194842, 0, 493, 0, 43197, 1717, 4228, 479, 10303, 74020, 0, 917935, 
-    10335, 3520, 917932, 12490, 64315, 0, 127039, 12493, 6233, 42681, 1002, 
-    12491, 0, 64911, 127040, 2096, 65120, 0, 0, 0, 11611, 66228, 127041, 
-    66213, 63864, 66221, 66226, 66229, 13218, 66231, 66216, 8507, 66236, 
-    66211, 66218, 0, 66240, 78041, 66233, 8928, 0, 7909, 66234, 11605, 63759, 
-    0, 66208, 73999, 63799, 63803, 244, 11542, 12898, 12494, 73761, 12492, 
-    12669, 0, 0, 74153, 0, 0, 120680, 4882, 13040, 0, 8612, 4885, 74053, 0, 
-    13042, 4880, 64662, 2429, 1360, 248, 0, 63797, 0, 42358, 0, 7292, 0, 
-    63756, 42786, 66693, 0, 1870, 78040, 470, 78038, 78035, 78036, 0, 78034, 
-    4579, 0, 0, 12511, 74453, 12514, 0, 74579, 7239, 7001, 8623, 0, 0, 0, 
-    7378, 12512, 11615, 6104, 0, 0, 659, 6098, 0, 12234, 127307, 127067, 
-    8311, 12510, 41803, 13039, 127072, 12513, 10202, 12471, 0, 8747, 0, 0, 0, 
-    2323, 0, 2319, 77917, 12477, 77916, 2311, 0, 4415, 237, 6281, 0, 0, 0, 
-    2309, 1312, 8173, 0, 12469, 0, 78505, 64335, 10609, 0, 0, 9397, 11524, 
-    9395, 9396, 9393, 9394, 9391, 9392, 9389, 6209, 9387, 9388, 4932, 9386, 
-    9383, 9384, 6740, 0, 65451, 8185, 0, 917832, 43024, 43336, 67659, 2313, 
-    0, 7948, 9236, 0, 0, 0, 10570, 43473, 6289, 10484, 0, 0, 11998, 12082, 
-    10924, 3147, 0, 120684, 12524, 0, 2310, 11818, 9381, 9382, 9379, 9380, 
-    9377, 9378, 9375, 9376, 1683, 9374, 0, 9372, 12444, 0, 0, 13016, 8210, 0, 
-    42029, 11079, 12331, 43451, 42032, 8744, 726, 0, 0, 4155, 0, 0, 42030, 
-    5007, 12522, 43088, 0, 4951, 0, 127240, 0, 9922, 43309, 0, 12525, 0, 
-    12016, 65770, 9548, 67665, 403, 78230, 12503, 0, 0, 11030, 0, 0, 65691, 
-    63998, 1819, 10496, 0, 0, 119920, 0, 0, 0, 12506, 0, 12231, 0, 12500, 
-    44023, 12509, 64393, 78830, 3389, 10589, 6608, 41047, 120321, 78395, 
-    78394, 74069, 77995, 78391, 3608, 8281, 120320, 1107, 0, 9076, 8862, 0, 
-    41052, 13084, 64766, 43217, 7803, 13222, 74165, 74782, 0, 8546, 11553, 
-    63995, 13177, 9043, 6303, 0, 498, 64471, 120324, 0, 12529, 8042, 0, 2344, 
-    12528, 8031, 2414, 0, 0, 3231, 0, 6422, 66512, 0, 12530, 2537, 78405, 
-    41429, 12658, 13036, 65772, 0, 78738, 41433, 4719, 469, 0, 4363, 3313, 
-    41428, 78407, 2023, 1772, 78224, 78225, 65706, 10051, 64812, 78220, 0, 
-    9920, 12215, 0, 4931, 1951, 12497, 119363, 9607, 0, 9663, 0, 119634, 
-    6503, 41110, 0, 1491, 0, 0, 0, 41061, 0, 0, 0, 65026, 41993, 41509, 
-    11045, 65028, 78602, 66476, 41108, 9738, 41995, 1075, 1958, 12535, 41992, 
-    41506, 0, 41687, 0, 120717, 0, 9940, 0, 7692, 0, 8008, 41131, 330, 8566, 
-    65083, 41133, 9816, 0, 12532, 78550, 78546, 3508, 127058, 43235, 0, 
-    127298, 69783, 78231, 6411, 12910, 78554, 66644, 13028, 6737, 12537, 0, 
-    0, 64136, 12536, 2350, 13029, 78233, 0, 0, 13030, 6702, 4527, 0, 12538, 
-    0, 0, 65599, 65717, 9966, 0, 4948, 12484, 4032, 0, 12623, 0, 6207, 0, 
-    6117, 65930, 8412, 0, 7438, 1296, 2325, 41511, 0, 10149, 74118, 0, 0, 
-    12481, 0, 12488, 0, 0, 41556, 64414, 118802, 2354, 0, 73766, 0, 6295, 
-    901, 41510, 7953, 0, 65032, 41513, 0, 11927, 66584, 78559, 78560, 78557, 
-    78558, 0, 78556, 848, 9868, 0, 6424, 78568, 119338, 78565, 74031, 78563, 
-    78564, 2352, 78572, 893, 64576, 11289, 1407, 0, 0, 13026, 6762, 78579, 
-    78580, 13023, 8903, 9777, 66715, 1871, 8099, 0, 0, 1343, 0, 0, 9325, 
-    6818, 6283, 11738, 0, 0, 0, 11741, 0, 0, 9216, 8263, 11279, 194752, 0, 
-    194754, 13021, 64494, 3136, 194758, 194757, 194760, 13022, 42737, 64588, 
-    0, 0, 74552, 10014, 0, 41260, 119340, 13020, 118993, 194764, 194767, 
-    74340, 0, 0, 64945, 8029, 0, 0, 0, 3335, 0, 0, 9776, 120526, 194748, 
-    5215, 42644, 3333, 1632, 194751, 64849, 3342, 78582, 5363, 12957, 78581, 
-    4156, 0, 0, 6421, 78591, 1611, 78589, 13018, 74257, 78588, 78584, 3337, 
-    4537, 67895, 11736, 0, 68608, 6482, 4214, 73790, 11945, 0, 13046, 8838, 
-    425, 4025, 10709, 78595, 2108, 2392, 13047, 0, 0, 6819, 13049, 6499, 
-    194739, 12424, 68614, 73944, 13050, 9924, 194745, 6507, 0, 0, 0, 3277, 
-    8929, 4947, 41055, 0, 194722, 194721, 194724, 13045, 64626, 66034, 7751, 
-    194727, 8371, 194729, 3997, 12806, 8768, 13044, 0, 12420, 4024, 194730, 
-    41054, 1078, 9757, 194734, 41057, 0, 0, 0, 0, 0, 0, 127109, 0, 41496, 0, 
-    9165, 1572, 11911, 0, 118842, 2346, 13270, 8958, 0, 9646, 3773, 43183, 
-    6401, 5831, 0, 0, 13043, 8056, 0, 65681, 208, 0, 0, 0, 0, 0, 10699, 6408, 
-    0, 7825, 5661, 0, 120630, 3603, 41109, 2398, 3548, 0, 0, 119933, 0, 3115, 
-    9918, 0, 11321, 0, 0, 0, 194726, 4876, 74286, 0, 0, 43468, 0, 41558, 
-    41471, 73950, 8158, 9944, 41472, 0, 13051, 78689, 3143, 194674, 6701, 
-    41559, 1896, 66256, 13052, 194680, 5665, 0, 119071, 7025, 63974, 0, 
-    74352, 74161, 4154, 9863, 43550, 12310, 5662, 42382, 194686, 73924, 1121, 
-    194665, 63959, 0, 9942, 13231, 0, 64752, 4732, 194666, 11596, 119931, 
-    65187, 1626, 63983, 10110, 64772, 42024, 6420, 42028, 0, 10509, 2795, 
-    4910, 194728, 69231, 64753, 6275, 917808, 118830, 63978, 11044, 3229, 
-    6423, 42774, 0, 0, 0, 12823, 2331, 917810, 42026, 6137, 0, 7524, 0, 
-    917809, 119343, 0, 8338, 0, 65043, 0, 822, 0, 9903, 64721, 42722, 194656, 
-    194659, 78655, 78661, 194660, 78662, 41265, 5311, 1795, 965, 118791, 
-    10587, 78055, 11278, 78632, 194640, 0, 12946, 194641, 120705, 194643, 
-    6294, 3144, 194648, 194647, 65019, 194649, 73990, 0, 0, 748, 41067, 2330, 
-    535, 3148, 12375, 194652, 194629, 10556, 2475, 12388, 4889, 8968, 67863, 
-    3593, 0, 0, 2342, 0, 194634, 65206, 4894, 194635, 4890, 194637, 917804, 
-    581, 4893, 0, 6571, 65545, 4888, 4157, 78048, 78049, 78046, 78047, 0, 
-    10119, 6415, 0, 0, 0, 0, 0, 11375, 64746, 2332, 78063, 412, 78061, 64932, 
-    42880, 43587, 0, 0, 0, 0, 65197, 78066, 12203, 78064, 78065, 8913, 65854, 
-    4875, 65811, 120381, 120389, 118888, 9344, 8826, 120386, 120395, 13104, 
-    74781, 11997, 120393, 78075, 0, 3134, 0, 65696, 0, 0, 66217, 0, 8334, 
-    119344, 0, 3449, 0, 0, 78414, 78413, 118950, 74011, 0, 0, 0, 0, 1908, 
-    120167, 4328, 10734, 127014, 0, 0, 7804, 78272, 10811, 6250, 11339, 4914, 
-    11367, 0, 78054, 4917, 74516, 74208, 64285, 4912, 5464, 0, 118893, 2361, 
-    7971, 78072, 78073, 55243, 78071, 0, 8086, 74317, 6707, 8319, 2312, 
-    40977, 10960, 40962, 8305, 12573, 0, 40980, 0, 13202, 0, 12582, 78282, 0, 
-    0, 42438, 55221, 6288, 78280, 0, 5653, 42400, 10891, 7698, 5658, 74045, 
-    0, 0, 0, 4913, 0, 0, 0, 42326, 0, 0, 0, 42478, 2327, 0, 12563, 42287, 
-    12705, 0, 0, 12588, 8821, 6153, 2867, 194708, 66312, 698, 194709, 194606, 
-    10356, 74075, 194713, 651, 12641, 0, 0, 0, 0, 41552, 65115, 78465, 78467, 
-    78463, 78464, 194695, 78461, 194697, 74356, 0, 4716, 43277, 0, 78474, 
-    12340, 120568, 0, 194700, 55264, 41211, 120676, 8703, 5462, 917629, 0, 
-    10101, 0, 0, 8479, 4151, 41933, 0, 0, 66254, 120821, 0, 0, 0, 0, 119194, 
-    74050, 0, 0, 0, 0, 0, 0, 12278, 0, 0, 0, 2700, 12576, 7842, 12899, 0, 0, 
-    2699, 0, 73845, 2985, 119222, 0, 917845, 12192, 119314, 0, 119312, 9827, 
-    119310, 119311, 119308, 119309, 119306, 11481, 41210, 119305, 0, 35, 
-    78481, 78482, 66694, 68479, 78477, 78478, 43596, 6090, 64257, 7812, 
-    10534, 0, 78485, 73848, 78483, 4272, 0, 40967, 40964, 917825, 12704, 
-    78487, 43306, 0, 64497, 12138, 7930, 0, 43303, 68216, 0, 917826, 5244, 
-    4189, 127098, 67596, 0, 4188, 1879, 0, 968, 0, 43743, 0, 8873, 0, 0, 
-    917827, 65555, 12574, 0, 0, 0, 74490, 127099, 43657, 0, 0, 0, 42682, 
-    12578, 12720, 0, 41227, 0, 12346, 127101, 64848, 0, 0, 7251, 0, 0, 
-    118850, 119141, 0, 66015, 0, 959, 8885, 12564, 66457, 78808, 9469, 9632, 
-    0, 74761, 64323, 0, 0, 0, 0, 310, 0, 41281, 10976, 0, 194768, 0, 74266, 
-    10054, 6497, 8574, 0, 9012, 19958, 74420, 65089, 13215, 65047, 65163, 
-    74044, 374, 43195, 816, 0, 0, 0, 41934, 7465, 0, 0, 0, 4715, 6101, 0, 
-    41936, 0, 4879, 0, 65446, 0, 307, 0, 9585, 5374, 0, 0, 0, 0, 0, 0, 0, 
-    65567, 120614, 1929, 0, 12142, 0, 12236, 41419, 194618, 194621, 12982, 
-    194623, 5378, 78791, 0, 41421, 0, 4462, 0, 0, 0, 821, 0, 2498, 5800, 
-    120157, 0, 1760, 0, 4469, 2324, 828, 3611, 78400, 757, 1185, 0, 78770, 
-    43597, 10628, 74808, 194572, 7999, 43971, 0, 0, 10634, 10942, 7713, 2348, 
-    0, 64374, 4380, 194608, 119044, 9982, 64324, 41240, 862, 65626, 78462, 
-    1810, 3673, 5137, 194617, 0, 7277, 65622, 0, 7566, 64688, 194593, 194592, 
-    78092, 74357, 194597, 4748, 194599, 194598, 194601, 42260, 5871, 119075, 
-    0, 74576, 44019, 0, 194602, 3967, 194604, 13137, 8775, 194605, 0, 2963, 
-    0, 8410, 4454, 723, 917600, 966, 4449, 0, 127060, 0, 7819, 2320, 194589, 
-    339, 4968, 194590, 120399, 8075, 55276, 0, 8047, 0, 78827, 12634, 41542, 
-    78780, 7466, 6705, 12174, 42610, 0, 74452, 0, 1584, 66645, 6045, 6729, 
-    120640, 65218, 78777, 0, 78062, 7537, 0, 11370, 0, 10330, 0, 10394, 0, 
-    194783, 0, 0, 9780, 0, 13092, 194576, 119605, 194578, 7074, 120396, 
-    194579, 194582, 11414, 194584, 2531, 13034, 0, 0, 0, 1259, 7517, 0, 0, 
-    194561, 40996, 13037, 7092, 641, 5219, 194567, 194566, 11064, 41129, 0, 
-    42850, 13035, 9075, 0, 5466, 194570, 0, 64098, 65793, 4535, 194573, 4271, 
-    78417, 0, 6769, 41410, 0, 64262, 6767, 41407, 0, 0, 6755, 118864, 9046, 
-    0, 0, 0, 0, 0, 0, 67675, 0, 0, 0, 64338, 2563, 13033, 247, 118915, 0, 
-    12338, 4651, 0, 11270, 0, 0, 11933, 0, 0, 41903, 43447, 11001, 0, 42255, 
-    0, 0, 0, 41905, 0, 0, 10775, 9793, 5009, 0, 42269, 64587, 0, 42535, 
-    69812, 64529, 41408, 42853, 3877, 120795, 42674, 8147, 43566, 119021, 0, 
-    10236, 65918, 0, 0, 0, 64506, 0, 118921, 4747, 0, 0, 43200, 5832, 0, 0, 
-    5141, 42600, 0, 43203, 0, 0, 43286, 0, 0, 0, 0, 41305, 78776, 74137, 
-    11303, 65547, 0, 7031, 859, 0, 0, 0, 6059, 126985, 55235, 0, 8535, 0, 
-    65196, 194787, 66032, 11488, 0, 120786, 42233, 127488, 9946, 63885, 0, 
-    11822, 0, 43189, 0, 0, 1788, 1579, 120482, 917817, 0, 0, 0, 9028, 119571, 
-    69234, 0, 0, 1285, 64882, 41242, 0, 0, 12640, 0, 7401, 0, 12625, 68198, 
-    0, 0, 3940, 41597, 55260, 3396, 12642, 8665, 0, 0, 12630, 1653, 917815, 
-    10153, 0, 6166, 120516, 120523, 0, 8815, 66673, 65046, 9285, 913, 42259, 
-    119317, 119318, 119315, 68454, 42485, 118837, 7878, 8211, 42293, 64377, 
-    0, 0, 0, 194673, 12032, 0, 9725, 0, 78431, 5263, 12818, 78430, 41939, 
-    10022, 65387, 78419, 42777, 10139, 980, 43698, 65386, 0, 0, 43701, 43198, 
-    7184, 120673, 194797, 917819, 10085, 119992, 0, 119993, 6634, 0, 0, 
-    119323, 8072, 119321, 43700, 0, 8872, 7783, 917992, 12398, 8237, 0, 0, 
-    12395, 0, 126977, 120565, 9914, 127011, 917854, 73975, 6367, 6351, 66688, 
-    0, 78107, 0, 64735, 41243, 0, 7808, 1829, 0, 41937, 4358, 43272, 6353, 0, 
-    0, 120422, 0, 1710, 0, 0, 65607, 0, 49, 6627, 0, 6258, 10683, 78672, 
-    9741, 78443, 5649, 78441, 43443, 64418, 1643, 65213, 8405, 3470, 0, 
-    13213, 42452, 78331, 0, 78445, 0, 1072, 78457, 78452, 78454, 6576, 41988, 
-    41132, 65675, 1080, 120002, 9886, 55225, 1101, 68404, 12309, 55227, 0, 
-    12632, 1086, 1869, 78685, 7680, 0, 65458, 120714, 12639, 3380, 8123, 
-    1091, 12638, 7977, 4501, 0, 0, 66309, 0, 0, 1494, 0, 0, 0, 11693, 0, 
-    10494, 119230, 65872, 12363, 11386, 0, 0, 0, 0, 64582, 0, 73794, 0, 8022, 
-    0, 0, 74106, 12413, 194829, 917994, 0, 917995, 5570, 1881, 7210, 0, 1012, 
-    66630, 0, 120709, 7208, 66442, 5569, 0, 42339, 0, 6063, 0, 0, 119594, 
-    6053, 65602, 0, 0, 64727, 9160, 194827, 0, 0, 0, 10503, 118810, 6055, 
-    3870, 4279, 8490, 120114, 4319, 64786, 8602, 120110, 11326, 0, 0, 0, 
-    120119, 78333, 120117, 120118, 120099, 120100, 65087, 5571, 3674, 9740, 
-    9121, 5568, 120107, 120108, 42085, 10107, 42159, 42870, 120101, 589, 
-    7050, 0, 43281, 10233, 41263, 66251, 65729, 66253, 0, 74099, 42645, 0, 
-    194815, 8583, 0, 5847, 6928, 0, 0, 0, 0, 0, 66592, 12204, 0, 19966, 
-    77856, 42561, 120626, 0, 0, 8120, 120701, 0, 0, 0, 41063, 0, 10664, 0, 
-    8369, 0, 4551, 0, 74759, 0, 0, 9673, 66334, 65580, 10478, 118960, 12517, 
-    557, 9457, 12034, 0, 6355, 12519, 41004, 0, 0, 74094, 0, 0, 77970, 0, 0, 
-    0, 12111, 3927, 0, 12515, 1474, 67893, 5492, 6923, 0, 10441, 73836, 0, 
-    43990, 5493, 0, 74319, 0, 66635, 12019, 0, 1618, 0, 120474, 9645, 10430, 
-    917959, 5853, 13063, 10363, 0, 12956, 0, 120729, 11314, 0, 12060, 0, 
-    78392, 12826, 6329, 0, 10514, 65517, 74395, 2707, 8309, 0, 127054, 78398, 
-    43570, 2697, 43420, 78396, 127057, 2695, 42171, 0, 0, 0, 67617, 118971, 
-    0, 2693, 12125, 12766, 0, 1164, 0, 0, 41918, 0, 0, 8687, 66009, 12178, 
-    7053, 0, 7469, 0, 5248, 12218, 120538, 6427, 42884, 41123, 0, 0, 42873, 
-    41126, 9991, 41128, 74371, 127031, 0, 9873, 0, 42877, 7994, 64762, 2053, 
-    42843, 6591, 9340, 0, 1589, 0, 296, 74438, 78852, 0, 67841, 74370, 0, 
-    8922, 0, 74600, 12700, 74836, 0, 12579, 0, 12575, 6416, 5656, 2891, 
-    13262, 65590, 5299, 0, 11473, 5449, 1252, 0, 78404, 41431, 74369, 65373, 
-    5295, 0, 74114, 1223, 1642, 174, 78399, 883, 4161, 12691, 42603, 41413, 
-    3212, 41459, 3211, 74810, 41425, 127029, 78412, 74450, 9728, 3846, 8070, 
-    6150, 6636, 4370, 0, 0, 74178, 74587, 74117, 0, 0, 0, 4986, 12189, 0, 
-    67648, 120499, 917553, 4257, 12104, 77942, 6220, 9004, 65561, 0, 77949, 
-    0, 68135, 917576, 77946, 0, 0, 0, 9890, 78561, 12971, 78453, 0, 73898, 
-    11979, 0, 118900, 917894, 0, 9635, 12600, 8871, 0, 0, 0, 6469, 74227, 0, 
-    65304, 4679, 10230, 64300, 64867, 3427, 4240, 0, 0, 0, 0, 917952, 0, 0, 
-    0, 7282, 78728, 65733, 4445, 0, 0, 3494, 74606, 6555, 0, 77976, 0, 0, 
-    78566, 0, 0, 65898, 0, 65312, 5447, 0, 12895, 65593, 4010, 0, 41106, 0, 
-    65804, 0, 41105, 0, 65820, 6232, 0, 0, 0, 43608, 119091, 0, 6538, 4335, 
-    78364, 3941, 41122, 11061, 78363, 64892, 9113, 1954, 12155, 0, 42878, 
-    11500, 0, 0, 74578, 0, 65832, 0, 0, 0, 77975, 0, 4586, 0, 350, 10951, 0, 
-    509, 0, 0, 0, 0, 0, 5133, 0, 0, 9500, 0, 12162, 64741, 0, 9354, 0, 0, 0, 
-    2496, 11516, 944, 118851, 3890, 12168, 1438, 0, 0, 0, 41947, 1220, 
-    120828, 0, 0, 0, 1571, 42630, 41949, 42805, 8270, 943, 564, 0, 312, 
-    41980, 0, 0, 78120, 8877, 269, 4429, 6272, 9617, 1460, 6954, 78657, 
-    41120, 65121, 10862, 6060, 41119, 41416, 74355, 4173, 0, 0, 0, 1906, 
-    917986, 11532, 74073, 0, 0, 1985, 6296, 9582, 917895, 64287, 0, 78115, 
-    11428, 1730, 2457, 0, 19918, 10469, 0, 0, 7703, 8840, 8035, 0, 0, 0, 0, 
-    6129, 0, 0, 0, 0, 7874, 8681, 0, 0, 13136, 0, 0, 74278, 63886, 118881, 
-    9605, 73892, 13220, 0, 120274, 5514, 0, 9228, 0, 0, 0, 5240, 9811, 10012, 
-    3096, 0, 0, 0, 66676, 65873, 0, 0, 0, 9501, 0, 1272, 64536, 65465, 64654, 
-    7467, 0, 1467, 10158, 10040, 0, 9519, 0, 917812, 0, 118899, 12193, 0, 0, 
-    0, 0, 0, 19935, 0, 0, 0, 0, 0, 0, 5275, 0, 0, 8637, 0, 0, 3789, 63880, 
-    11471, 43554, 65862, 11474, 66332, 66603, 0, 2426, 12042, 0, 0, 9537, 
-    3961, 12115, 0, 2605, 4500, 64561, 55224, 4981, 0, 0, 63876, 11667, 
-    42686, 77973, 42362, 64686, 4499, 41649, 7589, 0, 0, 3237, 0, 68215, 0, 
-    8541, 78298, 0, 41866, 0, 0, 0, 0, 0, 43555, 2823, 9559, 0, 41940, 8299, 
-    41945, 0, 41941, 3308, 7190, 64880, 8614, 65220, 41493, 0, 41699, 10762, 
-    0, 12999, 0, 0, 8106, 4128, 0, 0, 4494, 0, 4012, 10395, 0, 119567, 65447, 
-    0, 0, 11004, 695, 739, 696, 7611, 0, 42755, 74802, 9227, 7506, 7510, 0, 
-    691, 738, 7511, 7512, 7515, 3868, 688, 41847, 690, 2548, 737, 974, 8003, 
-    7406, 0, 0, 0, 3985, 0, 65860, 63921, 7051, 69777, 4682, 917805, 12809, 
-    6406, 4685, 0, 10879, 10347, 4680, 6341, 0, 3851, 8132, 74325, 0, 917907, 
-    0, 41958, 119176, 917908, 0, 0, 42657, 0, 7643, 42373, 11714, 67587, 
-    43568, 0, 11717, 7650, 10594, 64951, 7647, 7649, 0, 7646, 0, 78082, 9651, 
-    0, 3891, 0, 0, 2337, 1735, 74324, 67860, 5452, 0, 0, 43561, 0, 0, 74146, 
-    1860, 7495, 7580, 5812, 7497, 7584, 0, 0, 0, 120347, 7727, 0, 8498, 
-    69818, 8949, 3065, 42719, 0, 1569, 0, 12534, 12124, 7690, 0, 12533, 0, 
-    6418, 4543, 78086, 6969, 0, 74800, 0, 0, 11980, 0, 0, 63894, 120760, 
-    12282, 66192, 0, 74592, 8850, 74275, 9238, 10617, 917545, 0, 0, 0, 12791, 
-    0, 0, 0, 4447, 73732, 12793, 12900, 0, 10950, 0, 78087, 12790, 41400, 
-    119128, 0, 12792, 42232, 0, 1744, 12789, 10366, 12317, 41310, 0, 41399, 
-    0, 0, 55258, 0, 12690, 0, 0, 43672, 0, 41652, 2974, 9010, 11315, 0, 278, 
-    0, 41405, 119254, 0, 10077, 63853, 74557, 42586, 0, 0, 6002, 0, 43553, 0, 
-    67903, 0, 12787, 41308, 7934, 65306, 0, 0, 0, 8646, 0, 77829, 0, 0, 6413, 
-    6550, 0, 1940, 0, 43637, 220, 65193, 43551, 10678, 10044, 0, 0, 0, 68659, 
-    6403, 5707, 10393, 127532, 0, 66614, 0, 0, 0, 10297, 0, 3742, 0, 3959, 0, 
-    0, 0, 2467, 0, 6003, 63844, 6663, 8040, 0, 63845, 4182, 78171, 4676, 
-    120501, 0, 0, 2510, 0, 10208, 78168, 0, 11540, 43546, 6692, 0, 41060, 0, 
-    0, 9083, 0, 0, 78144, 1559, 63831, 9677, 120260, 0, 65256, 0, 74070, 0, 
-    0, 365, 12056, 43027, 120423, 41716, 0, 0, 120472, 5516, 2845, 7717, 
-    8036, 41717, 73827, 544, 12045, 6278, 0, 5515, 0, 0, 0, 65339, 43221, 
-    65194, 0, 5517, 0, 0, 74841, 67884, 0, 67890, 67885, 67880, 67881, 67882, 
-    67883, 0, 0, 67879, 0, 1902, 67887, 9638, 12976, 0, 12483, 12368, 41769, 
-    42726, 41765, 0, 6667, 67874, 7556, 67878, 74351, 11264, 989, 42677, 
-    67889, 0, 1311, 0, 4326, 11000, 63824, 13068, 10932, 0, 6917, 78155, 0, 
-    949, 78162, 0, 6148, 8605, 42253, 78177, 0, 0, 42715, 0, 0, 0, 63871, 0, 
-    41796, 1269, 6530, 0, 65057, 0, 5144, 12221, 42716, 0, 4431, 4331, 0, 0, 
-    41834, 5279, 0, 10336, 8312, 0, 42701, 0, 0, 78165, 66036, 0, 0, 6428, 
-    42270, 0, 0, 43059, 42666, 5256, 1067, 255, 12131, 0, 9493, 0, 41014, 
-    11793, 0, 0, 74394, 43460, 10653, 42723, 0, 119632, 0, 6560, 7016, 74274, 
-    0, 43556, 3929, 0, 6614, 2768, 0, 9746, 5135, 11811, 12796, 11953, 0, 
-    69761, 5139, 346, 74303, 6305, 12795, 4675, 5168, 78552, 0, 74315, 74361, 
-    8253, 8817, 1136, 0, 43563, 0, 0, 194750, 7392, 8230, 9365, 0, 0, 0, 0, 
-    0, 4041, 0, 2357, 43240, 12786, 229, 119885, 119884, 44004, 43552, 
-    119881, 12350, 65554, 119882, 119877, 119876, 12785, 63863, 119873, 7770, 
-    10712, 64853, 12686, 118916, 42375, 0, 127238, 66352, 10470, 0, 11059, 
-    10791, 917944, 450, 0, 0, 10432, 12097, 5450, 64691, 1233, 0, 44009, 
-    78284, 66338, 0, 0, 1839, 118799, 0, 10927, 1701, 0, 2388, 41749, 41761, 
-    5453, 8361, 119865, 41758, 5444, 41763, 64889, 119860, 119863, 78677, 0, 
-    0, 78174, 66432, 8801, 3053, 4340, 0, 0, 65812, 917831, 0, 41824, 0, 
-    194801, 194800, 194803, 42700, 194805, 194804, 194807, 78676, 120413, 
-    194808, 0, 0, 4493, 4336, 0, 2314, 43602, 78826, 119325, 194811, 42439, 
-    64638, 42327, 43528, 4489, 194791, 0, 194793, 1912, 42385, 10306, 10370, 
-    0, 0, 8867, 10250, 10258, 2712, 1635, 78821, 1410, 0, 0, 118878, 0, 0, 
-    9919, 0, 559, 0, 41825, 0, 78188, 4892, 74016, 194781, 6542, 41957, 0, 
-    5777, 0, 759, 65749, 2079, 65248, 12788, 64487, 64552, 0, 10223, 42062, 
-    0, 0, 0, 3668, 65754, 43560, 12226, 0, 65149, 2340, 41959, 194786, 
-    194785, 194788, 43618, 65747, 10937, 2962, 0, 2321, 3587, 65745, 0, 8921, 
-    9952, 0, 0, 42714, 9951, 43409, 194770, 2949, 66012, 194775, 194774, 
-    2958, 68359, 41820, 43038, 2395, 0, 9976, 120043, 194778, 120058, 68220, 
-    194779, 42809, 42807, 0, 120046, 10198, 4150, 64371, 8318, 41790, 0, 
-    41898, 2360, 41794, 917942, 0, 0, 0, 0, 2418, 0, 2411, 11336, 799, 63823, 
-    10276, 10308, 10372, 917541, 41772, 42813, 2317, 10260, 118980, 55284, 0, 
-    0, 10384, 0, 0, 0, 7753, 2351, 6655, 64489, 0, 0, 77872, 4443, 42779, 
-    230, 0, 0, 43549, 4855, 42150, 65739, 5441, 41896, 10288, 10320, 0, 855, 
-    7046, 6109, 65045, 63839, 78198, 2049, 10098, 0, 74145, 0, 10264, 10280, 
-    9184, 10376, 7013, 4467, 0, 0, 0, 41887, 0, 4862, 9735, 6537, 120591, 0, 
-    3914, 119604, 0, 9065, 12961, 0, 0, 0, 0, 289, 0, 4694, 11420, 4690, 0, 
-    120514, 917978, 4693, 0, 42724, 0, 4688, 120454, 0, 0, 119629, 8238, 
-    3110, 120162, 0, 120163, 6528, 127553, 43035, 120161, 218, 0, 1520, 0, 
-    4786, 0, 43225, 4602, 0, 78167, 10088, 6548, 0, 120156, 43978, 8988, 
-    8888, 0, 0, 0, 0, 10666, 0, 73902, 0, 0, 0, 9975, 0, 119902, 4689, 8932, 
-    0, 65560, 119209, 74441, 78810, 0, 0, 0, 0, 0, 0, 0, 0, 10065, 8207, 0, 
-    120539, 0, 0, 662, 0, 9244, 0, 0, 119261, 0, 0, 0, 0, 41929, 0, 0, 66674, 
-    41926, 120408, 120443, 10513, 64637, 194862, 0, 52, 13118, 6475, 0, 0, 
-    12095, 10225, 4812, 0, 0, 0, 74085, 0, 3978, 0, 917945, 0, 11582, 120761, 
-    12281, 0, 6544, 13241, 0, 69782, 0, 194860, 11765, 65258, 10369, 0, 1585, 
-    7192, 10249, 422, 1500, 2036, 986, 194859, 64394, 5781, 5599, 64294, 
-    2494, 120450, 4861, 74021, 64334, 78203, 0, 0, 0, 65102, 8961, 65842, 
-    10243, 10245, 0, 120410, 0, 120453, 64821, 9478, 2508, 0, 0, 202, 0, 
-    74131, 1242, 65514, 0, 63940, 0, 64533, 120129, 0, 67842, 11990, 0, 
-    63939, 43375, 65440, 2504, 0, 78671, 64829, 0, 6943, 917934, 5859, 0, 
-    2858, 0, 74294, 0, 69239, 0, 119027, 12992, 2753, 1936, 74491, 0, 2751, 
-    12662, 2763, 8953, 64701, 10731, 12922, 7052, 917839, 0, 0, 0, 63920, 
-    74128, 2856, 119910, 47, 119911, 126986, 65858, 0, 0, 0, 7899, 0, 8417, 
-    65903, 7072, 0, 0, 4033, 0, 43992, 0, 0, 212, 64600, 1903, 12320, 0, 0, 
-    0, 0, 8915, 2759, 945, 6689, 0, 0, 0, 0, 1291, 74828, 0, 0, 9531, 13155, 
-    8505, 68379, 12062, 0, 0, 65487, 0, 41837, 120611, 120432, 0, 0, 0, 
-    120433, 0, 63935, 73962, 120806, 64787, 43524, 0, 64426, 0, 0, 0, 0, 
-    65664, 6693, 9843, 0, 8674, 0, 0, 0, 0, 12624, 0, 1673, 4811, 0, 5986, 
-    9338, 3046, 74480, 5985, 917928, 119598, 9820, 0, 12187, 0, 0, 5984, 0, 
-    43308, 4393, 0, 0, 0, 0, 0, 74826, 64733, 0, 0, 3491, 0, 0, 0, 3514, 
-    65485, 0, 7492, 0, 74605, 119134, 7514, 0, 0, 194731, 7502, 7587, 68353, 
-    0, 0, 63925, 0, 7610, 219, 0, 0, 692, 43588, 74433, 41635, 43241, 9688, 
-    0, 9535, 0, 0, 0, 64530, 0, 64610, 11804, 0, 0, 7453, 0, 8013, 0, 0, 0, 
-    8895, 5253, 0, 5458, 0, 2866, 0, 0, 65111, 68433, 6700, 120484, 0, 0, 0, 
-    8962, 77960, 9641, 43694, 7059, 0, 0, 9604, 78700, 7441, 63826, 0, 
-    118941, 64392, 0, 0, 2844, 0, 41974, 0, 12139, 0, 0, 0, 3358, 65295, 0, 
-    3104, 0, 0, 194765, 0, 5308, 0, 290, 0, 0, 2862, 2792, 195088, 0, 0, 
-    3268, 66591, 0, 6552, 42367, 7035, 120558, 0, 0, 1814, 0, 10240, 0, 
-    74305, 0, 74528, 0, 0, 42646, 7606, 2591, 2837, 4341, 77956, 64482, 0, 
-    8163, 65270, 0, 0, 0, 9112, 74431, 863, 9490, 119898, 0, 43323, 120513, 
-    119897, 9071, 0, 0, 3654, 7789, 9637, 0, 2535, 65504, 7653, 40993, 
-    119899, 66587, 195098, 0, 0, 0, 11006, 12927, 7807, 8073, 0, 10629, 0, 
-    74088, 3056, 10823, 0, 127327, 8762, 10508, 74506, 73770, 43969, 43193, 
-    10737, 3463, 0, 0, 66633, 8695, 4815, 11322, 5811, 12345, 7049, 0, 5195, 
-    0, 0, 66639, 0, 0, 0, 0, 0, 120561, 1262, 0, 6561, 19939, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 119907, 64612, 11991, 0, 0, 0, 1502, 0, 0, 9107, 0, 5702, 
-    3655, 67661, 8430, 0, 74132, 120758, 0, 74057, 9603, 0, 5254, 120742, 
-    7724, 74388, 68375, 10796, 5129, 0, 0, 590, 7579, 5614, 5893, 194744, 
-    11720, 0, 11721, 0, 4798, 0, 119316, 66038, 4793, 67851, 11726, 0, 74204, 
-    68610, 0, 68626, 894, 300, 0, 12306, 66235, 8004, 0, 0, 2562, 0, 0, 
-    42503, 0, 11652, 0, 0, 119241, 0, 0, 5096, 5095, 2863, 3424, 0, 10454, 
-    42530, 5094, 119638, 0, 13156, 0, 10832, 5093, 0, 0, 0, 5092, 10708, 
-    11327, 0, 5091, 176, 0, 9153, 4104, 78599, 78601, 1215, 42712, 5744, 
-    12272, 9832, 11777, 0, 127371, 42881, 0, 8980, 118988, 67861, 8844, 7209, 
-    0, 0, 4278, 0, 0, 0, 0, 9074, 4348, 0, 65558, 65946, 8113, 7087, 5255, 
-    1786, 661, 0, 0, 0, 74423, 0, 586, 74414, 64359, 1267, 0, 65468, 0, 
-    65731, 0, 0, 3621, 120473, 66666, 64211, 0, 6562, 12928, 0, 1228, 65490, 
-    11383, 0, 0, 0, 1714, 74406, 0, 0, 0, 0, 66225, 0, 0, 42660, 11436, 2070, 
-    64, 120694, 0, 10291, 10323, 2826, 0, 0, 0, 42008, 9708, 42710, 0, 42011, 
-    41999, 0, 12206, 5839, 1702, 1240, 74065, 6286, 0, 0, 65833, 77848, 0, 
-    1765, 0, 0, 65588, 0, 0, 0, 8401, 0, 42014, 0, 7030, 0, 10479, 64959, 
-    2852, 0, 0, 0, 0, 195061, 917951, 6963, 0, 12667, 64540, 74786, 10147, 
-    12935, 0, 0, 0, 0, 0, 78757, 0, 0, 0, 0, 64947, 12467, 2864, 64719, 1148, 
-    10435, 11462, 41675, 0, 2765, 0, 0, 0, 120719, 0, 0, 66662, 0, 78133, 
-    9364, 194685, 74416, 0, 0, 77988, 263, 10449, 41288, 0, 41839, 78387, 0, 
-    77986, 0, 6931, 0, 64355, 7177, 120530, 0, 0, 0, 4262, 10285, 10722, 
-    42020, 0, 6806, 6992, 42019, 0, 41290, 0, 750, 0, 0, 10163, 63913, 74066, 
-    7032, 5954, 64931, 4314, 0, 198, 68453, 730, 0, 63907, 77993, 78891, 
-    13165, 10814, 74171, 42804, 678, 8240, 78015, 0, 41378, 11008, 6938, 0, 
-    0, 2097, 66246, 120560, 0, 0, 0, 3892, 68632, 0, 6712, 66045, 41470, 
-    64805, 0, 0, 0, 64801, 0, 497, 12100, 5953, 0, 7796, 0, 43254, 73831, 0, 
-    10293, 5952, 1281, 0, 0, 0, 10677, 604, 41097, 9182, 1859, 0, 0, 3425, 0, 
-    0, 2836, 0, 0, 9707, 0, 43202, 0, 0, 65199, 1738, 917818, 0, 2832, 0, 
-    9670, 12937, 0, 66374, 0, 0, 2822, 0, 4436, 0, 0, 73752, 0, 64872, 0, 
-    1331, 0, 0, 0, 12708, 0, 5090, 5089, 0, 0, 119109, 0, 0, 319, 118931, 
-    43479, 9477, 0, 0, 5087, 0, 7640, 96, 5086, 0, 0, 0, 5085, 64286, 0, 0, 
-    41422, 0, 119901, 42356, 3772, 0, 0, 5011, 0, 0, 0, 0, 0, 127241, 6677, 
-    7601, 0, 591, 64419, 118953, 0, 0, 118923, 73734, 0, 10939, 6106, 6933, 
-    41271, 6760, 119903, 4534, 41270, 917962, 0, 65574, 0, 9224, 0, 3671, 
-    8976, 0, 0, 41275, 6372, 0, 55261, 7963, 6371, 0, 568, 0, 41273, 0, 0, 
-    6728, 0, 9715, 0, 8258, 11753, 74820, 0, 9602, 118919, 42, 0, 43688, 0, 
-    0, 7458, 0, 0, 65385, 119900, 0, 11958, 0, 917822, 0, 6254, 42721, 66336, 
-    8045, 11550, 0, 0, 0, 42858, 11789, 65868, 5557, 917946, 9737, 13109, 0, 
-    9467, 5558, 8878, 0, 195036, 7451, 6706, 10146, 0, 9086, 64566, 0, 64584, 
-    7437, 7454, 12594, 0, 68362, 4546, 7731, 0, 119909, 74243, 0, 3805, 0, 
-    194565, 44001, 41008, 0, 6307, 19949, 0, 7544, 0, 43469, 0, 0, 10152, 
-    64422, 65091, 119113, 7602, 64729, 0, 43521, 0, 42302, 43711, 43523, 
-    41447, 5559, 0, 8704, 2397, 5556, 0, 0, 0, 9011, 9630, 0, 0, 0, 5506, 0, 
-    1911, 66652, 0, 9961, 8845, 66698, 0, 10792, 8889, 0, 2098, 0, 64751, 0, 
-    66622, 0, 0, 74364, 0, 0, 0, 74365, 7552, 0, 0, 65384, 7223, 4559, 0, 
-    1956, 43138, 7024, 65728, 64501, 1210, 195077, 65175, 10184, 43140, 
-    43654, 0, 0, 0, 38, 8533, 66669, 119124, 0, 0, 0, 4357, 0, 0, 0, 74233, 
-    9967, 119852, 42860, 119838, 10941, 65721, 6962, 0, 0, 119324, 0, 11014, 
-    0, 8942, 12000, 69224, 0, 0, 11974, 0, 42772, 127518, 11650, 5013, 0, 0, 
-    66210, 118914, 6613, 0, 0, 0, 0, 0, 64714, 0, 0, 0, 12120, 43476, 0, 
-    11024, 74811, 0, 10563, 0, 0, 43522, 2462, 0, 1837, 0, 63972, 6957, 0, 
-    120559, 4952, 65718, 65827, 5504, 65720, 65714, 65715, 65716, 0, 127005, 
-    127119, 3109, 63975, 74028, 0, 8107, 119234, 1127, 455, 0, 63968, 0, 
-    3483, 119593, 1989, 0, 0, 9104, 3503, 65375, 0, 6694, 42633, 1864, 0, 
-    74306, 41446, 2540, 7736, 0, 74064, 0, 10521, 0, 42173, 9705, 74124, 
-    8604, 6955, 10916, 43684, 6149, 3887, 19956, 1411, 2824, 0, 10106, 0, 
-    1403, 0, 1347, 9631, 74444, 0, 0, 0, 0, 8640, 0, 258, 1654, 0, 0, 0, 
-    43314, 0, 0, 4042, 11478, 2873, 63977, 11522, 41668, 8549, 10861, 0, 
-    63976, 0, 68623, 0, 74585, 41391, 0, 917903, 376, 6987, 9221, 0, 0, 8823, 
-    0, 12943, 65185, 41869, 12619, 0, 10154, 0, 74439, 2039, 0, 7446, 1684, 
-    63979, 10974, 458, 120620, 0, 69791, 0, 11916, 65016, 0, 78067, 42115, 0, 
-    12288, 78057, 0, 1493, 42111, 7553, 4097, 0, 13080, 0, 65808, 6610, 6030, 
-    8059, 7508, 13131, 0, 0, 0, 8794, 41278, 41629, 12154, 0, 41277, 64658, 
-    0, 64380, 6625, 74354, 19904, 0, 0, 0, 65371, 7078, 0, 833, 0, 6369, 0, 
-    10979, 41953, 0, 41434, 6062, 0, 0, 19916, 6913, 933, 1341, 9842, 6720, 
-    65744, 0, 0, 195076, 0, 7405, 10105, 65810, 0, 41632, 7493, 0, 0, 41622, 
-    0, 0, 119556, 74584, 7632, 9716, 19954, 9805, 5990, 900, 0, 63957, 0, 0, 
-    3612, 0, 64376, 0, 5389, 0, 0, 65938, 2839, 9621, 582, 0, 74368, 3749, 
-    6949, 7569, 74061, 0, 0, 6956, 4403, 19962, 65559, 3299, 0, 0, 119127, 
-    9002, 0, 74372, 74236, 8478, 7598, 546, 42469, 65569, 1918, 9542, 472, 
-    7716, 10319, 10383, 6996, 0, 63952, 8425, 3602, 8328, 11764, 118894, 0, 
-    69796, 41183, 12907, 10271, 10287, 684, 43525, 0, 2854, 119586, 4592, 
-    65755, 0, 0, 11963, 43620, 0, 78889, 0, 0, 0, 9881, 43115, 65757, 3415, 
-    0, 0, 8648, 0, 6741, 43047, 0, 13180, 0, 418, 0, 0, 10295, 10327, 10391, 
-    41752, 74339, 8641, 41449, 0, 74100, 0, 10911, 6942, 0, 1024, 42849, 
-    41751, 69776, 8941, 0, 4554, 0, 9023, 11685, 0, 9928, 78617, 0, 11437, 
-    43741, 0, 120700, 63967, 0, 41206, 120724, 9049, 41185, 43166, 0, 11680, 
-    0, 11686, 0, 65224, 4565, 4655, 119553, 0, 0, 64523, 10343, 10407, 0, 
-    66671, 11466, 0, 0, 42890, 0, 12050, 68201, 2860, 0, 0, 0, 42792, 5743, 
-    10424, 12065, 42872, 0, 0, 0, 8875, 0, 0, 917991, 7531, 12847, 2413, 0, 
-    78635, 962, 0, 12855, 41196, 42564, 0, 1582, 0, 5508, 0, 0, 0, 10801, 0, 
-    118798, 0, 7173, 496, 10439, 4313, 64607, 119557, 7860, 0, 906, 42793, 
-    2842, 6405, 64722, 13132, 798, 64694, 12801, 8406, 1153, 0, 64788, 0, 
-    8054, 9174, 194749, 917976, 9964, 0, 41611, 4642, 66574, 11556, 0, 0, 
-    78857, 42089, 78855, 9008, 0, 0, 195096, 42079, 917981, 77924, 42513, 0, 
-    42842, 73985, 65285, 118974, 127003, 0, 0, 0, 0, 11335, 64069, 42093, 
-    3920, 0, 0, 0, 0, 4580, 41967, 0, 64384, 0, 119158, 3021, 42004, 0, 0, 
-    42317, 41998, 0, 6946, 0, 0, 0, 0, 65204, 0, 68113, 42690, 9880, 42010, 
-    74824, 64589, 10111, 64875, 0, 68399, 43998, 11360, 0, 0, 0, 0, 42149, 0, 
-    0, 0, 64941, 77919, 0, 0, 0, 55247, 4110, 66005, 6959, 10929, 119110, 0, 
-    66703, 77921, 8617, 41982, 6025, 69242, 0, 0, 0, 0, 9597, 42099, 43172, 
-    0, 10117, 0, 0, 41636, 0, 0, 120681, 8301, 0, 0, 187, 0, 65669, 0, 4963, 
-    0, 127517, 0, 8964, 65676, 65785, 0, 41948, 0, 0, 0, 41942, 65449, 3160, 
-    10081, 13226, 42121, 42475, 42663, 0, 41766, 0, 65882, 78849, 41760, 
-    1189, 905, 480, 10985, 41733, 67859, 9629, 6742, 1745, 43625, 73835, 
-    7888, 0, 0, 0, 42656, 41507, 8806, 7023, 0, 74279, 9447, 78651, 7867, 
-    69218, 6236, 0, 0, 10505, 0, 12851, 118948, 348, 5474, 0, 3103, 0, 41753, 
-    0, 0, 0, 78844, 78845, 41739, 78843, 42515, 10931, 41756, 43347, 42560, 
-    5391, 41746, 119147, 0, 41259, 5561, 74360, 2691, 0, 65553, 7933, 5562, 
-    69800, 917851, 41262, 0, 64421, 74846, 41251, 0, 0, 3979, 0, 0, 74813, 0, 
-    0, 0, 0, 118847, 41266, 0, 0, 917630, 10585, 65741, 41737, 9574, 2666, 0, 
-    41738, 831, 419, 13126, 10716, 0, 42822, 0, 6434, 0, 6939, 7766, 6432, 0, 
-    0, 916, 769, 41742, 11968, 74805, 6433, 5563, 547, 1943, 6439, 5560, 
-    4994, 487, 0, 4497, 3754, 127056, 120424, 9039, 0, 41776, 0, 8716, 1595, 
-    41615, 0, 0, 74260, 0, 43267, 43219, 0, 0, 12185, 0, 0, 68355, 68357, 0, 
-    42856, 8634, 0, 0, 4209, 120702, 0, 65879, 41538, 65612, 0, 669, 5679, 0, 
-    69786, 118961, 0, 0, 5678, 11821, 0, 6711, 460, 0, 0, 0, 0, 120747, 0, 0, 
-    78050, 119022, 0, 0, 0, 7782, 9044, 4974, 11760, 78494, 7577, 65711, 
-    41912, 1216, 0, 0, 5792, 0, 0, 78501, 0, 42264, 12244, 0, 5683, 0, 0, 
-    78119, 1549, 0, 0, 120398, 5682, 6206, 8670, 10256, 5680, 917568, 10001, 
-    0, 69768, 1449, 10241, 78290, 0, 0, 10552, 64342, 41922, 0, 8584, 0, 
-    5567, 2717, 0, 0, 5564, 42886, 41908, 42882, 5565, 0, 0, 0, 65708, 65709, 
-    5566, 69803, 65704, 65705, 11904, 42875, 43373, 42539, 5942, 8468, 0, 
-    10361, 10425, 65697, 65698, 65699, 0, 66598, 0, 64664, 10647, 78702, 
-    78703, 78690, 457, 78502, 65701, 1934, 43006, 0, 8802, 78710, 65130, 
-    78706, 78709, 6087, 78705, 78716, 41757, 78711, 8043, 8950, 65694, 64485, 
-    43534, 10457, 0, 11961, 78725, 78722, 78723, 78720, 78721, 0, 65515, 
-    9499, 10035, 13069, 0, 0, 9889, 68184, 42806, 0, 7256, 0, 0, 1667, 42161, 
-    0, 42428, 0, 6934, 0, 10802, 64861, 6556, 78390, 0, 8101, 3610, 0, 41748, 
-    4995, 955, 65907, 119208, 5350, 64339, 78306, 64549, 10875, 917956, 5477, 
-    65692, 0, 0, 120397, 12896, 10456, 917954, 0, 3874, 0, 0, 0, 0, 0, 0, 
-    65603, 0, 65687, 0, 41038, 74009, 119570, 42239, 8536, 78740, 0, 78726, 
-    74432, 724, 0, 1455, 78749, 7183, 64583, 78747, 68443, 4175, 78741, 
-    43614, 69801, 939, 0, 43520, 68613, 74569, 917958, 0, 78763, 78764, 
-    78760, 10788, 6088, 78759, 78755, 190, 0, 12593, 0, 8188, 64408, 0, 4417, 
-    0, 0, 6370, 0, 7827, 68441, 6965, 0, 0, 13201, 0, 0, 0, 74382, 73781, 
-    7918, 73988, 0, 0, 917884, 1728, 0, 120710, 178, 12972, 0, 0, 0, 120671, 
-    0, 0, 78327, 120405, 65690, 0, 0, 119054, 0, 9252, 917889, 4652, 68371, 
-    0, 0, 0, 13065, 9923, 10806, 0, 11763, 0, 120688, 6723, 78187, 0, 6993, 
-    0, 0, 8333, 0, 0, 11390, 0, 74464, 0, 0, 74080, 0, 0, 11910, 0, 8278, 
-    8963, 4034, 0, 0, 65344, 120517, 41747, 0, 0, 8677, 0, 12707, 9350, 
-    66037, 0, 8836, 12315, 12747, 8300, 0, 0, 7491, 8856, 0, 0, 43150, 0, 
-    120404, 65389, 120402, 120403, 10813, 2592, 12853, 43269, 7263, 120244, 
-    6536, 120238, 120239, 65516, 12321, 120391, 120388, 55287, 10007, 120246, 
-    9588, 120248, 1596, 120383, 41994, 65801, 0, 0, 66572, 0, 0, 10613, 6697, 
-    12805, 41928, 40981, 78403, 78409, 5006, 64328, 0, 9931, 0, 8825, 74555, 
-    65940, 43259, 0, 6107, 0, 119177, 0, 78401, 0, 11783, 335, 120227, 64689, 
-    438, 4510, 5765, 8721, 120233, 119227, 6092, 12840, 43112, 8876, 120231, 
-    8096, 10284, 0, 0, 0, 10380, 8733, 0, 0, 41602, 0, 0, 74831, 917901, 0, 
-    73747, 65399, 0, 64591, 42405, 0, 120820, 843, 11541, 0, 917898, 2065, 
-    41935, 74496, 41902, 0, 0, 215, 41258, 77875, 43159, 1953, 9579, 41938, 
-    1256, 3910, 9407, 6242, 0, 0, 41257, 41900, 8675, 10700, 8805, 1742, 0, 
-    9333, 8202, 0, 0, 0, 0, 0, 73882, 499, 0, 43467, 0, 55290, 0, 1712, 5932, 
-    77845, 41762, 0, 0, 11967, 1775, 0, 0, 0, 0, 0, 9458, 0, 6470, 9180, 
-    120380, 43176, 0, 0, 42782, 0, 0, 0, 917912, 74777, 120669, 9414, 120382, 
-    73782, 73969, 565, 42484, 5794, 201, 2662, 42292, 0, 8254, 0, 10975, 0, 
-    120625, 74763, 1022, 4108, 3880, 74247, 0, 0, 194964, 917980, 7507, 0, 
-    43149, 0, 65031, 7961, 1636, 0, 65029, 65024, 0, 12473, 6534, 0, 99, 98, 
-    97, 120571, 67584, 4049, 74163, 127065, 7090, 0, 7892, 917969, 10777, 0, 
-    65310, 65562, 66599, 66722, 0, 8039, 3363, 66594, 43434, 0, 0, 12596, 
-    66595, 42258, 42570, 5593, 119148, 120711, 0, 10100, 6061, 64854, 119, 
-    118, 117, 116, 12998, 122, 121, 120, 111, 110, 109, 108, 115, 114, 113, 
-    112, 103, 102, 101, 100, 107, 106, 105, 104, 6436, 73974, 534, 41212, 
-    77931, 1536, 64093, 73970, 77930, 0, 0, 6020, 12716, 127112, 12744, 475, 
-    120394, 13266, 0, 127111, 0, 73926, 0, 10645, 1212, 6543, 0, 8134, 0, 
-    2913, 73870, 0, 1866, 0, 195095, 0, 8923, 1645, 12059, 66585, 78786, 
-    3196, 0, 0, 5935, 1250, 127066, 8174, 9787, 6733, 9859, 7916, 9861, 9860, 
-    5258, 1882, 1892, 6731, 10882, 405, 11454, 73911, 0, 0, 41169, 8939, 
-    41245, 0, 41170, 1454, 11369, 6477, 12157, 0, 0, 0, 41172, 7855, 0, 0, 
-    10480, 0, 0, 77936, 8264, 12610, 0, 645, 0, 7609, 40973, 0, 73833, 78249, 
-    5824, 984, 77918, 10688, 5851, 0, 7729, 73982, 120518, 0, 195086, 43369, 
-    0, 0, 68415, 0, 4538, 120406, 43141, 0, 0, 74214, 73886, 0, 0, 118902, 
-    43005, 78448, 9552, 0, 0, 0, 12997, 0, 0, 0, 0, 2381, 12883, 10994, 
-    10529, 41906, 0, 0, 0, 12425, 10661, 10856, 9614, 2428, 41478, 8582, 
-    10064, 73930, 0, 0, 0, 64896, 119162, 1952, 0, 8455, 10082, 11575, 0, 
-    119566, 0, 12808, 12183, 6145, 0, 64929, 0, 0, 0, 43186, 42509, 0, 3922, 
-    9187, 0, 0, 0, 119057, 11752, 3353, 9358, 0, 917957, 66680, 120090, 
-    11747, 7931, 8558, 9795, 68380, 0, 0, 120082, 120081, 120084, 41027, 
-    120086, 0, 120088, 120087, 7019, 120073, 0, 11751, 120078, 78294, 64657, 
-    8657, 120048, 8594, 120068, 0, 0, 120069, 120072, 120071, 0, 0, 43154, 
-    41029, 0, 11332, 65380, 7728, 0, 11294, 0, 66665, 7851, 0, 8375, 8699, 0, 
-    42524, 0, 9085, 0, 7504, 9327, 6160, 0, 0, 0, 8088, 0, 74012, 0, 0, 4439, 
-    6926, 0, 12924, 0, 42369, 0, 65491, 65145, 9041, 43559, 64577, 10826, 0, 
-    11296, 0, 0, 0, 65825, 9577, 68199, 0, 64670, 0, 78056, 6793, 11295, 0, 
-    78053, 73872, 0, 0, 10902, 0, 0, 78070, 78068, 10472, 2995, 0, 0, 64682, 
-    2371, 78069, 120808, 259, 1009, 0, 2402, 2333, 6440, 0, 0, 65125, 41244, 
-    0, 13271, 9103, 41180, 0, 0, 0, 0, 10219, 0, 0, 0, 0, 43178, 127070, 
-    41261, 119362, 43640, 8613, 0, 118989, 6736, 195092, 41492, 12005, 
-    917982, 0, 1890, 120056, 0, 0, 0, 7293, 7991, 0, 10578, 0, 78076, 0, 
-    78077, 0, 0, 78800, 0, 120054, 42668, 6635, 0, 6164, 65170, 0, 0, 0, 
-    11664, 0, 0, 0, 0, 118812, 0, 0, 0, 9175, 11925, 78045, 9088, 0, 64545, 
-    1396, 0, 7546, 3847, 0, 0, 4985, 13288, 672, 8098, 43196, 194746, 0, 0, 
-    0, 74043, 65072, 1577, 11772, 13041, 5928, 4525, 10658, 65911, 1266, 
-    10180, 0, 0, 12622, 0, 0, 0, 194714, 0, 13310, 773, 19933, 1539, 0, 
-    126983, 42731, 0, 0, 0, 0, 3051, 5862, 7823, 0, 0, 120411, 3250, 43991, 
-    0, 66649, 9510, 66237, 0, 0, 41066, 64673, 917963, 917964, 0, 3505, 8707, 
-    917968, 6725, 917966, 917971, 917972, 3471, 917970, 5479, 882, 6686, 
-    119584, 11613, 120772, 42754, 0, 0, 0, 0, 0, 0, 0, 3225, 917996, 4433, 
-    41156, 43973, 43173, 1443, 4381, 0, 0, 10926, 11756, 11757, 64879, 
-    917949, 917950, 917947, 13227, 0, 10021, 5160, 1387, 0, 917953, 41418, 0, 
-    65914, 6721, 217, 917955, 917960, 917961, 10443, 10789, 41158, 119257, 
-    4274, 0, 41483, 0, 41250, 0, 42179, 0, 5931, 11744, 69232, 0, 41252, 
-    66682, 0, 119637, 41249, 1366, 64635, 0, 12466, 0, 0, 4397, 0, 0, 41296, 
-    9545, 41291, 0, 0, 41485, 3511, 41282, 5923, 10400, 0, 0, 760, 0, 12088, 
-    5786, 0, 42256, 119869, 119861, 417, 41474, 119562, 41565, 0, 5934, 
-    119867, 66583, 119231, 64877, 0, 64481, 78614, 66013, 41956, 43455, 
-    126995, 0, 0, 0, 42273, 5819, 0, 917556, 0, 0, 0, 65910, 0, 10246, 
-    120816, 0, 1237, 10274, 4552, 0, 0, 0, 1375, 66705, 43573, 65260, 42063, 
-    0, 42811, 10312, 74192, 120794, 7840, 0, 43630, 10252, 0, 0, 43185, 0, 
-    4396, 0, 119880, 10769, 9676, 119041, 0, 9753, 0, 8944, 0, 0, 10473, 0, 
-    0, 6072, 43025, 10299, 0, 0, 120608, 66326, 0, 0, 0, 0, 9330, 0, 7222, 
-    10283, 10315, 10379, 4996, 0, 13281, 66517, 7865, 10087, 78343, 0, 78347, 
-    0, 0, 7565, 66363, 12952, 64806, 43180, 77928, 68096, 77929, 43982, 
-    74288, 622, 74023, 885, 43405, 1602, 0, 0, 852, 0, 12160, 0, 10212, 
-    65435, 0, 12071, 9609, 12156, 917983, 917984, 43586, 11035, 10411, 
-    917988, 10255, 6710, 10279, 4194, 10375, 917993, 0, 4315, 12644, 127516, 
-    77937, 43639, 43343, 0, 917998, 11501, 41177, 0, 0, 917792, 0, 0, 8715, 
-    0, 41179, 0, 43313, 0, 41176, 0, 994, 0, 8452, 127103, 73966, 0, 0, 5921, 
-    0, 2597, 0, 5922, 118903, 77943, 4186, 127107, 127106, 127105, 6718, 0, 
-    4406, 74601, 8480, 9192, 9747, 0, 4413, 0, 42268, 3198, 5924, 5920, 0, 
-    6921, 78081, 74007, 42869, 8418, 11681, 43169, 10176, 0, 742, 0, 2893, 
-    10772, 65276, 5937, 1914, 2553, 11682, 6756, 0, 0, 8363, 0, 2993, 7772, 
-    3916, 0, 120494, 1141, 42407, 8159, 718, 7572, 973, 0, 120718, 3235, 
-    2415, 43164, 0, 8018, 42333, 74756, 10675, 6937, 42486, 43381, 65390, 0, 
-    0, 1202, 0, 0, 127037, 0, 0, 0, 78182, 64542, 3260, 73829, 65388, 9945, 
-    8419, 78042, 6738, 0, 43681, 74193, 2059, 0, 0, 55237, 1431, 0, 66565, 
-    10821, 0, 12804, 0, 8229, 1235, 3307, 11472, 78089, 78184, 4544, 0, 0, 0, 
-    1740, 78097, 8758, 985, 12872, 64511, 78094, 12068, 78102, 0, 10141, 0, 
-    63761, 8785, 4476, 78109, 63763, 12655, 8907, 78105, 78106, 78103, 78104, 
-    0, 119572, 10665, 64616, 41572, 0, 0, 0, 41573, 0, 3931, 120295, 74143, 
-    0, 0, 0, 0, 11982, 0, 0, 0, 0, 64484, 0, 41167, 0, 41735, 0, 717, 10754, 
-    0, 0, 0, 0, 63767, 0, 1780, 6936, 0, 0, 819, 10611, 9694, 126978, 0, 0, 
-    0, 0, 0, 0, 12820, 0, 6578, 7009, 7523, 6922, 74218, 67848, 7525, 3346, 
-    8339, 0, 0, 575, 268, 78111, 8563, 5754, 120343, 41541, 65565, 8336, 
-    5936, 7290, 78117, 8337, 13081, 308, 11388, 7522, 120721, 78123, 65466, 
-    11090, 6953, 0, 120346, 0, 78132, 5926, 78128, 78130, 78126, 78127, 
-    78124, 78125, 9038, 7887, 43456, 7830, 11651, 13093, 64002, 0, 65742, 
-    12874, 119597, 11590, 0, 74048, 0, 8595, 0, 0, 43703, 13097, 0, 64643, 
-    13283, 12697, 0, 12381, 3488, 5933, 10033, 73738, 66241, 65570, 0, 12297, 
-    119153, 1955, 0, 5349, 42538, 0, 0, 65308, 9462, 0, 0, 0, 0, 42736, 0, 
-    5756, 0, 7638, 41642, 42764, 0, 43109, 7637, 5752, 120600, 0, 73832, 0, 
-    120635, 0, 78334, 0, 7636, 65171, 9124, 0, 78892, 0, 291, 0, 0, 2027, 
-    66230, 78142, 78136, 10403, 0, 4640, 64713, 10224, 120429, 42512, 120431, 
-    120430, 0, 0, 0, 0, 0, 0, 0, 119094, 74213, 7824, 0, 0, 41274, 5778, 
-    6302, 0, 0, 12680, 119130, 1417, 77889, 194914, 9452, 0, 74393, 11552, 0, 
-    0, 0, 65391, 0, 10172, 65453, 63789, 41264, 78658, 6426, 4641, 9179, 
-    64819, 55278, 41255, 42036, 41469, 41269, 120412, 41267, 4646, 120425, 
-    865, 42034, 78274, 78273, 4645, 42033, 78270, 0, 0, 64728, 0, 78673, 
-    78674, 1659, 919, 42784, 1671, 195089, 6069, 9219, 195090, 1661, 13120, 
-    63784, 69819, 10140, 9713, 119143, 0, 0, 0, 2306, 10485, 118943, 6068, 
-    10612, 195099, 0, 195101, 195078, 41462, 195080, 195079, 5422, 195081, 0, 
-    0, 0, 10229, 10635, 826, 195083, 195082, 195085, 195084, 195087, 6483, 0, 
-    1808, 7848, 0, 8100, 78227, 78669, 78670, 13301, 78667, 9667, 78665, 
-    78872, 0, 11003, 9904, 0, 0, 120690, 9144, 10921, 0, 78680, 9840, 65131, 
-    78678, 77841, 10313, 0, 0, 64320, 10265, 78686, 10962, 78684, 43008, 
-    8945, 78683, 0, 41, 195072, 1792, 120515, 195073, 8655, 195075, 0, 77951, 
-    12066, 0, 385, 4152, 2585, 0, 119068, 3126, 0, 74136, 10957, 0, 43258, 0, 
-    0, 13157, 0, 0, 3570, 0, 7443, 0, 44006, 6997, 0, 0, 7879, 8739, 11075, 
-    0, 65216, 0, 69795, 2593, 8463, 7810, 917862, 7839, 119913, 78806, 
-    119912, 9691, 4411, 78802, 0, 0, 43442, 78799, 65254, 10066, 0, 0, 0, 0, 
-    13061, 8016, 78687, 19932, 64831, 0, 0, 12390, 119171, 1634, 68115, 0, 
-    11056, 0, 119925, 0, 41165, 11328, 12450, 0, 41166, 0, 12456, 119914, 
-    171, 5941, 12452, 917544, 12458, 12531, 78779, 43013, 63800, 74162, 0, 
-    120483, 9969, 0, 12454, 63806, 42132, 12063, 78425, 78424, 3230, 0, 0, 0, 
-    5209, 297, 5810, 8522, 8415, 0, 78429, 78428, 7077, 2497, 0, 960, 74156, 
-    6981, 0, 12938, 4292, 0, 74815, 10512, 0, 74814, 78875, 127505, 78876, 
-    2503, 73778, 1762, 69794, 2495, 78873, 5844, 78874, 118838, 0, 12654, 
-    4663, 1899, 78877, 2507, 64121, 8726, 65594, 0, 0, 0, 8892, 0, 0, 0, 0, 
-    5782, 420, 0, 0, 120462, 10797, 63794, 0, 0, 64814, 63796, 77965, 0, 
-    66581, 119204, 41608, 0, 0, 63792, 4659, 120788, 0, 43676, 0, 0, 0, 0, 0, 
-    329, 77968, 0, 917548, 7399, 0, 41188, 13244, 120466, 42167, 7435, 78193, 
-    5380, 119086, 69225, 1155, 11365, 43126, 77972, 0, 65684, 0, 5601, 65192, 
-    42765, 63752, 0, 7987, 0, 1172, 69799, 6786, 43601, 120476, 74126, 5603, 
-    0, 4473, 0, 194823, 0, 65347, 65346, 65345, 0, 0, 5347, 69802, 0, 73868, 
-    118944, 10588, 0, 0, 63755, 0, 5343, 78422, 0, 4555, 5341, 0, 0, 0, 5351, 
-    0, 43104, 65244, 917892, 64541, 42519, 74472, 0, 0, 74765, 917888, 0, 
-    6638, 0, 65113, 271, 74180, 65370, 8835, 65368, 12653, 65366, 42172, 
-    41086, 65363, 65362, 65361, 11912, 43410, 11323, 65357, 11800, 65355, 
-    5345, 65353, 65352, 65351, 761, 65349, 19959, 0, 63856, 0, 0, 77958, 
-    64647, 77959, 11957, 4699, 0, 0, 0, 0, 64605, 0, 0, 0, 4916, 0, 380, 
-    10958, 66563, 77955, 69773, 9773, 13167, 12918, 41096, 73980, 69245, 
-    78254, 917893, 10684, 0, 917896, 0, 7946, 12541, 8182, 0, 69780, 0, 0, 0, 
-    0, 9005, 1225, 6630, 0, 0, 0, 0, 8847, 0, 65876, 5535, 8329, 74590, 0, 0, 
-    0, 0, 3127, 2595, 65713, 42013, 0, 5607, 41089, 0, 0, 74256, 2665, 11304, 
-    0, 74200, 4970, 8764, 120459, 8934, 0, 41566, 4492, 0, 65011, 41090, 0, 
-    0, 1188, 7254, 1100, 0, 0, 41081, 2912, 11749, 69792, 0, 0, 3572, 10023, 
-    4959, 13079, 0, 0, 9729, 0, 0, 0, 43361, 0, 0, 11803, 7996, 9907, 41450, 
-    13304, 0, 127260, 41451, 0, 11095, 8273, 127533, 3451, 0, 972, 41453, 0, 
-    0, 73883, 0, 73945, 0, 3455, 19955, 9538, 0, 69807, 0, 0, 0, 0, 11396, 0, 
-    11019, 0, 0, 0, 120507, 41078, 0, 261, 5927, 7791, 0, 0, 0, 10696, 0, 
-    6073, 9838, 118920, 0, 6075, 0, 282, 0, 6437, 74078, 0, 65861, 0, 0, 0, 
-    0, 3474, 118787, 0, 120655, 6081, 0, 0, 74076, 78879, 0, 0, 0, 0, 0, 
-    8751, 11499, 120273, 7816, 12636, 4665, 12628, 4670, 120271, 120272, 0, 
-    9642, 10912, 958, 0, 11387, 78878, 4666, 0, 4915, 0, 4669, 0, 68099, 
-    13287, 4664, 10836, 120550, 0, 69775, 0, 43595, 7450, 0, 917875, 8664, 
-    9697, 3606, 917873, 0, 0, 64815, 1063, 120250, 120251, 9772, 7255, 8886, 
-    1389, 0, 120257, 120258, 120259, 12941, 42661, 120254, 120255, 120256, 
-    12301, 120266, 69820, 41102, 66604, 120262, 120263, 120264, 1017, 66600, 
-    523, 505, 1447, 74436, 0, 0, 0, 8608, 42789, 0, 0, 0, 119196, 11307, 
-    66707, 917871, 0, 11745, 7919, 0, 1641, 0, 0, 8966, 0, 0, 5908, 0, 0, 
-    6744, 0, 1699, 74191, 74843, 0, 0, 6306, 10169, 0, 119251, 118939, 3766, 
-    2389, 120456, 120455, 6611, 257, 43170, 13153, 0, 42386, 0, 9436, 2599, 
-    0, 6496, 9449, 5930, 11476, 11033, 11447, 0, 5622, 120436, 8477, 3760, 
-    1718, 9442, 66433, 3776, 0, 41435, 4352, 0, 2435, 120809, 5621, 0, 4201, 
-    3778, 4203, 4202, 4205, 4204, 120447, 3768, 68142, 765, 41440, 3764, 
-    8473, 6373, 8469, 120438, 12947, 4564, 0, 0, 74271, 73753, 8374, 0, 0, 
-    6829, 5225, 0, 0, 0, 0, 119615, 0, 74793, 5626, 73807, 11771, 0, 0, 0, 0, 
-    5353, 5625, 74179, 0, 0, 1010, 64572, 41780, 42623, 64277, 0, 6952, 0, 
-    120752, 78762, 2590, 5629, 65552, 7551, 10325, 5632, 10471, 120038, 
-    120027, 120028, 120025, 5628, 120031, 970, 120029, 4772, 2400, 5627, 
-    120017, 120018, 120023, 64275, 120021, 10961, 0, 203, 0, 0, 0, 0, 78350, 
-    0, 64378, 42054, 0, 0, 554, 119649, 11358, 0, 12182, 42048, 11065, 0, 
-    73891, 0, 0, 5694, 7689, 69798, 9323, 4325, 3047, 10317, 175, 0, 0, 
-    69764, 0, 0, 1243, 42154, 5431, 6652, 0, 69770, 43651, 0, 68118, 0, 1129, 
-    0, 0, 65900, 1986, 7846, 78804, 8661, 0, 65255, 0, 3845, 4490, 118969, 
-    6649, 74400, 1456, 7530, 11977, 7249, 8366, 0, 7756, 12342, 0, 51, 41516, 
-    0, 8570, 9568, 917863, 456, 7026, 8145, 1168, 9251, 9082, 0, 64055, 
-    42781, 3866, 12323, 41512, 73805, 68121, 0, 41494, 0, 4660, 0, 10405, 0, 
-    78803, 0, 0, 42040, 73918, 119627, 7944, 41454, 12605, 0, 42205, 41455, 
-    236, 64051, 78867, 8214, 0, 0, 0, 41457, 0, 119589, 1969, 2384, 8097, 
-    917864, 0, 0, 78029, 8766, 0, 78079, 5854, 0, 10583, 0, 119989, 0, 10416, 
-    917869, 3872, 917868, 0, 8429, 0, 0, 2838, 917867, 0, 0, 0, 0, 0, 0, 0, 
-    11096, 120813, 10553, 1662, 8483, 0, 43605, 5892, 43418, 0, 73742, 66, 
-    65, 68, 67, 70, 69, 72, 71, 74, 73, 76, 75, 78, 77, 80, 79, 82, 81, 84, 
-    83, 86, 85, 88, 87, 90, 89, 119862, 10357, 7385, 8170, 1704, 8556, 0, 
-    9659, 0, 0, 0, 9556, 0, 4503, 11353, 9647, 0, 78185, 0, 0, 0, 78886, 0, 
-    0, 74229, 66593, 6438, 0, 9109, 78882, 1289, 64599, 0, 0, 0, 65507, 2447, 
-    0, 0, 0, 0, 0, 0, 6334, 0, 0, 19937, 0, 0, 0, 5675, 254, 0, 0, 0, 42425, 
-    8918, 64003, 5716, 42312, 0, 0, 6972, 42826, 0, 42464, 120567, 0, 0, 
-    74796, 64400, 64693, 0, 77861, 65429, 9515, 4435, 0, 42522, 0, 0, 11785, 
-    0, 64671, 41978, 1412, 4594, 1391, 10536, 8067, 9901, 7775, 0, 0, 74588, 
-    120748, 3140, 0, 7960, 43271, 0, 12518, 10909, 127508, 1428, 12472, 0, 0, 
-    7699, 12393, 0, 0, 0, 74518, 8223, 0, 4261, 0, 0, 0, 0, 0, 0, 0, 0, 
-    43419, 0, 64554, 10574, 3878, 0, 42352, 1752, 73785, 0, 42506, 0, 10199, 
-    0, 0, 0, 65919, 0, 6695, 720, 324, 0, 0, 43406, 0, 1464, 40985, 0, 7974, 
-    0, 43474, 0, 64488, 0, 0, 64041, 74787, 0, 78865, 0, 65597, 0, 78863, 0, 
-    1302, 0, 78861, 0, 0, 0, 5204, 74774, 43404, 43396, 0, 3995, 68360, 
-    65608, 3714, 0, 0, 0, 10999, 11750, 0, 43251, 68660, 43301, 0, 120557, 
-    8130, 8672, 10845, 11964, 0, 0, 0, 0, 68455, 42863, 73839, 0, 0, 0, 0, 0, 
-    0, 468, 612, 0, 64401, 66448, 68376, 0, 1674, 0, 5823, 0, 12280, 0, 540, 
-    74564, 0, 0, 8432, 0, 11073, 0, 64316, 0, 0, 820, 41741, 0, 120667, 0, 
-    64684, 126992, 3359, 7800, 0, 65177, 6226, 353, 12396, 0, 119612, 64742, 
-    0, 120282, 0, 0, 12412, 19941, 0, 120277, 78847, 1884, 9481, 42418, 0, 
-    41157, 0, 1195, 64898, 7924, 0, 41151, 2010, 0, 41328, 42344, 0, 12409, 
-    0, 4360, 127009, 9739, 0, 74392, 73921, 0, 42521, 8539, 0, 0, 0, 0, 4788, 
-    0, 0, 65734, 0, 64353, 0, 13075, 74429, 0, 64569, 43532, 10837, 2492, 0, 
-    118901, 68637, 41136, 64351, 11813, 9649, 41154, 119617, 5128, 4038, 
-    41143, 65604, 64859, 41592, 6771, 1648, 5435, 0, 6734, 41343, 119848, 
-    65439, 12709, 6986, 119846, 0, 0, 41349, 0, 12581, 10374, 5175, 0, 73806, 
-    10254, 0, 10278, 10262, 77950, 41346, 0, 607, 0, 0, 0, 12923, 10314, 
-    10282, 65477, 10378, 120297, 40976, 8265, 0, 119834, 40975, 5840, 42838, 
-    0, 40978, 0, 119840, 0, 0, 0, 66444, 10538, 0, 2550, 119836, 6779, 0, 0, 
-    3525, 6824, 118886, 0, 0, 5619, 65822, 0, 194882, 7455, 0, 5616, 11486, 
-    9656, 0, 0, 10727, 5615, 0, 120551, 42380, 64895, 43693, 66451, 808, 
-    5455, 11347, 0, 1026, 5620, 194887, 0, 11350, 5617, 0, 9225, 64639, 
-    127073, 9145, 0, 1338, 120581, 0, 12739, 4603, 3084, 0, 0, 9858, 6037, 0, 
-    3974, 78213, 10290, 0, 3083, 10322, 0, 0, 0, 41036, 0, 0, 43321, 65606, 
-    0, 41032, 42388, 0, 64700, 10011, 1445, 40961, 0, 194893, 0, 40960, 0, 
-    194891, 0, 40963, 64952, 10402, 0, 0, 0, 10603, 0, 0, 0, 0, 6714, 10083, 
-    127069, 194895, 78367, 0, 0, 0, 9073, 42585, 64302, 10704, 65030, 4787, 
-    0, 74829, 0, 65423, 0, 0, 9570, 0, 9525, 2689, 917626, 65426, 0, 917624, 
-    43740, 0, 40966, 917623, 13286, 3998, 42598, 42596, 503, 0, 8735, 2690, 
-    66488, 42836, 194913, 41954, 917617, 1652, 772, 6688, 8310, 65428, 3487, 
-    43416, 3585, 10194, 43320, 119159, 0, 194874, 6468, 41976, 9720, 917606, 
-    11767, 41970, 0, 5836, 12358, 0, 4355, 9048, 12180, 65027, 64680, 65025, 
-    43699, 0, 41488, 0, 8527, 194917, 12362, 12435, 12360, 41053, 3266, 0, 
-    12356, 8616, 41466, 0, 0, 11450, 0, 3638, 12354, 0, 3216, 0, 2358, 
-    119069, 8633, 0, 0, 119182, 69244, 0, 0, 11759, 0, 6368, 74823, 0, 41423, 
-    8078, 10504, 0, 41698, 42237, 0, 7002, 0, 41430, 42267, 41051, 41484, 0, 
-    0, 41050, 41473, 10466, 13099, 0, 0, 0, 6435, 0, 11362, 0, 0, 65382, 0, 
-    41420, 0, 3625, 78157, 41409, 0, 0, 2041, 9178, 9672, 41427, 43541, 
-    43317, 0, 0, 0, 41424, 917598, 120546, 0, 0, 0, 41417, 1261, 0, 0, 12102, 
-    119662, 41401, 0, 0, 0, 0, 0, 42290, 3275, 0, 42329, 0, 0, 0, 0, 0, 
-    120725, 10989, 74234, 0, 10598, 7410, 2669, 903, 0, 2920, 0, 127232, 
-    74603, 64504, 19928, 0, 0, 3917, 0, 11732, 0, 0, 41448, 41461, 0, 0, 
-    917558, 0, 8819, 12663, 0, 41184, 74014, 232, 74835, 120646, 9168, 65786, 
-    0, 0, 0, 9094, 0, 11758, 68425, 0, 1064, 42467, 0, 10115, 19924, 0, 0, 
-    7862, 64551, 13224, 8516, 41862, 66650, 7561, 78618, 69793, 1878, 0, 0, 
-    2911, 0, 41178, 5427, 64823, 0, 0, 12617, 41174, 0, 41458, 0, 41463, 
-    42413, 11292, 2406, 775, 0, 65584, 0, 6074, 9618, 194903, 0, 43440, 0, 
-    194901, 41436, 3656, 0, 194899, 41456, 0, 1599, 11333, 0, 6703, 8513, 0, 
-    1613, 0, 68456, 12598, 0, 0, 78745, 74500, 41460, 10145, 10542, 9937, 
-    78746, 0, 9905, 0, 65730, 0, 120374, 8427, 120375, 55246, 120376, 0, 
-    11497, 64687, 74008, 120371, 3871, 0, 0, 9111, 5741, 0, 194846, 120366, 
-    119111, 120745, 0, 120368, 0, 11648, 0, 0, 120364, 41587, 120365, 0, 
-    74322, 42113, 0, 0, 12172, 0, 74530, 65298, 65723, 194840, 73871, 65724, 
-    7928, 120354, 0, 41595, 73730, 0, 42118, 73830, 66042, 10355, 0, 7875, 0, 
-    41598, 3993, 0, 1545, 40971, 536, 0, 43029, 0, 0, 65173, 65286, 0, 0, 0, 
-    0, 0, 0, 41375, 5402, 0, 0, 1687, 120503, 0, 0, 78194, 64326, 40969, 
-    10526, 78753, 8323, 40968, 1339, 11731, 78756, 0, 65460, 12242, 0, 8020, 
-    10843, 11554, 0, 0, 8266, 41006, 65722, 0, 10710, 0, 118942, 67667, 
-    64567, 119155, 195091, 0, 119636, 67857, 120687, 0, 0, 11755, 66305, 0, 
-    0, 10917, 120767, 0, 11272, 2040, 41247, 41326, 195060, 1741, 42370, 
-    1227, 0, 0, 11413, 0, 0, 5283, 1586, 4978, 0, 1984, 0, 0, 120651, 40984, 
-    0, 9373, 0, 12916, 6284, 0, 41663, 0, 0, 0, 9237, 9385, 41648, 0, 0, 0, 
-    41666, 1830, 73783, 2056, 41287, 0, 0, 0, 42219, 0, 0, 41987, 41676, 0, 
-    120823, 0, 41670, 0, 0, 2796, 55291, 11683, 9902, 74521, 0, 11451, 0, 0, 
-    42631, 2359, 0, 67844, 74164, 41238, 548, 11405, 13133, 64368, 0, 0, 0, 
-    397, 43622, 42139, 9547, 9590, 0, 1614, 43661, 64356, 66307, 6651, 1358, 
-    0, 428, 9620, 1466, 78112, 10982, 118831, 1333, 0, 407, 6425, 0, 74253, 
-    0, 0, 0, 5804, 11976, 8554, 0, 0, 0, 9057, 42294, 41218, 0, 0, 78137, 
-    1883, 10952, 8048, 0, 41225, 0, 118955, 0, 0, 0, 4407, 0, 65809, 119074, 
-    194821, 8448, 68122, 74183, 0, 12675, 12659, 0, 42363, 120624, 194824, 
-    55273, 10766, 12012, 2386, 64732, 9170, 917821, 9123, 64585, 120500, 0, 
-    43367, 42051, 0, 4164, 9081, 0, 120569, 42049, 42042, 8709, 0, 0, 120637, 
-    42419, 0, 42047, 0, 0, 8470, 11807, 65897, 577, 0, 0, 74300, 0, 127308, 
-    74840, 0, 0, 0, 0, 8736, 1414, 42643, 9683, 43486, 74344, 0, 2536, 0, 
-    66330, 0, 0, 0, 0, 0, 0, 0, 66317, 917612, 66315, 2106, 0, 11273, 0, 
-    43004, 7541, 0, 0, 961, 64307, 66324, 64906, 0, 3106, 65917, 41284, 1696, 
-    0, 891, 12105, 0, 42624, 12802, 3264, 8824, 13268, 43003, 10936, 0, 0, 0, 
-    0, 0, 0, 2322, 0, 0, 11449, 0, 42868, 41285, 3547, 0, 0, 0, 0, 43216, 
-    6089, 78682, 0, 120578, 4170, 1029, 0, 127036, 119224, 42374, 0, 744, 0, 
-    0, 0, 65823, 0, 0, 3551, 0, 0, 4623, 55268, 0, 4598, 0, 65136, 0, 0, 0, 
-    10851, 0, 6179, 0, 6180, 0, 11952, 120778, 78648, 11972, 78646, 78647, 
-    78644, 78645, 177, 78643, 6176, 120580, 0, 0, 6177, 9020, 78652, 78653, 
-    6178, 120249, 120242, 0, 67673, 7518, 8754, 0, 120237, 74551, 43081, 0, 
-    0, 9136, 120240, 4401, 41280, 0, 8974, 2308, 0, 74149, 0, 2318, 0, 66361, 
-    8198, 0, 64360, 12601, 42536, 65266, 120827, 74307, 0, 6970, 5404, 43332, 
-    3667, 7936, 12925, 126989, 6385, 0, 0, 118949, 10874, 65505, 0, 0, 42053, 
-    2075, 42057, 11083, 42052, 0, 0, 67651, 0, 9665, 0, 0, 13181, 0, 0, 0, 0, 
-    74148, 0, 0, 120225, 120229, 120224, 74172, 41145, 0, 0, 0, 41148, 8683, 
-    7594, 127519, 0, 119090, 10869, 43458, 41146, 0, 11441, 0, 3512, 119633, 
-    0, 8103, 0, 0, 65184, 11780, 41563, 42796, 0, 119106, 41544, 65146, 0, 0, 
-    0, 0, 19942, 0, 118908, 7988, 10436, 74273, 3271, 73804, 64711, 0, 0, 0, 
-    0, 3804, 13070, 11557, 42044, 0, 1095, 0, 3599, 0, 0, 0, 8514, 0, 0, 0, 
-    74346, 66697, 0, 11684, 0, 0, 0, 0, 42043, 43232, 66677, 0, 42046, 78241, 
-    4036, 0, 0, 0, 194861, 0, 11954, 0, 1450, 12986, 1340, 0, 65441, 0, 0, 0, 
-    0, 0, 917542, 0, 0, 6539, 0, 0, 0, 194856, 0, 120492, 41190, 3973, 
-    119365, 4575, 41193, 7982, 429, 0, 0, 0, 194854, 65792, 0, 118968, 6417, 
-    118918, 78178, 0, 194850, 0, 0, 4919, 10590, 0, 7755, 0, 0, 64548, 
-    120506, 1621, 10214, 65126, 0, 127004, 0, 12188, 0, 1617, 8050, 0, 5015, 
-    0, 119174, 42590, 194871, 1756, 78181, 0, 65768, 6352, 41892, 0, 7555, 
-    13103, 5408, 2817, 1214, 0, 0, 0, 0, 0, 0, 0, 7957, 8689, 64723, 1056, 0, 
-    74147, 0, 0, 55286, 7073, 65850, 12327, 0, 119028, 0, 0, 0, 2341, 8450, 
-    8484, 8474, 0, 0, 0, 8461, 0, 12153, 12799, 0, 43709, 43708, 9451, 7571, 
-    13073, 0, 0, 681, 0, 703, 0, 3272, 8781, 12894, 0, 11709, 0, 74446, 0, 0, 
-    0, 11338, 120768, 3276, 0, 0, 65928, 0, 0, 65021, 64795, 74574, 0, 10047, 
-    78814, 3262, 78811, 42711, 0, 0, 68478, 163, 576, 9895, 1655, 78817, 
-    74591, 78815, 78816, 0, 0, 0, 0, 10039, 0, 0, 5623, 5717, 5776, 0, 0, 0, 
-    41591, 11036, 65252, 120488, 0, 0, 0, 0, 0, 0, 0, 8887, 0, 7295, 11031, 
-    0, 43157, 0, 8946, 10348, 10412, 8755, 0, 0, 5718, 13221, 0, 0, 78135, 0, 
-    0, 8810, 74499, 686, 0, 0, 4619, 118954, 6654, 73769, 74426, 0, 12040, 
-    65689, 10128, 65118, 0, 119151, 118891, 0, 0, 2401, 68144, 8792, 0, 0, 
-    65455, 0, 0, 0, 119129, 0, 12886, 0, 66624, 0, 43557, 10300, 10161, 
-    10396, 74135, 0, 118945, 78118, 73851, 3010, 6441, 78122, 1458, 41475, 0, 
-    0, 0, 11479, 0, 0, 6350, 12864, 0, 78114, 1061, 64780, 2001, 43111, 
-    55230, 0, 4052, 0, 7626, 0, 0, 1045, 0, 5631, 41113, 0, 0, 43707, 74127, 
-    0, 0, 8486, 0, 73758, 2335, 4362, 0, 0, 69221, 1025, 0, 42625, 0, 78084, 
-    41443, 0, 0, 0, 1774, 1523, 0, 0, 41445, 78236, 0, 8567, 41442, 3988, 0, 
-    78237, 118910, 0, 65274, 8564, 0, 78238, 127515, 0, 0, 43446, 0, 66513, 
-    6256, 0, 579, 55218, 10206, 0, 6375, 2673, 0, 11814, 0, 4488, 0, 0, 
-    68451, 10444, 118846, 0, 11799, 74407, 68466, 4487, 0, 42832, 1032, 
-    120267, 43450, 78257, 7203, 0, 614, 78191, 0, 120615, 0, 78262, 0, 0, 0, 
-    43121, 0, 0, 0, 1050, 7549, 0, 0, 9314, 0, 0, 120616, 0, 10057, 0, 0, 0, 
-    66504, 0, 0, 2307, 0, 64333, 0, 0, 73873, 0, 0, 0, 0, 0, 0, 10360, 6746, 
-    0, 0, 440, 0, 13085, 9233, 74216, 0, 0, 68612, 0, 66447, 8046, 64963, 
-    65777, 10125, 74212, 42819, 10910, 0, 1521, 9896, 0, 10487, 0, 12527, 0, 
-    7970, 0, 0, 0, 65769, 5243, 9849, 5239, 65771, 0, 0, 5237, 0, 0, 10103, 
-    5247, 4769, 0, 118977, 12873, 5764, 0, 0, 3008, 4896, 0, 12087, 0, 55231, 
-    41103, 0, 64565, 4773, 0, 0, 0, 4770, 0, 917567, 8731, 65378, 0, 120619, 
-    9122, 0, 0, 4774, 3019, 9997, 12834, 0, 9456, 10215, 120547, 0, 0, 0, 0, 
-    74776, 4281, 4768, 0, 41535, 4099, 9017, 0, 0, 78095, 0, 78096, 0, 0, 0, 
-    78098, 0, 42814, 880, 0, 0, 0, 0, 0, 10116, 9877, 0, 0, 0, 7095, 0, 0, 
-    6778, 0, 78090, 8243, 2427, 0, 7093, 0, 11585, 195003, 9962, 0, 12223, 0, 
-    0, 1434, 0, 5637, 11573, 0, 0, 0, 19951, 0, 78121, 0, 0, 55283, 0, 0, 
-    74437, 1156, 8740, 0, 3782, 64331, 0, 41370, 1014, 8261, 0, 0, 10835, 0, 
-    65536, 0, 120463, 0, 7702, 118824, 0, 43010, 65779, 65783, 1150, 10547, 
-    5700, 0, 120603, 65383, 2339, 42594, 5697, 118788, 0, 0, 0, 42257, 5696, 
-    120470, 120465, 3862, 9643, 0, 0, 7634, 65167, 9845, 0, 0, 5701, 9722, 
-    41490, 0, 1426, 68217, 0, 68447, 42204, 55270, 8571, 194991, 0, 0, 78818, 
-    0, 43182, 12184, 0, 42022, 0, 10281, 0, 5650, 43194, 64712, 10744, 0, 
-    990, 5647, 0, 7387, 78734, 41114, 11477, 5646, 12879, 11018, 0, 3945, 0, 
-    0, 0, 0, 0, 78212, 0, 1020, 73763, 0, 78731, 5648, 64748, 194910, 0, 
-    10205, 3545, 0, 6984, 0, 74051, 0, 43242, 120458, 2667, 0, 0, 0, 9911, 0, 
-    65020, 10097, 119166, 0, 0, 118836, 0, 78427, 1140, 78426, 0, 10159, 0, 
-    0, 8128, 0, 0, 917965, 1815, 19910, 890, 0, 3267, 0, 0, 10123, 0, 4410, 
-    1041, 10576, 6354, 0, 580, 74232, 0, 0, 0, 0, 0, 19938, 65906, 0, 0, 0, 
-    3298, 5375, 10142, 0, 8215, 0, 6134, 41246, 64402, 0, 0, 0, 0, 0, 41382, 
-    0, 0, 5173, 65348, 527, 0, 0, 0, 0, 78797, 11915, 0, 0, 10072, 0, 42695, 
-    2329, 42250, 0, 0, 0, 12245, 9939, 0, 0, 0, 0, 0, 74328, 119576, 74769, 
-    0, 119087, 9069, 6144, 0, 0, 73822, 0, 0, 64917, 41521, 118934, 494, 
-    13250, 0, 65098, 6364, 956, 0, 12830, 10462, 73740, 0, 0, 0, 0, 66449, 
-    13263, 74281, 69217, 13171, 0, 0, 0, 0, 0, 1044, 41276, 0, 0, 0, 42068, 
-    11795, 0, 0, 0, 0, 42450, 3907, 0, 64526, 0, 68197, 12295, 0, 11475, 0, 
-    3020, 11537, 0, 66441, 0, 0, 0, 0, 1057, 566, 42696, 0, 3016, 42274, 
-    43464, 66490, 12921, 66571, 78472, 0, 3006, 4620, 127237, 0, 0, 0, 64659, 
-    0, 0, 55253, 6357, 6362, 8626, 0, 0, 9090, 65377, 41596, 0, 0, 1698, 0, 
-    64477, 0, 0, 1053, 0, 78269, 0, 0, 1052, 1051, 459, 1060, 74349, 66479, 
-    0, 0, 0, 0, 42490, 689, 6508, 4163, 42298, 8639, 66641, 4246, 0, 0, 
-    12130, 0, 42337, 64596, 64375, 66481, 0, 0, 0, 6359, 0, 43471, 0, 0, 0, 
-    127274, 0, 6358, 6361, 1926, 6356, 0, 7898, 8110, 10935, 0, 43633, 5830, 
-    0, 43685, 0, 0, 0, 0, 8693, 78611, 119565, 0, 0, 0, 127257, 0, 0, 0, 0, 
-    0, 0, 0, 119187, 11439, 78868, 0, 0, 78869, 42313, 5579, 0, 0, 0, 0, 0, 
-    5578, 41774, 0, 42023, 6234, 5669, 0, 0, 0, 0, 127506, 68202, 5583, 0, 0, 
-    42426, 5580, 42276, 2923, 892, 5582, 42465, 41330, 194987, 5795, 65512, 
-    119006, 65702, 0, 120801, 65251, 0, 65710, 0, 0, 67672, 0, 5370, 0, 
-    194986, 1638, 10966, 10188, 65878, 118848, 0, 0, 0, 0, 8172, 42017, 0, 
-    10844, 0, 0, 0, 6374, 0, 0, 286, 78023, 1062, 0, 119999, 0, 7395, 0, 
-    1070, 64900, 0, 6095, 41865, 0, 3015, 0, 917763, 5211, 0, 6400, 0, 
-    194983, 0, 8189, 11276, 0, 0, 372, 0, 0, 118874, 42102, 41585, 0, 0, 
-    42101, 276, 78402, 0, 33, 74226, 0, 9007, 118796, 41588, 66033, 427, 
-    10763, 118819, 0, 0, 0, 1031, 6257, 0, 42104, 0, 0, 2328, 0, 1071, 0, 0, 
-    74848, 0, 0, 0, 1047, 0, 0, 64790, 0, 0, 10651, 0, 0, 0, 0, 0, 119181, 
-    5711, 41633, 12098, 65571, 9166, 0, 5710, 0, 6790, 65168, 13216, 0, 0, 0, 
-    0, 64611, 41623, 195001, 5715, 0, 0, 0, 5712, 2761, 41620, 68124, 3074, 
-    5722, 0, 8643, 73768, 0, 118906, 2757, 11067, 9718, 74498, 8910, 10689, 
-    6479, 0, 0, 0, 78607, 0, 0, 0, 0, 0, 0, 118911, 0, 0, 0, 0, 0, 120010, 0, 
-    8701, 68130, 119616, 120522, 0, 42477, 0, 12123, 4495, 43569, 0, 0, 0, 
-    64946, 10992, 0, 120009, 0, 0, 9318, 120661, 13249, 65679, 73808, 0, 
-    65457, 42249, 7639, 43995, 67845, 42641, 5454, 0, 0, 194997, 120005, 0, 
-    0, 5084, 0, 0, 118861, 0, 733, 917876, 78014, 78436, 78435, 41677, 0, 
-    9218, 1731, 0, 0, 0, 0, 0, 0, 0, 120001, 127018, 0, 5155, 0, 5358, 0, 0, 
-    917767, 64424, 0, 3840, 64314, 41432, 0, 0, 68430, 119116, 43253, 65943, 
-    0, 3371, 10988, 0, 8771, 1479, 0, 0, 1109, 11580, 0, 64601, 12205, 0, 0, 
-    64507, 8868, 399, 0, 74842, 0, 0, 12149, 13088, 551, 0, 10156, 12119, 0, 
-    0, 2544, 65074, 0, 0, 0, 78011, 351, 119149, 0, 0, 55229, 0, 74268, 0, 0, 
-    0, 42377, 0, 0, 0, 0, 0, 9013, 4054, 0, 0, 0, 0, 73960, 5585, 65881, 
-    2549, 74469, 0, 0, 5584, 8358, 0, 74411, 0, 10919, 0, 7980, 0, 0, 0, 
-    41800, 5589, 0, 2664, 41613, 5586, 118890, 0, 11356, 0, 0, 43452, 78609, 
-    0, 42573, 67856, 0, 78129, 0, 0, 0, 8135, 6450, 10055, 77996, 0, 0, 0, 
-    5657, 0, 9626, 0, 77994, 10179, 5654, 12939, 0, 120799, 0, 0, 5652, 
-    10945, 0, 66486, 0, 3661, 7863, 0, 0, 0, 74509, 0, 5659, 0, 0, 66729, 
-    5655, 0, 42168, 0, 1055, 917628, 0, 66310, 74030, 0, 12146, 73955, 73956, 
-    11618, 0, 126990, 0, 10272, 10304, 10368, 42518, 594, 10244, 10248, 7407, 
-    0, 64870, 0, 3467, 0, 0, 3331, 946, 10231, 1495, 8131, 74330, 0, 9562, 
-    69222, 65927, 0, 0, 120155, 69769, 64656, 0, 0, 194837, 0, 5666, 65227, 
-    5318, 63994, 0, 9091, 10798, 0, 917979, 10186, 0, 7732, 0, 64556, 0, 0, 
-    5668, 74445, 0, 0, 5670, 0, 0, 11820, 2992, 7826, 5667, 19952, 120807, 0, 
-    12749, 0, 0, 0, 66496, 4361, 119260, 1306, 9286, 1497, 0, 0, 0, 0, 3571, 
-    13247, 0, 7973, 66353, 68435, 78278, 67896, 43192, 0, 78265, 553, 120653, 
-    0, 0, 5829, 0, 4587, 78285, 65912, 0, 12746, 0, 0, 119924, 5633, 119927, 
-    0, 0, 0, 64905, 0, 9512, 0, 12742, 6443, 0, 0, 9135, 0, 41564, 0, 55219, 
-    0, 0, 0, 12148, 0, 78297, 0, 64256, 0, 11669, 0, 5634, 4524, 0, 127270, 
-    0, 118880, 2425, 65182, 0, 43636, 5221, 78410, 328, 0, 0, 69815, 5636, 0, 
-    5329, 0, 5638, 119918, 7940, 64938, 43223, 0, 5635, 3373, 2986, 78292, 
-    74223, 3437, 78291, 6203, 4247, 0, 11920, 8274, 0, 0, 1657, 41561, 78299, 
-    78295, 5639, 2954, 5660, 5640, 78303, 0, 78300, 42227, 0, 0, 41637, 
-    67872, 0, 78310, 41625, 43362, 78309, 120713, 11705, 5642, 0, 5486, 0, 
-    4356, 11710, 0, 12051, 0, 0, 5641, 8259, 0, 1058, 0, 67630, 0, 0, 1144, 
-    78750, 0, 42228, 0, 73890, 118972, 0, 65322, 0, 5645, 64964, 8652, 2547, 
-    66484, 43634, 0, 5608, 65890, 0, 0, 67621, 119934, 9000, 0, 0, 0, 1865, 
-    0, 5613, 74267, 0, 0, 5610, 0, 0, 65826, 2069, 0, 10787, 43999, 2997, 0, 
-    5609, 78316, 65319, 78313, 12316, 65376, 2412, 0, 8186, 9807, 74269, 0, 
-    13130, 65874, 0, 5807, 0, 10030, 5306, 12936, 0, 0, 11704, 0, 0, 10211, 
-    0, 0, 0, 0, 11706, 9710, 0, 0, 0, 413, 65623, 74237, 0, 9133, 74262, 0, 
-    1042, 0, 64779, 12171, 119240, 6185, 64776, 4984, 0, 708, 11391, 0, 
-    12241, 0, 0, 1308, 0, 2534, 810, 0, 0, 0, 0, 0, 1917, 3000, 0, 0, 120739, 
-    2364, 0, 74470, 66618, 65680, 0, 10027, 0, 0, 12337, 120722, 0, 0, 2980, 
-    755, 69774, 931, 13124, 68182, 6363, 2748, 0, 0, 65041, 0, 44011, 8730, 
-    0, 0, 78312, 7274, 119250, 0, 7275, 78304, 935, 0, 65840, 377, 42325, 
-    11649, 0, 65253, 64301, 0, 78308, 42341, 65284, 2417, 0, 12884, 19912, 
-    7907, 10768, 0, 194998, 0, 10673, 119217, 7248, 0, 0, 1781, 5496, 3627, 
-    62, 1649, 0, 964, 0, 0, 78226, 0, 127512, 0, 0, 0, 0, 43689, 0, 13142, 
-    78812, 42415, 66575, 4542, 74037, 43547, 0, 0, 7677, 2991, 4946, 42454, 
-    0, 7949, 0, 0, 11341, 42494, 3073, 65625, 9714, 11692, 4657, 0, 0, 6478, 
-    9898, 43673, 65237, 6241, 0, 4877, 0, 6238, 0, 10548, 127049, 4409, 0, 0, 
-    64798, 0, 5346, 0, 120528, 6237, 4874, 0, 9176, 0, 0, 65231, 65884, 
-    12678, 78748, 118912, 11378, 44018, 42785, 2408, 3251, 0, 0, 5685, 0, 
-    2461, 11052, 7091, 5342, 8317, 0, 68163, 5340, 0, 0, 43635, 73928, 
-    127529, 0, 0, 0, 0, 65482, 0, 9142, 0, 0, 0, 10938, 0, 118790, 1182, 
-    2542, 4826, 0, 0, 0, 529, 8580, 0, 0, 10586, 10790, 10839, 66023, 41593, 
-    41207, 0, 0, 41594, 225, 42828, 0, 0, 0, 11376, 74379, 10721, 67664, 
-    3438, 42097, 127267, 11084, 3194, 41870, 266, 78305, 0, 41873, 120575, 
-    11324, 0, 0, 8420, 64918, 0, 41871, 41338, 3734, 7734, 43683, 8750, 
-    66605, 66011, 0, 40965, 0, 0, 5161, 10572, 0, 0, 0, 64349, 7287, 42162, 
-    127552, 0, 0, 11948, 69220, 12359, 43429, 41369, 1697, 12191, 0, 68633, 
-    7286, 0, 68635, 10031, 0, 9870, 68645, 8620, 65824, 0, 11938, 0, 7285, 0, 
-    119577, 42678, 0, 43677, 41583, 0, 65799, 0, 0, 0, 0, 78169, 66199, 0, 
-    3609, 68624, 0, 832, 120693, 120770, 78473, 66007, 78471, 65703, 0, 0, 
-    42732, 5180, 0, 41395, 41530, 11691, 64773, 0, 74002, 0, 0, 0, 6348, 243, 
-    13200, 0, 6024, 0, 9979, 10037, 41529, 10648, 8538, 43687, 0, 0, 4285, 
-    66195, 0, 4230, 0, 13307, 43256, 0, 7563, 42376, 0, 68442, 120512, 0, 0, 
-    214, 0, 0, 78466, 65893, 12208, 9973, 0, 66311, 65589, 0, 2603, 0, 0, 0, 
-    0, 0, 6022, 0, 2884, 0, 11620, 0, 43, 0, 66453, 1016, 41107, 0, 41121, 
-    3885, 92, 65456, 64608, 0, 74801, 0, 2074, 0, 78283, 0, 12453, 0, 0, 
-    74241, 0, 6791, 12457, 78268, 0, 0, 0, 78279, 0, 0, 0, 66637, 7995, 8759, 
-    43421, 78277, 12449, 0, 0, 0, 8752, 3197, 4720, 10165, 0, 119249, 0, 
-    11595, 64893, 0, 43435, 0, 0, 4993, 0, 6168, 10934, 1946, 741, 0, 5494, 
-    4639, 0, 1990, 66589, 4498, 78664, 119183, 0, 0, 0, 2960, 73779, 0, 8969, 
-    0, 43424, 127059, 0, 2950, 0, 6210, 65753, 370, 0, 0, 0, 4953, 0, 0, 0, 
-    0, 69230, 0, 0, 65688, 0, 5063, 3517, 2964, 43663, 917762, 6344, 74791, 
-    10566, 10144, 66333, 8252, 729, 66016, 78253, 0, 0, 64923, 0, 43669, 
-    9032, 78263, 78264, 0, 41215, 0, 65883, 0, 0, 120602, 3761, 0, 0, 0, 0, 
-    12912, 119012, 3850, 0, 0, 0, 0, 0, 908, 0, 8611, 0, 0, 0, 43691, 41197, 
-    0, 8978, 120540, 119135, 41586, 10527, 0, 917848, 3848, 78739, 194937, 
-    127536, 65241, 5336, 0, 0, 663, 0, 10780, 0, 0, 78767, 0, 0, 68193, 347, 
-    0, 0, 78775, 64675, 41582, 78774, 78744, 65579, 12980, 78769, 12143, 
-    73733, 78512, 0, 43441, 41804, 78523, 0, 78525, 0, 0, 41584, 10681, 0, 0, 
-    73938, 0, 0, 4800, 66661, 0, 66306, 64715, 78534, 9518, 6609, 10434, 0, 
-    11319, 1097, 0, 917850, 41730, 0, 0, 73847, 78761, 65172, 41728, 41721, 
-    0, 0, 0, 41203, 0, 13110, 41726, 0, 0, 1000, 0, 0, 41140, 1209, 73978, 0, 
-    73750, 1073, 6321, 77878, 41138, 0, 68213, 0, 12167, 1115, 41605, 9794, 
-    127062, 67671, 55248, 12237, 78787, 66314, 6587, 9290, 78782, 78783, 
-    9231, 78781, 2959, 7926, 0, 0, 0, 64398, 0, 119970, 12311, 0, 78796, 
-    78798, 78794, 78795, 68434, 78793, 66670, 0, 0, 12290, 0, 0, 0, 42142, 
-    9968, 8205, 0, 5131, 0, 9627, 78536, 78542, 78535, 0, 1944, 1248, 10148, 
-    0, 119990, 119991, 12701, 78376, 11308, 119995, 0, 119997, 119998, 65305, 
-    74263, 4031, 42794, 120003, 7075, 8154, 120006, 120007, 41817, 73934, 
-    42275, 120011, 120012, 78526, 120014, 120015, 6041, 0, 41899, 0, 8002, 0, 
-    4364, 0, 0, 64332, 0, 7813, 9064, 119986, 10124, 7526, 8601, 7281, 78455, 
-    7279, 12041, 1418, 10885, 12673, 0, 0, 9660, 0, 13012, 4571, 0, 0, 0, 
-    12078, 2970, 0, 10933, 0, 77870, 0, 0, 0, 41599, 0, 0, 0, 12950, 0, 3486, 
-    0, 0, 4239, 0, 0, 66511, 0, 2637, 64629, 8460, 127053, 8476, 0, 0, 0, 0, 
-    65673, 1019, 78495, 4148, 0, 12289, 0, 4316, 0, 13119, 0, 5412, 66243, 
-    9935, 0, 73864, 0, 41734, 8206, 74081, 9163, 3286, 9072, 5867, 13302, 
-    7622, 0, 41736, 0, 41731, 0, 7400, 5416, 68663, 118924, 10817, 0, 41539, 
-    0, 0, 73963, 41855, 41867, 65564, 11277, 65892, 11536, 10620, 0, 12210, 
-    66030, 73932, 5498, 73942, 41536, 0, 68204, 0, 3459, 8997, 0, 0, 0, 0, 0, 
-    0, 66377, 69781, 0, 0, 78511, 3161, 295, 120207, 0, 0, 0, 78742, 9016, 
-    43454, 63903, 63902, 43641, 0, 3971, 0, 73972, 2952, 78765, 11038, 10901, 
-    63900, 63899, 63898, 0, 667, 12332, 63887, 6086, 41722, 0, 5172, 0, 0, 
-    4159, 0, 0, 9815, 63884, 19934, 63882, 41198, 8555, 63878, 63877, 42460, 
-    6050, 42708, 63881, 63872, 0, 42421, 0, 41723, 63875, 63874, 11460, 7432, 
-    1913, 41913, 63852, 0, 0, 42348, 0, 6752, 446, 41911, 0, 63851, 63850, 
-    41910, 0, 63846, 2972, 12932, 7262, 0, 63849, 63848, 63847, 0, 6570, 
-    8302, 7259, 63842, 4178, 10746, 7250, 13214, 10041, 8105, 63892, 0, 
-    118983, 1105, 4180, 0, 12094, 9497, 0, 63891, 63890, 63889, 63888, 5538, 
-    9987, 0, 118932, 1678, 13274, 552, 120654, 44010, 10785, 0, 119170, 4557, 
-    74459, 9159, 10171, 13125, 63860, 5540, 63858, 63865, 281, 13242, 63862, 
-    74154, 0, 5536, 65568, 63857, 1388, 74169, 0, 1077, 0, 65099, 11531, 
-    5834, 0, 0, 0, 0, 42773, 0, 0, 0, 119220, 0, 3663, 0, 1112, 119122, 8686, 
-    0, 5334, 65081, 43249, 74778, 0, 11077, 0, 6509, 0, 5327, 0, 19907, 
-    63869, 3478, 7583, 7679, 2903, 0, 3001, 1158, 8745, 0, 73748, 63866, 0, 
-    1915, 4846, 0, 66371, 118984, 42105, 2990, 120128, 805, 69238, 120125, 
-    12070, 8760, 1117, 118987, 12212, 120123, 65174, 42357, 63835, 63834, 0, 
-    78240, 12225, 63838, 63837, 0, 0, 63833, 6042, 66360, 8083, 0, 0, 63821, 
-    63820, 63819, 63818, 0, 5227, 9047, 63822, 0, 6091, 0, 10691, 560, 5643, 
-    8226, 119578, 63812, 63811, 63810, 63809, 5542, 63815, 63814, 63813, 
-    6047, 1597, 120143, 780, 206, 77925, 4936, 65147, 8168, 63930, 2076, 
-    1093, 9882, 63934, 2082, 63932, 917554, 63929, 3546, 1605, 77934, 9806, 
-    43472, 77933, 8400, 11343, 2086, 0, 63926, 2984, 5968, 9287, 0, 4618, 
-    42209, 43431, 13169, 5290, 2089, 1695, 10743, 1088, 63825, 7268, 1084, 
-    1085, 63829, 1083, 10131, 7283, 0, 63970, 0, 1092, 4754, 7273, 5252, 
-    44016, 43627, 0, 0, 7408, 11809, 0, 0, 0, 2965, 7258, 8808, 0, 1089, 
-    4187, 63937, 42119, 42120, 0, 940, 5787, 10099, 63938, 0, 74494, 12463, 
-    2994, 0, 118827, 0, 9664, 77939, 77940, 67892, 77938, 74343, 0, 0, 660, 
-    10127, 666, 9022, 5532, 43667, 5533, 77941, 78507, 6118, 222, 979, 3884, 
-    0, 74151, 120445, 6502, 0, 127118, 0, 63951, 12465, 0, 0, 0, 63946, 1707, 
-    63924, 12461, 63950, 63897, 63948, 63947, 63945, 6038, 63943, 63942, 
-    64685, 63895, 65838, 0, 7776, 0, 0, 0, 120444, 78172, 801, 43165, 1690, 
-    63919, 63918, 63917, 13277, 43659, 12951, 120638, 9906, 2054, 2334, 
-    78515, 63916, 5483, 63914, 120610, 63911, 5484, 63909, 63908, 2539, 0, 
-    43980, 5485, 0, 42697, 9061, 5534, 10672, 4502, 0, 253, 0, 68208, 0, 
-    42854, 78393, 0, 11530, 0, 68668, 0, 0, 0, 10474, 43426, 13257, 42354, 0, 
-    0, 0, 195065, 0, 8413, 0, 0, 5693, 7272, 0, 13209, 64470, 65831, 78460, 
-    195063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66608, 3111, 41863, 8804, 66607, 0, 
-    7270, 0, 66606, 6628, 1076, 7433, 1436, 73844, 55226, 0, 63982, 7393, 
-    12807, 43413, 63906, 1598, 63904, 0, 0, 41729, 4423, 1307, 0, 10515, 
-    41589, 0, 0, 6218, 0, 1430, 0, 0, 120606, 78754, 5413, 7619, 3255, 3493, 
-    74032, 11549, 10735, 41743, 73937, 6801, 0, 4518, 10990, 65073, 5167, 
-    4481, 3771, 0, 2710, 0, 69243, 41724, 0, 43073, 41690, 12479, 0, 0, 0, 0, 
-    119659, 1628, 0, 0, 0, 65262, 6333, 10783, 42315, 0, 63855, 120683, 0, 0, 
-    5339, 74323, 0, 13004, 0, 4457, 0, 0, 0, 0, 5684, 8678, 10914, 0, 5689, 
-    65807, 0, 68464, 12633, 12870, 78521, 65183, 5688, 11926, 6033, 6310, 
-    5686, 0, 74251, 0, 120647, 0, 50, 10558, 9871, 0, 43655, 0, 0, 0, 66468, 
-    0, 13259, 4448, 0, 0, 0, 0, 67853, 0, 10640, 0, 1151, 0, 917607, 0, 
-    127079, 195050, 0, 0, 0, 0, 12501, 64604, 0, 11527, 118870, 8812, 0, 
-    11538, 8673, 12650, 11020, 0, 66467, 2105, 8087, 78163, 0, 9894, 0, 0, 0, 
-    4636, 55262, 78513, 4515, 2382, 0, 127055, 0, 120495, 0, 0, 12277, 
-    194627, 11995, 194626, 0, 12158, 0, 8741, 10197, 0, 0, 0, 6531, 0, 0, 
-    473, 43415, 0, 0, 1873, 1087, 0, 0, 0, 78527, 66439, 43218, 0, 194716, 
-    7237, 12504, 74282, 0, 0, 0, 9489, 0, 0, 4384, 74220, 195055, 2058, 
-    917561, 13295, 43191, 0, 0, 1154, 3857, 1205, 0, 0, 13100, 12958, 120706, 
-    74168, 0, 0, 4421, 10592, 0, 495, 0, 41712, 7983, 0, 120779, 0, 6347, 0, 
-    7654, 41710, 4196, 0, 437, 41709, 73772, 0, 0, 9465, 13290, 119180, 4997, 
-    64306, 0, 0, 4999, 194642, 0, 0, 4711, 120769, 0, 2739, 0, 8044, 74834, 
-    0, 41789, 0, 10809, 0, 0, 0, 1779, 6600, 6601, 41543, 5325, 642, 64187, 
-    13058, 120449, 12875, 0, 0, 13229, 0, 10575, 43399, 0, 0, 41791, 1104, 0, 
-    0, 10655, 0, 0, 0, 0, 1082, 195049, 8428, 6569, 0, 0, 0, 0, 6783, 0, 
-    12993, 8049, 41548, 44021, 6458, 0, 0, 4761, 63828, 4766, 64623, 1273, 
-    43407, 0, 118876, 195045, 6912, 1313, 6322, 10483, 0, 41545, 0, 0, 0, 0, 
-    0, 0, 78624, 3484, 74337, 0, 0, 8503, 5122, 41527, 0, 66320, 0, 0, 0, 0, 
-    41537, 0, 8303, 8282, 11817, 73857, 10003, 73859, 65904, 194663, 1686, 0, 
-    78406, 11467, 3664, 65921, 64299, 194664, 0, 0, 4324, 126, 42246, 119152, 
-    0, 74378, 65926, 7744, 194636, 74277, 74302, 78052, 0, 6966, 0, 8136, 0, 
-    65600, 1633, 0, 0, 4762, 1103, 0, 0, 4765, 0, 13078, 0, 4760, 63827, 
-    2050, 10871, 43199, 1102, 0, 42236, 0, 194667, 11546, 74794, 337, 0, 
-    42591, 8627, 12279, 1111, 0, 0, 4707, 68206, 10143, 7883, 127081, 7880, 
-    4522, 8645, 5704, 13010, 0, 8304, 0, 0, 119575, 0, 0, 66654, 0, 0, 0, 
-    13008, 0, 4385, 0, 13011, 0, 0, 119161, 13009, 160, 2677, 0, 0, 41793, 
-    65763, 74221, 120141, 41792, 42770, 0, 65762, 118829, 64573, 5709, 0, 
-    194638, 0, 0, 0, 1079, 3867, 5708, 0, 0, 0, 5706, 64768, 5705, 8791, 
-    4005, 0, 10237, 10991, 0, 43459, 9173, 917581, 917580, 13170, 65942, 
-    917577, 42605, 120765, 917570, 68647, 917572, 10058, 0, 74867, 194654, 
-    127078, 3339, 11448, 1106, 917591, 917590, 917593, 3340, 917587, 917586, 
-    917589, 917588, 120541, 10605, 1309, 63966, 120743, 1754, 127075, 13246, 
-    864, 0, 118926, 8972, 0, 7849, 120092, 0, 13240, 195068, 5192, 4338, 0, 
-    10948, 917601, 13199, 120169, 1236, 13208, 13261, 13189, 13188, 120164, 
-    0, 7440, 0, 120153, 9553, 1590, 63777, 63776, 13178, 63782, 63781, 63780, 
-    63779, 1583, 0, 13260, 4550, 0, 64205, 0, 0, 41522, 0, 0, 0, 0, 11354, 0, 
-    0, 42795, 0, 119195, 11394, 194646, 13236, 13272, 13194, 1334, 0, 4479, 
-    1178, 65586, 120663, 66681, 119193, 4601, 0, 0, 0, 0, 0, 194658, 0, 6809, 
-    63786, 6031, 0, 63791, 63790, 1145, 63788, 7910, 63785, 43153, 754, 
-    10192, 13105, 8183, 120741, 2037, 0, 0, 10747, 125, 0, 64890, 0, 0, 0, 
-    41719, 63758, 3523, 1074, 13258, 9536, 74077, 0, 4427, 74242, 63757, 
-    43145, 12217, 63754, 41532, 1349, 63750, 63749, 0, 0, 0, 63753, 63802, 
-    41084, 120622, 68133, 41930, 63805, 63804, 43632, 63801, 41082, 8140, 
-    63798, 6260, 0, 0, 119225, 63793, 11988, 3898, 0, 10201, 12238, 63795, 
-    42194, 10367, 12521, 10431, 42114, 41932, 1068, 0, 12523, 12945, 0, 
-    42203, 7950, 10804, 63771, 42787, 4386, 12224, 6973, 2793, 12475, 0, 0, 
-    63769, 9530, 0, 12232, 13135, 8596, 5681, 63762, 4595, 63760, 792, 0, 
-    64803, 0, 8742, 0, 11053, 0, 63744, 0, 0, 7588, 63748, 1693, 63746, 
-    43204, 5055, 68426, 917853, 1090, 120679, 0, 11665, 74133, 4558, 65685, 
-    9523, 0, 0, 78681, 11513, 0, 6157, 63775, 63774, 63773, 13191, 12170, 
-    3500, 3139, 0, 3170, 12485, 0, 10872, 78271, 13006, 64433, 0, 0, 941, 0, 
-    0, 0, 65541, 11063, 0, 8228, 0, 42065, 0, 0, 0, 0, 0, 7386, 0, 68358, 0, 
-    0, 43603, 0, 65397, 288, 0, 0, 0, 10025, 917916, 2918, 0, 65300, 119871, 
-    9883, 64726, 2790, 65395, 3793, 0, 0, 65393, 0, 74138, 0, 0, 0, 74139, 
-    120613, 65394, 11548, 5270, 0, 65396, 0, 65813, 13256, 1282, 120771, 0, 
-    0, 10888, 0, 65242, 0, 3330, 0, 0, 0, 0, 0, 74259, 3304, 42753, 0, 0, 0, 
-    1627, 0, 0, 0, 5371, 13116, 0, 1826, 118794, 0, 43094, 0, 43650, 0, 0, 
-    9035, 0, 0, 0, 0, 0, 68125, 0, 164, 0, 0, 0, 6958, 0, 43116, 0, 0, 13245, 
-    0, 0, 127376, 0, 73893, 0, 12666, 13175, 13207, 120414, 66014, 120428, 
-    7447, 5929, 0, 65509, 0, 7449, 11306, 0, 73920, 3180, 0, 63808, 9054, 
-    971, 13062, 0, 0, 65195, 10164, 0, 74428, 0, 78146, 0, 0, 0, 0, 10045, 
-    12882, 13275, 0, 11057, 0, 13276, 0, 41525, 78150, 7271, 11444, 0, 0, 0, 
-    12229, 41523, 0, 43411, 73751, 0, 64813, 0, 0, 10476, 3858, 0, 3932, 
-    64958, 0, 0, 73989, 68192, 0, 0, 369, 0, 41784, 0, 64163, 0, 0, 0, 65474, 
-    4796, 12292, 0, 65479, 0, 41781, 10486, 41480, 120511, 9899, 0, 0, 404, 
-    12821, 3741, 0, 5788, 8092, 68212, 41222, 1831, 66020, 0, 0, 4388, 0, 
-    746, 120784, 0, 0, 12018, 65294, 0, 0, 0, 0, 4422, 4708, 3799, 74292, 
-    119357, 0, 74430, 0, 11700, 4374, 0, 0, 1364, 0, 8038, 0, 917597, 12868, 
-    69814, 0, 6735, 73979, 13174, 73968, 13225, 0, 69808, 65835, 0, 2365, 
-    7841, 0, 42855, 118856, 42866, 0, 0, 0, 66438, 41785, 41171, 64172, 
-    13173, 4372, 119354, 0, 0, 0, 0, 0, 0, 12965, 384, 64512, 10404, 10340, 
-    119352, 1556, 5274, 13210, 0, 10017, 9733, 41787, 0, 126994, 41373, 
-    78039, 12303, 0, 13232, 13233, 349, 4863, 41371, 11656, 0, 120703, 
-    119883, 12861, 4398, 8543, 65618, 0, 1096, 0, 0, 42688, 12441, 12355, 
-    119348, 119347, 4318, 10452, 0, 8032, 13243, 13237, 12719, 0, 119101, 0, 
-    64884, 119872, 119345, 8597, 0, 0, 9864, 0, 120785, 119874, 0, 13195, 
-    41452, 64961, 7722, 0, 10459, 119878, 0, 119879, 66590, 0, 41533, 66337, 
-    0, 0, 0, 4965, 0, 917536, 73849, 0, 43638, 78537, 0, 6261, 119342, 43147, 
-    66570, 1957, 10420, 982, 2756, 13292, 13206, 0, 0, 2925, 73809, 13056, 
-    127559, 13212, 43238, 0, 13190, 13187, 0, 13198, 118793, 0, 5242, 119179, 
-    64476, 1694, 8216, 0, 6770, 43331, 0, 65620, 0, 43544, 0, 0, 41444, 
-    65621, 120325, 64799, 5246, 120326, 13185, 9709, 120323, 120322, 12314, 
-    65616, 5238, 119333, 0, 119337, 5236, 40979, 0, 74201, 8286, 0, 3936, 
-    119331, 11699, 41347, 127249, 13235, 8842, 41248, 0, 4379, 13239, 12692, 
-    7969, 127266, 7219, 127250, 0, 120509, 0, 66224, 734, 2979, 120303, 
-    65619, 9872, 957, 64921, 1846, 66631, 41477, 119256, 120310, 74511, 
-    41770, 1670, 6442, 120317, 42446, 5379, 120318, 41163, 74832, 120315, 
-    120314, 0, 0, 42841, 13267, 0, 0, 41775, 0, 0, 41773, 0, 10663, 0, 0, 0, 
-    6151, 12110, 42673, 65572, 119602, 65250, 13265, 13264, 64518, 0, 6100, 
-    0, 0, 5808, 65922, 0, 12967, 66041, 5612, 4583, 0, 0, 68097, 64575, 0, 
-    11965, 0, 119211, 0, 69789, 0, 0, 68102, 9698, 7814, 74476, 119651, 0, 0, 
-    41921, 118858, 9756, 6985, 119258, 0, 74219, 0, 0, 118997, 8012, 5674, 
-    12353, 0, 12361, 5677, 5588, 0, 41925, 0, 41920, 5673, 120534, 5676, 
-    41923, 12694, 118978, 5672, 1294, 0, 78059, 0, 42511, 1727, 0, 42436, 0, 
-    0, 0, 74222, 8718, 3550, 736, 10268, 4505, 10316, 74090, 5826, 55232, 
-    5813, 0, 120712, 5841, 5837, 55234, 0, 3105, 12829, 5838, 5796, 0, 
-    119592, 5793, 0, 5866, 5797, 41011, 5865, 120091, 7956, 598, 0, 64649, 
-    5806, 42398, 0, 9037, 5671, 120041, 0, 0, 0, 0, 0, 847, 0, 9529, 0, 
-    66657, 6980, 0, 120035, 78484, 0, 0, 120033, 78486, 0, 0, 120039, 42683, 
-    0, 0, 9624, 0, 0, 43190, 65463, 1554, 0, 42611, 42563, 0, 5651, 2929, 
-    6792, 43201, 0, 19963, 5698, 0, 0, 0, 0, 5644, 10292, 65546, 69821, 
-    68141, 8372, 0, 65116, 0, 120022, 0, 10388, 42799, 0, 41013, 10568, 0, 0, 
-    2869, 0, 41015, 194692, 2785, 4366, 0, 10954, 41802, 0, 42608, 78469, 
-    9884, 4759, 0, 0, 10266, 41359, 1170, 43365, 69810, 73908, 1609, 902, 0, 
-    63936, 0, 11661, 8122, 5818, 0, 0, 3861, 9540, 11028, 2554, 5158, 5714, 
-    127015, 0, 0, 807, 43079, 0, 78475, 976, 5511, 64553, 0, 42155, 0, 41356, 
-    74110, 118801, 0, 0, 8676, 0, 0, 11066, 451, 63941, 5798, 9349, 42018, 0, 
-    0, 0, 43609, 194703, 120553, 1440, 0, 194701, 120016, 74283, 11005, 0, 
-    66656, 66044, 0, 194698, 0, 0, 43393, 10094, 0, 11529, 10857, 120643, 
-    66436, 6546, 93, 8102, 0, 68405, 0, 0, 8171, 0, 119097, 127064, 917543, 
-    383, 10377, 41656, 0, 0, 0, 5187, 0, 127277, 11286, 68620, 64217, 0, 
-    5232, 0, 41009, 0, 41005, 0, 0, 0, 8292, 195074, 4980, 8860, 73947, 
-    10028, 66478, 7076, 13182, 194705, 0, 0, 10631, 66031, 7972, 0, 78785, 0, 
-    7900, 0, 11309, 78319, 4198, 42725, 0, 67656, 78819, 0, 0, 0, 12931, 0, 
-    42684, 74285, 2088, 0, 64366, 65156, 8814, 42238, 74771, 0, 0, 12836, 0, 
-    0, 74342, 8593, 0, 0, 68445, 13255, 0, 0, 7464, 0, 65865, 0, 194650, 0, 
-    0, 9342, 120464, 0, 64516, 0, 78792, 10129, 41007, 74375, 0, 40995, 
-    12209, 41012, 119136, 0, 0, 120633, 40992, 0, 0, 68653, 43558, 5522, 0, 
-    61, 0, 74105, 3633, 0, 65162, 41234, 12089, 78281, 9771, 0, 13251, 0, 0, 
-    6262, 2784, 42743, 0, 8126, 66483, 0, 0, 441, 42621, 0, 0, 41002, 40999, 
-    119623, 43266, 0, 0, 10890, 74481, 65834, 8324, 119103, 64417, 74817, 0, 
-    64737, 0, 0, 8930, 66678, 74249, 1193, 10056, 1800, 13253, 13252, 7829, 
-    0, 0, 7743, 0, 0, 77904, 0, 77905, 9034, 6039, 0, 10075, 0, 41018, 65683, 
-    10338, 66469, 0, 0, 0, 42815, 0, 41966, 0, 0, 0, 11792, 43064, 41025, 
-    911, 7539, 0, 0, 120339, 65159, 64390, 0, 0, 5520, 11662, 0, 65330, 
-    42812, 0, 0, 12326, 0, 0, 42808, 0, 9348, 64901, 0, 0, 0, 0, 0, 0, 
-    917584, 43702, 0, 5857, 65342, 0, 119120, 120079, 8644, 0, 0, 0, 74296, 
-    41909, 0, 120332, 2791, 0, 1891, 69824, 0, 41907, 66647, 0, 8761, 12942, 
-    5748, 0, 10773, 0, 0, 8796, 78149, 6412, 2061, 8520, 13146, 0, 63931, 0, 
-    65902, 2882, 0, 0, 12843, 4520, 120345, 0, 0, 0, 0, 73860, 0, 0, 64345, 
-    0, 0, 0, 194940, 0, 0, 43679, 917585, 65117, 194939, 0, 10427, 0, 3844, 
-    0, 9755, 1110, 6612, 12222, 0, 194934, 0, 0, 783, 194935, 0, 0, 0, 
-    194720, 65056, 3620, 0, 68378, 4556, 0, 0, 194933, 74250, 0, 67657, 
-    10510, 4382, 66482, 0, 0, 0, 9177, 8902, 0, 9839, 0, 12891, 0, 0, 63999, 
-    2016, 41917, 9788, 63928, 0, 1862, 65800, 9155, 66623, 9786, 65082, 
-    41919, 8579, 41914, 7981, 0, 0, 4508, 64883, 0, 0, 0, 0, 64592, 74276, 
-    120080, 6784, 78788, 68181, 0, 0, 0, 127534, 12147, 9024, 66378, 66472, 
-    0, 64289, 65289, 78151, 66658, 194929, 64509, 78152, 0, 0, 11051, 0, 0, 
-    11355, 65885, 0, 0, 41214, 0, 12299, 0, 7500, 4506, 7773, 0, 0, 9963, 
-    68649, 0, 4040, 0, 6167, 0, 63922, 6594, 0, 0, 0, 3624, 43036, 0, 6387, 
-    63990, 19947, 63988, 41955, 0, 63993, 10440, 9611, 0, 6803, 0, 7738, 
-    63986, 11446, 63984, 120331, 3435, 78164, 0, 119108, 7029, 64258, 41292, 
-    118898, 12748, 42742, 9517, 11518, 0, 78790, 0, 194777, 63956, 42458, 
-    63954, 63953, 63960, 9591, 4516, 10217, 68370, 11469, 0, 42306, 2723, 
-    118947, 0, 0, 0, 0, 0, 11397, 2880, 0, 0, 2872, 0, 0, 3498, 4378, 917539, 
-    4270, 0, 65551, 68205, 6633, 43387, 0, 5230, 0, 0, 0, 0, 0, 8161, 393, 
-    12013, 0, 0, 0, 415, 63964, 63963, 42345, 0, 5183, 1877, 42498, 0, 2927, 
-    0, 63961, 4472, 0, 0, 78159, 0, 917936, 42340, 4756, 0, 7081, 10730, 
-    7691, 10331, 63830, 119625, 194945, 42103, 8628, 9813, 0, 42453, 1604, 
-    9565, 10539, 0, 65764, 41415, 65767, 0, 8457, 42301, 11372, 64873, 11992, 
-    0, 0, 63980, 11801, 3622, 0, 64336, 12017, 10463, 63981, 4967, 64189, 
-    1966, 43628, 0, 0, 0, 0, 63971, 4347, 4416, 42098, 11009, 10694, 63973, 
-    402, 0, 13147, 0, 42100, 64646, 13228, 0, 41875, 3515, 74252, 11805, 0, 
-    11302, 6259, 43395, 0, 0, 194670, 0, 0, 0, 74425, 11299, 1561, 0, 0, 
-    64942, 0, 194733, 0, 194732, 0, 74301, 0, 11280, 0, 69784, 74060, 0, 0, 
-    119664, 5145, 12486, 65018, 66516, 5409, 0, 194669, 7402, 5399, 9685, 
-    74089, 7952, 5401, 0, 66616, 68421, 0, 0, 5405, 917555, 64866, 0, 0, 0, 
-    78784, 74248, 11330, 194723, 64690, 3254, 0, 0, 0, 42390, 43678, 194725, 
-    0, 65077, 0, 6388, 3355, 9508, 9867, 5723, 11520, 5611, 0, 3377, 0, 0, 0, 
-    0, 78228, 0, 0, 42691, 917886, 0, 74767, 0, 0, 1379, 246, 0, 0, 3788, 0, 
-    11041, 0, 66304, 0, 0, 8917, 42403, 301, 0, 0, 0, 0, 0, 0, 10656, 0, 
-    65214, 119242, 42567, 0, 13163, 0, 120831, 74597, 3182, 0, 0, 0, 65034, 
-    65889, 42169, 4755, 74244, 0, 11443, 0, 66319, 74598, 608, 600, 0, 1219, 
-    3934, 64206, 11483, 74510, 0, 74485, 42442, 65470, 0, 64202, 13160, 7759, 
-    42482, 485, 0, 0, 9828, 0, 0, 42280, 0, 9351, 7778, 64379, 7496, 42431, 
-    6916, 1208, 0, 119631, 11002, 42470, 0, 118946, 0, 0, 74041, 0, 0, 43539, 
-    5411, 42196, 0, 0, 0, 9150, 0, 42393, 13086, 1310, 194687, 9337, 12052, 
-    10643, 55271, 0, 194684, 2546, 194683, 213, 118852, 65611, 0, 0, 194756, 
-    74310, 6554, 0, 11914, 0, 0, 0, 0, 0, 0, 194681, 118826, 2713, 0, 9650, 
-    43330, 0, 194675, 1406, 0, 0, 0, 0, 68223, 4143, 194677, 0, 65748, 4141, 
-    9682, 65287, 1508, 194963, 8779, 10569, 8725, 13299, 66638, 65750, 42263, 
-    4145, 6380, 65751, 66613, 43994, 65738, 55250, 9185, 9550, 0, 43403, 0, 
-    0, 0, 65736, 41951, 64816, 65756, 0, 12955, 10596, 2888, 0, 0, 0, 9657, 
-    9019, 194766, 0, 2878, 5390, 0, 194961, 0, 68679, 0, 7501, 6328, 0, 
-    10429, 10365, 0, 0, 41946, 7503, 5235, 803, 68381, 0, 0, 8986, 0, 10632, 
-    11934, 11452, 1332, 0, 0, 0, 0, 118887, 1791, 5191, 9288, 64822, 2892, 0, 
-    43394, 555, 0, 0, 66646, 0, 119002, 13151, 74512, 7289, 74055, 0, 8854, 
-    64162, 5858, 41927, 10582, 0, 1784, 1361, 195047, 0, 7905, 0, 64868, 0, 
-    13158, 0, 7211, 0, 9371, 73973, 0, 6828, 1625, 0, 0, 1342, 68440, 64171, 
-    0, 10903, 0, 0, 0, 0, 0, 4482, 41606, 0, 0, 0, 0, 64381, 0, 0, 0, 42245, 
-    0, 41972, 0, 444, 0, 9127, 66687, 66619, 0, 78025, 0, 11349, 40991, 0, 0, 
-    119599, 120830, 0, 1197, 0, 1149, 194970, 0, 0, 40990, 0, 0, 3492, 0, 0, 
-    0, 0, 0, 12838, 0, 19948, 0, 3099, 0, 0, 41087, 0, 0, 0, 119059, 12036, 
-    0, 0, 0, 8152, 0, 64428, 12227, 0, 0, 12828, 127511, 0, 0, 120708, 0, 0, 
-    10386, 119574, 0, 0, 0, 0, 68154, 0, 1743, 0, 0, 0, 65186, 0, 0, 9606, 0, 
-    0, 0, 0, 0, 0, 0, 0, 194967, 0, 0, 3395, 9362, 10878, 0, 0, 78362, 64830, 
-    0, 0, 41091, 3426, 1344, 8870, 0, 0, 4735, 0, 6119, 12822, 42699, 0, 0, 
-    74818, 0, 0, 42637, 41080, 0, 12039, 10559, 0, 118892, 0, 9472, 0, 11929, 
-    0, 7170, 9596, 6130, 0, 43629, 11579, 194741, 0, 194740, 0, 0, 66699, 0, 
-    1004, 0, 194737, 43234, 66008, 12627, 0, 68414, 0, 43619, 43382, 11300, 
-    43304, 9686, 5890, 11776, 7558, 0, 65627, 0, 10718, 13154, 3461, 9139, 0, 
-    0, 0, 0, 65365, 73877, 65628, 78019, 0, 0, 41708, 12860, 41703, 12069, 
-    10838, 5403, 10352, 73917, 10061, 43237, 0, 5140, 209, 0, 41704, 41056, 
-    43078, 0, 0, 0, 10899, 65469, 0, 0, 0, 2410, 993, 0, 120589, 120689, 
-    78693, 0, 0, 7232, 0, 119253, 0, 0, 74462, 2066, 10489, 42166, 43463, 
-    10659, 3600, 0, 4224, 1336, 41518, 0, 0, 0, 0, 41139, 64820, 0, 12966, 
-    41134, 0, 0, 0, 0, 272, 4263, 8793, 0, 0, 41502, 0, 983, 12549, 0, 0, 
-    1190, 4109, 1335, 841, 5888, 41358, 64863, 9544, 43481, 0, 0, 0, 2099, 
-    5120, 2409, 7799, 0, 74424, 0, 0, 4731, 0, 66629, 0, 0, 1255, 4149, 9247, 
-    0, 9913, 0, 0, 64914, 917787, 65101, 0, 11694, 0, 11690, 5835, 0, 66625, 
-    10842, 41354, 42123, 43097, 11688, 66634, 1094, 194, 64692, 0, 8180, 0, 
-    0, 9972, 73865, 4519, 6114, 10898, 43072, 0, 0, 0, 0, 0, 10695, 0, 7540, 
-    0, 881, 7857, 6067, 65164, 0, 0, 0, 13311, 68403, 41857, 64321, 8359, 0, 
-    12689, 0, 194594, 0, 0, 0, 68183, 0, 0, 1287, 5436, 0, 0, 74142, 127013, 
-    74152, 119078, 6051, 10497, 0, 8985, 12109, 0, 0, 0, 0, 0, 3652, 10537, 
-    0, 1276, 120440, 6549, 279, 73745, 0, 0, 0, 1489, 0, 0, 0, 3899, 1007, 
-    42124, 0, 42122, 0, 0, 0, 11985, 1345, 78600, 0, 0, 8956, 43083, 119830, 
-    42138, 78610, 0, 12151, 78608, 78604, 78605, 6285, 78603, 78612, 78613, 
-    74194, 492, 8685, 0, 0, 0, 78622, 43712, 2582, 11470, 64538, 7444, 78615, 
-    78616, 41550, 0, 73837, 119823, 2527, 119824, 197, 2799, 0, 41944, 
-    120276, 9933, 0, 66515, 767, 5524, 7028, 0, 0, 119827, 119817, 119828, 
-    78633, 10896, 0, 1799, 120497, 6971, 74336, 0, 0, 65340, 118979, 41551, 
-    2434, 0, 0, 120579, 0, 4631, 0, 0, 6407, 0, 6338, 43214, 0, 7570, 0, 
-    3192, 0, 8414, 0, 0, 0, 0, 0, 9164, 66612, 0, 3171, 6623, 4961, 68396, 
-    886, 55216, 8654, 78832, 9993, 74390, 64603, 0, 69241, 9599, 78629, 
-    43084, 78627, 78628, 78625, 2399, 0, 8994, 10944, 41208, 0, 41168, 8178, 
-    0, 3367, 195008, 42510, 78641, 78636, 6804, 78634, 1947, 0, 0, 0, 42759, 
-    11068, 1705, 9331, 0, 74798, 9181, 65359, 0, 8017, 0, 65096, 66720, 0, 
-    43475, 0, 4909, 12126, 0, 120696, 4904, 0, 195012, 1365, 9253, 42757, 
-    43436, 7462, 0, 0, 0, 0, 119587, 64415, 0, 0, 5398, 0, 195014, 0, 0, 0, 
-    119015, 0, 0, 9476, 0, 0, 12763, 0, 3629, 0, 13005, 0, 3628, 0, 0, 0, 
-    3469, 42107, 42116, 917578, 64809, 2928, 4905, 9853, 851, 9040, 0, 64665, 
-    43086, 9114, 0, 42583, 9315, 4822, 4906, 3852, 2847, 119821, 3236, 11317, 
-    1251, 7777, 41852, 11410, 10964, 0, 43222, 12646, 120269, 10259, 9865, 
-    65821, 0, 6018, 119814, 0, 12276, 0, 68372, 0, 0, 119244, 0, 0, 10467, 0, 
-    2443, 10918, 78217, 119825, 1001, 9241, 1927, 0, 0, 73987, 0, 0, 0, 
-    118828, 127504, 65678, 12867, 0, 8260, 77945, 7519, 11505, 12274, 8904, 
-    518, 65857, 0, 0, 13204, 4387, 857, 0, 65369, 0, 119583, 43125, 120592, 
-    0, 0, 0, 0, 5136, 1968, 0, 195023, 1337, 64967, 1629, 0, 796, 66506, 0, 
-    74123, 12877, 0, 42314, 43388, 0, 74403, 6120, 478, 65151, 68128, 0, 
-    43082, 6016, 0, 42284, 0, 4276, 1206, 3619, 41638, 0, 3843, 12011, 8853, 
-    3361, 0, 490, 10715, 7578, 68384, 0, 65350, 10530, 12348, 8653, 74314, 
-    42435, 6154, 9551, 65354, 78522, 784, 42397, 334, 0, 42416, 65356, 65273, 
-    77987, 127265, 4442, 10364, 0, 778, 41626, 42455, 7989, 74063, 3227, 0, 
-    127275, 73983, 2915, 11502, 41022, 41702, 10309, 127035, 78320, 0, 6975, 
-    0, 5415, 12176, 0, 0, 3462, 65215, 42629, 78691, 73784, 0, 0, 9759, 0, 
-    78324, 127254, 8114, 78698, 78697, 78696, 78695, 8710, 42495, 118956, 0, 
-    4051, 10460, 43364, 118917, 1356, 12161, 42713, 0, 127268, 1619, 9703, 
-    43152, 42489, 42112, 0, 1875, 10808, 42109, 120284, 41860, 64862, 13305, 
-    64907, 5289, 13144, 0, 0, 5575, 9675, 0, 5940, 226, 2649, 6336, 0, 0, 
-    43236, 3382, 42449, 6498, 1658, 11936, 78232, 0, 11269, 10151, 73759, 
-    43100, 74449, 65508, 0, 0, 0, 8935, 917985, 0, 0, 0, 616, 74753, 65178, 
-    4684, 78701, 119653, 0, 0, 0, 6048, 74460, 42110, 73965, 10870, 8557, 
-    11054, 68664, 119049, 9681, 4475, 0, 41142, 2100, 0, 120731, 6035, 0, 
-    7651, 10296, 0, 0, 0, 917987, 0, 118966, 74144, 40997, 0, 10392, 10328, 
-    40998, 43462, 74488, 0, 9800, 8979, 0, 119131, 41000, 0, 119239, 6487, 
-    10977, 0, 10344, 0, 65299, 5394, 43246, 78243, 10220, 66505, 41200, 0, 
-    4425, 0, 0, 0, 43074, 73799, 0, 78147, 0, 12173, 78545, 0, 0, 65338, 0, 
-    0, 119582, 4474, 0, 43093, 0, 1587, 0, 127372, 64475, 0, 1369, 0, 78251, 
-    7927, 0, 4560, 0, 0, 0, 0, 64948, 4430, 74347, 42601, 4514, 66434, 0, 
-    8194, 65462, 10626, 10965, 0, 8893, 0, 12542, 0, 65341, 0, 65829, 7925, 
-    119822, 10475, 0, 0, 1352, 11069, 7707, 127560, 0, 65279, 127102, 68207, 
-    127100, 65605, 6040, 127097, 10071, 0, 9336, 0, 0, 8899, 7798, 64474, 
-    64259, 0, 65188, 7820, 43018, 0, 0, 7746, 1492, 78551, 10884, 77982, 0, 
-    5127, 11285, 42501, 5495, 4273, 43095, 41426, 10849, 5730, 2999, 6342, 
-    68636, 74304, 371, 64373, 6023, 169, 5497, 11708, 0, 0, 6323, 0, 8224, 0, 
-    8938, 6043, 12738, 0, 0, 5321, 0, 0, 0, 2589, 74332, 1689, 7802, 4683, 
-    74318, 42704, 120296, 11905, 0, 0, 0, 0, 74513, 6049, 0, 4027, 834, 
-    118962, 1803, 0, 1503, 0, 0, 0, 5731, 1381, 2387, 0, 0, 8289, 64525, 
-    65817, 2881, 43142, 0, 9601, 2879, 9668, 9766, 0, 5729, 917833, 74410, 
-    6036, 64881, 4026, 9361, 127091, 2887, 0, 3526, 6298, 0, 77897, 0, 78519, 
-    0, 8572, 6021, 77896, 0, 77895, 43155, 0, 0, 3146, 10959, 9483, 0, 77893, 
-    10981, 166, 917841, 8635, 0, 10623, 408, 119058, 127507, 13298, 0, 7426, 
-    41641, 12717, 0, 7607, 10639, 66713, 0, 0, 41643, 74134, 0, 8713, 41640, 
-    10221, 41645, 66712, 6645, 646, 66726, 66711, 42129, 0, 77901, 3472, 
-    8697, 0, 0, 0, 0, 0, 0, 5809, 1950, 119356, 0, 74572, 0, 42136, 0, 0, 0, 
-    0, 3247, 119854, 65017, 0, 68428, 66668, 0, 0, 10983, 0, 0, 0, 41567, 0, 
-    0, 0, 194624, 0, 0, 0, 8285, 0, 4509, 0, 66471, 12216, 0, 40988, 0, 0, 
-    41727, 0, 0, 2396, 0, 0, 74018, 917538, 64940, 0, 3886, 0, 42457, 119008, 
-    0, 996, 68123, 917571, 4249, 0, 917594, 11707, 8222, 0, 7939, 0, 917574, 
-    917582, 917592, 917569, 8534, 0, 40983, 0, 0, 0, 7201, 12561, 0, 42371, 
-    12558, 0, 0, 10052, 40982, 0, 0, 1488, 0, 0, 0, 917559, 0, 0, 1563, 0, 
-    9619, 0, 0, 0, 0, 0, 5803, 7797, 6070, 10006, 0, 2922, 6082, 0, 65009, 0, 
-    12567, 0, 0, 41412, 0, 0, 3607, 65863, 10046, 9612, 42153, 8218, 9485, 0, 
-    2032, 78354, 0, 0, 0, 0, 0, 43085, 6057, 508, 0, 0, 120265, 0, 0, 0, 0, 
-    638, 6083, 119072, 0, 0, 2305, 78348, 0, 0, 6056, 6659, 0, 0, 6085, 0, 0, 
-    3915, 41634, 0, 41639, 63912, 11941, 0, 4028, 1787, 42180, 43096, 0, 
-    3249, 1768, 0, 12328, 501, 127074, 10601, 0, 583, 0, 41977, 0, 66004, 
-    119350, 6505, 74010, 0, 13064, 55267, 120810, 6500, 5526, 65049, 0, 
-    73764, 0, 0, 12745, 9678, 0, 120587, 9869, 0, 1771, 0, 8936, 0, 0, 4208, 
-    78341, 119115, 78342, 0, 0, 74101, 0, 11762, 0, 0, 77997, 0, 66475, 0, 
-    5027, 0, 0, 0, 5069, 73862, 5028, 9897, 0, 73739, 5026, 0, 68639, 6331, 
-    0, 8931, 0, 1415, 8866, 41901, 74790, 78138, 119361, 0, 43106, 5029, 
-    65309, 1580, 3598, 68424, 41070, 77903, 0, 3440, 78215, 1562, 0, 127236, 
-    119358, 1716, 0, 10600, 0, 620, 41001, 6028, 0, 42892, 0, 74822, 5024, 
-    120829, 41003, 0, 5025, 0, 0, 0, 119328, 0, 65557, 0, 74541, 0, 11599, 0, 
-    11602, 6243, 11574, 11581, 11597, 11598, 6253, 6105, 11584, 74195, 11569, 
-    65275, 8906, 127096, 5755, 2636, 0, 10815, 11619, 78717, 41540, 7815, 
-    11616, 6979, 12080, 7721, 11604, 7869, 1592, 0, 42152, 78498, 41048, 0, 
-    829, 0, 0, 19950, 0, 0, 6616, 0, 118875, 10953, 391, 0, 69785, 482, 
-    42296, 11588, 0, 43606, 0, 68397, 66370, 0, 42335, 0, 0, 0, 7538, 5315, 
-    0, 42491, 0, 42061, 0, 4576, 0, 68417, 120241, 4277, 0, 4039, 64472, 
-    42338, 368, 42058, 3960, 11043, 11337, 78209, 917820, 63989, 3958, 12132, 
-    1849, 0, 9921, 42451, 4253, 41147, 42064, 11959, 42404, 41160, 0, 3618, 
-    78338, 0, 43300, 5156, 0, 0, 929, 6827, 42035, 42437, 1555, 0, 8691, 
-    66435, 0, 41662, 0, 0, 0, 0, 0, 4578, 64513, 41664, 0, 42578, 0, 41661, 
-    78715, 43305, 9356, 0, 0, 0, 1286, 10166, 0, 0, 64707, 0, 42476, 7730, 0, 
-    0, 42483, 0, 0, 42324, 42291, 10020, 43359, 0, 6641, 525, 41627, 0, 8763, 
-    0, 41628, 533, 11931, 65225, 8321, 42504, 42581, 0, 6915, 42310, 4377, 
-    8559, 0, 120234, 0, 13193, 64350, 11666, 8679, 41924, 1576, 7735, 0, 0, 
-    73840, 0, 11374, 78043, 10889, 43461, 7757, 42462, 120226, 10029, 66493, 
-    2718, 4168, 73842, 13308, 120112, 0, 1179, 4440, 0, 77948, 363, 11015, 
-    77947, 77944, 64296, 127090, 66692, 120826, 0, 66492, 6593, 64625, 41963, 
-    0, 119329, 0, 10013, 0, 0, 127095, 9492, 11782, 64382, 12833, 118986, 0, 
-    1297, 41630, 630, 127094, 0, 120774, 120570, 1043, 43652, 66223, 10090, 
-    0, 0, 313, 917563, 41881, 0, 42311, 7445, 0, 5750, 10759, 9419, 55222, 
-    9405, 11268, 0, 9398, 8526, 9399, 9422, 0, 66495, 0, 0, 127239, 41718, 
-    10707, 1603, 0, 119003, 0, 631, 77952, 77953, 13161, 65272, 0, 10546, 
-    74210, 78101, 11600, 77961, 2797, 73821, 42427, 306, 714, 3058, 42381, 
-    77962, 127080, 12351, 42395, 0, 11607, 0, 42282, 77971, 77967, 9157, 
-    73765, 66364, 42433, 77964, 7603, 12803, 180, 42141, 0, 120612, 66494, 
-    12674, 8244, 362, 0, 0, 8037, 917803, 11535, 0, 74845, 5185, 66696, 5521, 
-    10334, 2093, 77983, 10302, 0, 10104, 1027, 5181, 0, 0, 10523, 1446, 
-    42320, 41646, 991, 5189, 42472, 41647, 120105, 1722, 5581, 77979, 3405, 
-    0, 194644, 5523, 0, 42620, 0, 0, 9549, 0, 10549, 55282, 9661, 43682, 0, 
-    77910, 120026, 78708, 0, 77911, 0, 41991, 0, 0, 7630, 9846, 7684, 10350, 
-    0, 1174, 77981, 42733, 77978, 77980, 66485, 77977, 42277, 77974, 42456, 
-    65667, 0, 12330, 0, 0, 42417, 42383, 0, 41344, 6293, 0, 66252, 77984, 
-    74443, 0, 10209, 8313, 4195, 74435, 1316, 66690, 120032, 6332, 64894, 0, 
-    65871, 78060, 1736, 0, 3901, 12228, 120151, 65200, 3383, 10446, 78841, 
-    693, 9130, 314, 64149, 42420, 11949, 0, 120152, 11026, 0, 5332, 6940, 
-    64154, 12635, 127007, 42706, 1751, 273, 8165, 13166, 120763, 78840, 0, 
-    12824, 0, 4528, 5320, 6301, 43662, 6133, 9339, 9463, 42346, 10922, 64560, 
-    3757, 0, 0, 0, 65869, 73760, 2569, 0, 2326, 65740, 2565, 42459, 7596, 
-    7921, 0, 74095, 0, 41848, 2567, 66006, 0, 4044, 0, 0, 12233, 0, 1023, 
-    474, 0, 119818, 0, 0, 42487, 65556, 0, 0, 42295, 0, 0, 0, 0, 9835, 66499, 
-    0, 5417, 12275, 10895, 0, 274, 0, 1858, 0, 0, 55251, 10118, 3133, 0, 
-    73795, 0, 9610, 8068, 8197, 0, 699, 0, 41665, 5868, 0, 0, 42182, 7581, 
-    19940, 43668, 41667, 0, 0, 1923, 65583, 65802, 0, 64597, 43444, 119184, 
-    0, 0, 6464, 7036, 2996, 1937, 0, 0, 41835, 4047, 41842, 0, 64107, 0, 0, 
-    11017, 0, 0, 293, 77966, 0, 64791, 41827, 42466, 43422, 10579, 8560, 0, 
-    65413, 77963, 4803, 12964, 1739, 1941, 3900, 0, 1713, 77969, 0, 73957, 
-    11407, 42441, 41971, 6297, 120098, 64105, 0, 42481, 11716, 66473, 7179, 
-    42289, 0, 64103, 969, 0, 9352, 0, 6165, 64100, 0, 6632, 73861, 42402, 
-    74327, 7806, 0, 8914, 0, 0, 3183, 1435, 64876, 2969, 6046, 0, 6208, 
-    67849, 5746, 73749, 0, 64416, 42422, 0, 0, 7082, 73775, 338, 5059, 
-    194719, 0, 42328, 10767, 0, 8115, 0, 0, 0, 8227, 2073, 1218, 0, 0, 65848, 
-    0, 0, 0, 0, 126987, 4486, 0, 0, 0, 10925, 0, 0, 0, 0, 42309, 10257, 0, 
-    10273, 0, 10305, 42461, 0, 42349, 8832, 78051, 64127, 10644, 42662, 
-    78828, 42278, 74451, 126988, 917857, 7794, 0, 42429, 6377, 42316, 119026, 
-    3669, 3968, 42468, 0, 78544, 0, 65402, 119581, 0, 0, 64933, 0, 41960, 
-    6699, 0, 0, 0, 6823, 42391, 1588, 65400, 8409, 78223, 19967, 65398, 787, 
-    0, 917939, 0, 6115, 2078, 41654, 42480, 0, 0, 41655, 65401, 43975, 0, 0, 
-    0, 644, 65500, 41657, 10778, 3659, 9533, 184, 1553, 13107, 65484, 0, 
-    10502, 74457, 0, 0, 41554, 0, 8220, 917943, 41557, 0, 0, 11070, 119221, 
-    5157, 4020, 73858, 41555, 9514, 64818, 65103, 64641, 64303, 78131, 7520, 
-    0, 74377, 11029, 66651, 0, 0, 118930, 64527, 0, 7877, 73803, 0, 0, 
-    120096, 74602, 9955, 0, 4055, 42817, 0, 65212, 11715, 12190, 12319, 
-    78630, 0, 78631, 9502, 65427, 0, 65424, 12607, 0, 9734, 65425, 0, 0, 0, 
-    78835, 0, 10112, 10827, 0, 9866, 74527, 66675, 0, 8625, 64346, 11290, 
-    10477, 0, 8636, 0, 8315, 65444, 0, 0, 74595, 6152, 0, 0, 6629, 0, 120171, 
-    0, 74589, 43993, 0, 69790, 0, 0, 43690, 11046, 11490, 42730, 4485, 0, 0, 
-    64926, 0, 0, 0, 5869, 12437, 42728, 0, 7040, 3588, 0, 12825, 0, 0, 12725, 
-    0, 0, 78642, 223, 0, 69806, 120166, 42444, 0, 64499, 65245, 0, 1171, 0, 
-    120165, 0, 1805, 8772, 0, 0, 9930, 65247, 78619, 120111, 2338, 0, 118853, 
-    0, 42676, 0, 64800, 65236, 67644, 68126, 1213, 0, 64075, 797, 64074, 
-    8734, 4212, 0, 64387, 4115, 0, 5005, 64070, 64073, 10679, 0, 77954, 0, 
-    64276, 426, 0, 0, 8251, 10136, 65436, 0, 65088, 43302, 1224, 0, 65576, 
-    120158, 10701, 1764, 3101, 0, 65291, 120159, 0, 11373, 6378, 0, 120103, 
-    8663, 9312, 41644, 4539, 3787, 0, 9222, 0, 0, 4259, 9092, 74567, 41961, 
-    0, 12724, 66357, 42331, 64935, 0, 0, 1293, 7947, 12003, 0, 74593, 120308, 
-    2454, 42717, 3613, 0, 0, 0, 65888, 8816, 10978, 10840, 0, 10668, 0, 
-    43087, 12595, 120304, 0, 118806, 0, 1157, 64903, 8638, 0, 0, 0, 0, 
-    120319, 8235, 120316, 4405, 10086, 120247, 0, 69216, 0, 65430, 74013, 
-    6079, 6817, 10764, 0, 64291, 0, 998, 120312, 11062, 1317, 64327, 1558, 0, 
-    1991, 7882, 42254, 0, 41700, 530, 0, 10428, 119335, 12002, 119336, 5742, 
-    43076, 4692, 64630, 41823, 4007, 5004, 119334, 7896, 751, 6595, 6596, 0, 
-    66373, 0, 0, 64908, 0, 6311, 0, 12004, 119192, 12049, 43108, 0, 0, 41705, 
-    0, 6598, 0, 6599, 0, 0, 42148, 118825, 66027, 0, 6597, 9412, 8340, 11824, 
-    64745, 0, 0, 0, 1988, 5407, 67865, 2430, 41678, 0, 120243, 2336, 0, 0, 
-    78871, 120442, 0, 1921, 10947, 19927, 0, 65406, 0, 19913, 4284, 13217, 0, 
-    0, 12841, 9229, 10956, 42285, 41674, 19964, 41679, 65084, 3521, 0, 5774, 
-    8325, 0, 65403, 0, 1854, 10794, 0, 67660, 0, 0, 78359, 5280, 0, 4344, 
-    12905, 65433, 6076, 64793, 41610, 768, 12074, 442, 0, 68162, 64081, 
-    12934, 41682, 65432, 41693, 0, 6071, 65434, 0, 4804, 4053, 0, 0, 194653, 
-    41696, 467, 69823, 0, 69797, 0, 0, 8421, 0, 0, 43705, 502, 0, 65431, 
-    119056, 0, 12043, 1303, 316, 0, 2029, 65191, 119246, 11533, 64365, 43480, 
-    0, 4860, 194645, 0, 42488, 0, 9583, 0, 5546, 8019, 73856, 0, 0, 0, 5544, 
-    2355, 12150, 65725, 5543, 77989, 63751, 12137, 5548, 77985, 0, 65727, 
-    68388, 65726, 6077, 0, 65452, 0, 11301, 78013, 78008, 78010, 9874, 78007, 
-    0, 0, 3050, 65410, 0, 0, 78016, 78017, 42830, 43996, 66716, 0, 4691, 0, 
-    9345, 621, 0, 0, 0, 65411, 0, 41182, 73881, 65408, 73899, 78024, 9474, 
-    10545, 119118, 10887, 3786, 65409, 8894, 43179, 119611, 7923, 3716, 
-    119341, 9996, 8508, 0, 7012, 8195, 0, 9566, 0, 3722, 0, 41707, 8493, 545, 
-    9575, 41379, 10050, 12718, 0, 8859, 6820, 74345, 65110, 120740, 0, 0, 
-    9119, 2787, 7920, 118823, 4021, 2012, 7985, 0, 119663, 0, 0, 78021, 
-    78022, 410, 78020, 1802, 78018, 74107, 0, 41659, 41671, 1827, 0, 64396, 
-    10126, 12116, 41673, 120370, 11422, 78141, 120373, 3860, 120367, 68412, 
-    41345, 120362, 120363, 11748, 42158, 7941, 11076, 8749, 120361, 2104, 
-    64858, 361, 120357, 845, 0, 41560, 11970, 4562, 917920, 2926, 0, 4569, 
-    74130, 0, 43487, 194630, 611, 74129, 64871, 120379, 65629, 0, 0, 0, 0, 0, 
-    120543, 0, 0, 6291, 0, 78639, 41669, 7094, 917921, 0, 0, 74054, 0, 
-    195029, 0, 839, 0, 7695, 8769, 65246, 4829, 0, 4859, 64467, 0, 0, 118998, 
-    7206, 0, 6647, 43986, 0, 69766, 0, 64764, 4210, 0, 0, 804, 0, 0, 12298, 
-    0, 66653, 0, 64924, 10091, 73931, 9468, 74245, 0, 0, 74246, 0, 12839, 
-    64669, 0, 0, 1279, 1425, 6224, 119229, 11049, 0, 917549, 43239, 8482, 0, 
-    0, 5032, 77830, 11940, 67888, 664, 0, 5034, 0, 0, 127525, 42702, 73888, 
-    0, 13294, 67873, 64869, 6032, 0, 9115, 7430, 120377, 0, 120819, 68387, 
-    120168, 73913, 120170, 41161, 5518, 4174, 10993, 41162, 120160, 64528, 
-    1169, 434, 41437, 1905, 6034, 41164, 64744, 9528, 118867, 194668, 524, 0, 
-    74029, 788, 74027, 0, 0, 0, 1663, 10419, 74025, 42636, 0, 0, 0, 120656, 
-    0, 67876, 0, 0, 0, 67897, 74039, 0, 0, 11395, 0, 119107, 43612, 64344, 0, 
-    0, 10855, 5445, 9355, 0, 65198, 7391, 8989, 221, 65686, 0, 0, 8010, 7191, 
-    4962, 69772, 8855, 0, 0, 64469, 120426, 10555, 0, 43333, 0, 0, 120427, 
-    10451, 0, 67653, 7245, 12443, 74405, 9947, 120149, 78317, 3873, 8367, 0, 
-    120146, 43433, 43649, 11987, 0, 0, 11010, 12723, 74059, 74062, 6217, 
-    5896, 0, 7682, 74049, 1462, 10235, 0, 0, 0, 0, 0, 0, 42595, 0, 74402, 
-    118860, 0, 120419, 0, 74052, 0, 0, 120549, 119082, 64295, 120418, 0, 
-    64765, 73923, 120417, 120662, 120730, 0, 6216, 0, 10755, 9455, 0, 8124, 
-    127042, 9470, 6944, 0, 0, 0, 2828, 0, 531, 42638, 0, 0, 0, 43428, 8204, 
-    3614, 2827, 9696, 0, 0, 8728, 4354, 10904, 78562, 19936, 7833, 120691, 0, 
-    42599, 42597, 42709, 120409, 127044, 0, 8537, 0, 0, 0, 0, 0, 41199, 
-    10121, 2028, 0, 0, 0, 0, 3062, 0, 74447, 12608, 0, 66440, 7545, 9700, 
-    12580, 0, 120777, 120502, 41155, 0, 74071, 0, 0, 12713, 0, 0, 0, 78772, 
-    0, 1734, 0, 0, 0, 64594, 2456, 231, 0, 74167, 542, 0, 118786, 0, 0, 1230, 
-    0, 0, 3597, 4446, 10584, 74235, 0, 4037, 0, 8352, 0, 5687, 0, 64515, 0, 
-    0, 55265, 67846, 78434, 9704, 0, 0, 74284, 0, 0, 8660, 0, 0, 0, 78773, 
-    74482, 4483, 1709, 120617, 9909, 6080, 0, 0, 1746, 1315, 8667, 0, 0, 
-    13140, 65899, 10604, 0, 4480, 11266, 0, 1226, 6930, 0, 0, 6360, 10897, 
-    41230, 605, 0, 74785, 120356, 0, 0, 41500, 0, 311, 11453, 6221, 10608, 
-    64943, 74280, 10877, 118868, 64885, 74272, 0, 0, 0, 120736, 74312, 345, 
-    0, 74456, 64606, 9917, 0, 0, 5037, 0, 1776, 8422, 0, 118814, 41508, 
-    41201, 323, 43328, 0, 42698, 1295, 0, 4625, 0, 4630, 13117, 0, 0, 65123, 
-    11293, 2668, 11288, 0, 42640, 65666, 2519, 0, 65420, 0, 0, 4252, 5049, 
-    42659, 119011, 706, 7754, 10854, 8738, 0, 65419, 0, 0, 649, 65421, 0, 
-    66702, 0, 12670, 1013, 0, 64919, 705, 0, 65422, 0, 1183, 0, 7017, 42852, 
-    0, 8157, 9736, 64503, 65418, 0, 0, 74035, 0, 11913, 73874, 6696, 0, 8920, 
-    0, 0, 7962, 12211, 9837, 2051, 66227, 0, 4184, 0, 0, 10177, 73777, 1857, 
-    0, 4626, 8464, 8472, 0, 4629, 8499, 78321, 78322, 4624, 7818, 119173, 0, 
-    0, 7805, 0, 0, 6935, 0, 78325, 78326, 78323, 43327, 43989, 119046, 8492, 
-    8250, 8459, 0, 8497, 8496, 0, 0, 78336, 78339, 9543, 78335, 78332, 77832, 
-    65849, 77831, 0, 0, 12451, 0, 8684, 0, 6102, 0, 5298, 0, 5294, 0, 0, 0, 
-    195062, 9949, 119826, 43617, 119215, 0, 12073, 0, 0, 77863, 13108, 0, 
-    74397, 41468, 0, 0, 5292, 55272, 0, 1939, 5302, 3970, 0, 12455, 1793, 0, 
-    0, 0, 6643, 0, 65263, 0, 78330, 41293, 78328, 78329, 0, 13219, 9569, 0, 
-    74383, 0, 0, 0, 5500, 8813, 0, 0, 74566, 5322, 0, 78340, 43631, 5324, 
-    66443, 3784, 41614, 65269, 6230, 78349, 78345, 43324, 3360, 78344, 11523, 
-    0, 0, 9926, 7197, 0, 68429, 0, 41821, 1249, 78360, 78361, 78356, 78358, 
-    78353, 64899, 64763, 41149, 41807, 43162, 41815, 41150, 0, 10571, 10096, 
-    0, 0, 78074, 6947, 41152, 887, 9249, 6565, 78510, 41990, 78509, 41811, 
-    74466, 0, 6670, 77882, 0, 0, 43092, 43325, 0, 10168, 0, 9781, 194610, 
-    9190, 0, 9666, 8269, 65944, 74005, 13019, 11670, 0, 315, 12813, 0, 78432, 
-    78256, 78351, 78352, 0, 0, 0, 0, 1378, 9509, 0, 0, 74475, 3066, 0, 67847, 
-    0, 0, 0, 78365, 8787, 0, 194616, 41618, 194615, 78261, 194614, 0, 64652, 
-    0, 194612, 0, 78366, 42088, 0, 0, 7176, 0, 10137, 6121, 10995, 78259, 
-    74534, 8119, 64874, 917816, 0, 0, 0, 74525, 0, 0, 12930, 1394, 74514, 0, 
-    74515, 0, 118804, 2998, 9527, 120659, 65190, 12977, 42090, 119165, 0, 
-    119100, 41236, 0, 42005, 42003, 41237, 5848, 0, 0, 3670, 0, 194600, 0, 0, 
-    7890, 0, 11298, 43315, 0, 6229, 1593, 0, 0, 619, 4635, 65080, 0, 0, 4120, 
-    65337, 65336, 0, 11808, 119214, 74115, 9366, 42790, 42006, 0, 65327, 
-    65326, 65325, 10757, 1507, 42216, 65321, 65320, 65335, 65334, 65333, 
-    65332, 65331, 42059, 65329, 42689, 0, 9128, 118885, 42073, 6785, 64590, 
-    0, 4371, 7196, 65318, 2035, 65316, 4106, 65314, 65313, 42074, 0, 41228, 
-    0, 65609, 41241, 7903, 41239, 43533, 78459, 7189, 0, 0, 0, 12357, 42802, 
-    78450, 8487, 9131, 0, 4615, 12695, 0, 0, 12175, 0, 64535, 0, 7809, 0, 0, 
-    562, 12169, 6590, 69762, 66455, 64738, 3219, 68654, 0, 0, 1037, 0, 2025, 
-    0, 13098, 78442, 10637, 4568, 549, 1570, 0, 2835, 0, 10624, 43623, 11072, 
-    0, 0, 0, 12606, 78433, 2825, 0, 10825, 8079, 2821, 41046, 0, 0, 0, 
-    120593, 13071, 0, 452, 41049, 42840, 6346, 2831, 5461, 74596, 11465, 
-    5212, 0, 64703, 119191, 42308, 7181, 0, 41332, 0, 12333, 0, 1668, 0, 0, 
-    0, 1187, 0, 42628, 78575, 0, 0, 0, 3240, 0, 12194, 0, 11591, 41065, 5323, 
-    8166, 0, 0, 0, 74535, 1623, 65297, 0, 571, 0, 4918, 0, 5288, 127295, 
-    8916, 65048, 1909, 8864, 0, 0, 10736, 0, 11571, 7615, 0, 0, 4237, 0, 
-    1035, 65815, 0, 7881, 701, 65936, 3489, 0, 0, 120751, 11403, 0, 0, 0, 
-    3796, 6800, 0, 3994, 11421, 0, 0, 0, 0, 0, 0, 64857, 0, 2855, 0, 66308, 
-    41621, 68214, 0, 0, 10654, 0, 119226, 12164, 3246, 7906, 43972, 65847, 
-    7182, 0, 13024, 194822, 74270, 0, 0, 0, 0, 1496, 747, 0, 942, 2378, 
-    43136, 0, 8466, 0, 9320, 8001, 1232, 8139, 11617, 0, 0, 11409, 68373, 
-    6382, 0, 64634, 0, 0, 11612, 0, 67600, 2374, 0, 8475, 11609, 66313, 0, 0, 
-    5286, 119297, 0, 0, 64925, 0, 0, 118982, 194583, 7705, 11942, 11305, 
-    194581, 3309, 0, 0, 0, 0, 6802, 0, 41653, 1280, 1241, 7168, 12096, 0, 
-    66615, 42565, 41651, 0, 0, 0, 41650, 66507, 66470, 0, 12914, 41491, 
-    66010, 119552, 6078, 65100, 0, 1475, 0, 9938, 6084, 917546, 41064, 41062, 
-    0, 0, 3256, 0, 42076, 43252, 78823, 0, 8727, 0, 65875, 0, 0, 0, 10562, 
-    74215, 43065, 0, 0, 3248, 74297, 3261, 9015, 0, 0, 3635, 64337, 0, 0, 0, 
-    7195, 0, 2007, 64431, 0, 0, 0, 0, 635, 0, 0, 65613, 77909, 0, 73997, 0, 
-    0, 119218, 7984, 8600, 74434, 0, 4176, 0, 2034, 0, 120805, 65891, 127038, 
-    0, 318, 2038, 0, 78596, 0, 3649, 13149, 42145, 42798, 3634, 120291, 
-    118927, 67677, 120124, 7866, 0, 11402, 42146, 120134, 74238, 42664, 2849, 
-    127034, 0, 7938, 12960, 1761, 11812, 65379, 68386, 0, 1159, 0, 0, 0, 0, 
-    7178, 194632, 0, 41680, 0, 0, 11534, 1514, 11668, 67891, 9313, 7015, 0, 
-    67877, 0, 12989, 66474, 9368, 12848, 1624, 43270, 0, 194563, 10818, 
-    194562, 9953, 0, 78421, 1194, 3242, 9761, 9555, 8598, 120299, 6169, 
-    12871, 1551, 2798, 65176, 120298, 42752, 119025, 0, 67875, 120301, 3495, 
-    66648, 0, 0, 68364, 0, 4891, 0, 10641, 0, 73746, 0, 68352, 0, 73787, 0, 
-    194633, 7199, 64955, 0, 0, 0, 0, 0, 42685, 42679, 193, 0, 0, 0, 42667, 0, 
-    5271, 0, 119661, 118882, 1362, 13297, 0, 0, 0, 0, 73789, 0, 6658, 4426, 
-    0, 0, 0, 119123, 7276, 42163, 5220, 0, 0, 0, 2416, 3310, 42703, 0, 379, 
-    0, 0, 0, 0, 3223, 65492, 1284, 194771, 4549, 0, 0, 0, 0, 10807, 9558, 
-    194613, 0, 8515, 8688, 12866, 0, 3294, 0, 8529, 0, 43385, 7564, 0, 43329, 
-    0, 0, 73757, 66456, 42359, 0, 2031, 0, 7202, 0, 12676, 42729, 0, 3215, 0, 
-    7710, 1610, 73801, 0, 0, 65682, 0, 120537, 65924, 9974, 228, 66354, 1501, 
-    0, 64395, 5179, 7200, 6225, 0, 65794, 1725, 65533, 8196, 7476, 74399, 0, 
-    0, 0, 8502, 5762, 1967, 7483, 0, 0, 8104, 0, 7474, 0, 0, 0, 10414, 13001, 
-    8141, 0, 42537, 1557, 43594, 0, 6330, 6805, 8631, 2545, 120672, 0, 0, 
-    74190, 0, 0, 0, 42762, 0, 127017, 1650, 262, 1637, 0, 7901, 3238, 0, 
-    41861, 0, 0, 65158, 10860, 0, 43658, 7527, 0, 43319, 6419, 0, 45, 0, 0, 
-    0, 0, 119810, 7194, 5291, 0, 43666, 13129, 0, 9084, 0, 8737, 0, 12881, 0, 
-    12906, 9639, 7912, 2620, 0, 0, 0, 0, 179, 65896, 0, 64756, 2853, 0, 
-    118813, 0, 118996, 119009, 2850, 8084, 0, 73850, 2801, 119837, 42069, 
-    119839, 74754, 119841, 42072, 119843, 119842, 10398, 0, 0, 0, 0, 8245, 
-    68401, 3158, 119853, 4389, 43656, 923, 119857, 119856, 292, 13002, 
-    119845, 119844, 3221, 1763, 119849, 4612, 119851, 119850, 7253, 127110, 
-    68391, 0, 10782, 3637, 12996, 43542, 0, 64578, 0, 3228, 73869, 8783, 0, 
-    119614, 2731, 0, 0, 78585, 4102, 7696, 73878, 0, 0, 78586, 43316, 4177, 
-    11283, 9089, 0, 73996, 0, 64500, 43674, 0, 0, 1856, 0, 0, 6379, 0, 0, 0, 
-    3208, 12975, 0, 0, 0, 0, 74072, 55269, 0, 0, 0, 2033, 78577, 78576, 
-    195026, 55254, 7740, 0, 0, 0, 73964, 0, 0, 67612, 65674, 0, 0, 41689, 0, 
-    74006, 64909, 6646, 11790, 74019, 0, 0, 0, 8561, 4573, 0, 5326, 0, 
-    120605, 7230, 8257, 0, 8778, 41688, 0, 65776, 2071, 8314, 6459, 0, 7628, 
-    65092, 73903, 66721, 11342, 0, 0, 0, 0, 127001, 0, 11810, 13164, 10723, 
-    967, 0, 0, 11946, 0, 3257, 0, 12307, 1845, 0, 43526, 0, 0, 1886, 42342, 
-    10089, 870, 7648, 3499, 8609, 7652, 876, 871, 877, 0, 878, 42015, 879, 
-    43692, 4563, 0, 0, 7591, 65887, 867, 9520, 872, 0, 868, 873, 7642, 0, 
-    869, 874, 7644, 0, 875, 790, 0, 0, 0, 0, 66182, 0, 5429, 0, 66180, 0, 
-    66181, 68452, 0, 0, 42067, 0, 5433, 10657, 7911, 194622, 1547, 66176, 
-    42012, 120576, 5425, 4977, 9999, 5317, 5423, 4611, 0, 67637, 0, 9679, 
-    74122, 0, 0, 0, 0, 4418, 66184, 4628, 4245, 119648, 0, 0, 1851, 0, 0, 
-    11908, 0, 9360, 118897, 0, 42776, 66187, 12837, 8829, 7711, 0, 0, 119973, 
-    43318, 0, 8809, 119974, 0, 0, 120604, 0, 0, 0, 0, 0, 0, 7427, 0, 4588, 
-    43680, 0, 74484, 0, 2433, 0, 119622, 3352, 74363, 0, 0, 793, 74404, 0, 
-    305, 567, 67662, 842, 0, 8208, 0, 41695, 1647, 118877, 0, 7837, 917625, 
-    818, 5337, 917622, 917621, 41376, 119978, 917618, 120594, 74086, 917615, 
-    917614, 917613, 10973, 66359, 1372, 917609, 917608, 4969, 1254, 917605, 
-    917604, 917603, 917602, 65228, 78221, 0, 0, 2840, 0, 119982, 0, 0, 3245, 
-    9068, 68194, 64725, 0, 0, 12991, 0, 2651, 0, 0, 917611, 127026, 0, 0, 0, 
-    43648, 120812, 0, 43322, 0, 0, 0, 64372, 0, 3226, 655, 752, 7457, 7456, 
-    7452, 3285, 0, 0, 119988, 65610, 0, 0, 0, 671, 250, 7434, 618, 668, 610, 
-    42800, 7431, 1152, 42801, 640, 120666, 7448, 7439, 628, 3905, 73810, 0, 
-    0, 64749, 67850, 2107, 0, 0, 4605, 194873, 0, 43372, 65945, 0, 0, 119590, 
-    0, 0, 0, 987, 6927, 11572, 42261, 11464, 3365, 9971, 0, 0, 0, 0, 0, 0, 0, 
-    11334, 43326, 12609, 11519, 11503, 5530, 5210, 0, 4627, 0, 5208, 0, 0, 
-    10332, 5218, 7976, 9156, 0, 3244, 5529, 0, 73894, 0, 5432, 64965, 5527, 
-    74033, 10516, 7790, 5528, 0, 42140, 120281, 0, 0, 43545, 9887, 0, 4000, 
-    7429, 7428, 665, 7424, 3206, 120278, 7884, 0, 0, 0, 0, 211, 2509, 0, 
-    120573, 68672, 3220, 42235, 0, 10690, 8951, 5214, 42474, 8118, 0, 7048, 
-    4590, 127258, 5852, 0, 0, 127259, 1708, 0, 0, 2623, 11943, 0, 69226, 0, 
-    4698, 66509, 1066, 119921, 4701, 0, 120285, 74225, 119114, 8267, 0, 0, 0, 
-    7516, 0, 2625, 0, 8034, 74309, 0, 3631, 10955, 7850, 120293, 8416, 0, 0, 
-    0, 43384, 12660, 0, 0, 0, 74850, 41069, 0, 0, 12099, 4310, 10032, 6252, 
-    713, 7990, 0, 3990, 0, 0, 66368, 5017, 64956, 7071, 0, 119144, 1030, 
-    118800, 0, 9513, 41059, 9357, 0, 1773, 0, 120350, 0, 6339, 7745, 9844, 0, 
-    64650, 94, 1880, 74766, 0, 8908, 0, 0, 65913, 78470, 10752, 13003, 0, 0, 
-    41307, 8732, 120338, 0, 1757, 6964, 4696, 0, 0, 64785, 7394, 3641, 5419, 
-    0, 0, 0, 0, 120344, 43988, 0, 8610, 43062, 7592, 856, 74299, 936, 13289, 
-    127521, 43171, 1459, 0, 65243, 78638, 19953, 0, 1504, 0, 0, 12913, 74206, 
-    7529, 0, 0, 0, 120782, 4113, 0, 2372, 336, 0, 7509, 12152, 0, 682, 66458, 
-    41505, 0, 64743, 10593, 1703, 0, 0, 8033, 0, 0, 9810, 127269, 0, 12970, 
-    0, 42351, 10109, 0, 0, 194693, 0, 119247, 0, 0, 74291, 1965, 7069, 43312, 
-    0, 73887, 0, 2087, 64370, 6314, 41714, 8501, 0, 0, 74239, 41317, 0, 2091, 
-    0, 2090, 0, 9353, 77887, 2077, 77886, 0, 10498, 2083, 77888, 0, 0, 
-    119236, 634, 0, 0, 0, 69779, 4165, 8746, 0, 9654, 12856, 6924, 0, 7066, 
-    0, 0, 0, 41037, 42692, 7786, 12959, 41039, 0, 0, 680, 6274, 0, 1181, 
-    7056, 3174, 0, 0, 0, 65665, 0, 0, 6920, 0, 0, 0, 118965, 0, 64644, 
-    126981, 0, 0, 41028, 0, 6231, 2613, 65302, 40989, 0, 194696, 0, 42760, 0, 
-    0, 0, 40987, 4667, 0, 0, 8828, 0, 0, 1246, 4746, 0, 0, 11021, 4749, 0, 0, 
-    921, 4744, 0, 12702, 242, 0, 1566, 8217, 0, 64653, 78386, 0, 74036, 
-    74505, 43274, 5313, 951, 0, 0, 0, 7604, 0, 4009, 0, 0, 120562, 0, 0, 
-    64860, 119138, 119887, 0, 194702, 4048, 0, 0, 120596, 1646, 77890, 64534, 
-    73995, 0, 0, 119890, 2579, 119905, 3177, 11357, 9099, 4107, 3441, 119894, 
-    2975, 74442, 9822, 0, 55220, 10084, 73943, 118840, 0, 917562, 0, 3399, 
-    9851, 0, 11909, 9059, 0, 7687, 0, 6789, 0, 0, 0, 0, 0, 0, 1777, 9151, 
-    1137, 69767, 749, 42366, 0, 5385, 0, 0, 0, 0, 5989, 0, 0, 0, 0, 41685, 
-    69223, 0, 9769, 41684, 0, 519, 0, 11740, 5766, 0, 0, 2600, 8848, 120138, 
-    41297, 0, 3666, 74473, 41300, 74468, 65160, 0, 74542, 69771, 74479, 0, 
-    6558, 0, 0, 69765, 120750, 252, 0, 41302, 0, 0, 0, 69763, 0, 11729, 8719, 
-    9060, 0, 120139, 10761, 0, 0, 0, 118792, 11734, 0, 11730, 0, 9593, 5757, 
-    2403, 64808, 55275, 0, 11728, 65894, 0, 0, 7764, 0, 11094, 120825, 0, 0, 
-    4282, 8298, 0, 0, 0, 0, 0, 0, 0, 127509, 63854, 8456, 0, 74783, 65670, 0, 
-    78250, 0, 7774, 10607, 9792, 0, 0, 0, 0, 120764, 0, 10019, 74762, 0, 
-    3458, 4365, 0, 0, 3647, 0, 2602, 0, 0, 194707, 41135, 0, 0, 0, 64631, 
-    172, 4971, 41219, 41137, 1889, 7238, 6545, 0, 0, 7597, 10528, 0, 0, 3732, 
-    73910, 194588, 5344, 0, 43366, 43363, 9062, 119252, 0, 0, 0, 64479, 9232, 
-    0, 0, 0, 194712, 10900, 41531, 1263, 3720, 12048, 0, 64292, 41524, 7227, 
-    119635, 6099, 41534, 0, 0, 0, 299, 0, 8525, 0, 3524, 917565, 8831, 0, 0, 
-    3075, 67867, 0, 0, 66362, 0, 74758, 0, 0, 5845, 0, 0, 0, 2581, 8200, 
-    65114, 68460, 0, 43283, 5551, 0, 120735, 0, 6340, 118855, 0, 78134, 8680, 
-    7204, 0, 2588, 2914, 7011, 55281, 0, 2471, 0, 2883, 2749, 119563, 73774, 
-    10913, 0, 0, 8666, 675, 42493, 0, 43571, 0, 6219, 0, 9980, 41232, 10928, 
-    0, 41153, 41229, 118967, 0, 3738, 0, 0, 12711, 3181, 66212, 74289, 68472, 
-    42857, 8262, 0, 0, 0, 0, 42347, 12092, 9615, 7234, 74047, 0, 0, 64674, 0, 
-    0, 73846, 0, 12722, 0, 922, 43983, 74507, 0, 74461, 3218, 120471, 74290, 
-    120469, 64562, 120475, 8569, 11404, 11932, 73728, 3214, 120461, 120468, 
-    12128, 3207, 65486, 78729, 1901, 78727, 0, 120460, 7425, 3205, 0, 78737, 
-    78736, 78735, 43383, 78733, 65459, 2606, 78730, 73897, 0, 11496, 1173, 0, 
-    41272, 0, 0, 0, 0, 120737, 0, 0, 0, 378, 2610, 0, 65079, 0, 65695, 0, 37, 
-    7068, 0, 120480, 120479, 3209, 120477, 0, 10638, 9768, 120481, 0, 0, 0, 
-    0, 0, 0, 65510, 0, 0, 5233, 0, 64792, 0, 0, 0, 0, 7060, 9847, 120144, 
-    1685, 595, 0, 73971, 1292, 8940, 7380, 11088, 0, 10004, 126997, 0, 6541, 
-    0, 0, 0, 3243, 9014, 5606, 0, 538, 64620, 5602, 8467, 74391, 6547, 0, 
-    8203, 78488, 0, 8458, 65211, 8495, 119904, 0, 917552, 779, 78314, 64367, 
-    2465, 0, 8193, 55279, 9730, 9280, 0, 7065, 74155, 4346, 0, 73798, 504, 0, 
-    120715, 8982, 0, 0, 0, 782, 0, 10883, 0, 194852, 732, 3737, 127253, 1548, 
-    68650, 0, 1832, 5604, 5735, 41141, 119020, 4376, 0, 11787, 3745, 0, 0, 
-    42888, 65712, 0, 3869, 11937, 5725, 0, 1783, 68648, 5728, 0, 0, 0, 11918, 
-    66567, 5724, 0, 5727, 0, 0, 0, 764, 0, 0, 43531, 0, 9033, 0, 42532, 6223, 
-    11042, 120749, 11423, 0, 0, 0, 43465, 0, 0, 6559, 64557, 0, 0, 120648, 
-    43019, 43477, 10238, 0, 0, 43377, 120675, 0, 1478, 9783, 11825, 2607, 
-    64740, 0, 7739, 74543, 0, 0, 0, 6132, 0, 63765, 0, 0, 41144, 0, 0, 43537, 
-    6761, 10093, 4369, 917791, 0, 0, 8820, 3947, 0, 0, 11515, 526, 0, 41295, 
-    194603, 917785, 194932, 0, 7688, 917786, 7686, 8288, 11815, 0, 0, 0, 
-    1543, 3713, 41221, 12423, 42281, 917788, 74024, 12293, 0, 64357, 11794, 
-    42082, 0, 1737, 8987, 42081, 0, 7205, 0, 9335, 12850, 119870, 6553, 7055, 
-    0, 8277, 0, 0, 5475, 74795, 6780, 0, 0, 12990, 1160, 42084, 119650, 
-    41217, 119660, 10018, 360, 0, 0, 68176, 5863, 3137, 0, 4147, 0, 41216, 
-    7844, 2616, 119190, 68461, 65234, 0, 13076, 3135, 0, 78143, 119139, 3142, 
-    194948, 0, 10819, 119580, 10183, 0, 2608, 1470, 73967, 0, 6227, 0, 0, 
-    74775, 0, 6163, 0, 0, 0, 0, 0, 8603, 0, 119866, 3306, 10876, 43392, 
-    119573, 0, 5751, 0, 6222, 0, 0, 12086, 7403, 1600, 64309, 64939, 0, 
-    64783, 0, 11310, 0, 8882, 0, 0, 2570, 7021, 0, 0, 43110, 0, 1234, 6540, 
-    6974, 0, 0, 0, 5002, 0, 41286, 0, 127019, 0, 43585, 0, 6551, 0, 0, 0, 
-    41289, 0, 0, 0, 8977, 602, 120814, 0, 0, 0, 0, 0, 41279, 0, 0, 0, 11081, 
-    43615, 0, 0, 0, 0, 12727, 0, 0, 78397, 9475, 0, 65105, 0, 9633, 10886, 
-    43592, 7831, 0, 0, 0, 73915, 8076, 43048, 8290, 8291, 43051, 0, 0, 2596, 
-    43584, 0, 13113, 0, 0, 2393, 7058, 9087, 74067, 68673, 41574, 78337, 0, 
-    74058, 6376, 0, 0, 0, 0, 9854, 0, 64696, 0, 0, 0, 6994, 0, 1720, 0, 0, 0, 
-    6529, 7063, 0, 3751, 9120, 0, 0, 1798, 709, 0, 1354, 1876, 13152, 6557, 
-    12430, 8137, 0, 0, 0, 0, 245, 0, 11456, 41233, 7070, 0, 0, 6136, 0, 
-    65677, 8682, 41235, 0, 42045, 9804, 0, 432, 3595, 0, 65437, 0, 74455, 
-    42399, 0, 0, 0, 0, 119658, 0, 0, 0, 77894, 8797, 0, 9052, 64888, 0, 2356, 
-    95, 74784, 10580, 0, 42286, 0, 64640, 0, 119104, 0, 0, 0, 10063, 12652, 
-    12199, 127030, 0, 2566, 11971, 0, 0, 1065, 0, 0, 43400, 2576, 0, 0, 0, 
-    43604, 0, 0, 74082, 514, 74502, 0, 2921, 43215, 64493, 5772, 12968, 0, 
-    194944, 74580, 43398, 2580, 0, 41341, 41223, 6564, 1463, 41342, 0, 5293, 
-    0, 0, 3733, 11346, 0, 12054, 0, 74098, 42827, 0, 13091, 0, 0, 0, 917915, 
-    0, 127025, 0, 74821, 0, 0, 119042, 0, 0, 13090, 66643, 0, 1270, 1132, 
-    42360, 0, 74096, 66655, 42569, 0, 0, 64761, 0, 41021, 8510, 42432, 0, 0, 
-    0, 0, 64496, 74109, 0, 9915, 0, 0, 7061, 41336, 3854, 0, 13141, 68413, 
-    43401, 42319, 13082, 0, 7067, 68221, 0, 0, 0, 0, 0, 0, 9029, 43543, 0, 
-    2353, 6308, 0, 74792, 2611, 119186, 0, 0, 0, 43664, 0, 66627, 0, 4484, 
-    8509, 118976, 78116, 65233, 0, 41224, 41017, 0, 3747, 10522, 0, 0, 1691, 
-    41226, 0, 12107, 44002, 10905, 65010, 0, 697, 66018, 9284, 4244, 0, 0, 0, 
-    13121, 120036, 0, 12010, 0, 0, 0, 0, 0, 0, 65816, 68111, 0, 0, 65668, 0, 
-    6618, 118784, 66365, 0, 42234, 12648, 0, 0, 0, 5785, 41309, 9764, 41316, 
-    65877, 7383, 13230, 41299, 0, 0, 68365, 0, 0, 0, 0, 13122, 0, 191, 74119, 
-    8585, 8000, 64411, 120652, 42889, 64850, 41072, 41578, 0, 41577, 0, 
-    10002, 0, 6533, 73802, 41570, 0, 683, 396, 41580, 68146, 0, 12901, 43058, 
-    0, 343, 0, 42680, 41360, 78154, 0, 4743, 0, 0, 74040, 74108, 8743, 1724, 
-    1433, 119322, 0, 3739, 6263, 0, 0, 3964, 6592, 0, 0, 66040, 0, 42568, 0, 
-    0, 1778, 3956, 0, 42070, 6563, 43075, 9018, 0, 0, 12067, 41312, 0, 5547, 
-    74531, 0, 0, 8175, 0, 284, 8108, 934, 0, 74001, 173, 66460, 7174, 917917, 
-    118822, 1750, 0, 4394, 68368, 1807, 0, 0, 0, 5889, 0, 7180, 0, 119145, 0, 
-    0, 42471, 6982, 1721, 44022, 7891, 42243, 42160, 2583, 4512, 119360, 
-    65230, 0, 0, 0, 3855, 0, 0, 0, 0, 74295, 0, 0, 119140, 3975, 0, 74087, 0, 
-    12672, 3798, 2703, 0, 0, 2109, 9774, 1275, 0, 0, 41095, 3962, 0, 7873, 
-    41101, 3954, 6457, 4513, 0, 0, 73994, 73992, 1468, 0, 0, 41851, 0, 41846, 
-    0, 55238, 7633, 41849, 68385, 4320, 3224, 0, 0, 0, 42531, 0, 1510, 0, 
-    8256, 0, 11393, 0, 8879, 0, 0, 8770, 0, 0, 78377, 1910, 8671, 78374, 
-    4283, 0, 127117, 68361, 78318, 2654, 7893, 195007, 0, 0, 0, 65106, 42761, 
-    12857, 4581, 8411, 78372, 78371, 78370, 78369, 78368, 0, 0, 0, 1733, 
-    4392, 2568, 10786, 0, 0, 8184, 41486, 0, 7396, 0, 0, 69788, 0, 7185, 
-    7965, 0, 0, 0, 0, 41350, 9129, 0, 0, 0, 0, 0, 0, 10481, 0, 0, 7171, 0, 
-    340, 0, 0, 0, 0, 0, 0, 0, 6764, 0, 0, 0, 0, 0, 65203, 11392, 119098, 
-    119359, 0, 3210, 0, 0, 0, 0, 0, 0, 917619, 0, 0, 10043, 0, 1186, 41571, 
-    6999, 617, 9464, 0, 3675, 5207, 65062, 5213, 194769, 2617, 41348, 41568, 
-    0, 3253, 120535, 0, 8630, 0, 0, 5596, 5545, 7288, 2586, 64887, 0, 5217, 
-    0, 0, 0, 0, 64293, 68098, 2635, 0, 0, 0, 0, 0, 7835, 0, 0, 194988, 0, 
-    64558, 127122, 0, 127121, 0, 0, 0, 5784, 0, 0, 0, 0, 4011, 917616, 68101, 
-    0, 7864, 4254, 65095, 0, 5600, 3903, 127083, 10447, 5598, 1207, 120521, 
-    66689, 3501, 42582, 43600, 194780, 0, 1124, 5597, 0, 0, 9321, 0, 0, 0, 0, 
-    1719, 68356, 68354, 9671, 1125, 4399, 0, 917610, 0, 7631, 5488, 65223, 
-    120532, 0, 5491, 0, 8937, 43044, 2604, 74187, 5490, 43046, 5489, 7212, 
-    11768, 43043, 6300, 0, 194789, 0, 4390, 454, 41397, 0, 9875, 7593, 
-    194792, 0, 118913, 7207, 0, 65901, 2394, 2575, 0, 3746, 11016, 65752, 
-    120037, 0, 43423, 0, 11989, 0, 0, 0, 0, 0, 8249, 0, 0, 78531, 6640, 
-    74806, 2598, 513, 0, 6586, 8656, 0, 127002, 65008, 0, 194784, 0, 194795, 
-    0, 0, 68475, 0, 0, 0, 78637, 12647, 0, 194796, 0, 1036, 0, 0, 1723, 0, 0, 
-    0, 41579, 2444, 0, 10705, 73876, 0, 74486, 0, 740, 194985, 194978, 
-    194984, 0, 4238, 11071, 9459, 68437, 78140, 78139, 0, 8121, 10438, 74487, 
-    42574, 13285, 55263, 11907, 195000, 5690, 194999, 0, 0, 43181, 13095, 0, 
-    0, 64498, 0, 9506, 6978, 194993, 77992, 0, 0, 194992, 0, 0, 1122, 317, 0, 
-    0, 0, 0, 1920, 0, 10173, 827, 0, 0, 78378, 120126, 5223, 1304, 0, 119564, 
-    5226, 12602, 0, 0, 9329, 7758, 9239, 41173, 5224, 5487, 1222, 5692, 
-    41725, 69229, 9674, 5695, 41711, 64627, 19909, 0, 74604, 5691, 287, 866, 
-    233, 0, 0, 42816, 0, 65140, 74797, 0, 8830, 6568, 42300, 10524, 41175, 0, 
-    0, 0, 5296, 0, 42492, 43402, 0, 3302, 0, 0, 6516, 6515, 6514, 6513, 6512, 
-    0, 7856, 8690, 0, 0, 12122, 119628, 43976, 0, 1785, 0, 68622, 65153, 
-    194810, 5138, 0, 0, 0, 0, 4540, 41181, 0, 6200, 0, 5134, 0, 322, 4643, 
-    5132, 0, 6389, 0, 5143, 0, 8790, 0, 0, 194802, 0, 8869, 120601, 0, 42060, 
-    0, 0, 0, 0, 10270, 10286, 10318, 10382, 43529, 66477, 0, 0, 74170, 0, 
-    3234, 0, 0, 74376, 43139, 118815, 127084, 120627, 8767, 0, 74489, 9695, 
-    120746, 5201, 0, 6215, 12714, 6214, 13101, 0, 0, 65268, 0, 0, 0, 11027, 
-    0, 10059, 10511, 42075, 9767, 789, 1749, 78890, 127071, 0, 320, 0, 8647, 
-    0, 3049, 0, 6471, 42071, 43156, 9925, 127356, 127355, 0, 4960, 5549, 
-    127359, 0, 8485, 4671, 5418, 0, 3351, 127006, 0, 10610, 5414, 3064, 6212, 
-    4286, 5421, 0, 9554, 0, 0, 0, 6653, 0, 0, 64510, 6213, 12885, 0, 119045, 
-    64720, 0, 120759, 73741, 12603, 78654, 11430, 4566, 7843, 9317, 3801, 
-    10342, 10406, 0, 119259, 42576, 0, 5200, 0, 917948, 0, 9183, 0, 74458, 
-    73825, 395, 5482, 5198, 8786, 10390, 74202, 5196, 43224, 6113, 42009, 
-    5205, 0, 43307, 0, 118973, 0, 12134, 0, 0, 118843, 9126, 435, 0, 12014, 
-    12893, 8093, 9079, 3203, 192, 65109, 3385, 0, 64430, 5383, 10294, 10326, 
-    0, 5738, 0, 3336, 78355, 5361, 3623, 41159, 0, 68112, 7872, 8581, 0, 
-    1260, 3149, 5359, 0, 0, 7914, 5357, 0, 0, 2624, 5364, 0, 11431, 120030, 
-    9101, 11058, 78288, 0, 78293, 42271, 78289, 65737, 120793, 0, 65566, 
-    6717, 10619, 43360, 78385, 78384, 78383, 78382, 78381, 78380, 78379, 
-    9319, 7097, 119055, 77906, 3232, 73824, 74581, 120632, 0, 0, 41889, 0, 0, 
-    1161, 41895, 74103, 9701, 8622, 0, 0, 73819, 120588, 5012, 77912, 41362, 
-    0, 78296, 11921, 0, 11769, 0, 68609, 41364, 0, 74228, 41352, 41361, 0, 
-    41366, 0, 3356, 0, 917, 68422, 119915, 119923, 8199, 78389, 119917, 677, 
-    119916, 0, 119932, 0, 0, 0, 0, 3349, 74125, 7022, 8927, 4739, 0, 5802, 0, 
-    8615, 0, 0, 491, 0, 0, 0, 65837, 0, 8426, 11092, 9891, 0, 42497, 0, 7586, 
-    42305, 10852, 0, 0, 4606, 68448, 9095, 7741, 12684, 41885, 1046, 0, 0, 0, 
-    5815, 5171, 65539, 0, 6932, 78315, 42394, 41878, 74849, 120621, 0, 5169, 
-    11935, 0, 0, 3175, 120822, 1537, 120804, 5176, 8905, 4136, 4871, 78287, 
-    0, 9833, 0, 0, 1128, 65920, 0, 9711, 7057, 9408, 9409, 9410, 9411, 3662, 
-    9413, 3378, 9415, 9416, 9417, 9418, 6320, 9420, 9421, 5897, 9423, 5165, 
-    5126, 41385, 0, 41389, 917938, 8955, 3374, 9400, 9401, 9402, 9403, 9404, 
-    3507, 9406, 7629, 0, 19925, 42669, 68463, 183, 43985, 2631, 0, 10627, 
-    41130, 78260, 3996, 0, 78771, 0, 119313, 119307, 78768, 6580, 4332, 
-    64825, 66329, 10726, 66686, 41125, 5899, 41365, 917918, 12085, 0, 574, 
-    917922, 77825, 73828, 5448, 41058, 5446, 73900, 41322, 42211, 5442, 4190, 
-    77834, 77835, 5451, 77833, 3616, 77828, 77837, 77838, 7708, 77836, 10859, 
-    65867, 10345, 10409, 4191, 0, 77844, 73800, 42181, 77843, 77839, 2060, 0, 
-    78311, 11788, 65587, 68129, 10415, 74102, 0, 205, 0, 10351, 119076, 0, 
-    9862, 6588, 43257, 64697, 73998, 41355, 5505, 119154, 5503, 8021, 0, 
-    119150, 9819, 41357, 8011, 42885, 5507, 12044, 0, 0, 10026, 5472, 65108, 
-    1191, 13106, 5470, 10329, 5476, 8991, 66322, 69778, 78267, 42874, 8550, 
-    42876, 5592, 2919, 0, 2675, 5595, 78411, 0, 4367, 0, 0, 5478, 5904, 5594, 
-    0, 74150, 7291, 5590, 77849, 13067, 118909, 120372, 0, 9731, 0, 64633, 
-    77857, 77854, 77855, 77852, 77853, 77850, 10750, 43714, 77858, 74545, 0, 
-    0, 12887, 10551, 194564, 77866, 77867, 77864, 77865, 9929, 5199, 9936, 
-    1120, 42387, 0, 1444, 9486, 7554, 65839, 55252, 0, 1442, 0, 5894, 0, 0, 
-    0, 0, 74313, 0, 13162, 0, 3334, 0, 118803, 77881, 66022, 0, 0, 1651, 0, 
-    8861, 0, 0, 1142, 0, 8271, 0, 0, 0, 12903, 0, 4002, 43626, 10442, 10676, 
-    3344, 0, 0, 12920, 194560, 0, 0, 66642, 1277, 0, 7871, 0, 0, 78853, 0, 
-    78854, 120360, 0, 11784, 0, 78012, 4700, 66366, 78858, 120359, 11012, 0, 
-    78856, 120358, 77879, 4973, 8784, 77877, 74804, 77874, 77869, 77871, 
-    42440, 0, 43118, 0, 42364, 6774, 6773, 0, 120369, 10346, 10410, 78859, 
-    9243, 2464, 0, 6108, 3372, 0, 6247, 43117, 74526, 0, 74166, 0, 120355, 0, 
-    0, 0, 0, 0, 0, 0, 74217, 3354, 0, 4192, 9289, 118999, 41191, 3876, 0, 0, 
-    120660, 43696, 43380, 0, 0, 0, 0, 11603, 0, 0, 6589, 0, 194679, 0, 0, 0, 
-    0, 0, 42572, 0, 10630, 74827, 1963, 118889, 0, 11654, 0, 7550, 10686, 
-    5903, 0, 78009, 41329, 9662, 917937, 64698, 3366, 10399, 0, 0, 11013, 0, 
-    917933, 0, 78621, 194672, 6925, 0, 0, 917929, 0, 11568, 0, 917931, 64579, 
-    917930, 7852, 0, 0, 6754, 6312, 0, 64672, 65296, 0, 118957, 0, 416, 
-    12296, 68457, 73834, 68177, 11050, 10984, 0, 0, 0, 0, 0, 0, 9532, 66355, 
-    0, 0, 917925, 64343, 195032, 0, 195031, 0, 0, 195057, 11445, 0, 195028, 
-    195056, 195027, 10185, 1021, 0, 9507, 10210, 74544, 8023, 1200, 12243, 
-    78001, 5282, 78003, 12540, 11545, 0, 120493, 3343, 4424, 11047, 1885, 
-    43268, 3896, 78626, 66497, 2947, 392, 7894, 4391, 68139, 0, 13059, 74816, 
-    77998, 3381, 7942, 0, 69219, 0, 64757, 0, 3913, 0, 0, 78235, 7044, 1265, 
-    0, 6309, 7045, 7175, 7047, 78239, 11791, 0, 0, 8221, 78307, 41864, 0, 0, 
-    0, 0, 167, 0, 78301, 0, 74211, 41897, 68477, 0, 917583, 0, 0, 2493, 0, 
-    118811, 0, 0, 64354, 0, 8777, 0, 406, 8884, 2385, 0, 0, 0, 917573, 43030, 
-    42027, 12114, 0, 917579, 64936, 0, 0, 120629, 10561, 0, 8365, 0, 0, 
-    65841, 120787, 11601, 0, 74121, 0, 917575, 7834, 74159, 0, 0, 10298, 
-    6624, 4908, 917596, 1639, 0, 0, 74157, 6327, 6724, 0, 0, 0, 0, 4817, 
-    78446, 194759, 0, 7043, 9600, 11022, 0, 0, 0, 0, 0, 0, 7548, 64794, 
-    42050, 12291, 55289, 194761, 12343, 657, 195054, 42705, 4461, 1134, 1838, 
-    78438, 2057, 0, 4468, 0, 0, 0, 4456, 5206, 10720, 0, 42523, 127520, 0, 0, 
-    917595, 65550, 260, 4816, 67658, 10687, 0, 4821, 4466, 0, 195043, 4818, 
-    0, 41403, 119977, 0, 0, 41406, 43273, 74160, 119983, 73939, 119985, 
-    119984, 119979, 41404, 1165, 119980, 4451, 13087, 0, 11284, 119987, 
-    73855, 65155, 43014, 5439, 9363, 127558, 3375, 0, 5900, 0, 7889, 2722, 
-    42262, 0, 0, 0, 0, 0, 0, 0, 11401, 0, 0, 68459, 0, 0, 0, 0, 65438, 0, 
-    7280, 0, 0, 0, 4868, 119967, 119966, 0, 0, 0, 43161, 0, 119964, 0, 5182, 
-    0, 120542, 0, 0, 4226, 120798, 12135, 5732, 4464, 0, 0, 977, 4458, 0, 0, 
-    64770, 74838, 0, 344, 0, 194790, 1395, 64279, 0, 0, 0, 786, 0, 43174, 
-    64340, 0, 0, 0, 43026, 7612, 10132, 64413, 0, 0, 0, 0, 0, 0, 68444, 0, 
-    120734, 0, 119160, 10204, 0, 0, 0, 0, 1399, 0, 65217, 0, 8852, 0, 241, 0, 
-    4907, 0, 0, 7932, 9727, 0, 74255, 8748, 0, 0, 0, 0, 42780, 0, 0, 0, 4217, 
-    0, 8650, 0, 0, 0, 0, 118872, 43099, 3965, 119119, 6719, 0, 13300, 78439, 
-    0, 43057, 66588, 118991, 0, 0, 73815, 4420, 0, 6410, 7760, 0, 0, 0, 0, 0, 
-    7294, 0, 0, 0, 9066, 0, 11993, 43188, 2626, 7762, 0, 0, 0, 0, 42825, 
-    41854, 5304, 0, 78516, 6919, 8619, 119655, 10038, 66454, 9592, 42851, 
-    126993, 1542, 0, 0, 0, 0, 0, 74311, 78497, 0, 10181, 0, 43624, 0, 7779, 
-    0, 10195, 9479, 6029, 0, 0, 9689, 0, 0, 8993, 66358, 0, 42378, 3368, 606, 
-    0, 7697, 69237, 69787, 2030, 0, 6027, 8370, 4322, 0, 65207, 0, 0, 0, 0, 
-    0, 2735, 42831, 77935, 127120, 74866, 8881, 119047, 0, 0, 73946, 0, 0, 0, 
-    68140, 0, 9576, 0, 3347, 4160, 5154, 55288, 3794, 66564, 8530, 127063, 
-    7709, 41112, 0, 66560, 42041, 4572, 12876, 66561, 0, 6758, 0, 1615, 5855, 
-    809, 0, 0, 0, 0, 5799, 0, 0, 0, 7260, 0, 43031, 64425, 65128, 127061, 
-    64386, 65257, 0, 68616, 120607, 9347, 0, 6532, 0, 0, 0, 0, 65828, 0, 283, 
-    68665, 78813, 532, 78663, 0, 0, 120609, 0, 3370, 0, 11361, 5443, 78778, 
-    8153, 73767, 0, 10741, 0, 0, 0, 0, 65495, 64706, 0, 43344, 0, 78870, 
-    9466, 78866, 9824, 0, 0, 0, 0, 915, 43425, 0, 0, 0, 0, 0, 43264, 0, 0, 0, 
-    0, 78864, 6730, 78862, 68161, 64550, 5186, 12890, 0, 0, 12108, 0, 65124, 
-    43127, 66043, 0, 6326, 43107, 77826, 0, 42562, 0, 0, 0, 0, 11485, 6103, 
-    127123, 0, 11718, 0, 12889, 0, 0, 0, 0, 0, 55245, 0, 1630, 0, 65483, 0, 
-    12565, 0, 65476, 120013, 0, 119554, 9283, 7700, 917537, 9690, 65499, 0, 
-    64593, 512, 3376, 68210, 0, 0, 77892, 632, 12940, 77891, 42529, 78587, 0, 
-    5957, 0, 8926, 0, 0, 0, 10745, 10174, 7379, 64581, 5386, 120686, 11713, 
-    10633, 120531, 5056, 0, 0, 0, 120773, 0, 9812, 0, 4460, 0, 0, 0, 0, 0, 0, 
-    0, 64278, 0, 43466, 0, 0, 64389, 2953, 73879, 1801, 12835, 119029, 0, 
-    73823, 0, 66375, 2085, 702, 42579, 77884, 77885, 13074, 77883, 0, 0, 0, 
-    12106, 0, 74207, 1755, 10482, 12863, 77898, 1163, 2951, 9522, 74079, 
-    78266, 120674, 0, 3384, 69227, 10702, 830, 77902, 77899, 77900, 8451, 0, 
-    0, 0, 120762, 0, 0, 0, 0, 2908, 0, 43386, 64902, 4243, 0, 12239, 0, 0, 
-    4441, 0, 0, 73940, 64352, 127513, 0, 411, 0, 0, 0, 4056, 118992, 41890, 
-    0, 2730, 41604, 0, 5428, 194743, 3364, 42265, 0, 0, 118816, 194742, 9684, 
-    216, 0, 1401, 0, 44012, 0, 0, 0, 9158, 77842, 120664, 5768, 0, 0, 0, 484, 
-    0, 0, 0, 65895, 0, 0, 3338, 73935, 572, 7041, 2736, 67605, 0, 0, 2794, 
-    8807, 64491, 77847, 5438, 5222, 5381, 43114, 0, 5193, 5125, 5456, 5509, 
-    77846, 194747, 9534, 0, 0, 0, 3430, 0, 0, 0, 0, 981, 0, 4330, 73929, 
-    120536, 1824, 10908, 0, 7034, 41683, 64617, 0, 73754, 3957, 64358, 64547, 
-    0, 674, 63991, 0, 2946, 5354, 5251, 5328, 5307, 3759, 11411, 8364, 5123, 
-    0, 5281, 5469, 5121, 119245, 0, 0, 5130, 0, 0, 77990, 0, 120726, 1221, 
-    2733, 11746, 77991, 5216, 0, 0, 0, 0, 3468, 7033, 9230, 5939, 0, 0, 0, 
-    120677, 68400, 7278, 10321, 10289, 64613, 10385, 41706, 0, 0, 0, 0, 
-    11739, 0, 41981, 0, 5938, 0, 0, 12448, 7576, 10401, 10337, 73852, 0, 
-    13057, 0, 126976, 0, 10009, 0, 64304, 0, 12165, 0, 0, 9885, 0, 8077, 0, 
-    0, 0, 0, 0, 0, 0, 4220, 10725, 10433, 0, 68395, 4987, 64519, 0, 0, 0, 0, 
-    0, 10970, 11733, 0, 120792, 0, 19944, 0, 9009, 8551, 0, 11468, 64636, 
-    7575, 0, 2724, 0, 0, 12313, 119949, 515, 119947, 42791, 63987, 78286, 
-    119943, 119940, 119941, 119938, 9775, 4046, 4589, 4521, 68629, 9141, 0, 
-    78850, 2741, 64399, 6197, 1370, 0, 0, 0, 0, 0, 0, 6184, 8606, 3303, 
-    41372, 11786, 9473, 66203, 66177, 0, 11593, 43007, 4478, 66178, 0, 0, 
-    2744, 0, 4477, 118964, 814, 42066, 66183, 66204, 66194, 119961, 66198, 
-    41880, 66188, 66197, 78148, 11955, 66190, 66191, 41111, 66189, 73788, 
-    7788, 4847, 0, 0, 0, 0, 0, 1581, 6535, 78161, 12954, 430, 78160, 55259, 
-    78158, 194938, 5278, 4945, 42883, 4950, 0, 68625, 0, 7269, 0, 5964, 
-    12908, 0, 0, 74764, 74477, 119146, 194936, 4949, 0, 443, 0, 4944, 5467, 
-    119603, 0, 65137, 6044, 65392, 0, 4213, 0, 41303, 0, 194931, 0, 41306, 
-    73984, 2698, 127531, 0, 12072, 3193, 0, 41304, 824, 0, 12091, 78893, 
-    78894, 119816, 4673, 64804, 4678, 119820, 119819, 65059, 0, 6739, 0, 
-    5481, 3490, 1199, 119811, 8356, 119829, 119832, 4677, 12688, 3102, 0, 
-    4672, 78173, 78175, 5531, 68367, 42575, 78170, 78166, 4674, 4548, 44005, 
-    0, 68658, 119946, 8025, 68630, 127024, 1855, 0, 68669, 0, 119942, 127554, 
-    0, 0, 119652, 2745, 11797, 0, 0, 68643, 4654, 0, 0, 68638, 73993, 10525, 
-    4649, 65209, 0, 0, 4648, 43080, 0, 0, 0, 6246, 64950, 7828, 4650, 6777, 
-    6776, 6775, 4653, 7822, 78005, 0, 43187, 8669, 0, 6821, 65093, 0, 78881, 
-    2716, 0, 0, 0, 0, 68369, 0, 11060, 8547, 2711, 42165, 78027, 78026, 7992, 
-    0, 0, 4662, 78033, 78032, 9149, 9146, 599, 2081, 78031, 78030, 194962, 
-    4656, 10130, 68450, 7811, 40994, 194965, 6414, 5967, 4658, 3725, 5713, 
-    5814, 4661, 42434, 0, 0, 0, 64904, 9026, 10833, 74864, 7547, 4867, 0, 
-    10008, 10222, 3054, 194956, 9744, 78860, 7605, 4622, 119656, 0, 0, 0, 0, 
-    0, 9045, 78888, 4225, 19926, 78887, 12880, 65307, 4617, 78883, 0, 41732, 
-    4616, 10518, 10423, 10359, 0, 5958, 0, 0, 4215, 9789, 917941, 4321, 4621, 
-    0, 41313, 522, 5368, 0, 65803, 0, 5366, 12201, 5372, 0, 0, 0, 7720, 7390, 
-    2696, 0, 0, 4638, 0, 1790, 78242, 5965, 64363, 66569, 68646, 194968, 
-    5376, 1835, 5335, 194966, 0, 4633, 0, 68119, 1180, 4632, 0, 5387, 5333, 
-    0, 0, 42094, 5331, 4634, 11928, 0, 5338, 4637, 0, 5971, 42414, 0, 1268, 
-    65097, 42361, 0, 0, 73853, 1427, 0, 0, 5970, 3431, 0, 10358, 10422, 4758, 
-    0, 1608, 2738, 0, 10455, 4753, 74026, 11344, 4222, 6240, 5231, 74384, 0, 
-    68377, 6248, 0, 0, 0, 42318, 0, 5229, 4757, 0, 0, 2728, 4752, 64563, 
-    65235, 5234, 0, 0, 0, 10713, 0, 0, 2622, 7460, 0, 0, 0, 8954, 74760, 
-    65189, 2632, 0, 10108, 1011, 5574, 1853, 2709, 65139, 5577, 0, 0, 118871, 
-    68641, 8965, 7635, 42177, 5316, 0, 5314, 6451, 5572, 0, 5312, 0, 5525, 
-    5330, 5319, 0, 0, 194907, 44003, 0, 0, 0, 120498, 0, 195009, 0, 74022, 0, 
-    64609, 0, 120634, 0, 5721, 0, 5519, 8632, 66465, 11267, 73961, 0, 5720, 
-    0, 1692, 4219, 4610, 8696, 4305, 0, 4609, 43478, 4614, 541, 0, 5287, 
-    5309, 5285, 68389, 5961, 4647, 56, 4216, 10577, 41381, 601, 4613, 0, 0, 
-    0, 4608, 64260, 41124, 5190, 67628, 0, 68145, 7086, 0, 119243, 67620, 0, 
-    2734, 11074, 0, 67627, 43593, 0, 67625, 5960, 0, 8992, 65293, 0, 1782, 
-    67622, 68114, 119939, 0, 68180, 5501, 119952, 42508, 7442, 43665, 359, 
-    41253, 68392, 6239, 119956, 41256, 0, 68134, 0, 74209, 0, 9346, 118904, 
-    41254, 0, 43291, 3767, 5737, 0, 4865, 0, 5740, 917997, 5736, 4368, 0, 
-    7193, 68137, 0, 5739, 41024, 4866, 0, 73904, 0, 4869, 120563, 0, 4223, 0, 
-    6650, 0, 0, 0, 0, 4870, 0, 68661, 6716, 78176, 68667, 68382, 68676, 0, 
-    10122, 4864, 66568, 4144, 7937, 0, 6245, 68652, 2732, 42734, 745, 0, 
-    195097, 0, 4777, 7821, 0, 68631, 42775, 0, 194954, 0, 3097, 0, 5966, 0, 
-    4778, 0, 10863, 0, 4781, 0, 64407, 0, 0, 8577, 0, 68196, 43285, 10216, 
-    4782, 0, 0, 120757, 68618, 12325, 43056, 8717, 0, 0, 4776, 0, 11492, 
-    8700, 0, 13176, 68363, 10426, 0, 917599, 10362, 0, 1715, 4849, 8242, 
-    9561, 73922, 43278, 42635, 0, 0, 5963, 917926, 0, 0, 4850, 0, 1607, 466, 
-    4853, 118995, 4854, 0, 5164, 0, 1350, 5124, 64420, 1993, 5362, 8471, 
-    2708, 0, 12445, 3785, 234, 3199, 0, 41268, 4848, 2530, 917909, 2068, 
-    1964, 0, 73762, 10458, 0, 8576, 78543, 0, 2704, 4794, 0, 68211, 8322, 
-    4797, 5753, 0, 2694, 4792, 0, 2439, 65104, 69804, 0, 303, 0, 0, 0, 2437, 
-    0, 4221, 4844, 118869, 0, 0, 0, 0, 0, 43292, 0, 2441, 10739, 65090, 0, 
-    119327, 0, 2451, 2714, 119326, 0, 43379, 4937, 43376, 753, 5849, 10597, 
-    43089, 11722, 9248, 0, 42879, 11725, 0, 0, 2726, 3107, 73958, 4941, 
-    64937, 119233, 9140, 1408, 5261, 4607, 0, 181, 0, 4942, 9539, 4938, 0, 
-    65201, 5259, 9369, 64185, 4142, 5257, 0, 0, 4964, 5264, 64178, 64177, 
-    12979, 41411, 64182, 64181, 64180, 64179, 9482, 4873, 41231, 1822, 42526, 
-    0, 12758, 3865, 0, 0, 10500, 0, 0, 78028, 0, 9830, 43642, 389, 10893, 
-    7521, 0, 4872, 5463, 0, 3125, 9567, 0, 4878, 5459, 4604, 0, 9557, 5465, 
-    68617, 0, 11494, 0, 9563, 10865, 74570, 43279, 64186, 0, 78714, 64191, 
-    64190, 8898, 64188, 0, 41030, 78836, 0, 917835, 78820, 917834, 0, 78805, 
-    41031, 78801, 11960, 6745, 3082, 0, 78539, 73919, 10573, 41744, 7079, 
-    5856, 127043, 5163, 78809, 0, 1817, 66724, 78538, 0, 10564, 7763, 13077, 
-    41813, 4400, 41745, 64207, 10275, 8925, 10371, 10307, 41814, 4248, 0, 0, 
-    4541, 6299, 64204, 64203, 64201, 64200, 64199, 64198, 0, 42156, 78688, 0, 
-    64193, 64192, 78000, 9943, 64197, 64196, 64195, 64194, 13282, 64175, 
-    64174, 64173, 78189, 846, 78186, 9965, 0, 0, 0, 0, 2543, 12163, 3108, 
-    9745, 64167, 64166, 64165, 64164, 2110, 0, 64169, 64168, 64949, 10972, 
-    10251, 10247, 42768, 715, 64161, 43299, 9453, 5348, 10943, 120378, 0, 
-    11352, 550, 9910, 0, 0, 66579, 11551, 0, 0, 9504, 7187, 0, 10373, 0, 
-    120791, 10261, 10253, 6404, 10277, 78183, 11984, 1552, 65222, 6998, 
-    78180, 0, 3128, 4789, 5067, 5066, 118849, 4784, 0, 8827, 1146, 5065, 
-    78196, 78192, 68136, 78190, 43412, 5064, 2431, 0, 9450, 1809, 0, 78200, 
-    78201, 5062, 1264, 64817, 13254, 11697, 0, 9785, 64716, 0, 3933, 74559, 
-    4740, 7954, 0, 0, 42609, 0, 74175, 0, 127016, 0, 0, 42130, 0, 5151, 
-    917829, 917823, 0, 0, 0, 7620, 3800, 65122, 0, 0, 8355, 7854, 0, 954, 
-    64927, 4185, 41045, 0, 41438, 41439, 68666, 10711, 4593, 0, 120584, 0, 
-    64774, 8053, 10532, 66727, 0, 0, 0, 64759, 6381, 5166, 9888, 0, 5148, 
-    42834, 0, 78205, 78206, 64140, 78204, 64131, 3119, 917814, 0, 3060, 
-    64135, 9986, 0, 77876, 636, 11698, 0, 0, 9916, 11701, 7836, 42741, 64137, 
-    8320, 78640, 8863, 0, 119960, 1477, 43289, 0, 74358, 8618, 0, 9908, 0, 0, 
-    0, 3937, 12312, 0, 0, 0, 64781, 912, 6349, 4536, 119963, 74532, 0, 6244, 
-    0, 194580, 3935, 120665, 0, 0, 11950, 5392, 42248, 65129, 68656, 5397, 0, 
-    12046, 12599, 0, 0, 5395, 0, 5393, 354, 68615, 119948, 78503, 0, 0, 
-    42039, 0, 0, 64142, 626, 0, 5895, 0, 0, 5780, 0, 0, 0, 0, 0, 43297, 0, 
-    4311, 4644, 8818, 0, 0, 0, 73818, 3918, 66452, 3797, 1644, 119944, 9658, 
-    4140, 11385, 65947, 6455, 9030, 813, 119945, 68131, 4146, 119957, 5360, 
-    2466, 0, 67669, 0, 6249, 42117, 0, 0, 0, 0, 74046, 120583, 4911, 988, 
-    917807, 0, 0, 43061, 7054, 64147, 0, 64920, 68195, 6698, 118933, 120349, 
-    0, 0, 11981, 12202, 0, 11032, 67654, 6093, 11608, 975, 68662, 65843, 170, 
-    0, 0, 4169, 0, 41859, 6058, 120401, 13203, 120657, 0, 0, 68657, 9818, 
-    10178, 10324, 42106, 5898, 74540, 4738, 41856, 7062, 917865, 4737, 11779, 
-    4742, 120564, 917866, 73736, 0, 9825, 6448, 6715, 127008, 4831, 0, 0, 0, 
-    5300, 4741, 42108, 0, 64159, 4736, 64148, 0, 849, 0, 78491, 43288, 0, 
-    66620, 0, 194920, 65549, 9496, 64598, 118866, 0, 7876, 68132, 917872, 
-    3928, 917870, 43378, 10706, 7198, 0, 4842, 12053, 0, 0, 4841, 0, 4171, 
-    12008, 6251, 3923, 1490, 0, 119591, 0, 40972, 5245, 0, 10114, 42001, 
-    41888, 4845, 8332, 40974, 64347, 4840, 9077, 78346, 1747, 917849, 4825, 
-    69240, 917852, 68655, 0, 0, 0, 0, 68628, 0, 9850, 118937, 367, 1472, 
-    917859, 6687, 1274, 0, 5905, 12339, 8919, 73953, 10907, 65261, 11023, 
-    119559, 4830, 9134, 78666, 64126, 43011, 0, 0, 64101, 0, 0, 4824, 10614, 
-    120390, 0, 1888, 1960, 7861, 917856, 78524, 41836, 43012, 6052, 6064, 54, 
-    43009, 12214, 0, 6211, 0, 358, 41997, 41833, 11442, 10758, 65774, 0, 
-    120384, 64115, 120385, 0, 0, 0, 119053, 0, 12765, 64118, 126998, 12962, 
-    0, 0, 4017, 12827, 5241, 120392, 0, 41118, 3924, 0, 11366, 917843, 0, 0, 
-    917846, 41116, 917844, 917564, 0, 11363, 12057, 11917, 1567, 74000, 4721, 
-    0, 66202, 8957, 4139, 0, 0, 0, 0, 0, 12740, 0, 4722, 6816, 0, 12759, 
-    4725, 0, 4726, 0, 0, 0, 917904, 917905, 0, 12755, 12762, 4015, 0, 8052, 
-    476, 0, 0, 0, 64212, 41020, 1382, 64209, 64216, 64215, 64214, 1656, 
-    41831, 0, 0, 41843, 8720, 3908, 1452, 13111, 0, 64067, 0, 8552, 64113, 
-    41845, 3849, 78732, 66232, 9778, 120066, 5891, 7064, 55, 9948, 917911, 0, 
-    0, 7935, 67586, 0, 1114, 0, 67585, 78675, 120053, 120050, 120051, 3938, 
-    120057, 65417, 64717, 120060, 120061, 65415, 120059, 6292, 65303, 7955, 
-    6452, 4713, 917887, 66249, 917885, 917890, 917891, 65152, 719, 120044, 
-    78623, 120042, 6713, 4532, 65412, 69822, 10868, 4717, 2349, 5902, 66450, 
-    4712, 917902, 917899, 917900, 65416, 8155, 4718, 3942, 4714, 9625, 0, 
-    6383, 0, 12006, 0, 0, 0, 0, 0, 65414, 6454, 1229, 0, 66437, 66025, 78699, 
-    0, 42500, 120508, 4809, 9623, 917874, 78694, 917880, 917877, 917878, 
-    65405, 68159, 917881, 917882, 5365, 4545, 8901, 917566, 119555, 4813, 0, 
-    0, 5925, 4808, 64330, 0, 65475, 118940, 0, 4814, 0, 4810, 0, 0, 64928, 
-    10543, 0, 3522, 0, 414, 65404, 0, 0, 6456, 73820, 0, 6691, 42193, 0, 0, 
-    0, 74495, 0, 0, 0, 118820, 9751, 65407, 0, 11770, 3919, 0, 0, 65061, 0, 
-    0, 0, 12235, 0, 0, 195025, 64092, 0, 64080, 0, 64090, 0, 0, 10162, 10310, 
-    0, 8454, 0, 42038, 387, 41363, 12737, 0, 4780, 43368, 0, 64310, 64621, 
-    6732, 0, 0, 0, 0, 0, 8896, 0, 375, 6976, 66582, 119005, 0, 0, 0, 119202, 
-    119203, 12526, 43120, 2315, 0, 1938, 119197, 0, 4529, 119200, 119201, 
-    119198, 119199, 0, 0, 0, 13150, 64492, 0, 0, 0, 12902, 0, 42891, 66327, 
-    74298, 0, 10799, 0, 2587, 66372, 0, 4193, 120334, 4241, 0, 7998, 0, 0, 0, 
-    0, 2316, 118821, 0, 0, 0, 64297, 74799, 0, 74140, 0, 5373, 0, 0, 3762, 
-    10015, 0, 119232, 0, 41590, 0, 0, 3780, 7485, 5779, 0, 42037, 0, 3906, 
-    12349, 0, 8326, 0, 65498, 3763, 6983, 5618, 0, 3779, 0, 43613, 0, 0, 0, 
-    0, 0, 0, 280, 74558, 0, 68138, 13072, 1894, 0, 0, 65478, 43310, 7231, 0, 
-    11773, 0, 0, 0, 0, 2551, 0, 6453, 10200, 6235, 0, 119237, 0, 0, 4470, 
-    119613, 0, 7780, 5369, 118958, 5249, 0, 5367, 8756, 0, 0, 5377, 120585, 
-    68143, 1688, 78245, 0, 0, 0, 0, 0, 44020, 6808, 41319, 1300, 10650, 
-    41692, 64505, 4668, 0, 119624, 1465, 10850, 3943, 0, 41205, 41315, 0, 0, 
-    0, 5352, 0, 0, 8839, 41314, 7384, 7785, 41204, 0, 41209, 0, 0, 43607, 0, 
-    0, 5420, 3897, 0, 0, 74417, 4018, 0, 68127, 0, 0, 0, 0, 127526, 2561, 
-    68621, 3542, 41915, 12076, 7951, 68152, 118857, 5303, 6276, 1706, 0, 
-    78751, 74116, 0, 65150, 41819, 0, 73951, 10847, 41822, 9985, 860, 0, 
-    10506, 0, 0, 10753, 10830, 0, 615, 64490, 7574, 0, 77922, 0, 12909, 
-    43016, 64559, 127028, 0, 0, 0, 2020, 0, 4022, 0, 0, 77923, 0, 41691, 0, 
-    0, 74329, 0, 64622, 9070, 0, 68411, 3911, 42829, 43122, 1033, 74440, 0, 
-    7000, 3904, 0, 0, 0, 0, 127012, 13123, 10846, 3450, 0, 7397, 118807, 0, 
-    42778, 10000, 41088, 449, 0, 3777, 68458, 0, 9636, 0, 10738, 0, 9367, 
-    593, 41085, 3999, 65226, 41713, 12764, 0, 64409, 3596, 0, 0, 9763, 
-    120280, 120283, 12347, 124, 12981, 41127, 2092, 0, 0, 0, 0, 10820, 43987, 
-    0, 0, 1769, 41715, 2463, 78489, 0, 12770, 0, 1538, 0, 43124, 0, 195058, 
-    7795, 120300, 0, 4828, 1258, 0, 2006, 0, 0, 9498, 127032, 127033, 120289, 
-    120288, 3939, 120290, 8846, 8943, 120287, 120286, 2650, 4491, 1961, 
-    42602, 11525, 120292, 1959, 120294, 55228, 11774, 41016, 0, 68675, 0, 
-    1511, 9324, 78211, 10519, 66331, 3454, 19930, 0, 41019, 0, 0, 65292, 
-    6822, 12862, 0, 0, 42143, 41828, 78207, 65531, 78208, 118879, 55223, 0, 
-    0, 41826, 8865, 6402, 0, 13279, 7917, 120340, 0, 7733, 0, 4998, 0, 0, 
-    41950, 0, 4268, 0, 0, 0, 4013, 0, 10881, 0, 0, 0, 74788, 2014, 0, 0, 
-    9765, 0, 0, 0, 195059, 78357, 65281, 0, 10949, 0, 0, 0, 2015, 0, 0, 0, 
-    66318, 43233, 0, 42517, 0, 0, 0, 12698, 8094, 43445, 65909, 6474, 794, 0, 
-    12656, 0, 119353, 0, 1665, 0, 4833, 0, 119351, 0, 0, 189, 12611, 0, 0, 
-    2859, 4838, 0, 4834, 65078, 0, 0, 4837, 0, 770, 0, 811, 0, 41042, 917551, 
-    41318, 64427, 0, 0, 78848, 3895, 0, 74341, 3976, 0, 42859, 10193, 3116, 
-    7747, 0, 0, 0, 0, 0, 43686, 78846, 41877, 0, 2871, 64614, 0, 999, 0, 
-    6345, 41876, 2663, 2017, 0, 0, 11040, 10150, 0, 64308, 1522, 597, 4775, 
-    12555, 12571, 12550, 12583, 12560, 2019, 12556, 12584, 3092, 0, 12562, 
-    4783, 12566, 12569, 12554, 0, 10812, 78851, 0, 0, 3078, 1402, 0, 0, 0, 0, 
-    119248, 394, 3088, 0, 0, 0, 3991, 64391, 0, 0, 424, 66328, 1999, 0, 
-    73914, 0, 0, 0, 0, 42231, 8246, 0, 0, 0, 41840, 0, 2377, 1298, 64011, 
-    12572, 11318, 12557, 12559, 12570, 8488, 1003, 2373, 9446, 7481, 9448, 
-    48, 0, 9480, 481, 0, 9438, 9439, 9440, 9441, 8465, 9443, 9444, 9445, 
-    9430, 9431, 9432, 9433, 9434, 9435, 3984, 9437, 0, 0, 9424, 9425, 9426, 
-    9427, 9428, 9429, 64758, 0, 9655, 0, 2004, 9096, 9782, 0, 9172, 0, 19965, 
-    0, 5955, 67666, 1108, 0, 74773, 0, 0, 64782, 3926, 0, 65210, 8798, 0, 0, 
-    1392, 0, 0, 917557, 10606, 8065, 118805, 10353, 10417, 0, 0, 64524, 0, 
-    4019, 0, 0, 43280, 8219, 68402, 1812, 0, 0, 0, 0, 42410, 74448, 119132, 
-    6054, 10697, 3169, 42297, 42322, 10642, 3909, 9950, 0, 0, 0, 68678, 0, 0, 
-    1049, 0, 65707, 2304, 41806, 0, 42336, 3921, 0, 11775, 64760, 11766, 
-    1038, 42303, 9823, 127278, 69236, 4008, 64004, 8773, 10733, 36, 0, 5153, 
-    41805, 0, 73735, 763, 41808, 64910, 0, 2009, 0, 0, 0, 9640, 119951, 0, 
-    120695, 8621, 0, 12852, 3031, 0, 64361, 0, 182, 194718, 0, 0, 119950, 0, 
-    9058, 366, 0, 9892, 5969, 11754, 10848, 4570, 65301, 44013, 4255, 0, 
-    10102, 41189, 4003, 41026, 68109, 13293, 41192, 0, 0, 42251, 0, 42534, 
-    65179, 11287, 6128, 0, 11034, 10923, 64423, 0, 65506, 0, 0, 74083, 0, 
-    9932, 0, 0, 119955, 0, 9817, 0, 120140, 0, 12117, 66586, 4183, 10540, 
-    66250, 9063, 127045, 0, 119954, 0, 12897, 3792, 2011, 0, 6065, 43160, 0, 
-    194715, 8692, 41186, 41816, 41023, 41818, 41187, 11659, 7922, 12614, 
-    2005, 8523, 78002, 0, 7513, 1863, 4710, 0, 5956, 7621, 78006, 127116, 
-    4705, 716, 78004, 0, 4704, 120040, 120270, 42241, 161, 43977, 74546, 
-    66214, 4706, 0, 0, 42672, 4709, 10680, 0, 43293, 0, 0, 119164, 120328, 0, 
-    0, 1700, 119223, 0, 0, 0, 4004, 0, 10968, 43296, 0, 8506, 0, 0, 126996, 
-    1005, 937, 78216, 4734, 2870, 0, 78218, 0, 7463, 4729, 0, 235, 1384, 
-    4728, 0, 120420, 120644, 120421, 8109, 43105, 0, 4730, 447, 13186, 1513, 
-    4733, 120415, 0, 0, 42527, 12911, 43427, 1383, 8565, 2469, 120024, 6690, 
-    6156, 68117, 43439, 7993, 4288, 120416, 2674, 13238, 11922, 0, 120330, 
-    3510, 13234, 0, 120407, 5605, 42095, 11364, 0, 1380, 65617, 120253, 
-    120261, 13196, 13197, 120309, 120682, 9495, 119346, 0, 5959, 0, 73976, 
-    120305, 43371, 6941, 119349, 13205, 13211, 5801, 12769, 65905, 41697, 
-    1283, 120302, 4779, 0, 3719, 4006, 0, 19957, 0, 2021, 119332, 0, 0, 
-    43028, 65493, 41838, 3875, 5962, 64341, 119339, 9814, 43457, 5827, 3314, 
-    7787, 78234, 65494, 68153, 0, 0, 120636, 64531, 120692, 0, 0, 0, 66316, 
-    65467, 5771, 41298, 0, 9742, 521, 0, 10800, 0, 8404, 194625, 483, 7096, 
-    7089, 66323, 928, 0, 0, 119018, 10599, 11586, 3989, 10971, 0, 65782, 
-    9841, 8843, 12145, 0, 10074, 78548, 0, 3769, 0, 0, 0, 0, 9573, 0, 65290, 
-    8849, 0, 65855, 65112, 1796, 120505, 0, 78555, 8164, 41301, 3502, 0, 
-    7388, 10621, 73838, 78553, 5825, 13007, 68165, 0, 120457, 12661, 7608, 
-    10354, 10418, 42411, 2022, 0, 1409, 12195, 4001, 3112, 10824, 120639, 
-    1390, 0, 0, 421, 43536, 5846, 120120, 4130, 0, 7595, 42588, 7600, 120121, 
-    66035, 0, 0, 65851, 42607, 0, 0, 3168, 0, 42134, 0, 2370, 2846, 0, 0, 0, 
-    120132, 0, 1836, 0, 0, 119137, 3740, 0, 6290, 65374, 120451, 65923, 3944, 
-    66628, 120434, 0, 6135, 3118, 74265, 119093, 120446, 0, 0, 8127, 8975, 
-    64739, 7943, 0, 0, 10618, 2584, 0, 0, 0, 9998, 0, 0, 0, 0, 0, 6204, 0, 0, 
-    8279, 8776, 64954, 4975, 74809, 120130, 4267, 0, 42206, 0, 0, 195046, 
-    65700, 66562, 0, 64645, 0, 0, 0, 12586, 0, 9242, 0, 0, 4523, 5842, 10495, 
-    3122, 0, 7793, 78275, 9328, 0, 0, 12604, 0, 6615, 67650, 0, 3986, 44025, 
-    0, 8912, 64555, 7409, 0, 0, 9541, 78276, 0, 11275, 8540, 11498, 0, 0, 
-    41040, 2459, 0, 13060, 41041, 74413, 0, 0, 0, 68427, 10450, 12551, 41043, 
-    7020, 120353, 3765, 0, 0, 1606, 120348, 120351, 3093, 68436, 0, 0, 
-    120649, 0, 0, 4312, 74091, 120337, 120336, 11923, 4023, 120333, 5763, 
-    120335, 4827, 10894, 12810, 64406, 118785, 4455, 74321, 433, 119620, 
-    66660, 2499, 0, 0, 0, 11973, 13089, 4293, 120329, 42224, 42758, 12196, 
-    42837, 42226, 119319, 0, 119126, 5817, 0, 55277, 3120, 9797, 0, 0, 0, 
-    10389, 0, 0, 4895, 65358, 0, 4359, 585, 0, 3509, 0, 486, 4290, 5758, 0, 
-    0, 0, 7004, 0, 65880, 0, 119048, 2380, 11380, 0, 0, 2376, 0, 917847, 0, 
-    5197, 127046, 127047, 127048, 2366, 127050, 127051, 120554, 120045, 0, 0, 
-    0, 0, 0, 0, 0, 74188, 0, 0, 0, 120047, 0, 0, 0, 120049, 0, 1847, 0, 
-    10339, 0, 42384, 0, 4227, 74158, 0, 0, 43032, 0, 42365, 0, 12671, 11384, 
-    0, 0, 0, 64797, 0, 5820, 0, 120052, 120065, 0, 120064, 120650, 42137, 
-    9893, 2754, 12664, 120063, 0, 7377, 0, 41799, 65530, 1711, 12984, 43039, 
-    3114, 6255, 0, 118938, 0, 10853, 926, 0, 74184, 0, 120055, 0, 43175, 0, 
-    43037, 41798, 41035, 11583, 0, 41801, 119088, 0, 520, 4200, 12699, 8331, 
-    0, 3091, 41034, 127353, 0, 8360, 0, 78044, 321, 4229, 64543, 0, 65563, 0, 
-    917974, 2861, 0, 10095, 0, 0, 0, 1861, 0, 0, 0, 0, 43041, 0, 0, 0, 3859, 
-    12181, 41660, 8209, 0, 73867, 12973, 0, 74757, 127514, 41658, 0, 0, 5760, 
-    0, 743, 4414, 120766, 0, 42632, 917973, 65161, 73896, 0, 0, 1405, 119063, 
-    43220, 43341, 0, 19919, 0, 64532, 65367, 43710, 0, 0, 3513, 0, 118883, 
-    43342, 119064, 65529, 65364, 0, 0, 6485, 1397, 0, 41986, 0, 0, 0, 74097, 
-    0, 7471, 12079, 0, 12682, 43287, 0, 0, 0, 0, 0, 0, 1099, 10490, 0, 10501, 
-    65181, 74463, 0, 464, 41624, 65283, 67663, 78222, 1346, 0, 917631, 64724, 
-    64897, 423, 1818, 65144, 0, 8272, 0, 19911, 4218, 3087, 64960, 127234, 
-    43564, 0, 0, 9584, 10465, 0, 74359, 12626, 9106, 0, 42642, 0, 64750, 
-    9390, 0, 41797, 0, 0, 265, 41795, 64666, 0, 43530, 2752, 0, 0, 0, 59, 0, 
-    0, 0, 0, 77873, 41810, 0, 7010, 0, 41809, 41495, 119364, 0, 42252, 42213, 
-    8009, 3305, 43033, 511, 119320, 66255, 13127, 120067, 0, 0, 0, 917977, 
-    65915, 1400, 41812, 10685, 194870, 2103, 10387, 4453, 43276, 917783, 
-    13159, 0, 6481, 41213, 0, 0, 0, 0, 41983, 74198, 6617, 9116, 119654, 0, 
-    462, 68110, 10493, 0, 8129, 0, 0, 74471, 6644, 11658, 0, 0, 3452, 11906, 
-    9581, 1385, 3098, 0, 119013, 43340, 0, 41033, 6493, 42626, 0, 0, 11426, 
-    0, 1681, 118789, 1204, 3755, 64661, 7235, 10170, 3966, 8911, 0, 41841, 
-    43338, 0, 0, 5726, 64915, 42175, 0, 0, 41497, 65044, 0, 2851, 43017, 0, 
-    0, 4373, 78058, 0, 9587, 1789, 6671, 0, 3100, 0, 65360, 0, 127510, 0, 
-    64922, 0, 8190, 12083, 0, 0, 6506, 64312, 74374, 2368, 0, 4419, 0, 
-    119125, 3439, 1825, 1192, 120106, 8891, 3080, 120228, 2347, 5430, 0, 
-    8990, 2848, 0, 0, 0, 249, 0, 0, 0, 120658, 0, 0, 8883, 917802, 728, 
-    68178, 995, 0, 0, 64826, 0, 917798, 0, 0, 19945, 8091, 558, 0, 12273, 
-    194814, 0, 12112, 0, 0, 0, 74419, 12335, 120104, 917795, 3443, 3129, 0, 
-    2102, 65445, 78258, 64891, 0, 7725, 0, 78255, 0, 8624, 69246, 12446, 
-    43295, 0, 41894, 0, 6277, 41672, 41893, 10010, 0, 3540, 0, 835, 0, 69816, 
-    119868, 74408, 0, 73959, 5426, 4258, 0, 0, 5424, 0, 8283, 0, 5434, 0, 0, 
-    19917, 11408, 0, 11947, 0, 1404, 3095, 11432, 194813, 3464, 6486, 4819, 
-    0, 0, 570, 8095, 3672, 119864, 1498, 67866, 0, 0, 431, 0, 0, 0, 0, 68167, 
-    0, 13096, 0, 0, 43408, 9516, 0, 5268, 42230, 42220, 0, 4450, 120723, 
-    11547, 43417, 0, 356, 3477, 227, 10488, 68203, 382, 11418, 0, 0, 0, 0, 0, 
-    0, 6484, 2541, 66039, 0, 78718, 0, 3549, 0, 9110, 119665, 2743, 0, 43290, 
-    194812, 9097, 0, 43015, 8782, 0, 776, 2524, 42707, 8573, 0, 0, 0, 0, 
-    42694, 64944, 8952, 3856, 118818, 0, 5872, 6495, 0, 0, 0, 0, 0, 120733, 
-    12849, 3953, 1897, 0, 65094, 11994, 4339, 74556, 0, 67843, 0, 0, 0, 
-    68473, 74104, 5228, 0, 7868, 43184, 0, 0, 73986, 43438, 0, 43022, 0, 
-    1162, 0, 2671, 0, 0, 0, 0, 118865, 4553, 73811, 0, 195005, 0, 0, 19921, 
-    74331, 11424, 195006, 4567, 41891, 0, 0, 55249, 4820, 65239, 194662, 0, 
-    0, 43042, 119212, 1377, 12869, 4897, 42821, 9250, 0, 4438, 64385, 0, 
-    1753, 11331, 6147, 194941, 43282, 8833, 0, 0, 6504, 78408, 126979, 10719, 
-    0, 1898, 1413, 42443, 0, 802, 12141, 0, 194671, 6648, 10671, 2528, 0, 
-    64789, 9169, 838, 127092, 120697, 844, 5014, 0, 256, 0, 9990, 0, 42739, 
-    0, 7542, 65464, 9726, 0, 6489, 10048, 74326, 78719, 66573, 0, 78724, 
-    78712, 11761, 194655, 0, 41094, 0, 0, 0, 0, 0, 6196, 6945, 194628, 
-    194890, 194631, 120491, 11816, 194943, 5733, 0, 0, 0, 41098, 0, 41093, 0, 
-    66626, 588, 9760, 0, 194717, 1238, 200, 0, 1660, 73916, 0, 118905, 74362, 
-    0, 0, 194651, 0, 0, 3394, 194894, 120668, 0, 0, 0, 66219, 0, 43284, 
-    194657, 7817, 1841, 11055, 120533, 194979, 194982, 1669, 10776, 194981, 
-    7701, 194980, 0, 194995, 1732, 4030, 0, 3963, 66611, 127530, 41768, 6491, 
-    0, 65324, 914, 65323, 8071, 3538, 0, 78713, 65328, 0, 74367, 7614, 0, 
-    11819, 0, 12009, 12399, 0, 67852, 65537, 0, 10841, 43430, 5301, 0, 0, 
-    5734, 8960, 0, 127527, 65317, 77880, 0, 0, 0, 12304, 0, 0, 65315, 0, 0, 
-    0, 0, 0, 119621, 0, 74536, 12447, 64486, 0, 0, 0, 0, 0, 0, 42767, 10915, 
-    0, 12007, 43695, 120520, 11975, 194878, 0, 0, 2555, 8629, 0, 43168, 
-    41872, 43706, 4496, 194879, 0, 0, 0, 0, 0, 0, 64730, 0, 66714, 68222, 0, 
-    0, 65596, 0, 11416, 4280, 67655, 8765, 12784, 7792, 1393, 127242, 67871, 
-    74386, 0, 8233, 43572, 0, 6683, 0, 3442, 12144, 2841, 12543, 0, 1473, 
-    42820, 64329, 917772, 0, 68642, 6488, 357, 1048, 41100, 0, 41104, 0, 
-    41099, 1054, 119065, 1040, 65450, 0, 4434, 1069, 0, 118862, 74231, 
-    917765, 0, 0, 0, 9693, 41943, 0, 41931, 41759, 12757, 4353, 0, 1059, 
-    9790, 8995, 0, 0, 65937, 0, 41764, 10646, 0, 118833, 0, 0, 74830, 78569, 
-    12743, 0, 6480, 917761, 41779, 42580, 66601, 12207, 119619, 6335, 66602, 
-    11312, 64807, 0, 0, 41767, 0, 0, 43020, 0, 3955, 74254, 0, 0, 917861, 0, 
-    77926, 9770, 9246, 12230, 0, 0, 0, 10448, 41783, 41786, 127093, 12797, 
-    2755, 64571, 78578, 194927, 4857, 0, 4428, 12794, 73755, 0, 78574, 0, 0, 
-    0, 5747, 78825, 0, 7978, 41092, 74571, 0, 11924, 74205, 42144, 65015, 0, 
-    563, 0, 0, 12798, 11271, 57, 0, 0, 917860, 119043, 0, 0, 43137, 694, 0, 
-    9876, 0, 119168, 0, 78822, 64537, 0, 277, 74385, 7229, 12761, 0, 0, 
-    13025, 64811, 8757, 78824, 0, 1574, 7381, 0, 2525, 4852, 5749, 68465, 
-    13027, 42824, 120574, 1039, 9801, 10155, 5745, 188, 41858, 11592, 0, 
-    74015, 9055, 41853, 4858, 917780, 0, 436, 4771, 0, 2786, 0, 4856, 8051, 
-    0, 119609, 0, 9644, 0, 0, 0, 194916, 120732, 66710, 118834, 0, 73906, 0, 
-    127114, 0, 10234, 5843, 11939, 0, 42157, 0, 3157, 194918, 68393, 0, 3504, 
-    119178, 0, 10822, 5149, 66029, 10226, 65142, 0, 3594, 42424, 194959, 40, 
-    12657, 0, 0, 386, 0, 8834, 0, 12815, 43574, 0, 73907, 0, 74196, 7220, 
-    74504, 0, 74316, 0, 77932, 4304, 74503, 8160, 78707, 194753, 0, 0, 0, 
-    1348, 0, 78597, 0, 13303, 0, 0, 194755, 7599, 1278, 43616, 13269, 0, 0, 
-    74387, 78179, 78598, 74492, 6097, 7568, 8780, 4982, 0, 74501, 194763, 
-    78592, 194762, 2672, 3735, 194735, 13138, 42266, 9484, 10724, 41202, 
-    119024, 0, 43742, 0, 9487, 119959, 119117, 3842, 195034, 78668, 12442, 
-    6193, 9791, 0, 0, 42516, 7228, 7559, 74803, 78468, 194851, 11399, 119219, 
-    194691, 194855, 194690, 194857, 3604, 0, 119188, 0, 78540, 78541, 42507, 
-    1962, 78490, 78476, 42505, 11660, 0, 2072, 0, 6995, 74173, 5437, 74174, 
-    10669, 8702, 7964, 194706, 0, 199, 194843, 4105, 194845, 194699, 194847, 
-    194710, 119875, 13148, 7560, 78479, 9226, 78480, 195070, 6472, 65814, 
-    73954, 0, 4724, 0, 0, 9191, 0, 64432, 0, 0, 195024, 10196, 7886, 0, 6585, 
-    0, 6680, 195042, 0, 195051, 6679, 74412, 0, 194866, 74421, 11382, 0, 0, 
-    0, 0, 194833, 194832, 6681, 194834, 12693, 194836, 42727, 194838, 194841, 
-    78195, 65442, 119610, 78199, 12166, 43248, 66248, 194816, 0, 194818, 
-    194817, 194820, 194819, 5297, 7042, 13284, 6112, 7968, 194825, 73927, 
-    194738, 194736, 65746, 0, 74409, 74389, 194826, 4342, 42839, 194831, 
-    1677, 0, 0, 194806, 917855, 11091, 11011, 2719, 0, 0, 119595, 64495, 0, 
-    0, 7585, 65169, 2052, 4308, 917858, 74177, 7505, 543, 64916, 64736, 0, 0, 
-    64655, 0, 118922, 2064, 0, 43158, 7902, 0, 65265, 194639, 0, 0, 0, 0, 0, 
-    0, 12994, 0, 10828, 0, 6228, 4307, 3482, 0, 0, 0, 0, 506, 74573, 41194, 
-    65735, 2055, 43255, 41195, 0, 8169, 0, 8841, 0, 516, 0, 2063, 119051, 34, 
-    0, 120186, 11504, 1612, 74333, 120182, 74520, 74308, 12001, 120178, 
-    10242, 64564, 120179, 120174, 6584, 7749, 11037, 0, 1758, 0, 10667, 
-    10560, 120197, 120756, 1935, 11517, 120193, 120196, 120195, 1931, 120189, 
-    74839, 120191, 1217, 64702, 12643, 825, 0, 194905, 12294, 127261, 78834, 
-    9138, 78831, 78833, 12631, 78829, 11080, 74554, 0, 5591, 1239, 0, 11313, 
-    0, 3403, 0, 0, 64364, 0, 0, 74582, 8998, 12988, 0, 9152, 0, 0, 194898, 
-    67589, 41850, 64290, 3433, 0, 12615, 1594, 42192, 6914, 67603, 0, 119569, 
-    74565, 41353, 67602, 67611, 4337, 0, 194897, 918, 65035, 41351, 7681, 
-    194900, 42577, 41393, 12668, 194904, 2477, 0, 0, 127302, 0, 67604, 
-    194880, 127235, 573, 194881, 194884, 11417, 194886, 194885, 194888, 
-    67599, 0, 194889, 67607, 11482, 0, 0, 3357, 0, 42223, 4207, 1288, 78842, 
-    78839, 68419, 78837, 11589, 42195, 194872, 917627, 127263, 64602, 67618, 
-    0, 0, 42788, 68416, 64480, 194875, 8423, 3348, 448, 68476, 9717, 0, 0, 
-    997, 0, 0, 0, 0, 11440, 11379, 42000, 13139, 42221, 65013, 126999, 0, 
-    73796, 0, 119228, 12035, 0, 2818, 0, 0, 73793, 0, 4172, 0, 0, 8373, 
-    10873, 12197, 0, 0, 0, 0, 0, 78210, 0, 0, 194865, 126982, 74563, 64828, 
-    11419, 194868, 766, 1257, 0, 118845, 11381, 3265, 66617, 3274, 0, 0, 0, 
-    0, 119092, 41989, 0, 0, 0, 3263, 0, 65672, 0, 3270, 64539, 11489, 0, 0, 
-    0, 0, 9505, 65518, 194776, 756, 195052, 0, 0, 0, 7261, 0, 186, 0, 119156, 
-    5770, 13179, 65830, 12612, 12949, 64856, 12800, 0, 74203, 64718, 0, 0, 0, 
-    118929, 0, 11578, 0, 119296, 0, 0, 0, 0, 74568, 9254, 0, 1794, 120217, 
-    64521, 5624, 120220, 120221, 119958, 120223, 3617, 66636, 64886, 120211, 
-    120212, 120213, 120214, 1872, 66508, 120467, 41079, 10748, 5502, 119330, 
-    4452, 0, 0, 917879, 4511, 0, 0, 64678, 11425, 0, 43245, 1231, 0, 0, 0, 
-    9003, 8192, 0, 5305, 9653, 10616, 8694, 9546, 0, 0, 120478, 120200, 
-    65205, 120202, 64063, 9878, 74780, 119626, 78202, 64058, 8799, 42131, 0, 
-    64062, 1028, 64060, 64059, 837, 10567, 0, 43103, 0, 120754, 11427, 2902, 
-    64043, 64042, 66464, 10756, 0, 42606, 64045, 64044, 43979, 10076, 64040, 
-    43060, 0, 1034, 3392, 0, 43091, 64033, 64032, 42735, 64038, 64037, 64036, 
-    64035, 4291, 194928, 64015, 64014, 64681, 194930, 0, 78145, 0, 43090, 0, 
-    3476, 8973, 64012, 42473, 64010, 64008, 64007, 2003, 7706, 64517, 78153, 
-    2538, 64009, 204, 0, 4802, 4111, 8239, 9098, 4805, 64001, 64057, 7885, 
-    7247, 64054, 0, 0, 4767, 9343, 64049, 64048, 120034, 1133, 64053, 64052, 
-    43453, 64050, 41340, 118975, 0, 10005, 12329, 41333, 0, 8489, 1942, 0, 0, 
-    42520, 0, 0, 0, 10760, 64023, 64022, 64021, 6582, 43670, 0, 64025, 9167, 
-    42151, 78244, 0, 2026, 64019, 64018, 64017, 64016, 12768, 0, 7582, 78252, 
-    78248, 77914, 78246, 78247, 0, 77915, 78766, 6788, 13094, 77920, 7532, 
-    41414, 78520, 3179, 78518, 64769, 78514, 78517, 11461, 74454, 10751, 
-    9051, 120720, 6708, 10535, 0, 68218, 55274, 2008, 64031, 64030, 294, 
-    41874, 0, 126991, 65929, 0, 0, 0, 0, 64028, 8146, 64026, 41788, 194844, 
-    0, 118795, 6343, 43247, 119888, 0, 119886, 119891, 119892, 119889, 11433, 
-    119895, 119896, 0, 7801, 65578, 194839, 12915, 43968, 3297, 9699, 194955, 
-    1135, 0, 0, 0, 1995, 6722, 0, 0, 2552, 41546, 60, 68394, 8649, 41549, 
-    78496, 0, 0, 6682, 0, 78679, 64710, 41547, 0, 2013, 0, 78530, 78532, 
-    78528, 78529, 12832, 78493, 8081, 8362, 3537, 119908, 9137, 119906, 8999, 
-    0, 78533, 3466, 0, 0, 1996, 0, 3453, 6282, 0, 2002, 2000, 120175, 537, 0, 
-    4179, 65119, 1998, 0, 1842, 0, 0, 9628, 68446, 12081, 9826, 64502, 1767, 
-    0, 0, 0, 120201, 0, 0, 0, 3059, 44024, 120204, 119953, 120205, 0, 0, 0, 
-    4100, 920, 1811, 1355, 0, 0, 3592, 10078, 0, 0, 0, 8592, 65870, 68164, 0, 
-    10742, 0, 0, 1994, 9281, 3296, 12865, 1997, 1895, 
-};
-
-#define code_magic 47
-#define code_size 32768
-#define code_poly 32771
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/xxmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/xxmodule.c
deleted file mode 100644
index fe5ea90..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/xxmodule.c
+++ /dev/null
@@ -1,379 +0,0 @@
-
-/* Use this file as a template to start implementing a module that
-   also declares object types. All occurrences of 'Xxo' should be changed
-   to something reasonable for your objects. After that, all other
-   occurrences of 'xx' should be changed to something reasonable for your
-   module. If your module is named foo your sourcefile should be named
-   foomodule.c.
-
-   You will probably want to delete all references to 'x_attr' and add
-   your own types of attributes instead.  Maybe you want to name your
-   local variables other than 'self'.  If your object type is needed in
-   other files, you'll have to create a file "foobarobject.h"; see
-   intobject.h for an example. */
-
-/* Xxo objects */
-
-#include "Python.h"
-
-static PyObject *ErrorObject;
-
-typedef struct {
-    PyObject_HEAD
-    PyObject            *x_attr;        /* Attributes dictionary */
-} XxoObject;
-
-static PyTypeObject Xxo_Type;
-
-#define XxoObject_Check(v)      (Py_TYPE(v) == &Xxo_Type)
-
-static XxoObject *
-newXxoObject(PyObject *arg)
-{
-    XxoObject *self;
-    self = PyObject_New(XxoObject, &Xxo_Type);
-    if (self == NULL)
-        return NULL;
-    self->x_attr = NULL;
-    return self;
-}
-
-/* Xxo methods */
-
-static void
-Xxo_dealloc(XxoObject *self)
-{
-    Py_XDECREF(self->x_attr);
-    PyObject_Del(self);
-}
-
-static PyObject *
-Xxo_demo(XxoObject *self, PyObject *args)
-{
-    if (!PyArg_ParseTuple(args, ":demo"))
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyMethodDef Xxo_methods[] = {
-    {"demo",            (PyCFunction)Xxo_demo,  METH_VARARGS,
-        PyDoc_STR("demo() -> None")},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyObject *
-Xxo_getattr(XxoObject *self, char *name)
-{
-    if (self->x_attr != NULL) {
-        PyObject *v = PyDict_GetItemString(self->x_attr, name);
-        if (v != NULL) {
-            Py_INCREF(v);
-            return v;
-        }
-    }
-    return Py_FindMethod(Xxo_methods, (PyObject *)self, name);
-}
-
-static int
-Xxo_setattr(XxoObject *self, char *name, PyObject *v)
-{
-    if (self->x_attr == NULL) {
-        self->x_attr = PyDict_New();
-        if (self->x_attr == NULL)
-            return -1;
-    }
-    if (v == NULL) {
-        int rv = PyDict_DelItemString(self->x_attr, name);
-        if (rv < 0)
-            PyErr_SetString(PyExc_AttributeError,
-                "delete non-existing Xxo attribute");
-        return rv;
-    }
-    else
-        return PyDict_SetItemString(self->x_attr, name, v);
-}
-
-static PyTypeObject Xxo_Type = {
-    /* The ob_type field must be initialized in the module init function
-     * to be portable to Windows without using C++. */
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "xxmodule.Xxo",             /*tp_name*/
-    sizeof(XxoObject),          /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    /* methods */
-    (destructor)Xxo_dealloc, /*tp_dealloc*/
-    0,                          /*tp_print*/
-    (getattrfunc)Xxo_getattr, /*tp_getattr*/
-    (setattrfunc)Xxo_setattr, /*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*/
-    Py_TPFLAGS_DEFAULT,     /*tp_flags*/
-    0,                      /*tp_doc*/
-    0,                      /*tp_traverse*/
-    0,                      /*tp_clear*/
-    0,                      /*tp_richcompare*/
-    0,                      /*tp_weaklistoffset*/
-    0,                      /*tp_iter*/
-    0,                      /*tp_iternext*/
-    0,                      /*tp_methods*/
-    0,                      /*tp_members*/
-    0,                      /*tp_getset*/
-    0,                      /*tp_base*/
-    0,                      /*tp_dict*/
-    0,                      /*tp_descr_get*/
-    0,                      /*tp_descr_set*/
-    0,                      /*tp_dictoffset*/
-    0,                      /*tp_init*/
-    0,                      /*tp_alloc*/
-    0,                      /*tp_new*/
-    0,                      /*tp_free*/
-    0,                      /*tp_is_gc*/
-};
-/* --------------------------------------------------------------------- */
-
-/* Function of two integers returning integer */
-
-PyDoc_STRVAR(xx_foo_doc,
-"foo(i,j)\n\
-\n\
-Return the sum of i and j.");
-
-static PyObject *
-xx_foo(PyObject *self, PyObject *args)
-{
-    long i, j;
-    long res;
-    if (!PyArg_ParseTuple(args, "ll:foo", &i, &j))
-        return NULL;
-    res = i+j; /* XXX Do something here */
-    return PyInt_FromLong(res);
-}
-
-
-/* Function of no arguments returning new Xxo object */
-
-static PyObject *
-xx_new(PyObject *self, PyObject *args)
-{
-    XxoObject *rv;
-
-    if (!PyArg_ParseTuple(args, ":new"))
-        return NULL;
-    rv = newXxoObject(args);
-    if (rv == NULL)
-        return NULL;
-    return (PyObject *)rv;
-}
-
-/* Example with subtle bug from extensions manual ("Thin Ice"). */
-
-static PyObject *
-xx_bug(PyObject *self, PyObject *args)
-{
-    PyObject *list, *item;
-
-    if (!PyArg_ParseTuple(args, "O:bug", &list))
-        return NULL;
-
-    item = PyList_GetItem(list, 0);
-    /* Py_INCREF(item); */
-    PyList_SetItem(list, 1, PyInt_FromLong(0L));
-    PyObject_Print(item, stdout, 0);
-    printf("\n");
-    /* Py_DECREF(item); */
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/* Test bad format character */
-
-static PyObject *
-xx_roj(PyObject *self, PyObject *args)
-{
-    PyObject *a;
-    long b;
-    if (!PyArg_ParseTuple(args, "O#:roj", &a, &b))
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-
-/* ---------- */
-
-static PyTypeObject Str_Type = {
-    /* The ob_type field must be initialized in the module init function
-     * to be portable to Windows without using C++. */
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "xxmodule.Str",             /*tp_name*/
-    0,                          /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    /* methods */
-    0,                          /*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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
-    0,                          /*tp_doc*/
-    0,                          /*tp_traverse*/
-    0,                          /*tp_clear*/
-    0,                          /*tp_richcompare*/
-    0,                          /*tp_weaklistoffset*/
-    0,                          /*tp_iter*/
-    0,                          /*tp_iternext*/
-    0,                          /*tp_methods*/
-    0,                          /*tp_members*/
-    0,                          /*tp_getset*/
-    0, /* see initxx */         /*tp_base*/
-    0,                          /*tp_dict*/
-    0,                          /*tp_descr_get*/
-    0,                          /*tp_descr_set*/
-    0,                          /*tp_dictoffset*/
-    0,                          /*tp_init*/
-    0,                          /*tp_alloc*/
-    0,                          /*tp_new*/
-    0,                          /*tp_free*/
-    0,                          /*tp_is_gc*/
-};
-
-/* ---------- */
-
-static PyObject *
-null_richcompare(PyObject *self, PyObject *other, int op)
-{
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-}
-
-static PyTypeObject Null_Type = {
-    /* The ob_type field must be initialized in the module init function
-     * to be portable to Windows without using C++. */
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "xxmodule.Null",            /*tp_name*/
-    0,                          /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    /* methods */
-    0,                          /*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*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
-    0,                          /*tp_doc*/
-    0,                          /*tp_traverse*/
-    0,                          /*tp_clear*/
-    null_richcompare,           /*tp_richcompare*/
-    0,                          /*tp_weaklistoffset*/
-    0,                          /*tp_iter*/
-    0,                          /*tp_iternext*/
-    0,                          /*tp_methods*/
-    0,                          /*tp_members*/
-    0,                          /*tp_getset*/
-    0, /* see initxx */         /*tp_base*/
-    0,                          /*tp_dict*/
-    0,                          /*tp_descr_get*/
-    0,                          /*tp_descr_set*/
-    0,                          /*tp_dictoffset*/
-    0,                          /*tp_init*/
-    0,                          /*tp_alloc*/
-    0, /* see initxx */         /*tp_new*/
-    0,                          /*tp_free*/
-    0,                          /*tp_is_gc*/
-};
-
-
-/* ---------- */
-
-
-/* List of functions defined in the module */
-
-static PyMethodDef xx_methods[] = {
-    {"roj",             xx_roj,         METH_VARARGS,
-        PyDoc_STR("roj(a,b) -> None")},
-    {"foo",             xx_foo,         METH_VARARGS,
-        xx_foo_doc},
-    {"new",             xx_new,         METH_VARARGS,
-        PyDoc_STR("new() -> new Xx object")},
-    {"bug",             xx_bug,         METH_VARARGS,
-        PyDoc_STR("bug(o) -> None")},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyDoc_STRVAR(module_doc,
-"This is a template module just for instruction.");
-
-/* Initialization function for the module (*must* be called initxx) */
-
-PyMODINIT_FUNC
-initxx(void)
-{
-    PyObject *m;
-
-    /* Due to cross platform compiler issues the slots must be filled
-     * here. It's required for portability to Windows without requiring
-     * C++. */
-    Null_Type.tp_base = &PyBaseObject_Type;
-    Null_Type.tp_new = PyType_GenericNew;
-    Str_Type.tp_base = &PyUnicode_Type;
-
-    /* Finalize the type object including setting type of the new type
-     * object; doing it here is required for portability, too. */
-    if (PyType_Ready(&Xxo_Type) < 0)
-        return;
-
-    /* Create the module and add the functions */
-    m = Py_InitModule3("xx", xx_methods, module_doc);
-    if (m == NULL)
-        return;
-
-    /* Add some symbolic constants to the module */
-    if (ErrorObject == NULL) {
-        ErrorObject = PyErr_NewException("xx.error", NULL, NULL);
-        if (ErrorObject == NULL)
-            return;
-    }
-    Py_INCREF(ErrorObject);
-    PyModule_AddObject(m, "error", ErrorObject);
-
-    /* Add Str */
-    if (PyType_Ready(&Str_Type) < 0)
-        return;
-    PyModule_AddObject(m, "Str", (PyObject *)&Str_Type);
-
-    /* Add Null */
-    if (PyType_Ready(&Null_Type) < 0)
-        return;
-    PyModule_AddObject(m, "Null", (PyObject *)&Null_Type);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/xxsubtype.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/xxsubtype.c
deleted file mode 100644
index a227bd2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/xxsubtype.c
+++ /dev/null
@@ -1,297 +0,0 @@
-#include "Python.h"
-#include "structmember.h"
-
-PyDoc_STRVAR(xxsubtype__doc__,
-"xxsubtype is an example module showing how to subtype builtin types from C.\n"
-"test_descr.py in the standard test suite requires it in order to complete.\n"
-"If you don't care about the examples, and don't intend to run the Python\n"
-"test suite, you can recompile Python without Modules/xxsubtype.c.");
-
-/* We link this module statically for convenience.  If compiled as a shared
-   library instead, some compilers don't allow addresses of Python objects
-   defined in other libraries to be used in static initializers here.  The
-   DEFERRED_ADDRESS macro is used to tag the slots where such addresses
-   appear; the module init function must fill in the tagged slots at runtime.
-   The argument is for documentation -- the macro ignores it.
-*/
-#define DEFERRED_ADDRESS(ADDR) 0
-
-/* spamlist -- a list subtype */
-
-typedef struct {
-    PyListObject list;
-    int state;
-} spamlistobject;
-
-static PyObject *
-spamlist_getstate(spamlistobject *self, PyObject *args)
-{
-    if (!PyArg_ParseTuple(args, ":getstate"))
-        return NULL;
-    return PyInt_FromLong(self->state);
-}
-
-static PyObject *
-spamlist_setstate(spamlistobject *self, PyObject *args)
-{
-    int state;
-
-    if (!PyArg_ParseTuple(args, "i:setstate", &state))
-        return NULL;
-    self->state = state;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-spamlist_specialmeth(PyObject *self, PyObject *args, PyObject *kw)
-{
-    PyObject *result = PyTuple_New(3);
-
-    if (result != NULL) {
-        if (self == NULL)
-            self = Py_None;
-        if (kw == NULL)
-            kw = Py_None;
-        Py_INCREF(self);
-        PyTuple_SET_ITEM(result, 0, self);
-        Py_INCREF(args);
-        PyTuple_SET_ITEM(result, 1, args);
-        Py_INCREF(kw);
-        PyTuple_SET_ITEM(result, 2, kw);
-    }
-    return result;
-}
-
-static PyMethodDef spamlist_methods[] = {
-    {"getstate", (PyCFunction)spamlist_getstate, METH_VARARGS,
-        PyDoc_STR("getstate() -> state")},
-    {"setstate", (PyCFunction)spamlist_setstate, METH_VARARGS,
-        PyDoc_STR("setstate(state)")},
-    /* These entries differ only in the flags; they are used by the tests
-       in test.test_descr. */
-    {"classmeth", (PyCFunction)spamlist_specialmeth,
-        METH_VARARGS | METH_KEYWORDS | METH_CLASS,
-        PyDoc_STR("classmeth(*args, **kw)")},
-    {"staticmeth", (PyCFunction)spamlist_specialmeth,
-        METH_VARARGS | METH_KEYWORDS | METH_STATIC,
-        PyDoc_STR("staticmeth(*args, **kw)")},
-    {NULL,      NULL},
-};
-
-static int
-spamlist_init(spamlistobject *self, PyObject *args, PyObject *kwds)
-{
-    if (PyList_Type.tp_init((PyObject *)self, args, kwds) < 0)
-        return -1;
-    self->state = 0;
-    return 0;
-}
-
-static PyObject *
-spamlist_state_get(spamlistobject *self)
-{
-    return PyInt_FromLong(self->state);
-}
-
-static PyGetSetDef spamlist_getsets[] = {
-    {"state", (getter)spamlist_state_get, NULL,
-     PyDoc_STR("an int variable for demonstration purposes")},
-    {0}
-};
-
-static PyTypeObject spamlist_type = {
-    PyVarObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type), 0)
-    "xxsubtype.spamlist",
-    sizeof(spamlistobject),
-    0,
-    0,                                          /* 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 */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
-    0,                                          /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    spamlist_methods,                           /* tp_methods */
-    0,                                          /* tp_members */
-    spamlist_getsets,                           /* tp_getset */
-    DEFERRED_ADDRESS(&PyList_Type),             /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    (initproc)spamlist_init,                    /* tp_init */
-    0,                                          /* tp_alloc */
-    0,                                          /* tp_new */
-};
-
-/* spamdict -- a dict subtype */
-
-typedef struct {
-    PyDictObject dict;
-    int state;
-} spamdictobject;
-
-static PyObject *
-spamdict_getstate(spamdictobject *self, PyObject *args)
-{
-    if (!PyArg_ParseTuple(args, ":getstate"))
-        return NULL;
-    return PyInt_FromLong(self->state);
-}
-
-static PyObject *
-spamdict_setstate(spamdictobject *self, PyObject *args)
-{
-    int state;
-
-    if (!PyArg_ParseTuple(args, "i:setstate", &state))
-        return NULL;
-    self->state = state;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyMethodDef spamdict_methods[] = {
-    {"getstate", (PyCFunction)spamdict_getstate, METH_VARARGS,
-        PyDoc_STR("getstate() -> state")},
-    {"setstate", (PyCFunction)spamdict_setstate, METH_VARARGS,
-        PyDoc_STR("setstate(state)")},
-    {NULL,      NULL},
-};
-
-static int
-spamdict_init(spamdictobject *self, PyObject *args, PyObject *kwds)
-{
-    if (PyDict_Type.tp_init((PyObject *)self, args, kwds) < 0)
-        return -1;
-    self->state = 0;
-    return 0;
-}
-
-static PyMemberDef spamdict_members[] = {
-    {"state", T_INT, offsetof(spamdictobject, state), READONLY,
-     PyDoc_STR("an int variable for demonstration purposes")},
-    {0}
-};
-
-static PyTypeObject spamdict_type = {
-    PyVarObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type), 0)
-    "xxsubtype.spamdict",
-    sizeof(spamdictobject),
-    0,
-    0,                                          /* 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 */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
-    0,                                          /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    spamdict_methods,                           /* tp_methods */
-    spamdict_members,                           /* tp_members */
-    0,                                          /* tp_getset */
-    DEFERRED_ADDRESS(&PyDict_Type),             /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    (initproc)spamdict_init,                    /* tp_init */
-    0,                                          /* tp_alloc */
-    0,                                          /* tp_new */
-};
-
-static PyObject *
-spam_bench(PyObject *self, PyObject *args)
-{
-    PyObject *obj, *name, *res;
-    int n = 1000;
-    time_t t0, t1;
-
-    if (!PyArg_ParseTuple(args, "OS|i", &obj, &name, &n))
-        return NULL;
-    t0 = clock();
-    while (--n >= 0) {
-        res = PyObject_GetAttr(obj, name);
-        if (res == NULL)
-            return NULL;
-        Py_DECREF(res);
-    }
-    t1 = clock();
-    return PyFloat_FromDouble((double)(t1-t0) / CLOCKS_PER_SEC);
-}
-
-static PyMethodDef xxsubtype_functions[] = {
-    {"bench",           spam_bench,     METH_VARARGS},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyMODINIT_FUNC
-initxxsubtype(void)
-{
-    PyObject *m;
-
-    /* Fill in deferred data addresses.  This must be done before
-       PyType_Ready() is called.  Note that PyType_Ready() automatically
-       initializes the ob.ob_type field to &PyType_Type if it's NULL,
-       so it's not necessary to fill in ob_type first. */
-    spamdict_type.tp_base = &PyDict_Type;
-    if (PyType_Ready(&spamdict_type) < 0)
-        return;
-
-    spamlist_type.tp_base = &PyList_Type;
-    if (PyType_Ready(&spamlist_type) < 0)
-        return;
-
-    m = Py_InitModule3("xxsubtype",
-                       xxsubtype_functions,
-                       xxsubtype__doc__);
-    if (m == NULL)
-        return;
-
-    if (PyType_Ready(&spamlist_type) < 0)
-        return;
-    if (PyType_Ready(&spamdict_type) < 0)
-        return;
-
-    Py_INCREF(&spamlist_type);
-    if (PyModule_AddObject(m, "spamlist",
-                           (PyObject *) &spamlist_type) < 0)
-        return;
-
-    Py_INCREF(&spamdict_type);
-    if (PyModule_AddObject(m, "spamdict",
-                           (PyObject *) &spamdict_type) < 0)
-        return;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/yuv.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/yuv.h
deleted file mode 100644
index 1be6e66..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/yuv.h
+++ /dev/null
@@ -1,99 +0,0 @@
-
-#ifndef Py_YUV_H
-#define Py_YUV_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * SVideo YUV 4:1:1 format.
- *
- * 4 consecutive quadwords describe 8 pixels on 2 lines, as depicted
- * below.  An array of (width/4) of the below structure describes 2
- * scan lines.
- *
- * +-------------------+
- * | 00 | 01 | 02 | 03 | . . .
- * +-------------------+
- * | 10 | 11 | 12 | 13 | . . .
- * +-------------------+
- */
-struct yuv411 {
-    struct {
-        unsigned int dummy:8;
-        unsigned int y0:8;
-        unsigned int u0:2;
-        unsigned int v0:2;
-        unsigned int y1:8;
-        unsigned int u1:2;
-        unsigned int v1:2;
-    } v[4];
-};
-
-#define YUV411_Y00(y)   (y).v[0].y0
-#define YUV411_Y01(y)   (y).v[1].y0
-#define YUV411_Y02(y)   (y).v[2].y0
-#define YUV411_Y03(y)   (y).v[3].y0
-#define YUV411_Y10(y)   (y).v[0].y1
-#define YUV411_Y11(y)   (y).v[1].y1
-#define YUV411_Y12(y)   (y).v[2].y1
-#define YUV411_Y13(y)   (y).v[3].y1
-#define YUV411_U00(y)   ((y).v[0].u0<<6|(y).v[1].u0<<4|(y).v[2].u0<<2|(y).v[3].u0)
-#define YUV411_U01(y)   YUV411_U00(y)
-#define YUV411_U02(y)   YUV411_U00(y)
-#define YUV411_U03(y)   YUV411_U00(y)
-#define YUV411_U10(y)   ((y).v[0].u1<<6|(y).v[1].u1<<4|(y).v[2].u1<<2|(y).v[3].u1)
-#define YUV411_U11(y)   YUV411_U10(y)
-#define YUV411_U12(y)   YUV411_U10(y)
-#define YUV411_U13(y)   YUV411_U10(y)
-#define YUV411_V00(y)   ((y).v[0].v0<<6|(y).v[1].v0<<4|(y).v[2].v0<<2|(y).v[3].v0)
-#define YUV411_V01(y)   YUV411_V00(y)
-#define YUV411_V02(y)   YUV411_V00(y)
-#define YUV411_V03(y)   YUV411_V00(y)
-#define YUV411_V10(y)   ((y).v[0].v1<<6|(y).v[1].v1<<4|(y).v[2].v1<<2|(y).v[3].v1)
-#define YUV411_V11(y)   YUV411_V10(y)
-#define YUV411_V12(y)   YUV411_V10(y)
-#define YUV411_V13(y)   YUV411_V10(y)
-
-/*
- * Compression Library YUV 4:2:2 format.
- *
- * 1 longword describes 2 pixels.
- *
- * +-------+
- * | 0 | 1 |
- * +-------+
- */
-struct yuv422 {
-    unsigned int u:8;
-    unsigned int y0:8;
-    unsigned int v:8;
-    unsigned int y1:8;
-};
-#define YUV422_Y0(y)    (y).y0
-#define YUV422_Y1(y)    (y).y1
-#define YUV422_U0(y)    (y).u
-#define YUV422_U1(y)    (y).u
-#define YUV422_V0(y)    (y).v
-#define YUV422_V1(y)    (y).v
-
-/*
- * Compression library YUV 4:2:2 Duplicate Chroma format.
- *
- * This is like the previous format, but the U and V values are
- * duplicated vertically (and hence there is some redundancy in the
- * data).  With other words, lines 2*n and 2*n+1 have the same U and V
- * values but different Y values.
- */
-
-/*
- * Conversion functions.
- */
-void yuv_sv411_to_cl422dc(int, void *, void *, int, int);
-void yuv_sv411_to_cl422dc_quartersize(int, void *, void *, int, int);
-void yuv_sv411_to_cl422dc_sixteenthsize(int, void *, void *, int, int);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_YUV_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/yuvconvert.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/yuvconvert.c
deleted file mode 100644
index 9fe02ee..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/yuvconvert.c
+++ /dev/null
@@ -1,118 +0,0 @@
-
-#include "yuv.h"
-
-void
-yuv_sv411_to_cl422dc(int invert, void *data, void *yuv, int width, int height)
-{
-    struct yuv411 *in = data;
-    struct yuv422 *out_even = yuv;
-    struct yuv422 *out_odd = out_even + width / 2;
-    int i, j;                   /* counters */
-
-    for (i = height / 2; i--; ) {
-        for (j = width / 4; j--; ) {
-            YUV422_Y0(*out_even) = YUV411_Y00(*in);
-            YUV422_U0(*out_even) = YUV411_U00(*in);
-            YUV422_V0(*out_even) = YUV411_V00(*in);
-            YUV422_Y1(*out_even) = YUV411_Y01(*in);
-            out_even++;
-            YUV422_Y0(*out_even) = YUV411_Y02(*in);
-            YUV422_U0(*out_even) = YUV411_U02(*in);
-            YUV422_V0(*out_even) = YUV411_V02(*in);
-            YUV422_Y1(*out_even) = YUV411_Y03(*in);
-            out_even++;
-            YUV422_Y0(*out_odd) = YUV411_Y10(*in);
-            YUV422_U0(*out_odd) = YUV411_U10(*in);
-            YUV422_V0(*out_odd) = YUV411_V10(*in);
-            YUV422_Y1(*out_odd) = YUV411_Y11(*in);
-            out_odd++;
-            YUV422_Y0(*out_odd) = YUV411_Y12(*in);
-            YUV422_U0(*out_odd) = YUV411_U12(*in);
-            YUV422_V0(*out_odd) = YUV411_V12(*in);
-            YUV422_Y1(*out_odd) = YUV411_Y13(*in);
-            out_odd++;
-            in++;
-        }
-        out_even += width / 2;
-        out_odd += width / 2;
-    }
-}
-
-void
-yuv_sv411_to_cl422dc_quartersize(int invert, void *data, void *yuv,
-                                 int width, int height)
-{
-    int w4 = width / 4;         /* quarter of width is used often */
-    struct yuv411 *in_even = data;
-    struct yuv411 *in_odd = in_even + w4;
-    struct yuv422 *out_even = yuv;
-    struct yuv422 *out_odd = out_even + w4;
-    int i, j;                   /* counters */
-    int u, v;                   /* U and V values */
-
-    for (i = height / 4; i--; ) {
-        for (j = w4; j--; ) {
-            u = YUV411_U00(*in_even);
-            v = YUV411_V00(*in_even);
-
-            YUV422_Y0(*out_even) = YUV411_Y00(*in_even);
-            YUV422_U0(*out_even) = u;
-            YUV422_V0(*out_even) = v;
-            YUV422_Y1(*out_even) = YUV411_Y02(*in_even);
-
-            YUV422_Y0(*out_odd) = YUV411_Y10(*in_odd);
-            YUV422_U0(*out_odd) = u;
-            YUV422_V0(*out_odd) = v;
-            YUV422_Y1(*out_odd) = YUV411_Y12(*in_odd);
-
-            in_even++;
-            in_odd++;
-            out_even++;
-            out_odd++;
-        }
-        in_even += w4;
-        in_odd += w4;
-        out_even += w4;
-        out_odd += w4;
-    }
-}
-
-void
-yuv_sv411_to_cl422dc_sixteenthsize(int invert, void *data, void *yuv,
-                                   int width, int height)
-{
-    int w4_3 = 3 * width / 4; /* three quarters of width is used often */
-    int w8 = width / 8;         /* and so is one eighth */
-    struct yuv411 *in_even = data;
-    struct yuv411 *in_odd = in_even + width / 2;
-    struct yuv422 *out_even = yuv;
-    struct yuv422 *out_odd = out_even + w8;
-    int i, j;                   /* counters */
-    int u, v;                   /* U and V values */
-
-    for (i = height / 8; i--; ) {
-        for (j = w8; j--; ) {
-            u = YUV411_U00(in_even[0]);
-            v = YUV411_V00(in_even[0]);
-
-            YUV422_Y0(*out_even) = YUV411_Y00(in_even[0]);
-            YUV422_U0(*out_even) = u;
-            YUV422_V0(*out_even) = v;
-            YUV422_Y1(*out_even) = YUV411_Y00(in_even[1]);
-
-            YUV422_Y0(*out_odd) = YUV411_Y00(in_odd[0]);
-            YUV422_U0(*out_odd) = u;
-            YUV422_V0(*out_odd) = v;
-            YUV422_Y1(*out_odd) = YUV411_Y00(in_even[1]);
-
-            in_even += 2;
-            in_odd += 2;
-            out_even++;
-            out_odd++;
-        }
-        in_even += w4_3;
-        in_odd += w4_3;
-        out_even += w8;
-        out_odd += w8;
-    }
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zipimport.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zipimport.c
deleted file mode 100644
index e770eb5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zipimport.c
+++ /dev/null
@@ -1,1229 +0,0 @@
-#include "Python.h"
-#include "structmember.h"
-#include "osdefs.h"
-#include "marshal.h"
-#include <time.h>
-
-
-#define IS_SOURCE   0x0
-#define IS_BYTECODE 0x1
-#define IS_PACKAGE  0x2
-
-struct st_zip_searchorder {
-    char suffix[14];
-    int type;
-};
-
-/* zip_searchorder defines how we search for a module in the Zip
-   archive: we first search for a package __init__, then for
-   non-package .pyc, .pyo and .py entries. The .pyc and .pyo entries
-   are swapped by initzipimport() if we run in optimized mode. Also,
-   '/' is replaced by SEP there. */
-static struct st_zip_searchorder zip_searchorder[] = {
-    {"/__init__.pyc", IS_PACKAGE | IS_BYTECODE},
-    {"/__init__.pyo", IS_PACKAGE | IS_BYTECODE},
-    {"/__init__.py", IS_PACKAGE | IS_SOURCE},
-    {".pyc", IS_BYTECODE},
-    {".pyo", IS_BYTECODE},
-    {".py", IS_SOURCE},
-    {"", 0}
-};
-
-/* zipimporter object definition and support */
-
-typedef struct _zipimporter ZipImporter;
-
-struct _zipimporter {
-    PyObject_HEAD
-    PyObject *archive;  /* pathname of the Zip archive */
-    PyObject *prefix;   /* file prefix: "a/sub/directory/" */
-    PyObject *files;    /* dict with file info {path: toc_entry} */
-};
-
-static PyObject *ZipImportError;
-static PyObject *zip_directory_cache = NULL;
-
-/* forward decls */
-static PyObject *read_directory(char *archive);
-static PyObject *get_data(char *archive, PyObject *toc_entry);
-static PyObject *get_module_code(ZipImporter *self, char *fullname,
-                                 int *p_ispackage, char **p_modpath);
-
-
-#define ZipImporter_Check(op) PyObject_TypeCheck(op, &ZipImporter_Type)
-
-
-/* zipimporter.__init__
-   Split the "subdirectory" from the Zip archive path, lookup a matching
-   entry in sys.path_importer_cache, fetch the file directory from there
-   if found, or else read it from the archive. */
-static int
-zipimporter_init(ZipImporter *self, PyObject *args, PyObject *kwds)
-{
-    char *path, *p, *prefix, buf[MAXPATHLEN+2];
-    size_t len;
-
-    if (!_PyArg_NoKeywords("zipimporter()", kwds))
-        return -1;
-
-    if (!PyArg_ParseTuple(args, "s:zipimporter",
-                          &path))
-        return -1;
-
-    len = strlen(path);
-    if (len == 0) {
-        PyErr_SetString(ZipImportError, "archive path is empty");
-        return -1;
-    }
-    if (len >= MAXPATHLEN) {
-        PyErr_SetString(ZipImportError,
-                        "archive path too long");
-        return -1;
-    }
-    strcpy(buf, path);
-
-#ifdef ALTSEP
-    for (p = buf; *p; p++) {
-        if (*p == ALTSEP)
-            *p = SEP;
-    }
-#endif
-
-    path = NULL;
-    prefix = NULL;
-    for (;;) {
-#ifndef RISCOS
-        struct stat statbuf;
-        int rv;
-
-        rv = stat(buf, &statbuf);
-        if (rv == 0) {
-            /* it exists */
-            if (S_ISREG(statbuf.st_mode))
-                /* it's a file */
-                path = buf;
-            break;
-        }
-#else
-        if (object_exists(buf)) {
-            /* it exists */
-            if (isfile(buf))
-                /* it's a file */
-                path = buf;
-            break;
-        }
-#endif
-        /* back up one path element */
-        p = strrchr(buf, SEP);
-        if (prefix != NULL)
-            *prefix = SEP;
-        if (p == NULL)
-            break;
-        *p = '\0';
-        prefix = p;
-    }
-    if (path != NULL) {
-        PyObject *files;
-        files = PyDict_GetItemString(zip_directory_cache, path);
-        if (files == NULL) {
-            files = read_directory(buf);
-            if (files == NULL)
-                return -1;
-            if (PyDict_SetItemString(zip_directory_cache, path,
-                                     files) != 0)
-                return -1;
-        }
-        else
-            Py_INCREF(files);
-        self->files = files;
-    }
-    else {
-        PyErr_SetString(ZipImportError, "not a Zip file");
-        return -1;
-    }
-
-    if (prefix == NULL)
-        prefix = "";
-    else {
-        prefix++;
-        len = strlen(prefix);
-        if (prefix[len-1] != SEP) {
-            /* add trailing SEP */
-            prefix[len] = SEP;
-            prefix[len + 1] = '\0';
-        }
-    }
-
-    self->archive = PyString_FromString(buf);
-    if (self->archive == NULL)
-        return -1;
-
-    self->prefix = PyString_FromString(prefix);
-    if (self->prefix == NULL)
-        return -1;
-
-    return 0;
-}
-
-/* GC support. */
-static int
-zipimporter_traverse(PyObject *obj, visitproc visit, void *arg)
-{
-    ZipImporter *self = (ZipImporter *)obj;
-    Py_VISIT(self->files);
-    return 0;
-}
-
-static void
-zipimporter_dealloc(ZipImporter *self)
-{
-    PyObject_GC_UnTrack(self);
-    Py_XDECREF(self->archive);
-    Py_XDECREF(self->prefix);
-    Py_XDECREF(self->files);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-static PyObject *
-zipimporter_repr(ZipImporter *self)
-{
-    char buf[500];
-    char *archive = "???";
-    char *prefix = "";
-
-    if (self->archive != NULL && PyString_Check(self->archive))
-        archive = PyString_AsString(self->archive);
-    if (self->prefix != NULL && PyString_Check(self->prefix))
-        prefix = PyString_AsString(self->prefix);
-    if (prefix != NULL && *prefix)
-        PyOS_snprintf(buf, sizeof(buf),
-                      "<zipimporter object \"%.300s%c%.150s\">",
-                      archive, SEP, prefix);
-    else
-        PyOS_snprintf(buf, sizeof(buf),
-                      "<zipimporter object \"%.300s\">",
-                      archive);
-    return PyString_FromString(buf);
-}
-
-/* return fullname.split(".")[-1] */
-static char *
-get_subname(char *fullname)
-{
-    char *subname = strrchr(fullname, '.');
-    if (subname == NULL)
-        subname = fullname;
-    else
-        subname++;
-    return subname;
-}
-
-/* Given a (sub)modulename, write the potential file path in the
-   archive (without extension) to the path buffer. Return the
-   length of the resulting string. */
-static int
-make_filename(char *prefix, char *name, char *path)
-{
-    size_t len;
-    char *p;
-
-    len = strlen(prefix);
-
-    /* self.prefix + name [+ SEP + "__init__"] + ".py[co]" */
-    if (len + strlen(name) + 13 >= MAXPATHLEN) {
-        PyErr_SetString(ZipImportError, "path too long");
-        return -1;
-    }
-
-    strcpy(path, prefix);
-    strcpy(path + len, name);
-    for (p = path + len; *p; p++) {
-        if (*p == '.')
-            *p = SEP;
-    }
-    len += strlen(name);
-    assert(len < INT_MAX);
-    return (int)len;
-}
-
-enum zi_module_info {
-    MI_ERROR,
-    MI_NOT_FOUND,
-    MI_MODULE,
-    MI_PACKAGE
-};
-
-/* Return some information about a module. */
-static enum zi_module_info
-get_module_info(ZipImporter *self, char *fullname)
-{
-    char *subname, path[MAXPATHLEN + 1];
-    int len;
-    struct st_zip_searchorder *zso;
-
-    subname = get_subname(fullname);
-
-    len = make_filename(PyString_AsString(self->prefix), subname, path);
-    if (len < 0)
-        return MI_ERROR;
-
-    for (zso = zip_searchorder; *zso->suffix; zso++) {
-        strcpy(path + len, zso->suffix);
-        if (PyDict_GetItemString(self->files, path) != NULL) {
-            if (zso->type & IS_PACKAGE)
-                return MI_PACKAGE;
-            else
-                return MI_MODULE;
-        }
-    }
-    return MI_NOT_FOUND;
-}
-
-/* Check whether we can satisfy the import of the module named by
-   'fullname'. Return self if we can, None if we can't. */
-static PyObject *
-zipimporter_find_module(PyObject *obj, PyObject *args)
-{
-    ZipImporter *self = (ZipImporter *)obj;
-    PyObject *path = NULL;
-    char *fullname;
-    enum zi_module_info mi;
-
-    if (!PyArg_ParseTuple(args, "s|O:zipimporter.find_module",
-                          &fullname, &path))
-        return NULL;
-
-    mi = get_module_info(self, fullname);
-    if (mi == MI_ERROR)
-        return NULL;
-    if (mi == MI_NOT_FOUND) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    Py_INCREF(self);
-    return (PyObject *)self;
-}
-
-/* Load and return the module named by 'fullname'. */
-static PyObject *
-zipimporter_load_module(PyObject *obj, PyObject *args)
-{
-    ZipImporter *self = (ZipImporter *)obj;
-    PyObject *code, *mod, *dict;
-    char *fullname, *modpath;
-    int ispackage;
-
-    if (!PyArg_ParseTuple(args, "s:zipimporter.load_module",
-                          &fullname))
-        return NULL;
-
-    code = get_module_code(self, fullname, &ispackage, &modpath);
-    if (code == NULL)
-        return NULL;
-
-    mod = PyImport_AddModule(fullname);
-    if (mod == NULL) {
-        Py_DECREF(code);
-        return NULL;
-    }
-    dict = PyModule_GetDict(mod);
-
-    /* mod.__loader__ = self */
-    if (PyDict_SetItemString(dict, "__loader__", (PyObject *)self) != 0)
-        goto error;
-
-    if (ispackage) {
-        /* add __path__ to the module *before* the code gets
-           executed */
-        PyObject *pkgpath, *fullpath;
-        char *prefix = PyString_AsString(self->prefix);
-        char *subname = get_subname(fullname);
-        int err;
-
-        fullpath = PyString_FromFormat("%s%c%s%s",
-                                PyString_AsString(self->archive),
-                                SEP,
-                                *prefix ? prefix : "",
-                                subname);
-        if (fullpath == NULL)
-            goto error;
-
-        pkgpath = Py_BuildValue("[O]", fullpath);
-        Py_DECREF(fullpath);
-        if (pkgpath == NULL)
-            goto error;
-        err = PyDict_SetItemString(dict, "__path__", pkgpath);
-        Py_DECREF(pkgpath);
-        if (err != 0)
-            goto error;
-    }
-    mod = PyImport_ExecCodeModuleEx(fullname, code, modpath);
-    Py_DECREF(code);
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("import %s # loaded from Zip %s\n",
-                          fullname, modpath);
-    return mod;
-error:
-    Py_DECREF(code);
-    Py_DECREF(mod);
-    return NULL;
-}
-
-/* Return a string matching __file__ for the named module */
-static PyObject *
-zipimporter_get_filename(PyObject *obj, PyObject *args)
-{
-    ZipImporter *self = (ZipImporter *)obj;
-    PyObject *code;
-    char *fullname, *modpath;
-    int ispackage;
-
-    if (!PyArg_ParseTuple(args, "s:zipimporter.get_filename",
-                         &fullname))
-    return NULL;
-
-    /* Deciding the filename requires working out where the code
-       would come from if the module was actually loaded */
-    code = get_module_code(self, fullname, &ispackage, &modpath);
-    if (code == NULL)
-    return NULL;
-    Py_DECREF(code); /* Only need the path info */
-
-    return PyString_FromString(modpath);
-}
-
-/* Return a bool signifying whether the module is a package or not. */
-static PyObject *
-zipimporter_is_package(PyObject *obj, PyObject *args)
-{
-    ZipImporter *self = (ZipImporter *)obj;
-    char *fullname;
-    enum zi_module_info mi;
-
-    if (!PyArg_ParseTuple(args, "s:zipimporter.is_package",
-                          &fullname))
-        return NULL;
-
-    mi = get_module_info(self, fullname);
-    if (mi == MI_ERROR)
-        return NULL;
-    if (mi == MI_NOT_FOUND) {
-        PyErr_Format(ZipImportError, "can't find module '%.200s'",
-                     fullname);
-        return NULL;
-    }
-    return PyBool_FromLong(mi == MI_PACKAGE);
-}
-
-static PyObject *
-zipimporter_get_data(PyObject *obj, PyObject *args)
-{
-    ZipImporter *self = (ZipImporter *)obj;
-    char *path;
-#ifdef ALTSEP
-    char *p, buf[MAXPATHLEN + 1];
-#endif
-    PyObject *toc_entry;
-    Py_ssize_t len;
-
-    if (!PyArg_ParseTuple(args, "s:zipimporter.get_data", &path))
-        return NULL;
-
-#ifdef ALTSEP
-    if (strlen(path) >= MAXPATHLEN) {
-        PyErr_SetString(ZipImportError, "path too long");
-        return NULL;
-    }
-    strcpy(buf, path);
-    for (p = buf; *p; p++) {
-        if (*p == ALTSEP)
-            *p = SEP;
-    }
-    path = buf;
-#endif
-    len = PyString_Size(self->archive);
-    if ((size_t)len < strlen(path) &&
-        strncmp(path, PyString_AsString(self->archive), len) == 0 &&
-        path[len] == SEP) {
-        path = path + len + 1;
-    }
-
-    toc_entry = PyDict_GetItemString(self->files, path);
-    if (toc_entry == NULL) {
-        PyErr_SetFromErrnoWithFilename(PyExc_IOError, path);
-        return NULL;
-    }
-    return get_data(PyString_AsString(self->archive), toc_entry);
-}
-
-static PyObject *
-zipimporter_get_code(PyObject *obj, PyObject *args)
-{
-    ZipImporter *self = (ZipImporter *)obj;
-    char *fullname;
-
-    if (!PyArg_ParseTuple(args, "s:zipimporter.get_code", &fullname))
-        return NULL;
-
-    return get_module_code(self, fullname, NULL, NULL);
-}
-
-static PyObject *
-zipimporter_get_source(PyObject *obj, PyObject *args)
-{
-    ZipImporter *self = (ZipImporter *)obj;
-    PyObject *toc_entry;
-    char *fullname, *subname, path[MAXPATHLEN+1];
-    int len;
-    enum zi_module_info mi;
-
-    if (!PyArg_ParseTuple(args, "s:zipimporter.get_source", &fullname))
-        return NULL;
-
-    mi = get_module_info(self, fullname);
-    if (mi == MI_ERROR)
-        return NULL;
-    if (mi == MI_NOT_FOUND) {
-        PyErr_Format(ZipImportError, "can't find module '%.200s'",
-                     fullname);
-        return NULL;
-    }
-    subname = get_subname(fullname);
-
-    len = make_filename(PyString_AsString(self->prefix), subname, path);
-    if (len < 0)
-        return NULL;
-
-    if (mi == MI_PACKAGE) {
-        path[len] = SEP;
-        strcpy(path + len + 1, "__init__.py");
-    }
-    else
-        strcpy(path + len, ".py");
-
-    toc_entry = PyDict_GetItemString(self->files, path);
-    if (toc_entry != NULL)
-        return get_data(PyString_AsString(self->archive), toc_entry);
-
-    /* we have the module, but no source */
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(doc_find_module,
-"find_module(fullname, path=None) -> self or None.\n\
-\n\
-Search for a module specified by 'fullname'. 'fullname' must be the\n\
-fully qualified (dotted) module name. It returns the zipimporter\n\
-instance itself if the module was found, or None if it wasn't.\n\
-The optional 'path' argument is ignored -- it's there for compatibility\n\
-with the importer protocol.");
-
-PyDoc_STRVAR(doc_load_module,
-"load_module(fullname) -> module.\n\
-\n\
-Load the module specified by 'fullname'. 'fullname' must be the\n\
-fully qualified (dotted) module name. It returns the imported\n\
-module, or raises ZipImportError if it wasn't found.");
-
-PyDoc_STRVAR(doc_get_data,
-"get_data(pathname) -> string with file data.\n\
-\n\
-Return the data associated with 'pathname'. Raise IOError if\n\
-the file wasn't found.");
-
-PyDoc_STRVAR(doc_is_package,
-"is_package(fullname) -> bool.\n\
-\n\
-Return True if the module specified by fullname is a package.\n\
-Raise ZipImportError if the module couldn't be found.");
-
-PyDoc_STRVAR(doc_get_code,
-"get_code(fullname) -> code object.\n\
-\n\
-Return the code object for the specified module. Raise ZipImportError\n\
-if the module couldn't be found.");
-
-PyDoc_STRVAR(doc_get_source,
-"get_source(fullname) -> source string.\n\
-\n\
-Return the source code for the specified module. Raise ZipImportError\n\
-if the module couldn't be found, return None if the archive does\n\
-contain the module, but has no source for it.");
-
-
-PyDoc_STRVAR(doc_get_filename,
-"get_filename(fullname) -> filename string.\n\
-\n\
-Return the filename for the specified module.");
-
-static PyMethodDef zipimporter_methods[] = {
-    {"find_module", zipimporter_find_module, METH_VARARGS,
-     doc_find_module},
-    {"load_module", zipimporter_load_module, METH_VARARGS,
-     doc_load_module},
-    {"get_data", zipimporter_get_data, METH_VARARGS,
-     doc_get_data},
-    {"get_code", zipimporter_get_code, METH_VARARGS,
-     doc_get_code},
-    {"get_source", zipimporter_get_source, METH_VARARGS,
-     doc_get_source},
-    {"get_filename", zipimporter_get_filename, METH_VARARGS,
-     doc_get_filename},
-    {"is_package", zipimporter_is_package, METH_VARARGS,
-     doc_is_package},
-    {NULL,              NULL}   /* sentinel */
-};
-
-static PyMemberDef zipimporter_members[] = {
-    {"archive",  T_OBJECT, offsetof(ZipImporter, archive),  READONLY},
-    {"prefix",   T_OBJECT, offsetof(ZipImporter, prefix),   READONLY},
-    {"_files",   T_OBJECT, offsetof(ZipImporter, files),    READONLY},
-    {NULL}
-};
-
-PyDoc_STRVAR(zipimporter_doc,
-"zipimporter(archivepath) -> zipimporter object\n\
-\n\
-Create a new zipimporter instance. 'archivepath' must be a path to\n\
-a zipfile, or to a specific path inside a zipfile. For example, it can be\n\
-'/tmp/myimport.zip', or '/tmp/myimport.zip/mydirectory', if mydirectory is a\n\
-valid directory inside the archive.\n\
-\n\
-'ZipImportError is raised if 'archivepath' doesn't point to a valid Zip\n\
-archive.\n\
-\n\
-The 'archive' attribute of zipimporter objects contains the name of the\n\
-zipfile targeted.");
-
-#define DEFERRED_ADDRESS(ADDR) 0
-
-static PyTypeObject ZipImporter_Type = {
-    PyVarObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type), 0)
-    "zipimport.zipimporter",
-    sizeof(ZipImporter),
-    0,                                          /* tp_itemsize */
-    (destructor)zipimporter_dealloc,            /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)zipimporter_repr,                 /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |
-        Py_TPFLAGS_HAVE_GC,                     /* tp_flags */
-    zipimporter_doc,                            /* tp_doc */
-    zipimporter_traverse,                       /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    zipimporter_methods,                        /* tp_methods */
-    zipimporter_members,                        /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    (initproc)zipimporter_init,                 /* tp_init */
-    PyType_GenericAlloc,                        /* tp_alloc */
-    PyType_GenericNew,                          /* tp_new */
-    PyObject_GC_Del,                            /* tp_free */
-};
-
-
-/* implementation */
-
-/* Given a buffer, return the long that is represented by the first
-   4 bytes, encoded as little endian. This partially reimplements
-   marshal.c:r_long() */
-static long
-get_long(unsigned char *buf) {
-    long x;
-    x =  buf[0];
-    x |= (long)buf[1] <<  8;
-    x |= (long)buf[2] << 16;
-    x |= (long)buf[3] << 24;
-#if SIZEOF_LONG > 4
-    /* Sign extension for 64-bit machines */
-    x |= -(x & 0x80000000L);
-#endif
-    return x;
-}
-
-/*
-   read_directory(archive) -> files dict (new reference)
-
-   Given a path to a Zip archive, build a dict, mapping file names
-   (local to the archive, using SEP as a separator) to toc entries.
-
-   A toc_entry is a tuple:
-
-       (__file__,      # value to use for __file__, available for all files
-    compress,      # compression kind; 0 for uncompressed
-    data_size,     # size of compressed data on disk
-    file_size,     # size of decompressed data
-    file_offset,   # offset of file header from start of archive
-    time,          # mod time of file (in dos format)
-    date,          # mod data of file (in dos format)
-    crc,           # crc checksum of the data
-       )
-
-   Directories can be recognized by the trailing SEP in the name,
-   data_size and file_offset are 0.
-*/
-static PyObject *
-read_directory(char *archive)
-{
-    PyObject *files = NULL;
-    FILE *fp;
-    long compress, crc, data_size, file_size, file_offset, date, time;
-    long header_offset, name_size, header_size, header_position;
-    long i, l, count;
-    size_t length;
-    char path[MAXPATHLEN + 5];
-    char name[MAXPATHLEN + 5];
-    char *p, endof_central_dir[22];
-    long arc_offset; /* offset from beginning of file to start of zip-archive */
-
-    if (strlen(archive) > MAXPATHLEN) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "Zip path name is too long");
-        return NULL;
-    }
-    strcpy(path, archive);
-
-    fp = fopen(archive, "rb");
-    if (fp == NULL) {
-        PyErr_Format(ZipImportError, "can't open Zip file: "
-                     "'%.200s'", archive);
-        return NULL;
-    }
-    fseek(fp, -22, SEEK_END);
-    header_position = ftell(fp);
-    if (fread(endof_central_dir, 1, 22, fp) != 22) {
-        fclose(fp);
-        PyErr_Format(ZipImportError, "can't read Zip file: "
-                     "'%.200s'", archive);
-        return NULL;
-    }
-    if (get_long((unsigned char *)endof_central_dir) != 0x06054B50) {
-        /* Bad: End of Central Dir signature */
-        fclose(fp);
-        PyErr_Format(ZipImportError, "not a Zip file: "
-                     "'%.200s'", archive);
-        return NULL;
-    }
-
-    header_size = get_long((unsigned char *)endof_central_dir + 12);
-    header_offset = get_long((unsigned char *)endof_central_dir + 16);
-    arc_offset = header_position - header_offset - header_size;
-    header_offset += arc_offset;
-
-    files = PyDict_New();
-    if (files == NULL)
-        goto error;
-
-    length = (long)strlen(path);
-    path[length] = SEP;
-
-    /* Start of Central Directory */
-    count = 0;
-    for (;;) {
-        PyObject *t;
-        int err;
-
-        fseek(fp, header_offset, 0);  /* Start of file header */
-        l = PyMarshal_ReadLongFromFile(fp);
-        if (l != 0x02014B50)
-            break;              /* Bad: Central Dir File Header */
-        fseek(fp, header_offset + 10, 0);
-        compress = PyMarshal_ReadShortFromFile(fp);
-        time = PyMarshal_ReadShortFromFile(fp);
-        date = PyMarshal_ReadShortFromFile(fp);
-        crc = PyMarshal_ReadLongFromFile(fp);
-        data_size = PyMarshal_ReadLongFromFile(fp);
-        file_size = PyMarshal_ReadLongFromFile(fp);
-        name_size = PyMarshal_ReadShortFromFile(fp);
-        header_size = 46 + name_size +
-           PyMarshal_ReadShortFromFile(fp) +
-           PyMarshal_ReadShortFromFile(fp);
-        fseek(fp, header_offset + 42, 0);
-        file_offset = PyMarshal_ReadLongFromFile(fp) + arc_offset;
-        if (name_size > MAXPATHLEN)
-            name_size = MAXPATHLEN;
-
-        p = name;
-        for (i = 0; i < name_size; i++) {
-            *p = (char)getc(fp);
-            if (*p == '/')
-                *p = SEP;
-            p++;
-        }
-        *p = 0;         /* Add terminating null byte */
-        header_offset += header_size;
-
-        strncpy(path + length + 1, name, MAXPATHLEN - length - 1);
-
-        t = Py_BuildValue("siiiiiii", path, compress, data_size,
-                          file_size, file_offset, time, date, crc);
-        if (t == NULL)
-            goto error;
-        err = PyDict_SetItemString(files, name, t);
-        Py_DECREF(t);
-        if (err != 0)
-            goto error;
-        count++;
-    }
-    fclose(fp);
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("# zipimport: found %ld names in %s\n",
-            count, archive);
-    return files;
-error:
-    fclose(fp);
-    Py_XDECREF(files);
-    return NULL;
-}
-
-/* Return the zlib.decompress function object, or NULL if zlib couldn't
-   be imported. The function is cached when found, so subsequent calls
-   don't import zlib again. */
-static PyObject *
-get_decompress_func(void)
-{
-    static int importing_zlib = 0;
-    PyObject *zlib;
-    PyObject *decompress;
-
-    if (importing_zlib != 0)
-        /* Someone has a zlib.py[co] in their Zip file;
-           let's avoid a stack overflow. */
-        return NULL;
-    importing_zlib = 1;
-    zlib = PyImport_ImportModuleNoBlock("zlib");
-    importing_zlib = 0;
-    if (zlib != NULL) {
-        decompress = PyObject_GetAttrString(zlib,
-                                            "decompress");
-        Py_DECREF(zlib);
-    }
-    else {
-        PyErr_Clear();
-        decompress = NULL;
-    }
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("# zipimport: zlib %s\n",
-            zlib != NULL ? "available": "UNAVAILABLE");
-    return decompress;
-}
-
-/* Given a path to a Zip file and a toc_entry, return the (uncompressed)
-   data as a new reference. */
-static PyObject *
-get_data(char *archive, PyObject *toc_entry)
-{
-    PyObject *raw_data, *data = NULL, *decompress;
-    char *buf;
-    FILE *fp;
-    int err;
-    Py_ssize_t bytes_read = 0;
-    long l;
-    char *datapath;
-    long compress, data_size, file_size, file_offset;
-    long time, date, crc;
-
-    if (!PyArg_ParseTuple(toc_entry, "slllllll", &datapath, &compress,
-                          &data_size, &file_size, &file_offset, &time,
-                          &date, &crc)) {
-        return NULL;
-    }
-
-    fp = fopen(archive, "rb");
-    if (!fp) {
-        PyErr_Format(PyExc_IOError,
-           "zipimport: can not open file %s", archive);
-        return NULL;
-    }
-
-    /* Check to make sure the local file header is correct */
-    fseek(fp, file_offset, 0);
-    l = PyMarshal_ReadLongFromFile(fp);
-    if (l != 0x04034B50) {
-        /* Bad: Local File Header */
-        PyErr_Format(ZipImportError,
-                     "bad local file header in %s",
-                     archive);
-        fclose(fp);
-        return NULL;
-    }
-    fseek(fp, file_offset + 26, 0);
-    l = 30 + PyMarshal_ReadShortFromFile(fp) +
-        PyMarshal_ReadShortFromFile(fp);        /* local header size */
-    file_offset += l;           /* Start of file data */
-
-    raw_data = PyString_FromStringAndSize((char *)NULL, compress == 0 ?
-                                          data_size : data_size + 1);
-    if (raw_data == NULL) {
-        fclose(fp);
-        return NULL;
-    }
-    buf = PyString_AsString(raw_data);
-
-    err = fseek(fp, file_offset, 0);
-    if (err == 0)
-        bytes_read = fread(buf, 1, data_size, fp);
-    fclose(fp);
-    if (err || bytes_read != data_size) {
-        PyErr_SetString(PyExc_IOError,
-                        "zipimport: can't read data");
-        Py_DECREF(raw_data);
-        return NULL;
-    }
-
-    if (compress != 0) {
-        buf[data_size] = 'Z';  /* saw this in zipfile.py */
-        data_size++;
-    }
-    buf[data_size] = '\0';
-
-    if (compress == 0)  /* data is not compressed */
-        return raw_data;
-
-    /* Decompress with zlib */
-    decompress = get_decompress_func();
-    if (decompress == NULL) {
-        PyErr_SetString(ZipImportError,
-                        "can't decompress data; "
-                        "zlib not available");
-        goto error;
-    }
-    data = PyObject_CallFunction(decompress, "Oi", raw_data, -15);
-    Py_DECREF(decompress);
-error:
-    Py_DECREF(raw_data);
-    return data;
-}
-
-/* Lenient date/time comparison function. The precision of the mtime
-   in the archive is lower than the mtime stored in a .pyc: we
-   must allow a difference of at most one second. */
-static int
-eq_mtime(time_t t1, time_t t2)
-{
-    time_t d = t1 - t2;
-    if (d < 0)
-        d = -d;
-    /* dostime only stores even seconds, so be lenient */
-    return d <= 1;
-}
-
-/* Given the contents of a .py[co] file in a buffer, unmarshal the data
-   and return the code object. Return None if it the magic word doesn't
-   match (we do this instead of raising an exception as we fall back
-   to .py if available and we don't want to mask other errors).
-   Returns a new reference. */
-static PyObject *
-unmarshal_code(char *pathname, PyObject *data, time_t mtime)
-{
-    PyObject *code;
-    char *buf = PyString_AsString(data);
-    Py_ssize_t size = PyString_Size(data);
-
-    if (size <= 9) {
-        PyErr_SetString(ZipImportError,
-                        "bad pyc data");
-        return NULL;
-    }
-
-    if (get_long((unsigned char *)buf) != PyImport_GetMagicNumber()) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# %s has bad magic\n",
-                              pathname);
-        Py_INCREF(Py_None);
-        return Py_None;  /* signal caller to try alternative */
-    }
-
-    if (mtime != 0 && !eq_mtime(get_long((unsigned char *)buf + 4),
-                                mtime)) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# %s has bad mtime\n",
-                              pathname);
-        Py_INCREF(Py_None);
-        return Py_None;  /* signal caller to try alternative */
-    }
-
-    code = PyMarshal_ReadObjectFromString(buf + 8, size - 8);
-    if (code == NULL)
-        return NULL;
-    if (!PyCode_Check(code)) {
-        Py_DECREF(code);
-        PyErr_Format(PyExc_TypeError,
-             "compiled module %.200s is not a code object",
-             pathname);
-        return NULL;
-    }
-    return code;
-}
-
-/* Replace any occurances of "\r\n?" in the input string with "\n".
-   This converts DOS and Mac line endings to Unix line endings.
-   Also append a trailing "\n" to be compatible with
-   PyParser_SimpleParseFile(). Returns a new reference. */
-static PyObject *
-normalize_line_endings(PyObject *source)
-{
-    char *buf, *q, *p = PyString_AsString(source);
-    PyObject *fixed_source;
-
-    if (!p)
-        return NULL;
-
-    /* one char extra for trailing \n and one for terminating \0 */
-    buf = (char *)PyMem_Malloc(PyString_Size(source) + 2);
-    if (buf == NULL) {
-        PyErr_SetString(PyExc_MemoryError,
-                        "zipimport: no memory to allocate "
-                        "source buffer");
-        return NULL;
-    }
-    /* replace "\r\n?" by "\n" */
-    for (q = buf; *p != '\0'; p++) {
-        if (*p == '\r') {
-            *q++ = '\n';
-            if (*(p + 1) == '\n')
-                p++;
-        }
-        else
-            *q++ = *p;
-    }
-    *q++ = '\n';  /* add trailing \n */
-    *q = '\0';
-    fixed_source = PyString_FromString(buf);
-    PyMem_Free(buf);
-    return fixed_source;
-}
-
-/* Given a string buffer containing Python source code, compile it
-   return and return a code object as a new reference. */
-static PyObject *
-compile_source(char *pathname, PyObject *source)
-{
-    PyObject *code, *fixed_source;
-
-    fixed_source = normalize_line_endings(source);
-    if (fixed_source == NULL)
-        return NULL;
-
-    code = Py_CompileString(PyString_AsString(fixed_source), pathname,
-                            Py_file_input);
-    Py_DECREF(fixed_source);
-    return code;
-}
-
-/* Convert the date/time values found in the Zip archive to a value
-   that's compatible with the time stamp stored in .pyc files. */
-static time_t
-parse_dostime(int dostime, int dosdate)
-{
-    struct tm stm;
-
-    memset((void *) &stm, '\0', sizeof(stm));
-
-    stm.tm_sec   =  (dostime        & 0x1f) * 2;
-    stm.tm_min   =  (dostime >> 5)  & 0x3f;
-    stm.tm_hour  =  (dostime >> 11) & 0x1f;
-    stm.tm_mday  =   dosdate        & 0x1f;
-    stm.tm_mon   = ((dosdate >> 5)  & 0x0f) - 1;
-    stm.tm_year  = ((dosdate >> 9)  & 0x7f) + 80;
-    stm.tm_isdst =   -1; /* wday/yday is ignored */
-
-    return mktime(&stm);
-}
-
-/* Given a path to a .pyc or .pyo file in the archive, return the
-   modification time of the matching .py file, or 0 if no source
-   is available. */
-static time_t
-get_mtime_of_source(ZipImporter *self, char *path)
-{
-    PyObject *toc_entry;
-    time_t mtime = 0;
-    Py_ssize_t lastchar = strlen(path) - 1;
-    char savechar = path[lastchar];
-    path[lastchar] = '\0';  /* strip 'c' or 'o' from *.py[co] */
-    toc_entry = PyDict_GetItemString(self->files, path);
-    if (toc_entry != NULL && PyTuple_Check(toc_entry) &&
-        PyTuple_Size(toc_entry) == 8) {
-        /* fetch the time stamp of the .py file for comparison
-           with an embedded pyc time stamp */
-        int time, date;
-        time = PyInt_AsLong(PyTuple_GetItem(toc_entry, 5));
-        date = PyInt_AsLong(PyTuple_GetItem(toc_entry, 6));
-        mtime = parse_dostime(time, date);
-    }
-    path[lastchar] = savechar;
-    return mtime;
-}
-
-/* Return the code object for the module named by 'fullname' from the
-   Zip archive as a new reference. */
-static PyObject *
-get_code_from_data(ZipImporter *self, int ispackage, int isbytecode,
-                   time_t mtime, PyObject *toc_entry)
-{
-    PyObject *data, *code;
-    char *modpath;
-    char *archive = PyString_AsString(self->archive);
-
-    if (archive == NULL)
-        return NULL;
-
-    data = get_data(archive, toc_entry);
-    if (data == NULL)
-        return NULL;
-
-    modpath = PyString_AsString(PyTuple_GetItem(toc_entry, 0));
-
-    if (isbytecode) {
-        code = unmarshal_code(modpath, data, mtime);
-    }
-    else {
-        code = compile_source(modpath, data);
-    }
-    Py_DECREF(data);
-    return code;
-}
-
-/* Get the code object associated with the module specified by
-   'fullname'. */
-static PyObject *
-get_module_code(ZipImporter *self, char *fullname,
-                int *p_ispackage, char **p_modpath)
-{
-    PyObject *toc_entry;
-    char *subname, path[MAXPATHLEN + 1];
-    int len;
-    struct st_zip_searchorder *zso;
-
-    subname = get_subname(fullname);
-
-    len = make_filename(PyString_AsString(self->prefix), subname, path);
-    if (len < 0)
-        return NULL;
-
-    for (zso = zip_searchorder; *zso->suffix; zso++) {
-        PyObject *code = NULL;
-
-        strcpy(path + len, zso->suffix);
-        if (Py_VerboseFlag > 1)
-            PySys_WriteStderr("# trying %s%c%s\n",
-                              PyString_AsString(self->archive),
-                              SEP, path);
-        toc_entry = PyDict_GetItemString(self->files, path);
-        if (toc_entry != NULL) {
-            time_t mtime = 0;
-            int ispackage = zso->type & IS_PACKAGE;
-            int isbytecode = zso->type & IS_BYTECODE;
-
-            if (isbytecode)
-                mtime = get_mtime_of_source(self, path);
-            if (p_ispackage != NULL)
-                *p_ispackage = ispackage;
-            code = get_code_from_data(self, ispackage,
-                                      isbytecode, mtime,
-                                      toc_entry);
-            if (code == Py_None) {
-                /* bad magic number or non-matching mtime
-                   in byte code, try next */
-                Py_DECREF(code);
-                continue;
-            }
-            if (code != NULL && p_modpath != NULL)
-                *p_modpath = PyString_AsString(
-                    PyTuple_GetItem(toc_entry, 0));
-            return code;
-        }
-    }
-    PyErr_Format(ZipImportError, "can't find module '%.200s'", fullname);
-    return NULL;
-}
-
-
-/* Module init */
-
-PyDoc_STRVAR(zipimport_doc,
-"zipimport provides support for importing Python modules from Zip archives.\n\
-\n\
-This module exports three objects:\n\
-- zipimporter: a class; its constructor takes a path to a Zip archive.\n\
-- ZipImportError: exception raised by zipimporter objects. It's a\n\
-  subclass of ImportError, so it can be caught as ImportError, too.\n\
-- _zip_directory_cache: a dict, mapping archive paths to zip directory\n\
-  info dicts, as used in zipimporter._files.\n\
-\n\
-It is usually not needed to use the zipimport module explicitly; it is\n\
-used by the builtin import mechanism for sys.path items that are paths\n\
-to Zip archives.");
-
-PyMODINIT_FUNC
-initzipimport(void)
-{
-    PyObject *mod;
-
-    if (PyType_Ready(&ZipImporter_Type) < 0)
-        return;
-
-    /* Correct directory separator */
-    zip_searchorder[0].suffix[0] = SEP;
-    zip_searchorder[1].suffix[0] = SEP;
-    zip_searchorder[2].suffix[0] = SEP;
-    if (Py_OptimizeFlag) {
-        /* Reverse *.pyc and *.pyo */
-        struct st_zip_searchorder tmp;
-        tmp = zip_searchorder[0];
-        zip_searchorder[0] = zip_searchorder[1];
-        zip_searchorder[1] = tmp;
-        tmp = zip_searchorder[3];
-        zip_searchorder[3] = zip_searchorder[4];
-        zip_searchorder[4] = tmp;
-    }
-
-    mod = Py_InitModule4("zipimport", NULL, zipimport_doc,
-                         NULL, PYTHON_API_VERSION);
-    if (mod == NULL)
-        return;
-
-    ZipImportError = PyErr_NewException("zipimport.ZipImportError",
-                                        PyExc_ImportError, NULL);
-    if (ZipImportError == NULL)
-        return;
-
-    Py_INCREF(ZipImportError);
-    if (PyModule_AddObject(mod, "ZipImportError",
-                           ZipImportError) < 0)
-        return;
-
-    Py_INCREF(&ZipImporter_Type);
-    if (PyModule_AddObject(mod, "zipimporter",
-                           (PyObject *)&ZipImporter_Type) < 0)
-        return;
-
-    zip_directory_cache = PyDict_New();
-    if (zip_directory_cache == NULL)
-        return;
-    Py_INCREF(zip_directory_cache);
-    if (PyModule_AddObject(mod, "_zip_directory_cache",
-                           zip_directory_cache) < 0)
-        return;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/ChangeLog b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/ChangeLog
deleted file mode 100644
index 1ac9463..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/ChangeLog
+++ /dev/null
@@ -1,855 +0,0 @@
-
-                ChangeLog file for zlib
-
-Changes in 1.2.3 (18 July 2005)
-- Apply security vulnerability fixes to contrib/infback9 as well
-- Clean up some text files (carriage returns, trailing space)
-- Update testzlib, vstudio, masmx64, and masmx86 in contrib [Vollant]
-
-Changes in 1.2.2.4 (11 July 2005)
-- Add inflatePrime() function for starting inflation at bit boundary
-- Avoid some Visual C warnings in deflate.c
-- Avoid more silly Visual C warnings in inflate.c and inftrees.c for 64-bit
-  compile
-- Fix some spelling errors in comments [Betts]
-- Correct inflateInit2() error return documentation in zlib.h
-- Added zran.c example of compressed data random access to examples
-  directory, shows use of inflatePrime()
-- Fix cast for assignments to strm->state in inflate.c and infback.c
-- Fix zlibCompileFlags() in zutil.c to use 1L for long shifts [Oberhumer]
-- Move declarations of gf2 functions to right place in crc32.c [Oberhumer]
-- Add cast in trees.c t avoid a warning [Oberhumer]
-- Avoid some warnings in fitblk.c, gun.c, gzjoin.c in examples [Oberhumer]
-- Update make_vms.com [Zinser]
-- Initialize state->write in inflateReset() since copied in inflate_fast()
-- Be more strict on incomplete code sets in inflate_table() and increase
-  ENOUGH and MAXD -- this repairs a possible security vulnerability for
-  invalid inflate input.  Thanks to Tavis Ormandy and Markus Oberhumer for
-  discovering the vulnerability and providing test cases.
-- Add ia64 support to configure for HP-UX [Smith]
-- Add error return to gzread() for format or i/o error [Levin]
-- Use malloc.h for OS/2 [Necasek]
-
-Changes in 1.2.2.3 (27 May 2005)
-- Replace 1U constants in inflate.c and inftrees.c for 64-bit compile
-- Typecast fread() return values in gzio.c [Vollant]
-- Remove trailing space in minigzip.c outmode (VC++ can't deal with it)
-- Fix crc check bug in gzread() after gzungetc() [Heiner]
-- Add the deflateTune() function to adjust internal compression parameters
-- Add a fast gzip decompressor, gun.c, to examples (use of inflateBack)
-- Remove an incorrect assertion in examples/zpipe.c
-- Add C++ wrapper in infback9.h [Donais]
-- Fix bug in inflateCopy() when decoding fixed codes
-- Note in zlib.h how much deflateSetDictionary() actually uses
-- Remove USE_DICT_HEAD in deflate.c (would mess up inflate if used)
-- Add _WIN32_WCE to define WIN32 in zconf.in.h [Spencer]
-- Don't include stderr.h or errno.h for _WIN32_WCE in zutil.h [Spencer]
-- Add gzdirect() function to indicate transparent reads
-- Update contrib/minizip [Vollant]
-- Fix compilation of deflate.c when both ASMV and FASTEST [Oberhumer]
-- Add casts in crc32.c to avoid warnings [Oberhumer]
-- Add contrib/masmx64 [Vollant]
-- Update contrib/asm586, asm686, masmx86, testzlib, vstudio [Vollant]
-
-Changes in 1.2.2.2 (30 December 2004)
-- Replace structure assignments in deflate.c and inflate.c with zmemcpy to
-  avoid implicit memcpy calls (portability for no-library compilation)
-- Increase sprintf() buffer size in gzdopen() to allow for large numbers
-- Add INFLATE_STRICT to check distances against zlib header
-- Improve WinCE errno handling and comments [Chang]
-- Remove comment about no gzip header processing in FAQ
-- Add Z_FIXED strategy option to deflateInit2() to force fixed trees
-- Add updated make_vms.com [Coghlan], update README
-- Create a new "examples" directory, move gzappend.c there, add zpipe.c,
-  fitblk.c, gzlog.[ch], gzjoin.c, and zlib_how.html.
-- Add FAQ entry and comments in deflate.c on uninitialized memory access
-- Add Solaris 9 make options in configure [Gilbert]
-- Allow strerror() usage in gzio.c for STDC
-- Fix DecompressBuf in contrib/delphi/ZLib.pas [ManChesTer]
-- Update contrib/masmx86/inffas32.asm and gvmat32.asm [Vollant]
-- Use z_off_t for adler32_combine() and crc32_combine() lengths
-- Make adler32() much faster for small len
-- Use OS_CODE in deflate() default gzip header
-
-Changes in 1.2.2.1 (31 October 2004)
-- Allow inflateSetDictionary() call for raw inflate
-- Fix inflate header crc check bug for file names and comments
-- Add deflateSetHeader() and gz_header structure for custom gzip headers
-- Add inflateGetheader() to retrieve gzip headers
-- Add crc32_combine() and adler32_combine() functions
-- Add alloc_func, free_func, in_func, out_func to Z_PREFIX list
-- Use zstreamp consistently in zlib.h (inflate_back functions)
-- Remove GUNZIP condition from definition of inflate_mode in inflate.h
-  and in contrib/inflate86/inffast.S [Truta, Anderson]
-- Add support for AMD64 in contrib/inflate86/inffas86.c [Anderson]
-- Update projects/README.projects and projects/visualc6 [Truta]
-- Update win32/DLL_FAQ.txt [Truta]
-- Avoid warning under NO_GZCOMPRESS in gzio.c; fix typo [Truta]
-- Deprecate Z_ASCII; use Z_TEXT instead [Truta]
-- Use a new algorithm for setting strm->data_type in trees.c [Truta]
-- Do not define an exit() prototype in zutil.c unless DEBUG defined
-- Remove prototype of exit() from zutil.c, example.c, minigzip.c [Truta]
-- Add comment in zlib.h for Z_NO_FLUSH parameter to deflate()
-- Fix Darwin build version identification [Peterson]
-
-Changes in 1.2.2 (3 October 2004)
-- Update zlib.h comments on gzip in-memory processing
-- Set adler to 1 in inflateReset() to support Java test suite [Walles]
-- Add contrib/dotzlib [Ravn]
-- Update win32/DLL_FAQ.txt [Truta]
-- Update contrib/minizip [Vollant]
-- Move contrib/visual-basic.txt to old/ [Truta]
-- Fix assembler builds in projects/visualc6/ [Truta]
-
-Changes in 1.2.1.2 (9 September 2004)
-- Update INDEX file
-- Fix trees.c to update strm->data_type (no one ever noticed!)
-- Fix bug in error case in inflate.c, infback.c, and infback9.c [Brown]
-- Add "volatile" to crc table flag declaration (for DYNAMIC_CRC_TABLE)
-- Add limited multitasking protection to DYNAMIC_CRC_TABLE
-- Add NO_vsnprintf for VMS in zutil.h [Mozilla]
-- Don't declare strerror() under VMS [Mozilla]
-- Add comment to DYNAMIC_CRC_TABLE to use get_crc_table() to initialize
-- Update contrib/ada [Anisimkov]
-- Update contrib/minizip [Vollant]
-- Fix configure to not hardcode directories for Darwin [Peterson]
-- Fix gzio.c to not return error on empty files [Brown]
-- Fix indentation; update version in contrib/delphi/ZLib.pas and
-  contrib/pascal/zlibpas.pas [Truta]
-- Update mkasm.bat in contrib/masmx86 [Truta]
-- Update contrib/untgz [Truta]
-- Add projects/README.projects [Truta]
-- Add project for MS Visual C++ 6.0 in projects/visualc6 [Cadieux, Truta]
-- Update win32/DLL_FAQ.txt [Truta]
-- Update list of Z_PREFIX symbols in zconf.h [Randers-Pehrson, Truta]
-- Remove an unnecessary assignment to curr in inftrees.c [Truta]
-- Add OS/2 to exe builds in configure [Poltorak]
-- Remove err dummy parameter in zlib.h [Kientzle]
-
-Changes in 1.2.1.1 (9 January 2004)
-- Update email address in README
-- Several FAQ updates
-- Fix a big fat bug in inftrees.c that prevented decoding valid
-  dynamic blocks with only literals and no distance codes --
-  Thanks to "Hot Emu" for the bug report and sample file
-- Add a note to puff.c on no distance codes case.
-
-Changes in 1.2.1 (17 November 2003)
-- Remove a tab in contrib/gzappend/gzappend.c
-- Update some interfaces in contrib for new zlib functions
-- Update zlib version number in some contrib entries
-- Add Windows CE definition for ptrdiff_t in zutil.h [Mai, Truta]
-- Support shared libraries on Hurd and KFreeBSD [Brown]
-- Fix error in NO_DIVIDE option of adler32.c
-
-Changes in 1.2.0.8 (4 November 2003)
-- Update version in contrib/delphi/ZLib.pas and contrib/pascal/zlibpas.pas
-- Add experimental NO_DIVIDE #define in adler32.c
-    - Possibly faster on some processors (let me know if it is)
-- Correct Z_BLOCK to not return on first inflate call if no wrap
-- Fix strm->data_type on inflate() return to correctly indicate EOB
-- Add deflatePrime() function for appending in the middle of a byte
-- Add contrib/gzappend for an example of appending to a stream
-- Update win32/DLL_FAQ.txt [Truta]
-- Delete Turbo C comment in README [Truta]
-- Improve some indentation in zconf.h [Truta]
-- Fix infinite loop on bad input in configure script [Church]
-- Fix gzeof() for concatenated gzip files [Johnson]
-- Add example to contrib/visual-basic.txt [Michael B.]
-- Add -p to mkdir's in Makefile.in [vda]
-- Fix configure to properly detect presence or lack of printf functions
-- Add AS400 support [Monnerat]
-- Add a little Cygwin support [Wilson]
-
-Changes in 1.2.0.7 (21 September 2003)
-- Correct some debug formats in contrib/infback9
-- Cast a type in a debug statement in trees.c
-- Change search and replace delimiter in configure from % to # [Beebe]
-- Update contrib/untgz to 0.2 with various fixes [Truta]
-- Add build support for Amiga [Nikl]
-- Remove some directories in old that have been updated to 1.2
-- Add dylib building for Mac OS X in configure and Makefile.in
-- Remove old distribution stuff from Makefile
-- Update README to point to DLL_FAQ.txt, and add comment on Mac OS X
-- Update links in README
-
-Changes in 1.2.0.6 (13 September 2003)
-- Minor FAQ updates
-- Update contrib/minizip to 1.00 [Vollant]
-- Remove test of gz functions in example.c when GZ_COMPRESS defined [Truta]
-- Update POSTINC comment for 68060 [Nikl]
-- Add contrib/infback9 with deflate64 decoding (unsupported)
-- For MVS define NO_vsnprintf and undefine FAR [van Burik]
-- Add pragma for fdopen on MVS [van Burik]
-
-Changes in 1.2.0.5 (8 September 2003)
-- Add OF to inflateBackEnd() declaration in zlib.h
-- Remember start when using gzdopen in the middle of a file
-- Use internal off_t counters in gz* functions to properly handle seeks
-- Perform more rigorous check for distance-too-far in inffast.c
-- Add Z_BLOCK flush option to return from inflate at block boundary
-- Set strm->data_type on return from inflate
-    - Indicate bits unused, if at block boundary, and if in last block
-- Replace size_t with ptrdiff_t in crc32.c, and check for correct size
-- Add condition so old NO_DEFLATE define still works for compatibility
-- FAQ update regarding the Windows DLL [Truta]
-- INDEX update: add qnx entry, remove aix entry [Truta]
-- Install zlib.3 into mandir [Wilson]
-- Move contrib/zlib_dll_FAQ.txt to win32/DLL_FAQ.txt; update [Truta]
-- Adapt the zlib interface to the new DLL convention guidelines [Truta]
-- Introduce ZLIB_WINAPI macro to allow the export of functions using
-  the WINAPI calling convention, for Visual Basic [Vollant, Truta]
-- Update msdos and win32 scripts and makefiles [Truta]
-- Export symbols by name, not by ordinal, in win32/zlib.def [Truta]
-- Add contrib/ada [Anisimkov]
-- Move asm files from contrib/vstudio/vc70_32 to contrib/asm386 [Truta]
-- Rename contrib/asm386 to contrib/masmx86 [Truta, Vollant]
-- Add contrib/masm686 [Truta]
-- Fix offsets in contrib/inflate86 and contrib/masmx86/inffas32.asm
-  [Truta, Vollant]
-- Update contrib/delphi; rename to contrib/pascal; add example [Truta]
-- Remove contrib/delphi2; add a new contrib/delphi [Truta]
-- Avoid inclusion of the nonstandard <memory.h> in contrib/iostream,
-  and fix some method prototypes [Truta]
-- Fix the ZCR_SEED2 constant to avoid warnings in contrib/minizip
-  [Truta]
-- Avoid the use of backslash (\) in contrib/minizip [Vollant]
-- Fix file time handling in contrib/untgz; update makefiles [Truta]
-- Update contrib/vstudio/vc70_32 to comply with the new DLL guidelines
-  [Vollant]
-- Remove contrib/vstudio/vc15_16 [Vollant]
-- Rename contrib/vstudio/vc70_32 to contrib/vstudio/vc7 [Truta]
-- Update README.contrib [Truta]
-- Invert the assignment order of match_head and s->prev[...] in
-  INSERT_STRING [Truta]
-- Compare TOO_FAR with 32767 instead of 32768, to avoid 16-bit warnings
-  [Truta]
-- Compare function pointers with 0, not with NULL or Z_NULL [Truta]
-- Fix prototype of syncsearch in inflate.c [Truta]
-- Introduce ASMINF macro to be enabled when using an ASM implementation
-  of inflate_fast [Truta]
-- Change NO_DEFLATE to NO_GZCOMPRESS [Truta]
-- Modify test_gzio in example.c to take a single file name as a
-  parameter [Truta]
-- Exit the example.c program if gzopen fails [Truta]
-- Add type casts around strlen in example.c [Truta]
-- Remove casting to sizeof in minigzip.c; give a proper type
-  to the variable compared with SUFFIX_LEN [Truta]
-- Update definitions of STDC and STDC99 in zconf.h [Truta]
-- Synchronize zconf.h with the new Windows DLL interface [Truta]
-- Use SYS16BIT instead of __32BIT__ to distinguish between
-  16- and 32-bit platforms [Truta]
-- Use far memory allocators in small 16-bit memory models for
-  Turbo C [Truta]
-- Add info about the use of ASMV, ASMINF and ZLIB_WINAPI in
-  zlibCompileFlags [Truta]
-- Cygwin has vsnprintf [Wilson]
-- In Windows16, OS_CODE is 0, as in MSDOS [Truta]
-- In Cygwin, OS_CODE is 3 (Unix), not 11 (Windows32) [Wilson]
-
-Changes in 1.2.0.4 (10 August 2003)
-- Minor FAQ updates
-- Be more strict when checking inflateInit2's windowBits parameter
-- Change NO_GUNZIP compile option to NO_GZIP to cover deflate as well
-- Add gzip wrapper option to deflateInit2 using windowBits
-- Add updated QNX rule in configure and qnx directory [Bonnefoy]
-- Make inflate distance-too-far checks more rigorous
-- Clean up FAR usage in inflate
-- Add casting to sizeof() in gzio.c and minigzip.c
-
-Changes in 1.2.0.3 (19 July 2003)
-- Fix silly error in gzungetc() implementation [Vollant]
-- Update contrib/minizip and contrib/vstudio [Vollant]
-- Fix printf format in example.c
-- Correct cdecl support in zconf.in.h [Anisimkov]
-- Minor FAQ updates
-
-Changes in 1.2.0.2 (13 July 2003)
-- Add ZLIB_VERNUM in zlib.h for numerical preprocessor comparisons
-- Attempt to avoid warnings in crc32.c for pointer-int conversion
-- Add AIX to configure, remove aix directory [Bakker]
-- Add some casts to minigzip.c
-- Improve checking after insecure sprintf() or vsprintf() calls
-- Remove #elif's from crc32.c
-- Change leave label to inf_leave in inflate.c and infback.c to avoid
-  library conflicts
-- Remove inflate gzip decoding by default--only enable gzip decoding by
-  special request for stricter backward compatibility
-- Add zlibCompileFlags() function to return compilation information
-- More typecasting in deflate.c to avoid warnings
-- Remove leading underscore from _Capital #defines [Truta]
-- Fix configure to link shared library when testing
-- Add some Windows CE target adjustments [Mai]
-- Remove #define ZLIB_DLL in zconf.h [Vollant]
-- Add zlib.3 [Rodgers]
-- Update RFC URL in deflate.c and algorithm.txt [Mai]
-- Add zlib_dll_FAQ.txt to contrib [Truta]
-- Add UL to some constants [Truta]
-- Update minizip and vstudio [Vollant]
-- Remove vestigial NEED_DUMMY_RETURN from zconf.in.h
-- Expand use of NO_DUMMY_DECL to avoid all dummy structures
-- Added iostream3 to contrib [Schwardt]
-- Replace rewind() with fseek() for WinCE [Truta]
-- Improve setting of zlib format compression level flags
-    - Report 0 for huffman and rle strategies and for level == 0 or 1
-    - Report 2 only for level == 6
-- Only deal with 64K limit when necessary at compile time [Truta]
-- Allow TOO_FAR check to be turned off at compile time [Truta]
-- Add gzclearerr() function [Souza]
-- Add gzungetc() function
-
-Changes in 1.2.0.1 (17 March 2003)
-- Add Z_RLE strategy for run-length encoding [Truta]
-    - When Z_RLE requested, restrict matches to distance one
-    - Update zlib.h, minigzip.c, gzopen(), gzdopen() for Z_RLE
-- Correct FASTEST compilation to allow level == 0
-- Clean up what gets compiled for FASTEST
-- Incorporate changes to zconf.in.h [Vollant]
-    - Refine detection of Turbo C need for dummy returns
-    - Refine ZLIB_DLL compilation
-    - Include additional header file on VMS for off_t typedef
-- Try to use _vsnprintf where it supplants vsprintf [Vollant]
-- Add some casts in inffast.c
-- Enchance comments in zlib.h on what happens if gzprintf() tries to
-  write more than 4095 bytes before compression
-- Remove unused state from inflateBackEnd()
-- Remove exit(0) from minigzip.c, example.c
-- Get rid of all those darn tabs
-- Add "check" target to Makefile.in that does the same thing as "test"
-- Add "mostlyclean" and "maintainer-clean" targets to Makefile.in
-- Update contrib/inflate86 [Anderson]
-- Update contrib/testzlib, contrib/vstudio, contrib/minizip [Vollant]
-- Add msdos and win32 directories with makefiles [Truta]
-- More additions and improvements to the FAQ
-
-Changes in 1.2.0 (9 March 2003)
-- New and improved inflate code
-    - About 20% faster
-    - Does not allocate 32K window unless and until needed
-    - Automatically detects and decompresses gzip streams
-    - Raw inflate no longer needs an extra dummy byte at end
-    - Added inflateBack functions using a callback interface--even faster
-      than inflate, useful for file utilities (gzip, zip)
-    - Added inflateCopy() function to record state for random access on
-      externally generated deflate streams (e.g. in gzip files)
-    - More readable code (I hope)
-- New and improved crc32()
-    - About 50% faster, thanks to suggestions from Rodney Brown
-- Add deflateBound() and compressBound() functions
-- Fix memory leak in deflateInit2()
-- Permit setting dictionary for raw deflate (for parallel deflate)
-- Fix const declaration for gzwrite()
-- Check for some malloc() failures in gzio.c
-- Fix bug in gzopen() on single-byte file 0x1f
-- Fix bug in gzread() on concatenated file with 0x1f at end of buffer
-  and next buffer doesn't start with 0x8b
-- Fix uncompress() to return Z_DATA_ERROR on truncated input
-- Free memory at end of example.c
-- Remove MAX #define in trees.c (conflicted with some libraries)
-- Fix static const's in deflate.c, gzio.c, and zutil.[ch]
-- Declare malloc() and free() in gzio.c if STDC not defined
-- Use malloc() instead of calloc() in zutil.c if int big enough
-- Define STDC for AIX
-- Add aix/ with approach for compiling shared library on AIX
-- Add HP-UX support for shared libraries in configure
-- Add OpenUNIX support for shared libraries in configure
-- Use $cc instead of gcc to build shared library
-- Make prefix directory if needed when installing
-- Correct Macintosh avoidance of typedef Byte in zconf.h
-- Correct Turbo C memory allocation when under Linux
-- Use libz.a instead of -lz in Makefile (assure use of compiled library)
-- Update configure to check for snprintf or vsnprintf functions and their
-  return value, warn during make if using an insecure function
-- Fix configure problem with compile-time knowledge of HAVE_UNISTD_H that
-  is lost when library is used--resolution is to build new zconf.h
-- Documentation improvements (in zlib.h):
-    - Document raw deflate and inflate
-    - Update RFCs URL
-    - Point out that zlib and gzip formats are different
-    - Note that Z_BUF_ERROR is not fatal
-    - Document string limit for gzprintf() and possible buffer overflow
-    - Note requirement on avail_out when flushing
-    - Note permitted values of flush parameter of inflate()
-- Add some FAQs (and even answers) to the FAQ
-- Add contrib/inflate86/ for x86 faster inflate
-- Add contrib/blast/ for PKWare Data Compression Library decompression
-- Add contrib/puff/ simple inflate for deflate format description
-
-Changes in 1.1.4 (11 March 2002)
-- ZFREE was repeated on same allocation on some error conditions.
-  This creates a security problem described in
-  http://www.zlib.org/advisory-2002-03-11.txt
-- Returned incorrect error (Z_MEM_ERROR) on some invalid data
-- Avoid accesses before window for invalid distances with inflate window
-  less than 32K.
-- force windowBits > 8 to avoid a bug in the encoder for a window size
-  of 256 bytes. (A complete fix will be available in 1.1.5).
-
-Changes in 1.1.3 (9 July 1998)
-- fix "an inflate input buffer bug that shows up on rare but persistent
-  occasions" (Mark)
-- fix gzread and gztell for concatenated .gz files (Didier Le Botlan)
-- fix gzseek(..., SEEK_SET) in write mode
-- fix crc check after a gzeek (Frank Faubert)
-- fix miniunzip when the last entry in a zip file is itself a zip file
-  (J Lillge)
-- add contrib/asm586 and contrib/asm686 (Brian Raiter)
-  See http://www.muppetlabs.com/~breadbox/software/assembly.html
-- add support for Delphi 3 in contrib/delphi (Bob Dellaca)
-- add support for C++Builder 3 and Delphi 3 in contrib/delphi2 (Davide Moretti)
-- do not exit prematurely in untgz if 0 at start of block (Magnus Holmgren)
-- use macro EXTERN instead of extern to support DLL for BeOS (Sander Stoks)
-- added a FAQ file
-
-- Support gzdopen on Mac with Metrowerks (Jason Linhart)
-- Do not redefine Byte on Mac (Brad Pettit & Jason Linhart)
-- define SEEK_END too if SEEK_SET is not defined (Albert Chin-A-Young)
-- avoid some warnings with Borland C (Tom Tanner)
-- fix a problem in contrib/minizip/zip.c for 16-bit MSDOS (Gilles Vollant)
-- emulate utime() for WIN32 in contrib/untgz  (Gilles Vollant)
-- allow several arguments to configure (Tim Mooney, Frodo Looijaard)
-- use libdir and includedir in Makefile.in (Tim Mooney)
-- support shared libraries on OSF1 V4 (Tim Mooney)
-- remove so_locations in "make clean"  (Tim Mooney)
-- fix maketree.c compilation error (Glenn, Mark)
-- Python interface to zlib now in Python 1.5 (Jeremy Hylton)
-- new Makefile.riscos (Rich Walker)
-- initialize static descriptors in trees.c for embedded targets (Nick Smith)
-- use "foo-gz" in example.c for RISCOS and VMS (Nick Smith)
-- add the OS/2 files in Makefile.in too (Andrew Zabolotny)
-- fix fdopen and halloc macros for Microsoft C 6.0 (Tom Lane)
-- fix maketree.c to allow clean compilation of inffixed.h (Mark)
-- fix parameter check in deflateCopy (Gunther Nikl)
-- cleanup trees.c, use compressed_len only in debug mode (Christian Spieler)
-- Many portability patches by Christian Spieler:
-  . zutil.c, zutil.h: added "const" for zmem*
-  . Make_vms.com: fixed some typos
-  . Make_vms.com: msdos/Makefile.*: removed zutil.h from some dependency lists
-  . msdos/Makefile.msc: remove "default rtl link library" info from obj files
-  . msdos/Makefile.*: use model-dependent name for the built zlib library
-  . msdos/Makefile.emx, nt/Makefile.emx, nt/Makefile.gcc:
-     new makefiles, for emx (DOS/OS2), emx&rsxnt and mingw32 (Windows 9x / NT)
-- use define instead of typedef for Bytef also for MSC small/medium (Tom Lane)
-- replace __far with _far for better portability (Christian Spieler, Tom Lane)
-- fix test for errno.h in configure (Tim Newsham)
-
-Changes in 1.1.2 (19 March 98)
-- added contrib/minzip, mini zip and unzip based on zlib (Gilles Vollant)
-  See http://www.winimage.com/zLibDll/unzip.html
-- preinitialize the inflate tables for fixed codes, to make the code
-  completely thread safe (Mark)
-- some simplifications and slight speed-up to the inflate code (Mark)
-- fix gzeof on non-compressed files (Allan Schrum)
-- add -std1 option in configure for OSF1 to fix gzprintf (Martin Mokrejs)
-- use default value of 4K for Z_BUFSIZE for 16-bit MSDOS (Tim Wegner + Glenn)
-- added os2/Makefile.def and os2/zlib.def (Andrew Zabolotny)
-- add shared lib support for UNIX_SV4.2MP (MATSUURA Takanori)
-- do not wrap extern "C" around system includes (Tom Lane)
-- mention zlib binding for TCL in README (Andreas Kupries)
-- added amiga/Makefile.pup for Amiga powerUP SAS/C PPC (Andreas Kleinert)
-- allow "make install prefix=..." even after configure (Glenn Randers-Pehrson)
-- allow "configure --prefix $HOME" (Tim Mooney)
-- remove warnings in example.c and gzio.c (Glenn Randers-Pehrson)
-- move Makefile.sas to amiga/Makefile.sas
-
-Changes in 1.1.1 (27 Feb 98)
-- fix macros _tr_tally_* in deflate.h for debug mode  (Glenn Randers-Pehrson)
-- remove block truncation heuristic which had very marginal effect for zlib
-  (smaller lit_bufsize than in gzip 1.2.4) and degraded a little the
-  compression ratio on some files. This also allows inlining _tr_tally for
-  matches in deflate_slow.
-- added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier)
-
-Changes in 1.1.0 (24 Feb 98)
-- do not return STREAM_END prematurely in inflate (John Bowler)
-- revert to the zlib 1.0.8 inflate to avoid the gcc 2.8.0 bug (Jeremy Buhler)
-- compile with -DFASTEST to get compression code optimized for speed only
-- in minigzip, try mmap'ing the input file first (Miguel Albrecht)
-- increase size of I/O buffers in minigzip.c and gzio.c (not a big gain
-  on Sun but significant on HP)
-
-- add a pointer to experimental unzip library in README (Gilles Vollant)
-- initialize variable gcc in configure (Chris Herborth)
-
-Changes in 1.0.9 (17 Feb 1998)
-- added gzputs and gzgets functions
-- do not clear eof flag in gzseek (Mark Diekhans)
-- fix gzseek for files in transparent mode (Mark Diekhans)
-- do not assume that vsprintf returns the number of bytes written (Jens Krinke)
-- replace EXPORT with ZEXPORT to avoid conflict with other programs
-- added compress2 in zconf.h, zlib.def, zlib.dnt
-- new asm code from Gilles Vollant in contrib/asm386
-- simplify the inflate code (Mark):
- . Replace ZALLOC's in huft_build() with single ZALLOC in inflate_blocks_new()
- . ZALLOC the length list in inflate_trees_fixed() instead of using stack
- . ZALLOC the value area for huft_build() instead of using stack
- . Simplify Z_FINISH check in inflate()
-
-- Avoid gcc 2.8.0 comparison bug a little differently than zlib 1.0.8
-- in inftrees.c, avoid cc -O bug on HP (Farshid Elahi)
-- in zconf.h move the ZLIB_DLL stuff earlier to avoid problems with
-  the declaration of FAR (Gilles VOllant)
-- install libz.so* with mode 755 (executable) instead of 644 (Marc Lehmann)
-- read_buf buf parameter of type Bytef* instead of charf*
-- zmemcpy parameters are of type Bytef*, not charf* (Joseph Strout)
-- do not redeclare unlink in minigzip.c for WIN32 (John Bowler)
-- fix check for presence of directories in "make install" (Ian Willis)
-
-Changes in 1.0.8 (27 Jan 1998)
-- fixed offsets in contrib/asm386/gvmat32.asm (Gilles Vollant)
-- fix gzgetc and gzputc for big endian systems (Markus Oberhumer)
-- added compress2() to allow setting the compression level
-- include sys/types.h to get off_t on some systems (Marc Lehmann & QingLong)
-- use constant arrays for the static trees in trees.c instead of computing
-  them at run time (thanks to Ken Raeburn for this suggestion). To create
-  trees.h, compile with GEN_TREES_H and run "make test".
-- check return code of example in "make test" and display result
-- pass minigzip command line options to file_compress
-- simplifying code of inflateSync to avoid gcc 2.8 bug
-
-- support CC="gcc -Wall" in configure -s (QingLong)
-- avoid a flush caused by ftell in gzopen for write mode (Ken Raeburn)
-- fix test for shared library support to avoid compiler warnings
-- zlib.lib -> zlib.dll in msdos/zlib.rc (Gilles Vollant)
-- check for TARGET_OS_MAC in addition to MACOS (Brad Pettit)
-- do not use fdopen for Metrowerks on Mac (Brad Pettit))
-- add checks for gzputc and gzputc in example.c
-- avoid warnings in gzio.c and deflate.c (Andreas Kleinert)
-- use const for the CRC table (Ken Raeburn)
-- fixed "make uninstall" for shared libraries
-- use Tracev instead of Trace in infblock.c
-- in example.c use correct compressed length for test_sync
-- suppress +vnocompatwarnings in configure for HPUX (not always supported)
-
-Changes in 1.0.7 (20 Jan 1998)
-- fix gzseek which was broken in write mode
-- return error for gzseek to negative absolute position
-- fix configure for Linux (Chun-Chung Chen)
-- increase stack space for MSC (Tim Wegner)
-- get_crc_table and inflateSyncPoint are EXPORTed (Gilles Vollant)
-- define EXPORTVA for gzprintf (Gilles Vollant)
-- added man page zlib.3 (Rick Rodgers)
-- for contrib/untgz, fix makedir() and improve Makefile
-
-- check gzseek in write mode in example.c
-- allocate extra buffer for seeks only if gzseek is actually called
-- avoid signed/unsigned comparisons (Tim Wegner, Gilles Vollant)
-- add inflateSyncPoint in zconf.h
-- fix list of exported functions in nt/zlib.dnt and mdsos/zlib.def
-
-Changes in 1.0.6 (19 Jan 1998)
-- add functions gzprintf, gzputc, gzgetc, gztell, gzeof, gzseek, gzrewind and
-  gzsetparams (thanks to Roland Giersig and Kevin Ruland for some of this code)
-- Fix a deflate bug occurring only with compression level 0 (thanks to
-  Andy Buckler for finding this one).
-- In minigzip, pass transparently also the first byte for .Z files.
-- return Z_BUF_ERROR instead of Z_OK if output buffer full in uncompress()
-- check Z_FINISH in inflate (thanks to Marc Schluper)
-- Implement deflateCopy (thanks to Adam Costello)
-- make static libraries by default in configure, add --shared option.
-- move MSDOS or Windows specific files to directory msdos
-- suppress the notion of partial flush to simplify the interface
-  (but the symbol Z_PARTIAL_FLUSH is kept for compatibility with 1.0.4)
-- suppress history buffer provided by application to simplify the interface
-  (this feature was not implemented anyway in 1.0.4)
-- next_in and avail_in must be initialized before calling inflateInit or
-  inflateInit2
-- add EXPORT in all exported functions (for Windows DLL)
-- added Makefile.nt (thanks to Stephen Williams)
-- added the unsupported "contrib" directory:
-   contrib/asm386/ by Gilles Vollant <info@winimage.com>
-        386 asm code replacing longest_match().
-   contrib/iostream/ by Kevin Ruland <kevin@rodin.wustl.edu>
-        A C++ I/O streams interface to the zlib gz* functions
-   contrib/iostream2/  by Tyge Løvset <Tyge.Lovset@cmr.no>
-        Another C++ I/O streams interface
-   contrib/untgz/  by "Pedro A. Aranda Guti\irrez" <paag@tid.es>
-        A very simple tar.gz file extractor using zlib
-   contrib/visual-basic.txt by Carlos Rios <c_rios@sonda.cl>
-        How to use compress(), uncompress() and the gz* functions from VB.
-- pass params -f (filtered data), -h (huffman only), -1 to -9 (compression
-  level) in minigzip (thanks to Tom Lane)
-
-- use const for rommable constants in deflate
-- added test for gzseek and gztell in example.c
-- add undocumented function inflateSyncPoint() (hack for Paul Mackerras)
-- add undocumented function zError to convert error code to string
-  (for Tim Smithers)
-- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code.
-- Use default memcpy for Symantec MSDOS compiler.
-- Add EXPORT keyword for check_func (needed for Windows DLL)
-- add current directory to LD_LIBRARY_PATH for "make test"
-- create also a link for libz.so.1
-- added support for FUJITSU UXP/DS (thanks to Toshiaki Nomura)
-- use $(SHAREDLIB) instead of libz.so in Makefile.in (for HPUX)
-- added -soname for Linux in configure (Chun-Chung Chen,
-- assign numbers to the exported functions in zlib.def (for Windows DLL)
-- add advice in zlib.h for best usage of deflateSetDictionary
-- work around compiler bug on Atari (cast Z_NULL in call of s->checkfn)
-- allow compilation with ANSI keywords only enabled for TurboC in large model
-- avoid "versionString"[0] (Borland bug)
-- add NEED_DUMMY_RETURN for Borland
-- use variable z_verbose for tracing in debug mode (L. Peter Deutsch).
-- allow compilation with CC
-- defined STDC for OS/2 (David Charlap)
-- limit external names to 8 chars for MVS (Thomas Lund)
-- in minigzip.c, use static buffers only for 16-bit systems
-- fix suffix check for "minigzip -d foo.gz"
-- do not return an error for the 2nd of two consecutive gzflush() (Felix Lee)
-- use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau)
-- added makelcc.bat for lcc-win32 (Tom St Denis)
-- in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe)
-- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion.
-- check for unistd.h in configure (for off_t)
-- remove useless check parameter in inflate_blocks_free
-- avoid useless assignment of s->check to itself in inflate_blocks_new
-- do not flush twice in gzclose (thanks to Ken Raeburn)
-- rename FOPEN as F_OPEN to avoid clash with /usr/include/sys/file.h
-- use NO_ERRNO_H instead of enumeration of operating systems with errno.h
-- work around buggy fclose on pipes for HP/UX
-- support zlib DLL with BORLAND C++ 5.0 (thanks to Glenn Randers-Pehrson)
-- fix configure if CC is already equal to gcc
-
-Changes in 1.0.5 (3 Jan 98)
-- Fix inflate to terminate gracefully when fed corrupted or invalid data
-- Use const for rommable constants in inflate
-- Eliminate memory leaks on error conditions in inflate
-- Removed some vestigial code in inflate
-- Update web address in README
-
-Changes in 1.0.4 (24 Jul 96)
-- In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF
-  bit, so the decompressor could decompress all the correct data but went
-  on to attempt decompressing extra garbage data. This affected minigzip too.
-- zlibVersion and gzerror return const char* (needed for DLL)
-- port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno)
-- use z_error only for DEBUG (avoid problem with DLLs)
-
-Changes in 1.0.3 (2 Jul 96)
-- use z_streamp instead of z_stream *, which is now a far pointer in MSDOS
-  small and medium models; this makes the library incompatible with previous
-  versions for these models. (No effect in large model or on other systems.)
-- return OK instead of BUF_ERROR if previous deflate call returned with
-  avail_out as zero but there is nothing to do
-- added memcmp for non STDC compilers
-- define NO_DUMMY_DECL for more Mac compilers (.h files merged incorrectly)
-- define __32BIT__ if __386__ or i386 is defined (pb. with Watcom and SCO)
-- better check for 16-bit mode MSC (avoids problem with Symantec)
-
-Changes in 1.0.2 (23 May 96)
-- added Windows DLL support
-- added a function zlibVersion (for the DLL support)
-- fixed declarations using Bytef in infutil.c (pb with MSDOS medium model)
-- Bytef is define's instead of typedef'd only for Borland C
-- avoid reading uninitialized memory in example.c
-- mention in README that the zlib format is now RFC1950
-- updated Makefile.dj2
-- added algorithm.doc
-
-Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion]
-- fix array overlay in deflate.c which sometimes caused bad compressed data
-- fix inflate bug with empty stored block
-- fix MSDOS medium model which was broken in 0.99
-- fix deflateParams() which could generated bad compressed data.
-- Bytef is define'd instead of typedef'ed (work around Borland bug)
-- added an INDEX file
-- new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32),
-  Watcom (Makefile.wat), Amiga SAS/C (Makefile.sas)
-- speed up adler32 for modern machines without auto-increment
-- added -ansi for IRIX in configure
-- static_init_done in trees.c is an int
-- define unlink as delete for VMS
-- fix configure for QNX
-- add configure branch for SCO and HPUX
-- avoid many warnings (unused variables, dead assignments, etc...)
-- no fdopen for BeOS
-- fix the Watcom fix for 32 bit mode (define FAR as empty)
-- removed redefinition of Byte for MKWERKS
-- work around an MWKERKS bug (incorrect merge of all .h files)
-
-Changes in 0.99 (27 Jan 96)
-- allow preset dictionary shared between compressor and decompressor
-- allow compression level 0 (no compression)
-- add deflateParams in zlib.h: allow dynamic change of compression level
-  and compression strategy.
-- test large buffers and deflateParams in example.c
-- add optional "configure" to build zlib as a shared library
-- suppress Makefile.qnx, use configure instead
-- fixed deflate for 64-bit systems (detected on Cray)
-- fixed inflate_blocks for 64-bit systems (detected on Alpha)
-- declare Z_DEFLATED in zlib.h (possible parameter for deflateInit2)
-- always return Z_BUF_ERROR when deflate() has nothing to do
-- deflateInit and inflateInit are now macros to allow version checking
-- prefix all global functions and types with z_ with -DZ_PREFIX
-- make falloc completely reentrant (inftrees.c)
-- fixed very unlikely race condition in ct_static_init
-- free in reverse order of allocation to help memory manager
-- use zlib-1.0/* instead of zlib/* inside the tar.gz
-- make zlib warning-free with "gcc -O3 -Wall -Wwrite-strings -Wpointer-arith
-  -Wconversion -Wstrict-prototypes -Wmissing-prototypes"
-- allow gzread on concatenated .gz files
-- deflateEnd now returns Z_DATA_ERROR if it was premature
-- deflate is finally (?) fully deterministic (no matches beyond end of input)
-- Document Z_SYNC_FLUSH
-- add uninstall in Makefile
-- Check for __cpluplus in zlib.h
-- Better test in ct_align for partial flush
-- avoid harmless warnings for Borland C++
-- initialize hash_head in deflate.c
-- avoid warning on fdopen (gzio.c) for HP cc -Aa
-- include stdlib.h for STDC compilers
-- include errno.h for Cray
-- ignore error if ranlib doesn't exist
-- call ranlib twice for NeXTSTEP
-- use exec_prefix instead of prefix for libz.a
-- renamed ct_* as _tr_* to avoid conflict with applications
-- clear z->msg in inflateInit2 before any error return
-- initialize opaque in example.c, gzio.c, deflate.c and inflate.c
-- fixed typo in zconf.h (_GNUC__ => __GNUC__)
-- check for WIN32 in zconf.h and zutil.c (avoid farmalloc in 32-bit mode)
-- fix typo in Make_vms.com (f$trnlnm -> f$getsyi)
-- in fcalloc, normalize pointer if size > 65520 bytes
-- don't use special fcalloc for 32 bit Borland C++
-- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc...
-- use Z_BINARY instead of BINARY
-- document that gzclose after gzdopen will close the file
-- allow "a" as mode in gzopen.
-- fix error checking in gzread
-- allow skipping .gz extra-field on pipes
-- added reference to Perl interface in README
-- put the crc table in FAR data (I dislike more and more the medium model :)
-- added get_crc_table
-- added a dimension to all arrays (Borland C can't count).
-- workaround Borland C bug in declaration of inflate_codes_new & inflate_fast
-- guard against multiple inclusion of *.h (for precompiled header on Mac)
-- Watcom C pretends to be Microsoft C small model even in 32 bit mode.
-- don't use unsized arrays to avoid silly warnings by Visual C++:
-     warning C4746: 'inflate_mask' : unsized array treated as  '__far'
-     (what's wrong with far data in far model?).
-- define enum out of inflate_blocks_state to allow compilation with C++
-
-Changes in 0.95 (16 Aug 95)
-- fix MSDOS small and medium model (now easier to adapt to any compiler)
-- inlined send_bits
-- fix the final (:-) bug for deflate with flush (output was correct but
-  not completely flushed in rare occasions).
-- default window size is same for compression and decompression
-  (it's now sufficient to set MAX_WBITS in zconf.h).
-- voidp -> voidpf and voidnp -> voidp (for consistency with other
-  typedefs and because voidnp was not near in large model).
-
-Changes in 0.94 (13 Aug 95)
-- support MSDOS medium model
-- fix deflate with flush (could sometimes generate bad output)
-- fix deflateReset (zlib header was incorrectly suppressed)
-- added support for VMS
-- allow a compression level in gzopen()
-- gzflush now calls fflush
-- For deflate with flush, flush even if no more input is provided.
-- rename libgz.a as libz.a
-- avoid complex expression in infcodes.c triggering Turbo C bug
-- work around a problem with gcc on Alpha (in INSERT_STRING)
-- don't use inline functions (problem with some gcc versions)
-- allow renaming of Byte, uInt, etc... with #define.
-- avoid warning about (unused) pointer before start of array in deflate.c
-- avoid various warnings in gzio.c, example.c, infblock.c, adler32.c, zutil.c
-- avoid reserved word 'new' in trees.c
-
-Changes in 0.93 (25 June 95)
-- temporarily disable inline functions
-- make deflate deterministic
-- give enough lookahead for PARTIAL_FLUSH
-- Set binary mode for stdin/stdout in minigzip.c for OS/2
-- don't even use signed char in inflate (not portable enough)
-- fix inflate memory leak for segmented architectures
-
-Changes in 0.92 (3 May 95)
-- don't assume that char is signed (problem on SGI)
-- Clear bit buffer when starting a stored block
-- no memcpy on Pyramid
-- suppressed inftest.c
-- optimized fill_window, put longest_match inline for gcc
-- optimized inflate on stored blocks.
-- untabify all sources to simplify patches
-
-Changes in 0.91 (2 May 95)
-- Default MEM_LEVEL is 8 (not 9 for Unix) as documented in zlib.h
-- Document the memory requirements in zconf.h
-- added "make install"
-- fix sync search logic in inflateSync
-- deflate(Z_FULL_FLUSH) now works even if output buffer too short
-- after inflateSync, don't scare people with just "lo world"
-- added support for DJGPP
-
-Changes in 0.9 (1 May 95)
-- don't assume that zalloc clears the allocated memory (the TurboC bug
-  was Mark's bug after all :)
-- let again gzread copy uncompressed data unchanged (was working in 0.71)
-- deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented
-- added a test of inflateSync in example.c
-- moved MAX_WBITS to zconf.h because users might want to change that.
-- document explicitly that zalloc(64K) on MSDOS must return a normalized
-  pointer (zero offset)
-- added Makefiles for Microsoft C, Turbo C, Borland C++
-- faster crc32()
-
-Changes in 0.8 (29 April 95)
-- added fast inflate (inffast.c)
-- deflate(Z_FINISH) now returns Z_STREAM_END when done. Warning: this
-  is incompatible with previous versions of zlib which returned Z_OK.
-- work around a TurboC compiler bug (bad code for b << 0, see infutil.h)
-  (actually that was not a compiler bug, see 0.81 above)
-- gzread no longer reads one extra byte in certain cases
-- In gzio destroy(), don't reference a freed structure
-- avoid many warnings for MSDOS
-- avoid the ERROR symbol which is used by MS Windows
-
-Changes in 0.71 (14 April 95)
-- Fixed more MSDOS compilation problems :( There is still a bug with
-  TurboC large model.
-
-Changes in 0.7 (14 April 95)
-- Added full inflate support.
-- Simplified the crc32() interface. The pre- and post-conditioning
-  (one's complement) is now done inside crc32(). WARNING: this is
-  incompatible with previous versions; see zlib.h for the new usage.
-
-Changes in 0.61 (12 April 95)
-- workaround for a bug in TurboC. example and minigzip now work on MSDOS.
-
-Changes in 0.6 (11 April 95)
-- added minigzip.c
-- added gzdopen to reopen a file descriptor as gzFile
-- added transparent reading of non-gziped files in gzread.
-- fixed bug in gzread (don't read crc as data)
-- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose).
-- don't allocate big arrays in the stack (for MSDOS)
-- fix some MSDOS compilation problems
-
-Changes in 0.5:
-- do real compression in deflate.c. Z_PARTIAL_FLUSH is supported but
-  not yet Z_FULL_FLUSH.
-- support decompression but only in a single step (forced Z_FINISH)
-- added opaque object for zalloc and zfree.
-- added deflateReset and inflateReset
-- added a variable zlib_version for consistency checking.
-- renamed the 'filter' parameter of deflateInit2 as 'strategy'.
-  Added Z_FILTERED and Z_HUFFMAN_ONLY constants.
-
-Changes in 0.4:
-- avoid "zip" everywhere, use zlib instead of ziplib.
-- suppress Z_BLOCK_FLUSH, interpret Z_PARTIAL_FLUSH as block flush
-  if compression method == 8.
-- added adler32 and crc32
-- renamed deflateOptions as deflateInit2, call one or the other but not both
-- added the method parameter for deflateInit2.
-- added inflateInit2
-- simplied considerably deflateInit and inflateInit by not supporting
-  user-provided history buffer. This is supported only in deflateInit2
-  and inflateInit2.
-
-Changes in 0.3:
-- prefix all macro names with Z_
-- use Z_FINISH instead of deflateEnd to finish compression.
-- added Z_HUFFMAN_ONLY
-- added gzerror()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/FAQ b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/FAQ
deleted file mode 100644
index 15d0436..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/FAQ
+++ /dev/null
@@ -1,339 +0,0 @@
-
-                Frequently Asked Questions about zlib
-
-
-If your question is not there, please check the zlib home page
-http://www.zlib.org which may have more recent information.
-The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html
-
-
- 1. Is zlib Y2K-compliant?
-
-    Yes. zlib doesn't handle dates.
-
- 2. Where can I get a Windows DLL version?
-
-    The zlib sources can be compiled without change to produce a DLL.
-    See the file win32/DLL_FAQ.txt in the zlib distribution.
-    Pointers to the precompiled DLL are found in the zlib web site at
-    http://www.zlib.org.
-
- 3. Where can I get a Visual Basic interface to zlib?
-
-    See
-        * http://www.dogma.net/markn/articles/zlibtool/zlibtool.htm
-        * contrib/visual-basic.txt in the zlib distribution
-        * win32/DLL_FAQ.txt in the zlib distribution
-
- 4. compress() returns Z_BUF_ERROR.
-
-    Make sure that before the call of compress, the length of the compressed
-    buffer is equal to the total size of the compressed buffer and not
-    zero. For Visual Basic, check that this parameter is passed by reference
-    ("as any"), not by value ("as long").
-
- 5. deflate() or inflate() returns Z_BUF_ERROR.
-
-    Before making the call, make sure that avail_in and avail_out are not
-    zero. When setting the parameter flush equal to Z_FINISH, also make sure
-    that avail_out is big enough to allow processing all pending input.
-    Note that a Z_BUF_ERROR is not fatal--another call to deflate() or
-    inflate() can be made with more input or output space. A Z_BUF_ERROR
-    may in fact be unavoidable depending on how the functions are used, since
-    it is not possible to tell whether or not there is more output pending
-    when strm.avail_out returns with zero.
-
- 6. Where's the zlib documentation (man pages, etc.)?
-
-    It's in zlib.h for the moment, and Francis S. Lin has converted it to a
-    web page zlib.html. Volunteers to transform this to Unix-style man pages,
-    please contact us (zlib@gzip.org). Examples of zlib usage are in the files
-    example.c and minigzip.c.
-
- 7. Why don't you use GNU autoconf or libtool or ...?
-
-    Because we would like to keep zlib as a very small and simple
-    package. zlib is rather portable and doesn't need much configuration.
-
- 8. I found a bug in zlib.
-
-    Most of the time, such problems are due to an incorrect usage of
-    zlib. Please try to reproduce the problem with a small program and send
-    the corresponding source to us at zlib@gzip.org . Do not send
-    multi-megabyte data files without prior agreement.
-
- 9. Why do I get "undefined reference to gzputc"?
-
-    If "make test" produces something like
-
-       example.o(.text+0x154): undefined reference to `gzputc'
-
-    check that you don't have old files libz.* in /usr/lib, /usr/local/lib or
-    /usr/X11R6/lib. Remove any old versions, then do "make install".
-
-10. I need a Delphi interface to zlib.
-
-    See the contrib/delphi directory in the zlib distribution.
-
-11. Can zlib handle .zip archives?
-
-    Not by itself, no.  See the directory contrib/minizip in the zlib
-    distribution.
-
-12. Can zlib handle .Z files?
-
-    No, sorry. You have to spawn an uncompress or gunzip subprocess, or adapt
-    the code of uncompress on your own.
-
-13. How can I make a Unix shared library?
-
-    make clean
-    ./configure -s
-    make
-
-14. How do I install a shared zlib library on Unix?
-
-    After the above, then:
-
-    make install
-
-    However, many flavors of Unix come with a shared zlib already installed.
-    Before going to the trouble of compiling a shared version of zlib and
-    trying to install it, you may want to check if it's already there! If you
-    can #include <zlib.h>, it's there. The -lz option will probably link to it.
-
-15. I have a question about OttoPDF.
-
-    We are not the authors of OttoPDF. The real author is on the OttoPDF web
-    site: Joel Hainley, jhainley@myndkryme.com.
-
-16. Can zlib decode Flate data in an Adobe PDF file?
-
-    Yes. See http://www.fastio.com/ (ClibPDF), or http://www.pdflib.com/ .
-    To modify PDF forms, see http://sourceforge.net/projects/acroformtool/ .
-
-17. Why am I getting this "register_frame_info not found" error on Solaris?
-
-    After installing zlib 1.1.4 on Solaris 2.6, running applications using zlib
-    generates an error such as:
-
-        ld.so.1: rpm: fatal: relocation error: file /usr/local/lib/libz.so:
-        symbol __register_frame_info: referenced symbol not found
-
-    The symbol __register_frame_info is not part of zlib, it is generated by
-    the C compiler (cc or gcc). You must recompile applications using zlib
-    which have this problem. This problem is specific to Solaris. See
-    http://www.sunfreeware.com for Solaris versions of zlib and applications
-    using zlib.
-
-18. Why does gzip give an error on a file I make with compress/deflate?
-
-    The compress and deflate functions produce data in the zlib format, which
-    is different and incompatible with the gzip format. The gz* functions in
-    zlib on the other hand use the gzip format. Both the zlib and gzip
-    formats use the same compressed data format internally, but have different
-    headers and trailers around the compressed data.
-
-19. Ok, so why are there two different formats?
-
-    The gzip format was designed to retain the directory information about
-    a single file, such as the name and last modification date. The zlib
-    format on the other hand was designed for in-memory and communication
-    channel applications, and has a much more compact header and trailer and
-    uses a faster integrity check than gzip.
-
-20. Well that's nice, but how do I make a gzip file in memory?
-
-    You can request that deflate write the gzip format instead of the zlib
-    format using deflateInit2(). You can also request that inflate decode
-    the gzip format using inflateInit2(). Read zlib.h for more details.
-
-21. Is zlib thread-safe?
-
-    Yes. However any library routines that zlib uses and any application-
-    provided memory allocation routines must also be thread-safe. zlib's gz*
-    functions use stdio library routines, and most of zlib's functions use the
-    library memory allocation routines by default. zlib's Init functions allow
-    for the application to provide custom memory allocation routines.
-
-    Of course, you should only operate on any given zlib or gzip stream from a
-    single thread at a time.
-
-22. Can I use zlib in my commercial application?
-
-    Yes. Please read the license in zlib.h.
-
-23. Is zlib under the GNU license?
-
-    No. Please read the license in zlib.h.
-
-24. The license says that altered source versions must be "plainly marked". So
-    what exactly do I need to do to meet that requirement?
-
-    You need to change the ZLIB_VERSION and ZLIB_VERNUM #defines in zlib.h. In
-    particular, the final version number needs to be changed to "f", and an
-    identification string should be appended to ZLIB_VERSION. Version numbers
-    x.x.x.f are reserved for modifications to zlib by others than the zlib
-    maintainers. For example, if the version of the base zlib you are altering
-    is "1.2.3.4", then in zlib.h you should change ZLIB_VERNUM to 0x123f, and
-    ZLIB_VERSION to something like "1.2.3.f-zachary-mods-v3". You can also
-    update the version strings in deflate.c and inftrees.c.
-
-    For altered source distributions, you should also note the origin and
-    nature of the changes in zlib.h, as well as in ChangeLog and README, along
-    with the dates of the alterations. The origin should include at least your
-    name (or your company's name), and an email address to contact for help or
-    issues with the library.
-
-    Note that distributing a compiled zlib library along with zlib.h and
-    zconf.h is also a source distribution, and so you should change
-    ZLIB_VERSION and ZLIB_VERNUM and note the origin and nature of the changes
-    in zlib.h as you would for a full source distribution.
-
-25. Will zlib work on a big-endian or little-endian architecture, and can I
-    exchange compressed data between them?
-
-    Yes and yes.
-
-26. Will zlib work on a 64-bit machine?
-
-    It should. It has been tested on 64-bit machines, and has no dependence
-    on any data types being limited to 32-bits in length. If you have any
-    difficulties, please provide a complete problem report to zlib@gzip.org
-
-27. Will zlib decompress data from the PKWare Data Compression Library?
-
-    No. The PKWare DCL uses a completely different compressed data format
-    than does PKZIP and zlib. However, you can look in zlib's contrib/blast
-    directory for a possible solution to your problem.
-
-28. Can I access data randomly in a compressed stream?
-
-    No, not without some preparation. If when compressing you periodically
-    use Z_FULL_FLUSH, carefully write all the pending data at those points,
-    and keep an index of those locations, then you can start decompression
-    at those points. You have to be careful to not use Z_FULL_FLUSH too
-    often, since it can significantly degrade compression.
-
-29. Does zlib work on MVS, OS/390, CICS, etc.?
-
-    We don't know for sure. We have heard occasional reports of success on
-    these systems. If you do use it on one of these, please provide us with
-    a report, instructions, and patches that we can reference when we get
-    these questions. Thanks.
-
-30. Is there some simpler, easier to read version of inflate I can look at
-    to understand the deflate format?
-
-    First off, you should read RFC 1951. Second, yes. Look in zlib's
-    contrib/puff directory.
-
-31. Does zlib infringe on any patents?
-
-    As far as we know, no. In fact, that was originally the whole point behind
-    zlib. Look here for some more information:
-
-    http://www.gzip.org/#faq11
-
-32. Can zlib work with greater than 4 GB of data?
-
-    Yes. inflate() and deflate() will process any amount of data correctly.
-    Each call of inflate() or deflate() is limited to input and output chunks
-    of the maximum value that can be stored in the compiler's "unsigned int"
-    type, but there is no limit to the number of chunks. Note however that the
-    strm.total_in and strm_total_out counters may be limited to 4 GB. These
-    counters are provided as a convenience and are not used internally by
-    inflate() or deflate(). The application can easily set up its own counters
-    updated after each call of inflate() or deflate() to count beyond 4 GB.
-    compress() and uncompress() may be limited to 4 GB, since they operate in a
-    single call. gzseek() and gztell() may be limited to 4 GB depending on how
-    zlib is compiled. See the zlibCompileFlags() function in zlib.h.
-
-    The word "may" appears several times above since there is a 4 GB limit
-    only if the compiler's "long" type is 32 bits. If the compiler's "long"
-    type is 64 bits, then the limit is 16 exabytes.
-
-33. Does zlib have any security vulnerabilities?
-
-    The only one that we are aware of is potentially in gzprintf(). If zlib
-    is compiled to use sprintf() or vsprintf(), then there is no protection
-    against a buffer overflow of a 4K string space, other than the caller of
-    gzprintf() assuring that the output will not exceed 4K. On the other
-    hand, if zlib is compiled to use snprintf() or vsnprintf(), which should
-    normally be the case, then there is no vulnerability. The ./configure
-    script will display warnings if an insecure variation of sprintf() will
-    be used by gzprintf(). Also the zlibCompileFlags() function will return
-    information on what variant of sprintf() is used by gzprintf().
-
-    If you don't have snprintf() or vsnprintf() and would like one, you can
-    find a portable implementation here:
-
-        http://www.ijs.si/software/snprintf/
-
-    Note that you should be using the most recent version of zlib. Versions
-    1.1.3 and before were subject to a double-free vulnerability.
-
-34. Is there a Java version of zlib?
-
-    Probably what you want is to use zlib in Java. zlib is already included
-    as part of the Java SDK in the java.util.zip package. If you really want
-    a version of zlib written in the Java language, look on the zlib home
-    page for links: http://www.zlib.org/
-
-35. I get this or that compiler or source-code scanner warning when I crank it
-    up to maximally-pedantic. Can't you guys write proper code?
-
-    Many years ago, we gave up attempting to avoid warnings on every compiler
-    in the universe. It just got to be a waste of time, and some compilers
-    were downright silly. So now, we simply make sure that the code always
-    works.
-
-36. Valgrind (or some similar memory access checker) says that deflate is
-    performing a conditional jump that depends on an uninitialized value.
-    Isn't that a bug?
-
-    No.  That is intentional for performance reasons, and the output of
-    deflate is not affected.  This only started showing up recently since
-    zlib 1.2.x uses malloc() by default for allocations, whereas earlier
-    versions used calloc(), which zeros out the allocated memory.
-
-37. Will zlib read the (insert any ancient or arcane format here) compressed
-    data format?
-
-    Probably not. Look in the comp.compression FAQ for pointers to various
-    formats and associated software.
-
-38. How can I encrypt/decrypt zip files with zlib?
-
-    zlib doesn't support encryption. The original PKZIP encryption is very weak
-    and can be broken with freely available programs. To get strong encryption,
-    use GnuPG, http://www.gnupg.org/ , which already includes zlib compression.
-    For PKZIP compatible "encryption", look at http://www.info-zip.org/
-
-39. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
-
-    "gzip" is the gzip format, and "deflate" is the zlib format. They should
-    probably have called the second one "zlib" instead to avoid confusion
-    with the raw deflate compressed data format. While the HTTP 1.1 RFC 2616
-    correctly points to the zlib specification in RFC 1950 for the "deflate"
-    transfer encoding, there have been reports of servers and browsers that
-    incorrectly produce or expect raw deflate data per the deflate
-    specficiation in RFC 1951, most notably Microsoft. So even though the
-    "deflate" transfer encoding using the zlib format would be the more
-    efficient approach (and in fact exactly what the zlib format was designed
-    for), using the "gzip" transfer encoding is probably more reliable due to
-    an unfortunate choice of name on the part of the HTTP 1.1 authors.
-
-    Bottom line: use the gzip format for HTTP 1.1 encoding.
-
-40. Does zlib support the new "Deflate64" format introduced by PKWare?
-
-    No. PKWare has apparently decided to keep that format proprietary, since
-    they have not documented it as they have previous compression formats.
-    In any case, the compression improvements are so modest compared to other
-    more modern approaches, that it's not worth the effort to implement.
-
-41. Can you please sign these lengthy legal documents and fax them back to us
-    so that we can use your software in our product?
-
-    No. Go away. Shoo.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/INDEX b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/INDEX
deleted file mode 100644
index 4d7eac4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/INDEX
+++ /dev/null
@@ -1,51 +0,0 @@
-ChangeLog       history of changes
-FAQ             Frequently Asked Questions about zlib
-INDEX           this file
-Makefile        makefile for Unix (generated by configure)
-Makefile.in     makefile for Unix (template for configure)
-README          guess what
-algorithm.txt   description of the (de)compression algorithm
-configure       configure script for Unix
-zconf.in.h      template for zconf.h (used by configure)
-
-amiga/          makefiles for Amiga SAS C
-as400/          makefiles for IBM AS/400
-msdos/          makefiles for MSDOS
-old/            makefiles for various architectures and zlib documentation
-                files that have not yet been updated for zlib 1.2.x
-projects/       projects for various Integrated Development Environments
-qnx/            makefiles for QNX
-win32/          makefiles for Windows
-
-                zlib public header files (must be kept):
-zconf.h
-zlib.h
-
-                private source files used to build the zlib library:
-adler32.c
-compress.c
-crc32.c
-crc32.h
-deflate.c
-deflate.h
-gzio.c
-infback.c
-inffast.c
-inffast.h
-inffixed.h
-inflate.c
-inflate.h
-inftrees.c
-inftrees.h
-trees.c
-trees.h
-uncompr.c
-zutil.c
-zutil.h
-
-                source files for sample programs:
-example.c
-minigzip.c
-
-                unsupported contribution by third parties
-See contrib/README.contrib
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/Makefile b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/Makefile
deleted file mode 100644
index a4954c8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/Makefile
+++ /dev/null
@@ -1,154 +0,0 @@
-# Makefile for zlib
-# Copyright (C) 1995-2005 Jean-loup Gailly.
-# For conditions of distribution and use, see copyright notice in zlib.h
-
-# To compile and test, type:
-#    ./configure; make test
-# The call of configure is optional if you don't have special requirements
-# If you wish to build zlib as a shared library, use: ./configure -s
-
-# To use the asm code, type:
-#    cp contrib/asm?86/match.S ./match.S
-#    make LOC=-DASMV OBJA=match.o
-
-# To install /usr/local/lib/libz.* and /usr/local/include/zlib.h, type:
-#    make install
-# To install in $HOME instead of /usr/local, use:
-#    make install prefix=$HOME
-
-CC=cc
-
-CFLAGS=-O
-#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
-#CFLAGS=-g -DDEBUG
-#CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
-#           -Wstrict-prototypes -Wmissing-prototypes
-
-LDFLAGS=libz.a
-LDSHARED=$(CC)
-CPP=$(CC) -E
-
-LIBS=libz.a
-SHAREDLIB=libz.so
-SHAREDLIBV=libz.so.1.2.3
-SHAREDLIBM=libz.so.1
-
-AR=ar rc
-RANLIB=ranlib
-TAR=tar
-SHELL=/bin/sh
-EXE=
-
-prefix = /usr/local
-exec_prefix = ${prefix}
-libdir = ${exec_prefix}/lib
-includedir = ${prefix}/include
-mandir = ${prefix}/share/man
-man3dir = ${mandir}/man3
-
-OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \
-       zutil.o inflate.o infback.o inftrees.o inffast.o
-
-OBJA =
-# to use the asm code: make OBJA=match.o
-
-TEST_OBJS = example.o minigzip.o
-
-all: example$(EXE) minigzip$(EXE)
-
-check: test
-test: all
-	@LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \
-	echo hello world | ./minigzip | ./minigzip -d || \
-	  echo '		*** minigzip test FAILED ***' ; \
-	if ./example; then \
-	  echo '		*** zlib test OK ***'; \
-	else \
-	  echo '		*** zlib test FAILED ***'; \
-	fi
-
-libz.a: $(OBJS) $(OBJA)
-	$(AR) $@ $(OBJS) $(OBJA)
-	-@ ($(RANLIB) $@ || true) >/dev/null 2>&1
-
-match.o: match.S
-	$(CPP) match.S > _match.s
-	$(CC) -c _match.s
-	mv _match.o match.o
-	rm -f _match.s
-
-$(SHAREDLIBV): $(OBJS)
-	$(LDSHARED) -o $@ $(OBJS)
-	rm -f $(SHAREDLIB) $(SHAREDLIBM)
-	ln -s $@ $(SHAREDLIB)
-	ln -s $@ $(SHAREDLIBM)
-
-example$(EXE): example.o $(LIBS)
-	$(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS)
-
-minigzip$(EXE): minigzip.o $(LIBS)
-	$(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS)
-
-install: $(LIBS)
-	-@if [ ! -d $(exec_prefix) ]; then mkdir -p $(exec_prefix); fi
-	-@if [ ! -d $(includedir)  ]; then mkdir -p $(includedir); fi
-	-@if [ ! -d $(libdir)      ]; then mkdir -p $(libdir); fi
-	-@if [ ! -d $(man3dir)     ]; then mkdir -p $(man3dir); fi
-	cp zlib.h zconf.h $(includedir)
-	chmod 644 $(includedir)/zlib.h $(includedir)/zconf.h
-	cp $(LIBS) $(libdir)
-	cd $(libdir); chmod 755 $(LIBS)
-	-@(cd $(libdir); $(RANLIB) libz.a || true) >/dev/null 2>&1
-	cd $(libdir); if test -f $(SHAREDLIBV); then \
-	  rm -f $(SHAREDLIB) $(SHAREDLIBM); \
-	  ln -s $(SHAREDLIBV) $(SHAREDLIB); \
-	  ln -s $(SHAREDLIBV) $(SHAREDLIBM); \
-	  (ldconfig || true)  >/dev/null 2>&1; \
-	fi
-	cp zlib.3 $(man3dir)
-	chmod 644 $(man3dir)/zlib.3
-# The ranlib in install is needed on NeXTSTEP which checks file times
-# ldconfig is for Linux
-
-uninstall:
-	cd $(includedir); \
-	cd $(libdir); rm -f libz.a; \
-	if test -f $(SHAREDLIBV); then \
-	  rm -f $(SHAREDLIBV) $(SHAREDLIB) $(SHAREDLIBM); \
-	fi
-	cd $(man3dir); rm -f zlib.3
-
-mostlyclean: clean
-clean:
-	rm -f *.o *~ example$(EXE) minigzip$(EXE) \
-	   libz.* foo.gz so_locations \
-	   _match.s maketree contrib/infback9/*.o
-
-maintainer-clean: distclean
-distclean: clean
-	cp -p Makefile.in Makefile
-	cp -p zconf.in.h zconf.h
-	rm -f .DS_Store
-
-tags:
-	etags *.[ch]
-
-depend:
-	makedepend -- $(CFLAGS) -- *.[ch]
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-adler32.o: zlib.h zconf.h
-compress.o: zlib.h zconf.h
-crc32.o: crc32.h zlib.h zconf.h
-deflate.o: deflate.h zutil.h zlib.h zconf.h
-example.o: zlib.h zconf.h
-gzio.o: zutil.h zlib.h zconf.h
-inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
-inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
-infback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
-inftrees.o: zutil.h zlib.h zconf.h inftrees.h
-minigzip.o: zlib.h zconf.h
-trees.o: deflate.h zutil.h zlib.h zconf.h trees.h
-uncompr.o: zlib.h zconf.h
-zutil.o: zutil.h zlib.h zconf.h
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/Makefile.in b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/Makefile.in
deleted file mode 100644
index a4954c8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/Makefile.in
+++ /dev/null
@@ -1,154 +0,0 @@
-# Makefile for zlib
-# Copyright (C) 1995-2005 Jean-loup Gailly.
-# For conditions of distribution and use, see copyright notice in zlib.h
-
-# To compile and test, type:
-#    ./configure; make test
-# The call of configure is optional if you don't have special requirements
-# If you wish to build zlib as a shared library, use: ./configure -s
-
-# To use the asm code, type:
-#    cp contrib/asm?86/match.S ./match.S
-#    make LOC=-DASMV OBJA=match.o
-
-# To install /usr/local/lib/libz.* and /usr/local/include/zlib.h, type:
-#    make install
-# To install in $HOME instead of /usr/local, use:
-#    make install prefix=$HOME
-
-CC=cc
-
-CFLAGS=-O
-#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
-#CFLAGS=-g -DDEBUG
-#CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
-#           -Wstrict-prototypes -Wmissing-prototypes
-
-LDFLAGS=libz.a
-LDSHARED=$(CC)
-CPP=$(CC) -E
-
-LIBS=libz.a
-SHAREDLIB=libz.so
-SHAREDLIBV=libz.so.1.2.3
-SHAREDLIBM=libz.so.1
-
-AR=ar rc
-RANLIB=ranlib
-TAR=tar
-SHELL=/bin/sh
-EXE=
-
-prefix = /usr/local
-exec_prefix = ${prefix}
-libdir = ${exec_prefix}/lib
-includedir = ${prefix}/include
-mandir = ${prefix}/share/man
-man3dir = ${mandir}/man3
-
-OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \
-       zutil.o inflate.o infback.o inftrees.o inffast.o
-
-OBJA =
-# to use the asm code: make OBJA=match.o
-
-TEST_OBJS = example.o minigzip.o
-
-all: example$(EXE) minigzip$(EXE)
-
-check: test
-test: all
-	@LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \
-	echo hello world | ./minigzip | ./minigzip -d || \
-	  echo '		*** minigzip test FAILED ***' ; \
-	if ./example; then \
-	  echo '		*** zlib test OK ***'; \
-	else \
-	  echo '		*** zlib test FAILED ***'; \
-	fi
-
-libz.a: $(OBJS) $(OBJA)
-	$(AR) $@ $(OBJS) $(OBJA)
-	-@ ($(RANLIB) $@ || true) >/dev/null 2>&1
-
-match.o: match.S
-	$(CPP) match.S > _match.s
-	$(CC) -c _match.s
-	mv _match.o match.o
-	rm -f _match.s
-
-$(SHAREDLIBV): $(OBJS)
-	$(LDSHARED) -o $@ $(OBJS)
-	rm -f $(SHAREDLIB) $(SHAREDLIBM)
-	ln -s $@ $(SHAREDLIB)
-	ln -s $@ $(SHAREDLIBM)
-
-example$(EXE): example.o $(LIBS)
-	$(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS)
-
-minigzip$(EXE): minigzip.o $(LIBS)
-	$(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS)
-
-install: $(LIBS)
-	-@if [ ! -d $(exec_prefix) ]; then mkdir -p $(exec_prefix); fi
-	-@if [ ! -d $(includedir)  ]; then mkdir -p $(includedir); fi
-	-@if [ ! -d $(libdir)      ]; then mkdir -p $(libdir); fi
-	-@if [ ! -d $(man3dir)     ]; then mkdir -p $(man3dir); fi
-	cp zlib.h zconf.h $(includedir)
-	chmod 644 $(includedir)/zlib.h $(includedir)/zconf.h
-	cp $(LIBS) $(libdir)
-	cd $(libdir); chmod 755 $(LIBS)
-	-@(cd $(libdir); $(RANLIB) libz.a || true) >/dev/null 2>&1
-	cd $(libdir); if test -f $(SHAREDLIBV); then \
-	  rm -f $(SHAREDLIB) $(SHAREDLIBM); \
-	  ln -s $(SHAREDLIBV) $(SHAREDLIB); \
-	  ln -s $(SHAREDLIBV) $(SHAREDLIBM); \
-	  (ldconfig || true)  >/dev/null 2>&1; \
-	fi
-	cp zlib.3 $(man3dir)
-	chmod 644 $(man3dir)/zlib.3
-# The ranlib in install is needed on NeXTSTEP which checks file times
-# ldconfig is for Linux
-
-uninstall:
-	cd $(includedir); \
-	cd $(libdir); rm -f libz.a; \
-	if test -f $(SHAREDLIBV); then \
-	  rm -f $(SHAREDLIBV) $(SHAREDLIB) $(SHAREDLIBM); \
-	fi
-	cd $(man3dir); rm -f zlib.3
-
-mostlyclean: clean
-clean:
-	rm -f *.o *~ example$(EXE) minigzip$(EXE) \
-	   libz.* foo.gz so_locations \
-	   _match.s maketree contrib/infback9/*.o
-
-maintainer-clean: distclean
-distclean: clean
-	cp -p Makefile.in Makefile
-	cp -p zconf.in.h zconf.h
-	rm -f .DS_Store
-
-tags:
-	etags *.[ch]
-
-depend:
-	makedepend -- $(CFLAGS) -- *.[ch]
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-adler32.o: zlib.h zconf.h
-compress.o: zlib.h zconf.h
-crc32.o: crc32.h zlib.h zconf.h
-deflate.o: deflate.h zutil.h zlib.h zconf.h
-example.o: zlib.h zconf.h
-gzio.o: zutil.h zlib.h zconf.h
-inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
-inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
-infback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
-inftrees.o: zutil.h zlib.h zconf.h inftrees.h
-minigzip.o: zlib.h zconf.h
-trees.o: deflate.h zutil.h zlib.h zconf.h trees.h
-uncompr.o: zlib.h zconf.h
-zutil.o: zutil.h zlib.h zconf.h
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/README b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/README
deleted file mode 100644
index 80f71ae..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/README
+++ /dev/null
@@ -1,125 +0,0 @@
-ZLIB DATA COMPRESSION LIBRARY
-
-zlib 1.2.3 is a general purpose data compression library.  All the code is
-thread safe.  The data format used by the zlib library is described by RFCs
-(Request for Comments) 1950 to 1952 in the files
-http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format)
-and rfc1952.txt (gzip format). These documents are also available in other
-formats from ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html
-
-All functions of the compression library are documented in the file zlib.h
-(volunteer to write man pages welcome, contact zlib@gzip.org). A usage example
-of the library is given in the file example.c which also tests that the library
-is working correctly. Another example is given in the file minigzip.c. The
-compression library itself is composed of all source files except example.c and
-minigzip.c.
-
-To compile all files and run the test program, follow the instructions given at
-the top of Makefile. In short "make test; make install" should work for most
-machines. For Unix: "./configure; make test; make install". For MSDOS, use one
-of the special makefiles such as Makefile.msc. For VMS, use make_vms.com.
-
-Questions about zlib should be sent to <zlib@gzip.org>, or to Gilles Vollant
-<info@winimage.com> for the Windows DLL version. The zlib home page is
-http://www.zlib.org or http://www.gzip.org/zlib/ Before reporting a problem,
-please check this site to verify that you have the latest version of zlib;
-otherwise get the latest version and check whether the problem still exists or
-not.
-
-PLEASE read the zlib FAQ http://www.gzip.org/zlib/zlib_faq.html before asking
-for help.
-
-Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
-issue of  Dr. Dobb's Journal; a copy of the article is available in
-http://dogma.net/markn/articles/zlibtool/zlibtool.htm
-
-The changes made in version 1.2.3 are documented in the file ChangeLog.
-
-Unsupported third party contributions are provided in directory "contrib".
-
-A Java implementation of zlib is available in the Java Development Kit
-http://java.sun.com/j2se/1.4.2/docs/api/java/util/zip/package-summary.html
-See the zlib home page http://www.zlib.org for details.
-
-A Perl interface to zlib written by Paul Marquess <pmqs@cpan.org> is in the
-CPAN (Comprehensive Perl Archive Network) sites
-http://www.cpan.org/modules/by-module/Compress/
-
-A Python interface to zlib written by A.M. Kuchling <amk@amk.ca> is
-available in Python 1.5 and later versions, see
-http://www.python.org/doc/lib/module-zlib.html
-
-A zlib binding for TCL written by Andreas Kupries <a.kupries@westend.com> is
-availlable at http://www.oche.de/~akupries/soft/trf/trf_zip.html
-
-An experimental package to read and write files in .zip format, written on top
-of zlib by Gilles Vollant <info@winimage.com>, is available in the
-contrib/minizip directory of zlib.
-
-
-Notes for some targets:
-
-- For Windows DLL versions, please see win32/DLL_FAQ.txt
-
-- For 64-bit Irix, deflate.c must be compiled without any optimization. With
-  -O, one libpng test fails. The test works in 32 bit mode (with the -n32
-  compiler flag). The compiler bug has been reported to SGI.
-
-- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 it works
-  when compiled with cc.
-
-- On Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1 is
-  necessary to get gzprintf working correctly. This is done by configure.
-
-- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with
-  other compilers. Use "make test" to check your compiler.
-
-- gzdopen is not supported on RISCOS, BEOS and by some Mac compilers.
-
-- For PalmOs, see http://palmzlib.sourceforge.net/
-
-- When building a shared, i.e. dynamic library on Mac OS X, the library must be
-  installed before testing (do "make install" before "make test"), since the
-  library location is specified in the library.
-
-
-Acknowledgments:
-
-  The deflate format used by zlib was defined by Phil Katz. The deflate
-  and zlib specifications were written by L. Peter Deutsch. Thanks to all the
-  people who reported problems and suggested various improvements in zlib;
-  they are too numerous to cite here.
-
-Copyright notice:
-
- (C) 1995-2004 Jean-loup Gailly and Mark Adler
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-  Jean-loup Gailly        Mark Adler
-  jloup@gzip.org          madler@alumni.caltech.edu
-
-If you use the zlib library in a product, we would appreciate *not*
-receiving lengthy legal documents to sign. The sources are provided
-for free but without warranty of any kind.  The library has been
-entirely written by Jean-loup Gailly and Mark Adler; it does not
-include third-party code.
-
-If you redistribute modified sources, we would appreciate that you include
-in the file ChangeLog history information documenting your changes. Please
-read the FAQ for more information on the distribution of modified source
-versions.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/adler32.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/adler32.c
deleted file mode 100644
index f201d67..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/adler32.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/* adler32.c -- compute the Adler-32 checksum of a data stream
- * Copyright (C) 1995-2004 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* @(#) $Id$ */
-
-#define ZLIB_INTERNAL
-#include "zlib.h"
-
-#define BASE 65521UL    /* largest prime smaller than 65536 */
-#define NMAX 5552
-/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
-
-#define DO1(buf,i)  {adler += (buf)[i]; sum2 += adler;}
-#define DO2(buf,i)  DO1(buf,i); DO1(buf,i+1);
-#define DO4(buf,i)  DO2(buf,i); DO2(buf,i+2);
-#define DO8(buf,i)  DO4(buf,i); DO4(buf,i+4);
-#define DO16(buf)   DO8(buf,0); DO8(buf,8);
-
-/* use NO_DIVIDE if your processor does not do division in hardware */
-#ifdef NO_DIVIDE
-#  define MOD(a) \
-    do { \
-        if (a >= (BASE << 16)) a -= (BASE << 16); \
-        if (a >= (BASE << 15)) a -= (BASE << 15); \
-        if (a >= (BASE << 14)) a -= (BASE << 14); \
-        if (a >= (BASE << 13)) a -= (BASE << 13); \
-        if (a >= (BASE << 12)) a -= (BASE << 12); \
-        if (a >= (BASE << 11)) a -= (BASE << 11); \
-        if (a >= (BASE << 10)) a -= (BASE << 10); \
-        if (a >= (BASE << 9)) a -= (BASE << 9); \
-        if (a >= (BASE << 8)) a -= (BASE << 8); \
-        if (a >= (BASE << 7)) a -= (BASE << 7); \
-        if (a >= (BASE << 6)) a -= (BASE << 6); \
-        if (a >= (BASE << 5)) a -= (BASE << 5); \
-        if (a >= (BASE << 4)) a -= (BASE << 4); \
-        if (a >= (BASE << 3)) a -= (BASE << 3); \
-        if (a >= (BASE << 2)) a -= (BASE << 2); \
-        if (a >= (BASE << 1)) a -= (BASE << 1); \
-        if (a >= BASE) a -= BASE; \
-    } while (0)
-#  define MOD4(a) \
-    do { \
-        if (a >= (BASE << 4)) a -= (BASE << 4); \
-        if (a >= (BASE << 3)) a -= (BASE << 3); \
-        if (a >= (BASE << 2)) a -= (BASE << 2); \
-        if (a >= (BASE << 1)) a -= (BASE << 1); \
-        if (a >= BASE) a -= BASE; \
-    } while (0)
-#else
-#  define MOD(a) a %= BASE
-#  define MOD4(a) a %= BASE
-#endif
-
-/* ========================================================================= */
-uLong ZEXPORT adler32(adler, buf, len)
-    uLong adler;
-    const Bytef *buf;
-    uInt len;
-{
-    unsigned long sum2;
-    unsigned n;
-
-    /* split Adler-32 into component sums */
-    sum2 = (adler >> 16) & 0xffff;
-    adler &= 0xffff;
-
-    /* in case user likes doing a byte at a time, keep it fast */
-    if (len == 1) {
-        adler += buf[0];
-        if (adler >= BASE)
-            adler -= BASE;
-        sum2 += adler;
-        if (sum2 >= BASE)
-            sum2 -= BASE;
-        return adler | (sum2 << 16);
-    }
-
-    /* initial Adler-32 value (deferred check for len == 1 speed) */
-    if (buf == Z_NULL)
-        return 1L;
-
-    /* in case short lengths are provided, keep it somewhat fast */
-    if (len < 16) {
-        while (len--) {
-            adler += *buf++;
-            sum2 += adler;
-        }
-        if (adler >= BASE)
-            adler -= BASE;
-        MOD4(sum2);             /* only added so many BASE's */
-        return adler | (sum2 << 16);
-    }
-
-    /* do length NMAX blocks -- requires just one modulo operation */
-    while (len >= NMAX) {
-        len -= NMAX;
-        n = NMAX / 16;          /* NMAX is divisible by 16 */
-        do {
-            DO16(buf);          /* 16 sums unrolled */
-            buf += 16;
-        } while (--n);
-        MOD(adler);
-        MOD(sum2);
-    }
-
-    /* do remaining bytes (less than NMAX, still just one modulo) */
-    if (len) {                  /* avoid modulos if none remaining */
-        while (len >= 16) {
-            len -= 16;
-            DO16(buf);
-            buf += 16;
-        }
-        while (len--) {
-            adler += *buf++;
-            sum2 += adler;
-        }
-        MOD(adler);
-        MOD(sum2);
-    }
-
-    /* return recombined sums */
-    return adler | (sum2 << 16);
-}
-
-/* ========================================================================= */
-uLong ZEXPORT adler32_combine(adler1, adler2, len2)
-    uLong adler1;
-    uLong adler2;
-    z_off_t len2;
-{
-    unsigned long sum1;
-    unsigned long sum2;
-    unsigned rem;
-
-    /* the derivation of this formula is left as an exercise for the reader */
-    rem = (unsigned)(len2 % BASE);
-    sum1 = adler1 & 0xffff;
-    sum2 = rem * sum1;
-    MOD(sum2);
-    sum1 += (adler2 & 0xffff) + BASE - 1;
-    sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem;
-    if (sum1 > BASE) sum1 -= BASE;
-    if (sum1 > BASE) sum1 -= BASE;
-    if (sum2 > (BASE << 1)) sum2 -= (BASE << 1);
-    if (sum2 > BASE) sum2 -= BASE;
-    return sum1 | (sum2 << 16);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/algorithm.txt b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/algorithm.txt
deleted file mode 100644
index 9f6b068..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/algorithm.txt
+++ /dev/null
@@ -1,209 +0,0 @@
-1. Compression algorithm (deflate)
-
-The deflation algorithm used by gzip (also zip and zlib) is a variation of
-LZ77 (Lempel-Ziv 1977, see reference below). It finds duplicated strings in
-the input data.  The second occurrence of a string is replaced by a
-pointer to the previous string, in the form of a pair (distance,
-length).  Distances are limited to 32K bytes, and lengths are limited
-to 258 bytes. When a string does not occur anywhere in the previous
-32K bytes, it is emitted as a sequence of literal bytes.  (In this
-description, `string' must be taken as an arbitrary sequence of bytes,
-and is not restricted to printable characters.)
-
-Literals or match lengths are compressed with one Huffman tree, and
-match distances are compressed with another tree. The trees are stored
-in a compact form at the start of each block. The blocks can have any
-size (except that the compressed data for one block must fit in
-available memory). A block is terminated when deflate() determines that
-it would be useful to start another block with fresh trees. (This is
-somewhat similar to the behavior of LZW-based _compress_.)
-
-Duplicated strings are found using a hash table. All input strings of
-length 3 are inserted in the hash table. A hash index is computed for
-the next 3 bytes. If the hash chain for this index is not empty, all
-strings in the chain are compared with the current input string, and
-the longest match is selected.
-
-The hash chains are searched starting with the most recent strings, to
-favor small distances and thus take advantage of the Huffman encoding.
-The hash chains are singly linked. There are no deletions from the
-hash chains, the algorithm simply discards matches that are too old.
-
-To avoid a worst-case situation, very long hash chains are arbitrarily
-truncated at a certain length, determined by a runtime option (level
-parameter of deflateInit). So deflate() does not always find the longest
-possible match but generally finds a match which is long enough.
-
-deflate() also defers the selection of matches with a lazy evaluation
-mechanism. After a match of length N has been found, deflate() searches for
-a longer match at the next input byte. If a longer match is found, the
-previous match is truncated to a length of one (thus producing a single
-literal byte) and the process of lazy evaluation begins again. Otherwise,
-the original match is kept, and the next match search is attempted only N
-steps later.
-
-The lazy match evaluation is also subject to a runtime parameter. If
-the current match is long enough, deflate() reduces the search for a longer
-match, thus speeding up the whole process. If compression ratio is more
-important than speed, deflate() attempts a complete second search even if
-the first match is already long enough.
-
-The lazy match evaluation is not performed for the fastest compression
-modes (level parameter 1 to 3). For these fast modes, new strings
-are inserted in the hash table only when no match was found, or
-when the match is not too long. This degrades the compression ratio
-but saves time since there are both fewer insertions and fewer searches.
-
-
-2. Decompression algorithm (inflate)
-
-2.1 Introduction
-
-The key question is how to represent a Huffman code (or any prefix code) so
-that you can decode fast.  The most important characteristic is that shorter
-codes are much more common than longer codes, so pay attention to decoding the
-short codes fast, and let the long codes take longer to decode.
-
-inflate() sets up a first level table that covers some number of bits of
-input less than the length of longest code.  It gets that many bits from the
-stream, and looks it up in the table.  The table will tell if the next
-code is that many bits or less and how many, and if it is, it will tell
-the value, else it will point to the next level table for which inflate()
-grabs more bits and tries to decode a longer code.
-
-How many bits to make the first lookup is a tradeoff between the time it
-takes to decode and the time it takes to build the table.  If building the
-table took no time (and if you had infinite memory), then there would only
-be a first level table to cover all the way to the longest code.  However,
-building the table ends up taking a lot longer for more bits since short
-codes are replicated many times in such a table.  What inflate() does is
-simply to make the number of bits in the first table a variable, and  then
-to set that variable for the maximum speed.
-
-For inflate, which has 286 possible codes for the literal/length tree, the size
-of the first table is nine bits.  Also the distance trees have 30 possible
-values, and the size of the first table is six bits.  Note that for each of
-those cases, the table ended up one bit longer than the ``average'' code
-length, i.e. the code length of an approximately flat code which would be a
-little more than eight bits for 286 symbols and a little less than five bits
-for 30 symbols.
-
-
-2.2 More details on the inflate table lookup
-
-Ok, you want to know what this cleverly obfuscated inflate tree actually
-looks like.  You are correct that it's not a Huffman tree.  It is simply a
-lookup table for the first, let's say, nine bits of a Huffman symbol.  The
-symbol could be as short as one bit or as long as 15 bits.  If a particular
-symbol is shorter than nine bits, then that symbol's translation is duplicated
-in all those entries that start with that symbol's bits.  For example, if the
-symbol is four bits, then it's duplicated 32 times in a nine-bit table.  If a
-symbol is nine bits long, it appears in the table once.
-
-If the symbol is longer than nine bits, then that entry in the table points
-to another similar table for the remaining bits.  Again, there are duplicated
-entries as needed.  The idea is that most of the time the symbol will be short
-and there will only be one table look up.  (That's whole idea behind data
-compression in the first place.)  For the less frequent long symbols, there
-will be two lookups.  If you had a compression method with really long
-symbols, you could have as many levels of lookups as is efficient.  For
-inflate, two is enough.
-
-So a table entry either points to another table (in which case nine bits in
-the above example are gobbled), or it contains the translation for the symbol
-and the number of bits to gobble.  Then you start again with the next
-ungobbled bit.
-
-You may wonder: why not just have one lookup table for how ever many bits the
-longest symbol is?  The reason is that if you do that, you end up spending
-more time filling in duplicate symbol entries than you do actually decoding.
-At least for deflate's output that generates new trees every several 10's of
-kbytes.  You can imagine that filling in a 2^15 entry table for a 15-bit code
-would take too long if you're only decoding several thousand symbols.  At the
-other extreme, you could make a new table for every bit in the code.  In fact,
-that's essentially a Huffman tree.  But then you spend two much time
-traversing the tree while decoding, even for short symbols.
-
-So the number of bits for the first lookup table is a trade of the time to
-fill out the table vs. the time spent looking at the second level and above of
-the table.
-
-Here is an example, scaled down:
-
-The code being decoded, with 10 symbols, from 1 to 6 bits long:
-
-A: 0
-B: 10
-C: 1100
-D: 11010
-E: 11011
-F: 11100
-G: 11101
-H: 11110
-I: 111110
-J: 111111
-
-Let's make the first table three bits long (eight entries):
-
-000: A,1
-001: A,1
-010: A,1
-011: A,1
-100: B,2
-101: B,2
-110: -> table X (gobble 3 bits)
-111: -> table Y (gobble 3 bits)
-
-Each entry is what the bits decode as and how many bits that is, i.e. how
-many bits to gobble.  Or the entry points to another table, with the number of
-bits to gobble implicit in the size of the table.
-
-Table X is two bits long since the longest code starting with 110 is five bits
-long:
-
-00: C,1
-01: C,1
-10: D,2
-11: E,2
-
-Table Y is three bits long since the longest code starting with 111 is six
-bits long:
-
-000: F,2
-001: F,2
-010: G,2
-011: G,2
-100: H,2
-101: H,2
-110: I,3
-111: J,3
-
-So what we have here are three tables with a total of 20 entries that had to
-be constructed.  That's compared to 64 entries for a single table.  Or
-compared to 16 entries for a Huffman tree (six two entry tables and one four
-entry table).  Assuming that the code ideally represents the probability of
-the symbols, it takes on the average 1.25 lookups per symbol.  That's compared
-to one lookup for the single table, or 1.66 lookups per symbol for the
-Huffman tree.
-
-There, I think that gives you a picture of what's going on.  For inflate, the
-meaning of a particular symbol is often more than just a letter.  It can be a
-byte (a "literal"), or it can be either a length or a distance which
-indicates a base value and a number of bits to fetch after the code that is
-added to the base value.  Or it might be the special end-of-block code.  The
-data structures created in inftrees.c try to encode all that information
-compactly in the tables.
-
-
-Jean-loup Gailly        Mark Adler
-jloup@gzip.org          madler@alumni.caltech.edu
-
-
-References:
-
-[LZ77] Ziv J., Lempel A., ``A Universal Algorithm for Sequential Data
-Compression,'' IEEE Transactions on Information Theory, Vol. 23, No. 3,
-pp. 337-343.
-
-``DEFLATE Compressed Data Format Specification'' available in
-http://www.ietf.org/rfc/rfc1951.txt
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/compress.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/compress.c
deleted file mode 100644
index d37e84f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/compress.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* compress.c -- compress a memory buffer
- * Copyright (C) 1995-2003 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* @(#) $Id$ */
-
-#define ZLIB_INTERNAL
-#include "zlib.h"
-
-/* ===========================================================================
-     Compresses the source buffer into the destination buffer. The level
-   parameter has the same meaning as in deflateInit.  sourceLen is the byte
-   length of the source buffer. Upon entry, destLen is the total size of the
-   destination buffer, which must be at least 0.1% larger than sourceLen plus
-   12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
-
-     compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_BUF_ERROR if there was not enough room in the output buffer,
-   Z_STREAM_ERROR if the level parameter is invalid.
-*/
-int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
-    Bytef *dest;
-    uLongf *destLen;
-    const Bytef *source;
-    uLong sourceLen;
-    int level;
-{
-    z_stream stream;
-    int err;
-
-    stream.next_in = (Bytef*)source;
-    stream.avail_in = (uInt)sourceLen;
-#ifdef MAXSEG_64K
-    /* Check for source > 64K on 16-bit machine: */
-    if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
-#endif
-    stream.next_out = dest;
-    stream.avail_out = (uInt)*destLen;
-    if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
-
-    stream.zalloc = (alloc_func)0;
-    stream.zfree = (free_func)0;
-    stream.opaque = (voidpf)0;
-
-    err = deflateInit(&stream, level);
-    if (err != Z_OK) return err;
-
-    err = deflate(&stream, Z_FINISH);
-    if (err != Z_STREAM_END) {
-        deflateEnd(&stream);
-        return err == Z_OK ? Z_BUF_ERROR : err;
-    }
-    *destLen = stream.total_out;
-
-    err = deflateEnd(&stream);
-    return err;
-}
-
-/* ===========================================================================
- */
-int ZEXPORT compress (dest, destLen, source, sourceLen)
-    Bytef *dest;
-    uLongf *destLen;
-    const Bytef *source;
-    uLong sourceLen;
-{
-    return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION);
-}
-
-/* ===========================================================================
-     If the default memLevel or windowBits for deflateInit() is changed, then
-   this function needs to be updated.
- */
-uLong ZEXPORT compressBound (sourceLen)
-    uLong sourceLen;
-{
-    return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + 11;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/configure b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/configure
deleted file mode 100644
index 212e92e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/configure
+++ /dev/null
@@ -1,459 +0,0 @@
-#!/bin/sh
-# configure script for zlib. This script is needed only if
-# you wish to build a shared library and your system supports them,
-# of if you need special compiler, flags or install directory.
-# Otherwise, you can just use directly "make test; make install"
-#
-# To create a shared library, use "configure --shared"; by default a static
-# library is created. If the primitive shared library support provided here
-# does not work, use ftp://prep.ai.mit.edu/pub/gnu/libtool-*.tar.gz
-#
-# To impose specific compiler or flags or install directory, use for example:
-#    prefix=$HOME CC=cc CFLAGS="-O4" ./configure
-# or for csh/tcsh users:
-#    (setenv prefix $HOME; setenv CC cc; setenv CFLAGS "-O4"; ./configure)
-# LDSHARED is the command to be used to create a shared library
-
-# Incorrect settings of CC or CFLAGS may prevent creating a shared library.
-# If you have problems, try without defining CC and CFLAGS before reporting
-# an error.
-
-LIBS=libz.a
-LDFLAGS="-L. ${LIBS}"
-VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`
-VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h`
-VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h`
-AR=${AR-"ar rc"}
-RANLIB=${RANLIB-"ranlib"}
-prefix=${prefix-/usr/local}
-exec_prefix=${exec_prefix-'${prefix}'}
-libdir=${libdir-'${exec_prefix}/lib'}
-includedir=${includedir-'${prefix}/include'}
-mandir=${mandir-'${prefix}/share/man'}
-shared_ext='.so'
-shared=0
-gcc=0
-old_cc="$CC"
-old_cflags="$CFLAGS"
-
-while test $# -ge 1
-do
-case "$1" in
-    -h* | --h*)
-      echo 'usage:'
-      echo '  configure [--shared] [--prefix=PREFIX]  [--exec_prefix=EXPREFIX]'
-      echo '     [--libdir=LIBDIR] [--includedir=INCLUDEDIR]'
-        exit 0;;
-    -p*=* | --p*=*) prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;;
-    -e*=* | --e*=*) exec_prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;;
-    -l*=* | --libdir=*) libdir=`echo $1 | sed 's/[-a-z_]*=//'`; shift;;
-    -i*=* | --includedir=*) includedir=`echo $1 | sed 's/[-a-z_]*=//'`;shift;;
-    -p* | --p*) prefix="$2"; shift; shift;;
-    -e* | --e*) exec_prefix="$2"; shift; shift;;
-    -l* | --l*) libdir="$2"; shift; shift;;
-    -i* | --i*) includedir="$2"; shift; shift;;
-    -s* | --s*) shared=1; shift;;
-    *) echo "unknown option: $1"; echo "$0 --help for help"; exit 1;;
-    esac
-done
-
-test=ztest$$
-cat > $test.c <<EOF
-extern int getchar();
-int hello() {return getchar();}
-EOF
-
-test -z "$CC" && echo Checking for gcc...
-cc=${CC-gcc}
-cflags=${CFLAGS-"-O3"}
-# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
-case "$cc" in
-  *gcc*) gcc=1;;
-esac
-
-if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) 2>/dev/null; then
-  CC="$cc"
-  SFLAGS=${CFLAGS-"-fPIC -O3"}
-  CFLAGS="$cflags"
-  case `(uname -s || echo unknown) 2>/dev/null` in
-  Linux | linux | GNU | GNU/*) LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1"};;
-  CYGWIN* | Cygwin* | cygwin* | OS/2* )
-             EXE='.exe';;
-  QNX*)  # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4
-         # (alain.bonnefoy@icbt.com)
-                 LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"};;
-  HP-UX*)
-         LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"}
-         case `(uname -m || echo unknown) 2>/dev/null` in
-         ia64)
-                 shared_ext='.so'
-                 SHAREDLIB='libz.so';;
-         *)
-                 shared_ext='.sl'
-                 SHAREDLIB='libz.sl';;
-         esac;;
-  Darwin*)   shared_ext='.dylib'
-             SHAREDLIB=libz$shared_ext
-             SHAREDLIBV=libz.$VER$shared_ext
-             SHAREDLIBM=libz.$VER1$shared_ext
-             LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER"};;
-  *)             LDSHARED=${LDSHARED-"$cc -shared"};;
-  esac
-else
-  # find system name and corresponding cc options
-  CC=${CC-cc}
-  case `(uname -sr || echo unknown) 2>/dev/null` in
-  HP-UX*)    SFLAGS=${CFLAGS-"-O +z"}
-             CFLAGS=${CFLAGS-"-O"}
-#            LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"}
-             LDSHARED=${LDSHARED-"ld -b"}
-         case `(uname -m || echo unknown) 2>/dev/null` in
-         ia64)
-             shared_ext='.so'
-             SHAREDLIB='libz.so';;
-         *)
-             shared_ext='.sl'
-             SHAREDLIB='libz.sl';;
-         esac;;
-  IRIX*)     SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."}
-             CFLAGS=${CFLAGS-"-ansi -O2"}
-             LDSHARED=${LDSHARED-"cc -shared"};;
-  OSF1\ V4*) SFLAGS=${CFLAGS-"-O -std1"}
-             CFLAGS=${CFLAGS-"-O -std1"}
-             LDSHARED=${LDSHARED-"cc -shared  -Wl,-soname,libz.so -Wl,-msym -Wl,-rpath,$(libdir) -Wl,-set_version,${VER}:1.0"};;
-  OSF1*)     SFLAGS=${CFLAGS-"-O -std1"}
-             CFLAGS=${CFLAGS-"-O -std1"}
-             LDSHARED=${LDSHARED-"cc -shared"};;
-  QNX*)      SFLAGS=${CFLAGS-"-4 -O"}
-             CFLAGS=${CFLAGS-"-4 -O"}
-             LDSHARED=${LDSHARED-"cc"}
-             RANLIB=${RANLIB-"true"}
-             AR="cc -A";;
-  SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "}
-             CFLAGS=${CFLAGS-"-O3"}
-             LDSHARED=${LDSHARED-"cc -dy -KPIC -G"};;
-  SunOS\ 5*) SFLAGS=${CFLAGS-"-fast -xcg89 -KPIC -R."}
-             CFLAGS=${CFLAGS-"-fast -xcg89"}
-             LDSHARED=${LDSHARED-"cc -G"};;
-  SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"}
-             CFLAGS=${CFLAGS-"-O2"}
-             LDSHARED=${LDSHARED-"ld"};;
-  SunStudio\ 9*) SFLAGS=${CFLAGS-"-DUSE_MMAP -fast -xcode=pic32 -xtarget=ultra3 -xarch=v9b"}
-             CFLAGS=${CFLAGS-"-DUSE_MMAP -fast -xtarget=ultra3 -xarch=v9b"}
-             LDSHARED=${LDSHARED-"cc -xarch=v9b"};;
-  UNIX_System_V\ 4.2.0)
-             SFLAGS=${CFLAGS-"-KPIC -O"}
-             CFLAGS=${CFLAGS-"-O"}
-             LDSHARED=${LDSHARED-"cc -G"};;
-  UNIX_SV\ 4.2MP)
-             SFLAGS=${CFLAGS-"-Kconform_pic -O"}
-             CFLAGS=${CFLAGS-"-O"}
-             LDSHARED=${LDSHARED-"cc -G"};;
-  OpenUNIX\ 5)
-             SFLAGS=${CFLAGS-"-KPIC -O"}
-             CFLAGS=${CFLAGS-"-O"}
-             LDSHARED=${LDSHARED-"cc -G"};;
-  AIX*)  # Courtesy of dbakker@arrayasolutions.com
-             SFLAGS=${CFLAGS-"-O -qmaxmem=8192"}
-             CFLAGS=${CFLAGS-"-O -qmaxmem=8192"}
-             LDSHARED=${LDSHARED-"xlc -G"};;
-  # send working options for other systems to support@gzip.org
-  *)         SFLAGS=${CFLAGS-"-O"}
-             CFLAGS=${CFLAGS-"-O"}
-             LDSHARED=${LDSHARED-"cc -shared"};;
-  esac
-fi
-
-SHAREDLIB=${SHAREDLIB-"libz$shared_ext"}
-SHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"}
-SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"}
-
-if test $shared -eq 1; then
-  echo Checking for shared library support...
-  # we must test in two steps (cc then ld), required at least on SunOS 4.x
-  if test "`($CC -c $SFLAGS $test.c) 2>&1`" = "" &&
-     test "`($LDSHARED -o $test$shared_ext $test.o) 2>&1`" = ""; then
-    CFLAGS="$SFLAGS"
-    LIBS="$SHAREDLIBV"
-    echo Building shared library $SHAREDLIBV with $CC.
-  elif test -z "$old_cc" -a -z "$old_cflags"; then
-    echo No shared library support.
-    shared=0;
-  else
-    echo 'No shared library support; try without defining CC and CFLAGS'
-    shared=0;
-  fi
-fi
-if test $shared -eq 0; then
-  LDSHARED="$CC"
-  echo Building static library $LIBS version $VER with $CC.
-else
-  LDFLAGS="-L. ${SHAREDLIBV}"
-fi
-
-cat > $test.c <<EOF
-#include <unistd.h>
-int main() { return 0; }
-EOF
-if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
-  sed < zconf.in.h "/HAVE_UNISTD_H/s%0%1%" > zconf.h
-  echo "Checking for unistd.h... Yes."
-else
-  cp -p zconf.in.h zconf.h
-  echo "Checking for unistd.h... No."
-fi
-
-cat > $test.c <<EOF
-#include <stdio.h>
-#include <stdarg.h>
-#include "zconf.h"
-
-int main()
-{
-#ifndef STDC
-  choke me
-#endif
-
-  return 0;
-}
-EOF
-
-if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
-  echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()"
-
-  cat > $test.c <<EOF
-#include <stdio.h>
-#include <stdarg.h>
-
-int mytest(char *fmt, ...)
-{
-  char buf[20];
-  va_list ap;
-
-  va_start(ap, fmt);
-  vsnprintf(buf, sizeof(buf), fmt, ap);
-  va_end(ap);
-  return 0;
-}
-
-int main()
-{
-  return (mytest("Hello%d\n", 1));
-}
-EOF
-
-  if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then
-    echo "Checking for vsnprintf() in stdio.h... Yes."
-
-    cat >$test.c <<EOF
-#include <stdio.h>
-#include <stdarg.h>
-
-int mytest(char *fmt, ...)
-{
-  int n;
-  char buf[20];
-  va_list ap;
-
-  va_start(ap, fmt);
-  n = vsnprintf(buf, sizeof(buf), fmt, ap);
-  va_end(ap);
-  return n;
-}
-
-int main()
-{
-  return (mytest("Hello%d\n", 1));
-}
-EOF
-
-    if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
-      echo "Checking for return value of vsnprintf()... Yes."
-    else
-      CFLAGS="$CFLAGS -DHAS_vsnprintf_void"
-      echo "Checking for return value of vsnprintf()... No."
-      echo "  WARNING: apparently vsnprintf() does not return a value. zlib"
-      echo "  can build but will be open to possible string-format security"
-      echo "  vulnerabilities."
-    fi
-  else
-    CFLAGS="$CFLAGS -DNO_vsnprintf"
-    echo "Checking for vsnprintf() in stdio.h... No."
-    echo "  WARNING: vsnprintf() not found, falling back to vsprintf(). zlib"
-    echo "  can build but will be open to possible buffer-overflow security"
-    echo "  vulnerabilities."
-
-    cat >$test.c <<EOF
-#include <stdio.h>
-#include <stdarg.h>
-
-int mytest(char *fmt, ...)
-{
-  int n;
-  char buf[20];
-  va_list ap;
-
-  va_start(ap, fmt);
-  n = vsprintf(buf, fmt, ap);
-  va_end(ap);
-  return n;
-}
-
-int main()
-{
-  return (mytest("Hello%d\n", 1));
-}
-EOF
-
-    if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
-      echo "Checking for return value of vsprintf()... Yes."
-    else
-      CFLAGS="$CFLAGS -DHAS_vsprintf_void"
-      echo "Checking for return value of vsprintf()... No."
-      echo "  WARNING: apparently vsprintf() does not return a value. zlib"
-      echo "  can build but will be open to possible string-format security"
-      echo "  vulnerabilities."
-    fi
-  fi
-else
-  echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()"
-
-  cat >$test.c <<EOF
-#include <stdio.h>
-
-int mytest()
-{
-  char buf[20];
-
-  snprintf(buf, sizeof(buf), "%s", "foo");
-  return 0;
-}
-
-int main()
-{
-  return (mytest());
-}
-EOF
-
-  if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then
-    echo "Checking for snprintf() in stdio.h... Yes."
-
-    cat >$test.c <<EOF
-#include <stdio.h>
-
-int mytest()
-{
-  char buf[20];
-
-  return snprintf(buf, sizeof(buf), "%s", "foo");
-}
-
-int main()
-{
-  return (mytest());
-}
-EOF
-
-    if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
-      echo "Checking for return value of snprintf()... Yes."
-    else
-      CFLAGS="$CFLAGS -DHAS_snprintf_void"
-      echo "Checking for return value of snprintf()... No."
-      echo "  WARNING: apparently snprintf() does not return a value. zlib"
-      echo "  can build but will be open to possible string-format security"
-      echo "  vulnerabilities."
-    fi
-  else
-    CFLAGS="$CFLAGS -DNO_snprintf"
-    echo "Checking for snprintf() in stdio.h... No."
-    echo "  WARNING: snprintf() not found, falling back to sprintf(). zlib"
-    echo "  can build but will be open to possible buffer-overflow security"
-    echo "  vulnerabilities."
-
-    cat >$test.c <<EOF
-#include <stdio.h>
-
-int mytest()
-{
-  char buf[20];
-
-  return sprintf(buf, "%s", "foo");
-}
-
-int main()
-{
-  return (mytest());
-}
-EOF
-
-    if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
-      echo "Checking for return value of sprintf()... Yes."
-    else
-      CFLAGS="$CFLAGS -DHAS_sprintf_void"
-      echo "Checking for return value of sprintf()... No."
-      echo "  WARNING: apparently sprintf() does not return a value. zlib"
-      echo "  can build but will be open to possible string-format security"
-      echo "  vulnerabilities."
-    fi
-  fi
-fi
-
-cat >$test.c <<EOF
-#include <errno.h>
-int main() { return 0; }
-EOF
-if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
-  echo "Checking for errno.h... Yes."
-else
-  echo "Checking for errno.h... No."
-  CFLAGS="$CFLAGS -DNO_ERRNO_H"
-fi
-
-cat > $test.c <<EOF
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-caddr_t hello() {
-  return mmap((caddr_t)0, (off_t)0, PROT_READ, MAP_SHARED, 0, (off_t)0);
-}
-EOF
-if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
-  CFLAGS="$CFLAGS -DUSE_MMAP"
-  echo Checking for mmap support... Yes.
-else
-  echo Checking for mmap support... No.
-fi
-
-CPP=${CPP-"$CC -E"}
-case $CFLAGS in
-  *ASMV*)
-    if test "`nm $test.o | grep _hello`" = ""; then
-      CPP="$CPP -DNO_UNDERLINE"
-      echo Checking for underline in external names... No.
-    else
-      echo Checking for underline in external names... Yes.
-    fi;;
-esac
-
-rm -f $test.[co] $test $test$shared_ext
-
-# udpate Makefile
-sed < Makefile.in "
-/^CC *=/s#=.*#=$CC#
-/^CFLAGS *=/s#=.*#=$CFLAGS#
-/^CPP *=/s#=.*#=$CPP#
-/^LDSHARED *=/s#=.*#=$LDSHARED#
-/^LIBS *=/s#=.*#=$LIBS#
-/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
-/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
-/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
-/^AR *=/s#=.*#=$AR#
-/^RANLIB *=/s#=.*#=$RANLIB#
-/^EXE *=/s#=.*#=$EXE#
-/^prefix *=/s#=.*#=$prefix#
-/^exec_prefix *=/s#=.*#=$exec_prefix#
-/^libdir *=/s#=.*#=$libdir#
-/^includedir *=/s#=.*#=$includedir#
-/^mandir *=/s#=.*#=$mandir#
-/^LDFLAGS *=/s#=.*#=$LDFLAGS#
-" > Makefile
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/crc32.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/crc32.c
deleted file mode 100644
index 32814c2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/crc32.c
+++ /dev/null
@@ -1,423 +0,0 @@
-/* crc32.c -- compute the CRC-32 of a data stream
- * Copyright (C) 1995-2005 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- *
- * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
- * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing
- * tables for updating the shift register in one step with three exclusive-ors
- * instead of four steps with four exclusive-ors.  This results in about a
- * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
- */
-
-/* @(#) $Id$ */
-
-/*
-  Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore
-  protection on the static variables used to control the first-use generation
-  of the crc tables.  Therefore, if you #define DYNAMIC_CRC_TABLE, you should
-  first call get_crc_table() to initialize the tables before allowing more than
-  one thread to use crc32().
- */
-
-#ifdef MAKECRCH
-#  include <stdio.h>
-#  ifndef DYNAMIC_CRC_TABLE
-#    define DYNAMIC_CRC_TABLE
-#  endif /* !DYNAMIC_CRC_TABLE */
-#endif /* MAKECRCH */
-
-#include "zutil.h"      /* for STDC and FAR definitions */
-
-#define local static
-
-/* Find a four-byte integer type for crc32_little() and crc32_big(). */
-#ifndef NOBYFOUR
-#  ifdef STDC           /* need ANSI C limits.h to determine sizes */
-#    include <limits.h>
-#    define BYFOUR
-#    if (UINT_MAX == 0xffffffffUL)
-       typedef unsigned int u4;
-#    else
-#      if (ULONG_MAX == 0xffffffffUL)
-         typedef unsigned long u4;
-#      else
-#        if (USHRT_MAX == 0xffffffffUL)
-           typedef unsigned short u4;
-#        else
-#          undef BYFOUR     /* can't find a four-byte integer type! */
-#        endif
-#      endif
-#    endif
-#  endif /* STDC */
-#endif /* !NOBYFOUR */
-
-/* Definitions for doing the crc four data bytes at a time. */
-#ifdef BYFOUR
-#  define REV(w) (((w)>>24)+(((w)>>8)&0xff00)+ \
-                (((w)&0xff00)<<8)+(((w)&0xff)<<24))
-   local unsigned long crc32_little OF((unsigned long,
-                        const unsigned char FAR *, unsigned));
-   local unsigned long crc32_big OF((unsigned long,
-                        const unsigned char FAR *, unsigned));
-#  define TBLS 8
-#else
-#  define TBLS 1
-#endif /* BYFOUR */
-
-/* Local functions for crc concatenation */
-local unsigned long gf2_matrix_times OF((unsigned long *mat,
-                                         unsigned long vec));
-local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));
-
-#ifdef DYNAMIC_CRC_TABLE
-
-local volatile int crc_table_empty = 1;
-local unsigned long FAR crc_table[TBLS][256];
-local void make_crc_table OF((void));
-#ifdef MAKECRCH
-   local void write_table OF((FILE *, const unsigned long FAR *));
-#endif /* MAKECRCH */
-/*
-  Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
-  x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
-
-  Polynomials over GF(2) are represented in binary, one bit per coefficient,
-  with the lowest powers in the most significant bit.  Then adding polynomials
-  is just exclusive-or, and multiplying a polynomial by x is a right shift by
-  one.  If we call the above polynomial p, and represent a byte as the
-  polynomial q, also with the lowest power in the most significant bit (so the
-  byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
-  where a mod b means the remainder after dividing a by b.
-
-  This calculation is done using the shift-register method of multiplying and
-  taking the remainder.  The register is initialized to zero, and for each
-  incoming bit, x^32 is added mod p to the register if the bit is a one (where
-  x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
-  x (which is shifting right by one and adding x^32 mod p if the bit shifted
-  out is a one).  We start with the highest power (least significant bit) of
-  q and repeat for all eight bits of q.
-
-  The first table is simply the CRC of all possible eight bit values.  This is
-  all the information needed to generate CRCs on data a byte at a time for all
-  combinations of CRC register values and incoming bytes.  The remaining tables
-  allow for word-at-a-time CRC calculation for both big-endian and little-
-  endian machines, where a word is four bytes.
-*/
-local void make_crc_table()
-{
-    unsigned long c;
-    int n, k;
-    unsigned long poly;                 /* polynomial exclusive-or pattern */
-    /* terms of polynomial defining this crc (except x^32): */
-    static volatile int first = 1;      /* flag to limit concurrent making */
-    static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
-
-    /* See if another task is already doing this (not thread-safe, but better
-       than nothing -- significantly reduces duration of vulnerability in
-       case the advice about DYNAMIC_CRC_TABLE is ignored) */
-    if (first) {
-        first = 0;
-
-        /* make exclusive-or pattern from polynomial (0xedb88320UL) */
-        poly = 0UL;
-        for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++)
-            poly |= 1UL << (31 - p[n]);
-
-        /* generate a crc for every 8-bit value */
-        for (n = 0; n < 256; n++) {
-            c = (unsigned long)n;
-            for (k = 0; k < 8; k++)
-                c = c & 1 ? poly ^ (c >> 1) : c >> 1;
-            crc_table[0][n] = c;
-        }
-
-#ifdef BYFOUR
-        /* generate crc for each value followed by one, two, and three zeros,
-           and then the byte reversal of those as well as the first table */
-        for (n = 0; n < 256; n++) {
-            c = crc_table[0][n];
-            crc_table[4][n] = REV(c);
-            for (k = 1; k < 4; k++) {
-                c = crc_table[0][c & 0xff] ^ (c >> 8);
-                crc_table[k][n] = c;
-                crc_table[k + 4][n] = REV(c);
-            }
-        }
-#endif /* BYFOUR */
-
-        crc_table_empty = 0;
-    }
-    else {      /* not first */
-        /* wait for the other guy to finish (not efficient, but rare) */
-        while (crc_table_empty)
-            ;
-    }
-
-#ifdef MAKECRCH
-    /* write out CRC tables to crc32.h */
-    {
-        FILE *out;
-
-        out = fopen("crc32.h", "w");
-        if (out == NULL) return;
-        fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
-        fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
-        fprintf(out, "local const unsigned long FAR ");
-        fprintf(out, "crc_table[TBLS][256] =\n{\n  {\n");
-        write_table(out, crc_table[0]);
-#  ifdef BYFOUR
-        fprintf(out, "#ifdef BYFOUR\n");
-        for (k = 1; k < 8; k++) {
-            fprintf(out, "  },\n  {\n");
-            write_table(out, crc_table[k]);
-        }
-        fprintf(out, "#endif\n");
-#  endif /* BYFOUR */
-        fprintf(out, "  }\n};\n");
-        fclose(out);
-    }
-#endif /* MAKECRCH */
-}
-
-#ifdef MAKECRCH
-local void write_table(out, table)
-    FILE *out;
-    const unsigned long FAR *table;
-{
-    int n;
-
-    for (n = 0; n < 256; n++)
-        fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : "    ", table[n],
-                n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));
-}
-#endif /* MAKECRCH */
-
-#else /* !DYNAMIC_CRC_TABLE */
-/* ========================================================================
- * Tables of CRC-32s of all single-byte values, made by make_crc_table().
- */
-#include "crc32.h"
-#endif /* DYNAMIC_CRC_TABLE */
-
-/* =========================================================================
- * This function can be used by asm versions of crc32()
- */
-const unsigned long FAR * ZEXPORT get_crc_table()
-{
-#ifdef DYNAMIC_CRC_TABLE
-    if (crc_table_empty)
-        make_crc_table();
-#endif /* DYNAMIC_CRC_TABLE */
-    return (const unsigned long FAR *)crc_table;
-}
-
-/* ========================================================================= */
-#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
-#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
-
-/* ========================================================================= */
-unsigned long ZEXPORT crc32(crc, buf, len)
-    unsigned long crc;
-    const unsigned char FAR *buf;
-    unsigned len;
-{
-    if (buf == Z_NULL) return 0UL;
-
-#ifdef DYNAMIC_CRC_TABLE
-    if (crc_table_empty)
-        make_crc_table();
-#endif /* DYNAMIC_CRC_TABLE */
-
-#ifdef BYFOUR
-    if (sizeof(void *) == sizeof(ptrdiff_t)) {
-        u4 endian;
-
-        endian = 1;
-        if (*((unsigned char *)(&endian)))
-            return crc32_little(crc, buf, len);
-        else
-            return crc32_big(crc, buf, len);
-    }
-#endif /* BYFOUR */
-    crc = crc ^ 0xffffffffUL;
-    while (len >= 8) {
-        DO8;
-        len -= 8;
-    }
-    if (len) do {
-        DO1;
-    } while (--len);
-    return crc ^ 0xffffffffUL;
-}
-
-#ifdef BYFOUR
-
-/* ========================================================================= */
-#define DOLIT4 c ^= *buf4++; \
-        c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \
-            crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]
-#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
-
-/* ========================================================================= */
-local unsigned long crc32_little(crc, buf, len)
-    unsigned long crc;
-    const unsigned char FAR *buf;
-    unsigned len;
-{
-    register u4 c;
-    register const u4 FAR *buf4;
-
-    c = (u4)crc;
-    c = ~c;
-    while (len && ((ptrdiff_t)buf & 3)) {
-        c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
-        len--;
-    }
-
-    buf4 = (const u4 FAR *)(const void FAR *)buf;
-    while (len >= 32) {
-        DOLIT32;
-        len -= 32;
-    }
-    while (len >= 4) {
-        DOLIT4;
-        len -= 4;
-    }
-    buf = (const unsigned char FAR *)buf4;
-
-    if (len) do {
-        c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
-    } while (--len);
-    c = ~c;
-    return (unsigned long)c;
-}
-
-/* ========================================================================= */
-#define DOBIG4 c ^= *++buf4; \
-        c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
-            crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
-#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
-
-/* ========================================================================= */
-local unsigned long crc32_big(crc, buf, len)
-    unsigned long crc;
-    const unsigned char FAR *buf;
-    unsigned len;
-{
-    register u4 c;
-    register const u4 FAR *buf4;
-
-    c = REV((u4)crc);
-    c = ~c;
-    while (len && ((ptrdiff_t)buf & 3)) {
-        c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
-        len--;
-    }
-
-    buf4 = (const u4 FAR *)(const void FAR *)buf;
-    buf4--;
-    while (len >= 32) {
-        DOBIG32;
-        len -= 32;
-    }
-    while (len >= 4) {
-        DOBIG4;
-        len -= 4;
-    }
-    buf4++;
-    buf = (const unsigned char FAR *)buf4;
-
-    if (len) do {
-        c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
-    } while (--len);
-    c = ~c;
-    return (unsigned long)(REV(c));
-}
-
-#endif /* BYFOUR */
-
-#define GF2_DIM 32      /* dimension of GF(2) vectors (length of CRC) */
-
-/* ========================================================================= */
-local unsigned long gf2_matrix_times(mat, vec)
-    unsigned long *mat;
-    unsigned long vec;
-{
-    unsigned long sum;
-
-    sum = 0;
-    while (vec) {
-        if (vec & 1)
-            sum ^= *mat;
-        vec >>= 1;
-        mat++;
-    }
-    return sum;
-}
-
-/* ========================================================================= */
-local void gf2_matrix_square(square, mat)
-    unsigned long *square;
-    unsigned long *mat;
-{
-    int n;
-
-    for (n = 0; n < GF2_DIM; n++)
-        square[n] = gf2_matrix_times(mat, mat[n]);
-}
-
-/* ========================================================================= */
-uLong ZEXPORT crc32_combine(crc1, crc2, len2)
-    uLong crc1;
-    uLong crc2;
-    z_off_t len2;
-{
-    int n;
-    unsigned long row;
-    unsigned long even[GF2_DIM];    /* even-power-of-two zeros operator */
-    unsigned long odd[GF2_DIM];     /* odd-power-of-two zeros operator */
-
-    /* degenerate case */
-    if (len2 == 0)
-        return crc1;
-
-    /* put operator for one zero bit in odd */
-    odd[0] = 0xedb88320L;           /* CRC-32 polynomial */
-    row = 1;
-    for (n = 1; n < GF2_DIM; n++) {
-        odd[n] = row;
-        row <<= 1;
-    }
-
-    /* put operator for two zero bits in even */
-    gf2_matrix_square(even, odd);
-
-    /* put operator for four zero bits in odd */
-    gf2_matrix_square(odd, even);
-
-    /* apply len2 zeros to crc1 (first square will put the operator for one
-       zero byte, eight zero bits, in even) */
-    do {
-        /* apply zeros operator for this bit of len2 */
-        gf2_matrix_square(even, odd);
-        if (len2 & 1)
-            crc1 = gf2_matrix_times(even, crc1);
-        len2 >>= 1;
-
-        /* if no more bits set, then done */
-        if (len2 == 0)
-            break;
-
-        /* another iteration of the loop with odd and even swapped */
-        gf2_matrix_square(odd, even);
-        if (len2 & 1)
-            crc1 = gf2_matrix_times(odd, crc1);
-        len2 >>= 1;
-
-        /* if no more bits set, then done */
-    } while (len2 != 0);
-
-    /* return combined crc */
-    crc1 ^= crc2;
-    return crc1;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/crc32.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/crc32.h
deleted file mode 100644
index 5de49bc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/crc32.h
+++ /dev/null
@@ -1,441 +0,0 @@
-/* crc32.h -- tables for rapid CRC calculation
- * Generated automatically by crc32.c
- */
-
-local const unsigned long FAR crc_table[TBLS][256] =
-{
-  {
-    0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
-    0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
-    0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
-    0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
-    0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
-    0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
-    0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
-    0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
-    0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
-    0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
-    0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
-    0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
-    0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
-    0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
-    0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
-    0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
-    0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
-    0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
-    0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
-    0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
-    0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
-    0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
-    0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
-    0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
-    0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
-    0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
-    0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
-    0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
-    0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
-    0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
-    0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
-    0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
-    0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
-    0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
-    0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
-    0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
-    0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
-    0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
-    0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
-    0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
-    0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
-    0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
-    0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
-    0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
-    0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
-    0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
-    0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
-    0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
-    0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
-    0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
-    0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
-    0x2d02ef8dUL
-#ifdef BYFOUR
-  },
-  {
-    0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL,
-    0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL,
-    0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL,
-    0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL,
-    0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL,
-    0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL,
-    0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL,
-    0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL,
-    0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL,
-    0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL,
-    0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL,
-    0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL,
-    0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL,
-    0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL,
-    0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL,
-    0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL,
-    0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL,
-    0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL,
-    0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL,
-    0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL,
-    0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL,
-    0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL,
-    0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL,
-    0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL,
-    0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL,
-    0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL,
-    0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL,
-    0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL,
-    0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL,
-    0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL,
-    0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL,
-    0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL,
-    0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL,
-    0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL,
-    0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL,
-    0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL,
-    0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL,
-    0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL,
-    0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL,
-    0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL,
-    0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL,
-    0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL,
-    0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL,
-    0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL,
-    0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL,
-    0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL,
-    0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL,
-    0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL,
-    0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL,
-    0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL,
-    0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL,
-    0x9324fd72UL
-  },
-  {
-    0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL,
-    0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL,
-    0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL,
-    0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL,
-    0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL,
-    0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL,
-    0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL,
-    0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL,
-    0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL,
-    0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL,
-    0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL,
-    0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL,
-    0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL,
-    0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL,
-    0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL,
-    0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL,
-    0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL,
-    0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL,
-    0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL,
-    0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL,
-    0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL,
-    0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL,
-    0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL,
-    0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL,
-    0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL,
-    0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL,
-    0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL,
-    0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL,
-    0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL,
-    0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL,
-    0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL,
-    0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL,
-    0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL,
-    0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL,
-    0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL,
-    0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL,
-    0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL,
-    0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL,
-    0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL,
-    0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL,
-    0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL,
-    0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL,
-    0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL,
-    0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL,
-    0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL,
-    0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL,
-    0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL,
-    0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL,
-    0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL,
-    0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL,
-    0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL,
-    0xbe9834edUL
-  },
-  {
-    0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL,
-    0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL,
-    0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL,
-    0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL,
-    0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL,
-    0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL,
-    0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL,
-    0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL,
-    0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL,
-    0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL,
-    0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL,
-    0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL,
-    0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL,
-    0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL,
-    0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL,
-    0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL,
-    0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL,
-    0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL,
-    0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL,
-    0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL,
-    0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL,
-    0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL,
-    0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL,
-    0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL,
-    0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL,
-    0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL,
-    0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL,
-    0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL,
-    0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL,
-    0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL,
-    0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL,
-    0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL,
-    0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL,
-    0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL,
-    0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL,
-    0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL,
-    0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL,
-    0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL,
-    0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL,
-    0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL,
-    0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL,
-    0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL,
-    0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
-    0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
-    0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
-    0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
-    0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
-    0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
-    0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
-    0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
-    0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
-    0xde0506f1UL
-  },
-  {
-    0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL,
-    0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL,
-    0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL,
-    0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL,
-    0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL,
-    0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL,
-    0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL,
-    0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL,
-    0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL,
-    0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL,
-    0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL,
-    0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL,
-    0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL,
-    0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL,
-    0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL,
-    0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL,
-    0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL,
-    0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL,
-    0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL,
-    0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL,
-    0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL,
-    0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL,
-    0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL,
-    0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL,
-    0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL,
-    0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL,
-    0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL,
-    0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL,
-    0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL,
-    0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL,
-    0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL,
-    0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL,
-    0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL,
-    0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL,
-    0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL,
-    0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL,
-    0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL,
-    0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL,
-    0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL,
-    0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL,
-    0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL,
-    0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL,
-    0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL,
-    0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL,
-    0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL,
-    0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL,
-    0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL,
-    0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL,
-    0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL,
-    0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL,
-    0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL,
-    0x8def022dUL
-  },
-  {
-    0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL,
-    0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL,
-    0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL,
-    0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL,
-    0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL,
-    0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL,
-    0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL,
-    0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL,
-    0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL,
-    0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL,
-    0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL,
-    0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL,
-    0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL,
-    0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL,
-    0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL,
-    0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL,
-    0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL,
-    0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL,
-    0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL,
-    0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL,
-    0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL,
-    0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL,
-    0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL,
-    0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL,
-    0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL,
-    0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL,
-    0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL,
-    0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL,
-    0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL,
-    0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL,
-    0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL,
-    0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL,
-    0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL,
-    0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL,
-    0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL,
-    0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL,
-    0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL,
-    0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL,
-    0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL,
-    0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL,
-    0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL,
-    0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL,
-    0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL,
-    0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL,
-    0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL,
-    0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL,
-    0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL,
-    0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL,
-    0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL,
-    0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL,
-    0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL,
-    0x72fd2493UL
-  },
-  {
-    0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL,
-    0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL,
-    0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL,
-    0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL,
-    0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL,
-    0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL,
-    0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL,
-    0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL,
-    0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL,
-    0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL,
-    0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL,
-    0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL,
-    0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL,
-    0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL,
-    0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL,
-    0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL,
-    0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL,
-    0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL,
-    0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL,
-    0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL,
-    0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL,
-    0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL,
-    0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL,
-    0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL,
-    0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL,
-    0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL,
-    0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL,
-    0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL,
-    0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL,
-    0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL,
-    0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL,
-    0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL,
-    0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL,
-    0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL,
-    0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL,
-    0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL,
-    0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL,
-    0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL,
-    0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL,
-    0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL,
-    0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL,
-    0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL,
-    0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL,
-    0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL,
-    0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL,
-    0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL,
-    0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL,
-    0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL,
-    0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL,
-    0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL,
-    0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL,
-    0xed3498beUL
-  },
-  {
-    0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL,
-    0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL,
-    0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL,
-    0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL,
-    0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL,
-    0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL,
-    0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL,
-    0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL,
-    0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL,
-    0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL,
-    0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL,
-    0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL,
-    0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL,
-    0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL,
-    0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL,
-    0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL,
-    0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL,
-    0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL,
-    0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL,
-    0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL,
-    0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL,
-    0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL,
-    0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL,
-    0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL,
-    0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL,
-    0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL,
-    0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL,
-    0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL,
-    0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL,
-    0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL,
-    0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL,
-    0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL,
-    0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL,
-    0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL,
-    0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL,
-    0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL,
-    0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL,
-    0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL,
-    0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL,
-    0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL,
-    0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL,
-    0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL,
-    0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL,
-    0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL,
-    0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL,
-    0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL,
-    0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL,
-    0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL,
-    0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL,
-    0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL,
-    0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL,
-    0xf10605deUL
-#endif
-  }
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/deflate.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/deflate.c
deleted file mode 100644
index 529f716..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/deflate.c
+++ /dev/null
@@ -1,1736 +0,0 @@
-/* deflate.c -- compress data using the deflation algorithm
- * Copyright (C) 1995-2005 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/*
- *  ALGORITHM
- *
- *      The "deflation" process depends on being able to identify portions
- *      of the input text which are identical to earlier input (within a
- *      sliding window trailing behind the input currently being processed).
- *
- *      The most straightforward technique turns out to be the fastest for
- *      most input files: try all possible matches and select the longest.
- *      The key feature of this algorithm is that insertions into the string
- *      dictionary are very simple and thus fast, and deletions are avoided
- *      completely. Insertions are performed at each input character, whereas
- *      string matches are performed only when the previous match ends. So it
- *      is preferable to spend more time in matches to allow very fast string
- *      insertions and avoid deletions. The matching algorithm for small
- *      strings is inspired from that of Rabin & Karp. A brute force approach
- *      is used to find longer strings when a small match has been found.
- *      A similar algorithm is used in comic (by Jan-Mark Wams) and freeze
- *      (by Leonid Broukhis).
- *         A previous version of this file used a more sophisticated algorithm
- *      (by Fiala and Greene) which is guaranteed to run in linear amortized
- *      time, but has a larger average cost, uses more memory and is patented.
- *      However the F&G algorithm may be faster for some highly redundant
- *      files if the parameter max_chain_length (described below) is too large.
- *
- *  ACKNOWLEDGEMENTS
- *
- *      The idea of lazy evaluation of matches is due to Jan-Mark Wams, and
- *      I found it in 'freeze' written by Leonid Broukhis.
- *      Thanks to many people for bug reports and testing.
- *
- *  REFERENCES
- *
- *      Deutsch, L.P.,"DEFLATE Compressed Data Format Specification".
- *      Available in http://www.ietf.org/rfc/rfc1951.txt
- *
- *      A description of the Rabin and Karp algorithm is given in the book
- *         "Algorithms" by R. Sedgewick, Addison-Wesley, p252.
- *
- *      Fiala,E.R., and Greene,D.H.
- *         Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595
- *
- */
-
-/* @(#) $Id$ */
-
-#include "deflate.h"
-
-const char deflate_copyright[] =
-   " deflate 1.2.3 Copyright 1995-2005 Jean-loup Gailly ";
-/*
-  If you use the zlib library in a product, an acknowledgment is welcome
-  in the documentation of your product. If for some reason you cannot
-  include such an acknowledgment, I would appreciate that you keep this
-  copyright string in the executable of your product.
- */
-
-/* ===========================================================================
- *  Function prototypes.
- */
-typedef enum {
-    need_more,      /* block not completed, need more input or more output */
-    block_done,     /* block flush performed */
-    finish_started, /* finish started, need only more output at next deflate */
-    finish_done     /* finish done, accept no more input or output */
-} block_state;
-
-typedef block_state (*compress_func) OF((deflate_state *s, int flush));
-/* Compression function. Returns the block state after the call. */
-
-local void fill_window    OF((deflate_state *s));
-local block_state deflate_stored OF((deflate_state *s, int flush));
-local block_state deflate_fast   OF((deflate_state *s, int flush));
-#ifndef FASTEST
-local block_state deflate_slow   OF((deflate_state *s, int flush));
-#endif
-local void lm_init        OF((deflate_state *s));
-local void putShortMSB    OF((deflate_state *s, uInt b));
-local void flush_pending  OF((z_streamp strm));
-local int read_buf        OF((z_streamp strm, Bytef *buf, unsigned size));
-#ifndef FASTEST
-#ifdef ASMV
-      void match_init OF((void)); /* asm code initialization */
-      uInt longest_match  OF((deflate_state *s, IPos cur_match));
-#else
-local uInt longest_match  OF((deflate_state *s, IPos cur_match));
-#endif
-#endif
-local uInt longest_match_fast OF((deflate_state *s, IPos cur_match));
-
-#ifdef DEBUG
-local  void check_match OF((deflate_state *s, IPos start, IPos match,
-                            int length));
-#endif
-
-/* ===========================================================================
- * Local data
- */
-
-#define NIL 0
-/* Tail of hash chains */
-
-#ifndef TOO_FAR
-#  define TOO_FAR 4096
-#endif
-/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */
-
-#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
-/* Minimum amount of lookahead, except at the end of the input file.
- * See deflate.c for comments about the MIN_MATCH+1.
- */
-
-/* Values for max_lazy_match, good_match and max_chain_length, depending on
- * the desired pack level (0..9). The values given below have been tuned to
- * exclude worst case performance for pathological files. Better values may be
- * found for specific files.
- */
-typedef struct config_s {
-   ush good_length; /* reduce lazy search above this match length */
-   ush max_lazy;    /* do not perform lazy search above this match length */
-   ush nice_length; /* quit search above this match length */
-   ush max_chain;
-   compress_func func;
-} config;
-
-#ifdef FASTEST
-local const config configuration_table[2] = {
-/*      good lazy nice chain */
-/* 0 */ {0,    0,  0,    0, deflate_stored},  /* store only */
-/* 1 */ {4,    4,  8,    4, deflate_fast}}; /* max speed, no lazy matches */
-#else
-local const config configuration_table[10] = {
-/*      good lazy nice chain */
-/* 0 */ {0,    0,  0,    0, deflate_stored},  /* store only */
-/* 1 */ {4,    4,  8,    4, deflate_fast}, /* max speed, no lazy matches */
-/* 2 */ {4,    5, 16,    8, deflate_fast},
-/* 3 */ {4,    6, 32,   32, deflate_fast},
-
-/* 4 */ {4,    4, 16,   16, deflate_slow},  /* lazy matches */
-/* 5 */ {8,   16, 32,   32, deflate_slow},
-/* 6 */ {8,   16, 128, 128, deflate_slow},
-/* 7 */ {8,   32, 128, 256, deflate_slow},
-/* 8 */ {32, 128, 258, 1024, deflate_slow},
-/* 9 */ {32, 258, 258, 4096, deflate_slow}}; /* max compression */
-#endif
-
-/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4
- * For deflate_fast() (levels <= 3) good is ignored and lazy has a different
- * meaning.
- */
-
-#define EQUAL 0
-/* result of memcmp for equal strings */
-
-#ifndef NO_DUMMY_DECL
-struct static_tree_desc_s {int dummy;}; /* for buggy compilers */
-#endif
-
-/* ===========================================================================
- * Update a hash value with the given input byte
- * IN  assertion: all calls to to UPDATE_HASH are made with consecutive
- *    input characters, so that a running hash key can be computed from the
- *    previous key instead of complete recalculation each time.
- */
-#define UPDATE_HASH(s,h,c) (h = (((h)<<s->hash_shift) ^ (c)) & s->hash_mask)
-
-
-/* ===========================================================================
- * Insert string str in the dictionary and set match_head to the previous head
- * of the hash chain (the most recent string with same hash key). Return
- * the previous length of the hash chain.
- * If this file is compiled with -DFASTEST, the compression level is forced
- * to 1, and no hash chains are maintained.
- * IN  assertion: all calls to to INSERT_STRING are made with consecutive
- *    input characters and the first MIN_MATCH bytes of str are valid
- *    (except for the last MIN_MATCH-1 bytes of the input file).
- */
-#ifdef FASTEST
-#define INSERT_STRING(s, str, match_head) \
-   (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \
-    match_head = s->head[s->ins_h], \
-    s->head[s->ins_h] = (Pos)(str))
-#else
-#define INSERT_STRING(s, str, match_head) \
-   (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \
-    match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \
-    s->head[s->ins_h] = (Pos)(str))
-#endif
-
-/* ===========================================================================
- * Initialize the hash table (avoiding 64K overflow for 16 bit systems).
- * prev[] will be initialized on the fly.
- */
-#define CLEAR_HASH(s) \
-    s->head[s->hash_size-1] = NIL; \
-    zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head));
-
-/* ========================================================================= */
-int ZEXPORT deflateInit_(strm, level, version, stream_size)
-    z_streamp strm;
-    int level;
-    const char *version;
-    int stream_size;
-{
-    return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL,
-                         Z_DEFAULT_STRATEGY, version, stream_size);
-    /* To do: ignore strm->next_in if we use it as window */
-}
-
-/* ========================================================================= */
-int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
-                  version, stream_size)
-    z_streamp strm;
-    int  level;
-    int  method;
-    int  windowBits;
-    int  memLevel;
-    int  strategy;
-    const char *version;
-    int stream_size;
-{
-    deflate_state *s;
-    int wrap = 1;
-    static const char my_version[] = ZLIB_VERSION;
-
-    ushf *overlay;
-    /* We overlay pending_buf and d_buf+l_buf. This works since the average
-     * output size for (length,distance) codes is <= 24 bits.
-     */
-
-    if (version == Z_NULL || version[0] != my_version[0] ||
-        stream_size != sizeof(z_stream)) {
-        return Z_VERSION_ERROR;
-    }
-    if (strm == Z_NULL) return Z_STREAM_ERROR;
-
-    strm->msg = Z_NULL;
-    if (strm->zalloc == (alloc_func)0) {
-        strm->zalloc = zcalloc;
-        strm->opaque = (voidpf)0;
-    }
-    if (strm->zfree == (free_func)0) strm->zfree = zcfree;
-
-#ifdef FASTEST
-    if (level != 0) level = 1;
-#else
-    if (level == Z_DEFAULT_COMPRESSION) level = 6;
-#endif
-
-    if (windowBits < 0) { /* suppress zlib wrapper */
-        wrap = 0;
-        windowBits = -windowBits;
-    }
-#ifdef GZIP
-    else if (windowBits > 15) {
-        wrap = 2;       /* write gzip wrapper instead */
-        windowBits -= 16;
-    }
-#endif
-    if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED ||
-        windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
-        strategy < 0 || strategy > Z_FIXED) {
-        return Z_STREAM_ERROR;
-    }
-    if (windowBits == 8) windowBits = 9;  /* until 256-byte window bug fixed */
-    s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state));
-    if (s == Z_NULL) return Z_MEM_ERROR;
-    strm->state = (struct internal_state FAR *)s;
-    s->strm = strm;
-
-    s->wrap = wrap;
-    s->gzhead = Z_NULL;
-    s->w_bits = windowBits;
-    s->w_size = 1 << s->w_bits;
-    s->w_mask = s->w_size - 1;
-
-    s->hash_bits = memLevel + 7;
-    s->hash_size = 1 << s->hash_bits;
-    s->hash_mask = s->hash_size - 1;
-    s->hash_shift =  ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH);
-
-    s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte));
-    s->prev   = (Posf *)  ZALLOC(strm, s->w_size, sizeof(Pos));
-    s->head   = (Posf *)  ZALLOC(strm, s->hash_size, sizeof(Pos));
-
-    s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
-
-    overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
-    s->pending_buf = (uchf *) overlay;
-    s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
-
-    if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
-        s->pending_buf == Z_NULL) {
-        s->status = FINISH_STATE;
-        strm->msg = (char*)ERR_MSG(Z_MEM_ERROR);
-        deflateEnd (strm);
-        return Z_MEM_ERROR;
-    }
-    s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
-    s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
-
-    s->level = level;
-    s->strategy = strategy;
-    s->method = (Byte)method;
-
-    return deflateReset(strm);
-}
-
-/* ========================================================================= */
-int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
-    z_streamp strm;
-    const Bytef *dictionary;
-    uInt  dictLength;
-{
-    deflate_state *s;
-    uInt length = dictLength;
-    uInt n;
-    IPos hash_head = 0;
-
-    if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL ||
-        strm->state->wrap == 2 ||
-        (strm->state->wrap == 1 && strm->state->status != INIT_STATE))
-        return Z_STREAM_ERROR;
-
-    s = strm->state;
-    if (s->wrap)
-        strm->adler = adler32(strm->adler, dictionary, dictLength);
-
-    if (length < MIN_MATCH) return Z_OK;
-    if (length > MAX_DIST(s)) {
-        length = MAX_DIST(s);
-        dictionary += dictLength - length; /* use the tail of the dictionary */
-    }
-    zmemcpy(s->window, dictionary, length);
-    s->strstart = length;
-    s->block_start = (long)length;
-
-    /* Insert all strings in the hash table (except for the last two bytes).
-     * s->lookahead stays null, so s->ins_h will be recomputed at the next
-     * call of fill_window.
-     */
-    s->ins_h = s->window[0];
-    UPDATE_HASH(s, s->ins_h, s->window[1]);
-    for (n = 0; n <= length - MIN_MATCH; n++) {
-        INSERT_STRING(s, n, hash_head);
-    }
-    if (hash_head) hash_head = 0;  /* to make compiler happy */
-    return Z_OK;
-}
-
-/* ========================================================================= */
-int ZEXPORT deflateReset (strm)
-    z_streamp strm;
-{
-    deflate_state *s;
-
-    if (strm == Z_NULL || strm->state == Z_NULL ||
-        strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) {
-        return Z_STREAM_ERROR;
-    }
-
-    strm->total_in = strm->total_out = 0;
-    strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */
-    strm->data_type = Z_UNKNOWN;
-
-    s = (deflate_state *)strm->state;
-    s->pending = 0;
-    s->pending_out = s->pending_buf;
-
-    if (s->wrap < 0) {
-        s->wrap = -s->wrap; /* was made negative by deflate(..., Z_FINISH); */
-    }
-    s->status = s->wrap ? INIT_STATE : BUSY_STATE;
-    strm->adler =
-#ifdef GZIP
-        s->wrap == 2 ? crc32(0L, Z_NULL, 0) :
-#endif
-        adler32(0L, Z_NULL, 0);
-    s->last_flush = Z_NO_FLUSH;
-
-    _tr_init(s);
-    lm_init(s);
-
-    return Z_OK;
-}
-
-/* ========================================================================= */
-int ZEXPORT deflateSetHeader (strm, head)
-    z_streamp strm;
-    gz_headerp head;
-{
-    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-    if (strm->state->wrap != 2) return Z_STREAM_ERROR;
-    strm->state->gzhead = head;
-    return Z_OK;
-}
-
-/* ========================================================================= */
-int ZEXPORT deflatePrime (strm, bits, value)
-    z_streamp strm;
-    int bits;
-    int value;
-{
-    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-    strm->state->bi_valid = bits;
-    strm->state->bi_buf = (ush)(value & ((1 << bits) - 1));
-    return Z_OK;
-}
-
-/* ========================================================================= */
-int ZEXPORT deflateParams(strm, level, strategy)
-    z_streamp strm;
-    int level;
-    int strategy;
-{
-    deflate_state *s;
-    compress_func func;
-    int err = Z_OK;
-
-    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-    s = strm->state;
-
-#ifdef FASTEST
-    if (level != 0) level = 1;
-#else
-    if (level == Z_DEFAULT_COMPRESSION) level = 6;
-#endif
-    if (level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) {
-        return Z_STREAM_ERROR;
-    }
-    func = configuration_table[s->level].func;
-
-    if (func != configuration_table[level].func && strm->total_in != 0) {
-        /* Flush the last buffer: */
-        err = deflate(strm, Z_PARTIAL_FLUSH);
-    }
-    if (s->level != level) {
-        s->level = level;
-        s->max_lazy_match   = configuration_table[level].max_lazy;
-        s->good_match       = configuration_table[level].good_length;
-        s->nice_match       = configuration_table[level].nice_length;
-        s->max_chain_length = configuration_table[level].max_chain;
-    }
-    s->strategy = strategy;
-    return err;
-}
-
-/* ========================================================================= */
-int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain)
-    z_streamp strm;
-    int good_length;
-    int max_lazy;
-    int nice_length;
-    int max_chain;
-{
-    deflate_state *s;
-
-    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-    s = strm->state;
-    s->good_match = good_length;
-    s->max_lazy_match = max_lazy;
-    s->nice_match = nice_length;
-    s->max_chain_length = max_chain;
-    return Z_OK;
-}
-
-/* =========================================================================
- * For the default windowBits of 15 and memLevel of 8, this function returns
- * a close to exact, as well as small, upper bound on the compressed size.
- * They are coded as constants here for a reason--if the #define's are
- * changed, then this function needs to be changed as well.  The return
- * value for 15 and 8 only works for those exact settings.
- *
- * For any setting other than those defaults for windowBits and memLevel,
- * the value returned is a conservative worst case for the maximum expansion
- * resulting from using fixed blocks instead of stored blocks, which deflate
- * can emit on compressed data for some combinations of the parameters.
- *
- * This function could be more sophisticated to provide closer upper bounds
- * for every combination of windowBits and memLevel, as well as wrap.
- * But even the conservative upper bound of about 14% expansion does not
- * seem onerous for output buffer allocation.
- */
-uLong ZEXPORT deflateBound(strm, sourceLen)
-    z_streamp strm;
-    uLong sourceLen;
-{
-    deflate_state *s;
-    uLong destLen;
-
-    /* conservative upper bound */
-    destLen = sourceLen +
-              ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 11;
-
-    /* if can't get parameters, return conservative bound */
-    if (strm == Z_NULL || strm->state == Z_NULL)
-        return destLen;
-
-    /* if not default parameters, return conservative bound */
-    s = strm->state;
-    if (s->w_bits != 15 || s->hash_bits != 8 + 7)
-        return destLen;
-
-    /* default settings: return tight bound for that case */
-    return compressBound(sourceLen);
-}
-
-/* =========================================================================
- * Put a short in the pending buffer. The 16-bit value is put in MSB order.
- * IN assertion: the stream state is correct and there is enough room in
- * pending_buf.
- */
-local void putShortMSB (s, b)
-    deflate_state *s;
-    uInt b;
-{
-    put_byte(s, (Byte)(b >> 8));
-    put_byte(s, (Byte)(b & 0xff));
-}
-
-/* =========================================================================
- * Flush as much pending output as possible. All deflate() output goes
- * through this function so some applications may wish to modify it
- * to avoid allocating a large strm->next_out buffer and copying into it.
- * (See also read_buf()).
- */
-local void flush_pending(strm)
-    z_streamp strm;
-{
-    unsigned len = strm->state->pending;
-
-    if (len > strm->avail_out) len = strm->avail_out;
-    if (len == 0) return;
-
-    zmemcpy(strm->next_out, strm->state->pending_out, len);
-    strm->next_out  += len;
-    strm->state->pending_out  += len;
-    strm->total_out += len;
-    strm->avail_out  -= len;
-    strm->state->pending -= len;
-    if (strm->state->pending == 0) {
-        strm->state->pending_out = strm->state->pending_buf;
-    }
-}
-
-/* ========================================================================= */
-int ZEXPORT deflate (strm, flush)
-    z_streamp strm;
-    int flush;
-{
-    int old_flush; /* value of flush param for previous deflate call */
-    deflate_state *s;
-
-    if (strm == Z_NULL || strm->state == Z_NULL ||
-        flush > Z_FINISH || flush < 0) {
-        return Z_STREAM_ERROR;
-    }
-    s = strm->state;
-
-    if (strm->next_out == Z_NULL ||
-        (strm->next_in == Z_NULL && strm->avail_in != 0) ||
-        (s->status == FINISH_STATE && flush != Z_FINISH)) {
-        ERR_RETURN(strm, Z_STREAM_ERROR);
-    }
-    if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR);
-
-    s->strm = strm; /* just in case */
-    old_flush = s->last_flush;
-    s->last_flush = flush;
-
-    /* Write the header */
-    if (s->status == INIT_STATE) {
-#ifdef GZIP
-        if (s->wrap == 2) {
-            strm->adler = crc32(0L, Z_NULL, 0);
-            put_byte(s, 31);
-            put_byte(s, 139);
-            put_byte(s, 8);
-            if (s->gzhead == NULL) {
-                put_byte(s, 0);
-                put_byte(s, 0);
-                put_byte(s, 0);
-                put_byte(s, 0);
-                put_byte(s, 0);
-                put_byte(s, s->level == 9 ? 2 :
-                            (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
-                             4 : 0));
-                put_byte(s, OS_CODE);
-                s->status = BUSY_STATE;
-            }
-            else {
-                put_byte(s, (s->gzhead->text ? 1 : 0) +
-                            (s->gzhead->hcrc ? 2 : 0) +
-                            (s->gzhead->extra == Z_NULL ? 0 : 4) +
-                            (s->gzhead->name == Z_NULL ? 0 : 8) +
-                            (s->gzhead->comment == Z_NULL ? 0 : 16)
-                        );
-                put_byte(s, (Byte)(s->gzhead->time & 0xff));
-                put_byte(s, (Byte)((s->gzhead->time >> 8) & 0xff));
-                put_byte(s, (Byte)((s->gzhead->time >> 16) & 0xff));
-                put_byte(s, (Byte)((s->gzhead->time >> 24) & 0xff));
-                put_byte(s, s->level == 9 ? 2 :
-                            (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ?
-                             4 : 0));
-                put_byte(s, s->gzhead->os & 0xff);
-                if (s->gzhead->extra != NULL) {
-                    put_byte(s, s->gzhead->extra_len & 0xff);
-                    put_byte(s, (s->gzhead->extra_len >> 8) & 0xff);
-                }
-                if (s->gzhead->hcrc)
-                    strm->adler = crc32(strm->adler, s->pending_buf,
-                                        s->pending);
-                s->gzindex = 0;
-                s->status = EXTRA_STATE;
-            }
-        }
-        else
-#endif
-        {
-            uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
-            uInt level_flags;
-
-            if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2)
-                level_flags = 0;
-            else if (s->level < 6)
-                level_flags = 1;
-            else if (s->level == 6)
-                level_flags = 2;
-            else
-                level_flags = 3;
-            header |= (level_flags << 6);
-            if (s->strstart != 0) header |= PRESET_DICT;
-            header += 31 - (header % 31);
-
-            s->status = BUSY_STATE;
-            putShortMSB(s, header);
-
-            /* Save the adler32 of the preset dictionary: */
-            if (s->strstart != 0) {
-                putShortMSB(s, (uInt)(strm->adler >> 16));
-                putShortMSB(s, (uInt)(strm->adler & 0xffff));
-            }
-            strm->adler = adler32(0L, Z_NULL, 0);
-        }
-    }
-#ifdef GZIP
-    if (s->status == EXTRA_STATE) {
-        if (s->gzhead->extra != NULL) {
-            uInt beg = s->pending;  /* start of bytes to update crc */
-
-            while (s->gzindex < (s->gzhead->extra_len & 0xffff)) {
-                if (s->pending == s->pending_buf_size) {
-                    if (s->gzhead->hcrc && s->pending > beg)
-                        strm->adler = crc32(strm->adler, s->pending_buf + beg,
-                                            s->pending - beg);
-                    flush_pending(strm);
-                    beg = s->pending;
-                    if (s->pending == s->pending_buf_size)
-                        break;
-                }
-                put_byte(s, s->gzhead->extra[s->gzindex]);
-                s->gzindex++;
-            }
-            if (s->gzhead->hcrc && s->pending > beg)
-                strm->adler = crc32(strm->adler, s->pending_buf + beg,
-                                    s->pending - beg);
-            if (s->gzindex == s->gzhead->extra_len) {
-                s->gzindex = 0;
-                s->status = NAME_STATE;
-            }
-        }
-        else
-            s->status = NAME_STATE;
-    }
-    if (s->status == NAME_STATE) {
-        if (s->gzhead->name != NULL) {
-            uInt beg = s->pending;  /* start of bytes to update crc */
-            int val;
-
-            do {
-                if (s->pending == s->pending_buf_size) {
-                    if (s->gzhead->hcrc && s->pending > beg)
-                        strm->adler = crc32(strm->adler, s->pending_buf + beg,
-                                            s->pending - beg);
-                    flush_pending(strm);
-                    beg = s->pending;
-                    if (s->pending == s->pending_buf_size) {
-                        val = 1;
-                        break;
-                    }
-                }
-                val = s->gzhead->name[s->gzindex++];
-                put_byte(s, val);
-            } while (val != 0);
-            if (s->gzhead->hcrc && s->pending > beg)
-                strm->adler = crc32(strm->adler, s->pending_buf + beg,
-                                    s->pending - beg);
-            if (val == 0) {
-                s->gzindex = 0;
-                s->status = COMMENT_STATE;
-            }
-        }
-        else
-            s->status = COMMENT_STATE;
-    }
-    if (s->status == COMMENT_STATE) {
-        if (s->gzhead->comment != NULL) {
-            uInt beg = s->pending;  /* start of bytes to update crc */
-            int val;
-
-            do {
-                if (s->pending == s->pending_buf_size) {
-                    if (s->gzhead->hcrc && s->pending > beg)
-                        strm->adler = crc32(strm->adler, s->pending_buf + beg,
-                                            s->pending - beg);
-                    flush_pending(strm);
-                    beg = s->pending;
-                    if (s->pending == s->pending_buf_size) {
-                        val = 1;
-                        break;
-                    }
-                }
-                val = s->gzhead->comment[s->gzindex++];
-                put_byte(s, val);
-            } while (val != 0);
-            if (s->gzhead->hcrc && s->pending > beg)
-                strm->adler = crc32(strm->adler, s->pending_buf + beg,
-                                    s->pending - beg);
-            if (val == 0)
-                s->status = HCRC_STATE;
-        }
-        else
-            s->status = HCRC_STATE;
-    }
-    if (s->status == HCRC_STATE) {
-        if (s->gzhead->hcrc) {
-            if (s->pending + 2 > s->pending_buf_size)
-                flush_pending(strm);
-            if (s->pending + 2 <= s->pending_buf_size) {
-                put_byte(s, (Byte)(strm->adler & 0xff));
-                put_byte(s, (Byte)((strm->adler >> 8) & 0xff));
-                strm->adler = crc32(0L, Z_NULL, 0);
-                s->status = BUSY_STATE;
-            }
-        }
-        else
-            s->status = BUSY_STATE;
-    }
-#endif
-
-    /* Flush as much pending output as possible */
-    if (s->pending != 0) {
-        flush_pending(strm);
-        if (strm->avail_out == 0) {
-            /* Since avail_out is 0, deflate will be called again with
-             * more output space, but possibly with both pending and
-             * avail_in equal to zero. There won't be anything to do,
-             * but this is not an error situation so make sure we
-             * return OK instead of BUF_ERROR at next call of deflate:
-             */
-            s->last_flush = -1;
-            return Z_OK;
-        }
-
-    /* Make sure there is something to do and avoid duplicate consecutive
-     * flushes. For repeated and useless calls with Z_FINISH, we keep
-     * returning Z_STREAM_END instead of Z_BUF_ERROR.
-     */
-    } else if (strm->avail_in == 0 && flush <= old_flush &&
-               flush != Z_FINISH) {
-        ERR_RETURN(strm, Z_BUF_ERROR);
-    }
-
-    /* User must not provide more input after the first FINISH: */
-    if (s->status == FINISH_STATE && strm->avail_in != 0) {
-        ERR_RETURN(strm, Z_BUF_ERROR);
-    }
-
-    /* Start a new block or continue the current one.
-     */
-    if (strm->avail_in != 0 || s->lookahead != 0 ||
-        (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) {
-        block_state bstate;
-
-        bstate = (*(configuration_table[s->level].func))(s, flush);
-
-        if (bstate == finish_started || bstate == finish_done) {
-            s->status = FINISH_STATE;
-        }
-        if (bstate == need_more || bstate == finish_started) {
-            if (strm->avail_out == 0) {
-                s->last_flush = -1; /* avoid BUF_ERROR next call, see above */
-            }
-            return Z_OK;
-            /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
-             * of deflate should use the same flush parameter to make sure
-             * that the flush is complete. So we don't have to output an
-             * empty block here, this will be done at next call. This also
-             * ensures that for a very small output buffer, we emit at most
-             * one empty block.
-             */
-        }
-        if (bstate == block_done) {
-            if (flush == Z_PARTIAL_FLUSH) {
-                _tr_align(s);
-            } else { /* FULL_FLUSH or SYNC_FLUSH */
-                _tr_stored_block(s, (char*)0, 0L, 0);
-                /* For a full flush, this empty block will be recognized
-                 * as a special marker by inflate_sync().
-                 */
-                if (flush == Z_FULL_FLUSH) {
-                    CLEAR_HASH(s);             /* forget history */
-                }
-            }
-            flush_pending(strm);
-            if (strm->avail_out == 0) {
-              s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */
-              return Z_OK;
-            }
-        }
-    }
-    Assert(strm->avail_out > 0, "bug2");
-
-    if (flush != Z_FINISH) return Z_OK;
-    if (s->wrap <= 0) return Z_STREAM_END;
-
-    /* Write the trailer */
-#ifdef GZIP
-    if (s->wrap == 2) {
-        put_byte(s, (Byte)(strm->adler & 0xff));
-        put_byte(s, (Byte)((strm->adler >> 8) & 0xff));
-        put_byte(s, (Byte)((strm->adler >> 16) & 0xff));
-        put_byte(s, (Byte)((strm->adler >> 24) & 0xff));
-        put_byte(s, (Byte)(strm->total_in & 0xff));
-        put_byte(s, (Byte)((strm->total_in >> 8) & 0xff));
-        put_byte(s, (Byte)((strm->total_in >> 16) & 0xff));
-        put_byte(s, (Byte)((strm->total_in >> 24) & 0xff));
-    }
-    else
-#endif
-    {
-        putShortMSB(s, (uInt)(strm->adler >> 16));
-        putShortMSB(s, (uInt)(strm->adler & 0xffff));
-    }
-    flush_pending(strm);
-    /* If avail_out is zero, the application will call deflate again
-     * to flush the rest.
-     */
-    if (s->wrap > 0) s->wrap = -s->wrap; /* write the trailer only once! */
-    return s->pending != 0 ? Z_OK : Z_STREAM_END;
-}
-
-/* ========================================================================= */
-int ZEXPORT deflateEnd (strm)
-    z_streamp strm;
-{
-    int status;
-
-    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-
-    status = strm->state->status;
-    if (status != INIT_STATE &&
-        status != EXTRA_STATE &&
-        status != NAME_STATE &&
-        status != COMMENT_STATE &&
-        status != HCRC_STATE &&
-        status != BUSY_STATE &&
-        status != FINISH_STATE) {
-      return Z_STREAM_ERROR;
-    }
-
-    /* Deallocate in reverse order of allocations: */
-    TRY_FREE(strm, strm->state->pending_buf);
-    TRY_FREE(strm, strm->state->head);
-    TRY_FREE(strm, strm->state->prev);
-    TRY_FREE(strm, strm->state->window);
-
-    ZFREE(strm, strm->state);
-    strm->state = Z_NULL;
-
-    return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK;
-}
-
-/* =========================================================================
- * Copy the source state to the destination state.
- * To simplify the source, this is not supported for 16-bit MSDOS (which
- * doesn't have enough memory anyway to duplicate compression states).
- */
-int ZEXPORT deflateCopy (dest, source)
-    z_streamp dest;
-    z_streamp source;
-{
-#ifdef MAXSEG_64K
-    return Z_STREAM_ERROR;
-#else
-    deflate_state *ds;
-    deflate_state *ss;
-    ushf *overlay;
-
-
-    if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL) {
-        return Z_STREAM_ERROR;
-    }
-
-    ss = source->state;
-
-    zmemcpy(dest, source, sizeof(z_stream));
-
-    ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state));
-    if (ds == Z_NULL) return Z_MEM_ERROR;
-    dest->state = (struct internal_state FAR *) ds;
-    zmemcpy(ds, ss, sizeof(deflate_state));
-    ds->strm = dest;
-
-    ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
-    ds->prev   = (Posf *)  ZALLOC(dest, ds->w_size, sizeof(Pos));
-    ds->head   = (Posf *)  ZALLOC(dest, ds->hash_size, sizeof(Pos));
-    overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
-    ds->pending_buf = (uchf *) overlay;
-
-    if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL ||
-        ds->pending_buf == Z_NULL) {
-        deflateEnd (dest);
-        return Z_MEM_ERROR;
-    }
-    /* following zmemcpy do not work for 16-bit MSDOS */
-    zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte));
-    zmemcpy(ds->prev, ss->prev, ds->w_size * sizeof(Pos));
-    zmemcpy(ds->head, ss->head, ds->hash_size * sizeof(Pos));
-    zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
-
-    ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
-    ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
-    ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
-
-    ds->l_desc.dyn_tree = ds->dyn_ltree;
-    ds->d_desc.dyn_tree = ds->dyn_dtree;
-    ds->bl_desc.dyn_tree = ds->bl_tree;
-
-    return Z_OK;
-#endif /* MAXSEG_64K */
-}
-
-/* ===========================================================================
- * Read a new buffer from the current input stream, update the adler32
- * and total number of bytes read.  All deflate() input goes through
- * this function so some applications may wish to modify it to avoid
- * allocating a large strm->next_in buffer and copying from it.
- * (See also flush_pending()).
- */
-local int read_buf(strm, buf, size)
-    z_streamp strm;
-    Bytef *buf;
-    unsigned size;
-{
-    unsigned len = strm->avail_in;
-
-    if (len > size) len = size;
-    if (len == 0) return 0;
-
-    strm->avail_in  -= len;
-
-    if (strm->state->wrap == 1) {
-        strm->adler = adler32(strm->adler, strm->next_in, len);
-    }
-#ifdef GZIP
-    else if (strm->state->wrap == 2) {
-        strm->adler = crc32(strm->adler, strm->next_in, len);
-    }
-#endif
-    zmemcpy(buf, strm->next_in, len);
-    strm->next_in  += len;
-    strm->total_in += len;
-
-    return (int)len;
-}
-
-/* ===========================================================================
- * Initialize the "longest match" routines for a new zlib stream
- */
-local void lm_init (s)
-    deflate_state *s;
-{
-    s->window_size = (ulg)2L*s->w_size;
-
-    CLEAR_HASH(s);
-
-    /* Set the default configuration parameters:
-     */
-    s->max_lazy_match   = configuration_table[s->level].max_lazy;
-    s->good_match       = configuration_table[s->level].good_length;
-    s->nice_match       = configuration_table[s->level].nice_length;
-    s->max_chain_length = configuration_table[s->level].max_chain;
-
-    s->strstart = 0;
-    s->block_start = 0L;
-    s->lookahead = 0;
-    s->match_length = s->prev_length = MIN_MATCH-1;
-    s->match_available = 0;
-    s->ins_h = 0;
-#ifndef FASTEST
-#ifdef ASMV
-    match_init(); /* initialize the asm code */
-#endif
-#endif
-}
-
-#ifndef FASTEST
-/* ===========================================================================
- * Set match_start to the longest match starting at the given string and
- * return its length. Matches shorter or equal to prev_length are discarded,
- * in which case the result is equal to prev_length and match_start is
- * garbage.
- * IN assertions: cur_match is the head of the hash chain for the current
- *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
- * OUT assertion: the match length is not greater than s->lookahead.
- */
-#ifndef ASMV
-/* For 80x86 and 680x0, an optimized version will be provided in match.asm or
- * match.S. The code will be functionally equivalent.
- */
-local uInt longest_match(s, cur_match)
-    deflate_state *s;
-    IPos cur_match;                             /* current match */
-{
-    unsigned chain_length = s->max_chain_length;/* max hash chain length */
-    register Bytef *scan = s->window + s->strstart; /* current string */
-    register Bytef *match;                       /* matched string */
-    register int len;                           /* length of current match */
-    int best_len = s->prev_length;              /* best match length so far */
-    int nice_match = s->nice_match;             /* stop if match long enough */
-    IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
-        s->strstart - (IPos)MAX_DIST(s) : NIL;
-    /* Stop when cur_match becomes <= limit. To simplify the code,
-     * we prevent matches with the string of window index 0.
-     */
-    Posf *prev = s->prev;
-    uInt wmask = s->w_mask;
-
-#ifdef UNALIGNED_OK
-    /* Compare two bytes at a time. Note: this is not always beneficial.
-     * Try with and without -DUNALIGNED_OK to check.
-     */
-    register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1;
-    register ush scan_start = *(ushf*)scan;
-    register ush scan_end   = *(ushf*)(scan+best_len-1);
-#else
-    register Bytef *strend = s->window + s->strstart + MAX_MATCH;
-    register Byte scan_end1  = scan[best_len-1];
-    register Byte scan_end   = scan[best_len];
-#endif
-
-    /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
-     * It is easy to get rid of this optimization if necessary.
-     */
-    Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
-
-    /* Do not waste too much time if we already have a good match: */
-    if (s->prev_length >= s->good_match) {
-        chain_length >>= 2;
-    }
-    /* Do not look for matches beyond the end of the input. This is necessary
-     * to make deflate deterministic.
-     */
-    if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
-
-    Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
-
-    do {
-        Assert(cur_match < s->strstart, "no future");
-        match = s->window + cur_match;
-
-        /* Skip to next match if the match length cannot increase
-         * or if the match length is less than 2.  Note that the checks below
-         * for insufficient lookahead only occur occasionally for performance
-         * reasons.  Therefore uninitialized memory will be accessed, and
-         * conditional jumps will be made that depend on those values.
-         * However the length of the match is limited to the lookahead, so
-         * the output of deflate is not affected by the uninitialized values.
-         */
-#if (defined(UNALIGNED_OK) && MAX_MATCH == 258)
-        /* This code assumes sizeof(unsigned short) == 2. Do not use
-         * UNALIGNED_OK if your compiler uses a different size.
-         */
-        if (*(ushf*)(match+best_len-1) != scan_end ||
-            *(ushf*)match != scan_start) continue;
-
-        /* It is not necessary to compare scan[2] and match[2] since they are
-         * always equal when the other bytes match, given that the hash keys
-         * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at
-         * strstart+3, +5, ... up to strstart+257. We check for insufficient
-         * lookahead only every 4th comparison; the 128th check will be made
-         * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is
-         * necessary to put more guard bytes at the end of the window, or
-         * to check more often for insufficient lookahead.
-         */
-        Assert(scan[2] == match[2], "scan[2]?");
-        scan++, match++;
-        do {
-        } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-                 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-                 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-                 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-                 scan < strend);
-        /* The funny "do {}" generates better code on most compilers */
-
-        /* Here, scan <= window+strstart+257 */
-        Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
-        if (*scan == *match) scan++;
-
-        len = (MAX_MATCH - 1) - (int)(strend-scan);
-        scan = strend - (MAX_MATCH-1);
-
-#else /* UNALIGNED_OK */
-
-        if (match[best_len]   != scan_end  ||
-            match[best_len-1] != scan_end1 ||
-            *match            != *scan     ||
-            *++match          != scan[1])      continue;
-
-        /* The check at best_len-1 can be removed because it will be made
-         * again later. (This heuristic is not always a win.)
-         * It is not necessary to compare scan[2] and match[2] since they
-         * are always equal when the other bytes match, given that
-         * the hash keys are equal and that HASH_BITS >= 8.
-         */
-        scan += 2, match++;
-        Assert(*scan == *match, "match[2]?");
-
-        /* We check for insufficient lookahead only every 8th comparison;
-         * the 256th check will be made at strstart+258.
-         */
-        do {
-        } while (*++scan == *++match && *++scan == *++match &&
-                 *++scan == *++match && *++scan == *++match &&
-                 *++scan == *++match && *++scan == *++match &&
-                 *++scan == *++match && *++scan == *++match &&
-                 scan < strend);
-
-        Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
-
-        len = MAX_MATCH - (int)(strend - scan);
-        scan = strend - MAX_MATCH;
-
-#endif /* UNALIGNED_OK */
-
-        if (len > best_len) {
-            s->match_start = cur_match;
-            best_len = len;
-            if (len >= nice_match) break;
-#ifdef UNALIGNED_OK
-            scan_end = *(ushf*)(scan+best_len-1);
-#else
-            scan_end1  = scan[best_len-1];
-            scan_end   = scan[best_len];
-#endif
-        }
-    } while ((cur_match = prev[cur_match & wmask]) > limit
-             && --chain_length != 0);
-
-    if ((uInt)best_len <= s->lookahead) return (uInt)best_len;
-    return s->lookahead;
-}
-#endif /* ASMV */
-#endif /* FASTEST */
-
-/* ---------------------------------------------------------------------------
- * Optimized version for level == 1 or strategy == Z_RLE only
- */
-local uInt longest_match_fast(s, cur_match)
-    deflate_state *s;
-    IPos cur_match;                             /* current match */
-{
-    register Bytef *scan = s->window + s->strstart; /* current string */
-    register Bytef *match;                       /* matched string */
-    register int len;                           /* length of current match */
-    register Bytef *strend = s->window + s->strstart + MAX_MATCH;
-
-    /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
-     * It is easy to get rid of this optimization if necessary.
-     */
-    Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
-
-    Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
-
-    Assert(cur_match < s->strstart, "no future");
-
-    match = s->window + cur_match;
-
-    /* Return failure if the match length is less than 2:
-     */
-    if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH-1;
-
-    /* The check at best_len-1 can be removed because it will be made
-     * again later. (This heuristic is not always a win.)
-     * It is not necessary to compare scan[2] and match[2] since they
-     * are always equal when the other bytes match, given that
-     * the hash keys are equal and that HASH_BITS >= 8.
-     */
-    scan += 2, match += 2;
-    Assert(*scan == *match, "match[2]?");
-
-    /* We check for insufficient lookahead only every 8th comparison;
-     * the 256th check will be made at strstart+258.
-     */
-    do {
-    } while (*++scan == *++match && *++scan == *++match &&
-             *++scan == *++match && *++scan == *++match &&
-             *++scan == *++match && *++scan == *++match &&
-             *++scan == *++match && *++scan == *++match &&
-             scan < strend);
-
-    Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
-
-    len = MAX_MATCH - (int)(strend - scan);
-
-    if (len < MIN_MATCH) return MIN_MATCH - 1;
-
-    s->match_start = cur_match;
-    return (uInt)len <= s->lookahead ? (uInt)len : s->lookahead;
-}
-
-#ifdef DEBUG
-/* ===========================================================================
- * Check that the match at match_start is indeed a match.
- */
-local void check_match(s, start, match, length)
-    deflate_state *s;
-    IPos start, match;
-    int length;
-{
-    /* check that the match is indeed a match */
-    if (zmemcmp(s->window + match,
-                s->window + start, length) != EQUAL) {
-        fprintf(stderr, " start %u, match %u, length %d\n",
-                start, match, length);
-        do {
-            fprintf(stderr, "%c%c", s->window[match++], s->window[start++]);
-        } while (--length != 0);
-        z_error("invalid match");
-    }
-    if (z_verbose > 1) {
-        fprintf(stderr,"\\[%d,%d]", start-match, length);
-        do { putc(s->window[start++], stderr); } while (--length != 0);
-    }
-}
-#else
-#  define check_match(s, start, match, length)
-#endif /* DEBUG */
-
-/* ===========================================================================
- * Fill the window when the lookahead becomes insufficient.
- * Updates strstart and lookahead.
- *
- * IN assertion: lookahead < MIN_LOOKAHEAD
- * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
- *    At least one byte has been read, or avail_in == 0; reads are
- *    performed for at least two bytes (required for the zip translate_eol
- *    option -- not supported here).
- */
-local void fill_window(s)
-    deflate_state *s;
-{
-    register unsigned n, m;
-    register Posf *p;
-    unsigned more;    /* Amount of free space at the end of the window. */
-    uInt wsize = s->w_size;
-
-    do {
-        more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
-
-        /* Deal with !@#$% 64K limit: */
-        if (sizeof(int) <= 2) {
-            if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
-                more = wsize;
-
-            } else if (more == (unsigned)(-1)) {
-                /* Very unlikely, but possible on 16 bit machine if
-                 * strstart == 0 && lookahead == 1 (input done a byte at time)
-                 */
-                more--;
-            }
-        }
-
-        /* If the window is almost full and there is insufficient lookahead,
-         * move the upper half to the lower one to make room in the upper half.
-         */
-        if (s->strstart >= wsize+MAX_DIST(s)) {
-
-            zmemcpy(s->window, s->window+wsize, (unsigned)wsize);
-            s->match_start -= wsize;
-            s->strstart    -= wsize; /* we now have strstart >= MAX_DIST */
-            s->block_start -= (long) wsize;
-
-            /* Slide the hash table (could be avoided with 32 bit values
-               at the expense of memory usage). We slide even when level == 0
-               to keep the hash table consistent if we switch back to level > 0
-               later. (Using level 0 permanently is not an optimal usage of
-               zlib, so we don't care about this pathological case.)
-             */
-            /* %%% avoid this when Z_RLE */
-            n = s->hash_size;
-            p = &s->head[n];
-            do {
-                m = *--p;
-                *p = (Pos)(m >= wsize ? m-wsize : NIL);
-            } while (--n);
-
-            n = wsize;
-#ifndef FASTEST
-            p = &s->prev[n];
-            do {
-                m = *--p;
-                *p = (Pos)(m >= wsize ? m-wsize : NIL);
-                /* If n is not on any hash chain, prev[n] is garbage but
-                 * its value will never be used.
-                 */
-            } while (--n);
-#endif
-            more += wsize;
-        }
-        if (s->strm->avail_in == 0) return;
-
-        /* If there was no sliding:
-         *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
-         *    more == window_size - lookahead - strstart
-         * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
-         * => more >= window_size - 2*WSIZE + 2
-         * In the BIG_MEM or MMAP case (not yet supported),
-         *   window_size == input_size + MIN_LOOKAHEAD  &&
-         *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
-         * Otherwise, window_size == 2*WSIZE so more >= 2.
-         * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
-         */
-        Assert(more >= 2, "more < 2");
-
-        n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more);
-        s->lookahead += n;
-
-        /* Initialize the hash value now that we have some input: */
-        if (s->lookahead >= MIN_MATCH) {
-            s->ins_h = s->window[s->strstart];
-            UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
-#if MIN_MATCH != 3
-            Call UPDATE_HASH() MIN_MATCH-3 more times
-#endif
-        }
-        /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
-         * but this is not important since only literal bytes will be emitted.
-         */
-
-    } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0);
-}
-
-/* ===========================================================================
- * Flush the current block, with given end-of-file flag.
- * IN assertion: strstart is set to the end of the current match.
- */
-#define FLUSH_BLOCK_ONLY(s, eof) { \
-   _tr_flush_block(s, (s->block_start >= 0L ? \
-                   (charf *)&s->window[(unsigned)s->block_start] : \
-                   (charf *)Z_NULL), \
-                (ulg)((long)s->strstart - s->block_start), \
-                (eof)); \
-   s->block_start = s->strstart; \
-   flush_pending(s->strm); \
-   Tracev((stderr,"[FLUSH]")); \
-}
-
-/* Same but force premature exit if necessary. */
-#define FLUSH_BLOCK(s, eof) { \
-   FLUSH_BLOCK_ONLY(s, eof); \
-   if (s->strm->avail_out == 0) return (eof) ? finish_started : need_more; \
-}
-
-/* ===========================================================================
- * Copy without compression as much as possible from the input stream, return
- * the current block state.
- * This function does not insert new strings in the dictionary since
- * uncompressible data is probably not useful. This function is used
- * only for the level=0 compression option.
- * NOTE: this function should be optimized to avoid extra copying from
- * window to pending_buf.
- */
-local block_state deflate_stored(s, flush)
-    deflate_state *s;
-    int flush;
-{
-    /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
-     * to pending_buf_size, and each stored block has a 5 byte header:
-     */
-    ulg max_block_size = 0xffff;
-    ulg max_start;
-
-    if (max_block_size > s->pending_buf_size - 5) {
-        max_block_size = s->pending_buf_size - 5;
-    }
-
-    /* Copy as much as possible from input to output: */
-    for (;;) {
-        /* Fill the window as much as possible: */
-        if (s->lookahead <= 1) {
-
-            Assert(s->strstart < s->w_size+MAX_DIST(s) ||
-                   s->block_start >= (long)s->w_size, "slide too late");
-
-            fill_window(s);
-            if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more;
-
-            if (s->lookahead == 0) break; /* flush the current block */
-        }
-        Assert(s->block_start >= 0L, "block gone");
-
-        s->strstart += s->lookahead;
-        s->lookahead = 0;
-
-        /* Emit a stored block if pending_buf will be full: */
-        max_start = s->block_start + max_block_size;
-        if (s->strstart == 0 || (ulg)s->strstart >= max_start) {
-            /* strstart == 0 is possible when wraparound on 16-bit machine */
-            s->lookahead = (uInt)(s->strstart - max_start);
-            s->strstart = (uInt)max_start;
-            FLUSH_BLOCK(s, 0);
-        }
-        /* Flush if we may have to slide, otherwise block_start may become
-         * negative and the data will be gone:
-         */
-        if (s->strstart - (uInt)s->block_start >= MAX_DIST(s)) {
-            FLUSH_BLOCK(s, 0);
-        }
-    }
-    FLUSH_BLOCK(s, flush == Z_FINISH);
-    return flush == Z_FINISH ? finish_done : block_done;
-}
-
-/* ===========================================================================
- * Compress as much as possible from the input stream, return the current
- * block state.
- * This function does not perform lazy evaluation of matches and inserts
- * new strings in the dictionary only for unmatched strings or for short
- * matches. It is used only for the fast compression options.
- */
-local block_state deflate_fast(s, flush)
-    deflate_state *s;
-    int flush;
-{
-    IPos hash_head = NIL; /* head of the hash chain */
-    int bflush;           /* set if current block must be flushed */
-
-    for (;;) {
-        /* Make sure that we always have enough lookahead, except
-         * at the end of the input file. We need MAX_MATCH bytes
-         * for the next match, plus MIN_MATCH bytes to insert the
-         * string following the next match.
-         */
-        if (s->lookahead < MIN_LOOKAHEAD) {
-            fill_window(s);
-            if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {
-                return need_more;
-            }
-            if (s->lookahead == 0) break; /* flush the current block */
-        }
-
-        /* Insert the string window[strstart .. strstart+2] in the
-         * dictionary, and set hash_head to the head of the hash chain:
-         */
-        if (s->lookahead >= MIN_MATCH) {
-            INSERT_STRING(s, s->strstart, hash_head);
-        }
-
-        /* Find the longest match, discarding those <= prev_length.
-         * At this point we have always match_length < MIN_MATCH
-         */
-        if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) {
-            /* To simplify the code, we prevent matches with the string
-             * of window index 0 (in particular we have to avoid a match
-             * of the string with itself at the start of the input file).
-             */
-#ifdef FASTEST
-            if ((s->strategy != Z_HUFFMAN_ONLY && s->strategy != Z_RLE) ||
-                (s->strategy == Z_RLE && s->strstart - hash_head == 1)) {
-                s->match_length = longest_match_fast (s, hash_head);
-            }
-#else
-            if (s->strategy != Z_HUFFMAN_ONLY && s->strategy != Z_RLE) {
-                s->match_length = longest_match (s, hash_head);
-            } else if (s->strategy == Z_RLE && s->strstart - hash_head == 1) {
-                s->match_length = longest_match_fast (s, hash_head);
-            }
-#endif
-            /* longest_match() or longest_match_fast() sets match_start */
-        }
-        if (s->match_length >= MIN_MATCH) {
-            check_match(s, s->strstart, s->match_start, s->match_length);
-
-            _tr_tally_dist(s, s->strstart - s->match_start,
-                           s->match_length - MIN_MATCH, bflush);
-
-            s->lookahead -= s->match_length;
-
-            /* Insert new strings in the hash table only if the match length
-             * is not too large. This saves time but degrades compression.
-             */
-#ifndef FASTEST
-            if (s->match_length <= s->max_insert_length &&
-                s->lookahead >= MIN_MATCH) {
-                s->match_length--; /* string at strstart already in table */
-                do {
-                    s->strstart++;
-                    INSERT_STRING(s, s->strstart, hash_head);
-                    /* strstart never exceeds WSIZE-MAX_MATCH, so there are
-                     * always MIN_MATCH bytes ahead.
-                     */
-                } while (--s->match_length != 0);
-                s->strstart++;
-            } else
-#endif
-            {
-                s->strstart += s->match_length;
-                s->match_length = 0;
-                s->ins_h = s->window[s->strstart];
-                UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
-#if MIN_MATCH != 3
-                Call UPDATE_HASH() MIN_MATCH-3 more times
-#endif
-                /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
-                 * matter since it will be recomputed at next deflate call.
-                 */
-            }
-        } else {
-            /* No match, output a literal byte */
-            Tracevv((stderr,"%c", s->window[s->strstart]));
-            _tr_tally_lit (s, s->window[s->strstart], bflush);
-            s->lookahead--;
-            s->strstart++;
-        }
-        if (bflush) FLUSH_BLOCK(s, 0);
-    }
-    FLUSH_BLOCK(s, flush == Z_FINISH);
-    return flush == Z_FINISH ? finish_done : block_done;
-}
-
-#ifndef FASTEST
-/* ===========================================================================
- * Same as above, but achieves better compression. We use a lazy
- * evaluation for matches: a match is finally adopted only if there is
- * no better match at the next window position.
- */
-local block_state deflate_slow(s, flush)
-    deflate_state *s;
-    int flush;
-{
-    IPos hash_head = NIL;    /* head of hash chain */
-    int bflush;              /* set if current block must be flushed */
-
-    /* Process the input block. */
-    for (;;) {
-        /* Make sure that we always have enough lookahead, except
-         * at the end of the input file. We need MAX_MATCH bytes
-         * for the next match, plus MIN_MATCH bytes to insert the
-         * string following the next match.
-         */
-        if (s->lookahead < MIN_LOOKAHEAD) {
-            fill_window(s);
-            if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {
-                return need_more;
-            }
-            if (s->lookahead == 0) break; /* flush the current block */
-        }
-
-        /* Insert the string window[strstart .. strstart+2] in the
-         * dictionary, and set hash_head to the head of the hash chain:
-         */
-        if (s->lookahead >= MIN_MATCH) {
-            INSERT_STRING(s, s->strstart, hash_head);
-        }
-
-        /* Find the longest match, discarding those <= prev_length.
-         */
-        s->prev_length = s->match_length, s->prev_match = s->match_start;
-        s->match_length = MIN_MATCH-1;
-
-        if (hash_head != NIL && s->prev_length < s->max_lazy_match &&
-            s->strstart - hash_head <= MAX_DIST(s)) {
-            /* To simplify the code, we prevent matches with the string
-             * of window index 0 (in particular we have to avoid a match
-             * of the string with itself at the start of the input file).
-             */
-            if (s->strategy != Z_HUFFMAN_ONLY && s->strategy != Z_RLE) {
-                s->match_length = longest_match (s, hash_head);
-            } else if (s->strategy == Z_RLE && s->strstart - hash_head == 1) {
-                s->match_length = longest_match_fast (s, hash_head);
-            }
-            /* longest_match() or longest_match_fast() sets match_start */
-
-            if (s->match_length <= 5 && (s->strategy == Z_FILTERED
-#if TOO_FAR <= 32767
-                || (s->match_length == MIN_MATCH &&
-                    s->strstart - s->match_start > TOO_FAR)
-#endif
-                )) {
-
-                /* If prev_match is also MIN_MATCH, match_start is garbage
-                 * but we will ignore the current match anyway.
-                 */
-                s->match_length = MIN_MATCH-1;
-            }
-        }
-        /* If there was a match at the previous step and the current
-         * match is not better, output the previous match:
-         */
-        if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) {
-            uInt max_insert = s->strstart + s->lookahead - MIN_MATCH;
-            /* Do not insert strings in hash table beyond this. */
-
-            check_match(s, s->strstart-1, s->prev_match, s->prev_length);
-
-            _tr_tally_dist(s, s->strstart -1 - s->prev_match,
-                           s->prev_length - MIN_MATCH, bflush);
-
-            /* Insert in hash table all strings up to the end of the match.
-             * strstart-1 and strstart are already inserted. If there is not
-             * enough lookahead, the last two strings are not inserted in
-             * the hash table.
-             */
-            s->lookahead -= s->prev_length-1;
-            s->prev_length -= 2;
-            do {
-                if (++s->strstart <= max_insert) {
-                    INSERT_STRING(s, s->strstart, hash_head);
-                }
-            } while (--s->prev_length != 0);
-            s->match_available = 0;
-            s->match_length = MIN_MATCH-1;
-            s->strstart++;
-
-            if (bflush) FLUSH_BLOCK(s, 0);
-
-        } else if (s->match_available) {
-            /* If there was no match at the previous position, output a
-             * single literal. If there was a match but the current match
-             * is longer, truncate the previous match to a single literal.
-             */
-            Tracevv((stderr,"%c", s->window[s->strstart-1]));
-            _tr_tally_lit(s, s->window[s->strstart-1], bflush);
-            if (bflush) {
-                FLUSH_BLOCK_ONLY(s, 0);
-            }
-            s->strstart++;
-            s->lookahead--;
-            if (s->strm->avail_out == 0) return need_more;
-        } else {
-            /* There is no previous match to compare with, wait for
-             * the next step to decide.
-             */
-            s->match_available = 1;
-            s->strstart++;
-            s->lookahead--;
-        }
-    }
-    Assert (flush != Z_NO_FLUSH, "no flush?");
-    if (s->match_available) {
-        Tracevv((stderr,"%c", s->window[s->strstart-1]));
-        _tr_tally_lit(s, s->window[s->strstart-1], bflush);
-        s->match_available = 0;
-    }
-    FLUSH_BLOCK(s, flush == Z_FINISH);
-    return flush == Z_FINISH ? finish_done : block_done;
-}
-#endif /* FASTEST */
-
-#if 0
-/* ===========================================================================
- * For Z_RLE, simply look for runs of bytes, generate matches only of distance
- * one.  Do not maintain a hash table.  (It will be regenerated if this run of
- * deflate switches away from Z_RLE.)
- */
-local block_state deflate_rle(s, flush)
-    deflate_state *s;
-    int flush;
-{
-    int bflush;         /* set if current block must be flushed */
-    uInt run;           /* length of run */
-    uInt max;           /* maximum length of run */
-    uInt prev;          /* byte at distance one to match */
-    Bytef *scan;        /* scan for end of run */
-
-    for (;;) {
-        /* Make sure that we always have enough lookahead, except
-         * at the end of the input file. We need MAX_MATCH bytes
-         * for the longest encodable run.
-         */
-        if (s->lookahead < MAX_MATCH) {
-            fill_window(s);
-            if (s->lookahead < MAX_MATCH && flush == Z_NO_FLUSH) {
-                return need_more;
-            }
-            if (s->lookahead == 0) break; /* flush the current block */
-        }
-
-        /* See how many times the previous byte repeats */
-        run = 0;
-        if (s->strstart > 0) {      /* if there is a previous byte, that is */
-            max = s->lookahead < MAX_MATCH ? s->lookahead : MAX_MATCH;
-            scan = s->window + s->strstart - 1;
-            prev = *scan++;
-            do {
-                if (*scan++ != prev)
-                    break;
-            } while (++run < max);
-        }
-
-        /* Emit match if have run of MIN_MATCH or longer, else emit literal */
-        if (run >= MIN_MATCH) {
-            check_match(s, s->strstart, s->strstart - 1, run);
-            _tr_tally_dist(s, 1, run - MIN_MATCH, bflush);
-            s->lookahead -= run;
-            s->strstart += run;
-        } else {
-            /* No match, output a literal byte */
-            Tracevv((stderr,"%c", s->window[s->strstart]));
-            _tr_tally_lit (s, s->window[s->strstart], bflush);
-            s->lookahead--;
-            s->strstart++;
-        }
-        if (bflush) FLUSH_BLOCK(s, 0);
-    }
-    FLUSH_BLOCK(s, flush == Z_FINISH);
-    return flush == Z_FINISH ? finish_done : block_done;
-}
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/deflate.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/deflate.h
deleted file mode 100644
index 222c53e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/deflate.h
+++ /dev/null
@@ -1,331 +0,0 @@
-/* deflate.h -- internal compression state
- * Copyright (C) 1995-2004 Jean-loup Gailly
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
-   part of the implementation of the compression library and is
-   subject to change. Applications should only use zlib.h.
- */
-
-/* @(#) $Id$ */
-
-#ifndef DEFLATE_H
-#define DEFLATE_H
-
-#include "zutil.h"
-
-/* define NO_GZIP when compiling if you want to disable gzip header and
-   trailer creation by deflate().  NO_GZIP would be used to avoid linking in
-   the crc code when it is not needed.  For shared libraries, gzip encoding
-   should be left enabled. */
-#ifndef NO_GZIP
-#  define GZIP
-#endif
-
-/* ===========================================================================
- * Internal compression state.
- */
-
-#define LENGTH_CODES 29
-/* number of length codes, not counting the special END_BLOCK code */
-
-#define LITERALS  256
-/* number of literal bytes 0..255 */
-
-#define L_CODES (LITERALS+1+LENGTH_CODES)
-/* number of Literal or Length codes, including the END_BLOCK code */
-
-#define D_CODES   30
-/* number of distance codes */
-
-#define BL_CODES  19
-/* number of codes used to transfer the bit lengths */
-
-#define HEAP_SIZE (2*L_CODES+1)
-/* maximum heap size */
-
-#define MAX_BITS 15
-/* All codes must not exceed MAX_BITS bits */
-
-#define INIT_STATE    42
-#define EXTRA_STATE   69
-#define NAME_STATE    73
-#define COMMENT_STATE 91
-#define HCRC_STATE   103
-#define BUSY_STATE   113
-#define FINISH_STATE 666
-/* Stream status */
-
-
-/* Data structure describing a single value and its code string. */
-typedef struct ct_data_s {
-    union {
-        ush  freq;       /* frequency count */
-        ush  code;       /* bit string */
-    } fc;
-    union {
-        ush  dad;        /* father node in Huffman tree */
-        ush  len;        /* length of bit string */
-    } dl;
-} FAR ct_data;
-
-#define Freq fc.freq
-#define Code fc.code
-#define Dad  dl.dad
-#define Len  dl.len
-
-typedef struct static_tree_desc_s  static_tree_desc;
-
-typedef struct tree_desc_s {
-    ct_data *dyn_tree;           /* the dynamic tree */
-    int     max_code;            /* largest code with non zero frequency */
-    static_tree_desc *stat_desc; /* the corresponding static tree */
-} FAR tree_desc;
-
-typedef ush Pos;
-typedef Pos FAR Posf;
-typedef unsigned IPos;
-
-/* A Pos is an index in the character window. We use short instead of int to
- * save space in the various tables. IPos is used only for parameter passing.
- */
-
-typedef struct internal_state {
-    z_streamp strm;      /* pointer back to this zlib stream */
-    int   status;        /* as the name implies */
-    Bytef *pending_buf;  /* output still pending */
-    ulg   pending_buf_size; /* size of pending_buf */
-    Bytef *pending_out;  /* next pending byte to output to the stream */
-    uInt   pending;      /* nb of bytes in the pending buffer */
-    int   wrap;          /* bit 0 true for zlib, bit 1 true for gzip */
-    gz_headerp  gzhead;  /* gzip header information to write */
-    uInt   gzindex;      /* where in extra, name, or comment */
-    Byte  method;        /* STORED (for zip only) or DEFLATED */
-    int   last_flush;    /* value of flush param for previous deflate call */
-
-                /* used by deflate.c: */
-
-    uInt  w_size;        /* LZ77 window size (32K by default) */
-    uInt  w_bits;        /* log2(w_size)  (8..16) */
-    uInt  w_mask;        /* w_size - 1 */
-
-    Bytef *window;
-    /* Sliding window. Input bytes are read into the second half of the window,
-     * and move to the first half later to keep a dictionary of at least wSize
-     * bytes. With this organization, matches are limited to a distance of
-     * wSize-MAX_MATCH bytes, but this ensures that IO is always
-     * performed with a length multiple of the block size. Also, it limits
-     * the window size to 64K, which is quite useful on MSDOS.
-     * To do: use the user input buffer as sliding window.
-     */
-
-    ulg window_size;
-    /* Actual size of window: 2*wSize, except when the user input buffer
-     * is directly used as sliding window.
-     */
-
-    Posf *prev;
-    /* Link to older string with same hash index. To limit the size of this
-     * array to 64K, this link is maintained only for the last 32K strings.
-     * An index in this array is thus a window index modulo 32K.
-     */
-
-    Posf *head; /* Heads of the hash chains or NIL. */
-
-    uInt  ins_h;          /* hash index of string to be inserted */
-    uInt  hash_size;      /* number of elements in hash table */
-    uInt  hash_bits;      /* log2(hash_size) */
-    uInt  hash_mask;      /* hash_size-1 */
-
-    uInt  hash_shift;
-    /* Number of bits by which ins_h must be shifted at each input
-     * step. It must be such that after MIN_MATCH steps, the oldest
-     * byte no longer takes part in the hash key, that is:
-     *   hash_shift * MIN_MATCH >= hash_bits
-     */
-
-    long block_start;
-    /* Window position at the beginning of the current output block. Gets
-     * negative when the window is moved backwards.
-     */
-
-    uInt match_length;           /* length of best match */
-    IPos prev_match;             /* previous match */
-    int match_available;         /* set if previous match exists */
-    uInt strstart;               /* start of string to insert */
-    uInt match_start;            /* start of matching string */
-    uInt lookahead;              /* number of valid bytes ahead in window */
-
-    uInt prev_length;
-    /* Length of the best match at previous step. Matches not greater than this
-     * are discarded. This is used in the lazy match evaluation.
-     */
-
-    uInt max_chain_length;
-    /* To speed up deflation, hash chains are never searched beyond this
-     * length.  A higher limit improves compression ratio but degrades the
-     * speed.
-     */
-
-    uInt max_lazy_match;
-    /* Attempt to find a better match only when the current match is strictly
-     * smaller than this value. This mechanism is used only for compression
-     * levels >= 4.
-     */
-#   define max_insert_length  max_lazy_match
-    /* Insert new strings in the hash table only if the match length is not
-     * greater than this length. This saves time but degrades compression.
-     * max_insert_length is used only for compression levels <= 3.
-     */
-
-    int level;    /* compression level (1..9) */
-    int strategy; /* favor or force Huffman coding*/
-
-    uInt good_match;
-    /* Use a faster search when the previous match is longer than this */
-
-    int nice_match; /* Stop searching when current match exceeds this */
-
-                /* used by trees.c: */
-    /* Didn't use ct_data typedef below to supress compiler warning */
-    struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
-    struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
-    struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */
-
-    struct tree_desc_s l_desc;               /* desc. for literal tree */
-    struct tree_desc_s d_desc;               /* desc. for distance tree */
-    struct tree_desc_s bl_desc;              /* desc. for bit length tree */
-
-    ush bl_count[MAX_BITS+1];
-    /* number of codes at each bit length for an optimal tree */
-
-    int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
-    int heap_len;               /* number of elements in the heap */
-    int heap_max;               /* element of largest frequency */
-    /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
-     * The same heap array is used to build all trees.
-     */
-
-    uch depth[2*L_CODES+1];
-    /* Depth of each subtree used as tie breaker for trees of equal frequency
-     */
-
-    uchf *l_buf;          /* buffer for literals or lengths */
-
-    uInt  lit_bufsize;
-    /* Size of match buffer for literals/lengths.  There are 4 reasons for
-     * limiting lit_bufsize to 64K:
-     *   - frequencies can be kept in 16 bit counters
-     *   - if compression is not successful for the first block, all input
-     *     data is still in the window so we can still emit a stored block even
-     *     when input comes from standard input.  (This can also be done for
-     *     all blocks if lit_bufsize is not greater than 32K.)
-     *   - if compression is not successful for a file smaller than 64K, we can
-     *     even emit a stored file instead of a stored block (saving 5 bytes).
-     *     This is applicable only for zip (not gzip or zlib).
-     *   - creating new Huffman trees less frequently may not provide fast
-     *     adaptation to changes in the input data statistics. (Take for
-     *     example a binary file with poorly compressible code followed by
-     *     a highly compressible string table.) Smaller buffer sizes give
-     *     fast adaptation but have of course the overhead of transmitting
-     *     trees more frequently.
-     *   - I can't count above 4
-     */
-
-    uInt last_lit;      /* running index in l_buf */
-
-    ushf *d_buf;
-    /* Buffer for distances. To simplify the code, d_buf and l_buf have
-     * the same number of elements. To use different lengths, an extra flag
-     * array would be necessary.
-     */
-
-    ulg opt_len;        /* bit length of current block with optimal trees */
-    ulg static_len;     /* bit length of current block with static trees */
-    uInt matches;       /* number of string matches in current block */
-    int last_eob_len;   /* bit length of EOB code for last block */
-
-#ifdef DEBUG
-    ulg compressed_len; /* total bit length of compressed file mod 2^32 */
-    ulg bits_sent;      /* bit length of compressed data sent mod 2^32 */
-#endif
-
-    ush bi_buf;
-    /* Output buffer. bits are inserted starting at the bottom (least
-     * significant bits).
-     */
-    int bi_valid;
-    /* Number of valid bits in bi_buf.  All bits above the last valid bit
-     * are always zero.
-     */
-
-} FAR deflate_state;
-
-/* Output a byte on the stream.
- * IN assertion: there is enough room in pending_buf.
- */
-#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);}
-
-
-#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
-/* Minimum amount of lookahead, except at the end of the input file.
- * See deflate.c for comments about the MIN_MATCH+1.
- */
-
-#define MAX_DIST(s)  ((s)->w_size-MIN_LOOKAHEAD)
-/* In order to simplify the code, particularly on 16 bit machines, match
- * distances are limited to MAX_DIST instead of WSIZE.
- */
-
-        /* in trees.c */
-void _tr_init         OF((deflate_state *s));
-int  _tr_tally        OF((deflate_state *s, unsigned dist, unsigned lc));
-void _tr_flush_block  OF((deflate_state *s, charf *buf, ulg stored_len,
-                          int eof));
-void _tr_align        OF((deflate_state *s));
-void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
-                          int eof));
-
-#define d_code(dist) \
-   ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)])
-/* Mapping from a distance to a distance code. dist is the distance - 1 and
- * must not have side effects. _dist_code[256] and _dist_code[257] are never
- * used.
- */
-
-#ifndef DEBUG
-/* Inline versions of _tr_tally for speed: */
-
-#if defined(GEN_TREES_H) || !defined(STDC)
-  extern uch _length_code[];
-  extern uch _dist_code[];
-#else
-  extern const uch _length_code[];
-  extern const uch _dist_code[];
-#endif
-
-# define _tr_tally_lit(s, c, flush) \
-  { uch cc = (c); \
-    s->d_buf[s->last_lit] = 0; \
-    s->l_buf[s->last_lit++] = cc; \
-    s->dyn_ltree[cc].Freq++; \
-    flush = (s->last_lit == s->lit_bufsize-1); \
-   }
-# define _tr_tally_dist(s, distance, length, flush) \
-  { uch len = (length); \
-    ush dist = (distance); \
-    s->d_buf[s->last_lit] = dist; \
-    s->l_buf[s->last_lit++] = len; \
-    dist--; \
-    s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
-    s->dyn_dtree[d_code(dist)].Freq++; \
-    flush = (s->last_lit == s->lit_bufsize-1); \
-  }
-#else
-# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
-# define _tr_tally_dist(s, distance, length, flush) \
-              flush = _tr_tally(s, distance, length)
-#endif
-
-#endif /* DEFLATE_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/example.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/example.c
deleted file mode 100644
index 455a1d0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/example.c
+++ /dev/null
@@ -1,565 +0,0 @@
-/* example.c -- usage example of the zlib compression library
- * Copyright (C) 1995-2004 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* @(#) $Id$ */
-
-#include <stdio.h>
-#include "zlib.h"
-
-#ifdef STDC
-#  include <string.h>
-#  include <stdlib.h>
-#endif
-
-#if defined(VMS) || defined(RISCOS)
-#  define TESTFILE "foo-gz"
-#else
-#  define TESTFILE "foo.gz"
-#endif
-
-#define CHECK_ERR(err, msg) { \
-    if (err != Z_OK) { \
-        fprintf(stderr, "%s error: %d\n", msg, err); \
-        exit(1); \
-    } \
-}
-
-const char hello[] = "hello, hello!";
-/* "hello world" would be more standard, but the repeated "hello"
- * stresses the compression code better, sorry...
- */
-
-const char dictionary[] = "hello";
-uLong dictId; /* Adler32 value of the dictionary */
-
-void test_compress      OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_gzio          OF((const char *fname,
-                            Byte *uncompr, uLong uncomprLen));
-void test_deflate       OF((Byte *compr, uLong comprLen));
-void test_inflate       OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_large_deflate OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_large_inflate OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_flush         OF((Byte *compr, uLong *comprLen));
-void test_sync          OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_dict_deflate  OF((Byte *compr, uLong comprLen));
-void test_dict_inflate  OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-int  main               OF((int argc, char *argv[]));
-
-/* ===========================================================================
- * Test compress() and uncompress()
- */
-void test_compress(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
-    int err;
-    uLong len = (uLong)strlen(hello)+1;
-
-    err = compress(compr, &comprLen, (const Bytef*)hello, len);
-    CHECK_ERR(err, "compress");
-
-    strcpy((char*)uncompr, "garbage");
-
-    err = uncompress(uncompr, &uncomprLen, compr, comprLen);
-    CHECK_ERR(err, "uncompress");
-
-    if (strcmp((char*)uncompr, hello)) {
-        fprintf(stderr, "bad uncompress\n");
-        exit(1);
-    } else {
-        printf("uncompress(): %s\n", (char *)uncompr);
-    }
-}
-
-/* ===========================================================================
- * Test read/write of .gz files
- */
-void test_gzio(fname, uncompr, uncomprLen)
-    const char *fname; /* compressed file name */
-    Byte *uncompr;
-    uLong uncomprLen;
-{
-#ifdef NO_GZCOMPRESS
-    fprintf(stderr, "NO_GZCOMPRESS -- gz* functions cannot compress\n");
-#else
-    int err;
-    int len = (int)strlen(hello)+1;
-    gzFile file;
-    z_off_t pos;
-
-    file = gzopen(fname, "wb");
-    if (file == NULL) {
-        fprintf(stderr, "gzopen error\n");
-        exit(1);
-    }
-    gzputc(file, 'h');
-    if (gzputs(file, "ello") != 4) {
-        fprintf(stderr, "gzputs err: %s\n", gzerror(file, &err));
-        exit(1);
-    }
-    if (gzprintf(file, ", %s!", "hello") != 8) {
-        fprintf(stderr, "gzprintf err: %s\n", gzerror(file, &err));
-        exit(1);
-    }
-    gzseek(file, 1L, SEEK_CUR); /* add one zero byte */
-    gzclose(file);
-
-    file = gzopen(fname, "rb");
-    if (file == NULL) {
-        fprintf(stderr, "gzopen error\n");
-        exit(1);
-    }
-    strcpy((char*)uncompr, "garbage");
-
-    if (gzread(file, uncompr, (unsigned)uncomprLen) != len) {
-        fprintf(stderr, "gzread err: %s\n", gzerror(file, &err));
-        exit(1);
-    }
-    if (strcmp((char*)uncompr, hello)) {
-        fprintf(stderr, "bad gzread: %s\n", (char*)uncompr);
-        exit(1);
-    } else {
-        printf("gzread(): %s\n", (char*)uncompr);
-    }
-
-    pos = gzseek(file, -8L, SEEK_CUR);
-    if (pos != 6 || gztell(file) != pos) {
-        fprintf(stderr, "gzseek error, pos=%ld, gztell=%ld\n",
-                (long)pos, (long)gztell(file));
-        exit(1);
-    }
-
-    if (gzgetc(file) != ' ') {
-        fprintf(stderr, "gzgetc error\n");
-        exit(1);
-    }
-
-    if (gzungetc(' ', file) != ' ') {
-        fprintf(stderr, "gzungetc error\n");
-        exit(1);
-    }
-
-    gzgets(file, (char*)uncompr, (int)uncomprLen);
-    if (strlen((char*)uncompr) != 7) { /* " hello!" */
-        fprintf(stderr, "gzgets err after gzseek: %s\n", gzerror(file, &err));
-        exit(1);
-    }
-    if (strcmp((char*)uncompr, hello + 6)) {
-        fprintf(stderr, "bad gzgets after gzseek\n");
-        exit(1);
-    } else {
-        printf("gzgets() after gzseek: %s\n", (char*)uncompr);
-    }
-
-    gzclose(file);
-#endif
-}
-
-/* ===========================================================================
- * Test deflate() with small buffers
- */
-void test_deflate(compr, comprLen)
-    Byte *compr;
-    uLong comprLen;
-{
-    z_stream c_stream; /* compression stream */
-    int err;
-    uLong len = (uLong)strlen(hello)+1;
-
-    c_stream.zalloc = (alloc_func)0;
-    c_stream.zfree = (free_func)0;
-    c_stream.opaque = (voidpf)0;
-
-    err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION);
-    CHECK_ERR(err, "deflateInit");
-
-    c_stream.next_in  = (Bytef*)hello;
-    c_stream.next_out = compr;
-
-    while (c_stream.total_in != len && c_stream.total_out < comprLen) {
-        c_stream.avail_in = c_stream.avail_out = 1; /* force small buffers */
-        err = deflate(&c_stream, Z_NO_FLUSH);
-        CHECK_ERR(err, "deflate");
-    }
-    /* Finish the stream, still forcing small buffers: */
-    for (;;) {
-        c_stream.avail_out = 1;
-        err = deflate(&c_stream, Z_FINISH);
-        if (err == Z_STREAM_END) break;
-        CHECK_ERR(err, "deflate");
-    }
-
-    err = deflateEnd(&c_stream);
-    CHECK_ERR(err, "deflateEnd");
-}
-
-/* ===========================================================================
- * Test inflate() with small buffers
- */
-void test_inflate(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
-    int err;
-    z_stream d_stream; /* decompression stream */
-
-    strcpy((char*)uncompr, "garbage");
-
-    d_stream.zalloc = (alloc_func)0;
-    d_stream.zfree = (free_func)0;
-    d_stream.opaque = (voidpf)0;
-
-    d_stream.next_in  = compr;
-    d_stream.avail_in = 0;
-    d_stream.next_out = uncompr;
-
-    err = inflateInit(&d_stream);
-    CHECK_ERR(err, "inflateInit");
-
-    while (d_stream.total_out < uncomprLen && d_stream.total_in < comprLen) {
-        d_stream.avail_in = d_stream.avail_out = 1; /* force small buffers */
-        err = inflate(&d_stream, Z_NO_FLUSH);
-        if (err == Z_STREAM_END) break;
-        CHECK_ERR(err, "inflate");
-    }
-
-    err = inflateEnd(&d_stream);
-    CHECK_ERR(err, "inflateEnd");
-
-    if (strcmp((char*)uncompr, hello)) {
-        fprintf(stderr, "bad inflate\n");
-        exit(1);
-    } else {
-        printf("inflate(): %s\n", (char *)uncompr);
-    }
-}
-
-/* ===========================================================================
- * Test deflate() with large buffers and dynamic change of compression level
- */
-void test_large_deflate(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
-    z_stream c_stream; /* compression stream */
-    int err;
-
-    c_stream.zalloc = (alloc_func)0;
-    c_stream.zfree = (free_func)0;
-    c_stream.opaque = (voidpf)0;
-
-    err = deflateInit(&c_stream, Z_BEST_SPEED);
-    CHECK_ERR(err, "deflateInit");
-
-    c_stream.next_out = compr;
-    c_stream.avail_out = (uInt)comprLen;
-
-    /* At this point, uncompr is still mostly zeroes, so it should compress
-     * very well:
-     */
-    c_stream.next_in = uncompr;
-    c_stream.avail_in = (uInt)uncomprLen;
-    err = deflate(&c_stream, Z_NO_FLUSH);
-    CHECK_ERR(err, "deflate");
-    if (c_stream.avail_in != 0) {
-        fprintf(stderr, "deflate not greedy\n");
-        exit(1);
-    }
-
-    /* Feed in already compressed data and switch to no compression: */
-    deflateParams(&c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY);
-    c_stream.next_in = compr;
-    c_stream.avail_in = (uInt)comprLen/2;
-    err = deflate(&c_stream, Z_NO_FLUSH);
-    CHECK_ERR(err, "deflate");
-
-    /* Switch back to compressing mode: */
-    deflateParams(&c_stream, Z_BEST_COMPRESSION, Z_FILTERED);
-    c_stream.next_in = uncompr;
-    c_stream.avail_in = (uInt)uncomprLen;
-    err = deflate(&c_stream, Z_NO_FLUSH);
-    CHECK_ERR(err, "deflate");
-
-    err = deflate(&c_stream, Z_FINISH);
-    if (err != Z_STREAM_END) {
-        fprintf(stderr, "deflate should report Z_STREAM_END\n");
-        exit(1);
-    }
-    err = deflateEnd(&c_stream);
-    CHECK_ERR(err, "deflateEnd");
-}
-
-/* ===========================================================================
- * Test inflate() with large buffers
- */
-void test_large_inflate(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
-    int err;
-    z_stream d_stream; /* decompression stream */
-
-    strcpy((char*)uncompr, "garbage");
-
-    d_stream.zalloc = (alloc_func)0;
-    d_stream.zfree = (free_func)0;
-    d_stream.opaque = (voidpf)0;
-
-    d_stream.next_in  = compr;
-    d_stream.avail_in = (uInt)comprLen;
-
-    err = inflateInit(&d_stream);
-    CHECK_ERR(err, "inflateInit");
-
-    for (;;) {
-        d_stream.next_out = uncompr;            /* discard the output */
-        d_stream.avail_out = (uInt)uncomprLen;
-        err = inflate(&d_stream, Z_NO_FLUSH);
-        if (err == Z_STREAM_END) break;
-        CHECK_ERR(err, "large inflate");
-    }
-
-    err = inflateEnd(&d_stream);
-    CHECK_ERR(err, "inflateEnd");
-
-    if (d_stream.total_out != 2*uncomprLen + comprLen/2) {
-        fprintf(stderr, "bad large inflate: %ld\n", d_stream.total_out);
-        exit(1);
-    } else {
-        printf("large_inflate(): OK\n");
-    }
-}
-
-/* ===========================================================================
- * Test deflate() with full flush
- */
-void test_flush(compr, comprLen)
-    Byte *compr;
-    uLong *comprLen;
-{
-    z_stream c_stream; /* compression stream */
-    int err;
-    uInt len = (uInt)strlen(hello)+1;
-
-    c_stream.zalloc = (alloc_func)0;
-    c_stream.zfree = (free_func)0;
-    c_stream.opaque = (voidpf)0;
-
-    err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION);
-    CHECK_ERR(err, "deflateInit");
-
-    c_stream.next_in  = (Bytef*)hello;
-    c_stream.next_out = compr;
-    c_stream.avail_in = 3;
-    c_stream.avail_out = (uInt)*comprLen;
-    err = deflate(&c_stream, Z_FULL_FLUSH);
-    CHECK_ERR(err, "deflate");
-
-    compr[3]++; /* force an error in first compressed block */
-    c_stream.avail_in = len - 3;
-
-    err = deflate(&c_stream, Z_FINISH);
-    if (err != Z_STREAM_END) {
-        CHECK_ERR(err, "deflate");
-    }
-    err = deflateEnd(&c_stream);
-    CHECK_ERR(err, "deflateEnd");
-
-    *comprLen = c_stream.total_out;
-}
-
-/* ===========================================================================
- * Test inflateSync()
- */
-void test_sync(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
-    int err;
-    z_stream d_stream; /* decompression stream */
-
-    strcpy((char*)uncompr, "garbage");
-
-    d_stream.zalloc = (alloc_func)0;
-    d_stream.zfree = (free_func)0;
-    d_stream.opaque = (voidpf)0;
-
-    d_stream.next_in  = compr;
-    d_stream.avail_in = 2; /* just read the zlib header */
-
-    err = inflateInit(&d_stream);
-    CHECK_ERR(err, "inflateInit");
-
-    d_stream.next_out = uncompr;
-    d_stream.avail_out = (uInt)uncomprLen;
-
-    inflate(&d_stream, Z_NO_FLUSH);
-    CHECK_ERR(err, "inflate");
-
-    d_stream.avail_in = (uInt)comprLen-2;   /* read all compressed data */
-    err = inflateSync(&d_stream);           /* but skip the damaged part */
-    CHECK_ERR(err, "inflateSync");
-
-    err = inflate(&d_stream, Z_FINISH);
-    if (err != Z_DATA_ERROR) {
-        fprintf(stderr, "inflate should report DATA_ERROR\n");
-        /* Because of incorrect adler32 */
-        exit(1);
-    }
-    err = inflateEnd(&d_stream);
-    CHECK_ERR(err, "inflateEnd");
-
-    printf("after inflateSync(): hel%s\n", (char *)uncompr);
-}
-
-/* ===========================================================================
- * Test deflate() with preset dictionary
- */
-void test_dict_deflate(compr, comprLen)
-    Byte *compr;
-    uLong comprLen;
-{
-    z_stream c_stream; /* compression stream */
-    int err;
-
-    c_stream.zalloc = (alloc_func)0;
-    c_stream.zfree = (free_func)0;
-    c_stream.opaque = (voidpf)0;
-
-    err = deflateInit(&c_stream, Z_BEST_COMPRESSION);
-    CHECK_ERR(err, "deflateInit");
-
-    err = deflateSetDictionary(&c_stream,
-                               (const Bytef*)dictionary, sizeof(dictionary));
-    CHECK_ERR(err, "deflateSetDictionary");
-
-    dictId = c_stream.adler;
-    c_stream.next_out = compr;
-    c_stream.avail_out = (uInt)comprLen;
-
-    c_stream.next_in = (Bytef*)hello;
-    c_stream.avail_in = (uInt)strlen(hello)+1;
-
-    err = deflate(&c_stream, Z_FINISH);
-    if (err != Z_STREAM_END) {
-        fprintf(stderr, "deflate should report Z_STREAM_END\n");
-        exit(1);
-    }
-    err = deflateEnd(&c_stream);
-    CHECK_ERR(err, "deflateEnd");
-}
-
-/* ===========================================================================
- * Test inflate() with a preset dictionary
- */
-void test_dict_inflate(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
-    int err;
-    z_stream d_stream; /* decompression stream */
-
-    strcpy((char*)uncompr, "garbage");
-
-    d_stream.zalloc = (alloc_func)0;
-    d_stream.zfree = (free_func)0;
-    d_stream.opaque = (voidpf)0;
-
-    d_stream.next_in  = compr;
-    d_stream.avail_in = (uInt)comprLen;
-
-    err = inflateInit(&d_stream);
-    CHECK_ERR(err, "inflateInit");
-
-    d_stream.next_out = uncompr;
-    d_stream.avail_out = (uInt)uncomprLen;
-
-    for (;;) {
-        err = inflate(&d_stream, Z_NO_FLUSH);
-        if (err == Z_STREAM_END) break;
-        if (err == Z_NEED_DICT) {
-            if (d_stream.adler != dictId) {
-                fprintf(stderr, "unexpected dictionary");
-                exit(1);
-            }
-            err = inflateSetDictionary(&d_stream, (const Bytef*)dictionary,
-                                       sizeof(dictionary));
-        }
-        CHECK_ERR(err, "inflate with dict");
-    }
-
-    err = inflateEnd(&d_stream);
-    CHECK_ERR(err, "inflateEnd");
-
-    if (strcmp((char*)uncompr, hello)) {
-        fprintf(stderr, "bad inflate with dict\n");
-        exit(1);
-    } else {
-        printf("inflate with dictionary: %s\n", (char *)uncompr);
-    }
-}
-
-/* ===========================================================================
- * Usage:  example [output.gz  [input.gz]]
- */
-
-int main(argc, argv)
-    int argc;
-    char *argv[];
-{
-    Byte *compr, *uncompr;
-    uLong comprLen = 10000*sizeof(int); /* don't overflow on MSDOS */
-    uLong uncomprLen = comprLen;
-    static const char* myVersion = ZLIB_VERSION;
-
-    if (zlibVersion()[0] != myVersion[0]) {
-        fprintf(stderr, "incompatible zlib version\n");
-        exit(1);
-
-    } else if (strcmp(zlibVersion(), ZLIB_VERSION) != 0) {
-        fprintf(stderr, "warning: different zlib version\n");
-    }
-
-    printf("zlib version %s = 0x%04x, compile flags = 0x%lx\n",
-            ZLIB_VERSION, ZLIB_VERNUM, zlibCompileFlags());
-
-    compr    = (Byte*)calloc((uInt)comprLen, 1);
-    uncompr  = (Byte*)calloc((uInt)uncomprLen, 1);
-    /* compr and uncompr are cleared to avoid reading uninitialized
-     * data and to ensure that uncompr compresses well.
-     */
-    if (compr == Z_NULL || uncompr == Z_NULL) {
-        printf("out of memory\n");
-        exit(1);
-    }
-    test_compress(compr, comprLen, uncompr, uncomprLen);
-
-    test_gzio((argc > 1 ? argv[1] : TESTFILE),
-              uncompr, uncomprLen);
-
-    test_deflate(compr, comprLen);
-    test_inflate(compr, comprLen, uncompr, uncomprLen);
-
-    test_large_deflate(compr, comprLen, uncompr, uncomprLen);
-    test_large_inflate(compr, comprLen, uncompr, uncomprLen);
-
-    test_flush(compr, &comprLen);
-    test_sync(compr, comprLen, uncompr, uncomprLen);
-    comprLen = uncomprLen;
-
-    test_dict_deflate(compr, comprLen);
-    test_dict_inflate(compr, comprLen, uncompr, uncomprLen);
-
-    free(compr);
-    free(uncompr);
-
-    return 0;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/gzio.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/gzio.c
deleted file mode 100644
index 5e20a4a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/gzio.c
+++ /dev/null
@@ -1,1026 +0,0 @@
-/* gzio.c -- IO on .gz files
- * Copyright (C) 1995-2005 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- *
- * Compile this file with -DNO_GZCOMPRESS to avoid the compression code.
- */
-
-/* @(#) $Id$ */
-
-#include <stdio.h>
-
-#include "zutil.h"
-
-#ifdef NO_DEFLATE       /* for compatibility with old definition */
-#  define NO_GZCOMPRESS
-#endif
-
-#ifndef NO_DUMMY_DECL
-struct internal_state {int dummy;}; /* for buggy compilers */
-#endif
-
-#ifndef Z_BUFSIZE
-#  ifdef MAXSEG_64K
-#    define Z_BUFSIZE 4096 /* minimize memory usage for 16-bit DOS */
-#  else
-#    define Z_BUFSIZE 16384
-#  endif
-#endif
-#ifndef Z_PRINTF_BUFSIZE
-#  define Z_PRINTF_BUFSIZE 4096
-#endif
-
-#ifdef __MVS__
-#  pragma map (fdopen , "\174\174FDOPEN")
-   FILE *fdopen(int, const char *);
-#endif
-
-#ifndef STDC
-extern voidp  malloc OF((uInt size));
-extern void   free   OF((voidpf ptr));
-#endif
-
-#define ALLOC(size) malloc(size)
-#define TRYFREE(p) {if (p) free(p);}
-
-static int const gz_magic[2] = {0x1f, 0x8b}; /* gzip magic header */
-
-/* gzip flag byte */
-#define ASCII_FLAG   0x01 /* bit 0 set: file probably ascii text */
-#define HEAD_CRC     0x02 /* bit 1 set: header CRC present */
-#define EXTRA_FIELD  0x04 /* bit 2 set: extra field present */
-#define ORIG_NAME    0x08 /* bit 3 set: original file name present */
-#define COMMENT      0x10 /* bit 4 set: file comment present */
-#define RESERVED     0xE0 /* bits 5..7: reserved */
-
-typedef struct gz_stream {
-    z_stream stream;
-    int      z_err;   /* error code for last stream operation */
-    int      z_eof;   /* set if end of input file */
-    FILE     *file;   /* .gz file */
-    Byte     *inbuf;  /* input buffer */
-    Byte     *outbuf; /* output buffer */
-    uLong    crc;     /* crc32 of uncompressed data */
-    char     *msg;    /* error message */
-    char     *path;   /* path name for debugging only */
-    int      transparent; /* 1 if input file is not a .gz file */
-    char     mode;    /* 'w' or 'r' */
-    z_off_t  start;   /* start of compressed data in file (header skipped) */
-    z_off_t  in;      /* bytes into deflate or inflate */
-    z_off_t  out;     /* bytes out of deflate or inflate */
-    int      back;    /* one character push-back */
-    int      last;    /* true if push-back is last character */
-} gz_stream;
-
-
-local gzFile gz_open      OF((const char *path, const char *mode, int  fd));
-local int do_flush        OF((gzFile file, int flush));
-local int    get_byte     OF((gz_stream *s));
-local void   check_header OF((gz_stream *s));
-local int    destroy      OF((gz_stream *s));
-local void   putLong      OF((FILE *file, uLong x));
-local uLong  getLong      OF((gz_stream *s));
-
-/* ===========================================================================
-     Opens a gzip (.gz) file for reading or writing. The mode parameter
-   is as in fopen ("rb" or "wb"). The file is given either by file descriptor
-   or path name (if fd == -1).
-     gz_open returns NULL if the file could not be opened or if there was
-   insufficient memory to allocate the (de)compression state; errno
-   can be checked to distinguish the two cases (if errno is zero, the
-   zlib error is Z_MEM_ERROR).
-*/
-local gzFile gz_open (path, mode, fd)
-    const char *path;
-    const char *mode;
-    int  fd;
-{
-    int err;
-    int level = Z_DEFAULT_COMPRESSION; /* compression level */
-    int strategy = Z_DEFAULT_STRATEGY; /* compression strategy */
-    char *p = (char*)mode;
-    gz_stream *s;
-    char fmode[80]; /* copy of mode, without the compression level */
-    char *m = fmode;
-
-    if (!path || !mode) return Z_NULL;
-
-    s = (gz_stream *)ALLOC(sizeof(gz_stream));
-    if (!s) return Z_NULL;
-
-    s->stream.zalloc = (alloc_func)0;
-    s->stream.zfree = (free_func)0;
-    s->stream.opaque = (voidpf)0;
-    s->stream.next_in = s->inbuf = Z_NULL;
-    s->stream.next_out = s->outbuf = Z_NULL;
-    s->stream.avail_in = s->stream.avail_out = 0;
-    s->file = NULL;
-    s->z_err = Z_OK;
-    s->z_eof = 0;
-    s->in = 0;
-    s->out = 0;
-    s->back = EOF;
-    s->crc = crc32(0L, Z_NULL, 0);
-    s->msg = NULL;
-    s->transparent = 0;
-
-    s->path = (char*)ALLOC(strlen(path)+1);
-    if (s->path == NULL) {
-        return destroy(s), (gzFile)Z_NULL;
-    }
-    strcpy(s->path, path); /* do this early for debugging */
-
-    s->mode = '\0';
-    do {
-        if (*p == 'r') s->mode = 'r';
-        if (*p == 'w' || *p == 'a') s->mode = 'w';
-        if (*p >= '0' && *p <= '9') {
-            level = *p - '0';
-        } else if (*p == 'f') {
-          strategy = Z_FILTERED;
-        } else if (*p == 'h') {
-          strategy = Z_HUFFMAN_ONLY;
-        } else if (*p == 'R') {
-          strategy = Z_RLE;
-        } else {
-            *m++ = *p; /* copy the mode */
-        }
-    } while (*p++ && m != fmode + sizeof(fmode));
-    if (s->mode == '\0') return destroy(s), (gzFile)Z_NULL;
-
-    if (s->mode == 'w') {
-#ifdef NO_GZCOMPRESS
-        err = Z_STREAM_ERROR;
-#else
-        err = deflateInit2(&(s->stream), level,
-                           Z_DEFLATED, -MAX_WBITS, DEF_MEM_LEVEL, strategy);
-        /* windowBits is passed < 0 to suppress zlib header */
-
-        s->stream.next_out = s->outbuf = (Byte*)ALLOC(Z_BUFSIZE);
-#endif
-        if (err != Z_OK || s->outbuf == Z_NULL) {
-            return destroy(s), (gzFile)Z_NULL;
-        }
-    } else {
-        s->stream.next_in  = s->inbuf = (Byte*)ALLOC(Z_BUFSIZE);
-
-        err = inflateInit2(&(s->stream), -MAX_WBITS);
-        /* windowBits is passed < 0 to tell that there is no zlib header.
-         * Note that in this case inflate *requires* an extra "dummy" byte
-         * after the compressed stream in order to complete decompression and
-         * return Z_STREAM_END. Here the gzip CRC32 ensures that 4 bytes are
-         * present after the compressed stream.
-         */
-        if (err != Z_OK || s->inbuf == Z_NULL) {
-            return destroy(s), (gzFile)Z_NULL;
-        }
-    }
-    s->stream.avail_out = Z_BUFSIZE;
-
-    errno = 0;
-    s->file = fd < 0 ? F_OPEN(path, fmode) : (FILE*)fdopen(fd, fmode);
-
-    if (s->file == NULL) {
-        return destroy(s), (gzFile)Z_NULL;
-    }
-    if (s->mode == 'w') {
-        /* Write a very simple .gz header:
-         */
-        fprintf(s->file, "%c%c%c%c%c%c%c%c%c%c", gz_magic[0], gz_magic[1],
-             Z_DEFLATED, 0 /*flags*/, 0,0,0,0 /*time*/, 0 /*xflags*/, OS_CODE);
-        s->start = 10L;
-        /* We use 10L instead of ftell(s->file) to because ftell causes an
-         * fflush on some systems. This version of the library doesn't use
-         * start anyway in write mode, so this initialization is not
-         * necessary.
-         */
-    } else {
-        check_header(s); /* skip the .gz header */
-        s->start = ftell(s->file) - s->stream.avail_in;
-    }
-
-    return (gzFile)s;
-}
-
-/* ===========================================================================
-     Opens a gzip (.gz) file for reading or writing.
-*/
-gzFile ZEXPORT gzopen (path, mode)
-    const char *path;
-    const char *mode;
-{
-    return gz_open (path, mode, -1);
-}
-
-/* ===========================================================================
-     Associate a gzFile with the file descriptor fd. fd is not dup'ed here
-   to mimic the behavio(u)r of fdopen.
-*/
-gzFile ZEXPORT gzdopen (fd, mode)
-    int fd;
-    const char *mode;
-{
-    char name[46];      /* allow for up to 128-bit integers */
-
-    if (fd < 0) return (gzFile)Z_NULL;
-    sprintf(name, "<fd:%d>", fd); /* for debugging */
-
-    return gz_open (name, mode, fd);
-}
-
-/* ===========================================================================
- * Update the compression level and strategy
- */
-int ZEXPORT gzsetparams (file, level, strategy)
-    gzFile file;
-    int level;
-    int strategy;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
-
-    /* Make room to allow flushing */
-    if (s->stream.avail_out == 0) {
-
-        s->stream.next_out = s->outbuf;
-        if (fwrite(s->outbuf, 1, Z_BUFSIZE, s->file) != Z_BUFSIZE) {
-            s->z_err = Z_ERRNO;
-        }
-        s->stream.avail_out = Z_BUFSIZE;
-    }
-
-    return deflateParams (&(s->stream), level, strategy);
-}
-
-/* ===========================================================================
-     Read a byte from a gz_stream; update next_in and avail_in. Return EOF
-   for end of file.
-   IN assertion: the stream s has been sucessfully opened for reading.
-*/
-local int get_byte(s)
-    gz_stream *s;
-{
-    if (s->z_eof) return EOF;
-    if (s->stream.avail_in == 0) {
-        errno = 0;
-        s->stream.avail_in = (uInt)fread(s->inbuf, 1, Z_BUFSIZE, s->file);
-        if (s->stream.avail_in == 0) {
-            s->z_eof = 1;
-            if (ferror(s->file)) s->z_err = Z_ERRNO;
-            return EOF;
-        }
-        s->stream.next_in = s->inbuf;
-    }
-    s->stream.avail_in--;
-    return *(s->stream.next_in)++;
-}
-
-/* ===========================================================================
-      Check the gzip header of a gz_stream opened for reading. Set the stream
-    mode to transparent if the gzip magic header is not present; set s->err
-    to Z_DATA_ERROR if the magic header is present but the rest of the header
-    is incorrect.
-    IN assertion: the stream s has already been created sucessfully;
-       s->stream.avail_in is zero for the first time, but may be non-zero
-       for concatenated .gz files.
-*/
-local void check_header(s)
-    gz_stream *s;
-{
-    int method; /* method byte */
-    int flags;  /* flags byte */
-    uInt len;
-    int c;
-
-    /* Assure two bytes in the buffer so we can peek ahead -- handle case
-       where first byte of header is at the end of the buffer after the last
-       gzip segment */
-    len = s->stream.avail_in;
-    if (len < 2) {
-        if (len) s->inbuf[0] = s->stream.next_in[0];
-        errno = 0;
-        len = (uInt)fread(s->inbuf + len, 1, Z_BUFSIZE >> len, s->file);
-        if (len == 0 && ferror(s->file)) s->z_err = Z_ERRNO;
-        s->stream.avail_in += len;
-        s->stream.next_in = s->inbuf;
-        if (s->stream.avail_in < 2) {
-            s->transparent = s->stream.avail_in;
-            return;
-        }
-    }
-
-    /* Peek ahead to check the gzip magic header */
-    if (s->stream.next_in[0] != gz_magic[0] ||
-        s->stream.next_in[1] != gz_magic[1]) {
-        s->transparent = 1;
-        return;
-    }
-    s->stream.avail_in -= 2;
-    s->stream.next_in += 2;
-
-    /* Check the rest of the gzip header */
-    method = get_byte(s);
-    flags = get_byte(s);
-    if (method != Z_DEFLATED || (flags & RESERVED) != 0) {
-        s->z_err = Z_DATA_ERROR;
-        return;
-    }
-
-    /* Discard time, xflags and OS code: */
-    for (len = 0; len < 6; len++) (void)get_byte(s);
-
-    if ((flags & EXTRA_FIELD) != 0) { /* skip the extra field */
-        len  =  (uInt)get_byte(s);
-        len += ((uInt)get_byte(s))<<8;
-        /* len is garbage if EOF but the loop below will quit anyway */
-        while (len-- != 0 && get_byte(s) != EOF) ;
-    }
-    if ((flags & ORIG_NAME) != 0) { /* skip the original file name */
-        while ((c = get_byte(s)) != 0 && c != EOF) ;
-    }
-    if ((flags & COMMENT) != 0) {   /* skip the .gz file comment */
-        while ((c = get_byte(s)) != 0 && c != EOF) ;
-    }
-    if ((flags & HEAD_CRC) != 0) {  /* skip the header crc */
-        for (len = 0; len < 2; len++) (void)get_byte(s);
-    }
-    s->z_err = s->z_eof ? Z_DATA_ERROR : Z_OK;
-}
-
- /* ===========================================================================
- * Cleanup then free the given gz_stream. Return a zlib error code.
-   Try freeing in the reverse order of allocations.
- */
-local int destroy (s)
-    gz_stream *s;
-{
-    int err = Z_OK;
-
-    if (!s) return Z_STREAM_ERROR;
-
-    TRYFREE(s->msg);
-
-    if (s->stream.state != NULL) {
-        if (s->mode == 'w') {
-#ifdef NO_GZCOMPRESS
-            err = Z_STREAM_ERROR;
-#else
-            err = deflateEnd(&(s->stream));
-#endif
-        } else if (s->mode == 'r') {
-            err = inflateEnd(&(s->stream));
-        }
-    }
-    if (s->file != NULL && fclose(s->file)) {
-#ifdef ESPIPE
-        if (errno != ESPIPE) /* fclose is broken for pipes in HP/UX */
-#endif
-            err = Z_ERRNO;
-    }
-    if (s->z_err < 0) err = s->z_err;
-
-    TRYFREE(s->inbuf);
-    TRYFREE(s->outbuf);
-    TRYFREE(s->path);
-    TRYFREE(s);
-    return err;
-}
-
-/* ===========================================================================
-     Reads the given number of uncompressed bytes from the compressed file.
-   gzread returns the number of bytes actually read (0 for end of file).
-*/
-int ZEXPORT gzread (file, buf, len)
-    gzFile file;
-    voidp buf;
-    unsigned len;
-{
-    gz_stream *s = (gz_stream*)file;
-    Bytef *start = (Bytef*)buf; /* starting point for crc computation */
-    Byte  *next_out; /* == stream.next_out but not forced far (for MSDOS) */
-
-    if (s == NULL || s->mode != 'r') return Z_STREAM_ERROR;
-
-    if (s->z_err == Z_DATA_ERROR || s->z_err == Z_ERRNO) return -1;
-    if (s->z_err == Z_STREAM_END) return 0;  /* EOF */
-
-    next_out = (Byte*)buf;
-    s->stream.next_out = (Bytef*)buf;
-    s->stream.avail_out = len;
-
-    if (s->stream.avail_out && s->back != EOF) {
-        *next_out++ = s->back;
-        s->stream.next_out++;
-        s->stream.avail_out--;
-        s->back = EOF;
-        s->out++;
-        start++;
-        if (s->last) {
-            s->z_err = Z_STREAM_END;
-            return 1;
-        }
-    }
-
-    while (s->stream.avail_out != 0) {
-
-        if (s->transparent) {
-            /* Copy first the lookahead bytes: */
-            uInt n = s->stream.avail_in;
-            if (n > s->stream.avail_out) n = s->stream.avail_out;
-            if (n > 0) {
-                zmemcpy(s->stream.next_out, s->stream.next_in, n);
-                next_out += n;
-                s->stream.next_out = next_out;
-                s->stream.next_in   += n;
-                s->stream.avail_out -= n;
-                s->stream.avail_in  -= n;
-            }
-            if (s->stream.avail_out > 0) {
-                s->stream.avail_out -=
-                    (uInt)fread(next_out, 1, s->stream.avail_out, s->file);
-            }
-            len -= s->stream.avail_out;
-            s->in  += len;
-            s->out += len;
-            if (len == 0) s->z_eof = 1;
-            return (int)len;
-        }
-        if (s->stream.avail_in == 0 && !s->z_eof) {
-
-            errno = 0;
-            s->stream.avail_in = (uInt)fread(s->inbuf, 1, Z_BUFSIZE, s->file);
-            if (s->stream.avail_in == 0) {
-                s->z_eof = 1;
-                if (ferror(s->file)) {
-                    s->z_err = Z_ERRNO;
-                    break;
-                }
-            }
-            s->stream.next_in = s->inbuf;
-        }
-        s->in += s->stream.avail_in;
-        s->out += s->stream.avail_out;
-        s->z_err = inflate(&(s->stream), Z_NO_FLUSH);
-        s->in -= s->stream.avail_in;
-        s->out -= s->stream.avail_out;
-
-        if (s->z_err == Z_STREAM_END) {
-            /* Check CRC and original size */
-            s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start));
-            start = s->stream.next_out;
-
-            if (getLong(s) != s->crc) {
-                s->z_err = Z_DATA_ERROR;
-            } else {
-                (void)getLong(s);
-                /* The uncompressed length returned by above getlong() may be
-                 * different from s->out in case of concatenated .gz files.
-                 * Check for such files:
-                 */
-                check_header(s);
-                if (s->z_err == Z_OK) {
-                    inflateReset(&(s->stream));
-                    s->crc = crc32(0L, Z_NULL, 0);
-                }
-            }
-        }
-        if (s->z_err != Z_OK || s->z_eof) break;
-    }
-    s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start));
-
-    if (len == s->stream.avail_out &&
-        (s->z_err == Z_DATA_ERROR || s->z_err == Z_ERRNO))
-        return -1;
-    return (int)(len - s->stream.avail_out);
-}
-
-
-/* ===========================================================================
-      Reads one byte from the compressed file. gzgetc returns this byte
-   or -1 in case of end of file or error.
-*/
-int ZEXPORT gzgetc(file)
-    gzFile file;
-{
-    unsigned char c;
-
-    return gzread(file, &c, 1) == 1 ? c : -1;
-}
-
-
-/* ===========================================================================
-      Push one byte back onto the stream.
-*/
-int ZEXPORT gzungetc(c, file)
-    int c;
-    gzFile file;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL || s->mode != 'r' || c == EOF || s->back != EOF) return EOF;
-    s->back = c;
-    s->out--;
-    s->last = (s->z_err == Z_STREAM_END);
-    if (s->last) s->z_err = Z_OK;
-    s->z_eof = 0;
-    return c;
-}
-
-
-/* ===========================================================================
-      Reads bytes from the compressed file until len-1 characters are
-   read, or a newline character is read and transferred to buf, or an
-   end-of-file condition is encountered.  The string is then terminated
-   with a null character.
-      gzgets returns buf, or Z_NULL in case of error.
-
-      The current implementation is not optimized at all.
-*/
-char * ZEXPORT gzgets(file, buf, len)
-    gzFile file;
-    char *buf;
-    int len;
-{
-    char *b = buf;
-    if (buf == Z_NULL || len <= 0) return Z_NULL;
-
-    while (--len > 0 && gzread(file, buf, 1) == 1 && *buf++ != '\n') ;
-    *buf = '\0';
-    return b == buf && len > 0 ? Z_NULL : b;
-}
-
-
-#ifndef NO_GZCOMPRESS
-/* ===========================================================================
-     Writes the given number of uncompressed bytes into the compressed file.
-   gzwrite returns the number of bytes actually written (0 in case of error).
-*/
-int ZEXPORT gzwrite (file, buf, len)
-    gzFile file;
-    voidpc buf;
-    unsigned len;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
-
-    s->stream.next_in = (Bytef*)buf;
-    s->stream.avail_in = len;
-
-    while (s->stream.avail_in != 0) {
-
-        if (s->stream.avail_out == 0) {
-
-            s->stream.next_out = s->outbuf;
-            if (fwrite(s->outbuf, 1, Z_BUFSIZE, s->file) != Z_BUFSIZE) {
-                s->z_err = Z_ERRNO;
-                break;
-            }
-            s->stream.avail_out = Z_BUFSIZE;
-        }
-        s->in += s->stream.avail_in;
-        s->out += s->stream.avail_out;
-        s->z_err = deflate(&(s->stream), Z_NO_FLUSH);
-        s->in -= s->stream.avail_in;
-        s->out -= s->stream.avail_out;
-        if (s->z_err != Z_OK) break;
-    }
-    s->crc = crc32(s->crc, (const Bytef *)buf, len);
-
-    return (int)(len - s->stream.avail_in);
-}
-
-
-/* ===========================================================================
-     Converts, formats, and writes the args to the compressed file under
-   control of the format string, as in fprintf. gzprintf returns the number of
-   uncompressed bytes actually written (0 in case of error).
-*/
-#ifdef STDC
-#include <stdarg.h>
-
-int ZEXPORTVA gzprintf (gzFile file, const char *format, /* args */ ...)
-{
-    char buf[Z_PRINTF_BUFSIZE];
-    va_list va;
-    int len;
-
-    buf[sizeof(buf) - 1] = 0;
-    va_start(va, format);
-#ifdef NO_vsnprintf
-#  ifdef HAS_vsprintf_void
-    (void)vsprintf(buf, format, va);
-    va_end(va);
-    for (len = 0; len < sizeof(buf); len++)
-        if (buf[len] == 0) break;
-#  else
-    len = vsprintf(buf, format, va);
-    va_end(va);
-#  endif
-#else
-#  ifdef HAS_vsnprintf_void
-    (void)vsnprintf(buf, sizeof(buf), format, va);
-    va_end(va);
-    len = strlen(buf);
-#  else
-    len = vsnprintf(buf, sizeof(buf), format, va);
-    va_end(va);
-#  endif
-#endif
-    if (len <= 0 || len >= (int)sizeof(buf) || buf[sizeof(buf) - 1] != 0)
-        return 0;
-    return gzwrite(file, buf, (unsigned)len);
-}
-#else /* not ANSI C */
-
-int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
-                       a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
-    gzFile file;
-    const char *format;
-    int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
-        a11, a12, a13, a14, a15, a16, a17, a18, a19, a20;
-{
-    char buf[Z_PRINTF_BUFSIZE];
-    int len;
-
-    buf[sizeof(buf) - 1] = 0;
-#ifdef NO_snprintf
-#  ifdef HAS_sprintf_void
-    sprintf(buf, format, a1, a2, a3, a4, a5, a6, a7, a8,
-            a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
-    for (len = 0; len < sizeof(buf); len++)
-        if (buf[len] == 0) break;
-#  else
-    len = sprintf(buf, format, a1, a2, a3, a4, a5, a6, a7, a8,
-                a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
-#  endif
-#else
-#  ifdef HAS_snprintf_void
-    snprintf(buf, sizeof(buf), format, a1, a2, a3, a4, a5, a6, a7, a8,
-             a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
-    len = strlen(buf);
-#  else
-    len = snprintf(buf, sizeof(buf), format, a1, a2, a3, a4, a5, a6, a7, a8,
-                 a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
-#  endif
-#endif
-    if (len <= 0 || len >= sizeof(buf) || buf[sizeof(buf) - 1] != 0)
-        return 0;
-    return gzwrite(file, buf, len);
-}
-#endif
-
-/* ===========================================================================
-      Writes c, converted to an unsigned char, into the compressed file.
-   gzputc returns the value that was written, or -1 in case of error.
-*/
-int ZEXPORT gzputc(file, c)
-    gzFile file;
-    int c;
-{
-    unsigned char cc = (unsigned char) c; /* required for big endian systems */
-
-    return gzwrite(file, &cc, 1) == 1 ? (int)cc : -1;
-}
-
-
-/* ===========================================================================
-      Writes the given null-terminated string to the compressed file, excluding
-   the terminating null character.
-      gzputs returns the number of characters written, or -1 in case of error.
-*/
-int ZEXPORT gzputs(file, s)
-    gzFile file;
-    const char *s;
-{
-    return gzwrite(file, (char*)s, (unsigned)strlen(s));
-}
-
-
-/* ===========================================================================
-     Flushes all pending output into the compressed file. The parameter
-   flush is as in the deflate() function.
-*/
-local int do_flush (file, flush)
-    gzFile file;
-    int flush;
-{
-    uInt len;
-    int done = 0;
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
-
-    s->stream.avail_in = 0; /* should be zero already anyway */
-
-    for (;;) {
-        len = Z_BUFSIZE - s->stream.avail_out;
-
-        if (len != 0) {
-            if ((uInt)fwrite(s->outbuf, 1, len, s->file) != len) {
-                s->z_err = Z_ERRNO;
-                return Z_ERRNO;
-            }
-            s->stream.next_out = s->outbuf;
-            s->stream.avail_out = Z_BUFSIZE;
-        }
-        if (done) break;
-        s->out += s->stream.avail_out;
-        s->z_err = deflate(&(s->stream), flush);
-        s->out -= s->stream.avail_out;
-
-        /* Ignore the second of two consecutive flushes: */
-        if (len == 0 && s->z_err == Z_BUF_ERROR) s->z_err = Z_OK;
-
-        /* deflate has finished flushing only when it hasn't used up
-         * all the available space in the output buffer:
-         */
-        done = (s->stream.avail_out != 0 || s->z_err == Z_STREAM_END);
-
-        if (s->z_err != Z_OK && s->z_err != Z_STREAM_END) break;
-    }
-    return  s->z_err == Z_STREAM_END ? Z_OK : s->z_err;
-}
-
-int ZEXPORT gzflush (file, flush)
-     gzFile file;
-     int flush;
-{
-    gz_stream *s = (gz_stream*)file;
-    int err = do_flush (file, flush);
-
-    if (err) return err;
-    fflush(s->file);
-    return  s->z_err == Z_STREAM_END ? Z_OK : s->z_err;
-}
-#endif /* NO_GZCOMPRESS */
-
-/* ===========================================================================
-      Sets the starting position for the next gzread or gzwrite on the given
-   compressed file. The offset represents a number of bytes in the
-      gzseek returns the resulting offset location as measured in bytes from
-   the beginning of the uncompressed stream, or -1 in case of error.
-      SEEK_END is not implemented, returns error.
-      In this version of the library, gzseek can be extremely slow.
-*/
-z_off_t ZEXPORT gzseek (file, offset, whence)
-    gzFile file;
-    z_off_t offset;
-    int whence;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL || whence == SEEK_END ||
-        s->z_err == Z_ERRNO || s->z_err == Z_DATA_ERROR) {
-        return -1L;
-    }
-
-    if (s->mode == 'w') {
-#ifdef NO_GZCOMPRESS
-        return -1L;
-#else
-        if (whence == SEEK_SET) {
-            offset -= s->in;
-        }
-        if (offset < 0) return -1L;
-
-        /* At this point, offset is the number of zero bytes to write. */
-        if (s->inbuf == Z_NULL) {
-            s->inbuf = (Byte*)ALLOC(Z_BUFSIZE); /* for seeking */
-            if (s->inbuf == Z_NULL) return -1L;
-            zmemzero(s->inbuf, Z_BUFSIZE);
-        }
-        while (offset > 0)  {
-            uInt size = Z_BUFSIZE;
-            if (offset < Z_BUFSIZE) size = (uInt)offset;
-
-            size = gzwrite(file, s->inbuf, size);
-            if (size == 0) return -1L;
-
-            offset -= size;
-        }
-        return s->in;
-#endif
-    }
-    /* Rest of function is for reading only */
-
-    /* compute absolute position */
-    if (whence == SEEK_CUR) {
-        offset += s->out;
-    }
-    if (offset < 0) return -1L;
-
-    if (s->transparent) {
-        /* map to fseek */
-        s->back = EOF;
-        s->stream.avail_in = 0;
-        s->stream.next_in = s->inbuf;
-        if (fseek(s->file, offset, SEEK_SET) < 0) return -1L;
-
-        s->in = s->out = offset;
-        return offset;
-    }
-
-    /* For a negative seek, rewind and use positive seek */
-    if (offset >= s->out) {
-        offset -= s->out;
-    } else if (gzrewind(file) < 0) {
-        return -1L;
-    }
-    /* offset is now the number of bytes to skip. */
-
-    if (offset != 0 && s->outbuf == Z_NULL) {
-        s->outbuf = (Byte*)ALLOC(Z_BUFSIZE);
-        if (s->outbuf == Z_NULL) return -1L;
-    }
-    if (offset && s->back != EOF) {
-        s->back = EOF;
-        s->out++;
-        offset--;
-        if (s->last) s->z_err = Z_STREAM_END;
-    }
-    while (offset > 0)  {
-        int size = Z_BUFSIZE;
-        if (offset < Z_BUFSIZE) size = (int)offset;
-
-        size = gzread(file, s->outbuf, (uInt)size);
-        if (size <= 0) return -1L;
-        offset -= size;
-    }
-    return s->out;
-}
-
-/* ===========================================================================
-     Rewinds input file.
-*/
-int ZEXPORT gzrewind (file)
-    gzFile file;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL || s->mode != 'r') return -1;
-
-    s->z_err = Z_OK;
-    s->z_eof = 0;
-    s->back = EOF;
-    s->stream.avail_in = 0;
-    s->stream.next_in = s->inbuf;
-    s->crc = crc32(0L, Z_NULL, 0);
-    if (!s->transparent) (void)inflateReset(&s->stream);
-    s->in = 0;
-    s->out = 0;
-    return fseek(s->file, s->start, SEEK_SET);
-}
-
-/* ===========================================================================
-     Returns the starting position for the next gzread or gzwrite on the
-   given compressed file. This position represents a number of bytes in the
-   uncompressed data stream.
-*/
-z_off_t ZEXPORT gztell (file)
-    gzFile file;
-{
-    return gzseek(file, 0L, SEEK_CUR);
-}
-
-/* ===========================================================================
-     Returns 1 when EOF has previously been detected reading the given
-   input stream, otherwise zero.
-*/
-int ZEXPORT gzeof (file)
-    gzFile file;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    /* With concatenated compressed files that can have embedded
-     * crc trailers, z_eof is no longer the only/best indicator of EOF
-     * on a gz_stream. Handle end-of-stream error explicitly here.
-     */
-    if (s == NULL || s->mode != 'r') return 0;
-    if (s->z_eof) return 1;
-    return s->z_err == Z_STREAM_END;
-}
-
-/* ===========================================================================
-     Returns 1 if reading and doing so transparently, otherwise zero.
-*/
-int ZEXPORT gzdirect (file)
-    gzFile file;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL || s->mode != 'r') return 0;
-    return s->transparent;
-}
-
-/* ===========================================================================
-   Outputs a long in LSB order to the given file
-*/
-local void putLong (file, x)
-    FILE *file;
-    uLong x;
-{
-    int n;
-    for (n = 0; n < 4; n++) {
-        fputc((int)(x & 0xff), file);
-        x >>= 8;
-    }
-}
-
-/* ===========================================================================
-   Reads a long in LSB order from the given gz_stream. Sets z_err in case
-   of error.
-*/
-local uLong getLong (s)
-    gz_stream *s;
-{
-    uLong x = (uLong)get_byte(s);
-    int c;
-
-    x += ((uLong)get_byte(s))<<8;
-    x += ((uLong)get_byte(s))<<16;
-    c = get_byte(s);
-    if (c == EOF) s->z_err = Z_DATA_ERROR;
-    x += ((uLong)c)<<24;
-    return x;
-}
-
-/* ===========================================================================
-     Flushes all pending output if necessary, closes the compressed file
-   and deallocates all the (de)compression state.
-*/
-int ZEXPORT gzclose (file)
-    gzFile file;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL) return Z_STREAM_ERROR;
-
-    if (s->mode == 'w') {
-#ifdef NO_GZCOMPRESS
-        return Z_STREAM_ERROR;
-#else
-        if (do_flush (file, Z_FINISH) != Z_OK)
-            return destroy((gz_stream*)file);
-
-        putLong (s->file, s->crc);
-        putLong (s->file, (uLong)(s->in & 0xffffffff));
-#endif
-    }
-    return destroy((gz_stream*)file);
-}
-
-#ifdef STDC
-#  define zstrerror(errnum) strerror(errnum)
-#else
-#  define zstrerror(errnum) ""
-#endif
-
-/* ===========================================================================
-     Returns the error message for the last error which occurred on the
-   given compressed file. errnum is set to zlib error number. If an
-   error occurred in the file system and not in the compression library,
-   errnum is set to Z_ERRNO and the application may consult errno
-   to get the exact error code.
-*/
-const char * ZEXPORT gzerror (file, errnum)
-    gzFile file;
-    int *errnum;
-{
-    char *m;
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL) {
-        *errnum = Z_STREAM_ERROR;
-        return (const char*)ERR_MSG(Z_STREAM_ERROR);
-    }
-    *errnum = s->z_err;
-    if (*errnum == Z_OK) return (const char*)"";
-
-    m = (char*)(*errnum == Z_ERRNO ? zstrerror(errno) : s->stream.msg);
-
-    if (m == NULL || *m == '\0') m = (char*)ERR_MSG(s->z_err);
-
-    TRYFREE(s->msg);
-    s->msg = (char*)ALLOC(strlen(s->path) + strlen(m) + 3);
-    if (s->msg == Z_NULL) return (const char*)ERR_MSG(Z_MEM_ERROR);
-    strcpy(s->msg, s->path);
-    strcat(s->msg, ": ");
-    strcat(s->msg, m);
-    return (const char*)s->msg;
-}
-
-/* ===========================================================================
-     Clear the error and end-of-file flags, and do the same for the real file.
-*/
-void ZEXPORT gzclearerr (file)
-    gzFile file;
-{
-    gz_stream *s = (gz_stream*)file;
-
-    if (s == NULL) return;
-    if (s->z_err != Z_STREAM_END) s->z_err = Z_OK;
-    s->z_eof = 0;
-    clearerr(s->file);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/infback.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/infback.c
deleted file mode 100644
index 1e03e1b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/infback.c
+++ /dev/null
@@ -1,623 +0,0 @@
-/* infback.c -- inflate using a call-back interface
- * Copyright (C) 1995-2005 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/*
-   This code is largely copied from inflate.c.  Normally either infback.o or
-   inflate.o would be linked into an application--not both.  The interface
-   with inffast.c is retained so that optimized assembler-coded versions of
-   inflate_fast() can be used with either inflate.c or infback.c.
- */
-
-#include "zutil.h"
-#include "inftrees.h"
-#include "inflate.h"
-#include "inffast.h"
-
-/* function prototypes */
-local void fixedtables OF((struct inflate_state FAR *state));
-
-/*
-   strm provides memory allocation functions in zalloc and zfree, or
-   Z_NULL to use the library memory allocation functions.
-
-   windowBits is in the range 8..15, and window is a user-supplied
-   window and output buffer that is 2**windowBits bytes.
- */
-int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size)
-z_streamp strm;
-int windowBits;
-unsigned char FAR *window;
-const char *version;
-int stream_size;
-{
-    struct inflate_state FAR *state;
-
-    if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
-        stream_size != (int)(sizeof(z_stream)))
-        return Z_VERSION_ERROR;
-    if (strm == Z_NULL || window == Z_NULL ||
-        windowBits < 8 || windowBits > 15)
-        return Z_STREAM_ERROR;
-    strm->msg = Z_NULL;                 /* in case we return an error */
-    if (strm->zalloc == (alloc_func)0) {
-        strm->zalloc = zcalloc;
-        strm->opaque = (voidpf)0;
-    }
-    if (strm->zfree == (free_func)0) strm->zfree = zcfree;
-    state = (struct inflate_state FAR *)ZALLOC(strm, 1,
-                                               sizeof(struct inflate_state));
-    if (state == Z_NULL) return Z_MEM_ERROR;
-    Tracev((stderr, "inflate: allocated\n"));
-    strm->state = (struct internal_state FAR *)state;
-    state->dmax = 32768U;
-    state->wbits = windowBits;
-    state->wsize = 1U << windowBits;
-    state->window = window;
-    state->write = 0;
-    state->whave = 0;
-    return Z_OK;
-}
-
-/*
-   Return state with length and distance decoding tables and index sizes set to
-   fixed code decoding.  Normally this returns fixed tables from inffixed.h.
-   If BUILDFIXED is defined, then instead this routine builds the tables the
-   first time it's called, and returns those tables the first time and
-   thereafter.  This reduces the size of the code by about 2K bytes, in
-   exchange for a little execution time.  However, BUILDFIXED should not be
-   used for threaded applications, since the rewriting of the tables and virgin
-   may not be thread-safe.
- */
-local void fixedtables(state)
-struct inflate_state FAR *state;
-{
-#ifdef BUILDFIXED
-    static int virgin = 1;
-    static code *lenfix, *distfix;
-    static code fixed[544];
-
-    /* build fixed huffman tables if first call (may not be thread safe) */
-    if (virgin) {
-        unsigned sym, bits;
-        static code *next;
-
-        /* literal/length table */
-        sym = 0;
-        while (sym < 144) state->lens[sym++] = 8;
-        while (sym < 256) state->lens[sym++] = 9;
-        while (sym < 280) state->lens[sym++] = 7;
-        while (sym < 288) state->lens[sym++] = 8;
-        next = fixed;
-        lenfix = next;
-        bits = 9;
-        inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work);
-
-        /* distance table */
-        sym = 0;
-        while (sym < 32) state->lens[sym++] = 5;
-        distfix = next;
-        bits = 5;
-        inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work);
-
-        /* do this just once */
-        virgin = 0;
-    }
-#else /* !BUILDFIXED */
-#   include "inffixed.h"
-#endif /* BUILDFIXED */
-    state->lencode = lenfix;
-    state->lenbits = 9;
-    state->distcode = distfix;
-    state->distbits = 5;
-}
-
-/* Macros for inflateBack(): */
-
-/* Load returned state from inflate_fast() */
-#define LOAD() \
-    do { \
-        put = strm->next_out; \
-        left = strm->avail_out; \
-        next = strm->next_in; \
-        have = strm->avail_in; \
-        hold = state->hold; \
-        bits = state->bits; \
-    } while (0)
-
-/* Set state from registers for inflate_fast() */
-#define RESTORE() \
-    do { \
-        strm->next_out = put; \
-        strm->avail_out = left; \
-        strm->next_in = next; \
-        strm->avail_in = have; \
-        state->hold = hold; \
-        state->bits = bits; \
-    } while (0)
-
-/* Clear the input bit accumulator */
-#define INITBITS() \
-    do { \
-        hold = 0; \
-        bits = 0; \
-    } while (0)
-
-/* Assure that some input is available.  If input is requested, but denied,
-   then return a Z_BUF_ERROR from inflateBack(). */
-#define PULL() \
-    do { \
-        if (have == 0) { \
-            have = in(in_desc, &next); \
-            if (have == 0) { \
-                next = Z_NULL; \
-                ret = Z_BUF_ERROR; \
-                goto inf_leave; \
-            } \
-        } \
-    } while (0)
-
-/* Get a byte of input into the bit accumulator, or return from inflateBack()
-   with an error if there is no input available. */
-#define PULLBYTE() \
-    do { \
-        PULL(); \
-        have--; \
-        hold += (unsigned long)(*next++) << bits; \
-        bits += 8; \
-    } while (0)
-
-/* Assure that there are at least n bits in the bit accumulator.  If there is
-   not enough available input to do that, then return from inflateBack() with
-   an error. */
-#define NEEDBITS(n) \
-    do { \
-        while (bits < (unsigned)(n)) \
-            PULLBYTE(); \
-    } while (0)
-
-/* Return the low n bits of the bit accumulator (n < 16) */
-#define BITS(n) \
-    ((unsigned)hold & ((1U << (n)) - 1))
-
-/* Remove n bits from the bit accumulator */
-#define DROPBITS(n) \
-    do { \
-        hold >>= (n); \
-        bits -= (unsigned)(n); \
-    } while (0)
-
-/* Remove zero to seven bits as needed to go to a byte boundary */
-#define BYTEBITS() \
-    do { \
-        hold >>= bits & 7; \
-        bits -= bits & 7; \
-    } while (0)
-
-/* Assure that some output space is available, by writing out the window
-   if it's full.  If the write fails, return from inflateBack() with a
-   Z_BUF_ERROR. */
-#define ROOM() \
-    do { \
-        if (left == 0) { \
-            put = state->window; \
-            left = state->wsize; \
-            state->whave = left; \
-            if (out(out_desc, put, left)) { \
-                ret = Z_BUF_ERROR; \
-                goto inf_leave; \
-            } \
-        } \
-    } while (0)
-
-/*
-   strm provides the memory allocation functions and window buffer on input,
-   and provides information on the unused input on return.  For Z_DATA_ERROR
-   returns, strm will also provide an error message.
-
-   in() and out() are the call-back input and output functions.  When
-   inflateBack() needs more input, it calls in().  When inflateBack() has
-   filled the window with output, or when it completes with data in the
-   window, it calls out() to write out the data.  The application must not
-   change the provided input until in() is called again or inflateBack()
-   returns.  The application must not change the window/output buffer until
-   inflateBack() returns.
-
-   in() and out() are called with a descriptor parameter provided in the
-   inflateBack() call.  This parameter can be a structure that provides the
-   information required to do the read or write, as well as accumulated
-   information on the input and output such as totals and check values.
-
-   in() should return zero on failure.  out() should return non-zero on
-   failure.  If either in() or out() fails, than inflateBack() returns a
-   Z_BUF_ERROR.  strm->next_in can be checked for Z_NULL to see whether it
-   was in() or out() that caused in the error.  Otherwise,  inflateBack()
-   returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format
-   error, or Z_MEM_ERROR if it could not allocate memory for the state.
-   inflateBack() can also return Z_STREAM_ERROR if the input parameters
-   are not correct, i.e. strm is Z_NULL or the state was not initialized.
- */
-int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc)
-z_streamp strm;
-in_func in;
-void FAR *in_desc;
-out_func out;
-void FAR *out_desc;
-{
-    struct inflate_state FAR *state;
-    unsigned char FAR *next;    /* next input */
-    unsigned char FAR *put;     /* next output */
-    unsigned have, left;        /* available input and output */
-    unsigned long hold;         /* bit buffer */
-    unsigned bits;              /* bits in bit buffer */
-    unsigned copy;              /* number of stored or match bytes to copy */
-    unsigned char FAR *from;    /* where to copy match bytes from */
-    code this;                  /* current decoding table entry */
-    code last;                  /* parent table entry */
-    unsigned len;               /* length to copy for repeats, bits to drop */
-    int ret;                    /* return code */
-    static const unsigned short order[19] = /* permutation of code lengths */
-        {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
-
-    /* Check that the strm exists and that the state was initialized */
-    if (strm == Z_NULL || strm->state == Z_NULL)
-        return Z_STREAM_ERROR;
-    state = (struct inflate_state FAR *)strm->state;
-
-    /* Reset the state */
-    strm->msg = Z_NULL;
-    state->mode = TYPE;
-    state->last = 0;
-    state->whave = 0;
-    next = strm->next_in;
-    have = next != Z_NULL ? strm->avail_in : 0;
-    hold = 0;
-    bits = 0;
-    put = state->window;
-    left = state->wsize;
-
-    /* Inflate until end of block marked as last */
-    for (;;)
-        switch (state->mode) {
-        case TYPE:
-            /* determine and dispatch block type */
-            if (state->last) {
-                BYTEBITS();
-                state->mode = DONE;
-                break;
-            }
-            NEEDBITS(3);
-            state->last = BITS(1);
-            DROPBITS(1);
-            switch (BITS(2)) {
-            case 0:                             /* stored block */
-                Tracev((stderr, "inflate:     stored block%s\n",
-                        state->last ? " (last)" : ""));
-                state->mode = STORED;
-                break;
-            case 1:                             /* fixed block */
-                fixedtables(state);
-                Tracev((stderr, "inflate:     fixed codes block%s\n",
-                        state->last ? " (last)" : ""));
-                state->mode = LEN;              /* decode codes */
-                break;
-            case 2:                             /* dynamic block */
-                Tracev((stderr, "inflate:     dynamic codes block%s\n",
-                        state->last ? " (last)" : ""));
-                state->mode = TABLE;
-                break;
-            case 3:
-                strm->msg = (char *)"invalid block type";
-                state->mode = BAD;
-            }
-            DROPBITS(2);
-            break;
-
-        case STORED:
-            /* get and verify stored block length */
-            BYTEBITS();                         /* go to byte boundary */
-            NEEDBITS(32);
-            if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) {
-                strm->msg = (char *)"invalid stored block lengths";
-                state->mode = BAD;
-                break;
-            }
-            state->length = (unsigned)hold & 0xffff;
-            Tracev((stderr, "inflate:       stored length %u\n",
-                    state->length));
-            INITBITS();
-
-            /* copy stored block from input to output */
-            while (state->length != 0) {
-                copy = state->length;
-                PULL();
-                ROOM();
-                if (copy > have) copy = have;
-                if (copy > left) copy = left;
-                zmemcpy(put, next, copy);
-                have -= copy;
-                next += copy;
-                left -= copy;
-                put += copy;
-                state->length -= copy;
-            }
-            Tracev((stderr, "inflate:       stored end\n"));
-            state->mode = TYPE;
-            break;
-
-        case TABLE:
-            /* get dynamic table entries descriptor */
-            NEEDBITS(14);
-            state->nlen = BITS(5) + 257;
-            DROPBITS(5);
-            state->ndist = BITS(5) + 1;
-            DROPBITS(5);
-            state->ncode = BITS(4) + 4;
-            DROPBITS(4);
-#ifndef PKZIP_BUG_WORKAROUND
-            if (state->nlen > 286 || state->ndist > 30) {
-                strm->msg = (char *)"too many length or distance symbols";
-                state->mode = BAD;
-                break;
-            }
-#endif
-            Tracev((stderr, "inflate:       table sizes ok\n"));
-
-            /* get code length code lengths (not a typo) */
-            state->have = 0;
-            while (state->have < state->ncode) {
-                NEEDBITS(3);
-                state->lens[order[state->have++]] = (unsigned short)BITS(3);
-                DROPBITS(3);
-            }
-            while (state->have < 19)
-                state->lens[order[state->have++]] = 0;
-            state->next = state->codes;
-            state->lencode = (code const FAR *)(state->next);
-            state->lenbits = 7;
-            ret = inflate_table(CODES, state->lens, 19, &(state->next),
-                                &(state->lenbits), state->work);
-            if (ret) {
-                strm->msg = (char *)"invalid code lengths set";
-                state->mode = BAD;
-                break;
-            }
-            Tracev((stderr, "inflate:       code lengths ok\n"));
-
-            /* get length and distance code code lengths */
-            state->have = 0;
-            while (state->have < state->nlen + state->ndist) {
-                for (;;) {
-                    this = state->lencode[BITS(state->lenbits)];
-                    if ((unsigned)(this.bits) <= bits) break;
-                    PULLBYTE();
-                }
-                if (this.val < 16) {
-                    NEEDBITS(this.bits);
-                    DROPBITS(this.bits);
-                    state->lens[state->have++] = this.val;
-                }
-                else {
-                    if (this.val == 16) {
-                        NEEDBITS(this.bits + 2);
-                        DROPBITS(this.bits);
-                        if (state->have == 0) {
-                            strm->msg = (char *)"invalid bit length repeat";
-                            state->mode = BAD;
-                            break;
-                        }
-                        len = (unsigned)(state->lens[state->have - 1]);
-                        copy = 3 + BITS(2);
-                        DROPBITS(2);
-                    }
-                    else if (this.val == 17) {
-                        NEEDBITS(this.bits + 3);
-                        DROPBITS(this.bits);
-                        len = 0;
-                        copy = 3 + BITS(3);
-                        DROPBITS(3);
-                    }
-                    else {
-                        NEEDBITS(this.bits + 7);
-                        DROPBITS(this.bits);
-                        len = 0;
-                        copy = 11 + BITS(7);
-                        DROPBITS(7);
-                    }
-                    if (state->have + copy > state->nlen + state->ndist) {
-                        strm->msg = (char *)"invalid bit length repeat";
-                        state->mode = BAD;
-                        break;
-                    }
-                    while (copy--)
-                        state->lens[state->have++] = (unsigned short)len;
-                }
-            }
-
-            /* handle error breaks in while */
-            if (state->mode == BAD) break;
-
-            /* build code tables */
-            state->next = state->codes;
-            state->lencode = (code const FAR *)(state->next);
-            state->lenbits = 9;
-            ret = inflate_table(LENS, state->lens, state->nlen, &(state->next),
-                                &(state->lenbits), state->work);
-            if (ret) {
-                strm->msg = (char *)"invalid literal/lengths set";
-                state->mode = BAD;
-                break;
-            }
-            state->distcode = (code const FAR *)(state->next);
-            state->distbits = 6;
-            ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist,
-                            &(state->next), &(state->distbits), state->work);
-            if (ret) {
-                strm->msg = (char *)"invalid distances set";
-                state->mode = BAD;
-                break;
-            }
-            Tracev((stderr, "inflate:       codes ok\n"));
-            state->mode = LEN;
-
-        case LEN:
-            /* use inflate_fast() if we have enough input and output */
-            if (have >= 6 && left >= 258) {
-                RESTORE();
-                if (state->whave < state->wsize)
-                    state->whave = state->wsize - left;
-                inflate_fast(strm, state->wsize);
-                LOAD();
-                break;
-            }
-
-            /* get a literal, length, or end-of-block code */
-            for (;;) {
-                this = state->lencode[BITS(state->lenbits)];
-                if ((unsigned)(this.bits) <= bits) break;
-                PULLBYTE();
-            }
-            if (this.op && (this.op & 0xf0) == 0) {
-                last = this;
-                for (;;) {
-                    this = state->lencode[last.val +
-                            (BITS(last.bits + last.op) >> last.bits)];
-                    if ((unsigned)(last.bits + this.bits) <= bits) break;
-                    PULLBYTE();
-                }
-                DROPBITS(last.bits);
-            }
-            DROPBITS(this.bits);
-            state->length = (unsigned)this.val;
-
-            /* process literal */
-            if (this.op == 0) {
-                Tracevv((stderr, this.val >= 0x20 && this.val < 0x7f ?
-                        "inflate:         literal '%c'\n" :
-                        "inflate:         literal 0x%02x\n", this.val));
-                ROOM();
-                *put++ = (unsigned char)(state->length);
-                left--;
-                state->mode = LEN;
-                break;
-            }
-
-            /* process end of block */
-            if (this.op & 32) {
-                Tracevv((stderr, "inflate:         end of block\n"));
-                state->mode = TYPE;
-                break;
-            }
-
-            /* invalid code */
-            if (this.op & 64) {
-                strm->msg = (char *)"invalid literal/length code";
-                state->mode = BAD;
-                break;
-            }
-
-            /* length code -- get extra bits, if any */
-            state->extra = (unsigned)(this.op) & 15;
-            if (state->extra != 0) {
-                NEEDBITS(state->extra);
-                state->length += BITS(state->extra);
-                DROPBITS(state->extra);
-            }
-            Tracevv((stderr, "inflate:         length %u\n", state->length));
-
-            /* get distance code */
-            for (;;) {
-                this = state->distcode[BITS(state->distbits)];
-                if ((unsigned)(this.bits) <= bits) break;
-                PULLBYTE();
-            }
-            if ((this.op & 0xf0) == 0) {
-                last = this;
-                for (;;) {
-                    this = state->distcode[last.val +
-                            (BITS(last.bits + last.op) >> last.bits)];
-                    if ((unsigned)(last.bits + this.bits) <= bits) break;
-                    PULLBYTE();
-                }
-                DROPBITS(last.bits);
-            }
-            DROPBITS(this.bits);
-            if (this.op & 64) {
-                strm->msg = (char *)"invalid distance code";
-                state->mode = BAD;
-                break;
-            }
-            state->offset = (unsigned)this.val;
-
-            /* get distance extra bits, if any */
-            state->extra = (unsigned)(this.op) & 15;
-            if (state->extra != 0) {
-                NEEDBITS(state->extra);
-                state->offset += BITS(state->extra);
-                DROPBITS(state->extra);
-            }
-            if (state->offset > state->wsize - (state->whave < state->wsize ?
-                                                left : 0)) {
-                strm->msg = (char *)"invalid distance too far back";
-                state->mode = BAD;
-                break;
-            }
-            Tracevv((stderr, "inflate:         distance %u\n", state->offset));
-
-            /* copy match from window to output */
-            do {
-                ROOM();
-                copy = state->wsize - state->offset;
-                if (copy < left) {
-                    from = put + copy;
-                    copy = left - copy;
-                }
-                else {
-                    from = put - state->offset;
-                    copy = left;
-                }
-                if (copy > state->length) copy = state->length;
-                state->length -= copy;
-                left -= copy;
-                do {
-                    *put++ = *from++;
-                } while (--copy);
-            } while (state->length != 0);
-            break;
-
-        case DONE:
-            /* inflate stream terminated properly -- write leftover output */
-            ret = Z_STREAM_END;
-            if (left < state->wsize) {
-                if (out(out_desc, state->window, state->wsize - left))
-                    ret = Z_BUF_ERROR;
-            }
-            goto inf_leave;
-
-        case BAD:
-            ret = Z_DATA_ERROR;
-            goto inf_leave;
-
-        default:                /* can't happen, but makes compilers happy */
-            ret = Z_STREAM_ERROR;
-            goto inf_leave;
-        }
-
-    /* Return unused input */
-  inf_leave:
-    strm->next_in = next;
-    strm->avail_in = have;
-    return ret;
-}
-
-int ZEXPORT inflateBackEnd(strm)
-z_streamp strm;
-{
-    if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
-        return Z_STREAM_ERROR;
-    ZFREE(strm, strm->state);
-    strm->state = Z_NULL;
-    Tracev((stderr, "inflate: end\n"));
-    return Z_OK;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffast.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffast.c
deleted file mode 100644
index fa31cad..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffast.c
+++ /dev/null
@@ -1,318 +0,0 @@
-/* inffast.c -- fast decoding
- * Copyright (C) 1995-2004 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-#include "zutil.h"
-#include "inftrees.h"
-#include "inflate.h"
-#include "inffast.h"
-
-#ifndef ASMINF
-
-/* Allow machine dependent optimization for post-increment or pre-increment.
-   Based on testing to date,
-   Pre-increment preferred for:
-   - PowerPC G3 (Adler)
-   - MIPS R5000 (Randers-Pehrson)
-   Post-increment preferred for:
-   - none
-   No measurable difference:
-   - Pentium III (Anderson)
-   - M68060 (Nikl)
- */
-#ifdef POSTINC
-#  define OFF 0
-#  define PUP(a) *(a)++
-#else
-#  define OFF 1
-#  define PUP(a) *++(a)
-#endif
-
-/*
-   Decode literal, length, and distance codes and write out the resulting
-   literal and match bytes until either not enough input or output is
-   available, an end-of-block is encountered, or a data error is encountered.
-   When large enough input and output buffers are supplied to inflate(), for
-   example, a 16K input buffer and a 64K output buffer, more than 95% of the
-   inflate execution time is spent in this routine.
-
-   Entry assumptions:
-
-        state->mode == LEN
-        strm->avail_in >= 6
-        strm->avail_out >= 258
-        start >= strm->avail_out
-        state->bits < 8
-
-   On return, state->mode is one of:
-
-        LEN -- ran out of enough output space or enough available input
-        TYPE -- reached end of block code, inflate() to interpret next block
-        BAD -- error in block data
-
-   Notes:
-
-    - The maximum input bits used by a length/distance pair is 15 bits for the
-      length code, 5 bits for the length extra, 15 bits for the distance code,
-      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
-      Therefore if strm->avail_in >= 6, then there is enough input to avoid
-      checking for available input while decoding.
-
-    - The maximum bytes that a single length/distance pair can output is 258
-      bytes, which is the maximum length that can be coded.  inflate_fast()
-      requires strm->avail_out >= 258 for each loop to avoid checking for
-      output space.
- */
-void inflate_fast(strm, start)
-z_streamp strm;
-unsigned start;         /* inflate()'s starting value for strm->avail_out */
-{
-    struct inflate_state FAR *state;
-    unsigned char FAR *in;      /* local strm->next_in */
-    unsigned char FAR *last;    /* while in < last, enough input available */
-    unsigned char FAR *out;     /* local strm->next_out */
-    unsigned char FAR *beg;     /* inflate()'s initial strm->next_out */
-    unsigned char FAR *end;     /* while out < end, enough space available */
-#ifdef INFLATE_STRICT
-    unsigned dmax;              /* maximum distance from zlib header */
-#endif
-    unsigned wsize;             /* window size or zero if not using window */
-    unsigned whave;             /* valid bytes in the window */
-    unsigned write;             /* window write index */
-    unsigned char FAR *window;  /* allocated sliding window, if wsize != 0 */
-    unsigned long hold;         /* local strm->hold */
-    unsigned bits;              /* local strm->bits */
-    code const FAR *lcode;      /* local strm->lencode */
-    code const FAR *dcode;      /* local strm->distcode */
-    unsigned lmask;             /* mask for first level of length codes */
-    unsigned dmask;             /* mask for first level of distance codes */
-    code this;                  /* retrieved table entry */
-    unsigned op;                /* code bits, operation, extra bits, or */
-                                /*  window position, window bytes to copy */
-    unsigned len;               /* match length, unused bytes */
-    unsigned dist;              /* match distance */
-    unsigned char FAR *from;    /* where to copy match from */
-
-    /* copy state to local variables */
-    state = (struct inflate_state FAR *)strm->state;
-    in = strm->next_in - OFF;
-    last = in + (strm->avail_in - 5);
-    out = strm->next_out - OFF;
-    beg = out - (start - strm->avail_out);
-    end = out + (strm->avail_out - 257);
-#ifdef INFLATE_STRICT
-    dmax = state->dmax;
-#endif
-    wsize = state->wsize;
-    whave = state->whave;
-    write = state->write;
-    window = state->window;
-    hold = state->hold;
-    bits = state->bits;
-    lcode = state->lencode;
-    dcode = state->distcode;
-    lmask = (1U << state->lenbits) - 1;
-    dmask = (1U << state->distbits) - 1;
-
-    /* decode literals and length/distances until end-of-block or not enough
-       input data or output space */
-    do {
-        if (bits < 15) {
-            hold += (unsigned long)(PUP(in)) << bits;
-            bits += 8;
-            hold += (unsigned long)(PUP(in)) << bits;
-            bits += 8;
-        }
-        this = lcode[hold & lmask];
-      dolen:
-        op = (unsigned)(this.bits);
-        hold >>= op;
-        bits -= op;
-        op = (unsigned)(this.op);
-        if (op == 0) {                          /* literal */
-            Tracevv((stderr, this.val >= 0x20 && this.val < 0x7f ?
-                    "inflate:         literal '%c'\n" :
-                    "inflate:         literal 0x%02x\n", this.val));
-            PUP(out) = (unsigned char)(this.val);
-        }
-        else if (op & 16) {                     /* length base */
-            len = (unsigned)(this.val);
-            op &= 15;                           /* number of extra bits */
-            if (op) {
-                if (bits < op) {
-                    hold += (unsigned long)(PUP(in)) << bits;
-                    bits += 8;
-                }
-                len += (unsigned)hold & ((1U << op) - 1);
-                hold >>= op;
-                bits -= op;
-            }
-            Tracevv((stderr, "inflate:         length %u\n", len));
-            if (bits < 15) {
-                hold += (unsigned long)(PUP(in)) << bits;
-                bits += 8;
-                hold += (unsigned long)(PUP(in)) << bits;
-                bits += 8;
-            }
-            this = dcode[hold & dmask];
-          dodist:
-            op = (unsigned)(this.bits);
-            hold >>= op;
-            bits -= op;
-            op = (unsigned)(this.op);
-            if (op & 16) {                      /* distance base */
-                dist = (unsigned)(this.val);
-                op &= 15;                       /* number of extra bits */
-                if (bits < op) {
-                    hold += (unsigned long)(PUP(in)) << bits;
-                    bits += 8;
-                    if (bits < op) {
-                        hold += (unsigned long)(PUP(in)) << bits;
-                        bits += 8;
-                    }
-                }
-                dist += (unsigned)hold & ((1U << op) - 1);
-#ifdef INFLATE_STRICT
-                if (dist > dmax) {
-                    strm->msg = (char *)"invalid distance too far back";
-                    state->mode = BAD;
-                    break;
-                }
-#endif
-                hold >>= op;
-                bits -= op;
-                Tracevv((stderr, "inflate:         distance %u\n", dist));
-                op = (unsigned)(out - beg);     /* max distance in output */
-                if (dist > op) {                /* see if copy from window */
-                    op = dist - op;             /* distance back in window */
-                    if (op > whave) {
-                        strm->msg = (char *)"invalid distance too far back";
-                        state->mode = BAD;
-                        break;
-                    }
-                    from = window - OFF;
-                    if (write == 0) {           /* very common case */
-                        from += wsize - op;
-                        if (op < len) {         /* some from window */
-                            len -= op;
-                            do {
-                                PUP(out) = PUP(from);
-                            } while (--op);
-                            from = out - dist;  /* rest from output */
-                        }
-                    }
-                    else if (write < op) {      /* wrap around window */
-                        from += wsize + write - op;
-                        op -= write;
-                        if (op < len) {         /* some from end of window */
-                            len -= op;
-                            do {
-                                PUP(out) = PUP(from);
-                            } while (--op);
-                            from = window - OFF;
-                            if (write < len) {  /* some from start of window */
-                                op = write;
-                                len -= op;
-                                do {
-                                    PUP(out) = PUP(from);
-                                } while (--op);
-                                from = out - dist;      /* rest from output */
-                            }
-                        }
-                    }
-                    else {                      /* contiguous in window */
-                        from += write - op;
-                        if (op < len) {         /* some from window */
-                            len -= op;
-                            do {
-                                PUP(out) = PUP(from);
-                            } while (--op);
-                            from = out - dist;  /* rest from output */
-                        }
-                    }
-                    while (len > 2) {
-                        PUP(out) = PUP(from);
-                        PUP(out) = PUP(from);
-                        PUP(out) = PUP(from);
-                        len -= 3;
-                    }
-                    if (len) {
-                        PUP(out) = PUP(from);
-                        if (len > 1)
-                            PUP(out) = PUP(from);
-                    }
-                }
-                else {
-                    from = out - dist;          /* copy direct from output */
-                    do {                        /* minimum length is three */
-                        PUP(out) = PUP(from);
-                        PUP(out) = PUP(from);
-                        PUP(out) = PUP(from);
-                        len -= 3;
-                    } while (len > 2);
-                    if (len) {
-                        PUP(out) = PUP(from);
-                        if (len > 1)
-                            PUP(out) = PUP(from);
-                    }
-                }
-            }
-            else if ((op & 64) == 0) {          /* 2nd level distance code */
-                this = dcode[this.val + (hold & ((1U << op) - 1))];
-                goto dodist;
-            }
-            else {
-                strm->msg = (char *)"invalid distance code";
-                state->mode = BAD;
-                break;
-            }
-        }
-        else if ((op & 64) == 0) {              /* 2nd level length code */
-            this = lcode[this.val + (hold & ((1U << op) - 1))];
-            goto dolen;
-        }
-        else if (op & 32) {                     /* end-of-block */
-            Tracevv((stderr, "inflate:         end of block\n"));
-            state->mode = TYPE;
-            break;
-        }
-        else {
-            strm->msg = (char *)"invalid literal/length code";
-            state->mode = BAD;
-            break;
-        }
-    } while (in < last && out < end);
-
-    /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
-    len = bits >> 3;
-    in -= len;
-    bits -= len << 3;
-    hold &= (1U << bits) - 1;
-
-    /* update state and return */
-    strm->next_in = in + OFF;
-    strm->next_out = out + OFF;
-    strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last));
-    strm->avail_out = (unsigned)(out < end ?
-                                 257 + (end - out) : 257 - (out - end));
-    state->hold = hold;
-    state->bits = bits;
-    return;
-}
-
-/*
-   inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe):
-   - Using bit fields for code structure
-   - Different op definition to avoid & for extra bits (do & for table bits)
-   - Three separate decoding do-loops for direct, window, and write == 0
-   - Special case for distance > 1 copies to do overlapped load and store copy
-   - Explicit branch predictions (based on measured branch probabilities)
-   - Deferring match copy and interspersed it with decoding subsequent codes
-   - Swapping literal/length else
-   - Swapping window/direct else
-   - Larger unrolled copy loops (three is about right)
-   - Moving len -= 3 statement into middle of loop
- */
-
-#endif /* !ASMINF */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffast.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffast.h
deleted file mode 100644
index 614fa78..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffast.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* inffast.h -- header to use inffast.c
- * Copyright (C) 1995-2003 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
-   part of the implementation of the compression library and is
-   subject to change. Applications should only use zlib.h.
- */
-
-void inflate_fast OF((z_streamp strm, unsigned start));
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffixed.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffixed.h
deleted file mode 100644
index 423d5c5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inffixed.h
+++ /dev/null
@@ -1,94 +0,0 @@
-    /* inffixed.h -- table for decoding fixed codes
-     * Generated automatically by makefixed().
-     */
-
-    /* WARNING: this file should *not* be used by applications. It
-       is part of the implementation of the compression library and
-       is subject to change. Applications should only use zlib.h.
-     */
-
-    static const code lenfix[512] = {
-        {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48},
-        {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128},
-        {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59},
-        {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176},
-        {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20},
-        {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100},
-        {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8},
-        {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216},
-        {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76},
-        {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114},
-        {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2},
-        {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148},
-        {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42},
-        {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86},
-        {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15},
-        {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236},
-        {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62},
-        {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142},
-        {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31},
-        {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162},
-        {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25},
-        {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105},
-        {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4},
-        {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202},
-        {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69},
-        {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125},
-        {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13},
-        {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195},
-        {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35},
-        {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91},
-        {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19},
-        {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246},
-        {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55},
-        {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135},
-        {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99},
-        {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190},
-        {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16},
-        {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96},
-        {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6},
-        {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209},
-        {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72},
-        {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116},
-        {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4},
-        {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153},
-        {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44},
-        {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82},
-        {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11},
-        {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229},
-        {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58},
-        {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138},
-        {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51},
-        {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173},
-        {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30},
-        {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110},
-        {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0},
-        {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195},
-        {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65},
-        {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121},
-        {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9},
-        {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258},
-        {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37},
-        {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93},
-        {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23},
-        {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251},
-        {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51},
-        {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131},
-        {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67},
-        {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183},
-        {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23},
-        {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103},
-        {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9},
-        {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223},
-        {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79},
-        {0,9,255}
-    };
-
-    static const code distfix[32] = {
-        {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025},
-        {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193},
-        {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385},
-        {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577},
-        {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073},
-        {22,5,193},{64,5,0}
-    };
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inflate.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inflate.c
deleted file mode 100644
index 33ea902..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inflate.c
+++ /dev/null
@@ -1,1368 +0,0 @@
-/* inflate.c -- zlib decompression
- * Copyright (C) 1995-2005 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/*
- * Change history:
- *
- * 1.2.beta0    24 Nov 2002
- * - First version -- complete rewrite of inflate to simplify code, avoid
- *   creation of window when not needed, minimize use of window when it is
- *   needed, make inffast.c even faster, implement gzip decoding, and to
- *   improve code readability and style over the previous zlib inflate code
- *
- * 1.2.beta1    25 Nov 2002
- * - Use pointers for available input and output checking in inffast.c
- * - Remove input and output counters in inffast.c
- * - Change inffast.c entry and loop from avail_in >= 7 to >= 6
- * - Remove unnecessary second byte pull from length extra in inffast.c
- * - Unroll direct copy to three copies per loop in inffast.c
- *
- * 1.2.beta2    4 Dec 2002
- * - Change external routine names to reduce potential conflicts
- * - Correct filename to inffixed.h for fixed tables in inflate.c
- * - Make hbuf[] unsigned char to match parameter type in inflate.c
- * - Change strm->next_out[-state->offset] to *(strm->next_out - state->offset)
- *   to avoid negation problem on Alphas (64 bit) in inflate.c
- *
- * 1.2.beta3    22 Dec 2002
- * - Add comments on state->bits assertion in inffast.c
- * - Add comments on op field in inftrees.h
- * - Fix bug in reuse of allocated window after inflateReset()
- * - Remove bit fields--back to byte structure for speed
- * - Remove distance extra == 0 check in inflate_fast()--only helps for lengths
- * - Change post-increments to pre-increments in inflate_fast(), PPC biased?
- * - Add compile time option, POSTINC, to use post-increments instead (Intel?)
- * - Make MATCH copy in inflate() much faster for when inflate_fast() not used
- * - Use local copies of stream next and avail values, as well as local bit
- *   buffer and bit count in inflate()--for speed when inflate_fast() not used
- *
- * 1.2.beta4    1 Jan 2003
- * - Split ptr - 257 statements in inflate_table() to avoid compiler warnings
- * - Move a comment on output buffer sizes from inffast.c to inflate.c
- * - Add comments in inffast.c to introduce the inflate_fast() routine
- * - Rearrange window copies in inflate_fast() for speed and simplification
- * - Unroll last copy for window match in inflate_fast()
- * - Use local copies of window variables in inflate_fast() for speed
- * - Pull out common write == 0 case for speed in inflate_fast()
- * - Make op and len in inflate_fast() unsigned for consistency
- * - Add FAR to lcode and dcode declarations in inflate_fast()
- * - Simplified bad distance check in inflate_fast()
- * - Added inflateBackInit(), inflateBack(), and inflateBackEnd() in new
- *   source file infback.c to provide a call-back interface to inflate for
- *   programs like gzip and unzip -- uses window as output buffer to avoid
- *   window copying
- *
- * 1.2.beta5    1 Jan 2003
- * - Improved inflateBack() interface to allow the caller to provide initial
- *   input in strm.
- * - Fixed stored blocks bug in inflateBack()
- *
- * 1.2.beta6    4 Jan 2003
- * - Added comments in inffast.c on effectiveness of POSTINC
- * - Typecasting all around to reduce compiler warnings
- * - Changed loops from while (1) or do {} while (1) to for (;;), again to
- *   make compilers happy
- * - Changed type of window in inflateBackInit() to unsigned char *
- *
- * 1.2.beta7    27 Jan 2003
- * - Changed many types to unsigned or unsigned short to avoid warnings
- * - Added inflateCopy() function
- *
- * 1.2.0        9 Mar 2003
- * - Changed inflateBack() interface to provide separate opaque descriptors
- *   for the in() and out() functions
- * - Changed inflateBack() argument and in_func typedef to swap the length
- *   and buffer address return values for the input function
- * - Check next_in and next_out for Z_NULL on entry to inflate()
- *
- * The history for versions after 1.2.0 are in ChangeLog in zlib distribution.
- */
-
-#include "zutil.h"
-#include "inftrees.h"
-#include "inflate.h"
-#include "inffast.h"
-
-#ifdef MAKEFIXED
-#  ifndef BUILDFIXED
-#    define BUILDFIXED
-#  endif
-#endif
-
-/* function prototypes */
-local void fixedtables OF((struct inflate_state FAR *state));
-local int updatewindow OF((z_streamp strm, unsigned out));
-#ifdef BUILDFIXED
-   void makefixed OF((void));
-#endif
-local unsigned syncsearch OF((unsigned FAR *have, unsigned char FAR *buf,
-                              unsigned len));
-
-int ZEXPORT inflateReset(strm)
-z_streamp strm;
-{
-    struct inflate_state FAR *state;
-
-    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-    state = (struct inflate_state FAR *)strm->state;
-    strm->total_in = strm->total_out = state->total = 0;
-    strm->msg = Z_NULL;
-    strm->adler = 1;        /* to support ill-conceived Java test suite */
-    state->mode = HEAD;
-    state->last = 0;
-    state->havedict = 0;
-    state->dmax = 32768U;
-    state->head = Z_NULL;
-    state->wsize = 0;
-    state->whave = 0;
-    state->write = 0;
-    state->hold = 0;
-    state->bits = 0;
-    state->lencode = state->distcode = state->next = state->codes;
-    Tracev((stderr, "inflate: reset\n"));
-    return Z_OK;
-}
-
-int ZEXPORT inflatePrime(strm, bits, value)
-z_streamp strm;
-int bits;
-int value;
-{
-    struct inflate_state FAR *state;
-
-    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-    state = (struct inflate_state FAR *)strm->state;
-    if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR;
-    value &= (1L << bits) - 1;
-    state->hold += value << state->bits;
-    state->bits += bits;
-    return Z_OK;
-}
-
-int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size)
-z_streamp strm;
-int windowBits;
-const char *version;
-int stream_size;
-{
-    struct inflate_state FAR *state;
-
-    if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
-        stream_size != (int)(sizeof(z_stream)))
-        return Z_VERSION_ERROR;
-    if (strm == Z_NULL) return Z_STREAM_ERROR;
-    strm->msg = Z_NULL;                 /* in case we return an error */
-    if (strm->zalloc == (alloc_func)0) {
-        strm->zalloc = zcalloc;
-        strm->opaque = (voidpf)0;
-    }
-    if (strm->zfree == (free_func)0) strm->zfree = zcfree;
-    state = (struct inflate_state FAR *)
-            ZALLOC(strm, 1, sizeof(struct inflate_state));
-    if (state == Z_NULL) return Z_MEM_ERROR;
-    Tracev((stderr, "inflate: allocated\n"));
-    strm->state = (struct internal_state FAR *)state;
-    if (windowBits < 0) {
-        state->wrap = 0;
-        windowBits = -windowBits;
-    }
-    else {
-        state->wrap = (windowBits >> 4) + 1;
-#ifdef GUNZIP
-        if (windowBits < 48) windowBits &= 15;
-#endif
-    }
-    if (windowBits < 8 || windowBits > 15) {
-        ZFREE(strm, state);
-        strm->state = Z_NULL;
-        return Z_STREAM_ERROR;
-    }
-    state->wbits = (unsigned)windowBits;
-    state->window = Z_NULL;
-    return inflateReset(strm);
-}
-
-int ZEXPORT inflateInit_(strm, version, stream_size)
-z_streamp strm;
-const char *version;
-int stream_size;
-{
-    return inflateInit2_(strm, DEF_WBITS, version, stream_size);
-}
-
-/*
-   Return state with length and distance decoding tables and index sizes set to
-   fixed code decoding.  Normally this returns fixed tables from inffixed.h.
-   If BUILDFIXED is defined, then instead this routine builds the tables the
-   first time it's called, and returns those tables the first time and
-   thereafter.  This reduces the size of the code by about 2K bytes, in
-   exchange for a little execution time.  However, BUILDFIXED should not be
-   used for threaded applications, since the rewriting of the tables and virgin
-   may not be thread-safe.
- */
-local void fixedtables(state)
-struct inflate_state FAR *state;
-{
-#ifdef BUILDFIXED
-    static int virgin = 1;
-    static code *lenfix, *distfix;
-    static code fixed[544];
-
-    /* build fixed huffman tables if first call (may not be thread safe) */
-    if (virgin) {
-        unsigned sym, bits;
-        static code *next;
-
-        /* literal/length table */
-        sym = 0;
-        while (sym < 144) state->lens[sym++] = 8;
-        while (sym < 256) state->lens[sym++] = 9;
-        while (sym < 280) state->lens[sym++] = 7;
-        while (sym < 288) state->lens[sym++] = 8;
-        next = fixed;
-        lenfix = next;
-        bits = 9;
-        inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work);
-
-        /* distance table */
-        sym = 0;
-        while (sym < 32) state->lens[sym++] = 5;
-        distfix = next;
-        bits = 5;
-        inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work);
-
-        /* do this just once */
-        virgin = 0;
-    }
-#else /* !BUILDFIXED */
-#   include "inffixed.h"
-#endif /* BUILDFIXED */
-    state->lencode = lenfix;
-    state->lenbits = 9;
-    state->distcode = distfix;
-    state->distbits = 5;
-}
-
-#ifdef MAKEFIXED
-#include <stdio.h>
-
-/*
-   Write out the inffixed.h that is #include'd above.  Defining MAKEFIXED also
-   defines BUILDFIXED, so the tables are built on the fly.  makefixed() writes
-   those tables to stdout, which would be piped to inffixed.h.  A small program
-   can simply call makefixed to do this:
-
-    void makefixed(void);
-
-    int main(void)
-    {
-        makefixed();
-        return 0;
-    }
-
-   Then that can be linked with zlib built with MAKEFIXED defined and run:
-
-    a.out > inffixed.h
- */
-void makefixed()
-{
-    unsigned low, size;
-    struct inflate_state state;
-
-    fixedtables(&state);
-    puts("    /* inffixed.h -- table for decoding fixed codes");
-    puts("     * Generated automatically by makefixed().");
-    puts("     */");
-    puts("");
-    puts("    /* WARNING: this file should *not* be used by applications.");
-    puts("       It is part of the implementation of this library and is");
-    puts("       subject to change. Applications should only use zlib.h.");
-    puts("     */");
-    puts("");
-    size = 1U << 9;
-    printf("    static const code lenfix[%u] = {", size);
-    low = 0;
-    for (;;) {
-        if ((low % 7) == 0) printf("\n        ");
-        printf("{%u,%u,%d}", state.lencode[low].op, state.lencode[low].bits,
-               state.lencode[low].val);
-        if (++low == size) break;
-        putchar(',');
-    }
-    puts("\n    };");
-    size = 1U << 5;
-    printf("\n    static const code distfix[%u] = {", size);
-    low = 0;
-    for (;;) {
-        if ((low % 6) == 0) printf("\n        ");
-        printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits,
-               state.distcode[low].val);
-        if (++low == size) break;
-        putchar(',');
-    }
-    puts("\n    };");
-}
-#endif /* MAKEFIXED */
-
-/*
-   Update the window with the last wsize (normally 32K) bytes written before
-   returning.  If window does not exist yet, create it.  This is only called
-   when a window is already in use, or when output has been written during this
-   inflate call, but the end of the deflate stream has not been reached yet.
-   It is also called to create a window for dictionary data when a dictionary
-   is loaded.
-
-   Providing output buffers larger than 32K to inflate() should provide a speed
-   advantage, since only the last 32K of output is copied to the sliding window
-   upon return from inflate(), and since all distances after the first 32K of
-   output will fall in the output data, making match copies simpler and faster.
-   The advantage may be dependent on the size of the processor's data caches.
- */
-local int updatewindow(strm, out)
-z_streamp strm;
-unsigned out;
-{
-    struct inflate_state FAR *state;
-    unsigned copy, dist;
-
-    state = (struct inflate_state FAR *)strm->state;
-
-    /* if it hasn't been done already, allocate space for the window */
-    if (state->window == Z_NULL) {
-        state->window = (unsigned char FAR *)
-                        ZALLOC(strm, 1U << state->wbits,
-                               sizeof(unsigned char));
-        if (state->window == Z_NULL) return 1;
-    }
-
-    /* if window not in use yet, initialize */
-    if (state->wsize == 0) {
-        state->wsize = 1U << state->wbits;
-        state->write = 0;
-        state->whave = 0;
-    }
-
-    /* copy state->wsize or less output bytes into the circular window */
-    copy = out - strm->avail_out;
-    if (copy >= state->wsize) {
-        zmemcpy(state->window, strm->next_out - state->wsize, state->wsize);
-        state->write = 0;
-        state->whave = state->wsize;
-    }
-    else {
-        dist = state->wsize - state->write;
-        if (dist > copy) dist = copy;
-        zmemcpy(state->window + state->write, strm->next_out - copy, dist);
-        copy -= dist;
-        if (copy) {
-            zmemcpy(state->window, strm->next_out - copy, copy);
-            state->write = copy;
-            state->whave = state->wsize;
-        }
-        else {
-            state->write += dist;
-            if (state->write == state->wsize) state->write = 0;
-            if (state->whave < state->wsize) state->whave += dist;
-        }
-    }
-    return 0;
-}
-
-/* Macros for inflate(): */
-
-/* check function to use adler32() for zlib or crc32() for gzip */
-#ifdef GUNZIP
-#  define UPDATE(check, buf, len) \
-    (state->flags ? crc32(check, buf, len) : adler32(check, buf, len))
-#else
-#  define UPDATE(check, buf, len) adler32(check, buf, len)
-#endif
-
-/* check macros for header crc */
-#ifdef GUNZIP
-#  define CRC2(check, word) \
-    do { \
-        hbuf[0] = (unsigned char)(word); \
-        hbuf[1] = (unsigned char)((word) >> 8); \
-        check = crc32(check, hbuf, 2); \
-    } while (0)
-
-#  define CRC4(check, word) \
-    do { \
-        hbuf[0] = (unsigned char)(word); \
-        hbuf[1] = (unsigned char)((word) >> 8); \
-        hbuf[2] = (unsigned char)((word) >> 16); \
-        hbuf[3] = (unsigned char)((word) >> 24); \
-        check = crc32(check, hbuf, 4); \
-    } while (0)
-#endif
-
-/* Load registers with state in inflate() for speed */
-#define LOAD() \
-    do { \
-        put = strm->next_out; \
-        left = strm->avail_out; \
-        next = strm->next_in; \
-        have = strm->avail_in; \
-        hold = state->hold; \
-        bits = state->bits; \
-    } while (0)
-
-/* Restore state from registers in inflate() */
-#define RESTORE() \
-    do { \
-        strm->next_out = put; \
-        strm->avail_out = left; \
-        strm->next_in = next; \
-        strm->avail_in = have; \
-        state->hold = hold; \
-        state->bits = bits; \
-    } while (0)
-
-/* Clear the input bit accumulator */
-#define INITBITS() \
-    do { \
-        hold = 0; \
-        bits = 0; \
-    } while (0)
-
-/* Get a byte of input into the bit accumulator, or return from inflate()
-   if there is no input available. */
-#define PULLBYTE() \
-    do { \
-        if (have == 0) goto inf_leave; \
-        have--; \
-        hold += (unsigned long)(*next++) << bits; \
-        bits += 8; \
-    } while (0)
-
-/* Assure that there are at least n bits in the bit accumulator.  If there is
-   not enough available input to do that, then return from inflate(). */
-#define NEEDBITS(n) \
-    do { \
-        while (bits < (unsigned)(n)) \
-            PULLBYTE(); \
-    } while (0)
-
-/* Return the low n bits of the bit accumulator (n < 16) */
-#define BITS(n) \
-    ((unsigned)hold & ((1U << (n)) - 1))
-
-/* Remove n bits from the bit accumulator */
-#define DROPBITS(n) \
-    do { \
-        hold >>= (n); \
-        bits -= (unsigned)(n); \
-    } while (0)
-
-/* Remove zero to seven bits as needed to go to a byte boundary */
-#define BYTEBITS() \
-    do { \
-        hold >>= bits & 7; \
-        bits -= bits & 7; \
-    } while (0)
-
-/* Reverse the bytes in a 32-bit value */
-#define REVERSE(q) \
-    ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \
-     (((q) & 0xff00) << 8) + (((q) & 0xff) << 24))
-
-/*
-   inflate() uses a state machine to process as much input data and generate as
-   much output data as possible before returning.  The state machine is
-   structured roughly as follows:
-
-    for (;;) switch (state) {
-    ...
-    case STATEn:
-        if (not enough input data or output space to make progress)
-            return;
-        ... make progress ...
-        state = STATEm;
-        break;
-    ...
-    }
-
-   so when inflate() is called again, the same case is attempted again, and
-   if the appropriate resources are provided, the machine proceeds to the
-   next state.  The NEEDBITS() macro is usually the way the state evaluates
-   whether it can proceed or should return.  NEEDBITS() does the return if
-   the requested bits are not available.  The typical use of the BITS macros
-   is:
-
-        NEEDBITS(n);
-        ... do something with BITS(n) ...
-        DROPBITS(n);
-
-   where NEEDBITS(n) either returns from inflate() if there isn't enough
-   input left to load n bits into the accumulator, or it continues.  BITS(n)
-   gives the low n bits in the accumulator.  When done, DROPBITS(n) drops
-   the low n bits off the accumulator.  INITBITS() clears the accumulator
-   and sets the number of available bits to zero.  BYTEBITS() discards just
-   enough bits to put the accumulator on a byte boundary.  After BYTEBITS()
-   and a NEEDBITS(8), then BITS(8) would return the next byte in the stream.
-
-   NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return
-   if there is no input available.  The decoding of variable length codes uses
-   PULLBYTE() directly in order to pull just enough bytes to decode the next
-   code, and no more.
-
-   Some states loop until they get enough input, making sure that enough
-   state information is maintained to continue the loop where it left off
-   if NEEDBITS() returns in the loop.  For example, want, need, and keep
-   would all have to actually be part of the saved state in case NEEDBITS()
-   returns:
-
-    case STATEw:
-        while (want < need) {
-            NEEDBITS(n);
-            keep[want++] = BITS(n);
-            DROPBITS(n);
-        }
-        state = STATEx;
-    case STATEx:
-
-   As shown above, if the next state is also the next case, then the break
-   is omitted.
-
-   A state may also return if there is not enough output space available to
-   complete that state.  Those states are copying stored data, writing a
-   literal byte, and copying a matching string.
-
-   When returning, a "goto inf_leave" is used to update the total counters,
-   update the check value, and determine whether any progress has been made
-   during that inflate() call in order to return the proper return code.
-   Progress is defined as a change in either strm->avail_in or strm->avail_out.
-   When there is a window, goto inf_leave will update the window with the last
-   output written.  If a goto inf_leave occurs in the middle of decompression
-   and there is no window currently, goto inf_leave will create one and copy
-   output to the window for the next call of inflate().
-
-   In this implementation, the flush parameter of inflate() only affects the
-   return code (per zlib.h).  inflate() always writes as much as possible to
-   strm->next_out, given the space available and the provided input--the effect
-   documented in zlib.h of Z_SYNC_FLUSH.  Furthermore, inflate() always defers
-   the allocation of and copying into a sliding window until necessary, which
-   provides the effect documented in zlib.h for Z_FINISH when the entire input
-   stream available.  So the only thing the flush parameter actually does is:
-   when flush is set to Z_FINISH, inflate() cannot return Z_OK.  Instead it
-   will return Z_BUF_ERROR if it has not reached the end of the stream.
- */
-
-int ZEXPORT inflate(strm, flush)
-z_streamp strm;
-int flush;
-{
-    struct inflate_state FAR *state;
-    unsigned char FAR *next;    /* next input */
-    unsigned char FAR *put;     /* next output */
-    unsigned have, left;        /* available input and output */
-    unsigned long hold;         /* bit buffer */
-    unsigned bits;              /* bits in bit buffer */
-    unsigned in, out;           /* save starting available input and output */
-    unsigned copy;              /* number of stored or match bytes to copy */
-    unsigned char FAR *from;    /* where to copy match bytes from */
-    code this;                  /* current decoding table entry */
-    code last;                  /* parent table entry */
-    unsigned len;               /* length to copy for repeats, bits to drop */
-    int ret;                    /* return code */
-#ifdef GUNZIP
-    unsigned char hbuf[4];      /* buffer for gzip header crc calculation */
-#endif
-    static const unsigned short order[19] = /* permutation of code lengths */
-        {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
-
-    if (strm == Z_NULL || strm->state == Z_NULL || strm->next_out == Z_NULL ||
-        (strm->next_in == Z_NULL && strm->avail_in != 0))
-        return Z_STREAM_ERROR;
-
-    state = (struct inflate_state FAR *)strm->state;
-    if (state->mode == TYPE) state->mode = TYPEDO;      /* skip check */
-    LOAD();
-    in = have;
-    out = left;
-    ret = Z_OK;
-    for (;;)
-        switch (state->mode) {
-        case HEAD:
-            if (state->wrap == 0) {
-                state->mode = TYPEDO;
-                break;
-            }
-            NEEDBITS(16);
-#ifdef GUNZIP
-            if ((state->wrap & 2) && hold == 0x8b1f) {  /* gzip header */
-                state->check = crc32(0L, Z_NULL, 0);
-                CRC2(state->check, hold);
-                INITBITS();
-                state->mode = FLAGS;
-                break;
-            }
-            state->flags = 0;           /* expect zlib header */
-            if (state->head != Z_NULL)
-                state->head->done = -1;
-            if (!(state->wrap & 1) ||   /* check if zlib header allowed */
-#else
-            if (
-#endif
-                ((BITS(8) << 8) + (hold >> 8)) % 31) {
-                strm->msg = (char *)"incorrect header check";
-                state->mode = BAD;
-                break;
-            }
-            if (BITS(4) != Z_DEFLATED) {
-                strm->msg = (char *)"unknown compression method";
-                state->mode = BAD;
-                break;
-            }
-            DROPBITS(4);
-            len = BITS(4) + 8;
-            if (len > state->wbits) {
-                strm->msg = (char *)"invalid window size";
-                state->mode = BAD;
-                break;
-            }
-            state->dmax = 1U << len;
-            Tracev((stderr, "inflate:   zlib header ok\n"));
-            strm->adler = state->check = adler32(0L, Z_NULL, 0);
-            state->mode = hold & 0x200 ? DICTID : TYPE;
-            INITBITS();
-            break;
-#ifdef GUNZIP
-        case FLAGS:
-            NEEDBITS(16);
-            state->flags = (int)(hold);
-            if ((state->flags & 0xff) != Z_DEFLATED) {
-                strm->msg = (char *)"unknown compression method";
-                state->mode = BAD;
-                break;
-            }
-            if (state->flags & 0xe000) {
-                strm->msg = (char *)"unknown header flags set";
-                state->mode = BAD;
-                break;
-            }
-            if (state->head != Z_NULL)
-                state->head->text = (int)((hold >> 8) & 1);
-            if (state->flags & 0x0200) CRC2(state->check, hold);
-            INITBITS();
-            state->mode = TIME;
-        case TIME:
-            NEEDBITS(32);
-            if (state->head != Z_NULL)
-                state->head->time = hold;
-            if (state->flags & 0x0200) CRC4(state->check, hold);
-            INITBITS();
-            state->mode = OS;
-        case OS:
-            NEEDBITS(16);
-            if (state->head != Z_NULL) {
-                state->head->xflags = (int)(hold & 0xff);
-                state->head->os = (int)(hold >> 8);
-            }
-            if (state->flags & 0x0200) CRC2(state->check, hold);
-            INITBITS();
-            state->mode = EXLEN;
-        case EXLEN:
-            if (state->flags & 0x0400) {
-                NEEDBITS(16);
-                state->length = (unsigned)(hold);
-                if (state->head != Z_NULL)
-                    state->head->extra_len = (unsigned)hold;
-                if (state->flags & 0x0200) CRC2(state->check, hold);
-                INITBITS();
-            }
-            else if (state->head != Z_NULL)
-                state->head->extra = Z_NULL;
-            state->mode = EXTRA;
-        case EXTRA:
-            if (state->flags & 0x0400) {
-                copy = state->length;
-                if (copy > have) copy = have;
-                if (copy) {
-                    if (state->head != Z_NULL &&
-                        state->head->extra != Z_NULL) {
-                        len = state->head->extra_len - state->length;
-                        zmemcpy(state->head->extra + len, next,
-                                len + copy > state->head->extra_max ?
-                                state->head->extra_max - len : copy);
-                    }
-                    if (state->flags & 0x0200)
-                        state->check = crc32(state->check, next, copy);
-                    have -= copy;
-                    next += copy;
-                    state->length -= copy;
-                }
-                if (state->length) goto inf_leave;
-            }
-            state->length = 0;
-            state->mode = NAME;
-        case NAME:
-            if (state->flags & 0x0800) {
-                if (have == 0) goto inf_leave;
-                copy = 0;
-                do {
-                    len = (unsigned)(next[copy++]);
-                    if (state->head != Z_NULL &&
-                            state->head->name != Z_NULL &&
-                            state->length < state->head->name_max)
-                        state->head->name[state->length++] = len;
-                } while (len && copy < have);
-                if (state->flags & 0x0200)
-                    state->check = crc32(state->check, next, copy);
-                have -= copy;
-                next += copy;
-                if (len) goto inf_leave;
-            }
-            else if (state->head != Z_NULL)
-                state->head->name = Z_NULL;
-            state->length = 0;
-            state->mode = COMMENT;
-        case COMMENT:
-            if (state->flags & 0x1000) {
-                if (have == 0) goto inf_leave;
-                copy = 0;
-                do {
-                    len = (unsigned)(next[copy++]);
-                    if (state->head != Z_NULL &&
-                            state->head->comment != Z_NULL &&
-                            state->length < state->head->comm_max)
-                        state->head->comment[state->length++] = len;
-                } while (len && copy < have);
-                if (state->flags & 0x0200)
-                    state->check = crc32(state->check, next, copy);
-                have -= copy;
-                next += copy;
-                if (len) goto inf_leave;
-            }
-            else if (state->head != Z_NULL)
-                state->head->comment = Z_NULL;
-            state->mode = HCRC;
-        case HCRC:
-            if (state->flags & 0x0200) {
-                NEEDBITS(16);
-                if (hold != (state->check & 0xffff)) {
-                    strm->msg = (char *)"header crc mismatch";
-                    state->mode = BAD;
-                    break;
-                }
-                INITBITS();
-            }
-            if (state->head != Z_NULL) {
-                state->head->hcrc = (int)((state->flags >> 9) & 1);
-                state->head->done = 1;
-            }
-            strm->adler = state->check = crc32(0L, Z_NULL, 0);
-            state->mode = TYPE;
-            break;
-#endif
-        case DICTID:
-            NEEDBITS(32);
-            strm->adler = state->check = REVERSE(hold);
-            INITBITS();
-            state->mode = DICT;
-        case DICT:
-            if (state->havedict == 0) {
-                RESTORE();
-                return Z_NEED_DICT;
-            }
-            strm->adler = state->check = adler32(0L, Z_NULL, 0);
-            state->mode = TYPE;
-        case TYPE:
-            if (flush == Z_BLOCK) goto inf_leave;
-        case TYPEDO:
-            if (state->last) {
-                BYTEBITS();
-                state->mode = CHECK;
-                break;
-            }
-            NEEDBITS(3);
-            state->last = BITS(1);
-            DROPBITS(1);
-            switch (BITS(2)) {
-            case 0:                             /* stored block */
-                Tracev((stderr, "inflate:     stored block%s\n",
-                        state->last ? " (last)" : ""));
-                state->mode = STORED;
-                break;
-            case 1:                             /* fixed block */
-                fixedtables(state);
-                Tracev((stderr, "inflate:     fixed codes block%s\n",
-                        state->last ? " (last)" : ""));
-                state->mode = LEN;              /* decode codes */
-                break;
-            case 2:                             /* dynamic block */
-                Tracev((stderr, "inflate:     dynamic codes block%s\n",
-                        state->last ? " (last)" : ""));
-                state->mode = TABLE;
-                break;
-            case 3:
-                strm->msg = (char *)"invalid block type";
-                state->mode = BAD;
-            }
-            DROPBITS(2);
-            break;
-        case STORED:
-            BYTEBITS();                         /* go to byte boundary */
-            NEEDBITS(32);
-            if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) {
-                strm->msg = (char *)"invalid stored block lengths";
-                state->mode = BAD;
-                break;
-            }
-            state->length = (unsigned)hold & 0xffff;
-            Tracev((stderr, "inflate:       stored length %u\n",
-                    state->length));
-            INITBITS();
-            state->mode = COPY;
-        case COPY:
-            copy = state->length;
-            if (copy) {
-                if (copy > have) copy = have;
-                if (copy > left) copy = left;
-                if (copy == 0) goto inf_leave;
-                zmemcpy(put, next, copy);
-                have -= copy;
-                next += copy;
-                left -= copy;
-                put += copy;
-                state->length -= copy;
-                break;
-            }
-            Tracev((stderr, "inflate:       stored end\n"));
-            state->mode = TYPE;
-            break;
-        case TABLE:
-            NEEDBITS(14);
-            state->nlen = BITS(5) + 257;
-            DROPBITS(5);
-            state->ndist = BITS(5) + 1;
-            DROPBITS(5);
-            state->ncode = BITS(4) + 4;
-            DROPBITS(4);
-#ifndef PKZIP_BUG_WORKAROUND
-            if (state->nlen > 286 || state->ndist > 30) {
-                strm->msg = (char *)"too many length or distance symbols";
-                state->mode = BAD;
-                break;
-            }
-#endif
-            Tracev((stderr, "inflate:       table sizes ok\n"));
-            state->have = 0;
-            state->mode = LENLENS;
-        case LENLENS:
-            while (state->have < state->ncode) {
-                NEEDBITS(3);
-                state->lens[order[state->have++]] = (unsigned short)BITS(3);
-                DROPBITS(3);
-            }
-            while (state->have < 19)
-                state->lens[order[state->have++]] = 0;
-            state->next = state->codes;
-            state->lencode = (code const FAR *)(state->next);
-            state->lenbits = 7;
-            ret = inflate_table(CODES, state->lens, 19, &(state->next),
-                                &(state->lenbits), state->work);
-            if (ret) {
-                strm->msg = (char *)"invalid code lengths set";
-                state->mode = BAD;
-                break;
-            }
-            Tracev((stderr, "inflate:       code lengths ok\n"));
-            state->have = 0;
-            state->mode = CODELENS;
-        case CODELENS:
-            while (state->have < state->nlen + state->ndist) {
-                for (;;) {
-                    this = state->lencode[BITS(state->lenbits)];
-                    if ((unsigned)(this.bits) <= bits) break;
-                    PULLBYTE();
-                }
-                if (this.val < 16) {
-                    NEEDBITS(this.bits);
-                    DROPBITS(this.bits);
-                    state->lens[state->have++] = this.val;
-                }
-                else {
-                    if (this.val == 16) {
-                        NEEDBITS(this.bits + 2);
-                        DROPBITS(this.bits);
-                        if (state->have == 0) {
-                            strm->msg = (char *)"invalid bit length repeat";
-                            state->mode = BAD;
-                            break;
-                        }
-                        len = state->lens[state->have - 1];
-                        copy = 3 + BITS(2);
-                        DROPBITS(2);
-                    }
-                    else if (this.val == 17) {
-                        NEEDBITS(this.bits + 3);
-                        DROPBITS(this.bits);
-                        len = 0;
-                        copy = 3 + BITS(3);
-                        DROPBITS(3);
-                    }
-                    else {
-                        NEEDBITS(this.bits + 7);
-                        DROPBITS(this.bits);
-                        len = 0;
-                        copy = 11 + BITS(7);
-                        DROPBITS(7);
-                    }
-                    if (state->have + copy > state->nlen + state->ndist) {
-                        strm->msg = (char *)"invalid bit length repeat";
-                        state->mode = BAD;
-                        break;
-                    }
-                    while (copy--)
-                        state->lens[state->have++] = (unsigned short)len;
-                }
-            }
-
-            /* handle error breaks in while */
-            if (state->mode == BAD) break;
-
-            /* build code tables */
-            state->next = state->codes;
-            state->lencode = (code const FAR *)(state->next);
-            state->lenbits = 9;
-            ret = inflate_table(LENS, state->lens, state->nlen, &(state->next),
-                                &(state->lenbits), state->work);
-            if (ret) {
-                strm->msg = (char *)"invalid literal/lengths set";
-                state->mode = BAD;
-                break;
-            }
-            state->distcode = (code const FAR *)(state->next);
-            state->distbits = 6;
-            ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist,
-                            &(state->next), &(state->distbits), state->work);
-            if (ret) {
-                strm->msg = (char *)"invalid distances set";
-                state->mode = BAD;
-                break;
-            }
-            Tracev((stderr, "inflate:       codes ok\n"));
-            state->mode = LEN;
-        case LEN:
-            if (have >= 6 && left >= 258) {
-                RESTORE();
-                inflate_fast(strm, out);
-                LOAD();
-                break;
-            }
-            for (;;) {
-                this = state->lencode[BITS(state->lenbits)];
-                if ((unsigned)(this.bits) <= bits) break;
-                PULLBYTE();
-            }
-            if (this.op && (this.op & 0xf0) == 0) {
-                last = this;
-                for (;;) {
-                    this = state->lencode[last.val +
-                            (BITS(last.bits + last.op) >> last.bits)];
-                    if ((unsigned)(last.bits + this.bits) <= bits) break;
-                    PULLBYTE();
-                }
-                DROPBITS(last.bits);
-            }
-            DROPBITS(this.bits);
-            state->length = (unsigned)this.val;
-            if ((int)(this.op) == 0) {
-                Tracevv((stderr, this.val >= 0x20 && this.val < 0x7f ?
-                        "inflate:         literal '%c'\n" :
-                        "inflate:         literal 0x%02x\n", this.val));
-                state->mode = LIT;
-                break;
-            }
-            if (this.op & 32) {
-                Tracevv((stderr, "inflate:         end of block\n"));
-                state->mode = TYPE;
-                break;
-            }
-            if (this.op & 64) {
-                strm->msg = (char *)"invalid literal/length code";
-                state->mode = BAD;
-                break;
-            }
-            state->extra = (unsigned)(this.op) & 15;
-            state->mode = LENEXT;
-        case LENEXT:
-            if (state->extra) {
-                NEEDBITS(state->extra);
-                state->length += BITS(state->extra);
-                DROPBITS(state->extra);
-            }
-            Tracevv((stderr, "inflate:         length %u\n", state->length));
-            state->mode = DIST;
-        case DIST:
-            for (;;) {
-                this = state->distcode[BITS(state->distbits)];
-                if ((unsigned)(this.bits) <= bits) break;
-                PULLBYTE();
-            }
-            if ((this.op & 0xf0) == 0) {
-                last = this;
-                for (;;) {
-                    this = state->distcode[last.val +
-                            (BITS(last.bits + last.op) >> last.bits)];
-                    if ((unsigned)(last.bits + this.bits) <= bits) break;
-                    PULLBYTE();
-                }
-                DROPBITS(last.bits);
-            }
-            DROPBITS(this.bits);
-            if (this.op & 64) {
-                strm->msg = (char *)"invalid distance code";
-                state->mode = BAD;
-                break;
-            }
-            state->offset = (unsigned)this.val;
-            state->extra = (unsigned)(this.op) & 15;
-            state->mode = DISTEXT;
-        case DISTEXT:
-            if (state->extra) {
-                NEEDBITS(state->extra);
-                state->offset += BITS(state->extra);
-                DROPBITS(state->extra);
-            }
-#ifdef INFLATE_STRICT
-            if (state->offset > state->dmax) {
-                strm->msg = (char *)"invalid distance too far back";
-                state->mode = BAD;
-                break;
-            }
-#endif
-            if (state->offset > state->whave + out - left) {
-                strm->msg = (char *)"invalid distance too far back";
-                state->mode = BAD;
-                break;
-            }
-            Tracevv((stderr, "inflate:         distance %u\n", state->offset));
-            state->mode = MATCH;
-        case MATCH:
-            if (left == 0) goto inf_leave;
-            copy = out - left;
-            if (state->offset > copy) {         /* copy from window */
-                copy = state->offset - copy;
-                if (copy > state->write) {
-                    copy -= state->write;
-                    from = state->window + (state->wsize - copy);
-                }
-                else
-                    from = state->window + (state->write - copy);
-                if (copy > state->length) copy = state->length;
-            }
-            else {                              /* copy from output */
-                from = put - state->offset;
-                copy = state->length;
-            }
-            if (copy > left) copy = left;
-            left -= copy;
-            state->length -= copy;
-            do {
-                *put++ = *from++;
-            } while (--copy);
-            if (state->length == 0) state->mode = LEN;
-            break;
-        case LIT:
-            if (left == 0) goto inf_leave;
-            *put++ = (unsigned char)(state->length);
-            left--;
-            state->mode = LEN;
-            break;
-        case CHECK:
-            if (state->wrap) {
-                NEEDBITS(32);
-                out -= left;
-                strm->total_out += out;
-                state->total += out;
-                if (out)
-                    strm->adler = state->check =
-                        UPDATE(state->check, put - out, out);
-                out = left;
-                if ((
-#ifdef GUNZIP
-                     state->flags ? hold :
-#endif
-                     REVERSE(hold)) != state->check) {
-                    strm->msg = (char *)"incorrect data check";
-                    state->mode = BAD;
-                    break;
-                }
-                INITBITS();
-                Tracev((stderr, "inflate:   check matches trailer\n"));
-            }
-#ifdef GUNZIP
-            state->mode = LENGTH;
-        case LENGTH:
-            if (state->wrap && state->flags) {
-                NEEDBITS(32);
-                if (hold != (state->total & 0xffffffffUL)) {
-                    strm->msg = (char *)"incorrect length check";
-                    state->mode = BAD;
-                    break;
-                }
-                INITBITS();
-                Tracev((stderr, "inflate:   length matches trailer\n"));
-            }
-#endif
-            state->mode = DONE;
-        case DONE:
-            ret = Z_STREAM_END;
-            goto inf_leave;
-        case BAD:
-            ret = Z_DATA_ERROR;
-            goto inf_leave;
-        case MEM:
-            return Z_MEM_ERROR;
-        case SYNC:
-        default:
-            return Z_STREAM_ERROR;
-        }
-
-    /*
-       Return from inflate(), updating the total counts and the check value.
-       If there was no progress during the inflate() call, return a buffer
-       error.  Call updatewindow() to create and/or update the window state.
-       Note: a memory error from inflate() is non-recoverable.
-     */
-  inf_leave:
-    RESTORE();
-    if (state->wsize || (state->mode < CHECK && out != strm->avail_out))
-        if (updatewindow(strm, out)) {
-            state->mode = MEM;
-            return Z_MEM_ERROR;
-        }
-    in -= strm->avail_in;
-    out -= strm->avail_out;
-    strm->total_in += in;
-    strm->total_out += out;
-    state->total += out;
-    if (state->wrap && out)
-        strm->adler = state->check =
-            UPDATE(state->check, strm->next_out - out, out);
-    strm->data_type = state->bits + (state->last ? 64 : 0) +
-                      (state->mode == TYPE ? 128 : 0);
-    if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK)
-        ret = Z_BUF_ERROR;
-    return ret;
-}
-
-int ZEXPORT inflateEnd(strm)
-z_streamp strm;
-{
-    struct inflate_state FAR *state;
-    if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
-        return Z_STREAM_ERROR;
-    state = (struct inflate_state FAR *)strm->state;
-    if (state->window != Z_NULL) ZFREE(strm, state->window);
-    ZFREE(strm, strm->state);
-    strm->state = Z_NULL;
-    Tracev((stderr, "inflate: end\n"));
-    return Z_OK;
-}
-
-int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength)
-z_streamp strm;
-const Bytef *dictionary;
-uInt dictLength;
-{
-    struct inflate_state FAR *state;
-    unsigned long id;
-
-    /* check state */
-    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-    state = (struct inflate_state FAR *)strm->state;
-    if (state->wrap != 0 && state->mode != DICT)
-        return Z_STREAM_ERROR;
-
-    /* check for correct dictionary id */
-    if (state->mode == DICT) {
-        id = adler32(0L, Z_NULL, 0);
-        id = adler32(id, dictionary, dictLength);
-        if (id != state->check)
-            return Z_DATA_ERROR;
-    }
-
-    /* copy dictionary to window */
-    if (updatewindow(strm, strm->avail_out)) {
-        state->mode = MEM;
-        return Z_MEM_ERROR;
-    }
-    if (dictLength > state->wsize) {
-        zmemcpy(state->window, dictionary + dictLength - state->wsize,
-                state->wsize);
-        state->whave = state->wsize;
-    }
-    else {
-        zmemcpy(state->window + state->wsize - dictLength, dictionary,
-                dictLength);
-        state->whave = dictLength;
-    }
-    state->havedict = 1;
-    Tracev((stderr, "inflate:   dictionary set\n"));
-    return Z_OK;
-}
-
-int ZEXPORT inflateGetHeader(strm, head)
-z_streamp strm;
-gz_headerp head;
-{
-    struct inflate_state FAR *state;
-
-    /* check state */
-    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-    state = (struct inflate_state FAR *)strm->state;
-    if ((state->wrap & 2) == 0) return Z_STREAM_ERROR;
-
-    /* save header structure */
-    state->head = head;
-    head->done = 0;
-    return Z_OK;
-}
-
-/*
-   Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff.  Return when found
-   or when out of input.  When called, *have is the number of pattern bytes
-   found in order so far, in 0..3.  On return *have is updated to the new
-   state.  If on return *have equals four, then the pattern was found and the
-   return value is how many bytes were read including the last byte of the
-   pattern.  If *have is less than four, then the pattern has not been found
-   yet and the return value is len.  In the latter case, syncsearch() can be
-   called again with more data and the *have state.  *have is initialized to
-   zero for the first call.
- */
-local unsigned syncsearch(have, buf, len)
-unsigned FAR *have;
-unsigned char FAR *buf;
-unsigned len;
-{
-    unsigned got;
-    unsigned next;
-
-    got = *have;
-    next = 0;
-    while (next < len && got < 4) {
-        if ((int)(buf[next]) == (got < 2 ? 0 : 0xff))
-            got++;
-        else if (buf[next])
-            got = 0;
-        else
-            got = 4 - got;
-        next++;
-    }
-    *have = got;
-    return next;
-}
-
-int ZEXPORT inflateSync(strm)
-z_streamp strm;
-{
-    unsigned len;               /* number of bytes to look at or looked at */
-    unsigned long in, out;      /* temporary to save total_in and total_out */
-    unsigned char buf[4];       /* to restore bit buffer to byte string */
-    struct inflate_state FAR *state;
-
-    /* check parameters */
-    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-    state = (struct inflate_state FAR *)strm->state;
-    if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR;
-
-    /* if first time, start search in bit buffer */
-    if (state->mode != SYNC) {
-        state->mode = SYNC;
-        state->hold <<= state->bits & 7;
-        state->bits -= state->bits & 7;
-        len = 0;
-        while (state->bits >= 8) {
-            buf[len++] = (unsigned char)(state->hold);
-            state->hold >>= 8;
-            state->bits -= 8;
-        }
-        state->have = 0;
-        syncsearch(&(state->have), buf, len);
-    }
-
-    /* search available input */
-    len = syncsearch(&(state->have), strm->next_in, strm->avail_in);
-    strm->avail_in -= len;
-    strm->next_in += len;
-    strm->total_in += len;
-
-    /* return no joy or set up to restart inflate() on a new block */
-    if (state->have != 4) return Z_DATA_ERROR;
-    in = strm->total_in;  out = strm->total_out;
-    inflateReset(strm);
-    strm->total_in = in;  strm->total_out = out;
-    state->mode = TYPE;
-    return Z_OK;
-}
-
-/*
-   Returns true if inflate is currently at the end of a block generated by
-   Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP
-   implementation to provide an additional safety check. PPP uses
-   Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored
-   block. When decompressing, PPP checks that at the end of input packet,
-   inflate is waiting for these length bytes.
- */
-int ZEXPORT inflateSyncPoint(strm)
-z_streamp strm;
-{
-    struct inflate_state FAR *state;
-
-    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
-    state = (struct inflate_state FAR *)strm->state;
-    return state->mode == STORED && state->bits == 0;
-}
-
-int ZEXPORT inflateCopy(dest, source)
-z_streamp dest;
-z_streamp source;
-{
-    struct inflate_state FAR *state;
-    struct inflate_state FAR *copy;
-    unsigned char FAR *window;
-    unsigned wsize;
-
-    /* check input */
-    if (dest == Z_NULL || source == Z_NULL || source->state == Z_NULL ||
-        source->zalloc == (alloc_func)0 || source->zfree == (free_func)0)
-        return Z_STREAM_ERROR;
-    state = (struct inflate_state FAR *)source->state;
-
-    /* allocate space */
-    copy = (struct inflate_state FAR *)
-           ZALLOC(source, 1, sizeof(struct inflate_state));
-    if (copy == Z_NULL) return Z_MEM_ERROR;
-    window = Z_NULL;
-    if (state->window != Z_NULL) {
-        window = (unsigned char FAR *)
-                 ZALLOC(source, 1U << state->wbits, sizeof(unsigned char));
-        if (window == Z_NULL) {
-            ZFREE(source, copy);
-            return Z_MEM_ERROR;
-        }
-    }
-
-    /* copy state */
-    zmemcpy(dest, source, sizeof(z_stream));
-    zmemcpy(copy, state, sizeof(struct inflate_state));
-    if (state->lencode >= state->codes &&
-        state->lencode <= state->codes + ENOUGH - 1) {
-        copy->lencode = copy->codes + (state->lencode - state->codes);
-        copy->distcode = copy->codes + (state->distcode - state->codes);
-    }
-    copy->next = copy->codes + (state->next - state->codes);
-    if (window != Z_NULL) {
-        wsize = 1U << state->wbits;
-        zmemcpy(window, state->window, wsize);
-    }
-    copy->window = window;
-    dest->state = (struct internal_state FAR *)copy;
-    return Z_OK;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inflate.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inflate.h
deleted file mode 100644
index fbbc871..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inflate.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* inflate.h -- internal inflate state definition
- * Copyright (C) 1995-2004 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
-   part of the implementation of the compression library and is
-   subject to change. Applications should only use zlib.h.
- */
-
-/* define NO_GZIP when compiling if you want to disable gzip header and
-   trailer decoding by inflate().  NO_GZIP would be used to avoid linking in
-   the crc code when it is not needed.  For shared libraries, gzip decoding
-   should be left enabled. */
-#ifndef NO_GZIP
-#  define GUNZIP
-#endif
-
-/* Possible inflate modes between inflate() calls */
-typedef enum {
-    HEAD,       /* i: waiting for magic header */
-    FLAGS,      /* i: waiting for method and flags (gzip) */
-    TIME,       /* i: waiting for modification time (gzip) */
-    OS,         /* i: waiting for extra flags and operating system (gzip) */
-    EXLEN,      /* i: waiting for extra length (gzip) */
-    EXTRA,      /* i: waiting for extra bytes (gzip) */
-    NAME,       /* i: waiting for end of file name (gzip) */
-    COMMENT,    /* i: waiting for end of comment (gzip) */
-    HCRC,       /* i: waiting for header crc (gzip) */
-    DICTID,     /* i: waiting for dictionary check value */
-    DICT,       /* waiting for inflateSetDictionary() call */
-        TYPE,       /* i: waiting for type bits, including last-flag bit */
-        TYPEDO,     /* i: same, but skip check to exit inflate on new block */
-        STORED,     /* i: waiting for stored size (length and complement) */
-        COPY,       /* i/o: waiting for input or output to copy stored block */
-        TABLE,      /* i: waiting for dynamic block table lengths */
-        LENLENS,    /* i: waiting for code length code lengths */
-        CODELENS,   /* i: waiting for length/lit and distance code lengths */
-            LEN,        /* i: waiting for length/lit code */
-            LENEXT,     /* i: waiting for length extra bits */
-            DIST,       /* i: waiting for distance code */
-            DISTEXT,    /* i: waiting for distance extra bits */
-            MATCH,      /* o: waiting for output space to copy string */
-            LIT,        /* o: waiting for output space to write literal */
-    CHECK,      /* i: waiting for 32-bit check value */
-    LENGTH,     /* i: waiting for 32-bit length (gzip) */
-    DONE,       /* finished check, done -- remain here until reset */
-    BAD,        /* got a data error -- remain here until reset */
-    MEM,        /* got an inflate() memory error -- remain here until reset */
-    SYNC        /* looking for synchronization bytes to restart inflate() */
-} inflate_mode;
-
-/*
-    State transitions between above modes -
-
-    (most modes can go to the BAD or MEM mode -- not shown for clarity)
-
-    Process header:
-        HEAD -> (gzip) or (zlib)
-        (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME
-        NAME -> COMMENT -> HCRC -> TYPE
-        (zlib) -> DICTID or TYPE
-        DICTID -> DICT -> TYPE
-    Read deflate blocks:
-            TYPE -> STORED or TABLE or LEN or CHECK
-            STORED -> COPY -> TYPE
-            TABLE -> LENLENS -> CODELENS -> LEN
-    Read deflate codes:
-                LEN -> LENEXT or LIT or TYPE
-                LENEXT -> DIST -> DISTEXT -> MATCH -> LEN
-                LIT -> LEN
-    Process trailer:
-        CHECK -> LENGTH -> DONE
- */
-
-/* state maintained between inflate() calls.  Approximately 7K bytes. */
-struct inflate_state {
-    inflate_mode mode;          /* current inflate mode */
-    int last;                   /* true if processing last block */
-    int wrap;                   /* bit 0 true for zlib, bit 1 true for gzip */
-    int havedict;               /* true if dictionary provided */
-    int flags;                  /* gzip header method and flags (0 if zlib) */
-    unsigned dmax;              /* zlib header max distance (INFLATE_STRICT) */
-    unsigned long check;        /* protected copy of check value */
-    unsigned long total;        /* protected copy of output count */
-    gz_headerp head;            /* where to save gzip header information */
-        /* sliding window */
-    unsigned wbits;             /* log base 2 of requested window size */
-    unsigned wsize;             /* window size or zero if not using window */
-    unsigned whave;             /* valid bytes in the window */
-    unsigned write;             /* window write index */
-    unsigned char FAR *window;  /* allocated sliding window, if needed */
-        /* bit accumulator */
-    unsigned long hold;         /* input bit accumulator */
-    unsigned bits;              /* number of bits in "in" */
-        /* for string and stored block copying */
-    unsigned length;            /* literal or length of data to copy */
-    unsigned offset;            /* distance back to copy string from */
-        /* for table and code decoding */
-    unsigned extra;             /* extra bits needed */
-        /* fixed and dynamic code tables */
-    code const FAR *lencode;    /* starting table for length/literal codes */
-    code const FAR *distcode;   /* starting table for distance codes */
-    unsigned lenbits;           /* index bits for lencode */
-    unsigned distbits;          /* index bits for distcode */
-        /* dynamic table building */
-    unsigned ncode;             /* number of code length code lengths */
-    unsigned nlen;              /* number of length code lengths */
-    unsigned ndist;             /* number of distance code lengths */
-    unsigned have;              /* number of code lengths in lens[] */
-    code FAR *next;             /* next available space in codes[] */
-    unsigned short lens[320];   /* temporary storage for code lengths */
-    unsigned short work[288];   /* work area for code table building */
-    code codes[ENOUGH];         /* space for code tables */
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inftrees.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inftrees.c
deleted file mode 100644
index 38ded81..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inftrees.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2005 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-#include "zutil.h"
-#include "inftrees.h"
-
-#define MAXBITS 15
-
-const char inflate_copyright[] =
-   " inflate 1.2.3 Copyright 1995-2005 Mark Adler ";
-/*
-  If you use the zlib library in a product, an acknowledgment is welcome
-  in the documentation of your product. If for some reason you cannot
-  include such an acknowledgment, I would appreciate that you keep this
-  copyright string in the executable of your product.
- */
-
-/*
-   Build a set of tables to decode the provided canonical Huffman code.
-   The code lengths are lens[0..codes-1].  The result starts at *table,
-   whose indices are 0..2^bits-1.  work is a writable array of at least
-   lens shorts, which is used as a work area.  type is the type of code
-   to be generated, CODES, LENS, or DISTS.  On return, zero is success,
-   -1 is an invalid code, and +1 means that ENOUGH isn't enough.  table
-   on return points to the next available entry's address.  bits is the
-   requested root table index bits, and on return it is the actual root
-   table index bits.  It will differ if the request is greater than the
-   longest code or if it is less than the shortest code.
- */
-int inflate_table(type, lens, codes, table, bits, work)
-codetype type;
-unsigned short FAR *lens;
-unsigned codes;
-code FAR * FAR *table;
-unsigned FAR *bits;
-unsigned short FAR *work;
-{
-    unsigned len;               /* a code's length in bits */
-    unsigned sym;               /* index of code symbols */
-    unsigned min, max;          /* minimum and maximum code lengths */
-    unsigned root;              /* number of index bits for root table */
-    unsigned curr;              /* number of index bits for current table */
-    unsigned drop;              /* code bits to drop for sub-table */
-    int left;                   /* number of prefix codes available */
-    unsigned used;              /* code entries in table used */
-    unsigned huff;              /* Huffman code */
-    unsigned incr;              /* for incrementing code, index */
-    unsigned fill;              /* index for replicating entries */
-    unsigned low;               /* low bits for current root entry */
-    unsigned mask;              /* mask for low root bits */
-    code this;                  /* table entry for duplication */
-    code FAR *next;             /* next available space in table */
-    const unsigned short FAR *base;     /* base value table to use */
-    const unsigned short FAR *extra;    /* extra bits table to use */
-    int end;                    /* use base and extra for symbol > end */
-    unsigned short count[MAXBITS+1];    /* number of codes of each length */
-    unsigned short offs[MAXBITS+1];     /* offsets in table for each length */
-    static const unsigned short lbase[31] = { /* Length codes 257..285 base */
-        3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
-        35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
-    static const unsigned short lext[31] = { /* Length codes 257..285 extra */
-        16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
-        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 201, 196};
-    static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
-        1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
-        257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
-        8193, 12289, 16385, 24577, 0, 0};
-    static const unsigned short dext[32] = { /* Distance codes 0..29 extra */
-        16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
-        23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
-        28, 28, 29, 29, 64, 64};
-
-    /*
-       Process a set of code lengths to create a canonical Huffman code.  The
-       code lengths are lens[0..codes-1].  Each length corresponds to the
-       symbols 0..codes-1.  The Huffman code is generated by first sorting the
-       symbols by length from short to long, and retaining the symbol order
-       for codes with equal lengths.  Then the code starts with all zero bits
-       for the first code of the shortest length, and the codes are integer
-       increments for the same length, and zeros are appended as the length
-       increases.  For the deflate format, these bits are stored backwards
-       from their more natural integer increment ordering, and so when the
-       decoding tables are built in the large loop below, the integer codes
-       are incremented backwards.
-
-       This routine assumes, but does not check, that all of the entries in
-       lens[] are in the range 0..MAXBITS.  The caller must assure this.
-       1..MAXBITS is interpreted as that code length.  zero means that that
-       symbol does not occur in this code.
-
-       The codes are sorted by computing a count of codes for each length,
-       creating from that a table of starting indices for each length in the
-       sorted table, and then entering the symbols in order in the sorted
-       table.  The sorted table is work[], with that space being provided by
-       the caller.
-
-       The length counts are used for other purposes as well, i.e. finding
-       the minimum and maximum length codes, determining if there are any
-       codes at all, checking for a valid set of lengths, and looking ahead
-       at length counts to determine sub-table sizes when building the
-       decoding tables.
-     */
-
-    /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
-    for (len = 0; len <= MAXBITS; len++)
-        count[len] = 0;
-    for (sym = 0; sym < codes; sym++)
-        count[lens[sym]]++;
-
-    /* bound code lengths, force root to be within code lengths */
-    root = *bits;
-    for (max = MAXBITS; max >= 1; max--)
-        if (count[max] != 0) break;
-    if (root > max) root = max;
-    if (max == 0) {                     /* no symbols to code at all */
-        this.op = (unsigned char)64;    /* invalid code marker */
-        this.bits = (unsigned char)1;
-        this.val = (unsigned short)0;
-        *(*table)++ = this;             /* make a table to force an error */
-        *(*table)++ = this;
-        *bits = 1;
-        return 0;     /* no symbols, but wait for decoding to report error */
-    }
-    for (min = 1; min <= MAXBITS; min++)
-        if (count[min] != 0) break;
-    if (root < min) root = min;
-
-    /* check for an over-subscribed or incomplete set of lengths */
-    left = 1;
-    for (len = 1; len <= MAXBITS; len++) {
-        left <<= 1;
-        left -= count[len];
-        if (left < 0) return -1;        /* over-subscribed */
-    }
-    if (left > 0 && (type == CODES || max != 1))
-        return -1;                      /* incomplete set */
-
-    /* generate offsets into symbol table for each length for sorting */
-    offs[1] = 0;
-    for (len = 1; len < MAXBITS; len++)
-        offs[len + 1] = offs[len] + count[len];
-
-    /* sort symbols by length, by symbol order within each length */
-    for (sym = 0; sym < codes; sym++)
-        if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym;
-
-    /*
-       Create and fill in decoding tables.  In this loop, the table being
-       filled is at next and has curr index bits.  The code being used is huff
-       with length len.  That code is converted to an index by dropping drop
-       bits off of the bottom.  For codes where len is less than drop + curr,
-       those top drop + curr - len bits are incremented through all values to
-       fill the table with replicated entries.
-
-       root is the number of index bits for the root table.  When len exceeds
-       root, sub-tables are created pointed to by the root entry with an index
-       of the low root bits of huff.  This is saved in low to check for when a
-       new sub-table should be started.  drop is zero when the root table is
-       being filled, and drop is root when sub-tables are being filled.
-
-       When a new sub-table is needed, it is necessary to look ahead in the
-       code lengths to determine what size sub-table is needed.  The length
-       counts are used for this, and so count[] is decremented as codes are
-       entered in the tables.
-
-       used keeps track of how many table entries have been allocated from the
-       provided *table space.  It is checked when a LENS table is being made
-       against the space in *table, ENOUGH, minus the maximum space needed by
-       the worst case distance code, MAXD.  This should never happen, but the
-       sufficiency of ENOUGH has not been proven exhaustively, hence the check.
-       This assumes that when type == LENS, bits == 9.
-
-       sym increments through all symbols, and the loop terminates when
-       all codes of length max, i.e. all codes, have been processed.  This
-       routine permits incomplete codes, so another loop after this one fills
-       in the rest of the decoding tables with invalid code markers.
-     */
-
-    /* set up for code type */
-    switch (type) {
-    case CODES:
-        base = extra = work;    /* dummy value--not used */
-        end = 19;
-        break;
-    case LENS:
-        base = lbase;
-        base -= 257;
-        extra = lext;
-        extra -= 257;
-        end = 256;
-        break;
-    default:            /* DISTS */
-        base = dbase;
-        extra = dext;
-        end = -1;
-    }
-
-    /* initialize state for loop */
-    huff = 0;                   /* starting code */
-    sym = 0;                    /* starting code symbol */
-    len = min;                  /* starting code length */
-    next = *table;              /* current table to fill in */
-    curr = root;                /* current table index bits */
-    drop = 0;                   /* current bits to drop from code for index */
-    low = (unsigned)(-1);       /* trigger new sub-table when len > root */
-    used = 1U << root;          /* use root table entries */
-    mask = used - 1;            /* mask for comparing low */
-
-    /* check available table space */
-    if (type == LENS && used >= ENOUGH - MAXD)
-        return 1;
-
-    /* process all codes and make table entries */
-    for (;;) {
-        /* create table entry */
-        this.bits = (unsigned char)(len - drop);
-        if ((int)(work[sym]) < end) {
-            this.op = (unsigned char)0;
-            this.val = work[sym];
-        }
-        else if ((int)(work[sym]) > end) {
-            this.op = (unsigned char)(extra[work[sym]]);
-            this.val = base[work[sym]];
-        }
-        else {
-            this.op = (unsigned char)(32 + 64);         /* end of block */
-            this.val = 0;
-        }
-
-        /* replicate for those indices with low len bits equal to huff */
-        incr = 1U << (len - drop);
-        fill = 1U << curr;
-        min = fill;                 /* save offset to next table */
-        do {
-            fill -= incr;
-            next[(huff >> drop) + fill] = this;
-        } while (fill != 0);
-
-        /* backwards increment the len-bit code huff */
-        incr = 1U << (len - 1);
-        while (huff & incr)
-            incr >>= 1;
-        if (incr != 0) {
-            huff &= incr - 1;
-            huff += incr;
-        }
-        else
-            huff = 0;
-
-        /* go to next symbol, update count, len */
-        sym++;
-        if (--(count[len]) == 0) {
-            if (len == max) break;
-            len = lens[work[sym]];
-        }
-
-        /* create new sub-table if needed */
-        if (len > root && (huff & mask) != low) {
-            /* if first time, transition to sub-tables */
-            if (drop == 0)
-                drop = root;
-
-            /* increment past last table */
-            next += min;            /* here min is 1 << curr */
-
-            /* determine length of next table */
-            curr = len - drop;
-            left = (int)(1 << curr);
-            while (curr + drop < max) {
-                left -= count[curr + drop];
-                if (left <= 0) break;
-                curr++;
-                left <<= 1;
-            }
-
-            /* check for enough space */
-            used += 1U << curr;
-            if (type == LENS && used >= ENOUGH - MAXD)
-                return 1;
-
-            /* point entry in root table to sub-table */
-            low = huff & mask;
-            (*table)[low].op = (unsigned char)curr;
-            (*table)[low].bits = (unsigned char)root;
-            (*table)[low].val = (unsigned short)(next - *table);
-        }
-    }
-
-    /*
-       Fill in rest of table for incomplete codes.  This loop is similar to the
-       loop above in incrementing huff for table indices.  It is assumed that
-       len is equal to curr + drop, so there is no loop needed to increment
-       through high index bits.  When the current sub-table is filled, the loop
-       drops back to the root table to fill in any remaining entries there.
-     */
-    this.op = (unsigned char)64;                /* invalid code marker */
-    this.bits = (unsigned char)(len - drop);
-    this.val = (unsigned short)0;
-    while (huff != 0) {
-        /* when done with sub-table, drop back to root table */
-        if (drop != 0 && (huff & mask) != low) {
-            drop = 0;
-            len = root;
-            next = *table;
-            this.bits = (unsigned char)len;
-        }
-
-        /* put invalid code marker in table */
-        next[huff >> drop] = this;
-
-        /* backwards increment the len-bit code huff */
-        incr = 1U << (len - 1);
-        while (huff & incr)
-            incr >>= 1;
-        if (incr != 0) {
-            huff &= incr - 1;
-            huff += incr;
-        }
-        else
-            huff = 0;
-    }
-
-    /* set return parameters */
-    *table += used;
-    *bits = root;
-    return 0;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inftrees.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inftrees.h
deleted file mode 100644
index dc0fd56..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/inftrees.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* inftrees.h -- header to use inftrees.c
- * Copyright (C) 1995-2005 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
-   part of the implementation of the compression library and is
-   subject to change. Applications should only use zlib.h.
- */
-
-/* Structure for decoding tables.  Each entry provides either the
-   information needed to do the operation requested by the code that
-   indexed that table entry, or it provides a pointer to another
-   table that indexes more bits of the code.  op indicates whether
-   the entry is a pointer to another table, a literal, a length or
-   distance, an end-of-block, or an invalid code.  For a table
-   pointer, the low four bits of op is the number of index bits of
-   that table.  For a length or distance, the low four bits of op
-   is the number of extra bits to get after the code.  bits is
-   the number of bits in this code or part of the code to drop off
-   of the bit buffer.  val is the actual byte to output in the case
-   of a literal, the base length or distance, or the offset from
-   the current table to the next table.  Each entry is four bytes. */
-typedef struct {
-    unsigned char op;           /* operation, extra bits, table bits */
-    unsigned char bits;         /* bits in this part of the code */
-    unsigned short val;         /* offset in table or code value */
-} code;
-
-/* op values as set by inflate_table():
-    00000000 - literal
-    0000tttt - table link, tttt != 0 is the number of table index bits
-    0001eeee - length or distance, eeee is the number of extra bits
-    01100000 - end of block
-    01000000 - invalid code
- */
-
-/* Maximum size of dynamic tree.  The maximum found in a long but non-
-   exhaustive search was 1444 code structures (852 for length/literals
-   and 592 for distances, the latter actually the result of an
-   exhaustive search).  The true maximum is not known, but the value
-   below is more than safe. */
-#define ENOUGH 2048
-#define MAXD 592
-
-/* Type of code to build for inftable() */
-typedef enum {
-    CODES,
-    LENS,
-    DISTS
-} codetype;
-
-extern int inflate_table OF((codetype type, unsigned short FAR *lens,
-                             unsigned codes, code FAR * FAR *table,
-                             unsigned FAR *bits, unsigned short FAR *work));
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/make_vms.com b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/make_vms.com
deleted file mode 100644
index 93174bb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/make_vms.com
+++ /dev/null
@@ -1,461 +0,0 @@
-$! make libz under VMS written by
-$! Martin P.J. Zinser
-$! <zinser@zinser.no-ip.info or zinser@sysdev.deutsche-boerse.com>
-$!
-$ on error then goto err_exit
-$!
-$!
-$! Just some general constants...
-$!
-$ true  = 1
-$ false = 0
-$ tmpnam = "temp_" + f$getjpi("","pid")
-$ SAY = "WRITE SYS$OUTPUT"
-$!
-$! Setup variables holding "config" information
-$!
-$ Make     = ""
-$ name     = "Zlib"
-$ version  = "?.?.?"
-$ v_string = "ZLIB_VERSION"
-$ v_file   = "zlib.h"
-$ ccopt    = ""
-$ lopts    = ""
-$ linkonly = false
-$ optfile  = name + ".opt"
-$ its_decc = false
-$ its_vaxc = false
-$ its_gnuc = false
-$ axp      = f$getsyi("HW_MODEL").ge.1024
-$ s_case   = false
-$! Check for MMK/MMS
-$!
-$ If F$Search ("Sys$System:MMS.EXE") .nes. "" Then Make = "MMS"
-$ If F$Type (MMK) .eqs. "STRING" Then Make = "MMK"
-$!
-$!
-$ gosub find_version
-$!
-$ gosub check_opts
-$!
-$! Look for the compiler used
-$!
-$ gosub check_compiler
-$ if its_decc
-$ then
-$   ccopt = "/prefix=all" + ccopt
-$   if f$trnlnm("SYS") .eqs. ""
-$   then
-$     if axp
-$     then
-$       define sys sys$library:
-$     else
-$       ccopt = "/decc" + ccopt
-$       define sys decc$library_include:
-$     endif
-$   endif
-$ endif
-$ if its_vaxc .or. its_gnuc
-$ then
-$    if f$trnlnm("SYS").eqs."" then define sys sys$library:
-$ endif
-$!
-$! Build the thing plain or with mms
-$!
-$ write sys$output "Compiling Zlib sources ..."
-$ if make.eqs.""
-$  then
-$   dele example.obj;*,minigzip.obj;*
-$   CALL MAKE adler32.OBJ "CC ''CCOPT' adler32" -
-                adler32.c zlib.h zconf.h
-$   CALL MAKE compress.OBJ "CC ''CCOPT' compress" -
-                compress.c zlib.h zconf.h
-$   CALL MAKE crc32.OBJ "CC ''CCOPT' crc32" -
-                crc32.c zlib.h zconf.h
-$   CALL MAKE deflate.OBJ "CC ''CCOPT' deflate" -
-                deflate.c deflate.h zutil.h zlib.h zconf.h
-$   CALL MAKE gzio.OBJ "CC ''CCOPT' gzio" -
-                gzio.c zutil.h zlib.h zconf.h
-$   CALL MAKE infback.OBJ "CC ''CCOPT' infback" -
-                infback.c zutil.h inftrees.h inflate.h inffast.h inffixed.h
-$   CALL MAKE inffast.OBJ "CC ''CCOPT' inffast" -
-                inffast.c zutil.h zlib.h zconf.h inffast.h
-$   CALL MAKE inflate.OBJ "CC ''CCOPT' inflate" -
-                inflate.c zutil.h zlib.h zconf.h infblock.h
-$   CALL MAKE inftrees.OBJ "CC ''CCOPT' inftrees" -
-                inftrees.c zutil.h zlib.h zconf.h inftrees.h
-$   CALL MAKE trees.OBJ "CC ''CCOPT' trees" -
-                trees.c deflate.h zutil.h zlib.h zconf.h
-$   CALL MAKE uncompr.OBJ "CC ''CCOPT' uncompr" -
-                uncompr.c zlib.h zconf.h
-$   CALL MAKE zutil.OBJ "CC ''CCOPT' zutil" -
-                zutil.c zutil.h zlib.h zconf.h
-$   write sys$output "Building Zlib ..."
-$   CALL MAKE libz.OLB "lib/crea libz.olb *.obj" *.OBJ
-$   write sys$output "Building example..."
-$   CALL MAKE example.OBJ "CC ''CCOPT' example" -
-                example.c zlib.h zconf.h
-$   call make example.exe "LINK example,libz.olb/lib" example.obj libz.olb
-$   if f$search("x11vms:xvmsutils.olb") .nes. ""
-$   then
-$     write sys$output "Building minigzip..."
-$     CALL MAKE minigzip.OBJ "CC ''CCOPT' minigzip" -
-                minigzip.c zlib.h zconf.h
-$     call make minigzip.exe -
-                "LINK minigzip,libz.olb/lib,x11vms:xvmsutils.olb/lib" -
-                minigzip.obj libz.olb
-$   endif
-$  else
-$   gosub crea_mms
-$   SAY "Make ''name' ''version' with ''Make' "
-$   'make'
-$  endif
-$!
-$! Alpha gets a shareable image
-$!
-$ If axp
-$ Then
-$   gosub crea_olist
-$   write sys$output "Creating libzshr.exe"
-$   call anal_obj_axp modules.opt _link.opt
-$   if s_case
-$   then
-$      open/append optf modules.opt
-$      write optf "case_sensitive=YES"
-$      close optf
-$   endif
-$   LINK_'lopts'/SHARE=libzshr.exe modules.opt/opt,_link.opt/opt
-$ endif
-$ write sys$output "Zlib build completed"
-$ exit
-$CC_ERR:
-$ write sys$output "C compiler required to build ''name'"
-$ goto err_exit
-$ERR_EXIT:
-$ set message/facil/ident/sever/text
-$ write sys$output "Exiting..."
-$ exit 2
-$!
-$!
-$MAKE: SUBROUTINE   !SUBROUTINE TO CHECK DEPENDENCIES
-$ V = 'F$Verify(0)
-$! P1 = What we are trying to make
-$! P2 = Command to make it
-$! P3 - P8  What it depends on
-$
-$ If F$Search(P1) .Eqs. "" Then Goto Makeit
-$ Time = F$CvTime(F$File(P1,"RDT"))
-$arg=3
-$Loop:
-$       Argument = P'arg
-$       If Argument .Eqs. "" Then Goto Exit
-$       El=0
-$Loop2:
-$       File = F$Element(El," ",Argument)
-$       If File .Eqs. " " Then Goto Endl
-$       AFile = ""
-$Loop3:
-$       OFile = AFile
-$       AFile = F$Search(File)
-$       If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
-$       If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
-$       Goto Loop3
-$NextEL:
-$       El = El + 1
-$       Goto Loop2
-$EndL:
-$ arg=arg+1
-$ If arg .Le. 8 Then Goto Loop
-$ Goto Exit
-$
-$Makeit:
-$ VV=F$VERIFY(0)
-$ write sys$output P2
-$ 'P2
-$ VV='F$Verify(VV)
-$Exit:
-$ If V Then Set Verify
-$ENDSUBROUTINE
-$!------------------------------------------------------------------------------
-$!
-$! Check command line options and set symbols accordingly
-$!
-$ CHECK_OPTS:
-$ i = 1
-$ OPT_LOOP:
-$ if i .lt. 9
-$ then
-$   cparm = f$edit(p'i',"upcase")
-$   if cparm .eqs. "DEBUG"
-$   then
-$     ccopt = ccopt + "/noopt/deb"
-$     lopts = lopts + "/deb"
-$   endif
-$   if f$locate("CCOPT=",cparm) .lt. f$length(cparm)
-$   then
-$     start = f$locate("=",cparm) + 1
-$     len   = f$length(cparm) - start
-$     ccopt = ccopt + f$extract(start,len,cparm)
-$     if f$locate("AS_IS",f$edit(ccopt,"UPCASE")) .lt. f$length(ccopt) -
-         then s_case = true
-$   endif
-$   if cparm .eqs. "LINK" then linkonly = true
-$   if f$locate("LOPTS=",cparm) .lt. f$length(cparm)
-$   then
-$     start = f$locate("=",cparm) + 1
-$     len   = f$length(cparm) - start
-$     lopts = lopts + f$extract(start,len,cparm)
-$   endif
-$   if f$locate("CC=",cparm) .lt. f$length(cparm)
-$   then
-$     start  = f$locate("=",cparm) + 1
-$     len    = f$length(cparm) - start
-$     cc_com = f$extract(start,len,cparm)
-      if (cc_com .nes. "DECC") .and. -
-         (cc_com .nes. "VAXC") .and. -
-	 (cc_com .nes. "GNUC")
-$     then
-$       write sys$output "Unsupported compiler choice ''cc_com' ignored"
-$       write sys$output "Use DECC, VAXC, or GNUC instead"
-$     else
-$     	if cc_com .eqs. "DECC" then its_decc = true
-$     	if cc_com .eqs. "VAXC" then its_vaxc = true
-$     	if cc_com .eqs. "GNUC" then its_gnuc = true
-$     endif
-$   endif
-$   if f$locate("MAKE=",cparm) .lt. f$length(cparm)
-$   then
-$     start  = f$locate("=",cparm) + 1
-$     len    = f$length(cparm) - start
-$     mmks = f$extract(start,len,cparm)
-$     if (mmks .eqs. "MMK") .or. (mmks .eqs. "MMS")
-$     then
-$       make = mmks
-$     else
-$       write sys$output "Unsupported make choice ''mmks' ignored"
-$       write sys$output "Use MMK or MMS instead"
-$     endif
-$   endif
-$   i = i + 1
-$   goto opt_loop
-$ endif
-$ return
-$!------------------------------------------------------------------------------
-$!
-$! Look for the compiler used
-$!
-$CHECK_COMPILER:
-$ if (.not. (its_decc .or. its_vaxc .or. its_gnuc))
-$ then
-$   its_decc = (f$search("SYS$SYSTEM:DECC$COMPILER.EXE") .nes. "")
-$   its_vaxc = .not. its_decc .and. (F$Search("SYS$System:VAXC.Exe") .nes. "")
-$   its_gnuc = .not. (its_decc .or. its_vaxc) .and. (f$trnlnm("gnu_cc") .nes. "")
-$ endif
-$!
-$! Exit if no compiler available
-$!
-$ if (.not. (its_decc .or. its_vaxc .or. its_gnuc))
-$ then goto CC_ERR
-$ else
-$   if its_decc then write sys$output "CC compiler check ... Compaq C"
-$   if its_vaxc then write sys$output "CC compiler check ... VAX C"
-$   if its_gnuc then write sys$output "CC compiler check ... GNU C"
-$ endif
-$ return
-$!------------------------------------------------------------------------------
-$!
-$! If MMS/MMK are available dump out the descrip.mms if required
-$!
-$CREA_MMS:
-$ write sys$output "Creating descrip.mms..."
-$ create descrip.mms
-$ open/append out descrip.mms
-$ copy sys$input: out
-$ deck
-# descrip.mms: MMS description file for building zlib on VMS
-# written by Martin P.J. Zinser
-# <zinser@zinser.no-ip.info or zinser@sysdev.deutsche-boerse.com>
-
-OBJS = adler32.obj, compress.obj, crc32.obj, gzio.obj, uncompr.obj, infback.obj\
-       deflate.obj, trees.obj, zutil.obj, inflate.obj, \
-       inftrees.obj, inffast.obj
-
-$ eod
-$ write out "CFLAGS=", ccopt
-$ write out "LOPTS=", lopts
-$ copy sys$input: out
-$ deck
-
-all : example.exe minigzip.exe libz.olb
-        @ write sys$output " Example applications available"
-
-libz.olb : libz.olb($(OBJS))
-	@ write sys$output " libz available"
-
-example.exe : example.obj libz.olb
-              link $(LOPTS) example,libz.olb/lib
-
-minigzip.exe : minigzip.obj libz.olb
-              link $(LOPTS) minigzip,libz.olb/lib,x11vms:xvmsutils.olb/lib
-
-clean :
-	delete *.obj;*,libz.olb;*,*.opt;*,*.exe;*
-
-
-# Other dependencies.
-adler32.obj  : adler32.c zutil.h zlib.h zconf.h
-compress.obj : compress.c zlib.h zconf.h
-crc32.obj    : crc32.c zutil.h zlib.h zconf.h
-deflate.obj  : deflate.c deflate.h zutil.h zlib.h zconf.h
-example.obj  : example.c zlib.h zconf.h
-gzio.obj     : gzio.c zutil.h zlib.h zconf.h
-inffast.obj  : inffast.c zutil.h zlib.h zconf.h inftrees.h inffast.h
-inflate.obj  : inflate.c zutil.h zlib.h zconf.h
-inftrees.obj : inftrees.c zutil.h zlib.h zconf.h inftrees.h
-minigzip.obj : minigzip.c zlib.h zconf.h
-trees.obj    : trees.c deflate.h zutil.h zlib.h zconf.h
-uncompr.obj  : uncompr.c zlib.h zconf.h
-zutil.obj    : zutil.c zutil.h zlib.h zconf.h
-infback.obj  : infback.c zutil.h inftrees.h inflate.h inffast.h inffixed.h
-$ eod
-$ close out
-$ return
-$!------------------------------------------------------------------------------
-$!
-$! Read list of core library sources from makefile.in and create options
-$! needed to build shareable image
-$!
-$CREA_OLIST:
-$ open/read min makefile.in
-$ open/write mod modules.opt
-$ src_check = "OBJS ="
-$MRLOOP:
-$ read/end=mrdone min rec
-$ if (f$extract(0,6,rec) .nes. src_check) then goto mrloop
-$ rec = rec - src_check
-$ gosub extra_filnam
-$ if (f$element(1,"\",rec) .eqs. "\") then goto mrdone
-$MRSLOOP:
-$ read/end=mrdone min rec
-$ gosub extra_filnam
-$ if (f$element(1,"\",rec) .nes. "\") then goto mrsloop
-$MRDONE:
-$ close min
-$ close mod
-$ return
-$!------------------------------------------------------------------------------
-$!
-$! Take record extracted in crea_olist and split it into single filenames
-$!
-$EXTRA_FILNAM:
-$ myrec = f$edit(rec - "\", "trim,compress")
-$ i = 0
-$FELOOP:
-$ srcfil = f$element(i," ", myrec)
-$ if (srcfil .nes. " ")
-$ then
-$   write mod f$parse(srcfil,,,"NAME"), ".obj"
-$   i = i + 1
-$   goto feloop
-$ endif
-$ return
-$!------------------------------------------------------------------------------
-$!
-$! Find current Zlib version number
-$!
-$FIND_VERSION:
-$ open/read h_in 'v_file'
-$hloop:
-$ read/end=hdone h_in rec
-$ rec = f$edit(rec,"TRIM")
-$ if (f$extract(0,1,rec) .nes. "#") then goto hloop
-$ rec = f$edit(rec - "#", "TRIM")
-$ if f$element(0," ",rec) .nes. "define" then goto hloop
-$ if f$element(1," ",rec) .eqs. v_string
-$ then
-$   version = 'f$element(2," ",rec)'
-$   goto hdone
-$ endif
-$ goto hloop
-$hdone:
-$ close h_in
-$ return
-$!------------------------------------------------------------------------------
-$!
-$! Analyze Object files for OpenVMS AXP to extract Procedure and Data
-$! information to build a symbol vector for a shareable image
-$! All the "brains" of this logic was suggested by Hartmut Becker
-$! (Hartmut.Becker@compaq.com). All the bugs were introduced by me
-$! (zinser@decus.de), so if you do have problem reports please do not
-$! bother Hartmut/HP, but get in touch with me
-$!
-$ ANAL_OBJ_AXP: Subroutine
-$ V = 'F$Verify(0)
-$ SAY := "WRITE_ SYS$OUTPUT"
-$
-$ IF F$SEARCH("''P1'") .EQS. ""
-$ THEN
-$    SAY "ANAL_OBJ_AXP-E-NOSUCHFILE:  Error, inputfile ''p1' not available"
-$    goto exit_aa
-$ ENDIF
-$ IF "''P2'" .EQS. ""
-$ THEN
-$    SAY "ANAL_OBJ_AXP:  Error, no output file provided"
-$    goto exit_aa
-$ ENDIF
-$
-$ open/read in 'p1
-$ create a.tmp
-$ open/append atmp a.tmp
-$ loop:
-$ read/end=end_loop in line
-$ f= f$search(line)
-$ if f .eqs. ""
-$ then
-$	write sys$output "ANAL_OBJ_AXP-w-nosuchfile, ''line'"
-$	goto loop
-$ endif
-$ define/user sys$output nl:
-$ define/user sys$error nl:
-$ anal/obj/gsd 'f /out=x.tmp
-$ open/read xtmp x.tmp
-$ XLOOP:
-$ read/end=end_xloop xtmp xline
-$ xline = f$edit(xline,"compress")
-$ write atmp xline
-$ goto xloop
-$ END_XLOOP:
-$ close xtmp
-$ goto loop
-$ end_loop:
-$ close in
-$ close atmp
-$ if f$search("a.tmp") .eqs. "" -
-	then $ exit
-$ ! all global definitions
-$ search a.tmp "symbol:","EGSY$V_DEF 1","EGSY$V_NORM 1"/out=b.tmp
-$ ! all procedures
-$ search b.tmp "EGSY$V_NORM 1"/wind=(0,1) /out=c.tmp
-$ search c.tmp "symbol:"/out=d.tmp
-$ define/user sys$output nl:
-$ edito/edt/command=sys$input d.tmp
-sub/symbol: "/symbol_vector=(/whole
-sub/"/=PROCEDURE)/whole
-exit
-$ ! all data
-$ search b.tmp "EGSY$V_DEF 1"/wind=(0,1) /out=e.tmp
-$ search e.tmp "symbol:"/out=f.tmp
-$ define/user sys$output nl:
-$ edito/edt/command=sys$input f.tmp
-sub/symbol: "/symbol_vector=(/whole
-sub/"/=DATA)/whole
-exit
-$ sort/nodupl d.tmp,f.tmp 'p2'
-$ delete a.tmp;*,b.tmp;*,c.tmp;*,d.tmp;*,e.tmp;*,f.tmp;*
-$ if f$search("x.tmp") .nes. "" -
-	then $ delete x.tmp;*
-$!
-$ EXIT_AA:
-$ if V then set verify
-$ endsubroutine
-$!------------------------------------------------------------------------------
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/minigzip.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/minigzip.c
deleted file mode 100644
index 41996db..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/minigzip.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/* minigzip.c -- simulate gzip using the zlib compression library
- * Copyright (C) 1995-2005 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/*
- * minigzip is a minimal implementation of the gzip utility. This is
- * only an example of using zlib and isn't meant to replace the
- * full-featured gzip. No attempt is made to deal with file systems
- * limiting names to 14 or 8+3 characters, etc... Error checking is
- * very limited. So use minigzip only for testing; use gzip for the
- * real thing. On MSDOS, use only on file names without extension
- * or in pipe mode.
- */
-
-/* @(#) $Id$ */
-
-#include <stdio.h>
-#include "zlib.h"
-
-#ifdef STDC
-#  include <string.h>
-#  include <stdlib.h>
-#endif
-
-#ifdef USE_MMAP
-#  include <sys/types.h>
-#  include <sys/mman.h>
-#  include <sys/stat.h>
-#endif
-
-#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
-#  include <fcntl.h>
-#  include <io.h>
-#  define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
-#else
-#  define SET_BINARY_MODE(file)
-#endif
-
-#ifdef VMS
-#  define unlink delete
-#  define GZ_SUFFIX "-gz"
-#endif
-#ifdef RISCOS
-#  define unlink remove
-#  define GZ_SUFFIX "-gz"
-#  define fileno(file) file->__file
-#endif
-#if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
-#  include <unix.h> /* for fileno */
-#endif
-
-#ifndef WIN32 /* unlink already in stdio.h for WIN32 */
-  extern int unlink OF((const char *));
-#endif
-
-#ifndef GZ_SUFFIX
-#  define GZ_SUFFIX ".gz"
-#endif
-#define SUFFIX_LEN (sizeof(GZ_SUFFIX)-1)
-
-#define BUFLEN      16384
-#define MAX_NAME_LEN 1024
-
-#ifdef MAXSEG_64K
-#  define local static
-   /* Needed for systems with limitation on stack size. */
-#else
-#  define local
-#endif
-
-char *prog;
-
-void error            OF((const char *msg));
-void gz_compress      OF((FILE   *in, gzFile out));
-#ifdef USE_MMAP
-int  gz_compress_mmap OF((FILE   *in, gzFile out));
-#endif
-void gz_uncompress    OF((gzFile in, FILE   *out));
-void file_compress    OF((char  *file, char *mode));
-void file_uncompress  OF((char  *file));
-int  main             OF((int argc, char *argv[]));
-
-/* ===========================================================================
- * Display error message and exit
- */
-void error(msg)
-    const char *msg;
-{
-    fprintf(stderr, "%s: %s\n", prog, msg);
-    exit(1);
-}
-
-/* ===========================================================================
- * Compress input to output then close both files.
- */
-
-void gz_compress(in, out)
-    FILE   *in;
-    gzFile out;
-{
-    local char buf[BUFLEN];
-    int len;
-    int err;
-
-#ifdef USE_MMAP
-    /* Try first compressing with mmap. If mmap fails (minigzip used in a
-     * pipe), use the normal fread loop.
-     */
-    if (gz_compress_mmap(in, out) == Z_OK) return;
-#endif
-    for (;;) {
-        len = (int)fread(buf, 1, sizeof(buf), in);
-        if (ferror(in)) {
-            perror("fread");
-            exit(1);
-        }
-        if (len == 0) break;
-
-        if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err));
-    }
-    fclose(in);
-    if (gzclose(out) != Z_OK) error("failed gzclose");
-}
-
-#ifdef USE_MMAP /* MMAP version, Miguel Albrecht <malbrech@eso.org> */
-
-/* Try compressing the input file at once using mmap. Return Z_OK if
- * if success, Z_ERRNO otherwise.
- */
-int gz_compress_mmap(in, out)
-    FILE   *in;
-    gzFile out;
-{
-    int len;
-    int err;
-    int ifd = fileno(in);
-    caddr_t buf;    /* mmap'ed buffer for the entire input file */
-    off_t buf_len;  /* length of the input file */
-    struct stat sb;
-
-    /* Determine the size of the file, needed for mmap: */
-    if (fstat(ifd, &sb) < 0) return Z_ERRNO;
-    buf_len = sb.st_size;
-    if (buf_len <= 0) return Z_ERRNO;
-
-    /* Now do the actual mmap: */
-    buf = mmap((caddr_t) 0, buf_len, PROT_READ, MAP_SHARED, ifd, (off_t)0);
-    if (buf == (caddr_t)(-1)) return Z_ERRNO;
-
-    /* Compress the whole file at once: */
-    len = gzwrite(out, (char *)buf, (unsigned)buf_len);
-
-    if (len != (int)buf_len) error(gzerror(out, &err));
-
-    munmap(buf, buf_len);
-    fclose(in);
-    if (gzclose(out) != Z_OK) error("failed gzclose");
-    return Z_OK;
-}
-#endif /* USE_MMAP */
-
-/* ===========================================================================
- * Uncompress input to output then close both files.
- */
-void gz_uncompress(in, out)
-    gzFile in;
-    FILE   *out;
-{
-    local char buf[BUFLEN];
-    int len;
-    int err;
-
-    for (;;) {
-        len = gzread(in, buf, sizeof(buf));
-        if (len < 0) error (gzerror(in, &err));
-        if (len == 0) break;
-
-        if ((int)fwrite(buf, 1, (unsigned)len, out) != len) {
-            error("failed fwrite");
-        }
-    }
-    if (fclose(out)) error("failed fclose");
-
-    if (gzclose(in) != Z_OK) error("failed gzclose");
-}
-
-
-/* ===========================================================================
- * Compress the given file: create a corresponding .gz file and remove the
- * original.
- */
-void file_compress(file, mode)
-    char  *file;
-    char  *mode;
-{
-    local char outfile[MAX_NAME_LEN];
-    FILE  *in;
-    gzFile out;
-
-    strcpy(outfile, file);
-    strcat(outfile, GZ_SUFFIX);
-
-    in = fopen(file, "rb");
-    if (in == NULL) {
-        perror(file);
-        exit(1);
-    }
-    out = gzopen(outfile, mode);
-    if (out == NULL) {
-        fprintf(stderr, "%s: can't gzopen %s\n", prog, outfile);
-        exit(1);
-    }
-    gz_compress(in, out);
-
-    unlink(file);
-}
-
-
-/* ===========================================================================
- * Uncompress the given file and remove the original.
- */
-void file_uncompress(file)
-    char  *file;
-{
-    local char buf[MAX_NAME_LEN];
-    char *infile, *outfile;
-    FILE  *out;
-    gzFile in;
-    uInt len = (uInt)strlen(file);
-
-    strcpy(buf, file);
-
-    if (len > SUFFIX_LEN && strcmp(file+len-SUFFIX_LEN, GZ_SUFFIX) == 0) {
-        infile = file;
-        outfile = buf;
-        outfile[len-3] = '\0';
-    } else {
-        outfile = file;
-        infile = buf;
-        strcat(infile, GZ_SUFFIX);
-    }
-    in = gzopen(infile, "rb");
-    if (in == NULL) {
-        fprintf(stderr, "%s: can't gzopen %s\n", prog, infile);
-        exit(1);
-    }
-    out = fopen(outfile, "wb");
-    if (out == NULL) {
-        perror(file);
-        exit(1);
-    }
-
-    gz_uncompress(in, out);
-
-    unlink(infile);
-}
-
-
-/* ===========================================================================
- * Usage:  minigzip [-d] [-f] [-h] [-r] [-1 to -9] [files...]
- *   -d : decompress
- *   -f : compress with Z_FILTERED
- *   -h : compress with Z_HUFFMAN_ONLY
- *   -r : compress with Z_RLE
- *   -1 to -9 : compression level
- */
-
-int main(argc, argv)
-    int argc;
-    char *argv[];
-{
-    int uncompr = 0;
-    gzFile file;
-    char outmode[20];
-
-    strcpy(outmode, "wb6 ");
-
-    prog = argv[0];
-    argc--, argv++;
-
-    while (argc > 0) {
-      if (strcmp(*argv, "-d") == 0)
-        uncompr = 1;
-      else if (strcmp(*argv, "-f") == 0)
-        outmode[3] = 'f';
-      else if (strcmp(*argv, "-h") == 0)
-        outmode[3] = 'h';
-      else if (strcmp(*argv, "-r") == 0)
-        outmode[3] = 'R';
-      else if ((*argv)[0] == '-' && (*argv)[1] >= '1' && (*argv)[1] <= '9' &&
-               (*argv)[2] == 0)
-        outmode[2] = (*argv)[1];
-      else
-        break;
-      argc--, argv++;
-    }
-    if (outmode[3] == ' ')
-        outmode[3] = 0;
-    if (argc == 0) {
-        SET_BINARY_MODE(stdin);
-        SET_BINARY_MODE(stdout);
-        if (uncompr) {
-            file = gzdopen(fileno(stdin), "rb");
-            if (file == NULL) error("can't gzdopen stdin");
-            gz_uncompress(file, stdout);
-        } else {
-            file = gzdopen(fileno(stdout), outmode);
-            if (file == NULL) error("can't gzdopen stdout");
-            gz_compress(stdin, file);
-        }
-    } else {
-        do {
-            if (uncompr) {
-                file_uncompress(*argv);
-            } else {
-                file_compress(*argv, outmode);
-            }
-        } while (argv++, --argc);
-    }
-    return 0;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/trees.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/trees.c
deleted file mode 100644
index 7a04802..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/trees.c
+++ /dev/null
@@ -1,1219 +0,0 @@
-/* trees.c -- output deflated data using Huffman coding
- * Copyright (C) 1995-2005 Jean-loup Gailly
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/*
- *  ALGORITHM
- *
- *      The "deflation" process uses several Huffman trees. The more
- *      common source values are represented by shorter bit sequences.
- *
- *      Each code tree is stored in a compressed form which is itself
- * a Huffman encoding of the lengths of all the code strings (in
- * ascending order by source values).  The actual code strings are
- * reconstructed from the lengths in the inflate process, as described
- * in the deflate specification.
- *
- *  REFERENCES
- *
- *      Deutsch, L.P.,"'Deflate' Compressed Data Format Specification".
- *      Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc
- *
- *      Storer, James A.
- *          Data Compression:  Methods and Theory, pp. 49-50.
- *          Computer Science Press, 1988.  ISBN 0-7167-8156-5.
- *
- *      Sedgewick, R.
- *          Algorithms, p290.
- *          Addison-Wesley, 1983. ISBN 0-201-06672-6.
- */
-
-/* @(#) $Id$ */
-
-/* #define GEN_TREES_H */
-
-#include "deflate.h"
-
-#ifdef DEBUG
-#  include <ctype.h>
-#endif
-
-/* ===========================================================================
- * Constants
- */
-
-#define MAX_BL_BITS 7
-/* Bit length codes must not exceed MAX_BL_BITS bits */
-
-#define END_BLOCK 256
-/* end of block literal code */
-
-#define REP_3_6      16
-/* repeat previous bit length 3-6 times (2 bits of repeat count) */
-
-#define REPZ_3_10    17
-/* repeat a zero length 3-10 times  (3 bits of repeat count) */
-
-#define REPZ_11_138  18
-/* repeat a zero length 11-138 times  (7 bits of repeat count) */
-
-local const int extra_lbits[LENGTH_CODES] /* extra bits for each length code */
-   = {0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0};
-
-local const int extra_dbits[D_CODES] /* extra bits for each distance code */
-   = {0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13};
-
-local const int extra_blbits[BL_CODES]/* extra bits for each bit length code */
-   = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7};
-
-local const uch bl_order[BL_CODES]
-   = {16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15};
-/* The lengths of the bit length codes are sent in order of decreasing
- * probability, to avoid transmitting the lengths for unused bit length codes.
- */
-
-#define Buf_size (8 * 2*sizeof(char))
-/* Number of bits used within bi_buf. (bi_buf might be implemented on
- * more than 16 bits on some systems.)
- */
-
-/* ===========================================================================
- * Local data. These are initialized only once.
- */
-
-#define DIST_CODE_LEN  512 /* see definition of array dist_code below */
-
-#if defined(GEN_TREES_H) || !defined(STDC)
-/* non ANSI compilers may not accept trees.h */
-
-local ct_data static_ltree[L_CODES+2];
-/* The static literal tree. Since the bit lengths are imposed, there is no
- * need for the L_CODES extra codes used during heap construction. However
- * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
- * below).
- */
-
-local ct_data static_dtree[D_CODES];
-/* The static distance tree. (Actually a trivial tree since all codes use
- * 5 bits.)
- */
-
-uch _dist_code[DIST_CODE_LEN];
-/* Distance codes. The first 256 values correspond to the distances
- * 3 .. 258, the last 256 values correspond to the top 8 bits of
- * the 15 bit distances.
- */
-
-uch _length_code[MAX_MATCH-MIN_MATCH+1];
-/* length code for each normalized match length (0 == MIN_MATCH) */
-
-local int base_length[LENGTH_CODES];
-/* First normalized length for each code (0 = MIN_MATCH) */
-
-local int base_dist[D_CODES];
-/* First normalized distance for each code (0 = distance of 1) */
-
-#else
-#  include "trees.h"
-#endif /* GEN_TREES_H */
-
-struct static_tree_desc_s {
-    const ct_data *static_tree;  /* static tree or NULL */
-    const intf *extra_bits;      /* extra bits for each code or NULL */
-    int     extra_base;          /* base index for extra_bits */
-    int     elems;               /* max number of elements in the tree */
-    int     max_length;          /* max bit length for the codes */
-};
-
-local static_tree_desc  static_l_desc =
-{static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS};
-
-local static_tree_desc  static_d_desc =
-{static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS};
-
-local static_tree_desc  static_bl_desc =
-{(const ct_data *)0, extra_blbits, 0,   BL_CODES, MAX_BL_BITS};
-
-/* ===========================================================================
- * Local (static) routines in this file.
- */
-
-local void tr_static_init OF((void));
-local void init_block     OF((deflate_state *s));
-local void pqdownheap     OF((deflate_state *s, ct_data *tree, int k));
-local void gen_bitlen     OF((deflate_state *s, tree_desc *desc));
-local void gen_codes      OF((ct_data *tree, int max_code, ushf *bl_count));
-local void build_tree     OF((deflate_state *s, tree_desc *desc));
-local void scan_tree      OF((deflate_state *s, ct_data *tree, int max_code));
-local void send_tree      OF((deflate_state *s, ct_data *tree, int max_code));
-local int  build_bl_tree  OF((deflate_state *s));
-local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes,
-                              int blcodes));
-local void compress_block OF((deflate_state *s, ct_data *ltree,
-                              ct_data *dtree));
-local void set_data_type  OF((deflate_state *s));
-local unsigned bi_reverse OF((unsigned value, int length));
-local void bi_windup      OF((deflate_state *s));
-local void bi_flush       OF((deflate_state *s));
-local void copy_block     OF((deflate_state *s, charf *buf, unsigned len,
-                              int header));
-
-#ifdef GEN_TREES_H
-local void gen_trees_header OF((void));
-#endif
-
-#ifndef DEBUG
-#  define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len)
-   /* Send a code of the given tree. c and tree must not have side effects */
-
-#else /* DEBUG */
-#  define send_code(s, c, tree) \
-     { if (z_verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \
-       send_bits(s, tree[c].Code, tree[c].Len); }
-#endif
-
-/* ===========================================================================
- * Output a short LSB first on the stream.
- * IN assertion: there is enough room in pendingBuf.
- */
-#define put_short(s, w) { \
-    put_byte(s, (uch)((w) & 0xff)); \
-    put_byte(s, (uch)((ush)(w) >> 8)); \
-}
-
-/* ===========================================================================
- * Send a value on a given number of bits.
- * IN assertion: length <= 16 and value fits in length bits.
- */
-#ifdef DEBUG
-local void send_bits      OF((deflate_state *s, int value, int length));
-
-local void send_bits(s, value, length)
-    deflate_state *s;
-    int value;  /* value to send */
-    int length; /* number of bits */
-{
-    Tracevv((stderr," l %2d v %4x ", length, value));
-    Assert(length > 0 && length <= 15, "invalid length");
-    s->bits_sent += (ulg)length;
-
-    /* If not enough room in bi_buf, use (valid) bits from bi_buf and
-     * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid))
-     * unused bits in value.
-     */
-    if (s->bi_valid > (int)Buf_size - length) {
-        s->bi_buf |= (value << s->bi_valid);
-        put_short(s, s->bi_buf);
-        s->bi_buf = (ush)value >> (Buf_size - s->bi_valid);
-        s->bi_valid += length - Buf_size;
-    } else {
-        s->bi_buf |= value << s->bi_valid;
-        s->bi_valid += length;
-    }
-}
-#else /* !DEBUG */
-
-#define send_bits(s, value, length) \
-{ int len = length;\
-  if (s->bi_valid > (int)Buf_size - len) {\
-    int val = value;\
-    s->bi_buf |= (val << s->bi_valid);\
-    put_short(s, s->bi_buf);\
-    s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\
-    s->bi_valid += len - Buf_size;\
-  } else {\
-    s->bi_buf |= (value) << s->bi_valid;\
-    s->bi_valid += len;\
-  }\
-}
-#endif /* DEBUG */
-
-
-/* the arguments must not have side effects */
-
-/* ===========================================================================
- * Initialize the various 'constant' tables.
- */
-local void tr_static_init()
-{
-#if defined(GEN_TREES_H) || !defined(STDC)
-    static int static_init_done = 0;
-    int n;        /* iterates over tree elements */
-    int bits;     /* bit counter */
-    int length;   /* length value */
-    int code;     /* code value */
-    int dist;     /* distance index */
-    ush bl_count[MAX_BITS+1];
-    /* number of codes at each bit length for an optimal tree */
-
-    if (static_init_done) return;
-
-    /* For some embedded targets, global variables are not initialized: */
-    static_l_desc.static_tree = static_ltree;
-    static_l_desc.extra_bits = extra_lbits;
-    static_d_desc.static_tree = static_dtree;
-    static_d_desc.extra_bits = extra_dbits;
-    static_bl_desc.extra_bits = extra_blbits;
-
-    /* Initialize the mapping length (0..255) -> length code (0..28) */
-    length = 0;
-    for (code = 0; code < LENGTH_CODES-1; code++) {
-        base_length[code] = length;
-        for (n = 0; n < (1<<extra_lbits[code]); n++) {
-            _length_code[length++] = (uch)code;
-        }
-    }
-    Assert (length == 256, "tr_static_init: length != 256");
-    /* Note that the length 255 (match length 258) can be represented
-     * in two different ways: code 284 + 5 bits or code 285, so we
-     * overwrite length_code[255] to use the best encoding:
-     */
-    _length_code[length-1] = (uch)code;
-
-    /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
-    dist = 0;
-    for (code = 0 ; code < 16; code++) {
-        base_dist[code] = dist;
-        for (n = 0; n < (1<<extra_dbits[code]); n++) {
-            _dist_code[dist++] = (uch)code;
-        }
-    }
-    Assert (dist == 256, "tr_static_init: dist != 256");
-    dist >>= 7; /* from now on, all distances are divided by 128 */
-    for ( ; code < D_CODES; code++) {
-        base_dist[code] = dist << 7;
-        for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
-            _dist_code[256 + dist++] = (uch)code;
-        }
-    }
-    Assert (dist == 256, "tr_static_init: 256+dist != 512");
-
-    /* Construct the codes of the static literal tree */
-    for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0;
-    n = 0;
-    while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++;
-    while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++;
-    while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++;
-    while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++;
-    /* Codes 286 and 287 do not exist, but we must include them in the
-     * tree construction to get a canonical Huffman tree (longest code
-     * all ones)
-     */
-    gen_codes((ct_data *)static_ltree, L_CODES+1, bl_count);
-
-    /* The static distance tree is trivial: */
-    for (n = 0; n < D_CODES; n++) {
-        static_dtree[n].Len = 5;
-        static_dtree[n].Code = bi_reverse((unsigned)n, 5);
-    }
-    static_init_done = 1;
-
-#  ifdef GEN_TREES_H
-    gen_trees_header();
-#  endif
-#endif /* defined(GEN_TREES_H) || !defined(STDC) */
-}
-
-/* ===========================================================================
- * Genererate the file trees.h describing the static trees.
- */
-#ifdef GEN_TREES_H
-#  ifndef DEBUG
-#    include <stdio.h>
-#  endif
-
-#  define SEPARATOR(i, last, width) \
-      ((i) == (last)? "\n};\n\n" :    \
-       ((i) % (width) == (width)-1 ? ",\n" : ", "))
-
-void gen_trees_header()
-{
-    FILE *header = fopen("trees.h", "w");
-    int i;
-
-    Assert (header != NULL, "Can't open trees.h");
-    fprintf(header,
-            "/* header created automatically with -DGEN_TREES_H */\n\n");
-
-    fprintf(header, "local const ct_data static_ltree[L_CODES+2] = {\n");
-    for (i = 0; i < L_CODES+2; i++) {
-        fprintf(header, "{{%3u},{%3u}}%s", static_ltree[i].Code,
-                static_ltree[i].Len, SEPARATOR(i, L_CODES+1, 5));
-    }
-
-    fprintf(header, "local const ct_data static_dtree[D_CODES] = {\n");
-    for (i = 0; i < D_CODES; i++) {
-        fprintf(header, "{{%2u},{%2u}}%s", static_dtree[i].Code,
-                static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5));
-    }
-
-    fprintf(header, "const uch _dist_code[DIST_CODE_LEN] = {\n");
-    for (i = 0; i < DIST_CODE_LEN; i++) {
-        fprintf(header, "%2u%s", _dist_code[i],
-                SEPARATOR(i, DIST_CODE_LEN-1, 20));
-    }
-
-    fprintf(header, "const uch _length_code[MAX_MATCH-MIN_MATCH+1]= {\n");
-    for (i = 0; i < MAX_MATCH-MIN_MATCH+1; i++) {
-        fprintf(header, "%2u%s", _length_code[i],
-                SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20));
-    }
-
-    fprintf(header, "local const int base_length[LENGTH_CODES] = {\n");
-    for (i = 0; i < LENGTH_CODES; i++) {
-        fprintf(header, "%1u%s", base_length[i],
-                SEPARATOR(i, LENGTH_CODES-1, 20));
-    }
-
-    fprintf(header, "local const int base_dist[D_CODES] = {\n");
-    for (i = 0; i < D_CODES; i++) {
-        fprintf(header, "%5u%s", base_dist[i],
-                SEPARATOR(i, D_CODES-1, 10));
-    }
-
-    fclose(header);
-}
-#endif /* GEN_TREES_H */
-
-/* ===========================================================================
- * Initialize the tree data structures for a new zlib stream.
- */
-void _tr_init(s)
-    deflate_state *s;
-{
-    tr_static_init();
-
-    s->l_desc.dyn_tree = s->dyn_ltree;
-    s->l_desc.stat_desc = &static_l_desc;
-
-    s->d_desc.dyn_tree = s->dyn_dtree;
-    s->d_desc.stat_desc = &static_d_desc;
-
-    s->bl_desc.dyn_tree = s->bl_tree;
-    s->bl_desc.stat_desc = &static_bl_desc;
-
-    s->bi_buf = 0;
-    s->bi_valid = 0;
-    s->last_eob_len = 8; /* enough lookahead for inflate */
-#ifdef DEBUG
-    s->compressed_len = 0L;
-    s->bits_sent = 0L;
-#endif
-
-    /* Initialize the first block of the first file: */
-    init_block(s);
-}
-
-/* ===========================================================================
- * Initialize a new block.
- */
-local void init_block(s)
-    deflate_state *s;
-{
-    int n; /* iterates over tree elements */
-
-    /* Initialize the trees. */
-    for (n = 0; n < L_CODES;  n++) s->dyn_ltree[n].Freq = 0;
-    for (n = 0; n < D_CODES;  n++) s->dyn_dtree[n].Freq = 0;
-    for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0;
-
-    s->dyn_ltree[END_BLOCK].Freq = 1;
-    s->opt_len = s->static_len = 0L;
-    s->last_lit = s->matches = 0;
-}
-
-#define SMALLEST 1
-/* Index within the heap array of least frequent node in the Huffman tree */
-
-
-/* ===========================================================================
- * Remove the smallest element from the heap and recreate the heap with
- * one less element. Updates heap and heap_len.
- */
-#define pqremove(s, tree, top) \
-{\
-    top = s->heap[SMALLEST]; \
-    s->heap[SMALLEST] = s->heap[s->heap_len--]; \
-    pqdownheap(s, tree, SMALLEST); \
-}
-
-/* ===========================================================================
- * Compares to subtrees, using the tree depth as tie breaker when
- * the subtrees have equal frequency. This minimizes the worst case length.
- */
-#define smaller(tree, n, m, depth) \
-   (tree[n].Freq < tree[m].Freq || \
-   (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m]))
-
-/* ===========================================================================
- * Restore the heap property by moving down the tree starting at node k,
- * exchanging a node with the smallest of its two sons if necessary, stopping
- * when the heap property is re-established (each father smaller than its
- * two sons).
- */
-local void pqdownheap(s, tree, k)
-    deflate_state *s;
-    ct_data *tree;  /* the tree to restore */
-    int k;               /* node to move down */
-{
-    int v = s->heap[k];
-    int j = k << 1;  /* left son of k */
-    while (j <= s->heap_len) {
-        /* Set j to the smallest of the two sons: */
-        if (j < s->heap_len &&
-            smaller(tree, s->heap[j+1], s->heap[j], s->depth)) {
-            j++;
-        }
-        /* Exit if v is smaller than both sons */
-        if (smaller(tree, v, s->heap[j], s->depth)) break;
-
-        /* Exchange v with the smallest son */
-        s->heap[k] = s->heap[j];  k = j;
-
-        /* And continue down the tree, setting j to the left son of k */
-        j <<= 1;
-    }
-    s->heap[k] = v;
-}
-
-/* ===========================================================================
- * Compute the optimal bit lengths for a tree and update the total bit length
- * for the current block.
- * IN assertion: the fields freq and dad are set, heap[heap_max] and
- *    above are the tree nodes sorted by increasing frequency.
- * OUT assertions: the field len is set to the optimal bit length, the
- *     array bl_count contains the frequencies for each bit length.
- *     The length opt_len is updated; static_len is also updated if stree is
- *     not null.
- */
-local void gen_bitlen(s, desc)
-    deflate_state *s;
-    tree_desc *desc;    /* the tree descriptor */
-{
-    ct_data *tree        = desc->dyn_tree;
-    int max_code         = desc->max_code;
-    const ct_data *stree = desc->stat_desc->static_tree;
-    const intf *extra    = desc->stat_desc->extra_bits;
-    int base             = desc->stat_desc->extra_base;
-    int max_length       = desc->stat_desc->max_length;
-    int h;              /* heap index */
-    int n, m;           /* iterate over the tree elements */
-    int bits;           /* bit length */
-    int xbits;          /* extra bits */
-    ush f;              /* frequency */
-    int overflow = 0;   /* number of elements with bit length too large */
-
-    for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0;
-
-    /* In a first pass, compute the optimal bit lengths (which may
-     * overflow in the case of the bit length tree).
-     */
-    tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */
-
-    for (h = s->heap_max+1; h < HEAP_SIZE; h++) {
-        n = s->heap[h];
-        bits = tree[tree[n].Dad].Len + 1;
-        if (bits > max_length) bits = max_length, overflow++;
-        tree[n].Len = (ush)bits;
-        /* We overwrite tree[n].Dad which is no longer needed */
-
-        if (n > max_code) continue; /* not a leaf node */
-
-        s->bl_count[bits]++;
-        xbits = 0;
-        if (n >= base) xbits = extra[n-base];
-        f = tree[n].Freq;
-        s->opt_len += (ulg)f * (bits + xbits);
-        if (stree) s->static_len += (ulg)f * (stree[n].Len + xbits);
-    }
-    if (overflow == 0) return;
-
-    Trace((stderr,"\nbit length overflow\n"));
-    /* This happens for example on obj2 and pic of the Calgary corpus */
-
-    /* Find the first bit length which could increase: */
-    do {
-        bits = max_length-1;
-        while (s->bl_count[bits] == 0) bits--;
-        s->bl_count[bits]--;      /* move one leaf down the tree */
-        s->bl_count[bits+1] += 2; /* move one overflow item as its brother */
-        s->bl_count[max_length]--;
-        /* The brother of the overflow item also moves one step up,
-         * but this does not affect bl_count[max_length]
-         */
-        overflow -= 2;
-    } while (overflow > 0);
-
-    /* Now recompute all bit lengths, scanning in increasing frequency.
-     * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
-     * lengths instead of fixing only the wrong ones. This idea is taken
-     * from 'ar' written by Haruhiko Okumura.)
-     */
-    for (bits = max_length; bits != 0; bits--) {
-        n = s->bl_count[bits];
-        while (n != 0) {
-            m = s->heap[--h];
-            if (m > max_code) continue;
-            if ((unsigned) tree[m].Len != (unsigned) bits) {
-                Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
-                s->opt_len += ((long)bits - (long)tree[m].Len)
-                              *(long)tree[m].Freq;
-                tree[m].Len = (ush)bits;
-            }
-            n--;
-        }
-    }
-}
-
-/* ===========================================================================
- * Generate the codes for a given tree and bit counts (which need not be
- * optimal).
- * IN assertion: the array bl_count contains the bit length statistics for
- * the given tree and the field len is set for all tree elements.
- * OUT assertion: the field code is set for all tree elements of non
- *     zero code length.
- */
-local void gen_codes (tree, max_code, bl_count)
-    ct_data *tree;             /* the tree to decorate */
-    int max_code;              /* largest code with non zero frequency */
-    ushf *bl_count;            /* number of codes at each bit length */
-{
-    ush next_code[MAX_BITS+1]; /* next code value for each bit length */
-    ush code = 0;              /* running code value */
-    int bits;                  /* bit index */
-    int n;                     /* code index */
-
-    /* The distribution counts are first used to generate the code values
-     * without bit reversal.
-     */
-    for (bits = 1; bits <= MAX_BITS; bits++) {
-        next_code[bits] = code = (code + bl_count[bits-1]) << 1;
-    }
-    /* Check that the bit counts in bl_count are consistent. The last code
-     * must be all ones.
-     */
-    Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
-            "inconsistent bit counts");
-    Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
-
-    for (n = 0;  n <= max_code; n++) {
-        int len = tree[n].Len;
-        if (len == 0) continue;
-        /* Now reverse the bits */
-        tree[n].Code = bi_reverse(next_code[len]++, len);
-
-        Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
-             n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
-    }
-}
-
-/* ===========================================================================
- * Construct one Huffman tree and assigns the code bit strings and lengths.
- * Update the total bit length for the current block.
- * IN assertion: the field freq is set for all tree elements.
- * OUT assertions: the fields len and code are set to the optimal bit length
- *     and corresponding code. The length opt_len is updated; static_len is
- *     also updated if stree is not null. The field max_code is set.
- */
-local void build_tree(s, desc)
-    deflate_state *s;
-    tree_desc *desc; /* the tree descriptor */
-{
-    ct_data *tree         = desc->dyn_tree;
-    const ct_data *stree  = desc->stat_desc->static_tree;
-    int elems             = desc->stat_desc->elems;
-    int n, m;          /* iterate over heap elements */
-    int max_code = -1; /* largest code with non zero frequency */
-    int node;          /* new node being created */
-
-    /* Construct the initial heap, with least frequent element in
-     * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
-     * heap[0] is not used.
-     */
-    s->heap_len = 0, s->heap_max = HEAP_SIZE;
-
-    for (n = 0; n < elems; n++) {
-        if (tree[n].Freq != 0) {
-            s->heap[++(s->heap_len)] = max_code = n;
-            s->depth[n] = 0;
-        } else {
-            tree[n].Len = 0;
-        }
-    }
-
-    /* The pkzip format requires that at least one distance code exists,
-     * and that at least one bit should be sent even if there is only one
-     * possible code. So to avoid special checks later on we force at least
-     * two codes of non zero frequency.
-     */
-    while (s->heap_len < 2) {
-        node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0);
-        tree[node].Freq = 1;
-        s->depth[node] = 0;
-        s->opt_len--; if (stree) s->static_len -= stree[node].Len;
-        /* node is 0 or 1 so it does not have extra bits */
-    }
-    desc->max_code = max_code;
-
-    /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
-     * establish sub-heaps of increasing lengths:
-     */
-    for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n);
-
-    /* Construct the Huffman tree by repeatedly combining the least two
-     * frequent nodes.
-     */
-    node = elems;              /* next internal node of the tree */
-    do {
-        pqremove(s, tree, n);  /* n = node of least frequency */
-        m = s->heap[SMALLEST]; /* m = node of next least frequency */
-
-        s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */
-        s->heap[--(s->heap_max)] = m;
-
-        /* Create a new node father of n and m */
-        tree[node].Freq = tree[n].Freq + tree[m].Freq;
-        s->depth[node] = (uch)((s->depth[n] >= s->depth[m] ?
-                                s->depth[n] : s->depth[m]) + 1);
-        tree[n].Dad = tree[m].Dad = (ush)node;
-#ifdef DUMP_BL_TREE
-        if (tree == s->bl_tree) {
-            fprintf(stderr,"\nnode %d(%d), sons %d(%d) %d(%d)",
-                    node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq);
-        }
-#endif
-        /* and insert the new node in the heap */
-        s->heap[SMALLEST] = node++;
-        pqdownheap(s, tree, SMALLEST);
-
-    } while (s->heap_len >= 2);
-
-    s->heap[--(s->heap_max)] = s->heap[SMALLEST];
-
-    /* At this point, the fields freq and dad are set. We can now
-     * generate the bit lengths.
-     */
-    gen_bitlen(s, (tree_desc *)desc);
-
-    /* The field len is now set, we can generate the bit codes */
-    gen_codes ((ct_data *)tree, max_code, s->bl_count);
-}
-
-/* ===========================================================================
- * Scan a literal or distance tree to determine the frequencies of the codes
- * in the bit length tree.
- */
-local void scan_tree (s, tree, max_code)
-    deflate_state *s;
-    ct_data *tree;   /* the tree to be scanned */
-    int max_code;    /* and its largest code of non zero frequency */
-{
-    int n;                     /* iterates over all tree elements */
-    int prevlen = -1;          /* last emitted length */
-    int curlen;                /* length of current code */
-    int nextlen = tree[0].Len; /* length of next code */
-    int count = 0;             /* repeat count of the current code */
-    int max_count = 7;         /* max repeat count */
-    int min_count = 4;         /* min repeat count */
-
-    if (nextlen == 0) max_count = 138, min_count = 3;
-    tree[max_code+1].Len = (ush)0xffff; /* guard */
-
-    for (n = 0; n <= max_code; n++) {
-        curlen = nextlen; nextlen = tree[n+1].Len;
-        if (++count < max_count && curlen == nextlen) {
-            continue;
-        } else if (count < min_count) {
-            s->bl_tree[curlen].Freq += count;
-        } else if (curlen != 0) {
-            if (curlen != prevlen) s->bl_tree[curlen].Freq++;
-            s->bl_tree[REP_3_6].Freq++;
-        } else if (count <= 10) {
-            s->bl_tree[REPZ_3_10].Freq++;
-        } else {
-            s->bl_tree[REPZ_11_138].Freq++;
-        }
-        count = 0; prevlen = curlen;
-        if (nextlen == 0) {
-            max_count = 138, min_count = 3;
-        } else if (curlen == nextlen) {
-            max_count = 6, min_count = 3;
-        } else {
-            max_count = 7, min_count = 4;
-        }
-    }
-}
-
-/* ===========================================================================
- * Send a literal or distance tree in compressed form, using the codes in
- * bl_tree.
- */
-local void send_tree (s, tree, max_code)
-    deflate_state *s;
-    ct_data *tree; /* the tree to be scanned */
-    int max_code;       /* and its largest code of non zero frequency */
-{
-    int n;                     /* iterates over all tree elements */
-    int prevlen = -1;          /* last emitted length */
-    int curlen;                /* length of current code */
-    int nextlen = tree[0].Len; /* length of next code */
-    int count = 0;             /* repeat count of the current code */
-    int max_count = 7;         /* max repeat count */
-    int min_count = 4;         /* min repeat count */
-
-    /* tree[max_code+1].Len = -1; */  /* guard already set */
-    if (nextlen == 0) max_count = 138, min_count = 3;
-
-    for (n = 0; n <= max_code; n++) {
-        curlen = nextlen; nextlen = tree[n+1].Len;
-        if (++count < max_count && curlen == nextlen) {
-            continue;
-        } else if (count < min_count) {
-            do { send_code(s, curlen, s->bl_tree); } while (--count != 0);
-
-        } else if (curlen != 0) {
-            if (curlen != prevlen) {
-                send_code(s, curlen, s->bl_tree); count--;
-            }
-            Assert(count >= 3 && count <= 6, " 3_6?");
-            send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2);
-
-        } else if (count <= 10) {
-            send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3);
-
-        } else {
-            send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7);
-        }
-        count = 0; prevlen = curlen;
-        if (nextlen == 0) {
-            max_count = 138, min_count = 3;
-        } else if (curlen == nextlen) {
-            max_count = 6, min_count = 3;
-        } else {
-            max_count = 7, min_count = 4;
-        }
-    }
-}
-
-/* ===========================================================================
- * Construct the Huffman tree for the bit lengths and return the index in
- * bl_order of the last bit length code to send.
- */
-local int build_bl_tree(s)
-    deflate_state *s;
-{
-    int max_blindex;  /* index of last bit length code of non zero freq */
-
-    /* Determine the bit length frequencies for literal and distance trees */
-    scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code);
-    scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code);
-
-    /* Build the bit length tree: */
-    build_tree(s, (tree_desc *)(&(s->bl_desc)));
-    /* opt_len now includes the length of the tree representations, except
-     * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
-     */
-
-    /* Determine the number of bit length codes to send. The pkzip format
-     * requires that at least 4 bit length codes be sent. (appnote.txt says
-     * 3 but the actual value used is 4.)
-     */
-    for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) {
-        if (s->bl_tree[bl_order[max_blindex]].Len != 0) break;
-    }
-    /* Update opt_len to include the bit length tree and counts */
-    s->opt_len += 3*(max_blindex+1) + 5+5+4;
-    Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
-            s->opt_len, s->static_len));
-
-    return max_blindex;
-}
-
-/* ===========================================================================
- * Send the header for a block using dynamic Huffman trees: the counts, the
- * lengths of the bit length codes, the literal tree and the distance tree.
- * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
- */
-local void send_all_trees(s, lcodes, dcodes, blcodes)
-    deflate_state *s;
-    int lcodes, dcodes, blcodes; /* number of codes for each tree */
-{
-    int rank;                    /* index in bl_order */
-
-    Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
-    Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
-            "too many codes");
-    Tracev((stderr, "\nbl counts: "));
-    send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */
-    send_bits(s, dcodes-1,   5);
-    send_bits(s, blcodes-4,  4); /* not -3 as stated in appnote.txt */
-    for (rank = 0; rank < blcodes; rank++) {
-        Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
-        send_bits(s, s->bl_tree[bl_order[rank]].Len, 3);
-    }
-    Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
-
-    send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */
-    Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
-
-    send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */
-    Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
-}
-
-/* ===========================================================================
- * Send a stored block
- */
-void _tr_stored_block(s, buf, stored_len, eof)
-    deflate_state *s;
-    charf *buf;       /* input block */
-    ulg stored_len;   /* length of input block */
-    int eof;          /* true if this is the last block for a file */
-{
-    send_bits(s, (STORED_BLOCK<<1)+eof, 3);  /* send block type */
-#ifdef DEBUG
-    s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
-    s->compressed_len += (stored_len + 4) << 3;
-#endif
-    copy_block(s, buf, (unsigned)stored_len, 1); /* with header */
-}
-
-/* ===========================================================================
- * Send one empty static block to give enough lookahead for inflate.
- * This takes 10 bits, of which 7 may remain in the bit buffer.
- * The current inflate code requires 9 bits of lookahead. If the
- * last two codes for the previous block (real code plus EOB) were coded
- * on 5 bits or less, inflate may have only 5+3 bits of lookahead to decode
- * the last real code. In this case we send two empty static blocks instead
- * of one. (There are no problems if the previous block is stored or fixed.)
- * To simplify the code, we assume the worst case of last real code encoded
- * on one bit only.
- */
-void _tr_align(s)
-    deflate_state *s;
-{
-    send_bits(s, STATIC_TREES<<1, 3);
-    send_code(s, END_BLOCK, static_ltree);
-#ifdef DEBUG
-    s->compressed_len += 10L; /* 3 for block type, 7 for EOB */
-#endif
-    bi_flush(s);
-    /* Of the 10 bits for the empty block, we have already sent
-     * (10 - bi_valid) bits. The lookahead for the last real code (before
-     * the EOB of the previous block) was thus at least one plus the length
-     * of the EOB plus what we have just sent of the empty static block.
-     */
-    if (1 + s->last_eob_len + 10 - s->bi_valid < 9) {
-        send_bits(s, STATIC_TREES<<1, 3);
-        send_code(s, END_BLOCK, static_ltree);
-#ifdef DEBUG
-        s->compressed_len += 10L;
-#endif
-        bi_flush(s);
-    }
-    s->last_eob_len = 7;
-}
-
-/* ===========================================================================
- * Determine the best encoding for the current block: dynamic trees, static
- * trees or store, and output the encoded block to the zip file.
- */
-void _tr_flush_block(s, buf, stored_len, eof)
-    deflate_state *s;
-    charf *buf;       /* input block, or NULL if too old */
-    ulg stored_len;   /* length of input block */
-    int eof;          /* true if this is the last block for a file */
-{
-    ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */
-    int max_blindex = 0;  /* index of last bit length code of non zero freq */
-
-    /* Build the Huffman trees unless a stored block is forced */
-    if (s->level > 0) {
-
-        /* Check if the file is binary or text */
-        if (stored_len > 0 && s->strm->data_type == Z_UNKNOWN)
-            set_data_type(s);
-
-        /* Construct the literal and distance trees */
-        build_tree(s, (tree_desc *)(&(s->l_desc)));
-        Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
-                s->static_len));
-
-        build_tree(s, (tree_desc *)(&(s->d_desc)));
-        Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
-                s->static_len));
-        /* At this point, opt_len and static_len are the total bit lengths of
-         * the compressed block data, excluding the tree representations.
-         */
-
-        /* Build the bit length tree for the above two trees, and get the index
-         * in bl_order of the last bit length code to send.
-         */
-        max_blindex = build_bl_tree(s);
-
-        /* Determine the best encoding. Compute the block lengths in bytes. */
-        opt_lenb = (s->opt_len+3+7)>>3;
-        static_lenb = (s->static_len+3+7)>>3;
-
-        Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
-                opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
-                s->last_lit));
-
-        if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
-
-    } else {
-        Assert(buf != (char*)0, "lost buf");
-        opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
-    }
-
-#ifdef FORCE_STORED
-    if (buf != (char*)0) { /* force stored block */
-#else
-    if (stored_len+4 <= opt_lenb && buf != (char*)0) {
-                       /* 4: two words for the lengths */
-#endif
-        /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
-         * Otherwise we can't have processed more than WSIZE input bytes since
-         * the last block flush, because compression would have been
-         * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
-         * transform a block into a stored block.
-         */
-        _tr_stored_block(s, buf, stored_len, eof);
-
-#ifdef FORCE_STATIC
-    } else if (static_lenb >= 0) { /* force static trees */
-#else
-    } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) {
-#endif
-        send_bits(s, (STATIC_TREES<<1)+eof, 3);
-        compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree);
-#ifdef DEBUG
-        s->compressed_len += 3 + s->static_len;
-#endif
-    } else {
-        send_bits(s, (DYN_TREES<<1)+eof, 3);
-        send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,
-                       max_blindex+1);
-        compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree);
-#ifdef DEBUG
-        s->compressed_len += 3 + s->opt_len;
-#endif
-    }
-    Assert (s->compressed_len == s->bits_sent, "bad compressed size");
-    /* The above check is made mod 2^32, for files larger than 512 MB
-     * and uLong implemented on 32 bits.
-     */
-    init_block(s);
-
-    if (eof) {
-        bi_windup(s);
-#ifdef DEBUG
-        s->compressed_len += 7;  /* align on byte boundary */
-#endif
-    }
-    Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
-           s->compressed_len-7*eof));
-}
-
-/* ===========================================================================
- * Save the match info and tally the frequency counts. Return true if
- * the current block must be flushed.
- */
-int _tr_tally (s, dist, lc)
-    deflate_state *s;
-    unsigned dist;  /* distance of matched string */
-    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
-{
-    s->d_buf[s->last_lit] = (ush)dist;
-    s->l_buf[s->last_lit++] = (uch)lc;
-    if (dist == 0) {
-        /* lc is the unmatched char */
-        s->dyn_ltree[lc].Freq++;
-    } else {
-        s->matches++;
-        /* Here, lc is the match length - MIN_MATCH */
-        dist--;             /* dist = match distance - 1 */
-        Assert((ush)dist < (ush)MAX_DIST(s) &&
-               (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
-               (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");
-
-        s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++;
-        s->dyn_dtree[d_code(dist)].Freq++;
-    }
-
-#ifdef TRUNCATE_BLOCK
-    /* Try to guess if it is profitable to stop the current block here */
-    if ((s->last_lit & 0x1fff) == 0 && s->level > 2) {
-        /* Compute an upper bound for the compressed length */
-        ulg out_length = (ulg)s->last_lit*8L;
-        ulg in_length = (ulg)((long)s->strstart - s->block_start);
-        int dcode;
-        for (dcode = 0; dcode < D_CODES; dcode++) {
-            out_length += (ulg)s->dyn_dtree[dcode].Freq *
-                (5L+extra_dbits[dcode]);
-        }
-        out_length >>= 3;
-        Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
-               s->last_lit, in_length, out_length,
-               100L - out_length*100L/in_length));
-        if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
-    }
-#endif
-    return (s->last_lit == s->lit_bufsize-1);
-    /* We avoid equality with lit_bufsize because of wraparound at 64K
-     * on 16 bit machines and because stored blocks are restricted to
-     * 64K-1 bytes.
-     */
-}
-
-/* ===========================================================================
- * Send the block data compressed using the given Huffman trees
- */
-local void compress_block(s, ltree, dtree)
-    deflate_state *s;
-    ct_data *ltree; /* literal tree */
-    ct_data *dtree; /* distance tree */
-{
-    unsigned dist;      /* distance of matched string */
-    int lc;             /* match length or unmatched char (if dist == 0) */
-    unsigned lx = 0;    /* running index in l_buf */
-    unsigned code;      /* the code to send */
-    int extra;          /* number of extra bits to send */
-
-    if (s->last_lit != 0) do {
-        dist = s->d_buf[lx];
-        lc = s->l_buf[lx++];
-        if (dist == 0) {
-            send_code(s, lc, ltree); /* send a literal byte */
-            Tracecv(isgraph(lc), (stderr," '%c' ", lc));
-        } else {
-            /* Here, lc is the match length - MIN_MATCH */
-            code = _length_code[lc];
-            send_code(s, code+LITERALS+1, ltree); /* send the length code */
-            extra = extra_lbits[code];
-            if (extra != 0) {
-                lc -= base_length[code];
-                send_bits(s, lc, extra);       /* send the extra length bits */
-            }
-            dist--; /* dist is now the match distance - 1 */
-            code = d_code(dist);
-            Assert (code < D_CODES, "bad d_code");
-
-            send_code(s, code, dtree);       /* send the distance code */
-            extra = extra_dbits[code];
-            if (extra != 0) {
-                dist -= base_dist[code];
-                send_bits(s, dist, extra);   /* send the extra distance bits */
-            }
-        } /* literal or match pair ? */
-
-        /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
-        Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
-               "pendingBuf overflow");
-
-    } while (lx < s->last_lit);
-
-    send_code(s, END_BLOCK, ltree);
-    s->last_eob_len = ltree[END_BLOCK].Len;
-}
-
-/* ===========================================================================
- * Set the data type to BINARY or TEXT, using a crude approximation:
- * set it to Z_TEXT if all symbols are either printable characters (33 to 255)
- * or white spaces (9 to 13, or 32); or set it to Z_BINARY otherwise.
- * IN assertion: the fields Freq of dyn_ltree are set.
- */
-local void set_data_type(s)
-    deflate_state *s;
-{
-    int n;
-
-    for (n = 0; n < 9; n++)
-        if (s->dyn_ltree[n].Freq != 0)
-            break;
-    if (n == 9)
-        for (n = 14; n < 32; n++)
-            if (s->dyn_ltree[n].Freq != 0)
-                break;
-    s->strm->data_type = (n == 32) ? Z_TEXT : Z_BINARY;
-}
-
-/* ===========================================================================
- * Reverse the first len bits of a code, using straightforward code (a faster
- * method would use a table)
- * IN assertion: 1 <= len <= 15
- */
-local unsigned bi_reverse(code, len)
-    unsigned code; /* the value to invert */
-    int len;       /* its bit length */
-{
-    register unsigned res = 0;
-    do {
-        res |= code & 1;
-        code >>= 1, res <<= 1;
-    } while (--len > 0);
-    return res >> 1;
-}
-
-/* ===========================================================================
- * Flush the bit buffer, keeping at most 7 bits in it.
- */
-local void bi_flush(s)
-    deflate_state *s;
-{
-    if (s->bi_valid == 16) {
-        put_short(s, s->bi_buf);
-        s->bi_buf = 0;
-        s->bi_valid = 0;
-    } else if (s->bi_valid >= 8) {
-        put_byte(s, (Byte)s->bi_buf);
-        s->bi_buf >>= 8;
-        s->bi_valid -= 8;
-    }
-}
-
-/* ===========================================================================
- * Flush the bit buffer and align the output on a byte boundary
- */
-local void bi_windup(s)
-    deflate_state *s;
-{
-    if (s->bi_valid > 8) {
-        put_short(s, s->bi_buf);
-    } else if (s->bi_valid > 0) {
-        put_byte(s, (Byte)s->bi_buf);
-    }
-    s->bi_buf = 0;
-    s->bi_valid = 0;
-#ifdef DEBUG
-    s->bits_sent = (s->bits_sent+7) & ~7;
-#endif
-}
-
-/* ===========================================================================
- * Copy a stored block, storing first the length and its
- * one's complement if requested.
- */
-local void copy_block(s, buf, len, header)
-    deflate_state *s;
-    charf    *buf;    /* the input data */
-    unsigned len;     /* its length */
-    int      header;  /* true if block header must be written */
-{
-    bi_windup(s);        /* align on byte boundary */
-    s->last_eob_len = 8; /* enough lookahead for inflate */
-
-    if (header) {
-        put_short(s, (ush)len);
-        put_short(s, (ush)~len);
-#ifdef DEBUG
-        s->bits_sent += 2*16;
-#endif
-    }
-#ifdef DEBUG
-    s->bits_sent += (ulg)len<<3;
-#endif
-    while (len--) {
-        put_byte(s, *buf++);
-    }
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/trees.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/trees.h
deleted file mode 100644
index 1ca868b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/trees.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/* header created automatically with -DGEN_TREES_H */
-
-local const ct_data static_ltree[L_CODES+2] = {
-{{ 12},{  8}}, {{140},{  8}}, {{ 76},{  8}}, {{204},{  8}}, {{ 44},{  8}},
-{{172},{  8}}, {{108},{  8}}, {{236},{  8}}, {{ 28},{  8}}, {{156},{  8}},
-{{ 92},{  8}}, {{220},{  8}}, {{ 60},{  8}}, {{188},{  8}}, {{124},{  8}},
-{{252},{  8}}, {{  2},{  8}}, {{130},{  8}}, {{ 66},{  8}}, {{194},{  8}},
-{{ 34},{  8}}, {{162},{  8}}, {{ 98},{  8}}, {{226},{  8}}, {{ 18},{  8}},
-{{146},{  8}}, {{ 82},{  8}}, {{210},{  8}}, {{ 50},{  8}}, {{178},{  8}},
-{{114},{  8}}, {{242},{  8}}, {{ 10},{  8}}, {{138},{  8}}, {{ 74},{  8}},
-{{202},{  8}}, {{ 42},{  8}}, {{170},{  8}}, {{106},{  8}}, {{234},{  8}},
-{{ 26},{  8}}, {{154},{  8}}, {{ 90},{  8}}, {{218},{  8}}, {{ 58},{  8}},
-{{186},{  8}}, {{122},{  8}}, {{250},{  8}}, {{  6},{  8}}, {{134},{  8}},
-{{ 70},{  8}}, {{198},{  8}}, {{ 38},{  8}}, {{166},{  8}}, {{102},{  8}},
-{{230},{  8}}, {{ 22},{  8}}, {{150},{  8}}, {{ 86},{  8}}, {{214},{  8}},
-{{ 54},{  8}}, {{182},{  8}}, {{118},{  8}}, {{246},{  8}}, {{ 14},{  8}},
-{{142},{  8}}, {{ 78},{  8}}, {{206},{  8}}, {{ 46},{  8}}, {{174},{  8}},
-{{110},{  8}}, {{238},{  8}}, {{ 30},{  8}}, {{158},{  8}}, {{ 94},{  8}},
-{{222},{  8}}, {{ 62},{  8}}, {{190},{  8}}, {{126},{  8}}, {{254},{  8}},
-{{  1},{  8}}, {{129},{  8}}, {{ 65},{  8}}, {{193},{  8}}, {{ 33},{  8}},
-{{161},{  8}}, {{ 97},{  8}}, {{225},{  8}}, {{ 17},{  8}}, {{145},{  8}},
-{{ 81},{  8}}, {{209},{  8}}, {{ 49},{  8}}, {{177},{  8}}, {{113},{  8}},
-{{241},{  8}}, {{  9},{  8}}, {{137},{  8}}, {{ 73},{  8}}, {{201},{  8}},
-{{ 41},{  8}}, {{169},{  8}}, {{105},{  8}}, {{233},{  8}}, {{ 25},{  8}},
-{{153},{  8}}, {{ 89},{  8}}, {{217},{  8}}, {{ 57},{  8}}, {{185},{  8}},
-{{121},{  8}}, {{249},{  8}}, {{  5},{  8}}, {{133},{  8}}, {{ 69},{  8}},
-{{197},{  8}}, {{ 37},{  8}}, {{165},{  8}}, {{101},{  8}}, {{229},{  8}},
-{{ 21},{  8}}, {{149},{  8}}, {{ 85},{  8}}, {{213},{  8}}, {{ 53},{  8}},
-{{181},{  8}}, {{117},{  8}}, {{245},{  8}}, {{ 13},{  8}}, {{141},{  8}},
-{{ 77},{  8}}, {{205},{  8}}, {{ 45},{  8}}, {{173},{  8}}, {{109},{  8}},
-{{237},{  8}}, {{ 29},{  8}}, {{157},{  8}}, {{ 93},{  8}}, {{221},{  8}},
-{{ 61},{  8}}, {{189},{  8}}, {{125},{  8}}, {{253},{  8}}, {{ 19},{  9}},
-{{275},{  9}}, {{147},{  9}}, {{403},{  9}}, {{ 83},{  9}}, {{339},{  9}},
-{{211},{  9}}, {{467},{  9}}, {{ 51},{  9}}, {{307},{  9}}, {{179},{  9}},
-{{435},{  9}}, {{115},{  9}}, {{371},{  9}}, {{243},{  9}}, {{499},{  9}},
-{{ 11},{  9}}, {{267},{  9}}, {{139},{  9}}, {{395},{  9}}, {{ 75},{  9}},
-{{331},{  9}}, {{203},{  9}}, {{459},{  9}}, {{ 43},{  9}}, {{299},{  9}},
-{{171},{  9}}, {{427},{  9}}, {{107},{  9}}, {{363},{  9}}, {{235},{  9}},
-{{491},{  9}}, {{ 27},{  9}}, {{283},{  9}}, {{155},{  9}}, {{411},{  9}},
-{{ 91},{  9}}, {{347},{  9}}, {{219},{  9}}, {{475},{  9}}, {{ 59},{  9}},
-{{315},{  9}}, {{187},{  9}}, {{443},{  9}}, {{123},{  9}}, {{379},{  9}},
-{{251},{  9}}, {{507},{  9}}, {{  7},{  9}}, {{263},{  9}}, {{135},{  9}},
-{{391},{  9}}, {{ 71},{  9}}, {{327},{  9}}, {{199},{  9}}, {{455},{  9}},
-{{ 39},{  9}}, {{295},{  9}}, {{167},{  9}}, {{423},{  9}}, {{103},{  9}},
-{{359},{  9}}, {{231},{  9}}, {{487},{  9}}, {{ 23},{  9}}, {{279},{  9}},
-{{151},{  9}}, {{407},{  9}}, {{ 87},{  9}}, {{343},{  9}}, {{215},{  9}},
-{{471},{  9}}, {{ 55},{  9}}, {{311},{  9}}, {{183},{  9}}, {{439},{  9}},
-{{119},{  9}}, {{375},{  9}}, {{247},{  9}}, {{503},{  9}}, {{ 15},{  9}},
-{{271},{  9}}, {{143},{  9}}, {{399},{  9}}, {{ 79},{  9}}, {{335},{  9}},
-{{207},{  9}}, {{463},{  9}}, {{ 47},{  9}}, {{303},{  9}}, {{175},{  9}},
-{{431},{  9}}, {{111},{  9}}, {{367},{  9}}, {{239},{  9}}, {{495},{  9}},
-{{ 31},{  9}}, {{287},{  9}}, {{159},{  9}}, {{415},{  9}}, {{ 95},{  9}},
-{{351},{  9}}, {{223},{  9}}, {{479},{  9}}, {{ 63},{  9}}, {{319},{  9}},
-{{191},{  9}}, {{447},{  9}}, {{127},{  9}}, {{383},{  9}}, {{255},{  9}},
-{{511},{  9}}, {{  0},{  7}}, {{ 64},{  7}}, {{ 32},{  7}}, {{ 96},{  7}},
-{{ 16},{  7}}, {{ 80},{  7}}, {{ 48},{  7}}, {{112},{  7}}, {{  8},{  7}},
-{{ 72},{  7}}, {{ 40},{  7}}, {{104},{  7}}, {{ 24},{  7}}, {{ 88},{  7}},
-{{ 56},{  7}}, {{120},{  7}}, {{  4},{  7}}, {{ 68},{  7}}, {{ 36},{  7}},
-{{100},{  7}}, {{ 20},{  7}}, {{ 84},{  7}}, {{ 52},{  7}}, {{116},{  7}},
-{{  3},{  8}}, {{131},{  8}}, {{ 67},{  8}}, {{195},{  8}}, {{ 35},{  8}},
-{{163},{  8}}, {{ 99},{  8}}, {{227},{  8}}
-};
-
-local const ct_data static_dtree[D_CODES] = {
-{{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}},
-{{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}},
-{{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}},
-{{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}},
-{{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}},
-{{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}}
-};
-
-const uch _dist_code[DIST_CODE_LEN] = {
- 0,  1,  2,  3,  4,  4,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,  8,  8,  8,  8,
- 8,  8,  8,  8,  9,  9,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 10, 10,
-10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13,
-13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
-15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,  0,  0, 16, 17,
-18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22,
-23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
-26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
-26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27,
-27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
-27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
-};
-
-const uch _length_code[MAX_MATCH-MIN_MATCH+1]= {
- 0,  1,  2,  3,  4,  5,  6,  7,  8,  8,  9,  9, 10, 10, 11, 11, 12, 12, 12, 12,
-13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16,
-17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19,
-19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
-21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22,
-22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23,
-23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
-25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26,
-26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
-26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
-27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28
-};
-
-local const int base_length[LENGTH_CODES] = {
-0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56,
-64, 80, 96, 112, 128, 160, 192, 224, 0
-};
-
-local const int base_dist[D_CODES] = {
-    0,     1,     2,     3,     4,     6,     8,    12,    16,    24,
-   32,    48,    64,    96,   128,   192,   256,   384,   512,   768,
- 1024,  1536,  2048,  3072,  4096,  6144,  8192, 12288, 16384, 24576
-};
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/uncompr.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/uncompr.c
deleted file mode 100644
index ad6db0a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/uncompr.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* uncompr.c -- decompress a memory buffer
- * Copyright (C) 1995-2003 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* @(#) $Id$ */
-
-#define ZLIB_INTERNAL
-#include "zlib.h"
-
-/* ===========================================================================
-     Decompresses the source buffer into the destination buffer.  sourceLen is
-   the byte length of the source buffer. Upon entry, destLen is the total
-   size of the destination buffer, which must be large enough to hold the
-   entire uncompressed data. (The size of the uncompressed data must have
-   been saved previously by the compressor and transmitted to the decompressor
-   by some mechanism outside the scope of this compression library.)
-   Upon exit, destLen is the actual size of the compressed buffer.
-     This function can be used to decompress a whole file at once if the
-   input file is mmap'ed.
-
-     uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_BUF_ERROR if there was not enough room in the output
-   buffer, or Z_DATA_ERROR if the input data was corrupted.
-*/
-int ZEXPORT uncompress (dest, destLen, source, sourceLen)
-    Bytef *dest;
-    uLongf *destLen;
-    const Bytef *source;
-    uLong sourceLen;
-{
-    z_stream stream;
-    int err;
-
-    stream.next_in = (Bytef*)source;
-    stream.avail_in = (uInt)sourceLen;
-    /* Check for source > 64K on 16-bit machine: */
-    if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
-
-    stream.next_out = dest;
-    stream.avail_out = (uInt)*destLen;
-    if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
-
-    stream.zalloc = (alloc_func)0;
-    stream.zfree = (free_func)0;
-
-    err = inflateInit(&stream);
-    if (err != Z_OK) return err;
-
-    err = inflate(&stream, Z_FINISH);
-    if (err != Z_STREAM_END) {
-        inflateEnd(&stream);
-        if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0))
-            return Z_DATA_ERROR;
-        return err;
-    }
-    *destLen = stream.total_out;
-
-    err = inflateEnd(&stream);
-    return err;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zconf.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zconf.h
deleted file mode 100644
index e3b0c96..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zconf.h
+++ /dev/null
@@ -1,332 +0,0 @@
-/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2005 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* @(#) $Id$ */
-
-#ifndef ZCONF_H
-#define ZCONF_H
-
-/*
- * If you *really* need a unique prefix for all types and library functions,
- * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
- */
-#ifdef Z_PREFIX
-#  define deflateInit_          z_deflateInit_
-#  define deflate               z_deflate
-#  define deflateEnd            z_deflateEnd
-#  define inflateInit_          z_inflateInit_
-#  define inflate               z_inflate
-#  define inflateEnd            z_inflateEnd
-#  define deflateInit2_         z_deflateInit2_
-#  define deflateSetDictionary  z_deflateSetDictionary
-#  define deflateCopy           z_deflateCopy
-#  define deflateReset          z_deflateReset
-#  define deflateParams         z_deflateParams
-#  define deflateBound          z_deflateBound
-#  define deflatePrime          z_deflatePrime
-#  define inflateInit2_         z_inflateInit2_
-#  define inflateSetDictionary  z_inflateSetDictionary
-#  define inflateSync           z_inflateSync
-#  define inflateSyncPoint      z_inflateSyncPoint
-#  define inflateCopy           z_inflateCopy
-#  define inflateReset          z_inflateReset
-#  define inflateBack           z_inflateBack
-#  define inflateBackEnd        z_inflateBackEnd
-#  define compress              z_compress
-#  define compress2             z_compress2
-#  define compressBound         z_compressBound
-#  define uncompress            z_uncompress
-#  define adler32               z_adler32
-#  define crc32                 z_crc32
-#  define get_crc_table         z_get_crc_table
-#  define zError                z_zError
-
-#  define alloc_func            z_alloc_func
-#  define free_func             z_free_func
-#  define in_func               z_in_func
-#  define out_func              z_out_func
-#  define Byte                  z_Byte
-#  define uInt                  z_uInt
-#  define uLong                 z_uLong
-#  define Bytef                 z_Bytef
-#  define charf                 z_charf
-#  define intf                  z_intf
-#  define uIntf                 z_uIntf
-#  define uLongf                z_uLongf
-#  define voidpf                z_voidpf
-#  define voidp                 z_voidp
-#endif
-
-#if defined(__MSDOS__) && !defined(MSDOS)
-#  define MSDOS
-#endif
-#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
-#  define OS2
-#endif
-#if defined(_WINDOWS) && !defined(WINDOWS)
-#  define WINDOWS
-#endif
-#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
-#  ifndef WIN32
-#    define WIN32
-#  endif
-#endif
-#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
-#  if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
-#    ifndef SYS16BIT
-#      define SYS16BIT
-#    endif
-#  endif
-#endif
-
-/*
- * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
- * than 64k bytes at a time (needed on systems with 16-bit int).
- */
-#ifdef SYS16BIT
-#  define MAXSEG_64K
-#endif
-#ifdef MSDOS
-#  define UNALIGNED_OK
-#endif
-
-#ifdef __STDC_VERSION__
-#  ifndef STDC
-#    define STDC
-#  endif
-#  if __STDC_VERSION__ >= 199901L
-#    ifndef STDC99
-#      define STDC99
-#    endif
-#  endif
-#endif
-#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
-#  define STDC
-#endif
-
-#if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */
-#  define STDC
-#endif
-
-#ifndef STDC
-#  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
-#    define const       /* note: need a more gentle solution here */
-#  endif
-#endif
-
-/* Some Mac compilers merge all .h files incorrectly: */
-#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
-#  define NO_DUMMY_DECL
-#endif
-
-/* Maximum value for memLevel in deflateInit2 */
-#ifndef MAX_MEM_LEVEL
-#  ifdef MAXSEG_64K
-#    define MAX_MEM_LEVEL 8
-#  else
-#    define MAX_MEM_LEVEL 9
-#  endif
-#endif
-
-/* Maximum value for windowBits in deflateInit2 and inflateInit2.
- * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
- * created by gzip. (Files created by minigzip can still be extracted by
- * gzip.)
- */
-#ifndef MAX_WBITS
-#  define MAX_WBITS   15 /* 32K LZ77 window */
-#endif
-
-/* The memory requirements for deflate are (in bytes):
-            (1 << (windowBits+2)) +  (1 << (memLevel+9))
- that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
- plus a few kilobytes for small objects. For example, if you want to reduce
- the default memory requirements from 256K to 128K, compile with
-     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
- Of course this will generally degrade compression (there's no free lunch).
-
-   The memory requirements for inflate are (in bytes) 1 << windowBits
- that is, 32K for windowBits=15 (default value) plus a few kilobytes
- for small objects.
-*/
-
-                        /* Type declarations */
-
-#ifndef OF /* function prototypes */
-#  ifdef STDC
-#    define OF(args)  args
-#  else
-#    define OF(args)  ()
-#  endif
-#endif
-
-/* The following definitions for FAR are needed only for MSDOS mixed
- * model programming (small or medium model with some far allocations).
- * This was tested only with MSC; for other MSDOS compilers you may have
- * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
- * just define FAR to be empty.
- */
-#ifdef SYS16BIT
-#  if defined(M_I86SM) || defined(M_I86MM)
-     /* MSC small or medium model */
-#    define SMALL_MEDIUM
-#    ifdef _MSC_VER
-#      define FAR _far
-#    else
-#      define FAR far
-#    endif
-#  endif
-#  if (defined(__SMALL__) || defined(__MEDIUM__))
-     /* Turbo C small or medium model */
-#    define SMALL_MEDIUM
-#    ifdef __BORLANDC__
-#      define FAR _far
-#    else
-#      define FAR far
-#    endif
-#  endif
-#endif
-
-#if defined(WINDOWS) || defined(WIN32)
-   /* If building or using zlib as a DLL, define ZLIB_DLL.
-    * This is not mandatory, but it offers a little performance increase.
-    */
-#  ifdef ZLIB_DLL
-#    if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
-#      ifdef ZLIB_INTERNAL
-#        define ZEXTERN extern __declspec(dllexport)
-#      else
-#        define ZEXTERN extern __declspec(dllimport)
-#      endif
-#    endif
-#  endif  /* ZLIB_DLL */
-   /* If building or using zlib with the WINAPI/WINAPIV calling convention,
-    * define ZLIB_WINAPI.
-    * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
-    */
-#  ifdef ZLIB_WINAPI
-#    ifdef FAR
-#      undef FAR
-#    endif
-#    include <windows.h>
-     /* No need for _export, use ZLIB.DEF instead. */
-     /* For complete Windows compatibility, use WINAPI, not __stdcall. */
-#    define ZEXPORT WINAPI
-#    ifdef WIN32
-#      define ZEXPORTVA WINAPIV
-#    else
-#      define ZEXPORTVA FAR CDECL
-#    endif
-#  endif
-#endif
-
-#if defined (__BEOS__)
-#  ifdef ZLIB_DLL
-#    ifdef ZLIB_INTERNAL
-#      define ZEXPORT   __declspec(dllexport)
-#      define ZEXPORTVA __declspec(dllexport)
-#    else
-#      define ZEXPORT   __declspec(dllimport)
-#      define ZEXPORTVA __declspec(dllimport)
-#    endif
-#  endif
-#endif
-
-#ifndef ZEXTERN
-#  define ZEXTERN extern
-#endif
-#ifndef ZEXPORT
-#  define ZEXPORT
-#endif
-#ifndef ZEXPORTVA
-#  define ZEXPORTVA
-#endif
-
-#ifndef FAR
-#  define FAR
-#endif
-
-#if !defined(__MACTYPES__)
-typedef unsigned char  Byte;  /* 8 bits */
-#endif
-typedef unsigned int   uInt;  /* 16 bits or more */
-typedef unsigned long  uLong; /* 32 bits or more */
-
-#ifdef SMALL_MEDIUM
-   /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
-#  define Bytef Byte FAR
-#else
-   typedef Byte  FAR Bytef;
-#endif
-typedef char  FAR charf;
-typedef int   FAR intf;
-typedef uInt  FAR uIntf;
-typedef uLong FAR uLongf;
-
-#ifdef STDC
-   typedef void const *voidpc;
-   typedef void FAR   *voidpf;
-   typedef void       *voidp;
-#else
-   typedef Byte const *voidpc;
-   typedef Byte FAR   *voidpf;
-   typedef Byte       *voidp;
-#endif
-
-#if 0           /* HAVE_UNISTD_H -- this line is updated by ./configure */
-#  include <sys/types.h> /* for off_t */
-#  include <unistd.h>    /* for SEEK_* and off_t */
-#  ifdef VMS
-#    include <unixio.h>   /* for off_t */
-#  endif
-#  define z_off_t off_t
-#endif
-#ifndef SEEK_SET
-#  define SEEK_SET        0       /* Seek from beginning of file.  */
-#  define SEEK_CUR        1       /* Seek from current position.  */
-#  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */
-#endif
-#ifndef z_off_t
-#  define z_off_t long
-#endif
-
-#if defined(__OS400__)
-#  define NO_vsnprintf
-#endif
-
-#if defined(__MVS__)
-#  define NO_vsnprintf
-#  ifdef FAR
-#    undef FAR
-#  endif
-#endif
-
-/* MVS linker does not support external names larger than 8 bytes */
-#if defined(__MVS__)
-#   pragma map(deflateInit_,"DEIN")
-#   pragma map(deflateInit2_,"DEIN2")
-#   pragma map(deflateEnd,"DEEND")
-#   pragma map(deflateBound,"DEBND")
-#   pragma map(inflateInit_,"ININ")
-#   pragma map(inflateInit2_,"ININ2")
-#   pragma map(inflateEnd,"INEND")
-#   pragma map(inflateSync,"INSY")
-#   pragma map(inflateSetDictionary,"INSEDI")
-#   pragma map(compressBound,"CMBND")
-#   pragma map(inflate_table,"INTABL")
-#   pragma map(inflate_fast,"INFA")
-#   pragma map(inflate_copyright,"INCOPY")
-#endif
-
-#endif /* ZCONF_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zconf.in.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zconf.in.h
deleted file mode 100644
index e3b0c96..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zconf.in.h
+++ /dev/null
@@ -1,332 +0,0 @@
-/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2005 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* @(#) $Id$ */
-
-#ifndef ZCONF_H
-#define ZCONF_H
-
-/*
- * If you *really* need a unique prefix for all types and library functions,
- * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
- */
-#ifdef Z_PREFIX
-#  define deflateInit_          z_deflateInit_
-#  define deflate               z_deflate
-#  define deflateEnd            z_deflateEnd
-#  define inflateInit_          z_inflateInit_
-#  define inflate               z_inflate
-#  define inflateEnd            z_inflateEnd
-#  define deflateInit2_         z_deflateInit2_
-#  define deflateSetDictionary  z_deflateSetDictionary
-#  define deflateCopy           z_deflateCopy
-#  define deflateReset          z_deflateReset
-#  define deflateParams         z_deflateParams
-#  define deflateBound          z_deflateBound
-#  define deflatePrime          z_deflatePrime
-#  define inflateInit2_         z_inflateInit2_
-#  define inflateSetDictionary  z_inflateSetDictionary
-#  define inflateSync           z_inflateSync
-#  define inflateSyncPoint      z_inflateSyncPoint
-#  define inflateCopy           z_inflateCopy
-#  define inflateReset          z_inflateReset
-#  define inflateBack           z_inflateBack
-#  define inflateBackEnd        z_inflateBackEnd
-#  define compress              z_compress
-#  define compress2             z_compress2
-#  define compressBound         z_compressBound
-#  define uncompress            z_uncompress
-#  define adler32               z_adler32
-#  define crc32                 z_crc32
-#  define get_crc_table         z_get_crc_table
-#  define zError                z_zError
-
-#  define alloc_func            z_alloc_func
-#  define free_func             z_free_func
-#  define in_func               z_in_func
-#  define out_func              z_out_func
-#  define Byte                  z_Byte
-#  define uInt                  z_uInt
-#  define uLong                 z_uLong
-#  define Bytef                 z_Bytef
-#  define charf                 z_charf
-#  define intf                  z_intf
-#  define uIntf                 z_uIntf
-#  define uLongf                z_uLongf
-#  define voidpf                z_voidpf
-#  define voidp                 z_voidp
-#endif
-
-#if defined(__MSDOS__) && !defined(MSDOS)
-#  define MSDOS
-#endif
-#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
-#  define OS2
-#endif
-#if defined(_WINDOWS) && !defined(WINDOWS)
-#  define WINDOWS
-#endif
-#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
-#  ifndef WIN32
-#    define WIN32
-#  endif
-#endif
-#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
-#  if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
-#    ifndef SYS16BIT
-#      define SYS16BIT
-#    endif
-#  endif
-#endif
-
-/*
- * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
- * than 64k bytes at a time (needed on systems with 16-bit int).
- */
-#ifdef SYS16BIT
-#  define MAXSEG_64K
-#endif
-#ifdef MSDOS
-#  define UNALIGNED_OK
-#endif
-
-#ifdef __STDC_VERSION__
-#  ifndef STDC
-#    define STDC
-#  endif
-#  if __STDC_VERSION__ >= 199901L
-#    ifndef STDC99
-#      define STDC99
-#    endif
-#  endif
-#endif
-#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
-#  define STDC
-#endif
-#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
-#  define STDC
-#endif
-
-#if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */
-#  define STDC
-#endif
-
-#ifndef STDC
-#  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
-#    define const       /* note: need a more gentle solution here */
-#  endif
-#endif
-
-/* Some Mac compilers merge all .h files incorrectly: */
-#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
-#  define NO_DUMMY_DECL
-#endif
-
-/* Maximum value for memLevel in deflateInit2 */
-#ifndef MAX_MEM_LEVEL
-#  ifdef MAXSEG_64K
-#    define MAX_MEM_LEVEL 8
-#  else
-#    define MAX_MEM_LEVEL 9
-#  endif
-#endif
-
-/* Maximum value for windowBits in deflateInit2 and inflateInit2.
- * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
- * created by gzip. (Files created by minigzip can still be extracted by
- * gzip.)
- */
-#ifndef MAX_WBITS
-#  define MAX_WBITS   15 /* 32K LZ77 window */
-#endif
-
-/* The memory requirements for deflate are (in bytes):
-            (1 << (windowBits+2)) +  (1 << (memLevel+9))
- that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
- plus a few kilobytes for small objects. For example, if you want to reduce
- the default memory requirements from 256K to 128K, compile with
-     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
- Of course this will generally degrade compression (there's no free lunch).
-
-   The memory requirements for inflate are (in bytes) 1 << windowBits
- that is, 32K for windowBits=15 (default value) plus a few kilobytes
- for small objects.
-*/
-
-                        /* Type declarations */
-
-#ifndef OF /* function prototypes */
-#  ifdef STDC
-#    define OF(args)  args
-#  else
-#    define OF(args)  ()
-#  endif
-#endif
-
-/* The following definitions for FAR are needed only for MSDOS mixed
- * model programming (small or medium model with some far allocations).
- * This was tested only with MSC; for other MSDOS compilers you may have
- * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
- * just define FAR to be empty.
- */
-#ifdef SYS16BIT
-#  if defined(M_I86SM) || defined(M_I86MM)
-     /* MSC small or medium model */
-#    define SMALL_MEDIUM
-#    ifdef _MSC_VER
-#      define FAR _far
-#    else
-#      define FAR far
-#    endif
-#  endif
-#  if (defined(__SMALL__) || defined(__MEDIUM__))
-     /* Turbo C small or medium model */
-#    define SMALL_MEDIUM
-#    ifdef __BORLANDC__
-#      define FAR _far
-#    else
-#      define FAR far
-#    endif
-#  endif
-#endif
-
-#if defined(WINDOWS) || defined(WIN32)
-   /* If building or using zlib as a DLL, define ZLIB_DLL.
-    * This is not mandatory, but it offers a little performance increase.
-    */
-#  ifdef ZLIB_DLL
-#    if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
-#      ifdef ZLIB_INTERNAL
-#        define ZEXTERN extern __declspec(dllexport)
-#      else
-#        define ZEXTERN extern __declspec(dllimport)
-#      endif
-#    endif
-#  endif  /* ZLIB_DLL */
-   /* If building or using zlib with the WINAPI/WINAPIV calling convention,
-    * define ZLIB_WINAPI.
-    * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
-    */
-#  ifdef ZLIB_WINAPI
-#    ifdef FAR
-#      undef FAR
-#    endif
-#    include <windows.h>
-     /* No need for _export, use ZLIB.DEF instead. */
-     /* For complete Windows compatibility, use WINAPI, not __stdcall. */
-#    define ZEXPORT WINAPI
-#    ifdef WIN32
-#      define ZEXPORTVA WINAPIV
-#    else
-#      define ZEXPORTVA FAR CDECL
-#    endif
-#  endif
-#endif
-
-#if defined (__BEOS__)
-#  ifdef ZLIB_DLL
-#    ifdef ZLIB_INTERNAL
-#      define ZEXPORT   __declspec(dllexport)
-#      define ZEXPORTVA __declspec(dllexport)
-#    else
-#      define ZEXPORT   __declspec(dllimport)
-#      define ZEXPORTVA __declspec(dllimport)
-#    endif
-#  endif
-#endif
-
-#ifndef ZEXTERN
-#  define ZEXTERN extern
-#endif
-#ifndef ZEXPORT
-#  define ZEXPORT
-#endif
-#ifndef ZEXPORTVA
-#  define ZEXPORTVA
-#endif
-
-#ifndef FAR
-#  define FAR
-#endif
-
-#if !defined(__MACTYPES__)
-typedef unsigned char  Byte;  /* 8 bits */
-#endif
-typedef unsigned int   uInt;  /* 16 bits or more */
-typedef unsigned long  uLong; /* 32 bits or more */
-
-#ifdef SMALL_MEDIUM
-   /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
-#  define Bytef Byte FAR
-#else
-   typedef Byte  FAR Bytef;
-#endif
-typedef char  FAR charf;
-typedef int   FAR intf;
-typedef uInt  FAR uIntf;
-typedef uLong FAR uLongf;
-
-#ifdef STDC
-   typedef void const *voidpc;
-   typedef void FAR   *voidpf;
-   typedef void       *voidp;
-#else
-   typedef Byte const *voidpc;
-   typedef Byte FAR   *voidpf;
-   typedef Byte       *voidp;
-#endif
-
-#if 0           /* HAVE_UNISTD_H -- this line is updated by ./configure */
-#  include <sys/types.h> /* for off_t */
-#  include <unistd.h>    /* for SEEK_* and off_t */
-#  ifdef VMS
-#    include <unixio.h>   /* for off_t */
-#  endif
-#  define z_off_t off_t
-#endif
-#ifndef SEEK_SET
-#  define SEEK_SET        0       /* Seek from beginning of file.  */
-#  define SEEK_CUR        1       /* Seek from current position.  */
-#  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */
-#endif
-#ifndef z_off_t
-#  define z_off_t long
-#endif
-
-#if defined(__OS400__)
-#  define NO_vsnprintf
-#endif
-
-#if defined(__MVS__)
-#  define NO_vsnprintf
-#  ifdef FAR
-#    undef FAR
-#  endif
-#endif
-
-/* MVS linker does not support external names larger than 8 bytes */
-#if defined(__MVS__)
-#   pragma map(deflateInit_,"DEIN")
-#   pragma map(deflateInit2_,"DEIN2")
-#   pragma map(deflateEnd,"DEEND")
-#   pragma map(deflateBound,"DEBND")
-#   pragma map(inflateInit_,"ININ")
-#   pragma map(inflateInit2_,"ININ2")
-#   pragma map(inflateEnd,"INEND")
-#   pragma map(inflateSync,"INSY")
-#   pragma map(inflateSetDictionary,"INSEDI")
-#   pragma map(compressBound,"CMBND")
-#   pragma map(inflate_table,"INTABL")
-#   pragma map(inflate_fast,"INFA")
-#   pragma map(inflate_copyright,"INCOPY")
-#endif
-
-#endif /* ZCONF_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zlib.3 b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zlib.3
deleted file mode 100644
index f6b0da1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zlib.3
+++ /dev/null
@@ -1,159 +0,0 @@
-.TH ZLIB 3 "18 July 2005"
-.SH NAME
-zlib \- compression/decompression library
-.SH SYNOPSIS
-[see
-.I zlib.h
-for full description]
-.SH DESCRIPTION
-The
-.I zlib
-library is a general purpose data compression library.
-The code is thread safe.
-It provides in-memory compression and decompression functions,
-including integrity checks of the uncompressed data.
-This version of the library supports only one compression method (deflation)
-but other algorithms will be added later
-and will have the same stream interface.
-.LP
-Compression can be done in a single step if the buffers are large enough
-(for example if an input file is mmap'ed),
-or can be done by repeated calls of the compression function.
-In the latter case,
-the application must provide more input and/or consume the output
-(providing more output space) before each call.
-.LP
-The library also supports reading and writing files in
-.IR gzip (1)
-(.gz) format
-with an interface similar to that of stdio.
-.LP
-The library does not install any signal handler.
-The decoder checks the consistency of the compressed data,
-so the library should never crash even in case of corrupted input.
-.LP
-All functions of the compression library are documented in the file
-.IR zlib.h .
-The distribution source includes examples of use of the library
-in the files
-.I example.c
-and
-.IR minigzip.c .
-.LP
-Changes to this version are documented in the file
-.I ChangeLog
-that accompanies the source,
-and are concerned primarily with bug fixes and portability enhancements.
-.LP
-A Java implementation of
-.I zlib
-is available in the Java Development Kit 1.1:
-.IP
-http://www.javasoft.com/products/JDK/1.1/docs/api/Package-java.util.zip.html
-.LP
-A Perl interface to
-.IR zlib ,
-written by Paul Marquess (pmqs@cpan.org),
-is available at CPAN (Comprehensive Perl Archive Network) sites,
-including:
-.IP
-http://www.cpan.org/modules/by-module/Compress/
-.LP
-A Python interface to
-.IR zlib ,
-written by A.M. Kuchling (amk@magnet.com),
-is available in Python 1.5 and later versions:
-.IP
-http://www.python.org/doc/lib/module-zlib.html
-.LP
-A
-.I zlib
-binding for
-.IR tcl (1),
-written by Andreas Kupries (a.kupries@westend.com),
-is availlable at:
-.IP
-http://www.westend.com/~kupries/doc/trf/man/man.html
-.LP
-An experimental package to read and write files in .zip format,
-written on top of
-.I zlib
-by Gilles Vollant (info@winimage.com),
-is available at:
-.IP
-http://www.winimage.com/zLibDll/unzip.html
-and also in the
-.I contrib/minizip
-directory of the main
-.I zlib
-web site.
-.SH "SEE ALSO"
-The
-.I zlib
-web site can be found at either of these locations:
-.IP
-http://www.zlib.org
-.br
-http://www.gzip.org/zlib/
-.LP
-The data format used by the zlib library is described by RFC
-(Request for Comments) 1950 to 1952 in the files:
-.IP
-http://www.ietf.org/rfc/rfc1950.txt (concerning zlib format)
-.br
-http://www.ietf.org/rfc/rfc1951.txt (concerning deflate format)
-.br
-http://www.ietf.org/rfc/rfc1952.txt (concerning gzip format)
-.LP
-These documents are also available in other formats from:
-.IP
-ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html
-.LP
-Mark Nelson (markn@ieee.org) wrote an article about
-.I zlib
-for the Jan. 1997 issue of  Dr. Dobb's Journal;
-a copy of the article is available at:
-.IP
-http://dogma.net/markn/articles/zlibtool/zlibtool.htm
-.SH "REPORTING PROBLEMS"
-Before reporting a problem,
-please check the
-.I zlib
-web site to verify that you have the latest version of
-.IR zlib ;
-otherwise,
-obtain the latest version and see if the problem still exists.
-Please read the
-.I zlib
-FAQ at:
-.IP
-http://www.gzip.org/zlib/zlib_faq.html
-.LP
-before asking for help.
-Send questions and/or comments to zlib@gzip.org,
-or (for the Windows DLL version) to Gilles Vollant (info@winimage.com).
-.SH AUTHORS
-Version 1.2.3
-Copyright (C) 1995-2005 Jean-loup Gailly (jloup@gzip.org)
-and Mark Adler (madler@alumni.caltech.edu).
-.LP
-This software is provided "as-is,"
-without any express or implied warranty.
-In no event will the authors be held liable for any damages
-arising from the use of this software.
-See the distribution directory with respect to requirements
-governing redistribution.
-The deflate format used by
-.I zlib
-was defined by Phil Katz.
-The deflate and
-.I zlib
-specifications were written by L. Peter Deutsch.
-Thanks to all the people who reported problems and suggested various
-improvements in
-.IR zlib ;
-who are too numerous to cite here.
-.LP
-UNIX manual page by R. P. C. Rodgers,
-U.S. National Library of Medicine (rodgers@nlm.nih.gov).
-.\" end of man page
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zlib.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zlib.h
deleted file mode 100644
index 62d0e46..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zlib.h
+++ /dev/null
@@ -1,1357 +0,0 @@
-/* zlib.h -- interface of the 'zlib' general purpose compression library
-  version 1.2.3, July 18th, 2005
-
-  Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-  Jean-loup Gailly        Mark Adler
-  jloup@gzip.org          madler@alumni.caltech.edu
-
-
-  The data format used by the zlib library is described by RFCs (Request for
-  Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt
-  (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
-*/
-
-#ifndef ZLIB_H
-#define ZLIB_H
-
-#include "zconf.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define ZLIB_VERSION "1.2.3"
-#define ZLIB_VERNUM 0x1230
-
-/*
-     The 'zlib' compression library provides in-memory compression and
-  decompression functions, including integrity checks of the uncompressed
-  data.  This version of the library supports only one compression method
-  (deflation) but other algorithms will be added later and will have the same
-  stream interface.
-
-     Compression can be done in a single step if the buffers are large
-  enough (for example if an input file is mmap'ed), or can be done by
-  repeated calls of the compression function.  In the latter case, the
-  application must provide more input and/or consume the output
-  (providing more output space) before each call.
-
-     The compressed data format used by default by the in-memory functions is
-  the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
-  around a deflate stream, which is itself documented in RFC 1951.
-
-     The library also supports reading and writing files in gzip (.gz) format
-  with an interface similar to that of stdio using the functions that start
-  with "gz".  The gzip format is different from the zlib format.  gzip is a
-  gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
-
-     This library can optionally read and write gzip streams in memory as well.
-
-     The zlib format was designed to be compact and fast for use in memory
-  and on communications channels.  The gzip format was designed for single-
-  file compression on file systems, has a larger header than zlib to maintain
-  directory information, and uses a different, slower check method than zlib.
-
-     The library does not install any signal handler. The decoder checks
-  the consistency of the compressed data, so the library should never
-  crash even in case of corrupted input.
-*/
-
-typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
-typedef void   (*free_func)  OF((voidpf opaque, voidpf address));
-
-struct internal_state;
-
-typedef struct z_stream_s {
-    Bytef    *next_in;  /* next input byte */
-    uInt     avail_in;  /* number of bytes available at next_in */
-    uLong    total_in;  /* total nb of input bytes read so far */
-
-    Bytef    *next_out; /* next output byte should be put there */
-    uInt     avail_out; /* remaining free space at next_out */
-    uLong    total_out; /* total nb of bytes output so far */
-
-    char     *msg;      /* last error message, NULL if no error */
-    struct internal_state FAR *state; /* not visible by applications */
-
-    alloc_func zalloc;  /* used to allocate the internal state */
-    free_func  zfree;   /* used to free the internal state */
-    voidpf     opaque;  /* private data object passed to zalloc and zfree */
-
-    int     data_type;  /* best guess about the data type: binary or text */
-    uLong   adler;      /* adler32 value of the uncompressed data */
-    uLong   reserved;   /* reserved for future use */
-} z_stream;
-
-typedef z_stream FAR *z_streamp;
-
-/*
-     gzip header information passed to and from zlib routines.  See RFC 1952
-  for more details on the meanings of these fields.
-*/
-typedef struct gz_header_s {
-    int     text;       /* true if compressed data believed to be text */
-    uLong   time;       /* modification time */
-    int     xflags;     /* extra flags (not used when writing a gzip file) */
-    int     os;         /* operating system */
-    Bytef   *extra;     /* pointer to extra field or Z_NULL if none */
-    uInt    extra_len;  /* extra field length (valid if extra != Z_NULL) */
-    uInt    extra_max;  /* space at extra (only when reading header) */
-    Bytef   *name;      /* pointer to zero-terminated file name or Z_NULL */
-    uInt    name_max;   /* space at name (only when reading header) */
-    Bytef   *comment;   /* pointer to zero-terminated comment or Z_NULL */
-    uInt    comm_max;   /* space at comment (only when reading header) */
-    int     hcrc;       /* true if there was or will be a header crc */
-    int     done;       /* true when done reading gzip header (not used
-                           when writing a gzip file) */
-} gz_header;
-
-typedef gz_header FAR *gz_headerp;
-
-/*
-   The application must update next_in and avail_in when avail_in has
-   dropped to zero. It must update next_out and avail_out when avail_out
-   has dropped to zero. The application must initialize zalloc, zfree and
-   opaque before calling the init function. All other fields are set by the
-   compression library and must not be updated by the application.
-
-   The opaque value provided by the application will be passed as the first
-   parameter for calls of zalloc and zfree. This can be useful for custom
-   memory management. The compression library attaches no meaning to the
-   opaque value.
-
-   zalloc must return Z_NULL if there is not enough memory for the object.
-   If zlib is used in a multi-threaded application, zalloc and zfree must be
-   thread safe.
-
-   On 16-bit systems, the functions zalloc and zfree must be able to allocate
-   exactly 65536 bytes, but will not be required to allocate more than this
-   if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
-   pointers returned by zalloc for objects of exactly 65536 bytes *must*
-   have their offset normalized to zero. The default allocation function
-   provided by this library ensures this (see zutil.c). To reduce memory
-   requirements and avoid any allocation of 64K objects, at the expense of
-   compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
-
-   The fields total_in and total_out can be used for statistics or
-   progress reports. After compression, total_in holds the total size of
-   the uncompressed data and may be saved for use in the decompressor
-   (particularly if the decompressor wants to decompress everything in
-   a single step).
-*/
-
-                        /* constants */
-
-#define Z_NO_FLUSH      0
-#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
-#define Z_SYNC_FLUSH    2
-#define Z_FULL_FLUSH    3
-#define Z_FINISH        4
-#define Z_BLOCK         5
-/* Allowed flush values; see deflate() and inflate() below for details */
-
-#define Z_OK            0
-#define Z_STREAM_END    1
-#define Z_NEED_DICT     2
-#define Z_ERRNO        (-1)
-#define Z_STREAM_ERROR (-2)
-#define Z_DATA_ERROR   (-3)
-#define Z_MEM_ERROR    (-4)
-#define Z_BUF_ERROR    (-5)
-#define Z_VERSION_ERROR (-6)
-/* Return codes for the compression/decompression functions. Negative
- * values are errors, positive values are used for special but normal events.
- */
-
-#define Z_NO_COMPRESSION         0
-#define Z_BEST_SPEED             1
-#define Z_BEST_COMPRESSION       9
-#define Z_DEFAULT_COMPRESSION  (-1)
-/* compression levels */
-
-#define Z_FILTERED            1
-#define Z_HUFFMAN_ONLY        2
-#define Z_RLE                 3
-#define Z_FIXED               4
-#define Z_DEFAULT_STRATEGY    0
-/* compression strategy; see deflateInit2() below for details */
-
-#define Z_BINARY   0
-#define Z_TEXT     1
-#define Z_ASCII    Z_TEXT   /* for compatibility with 1.2.2 and earlier */
-#define Z_UNKNOWN  2
-/* Possible values of the data_type field (though see inflate()) */
-
-#define Z_DEFLATED   8
-/* The deflate compression method (the only one supported in this version) */
-
-#define Z_NULL  0  /* for initializing zalloc, zfree, opaque */
-
-#define zlib_version zlibVersion()
-/* for compatibility with versions < 1.0.2 */
-
-                        /* basic functions */
-
-ZEXTERN const char * ZEXPORT zlibVersion OF((void));
-/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
-   If the first character differs, the library code actually used is
-   not compatible with the zlib.h header file used by the application.
-   This check is automatically made by deflateInit and inflateInit.
- */
-
-/*
-ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
-
-     Initializes the internal stream state for compression. The fields
-   zalloc, zfree and opaque must be initialized before by the caller.
-   If zalloc and zfree are set to Z_NULL, deflateInit updates them to
-   use default allocation functions.
-
-     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
-   1 gives best speed, 9 gives best compression, 0 gives no compression at
-   all (the input data is simply copied a block at a time).
-   Z_DEFAULT_COMPRESSION requests a default compromise between speed and
-   compression (currently equivalent to level 6).
-
-     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_STREAM_ERROR if level is not a valid compression level,
-   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
-   with the version assumed by the caller (ZLIB_VERSION).
-   msg is set to null if there is no error message.  deflateInit does not
-   perform any compression: this will be done by deflate().
-*/
-
-
-ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
-/*
-    deflate compresses as much data as possible, and stops when the input
-  buffer becomes empty or the output buffer becomes full. It may introduce some
-  output latency (reading input without producing any output) except when
-  forced to flush.
-
-    The detailed semantics are as follows. deflate performs one or both of the
-  following actions:
-
-  - Compress more input starting at next_in and update next_in and avail_in
-    accordingly. If not all input can be processed (because there is not
-    enough room in the output buffer), next_in and avail_in are updated and
-    processing will resume at this point for the next call of deflate().
-
-  - Provide more output starting at next_out and update next_out and avail_out
-    accordingly. This action is forced if the parameter flush is non zero.
-    Forcing flush frequently degrades the compression ratio, so this parameter
-    should be set only when necessary (in interactive applications).
-    Some output may be provided even if flush is not set.
-
-  Before the call of deflate(), the application should ensure that at least
-  one of the actions is possible, by providing more input and/or consuming
-  more output, and updating avail_in or avail_out accordingly; avail_out
-  should never be zero before the call. The application can consume the
-  compressed output when it wants, for example when the output buffer is full
-  (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
-  and with zero avail_out, it must be called again after making room in the
-  output buffer because there might be more output pending.
-
-    Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
-  decide how much data to accumualte before producing output, in order to
-  maximize compression.
-
-    If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
-  flushed to the output buffer and the output is aligned on a byte boundary, so
-  that the decompressor can get all input data available so far. (In particular
-  avail_in is zero after the call if enough output space has been provided
-  before the call.)  Flushing may degrade compression for some compression
-  algorithms and so it should be used only when necessary.
-
-    If flush is set to Z_FULL_FLUSH, all output is flushed as with
-  Z_SYNC_FLUSH, and the compression state is reset so that decompression can
-  restart from this point if previous compressed data has been damaged or if
-  random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
-  compression.
-
-    If deflate returns with avail_out == 0, this function must be called again
-  with the same value of the flush parameter and more output space (updated
-  avail_out), until the flush is complete (deflate returns with non-zero
-  avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
-  avail_out is greater than six to avoid repeated flush markers due to
-  avail_out == 0 on return.
-
-    If the parameter flush is set to Z_FINISH, pending input is processed,
-  pending output is flushed and deflate returns with Z_STREAM_END if there
-  was enough output space; if deflate returns with Z_OK, this function must be
-  called again with Z_FINISH and more output space (updated avail_out) but no
-  more input data, until it returns with Z_STREAM_END or an error. After
-  deflate has returned Z_STREAM_END, the only possible operations on the
-  stream are deflateReset or deflateEnd.
-
-    Z_FINISH can be used immediately after deflateInit if all the compression
-  is to be done in a single step. In this case, avail_out must be at least
-  the value returned by deflateBound (see below). If deflate does not return
-  Z_STREAM_END, then it must be called again as described above.
-
-    deflate() sets strm->adler to the adler32 checksum of all input read
-  so far (that is, total_in bytes).
-
-    deflate() may update strm->data_type if it can make a good guess about
-  the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered
-  binary. This field is only for information purposes and does not affect
-  the compression algorithm in any manner.
-
-    deflate() returns Z_OK if some progress has been made (more input
-  processed or more output produced), Z_STREAM_END if all input has been
-  consumed and all output has been produced (only when flush is set to
-  Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
-  if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
-  (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not
-  fatal, and deflate() can be called again with more input and more output
-  space to continue compressing.
-*/
-
-
-ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
-/*
-     All dynamically allocated data structures for this stream are freed.
-   This function discards any unprocessed input and does not flush any
-   pending output.
-
-     deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
-   stream state was inconsistent, Z_DATA_ERROR if the stream was freed
-   prematurely (some input or output was discarded). In the error case,
-   msg may be set but then points to a static string (which must not be
-   deallocated).
-*/
-
-
-/*
-ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
-
-     Initializes the internal stream state for decompression. The fields
-   next_in, avail_in, zalloc, zfree and opaque must be initialized before by
-   the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
-   value depends on the compression method), inflateInit determines the
-   compression method from the zlib header and allocates all data structures
-   accordingly; otherwise the allocation will be deferred to the first call of
-   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
-   use default allocation functions.
-
-     inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
-   version assumed by the caller.  msg is set to null if there is no error
-   message. inflateInit does not perform any decompression apart from reading
-   the zlib header if present: this will be done by inflate().  (So next_in and
-   avail_in may be modified, but next_out and avail_out are unchanged.)
-*/
-
-
-ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
-/*
-    inflate decompresses as much data as possible, and stops when the input
-  buffer becomes empty or the output buffer becomes full. It may introduce
-  some output latency (reading input without producing any output) except when
-  forced to flush.
-
-  The detailed semantics are as follows. inflate performs one or both of the
-  following actions:
-
-  - Decompress more input starting at next_in and update next_in and avail_in
-    accordingly. If not all input can be processed (because there is not
-    enough room in the output buffer), next_in is updated and processing
-    will resume at this point for the next call of inflate().
-
-  - Provide more output starting at next_out and update next_out and avail_out
-    accordingly.  inflate() provides as much output as possible, until there
-    is no more input data or no more space in the output buffer (see below
-    about the flush parameter).
-
-  Before the call of inflate(), the application should ensure that at least
-  one of the actions is possible, by providing more input and/or consuming
-  more output, and updating the next_* and avail_* values accordingly.
-  The application can consume the uncompressed output when it wants, for
-  example when the output buffer is full (avail_out == 0), or after each
-  call of inflate(). If inflate returns Z_OK and with zero avail_out, it
-  must be called again after making room in the output buffer because there
-  might be more output pending.
-
-    The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
-  Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much
-  output as possible to the output buffer. Z_BLOCK requests that inflate() stop
-  if and when it gets to the next deflate block boundary. When decoding the
-  zlib or gzip format, this will cause inflate() to return immediately after
-  the header and before the first block. When doing a raw inflate, inflate()
-  will go ahead and process the first block, and will return when it gets to
-  the end of that block, or when it runs out of data.
-
-    The Z_BLOCK option assists in appending to or combining deflate streams.
-  Also to assist in this, on return inflate() will set strm->data_type to the
-  number of unused bits in the last byte taken from strm->next_in, plus 64
-  if inflate() is currently decoding the last block in the deflate stream,
-  plus 128 if inflate() returned immediately after decoding an end-of-block
-  code or decoding the complete header up to just before the first byte of the
-  deflate stream. The end-of-block will not be indicated until all of the
-  uncompressed data from that block has been written to strm->next_out.  The
-  number of unused bits may in general be greater than seven, except when
-  bit 7 of data_type is set, in which case the number of unused bits will be
-  less than eight.
-
-    inflate() should normally be called until it returns Z_STREAM_END or an
-  error. However if all decompression is to be performed in a single step
-  (a single call of inflate), the parameter flush should be set to
-  Z_FINISH. In this case all pending input is processed and all pending
-  output is flushed; avail_out must be large enough to hold all the
-  uncompressed data. (The size of the uncompressed data may have been saved
-  by the compressor for this purpose.) The next operation on this stream must
-  be inflateEnd to deallocate the decompression state. The use of Z_FINISH
-  is never required, but can be used to inform inflate that a faster approach
-  may be used for the single inflate() call.
-
-     In this implementation, inflate() always flushes as much output as
-  possible to the output buffer, and always uses the faster approach on the
-  first call. So the only effect of the flush parameter in this implementation
-  is on the return value of inflate(), as noted below, or when it returns early
-  because Z_BLOCK is used.
-
-     If a preset dictionary is needed after this call (see inflateSetDictionary
-  below), inflate sets strm->adler to the adler32 checksum of the dictionary
-  chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
-  strm->adler to the adler32 checksum of all output produced so far (that is,
-  total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
-  below. At the end of the stream, inflate() checks that its computed adler32
-  checksum is equal to that saved by the compressor and returns Z_STREAM_END
-  only if the checksum is correct.
-
-    inflate() will decompress and check either zlib-wrapped or gzip-wrapped
-  deflate data.  The header type is detected automatically.  Any information
-  contained in the gzip header is not retained, so applications that need that
-  information should instead use raw inflate, see inflateInit2() below, or
-  inflateBack() and perform their own processing of the gzip header and
-  trailer.
-
-    inflate() returns Z_OK if some progress has been made (more input processed
-  or more output produced), Z_STREAM_END if the end of the compressed data has
-  been reached and all uncompressed output has been produced, Z_NEED_DICT if a
-  preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
-  corrupted (input stream not conforming to the zlib format or incorrect check
-  value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
-  if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
-  Z_BUF_ERROR if no progress is possible or if there was not enough room in the
-  output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
-  inflate() can be called again with more input and more output space to
-  continue decompressing. If Z_DATA_ERROR is returned, the application may then
-  call inflateSync() to look for a good compression block if a partial recovery
-  of the data is desired.
-*/
-
-
-ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
-/*
-     All dynamically allocated data structures for this stream are freed.
-   This function discards any unprocessed input and does not flush any
-   pending output.
-
-     inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
-   was inconsistent. In the error case, msg may be set but then points to a
-   static string (which must not be deallocated).
-*/
-
-                        /* Advanced functions */
-
-/*
-    The following functions are needed only in some special applications.
-*/
-
-/*
-ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
-                                     int  level,
-                                     int  method,
-                                     int  windowBits,
-                                     int  memLevel,
-                                     int  strategy));
-
-     This is another version of deflateInit with more compression options. The
-   fields next_in, zalloc, zfree and opaque must be initialized before by
-   the caller.
-
-     The method parameter is the compression method. It must be Z_DEFLATED in
-   this version of the library.
-
-     The windowBits parameter is the base two logarithm of the window size
-   (the size of the history buffer). It should be in the range 8..15 for this
-   version of the library. Larger values of this parameter result in better
-   compression at the expense of memory usage. The default value is 15 if
-   deflateInit is used instead.
-
-     windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
-   determines the window size. deflate() will then generate raw deflate data
-   with no zlib header or trailer, and will not compute an adler32 check value.
-
-     windowBits can also be greater than 15 for optional gzip encoding. Add
-   16 to windowBits to write a simple gzip header and trailer around the
-   compressed data instead of a zlib wrapper. The gzip header will have no
-   file name, no extra data, no comment, no modification time (set to zero),
-   no header crc, and the operating system will be set to 255 (unknown).  If a
-   gzip stream is being written, strm->adler is a crc32 instead of an adler32.
-
-     The memLevel parameter specifies how much memory should be allocated
-   for the internal compression state. memLevel=1 uses minimum memory but
-   is slow and reduces compression ratio; memLevel=9 uses maximum memory
-   for optimal speed. The default value is 8. See zconf.h for total memory
-   usage as a function of windowBits and memLevel.
-
-     The strategy parameter is used to tune the compression algorithm. Use the
-   value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
-   filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
-   string match), or Z_RLE to limit match distances to one (run-length
-   encoding). Filtered data consists mostly of small values with a somewhat
-   random distribution. In this case, the compression algorithm is tuned to
-   compress them better. The effect of Z_FILTERED is to force more Huffman
-   coding and less string matching; it is somewhat intermediate between
-   Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as
-   Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy
-   parameter only affects the compression ratio but not the correctness of the
-   compressed output even if it is not set appropriately.  Z_FIXED prevents the
-   use of dynamic Huffman codes, allowing for a simpler decoder for special
-   applications.
-
-      deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
-   method). msg is set to null if there is no error message.  deflateInit2 does
-   not perform any compression: this will be done by deflate().
-*/
-
-ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
-                                             const Bytef *dictionary,
-                                             uInt  dictLength));
-/*
-     Initializes the compression dictionary from the given byte sequence
-   without producing any compressed output. This function must be called
-   immediately after deflateInit, deflateInit2 or deflateReset, before any
-   call of deflate. The compressor and decompressor must use exactly the same
-   dictionary (see inflateSetDictionary).
-
-     The dictionary should consist of strings (byte sequences) that are likely
-   to be encountered later in the data to be compressed, with the most commonly
-   used strings preferably put towards the end of the dictionary. Using a
-   dictionary is most useful when the data to be compressed is short and can be
-   predicted with good accuracy; the data can then be compressed better than
-   with the default empty dictionary.
-
-     Depending on the size of the compression data structures selected by
-   deflateInit or deflateInit2, a part of the dictionary may in effect be
-   discarded, for example if the dictionary is larger than the window size in
-   deflate or deflate2. Thus the strings most likely to be useful should be
-   put at the end of the dictionary, not at the front. In addition, the
-   current implementation of deflate will use at most the window size minus
-   262 bytes of the provided dictionary.
-
-     Upon return of this function, strm->adler is set to the adler32 value
-   of the dictionary; the decompressor may later use this value to determine
-   which dictionary has been used by the compressor. (The adler32 value
-   applies to the whole dictionary even if only a subset of the dictionary is
-   actually used by the compressor.) If a raw deflate was requested, then the
-   adler32 value is not computed and strm->adler is not set.
-
-     deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
-   parameter is invalid (such as NULL dictionary) or the stream state is
-   inconsistent (for example if deflate has already been called for this stream
-   or if the compression method is bsort). deflateSetDictionary does not
-   perform any compression: this will be done by deflate().
-*/
-
-ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
-                                    z_streamp source));
-/*
-     Sets the destination stream as a complete copy of the source stream.
-
-     This function can be useful when several compression strategies will be
-   tried, for example when there are several ways of pre-processing the input
-   data with a filter. The streams that will be discarded should then be freed
-   by calling deflateEnd.  Note that deflateCopy duplicates the internal
-   compression state which can be quite large, so this strategy is slow and
-   can consume lots of memory.
-
-     deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
-   (such as zalloc being NULL). msg is left unchanged in both source and
-   destination.
-*/
-
-ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
-/*
-     This function is equivalent to deflateEnd followed by deflateInit,
-   but does not free and reallocate all the internal compression state.
-   The stream will keep the same compression level and any other attributes
-   that may have been set by deflateInit2.
-
-      deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent (such as zalloc or state being NULL).
-*/
-
-ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
-                                      int level,
-                                      int strategy));
-/*
-     Dynamically update the compression level and compression strategy.  The
-   interpretation of level and strategy is as in deflateInit2.  This can be
-   used to switch between compression and straight copy of the input data, or
-   to switch to a different kind of input data requiring a different
-   strategy. If the compression level is changed, the input available so far
-   is compressed with the old level (and may be flushed); the new level will
-   take effect only at the next call of deflate().
-
-     Before the call of deflateParams, the stream state must be set as for
-   a call of deflate(), since the currently available input may have to
-   be compressed and flushed. In particular, strm->avail_out must be non-zero.
-
-     deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
-   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
-   if strm->avail_out was zero.
-*/
-
-ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
-                                    int good_length,
-                                    int max_lazy,
-                                    int nice_length,
-                                    int max_chain));
-/*
-     Fine tune deflate's internal compression parameters.  This should only be
-   used by someone who understands the algorithm used by zlib's deflate for
-   searching for the best matching string, and even then only by the most
-   fanatic optimizer trying to squeeze out the last compressed bit for their
-   specific input data.  Read the deflate.c source code for the meaning of the
-   max_lazy, good_length, nice_length, and max_chain parameters.
-
-     deflateTune() can be called after deflateInit() or deflateInit2(), and
-   returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
- */
-
-ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
-                                       uLong sourceLen));
-/*
-     deflateBound() returns an upper bound on the compressed size after
-   deflation of sourceLen bytes.  It must be called after deflateInit()
-   or deflateInit2().  This would be used to allocate an output buffer
-   for deflation in a single pass, and so would be called before deflate().
-*/
-
-ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
-                                     int bits,
-                                     int value));
-/*
-     deflatePrime() inserts bits in the deflate output stream.  The intent
-  is that this function is used to start off the deflate output with the
-  bits leftover from a previous deflate stream when appending to it.  As such,
-  this function can only be used for raw deflate, and must be used before the
-  first deflate() call after a deflateInit2() or deflateReset().  bits must be
-  less than or equal to 16, and that many of the least significant bits of
-  value will be inserted in the output.
-
-      deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
-*/
-
-ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
-                                         gz_headerp head));
-/*
-      deflateSetHeader() provides gzip header information for when a gzip
-   stream is requested by deflateInit2().  deflateSetHeader() may be called
-   after deflateInit2() or deflateReset() and before the first call of
-   deflate().  The text, time, os, extra field, name, and comment information
-   in the provided gz_header structure are written to the gzip header (xflag is
-   ignored -- the extra flags are set according to the compression level).  The
-   caller must assure that, if not Z_NULL, name and comment are terminated with
-   a zero byte, and that if extra is not Z_NULL, that extra_len bytes are
-   available there.  If hcrc is true, a gzip header crc is included.  Note that
-   the current versions of the command-line version of gzip (up through version
-   1.3.x) do not support header crc's, and will report that it is a "multi-part
-   gzip file" and give up.
-
-      If deflateSetHeader is not used, the default gzip header has text false,
-   the time set to zero, and os set to 255, with no extra, name, or comment
-   fields.  The gzip header is returned to the default state by deflateReset().
-
-      deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
-*/
-
-/*
-ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
-                                     int  windowBits));
-
-     This is another version of inflateInit with an extra parameter. The
-   fields next_in, avail_in, zalloc, zfree and opaque must be initialized
-   before by the caller.
-
-     The windowBits parameter is the base two logarithm of the maximum window
-   size (the size of the history buffer).  It should be in the range 8..15 for
-   this version of the library. The default value is 15 if inflateInit is used
-   instead. windowBits must be greater than or equal to the windowBits value
-   provided to deflateInit2() while compressing, or it must be equal to 15 if
-   deflateInit2() was not used. If a compressed stream with a larger window
-   size is given as input, inflate() will return with the error code
-   Z_DATA_ERROR instead of trying to allocate a larger window.
-
-     windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
-   determines the window size. inflate() will then process raw deflate data,
-   not looking for a zlib or gzip header, not generating a check value, and not
-   looking for any check values for comparison at the end of the stream. This
-   is for use with other formats that use the deflate compressed data format
-   such as zip.  Those formats provide their own check values. If a custom
-   format is developed using the raw deflate format for compressed data, it is
-   recommended that a check value such as an adler32 or a crc32 be applied to
-   the uncompressed data as is done in the zlib, gzip, and zip formats.  For
-   most applications, the zlib format should be used as is. Note that comments
-   above on the use in deflateInit2() applies to the magnitude of windowBits.
-
-     windowBits can also be greater than 15 for optional gzip decoding. Add
-   32 to windowBits to enable zlib and gzip decoding with automatic header
-   detection, or add 16 to decode only the gzip format (the zlib format will
-   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is
-   a crc32 instead of an adler32.
-
-     inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg
-   is set to null if there is no error message.  inflateInit2 does not perform
-   any decompression apart from reading the zlib header if present: this will
-   be done by inflate(). (So next_in and avail_in may be modified, but next_out
-   and avail_out are unchanged.)
-*/
-
-ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
-                                             const Bytef *dictionary,
-                                             uInt  dictLength));
-/*
-     Initializes the decompression dictionary from the given uncompressed byte
-   sequence. This function must be called immediately after a call of inflate,
-   if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
-   can be determined from the adler32 value returned by that call of inflate.
-   The compressor and decompressor must use exactly the same dictionary (see
-   deflateSetDictionary).  For raw inflate, this function can be called
-   immediately after inflateInit2() or inflateReset() and before any call of
-   inflate() to set the dictionary.  The application must insure that the
-   dictionary that was used for compression is provided.
-
-     inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
-   parameter is invalid (such as NULL dictionary) or the stream state is
-   inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
-   expected one (incorrect adler32 value). inflateSetDictionary does not
-   perform any decompression: this will be done by subsequent calls of
-   inflate().
-*/
-
-ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
-/*
-    Skips invalid compressed data until a full flush point (see above the
-  description of deflate with Z_FULL_FLUSH) can be found, or until all
-  available input is skipped. No output is provided.
-
-    inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
-  if no more input was provided, Z_DATA_ERROR if no flush point has been found,
-  or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
-  case, the application may save the current current value of total_in which
-  indicates where valid compressed data was found. In the error case, the
-  application may repeatedly call inflateSync, providing more input each time,
-  until success or end of the input data.
-*/
-
-ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
-                                    z_streamp source));
-/*
-     Sets the destination stream as a complete copy of the source stream.
-
-     This function can be useful when randomly accessing a large stream.  The
-   first pass through the stream can periodically record the inflate state,
-   allowing restarting inflate at those points when randomly accessing the
-   stream.
-
-     inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
-   (such as zalloc being NULL). msg is left unchanged in both source and
-   destination.
-*/
-
-ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
-/*
-     This function is equivalent to inflateEnd followed by inflateInit,
-   but does not free and reallocate all the internal decompression state.
-   The stream will keep attributes that may have been set by inflateInit2.
-
-      inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent (such as zalloc or state being NULL).
-*/
-
-ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
-                                     int bits,
-                                     int value));
-/*
-     This function inserts bits in the inflate input stream.  The intent is
-  that this function is used to start inflating at a bit position in the
-  middle of a byte.  The provided bits will be used before any bytes are used
-  from next_in.  This function should only be used with raw inflate, and
-  should be used before the first inflate() call after inflateInit2() or
-  inflateReset().  bits must be less than or equal to 16, and that many of the
-  least significant bits of value will be inserted in the input.
-
-      inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
-*/
-
-ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
-                                         gz_headerp head));
-/*
-      inflateGetHeader() requests that gzip header information be stored in the
-   provided gz_header structure.  inflateGetHeader() may be called after
-   inflateInit2() or inflateReset(), and before the first call of inflate().
-   As inflate() processes the gzip stream, head->done is zero until the header
-   is completed, at which time head->done is set to one.  If a zlib stream is
-   being decoded, then head->done is set to -1 to indicate that there will be
-   no gzip header information forthcoming.  Note that Z_BLOCK can be used to
-   force inflate() to return immediately after header processing is complete
-   and before any actual data is decompressed.
-
-      The text, time, xflags, and os fields are filled in with the gzip header
-   contents.  hcrc is set to true if there is a header CRC.  (The header CRC
-   was valid if done is set to one.)  If extra is not Z_NULL, then extra_max
-   contains the maximum number of bytes to write to extra.  Once done is true,
-   extra_len contains the actual extra field length, and extra contains the
-   extra field, or that field truncated if extra_max is less than extra_len.
-   If name is not Z_NULL, then up to name_max characters are written there,
-   terminated with a zero unless the length is greater than name_max.  If
-   comment is not Z_NULL, then up to comm_max characters are written there,
-   terminated with a zero unless the length is greater than comm_max.  When
-   any of extra, name, or comment are not Z_NULL and the respective field is
-   not present in the header, then that field is set to Z_NULL to signal its
-   absence.  This allows the use of deflateSetHeader() with the returned
-   structure to duplicate the header.  However if those fields are set to
-   allocated memory, then the application will need to save those pointers
-   elsewhere so that they can be eventually freed.
-
-      If inflateGetHeader is not used, then the header information is simply
-   discarded.  The header is always checked for validity, including the header
-   CRC if present.  inflateReset() will reset the process to discard the header
-   information.  The application would need to call inflateGetHeader() again to
-   retrieve the header from the next gzip stream.
-
-      inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent.
-*/
-
-/*
-ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
-                                        unsigned char FAR *window));
-
-     Initialize the internal stream state for decompression using inflateBack()
-   calls.  The fields zalloc, zfree and opaque in strm must be initialized
-   before the call.  If zalloc and zfree are Z_NULL, then the default library-
-   derived memory allocation routines are used.  windowBits is the base two
-   logarithm of the window size, in the range 8..15.  window is a caller
-   supplied buffer of that size.  Except for special applications where it is
-   assured that deflate was used with small window sizes, windowBits must be 15
-   and a 32K byte window must be supplied to be able to decompress general
-   deflate streams.
-
-     See inflateBack() for the usage of these routines.
-
-     inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
-   the paramaters are invalid, Z_MEM_ERROR if the internal state could not
-   be allocated, or Z_VERSION_ERROR if the version of the library does not
-   match the version of the header file.
-*/
-
-typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
-typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
-
-ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
-                                    in_func in, void FAR *in_desc,
-                                    out_func out, void FAR *out_desc));
-/*
-     inflateBack() does a raw inflate with a single call using a call-back
-   interface for input and output.  This is more efficient than inflate() for
-   file i/o applications in that it avoids copying between the output and the
-   sliding window by simply making the window itself the output buffer.  This
-   function trusts the application to not change the output buffer passed by
-   the output function, at least until inflateBack() returns.
-
-     inflateBackInit() must be called first to allocate the internal state
-   and to initialize the state with the user-provided window buffer.
-   inflateBack() may then be used multiple times to inflate a complete, raw
-   deflate stream with each call.  inflateBackEnd() is then called to free
-   the allocated state.
-
-     A raw deflate stream is one with no zlib or gzip header or trailer.
-   This routine would normally be used in a utility that reads zip or gzip
-   files and writes out uncompressed files.  The utility would decode the
-   header and process the trailer on its own, hence this routine expects
-   only the raw deflate stream to decompress.  This is different from the
-   normal behavior of inflate(), which expects either a zlib or gzip header and
-   trailer around the deflate stream.
-
-     inflateBack() uses two subroutines supplied by the caller that are then
-   called by inflateBack() for input and output.  inflateBack() calls those
-   routines until it reads a complete deflate stream and writes out all of the
-   uncompressed data, or until it encounters an error.  The function's
-   parameters and return types are defined above in the in_func and out_func
-   typedefs.  inflateBack() will call in(in_desc, &buf) which should return the
-   number of bytes of provided input, and a pointer to that input in buf.  If
-   there is no input available, in() must return zero--buf is ignored in that
-   case--and inflateBack() will return a buffer error.  inflateBack() will call
-   out(out_desc, buf, len) to write the uncompressed data buf[0..len-1].  out()
-   should return zero on success, or non-zero on failure.  If out() returns
-   non-zero, inflateBack() will return with an error.  Neither in() nor out()
-   are permitted to change the contents of the window provided to
-   inflateBackInit(), which is also the buffer that out() uses to write from.
-   The length written by out() will be at most the window size.  Any non-zero
-   amount of input may be provided by in().
-
-     For convenience, inflateBack() can be provided input on the first call by
-   setting strm->next_in and strm->avail_in.  If that input is exhausted, then
-   in() will be called.  Therefore strm->next_in must be initialized before
-   calling inflateBack().  If strm->next_in is Z_NULL, then in() will be called
-   immediately for input.  If strm->next_in is not Z_NULL, then strm->avail_in
-   must also be initialized, and then if strm->avail_in is not zero, input will
-   initially be taken from strm->next_in[0 .. strm->avail_in - 1].
-
-     The in_desc and out_desc parameters of inflateBack() is passed as the
-   first parameter of in() and out() respectively when they are called.  These
-   descriptors can be optionally used to pass any information that the caller-
-   supplied in() and out() functions need to do their job.
-
-     On return, inflateBack() will set strm->next_in and strm->avail_in to
-   pass back any unused input that was provided by the last in() call.  The
-   return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR
-   if in() or out() returned an error, Z_DATA_ERROR if there was a format
-   error in the deflate stream (in which case strm->msg is set to indicate the
-   nature of the error), or Z_STREAM_ERROR if the stream was not properly
-   initialized.  In the case of Z_BUF_ERROR, an input or output error can be
-   distinguished using strm->next_in which will be Z_NULL only if in() returned
-   an error.  If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to
-   out() returning non-zero.  (in() will always be called before out(), so
-   strm->next_in is assured to be defined if out() returns non-zero.)  Note
-   that inflateBack() cannot return Z_OK.
-*/
-
-ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
-/*
-     All memory allocated by inflateBackInit() is freed.
-
-     inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream
-   state was inconsistent.
-*/
-
-ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
-/* Return flags indicating compile-time options.
-
-    Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
-     1.0: size of uInt
-     3.2: size of uLong
-     5.4: size of voidpf (pointer)
-     7.6: size of z_off_t
-
-    Compiler, assembler, and debug options:
-     8: DEBUG
-     9: ASMV or ASMINF -- use ASM code
-     10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
-     11: 0 (reserved)
-
-    One-time table building (smaller code, but not thread-safe if true):
-     12: BUILDFIXED -- build static block decoding tables when needed
-     13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed
-     14,15: 0 (reserved)
-
-    Library content (indicates missing functionality):
-     16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking
-                          deflate code when not needed)
-     17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect
-                    and decode gzip streams (to avoid linking crc code)
-     18-19: 0 (reserved)
-
-    Operation variations (changes in library functionality):
-     20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate
-     21: FASTEST -- deflate algorithm with only one, lowest compression level
-     22,23: 0 (reserved)
-
-    The sprintf variant used by gzprintf (zero is best):
-     24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format
-     25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!
-     26: 0 = returns value, 1 = void -- 1 means inferred string length returned
-
-    Remainder:
-     27-31: 0 (reserved)
- */
-
-
-                        /* utility functions */
-
-/*
-     The following utility functions are implemented on top of the
-   basic stream-oriented functions. To simplify the interface, some
-   default options are assumed (compression level and memory usage,
-   standard memory allocation functions). The source code of these
-   utility functions can easily be modified if you need special options.
-*/
-
-ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
-                                 const Bytef *source, uLong sourceLen));
-/*
-     Compresses the source buffer into the destination buffer.  sourceLen is
-   the byte length of the source buffer. Upon entry, destLen is the total
-   size of the destination buffer, which must be at least the value returned
-   by compressBound(sourceLen). Upon exit, destLen is the actual size of the
-   compressed buffer.
-     This function can be used to compress a whole file at once if the
-   input file is mmap'ed.
-     compress returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_BUF_ERROR if there was not enough room in the output
-   buffer.
-*/
-
-ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
-                                  const Bytef *source, uLong sourceLen,
-                                  int level));
-/*
-     Compresses the source buffer into the destination buffer. The level
-   parameter has the same meaning as in deflateInit.  sourceLen is the byte
-   length of the source buffer. Upon entry, destLen is the total size of the
-   destination buffer, which must be at least the value returned by
-   compressBound(sourceLen). Upon exit, destLen is the actual size of the
-   compressed buffer.
-
-     compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_BUF_ERROR if there was not enough room in the output buffer,
-   Z_STREAM_ERROR if the level parameter is invalid.
-*/
-
-ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
-/*
-     compressBound() returns an upper bound on the compressed size after
-   compress() or compress2() on sourceLen bytes.  It would be used before
-   a compress() or compress2() call to allocate the destination buffer.
-*/
-
-ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
-                                   const Bytef *source, uLong sourceLen));
-/*
-     Decompresses the source buffer into the destination buffer.  sourceLen is
-   the byte length of the source buffer. Upon entry, destLen is the total
-   size of the destination buffer, which must be large enough to hold the
-   entire uncompressed data. (The size of the uncompressed data must have
-   been saved previously by the compressor and transmitted to the decompressor
-   by some mechanism outside the scope of this compression library.)
-   Upon exit, destLen is the actual size of the compressed buffer.
-     This function can be used to decompress a whole file at once if the
-   input file is mmap'ed.
-
-     uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_BUF_ERROR if there was not enough room in the output
-   buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.
-*/
-
-
-typedef voidp gzFile;
-
-ZEXTERN gzFile ZEXPORT gzopen  OF((const char *path, const char *mode));
-/*
-     Opens a gzip (.gz) file for reading or writing. The mode parameter
-   is as in fopen ("rb" or "wb") but can also include a compression level
-   ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
-   Huffman only compression as in "wb1h", or 'R' for run-length encoding
-   as in "wb1R". (See the description of deflateInit2 for more information
-   about the strategy parameter.)
-
-     gzopen can be used to read a file which is not in gzip format; in this
-   case gzread will directly read from the file without decompression.
-
-     gzopen returns NULL if the file could not be opened or if there was
-   insufficient memory to allocate the (de)compression state; errno
-   can be checked to distinguish the two cases (if errno is zero, the
-   zlib error is Z_MEM_ERROR).  */
-
-ZEXTERN gzFile ZEXPORT gzdopen  OF((int fd, const char *mode));
-/*
-     gzdopen() associates a gzFile with the file descriptor fd.  File
-   descriptors are obtained from calls like open, dup, creat, pipe or
-   fileno (in the file has been previously opened with fopen).
-   The mode parameter is as in gzopen.
-     The next call of gzclose on the returned gzFile will also close the
-   file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
-   descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
-     gzdopen returns NULL if there was insufficient memory to allocate
-   the (de)compression state.
-*/
-
-ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
-/*
-     Dynamically update the compression level or strategy. See the description
-   of deflateInit2 for the meaning of these parameters.
-     gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
-   opened for writing.
-*/
-
-ZEXTERN int ZEXPORT    gzread  OF((gzFile file, voidp buf, unsigned len));
-/*
-     Reads the given number of uncompressed bytes from the compressed file.
-   If the input file was not in gzip format, gzread copies the given number
-   of bytes into the buffer.
-     gzread returns the number of uncompressed bytes actually read (0 for
-   end of file, -1 for error). */
-
-ZEXTERN int ZEXPORT    gzwrite OF((gzFile file,
-                                   voidpc buf, unsigned len));
-/*
-     Writes the given number of uncompressed bytes into the compressed file.
-   gzwrite returns the number of uncompressed bytes actually written
-   (0 in case of error).
-*/
-
-ZEXTERN int ZEXPORTVA   gzprintf OF((gzFile file, const char *format, ...));
-/*
-     Converts, formats, and writes the args to the compressed file under
-   control of the format string, as in fprintf. gzprintf returns the number of
-   uncompressed bytes actually written (0 in case of error).  The number of
-   uncompressed bytes written is limited to 4095. The caller should assure that
-   this limit is not exceeded. If it is exceeded, then gzprintf() will return
-   return an error (0) with nothing written. In this case, there may also be a
-   buffer overflow with unpredictable consequences, which is possible only if
-   zlib was compiled with the insecure functions sprintf() or vsprintf()
-   because the secure snprintf() or vsnprintf() functions were not available.
-*/
-
-ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
-/*
-      Writes the given null-terminated string to the compressed file, excluding
-   the terminating null character.
-      gzputs returns the number of characters written, or -1 in case of error.
-*/
-
-ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
-/*
-      Reads bytes from the compressed file until len-1 characters are read, or
-   a newline character is read and transferred to buf, or an end-of-file
-   condition is encountered.  The string is then terminated with a null
-   character.
-      gzgets returns buf, or Z_NULL in case of error.
-*/
-
-ZEXTERN int ZEXPORT    gzputc OF((gzFile file, int c));
-/*
-      Writes c, converted to an unsigned char, into the compressed file.
-   gzputc returns the value that was written, or -1 in case of error.
-*/
-
-ZEXTERN int ZEXPORT    gzgetc OF((gzFile file));
-/*
-      Reads one byte from the compressed file. gzgetc returns this byte
-   or -1 in case of end of file or error.
-*/
-
-ZEXTERN int ZEXPORT    gzungetc OF((int c, gzFile file));
-/*
-      Push one character back onto the stream to be read again later.
-   Only one character of push-back is allowed.  gzungetc() returns the
-   character pushed, or -1 on failure.  gzungetc() will fail if a
-   character has been pushed but not read yet, or if c is -1. The pushed
-   character will be discarded if the stream is repositioned with gzseek()
-   or gzrewind().
-*/
-
-ZEXTERN int ZEXPORT    gzflush OF((gzFile file, int flush));
-/*
-     Flushes all pending output into the compressed file. The parameter
-   flush is as in the deflate() function. The return value is the zlib
-   error number (see function gzerror below). gzflush returns Z_OK if
-   the flush parameter is Z_FINISH and all output could be flushed.
-     gzflush should be called only when strictly necessary because it can
-   degrade compression.
-*/
-
-ZEXTERN z_off_t ZEXPORT    gzseek OF((gzFile file,
-                                      z_off_t offset, int whence));
-/*
-      Sets the starting position for the next gzread or gzwrite on the
-   given compressed file. The offset represents a number of bytes in the
-   uncompressed data stream. The whence parameter is defined as in lseek(2);
-   the value SEEK_END is not supported.
-     If the file is opened for reading, this function is emulated but can be
-   extremely slow. If the file is opened for writing, only forward seeks are
-   supported; gzseek then compresses a sequence of zeroes up to the new
-   starting position.
-
-      gzseek returns the resulting offset location as measured in bytes from
-   the beginning of the uncompressed stream, or -1 in case of error, in
-   particular if the file is opened for writing and the new starting position
-   would be before the current position.
-*/
-
-ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));
-/*
-     Rewinds the given file. This function is supported only for reading.
-
-   gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
-*/
-
-ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
-/*
-     Returns the starting position for the next gzread or gzwrite on the
-   given compressed file. This position represents a number of bytes in the
-   uncompressed data stream.
-
-   gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
-*/
-
-ZEXTERN int ZEXPORT gzeof OF((gzFile file));
-/*
-     Returns 1 when EOF has previously been detected reading the given
-   input stream, otherwise zero.
-*/
-
-ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
-/*
-     Returns 1 if file is being read directly without decompression, otherwise
-   zero.
-*/
-
-ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
-/*
-     Flushes all pending output if necessary, closes the compressed file
-   and deallocates all the (de)compression state. The return value is the zlib
-   error number (see function gzerror below).
-*/
-
-ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
-/*
-     Returns the error message for the last error which occurred on the
-   given compressed file. errnum is set to zlib error number. If an
-   error occurred in the file system and not in the compression library,
-   errnum is set to Z_ERRNO and the application may consult errno
-   to get the exact error code.
-*/
-
-ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
-/*
-     Clears the error and end-of-file flags for file. This is analogous to the
-   clearerr() function in stdio. This is useful for continuing to read a gzip
-   file that is being written concurrently.
-*/
-
-                        /* checksum functions */
-
-/*
-     These functions are not related to compression but are exported
-   anyway because they might be useful in applications using the
-   compression library.
-*/
-
-ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
-/*
-     Update a running Adler-32 checksum with the bytes buf[0..len-1] and
-   return the updated checksum. If buf is NULL, this function returns
-   the required initial value for the checksum.
-   An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
-   much faster. Usage example:
-
-     uLong adler = adler32(0L, Z_NULL, 0);
-
-     while (read_buffer(buffer, length) != EOF) {
-       adler = adler32(adler, buffer, length);
-     }
-     if (adler != original_adler) error();
-*/
-
-ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
-                                          z_off_t len2));
-/*
-     Combine two Adler-32 checksums into one.  For two sequences of bytes, seq1
-   and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
-   each, adler1 and adler2.  adler32_combine() returns the Adler-32 checksum of
-   seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
-*/
-
-ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
-/*
-     Update a running CRC-32 with the bytes buf[0..len-1] and return the
-   updated CRC-32. If buf is NULL, this function returns the required initial
-   value for the for the crc. Pre- and post-conditioning (one's complement) is
-   performed within this function so it shouldn't be done by the application.
-   Usage example:
-
-     uLong crc = crc32(0L, Z_NULL, 0);
-
-     while (read_buffer(buffer, length) != EOF) {
-       crc = crc32(crc, buffer, length);
-     }
-     if (crc != original_crc) error();
-*/
-
-ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
-
-/*
-     Combine two CRC-32 check values into one.  For two sequences of bytes,
-   seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
-   calculated for each, crc1 and crc2.  crc32_combine() returns the CRC-32
-   check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and
-   len2.
-*/
-
-
-                        /* various hacks, don't look :) */
-
-/* deflateInit and inflateInit are macros to allow checking the zlib version
- * and the compiler's view of z_stream:
- */
-ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
-                                     const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
-                                     const char *version, int stream_size));
-ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int  level, int  method,
-                                      int windowBits, int memLevel,
-                                      int strategy, const char *version,
-                                      int stream_size));
-ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,
-                                      const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
-                                         unsigned char FAR *window,
-                                         const char *version,
-                                         int stream_size));
-#define deflateInit(strm, level) \
-        deflateInit_((strm), (level),       ZLIB_VERSION, sizeof(z_stream))
-#define inflateInit(strm) \
-        inflateInit_((strm),                ZLIB_VERSION, sizeof(z_stream))
-#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
-        deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
-                      (strategy),           ZLIB_VERSION, sizeof(z_stream))
-#define inflateInit2(strm, windowBits) \
-        inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
-#define inflateBackInit(strm, windowBits, window) \
-        inflateBackInit_((strm), (windowBits), (window), \
-        ZLIB_VERSION, sizeof(z_stream))
-
-
-#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
-    struct internal_state {int dummy;}; /* hack for buggy compilers */
-#endif
-
-ZEXTERN const char   * ZEXPORT zError           OF((int));
-ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp z));
-ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ZLIB_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zutil.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zutil.c
deleted file mode 100644
index 0f4bd78..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zutil.c
+++ /dev/null
@@ -1,318 +0,0 @@
-/* zutil.c -- target dependent utility functions for the compression library
- * Copyright (C) 1995-2005 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* @(#) $Id$ */
-
-#include "zutil.h"
-
-#ifndef NO_DUMMY_DECL
-struct internal_state      {int dummy;}; /* for buggy compilers */
-#endif
-
-const char * const z_errmsg[10] = {
-"need dictionary",     /* Z_NEED_DICT       2  */
-"stream end",          /* Z_STREAM_END      1  */
-"",                    /* Z_OK              0  */
-"file error",          /* Z_ERRNO         (-1) */
-"stream error",        /* Z_STREAM_ERROR  (-2) */
-"data error",          /* Z_DATA_ERROR    (-3) */
-"insufficient memory", /* Z_MEM_ERROR     (-4) */
-"buffer error",        /* Z_BUF_ERROR     (-5) */
-"incompatible version",/* Z_VERSION_ERROR (-6) */
-""};
-
-
-const char * ZEXPORT zlibVersion()
-{
-    return ZLIB_VERSION;
-}
-
-uLong ZEXPORT zlibCompileFlags()
-{
-    uLong flags;
-
-    flags = 0;
-    switch (sizeof(uInt)) {
-    case 2:     break;
-    case 4:     flags += 1;     break;
-    case 8:     flags += 2;     break;
-    default:    flags += 3;
-    }
-    switch (sizeof(uLong)) {
-    case 2:     break;
-    case 4:     flags += 1 << 2;        break;
-    case 8:     flags += 2 << 2;        break;
-    default:    flags += 3 << 2;
-    }
-    switch (sizeof(voidpf)) {
-    case 2:     break;
-    case 4:     flags += 1 << 4;        break;
-    case 8:     flags += 2 << 4;        break;
-    default:    flags += 3 << 4;
-    }
-    switch (sizeof(z_off_t)) {
-    case 2:     break;
-    case 4:     flags += 1 << 6;        break;
-    case 8:     flags += 2 << 6;        break;
-    default:    flags += 3 << 6;
-    }
-#ifdef DEBUG
-    flags += 1 << 8;
-#endif
-#if defined(ASMV) || defined(ASMINF)
-    flags += 1 << 9;
-#endif
-#ifdef ZLIB_WINAPI
-    flags += 1 << 10;
-#endif
-#ifdef BUILDFIXED
-    flags += 1 << 12;
-#endif
-#ifdef DYNAMIC_CRC_TABLE
-    flags += 1 << 13;
-#endif
-#ifdef NO_GZCOMPRESS
-    flags += 1L << 16;
-#endif
-#ifdef NO_GZIP
-    flags += 1L << 17;
-#endif
-#ifdef PKZIP_BUG_WORKAROUND
-    flags += 1L << 20;
-#endif
-#ifdef FASTEST
-    flags += 1L << 21;
-#endif
-#ifdef STDC
-#  ifdef NO_vsnprintf
-        flags += 1L << 25;
-#    ifdef HAS_vsprintf_void
-        flags += 1L << 26;
-#    endif
-#  else
-#    ifdef HAS_vsnprintf_void
-        flags += 1L << 26;
-#    endif
-#  endif
-#else
-        flags += 1L << 24;
-#  ifdef NO_snprintf
-        flags += 1L << 25;
-#    ifdef HAS_sprintf_void
-        flags += 1L << 26;
-#    endif
-#  else
-#    ifdef HAS_snprintf_void
-        flags += 1L << 26;
-#    endif
-#  endif
-#endif
-    return flags;
-}
-
-#ifdef DEBUG
-
-#  ifndef verbose
-#    define verbose 0
-#  endif
-int z_verbose = verbose;
-
-void z_error (m)
-    char *m;
-{
-    fprintf(stderr, "%s\n", m);
-    exit(1);
-}
-#endif
-
-/* exported to allow conversion of error code to string for compress() and
- * uncompress()
- */
-const char * ZEXPORT zError(err)
-    int err;
-{
-    return ERR_MSG(err);
-}
-
-#if defined(_WIN32_WCE)
-    /* The Microsoft C Run-Time Library for Windows CE doesn't have
-     * errno.  We define it as a global variable to simplify porting.
-     * Its value is always 0 and should not be used.
-     */
-    int errno = 0;
-#endif
-
-#ifndef HAVE_MEMCPY
-
-void zmemcpy(dest, source, len)
-    Bytef* dest;
-    const Bytef* source;
-    uInt  len;
-{
-    if (len == 0) return;
-    do {
-        *dest++ = *source++; /* ??? to be unrolled */
-    } while (--len != 0);
-}
-
-int zmemcmp(s1, s2, len)
-    const Bytef* s1;
-    const Bytef* s2;
-    uInt  len;
-{
-    uInt j;
-
-    for (j = 0; j < len; j++) {
-        if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1;
-    }
-    return 0;
-}
-
-void zmemzero(dest, len)
-    Bytef* dest;
-    uInt  len;
-{
-    if (len == 0) return;
-    do {
-        *dest++ = 0;  /* ??? to be unrolled */
-    } while (--len != 0);
-}
-#endif
-
-
-#ifdef SYS16BIT
-
-#ifdef __TURBOC__
-/* Turbo C in 16-bit mode */
-
-#  define MY_ZCALLOC
-
-/* Turbo C malloc() does not allow dynamic allocation of 64K bytes
- * and farmalloc(64K) returns a pointer with an offset of 8, so we
- * must fix the pointer. Warning: the pointer must be put back to its
- * original form in order to free it, use zcfree().
- */
-
-#define MAX_PTR 10
-/* 10*64K = 640K */
-
-local int next_ptr = 0;
-
-typedef struct ptr_table_s {
-    voidpf org_ptr;
-    voidpf new_ptr;
-} ptr_table;
-
-local ptr_table table[MAX_PTR];
-/* This table is used to remember the original form of pointers
- * to large buffers (64K). Such pointers are normalized with a zero offset.
- * Since MSDOS is not a preemptive multitasking OS, this table is not
- * protected from concurrent access. This hack doesn't work anyway on
- * a protected system like OS/2. Use Microsoft C instead.
- */
-
-voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
-{
-    voidpf buf = opaque; /* just to make some compilers happy */
-    ulg bsize = (ulg)items*size;
-
-    /* If we allocate less than 65520 bytes, we assume that farmalloc
-     * will return a usable pointer which doesn't have to be normalized.
-     */
-    if (bsize < 65520L) {
-        buf = farmalloc(bsize);
-        if (*(ush*)&buf != 0) return buf;
-    } else {
-        buf = farmalloc(bsize + 16L);
-    }
-    if (buf == NULL || next_ptr >= MAX_PTR) return NULL;
-    table[next_ptr].org_ptr = buf;
-
-    /* Normalize the pointer to seg:0 */
-    *((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4;
-    *(ush*)&buf = 0;
-    table[next_ptr++].new_ptr = buf;
-    return buf;
-}
-
-void  zcfree (voidpf opaque, voidpf ptr)
-{
-    int n;
-    if (*(ush*)&ptr != 0) { /* object < 64K */
-        farfree(ptr);
-        return;
-    }
-    /* Find the original pointer */
-    for (n = 0; n < next_ptr; n++) {
-        if (ptr != table[n].new_ptr) continue;
-
-        farfree(table[n].org_ptr);
-        while (++n < next_ptr) {
-            table[n-1] = table[n];
-        }
-        next_ptr--;
-        return;
-    }
-    ptr = opaque; /* just to make some compilers happy */
-    Assert(0, "zcfree: ptr not found");
-}
-
-#endif /* __TURBOC__ */
-
-
-#ifdef M_I86
-/* Microsoft C in 16-bit mode */
-
-#  define MY_ZCALLOC
-
-#if (!defined(_MSC_VER) || (_MSC_VER <= 600))
-#  define _halloc  halloc
-#  define _hfree   hfree
-#endif
-
-voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
-{
-    if (opaque) opaque = 0; /* to make compiler happy */
-    return _halloc((long)items, size);
-}
-
-void  zcfree (voidpf opaque, voidpf ptr)
-{
-    if (opaque) opaque = 0; /* to make compiler happy */
-    _hfree(ptr);
-}
-
-#endif /* M_I86 */
-
-#endif /* SYS16BIT */
-
-
-#ifndef MY_ZCALLOC /* Any system without a special alloc function */
-
-#ifndef STDC
-extern voidp  malloc OF((uInt size));
-extern voidp  calloc OF((uInt items, uInt size));
-extern void   free   OF((voidpf ptr));
-#endif
-
-voidpf zcalloc (opaque, items, size)
-    voidpf opaque;
-    unsigned items;
-    unsigned size;
-{
-    if (opaque) items += size - size; /* make compiler happy */
-    return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) :
-                              (voidpf)calloc(items, size);
-}
-
-void  zcfree (opaque, ptr)
-    voidpf opaque;
-    voidpf ptr;
-{
-    free(ptr);
-    if (opaque) return; /* make compiler happy */
-}
-
-#endif /* MY_ZCALLOC */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zutil.h b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zutil.h
deleted file mode 100644
index 55b6d1a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlib/zutil.h
+++ /dev/null
@@ -1,277 +0,0 @@
-/* zutil.h -- internal interface and configuration of the compression library
-
-    Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- * Copyright (C) 1995-2005 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
-**/
-
-/* WARNING: this file should *not* be used by applications. It is
-   part of the implementation of the compression library and is
-   subject to change. Applications should only use zlib.h.
- */
-
-#ifndef ZUTIL_H
-#define ZUTIL_H
-
-#define ZLIB_INTERNAL
-#include "zlib.h"
-
-#if defined(UEFI_C_SOURCE) || defined(STDC)
-#  ifndef _WIN32_WCE
-#    include <stddef.h>
-#  endif
-#  include <string.h>
-#  include <stdlib.h>
-#endif
-#ifdef NO_ERRNO_H
-#   ifdef _WIN32_WCE
-      /* The Microsoft C Run-Time Library for Windows CE doesn't have
-       * errno.  We define it as a global variable to simplify porting.
-       * Its value is always 0 and should not be used.  We rename it to
-       * avoid conflict with other libraries that use the same workaround.
-       */
-#     define errno z_errno
-#   endif
-    extern int errno;
-#else
-#  ifndef _WIN32_WCE
-#    include <errno.h>
-#  endif
-#endif
-
-#ifndef local
-#  define local static
-#endif
-/* compile with -Dlocal if your debugger can't find static symbols */
-
-typedef unsigned char  uch;
-typedef uch FAR uchf;
-typedef unsigned short ush;
-typedef ush FAR ushf;
-typedef unsigned long  ulg;
-
-extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
-/* (size given to avoid silly warnings with Visual C++) */
-
-#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
-
-#define ERR_RETURN(strm,err) \
-  return (strm->msg = (char*)ERR_MSG(err), (err))
-/* To be used only when the state is known to be valid */
-
-        /* common constants */
-
-#ifndef DEF_WBITS
-#  define DEF_WBITS MAX_WBITS
-#endif
-/* default windowBits for decompression. MAX_WBITS is for compression only */
-
-#if MAX_MEM_LEVEL >= 8
-#  define DEF_MEM_LEVEL 8
-#else
-#  define DEF_MEM_LEVEL  MAX_MEM_LEVEL
-#endif
-/* default memLevel */
-
-#define STORED_BLOCK 0
-#define STATIC_TREES 1
-#define DYN_TREES    2
-/* The three kinds of block type */
-
-#define MIN_MATCH  3
-#define MAX_MATCH  258
-/* The minimum and maximum match lengths */
-
-#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
-
-        /* target dependencies */
-
-#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32))
-#  define OS_CODE  0x00
-#  if defined(__TURBOC__) || defined(__BORLANDC__)
-#    if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
-       /* Allow compilation with ANSI keywords only enabled */
-       void _Cdecl farfree( void *block );
-       void *_Cdecl farmalloc( unsigned long nbytes );
-#    else
-#      include <alloc.h>
-#    endif
-#  else /* MSC or DJGPP */
-#    include <malloc.h>
-#  endif
-#endif
-
-#ifdef AMIGA
-#  define OS_CODE  0x01
-#endif
-
-#if defined(VAXC) || defined(VMS)
-#  define OS_CODE  0x02
-#  define F_OPEN(name, mode) \
-     fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
-#endif
-
-#if defined(ATARI) || defined(atarist)
-#  define OS_CODE  0x05
-#endif
-
-#ifdef OS2
-#  define OS_CODE  0x06
-#  ifdef M_I86
-     #include <malloc.h>
-#  endif
-#endif
-
-#if defined(MACOS) || defined(TARGET_OS_MAC)
-#  define OS_CODE  0x07
-#  if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
-#    include <unix.h> /* for fdopen */
-#  else
-#    ifndef fdopen
-#      define fdopen(fd,mode) NULL /* No fdopen() */
-#    endif
-#  endif
-#endif
-
-#ifdef TOPS20
-#  define OS_CODE  0x0a
-#endif
-
-#ifdef WIN32
-#  ifndef __CYGWIN__  /* Cygwin is Unix, not Win32 */
-#    define OS_CODE  0x0b
-#  endif
-#endif
-
-#ifdef __50SERIES /* Prime/PRIMOS */
-#  define OS_CODE  0x0f
-#endif
-
-#if defined(_BEOS_) || defined(RISCOS)
-#  define fdopen(fd,mode) NULL /* No fdopen() */
-#endif
-
-#if !defined(UEFI_C_SOURCE) && (defined(_MSC_VER) && (_MSC_VER > 600))
-#  if defined(_WIN32_WCE)
-#    define fdopen(fd,mode) NULL /* No fdopen() */
-#    ifndef _PTRDIFF_T_DEFINED
-       typedef int ptrdiff_t;
-#      define _PTRDIFF_T_DEFINED
-#    endif
-#  else
-#    define fdopen(fd,type)  _fdopen(fd,type)
-#  endif
-#endif
-
-        /* common defaults */
-
-#ifndef OS_CODE
-#  define OS_CODE  0x03  /* assume Unix */
-#endif
-
-#ifndef F_OPEN
-#  define F_OPEN(name, mode) fopen((name), (mode))
-#endif
-
-         /* functions */
-
-#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550)
-#  ifndef HAVE_VSNPRINTF
-#    define HAVE_VSNPRINTF
-#  endif
-#endif
-#if defined(__CYGWIN__)
-#  ifndef HAVE_VSNPRINTF
-#    define HAVE_VSNPRINTF
-#  endif
-#endif
-#ifndef HAVE_VSNPRINTF
-#  ifdef MSDOS
-     /* vsnprintf may exist on some MS-DOS compilers (DJGPP?),
-        but for now we just assume it doesn't. */
-#    define NO_vsnprintf
-#  endif
-#  ifdef __TURBOC__
-#    define NO_vsnprintf
-#  endif
-#  ifdef WIN32
-     /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */
-#    if !defined(vsnprintf) && !defined(NO_vsnprintf)
-#      define vsnprintf _vsnprintf
-#    endif
-#  endif
-#  ifdef __SASC
-#    define NO_vsnprintf
-#  endif
-#endif
-#ifdef VMS
-#  define NO_vsnprintf
-#endif
-
-#if defined(pyr)
-#  define NO_MEMCPY
-#endif
-#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
- /* Use our own functions for small and medium model with MSC <= 5.0.
-  * You may have to use the same strategy for Borland C (untested).
-  * The __SC__ check is for Symantec.
-  */
-#  define NO_MEMCPY
-#endif
-#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
-#  define HAVE_MEMCPY
-#endif
-#ifdef HAVE_MEMCPY
-#  ifdef SMALL_MEDIUM /* MSDOS small or medium model */
-#    define zmemcpy _fmemcpy
-#    define zmemcmp _fmemcmp
-#    define zmemzero(dest, len) _fmemset(dest, 0, len)
-#  else
-#    define zmemcpy memcpy
-#    define zmemcmp memcmp
-#    define zmemzero(dest, len) memset(dest, 0, len)
-#  endif
-#else
-   extern void zmemcpy  OF((Bytef* dest, const Bytef* source, uInt len));
-   extern int  zmemcmp  OF((const Bytef* s1, const Bytef* s2, uInt len));
-   extern void zmemzero OF((Bytef* dest, uInt len));
-#endif
-
-/* Diagnostic functions */
-#ifdef DEBUG
-#  include <stdio.h>
-   extern int z_verbose;
-   extern void z_error    OF((char *m));
-#  define Assert(cond,msg) {if(!(cond)) z_error(msg);}
-#  define Trace(x) {if (z_verbose>=0) fprintf x ;}
-#  define Tracev(x) {if (z_verbose>0) fprintf x ;}
-#  define Tracevv(x) {if (z_verbose>1) fprintf x ;}
-#  define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;}
-#  define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;}
-#else
-#  define Assert(cond,msg)
-#  define Trace(x)
-#  define Tracev(x)
-#  define Tracevv(x)
-#  define Tracec(c,x)
-#  define Tracecv(c,x)
-#endif
-
-
-voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
-void   zcfree  OF((voidpf opaque, voidpf ptr));
-
-#define ZALLOC(strm, items, size) \
-           (*((strm)->zalloc))((strm)->opaque, (items), (size))
-#define ZFREE(strm, addr)  (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
-#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
-
-#endif /* ZUTIL_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlibmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Modules/zlibmodule.c
deleted file mode 100644
index 81d3f6c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Modules/zlibmodule.c
+++ /dev/null
@@ -1,1058 +0,0 @@
-/* zlibmodule.c -- gzip-compatible data compression */
-/* See http://www.gzip.org/zlib/ */
-
-/* Windows users:  read Python's PCbuild\readme.txt */
-
-
-#include "Python.h"
-#include "zlib.h"
-
-#ifdef WITH_THREAD
-#include "pythread.h"
-
-/* #defs ripped off from _tkinter.c, even though the situation here is much
-   simpler, because we don't have to worry about waiting for Tcl
-   events!  And, since zlib itself is threadsafe, we don't need to worry
-   about re-entering zlib functions.
-
-   N.B.
-
-   Since ENTER_ZLIB and LEAVE_ZLIB only need to be called on functions
-   that modify the components of preexisting de/compress objects, it
-   could prove to be a performance gain on multiprocessor machines if
-   there was an de/compress object-specific lock.  However, for the
-   moment the ENTER_ZLIB and LEAVE_ZLIB calls are global for ALL
-   de/compress objects.
- */
-
-static PyThread_type_lock zlib_lock = NULL; /* initialized on module load */
-
-#define ENTER_ZLIB \
-        Py_BEGIN_ALLOW_THREADS \
-        PyThread_acquire_lock(zlib_lock, 1); \
-        Py_END_ALLOW_THREADS
-
-#define LEAVE_ZLIB \
-        PyThread_release_lock(zlib_lock);
-
-#else
-
-#define ENTER_ZLIB
-#define LEAVE_ZLIB
-
-#endif
-
-/* The following parameters are copied from zutil.h, version 0.95 */
-#define DEFLATED   8
-#if MAX_MEM_LEVEL >= 8
-#  define DEF_MEM_LEVEL 8
-#else
-#  define DEF_MEM_LEVEL  MAX_MEM_LEVEL
-#endif
-#define DEF_WBITS MAX_WBITS
-
-/* The output buffer will be increased in chunks of DEFAULTALLOC bytes. */
-#define DEFAULTALLOC (16*1024)
-#define PyInit_zlib initzlib
-
-static PyTypeObject Comptype;
-static PyTypeObject Decomptype;
-
-static PyObject *ZlibError;
-
-typedef struct
-{
-    PyObject_HEAD
-    z_stream zst;
-    PyObject *unused_data;
-    PyObject *unconsumed_tail;
-    int is_initialised;
-} compobject;
-
-static void
-zlib_error(z_stream zst, int err, char *msg)
-{
-    const char *zmsg = zst.msg;
-    if (zmsg == Z_NULL) {
-        switch (err) {
-        case Z_BUF_ERROR:
-            zmsg = "incomplete or truncated stream";
-            break;
-        case Z_STREAM_ERROR:
-            zmsg = "inconsistent stream state";
-            break;
-        case Z_DATA_ERROR:
-            zmsg = "invalid input data";
-            break;
-        }
-    }
-    if (zmsg == Z_NULL)
-        PyErr_Format(ZlibError, "Error %d %s", err, msg);
-    else
-        PyErr_Format(ZlibError, "Error %d %s: %.200s", err, msg, zmsg);
-}
-
-PyDoc_STRVAR(compressobj__doc__,
-"compressobj([level]) -- Return a compressor object.\n"
-"\n"
-"Optional arg level is the compression level, in 1-9.");
-
-PyDoc_STRVAR(decompressobj__doc__,
-"decompressobj([wbits]) -- Return a decompressor object.\n"
-"\n"
-"Optional arg wbits is the window buffer size.");
-
-static compobject *
-newcompobject(PyTypeObject *type)
-{
-    compobject *self;
-    self = PyObject_New(compobject, type);
-    if (self == NULL)
-        return NULL;
-    self->is_initialised = 0;
-    self->unused_data = PyString_FromString("");
-    if (self->unused_data == NULL) {
-        Py_DECREF(self);
-        return NULL;
-    }
-    self->unconsumed_tail = PyString_FromString("");
-    if (self->unconsumed_tail == NULL) {
-        Py_DECREF(self);
-        return NULL;
-    }
-    return self;
-}
-
-PyDoc_STRVAR(compress__doc__,
-"compress(string[, level]) -- Returned compressed string.\n"
-"\n"
-"Optional arg level is the compression level, in 1-9.");
-
-static PyObject *
-PyZlib_compress(PyObject *self, PyObject *args)
-{
-    PyObject *ReturnVal = NULL;
-    Byte *input, *output;
-    int length, level=Z_DEFAULT_COMPRESSION, err;
-    z_stream zst;
-
-    /* require Python string object, optional 'level' arg */
-    if (!PyArg_ParseTuple(args, "s#|i:compress", &input, &length, &level))
-        return NULL;
-
-    zst.avail_out = length + length/1000 + 12 + 1;
-
-    output = (Byte*)malloc(zst.avail_out);
-    if (output == NULL) {
-        PyErr_SetString(PyExc_MemoryError,
-                        "Can't allocate memory to compress data");
-        return NULL;
-    }
-
-    /* Past the point of no return.  From here on out, we need to make sure
-       we clean up mallocs & INCREFs. */
-
-    zst.zalloc = (alloc_func)NULL;
-    zst.zfree = (free_func)Z_NULL;
-    zst.next_out = (Byte *)output;
-    zst.next_in = (Byte *)input;
-    zst.avail_in = length;
-    err = deflateInit(&zst, level);
-
-    switch(err) {
-    case(Z_OK):
-        break;
-    case(Z_MEM_ERROR):
-        PyErr_SetString(PyExc_MemoryError,
-                        "Out of memory while compressing data");
-        goto error;
-    case(Z_STREAM_ERROR):
-        PyErr_SetString(ZlibError,
-                        "Bad compression level");
-        goto error;
-    default:
-        deflateEnd(&zst);
-        zlib_error(zst, err, "while compressing data");
-        goto error;
-    }
-
-    Py_BEGIN_ALLOW_THREADS;
-    err = deflate(&zst, Z_FINISH);
-    Py_END_ALLOW_THREADS;
-
-    if (err != Z_STREAM_END) {
-        zlib_error(zst, err, "while compressing data");
-        deflateEnd(&zst);
-        goto error;
-    }
-
-    err=deflateEnd(&zst);
-    if (err == Z_OK)
-        ReturnVal = PyString_FromStringAndSize((char *)output,
-                                               zst.total_out);
-    else
-        zlib_error(zst, err, "while finishing compression");
-
- error:
-    free(output);
-
-    return ReturnVal;
-}
-
-PyDoc_STRVAR(decompress__doc__,
-"decompress(string[, wbits[, bufsize]]) -- Return decompressed string.\n"
-"\n"
-"Optional arg wbits is the window buffer size.  Optional arg bufsize is\n"
-"the initial output buffer size.");
-
-static PyObject *
-PyZlib_decompress(PyObject *self, PyObject *args)
-{
-    PyObject *result_str;
-    Byte *input;
-    int length, err;
-    int wsize=DEF_WBITS;
-    Py_ssize_t r_strlen=DEFAULTALLOC;
-    z_stream zst;
-
-    if (!PyArg_ParseTuple(args, "s#|in:decompress",
-                          &input, &length, &wsize, &r_strlen))
-        return NULL;
-
-    if (r_strlen <= 0)
-        r_strlen = 1;
-
-    zst.avail_in = length;
-    zst.avail_out = r_strlen;
-
-    if (!(result_str = PyString_FromStringAndSize(NULL, r_strlen)))
-        return NULL;
-
-    zst.zalloc = (alloc_func)NULL;
-    zst.zfree = (free_func)Z_NULL;
-    zst.next_out = (Byte *)PyString_AS_STRING(result_str);
-    zst.next_in = (Byte *)input;
-    err = inflateInit2(&zst, wsize);
-
-    switch(err) {
-    case(Z_OK):
-        break;
-    case(Z_MEM_ERROR):
-        PyErr_SetString(PyExc_MemoryError,
-                        "Out of memory while decompressing data");
-        goto error;
-    default:
-        inflateEnd(&zst);
-        zlib_error(zst, err, "while preparing to decompress data");
-        goto error;
-    }
-
-    do {
-        Py_BEGIN_ALLOW_THREADS
-        err=inflate(&zst, Z_FINISH);
-        Py_END_ALLOW_THREADS
-
-        switch(err) {
-        case(Z_STREAM_END):
-            break;
-        case(Z_BUF_ERROR):
-            /*
-             * If there is at least 1 byte of room according to zst.avail_out
-             * and we get this error, assume that it means zlib cannot
-             * process the inflate call() due to an error in the data.
-             */
-            if (zst.avail_out > 0) {
-                zlib_error(zst, err, "while decompressing data");
-                inflateEnd(&zst);
-                goto error;
-            }
-            /* fall through */
-        case(Z_OK):
-            /* need more memory */
-            if (_PyString_Resize(&result_str, r_strlen << 1) < 0) {
-                inflateEnd(&zst);
-                goto error;
-            }
-            zst.next_out = (unsigned char *)PyString_AS_STRING(result_str) \
-                + r_strlen;
-            zst.avail_out = r_strlen;
-            r_strlen = r_strlen << 1;
-            break;
-        default:
-            inflateEnd(&zst);
-            zlib_error(zst, err, "while decompressing data");
-            goto error;
-        }
-    } while (err != Z_STREAM_END);
-
-    err = inflateEnd(&zst);
-    if (err != Z_OK) {
-        zlib_error(zst, err, "while finishing data decompression");
-        goto error;
-    }
-
-    _PyString_Resize(&result_str, zst.total_out);
-    return result_str;
-
- error:
-    Py_XDECREF(result_str);
-    return NULL;
-}
-
-static PyObject *
-PyZlib_compressobj(PyObject *selfptr, PyObject *args)
-{
-    compobject *self;
-    int level=Z_DEFAULT_COMPRESSION, method=DEFLATED;
-    int wbits=MAX_WBITS, memLevel=DEF_MEM_LEVEL, strategy=0, err;
-
-    if (!PyArg_ParseTuple(args, "|iiiii:compressobj", &level, &method, &wbits,
-                          &memLevel, &strategy))
-        return NULL;
-
-    self = newcompobject(&Comptype);
-    if (self==NULL)
-        return(NULL);
-    self->zst.zalloc = (alloc_func)NULL;
-    self->zst.zfree = (free_func)Z_NULL;
-    self->zst.next_in = NULL;
-    self->zst.avail_in = 0;
-    err = deflateInit2(&self->zst, level, method, wbits, memLevel, strategy);
-    switch(err) {
-    case (Z_OK):
-        self->is_initialised = 1;
-        return (PyObject*)self;
-    case (Z_MEM_ERROR):
-        Py_DECREF(self);
-        PyErr_SetString(PyExc_MemoryError,
-                        "Can't allocate memory for compression object");
-        return NULL;
-    case(Z_STREAM_ERROR):
-        Py_DECREF(self);
-        PyErr_SetString(PyExc_ValueError, "Invalid initialization option");
-        return NULL;
-    default:
-        zlib_error(self->zst, err, "while creating compression object");
-        Py_DECREF(self);
-        return NULL;
-    }
-}
-
-static PyObject *
-PyZlib_decompressobj(PyObject *selfptr, PyObject *args)
-{
-    int wbits=DEF_WBITS, err;
-    compobject *self;
-    if (!PyArg_ParseTuple(args, "|i:decompressobj", &wbits))
-        return NULL;
-
-    self = newcompobject(&Decomptype);
-    if (self == NULL)
-        return(NULL);
-    self->zst.zalloc = (alloc_func)NULL;
-    self->zst.zfree = (free_func)Z_NULL;
-    self->zst.next_in = NULL;
-    self->zst.avail_in = 0;
-    err = inflateInit2(&self->zst, wbits);
-    switch(err) {
-    case (Z_OK):
-        self->is_initialised = 1;
-        return (PyObject*)self;
-    case(Z_STREAM_ERROR):
-        Py_DECREF(self);
-        PyErr_SetString(PyExc_ValueError, "Invalid initialization option");
-        return NULL;
-    case (Z_MEM_ERROR):
-        Py_DECREF(self);
-        PyErr_SetString(PyExc_MemoryError,
-                        "Can't allocate memory for decompression object");
-        return NULL;
-    default:
-        zlib_error(self->zst, err, "while creating decompression object");
-        Py_DECREF(self);
-        return NULL;
-    }
-}
-
-static void
-Comp_dealloc(compobject *self)
-{
-    if (self->is_initialised)
-        deflateEnd(&self->zst);
-    Py_XDECREF(self->unused_data);
-    Py_XDECREF(self->unconsumed_tail);
-    PyObject_Del(self);
-}
-
-static void
-Decomp_dealloc(compobject *self)
-{
-    if (self->is_initialised)
-        inflateEnd(&self->zst);
-    Py_XDECREF(self->unused_data);
-    Py_XDECREF(self->unconsumed_tail);
-    PyObject_Del(self);
-}
-
-PyDoc_STRVAR(comp_compress__doc__,
-"compress(data) -- Return a string containing data compressed.\n"
-"\n"
-"After calling this function, some of the input data may still\n"
-"be stored in internal buffers for later processing.\n"
-"Call the flush() method to clear these buffers.");
-
-
-static PyObject *
-PyZlib_objcompress(compobject *self, PyObject *args)
-{
-    int err, inplen;
-    Py_ssize_t length = DEFAULTALLOC;
-    PyObject *RetVal;
-    Byte *input;
-    unsigned long start_total_out;
-
-    if (!PyArg_ParseTuple(args, "s#:compress", &input, &inplen))
-        return NULL;
-
-    if (!(RetVal = PyString_FromStringAndSize(NULL, length)))
-        return NULL;
-
-    ENTER_ZLIB
-
-    start_total_out = self->zst.total_out;
-    self->zst.avail_in = inplen;
-    self->zst.next_in = input;
-    self->zst.avail_out = length;
-    self->zst.next_out = (unsigned char *)PyString_AS_STRING(RetVal);
-
-    Py_BEGIN_ALLOW_THREADS
-    err = deflate(&(self->zst), Z_NO_FLUSH);
-    Py_END_ALLOW_THREADS
-
-    /* while Z_OK and the output buffer is full, there might be more output,
-       so extend the output buffer and try again */
-    while (err == Z_OK && self->zst.avail_out == 0) {
-        if (_PyString_Resize(&RetVal, length << 1) < 0)
-            goto error;
-        self->zst.next_out = (unsigned char *)PyString_AS_STRING(RetVal) \
-            + length;
-        self->zst.avail_out = length;
-        length = length << 1;
-
-        Py_BEGIN_ALLOW_THREADS
-        err = deflate(&(self->zst), Z_NO_FLUSH);
-        Py_END_ALLOW_THREADS
-    }
-    /* We will only get Z_BUF_ERROR if the output buffer was full but
-       there wasn't more output when we tried again, so it is not an error
-       condition.
-    */
-
-    if (err != Z_OK && err != Z_BUF_ERROR) {
-        zlib_error(self->zst, err, "while compressing");
-        Py_DECREF(RetVal);
-        RetVal = NULL;
-        goto error;
-    }
-    _PyString_Resize(&RetVal, self->zst.total_out - start_total_out);
-
- error:
-    LEAVE_ZLIB
-    return RetVal;
-}
-
-PyDoc_STRVAR(decomp_decompress__doc__,
-"decompress(data, max_length) -- Return a string containing the decompressed\n"
-"version of the data.\n"
-"\n"
-"After calling this function, some of the input data may still be stored in\n"
-"internal buffers for later processing.\n"
-"Call the flush() method to clear these buffers.\n"
-"If the max_length parameter is specified then the return value will be\n"
-"no longer than max_length.  Unconsumed input data will be stored in\n"
-"the unconsumed_tail attribute.");
-
-static PyObject *
-PyZlib_objdecompress(compobject *self, PyObject *args)
-{
-    int err, inplen, max_length = 0;
-    Py_ssize_t old_length, length = DEFAULTALLOC;
-    PyObject *RetVal;
-    Byte *input;
-    unsigned long start_total_out;
-
-    if (!PyArg_ParseTuple(args, "s#|i:decompress", &input,
-                          &inplen, &max_length))
-        return NULL;
-    if (max_length < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "max_length must be greater than zero");
-        return NULL;
-    }
-
-    /* limit amount of data allocated to max_length */
-    if (max_length && length > max_length)
-        length = max_length;
-    if (!(RetVal = PyString_FromStringAndSize(NULL, length)))
-        return NULL;
-
-    ENTER_ZLIB
-
-    start_total_out = self->zst.total_out;
-    self->zst.avail_in = inplen;
-    self->zst.next_in = input;
-    self->zst.avail_out = length;
-    self->zst.next_out = (unsigned char *)PyString_AS_STRING(RetVal);
-
-    Py_BEGIN_ALLOW_THREADS
-    err = inflate(&(self->zst), Z_SYNC_FLUSH);
-    Py_END_ALLOW_THREADS
-
-    /* While Z_OK and the output buffer is full, there might be more output.
-       So extend the output buffer and try again.
-    */
-    while (err == Z_OK && self->zst.avail_out == 0) {
-        /* If max_length set, don't continue decompressing if we've already
-           reached the limit.
-        */
-        if (max_length && length >= max_length)
-            break;
-
-        /* otherwise, ... */
-        old_length = length;
-        length = length << 1;
-        if (max_length && length > max_length)
-            length = max_length;
-
-        if (_PyString_Resize(&RetVal, length) < 0)
-            goto error;
-        self->zst.next_out = (unsigned char *)PyString_AS_STRING(RetVal) \
-            + old_length;
-        self->zst.avail_out = length - old_length;
-
-        Py_BEGIN_ALLOW_THREADS
-        err = inflate(&(self->zst), Z_SYNC_FLUSH);
-        Py_END_ALLOW_THREADS
-    }
-
-    if(max_length) {
-        /* Not all of the compressed data could be accommodated in a buffer of
-           the specified size. Return the unconsumed tail in an attribute. */
-        Py_DECREF(self->unconsumed_tail);
-        self->unconsumed_tail = PyString_FromStringAndSize((char *)self->zst.next_in,
-                                                           self->zst.avail_in);
-    }
-    else if (PyString_GET_SIZE(self->unconsumed_tail) > 0) {
-        /* All of the compressed data was consumed. Clear unconsumed_tail. */
-        Py_DECREF(self->unconsumed_tail);
-        self->unconsumed_tail = PyString_FromStringAndSize("", 0);
-    }
-    if(!self->unconsumed_tail) {
-        Py_DECREF(RetVal);
-        RetVal = NULL;
-        goto error;
-    }
-
-    /* The end of the compressed data has been reached, so set the
-       unused_data attribute to a string containing the remainder of the
-       data in the string.  Note that this is also a logical place to call
-       inflateEnd, but the old behaviour of only calling it on flush() is
-       preserved.
-    */
-    if (err == Z_STREAM_END) {
-        Py_XDECREF(self->unused_data);  /* Free original empty string */
-        self->unused_data = PyString_FromStringAndSize(
-            (char *)self->zst.next_in, self->zst.avail_in);
-        if (self->unused_data == NULL) {
-            Py_DECREF(RetVal);
-            goto error;
-        }
-        /* We will only get Z_BUF_ERROR if the output buffer was full
-           but there wasn't more output when we tried again, so it is
-           not an error condition.
-        */
-    } else if (err != Z_OK && err != Z_BUF_ERROR) {
-        zlib_error(self->zst, err, "while decompressing");
-        Py_DECREF(RetVal);
-        RetVal = NULL;
-        goto error;
-    }
-
-    _PyString_Resize(&RetVal, self->zst.total_out - start_total_out);
-
- error:
-    LEAVE_ZLIB
-
-    return RetVal;
-}
-
-PyDoc_STRVAR(comp_flush__doc__,
-"flush( [mode] ) -- Return a string containing any remaining compressed data.\n"
-"\n"
-"mode can be one of the constants Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH; the\n"
-"default value used when mode is not specified is Z_FINISH.\n"
-"If mode == Z_FINISH, the compressor object can no longer be used after\n"
-"calling the flush() method.  Otherwise, more data can still be compressed.");
-
-static PyObject *
-PyZlib_flush(compobject *self, PyObject *args)
-{
-    int err, length = DEFAULTALLOC;
-    PyObject *RetVal;
-    int flushmode = Z_FINISH;
-    unsigned long start_total_out;
-
-    if (!PyArg_ParseTuple(args, "|i:flush", &flushmode))
-        return NULL;
-
-    /* Flushing with Z_NO_FLUSH is a no-op, so there's no point in
-       doing any work at all; just return an empty string. */
-    if (flushmode == Z_NO_FLUSH) {
-        return PyString_FromStringAndSize(NULL, 0);
-    }
-
-    if (!(RetVal = PyString_FromStringAndSize(NULL, length)))
-        return NULL;
-
-    ENTER_ZLIB
-
-    start_total_out = self->zst.total_out;
-    self->zst.avail_in = 0;
-    self->zst.avail_out = length;
-    self->zst.next_out = (unsigned char *)PyString_AS_STRING(RetVal);
-
-    Py_BEGIN_ALLOW_THREADS
-    err = deflate(&(self->zst), flushmode);
-    Py_END_ALLOW_THREADS
-
-    /* while Z_OK and the output buffer is full, there might be more output,
-       so extend the output buffer and try again */
-    while (err == Z_OK && self->zst.avail_out == 0) {
-        if (_PyString_Resize(&RetVal, length << 1) < 0)
-            goto error;
-        self->zst.next_out = (unsigned char *)PyString_AS_STRING(RetVal) \
-            + length;
-        self->zst.avail_out = length;
-        length = length << 1;
-
-        Py_BEGIN_ALLOW_THREADS
-        err = deflate(&(self->zst), flushmode);
-        Py_END_ALLOW_THREADS
-    }
-
-    /* If flushmode is Z_FINISH, we also have to call deflateEnd() to free
-       various data structures. Note we should only get Z_STREAM_END when
-       flushmode is Z_FINISH, but checking both for safety*/
-    if (err == Z_STREAM_END && flushmode == Z_FINISH) {
-        err = deflateEnd(&(self->zst));
-        if (err != Z_OK) {
-            zlib_error(self->zst, err, "from deflateEnd()");
-            Py_DECREF(RetVal);
-            RetVal = NULL;
-            goto error;
-        }
-        else
-            self->is_initialised = 0;
-
-        /* We will only get Z_BUF_ERROR if the output buffer was full
-           but there wasn't more output when we tried again, so it is
-           not an error condition.
-        */
-    } else if (err!=Z_OK && err!=Z_BUF_ERROR) {
-        zlib_error(self->zst, err, "while flushing");
-        Py_DECREF(RetVal);
-        RetVal = NULL;
-        goto error;
-    }
-
-    _PyString_Resize(&RetVal, self->zst.total_out - start_total_out);
-
- error:
-    LEAVE_ZLIB
-
-    return RetVal;
-}
-
-#ifdef HAVE_ZLIB_COPY
-PyDoc_STRVAR(comp_copy__doc__,
-"copy() -- Return a copy of the compression object.");
-
-static PyObject *
-PyZlib_copy(compobject *self)
-{
-    compobject *retval = NULL;
-    int err;
-
-    retval = newcompobject(&Comptype);
-    if (!retval) return NULL;
-
-    /* Copy the zstream state
-     * We use ENTER_ZLIB / LEAVE_ZLIB to make this thread-safe
-     */
-    ENTER_ZLIB
-    err = deflateCopy(&retval->zst, &self->zst);
-    switch(err) {
-    case(Z_OK):
-        break;
-    case(Z_STREAM_ERROR):
-        PyErr_SetString(PyExc_ValueError, "Inconsistent stream state");
-        goto error;
-    case(Z_MEM_ERROR):
-        PyErr_SetString(PyExc_MemoryError,
-                        "Can't allocate memory for compression object");
-        goto error;
-    default:
-        zlib_error(self->zst, err, "while copying compression object");
-        goto error;
-    }
-
-    Py_INCREF(self->unused_data);
-    Py_INCREF(self->unconsumed_tail);
-    Py_XDECREF(retval->unused_data);
-    Py_XDECREF(retval->unconsumed_tail);
-    retval->unused_data = self->unused_data;
-    retval->unconsumed_tail = self->unconsumed_tail;
-
-    /* Mark it as being initialized */
-    retval->is_initialised = 1;
-
-    LEAVE_ZLIB
-    return (PyObject *)retval;
-
-error:
-    LEAVE_ZLIB
-    Py_XDECREF(retval);
-    return NULL;
-}
-
-PyDoc_STRVAR(decomp_copy__doc__,
-"copy() -- Return a copy of the decompression object.");
-
-static PyObject *
-PyZlib_uncopy(compobject *self)
-{
-    compobject *retval = NULL;
-    int err;
-
-    retval = newcompobject(&Decomptype);
-    if (!retval) return NULL;
-
-    /* Copy the zstream state
-     * We use ENTER_ZLIB / LEAVE_ZLIB to make this thread-safe
-     */
-    ENTER_ZLIB
-    err = inflateCopy(&retval->zst, &self->zst);
-    switch(err) {
-    case(Z_OK):
-        break;
-    case(Z_STREAM_ERROR):
-        PyErr_SetString(PyExc_ValueError, "Inconsistent stream state");
-        goto error;
-    case(Z_MEM_ERROR):
-        PyErr_SetString(PyExc_MemoryError,
-                        "Can't allocate memory for decompression object");
-        goto error;
-    default:
-        zlib_error(self->zst, err, "while copying decompression object");
-        goto error;
-    }
-
-    Py_INCREF(self->unused_data);
-    Py_INCREF(self->unconsumed_tail);
-    Py_XDECREF(retval->unused_data);
-    Py_XDECREF(retval->unconsumed_tail);
-    retval->unused_data = self->unused_data;
-    retval->unconsumed_tail = self->unconsumed_tail;
-
-    /* Mark it as being initialized */
-    retval->is_initialised = 1;
-
-    LEAVE_ZLIB
-    return (PyObject *)retval;
-
-error:
-    LEAVE_ZLIB
-    Py_XDECREF(retval);
-    return NULL;
-}
-#endif
-
-PyDoc_STRVAR(decomp_flush__doc__,
-"flush( [length] ) -- Return a string containing any remaining\n"
-"decompressed data. length, if given, is the initial size of the\n"
-"output buffer.\n"
-"\n"
-"The decompressor object can no longer be used after this call.");
-
-static PyObject *
-PyZlib_unflush(compobject *self, PyObject *args)
-{
-    int err, length = DEFAULTALLOC;
-    PyObject * retval = NULL;
-    unsigned long start_total_out;
-
-    if (!PyArg_ParseTuple(args, "|i:flush", &length))
-        return NULL;
-    if (length <= 0) {
-        PyErr_SetString(PyExc_ValueError, "length must be greater than zero");
-        return NULL;
-    }
-    if (!(retval = PyString_FromStringAndSize(NULL, length)))
-        return NULL;
-
-
-    ENTER_ZLIB
-
-    start_total_out = self->zst.total_out;
-    self->zst.avail_out = length;
-    self->zst.next_out = (Byte *)PyString_AS_STRING(retval);
-
-    Py_BEGIN_ALLOW_THREADS
-    err = inflate(&(self->zst), Z_FINISH);
-    Py_END_ALLOW_THREADS
-
-    /* while Z_OK and the output buffer is full, there might be more output,
-       so extend the output buffer and try again */
-    while ((err == Z_OK || err == Z_BUF_ERROR) && self->zst.avail_out == 0) {
-        if (_PyString_Resize(&retval, length << 1) < 0)
-            goto error;
-        self->zst.next_out = (Byte *)PyString_AS_STRING(retval) + length;
-        self->zst.avail_out = length;
-        length = length << 1;
-
-        Py_BEGIN_ALLOW_THREADS
-        err = inflate(&(self->zst), Z_FINISH);
-        Py_END_ALLOW_THREADS
-    }
-
-    /* If flushmode is Z_FINISH, we also have to call deflateEnd() to free
-       various data structures. Note we should only get Z_STREAM_END when
-       flushmode is Z_FINISH */
-    if (err == Z_STREAM_END) {
-        err = inflateEnd(&(self->zst));
-        self->is_initialised = 0;
-        if (err != Z_OK) {
-            zlib_error(self->zst, err, "from inflateEnd()");
-            Py_DECREF(retval);
-            retval = NULL;
-            goto error;
-        }
-    }
-    _PyString_Resize(&retval, self->zst.total_out - start_total_out);
-
-error:
-
-    LEAVE_ZLIB
-
-    return retval;
-}
-
-static PyMethodDef comp_methods[] =
-{
-    {"compress", (binaryfunc)PyZlib_objcompress, METH_VARARGS,
-                 comp_compress__doc__},
-    {"flush", (binaryfunc)PyZlib_flush, METH_VARARGS,
-              comp_flush__doc__},
-#ifdef HAVE_ZLIB_COPY
-    {"copy",  (PyCFunction)PyZlib_copy, METH_NOARGS,
-              comp_copy__doc__},
-#endif
-    {NULL, NULL}
-};
-
-static PyMethodDef Decomp_methods[] =
-{
-    {"decompress", (binaryfunc)PyZlib_objdecompress, METH_VARARGS,
-                   decomp_decompress__doc__},
-    {"flush", (binaryfunc)PyZlib_unflush, METH_VARARGS,
-              decomp_flush__doc__},
-#ifdef HAVE_ZLIB_COPY
-    {"copy",  (PyCFunction)PyZlib_uncopy, METH_NOARGS,
-              decomp_copy__doc__},
-#endif
-    {NULL, NULL}
-};
-
-static PyObject *
-Comp_getattr(compobject *self, char *name)
-{
-  /* No ENTER/LEAVE_ZLIB is necessary because this fn doesn't touch
-     internal data. */
-
-  return Py_FindMethod(comp_methods, (PyObject *)self, name);
-}
-
-static PyObject *
-Decomp_getattr(compobject *self, char *name)
-{
-    PyObject * retval;
-
-    ENTER_ZLIB
-
-    if (strcmp(name, "unused_data") == 0) {
-        Py_INCREF(self->unused_data);
-        retval = self->unused_data;
-    } else if (strcmp(name, "unconsumed_tail") == 0) {
-        Py_INCREF(self->unconsumed_tail);
-        retval = self->unconsumed_tail;
-    } else
-        retval = Py_FindMethod(Decomp_methods, (PyObject *)self, name);
-
-    LEAVE_ZLIB
-
-    return retval;
-}
-
-PyDoc_STRVAR(adler32__doc__,
-"adler32(string[, start]) -- Compute an Adler-32 checksum of string.\n"
-"\n"
-"An optional starting value can be specified.  The returned checksum is\n"
-"a signed integer.");
-
-static PyObject *
-PyZlib_adler32(PyObject *self, PyObject *args)
-{
-    unsigned int adler32val = 1;  /* adler32(0L, Z_NULL, 0) */
-    Byte *buf;
-    int len, signed_val;
-
-    if (!PyArg_ParseTuple(args, "s#|I:adler32", &buf, &len, &adler32val))
-        return NULL;
-    /* In Python 2.x we return a signed integer regardless of native platform
-     * long size (the 32bit unsigned long is treated as 32-bit signed and sign
-     * extended into a 64-bit long inside the integer object).  3.0 does the
-     * right thing and returns unsigned. http://bugs.python.org/issue1202 */
-    signed_val = adler32(adler32val, buf, len);
-    return PyInt_FromLong(signed_val);
-}
-
-PyDoc_STRVAR(crc32__doc__,
-"crc32(string[, start]) -- Compute a CRC-32 checksum of string.\n"
-"\n"
-"An optional starting value can be specified.  The returned checksum is\n"
-"a signed integer.");
-
-static PyObject *
-PyZlib_crc32(PyObject *self, PyObject *args)
-{
-    unsigned int crc32val = 0;  /* crc32(0L, Z_NULL, 0) */
-    Byte *buf;
-    int len, signed_val;
-
-    if (!PyArg_ParseTuple(args, "s#|I:crc32", &buf, &len, &crc32val))
-        return NULL;
-    /* In Python 2.x we return a signed integer regardless of native platform
-     * long size (the 32bit unsigned long is treated as 32-bit signed and sign
-     * extended into a 64-bit long inside the integer object).  3.0 does the
-     * right thing and returns unsigned. http://bugs.python.org/issue1202 */
-    signed_val = crc32(crc32val, buf, len);
-    return PyInt_FromLong(signed_val);
-}
-
-
-static PyMethodDef zlib_methods[] =
-{
-    {"adler32", (PyCFunction)PyZlib_adler32, METH_VARARGS,
-                adler32__doc__},
-    {"compress", (PyCFunction)PyZlib_compress,  METH_VARARGS,
-                 compress__doc__},
-    {"compressobj", (PyCFunction)PyZlib_compressobj, METH_VARARGS,
-                    compressobj__doc__},
-    {"crc32", (PyCFunction)PyZlib_crc32, METH_VARARGS,
-              crc32__doc__},
-    {"decompress", (PyCFunction)PyZlib_decompress, METH_VARARGS,
-                   decompress__doc__},
-    {"decompressobj", (PyCFunction)PyZlib_decompressobj, METH_VARARGS,
-                   decompressobj__doc__},
-    {NULL, NULL}
-};
-
-static PyTypeObject Comptype = {
-    PyVarObject_HEAD_INIT(0, 0)
-    "zlib.Compress",
-    sizeof(compobject),
-    0,
-    (destructor)Comp_dealloc,       /*tp_dealloc*/
-    0,                              /*tp_print*/
-    (getattrfunc)Comp_getattr,      /*tp_getattr*/
-    0,                              /*tp_setattr*/
-    0,                              /*tp_compare*/
-    0,                              /*tp_repr*/
-    0,                              /*tp_as_number*/
-    0,                              /*tp_as_sequence*/
-    0,                              /*tp_as_mapping*/
-};
-
-static PyTypeObject Decomptype = {
-    PyVarObject_HEAD_INIT(0, 0)
-    "zlib.Decompress",
-    sizeof(compobject),
-    0,
-    (destructor)Decomp_dealloc,     /*tp_dealloc*/
-    0,                              /*tp_print*/
-    (getattrfunc)Decomp_getattr,    /*tp_getattr*/
-    0,                              /*tp_setattr*/
-    0,                              /*tp_compare*/
-    0,                              /*tp_repr*/
-    0,                              /*tp_as_number*/
-    0,                              /*tp_as_sequence*/
-    0,                              /*tp_as_mapping*/
-};
-
-PyDoc_STRVAR(zlib_module_documentation,
-"The functions in this module allow compression and decompression using the\n"
-"zlib library, which is based on GNU zip.\n"
-"\n"
-"adler32(string[, start]) -- Compute an Adler-32 checksum.\n"
-"compress(string[, level]) -- Compress string, with compression level in 1-9.\n"
-"compressobj([level]) -- Return a compressor object.\n"
-"crc32(string[, start]) -- Compute a CRC-32 checksum.\n"
-"decompress(string,[wbits],[bufsize]) -- Decompresses a compressed string.\n"
-"decompressobj([wbits]) -- Return a decompressor object.\n"
-"\n"
-"'wbits' is window buffer size.\n"
-"Compressor objects support compress() and flush() methods; decompressor\n"
-"objects support decompress() and flush().");
-
-PyMODINIT_FUNC
-PyInit_zlib(void)
-{
-    PyObject *m, *ver;
-    Py_TYPE(&Comptype) = &PyType_Type;
-    Py_TYPE(&Decomptype) = &PyType_Type;
-    m = Py_InitModule4("zlib", zlib_methods,
-                       zlib_module_documentation,
-                       (PyObject*)NULL,PYTHON_API_VERSION);
-    if (m == NULL)
-        return;
-
-    ZlibError = PyErr_NewException("zlib.error", NULL, NULL);
-    if (ZlibError != NULL) {
-        Py_INCREF(ZlibError);
-        PyModule_AddObject(m, "error", ZlibError);
-    }
-    PyModule_AddIntConstant(m, "MAX_WBITS", MAX_WBITS);
-    PyModule_AddIntConstant(m, "DEFLATED", DEFLATED);
-    PyModule_AddIntConstant(m, "DEF_MEM_LEVEL", DEF_MEM_LEVEL);
-    PyModule_AddIntConstant(m, "Z_BEST_SPEED", Z_BEST_SPEED);
-    PyModule_AddIntConstant(m, "Z_BEST_COMPRESSION", Z_BEST_COMPRESSION);
-    PyModule_AddIntConstant(m, "Z_DEFAULT_COMPRESSION", Z_DEFAULT_COMPRESSION);
-    PyModule_AddIntConstant(m, "Z_FILTERED", Z_FILTERED);
-    PyModule_AddIntConstant(m, "Z_HUFFMAN_ONLY", Z_HUFFMAN_ONLY);
-    PyModule_AddIntConstant(m, "Z_DEFAULT_STRATEGY", Z_DEFAULT_STRATEGY);
-
-    PyModule_AddIntConstant(m, "Z_FINISH", Z_FINISH);
-    PyModule_AddIntConstant(m, "Z_NO_FLUSH", Z_NO_FLUSH);
-    PyModule_AddIntConstant(m, "Z_SYNC_FLUSH", Z_SYNC_FLUSH);
-    PyModule_AddIntConstant(m, "Z_FULL_FLUSH", Z_FULL_FLUSH);
-
-    ver = PyString_FromString(ZLIB_VERSION);
-    if (ver != NULL)
-        PyModule_AddObject(m, "ZLIB_VERSION", ver);
-
-    PyModule_AddStringConstant(m, "__version__", "1.0");
-
-#ifdef WITH_THREAD
-    zlib_lock = PyThread_allocate_lock();
-#endif /* WITH_THREAD */
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/abstract.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/abstract.c
deleted file mode 100644
index eb19361..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/abstract.c
+++ /dev/null
@@ -1,3113 +0,0 @@
-/* Abstract Object Interface (many thanks to Jim Fulton) */
-
-#include "Python.h"
-#include <ctype.h>
-#include "structmember.h" /* we need the offsetof() macro from there */
-#include "longintrepr.h"
-
-#define NEW_STYLE_NUMBER(o) PyType_HasFeature((o)->ob_type, \
-                Py_TPFLAGS_CHECKTYPES)
-
-
-/* Shorthands to return certain errors */
-
-static PyObject *
-type_error(const char *msg, PyObject *obj)
-{
-    PyErr_Format(PyExc_TypeError, msg, obj->ob_type->tp_name);
-    return NULL;
-}
-
-static PyObject *
-null_error(void)
-{
-    if (!PyErr_Occurred())
-        PyErr_SetString(PyExc_SystemError,
-                        "null argument to internal routine");
-    return NULL;
-}
-
-/* Operations on any object */
-
-int
-PyObject_Cmp(PyObject *o1, PyObject *o2, int *result)
-{
-    int r;
-
-    if (o1 == NULL || o2 == NULL) {
-        null_error();
-        return -1;
-    }
-    r = PyObject_Compare(o1, o2);
-    if (PyErr_Occurred())
-        return -1;
-    *result = r;
-    return 0;
-}
-
-PyObject *
-PyObject_Type(PyObject *o)
-{
-    PyObject *v;
-
-    if (o == NULL)
-        return null_error();
-    v = (PyObject *)o->ob_type;
-    Py_INCREF(v);
-    return v;
-}
-
-Py_ssize_t
-PyObject_Size(PyObject *o)
-{
-    PySequenceMethods *m;
-
-    if (o == NULL) {
-        null_error();
-        return -1;
-    }
-
-    m = o->ob_type->tp_as_sequence;
-    if (m && m->sq_length)
-        return m->sq_length(o);
-
-    return PyMapping_Size(o);
-}
-
-#undef PyObject_Length
-Py_ssize_t
-PyObject_Length(PyObject *o)
-{
-    return PyObject_Size(o);
-}
-#define PyObject_Length PyObject_Size
-
-
-/* The length hint function returns a non-negative value from o.__len__()
-   or o.__length_hint__().  If those methods aren't found or return a negative
-   value, then the defaultvalue is returned.  If one of the calls fails,
-   this function returns -1.
-*/
-
-Py_ssize_t
-_PyObject_LengthHint(PyObject *o, Py_ssize_t defaultvalue)
-{
-    static PyObject *hintstrobj = NULL;
-    PyObject *ro, *hintmeth;
-    Py_ssize_t rv;
-
-    /* try o.__len__() */
-    rv = PyObject_Size(o);
-    if (rv >= 0)
-        return rv;
-    if (PyErr_Occurred()) {
-        if (!PyErr_ExceptionMatches(PyExc_TypeError) &&
-            !PyErr_ExceptionMatches(PyExc_AttributeError))
-                return -1;
-        PyErr_Clear();
-    }
-
-    if (PyInstance_Check(o))
-        return defaultvalue;
-    /* try o.__length_hint__() */
-    hintmeth = _PyObject_LookupSpecial(o, "__length_hint__", &hintstrobj);
-    if (hintmeth == NULL) {
-        if (PyErr_Occurred())
-            return -1;
-        else
-            return defaultvalue;
-    }
-    ro = PyObject_CallFunctionObjArgs(hintmeth, NULL);
-    Py_DECREF(hintmeth);
-    if (ro == NULL) {
-        if (!PyErr_ExceptionMatches(PyExc_TypeError) &&
-            !PyErr_ExceptionMatches(PyExc_AttributeError))
-            return -1;
-        PyErr_Clear();
-        return defaultvalue;
-    }
-    rv = PyLong_Check(ro) ? PyLong_AsSsize_t(ro) : defaultvalue;
-    Py_DECREF(ro);
-    return rv;
-}
-
-PyObject *
-PyObject_GetItem(PyObject *o, PyObject *key)
-{
-    PyMappingMethods *m;
-
-    if (o == NULL || key == NULL)
-        return null_error();
-
-    m = o->ob_type->tp_as_mapping;
-    if (m && m->mp_subscript)
-        return m->mp_subscript(o, key);
-
-    if (o->ob_type->tp_as_sequence) {
-        if (PyIndex_Check(key)) {
-            Py_ssize_t key_value;
-            key_value = PyNumber_AsSsize_t(key, PyExc_IndexError);
-            if (key_value == -1 && PyErr_Occurred())
-                return NULL;
-            return PySequence_GetItem(o, key_value);
-        }
-        else if (o->ob_type->tp_as_sequence->sq_item)
-            return type_error("sequence index must "
-                              "be integer, not '%.200s'", key);
-    }
-
-    return type_error("'%.200s' object is not subscriptable", o);
-}
-
-int
-PyObject_SetItem(PyObject *o, PyObject *key, PyObject *value)
-{
-    PyMappingMethods *m;
-
-    if (o == NULL || key == NULL || value == NULL) {
-        null_error();
-        return -1;
-    }
-    m = o->ob_type->tp_as_mapping;
-    if (m && m->mp_ass_subscript)
-        return m->mp_ass_subscript(o, key, value);
-
-    if (o->ob_type->tp_as_sequence) {
-        if (PyIndex_Check(key)) {
-            Py_ssize_t key_value;
-            key_value = PyNumber_AsSsize_t(key, PyExc_IndexError);
-            if (key_value == -1 && PyErr_Occurred())
-                return -1;
-            return PySequence_SetItem(o, key_value, value);
-        }
-        else if (o->ob_type->tp_as_sequence->sq_ass_item) {
-            type_error("sequence index must be "
-                       "integer, not '%.200s'", key);
-            return -1;
-        }
-    }
-
-    type_error("'%.200s' object does not support item assignment", o);
-    return -1;
-}
-
-int
-PyObject_DelItem(PyObject *o, PyObject *key)
-{
-    PyMappingMethods *m;
-
-    if (o == NULL || key == NULL) {
-        null_error();
-        return -1;
-    }
-    m = o->ob_type->tp_as_mapping;
-    if (m && m->mp_ass_subscript)
-        return m->mp_ass_subscript(o, key, (PyObject*)NULL);
-
-    if (o->ob_type->tp_as_sequence) {
-        if (PyIndex_Check(key)) {
-            Py_ssize_t key_value;
-            key_value = PyNumber_AsSsize_t(key, PyExc_IndexError);
-            if (key_value == -1 && PyErr_Occurred())
-                return -1;
-            return PySequence_DelItem(o, key_value);
-        }
-        else if (o->ob_type->tp_as_sequence->sq_ass_item) {
-            type_error("sequence index must be "
-                       "integer, not '%.200s'", key);
-            return -1;
-        }
-    }
-
-    type_error("'%.200s' object does not support item deletion", o);
-    return -1;
-}
-
-int
-PyObject_DelItemString(PyObject *o, char *key)
-{
-    PyObject *okey;
-    int ret;
-
-    if (o == NULL || key == NULL) {
-        null_error();
-        return -1;
-    }
-    okey = PyString_FromString(key);
-    if (okey == NULL)
-        return -1;
-    ret = PyObject_DelItem(o, okey);
-    Py_DECREF(okey);
-    return ret;
-}
-
-int
-PyObject_AsCharBuffer(PyObject *obj,
-                          const char **buffer,
-                          Py_ssize_t *buffer_len)
-{
-    PyBufferProcs *pb;
-    char *pp;
-    Py_ssize_t len;
-
-    if (obj == NULL || buffer == NULL || buffer_len == NULL) {
-        null_error();
-        return -1;
-    }
-    pb = obj->ob_type->tp_as_buffer;
-    if (pb == NULL ||
-         pb->bf_getcharbuffer == NULL ||
-         pb->bf_getsegcount == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "expected a character buffer object");
-        return -1;
-    }
-    if ((*pb->bf_getsegcount)(obj,NULL) != 1) {
-        PyErr_SetString(PyExc_TypeError,
-                        "expected a single-segment buffer object");
-        return -1;
-    }
-    len = (*pb->bf_getcharbuffer)(obj, 0, &pp);
-    if (len < 0)
-        return -1;
-    *buffer = pp;
-    *buffer_len = len;
-    return 0;
-}
-
-int
-PyObject_CheckReadBuffer(PyObject *obj)
-{
-    PyBufferProcs *pb = obj->ob_type->tp_as_buffer;
-
-    if (pb == NULL ||
-        pb->bf_getreadbuffer == NULL ||
-        pb->bf_getsegcount == NULL ||
-        (*pb->bf_getsegcount)(obj, NULL) != 1)
-        return 0;
-    return 1;
-}
-
-int PyObject_AsReadBuffer(PyObject *obj,
-                          const void **buffer,
-                          Py_ssize_t *buffer_len)
-{
-    PyBufferProcs *pb;
-    void *pp;
-    Py_ssize_t len;
-
-    if (obj == NULL || buffer == NULL || buffer_len == NULL) {
-        null_error();
-        return -1;
-    }
-    pb = obj->ob_type->tp_as_buffer;
-    if (pb == NULL ||
-         pb->bf_getreadbuffer == NULL ||
-         pb->bf_getsegcount == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "expected a readable buffer object");
-        return -1;
-    }
-    if ((*pb->bf_getsegcount)(obj, NULL) != 1) {
-        PyErr_SetString(PyExc_TypeError,
-                        "expected a single-segment buffer object");
-        return -1;
-    }
-    len = (*pb->bf_getreadbuffer)(obj, 0, &pp);
-    if (len < 0)
-        return -1;
-    *buffer = pp;
-    *buffer_len = len;
-    return 0;
-}
-
-int PyObject_AsWriteBuffer(PyObject *obj,
-                           void **buffer,
-                           Py_ssize_t *buffer_len)
-{
-    PyBufferProcs *pb;
-    void*pp;
-    Py_ssize_t len;
-
-    if (obj == NULL || buffer == NULL || buffer_len == NULL) {
-        null_error();
-        return -1;
-    }
-    pb = obj->ob_type->tp_as_buffer;
-    if (pb == NULL ||
-         pb->bf_getwritebuffer == NULL ||
-         pb->bf_getsegcount == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "expected a writeable buffer object");
-        return -1;
-    }
-    if ((*pb->bf_getsegcount)(obj, NULL) != 1) {
-        PyErr_SetString(PyExc_TypeError,
-                        "expected a single-segment buffer object");
-        return -1;
-    }
-    len = (*pb->bf_getwritebuffer)(obj,0,&pp);
-    if (len < 0)
-        return -1;
-    *buffer = pp;
-    *buffer_len = len;
-    return 0;
-}
-
-/* Buffer C-API for Python 3.0 */
-
-int
-PyObject_GetBuffer(PyObject *obj, Py_buffer *view, int flags)
-{
-    if (!PyObject_CheckBuffer(obj)) {
-        PyErr_Format(PyExc_TypeError,
-                     "'%100s' does not have the buffer interface",
-                     Py_TYPE(obj)->tp_name);
-        return -1;
-    }
-    return (*(obj->ob_type->tp_as_buffer->bf_getbuffer))(obj, view, flags);
-}
-
-static int
-_IsFortranContiguous(Py_buffer *view)
-{
-    Py_ssize_t sd, dim;
-    int i;
-
-    if (view->ndim == 0) return 1;
-    if (view->strides == NULL) return (view->ndim == 1);
-
-    sd = view->itemsize;
-    if (view->ndim == 1) return (view->shape[0] == 1 ||
-                               sd == view->strides[0]);
-    for (i=0; i<view->ndim; i++) {
-        dim = view->shape[i];
-        if (dim == 0) return 1;
-        if (view->strides[i] != sd) return 0;
-        sd *= dim;
-    }
-    return 1;
-}
-
-static int
-_IsCContiguous(Py_buffer *view)
-{
-    Py_ssize_t sd, dim;
-    int i;
-
-    if (view->ndim == 0) return 1;
-    if (view->strides == NULL) return 1;
-
-    sd = view->itemsize;
-    if (view->ndim == 1) return (view->shape[0] == 1 ||
-                               sd == view->strides[0]);
-    for (i=view->ndim-1; i>=0; i--) {
-        dim = view->shape[i];
-        if (dim == 0) return 1;
-        if (view->strides[i] != sd) return 0;
-        sd *= dim;
-    }
-    return 1;
-}
-
-int
-PyBuffer_IsContiguous(Py_buffer *view, char fort)
-{
-
-    if (view->suboffsets != NULL) return 0;
-
-    if (fort == 'C')
-        return _IsCContiguous(view);
-    else if (fort == 'F')
-        return _IsFortranContiguous(view);
-    else if (fort == 'A')
-        return (_IsCContiguous(view) || _IsFortranContiguous(view));
-    return 0;
-}
-
-
-void*
-PyBuffer_GetPointer(Py_buffer *view, Py_ssize_t *indices)
-{
-    char* pointer;
-    int i;
-    pointer = (char *)view->buf;
-    for (i = 0; i < view->ndim; i++) {
-        pointer += view->strides[i]*indices[i];
-        if ((view->suboffsets != NULL) && (view->suboffsets[i] >= 0)) {
-            pointer = *((char**)pointer) + view->suboffsets[i];
-        }
-    }
-    return (void*)pointer;
-}
-
-
-void
-_Py_add_one_to_index_F(int nd, Py_ssize_t *index, const Py_ssize_t *shape)
-{
-    int k;
-
-    for (k=0; k<nd; k++) {
-        if (index[k] < shape[k]-1) {
-            index[k]++;
-            break;
-        }
-        else {
-            index[k] = 0;
-        }
-    }
-}
-
-void
-_Py_add_one_to_index_C(int nd, Py_ssize_t *index, const Py_ssize_t *shape)
-{
-    int k;
-
-    for (k=nd-1; k>=0; k--) {
-        if (index[k] < shape[k]-1) {
-            index[k]++;
-            break;
-        }
-        else {
-            index[k] = 0;
-        }
-    }
-}
-
-  /* view is not checked for consistency in either of these.  It is
-     assumed that the size of the buffer is view->len in
-     view->len / view->itemsize elements.
-  */
-
-int
-PyBuffer_ToContiguous(void *buf, Py_buffer *view, Py_ssize_t len, char fort)
-{
-    int k;
-    void (*addone)(int, Py_ssize_t *, const Py_ssize_t *);
-    Py_ssize_t *indices, elements;
-    char *dest, *ptr;
-
-    if (len > view->len) {
-        len = view->len;
-    }
-
-    if (PyBuffer_IsContiguous(view, fort)) {
-        /* simplest copy is all that is needed */
-        memcpy(buf, view->buf, len);
-        return 0;
-    }
-
-    /* Otherwise a more elaborate scheme is needed */
-
-    /* XXX(nnorwitz): need to check for overflow! */
-    indices = (Py_ssize_t *)PyMem_Malloc(sizeof(Py_ssize_t)*(view->ndim));
-    if (indices == NULL) {
-        PyErr_NoMemory();
-        return -1;
-    }
-    for (k=0; k<view->ndim;k++) {
-        indices[k] = 0;
-    }
-
-    if (fort == 'F') {
-        addone = _Py_add_one_to_index_F;
-    }
-    else {
-        addone = _Py_add_one_to_index_C;
-    }
-    dest = buf;
-    /* XXX : This is not going to be the fastest code in the world
-             several optimizations are possible.
-     */
-    elements = len / view->itemsize;
-    while (elements--) {
-        addone(view->ndim, indices, view->shape);
-        ptr = PyBuffer_GetPointer(view, indices);
-        memcpy(dest, ptr, view->itemsize);
-        dest += view->itemsize;
-    }
-    PyMem_Free(indices);
-    return 0;
-}
-
-int
-PyBuffer_FromContiguous(Py_buffer *view, void *buf, Py_ssize_t len, char fort)
-{
-    int k;
-    void (*addone)(int, Py_ssize_t *, const Py_ssize_t *);
-    Py_ssize_t *indices, elements;
-    char *src, *ptr;
-
-    if (len > view->len) {
-        len = view->len;
-    }
-
-    if (PyBuffer_IsContiguous(view, fort)) {
-        /* simplest copy is all that is needed */
-        memcpy(view->buf, buf, len);
-        return 0;
-    }
-
-    /* Otherwise a more elaborate scheme is needed */
-
-    /* XXX(nnorwitz): need to check for overflow! */
-    indices = (Py_ssize_t *)PyMem_Malloc(sizeof(Py_ssize_t)*(view->ndim));
-    if (indices == NULL) {
-        PyErr_NoMemory();
-        return -1;
-    }
-    for (k=0; k<view->ndim;k++) {
-        indices[k] = 0;
-    }
-
-    if (fort == 'F') {
-        addone = _Py_add_one_to_index_F;
-    }
-    else {
-        addone = _Py_add_one_to_index_C;
-    }
-    src = buf;
-    /* XXX : This is not going to be the fastest code in the world
-             several optimizations are possible.
-     */
-    elements = len / view->itemsize;
-    while (elements--) {
-        addone(view->ndim, indices, view->shape);
-        ptr = PyBuffer_GetPointer(view, indices);
-        memcpy(ptr, src, view->itemsize);
-        src += view->itemsize;
-    }
-
-    PyMem_Free(indices);
-    return 0;
-}
-
-int PyObject_CopyData(PyObject *dest, PyObject *src)
-{
-    Py_buffer view_dest, view_src;
-    int k;
-    Py_ssize_t *indices, elements;
-    char *dptr, *sptr;
-
-    if (!PyObject_CheckBuffer(dest) ||
-        !PyObject_CheckBuffer(src)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "both destination and source must have the "\
-                        "buffer interface");
-        return -1;
-    }
-
-    if (PyObject_GetBuffer(dest, &view_dest, PyBUF_FULL) != 0) return -1;
-    if (PyObject_GetBuffer(src, &view_src, PyBUF_FULL_RO) != 0) {
-        PyBuffer_Release(&view_dest);
-        return -1;
-    }
-
-    if (view_dest.len < view_src.len) {
-        PyErr_SetString(PyExc_BufferError,
-                        "destination is too small to receive data from source");
-        PyBuffer_Release(&view_dest);
-        PyBuffer_Release(&view_src);
-        return -1;
-    }
-
-    if ((PyBuffer_IsContiguous(&view_dest, 'C') &&
-         PyBuffer_IsContiguous(&view_src, 'C')) ||
-        (PyBuffer_IsContiguous(&view_dest, 'F') &&
-         PyBuffer_IsContiguous(&view_src, 'F'))) {
-        /* simplest copy is all that is needed */
-        memcpy(view_dest.buf, view_src.buf, view_src.len);
-        PyBuffer_Release(&view_dest);
-        PyBuffer_Release(&view_src);
-        return 0;
-    }
-
-    /* Otherwise a more elaborate copy scheme is needed */
-
-    /* XXX(nnorwitz): need to check for overflow! */
-    indices = (Py_ssize_t *)PyMem_Malloc(sizeof(Py_ssize_t)*view_src.ndim);
-    if (indices == NULL) {
-        PyErr_NoMemory();
-        PyBuffer_Release(&view_dest);
-        PyBuffer_Release(&view_src);
-        return -1;
-    }
-    for (k=0; k<view_src.ndim;k++) {
-        indices[k] = 0;
-    }
-    elements = 1;
-    for (k=0; k<view_src.ndim; k++) {
-        /* XXX(nnorwitz): can this overflow? */
-        elements *= view_src.shape[k];
-    }
-    while (elements--) {
-        _Py_add_one_to_index_C(view_src.ndim, indices, view_src.shape);
-        dptr = PyBuffer_GetPointer(&view_dest, indices);
-        sptr = PyBuffer_GetPointer(&view_src, indices);
-        memcpy(dptr, sptr, view_src.itemsize);
-    }
-    PyMem_Free(indices);
-    PyBuffer_Release(&view_dest);
-    PyBuffer_Release(&view_src);
-    return 0;
-}
-
-void
-PyBuffer_FillContiguousStrides(int nd, Py_ssize_t *shape,
-                               Py_ssize_t *strides, int itemsize,
-                               char fort)
-{
-    int k;
-    Py_ssize_t sd;
-
-    sd = itemsize;
-    if (fort == 'F') {
-        for (k=0; k<nd; k++) {
-            strides[k] = sd;
-            sd *= shape[k];
-        }
-    }
-    else {
-        for (k=nd-1; k>=0; k--) {
-            strides[k] = sd;
-            sd *= shape[k];
-        }
-    }
-    return;
-}
-
-int
-PyBuffer_FillInfo(Py_buffer *view, PyObject *obj, void *buf, Py_ssize_t len,
-              int readonly, int flags)
-{
-    if (view == NULL) return 0;
-    if (((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE) &&
-        (readonly == 1)) {
-        PyErr_SetString(PyExc_BufferError,
-                        "Object is not writable.");
-        return -1;
-    }
-
-    view->obj = obj;
-    if (obj)
-        Py_INCREF(obj);
-    view->buf = buf;
-    view->len = len;
-    view->readonly = readonly;
-    view->itemsize = 1;
-    view->format = NULL;
-    if ((flags & PyBUF_FORMAT) == PyBUF_FORMAT)
-        view->format = "B";
-    view->ndim = 1;
-    view->shape = NULL;
-    if ((flags & PyBUF_ND) == PyBUF_ND)
-        view->shape = &(view->len);
-    view->strides = NULL;
-    if ((flags & PyBUF_STRIDES) == PyBUF_STRIDES)
-        view->strides = &(view->itemsize);
-    view->suboffsets = NULL;
-    view->internal = NULL;
-    return 0;
-}
-
-void
-PyBuffer_Release(Py_buffer *view)
-{
-    PyObject *obj = view->obj;
-    if (obj && Py_TYPE(obj)->tp_as_buffer && Py_TYPE(obj)->tp_as_buffer->bf_releasebuffer)
-        Py_TYPE(obj)->tp_as_buffer->bf_releasebuffer(obj, view);
-    Py_XDECREF(obj);
-    view->obj = NULL;
-}
-
-PyObject *
-PyObject_Format(PyObject* obj, PyObject *format_spec)
-{
-    PyObject *empty = NULL;
-    PyObject *result = NULL;
-#ifdef Py_USING_UNICODE
-    int spec_is_unicode;
-    int result_is_unicode;
-#endif
-
-    /* If no format_spec is provided, use an empty string */
-    if (format_spec == NULL) {
-        empty = PyString_FromStringAndSize(NULL, 0);
-        format_spec = empty;
-    }
-
-    /* Check the format_spec type, and make sure it's str or unicode */
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(format_spec))
-        spec_is_unicode = 1;
-    else if (PyString_Check(format_spec))
-        spec_is_unicode = 0;
-    else {
-#else
-    if (!PyString_Check(format_spec)) {
-#endif
-        PyErr_Format(PyExc_TypeError,
-                     "format expects arg 2 to be string "
-                     "or unicode, not %.100s", Py_TYPE(format_spec)->tp_name);
-        goto done;
-    }
-
-    /* Check for a __format__ method and call it. */
-    if (PyInstance_Check(obj)) {
-        /* We're an instance of a classic class */
-        PyObject *bound_method = PyObject_GetAttrString(obj, "__format__");
-        if (bound_method != NULL) {
-            result = PyObject_CallFunctionObjArgs(bound_method,
-                                                  format_spec,
-                                                  NULL);
-            Py_DECREF(bound_method);
-        } else {
-            PyObject *self_as_str = NULL;
-            PyObject *format_method = NULL;
-            Py_ssize_t format_len;
-
-            PyErr_Clear();
-            /* Per the PEP, convert to str (or unicode,
-               depending on the type of the format
-               specifier).  For new-style classes, this
-               logic is done by object.__format__(). */
-#ifdef Py_USING_UNICODE
-            if (spec_is_unicode) {
-                format_len = PyUnicode_GET_SIZE(format_spec);
-                self_as_str = PyObject_Unicode(obj);
-            } else
-#endif
-            {
-                format_len = PyString_GET_SIZE(format_spec);
-                self_as_str = PyObject_Str(obj);
-            }
-            if (self_as_str == NULL)
-                goto done1;
-
-            if (format_len > 0) {
-                /* See the almost identical code in
-                   typeobject.c for new-style
-                   classes. */
-                if (PyErr_WarnEx(
-                    PyExc_PendingDeprecationWarning,
-                    "object.__format__ with a non-empty "
-                    "format string is deprecated", 1)
-                     < 0) {
-                    goto done1;
-                }
-                /* Eventually this will become an
-                   error:
-                PyErr_Format(PyExc_TypeError,
-                   "non-empty format string passed to "
-                   "object.__format__");
-                goto done1;
-                */
-            }
-
-            /* Then call str.__format__ on that result */
-            format_method = PyObject_GetAttrString(self_as_str, "__format__");
-            if (format_method == NULL) {
-                goto done1;
-            }
-            result = PyObject_CallFunctionObjArgs(format_method,
-                                                  format_spec,
-                                                  NULL);
-done1:
-            Py_XDECREF(self_as_str);
-            Py_XDECREF(format_method);
-            if (result == NULL)
-                goto done;
-        }
-    } else {
-        /* Not an instance of a classic class, use the code
-           from py3k */
-        static PyObject *format_cache = NULL;
-
-        /* Find the (unbound!) __format__ method (a borrowed
-           reference) */
-        PyObject *method = _PyObject_LookupSpecial(obj, "__format__",
-                                                   &format_cache);
-        if (method == NULL) {
-            if (!PyErr_Occurred())
-                PyErr_Format(PyExc_TypeError,
-                             "Type %.100s doesn't define __format__",
-                             Py_TYPE(obj)->tp_name);
-            goto done;
-        }
-        /* And call it. */
-        result = PyObject_CallFunctionObjArgs(method, format_spec, NULL);
-        Py_DECREF(method);
-    }
-
-    if (result == NULL)
-        goto done;
-
-    /* Check the result type, and make sure it's str or unicode */
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(result))
-        result_is_unicode = 1;
-    else if (PyString_Check(result))
-        result_is_unicode = 0;
-    else {
-#else
-    if (!PyString_Check(result)) {
-#endif
-        PyErr_Format(PyExc_TypeError,
-                     "%.100s.__format__ must return string or "
-                     "unicode, not %.100s", Py_TYPE(obj)->tp_name,
-                     Py_TYPE(result)->tp_name);
-        Py_DECREF(result);
-        result = NULL;
-        goto done;
-    }
-
-    /* Convert to unicode, if needed.  Required if spec is unicode
-       and result is str */
-#ifdef Py_USING_UNICODE
-    if (spec_is_unicode && !result_is_unicode) {
-        PyObject *tmp = PyObject_Unicode(result);
-        /* This logic works whether or not tmp is NULL */
-        Py_DECREF(result);
-        result = tmp;
-    }
-#endif
-
-done:
-    Py_XDECREF(empty);
-    return result;
-}
-
-/* Operations on numbers */
-
-int
-PyNumber_Check(PyObject *o)
-{
-    return o && o->ob_type->tp_as_number &&
-           (o->ob_type->tp_as_number->nb_int ||
-        o->ob_type->tp_as_number->nb_float);
-}
-
-/* Binary operators */
-
-/* New style number protocol support */
-
-#define NB_SLOT(x) offsetof(PyNumberMethods, x)
-#define NB_BINOP(nb_methods, slot) \
-        (*(binaryfunc*)(& ((char*)nb_methods)[slot]))
-#define NB_TERNOP(nb_methods, slot) \
-        (*(ternaryfunc*)(& ((char*)nb_methods)[slot]))
-
-/*
-  Calling scheme used for binary operations:
-
-  v     w       Action
-  -------------------------------------------------------------------
-  new   new     w.op(v,w)[*], v.op(v,w), w.op(v,w)
-  new   old     v.op(v,w), coerce(v,w), v.op(v,w)
-  old   new     w.op(v,w), coerce(v,w), v.op(v,w)
-  old   old     coerce(v,w), v.op(v,w)
-
-  [*] only when v->ob_type != w->ob_type && w->ob_type is a subclass of
-      v->ob_type
-
-  Legend:
-  -------
-  * new == new style number
-  * old == old style number
-  * Action indicates the order in which operations are tried until either
-    a valid result is produced or an error occurs.
-
- */
-
-static PyObject *
-binary_op1(PyObject *v, PyObject *w, const int op_slot)
-{
-    PyObject *x;
-    binaryfunc slotv = NULL;
-    binaryfunc slotw = NULL;
-
-    if (v->ob_type->tp_as_number != NULL && NEW_STYLE_NUMBER(v))
-        slotv = NB_BINOP(v->ob_type->tp_as_number, op_slot);
-    if (w->ob_type != v->ob_type &&
-        w->ob_type->tp_as_number != NULL && NEW_STYLE_NUMBER(w)) {
-        slotw = NB_BINOP(w->ob_type->tp_as_number, op_slot);
-        if (slotw == slotv)
-            slotw = NULL;
-    }
-    if (slotv) {
-        if (slotw && PyType_IsSubtype(w->ob_type, v->ob_type)) {
-            x = slotw(v, w);
-            if (x != Py_NotImplemented)
-                return x;
-            Py_DECREF(x); /* can't do it */
-            slotw = NULL;
-        }
-        x = slotv(v, w);
-        if (x != Py_NotImplemented)
-            return x;
-        Py_DECREF(x); /* can't do it */
-    }
-    if (slotw) {
-        x = slotw(v, w);
-        if (x != Py_NotImplemented)
-            return x;
-        Py_DECREF(x); /* can't do it */
-    }
-    if (!NEW_STYLE_NUMBER(v) || !NEW_STYLE_NUMBER(w)) {
-        int err = PyNumber_CoerceEx(&v, &w);
-        if (err < 0) {
-            return NULL;
-        }
-        if (err == 0) {
-            PyNumberMethods *mv = v->ob_type->tp_as_number;
-            if (mv) {
-                binaryfunc slot;
-                slot = NB_BINOP(mv, op_slot);
-                if (slot) {
-                    x = slot(v, w);
-                    Py_DECREF(v);
-                    Py_DECREF(w);
-                    return x;
-                }
-            }
-            /* CoerceEx incremented the reference counts */
-            Py_DECREF(v);
-            Py_DECREF(w);
-        }
-    }
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-}
-
-static PyObject *
-binop_type_error(PyObject *v, PyObject *w, const char *op_name)
-{
-    PyErr_Format(PyExc_TypeError,
-                 "unsupported operand type(s) for %.100s: "
-                 "'%.100s' and '%.100s'",
-                 op_name,
-                 v->ob_type->tp_name,
-                 w->ob_type->tp_name);
-    return NULL;
-}
-
-static PyObject *
-binary_op(PyObject *v, PyObject *w, const int op_slot, const char *op_name)
-{
-    PyObject *result = binary_op1(v, w, op_slot);
-    if (result == Py_NotImplemented) {
-        Py_DECREF(result);
-        return binop_type_error(v, w, op_name);
-    }
-    return result;
-}
-
-
-/*
-  Calling scheme used for ternary operations:
-
-  *** In some cases, w.op is called before v.op; see binary_op1. ***
-
-  v     w       z       Action
-  -------------------------------------------------------------------
-  new   new     new     v.op(v,w,z), w.op(v,w,z), z.op(v,w,z)
-  new   old     new     v.op(v,w,z), z.op(v,w,z), coerce(v,w,z), v.op(v,w,z)
-  old   new     new     w.op(v,w,z), z.op(v,w,z), coerce(v,w,z), v.op(v,w,z)
-  old   old     new     z.op(v,w,z), coerce(v,w,z), v.op(v,w,z)
-  new   new     old     v.op(v,w,z), w.op(v,w,z), coerce(v,w,z), v.op(v,w,z)
-  new   old     old     v.op(v,w,z), coerce(v,w,z), v.op(v,w,z)
-  old   new     old     w.op(v,w,z), coerce(v,w,z), v.op(v,w,z)
-  old   old     old     coerce(v,w,z), v.op(v,w,z)
-
-  Legend:
-  -------
-  * new == new style number
-  * old == old style number
-  * Action indicates the order in which operations are tried until either
-    a valid result is produced or an error occurs.
-  * coerce(v,w,z) actually does: coerce(v,w), coerce(v,z), coerce(w,z) and
-    only if z != Py_None; if z == Py_None, then it is treated as absent
-    variable and only coerce(v,w) is tried.
-
- */
-
-static PyObject *
-ternary_op(PyObject *v,
-           PyObject *w,
-           PyObject *z,
-           const int op_slot,
-           const char *op_name)
-{
-    PyNumberMethods *mv, *mw, *mz;
-    PyObject *x = NULL;
-    ternaryfunc slotv = NULL;
-    ternaryfunc slotw = NULL;
-    ternaryfunc slotz = NULL;
-
-    mv = v->ob_type->tp_as_number;
-    mw = w->ob_type->tp_as_number;
-    if (mv != NULL && NEW_STYLE_NUMBER(v))
-        slotv = NB_TERNOP(mv, op_slot);
-    if (w->ob_type != v->ob_type &&
-        mw != NULL && NEW_STYLE_NUMBER(w)) {
-        slotw = NB_TERNOP(mw, op_slot);
-        if (slotw == slotv)
-            slotw = NULL;
-    }
-    if (slotv) {
-        if (slotw && PyType_IsSubtype(w->ob_type, v->ob_type)) {
-            x = slotw(v, w, z);
-            if (x != Py_NotImplemented)
-                return x;
-            Py_DECREF(x); /* can't do it */
-            slotw = NULL;
-        }
-        x = slotv(v, w, z);
-        if (x != Py_NotImplemented)
-            return x;
-        Py_DECREF(x); /* can't do it */
-    }
-    if (slotw) {
-        x = slotw(v, w, z);
-        if (x != Py_NotImplemented)
-            return x;
-        Py_DECREF(x); /* can't do it */
-    }
-    mz = z->ob_type->tp_as_number;
-    if (mz != NULL && NEW_STYLE_NUMBER(z)) {
-        slotz = NB_TERNOP(mz, op_slot);
-        if (slotz == slotv || slotz == slotw)
-            slotz = NULL;
-        if (slotz) {
-            x = slotz(v, w, z);
-            if (x != Py_NotImplemented)
-                return x;
-            Py_DECREF(x); /* can't do it */
-        }
-    }
-
-    if (!NEW_STYLE_NUMBER(v) || !NEW_STYLE_NUMBER(w) ||
-                    (z != Py_None && !NEW_STYLE_NUMBER(z))) {
-        /* we have an old style operand, coerce */
-        PyObject *v1, *z1, *w2, *z2;
-        int c;
-
-        c = PyNumber_Coerce(&v, &w);
-        if (c != 0)
-            goto error3;
-
-        /* Special case: if the third argument is None, it is
-           treated as absent argument and not coerced. */
-        if (z == Py_None) {
-            if (v->ob_type->tp_as_number) {
-                slotz = NB_TERNOP(v->ob_type->tp_as_number,
-                                  op_slot);
-                if (slotz)
-                    x = slotz(v, w, z);
-                else
-                    c = -1;
-            }
-            else
-                c = -1;
-            goto error2;
-        }
-        v1 = v;
-        z1 = z;
-        c = PyNumber_Coerce(&v1, &z1);
-        if (c != 0)
-            goto error2;
-        w2 = w;
-        z2 = z1;
-        c = PyNumber_Coerce(&w2, &z2);
-        if (c != 0)
-            goto error1;
-
-        if (v1->ob_type->tp_as_number != NULL) {
-            slotv = NB_TERNOP(v1->ob_type->tp_as_number,
-                              op_slot);
-            if (slotv)
-                x = slotv(v1, w2, z2);
-            else
-                c = -1;
-        }
-        else
-            c = -1;
-
-        Py_DECREF(w2);
-        Py_DECREF(z2);
-    error1:
-        Py_DECREF(v1);
-        Py_DECREF(z1);
-    error2:
-        Py_DECREF(v);
-        Py_DECREF(w);
-    error3:
-        if (c >= 0)
-            return x;
-    }
-
-    if (z == Py_None)
-        PyErr_Format(
-            PyExc_TypeError,
-            "unsupported operand type(s) for ** or pow(): "
-            "'%.100s' and '%.100s'",
-            v->ob_type->tp_name,
-            w->ob_type->tp_name);
-    else
-        PyErr_Format(
-            PyExc_TypeError,
-            "unsupported operand type(s) for pow(): "
-            "'%.100s', '%.100s', '%.100s'",
-            v->ob_type->tp_name,
-            w->ob_type->tp_name,
-            z->ob_type->tp_name);
-    return NULL;
-}
-
-#define BINARY_FUNC(func, op, op_name) \
-    PyObject * \
-    func(PyObject *v, PyObject *w) { \
-        return binary_op(v, w, NB_SLOT(op), op_name); \
-    }
-
-BINARY_FUNC(PyNumber_Or, nb_or, "|")
-BINARY_FUNC(PyNumber_Xor, nb_xor, "^")
-BINARY_FUNC(PyNumber_And, nb_and, "&")
-BINARY_FUNC(PyNumber_Lshift, nb_lshift, "<<")
-BINARY_FUNC(PyNumber_Rshift, nb_rshift, ">>")
-BINARY_FUNC(PyNumber_Subtract, nb_subtract, "-")
-BINARY_FUNC(PyNumber_Divide, nb_divide, "/")
-BINARY_FUNC(PyNumber_Divmod, nb_divmod, "divmod()")
-
-PyObject *
-PyNumber_Add(PyObject *v, PyObject *w)
-{
-    PyObject *result = binary_op1(v, w, NB_SLOT(nb_add));
-    if (result == Py_NotImplemented) {
-        PySequenceMethods *m = v->ob_type->tp_as_sequence;
-        Py_DECREF(result);
-        if (m && m->sq_concat) {
-            return (*m->sq_concat)(v, w);
-        }
-        result = binop_type_error(v, w, "+");
-    }
-    return result;
-}
-
-static PyObject *
-sequence_repeat(ssizeargfunc repeatfunc, PyObject *seq, PyObject *n)
-{
-    Py_ssize_t count;
-    if (PyIndex_Check(n)) {
-        count = PyNumber_AsSsize_t(n, PyExc_OverflowError);
-        if (count == -1 && PyErr_Occurred())
-            return NULL;
-    }
-    else {
-        return type_error("can't multiply sequence by "
-                          "non-int of type '%.200s'", n);
-    }
-    return (*repeatfunc)(seq, count);
-}
-
-PyObject *
-PyNumber_Multiply(PyObject *v, PyObject *w)
-{
-    PyObject *result = binary_op1(v, w, NB_SLOT(nb_multiply));
-    if (result == Py_NotImplemented) {
-        PySequenceMethods *mv = v->ob_type->tp_as_sequence;
-        PySequenceMethods *mw = w->ob_type->tp_as_sequence;
-        Py_DECREF(result);
-        if  (mv && mv->sq_repeat) {
-            return sequence_repeat(mv->sq_repeat, v, w);
-        }
-        else if (mw && mw->sq_repeat) {
-            return sequence_repeat(mw->sq_repeat, w, v);
-        }
-        result = binop_type_error(v, w, "*");
-    }
-    return result;
-}
-
-PyObject *
-PyNumber_FloorDivide(PyObject *v, PyObject *w)
-{
-    /* XXX tp_flags test */
-    return binary_op(v, w, NB_SLOT(nb_floor_divide), "//");
-}
-
-PyObject *
-PyNumber_TrueDivide(PyObject *v, PyObject *w)
-{
-    /* XXX tp_flags test */
-    return binary_op(v, w, NB_SLOT(nb_true_divide), "/");
-}
-
-PyObject *
-PyNumber_Remainder(PyObject *v, PyObject *w)
-{
-    return binary_op(v, w, NB_SLOT(nb_remainder), "%");
-}
-
-PyObject *
-PyNumber_Power(PyObject *v, PyObject *w, PyObject *z)
-{
-    return ternary_op(v, w, z, NB_SLOT(nb_power), "** or pow()");
-}
-
-/* Binary in-place operators */
-
-/* The in-place operators are defined to fall back to the 'normal',
-   non in-place operations, if the in-place methods are not in place.
-
-   - If the left hand object has the appropriate struct members, and
-     they are filled, call the appropriate function and return the
-     result.  No coercion is done on the arguments; the left-hand object
-     is the one the operation is performed on, and it's up to the
-     function to deal with the right-hand object.
-
-   - Otherwise, in-place modification is not supported. Handle it exactly as
-     a non in-place operation of the same kind.
-
-   */
-
-#define HASINPLACE(t) \
-    PyType_HasFeature((t)->ob_type, Py_TPFLAGS_HAVE_INPLACEOPS)
-
-static PyObject *
-binary_iop1(PyObject *v, PyObject *w, const int iop_slot, const int op_slot)
-{
-    PyNumberMethods *mv = v->ob_type->tp_as_number;
-    if (mv != NULL && HASINPLACE(v)) {
-        binaryfunc slot = NB_BINOP(mv, iop_slot);
-        if (slot) {
-            PyObject *x = (slot)(v, w);
-            if (x != Py_NotImplemented) {
-                return x;
-            }
-            Py_DECREF(x);
-        }
-    }
-    return binary_op1(v, w, op_slot);
-}
-
-static PyObject *
-binary_iop(PyObject *v, PyObject *w, const int iop_slot, const int op_slot,
-                const char *op_name)
-{
-    PyObject *result = binary_iop1(v, w, iop_slot, op_slot);
-    if (result == Py_NotImplemented) {
-        Py_DECREF(result);
-        return binop_type_error(v, w, op_name);
-    }
-    return result;
-}
-
-#define INPLACE_BINOP(func, iop, op, op_name) \
-    PyObject * \
-    func(PyObject *v, PyObject *w) { \
-        return binary_iop(v, w, NB_SLOT(iop), NB_SLOT(op), op_name); \
-    }
-
-INPLACE_BINOP(PyNumber_InPlaceOr, nb_inplace_or, nb_or, "|=")
-INPLACE_BINOP(PyNumber_InPlaceXor, nb_inplace_xor, nb_xor, "^=")
-INPLACE_BINOP(PyNumber_InPlaceAnd, nb_inplace_and, nb_and, "&=")
-INPLACE_BINOP(PyNumber_InPlaceLshift, nb_inplace_lshift, nb_lshift, "<<=")
-INPLACE_BINOP(PyNumber_InPlaceRshift, nb_inplace_rshift, nb_rshift, ">>=")
-INPLACE_BINOP(PyNumber_InPlaceSubtract, nb_inplace_subtract, nb_subtract, "-=")
-INPLACE_BINOP(PyNumber_InPlaceDivide, nb_inplace_divide, nb_divide, "/=")
-
-PyObject *
-PyNumber_InPlaceFloorDivide(PyObject *v, PyObject *w)
-{
-    /* XXX tp_flags test */
-    return binary_iop(v, w, NB_SLOT(nb_inplace_floor_divide),
-                      NB_SLOT(nb_floor_divide), "//=");
-}
-
-PyObject *
-PyNumber_InPlaceTrueDivide(PyObject *v, PyObject *w)
-{
-    /* XXX tp_flags test */
-    return binary_iop(v, w, NB_SLOT(nb_inplace_true_divide),
-                      NB_SLOT(nb_true_divide), "/=");
-}
-
-PyObject *
-PyNumber_InPlaceAdd(PyObject *v, PyObject *w)
-{
-    PyObject *result = binary_iop1(v, w, NB_SLOT(nb_inplace_add),
-                                   NB_SLOT(nb_add));
-    if (result == Py_NotImplemented) {
-        PySequenceMethods *m = v->ob_type->tp_as_sequence;
-        Py_DECREF(result);
-        if (m != NULL) {
-            binaryfunc f = NULL;
-            if (HASINPLACE(v))
-                f = m->sq_inplace_concat;
-            if (f == NULL)
-                f = m->sq_concat;
-            if (f != NULL)
-                return (*f)(v, w);
-        }
-        result = binop_type_error(v, w, "+=");
-    }
-    return result;
-}
-
-PyObject *
-PyNumber_InPlaceMultiply(PyObject *v, PyObject *w)
-{
-    PyObject *result = binary_iop1(v, w, NB_SLOT(nb_inplace_multiply),
-                                   NB_SLOT(nb_multiply));
-    if (result == Py_NotImplemented) {
-        ssizeargfunc f = NULL;
-        PySequenceMethods *mv = v->ob_type->tp_as_sequence;
-        PySequenceMethods *mw = w->ob_type->tp_as_sequence;
-        Py_DECREF(result);
-        if (mv != NULL) {
-            if (HASINPLACE(v))
-                f = mv->sq_inplace_repeat;
-            if (f == NULL)
-                f = mv->sq_repeat;
-            if (f != NULL)
-                return sequence_repeat(f, v, w);
-        }
-        else if (mw != NULL) {
-            /* Note that the right hand operand should not be
-             * mutated in this case so sq_inplace_repeat is not
-             * used. */
-            if (mw->sq_repeat)
-                return sequence_repeat(mw->sq_repeat, w, v);
-        }
-        result = binop_type_error(v, w, "*=");
-    }
-    return result;
-}
-
-PyObject *
-PyNumber_InPlaceRemainder(PyObject *v, PyObject *w)
-{
-    return binary_iop(v, w, NB_SLOT(nb_inplace_remainder),
-                            NB_SLOT(nb_remainder), "%=");
-}
-
-PyObject *
-PyNumber_InPlacePower(PyObject *v, PyObject *w, PyObject *z)
-{
-    if (HASINPLACE(v) && v->ob_type->tp_as_number &&
-        v->ob_type->tp_as_number->nb_inplace_power != NULL) {
-        return ternary_op(v, w, z, NB_SLOT(nb_inplace_power), "**=");
-    }
-    else {
-        return ternary_op(v, w, z, NB_SLOT(nb_power), "**=");
-    }
-}
-
-
-/* Unary operators and functions */
-
-PyObject *
-PyNumber_Negative(PyObject *o)
-{
-    PyNumberMethods *m;
-
-    if (o == NULL)
-        return null_error();
-    m = o->ob_type->tp_as_number;
-    if (m && m->nb_negative)
-        return (*m->nb_negative)(o);
-
-    return type_error("bad operand type for unary -: '%.200s'", o);
-}
-
-PyObject *
-PyNumber_Positive(PyObject *o)
-{
-    PyNumberMethods *m;
-
-    if (o == NULL)
-        return null_error();
-    m = o->ob_type->tp_as_number;
-    if (m && m->nb_positive)
-        return (*m->nb_positive)(o);
-
-    return type_error("bad operand type for unary +: '%.200s'", o);
-}
-
-PyObject *
-PyNumber_Invert(PyObject *o)
-{
-    PyNumberMethods *m;
-
-    if (o == NULL)
-        return null_error();
-    m = o->ob_type->tp_as_number;
-    if (m && m->nb_invert)
-        return (*m->nb_invert)(o);
-
-    return type_error("bad operand type for unary ~: '%.200s'", o);
-}
-
-PyObject *
-PyNumber_Absolute(PyObject *o)
-{
-    PyNumberMethods *m;
-
-    if (o == NULL)
-        return null_error();
-    m = o->ob_type->tp_as_number;
-    if (m && m->nb_absolute)
-        return m->nb_absolute(o);
-
-    return type_error("bad operand type for abs(): '%.200s'", o);
-}
-
-/* Add a check for embedded NULL-bytes in the argument. */
-static PyObject *
-int_from_string(const char *s, Py_ssize_t len)
-{
-    char *end;
-    PyObject *x;
-
-    x = PyInt_FromString((char*)s, &end, 10);
-    if (x == NULL)
-        return NULL;
-    if (end != s + len) {
-        PyErr_SetString(PyExc_ValueError,
-                        "null byte in argument for int()");
-        Py_DECREF(x);
-        return NULL;
-    }
-    return x;
-}
-
-/* Return a Python Int or Long from the object item
-   Raise TypeError if the result is not an int-or-long
-   or if the object cannot be interpreted as an index.
-*/
-PyObject *
-PyNumber_Index(PyObject *item)
-{
-    PyObject *result = NULL;
-    if (item == NULL)
-        return null_error();
-    if (PyInt_Check(item) || PyLong_Check(item)) {
-        Py_INCREF(item);
-        return item;
-    }
-    if (PyIndex_Check(item)) {
-        result = item->ob_type->tp_as_number->nb_index(item);
-        if (result &&
-            !PyInt_Check(result) && !PyLong_Check(result)) {
-            PyErr_Format(PyExc_TypeError,
-                         "__index__ returned non-(int,long) " \
-                         "(type %.200s)",
-                         result->ob_type->tp_name);
-            Py_DECREF(result);
-            return NULL;
-        }
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-                     "'%.200s' object cannot be interpreted "
-                     "as an index", item->ob_type->tp_name);
-    }
-    return result;
-}
-
-/* Return an error on Overflow only if err is not NULL*/
-
-Py_ssize_t
-PyNumber_AsSsize_t(PyObject *item, PyObject *err)
-{
-    Py_ssize_t result;
-    PyObject *runerr;
-    PyObject *value = PyNumber_Index(item);
-    if (value == NULL)
-        return -1;
-
-    /* We're done if PyInt_AsSsize_t() returns without error. */
-    result = PyInt_AsSsize_t(value);
-    if (result != -1 || !(runerr = PyErr_Occurred()))
-        goto finish;
-
-    /* Error handling code -- only manage OverflowError differently */
-    if (!PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError))
-        goto finish;
-
-    PyErr_Clear();
-    /* If no error-handling desired then the default clipping
-       is sufficient.
-     */
-    if (!err) {
-        assert(PyLong_Check(value));
-        /* Whether or not it is less than or equal to
-           zero is determined by the sign of ob_size
-        */
-        if (_PyLong_Sign(value) < 0)
-            result = PY_SSIZE_T_MIN;
-        else
-            result = PY_SSIZE_T_MAX;
-    }
-    else {
-        /* Otherwise replace the error with caller's error object. */
-        PyErr_Format(err,
-                     "cannot fit '%.200s' into an index-sized integer",
-                     item->ob_type->tp_name);
-    }
-
- finish:
-    Py_DECREF(value);
-    return result;
-}
-
-
-PyObject *
-_PyNumber_ConvertIntegralToInt(PyObject *integral, const char* error_format)
-{
-    const char *type_name;
-    static PyObject *int_name = NULL;
-    if (int_name == NULL) {
-        int_name = PyString_InternFromString("__int__");
-        if (int_name == NULL)
-            return NULL;
-    }
-
-    if (integral && (!PyInt_Check(integral) &&
-                     !PyLong_Check(integral))) {
-        /* Don't go through tp_as_number->nb_int to avoid
-           hitting the classic class fallback to __trunc__. */
-        PyObject *int_func = PyObject_GetAttr(integral, int_name);
-        if (int_func == NULL) {
-            PyErr_Clear(); /* Raise a different error. */
-            goto non_integral_error;
-        }
-        Py_DECREF(integral);
-        integral = PyEval_CallObject(int_func, NULL);
-        Py_DECREF(int_func);
-        if (integral && (!PyInt_Check(integral) &&
-                          !PyLong_Check(integral))) {
-            goto non_integral_error;
-        }
-    }
-    return integral;
-
-non_integral_error:
-    if (PyInstance_Check(integral)) {
-        type_name = PyString_AS_STRING(((PyInstanceObject *)integral)
-                                       ->in_class->cl_name);
-    }
-    else {
-        type_name = integral->ob_type->tp_name;
-    }
-    PyErr_Format(PyExc_TypeError, error_format, type_name);
-    Py_DECREF(integral);
-    return NULL;
-}
-
-
-PyObject *
-PyNumber_Int(PyObject *o)
-{
-    PyNumberMethods *m;
-    static PyObject *trunc_name = NULL;
-    PyObject *trunc_func;
-    const char *buffer;
-    Py_ssize_t buffer_len;
-
-    if (trunc_name == NULL) {
-        trunc_name = PyString_InternFromString("__trunc__");
-        if (trunc_name == NULL)
-            return NULL;
-    }
-
-    if (o == NULL)
-        return null_error();
-    if (PyInt_CheckExact(o)) {
-        Py_INCREF(o);
-        return o;
-    }
-    m = o->ob_type->tp_as_number;
-    if (m && m->nb_int) { /* This should include subclasses of int */
-        /* Classic classes always take this branch. */
-        PyObject *res = m->nb_int(o);
-        if (res && (!PyInt_Check(res) && !PyLong_Check(res))) {
-            PyErr_Format(PyExc_TypeError,
-                         "__int__ returned non-int (type %.200s)",
-                         res->ob_type->tp_name);
-            Py_DECREF(res);
-            return NULL;
-        }
-        return res;
-    }
-    if (PyInt_Check(o)) { /* A int subclass without nb_int */
-        PyIntObject *io = (PyIntObject*)o;
-        return PyInt_FromLong(io->ob_ival);
-    }
-    trunc_func = PyObject_GetAttr(o, trunc_name);
-    if (trunc_func) {
-        PyObject *truncated = PyEval_CallObject(trunc_func, NULL);
-        Py_DECREF(trunc_func);
-        /* __trunc__ is specified to return an Integral type, but
-           int() needs to return an int. */
-        return _PyNumber_ConvertIntegralToInt(
-            truncated,
-            "__trunc__ returned non-Integral (type %.200s)");
-    }
-    PyErr_Clear();  /* It's not an error if  o.__trunc__ doesn't exist. */
-
-    if (PyString_Check(o))
-        return int_from_string(PyString_AS_STRING(o),
-                               PyString_GET_SIZE(o));
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(o))
-        return PyInt_FromUnicode(PyUnicode_AS_UNICODE(o),
-                                 PyUnicode_GET_SIZE(o),
-                                 10);
-#endif
-    if (!PyObject_AsCharBuffer(o, &buffer, &buffer_len))
-        return int_from_string((char*)buffer, buffer_len);
-
-    return type_error("int() argument must be a string or a "
-                      "number, not '%.200s'", o);
-}
-
-/* Add a check for embedded NULL-bytes in the argument. */
-static PyObject *
-long_from_string(const char *s, Py_ssize_t len)
-{
-    char *end;
-    PyObject *x;
-
-    x = PyLong_FromString((char*)s, &end, 10);
-    if (x == NULL)
-        return NULL;
-    if (end != s + len) {
-        PyErr_SetString(PyExc_ValueError,
-                        "null byte in argument for long()");
-        Py_DECREF(x);
-        return NULL;
-    }
-    return x;
-}
-
-PyObject *
-PyNumber_Long(PyObject *o)
-{
-    PyNumberMethods *m;
-    static PyObject *trunc_name = NULL;
-    PyObject *trunc_func;
-    const char *buffer;
-    Py_ssize_t buffer_len;
-
-    if (trunc_name == NULL) {
-        trunc_name = PyString_InternFromString("__trunc__");
-        if (trunc_name == NULL)
-            return NULL;
-    }
-
-    if (o == NULL)
-        return null_error();
-    m = o->ob_type->tp_as_number;
-    if (m && m->nb_long) { /* This should include subclasses of long */
-        /* Classic classes always take this branch. */
-        PyObject *res = m->nb_long(o);
-        if (res == NULL)
-            return NULL;
-        if (PyInt_Check(res)) {
-            long value = PyInt_AS_LONG(res);
-            Py_DECREF(res);
-            return PyLong_FromLong(value);
-        }
-        else if (!PyLong_Check(res)) {
-            PyErr_Format(PyExc_TypeError,
-                         "__long__ returned non-long (type %.200s)",
-                         res->ob_type->tp_name);
-            Py_DECREF(res);
-            return NULL;
-        }
-        return res;
-    }
-    if (PyLong_Check(o)) /* A long subclass without nb_long */
-        return _PyLong_Copy((PyLongObject *)o);
-    trunc_func = PyObject_GetAttr(o, trunc_name);
-    if (trunc_func) {
-        PyObject *truncated = PyEval_CallObject(trunc_func, NULL);
-        PyObject *int_instance;
-        Py_DECREF(trunc_func);
-        /* __trunc__ is specified to return an Integral type,
-           but long() needs to return a long. */
-        int_instance = _PyNumber_ConvertIntegralToInt(
-            truncated,
-            "__trunc__ returned non-Integral (type %.200s)");
-        if (int_instance && PyInt_Check(int_instance)) {
-            /* Make sure that long() returns a long instance. */
-            long value = PyInt_AS_LONG(int_instance);
-            Py_DECREF(int_instance);
-            return PyLong_FromLong(value);
-        }
-        return int_instance;
-    }
-    PyErr_Clear();  /* It's not an error if  o.__trunc__ doesn't exist. */
-
-    if (PyString_Check(o))
-        /* need to do extra error checking that PyLong_FromString()
-         * doesn't do.  In particular long('9.5') must raise an
-         * exception, not truncate the float.
-         */
-        return long_from_string(PyString_AS_STRING(o),
-                                PyString_GET_SIZE(o));
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(o))
-        /* The above check is done in PyLong_FromUnicode(). */
-        return PyLong_FromUnicode(PyUnicode_AS_UNICODE(o),
-                                  PyUnicode_GET_SIZE(o),
-                                  10);
-#endif
-    if (!PyObject_AsCharBuffer(o, &buffer, &buffer_len))
-        return long_from_string(buffer, buffer_len);
-
-    return type_error("long() argument must be a string or a "
-                      "number, not '%.200s'", o);
-}
-
-PyObject *
-PyNumber_Float(PyObject *o)
-{
-    PyNumberMethods *m;
-
-    if (o == NULL)
-        return null_error();
-    m = o->ob_type->tp_as_number;
-    if (m && m->nb_float) { /* This should include subclasses of float */
-        PyObject *res = m->nb_float(o);
-        if (res && !PyFloat_Check(res)) {
-            PyErr_Format(PyExc_TypeError,
-              "__float__ returned non-float (type %.200s)",
-              res->ob_type->tp_name);
-            Py_DECREF(res);
-            return NULL;
-        }
-        return res;
-    }
-    if (PyFloat_Check(o)) { /* A float subclass with nb_float == NULL */
-        PyFloatObject *po = (PyFloatObject *)o;
-        return PyFloat_FromDouble(po->ob_fval);
-    }
-    return PyFloat_FromString(o, NULL);
-}
-
-PyObject *
-PyNumber_ToBase(PyObject *n, int base)
-{
-    PyObject *res = NULL;
-    PyObject *index = PyNumber_Index(n);
-
-    if (!index)
-        return NULL;
-    if (PyLong_Check(index))
-        res = _PyLong_Format(index, base, 0, 1);
-    else if (PyInt_Check(index))
-        res = _PyInt_Format((PyIntObject*)index, base, 1);
-    else
-        /* It should not be possible to get here, as
-           PyNumber_Index already has a check for the same
-           condition */
-        PyErr_SetString(PyExc_ValueError, "PyNumber_ToBase: index not "
-                        "int or long");
-    Py_DECREF(index);
-    return res;
-}
-
-
-/* Operations on sequences */
-
-int
-PySequence_Check(PyObject *s)
-{
-    if (s == NULL)
-        return 0;
-    if (PyInstance_Check(s))
-        return PyObject_HasAttrString(s, "__getitem__");
-    if (PyDict_Check(s))
-        return 0;
-    return  s->ob_type->tp_as_sequence &&
-        s->ob_type->tp_as_sequence->sq_item != NULL;
-}
-
-Py_ssize_t
-PySequence_Size(PyObject *s)
-{
-    PySequenceMethods *m;
-
-    if (s == NULL) {
-        null_error();
-        return -1;
-    }
-
-    m = s->ob_type->tp_as_sequence;
-    if (m && m->sq_length)
-        return m->sq_length(s);
-
-    type_error("object of type '%.200s' has no len()", s);
-    return -1;
-}
-
-#undef PySequence_Length
-Py_ssize_t
-PySequence_Length(PyObject *s)
-{
-    return PySequence_Size(s);
-}
-#define PySequence_Length PySequence_Size
-
-PyObject *
-PySequence_Concat(PyObject *s, PyObject *o)
-{
-    PySequenceMethods *m;
-
-    if (s == NULL || o == NULL)
-        return null_error();
-
-    m = s->ob_type->tp_as_sequence;
-    if (m && m->sq_concat)
-        return m->sq_concat(s, o);
-
-    /* Instances of user classes defining an __add__() method only
-       have an nb_add slot, not an sq_concat slot.  So we fall back
-       to nb_add if both arguments appear to be sequences. */
-    if (PySequence_Check(s) && PySequence_Check(o)) {
-        PyObject *result = binary_op1(s, o, NB_SLOT(nb_add));
-        if (result != Py_NotImplemented)
-            return result;
-        Py_DECREF(result);
-    }
-    return type_error("'%.200s' object can't be concatenated", s);
-}
-
-PyObject *
-PySequence_Repeat(PyObject *o, Py_ssize_t count)
-{
-    PySequenceMethods *m;
-
-    if (o == NULL)
-        return null_error();
-
-    m = o->ob_type->tp_as_sequence;
-    if (m && m->sq_repeat)
-        return m->sq_repeat(o, count);
-
-    /* Instances of user classes defining a __mul__() method only
-       have an nb_multiply slot, not an sq_repeat slot. so we fall back
-       to nb_multiply if o appears to be a sequence. */
-    if (PySequence_Check(o)) {
-        PyObject *n, *result;
-        n = PyInt_FromSsize_t(count);
-        if (n == NULL)
-            return NULL;
-        result = binary_op1(o, n, NB_SLOT(nb_multiply));
-        Py_DECREF(n);
-        if (result != Py_NotImplemented)
-            return result;
-        Py_DECREF(result);
-    }
-    return type_error("'%.200s' object can't be repeated", o);
-}
-
-PyObject *
-PySequence_InPlaceConcat(PyObject *s, PyObject *o)
-{
-    PySequenceMethods *m;
-
-    if (s == NULL || o == NULL)
-        return null_error();
-
-    m = s->ob_type->tp_as_sequence;
-    if (m && HASINPLACE(s) && m->sq_inplace_concat)
-        return m->sq_inplace_concat(s, o);
-    if (m && m->sq_concat)
-        return m->sq_concat(s, o);
-
-    if (PySequence_Check(s) && PySequence_Check(o)) {
-        PyObject *result = binary_iop1(s, o, NB_SLOT(nb_inplace_add),
-                                       NB_SLOT(nb_add));
-        if (result != Py_NotImplemented)
-            return result;
-        Py_DECREF(result);
-    }
-    return type_error("'%.200s' object can't be concatenated", s);
-}
-
-PyObject *
-PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count)
-{
-    PySequenceMethods *m;
-
-    if (o == NULL)
-        return null_error();
-
-    m = o->ob_type->tp_as_sequence;
-    if (m && HASINPLACE(o) && m->sq_inplace_repeat)
-        return m->sq_inplace_repeat(o, count);
-    if (m && m->sq_repeat)
-        return m->sq_repeat(o, count);
-
-    if (PySequence_Check(o)) {
-        PyObject *n, *result;
-        n = PyInt_FromSsize_t(count);
-        if (n == NULL)
-            return NULL;
-        result = binary_iop1(o, n, NB_SLOT(nb_inplace_multiply),
-                             NB_SLOT(nb_multiply));
-        Py_DECREF(n);
-        if (result != Py_NotImplemented)
-            return result;
-        Py_DECREF(result);
-    }
-    return type_error("'%.200s' object can't be repeated", o);
-}
-
-PyObject *
-PySequence_GetItem(PyObject *s, Py_ssize_t i)
-{
-    PySequenceMethods *m;
-
-    if (s == NULL)
-        return null_error();
-
-    m = s->ob_type->tp_as_sequence;
-    if (m && m->sq_item) {
-        if (i < 0) {
-            if (m->sq_length) {
-                Py_ssize_t l = (*m->sq_length)(s);
-                if (l < 0)
-                    return NULL;
-                i += l;
-            }
-        }
-        return m->sq_item(s, i);
-    }
-
-    return type_error("'%.200s' object does not support indexing", s);
-}
-
-PyObject *
-PySequence_GetSlice(PyObject *s, Py_ssize_t i1, Py_ssize_t i2)
-{
-    PySequenceMethods *m;
-    PyMappingMethods *mp;
-
-    if (!s) return null_error();
-
-    m = s->ob_type->tp_as_sequence;
-    if (m && m->sq_slice) {
-        if (i1 < 0 || i2 < 0) {
-            if (m->sq_length) {
-                Py_ssize_t l = (*m->sq_length)(s);
-                if (l < 0)
-                    return NULL;
-                if (i1 < 0)
-                    i1 += l;
-                if (i2 < 0)
-                    i2 += l;
-            }
-        }
-        return m->sq_slice(s, i1, i2);
-    } else if ((mp = s->ob_type->tp_as_mapping) && mp->mp_subscript) {
-        PyObject *res;
-        PyObject *slice = _PySlice_FromIndices(i1, i2);
-        if (!slice)
-            return NULL;
-        res = mp->mp_subscript(s, slice);
-        Py_DECREF(slice);
-        return res;
-    }
-
-    return type_error("'%.200s' object is unsliceable", s);
-}
-
-int
-PySequence_SetItem(PyObject *s, Py_ssize_t i, PyObject *o)
-{
-    PySequenceMethods *m;
-
-    if (s == NULL) {
-        null_error();
-        return -1;
-    }
-
-    m = s->ob_type->tp_as_sequence;
-    if (m && m->sq_ass_item) {
-        if (i < 0) {
-            if (m->sq_length) {
-                Py_ssize_t l = (*m->sq_length)(s);
-                if (l < 0)
-                    return -1;
-                i += l;
-            }
-        }
-        return m->sq_ass_item(s, i, o);
-    }
-
-    type_error("'%.200s' object does not support item assignment", s);
-    return -1;
-}
-
-int
-PySequence_DelItem(PyObject *s, Py_ssize_t i)
-{
-    PySequenceMethods *m;
-
-    if (s == NULL) {
-        null_error();
-        return -1;
-    }
-
-    m = s->ob_type->tp_as_sequence;
-    if (m && m->sq_ass_item) {
-        if (i < 0) {
-            if (m->sq_length) {
-                Py_ssize_t l = (*m->sq_length)(s);
-                if (l < 0)
-                    return -1;
-                i += l;
-            }
-        }
-        return m->sq_ass_item(s, i, (PyObject *)NULL);
-    }
-
-    type_error("'%.200s' object doesn't support item deletion", s);
-    return -1;
-}
-
-int
-PySequence_SetSlice(PyObject *s, Py_ssize_t i1, Py_ssize_t i2, PyObject *o)
-{
-    PySequenceMethods *m;
-    PyMappingMethods *mp;
-
-    if (s == NULL) {
-        null_error();
-        return -1;
-    }
-
-    m = s->ob_type->tp_as_sequence;
-    if (m && m->sq_ass_slice) {
-        if (i1 < 0 || i2 < 0) {
-            if (m->sq_length) {
-                Py_ssize_t l = (*m->sq_length)(s);
-                if (l < 0)
-                    return -1;
-                if (i1 < 0)
-                    i1 += l;
-                if (i2 < 0)
-                    i2 += l;
-            }
-        }
-        return m->sq_ass_slice(s, i1, i2, o);
-    } else if ((mp = s->ob_type->tp_as_mapping) && mp->mp_ass_subscript) {
-        int res;
-        PyObject *slice = _PySlice_FromIndices(i1, i2);
-        if (!slice)
-            return -1;
-        res = mp->mp_ass_subscript(s, slice, o);
-        Py_DECREF(slice);
-        return res;
-    }
-
-    type_error("'%.200s' object doesn't support slice assignment", s);
-    return -1;
-}
-
-int
-PySequence_DelSlice(PyObject *s, Py_ssize_t i1, Py_ssize_t i2)
-{
-    PySequenceMethods *m;
-
-    if (s == NULL) {
-        null_error();
-        return -1;
-    }
-
-    m = s->ob_type->tp_as_sequence;
-    if (m && m->sq_ass_slice) {
-        if (i1 < 0 || i2 < 0) {
-            if (m->sq_length) {
-                Py_ssize_t l = (*m->sq_length)(s);
-                if (l < 0)
-                    return -1;
-                if (i1 < 0)
-                    i1 += l;
-                if (i2 < 0)
-                    i2 += l;
-            }
-        }
-        return m->sq_ass_slice(s, i1, i2, (PyObject *)NULL);
-    }
-    type_error("'%.200s' object doesn't support slice deletion", s);
-    return -1;
-}
-
-PyObject *
-PySequence_Tuple(PyObject *v)
-{
-    PyObject *it;  /* iter(v) */
-    Py_ssize_t n;         /* guess for result tuple size */
-    PyObject *result = NULL;
-    Py_ssize_t j;
-
-    if (v == NULL)
-        return null_error();
-
-    /* Special-case the common tuple and list cases, for efficiency. */
-    if (PyTuple_CheckExact(v)) {
-        /* Note that we can't know whether it's safe to return
-           a tuple *subclass* instance as-is, hence the restriction
-           to exact tuples here.  In contrast, lists always make
-           a copy, so there's no need for exactness below. */
-        Py_INCREF(v);
-        return v;
-    }
-    if (PyList_Check(v))
-        return PyList_AsTuple(v);
-
-    /* Get iterator. */
-    it = PyObject_GetIter(v);
-    if (it == NULL)
-        return NULL;
-
-    /* Guess result size and allocate space. */
-    n = _PyObject_LengthHint(v, 10);
-    if (n == -1)
-        goto Fail;
-    result = PyTuple_New(n);
-    if (result == NULL)
-        goto Fail;
-
-    /* Fill the tuple. */
-    for (j = 0; ; ++j) {
-        PyObject *item = PyIter_Next(it);
-        if (item == NULL) {
-            if (PyErr_Occurred())
-                goto Fail;
-            break;
-        }
-        if (j >= n) {
-            Py_ssize_t oldn = n;
-            /* The over-allocation strategy can grow a bit faster
-               than for lists because unlike lists the
-               over-allocation isn't permanent -- we reclaim
-               the excess before the end of this routine.
-               So, grow by ten and then add 25%.
-            */
-            n += 10;
-            n += n >> 2;
-            if (n < oldn) {
-                /* Check for overflow */
-                PyErr_NoMemory();
-                Py_DECREF(item);
-                goto Fail;
-            }
-            if (_PyTuple_Resize(&result, n) != 0) {
-                Py_DECREF(item);
-                goto Fail;
-            }
-        }
-        PyTuple_SET_ITEM(result, j, item);
-    }
-
-    /* Cut tuple back if guess was too large. */
-    if (j < n &&
-        _PyTuple_Resize(&result, j) != 0)
-        goto Fail;
-
-    Py_DECREF(it);
-    return result;
-
-Fail:
-    Py_XDECREF(result);
-    Py_DECREF(it);
-    return NULL;
-}
-
-PyObject *
-PySequence_List(PyObject *v)
-{
-    PyObject *result;  /* result list */
-    PyObject *rv;      /* return value from PyList_Extend */
-
-    if (v == NULL)
-        return null_error();
-
-    result = PyList_New(0);
-    if (result == NULL)
-        return NULL;
-
-    rv = _PyList_Extend((PyListObject *)result, v);
-    if (rv == NULL) {
-        Py_DECREF(result);
-        return NULL;
-    }
-    Py_DECREF(rv);
-    return result;
-}
-
-PyObject *
-PySequence_Fast(PyObject *v, const char *m)
-{
-    PyObject *it;
-
-    if (v == NULL)
-        return null_error();
-
-    if (PyList_CheckExact(v) || PyTuple_CheckExact(v)) {
-        Py_INCREF(v);
-        return v;
-    }
-
-    it = PyObject_GetIter(v);
-    if (it == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_TypeError))
-            PyErr_SetString(PyExc_TypeError, m);
-        return NULL;
-    }
-
-    v = PySequence_List(it);
-    Py_DECREF(it);
-
-    return v;
-}
-
-/* Iterate over seq.  Result depends on the operation:
-   PY_ITERSEARCH_COUNT:  -1 if error, else # of times obj appears in seq.
-   PY_ITERSEARCH_INDEX:  0-based index of first occurrence of obj in seq;
-    set ValueError and return -1 if none found; also return -1 on error.
-   Py_ITERSEARCH_CONTAINS:  return 1 if obj in seq, else 0; -1 on error.
-*/
-Py_ssize_t
-_PySequence_IterSearch(PyObject *seq, PyObject *obj, int operation)
-{
-    Py_ssize_t n;
-    int wrapped;  /* for PY_ITERSEARCH_INDEX, true iff n wrapped around */
-    PyObject *it;  /* iter(seq) */
-
-    if (seq == NULL || obj == NULL) {
-        null_error();
-        return -1;
-    }
-
-    it = PyObject_GetIter(seq);
-    if (it == NULL) {
-        type_error("argument of type '%.200s' is not iterable", seq);
-        return -1;
-    }
-
-    n = wrapped = 0;
-    for (;;) {
-        int cmp;
-        PyObject *item = PyIter_Next(it);
-        if (item == NULL) {
-            if (PyErr_Occurred())
-                goto Fail;
-            break;
-        }
-
-        cmp = PyObject_RichCompareBool(obj, item, Py_EQ);
-        Py_DECREF(item);
-        if (cmp < 0)
-            goto Fail;
-        if (cmp > 0) {
-            switch (operation) {
-            case PY_ITERSEARCH_COUNT:
-                if (n == PY_SSIZE_T_MAX) {
-                    PyErr_SetString(PyExc_OverflowError,
-                           "count exceeds C integer size");
-                    goto Fail;
-                }
-                ++n;
-                break;
-
-            case PY_ITERSEARCH_INDEX:
-                if (wrapped) {
-                    PyErr_SetString(PyExc_OverflowError,
-                           "index exceeds C integer size");
-                    goto Fail;
-                }
-                goto Done;
-
-            case PY_ITERSEARCH_CONTAINS:
-                n = 1;
-                goto Done;
-
-            default:
-                assert(!"unknown operation");
-            }
-        }
-
-        if (operation == PY_ITERSEARCH_INDEX) {
-            if (n == PY_SSIZE_T_MAX)
-                wrapped = 1;
-            ++n;
-        }
-    }
-
-    if (operation != PY_ITERSEARCH_INDEX)
-        goto Done;
-
-    PyErr_SetString(PyExc_ValueError,
-                    "sequence.index(x): x not in sequence");
-    /* fall into failure code */
-Fail:
-    n = -1;
-    /* fall through */
-Done:
-    Py_DECREF(it);
-    return n;
-
-}
-
-/* Return # of times o appears in s. */
-Py_ssize_t
-PySequence_Count(PyObject *s, PyObject *o)
-{
-    return _PySequence_IterSearch(s, o, PY_ITERSEARCH_COUNT);
-}
-
-/* Return -1 if error; 1 if ob in seq; 0 if ob not in seq.
- * Use sq_contains if possible, else defer to _PySequence_IterSearch().
- */
-int
-PySequence_Contains(PyObject *seq, PyObject *ob)
-{
-    Py_ssize_t result;
-    if (PyType_HasFeature(seq->ob_type, Py_TPFLAGS_HAVE_SEQUENCE_IN)) {
-        PySequenceMethods *sqm = seq->ob_type->tp_as_sequence;
-        if (sqm != NULL && sqm->sq_contains != NULL)
-            return (*sqm->sq_contains)(seq, ob);
-    }
-    result = _PySequence_IterSearch(seq, ob, PY_ITERSEARCH_CONTAINS);
-    return Py_SAFE_DOWNCAST(result, Py_ssize_t, int);
-}
-
-/* Backwards compatibility */
-#undef PySequence_In
-int
-PySequence_In(PyObject *w, PyObject *v)
-{
-    return PySequence_Contains(w, v);
-}
-
-Py_ssize_t
-PySequence_Index(PyObject *s, PyObject *o)
-{
-    return _PySequence_IterSearch(s, o, PY_ITERSEARCH_INDEX);
-}
-
-/* Operations on mappings */
-
-int
-PyMapping_Check(PyObject *o)
-{
-    if (o && PyInstance_Check(o))
-        return PyObject_HasAttrString(o, "__getitem__");
-
-    return  o && o->ob_type->tp_as_mapping &&
-        o->ob_type->tp_as_mapping->mp_subscript &&
-        !(o->ob_type->tp_as_sequence &&
-          o->ob_type->tp_as_sequence->sq_slice);
-}
-
-Py_ssize_t
-PyMapping_Size(PyObject *o)
-{
-    PyMappingMethods *m;
-
-    if (o == NULL) {
-        null_error();
-        return -1;
-    }
-
-    m = o->ob_type->tp_as_mapping;
-    if (m && m->mp_length)
-        return m->mp_length(o);
-
-    type_error("object of type '%.200s' has no len()", o);
-    return -1;
-}
-
-#undef PyMapping_Length
-Py_ssize_t
-PyMapping_Length(PyObject *o)
-{
-    return PyMapping_Size(o);
-}
-#define PyMapping_Length PyMapping_Size
-
-PyObject *
-PyMapping_GetItemString(PyObject *o, char *key)
-{
-    PyObject *okey, *r;
-
-    if (key == NULL)
-        return null_error();
-
-    okey = PyString_FromString(key);
-    if (okey == NULL)
-        return NULL;
-    r = PyObject_GetItem(o, okey);
-    Py_DECREF(okey);
-    return r;
-}
-
-int
-PyMapping_SetItemString(PyObject *o, char *key, PyObject *value)
-{
-    PyObject *okey;
-    int r;
-
-    if (key == NULL) {
-        null_error();
-        return -1;
-    }
-
-    okey = PyString_FromString(key);
-    if (okey == NULL)
-        return -1;
-    r = PyObject_SetItem(o, okey, value);
-    Py_DECREF(okey);
-    return r;
-}
-
-int
-PyMapping_HasKeyString(PyObject *o, char *key)
-{
-    PyObject *v;
-
-    v = PyMapping_GetItemString(o, key);
-    if (v) {
-        Py_DECREF(v);
-        return 1;
-    }
-    PyErr_Clear();
-    return 0;
-}
-
-int
-PyMapping_HasKey(PyObject *o, PyObject *key)
-{
-    PyObject *v;
-
-    v = PyObject_GetItem(o, key);
-    if (v) {
-        Py_DECREF(v);
-        return 1;
-    }
-    PyErr_Clear();
-    return 0;
-}
-
-/* Operations on callable objects */
-
-/* XXX PyCallable_Check() is in object.c */
-
-PyObject *
-PyObject_CallObject(PyObject *o, PyObject *a)
-{
-    return PyEval_CallObjectWithKeywords(o, a, NULL);
-}
-
-PyObject *
-PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw)
-{
-    ternaryfunc call;
-
-    if ((call = func->ob_type->tp_call) != NULL) {
-        PyObject *result;
-        if (Py_EnterRecursiveCall(" while calling a Python object"))
-            return NULL;
-        result = (*call)(func, arg, kw);
-        Py_LeaveRecursiveCall();
-        if (result == NULL && !PyErr_Occurred())
-            PyErr_SetString(
-                PyExc_SystemError,
-                "NULL result without error in PyObject_Call");
-        return result;
-    }
-    PyErr_Format(PyExc_TypeError, "'%.200s' object is not callable",
-                 func->ob_type->tp_name);
-    return NULL;
-}
-
-static PyObject*
-call_function_tail(PyObject *callable, PyObject *args)
-{
-    PyObject *retval;
-
-    if (args == NULL)
-        return NULL;
-
-    if (!PyTuple_Check(args)) {
-        PyObject *a;
-
-        a = PyTuple_New(1);
-        if (a == NULL) {
-            Py_DECREF(args);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(a, 0, args);
-        args = a;
-    }
-    retval = PyObject_Call(callable, args, NULL);
-
-    Py_DECREF(args);
-
-    return retval;
-}
-
-PyObject *
-PyObject_CallFunction(PyObject *callable, char *format, ...)
-{
-    va_list va;
-    PyObject *args;
-
-    if (callable == NULL)
-        return null_error();
-
-    if (format && *format) {
-        va_start(va, format);
-        args = Py_VaBuildValue(format, va);
-        va_end(va);
-    }
-    else
-        args = PyTuple_New(0);
-
-    return call_function_tail(callable, args);
-}
-
-PyObject *
-_PyObject_CallFunction_SizeT(PyObject *callable, char *format, ...)
-{
-    va_list va;
-    PyObject *args;
-
-    if (callable == NULL)
-        return null_error();
-
-    if (format && *format) {
-        va_start(va, format);
-        args = _Py_VaBuildValue_SizeT(format, va);
-        va_end(va);
-    }
-    else
-        args = PyTuple_New(0);
-
-    return call_function_tail(callable, args);
-}
-
-PyObject *
-PyObject_CallMethod(PyObject *o, char *name, char *format, ...)
-{
-    va_list va;
-    PyObject *args;
-    PyObject *func = NULL;
-    PyObject *retval = NULL;
-
-    if (o == NULL || name == NULL)
-        return null_error();
-
-    func = PyObject_GetAttrString(o, name);
-    if (func == NULL) {
-        PyErr_SetString(PyExc_AttributeError, name);
-        return 0;
-    }
-
-    if (!PyCallable_Check(func)) {
-        type_error("attribute of type '%.200s' is not callable", func);
-        goto exit;
-    }
-
-    if (format && *format) {
-        va_start(va, format);
-        args = Py_VaBuildValue(format, va);
-        va_end(va);
-    }
-    else
-        args = PyTuple_New(0);
-
-    retval = call_function_tail(func, args);
-
-  exit:
-    /* args gets consumed in call_function_tail */
-    Py_XDECREF(func);
-
-    return retval;
-}
-
-PyObject *
-_PyObject_CallMethod_SizeT(PyObject *o, char *name, char *format, ...)
-{
-    va_list va;
-    PyObject *args;
-    PyObject *func = NULL;
-    PyObject *retval = NULL;
-
-    if (o == NULL || name == NULL)
-        return null_error();
-
-    func = PyObject_GetAttrString(o, name);
-    if (func == NULL) {
-        PyErr_SetString(PyExc_AttributeError, name);
-        return 0;
-    }
-
-    if (!PyCallable_Check(func)) {
-        type_error("attribute of type '%.200s' is not callable", func);
-        goto exit;
-    }
-
-    if (format && *format) {
-        va_start(va, format);
-        args = _Py_VaBuildValue_SizeT(format, va);
-        va_end(va);
-    }
-    else
-        args = PyTuple_New(0);
-
-    retval = call_function_tail(func, args);
-
-  exit:
-    /* args gets consumed in call_function_tail */
-    Py_XDECREF(func);
-
-    return retval;
-}
-
-
-static PyObject *
-objargs_mktuple(va_list va)
-{
-    int i, n = 0;
-    va_list countva;
-    PyObject *result, *tmp;
-
-#ifdef VA_LIST_IS_ARRAY
-    memcpy(countva, va, sizeof(va_list));
-#else
-#ifdef __va_copy
-    __va_copy(countva, va);
-#else
-    countva = va;
-#endif
-#endif
-
-    while (((PyObject *)va_arg(countva, PyObject *)) != NULL)
-        ++n;
-    result = PyTuple_New(n);
-    if (result != NULL && n > 0) {
-        for (i = 0; i < n; ++i) {
-            tmp = (PyObject *)va_arg(va, PyObject *);
-            PyTuple_SET_ITEM(result, i, tmp);
-            Py_INCREF(tmp);
-        }
-    }
-    return result;
-}
-
-PyObject *
-PyObject_CallMethodObjArgs(PyObject *callable, PyObject *name, ...)
-{
-    PyObject *args, *tmp;
-    va_list vargs;
-
-    if (callable == NULL || name == NULL)
-        return null_error();
-
-    callable = PyObject_GetAttr(callable, name);
-    if (callable == NULL)
-        return NULL;
-
-    /* count the args */
-    va_start(vargs, name);
-    args = objargs_mktuple(vargs);
-    va_end(vargs);
-    if (args == NULL) {
-        Py_DECREF(callable);
-        return NULL;
-    }
-    tmp = PyObject_Call(callable, args, NULL);
-    Py_DECREF(args);
-    Py_DECREF(callable);
-
-    return tmp;
-}
-
-PyObject *
-PyObject_CallFunctionObjArgs(PyObject *callable, ...)
-{
-    PyObject *args, *tmp;
-    va_list vargs;
-
-    if (callable == NULL)
-        return null_error();
-
-    /* count the args */
-    va_start(vargs, callable);
-    args = objargs_mktuple(vargs);
-    va_end(vargs);
-    if (args == NULL)
-        return NULL;
-    tmp = PyObject_Call(callable, args, NULL);
-    Py_DECREF(args);
-
-    return tmp;
-}
-
-
-/* isinstance(), issubclass() */
-
-/* abstract_get_bases() has logically 4 return states, with a sort of 0th
- * state that will almost never happen.
- *
- * 0. creating the __bases__ static string could get a MemoryError
- * 1. getattr(cls, '__bases__') could raise an AttributeError
- * 2. getattr(cls, '__bases__') could raise some other exception
- * 3. getattr(cls, '__bases__') could return a tuple
- * 4. getattr(cls, '__bases__') could return something other than a tuple
- *
- * Only state #3 is a non-error state and only it returns a non-NULL object
- * (it returns the retrieved tuple).
- *
- * Any raised AttributeErrors are masked by clearing the exception and
- * returning NULL.  If an object other than a tuple comes out of __bases__,
- * then again, the return value is NULL.  So yes, these two situations
- * produce exactly the same results: NULL is returned and no error is set.
- *
- * If some exception other than AttributeError is raised, then NULL is also
- * returned, but the exception is not cleared.  That's because we want the
- * exception to be propagated along.
- *
- * Callers are expected to test for PyErr_Occurred() when the return value
- * is NULL to decide whether a valid exception should be propagated or not.
- * When there's no exception to propagate, it's customary for the caller to
- * set a TypeError.
- */
-static PyObject *
-abstract_get_bases(PyObject *cls)
-{
-    static PyObject *__bases__ = NULL;
-    PyObject *bases;
-
-    if (__bases__ == NULL) {
-        __bases__ = PyString_InternFromString("__bases__");
-        if (__bases__ == NULL)
-            return NULL;
-    }
-    bases = PyObject_GetAttr(cls, __bases__);
-    if (bases == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_AttributeError))
-            PyErr_Clear();
-        return NULL;
-    }
-    if (!PyTuple_Check(bases)) {
-        Py_DECREF(bases);
-        return NULL;
-    }
-    return bases;
-}
-
-
-static int
-abstract_issubclass(PyObject *derived, PyObject *cls)
-{
-    PyObject *bases = NULL;
-    Py_ssize_t i, n;
-    int r = 0;
-
-    while (1) {
-        if (derived == cls)
-            return 1;
-        bases = abstract_get_bases(derived);
-        if (bases == NULL) {
-            if (PyErr_Occurred())
-                return -1;
-            return 0;
-        }
-        n = PyTuple_GET_SIZE(bases);
-        if (n == 0) {
-            Py_DECREF(bases);
-            return 0;
-        }
-        /* Avoid recursivity in the single inheritance case */
-        if (n == 1) {
-            derived = PyTuple_GET_ITEM(bases, 0);
-            Py_DECREF(bases);
-            continue;
-        }
-        for (i = 0; i < n; i++) {
-            r = abstract_issubclass(PyTuple_GET_ITEM(bases, i), cls);
-            if (r != 0)
-                break;
-        }
-        Py_DECREF(bases);
-        return r;
-    }
-}
-
-static int
-check_class(PyObject *cls, const char *error)
-{
-    PyObject *bases = abstract_get_bases(cls);
-    if (bases == NULL) {
-        /* Do not mask errors. */
-        if (!PyErr_Occurred())
-            PyErr_SetString(PyExc_TypeError, error);
-        return 0;
-    }
-    Py_DECREF(bases);
-    return -1;
-}
-
-static int
-recursive_isinstance(PyObject *inst, PyObject *cls)
-{
-    PyObject *icls;
-    static PyObject *__class__ = NULL;
-    int retval = 0;
-
-    if (__class__ == NULL) {
-        __class__ = PyString_InternFromString("__class__");
-        if (__class__ == NULL)
-            return -1;
-    }
-
-    if (PyClass_Check(cls) && PyInstance_Check(inst)) {
-        PyObject *inclass =
-            (PyObject*)((PyInstanceObject*)inst)->in_class;
-        retval = PyClass_IsSubclass(inclass, cls);
-    }
-    else if (PyType_Check(cls)) {
-        retval = PyObject_TypeCheck(inst, (PyTypeObject *)cls);
-        if (retval == 0) {
-            PyObject *c = PyObject_GetAttr(inst, __class__);
-            if (c == NULL) {
-                PyErr_Clear();
-            }
-            else {
-                if (c != (PyObject *)(inst->ob_type) &&
-                    PyType_Check(c))
-                    retval = PyType_IsSubtype(
-                        (PyTypeObject *)c,
-                        (PyTypeObject *)cls);
-                Py_DECREF(c);
-            }
-        }
-    }
-    else {
-        if (!check_class(cls,
-            "isinstance() arg 2 must be a class, type,"
-            " or tuple of classes and types"))
-            return -1;
-        icls = PyObject_GetAttr(inst, __class__);
-        if (icls == NULL) {
-            PyErr_Clear();
-            retval = 0;
-        }
-        else {
-            retval = abstract_issubclass(icls, cls);
-            Py_DECREF(icls);
-        }
-    }
-
-    return retval;
-}
-
-int
-PyObject_IsInstance(PyObject *inst, PyObject *cls)
-{
-    static PyObject *name = NULL;
-
-    /* Quick test for an exact match */
-    if (Py_TYPE(inst) == (PyTypeObject *)cls)
-        return 1;
-
-    if (PyTuple_Check(cls)) {
-        Py_ssize_t i;
-        Py_ssize_t n;
-        int r = 0;
-
-        if (Py_EnterRecursiveCall(" in __instancecheck__"))
-            return -1;
-        n = PyTuple_GET_SIZE(cls);
-        for (i = 0; i < n; ++i) {
-            PyObject *item = PyTuple_GET_ITEM(cls, i);
-            r = PyObject_IsInstance(inst, item);
-            if (r != 0)
-                /* either found it, or got an error */
-                break;
-        }
-        Py_LeaveRecursiveCall();
-        return r;
-    }
-
-    if (!(PyClass_Check(cls) || PyInstance_Check(cls))) {
-        PyObject *checker;
-        checker = _PyObject_LookupSpecial(cls, "__instancecheck__", &name);
-        if (checker != NULL) {
-            PyObject *res;
-            int ok = -1;
-            if (Py_EnterRecursiveCall(" in __instancecheck__")) {
-                Py_DECREF(checker);
-                return ok;
-            }
-            res = PyObject_CallFunctionObjArgs(checker, inst, NULL);
-            Py_LeaveRecursiveCall();
-            Py_DECREF(checker);
-            if (res != NULL) {
-                ok = PyObject_IsTrue(res);
-                Py_DECREF(res);
-            }
-            return ok;
-        }
-        else if (PyErr_Occurred())
-            return -1;
-    }
-    return recursive_isinstance(inst, cls);
-}
-
-static  int
-recursive_issubclass(PyObject *derived, PyObject *cls)
-{
-    int retval;
-
-    if (PyType_Check(cls) && PyType_Check(derived)) {
-        /* Fast path (non-recursive) */
-        return PyType_IsSubtype(
-            (PyTypeObject *)derived, (PyTypeObject *)cls);
-    }
-    if (!PyClass_Check(derived) || !PyClass_Check(cls)) {
-        if (!check_class(derived,
-                         "issubclass() arg 1 must be a class"))
-            return -1;
-
-        if (!check_class(cls,
-                        "issubclass() arg 2 must be a class"
-                        " or tuple of classes"))
-            return -1;
-        retval = abstract_issubclass(derived, cls);
-    }
-    else {
-        /* shortcut */
-        if (!(retval = (derived == cls)))
-            retval = PyClass_IsSubclass(derived, cls);
-    }
-
-    return retval;
-}
-
-int
-PyObject_IsSubclass(PyObject *derived, PyObject *cls)
-{
-    static PyObject *name = NULL;
-
-    if (PyTuple_Check(cls)) {
-        Py_ssize_t i;
-        Py_ssize_t n;
-        int r = 0;
-
-        if (Py_EnterRecursiveCall(" in __subclasscheck__"))
-            return -1;
-        n = PyTuple_GET_SIZE(cls);
-        for (i = 0; i < n; ++i) {
-            PyObject *item = PyTuple_GET_ITEM(cls, i);
-            r = PyObject_IsSubclass(derived, item);
-            if (r != 0)
-                /* either found it, or got an error */
-                break;
-        }
-        Py_LeaveRecursiveCall();
-        return r;
-    }
-    if (!(PyClass_Check(cls) || PyInstance_Check(cls))) {
-        PyObject *checker;
-        checker = _PyObject_LookupSpecial(cls, "__subclasscheck__", &name);
-        if (checker != NULL) {
-            PyObject *res;
-            int ok = -1;
-            if (Py_EnterRecursiveCall(" in __subclasscheck__")) {
-                Py_DECREF(checker);
-                return ok;
-            }
-            res = PyObject_CallFunctionObjArgs(checker, derived, NULL);
-            Py_LeaveRecursiveCall();
-            Py_DECREF(checker);
-            if (res != NULL) {
-                ok = PyObject_IsTrue(res);
-                Py_DECREF(res);
-            }
-            return ok;
-        }
-        else if (PyErr_Occurred()) {
-            return -1;
-        }
-    }
-    return recursive_issubclass(derived, cls);
-}
-
-int
-_PyObject_RealIsInstance(PyObject *inst, PyObject *cls)
-{
-    return recursive_isinstance(inst, cls);
-}
-
-int
-_PyObject_RealIsSubclass(PyObject *derived, PyObject *cls)
-{
-    return recursive_issubclass(derived, cls);
-}
-
-
-PyObject *
-PyObject_GetIter(PyObject *o)
-{
-    PyTypeObject *t = o->ob_type;
-    getiterfunc f = NULL;
-    if (PyType_HasFeature(t, Py_TPFLAGS_HAVE_ITER))
-        f = t->tp_iter;
-    if (f == NULL) {
-        if (PySequence_Check(o))
-            return PySeqIter_New(o);
-        return type_error("'%.200s' object is not iterable", o);
-    }
-    else {
-        PyObject *res = (*f)(o);
-        if (res != NULL && !PyIter_Check(res)) {
-            PyErr_Format(PyExc_TypeError,
-                         "iter() returned non-iterator "
-                         "of type '%.100s'",
-                         res->ob_type->tp_name);
-            Py_DECREF(res);
-            res = NULL;
-        }
-        return res;
-    }
-}
-
-/* Return next item.
- * If an error occurs, return NULL.  PyErr_Occurred() will be true.
- * If the iteration terminates normally, return NULL and clear the
- * PyExc_StopIteration exception (if it was set).  PyErr_Occurred()
- * will be false.
- * Else return the next object.  PyErr_Occurred() will be false.
- */
-PyObject *
-PyIter_Next(PyObject *iter)
-{
-    PyObject *result;
-    result = (*iter->ob_type->tp_iternext)(iter);
-    if (result == NULL &&
-        PyErr_Occurred() &&
-        PyErr_ExceptionMatches(PyExc_StopIteration))
-        PyErr_Clear();
-    return result;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/boolobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/boolobject.c
deleted file mode 100644
index 6791ee7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/boolobject.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/* Boolean type, a subtype of int */
-
-#include "Python.h"
-
-/* We need to define bool_print to override int_print */
-
-static int
-bool_print(PyBoolObject *self, FILE *fp, int flags)
-{
-    Py_BEGIN_ALLOW_THREADS
-    fputs(self->ob_ival == 0 ? "False" : "True", fp);
-    Py_END_ALLOW_THREADS
-    return 0;
-}
-
-/* We define bool_repr to return "False" or "True" */
-
-static PyObject *false_str = NULL;
-static PyObject *true_str = NULL;
-
-static PyObject *
-bool_repr(PyBoolObject *self)
-{
-    PyObject *s;
-
-    if (self->ob_ival)
-        s = true_str ? true_str :
-            (true_str = PyString_InternFromString("True"));
-    else
-        s = false_str ? false_str :
-            (false_str = PyString_InternFromString("False"));
-    Py_XINCREF(s);
-    return s;
-}
-
-/* Function to return a bool from a C long */
-
-PyObject *PyBool_FromLong(long ok)
-{
-    PyObject *result;
-
-    if (ok)
-        result = Py_True;
-    else
-        result = Py_False;
-    Py_INCREF(result);
-    return result;
-}
-
-/* We define bool_new to always return either Py_True or Py_False */
-
-static PyObject *
-bool_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    static char *kwlist[] = {"x", 0};
-    PyObject *x = Py_False;
-    long ok;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:bool", kwlist, &x))
-        return NULL;
-    ok = PyObject_IsTrue(x);
-    if (ok < 0)
-        return NULL;
-    return PyBool_FromLong(ok);
-}
-
-/* Arithmetic operations redefined to return bool if both args are bool. */
-
-static PyObject *
-bool_and(PyObject *a, PyObject *b)
-{
-    if (!PyBool_Check(a) || !PyBool_Check(b))
-        return PyInt_Type.tp_as_number->nb_and(a, b);
-    return PyBool_FromLong(
-        ((PyBoolObject *)a)->ob_ival & ((PyBoolObject *)b)->ob_ival);
-}
-
-static PyObject *
-bool_or(PyObject *a, PyObject *b)
-{
-    if (!PyBool_Check(a) || !PyBool_Check(b))
-        return PyInt_Type.tp_as_number->nb_or(a, b);
-    return PyBool_FromLong(
-        ((PyBoolObject *)a)->ob_ival | ((PyBoolObject *)b)->ob_ival);
-}
-
-static PyObject *
-bool_xor(PyObject *a, PyObject *b)
-{
-    if (!PyBool_Check(a) || !PyBool_Check(b))
-        return PyInt_Type.tp_as_number->nb_xor(a, b);
-    return PyBool_FromLong(
-        ((PyBoolObject *)a)->ob_ival ^ ((PyBoolObject *)b)->ob_ival);
-}
-
-/* Doc string */
-
-PyDoc_STRVAR(bool_doc,
-"bool(x) -> bool\n\
-\n\
-Returns True when the argument x is true, False otherwise.\n\
-The builtins True and False are the only two instances of the class bool.\n\
-The class bool is a subclass of the class int, and cannot be subclassed.");
-
-/* Arithmetic methods -- only so we can override &, |, ^. */
-
-static PyNumberMethods bool_as_number = {
-    0,                          /* nb_add */
-    0,                          /* nb_subtract */
-    0,                          /* nb_multiply */
-    0,                          /* nb_divide */
-    0,                          /* nb_remainder */
-    0,                          /* nb_divmod */
-    0,                          /* nb_power */
-    0,                          /* nb_negative */
-    0,                          /* nb_positive */
-    0,                          /* nb_absolute */
-    0,                          /* nb_nonzero */
-    0,                          /* nb_invert */
-    0,                          /* nb_lshift */
-    0,                          /* nb_rshift */
-    bool_and,                   /* nb_and */
-    bool_xor,                   /* nb_xor */
-    bool_or,                    /* nb_or */
-    0,                          /* nb_coerce */
-    0,                          /* nb_int */
-    0,                          /* nb_long */
-    0,                          /* nb_float */
-    0,                          /* nb_oct */
-    0,                          /* nb_hex */
-    0,                          /* nb_inplace_add */
-    0,                          /* nb_inplace_subtract */
-    0,                          /* nb_inplace_multiply */
-    0,                          /* nb_inplace_divide */
-    0,                          /* nb_inplace_remainder */
-    0,                          /* nb_inplace_power */
-    0,                          /* nb_inplace_lshift */
-    0,                          /* nb_inplace_rshift */
-    0,                          /* nb_inplace_and */
-    0,                          /* nb_inplace_xor */
-    0,                          /* nb_inplace_or */
-    0,                          /* nb_floor_divide */
-    0,                          /* nb_true_divide */
-    0,                          /* nb_inplace_floor_divide */
-    0,                          /* nb_inplace_true_divide */
-};
-
-/* The type object for bool.  Note that this cannot be subclassed! */
-
-PyTypeObject PyBool_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "bool",
-    sizeof(PyIntObject),
-    0,
-    0,                                          /* tp_dealloc */
-    (printfunc)bool_print,                      /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)bool_repr,                        /* tp_repr */
-    &bool_as_number,                            /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    (reprfunc)bool_repr,                        /* tp_str */
-    0,                                          /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES, /* tp_flags */
-    bool_doc,                                   /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    0,                                          /* tp_members */
-    0,                                          /* tp_getset */
-    &PyInt_Type,                                /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    bool_new,                                   /* tp_new */
-};
-
-/* The objects representing bool values False and True */
-
-/* Named Zero for link-level compatibility */
-PyIntObject _Py_ZeroStruct = {
-    PyObject_HEAD_INIT(&PyBool_Type)
-    0
-};
-
-PyIntObject _Py_TrueStruct = {
-    PyObject_HEAD_INIT(&PyBool_Type)
-    1
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/bufferobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/bufferobject.c
deleted file mode 100644
index 34cb3f6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/bufferobject.c
+++ /dev/null
@@ -1,857 +0,0 @@
-
-/* Buffer object implementation */
-
-#include "Python.h"
-
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *b_base;
-    void *b_ptr;
-    Py_ssize_t b_size;
-    Py_ssize_t b_offset;
-    int b_readonly;
-    long b_hash;
-} PyBufferObject;
-
-
-enum buffer_t {
-    READ_BUFFER,
-    WRITE_BUFFER,
-    CHAR_BUFFER,
-    ANY_BUFFER
-};
-
-static int
-get_buf(PyBufferObject *self, void **ptr, Py_ssize_t *size,
-    enum buffer_t buffer_type)
-{
-    if (self->b_base == NULL) {
-        assert (ptr != NULL);
-        *ptr = self->b_ptr;
-        *size = self->b_size;
-    }
-    else {
-        Py_ssize_t count, offset;
-        readbufferproc proc = 0;
-        PyBufferProcs *bp = self->b_base->ob_type->tp_as_buffer;
-        if ((*bp->bf_getsegcount)(self->b_base, NULL) != 1) {
-            PyErr_SetString(PyExc_TypeError,
-                "single-segment buffer object expected");
-            return 0;
-        }
-        if ((buffer_type == READ_BUFFER) ||
-            ((buffer_type == ANY_BUFFER) && self->b_readonly))
-            proc = bp->bf_getreadbuffer;
-        else if ((buffer_type == WRITE_BUFFER) ||
-            (buffer_type == ANY_BUFFER))
-            proc = (readbufferproc)bp->bf_getwritebuffer;
-        else if (buffer_type == CHAR_BUFFER) {
-            if (!PyType_HasFeature(self->ob_type,
-                        Py_TPFLAGS_HAVE_GETCHARBUFFER)) {
-            PyErr_SetString(PyExc_TypeError,
-                "Py_TPFLAGS_HAVE_GETCHARBUFFER needed");
-            return 0;
-            }
-            proc = (readbufferproc)bp->bf_getcharbuffer;
-        }
-        if (!proc) {
-            char *buffer_type_name;
-            switch (buffer_type) {
-            case READ_BUFFER:
-                buffer_type_name = "read";
-                break;
-            case WRITE_BUFFER:
-                buffer_type_name = "write";
-                break;
-            case CHAR_BUFFER:
-                buffer_type_name = "char";
-                break;
-            default:
-                buffer_type_name = "no";
-                break;
-            }
-            PyErr_Format(PyExc_TypeError,
-                "%s buffer type not available",
-                buffer_type_name);
-            return 0;
-        }
-        if ((count = (*proc)(self->b_base, 0, ptr)) < 0)
-            return 0;
-        /* apply constraints to the start/end */
-        if (self->b_offset > count)
-            offset = count;
-        else
-            offset = self->b_offset;
-        *(char **)ptr = *(char **)ptr + offset;
-        if (self->b_size == Py_END_OF_BUFFER)
-            *size = count;
-        else
-            *size = self->b_size;
-        if (offset + *size > count)
-            *size = count - offset;
-    }
-    return 1;
-}
-
-
-static PyObject *
-buffer_from_memory(PyObject *base, Py_ssize_t size, Py_ssize_t offset, void *ptr,
-                   int readonly)
-{
-    PyBufferObject * b;
-
-    if (size < 0 && size != Py_END_OF_BUFFER) {
-        PyErr_SetString(PyExc_ValueError,
-                        "size must be zero or positive");
-        return NULL;
-    }
-    if (offset < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "offset must be zero or positive");
-        return NULL;
-    }
-
-    b = PyObject_NEW(PyBufferObject, &PyBuffer_Type);
-    if ( b == NULL )
-        return NULL;
-
-    Py_XINCREF(base);
-    b->b_base = base;
-    b->b_ptr = ptr;
-    b->b_size = size;
-    b->b_offset = offset;
-    b->b_readonly = readonly;
-    b->b_hash = -1;
-
-    return (PyObject *) b;
-}
-
-static PyObject *
-buffer_from_object(PyObject *base, Py_ssize_t size, Py_ssize_t offset, int readonly)
-{
-    if (offset < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "offset must be zero or positive");
-        return NULL;
-    }
-    if ( PyBuffer_Check(base) && (((PyBufferObject *)base)->b_base) ) {
-        /* another buffer, refer to the base object */
-        PyBufferObject *b = (PyBufferObject *)base;
-        if (b->b_size != Py_END_OF_BUFFER) {
-            Py_ssize_t base_size = b->b_size - offset;
-            if (base_size < 0)
-                base_size = 0;
-            if (size == Py_END_OF_BUFFER || size > base_size)
-                size = base_size;
-        }
-        offset += b->b_offset;
-        base = b->b_base;
-    }
-    return buffer_from_memory(base, size, offset, NULL, readonly);
-}
-
-
-PyObject *
-PyBuffer_FromObject(PyObject *base, Py_ssize_t offset, Py_ssize_t size)
-{
-    PyBufferProcs *pb = base->ob_type->tp_as_buffer;
-
-    if ( pb == NULL ||
-         pb->bf_getreadbuffer == NULL ||
-         pb->bf_getsegcount == NULL )
-    {
-        PyErr_SetString(PyExc_TypeError, "buffer object expected");
-        return NULL;
-    }
-
-    return buffer_from_object(base, size, offset, 1);
-}
-
-PyObject *
-PyBuffer_FromReadWriteObject(PyObject *base, Py_ssize_t offset, Py_ssize_t size)
-{
-    PyBufferProcs *pb = base->ob_type->tp_as_buffer;
-
-    if ( pb == NULL ||
-         pb->bf_getwritebuffer == NULL ||
-         pb->bf_getsegcount == NULL )
-    {
-        PyErr_SetString(PyExc_TypeError, "buffer object expected");
-        return NULL;
-    }
-
-    return buffer_from_object(base, size,  offset, 0);
-}
-
-PyObject *
-PyBuffer_FromMemory(void *ptr, Py_ssize_t size)
-{
-    return buffer_from_memory(NULL, size, 0, ptr, 1);
-}
-
-PyObject *
-PyBuffer_FromReadWriteMemory(void *ptr, Py_ssize_t size)
-{
-    return buffer_from_memory(NULL, size, 0, ptr, 0);
-}
-
-PyObject *
-PyBuffer_New(Py_ssize_t size)
-{
-    PyObject *o;
-    PyBufferObject * b;
-
-    if (size < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "size must be zero or positive");
-        return NULL;
-    }
-    if (sizeof(*b) > PY_SSIZE_T_MAX - size) {
-        /* unlikely */
-        return PyErr_NoMemory();
-    }
-    /* Inline PyObject_New */
-    o = (PyObject *)PyObject_MALLOC(sizeof(*b) + size);
-    if ( o == NULL )
-        return PyErr_NoMemory();
-    b = (PyBufferObject *) PyObject_INIT(o, &PyBuffer_Type);
-
-    b->b_base = NULL;
-    b->b_ptr = (void *)(b + 1);
-    b->b_size = size;
-    b->b_offset = 0;
-    b->b_readonly = 0;
-    b->b_hash = -1;
-
-    return o;
-}
-
-/* Methods */
-
-static PyObject *
-buffer_new(PyTypeObject *type, PyObject *args, PyObject *kw)
-{
-    PyObject *ob;
-    Py_ssize_t offset = 0;
-    Py_ssize_t size = Py_END_OF_BUFFER;
-
-    if (PyErr_WarnPy3k("buffer() not supported in 3.x", 1) < 0)
-        return NULL;
-
-    if (!_PyArg_NoKeywords("buffer()", kw))
-        return NULL;
-
-    if (!PyArg_ParseTuple(args, "O|nn:buffer", &ob, &offset, &size))
-        return NULL;
-    return PyBuffer_FromObject(ob, offset, size);
-}
-
-PyDoc_STRVAR(buffer_doc,
-"buffer(object [, offset[, size]])\n\
-\n\
-Create a new buffer object which references the given object.\n\
-The buffer will reference a slice of the target object from the\n\
-start of the object (or at the specified offset). The slice will\n\
-extend to the end of the target object (or with the specified size).");
-
-
-static void
-buffer_dealloc(PyBufferObject *self)
-{
-    Py_XDECREF(self->b_base);
-    PyObject_DEL(self);
-}
-
-static int
-buffer_compare(PyBufferObject *self, PyBufferObject *other)
-{
-    void *p1, *p2;
-    Py_ssize_t len_self, len_other, min_len;
-    int cmp;
-
-    if (!get_buf(self, &p1, &len_self, ANY_BUFFER))
-        return -1;
-    if (!get_buf(other, &p2, &len_other, ANY_BUFFER))
-        return -1;
-    min_len = (len_self < len_other) ? len_self : len_other;
-    if (min_len > 0) {
-        cmp = memcmp(p1, p2, min_len);
-        if (cmp != 0)
-            return cmp < 0 ? -1 : 1;
-    }
-    return (len_self < len_other) ? -1 : (len_self > len_other) ? 1 : 0;
-}
-
-static PyObject *
-buffer_repr(PyBufferObject *self)
-{
-    const char *status = self->b_readonly ? "read-only" : "read-write";
-
-    if ( self->b_base == NULL )
-        return PyString_FromFormat("<%s buffer ptr %p, size %zd at %p>",
-                                   status,
-                                   self->b_ptr,
-                                   self->b_size,
-                                   self);
-    else
-        return PyString_FromFormat(
-            "<%s buffer for %p, size %zd, offset %zd at %p>",
-            status,
-            self->b_base,
-            self->b_size,
-            self->b_offset,
-            self);
-}
-
-static long
-buffer_hash(PyBufferObject *self)
-{
-    void *ptr;
-    Py_ssize_t size;
-    register Py_ssize_t len;
-    register unsigned char *p;
-    register long x;
-
-    if ( self->b_hash != -1 )
-        return self->b_hash;
-
-    /* XXX potential bugs here, a readonly buffer does not imply that the
-     * underlying memory is immutable.  b_readonly is a necessary but not
-     * sufficient condition for a buffer to be hashable.  Perhaps it would
-     * be better to only allow hashing if the underlying object is known to
-     * be immutable (e.g. PyString_Check() is true).  Another idea would
-     * be to call tp_hash on the underlying object and see if it raises
-     * an error. */
-    if ( !self->b_readonly )
-    {
-        PyErr_SetString(PyExc_TypeError,
-                        "writable buffers are not hashable");
-        return -1;
-    }
-
-    if (!get_buf(self, &ptr, &size, ANY_BUFFER))
-        return -1;
-    p = (unsigned char *) ptr;
-    len = size;
-    x = *p << 7;
-    while (--len >= 0)
-        x = (1000003*x) ^ *p++;
-    x ^= size;
-    if (x == -1)
-        x = -2;
-    self->b_hash = x;
-    return x;
-}
-
-static PyObject *
-buffer_str(PyBufferObject *self)
-{
-    void *ptr;
-    Py_ssize_t size;
-    if (!get_buf(self, &ptr, &size, ANY_BUFFER))
-        return NULL;
-    return PyString_FromStringAndSize((const char *)ptr, size);
-}
-
-/* Sequence methods */
-
-static Py_ssize_t
-buffer_length(PyBufferObject *self)
-{
-    void *ptr;
-    Py_ssize_t size;
-    if (!get_buf(self, &ptr, &size, ANY_BUFFER))
-        return -1;
-    return size;
-}
-
-static PyObject *
-buffer_concat(PyBufferObject *self, PyObject *other)
-{
-    PyBufferProcs *pb = other->ob_type->tp_as_buffer;
-    void *ptr1, *ptr2;
-    char *p;
-    PyObject *ob;
-    Py_ssize_t size, count;
-
-    if ( pb == NULL ||
-         pb->bf_getreadbuffer == NULL ||
-         pb->bf_getsegcount == NULL )
-    {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    if ( (*pb->bf_getsegcount)(other, NULL) != 1 )
-    {
-        /* ### use a different exception type/message? */
-        PyErr_SetString(PyExc_TypeError,
-                        "single-segment buffer object expected");
-        return NULL;
-    }
-
-    if (!get_buf(self, &ptr1, &size, ANY_BUFFER))
-        return NULL;
-
-    /* optimize special case */
-    if ( size == 0 )
-    {
-        Py_INCREF(other);
-        return other;
-    }
-
-    if ( (count = (*pb->bf_getreadbuffer)(other, 0, &ptr2)) < 0 )
-        return NULL;
-
-    assert(count <= PY_SIZE_MAX - size);
-
-    ob = PyString_FromStringAndSize(NULL, size + count);
-    if ( ob == NULL )
-        return NULL;
-    p = PyString_AS_STRING(ob);
-    memcpy(p, ptr1, size);
-    memcpy(p + size, ptr2, count);
-
-    /* there is an extra byte in the string object, so this is safe */
-    p[size + count] = '\0';
-
-    return ob;
-}
-
-static PyObject *
-buffer_repeat(PyBufferObject *self, Py_ssize_t count)
-{
-    PyObject *ob;
-    register char *p;
-    void *ptr;
-    Py_ssize_t size;
-
-    if ( count < 0 )
-        count = 0;
-    if (!get_buf(self, &ptr, &size, ANY_BUFFER))
-        return NULL;
-    if (count > PY_SSIZE_T_MAX / size) {
-        PyErr_SetString(PyExc_MemoryError, "result too large");
-        return NULL;
-    }
-    ob = PyString_FromStringAndSize(NULL, size * count);
-    if ( ob == NULL )
-        return NULL;
-
-    p = PyString_AS_STRING(ob);
-    while ( count-- )
-    {
-        memcpy(p, ptr, size);
-        p += size;
-    }
-
-    /* there is an extra byte in the string object, so this is safe */
-    *p = '\0';
-
-    return ob;
-}
-
-static PyObject *
-buffer_item(PyBufferObject *self, Py_ssize_t idx)
-{
-    void *ptr;
-    Py_ssize_t size;
-    if (!get_buf(self, &ptr, &size, ANY_BUFFER))
-        return NULL;
-    if ( idx < 0 || idx >= size ) {
-        PyErr_SetString(PyExc_IndexError, "buffer index out of range");
-        return NULL;
-    }
-    return PyString_FromStringAndSize((char *)ptr + idx, 1);
-}
-
-static PyObject *
-buffer_slice(PyBufferObject *self, Py_ssize_t left, Py_ssize_t right)
-{
-    void *ptr;
-    Py_ssize_t size;
-    if (!get_buf(self, &ptr, &size, ANY_BUFFER))
-        return NULL;
-    if ( left < 0 )
-        left = 0;
-    if ( right < 0 )
-        right = 0;
-    if ( right > size )
-        right = size;
-    if ( right < left )
-        right = left;
-    return PyString_FromStringAndSize((char *)ptr + left,
-                                      right - left);
-}
-
-static PyObject *
-buffer_subscript(PyBufferObject *self, PyObject *item)
-{
-    void *p;
-    Py_ssize_t size;
-
-    if (!get_buf(self, &p, &size, ANY_BUFFER))
-        return NULL;
-    if (PyIndex_Check(item)) {
-        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-        if (i == -1 && PyErr_Occurred())
-            return NULL;
-        if (i < 0)
-            i += size;
-        return buffer_item(self, i);
-    }
-    else if (PySlice_Check(item)) {
-        Py_ssize_t start, stop, step, slicelength, cur, i;
-
-        if (PySlice_GetIndicesEx((PySliceObject*)item, size,
-                         &start, &stop, &step, &slicelength) < 0) {
-            return NULL;
-        }
-
-        if (slicelength <= 0)
-            return PyString_FromStringAndSize("", 0);
-        else if (step == 1)
-            return PyString_FromStringAndSize((char *)p + start,
-                                              stop - start);
-        else {
-            PyObject *result;
-            char *source_buf = (char *)p;
-            char *result_buf = (char *)PyMem_Malloc(slicelength);
-
-            if (result_buf == NULL)
-                return PyErr_NoMemory();
-
-            for (cur = start, i = 0; i < slicelength;
-                 cur += step, i++) {
-                result_buf[i] = source_buf[cur];
-            }
-
-            result = PyString_FromStringAndSize(result_buf,
-                                                slicelength);
-            PyMem_Free(result_buf);
-            return result;
-        }
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "sequence index must be integer");
-        return NULL;
-    }
-}
-
-static int
-buffer_ass_item(PyBufferObject *self, Py_ssize_t idx, PyObject *other)
-{
-    PyBufferProcs *pb;
-    void *ptr1, *ptr2;
-    Py_ssize_t size;
-    Py_ssize_t count;
-
-    if ( self->b_readonly ) {
-        PyErr_SetString(PyExc_TypeError,
-                        "buffer is read-only");
-        return -1;
-    }
-
-    if (!get_buf(self, &ptr1, &size, ANY_BUFFER))
-        return -1;
-
-    if (idx < 0 || idx >= size) {
-        PyErr_SetString(PyExc_IndexError,
-                        "buffer assignment index out of range");
-        return -1;
-    }
-
-    pb = other ? other->ob_type->tp_as_buffer : NULL;
-    if ( pb == NULL ||
-         pb->bf_getreadbuffer == NULL ||
-         pb->bf_getsegcount == NULL )
-    {
-        PyErr_BadArgument();
-        return -1;
-    }
-    if ( (*pb->bf_getsegcount)(other, NULL) != 1 )
-    {
-        /* ### use a different exception type/message? */
-        PyErr_SetString(PyExc_TypeError,
-                        "single-segment buffer object expected");
-        return -1;
-    }
-
-    if ( (count = (*pb->bf_getreadbuffer)(other, 0, &ptr2)) < 0 )
-        return -1;
-    if ( count != 1 ) {
-        PyErr_SetString(PyExc_TypeError,
-                        "right operand must be a single byte");
-        return -1;
-    }
-
-    ((char *)ptr1)[idx] = *(char *)ptr2;
-    return 0;
-}
-
-static int
-buffer_ass_slice(PyBufferObject *self, Py_ssize_t left, Py_ssize_t right, PyObject *other)
-{
-    PyBufferProcs *pb;
-    void *ptr1, *ptr2;
-    Py_ssize_t size;
-    Py_ssize_t slice_len;
-    Py_ssize_t count;
-
-    if ( self->b_readonly ) {
-        PyErr_SetString(PyExc_TypeError,
-                        "buffer is read-only");
-        return -1;
-    }
-
-    pb = other ? other->ob_type->tp_as_buffer : NULL;
-    if ( pb == NULL ||
-         pb->bf_getreadbuffer == NULL ||
-         pb->bf_getsegcount == NULL )
-    {
-        PyErr_BadArgument();
-        return -1;
-    }
-    if ( (*pb->bf_getsegcount)(other, NULL) != 1 )
-    {
-        /* ### use a different exception type/message? */
-        PyErr_SetString(PyExc_TypeError,
-                        "single-segment buffer object expected");
-        return -1;
-    }
-    if (!get_buf(self, &ptr1, &size, ANY_BUFFER))
-        return -1;
-    if ( (count = (*pb->bf_getreadbuffer)(other, 0, &ptr2)) < 0 )
-        return -1;
-
-    if ( left < 0 )
-        left = 0;
-    else if ( left > size )
-        left = size;
-    if ( right < left )
-        right = left;
-    else if ( right > size )
-        right = size;
-    slice_len = right - left;
-
-    if ( count != slice_len ) {
-        PyErr_SetString(
-            PyExc_TypeError,
-            "right operand length must match slice length");
-        return -1;
-    }
-
-    if ( slice_len )
-        memcpy((char *)ptr1 + left, ptr2, slice_len);
-
-    return 0;
-}
-
-static int
-buffer_ass_subscript(PyBufferObject *self, PyObject *item, PyObject *value)
-{
-    PyBufferProcs *pb;
-    void *ptr1, *ptr2;
-    Py_ssize_t selfsize;
-    Py_ssize_t othersize;
-
-    if ( self->b_readonly ) {
-        PyErr_SetString(PyExc_TypeError,
-                        "buffer is read-only");
-        return -1;
-    }
-
-    pb = value ? value->ob_type->tp_as_buffer : NULL;
-    if ( pb == NULL ||
-         pb->bf_getreadbuffer == NULL ||
-         pb->bf_getsegcount == NULL )
-    {
-        PyErr_BadArgument();
-        return -1;
-    }
-    if ( (*pb->bf_getsegcount)(value, NULL) != 1 )
-    {
-        /* ### use a different exception type/message? */
-        PyErr_SetString(PyExc_TypeError,
-                        "single-segment buffer object expected");
-        return -1;
-    }
-    if (!get_buf(self, &ptr1, &selfsize, ANY_BUFFER))
-        return -1;
-    if (PyIndex_Check(item)) {
-        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-        if (i == -1 && PyErr_Occurred())
-            return -1;
-        if (i < 0)
-            i += selfsize;
-        return buffer_ass_item(self, i, value);
-    }
-    else if (PySlice_Check(item)) {
-        Py_ssize_t start, stop, step, slicelength;
-
-        if (PySlice_GetIndicesEx((PySliceObject *)item, selfsize,
-                        &start, &stop, &step, &slicelength) < 0)
-            return -1;
-
-        if ((othersize = (*pb->bf_getreadbuffer)(value, 0, &ptr2)) < 0)
-            return -1;
-
-        if (othersize != slicelength) {
-            PyErr_SetString(
-                PyExc_TypeError,
-                "right operand length must match slice length");
-            return -1;
-        }
-
-        if (slicelength == 0)
-            return 0;
-        else if (step == 1) {
-            memcpy((char *)ptr1 + start, ptr2, slicelength);
-            return 0;
-        }
-        else {
-            Py_ssize_t cur, i;
-
-            for (cur = start, i = 0; i < slicelength;
-                 cur += step, i++) {
-                ((char *)ptr1)[cur] = ((char *)ptr2)[i];
-            }
-
-            return 0;
-        }
-    } else {
-        PyErr_SetString(PyExc_TypeError,
-                        "buffer indices must be integers");
-        return -1;
-    }
-}
-
-/* Buffer methods */
-
-static Py_ssize_t
-buffer_getreadbuf(PyBufferObject *self, Py_ssize_t idx, void **pp)
-{
-    Py_ssize_t size;
-    if ( idx != 0 ) {
-        PyErr_SetString(PyExc_SystemError,
-                        "accessing non-existent buffer segment");
-        return -1;
-    }
-    if (!get_buf(self, pp, &size, READ_BUFFER))
-        return -1;
-    return size;
-}
-
-static Py_ssize_t
-buffer_getwritebuf(PyBufferObject *self, Py_ssize_t idx, void **pp)
-{
-    Py_ssize_t size;
-
-    if ( self->b_readonly )
-    {
-        PyErr_SetString(PyExc_TypeError, "buffer is read-only");
-        return -1;
-    }
-
-    if ( idx != 0 ) {
-        PyErr_SetString(PyExc_SystemError,
-                        "accessing non-existent buffer segment");
-        return -1;
-    }
-    if (!get_buf(self, pp, &size, WRITE_BUFFER))
-        return -1;
-    return size;
-}
-
-static Py_ssize_t
-buffer_getsegcount(PyBufferObject *self, Py_ssize_t *lenp)
-{
-    void *ptr;
-    Py_ssize_t size;
-    if (!get_buf(self, &ptr, &size, ANY_BUFFER))
-        return -1;
-    if (lenp)
-        *lenp = size;
-    return 1;
-}
-
-static Py_ssize_t
-buffer_getcharbuf(PyBufferObject *self, Py_ssize_t idx, const char **pp)
-{
-    void *ptr;
-    Py_ssize_t size;
-    if ( idx != 0 ) {
-        PyErr_SetString(PyExc_SystemError,
-                        "accessing non-existent buffer segment");
-        return -1;
-    }
-    if (!get_buf(self, &ptr, &size, CHAR_BUFFER))
-        return -1;
-    *pp = (const char *)ptr;
-    return size;
-}
-
-static PySequenceMethods buffer_as_sequence = {
-    (lenfunc)buffer_length, /*sq_length*/
-    (binaryfunc)buffer_concat, /*sq_concat*/
-    (ssizeargfunc)buffer_repeat, /*sq_repeat*/
-    (ssizeargfunc)buffer_item, /*sq_item*/
-    (ssizessizeargfunc)buffer_slice, /*sq_slice*/
-    (ssizeobjargproc)buffer_ass_item, /*sq_ass_item*/
-    (ssizessizeobjargproc)buffer_ass_slice, /*sq_ass_slice*/
-};
-
-static PyMappingMethods buffer_as_mapping = {
-    (lenfunc)buffer_length,
-    (binaryfunc)buffer_subscript,
-    (objobjargproc)buffer_ass_subscript,
-};
-
-static PyBufferProcs buffer_as_buffer = {
-    (readbufferproc)buffer_getreadbuf,
-    (writebufferproc)buffer_getwritebuf,
-    (segcountproc)buffer_getsegcount,
-    (charbufferproc)buffer_getcharbuf,
-};
-
-PyTypeObject PyBuffer_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "buffer",
-    sizeof(PyBufferObject),
-    0,
-    (destructor)buffer_dealloc,                 /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    (cmpfunc)buffer_compare,                    /* tp_compare */
-    (reprfunc)buffer_repr,                      /* tp_repr */
-    0,                                          /* tp_as_number */
-    &buffer_as_sequence,                        /* tp_as_sequence */
-    &buffer_as_mapping,                         /* tp_as_mapping */
-    (hashfunc)buffer_hash,                      /* tp_hash */
-    0,                                          /* tp_call */
-    (reprfunc)buffer_str,                       /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    &buffer_as_buffer,                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GETCHARBUFFER, /* tp_flags */
-    buffer_doc,                                 /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    0,                                          /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    buffer_new,                                 /* tp_new */
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/bytearrayobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/bytearrayobject.c
deleted file mode 100644
index 1efdff3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/bytearrayobject.c
+++ /dev/null
@@ -1,3044 +0,0 @@
-/* PyBytes (bytearray) implementation */
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#include "structmember.h"
-#include "bytes_methods.h"
-
-char _PyByteArray_empty_string[] = "";
-
-void
-PyByteArray_Fini(void)
-{
-}
-
-int
-PyByteArray_Init(void)
-{
-    return 1;
-}
-
-/* end nullbytes support */
-
-/* Helpers */
-
-static int
-_getbytevalue(PyObject* arg, int *value)
-{
-    long face_value;
-
-    if (PyBytes_CheckExact(arg)) {
-        if (Py_SIZE(arg) != 1) {
-            PyErr_SetString(PyExc_ValueError, "string must be of size 1");
-            return 0;
-        }
-        *value = Py_CHARMASK(((PyBytesObject*)arg)->ob_sval[0]);
-        return 1;
-    }
-    else if (PyInt_Check(arg) || PyLong_Check(arg)) {
-        face_value = PyLong_AsLong(arg);
-    }
-    else {
-        PyObject *index = PyNumber_Index(arg);
-        if (index == NULL) {
-            PyErr_Format(PyExc_TypeError,
-                         "an integer or string of size 1 is required");
-            return 0;
-        }
-        face_value = PyLong_AsLong(index);
-        Py_DECREF(index);
-    }
-
-    if (face_value < 0 || face_value >= 256) {
-        /* this includes the OverflowError in case the long is too large */
-        PyErr_SetString(PyExc_ValueError, "byte must be in range(0, 256)");
-        return 0;
-    }
-
-    *value = face_value;
-    return 1;
-}
-
-static Py_ssize_t
-bytearray_buffer_getreadbuf(PyByteArrayObject *self, Py_ssize_t index, const void **ptr)
-{
-    if ( index != 0 ) {
-        PyErr_SetString(PyExc_SystemError,
-                "accessing non-existent bytes segment");
-        return -1;
-    }
-    *ptr = (void *)PyByteArray_AS_STRING(self);
-    return Py_SIZE(self);
-}
-
-static Py_ssize_t
-bytearray_buffer_getwritebuf(PyByteArrayObject *self, Py_ssize_t index, const void **ptr)
-{
-    if ( index != 0 ) {
-        PyErr_SetString(PyExc_SystemError,
-                "accessing non-existent bytes segment");
-        return -1;
-    }
-    *ptr = (void *)PyByteArray_AS_STRING(self);
-    return Py_SIZE(self);
-}
-
-static Py_ssize_t
-bytearray_buffer_getsegcount(PyByteArrayObject *self, Py_ssize_t *lenp)
-{
-    if ( lenp )
-        *lenp = Py_SIZE(self);
-    return 1;
-}
-
-static Py_ssize_t
-bytearray_buffer_getcharbuf(PyByteArrayObject *self, Py_ssize_t index, const char **ptr)
-{
-    if ( index != 0 ) {
-        PyErr_SetString(PyExc_SystemError,
-                "accessing non-existent bytes segment");
-        return -1;
-    }
-    *ptr = PyByteArray_AS_STRING(self);
-    return Py_SIZE(self);
-}
-
-static int
-bytearray_getbuffer(PyByteArrayObject *obj, Py_buffer *view, int flags)
-{
-    int ret;
-    void *ptr;
-    if (view == NULL) {
-        obj->ob_exports++;
-        return 0;
-    }
-    ptr = (void *) PyByteArray_AS_STRING(obj);
-    ret = PyBuffer_FillInfo(view, (PyObject*)obj, ptr, Py_SIZE(obj), 0, flags);
-    if (ret >= 0) {
-        obj->ob_exports++;
-    }
-    return ret;
-}
-
-static void
-bytearray_releasebuffer(PyByteArrayObject *obj, Py_buffer *view)
-{
-    obj->ob_exports--;
-}
-
-static Py_ssize_t
-_getbuffer(PyObject *obj, Py_buffer *view)
-{
-    PyBufferProcs *buffer = Py_TYPE(obj)->tp_as_buffer;
-
-    if (buffer == NULL || buffer->bf_getbuffer == NULL)
-    {
-        PyErr_Format(PyExc_TypeError,
-                     "Type %.100s doesn't support the buffer API",
-                     Py_TYPE(obj)->tp_name);
-        return -1;
-    }
-
-    if (buffer->bf_getbuffer(obj, view, PyBUF_SIMPLE) < 0)
-            return -1;
-    return view->len;
-}
-
-static int
-_canresize(PyByteArrayObject *self)
-{
-    if (self->ob_exports > 0) {
-        PyErr_SetString(PyExc_BufferError,
-                "Existing exports of data: object cannot be re-sized");
-        return 0;
-    }
-    return 1;
-}
-
-/* Direct API functions */
-
-PyObject *
-PyByteArray_FromObject(PyObject *input)
-{
-    return PyObject_CallFunctionObjArgs((PyObject *)&PyByteArray_Type,
-                                        input, NULL);
-}
-
-PyObject *
-PyByteArray_FromStringAndSize(const char *bytes, Py_ssize_t size)
-{
-    PyByteArrayObject *new;
-    Py_ssize_t alloc;
-
-    if (size < 0) {
-        PyErr_SetString(PyExc_SystemError,
-            "Negative size passed to PyByteArray_FromStringAndSize");
-        return NULL;
-    }
-
-    new = PyObject_New(PyByteArrayObject, &PyByteArray_Type);
-    if (new == NULL)
-        return NULL;
-
-    if (size == 0) {
-        new->ob_bytes = NULL;
-        alloc = 0;
-    }
-    else {
-        alloc = size + 1;
-        new->ob_bytes = PyMem_Malloc(alloc);
-        if (new->ob_bytes == NULL) {
-            Py_DECREF(new);
-            return PyErr_NoMemory();
-        }
-        if (bytes != NULL && size > 0)
-            memcpy(new->ob_bytes, bytes, size);
-        new->ob_bytes[size] = '\0';  /* Trailing null byte */
-    }
-    Py_SIZE(new) = size;
-    new->ob_alloc = alloc;
-    new->ob_exports = 0;
-
-    return (PyObject *)new;
-}
-
-Py_ssize_t
-PyByteArray_Size(PyObject *self)
-{
-    assert(self != NULL);
-    assert(PyByteArray_Check(self));
-
-    return PyByteArray_GET_SIZE(self);
-}
-
-char  *
-PyByteArray_AsString(PyObject *self)
-{
-    assert(self != NULL);
-    assert(PyByteArray_Check(self));
-
-    return PyByteArray_AS_STRING(self);
-}
-
-int
-PyByteArray_Resize(PyObject *self, Py_ssize_t size)
-{
-    void *sval;
-    Py_ssize_t alloc = ((PyByteArrayObject *)self)->ob_alloc;
-
-    assert(self != NULL);
-    assert(PyByteArray_Check(self));
-    assert(size >= 0);
-
-    if (size == Py_SIZE(self)) {
-        return 0;
-    }
-    if (!_canresize((PyByteArrayObject *)self)) {
-        return -1;
-    }
-
-    if (size < alloc / 2) {
-        /* Major downsize; resize down to exact size */
-        alloc = size + 1;
-    }
-    else if (size < alloc) {
-        /* Within allocated size; quick exit */
-        Py_SIZE(self) = size;
-        ((PyByteArrayObject *)self)->ob_bytes[size] = '\0'; /* Trailing null */
-        return 0;
-    }
-    else if (size <= alloc * 1.125) {
-        /* Moderate upsize; overallocate similar to list_resize() */
-        alloc = size + (size >> 3) + (size < 9 ? 3 : 6);
-    }
-    else {
-        /* Major upsize; resize up to exact size */
-        alloc = size + 1;
-    }
-
-    sval = PyMem_Realloc(((PyByteArrayObject *)self)->ob_bytes, alloc);
-    if (sval == NULL) {
-        PyErr_NoMemory();
-        return -1;
-    }
-
-    ((PyByteArrayObject *)self)->ob_bytes = sval;
-    Py_SIZE(self) = size;
-    ((PyByteArrayObject *)self)->ob_alloc = alloc;
-    ((PyByteArrayObject *)self)->ob_bytes[size] = '\0'; /* Trailing null byte */
-
-    return 0;
-}
-
-PyObject *
-PyByteArray_Concat(PyObject *a, PyObject *b)
-{
-    Py_ssize_t size;
-    Py_buffer va, vb;
-    PyByteArrayObject *result = NULL;
-
-    va.len = -1;
-    vb.len = -1;
-    if (_getbuffer(a, &va) < 0  ||
-        _getbuffer(b, &vb) < 0) {
-            PyErr_Format(PyExc_TypeError, "can't concat %.100s to %.100s",
-                         Py_TYPE(a)->tp_name, Py_TYPE(b)->tp_name);
-            goto done;
-    }
-
-    size = va.len + vb.len;
-    if (size < 0) {
-            PyErr_NoMemory();
-            goto done;
-    }
-
-    result = (PyByteArrayObject *) PyByteArray_FromStringAndSize(NULL, size);
-    if (result != NULL) {
-        memcpy(result->ob_bytes, va.buf, va.len);
-        memcpy(result->ob_bytes + va.len, vb.buf, vb.len);
-    }
-
-  done:
-    if (va.len != -1)
-        PyBuffer_Release(&va);
-    if (vb.len != -1)
-        PyBuffer_Release(&vb);
-    return (PyObject *)result;
-}
-
-/* Functions stuffed into the type object */
-
-static Py_ssize_t
-bytearray_length(PyByteArrayObject *self)
-{
-    return Py_SIZE(self);
-}
-
-static PyObject *
-bytearray_iconcat(PyByteArrayObject *self, PyObject *other)
-{
-    Py_ssize_t mysize;
-    Py_ssize_t size;
-    Py_buffer vo;
-
-    if (_getbuffer(other, &vo) < 0) {
-        PyErr_Format(PyExc_TypeError, "can't concat %.100s to %.100s",
-                     Py_TYPE(other)->tp_name, Py_TYPE(self)->tp_name);
-        return NULL;
-    }
-
-    mysize = Py_SIZE(self);
-    size = mysize + vo.len;
-    if (size < 0) {
-        PyBuffer_Release(&vo);
-        return PyErr_NoMemory();
-    }
-    if (size < self->ob_alloc) {
-        Py_SIZE(self) = size;
-        self->ob_bytes[Py_SIZE(self)] = '\0'; /* Trailing null byte */
-    }
-    else if (PyByteArray_Resize((PyObject *)self, size) < 0) {
-        PyBuffer_Release(&vo);
-        return NULL;
-    }
-    memcpy(self->ob_bytes + mysize, vo.buf, vo.len);
-    PyBuffer_Release(&vo);
-    Py_INCREF(self);
-    return (PyObject *)self;
-}
-
-static PyObject *
-bytearray_repeat(PyByteArrayObject *self, Py_ssize_t count)
-{
-    PyByteArrayObject *result;
-    Py_ssize_t mysize;
-    Py_ssize_t size;
-
-    if (count < 0)
-        count = 0;
-    mysize = Py_SIZE(self);
-    size = mysize * count;
-    if (count != 0 && size / count != mysize)
-        return PyErr_NoMemory();
-    result = (PyByteArrayObject *)PyByteArray_FromStringAndSize(NULL, size);
-    if (result != NULL && size != 0) {
-        if (mysize == 1)
-            memset(result->ob_bytes, self->ob_bytes[0], size);
-        else {
-            Py_ssize_t i;
-            for (i = 0; i < count; i++)
-                memcpy(result->ob_bytes + i*mysize, self->ob_bytes, mysize);
-        }
-    }
-    return (PyObject *)result;
-}
-
-static PyObject *
-bytearray_irepeat(PyByteArrayObject *self, Py_ssize_t count)
-{
-    Py_ssize_t mysize;
-    Py_ssize_t size;
-
-    if (count < 0)
-        count = 0;
-    mysize = Py_SIZE(self);
-    size = mysize * count;
-    if (count != 0 && size / count != mysize)
-        return PyErr_NoMemory();
-    if (size < self->ob_alloc) {
-        Py_SIZE(self) = size;
-        self->ob_bytes[Py_SIZE(self)] = '\0'; /* Trailing null byte */
-    }
-    else if (PyByteArray_Resize((PyObject *)self, size) < 0)
-        return NULL;
-
-    if (mysize == 1)
-        memset(self->ob_bytes, self->ob_bytes[0], size);
-    else {
-        Py_ssize_t i;
-        for (i = 1; i < count; i++)
-            memcpy(self->ob_bytes + i*mysize, self->ob_bytes, mysize);
-    }
-
-    Py_INCREF(self);
-    return (PyObject *)self;
-}
-
-static PyObject *
-bytearray_getitem(PyByteArrayObject *self, Py_ssize_t i)
-{
-    if (i < 0)
-        i += Py_SIZE(self);
-    if (i < 0 || i >= Py_SIZE(self)) {
-        PyErr_SetString(PyExc_IndexError, "bytearray index out of range");
-        return NULL;
-    }
-    return PyInt_FromLong((unsigned char)(self->ob_bytes[i]));
-}
-
-static PyObject *
-bytearray_subscript(PyByteArrayObject *self, PyObject *index)
-{
-    if (PyIndex_Check(index)) {
-        Py_ssize_t i = PyNumber_AsSsize_t(index, PyExc_IndexError);
-
-        if (i == -1 && PyErr_Occurred())
-            return NULL;
-
-        if (i < 0)
-            i += PyByteArray_GET_SIZE(self);
-
-        if (i < 0 || i >= Py_SIZE(self)) {
-            PyErr_SetString(PyExc_IndexError, "bytearray index out of range");
-            return NULL;
-        }
-        return PyInt_FromLong((unsigned char)(self->ob_bytes[i]));
-    }
-    else if (PySlice_Check(index)) {
-        Py_ssize_t start, stop, step, slicelength, cur, i;
-        if (PySlice_GetIndicesEx((PySliceObject *)index,
-                                 PyByteArray_GET_SIZE(self),
-                                 &start, &stop, &step, &slicelength) < 0) {
-            return NULL;
-        }
-
-        if (slicelength <= 0)
-            return PyByteArray_FromStringAndSize("", 0);
-        else if (step == 1) {
-            return PyByteArray_FromStringAndSize(self->ob_bytes + start,
-                                             slicelength);
-        }
-        else {
-            char *source_buf = PyByteArray_AS_STRING(self);
-            char *result_buf = (char *)PyMem_Malloc(slicelength);
-            PyObject *result;
-
-            if (result_buf == NULL)
-                return PyErr_NoMemory();
-
-            for (cur = start, i = 0; i < slicelength;
-                 cur += step, i++) {
-                     result_buf[i] = source_buf[cur];
-            }
-            result = PyByteArray_FromStringAndSize(result_buf, slicelength);
-            PyMem_Free(result_buf);
-            return result;
-        }
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError, "bytearray indices must be integers");
-        return NULL;
-    }
-}
-
-static int
-bytearray_setslice(PyByteArrayObject *self, Py_ssize_t lo, Py_ssize_t hi,
-               PyObject *values)
-{
-    Py_ssize_t avail, needed;
-    void *bytes;
-    Py_buffer vbytes;
-    int res = 0;
-
-    vbytes.len = -1;
-    if (values == (PyObject *)self) {
-        /* Make a copy and call this function recursively */
-        int err;
-        values = PyByteArray_FromObject(values);
-        if (values == NULL)
-            return -1;
-        err = bytearray_setslice(self, lo, hi, values);
-        Py_DECREF(values);
-        return err;
-    }
-    if (values == NULL) {
-        /* del b[lo:hi] */
-        bytes = NULL;
-        needed = 0;
-    }
-    else {
-            if (_getbuffer(values, &vbytes) < 0) {
-                    PyErr_Format(PyExc_TypeError,
-                                 "can't set bytearray slice from %.100s",
-                                 Py_TYPE(values)->tp_name);
-                    return -1;
-            }
-            needed = vbytes.len;
-            bytes = vbytes.buf;
-    }
-
-    if (lo < 0)
-        lo = 0;
-    if (hi < lo)
-        hi = lo;
-    if (hi > Py_SIZE(self))
-        hi = Py_SIZE(self);
-
-    avail = hi - lo;
-    if (avail < 0)
-        lo = hi = avail = 0;
-
-    if (avail != needed) {
-        if (avail > needed) {
-            if (!_canresize(self)) {
-                res = -1;
-                goto finish;
-            }
-            /*
-              0   lo               hi               old_size
-              |   |<----avail----->|<-----tomove------>|
-              |   |<-needed->|<-----tomove------>|
-              0   lo      new_hi              new_size
-            */
-            memmove(self->ob_bytes + lo + needed, self->ob_bytes + hi,
-                    Py_SIZE(self) - hi);
-        }
-        /* XXX(nnorwitz): need to verify this can't overflow! */
-        if (PyByteArray_Resize((PyObject *)self,
-                           Py_SIZE(self) + needed - avail) < 0) {
-                res = -1;
-                goto finish;
-        }
-        if (avail < needed) {
-            /*
-              0   lo        hi               old_size
-              |   |<-avail->|<-----tomove------>|
-              |   |<----needed---->|<-----tomove------>|
-              0   lo            new_hi              new_size
-             */
-            memmove(self->ob_bytes + lo + needed, self->ob_bytes + hi,
-                    Py_SIZE(self) - lo - needed);
-        }
-    }
-
-    if (needed > 0)
-        memcpy(self->ob_bytes + lo, bytes, needed);
-
-
- finish:
-    if (vbytes.len != -1)
-            PyBuffer_Release(&vbytes);
-    return res;
-}
-
-static int
-bytearray_setitem(PyByteArrayObject *self, Py_ssize_t i, PyObject *value)
-{
-    int ival;
-
-    if (i < 0)
-        i += Py_SIZE(self);
-
-    if (i < 0 || i >= Py_SIZE(self)) {
-        PyErr_SetString(PyExc_IndexError, "bytearray index out of range");
-        return -1;
-    }
-
-    if (value == NULL)
-        return bytearray_setslice(self, i, i+1, NULL);
-
-    if (!_getbytevalue(value, &ival))
-        return -1;
-
-    self->ob_bytes[i] = ival;
-    return 0;
-}
-
-static int
-bytearray_ass_subscript(PyByteArrayObject *self, PyObject *index, PyObject *values)
-{
-    Py_ssize_t start, stop, step, slicelen, needed;
-    char *bytes;
-
-    if (PyIndex_Check(index)) {
-        Py_ssize_t i = PyNumber_AsSsize_t(index, PyExc_IndexError);
-
-        if (i == -1 && PyErr_Occurred())
-            return -1;
-
-        if (i < 0)
-            i += PyByteArray_GET_SIZE(self);
-
-        if (i < 0 || i >= Py_SIZE(self)) {
-            PyErr_SetString(PyExc_IndexError, "bytearray index out of range");
-            return -1;
-        }
-
-        if (values == NULL) {
-            /* Fall through to slice assignment */
-            start = i;
-            stop = i + 1;
-            step = 1;
-            slicelen = 1;
-        }
-        else {
-            int ival;
-            if (!_getbytevalue(values, &ival))
-                return -1;
-            self->ob_bytes[i] = (char)ival;
-            return 0;
-        }
-    }
-    else if (PySlice_Check(index)) {
-        if (PySlice_GetIndicesEx((PySliceObject *)index,
-                                 PyByteArray_GET_SIZE(self),
-                                 &start, &stop, &step, &slicelen) < 0) {
-            return -1;
-        }
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError, "bytearray indices must be integer");
-        return -1;
-    }
-
-    if (values == NULL) {
-        bytes = NULL;
-        needed = 0;
-    }
-    else if (values == (PyObject *)self || !PyByteArray_Check(values)) {
-        /* Make a copy and call this function recursively */
-        int err;
-        values = PyByteArray_FromObject(values);
-        if (values == NULL)
-            return -1;
-        err = bytearray_ass_subscript(self, index, values);
-        Py_DECREF(values);
-        return err;
-    }
-    else {
-        assert(PyByteArray_Check(values));
-        bytes = ((PyByteArrayObject *)values)->ob_bytes;
-        needed = Py_SIZE(values);
-    }
-    /* Make sure b[5:2] = ... inserts before 5, not before 2. */
-    if ((step < 0 && start < stop) ||
-        (step > 0 && start > stop))
-        stop = start;
-    if (step == 1) {
-        if (slicelen != needed) {
-            if (!_canresize(self))
-                return -1;
-            if (slicelen > needed) {
-                /*
-                  0   start           stop              old_size
-                  |   |<---slicelen--->|<-----tomove------>|
-                  |   |<-needed->|<-----tomove------>|
-                  0   lo      new_hi              new_size
-                */
-                memmove(self->ob_bytes + start + needed, self->ob_bytes + stop,
-                        Py_SIZE(self) - stop);
-            }
-            if (PyByteArray_Resize((PyObject *)self,
-                               Py_SIZE(self) + needed - slicelen) < 0)
-                return -1;
-            if (slicelen < needed) {
-                /*
-                  0   lo        hi               old_size
-                  |   |<-avail->|<-----tomove------>|
-                  |   |<----needed---->|<-----tomove------>|
-                  0   lo            new_hi              new_size
-                 */
-                memmove(self->ob_bytes + start + needed, self->ob_bytes + stop,
-                        Py_SIZE(self) - start - needed);
-            }
-        }
-
-        if (needed > 0)
-            memcpy(self->ob_bytes + start, bytes, needed);
-
-        return 0;
-    }
-    else {
-        if (needed == 0) {
-            /* Delete slice */
-            size_t cur;
-            Py_ssize_t i;
-
-            if (!_canresize(self))
-                return -1;
-            if (step < 0) {
-                stop = start + 1;
-                start = stop + step * (slicelen - 1) - 1;
-                step = -step;
-            }
-            for (cur = start, i = 0;
-                 i < slicelen; cur += step, i++) {
-                Py_ssize_t lim = step - 1;
-
-                if (cur + step >= (size_t)PyByteArray_GET_SIZE(self))
-                    lim = PyByteArray_GET_SIZE(self) - cur - 1;
-
-                memmove(self->ob_bytes + cur - i,
-                        self->ob_bytes + cur + 1, lim);
-            }
-            /* Move the tail of the bytes, in one chunk */
-            cur = start + slicelen*step;
-            if (cur < (size_t)PyByteArray_GET_SIZE(self)) {
-                memmove(self->ob_bytes + cur - slicelen,
-                        self->ob_bytes + cur,
-                        PyByteArray_GET_SIZE(self) - cur);
-            }
-            if (PyByteArray_Resize((PyObject *)self,
-                               PyByteArray_GET_SIZE(self) - slicelen) < 0)
-                return -1;
-
-            return 0;
-        }
-        else {
-            /* Assign slice */
-            Py_ssize_t cur, i;
-
-            if (needed != slicelen) {
-                PyErr_Format(PyExc_ValueError,
-                             "attempt to assign bytes of size %zd "
-                             "to extended slice of size %zd",
-                             needed, slicelen);
-                return -1;
-            }
-            for (cur = start, i = 0; i < slicelen; cur += step, i++)
-                self->ob_bytes[cur] = bytes[i];
-            return 0;
-        }
-    }
-}
-
-static int
-bytearray_init(PyByteArrayObject *self, PyObject *args, PyObject *kwds)
-{
-    static char *kwlist[] = {"source", "encoding", "errors", 0};
-    PyObject *arg = NULL;
-    const char *encoding = NULL;
-    const char *errors = NULL;
-    Py_ssize_t count;
-    PyObject *it;
-    PyObject *(*iternext)(PyObject *);
-
-    if (Py_SIZE(self) != 0) {
-        /* Empty previous contents (yes, do this first of all!) */
-        if (PyByteArray_Resize((PyObject *)self, 0) < 0)
-            return -1;
-    }
-
-    /* Parse arguments */
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|Oss:bytearray", kwlist,
-                                     &arg, &encoding, &errors))
-        return -1;
-
-    /* Make a quick exit if no first argument */
-    if (arg == NULL) {
-        if (encoding != NULL || errors != NULL) {
-            PyErr_SetString(PyExc_TypeError,
-                            "encoding or errors without sequence argument");
-            return -1;
-        }
-        return 0;
-    }
-
-    if (PyBytes_Check(arg)) {
-        PyObject *new, *encoded;
-        if (encoding != NULL) {
-            encoded = PyCodec_Encode(arg, encoding, errors);
-            if (encoded == NULL)
-                return -1;
-            assert(PyBytes_Check(encoded));
-        }
-        else {
-            encoded = arg;
-            Py_INCREF(arg);
-        }
-        new = bytearray_iconcat(self, arg);
-        Py_DECREF(encoded);
-        if (new == NULL)
-            return -1;
-        Py_DECREF(new);
-        return 0;
-    }
-
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(arg)) {
-        /* Encode via the codec registry */
-        PyObject *encoded, *new;
-        if (encoding == NULL) {
-            PyErr_SetString(PyExc_TypeError,
-                            "unicode argument without an encoding");
-            return -1;
-        }
-        encoded = PyCodec_Encode(arg, encoding, errors);
-        if (encoded == NULL)
-            return -1;
-        assert(PyBytes_Check(encoded));
-        new = bytearray_iconcat(self, encoded);
-        Py_DECREF(encoded);
-        if (new == NULL)
-            return -1;
-        Py_DECREF(new);
-        return 0;
-    }
-#endif
-
-    /* If it's not unicode, there can't be encoding or errors */
-    if (encoding != NULL || errors != NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "encoding or errors without a string argument");
-        return -1;
-    }
-
-    /* Is it an int? */
-    count = PyNumber_AsSsize_t(arg, PyExc_OverflowError);
-    if (count == -1 && PyErr_Occurred()) {
-        if (PyErr_ExceptionMatches(PyExc_OverflowError))
-            return -1;
-        PyErr_Clear();
-    }
-    else if (count < 0) {
-        PyErr_SetString(PyExc_ValueError, "negative count");
-        return -1;
-    }
-    else {
-        if (count > 0) {
-            if (PyByteArray_Resize((PyObject *)self, count))
-                return -1;
-            memset(self->ob_bytes, 0, count);
-        }
-        return 0;
-    }
-
-    /* Use the buffer API */
-    if (PyObject_CheckBuffer(arg)) {
-        Py_ssize_t size;
-        Py_buffer view;
-        if (PyObject_GetBuffer(arg, &view, PyBUF_FULL_RO) < 0)
-            return -1;
-        size = view.len;
-        if (PyByteArray_Resize((PyObject *)self, size) < 0) goto fail;
-        if (PyBuffer_ToContiguous(self->ob_bytes, &view, size, 'C') < 0)
-                goto fail;
-        PyBuffer_Release(&view);
-        return 0;
-    fail:
-        PyBuffer_Release(&view);
-        return -1;
-    }
-
-    /* XXX Optimize this if the arguments is a list, tuple */
-
-    /* Get the iterator */
-    it = PyObject_GetIter(arg);
-    if (it == NULL)
-        return -1;
-    iternext = *Py_TYPE(it)->tp_iternext;
-
-    /* Run the iterator to exhaustion */
-    for (;;) {
-        PyObject *item;
-        int rc, value;
-
-        /* Get the next item */
-        item = iternext(it);
-        if (item == NULL) {
-            if (PyErr_Occurred()) {
-                if (!PyErr_ExceptionMatches(PyExc_StopIteration))
-                    goto error;
-                PyErr_Clear();
-            }
-            break;
-        }
-
-        /* Interpret it as an int (__index__) */
-        rc = _getbytevalue(item, &value);
-        Py_DECREF(item);
-        if (!rc)
-            goto error;
-
-        /* Append the byte */
-        if (Py_SIZE(self) < self->ob_alloc)
-            Py_SIZE(self)++;
-        else if (PyByteArray_Resize((PyObject *)self, Py_SIZE(self)+1) < 0)
-            goto error;
-        self->ob_bytes[Py_SIZE(self)-1] = value;
-    }
-
-    /* Clean up and return success */
-    Py_DECREF(it);
-    return 0;
-
- error:
-    /* Error handling when it != NULL */
-    Py_DECREF(it);
-    return -1;
-}
-
-/* Mostly copied from string_repr, but without the
-   "smart quote" functionality. */
-static PyObject *
-bytearray_repr(PyByteArrayObject *self)
-{
-    static const char *hexdigits = "0123456789abcdef";
-    const char *quote_prefix = "bytearray(b";
-    const char *quote_postfix = ")";
-    Py_ssize_t length = Py_SIZE(self);
-    /* 14 == strlen(quote_prefix) + 2 + strlen(quote_postfix) */
-    size_t newsize;
-    PyObject *v;
-    if (length > (PY_SSIZE_T_MAX - 14) / 4) {
-        PyErr_SetString(PyExc_OverflowError,
-            "bytearray object is too large to make repr");
-        return NULL;
-    }
-    newsize = 14 + 4 * length;
-    v = PyString_FromStringAndSize(NULL, newsize);
-    if (v == NULL) {
-        return NULL;
-    }
-    else {
-        register Py_ssize_t i;
-        register char c;
-        register char *p;
-        int quote;
-
-        /* Figure out which quote to use; single is preferred */
-        quote = '\'';
-        {
-            char *test, *start;
-            start = PyByteArray_AS_STRING(self);
-            for (test = start; test < start+length; ++test) {
-                if (*test == '"') {
-                    quote = '\''; /* back to single */
-                    goto decided;
-                }
-                else if (*test == '\'')
-                    quote = '"';
-            }
-          decided:
-            ;
-        }
-
-        p = PyString_AS_STRING(v);
-        while (*quote_prefix)
-            *p++ = *quote_prefix++;
-        *p++ = quote;
-
-        for (i = 0; i < length; i++) {
-            /* There's at least enough room for a hex escape
-               and a closing quote. */
-            assert(newsize - (p - PyString_AS_STRING(v)) >= 5);
-            c = self->ob_bytes[i];
-            if (c == '\'' || c == '\\')
-                *p++ = '\\', *p++ = c;
-            else if (c == '\t')
-                *p++ = '\\', *p++ = 't';
-            else if (c == '\n')
-                *p++ = '\\', *p++ = 'n';
-            else if (c == '\r')
-                *p++ = '\\', *p++ = 'r';
-            else if (c == 0)
-                *p++ = '\\', *p++ = 'x', *p++ = '0', *p++ = '0';
-            else if (c < ' ' || c >= 0x7f) {
-                *p++ = '\\';
-                *p++ = 'x';
-                *p++ = hexdigits[(c & 0xf0) >> 4];
-                *p++ = hexdigits[c & 0xf];
-            }
-            else
-                *p++ = c;
-        }
-        assert(newsize - (p - PyString_AS_STRING(v)) >= 1);
-        *p++ = quote;
-        while (*quote_postfix) {
-           *p++ = *quote_postfix++;
-        }
-        *p = '\0';
-        if (_PyString_Resize(&v, (p - PyString_AS_STRING(v)))) {
-            Py_DECREF(v);
-            return NULL;
-        }
-        return v;
-    }
-}
-
-static PyObject *
-bytearray_str(PyObject *op)
-{
-#if 0
-    if (Py_BytesWarningFlag) {
-        if (PyErr_WarnEx(PyExc_BytesWarning,
-                 "str() on a bytearray instance", 1))
-            return NULL;
-    }
-    return bytearray_repr((PyByteArrayObject*)op);
-#endif
-    return PyBytes_FromStringAndSize(((PyByteArrayObject*)op)->ob_bytes, Py_SIZE(op));
-}
-
-static PyObject *
-bytearray_richcompare(PyObject *self, PyObject *other, int op)
-{
-    Py_ssize_t self_size, other_size;
-    Py_buffer self_bytes, other_bytes;
-    PyObject *res;
-    Py_ssize_t minsize;
-    int cmp;
-
-    /* Bytes can be compared to anything that supports the (binary)
-       buffer API.  Except that a comparison with Unicode is always an
-       error, even if the comparison is for equality. */
-#ifdef Py_USING_UNICODE
-    if (PyObject_IsInstance(self, (PyObject*)&PyUnicode_Type) ||
-        PyObject_IsInstance(other, (PyObject*)&PyUnicode_Type)) {
-        if (Py_BytesWarningFlag && op == Py_EQ) {
-            if (PyErr_WarnEx(PyExc_BytesWarning,
-                            "Comparison between bytearray and string", 1))
-                return NULL;
-        }
-
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-#endif
-
-    self_size = _getbuffer(self, &self_bytes);
-    if (self_size < 0) {
-        PyErr_Clear();
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-
-    other_size = _getbuffer(other, &other_bytes);
-    if (other_size < 0) {
-        PyErr_Clear();
-        PyBuffer_Release(&self_bytes);
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-
-    if (self_size != other_size && (op == Py_EQ || op == Py_NE)) {
-        /* Shortcut: if the lengths differ, the objects differ */
-        cmp = (op == Py_NE);
-    }
-    else {
-        minsize = self_size;
-        if (other_size < minsize)
-            minsize = other_size;
-
-        cmp = memcmp(self_bytes.buf, other_bytes.buf, minsize);
-        /* In ISO C, memcmp() guarantees to use unsigned bytes! */
-
-        if (cmp == 0) {
-            if (self_size < other_size)
-                cmp = -1;
-            else if (self_size > other_size)
-                cmp = 1;
-        }
-
-        switch (op) {
-        case Py_LT: cmp = cmp <  0; break;
-        case Py_LE: cmp = cmp <= 0; break;
-        case Py_EQ: cmp = cmp == 0; break;
-        case Py_NE: cmp = cmp != 0; break;
-        case Py_GT: cmp = cmp >  0; break;
-        case Py_GE: cmp = cmp >= 0; break;
-        }
-    }
-
-    res = cmp ? Py_True : Py_False;
-    PyBuffer_Release(&self_bytes);
-    PyBuffer_Release(&other_bytes);
-    Py_INCREF(res);
-    return res;
-}
-
-static void
-bytearray_dealloc(PyByteArrayObject *self)
-{
-    if (self->ob_exports > 0) {
-        PyErr_SetString(PyExc_SystemError,
-                        "deallocated bytearray object has exported buffers");
-        PyErr_Print();
-    }
-    if (self->ob_bytes != 0) {
-        PyMem_Free(self->ob_bytes);
-    }
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-
-/* -------------------------------------------------------------------- */
-/* Methods */
-
-#define STRINGLIB_CHAR char
-#define STRINGLIB_LEN PyByteArray_GET_SIZE
-#define STRINGLIB_STR PyByteArray_AS_STRING
-#define STRINGLIB_NEW PyByteArray_FromStringAndSize
-#define STRINGLIB_ISSPACE Py_ISSPACE
-#define STRINGLIB_ISLINEBREAK(x) ((x == '\n') || (x == '\r'))
-#define STRINGLIB_CHECK_EXACT PyByteArray_CheckExact
-#define STRINGLIB_MUTABLE 1
-
-#include "stringlib/fastsearch.h"
-#include "stringlib/count.h"
-#include "stringlib/find.h"
-#include "stringlib/partition.h"
-#include "stringlib/split.h"
-#include "stringlib/ctype.h"
-#include "stringlib/transmogrify.h"
-
-
-/* The following Py_LOCAL_INLINE and Py_LOCAL functions
-were copied from the old char* style string object. */
-
-/* helper macro to fixup start/end slice values */
-#define ADJUST_INDICES(start, end, len)         \
-    if (end > len)                              \
-        end = len;                              \
-    else if (end < 0) {                         \
-        end += len;                             \
-        if (end < 0)                            \
-            end = 0;                            \
-    }                                           \
-    if (start < 0) {                            \
-        start += len;                           \
-        if (start < 0)                          \
-            start = 0;                          \
-    }
-
-Py_LOCAL_INLINE(Py_ssize_t)
-bytearray_find_internal(PyByteArrayObject *self, PyObject *args, int dir)
-{
-    PyObject *subobj;
-    Py_buffer subbuf;
-    Py_ssize_t start=0, end=PY_SSIZE_T_MAX;
-    Py_ssize_t res;
-
-    if (!stringlib_parse_args_finds("find/rfind/index/rindex",
-                                    args, &subobj, &start, &end))
-        return -2;
-    if (_getbuffer(subobj, &subbuf) < 0)
-        return -2;
-    if (dir > 0)
-        res = stringlib_find_slice(
-            PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self),
-            subbuf.buf, subbuf.len, start, end);
-    else
-        res = stringlib_rfind_slice(
-            PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self),
-            subbuf.buf, subbuf.len, start, end);
-    PyBuffer_Release(&subbuf);
-    return res;
-}
-
-PyDoc_STRVAR(find__doc__,
-"B.find(sub [,start [,end]]) -> int\n\
-\n\
-Return the lowest index in B where subsection sub is found,\n\
-such that sub is contained within s[start,end].  Optional\n\
-arguments start and end are interpreted as in slice notation.\n\
-\n\
-Return -1 on failure.");
-
-static PyObject *
-bytearray_find(PyByteArrayObject *self, PyObject *args)
-{
-    Py_ssize_t result = bytearray_find_internal(self, args, +1);
-    if (result == -2)
-        return NULL;
-    return PyInt_FromSsize_t(result);
-}
-
-PyDoc_STRVAR(count__doc__,
-"B.count(sub [,start [,end]]) -> int\n\
-\n\
-Return the number of non-overlapping occurrences of subsection sub in\n\
-bytes B[start:end].  Optional arguments start and end are interpreted\n\
-as in slice notation.");
-
-static PyObject *
-bytearray_count(PyByteArrayObject *self, PyObject *args)
-{
-    PyObject *sub_obj;
-    const char *str = PyByteArray_AS_STRING(self);
-    Py_ssize_t start = 0, end = PY_SSIZE_T_MAX;
-    Py_buffer vsub;
-    PyObject *count_obj;
-
-    if (!stringlib_parse_args_finds("count", args, &sub_obj, &start, &end))
-        return NULL;
-
-    if (_getbuffer(sub_obj, &vsub) < 0)
-        return NULL;
-
-    ADJUST_INDICES(start, end, PyByteArray_GET_SIZE(self));
-
-    count_obj = PyInt_FromSsize_t(
-        stringlib_count(str + start, end - start, vsub.buf, vsub.len, PY_SSIZE_T_MAX)
-        );
-    PyBuffer_Release(&vsub);
-    return count_obj;
-}
-
-
-PyDoc_STRVAR(index__doc__,
-"B.index(sub [,start [,end]]) -> int\n\
-\n\
-Like B.find() but raise ValueError when the subsection is not found.");
-
-static PyObject *
-bytearray_index(PyByteArrayObject *self, PyObject *args)
-{
-    Py_ssize_t result = bytearray_find_internal(self, args, +1);
-    if (result == -2)
-        return NULL;
-    if (result == -1) {
-        PyErr_SetString(PyExc_ValueError,
-                        "subsection not found");
-        return NULL;
-    }
-    return PyInt_FromSsize_t(result);
-}
-
-
-PyDoc_STRVAR(rfind__doc__,
-"B.rfind(sub [,start [,end]]) -> int\n\
-\n\
-Return the highest index in B where subsection sub is found,\n\
-such that sub is contained within s[start,end].  Optional\n\
-arguments start and end are interpreted as in slice notation.\n\
-\n\
-Return -1 on failure.");
-
-static PyObject *
-bytearray_rfind(PyByteArrayObject *self, PyObject *args)
-{
-    Py_ssize_t result = bytearray_find_internal(self, args, -1);
-    if (result == -2)
-        return NULL;
-    return PyInt_FromSsize_t(result);
-}
-
-
-PyDoc_STRVAR(rindex__doc__,
-"B.rindex(sub [,start [,end]]) -> int\n\
-\n\
-Like B.rfind() but raise ValueError when the subsection is not found.");
-
-static PyObject *
-bytearray_rindex(PyByteArrayObject *self, PyObject *args)
-{
-    Py_ssize_t result = bytearray_find_internal(self, args, -1);
-    if (result == -2)
-        return NULL;
-    if (result == -1) {
-        PyErr_SetString(PyExc_ValueError,
-                        "subsection not found");
-        return NULL;
-    }
-    return PyInt_FromSsize_t(result);
-}
-
-
-static int
-bytearray_contains(PyObject *self, PyObject *arg)
-{
-    Py_ssize_t ival = PyNumber_AsSsize_t(arg, PyExc_ValueError);
-    if (ival == -1 && PyErr_Occurred()) {
-        Py_buffer varg;
-        int pos;
-        PyErr_Clear();
-        if (_getbuffer(arg, &varg) < 0)
-            return -1;
-        pos = stringlib_find(PyByteArray_AS_STRING(self), Py_SIZE(self),
-                             varg.buf, varg.len, 0);
-        PyBuffer_Release(&varg);
-        return pos >= 0;
-    }
-    if (ival < 0 || ival >= 256) {
-        PyErr_SetString(PyExc_ValueError, "byte must be in range(0, 256)");
-        return -1;
-    }
-
-    return memchr(PyByteArray_AS_STRING(self), ival, Py_SIZE(self)) != NULL;
-}
-
-
-/* Matches the end (direction >= 0) or start (direction < 0) of self
- * against substr, using the start and end arguments. Returns
- * -1 on error, 0 if not found and 1 if found.
- */
-Py_LOCAL(int)
-_bytearray_tailmatch(PyByteArrayObject *self, PyObject *substr, Py_ssize_t start,
-                 Py_ssize_t end, int direction)
-{
-    Py_ssize_t len = PyByteArray_GET_SIZE(self);
-    const char* str;
-    Py_buffer vsubstr;
-    int rv = 0;
-
-    str = PyByteArray_AS_STRING(self);
-
-    if (_getbuffer(substr, &vsubstr) < 0)
-        return -1;
-
-    ADJUST_INDICES(start, end, len);
-
-    if (direction < 0) {
-        /* startswith */
-        if (start+vsubstr.len > len) {
-            goto done;
-        }
-    } else {
-        /* endswith */
-        if (end-start < vsubstr.len || start > len) {
-            goto done;
-        }
-
-        if (end-vsubstr.len > start)
-            start = end - vsubstr.len;
-    }
-    if (end-start >= vsubstr.len)
-        rv = ! memcmp(str+start, vsubstr.buf, vsubstr.len);
-
-done:
-    PyBuffer_Release(&vsubstr);
-    return rv;
-}
-
-
-PyDoc_STRVAR(startswith__doc__,
-"B.startswith(prefix [,start [,end]]) -> bool\n\
-\n\
-Return True if B starts with the specified prefix, False otherwise.\n\
-With optional start, test B beginning at that position.\n\
-With optional end, stop comparing B at that position.\n\
-prefix can also be a tuple of strings to try.");
-
-static PyObject *
-bytearray_startswith(PyByteArrayObject *self, PyObject *args)
-{
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    PyObject *subobj;
-    int result;
-
-    if (!stringlib_parse_args_finds("startswith", args, &subobj, &start, &end))
-        return NULL;
-    if (PyTuple_Check(subobj)) {
-        Py_ssize_t i;
-        for (i = 0; i < PyTuple_GET_SIZE(subobj); i++) {
-            result = _bytearray_tailmatch(self,
-                                      PyTuple_GET_ITEM(subobj, i),
-                                      start, end, -1);
-            if (result == -1)
-                return NULL;
-            else if (result) {
-                Py_RETURN_TRUE;
-            }
-        }
-        Py_RETURN_FALSE;
-    }
-    result = _bytearray_tailmatch(self, subobj, start, end, -1);
-    if (result == -1)
-        return NULL;
-    else
-        return PyBool_FromLong(result);
-}
-
-PyDoc_STRVAR(endswith__doc__,
-"B.endswith(suffix [,start [,end]]) -> bool\n\
-\n\
-Return True if B ends with the specified suffix, False otherwise.\n\
-With optional start, test B beginning at that position.\n\
-With optional end, stop comparing B at that position.\n\
-suffix can also be a tuple of strings to try.");
-
-static PyObject *
-bytearray_endswith(PyByteArrayObject *self, PyObject *args)
-{
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    PyObject *subobj;
-    int result;
-
-    if (!stringlib_parse_args_finds("endswith", args, &subobj, &start, &end))
-        return NULL;
-    if (PyTuple_Check(subobj)) {
-        Py_ssize_t i;
-        for (i = 0; i < PyTuple_GET_SIZE(subobj); i++) {
-            result = _bytearray_tailmatch(self,
-                                      PyTuple_GET_ITEM(subobj, i),
-                                      start, end, +1);
-            if (result == -1)
-                return NULL;
-            else if (result) {
-                Py_RETURN_TRUE;
-            }
-        }
-        Py_RETURN_FALSE;
-    }
-    result = _bytearray_tailmatch(self, subobj, start, end, +1);
-    if (result == -1)
-        return NULL;
-    else
-        return PyBool_FromLong(result);
-}
-
-
-PyDoc_STRVAR(translate__doc__,
-"B.translate(table[, deletechars]) -> bytearray\n\
-\n\
-Return a copy of B, where all characters occurring in the\n\
-optional argument deletechars are removed, and the remaining\n\
-characters have been mapped through the given translation\n\
-table, which must be a bytes object of length 256.");
-
-static PyObject *
-bytearray_translate(PyByteArrayObject *self, PyObject *args)
-{
-    register char *input, *output;
-    register const char *table;
-    register Py_ssize_t i, c;
-    PyObject *input_obj = (PyObject*)self;
-    const char *output_start;
-    Py_ssize_t inlen;
-    PyObject *result = NULL;
-    int trans_table[256];
-    PyObject *tableobj = NULL, *delobj = NULL;
-    Py_buffer vtable, vdel;
-
-    if (!PyArg_UnpackTuple(args, "translate", 1, 2,
-                           &tableobj, &delobj))
-          return NULL;
-
-    if (tableobj == Py_None) {
-        table = NULL;
-        tableobj = NULL;
-    } else if (_getbuffer(tableobj, &vtable) < 0) {
-        return NULL;
-    } else {
-        if (vtable.len != 256) {
-            PyErr_SetString(PyExc_ValueError,
-                            "translation table must be 256 characters long");
-            PyBuffer_Release(&vtable);
-            return NULL;
-        }
-        table = (const char*)vtable.buf;
-    }
-
-    if (delobj != NULL) {
-        if (_getbuffer(delobj, &vdel) < 0) {
-            if (tableobj != NULL)
-                PyBuffer_Release(&vtable);
-            return NULL;
-        }
-    }
-    else {
-        vdel.buf = NULL;
-        vdel.len = 0;
-    }
-
-    inlen = PyByteArray_GET_SIZE(input_obj);
-    result = PyByteArray_FromStringAndSize((char *)NULL, inlen);
-    if (result == NULL)
-        goto done;
-    output_start = output = PyByteArray_AsString(result);
-    input = PyByteArray_AS_STRING(input_obj);
-
-    if (vdel.len == 0 && table != NULL) {
-        /* If no deletions are required, use faster code */
-        for (i = inlen; --i >= 0; ) {
-            c = Py_CHARMASK(*input++);
-            *output++ = table[c];
-        }
-        goto done;
-    }
-
-    if (table == NULL) {
-        for (i = 0; i < 256; i++)
-            trans_table[i] = Py_CHARMASK(i);
-    } else {
-        for (i = 0; i < 256; i++)
-            trans_table[i] = Py_CHARMASK(table[i]);
-    }
-
-    for (i = 0; i < vdel.len; i++)
-        trans_table[(int) Py_CHARMASK( ((unsigned char*)vdel.buf)[i] )] = -1;
-
-    for (i = inlen; --i >= 0; ) {
-        c = Py_CHARMASK(*input++);
-        if (trans_table[c] != -1)
-            if (Py_CHARMASK(*output++ = (char)trans_table[c]) == c)
-                    continue;
-    }
-    /* Fix the size of the resulting string */
-    if (inlen > 0)
-        PyByteArray_Resize(result, output - output_start);
-
-done:
-    if (tableobj != NULL)
-        PyBuffer_Release(&vtable);
-    if (delobj != NULL)
-        PyBuffer_Release(&vdel);
-    return result;
-}
-
-
-/* find and count characters and substrings */
-
-#define findchar(target, target_len, c)                         \
-  ((char *)memchr((const void *)(target), c, target_len))
-
-
-/* Bytes ops must return a string, create a copy */
-Py_LOCAL(PyByteArrayObject *)
-return_self(PyByteArrayObject *self)
-{
-    return (PyByteArrayObject *)PyByteArray_FromStringAndSize(
-            PyByteArray_AS_STRING(self),
-            PyByteArray_GET_SIZE(self));
-}
-
-Py_LOCAL_INLINE(Py_ssize_t)
-countchar(const char *target, Py_ssize_t target_len, char c, Py_ssize_t maxcount)
-{
-    Py_ssize_t count=0;
-    const char *start=target;
-    const char *end=target+target_len;
-
-    while ( (start=findchar(start, end-start, c)) != NULL ) {
-        count++;
-        if (count >= maxcount)
-            break;
-        start += 1;
-    }
-    return count;
-}
-
-
-/* Algorithms for different cases of string replacement */
-
-/* len(self)>=1, from="", len(to)>=1, maxcount>=1 */
-Py_LOCAL(PyByteArrayObject *)
-replace_interleave(PyByteArrayObject *self,
-                   const char *to_s, Py_ssize_t to_len,
-                   Py_ssize_t maxcount)
-{
-    char *self_s, *result_s;
-    Py_ssize_t self_len, result_len;
-    Py_ssize_t count, i, product;
-    PyByteArrayObject *result;
-
-    self_len = PyByteArray_GET_SIZE(self);
-
-    /* 1 at the end plus 1 after every character */
-    count = self_len+1;
-    if (maxcount < count)
-        count = maxcount;
-
-    /* Check for overflow */
-    /*   result_len = count * to_len + self_len; */
-    product = count * to_len;
-    if (product / to_len != count) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "replace string is too long");
-        return NULL;
-    }
-    result_len = product + self_len;
-    if (result_len < 0) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "replace string is too long");
-        return NULL;
-    }
-
-    if (! (result = (PyByteArrayObject *)
-                     PyByteArray_FromStringAndSize(NULL, result_len)) )
-        return NULL;
-
-    self_s = PyByteArray_AS_STRING(self);
-    result_s = PyByteArray_AS_STRING(result);
-
-    /* TODO: special case single character, which doesn't need memcpy */
-
-    /* Lay the first one down (guaranteed this will occur) */
-    Py_MEMCPY(result_s, to_s, to_len);
-    result_s += to_len;
-    count -= 1;
-
-    for (i=0; i<count; i++) {
-        *result_s++ = *self_s++;
-        Py_MEMCPY(result_s, to_s, to_len);
-        result_s += to_len;
-    }
-
-    /* Copy the rest of the original string */
-    Py_MEMCPY(result_s, self_s, self_len-i);
-
-    return result;
-}
-
-/* Special case for deleting a single character */
-/* len(self)>=1, len(from)==1, to="", maxcount>=1 */
-Py_LOCAL(PyByteArrayObject *)
-replace_delete_single_character(PyByteArrayObject *self,
-                                char from_c, Py_ssize_t maxcount)
-{
-    char *self_s, *result_s;
-    char *start, *next, *end;
-    Py_ssize_t self_len, result_len;
-    Py_ssize_t count;
-    PyByteArrayObject *result;
-
-    self_len = PyByteArray_GET_SIZE(self);
-    self_s = PyByteArray_AS_STRING(self);
-
-    count = countchar(self_s, self_len, from_c, maxcount);
-    if (count == 0) {
-        return return_self(self);
-    }
-
-    result_len = self_len - count;  /* from_len == 1 */
-    assert(result_len>=0);
-
-    if ( (result = (PyByteArrayObject *)
-                    PyByteArray_FromStringAndSize(NULL, result_len)) == NULL)
-        return NULL;
-    result_s = PyByteArray_AS_STRING(result);
-
-    start = self_s;
-    end = self_s + self_len;
-    while (count-- > 0) {
-        next = findchar(start, end-start, from_c);
-        if (next == NULL)
-            break;
-        Py_MEMCPY(result_s, start, next-start);
-        result_s += (next-start);
-        start = next+1;
-    }
-    Py_MEMCPY(result_s, start, end-start);
-
-    return result;
-}
-
-/* len(self)>=1, len(from)>=2, to="", maxcount>=1 */
-
-Py_LOCAL(PyByteArrayObject *)
-replace_delete_substring(PyByteArrayObject *self,
-                         const char *from_s, Py_ssize_t from_len,
-                         Py_ssize_t maxcount)
-{
-    char *self_s, *result_s;
-    char *start, *next, *end;
-    Py_ssize_t self_len, result_len;
-    Py_ssize_t count, offset;
-    PyByteArrayObject *result;
-
-    self_len = PyByteArray_GET_SIZE(self);
-    self_s = PyByteArray_AS_STRING(self);
-
-    count = stringlib_count(self_s, self_len,
-                            from_s, from_len,
-                            maxcount);
-
-    if (count == 0) {
-        /* no matches */
-        return return_self(self);
-    }
-
-    result_len = self_len - (count * from_len);
-    assert (result_len>=0);
-
-    if ( (result = (PyByteArrayObject *)
-        PyByteArray_FromStringAndSize(NULL, result_len)) == NULL )
-            return NULL;
-
-    result_s = PyByteArray_AS_STRING(result);
-
-    start = self_s;
-    end = self_s + self_len;
-    while (count-- > 0) {
-        offset = stringlib_find(start, end-start,
-                                from_s, from_len,
-                                0);
-        if (offset == -1)
-            break;
-        next = start + offset;
-
-        Py_MEMCPY(result_s, start, next-start);
-
-        result_s += (next-start);
-        start = next+from_len;
-    }
-    Py_MEMCPY(result_s, start, end-start);
-    return result;
-}
-
-/* len(self)>=1, len(from)==len(to)==1, maxcount>=1 */
-Py_LOCAL(PyByteArrayObject *)
-replace_single_character_in_place(PyByteArrayObject *self,
-                                  char from_c, char to_c,
-                                  Py_ssize_t maxcount)
-{
-    char *self_s, *result_s, *start, *end, *next;
-    Py_ssize_t self_len;
-    PyByteArrayObject *result;
-
-    /* The result string will be the same size */
-    self_s = PyByteArray_AS_STRING(self);
-    self_len = PyByteArray_GET_SIZE(self);
-
-    next = findchar(self_s, self_len, from_c);
-
-    if (next == NULL) {
-        /* No matches; return the original bytes */
-        return return_self(self);
-    }
-
-    /* Need to make a new bytes */
-    result = (PyByteArrayObject *) PyByteArray_FromStringAndSize(NULL, self_len);
-    if (result == NULL)
-        return NULL;
-    result_s = PyByteArray_AS_STRING(result);
-    Py_MEMCPY(result_s, self_s, self_len);
-
-    /* change everything in-place, starting with this one */
-    start =  result_s + (next-self_s);
-    *start = to_c;
-    start++;
-    end = result_s + self_len;
-
-    while (--maxcount > 0) {
-        next = findchar(start, end-start, from_c);
-        if (next == NULL)
-            break;
-        *next = to_c;
-        start = next+1;
-    }
-
-    return result;
-}
-
-/* len(self)>=1, len(from)==len(to)>=2, maxcount>=1 */
-Py_LOCAL(PyByteArrayObject *)
-replace_substring_in_place(PyByteArrayObject *self,
-                           const char *from_s, Py_ssize_t from_len,
-                           const char *to_s, Py_ssize_t to_len,
-                           Py_ssize_t maxcount)
-{
-    char *result_s, *start, *end;
-    char *self_s;
-    Py_ssize_t self_len, offset;
-    PyByteArrayObject *result;
-
-    /* The result bytes will be the same size */
-
-    self_s = PyByteArray_AS_STRING(self);
-    self_len = PyByteArray_GET_SIZE(self);
-
-    offset = stringlib_find(self_s, self_len,
-                            from_s, from_len,
-                            0);
-    if (offset == -1) {
-        /* No matches; return the original bytes */
-        return return_self(self);
-    }
-
-    /* Need to make a new bytes */
-    result = (PyByteArrayObject *) PyByteArray_FromStringAndSize(NULL, self_len);
-    if (result == NULL)
-        return NULL;
-    result_s = PyByteArray_AS_STRING(result);
-    Py_MEMCPY(result_s, self_s, self_len);
-
-    /* change everything in-place, starting with this one */
-    start =  result_s + offset;
-    Py_MEMCPY(start, to_s, from_len);
-    start += from_len;
-    end = result_s + self_len;
-
-    while ( --maxcount > 0) {
-        offset = stringlib_find(start, end-start,
-                                from_s, from_len,
-                                0);
-        if (offset==-1)
-            break;
-        Py_MEMCPY(start+offset, to_s, from_len);
-        start += offset+from_len;
-    }
-
-    return result;
-}
-
-/* len(self)>=1, len(from)==1, len(to)>=2, maxcount>=1 */
-Py_LOCAL(PyByteArrayObject *)
-replace_single_character(PyByteArrayObject *self,
-                         char from_c,
-                         const char *to_s, Py_ssize_t to_len,
-                         Py_ssize_t maxcount)
-{
-    char *self_s, *result_s;
-    char *start, *next, *end;
-    Py_ssize_t self_len, result_len;
-    Py_ssize_t count, product;
-    PyByteArrayObject *result;
-
-    self_s = PyByteArray_AS_STRING(self);
-    self_len = PyByteArray_GET_SIZE(self);
-
-    count = countchar(self_s, self_len, from_c, maxcount);
-    if (count == 0) {
-        /* no matches, return unchanged */
-        return return_self(self);
-    }
-
-    /* use the difference between current and new, hence the "-1" */
-    /*   result_len = self_len + count * (to_len-1)  */
-    product = count * (to_len-1);
-    if (product / (to_len-1) != count) {
-        PyErr_SetString(PyExc_OverflowError, "replace bytes is too long");
-        return NULL;
-    }
-    result_len = self_len + product;
-    if (result_len < 0) {
-            PyErr_SetString(PyExc_OverflowError, "replace bytes is too long");
-            return NULL;
-    }
-
-    if ( (result = (PyByteArrayObject *)
-          PyByteArray_FromStringAndSize(NULL, result_len)) == NULL)
-            return NULL;
-    result_s = PyByteArray_AS_STRING(result);
-
-    start = self_s;
-    end = self_s + self_len;
-    while (count-- > 0) {
-        next = findchar(start, end-start, from_c);
-        if (next == NULL)
-            break;
-
-        if (next == start) {
-            /* replace with the 'to' */
-            Py_MEMCPY(result_s, to_s, to_len);
-            result_s += to_len;
-            start += 1;
-        } else {
-            /* copy the unchanged old then the 'to' */
-            Py_MEMCPY(result_s, start, next-start);
-            result_s += (next-start);
-            Py_MEMCPY(result_s, to_s, to_len);
-            result_s += to_len;
-            start = next+1;
-        }
-    }
-    /* Copy the remainder of the remaining bytes */
-    Py_MEMCPY(result_s, start, end-start);
-
-    return result;
-}
-
-/* len(self)>=1, len(from)>=2, len(to)>=2, maxcount>=1 */
-Py_LOCAL(PyByteArrayObject *)
-replace_substring(PyByteArrayObject *self,
-                  const char *from_s, Py_ssize_t from_len,
-                  const char *to_s, Py_ssize_t to_len,
-                  Py_ssize_t maxcount)
-{
-    char *self_s, *result_s;
-    char *start, *next, *end;
-    Py_ssize_t self_len, result_len;
-    Py_ssize_t count, offset, product;
-    PyByteArrayObject *result;
-
-    self_s = PyByteArray_AS_STRING(self);
-    self_len = PyByteArray_GET_SIZE(self);
-
-    count = stringlib_count(self_s, self_len,
-                            from_s, from_len,
-                            maxcount);
-
-    if (count == 0) {
-        /* no matches, return unchanged */
-        return return_self(self);
-    }
-
-    /* Check for overflow */
-    /*    result_len = self_len + count * (to_len-from_len) */
-    product = count * (to_len-from_len);
-    if (product / (to_len-from_len) != count) {
-        PyErr_SetString(PyExc_OverflowError, "replace bytes is too long");
-        return NULL;
-    }
-    result_len = self_len + product;
-    if (result_len < 0) {
-        PyErr_SetString(PyExc_OverflowError, "replace bytes is too long");
-        return NULL;
-    }
-
-    if ( (result = (PyByteArrayObject *)
-          PyByteArray_FromStringAndSize(NULL, result_len)) == NULL)
-        return NULL;
-    result_s = PyByteArray_AS_STRING(result);
-
-    start = self_s;
-    end = self_s + self_len;
-    while (count-- > 0) {
-        offset = stringlib_find(start, end-start,
-                                from_s, from_len,
-                                0);
-        if (offset == -1)
-            break;
-        next = start+offset;
-        if (next == start) {
-            /* replace with the 'to' */
-            Py_MEMCPY(result_s, to_s, to_len);
-            result_s += to_len;
-            start += from_len;
-        } else {
-            /* copy the unchanged old then the 'to' */
-            Py_MEMCPY(result_s, start, next-start);
-            result_s += (next-start);
-            Py_MEMCPY(result_s, to_s, to_len);
-            result_s += to_len;
-            start = next+from_len;
-        }
-    }
-    /* Copy the remainder of the remaining bytes */
-    Py_MEMCPY(result_s, start, end-start);
-
-    return result;
-}
-
-
-Py_LOCAL(PyByteArrayObject *)
-replace(PyByteArrayObject *self,
-        const char *from_s, Py_ssize_t from_len,
-        const char *to_s, Py_ssize_t to_len,
-        Py_ssize_t maxcount)
-{
-    if (maxcount < 0) {
-        maxcount = PY_SSIZE_T_MAX;
-    } else if (maxcount == 0 || PyByteArray_GET_SIZE(self) == 0) {
-        /* nothing to do; return the original bytes */
-        return return_self(self);
-    }
-
-    if (maxcount == 0 ||
-        (from_len == 0 && to_len == 0)) {
-        /* nothing to do; return the original bytes */
-        return return_self(self);
-    }
-
-    /* Handle zero-length special cases */
-
-    if (from_len == 0) {
-        /* insert the 'to' bytes everywhere.   */
-        /*    >>> "Python".replace("", ".")     */
-        /*    '.P.y.t.h.o.n.'                   */
-        return replace_interleave(self, to_s, to_len, maxcount);
-    }
-
-    /* Except for "".replace("", "A") == "A" there is no way beyond this */
-    /* point for an empty self bytes to generate a non-empty bytes */
-    /* Special case so the remaining code always gets a non-empty bytes */
-    if (PyByteArray_GET_SIZE(self) == 0) {
-        return return_self(self);
-    }
-
-    if (to_len == 0) {
-        /* delete all occurances of 'from' bytes */
-        if (from_len == 1) {
-            return replace_delete_single_character(
-                    self, from_s[0], maxcount);
-        } else {
-            return replace_delete_substring(self, from_s, from_len, maxcount);
-        }
-    }
-
-    /* Handle special case where both bytes have the same length */
-
-    if (from_len == to_len) {
-        if (from_len == 1) {
-            return replace_single_character_in_place(
-                    self,
-                    from_s[0],
-                    to_s[0],
-                    maxcount);
-        } else {
-            return replace_substring_in_place(
-                self, from_s, from_len, to_s, to_len, maxcount);
-        }
-    }
-
-    /* Otherwise use the more generic algorithms */
-    if (from_len == 1) {
-        return replace_single_character(self, from_s[0],
-                                        to_s, to_len, maxcount);
-    } else {
-        /* len('from')>=2, len('to')>=1 */
-        return replace_substring(self, from_s, from_len, to_s, to_len, maxcount);
-    }
-}
-
-
-PyDoc_STRVAR(replace__doc__,
-"B.replace(old, new[, count]) -> bytes\n\
-\n\
-Return a copy of B with all occurrences of subsection\n\
-old replaced by new.  If the optional argument count is\n\
-given, only the first count occurrences are replaced.");
-
-static PyObject *
-bytearray_replace(PyByteArrayObject *self, PyObject *args)
-{
-    Py_ssize_t count = -1;
-    PyObject *from, *to, *res;
-    Py_buffer vfrom, vto;
-
-    if (!PyArg_ParseTuple(args, "OO|n:replace", &from, &to, &count))
-        return NULL;
-
-    if (_getbuffer(from, &vfrom) < 0)
-        return NULL;
-    if (_getbuffer(to, &vto) < 0) {
-        PyBuffer_Release(&vfrom);
-        return NULL;
-    }
-
-    res = (PyObject *)replace((PyByteArrayObject *) self,
-                              vfrom.buf, vfrom.len,
-                              vto.buf, vto.len, count);
-
-    PyBuffer_Release(&vfrom);
-    PyBuffer_Release(&vto);
-    return res;
-}
-
-PyDoc_STRVAR(split__doc__,
-"B.split([sep[, maxsplit]]) -> list of bytearray\n\
-\n\
-Return a list of the sections in B, using sep as the delimiter.\n\
-If sep is not given, B is split on ASCII whitespace characters\n\
-(space, tab, return, newline, formfeed, vertical tab).\n\
-If maxsplit is given, at most maxsplit splits are done.");
-
-static PyObject *
-bytearray_split(PyByteArrayObject *self, PyObject *args)
-{
-    Py_ssize_t len = PyByteArray_GET_SIZE(self), n;
-    Py_ssize_t maxsplit = -1;
-    const char *s = PyByteArray_AS_STRING(self), *sub;
-    PyObject *list, *subobj = Py_None;
-    Py_buffer vsub;
-
-    if (!PyArg_ParseTuple(args, "|On:split", &subobj, &maxsplit))
-        return NULL;
-    if (maxsplit < 0)
-        maxsplit = PY_SSIZE_T_MAX;
-
-    if (subobj == Py_None)
-        return stringlib_split_whitespace((PyObject*) self, s, len, maxsplit);
-
-    if (_getbuffer(subobj, &vsub) < 0)
-        return NULL;
-    sub = vsub.buf;
-    n = vsub.len;
-
-    list = stringlib_split(
-        (PyObject*) self, s, len, sub, n, maxsplit
-        );
-    PyBuffer_Release(&vsub);
-    return list;
-}
-
-PyDoc_STRVAR(partition__doc__,
-"B.partition(sep) -> (head, sep, tail)\n\
-\n\
-Searches for the separator sep in B, and returns the part before it,\n\
-the separator itself, and the part after it.  If the separator is not\n\
-found, returns B and two empty bytearray objects.");
-
-static PyObject *
-bytearray_partition(PyByteArrayObject *self, PyObject *sep_obj)
-{
-    PyObject *bytesep, *result;
-
-    bytesep = PyByteArray_FromObject(sep_obj);
-    if (! bytesep)
-        return NULL;
-
-    result = stringlib_partition(
-            (PyObject*) self,
-            PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self),
-            bytesep,
-            PyByteArray_AS_STRING(bytesep), PyByteArray_GET_SIZE(bytesep)
-            );
-
-    Py_DECREF(bytesep);
-    return result;
-}
-
-PyDoc_STRVAR(rpartition__doc__,
-"B.rpartition(sep) -> (head, sep, tail)\n\
-\n\
-Searches for the separator sep in B, starting at the end of B,\n\
-and returns the part before it, the separator itself, and the\n\
-part after it.  If the separator is not found, returns two empty\n\
-bytearray objects and B.");
-
-static PyObject *
-bytearray_rpartition(PyByteArrayObject *self, PyObject *sep_obj)
-{
-    PyObject *bytesep, *result;
-
-    bytesep = PyByteArray_FromObject(sep_obj);
-    if (! bytesep)
-        return NULL;
-
-    result = stringlib_rpartition(
-            (PyObject*) self,
-            PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self),
-            bytesep,
-            PyByteArray_AS_STRING(bytesep), PyByteArray_GET_SIZE(bytesep)
-            );
-
-    Py_DECREF(bytesep);
-    return result;
-}
-
-PyDoc_STRVAR(rsplit__doc__,
-"B.rsplit(sep[, maxsplit]) -> list of bytearray\n\
-\n\
-Return a list of the sections in B, using sep as the delimiter,\n\
-starting at the end of B and working to the front.\n\
-If sep is not given, B is split on ASCII whitespace characters\n\
-(space, tab, return, newline, formfeed, vertical tab).\n\
-If maxsplit is given, at most maxsplit splits are done.");
-
-static PyObject *
-bytearray_rsplit(PyByteArrayObject *self, PyObject *args)
-{
-    Py_ssize_t len = PyByteArray_GET_SIZE(self), n;
-    Py_ssize_t maxsplit = -1;
-    const char *s = PyByteArray_AS_STRING(self), *sub;
-    PyObject *list, *subobj = Py_None;
-    Py_buffer vsub;
-
-    if (!PyArg_ParseTuple(args, "|On:rsplit", &subobj, &maxsplit))
-        return NULL;
-    if (maxsplit < 0)
-        maxsplit = PY_SSIZE_T_MAX;
-
-    if (subobj == Py_None)
-        return stringlib_rsplit_whitespace((PyObject*) self, s, len, maxsplit);
-
-    if (_getbuffer(subobj, &vsub) < 0)
-        return NULL;
-    sub = vsub.buf;
-    n = vsub.len;
-
-    list = stringlib_rsplit(
-        (PyObject*) self, s, len, sub, n, maxsplit
-        );
-    PyBuffer_Release(&vsub);
-    return list;
-}
-
-PyDoc_STRVAR(reverse__doc__,
-"B.reverse() -> None\n\
-\n\
-Reverse the order of the values in B in place.");
-static PyObject *
-bytearray_reverse(PyByteArrayObject *self, PyObject *unused)
-{
-    char swap, *head, *tail;
-    Py_ssize_t i, j, n = Py_SIZE(self);
-
-    j = n / 2;
-    head = self->ob_bytes;
-    tail = head + n - 1;
-    for (i = 0; i < j; i++) {
-        swap = *head;
-        *head++ = *tail;
-        *tail-- = swap;
-    }
-
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(insert__doc__,
-"B.insert(index, int) -> None\n\
-\n\
-Insert a single item into the bytearray before the given index.");
-static PyObject *
-bytearray_insert(PyByteArrayObject *self, PyObject *args)
-{
-    PyObject *value;
-    int ival;
-    Py_ssize_t where, n = Py_SIZE(self);
-
-    if (!PyArg_ParseTuple(args, "nO:insert", &where, &value))
-        return NULL;
-
-    if (n == PY_SSIZE_T_MAX) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "cannot add more objects to bytearray");
-        return NULL;
-    }
-    if (!_getbytevalue(value, &ival))
-        return NULL;
-    if (PyByteArray_Resize((PyObject *)self, n + 1) < 0)
-        return NULL;
-
-    if (where < 0) {
-        where += n;
-        if (where < 0)
-            where = 0;
-    }
-    if (where > n)
-        where = n;
-    memmove(self->ob_bytes + where + 1, self->ob_bytes + where, n - where);
-    self->ob_bytes[where] = ival;
-
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(append__doc__,
-"B.append(int) -> None\n\
-\n\
-Append a single item to the end of B.");
-static PyObject *
-bytearray_append(PyByteArrayObject *self, PyObject *arg)
-{
-    int value;
-    Py_ssize_t n = Py_SIZE(self);
-
-    if (! _getbytevalue(arg, &value))
-        return NULL;
-    if (n == PY_SSIZE_T_MAX) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "cannot add more objects to bytearray");
-        return NULL;
-    }
-    if (PyByteArray_Resize((PyObject *)self, n + 1) < 0)
-        return NULL;
-
-    self->ob_bytes[n] = value;
-
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(extend__doc__,
-"B.extend(iterable int) -> None\n\
-\n\
-Append all the elements from the iterator or sequence to the\n\
-end of B.");
-static PyObject *
-bytearray_extend(PyByteArrayObject *self, PyObject *arg)
-{
-    PyObject *it, *item, *bytearray_obj;
-    Py_ssize_t buf_size = 0, len = 0;
-    int value;
-    char *buf;
-
-    /* bytearray_setslice code only accepts something supporting PEP 3118. */
-    if (PyObject_CheckBuffer(arg)) {
-        if (bytearray_setslice(self, Py_SIZE(self), Py_SIZE(self), arg) == -1)
-            return NULL;
-
-        Py_RETURN_NONE;
-    }
-
-    it = PyObject_GetIter(arg);
-    if (it == NULL)
-        return NULL;
-
-    /* Try to determine the length of the argument. 32 is arbitrary. */
-    buf_size = _PyObject_LengthHint(arg, 32);
-    if (buf_size == -1) {
-        Py_DECREF(it);
-        return NULL;
-    }
-
-    bytearray_obj = PyByteArray_FromStringAndSize(NULL, buf_size);
-    if (bytearray_obj == NULL)
-        return NULL;
-    buf = PyByteArray_AS_STRING(bytearray_obj);
-
-    while ((item = PyIter_Next(it)) != NULL) {
-        if (! _getbytevalue(item, &value)) {
-            Py_DECREF(item);
-            Py_DECREF(it);
-            Py_DECREF(bytearray_obj);
-            return NULL;
-        }
-        buf[len++] = value;
-        Py_DECREF(item);
-
-        if (len >= buf_size) {
-            buf_size = len + (len >> 1) + 1;
-            if (PyByteArray_Resize((PyObject *)bytearray_obj, buf_size) < 0) {
-                Py_DECREF(it);
-                Py_DECREF(bytearray_obj);
-                return NULL;
-            }
-            /* Recompute the `buf' pointer, since the resizing operation may
-               have invalidated it. */
-            buf = PyByteArray_AS_STRING(bytearray_obj);
-        }
-    }
-    Py_DECREF(it);
-
-    /* Resize down to exact size. */
-    if (PyByteArray_Resize((PyObject *)bytearray_obj, len) < 0) {
-        Py_DECREF(bytearray_obj);
-        return NULL;
-    }
-
-    if (bytearray_setslice(self, Py_SIZE(self), Py_SIZE(self), bytearray_obj) == -1)
-        return NULL;
-    Py_DECREF(bytearray_obj);
-
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(pop__doc__,
-"B.pop([index]) -> int\n\
-\n\
-Remove and return a single item from B. If no index\n\
-argument is given, will pop the last value.");
-static PyObject *
-bytearray_pop(PyByteArrayObject *self, PyObject *args)
-{
-    int value;
-    Py_ssize_t where = -1, n = Py_SIZE(self);
-
-    if (!PyArg_ParseTuple(args, "|n:pop", &where))
-        return NULL;
-
-    if (n == 0) {
-        PyErr_SetString(PyExc_IndexError,
-                        "pop from empty bytearray");
-        return NULL;
-    }
-    if (where < 0)
-        where += Py_SIZE(self);
-    if (where < 0 || where >= Py_SIZE(self)) {
-        PyErr_SetString(PyExc_IndexError, "pop index out of range");
-        return NULL;
-    }
-    if (!_canresize(self))
-        return NULL;
-
-    value = self->ob_bytes[where];
-    memmove(self->ob_bytes + where, self->ob_bytes + where + 1, n - where);
-    if (PyByteArray_Resize((PyObject *)self, n - 1) < 0)
-        return NULL;
-
-    return PyInt_FromLong((unsigned char)value);
-}
-
-PyDoc_STRVAR(remove__doc__,
-"B.remove(int) -> None\n\
-\n\
-Remove the first occurance of a value in B.");
-static PyObject *
-bytearray_remove(PyByteArrayObject *self, PyObject *arg)
-{
-    int value;
-    Py_ssize_t where, n = Py_SIZE(self);
-
-    if (! _getbytevalue(arg, &value))
-        return NULL;
-
-    for (where = 0; where < n; where++) {
-        if (self->ob_bytes[where] == value)
-            break;
-    }
-    if (where == n) {
-        PyErr_SetString(PyExc_ValueError, "value not found in bytearray");
-        return NULL;
-    }
-    if (!_canresize(self))
-        return NULL;
-
-    memmove(self->ob_bytes + where, self->ob_bytes + where + 1, n - where);
-    if (PyByteArray_Resize((PyObject *)self, n - 1) < 0)
-        return NULL;
-
-    Py_RETURN_NONE;
-}
-
-/* XXX These two helpers could be optimized if argsize == 1 */
-
-static Py_ssize_t
-lstrip_helper(unsigned char *myptr, Py_ssize_t mysize,
-              void *argptr, Py_ssize_t argsize)
-{
-    Py_ssize_t i = 0;
-    while (i < mysize && memchr(argptr, myptr[i], argsize))
-        i++;
-    return i;
-}
-
-static Py_ssize_t
-rstrip_helper(unsigned char *myptr, Py_ssize_t mysize,
-              void *argptr, Py_ssize_t argsize)
-{
-    Py_ssize_t i = mysize - 1;
-    while (i >= 0 && memchr(argptr, myptr[i], argsize))
-        i--;
-    return i + 1;
-}
-
-PyDoc_STRVAR(strip__doc__,
-"B.strip([bytes]) -> bytearray\n\
-\n\
-Strip leading and trailing bytes contained in the argument.\n\
-If the argument is omitted, strip ASCII whitespace.");
-static PyObject *
-bytearray_strip(PyByteArrayObject *self, PyObject *args)
-{
-    Py_ssize_t left, right, mysize, argsize;
-    void *myptr, *argptr;
-    PyObject *arg = Py_None;
-    Py_buffer varg;
-    if (!PyArg_ParseTuple(args, "|O:strip", &arg))
-        return NULL;
-    if (arg == Py_None) {
-        argptr = "\t\n\r\f\v ";
-        argsize = 6;
-    }
-    else {
-        if (_getbuffer(arg, &varg) < 0)
-            return NULL;
-        argptr = varg.buf;
-        argsize = varg.len;
-    }
-    myptr = self->ob_bytes;
-    mysize = Py_SIZE(self);
-    left = lstrip_helper(myptr, mysize, argptr, argsize);
-    if (left == mysize)
-        right = left;
-    else
-        right = rstrip_helper(myptr, mysize, argptr, argsize);
-    if (arg != Py_None)
-        PyBuffer_Release(&varg);
-    return PyByteArray_FromStringAndSize(self->ob_bytes + left, right - left);
-}
-
-PyDoc_STRVAR(lstrip__doc__,
-"B.lstrip([bytes]) -> bytearray\n\
-\n\
-Strip leading bytes contained in the argument.\n\
-If the argument is omitted, strip leading ASCII whitespace.");
-static PyObject *
-bytearray_lstrip(PyByteArrayObject *self, PyObject *args)
-{
-    Py_ssize_t left, right, mysize, argsize;
-    void *myptr, *argptr;
-    PyObject *arg = Py_None;
-    Py_buffer varg;
-    if (!PyArg_ParseTuple(args, "|O:lstrip", &arg))
-        return NULL;
-    if (arg == Py_None) {
-        argptr = "\t\n\r\f\v ";
-        argsize = 6;
-    }
-    else {
-        if (_getbuffer(arg, &varg) < 0)
-            return NULL;
-        argptr = varg.buf;
-        argsize = varg.len;
-    }
-    myptr = self->ob_bytes;
-    mysize = Py_SIZE(self);
-    left = lstrip_helper(myptr, mysize, argptr, argsize);
-    right = mysize;
-    if (arg != Py_None)
-        PyBuffer_Release(&varg);
-    return PyByteArray_FromStringAndSize(self->ob_bytes + left, right - left);
-}
-
-PyDoc_STRVAR(rstrip__doc__,
-"B.rstrip([bytes]) -> bytearray\n\
-\n\
-Strip trailing bytes contained in the argument.\n\
-If the argument is omitted, strip trailing ASCII whitespace.");
-static PyObject *
-bytearray_rstrip(PyByteArrayObject *self, PyObject *args)
-{
-    Py_ssize_t left, right, mysize, argsize;
-    void *myptr, *argptr;
-    PyObject *arg = Py_None;
-    Py_buffer varg;
-    if (!PyArg_ParseTuple(args, "|O:rstrip", &arg))
-        return NULL;
-    if (arg == Py_None) {
-        argptr = "\t\n\r\f\v ";
-        argsize = 6;
-    }
-    else {
-        if (_getbuffer(arg, &varg) < 0)
-            return NULL;
-        argptr = varg.buf;
-        argsize = varg.len;
-    }
-    myptr = self->ob_bytes;
-    mysize = Py_SIZE(self);
-    left = 0;
-    right = rstrip_helper(myptr, mysize, argptr, argsize);
-    if (arg != Py_None)
-        PyBuffer_Release(&varg);
-    return PyByteArray_FromStringAndSize(self->ob_bytes + left, right - left);
-}
-
-PyDoc_STRVAR(decode_doc,
-"B.decode([encoding[, errors]]) -> unicode object.\n\
-\n\
-Decodes B using the codec registered for encoding. encoding defaults\n\
-to the default encoding. errors may be given to set a different error\n\
-handling scheme.  Default is 'strict' meaning that encoding errors raise\n\
-a UnicodeDecodeError.  Other possible values are 'ignore' and 'replace'\n\
-as well as any other name registered with codecs.register_error that is\n\
-able to handle UnicodeDecodeErrors.");
-
-static PyObject *
-bytearray_decode(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    const char *encoding = NULL;
-    const char *errors = NULL;
-    static char *kwlist[] = {"encoding", "errors", 0};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|ss:decode", kwlist, &encoding, &errors))
-        return NULL;
-    if (encoding == NULL) {
-#ifdef Py_USING_UNICODE
-        encoding = PyUnicode_GetDefaultEncoding();
-#else
-        PyErr_SetString(PyExc_ValueError, "no encoding specified");
-        return NULL;
-#endif
-    }
-    return PyCodec_Decode(self, encoding, errors);
-}
-
-PyDoc_STRVAR(alloc_doc,
-"B.__alloc__() -> int\n\
-\n\
-Returns the number of bytes actually allocated.");
-
-static PyObject *
-bytearray_alloc(PyByteArrayObject *self)
-{
-    return PyInt_FromSsize_t(self->ob_alloc);
-}
-
-PyDoc_STRVAR(join_doc,
-"B.join(iterable_of_bytes) -> bytes\n\
-\n\
-Concatenates any number of bytearray objects, with B in between each pair.");
-
-static PyObject *
-bytearray_join(PyByteArrayObject *self, PyObject *it)
-{
-    PyObject *seq;
-    Py_ssize_t mysize = Py_SIZE(self);
-    Py_ssize_t i;
-    Py_ssize_t n;
-    PyObject **items;
-    Py_ssize_t totalsize = 0;
-    PyObject *result;
-    char *dest;
-
-    seq = PySequence_Fast(it, "can only join an iterable");
-    if (seq == NULL)
-        return NULL;
-    n = PySequence_Fast_GET_SIZE(seq);
-    items = PySequence_Fast_ITEMS(seq);
-
-    /* Compute the total size, and check that they are all bytes */
-    /* XXX Shouldn't we use _getbuffer() on these items instead? */
-    for (i = 0; i < n; i++) {
-        PyObject *obj = items[i];
-        if (!PyByteArray_Check(obj) && !PyBytes_Check(obj)) {
-            PyErr_Format(PyExc_TypeError,
-                         "can only join an iterable of bytes "
-                         "(item %ld has type '%.100s')",
-                         /* XXX %ld isn't right on Win64 */
-                         (long)i, Py_TYPE(obj)->tp_name);
-            goto error;
-        }
-        if (i > 0)
-            totalsize += mysize;
-        totalsize += Py_SIZE(obj);
-        if (totalsize < 0) {
-            PyErr_NoMemory();
-            goto error;
-        }
-    }
-
-    /* Allocate the result, and copy the bytes */
-    result = PyByteArray_FromStringAndSize(NULL, totalsize);
-    if (result == NULL)
-        goto error;
-    dest = PyByteArray_AS_STRING(result);
-    for (i = 0; i < n; i++) {
-        PyObject *obj = items[i];
-        Py_ssize_t size = Py_SIZE(obj);
-        char *buf;
-        if (PyByteArray_Check(obj))
-           buf = PyByteArray_AS_STRING(obj);
-        else
-           buf = PyBytes_AS_STRING(obj);
-        if (i) {
-            memcpy(dest, self->ob_bytes, mysize);
-            dest += mysize;
-        }
-        memcpy(dest, buf, size);
-        dest += size;
-    }
-
-    /* Done */
-    Py_DECREF(seq);
-    return result;
-
-    /* Error handling */
-  error:
-    Py_DECREF(seq);
-    return NULL;
-}
-
-PyDoc_STRVAR(splitlines__doc__,
-"B.splitlines([keepends]) -> list of lines\n\
-\n\
-Return a list of the lines in B, breaking at line boundaries.\n\
-Line breaks are not included in the resulting list unless keepends\n\
-is given and true.");
-
-static PyObject*
-bytearray_splitlines(PyObject *self, PyObject *args)
-{
-    int keepends = 0;
-
-    if (!PyArg_ParseTuple(args, "|i:splitlines", &keepends))
-        return NULL;
-
-    return stringlib_splitlines(
-        (PyObject*) self, PyByteArray_AS_STRING(self),
-        PyByteArray_GET_SIZE(self), keepends
-        );
-}
-
-PyDoc_STRVAR(fromhex_doc,
-"bytearray.fromhex(string) -> bytearray\n\
-\n\
-Create a bytearray object from a string of hexadecimal numbers.\n\
-Spaces between two numbers are accepted.\n\
-Example: bytearray.fromhex('B9 01EF') -> bytearray(b'\\xb9\\x01\\xef').");
-
-static int
-hex_digit_to_int(char c)
-{
-    if (Py_ISDIGIT(c))
-        return c - '0';
-    else {
-        if (Py_ISUPPER(c))
-            c = Py_TOLOWER(c);
-        if (c >= 'a' && c <= 'f')
-            return c - 'a' + 10;
-    }
-    return -1;
-}
-
-static PyObject *
-bytearray_fromhex(PyObject *cls, PyObject *args)
-{
-    PyObject *newbytes;
-    char *buf;
-    char *hex;
-    Py_ssize_t hexlen, byteslen, i, j;
-    int top, bot;
-
-    if (!PyArg_ParseTuple(args, "s#:fromhex", &hex, &hexlen))
-        return NULL;
-    byteslen = hexlen/2; /* This overestimates if there are spaces */
-    newbytes = PyByteArray_FromStringAndSize(NULL, byteslen);
-    if (!newbytes)
-        return NULL;
-    buf = PyByteArray_AS_STRING(newbytes);
-    for (i = j = 0; i < hexlen; i += 2) {
-        /* skip over spaces in the input */
-        while (hex[i] == ' ')
-            i++;
-        if (i >= hexlen)
-            break;
-        top = hex_digit_to_int(hex[i]);
-        bot = hex_digit_to_int(hex[i+1]);
-        if (top == -1 || bot == -1) {
-            PyErr_Format(PyExc_ValueError,
-                         "non-hexadecimal number found in "
-                         "fromhex() arg at position %zd", i);
-            goto error;
-        }
-        buf[j++] = (top << 4) + bot;
-    }
-    if (PyByteArray_Resize(newbytes, j) < 0)
-        goto error;
-    return newbytes;
-
-  error:
-    Py_DECREF(newbytes);
-    return NULL;
-}
-
-PyDoc_STRVAR(reduce_doc, "Return state information for pickling.");
-
-static PyObject *
-bytearray_reduce(PyByteArrayObject *self)
-{
-    PyObject *latin1, *dict;
-    if (self->ob_bytes)
-#ifdef Py_USING_UNICODE
-        latin1 = PyUnicode_DecodeLatin1(self->ob_bytes,
-                                        Py_SIZE(self), NULL);
-#else
-        latin1 = PyString_FromStringAndSize(self->ob_bytes, Py_SIZE(self));
-#endif
-    else
-#ifdef Py_USING_UNICODE
-        latin1 = PyUnicode_FromString("");
-#else
-        latin1 = PyString_FromString("");
-#endif
-
-    dict = PyObject_GetAttrString((PyObject *)self, "__dict__");
-    if (dict == NULL) {
-        PyErr_Clear();
-        dict = Py_None;
-        Py_INCREF(dict);
-    }
-
-    return Py_BuildValue("(O(Ns)N)", Py_TYPE(self), latin1, "latin-1", dict);
-}
-
-PyDoc_STRVAR(sizeof_doc,
-"B.__sizeof__() -> int\n\
- \n\
-Returns the size of B in memory, in bytes");
-static PyObject *
-bytearray_sizeof(PyByteArrayObject *self)
-{
-    Py_ssize_t res;
-
-    res = sizeof(PyByteArrayObject) + self->ob_alloc * sizeof(char);
-    return PyInt_FromSsize_t(res);
-}
-
-static PySequenceMethods bytearray_as_sequence = {
-    (lenfunc)bytearray_length,              /* sq_length */
-    (binaryfunc)PyByteArray_Concat,         /* sq_concat */
-    (ssizeargfunc)bytearray_repeat,         /* sq_repeat */
-    (ssizeargfunc)bytearray_getitem,        /* sq_item */
-    0,                                      /* sq_slice */
-    (ssizeobjargproc)bytearray_setitem,     /* sq_ass_item */
-    0,                                      /* sq_ass_slice */
-    (objobjproc)bytearray_contains,         /* sq_contains */
-    (binaryfunc)bytearray_iconcat,          /* sq_inplace_concat */
-    (ssizeargfunc)bytearray_irepeat,        /* sq_inplace_repeat */
-};
-
-static PyMappingMethods bytearray_as_mapping = {
-    (lenfunc)bytearray_length,
-    (binaryfunc)bytearray_subscript,
-    (objobjargproc)bytearray_ass_subscript,
-};
-
-static PyBufferProcs bytearray_as_buffer = {
-    (readbufferproc)bytearray_buffer_getreadbuf,
-    (writebufferproc)bytearray_buffer_getwritebuf,
-    (segcountproc)bytearray_buffer_getsegcount,
-    (charbufferproc)bytearray_buffer_getcharbuf,
-    (getbufferproc)bytearray_getbuffer,
-    (releasebufferproc)bytearray_releasebuffer,
-};
-
-static PyMethodDef
-bytearray_methods[] = {
-    {"__alloc__", (PyCFunction)bytearray_alloc, METH_NOARGS, alloc_doc},
-    {"__reduce__", (PyCFunction)bytearray_reduce, METH_NOARGS, reduce_doc},
-    {"__sizeof__", (PyCFunction)bytearray_sizeof, METH_NOARGS, sizeof_doc},
-    {"append", (PyCFunction)bytearray_append, METH_O, append__doc__},
-    {"capitalize", (PyCFunction)stringlib_capitalize, METH_NOARGS,
-     _Py_capitalize__doc__},
-    {"center", (PyCFunction)stringlib_center, METH_VARARGS, center__doc__},
-    {"count", (PyCFunction)bytearray_count, METH_VARARGS, count__doc__},
-    {"decode", (PyCFunction)bytearray_decode, METH_VARARGS | METH_KEYWORDS, decode_doc},
-    {"endswith", (PyCFunction)bytearray_endswith, METH_VARARGS, endswith__doc__},
-    {"expandtabs", (PyCFunction)stringlib_expandtabs, METH_VARARGS,
-     expandtabs__doc__},
-    {"extend", (PyCFunction)bytearray_extend, METH_O, extend__doc__},
-    {"find", (PyCFunction)bytearray_find, METH_VARARGS, find__doc__},
-    {"fromhex", (PyCFunction)bytearray_fromhex, METH_VARARGS|METH_CLASS,
-     fromhex_doc},
-    {"index", (PyCFunction)bytearray_index, METH_VARARGS, index__doc__},
-    {"insert", (PyCFunction)bytearray_insert, METH_VARARGS, insert__doc__},
-    {"isalnum", (PyCFunction)stringlib_isalnum, METH_NOARGS,
-     _Py_isalnum__doc__},
-    {"isalpha", (PyCFunction)stringlib_isalpha, METH_NOARGS,
-     _Py_isalpha__doc__},
-    {"isdigit", (PyCFunction)stringlib_isdigit, METH_NOARGS,
-     _Py_isdigit__doc__},
-    {"islower", (PyCFunction)stringlib_islower, METH_NOARGS,
-     _Py_islower__doc__},
-    {"isspace", (PyCFunction)stringlib_isspace, METH_NOARGS,
-     _Py_isspace__doc__},
-    {"istitle", (PyCFunction)stringlib_istitle, METH_NOARGS,
-     _Py_istitle__doc__},
-    {"isupper", (PyCFunction)stringlib_isupper, METH_NOARGS,
-     _Py_isupper__doc__},
-    {"join", (PyCFunction)bytearray_join, METH_O, join_doc},
-    {"ljust", (PyCFunction)stringlib_ljust, METH_VARARGS, ljust__doc__},
-    {"lower", (PyCFunction)stringlib_lower, METH_NOARGS, _Py_lower__doc__},
-    {"lstrip", (PyCFunction)bytearray_lstrip, METH_VARARGS, lstrip__doc__},
-    {"partition", (PyCFunction)bytearray_partition, METH_O, partition__doc__},
-    {"pop", (PyCFunction)bytearray_pop, METH_VARARGS, pop__doc__},
-    {"remove", (PyCFunction)bytearray_remove, METH_O, remove__doc__},
-    {"replace", (PyCFunction)bytearray_replace, METH_VARARGS, replace__doc__},
-    {"reverse", (PyCFunction)bytearray_reverse, METH_NOARGS, reverse__doc__},
-    {"rfind", (PyCFunction)bytearray_rfind, METH_VARARGS, rfind__doc__},
-    {"rindex", (PyCFunction)bytearray_rindex, METH_VARARGS, rindex__doc__},
-    {"rjust", (PyCFunction)stringlib_rjust, METH_VARARGS, rjust__doc__},
-    {"rpartition", (PyCFunction)bytearray_rpartition, METH_O, rpartition__doc__},
-    {"rsplit", (PyCFunction)bytearray_rsplit, METH_VARARGS, rsplit__doc__},
-    {"rstrip", (PyCFunction)bytearray_rstrip, METH_VARARGS, rstrip__doc__},
-    {"split", (PyCFunction)bytearray_split, METH_VARARGS, split__doc__},
-    {"splitlines", (PyCFunction)bytearray_splitlines, METH_VARARGS,
-     splitlines__doc__},
-    {"startswith", (PyCFunction)bytearray_startswith, METH_VARARGS ,
-     startswith__doc__},
-    {"strip", (PyCFunction)bytearray_strip, METH_VARARGS, strip__doc__},
-    {"swapcase", (PyCFunction)stringlib_swapcase, METH_NOARGS,
-     _Py_swapcase__doc__},
-    {"title", (PyCFunction)stringlib_title, METH_NOARGS, _Py_title__doc__},
-    {"translate", (PyCFunction)bytearray_translate, METH_VARARGS,
-     translate__doc__},
-    {"upper", (PyCFunction)stringlib_upper, METH_NOARGS, _Py_upper__doc__},
-    {"zfill", (PyCFunction)stringlib_zfill, METH_VARARGS, zfill__doc__},
-    {NULL}
-};
-
-PyDoc_STRVAR(bytearray_doc,
-"bytearray(iterable_of_ints) -> bytearray.\n\
-bytearray(string, encoding[, errors]) -> bytearray.\n\
-bytearray(bytes_or_bytearray) -> mutable copy of bytes_or_bytearray.\n\
-bytearray(memory_view) -> bytearray.\n\
-\n\
-Construct an mutable bytearray object from:\n\
-  - an iterable yielding integers in range(256)\n\
-  - a text string encoded using the specified encoding\n\
-  - a bytes or a bytearray object\n\
-  - any object implementing the buffer API.\n\
-\n\
-bytearray(int) -> bytearray.\n\
-\n\
-Construct a zero-initialized bytearray of the given length.");
-
-
-static PyObject *bytearray_iter(PyObject *seq);
-
-PyTypeObject PyByteArray_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "bytearray",
-    sizeof(PyByteArrayObject),
-    0,
-    (destructor)bytearray_dealloc,       /* tp_dealloc */
-    0,                                  /* tp_print */
-    0,                                  /* tp_getattr */
-    0,                                  /* tp_setattr */
-    0,                                  /* tp_compare */
-    (reprfunc)bytearray_repr,           /* tp_repr */
-    0,                                  /* tp_as_number */
-    &bytearray_as_sequence,             /* tp_as_sequence */
-    &bytearray_as_mapping,              /* tp_as_mapping */
-    0,                                  /* tp_hash */
-    0,                                  /* tp_call */
-    bytearray_str,                      /* tp_str */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    &bytearray_as_buffer,               /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |
-    Py_TPFLAGS_HAVE_NEWBUFFER,          /* tp_flags */
-    bytearray_doc,                      /* tp_doc */
-    0,                                  /* tp_traverse */
-    0,                                  /* tp_clear */
-    (richcmpfunc)bytearray_richcompare, /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    bytearray_iter,                     /* tp_iter */
-    0,                                  /* tp_iternext */
-    bytearray_methods,                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    (initproc)bytearray_init,           /* tp_init */
-    PyType_GenericAlloc,                /* tp_alloc */
-    PyType_GenericNew,                  /* tp_new */
-    PyObject_Del,                       /* tp_free */
-};
-
-/*********************** Bytes Iterator ****************************/
-
-typedef struct {
-    PyObject_HEAD
-    Py_ssize_t it_index;
-    PyByteArrayObject *it_seq; /* Set to NULL when iterator is exhausted */
-} bytesiterobject;
-
-static void
-bytearrayiter_dealloc(bytesiterobject *it)
-{
-    _PyObject_GC_UNTRACK(it);
-    Py_XDECREF(it->it_seq);
-    PyObject_GC_Del(it);
-}
-
-static int
-bytearrayiter_traverse(bytesiterobject *it, visitproc visit, void *arg)
-{
-    Py_VISIT(it->it_seq);
-    return 0;
-}
-
-static PyObject *
-bytearrayiter_next(bytesiterobject *it)
-{
-    PyByteArrayObject *seq;
-    PyObject *item;
-
-    assert(it != NULL);
-    seq = it->it_seq;
-    if (seq == NULL)
-        return NULL;
-    assert(PyByteArray_Check(seq));
-
-    if (it->it_index < PyByteArray_GET_SIZE(seq)) {
-        item = PyInt_FromLong(
-            (unsigned char)seq->ob_bytes[it->it_index]);
-        if (item != NULL)
-            ++it->it_index;
-        return item;
-    }
-
-    Py_DECREF(seq);
-    it->it_seq = NULL;
-    return NULL;
-}
-
-static PyObject *
-bytesarrayiter_length_hint(bytesiterobject *it)
-{
-    Py_ssize_t len = 0;
-    if (it->it_seq)
-        len = PyByteArray_GET_SIZE(it->it_seq) - it->it_index;
-    return PyInt_FromSsize_t(len);
-}
-
-PyDoc_STRVAR(length_hint_doc,
-    "Private method returning an estimate of len(list(it)).");
-
-static PyMethodDef bytearrayiter_methods[] = {
-    {"__length_hint__", (PyCFunction)bytesarrayiter_length_hint, METH_NOARGS,
-     length_hint_doc},
-    {NULL, NULL} /* sentinel */
-};
-
-PyTypeObject PyByteArrayIter_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "bytearray_iterator",              /* tp_name */
-    sizeof(bytesiterobject),           /* tp_basicsize */
-    0,                                 /* tp_itemsize */
-    /* methods */
-    (destructor)bytearrayiter_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 */
-    PyObject_GenericGetAttr,           /* tp_getattro */
-    0,                                 /* tp_setattro */
-    0,                                 /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */
-    0,                                 /* tp_doc */
-    (traverseproc)bytearrayiter_traverse,  /* tp_traverse */
-    0,                                 /* tp_clear */
-    0,                                 /* tp_richcompare */
-    0,                                 /* tp_weaklistoffset */
-    PyObject_SelfIter,                 /* tp_iter */
-    (iternextfunc)bytearrayiter_next,  /* tp_iternext */
-    bytearrayiter_methods,             /* tp_methods */
-    0,
-};
-
-static PyObject *
-bytearray_iter(PyObject *seq)
-{
-    bytesiterobject *it;
-
-    if (!PyByteArray_Check(seq)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    it = PyObject_GC_New(bytesiterobject, &PyByteArrayIter_Type);
-    if (it == NULL)
-        return NULL;
-    it->it_index = 0;
-    Py_INCREF(seq);
-    it->it_seq = (PyByteArrayObject *)seq;
-    _PyObject_GC_TRACK(it);
-    return (PyObject *)it;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/bytes_methods.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/bytes_methods.c
deleted file mode 100644
index 28f78cb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/bytes_methods.c
+++ /dev/null
@@ -1,398 +0,0 @@
-#include "Python.h"
-#include "bytes_methods.h"
-
-PyDoc_STRVAR_shared(_Py_isspace__doc__,
-"B.isspace() -> bool\n\
-\n\
-Return True if all characters in B are whitespace\n\
-and there is at least one character in B, False otherwise.");
-
-PyObject*
-_Py_bytes_isspace(const char *cptr, Py_ssize_t len)
-{
-    register const unsigned char *p
-        = (unsigned char *) cptr;
-    register const unsigned char *e;
-
-    /* Shortcut for single character strings */
-    if (len == 1 && Py_ISSPACE(*p))
-        Py_RETURN_TRUE;
-
-    /* Special case for empty strings */
-    if (len == 0)
-        Py_RETURN_FALSE;
-
-    e = p + len;
-    for (; p < e; p++) {
-        if (!Py_ISSPACE(*p))
-            Py_RETURN_FALSE;
-    }
-    Py_RETURN_TRUE;
-}
-
-
-PyDoc_STRVAR_shared(_Py_isalpha__doc__,
-"B.isalpha() -> bool\n\
-\n\
-Return True if all characters in B are alphabetic\n\
-and there is at least one character in B, False otherwise.");
-
-PyObject*
-_Py_bytes_isalpha(const char *cptr, Py_ssize_t len)
-{
-    register const unsigned char *p
-        = (unsigned char *) cptr;
-    register const unsigned char *e;
-
-    /* Shortcut for single character strings */
-    if (len == 1 && Py_ISALPHA(*p))
-        Py_RETURN_TRUE;
-
-    /* Special case for empty strings */
-    if (len == 0)
-        Py_RETURN_FALSE;
-
-    e = p + len;
-    for (; p < e; p++) {
-        if (!Py_ISALPHA(*p))
-            Py_RETURN_FALSE;
-    }
-    Py_RETURN_TRUE;
-}
-
-
-PyDoc_STRVAR_shared(_Py_isalnum__doc__,
-"B.isalnum() -> bool\n\
-\n\
-Return True if all characters in B are alphanumeric\n\
-and there is at least one character in B, False otherwise.");
-
-PyObject*
-_Py_bytes_isalnum(const char *cptr, Py_ssize_t len)
-{
-    register const unsigned char *p
-        = (unsigned char *) cptr;
-    register const unsigned char *e;
-
-    /* Shortcut for single character strings */
-    if (len == 1 && Py_ISALNUM(*p))
-        Py_RETURN_TRUE;
-
-    /* Special case for empty strings */
-    if (len == 0)
-        Py_RETURN_FALSE;
-
-    e = p + len;
-    for (; p < e; p++) {
-        if (!Py_ISALNUM(*p))
-            Py_RETURN_FALSE;
-    }
-    Py_RETURN_TRUE;
-}
-
-
-PyDoc_STRVAR_shared(_Py_isdigit__doc__,
-"B.isdigit() -> bool\n\
-\n\
-Return True if all characters in B are digits\n\
-and there is at least one character in B, False otherwise.");
-
-PyObject*
-_Py_bytes_isdigit(const char *cptr, Py_ssize_t len)
-{
-    register const unsigned char *p
-        = (unsigned char *) cptr;
-    register const unsigned char *e;
-
-    /* Shortcut for single character strings */
-    if (len == 1 && Py_ISDIGIT(*p))
-        Py_RETURN_TRUE;
-
-    /* Special case for empty strings */
-    if (len == 0)
-        Py_RETURN_FALSE;
-
-    e = p + len;
-    for (; p < e; p++) {
-        if (!Py_ISDIGIT(*p))
-            Py_RETURN_FALSE;
-    }
-    Py_RETURN_TRUE;
-}
-
-
-PyDoc_STRVAR_shared(_Py_islower__doc__,
-"B.islower() -> bool\n\
-\n\
-Return True if all cased characters in B are lowercase and there is\n\
-at least one cased character in B, False otherwise.");
-
-PyObject*
-_Py_bytes_islower(const char *cptr, Py_ssize_t len)
-{
-    register const unsigned char *p
-        = (unsigned char *) cptr;
-    register const unsigned char *e;
-    int cased;
-
-    /* Shortcut for single character strings */
-    if (len == 1)
-        return PyBool_FromLong(Py_ISLOWER(*p));
-
-    /* Special case for empty strings */
-    if (len == 0)
-        Py_RETURN_FALSE;
-
-    e = p + len;
-    cased = 0;
-    for (; p < e; p++) {
-        if (Py_ISUPPER(*p))
-            Py_RETURN_FALSE;
-        else if (!cased && Py_ISLOWER(*p))
-            cased = 1;
-    }
-    return PyBool_FromLong(cased);
-}
-
-
-PyDoc_STRVAR_shared(_Py_isupper__doc__,
-"B.isupper() -> bool\n\
-\n\
-Return True if all cased characters in B are uppercase and there is\n\
-at least one cased character in B, False otherwise.");
-
-PyObject*
-_Py_bytes_isupper(const char *cptr, Py_ssize_t len)
-{
-    register const unsigned char *p
-        = (unsigned char *) cptr;
-    register const unsigned char *e;
-    int cased;
-
-    /* Shortcut for single character strings */
-    if (len == 1)
-        return PyBool_FromLong(Py_ISUPPER(*p));
-
-    /* Special case for empty strings */
-    if (len == 0)
-        Py_RETURN_FALSE;
-
-    e = p + len;
-    cased = 0;
-    for (; p < e; p++) {
-        if (Py_ISLOWER(*p))
-            Py_RETURN_FALSE;
-        else if (!cased && Py_ISUPPER(*p))
-            cased = 1;
-    }
-    return PyBool_FromLong(cased);
-}
-
-
-PyDoc_STRVAR_shared(_Py_istitle__doc__,
-"B.istitle() -> bool\n\
-\n\
-Return True if B is a titlecased string and there is at least one\n\
-character in B, i.e. uppercase characters may only follow uncased\n\
-characters and lowercase characters only cased ones. Return False\n\
-otherwise.");
-
-PyObject*
-_Py_bytes_istitle(const char *cptr, Py_ssize_t len)
-{
-    register const unsigned char *p
-        = (unsigned char *) cptr;
-    register const unsigned char *e;
-    int cased, previous_is_cased;
-
-    /* Shortcut for single character strings */
-    if (len == 1)
-        return PyBool_FromLong(Py_ISUPPER(*p));
-
-    /* Special case for empty strings */
-    if (len == 0)
-        Py_RETURN_FALSE;
-
-    e = p + len;
-    cased = 0;
-    previous_is_cased = 0;
-    for (; p < e; p++) {
-        register const unsigned char ch = *p;
-
-        if (Py_ISUPPER(ch)) {
-            if (previous_is_cased)
-                Py_RETURN_FALSE;
-            previous_is_cased = 1;
-            cased = 1;
-        }
-        else if (Py_ISLOWER(ch)) {
-            if (!previous_is_cased)
-                Py_RETURN_FALSE;
-            previous_is_cased = 1;
-            cased = 1;
-        }
-        else
-            previous_is_cased = 0;
-    }
-    return PyBool_FromLong(cased);
-}
-
-
-PyDoc_STRVAR_shared(_Py_lower__doc__,
-"B.lower() -> copy of B\n\
-\n\
-Return a copy of B with all ASCII characters converted to lowercase.");
-
-void
-_Py_bytes_lower(char *result, const char *cptr, Py_ssize_t len)
-{
-        Py_ssize_t i;
-
-        /*
-        newobj = PyString_FromStringAndSize(NULL, len);
-        if (!newobj)
-                return NULL;
-
-        s = PyString_AS_STRING(newobj);
-        */
-
-        Py_MEMCPY(result, cptr, len);
-
-        for (i = 0; i < len; i++) {
-                int c = Py_CHARMASK(result[i]);
-                if (Py_ISUPPER(c))
-                        result[i] = Py_TOLOWER(c);
-        }
-}
-
-
-PyDoc_STRVAR_shared(_Py_upper__doc__,
-"B.upper() -> copy of B\n\
-\n\
-Return a copy of B with all ASCII characters converted to uppercase.");
-
-void
-_Py_bytes_upper(char *result, const char *cptr, Py_ssize_t len)
-{
-        Py_ssize_t i;
-
-        /*
-        newobj = PyString_FromStringAndSize(NULL, len);
-        if (!newobj)
-                return NULL;
-
-        s = PyString_AS_STRING(newobj);
-        */
-
-        Py_MEMCPY(result, cptr, len);
-
-        for (i = 0; i < len; i++) {
-                int c = Py_CHARMASK(result[i]);
-                if (Py_ISLOWER(c))
-                        result[i] = Py_TOUPPER(c);
-        }
-}
-
-
-PyDoc_STRVAR_shared(_Py_title__doc__,
-"B.title() -> copy of B\n\
-\n\
-Return a titlecased version of B, i.e. ASCII words start with uppercase\n\
-characters, all remaining cased characters have lowercase.");
-
-void
-_Py_bytes_title(char *result, char *s, Py_ssize_t len)
-{
-        Py_ssize_t i;
-        int previous_is_cased = 0;
-
-        /*
-        newobj = PyString_FromStringAndSize(NULL, len);
-        if (newobj == NULL)
-                return NULL;
-        s_new = PyString_AsString(newobj);
-        */
-        for (i = 0; i < len; i++) {
-                int c = Py_CHARMASK(*s++);
-                if (Py_ISLOWER(c)) {
-                        if (!previous_is_cased)
-                            c = Py_TOUPPER(c);
-                        previous_is_cased = 1;
-                } else if (Py_ISUPPER(c)) {
-                        if (previous_is_cased)
-                            c = Py_TOLOWER(c);
-                        previous_is_cased = 1;
-                } else
-                        previous_is_cased = 0;
-                *result++ = c;
-        }
-}
-
-
-PyDoc_STRVAR_shared(_Py_capitalize__doc__,
-"B.capitalize() -> copy of B\n\
-\n\
-Return a copy of B with only its first character capitalized (ASCII)\n\
-and the rest lower-cased.");
-
-void
-_Py_bytes_capitalize(char *result, char *s, Py_ssize_t len)
-{
-        Py_ssize_t i;
-
-        /*
-        newobj = PyString_FromStringAndSize(NULL, len);
-        if (newobj == NULL)
-                return NULL;
-        s_new = PyString_AsString(newobj);
-        */
-        if (0 < len) {
-                int c = Py_CHARMASK(*s++);
-                if (Py_ISLOWER(c))
-                        *result = Py_TOUPPER(c);
-                else
-                        *result = c;
-                result++;
-        }
-        for (i = 1; i < len; i++) {
-                int c = Py_CHARMASK(*s++);
-                if (Py_ISUPPER(c))
-                        *result = Py_TOLOWER(c);
-                else
-                        *result = c;
-                result++;
-        }
-}
-
-
-PyDoc_STRVAR_shared(_Py_swapcase__doc__,
-"B.swapcase() -> copy of B\n\
-\n\
-Return a copy of B with uppercase ASCII characters converted\n\
-to lowercase ASCII and vice versa.");
-
-void
-_Py_bytes_swapcase(char *result, char *s, Py_ssize_t len)
-{
-        Py_ssize_t i;
-
-        /*
-        newobj = PyString_FromStringAndSize(NULL, len);
-        if (newobj == NULL)
-                return NULL;
-        s_new = PyString_AsString(newobj);
-        */
-        for (i = 0; i < len; i++) {
-                int c = Py_CHARMASK(*s++);
-                if (Py_ISLOWER(c)) {
-                        *result = Py_TOUPPER(c);
-                }
-                else if (Py_ISUPPER(c)) {
-                        *result = Py_TOLOWER(c);
-                }
-                else
-                        *result = c;
-                result++;
-        }
-}
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/capsule.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/capsule.c
deleted file mode 100644
index f7f2e04..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/capsule.c
+++ /dev/null
@@ -1,324 +0,0 @@
-/* Wrap void * pointers to be passed between C modules */
-
-#include "Python.h"
-
-/* Internal structure of PyCapsule */
-typedef struct {
-    PyObject_HEAD
-    void *pointer;
-    const char *name;
-    void *context;
-    PyCapsule_Destructor destructor;
-} PyCapsule;
-
-
-
-static int
-_is_legal_capsule(PyCapsule *capsule, const char *invalid_capsule)
-{
-    if (!capsule || !PyCapsule_CheckExact(capsule) || capsule->pointer == NULL) {
-        PyErr_SetString(PyExc_ValueError, invalid_capsule);
-        return 0;
-    }
-    return 1;
-}
-
-#define is_legal_capsule(capsule, name) \
-    (_is_legal_capsule(capsule, \
-     name " called with invalid PyCapsule object"))
-
-
-static int
-name_matches(const char *name1, const char *name2) {
-    /* if either is NULL, */
-    if (!name1 || !name2) {
-        /* they're only the same if they're both NULL. */
-        return name1 == name2;
-    }
-    return !strcmp(name1, name2);
-}
-
-
-
-PyObject *
-PyCapsule_New(void *pointer, const char *name, PyCapsule_Destructor destructor)
-{
-    PyCapsule *capsule;
-
-    if (!pointer) {
-        PyErr_SetString(PyExc_ValueError, "PyCapsule_New called with null pointer");
-        return NULL;
-    }
-
-    capsule = PyObject_NEW(PyCapsule, &PyCapsule_Type);
-    if (capsule == NULL) {
-        return NULL;
-    }
-
-    capsule->pointer = pointer;
-    capsule->name = name;
-    capsule->context = NULL;
-    capsule->destructor = destructor;
-
-    return (PyObject *)capsule;
-}
-
-
-int
-PyCapsule_IsValid(PyObject *o, const char *name)
-{
-    PyCapsule *capsule = (PyCapsule *)o;
-
-    return (capsule != NULL &&
-            PyCapsule_CheckExact(capsule) &&
-            capsule->pointer != NULL &&
-            name_matches(capsule->name, name));
-}
-
-
-void *
-PyCapsule_GetPointer(PyObject *o, const char *name)
-{
-    PyCapsule *capsule = (PyCapsule *)o;
-
-    if (!is_legal_capsule(capsule, "PyCapsule_GetPointer")) {
-        return NULL;
-    }
-
-    if (!name_matches(name, capsule->name)) {
-        PyErr_SetString(PyExc_ValueError, "PyCapsule_GetPointer called with incorrect name");
-        return NULL;
-    }
-
-    return capsule->pointer;
-}
-
-
-const char *
-PyCapsule_GetName(PyObject *o)
-{
-    PyCapsule *capsule = (PyCapsule *)o;
-
-    if (!is_legal_capsule(capsule, "PyCapsule_GetName")) {
-        return NULL;
-    }
-    return capsule->name;
-}
-
-
-PyCapsule_Destructor
-PyCapsule_GetDestructor(PyObject *o)
-{
-    PyCapsule *capsule = (PyCapsule *)o;
-
-    if (!is_legal_capsule(capsule, "PyCapsule_GetDestructor")) {
-        return NULL;
-    }
-    return capsule->destructor;
-}
-
-
-void *
-PyCapsule_GetContext(PyObject *o)
-{
-    PyCapsule *capsule = (PyCapsule *)o;
-
-    if (!is_legal_capsule(capsule, "PyCapsule_GetContext")) {
-        return NULL;
-    }
-    return capsule->context;
-}
-
-
-int
-PyCapsule_SetPointer(PyObject *o, void *pointer)
-{
-    PyCapsule *capsule = (PyCapsule *)o;
-
-    if (!pointer) {
-        PyErr_SetString(PyExc_ValueError, "PyCapsule_SetPointer called with null pointer");
-        return -1;
-    }
-
-    if (!is_legal_capsule(capsule, "PyCapsule_SetPointer")) {
-        return -1;
-    }
-
-    capsule->pointer = pointer;
-    return 0;
-}
-
-
-int
-PyCapsule_SetName(PyObject *o, const char *name)
-{
-    PyCapsule *capsule = (PyCapsule *)o;
-
-    if (!is_legal_capsule(capsule, "PyCapsule_SetName")) {
-        return -1;
-    }
-
-    capsule->name = name;
-    return 0;
-}
-
-
-int
-PyCapsule_SetDestructor(PyObject *o, PyCapsule_Destructor destructor)
-{
-    PyCapsule *capsule = (PyCapsule *)o;
-
-    if (!is_legal_capsule(capsule, "PyCapsule_SetDestructor")) {
-        return -1;
-    }
-
-    capsule->destructor = destructor;
-    return 0;
-}
-
-
-int
-PyCapsule_SetContext(PyObject *o, void *context)
-{
-    PyCapsule *capsule = (PyCapsule *)o;
-
-    if (!is_legal_capsule(capsule, "PyCapsule_SetContext")) {
-        return -1;
-    }
-
-    capsule->context = context;
-    return 0;
-}
-
-
-void *
-PyCapsule_Import(const char *name, int no_block)
-{
-    PyObject *object = NULL;
-    void *return_value = NULL;
-    char *trace;
-    size_t name_length = (strlen(name) + 1) * sizeof(char);
-    char *name_dup = (char *)PyMem_MALLOC(name_length);
-
-    if (!name_dup) {
-        return NULL;
-    }
-
-    memcpy(name_dup, name, name_length);
-
-    trace = name_dup;
-    while (trace) {
-        char *dot = strchr(trace, '.');
-        if (dot) {
-            *dot++ = '\0';
-        }
-
-        if (object == NULL) {
-            if (no_block) {
-                object = PyImport_ImportModuleNoBlock(trace);
-            } else {
-                object = PyImport_ImportModule(trace);
-                if (!object) {
-                    PyErr_Format(PyExc_ImportError, "PyCapsule_Import could not import module \"%s\"", trace);
-                }
-            }
-        } else {
-            PyObject *object2 = PyObject_GetAttrString(object, trace);
-            Py_DECREF(object);
-            object = object2;
-        }
-        if (!object) {
-            goto EXIT;
-        }
-
-        trace = dot;
-    }
-
-    /* compare attribute name to module.name by hand */
-    if (PyCapsule_IsValid(object, name)) {
-        PyCapsule *capsule = (PyCapsule *)object;
-        return_value = capsule->pointer;
-    } else {
-        PyErr_Format(PyExc_AttributeError,
-            "PyCapsule_Import \"%s\" is not valid",
-            name);
-    }
-
-EXIT:
-    Py_XDECREF(object);
-    if (name_dup) {
-        PyMem_FREE(name_dup);
-    }
-    return return_value;
-}
-
-
-static void
-capsule_dealloc(PyObject *o)
-{
-    PyCapsule *capsule = (PyCapsule *)o;
-    if (capsule->destructor) {
-        capsule->destructor(o);
-    }
-    PyObject_DEL(o);
-}
-
-
-static PyObject *
-capsule_repr(PyObject *o)
-{
-    PyCapsule *capsule = (PyCapsule *)o;
-    const char *name;
-    const char *quote;
-
-    if (capsule->name) {
-        quote = "\"";
-        name = capsule->name;
-    } else {
-        quote = "";
-        name = "NULL";
-    }
-
-    return PyString_FromFormat("<capsule object %s%s%s at %p>",
-        quote, name, quote, capsule);
-}
-
-
-
-PyDoc_STRVAR(PyCapsule_Type__doc__,
-"Capsule objects let you wrap a C \"void *\" pointer in a Python\n\
-object.  They're a way of passing data through the Python interpreter\n\
-without creating your own custom type.\n\
-\n\
-Capsules are used for communication between extension modules.\n\
-They provide a way for an extension module to export a C interface\n\
-to other extension modules, so that extension modules can use the\n\
-Python import mechanism to link to one another.\n\
-");
-
-PyTypeObject PyCapsule_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "PyCapsule",		/*tp_name*/
-    sizeof(PyCapsule),		/*tp_basicsize*/
-    0,				/*tp_itemsize*/
-    /* methods */
-    capsule_dealloc, /*tp_dealloc*/
-    0,				/*tp_print*/
-    0,				/*tp_getattr*/
-    0,				/*tp_setattr*/
-    0,				/*tp_reserved*/
-    capsule_repr, /*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*/
-    0,				/*tp_flags*/
-    PyCapsule_Type__doc__	/*tp_doc*/
-};
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/cellobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/cellobject.c
deleted file mode 100644
index 463f7b1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/cellobject.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/* Cell object implementation */
-
-#include "Python.h"
-
-PyObject *
-PyCell_New(PyObject *obj)
-{
-    PyCellObject *op;
-
-    op = (PyCellObject *)PyObject_GC_New(PyCellObject, &PyCell_Type);
-    if (op == NULL)
-        return NULL;
-    op->ob_ref = obj;
-    Py_XINCREF(obj);
-
-    _PyObject_GC_TRACK(op);
-    return (PyObject *)op;
-}
-
-PyObject *
-PyCell_Get(PyObject *op)
-{
-    if (!PyCell_Check(op)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    Py_XINCREF(((PyCellObject*)op)->ob_ref);
-    return PyCell_GET(op);
-}
-
-int
-PyCell_Set(PyObject *op, PyObject *obj)
-{
-    PyObject* oldobj;
-    if (!PyCell_Check(op)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    oldobj = PyCell_GET(op);
-    Py_XINCREF(obj);
-    PyCell_SET(op, obj);
-    Py_XDECREF(oldobj);
-    return 0;
-}
-
-static void
-cell_dealloc(PyCellObject *op)
-{
-    _PyObject_GC_UNTRACK(op);
-    Py_XDECREF(op->ob_ref);
-    PyObject_GC_Del(op);
-}
-
-static int
-cell_compare(PyCellObject *a, PyCellObject *b)
-{
-    /* Py3K warning for comparisons  */
-    if (PyErr_WarnPy3k("cell comparisons not supported in 3.x",
-                       1) < 0) {
-        return -2;
-    }
-
-    if (a->ob_ref == NULL) {
-        if (b->ob_ref == NULL)
-            return 0;
-        return -1;
-    } else if (b->ob_ref == NULL)
-        return 1;
-    return PyObject_Compare(a->ob_ref, b->ob_ref);
-}
-
-static PyObject *
-cell_repr(PyCellObject *op)
-{
-    if (op->ob_ref == NULL)
-        return PyString_FromFormat("<cell at %p: empty>", op);
-
-    return PyString_FromFormat("<cell at %p: %.80s object at %p>",
-                               op, op->ob_ref->ob_type->tp_name,
-                               op->ob_ref);
-}
-
-static int
-cell_traverse(PyCellObject *op, visitproc visit, void *arg)
-{
-    Py_VISIT(op->ob_ref);
-    return 0;
-}
-
-static int
-cell_clear(PyCellObject *op)
-{
-    Py_CLEAR(op->ob_ref);
-    return 0;
-}
-
-static PyObject *
-cell_get_contents(PyCellObject *op, void *closure)
-{
-    if (op->ob_ref == NULL)
-    {
-        PyErr_SetString(PyExc_ValueError, "Cell is empty");
-        return NULL;
-    }
-    Py_INCREF(op->ob_ref);
-    return op->ob_ref;
-}
-
-static PyGetSetDef cell_getsetlist[] = {
-    {"cell_contents", (getter)cell_get_contents, NULL},
-    {NULL} /* sentinel */
-};
-
-PyTypeObject PyCell_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "cell",
-    sizeof(PyCellObject),
-    0,
-    (destructor)cell_dealloc,               /* tp_dealloc */
-    0,                                      /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    (cmpfunc)cell_compare,                      /* tp_compare */
-    (reprfunc)cell_repr,                        /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)cell_traverse,                /* tp_traverse */
-    (inquiry)cell_clear,                        /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    0,                                          /* tp_members */
-    cell_getsetlist,                            /* tp_getset */
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/classobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/classobject.c
deleted file mode 100644
index 0066eb4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/classobject.c
+++ /dev/null
@@ -1,2672 +0,0 @@
-
-/* Class object implementation */
-
-#include "Python.h"
-#include "structmember.h"
-
-/* Free list for method objects to safe malloc/free overhead
- * The im_self element is used to chain the elements.
- */
-static PyMethodObject *free_list;
-static int numfree = 0;
-#ifndef PyMethod_MAXFREELIST
-#define PyMethod_MAXFREELIST 256
-#endif
-
-#define TP_DESCR_GET(t) \
-    (PyType_HasFeature(t, Py_TPFLAGS_HAVE_CLASS) ? (t)->tp_descr_get : NULL)
-
-/* Forward */
-static PyObject *class_lookup(PyClassObject *, PyObject *,
-                              PyClassObject **);
-static PyObject *instance_getattr1(PyInstanceObject *, PyObject *);
-static PyObject *instance_getattr2(PyInstanceObject *, PyObject *);
-
-static PyObject *getattrstr, *setattrstr, *delattrstr;
-
-
-PyObject *
-PyClass_New(PyObject *bases, PyObject *dict, PyObject *name)
-     /* bases is NULL or tuple of classobjects! */
-{
-    PyClassObject *op, *dummy;
-    static PyObject *docstr, *modstr, *namestr;
-    if (docstr == NULL) {
-        docstr= PyString_InternFromString("__doc__");
-        if (docstr == NULL)
-            return NULL;
-    }
-    if (modstr == NULL) {
-        modstr= PyString_InternFromString("__module__");
-        if (modstr == NULL)
-            return NULL;
-    }
-    if (namestr == NULL) {
-        namestr= PyString_InternFromString("__name__");
-        if (namestr == NULL)
-            return NULL;
-    }
-    if (name == NULL || !PyString_Check(name)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "PyClass_New: name must be a string");
-        return NULL;
-    }
-    if (dict == NULL || !PyDict_Check(dict)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "PyClass_New: dict must be a dictionary");
-        return NULL;
-    }
-    if (PyDict_GetItem(dict, docstr) == NULL) {
-        if (PyDict_SetItem(dict, docstr, Py_None) < 0)
-            return NULL;
-    }
-    if (PyDict_GetItem(dict, modstr) == NULL) {
-        PyObject *globals = PyEval_GetGlobals();
-        if (globals != NULL) {
-            PyObject *modname = PyDict_GetItem(globals, namestr);
-            if (modname != NULL) {
-                if (PyDict_SetItem(dict, modstr, modname) < 0)
-                    return NULL;
-            }
-        }
-    }
-    if (bases == NULL) {
-        bases = PyTuple_New(0);
-        if (bases == NULL)
-            return NULL;
-    }
-    else {
-        Py_ssize_t i, n;
-        PyObject *base;
-        if (!PyTuple_Check(bases)) {
-            PyErr_SetString(PyExc_TypeError,
-                            "PyClass_New: bases must be a tuple");
-            return NULL;
-        }
-        n = PyTuple_Size(bases);
-        for (i = 0; i < n; i++) {
-            base = PyTuple_GET_ITEM(bases, i);
-            if (!PyClass_Check(base)) {
-                if (PyCallable_Check(
-                    (PyObject *) base->ob_type))
-                    return PyObject_CallFunctionObjArgs(
-                        (PyObject *) base->ob_type,
-                        name, bases, dict, NULL);
-                PyErr_SetString(PyExc_TypeError,
-                    "PyClass_New: base must be a class");
-                return NULL;
-            }
-        }
-        Py_INCREF(bases);
-    }
-
-    if (getattrstr == NULL) {
-        getattrstr = PyString_InternFromString("__getattr__");
-        if (getattrstr == NULL)
-            goto alloc_error;
-        setattrstr = PyString_InternFromString("__setattr__");
-        if (setattrstr == NULL)
-            goto alloc_error;
-        delattrstr = PyString_InternFromString("__delattr__");
-        if (delattrstr == NULL)
-            goto alloc_error;
-    }
-
-    op = PyObject_GC_New(PyClassObject, &PyClass_Type);
-    if (op == NULL) {
-alloc_error:
-        Py_DECREF(bases);
-        return NULL;
-    }
-    op->cl_bases = bases;
-    Py_INCREF(dict);
-    op->cl_dict = dict;
-    Py_XINCREF(name);
-    op->cl_name = name;
-    op->cl_weakreflist = NULL;
-
-    op->cl_getattr = class_lookup(op, getattrstr, &dummy);
-    op->cl_setattr = class_lookup(op, setattrstr, &dummy);
-    op->cl_delattr = class_lookup(op, delattrstr, &dummy);
-    Py_XINCREF(op->cl_getattr);
-    Py_XINCREF(op->cl_setattr);
-    Py_XINCREF(op->cl_delattr);
-    _PyObject_GC_TRACK(op);
-    return (PyObject *) op;
-}
-
-PyObject *
-PyMethod_Function(PyObject *im)
-{
-    if (!PyMethod_Check(im)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return ((PyMethodObject *)im)->im_func;
-}
-
-PyObject *
-PyMethod_Self(PyObject *im)
-{
-    if (!PyMethod_Check(im)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return ((PyMethodObject *)im)->im_self;
-}
-
-PyObject *
-PyMethod_Class(PyObject *im)
-{
-    if (!PyMethod_Check(im)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return ((PyMethodObject *)im)->im_class;
-}
-
-PyDoc_STRVAR(class_doc,
-"classobj(name, bases, dict)\n\
-\n\
-Create a class object.  The name must be a string; the second argument\n\
-a tuple of classes, and the third a dictionary.");
-
-static PyObject *
-class_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *name, *bases, *dict;
-    static char *kwlist[] = {"name", "bases", "dict", 0};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "SOO", kwlist,
-                                     &name, &bases, &dict))
-        return NULL;
-    return PyClass_New(bases, dict, name);
-}
-
-/* Class methods */
-
-static void
-class_dealloc(PyClassObject *op)
-{
-    _PyObject_GC_UNTRACK(op);
-    if (op->cl_weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) op);
-    Py_DECREF(op->cl_bases);
-    Py_DECREF(op->cl_dict);
-    Py_XDECREF(op->cl_name);
-    Py_XDECREF(op->cl_getattr);
-    Py_XDECREF(op->cl_setattr);
-    Py_XDECREF(op->cl_delattr);
-    PyObject_GC_Del(op);
-}
-
-static PyObject *
-class_lookup(PyClassObject *cp, PyObject *name, PyClassObject **pclass)
-{
-    Py_ssize_t i, n;
-    PyObject *value = PyDict_GetItem(cp->cl_dict, name);
-    if (value != NULL) {
-        *pclass = cp;
-        return value;
-    }
-    n = PyTuple_Size(cp->cl_bases);
-    for (i = 0; i < n; i++) {
-        /* XXX What if one of the bases is not a class? */
-        PyObject *v = class_lookup(
-            (PyClassObject *)
-            PyTuple_GetItem(cp->cl_bases, i), name, pclass);
-        if (v != NULL)
-            return v;
-    }
-    return NULL;
-}
-
-static PyObject *
-class_getattr(register PyClassObject *op, PyObject *name)
-{
-    register PyObject *v;
-    register char *sname = PyString_AsString(name);
-    PyClassObject *klass;
-    descrgetfunc f;
-
-    if (sname[0] == '_' && sname[1] == '_') {
-        if (strcmp(sname, "__dict__") == 0) {
-            if (PyEval_GetRestricted()) {
-                PyErr_SetString(PyExc_RuntimeError,
-               "class.__dict__ not accessible in restricted mode");
-                return NULL;
-            }
-            Py_INCREF(op->cl_dict);
-            return op->cl_dict;
-        }
-        if (strcmp(sname, "__bases__") == 0) {
-            Py_INCREF(op->cl_bases);
-            return op->cl_bases;
-        }
-        if (strcmp(sname, "__name__") == 0) {
-            if (op->cl_name == NULL)
-                v = Py_None;
-            else
-                v = op->cl_name;
-            Py_INCREF(v);
-            return v;
-        }
-    }
-    v = class_lookup(op, name, &klass);
-    if (v == NULL) {
-        PyErr_Format(PyExc_AttributeError,
-                     "class %.50s has no attribute '%.400s'",
-                     PyString_AS_STRING(op->cl_name), sname);
-        return NULL;
-    }
-    f = TP_DESCR_GET(v->ob_type);
-    if (f == NULL)
-        Py_INCREF(v);
-    else
-        v = f(v, (PyObject *)NULL, (PyObject *)op);
-    return v;
-}
-
-static void
-set_slot(PyObject **slot, PyObject *v)
-{
-    PyObject *temp = *slot;
-    Py_XINCREF(v);
-    *slot = v;
-    Py_XDECREF(temp);
-}
-
-static void
-set_attr_slots(PyClassObject *c)
-{
-    PyClassObject *dummy;
-
-    set_slot(&c->cl_getattr, class_lookup(c, getattrstr, &dummy));
-    set_slot(&c->cl_setattr, class_lookup(c, setattrstr, &dummy));
-    set_slot(&c->cl_delattr, class_lookup(c, delattrstr, &dummy));
-}
-
-static char *
-set_dict(PyClassObject *c, PyObject *v)
-{
-    if (v == NULL || !PyDict_Check(v))
-        return "__dict__ must be a dictionary object";
-    set_slot(&c->cl_dict, v);
-    set_attr_slots(c);
-    return "";
-}
-
-static char *
-set_bases(PyClassObject *c, PyObject *v)
-{
-    Py_ssize_t i, n;
-
-    if (v == NULL || !PyTuple_Check(v))
-        return "__bases__ must be a tuple object";
-    n = PyTuple_Size(v);
-    for (i = 0; i < n; i++) {
-        PyObject *x = PyTuple_GET_ITEM(v, i);
-        if (!PyClass_Check(x))
-            return "__bases__ items must be classes";
-        if (PyClass_IsSubclass(x, (PyObject *)c))
-            return "a __bases__ item causes an inheritance cycle";
-    }
-    set_slot(&c->cl_bases, v);
-    set_attr_slots(c);
-    return "";
-}
-
-static char *
-set_name(PyClassObject *c, PyObject *v)
-{
-    if (v == NULL || !PyString_Check(v))
-        return "__name__ must be a string object";
-    if (strlen(PyString_AS_STRING(v)) != (size_t)PyString_GET_SIZE(v))
-        return "__name__ must not contain null bytes";
-    set_slot(&c->cl_name, v);
-    return "";
-}
-
-static int
-class_setattr(PyClassObject *op, PyObject *name, PyObject *v)
-{
-    char *sname;
-    if (PyEval_GetRestricted()) {
-        PyErr_SetString(PyExc_RuntimeError,
-                   "classes are read-only in restricted mode");
-        return -1;
-    }
-    sname = PyString_AsString(name);
-    if (sname[0] == '_' && sname[1] == '_') {
-        Py_ssize_t n = PyString_Size(name);
-        if (sname[n-1] == '_' && sname[n-2] == '_') {
-            char *err = NULL;
-            if (strcmp(sname, "__dict__") == 0)
-                err = set_dict(op, v);
-            else if (strcmp(sname, "__bases__") == 0)
-                err = set_bases(op, v);
-            else if (strcmp(sname, "__name__") == 0)
-                err = set_name(op, v);
-            else if (strcmp(sname, "__getattr__") == 0)
-                set_slot(&op->cl_getattr, v);
-            else if (strcmp(sname, "__setattr__") == 0)
-                set_slot(&op->cl_setattr, v);
-            else if (strcmp(sname, "__delattr__") == 0)
-                set_slot(&op->cl_delattr, v);
-            /* For the last three, we fall through to update the
-               dictionary as well. */
-            if (err != NULL) {
-                if (*err == '\0')
-                    return 0;
-                PyErr_SetString(PyExc_TypeError, err);
-                return -1;
-            }
-        }
-    }
-    if (v == NULL) {
-        int rv = PyDict_DelItem(op->cl_dict, name);
-        if (rv < 0)
-            PyErr_Format(PyExc_AttributeError,
-                         "class %.50s has no attribute '%.400s'",
-                         PyString_AS_STRING(op->cl_name), sname);
-        return rv;
-    }
-    else
-        return PyDict_SetItem(op->cl_dict, name, v);
-}
-
-static PyObject *
-class_repr(PyClassObject *op)
-{
-    PyObject *mod = PyDict_GetItemString(op->cl_dict, "__module__");
-    char *name;
-    if (op->cl_name == NULL || !PyString_Check(op->cl_name))
-        name = "?";
-    else
-        name = PyString_AsString(op->cl_name);
-    if (mod == NULL || !PyString_Check(mod))
-        return PyString_FromFormat("<class ?.%s at %p>", name, op);
-    else
-        return PyString_FromFormat("<class %s.%s at %p>",
-                                   PyString_AsString(mod),
-                                   name, op);
-}
-
-static PyObject *
-class_str(PyClassObject *op)
-{
-    PyObject *mod = PyDict_GetItemString(op->cl_dict, "__module__");
-    PyObject *name = op->cl_name;
-    PyObject *res;
-    Py_ssize_t m, n;
-
-    if (name == NULL || !PyString_Check(name))
-        return class_repr(op);
-    if (mod == NULL || !PyString_Check(mod)) {
-        Py_INCREF(name);
-        return name;
-    }
-    m = PyString_GET_SIZE(mod);
-    n = PyString_GET_SIZE(name);
-    res = PyString_FromStringAndSize((char *)NULL, m+1+n);
-    if (res != NULL) {
-        char *s = PyString_AS_STRING(res);
-        memcpy(s, PyString_AS_STRING(mod), m);
-        s += m;
-        *s++ = '.';
-        memcpy(s, PyString_AS_STRING(name), n);
-    }
-    return res;
-}
-
-static int
-class_traverse(PyClassObject *o, visitproc visit, void *arg)
-{
-    Py_VISIT(o->cl_bases);
-    Py_VISIT(o->cl_dict);
-    Py_VISIT(o->cl_name);
-    Py_VISIT(o->cl_getattr);
-    Py_VISIT(o->cl_setattr);
-    Py_VISIT(o->cl_delattr);
-    return 0;
-}
-
-PyTypeObject PyClass_Type = {
-    PyObject_HEAD_INIT(&PyType_Type)
-    0,
-    "classobj",
-    sizeof(PyClassObject),
-    0,
-    (destructor)class_dealloc,                  /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)class_repr,                       /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    PyInstance_New,                             /* tp_call */
-    (reprfunc)class_str,                        /* tp_str */
-    (getattrofunc)class_getattr,                /* tp_getattro */
-    (setattrofunc)class_setattr,                /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    class_doc,                                  /* tp_doc */
-    (traverseproc)class_traverse,               /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    offsetof(PyClassObject, cl_weakreflist), /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    0,                                          /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    class_new,                                  /* tp_new */
-};
-
-int
-PyClass_IsSubclass(PyObject *klass, PyObject *base)
-{
-    Py_ssize_t i, n;
-    PyClassObject *cp;
-    if (klass == base)
-        return 1;
-    if (PyTuple_Check(base)) {
-        n = PyTuple_GET_SIZE(base);
-        for (i = 0; i < n; i++) {
-            if (PyClass_IsSubclass(klass, PyTuple_GET_ITEM(base, i)))
-                return 1;
-        }
-        return 0;
-    }
-    if (klass == NULL || !PyClass_Check(klass))
-        return 0;
-    cp = (PyClassObject *)klass;
-    n = PyTuple_Size(cp->cl_bases);
-    for (i = 0; i < n; i++) {
-        if (PyClass_IsSubclass(PyTuple_GetItem(cp->cl_bases, i), base))
-            return 1;
-    }
-    return 0;
-}
-
-
-/* Instance objects */
-
-PyObject *
-PyInstance_NewRaw(PyObject *klass, PyObject *dict)
-{
-    PyInstanceObject *inst;
-
-    if (!PyClass_Check(klass)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    if (dict == NULL) {
-        dict = PyDict_New();
-        if (dict == NULL)
-            return NULL;
-    }
-    else {
-        if (!PyDict_Check(dict)) {
-            PyErr_BadInternalCall();
-            return NULL;
-        }
-        Py_INCREF(dict);
-    }
-    inst = PyObject_GC_New(PyInstanceObject, &PyInstance_Type);
-    if (inst == NULL) {
-        Py_DECREF(dict);
-        return NULL;
-    }
-    inst->in_weakreflist = NULL;
-    Py_INCREF(klass);
-    inst->in_class = (PyClassObject *)klass;
-    inst->in_dict = dict;
-    _PyObject_GC_TRACK(inst);
-    return (PyObject *)inst;
-}
-
-PyObject *
-PyInstance_New(PyObject *klass, PyObject *arg, PyObject *kw)
-{
-    register PyInstanceObject *inst;
-    PyObject *init;
-    static PyObject *initstr;
-
-    if (initstr == NULL) {
-        initstr = PyString_InternFromString("__init__");
-        if (initstr == NULL)
-            return NULL;
-    }
-    inst = (PyInstanceObject *) PyInstance_NewRaw(klass, NULL);
-    if (inst == NULL)
-        return NULL;
-    init = instance_getattr2(inst, initstr);
-    if (init == NULL) {
-        if (PyErr_Occurred()) {
-            Py_DECREF(inst);
-            return NULL;
-        }
-        if ((arg != NULL && (!PyTuple_Check(arg) ||
-                             PyTuple_Size(arg) != 0))
-            || (kw != NULL && (!PyDict_Check(kw) ||
-                              PyDict_Size(kw) != 0))) {
-            PyErr_SetString(PyExc_TypeError,
-                       "this constructor takes no arguments");
-            Py_DECREF(inst);
-            inst = NULL;
-        }
-    }
-    else {
-        PyObject *res = PyEval_CallObjectWithKeywords(init, arg, kw);
-        Py_DECREF(init);
-        if (res == NULL) {
-            Py_DECREF(inst);
-            inst = NULL;
-        }
-        else {
-            if (res != Py_None) {
-                PyErr_SetString(PyExc_TypeError,
-                           "__init__() should return None");
-                Py_DECREF(inst);
-                inst = NULL;
-            }
-            Py_DECREF(res);
-        }
-    }
-    return (PyObject *)inst;
-}
-
-/* Instance methods */
-
-PyDoc_STRVAR(instance_doc,
-"instance(class[, dict])\n\
-\n\
-Create an instance without calling its __init__() method.\n\
-The class must be a classic class.\n\
-If present, dict must be a dictionary or None.");
-
-static PyObject *
-instance_new(PyTypeObject* type, PyObject* args, PyObject *kw)
-{
-    PyObject *klass;
-    PyObject *dict = Py_None;
-
-    if (!PyArg_ParseTuple(args, "O!|O:instance",
-                          &PyClass_Type, &klass, &dict))
-        return NULL;
-
-    if (dict == Py_None)
-        dict = NULL;
-    else if (!PyDict_Check(dict)) {
-        PyErr_SetString(PyExc_TypeError,
-              "instance() second arg must be dictionary or None");
-        return NULL;
-    }
-    return PyInstance_NewRaw(klass, dict);
-}
-
-
-static void
-instance_dealloc(register PyInstanceObject *inst)
-{
-    PyObject *error_type, *error_value, *error_traceback;
-    PyObject *del;
-    static PyObject *delstr;
-
-    _PyObject_GC_UNTRACK(inst);
-    if (inst->in_weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) inst);
-
-    /* Temporarily resurrect the object. */
-    assert(inst->ob_type == &PyInstance_Type);
-    assert(inst->ob_refcnt == 0);
-    inst->ob_refcnt = 1;
-
-    /* Save the current exception, if any. */
-    PyErr_Fetch(&error_type, &error_value, &error_traceback);
-    /* Execute __del__ method, if any. */
-    if (delstr == NULL) {
-        delstr = PyString_InternFromString("__del__");
-        if (delstr == NULL)
-            PyErr_WriteUnraisable((PyObject*)inst);
-    }
-    if (delstr && (del = instance_getattr2(inst, delstr)) != NULL) {
-        PyObject *res = PyEval_CallObject(del, (PyObject *)NULL);
-        if (res == NULL)
-            PyErr_WriteUnraisable(del);
-        else
-            Py_DECREF(res);
-        Py_DECREF(del);
-    }
-    /* Restore the saved exception. */
-    PyErr_Restore(error_type, error_value, error_traceback);
-
-    /* Undo the temporary resurrection; can't use DECREF here, it would
-     * cause a recursive call.
-     */
-    assert(inst->ob_refcnt > 0);
-    if (--inst->ob_refcnt == 0) {
-
-        /* New weakrefs could be created during the finalizer call.
-            If this occurs, clear them out without calling their
-            finalizers since they might rely on part of the object
-            being finalized that has already been destroyed. */
-        while (inst->in_weakreflist != NULL) {
-            _PyWeakref_ClearRef((PyWeakReference *)
-                                (inst->in_weakreflist));
-        }
-
-        Py_DECREF(inst->in_class);
-        Py_XDECREF(inst->in_dict);
-        PyObject_GC_Del(inst);
-    }
-    else {
-        Py_ssize_t refcnt = inst->ob_refcnt;
-        /* __del__ resurrected it!  Make it look like the original
-         * Py_DECREF never happened.
-         */
-        _Py_NewReference((PyObject *)inst);
-        inst->ob_refcnt = refcnt;
-        _PyObject_GC_TRACK(inst);
-        /* If Py_REF_DEBUG, _Py_NewReference bumped _Py_RefTotal, so
-         * we need to undo that. */
-        _Py_DEC_REFTOTAL;
-        /* If Py_TRACE_REFS, _Py_NewReference re-added self to the
-         * object chain, so no more to do there.
-         * If COUNT_ALLOCS, the original decref bumped tp_frees, and
-         * _Py_NewReference bumped tp_allocs: both of those need to be
-         * undone.
-         */
-#ifdef COUNT_ALLOCS
-        --inst->ob_type->tp_frees;
-        --inst->ob_type->tp_allocs;
-#endif
-    }
-}
-
-static PyObject *
-instance_getattr1(register PyInstanceObject *inst, PyObject *name)
-{
-    register PyObject *v;
-    register char *sname = PyString_AsString(name);
-    if (sname[0] == '_' && sname[1] == '_') {
-        if (strcmp(sname, "__dict__") == 0) {
-            if (PyEval_GetRestricted()) {
-                PyErr_SetString(PyExc_RuntimeError,
-            "instance.__dict__ not accessible in restricted mode");
-                return NULL;
-            }
-            Py_INCREF(inst->in_dict);
-            return inst->in_dict;
-        }
-        if (strcmp(sname, "__class__") == 0) {
-            Py_INCREF(inst->in_class);
-            return (PyObject *)inst->in_class;
-        }
-    }
-    v = instance_getattr2(inst, name);
-    if (v == NULL && !PyErr_Occurred()) {
-        PyErr_Format(PyExc_AttributeError,
-                     "%.50s instance has no attribute '%.400s'",
-                     PyString_AS_STRING(inst->in_class->cl_name), sname);
-    }
-    return v;
-}
-
-static PyObject *
-instance_getattr2(register PyInstanceObject *inst, PyObject *name)
-{
-    register PyObject *v;
-    PyClassObject *klass;
-    descrgetfunc f;
-
-    v = PyDict_GetItem(inst->in_dict, name);
-    if (v != NULL) {
-        Py_INCREF(v);
-        return v;
-    }
-    v = class_lookup(inst->in_class, name, &klass);
-    if (v != NULL) {
-        Py_INCREF(v);
-        f = TP_DESCR_GET(v->ob_type);
-        if (f != NULL) {
-            PyObject *w = f(v, (PyObject *)inst,
-                            (PyObject *)(inst->in_class));
-            Py_DECREF(v);
-            v = w;
-        }
-    }
-    return v;
-}
-
-static PyObject *
-instance_getattr(register PyInstanceObject *inst, PyObject *name)
-{
-    register PyObject *func, *res;
-    res = instance_getattr1(inst, name);
-    if (res == NULL && (func = inst->in_class->cl_getattr) != NULL) {
-        PyObject *args;
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return NULL;
-        PyErr_Clear();
-        args = PyTuple_Pack(2, inst, name);
-        if (args == NULL)
-            return NULL;
-        res = PyEval_CallObject(func, args);
-        Py_DECREF(args);
-    }
-    return res;
-}
-
-/* See classobject.h comments:  this only does dict lookups, and is always
- * safe to call.
- */
-PyObject *
-_PyInstance_Lookup(PyObject *pinst, PyObject *name)
-{
-    PyObject *v;
-    PyClassObject *klass;
-    PyInstanceObject *inst;     /* pinst cast to the right type */
-
-    assert(PyInstance_Check(pinst));
-    inst = (PyInstanceObject *)pinst;
-
-    assert(PyString_Check(name));
-
-    v = PyDict_GetItem(inst->in_dict, name);
-    if (v == NULL)
-        v = class_lookup(inst->in_class, name, &klass);
-    return v;
-}
-
-static int
-instance_setattr1(PyInstanceObject *inst, PyObject *name, PyObject *v)
-{
-    if (v == NULL) {
-        int rv = PyDict_DelItem(inst->in_dict, name);
-        if (rv < 0)
-            PyErr_Format(PyExc_AttributeError,
-                         "%.50s instance has no attribute '%.400s'",
-                         PyString_AS_STRING(inst->in_class->cl_name),
-                         PyString_AS_STRING(name));
-        return rv;
-    }
-    else
-        return PyDict_SetItem(inst->in_dict, name, v);
-}
-
-static int
-instance_setattr(PyInstanceObject *inst, PyObject *name, PyObject *v)
-{
-    PyObject *func, *args, *res, *tmp;
-    char *sname = PyString_AsString(name);
-    if (sname[0] == '_' && sname[1] == '_') {
-        Py_ssize_t n = PyString_Size(name);
-        if (sname[n-1] == '_' && sname[n-2] == '_') {
-            if (strcmp(sname, "__dict__") == 0) {
-                if (PyEval_GetRestricted()) {
-                    PyErr_SetString(PyExc_RuntimeError,
-                 "__dict__ not accessible in restricted mode");
-                    return -1;
-                }
-                if (v == NULL || !PyDict_Check(v)) {
-                    PyErr_SetString(PyExc_TypeError,
-                       "__dict__ must be set to a dictionary");
-                    return -1;
-                }
-                tmp = inst->in_dict;
-                Py_INCREF(v);
-                inst->in_dict = v;
-                Py_DECREF(tmp);
-                return 0;
-            }
-            if (strcmp(sname, "__class__") == 0) {
-                if (PyEval_GetRestricted()) {
-                    PyErr_SetString(PyExc_RuntimeError,
-                "__class__ not accessible in restricted mode");
-                    return -1;
-                }
-                if (v == NULL || !PyClass_Check(v)) {
-                    PyErr_SetString(PyExc_TypeError,
-                       "__class__ must be set to a class");
-                    return -1;
-                }
-                tmp = (PyObject *)(inst->in_class);
-                Py_INCREF(v);
-                inst->in_class = (PyClassObject *)v;
-                Py_DECREF(tmp);
-                return 0;
-            }
-        }
-    }
-    if (v == NULL)
-        func = inst->in_class->cl_delattr;
-    else
-        func = inst->in_class->cl_setattr;
-    if (func == NULL)
-        return instance_setattr1(inst, name, v);
-    if (v == NULL)
-        args = PyTuple_Pack(2, inst, name);
-    else
-        args = PyTuple_Pack(3, inst, name, v);
-    if (args == NULL)
-        return -1;
-    res = PyEval_CallObject(func, args);
-    Py_DECREF(args);
-    if (res == NULL)
-        return -1;
-    Py_DECREF(res);
-    return 0;
-}
-
-static PyObject *
-instance_repr(PyInstanceObject *inst)
-{
-    PyObject *func;
-    PyObject *res;
-    static PyObject *reprstr;
-
-    if (reprstr == NULL) {
-        reprstr = PyString_InternFromString("__repr__");
-        if (reprstr == NULL)
-            return NULL;
-    }
-    func = instance_getattr(inst, reprstr);
-    if (func == NULL) {
-        PyObject *classname, *mod;
-        char *cname;
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return NULL;
-        PyErr_Clear();
-        classname = inst->in_class->cl_name;
-        mod = PyDict_GetItemString(inst->in_class->cl_dict,
-                                   "__module__");
-        if (classname != NULL && PyString_Check(classname))
-            cname = PyString_AsString(classname);
-        else
-            cname = "?";
-        if (mod == NULL || !PyString_Check(mod))
-            return PyString_FromFormat("<?.%s instance at %p>",
-                                       cname, inst);
-        else
-            return PyString_FromFormat("<%s.%s instance at %p>",
-                                       PyString_AsString(mod),
-                                       cname, inst);
-    }
-    res = PyEval_CallObject(func, (PyObject *)NULL);
-    Py_DECREF(func);
-    return res;
-}
-
-static PyObject *
-instance_str(PyInstanceObject *inst)
-{
-    PyObject *func;
-    PyObject *res;
-    static PyObject *strstr;
-
-    if (strstr == NULL) {
-        strstr = PyString_InternFromString("__str__");
-        if (strstr == NULL)
-            return NULL;
-    }
-    func = instance_getattr(inst, strstr);
-    if (func == NULL) {
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return NULL;
-        PyErr_Clear();
-        return instance_repr(inst);
-    }
-    res = PyEval_CallObject(func, (PyObject *)NULL);
-    Py_DECREF(func);
-    return res;
-}
-
-static long
-instance_hash(PyInstanceObject *inst)
-{
-    PyObject *func;
-    PyObject *res;
-    long outcome;
-    static PyObject *hashstr, *eqstr, *cmpstr;
-
-    if (hashstr == NULL) {
-        hashstr = PyString_InternFromString("__hash__");
-        if (hashstr == NULL)
-            return -1;
-    }
-    func = instance_getattr(inst, hashstr);
-    if (func == NULL) {
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return -1;
-        PyErr_Clear();
-        /* If there is no __eq__ and no __cmp__ method, we hash on the
-           address.  If an __eq__ or __cmp__ method exists, there must
-           be a __hash__. */
-        if (eqstr == NULL) {
-            eqstr = PyString_InternFromString("__eq__");
-            if (eqstr == NULL)
-                return -1;
-        }
-        func = instance_getattr(inst, eqstr);
-        if (func == NULL) {
-            if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-                return -1;
-            PyErr_Clear();
-            if (cmpstr == NULL) {
-                cmpstr = PyString_InternFromString("__cmp__");
-                if (cmpstr == NULL)
-                    return -1;
-            }
-            func = instance_getattr(inst, cmpstr);
-            if (func == NULL) {
-                if (!PyErr_ExceptionMatches(
-                    PyExc_AttributeError))
-                    return -1;
-                PyErr_Clear();
-                return _Py_HashPointer(inst);
-            }
-        }
-        Py_XDECREF(func);
-        PyErr_SetString(PyExc_TypeError, "unhashable instance");
-        return -1;
-    }
-    res = PyEval_CallObject(func, (PyObject *)NULL);
-    Py_DECREF(func);
-    if (res == NULL)
-        return -1;
-    if (PyInt_Check(res) || PyLong_Check(res))
-        /* This already converts a -1 result to -2. */
-        outcome = res->ob_type->tp_hash(res);
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "__hash__() should return an int");
-        outcome = -1;
-    }
-    Py_DECREF(res);
-    return outcome;
-}
-
-static int
-instance_traverse(PyInstanceObject *o, visitproc visit, void *arg)
-{
-    Py_VISIT(o->in_class);
-    Py_VISIT(o->in_dict);
-    return 0;
-}
-
-static PyObject *getitemstr, *setitemstr, *delitemstr, *lenstr;
-static PyObject *iterstr, *nextstr;
-
-static Py_ssize_t
-instance_length(PyInstanceObject *inst)
-{
-    PyObject *func;
-    PyObject *res;
-    Py_ssize_t outcome;
-
-    if (lenstr == NULL) {
-        lenstr = PyString_InternFromString("__len__");
-        if (lenstr == NULL)
-            return -1;
-    }
-    func = instance_getattr(inst, lenstr);
-    if (func == NULL)
-        return -1;
-    res = PyEval_CallObject(func, (PyObject *)NULL);
-    Py_DECREF(func);
-    if (res == NULL)
-        return -1;
-    if (PyInt_Check(res)) {
-        outcome = PyInt_AsSsize_t(res);
-        if (outcome == -1 && PyErr_Occurred()) {
-            Py_DECREF(res);
-            return -1;
-        }
-#if SIZEOF_SIZE_T < SIZEOF_INT
-        /* Overflow check -- range of PyInt is more than C int */
-        if (outcome != (int)outcome) {
-            PyErr_SetString(PyExc_OverflowError,
-             "__len__() should return 0 <= outcome < 2**31");
-            outcome = -1;
-        }
-        else
-#endif
-        if (outcome < 0) {
-            PyErr_SetString(PyExc_ValueError,
-                            "__len__() should return >= 0");
-            outcome = -1;
-        }
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "__len__() should return an int");
-        outcome = -1;
-    }
-    Py_DECREF(res);
-    return outcome;
-}
-
-static PyObject *
-instance_subscript(PyInstanceObject *inst, PyObject *key)
-{
-    PyObject *func;
-    PyObject *arg;
-    PyObject *res;
-
-    if (getitemstr == NULL) {
-        getitemstr = PyString_InternFromString("__getitem__");
-        if (getitemstr == NULL)
-            return NULL;
-    }
-    func = instance_getattr(inst, getitemstr);
-    if (func == NULL)
-        return NULL;
-    arg = PyTuple_Pack(1, key);
-    if (arg == NULL) {
-        Py_DECREF(func);
-        return NULL;
-    }
-    res = PyEval_CallObject(func, arg);
-    Py_DECREF(func);
-    Py_DECREF(arg);
-    return res;
-}
-
-static int
-instance_ass_subscript(PyInstanceObject *inst, PyObject *key, PyObject *value)
-{
-    PyObject *func;
-    PyObject *arg;
-    PyObject *res;
-
-    if (value == NULL) {
-        if (delitemstr == NULL) {
-            delitemstr = PyString_InternFromString("__delitem__");
-            if (delitemstr == NULL)
-                return -1;
-        }
-        func = instance_getattr(inst, delitemstr);
-    }
-    else {
-        if (setitemstr == NULL) {
-            setitemstr = PyString_InternFromString("__setitem__");
-            if (setitemstr == NULL)
-                return -1;
-        }
-        func = instance_getattr(inst, setitemstr);
-    }
-    if (func == NULL)
-        return -1;
-    if (value == NULL)
-        arg = PyTuple_Pack(1, key);
-    else
-        arg = PyTuple_Pack(2, key, value);
-    if (arg == NULL) {
-        Py_DECREF(func);
-        return -1;
-    }
-    res = PyEval_CallObject(func, arg);
-    Py_DECREF(func);
-    Py_DECREF(arg);
-    if (res == NULL)
-        return -1;
-    Py_DECREF(res);
-    return 0;
-}
-
-static PyMappingMethods instance_as_mapping = {
-    (lenfunc)instance_length,                   /* mp_length */
-    (binaryfunc)instance_subscript,             /* mp_subscript */
-    (objobjargproc)instance_ass_subscript,      /* mp_ass_subscript */
-};
-
-static PyObject *
-instance_item(PyInstanceObject *inst, Py_ssize_t i)
-{
-    PyObject *func, *res;
-
-    if (getitemstr == NULL) {
-        getitemstr = PyString_InternFromString("__getitem__");
-        if (getitemstr == NULL)
-            return NULL;
-    }
-    func = instance_getattr(inst, getitemstr);
-    if (func == NULL)
-        return NULL;
-    res = PyObject_CallFunction(func, "n", i);
-    Py_DECREF(func);
-    return res;
-}
-
-static PyObject *
-instance_slice(PyInstanceObject *inst, Py_ssize_t i, Py_ssize_t j)
-{
-    PyObject *func, *arg, *res;
-    static PyObject *getslicestr;
-
-    if (getslicestr == NULL) {
-        getslicestr = PyString_InternFromString("__getslice__");
-        if (getslicestr == NULL)
-            return NULL;
-    }
-    func = instance_getattr(inst, getslicestr);
-
-    if (func == NULL) {
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return NULL;
-        PyErr_Clear();
-
-        if (getitemstr == NULL) {
-            getitemstr = PyString_InternFromString("__getitem__");
-            if (getitemstr == NULL)
-                return NULL;
-        }
-        func = instance_getattr(inst, getitemstr);
-        if (func == NULL)
-            return NULL;
-        arg = Py_BuildValue("(N)", _PySlice_FromIndices(i, j));
-    }
-    else {
-        if (PyErr_WarnPy3k("in 3.x, __getslice__ has been removed; "
-                           "use __getitem__", 1) < 0) {
-            Py_DECREF(func);
-            return NULL;
-        }
-        arg = Py_BuildValue("(nn)", i, j);
-    }
-
-    if (arg == NULL) {
-        Py_DECREF(func);
-        return NULL;
-    }
-    res = PyEval_CallObject(func, arg);
-    Py_DECREF(func);
-    Py_DECREF(arg);
-    return res;
-}
-
-static int
-instance_ass_item(PyInstanceObject *inst, Py_ssize_t i, PyObject *item)
-{
-    PyObject *func, *arg, *res;
-
-    if (item == NULL) {
-        if (delitemstr == NULL) {
-            delitemstr = PyString_InternFromString("__delitem__");
-            if (delitemstr == NULL)
-                return -1;
-        }
-        func = instance_getattr(inst, delitemstr);
-    }
-    else {
-        if (setitemstr == NULL) {
-            setitemstr = PyString_InternFromString("__setitem__");
-            if (setitemstr == NULL)
-                return -1;
-        }
-        func = instance_getattr(inst, setitemstr);
-    }
-    if (func == NULL)
-        return -1;
-    if (item == NULL)
-        arg = PyInt_FromSsize_t(i);
-    else
-        arg = Py_BuildValue("(nO)", i, item);
-    if (arg == NULL) {
-        Py_DECREF(func);
-        return -1;
-    }
-    res = PyEval_CallObject(func, arg);
-    Py_DECREF(func);
-    Py_DECREF(arg);
-    if (res == NULL)
-        return -1;
-    Py_DECREF(res);
-    return 0;
-}
-
-static int
-instance_ass_slice(PyInstanceObject *inst, Py_ssize_t i, Py_ssize_t j, PyObject *value)
-{
-    PyObject *func, *arg, *res;
-    static PyObject *setslicestr, *delslicestr;
-
-    if (value == NULL) {
-        if (delslicestr == NULL) {
-            delslicestr =
-                PyString_InternFromString("__delslice__");
-            if (delslicestr == NULL)
-                return -1;
-        }
-        func = instance_getattr(inst, delslicestr);
-        if (func == NULL) {
-            if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-                return -1;
-            PyErr_Clear();
-            if (delitemstr == NULL) {
-                delitemstr =
-                    PyString_InternFromString("__delitem__");
-                if (delitemstr == NULL)
-                    return -1;
-            }
-            func = instance_getattr(inst, delitemstr);
-            if (func == NULL)
-                return -1;
-
-            arg = Py_BuildValue("(N)",
-                                _PySlice_FromIndices(i, j));
-        }
-        else {
-            if (PyErr_WarnPy3k("in 3.x, __delslice__ has been "
-                                "removed; use __delitem__", 1) < 0) {
-                Py_DECREF(func);
-                return -1;
-            }
-            arg = Py_BuildValue("(nn)", i, j);
-        }
-    }
-    else {
-        if (setslicestr == NULL) {
-            setslicestr =
-                PyString_InternFromString("__setslice__");
-            if (setslicestr == NULL)
-                return -1;
-        }
-        func = instance_getattr(inst, setslicestr);
-        if (func == NULL) {
-            if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-                return -1;
-            PyErr_Clear();
-            if (setitemstr == NULL) {
-                setitemstr =
-                    PyString_InternFromString("__setitem__");
-                if (setitemstr == NULL)
-                    return -1;
-            }
-            func = instance_getattr(inst, setitemstr);
-            if (func == NULL)
-                return -1;
-
-            arg = Py_BuildValue("(NO)",
-                                _PySlice_FromIndices(i, j), value);
-        }
-        else {
-            if (PyErr_WarnPy3k("in 3.x, __setslice__ has been "
-                               "removed; use __setitem__", 1) < 0) {
-                Py_DECREF(func);
-                return -1;
-            }
-            arg = Py_BuildValue("(nnO)", i, j, value);
-        }
-    }
-    if (arg == NULL) {
-        Py_DECREF(func);
-        return -1;
-    }
-    res = PyEval_CallObject(func, arg);
-    Py_DECREF(func);
-    Py_DECREF(arg);
-    if (res == NULL)
-        return -1;
-    Py_DECREF(res);
-    return 0;
-}
-
-static int
-instance_contains(PyInstanceObject *inst, PyObject *member)
-{
-    static PyObject *__contains__;
-    PyObject *func;
-
-    /* Try __contains__ first.
-     * If that can't be done, try iterator-based searching.
-     */
-
-    if(__contains__ == NULL) {
-        __contains__ = PyString_InternFromString("__contains__");
-        if(__contains__ == NULL)
-            return -1;
-    }
-    func = instance_getattr(inst, __contains__);
-    if (func) {
-        PyObject *res;
-        int ret;
-        PyObject *arg = PyTuple_Pack(1, member);
-        if(arg == NULL) {
-            Py_DECREF(func);
-            return -1;
-        }
-        res = PyEval_CallObject(func, arg);
-        Py_DECREF(func);
-        Py_DECREF(arg);
-        if(res == NULL)
-            return -1;
-        ret = PyObject_IsTrue(res);
-        Py_DECREF(res);
-        return ret;
-    }
-
-    /* Couldn't find __contains__. */
-    if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
-        Py_ssize_t rc;
-        /* Assume the failure was simply due to that there is no
-         * __contains__ attribute, and try iterating instead.
-         */
-        PyErr_Clear();
-        rc = _PySequence_IterSearch((PyObject *)inst, member,
-                                    PY_ITERSEARCH_CONTAINS);
-        if (rc >= 0)
-            return rc > 0;
-    }
-    return -1;
-}
-
-static PySequenceMethods
-instance_as_sequence = {
-    (lenfunc)instance_length,                   /* sq_length */
-    0,                                          /* sq_concat */
-    0,                                          /* sq_repeat */
-    (ssizeargfunc)instance_item,                /* sq_item */
-    (ssizessizeargfunc)instance_slice,          /* sq_slice */
-    (ssizeobjargproc)instance_ass_item,         /* sq_ass_item */
-    (ssizessizeobjargproc)instance_ass_slice,/* sq_ass_slice */
-    (objobjproc)instance_contains,              /* sq_contains */
-};
-
-static PyObject *
-generic_unary_op(PyInstanceObject *self, PyObject *methodname)
-{
-    PyObject *func, *res;
-
-    if ((func = instance_getattr(self, methodname)) == NULL)
-        return NULL;
-    res = PyEval_CallObject(func, (PyObject *)NULL);
-    Py_DECREF(func);
-    return res;
-}
-
-static PyObject *
-generic_binary_op(PyObject *v, PyObject *w, char *opname)
-{
-    PyObject *result;
-    PyObject *args;
-    PyObject *func = PyObject_GetAttrString(v, opname);
-    if (func == NULL) {
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return NULL;
-        PyErr_Clear();
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    args = PyTuple_Pack(1, w);
-    if (args == NULL) {
-        Py_DECREF(func);
-        return NULL;
-    }
-    result = PyEval_CallObject(func, args);
-    Py_DECREF(args);
-    Py_DECREF(func);
-    return result;
-}
-
-
-static PyObject *coerce_obj;
-
-/* Try one half of a binary operator involving a class instance. */
-static PyObject *
-half_binop(PyObject *v, PyObject *w, char *opname, binaryfunc thisfunc,
-                int swapped)
-{
-    PyObject *args;
-    PyObject *coercefunc;
-    PyObject *coerced = NULL;
-    PyObject *v1;
-    PyObject *result;
-
-    if (!PyInstance_Check(v)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-
-    if (coerce_obj == NULL) {
-        coerce_obj = PyString_InternFromString("__coerce__");
-        if (coerce_obj == NULL)
-            return NULL;
-    }
-    coercefunc = PyObject_GetAttr(v, coerce_obj);
-    if (coercefunc == NULL) {
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return NULL;
-        PyErr_Clear();
-        return generic_binary_op(v, w, opname);
-    }
-
-    args = PyTuple_Pack(1, w);
-    if (args == NULL) {
-        Py_DECREF(coercefunc);
-        return NULL;
-    }
-    coerced = PyEval_CallObject(coercefunc, args);
-    Py_DECREF(args);
-    Py_DECREF(coercefunc);
-    if (coerced == NULL) {
-        return NULL;
-    }
-    if (coerced == Py_None || coerced == Py_NotImplemented) {
-        Py_DECREF(coerced);
-        return generic_binary_op(v, w, opname);
-    }
-    if (!PyTuple_Check(coerced) || PyTuple_Size(coerced) != 2) {
-        Py_DECREF(coerced);
-        PyErr_SetString(PyExc_TypeError,
-                        "coercion should return None or 2-tuple");
-        return NULL;
-    }
-    v1 = PyTuple_GetItem(coerced, 0);
-    w = PyTuple_GetItem(coerced, 1);
-    if (v1->ob_type == v->ob_type && PyInstance_Check(v)) {
-        /* prevent recursion if __coerce__ returns self as the first
-         * argument */
-        result = generic_binary_op(v1, w, opname);
-    } else {
-        if (Py_EnterRecursiveCall(" after coercion"))
-            return NULL;
-        if (swapped)
-            result = (thisfunc)(w, v1);
-        else
-            result = (thisfunc)(v1, w);
-        Py_LeaveRecursiveCall();
-    }
-    Py_DECREF(coerced);
-    return result;
-}
-
-/* Implement a binary operator involving at least one class instance. */
-static PyObject *
-do_binop(PyObject *v, PyObject *w, char *opname, char *ropname,
-                   binaryfunc thisfunc)
-{
-    PyObject *result = half_binop(v, w, opname, thisfunc, 0);
-    if (result == Py_NotImplemented) {
-        Py_DECREF(result);
-        result = half_binop(w, v, ropname, thisfunc, 1);
-    }
-    return result;
-}
-
-static PyObject *
-do_binop_inplace(PyObject *v, PyObject *w, char *iopname, char *opname,
-                        char *ropname, binaryfunc thisfunc)
-{
-    PyObject *result = half_binop(v, w, iopname, thisfunc, 0);
-    if (result == Py_NotImplemented) {
-        Py_DECREF(result);
-        result = do_binop(v, w, opname, ropname, thisfunc);
-    }
-    return result;
-}
-
-static int
-instance_coerce(PyObject **pv, PyObject **pw)
-{
-    PyObject *v = *pv;
-    PyObject *w = *pw;
-    PyObject *coercefunc;
-    PyObject *args;
-    PyObject *coerced;
-
-    if (coerce_obj == NULL) {
-        coerce_obj = PyString_InternFromString("__coerce__");
-        if (coerce_obj == NULL)
-            return -1;
-    }
-    coercefunc = PyObject_GetAttr(v, coerce_obj);
-    if (coercefunc == NULL) {
-        /* No __coerce__ method */
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return -1;
-        PyErr_Clear();
-        return 1;
-    }
-    /* Has __coerce__ method: call it */
-    args = PyTuple_Pack(1, w);
-    if (args == NULL) {
-        return -1;
-    }
-    coerced = PyEval_CallObject(coercefunc, args);
-    Py_DECREF(args);
-    Py_DECREF(coercefunc);
-    if (coerced == NULL) {
-        /* __coerce__ call raised an exception */
-        return -1;
-    }
-    if (coerced == Py_None || coerced == Py_NotImplemented) {
-        /* __coerce__ says "I can't do it" */
-        Py_DECREF(coerced);
-        return 1;
-    }
-    if (!PyTuple_Check(coerced) || PyTuple_Size(coerced) != 2) {
-        /* __coerce__ return value is malformed */
-        Py_DECREF(coerced);
-        PyErr_SetString(PyExc_TypeError,
-                   "coercion should return None or 2-tuple");
-        return -1;
-    }
-    /* __coerce__ returned two new values */
-    *pv = PyTuple_GetItem(coerced, 0);
-    *pw = PyTuple_GetItem(coerced, 1);
-    Py_INCREF(*pv);
-    Py_INCREF(*pw);
-    Py_DECREF(coerced);
-    return 0;
-}
-
-#define UNARY(funcname, methodname) \
-static PyObject *funcname(PyInstanceObject *self) { \
-    static PyObject *o; \
-    if (o == NULL) { o = PyString_InternFromString(methodname); \
-                     if (o == NULL) return NULL; } \
-    return generic_unary_op(self, o); \
-}
-
-/* unary function with a fallback */
-#define UNARY_FB(funcname, methodname, funcname_fb) \
-static PyObject *funcname(PyInstanceObject *self) { \
-    static PyObject *o; \
-    if (o == NULL) { o = PyString_InternFromString(methodname); \
-                     if (o == NULL) return NULL; } \
-    if (PyObject_HasAttr((PyObject*)self, o)) \
-        return generic_unary_op(self, o); \
-    else \
-        return funcname_fb(self); \
-}
-
-#define BINARY(f, m, n) \
-static PyObject *f(PyObject *v, PyObject *w) { \
-    return do_binop(v, w, "__" m "__", "__r" m "__", n); \
-}
-
-#define BINARY_INPLACE(f, m, n) \
-static PyObject *f(PyObject *v, PyObject *w) { \
-    return do_binop_inplace(v, w, "__i" m "__", "__" m "__", \
-                    "__r" m "__", n); \
-}
-
-UNARY(instance_neg, "__neg__")
-UNARY(instance_pos, "__pos__")
-UNARY(instance_abs, "__abs__")
-
-BINARY(instance_or, "or", PyNumber_Or)
-BINARY(instance_and, "and", PyNumber_And)
-BINARY(instance_xor, "xor", PyNumber_Xor)
-BINARY(instance_lshift, "lshift", PyNumber_Lshift)
-BINARY(instance_rshift, "rshift", PyNumber_Rshift)
-BINARY(instance_add, "add", PyNumber_Add)
-BINARY(instance_sub, "sub", PyNumber_Subtract)
-BINARY(instance_mul, "mul", PyNumber_Multiply)
-BINARY(instance_div, "div", PyNumber_Divide)
-BINARY(instance_mod, "mod", PyNumber_Remainder)
-BINARY(instance_divmod, "divmod", PyNumber_Divmod)
-BINARY(instance_floordiv, "floordiv", PyNumber_FloorDivide)
-BINARY(instance_truediv, "truediv", PyNumber_TrueDivide)
-
-BINARY_INPLACE(instance_ior, "or", PyNumber_InPlaceOr)
-BINARY_INPLACE(instance_ixor, "xor", PyNumber_InPlaceXor)
-BINARY_INPLACE(instance_iand, "and", PyNumber_InPlaceAnd)
-BINARY_INPLACE(instance_ilshift, "lshift", PyNumber_InPlaceLshift)
-BINARY_INPLACE(instance_irshift, "rshift", PyNumber_InPlaceRshift)
-BINARY_INPLACE(instance_iadd, "add", PyNumber_InPlaceAdd)
-BINARY_INPLACE(instance_isub, "sub", PyNumber_InPlaceSubtract)
-BINARY_INPLACE(instance_imul, "mul", PyNumber_InPlaceMultiply)
-BINARY_INPLACE(instance_idiv, "div", PyNumber_InPlaceDivide)
-BINARY_INPLACE(instance_imod, "mod", PyNumber_InPlaceRemainder)
-BINARY_INPLACE(instance_ifloordiv, "floordiv", PyNumber_InPlaceFloorDivide)
-BINARY_INPLACE(instance_itruediv, "truediv", PyNumber_InPlaceTrueDivide)
-
-/* Try a 3-way comparison, returning an int; v is an instance.  Return:
-   -2 for an exception;
-   -1 if v < w;
-   0 if v == w;
-   1 if v > w;
-   2 if this particular 3-way comparison is not implemented or undefined.
-*/
-static int
-half_cmp(PyObject *v, PyObject *w)
-{
-    static PyObject *cmp_obj;
-    PyObject *args;
-    PyObject *cmp_func;
-    PyObject *result;
-    long l;
-
-    assert(PyInstance_Check(v));
-
-    if (cmp_obj == NULL) {
-        cmp_obj = PyString_InternFromString("__cmp__");
-        if (cmp_obj == NULL)
-            return -2;
-    }
-
-    cmp_func = PyObject_GetAttr(v, cmp_obj);
-    if (cmp_func == NULL) {
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return -2;
-        PyErr_Clear();
-        return 2;
-    }
-
-    args = PyTuple_Pack(1, w);
-    if (args == NULL) {
-        Py_DECREF(cmp_func);
-        return -2;
-    }
-
-    result = PyEval_CallObject(cmp_func, args);
-    Py_DECREF(args);
-    Py_DECREF(cmp_func);
-
-    if (result == NULL)
-        return -2;
-
-    if (result == Py_NotImplemented) {
-        Py_DECREF(result);
-        return 2;
-    }
-
-    l = PyInt_AsLong(result);
-    Py_DECREF(result);
-    if (l == -1 && PyErr_Occurred()) {
-        PyErr_SetString(PyExc_TypeError,
-                     "comparison did not return an int");
-        return -2;
-    }
-
-    return l < 0 ? -1 : l > 0 ? 1 : 0;
-}
-
-/* Try a 3-way comparison, returning an int; either v or w is an instance.
-   We first try a coercion.  Return:
-   -2 for an exception;
-   -1 if v < w;
-   0 if v == w;
-   1 if v > w;
-   2 if this particular 3-way comparison is not implemented or undefined.
-   THIS IS ONLY CALLED FROM object.c!
-*/
-static int
-instance_compare(PyObject *v, PyObject *w)
-{
-    int c;
-
-    c = PyNumber_CoerceEx(&v, &w);
-    if (c < 0)
-        return -2;
-    if (c == 0) {
-        /* If neither is now an instance, use regular comparison */
-        if (!PyInstance_Check(v) && !PyInstance_Check(w)) {
-            c = PyObject_Compare(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            if (PyErr_Occurred())
-                return -2;
-            return c < 0 ? -1 : c > 0 ? 1 : 0;
-        }
-    }
-    else {
-        /* The coercion didn't do anything.
-           Treat this the same as returning v and w unchanged. */
-        Py_INCREF(v);
-        Py_INCREF(w);
-    }
-
-    if (PyInstance_Check(v)) {
-        c = half_cmp(v, w);
-        if (c <= 1) {
-            Py_DECREF(v);
-            Py_DECREF(w);
-            return c;
-        }
-    }
-    if (PyInstance_Check(w)) {
-        c = half_cmp(w, v);
-        if (c <= 1) {
-            Py_DECREF(v);
-            Py_DECREF(w);
-            if (c >= -1)
-                c = -c;
-            return c;
-        }
-    }
-    Py_DECREF(v);
-    Py_DECREF(w);
-    return 2;
-}
-
-static int
-instance_nonzero(PyInstanceObject *self)
-{
-    PyObject *func, *res;
-    long outcome;
-    static PyObject *nonzerostr;
-
-    if (nonzerostr == NULL) {
-        nonzerostr = PyString_InternFromString("__nonzero__");
-        if (nonzerostr == NULL)
-            return -1;
-    }
-    if ((func = instance_getattr(self, nonzerostr)) == NULL) {
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return -1;
-        PyErr_Clear();
-        if (lenstr == NULL) {
-            lenstr = PyString_InternFromString("__len__");
-            if (lenstr == NULL)
-                return -1;
-        }
-        if ((func = instance_getattr(self, lenstr)) == NULL) {
-            if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-                return -1;
-            PyErr_Clear();
-            /* Fall back to the default behavior:
-               all instances are nonzero */
-            return 1;
-        }
-    }
-    res = PyEval_CallObject(func, (PyObject *)NULL);
-    Py_DECREF(func);
-    if (res == NULL)
-        return -1;
-    if (!PyInt_Check(res)) {
-        Py_DECREF(res);
-        PyErr_SetString(PyExc_TypeError,
-                        "__nonzero__ should return an int");
-        return -1;
-    }
-    outcome = PyInt_AsLong(res);
-    Py_DECREF(res);
-    if (outcome < 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "__nonzero__ should return >= 0");
-        return -1;
-    }
-    return outcome > 0;
-}
-
-static PyObject *
-instance_index(PyInstanceObject *self)
-{
-    PyObject *func, *res;
-    static PyObject *indexstr = NULL;
-
-    if (indexstr == NULL) {
-        indexstr = PyString_InternFromString("__index__");
-        if (indexstr == NULL)
-            return NULL;
-    }
-    if ((func = instance_getattr(self, indexstr)) == NULL) {
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return NULL;
-        PyErr_Clear();
-        PyErr_SetString(PyExc_TypeError,
-                        "object cannot be interpreted as an index");
-        return NULL;
-    }
-    res = PyEval_CallObject(func, (PyObject *)NULL);
-    Py_DECREF(func);
-    return res;
-}
-
-
-UNARY(instance_invert, "__invert__")
-UNARY(_instance_trunc, "__trunc__")
-
-static PyObject *
-instance_int(PyInstanceObject *self)
-{
-    PyObject *truncated;
-    static PyObject *int_name;
-    if (int_name == NULL) {
-        int_name = PyString_InternFromString("__int__");
-        if (int_name == NULL)
-            return NULL;
-    }
-    if (PyObject_HasAttr((PyObject*)self, int_name))
-        return generic_unary_op(self, int_name);
-
-    truncated = _instance_trunc(self);
-    /* __trunc__ is specified to return an Integral type, but
-       int() needs to return an int. */
-    return _PyNumber_ConvertIntegralToInt(
-        truncated,
-        "__trunc__ returned non-Integral (type %.200s)");
-}
-
-UNARY_FB(instance_long, "__long__", instance_int)
-UNARY(instance_float, "__float__")
-UNARY(instance_oct, "__oct__")
-UNARY(instance_hex, "__hex__")
-
-static PyObject *
-bin_power(PyObject *v, PyObject *w)
-{
-    return PyNumber_Power(v, w, Py_None);
-}
-
-/* This version is for ternary calls only (z != None) */
-static PyObject *
-instance_pow(PyObject *v, PyObject *w, PyObject *z)
-{
-    if (z == Py_None) {
-        return do_binop(v, w, "__pow__", "__rpow__", bin_power);
-    }
-    else {
-        PyObject *func;
-        PyObject *args;
-        PyObject *result;
-
-        /* XXX Doesn't do coercions... */
-        func = PyObject_GetAttrString(v, "__pow__");
-        if (func == NULL)
-            return NULL;
-        args = PyTuple_Pack(2, w, z);
-        if (args == NULL) {
-            Py_DECREF(func);
-            return NULL;
-        }
-        result = PyEval_CallObject(func, args);
-        Py_DECREF(func);
-        Py_DECREF(args);
-        return result;
-    }
-}
-
-static PyObject *
-bin_inplace_power(PyObject *v, PyObject *w)
-{
-    return PyNumber_InPlacePower(v, w, Py_None);
-}
-
-
-static PyObject *
-instance_ipow(PyObject *v, PyObject *w, PyObject *z)
-{
-    if (z == Py_None) {
-        return do_binop_inplace(v, w, "__ipow__", "__pow__",
-            "__rpow__", bin_inplace_power);
-    }
-    else {
-        /* XXX Doesn't do coercions... */
-        PyObject *func;
-        PyObject *args;
-        PyObject *result;
-
-        func = PyObject_GetAttrString(v, "__ipow__");
-        if (func == NULL) {
-            if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-                return NULL;
-            PyErr_Clear();
-            return instance_pow(v, w, z);
-        }
-        args = PyTuple_Pack(2, w, z);
-        if (args == NULL) {
-            Py_DECREF(func);
-            return NULL;
-        }
-        result = PyEval_CallObject(func, args);
-        Py_DECREF(func);
-        Py_DECREF(args);
-        return result;
-    }
-}
-
-
-/* Map rich comparison operators to their __xx__ namesakes */
-#define NAME_OPS 6
-static PyObject **name_op = NULL;
-
-static int
-init_name_op(void)
-{
-    int i;
-    char *_name_op[] = {
-        "__lt__",
-        "__le__",
-        "__eq__",
-        "__ne__",
-        "__gt__",
-        "__ge__",
-    };
-
-    name_op = (PyObject **)malloc(sizeof(PyObject *) * NAME_OPS);
-    if (name_op == NULL)
-        return -1;
-    for (i = 0; i < NAME_OPS; ++i) {
-        name_op[i] = PyString_InternFromString(_name_op[i]);
-        if (name_op[i] == NULL)
-            return -1;
-    }
-    return 0;
-}
-
-static PyObject *
-half_richcompare(PyObject *v, PyObject *w, int op)
-{
-    PyObject *method;
-    PyObject *args;
-    PyObject *res;
-
-    assert(PyInstance_Check(v));
-
-    if (name_op == NULL) {
-        if (init_name_op() < 0)
-            return NULL;
-    }
-    /* If the instance doesn't define an __getattr__ method, use
-       instance_getattr2 directly because it will not set an
-       exception on failure. */
-    if (((PyInstanceObject *)v)->in_class->cl_getattr == NULL)
-        method = instance_getattr2((PyInstanceObject *)v,
-                                   name_op[op]);
-    else
-        method = PyObject_GetAttr(v, name_op[op]);
-    if (method == NULL) {
-        if (PyErr_Occurred()) {
-            if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-                return NULL;
-            PyErr_Clear();
-        }
-        res = Py_NotImplemented;
-        Py_INCREF(res);
-        return res;
-    }
-
-    args = PyTuple_Pack(1, w);
-    if (args == NULL) {
-        Py_DECREF(method);
-        return NULL;
-    }
-
-    res = PyEval_CallObject(method, args);
-    Py_DECREF(args);
-    Py_DECREF(method);
-
-    return res;
-}
-
-static PyObject *
-instance_richcompare(PyObject *v, PyObject *w, int op)
-{
-    PyObject *res;
-
-    if (PyInstance_Check(v)) {
-        res = half_richcompare(v, w, op);
-        if (res != Py_NotImplemented)
-            return res;
-        Py_DECREF(res);
-    }
-
-    if (PyInstance_Check(w)) {
-        res = half_richcompare(w, v, _Py_SwappedOp[op]);
-        if (res != Py_NotImplemented)
-            return res;
-        Py_DECREF(res);
-    }
-
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-}
-
-
-/* Get the iterator */
-static PyObject *
-instance_getiter(PyInstanceObject *self)
-{
-    PyObject *func;
-
-    if (iterstr == NULL) {
-        iterstr = PyString_InternFromString("__iter__");
-        if (iterstr == NULL)
-            return NULL;
-    }
-    if (getitemstr == NULL) {
-        getitemstr = PyString_InternFromString("__getitem__");
-        if (getitemstr == NULL)
-            return NULL;
-    }
-
-    if ((func = instance_getattr(self, iterstr)) != NULL) {
-        PyObject *res = PyEval_CallObject(func, (PyObject *)NULL);
-        Py_DECREF(func);
-        if (res != NULL && !PyIter_Check(res)) {
-            PyErr_Format(PyExc_TypeError,
-                         "__iter__ returned non-iterator "
-                         "of type '%.100s'",
-                         res->ob_type->tp_name);
-            Py_DECREF(res);
-            res = NULL;
-        }
-        return res;
-    }
-    if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-        return NULL;
-    PyErr_Clear();
-    if ((func = instance_getattr(self, getitemstr)) == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "iteration over non-sequence");
-        return NULL;
-    }
-    Py_DECREF(func);
-    return PySeqIter_New((PyObject *)self);
-}
-
-
-/* Call the iterator's next */
-static PyObject *
-instance_iternext(PyInstanceObject *self)
-{
-    PyObject *func;
-
-    if (nextstr == NULL) {
-        nextstr = PyString_InternFromString("next");
-        if (nextstr == NULL)
-            return NULL;
-    }
-
-    if ((func = instance_getattr(self, nextstr)) != NULL) {
-        PyObject *res = PyEval_CallObject(func, (PyObject *)NULL);
-        Py_DECREF(func);
-        if (res != NULL) {
-            return res;
-        }
-        if (PyErr_ExceptionMatches(PyExc_StopIteration)) {
-            PyErr_Clear();
-            return NULL;
-        }
-        return NULL;
-    }
-    PyErr_SetString(PyExc_TypeError, "instance has no next() method");
-    return NULL;
-}
-
-static PyObject *
-instance_call(PyObject *func, PyObject *arg, PyObject *kw)
-{
-    PyObject *res, *call = PyObject_GetAttrString(func, "__call__");
-    if (call == NULL) {
-        PyInstanceObject *inst = (PyInstanceObject*) func;
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return NULL;
-        PyErr_Clear();
-        PyErr_Format(PyExc_AttributeError,
-                     "%.200s instance has no __call__ method",
-                     PyString_AsString(inst->in_class->cl_name));
-        return NULL;
-    }
-    /* We must check and increment the recursion depth here. Scenario:
-           class A:
-           pass
-           A.__call__ = A() # that's right
-           a = A() # ok
-           a() # infinite recursion
-       This bounces between instance_call() and PyObject_Call() without
-       ever hitting eval_frame() (which has the main recursion check). */
-    if (Py_EnterRecursiveCall(" in __call__")) {
-        res = NULL;
-    }
-    else {
-        res = PyObject_Call(call, arg, kw);
-        Py_LeaveRecursiveCall();
-    }
-    Py_DECREF(call);
-    return res;
-}
-
-
-static PyNumberMethods instance_as_number = {
-    instance_add,                       /* nb_add */
-    instance_sub,                       /* nb_subtract */
-    instance_mul,                       /* nb_multiply */
-    instance_div,                       /* nb_divide */
-    instance_mod,                       /* nb_remainder */
-    instance_divmod,                    /* nb_divmod */
-    instance_pow,                       /* nb_power */
-    (unaryfunc)instance_neg,            /* nb_negative */
-    (unaryfunc)instance_pos,            /* nb_positive */
-    (unaryfunc)instance_abs,            /* nb_absolute */
-    (inquiry)instance_nonzero,          /* nb_nonzero */
-    (unaryfunc)instance_invert,         /* nb_invert */
-    instance_lshift,                    /* nb_lshift */
-    instance_rshift,                    /* nb_rshift */
-    instance_and,                       /* nb_and */
-    instance_xor,                       /* nb_xor */
-    instance_or,                        /* nb_or */
-    instance_coerce,                    /* nb_coerce */
-    (unaryfunc)instance_int,            /* nb_int */
-    (unaryfunc)instance_long,           /* nb_long */
-    (unaryfunc)instance_float,          /* nb_float */
-    (unaryfunc)instance_oct,            /* nb_oct */
-    (unaryfunc)instance_hex,            /* nb_hex */
-    instance_iadd,                      /* nb_inplace_add */
-    instance_isub,                      /* nb_inplace_subtract */
-    instance_imul,                      /* nb_inplace_multiply */
-    instance_idiv,                      /* nb_inplace_divide */
-    instance_imod,                      /* nb_inplace_remainder */
-    instance_ipow,                      /* nb_inplace_power */
-    instance_ilshift,                   /* nb_inplace_lshift */
-    instance_irshift,                   /* nb_inplace_rshift */
-    instance_iand,                      /* nb_inplace_and */
-    instance_ixor,                      /* nb_inplace_xor */
-    instance_ior,                       /* nb_inplace_or */
-    instance_floordiv,                  /* nb_floor_divide */
-    instance_truediv,                   /* nb_true_divide */
-    instance_ifloordiv,                 /* nb_inplace_floor_divide */
-    instance_itruediv,                  /* nb_inplace_true_divide */
-    (unaryfunc)instance_index,          /* nb_index */
-};
-
-PyTypeObject PyInstance_Type = {
-    PyObject_HEAD_INIT(&PyType_Type)
-    0,
-    "instance",
-    sizeof(PyInstanceObject),
-    0,
-    (destructor)instance_dealloc,               /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    instance_compare,                           /* tp_compare */
-    (reprfunc)instance_repr,                    /* tp_repr */
-    &instance_as_number,                        /* tp_as_number */
-    &instance_as_sequence,                      /* tp_as_sequence */
-    &instance_as_mapping,                       /* tp_as_mapping */
-    (hashfunc)instance_hash,                    /* tp_hash */
-    instance_call,                              /* tp_call */
-    (reprfunc)instance_str,                     /* tp_str */
-    (getattrofunc)instance_getattr,             /* tp_getattro */
-    (setattrofunc)instance_setattr,             /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_CHECKTYPES,/*tp_flags*/
-    instance_doc,                               /* tp_doc */
-    (traverseproc)instance_traverse,            /* tp_traverse */
-    0,                                          /* tp_clear */
-    instance_richcompare,                       /* tp_richcompare */
-    offsetof(PyInstanceObject, in_weakreflist), /* tp_weaklistoffset */
-    (getiterfunc)instance_getiter,              /* tp_iter */
-    (iternextfunc)instance_iternext,            /* tp_iternext */
-    0,                                          /* tp_methods */
-    0,                                          /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    instance_new,                               /* tp_new */
-};
-
-
-/* Instance method objects are used for two purposes:
-   (a) as bound instance methods (returned by instancename.methodname)
-   (b) as unbound methods (returned by ClassName.methodname)
-   In case (b), im_self is NULL
-*/
-
-PyObject *
-PyMethod_New(PyObject *func, PyObject *self, PyObject *klass)
-{
-    register PyMethodObject *im;
-    im = free_list;
-    if (im != NULL) {
-        free_list = (PyMethodObject *)(im->im_self);
-        PyObject_INIT(im, &PyMethod_Type);
-        numfree--;
-    }
-    else {
-        im = PyObject_GC_New(PyMethodObject, &PyMethod_Type);
-        if (im == NULL)
-            return NULL;
-    }
-    im->im_weakreflist = NULL;
-    Py_INCREF(func);
-    im->im_func = func;
-    Py_XINCREF(self);
-    im->im_self = self;
-    Py_XINCREF(klass);
-    im->im_class = klass;
-    _PyObject_GC_TRACK(im);
-    return (PyObject *)im;
-}
-
-/* Descriptors for PyMethod attributes */
-
-/* im_class, im_func and im_self are stored in the PyMethod object */
-
-#define OFF(x) offsetof(PyMethodObject, x)
-
-static PyMemberDef instancemethod_memberlist[] = {
-    {"im_class",        T_OBJECT,       OFF(im_class),  READONLY|RESTRICTED,
-     "the class associated with a method"},
-    {"im_func",         T_OBJECT,       OFF(im_func),   READONLY|RESTRICTED,
-     "the function (or other callable) implementing a method"},
-    {"__func__",        T_OBJECT,       OFF(im_func),   READONLY|RESTRICTED,
-     "the function (or other callable) implementing a method"},
-    {"im_self",         T_OBJECT,       OFF(im_self),   READONLY|RESTRICTED,
-     "the instance to which a method is bound; None for unbound methods"},
-    {"__self__",        T_OBJECT,       OFF(im_self),   READONLY|RESTRICTED,
-     "the instance to which a method is bound; None for unbound methods"},
-    {NULL}      /* Sentinel */
-};
-
-/* Christian Tismer argued convincingly that method attributes should
-   (nearly) always override function attributes.
-   The one exception is __doc__; there's a default __doc__ which
-   should only be used for the class, not for instances */
-
-static PyObject *
-instancemethod_get_doc(PyMethodObject *im, void *context)
-{
-    static PyObject *docstr;
-    if (docstr == NULL) {
-        docstr= PyString_InternFromString("__doc__");
-        if (docstr == NULL)
-            return NULL;
-    }
-    return PyObject_GetAttr(im->im_func, docstr);
-}
-
-static PyGetSetDef instancemethod_getset[] = {
-    {"__doc__", (getter)instancemethod_get_doc, NULL, NULL},
-    {0}
-};
-
-static PyObject *
-instancemethod_getattro(PyObject *obj, PyObject *name)
-{
-    PyMethodObject *im = (PyMethodObject *)obj;
-    PyTypeObject *tp = obj->ob_type;
-    PyObject *descr = NULL;
-
-    if (PyType_HasFeature(tp, Py_TPFLAGS_HAVE_CLASS)) {
-        if (tp->tp_dict == NULL) {
-            if (PyType_Ready(tp) < 0)
-                return NULL;
-        }
-        descr = _PyType_Lookup(tp, name);
-    }
-
-    if (descr != NULL) {
-        descrgetfunc f = TP_DESCR_GET(descr->ob_type);
-        if (f != NULL)
-            return f(descr, obj, (PyObject *)obj->ob_type);
-        else {
-            Py_INCREF(descr);
-            return descr;
-        }
-    }
-
-    return PyObject_GetAttr(im->im_func, name);
-}
-
-PyDoc_STRVAR(instancemethod_doc,
-"instancemethod(function, instance, class)\n\
-\n\
-Create an instance method object.");
-
-static PyObject *
-instancemethod_new(PyTypeObject* type, PyObject* args, PyObject *kw)
-{
-    PyObject *func;
-    PyObject *self;
-    PyObject *classObj = NULL;
-
-    if (!_PyArg_NoKeywords("instancemethod", kw))
-        return NULL;
-    if (!PyArg_UnpackTuple(args, "instancemethod", 2, 3,
-                          &func, &self, &classObj))
-        return NULL;
-    if (!PyCallable_Check(func)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "first argument must be callable");
-        return NULL;
-    }
-    if (self == Py_None)
-        self = NULL;
-    if (self == NULL && classObj == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-            "unbound methods must have non-NULL im_class");
-        return NULL;
-    }
-
-    return PyMethod_New(func, self, classObj);
-}
-
-static void
-instancemethod_dealloc(register PyMethodObject *im)
-{
-    _PyObject_GC_UNTRACK(im);
-    if (im->im_weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *)im);
-    Py_DECREF(im->im_func);
-    Py_XDECREF(im->im_self);
-    Py_XDECREF(im->im_class);
-    if (numfree < PyMethod_MAXFREELIST) {
-        im->im_self = (PyObject *)free_list;
-        free_list = im;
-        numfree++;
-    }
-    else {
-        PyObject_GC_Del(im);
-    }
-}
-
-static int
-instancemethod_compare(PyMethodObject *a, PyMethodObject *b)
-{
-    int cmp;
-    cmp = PyObject_Compare(a->im_func, b->im_func);
-    if (cmp)
-        return cmp;
-
-    if (a->im_self == b->im_self)
-        return 0;
-    if (a->im_self == NULL || b->im_self == NULL)
-        return (a->im_self < b->im_self) ? -1 : 1;
-    else
-        return PyObject_Compare(a->im_self, b->im_self);
-}
-
-static PyObject *
-instancemethod_repr(PyMethodObject *a)
-{
-    PyObject *self = a->im_self;
-    PyObject *func = a->im_func;
-    PyObject *klass = a->im_class;
-    PyObject *funcname = NULL, *klassname = NULL, *result = NULL;
-    char *sfuncname = "?", *sklassname = "?";
-
-    funcname = PyObject_GetAttrString(func, "__name__");
-    if (funcname == NULL) {
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return NULL;
-        PyErr_Clear();
-    }
-    else if (!PyString_Check(funcname)) {
-        Py_DECREF(funcname);
-        funcname = NULL;
-    }
-    else
-        sfuncname = PyString_AS_STRING(funcname);
-    if (klass == NULL)
-        klassname = NULL;
-    else {
-        klassname = PyObject_GetAttrString(klass, "__name__");
-        if (klassname == NULL) {
-            if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-                return NULL;
-            PyErr_Clear();
-        }
-        else if (!PyString_Check(klassname)) {
-            Py_DECREF(klassname);
-            klassname = NULL;
-        }
-        else
-            sklassname = PyString_AS_STRING(klassname);
-    }
-    if (self == NULL)
-        result = PyString_FromFormat("<unbound method %s.%s>",
-                                     sklassname, sfuncname);
-    else {
-        /* XXX Shouldn't use repr() here! */
-        PyObject *selfrepr = PyObject_Repr(self);
-        if (selfrepr == NULL)
-            goto fail;
-        if (!PyString_Check(selfrepr)) {
-            Py_DECREF(selfrepr);
-            goto fail;
-        }
-        result = PyString_FromFormat("<bound method %s.%s of %s>",
-                                     sklassname, sfuncname,
-                                     PyString_AS_STRING(selfrepr));
-        Py_DECREF(selfrepr);
-    }
-  fail:
-    Py_XDECREF(funcname);
-    Py_XDECREF(klassname);
-    return result;
-}
-
-static long
-instancemethod_hash(PyMethodObject *a)
-{
-    long x, y;
-    if (a->im_self == NULL)
-        x = PyObject_Hash(Py_None);
-    else
-        x = PyObject_Hash(a->im_self);
-    if (x == -1)
-        return -1;
-    y = PyObject_Hash(a->im_func);
-    if (y == -1)
-        return -1;
-    x = x ^ y;
-    if (x == -1)
-        x = -2;
-    return x;
-}
-
-static int
-instancemethod_traverse(PyMethodObject *im, visitproc visit, void *arg)
-{
-    Py_VISIT(im->im_func);
-    Py_VISIT(im->im_self);
-    Py_VISIT(im->im_class);
-    return 0;
-}
-
-static void
-getclassname(PyObject *klass, char *buf, int bufsize)
-{
-    PyObject *name;
-
-    assert(bufsize > 1);
-    strcpy(buf, "?"); /* Default outcome */
-    if (klass == NULL)
-        return;
-    name = PyObject_GetAttrString(klass, "__name__");
-    if (name == NULL) {
-        /* This function cannot return an exception */
-        PyErr_Clear();
-        return;
-    }
-    if (PyString_Check(name)) {
-        strncpy(buf, PyString_AS_STRING(name), bufsize);
-        buf[bufsize-1] = '\0';
-    }
-    Py_DECREF(name);
-}
-
-static void
-getinstclassname(PyObject *inst, char *buf, int bufsize)
-{
-    PyObject *klass;
-
-    if (inst == NULL) {
-        assert(bufsize > 0 && (size_t)bufsize > strlen("nothing"));
-        strcpy(buf, "nothing");
-        return;
-    }
-
-    klass = PyObject_GetAttrString(inst, "__class__");
-    if (klass == NULL) {
-        /* This function cannot return an exception */
-        PyErr_Clear();
-        klass = (PyObject *)(inst->ob_type);
-        Py_INCREF(klass);
-    }
-    getclassname(klass, buf, bufsize);
-    Py_XDECREF(klass);
-}
-
-static PyObject *
-instancemethod_call(PyObject *func, PyObject *arg, PyObject *kw)
-{
-    PyObject *self = PyMethod_GET_SELF(func);
-    PyObject *klass = PyMethod_GET_CLASS(func);
-    PyObject *result;
-
-    func = PyMethod_GET_FUNCTION(func);
-    if (self == NULL) {
-        /* Unbound methods must be called with an instance of
-           the class (or a derived class) as first argument */
-        int ok;
-        if (PyTuple_Size(arg) >= 1)
-            self = PyTuple_GET_ITEM(arg, 0);
-        if (self == NULL)
-            ok = 0;
-        else {
-            ok = PyObject_IsInstance(self, klass);
-            if (ok < 0)
-                return NULL;
-        }
-        if (!ok) {
-            char clsbuf[256];
-            char instbuf[256];
-            getclassname(klass, clsbuf, sizeof(clsbuf));
-            getinstclassname(self, instbuf, sizeof(instbuf));
-            PyErr_Format(PyExc_TypeError,
-                         "unbound method %s%s must be called with "
-                         "%s instance as first argument "
-                         "(got %s%s instead)",
-                         PyEval_GetFuncName(func),
-                         PyEval_GetFuncDesc(func),
-                         clsbuf,
-                         instbuf,
-                         self == NULL ? "" : " instance");
-            return NULL;
-        }
-        Py_INCREF(arg);
-    }
-    else {
-        Py_ssize_t argcount = PyTuple_Size(arg);
-        PyObject *newarg = PyTuple_New(argcount + 1);
-        int i;
-        if (newarg == NULL)
-            return NULL;
-        Py_INCREF(self);
-        PyTuple_SET_ITEM(newarg, 0, self);
-        for (i = 0; i < argcount; i++) {
-            PyObject *v = PyTuple_GET_ITEM(arg, i);
-            Py_XINCREF(v);
-            PyTuple_SET_ITEM(newarg, i+1, v);
-        }
-        arg = newarg;
-    }
-    result = PyObject_Call((PyObject *)func, arg, kw);
-    Py_DECREF(arg);
-    return result;
-}
-
-static PyObject *
-instancemethod_descr_get(PyObject *meth, PyObject *obj, PyObject *cls)
-{
-    /* Don't rebind an already bound method, or an unbound method
-       of a class that's not a base class of cls. */
-
-    if (PyMethod_GET_SELF(meth) != NULL) {
-        /* Already bound */
-        Py_INCREF(meth);
-        return meth;
-    }
-    /* No, it is an unbound method */
-    if (PyMethod_GET_CLASS(meth) != NULL && cls != NULL) {
-        /* Do subclass test.  If it fails, return meth unchanged. */
-        int ok = PyObject_IsSubclass(cls, PyMethod_GET_CLASS(meth));
-        if (ok < 0)
-            return NULL;
-        if (!ok) {
-            Py_INCREF(meth);
-            return meth;
-        }
-    }
-    /* Bind it to obj */
-    return PyMethod_New(PyMethod_GET_FUNCTION(meth), obj, cls);
-}
-
-PyTypeObject PyMethod_Type = {
-    PyObject_HEAD_INIT(&PyType_Type)
-    0,
-    "instancemethod",
-    sizeof(PyMethodObject),
-    0,
-    (destructor)instancemethod_dealloc,         /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    (cmpfunc)instancemethod_compare,            /* tp_compare */
-    (reprfunc)instancemethod_repr,              /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    (hashfunc)instancemethod_hash,              /* tp_hash */
-    instancemethod_call,                        /* tp_call */
-    0,                                          /* tp_str */
-    instancemethod_getattro,                    /* tp_getattro */
-    PyObject_GenericSetAttr,                    /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC  | Py_TPFLAGS_HAVE_WEAKREFS, /* tp_flags */
-    instancemethod_doc,                         /* tp_doc */
-    (traverseproc)instancemethod_traverse,      /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    offsetof(PyMethodObject, im_weakreflist), /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    instancemethod_memberlist,                  /* tp_members */
-    instancemethod_getset,                      /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    instancemethod_descr_get,                   /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    instancemethod_new,                         /* tp_new */
-};
-
-/* Clear out the free list */
-
-int
-PyMethod_ClearFreeList(void)
-{
-    int freelist_size = numfree;
-
-    while (free_list) {
-        PyMethodObject *im = free_list;
-        free_list = (PyMethodObject *)(im->im_self);
-        PyObject_GC_Del(im);
-        numfree--;
-    }
-    assert(numfree == 0);
-    return freelist_size;
-}
-
-void
-PyMethod_Fini(void)
-{
-    (void)PyMethod_ClearFreeList();
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/cobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/cobject.c
deleted file mode 100644
index e287444..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/cobject.c
+++ /dev/null
@@ -1,172 +0,0 @@
-
-/* Wrap void* pointers to be passed between C modules */
-
-#include "Python.h"
-
-
-/* Declarations for objects of type PyCObject */
-
-typedef void (*destructor1)(void *);
-typedef void (*destructor2)(void *, void*);
-
-static int cobject_deprecation_warning(void)
-{
-    return PyErr_WarnPy3k("CObject type is not supported in 3.x. "
-        "Please use capsule objects instead.", 1);
-}
-
-
-PyObject *
-PyCObject_FromVoidPtr(void *cobj, void (*destr)(void *))
-{
-    PyCObject *self;
-
-    if (cobject_deprecation_warning()) {
-        return NULL;
-    }
-
-    self = PyObject_NEW(PyCObject, &PyCObject_Type);
-    if (self == NULL)
-        return NULL;
-    self->cobject=cobj;
-    self->destructor=destr;
-    self->desc=NULL;
-
-    return (PyObject *)self;
-}
-
-PyObject *
-PyCObject_FromVoidPtrAndDesc(void *cobj, void *desc,
-                             void (*destr)(void *, void *))
-{
-    PyCObject *self;
-
-    if (cobject_deprecation_warning()) {
-        return NULL;
-    }
-
-    if (!desc) {
-        PyErr_SetString(PyExc_TypeError,
-                        "PyCObject_FromVoidPtrAndDesc called with null"
-                        " description");
-        return NULL;
-    }
-    self = PyObject_NEW(PyCObject, &PyCObject_Type);
-    if (self == NULL)
-        return NULL;
-    self->cobject = cobj;
-    self->destructor = (destructor1)destr;
-    self->desc = desc;
-
-    return (PyObject *)self;
-}
-
-void *
-PyCObject_AsVoidPtr(PyObject *self)
-{
-    if (self) {
-        if (PyCapsule_CheckExact(self)) {
-            const char *name = PyCapsule_GetName(self);
-            return (void *)PyCapsule_GetPointer(self, name);
-        }
-        if (self->ob_type == &PyCObject_Type)
-            return ((PyCObject *)self)->cobject;
-        PyErr_SetString(PyExc_TypeError,
-                        "PyCObject_AsVoidPtr with non-C-object");
-    }
-    if (!PyErr_Occurred())
-        PyErr_SetString(PyExc_TypeError,
-                        "PyCObject_AsVoidPtr called with null pointer");
-    return NULL;
-}
-
-void *
-PyCObject_GetDesc(PyObject *self)
-{
-    if (self) {
-        if (self->ob_type == &PyCObject_Type)
-            return ((PyCObject *)self)->desc;
-        PyErr_SetString(PyExc_TypeError,
-                        "PyCObject_GetDesc with non-C-object");
-    }
-    if (!PyErr_Occurred())
-        PyErr_SetString(PyExc_TypeError,
-                        "PyCObject_GetDesc called with null pointer");
-    return NULL;
-}
-
-void *
-PyCObject_Import(char *module_name, char *name)
-{
-    PyObject *m, *c;
-    void *r = NULL;
-
-    if ((m = PyImport_ImportModule(module_name))) {
-        if ((c = PyObject_GetAttrString(m,name))) {
-            r = PyCObject_AsVoidPtr(c);
-            Py_DECREF(c);
-	}
-        Py_DECREF(m);
-    }
-    return r;
-}
-
-int
-PyCObject_SetVoidPtr(PyObject *self, void *cobj)
-{
-    PyCObject* cself = (PyCObject*)self;
-    if (cself == NULL || !PyCObject_Check(cself) ||
-	cself->destructor != NULL) {
-	PyErr_SetString(PyExc_TypeError, 
-			"Invalid call to PyCObject_SetVoidPtr");
-	return 0;
-    }
-    cself->cobject = cobj;
-    return 1;
-}
-
-static void
-PyCObject_dealloc(PyCObject *self)
-{
-    if (self->destructor) {
-        if(self->desc)
-            ((destructor2)(self->destructor))(self->cobject, self->desc);
-        else
-            (self->destructor)(self->cobject);
-    }
-    PyObject_DEL(self);
-}
-
-
-PyDoc_STRVAR(PyCObject_Type__doc__,
-"C objects to be exported from one extension module to another\n\
-\n\
-C objects are used for communication between extension modules.  They\n\
-provide a way for an extension module to export a C interface to other\n\
-extension modules, so that extension modules can use the Python import\n\
-mechanism to link to one another.");
-
-PyTypeObject PyCObject_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "PyCObject",		/*tp_name*/
-    sizeof(PyCObject),		/*tp_basicsize*/
-    0,				/*tp_itemsize*/
-    /* methods */
-    (destructor)PyCObject_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*/
-    0,				/*tp_flags*/
-    PyCObject_Type__doc__	/*tp_doc*/
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/codeobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/codeobject.c
deleted file mode 100644
index a2bb178..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/codeobject.c
+++ /dev/null
@@ -1,581 +0,0 @@
-#include "Python.h"
-#include "code.h"
-#include "structmember.h"
-
-#define NAME_CHARS \
-    "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"
-
-/* all_name_chars(s): true iff all chars in s are valid NAME_CHARS */
-
-static int
-all_name_chars(unsigned char *s)
-{
-    static char ok_name_char[256];
-    static unsigned char *name_chars = (unsigned char *)NAME_CHARS;
-
-    if (ok_name_char[*name_chars] == 0) {
-        unsigned char *p;
-        for (p = name_chars; *p; p++)
-            ok_name_char[*p] = 1;
-    }
-    while (*s) {
-        if (ok_name_char[*s++] == 0)
-            return 0;
-    }
-    return 1;
-}
-
-static void
-intern_strings(PyObject *tuple)
-{
-    Py_ssize_t i;
-
-    for (i = PyTuple_GET_SIZE(tuple); --i >= 0; ) {
-        PyObject *v = PyTuple_GET_ITEM(tuple, i);
-        if (v == NULL || !PyString_CheckExact(v)) {
-            Py_FatalError("non-string found in code slot");
-        }
-        PyString_InternInPlace(&PyTuple_GET_ITEM(tuple, i));
-    }
-}
-
-
-PyCodeObject *
-PyCode_New(int argcount, int nlocals, int stacksize, int flags,
-           PyObject *code, PyObject *consts, PyObject *names,
-           PyObject *varnames, PyObject *freevars, PyObject *cellvars,
-           PyObject *filename, PyObject *name, int firstlineno,
-           PyObject *lnotab)
-{
-    PyCodeObject *co;
-    Py_ssize_t i;
-    /* Check argument types */
-    if (argcount < 0 || nlocals < 0 ||
-        code == NULL ||
-        consts == NULL || !PyTuple_Check(consts) ||
-        names == NULL || !PyTuple_Check(names) ||
-        varnames == NULL || !PyTuple_Check(varnames) ||
-        freevars == NULL || !PyTuple_Check(freevars) ||
-        cellvars == NULL || !PyTuple_Check(cellvars) ||
-        name == NULL || !PyString_Check(name) ||
-        filename == NULL || !PyString_Check(filename) ||
-        lnotab == NULL || !PyString_Check(lnotab) ||
-        !PyObject_CheckReadBuffer(code)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    intern_strings(names);
-    intern_strings(varnames);
-    intern_strings(freevars);
-    intern_strings(cellvars);
-    /* Intern selected string constants */
-    for (i = PyTuple_Size(consts); --i >= 0; ) {
-        PyObject *v = PyTuple_GetItem(consts, i);
-        if (!PyString_Check(v))
-            continue;
-        if (!all_name_chars((unsigned char *)PyString_AS_STRING(v)))
-            continue;
-        PyString_InternInPlace(&PyTuple_GET_ITEM(consts, i));
-    }
-    co = PyObject_NEW(PyCodeObject, &PyCode_Type);
-    if (co != NULL) {
-        co->co_argcount = argcount;
-        co->co_nlocals = nlocals;
-        co->co_stacksize = stacksize;
-        co->co_flags = flags;
-        Py_INCREF(code);
-        co->co_code = code;
-        Py_INCREF(consts);
-        co->co_consts = consts;
-        Py_INCREF(names);
-        co->co_names = names;
-        Py_INCREF(varnames);
-        co->co_varnames = varnames;
-        Py_INCREF(freevars);
-        co->co_freevars = freevars;
-        Py_INCREF(cellvars);
-        co->co_cellvars = cellvars;
-        Py_INCREF(filename);
-        co->co_filename = filename;
-        Py_INCREF(name);
-        co->co_name = name;
-        co->co_firstlineno = firstlineno;
-        Py_INCREF(lnotab);
-        co->co_lnotab = lnotab;
-        co->co_zombieframe = NULL;
-        co->co_weakreflist = NULL;
-    }
-    return co;
-}
-
-PyCodeObject *
-PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno)
-{
-    static PyObject *emptystring = NULL;
-    static PyObject *nulltuple = NULL;
-    PyObject *filename_ob = NULL;
-    PyObject *funcname_ob = NULL;
-    PyCodeObject *result = NULL;
-    if (emptystring == NULL) {
-        emptystring = PyString_FromString("");
-        if (emptystring == NULL)
-            goto failed;
-    }
-    if (nulltuple == NULL) {
-        nulltuple = PyTuple_New(0);
-        if (nulltuple == NULL)
-            goto failed;
-    }
-    funcname_ob = PyString_FromString(funcname);
-    if (funcname_ob == NULL)
-        goto failed;
-    filename_ob = PyString_FromString(filename);
-    if (filename_ob == NULL)
-        goto failed;
-
-    result = PyCode_New(0,                      /* argcount */
-                0,                              /* nlocals */
-                0,                              /* stacksize */
-                0,                              /* flags */
-                emptystring,                    /* code */
-                nulltuple,                      /* consts */
-                nulltuple,                      /* names */
-                nulltuple,                      /* varnames */
-                nulltuple,                      /* freevars */
-                nulltuple,                      /* cellvars */
-                filename_ob,                    /* filename */
-                funcname_ob,                    /* name */
-                firstlineno,                    /* firstlineno */
-                emptystring                     /* lnotab */
-                );
-
-failed:
-    Py_XDECREF(funcname_ob);
-    Py_XDECREF(filename_ob);
-    return result;
-}
-
-#define OFF(x) offsetof(PyCodeObject, x)
-
-static PyMemberDef code_memberlist[] = {
-    {"co_argcount",     T_INT,          OFF(co_argcount),       READONLY},
-    {"co_nlocals",      T_INT,          OFF(co_nlocals),        READONLY},
-    {"co_stacksize",T_INT,              OFF(co_stacksize),      READONLY},
-    {"co_flags",        T_INT,          OFF(co_flags),          READONLY},
-    {"co_code",         T_OBJECT,       OFF(co_code),           READONLY},
-    {"co_consts",       T_OBJECT,       OFF(co_consts),         READONLY},
-    {"co_names",        T_OBJECT,       OFF(co_names),          READONLY},
-    {"co_varnames",     T_OBJECT,       OFF(co_varnames),       READONLY},
-    {"co_freevars",     T_OBJECT,       OFF(co_freevars),       READONLY},
-    {"co_cellvars",     T_OBJECT,       OFF(co_cellvars),       READONLY},
-    {"co_filename",     T_OBJECT,       OFF(co_filename),       READONLY},
-    {"co_name",         T_OBJECT,       OFF(co_name),           READONLY},
-    {"co_firstlineno", T_INT,           OFF(co_firstlineno),    READONLY},
-    {"co_lnotab",       T_OBJECT,       OFF(co_lnotab),         READONLY},
-    {NULL}      /* Sentinel */
-};
-
-/* Helper for code_new: return a shallow copy of a tuple that is
-   guaranteed to contain exact strings, by converting string subclasses
-   to exact strings and complaining if a non-string is found. */
-static PyObject*
-validate_and_copy_tuple(PyObject *tup)
-{
-    PyObject *newtuple;
-    PyObject *item;
-    Py_ssize_t i, len;
-
-    len = PyTuple_GET_SIZE(tup);
-    newtuple = PyTuple_New(len);
-    if (newtuple == NULL)
-        return NULL;
-
-    for (i = 0; i < len; i++) {
-        item = PyTuple_GET_ITEM(tup, i);
-        if (PyString_CheckExact(item)) {
-            Py_INCREF(item);
-        }
-        else if (!PyString_Check(item)) {
-            PyErr_Format(
-                PyExc_TypeError,
-                "name tuples must contain only "
-                "strings, not '%.500s'",
-                item->ob_type->tp_name);
-            Py_DECREF(newtuple);
-            return NULL;
-        }
-        else {
-            item = PyString_FromStringAndSize(
-                PyString_AS_STRING(item),
-                PyString_GET_SIZE(item));
-            if (item == NULL) {
-                Py_DECREF(newtuple);
-                return NULL;
-            }
-        }
-        PyTuple_SET_ITEM(newtuple, i, item);
-    }
-
-    return newtuple;
-}
-
-PyDoc_STRVAR(code_doc,
-"code(argcount, nlocals, stacksize, flags, codestring, constants, names,\n\
-      varnames, filename, name, firstlineno, lnotab[, freevars[, cellvars]])\n\
-\n\
-Create a code object.  Not for the faint of heart.");
-
-static PyObject *
-code_new(PyTypeObject *type, PyObject *args, PyObject *kw)
-{
-    int argcount;
-    int nlocals;
-    int stacksize;
-    int flags;
-    PyObject *co = NULL;
-    PyObject *code;
-    PyObject *consts;
-    PyObject *names, *ournames = NULL;
-    PyObject *varnames, *ourvarnames = NULL;
-    PyObject *freevars = NULL, *ourfreevars = NULL;
-    PyObject *cellvars = NULL, *ourcellvars = NULL;
-    PyObject *filename;
-    PyObject *name;
-    int firstlineno;
-    PyObject *lnotab;
-
-    if (!PyArg_ParseTuple(args, "iiiiSO!O!O!SSiS|O!O!:code",
-                          &argcount, &nlocals, &stacksize, &flags,
-                          &code,
-                          &PyTuple_Type, &consts,
-                          &PyTuple_Type, &names,
-                          &PyTuple_Type, &varnames,
-                          &filename, &name,
-                          &firstlineno, &lnotab,
-                          &PyTuple_Type, &freevars,
-                          &PyTuple_Type, &cellvars))
-        return NULL;
-
-    if (argcount < 0) {
-        PyErr_SetString(
-            PyExc_ValueError,
-            "code: argcount must not be negative");
-        goto cleanup;
-    }
-
-    if (nlocals < 0) {
-        PyErr_SetString(
-            PyExc_ValueError,
-            "code: nlocals must not be negative");
-        goto cleanup;
-    }
-
-    ournames = validate_and_copy_tuple(names);
-    if (ournames == NULL)
-        goto cleanup;
-    ourvarnames = validate_and_copy_tuple(varnames);
-    if (ourvarnames == NULL)
-        goto cleanup;
-    if (freevars)
-        ourfreevars = validate_and_copy_tuple(freevars);
-    else
-        ourfreevars = PyTuple_New(0);
-    if (ourfreevars == NULL)
-        goto cleanup;
-    if (cellvars)
-        ourcellvars = validate_and_copy_tuple(cellvars);
-    else
-        ourcellvars = PyTuple_New(0);
-    if (ourcellvars == NULL)
-        goto cleanup;
-
-    co = (PyObject *)PyCode_New(argcount, nlocals, stacksize, flags,
-                                code, consts, ournames, ourvarnames,
-                                ourfreevars, ourcellvars, filename,
-                                name, firstlineno, lnotab);
-  cleanup:
-    Py_XDECREF(ournames);
-    Py_XDECREF(ourvarnames);
-    Py_XDECREF(ourfreevars);
-    Py_XDECREF(ourcellvars);
-    return co;
-}
-
-static void
-code_dealloc(PyCodeObject *co)
-{
-    Py_XDECREF(co->co_code);
-    Py_XDECREF(co->co_consts);
-    Py_XDECREF(co->co_names);
-    Py_XDECREF(co->co_varnames);
-    Py_XDECREF(co->co_freevars);
-    Py_XDECREF(co->co_cellvars);
-    Py_XDECREF(co->co_filename);
-    Py_XDECREF(co->co_name);
-    Py_XDECREF(co->co_lnotab);
-    if (co->co_zombieframe != NULL)
-        PyObject_GC_Del(co->co_zombieframe);
-    if (co->co_weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject*)co);
-    PyObject_DEL(co);
-}
-
-static PyObject *
-code_repr(PyCodeObject *co)
-{
-    char buf[500];
-    int lineno = -1;
-    char *filename = "???";
-    char *name = "???";
-
-    if (co->co_firstlineno != 0)
-        lineno = co->co_firstlineno;
-    if (co->co_filename && PyString_Check(co->co_filename))
-        filename = PyString_AS_STRING(co->co_filename);
-    if (co->co_name && PyString_Check(co->co_name))
-        name = PyString_AS_STRING(co->co_name);
-    PyOS_snprintf(buf, sizeof(buf),
-                  "<code object %.100s at %p, file \"%.300s\", line %d>",
-                  name, co, filename, lineno);
-    return PyString_FromString(buf);
-}
-
-static int
-code_compare(PyCodeObject *co, PyCodeObject *cp)
-{
-    int cmp;
-    cmp = PyObject_Compare(co->co_name, cp->co_name);
-    if (cmp) return cmp;
-    cmp = co->co_argcount - cp->co_argcount;
-    if (cmp) goto normalize;
-    cmp = co->co_nlocals - cp->co_nlocals;
-    if (cmp) goto normalize;
-    cmp = co->co_flags - cp->co_flags;
-    if (cmp) goto normalize;
-    cmp = co->co_firstlineno - cp->co_firstlineno;
-    if (cmp) goto normalize;
-    cmp = PyObject_Compare(co->co_code, cp->co_code);
-    if (cmp) return cmp;
-    cmp = PyObject_Compare(co->co_consts, cp->co_consts);
-    if (cmp) return cmp;
-    cmp = PyObject_Compare(co->co_names, cp->co_names);
-    if (cmp) return cmp;
-    cmp = PyObject_Compare(co->co_varnames, cp->co_varnames);
-    if (cmp) return cmp;
-    cmp = PyObject_Compare(co->co_freevars, cp->co_freevars);
-    if (cmp) return cmp;
-    cmp = PyObject_Compare(co->co_cellvars, cp->co_cellvars);
-    return cmp;
-
- normalize:
-    if (cmp > 0)
-        return 1;
-    else if (cmp < 0)
-        return -1;
-    else
-        return 0;
-}
-
-static PyObject *
-code_richcompare(PyObject *self, PyObject *other, int op)
-{
-    PyCodeObject *co, *cp;
-    int eq;
-    PyObject *res;
-
-    if ((op != Py_EQ && op != Py_NE) ||
-        !PyCode_Check(self) ||
-        !PyCode_Check(other)) {
-
-        /* Py3K warning if types are not equal and comparison
-        isn't == or !=  */
-        if (PyErr_WarnPy3k("code inequality comparisons not supported "
-                           "in 3.x", 1) < 0) {
-            return NULL;
-        }
-
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-
-    co = (PyCodeObject *)self;
-    cp = (PyCodeObject *)other;
-
-    eq = PyObject_RichCompareBool(co->co_name, cp->co_name, Py_EQ);
-    if (eq <= 0) goto unequal;
-    eq = co->co_argcount == cp->co_argcount;
-    if (!eq) goto unequal;
-    eq = co->co_nlocals == cp->co_nlocals;
-    if (!eq) goto unequal;
-    eq = co->co_flags == cp->co_flags;
-    if (!eq) goto unequal;
-    eq = co->co_firstlineno == cp->co_firstlineno;
-    if (!eq) goto unequal;
-    eq = PyObject_RichCompareBool(co->co_code, cp->co_code, Py_EQ);
-    if (eq <= 0) goto unequal;
-    eq = PyObject_RichCompareBool(co->co_consts, cp->co_consts, Py_EQ);
-    if (eq <= 0) goto unequal;
-    eq = PyObject_RichCompareBool(co->co_names, cp->co_names, Py_EQ);
-    if (eq <= 0) goto unequal;
-    eq = PyObject_RichCompareBool(co->co_varnames, cp->co_varnames, Py_EQ);
-    if (eq <= 0) goto unequal;
-    eq = PyObject_RichCompareBool(co->co_freevars, cp->co_freevars, Py_EQ);
-    if (eq <= 0) goto unequal;
-    eq = PyObject_RichCompareBool(co->co_cellvars, cp->co_cellvars, Py_EQ);
-    if (eq <= 0) goto unequal;
-
-    if (op == Py_EQ)
-        res = Py_True;
-    else
-        res = Py_False;
-    goto done;
-
-  unequal:
-    if (eq < 0)
-        return NULL;
-    if (op == Py_NE)
-        res = Py_True;
-    else
-        res = Py_False;
-
-  done:
-    Py_INCREF(res);
-    return res;
-}
-
-static long
-code_hash(PyCodeObject *co)
-{
-    long h, h0, h1, h2, h3, h4, h5, h6;
-    h0 = PyObject_Hash(co->co_name);
-    if (h0 == -1) return -1;
-    h1 = PyObject_Hash(co->co_code);
-    if (h1 == -1) return -1;
-    h2 = PyObject_Hash(co->co_consts);
-    if (h2 == -1) return -1;
-    h3 = PyObject_Hash(co->co_names);
-    if (h3 == -1) return -1;
-    h4 = PyObject_Hash(co->co_varnames);
-    if (h4 == -1) return -1;
-    h5 = PyObject_Hash(co->co_freevars);
-    if (h5 == -1) return -1;
-    h6 = PyObject_Hash(co->co_cellvars);
-    if (h6 == -1) return -1;
-    h = h0 ^ h1 ^ h2 ^ h3 ^ h4 ^ h5 ^ h6 ^
-        co->co_argcount ^ co->co_nlocals ^ co->co_flags;
-    if (h == -1) h = -2;
-    return h;
-}
-
-/* XXX code objects need to participate in GC? */
-
-PyTypeObject PyCode_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "code",
-    sizeof(PyCodeObject),
-    0,
-    (destructor)code_dealloc,           /* tp_dealloc */
-    0,                                  /* tp_print */
-    0,                                  /* tp_getattr */
-    0,                                  /* tp_setattr */
-    (cmpfunc)code_compare,              /* tp_compare */
-    (reprfunc)code_repr,                /* tp_repr */
-    0,                                  /* tp_as_number */
-    0,                                  /* tp_as_sequence */
-    0,                                  /* tp_as_mapping */
-    (hashfunc)code_hash,                /* tp_hash */
-    0,                                  /* tp_call */
-    0,                                  /* tp_str */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                 /* tp_flags */
-    code_doc,                           /* tp_doc */
-    0,                                  /* tp_traverse */
-    0,                                  /* tp_clear */
-    code_richcompare,                   /* tp_richcompare */
-    offsetof(PyCodeObject, co_weakreflist), /* tp_weaklistoffset */
-    0,                                  /* tp_iter */
-    0,                                  /* tp_iternext */
-    0,                                  /* tp_methods */
-    code_memberlist,                    /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    0,                                  /* tp_alloc */
-    code_new,                           /* tp_new */
-};
-
-/* Use co_lnotab to compute the line number from a bytecode index, addrq.  See
-   lnotab_notes.txt for the details of the lnotab representation.
-*/
-
-int
-PyCode_Addr2Line(PyCodeObject *co, int addrq)
-{
-    int size = PyString_Size(co->co_lnotab) / 2;
-    unsigned char *p = (unsigned char*)PyString_AsString(co->co_lnotab);
-    int line = co->co_firstlineno;
-    int addr = 0;
-    while (--size >= 0) {
-        addr += *p++;
-        if (addr > addrq)
-            break;
-        line += *p++;
-    }
-    return line;
-}
-
-/* Update *bounds to describe the first and one-past-the-last instructions in
-   the same line as lasti.  Return the number of that line. */
-int
-_PyCode_CheckLineNumber(PyCodeObject* co, int lasti, PyAddrPair *bounds)
-{
-    int size, addr, line;
-    unsigned char* p;
-
-    p = (unsigned char*)PyString_AS_STRING(co->co_lnotab);
-    size = PyString_GET_SIZE(co->co_lnotab) / 2;
-
-    addr = 0;
-    line = co->co_firstlineno;
-    assert(line > 0);
-
-    /* possible optimization: if f->f_lasti == instr_ub
-       (likely to be a common case) then we already know
-       instr_lb -- if we stored the matching value of p
-       somwhere we could skip the first while loop. */
-
-    /* See lnotab_notes.txt for the description of
-       co_lnotab.  A point to remember: increments to p
-       come in (addr, line) pairs. */
-
-    bounds->ap_lower = 0;
-    while (size > 0) {
-        if (addr + *p > lasti)
-            break;
-        addr += *p++;
-        if (*p)
-            bounds->ap_lower = addr;
-        line += *p++;
-        --size;
-    }
-
-    if (size > 0) {
-        while (--size >= 0) {
-            addr += *p++;
-            if (*p++)
-                break;
-        }
-        bounds->ap_upper = addr;
-    }
-    else {
-        bounds->ap_upper = INT_MAX;
-    }
-
-    return line;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/complexobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/complexobject.c
deleted file mode 100644
index b83d49e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/complexobject.c
+++ /dev/null
@@ -1,1353 +0,0 @@
-
-/* Complex object implementation */
-
-/* Borrows heavily from floatobject.c */
-
-/* Submitted by Jim Hugunin */
-
-#include "Python.h"
-#include "structmember.h"
-
-#ifndef WITHOUT_COMPLEX
-
-/* Precisions used by repr() and str(), respectively.
-
-   The repr() precision (17 significant decimal digits) is the minimal number
-   that is guaranteed to have enough precision so that if the number is read
-   back in the exact same binary value is recreated.  This is true for IEEE
-   floating point by design, and also happens to work for all other modern
-   hardware.
-
-   The str() precision is chosen so that in most cases, the rounding noise
-   created by various operations is suppressed, while giving plenty of
-   precision for practical use.
-*/
-
-#define PREC_REPR       17
-#define PREC_STR        12
-
-/* elementary operations on complex numbers */
-
-static Py_complex c_1 = {1., 0.};
-
-Py_complex
-c_sum(Py_complex a, Py_complex b)
-{
-    Py_complex r;
-    r.real = a.real + b.real;
-    r.imag = a.imag + b.imag;
-    return r;
-}
-
-Py_complex
-c_diff(Py_complex a, Py_complex b)
-{
-    Py_complex r;
-    r.real = a.real - b.real;
-    r.imag = a.imag - b.imag;
-    return r;
-}
-
-Py_complex
-c_neg(Py_complex a)
-{
-    Py_complex r;
-    r.real = -a.real;
-    r.imag = -a.imag;
-    return r;
-}
-
-Py_complex
-c_prod(Py_complex a, Py_complex b)
-{
-    Py_complex r;
-    r.real = a.real*b.real - a.imag*b.imag;
-    r.imag = a.real*b.imag + a.imag*b.real;
-    return r;
-}
-
-Py_complex
-c_quot(Py_complex a, Py_complex b)
-{
-    /******************************************************************
-    This was the original algorithm.  It's grossly prone to spurious
-    overflow and underflow errors.  It also merrily divides by 0 despite
-    checking for that(!).  The code still serves a doc purpose here, as
-    the algorithm following is a simple by-cases transformation of this
-    one:
-
-    Py_complex r;
-    double d = b.real*b.real + b.imag*b.imag;
-    if (d == 0.)
-        errno = EDOM;
-    r.real = (a.real*b.real + a.imag*b.imag)/d;
-    r.imag = (a.imag*b.real - a.real*b.imag)/d;
-    return r;
-    ******************************************************************/
-
-    /* This algorithm is better, and is pretty obvious:  first divide the
-     * numerators and denominator by whichever of {b.real, b.imag} has
-     * larger magnitude.  The earliest reference I found was to CACM
-     * Algorithm 116 (Complex Division, Robert L. Smith, Stanford
-     * University).  As usual, though, we're still ignoring all IEEE
-     * endcases.
-     */
-     Py_complex r;      /* the result */
-     const double abs_breal = b.real < 0 ? -b.real : b.real;
-     const double abs_bimag = b.imag < 0 ? -b.imag : b.imag;
-
-     if (abs_breal >= abs_bimag) {
-        /* divide tops and bottom by b.real */
-        if (abs_breal == 0.0) {
-            errno = EDOM;
-            r.real = r.imag = 0.0;
-        }
-        else {
-            const double ratio = b.imag / b.real;
-            const double denom = b.real + b.imag * ratio;
-            r.real = (a.real + a.imag * ratio) / denom;
-            r.imag = (a.imag - a.real * ratio) / denom;
-        }
-    }
-    else {
-        /* divide tops and bottom by b.imag */
-        const double ratio = b.real / b.imag;
-        const double denom = b.real * ratio + b.imag;
-        assert(b.imag != 0.0);
-        r.real = (a.real * ratio + a.imag) / denom;
-        r.imag = (a.imag * ratio - a.real) / denom;
-    }
-    return r;
-}
-
-Py_complex
-c_pow(Py_complex a, Py_complex b)
-{
-    Py_complex r;
-    double vabs,len,at,phase;
-    if (b.real == 0. && b.imag == 0.) {
-        r.real = 1.;
-        r.imag = 0.;
-    }
-    else if (a.real == 0. && a.imag == 0.) {
-        if (b.imag != 0. || b.real < 0.)
-            errno = EDOM;
-        r.real = 0.;
-        r.imag = 0.;
-    }
-    else {
-        vabs = hypot(a.real,a.imag);
-        len = pow(vabs,b.real);
-        at = atan2(a.imag, a.real);
-        phase = at*b.real;
-        if (b.imag != 0.0) {
-            len /= exp(at*b.imag);
-            phase += b.imag*log(vabs);
-        }
-        r.real = len*cos(phase);
-        r.imag = len*sin(phase);
-    }
-    return r;
-}
-
-static Py_complex
-c_powu(Py_complex x, long n)
-{
-    Py_complex r, p;
-    long mask = 1;
-    r = c_1;
-    p = x;
-    while (mask > 0 && n >= mask) {
-        if (n & mask)
-            r = c_prod(r,p);
-        mask <<= 1;
-        p = c_prod(p,p);
-    }
-    return r;
-}
-
-static Py_complex
-c_powi(Py_complex x, long n)
-{
-    Py_complex cn;
-
-    if (n > 100 || n < -100) {
-        cn.real = (double) n;
-        cn.imag = 0.;
-        return c_pow(x,cn);
-    }
-    else if (n > 0)
-        return c_powu(x,n);
-    else
-        return c_quot(c_1,c_powu(x,-n));
-
-}
-
-double
-c_abs(Py_complex z)
-{
-    /* sets errno = ERANGE on overflow;  otherwise errno = 0 */
-    double result;
-
-    if (!Py_IS_FINITE(z.real) || !Py_IS_FINITE(z.imag)) {
-        /* C99 rules: if either the real or the imaginary part is an
-           infinity, return infinity, even if the other part is a
-           NaN. */
-        if (Py_IS_INFINITY(z.real)) {
-            result = fabs(z.real);
-            errno = 0;
-            return result;
-        }
-        if (Py_IS_INFINITY(z.imag)) {
-            result = fabs(z.imag);
-            errno = 0;
-            return result;
-        }
-        /* either the real or imaginary part is a NaN,
-           and neither is infinite. Result should be NaN. */
-        return Py_NAN;
-    }
-    result = hypot(z.real, z.imag);
-    if (!Py_IS_FINITE(result))
-        errno = ERANGE;
-    else
-        errno = 0;
-    return result;
-}
-
-static PyObject *
-complex_subtype_from_c_complex(PyTypeObject *type, Py_complex cval)
-{
-    PyObject *op;
-
-    op = type->tp_alloc(type, 0);
-    if (op != NULL)
-        ((PyComplexObject *)op)->cval = cval;
-    return op;
-}
-
-PyObject *
-PyComplex_FromCComplex(Py_complex cval)
-{
-    register PyComplexObject *op;
-
-    /* Inline PyObject_New */
-    op = (PyComplexObject *) PyObject_MALLOC(sizeof(PyComplexObject));
-    if (op == NULL)
-        return PyErr_NoMemory();
-    PyObject_INIT(op, &PyComplex_Type);
-    op->cval = cval;
-    return (PyObject *) op;
-}
-
-static PyObject *
-complex_subtype_from_doubles(PyTypeObject *type, double real, double imag)
-{
-    Py_complex c;
-    c.real = real;
-    c.imag = imag;
-    return complex_subtype_from_c_complex(type, c);
-}
-
-PyObject *
-PyComplex_FromDoubles(double real, double imag)
-{
-    Py_complex c;
-    c.real = real;
-    c.imag = imag;
-    return PyComplex_FromCComplex(c);
-}
-
-double
-PyComplex_RealAsDouble(PyObject *op)
-{
-    if (PyComplex_Check(op)) {
-        return ((PyComplexObject *)op)->cval.real;
-    }
-    else {
-        return PyFloat_AsDouble(op);
-    }
-}
-
-double
-PyComplex_ImagAsDouble(PyObject *op)
-{
-    if (PyComplex_Check(op)) {
-        return ((PyComplexObject *)op)->cval.imag;
-    }
-    else {
-        return 0.0;
-    }
-}
-
-static PyObject *
-try_complex_special_method(PyObject *op) {
-    PyObject *f;
-    static PyObject *complexstr;
-
-    if (complexstr == NULL) {
-        complexstr = PyString_InternFromString("__complex__");
-        if (complexstr == NULL)
-            return NULL;
-    }
-    if (PyInstance_Check(op)) {
-        f = PyObject_GetAttr(op, complexstr);
-        if (f == NULL) {
-            if (PyErr_ExceptionMatches(PyExc_AttributeError))
-                PyErr_Clear();
-            else
-                return NULL;
-        }
-    }
-    else {
-        f = _PyObject_LookupSpecial(op, "__complex__", &complexstr);
-        if (f == NULL && PyErr_Occurred())
-            return NULL;
-    }
-    if (f != NULL) {
-        PyObject *res = PyObject_CallFunctionObjArgs(f, NULL);
-        Py_DECREF(f);
-        return res;
-    }
-    return NULL;
-}
-
-Py_complex
-PyComplex_AsCComplex(PyObject *op)
-{
-    Py_complex cv;
-    PyObject *newop = NULL;
-
-    assert(op);
-    /* If op is already of type PyComplex_Type, return its value */
-    if (PyComplex_Check(op)) {
-        return ((PyComplexObject *)op)->cval;
-    }
-    /* If not, use op's __complex__  method, if it exists */
-
-    /* return -1 on failure */
-    cv.real = -1.;
-    cv.imag = 0.;
-
-    newop = try_complex_special_method(op);
-
-    if (newop) {
-        if (!PyComplex_Check(newop)) {
-            PyErr_SetString(PyExc_TypeError,
-                "__complex__ should return a complex object");
-            Py_DECREF(newop);
-            return cv;
-        }
-        cv = ((PyComplexObject *)newop)->cval;
-        Py_DECREF(newop);
-        return cv;
-    }
-    else if (PyErr_Occurred()) {
-        return cv;
-    }
-    /* If neither of the above works, interpret op as a float giving the
-       real part of the result, and fill in the imaginary part as 0. */
-    else {
-        /* PyFloat_AsDouble will return -1 on failure */
-        cv.real = PyFloat_AsDouble(op);
-        return cv;
-    }
-}
-
-static void
-complex_dealloc(PyObject *op)
-{
-    op->ob_type->tp_free(op);
-}
-
-
-static PyObject *
-complex_format(PyComplexObject *v, int precision, char format_code)
-{
-    PyObject *result = NULL;
-    Py_ssize_t len;
-
-    /* If these are non-NULL, they'll need to be freed. */
-    char *pre = NULL;
-    char *im = NULL;
-    char *buf = NULL;
-
-    /* These do not need to be freed. re is either an alias
-       for pre or a pointer to a constant.  lead and tail
-       are pointers to constants. */
-    char *re = NULL;
-    char *lead = "";
-    char *tail = "";
-
-    if (v->cval.real == 0. && copysign(1.0, v->cval.real)==1.0) {
-        re = "";
-        im = PyOS_double_to_string(v->cval.imag, format_code,
-                                   precision, 0, NULL);
-        if (!im) {
-            PyErr_NoMemory();
-            goto done;
-        }
-    } else {
-        /* Format imaginary part with sign, real part without */
-        pre = PyOS_double_to_string(v->cval.real, format_code,
-                                    precision, 0, NULL);
-        if (!pre) {
-            PyErr_NoMemory();
-            goto done;
-        }
-        re = pre;
-
-        im = PyOS_double_to_string(v->cval.imag, format_code,
-                                   precision, Py_DTSF_SIGN, NULL);
-        if (!im) {
-            PyErr_NoMemory();
-            goto done;
-        }
-        lead = "(";
-        tail = ")";
-    }
-    /* Alloc the final buffer. Add one for the "j" in the format string,
-       and one for the trailing zero. */
-    len = strlen(lead) + strlen(re) + strlen(im) + strlen(tail) + 2;
-    buf = PyMem_Malloc(len);
-    if (!buf) {
-        PyErr_NoMemory();
-        goto done;
-    }
-    PyOS_snprintf(buf, len, "%s%s%sj%s", lead, re, im, tail);
-    result = PyString_FromString(buf);
-  done:
-    PyMem_Free(im);
-    PyMem_Free(pre);
-    PyMem_Free(buf);
-
-    return result;
-}
-
-static int
-complex_print(PyComplexObject *v, FILE *fp, int flags)
-{
-    PyObject *formatv;
-    char *buf;
-    if (flags & Py_PRINT_RAW)
-        formatv = complex_format(v, PyFloat_STR_PRECISION, 'g');
-    else
-        formatv = complex_format(v, 0, 'r');
-    if (formatv == NULL)
-        return -1;
-    buf = PyString_AS_STRING(formatv);
-    Py_BEGIN_ALLOW_THREADS
-    fputs(buf, fp);
-    Py_END_ALLOW_THREADS
-    Py_DECREF(formatv);
-    return 0;
-}
-
-static PyObject *
-complex_repr(PyComplexObject *v)
-{
-    return complex_format(v, 0, 'r');
-}
-
-static PyObject *
-complex_str(PyComplexObject *v)
-{
-    return complex_format(v, PyFloat_STR_PRECISION, 'g');
-}
-
-static long
-complex_hash(PyComplexObject *v)
-{
-    long hashreal, hashimag, combined;
-    hashreal = _Py_HashDouble(v->cval.real);
-    if (hashreal == -1)
-        return -1;
-    hashimag = _Py_HashDouble(v->cval.imag);
-    if (hashimag == -1)
-        return -1;
-    /* Note:  if the imaginary part is 0, hashimag is 0 now,
-     * so the following returns hashreal unchanged.  This is
-     * important because numbers of different types that
-     * compare equal must have the same hash value, so that
-     * hash(x + 0*j) must equal hash(x).
-     */
-    combined = hashreal + 1000003 * hashimag;
-    if (combined == -1)
-        combined = -2;
-    return combined;
-}
-
-/* This macro may return! */
-#define TO_COMPLEX(obj, c) \
-    if (PyComplex_Check(obj)) \
-        c = ((PyComplexObject *)(obj))->cval; \
-    else if (to_complex(&(obj), &(c)) < 0) \
-        return (obj)
-
-static int
-to_complex(PyObject **pobj, Py_complex *pc)
-{
-    PyObject *obj = *pobj;
-
-    pc->real = pc->imag = 0.0;
-    if (PyInt_Check(obj)) {
-    pc->real = PyInt_AS_LONG(obj);
-    return 0;
-    }
-    if (PyLong_Check(obj)) {
-    pc->real = PyLong_AsDouble(obj);
-    if (pc->real == -1.0 && PyErr_Occurred()) {
-        *pobj = NULL;
-        return -1;
-    }
-    return 0;
-    }
-    if (PyFloat_Check(obj)) {
-    pc->real = PyFloat_AsDouble(obj);
-    return 0;
-    }
-    Py_INCREF(Py_NotImplemented);
-    *pobj = Py_NotImplemented;
-    return -1;
-}
-
-
-static PyObject *
-complex_add(PyObject *v, PyObject *w)
-{
-    Py_complex result;
-    Py_complex a, b;
-    TO_COMPLEX(v, a);
-    TO_COMPLEX(w, b);
-    PyFPE_START_PROTECT("complex_add", return 0)
-    result = c_sum(a, b);
-    PyFPE_END_PROTECT(result)
-    return PyComplex_FromCComplex(result);
-}
-
-static PyObject *
-complex_sub(PyObject *v, PyObject *w)
-{
-    Py_complex result;
-    Py_complex a, b;
-    TO_COMPLEX(v, a);
-    TO_COMPLEX(w, b);;
-    PyFPE_START_PROTECT("complex_sub", return 0)
-    result = c_diff(a, b);
-    PyFPE_END_PROTECT(result)
-    return PyComplex_FromCComplex(result);
-}
-
-static PyObject *
-complex_mul(PyObject *v, PyObject *w)
-{
-    Py_complex result;
-    Py_complex a, b;
-    TO_COMPLEX(v, a);
-    TO_COMPLEX(w, b);
-    PyFPE_START_PROTECT("complex_mul", return 0)
-    result = c_prod(a, b);
-    PyFPE_END_PROTECT(result)
-    return PyComplex_FromCComplex(result);
-}
-
-static PyObject *
-complex_div(PyObject *v, PyObject *w)
-{
-    Py_complex quot;
-    Py_complex a, b;
-    TO_COMPLEX(v, a);
-    TO_COMPLEX(w, b);
-    PyFPE_START_PROTECT("complex_div", return 0)
-    errno = 0;
-    quot = c_quot(a, b);
-    PyFPE_END_PROTECT(quot)
-    if (errno == EDOM) {
-        PyErr_SetString(PyExc_ZeroDivisionError, "complex division by zero");
-        return NULL;
-    }
-    return PyComplex_FromCComplex(quot);
-}
-
-static PyObject *
-complex_classic_div(PyObject *v, PyObject *w)
-{
-    Py_complex quot;
-    Py_complex a, b;
-    TO_COMPLEX(v, a);
-    TO_COMPLEX(w, b);
-    if (Py_DivisionWarningFlag >= 2 &&
-        PyErr_Warn(PyExc_DeprecationWarning,
-                   "classic complex division") < 0)
-        return NULL;
-
-    PyFPE_START_PROTECT("complex_classic_div", return 0)
-    errno = 0;
-    quot = c_quot(a, b);
-    PyFPE_END_PROTECT(quot)
-    if (errno == EDOM) {
-        PyErr_SetString(PyExc_ZeroDivisionError, "complex division by zero");
-        return NULL;
-    }
-    return PyComplex_FromCComplex(quot);
-}
-
-static PyObject *
-complex_remainder(PyObject *v, PyObject *w)
-{
-    Py_complex div, mod;
-    Py_complex a, b;
-    TO_COMPLEX(v, a);
-    TO_COMPLEX(w, b);
-    if (PyErr_Warn(PyExc_DeprecationWarning,
-                   "complex divmod(), // and % are deprecated") < 0)
-        return NULL;
-
-    errno = 0;
-    div = c_quot(a, b); /* The raw divisor value. */
-    if (errno == EDOM) {
-        PyErr_SetString(PyExc_ZeroDivisionError, "complex remainder");
-        return NULL;
-    }
-    div.real = floor(div.real); /* Use the floor of the real part. */
-    div.imag = 0.0;
-    mod = c_diff(a, c_prod(b, div));
-
-    return PyComplex_FromCComplex(mod);
-}
-
-
-static PyObject *
-complex_divmod(PyObject *v, PyObject *w)
-{
-    Py_complex div, mod;
-    PyObject *d, *m, *z;
-    Py_complex a, b;
-    TO_COMPLEX(v, a);
-    TO_COMPLEX(w, b);
-    if (PyErr_Warn(PyExc_DeprecationWarning,
-                   "complex divmod(), // and % are deprecated") < 0)
-        return NULL;
-
-    errno = 0;
-    div = c_quot(a, b); /* The raw divisor value. */
-    if (errno == EDOM) {
-        PyErr_SetString(PyExc_ZeroDivisionError, "complex divmod()");
-        return NULL;
-    }
-    div.real = floor(div.real); /* Use the floor of the real part. */
-    div.imag = 0.0;
-    mod = c_diff(a, c_prod(b, div));
-    d = PyComplex_FromCComplex(div);
-    m = PyComplex_FromCComplex(mod);
-    z = PyTuple_Pack(2, d, m);
-    Py_XDECREF(d);
-    Py_XDECREF(m);
-    return z;
-}
-
-static PyObject *
-complex_pow(PyObject *v, PyObject *w, PyObject *z)
-{
-    Py_complex p;
-    Py_complex exponent;
-    long int_exponent;
-    Py_complex a, b;
-    TO_COMPLEX(v, a);
-    TO_COMPLEX(w, b);
-    if (z!=Py_None) {
-        PyErr_SetString(PyExc_ValueError, "complex modulo");
-        return NULL;
-    }
-    PyFPE_START_PROTECT("complex_pow", return 0)
-    errno = 0;
-    exponent = b;
-    int_exponent = (long)exponent.real;
-    if (exponent.imag == 0. && exponent.real == int_exponent)
-        p = c_powi(a,int_exponent);
-    else
-        p = c_pow(a,exponent);
-
-    PyFPE_END_PROTECT(p)
-    Py_ADJUST_ERANGE2(p.real, p.imag);
-    if (errno == EDOM) {
-        PyErr_SetString(PyExc_ZeroDivisionError,
-                        "0.0 to a negative or complex power");
-        return NULL;
-    }
-    else if (errno == ERANGE) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "complex exponentiation");
-        return NULL;
-    }
-    return PyComplex_FromCComplex(p);
-}
-
-static PyObject *
-complex_int_div(PyObject *v, PyObject *w)
-{
-    PyObject *t, *r;
-    Py_complex a, b;
-    TO_COMPLEX(v, a);
-    TO_COMPLEX(w, b);
-    if (PyErr_Warn(PyExc_DeprecationWarning,
-                   "complex divmod(), // and % are deprecated") < 0)
-        return NULL;
-
-    t = complex_divmod(v, w);
-    if (t != NULL) {
-        r = PyTuple_GET_ITEM(t, 0);
-        Py_INCREF(r);
-        Py_DECREF(t);
-        return r;
-    }
-    return NULL;
-}
-
-static PyObject *
-complex_neg(PyComplexObject *v)
-{
-    Py_complex neg;
-    neg.real = -v->cval.real;
-    neg.imag = -v->cval.imag;
-    return PyComplex_FromCComplex(neg);
-}
-
-static PyObject *
-complex_pos(PyComplexObject *v)
-{
-    if (PyComplex_CheckExact(v)) {
-        Py_INCREF(v);
-        return (PyObject *)v;
-    }
-    else
-        return PyComplex_FromCComplex(v->cval);
-}
-
-static PyObject *
-complex_abs(PyComplexObject *v)
-{
-    double result;
-
-    PyFPE_START_PROTECT("complex_abs", return 0)
-    result = c_abs(v->cval);
-    PyFPE_END_PROTECT(result)
-
-    if (errno == ERANGE) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "absolute value too large");
-        return NULL;
-    }
-    return PyFloat_FromDouble(result);
-}
-
-static int
-complex_nonzero(PyComplexObject *v)
-{
-    return v->cval.real != 0.0 || v->cval.imag != 0.0;
-}
-
-static int
-complex_coerce(PyObject **pv, PyObject **pw)
-{
-    Py_complex cval;
-    cval.imag = 0.;
-    if (PyInt_Check(*pw)) {
-        cval.real = (double)PyInt_AsLong(*pw);
-        *pw = PyComplex_FromCComplex(cval);
-        Py_INCREF(*pv);
-        return 0;
-    }
-    else if (PyLong_Check(*pw)) {
-        cval.real = PyLong_AsDouble(*pw);
-        if (cval.real == -1.0 && PyErr_Occurred())
-            return -1;
-        *pw = PyComplex_FromCComplex(cval);
-        Py_INCREF(*pv);
-        return 0;
-    }
-    else if (PyFloat_Check(*pw)) {
-        cval.real = PyFloat_AsDouble(*pw);
-        *pw = PyComplex_FromCComplex(cval);
-        Py_INCREF(*pv);
-        return 0;
-    }
-    else if (PyComplex_Check(*pw)) {
-        Py_INCREF(*pv);
-        Py_INCREF(*pw);
-        return 0;
-    }
-    return 1; /* Can't do it */
-}
-
-static PyObject *
-complex_richcompare(PyObject *v, PyObject *w, int op)
-{
-    PyObject *res;
-    Py_complex i;
-    int equal;
-
-    if (op != Py_EQ && op != Py_NE) {
-        /* for backwards compatibility, comparisons with non-numbers return
-         * NotImplemented.  Only comparisons with core numeric types raise
-         * TypeError.
-         */
-        if (PyInt_Check(w) || PyLong_Check(w) ||
-            PyFloat_Check(w) || PyComplex_Check(w)) {
-            PyErr_SetString(PyExc_TypeError,
-                            "no ordering relation is defined "
-                            "for complex numbers");
-            return NULL;
-        }
-        goto Unimplemented;
-    }
-
-    assert(PyComplex_Check(v));
-    TO_COMPLEX(v, i);
-
-    if (PyInt_Check(w) || PyLong_Check(w)) {
-        /* Check for 0.0 imaginary part first to avoid the rich
-         * comparison when possible.
-         */
-        if (i.imag == 0.0) {
-            PyObject *j, *sub_res;
-            j = PyFloat_FromDouble(i.real);
-            if (j == NULL)
-                return NULL;
-
-            sub_res = PyObject_RichCompare(j, w, op);
-            Py_DECREF(j);
-            return sub_res;
-        }
-        else {
-            equal = 0;
-        }
-    }
-    else if (PyFloat_Check(w)) {
-        equal = (i.real == PyFloat_AsDouble(w) && i.imag == 0.0);
-    }
-    else if (PyComplex_Check(w)) {
-        Py_complex j;
-
-        TO_COMPLEX(w, j);
-        equal = (i.real == j.real && i.imag == j.imag);
-    }
-    else {
-        goto Unimplemented;
-    }
-
-    if (equal == (op == Py_EQ))
-         res = Py_True;
-    else
-         res = Py_False;
-
-    Py_INCREF(res);
-    return res;
-
-  Unimplemented:
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-}
-
-static PyObject *
-complex_int(PyObject *v)
-{
-    PyErr_SetString(PyExc_TypeError,
-               "can't convert complex to int");
-    return NULL;
-}
-
-static PyObject *
-complex_long(PyObject *v)
-{
-    PyErr_SetString(PyExc_TypeError,
-               "can't convert complex to long");
-    return NULL;
-}
-
-static PyObject *
-complex_float(PyObject *v)
-{
-    PyErr_SetString(PyExc_TypeError,
-               "can't convert complex to float");
-    return NULL;
-}
-
-static PyObject *
-complex_conjugate(PyObject *self)
-{
-    Py_complex c;
-    c = ((PyComplexObject *)self)->cval;
-    c.imag = -c.imag;
-    return PyComplex_FromCComplex(c);
-}
-
-PyDoc_STRVAR(complex_conjugate_doc,
-"complex.conjugate() -> complex\n"
-"\n"
-"Returns the complex conjugate of its argument. (3-4j).conjugate() == 3+4j.");
-
-static PyObject *
-complex_getnewargs(PyComplexObject *v)
-{
-    Py_complex c = v->cval;
-    return Py_BuildValue("(dd)", c.real, c.imag);
-}
-
-PyDoc_STRVAR(complex__format__doc,
-"complex.__format__() -> str\n"
-"\n"
-"Converts to a string according to format_spec.");
-
-static PyObject *
-complex__format__(PyObject* self, PyObject* args)
-{
-    PyObject *format_spec;
-
-    if (!PyArg_ParseTuple(args, "O:__format__", &format_spec))
-    return NULL;
-    if (PyBytes_Check(format_spec))
-    return _PyComplex_FormatAdvanced(self,
-                                     PyBytes_AS_STRING(format_spec),
-                                     PyBytes_GET_SIZE(format_spec));
-    if (PyUnicode_Check(format_spec)) {
-    /* Convert format_spec to a str */
-    PyObject *result;
-    PyObject *str_spec = PyObject_Str(format_spec);
-
-    if (str_spec == NULL)
-        return NULL;
-
-    result = _PyComplex_FormatAdvanced(self,
-                                       PyBytes_AS_STRING(str_spec),
-                                       PyBytes_GET_SIZE(str_spec));
-
-    Py_DECREF(str_spec);
-    return result;
-    }
-    PyErr_SetString(PyExc_TypeError, "__format__ requires str or unicode");
-    return NULL;
-}
-
-#if 0
-static PyObject *
-complex_is_finite(PyObject *self)
-{
-    Py_complex c;
-    c = ((PyComplexObject *)self)->cval;
-    return PyBool_FromLong((long)(Py_IS_FINITE(c.real) &&
-                                  Py_IS_FINITE(c.imag)));
-}
-
-PyDoc_STRVAR(complex_is_finite_doc,
-"complex.is_finite() -> bool\n"
-"\n"
-"Returns True if the real and the imaginary part is finite.");
-#endif
-
-static PyMethodDef complex_methods[] = {
-    {"conjugate",       (PyCFunction)complex_conjugate, METH_NOARGS,
-     complex_conjugate_doc},
-#if 0
-    {"is_finite",       (PyCFunction)complex_is_finite, METH_NOARGS,
-     complex_is_finite_doc},
-#endif
-    {"__getnewargs__",          (PyCFunction)complex_getnewargs,        METH_NOARGS},
-    {"__format__",          (PyCFunction)complex__format__,
-                                       METH_VARARGS, complex__format__doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyMemberDef complex_members[] = {
-    {"real", T_DOUBLE, offsetof(PyComplexObject, cval.real), READONLY,
-     "the real part of a complex number"},
-    {"imag", T_DOUBLE, offsetof(PyComplexObject, cval.imag), READONLY,
-     "the imaginary part of a complex number"},
-    {0},
-};
-
-static PyObject *
-complex_subtype_from_string(PyTypeObject *type, PyObject *v)
-{
-    const char *s, *start;
-    char *end;
-    double x=0.0, y=0.0, z;
-    int got_bracket=0;
-#ifdef Py_USING_UNICODE
-    char *s_buffer = NULL;
-#endif
-    Py_ssize_t len;
-
-    if (PyString_Check(v)) {
-        s = PyString_AS_STRING(v);
-        len = PyString_GET_SIZE(v);
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_Check(v)) {
-        s_buffer = (char *)PyMem_MALLOC(PyUnicode_GET_SIZE(v)+1);
-        if (s_buffer == NULL)
-            return PyErr_NoMemory();
-        if (PyUnicode_EncodeDecimal(PyUnicode_AS_UNICODE(v),
-                                    PyUnicode_GET_SIZE(v),
-                                    s_buffer,
-                                    NULL))
-            goto error;
-        s = s_buffer;
-        len = strlen(s);
-    }
-#endif
-    else if (PyObject_AsCharBuffer(v, &s, &len)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "complex() arg is not a string");
-        return NULL;
-    }
-
-    /* position on first nonblank */
-    start = s;
-    while (Py_ISSPACE(*s))
-        s++;
-    if (*s == '(') {
-        /* Skip over possible bracket from repr(). */
-        got_bracket = 1;
-        s++;
-        while (Py_ISSPACE(*s))
-            s++;
-    }
-
-    /* a valid complex string usually takes one of the three forms:
-
-         <float>                  - real part only
-         <float>j                 - imaginary part only
-         <float><signed-float>j   - real and imaginary parts
-
-       where <float> represents any numeric string that's accepted by the
-       float constructor (including 'nan', 'inf', 'infinity', etc.), and
-       <signed-float> is any string of the form <float> whose first
-       character is '+' or '-'.
-
-       For backwards compatibility, the extra forms
-
-         <float><sign>j
-         <sign>j
-         j
-
-       are also accepted, though support for these forms may be removed from
-       a future version of Python.
-    */
-
-    /* first look for forms starting with <float> */
-    z = PyOS_string_to_double(s, &end, NULL);
-    if (z == -1.0 && PyErr_Occurred()) {
-        if (PyErr_ExceptionMatches(PyExc_ValueError))
-            PyErr_Clear();
-        else
-            goto error;
-    }
-    if (end != s) {
-        /* all 4 forms starting with <float> land here */
-        s = end;
-        if (*s == '+' || *s == '-') {
-            /* <float><signed-float>j | <float><sign>j */
-            x = z;
-            y = PyOS_string_to_double(s, &end, NULL);
-            if (y == -1.0 && PyErr_Occurred()) {
-                if (PyErr_ExceptionMatches(PyExc_ValueError))
-                    PyErr_Clear();
-                else
-                    goto error;
-            }
-            if (end != s)
-                /* <float><signed-float>j */
-                s = end;
-            else {
-                /* <float><sign>j */
-                y = *s == '+' ? 1.0 : -1.0;
-                s++;
-            }
-            if (!(*s == 'j' || *s == 'J'))
-                goto parse_error;
-            s++;
-        }
-        else if (*s == 'j' || *s == 'J') {
-            /* <float>j */
-            s++;
-            y = z;
-        }
-        else
-            /* <float> */
-            x = z;
-    }
-    else {
-        /* not starting with <float>; must be <sign>j or j */
-        if (*s == '+' || *s == '-') {
-            /* <sign>j */
-            y = *s == '+' ? 1.0 : -1.0;
-            s++;
-        }
-        else
-            /* j */
-            y = 1.0;
-        if (!(*s == 'j' || *s == 'J'))
-            goto parse_error;
-        s++;
-    }
-
-    /* trailing whitespace and closing bracket */
-    while (Py_ISSPACE(*s))
-        s++;
-    if (got_bracket) {
-        /* if there was an opening parenthesis, then the corresponding
-           closing parenthesis should be right here */
-        if (*s != ')')
-            goto parse_error;
-        s++;
-        while (Py_ISSPACE(*s))
-            s++;
-    }
-
-    /* we should now be at the end of the string */
-    if (s-start != len)
-        goto parse_error;
-
-
-#ifdef Py_USING_UNICODE
-    if (s_buffer)
-        PyMem_FREE(s_buffer);
-#endif
-    return complex_subtype_from_doubles(type, x, y);
-
-  parse_error:
-    PyErr_SetString(PyExc_ValueError,
-                    "complex() arg is a malformed string");
-  error:
-#ifdef Py_USING_UNICODE
-    if (s_buffer)
-        PyMem_FREE(s_buffer);
-#endif
-    return NULL;
-}
-
-static PyObject *
-complex_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *r, *i, *tmp;
-    PyNumberMethods *nbr, *nbi = NULL;
-    Py_complex cr, ci;
-    int own_r = 0;
-    int cr_is_complex = 0;
-    int ci_is_complex = 0;
-    static char *kwlist[] = {"real", "imag", 0};
-
-    r = Py_False;
-    i = NULL;
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|OO:complex", kwlist,
-                                     &r, &i))
-        return NULL;
-
-    /* Special-case for a single argument when type(arg) is complex. */
-    if (PyComplex_CheckExact(r) && i == NULL &&
-        type == &PyComplex_Type) {
-        /* Note that we can't know whether it's safe to return
-           a complex *subclass* instance as-is, hence the restriction
-           to exact complexes here.  If either the input or the
-           output is a complex subclass, it will be handled below
-           as a non-orthogonal vector.  */
-        Py_INCREF(r);
-        return r;
-    }
-    if (PyString_Check(r) || PyUnicode_Check(r)) {
-        if (i != NULL) {
-            PyErr_SetString(PyExc_TypeError,
-                            "complex() can't take second arg"
-                            " if first is a string");
-            return NULL;
-        }
-        return complex_subtype_from_string(type, r);
-    }
-    if (i != NULL && (PyString_Check(i) || PyUnicode_Check(i))) {
-        PyErr_SetString(PyExc_TypeError,
-                        "complex() second arg can't be a string");
-        return NULL;
-    }
-
-    tmp = try_complex_special_method(r);
-    if (tmp) {
-        r = tmp;
-        own_r = 1;
-    }
-    else if (PyErr_Occurred()) {
-        return NULL;
-    }
-
-    nbr = r->ob_type->tp_as_number;
-    if (i != NULL)
-        nbi = i->ob_type->tp_as_number;
-    if (nbr == NULL || nbr->nb_float == NULL ||
-        ((i != NULL) && (nbi == NULL || nbi->nb_float == NULL))) {
-        PyErr_SetString(PyExc_TypeError,
-                   "complex() argument must be a string or a number");
-        if (own_r) {
-            Py_DECREF(r);
-        }
-        return NULL;
-    }
-
-    /* If we get this far, then the "real" and "imag" parts should
-       both be treated as numbers, and the constructor should return a
-       complex number equal to (real + imag*1j).
-
-       Note that we do NOT assume the input to already be in canonical
-       form; the "real" and "imag" parts might themselves be complex
-       numbers, which slightly complicates the code below. */
-    if (PyComplex_Check(r)) {
-        /* Note that if r is of a complex subtype, we're only
-           retaining its real & imag parts here, and the return
-           value is (properly) of the builtin complex type. */
-        cr = ((PyComplexObject*)r)->cval;
-        cr_is_complex = 1;
-        if (own_r) {
-            Py_DECREF(r);
-        }
-    }
-    else {
-        /* The "real" part really is entirely real, and contributes
-           nothing in the imaginary direction.
-           Just treat it as a double. */
-        tmp = PyNumber_Float(r);
-        if (own_r) {
-            /* r was a newly created complex number, rather
-               than the original "real" argument. */
-            Py_DECREF(r);
-        }
-        if (tmp == NULL)
-            return NULL;
-        if (!PyFloat_Check(tmp)) {
-            PyErr_SetString(PyExc_TypeError,
-                            "float(r) didn't return a float");
-            Py_DECREF(tmp);
-            return NULL;
-        }
-        cr.real = PyFloat_AsDouble(tmp);
-        cr.imag = 0.0; /* Shut up compiler warning */
-        Py_DECREF(tmp);
-    }
-    if (i == NULL) {
-        ci.real = 0.0;
-    }
-    else if (PyComplex_Check(i)) {
-        ci = ((PyComplexObject*)i)->cval;
-        ci_is_complex = 1;
-    } else {
-        /* The "imag" part really is entirely imaginary, and
-           contributes nothing in the real direction.
-           Just treat it as a double. */
-        tmp = (*nbi->nb_float)(i);
-        if (tmp == NULL)
-            return NULL;
-        ci.real = PyFloat_AsDouble(tmp);
-        Py_DECREF(tmp);
-    }
-    /*  If the input was in canonical form, then the "real" and "imag"
-        parts are real numbers, so that ci.imag and cr.imag are zero.
-        We need this correction in case they were not real numbers. */
-
-    if (ci_is_complex) {
-        cr.real -= ci.imag;
-    }
-    if (cr_is_complex) {
-        ci.real += cr.imag;
-    }
-    return complex_subtype_from_doubles(type, cr.real, ci.real);
-}
-
-PyDoc_STRVAR(complex_doc,
-"complex(real[, imag]) -> complex number\n"
-"\n"
-"Create a complex number from a real part and an optional imaginary part.\n"
-"This is equivalent to (real + imag*1j) where imag defaults to 0.");
-
-static PyNumberMethods complex_as_number = {
-    (binaryfunc)complex_add,                    /* nb_add */
-    (binaryfunc)complex_sub,                    /* nb_subtract */
-    (binaryfunc)complex_mul,                    /* nb_multiply */
-    (binaryfunc)complex_classic_div,            /* nb_divide */
-    (binaryfunc)complex_remainder,              /* nb_remainder */
-    (binaryfunc)complex_divmod,                 /* nb_divmod */
-    (ternaryfunc)complex_pow,                   /* nb_power */
-    (unaryfunc)complex_neg,                     /* nb_negative */
-    (unaryfunc)complex_pos,                     /* nb_positive */
-    (unaryfunc)complex_abs,                     /* nb_absolute */
-    (inquiry)complex_nonzero,                   /* nb_nonzero */
-    0,                                          /* nb_invert */
-    0,                                          /* nb_lshift */
-    0,                                          /* nb_rshift */
-    0,                                          /* nb_and */
-    0,                                          /* nb_xor */
-    0,                                          /* nb_or */
-    complex_coerce,                             /* nb_coerce */
-    complex_int,                                /* nb_int */
-    complex_long,                               /* nb_long */
-    complex_float,                              /* nb_float */
-    0,                                          /* nb_oct */
-    0,                                          /* nb_hex */
-    0,                                          /* nb_inplace_add */
-    0,                                          /* nb_inplace_subtract */
-    0,                                          /* nb_inplace_multiply*/
-    0,                                          /* nb_inplace_divide */
-    0,                                          /* nb_inplace_remainder */
-    0,                                          /* nb_inplace_power */
-    0,                                          /* nb_inplace_lshift */
-    0,                                          /* nb_inplace_rshift */
-    0,                                          /* nb_inplace_and */
-    0,                                          /* nb_inplace_xor */
-    0,                                          /* nb_inplace_or */
-    (binaryfunc)complex_int_div,                /* nb_floor_divide */
-    (binaryfunc)complex_div,                    /* nb_true_divide */
-    0,                                          /* nb_inplace_floor_divide */
-    0,                                          /* nb_inplace_true_divide */
-};
-
-PyTypeObject PyComplex_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "complex",
-    sizeof(PyComplexObject),
-    0,
-    complex_dealloc,                            /* tp_dealloc */
-    (printfunc)complex_print,                   /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)complex_repr,                     /* tp_repr */
-    &complex_as_number,                         /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    (hashfunc)complex_hash,                     /* tp_hash */
-    0,                                          /* tp_call */
-    (reprfunc)complex_str,                      /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
-        Py_TPFLAGS_BASETYPE,                    /* tp_flags */
-    complex_doc,                                /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    complex_richcompare,                        /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    complex_methods,                            /* tp_methods */
-    complex_members,                            /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    PyType_GenericAlloc,                        /* tp_alloc */
-    complex_new,                                /* tp_new */
-    PyObject_Del,                               /* tp_free */
-};
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/descrobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/descrobject.c
deleted file mode 100644
index cadcb2b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/descrobject.c
+++ /dev/null
@@ -1,1385 +0,0 @@
-/* Descriptors -- a new, flexible way to describe attributes */
-
-#include "Python.h"
-#include "structmember.h" /* Why is this not included in Python.h? */
-
-static void
-descr_dealloc(PyDescrObject *descr)
-{
-    _PyObject_GC_UNTRACK(descr);
-    Py_XDECREF(descr->d_type);
-    Py_XDECREF(descr->d_name);
-    PyObject_GC_Del(descr);
-}
-
-static char *
-descr_name(PyDescrObject *descr)
-{
-    if (descr->d_name != NULL && PyString_Check(descr->d_name))
-        return PyString_AS_STRING(descr->d_name);
-    else
-        return "?";
-}
-
-static PyObject *
-descr_repr(PyDescrObject *descr, char *format)
-{
-    return PyString_FromFormat(format, descr_name(descr),
-                               descr->d_type->tp_name);
-}
-
-static PyObject *
-method_repr(PyMethodDescrObject *descr)
-{
-    return descr_repr((PyDescrObject *)descr,
-                      "<method '%s' of '%s' objects>");
-}
-
-static PyObject *
-member_repr(PyMemberDescrObject *descr)
-{
-    return descr_repr((PyDescrObject *)descr,
-                      "<member '%s' of '%s' objects>");
-}
-
-static PyObject *
-getset_repr(PyGetSetDescrObject *descr)
-{
-    return descr_repr((PyDescrObject *)descr,
-                      "<attribute '%s' of '%s' objects>");
-}
-
-static PyObject *
-wrapperdescr_repr(PyWrapperDescrObject *descr)
-{
-    return descr_repr((PyDescrObject *)descr,
-                      "<slot wrapper '%s' of '%s' objects>");
-}
-
-static int
-descr_check(PyDescrObject *descr, PyObject *obj, PyObject **pres)
-{
-    if (obj == NULL) {
-        Py_INCREF(descr);
-        *pres = (PyObject *)descr;
-        return 1;
-    }
-    if (!PyObject_TypeCheck(obj, descr->d_type)) {
-        PyErr_Format(PyExc_TypeError,
-                     "descriptor '%s' for '%s' objects "
-                     "doesn't apply to '%s' object",
-                     descr_name((PyDescrObject *)descr),
-                     descr->d_type->tp_name,
-                     obj->ob_type->tp_name);
-        *pres = NULL;
-        return 1;
-    }
-    return 0;
-}
-
-static PyObject *
-classmethod_get(PyMethodDescrObject *descr, PyObject *obj, PyObject *type)
-{
-    /* Ensure a valid type.  Class methods ignore obj. */
-    if (type == NULL) {
-        if (obj != NULL)
-            type = (PyObject *)obj->ob_type;
-        else {
-            /* Wot - no type?! */
-            PyErr_Format(PyExc_TypeError,
-                         "descriptor '%s' for type '%s' "
-                         "needs either an object or a type",
-                         descr_name((PyDescrObject *)descr),
-                         descr->d_type->tp_name);
-            return NULL;
-        }
-    }
-    if (!PyType_Check(type)) {
-        PyErr_Format(PyExc_TypeError,
-                     "descriptor '%s' for type '%s' "
-                     "needs a type, not a '%s' as arg 2",
-                     descr_name((PyDescrObject *)descr),
-                     descr->d_type->tp_name,
-                     type->ob_type->tp_name);
-        return NULL;
-    }
-    if (!PyType_IsSubtype((PyTypeObject *)type, descr->d_type)) {
-        PyErr_Format(PyExc_TypeError,
-                     "descriptor '%s' for type '%s' "
-                     "doesn't apply to type '%s'",
-                     descr_name((PyDescrObject *)descr),
-                     descr->d_type->tp_name,
-                     ((PyTypeObject *)type)->tp_name);
-        return NULL;
-    }
-    return PyCFunction_New(descr->d_method, type);
-}
-
-static PyObject *
-method_get(PyMethodDescrObject *descr, PyObject *obj, PyObject *type)
-{
-    PyObject *res;
-
-    if (descr_check((PyDescrObject *)descr, obj, &res))
-        return res;
-    return PyCFunction_New(descr->d_method, obj);
-}
-
-static PyObject *
-member_get(PyMemberDescrObject *descr, PyObject *obj, PyObject *type)
-{
-    PyObject *res;
-
-    if (descr_check((PyDescrObject *)descr, obj, &res))
-        return res;
-    return PyMember_GetOne((char *)obj, descr->d_member);
-}
-
-static PyObject *
-getset_get(PyGetSetDescrObject *descr, PyObject *obj, PyObject *type)
-{
-    PyObject *res;
-
-    if (descr_check((PyDescrObject *)descr, obj, &res))
-        return res;
-    if (descr->d_getset->get != NULL)
-        return descr->d_getset->get(obj, descr->d_getset->closure);
-    PyErr_Format(PyExc_AttributeError,
-                 "attribute '%.300s' of '%.100s' objects is not readable",
-                 descr_name((PyDescrObject *)descr),
-                 descr->d_type->tp_name);
-    return NULL;
-}
-
-static PyObject *
-wrapperdescr_get(PyWrapperDescrObject *descr, PyObject *obj, PyObject *type)
-{
-    PyObject *res;
-
-    if (descr_check((PyDescrObject *)descr, obj, &res))
-        return res;
-    return PyWrapper_New((PyObject *)descr, obj);
-}
-
-static int
-descr_setcheck(PyDescrObject *descr, PyObject *obj, PyObject *value,
-               int *pres)
-{
-    assert(obj != NULL);
-    if (!PyObject_TypeCheck(obj, descr->d_type)) {
-        PyErr_Format(PyExc_TypeError,
-                     "descriptor '%.200s' for '%.100s' objects "
-                     "doesn't apply to '%.100s' object",
-                     descr_name(descr),
-                     descr->d_type->tp_name,
-                     obj->ob_type->tp_name);
-        *pres = -1;
-        return 1;
-    }
-    return 0;
-}
-
-static int
-member_set(PyMemberDescrObject *descr, PyObject *obj, PyObject *value)
-{
-    int res;
-
-    if (descr_setcheck((PyDescrObject *)descr, obj, value, &res))
-        return res;
-    return PyMember_SetOne((char *)obj, descr->d_member, value);
-}
-
-static int
-getset_set(PyGetSetDescrObject *descr, PyObject *obj, PyObject *value)
-{
-    int res;
-
-    if (descr_setcheck((PyDescrObject *)descr, obj, value, &res))
-        return res;
-    if (descr->d_getset->set != NULL)
-        return descr->d_getset->set(obj, value,
-                                    descr->d_getset->closure);
-    PyErr_Format(PyExc_AttributeError,
-                 "attribute '%.300s' of '%.100s' objects is not writable",
-                 descr_name((PyDescrObject *)descr),
-                 descr->d_type->tp_name);
-    return -1;
-}
-
-static PyObject *
-methoddescr_call(PyMethodDescrObject *descr, PyObject *args, PyObject *kwds)
-{
-    Py_ssize_t argc;
-    PyObject *self, *func, *result;
-
-    /* Make sure that the first argument is acceptable as 'self' */
-    assert(PyTuple_Check(args));
-    argc = PyTuple_GET_SIZE(args);
-    if (argc < 1) {
-        PyErr_Format(PyExc_TypeError,
-                     "descriptor '%.300s' of '%.100s' "
-                     "object needs an argument",
-                     descr_name((PyDescrObject *)descr),
-                     descr->d_type->tp_name);
-        return NULL;
-    }
-    self = PyTuple_GET_ITEM(args, 0);
-    if (!_PyObject_RealIsSubclass((PyObject *)Py_TYPE(self),
-                                  (PyObject *)(descr->d_type))) {
-        PyErr_Format(PyExc_TypeError,
-                     "descriptor '%.200s' "
-                     "requires a '%.100s' object "
-                     "but received a '%.100s'",
-                     descr_name((PyDescrObject *)descr),
-                     descr->d_type->tp_name,
-                     self->ob_type->tp_name);
-        return NULL;
-    }
-
-    func = PyCFunction_New(descr->d_method, self);
-    if (func == NULL)
-        return NULL;
-    args = PyTuple_GetSlice(args, 1, argc);
-    if (args == NULL) {
-        Py_DECREF(func);
-        return NULL;
-    }
-    result = PyEval_CallObjectWithKeywords(func, args, kwds);
-    Py_DECREF(args);
-    Py_DECREF(func);
-    return result;
-}
-
-static PyObject *
-classmethoddescr_call(PyMethodDescrObject *descr, PyObject *args,
-                      PyObject *kwds)
-{
-    PyObject *func, *result;
-
-    func = PyCFunction_New(descr->d_method, (PyObject *)descr->d_type);
-    if (func == NULL)
-        return NULL;
-
-    result = PyEval_CallObjectWithKeywords(func, args, kwds);
-    Py_DECREF(func);
-    return result;
-}
-
-static PyObject *
-wrapperdescr_call(PyWrapperDescrObject *descr, PyObject *args, PyObject *kwds)
-{
-    Py_ssize_t argc;
-    PyObject *self, *func, *result;
-
-    /* Make sure that the first argument is acceptable as 'self' */
-    assert(PyTuple_Check(args));
-    argc = PyTuple_GET_SIZE(args);
-    if (argc < 1) {
-        PyErr_Format(PyExc_TypeError,
-                     "descriptor '%.300s' of '%.100s' "
-                     "object needs an argument",
-                     descr_name((PyDescrObject *)descr),
-                     descr->d_type->tp_name);
-        return NULL;
-    }
-    self = PyTuple_GET_ITEM(args, 0);
-    if (!_PyObject_RealIsSubclass((PyObject *)Py_TYPE(self),
-                                  (PyObject *)(descr->d_type))) {
-        PyErr_Format(PyExc_TypeError,
-                     "descriptor '%.200s' "
-                     "requires a '%.100s' object "
-                     "but received a '%.100s'",
-                     descr_name((PyDescrObject *)descr),
-                     descr->d_type->tp_name,
-                     self->ob_type->tp_name);
-        return NULL;
-    }
-
-    func = PyWrapper_New((PyObject *)descr, self);
-    if (func == NULL)
-        return NULL;
-    args = PyTuple_GetSlice(args, 1, argc);
-    if (args == NULL) {
-        Py_DECREF(func);
-        return NULL;
-    }
-    result = PyEval_CallObjectWithKeywords(func, args, kwds);
-    Py_DECREF(args);
-    Py_DECREF(func);
-    return result;
-}
-
-static PyObject *
-method_get_doc(PyMethodDescrObject *descr, void *closure)
-{
-    if (descr->d_method->ml_doc == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyString_FromString(descr->d_method->ml_doc);
-}
-
-static PyMemberDef descr_members[] = {
-    {"__objclass__", T_OBJECT, offsetof(PyDescrObject, d_type), READONLY},
-    {"__name__", T_OBJECT, offsetof(PyDescrObject, d_name), READONLY},
-    {0}
-};
-
-static PyGetSetDef method_getset[] = {
-    {"__doc__", (getter)method_get_doc},
-    {0}
-};
-
-static PyObject *
-member_get_doc(PyMemberDescrObject *descr, void *closure)
-{
-    if (descr->d_member->doc == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyString_FromString(descr->d_member->doc);
-}
-
-static PyGetSetDef member_getset[] = {
-    {"__doc__", (getter)member_get_doc},
-    {0}
-};
-
-static PyObject *
-getset_get_doc(PyGetSetDescrObject *descr, void *closure)
-{
-    if (descr->d_getset->doc == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyString_FromString(descr->d_getset->doc);
-}
-
-static PyGetSetDef getset_getset[] = {
-    {"__doc__", (getter)getset_get_doc},
-    {0}
-};
-
-static PyObject *
-wrapperdescr_get_doc(PyWrapperDescrObject *descr, void *closure)
-{
-    if (descr->d_base->doc == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyString_FromString(descr->d_base->doc);
-}
-
-static PyGetSetDef wrapperdescr_getset[] = {
-    {"__doc__", (getter)wrapperdescr_get_doc},
-    {0}
-};
-
-static int
-descr_traverse(PyObject *self, visitproc visit, void *arg)
-{
-    PyDescrObject *descr = (PyDescrObject *)self;
-    Py_VISIT(descr->d_type);
-    return 0;
-}
-
-static PyTypeObject PyMethodDescr_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "method_descriptor",
-    sizeof(PyMethodDescrObject),
-    0,
-    (destructor)descr_dealloc,                  /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)method_repr,                      /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    (ternaryfunc)methoddescr_call,              /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */
-    0,                                          /* tp_doc */
-    descr_traverse,                             /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    descr_members,                              /* tp_members */
-    method_getset,                              /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    (descrgetfunc)method_get,                   /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-};
-
-/* This is for METH_CLASS in C, not for "f = classmethod(f)" in Python! */
-static PyTypeObject PyClassMethodDescr_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "classmethod_descriptor",
-    sizeof(PyMethodDescrObject),
-    0,
-    (destructor)descr_dealloc,                  /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)method_repr,                      /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    (ternaryfunc)classmethoddescr_call,         /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */
-    0,                                          /* tp_doc */
-    descr_traverse,                             /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    descr_members,                              /* tp_members */
-    method_getset,                              /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    (descrgetfunc)classmethod_get,              /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-};
-
-PyTypeObject PyMemberDescr_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "member_descriptor",
-    sizeof(PyMemberDescrObject),
-    0,
-    (destructor)descr_dealloc,                  /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)member_repr,                      /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */
-    0,                                          /* tp_doc */
-    descr_traverse,                             /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    descr_members,                              /* tp_members */
-    member_getset,                              /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    (descrgetfunc)member_get,                   /* tp_descr_get */
-    (descrsetfunc)member_set,                   /* tp_descr_set */
-};
-
-PyTypeObject PyGetSetDescr_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "getset_descriptor",
-    sizeof(PyGetSetDescrObject),
-    0,
-    (destructor)descr_dealloc,                  /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)getset_repr,                      /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */
-    0,                                          /* tp_doc */
-    descr_traverse,                             /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    descr_members,                              /* tp_members */
-    getset_getset,                              /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    (descrgetfunc)getset_get,                   /* tp_descr_get */
-    (descrsetfunc)getset_set,                   /* tp_descr_set */
-};
-
-PyTypeObject PyWrapperDescr_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "wrapper_descriptor",
-    sizeof(PyWrapperDescrObject),
-    0,
-    (destructor)descr_dealloc,                  /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)wrapperdescr_repr,                /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    (ternaryfunc)wrapperdescr_call,             /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */
-    0,                                          /* tp_doc */
-    descr_traverse,                             /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    descr_members,                              /* tp_members */
-    wrapperdescr_getset,                        /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    (descrgetfunc)wrapperdescr_get,             /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-};
-
-static PyDescrObject *
-descr_new(PyTypeObject *descrtype, PyTypeObject *type, const char *name)
-{
-    PyDescrObject *descr;
-
-    descr = (PyDescrObject *)PyType_GenericAlloc(descrtype, 0);
-    if (descr != NULL) {
-        Py_XINCREF(type);
-        descr->d_type = type;
-        descr->d_name = PyString_InternFromString(name);
-        if (descr->d_name == NULL) {
-            Py_DECREF(descr);
-            descr = NULL;
-        }
-    }
-    return descr;
-}
-
-PyObject *
-PyDescr_NewMethod(PyTypeObject *type, PyMethodDef *method)
-{
-    PyMethodDescrObject *descr;
-
-    descr = (PyMethodDescrObject *)descr_new(&PyMethodDescr_Type,
-                                             type, method->ml_name);
-    if (descr != NULL)
-        descr->d_method = method;
-    return (PyObject *)descr;
-}
-
-PyObject *
-PyDescr_NewClassMethod(PyTypeObject *type, PyMethodDef *method)
-{
-    PyMethodDescrObject *descr;
-
-    descr = (PyMethodDescrObject *)descr_new(&PyClassMethodDescr_Type,
-                                             type, method->ml_name);
-    if (descr != NULL)
-        descr->d_method = method;
-    return (PyObject *)descr;
-}
-
-PyObject *
-PyDescr_NewMember(PyTypeObject *type, PyMemberDef *member)
-{
-    PyMemberDescrObject *descr;
-
-    descr = (PyMemberDescrObject *)descr_new(&PyMemberDescr_Type,
-                                             type, member->name);
-    if (descr != NULL)
-        descr->d_member = member;
-    return (PyObject *)descr;
-}
-
-PyObject *
-PyDescr_NewGetSet(PyTypeObject *type, PyGetSetDef *getset)
-{
-    PyGetSetDescrObject *descr;
-
-    descr = (PyGetSetDescrObject *)descr_new(&PyGetSetDescr_Type,
-                                             type, getset->name);
-    if (descr != NULL)
-        descr->d_getset = getset;
-    return (PyObject *)descr;
-}
-
-PyObject *
-PyDescr_NewWrapper(PyTypeObject *type, struct wrapperbase *base, void *wrapped)
-{
-    PyWrapperDescrObject *descr;
-
-    descr = (PyWrapperDescrObject *)descr_new(&PyWrapperDescr_Type,
-                                             type, base->name);
-    if (descr != NULL) {
-        descr->d_base = base;
-        descr->d_wrapped = wrapped;
-    }
-    return (PyObject *)descr;
-}
-
-
-/* --- Readonly proxy for dictionaries (actually any mapping) --- */
-
-/* This has no reason to be in this file except that adding new files is a
-   bit of a pain */
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *dict;
-} proxyobject;
-
-static Py_ssize_t
-proxy_len(proxyobject *pp)
-{
-    return PyObject_Size(pp->dict);
-}
-
-static PyObject *
-proxy_getitem(proxyobject *pp, PyObject *key)
-{
-    return PyObject_GetItem(pp->dict, key);
-}
-
-static PyMappingMethods proxy_as_mapping = {
-    (lenfunc)proxy_len,                         /* mp_length */
-    (binaryfunc)proxy_getitem,                  /* mp_subscript */
-    0,                                          /* mp_ass_subscript */
-};
-
-static int
-proxy_contains(proxyobject *pp, PyObject *key)
-{
-    return PyDict_Contains(pp->dict, key);
-}
-
-static PySequenceMethods proxy_as_sequence = {
-    0,                                          /* sq_length */
-    0,                                          /* sq_concat */
-    0,                                          /* sq_repeat */
-    0,                                          /* sq_item */
-    0,                                          /* sq_slice */
-    0,                                          /* sq_ass_item */
-    0,                                          /* sq_ass_slice */
-    (objobjproc)proxy_contains,                 /* sq_contains */
-    0,                                          /* sq_inplace_concat */
-    0,                                          /* sq_inplace_repeat */
-};
-
-static PyObject *
-proxy_has_key(proxyobject *pp, PyObject *key)
-{
-    int res = PyDict_Contains(pp->dict, key);
-    if (res < 0)
-        return NULL;
-    return PyBool_FromLong(res);
-}
-
-static PyObject *
-proxy_get(proxyobject *pp, PyObject *args)
-{
-    PyObject *key, *def = Py_None;
-
-    if (!PyArg_UnpackTuple(args, "get", 1, 2, &key, &def))
-        return NULL;
-    return PyObject_CallMethod(pp->dict, "get", "(OO)", key, def);
-}
-
-static PyObject *
-proxy_keys(proxyobject *pp)
-{
-    return PyMapping_Keys(pp->dict);
-}
-
-static PyObject *
-proxy_values(proxyobject *pp)
-{
-    return PyMapping_Values(pp->dict);
-}
-
-static PyObject *
-proxy_items(proxyobject *pp)
-{
-    return PyMapping_Items(pp->dict);
-}
-
-static PyObject *
-proxy_iterkeys(proxyobject *pp)
-{
-    return PyObject_CallMethod(pp->dict, "iterkeys", NULL);
-}
-
-static PyObject *
-proxy_itervalues(proxyobject *pp)
-{
-    return PyObject_CallMethod(pp->dict, "itervalues", NULL);
-}
-
-static PyObject *
-proxy_iteritems(proxyobject *pp)
-{
-    return PyObject_CallMethod(pp->dict, "iteritems", NULL);
-}
-static PyObject *
-proxy_copy(proxyobject *pp)
-{
-    return PyObject_CallMethod(pp->dict, "copy", NULL);
-}
-
-static PyMethodDef proxy_methods[] = {
-    {"has_key",   (PyCFunction)proxy_has_key,    METH_O,
-     PyDoc_STR("D.has_key(k) -> True if D has a key k, else False")},
-    {"get",       (PyCFunction)proxy_get,        METH_VARARGS,
-     PyDoc_STR("D.get(k[,d]) -> D[k] if D.has_key(k), else d."
-                                    "  d defaults to None.")},
-    {"keys",      (PyCFunction)proxy_keys,       METH_NOARGS,
-     PyDoc_STR("D.keys() -> list of D's keys")},
-    {"values",    (PyCFunction)proxy_values,     METH_NOARGS,
-     PyDoc_STR("D.values() -> list of D's values")},
-    {"items",     (PyCFunction)proxy_items,      METH_NOARGS,
-     PyDoc_STR("D.items() -> list of D's (key, value) pairs, as 2-tuples")},
-    {"iterkeys",  (PyCFunction)proxy_iterkeys,   METH_NOARGS,
-     PyDoc_STR("D.iterkeys() -> an iterator over the keys of D")},
-    {"itervalues",(PyCFunction)proxy_itervalues, METH_NOARGS,
-     PyDoc_STR("D.itervalues() -> an iterator over the values of D")},
-    {"iteritems", (PyCFunction)proxy_iteritems,  METH_NOARGS,
-     PyDoc_STR("D.iteritems() ->"
-               " an iterator over the (key, value) items of D")},
-    {"copy",      (PyCFunction)proxy_copy,       METH_NOARGS,
-     PyDoc_STR("D.copy() -> a shallow copy of D")},
-    {0}
-};
-
-static void
-proxy_dealloc(proxyobject *pp)
-{
-    _PyObject_GC_UNTRACK(pp);
-    Py_DECREF(pp->dict);
-    PyObject_GC_Del(pp);
-}
-
-static PyObject *
-proxy_getiter(proxyobject *pp)
-{
-    return PyObject_GetIter(pp->dict);
-}
-
-static PyObject *
-proxy_str(proxyobject *pp)
-{
-    return PyObject_Str(pp->dict);
-}
-
-static int
-proxy_traverse(PyObject *self, visitproc visit, void *arg)
-{
-    proxyobject *pp = (proxyobject *)self;
-    Py_VISIT(pp->dict);
-    return 0;
-}
-
-static int
-proxy_compare(proxyobject *v, PyObject *w)
-{
-    return PyObject_Compare(v->dict, w);
-}
-
-static PyObject *
-proxy_richcompare(proxyobject *v, PyObject *w, int op)
-{
-    return PyObject_RichCompare(v->dict, w, op);
-}
-
-PyTypeObject PyDictProxy_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "dictproxy",                                /* tp_name */
-    sizeof(proxyobject),                        /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)proxy_dealloc,                  /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    (cmpfunc)proxy_compare,                     /* tp_compare */
-    0,                                          /* tp_repr */
-    0,                                          /* tp_as_number */
-    &proxy_as_sequence,                         /* tp_as_sequence */
-    &proxy_as_mapping,                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    (reprfunc)proxy_str,                        /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */
-    0,                                          /* tp_doc */
-    proxy_traverse,                             /* tp_traverse */
-    0,                                          /* tp_clear */
-    (richcmpfunc)proxy_richcompare,             /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    (getiterfunc)proxy_getiter,                 /* tp_iter */
-    0,                                          /* tp_iternext */
-    proxy_methods,                              /* tp_methods */
-    0,                                          /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-};
-
-PyObject *
-PyDictProxy_New(PyObject *dict)
-{
-    proxyobject *pp;
-
-    pp = PyObject_GC_New(proxyobject, &PyDictProxy_Type);
-    if (pp != NULL) {
-        Py_INCREF(dict);
-        pp->dict = dict;
-        _PyObject_GC_TRACK(pp);
-    }
-    return (PyObject *)pp;
-}
-
-
-/* --- Wrapper object for "slot" methods --- */
-
-/* This has no reason to be in this file except that adding new files is a
-   bit of a pain */
-
-typedef struct {
-    PyObject_HEAD
-    PyWrapperDescrObject *descr;
-    PyObject *self;
-} wrapperobject;
-
-static void
-wrapper_dealloc(wrapperobject *wp)
-{
-    PyObject_GC_UnTrack(wp);
-    Py_TRASHCAN_SAFE_BEGIN(wp)
-    Py_XDECREF(wp->descr);
-    Py_XDECREF(wp->self);
-    PyObject_GC_Del(wp);
-    Py_TRASHCAN_SAFE_END(wp)
-}
-
-static int
-wrapper_compare(wrapperobject *a, wrapperobject *b)
-{
-    if (a->descr == b->descr)
-        return PyObject_Compare(a->self, b->self);
-    else
-        return (a->descr < b->descr) ? -1 : 1;
-}
-
-static long
-wrapper_hash(wrapperobject *wp)
-{
-    int x, y;
-    x = _Py_HashPointer(wp->descr);
-    if (x == -1)
-        return -1;
-    y = PyObject_Hash(wp->self);
-    if (y == -1)
-        return -1;
-    x = x ^ y;
-    if (x == -1)
-        x = -2;
-    return x;
-}
-
-static PyObject *
-wrapper_repr(wrapperobject *wp)
-{
-    return PyString_FromFormat("<method-wrapper '%s' of %s object at %p>",
-                               wp->descr->d_base->name,
-                               wp->self->ob_type->tp_name,
-                               wp->self);
-}
-
-static PyMemberDef wrapper_members[] = {
-    {"__self__", T_OBJECT, offsetof(wrapperobject, self), READONLY},
-    {0}
-};
-
-static PyObject *
-wrapper_objclass(wrapperobject *wp)
-{
-    PyObject *c = (PyObject *)wp->descr->d_type;
-
-    Py_INCREF(c);
-    return c;
-}
-
-static PyObject *
-wrapper_name(wrapperobject *wp)
-{
-    char *s = wp->descr->d_base->name;
-
-    return PyString_FromString(s);
-}
-
-static PyObject *
-wrapper_doc(wrapperobject *wp)
-{
-    char *s = wp->descr->d_base->doc;
-
-    if (s == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    else {
-        return PyString_FromString(s);
-    }
-}
-
-static PyGetSetDef wrapper_getsets[] = {
-    {"__objclass__", (getter)wrapper_objclass},
-    {"__name__", (getter)wrapper_name},
-    {"__doc__", (getter)wrapper_doc},
-    {0}
-};
-
-static PyObject *
-wrapper_call(wrapperobject *wp, PyObject *args, PyObject *kwds)
-{
-    wrapperfunc wrapper = wp->descr->d_base->wrapper;
-    PyObject *self = wp->self;
-
-    if (wp->descr->d_base->flags & PyWrapperFlag_KEYWORDS) {
-        wrapperfunc_kwds wk = (wrapperfunc_kwds)wrapper;
-        return (*wk)(self, args, wp->descr->d_wrapped, kwds);
-    }
-
-    if (kwds != NULL && (!PyDict_Check(kwds) || PyDict_Size(kwds) != 0)) {
-        PyErr_Format(PyExc_TypeError,
-                     "wrapper %s doesn't take keyword arguments",
-                     wp->descr->d_base->name);
-        return NULL;
-    }
-    return (*wrapper)(self, args, wp->descr->d_wrapped);
-}
-
-static int
-wrapper_traverse(PyObject *self, visitproc visit, void *arg)
-{
-    wrapperobject *wp = (wrapperobject *)self;
-    Py_VISIT(wp->descr);
-    Py_VISIT(wp->self);
-    return 0;
-}
-
-static PyTypeObject wrappertype = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "method-wrapper",                           /* tp_name */
-    sizeof(wrapperobject),                      /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)wrapper_dealloc,                /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    (cmpfunc)wrapper_compare,                   /* tp_compare */
-    (reprfunc)wrapper_repr,                     /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    (hashfunc)wrapper_hash,                     /* tp_hash */
-    (ternaryfunc)wrapper_call,                  /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags */
-    0,                                          /* tp_doc */
-    wrapper_traverse,                           /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    wrapper_members,                            /* tp_members */
-    wrapper_getsets,                            /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-};
-
-PyObject *
-PyWrapper_New(PyObject *d, PyObject *self)
-{
-    wrapperobject *wp;
-    PyWrapperDescrObject *descr;
-
-    assert(PyObject_TypeCheck(d, &PyWrapperDescr_Type));
-    descr = (PyWrapperDescrObject *)d;
-    assert(_PyObject_RealIsSubclass((PyObject *)Py_TYPE(self),
-                                    (PyObject *)(descr->d_type)));
-
-    wp = PyObject_GC_New(wrapperobject, &wrappertype);
-    if (wp != NULL) {
-        Py_INCREF(descr);
-        wp->descr = descr;
-        Py_INCREF(self);
-        wp->self = self;
-        _PyObject_GC_TRACK(wp);
-    }
-    return (PyObject *)wp;
-}
-
-
-/* A built-in 'property' type */
-
-/*
-    class property(object):
-
-    def __init__(self, fget=None, fset=None, fdel=None, doc=None):
-        if doc is None and fget is not None and hasattr(fget, "__doc__"):
-        doc = fget.__doc__
-        self.__get = fget
-        self.__set = fset
-        self.__del = fdel
-        self.__doc__ = doc
-
-    def __get__(self, inst, type=None):
-        if inst is None:
-        return self
-        if self.__get is None:
-        raise AttributeError, "unreadable attribute"
-        return self.__get(inst)
-
-    def __set__(self, inst, value):
-        if self.__set is None:
-        raise AttributeError, "can't set attribute"
-        return self.__set(inst, value)
-
-    def __delete__(self, inst):
-        if self.__del is None:
-        raise AttributeError, "can't delete attribute"
-        return self.__del(inst)
-
-*/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *prop_get;
-    PyObject *prop_set;
-    PyObject *prop_del;
-    PyObject *prop_doc;
-    int getter_doc;
-} propertyobject;
-
-static PyObject * property_copy(PyObject *, PyObject *, PyObject *,
-                                  PyObject *);
-
-static PyMemberDef property_members[] = {
-    {"fget", T_OBJECT, offsetof(propertyobject, prop_get), READONLY},
-    {"fset", T_OBJECT, offsetof(propertyobject, prop_set), READONLY},
-    {"fdel", T_OBJECT, offsetof(propertyobject, prop_del), READONLY},
-    {"__doc__",  T_OBJECT, offsetof(propertyobject, prop_doc), READONLY},
-    {0}
-};
-
-
-PyDoc_STRVAR(getter_doc,
-             "Descriptor to change the getter on a property.");
-
-static PyObject *
-property_getter(PyObject *self, PyObject *getter)
-{
-    return property_copy(self, getter, NULL, NULL);
-}
-
-
-PyDoc_STRVAR(setter_doc,
-             "Descriptor to change the setter on a property.");
-
-static PyObject *
-property_setter(PyObject *self, PyObject *setter)
-{
-    return property_copy(self, NULL, setter, NULL);
-}
-
-
-PyDoc_STRVAR(deleter_doc,
-             "Descriptor to change the deleter on a property.");
-
-static PyObject *
-property_deleter(PyObject *self, PyObject *deleter)
-{
-    return property_copy(self, NULL, NULL, deleter);
-}
-
-
-static PyMethodDef property_methods[] = {
-    {"getter", property_getter, METH_O, getter_doc},
-    {"setter", property_setter, METH_O, setter_doc},
-    {"deleter", property_deleter, METH_O, deleter_doc},
-    {0}
-};
-
-
-static void
-property_dealloc(PyObject *self)
-{
-    propertyobject *gs = (propertyobject *)self;
-
-    _PyObject_GC_UNTRACK(self);
-    Py_XDECREF(gs->prop_get);
-    Py_XDECREF(gs->prop_set);
-    Py_XDECREF(gs->prop_del);
-    Py_XDECREF(gs->prop_doc);
-    self->ob_type->tp_free(self);
-}
-
-static PyObject *
-property_descr_get(PyObject *self, PyObject *obj, PyObject *type)
-{
-    propertyobject *gs = (propertyobject *)self;
-
-    if (obj == NULL || obj == Py_None) {
-        Py_INCREF(self);
-        return self;
-    }
-    if (gs->prop_get == NULL) {
-        PyErr_SetString(PyExc_AttributeError, "unreadable attribute");
-        return NULL;
-    }
-    return PyObject_CallFunction(gs->prop_get, "(O)", obj);
-}
-
-static int
-property_descr_set(PyObject *self, PyObject *obj, PyObject *value)
-{
-    propertyobject *gs = (propertyobject *)self;
-    PyObject *func, *res;
-
-    if (value == NULL)
-        func = gs->prop_del;
-    else
-        func = gs->prop_set;
-    if (func == NULL) {
-        PyErr_SetString(PyExc_AttributeError,
-                        value == NULL ?
-                        "can't delete attribute" :
-                "can't set attribute");
-        return -1;
-    }
-    if (value == NULL)
-        res = PyObject_CallFunction(func, "(O)", obj);
-    else
-        res = PyObject_CallFunction(func, "(OO)", obj, value);
-    if (res == NULL)
-        return -1;
-    Py_DECREF(res);
-    return 0;
-}
-
-static PyObject *
-property_copy(PyObject *old, PyObject *get, PyObject *set, PyObject *del)
-{
-    propertyobject *pold = (propertyobject *)old;
-    PyObject *new, *type, *doc;
-
-    type = PyObject_Type(old);
-    if (type == NULL)
-        return NULL;
-
-    if (get == NULL || get == Py_None) {
-        Py_XDECREF(get);
-        get = pold->prop_get ? pold->prop_get : Py_None;
-    }
-    if (set == NULL || set == Py_None) {
-        Py_XDECREF(set);
-        set = pold->prop_set ? pold->prop_set : Py_None;
-    }
-    if (del == NULL || del == Py_None) {
-        Py_XDECREF(del);
-        del = pold->prop_del ? pold->prop_del : Py_None;
-    }
-    if (pold->getter_doc && get != Py_None) {
-        /* make _init use __doc__ from getter */
-        doc = Py_None;
-    }
-    else {
-        doc = pold->prop_doc ? pold->prop_doc : Py_None;
-    }
-
-    new =  PyObject_CallFunction(type, "OOOO", get, set, del, doc);
-    Py_DECREF(type);
-    if (new == NULL)
-        return NULL;
-    return new;
-}
-
-static int
-property_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *get = NULL, *set = NULL, *del = NULL, *doc = NULL;
-    static char *kwlist[] = {"fget", "fset", "fdel", "doc", 0};
-    propertyobject *prop = (propertyobject *)self;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|OOOO:property",
-                                     kwlist, &get, &set, &del, &doc))
-        return -1;
-
-    if (get == Py_None)
-        get = NULL;
-    if (set == Py_None)
-        set = NULL;
-    if (del == Py_None)
-        del = NULL;
-
-    Py_XINCREF(get);
-    Py_XINCREF(set);
-    Py_XINCREF(del);
-    Py_XINCREF(doc);
-
-    prop->prop_get = get;
-    prop->prop_set = set;
-    prop->prop_del = del;
-    prop->prop_doc = doc;
-    prop->getter_doc = 0;
-
-    /* if no docstring given and the getter has one, use that one */
-    if ((doc == NULL || doc == Py_None) && get != NULL) {
-        PyObject *get_doc = PyObject_GetAttrString(get, "__doc__");
-        if (get_doc) {
-            if (Py_TYPE(self) == &PyProperty_Type) {
-                Py_XDECREF(prop->prop_doc);
-                prop->prop_doc = get_doc;
-            }
-            else {
-                /* If this is a property subclass, put __doc__
-                in dict of the subclass instance instead,
-                otherwise it gets shadowed by __doc__ in the
-                class's dict. */
-                int err = PyObject_SetAttrString(self, "__doc__", get_doc);
-                Py_DECREF(get_doc);
-                if (err < 0)
-                    return -1;
-            }
-            prop->getter_doc = 1;
-        }
-        else if (PyErr_ExceptionMatches(PyExc_Exception)) {
-            PyErr_Clear();
-        }
-        else {
-            return -1;
-        }
-    }
-
-    return 0;
-}
-
-PyDoc_STRVAR(property_doc,
-"property(fget=None, fset=None, fdel=None, doc=None) -> property attribute\n"
-"\n"
-"fget is a function to be used for getting an attribute value, and likewise\n"
-"fset is a function for setting, and fdel a function for del'ing, an\n"
-"attribute.  Typical use is to define a managed attribute x:\n"
-"class C(object):\n"
-"    def getx(self): return self._x\n"
-"    def setx(self, value): self._x = value\n"
-"    def delx(self): del self._x\n"
-"    x = property(getx, setx, delx, \"I'm the 'x' property.\")\n"
-"\n"
-"Decorators make defining new properties or modifying existing ones easy:\n"
-"class C(object):\n"
-"    @property\n"
-"    def x(self): return self._x\n"
-"    @x.setter\n"
-"    def x(self, value): self._x = value\n"
-"    @x.deleter\n"
-"    def x(self): del self._x\n"
-);
-
-static int
-property_traverse(PyObject *self, visitproc visit, void *arg)
-{
-    propertyobject *pp = (propertyobject *)self;
-    Py_VISIT(pp->prop_get);
-    Py_VISIT(pp->prop_set);
-    Py_VISIT(pp->prop_del);
-    Py_VISIT(pp->prop_doc);
-    return 0;
-}
-
-PyTypeObject PyProperty_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "property",                                 /* tp_name */
-    sizeof(propertyobject),                     /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    property_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,                    /* tp_flags */
-    property_doc,                               /* tp_doc */
-    property_traverse,                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    property_methods,                           /* tp_methods */
-    property_members,                           /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    property_descr_get,                         /* tp_descr_get */
-    property_descr_set,                         /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    property_init,                              /* tp_init */
-    PyType_GenericAlloc,                        /* tp_alloc */
-    PyType_GenericNew,                          /* tp_new */
-    PyObject_GC_Del,                            /* tp_free */
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/dictnotes.txt b/AppPkg/Applications/Python/Python-2.7.2/Objects/dictnotes.txt
deleted file mode 100644
index 60a04c8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/dictnotes.txt
+++ /dev/null
@@ -1,270 +0,0 @@
-NOTES ON OPTIMIZING DICTIONARIES
-================================
-
-
-Principal Use Cases for Dictionaries
-------------------------------------
-
-Passing keyword arguments
-    Typically, one read and one write for 1 to 3 elements.
-    Occurs frequently in normal python code.
-
-Class method lookup
-    Dictionaries vary in size with 8 to 16 elements being common.
-    Usually written once with many lookups.
-    When base classes are used, there are many failed lookups
-        followed by a lookup in a base class.
-
-Instance attribute lookup and Global variables
-    Dictionaries vary in size.  4 to 10 elements are common.
-    Both reads and writes are common.
-
-Builtins
-    Frequent reads.  Almost never written.
-    Size 126 interned strings (as of Py2.3b1).
-    A few keys are accessed much more frequently than others.
-
-Uniquification
-    Dictionaries of any size.  Bulk of work is in creation.
-    Repeated writes to a smaller set of keys.
-    Single read of each key.
-    Some use cases have two consecutive accesses to the same key.
-
-    * Removing duplicates from a sequence.
-        dict.fromkeys(seqn).keys()
-
-    * Counting elements in a sequence.
-        for e in seqn:
-          d[e] = d.get(e,0) + 1
-
-    * Accumulating references in a dictionary of lists:
-
-        for pagenumber, page in enumerate(pages):
-          for word in page:
-            d.setdefault(word, []).append(pagenumber)
-
-    Note, the second example is a use case characterized by a get and set
-    to the same key.  There are similar use cases with a __contains__
-    followed by a get, set, or del to the same key.  Part of the
-    justification for d.setdefault is combining the two lookups into one.
-
-Membership Testing
-    Dictionaries of any size.  Created once and then rarely changes.
-    Single write to each key.
-    Many calls to __contains__() or has_key().
-    Similar access patterns occur with replacement dictionaries
-        such as with the % formatting operator.
-
-Dynamic Mappings
-    Characterized by deletions interspersed with adds and replacements.
-    Performance benefits greatly from the re-use of dummy entries.
-
-
-Data Layout (assuming a 32-bit box with 64 bytes per cache line)
-----------------------------------------------------------------
-
-Smalldicts (8 entries) are attached to the dictobject structure
-and the whole group nearly fills two consecutive cache lines.
-
-Larger dicts use the first half of the dictobject structure (one cache
-line) and a separate, continuous block of entries (at 12 bytes each
-for a total of 5.333 entries per cache line).
-
-
-Tunable Dictionary Parameters
------------------------------
-
-* PyDict_MINSIZE.  Currently set to 8.
-    Must be a power of two.  New dicts have to zero-out every cell.
-    Each additional 8 consumes 1.5 cache lines.  Increasing improves
-    the sparseness of small dictionaries but costs time to read in
-    the additional cache lines if they are not already in cache.
-    That case is common when keyword arguments are passed.
-
-* Maximum dictionary load in PyDict_SetItem.  Currently set to 2/3.
-    Increasing this ratio makes dictionaries more dense resulting
-    in more collisions.  Decreasing it improves sparseness at the
-    expense of spreading entries over more cache lines and at the
-    cost of total memory consumed.
-
-    The load test occurs in highly time sensitive code.  Efforts
-    to make the test more complex (for example, varying the load
-    for different sizes) have degraded performance.
-
-* Growth rate upon hitting maximum load.  Currently set to *2.
-    Raising this to *4 results in half the number of resizes,
-    less effort to resize, better sparseness for some (but not
-    all dict sizes), and potentially doubles memory consumption
-    depending on the size of the dictionary.  Setting to *4
-    eliminates every other resize step.
-
-* Maximum sparseness (minimum dictionary load).  What percentage
-    of entries can be unused before the dictionary shrinks to
-    free up memory and speed up iteration?  (The current CPython
-    code does not represent this parameter directly.)
-
-* Shrinkage rate upon exceeding maximum sparseness.  The current
-    CPython code never even checks sparseness when deleting a
-    key.  When a new key is added, it resizes based on the number
-    of active keys, so that the addition may trigger shrinkage
-    rather than growth.
-
-Tune-ups should be measured across a broad range of applications and
-use cases.  A change to any parameter will help in some situations and
-hurt in others.  The key is to find settings that help the most common
-cases and do the least damage to the less common cases.  Results will
-vary dramatically depending on the exact number of keys, whether the
-keys are all strings, whether reads or writes dominate, the exact
-hash values of the keys (some sets of values have fewer collisions than
-others).  Any one test or benchmark is likely to prove misleading.
-
-While making a dictionary more sparse reduces collisions, it impairs
-iteration and key listing.  Those methods loop over every potential
-entry.  Doubling the size of dictionary results in twice as many
-non-overlapping memory accesses for keys(), items(), values(),
-__iter__(), iterkeys(), iteritems(), itervalues(), and update().
-Also, every dictionary iterates at least twice, once for the memset()
-when it is created and once by dealloc().
-
-Dictionary operations involving only a single key can be O(1) unless 
-resizing is possible.  By checking for a resize only when the 
-dictionary can grow (and may *require* resizing), other operations
-remain O(1), and the odds of resize thrashing or memory fragmentation
-are reduced. In particular, an algorithm that empties a dictionary
-by repeatedly invoking .pop will see no resizing, which might
-not be necessary at all because the dictionary is eventually
-discarded entirely.
-
-
-Results of Cache Locality Experiments
--------------------------------------
-
-When an entry is retrieved from memory, 4.333 adjacent entries are also
-retrieved into a cache line.  Since accessing items in cache is *much*
-cheaper than a cache miss, an enticing idea is to probe the adjacent
-entries as a first step in collision resolution.  Unfortunately, the
-introduction of any regularity into collision searches results in more
-collisions than the current random chaining approach.
-
-Exploiting cache locality at the expense of additional collisions fails
-to payoff when the entries are already loaded in cache (the expense
-is paid with no compensating benefit).  This occurs in small dictionaries
-where the whole dictionary fits into a pair of cache lines.  It also
-occurs frequently in large dictionaries which have a common access pattern
-where some keys are accessed much more frequently than others.  The
-more popular entries *and* their collision chains tend to remain in cache.
-
-To exploit cache locality, change the collision resolution section
-in lookdict() and lookdict_string().  Set i^=1 at the top of the
-loop and move the  i = (i << 2) + i + perturb + 1 to an unrolled
-version of the loop.
-
-This optimization strategy can be leveraged in several ways:
-
-* If the dictionary is kept sparse (through the tunable parameters),
-then the occurrence of additional collisions is lessened.
-
-* If lookdict() and lookdict_string() are specialized for small dicts
-and for largedicts, then the versions for large_dicts can be given
-an alternate search strategy without increasing collisions in small dicts
-which already have the maximum benefit of cache locality.
-
-* If the use case for a dictionary is known to have a random key
-access pattern (as opposed to a more common pattern with a Zipf's law
-distribution), then there will be more benefit for large dictionaries
-because any given key is no more likely than another to already be
-in cache.
-
-* In use cases with paired accesses to the same key, the second access
-is always in cache and gets no benefit from efforts to further improve
-cache locality.
-
-Optimizing the Search of Small Dictionaries
--------------------------------------------
-
-If lookdict() and lookdict_string() are specialized for smaller dictionaries,
-then a custom search approach can be implemented that exploits the small
-search space and cache locality.
-
-* The simplest example is a linear search of contiguous entries.  This is
-  simple to implement, guaranteed to terminate rapidly, never searches
-  the same entry twice, and precludes the need to check for dummy entries.
-
-* A more advanced example is a self-organizing search so that the most
-  frequently accessed entries get probed first.  The organization
-  adapts if the access pattern changes over time.  Treaps are ideally
-  suited for self-organization with the most common entries at the
-  top of the heap and a rapid binary search pattern.  Most probes and
-  results are all located at the top of the tree allowing them all to
-  be located in one or two cache lines.
-
-* Also, small dictionaries may be made more dense, perhaps filling all
-  eight cells to take the maximum advantage of two cache lines.
-
-
-Strategy Pattern
-----------------
-
-Consider allowing the user to set the tunable parameters or to select a
-particular search method.  Since some dictionary use cases have known
-sizes and access patterns, the user may be able to provide useful hints.
-
-1) For example, if membership testing or lookups dominate runtime and memory
-   is not at a premium, the user may benefit from setting the maximum load
-   ratio at 5% or 10% instead of the usual 66.7%.  This will sharply
-   curtail the number of collisions but will increase iteration time.
-   The builtin namespace is a prime example of a dictionary that can
-   benefit from being highly sparse.
-
-2) Dictionary creation time can be shortened in cases where the ultimate
-   size of the dictionary is known in advance.  The dictionary can be
-   pre-sized so that no resize operations are required during creation.
-   Not only does this save resizes, but the key insertion will go
-   more quickly because the first half of the keys will be inserted into
-   a more sparse environment than before.  The preconditions for this
-   strategy arise whenever a dictionary is created from a key or item
-   sequence and the number of *unique* keys is known.
-
-3) If the key space is large and the access pattern is known to be random,
-   then search strategies exploiting cache locality can be fruitful.
-   The preconditions for this strategy arise in simulations and
-   numerical analysis.
-
-4) If the keys are fixed and the access pattern strongly favors some of
-   the keys, then the entries can be stored contiguously and accessed
-   with a linear search or treap.  This exploits knowledge of the data,
-   cache locality, and a simplified search routine.  It also eliminates
-   the need to test for dummy entries on each probe.  The preconditions
-   for this strategy arise in symbol tables and in the builtin dictionary.
-
-
-Readonly Dictionaries
----------------------
-Some dictionary use cases pass through a build stage and then move to a
-more heavily exercised lookup stage with no further changes to the
-dictionary.
-
-An idea that emerged on python-dev is to be able to convert a dictionary
-to a read-only state.  This can help prevent programming errors and also
-provide knowledge that can be exploited for lookup optimization.
-
-The dictionary can be immediately rebuilt (eliminating dummy entries),
-resized (to an appropriate level of sparseness), and the keys can be
-jostled (to minimize collisions).  The lookdict() routine can then
-eliminate the test for dummy entries (saving about 1/4 of the time
-spent in the collision resolution loop).
-
-An additional possibility is to insert links into the empty spaces
-so that dictionary iteration can proceed in len(d) steps instead of
-(mp->mask + 1) steps.  Alternatively, a separate tuple of keys can be
-kept just for iteration.
-
-
-Caching Lookups
----------------
-The idea is to exploit key access patterns by anticipating future lookups
-based on previous lookups.
-
-The simplest incarnation is to save the most recently accessed entry.
-This gives optimal performance for use cases where every get is followed
-by a set or del to the same key.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/dictobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/dictobject.c
deleted file mode 100644
index 66b29a6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/dictobject.c
+++ /dev/null
@@ -1,3210 +0,0 @@
-
-/* Dictionary object implementation using a hash table */
-
-/* The distribution includes a separate file, Objects/dictnotes.txt,
-   describing explorations into dictionary design and optimization.
-   It covers typical dictionary use patterns, the parameters for
-   tuning dictionaries, and several ideas for possible optimizations.
-*/
-
-#include "Python.h"
-
-
-/* Set a key error with the specified argument, wrapping it in a
- * tuple automatically so that tuple keys are not unpacked as the
- * exception arguments. */
-static void
-set_key_error(PyObject *arg)
-{
-    PyObject *tup;
-    tup = PyTuple_Pack(1, arg);
-    if (!tup)
-        return; /* caller will expect error to be set anyway */
-    PyErr_SetObject(PyExc_KeyError, tup);
-    Py_DECREF(tup);
-}
-
-/* Define this out if you don't want conversion statistics on exit. */
-#undef SHOW_CONVERSION_COUNTS
-
-/* See large comment block below.  This must be >= 1. */
-#define PERTURB_SHIFT 5
-
-/*
-Major subtleties ahead:  Most hash schemes depend on having a "good" hash
-function, in the sense of simulating randomness.  Python doesn't:  its most
-important hash functions (for strings and ints) are very regular in common
-cases:
-
->>> map(hash, (0, 1, 2, 3))
-[0, 1, 2, 3]
->>> map(hash, ("namea", "nameb", "namec", "named"))
-[-1658398457, -1658398460, -1658398459, -1658398462]
->>>
-
-This isn't necessarily bad!  To the contrary, in a table of size 2**i, taking
-the low-order i bits as the initial table index is extremely fast, and there
-are no collisions at all for dicts indexed by a contiguous range of ints.
-The same is approximately true when keys are "consecutive" strings.  So this
-gives better-than-random behavior in common cases, and that's very desirable.
-
-OTOH, when collisions occur, the tendency to fill contiguous slices of the
-hash table makes a good collision resolution strategy crucial.  Taking only
-the last i bits of the hash code is also vulnerable:  for example, consider
-[i << 16 for i in range(20000)] as a set of keys.  Since ints are their own
-hash codes, and this fits in a dict of size 2**15, the last 15 bits of every
-hash code are all 0:  they *all* map to the same table index.
-
-But catering to unusual cases should not slow the usual ones, so we just take
-the last i bits anyway.  It's up to collision resolution to do the rest.  If
-we *usually* find the key we're looking for on the first try (and, it turns
-out, we usually do -- the table load factor is kept under 2/3, so the odds
-are solidly in our favor), then it makes best sense to keep the initial index
-computation dirt cheap.
-
-The first half of collision resolution is to visit table indices via this
-recurrence:
-
-    j = ((5*j) + 1) mod 2**i
-
-For any initial j in range(2**i), repeating that 2**i times generates each
-int in range(2**i) exactly once (see any text on random-number generation for
-proof).  By itself, this doesn't help much:  like linear probing (setting
-j += 1, or j -= 1, on each loop trip), it scans the table entries in a fixed
-order.  This would be bad, except that's not the only thing we do, and it's
-actually *good* in the common cases where hash keys are consecutive.  In an
-example that's really too small to make this entirely clear, for a table of
-size 2**3 the order of indices is:
-
-    0 -> 1 -> 6 -> 7 -> 4 -> 5 -> 2 -> 3 -> 0 [and here it's repeating]
-
-If two things come in at index 5, the first place we look after is index 2,
-not 6, so if another comes in at index 6 the collision at 5 didn't hurt it.
-Linear probing is deadly in this case because there the fixed probe order
-is the *same* as the order consecutive keys are likely to arrive.  But it's
-extremely unlikely hash codes will follow a 5*j+1 recurrence by accident,
-and certain that consecutive hash codes do not.
-
-The other half of the strategy is to get the other bits of the hash code
-into play.  This is done by initializing a (unsigned) vrbl "perturb" to the
-full hash code, and changing the recurrence to:
-
-    j = (5*j) + 1 + perturb;
-    perturb >>= PERTURB_SHIFT;
-    use j % 2**i as the next table index;
-
-Now the probe sequence depends (eventually) on every bit in the hash code,
-and the pseudo-scrambling property of recurring on 5*j+1 is more valuable,
-because it quickly magnifies small differences in the bits that didn't affect
-the initial index.  Note that because perturb is unsigned, if the recurrence
-is executed often enough perturb eventually becomes and remains 0.  At that
-point (very rarely reached) the recurrence is on (just) 5*j+1 again, and
-that's certain to find an empty slot eventually (since it generates every int
-in range(2**i), and we make sure there's always at least one empty slot).
-
-Selecting a good value for PERTURB_SHIFT is a balancing act.  You want it
-small so that the high bits of the hash code continue to affect the probe
-sequence across iterations; but you want it large so that in really bad cases
-the high-order hash bits have an effect on early iterations.  5 was "the
-best" in minimizing total collisions across experiments Tim Peters ran (on
-both normal and pathological cases), but 4 and 6 weren't significantly worse.
-
-Historical:  Reimer Behrends contributed the idea of using a polynomial-based
-approach, using repeated multiplication by x in GF(2**n) where an irreducible
-polynomial for each table size was chosen such that x was a primitive root.
-Christian Tismer later extended that to use division by x instead, as an
-efficient way to get the high bits of the hash code into play.  This scheme
-also gave excellent collision statistics, but was more expensive:  two
-if-tests were required inside the loop; computing "the next" index took about
-the same number of operations but without as much potential parallelism
-(e.g., computing 5*j can go on at the same time as computing 1+perturb in the
-above, and then shifting perturb can be done while the table index is being
-masked); and the PyDictObject struct required a member to hold the table's
-polynomial.  In Tim's experiments the current scheme ran faster, produced
-equally good collision statistics, needed less code & used less memory.
-
-Theoretical Python 2.5 headache:  hash codes are only C "long", but
-sizeof(Py_ssize_t) > sizeof(long) may be possible.  In that case, and if a
-dict is genuinely huge, then only the slots directly reachable via indexing
-by a C long can be the first slot in a probe sequence.  The probe sequence
-will still eventually reach every slot in the table, but the collision rate
-on initial probes may be much higher than this scheme was designed for.
-Getting a hash code as fat as Py_ssize_t is the only real cure.  But in
-practice, this probably won't make a lick of difference for many years (at
-which point everyone will have terabytes of RAM on 64-bit boxes).
-*/
-
-/* Object used as dummy key to fill deleted entries */
-static PyObject *dummy = NULL; /* Initialized by first call to newPyDictObject() */
-
-#ifdef Py_REF_DEBUG
-PyObject *
-_PyDict_Dummy(void)
-{
-    return dummy;
-}
-#endif
-
-/* forward declarations */
-static PyDictEntry *
-lookdict_string(PyDictObject *mp, PyObject *key, long hash);
-
-#ifdef SHOW_CONVERSION_COUNTS
-static long created = 0L;
-static long converted = 0L;
-
-static void
-show_counts(void)
-{
-    fprintf(stderr, "created %ld string dicts\n", created);
-    fprintf(stderr, "converted %ld to normal dicts\n", converted);
-    fprintf(stderr, "%.2f%% conversion rate\n", (100.0*converted)/created);
-}
-#endif
-
-/* Debug statistic to compare allocations with reuse through the free list */
-#undef SHOW_ALLOC_COUNT
-#ifdef SHOW_ALLOC_COUNT
-static size_t count_alloc = 0;
-static size_t count_reuse = 0;
-
-static void
-show_alloc(void)
-{
-    fprintf(stderr, "Dict allocations: %" PY_FORMAT_SIZE_T "d\n",
-        count_alloc);
-    fprintf(stderr, "Dict reuse through freelist: %" PY_FORMAT_SIZE_T
-        "d\n", count_reuse);
-    fprintf(stderr, "%.2f%% reuse rate\n\n",
-        (100.0*count_reuse/(count_alloc+count_reuse)));
-}
-#endif
-
-/* Debug statistic to count GC tracking of dicts */
-#ifdef SHOW_TRACK_COUNT
-static Py_ssize_t count_untracked = 0;
-static Py_ssize_t count_tracked = 0;
-
-static void
-show_track(void)
-{
-    fprintf(stderr, "Dicts created: %" PY_FORMAT_SIZE_T "d\n",
-        count_tracked + count_untracked);
-    fprintf(stderr, "Dicts tracked by the GC: %" PY_FORMAT_SIZE_T
-        "d\n", count_tracked);
-    fprintf(stderr, "%.2f%% dict tracking rate\n\n",
-        (100.0*count_tracked/(count_untracked+count_tracked)));
-}
-#endif
-
-
-/* Initialization macros.
-   There are two ways to create a dict:  PyDict_New() is the main C API
-   function, and the tp_new slot maps to dict_new().  In the latter case we
-   can save a little time over what PyDict_New does because it's guaranteed
-   that the PyDictObject struct is already zeroed out.
-   Everyone except dict_new() should use EMPTY_TO_MINSIZE (unless they have
-   an excellent reason not to).
-*/
-
-#define INIT_NONZERO_DICT_SLOTS(mp) do {                                \
-    (mp)->ma_table = (mp)->ma_smalltable;                               \
-    (mp)->ma_mask = PyDict_MINSIZE - 1;                                 \
-    } while(0)
-
-#define EMPTY_TO_MINSIZE(mp) do {                                       \
-    memset((mp)->ma_smalltable, 0, sizeof((mp)->ma_smalltable));        \
-    (mp)->ma_used = (mp)->ma_fill = 0;                                  \
-    INIT_NONZERO_DICT_SLOTS(mp);                                        \
-    } while(0)
-
-/* Dictionary reuse scheme to save calls to malloc, free, and memset */
-#ifndef PyDict_MAXFREELIST
-#define PyDict_MAXFREELIST 80
-#endif
-static PyDictObject *free_list[PyDict_MAXFREELIST];
-static int numfree = 0;
-
-void
-PyDict_Fini(void)
-{
-    PyDictObject *op;
-
-    while (numfree) {
-        op = free_list[--numfree];
-        assert(PyDict_CheckExact(op));
-        PyObject_GC_Del(op);
-    }
-}
-
-PyObject *
-PyDict_New(void)
-{
-    register PyDictObject *mp;
-    if (dummy == NULL) { /* Auto-initialize dummy */
-        dummy = PyString_FromString("<dummy key>");
-        if (dummy == NULL)
-            return NULL;
-#ifdef SHOW_CONVERSION_COUNTS
-        Py_AtExit(show_counts);
-#endif
-#ifdef SHOW_ALLOC_COUNT
-        Py_AtExit(show_alloc);
-#endif
-#ifdef SHOW_TRACK_COUNT
-        Py_AtExit(show_track);
-#endif
-    }
-    if (numfree) {
-        mp = free_list[--numfree];
-        assert (mp != NULL);
-        assert (Py_TYPE(mp) == &PyDict_Type);
-        _Py_NewReference((PyObject *)mp);
-        if (mp->ma_fill) {
-            EMPTY_TO_MINSIZE(mp);
-        } else {
-            /* At least set ma_table and ma_mask; these are wrong
-               if an empty but presized dict is added to freelist */
-            INIT_NONZERO_DICT_SLOTS(mp);
-        }
-        assert (mp->ma_used == 0);
-        assert (mp->ma_table == mp->ma_smalltable);
-        assert (mp->ma_mask == PyDict_MINSIZE - 1);
-#ifdef SHOW_ALLOC_COUNT
-        count_reuse++;
-#endif
-    } else {
-        mp = PyObject_GC_New(PyDictObject, &PyDict_Type);
-        if (mp == NULL)
-            return NULL;
-        EMPTY_TO_MINSIZE(mp);
-#ifdef SHOW_ALLOC_COUNT
-        count_alloc++;
-#endif
-    }
-    mp->ma_lookup = lookdict_string;
-#ifdef SHOW_TRACK_COUNT
-    count_untracked++;
-#endif
-#ifdef SHOW_CONVERSION_COUNTS
-    ++created;
-#endif
-    return (PyObject *)mp;
-}
-
-/*
-The basic lookup function used by all operations.
-This is based on Algorithm D from Knuth Vol. 3, Sec. 6.4.
-Open addressing is preferred over chaining since the link overhead for
-chaining would be substantial (100% with typical malloc overhead).
-
-The initial probe index is computed as hash mod the table size. Subsequent
-probe indices are computed as explained earlier.
-
-All arithmetic on hash should ignore overflow.
-
-(The details in this version are due to Tim Peters, building on many past
-contributions by Reimer Behrends, Jyrki Alakuijala, Vladimir Marangozov and
-Christian Tismer).
-
-lookdict() is general-purpose, and may return NULL if (and only if) a
-comparison raises an exception (this was new in Python 2.5).
-lookdict_string() below is specialized to string keys, comparison of which can
-never raise an exception; that function can never return NULL.  For both, when
-the key isn't found a PyDictEntry* is returned for which the me_value field is
-NULL; this is the slot in the dict at which the key would have been found, and
-the caller can (if it wishes) add the <key, value> pair to the returned
-PyDictEntry*.
-*/
-static PyDictEntry *
-lookdict(PyDictObject *mp, PyObject *key, register long hash)
-{
-    register size_t i;
-    register size_t perturb;
-    register PyDictEntry *freeslot;
-    register size_t mask = (size_t)mp->ma_mask;
-    PyDictEntry *ep0 = mp->ma_table;
-    register PyDictEntry *ep;
-    register int cmp;
-    PyObject *startkey;
-
-    i = (size_t)hash & mask;
-    ep = &ep0[i];
-    if (ep->me_key == NULL || ep->me_key == key)
-        return ep;
-
-    if (ep->me_key == dummy)
-        freeslot = ep;
-    else {
-        if (ep->me_hash == hash) {
-            startkey = ep->me_key;
-            Py_INCREF(startkey);
-            cmp = PyObject_RichCompareBool(startkey, key, Py_EQ);
-            Py_DECREF(startkey);
-            if (cmp < 0)
-                return NULL;
-            if (ep0 == mp->ma_table && ep->me_key == startkey) {
-                if (cmp > 0)
-                    return ep;
-            }
-            else {
-                /* The compare did major nasty stuff to the
-                 * dict:  start over.
-                 * XXX A clever adversary could prevent this
-                 * XXX from terminating.
-                 */
-                return lookdict(mp, key, hash);
-            }
-        }
-        freeslot = NULL;
-    }
-
-    /* In the loop, me_key == dummy is by far (factor of 100s) the
-       least likely outcome, so test for that last. */
-    for (perturb = hash; ; perturb >>= PERTURB_SHIFT) {
-        i = (i << 2) + i + perturb + 1;
-        ep = &ep0[i & mask];
-        if (ep->me_key == NULL)
-            return freeslot == NULL ? ep : freeslot;
-        if (ep->me_key == key)
-            return ep;
-        if (ep->me_hash == hash && ep->me_key != dummy) {
-            startkey = ep->me_key;
-            Py_INCREF(startkey);
-            cmp = PyObject_RichCompareBool(startkey, key, Py_EQ);
-            Py_DECREF(startkey);
-            if (cmp < 0)
-                return NULL;
-            if (ep0 == mp->ma_table && ep->me_key == startkey) {
-                if (cmp > 0)
-                    return ep;
-            }
-            else {
-                /* The compare did major nasty stuff to the
-                 * dict:  start over.
-                 * XXX A clever adversary could prevent this
-                 * XXX from terminating.
-                 */
-                return lookdict(mp, key, hash);
-            }
-        }
-        else if (ep->me_key == dummy && freeslot == NULL)
-            freeslot = ep;
-    }
-    assert(0);          /* NOT REACHED */
-    return 0;
-}
-
-/*
- * Hacked up version of lookdict which can assume keys are always strings;
- * this assumption allows testing for errors during PyObject_RichCompareBool()
- * to be dropped; string-string comparisons never raise exceptions.  This also
- * means we don't need to go through PyObject_RichCompareBool(); we can always
- * use _PyString_Eq() directly.
- *
- * This is valuable because dicts with only string keys are very common.
- */
-static PyDictEntry *
-lookdict_string(PyDictObject *mp, PyObject *key, register long hash)
-{
-    register size_t i;
-    register size_t perturb;
-    register PyDictEntry *freeslot;
-    register size_t mask = (size_t)mp->ma_mask;
-    PyDictEntry *ep0 = mp->ma_table;
-    register PyDictEntry *ep;
-
-    /* Make sure this function doesn't have to handle non-string keys,
-       including subclasses of str; e.g., one reason to subclass
-       strings is to override __eq__, and for speed we don't cater to
-       that here. */
-    if (!PyString_CheckExact(key)) {
-#ifdef SHOW_CONVERSION_COUNTS
-        ++converted;
-#endif
-        mp->ma_lookup = lookdict;
-        return lookdict(mp, key, hash);
-    }
-    i = hash & mask;
-    ep = &ep0[i];
-    if (ep->me_key == NULL || ep->me_key == key)
-        return ep;
-    if (ep->me_key == dummy)
-        freeslot = ep;
-    else {
-        if (ep->me_hash == hash && _PyString_Eq(ep->me_key, key))
-            return ep;
-        freeslot = NULL;
-    }
-
-    /* In the loop, me_key == dummy is by far (factor of 100s) the
-       least likely outcome, so test for that last. */
-    for (perturb = hash; ; perturb >>= PERTURB_SHIFT) {
-        i = (i << 2) + i + perturb + 1;
-        ep = &ep0[i & mask];
-        if (ep->me_key == NULL)
-            return freeslot == NULL ? ep : freeslot;
-        if (ep->me_key == key
-            || (ep->me_hash == hash
-            && ep->me_key != dummy
-            && _PyString_Eq(ep->me_key, key)))
-            return ep;
-        if (ep->me_key == dummy && freeslot == NULL)
-            freeslot = ep;
-    }
-    assert(0);          /* NOT REACHED */
-    return 0;
-}
-
-#ifdef SHOW_TRACK_COUNT
-#define INCREASE_TRACK_COUNT \
-    (count_tracked++, count_untracked--);
-#define DECREASE_TRACK_COUNT \
-    (count_tracked--, count_untracked++);
-#else
-#define INCREASE_TRACK_COUNT
-#define DECREASE_TRACK_COUNT
-#endif
-
-#define MAINTAIN_TRACKING(mp, key, value) \
-    do { \
-        if (!_PyObject_GC_IS_TRACKED(mp)) { \
-            if (_PyObject_GC_MAY_BE_TRACKED(key) || \
-                _PyObject_GC_MAY_BE_TRACKED(value)) { \
-                _PyObject_GC_TRACK(mp); \
-                INCREASE_TRACK_COUNT \
-            } \
-        } \
-    } while(0)
-
-void
-_PyDict_MaybeUntrack(PyObject *op)
-{
-    PyDictObject *mp;
-    PyObject *value;
-    Py_ssize_t mask, i;
-    PyDictEntry *ep;
-
-    if (!PyDict_CheckExact(op) || !_PyObject_GC_IS_TRACKED(op))
-        return;
-
-    mp = (PyDictObject *) op;
-    ep = mp->ma_table;
-    mask = mp->ma_mask;
-    for (i = 0; i <= mask; i++) {
-        if ((value = ep[i].me_value) == NULL)
-            continue;
-        if (_PyObject_GC_MAY_BE_TRACKED(value) ||
-            _PyObject_GC_MAY_BE_TRACKED(ep[i].me_key))
-            return;
-    }
-    DECREASE_TRACK_COUNT
-    _PyObject_GC_UNTRACK(op);
-}
-
-
-/*
-Internal routine to insert a new item into the table.
-Used both by the internal resize routine and by the public insert routine.
-Eats a reference to key and one to value.
-Returns -1 if an error occurred, or 0 on success.
-*/
-static int
-insertdict(register PyDictObject *mp, PyObject *key, long hash, PyObject *value)
-{
-    PyObject *old_value;
-    register PyDictEntry *ep;
-    typedef PyDictEntry *(*lookupfunc)(PyDictObject *, PyObject *, long);
-
-    assert(mp->ma_lookup != NULL);
-    ep = mp->ma_lookup(mp, key, hash);
-    if (ep == NULL) {
-        Py_DECREF(key);
-        Py_DECREF(value);
-        return -1;
-    }
-    MAINTAIN_TRACKING(mp, key, value);
-    if (ep->me_value != NULL) {
-        old_value = ep->me_value;
-        ep->me_value = value;
-        Py_DECREF(old_value); /* which **CAN** re-enter */
-        Py_DECREF(key);
-    }
-    else {
-        if (ep->me_key == NULL)
-            mp->ma_fill++;
-        else {
-            assert(ep->me_key == dummy);
-            Py_DECREF(dummy);
-        }
-        ep->me_key = key;
-        ep->me_hash = (Py_ssize_t)hash;
-        ep->me_value = value;
-        mp->ma_used++;
-    }
-    return 0;
-}
-
-/*
-Internal routine used by dictresize() to insert an item which is
-known to be absent from the dict.  This routine also assumes that
-the dict contains no deleted entries.  Besides the performance benefit,
-using insertdict() in dictresize() is dangerous (SF bug #1456209).
-Note that no refcounts are changed by this routine; if needed, the caller
-is responsible for incref'ing `key` and `value`.
-*/
-static void
-insertdict_clean(register PyDictObject *mp, PyObject *key, long hash,
-                 PyObject *value)
-{
-    register size_t i;
-    register size_t perturb;
-    register size_t mask = (size_t)mp->ma_mask;
-    PyDictEntry *ep0 = mp->ma_table;
-    register PyDictEntry *ep;
-
-    MAINTAIN_TRACKING(mp, key, value);
-    i = hash & mask;
-    ep = &ep0[i];
-    for (perturb = hash; ep->me_key != NULL; perturb >>= PERTURB_SHIFT) {
-        i = (i << 2) + i + perturb + 1;
-        ep = &ep0[i & mask];
-    }
-    assert(ep->me_value == NULL);
-    mp->ma_fill++;
-    ep->me_key = key;
-    ep->me_hash = (Py_ssize_t)hash;
-    ep->me_value = value;
-    mp->ma_used++;
-}
-
-/*
-Restructure the table by allocating a new table and reinserting all
-items again.  When entries have been deleted, the new table may
-actually be smaller than the old one.
-*/
-static int
-dictresize(PyDictObject *mp, Py_ssize_t minused)
-{
-    Py_ssize_t newsize;
-    PyDictEntry *oldtable, *newtable, *ep;
-    Py_ssize_t i;
-    int is_oldtable_malloced;
-    PyDictEntry small_copy[PyDict_MINSIZE];
-
-    assert(minused >= 0);
-
-    /* Find the smallest table size > minused. */
-    for (newsize = PyDict_MINSIZE;
-         newsize <= minused && newsize > 0;
-         newsize <<= 1)
-        ;
-    if (newsize <= 0) {
-        PyErr_NoMemory();
-        return -1;
-    }
-
-    /* Get space for a new table. */
-    oldtable = mp->ma_table;
-    assert(oldtable != NULL);
-    is_oldtable_malloced = oldtable != mp->ma_smalltable;
-
-    if (newsize == PyDict_MINSIZE) {
-        /* A large table is shrinking, or we can't get any smaller. */
-        newtable = mp->ma_smalltable;
-        if (newtable == oldtable) {
-            if (mp->ma_fill == mp->ma_used) {
-                /* No dummies, so no point doing anything. */
-                return 0;
-            }
-            /* We're not going to resize it, but rebuild the
-               table anyway to purge old dummy entries.
-               Subtle:  This is *necessary* if fill==size,
-               as lookdict needs at least one virgin slot to
-               terminate failing searches.  If fill < size, it's
-               merely desirable, as dummies slow searches. */
-            assert(mp->ma_fill > mp->ma_used);
-            memcpy(small_copy, oldtable, sizeof(small_copy));
-            oldtable = small_copy;
-        }
-    }
-    else {
-        newtable = PyMem_NEW(PyDictEntry, newsize);
-        if (newtable == NULL) {
-            PyErr_NoMemory();
-            return -1;
-        }
-    }
-
-    /* Make the dict empty, using the new table. */
-    assert(newtable != oldtable);
-    mp->ma_table = newtable;
-    mp->ma_mask = newsize - 1;
-    memset(newtable, 0, sizeof(PyDictEntry) * newsize);
-    mp->ma_used = 0;
-    i = mp->ma_fill;
-    mp->ma_fill = 0;
-
-    /* Copy the data over; this is refcount-neutral for active entries;
-       dummy entries aren't copied over, of course */
-    for (ep = oldtable; i > 0; ep++) {
-        if (ep->me_value != NULL) {             /* active entry */
-            --i;
-            insertdict_clean(mp, ep->me_key, (long)ep->me_hash,
-                             ep->me_value);
-        }
-        else if (ep->me_key != NULL) {          /* dummy entry */
-            --i;
-            assert(ep->me_key == dummy);
-            Py_DECREF(ep->me_key);
-        }
-        /* else key == value == NULL:  nothing to do */
-    }
-
-    if (is_oldtable_malloced)
-        PyMem_DEL(oldtable);
-    return 0;
-}
-
-/* Create a new dictionary pre-sized to hold an estimated number of elements.
-   Underestimates are okay because the dictionary will resize as necessary.
-   Overestimates just mean the dictionary will be more sparse than usual.
-*/
-
-PyObject *
-_PyDict_NewPresized(Py_ssize_t minused)
-{
-    PyObject *op = PyDict_New();
-
-    if (minused>5 && op != NULL && dictresize((PyDictObject *)op, minused) == -1) {
-        Py_DECREF(op);
-        return NULL;
-    }
-    return op;
-}
-
-/* Note that, for historical reasons, PyDict_GetItem() suppresses all errors
- * that may occur (originally dicts supported only string keys, and exceptions
- * weren't possible).  So, while the original intent was that a NULL return
- * meant the key wasn't present, in reality it can mean that, or that an error
- * (suppressed) occurred while computing the key's hash, or that some error
- * (suppressed) occurred when comparing keys in the dict's internal probe
- * sequence.  A nasty example of the latter is when a Python-coded comparison
- * function hits a stack-depth error, which can cause this to return NULL
- * even if the key is present.
- */
-PyObject *
-PyDict_GetItem(PyObject *op, PyObject *key)
-{
-    long hash;
-    PyDictObject *mp = (PyDictObject *)op;
-    PyDictEntry *ep;
-    PyThreadState *tstate;
-    if (!PyDict_Check(op))
-        return NULL;
-    if (!PyString_CheckExact(key) ||
-        (hash = ((PyStringObject *) key)->ob_shash) == -1)
-    {
-        hash = PyObject_Hash(key);
-        if (hash == -1) {
-            PyErr_Clear();
-            return NULL;
-        }
-    }
-
-    /* We can arrive here with a NULL tstate during initialization: try
-       running "python -Wi" for an example related to string interning.
-       Let's just hope that no exception occurs then...  This must be
-       _PyThreadState_Current and not PyThreadState_GET() because in debug
-       mode, the latter complains if tstate is NULL. */
-    tstate = _PyThreadState_Current;
-    if (tstate != NULL && tstate->curexc_type != NULL) {
-        /* preserve the existing exception */
-        PyObject *err_type, *err_value, *err_tb;
-        PyErr_Fetch(&err_type, &err_value, &err_tb);
-        ep = (mp->ma_lookup)(mp, key, hash);
-        /* ignore errors */
-        PyErr_Restore(err_type, err_value, err_tb);
-        if (ep == NULL)
-            return NULL;
-    }
-    else {
-        ep = (mp->ma_lookup)(mp, key, hash);
-        if (ep == NULL) {
-            PyErr_Clear();
-            return NULL;
-        }
-    }
-    return ep->me_value;
-}
-
-/* CAUTION: PyDict_SetItem() must guarantee that it won't resize the
- * dictionary if it's merely replacing the value for an existing key.
- * This means that it's safe to loop over a dictionary with PyDict_Next()
- * and occasionally replace a value -- but you can't insert new keys or
- * remove them.
- */
-int
-PyDict_SetItem(register PyObject *op, PyObject *key, PyObject *value)
-{
-    register PyDictObject *mp;
-    register long hash;
-    register Py_ssize_t n_used;
-
-    if (!PyDict_Check(op)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    assert(key);
-    assert(value);
-    mp = (PyDictObject *)op;
-    if (PyString_CheckExact(key)) {
-        hash = ((PyStringObject *)key)->ob_shash;
-        if (hash == -1)
-            hash = PyObject_Hash(key);
-    }
-    else {
-        hash = PyObject_Hash(key);
-        if (hash == -1)
-            return -1;
-    }
-    assert(mp->ma_fill <= mp->ma_mask);  /* at least one empty slot */
-    n_used = mp->ma_used;
-    Py_INCREF(value);
-    Py_INCREF(key);
-    if (insertdict(mp, key, hash, value) != 0)
-        return -1;
-    /* If we added a key, we can safely resize.  Otherwise just return!
-     * If fill >= 2/3 size, adjust size.  Normally, this doubles or
-     * quaduples the size, but it's also possible for the dict to shrink
-     * (if ma_fill is much larger than ma_used, meaning a lot of dict
-     * keys have been * deleted).
-     *
-     * Quadrupling the size improves average dictionary sparseness
-     * (reducing collisions) at the cost of some memory and iteration
-     * speed (which loops over every possible entry).  It also halves
-     * the number of expensive resize operations in a growing dictionary.
-     *
-     * Very large dictionaries (over 50K items) use doubling instead.
-     * This may help applications with severe memory constraints.
-     */
-    if (!(mp->ma_used > n_used && mp->ma_fill*3 >= (mp->ma_mask+1)*2))
-        return 0;
-    return dictresize(mp, (mp->ma_used > 50000 ? 2 : 4) * mp->ma_used);
-}
-
-int
-PyDict_DelItem(PyObject *op, PyObject *key)
-{
-    register PyDictObject *mp;
-    register long hash;
-    register PyDictEntry *ep;
-    PyObject *old_value, *old_key;
-
-    if (!PyDict_Check(op)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    assert(key);
-    if (!PyString_CheckExact(key) ||
-        (hash = ((PyStringObject *) key)->ob_shash) == -1) {
-        hash = PyObject_Hash(key);
-        if (hash == -1)
-            return -1;
-    }
-    mp = (PyDictObject *)op;
-    ep = (mp->ma_lookup)(mp, key, hash);
-    if (ep == NULL)
-        return -1;
-    if (ep->me_value == NULL) {
-        set_key_error(key);
-        return -1;
-    }
-    old_key = ep->me_key;
-    Py_INCREF(dummy);
-    ep->me_key = dummy;
-    old_value = ep->me_value;
-    ep->me_value = NULL;
-    mp->ma_used--;
-    Py_DECREF(old_value);
-    Py_DECREF(old_key);
-    return 0;
-}
-
-void
-PyDict_Clear(PyObject *op)
-{
-    PyDictObject *mp;
-    PyDictEntry *ep, *table;
-    int table_is_malloced;
-    Py_ssize_t fill;
-    PyDictEntry small_copy[PyDict_MINSIZE];
-#ifdef Py_DEBUG
-    Py_ssize_t i, n;
-#endif
-
-    if (!PyDict_Check(op))
-        return;
-    mp = (PyDictObject *)op;
-#ifdef Py_DEBUG
-    n = mp->ma_mask + 1;
-    i = 0;
-#endif
-
-    table = mp->ma_table;
-    assert(table != NULL);
-    table_is_malloced = table != mp->ma_smalltable;
-
-    /* This is delicate.  During the process of clearing the dict,
-     * decrefs can cause the dict to mutate.  To avoid fatal confusion
-     * (voice of experience), we have to make the dict empty before
-     * clearing the slots, and never refer to anything via mp->xxx while
-     * clearing.
-     */
-    fill = mp->ma_fill;
-    if (table_is_malloced)
-        EMPTY_TO_MINSIZE(mp);
-
-    else if (fill > 0) {
-        /* It's a small table with something that needs to be cleared.
-         * Afraid the only safe way is to copy the dict entries into
-         * another small table first.
-         */
-        memcpy(small_copy, table, sizeof(small_copy));
-        table = small_copy;
-        EMPTY_TO_MINSIZE(mp);
-    }
-    /* else it's a small table that's already empty */
-
-    /* Now we can finally clear things.  If C had refcounts, we could
-     * assert that the refcount on table is 1 now, i.e. that this function
-     * has unique access to it, so decref side-effects can't alter it.
-     */
-    for (ep = table; fill > 0; ++ep) {
-#ifdef Py_DEBUG
-        assert(i < n);
-        ++i;
-#endif
-        if (ep->me_key) {
-            --fill;
-            Py_DECREF(ep->me_key);
-            Py_XDECREF(ep->me_value);
-        }
-#ifdef Py_DEBUG
-        else
-            assert(ep->me_value == NULL);
-#endif
-    }
-
-    if (table_is_malloced)
-        PyMem_DEL(table);
-}
-
-/*
- * Iterate over a dict.  Use like so:
- *
- *     Py_ssize_t i;
- *     PyObject *key, *value;
- *     i = 0;   # important!  i should not otherwise be changed by you
- *     while (PyDict_Next(yourdict, &i, &key, &value)) {
- *              Refer to borrowed references in key and value.
- *     }
- *
- * CAUTION:  In general, it isn't safe to use PyDict_Next in a loop that
- * mutates the dict.  One exception:  it is safe if the loop merely changes
- * the values associated with the keys (but doesn't insert new keys or
- * delete keys), via PyDict_SetItem().
- */
-int
-PyDict_Next(PyObject *op, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue)
-{
-    register Py_ssize_t i;
-    register Py_ssize_t mask;
-    register PyDictEntry *ep;
-
-    if (!PyDict_Check(op))
-        return 0;
-    i = *ppos;
-    if (i < 0)
-        return 0;
-    ep = ((PyDictObject *)op)->ma_table;
-    mask = ((PyDictObject *)op)->ma_mask;
-    while (i <= mask && ep[i].me_value == NULL)
-        i++;
-    *ppos = i+1;
-    if (i > mask)
-        return 0;
-    if (pkey)
-        *pkey = ep[i].me_key;
-    if (pvalue)
-        *pvalue = ep[i].me_value;
-    return 1;
-}
-
-/* Internal version of PyDict_Next that returns a hash value in addition to the key and value.*/
-int
-_PyDict_Next(PyObject *op, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue, long *phash)
-{
-    register Py_ssize_t i;
-    register Py_ssize_t mask;
-    register PyDictEntry *ep;
-
-    if (!PyDict_Check(op))
-        return 0;
-    i = *ppos;
-    if (i < 0)
-        return 0;
-    ep = ((PyDictObject *)op)->ma_table;
-    mask = ((PyDictObject *)op)->ma_mask;
-    while (i <= mask && ep[i].me_value == NULL)
-        i++;
-    *ppos = i+1;
-    if (i > mask)
-        return 0;
-    *phash = (long)(ep[i].me_hash);
-    if (pkey)
-        *pkey = ep[i].me_key;
-    if (pvalue)
-        *pvalue = ep[i].me_value;
-    return 1;
-}
-
-/* Methods */
-
-static void
-dict_dealloc(register PyDictObject *mp)
-{
-    register PyDictEntry *ep;
-    Py_ssize_t fill = mp->ma_fill;
-    PyObject_GC_UnTrack(mp);
-    Py_TRASHCAN_SAFE_BEGIN(mp)
-    for (ep = mp->ma_table; fill > 0; ep++) {
-        if (ep->me_key) {
-            --fill;
-            Py_DECREF(ep->me_key);
-            Py_XDECREF(ep->me_value);
-        }
-    }
-    if (mp->ma_table != mp->ma_smalltable)
-        PyMem_DEL(mp->ma_table);
-    if (numfree < PyDict_MAXFREELIST && Py_TYPE(mp) == &PyDict_Type)
-        free_list[numfree++] = mp;
-    else
-        Py_TYPE(mp)->tp_free((PyObject *)mp);
-    Py_TRASHCAN_SAFE_END(mp)
-}
-
-static int
-dict_print(register PyDictObject *mp, register FILE *fp, register int flags)
-{
-    register Py_ssize_t i;
-    register Py_ssize_t any;
-    int status;
-
-    status = Py_ReprEnter((PyObject*)mp);
-    if (status != 0) {
-        if (status < 0)
-            return status;
-        Py_BEGIN_ALLOW_THREADS
-        fprintf(fp, "{...}");
-        Py_END_ALLOW_THREADS
-        return 0;
-    }
-
-    Py_BEGIN_ALLOW_THREADS
-    fprintf(fp, "{");
-    Py_END_ALLOW_THREADS
-    any = 0;
-    for (i = 0; i <= mp->ma_mask; i++) {
-        PyDictEntry *ep = mp->ma_table + i;
-        PyObject *pvalue = ep->me_value;
-        if (pvalue != NULL) {
-            /* Prevent PyObject_Repr from deleting value during
-               key format */
-            Py_INCREF(pvalue);
-            if (any++ > 0) {
-                Py_BEGIN_ALLOW_THREADS
-                fprintf(fp, ", ");
-                Py_END_ALLOW_THREADS
-            }
-            if (PyObject_Print((PyObject *)ep->me_key, fp, 0)!=0) {
-                Py_DECREF(pvalue);
-                Py_ReprLeave((PyObject*)mp);
-                return -1;
-            }
-            Py_BEGIN_ALLOW_THREADS
-            fprintf(fp, ": ");
-            Py_END_ALLOW_THREADS
-            if (PyObject_Print(pvalue, fp, 0) != 0) {
-                Py_DECREF(pvalue);
-                Py_ReprLeave((PyObject*)mp);
-                return -1;
-            }
-            Py_DECREF(pvalue);
-        }
-    }
-    Py_BEGIN_ALLOW_THREADS
-    fprintf(fp, "}");
-    Py_END_ALLOW_THREADS
-    Py_ReprLeave((PyObject*)mp);
-    return 0;
-}
-
-static PyObject *
-dict_repr(PyDictObject *mp)
-{
-    Py_ssize_t i;
-    PyObject *s, *temp, *colon = NULL;
-    PyObject *pieces = NULL, *result = NULL;
-    PyObject *key, *value;
-
-    i = Py_ReprEnter((PyObject *)mp);
-    if (i != 0) {
-        return i > 0 ? PyString_FromString("{...}") : NULL;
-    }
-
-    if (mp->ma_used == 0) {
-        result = PyString_FromString("{}");
-        goto Done;
-    }
-
-    pieces = PyList_New(0);
-    if (pieces == NULL)
-        goto Done;
-
-    colon = PyString_FromString(": ");
-    if (colon == NULL)
-        goto Done;
-
-    /* Do repr() on each key+value pair, and insert ": " between them.
-       Note that repr may mutate the dict. */
-    i = 0;
-    while (PyDict_Next((PyObject *)mp, &i, &key, &value)) {
-        int status;
-        /* Prevent repr from deleting value during key format. */
-        Py_INCREF(value);
-        s = PyObject_Repr(key);
-        PyString_Concat(&s, colon);
-        PyString_ConcatAndDel(&s, PyObject_Repr(value));
-        Py_DECREF(value);
-        if (s == NULL)
-            goto Done;
-        status = PyList_Append(pieces, s);
-        Py_DECREF(s);  /* append created a new ref */
-        if (status < 0)
-            goto Done;
-    }
-
-    /* Add "{}" decorations to the first and last items. */
-    assert(PyList_GET_SIZE(pieces) > 0);
-    s = PyString_FromString("{");
-    if (s == NULL)
-        goto Done;
-    temp = PyList_GET_ITEM(pieces, 0);
-    PyString_ConcatAndDel(&s, temp);
-    PyList_SET_ITEM(pieces, 0, s);
-    if (s == NULL)
-        goto Done;
-
-    s = PyString_FromString("}");
-    if (s == NULL)
-        goto Done;
-    temp = PyList_GET_ITEM(pieces, PyList_GET_SIZE(pieces) - 1);
-    PyString_ConcatAndDel(&temp, s);
-    PyList_SET_ITEM(pieces, PyList_GET_SIZE(pieces) - 1, temp);
-    if (temp == NULL)
-        goto Done;
-
-    /* Paste them all together with ", " between. */
-    s = PyString_FromString(", ");
-    if (s == NULL)
-        goto Done;
-    result = _PyString_Join(s, pieces);
-    Py_DECREF(s);
-
-Done:
-    Py_XDECREF(pieces);
-    Py_XDECREF(colon);
-    Py_ReprLeave((PyObject *)mp);
-    return result;
-}
-
-static Py_ssize_t
-dict_length(PyDictObject *mp)
-{
-    return mp->ma_used;
-}
-
-static PyObject *
-dict_subscript(PyDictObject *mp, register PyObject *key)
-{
-    PyObject *v;
-    long hash;
-    PyDictEntry *ep;
-    assert(mp->ma_table != NULL);
-    if (!PyString_CheckExact(key) ||
-        (hash = ((PyStringObject *) key)->ob_shash) == -1) {
-        hash = PyObject_Hash(key);
-        if (hash == -1)
-            return NULL;
-    }
-    ep = (mp->ma_lookup)(mp, key, hash);
-    if (ep == NULL)
-        return NULL;
-    v = ep->me_value;
-    if (v == NULL) {
-        if (!PyDict_CheckExact(mp)) {
-            /* Look up __missing__ method if we're a subclass. */
-            PyObject *missing, *res;
-            static PyObject *missing_str = NULL;
-            missing = _PyObject_LookupSpecial((PyObject *)mp,
-                                              "__missing__",
-                                              &missing_str);
-            if (missing != NULL) {
-                res = PyObject_CallFunctionObjArgs(missing,
-                                                   key, NULL);
-                Py_DECREF(missing);
-                return res;
-            }
-            else if (PyErr_Occurred())
-                return NULL;
-        }
-        set_key_error(key);
-        return NULL;
-    }
-    else
-        Py_INCREF(v);
-    return v;
-}
-
-static int
-dict_ass_sub(PyDictObject *mp, PyObject *v, PyObject *w)
-{
-    if (w == NULL)
-        return PyDict_DelItem((PyObject *)mp, v);
-    else
-        return PyDict_SetItem((PyObject *)mp, v, w);
-}
-
-static PyMappingMethods dict_as_mapping = {
-    (lenfunc)dict_length, /*mp_length*/
-    (binaryfunc)dict_subscript, /*mp_subscript*/
-    (objobjargproc)dict_ass_sub, /*mp_ass_subscript*/
-};
-
-static PyObject *
-dict_keys(register PyDictObject *mp)
-{
-    register PyObject *v;
-    register Py_ssize_t i, j;
-    PyDictEntry *ep;
-    Py_ssize_t mask, n;
-
-  again:
-    n = mp->ma_used;
-    v = PyList_New(n);
-    if (v == NULL)
-        return NULL;
-    if (n != mp->ma_used) {
-        /* Durnit.  The allocations caused the dict to resize.
-         * Just start over, this shouldn't normally happen.
-         */
-        Py_DECREF(v);
-        goto again;
-    }
-    ep = mp->ma_table;
-    mask = mp->ma_mask;
-    for (i = 0, j = 0; i <= mask; i++) {
-        if (ep[i].me_value != NULL) {
-            PyObject *key = ep[i].me_key;
-            Py_INCREF(key);
-            PyList_SET_ITEM(v, j, key);
-            j++;
-        }
-    }
-    assert(j == n);
-    return v;
-}
-
-static PyObject *
-dict_values(register PyDictObject *mp)
-{
-    register PyObject *v;
-    register Py_ssize_t i, j;
-    PyDictEntry *ep;
-    Py_ssize_t mask, n;
-
-  again:
-    n = mp->ma_used;
-    v = PyList_New(n);
-    if (v == NULL)
-        return NULL;
-    if (n != mp->ma_used) {
-        /* Durnit.  The allocations caused the dict to resize.
-         * Just start over, this shouldn't normally happen.
-         */
-        Py_DECREF(v);
-        goto again;
-    }
-    ep = mp->ma_table;
-    mask = mp->ma_mask;
-    for (i = 0, j = 0; i <= mask; i++) {
-        if (ep[i].me_value != NULL) {
-            PyObject *value = ep[i].me_value;
-            Py_INCREF(value);
-            PyList_SET_ITEM(v, j, value);
-            j++;
-        }
-    }
-    assert(j == n);
-    return v;
-}
-
-static PyObject *
-dict_items(register PyDictObject *mp)
-{
-    register PyObject *v;
-    register Py_ssize_t i, j, n;
-    Py_ssize_t mask;
-    PyObject *item, *key, *value;
-    PyDictEntry *ep;
-
-    /* Preallocate the list of tuples, to avoid allocations during
-     * the loop over the items, which could trigger GC, which
-     * could resize the dict. :-(
-     */
-  again:
-    n = mp->ma_used;
-    v = PyList_New(n);
-    if (v == NULL)
-        return NULL;
-    for (i = 0; i < n; i++) {
-        item = PyTuple_New(2);
-        if (item == NULL) {
-            Py_DECREF(v);
-            return NULL;
-        }
-        PyList_SET_ITEM(v, i, item);
-    }
-    if (n != mp->ma_used) {
-        /* Durnit.  The allocations caused the dict to resize.
-         * Just start over, this shouldn't normally happen.
-         */
-        Py_DECREF(v);
-        goto again;
-    }
-    /* Nothing we do below makes any function calls. */
-    ep = mp->ma_table;
-    mask = mp->ma_mask;
-    for (i = 0, j = 0; i <= mask; i++) {
-        if ((value=ep[i].me_value) != NULL) {
-            key = ep[i].me_key;
-            item = PyList_GET_ITEM(v, j);
-            Py_INCREF(key);
-            PyTuple_SET_ITEM(item, 0, key);
-            Py_INCREF(value);
-            PyTuple_SET_ITEM(item, 1, value);
-            j++;
-        }
-    }
-    assert(j == n);
-    return v;
-}
-
-static PyObject *
-dict_fromkeys(PyObject *cls, PyObject *args)
-{
-    PyObject *seq;
-    PyObject *value = Py_None;
-    PyObject *it;       /* iter(seq) */
-    PyObject *key;
-    PyObject *d;
-    int status;
-
-    if (!PyArg_UnpackTuple(args, "fromkeys", 1, 2, &seq, &value))
-        return NULL;
-
-    d = PyObject_CallObject(cls, NULL);
-    if (d == NULL)
-        return NULL;
-
-    if (PyDict_CheckExact(d) && PyDict_CheckExact(seq)) {
-        PyDictObject *mp = (PyDictObject *)d;
-        PyObject *oldvalue;
-        Py_ssize_t pos = 0;
-        PyObject *key;
-        long hash;
-
-        if (dictresize(mp, Py_SIZE(seq)))
-            return NULL;
-
-        while (_PyDict_Next(seq, &pos, &key, &oldvalue, &hash)) {
-            Py_INCREF(key);
-            Py_INCREF(value);
-            if (insertdict(mp, key, hash, value))
-                return NULL;
-        }
-        return d;
-    }
-
-    if (PyDict_CheckExact(d) && PyAnySet_CheckExact(seq)) {
-        PyDictObject *mp = (PyDictObject *)d;
-        Py_ssize_t pos = 0;
-        PyObject *key;
-        long hash;
-
-        if (dictresize(mp, PySet_GET_SIZE(seq)))
-            return NULL;
-
-        while (_PySet_NextEntry(seq, &pos, &key, &hash)) {
-            Py_INCREF(key);
-            Py_INCREF(value);
-            if (insertdict(mp, key, hash, value))
-                return NULL;
-        }
-        return d;
-    }
-
-    it = PyObject_GetIter(seq);
-    if (it == NULL){
-        Py_DECREF(d);
-        return NULL;
-    }
-
-    if (PyDict_CheckExact(d)) {
-        while ((key = PyIter_Next(it)) != NULL) {
-            status = PyDict_SetItem(d, key, value);
-            Py_DECREF(key);
-            if (status < 0)
-                goto Fail;
-        }
-    } else {
-        while ((key = PyIter_Next(it)) != NULL) {
-            status = PyObject_SetItem(d, key, value);
-            Py_DECREF(key);
-            if (status < 0)
-                goto Fail;
-        }
-    }
-
-    if (PyErr_Occurred())
-        goto Fail;
-    Py_DECREF(it);
-    return d;
-
-Fail:
-    Py_DECREF(it);
-    Py_DECREF(d);
-    return NULL;
-}
-
-static int
-dict_update_common(PyObject *self, PyObject *args, PyObject *kwds, char *methname)
-{
-    PyObject *arg = NULL;
-    int result = 0;
-
-    if (!PyArg_UnpackTuple(args, methname, 0, 1, &arg))
-        result = -1;
-
-    else if (arg != NULL) {
-        if (PyObject_HasAttrString(arg, "keys"))
-            result = PyDict_Merge(self, arg, 1);
-        else
-            result = PyDict_MergeFromSeq2(self, arg, 1);
-    }
-    if (result == 0 && kwds != NULL)
-        result = PyDict_Merge(self, kwds, 1);
-    return result;
-}
-
-static PyObject *
-dict_update(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    if (dict_update_common(self, args, kwds, "update") != -1)
-        Py_RETURN_NONE;
-    return NULL;
-}
-
-/* Update unconditionally replaces existing items.
-   Merge has a 3rd argument 'override'; if set, it acts like Update,
-   otherwise it leaves existing items unchanged.
-
-   PyDict_{Update,Merge} update/merge from a mapping object.
-
-   PyDict_MergeFromSeq2 updates/merges from any iterable object
-   producing iterable objects of length 2.
-*/
-
-int
-PyDict_MergeFromSeq2(PyObject *d, PyObject *seq2, int override)
-{
-    PyObject *it;       /* iter(seq2) */
-    Py_ssize_t i;       /* index into seq2 of current element */
-    PyObject *item;     /* seq2[i] */
-    PyObject *fast;     /* item as a 2-tuple or 2-list */
-
-    assert(d != NULL);
-    assert(PyDict_Check(d));
-    assert(seq2 != NULL);
-
-    it = PyObject_GetIter(seq2);
-    if (it == NULL)
-        return -1;
-
-    for (i = 0; ; ++i) {
-        PyObject *key, *value;
-        Py_ssize_t n;
-
-        fast = NULL;
-        item = PyIter_Next(it);
-        if (item == NULL) {
-            if (PyErr_Occurred())
-                goto Fail;
-            break;
-        }
-
-        /* Convert item to sequence, and verify length 2. */
-        fast = PySequence_Fast(item, "");
-        if (fast == NULL) {
-            if (PyErr_ExceptionMatches(PyExc_TypeError))
-                PyErr_Format(PyExc_TypeError,
-                    "cannot convert dictionary update "
-                    "sequence element #%zd to a sequence",
-                    i);
-            goto Fail;
-        }
-        n = PySequence_Fast_GET_SIZE(fast);
-        if (n != 2) {
-            PyErr_Format(PyExc_ValueError,
-                         "dictionary update sequence element #%zd "
-                         "has length %zd; 2 is required",
-                         i, n);
-            goto Fail;
-        }
-
-        /* Update/merge with this (key, value) pair. */
-        key = PySequence_Fast_GET_ITEM(fast, 0);
-        value = PySequence_Fast_GET_ITEM(fast, 1);
-        if (override || PyDict_GetItem(d, key) == NULL) {
-            int status = PyDict_SetItem(d, key, value);
-            if (status < 0)
-                goto Fail;
-        }
-        Py_DECREF(fast);
-        Py_DECREF(item);
-    }
-
-    i = 0;
-    goto Return;
-Fail:
-    Py_XDECREF(item);
-    Py_XDECREF(fast);
-    i = -1;
-Return:
-    Py_DECREF(it);
-    return Py_SAFE_DOWNCAST(i, Py_ssize_t, int);
-}
-
-int
-PyDict_Update(PyObject *a, PyObject *b)
-{
-    return PyDict_Merge(a, b, 1);
-}
-
-int
-PyDict_Merge(PyObject *a, PyObject *b, int override)
-{
-    register PyDictObject *mp, *other;
-    register Py_ssize_t i;
-    PyDictEntry *entry;
-
-    /* We accept for the argument either a concrete dictionary object,
-     * or an abstract "mapping" object.  For the former, we can do
-     * things quite efficiently.  For the latter, we only require that
-     * PyMapping_Keys() and PyObject_GetItem() be supported.
-     */
-    if (a == NULL || !PyDict_Check(a) || b == NULL) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    mp = (PyDictObject*)a;
-    if (PyDict_Check(b)) {
-        other = (PyDictObject*)b;
-        if (other == mp || other->ma_used == 0)
-            /* a.update(a) or a.update({}); nothing to do */
-            return 0;
-        if (mp->ma_used == 0)
-            /* Since the target dict is empty, PyDict_GetItem()
-             * always returns NULL.  Setting override to 1
-             * skips the unnecessary test.
-             */
-            override = 1;
-        /* Do one big resize at the start, rather than
-         * incrementally resizing as we insert new items.  Expect
-         * that there will be no (or few) overlapping keys.
-         */
-        if ((mp->ma_fill + other->ma_used)*3 >= (mp->ma_mask+1)*2) {
-           if (dictresize(mp, (mp->ma_used + other->ma_used)*2) != 0)
-               return -1;
-        }
-        for (i = 0; i <= other->ma_mask; i++) {
-            entry = &other->ma_table[i];
-            if (entry->me_value != NULL &&
-                (override ||
-                 PyDict_GetItem(a, entry->me_key) == NULL)) {
-                Py_INCREF(entry->me_key);
-                Py_INCREF(entry->me_value);
-                if (insertdict(mp, entry->me_key,
-                               (long)entry->me_hash,
-                               entry->me_value) != 0)
-                    return -1;
-            }
-        }
-    }
-    else {
-        /* Do it the generic, slower way */
-        PyObject *keys = PyMapping_Keys(b);
-        PyObject *iter;
-        PyObject *key, *value;
-        int status;
-
-        if (keys == NULL)
-            /* Docstring says this is equivalent to E.keys() so
-             * if E doesn't have a .keys() method we want
-             * AttributeError to percolate up.  Might as well
-             * do the same for any other error.
-             */
-            return -1;
-
-        iter = PyObject_GetIter(keys);
-        Py_DECREF(keys);
-        if (iter == NULL)
-            return -1;
-
-        for (key = PyIter_Next(iter); key; key = PyIter_Next(iter)) {
-            if (!override && PyDict_GetItem(a, key) != NULL) {
-                Py_DECREF(key);
-                continue;
-            }
-            value = PyObject_GetItem(b, key);
-            if (value == NULL) {
-                Py_DECREF(iter);
-                Py_DECREF(key);
-                return -1;
-            }
-            status = PyDict_SetItem(a, key, value);
-            Py_DECREF(key);
-            Py_DECREF(value);
-            if (status < 0) {
-                Py_DECREF(iter);
-                return -1;
-            }
-        }
-        Py_DECREF(iter);
-        if (PyErr_Occurred())
-            /* Iterator completed, via error */
-            return -1;
-    }
-    return 0;
-}
-
-static PyObject *
-dict_copy(register PyDictObject *mp)
-{
-    return PyDict_Copy((PyObject*)mp);
-}
-
-PyObject *
-PyDict_Copy(PyObject *o)
-{
-    PyObject *copy;
-
-    if (o == NULL || !PyDict_Check(o)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    copy = PyDict_New();
-    if (copy == NULL)
-        return NULL;
-    if (PyDict_Merge(copy, o, 1) == 0)
-        return copy;
-    Py_DECREF(copy);
-    return NULL;
-}
-
-Py_ssize_t
-PyDict_Size(PyObject *mp)
-{
-    if (mp == NULL || !PyDict_Check(mp)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    return ((PyDictObject *)mp)->ma_used;
-}
-
-PyObject *
-PyDict_Keys(PyObject *mp)
-{
-    if (mp == NULL || !PyDict_Check(mp)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return dict_keys((PyDictObject *)mp);
-}
-
-PyObject *
-PyDict_Values(PyObject *mp)
-{
-    if (mp == NULL || !PyDict_Check(mp)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return dict_values((PyDictObject *)mp);
-}
-
-PyObject *
-PyDict_Items(PyObject *mp)
-{
-    if (mp == NULL || !PyDict_Check(mp)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return dict_items((PyDictObject *)mp);
-}
-
-/* Subroutine which returns the smallest key in a for which b's value
-   is different or absent.  The value is returned too, through the
-   pval argument.  Both are NULL if no key in a is found for which b's status
-   differs.  The refcounts on (and only on) non-NULL *pval and function return
-   values must be decremented by the caller (characterize() increments them
-   to ensure that mutating comparison and PyDict_GetItem calls can't delete
-   them before the caller is done looking at them). */
-
-static PyObject *
-characterize(PyDictObject *a, PyDictObject *b, PyObject **pval)
-{
-    PyObject *akey = NULL; /* smallest key in a s.t. a[akey] != b[akey] */
-    PyObject *aval = NULL; /* a[akey] */
-    Py_ssize_t i;
-    int cmp;
-
-    for (i = 0; i <= a->ma_mask; i++) {
-        PyObject *thiskey, *thisaval, *thisbval;
-        if (a->ma_table[i].me_value == NULL)
-            continue;
-        thiskey = a->ma_table[i].me_key;
-        Py_INCREF(thiskey);  /* keep alive across compares */
-        if (akey != NULL) {
-            cmp = PyObject_RichCompareBool(akey, thiskey, Py_LT);
-            if (cmp < 0) {
-                Py_DECREF(thiskey);
-                goto Fail;
-            }
-            if (cmp > 0 ||
-                i > a->ma_mask ||
-                a->ma_table[i].me_value == NULL)
-            {
-                /* Not the *smallest* a key; or maybe it is
-                 * but the compare shrunk the dict so we can't
-                 * find its associated value anymore; or
-                 * maybe it is but the compare deleted the
-                 * a[thiskey] entry.
-                 */
-                Py_DECREF(thiskey);
-                continue;
-            }
-        }
-
-        /* Compare a[thiskey] to b[thiskey]; cmp <- true iff equal. */
-        thisaval = a->ma_table[i].me_value;
-        assert(thisaval);
-        Py_INCREF(thisaval);   /* keep alive */
-        thisbval = PyDict_GetItem((PyObject *)b, thiskey);
-        if (thisbval == NULL)
-            cmp = 0;
-        else {
-            /* both dicts have thiskey:  same values? */
-            cmp = PyObject_RichCompareBool(
-                                    thisaval, thisbval, Py_EQ);
-            if (cmp < 0) {
-                Py_DECREF(thiskey);
-                Py_DECREF(thisaval);
-                goto Fail;
-            }
-        }
-        if (cmp == 0) {
-            /* New winner. */
-            Py_XDECREF(akey);
-            Py_XDECREF(aval);
-            akey = thiskey;
-            aval = thisaval;
-        }
-        else {
-            Py_DECREF(thiskey);
-            Py_DECREF(thisaval);
-        }
-    }
-    *pval = aval;
-    return akey;
-
-Fail:
-    Py_XDECREF(akey);
-    Py_XDECREF(aval);
-    *pval = NULL;
-    return NULL;
-}
-
-static int
-dict_compare(PyDictObject *a, PyDictObject *b)
-{
-    PyObject *adiff, *bdiff, *aval, *bval;
-    int res;
-
-    /* Compare lengths first */
-    if (a->ma_used < b->ma_used)
-        return -1;              /* a is shorter */
-    else if (a->ma_used > b->ma_used)
-        return 1;               /* b is shorter */
-
-    /* Same length -- check all keys */
-    bdiff = bval = NULL;
-    adiff = characterize(a, b, &aval);
-    if (adiff == NULL) {
-        assert(!aval);
-        /* Either an error, or a is a subset with the same length so
-         * must be equal.
-         */
-        res = PyErr_Occurred() ? -1 : 0;
-        goto Finished;
-    }
-    bdiff = characterize(b, a, &bval);
-    if (bdiff == NULL && PyErr_Occurred()) {
-        assert(!bval);
-        res = -1;
-        goto Finished;
-    }
-    res = 0;
-    if (bdiff) {
-        /* bdiff == NULL "should be" impossible now, but perhaps
-         * the last comparison done by the characterize() on a had
-         * the side effect of making the dicts equal!
-         */
-        res = PyObject_Compare(adiff, bdiff);
-    }
-    if (res == 0 && bval != NULL)
-        res = PyObject_Compare(aval, bval);
-
-Finished:
-    Py_XDECREF(adiff);
-    Py_XDECREF(bdiff);
-    Py_XDECREF(aval);
-    Py_XDECREF(bval);
-    return res;
-}
-
-/* Return 1 if dicts equal, 0 if not, -1 if error.
- * Gets out as soon as any difference is detected.
- * Uses only Py_EQ comparison.
- */
-static int
-dict_equal(PyDictObject *a, PyDictObject *b)
-{
-    Py_ssize_t i;
-
-    if (a->ma_used != b->ma_used)
-        /* can't be equal if # of entries differ */
-        return 0;
-
-    /* Same # of entries -- check all of 'em.  Exit early on any diff. */
-    for (i = 0; i <= a->ma_mask; i++) {
-        PyObject *aval = a->ma_table[i].me_value;
-        if (aval != NULL) {
-            int cmp;
-            PyObject *bval;
-            PyObject *key = a->ma_table[i].me_key;
-            /* temporarily bump aval's refcount to ensure it stays
-               alive until we're done with it */
-            Py_INCREF(aval);
-            /* ditto for key */
-            Py_INCREF(key);
-            bval = PyDict_GetItem((PyObject *)b, key);
-            Py_DECREF(key);
-            if (bval == NULL) {
-                Py_DECREF(aval);
-                return 0;
-            }
-            cmp = PyObject_RichCompareBool(aval, bval, Py_EQ);
-            Py_DECREF(aval);
-            if (cmp <= 0)  /* error or not equal */
-                return cmp;
-        }
-    }
-    return 1;
- }
-
-static PyObject *
-dict_richcompare(PyObject *v, PyObject *w, int op)
-{
-    int cmp;
-    PyObject *res;
-
-    if (!PyDict_Check(v) || !PyDict_Check(w)) {
-        res = Py_NotImplemented;
-    }
-    else if (op == Py_EQ || op == Py_NE) {
-        cmp = dict_equal((PyDictObject *)v, (PyDictObject *)w);
-        if (cmp < 0)
-            return NULL;
-        res = (cmp == (op == Py_EQ)) ? Py_True : Py_False;
-    }
-    else {
-        /* Py3K warning if comparison isn't == or !=  */
-        if (PyErr_WarnPy3k("dict inequality comparisons not supported "
-                           "in 3.x", 1) < 0) {
-            return NULL;
-        }
-        res = Py_NotImplemented;
-    }
-    Py_INCREF(res);
-    return res;
- }
-
-static PyObject *
-dict_contains(register PyDictObject *mp, PyObject *key)
-{
-    long hash;
-    PyDictEntry *ep;
-
-    if (!PyString_CheckExact(key) ||
-        (hash = ((PyStringObject *) key)->ob_shash) == -1) {
-        hash = PyObject_Hash(key);
-        if (hash == -1)
-            return NULL;
-    }
-    ep = (mp->ma_lookup)(mp, key, hash);
-    if (ep == NULL)
-        return NULL;
-    return PyBool_FromLong(ep->me_value != NULL);
-}
-
-static PyObject *
-dict_has_key(register PyDictObject *mp, PyObject *key)
-{
-    if (PyErr_WarnPy3k("dict.has_key() not supported in 3.x; "
-                       "use the in operator", 1) < 0)
-        return NULL;
-    return dict_contains(mp, key);
-}
-
-static PyObject *
-dict_get(register PyDictObject *mp, PyObject *args)
-{
-    PyObject *key;
-    PyObject *failobj = Py_None;
-    PyObject *val = NULL;
-    long hash;
-    PyDictEntry *ep;
-
-    if (!PyArg_UnpackTuple(args, "get", 1, 2, &key, &failobj))
-        return NULL;
-
-    if (!PyString_CheckExact(key) ||
-        (hash = ((PyStringObject *) key)->ob_shash) == -1) {
-        hash = PyObject_Hash(key);
-        if (hash == -1)
-            return NULL;
-    }
-    ep = (mp->ma_lookup)(mp, key, hash);
-    if (ep == NULL)
-        return NULL;
-    val = ep->me_value;
-    if (val == NULL)
-        val = failobj;
-    Py_INCREF(val);
-    return val;
-}
-
-
-static PyObject *
-dict_setdefault(register PyDictObject *mp, PyObject *args)
-{
-    PyObject *key;
-    PyObject *failobj = Py_None;
-    PyObject *val = NULL;
-    long hash;
-    PyDictEntry *ep;
-
-    if (!PyArg_UnpackTuple(args, "setdefault", 1, 2, &key, &failobj))
-        return NULL;
-
-    if (!PyString_CheckExact(key) ||
-        (hash = ((PyStringObject *) key)->ob_shash) == -1) {
-        hash = PyObject_Hash(key);
-        if (hash == -1)
-            return NULL;
-    }
-    ep = (mp->ma_lookup)(mp, key, hash);
-    if (ep == NULL)
-        return NULL;
-    val = ep->me_value;
-    if (val == NULL) {
-        val = failobj;
-        if (PyDict_SetItem((PyObject*)mp, key, failobj))
-            val = NULL;
-    }
-    Py_XINCREF(val);
-    return val;
-}
-
-
-static PyObject *
-dict_clear(register PyDictObject *mp)
-{
-    PyDict_Clear((PyObject *)mp);
-    Py_RETURN_NONE;
-}
-
-static PyObject *
-dict_pop(PyDictObject *mp, PyObject *args)
-{
-    long hash;
-    PyDictEntry *ep;
-    PyObject *old_value, *old_key;
-    PyObject *key, *deflt = NULL;
-
-    if(!PyArg_UnpackTuple(args, "pop", 1, 2, &key, &deflt))
-        return NULL;
-    if (mp->ma_used == 0) {
-        if (deflt) {
-            Py_INCREF(deflt);
-            return deflt;
-        }
-        set_key_error(key);
-        return NULL;
-    }
-    if (!PyString_CheckExact(key) ||
-        (hash = ((PyStringObject *) key)->ob_shash) == -1) {
-        hash = PyObject_Hash(key);
-        if (hash == -1)
-            return NULL;
-    }
-    ep = (mp->ma_lookup)(mp, key, hash);
-    if (ep == NULL)
-        return NULL;
-    if (ep->me_value == NULL) {
-        if (deflt) {
-            Py_INCREF(deflt);
-            return deflt;
-        }
-        set_key_error(key);
-        return NULL;
-    }
-    old_key = ep->me_key;
-    Py_INCREF(dummy);
-    ep->me_key = dummy;
-    old_value = ep->me_value;
-    ep->me_value = NULL;
-    mp->ma_used--;
-    Py_DECREF(old_key);
-    return old_value;
-}
-
-static PyObject *
-dict_popitem(PyDictObject *mp)
-{
-    Py_ssize_t i = 0;
-    PyDictEntry *ep;
-    PyObject *res;
-
-    /* Allocate the result tuple before checking the size.  Believe it
-     * or not, this allocation could trigger a garbage collection which
-     * could empty the dict, so if we checked the size first and that
-     * happened, the result would be an infinite loop (searching for an
-     * entry that no longer exists).  Note that the usual popitem()
-     * idiom is "while d: k, v = d.popitem()". so needing to throw the
-     * tuple away if the dict *is* empty isn't a significant
-     * inefficiency -- possible, but unlikely in practice.
-     */
-    res = PyTuple_New(2);
-    if (res == NULL)
-        return NULL;
-    if (mp->ma_used == 0) {
-        Py_DECREF(res);
-        PyErr_SetString(PyExc_KeyError,
-                        "popitem(): dictionary is empty");
-        return NULL;
-    }
-    /* Set ep to "the first" dict entry with a value.  We abuse the hash
-     * field of slot 0 to hold a search finger:
-     * If slot 0 has a value, use slot 0.
-     * Else slot 0 is being used to hold a search finger,
-     * and we use its hash value as the first index to look.
-     */
-    ep = &mp->ma_table[0];
-    if (ep->me_value == NULL) {
-        i = ep->me_hash;
-        /* The hash field may be a real hash value, or it may be a
-         * legit search finger, or it may be a once-legit search
-         * finger that's out of bounds now because it wrapped around
-         * or the table shrunk -- simply make sure it's in bounds now.
-         */
-        if (i > mp->ma_mask || i < 1)
-            i = 1;              /* skip slot 0 */
-        while ((ep = &mp->ma_table[i])->me_value == NULL) {
-            i++;
-            if (i > mp->ma_mask)
-                i = 1;
-        }
-    }
-    PyTuple_SET_ITEM(res, 0, ep->me_key);
-    PyTuple_SET_ITEM(res, 1, ep->me_value);
-    Py_INCREF(dummy);
-    ep->me_key = dummy;
-    ep->me_value = NULL;
-    mp->ma_used--;
-    assert(mp->ma_table[0].me_value == NULL);
-    mp->ma_table[0].me_hash = i + 1;  /* next place to start */
-    return res;
-}
-
-static int
-dict_traverse(PyObject *op, visitproc visit, void *arg)
-{
-    Py_ssize_t i = 0;
-    PyObject *pk;
-    PyObject *pv;
-
-    while (PyDict_Next(op, &i, &pk, &pv)) {
-        Py_VISIT(pk);
-        Py_VISIT(pv);
-    }
-    return 0;
-}
-
-static int
-dict_tp_clear(PyObject *op)
-{
-    PyDict_Clear(op);
-    return 0;
-}
-
-
-extern PyTypeObject PyDictIterKey_Type; /* Forward */
-extern PyTypeObject PyDictIterValue_Type; /* Forward */
-extern PyTypeObject PyDictIterItem_Type; /* Forward */
-static PyObject *dictiter_new(PyDictObject *, PyTypeObject *);
-
-static PyObject *
-dict_iterkeys(PyDictObject *dict)
-{
-    return dictiter_new(dict, &PyDictIterKey_Type);
-}
-
-static PyObject *
-dict_itervalues(PyDictObject *dict)
-{
-    return dictiter_new(dict, &PyDictIterValue_Type);
-}
-
-static PyObject *
-dict_iteritems(PyDictObject *dict)
-{
-    return dictiter_new(dict, &PyDictIterItem_Type);
-}
-
-static PyObject *
-dict_sizeof(PyDictObject *mp)
-{
-    Py_ssize_t res;
-
-    res = sizeof(PyDictObject);
-    if (mp->ma_table != mp->ma_smalltable)
-        res = res + (mp->ma_mask + 1) * sizeof(PyDictEntry);
-    return PyInt_FromSsize_t(res);
-}
-
-PyDoc_STRVAR(has_key__doc__,
-"D.has_key(k) -> True if D has a key k, else False");
-
-PyDoc_STRVAR(contains__doc__,
-"D.__contains__(k) -> True if D has a key k, else False");
-
-PyDoc_STRVAR(getitem__doc__, "x.__getitem__(y) <==> x[y]");
-
-PyDoc_STRVAR(sizeof__doc__,
-"D.__sizeof__() -> size of D in memory, in bytes");
-
-PyDoc_STRVAR(get__doc__,
-"D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.");
-
-PyDoc_STRVAR(setdefault_doc__,
-"D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D");
-
-PyDoc_STRVAR(pop__doc__,
-"D.pop(k[,d]) -> v, remove specified key and return the corresponding value.\n\
-If key is not found, d is returned if given, otherwise KeyError is raised");
-
-PyDoc_STRVAR(popitem__doc__,
-"D.popitem() -> (k, v), remove and return some (key, value) pair as a\n\
-2-tuple; but raise KeyError if D is empty.");
-
-PyDoc_STRVAR(keys__doc__,
-"D.keys() -> list of D's keys");
-
-PyDoc_STRVAR(items__doc__,
-"D.items() -> list of D's (key, value) pairs, as 2-tuples");
-
-PyDoc_STRVAR(values__doc__,
-"D.values() -> list of D's values");
-
-PyDoc_STRVAR(update__doc__,
-"D.update(E, **F) -> None.  Update D from dict/iterable E and F.\n"
-"If E has a .keys() method, does:     for k in E: D[k] = E[k]\n\
-If E lacks .keys() method, does:     for (k, v) in E: D[k] = v\n\
-In either case, this is followed by: for k in F: D[k] = F[k]");
-
-PyDoc_STRVAR(fromkeys__doc__,
-"dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.\n\
-v defaults to None.");
-
-PyDoc_STRVAR(clear__doc__,
-"D.clear() -> None.  Remove all items from D.");
-
-PyDoc_STRVAR(copy__doc__,
-"D.copy() -> a shallow copy of D");
-
-PyDoc_STRVAR(iterkeys__doc__,
-"D.iterkeys() -> an iterator over the keys of D");
-
-PyDoc_STRVAR(itervalues__doc__,
-"D.itervalues() -> an iterator over the values of D");
-
-PyDoc_STRVAR(iteritems__doc__,
-"D.iteritems() -> an iterator over the (key, value) items of D");
-
-/* Forward */
-static PyObject *dictkeys_new(PyObject *);
-static PyObject *dictitems_new(PyObject *);
-static PyObject *dictvalues_new(PyObject *);
-
-PyDoc_STRVAR(viewkeys__doc__,
-             "D.viewkeys() -> a set-like object providing a view on D's keys");
-PyDoc_STRVAR(viewitems__doc__,
-             "D.viewitems() -> a set-like object providing a view on D's items");
-PyDoc_STRVAR(viewvalues__doc__,
-             "D.viewvalues() -> an object providing a view on D's values");
-
-static PyMethodDef mapp_methods[] = {
-    {"__contains__",(PyCFunction)dict_contains,         METH_O | METH_COEXIST,
-     contains__doc__},
-    {"__getitem__", (PyCFunction)dict_subscript,        METH_O | METH_COEXIST,
-     getitem__doc__},
-    {"__sizeof__",      (PyCFunction)dict_sizeof,       METH_NOARGS,
-     sizeof__doc__},
-    {"has_key",         (PyCFunction)dict_has_key,      METH_O,
-     has_key__doc__},
-    {"get",         (PyCFunction)dict_get,          METH_VARARGS,
-     get__doc__},
-    {"setdefault",  (PyCFunction)dict_setdefault,   METH_VARARGS,
-     setdefault_doc__},
-    {"pop",         (PyCFunction)dict_pop,          METH_VARARGS,
-     pop__doc__},
-    {"popitem",         (PyCFunction)dict_popitem,      METH_NOARGS,
-     popitem__doc__},
-    {"keys",            (PyCFunction)dict_keys,         METH_NOARGS,
-    keys__doc__},
-    {"items",           (PyCFunction)dict_items,        METH_NOARGS,
-     items__doc__},
-    {"values",          (PyCFunction)dict_values,       METH_NOARGS,
-     values__doc__},
-    {"viewkeys",        (PyCFunction)dictkeys_new,      METH_NOARGS,
-     viewkeys__doc__},
-    {"viewitems",       (PyCFunction)dictitems_new,     METH_NOARGS,
-     viewitems__doc__},
-    {"viewvalues",      (PyCFunction)dictvalues_new,    METH_NOARGS,
-     viewvalues__doc__},
-    {"update",          (PyCFunction)dict_update,       METH_VARARGS | METH_KEYWORDS,
-     update__doc__},
-    {"fromkeys",        (PyCFunction)dict_fromkeys,     METH_VARARGS | METH_CLASS,
-     fromkeys__doc__},
-    {"clear",           (PyCFunction)dict_clear,        METH_NOARGS,
-     clear__doc__},
-    {"copy",            (PyCFunction)dict_copy,         METH_NOARGS,
-     copy__doc__},
-    {"iterkeys",        (PyCFunction)dict_iterkeys,     METH_NOARGS,
-     iterkeys__doc__},
-    {"itervalues",      (PyCFunction)dict_itervalues,   METH_NOARGS,
-     itervalues__doc__},
-    {"iteritems",       (PyCFunction)dict_iteritems,    METH_NOARGS,
-     iteritems__doc__},
-    {NULL,              NULL}   /* sentinel */
-};
-
-/* Return 1 if `key` is in dict `op`, 0 if not, and -1 on error. */
-int
-PyDict_Contains(PyObject *op, PyObject *key)
-{
-    long hash;
-    PyDictObject *mp = (PyDictObject *)op;
-    PyDictEntry *ep;
-
-    if (!PyString_CheckExact(key) ||
-        (hash = ((PyStringObject *) key)->ob_shash) == -1) {
-        hash = PyObject_Hash(key);
-        if (hash == -1)
-            return -1;
-    }
-    ep = (mp->ma_lookup)(mp, key, hash);
-    return ep == NULL ? -1 : (ep->me_value != NULL);
-}
-
-/* Internal version of PyDict_Contains used when the hash value is already known */
-int
-_PyDict_Contains(PyObject *op, PyObject *key, long hash)
-{
-    PyDictObject *mp = (PyDictObject *)op;
-    PyDictEntry *ep;
-
-    ep = (mp->ma_lookup)(mp, key, hash);
-    return ep == NULL ? -1 : (ep->me_value != NULL);
-}
-
-/* Hack to implement "key in dict" */
-static PySequenceMethods dict_as_sequence = {
-    0,                          /* sq_length */
-    0,                          /* sq_concat */
-    0,                          /* sq_repeat */
-    0,                          /* sq_item */
-    0,                          /* sq_slice */
-    0,                          /* sq_ass_item */
-    0,                          /* sq_ass_slice */
-    PyDict_Contains,            /* sq_contains */
-    0,                          /* sq_inplace_concat */
-    0,                          /* sq_inplace_repeat */
-};
-
-static PyObject *
-dict_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *self;
-
-    assert(type != NULL && type->tp_alloc != NULL);
-    self = type->tp_alloc(type, 0);
-    if (self != NULL) {
-        PyDictObject *d = (PyDictObject *)self;
-        /* It's guaranteed that tp->alloc zeroed out the struct. */
-        assert(d->ma_table == NULL && d->ma_fill == 0 && d->ma_used == 0);
-        INIT_NONZERO_DICT_SLOTS(d);
-        d->ma_lookup = lookdict_string;
-        /* The object has been implicitly tracked by tp_alloc */
-        if (type == &PyDict_Type)
-            _PyObject_GC_UNTRACK(d);
-#ifdef SHOW_CONVERSION_COUNTS
-        ++created;
-#endif
-#ifdef SHOW_TRACK_COUNT
-        if (_PyObject_GC_IS_TRACKED(d))
-            count_tracked++;
-        else
-            count_untracked++;
-#endif
-    }
-    return self;
-}
-
-static int
-dict_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    return dict_update_common(self, args, kwds, "dict");
-}
-
-static PyObject *
-dict_iter(PyDictObject *dict)
-{
-    return dictiter_new(dict, &PyDictIterKey_Type);
-}
-
-PyDoc_STRVAR(dictionary_doc,
-"dict() -> new empty dictionary\n"
-"dict(mapping) -> new dictionary initialized from a mapping object's\n"
-"    (key, value) pairs\n"
-"dict(iterable) -> new dictionary initialized as if via:\n"
-"    d = {}\n"
-"    for k, v in iterable:\n"
-"        d[k] = v\n"
-"dict(**kwargs) -> new dictionary initialized with the name=value pairs\n"
-"    in the keyword argument list.  For example:  dict(one=1, two=2)");
-
-PyTypeObject PyDict_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "dict",
-    sizeof(PyDictObject),
-    0,
-    (destructor)dict_dealloc,                   /* tp_dealloc */
-    (printfunc)dict_print,                      /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    (cmpfunc)dict_compare,                      /* tp_compare */
-    (reprfunc)dict_repr,                        /* tp_repr */
-    0,                                          /* tp_as_number */
-    &dict_as_sequence,                          /* tp_as_sequence */
-    &dict_as_mapping,                           /* tp_as_mapping */
-    (hashfunc)PyObject_HashNotImplemented,      /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE | Py_TPFLAGS_DICT_SUBCLASS,         /* tp_flags */
-    dictionary_doc,                             /* tp_doc */
-    dict_traverse,                              /* tp_traverse */
-    dict_tp_clear,                              /* tp_clear */
-    dict_richcompare,                           /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    (getiterfunc)dict_iter,                     /* tp_iter */
-    0,                                          /* tp_iternext */
-    mapp_methods,                               /* tp_methods */
-    0,                                          /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    dict_init,                                  /* tp_init */
-    PyType_GenericAlloc,                        /* tp_alloc */
-    dict_new,                                   /* tp_new */
-    PyObject_GC_Del,                            /* tp_free */
-};
-
-/* For backward compatibility with old dictionary interface */
-
-PyObject *
-PyDict_GetItemString(PyObject *v, const char *key)
-{
-    PyObject *kv, *rv;
-    kv = PyString_FromString(key);
-    if (kv == NULL)
-        return NULL;
-    rv = PyDict_GetItem(v, kv);
-    Py_DECREF(kv);
-    return rv;
-}
-
-int
-PyDict_SetItemString(PyObject *v, const char *key, PyObject *item)
-{
-    PyObject *kv;
-    int err;
-    kv = PyString_FromString(key);
-    if (kv == NULL)
-        return -1;
-    PyString_InternInPlace(&kv); /* XXX Should we really? */
-    err = PyDict_SetItem(v, kv, item);
-    Py_DECREF(kv);
-    return err;
-}
-
-int
-PyDict_DelItemString(PyObject *v, const char *key)
-{
-    PyObject *kv;
-    int err;
-    kv = PyString_FromString(key);
-    if (kv == NULL)
-        return -1;
-    err = PyDict_DelItem(v, kv);
-    Py_DECREF(kv);
-    return err;
-}
-
-/* Dictionary iterator types */
-
-typedef struct {
-    PyObject_HEAD
-    PyDictObject *di_dict; /* Set to NULL when iterator is exhausted */
-    Py_ssize_t di_used;
-    Py_ssize_t di_pos;
-    PyObject* di_result; /* reusable result tuple for iteritems */
-    Py_ssize_t len;
-} dictiterobject;
-
-static PyObject *
-dictiter_new(PyDictObject *dict, PyTypeObject *itertype)
-{
-    dictiterobject *di;
-    di = PyObject_GC_New(dictiterobject, itertype);
-    if (di == NULL)
-        return NULL;
-    Py_INCREF(dict);
-    di->di_dict = dict;
-    di->di_used = dict->ma_used;
-    di->di_pos = 0;
-    di->len = dict->ma_used;
-    if (itertype == &PyDictIterItem_Type) {
-        di->di_result = PyTuple_Pack(2, Py_None, Py_None);
-        if (di->di_result == NULL) {
-            Py_DECREF(di);
-            return NULL;
-        }
-    }
-    else
-        di->di_result = NULL;
-    _PyObject_GC_TRACK(di);
-    return (PyObject *)di;
-}
-
-static void
-dictiter_dealloc(dictiterobject *di)
-{
-    Py_XDECREF(di->di_dict);
-    Py_XDECREF(di->di_result);
-    PyObject_GC_Del(di);
-}
-
-static int
-dictiter_traverse(dictiterobject *di, visitproc visit, void *arg)
-{
-    Py_VISIT(di->di_dict);
-    Py_VISIT(di->di_result);
-    return 0;
-}
-
-static PyObject *
-dictiter_len(dictiterobject *di)
-{
-    Py_ssize_t len = 0;
-    if (di->di_dict != NULL && di->di_used == di->di_dict->ma_used)
-        len = di->len;
-    return PyInt_FromSize_t(len);
-}
-
-PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
-
-static PyMethodDef dictiter_methods[] = {
-    {"__length_hint__", (PyCFunction)dictiter_len, METH_NOARGS, length_hint_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyObject *dictiter_iternextkey(dictiterobject *di)
-{
-    PyObject *key;
-    register Py_ssize_t i, mask;
-    register PyDictEntry *ep;
-    PyDictObject *d = di->di_dict;
-
-    if (d == NULL)
-        return NULL;
-    assert (PyDict_Check(d));
-
-    if (di->di_used != d->ma_used) {
-        PyErr_SetString(PyExc_RuntimeError,
-                        "dictionary changed size during iteration");
-        di->di_used = -1; /* Make this state sticky */
-        return NULL;
-    }
-
-    i = di->di_pos;
-    if (i < 0)
-        goto fail;
-    ep = d->ma_table;
-    mask = d->ma_mask;
-    while (i <= mask && ep[i].me_value == NULL)
-        i++;
-    di->di_pos = i+1;
-    if (i > mask)
-        goto fail;
-    di->len--;
-    key = ep[i].me_key;
-    Py_INCREF(key);
-    return key;
-
-fail:
-    Py_DECREF(d);
-    di->di_dict = NULL;
-    return NULL;
-}
-
-PyTypeObject PyDictIterKey_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "dictionary-keyiterator",                   /* tp_name */
-    sizeof(dictiterobject),                     /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)dictiter_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)dictiter_traverse,            /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    PyObject_SelfIter,                          /* tp_iter */
-    (iternextfunc)dictiter_iternextkey,         /* tp_iternext */
-    dictiter_methods,                           /* tp_methods */
-    0,
-};
-
-static PyObject *dictiter_iternextvalue(dictiterobject *di)
-{
-    PyObject *value;
-    register Py_ssize_t i, mask;
-    register PyDictEntry *ep;
-    PyDictObject *d = di->di_dict;
-
-    if (d == NULL)
-        return NULL;
-    assert (PyDict_Check(d));
-
-    if (di->di_used != d->ma_used) {
-        PyErr_SetString(PyExc_RuntimeError,
-                        "dictionary changed size during iteration");
-        di->di_used = -1; /* Make this state sticky */
-        return NULL;
-    }
-
-    i = di->di_pos;
-    mask = d->ma_mask;
-    if (i < 0 || i > mask)
-        goto fail;
-    ep = d->ma_table;
-    while ((value=ep[i].me_value) == NULL) {
-        i++;
-        if (i > mask)
-            goto fail;
-    }
-    di->di_pos = i+1;
-    di->len--;
-    Py_INCREF(value);
-    return value;
-
-fail:
-    Py_DECREF(d);
-    di->di_dict = NULL;
-    return NULL;
-}
-
-PyTypeObject PyDictIterValue_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "dictionary-valueiterator",                 /* tp_name */
-    sizeof(dictiterobject),                     /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)dictiter_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)dictiter_traverse,            /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    PyObject_SelfIter,                          /* tp_iter */
-    (iternextfunc)dictiter_iternextvalue,       /* tp_iternext */
-    dictiter_methods,                           /* tp_methods */
-    0,
-};
-
-static PyObject *dictiter_iternextitem(dictiterobject *di)
-{
-    PyObject *key, *value, *result = di->di_result;
-    register Py_ssize_t i, mask;
-    register PyDictEntry *ep;
-    PyDictObject *d = di->di_dict;
-
-    if (d == NULL)
-        return NULL;
-    assert (PyDict_Check(d));
-
-    if (di->di_used != d->ma_used) {
-        PyErr_SetString(PyExc_RuntimeError,
-                        "dictionary changed size during iteration");
-        di->di_used = -1; /* Make this state sticky */
-        return NULL;
-    }
-
-    i = di->di_pos;
-    if (i < 0)
-        goto fail;
-    ep = d->ma_table;
-    mask = d->ma_mask;
-    while (i <= mask && ep[i].me_value == NULL)
-        i++;
-    di->di_pos = i+1;
-    if (i > mask)
-        goto fail;
-
-    if (result->ob_refcnt == 1) {
-        Py_INCREF(result);
-        Py_DECREF(PyTuple_GET_ITEM(result, 0));
-        Py_DECREF(PyTuple_GET_ITEM(result, 1));
-    } else {
-        result = PyTuple_New(2);
-        if (result == NULL)
-            return NULL;
-    }
-    di->len--;
-    key = ep[i].me_key;
-    value = ep[i].me_value;
-    Py_INCREF(key);
-    Py_INCREF(value);
-    PyTuple_SET_ITEM(result, 0, key);
-    PyTuple_SET_ITEM(result, 1, value);
-    return result;
-
-fail:
-    Py_DECREF(d);
-    di->di_dict = NULL;
-    return NULL;
-}
-
-PyTypeObject PyDictIterItem_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "dictionary-itemiterator",                  /* tp_name */
-    sizeof(dictiterobject),                     /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)dictiter_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)dictiter_traverse,            /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    PyObject_SelfIter,                          /* tp_iter */
-    (iternextfunc)dictiter_iternextitem,        /* tp_iternext */
-    dictiter_methods,                           /* tp_methods */
-    0,
-};
-
-/***********************************************/
-/* View objects for keys(), items(), values(). */
-/***********************************************/
-
-/* The instance lay-out is the same for all three; but the type differs. */
-
-typedef struct {
-    PyObject_HEAD
-    PyDictObject *dv_dict;
-} dictviewobject;
-
-
-static void
-dictview_dealloc(dictviewobject *dv)
-{
-    Py_XDECREF(dv->dv_dict);
-    PyObject_GC_Del(dv);
-}
-
-static int
-dictview_traverse(dictviewobject *dv, visitproc visit, void *arg)
-{
-    Py_VISIT(dv->dv_dict);
-    return 0;
-}
-
-static Py_ssize_t
-dictview_len(dictviewobject *dv)
-{
-    Py_ssize_t len = 0;
-    if (dv->dv_dict != NULL)
-        len = dv->dv_dict->ma_used;
-    return len;
-}
-
-static PyObject *
-dictview_new(PyObject *dict, PyTypeObject *type)
-{
-    dictviewobject *dv;
-    if (dict == NULL) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    if (!PyDict_Check(dict)) {
-        /* XXX Get rid of this restriction later */
-        PyErr_Format(PyExc_TypeError,
-                     "%s() requires a dict argument, not '%s'",
-                     type->tp_name, dict->ob_type->tp_name);
-        return NULL;
-    }
-    dv = PyObject_GC_New(dictviewobject, type);
-    if (dv == NULL)
-        return NULL;
-    Py_INCREF(dict);
-    dv->dv_dict = (PyDictObject *)dict;
-    _PyObject_GC_TRACK(dv);
-    return (PyObject *)dv;
-}
-
-/* TODO(guido): The views objects are not complete:
-
- * support more set operations
- * support arbitrary mappings?
-   - either these should be static or exported in dictobject.h
-   - if public then they should probably be in builtins
-*/
-
-/* Return 1 if self is a subset of other, iterating over self;
-   0 if not; -1 if an error occurred. */
-static int
-all_contained_in(PyObject *self, PyObject *other)
-{
-    PyObject *iter = PyObject_GetIter(self);
-    int ok = 1;
-
-    if (iter == NULL)
-        return -1;
-    for (;;) {
-        PyObject *next = PyIter_Next(iter);
-        if (next == NULL) {
-            if (PyErr_Occurred())
-                ok = -1;
-            break;
-        }
-        ok = PySequence_Contains(other, next);
-        Py_DECREF(next);
-        if (ok <= 0)
-            break;
-    }
-    Py_DECREF(iter);
-    return ok;
-}
-
-static PyObject *
-dictview_richcompare(PyObject *self, PyObject *other, int op)
-{
-    Py_ssize_t len_self, len_other;
-    int ok;
-    PyObject *result;
-
-    assert(self != NULL);
-    assert(PyDictViewSet_Check(self));
-    assert(other != NULL);
-
-    if (!PyAnySet_Check(other) && !PyDictViewSet_Check(other)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-
-    len_self = PyObject_Size(self);
-    if (len_self < 0)
-        return NULL;
-    len_other = PyObject_Size(other);
-    if (len_other < 0)
-        return NULL;
-
-    ok = 0;
-    switch(op) {
-
-    case Py_NE:
-    case Py_EQ:
-        if (len_self == len_other)
-            ok = all_contained_in(self, other);
-        if (op == Py_NE && ok >= 0)
-            ok = !ok;
-        break;
-
-    case Py_LT:
-        if (len_self < len_other)
-            ok = all_contained_in(self, other);
-        break;
-
-      case Py_LE:
-          if (len_self <= len_other)
-              ok = all_contained_in(self, other);
-          break;
-
-    case Py_GT:
-        if (len_self > len_other)
-            ok = all_contained_in(other, self);
-        break;
-
-    case Py_GE:
-        if (len_self >= len_other)
-            ok = all_contained_in(other, self);
-        break;
-
-    }
-    if (ok < 0)
-        return NULL;
-    result = ok ? Py_True : Py_False;
-    Py_INCREF(result);
-    return result;
-}
-
-static PyObject *
-dictview_repr(dictviewobject *dv)
-{
-    PyObject *seq;
-    PyObject *seq_str;
-    PyObject *result;
-
-    seq = PySequence_List((PyObject *)dv);
-    if (seq == NULL)
-        return NULL;
-
-    seq_str = PyObject_Repr(seq);
-    result = PyString_FromFormat("%s(%s)", Py_TYPE(dv)->tp_name,
-                                 PyString_AS_STRING(seq_str));
-    Py_DECREF(seq_str);
-    Py_DECREF(seq);
-    return result;
-}
-
-/*** dict_keys ***/
-
-static PyObject *
-dictkeys_iter(dictviewobject *dv)
-{
-    if (dv->dv_dict == NULL) {
-        Py_RETURN_NONE;
-    }
-    return dictiter_new(dv->dv_dict, &PyDictIterKey_Type);
-}
-
-static int
-dictkeys_contains(dictviewobject *dv, PyObject *obj)
-{
-    if (dv->dv_dict == NULL)
-        return 0;
-    return PyDict_Contains((PyObject *)dv->dv_dict, obj);
-}
-
-static PySequenceMethods dictkeys_as_sequence = {
-    (lenfunc)dictview_len,              /* sq_length */
-    0,                                  /* sq_concat */
-    0,                                  /* sq_repeat */
-    0,                                  /* sq_item */
-    0,                                  /* sq_slice */
-    0,                                  /* sq_ass_item */
-    0,                                  /* sq_ass_slice */
-    (objobjproc)dictkeys_contains,      /* sq_contains */
-};
-
-static PyObject*
-dictviews_sub(PyObject* self, PyObject *other)
-{
-    PyObject *result = PySet_New(self);
-    PyObject *tmp;
-    if (result == NULL)
-        return NULL;
-
-    tmp = PyObject_CallMethod(result, "difference_update", "O", other);
-    if (tmp == NULL) {
-        Py_DECREF(result);
-        return NULL;
-    }
-
-    Py_DECREF(tmp);
-    return result;
-}
-
-static PyObject*
-dictviews_and(PyObject* self, PyObject *other)
-{
-    PyObject *result = PySet_New(self);
-    PyObject *tmp;
-    if (result == NULL)
-        return NULL;
-
-    tmp = PyObject_CallMethod(result, "intersection_update", "O", other);
-    if (tmp == NULL) {
-        Py_DECREF(result);
-        return NULL;
-    }
-
-    Py_DECREF(tmp);
-    return result;
-}
-
-static PyObject*
-dictviews_or(PyObject* self, PyObject *other)
-{
-    PyObject *result = PySet_New(self);
-    PyObject *tmp;
-    if (result == NULL)
-        return NULL;
-
-    tmp = PyObject_CallMethod(result, "update", "O", other);
-    if (tmp == NULL) {
-        Py_DECREF(result);
-        return NULL;
-    }
-
-    Py_DECREF(tmp);
-    return result;
-}
-
-static PyObject*
-dictviews_xor(PyObject* self, PyObject *other)
-{
-    PyObject *result = PySet_New(self);
-    PyObject *tmp;
-    if (result == NULL)
-        return NULL;
-
-    tmp = PyObject_CallMethod(result, "symmetric_difference_update", "O",
-                              other);
-    if (tmp == NULL) {
-        Py_DECREF(result);
-        return NULL;
-    }
-
-    Py_DECREF(tmp);
-    return result;
-}
-
-static PyNumberMethods dictviews_as_number = {
-    0,                                  /*nb_add*/
-    (binaryfunc)dictviews_sub,          /*nb_subtract*/
-    0,                                  /*nb_multiply*/
-    0,                                  /*nb_divide*/
-    0,                                  /*nb_remainder*/
-    0,                                  /*nb_divmod*/
-    0,                                  /*nb_power*/
-    0,                                  /*nb_negative*/
-    0,                                  /*nb_positive*/
-    0,                                  /*nb_absolute*/
-    0,                                  /*nb_nonzero*/
-    0,                                  /*nb_invert*/
-    0,                                  /*nb_lshift*/
-    0,                                  /*nb_rshift*/
-    (binaryfunc)dictviews_and,          /*nb_and*/
-    (binaryfunc)dictviews_xor,          /*nb_xor*/
-    (binaryfunc)dictviews_or,           /*nb_or*/
-};
-
-static PyMethodDef dictkeys_methods[] = {
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyTypeObject PyDictKeys_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "dict_keys",                                /* tp_name */
-    sizeof(dictviewobject),                     /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)dictview_dealloc,               /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_reserved */
-    (reprfunc)dictview_repr,                    /* tp_repr */
-    &dictviews_as_number,                       /* tp_as_number */
-    &dictkeys_as_sequence,                      /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_CHECKTYPES,                  /* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)dictview_traverse,            /* tp_traverse */
-    0,                                          /* tp_clear */
-    dictview_richcompare,                       /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    (getiterfunc)dictkeys_iter,                 /* tp_iter */
-    0,                                          /* tp_iternext */
-    dictkeys_methods,                           /* tp_methods */
-    0,
-};
-
-static PyObject *
-dictkeys_new(PyObject *dict)
-{
-    return dictview_new(dict, &PyDictKeys_Type);
-}
-
-/*** dict_items ***/
-
-static PyObject *
-dictitems_iter(dictviewobject *dv)
-{
-    if (dv->dv_dict == NULL) {
-        Py_RETURN_NONE;
-    }
-    return dictiter_new(dv->dv_dict, &PyDictIterItem_Type);
-}
-
-static int
-dictitems_contains(dictviewobject *dv, PyObject *obj)
-{
-    PyObject *key, *value, *found;
-    if (dv->dv_dict == NULL)
-        return 0;
-    if (!PyTuple_Check(obj) || PyTuple_GET_SIZE(obj) != 2)
-        return 0;
-    key = PyTuple_GET_ITEM(obj, 0);
-    value = PyTuple_GET_ITEM(obj, 1);
-    found = PyDict_GetItem((PyObject *)dv->dv_dict, key);
-    if (found == NULL) {
-        if (PyErr_Occurred())
-            return -1;
-        return 0;
-    }
-    return PyObject_RichCompareBool(value, found, Py_EQ);
-}
-
-static PySequenceMethods dictitems_as_sequence = {
-    (lenfunc)dictview_len,              /* sq_length */
-    0,                                  /* sq_concat */
-    0,                                  /* sq_repeat */
-    0,                                  /* sq_item */
-    0,                                  /* sq_slice */
-    0,                                  /* sq_ass_item */
-    0,                                  /* sq_ass_slice */
-    (objobjproc)dictitems_contains,     /* sq_contains */
-};
-
-static PyMethodDef dictitems_methods[] = {
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyTypeObject PyDictItems_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "dict_items",                               /* tp_name */
-    sizeof(dictviewobject),                     /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)dictview_dealloc,               /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_reserved */
-    (reprfunc)dictview_repr,                    /* tp_repr */
-    &dictviews_as_number,                       /* tp_as_number */
-    &dictitems_as_sequence,                     /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_CHECKTYPES,                  /* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)dictview_traverse,            /* tp_traverse */
-    0,                                          /* tp_clear */
-    dictview_richcompare,                       /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    (getiterfunc)dictitems_iter,                /* tp_iter */
-    0,                                          /* tp_iternext */
-    dictitems_methods,                          /* tp_methods */
-    0,
-};
-
-static PyObject *
-dictitems_new(PyObject *dict)
-{
-    return dictview_new(dict, &PyDictItems_Type);
-}
-
-/*** dict_values ***/
-
-static PyObject *
-dictvalues_iter(dictviewobject *dv)
-{
-    if (dv->dv_dict == NULL) {
-        Py_RETURN_NONE;
-    }
-    return dictiter_new(dv->dv_dict, &PyDictIterValue_Type);
-}
-
-static PySequenceMethods dictvalues_as_sequence = {
-    (lenfunc)dictview_len,              /* sq_length */
-    0,                                  /* sq_concat */
-    0,                                  /* sq_repeat */
-    0,                                  /* sq_item */
-    0,                                  /* sq_slice */
-    0,                                  /* sq_ass_item */
-    0,                                  /* sq_ass_slice */
-    (objobjproc)0,                      /* sq_contains */
-};
-
-static PyMethodDef dictvalues_methods[] = {
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyTypeObject PyDictValues_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "dict_values",                              /* tp_name */
-    sizeof(dictviewobject),                     /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)dictview_dealloc,               /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_reserved */
-    (reprfunc)dictview_repr,                    /* tp_repr */
-    0,                                          /* tp_as_number */
-    &dictvalues_as_sequence,                    /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)dictview_traverse,            /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    (getiterfunc)dictvalues_iter,               /* tp_iter */
-    0,                                          /* tp_iternext */
-    dictvalues_methods,                         /* tp_methods */
-    0,
-};
-
-static PyObject *
-dictvalues_new(PyObject *dict)
-{
-    return dictview_new(dict, &PyDictValues_Type);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/enumobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/enumobject.c
deleted file mode 100644
index 9b6de23..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/enumobject.c
+++ /dev/null
@@ -1,381 +0,0 @@
-/* enumerate object */
-
-#include "Python.h"
-
-typedef struct {
-    PyObject_HEAD
-    Py_ssize_t en_index;           /* current index of enumeration */
-    PyObject* en_sit;          /* secondary iterator of enumeration */
-    PyObject* en_result;           /* result tuple  */
-    PyObject* en_longindex;        /* index for sequences >= PY_SSIZE_T_MAX */
-} enumobject;
-
-static PyObject *
-enum_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    enumobject *en;
-    PyObject *seq = NULL;
-    PyObject *start = NULL;
-    static char *kwlist[] = {"sequence", "start", 0};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:enumerate", kwlist,
-                                     &seq, &start))
-        return NULL;
-
-    en = (enumobject *)type->tp_alloc(type, 0);
-    if (en == NULL)
-        return NULL;
-    if (start != NULL) {
-        start = PyNumber_Index(start);
-        if (start == NULL) {
-            Py_DECREF(en);
-            return NULL;
-        }
-        assert(PyInt_Check(start) || PyLong_Check(start));
-        en->en_index = PyInt_AsSsize_t(start);
-        if (en->en_index == -1 && PyErr_Occurred()) {
-            PyErr_Clear();
-            en->en_index = PY_SSIZE_T_MAX;
-            en->en_longindex = start;
-        } else {
-            en->en_longindex = NULL;
-            Py_DECREF(start);
-        }
-    } else {
-        en->en_index = 0;
-        en->en_longindex = NULL;
-    }
-    en->en_sit = PyObject_GetIter(seq);
-    if (en->en_sit == NULL) {
-        Py_DECREF(en);
-        return NULL;
-    }
-    en->en_result = PyTuple_Pack(2, Py_None, Py_None);
-    if (en->en_result == NULL) {
-        Py_DECREF(en);
-        return NULL;
-    }
-    return (PyObject *)en;
-}
-
-static void
-enum_dealloc(enumobject *en)
-{
-    PyObject_GC_UnTrack(en);
-    Py_XDECREF(en->en_sit);
-    Py_XDECREF(en->en_result);
-    Py_XDECREF(en->en_longindex);
-    Py_TYPE(en)->tp_free(en);
-}
-
-static int
-enum_traverse(enumobject *en, visitproc visit, void *arg)
-{
-    Py_VISIT(en->en_sit);
-    Py_VISIT(en->en_result);
-    Py_VISIT(en->en_longindex);
-    return 0;
-}
-
-static PyObject *
-enum_next_long(enumobject *en, PyObject* next_item)
-{
-    static PyObject *one = NULL;
-    PyObject *result = en->en_result;
-    PyObject *next_index;
-    PyObject *stepped_up;
-
-    if (en->en_longindex == NULL) {
-        en->en_longindex = PyInt_FromSsize_t(PY_SSIZE_T_MAX);
-        if (en->en_longindex == NULL)
-            return NULL;
-    }
-    if (one == NULL) {
-        one = PyInt_FromLong(1);
-        if (one == NULL)
-            return NULL;
-    }
-    next_index = en->en_longindex;
-    assert(next_index != NULL);
-    stepped_up = PyNumber_Add(next_index, one);
-    if (stepped_up == NULL)
-        return NULL;
-    en->en_longindex = stepped_up;
-
-    if (result->ob_refcnt == 1) {
-        Py_INCREF(result);
-        Py_DECREF(PyTuple_GET_ITEM(result, 0));
-        Py_DECREF(PyTuple_GET_ITEM(result, 1));
-    } else {
-        result = PyTuple_New(2);
-        if (result == NULL) {
-            Py_DECREF(next_index);
-            Py_DECREF(next_item);
-            return NULL;
-        }
-    }
-    PyTuple_SET_ITEM(result, 0, next_index);
-    PyTuple_SET_ITEM(result, 1, next_item);
-    return result;
-}
-
-static PyObject *
-enum_next(enumobject *en)
-{
-    PyObject *next_index;
-    PyObject *next_item;
-    PyObject *result = en->en_result;
-    PyObject *it = en->en_sit;
-
-    next_item = (*Py_TYPE(it)->tp_iternext)(it);
-    if (next_item == NULL)
-        return NULL;
-
-    if (en->en_index == PY_SSIZE_T_MAX)
-        return enum_next_long(en, next_item);
-
-    next_index = PyInt_FromSsize_t(en->en_index);
-    if (next_index == NULL) {
-        Py_DECREF(next_item);
-        return NULL;
-    }
-    en->en_index++;
-
-    if (result->ob_refcnt == 1) {
-        Py_INCREF(result);
-        Py_DECREF(PyTuple_GET_ITEM(result, 0));
-        Py_DECREF(PyTuple_GET_ITEM(result, 1));
-    } else {
-        result = PyTuple_New(2);
-        if (result == NULL) {
-            Py_DECREF(next_index);
-            Py_DECREF(next_item);
-            return NULL;
-        }
-    }
-    PyTuple_SET_ITEM(result, 0, next_index);
-    PyTuple_SET_ITEM(result, 1, next_item);
-    return result;
-}
-
-PyDoc_STRVAR(enum_doc,
-"enumerate(iterable[, start]) -> iterator for index, value of iterable\n"
-"\n"
-"Return an enumerate object.  iterable must be another object that supports\n"
-"iteration.  The enumerate object yields pairs containing a count (from\n"
-"start, which defaults to zero) and a value yielded by the iterable argument.\n"
-"enumerate is useful for obtaining an indexed list:\n"
-"    (0, seq[0]), (1, seq[1]), (2, seq[2]), ...");
-
-PyTypeObject PyEnum_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "enumerate",                    /* tp_name */
-    sizeof(enumobject),             /* tp_basicsize */
-    0,                              /* tp_itemsize */
-    /* methods */
-    (destructor)enum_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 */
-    PyObject_GenericGetAttr,        /* tp_getattro */
-    0,                              /* tp_setattro */
-    0,                              /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,    /* tp_flags */
-    enum_doc,                       /* tp_doc */
-    (traverseproc)enum_traverse,    /* tp_traverse */
-    0,                              /* tp_clear */
-    0,                              /* tp_richcompare */
-    0,                              /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)enum_next,        /* tp_iternext */
-    0,                              /* tp_methods */
-    0,                              /* tp_members */
-    0,                              /* tp_getset */
-    0,                              /* tp_base */
-    0,                              /* tp_dict */
-    0,                              /* tp_descr_get */
-    0,                              /* tp_descr_set */
-    0,                              /* tp_dictoffset */
-    0,                              /* tp_init */
-    PyType_GenericAlloc,            /* tp_alloc */
-    enum_new,                       /* tp_new */
-    PyObject_GC_Del,                /* tp_free */
-};
-
-/* Reversed Object ***************************************************************/
-
-typedef struct {
-    PyObject_HEAD
-    Py_ssize_t      index;
-    PyObject* seq;
-} reversedobject;
-
-static PyObject *
-reversed_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    Py_ssize_t n;
-    PyObject *seq, *reversed_meth;
-    static PyObject *reversed_cache = NULL;
-    reversedobject *ro;
-
-    if (type == &PyReversed_Type && !_PyArg_NoKeywords("reversed()", kwds))
-        return NULL;
-
-    if (!PyArg_UnpackTuple(args, "reversed", 1, 1, &seq) )
-        return NULL;
-
-    if (PyInstance_Check(seq)) {
-        reversed_meth = PyObject_GetAttrString(seq, "__reversed__");
-        if (reversed_meth == NULL) {
-            if (PyErr_ExceptionMatches(PyExc_AttributeError))
-                PyErr_Clear();
-            else
-                return NULL;
-        }
-    }
-    else {
-        reversed_meth = _PyObject_LookupSpecial(seq, "__reversed__",
-                                                &reversed_cache);
-        if (reversed_meth == NULL && PyErr_Occurred())
-            return NULL;
-    }
-    if (reversed_meth != NULL) {
-        PyObject *res = PyObject_CallFunctionObjArgs(reversed_meth, NULL);
-        Py_DECREF(reversed_meth);
-        return res;
-    }
-
-    if (!PySequence_Check(seq)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "argument to reversed() must be a sequence");
-        return NULL;
-    }
-
-    n = PySequence_Size(seq);
-    if (n == -1)
-        return NULL;
-
-    ro = (reversedobject *)type->tp_alloc(type, 0);
-    if (ro == NULL)
-        return NULL;
-
-    ro->index = n-1;
-    Py_INCREF(seq);
-    ro->seq = seq;
-    return (PyObject *)ro;
-}
-
-static void
-reversed_dealloc(reversedobject *ro)
-{
-    PyObject_GC_UnTrack(ro);
-    Py_XDECREF(ro->seq);
-    Py_TYPE(ro)->tp_free(ro);
-}
-
-static int
-reversed_traverse(reversedobject *ro, visitproc visit, void *arg)
-{
-    Py_VISIT(ro->seq);
-    return 0;
-}
-
-static PyObject *
-reversed_next(reversedobject *ro)
-{
-    PyObject *item;
-    Py_ssize_t index = ro->index;
-
-    if (index >= 0) {
-        item = PySequence_GetItem(ro->seq, index);
-        if (item != NULL) {
-            ro->index--;
-            return item;
-        }
-        if (PyErr_ExceptionMatches(PyExc_IndexError) ||
-            PyErr_ExceptionMatches(PyExc_StopIteration))
-            PyErr_Clear();
-    }
-    ro->index = -1;
-    Py_CLEAR(ro->seq);
-    return NULL;
-}
-
-PyDoc_STRVAR(reversed_doc,
-"reversed(sequence) -> reverse iterator over values of the sequence\n"
-"\n"
-"Return a reverse iterator");
-
-static PyObject *
-reversed_len(reversedobject *ro)
-{
-    Py_ssize_t position, seqsize;
-
-    if (ro->seq == NULL)
-        return PyInt_FromLong(0);
-    seqsize = PySequence_Size(ro->seq);
-    if (seqsize == -1)
-        return NULL;
-    position = ro->index + 1;
-    return PyInt_FromSsize_t((seqsize < position)  ?  0  :  position);
-}
-
-PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
-
-static PyMethodDef reversediter_methods[] = {
-    {"__length_hint__", (PyCFunction)reversed_len, METH_NOARGS, length_hint_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyTypeObject PyReversed_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "reversed",                     /* tp_name */
-    sizeof(reversedobject),         /* tp_basicsize */
-    0,                              /* tp_itemsize */
-    /* methods */
-    (destructor)reversed_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 */
-    PyObject_GenericGetAttr,        /* tp_getattro */
-    0,                              /* tp_setattro */
-    0,                              /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,    /* tp_flags */
-    reversed_doc,                   /* tp_doc */
-    (traverseproc)reversed_traverse,/* tp_traverse */
-    0,                              /* tp_clear */
-    0,                              /* tp_richcompare */
-    0,                              /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)reversed_next,    /* tp_iternext */
-    reversediter_methods,               /* tp_methods */
-    0,                              /* tp_members */
-    0,                              /* tp_getset */
-    0,                              /* tp_base */
-    0,                              /* tp_dict */
-    0,                              /* tp_descr_get */
-    0,                              /* tp_descr_set */
-    0,                              /* tp_dictoffset */
-    0,                              /* tp_init */
-    PyType_GenericAlloc,            /* tp_alloc */
-    reversed_new,                   /* tp_new */
-    PyObject_GC_Del,                /* tp_free */
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/exceptions.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/exceptions.c
deleted file mode 100644
index cb94d78..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/exceptions.c
+++ /dev/null
@@ -1,2215 +0,0 @@
-/*
- * New exceptions.c written in Iceland by Richard Jones and Georg Brandl.
- *
- * Thanks go to Tim Peters and Michael Hudson for debugging.
- */
-
-#define PY_SSIZE_T_CLEAN
-#include <Python.h>
-#include "structmember.h"
-#include "osdefs.h"
-
-#define EXC_MODULE_NAME "exceptions."
-
-/* NOTE: If the exception class hierarchy changes, don't forget to update
- * Lib/test/exception_hierarchy.txt
- */
-
-PyDoc_STRVAR(exceptions_doc, "Python's standard exception class hierarchy.\n\
-\n\
-Exceptions found here are defined both in the exceptions module and the\n\
-built-in namespace.  It is recommended that user-defined exceptions\n\
-inherit from Exception.  See the documentation for the exception\n\
-inheritance hierarchy.\n\
-");
-
-/*
- *    BaseException
- */
-static PyObject *
-BaseException_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyBaseExceptionObject *self;
-
-    self = (PyBaseExceptionObject *)type->tp_alloc(type, 0);
-    if (!self)
-        return NULL;
-    /* the dict is created on the fly in PyObject_GenericSetAttr */
-    self->message = self->dict = NULL;
-
-    self->args = PyTuple_New(0);
-    if (!self->args) {
-        Py_DECREF(self);
-        return NULL;
-    }
-
-    self->message = PyString_FromString("");
-    if (!self->message) {
-        Py_DECREF(self);
-        return NULL;
-    }
-
-    return (PyObject *)self;
-}
-
-static int
-BaseException_init(PyBaseExceptionObject *self, PyObject *args, PyObject *kwds)
-{
-    if (!_PyArg_NoKeywords(Py_TYPE(self)->tp_name, kwds))
-        return -1;
-
-    Py_DECREF(self->args);
-    self->args = args;
-    Py_INCREF(self->args);
-
-    if (PyTuple_GET_SIZE(self->args) == 1) {
-        Py_CLEAR(self->message);
-        self->message = PyTuple_GET_ITEM(self->args, 0);
-        Py_INCREF(self->message);
-    }
-    return 0;
-}
-
-static int
-BaseException_clear(PyBaseExceptionObject *self)
-{
-    Py_CLEAR(self->dict);
-    Py_CLEAR(self->args);
-    Py_CLEAR(self->message);
-    return 0;
-}
-
-static void
-BaseException_dealloc(PyBaseExceptionObject *self)
-{
-    _PyObject_GC_UNTRACK(self);
-    BaseException_clear(self);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-static int
-BaseException_traverse(PyBaseExceptionObject *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->dict);
-    Py_VISIT(self->args);
-    Py_VISIT(self->message);
-    return 0;
-}
-
-static PyObject *
-BaseException_str(PyBaseExceptionObject *self)
-{
-    PyObject *out;
-
-    switch (PyTuple_GET_SIZE(self->args)) {
-    case 0:
-        out = PyString_FromString("");
-        break;
-    case 1:
-        out = PyObject_Str(PyTuple_GET_ITEM(self->args, 0));
-        break;
-    default:
-        out = PyObject_Str(self->args);
-        break;
-    }
-
-    return out;
-}
-
-#ifdef Py_USING_UNICODE
-static PyObject *
-BaseException_unicode(PyBaseExceptionObject *self)
-{
-    PyObject *out;
-
-    /* issue6108: if __str__ has been overridden in the subclass, unicode()
-       should return the message returned by __str__ as used to happen
-       before this method was implemented. */
-    if (Py_TYPE(self)->tp_str != (reprfunc)BaseException_str) {
-        PyObject *str;
-        /* Unlike PyObject_Str, tp_str can return unicode (i.e. return the
-           equivalent of unicode(e.__str__()) instead of unicode(str(e))). */
-        str = Py_TYPE(self)->tp_str((PyObject*)self);
-        if (str == NULL)
-            return NULL;
-        out = PyObject_Unicode(str);
-        Py_DECREF(str);
-        return out;
-    }
-
-    switch (PyTuple_GET_SIZE(self->args)) {
-    case 0:
-        out = PyUnicode_FromString("");
-        break;
-    case 1:
-        out = PyObject_Unicode(PyTuple_GET_ITEM(self->args, 0));
-        break;
-    default:
-        out = PyObject_Unicode(self->args);
-        break;
-    }
-
-    return out;
-}
-#endif
-
-static PyObject *
-BaseException_repr(PyBaseExceptionObject *self)
-{
-    PyObject *repr_suffix;
-    PyObject *repr;
-    char *name;
-    char *dot;
-
-    repr_suffix = PyObject_Repr(self->args);
-    if (!repr_suffix)
-        return NULL;
-
-    name = (char *)Py_TYPE(self)->tp_name;
-    dot = strrchr(name, '.');
-    if (dot != NULL) name = dot+1;
-
-    repr = PyString_FromString(name);
-    if (!repr) {
-        Py_DECREF(repr_suffix);
-        return NULL;
-    }
-
-    PyString_ConcatAndDel(&repr, repr_suffix);
-    return repr;
-}
-
-/* Pickling support */
-static PyObject *
-BaseException_reduce(PyBaseExceptionObject *self)
-{
-    if (self->args && self->dict)
-        return PyTuple_Pack(3, Py_TYPE(self), self->args, self->dict);
-    else
-        return PyTuple_Pack(2, Py_TYPE(self), self->args);
-}
-
-/*
- * Needed for backward compatibility, since exceptions used to store
- * all their attributes in the __dict__. Code is taken from cPickle's
- * load_build function.
- */
-static PyObject *
-BaseException_setstate(PyObject *self, PyObject *state)
-{
-    PyObject *d_key, *d_value;
-    Py_ssize_t i = 0;
-
-    if (state != Py_None) {
-        if (!PyDict_Check(state)) {
-            PyErr_SetString(PyExc_TypeError, "state is not a dictionary");
-            return NULL;
-        }
-        while (PyDict_Next(state, &i, &d_key, &d_value)) {
-            if (PyObject_SetAttr(self, d_key, d_value) < 0)
-                return NULL;
-        }
-    }
-    Py_RETURN_NONE;
-}
-
-
-static PyMethodDef BaseException_methods[] = {
-   {"__reduce__", (PyCFunction)BaseException_reduce, METH_NOARGS },
-   {"__setstate__", (PyCFunction)BaseException_setstate, METH_O },
-#ifdef Py_USING_UNICODE
-   {"__unicode__", (PyCFunction)BaseException_unicode, METH_NOARGS },
-#endif
-   {NULL, NULL, 0, NULL},
-};
-
-
-
-static PyObject *
-BaseException_getitem(PyBaseExceptionObject *self, Py_ssize_t index)
-{
-    if (PyErr_WarnPy3k("__getitem__ not supported for exception "
-                       "classes in 3.x; use args attribute", 1) < 0)
-        return NULL;
-    return PySequence_GetItem(self->args, index);
-}
-
-static PyObject *
-BaseException_getslice(PyBaseExceptionObject *self,
-                        Py_ssize_t start, Py_ssize_t stop)
-{
-    if (PyErr_WarnPy3k("__getslice__ not supported for exception "
-                       "classes in 3.x; use args attribute", 1) < 0)
-        return NULL;
-    return PySequence_GetSlice(self->args, start, stop);
-}
-
-static PySequenceMethods BaseException_as_sequence = {
-    0,                      /* sq_length; */
-    0,                      /* sq_concat; */
-    0,                      /* sq_repeat; */
-    (ssizeargfunc)BaseException_getitem,  /* sq_item; */
-    (ssizessizeargfunc)BaseException_getslice,  /* sq_slice; */
-    0,                      /* sq_ass_item; */
-    0,                      /* sq_ass_slice; */
-    0,                      /* sq_contains; */
-    0,                      /* sq_inplace_concat; */
-    0                       /* sq_inplace_repeat; */
-};
-
-static PyObject *
-BaseException_get_dict(PyBaseExceptionObject *self)
-{
-    if (self->dict == NULL) {
-        self->dict = PyDict_New();
-        if (!self->dict)
-            return NULL;
-    }
-    Py_INCREF(self->dict);
-    return self->dict;
-}
-
-static int
-BaseException_set_dict(PyBaseExceptionObject *self, PyObject *val)
-{
-    if (val == NULL) {
-        PyErr_SetString(PyExc_TypeError, "__dict__ may not be deleted");
-        return -1;
-    }
-    if (!PyDict_Check(val)) {
-        PyErr_SetString(PyExc_TypeError, "__dict__ must be a dictionary");
-        return -1;
-    }
-    Py_CLEAR(self->dict);
-    Py_INCREF(val);
-    self->dict = val;
-    return 0;
-}
-
-static PyObject *
-BaseException_get_args(PyBaseExceptionObject *self)
-{
-    if (self->args == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    Py_INCREF(self->args);
-    return self->args;
-}
-
-static int
-BaseException_set_args(PyBaseExceptionObject *self, PyObject *val)
-{
-    PyObject *seq;
-    if (val == NULL) {
-        PyErr_SetString(PyExc_TypeError, "args may not be deleted");
-        return -1;
-    }
-    seq = PySequence_Tuple(val);
-    if (!seq) return -1;
-    Py_CLEAR(self->args);
-    self->args = seq;
-    return 0;
-}
-
-static PyObject *
-BaseException_get_message(PyBaseExceptionObject *self)
-{
-    PyObject *msg;
-
-    /* if "message" is in self->dict, accessing a user-set message attribute */
-    if (self->dict &&
-        (msg = PyDict_GetItemString(self->dict, "message"))) {
-        Py_INCREF(msg);
-        return msg;
-    }
-
-    if (self->message == NULL) {
-        PyErr_SetString(PyExc_AttributeError, "message attribute was deleted");
-        return NULL;
-    }
-
-    /* accessing the deprecated "builtin" message attribute of Exception */
-    if (PyErr_WarnEx(PyExc_DeprecationWarning,
-                     "BaseException.message has been deprecated as "
-                     "of Python 2.6", 1) < 0)
-        return NULL;
-
-    Py_INCREF(self->message);
-    return self->message;
-}
-
-static int
-BaseException_set_message(PyBaseExceptionObject *self, PyObject *val)
-{
-    /* if val is NULL, delete the message attribute */
-    if (val == NULL) {
-        if (self->dict && PyDict_GetItemString(self->dict, "message")) {
-            if (PyDict_DelItemString(self->dict, "message") < 0)
-                return -1;
-        }
-        Py_XDECREF(self->message);
-        self->message = NULL;
-        return 0;
-    }
-
-    /* else set it in __dict__, but may need to create the dict first */
-    if (self->dict == NULL) {
-        self->dict = PyDict_New();
-        if (!self->dict)
-            return -1;
-    }
-    return PyDict_SetItemString(self->dict, "message", val);
-}
-
-static PyGetSetDef BaseException_getset[] = {
-    {"__dict__", (getter)BaseException_get_dict, (setter)BaseException_set_dict},
-    {"args", (getter)BaseException_get_args, (setter)BaseException_set_args},
-    {"message", (getter)BaseException_get_message,
-            (setter)BaseException_set_message},
-    {NULL},
-};
-
-
-static PyTypeObject _PyExc_BaseException = {
-    PyObject_HEAD_INIT(NULL)
-    0,                          /*ob_size*/
-    EXC_MODULE_NAME "BaseException", /*tp_name*/
-    sizeof(PyBaseExceptionObject), /*tp_basicsize*/
-    0,                          /*tp_itemsize*/
-    (destructor)BaseException_dealloc, /*tp_dealloc*/
-    0,                          /*tp_print*/
-    0,                          /*tp_getattr*/
-    0,                          /*tp_setattr*/
-    0,                          /* tp_compare; */
-    (reprfunc)BaseException_repr, /*tp_repr*/
-    0,                          /*tp_as_number*/
-    &BaseException_as_sequence, /*tp_as_sequence*/
-    0,                          /*tp_as_mapping*/
-    0,                          /*tp_hash */
-    0,                          /*tp_call*/
-    (reprfunc)BaseException_str,  /*tp_str*/
-    PyObject_GenericGetAttr,    /*tp_getattro*/
-    PyObject_GenericSetAttr,    /*tp_setattro*/
-    0,                          /*tp_as_buffer*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASE_EXC_SUBCLASS,  /*tp_flags*/
-    PyDoc_STR("Common base class for all exceptions"), /* tp_doc */
-    (traverseproc)BaseException_traverse, /* tp_traverse */
-    (inquiry)BaseException_clear, /* tp_clear */
-    0,                          /* tp_richcompare */
-    0,                          /* tp_weaklistoffset */
-    0,                          /* tp_iter */
-    0,                          /* tp_iternext */
-    BaseException_methods,      /* tp_methods */
-    0,                          /* tp_members */
-    BaseException_getset,       /* tp_getset */
-    0,                          /* tp_base */
-    0,                          /* tp_dict */
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    offsetof(PyBaseExceptionObject, dict), /* tp_dictoffset */
-    (initproc)BaseException_init, /* tp_init */
-    0,                          /* tp_alloc */
-    BaseException_new,          /* tp_new */
-};
-/* the CPython API expects exceptions to be (PyObject *) - both a hold-over
-from the previous implmentation and also allowing Python objects to be used
-in the API */
-PyObject *PyExc_BaseException = (PyObject *)&_PyExc_BaseException;
-
-/* note these macros omit the last semicolon so the macro invocation may
- * include it and not look strange.
- */
-#define SimpleExtendsException(EXCBASE, EXCNAME, EXCDOC) \
-static PyTypeObject _PyExc_ ## EXCNAME = { \
-    PyObject_HEAD_INIT(NULL) \
-    0, \
-    EXC_MODULE_NAME # EXCNAME, \
-    sizeof(PyBaseExceptionObject), \
-    0, (destructor)BaseException_dealloc, 0, 0, 0, 0, 0, 0, 0, \
-    0, 0, 0, 0, 0, 0, 0, \
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, \
-    PyDoc_STR(EXCDOC), (traverseproc)BaseException_traverse, \
-    (inquiry)BaseException_clear, 0, 0, 0, 0, 0, 0, 0, &_ ## EXCBASE, \
-    0, 0, 0, offsetof(PyBaseExceptionObject, dict), \
-    (initproc)BaseException_init, 0, BaseException_new,\
-}; \
-PyObject *PyExc_ ## EXCNAME = (PyObject *)&_PyExc_ ## EXCNAME
-
-#define MiddlingExtendsException(EXCBASE, EXCNAME, EXCSTORE, EXCDOC) \
-static PyTypeObject _PyExc_ ## EXCNAME = { \
-    PyObject_HEAD_INIT(NULL) \
-    0, \
-    EXC_MODULE_NAME # EXCNAME, \
-    sizeof(Py ## EXCSTORE ## Object), \
-    0, (destructor)EXCSTORE ## _dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-    0, 0, 0, 0, 0, \
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, \
-    PyDoc_STR(EXCDOC), (traverseproc)EXCSTORE ## _traverse, \
-    (inquiry)EXCSTORE ## _clear, 0, 0, 0, 0, 0, 0, 0, &_ ## EXCBASE, \
-    0, 0, 0, offsetof(Py ## EXCSTORE ## Object, dict), \
-    (initproc)EXCSTORE ## _init, 0, BaseException_new,\
-}; \
-PyObject *PyExc_ ## EXCNAME = (PyObject *)&_PyExc_ ## EXCNAME
-
-#define ComplexExtendsException(EXCBASE, EXCNAME, EXCSTORE, EXCDEALLOC, EXCMETHODS, EXCMEMBERS, EXCSTR, EXCDOC) \
-static PyTypeObject _PyExc_ ## EXCNAME = { \
-    PyObject_HEAD_INIT(NULL) \
-    0, \
-    EXC_MODULE_NAME # EXCNAME, \
-    sizeof(Py ## EXCSTORE ## Object), 0, \
-    (destructor)EXCSTORE ## _dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-    (reprfunc)EXCSTR, 0, 0, 0, \
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, \
-    PyDoc_STR(EXCDOC), (traverseproc)EXCSTORE ## _traverse, \
-    (inquiry)EXCSTORE ## _clear, 0, 0, 0, 0, EXCMETHODS, \
-    EXCMEMBERS, 0, &_ ## EXCBASE, \
-    0, 0, 0, offsetof(Py ## EXCSTORE ## Object, dict), \
-    (initproc)EXCSTORE ## _init, 0, BaseException_new,\
-}; \
-PyObject *PyExc_ ## EXCNAME = (PyObject *)&_PyExc_ ## EXCNAME
-
-
-/*
- *    Exception extends BaseException
- */
-SimpleExtendsException(PyExc_BaseException, Exception,
-                       "Common base class for all non-exit exceptions.");
-
-
-/*
- *    StandardError extends Exception
- */
-SimpleExtendsException(PyExc_Exception, StandardError,
-    "Base class for all standard Python exceptions that do not represent\n"
-    "interpreter exiting.");
-
-
-/*
- *    TypeError extends StandardError
- */
-SimpleExtendsException(PyExc_StandardError, TypeError,
-                       "Inappropriate argument type.");
-
-
-/*
- *    StopIteration extends Exception
- */
-SimpleExtendsException(PyExc_Exception, StopIteration,
-                       "Signal the end from iterator.next().");
-
-
-/*
- *    GeneratorExit extends BaseException
- */
-SimpleExtendsException(PyExc_BaseException, GeneratorExit,
-                       "Request that a generator exit.");
-
-
-/*
- *    SystemExit extends BaseException
- */
-
-static int
-SystemExit_init(PySystemExitObject *self, PyObject *args, PyObject *kwds)
-{
-    Py_ssize_t size = PyTuple_GET_SIZE(args);
-
-    if (BaseException_init((PyBaseExceptionObject *)self, args, kwds) == -1)
-        return -1;
-
-    if (size == 0)
-        return 0;
-    Py_CLEAR(self->code);
-    if (size == 1)
-        self->code = PyTuple_GET_ITEM(args, 0);
-    else if (size > 1)
-        self->code = args;
-    Py_INCREF(self->code);
-    return 0;
-}
-
-static int
-SystemExit_clear(PySystemExitObject *self)
-{
-    Py_CLEAR(self->code);
-    return BaseException_clear((PyBaseExceptionObject *)self);
-}
-
-static void
-SystemExit_dealloc(PySystemExitObject *self)
-{
-    _PyObject_GC_UNTRACK(self);
-    SystemExit_clear(self);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-static int
-SystemExit_traverse(PySystemExitObject *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->code);
-    return BaseException_traverse((PyBaseExceptionObject *)self, visit, arg);
-}
-
-static PyMemberDef SystemExit_members[] = {
-    {"code", T_OBJECT, offsetof(PySystemExitObject, code), 0,
-        PyDoc_STR("exception code")},
-    {NULL}  /* Sentinel */
-};
-
-ComplexExtendsException(PyExc_BaseException, SystemExit, SystemExit,
-                        SystemExit_dealloc, 0, SystemExit_members, 0,
-                        "Request to exit from the interpreter.");
-
-/*
- *    KeyboardInterrupt extends BaseException
- */
-SimpleExtendsException(PyExc_BaseException, KeyboardInterrupt,
-                       "Program interrupted by user.");
-
-
-/*
- *    ImportError extends StandardError
- */
-SimpleExtendsException(PyExc_StandardError, ImportError,
-          "Import can't find module, or can't find name in module.");
-
-
-/*
- *    EnvironmentError extends StandardError
- */
-
-/* Where a function has a single filename, such as open() or some
- * of the os module functions, PyErr_SetFromErrnoWithFilename() is
- * called, giving a third argument which is the filename.  But, so
- * that old code using in-place unpacking doesn't break, e.g.:
- *
- * except IOError, (errno, strerror):
- *
- * we hack args so that it only contains two items.  This also
- * means we need our own __str__() which prints out the filename
- * when it was supplied.
- */
-static int
-EnvironmentError_init(PyEnvironmentErrorObject *self, PyObject *args,
-    PyObject *kwds)
-{
-    PyObject *myerrno = NULL, *strerror = NULL, *filename = NULL;
-    PyObject *subslice = NULL;
-
-    if (BaseException_init((PyBaseExceptionObject *)self, args, kwds) == -1)
-        return -1;
-
-    if (PyTuple_GET_SIZE(args) <= 1 || PyTuple_GET_SIZE(args) > 3) {
-        return 0;
-    }
-
-    if (!PyArg_UnpackTuple(args, "EnvironmentError", 2, 3,
-                           &myerrno, &strerror, &filename)) {
-        return -1;
-    }
-    Py_CLEAR(self->myerrno);       /* replacing */
-    self->myerrno = myerrno;
-    Py_INCREF(self->myerrno);
-
-    Py_CLEAR(self->strerror);      /* replacing */
-    self->strerror = strerror;
-    Py_INCREF(self->strerror);
-
-    /* self->filename will remain Py_None otherwise */
-    if (filename != NULL) {
-        Py_CLEAR(self->filename);      /* replacing */
-        self->filename = filename;
-        Py_INCREF(self->filename);
-
-        subslice = PyTuple_GetSlice(args, 0, 2);
-        if (!subslice)
-            return -1;
-
-        Py_DECREF(self->args);  /* replacing args */
-        self->args = subslice;
-    }
-    return 0;
-}
-
-static int
-EnvironmentError_clear(PyEnvironmentErrorObject *self)
-{
-    Py_CLEAR(self->myerrno);
-    Py_CLEAR(self->strerror);
-    Py_CLEAR(self->filename);
-    return BaseException_clear((PyBaseExceptionObject *)self);
-}
-
-static void
-EnvironmentError_dealloc(PyEnvironmentErrorObject *self)
-{
-    _PyObject_GC_UNTRACK(self);
-    EnvironmentError_clear(self);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-static int
-EnvironmentError_traverse(PyEnvironmentErrorObject *self, visitproc visit,
-        void *arg)
-{
-    Py_VISIT(self->myerrno);
-    Py_VISIT(self->strerror);
-    Py_VISIT(self->filename);
-    return BaseException_traverse((PyBaseExceptionObject *)self, visit, arg);
-}
-
-static PyObject *
-EnvironmentError_str(PyEnvironmentErrorObject *self)
-{
-    PyObject *rtnval = NULL;
-
-    if (self->filename) {
-        PyObject *fmt;
-        PyObject *repr;
-        PyObject *tuple;
-
-        fmt = PyString_FromString("[Errno %s] %s: %s");
-        if (!fmt)
-            return NULL;
-
-        repr = PyObject_Repr(self->filename);
-        if (!repr) {
-            Py_DECREF(fmt);
-            return NULL;
-        }
-        tuple = PyTuple_New(3);
-        if (!tuple) {
-            Py_DECREF(repr);
-            Py_DECREF(fmt);
-            return NULL;
-        }
-
-        if (self->myerrno) {
-            Py_INCREF(self->myerrno);
-            PyTuple_SET_ITEM(tuple, 0, self->myerrno);
-        }
-        else {
-            Py_INCREF(Py_None);
-            PyTuple_SET_ITEM(tuple, 0, Py_None);
-        }
-        if (self->strerror) {
-            Py_INCREF(self->strerror);
-            PyTuple_SET_ITEM(tuple, 1, self->strerror);
-        }
-        else {
-            Py_INCREF(Py_None);
-            PyTuple_SET_ITEM(tuple, 1, Py_None);
-        }
-
-        PyTuple_SET_ITEM(tuple, 2, repr);
-
-        rtnval = PyString_Format(fmt, tuple);
-
-        Py_DECREF(fmt);
-        Py_DECREF(tuple);
-    }
-    else if (self->myerrno && self->strerror) {
-        PyObject *fmt;
-        PyObject *tuple;
-
-        fmt = PyString_FromString("[Errno %s] %s");
-        if (!fmt)
-            return NULL;
-
-        tuple = PyTuple_New(2);
-        if (!tuple) {
-            Py_DECREF(fmt);
-            return NULL;
-        }
-
-        if (self->myerrno) {
-            Py_INCREF(self->myerrno);
-            PyTuple_SET_ITEM(tuple, 0, self->myerrno);
-        }
-        else {
-            Py_INCREF(Py_None);
-            PyTuple_SET_ITEM(tuple, 0, Py_None);
-        }
-        if (self->strerror) {
-            Py_INCREF(self->strerror);
-            PyTuple_SET_ITEM(tuple, 1, self->strerror);
-        }
-        else {
-            Py_INCREF(Py_None);
-            PyTuple_SET_ITEM(tuple, 1, Py_None);
-        }
-
-        rtnval = PyString_Format(fmt, tuple);
-
-        Py_DECREF(fmt);
-        Py_DECREF(tuple);
-    }
-    else
-        rtnval = BaseException_str((PyBaseExceptionObject *)self);
-
-    return rtnval;
-}
-
-static PyMemberDef EnvironmentError_members[] = {
-    {"errno", T_OBJECT, offsetof(PyEnvironmentErrorObject, myerrno), 0,
-        PyDoc_STR("exception errno")},
-    {"strerror", T_OBJECT, offsetof(PyEnvironmentErrorObject, strerror), 0,
-        PyDoc_STR("exception strerror")},
-    {"filename", T_OBJECT, offsetof(PyEnvironmentErrorObject, filename), 0,
-        PyDoc_STR("exception filename")},
-    {NULL}  /* Sentinel */
-};
-
-
-static PyObject *
-EnvironmentError_reduce(PyEnvironmentErrorObject *self)
-{
-    PyObject *args = self->args;
-    PyObject *res = NULL, *tmp;
-
-    /* self->args is only the first two real arguments if there was a
-     * file name given to EnvironmentError. */
-    if (PyTuple_GET_SIZE(args) == 2 && self->filename) {
-        args = PyTuple_New(3);
-        if (!args) return NULL;
-
-        tmp = PyTuple_GET_ITEM(self->args, 0);
-        Py_INCREF(tmp);
-        PyTuple_SET_ITEM(args, 0, tmp);
-
-        tmp = PyTuple_GET_ITEM(self->args, 1);
-        Py_INCREF(tmp);
-        PyTuple_SET_ITEM(args, 1, tmp);
-
-        Py_INCREF(self->filename);
-        PyTuple_SET_ITEM(args, 2, self->filename);
-    } else
-        Py_INCREF(args);
-
-    if (self->dict)
-        res = PyTuple_Pack(3, Py_TYPE(self), args, self->dict);
-    else
-        res = PyTuple_Pack(2, Py_TYPE(self), args);
-    Py_DECREF(args);
-    return res;
-}
-
-
-static PyMethodDef EnvironmentError_methods[] = {
-    {"__reduce__", (PyCFunction)EnvironmentError_reduce, METH_NOARGS},
-    {NULL}
-};
-
-ComplexExtendsException(PyExc_StandardError, EnvironmentError,
-                        EnvironmentError, EnvironmentError_dealloc,
-                        EnvironmentError_methods, EnvironmentError_members,
-                        EnvironmentError_str,
-                        "Base class for I/O related errors.");
-
-
-/*
- *    IOError extends EnvironmentError
- */
-MiddlingExtendsException(PyExc_EnvironmentError, IOError,
-                         EnvironmentError, "I/O operation failed.");
-
-
-/*
- *    OSError extends EnvironmentError
- */
-MiddlingExtendsException(PyExc_EnvironmentError, OSError,
-                         EnvironmentError, "OS system call failed.");
-
-
-/*
- *    WindowsError extends OSError
- */
-#ifdef MS_WINDOWS
-#include "errmap.h"
-
-static int
-WindowsError_clear(PyWindowsErrorObject *self)
-{
-    Py_CLEAR(self->myerrno);
-    Py_CLEAR(self->strerror);
-    Py_CLEAR(self->filename);
-    Py_CLEAR(self->winerror);
-    return BaseException_clear((PyBaseExceptionObject *)self);
-}
-
-static void
-WindowsError_dealloc(PyWindowsErrorObject *self)
-{
-    _PyObject_GC_UNTRACK(self);
-    WindowsError_clear(self);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-static int
-WindowsError_traverse(PyWindowsErrorObject *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->myerrno);
-    Py_VISIT(self->strerror);
-    Py_VISIT(self->filename);
-    Py_VISIT(self->winerror);
-    return BaseException_traverse((PyBaseExceptionObject *)self, visit, arg);
-}
-
-static int
-WindowsError_init(PyWindowsErrorObject *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *o_errcode = NULL;
-    long errcode;
-    long posix_errno;
-
-    if (EnvironmentError_init((PyEnvironmentErrorObject *)self, args, kwds)
-            == -1)
-        return -1;
-
-    if (self->myerrno == NULL)
-        return 0;
-
-    /* Set errno to the POSIX errno, and winerror to the Win32
-       error code. */
-    errcode = PyInt_AsLong(self->myerrno);
-    if (errcode == -1 && PyErr_Occurred())
-        return -1;
-    posix_errno = winerror_to_errno(errcode);
-
-    Py_CLEAR(self->winerror);
-    self->winerror = self->myerrno;
-
-    o_errcode = PyInt_FromLong(posix_errno);
-    if (!o_errcode)
-        return -1;
-
-    self->myerrno = o_errcode;
-
-    return 0;
-}
-
-
-static PyObject *
-WindowsError_str(PyWindowsErrorObject *self)
-{
-    PyObject *rtnval = NULL;
-
-    if (self->filename) {
-        PyObject *fmt;
-        PyObject *repr;
-        PyObject *tuple;
-
-        fmt = PyString_FromString("[Error %s] %s: %s");
-        if (!fmt)
-            return NULL;
-
-        repr = PyObject_Repr(self->filename);
-        if (!repr) {
-            Py_DECREF(fmt);
-            return NULL;
-        }
-        tuple = PyTuple_New(3);
-        if (!tuple) {
-            Py_DECREF(repr);
-            Py_DECREF(fmt);
-            return NULL;
-        }
-
-        if (self->winerror) {
-            Py_INCREF(self->winerror);
-            PyTuple_SET_ITEM(tuple, 0, self->winerror);
-        }
-        else {
-            Py_INCREF(Py_None);
-            PyTuple_SET_ITEM(tuple, 0, Py_None);
-        }
-        if (self->strerror) {
-            Py_INCREF(self->strerror);
-            PyTuple_SET_ITEM(tuple, 1, self->strerror);
-        }
-        else {
-            Py_INCREF(Py_None);
-            PyTuple_SET_ITEM(tuple, 1, Py_None);
-        }
-
-        PyTuple_SET_ITEM(tuple, 2, repr);
-
-        rtnval = PyString_Format(fmt, tuple);
-
-        Py_DECREF(fmt);
-        Py_DECREF(tuple);
-    }
-    else if (self->winerror && self->strerror) {
-        PyObject *fmt;
-        PyObject *tuple;
-
-        fmt = PyString_FromString("[Error %s] %s");
-        if (!fmt)
-            return NULL;
-
-        tuple = PyTuple_New(2);
-        if (!tuple) {
-            Py_DECREF(fmt);
-            return NULL;
-        }
-
-        if (self->winerror) {
-            Py_INCREF(self->winerror);
-            PyTuple_SET_ITEM(tuple, 0, self->winerror);
-        }
-        else {
-            Py_INCREF(Py_None);
-            PyTuple_SET_ITEM(tuple, 0, Py_None);
-        }
-        if (self->strerror) {
-            Py_INCREF(self->strerror);
-            PyTuple_SET_ITEM(tuple, 1, self->strerror);
-        }
-        else {
-            Py_INCREF(Py_None);
-            PyTuple_SET_ITEM(tuple, 1, Py_None);
-        }
-
-        rtnval = PyString_Format(fmt, tuple);
-
-        Py_DECREF(fmt);
-        Py_DECREF(tuple);
-    }
-    else
-        rtnval = EnvironmentError_str((PyEnvironmentErrorObject *)self);
-
-    return rtnval;
-}
-
-static PyMemberDef WindowsError_members[] = {
-    {"errno", T_OBJECT, offsetof(PyWindowsErrorObject, myerrno), 0,
-        PyDoc_STR("POSIX exception code")},
-    {"strerror", T_OBJECT, offsetof(PyWindowsErrorObject, strerror), 0,
-        PyDoc_STR("exception strerror")},
-    {"filename", T_OBJECT, offsetof(PyWindowsErrorObject, filename), 0,
-        PyDoc_STR("exception filename")},
-    {"winerror", T_OBJECT, offsetof(PyWindowsErrorObject, winerror), 0,
-        PyDoc_STR("Win32 exception code")},
-    {NULL}  /* Sentinel */
-};
-
-ComplexExtendsException(PyExc_OSError, WindowsError, WindowsError,
-                        WindowsError_dealloc, 0, WindowsError_members,
-                        WindowsError_str, "MS-Windows OS system call failed.");
-
-#endif /* MS_WINDOWS */
-
-
-/*
- *    VMSError extends OSError (I think)
- */
-#ifdef __VMS
-MiddlingExtendsException(PyExc_OSError, VMSError, EnvironmentError,
-                         "OpenVMS OS system call failed.");
-#endif
-
-
-/*
- *    EOFError extends StandardError
- */
-SimpleExtendsException(PyExc_StandardError, EOFError,
-                       "Read beyond end of file.");
-
-
-/*
- *    RuntimeError extends StandardError
- */
-SimpleExtendsException(PyExc_StandardError, RuntimeError,
-                       "Unspecified run-time error.");
-
-
-/*
- *    NotImplementedError extends RuntimeError
- */
-SimpleExtendsException(PyExc_RuntimeError, NotImplementedError,
-                       "Method or function hasn't been implemented yet.");
-
-/*
- *    NameError extends StandardError
- */
-SimpleExtendsException(PyExc_StandardError, NameError,
-                       "Name not found globally.");
-
-/*
- *    UnboundLocalError extends NameError
- */
-SimpleExtendsException(PyExc_NameError, UnboundLocalError,
-                       "Local name referenced but not bound to a value.");
-
-/*
- *    AttributeError extends StandardError
- */
-SimpleExtendsException(PyExc_StandardError, AttributeError,
-                       "Attribute not found.");
-
-
-/*
- *    SyntaxError extends StandardError
- */
-
-static int
-SyntaxError_init(PySyntaxErrorObject *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *info = NULL;
-    Py_ssize_t lenargs = PyTuple_GET_SIZE(args);
-
-    if (BaseException_init((PyBaseExceptionObject *)self, args, kwds) == -1)
-        return -1;
-
-    if (lenargs >= 1) {
-        Py_CLEAR(self->msg);
-        self->msg = PyTuple_GET_ITEM(args, 0);
-        Py_INCREF(self->msg);
-    }
-    if (lenargs == 2) {
-        info = PyTuple_GET_ITEM(args, 1);
-        info = PySequence_Tuple(info);
-        if (!info) return -1;
-
-        if (PyTuple_GET_SIZE(info) != 4) {
-            /* not a very good error message, but it's what Python 2.4 gives */
-            PyErr_SetString(PyExc_IndexError, "tuple index out of range");
-            Py_DECREF(info);
-            return -1;
-        }
-
-        Py_CLEAR(self->filename);
-        self->filename = PyTuple_GET_ITEM(info, 0);
-        Py_INCREF(self->filename);
-
-        Py_CLEAR(self->lineno);
-        self->lineno = PyTuple_GET_ITEM(info, 1);
-        Py_INCREF(self->lineno);
-
-        Py_CLEAR(self->offset);
-        self->offset = PyTuple_GET_ITEM(info, 2);
-        Py_INCREF(self->offset);
-
-        Py_CLEAR(self->text);
-        self->text = PyTuple_GET_ITEM(info, 3);
-        Py_INCREF(self->text);
-
-        Py_DECREF(info);
-    }
-    return 0;
-}
-
-static int
-SyntaxError_clear(PySyntaxErrorObject *self)
-{
-    Py_CLEAR(self->msg);
-    Py_CLEAR(self->filename);
-    Py_CLEAR(self->lineno);
-    Py_CLEAR(self->offset);
-    Py_CLEAR(self->text);
-    Py_CLEAR(self->print_file_and_line);
-    return BaseException_clear((PyBaseExceptionObject *)self);
-}
-
-static void
-SyntaxError_dealloc(PySyntaxErrorObject *self)
-{
-    _PyObject_GC_UNTRACK(self);
-    SyntaxError_clear(self);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-static int
-SyntaxError_traverse(PySyntaxErrorObject *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->msg);
-    Py_VISIT(self->filename);
-    Py_VISIT(self->lineno);
-    Py_VISIT(self->offset);
-    Py_VISIT(self->text);
-    Py_VISIT(self->print_file_and_line);
-    return BaseException_traverse((PyBaseExceptionObject *)self, visit, arg);
-}
-
-/* This is called "my_basename" instead of just "basename" to avoid name
-   conflicts with glibc; basename is already prototyped if _GNU_SOURCE is
-   defined, and Python does define that. */
-static char *
-my_basename(char *name)
-{
-    char *cp = name;
-    char *result = name;
-
-    if (name == NULL)
-        return "???";
-    while (*cp != '\0') {
-        if (*cp == SEP)
-            result = cp + 1;
-        ++cp;
-    }
-    return result;
-}
-
-
-static PyObject *
-SyntaxError_str(PySyntaxErrorObject *self)
-{
-    PyObject *str;
-    PyObject *result;
-    int have_filename = 0;
-    int have_lineno = 0;
-    char *buffer = NULL;
-    Py_ssize_t bufsize;
-
-    if (self->msg)
-        str = PyObject_Str(self->msg);
-    else
-        str = PyObject_Str(Py_None);
-    if (!str) return NULL;
-    /* Don't fiddle with non-string return (shouldn't happen anyway) */
-    if (!PyString_Check(str)) return str;
-
-    /* XXX -- do all the additional formatting with filename and
-       lineno here */
-
-    have_filename = (self->filename != NULL) &&
-        PyString_Check(self->filename);
-    have_lineno = (self->lineno != NULL) && PyInt_Check(self->lineno);
-
-    if (!have_filename && !have_lineno)
-        return str;
-
-    bufsize = PyString_GET_SIZE(str) + 64;
-    if (have_filename)
-        bufsize += PyString_GET_SIZE(self->filename);
-
-    buffer = PyMem_MALLOC(bufsize);
-    if (buffer == NULL)
-        return str;
-
-    if (have_filename && have_lineno)
-        PyOS_snprintf(buffer, bufsize, "%s (%s, line %ld)",
-            PyString_AS_STRING(str),
-            my_basename(PyString_AS_STRING(self->filename)),
-            PyInt_AsLong(self->lineno));
-    else if (have_filename)
-        PyOS_snprintf(buffer, bufsize, "%s (%s)",
-            PyString_AS_STRING(str),
-            my_basename(PyString_AS_STRING(self->filename)));
-    else /* only have_lineno */
-        PyOS_snprintf(buffer, bufsize, "%s (line %ld)",
-            PyString_AS_STRING(str),
-            PyInt_AsLong(self->lineno));
-
-    result = PyString_FromString(buffer);
-    PyMem_FREE(buffer);
-
-    if (result == NULL)
-        result = str;
-    else
-        Py_DECREF(str);
-    return result;
-}
-
-static PyMemberDef SyntaxError_members[] = {
-    {"msg", T_OBJECT, offsetof(PySyntaxErrorObject, msg), 0,
-        PyDoc_STR("exception msg")},
-    {"filename", T_OBJECT, offsetof(PySyntaxErrorObject, filename), 0,
-        PyDoc_STR("exception filename")},
-    {"lineno", T_OBJECT, offsetof(PySyntaxErrorObject, lineno), 0,
-        PyDoc_STR("exception lineno")},
-    {"offset", T_OBJECT, offsetof(PySyntaxErrorObject, offset), 0,
-        PyDoc_STR("exception offset")},
-    {"text", T_OBJECT, offsetof(PySyntaxErrorObject, text), 0,
-        PyDoc_STR("exception text")},
-    {"print_file_and_line", T_OBJECT,
-        offsetof(PySyntaxErrorObject, print_file_and_line), 0,
-        PyDoc_STR("exception print_file_and_line")},
-    {NULL}  /* Sentinel */
-};
-
-ComplexExtendsException(PyExc_StandardError, SyntaxError, SyntaxError,
-                        SyntaxError_dealloc, 0, SyntaxError_members,
-                        SyntaxError_str, "Invalid syntax.");
-
-
-/*
- *    IndentationError extends SyntaxError
- */
-MiddlingExtendsException(PyExc_SyntaxError, IndentationError, SyntaxError,
-                         "Improper indentation.");
-
-
-/*
- *    TabError extends IndentationError
- */
-MiddlingExtendsException(PyExc_IndentationError, TabError, SyntaxError,
-                         "Improper mixture of spaces and tabs.");
-
-
-/*
- *    LookupError extends StandardError
- */
-SimpleExtendsException(PyExc_StandardError, LookupError,
-                       "Base class for lookup errors.");
-
-
-/*
- *    IndexError extends LookupError
- */
-SimpleExtendsException(PyExc_LookupError, IndexError,
-                       "Sequence index out of range.");
-
-
-/*
- *    KeyError extends LookupError
- */
-static PyObject *
-KeyError_str(PyBaseExceptionObject *self)
-{
-    /* If args is a tuple of exactly one item, apply repr to args[0].
-       This is done so that e.g. the exception raised by {}[''] prints
-         KeyError: ''
-       rather than the confusing
-         KeyError
-       alone.  The downside is that if KeyError is raised with an explanatory
-       string, that string will be displayed in quotes.  Too bad.
-       If args is anything else, use the default BaseException__str__().
-    */
-    if (PyTuple_GET_SIZE(self->args) == 1) {
-        return PyObject_Repr(PyTuple_GET_ITEM(self->args, 0));
-    }
-    return BaseException_str(self);
-}
-
-ComplexExtendsException(PyExc_LookupError, KeyError, BaseException,
-                        0, 0, 0, KeyError_str, "Mapping key not found.");
-
-
-/*
- *    ValueError extends StandardError
- */
-SimpleExtendsException(PyExc_StandardError, ValueError,
-                       "Inappropriate argument value (of correct type).");
-
-/*
- *    UnicodeError extends ValueError
- */
-
-SimpleExtendsException(PyExc_ValueError, UnicodeError,
-                       "Unicode related error.");
-
-#ifdef Py_USING_UNICODE
-static PyObject *
-get_string(PyObject *attr, const char *name)
-{
-    if (!attr) {
-        PyErr_Format(PyExc_TypeError, "%.200s attribute not set", name);
-        return NULL;
-    }
-
-    if (!PyString_Check(attr)) {
-        PyErr_Format(PyExc_TypeError, "%.200s attribute must be str", name);
-        return NULL;
-    }
-    Py_INCREF(attr);
-    return attr;
-}
-
-
-static int
-set_string(PyObject **attr, const char *value)
-{
-    PyObject *obj = PyString_FromString(value);
-    if (!obj)
-        return -1;
-    Py_CLEAR(*attr);
-    *attr = obj;
-    return 0;
-}
-
-
-static PyObject *
-get_unicode(PyObject *attr, const char *name)
-{
-    if (!attr) {
-        PyErr_Format(PyExc_TypeError, "%.200s attribute not set", name);
-        return NULL;
-    }
-
-    if (!PyUnicode_Check(attr)) {
-        PyErr_Format(PyExc_TypeError,
-                     "%.200s attribute must be unicode", name);
-        return NULL;
-    }
-    Py_INCREF(attr);
-    return attr;
-}
-
-PyObject *
-PyUnicodeEncodeError_GetEncoding(PyObject *exc)
-{
-    return get_string(((PyUnicodeErrorObject *)exc)->encoding, "encoding");
-}
-
-PyObject *
-PyUnicodeDecodeError_GetEncoding(PyObject *exc)
-{
-    return get_string(((PyUnicodeErrorObject *)exc)->encoding, "encoding");
-}
-
-PyObject *
-PyUnicodeEncodeError_GetObject(PyObject *exc)
-{
-    return get_unicode(((PyUnicodeErrorObject *)exc)->object, "object");
-}
-
-PyObject *
-PyUnicodeDecodeError_GetObject(PyObject *exc)
-{
-    return get_string(((PyUnicodeErrorObject *)exc)->object, "object");
-}
-
-PyObject *
-PyUnicodeTranslateError_GetObject(PyObject *exc)
-{
-    return get_unicode(((PyUnicodeErrorObject *)exc)->object, "object");
-}
-
-int
-PyUnicodeEncodeError_GetStart(PyObject *exc, Py_ssize_t *start)
-{
-    Py_ssize_t size;
-    PyObject *obj = get_unicode(((PyUnicodeErrorObject *)exc)->object,
-                                "object");
-    if (!obj)
-        return -1;
-    *start = ((PyUnicodeErrorObject *)exc)->start;
-    size = PyUnicode_GET_SIZE(obj);
-    if (*start<0)
-        *start = 0; /*XXX check for values <0*/
-    if (*start>=size)
-        *start = size-1;
-    Py_DECREF(obj);
-    return 0;
-}
-
-
-int
-PyUnicodeDecodeError_GetStart(PyObject *exc, Py_ssize_t *start)
-{
-    Py_ssize_t size;
-    PyObject *obj = get_string(((PyUnicodeErrorObject *)exc)->object,
-                               "object");
-    if (!obj)
-        return -1;
-    size = PyString_GET_SIZE(obj);
-    *start = ((PyUnicodeErrorObject *)exc)->start;
-    if (*start<0)
-        *start = 0;
-    if (*start>=size)
-        *start = size-1;
-    Py_DECREF(obj);
-    return 0;
-}
-
-
-int
-PyUnicodeTranslateError_GetStart(PyObject *exc, Py_ssize_t *start)
-{
-    return PyUnicodeEncodeError_GetStart(exc, start);
-}
-
-
-int
-PyUnicodeEncodeError_SetStart(PyObject *exc, Py_ssize_t start)
-{
-    ((PyUnicodeErrorObject *)exc)->start = start;
-    return 0;
-}
-
-
-int
-PyUnicodeDecodeError_SetStart(PyObject *exc, Py_ssize_t start)
-{
-    ((PyUnicodeErrorObject *)exc)->start = start;
-    return 0;
-}
-
-
-int
-PyUnicodeTranslateError_SetStart(PyObject *exc, Py_ssize_t start)
-{
-    ((PyUnicodeErrorObject *)exc)->start = start;
-    return 0;
-}
-
-
-int
-PyUnicodeEncodeError_GetEnd(PyObject *exc, Py_ssize_t *end)
-{
-    Py_ssize_t size;
-    PyObject *obj = get_unicode(((PyUnicodeErrorObject *)exc)->object,
-                                "object");
-    if (!obj)
-        return -1;
-    *end = ((PyUnicodeErrorObject *)exc)->end;
-    size = PyUnicode_GET_SIZE(obj);
-    if (*end<1)
-        *end = 1;
-    if (*end>size)
-        *end = size;
-    Py_DECREF(obj);
-    return 0;
-}
-
-
-int
-PyUnicodeDecodeError_GetEnd(PyObject *exc, Py_ssize_t *end)
-{
-    Py_ssize_t size;
-    PyObject *obj = get_string(((PyUnicodeErrorObject *)exc)->object,
-                               "object");
-    if (!obj)
-        return -1;
-    *end = ((PyUnicodeErrorObject *)exc)->end;
-    size = PyString_GET_SIZE(obj);
-    if (*end<1)
-        *end = 1;
-    if (*end>size)
-        *end = size;
-    Py_DECREF(obj);
-    return 0;
-}
-
-
-int
-PyUnicodeTranslateError_GetEnd(PyObject *exc, Py_ssize_t *start)
-{
-    return PyUnicodeEncodeError_GetEnd(exc, start);
-}
-
-
-int
-PyUnicodeEncodeError_SetEnd(PyObject *exc, Py_ssize_t end)
-{
-    ((PyUnicodeErrorObject *)exc)->end = end;
-    return 0;
-}
-
-
-int
-PyUnicodeDecodeError_SetEnd(PyObject *exc, Py_ssize_t end)
-{
-    ((PyUnicodeErrorObject *)exc)->end = end;
-    return 0;
-}
-
-
-int
-PyUnicodeTranslateError_SetEnd(PyObject *exc, Py_ssize_t end)
-{
-    ((PyUnicodeErrorObject *)exc)->end = end;
-    return 0;
-}
-
-PyObject *
-PyUnicodeEncodeError_GetReason(PyObject *exc)
-{
-    return get_string(((PyUnicodeErrorObject *)exc)->reason, "reason");
-}
-
-
-PyObject *
-PyUnicodeDecodeError_GetReason(PyObject *exc)
-{
-    return get_string(((PyUnicodeErrorObject *)exc)->reason, "reason");
-}
-
-
-PyObject *
-PyUnicodeTranslateError_GetReason(PyObject *exc)
-{
-    return get_string(((PyUnicodeErrorObject *)exc)->reason, "reason");
-}
-
-
-int
-PyUnicodeEncodeError_SetReason(PyObject *exc, const char *reason)
-{
-    return set_string(&((PyUnicodeErrorObject *)exc)->reason, reason);
-}
-
-
-int
-PyUnicodeDecodeError_SetReason(PyObject *exc, const char *reason)
-{
-    return set_string(&((PyUnicodeErrorObject *)exc)->reason, reason);
-}
-
-
-int
-PyUnicodeTranslateError_SetReason(PyObject *exc, const char *reason)
-{
-    return set_string(&((PyUnicodeErrorObject *)exc)->reason, reason);
-}
-
-
-static int
-UnicodeError_init(PyUnicodeErrorObject *self, PyObject *args, PyObject *kwds,
-                  PyTypeObject *objecttype)
-{
-    Py_CLEAR(self->encoding);
-    Py_CLEAR(self->object);
-    Py_CLEAR(self->reason);
-
-    if (!PyArg_ParseTuple(args, "O!O!nnO!",
-        &PyString_Type, &self->encoding,
-        objecttype, &self->object,
-        &self->start,
-        &self->end,
-        &PyString_Type, &self->reason)) {
-        self->encoding = self->object = self->reason = NULL;
-        return -1;
-    }
-
-    Py_INCREF(self->encoding);
-    Py_INCREF(self->object);
-    Py_INCREF(self->reason);
-
-    return 0;
-}
-
-static int
-UnicodeError_clear(PyUnicodeErrorObject *self)
-{
-    Py_CLEAR(self->encoding);
-    Py_CLEAR(self->object);
-    Py_CLEAR(self->reason);
-    return BaseException_clear((PyBaseExceptionObject *)self);
-}
-
-static void
-UnicodeError_dealloc(PyUnicodeErrorObject *self)
-{
-    _PyObject_GC_UNTRACK(self);
-    UnicodeError_clear(self);
-    Py_TYPE(self)->tp_free((PyObject *)self);
-}
-
-static int
-UnicodeError_traverse(PyUnicodeErrorObject *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->encoding);
-    Py_VISIT(self->object);
-    Py_VISIT(self->reason);
-    return BaseException_traverse((PyBaseExceptionObject *)self, visit, arg);
-}
-
-static PyMemberDef UnicodeError_members[] = {
-    {"encoding", T_OBJECT, offsetof(PyUnicodeErrorObject, encoding), 0,
-        PyDoc_STR("exception encoding")},
-    {"object", T_OBJECT, offsetof(PyUnicodeErrorObject, object), 0,
-        PyDoc_STR("exception object")},
-    {"start", T_PYSSIZET, offsetof(PyUnicodeErrorObject, start), 0,
-        PyDoc_STR("exception start")},
-    {"end", T_PYSSIZET, offsetof(PyUnicodeErrorObject, end), 0,
-        PyDoc_STR("exception end")},
-    {"reason", T_OBJECT, offsetof(PyUnicodeErrorObject, reason), 0,
-        PyDoc_STR("exception reason")},
-    {NULL}  /* Sentinel */
-};
-
-
-/*
- *    UnicodeEncodeError extends UnicodeError
- */
-
-static int
-UnicodeEncodeError_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    if (BaseException_init((PyBaseExceptionObject *)self, args, kwds) == -1)
-        return -1;
-    return UnicodeError_init((PyUnicodeErrorObject *)self, args,
-                             kwds, &PyUnicode_Type);
-}
-
-static PyObject *
-UnicodeEncodeError_str(PyObject *self)
-{
-    PyUnicodeErrorObject *uself = (PyUnicodeErrorObject *)self;
-    PyObject *result = NULL;
-    PyObject *reason_str = NULL;
-    PyObject *encoding_str = NULL;
-
-    /* Get reason and encoding as strings, which they might not be if
-       they've been modified after we were contructed. */
-    reason_str = PyObject_Str(uself->reason);
-    if (reason_str == NULL)
-        goto done;
-    encoding_str = PyObject_Str(uself->encoding);
-    if (encoding_str == NULL)
-        goto done;
-
-    if (uself->start < PyUnicode_GET_SIZE(uself->object) && uself->end == uself->start+1) {
-        int badchar = (int)PyUnicode_AS_UNICODE(uself->object)[uself->start];
-        char badchar_str[20];
-        if (badchar <= 0xff)
-            PyOS_snprintf(badchar_str, sizeof(badchar_str), "x%02x", badchar);
-        else if (badchar <= 0xffff)
-            PyOS_snprintf(badchar_str, sizeof(badchar_str), "u%04x", badchar);
-        else
-            PyOS_snprintf(badchar_str, sizeof(badchar_str), "U%08x", badchar);
-        result = PyString_FromFormat(
-            "'%.400s' codec can't encode character u'\\%s' in position %zd: %.400s",
-            PyString_AS_STRING(encoding_str),
-            badchar_str,
-            uself->start,
-            PyString_AS_STRING(reason_str));
-    }
-    else {
-        result = PyString_FromFormat(
-            "'%.400s' codec can't encode characters in position %zd-%zd: %.400s",
-            PyString_AS_STRING(encoding_str),
-            uself->start,
-            uself->end-1,
-            PyString_AS_STRING(reason_str));
-    }
-done:
-    Py_XDECREF(reason_str);
-    Py_XDECREF(encoding_str);
-    return result;
-}
-
-static PyTypeObject _PyExc_UnicodeEncodeError = {
-    PyObject_HEAD_INIT(NULL)
-    0,
-    EXC_MODULE_NAME "UnicodeEncodeError",
-    sizeof(PyUnicodeErrorObject), 0,
-    (destructor)UnicodeError_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    (reprfunc)UnicodeEncodeError_str, 0, 0, 0,
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC,
-    PyDoc_STR("Unicode encoding error."), (traverseproc)UnicodeError_traverse,
-    (inquiry)UnicodeError_clear, 0, 0, 0, 0, 0, UnicodeError_members,
-    0, &_PyExc_UnicodeError, 0, 0, 0, offsetof(PyUnicodeErrorObject, dict),
-    (initproc)UnicodeEncodeError_init, 0, BaseException_new,
-};
-PyObject *PyExc_UnicodeEncodeError = (PyObject *)&_PyExc_UnicodeEncodeError;
-
-PyObject *
-PyUnicodeEncodeError_Create(
-    const char *encoding, const Py_UNICODE *object, Py_ssize_t length,
-    Py_ssize_t start, Py_ssize_t end, const char *reason)
-{
-    return PyObject_CallFunction(PyExc_UnicodeEncodeError, "su#nns",
-                                 encoding, object, length, start, end, reason);
-}
-
-
-/*
- *    UnicodeDecodeError extends UnicodeError
- */
-
-static int
-UnicodeDecodeError_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    if (BaseException_init((PyBaseExceptionObject *)self, args, kwds) == -1)
-        return -1;
-    return UnicodeError_init((PyUnicodeErrorObject *)self, args,
-                             kwds, &PyString_Type);
-}
-
-static PyObject *
-UnicodeDecodeError_str(PyObject *self)
-{
-    PyUnicodeErrorObject *uself = (PyUnicodeErrorObject *)self;
-    PyObject *result = NULL;
-    PyObject *reason_str = NULL;
-    PyObject *encoding_str = NULL;
-
-    /* Get reason and encoding as strings, which they might not be if
-       they've been modified after we were contructed. */
-    reason_str = PyObject_Str(uself->reason);
-    if (reason_str == NULL)
-        goto done;
-    encoding_str = PyObject_Str(uself->encoding);
-    if (encoding_str == NULL)
-        goto done;
-
-    if (uself->start < PyUnicode_GET_SIZE(uself->object) && uself->end == uself->start+1) {
-        /* FromFormat does not support %02x, so format that separately */
-        char byte[4];
-        PyOS_snprintf(byte, sizeof(byte), "%02x",
-                      ((int)PyString_AS_STRING(uself->object)[uself->start])&0xff);
-        result = PyString_FromFormat(
-            "'%.400s' codec can't decode byte 0x%s in position %zd: %.400s",
-            PyString_AS_STRING(encoding_str),
-            byte,
-            uself->start,
-            PyString_AS_STRING(reason_str));
-    }
-    else {
-        result = PyString_FromFormat(
-            "'%.400s' codec can't decode bytes in position %zd-%zd: %.400s",
-            PyString_AS_STRING(encoding_str),
-            uself->start,
-            uself->end-1,
-            PyString_AS_STRING(reason_str));
-    }
-done:
-    Py_XDECREF(reason_str);
-    Py_XDECREF(encoding_str);
-    return result;
-}
-
-static PyTypeObject _PyExc_UnicodeDecodeError = {
-    PyObject_HEAD_INIT(NULL)
-    0,
-    EXC_MODULE_NAME "UnicodeDecodeError",
-    sizeof(PyUnicodeErrorObject), 0,
-    (destructor)UnicodeError_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    (reprfunc)UnicodeDecodeError_str, 0, 0, 0,
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC,
-    PyDoc_STR("Unicode decoding error."), (traverseproc)UnicodeError_traverse,
-    (inquiry)UnicodeError_clear, 0, 0, 0, 0, 0, UnicodeError_members,
-    0, &_PyExc_UnicodeError, 0, 0, 0, offsetof(PyUnicodeErrorObject, dict),
-    (initproc)UnicodeDecodeError_init, 0, BaseException_new,
-};
-PyObject *PyExc_UnicodeDecodeError = (PyObject *)&_PyExc_UnicodeDecodeError;
-
-PyObject *
-PyUnicodeDecodeError_Create(
-    const char *encoding, const char *object, Py_ssize_t length,
-    Py_ssize_t start, Py_ssize_t end, const char *reason)
-{
-    return PyObject_CallFunction(PyExc_UnicodeDecodeError, "ss#nns",
-                                 encoding, object, length, start, end, reason);
-}
-
-
-/*
- *    UnicodeTranslateError extends UnicodeError
- */
-
-static int
-UnicodeTranslateError_init(PyUnicodeErrorObject *self, PyObject *args,
-                           PyObject *kwds)
-{
-    if (BaseException_init((PyBaseExceptionObject *)self, args, kwds) == -1)
-        return -1;
-
-    Py_CLEAR(self->object);
-    Py_CLEAR(self->reason);
-
-    if (!PyArg_ParseTuple(args, "O!nnO!",
-        &PyUnicode_Type, &self->object,
-        &self->start,
-        &self->end,
-        &PyString_Type, &self->reason)) {
-        self->object = self->reason = NULL;
-        return -1;
-    }
-
-    Py_INCREF(self->object);
-    Py_INCREF(self->reason);
-
-    return 0;
-}
-
-
-static PyObject *
-UnicodeTranslateError_str(PyObject *self)
-{
-    PyUnicodeErrorObject *uself = (PyUnicodeErrorObject *)self;
-    PyObject *result = NULL;
-    PyObject *reason_str = NULL;
-
-    /* Get reason as a string, which it might not be if it's been
-       modified after we were contructed. */
-    reason_str = PyObject_Str(uself->reason);
-    if (reason_str == NULL)
-        goto done;
-
-    if (uself->start < PyUnicode_GET_SIZE(uself->object) && uself->end == uself->start+1) {
-        int badchar = (int)PyUnicode_AS_UNICODE(uself->object)[uself->start];
-        char badchar_str[20];
-        if (badchar <= 0xff)
-            PyOS_snprintf(badchar_str, sizeof(badchar_str), "x%02x", badchar);
-        else if (badchar <= 0xffff)
-            PyOS_snprintf(badchar_str, sizeof(badchar_str), "u%04x", badchar);
-        else
-            PyOS_snprintf(badchar_str, sizeof(badchar_str), "U%08x", badchar);
-        result = PyString_FromFormat(
-            "can't translate character u'\\%s' in position %zd: %.400s",
-            badchar_str,
-            uself->start,
-            PyString_AS_STRING(reason_str));
-    } else {
-        result = PyString_FromFormat(
-            "can't translate characters in position %zd-%zd: %.400s",
-            uself->start,
-            uself->end-1,
-            PyString_AS_STRING(reason_str));
-    }
-done:
-    Py_XDECREF(reason_str);
-    return result;
-}
-
-static PyTypeObject _PyExc_UnicodeTranslateError = {
-    PyObject_HEAD_INIT(NULL)
-    0,
-    EXC_MODULE_NAME "UnicodeTranslateError",
-    sizeof(PyUnicodeErrorObject), 0,
-    (destructor)UnicodeError_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    (reprfunc)UnicodeTranslateError_str, 0, 0, 0,
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC,
-    PyDoc_STR("Unicode translation error."), (traverseproc)UnicodeError_traverse,
-    (inquiry)UnicodeError_clear, 0, 0, 0, 0, 0, UnicodeError_members,
-    0, &_PyExc_UnicodeError, 0, 0, 0, offsetof(PyUnicodeErrorObject, dict),
-    (initproc)UnicodeTranslateError_init, 0, BaseException_new,
-};
-PyObject *PyExc_UnicodeTranslateError = (PyObject *)&_PyExc_UnicodeTranslateError;
-
-PyObject *
-PyUnicodeTranslateError_Create(
-    const Py_UNICODE *object, Py_ssize_t length,
-    Py_ssize_t start, Py_ssize_t end, const char *reason)
-{
-    return PyObject_CallFunction(PyExc_UnicodeTranslateError, "u#nns",
-                                 object, length, start, end, reason);
-}
-#endif
-
-
-/*
- *    AssertionError extends StandardError
- */
-SimpleExtendsException(PyExc_StandardError, AssertionError,
-                       "Assertion failed.");
-
-
-/*
- *    ArithmeticError extends StandardError
- */
-SimpleExtendsException(PyExc_StandardError, ArithmeticError,
-                       "Base class for arithmetic errors.");
-
-
-/*
- *    FloatingPointError extends ArithmeticError
- */
-SimpleExtendsException(PyExc_ArithmeticError, FloatingPointError,
-                       "Floating point operation failed.");
-
-
-/*
- *    OverflowError extends ArithmeticError
- */
-SimpleExtendsException(PyExc_ArithmeticError, OverflowError,
-                       "Result too large to be represented.");
-
-
-/*
- *    ZeroDivisionError extends ArithmeticError
- */
-SimpleExtendsException(PyExc_ArithmeticError, ZeroDivisionError,
-          "Second argument to a division or modulo operation was zero.");
-
-
-/*
- *    SystemError extends StandardError
- */
-SimpleExtendsException(PyExc_StandardError, SystemError,
-    "Internal error in the Python interpreter.\n"
-    "\n"
-    "Please report this to the Python maintainer, along with the traceback,\n"
-    "the Python version, and the hardware/OS platform and version.");
-
-
-/*
- *    ReferenceError extends StandardError
- */
-SimpleExtendsException(PyExc_StandardError, ReferenceError,
-                       "Weak ref proxy used after referent went away.");
-
-
-/*
- *    MemoryError extends StandardError
- */
-SimpleExtendsException(PyExc_StandardError, MemoryError, "Out of memory.");
-
-/*
- *    BufferError extends StandardError
- */
-SimpleExtendsException(PyExc_StandardError, BufferError, "Buffer error.");
-
-
-/* Warning category docstrings */
-
-/*
- *    Warning extends Exception
- */
-SimpleExtendsException(PyExc_Exception, Warning,
-                       "Base class for warning categories.");
-
-
-/*
- *    UserWarning extends Warning
- */
-SimpleExtendsException(PyExc_Warning, UserWarning,
-                       "Base class for warnings generated by user code.");
-
-
-/*
- *    DeprecationWarning extends Warning
- */
-SimpleExtendsException(PyExc_Warning, DeprecationWarning,
-                       "Base class for warnings about deprecated features.");
-
-
-/*
- *    PendingDeprecationWarning extends Warning
- */
-SimpleExtendsException(PyExc_Warning, PendingDeprecationWarning,
-    "Base class for warnings about features which will be deprecated\n"
-    "in the future.");
-
-
-/*
- *    SyntaxWarning extends Warning
- */
-SimpleExtendsException(PyExc_Warning, SyntaxWarning,
-                       "Base class for warnings about dubious syntax.");
-
-
-/*
- *    RuntimeWarning extends Warning
- */
-SimpleExtendsException(PyExc_Warning, RuntimeWarning,
-                 "Base class for warnings about dubious runtime behavior.");
-
-
-/*
- *    FutureWarning extends Warning
- */
-SimpleExtendsException(PyExc_Warning, FutureWarning,
-    "Base class for warnings about constructs that will change semantically\n"
-    "in the future.");
-
-
-/*
- *    ImportWarning extends Warning
- */
-SimpleExtendsException(PyExc_Warning, ImportWarning,
-          "Base class for warnings about probable mistakes in module imports");
-
-
-/*
- *    UnicodeWarning extends Warning
- */
-SimpleExtendsException(PyExc_Warning, UnicodeWarning,
-    "Base class for warnings about Unicode related problems, mostly\n"
-    "related to conversion problems.");
-
-/*
- *    BytesWarning extends Warning
- */
-SimpleExtendsException(PyExc_Warning, BytesWarning,
-    "Base class for warnings about bytes and buffer related problems, mostly\n"
-    "related to conversion from str or comparing to str.");
-
-/* Pre-computed MemoryError instance.  Best to create this as early as
- * possible and not wait until a MemoryError is actually raised!
- */
-PyObject *PyExc_MemoryErrorInst=NULL;
-
-/* Pre-computed RuntimeError instance for when recursion depth is reached.
-   Meant to be used when normalizing the exception for exceeding the recursion
-   depth will cause its own infinite recursion.
-*/
-PyObject *PyExc_RecursionErrorInst = NULL;
-
-/* module global functions */
-static PyMethodDef functions[] = {
-    /* Sentinel */
-    {NULL, NULL}
-};
-
-#define PRE_INIT(TYPE) if (PyType_Ready(&_PyExc_ ## TYPE) < 0) \
-    Py_FatalError("exceptions bootstrapping error.");
-
-#define POST_INIT(TYPE) Py_INCREF(PyExc_ ## TYPE); \
-    PyModule_AddObject(m, # TYPE, PyExc_ ## TYPE); \
-    if (PyDict_SetItemString(bdict, # TYPE, PyExc_ ## TYPE)) \
-        Py_FatalError("Module dictionary insertion problem.");
-
-
-PyMODINIT_FUNC
-_PyExc_Init(void)
-{
-    PyObject *m, *bltinmod, *bdict;
-
-    PRE_INIT(BaseException)
-    PRE_INIT(Exception)
-    PRE_INIT(StandardError)
-    PRE_INIT(TypeError)
-    PRE_INIT(StopIteration)
-    PRE_INIT(GeneratorExit)
-    PRE_INIT(SystemExit)
-    PRE_INIT(KeyboardInterrupt)
-    PRE_INIT(ImportError)
-    PRE_INIT(EnvironmentError)
-    PRE_INIT(IOError)
-    PRE_INIT(OSError)
-#ifdef MS_WINDOWS
-    PRE_INIT(WindowsError)
-#endif
-#ifdef __VMS
-    PRE_INIT(VMSError)
-#endif
-    PRE_INIT(EOFError)
-    PRE_INIT(RuntimeError)
-    PRE_INIT(NotImplementedError)
-    PRE_INIT(NameError)
-    PRE_INIT(UnboundLocalError)
-    PRE_INIT(AttributeError)
-    PRE_INIT(SyntaxError)
-    PRE_INIT(IndentationError)
-    PRE_INIT(TabError)
-    PRE_INIT(LookupError)
-    PRE_INIT(IndexError)
-    PRE_INIT(KeyError)
-    PRE_INIT(ValueError)
-    PRE_INIT(UnicodeError)
-#ifdef Py_USING_UNICODE
-    PRE_INIT(UnicodeEncodeError)
-    PRE_INIT(UnicodeDecodeError)
-    PRE_INIT(UnicodeTranslateError)
-#endif
-    PRE_INIT(AssertionError)
-    PRE_INIT(ArithmeticError)
-    PRE_INIT(FloatingPointError)
-    PRE_INIT(OverflowError)
-    PRE_INIT(ZeroDivisionError)
-    PRE_INIT(SystemError)
-    PRE_INIT(ReferenceError)
-    PRE_INIT(MemoryError)
-    PRE_INIT(BufferError)
-    PRE_INIT(Warning)
-    PRE_INIT(UserWarning)
-    PRE_INIT(DeprecationWarning)
-    PRE_INIT(PendingDeprecationWarning)
-    PRE_INIT(SyntaxWarning)
-    PRE_INIT(RuntimeWarning)
-    PRE_INIT(FutureWarning)
-    PRE_INIT(ImportWarning)
-    PRE_INIT(UnicodeWarning)
-    PRE_INIT(BytesWarning)
-
-    m = Py_InitModule4("exceptions", functions, exceptions_doc,
-        (PyObject *)NULL, PYTHON_API_VERSION);
-    if (m == NULL) return;
-
-    bltinmod = PyImport_ImportModule("__builtin__");
-    if (bltinmod == NULL)
-        Py_FatalError("exceptions bootstrapping error.");
-    bdict = PyModule_GetDict(bltinmod);
-    if (bdict == NULL)
-        Py_FatalError("exceptions bootstrapping error.");
-
-    POST_INIT(BaseException)
-    POST_INIT(Exception)
-    POST_INIT(StandardError)
-    POST_INIT(TypeError)
-    POST_INIT(StopIteration)
-    POST_INIT(GeneratorExit)
-    POST_INIT(SystemExit)
-    POST_INIT(KeyboardInterrupt)
-    POST_INIT(ImportError)
-    POST_INIT(EnvironmentError)
-    POST_INIT(IOError)
-    POST_INIT(OSError)
-#ifdef MS_WINDOWS
-    POST_INIT(WindowsError)
-#endif
-#ifdef __VMS
-    POST_INIT(VMSError)
-#endif
-    POST_INIT(EOFError)
-    POST_INIT(RuntimeError)
-    POST_INIT(NotImplementedError)
-    POST_INIT(NameError)
-    POST_INIT(UnboundLocalError)
-    POST_INIT(AttributeError)
-    POST_INIT(SyntaxError)
-    POST_INIT(IndentationError)
-    POST_INIT(TabError)
-    POST_INIT(LookupError)
-    POST_INIT(IndexError)
-    POST_INIT(KeyError)
-    POST_INIT(ValueError)
-    POST_INIT(UnicodeError)
-#ifdef Py_USING_UNICODE
-    POST_INIT(UnicodeEncodeError)
-    POST_INIT(UnicodeDecodeError)
-    POST_INIT(UnicodeTranslateError)
-#endif
-    POST_INIT(AssertionError)
-    POST_INIT(ArithmeticError)
-    POST_INIT(FloatingPointError)
-    POST_INIT(OverflowError)
-    POST_INIT(ZeroDivisionError)
-    POST_INIT(SystemError)
-    POST_INIT(ReferenceError)
-    POST_INIT(MemoryError)
-    POST_INIT(BufferError)
-    POST_INIT(Warning)
-    POST_INIT(UserWarning)
-    POST_INIT(DeprecationWarning)
-    POST_INIT(PendingDeprecationWarning)
-    POST_INIT(SyntaxWarning)
-    POST_INIT(RuntimeWarning)
-    POST_INIT(FutureWarning)
-    POST_INIT(ImportWarning)
-    POST_INIT(UnicodeWarning)
-    POST_INIT(BytesWarning)
-
-    PyExc_MemoryErrorInst = BaseException_new(&_PyExc_MemoryError, NULL, NULL);
-    if (!PyExc_MemoryErrorInst)
-        Py_FatalError("Cannot pre-allocate MemoryError instance");
-
-    PyExc_RecursionErrorInst = BaseException_new(&_PyExc_RuntimeError, NULL, NULL);
-    if (!PyExc_RecursionErrorInst)
-        Py_FatalError("Cannot pre-allocate RuntimeError instance for "
-                        "recursion errors");
-    else {
-        PyBaseExceptionObject *err_inst =
-            (PyBaseExceptionObject *)PyExc_RecursionErrorInst;
-        PyObject *args_tuple;
-        PyObject *exc_message;
-        exc_message = PyString_FromString("maximum recursion depth exceeded");
-        if (!exc_message)
-            Py_FatalError("cannot allocate argument for RuntimeError "
-                            "pre-allocation");
-        args_tuple = PyTuple_Pack(1, exc_message);
-        if (!args_tuple)
-            Py_FatalError("cannot allocate tuple for RuntimeError "
-                            "pre-allocation");
-        Py_DECREF(exc_message);
-        if (BaseException_init(err_inst, args_tuple, NULL))
-            Py_FatalError("init of pre-allocated RuntimeError failed");
-        Py_DECREF(args_tuple);
-    }
-
-    Py_DECREF(bltinmod);
-}
-
-void
-_PyExc_Fini(void)
-{
-    Py_CLEAR(PyExc_MemoryErrorInst);
-    Py_CLEAR(PyExc_RecursionErrorInst);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/fileobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/fileobject.c
deleted file mode 100644
index d0f3d12..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/fileobject.c
+++ /dev/null
@@ -1,2822 +0,0 @@
-/* File object implementation */
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#include "structmember.h"
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif /* HAVE_SYS_TYPES_H */
-
-#ifdef MS_WINDOWS
-#define fileno _fileno
-/* can simulate truncate with Win32 API functions; see file_truncate */
-#define HAVE_FTRUNCATE
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#endif
-
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-#include <io.h>
-#endif
-
-#define BUF(v) PyString_AS_STRING((PyStringObject *)v)
-
-#ifdef HAVE_ERRNO_H
-#include <errno.h>
-#endif
-
-#ifdef HAVE_GETC_UNLOCKED
-#define GETC(f) getc_unlocked(f)
-#define FLOCKFILE(f) flockfile(f)
-#define FUNLOCKFILE(f) funlockfile(f)
-#else
-#define GETC(f) getc(f)
-#define FLOCKFILE(f)
-#define FUNLOCKFILE(f)
-#endif
-
-/* Bits in f_newlinetypes */
-#define NEWLINE_UNKNOWN 0       /* No newline seen, yet */
-#define NEWLINE_CR 1            /* \r newline seen */
-#define NEWLINE_LF 2            /* \n newline seen */
-#define NEWLINE_CRLF 4          /* \r\n newline seen */
-
-/*
- * These macros release the GIL while preventing the f_close() function being
- * called in the interval between them.  For that purpose, a running total of
- * the number of currently running unlocked code sections is kept in
- * the unlocked_count field of the PyFileObject. The close() method raises
- * an IOError if that field is non-zero.  See issue #815646, #595601.
- */
-
-#define FILE_BEGIN_ALLOW_THREADS(fobj) \
-{ \
-    fobj->unlocked_count++; \
-    Py_BEGIN_ALLOW_THREADS
-
-#define FILE_END_ALLOW_THREADS(fobj) \
-    Py_END_ALLOW_THREADS \
-    fobj->unlocked_count--; \
-    assert(fobj->unlocked_count >= 0); \
-}
-
-#define FILE_ABORT_ALLOW_THREADS(fobj) \
-    Py_BLOCK_THREADS \
-    fobj->unlocked_count--; \
-    assert(fobj->unlocked_count >= 0);
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-FILE *
-PyFile_AsFile(PyObject *f)
-{
-    if (f == NULL || !PyFile_Check(f))
-        return NULL;
-    else
-        return ((PyFileObject *)f)->f_fp;
-}
-
-void PyFile_IncUseCount(PyFileObject *fobj)
-{
-    fobj->unlocked_count++;
-}
-
-void PyFile_DecUseCount(PyFileObject *fobj)
-{
-    fobj->unlocked_count--;
-    assert(fobj->unlocked_count >= 0);
-}
-
-PyObject *
-PyFile_Name(PyObject *f)
-{
-    if (f == NULL || !PyFile_Check(f))
-        return NULL;
-    else
-        return ((PyFileObject *)f)->f_name;
-}
-
-/* This is a safe wrapper around PyObject_Print to print to the FILE
-   of a PyFileObject. PyObject_Print releases the GIL but knows nothing
-   about PyFileObject. */
-static int
-file_PyObject_Print(PyObject *op, PyFileObject *f, int flags)
-{
-    int result;
-    PyFile_IncUseCount(f);
-    result = PyObject_Print(op, f->f_fp, flags);
-    PyFile_DecUseCount(f);
-    return result;
-}
-
-/* On Unix, fopen will succeed for directories.
-   In Python, there should be no file objects referring to
-   directories, so we need a check.  */
-
-static PyFileObject*
-dircheck(PyFileObject* f)
-{
-#if defined(HAVE_FSTAT) && defined(S_IFDIR) && defined(EISDIR)
-    struct stat buf;
-    if (f->f_fp == NULL)
-        return f;
-    if (fstat(fileno(f->f_fp), &buf) == 0 &&
-        S_ISDIR(buf.st_mode)) {
-        char *msg = strerror(EISDIR);
-        PyObject *exc = PyObject_CallFunction(PyExc_IOError, "(isO)",
-                                              EISDIR, msg, f->f_name);
-        PyErr_SetObject(PyExc_IOError, exc);
-        Py_XDECREF(exc);
-        return NULL;
-    }
-#endif
-    return f;
-}
-
-
-static PyObject *
-fill_file_fields(PyFileObject *f, FILE *fp, PyObject *name, char *mode,
-                 int (*close)(FILE *))
-{
-    assert(name != NULL);
-    assert(f != NULL);
-    assert(PyFile_Check(f));
-    assert(f->f_fp == NULL);
-
-    Py_DECREF(f->f_name);
-    Py_DECREF(f->f_mode);
-    Py_DECREF(f->f_encoding);
-    Py_DECREF(f->f_errors);
-
-    Py_INCREF(name);
-    f->f_name = name;
-
-    f->f_mode = PyString_FromString(mode);
-
-    f->f_close = close;
-    f->f_softspace = 0;
-    f->f_binary = strchr(mode,'b') != NULL;
-    f->f_buf = NULL;
-    f->f_univ_newline = (strchr(mode, 'U') != NULL);
-    f->f_newlinetypes = NEWLINE_UNKNOWN;
-    f->f_skipnextlf = 0;
-    Py_INCREF(Py_None);
-    f->f_encoding = Py_None;
-    Py_INCREF(Py_None);
-    f->f_errors = Py_None;
-    f->readable = f->writable = 0;
-    if (strchr(mode, 'r') != NULL || f->f_univ_newline)
-        f->readable = 1;
-    if (strchr(mode, 'w') != NULL || strchr(mode, 'a') != NULL)
-        f->writable = 1;
-    if (strchr(mode, '+') != NULL)
-        f->readable = f->writable = 1;
-
-    if (f->f_mode == NULL)
-        return NULL;
-    f->f_fp = fp;
-    f = dircheck(f);
-    return (PyObject *) f;
-}
-
-#if defined _MSC_VER && _MSC_VER >= 1400 && defined(__STDC_SECURE_LIB__)
-#define Py_VERIFY_WINNT
-/* The CRT on windows compiled with Visual Studio 2005 and higher may
- * assert if given invalid mode strings.  This is all fine and well
- * in static languages like C where the mode string is typcially hard
- * coded.  But in Python, were we pass in the mode string from the user,
- * we need to verify it first manually
- */
-static int _PyVerify_Mode_WINNT(const char *mode)
-{
-    /* See if mode string is valid on Windows to avoid hard assertions */
-    /* remove leading spacese */
-    int singles = 0;
-    int pairs = 0;
-    int encoding = 0;
-    const char *s, *c;
-
-    while(*mode == ' ') /* strip initial spaces */
-        ++mode;
-    if (!strchr("rwa", *mode)) /* must start with one of these */
-        return 0;
-    while (*++mode) {
-        if (*mode == ' ' || *mode == 'N') /* ignore spaces and N */
-            continue;
-        s = "+TD"; /* each of this can appear only once */
-        c = strchr(s, *mode);
-        if (c) {
-            ptrdiff_t idx = s-c;
-            if (singles & (1<<idx))
-                return 0;
-            singles |= (1<<idx);
-            continue;
-        }
-        s = "btcnSR"; /* only one of each letter in the pairs allowed */
-        c = strchr(s, *mode);
-        if (c) {
-            ptrdiff_t idx = (s-c)/2;
-            if (pairs & (1<<idx))
-                return 0;
-            pairs |= (1<<idx);
-            continue;
-        }
-        if (*mode == ',') {
-            encoding = 1;
-            break;
-        }
-        return 0; /* found an invalid char */
-    }
-
-    if (encoding) {
-        char *e[] = {"UTF-8", "UTF-16LE", "UNICODE"};
-        while (*mode == ' ')
-            ++mode;
-        /* find 'ccs =' */
-        if (strncmp(mode, "ccs", 3))
-            return 0;
-        mode += 3;
-        while (*mode == ' ')
-            ++mode;
-        if (*mode != '=')
-            return 0;
-        while (*mode == ' ')
-            ++mode;
-        for(encoding = 0; encoding<_countof(e); ++encoding) {
-            size_t l = strlen(e[encoding]);
-            if (!strncmp(mode, e[encoding], l)) {
-                mode += l; /* found a valid encoding */
-                break;
-            }
-        }
-        if (encoding == _countof(e))
-            return 0;
-    }
-    /* skip trailing spaces */
-    while (*mode == ' ')
-        ++mode;
-
-    return *mode == '\0'; /* must be at the end of the string */
-}
-#endif
-
-/* check for known incorrect mode strings - problem is, platforms are
-   free to accept any mode characters they like and are supposed to
-   ignore stuff they don't understand... write or append mode with
-   universal newline support is expressly forbidden by PEP 278.
-   Additionally, remove the 'U' from the mode string as platforms
-   won't know what it is. Non-zero return signals an exception */
-int
-_PyFile_SanitizeMode(char *mode)
-{
-    char *upos;
-    size_t len = strlen(mode);
-
-    if (!len) {
-        PyErr_SetString(PyExc_ValueError, "empty mode string");
-        return -1;
-    }
-
-    upos = strchr(mode, 'U');
-    if (upos) {
-        memmove(upos, upos+1, len-(upos-mode)); /* incl null char */
-
-        if (mode[0] == 'w' || mode[0] == 'a') {
-            PyErr_Format(PyExc_ValueError, "universal newline "
-                         "mode can only be used with modes "
-                         "starting with 'r'");
-            return -1;
-        }
-
-        if (mode[0] != 'r') {
-            memmove(mode+1, mode, strlen(mode)+1);
-            mode[0] = 'r';
-        }
-
-        if (!strchr(mode, 'b')) {
-            memmove(mode+2, mode+1, strlen(mode));
-            mode[1] = 'b';
-        }
-    } else if (mode[0] != 'r' && mode[0] != 'w' && mode[0] != 'a') {
-        PyErr_Format(PyExc_ValueError, "mode string must begin with "
-                    "one of 'r', 'w', 'a' or 'U', not '%.200s'", mode);
-        return -1;
-    }
-#ifdef Py_VERIFY_WINNT
-    /* additional checks on NT with visual studio 2005 and higher */
-    if (!_PyVerify_Mode_WINNT(mode)) {
-        PyErr_Format(PyExc_ValueError, "Invalid mode ('%.50s')", mode);
-        return -1;
-    }
-#endif
-    return 0;
-}
-
-static PyObject *
-open_the_file(PyFileObject *f, char *name, char *mode)
-{
-    char *newmode;
-    assert(f != NULL);
-    assert(PyFile_Check(f));
-#ifdef MS_WINDOWS
-    /* windows ignores the passed name in order to support Unicode */
-    assert(f->f_name != NULL);
-#else
-    assert(name != NULL);
-#endif
-    assert(mode != NULL);
-    assert(f->f_fp == NULL);
-
-    /* probably need to replace 'U' by 'rb' */
-    newmode = PyMem_MALLOC(strlen(mode) + 3);
-    if (!newmode) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-    strcpy(newmode, mode);
-
-    if (_PyFile_SanitizeMode(newmode)) {
-        f = NULL;
-        goto cleanup;
-    }
-
-    /* rexec.py can't stop a user from getting the file() constructor --
-       all they have to do is get *any* file object f, and then do
-       type(f).  Here we prevent them from doing damage with it. */
-    if (PyEval_GetRestricted()) {
-        PyErr_SetString(PyExc_IOError,
-        "file() constructor not accessible in restricted mode");
-        f = NULL;
-        goto cleanup;
-    }
-    errno = 0;
-
-#ifdef MS_WINDOWS
-    if (PyUnicode_Check(f->f_name)) {
-        PyObject *wmode;
-        wmode = PyUnicode_DecodeASCII(newmode, strlen(newmode), NULL);
-        if (f->f_name && wmode) {
-            FILE_BEGIN_ALLOW_THREADS(f)
-            /* PyUnicode_AS_UNICODE OK without thread
-               lock as it is a simple dereference. */
-            f->f_fp = _wfopen(PyUnicode_AS_UNICODE(f->f_name),
-                              PyUnicode_AS_UNICODE(wmode));
-            FILE_END_ALLOW_THREADS(f)
-        }
-        Py_XDECREF(wmode);
-    }
-#endif
-    if (NULL == f->f_fp && NULL != name) {
-        FILE_BEGIN_ALLOW_THREADS(f)
-        f->f_fp = fopen(name, newmode);
-        FILE_END_ALLOW_THREADS(f)
-    }
-
-    if (f->f_fp == NULL) {
-#if defined  _MSC_VER && (_MSC_VER < 1400 || !defined(__STDC_SECURE_LIB__))
-        /* MSVC 6 (Microsoft) leaves errno at 0 for bad mode strings,
-         * across all Windows flavors.  When it sets EINVAL varies
-         * across Windows flavors, the exact conditions aren't
-         * documented, and the answer lies in the OS's implementation
-         * of Win32's CreateFile function (whose source is secret).
-         * Seems the best we can do is map EINVAL to ENOENT.
-         * Starting with Visual Studio .NET 2005, EINVAL is correctly
-         * set by our CRT error handler (set in exceptions.c.)
-         */
-        if (errno == 0)         /* bad mode string */
-            errno = EINVAL;
-        else if (errno == EINVAL) /* unknown, but not a mode string */
-            errno = ENOENT;
-#endif
-        /* EINVAL is returned when an invalid filename or
-         * an invalid mode is supplied. */
-        if (errno == EINVAL) {
-            PyObject *v;
-            char message[100];
-            PyOS_snprintf(message, 100,
-                "invalid mode ('%.50s') or filename", mode);
-            v = Py_BuildValue("(isO)", errno, message, f->f_name);
-            if (v != NULL) {
-                PyErr_SetObject(PyExc_IOError, v);
-                Py_DECREF(v);
-            }
-        }
-        else
-            PyErr_SetFromErrnoWithFilenameObject(PyExc_IOError, f->f_name);
-        f = NULL;
-    }
-    if (f != NULL)
-        f = dircheck(f);
-
-cleanup:
-    PyMem_FREE(newmode);
-
-    return (PyObject *)f;
-}
-
-static PyObject *
-close_the_file(PyFileObject *f)
-{
-    int sts = 0;
-    int (*local_close)(FILE *);
-    FILE *local_fp = f->f_fp;
-    char *local_setbuf = f->f_setbuf;
-    if (local_fp != NULL) {
-        local_close = f->f_close;
-        if (local_close != NULL && f->unlocked_count > 0) {
-            if (f->ob_refcnt > 0) {
-                PyErr_SetString(PyExc_IOError,
-                    "close() called during concurrent "
-                    "operation on the same file object.");
-            } else {
-                /* This should not happen unless someone is
-                 * carelessly playing with the PyFileObject
-                 * struct fields and/or its associated FILE
-                 * pointer. */
-                PyErr_SetString(PyExc_SystemError,
-                    "PyFileObject locking error in "
-                    "destructor (refcnt <= 0 at close).");
-            }
-            return NULL;
-        }
-        /* NULL out the FILE pointer before releasing the GIL, because
-         * it will not be valid anymore after the close() function is
-         * called. */
-        f->f_fp = NULL;
-        if (local_close != NULL) {
-            /* Issue #9295: must temporarily reset f_setbuf so that another
-               thread doesn't free it when running file_close() concurrently.
-               Otherwise this close() will crash when flushing the buffer. */
-            f->f_setbuf = NULL;
-            Py_BEGIN_ALLOW_THREADS
-            errno = 0;
-            sts = (*local_close)(local_fp);
-            Py_END_ALLOW_THREADS
-            f->f_setbuf = local_setbuf;
-            if (sts == EOF)
-                return PyErr_SetFromErrno(PyExc_IOError);
-            if (sts != 0)
-                return PyInt_FromLong((long)sts);
-        }
-    }
-    Py_RETURN_NONE;
-}
-
-PyObject *
-PyFile_FromFile(FILE *fp, char *name, char *mode, int (*close)(FILE *))
-{
-    PyFileObject *f = (PyFileObject *)PyFile_Type.tp_new(&PyFile_Type,
-                                                         NULL, NULL);
-    if (f != NULL) {
-        PyObject *o_name = PyString_FromString(name);
-        if (o_name == NULL)
-            return NULL;
-        if (fill_file_fields(f, fp, o_name, mode, close) == NULL) {
-            Py_DECREF(f);
-            f = NULL;
-        }
-        Py_DECREF(o_name);
-    }
-    return (PyObject *) f;
-}
-
-PyObject *
-PyFile_FromString(char *name, char *mode)
-{
-    extern int fclose(FILE *);
-    PyFileObject *f;
-
-    f = (PyFileObject *)PyFile_FromFile((FILE *)NULL, name, mode, fclose);
-    if (f != NULL) {
-        if (open_the_file(f, name, mode) == NULL) {
-            Py_DECREF(f);
-            f = NULL;
-        }
-    }
-    return (PyObject *)f;
-}
-
-void
-PyFile_SetBufSize(PyObject *f, int bufsize)
-{
-    PyFileObject *file = (PyFileObject *)f;
-    if (bufsize >= 0) {
-        int type;
-        switch (bufsize) {
-        case 0:
-            type = _IONBF;
-            break;
-#ifdef HAVE_SETVBUF
-        case 1:
-            type = _IOLBF;
-            bufsize = BUFSIZ;
-            break;
-#endif
-        default:
-            type = _IOFBF;
-#ifndef HAVE_SETVBUF
-            bufsize = BUFSIZ;
-#endif
-            break;
-        }
-        fflush(file->f_fp);
-        if (type == _IONBF) {
-            PyMem_Free(file->f_setbuf);
-            file->f_setbuf = NULL;
-        } else {
-            file->f_setbuf = (char *)PyMem_Realloc(file->f_setbuf,
-                                                    bufsize);
-        }
-#ifdef HAVE_SETVBUF
-        setvbuf(file->f_fp, file->f_setbuf, type, bufsize);
-#else /* !HAVE_SETVBUF */
-        setbuf(file->f_fp, file->f_setbuf);
-#endif /* !HAVE_SETVBUF */
-    }
-}
-
-/* Set the encoding used to output Unicode strings.
-   Return 1 on success, 0 on failure. */
-
-int
-PyFile_SetEncoding(PyObject *f, const char *enc)
-{
-    return PyFile_SetEncodingAndErrors(f, enc, NULL);
-}
-
-int
-PyFile_SetEncodingAndErrors(PyObject *f, const char *enc, char* errors)
-{
-    PyFileObject *file = (PyFileObject*)f;
-    PyObject *str, *oerrors;
-
-    assert(PyFile_Check(f));
-    str = PyString_FromString(enc);
-    if (!str)
-        return 0;
-    if (errors) {
-        oerrors = PyString_FromString(errors);
-        if (!oerrors) {
-            Py_DECREF(str);
-            return 0;
-        }
-    } else {
-        oerrors = Py_None;
-        Py_INCREF(Py_None);
-    }
-    Py_DECREF(file->f_encoding);
-    file->f_encoding = str;
-    Py_DECREF(file->f_errors);
-    file->f_errors = oerrors;
-    return 1;
-}
-
-static PyObject *
-err_closed(void)
-{
-    PyErr_SetString(PyExc_ValueError, "I/O operation on closed file");
-    return NULL;
-}
-
-static PyObject *
-err_mode(char *action)
-{
-    PyErr_Format(PyExc_IOError, "File not open for %s", action);
-    return NULL;
-}
-
-/* Refuse regular file I/O if there's data in the iteration-buffer.
- * Mixing them would cause data to arrive out of order, as the read*
- * methods don't use the iteration buffer. */
-static PyObject *
-err_iterbuffered(void)
-{
-    PyErr_SetString(PyExc_ValueError,
-        "Mixing iteration and read methods would lose data");
-    return NULL;
-}
-
-static void drop_readahead(PyFileObject *);
-
-/* Methods */
-
-static void
-file_dealloc(PyFileObject *f)
-{
-    PyObject *ret;
-    if (f->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) f);
-    ret = close_the_file(f);
-    if (!ret) {
-        PySys_WriteStderr("close failed in file object destructor:\n");
-        PyErr_Print();
-    }
-    else {
-        Py_DECREF(ret);
-    }
-    PyMem_Free(f->f_setbuf);
-    Py_XDECREF(f->f_name);
-    Py_XDECREF(f->f_mode);
-    Py_XDECREF(f->f_encoding);
-    Py_XDECREF(f->f_errors);
-    drop_readahead(f);
-    Py_TYPE(f)->tp_free((PyObject *)f);
-}
-
-static PyObject *
-file_repr(PyFileObject *f)
-{
-    if (PyUnicode_Check(f->f_name)) {
-#ifdef Py_USING_UNICODE
-        PyObject *ret = NULL;
-        PyObject *name = PyUnicode_AsUnicodeEscapeString(f->f_name);
-        const char *name_str = name ? PyString_AsString(name) : "?";
-        ret = PyString_FromFormat("<%s file u'%s', mode '%s' at %p>",
-                           f->f_fp == NULL ? "closed" : "open",
-                           name_str,
-                           PyString_AsString(f->f_mode),
-                           f);
-        Py_XDECREF(name);
-        return ret;
-#endif
-    } else {
-        return PyString_FromFormat("<%s file '%s', mode '%s' at %p>",
-                           f->f_fp == NULL ? "closed" : "open",
-                           PyString_AsString(f->f_name),
-                           PyString_AsString(f->f_mode),
-                           f);
-    }
-}
-
-static PyObject *
-file_close(PyFileObject *f)
-{
-    PyObject *sts = close_the_file(f);
-    if (sts) {
-        PyMem_Free(f->f_setbuf);
-        f->f_setbuf = NULL;
-    }
-    return sts;
-}
-
-
-/* Our very own off_t-like type, 64-bit if possible */
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-typedef off_t Py_off_t;
-#elif SIZEOF_OFF_T >= 8
-typedef off_t Py_off_t;
-#elif SIZEOF_FPOS_T >= 8
-typedef fpos_t Py_off_t;
-#else
-#error "Large file support, but neither off_t nor fpos_t is large enough."
-#endif
-
-
-/* a portable fseek() function
-   return 0 on success, non-zero on failure (with errno set) */
-static int
-_portable_fseek(FILE *fp, Py_off_t offset, int whence)
-{
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    return fseek(fp, offset, whence);
-#elif defined(HAVE_FSEEKO) && SIZEOF_OFF_T >= 8
-    return fseeko(fp, offset, whence);
-#elif defined(HAVE_FSEEK64)
-    return fseek64(fp, offset, whence);
-#elif defined(__BEOS__)
-    return _fseek(fp, offset, whence);
-#elif SIZEOF_FPOS_T >= 8
-    /* lacking a 64-bit capable fseek(), use a 64-bit capable fsetpos()
-       and fgetpos() to implement fseek()*/
-    fpos_t pos;
-    switch (whence) {
-    case SEEK_END:
-#ifdef MS_WINDOWS
-        fflush(fp);
-        if (_lseeki64(fileno(fp), 0, 2) == -1)
-            return -1;
-#else
-        if (fseek(fp, 0, SEEK_END) != 0)
-            return -1;
-#endif
-        /* fall through */
-    case SEEK_CUR:
-        if (fgetpos(fp, &pos) != 0)
-            return -1;
-        offset += pos;
-        break;
-    /* case SEEK_SET: break; */
-    }
-    return fsetpos(fp, &offset);
-#else
-#error "Large file support, but no way to fseek."
-#endif
-}
-
-
-/* a portable ftell() function
-   Return -1 on failure with errno set appropriately, current file
-   position on success */
-static Py_off_t
-_portable_ftell(FILE* fp)
-{
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    return ftell(fp);
-#elif defined(HAVE_FTELLO) && SIZEOF_OFF_T >= 8
-    return ftello(fp);
-#elif defined(HAVE_FTELL64)
-    return ftell64(fp);
-#elif SIZEOF_FPOS_T >= 8
-    fpos_t pos;
-    if (fgetpos(fp, &pos) != 0)
-        return -1;
-    return pos;
-#else
-#error "Large file support, but no way to ftell."
-#endif
-}
-
-
-static PyObject *
-file_seek(PyFileObject *f, PyObject *args)
-{
-    int whence;
-    int ret;
-    Py_off_t offset;
-    PyObject *offobj, *off_index;
-
-    if (f->f_fp == NULL)
-        return err_closed();
-    drop_readahead(f);
-    whence = 0;
-    if (!PyArg_ParseTuple(args, "O|i:seek", &offobj, &whence))
-        return NULL;
-    off_index = PyNumber_Index(offobj);
-    if (!off_index) {
-        if (!PyFloat_Check(offobj))
-            return NULL;
-        /* Deprecated in 2.6 */
-        PyErr_Clear();
-        if (PyErr_WarnEx(PyExc_DeprecationWarning,
-                         "integer argument expected, got float",
-                         1) < 0)
-            return NULL;
-        off_index = offobj;
-        Py_INCREF(offobj);
-    }
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    offset = PyInt_AsLong(off_index);
-#else
-    offset = PyLong_Check(off_index) ?
-        PyLong_AsLongLong(off_index) : PyInt_AsLong(off_index);
-#endif
-    Py_DECREF(off_index);
-    if (PyErr_Occurred())
-        return NULL;
-
-    FILE_BEGIN_ALLOW_THREADS(f)
-    errno = 0;
-    ret = _portable_fseek(f->f_fp, offset, whence);
-    FILE_END_ALLOW_THREADS(f)
-
-    if (ret != 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        clearerr(f->f_fp);
-        return NULL;
-    }
-    f->f_skipnextlf = 0;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-
-#ifdef HAVE_FTRUNCATE
-static PyObject *
-file_truncate(PyFileObject *f, PyObject *args)
-{
-    Py_off_t newsize;
-    PyObject *newsizeobj = NULL;
-    Py_off_t initialpos;
-    int ret;
-
-    if (f->f_fp == NULL)
-        return err_closed();
-    if (!f->writable)
-        return err_mode("writing");
-    if (!PyArg_UnpackTuple(args, "truncate", 0, 1, &newsizeobj))
-        return NULL;
-
-    /* Get current file position.  If the file happens to be open for
-     * update and the last operation was an input operation, C doesn't
-     * define what the later fflush() will do, but we promise truncate()
-     * won't change the current position (and fflush() *does* change it
-     * then at least on Windows).  The easiest thing is to capture
-     * current pos now and seek back to it at the end.
-     */
-    FILE_BEGIN_ALLOW_THREADS(f)
-    errno = 0;
-    initialpos = _portable_ftell(f->f_fp);
-    FILE_END_ALLOW_THREADS(f)
-    if (initialpos == -1)
-        goto onioerror;
-
-    /* Set newsize to current postion if newsizeobj NULL, else to the
-     * specified value.
-     */
-    if (newsizeobj != NULL) {
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-        newsize = PyInt_AsLong(newsizeobj);
-#else
-        newsize = PyLong_Check(newsizeobj) ?
-                        PyLong_AsLongLong(newsizeobj) :
-                PyInt_AsLong(newsizeobj);
-#endif
-        if (PyErr_Occurred())
-            return NULL;
-    }
-    else /* default to current position */
-        newsize = initialpos;
-
-    /* Flush the stream.  We're mixing stream-level I/O with lower-level
-     * I/O, and a flush may be necessary to synch both platform views
-     * of the current file state.
-     */
-    FILE_BEGIN_ALLOW_THREADS(f)
-    errno = 0;
-    ret = fflush(f->f_fp);
-    FILE_END_ALLOW_THREADS(f)
-    if (ret != 0)
-        goto onioerror;
-
-#ifdef MS_WINDOWS
-    /* MS _chsize doesn't work if newsize doesn't fit in 32 bits,
-       so don't even try using it. */
-    {
-        HANDLE hFile;
-
-        /* Have to move current pos to desired endpoint on Windows. */
-        FILE_BEGIN_ALLOW_THREADS(f)
-        errno = 0;
-        ret = _portable_fseek(f->f_fp, newsize, SEEK_SET) != 0;
-        FILE_END_ALLOW_THREADS(f)
-        if (ret)
-            goto onioerror;
-
-        /* Truncate.  Note that this may grow the file! */
-        FILE_BEGIN_ALLOW_THREADS(f)
-        errno = 0;
-        hFile = (HANDLE)_get_osfhandle(fileno(f->f_fp));
-        ret = hFile == (HANDLE)-1;
-        if (ret == 0) {
-            ret = SetEndOfFile(hFile) == 0;
-            if (ret)
-                errno = EACCES;
-        }
-        FILE_END_ALLOW_THREADS(f)
-        if (ret)
-            goto onioerror;
-    }
-#else
-    FILE_BEGIN_ALLOW_THREADS(f)
-    errno = 0;
-    ret = ftruncate(fileno(f->f_fp), newsize);
-    FILE_END_ALLOW_THREADS(f)
-    if (ret != 0)
-        goto onioerror;
-#endif /* !MS_WINDOWS */
-
-    /* Restore original file position. */
-    FILE_BEGIN_ALLOW_THREADS(f)
-    errno = 0;
-    ret = _portable_fseek(f->f_fp, initialpos, SEEK_SET) != 0;
-    FILE_END_ALLOW_THREADS(f)
-    if (ret)
-        goto onioerror;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-
-onioerror:
-    PyErr_SetFromErrno(PyExc_IOError);
-    clearerr(f->f_fp);
-    return NULL;
-}
-#endif /* HAVE_FTRUNCATE */
-
-static PyObject *
-file_tell(PyFileObject *f)
-{
-    Py_off_t pos;
-
-    if (f->f_fp == NULL)
-        return err_closed();
-    FILE_BEGIN_ALLOW_THREADS(f)
-    errno = 0;
-    pos = _portable_ftell(f->f_fp);
-    FILE_END_ALLOW_THREADS(f)
-
-    if (pos == -1) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        clearerr(f->f_fp);
-        return NULL;
-    }
-    if (f->f_skipnextlf) {
-        int c;
-        c = GETC(f->f_fp);
-        if (c == '\n') {
-            f->f_newlinetypes |= NEWLINE_CRLF;
-            pos++;
-            f->f_skipnextlf = 0;
-        } else if (c != EOF) ungetc(c, f->f_fp);
-    }
-#if !defined(HAVE_LARGEFILE_SUPPORT)
-    return PyInt_FromLong(pos);
-#else
-    return PyLong_FromLongLong(pos);
-#endif
-}
-
-static PyObject *
-file_fileno(PyFileObject *f)
-{
-    if (f->f_fp == NULL)
-        return err_closed();
-    return PyInt_FromLong((long) fileno(f->f_fp));
-}
-
-static PyObject *
-file_flush(PyFileObject *f)
-{
-    int res;
-
-    if (f->f_fp == NULL)
-        return err_closed();
-    FILE_BEGIN_ALLOW_THREADS(f)
-    errno = 0;
-    res = fflush(f->f_fp);
-    FILE_END_ALLOW_THREADS(f)
-    if (res != 0) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        clearerr(f->f_fp);
-        return NULL;
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-file_isatty(PyFileObject *f)
-{
-    long res;
-    if (f->f_fp == NULL)
-        return err_closed();
-    FILE_BEGIN_ALLOW_THREADS(f)
-    res = isatty((int)fileno(f->f_fp));
-    FILE_END_ALLOW_THREADS(f)
-    return PyBool_FromLong(res);
-}
-
-
-#if BUFSIZ < 8192
-#define SMALLCHUNK 8192
-#else
-#define SMALLCHUNK BUFSIZ
-#endif
-
-#if SIZEOF_INT < 4
-#define BIGCHUNK  (512 * 32)
-#else
-#define BIGCHUNK  (512 * 1024)
-#endif
-
-static size_t
-new_buffersize(PyFileObject *f, size_t currentsize)
-{
-#ifdef HAVE_FSTAT
-    off_t pos, end;
-    struct stat st;
-    if (fstat(fileno(f->f_fp), &st) == 0) {
-        end = st.st_size;
-        /* The following is not a bug: we really need to call lseek()
-           *and* ftell().  The reason is that some stdio libraries
-           mistakenly flush their buffer when ftell() is called and
-           the lseek() call it makes fails, thereby throwing away
-           data that cannot be recovered in any way.  To avoid this,
-           we first test lseek(), and only call ftell() if lseek()
-           works.  We can't use the lseek() value either, because we
-           need to take the amount of buffered data into account.
-           (Yet another reason why stdio stinks. :-) */
-        pos = lseek(fileno(f->f_fp), 0L, SEEK_CUR);
-        if (pos >= 0) {
-            pos = ftell(f->f_fp);
-        }
-        if (pos < 0)
-            clearerr(f->f_fp);
-        if (end > pos && pos >= 0)
-            return currentsize + end - pos + 1;
-        /* Add 1 so if the file were to grow we'd notice. */
-    }
-#endif
-    if (currentsize > SMALLCHUNK) {
-        /* Keep doubling until we reach BIGCHUNK;
-           then keep adding BIGCHUNK. */
-        if (currentsize <= BIGCHUNK)
-            return currentsize + currentsize;
-        else
-            return currentsize + BIGCHUNK;
-    }
-    return currentsize + SMALLCHUNK;
-}
-
-#if defined(EWOULDBLOCK) && defined(EAGAIN) && EWOULDBLOCK != EAGAIN
-#define BLOCKED_ERRNO(x) ((x) == EWOULDBLOCK || (x) == EAGAIN)
-#else
-#ifdef EWOULDBLOCK
-#define BLOCKED_ERRNO(x) ((x) == EWOULDBLOCK)
-#else
-#ifdef EAGAIN
-#define BLOCKED_ERRNO(x) ((x) == EAGAIN)
-#else
-#define BLOCKED_ERRNO(x) 0
-#endif
-#endif
-#endif
-
-static PyObject *
-file_read(PyFileObject *f, PyObject *args)
-{
-    long bytesrequested = -1;
-    size_t bytesread, buffersize, chunksize;
-    PyObject *v;
-
-    if (f->f_fp == NULL)
-        return err_closed();
-    if (!f->readable)
-        return err_mode("reading");
-    /* refuse to mix with f.next() */
-    if (f->f_buf != NULL &&
-        (f->f_bufend - f->f_bufptr) > 0 &&
-        f->f_buf[0] != '\0')
-        return err_iterbuffered();
-    if (!PyArg_ParseTuple(args, "|l:read", &bytesrequested))
-        return NULL;
-    if (bytesrequested < 0)
-        buffersize = new_buffersize(f, (size_t)0);
-    else
-        buffersize = bytesrequested;
-    if (buffersize > PY_SSIZE_T_MAX) {
-        PyErr_SetString(PyExc_OverflowError,
-    "requested number of bytes is more than a Python string can hold");
-        return NULL;
-    }
-    v = PyString_FromStringAndSize((char *)NULL, buffersize);
-    if (v == NULL)
-        return NULL;
-    bytesread = 0;
-    for (;;) {
-        FILE_BEGIN_ALLOW_THREADS(f)
-        errno = 0;
-        chunksize = Py_UniversalNewlineFread(BUF(v) + bytesread,
-                  buffersize - bytesread, f->f_fp, (PyObject *)f);
-        FILE_END_ALLOW_THREADS(f)
-        if (chunksize == 0) {
-            if (!ferror(f->f_fp))
-                break;
-            clearerr(f->f_fp);
-            /* When in non-blocking mode, data shouldn't
-             * be discarded if a blocking signal was
-             * received. That will also happen if
-             * chunksize != 0, but bytesread < buffersize. */
-            if (bytesread > 0 && BLOCKED_ERRNO(errno))
-                break;
-            PyErr_SetFromErrno(PyExc_IOError);
-            Py_DECREF(v);
-            return NULL;
-        }
-        bytesread += chunksize;
-        if (bytesread < buffersize) {
-            clearerr(f->f_fp);
-            break;
-        }
-        if (bytesrequested < 0) {
-            buffersize = new_buffersize(f, buffersize);
-            if (_PyString_Resize(&v, buffersize) < 0)
-                return NULL;
-        } else {
-            /* Got what was requested. */
-            break;
-        }
-    }
-    if (bytesread != buffersize && _PyString_Resize(&v, bytesread))
-        return NULL;
-    return v;
-}
-
-static PyObject *
-file_readinto(PyFileObject *f, PyObject *args)
-{
-    char *ptr;
-    Py_ssize_t ntodo;
-    Py_ssize_t ndone, nnow;
-    Py_buffer pbuf;
-
-    if (f->f_fp == NULL)
-        return err_closed();
-    if (!f->readable)
-        return err_mode("reading");
-    /* refuse to mix with f.next() */
-    if (f->f_buf != NULL &&
-        (f->f_bufend - f->f_bufptr) > 0 &&
-        f->f_buf[0] != '\0')
-        return err_iterbuffered();
-    if (!PyArg_ParseTuple(args, "w*", &pbuf))
-        return NULL;
-    ptr = pbuf.buf;
-    ntodo = pbuf.len;
-    ndone = 0;
-    while (ntodo > 0) {
-        FILE_BEGIN_ALLOW_THREADS(f)
-        errno = 0;
-        nnow = Py_UniversalNewlineFread(ptr+ndone, ntodo, f->f_fp,
-                                        (PyObject *)f);
-        FILE_END_ALLOW_THREADS(f)
-        if (nnow == 0) {
-            if (!ferror(f->f_fp))
-                break;
-            PyErr_SetFromErrno(PyExc_IOError);
-            clearerr(f->f_fp);
-            PyBuffer_Release(&pbuf);
-            return NULL;
-        }
-        ndone += nnow;
-        ntodo -= nnow;
-    }
-    PyBuffer_Release(&pbuf);
-    return PyInt_FromSsize_t(ndone);
-}
-
-/**************************************************************************
-Routine to get next line using platform fgets().
-
-Under MSVC 6:
-
-+ MS threadsafe getc is very slow (multiple layers of function calls before+
-  after each character, to lock+unlock the stream).
-+ The stream-locking functions are MS-internal -- can't access them from user
-  code.
-+ There's nothing Tim could find in the MS C or platform SDK libraries that
-  can worm around this.
-+ MS fgets locks/unlocks only once per line; it's the only hook we have.
-
-So we use fgets for speed(!), despite that it's painful.
-
-MS realloc is also slow.
-
-Reports from other platforms on this method vs getc_unlocked (which MS doesn't
-have):
-    Linux               a wash
-    Solaris             a wash
-    Tru64 Unix          getline_via_fgets significantly faster
-
-CAUTION:  The C std isn't clear about this:  in those cases where fgets
-writes something into the buffer, can it write into any position beyond the
-required trailing null byte?  MSVC 6 fgets does not, and no platform is (yet)
-known on which it does; and it would be a strange way to code fgets. Still,
-getline_via_fgets may not work correctly if it does.  The std test
-test_bufio.py should fail if platform fgets() routinely writes beyond the
-trailing null byte.  #define DONT_USE_FGETS_IN_GETLINE to disable this code.
-**************************************************************************/
-
-/* Use this routine if told to, or by default on non-get_unlocked()
- * platforms unless told not to.  Yikes!  Let's spell that out:
- * On a platform with getc_unlocked():
- *     By default, use getc_unlocked().
- *     If you want to use fgets() instead, #define USE_FGETS_IN_GETLINE.
- * On a platform without getc_unlocked():
- *     By default, use fgets().
- *     If you don't want to use fgets(), #define DONT_USE_FGETS_IN_GETLINE.
- */
-#if !defined(USE_FGETS_IN_GETLINE) && !defined(HAVE_GETC_UNLOCKED)
-#define USE_FGETS_IN_GETLINE
-#endif
-
-#if defined(DONT_USE_FGETS_IN_GETLINE) && defined(USE_FGETS_IN_GETLINE)
-#undef USE_FGETS_IN_GETLINE
-#endif
-
-#ifdef USE_FGETS_IN_GETLINE
-static PyObject*
-getline_via_fgets(PyFileObject *f, FILE *fp)
-{
-/* INITBUFSIZE is the maximum line length that lets us get away with the fast
- * no-realloc, one-fgets()-call path.  Boosting it isn't free, because we have
- * to fill this much of the buffer with a known value in order to figure out
- * how much of the buffer fgets() overwrites.  So if INITBUFSIZE is larger
- * than "most" lines, we waste time filling unused buffer slots.  100 is
- * surely adequate for most peoples' email archives, chewing over source code,
- * etc -- "regular old text files".
- * MAXBUFSIZE is the maximum line length that lets us get away with the less
- * fast (but still zippy) no-realloc, two-fgets()-call path.  See above for
- * cautions about boosting that.  300 was chosen because the worst real-life
- * text-crunching job reported on Python-Dev was a mail-log crawler where over
- * half the lines were 254 chars.
- */
-#define INITBUFSIZE 100
-#define MAXBUFSIZE 300
-    char* p;            /* temp */
-    char buf[MAXBUFSIZE];
-    PyObject* v;        /* the string object result */
-    char* pvfree;       /* address of next free slot */
-    char* pvend;    /* address one beyond last free slot */
-    size_t nfree;       /* # of free buffer slots; pvend-pvfree */
-    size_t total_v_size;  /* total # of slots in buffer */
-    size_t increment;           /* amount to increment the buffer */
-    size_t prev_v_size;
-
-    /* Optimize for normal case:  avoid _PyString_Resize if at all
-     * possible via first reading into stack buffer "buf".
-     */
-    total_v_size = INITBUFSIZE;         /* start small and pray */
-    pvfree = buf;
-    for (;;) {
-        FILE_BEGIN_ALLOW_THREADS(f)
-        pvend = buf + total_v_size;
-        nfree = pvend - pvfree;
-        memset(pvfree, '\n', nfree);
-        assert(nfree < INT_MAX); /* Should be atmost MAXBUFSIZE */
-        p = fgets(pvfree, (int)nfree, fp);
-        FILE_END_ALLOW_THREADS(f)
-
-        if (p == NULL) {
-            clearerr(fp);
-            if (PyErr_CheckSignals())
-                return NULL;
-            v = PyString_FromStringAndSize(buf, pvfree - buf);
-            return v;
-        }
-        /* fgets read *something* */
-        p = memchr(pvfree, '\n', nfree);
-        if (p != NULL) {
-            /* Did the \n come from fgets or from us?
-             * Since fgets stops at the first \n, and then writes
-             * \0, if it's from fgets a \0 must be next.  But if
-             * that's so, it could not have come from us, since
-             * the \n's we filled the buffer with have only more
-             * \n's to the right.
-             */
-            if (p+1 < pvend && *(p+1) == '\0') {
-                /* It's from fgets:  we win!  In particular,
-                 * we haven't done any mallocs yet, and can
-                 * build the final result on the first try.
-                 */
-                ++p;                    /* include \n from fgets */
-            }
-            else {
-                /* Must be from us:  fgets didn't fill the
-                 * buffer and didn't find a newline, so it
-                 * must be the last and newline-free line of
-                 * the file.
-                 */
-                assert(p > pvfree && *(p-1) == '\0');
-                --p;                    /* don't include \0 from fgets */
-            }
-            v = PyString_FromStringAndSize(buf, p - buf);
-            return v;
-        }
-        /* yuck:  fgets overwrote all the newlines, i.e. the entire
-         * buffer.  So this line isn't over yet, or maybe it is but
-         * we're exactly at EOF.  If we haven't already, try using the
-         * rest of the stack buffer.
-         */
-        assert(*(pvend-1) == '\0');
-        if (pvfree == buf) {
-            pvfree = pvend - 1;                 /* overwrite trailing null */
-            total_v_size = MAXBUFSIZE;
-        }
-        else
-            break;
-    }
-
-    /* The stack buffer isn't big enough; malloc a string object and read
-     * into its buffer.
-     */
-    total_v_size = MAXBUFSIZE << 1;
-    v = PyString_FromStringAndSize((char*)NULL, (int)total_v_size);
-    if (v == NULL)
-        return v;
-    /* copy over everything except the last null byte */
-    memcpy(BUF(v), buf, MAXBUFSIZE-1);
-    pvfree = BUF(v) + MAXBUFSIZE - 1;
-
-    /* Keep reading stuff into v; if it ever ends successfully, break
-     * after setting p one beyond the end of the line.  The code here is
-     * very much like the code above, except reads into v's buffer; see
-     * the code above for detailed comments about the logic.
-     */
-    for (;;) {
-        FILE_BEGIN_ALLOW_THREADS(f)
-        pvend = BUF(v) + total_v_size;
-        nfree = pvend - pvfree;
-        memset(pvfree, '\n', nfree);
-        assert(nfree < INT_MAX);
-        p = fgets(pvfree, (int)nfree, fp);
-        FILE_END_ALLOW_THREADS(f)
-
-        if (p == NULL) {
-            clearerr(fp);
-            if (PyErr_CheckSignals()) {
-                Py_DECREF(v);
-                return NULL;
-            }
-            p = pvfree;
-            break;
-        }
-        p = memchr(pvfree, '\n', nfree);
-        if (p != NULL) {
-            if (p+1 < pvend && *(p+1) == '\0') {
-                /* \n came from fgets */
-                ++p;
-                break;
-            }
-            /* \n came from us; last line of file, no newline */
-            assert(p > pvfree && *(p-1) == '\0');
-            --p;
-            break;
-        }
-        /* expand buffer and try again */
-        assert(*(pvend-1) == '\0');
-        increment = total_v_size >> 2;          /* mild exponential growth */
-        prev_v_size = total_v_size;
-        total_v_size += increment;
-        /* check for overflow */
-        if (total_v_size <= prev_v_size ||
-            total_v_size > PY_SSIZE_T_MAX) {
-            PyErr_SetString(PyExc_OverflowError,
-                "line is longer than a Python string can hold");
-            Py_DECREF(v);
-            return NULL;
-        }
-        if (_PyString_Resize(&v, (int)total_v_size) < 0)
-            return NULL;
-        /* overwrite the trailing null byte */
-        pvfree = BUF(v) + (prev_v_size - 1);
-    }
-    if (BUF(v) + total_v_size != p && _PyString_Resize(&v, p - BUF(v)))
-        return NULL;
-    return v;
-#undef INITBUFSIZE
-#undef MAXBUFSIZE
-}
-#endif  /* ifdef USE_FGETS_IN_GETLINE */
-
-/* Internal routine to get a line.
-   Size argument interpretation:
-   > 0: max length;
-   <= 0: read arbitrary line
-*/
-
-static PyObject *
-get_line(PyFileObject *f, int n)
-{
-    FILE *fp = f->f_fp;
-    int c;
-    char *buf, *end;
-    size_t total_v_size;        /* total # of slots in buffer */
-    size_t used_v_size;         /* # used slots in buffer */
-    size_t increment;       /* amount to increment the buffer */
-    PyObject *v;
-    int newlinetypes = f->f_newlinetypes;
-    int skipnextlf = f->f_skipnextlf;
-    int univ_newline = f->f_univ_newline;
-
-#if defined(USE_FGETS_IN_GETLINE)
-    if (n <= 0 && !univ_newline )
-        return getline_via_fgets(f, fp);
-#endif
-    total_v_size = n > 0 ? n : 100;
-    v = PyString_FromStringAndSize((char *)NULL, total_v_size);
-    if (v == NULL)
-        return NULL;
-    buf = BUF(v);
-    end = buf + total_v_size;
-
-    for (;;) {
-        FILE_BEGIN_ALLOW_THREADS(f)
-        FLOCKFILE(fp);
-        if (univ_newline) {
-            c = 'x'; /* Shut up gcc warning */
-            while ( buf != end && (c = GETC(fp)) != EOF ) {
-                if (skipnextlf ) {
-                    skipnextlf = 0;
-                    if (c == '\n') {
-                        /* Seeing a \n here with
-                         * skipnextlf true means we
-                         * saw a \r before.
-                         */
-                        newlinetypes |= NEWLINE_CRLF;
-                        c = GETC(fp);
-                        if (c == EOF) break;
-                    } else {
-                        newlinetypes |= NEWLINE_CR;
-                    }
-                }
-                if (c == '\r') {
-                    skipnextlf = 1;
-                    c = '\n';
-                } else if ( c == '\n')
-                    newlinetypes |= NEWLINE_LF;
-                *buf++ = c;
-                if (c == '\n') break;
-            }
-            if ( c == EOF && skipnextlf )
-                newlinetypes |= NEWLINE_CR;
-        } else /* If not universal newlines use the normal loop */
-        while ((c = GETC(fp)) != EOF &&
-               (*buf++ = c) != '\n' &&
-            buf != end)
-            ;
-        FUNLOCKFILE(fp);
-        FILE_END_ALLOW_THREADS(f)
-        f->f_newlinetypes = newlinetypes;
-        f->f_skipnextlf = skipnextlf;
-        if (c == '\n')
-            break;
-        if (c == EOF) {
-            if (ferror(fp)) {
-                PyErr_SetFromErrno(PyExc_IOError);
-                clearerr(fp);
-                Py_DECREF(v);
-                return NULL;
-            }
-            clearerr(fp);
-            if (PyErr_CheckSignals()) {
-                Py_DECREF(v);
-                return NULL;
-            }
-            break;
-        }
-        /* Must be because buf == end */
-        if (n > 0)
-            break;
-        used_v_size = total_v_size;
-        increment = total_v_size >> 2; /* mild exponential growth */
-        total_v_size += increment;
-        if (total_v_size > PY_SSIZE_T_MAX) {
-            PyErr_SetString(PyExc_OverflowError,
-                "line is longer than a Python string can hold");
-            Py_DECREF(v);
-            return NULL;
-        }
-        if (_PyString_Resize(&v, total_v_size) < 0)
-            return NULL;
-        buf = BUF(v) + used_v_size;
-        end = BUF(v) + total_v_size;
-    }
-
-    used_v_size = buf - BUF(v);
-    if (used_v_size != total_v_size && _PyString_Resize(&v, used_v_size))
-        return NULL;
-    return v;
-}
-
-/* External C interface */
-
-PyObject *
-PyFile_GetLine(PyObject *f, int n)
-{
-    PyObject *result;
-
-    if (f == NULL) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-
-    if (PyFile_Check(f)) {
-        PyFileObject *fo = (PyFileObject *)f;
-        if (fo->f_fp == NULL)
-            return err_closed();
-        if (!fo->readable)
-            return err_mode("reading");
-        /* refuse to mix with f.next() */
-        if (fo->f_buf != NULL &&
-            (fo->f_bufend - fo->f_bufptr) > 0 &&
-            fo->f_buf[0] != '\0')
-            return err_iterbuffered();
-        result = get_line(fo, n);
-    }
-    else {
-        PyObject *reader;
-        PyObject *args;
-
-        reader = PyObject_GetAttrString(f, "readline");
-        if (reader == NULL)
-            return NULL;
-        if (n <= 0)
-            args = PyTuple_New(0);
-        else
-            args = Py_BuildValue("(i)", n);
-        if (args == NULL) {
-            Py_DECREF(reader);
-            return NULL;
-        }
-        result = PyEval_CallObject(reader, args);
-        Py_DECREF(reader);
-        Py_DECREF(args);
-        if (result != NULL && !PyString_Check(result) &&
-            !PyUnicode_Check(result)) {
-            Py_DECREF(result);
-            result = NULL;
-            PyErr_SetString(PyExc_TypeError,
-                       "object.readline() returned non-string");
-        }
-    }
-
-    if (n < 0 && result != NULL && PyString_Check(result)) {
-        char *s = PyString_AS_STRING(result);
-        Py_ssize_t len = PyString_GET_SIZE(result);
-        if (len == 0) {
-            Py_DECREF(result);
-            result = NULL;
-            PyErr_SetString(PyExc_EOFError,
-                            "EOF when reading a line");
-        }
-        else if (s[len-1] == '\n') {
-            if (result->ob_refcnt == 1) {
-                if (_PyString_Resize(&result, len-1))
-                    return NULL;
-            }
-            else {
-                PyObject *v;
-                v = PyString_FromStringAndSize(s, len-1);
-                Py_DECREF(result);
-                result = v;
-            }
-        }
-    }
-#ifdef Py_USING_UNICODE
-    if (n < 0 && result != NULL && PyUnicode_Check(result)) {
-        Py_UNICODE *s = PyUnicode_AS_UNICODE(result);
-        Py_ssize_t len = PyUnicode_GET_SIZE(result);
-        if (len == 0) {
-            Py_DECREF(result);
-            result = NULL;
-            PyErr_SetString(PyExc_EOFError,
-                            "EOF when reading a line");
-        }
-        else if (s[len-1] == '\n') {
-            if (result->ob_refcnt == 1)
-                PyUnicode_Resize(&result, len-1);
-            else {
-                PyObject *v;
-                v = PyUnicode_FromUnicode(s, len-1);
-                Py_DECREF(result);
-                result = v;
-            }
-        }
-    }
-#endif
-    return result;
-}
-
-/* Python method */
-
-static PyObject *
-file_readline(PyFileObject *f, PyObject *args)
-{
-    int n = -1;
-
-    if (f->f_fp == NULL)
-        return err_closed();
-    if (!f->readable)
-        return err_mode("reading");
-    /* refuse to mix with f.next() */
-    if (f->f_buf != NULL &&
-        (f->f_bufend - f->f_bufptr) > 0 &&
-        f->f_buf[0] != '\0')
-        return err_iterbuffered();
-    if (!PyArg_ParseTuple(args, "|i:readline", &n))
-        return NULL;
-    if (n == 0)
-        return PyString_FromString("");
-    if (n < 0)
-        n = 0;
-    return get_line(f, n);
-}
-
-static PyObject *
-file_readlines(PyFileObject *f, PyObject *args)
-{
-    long sizehint = 0;
-    PyObject *list = NULL;
-    PyObject *line;
-    char small_buffer[SMALLCHUNK];
-    char *buffer = small_buffer;
-    size_t buffersize = SMALLCHUNK;
-    PyObject *big_buffer = NULL;
-    size_t nfilled = 0;
-    size_t nread;
-    size_t totalread = 0;
-    char *p, *q, *end;
-    int err;
-    int shortread = 0;
-
-    if (f->f_fp == NULL)
-        return err_closed();
-    if (!f->readable)
-        return err_mode("reading");
-    /* refuse to mix with f.next() */
-    if (f->f_buf != NULL &&
-        (f->f_bufend - f->f_bufptr) > 0 &&
-        f->f_buf[0] != '\0')
-        return err_iterbuffered();
-    if (!PyArg_ParseTuple(args, "|l:readlines", &sizehint))
-        return NULL;
-    if ((list = PyList_New(0)) == NULL)
-        return NULL;
-    for (;;) {
-        if (shortread)
-            nread = 0;
-        else {
-            FILE_BEGIN_ALLOW_THREADS(f)
-            errno = 0;
-            nread = Py_UniversalNewlineFread(buffer+nfilled,
-                buffersize-nfilled, f->f_fp, (PyObject *)f);
-            FILE_END_ALLOW_THREADS(f)
-            shortread = (nread < buffersize-nfilled);
-        }
-        if (nread == 0) {
-            sizehint = 0;
-            if (!ferror(f->f_fp))
-                break;
-            PyErr_SetFromErrno(PyExc_IOError);
-            clearerr(f->f_fp);
-            goto error;
-        }
-        totalread += nread;
-        p = (char *)memchr(buffer+nfilled, '\n', nread);
-        if (p == NULL) {
-            /* Need a larger buffer to fit this line */
-            nfilled += nread;
-            buffersize *= 2;
-            if (buffersize > PY_SSIZE_T_MAX) {
-                PyErr_SetString(PyExc_OverflowError,
-                "line is longer than a Python string can hold");
-                goto error;
-            }
-            if (big_buffer == NULL) {
-                /* Create the big buffer */
-                big_buffer = PyString_FromStringAndSize(
-                    NULL, buffersize);
-                if (big_buffer == NULL)
-                    goto error;
-                buffer = PyString_AS_STRING(big_buffer);
-                memcpy(buffer, small_buffer, nfilled);
-            }
-            else {
-                /* Grow the big buffer */
-                if ( _PyString_Resize(&big_buffer, buffersize) < 0 )
-                    goto error;
-                buffer = PyString_AS_STRING(big_buffer);
-            }
-            continue;
-        }
-        end = buffer+nfilled+nread;
-        q = buffer;
-        do {
-            /* Process complete lines */
-            p++;
-            line = PyString_FromStringAndSize(q, p-q);
-            if (line == NULL)
-                goto error;
-            err = PyList_Append(list, line);
-            Py_DECREF(line);
-            if (err != 0)
-                goto error;
-            q = p;
-            p = (char *)memchr(q, '\n', end-q);
-        } while (p != NULL);
-        /* Move the remaining incomplete line to the start */
-        nfilled = end-q;
-        memmove(buffer, q, nfilled);
-        if (sizehint > 0)
-            if (totalread >= (size_t)sizehint)
-                break;
-    }
-    if (nfilled != 0) {
-        /* Partial last line */
-        line = PyString_FromStringAndSize(buffer, nfilled);
-        if (line == NULL)
-            goto error;
-        if (sizehint > 0) {
-            /* Need to complete the last line */
-            PyObject *rest = get_line(f, 0);
-            if (rest == NULL) {
-                Py_DECREF(line);
-                goto error;
-            }
-            PyString_Concat(&line, rest);
-            Py_DECREF(rest);
-            if (line == NULL)
-                goto error;
-        }
-        err = PyList_Append(list, line);
-        Py_DECREF(line);
-        if (err != 0)
-            goto error;
-    }
-
-cleanup:
-    Py_XDECREF(big_buffer);
-    return list;
-
-error:
-    Py_CLEAR(list);
-    goto cleanup;
-}
-
-static PyObject *
-file_write(PyFileObject *f, PyObject *args)
-{
-    Py_buffer pbuf;
-    const char *s;
-    Py_ssize_t n, n2;
-    PyObject *encoded = NULL;
-
-    if (f->f_fp == NULL)
-        return err_closed();
-    if (!f->writable)
-        return err_mode("writing");
-    if (f->f_binary) {
-        if (!PyArg_ParseTuple(args, "s*", &pbuf))
-            return NULL;
-        s = pbuf.buf;
-        n = pbuf.len;
-    }
-    else {
-        const char *encoding, *errors;
-        PyObject *text;
-        if (!PyArg_ParseTuple(args, "O", &text))
-            return NULL;
-
-        if (PyString_Check(text)) {
-            s = PyString_AS_STRING(text);
-            n = PyString_GET_SIZE(text);
-        } else if (PyUnicode_Check(text)) {
-            if (f->f_encoding != Py_None)
-                encoding = PyString_AS_STRING(f->f_encoding);
-            else
-                encoding = PyUnicode_GetDefaultEncoding();
-            if (f->f_errors != Py_None)
-                errors = PyString_AS_STRING(f->f_errors);
-            else
-                errors = "strict";
-            encoded = PyUnicode_AsEncodedString(text, encoding, errors);
-            if (encoded == NULL)
-                return NULL;
-            s = PyString_AS_STRING(encoded);
-            n = PyString_GET_SIZE(encoded);
-        } else {
-            if (PyObject_AsCharBuffer(text, &s, &n))
-                return NULL;
-        }
-    }
-    f->f_softspace = 0;
-    FILE_BEGIN_ALLOW_THREADS(f)
-    errno = 0;
-    n2 = fwrite(s, 1, n, f->f_fp);
-    FILE_END_ALLOW_THREADS(f)
-    Py_XDECREF(encoded);
-    if (f->f_binary)
-        PyBuffer_Release(&pbuf);
-    if (n2 != n) {
-        PyErr_SetFromErrno(PyExc_IOError);
-        clearerr(f->f_fp);
-        return NULL;
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-file_writelines(PyFileObject *f, PyObject *seq)
-{
-#define CHUNKSIZE 1000
-    PyObject *list, *line;
-    PyObject *it;       /* iter(seq) */
-    PyObject *result;
-    int index, islist;
-    Py_ssize_t i, j, nwritten, len;
-
-    assert(seq != NULL);
-    if (f->f_fp == NULL)
-        return err_closed();
-    if (!f->writable)
-        return err_mode("writing");
-
-    result = NULL;
-    list = NULL;
-    islist = PyList_Check(seq);
-    if  (islist)
-        it = NULL;
-    else {
-        it = PyObject_GetIter(seq);
-        if (it == NULL) {
-            PyErr_SetString(PyExc_TypeError,
-                "writelines() requires an iterable argument");
-            return NULL;
-        }
-        /* From here on, fail by going to error, to reclaim "it". */
-        list = PyList_New(CHUNKSIZE);
-        if (list == NULL)
-            goto error;
-    }
-
-    /* Strategy: slurp CHUNKSIZE lines into a private list,
-       checking that they are all strings, then write that list
-       without holding the interpreter lock, then come back for more. */
-    for (index = 0; ; index += CHUNKSIZE) {
-        if (islist) {
-            Py_XDECREF(list);
-            list = PyList_GetSlice(seq, index, index+CHUNKSIZE);
-            if (list == NULL)
-                goto error;
-            j = PyList_GET_SIZE(list);
-        }
-        else {
-            for (j = 0; j < CHUNKSIZE; j++) {
-                line = PyIter_Next(it);
-                if (line == NULL) {
-                    if (PyErr_Occurred())
-                        goto error;
-                    break;
-                }
-                PyList_SetItem(list, j, line);
-            }
-            /* The iterator might have closed the file on us. */
-            if (f->f_fp == NULL) {
-                err_closed();
-                goto error;
-            }
-        }
-        if (j == 0)
-            break;
-
-        /* Check that all entries are indeed strings. If not,
-           apply the same rules as for file.write() and
-           convert the results to strings. This is slow, but
-           seems to be the only way since all conversion APIs
-           could potentially execute Python code. */
-        for (i = 0; i < j; i++) {
-            PyObject *v = PyList_GET_ITEM(list, i);
-            if (!PyString_Check(v)) {
-                const char *buffer;
-                if (((f->f_binary &&
-                      PyObject_AsReadBuffer(v,
-                          (const void**)&buffer,
-                                        &len)) ||
-                     PyObject_AsCharBuffer(v,
-                                           &buffer,
-                                           &len))) {
-                    PyErr_SetString(PyExc_TypeError,
-            "writelines() argument must be a sequence of strings");
-                            goto error;
-                }
-                line = PyString_FromStringAndSize(buffer,
-                                                  len);
-                if (line == NULL)
-                    goto error;
-                Py_DECREF(v);
-                PyList_SET_ITEM(list, i, line);
-            }
-        }
-
-        /* Since we are releasing the global lock, the
-           following code may *not* execute Python code. */
-        f->f_softspace = 0;
-        FILE_BEGIN_ALLOW_THREADS(f)
-        errno = 0;
-        for (i = 0; i < j; i++) {
-            line = PyList_GET_ITEM(list, i);
-            len = PyString_GET_SIZE(line);
-            nwritten = fwrite(PyString_AS_STRING(line),
-                              1, len, f->f_fp);
-            if (nwritten != len) {
-                FILE_ABORT_ALLOW_THREADS(f)
-                PyErr_SetFromErrno(PyExc_IOError);
-                clearerr(f->f_fp);
-                goto error;
-            }
-        }
-        FILE_END_ALLOW_THREADS(f)
-
-        if (j < CHUNKSIZE)
-            break;
-    }
-
-    Py_INCREF(Py_None);
-    result = Py_None;
-  error:
-    Py_XDECREF(list);
-    Py_XDECREF(it);
-    return result;
-#undef CHUNKSIZE
-}
-
-static PyObject *
-file_self(PyFileObject *f)
-{
-    if (f->f_fp == NULL)
-        return err_closed();
-    Py_INCREF(f);
-    return (PyObject *)f;
-}
-
-static PyObject *
-file_xreadlines(PyFileObject *f)
-{
-    if (PyErr_WarnPy3k("f.xreadlines() not supported in 3.x, "
-                       "try 'for line in f' instead", 1) < 0)
-           return NULL;
-    return file_self(f);
-}
-
-static PyObject *
-file_exit(PyObject *f, PyObject *args)
-{
-    PyObject *ret = PyObject_CallMethod(f, "close", NULL);
-    if (!ret)
-        /* If error occurred, pass through */
-        return NULL;
-    Py_DECREF(ret);
-    /* We cannot return the result of close since a true
-     * value will be interpreted as "yes, swallow the
-     * exception if one was raised inside the with block". */
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(readline_doc,
-"readline([size]) -> next line from the file, as a string.\n"
-"\n"
-"Retain newline.  A non-negative size argument limits the maximum\n"
-"number of bytes to return (an incomplete line may be returned then).\n"
-"Return an empty string at EOF.");
-
-PyDoc_STRVAR(read_doc,
-"read([size]) -> read at most size bytes, returned as a string.\n"
-"\n"
-"If the size argument is negative or omitted, read until EOF is reached.\n"
-"Notice that when in non-blocking mode, less data than what was requested\n"
-"may be returned, even if no size parameter was given.");
-
-PyDoc_STRVAR(write_doc,
-"write(str) -> None.  Write string str to file.\n"
-"\n"
-"Note that due to buffering, flush() or close() may be needed before\n"
-"the file on disk reflects the data written.");
-
-PyDoc_STRVAR(fileno_doc,
-"fileno() -> integer \"file descriptor\".\n"
-"\n"
-"This is needed for lower-level file interfaces, such os.read().");
-
-PyDoc_STRVAR(seek_doc,
-"seek(offset[, whence]) -> None.  Move to new file position.\n"
-"\n"
-"Argument offset is a byte count.  Optional argument whence defaults to\n"
-"0 (offset from start of file, offset should be >= 0); other values are 1\n"
-"(move relative to current position, positive or negative), and 2 (move\n"
-"relative to end of file, usually negative, although many platforms allow\n"
-"seeking beyond the end of a file).  If the file is opened in text mode,\n"
-"only offsets returned by tell() are legal.  Use of other offsets causes\n"
-"undefined behavior."
-"\n"
-"Note that not all file objects are seekable.");
-
-#ifdef HAVE_FTRUNCATE
-PyDoc_STRVAR(truncate_doc,
-"truncate([size]) -> None.  Truncate the file to at most size bytes.\n"
-"\n"
-"Size defaults to the current file position, as returned by tell().");
-#endif
-
-PyDoc_STRVAR(tell_doc,
-"tell() -> current file position, an integer (may be a long integer).");
-
-PyDoc_STRVAR(readinto_doc,
-"readinto() -> Undocumented.  Don't use this; it may go away.");
-
-PyDoc_STRVAR(readlines_doc,
-"readlines([size]) -> list of strings, each a line from the file.\n"
-"\n"
-"Call readline() repeatedly and return a list of the lines so read.\n"
-"The optional size argument, if given, is an approximate bound on the\n"
-"total number of bytes in the lines returned.");
-
-PyDoc_STRVAR(xreadlines_doc,
-"xreadlines() -> returns self.\n"
-"\n"
-"For backward compatibility. File objects now include the performance\n"
-"optimizations previously implemented in the xreadlines module.");
-
-PyDoc_STRVAR(writelines_doc,
-"writelines(sequence_of_strings) -> None.  Write the strings to the file.\n"
-"\n"
-"Note that newlines are not added.  The sequence can be any iterable object\n"
-"producing strings. This is equivalent to calling write() for each string.");
-
-PyDoc_STRVAR(flush_doc,
-"flush() -> None.  Flush the internal I/O buffer.");
-
-PyDoc_STRVAR(close_doc,
-"close() -> None or (perhaps) an integer.  Close the file.\n"
-"\n"
-"Sets data attribute .closed to True.  A closed file cannot be used for\n"
-"further I/O operations.  close() may be called more than once without\n"
-"error.  Some kinds of file objects (for example, opened by popen())\n"
-"may return an exit status upon closing.");
-
-PyDoc_STRVAR(isatty_doc,
-"isatty() -> true or false.  True if the file is connected to a tty device.");
-
-PyDoc_STRVAR(enter_doc,
-             "__enter__() -> self.");
-
-PyDoc_STRVAR(exit_doc,
-             "__exit__(*excinfo) -> None.  Closes the file.");
-
-static PyMethodDef file_methods[] = {
-    {"readline",  (PyCFunction)file_readline, METH_VARARGS, readline_doc},
-    {"read",      (PyCFunction)file_read,     METH_VARARGS, read_doc},
-    {"write",     (PyCFunction)file_write,    METH_VARARGS, write_doc},
-    {"fileno",    (PyCFunction)file_fileno,   METH_NOARGS,  fileno_doc},
-    {"seek",      (PyCFunction)file_seek,     METH_VARARGS, seek_doc},
-#ifdef HAVE_FTRUNCATE
-    {"truncate",  (PyCFunction)file_truncate, METH_VARARGS, truncate_doc},
-#endif
-    {"tell",      (PyCFunction)file_tell,     METH_NOARGS,  tell_doc},
-    {"readinto",  (PyCFunction)file_readinto, METH_VARARGS, readinto_doc},
-    {"readlines", (PyCFunction)file_readlines, METH_VARARGS, readlines_doc},
-    {"xreadlines",(PyCFunction)file_xreadlines, METH_NOARGS, xreadlines_doc},
-    {"writelines",(PyCFunction)file_writelines, METH_O,     writelines_doc},
-    {"flush",     (PyCFunction)file_flush,    METH_NOARGS,  flush_doc},
-    {"close",     (PyCFunction)file_close,    METH_NOARGS,  close_doc},
-    {"isatty",    (PyCFunction)file_isatty,   METH_NOARGS,  isatty_doc},
-    {"__enter__", (PyCFunction)file_self,     METH_NOARGS,  enter_doc},
-    {"__exit__",  (PyCFunction)file_exit,     METH_VARARGS, exit_doc},
-    {NULL,            NULL}             /* sentinel */
-};
-
-#define OFF(x) offsetof(PyFileObject, x)
-
-static PyMemberDef file_memberlist[] = {
-    {"mode",            T_OBJECT,       OFF(f_mode),    RO,
-     "file mode ('r', 'U', 'w', 'a', possibly with 'b' or '+' added)"},
-    {"name",            T_OBJECT,       OFF(f_name),    RO,
-     "file name"},
-    {"encoding",        T_OBJECT,       OFF(f_encoding),        RO,
-     "file encoding"},
-    {"errors",          T_OBJECT,       OFF(f_errors),  RO,
-     "Unicode error handler"},
-    /* getattr(f, "closed") is implemented without this table */
-    {NULL}      /* Sentinel */
-};
-
-static PyObject *
-get_closed(PyFileObject *f, void *closure)
-{
-    return PyBool_FromLong((long)(f->f_fp == 0));
-}
-static PyObject *
-get_newlines(PyFileObject *f, void *closure)
-{
-    switch (f->f_newlinetypes) {
-    case NEWLINE_UNKNOWN:
-        Py_INCREF(Py_None);
-        return Py_None;
-    case NEWLINE_CR:
-        return PyString_FromString("\r");
-    case NEWLINE_LF:
-        return PyString_FromString("\n");
-    case NEWLINE_CR|NEWLINE_LF:
-        return Py_BuildValue("(ss)", "\r", "\n");
-    case NEWLINE_CRLF:
-        return PyString_FromString("\r\n");
-    case NEWLINE_CR|NEWLINE_CRLF:
-        return Py_BuildValue("(ss)", "\r", "\r\n");
-    case NEWLINE_LF|NEWLINE_CRLF:
-        return Py_BuildValue("(ss)", "\n", "\r\n");
-    case NEWLINE_CR|NEWLINE_LF|NEWLINE_CRLF:
-        return Py_BuildValue("(sss)", "\r", "\n", "\r\n");
-    default:
-        PyErr_Format(PyExc_SystemError,
-                     "Unknown newlines value 0x%x\n",
-                     f->f_newlinetypes);
-        return NULL;
-    }
-}
-
-static PyObject *
-get_softspace(PyFileObject *f, void *closure)
-{
-    if (PyErr_WarnPy3k("file.softspace not supported in 3.x", 1) < 0)
-        return NULL;
-    return PyInt_FromLong(f->f_softspace);
-}
-
-static int
-set_softspace(PyFileObject *f, PyObject *value)
-{
-    int new;
-    if (PyErr_WarnPy3k("file.softspace not supported in 3.x", 1) < 0)
-        return -1;
-
-    if (value == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "can't delete softspace attribute");
-        return -1;
-    }
-
-    new = PyInt_AsLong(value);
-    if (new == -1 && PyErr_Occurred())
-        return -1;
-    f->f_softspace = new;
-    return 0;
-}
-
-static PyGetSetDef file_getsetlist[] = {
-    {"closed", (getter)get_closed, NULL, "True if the file is closed"},
-    {"newlines", (getter)get_newlines, NULL,
-     "end-of-line convention used in this file"},
-    {"softspace", (getter)get_softspace, (setter)set_softspace,
-     "flag indicating that a space needs to be printed; used by print"},
-    {0},
-};
-
-static void
-drop_readahead(PyFileObject *f)
-{
-    if (f->f_buf != NULL) {
-        PyMem_Free(f->f_buf);
-        f->f_buf = NULL;
-    }
-}
-
-/* Make sure that file has a readahead buffer with at least one byte
-   (unless at EOF) and no more than bufsize.  Returns negative value on
-   error, will set MemoryError if bufsize bytes cannot be allocated. */
-static int
-readahead(PyFileObject *f, int bufsize)
-{
-    Py_ssize_t chunksize;
-
-    if (f->f_buf != NULL) {
-        if( (f->f_bufend - f->f_bufptr) >= 1)
-            return 0;
-        else
-            drop_readahead(f);
-    }
-    if ((f->f_buf = (char *)PyMem_Malloc(bufsize)) == NULL) {
-        PyErr_NoMemory();
-        return -1;
-    }
-    FILE_BEGIN_ALLOW_THREADS(f)
-    errno = 0;
-    chunksize = Py_UniversalNewlineFread(
-        f->f_buf, bufsize, f->f_fp, (PyObject *)f);
-    FILE_END_ALLOW_THREADS(f)
-    if (chunksize == 0) {
-        if (ferror(f->f_fp)) {
-            PyErr_SetFromErrno(PyExc_IOError);
-            clearerr(f->f_fp);
-            drop_readahead(f);
-            return -1;
-        }
-    }
-    f->f_bufptr = f->f_buf;
-    f->f_bufend = f->f_buf + chunksize;
-    return 0;
-}
-
-/* Used by file_iternext.  The returned string will start with 'skip'
-   uninitialized bytes followed by the remainder of the line. Don't be
-   horrified by the recursive call: maximum recursion depth is limited by
-   logarithmic buffer growth to about 50 even when reading a 1gb line. */
-
-static PyStringObject *
-readahead_get_line_skip(PyFileObject *f, int skip, int bufsize)
-{
-    PyStringObject* s;
-    char *bufptr;
-    char *buf;
-    Py_ssize_t len;
-
-    if (f->f_buf == NULL)
-        if (readahead(f, bufsize) < 0)
-            return NULL;
-
-    len = f->f_bufend - f->f_bufptr;
-    if (len == 0)
-        return (PyStringObject *)
-            PyString_FromStringAndSize(NULL, skip);
-    bufptr = (char *)memchr(f->f_bufptr, '\n', len);
-    if (bufptr != NULL) {
-        bufptr++;                               /* Count the '\n' */
-        len = bufptr - f->f_bufptr;
-        s = (PyStringObject *)
-            PyString_FromStringAndSize(NULL, skip+len);
-        if (s == NULL)
-            return NULL;
-        memcpy(PyString_AS_STRING(s)+skip, f->f_bufptr, len);
-        f->f_bufptr = bufptr;
-        if (bufptr == f->f_bufend)
-            drop_readahead(f);
-    } else {
-        bufptr = f->f_bufptr;
-        buf = f->f_buf;
-        f->f_buf = NULL;                /* Force new readahead buffer */
-        assert(skip+len < INT_MAX);
-        s = readahead_get_line_skip(
-            f, (int)(skip+len), bufsize + (bufsize>>2) );
-        if (s == NULL) {
-            PyMem_Free(buf);
-            return NULL;
-        }
-        memcpy(PyString_AS_STRING(s)+skip, bufptr, len);
-        PyMem_Free(buf);
-    }
-    return s;
-}
-
-/* A larger buffer size may actually decrease performance. */
-#define READAHEAD_BUFSIZE 8192
-
-static PyObject *
-file_iternext(PyFileObject *f)
-{
-    PyStringObject* l;
-
-    if (f->f_fp == NULL)
-        return err_closed();
-    if (!f->readable)
-        return err_mode("reading");
-
-    l = readahead_get_line_skip(f, 0, READAHEAD_BUFSIZE);
-    if (l == NULL || PyString_GET_SIZE(l) == 0) {
-        Py_XDECREF(l);
-        return NULL;
-    }
-    return (PyObject *)l;
-}
-
-
-static PyObject *
-file_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *self;
-    static PyObject *not_yet_string;
-
-    assert(type != NULL && type->tp_alloc != NULL);
-
-    if (not_yet_string == NULL) {
-        not_yet_string = PyString_InternFromString("<uninitialized file>");
-        if (not_yet_string == NULL)
-            return NULL;
-    }
-
-    self = type->tp_alloc(type, 0);
-    if (self != NULL) {
-        /* Always fill in the name and mode, so that nobody else
-           needs to special-case NULLs there. */
-        Py_INCREF(not_yet_string);
-        ((PyFileObject *)self)->f_name = not_yet_string;
-        Py_INCREF(not_yet_string);
-        ((PyFileObject *)self)->f_mode = not_yet_string;
-        Py_INCREF(Py_None);
-        ((PyFileObject *)self)->f_encoding = Py_None;
-        Py_INCREF(Py_None);
-        ((PyFileObject *)self)->f_errors = Py_None;
-        ((PyFileObject *)self)->weakreflist = NULL;
-        ((PyFileObject *)self)->unlocked_count = 0;
-    }
-    return self;
-}
-
-static int
-file_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    PyFileObject *foself = (PyFileObject *)self;
-    int ret = 0;
-    static char *kwlist[] = {"name", "mode", "buffering", 0};
-    char *name = NULL;
-    char *mode = "r";
-    int bufsize = -1;
-    int wideargument = 0;
-#ifdef MS_WINDOWS
-    PyObject *po;
-#endif
-
-    assert(PyFile_Check(self));
-    if (foself->f_fp != NULL) {
-        /* Have to close the existing file first. */
-        PyObject *closeresult = file_close(foself);
-        if (closeresult == NULL)
-            return -1;
-        Py_DECREF(closeresult);
-    }
-
-#ifdef MS_WINDOWS
-    if (PyArg_ParseTupleAndKeywords(args, kwds, "U|si:file",
-                                    kwlist, &po, &mode, &bufsize)) {
-        wideargument = 1;
-        if (fill_file_fields(foself, NULL, po, mode,
-                             fclose) == NULL)
-            goto Error;
-    } else {
-        /* Drop the argument parsing error as narrow
-           strings are also valid. */
-        PyErr_Clear();
-    }
-#endif
-
-    if (!wideargument) {
-        PyObject *o_name;
-
-        if (!PyArg_ParseTupleAndKeywords(args, kwds, "et|si:file", kwlist,
-                                         Py_FileSystemDefaultEncoding,
-                                         &name,
-                                         &mode, &bufsize))
-            return -1;
-
-        /* We parse again to get the name as a PyObject */
-        if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|si:file",
-                                         kwlist, &o_name, &mode,
-                                         &bufsize))
-            goto Error;
-
-        if (fill_file_fields(foself, NULL, o_name, mode,
-                             fclose) == NULL)
-            goto Error;
-    }
-    if (open_the_file(foself, name, mode) == NULL)
-        goto Error;
-    foself->f_setbuf = NULL;
-    PyFile_SetBufSize(self, bufsize);
-    goto Done;
-
-Error:
-    ret = -1;
-    /* fall through */
-Done:
-    PyMem_Free(name); /* free the encoded string */
-    return ret;
-}
-
-PyDoc_VAR(file_doc) =
-PyDoc_STR(
-"file(name[, mode[, buffering]]) -> file object\n"
-"\n"
-"Open a file.  The mode can be 'r', 'w' or 'a' for reading (default),\n"
-"writing or appending.  The file will be created if it doesn't exist\n"
-"when opened for writing or appending; it will be truncated when\n"
-"opened for writing.  Add a 'b' to the mode for binary files.\n"
-"Add a '+' to the mode to allow simultaneous reading and writing.\n"
-"If the buffering argument is given, 0 means unbuffered, 1 means line\n"
-"buffered, and larger numbers specify the buffer size.  The preferred way\n"
-"to open a file is with the builtin open() function.\n"
-)
-PyDoc_STR(
-"Add a 'U' to mode to open the file for input with universal newline\n"
-"support.  Any line ending in the input file will be seen as a '\\n'\n"
-"in Python.  Also, a file so opened gains the attribute 'newlines';\n"
-"the value for this attribute is one of None (no newline read yet),\n"
-"'\\r', '\\n', '\\r\\n' or a tuple containing all the newline types seen.\n"
-"\n"
-"'U' cannot be combined with 'w' or '+' mode.\n"
-);
-
-PyTypeObject PyFile_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "file",
-    sizeof(PyFileObject),
-    0,
-    (destructor)file_dealloc,                   /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)file_repr,                        /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    /* softspace is writable:  we must supply tp_setattro */
-    PyObject_GenericSetAttr,                    /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_WEAKREFS, /* tp_flags */
-    file_doc,                                   /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    offsetof(PyFileObject, weakreflist),        /* tp_weaklistoffset */
-    (getiterfunc)file_self,                     /* tp_iter */
-    (iternextfunc)file_iternext,                /* tp_iternext */
-    file_methods,                               /* tp_methods */
-    file_memberlist,                            /* tp_members */
-    file_getsetlist,                            /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    file_init,                                  /* tp_init */
-    PyType_GenericAlloc,                        /* tp_alloc */
-    file_new,                                   /* tp_new */
-    PyObject_Del,                           /* tp_free */
-};
-
-/* Interface for the 'soft space' between print items. */
-
-int
-PyFile_SoftSpace(PyObject *f, int newflag)
-{
-    long oldflag = 0;
-    if (f == NULL) {
-        /* Do nothing */
-    }
-    else if (PyFile_Check(f)) {
-        oldflag = ((PyFileObject *)f)->f_softspace;
-        ((PyFileObject *)f)->f_softspace = newflag;
-    }
-    else {
-        PyObject *v;
-        v = PyObject_GetAttrString(f, "softspace");
-        if (v == NULL)
-            PyErr_Clear();
-        else {
-            if (PyInt_Check(v))
-                oldflag = PyInt_AsLong(v);
-            assert(oldflag < INT_MAX);
-            Py_DECREF(v);
-        }
-        v = PyInt_FromLong((long)newflag);
-        if (v == NULL)
-            PyErr_Clear();
-        else {
-            if (PyObject_SetAttrString(f, "softspace", v) != 0)
-                PyErr_Clear();
-            Py_DECREF(v);
-        }
-    }
-    return (int)oldflag;
-}
-
-/* Interfaces to write objects/strings to file-like objects */
-
-int
-PyFile_WriteObject(PyObject *v, PyObject *f, int flags)
-{
-    PyObject *writer, *value, *args, *result;
-    if (f == NULL) {
-        PyErr_SetString(PyExc_TypeError, "writeobject with NULL file");
-        return -1;
-    }
-    else if (PyFile_Check(f)) {
-        PyFileObject *fobj = (PyFileObject *) f;
-#ifdef Py_USING_UNICODE
-        PyObject *enc = fobj->f_encoding;
-        int result;
-#endif
-        if (fobj->f_fp == NULL) {
-            err_closed();
-            return -1;
-        }
-#ifdef Py_USING_UNICODE
-        if ((flags & Py_PRINT_RAW) &&
-            PyUnicode_Check(v) && enc != Py_None) {
-            char *cenc = PyString_AS_STRING(enc);
-            char *errors = fobj->f_errors == Py_None ?
-              "strict" : PyString_AS_STRING(fobj->f_errors);
-            value = PyUnicode_AsEncodedString(v, cenc, errors);
-            if (value == NULL)
-                return -1;
-        } else {
-            value = v;
-            Py_INCREF(value);
-        }
-        result = file_PyObject_Print(value, fobj, flags);
-        Py_DECREF(value);
-        return result;
-#else
-        return file_PyObject_Print(v, fobj, flags);
-#endif
-    }
-    writer = PyObject_GetAttrString(f, "write");
-    if (writer == NULL)
-        return -1;
-    if (flags & Py_PRINT_RAW) {
-        if (PyUnicode_Check(v)) {
-            value = v;
-            Py_INCREF(value);
-        } else
-            value = PyObject_Str(v);
-    }
-    else
-        value = PyObject_Repr(v);
-    if (value == NULL) {
-        Py_DECREF(writer);
-        return -1;
-    }
-    args = PyTuple_Pack(1, value);
-    if (args == NULL) {
-        Py_DECREF(value);
-        Py_DECREF(writer);
-        return -1;
-    }
-    result = PyEval_CallObject(writer, args);
-    Py_DECREF(args);
-    Py_DECREF(value);
-    Py_DECREF(writer);
-    if (result == NULL)
-        return -1;
-    Py_DECREF(result);
-    return 0;
-}
-
-int
-PyFile_WriteString(const char *s, PyObject *f)
-{
-
-    if (f == NULL) {
-        /* Should be caused by a pre-existing error */
-        if (!PyErr_Occurred())
-            PyErr_SetString(PyExc_SystemError,
-                            "null file for PyFile_WriteString");
-        return -1;
-    }
-    else if (PyFile_Check(f)) {
-        PyFileObject *fobj = (PyFileObject *) f;
-        FILE *fp = PyFile_AsFile(f);
-        if (fp == NULL) {
-            err_closed();
-            return -1;
-        }
-        FILE_BEGIN_ALLOW_THREADS(fobj)
-        fputs(s, fp);
-        FILE_END_ALLOW_THREADS(fobj)
-        return 0;
-    }
-    else if (!PyErr_Occurred()) {
-        PyObject *v = PyString_FromString(s);
-        int err;
-        if (v == NULL)
-            return -1;
-        err = PyFile_WriteObject(v, f, Py_PRINT_RAW);
-        Py_DECREF(v);
-        return err;
-    }
-    else
-        return -1;
-}
-
-/* Try to get a file-descriptor from a Python object.  If the object
-   is an integer or long integer, its value is returned.  If not, the
-   object's fileno() method is called if it exists; the method must return
-   an integer or long integer, which is returned as the file descriptor value.
-   -1 is returned on failure.
-*/
-
-int PyObject_AsFileDescriptor(PyObject *o)
-{
-    int fd;
-    PyObject *meth;
-
-    if (PyInt_Check(o)) {
-        fd = PyInt_AsLong(o);
-    }
-    else if (PyLong_Check(o)) {
-        fd = PyLong_AsLong(o);
-    }
-    else if ((meth = PyObject_GetAttrString(o, "fileno")) != NULL)
-    {
-        PyObject *fno = PyEval_CallObject(meth, NULL);
-        Py_DECREF(meth);
-        if (fno == NULL)
-            return -1;
-
-        if (PyInt_Check(fno)) {
-            fd = PyInt_AsLong(fno);
-            Py_DECREF(fno);
-        }
-        else if (PyLong_Check(fno)) {
-            fd = PyLong_AsLong(fno);
-            Py_DECREF(fno);
-        }
-        else {
-            PyErr_SetString(PyExc_TypeError,
-                            "fileno() returned a non-integer");
-            Py_DECREF(fno);
-            return -1;
-        }
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "argument must be an int, or have a fileno() method.");
-        return -1;
-    }
-
-    if (fd < 0) {
-        PyErr_Format(PyExc_ValueError,
-                     "file descriptor cannot be a negative integer (%i)",
-                     fd);
-        return -1;
-    }
-    return fd;
-}
-
-/* From here on we need access to the real fgets and fread */
-#undef fgets
-#undef fread
-
-/*
-** Py_UniversalNewlineFgets is an fgets variation that understands
-** all of \r, \n and \r\n conventions.
-** The stream should be opened in binary mode.
-** If fobj is NULL the routine always does newline conversion, and
-** it may peek one char ahead to gobble the second char in \r\n.
-** If fobj is non-NULL it must be a PyFileObject. In this case there
-** is no readahead but in stead a flag is used to skip a following
-** \n on the next read. Also, if the file is open in binary mode
-** the whole conversion is skipped. Finally, the routine keeps track of
-** the different types of newlines seen.
-** Note that we need no error handling: fgets() treats error and eof
-** identically.
-*/
-char *
-Py_UniversalNewlineFgets(char *buf, int n, FILE *stream, PyObject *fobj)
-{
-    char *p = buf;
-    int c;
-    int newlinetypes = 0;
-    int skipnextlf = 0;
-    int univ_newline = 1;
-
-    if (fobj) {
-        if (!PyFile_Check(fobj)) {
-            errno = ENXIO;              /* What can you do... */
-            return NULL;
-        }
-        univ_newline = ((PyFileObject *)fobj)->f_univ_newline;
-        if ( !univ_newline )
-            return fgets(buf, n, stream);
-        newlinetypes = ((PyFileObject *)fobj)->f_newlinetypes;
-        skipnextlf = ((PyFileObject *)fobj)->f_skipnextlf;
-    }
-    FLOCKFILE(stream);
-    c = 'x'; /* Shut up gcc warning */
-    while (--n > 0 && (c = GETC(stream)) != EOF ) {
-        if (skipnextlf ) {
-            skipnextlf = 0;
-            if (c == '\n') {
-                /* Seeing a \n here with skipnextlf true
-                ** means we saw a \r before.
-                */
-                newlinetypes |= NEWLINE_CRLF;
-                c = GETC(stream);
-                if (c == EOF) break;
-            } else {
-                /*
-                ** Note that c == EOF also brings us here,
-                ** so we're okay if the last char in the file
-                ** is a CR.
-                */
-                newlinetypes |= NEWLINE_CR;
-            }
-        }
-        if (c == '\r') {
-            /* A \r is translated into a \n, and we skip
-            ** an adjacent \n, if any. We don't set the
-            ** newlinetypes flag until we've seen the next char.
-            */
-            skipnextlf = 1;
-            c = '\n';
-        } else if ( c == '\n') {
-            newlinetypes |= NEWLINE_LF;
-        }
-        *p++ = c;
-        if (c == '\n') break;
-    }
-    if ( c == EOF && skipnextlf )
-        newlinetypes |= NEWLINE_CR;
-    FUNLOCKFILE(stream);
-    *p = '\0';
-    if (fobj) {
-        ((PyFileObject *)fobj)->f_newlinetypes = newlinetypes;
-        ((PyFileObject *)fobj)->f_skipnextlf = skipnextlf;
-    } else if ( skipnextlf ) {
-        /* If we have no file object we cannot save the
-        ** skipnextlf flag. We have to readahead, which
-        ** will cause a pause if we're reading from an
-        ** interactive stream, but that is very unlikely
-        ** unless we're doing something silly like
-        ** execfile("/dev/tty").
-        */
-        c = GETC(stream);
-        if ( c != '\n' )
-            ungetc(c, stream);
-    }
-    if (p == buf)
-        return NULL;
-    return buf;
-}
-
-/*
-** Py_UniversalNewlineFread is an fread variation that understands
-** all of \r, \n and \r\n conventions.
-** The stream should be opened in binary mode.
-** fobj must be a PyFileObject. In this case there
-** is no readahead but in stead a flag is used to skip a following
-** \n on the next read. Also, if the file is open in binary mode
-** the whole conversion is skipped. Finally, the routine keeps track of
-** the different types of newlines seen.
-*/
-size_t
-Py_UniversalNewlineFread(char *buf, size_t n,
-                         FILE *stream, PyObject *fobj)
-{
-    char *dst = buf;
-    PyFileObject *f = (PyFileObject *)fobj;
-    int newlinetypes, skipnextlf;
-
-    assert(buf != NULL);
-    assert(stream != NULL);
-
-    if (!fobj || !PyFile_Check(fobj)) {
-        errno = ENXIO;          /* What can you do... */
-        return 0;
-    }
-    if (!f->f_univ_newline)
-        return fread(buf, 1, n, stream);
-    newlinetypes = f->f_newlinetypes;
-    skipnextlf = f->f_skipnextlf;
-    /* Invariant:  n is the number of bytes remaining to be filled
-     * in the buffer.
-     */
-    while (n) {
-        size_t nread;
-        int shortread;
-        char *src = dst;
-
-        nread = fread(dst, 1, n, stream);
-        assert(nread <= n);
-        if (nread == 0)
-            break;
-
-        n -= nread; /* assuming 1 byte out for each in; will adjust */
-        shortread = n != 0;             /* true iff EOF or error */
-        while (nread--) {
-            char c = *src++;
-            if (c == '\r') {
-                /* Save as LF and set flag to skip next LF. */
-                *dst++ = '\n';
-                skipnextlf = 1;
-            }
-            else if (skipnextlf && c == '\n') {
-                /* Skip LF, and remember we saw CR LF. */
-                skipnextlf = 0;
-                newlinetypes |= NEWLINE_CRLF;
-                ++n;
-            }
-            else {
-                /* Normal char to be stored in buffer.  Also
-                 * update the newlinetypes flag if either this
-                 * is an LF or the previous char was a CR.
-                 */
-                if (c == '\n')
-                    newlinetypes |= NEWLINE_LF;
-                else if (skipnextlf)
-                    newlinetypes |= NEWLINE_CR;
-                *dst++ = c;
-                skipnextlf = 0;
-            }
-        }
-        if (shortread) {
-            /* If this is EOF, update type flags. */
-            if (skipnextlf && feof(stream))
-                newlinetypes |= NEWLINE_CR;
-            break;
-        }
-    }
-    f->f_newlinetypes = newlinetypes;
-    f->f_skipnextlf = skipnextlf;
-    return dst - buf;
-}
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/floatobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/floatobject.c
deleted file mode 100644
index 81e737d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/floatobject.c
+++ /dev/null
@@ -1,2693 +0,0 @@
-
-/* Float object implementation */
-
-/* XXX There should be overflow checks here, but it's hard to check
-   for any kind of float exception without losing portability. */
-
-#include "Python.h"
-#include "structseq.h"
-
-#include <ctype.h>
-#include <float.h>
-
-#undef MAX
-#undef MIN
-#define MAX(x, y) ((x) < (y) ? (y) : (x))
-#define MIN(x, y) ((x) < (y) ? (x) : (y))
-
-#ifdef _OSF_SOURCE
-/* OSF1 5.1 doesn't make this available with XOPEN_SOURCE_EXTENDED defined */
-extern int finite(double);
-#endif
-
-/* Special free list -- see comments for same code in intobject.c. */
-#define BLOCK_SIZE      1000    /* 1K less typical malloc overhead */
-#define BHEAD_SIZE      8       /* Enough for a 64-bit pointer */
-#define N_FLOATOBJECTS  ((BLOCK_SIZE - BHEAD_SIZE) / sizeof(PyFloatObject))
-
-struct _floatblock {
-    struct _floatblock *next;
-    PyFloatObject objects[N_FLOATOBJECTS];
-};
-
-typedef struct _floatblock PyFloatBlock;
-
-static PyFloatBlock *block_list = NULL;
-static PyFloatObject *free_list = NULL;
-
-static PyFloatObject *
-fill_free_list(void)
-{
-    PyFloatObject *p, *q;
-    /* XXX Float blocks escape the object heap. Use PyObject_MALLOC ??? */
-    p = (PyFloatObject *) PyMem_MALLOC(sizeof(PyFloatBlock));
-    if (p == NULL)
-        return (PyFloatObject *) PyErr_NoMemory();
-    ((PyFloatBlock *)p)->next = block_list;
-    block_list = (PyFloatBlock *)p;
-    p = &((PyFloatBlock *)p)->objects[0];
-    q = p + N_FLOATOBJECTS;
-    while (--q > p)
-        Py_TYPE(q) = (struct _typeobject *)(q-1);
-    Py_TYPE(q) = NULL;
-    return p + N_FLOATOBJECTS - 1;
-}
-
-double
-PyFloat_GetMax(void)
-{
-    return DBL_MAX;
-}
-
-double
-PyFloat_GetMin(void)
-{
-    return DBL_MIN;
-}
-
-static PyTypeObject FloatInfoType = {0, 0, 0, 0, 0, 0};
-
-PyDoc_STRVAR(floatinfo__doc__,
-"sys.float_info\n\
-\n\
-A structseq holding information about the float type. It contains low level\n\
-information about the precision and internal representation. Please study\n\
-your system's :file:`float.h` for more information.");
-
-static PyStructSequence_Field floatinfo_fields[] = {
-    {"max",             "DBL_MAX -- maximum representable finite float"},
-    {"max_exp",         "DBL_MAX_EXP -- maximum int e such that radix**(e-1) "
-                    "is representable"},
-    {"max_10_exp",      "DBL_MAX_10_EXP -- maximum int e such that 10**e "
-                    "is representable"},
-    {"min",             "DBL_MIN -- Minimum positive normalizer float"},
-    {"min_exp",         "DBL_MIN_EXP -- minimum int e such that radix**(e-1) "
-                    "is a normalized float"},
-    {"min_10_exp",      "DBL_MIN_10_EXP -- minimum int e such that 10**e is "
-                    "a normalized"},
-    {"dig",             "DBL_DIG -- digits"},
-    {"mant_dig",        "DBL_MANT_DIG -- mantissa digits"},
-    {"epsilon",         "DBL_EPSILON -- Difference between 1 and the next "
-                    "representable float"},
-    {"radix",           "FLT_RADIX -- radix of exponent"},
-    {"rounds",          "FLT_ROUNDS -- addition rounds"},
-    {0}
-};
-
-static PyStructSequence_Desc floatinfo_desc = {
-    "sys.float_info",           /* name */
-    floatinfo__doc__,           /* doc */
-    floatinfo_fields,           /* fields */
-    11
-};
-
-PyObject *
-PyFloat_GetInfo(void)
-{
-    PyObject* floatinfo;
-    int pos = 0;
-
-    floatinfo = PyStructSequence_New(&FloatInfoType);
-    if (floatinfo == NULL) {
-        return NULL;
-    }
-
-#define SetIntFlag(flag) \
-    PyStructSequence_SET_ITEM(floatinfo, pos++, PyInt_FromLong(flag))
-#define SetDblFlag(flag) \
-    PyStructSequence_SET_ITEM(floatinfo, pos++, PyFloat_FromDouble(flag))
-
-    SetDblFlag(DBL_MAX);
-    SetIntFlag(DBL_MAX_EXP);
-    SetIntFlag(DBL_MAX_10_EXP);
-    SetDblFlag(DBL_MIN);
-    SetIntFlag(DBL_MIN_EXP);
-    SetIntFlag(DBL_MIN_10_EXP);
-    SetIntFlag(DBL_DIG);
-    SetIntFlag(DBL_MANT_DIG);
-    SetDblFlag(DBL_EPSILON);
-    SetIntFlag(FLT_RADIX);
-    SetIntFlag(FLT_ROUNDS);
-#undef SetIntFlag
-#undef SetDblFlag
-
-    if (PyErr_Occurred()) {
-        Py_CLEAR(floatinfo);
-        return NULL;
-    }
-    return floatinfo;
-}
-
-PyObject *
-PyFloat_FromDouble(double fval)
-{
-    register PyFloatObject *op;
-    if (free_list == NULL) {
-        if ((free_list = fill_free_list()) == NULL)
-            return NULL;
-    }
-    /* Inline PyObject_New */
-    op = free_list;
-    free_list = (PyFloatObject *)Py_TYPE(op);
-    PyObject_INIT(op, &PyFloat_Type);
-    op->ob_fval = fval;
-    return (PyObject *) op;
-}
-
-/**************************************************************************
-RED_FLAG 22-Sep-2000 tim
-PyFloat_FromString's pend argument is braindead.  Prior to this RED_FLAG,
-
-1.  If v was a regular string, *pend was set to point to its terminating
-    null byte.  That's useless (the caller can find that without any
-    help from this function!).
-
-2.  If v was a Unicode string, or an object convertible to a character
-    buffer, *pend was set to point into stack trash (the auto temp
-    vector holding the character buffer).  That was downright dangerous.
-
-Since we can't change the interface of a public API function, pend is
-still supported but now *officially* useless:  if pend is not NULL,
-*pend is set to NULL.
-**************************************************************************/
-PyObject *
-PyFloat_FromString(PyObject *v, char **pend)
-{
-    const char *s, *last, *end;
-    double x;
-    char buffer[256]; /* for errors */
-#ifdef Py_USING_UNICODE
-    char *s_buffer = NULL;
-#endif
-    Py_ssize_t len;
-    PyObject *result = NULL;
-
-    if (pend)
-        *pend = NULL;
-    if (PyString_Check(v)) {
-        s = PyString_AS_STRING(v);
-        len = PyString_GET_SIZE(v);
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_Check(v)) {
-        s_buffer = (char *)PyMem_MALLOC(PyUnicode_GET_SIZE(v)+1);
-        if (s_buffer == NULL)
-            return PyErr_NoMemory();
-        if (PyUnicode_EncodeDecimal(PyUnicode_AS_UNICODE(v),
-                                    PyUnicode_GET_SIZE(v),
-                                    s_buffer,
-                                    NULL))
-            goto error;
-        s = s_buffer;
-        len = strlen(s);
-    }
-#endif
-    else if (PyObject_AsCharBuffer(v, &s, &len)) {
-        PyErr_SetString(PyExc_TypeError,
-            "float() argument must be a string or a number");
-        return NULL;
-    }
-    last = s + len;
-
-    while (Py_ISSPACE(*s))
-        s++;
-    /* We don't care about overflow or underflow.  If the platform
-     * supports them, infinities and signed zeroes (on underflow) are
-     * fine. */
-    x = PyOS_string_to_double(s, (char **)&end, NULL);
-    if (x == -1.0 && PyErr_Occurred())
-        goto error;
-    while (Py_ISSPACE(*end))
-        end++;
-    if (end == last)
-        result = PyFloat_FromDouble(x);
-    else {
-        PyOS_snprintf(buffer, sizeof(buffer),
-                      "invalid literal for float(): %.200s", s);
-        PyErr_SetString(PyExc_ValueError, buffer);
-        result = NULL;
-    }
-
-  error:
-#ifdef Py_USING_UNICODE
-    if (s_buffer)
-        PyMem_FREE(s_buffer);
-#endif
-    return result;
-}
-
-static void
-float_dealloc(PyFloatObject *op)
-{
-    if (PyFloat_CheckExact(op)) {
-        Py_TYPE(op) = (struct _typeobject *)free_list;
-        free_list = op;
-    }
-    else
-        Py_TYPE(op)->tp_free((PyObject *)op);
-}
-
-double
-PyFloat_AsDouble(PyObject *op)
-{
-    PyNumberMethods *nb;
-    PyFloatObject *fo;
-    double val;
-
-    if (op && PyFloat_Check(op))
-        return PyFloat_AS_DOUBLE((PyFloatObject*) op);
-
-    if (op == NULL) {
-        PyErr_BadArgument();
-        return -1;
-    }
-
-    if ((nb = Py_TYPE(op)->tp_as_number) == NULL || nb->nb_float == NULL) {
-        PyErr_SetString(PyExc_TypeError, "a float is required");
-        return -1;
-    }
-
-    fo = (PyFloatObject*) (*nb->nb_float) (op);
-    if (fo == NULL)
-        return -1;
-    if (!PyFloat_Check(fo)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "nb_float should return float object");
-        return -1;
-    }
-
-    val = PyFloat_AS_DOUBLE(fo);
-    Py_DECREF(fo);
-
-    return val;
-}
-
-/* Methods */
-
-/* Macro and helper that convert PyObject obj to a C double and store
-   the value in dbl; this replaces the functionality of the coercion
-   slot function.  If conversion to double raises an exception, obj is
-   set to NULL, and the function invoking this macro returns NULL.  If
-   obj is not of float, int or long type, Py_NotImplemented is incref'ed,
-   stored in obj, and returned from the function invoking this macro.
-*/
-#define CONVERT_TO_DOUBLE(obj, dbl)                     \
-    if (PyFloat_Check(obj))                             \
-        dbl = PyFloat_AS_DOUBLE(obj);                   \
-    else if (convert_to_double(&(obj), &(dbl)) < 0)     \
-        return obj;
-
-static int
-convert_to_double(PyObject **v, double *dbl)
-{
-    register PyObject *obj = *v;
-
-    if (PyInt_Check(obj)) {
-        *dbl = (double)PyInt_AS_LONG(obj);
-    }
-    else if (PyLong_Check(obj)) {
-        *dbl = PyLong_AsDouble(obj);
-        if (*dbl == -1.0 && PyErr_Occurred()) {
-            *v = NULL;
-            return -1;
-        }
-    }
-    else {
-        Py_INCREF(Py_NotImplemented);
-        *v = Py_NotImplemented;
-        return -1;
-    }
-    return 0;
-}
-
-/* XXX PyFloat_AsString and PyFloat_AsReprString are deprecated:
-   XXX they pass a char buffer without passing a length.
-*/
-void
-PyFloat_AsString(char *buf, PyFloatObject *v)
-{
-    char *tmp = PyOS_double_to_string(v->ob_fval, 'g',
-                    PyFloat_STR_PRECISION,
-                    Py_DTSF_ADD_DOT_0, NULL);
-    strcpy(buf, tmp);
-    PyMem_Free(tmp);
-}
-
-void
-PyFloat_AsReprString(char *buf, PyFloatObject *v)
-{
-    char * tmp = PyOS_double_to_string(v->ob_fval, 'r', 0,
-                    Py_DTSF_ADD_DOT_0, NULL);
-    strcpy(buf, tmp);
-    PyMem_Free(tmp);
-}
-
-/* ARGSUSED */
-static int
-float_print(PyFloatObject *v, FILE *fp, int flags)
-{
-    char *buf;
-    if (flags & Py_PRINT_RAW)
-        buf = PyOS_double_to_string(v->ob_fval,
-                                    'g', PyFloat_STR_PRECISION,
-                                    Py_DTSF_ADD_DOT_0, NULL);
-    else
-        buf = PyOS_double_to_string(v->ob_fval,
-                            'r', 0, Py_DTSF_ADD_DOT_0, NULL);
-    Py_BEGIN_ALLOW_THREADS
-    fputs(buf, fp);
-    Py_END_ALLOW_THREADS
-    PyMem_Free(buf);
-    return 0;
-}
-
-static PyObject *
-float_str_or_repr(PyFloatObject *v, int precision, char format_code)
-{
-    PyObject *result;
-    char *buf = PyOS_double_to_string(PyFloat_AS_DOUBLE(v),
-                                  format_code, precision,
-                                  Py_DTSF_ADD_DOT_0,
-                                  NULL);
-    if (!buf)
-        return PyErr_NoMemory();
-    result = PyString_FromString(buf);
-    PyMem_Free(buf);
-    return result;
-}
-
-static PyObject *
-float_repr(PyFloatObject *v)
-{
-    return float_str_or_repr(v, 0, 'r');
-}
-
-static PyObject *
-float_str(PyFloatObject *v)
-{
-    return float_str_or_repr(v, PyFloat_STR_PRECISION, 'g');
-}
-
-/* Comparison is pretty much a nightmare.  When comparing float to float,
- * we do it as straightforwardly (and long-windedly) as conceivable, so
- * that, e.g., Python x == y delivers the same result as the platform
- * C x == y when x and/or y is a NaN.
- * When mixing float with an integer type, there's no good *uniform* approach.
- * Converting the double to an integer obviously doesn't work, since we
- * may lose info from fractional bits.  Converting the integer to a double
- * also has two failure modes:  (1) a long int may trigger overflow (too
- * large to fit in the dynamic range of a C double); (2) even a C long may have
- * more bits than fit in a C double (e.g., on a a 64-bit box long may have
- * 63 bits of precision, but a C double probably has only 53), and then
- * we can falsely claim equality when low-order integer bits are lost by
- * coercion to double.  So this part is painful too.
- */
-
-static PyObject*
-float_richcompare(PyObject *v, PyObject *w, int op)
-{
-    double i, j;
-    int r = 0;
-
-    assert(PyFloat_Check(v));
-    i = PyFloat_AS_DOUBLE(v);
-
-    /* Switch on the type of w.  Set i and j to doubles to be compared,
-     * and op to the richcomp to use.
-     */
-    if (PyFloat_Check(w))
-        j = PyFloat_AS_DOUBLE(w);
-
-    else if (!Py_IS_FINITE(i)) {
-        if (PyInt_Check(w) || PyLong_Check(w))
-            /* If i is an infinity, its magnitude exceeds any
-             * finite integer, so it doesn't matter which int we
-             * compare i with.  If i is a NaN, similarly.
-             */
-            j = 0.0;
-        else
-            goto Unimplemented;
-    }
-
-    else if (PyInt_Check(w)) {
-        long jj = PyInt_AS_LONG(w);
-        /* In the worst realistic case I can imagine, C double is a
-         * Cray single with 48 bits of precision, and long has 64
-         * bits.
-         */
-#if SIZEOF_LONG > 6
-        unsigned long abs = (unsigned long)(jj < 0 ? -jj : jj);
-        if (abs >> 48) {
-            /* Needs more than 48 bits.  Make it take the
-             * PyLong path.
-             */
-            PyObject *result;
-            PyObject *ww = PyLong_FromLong(jj);
-
-            if (ww == NULL)
-                return NULL;
-            result = float_richcompare(v, ww, op);
-            Py_DECREF(ww);
-            return result;
-        }
-#endif
-        j = (double)jj;
-        assert((long)j == jj);
-    }
-
-    else if (PyLong_Check(w)) {
-        int vsign = i == 0.0 ? 0 : i < 0.0 ? -1 : 1;
-        int wsign = _PyLong_Sign(w);
-        size_t nbits;
-        int exponent;
-
-        if (vsign != wsign) {
-            /* Magnitudes are irrelevant -- the signs alone
-             * determine the outcome.
-             */
-            i = (double)vsign;
-            j = (double)wsign;
-            goto Compare;
-        }
-        /* The signs are the same. */
-        /* Convert w to a double if it fits.  In particular, 0 fits. */
-        nbits = _PyLong_NumBits(w);
-        if (nbits == (size_t)-1 && PyErr_Occurred()) {
-            /* This long is so large that size_t isn't big enough
-             * to hold the # of bits.  Replace with little doubles
-             * that give the same outcome -- w is so large that
-             * its magnitude must exceed the magnitude of any
-             * finite float.
-             */
-            PyErr_Clear();
-            i = (double)vsign;
-            assert(wsign != 0);
-            j = wsign * 2.0;
-            goto Compare;
-        }
-        if (nbits <= 48) {
-            j = PyLong_AsDouble(w);
-            /* It's impossible that <= 48 bits overflowed. */
-            assert(j != -1.0 || ! PyErr_Occurred());
-            goto Compare;
-        }
-        assert(wsign != 0); /* else nbits was 0 */
-        assert(vsign != 0); /* if vsign were 0, then since wsign is
-                             * not 0, we would have taken the
-                             * vsign != wsign branch at the start */
-        /* We want to work with non-negative numbers. */
-        if (vsign < 0) {
-            /* "Multiply both sides" by -1; this also swaps the
-             * comparator.
-             */
-            i = -i;
-            op = _Py_SwappedOp[op];
-        }
-        assert(i > 0.0);
-        (void) frexp(i, &exponent);
-        /* exponent is the # of bits in v before the radix point;
-         * we know that nbits (the # of bits in w) > 48 at this point
-         */
-        if (exponent < 0 || (size_t)exponent < nbits) {
-            i = 1.0;
-            j = 2.0;
-            goto Compare;
-        }
-        if ((size_t)exponent > nbits) {
-            i = 2.0;
-            j = 1.0;
-            goto Compare;
-        }
-        /* v and w have the same number of bits before the radix
-         * point.  Construct two longs that have the same comparison
-         * outcome.
-         */
-        {
-            double fracpart;
-            double intpart;
-            PyObject *result = NULL;
-            PyObject *one = NULL;
-            PyObject *vv = NULL;
-            PyObject *ww = w;
-
-            if (wsign < 0) {
-                ww = PyNumber_Negative(w);
-                if (ww == NULL)
-                    goto Error;
-            }
-            else
-                Py_INCREF(ww);
-
-            fracpart = modf(i, &intpart);
-            vv = PyLong_FromDouble(intpart);
-            if (vv == NULL)
-                goto Error;
-
-            if (fracpart != 0.0) {
-                /* Shift left, and or a 1 bit into vv
-                 * to represent the lost fraction.
-                 */
-                PyObject *temp;
-
-                one = PyInt_FromLong(1);
-                if (one == NULL)
-                    goto Error;
-
-                temp = PyNumber_Lshift(ww, one);
-                if (temp == NULL)
-                    goto Error;
-                Py_DECREF(ww);
-                ww = temp;
-
-                temp = PyNumber_Lshift(vv, one);
-                if (temp == NULL)
-                    goto Error;
-                Py_DECREF(vv);
-                vv = temp;
-
-                temp = PyNumber_Or(vv, one);
-                if (temp == NULL)
-                    goto Error;
-                Py_DECREF(vv);
-                vv = temp;
-            }
-
-            r = PyObject_RichCompareBool(vv, ww, op);
-            if (r < 0)
-                goto Error;
-            result = PyBool_FromLong(r);
-         Error:
-            Py_XDECREF(vv);
-            Py_XDECREF(ww);
-            Py_XDECREF(one);
-            return result;
-        }
-    } /* else if (PyLong_Check(w)) */
-
-    else        /* w isn't float, int, or long */
-        goto Unimplemented;
-
- Compare:
-    PyFPE_START_PROTECT("richcompare", return NULL)
-    switch (op) {
-    case Py_EQ:
-        r = i == j;
-        break;
-    case Py_NE:
-        r = i != j;
-        break;
-    case Py_LE:
-        r = i <= j;
-        break;
-    case Py_GE:
-        r = i >= j;
-        break;
-    case Py_LT:
-        r = i < j;
-        break;
-    case Py_GT:
-        r = i > j;
-        break;
-    }
-    PyFPE_END_PROTECT(r)
-    return PyBool_FromLong(r);
-
- Unimplemented:
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-}
-
-static long
-float_hash(PyFloatObject *v)
-{
-    return _Py_HashDouble(v->ob_fval);
-}
-
-static PyObject *
-float_add(PyObject *v, PyObject *w)
-{
-    double a,b;
-    CONVERT_TO_DOUBLE(v, a);
-    CONVERT_TO_DOUBLE(w, b);
-    PyFPE_START_PROTECT("add", return 0)
-    a = a + b;
-    PyFPE_END_PROTECT(a)
-    return PyFloat_FromDouble(a);
-}
-
-static PyObject *
-float_sub(PyObject *v, PyObject *w)
-{
-    double a,b;
-    CONVERT_TO_DOUBLE(v, a);
-    CONVERT_TO_DOUBLE(w, b);
-    PyFPE_START_PROTECT("subtract", return 0)
-    a = a - b;
-    PyFPE_END_PROTECT(a)
-    return PyFloat_FromDouble(a);
-}
-
-static PyObject *
-float_mul(PyObject *v, PyObject *w)
-{
-    double a,b;
-    CONVERT_TO_DOUBLE(v, a);
-    CONVERT_TO_DOUBLE(w, b);
-    PyFPE_START_PROTECT("multiply", return 0)
-    a = a * b;
-    PyFPE_END_PROTECT(a)
-    return PyFloat_FromDouble(a);
-}
-
-static PyObject *
-float_div(PyObject *v, PyObject *w)
-{
-    double a,b;
-    CONVERT_TO_DOUBLE(v, a);
-    CONVERT_TO_DOUBLE(w, b);
-#ifdef Py_NAN
-    if (b == 0.0) {
-        PyErr_SetString(PyExc_ZeroDivisionError,
-                        "float division by zero");
-        return NULL;
-    }
-#endif
-    PyFPE_START_PROTECT("divide", return 0)
-    a = a / b;
-    PyFPE_END_PROTECT(a)
-    return PyFloat_FromDouble(a);
-}
-
-static PyObject *
-float_classic_div(PyObject *v, PyObject *w)
-{
-    double a,b;
-    CONVERT_TO_DOUBLE(v, a);
-    CONVERT_TO_DOUBLE(w, b);
-    if (Py_DivisionWarningFlag >= 2 &&
-        PyErr_Warn(PyExc_DeprecationWarning, "classic float division") < 0)
-        return NULL;
-#ifdef Py_NAN
-    if (b == 0.0) {
-        PyErr_SetString(PyExc_ZeroDivisionError,
-                        "float division by zero");
-        return NULL;
-    }
-#endif
-    PyFPE_START_PROTECT("divide", return 0)
-    a = a / b;
-    PyFPE_END_PROTECT(a)
-    return PyFloat_FromDouble(a);
-}
-
-static PyObject *
-float_rem(PyObject *v, PyObject *w)
-{
-    double vx, wx;
-    double mod;
-    CONVERT_TO_DOUBLE(v, vx);
-    CONVERT_TO_DOUBLE(w, wx);
-#ifdef Py_NAN
-    if (wx == 0.0) {
-        PyErr_SetString(PyExc_ZeroDivisionError,
-                        "float modulo");
-        return NULL;
-    }
-#endif
-    PyFPE_START_PROTECT("modulo", return 0)
-    mod = fmod(vx, wx);
-    if (mod) {
-        /* ensure the remainder has the same sign as the denominator */
-        if ((wx < 0) != (mod < 0)) {
-            mod += wx;
-        }
-    }
-    else {
-        /* the remainder is zero, and in the presence of signed zeroes
-           fmod returns different results across platforms; ensure
-           it has the same sign as the denominator; we'd like to do
-           "mod = wx * 0.0", but that may get optimized away */
-        mod *= mod;  /* hide "mod = +0" from optimizer */
-        if (wx < 0.0)
-            mod = -mod;
-    }
-    PyFPE_END_PROTECT(mod)
-    return PyFloat_FromDouble(mod);
-}
-
-static PyObject *
-float_divmod(PyObject *v, PyObject *w)
-{
-    double vx, wx;
-    double div, mod, floordiv;
-    CONVERT_TO_DOUBLE(v, vx);
-    CONVERT_TO_DOUBLE(w, wx);
-    if (wx == 0.0) {
-        PyErr_SetString(PyExc_ZeroDivisionError, "float divmod()");
-        return NULL;
-    }
-    PyFPE_START_PROTECT("divmod", return 0)
-    mod = fmod(vx, wx);
-    /* fmod is typically exact, so vx-mod is *mathematically* an
-       exact multiple of wx.  But this is fp arithmetic, and fp
-       vx - mod is an approximation; the result is that div may
-       not be an exact integral value after the division, although
-       it will always be very close to one.
-    */
-    div = (vx - mod) / wx;
-    if (mod) {
-        /* ensure the remainder has the same sign as the denominator */
-        if ((wx < 0) != (mod < 0)) {
-            mod += wx;
-            div -= 1.0;
-        }
-    }
-    else {
-        /* the remainder is zero, and in the presence of signed zeroes
-           fmod returns different results across platforms; ensure
-           it has the same sign as the denominator; we'd like to do
-           "mod = wx * 0.0", but that may get optimized away */
-        mod *= mod;  /* hide "mod = +0" from optimizer */
-        if (wx < 0.0)
-            mod = -mod;
-    }
-    /* snap quotient to nearest integral value */
-    if (div) {
-        floordiv = floor(div);
-        if (div - floordiv > 0.5)
-            floordiv += 1.0;
-    }
-    else {
-        /* div is zero - get the same sign as the true quotient */
-        div *= div;             /* hide "div = +0" from optimizers */
-        floordiv = div * vx / wx; /* zero w/ sign of vx/wx */
-    }
-    PyFPE_END_PROTECT(floordiv)
-    return Py_BuildValue("(dd)", floordiv, mod);
-}
-
-static PyObject *
-float_floor_div(PyObject *v, PyObject *w)
-{
-    PyObject *t, *r;
-
-    t = float_divmod(v, w);
-    if (t == NULL || t == Py_NotImplemented)
-        return t;
-    assert(PyTuple_CheckExact(t));
-    r = PyTuple_GET_ITEM(t, 0);
-    Py_INCREF(r);
-    Py_DECREF(t);
-    return r;
-}
-
-/* determine whether x is an odd integer or not;  assumes that
-   x is not an infinity or nan. */
-#define DOUBLE_IS_ODD_INTEGER(x) (fmod(fabs(x), 2.0) == 1.0)
-
-static PyObject *
-float_pow(PyObject *v, PyObject *w, PyObject *z)
-{
-    double iv, iw, ix;
-    int negate_result = 0;
-
-    if ((PyObject *)z != Py_None) {
-        PyErr_SetString(PyExc_TypeError, "pow() 3rd argument not "
-            "allowed unless all arguments are integers");
-        return NULL;
-    }
-
-    CONVERT_TO_DOUBLE(v, iv);
-    CONVERT_TO_DOUBLE(w, iw);
-
-    /* Sort out special cases here instead of relying on pow() */
-    if (iw == 0) {              /* v**0 is 1, even 0**0 */
-        return PyFloat_FromDouble(1.0);
-    }
-    if (Py_IS_NAN(iv)) {        /* nan**w = nan, unless w == 0 */
-        return PyFloat_FromDouble(iv);
-    }
-    if (Py_IS_NAN(iw)) {        /* v**nan = nan, unless v == 1; 1**nan = 1 */
-        return PyFloat_FromDouble(iv == 1.0 ? 1.0 : iw);
-    }
-    if (Py_IS_INFINITY(iw)) {
-        /* v**inf is: 0.0 if abs(v) < 1; 1.0 if abs(v) == 1; inf if
-         *     abs(v) > 1 (including case where v infinite)
-         *
-         * v**-inf is: inf if abs(v) < 1; 1.0 if abs(v) == 1; 0.0 if
-         *     abs(v) > 1 (including case where v infinite)
-         */
-        iv = fabs(iv);
-        if (iv == 1.0)
-            return PyFloat_FromDouble(1.0);
-        else if ((iw > 0.0) == (iv > 1.0))
-            return PyFloat_FromDouble(fabs(iw)); /* return inf */
-        else
-            return PyFloat_FromDouble(0.0);
-    }
-    if (Py_IS_INFINITY(iv)) {
-        /* (+-inf)**w is: inf for w positive, 0 for w negative; in
-         *     both cases, we need to add the appropriate sign if w is
-         *     an odd integer.
-         */
-        int iw_is_odd = DOUBLE_IS_ODD_INTEGER(iw);
-        if (iw > 0.0)
-            return PyFloat_FromDouble(iw_is_odd ? iv : fabs(iv));
-        else
-            return PyFloat_FromDouble(iw_is_odd ?
-                                      copysign(0.0, iv) : 0.0);
-    }
-    if (iv == 0.0) {  /* 0**w is: 0 for w positive, 1 for w zero
-                         (already dealt with above), and an error
-                         if w is negative. */
-        int iw_is_odd = DOUBLE_IS_ODD_INTEGER(iw);
-        if (iw < 0.0) {
-            PyErr_SetString(PyExc_ZeroDivisionError,
-                            "0.0 cannot be raised to a "
-                            "negative power");
-            return NULL;
-        }
-        /* use correct sign if iw is odd */
-        return PyFloat_FromDouble(iw_is_odd ? iv : 0.0);
-    }
-
-    if (iv < 0.0) {
-        /* Whether this is an error is a mess, and bumps into libm
-         * bugs so we have to figure it out ourselves.
-         */
-        if (iw != floor(iw)) {
-            PyErr_SetString(PyExc_ValueError, "negative number "
-                "cannot be raised to a fractional power");
-            return NULL;
-        }
-        /* iw is an exact integer, albeit perhaps a very large
-         * one.  Replace iv by its absolute value and remember
-         * to negate the pow result if iw is odd.
-         */
-        iv = -iv;
-        negate_result = DOUBLE_IS_ODD_INTEGER(iw);
-    }
-
-    if (iv == 1.0) { /* 1**w is 1, even 1**inf and 1**nan */
-        /* (-1) ** large_integer also ends up here.  Here's an
-         * extract from the comments for the previous
-         * implementation explaining why this special case is
-         * necessary:
-         *
-         * -1 raised to an exact integer should never be exceptional.
-         * Alas, some libms (chiefly glibc as of early 2003) return
-         * NaN and set EDOM on pow(-1, large_int) if the int doesn't
-         * happen to be representable in a *C* integer.  That's a
-         * bug.
-         */
-        return PyFloat_FromDouble(negate_result ? -1.0 : 1.0);
-    }
-
-    /* Now iv and iw are finite, iw is nonzero, and iv is
-     * positive and not equal to 1.0.  We finally allow
-     * the platform pow to step in and do the rest.
-     */
-    errno = 0;
-    PyFPE_START_PROTECT("pow", return NULL)
-    ix = pow(iv, iw);
-    PyFPE_END_PROTECT(ix)
-    Py_ADJUST_ERANGE1(ix);
-    if (negate_result)
-        ix = -ix;
-
-    if (errno != 0) {
-        /* We don't expect any errno value other than ERANGE, but
-         * the range of libm bugs appears unbounded.
-         */
-        PyErr_SetFromErrno(errno == ERANGE ? PyExc_OverflowError :
-                             PyExc_ValueError);
-        return NULL;
-    }
-    return PyFloat_FromDouble(ix);
-}
-
-#undef DOUBLE_IS_ODD_INTEGER
-
-static PyObject *
-float_neg(PyFloatObject *v)
-{
-    return PyFloat_FromDouble(-v->ob_fval);
-}
-
-static PyObject *
-float_abs(PyFloatObject *v)
-{
-    return PyFloat_FromDouble(fabs(v->ob_fval));
-}
-
-static int
-float_nonzero(PyFloatObject *v)
-{
-    return v->ob_fval != 0.0;
-}
-
-static int
-float_coerce(PyObject **pv, PyObject **pw)
-{
-    if (PyInt_Check(*pw)) {
-        long x = PyInt_AsLong(*pw);
-        *pw = PyFloat_FromDouble((double)x);
-        Py_INCREF(*pv);
-        return 0;
-    }
-    else if (PyLong_Check(*pw)) {
-        double x = PyLong_AsDouble(*pw);
-        if (x == -1.0 && PyErr_Occurred())
-            return -1;
-        *pw = PyFloat_FromDouble(x);
-        Py_INCREF(*pv);
-        return 0;
-    }
-    else if (PyFloat_Check(*pw)) {
-        Py_INCREF(*pv);
-        Py_INCREF(*pw);
-        return 0;
-    }
-    return 1; /* Can't do it */
-}
-
-static PyObject *
-float_is_integer(PyObject *v)
-{
-    double x = PyFloat_AsDouble(v);
-    PyObject *o;
-
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-    if (!Py_IS_FINITE(x))
-        Py_RETURN_FALSE;
-    errno = 0;
-    PyFPE_START_PROTECT("is_integer", return NULL)
-    o = (floor(x) == x) ? Py_True : Py_False;
-    PyFPE_END_PROTECT(x)
-    if (errno != 0) {
-        PyErr_SetFromErrno(errno == ERANGE ? PyExc_OverflowError :
-                             PyExc_ValueError);
-        return NULL;
-    }
-    Py_INCREF(o);
-    return o;
-}
-
-#if 0
-static PyObject *
-float_is_inf(PyObject *v)
-{
-    double x = PyFloat_AsDouble(v);
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-    return PyBool_FromLong((long)Py_IS_INFINITY(x));
-}
-
-static PyObject *
-float_is_nan(PyObject *v)
-{
-    double x = PyFloat_AsDouble(v);
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-    return PyBool_FromLong((long)Py_IS_NAN(x));
-}
-
-static PyObject *
-float_is_finite(PyObject *v)
-{
-    double x = PyFloat_AsDouble(v);
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-    return PyBool_FromLong((long)Py_IS_FINITE(x));
-}
-#endif
-
-static PyObject *
-float_trunc(PyObject *v)
-{
-    double x = PyFloat_AsDouble(v);
-    double wholepart;           /* integral portion of x, rounded toward 0 */
-
-    (void)modf(x, &wholepart);
-    /* Try to get out cheap if this fits in a Python int.  The attempt
-     * to cast to long must be protected, as C doesn't define what
-     * happens if the double is too big to fit in a long.  Some rare
-     * systems raise an exception then (RISCOS was mentioned as one,
-     * and someone using a non-default option on Sun also bumped into
-     * that).  Note that checking for <= LONG_MAX is unsafe: if a long
-     * has more bits of precision than a double, casting LONG_MAX to
-     * double may yield an approximation, and if that's rounded up,
-     * then, e.g., wholepart=LONG_MAX+1 would yield true from the C
-     * expression wholepart<=LONG_MAX, despite that wholepart is
-     * actually greater than LONG_MAX.  However, assuming a two's complement
-     * machine with no trap representation, LONG_MIN will be a power of 2 (and
-     * hence exactly representable as a double), and LONG_MAX = -1-LONG_MIN, so
-     * the comparisons with (double)LONG_MIN below should be safe.
-     */
-    if ((double)LONG_MIN <= wholepart && wholepart < -(double)LONG_MIN) {
-        const long aslong = (long)wholepart;
-        return PyInt_FromLong(aslong);
-    }
-    return PyLong_FromDouble(wholepart);
-}
-
-static PyObject *
-float_long(PyObject *v)
-{
-    double x = PyFloat_AsDouble(v);
-    return PyLong_FromDouble(x);
-}
-
-/* _Py_double_round: rounds a finite nonzero double to the closest multiple of
-   10**-ndigits; here ndigits is within reasonable bounds (typically, -308 <=
-   ndigits <= 323).  Returns a Python float, or sets a Python error and
-   returns NULL on failure (OverflowError and memory errors are possible). */
-
-#ifndef PY_NO_SHORT_FLOAT_REPR
-/* version of _Py_double_round that uses the correctly-rounded string<->double
-   conversions from Python/dtoa.c */
-
-/* FIVE_POW_LIMIT is the largest k such that 5**k is exactly representable as
-   a double.  Since we're using the code in Python/dtoa.c, it should be safe
-   to assume that C doubles are IEEE 754 binary64 format.  To be on the safe
-   side, we check this. */
-#if DBL_MANT_DIG == 53
-#define FIVE_POW_LIMIT 22
-#else
-#error "C doubles do not appear to be IEEE 754 binary64 format"
-#endif
-
-PyObject *
-_Py_double_round(double x, int ndigits) {
-
-    double rounded, m;
-    Py_ssize_t buflen, mybuflen=100;
-    char *buf, *buf_end, shortbuf[100], *mybuf=shortbuf;
-    int decpt, sign, val, halfway_case;
-    PyObject *result = NULL;
-
-    /* The basic idea is very simple: convert and round the double to a
-       decimal string using _Py_dg_dtoa, then convert that decimal string
-       back to a double with _Py_dg_strtod.  There's one minor difficulty:
-       Python 2.x expects round to do round-half-away-from-zero, while
-       _Py_dg_dtoa does round-half-to-even.  So we need some way to detect
-       and correct the halfway cases.
-
-       Detection: a halfway value has the form k * 0.5 * 10**-ndigits for
-       some odd integer k.  Or in other words, a rational number x is
-       exactly halfway between two multiples of 10**-ndigits if its
-       2-valuation is exactly -ndigits-1 and its 5-valuation is at least
-       -ndigits.  For ndigits >= 0 the latter condition is automatically
-       satisfied for a binary float x, since any such float has
-       nonnegative 5-valuation.  For 0 > ndigits >= -22, x needs to be an
-       integral multiple of 5**-ndigits; we can check this using fmod.
-       For -22 > ndigits, there are no halfway cases: 5**23 takes 54 bits
-       to represent exactly, so any odd multiple of 0.5 * 10**n for n >=
-       23 takes at least 54 bits of precision to represent exactly.
-
-       Correction: a simple strategy for dealing with halfway cases is to
-       (for the halfway cases only) call _Py_dg_dtoa with an argument of
-       ndigits+1 instead of ndigits (thus doing an exact conversion to
-       decimal), round the resulting string manually, and then convert
-       back using _Py_dg_strtod.
-    */
-
-    /* nans, infinities and zeros should have already been dealt
-       with by the caller (in this case, builtin_round) */
-    assert(Py_IS_FINITE(x) && x != 0.0);
-
-    /* find 2-valuation val of x */
-    m = frexp(x, &val);
-    while (m != floor(m)) {
-        m *= 2.0;
-        val--;
-    }
-
-    /* determine whether this is a halfway case */
-    if (val == -ndigits-1) {
-        if (ndigits >= 0)
-            halfway_case = 1;
-        else if (ndigits >= -FIVE_POW_LIMIT) {
-            double five_pow = 1.0;
-            int i;
-            for (i=0; i < -ndigits; i++)
-                five_pow *= 5.0;
-            halfway_case = fmod(x, five_pow) == 0.0;
-        }
-        else
-            halfway_case = 0;
-    }
-    else
-        halfway_case = 0;
-
-    /* round to a decimal string; use an extra place for halfway case */
-    buf = _Py_dg_dtoa(x, 3, ndigits+halfway_case, &decpt, &sign, &buf_end);
-    if (buf == NULL) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-    buflen = buf_end - buf;
-
-    /* in halfway case, do the round-half-away-from-zero manually */
-    if (halfway_case) {
-        int i, carry;
-        /* sanity check: _Py_dg_dtoa should not have stripped
-           any zeros from the result: there should be exactly
-           ndigits+1 places following the decimal point, and
-           the last digit in the buffer should be a '5'.*/
-        assert(buflen - decpt == ndigits+1);
-        assert(buf[buflen-1] == '5');
-
-        /* increment and shift right at the same time. */
-        decpt += 1;
-        carry = 1;
-        for (i=buflen-1; i-- > 0;) {
-            carry += buf[i] - '0';
-            buf[i+1] = carry % 10 + '0';
-            carry /= 10;
-        }
-        buf[0] = carry + '0';
-    }
-
-    /* Get new buffer if shortbuf is too small.  Space needed <= buf_end -
-       buf + 8: (1 extra for '0', 1 for sign, 5 for exp, 1 for '\0'). */
-    if (buflen + 8 > mybuflen) {
-        mybuflen = buflen+8;
-        mybuf = (char *)PyMem_Malloc(mybuflen);
-        if (mybuf == NULL) {
-            PyErr_NoMemory();
-            goto exit;
-        }
-    }
-    /* copy buf to mybuf, adding exponent, sign and leading 0 */
-    PyOS_snprintf(mybuf, mybuflen, "%s0%se%d", (sign ? "-" : ""),
-                  buf, decpt - (int)buflen);
-
-    /* and convert the resulting string back to a double */
-    errno = 0;
-    rounded = _Py_dg_strtod(mybuf, NULL);
-    if (errno == ERANGE && fabs(rounded) >= 1.)
-        PyErr_SetString(PyExc_OverflowError,
-                        "rounded value too large to represent");
-    else
-        result = PyFloat_FromDouble(rounded);
-
-    /* done computing value;  now clean up */
-    if (mybuf != shortbuf)
-        PyMem_Free(mybuf);
-  exit:
-    _Py_dg_freedtoa(buf);
-    return result;
-}
-
-#undef FIVE_POW_LIMIT
-
-#else /* PY_NO_SHORT_FLOAT_REPR */
-
-/* fallback version, to be used when correctly rounded binary<->decimal
-   conversions aren't available */
-
-PyObject *
-_Py_double_round(double x, int ndigits) {
-    double pow1, pow2, y, z;
-    if (ndigits >= 0) {
-        if (ndigits > 22) {
-            /* pow1 and pow2 are each safe from overflow, but
-               pow1*pow2 ~= pow(10.0, ndigits) might overflow */
-            pow1 = pow(10.0, (double)(ndigits-22));
-            pow2 = 1e22;
-        }
-        else {
-            pow1 = pow(10.0, (double)ndigits);
-            pow2 = 1.0;
-        }
-        y = (x*pow1)*pow2;
-        /* if y overflows, then rounded value is exactly x */
-        if (!Py_IS_FINITE(y))
-            return PyFloat_FromDouble(x);
-    }
-    else {
-        pow1 = pow(10.0, (double)-ndigits);
-        pow2 = 1.0; /* unused; silences a gcc compiler warning */
-        y = x / pow1;
-    }
-
-    z = round(y);
-    if (fabs(y-z) == 0.5)
-        /* halfway between two integers; use round-away-from-zero */
-        z = y + copysign(0.5, y);
-
-    if (ndigits >= 0)
-        z = (z / pow2) / pow1;
-    else
-        z *= pow1;
-
-    /* if computation resulted in overflow, raise OverflowError */
-    if (!Py_IS_FINITE(z)) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "overflow occurred during round");
-        return NULL;
-    }
-
-    return PyFloat_FromDouble(z);
-}
-
-#endif /* PY_NO_SHORT_FLOAT_REPR */
-
-static PyObject *
-float_float(PyObject *v)
-{
-    if (PyFloat_CheckExact(v))
-        Py_INCREF(v);
-    else
-        v = PyFloat_FromDouble(((PyFloatObject *)v)->ob_fval);
-    return v;
-}
-
-/* turn ASCII hex characters into integer values and vice versa */
-
-static char
-char_from_hex(int x)
-{
-    assert(0 <= x && x < 16);
-    return "0123456789abcdef"[x];
-}
-
-static int
-hex_from_char(char c) {
-    int x;
-    switch(c) {
-    case '0':
-        x = 0;
-        break;
-    case '1':
-        x = 1;
-        break;
-    case '2':
-        x = 2;
-        break;
-    case '3':
-        x = 3;
-        break;
-    case '4':
-        x = 4;
-        break;
-    case '5':
-        x = 5;
-        break;
-    case '6':
-        x = 6;
-        break;
-    case '7':
-        x = 7;
-        break;
-    case '8':
-        x = 8;
-        break;
-    case '9':
-        x = 9;
-        break;
-    case 'a':
-    case 'A':
-        x = 10;
-        break;
-    case 'b':
-    case 'B':
-        x = 11;
-        break;
-    case 'c':
-    case 'C':
-        x = 12;
-        break;
-    case 'd':
-    case 'D':
-        x = 13;
-        break;
-    case 'e':
-    case 'E':
-        x = 14;
-        break;
-    case 'f':
-    case 'F':
-        x = 15;
-        break;
-    default:
-        x = -1;
-        break;
-    }
-    return x;
-}
-
-/* convert a float to a hexadecimal string */
-
-/* TOHEX_NBITS is DBL_MANT_DIG rounded up to the next integer
-   of the form 4k+1. */
-#define TOHEX_NBITS DBL_MANT_DIG + 3 - (DBL_MANT_DIG+2)%4
-
-static PyObject *
-float_hex(PyObject *v)
-{
-    double x, m;
-    int e, shift, i, si, esign;
-    /* Space for 1+(TOHEX_NBITS-1)/4 digits, a decimal point, and the
-       trailing NUL byte. */
-    char s[(TOHEX_NBITS-1)/4+3];
-
-    CONVERT_TO_DOUBLE(v, x);
-
-    if (Py_IS_NAN(x) || Py_IS_INFINITY(x))
-        return float_str((PyFloatObject *)v);
-
-    if (x == 0.0) {
-        if (copysign(1.0, x) == -1.0)
-            return PyString_FromString("-0x0.0p+0");
-        else
-            return PyString_FromString("0x0.0p+0");
-    }
-
-    m = frexp(fabs(x), &e);
-    shift = 1 - MAX(DBL_MIN_EXP - e, 0);
-    m = ldexp(m, shift);
-    e -= shift;
-
-    si = 0;
-    s[si] = char_from_hex((int)m);
-    si++;
-    m -= (int)m;
-    s[si] = '.';
-    si++;
-    for (i=0; i < (TOHEX_NBITS-1)/4; i++) {
-        m *= 16.0;
-        s[si] = char_from_hex((int)m);
-        si++;
-        m -= (int)m;
-    }
-    s[si] = '\0';
-
-    if (e < 0) {
-        esign = (int)'-';
-        e = -e;
-    }
-    else
-        esign = (int)'+';
-
-    if (x < 0.0)
-        return PyString_FromFormat("-0x%sp%c%d", s, esign, e);
-    else
-        return PyString_FromFormat("0x%sp%c%d", s, esign, e);
-}
-
-PyDoc_STRVAR(float_hex_doc,
-"float.hex() -> string\n\
-\n\
-Return a hexadecimal representation of a floating-point number.\n\
->>> (-0.1).hex()\n\
-'-0x1.999999999999ap-4'\n\
->>> 3.14159.hex()\n\
-'0x1.921f9f01b866ep+1'");
-
-/* Case-insensitive locale-independent string match used for nan and inf
-   detection. t should be lower-case and null-terminated.  Return a nonzero
-   result if the first strlen(t) characters of s match t and 0 otherwise. */
-
-static int
-case_insensitive_match(const char *s, const char *t)
-{
-    while(*t && Py_TOLOWER(*s) == *t) {
-        s++;
-        t++;
-    }
-    return *t ? 0 : 1;
-}
-
-/* Convert a hexadecimal string to a float. */
-
-static PyObject *
-float_fromhex(PyObject *cls, PyObject *arg)
-{
-    PyObject *result_as_float, *result;
-    double x;
-    long exp, top_exp, lsb, key_digit;
-    char *s, *coeff_start, *s_store, *coeff_end, *exp_start, *s_end;
-    int half_eps, digit, round_up, sign=1;
-    Py_ssize_t length, ndigits, fdigits, i;
-
-    /*
-     * For the sake of simplicity and correctness, we impose an artificial
-     * limit on ndigits, the total number of hex digits in the coefficient
-     * The limit is chosen to ensure that, writing exp for the exponent,
-     *
-     *   (1) if exp > LONG_MAX/2 then the value of the hex string is
-     *   guaranteed to overflow (provided it's nonzero)
-     *
-     *   (2) if exp < LONG_MIN/2 then the value of the hex string is
-     *   guaranteed to underflow to 0.
-     *
-     *   (3) if LONG_MIN/2 <= exp <= LONG_MAX/2 then there's no danger of
-     *   overflow in the calculation of exp and top_exp below.
-     *
-     * More specifically, ndigits is assumed to satisfy the following
-     * inequalities:
-     *
-     *   4*ndigits <= DBL_MIN_EXP - DBL_MANT_DIG - LONG_MIN/2
-     *   4*ndigits <= LONG_MAX/2 + 1 - DBL_MAX_EXP
-     *
-     * If either of these inequalities is not satisfied, a ValueError is
-     * raised.  Otherwise, write x for the value of the hex string, and
-     * assume x is nonzero.  Then
-     *
-     *   2**(exp-4*ndigits) <= |x| < 2**(exp+4*ndigits).
-     *
-     * Now if exp > LONG_MAX/2 then:
-     *
-     *   exp - 4*ndigits >= LONG_MAX/2 + 1 - (LONG_MAX/2 + 1 - DBL_MAX_EXP)
-     *                    = DBL_MAX_EXP
-     *
-     * so |x| >= 2**DBL_MAX_EXP, which is too large to be stored in C
-     * double, so overflows.  If exp < LONG_MIN/2, then
-     *
-     *   exp + 4*ndigits <= LONG_MIN/2 - 1 + (
-     *                      DBL_MIN_EXP - DBL_MANT_DIG - LONG_MIN/2)
-     *                    = DBL_MIN_EXP - DBL_MANT_DIG - 1
-     *
-     * and so |x| < 2**(DBL_MIN_EXP-DBL_MANT_DIG-1), hence underflows to 0
-     * when converted to a C double.
-     *
-     * It's easy to show that if LONG_MIN/2 <= exp <= LONG_MAX/2 then both
-     * exp+4*ndigits and exp-4*ndigits are within the range of a long.
-     */
-
-    if (PyString_AsStringAndSize(arg, &s, &length))
-        return NULL;
-    s_end = s + length;
-
-    /********************
-     * Parse the string *
-     ********************/
-
-    /* leading whitespace and optional sign */
-    while (Py_ISSPACE(*s))
-        s++;
-    if (*s == '-') {
-        s++;
-        sign = -1;
-    }
-    else if (*s == '+')
-        s++;
-
-    /* infinities and nans */
-    if (*s == 'i' || *s == 'I') {
-        if (!case_insensitive_match(s+1, "nf"))
-            goto parse_error;
-        s += 3;
-        x = Py_HUGE_VAL;
-        if (case_insensitive_match(s, "inity"))
-            s += 5;
-        goto finished;
-    }
-    if (*s == 'n' || *s == 'N') {
-        if (!case_insensitive_match(s+1, "an"))
-            goto parse_error;
-        s += 3;
-        x = Py_NAN;
-        goto finished;
-    }
-
-    /* [0x] */
-    s_store = s;
-    if (*s == '0') {
-        s++;
-        if (*s == 'x' || *s == 'X')
-            s++;
-        else
-            s = s_store;
-    }
-
-    /* coefficient: <integer> [. <fraction>] */
-    coeff_start = s;
-    while (hex_from_char(*s) >= 0)
-        s++;
-    s_store = s;
-    if (*s == '.') {
-        s++;
-        while (hex_from_char(*s) >= 0)
-            s++;
-        coeff_end = s-1;
-    }
-    else
-        coeff_end = s;
-
-    /* ndigits = total # of hex digits; fdigits = # after point */
-    ndigits = coeff_end - coeff_start;
-    fdigits = coeff_end - s_store;
-    if (ndigits == 0)
-        goto parse_error;
-    if (ndigits > MIN(DBL_MIN_EXP - DBL_MANT_DIG - LONG_MIN/2,
-                      LONG_MAX/2 + 1 - DBL_MAX_EXP)/4)
-        goto insane_length_error;
-
-    /* [p <exponent>] */
-    if (*s == 'p' || *s == 'P') {
-        s++;
-        exp_start = s;
-        if (*s == '-' || *s == '+')
-            s++;
-        if (!('0' <= *s && *s <= '9'))
-            goto parse_error;
-        s++;
-        while ('0' <= *s && *s <= '9')
-            s++;
-        exp = strtol(exp_start, NULL, 10);
-    }
-    else
-        exp = 0;
-
-/* for 0 <= j < ndigits, HEX_DIGIT(j) gives the jth most significant digit */
-#define HEX_DIGIT(j) hex_from_char(*((j) < fdigits ?            \
-                     coeff_end-(j) :                                    \
-                     coeff_end-1-(j)))
-
-    /*******************************************
-     * Compute rounded value of the hex string *
-     *******************************************/
-
-    /* Discard leading zeros, and catch extreme overflow and underflow */
-    while (ndigits > 0 && HEX_DIGIT(ndigits-1) == 0)
-        ndigits--;
-    if (ndigits == 0 || exp < LONG_MIN/2) {
-        x = 0.0;
-        goto finished;
-    }
-    if (exp > LONG_MAX/2)
-        goto overflow_error;
-
-    /* Adjust exponent for fractional part. */
-    exp = exp - 4*((long)fdigits);
-
-    /* top_exp = 1 more than exponent of most sig. bit of coefficient */
-    top_exp = exp + 4*((long)ndigits - 1);
-    for (digit = HEX_DIGIT(ndigits-1); digit != 0; digit /= 2)
-        top_exp++;
-
-    /* catch almost all nonextreme cases of overflow and underflow here */
-    if (top_exp < DBL_MIN_EXP - DBL_MANT_DIG) {
-        x = 0.0;
-        goto finished;
-    }
-    if (top_exp > DBL_MAX_EXP)
-        goto overflow_error;
-
-    /* lsb = exponent of least significant bit of the *rounded* value.
-       This is top_exp - DBL_MANT_DIG unless result is subnormal. */
-    lsb = MAX(top_exp, (long)DBL_MIN_EXP) - DBL_MANT_DIG;
-
-    x = 0.0;
-    if (exp >= lsb) {
-        /* no rounding required */
-        for (i = ndigits-1; i >= 0; i--)
-            x = 16.0*x + HEX_DIGIT(i);
-        x = ldexp(x, (int)(exp));
-        goto finished;
-    }
-    /* rounding required.  key_digit is the index of the hex digit
-       containing the first bit to be rounded away. */
-    half_eps = 1 << (int)((lsb - exp - 1) % 4);
-    key_digit = (lsb - exp - 1) / 4;
-    for (i = ndigits-1; i > key_digit; i--)
-        x = 16.0*x + HEX_DIGIT(i);
-    digit = HEX_DIGIT(key_digit);
-    x = 16.0*x + (double)(digit & (16-2*half_eps));
-
-    /* round-half-even: round up if bit lsb-1 is 1 and at least one of
-       bits lsb, lsb-2, lsb-3, lsb-4, ... is 1. */
-    if ((digit & half_eps) != 0) {
-        round_up = 0;
-        if ((digit & (3*half_eps-1)) != 0 ||
-            (half_eps == 8 && (HEX_DIGIT(key_digit+1) & 1) != 0))
-            round_up = 1;
-        else
-            for (i = key_digit-1; i >= 0; i--)
-                if (HEX_DIGIT(i) != 0) {
-                    round_up = 1;
-                    break;
-                }
-        if (round_up == 1) {
-            x += 2*half_eps;
-            if (top_exp == DBL_MAX_EXP &&
-                x == ldexp((double)(2*half_eps), DBL_MANT_DIG))
-                /* overflow corner case: pre-rounded value <
-                   2**DBL_MAX_EXP; rounded=2**DBL_MAX_EXP. */
-                goto overflow_error;
-        }
-    }
-    x = ldexp(x, (int)(exp+4*key_digit));
-
-  finished:
-    /* optional trailing whitespace leading to the end of the string */
-    while (Py_ISSPACE(*s))
-        s++;
-    if (s != s_end)
-        goto parse_error;
-    result_as_float = Py_BuildValue("(d)", sign * x);
-    if (result_as_float == NULL)
-        return NULL;
-    result = PyObject_CallObject(cls, result_as_float);
-    Py_DECREF(result_as_float);
-    return result;
-
-  overflow_error:
-    PyErr_SetString(PyExc_OverflowError,
-                    "hexadecimal value too large to represent as a float");
-    return NULL;
-
-  parse_error:
-    PyErr_SetString(PyExc_ValueError,
-                    "invalid hexadecimal floating-point string");
-    return NULL;
-
-  insane_length_error:
-    PyErr_SetString(PyExc_ValueError,
-                    "hexadecimal string too long to convert");
-    return NULL;
-}
-
-PyDoc_STRVAR(float_fromhex_doc,
-"float.fromhex(string) -> float\n\
-\n\
-Create a floating-point number from a hexadecimal string.\n\
->>> float.fromhex('0x1.ffffp10')\n\
-2047.984375\n\
->>> float.fromhex('-0x1p-1074')\n\
--4.9406564584124654e-324");
-
-
-static PyObject *
-float_as_integer_ratio(PyObject *v, PyObject *unused)
-{
-    double self;
-    double float_part;
-    int exponent;
-    int i;
-
-    PyObject *prev;
-    PyObject *py_exponent = NULL;
-    PyObject *numerator = NULL;
-    PyObject *denominator = NULL;
-    PyObject *result_pair = NULL;
-    PyNumberMethods *long_methods = PyLong_Type.tp_as_number;
-
-#define INPLACE_UPDATE(obj, call) \
-    prev = obj; \
-    obj = call; \
-    Py_DECREF(prev); \
-
-    CONVERT_TO_DOUBLE(v, self);
-
-    if (Py_IS_INFINITY(self)) {
-      PyErr_SetString(PyExc_OverflowError,
-                      "Cannot pass infinity to float.as_integer_ratio.");
-      return NULL;
-    }
-#ifdef Py_NAN
-    if (Py_IS_NAN(self)) {
-      PyErr_SetString(PyExc_ValueError,
-                      "Cannot pass NaN to float.as_integer_ratio.");
-      return NULL;
-    }
-#endif
-
-    PyFPE_START_PROTECT("as_integer_ratio", goto error);
-    float_part = frexp(self, &exponent);        /* self == float_part * 2**exponent exactly */
-    PyFPE_END_PROTECT(float_part);
-
-    for (i=0; i<300 && float_part != floor(float_part) ; i++) {
-        float_part *= 2.0;
-        exponent--;
-    }
-    /* self == float_part * 2**exponent exactly and float_part is integral.
-       If FLT_RADIX != 2, the 300 steps may leave a tiny fractional part
-       to be truncated by PyLong_FromDouble(). */
-
-    numerator = PyLong_FromDouble(float_part);
-    if (numerator == NULL) goto error;
-
-    /* fold in 2**exponent */
-    denominator = PyLong_FromLong(1);
-    py_exponent = PyLong_FromLong(labs((long)exponent));
-    if (py_exponent == NULL) goto error;
-    INPLACE_UPDATE(py_exponent,
-                   long_methods->nb_lshift(denominator, py_exponent));
-    if (py_exponent == NULL) goto error;
-    if (exponent > 0) {
-        INPLACE_UPDATE(numerator,
-                       long_methods->nb_multiply(numerator, py_exponent));
-        if (numerator == NULL) goto error;
-    }
-    else {
-        Py_DECREF(denominator);
-        denominator = py_exponent;
-        py_exponent = NULL;
-    }
-
-    /* Returns ints instead of longs where possible */
-    INPLACE_UPDATE(numerator, PyNumber_Int(numerator));
-    if (numerator == NULL) goto error;
-    INPLACE_UPDATE(denominator, PyNumber_Int(denominator));
-    if (denominator == NULL) goto error;
-
-    result_pair = PyTuple_Pack(2, numerator, denominator);
-
-#undef INPLACE_UPDATE
-error:
-    Py_XDECREF(py_exponent);
-    Py_XDECREF(denominator);
-    Py_XDECREF(numerator);
-    return result_pair;
-}
-
-PyDoc_STRVAR(float_as_integer_ratio_doc,
-"float.as_integer_ratio() -> (int, int)\n"
-"\n"
-"Returns a pair of integers, whose ratio is exactly equal to the original\n"
-"float and with a positive denominator.\n"
-"Raises OverflowError on infinities and a ValueError on NaNs.\n"
-"\n"
-">>> (10.0).as_integer_ratio()\n"
-"(10, 1)\n"
-">>> (0.0).as_integer_ratio()\n"
-"(0, 1)\n"
-">>> (-.25).as_integer_ratio()\n"
-"(-1, 4)");
-
-
-static PyObject *
-float_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
-
-static PyObject *
-float_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *x = Py_False; /* Integer zero */
-    static char *kwlist[] = {"x", 0};
-
-    if (type != &PyFloat_Type)
-        return float_subtype_new(type, args, kwds); /* Wimp out */
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:float", kwlist, &x))
-        return NULL;
-    /* If it's a string, but not a string subclass, use
-       PyFloat_FromString. */
-    if (PyString_CheckExact(x))
-        return PyFloat_FromString(x, NULL);
-    return PyNumber_Float(x);
-}
-
-/* Wimpy, slow approach to tp_new calls for subtypes of float:
-   first create a regular float from whatever arguments we got,
-   then allocate a subtype instance and initialize its ob_fval
-   from the regular float.  The regular float is then thrown away.
-*/
-static PyObject *
-float_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *tmp, *newobj;
-
-    assert(PyType_IsSubtype(type, &PyFloat_Type));
-    tmp = float_new(&PyFloat_Type, args, kwds);
-    if (tmp == NULL)
-        return NULL;
-    assert(PyFloat_CheckExact(tmp));
-    newobj = type->tp_alloc(type, 0);
-    if (newobj == NULL) {
-        Py_DECREF(tmp);
-        return NULL;
-    }
-    ((PyFloatObject *)newobj)->ob_fval = ((PyFloatObject *)tmp)->ob_fval;
-    Py_DECREF(tmp);
-    return newobj;
-}
-
-static PyObject *
-float_getnewargs(PyFloatObject *v)
-{
-    return Py_BuildValue("(d)", v->ob_fval);
-}
-
-/* this is for the benefit of the pack/unpack routines below */
-
-typedef enum {
-    unknown_format, ieee_big_endian_format, ieee_little_endian_format
-} float_format_type;
-
-static float_format_type double_format, float_format;
-static float_format_type detected_double_format, detected_float_format;
-
-static PyObject *
-float_getformat(PyTypeObject *v, PyObject* arg)
-{
-    char* s;
-    float_format_type r;
-
-    if (!PyString_Check(arg)) {
-        PyErr_Format(PyExc_TypeError,
-         "__getformat__() argument must be string, not %.500s",
-                         Py_TYPE(arg)->tp_name);
-        return NULL;
-    }
-    s = PyString_AS_STRING(arg);
-    if (strcmp(s, "double") == 0) {
-        r = double_format;
-    }
-    else if (strcmp(s, "float") == 0) {
-        r = float_format;
-    }
-    else {
-        PyErr_SetString(PyExc_ValueError,
-                        "__getformat__() argument 1 must be "
-                        "'double' or 'float'");
-        return NULL;
-    }
-
-    switch (r) {
-    case unknown_format:
-        return PyString_FromString("unknown");
-    case ieee_little_endian_format:
-        return PyString_FromString("IEEE, little-endian");
-    case ieee_big_endian_format:
-        return PyString_FromString("IEEE, big-endian");
-    default:
-        Py_FatalError("insane float_format or double_format");
-        return NULL;
-    }
-}
-
-PyDoc_STRVAR(float_getformat_doc,
-"float.__getformat__(typestr) -> string\n"
-"\n"
-"You probably don't want to use this function.  It exists mainly to be\n"
-"used in Python's test suite.\n"
-"\n"
-"typestr must be 'double' or 'float'.  This function returns whichever of\n"
-"'unknown', 'IEEE, big-endian' or 'IEEE, little-endian' best describes the\n"
-"format of floating point numbers used by the C type named by typestr.");
-
-static PyObject *
-float_setformat(PyTypeObject *v, PyObject* args)
-{
-    char* typestr;
-    char* format;
-    float_format_type f;
-    float_format_type detected;
-    float_format_type *p;
-
-    if (!PyArg_ParseTuple(args, "ss:__setformat__", &typestr, &format))
-        return NULL;
-
-    if (strcmp(typestr, "double") == 0) {
-        p = &double_format;
-        detected = detected_double_format;
-    }
-    else if (strcmp(typestr, "float") == 0) {
-        p = &float_format;
-        detected = detected_float_format;
-    }
-    else {
-        PyErr_SetString(PyExc_ValueError,
-                        "__setformat__() argument 1 must "
-                        "be 'double' or 'float'");
-        return NULL;
-    }
-
-    if (strcmp(format, "unknown") == 0) {
-        f = unknown_format;
-    }
-    else if (strcmp(format, "IEEE, little-endian") == 0) {
-        f = ieee_little_endian_format;
-    }
-    else if (strcmp(format, "IEEE, big-endian") == 0) {
-        f = ieee_big_endian_format;
-    }
-    else {
-        PyErr_SetString(PyExc_ValueError,
-                        "__setformat__() argument 2 must be "
-                        "'unknown', 'IEEE, little-endian' or "
-                        "'IEEE, big-endian'");
-        return NULL;
-
-    }
-
-    if (f != unknown_format && f != detected) {
-        PyErr_Format(PyExc_ValueError,
-                     "can only set %s format to 'unknown' or the "
-                     "detected platform value", typestr);
-        return NULL;
-    }
-
-    *p = f;
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(float_setformat_doc,
-"float.__setformat__(typestr, fmt) -> None\n"
-"\n"
-"You probably don't want to use this function.  It exists mainly to be\n"
-"used in Python's test suite.\n"
-"\n"
-"typestr must be 'double' or 'float'.  fmt must be one of 'unknown',\n"
-"'IEEE, big-endian' or 'IEEE, little-endian', and in addition can only be\n"
-"one of the latter two if it appears to match the underlying C reality.\n"
-"\n"
-"Overrides the automatic determination of C-level floating point type.\n"
-"This affects how floats are converted to and from binary strings.");
-
-static PyObject *
-float_getzero(PyObject *v, void *closure)
-{
-    return PyFloat_FromDouble(0.0);
-}
-
-static PyObject *
-float__format__(PyObject *self, PyObject *args)
-{
-    PyObject *format_spec;
-
-    if (!PyArg_ParseTuple(args, "O:__format__", &format_spec))
-        return NULL;
-    if (PyBytes_Check(format_spec))
-        return _PyFloat_FormatAdvanced(self,
-                                       PyBytes_AS_STRING(format_spec),
-                                       PyBytes_GET_SIZE(format_spec));
-    if (PyUnicode_Check(format_spec)) {
-        /* Convert format_spec to a str */
-        PyObject *result;
-        PyObject *str_spec = PyObject_Str(format_spec);
-
-        if (str_spec == NULL)
-            return NULL;
-
-        result = _PyFloat_FormatAdvanced(self,
-                                         PyBytes_AS_STRING(str_spec),
-                                         PyBytes_GET_SIZE(str_spec));
-
-        Py_DECREF(str_spec);
-        return result;
-    }
-    PyErr_SetString(PyExc_TypeError, "__format__ requires str or unicode");
-    return NULL;
-}
-
-PyDoc_STRVAR(float__format__doc,
-"float.__format__(format_spec) -> string\n"
-"\n"
-"Formats the float according to format_spec.");
-
-
-static PyMethodDef float_methods[] = {
-    {"conjugate",       (PyCFunction)float_float,       METH_NOARGS,
-     "Returns self, the complex conjugate of any float."},
-    {"__trunc__",       (PyCFunction)float_trunc, METH_NOARGS,
-     "Returns the Integral closest to x between 0 and x."},
-    {"as_integer_ratio", (PyCFunction)float_as_integer_ratio, METH_NOARGS,
-     float_as_integer_ratio_doc},
-    {"fromhex", (PyCFunction)float_fromhex,
-     METH_O|METH_CLASS, float_fromhex_doc},
-    {"hex", (PyCFunction)float_hex,
-     METH_NOARGS, float_hex_doc},
-    {"is_integer",      (PyCFunction)float_is_integer,  METH_NOARGS,
-     "Returns True if the float is an integer."},
-#if 0
-    {"is_inf",          (PyCFunction)float_is_inf,      METH_NOARGS,
-     "Returns True if the float is positive or negative infinite."},
-    {"is_finite",       (PyCFunction)float_is_finite,   METH_NOARGS,
-     "Returns True if the float is finite, neither infinite nor NaN."},
-    {"is_nan",          (PyCFunction)float_is_nan,      METH_NOARGS,
-     "Returns True if the float is not a number (NaN)."},
-#endif
-    {"__getnewargs__",          (PyCFunction)float_getnewargs,  METH_NOARGS},
-    {"__getformat__",           (PyCFunction)float_getformat,
-     METH_O|METH_CLASS,                 float_getformat_doc},
-    {"__setformat__",           (PyCFunction)float_setformat,
-     METH_VARARGS|METH_CLASS,           float_setformat_doc},
-    {"__format__",          (PyCFunction)float__format__,
-     METH_VARARGS,                  float__format__doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyGetSetDef float_getset[] = {
-    {"real",
-     (getter)float_float, (setter)NULL,
-     "the real part of a complex number",
-     NULL},
-    {"imag",
-     (getter)float_getzero, (setter)NULL,
-     "the imaginary part of a complex number",
-     NULL},
-    {NULL}  /* Sentinel */
-};
-
-PyDoc_STRVAR(float_doc,
-"float(x) -> floating point number\n\
-\n\
-Convert a string or number to a floating point number, if possible.");
-
-
-static PyNumberMethods float_as_number = {
-    float_add,          /*nb_add*/
-    float_sub,          /*nb_subtract*/
-    float_mul,          /*nb_multiply*/
-    float_classic_div, /*nb_divide*/
-    float_rem,          /*nb_remainder*/
-    float_divmod,       /*nb_divmod*/
-    float_pow,          /*nb_power*/
-    (unaryfunc)float_neg, /*nb_negative*/
-    (unaryfunc)float_float, /*nb_positive*/
-    (unaryfunc)float_abs, /*nb_absolute*/
-    (inquiry)float_nonzero, /*nb_nonzero*/
-    0,                  /*nb_invert*/
-    0,                  /*nb_lshift*/
-    0,                  /*nb_rshift*/
-    0,                  /*nb_and*/
-    0,                  /*nb_xor*/
-    0,                  /*nb_or*/
-    float_coerce,       /*nb_coerce*/
-    float_trunc,        /*nb_int*/
-    float_long,         /*nb_long*/
-    float_float,        /*nb_float*/
-    0,                  /* nb_oct */
-    0,                  /* nb_hex */
-    0,                  /* nb_inplace_add */
-    0,                  /* nb_inplace_subtract */
-    0,                  /* nb_inplace_multiply */
-    0,                  /* nb_inplace_divide */
-    0,                  /* nb_inplace_remainder */
-    0,                  /* nb_inplace_power */
-    0,                  /* nb_inplace_lshift */
-    0,                  /* nb_inplace_rshift */
-    0,                  /* nb_inplace_and */
-    0,                  /* nb_inplace_xor */
-    0,                  /* nb_inplace_or */
-    float_floor_div, /* nb_floor_divide */
-    float_div,          /* nb_true_divide */
-    0,                  /* nb_inplace_floor_divide */
-    0,                  /* nb_inplace_true_divide */
-};
-
-PyTypeObject PyFloat_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "float",
-    sizeof(PyFloatObject),
-    0,
-    (destructor)float_dealloc,                  /* tp_dealloc */
-    (printfunc)float_print,                     /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)float_repr,                       /* tp_repr */
-    &float_as_number,                           /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    (hashfunc)float_hash,                       /* tp_hash */
-    0,                                          /* tp_call */
-    (reprfunc)float_str,                        /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
-        Py_TPFLAGS_BASETYPE,                    /* tp_flags */
-    float_doc,                                  /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    float_richcompare,                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    float_methods,                              /* tp_methods */
-    0,                                          /* tp_members */
-    float_getset,                               /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    float_new,                                  /* tp_new */
-};
-
-void
-_PyFloat_Init(void)
-{
-    /* We attempt to determine if this machine is using IEEE
-       floating point formats by peering at the bits of some
-       carefully chosen values.  If it looks like we are on an
-       IEEE platform, the float packing/unpacking routines can
-       just copy bits, if not they resort to arithmetic & shifts
-       and masks.  The shifts & masks approach works on all finite
-       values, but what happens to infinities, NaNs and signed
-       zeroes on packing is an accident, and attempting to unpack
-       a NaN or an infinity will raise an exception.
-
-       Note that if we're on some whacked-out platform which uses
-       IEEE formats but isn't strictly little-endian or big-
-       endian, we will fall back to the portable shifts & masks
-       method. */
-
-#if SIZEOF_DOUBLE == 8
-    {
-        double x = 9006104071832581.0;
-        if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
-            detected_double_format = ieee_big_endian_format;
-        else if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
-            detected_double_format = ieee_little_endian_format;
-        else
-            detected_double_format = unknown_format;
-    }
-#else
-    detected_double_format = unknown_format;
-#endif
-
-#if SIZEOF_FLOAT == 4
-    {
-        float y = 16711938.0;
-        if (memcmp(&y, "\x4b\x7f\x01\x02", 4) == 0)
-            detected_float_format = ieee_big_endian_format;
-        else if (memcmp(&y, "\x02\x01\x7f\x4b", 4) == 0)
-            detected_float_format = ieee_little_endian_format;
-        else
-            detected_float_format = unknown_format;
-    }
-#else
-    detected_float_format = unknown_format;
-#endif
-
-    double_format = detected_double_format;
-    float_format = detected_float_format;
-
-    /* Init float info */
-    if (FloatInfoType.tp_name == 0)
-        PyStructSequence_InitType(&FloatInfoType, &floatinfo_desc);
-}
-
-int
-PyFloat_ClearFreeList(void)
-{
-    PyFloatObject *p;
-    PyFloatBlock *list, *next;
-    int i;
-    int u;                      /* remaining unfreed ints per block */
-    int freelist_size = 0;
-
-    list = block_list;
-    block_list = NULL;
-    free_list = NULL;
-    while (list != NULL) {
-        u = 0;
-        for (i = 0, p = &list->objects[0];
-             i < N_FLOATOBJECTS;
-             i++, p++) {
-            if (PyFloat_CheckExact(p) && Py_REFCNT(p) != 0)
-                u++;
-        }
-        next = list->next;
-        if (u) {
-            list->next = block_list;
-            block_list = list;
-            for (i = 0, p = &list->objects[0];
-                 i < N_FLOATOBJECTS;
-                 i++, p++) {
-                if (!PyFloat_CheckExact(p) ||
-                    Py_REFCNT(p) == 0) {
-                    Py_TYPE(p) = (struct _typeobject *)
-                        free_list;
-                    free_list = p;
-                }
-            }
-        }
-        else {
-            PyMem_FREE(list);
-        }
-        freelist_size += u;
-        list = next;
-    }
-    return freelist_size;
-}
-
-void
-PyFloat_Fini(void)
-{
-    PyFloatObject *p;
-    PyFloatBlock *list;
-    int i;
-    int u;                      /* total unfreed floats per block */
-
-    u = PyFloat_ClearFreeList();
-
-    if (!Py_VerboseFlag)
-        return;
-    fprintf(stderr, "# cleanup floats");
-    if (!u) {
-        fprintf(stderr, "\n");
-    }
-    else {
-        fprintf(stderr,
-            ": %d unfreed float%s\n",
-            u, u == 1 ? "" : "s");
-    }
-    if (Py_VerboseFlag > 1) {
-        list = block_list;
-        while (list != NULL) {
-            for (i = 0, p = &list->objects[0];
-                 i < N_FLOATOBJECTS;
-                 i++, p++) {
-                if (PyFloat_CheckExact(p) &&
-                    Py_REFCNT(p) != 0) {
-                    char *buf = PyOS_double_to_string(
-                        PyFloat_AS_DOUBLE(p), 'r',
-                        0, 0, NULL);
-                    if (buf) {
-                        /* XXX(twouters) cast
-                           refcount to long
-                           until %zd is
-                           universally
-                           available
-                        */
-                        fprintf(stderr,
-                 "#   <float at %p, refcnt=%ld, val=%s>\n",
-                                    p, (long)Py_REFCNT(p), buf);
-                                    PyMem_Free(buf);
-                            }
-                }
-            }
-            list = list->next;
-        }
-    }
-}
-
-/*----------------------------------------------------------------------------
- * _PyFloat_{Pack,Unpack}{4,8}.  See floatobject.h.
- */
-int
-_PyFloat_Pack4(double x, unsigned char *p, int le)
-{
-    if (float_format == unknown_format) {
-        unsigned char sign;
-        int e;
-        double f;
-        unsigned int fbits;
-        int incr = 1;
-
-        if (le) {
-            p += 3;
-            incr = -1;
-        }
-
-        if (x < 0) {
-            sign = 1;
-            x = -x;
-        }
-        else
-            sign = 0;
-
-        f = frexp(x, &e);
-
-        /* Normalize f to be in the range [1.0, 2.0) */
-        if (0.5 <= f && f < 1.0) {
-            f *= 2.0;
-            e--;
-        }
-        else if (f == 0.0)
-            e = 0;
-        else {
-            PyErr_SetString(PyExc_SystemError,
-                            "frexp() result out of range");
-            return -1;
-        }
-
-        if (e >= 128)
-            goto Overflow;
-        else if (e < -126) {
-            /* Gradual underflow */
-            f = ldexp(f, 126 + e);
-            e = 0;
-        }
-        else if (!(e == 0 && f == 0.0)) {
-            e += 127;
-            f -= 1.0; /* Get rid of leading 1 */
-        }
-
-        f *= 8388608.0; /* 2**23 */
-        fbits = (unsigned int)(f + 0.5); /* Round */
-        assert(fbits <= 8388608);
-        if (fbits >> 23) {
-            /* The carry propagated out of a string of 23 1 bits. */
-            fbits = 0;
-            ++e;
-            if (e >= 255)
-                goto Overflow;
-        }
-
-        /* First byte */
-        *p = (sign << 7) | (e >> 1);
-        p += incr;
-
-        /* Second byte */
-        *p = (char) (((e & 1) << 7) | (fbits >> 16));
-        p += incr;
-
-        /* Third byte */
-        *p = (fbits >> 8) & 0xFF;
-        p += incr;
-
-        /* Fourth byte */
-        *p = fbits & 0xFF;
-
-        /* Done */
-        return 0;
-
-    }
-    else {
-        float y = (float)x;
-        const char *s = (char*)&y;
-        int i, incr = 1;
-
-        if (Py_IS_INFINITY(y) && !Py_IS_INFINITY(x))
-            goto Overflow;
-
-        if ((float_format == ieee_little_endian_format && !le)
-            || (float_format == ieee_big_endian_format && le)) {
-            p += 3;
-            incr = -1;
-        }
-
-        for (i = 0; i < 4; i++) {
-            *p = *s++;
-            p += incr;
-        }
-        return 0;
-    }
-  Overflow:
-    PyErr_SetString(PyExc_OverflowError,
-                    "float too large to pack with f format");
-    return -1;
-}
-
-int
-_PyFloat_Pack8(double x, unsigned char *p, int le)
-{
-    if (double_format == unknown_format) {
-        unsigned char sign;
-        int e;
-        double f;
-        unsigned int fhi, flo;
-        int incr = 1;
-
-        if (le) {
-            p += 7;
-            incr = -1;
-        }
-
-        if (x < 0) {
-            sign = 1;
-            x = -x;
-        }
-        else
-            sign = 0;
-
-        f = frexp(x, &e);
-
-        /* Normalize f to be in the range [1.0, 2.0) */
-        if (0.5 <= f && f < 1.0) {
-            f *= 2.0;
-            e--;
-        }
-        else if (f == 0.0)
-            e = 0;
-        else {
-            PyErr_SetString(PyExc_SystemError,
-                            "frexp() result out of range");
-            return -1;
-        }
-
-        if (e >= 1024)
-            goto Overflow;
-        else if (e < -1022) {
-            /* Gradual underflow */
-            f = ldexp(f, 1022 + e);
-            e = 0;
-        }
-        else if (!(e == 0 && f == 0.0)) {
-            e += 1023;
-            f -= 1.0; /* Get rid of leading 1 */
-        }
-
-        /* fhi receives the high 28 bits; flo the low 24 bits (== 52 bits) */
-        f *= 268435456.0; /* 2**28 */
-        fhi = (unsigned int)f; /* Truncate */
-        assert(fhi < 268435456);
-
-        f -= (double)fhi;
-        f *= 16777216.0; /* 2**24 */
-        flo = (unsigned int)(f + 0.5); /* Round */
-        assert(flo <= 16777216);
-        if (flo >> 24) {
-            /* The carry propagated out of a string of 24 1 bits. */
-            flo = 0;
-            ++fhi;
-            if (fhi >> 28) {
-                /* And it also progagated out of the next 28 bits. */
-                fhi = 0;
-                ++e;
-                if (e >= 2047)
-                    goto Overflow;
-            }
-        }
-
-        /* First byte */
-        *p = (sign << 7) | (e >> 4);
-        p += incr;
-
-        /* Second byte */
-        *p = (unsigned char) (((e & 0xF) << 4) | (fhi >> 24));
-        p += incr;
-
-        /* Third byte */
-        *p = (fhi >> 16) & 0xFF;
-        p += incr;
-
-        /* Fourth byte */
-        *p = (fhi >> 8) & 0xFF;
-        p += incr;
-
-        /* Fifth byte */
-        *p = fhi & 0xFF;
-        p += incr;
-
-        /* Sixth byte */
-        *p = (flo >> 16) & 0xFF;
-        p += incr;
-
-        /* Seventh byte */
-        *p = (flo >> 8) & 0xFF;
-        p += incr;
-
-        /* Eighth byte */
-        *p = flo & 0xFF;
-        /* p += incr; Unneeded (for now) */
-
-        /* Done */
-        return 0;
-
-      Overflow:
-        PyErr_SetString(PyExc_OverflowError,
-                        "float too large to pack with d format");
-        return -1;
-    }
-    else {
-        const char *s = (char*)&x;
-        int i, incr = 1;
-
-        if ((double_format == ieee_little_endian_format && !le)
-            || (double_format == ieee_big_endian_format && le)) {
-            p += 7;
-            incr = -1;
-        }
-
-        for (i = 0; i < 8; i++) {
-            *p = *s++;
-            p += incr;
-        }
-        return 0;
-    }
-}
-
-double
-_PyFloat_Unpack4(const unsigned char *p, int le)
-{
-    if (float_format == unknown_format) {
-        unsigned char sign;
-        int e;
-        unsigned int f;
-        double x;
-        int incr = 1;
-
-        if (le) {
-            p += 3;
-            incr = -1;
-        }
-
-        /* First byte */
-        sign = (*p >> 7) & 1;
-        e = (*p & 0x7F) << 1;
-        p += incr;
-
-        /* Second byte */
-        e |= (*p >> 7) & 1;
-        f = (*p & 0x7F) << 16;
-        p += incr;
-
-        if (e == 255) {
-            PyErr_SetString(
-                PyExc_ValueError,
-                "can't unpack IEEE 754 special value "
-                "on non-IEEE platform");
-            return -1;
-        }
-
-        /* Third byte */
-        f |= *p << 8;
-        p += incr;
-
-        /* Fourth byte */
-        f |= *p;
-
-        x = (double)f / 8388608.0;
-
-        /* XXX This sadly ignores Inf/NaN issues */
-        if (e == 0)
-            e = -126;
-        else {
-            x += 1.0;
-            e -= 127;
-        }
-        x = ldexp(x, e);
-
-        if (sign)
-            x = -x;
-
-        return x;
-    }
-    else {
-        float x;
-
-        if ((float_format == ieee_little_endian_format && !le)
-            || (float_format == ieee_big_endian_format && le)) {
-            char buf[4];
-            char *d = &buf[3];
-            int i;
-
-            for (i = 0; i < 4; i++) {
-                *d-- = *p++;
-            }
-            memcpy(&x, buf, 4);
-        }
-        else {
-            memcpy(&x, p, 4);
-        }
-
-        return x;
-    }
-}
-
-double
-_PyFloat_Unpack8(const unsigned char *p, int le)
-{
-    if (double_format == unknown_format) {
-        unsigned char sign;
-        int e;
-        unsigned int fhi, flo;
-        double x;
-        int incr = 1;
-
-        if (le) {
-            p += 7;
-            incr = -1;
-        }
-
-        /* First byte */
-        sign = (*p >> 7) & 1;
-        e = (*p & 0x7F) << 4;
-
-        p += incr;
-
-        /* Second byte */
-        e |= (*p >> 4) & 0xF;
-        fhi = (*p & 0xF) << 24;
-        p += incr;
-
-        if (e == 2047) {
-            PyErr_SetString(
-                PyExc_ValueError,
-                "can't unpack IEEE 754 special value "
-                "on non-IEEE platform");
-            return -1.0;
-        }
-
-        /* Third byte */
-        fhi |= *p << 16;
-        p += incr;
-
-        /* Fourth byte */
-        fhi |= *p  << 8;
-        p += incr;
-
-        /* Fifth byte */
-        fhi |= *p;
-        p += incr;
-
-        /* Sixth byte */
-        flo = *p << 16;
-        p += incr;
-
-        /* Seventh byte */
-        flo |= *p << 8;
-        p += incr;
-
-        /* Eighth byte */
-        flo |= *p;
-
-        x = (double)fhi + (double)flo / 16777216.0; /* 2**24 */
-        x /= 268435456.0; /* 2**28 */
-
-        if (e == 0)
-            e = -1022;
-        else {
-            x += 1.0;
-            e -= 1023;
-        }
-        x = ldexp(x, e);
-
-        if (sign)
-            x = -x;
-
-        return x;
-    }
-    else {
-        double x;
-
-        if ((double_format == ieee_little_endian_format && !le)
-            || (double_format == ieee_big_endian_format && le)) {
-            char buf[8];
-            char *d = &buf[7];
-            int i;
-
-            for (i = 0; i < 8; i++) {
-                *d-- = *p++;
-            }
-            memcpy(&x, buf, 8);
-        }
-        else {
-            memcpy(&x, p, 8);
-        }
-
-        return x;
-    }
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/frameobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/frameobject.c
deleted file mode 100644
index 7a9f245..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/frameobject.c
+++ /dev/null
@@ -1,982 +0,0 @@
-/* Frame object implementation */
-
-#include "Python.h"
-
-#include "code.h"
-#include "frameobject.h"
-#include "opcode.h"
-#include "structmember.h"
-
-#undef MIN
-#undef MAX
-#define MIN(a, b) ((a) < (b) ? (a) : (b))
-#define MAX(a, b) ((a) > (b) ? (a) : (b))
-
-#define OFF(x) offsetof(PyFrameObject, x)
-
-static PyMemberDef frame_memberlist[] = {
-    {"f_back",          T_OBJECT,       OFF(f_back),    RO},
-    {"f_code",          T_OBJECT,       OFF(f_code),    RO},
-    {"f_builtins",      T_OBJECT,       OFF(f_builtins),RO},
-    {"f_globals",       T_OBJECT,       OFF(f_globals), RO},
-    {"f_lasti",         T_INT,          OFF(f_lasti),   RO},
-    {NULL}      /* Sentinel */
-};
-
-#define WARN_GET_SET(NAME) \
-static PyObject * frame_get_ ## NAME(PyFrameObject *f) { \
-    if (PyErr_WarnPy3k(#NAME " has been removed in 3.x", 2) < 0) \
-        return NULL; \
-    if (f->NAME) { \
-        Py_INCREF(f->NAME); \
-        return f->NAME; \
-    } \
-    Py_RETURN_NONE;     \
-} \
-static int frame_set_ ## NAME(PyFrameObject *f, PyObject *new) { \
-    if (PyErr_WarnPy3k(#NAME " has been removed in 3.x", 2) < 0) \
-        return -1; \
-    if (f->NAME) { \
-        Py_CLEAR(f->NAME); \
-    } \
-    if (new == Py_None) \
-        new = NULL; \
-    Py_XINCREF(new); \
-    f->NAME = new; \
-    return 0; \
-}
-
-
-WARN_GET_SET(f_exc_traceback)
-WARN_GET_SET(f_exc_type)
-WARN_GET_SET(f_exc_value)
-
-
-static PyObject *
-frame_getlocals(PyFrameObject *f, void *closure)
-{
-    PyFrame_FastToLocals(f);
-    Py_INCREF(f->f_locals);
-    return f->f_locals;
-}
-
-int
-PyFrame_GetLineNumber(PyFrameObject *f)
-{
-    if (f->f_trace)
-        return f->f_lineno;
-    else
-        return PyCode_Addr2Line(f->f_code, f->f_lasti);
-}
-
-static PyObject *
-frame_getlineno(PyFrameObject *f, void *closure)
-{
-    return PyInt_FromLong(PyFrame_GetLineNumber(f));
-}
-
-/* Setter for f_lineno - you can set f_lineno from within a trace function in
- * order to jump to a given line of code, subject to some restrictions.  Most
- * lines are OK to jump to because they don't make any assumptions about the
- * state of the stack (obvious because you could remove the line and the code
- * would still work without any stack errors), but there are some constructs
- * that limit jumping:
- *
- *  o Lines with an 'except' statement on them can't be jumped to, because
- *    they expect an exception to be on the top of the stack.
- *  o Lines that live in a 'finally' block can't be jumped from or to, since
- *    the END_FINALLY expects to clean up the stack after the 'try' block.
- *  o 'try'/'for'/'while' blocks can't be jumped into because the blockstack
- *    needs to be set up before their code runs, and for 'for' loops the
- *    iterator needs to be on the stack.
- */
-static int
-frame_setlineno(PyFrameObject *f, PyObject* p_new_lineno)
-{
-    int new_lineno = 0;                 /* The new value of f_lineno */
-    int new_lasti = 0;                  /* The new value of f_lasti */
-    int new_iblock = 0;                 /* The new value of f_iblock */
-    unsigned char *code = NULL;         /* The bytecode for the frame... */
-    Py_ssize_t code_len = 0;            /* ...and its length */
-    unsigned char *lnotab = NULL;       /* Iterating over co_lnotab */
-    Py_ssize_t lnotab_len = 0;          /* (ditto) */
-    int offset = 0;                     /* (ditto) */
-    int line = 0;                       /* (ditto) */
-    int addr = 0;                       /* (ditto) */
-    int min_addr = 0;                   /* Scanning the SETUPs and POPs */
-    int max_addr = 0;                   /* (ditto) */
-    int delta_iblock = 0;               /* (ditto) */
-    int min_delta_iblock = 0;           /* (ditto) */
-    int min_iblock = 0;                 /* (ditto) */
-    int f_lasti_setup_addr = 0;         /* Policing no-jump-into-finally */
-    int new_lasti_setup_addr = 0;       /* (ditto) */
-    int blockstack[CO_MAXBLOCKS];       /* Walking the 'finally' blocks */
-    int in_finally[CO_MAXBLOCKS];       /* (ditto) */
-    int blockstack_top = 0;             /* (ditto) */
-    unsigned char setup_op = 0;         /* (ditto) */
-
-    /* f_lineno must be an integer. */
-    if (!PyInt_Check(p_new_lineno)) {
-        PyErr_SetString(PyExc_ValueError,
-                        "lineno must be an integer");
-        return -1;
-    }
-
-    /* You can only do this from within a trace function, not via
-     * _getframe or similar hackery. */
-    if (!f->f_trace)
-    {
-        PyErr_Format(PyExc_ValueError,
-                     "f_lineno can only be set by a"
-                     " line trace function");
-        return -1;
-    }
-
-    /* Fail if the line comes before the start of the code block. */
-    new_lineno = (int) PyInt_AsLong(p_new_lineno);
-    if (new_lineno < f->f_code->co_firstlineno) {
-        PyErr_Format(PyExc_ValueError,
-                     "line %d comes before the current code block",
-                     new_lineno);
-        return -1;
-    }
-    else if (new_lineno == f->f_code->co_firstlineno) {
-        new_lasti = 0;
-        new_lineno = f->f_code->co_firstlineno;
-    }
-    else {
-        /* Find the bytecode offset for the start of the given
-         * line, or the first code-owning line after it. */
-        char *tmp;
-        PyString_AsStringAndSize(f->f_code->co_lnotab,
-                                 &tmp, &lnotab_len);
-        lnotab = (unsigned char *) tmp;
-        addr = 0;
-        line = f->f_code->co_firstlineno;
-        new_lasti = -1;
-        for (offset = 0; offset < lnotab_len; offset += 2) {
-            addr += lnotab[offset];
-            line += lnotab[offset+1];
-            if (line >= new_lineno) {
-                new_lasti = addr;
-                new_lineno = line;
-                break;
-            }
-        }
-    }
-
-    /* If we didn't reach the requested line, return an error. */
-    if (new_lasti == -1) {
-        PyErr_Format(PyExc_ValueError,
-                     "line %d comes after the current code block",
-                     new_lineno);
-        return -1;
-    }
-
-    /* We're now ready to look at the bytecode. */
-    PyString_AsStringAndSize(f->f_code->co_code, (char **)&code, &code_len);
-    min_addr = MIN(new_lasti, f->f_lasti);
-    max_addr = MAX(new_lasti, f->f_lasti);
-
-    /* You can't jump onto a line with an 'except' statement on it -
-     * they expect to have an exception on the top of the stack, which
-     * won't be true if you jump to them.  They always start with code
-     * that either pops the exception using POP_TOP (plain 'except:'
-     * lines do this) or duplicates the exception on the stack using
-     * DUP_TOP (if there's an exception type specified).  See compile.c,
-     * 'com_try_except' for the full details.  There aren't any other
-     * cases (AFAIK) where a line's code can start with DUP_TOP or
-     * POP_TOP, but if any ever appear, they'll be subject to the same
-     * restriction (but with a different error message). */
-    if (code[new_lasti] == DUP_TOP || code[new_lasti] == POP_TOP) {
-        PyErr_SetString(PyExc_ValueError,
-            "can't jump to 'except' line as there's no exception");
-        return -1;
-    }
-
-    /* You can't jump into or out of a 'finally' block because the 'try'
-     * block leaves something on the stack for the END_FINALLY to clean
-     * up.      So we walk the bytecode, maintaining a simulated blockstack.
-     * When we reach the old or new address and it's in a 'finally' block
-     * we note the address of the corresponding SETUP_FINALLY.  The jump
-     * is only legal if neither address is in a 'finally' block or
-     * they're both in the same one.  'blockstack' is a stack of the
-     * bytecode addresses of the SETUP_X opcodes, and 'in_finally' tracks
-     * whether we're in a 'finally' block at each blockstack level. */
-    f_lasti_setup_addr = -1;
-    new_lasti_setup_addr = -1;
-    memset(blockstack, '\0', sizeof(blockstack));
-    memset(in_finally, '\0', sizeof(in_finally));
-    blockstack_top = 0;
-    for (addr = 0; addr < code_len; addr++) {
-        unsigned char op = code[addr];
-        switch (op) {
-        case SETUP_LOOP:
-        case SETUP_EXCEPT:
-        case SETUP_FINALLY:
-            blockstack[blockstack_top++] = addr;
-            in_finally[blockstack_top-1] = 0;
-            break;
-
-        case POP_BLOCK:
-            assert(blockstack_top > 0);
-            setup_op = code[blockstack[blockstack_top-1]];
-            if (setup_op == SETUP_FINALLY) {
-                in_finally[blockstack_top-1] = 1;
-            }
-            else {
-                blockstack_top--;
-            }
-            break;
-
-        case END_FINALLY:
-            /* Ignore END_FINALLYs for SETUP_EXCEPTs - they exist
-             * in the bytecode but don't correspond to an actual
-             * 'finally' block.  (If blockstack_top is 0, we must
-             * be seeing such an END_FINALLY.) */
-            if (blockstack_top > 0) {
-                setup_op = code[blockstack[blockstack_top-1]];
-                if (setup_op == SETUP_FINALLY) {
-                    blockstack_top--;
-                }
-            }
-            break;
-        }
-
-        /* For the addresses we're interested in, see whether they're
-         * within a 'finally' block and if so, remember the address
-         * of the SETUP_FINALLY. */
-        if (addr == new_lasti || addr == f->f_lasti) {
-            int i = 0;
-            int setup_addr = -1;
-            for (i = blockstack_top-1; i >= 0; i--) {
-                if (in_finally[i]) {
-                    setup_addr = blockstack[i];
-                    break;
-                }
-            }
-
-            if (setup_addr != -1) {
-                if (addr == new_lasti) {
-                    new_lasti_setup_addr = setup_addr;
-                }
-
-                if (addr == f->f_lasti) {
-                    f_lasti_setup_addr = setup_addr;
-                }
-            }
-        }
-
-        if (op >= HAVE_ARGUMENT) {
-            addr += 2;
-        }
-    }
-
-    /* Verify that the blockstack tracking code didn't get lost. */
-    assert(blockstack_top == 0);
-
-    /* After all that, are we jumping into / out of a 'finally' block? */
-    if (new_lasti_setup_addr != f_lasti_setup_addr) {
-        PyErr_SetString(PyExc_ValueError,
-                    "can't jump into or out of a 'finally' block");
-        return -1;
-    }
-
-
-    /* Police block-jumping (you can't jump into the middle of a block)
-     * and ensure that the blockstack finishes up in a sensible state (by
-     * popping any blocks we're jumping out of).  We look at all the
-     * blockstack operations between the current position and the new
-     * one, and keep track of how many blocks we drop out of on the way.
-     * By also keeping track of the lowest blockstack position we see, we
-     * can tell whether the jump goes into any blocks without coming out
-     * again - in that case we raise an exception below. */
-    delta_iblock = 0;
-    for (addr = min_addr; addr < max_addr; addr++) {
-        unsigned char op = code[addr];
-        switch (op) {
-        case SETUP_LOOP:
-        case SETUP_EXCEPT:
-        case SETUP_FINALLY:
-            delta_iblock++;
-            break;
-
-        case POP_BLOCK:
-            delta_iblock--;
-            break;
-        }
-
-        min_delta_iblock = MIN(min_delta_iblock, delta_iblock);
-
-        if (op >= HAVE_ARGUMENT) {
-            addr += 2;
-        }
-    }
-
-    /* Derive the absolute iblock values from the deltas. */
-    min_iblock = f->f_iblock + min_delta_iblock;
-    if (new_lasti > f->f_lasti) {
-        /* Forwards jump. */
-        new_iblock = f->f_iblock + delta_iblock;
-    }
-    else {
-        /* Backwards jump. */
-        new_iblock = f->f_iblock - delta_iblock;
-    }
-
-    /* Are we jumping into a block? */
-    if (new_iblock > min_iblock) {
-        PyErr_SetString(PyExc_ValueError,
-                        "can't jump into the middle of a block");
-        return -1;
-    }
-
-    /* Pop any blocks that we're jumping out of. */
-    while (f->f_iblock > new_iblock) {
-        PyTryBlock *b = &f->f_blockstack[--f->f_iblock];
-        while ((f->f_stacktop - f->f_valuestack) > b->b_level) {
-            PyObject *v = (*--f->f_stacktop);
-            Py_DECREF(v);
-        }
-    }
-
-    /* Finally set the new f_lineno and f_lasti and return OK. */
-    f->f_lineno = new_lineno;
-    f->f_lasti = new_lasti;
-    return 0;
-}
-
-static PyObject *
-frame_gettrace(PyFrameObject *f, void *closure)
-{
-    PyObject* trace = f->f_trace;
-
-    if (trace == NULL)
-        trace = Py_None;
-
-    Py_INCREF(trace);
-
-    return trace;
-}
-
-static int
-frame_settrace(PyFrameObject *f, PyObject* v, void *closure)
-{
-    PyObject* old_value;
-
-    /* We rely on f_lineno being accurate when f_trace is set. */
-    f->f_lineno = PyFrame_GetLineNumber(f);
-
-    old_value = f->f_trace;
-    Py_XINCREF(v);
-    f->f_trace = v;
-    Py_XDECREF(old_value);
-
-    return 0;
-}
-
-static PyObject *
-frame_getrestricted(PyFrameObject *f, void *closure)
-{
-    return PyBool_FromLong(PyFrame_IsRestricted(f));
-}
-
-static PyGetSetDef frame_getsetlist[] = {
-    {"f_locals",        (getter)frame_getlocals, NULL, NULL},
-    {"f_lineno",        (getter)frame_getlineno,
-                    (setter)frame_setlineno, NULL},
-    {"f_trace",         (getter)frame_gettrace, (setter)frame_settrace, NULL},
-    {"f_restricted",(getter)frame_getrestricted,NULL, NULL},
-    {"f_exc_traceback", (getter)frame_get_f_exc_traceback,
-                    (setter)frame_set_f_exc_traceback, NULL},
-    {"f_exc_type",  (getter)frame_get_f_exc_type,
-                    (setter)frame_set_f_exc_type, NULL},
-    {"f_exc_value", (getter)frame_get_f_exc_value,
-                    (setter)frame_set_f_exc_value, NULL},
-    {0}
-};
-
-/* Stack frames are allocated and deallocated at a considerable rate.
-   In an attempt to improve the speed of function calls, we:
-
-   1. Hold a single "zombie" frame on each code object. This retains
-   the allocated and initialised frame object from an invocation of
-   the code object. The zombie is reanimated the next time we need a
-   frame object for that code object. Doing this saves the malloc/
-   realloc required when using a free_list frame that isn't the
-   correct size. It also saves some field initialisation.
-
-   In zombie mode, no field of PyFrameObject holds a reference, but
-   the following fields are still valid:
-
-     * ob_type, ob_size, f_code, f_valuestack;
-
-     * f_locals, f_trace,
-       f_exc_type, f_exc_value, f_exc_traceback are NULL;
-
-     * f_localsplus does not require re-allocation and
-       the local variables in f_localsplus are NULL.
-
-   2. We also maintain a separate free list of stack frames (just like
-   integers are allocated in a special way -- see intobject.c).  When
-   a stack frame is on the free list, only the following members have
-   a meaning:
-    ob_type             == &Frametype
-    f_back              next item on free list, or NULL
-    f_stacksize         size of value stack
-    ob_size             size of localsplus
-   Note that the value and block stacks are preserved -- this can save
-   another malloc() call or two (and two free() calls as well!).
-   Also note that, unlike for integers, each frame object is a
-   malloc'ed object in its own right -- it is only the actual calls to
-   malloc() that we are trying to save here, not the administration.
-   After all, while a typical program may make millions of calls, a
-   call depth of more than 20 or 30 is probably already exceptional
-   unless the program contains run-away recursion.  I hope.
-
-   Later, PyFrame_MAXFREELIST was added to bound the # of frames saved on
-   free_list.  Else programs creating lots of cyclic trash involving
-   frames could provoke free_list into growing without bound.
-*/
-
-static PyFrameObject *free_list = NULL;
-static int numfree = 0;         /* number of frames currently in free_list */
-/* max value for numfree */
-#define PyFrame_MAXFREELIST 200
-
-static void
-frame_dealloc(PyFrameObject *f)
-{
-    PyObject **p, **valuestack;
-    PyCodeObject *co;
-
-    PyObject_GC_UnTrack(f);
-    Py_TRASHCAN_SAFE_BEGIN(f)
-    /* Kill all local variables */
-    valuestack = f->f_valuestack;
-    for (p = f->f_localsplus; p < valuestack; p++)
-        Py_CLEAR(*p);
-
-    /* Free stack */
-    if (f->f_stacktop != NULL) {
-        for (p = valuestack; p < f->f_stacktop; p++)
-            Py_XDECREF(*p);
-    }
-
-    Py_XDECREF(f->f_back);
-    Py_DECREF(f->f_builtins);
-    Py_DECREF(f->f_globals);
-    Py_CLEAR(f->f_locals);
-    Py_CLEAR(f->f_trace);
-    Py_CLEAR(f->f_exc_type);
-    Py_CLEAR(f->f_exc_value);
-    Py_CLEAR(f->f_exc_traceback);
-
-    co = f->f_code;
-    if (co->co_zombieframe == NULL)
-        co->co_zombieframe = f;
-    else if (numfree < PyFrame_MAXFREELIST) {
-        ++numfree;
-        f->f_back = free_list;
-        free_list = f;
-    }
-    else
-        PyObject_GC_Del(f);
-
-    Py_DECREF(co);
-    Py_TRASHCAN_SAFE_END(f)
-}
-
-static int
-frame_traverse(PyFrameObject *f, visitproc visit, void *arg)
-{
-    PyObject **fastlocals, **p;
-    int i, slots;
-
-    Py_VISIT(f->f_back);
-    Py_VISIT(f->f_code);
-    Py_VISIT(f->f_builtins);
-    Py_VISIT(f->f_globals);
-    Py_VISIT(f->f_locals);
-    Py_VISIT(f->f_trace);
-    Py_VISIT(f->f_exc_type);
-    Py_VISIT(f->f_exc_value);
-    Py_VISIT(f->f_exc_traceback);
-
-    /* locals */
-    slots = f->f_code->co_nlocals + PyTuple_GET_SIZE(f->f_code->co_cellvars) + PyTuple_GET_SIZE(f->f_code->co_freevars);
-    fastlocals = f->f_localsplus;
-    for (i = slots; --i >= 0; ++fastlocals)
-        Py_VISIT(*fastlocals);
-
-    /* stack */
-    if (f->f_stacktop != NULL) {
-        for (p = f->f_valuestack; p < f->f_stacktop; p++)
-            Py_VISIT(*p);
-    }
-    return 0;
-}
-
-static void
-frame_clear(PyFrameObject *f)
-{
-    PyObject **fastlocals, **p, **oldtop;
-    int i, slots;
-
-    /* Before anything else, make sure that this frame is clearly marked
-     * as being defunct!  Else, e.g., a generator reachable from this
-     * frame may also point to this frame, believe itself to still be
-     * active, and try cleaning up this frame again.
-     */
-    oldtop = f->f_stacktop;
-    f->f_stacktop = NULL;
-
-    Py_CLEAR(f->f_exc_type);
-    Py_CLEAR(f->f_exc_value);
-    Py_CLEAR(f->f_exc_traceback);
-    Py_CLEAR(f->f_trace);
-
-    /* locals */
-    slots = f->f_code->co_nlocals + PyTuple_GET_SIZE(f->f_code->co_cellvars) + PyTuple_GET_SIZE(f->f_code->co_freevars);
-    fastlocals = f->f_localsplus;
-    for (i = slots; --i >= 0; ++fastlocals)
-        Py_CLEAR(*fastlocals);
-
-    /* stack */
-    if (oldtop != NULL) {
-        for (p = f->f_valuestack; p < oldtop; p++)
-            Py_CLEAR(*p);
-    }
-}
-
-static PyObject *
-frame_sizeof(PyFrameObject *f)
-{
-    Py_ssize_t res, extras, ncells, nfrees;
-
-    ncells = PyTuple_GET_SIZE(f->f_code->co_cellvars);
-    nfrees = PyTuple_GET_SIZE(f->f_code->co_freevars);
-    extras = f->f_code->co_stacksize + f->f_code->co_nlocals +
-             ncells + nfrees;
-    /* subtract one as it is already included in PyFrameObject */
-    res = sizeof(PyFrameObject) + (extras-1) * sizeof(PyObject *);
-
-    return PyInt_FromSsize_t(res);
-}
-
-PyDoc_STRVAR(sizeof__doc__,
-"F.__sizeof__() -> size of F in memory, in bytes");
-
-static PyMethodDef frame_methods[] = {
-    {"__sizeof__",      (PyCFunction)frame_sizeof,      METH_NOARGS,
-     sizeof__doc__},
-    {NULL,              NULL}   /* sentinel */
-};
-
-PyTypeObject PyFrame_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "frame",
-    sizeof(PyFrameObject),
-    sizeof(PyObject *),
-    (destructor)frame_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    PyObject_GenericSetAttr,                    /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)frame_traverse,               /* tp_traverse */
-    (inquiry)frame_clear,                       /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    frame_methods,                              /* tp_methods */
-    frame_memberlist,                           /* tp_members */
-    frame_getsetlist,                           /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-};
-
-static PyObject *builtin_object;
-
-int _PyFrame_Init()
-{
-    builtin_object = PyString_InternFromString("__builtins__");
-    if (builtin_object == NULL)
-        return 0;
-    return 1;
-}
-
-PyFrameObject *
-PyFrame_New(PyThreadState *tstate, PyCodeObject *code, PyObject *globals,
-            PyObject *locals)
-{
-    PyFrameObject *back = tstate->frame;
-    PyFrameObject *f;
-    PyObject *builtins;
-    Py_ssize_t i;
-
-#ifdef Py_DEBUG
-    if (code == NULL || globals == NULL || !PyDict_Check(globals) ||
-        (locals != NULL && !PyMapping_Check(locals))) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-#endif
-    if (back == NULL || back->f_globals != globals) {
-        builtins = PyDict_GetItem(globals, builtin_object);
-        if (builtins) {
-            if (PyModule_Check(builtins)) {
-                builtins = PyModule_GetDict(builtins);
-                assert(!builtins || PyDict_Check(builtins));
-            }
-            else if (!PyDict_Check(builtins))
-                builtins = NULL;
-        }
-        if (builtins == NULL) {
-            /* No builtins!              Make up a minimal one
-               Give them 'None', at least. */
-            builtins = PyDict_New();
-            if (builtins == NULL ||
-                PyDict_SetItemString(
-                    builtins, "None", Py_None) < 0)
-                return NULL;
-        }
-        else
-            Py_INCREF(builtins);
-
-    }
-    else {
-        /* If we share the globals, we share the builtins.
-           Save a lookup and a call. */
-        builtins = back->f_builtins;
-        assert(builtins != NULL && PyDict_Check(builtins));
-        Py_INCREF(builtins);
-    }
-    if (code->co_zombieframe != NULL) {
-        f = code->co_zombieframe;
-        code->co_zombieframe = NULL;
-        _Py_NewReference((PyObject *)f);
-        assert(f->f_code == code);
-    }
-    else {
-        Py_ssize_t extras, ncells, nfrees;
-        ncells = PyTuple_GET_SIZE(code->co_cellvars);
-        nfrees = PyTuple_GET_SIZE(code->co_freevars);
-        extras = code->co_stacksize + code->co_nlocals + ncells +
-            nfrees;
-        if (free_list == NULL) {
-            f = PyObject_GC_NewVar(PyFrameObject, &PyFrame_Type,
-            extras);
-            if (f == NULL) {
-                Py_DECREF(builtins);
-                return NULL;
-            }
-        }
-        else {
-            assert(numfree > 0);
-            --numfree;
-            f = free_list;
-            free_list = free_list->f_back;
-            if (Py_SIZE(f) < extras) {
-                f = PyObject_GC_Resize(PyFrameObject, f, extras);
-                if (f == NULL) {
-                    Py_DECREF(builtins);
-                    return NULL;
-                }
-            }
-            _Py_NewReference((PyObject *)f);
-        }
-
-        f->f_code = code;
-        extras = code->co_nlocals + ncells + nfrees;
-        f->f_valuestack = f->f_localsplus + extras;
-        for (i=0; i<extras; i++)
-            f->f_localsplus[i] = NULL;
-        f->f_locals = NULL;
-        f->f_trace = NULL;
-        f->f_exc_type = f->f_exc_value = f->f_exc_traceback = NULL;
-    }
-    f->f_stacktop = f->f_valuestack;
-    f->f_builtins = builtins;
-    Py_XINCREF(back);
-    f->f_back = back;
-    Py_INCREF(code);
-    Py_INCREF(globals);
-    f->f_globals = globals;
-    /* Most functions have CO_NEWLOCALS and CO_OPTIMIZED set. */
-    if ((code->co_flags & (CO_NEWLOCALS | CO_OPTIMIZED)) ==
-        (CO_NEWLOCALS | CO_OPTIMIZED))
-        ; /* f_locals = NULL; will be set by PyFrame_FastToLocals() */
-    else if (code->co_flags & CO_NEWLOCALS) {
-        locals = PyDict_New();
-        if (locals == NULL) {
-            Py_DECREF(f);
-            return NULL;
-        }
-        f->f_locals = locals;
-    }
-    else {
-        if (locals == NULL)
-            locals = globals;
-        Py_INCREF(locals);
-        f->f_locals = locals;
-    }
-    f->f_tstate = tstate;
-
-    f->f_lasti = -1;
-    f->f_lineno = code->co_firstlineno;
-    f->f_iblock = 0;
-
-    _PyObject_GC_TRACK(f);
-    return f;
-}
-
-/* Block management */
-
-void
-PyFrame_BlockSetup(PyFrameObject *f, int type, int handler, int level)
-{
-    PyTryBlock *b;
-    if (f->f_iblock >= CO_MAXBLOCKS)
-        Py_FatalError("XXX block stack overflow");
-    b = &f->f_blockstack[f->f_iblock++];
-    b->b_type = type;
-    b->b_level = level;
-    b->b_handler = handler;
-}
-
-PyTryBlock *
-PyFrame_BlockPop(PyFrameObject *f)
-{
-    PyTryBlock *b;
-    if (f->f_iblock <= 0)
-        Py_FatalError("XXX block stack underflow");
-    b = &f->f_blockstack[--f->f_iblock];
-    return b;
-}
-
-/* Convert between "fast" version of locals and dictionary version.
-
-   map and values are input arguments.  map is a tuple of strings.
-   values is an array of PyObject*.  At index i, map[i] is the name of
-   the variable with value values[i].  The function copies the first
-   nmap variable from map/values into dict.  If values[i] is NULL,
-   the variable is deleted from dict.
-
-   If deref is true, then the values being copied are cell variables
-   and the value is extracted from the cell variable before being put
-   in dict.
-
-   Exceptions raised while modifying the dict are silently ignored,
-   because there is no good way to report them.
- */
-
-static void
-map_to_dict(PyObject *map, Py_ssize_t nmap, PyObject *dict, PyObject **values,
-            int deref)
-{
-    Py_ssize_t j;
-    assert(PyTuple_Check(map));
-    assert(PyDict_Check(dict));
-    assert(PyTuple_Size(map) >= nmap);
-    for (j = nmap; --j >= 0; ) {
-        PyObject *key = PyTuple_GET_ITEM(map, j);
-        PyObject *value = values[j];
-        assert(PyString_Check(key));
-        if (deref) {
-            assert(PyCell_Check(value));
-            value = PyCell_GET(value);
-        }
-        if (value == NULL) {
-            if (PyObject_DelItem(dict, key) != 0)
-                PyErr_Clear();
-        }
-        else {
-            if (PyObject_SetItem(dict, key, value) != 0)
-                PyErr_Clear();
-        }
-    }
-}
-
-/* Copy values from the "locals" dict into the fast locals.
-
-   dict is an input argument containing string keys representing
-   variables names and arbitrary PyObject* as values.
-
-   map and values are input arguments.  map is a tuple of strings.
-   values is an array of PyObject*.  At index i, map[i] is the name of
-   the variable with value values[i].  The function copies the first
-   nmap variable from map/values into dict.  If values[i] is NULL,
-   the variable is deleted from dict.
-
-   If deref is true, then the values being copied are cell variables
-   and the value is extracted from the cell variable before being put
-   in dict.  If clear is true, then variables in map but not in dict
-   are set to NULL in map; if clear is false, variables missing in
-   dict are ignored.
-
-   Exceptions raised while modifying the dict are silently ignored,
-   because there is no good way to report them.
-*/
-
-static void
-dict_to_map(PyObject *map, Py_ssize_t nmap, PyObject *dict, PyObject **values,
-            int deref, int clear)
-{
-    Py_ssize_t j;
-    assert(PyTuple_Check(map));
-    assert(PyDict_Check(dict));
-    assert(PyTuple_Size(map) >= nmap);
-    for (j = nmap; --j >= 0; ) {
-        PyObject *key = PyTuple_GET_ITEM(map, j);
-        PyObject *value = PyObject_GetItem(dict, key);
-        assert(PyString_Check(key));
-        /* We only care about NULLs if clear is true. */
-        if (value == NULL) {
-            PyErr_Clear();
-            if (!clear)
-                continue;
-        }
-        if (deref) {
-            assert(PyCell_Check(values[j]));
-            if (PyCell_GET(values[j]) != value) {
-                if (PyCell_Set(values[j], value) < 0)
-                    PyErr_Clear();
-            }
-        } else if (values[j] != value) {
-            Py_XINCREF(value);
-            Py_XDECREF(values[j]);
-            values[j] = value;
-        }
-        Py_XDECREF(value);
-    }
-}
-
-void
-PyFrame_FastToLocals(PyFrameObject *f)
-{
-    /* Merge fast locals into f->f_locals */
-    PyObject *locals, *map;
-    PyObject **fast;
-    PyObject *error_type, *error_value, *error_traceback;
-    PyCodeObject *co;
-    Py_ssize_t j;
-    int ncells, nfreevars;
-    if (f == NULL)
-        return;
-    locals = f->f_locals;
-    if (locals == NULL) {
-        locals = f->f_locals = PyDict_New();
-        if (locals == NULL) {
-            PyErr_Clear(); /* Can't report it :-( */
-            return;
-        }
-    }
-    co = f->f_code;
-    map = co->co_varnames;
-    if (!PyTuple_Check(map))
-        return;
-    PyErr_Fetch(&error_type, &error_value, &error_traceback);
-    fast = f->f_localsplus;
-    j = PyTuple_GET_SIZE(map);
-    if (j > co->co_nlocals)
-        j = co->co_nlocals;
-    if (co->co_nlocals)
-        map_to_dict(map, j, locals, fast, 0);
-    ncells = PyTuple_GET_SIZE(co->co_cellvars);
-    nfreevars = PyTuple_GET_SIZE(co->co_freevars);
-    if (ncells || nfreevars) {
-        map_to_dict(co->co_cellvars, ncells,
-                    locals, fast + co->co_nlocals, 1);
-        /* If the namespace is unoptimized, then one of the
-           following cases applies:
-           1. It does not contain free variables, because it
-              uses import * or is a top-level namespace.
-           2. It is a class namespace.
-           We don't want to accidentally copy free variables
-           into the locals dict used by the class.
-        */
-        if (co->co_flags & CO_OPTIMIZED) {
-            map_to_dict(co->co_freevars, nfreevars,
-                        locals, fast + co->co_nlocals + ncells, 1);
-        }
-    }
-    PyErr_Restore(error_type, error_value, error_traceback);
-}
-
-void
-PyFrame_LocalsToFast(PyFrameObject *f, int clear)
-{
-    /* Merge f->f_locals into fast locals */
-    PyObject *locals, *map;
-    PyObject **fast;
-    PyObject *error_type, *error_value, *error_traceback;
-    PyCodeObject *co;
-    Py_ssize_t j;
-    int ncells, nfreevars;
-    if (f == NULL)
-        return;
-    locals = f->f_locals;
-    co = f->f_code;
-    map = co->co_varnames;
-    if (locals == NULL)
-        return;
-    if (!PyTuple_Check(map))
-        return;
-    PyErr_Fetch(&error_type, &error_value, &error_traceback);
-    fast = f->f_localsplus;
-    j = PyTuple_GET_SIZE(map);
-    if (j > co->co_nlocals)
-        j = co->co_nlocals;
-    if (co->co_nlocals)
-        dict_to_map(co->co_varnames, j, locals, fast, 0, clear);
-    ncells = PyTuple_GET_SIZE(co->co_cellvars);
-    nfreevars = PyTuple_GET_SIZE(co->co_freevars);
-    if (ncells || nfreevars) {
-        dict_to_map(co->co_cellvars, ncells,
-                    locals, fast + co->co_nlocals, 1, clear);
-        /* Same test as in PyFrame_FastToLocals() above. */
-        if (co->co_flags & CO_OPTIMIZED) {
-            dict_to_map(co->co_freevars, nfreevars,
-                locals, fast + co->co_nlocals + ncells, 1,
-                clear);
-        }
-    }
-    PyErr_Restore(error_type, error_value, error_traceback);
-}
-
-/* Clear out the free list */
-int
-PyFrame_ClearFreeList(void)
-{
-    int freelist_size = numfree;
-
-    while (free_list != NULL) {
-        PyFrameObject *f = free_list;
-        free_list = free_list->f_back;
-        PyObject_GC_Del(f);
-        --numfree;
-    }
-    assert(numfree == 0);
-    return freelist_size;
-}
-
-void
-PyFrame_Fini(void)
-{
-    (void)PyFrame_ClearFreeList();
-    Py_XDECREF(builtin_object);
-    builtin_object = NULL;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/funcobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/funcobject.c
deleted file mode 100644
index ba7ffe1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/funcobject.c
+++ /dev/null
@@ -1,897 +0,0 @@
-
-/* Function object implementation */
-
-#include "Python.h"
-#include "code.h"
-#include "eval.h"
-#include "structmember.h"
-
-PyObject *
-PyFunction_New(PyObject *code, PyObject *globals)
-{
-    PyFunctionObject *op = PyObject_GC_New(PyFunctionObject,
-                                        &PyFunction_Type);
-    static PyObject *__name__ = 0;
-    if (op != NULL) {
-        PyObject *doc;
-        PyObject *consts;
-        PyObject *module;
-        op->func_weakreflist = NULL;
-        Py_INCREF(code);
-        op->func_code = code;
-        Py_INCREF(globals);
-        op->func_globals = globals;
-        op->func_name = ((PyCodeObject *)code)->co_name;
-        Py_INCREF(op->func_name);
-        op->func_defaults = NULL; /* No default arguments */
-        op->func_closure = NULL;
-        consts = ((PyCodeObject *)code)->co_consts;
-        if (PyTuple_Size(consts) >= 1) {
-            doc = PyTuple_GetItem(consts, 0);
-            if (!PyString_Check(doc) && !PyUnicode_Check(doc))
-                doc = Py_None;
-        }
-        else
-            doc = Py_None;
-        Py_INCREF(doc);
-        op->func_doc = doc;
-        op->func_dict = NULL;
-        op->func_module = NULL;
-
-        /* __module__: If module name is in globals, use it.
-           Otherwise, use None.
-        */
-        if (!__name__) {
-            __name__ = PyString_InternFromString("__name__");
-            if (!__name__) {
-                Py_DECREF(op);
-                return NULL;
-            }
-        }
-        module = PyDict_GetItem(globals, __name__);
-        if (module) {
-            Py_INCREF(module);
-            op->func_module = module;
-        }
-    }
-    else
-        return NULL;
-    _PyObject_GC_TRACK(op);
-    return (PyObject *)op;
-}
-
-PyObject *
-PyFunction_GetCode(PyObject *op)
-{
-    if (!PyFunction_Check(op)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return ((PyFunctionObject *) op) -> func_code;
-}
-
-PyObject *
-PyFunction_GetGlobals(PyObject *op)
-{
-    if (!PyFunction_Check(op)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return ((PyFunctionObject *) op) -> func_globals;
-}
-
-PyObject *
-PyFunction_GetModule(PyObject *op)
-{
-    if (!PyFunction_Check(op)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return ((PyFunctionObject *) op) -> func_module;
-}
-
-PyObject *
-PyFunction_GetDefaults(PyObject *op)
-{
-    if (!PyFunction_Check(op)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return ((PyFunctionObject *) op) -> func_defaults;
-}
-
-int
-PyFunction_SetDefaults(PyObject *op, PyObject *defaults)
-{
-    if (!PyFunction_Check(op)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    if (defaults == Py_None)
-        defaults = NULL;
-    else if (defaults && PyTuple_Check(defaults)) {
-        Py_INCREF(defaults);
-    }
-    else {
-        PyErr_SetString(PyExc_SystemError, "non-tuple default args");
-        return -1;
-    }
-    Py_XDECREF(((PyFunctionObject *) op) -> func_defaults);
-    ((PyFunctionObject *) op) -> func_defaults = defaults;
-    return 0;
-}
-
-PyObject *
-PyFunction_GetClosure(PyObject *op)
-{
-    if (!PyFunction_Check(op)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return ((PyFunctionObject *) op) -> func_closure;
-}
-
-int
-PyFunction_SetClosure(PyObject *op, PyObject *closure)
-{
-    if (!PyFunction_Check(op)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    if (closure == Py_None)
-        closure = NULL;
-    else if (PyTuple_Check(closure)) {
-        Py_INCREF(closure);
-    }
-    else {
-        PyErr_Format(PyExc_SystemError,
-                     "expected tuple for closure, got '%.100s'",
-                     closure->ob_type->tp_name);
-        return -1;
-    }
-    Py_XDECREF(((PyFunctionObject *) op) -> func_closure);
-    ((PyFunctionObject *) op) -> func_closure = closure;
-    return 0;
-}
-
-/* Methods */
-
-#define OFF(x) offsetof(PyFunctionObject, x)
-
-static PyMemberDef func_memberlist[] = {
-    {"func_closure",  T_OBJECT,     OFF(func_closure),
-     RESTRICTED|READONLY},
-    {"__closure__",  T_OBJECT,      OFF(func_closure),
-     RESTRICTED|READONLY},
-    {"func_doc",      T_OBJECT,     OFF(func_doc), PY_WRITE_RESTRICTED},
-    {"__doc__",       T_OBJECT,     OFF(func_doc), PY_WRITE_RESTRICTED},
-    {"func_globals",  T_OBJECT,     OFF(func_globals),
-     RESTRICTED|READONLY},
-    {"__globals__",  T_OBJECT,      OFF(func_globals),
-     RESTRICTED|READONLY},
-    {"__module__",    T_OBJECT,     OFF(func_module), PY_WRITE_RESTRICTED},
-    {NULL}  /* Sentinel */
-};
-
-static int
-restricted(void)
-{
-    if (!PyEval_GetRestricted())
-        return 0;
-    PyErr_SetString(PyExc_RuntimeError,
-        "function attributes not accessible in restricted mode");
-    return 1;
-}
-
-static PyObject *
-func_get_dict(PyFunctionObject *op)
-{
-    if (restricted())
-        return NULL;
-    if (op->func_dict == NULL) {
-        op->func_dict = PyDict_New();
-        if (op->func_dict == NULL)
-            return NULL;
-    }
-    Py_INCREF(op->func_dict);
-    return op->func_dict;
-}
-
-static int
-func_set_dict(PyFunctionObject *op, PyObject *value)
-{
-    PyObject *tmp;
-
-    if (restricted())
-        return -1;
-    /* It is illegal to del f.func_dict */
-    if (value == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "function's dictionary may not be deleted");
-        return -1;
-    }
-    /* Can only set func_dict to a dictionary */
-    if (!PyDict_Check(value)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "setting function's dictionary to a non-dict");
-        return -1;
-    }
-    tmp = op->func_dict;
-    Py_INCREF(value);
-    op->func_dict = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-
-static PyObject *
-func_get_code(PyFunctionObject *op)
-{
-    if (restricted())
-        return NULL;
-    Py_INCREF(op->func_code);
-    return op->func_code;
-}
-
-static int
-func_set_code(PyFunctionObject *op, PyObject *value)
-{
-    PyObject *tmp;
-    Py_ssize_t nfree, nclosure;
-
-    if (restricted())
-        return -1;
-    /* Not legal to del f.func_code or to set it to anything
-     * other than a code object. */
-    if (value == NULL || !PyCode_Check(value)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "__code__ must be set to a code object");
-        return -1;
-    }
-    nfree = PyCode_GetNumFree((PyCodeObject *)value);
-    nclosure = (op->func_closure == NULL ? 0 :
-            PyTuple_GET_SIZE(op->func_closure));
-    if (nclosure != nfree) {
-        PyErr_Format(PyExc_ValueError,
-                     "%s() requires a code object with %zd free vars,"
-                     " not %zd",
-                     PyString_AsString(op->func_name),
-                     nclosure, nfree);
-        return -1;
-    }
-    tmp = op->func_code;
-    Py_INCREF(value);
-    op->func_code = value;
-    Py_DECREF(tmp);
-    return 0;
-}
-
-static PyObject *
-func_get_name(PyFunctionObject *op)
-{
-    Py_INCREF(op->func_name);
-    return op->func_name;
-}
-
-static int
-func_set_name(PyFunctionObject *op, PyObject *value)
-{
-    PyObject *tmp;
-
-    if (restricted())
-        return -1;
-    /* Not legal to del f.func_name or to set it to anything
-     * other than a string object. */
-    if (value == NULL || !PyString_Check(value)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "__name__ must be set to a string object");
-        return -1;
-    }
-    tmp = op->func_name;
-    Py_INCREF(value);
-    op->func_name = value;
-    Py_DECREF(tmp);
-    return 0;
-}
-
-static PyObject *
-func_get_defaults(PyFunctionObject *op)
-{
-    if (restricted())
-        return NULL;
-    if (op->func_defaults == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    Py_INCREF(op->func_defaults);
-    return op->func_defaults;
-}
-
-static int
-func_set_defaults(PyFunctionObject *op, PyObject *value)
-{
-    PyObject *tmp;
-
-    if (restricted())
-        return -1;
-    /* Legal to del f.func_defaults.
-     * Can only set func_defaults to NULL or a tuple. */
-    if (value == Py_None)
-        value = NULL;
-    if (value != NULL && !PyTuple_Check(value)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "__defaults__ must be set to a tuple object");
-        return -1;
-    }
-    tmp = op->func_defaults;
-    Py_XINCREF(value);
-    op->func_defaults = value;
-    Py_XDECREF(tmp);
-    return 0;
-}
-
-static PyGetSetDef func_getsetlist[] = {
-    {"func_code", (getter)func_get_code, (setter)func_set_code},
-    {"__code__", (getter)func_get_code, (setter)func_set_code},
-    {"func_defaults", (getter)func_get_defaults,
-     (setter)func_set_defaults},
-    {"__defaults__", (getter)func_get_defaults,
-     (setter)func_set_defaults},
-    {"func_dict", (getter)func_get_dict, (setter)func_set_dict},
-    {"__dict__", (getter)func_get_dict, (setter)func_set_dict},
-    {"func_name", (getter)func_get_name, (setter)func_set_name},
-    {"__name__", (getter)func_get_name, (setter)func_set_name},
-    {NULL} /* Sentinel */
-};
-
-PyDoc_STRVAR(func_doc,
-"function(code, globals[, name[, argdefs[, closure]]])\n\
-\n\
-Create a function object from a code object and a dictionary.\n\
-The optional name string overrides the name from the code object.\n\
-The optional argdefs tuple specifies the default argument values.\n\
-The optional closure tuple supplies the bindings for free variables.");
-
-/* func_new() maintains the following invariants for closures.  The
-   closure must correspond to the free variables of the code object.
-
-   if len(code.co_freevars) == 0:
-       closure = NULL
-   else:
-       len(closure) == len(code.co_freevars)
-   for every elt in closure, type(elt) == cell
-*/
-
-static PyObject *
-func_new(PyTypeObject* type, PyObject* args, PyObject* kw)
-{
-    PyCodeObject *code;
-    PyObject *globals;
-    PyObject *name = Py_None;
-    PyObject *defaults = Py_None;
-    PyObject *closure = Py_None;
-    PyFunctionObject *newfunc;
-    Py_ssize_t nfree, nclosure;
-    static char *kwlist[] = {"code", "globals", "name",
-                             "argdefs", "closure", 0};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "O!O!|OOO:function",
-                          kwlist,
-                          &PyCode_Type, &code,
-                          &PyDict_Type, &globals,
-                          &name, &defaults, &closure))
-        return NULL;
-    if (name != Py_None && !PyString_Check(name)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "arg 3 (name) must be None or string");
-        return NULL;
-    }
-    if (defaults != Py_None && !PyTuple_Check(defaults)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "arg 4 (defaults) must be None or tuple");
-        return NULL;
-    }
-    nfree = PyTuple_GET_SIZE(code->co_freevars);
-    if (!PyTuple_Check(closure)) {
-        if (nfree && closure == Py_None) {
-            PyErr_SetString(PyExc_TypeError,
-                            "arg 5 (closure) must be tuple");
-            return NULL;
-        }
-        else if (closure != Py_None) {
-            PyErr_SetString(PyExc_TypeError,
-                "arg 5 (closure) must be None or tuple");
-            return NULL;
-        }
-    }
-
-    /* check that the closure is well-formed */
-    nclosure = closure == Py_None ? 0 : PyTuple_GET_SIZE(closure);
-    if (nfree != nclosure)
-        return PyErr_Format(PyExc_ValueError,
-                            "%s requires closure of length %zd, not %zd",
-                            PyString_AS_STRING(code->co_name),
-                            nfree, nclosure);
-    if (nclosure) {
-        Py_ssize_t i;
-        for (i = 0; i < nclosure; i++) {
-            PyObject *o = PyTuple_GET_ITEM(closure, i);
-            if (!PyCell_Check(o)) {
-                return PyErr_Format(PyExc_TypeError,
-                    "arg 5 (closure) expected cell, found %s",
-                                    o->ob_type->tp_name);
-            }
-        }
-    }
-
-    newfunc = (PyFunctionObject *)PyFunction_New((PyObject *)code,
-                                                 globals);
-    if (newfunc == NULL)
-        return NULL;
-
-    if (name != Py_None) {
-        Py_INCREF(name);
-        Py_DECREF(newfunc->func_name);
-        newfunc->func_name = name;
-    }
-    if (defaults != Py_None) {
-        Py_INCREF(defaults);
-        newfunc->func_defaults  = defaults;
-    }
-    if (closure != Py_None) {
-        Py_INCREF(closure);
-        newfunc->func_closure = closure;
-    }
-
-    return (PyObject *)newfunc;
-}
-
-static void
-func_dealloc(PyFunctionObject *op)
-{
-    _PyObject_GC_UNTRACK(op);
-    if (op->func_weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) op);
-    Py_DECREF(op->func_code);
-    Py_DECREF(op->func_globals);
-    Py_XDECREF(op->func_module);
-    Py_DECREF(op->func_name);
-    Py_XDECREF(op->func_defaults);
-    Py_XDECREF(op->func_doc);
-    Py_XDECREF(op->func_dict);
-    Py_XDECREF(op->func_closure);
-    PyObject_GC_Del(op);
-}
-
-static PyObject*
-func_repr(PyFunctionObject *op)
-{
-    return PyString_FromFormat("<function %s at %p>",
-                               PyString_AsString(op->func_name),
-                               op);
-}
-
-static int
-func_traverse(PyFunctionObject *f, visitproc visit, void *arg)
-{
-    Py_VISIT(f->func_code);
-    Py_VISIT(f->func_globals);
-    Py_VISIT(f->func_module);
-    Py_VISIT(f->func_defaults);
-    Py_VISIT(f->func_doc);
-    Py_VISIT(f->func_name);
-    Py_VISIT(f->func_dict);
-    Py_VISIT(f->func_closure);
-    return 0;
-}
-
-static PyObject *
-function_call(PyObject *func, PyObject *arg, PyObject *kw)
-{
-    PyObject *result;
-    PyObject *argdefs;
-    PyObject *kwtuple = NULL;
-    PyObject **d, **k;
-    Py_ssize_t nk, nd;
-
-    argdefs = PyFunction_GET_DEFAULTS(func);
-    if (argdefs != NULL && PyTuple_Check(argdefs)) {
-        d = &PyTuple_GET_ITEM((PyTupleObject *)argdefs, 0);
-        nd = PyTuple_GET_SIZE(argdefs);
-    }
-    else {
-        d = NULL;
-        nd = 0;
-    }
-
-    if (kw != NULL && PyDict_Check(kw)) {
-        Py_ssize_t pos, i;
-        nk = PyDict_Size(kw);
-        kwtuple = PyTuple_New(2*nk);
-        if (kwtuple == NULL)
-            return NULL;
-        k = &PyTuple_GET_ITEM(kwtuple, 0);
-        pos = i = 0;
-        while (PyDict_Next(kw, &pos, &k[i], &k[i+1])) {
-            Py_INCREF(k[i]);
-            Py_INCREF(k[i+1]);
-            i += 2;
-        }
-        nk = i/2;
-    }
-    else {
-        k = NULL;
-        nk = 0;
-    }
-
-    result = PyEval_EvalCodeEx(
-        (PyCodeObject *)PyFunction_GET_CODE(func),
-        PyFunction_GET_GLOBALS(func), (PyObject *)NULL,
-        &PyTuple_GET_ITEM(arg, 0), PyTuple_GET_SIZE(arg),
-        k, nk, d, nd,
-        PyFunction_GET_CLOSURE(func));
-
-    Py_XDECREF(kwtuple);
-
-    return result;
-}
-
-/* Bind a function to an object */
-static PyObject *
-func_descr_get(PyObject *func, PyObject *obj, PyObject *type)
-{
-    if (obj == Py_None)
-        obj = NULL;
-    return PyMethod_New(func, obj, type);
-}
-
-PyTypeObject PyFunction_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "function",
-    sizeof(PyFunctionObject),
-    0,
-    (destructor)func_dealloc,                   /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)func_repr,                        /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    function_call,                              /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    PyObject_GenericSetAttr,                    /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    func_doc,                                   /* tp_doc */
-    (traverseproc)func_traverse,                /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    offsetof(PyFunctionObject, func_weakreflist), /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    func_memberlist,                            /* tp_members */
-    func_getsetlist,                            /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    func_descr_get,                             /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    offsetof(PyFunctionObject, func_dict),      /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    func_new,                                   /* tp_new */
-};
-
-
-/* Class method object */
-
-/* A class method receives the class as implicit first argument,
-   just like an instance method receives the instance.
-   To declare a class method, use this idiom:
-
-     class C:
-     def f(cls, arg1, arg2, ...): ...
-     f = classmethod(f)
-
-   It can be called either on the class (e.g. C.f()) or on an instance
-   (e.g. C().f()); the instance is ignored except for its class.
-   If a class method is called for a derived class, the derived class
-   object is passed as the implied first argument.
-
-   Class methods are different than C++ or Java static methods.
-   If you want those, see static methods below.
-*/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *cm_callable;
-} classmethod;
-
-static void
-cm_dealloc(classmethod *cm)
-{
-    _PyObject_GC_UNTRACK((PyObject *)cm);
-    Py_XDECREF(cm->cm_callable);
-    Py_TYPE(cm)->tp_free((PyObject *)cm);
-}
-
-static int
-cm_traverse(classmethod *cm, visitproc visit, void *arg)
-{
-    Py_VISIT(cm->cm_callable);
-    return 0;
-}
-
-static int
-cm_clear(classmethod *cm)
-{
-    Py_CLEAR(cm->cm_callable);
-    return 0;
-}
-
-
-static PyObject *
-cm_descr_get(PyObject *self, PyObject *obj, PyObject *type)
-{
-    classmethod *cm = (classmethod *)self;
-
-    if (cm->cm_callable == NULL) {
-        PyErr_SetString(PyExc_RuntimeError,
-                        "uninitialized classmethod object");
-        return NULL;
-    }
-    if (type == NULL)
-        type = (PyObject *)(Py_TYPE(obj));
-    return PyMethod_New(cm->cm_callable,
-                        type, (PyObject *)(Py_TYPE(type)));
-}
-
-static int
-cm_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    classmethod *cm = (classmethod *)self;
-    PyObject *callable;
-
-    if (!PyArg_UnpackTuple(args, "classmethod", 1, 1, &callable))
-        return -1;
-    if (!_PyArg_NoKeywords("classmethod", kwds))
-        return -1;
-    Py_INCREF(callable);
-    cm->cm_callable = callable;
-    return 0;
-}
-
-static PyMemberDef cm_memberlist[] = {
-    {"__func__", T_OBJECT, offsetof(classmethod, cm_callable), READONLY},
-    {NULL}  /* Sentinel */
-};
-
-PyDoc_STRVAR(classmethod_doc,
-"classmethod(function) -> method\n\
-\n\
-Convert a function to be a class method.\n\
-\n\
-A class method receives the class as implicit first argument,\n\
-just like an instance method receives the instance.\n\
-To declare a class method, use this idiom:\n\
-\n\
-  class C:\n\
-      def f(cls, arg1, arg2, ...): ...\n\
-      f = classmethod(f)\n\
-\n\
-It can be called either on the class (e.g. C.f()) or on an instance\n\
-(e.g. C().f()).  The instance is ignored except for its class.\n\
-If a class method is called for a derived class, the derived class\n\
-object is passed as the implied first argument.\n\
-\n\
-Class methods are different than C++ or Java static methods.\n\
-If you want those, see the staticmethod builtin.");
-
-PyTypeObject PyClassMethod_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "classmethod",
-    sizeof(classmethod),
-    0,
-    (destructor)cm_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC,
-    classmethod_doc,                            /* tp_doc */
-    (traverseproc)cm_traverse,                  /* tp_traverse */
-    (inquiry)cm_clear,                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    cm_memberlist,              /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    cm_descr_get,                               /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    cm_init,                                    /* tp_init */
-    PyType_GenericAlloc,                        /* tp_alloc */
-    PyType_GenericNew,                          /* tp_new */
-    PyObject_GC_Del,                            /* tp_free */
-};
-
-PyObject *
-PyClassMethod_New(PyObject *callable)
-{
-    classmethod *cm = (classmethod *)
-        PyType_GenericAlloc(&PyClassMethod_Type, 0);
-    if (cm != NULL) {
-        Py_INCREF(callable);
-        cm->cm_callable = callable;
-    }
-    return (PyObject *)cm;
-}
-
-
-/* Static method object */
-
-/* A static method does not receive an implicit first argument.
-   To declare a static method, use this idiom:
-
-     class C:
-     def f(arg1, arg2, ...): ...
-     f = staticmethod(f)
-
-   It can be called either on the class (e.g. C.f()) or on an instance
-   (e.g. C().f()); the instance is ignored except for its class.
-
-   Static methods in Python are similar to those found in Java or C++.
-   For a more advanced concept, see class methods above.
-*/
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *sm_callable;
-} staticmethod;
-
-static void
-sm_dealloc(staticmethod *sm)
-{
-    _PyObject_GC_UNTRACK((PyObject *)sm);
-    Py_XDECREF(sm->sm_callable);
-    Py_TYPE(sm)->tp_free((PyObject *)sm);
-}
-
-static int
-sm_traverse(staticmethod *sm, visitproc visit, void *arg)
-{
-    Py_VISIT(sm->sm_callable);
-    return 0;
-}
-
-static int
-sm_clear(staticmethod *sm)
-{
-    Py_XDECREF(sm->sm_callable);
-    sm->sm_callable = NULL;
-
-    return 0;
-}
-
-static PyObject *
-sm_descr_get(PyObject *self, PyObject *obj, PyObject *type)
-{
-    staticmethod *sm = (staticmethod *)self;
-
-    if (sm->sm_callable == NULL) {
-        PyErr_SetString(PyExc_RuntimeError,
-                        "uninitialized staticmethod object");
-        return NULL;
-    }
-    Py_INCREF(sm->sm_callable);
-    return sm->sm_callable;
-}
-
-static int
-sm_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    staticmethod *sm = (staticmethod *)self;
-    PyObject *callable;
-
-    if (!PyArg_UnpackTuple(args, "staticmethod", 1, 1, &callable))
-        return -1;
-    if (!_PyArg_NoKeywords("staticmethod", kwds))
-        return -1;
-    Py_INCREF(callable);
-    sm->sm_callable = callable;
-    return 0;
-}
-
-static PyMemberDef sm_memberlist[] = {
-    {"__func__", T_OBJECT, offsetof(staticmethod, sm_callable), READONLY},
-    {NULL}  /* Sentinel */
-};
-
-PyDoc_STRVAR(staticmethod_doc,
-"staticmethod(function) -> method\n\
-\n\
-Convert a function to be a static method.\n\
-\n\
-A static method does not receive an implicit first argument.\n\
-To declare a static method, use this idiom:\n\
-\n\
-     class C:\n\
-     def f(arg1, arg2, ...): ...\n\
-     f = staticmethod(f)\n\
-\n\
-It can be called either on the class (e.g. C.f()) or on an instance\n\
-(e.g. C().f()).  The instance is ignored except for its class.\n\
-\n\
-Static methods in Python are similar to those found in Java or C++.\n\
-For a more advanced concept, see the classmethod builtin.");
-
-PyTypeObject PyStaticMethod_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "staticmethod",
-    sizeof(staticmethod),
-    0,
-    (destructor)sm_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC,
-    staticmethod_doc,                           /* tp_doc */
-    (traverseproc)sm_traverse,                  /* tp_traverse */
-    (inquiry)sm_clear,                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    sm_memberlist,              /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    sm_descr_get,                               /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    sm_init,                                    /* tp_init */
-    PyType_GenericAlloc,                        /* tp_alloc */
-    PyType_GenericNew,                          /* tp_new */
-    PyObject_GC_Del,                            /* tp_free */
-};
-
-PyObject *
-PyStaticMethod_New(PyObject *callable)
-{
-    staticmethod *sm = (staticmethod *)
-        PyType_GenericAlloc(&PyStaticMethod_Type, 0);
-    if (sm != NULL) {
-        Py_INCREF(callable);
-        sm->sm_callable = callable;
-    }
-    return (PyObject *)sm;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/genobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/genobject.c
deleted file mode 100644
index 2b54da7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/genobject.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/* Generator object implementation */
-
-#include "Python.h"
-#include "frameobject.h"
-#include "genobject.h"
-#include "ceval.h"
-#include "structmember.h"
-#include "opcode.h"
-
-static int
-gen_traverse(PyGenObject *gen, visitproc visit, void *arg)
-{
-    Py_VISIT((PyObject *)gen->gi_frame);
-    Py_VISIT(gen->gi_code);
-    return 0;
-}
-
-static void
-gen_dealloc(PyGenObject *gen)
-{
-    PyObject *self = (PyObject *) gen;
-
-    _PyObject_GC_UNTRACK(gen);
-
-    if (gen->gi_weakreflist != NULL)
-        PyObject_ClearWeakRefs(self);
-
-    _PyObject_GC_TRACK(self);
-
-    if (gen->gi_frame != NULL && gen->gi_frame->f_stacktop != NULL) {
-        /* Generator is paused, so we need to close */
-        Py_TYPE(gen)->tp_del(self);
-        if (self->ob_refcnt > 0)
-            return;                     /* resurrected.  :( */
-    }
-
-    _PyObject_GC_UNTRACK(self);
-    Py_CLEAR(gen->gi_frame);
-    Py_CLEAR(gen->gi_code);
-    PyObject_GC_Del(gen);
-}
-
-
-static PyObject *
-gen_send_ex(PyGenObject *gen, PyObject *arg, int exc)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-    PyFrameObject *f = gen->gi_frame;
-    PyObject *result;
-
-    if (gen->gi_running) {
-        PyErr_SetString(PyExc_ValueError,
-                        "generator already executing");
-        return NULL;
-    }
-    if (f==NULL || f->f_stacktop == NULL) {
-        /* Only set exception if called from send() */
-        if (arg && !exc)
-            PyErr_SetNone(PyExc_StopIteration);
-        return NULL;
-    }
-
-    if (f->f_lasti == -1) {
-        if (arg && arg != Py_None) {
-            PyErr_SetString(PyExc_TypeError,
-                            "can't send non-None value to a "
-                            "just-started generator");
-            return NULL;
-        }
-    } else {
-        /* Push arg onto the frame's value stack */
-        result = arg ? arg : Py_None;
-        Py_INCREF(result);
-        *(f->f_stacktop++) = result;
-    }
-
-    /* Generators always return to their most recent caller, not
-     * necessarily their creator. */
-    Py_XINCREF(tstate->frame);
-    assert(f->f_back == NULL);
-    f->f_back = tstate->frame;
-
-    gen->gi_running = 1;
-    result = PyEval_EvalFrameEx(f, exc);
-    gen->gi_running = 0;
-
-    /* Don't keep the reference to f_back any longer than necessary.  It
-     * may keep a chain of frames alive or it could create a reference
-     * cycle. */
-    assert(f->f_back == tstate->frame);
-    Py_CLEAR(f->f_back);
-
-    /* If the generator just returned (as opposed to yielding), signal
-     * that the generator is exhausted. */
-    if (result == Py_None && f->f_stacktop == NULL) {
-        Py_DECREF(result);
-        result = NULL;
-        /* Set exception if not called by gen_iternext() */
-        if (arg)
-            PyErr_SetNone(PyExc_StopIteration);
-    }
-
-    if (!result || f->f_stacktop == NULL) {
-        /* generator can't be rerun, so release the frame */
-        Py_DECREF(f);
-        gen->gi_frame = NULL;
-    }
-
-    return result;
-}
-
-PyDoc_STRVAR(send_doc,
-"send(arg) -> send 'arg' into generator,\n\
-return next yielded value or raise StopIteration.");
-
-static PyObject *
-gen_send(PyGenObject *gen, PyObject *arg)
-{
-    return gen_send_ex(gen, arg, 0);
-}
-
-PyDoc_STRVAR(close_doc,
-"close(arg) -> raise GeneratorExit inside generator.");
-
-static PyObject *
-gen_close(PyGenObject *gen, PyObject *args)
-{
-    PyObject *retval;
-    PyErr_SetNone(PyExc_GeneratorExit);
-    retval = gen_send_ex(gen, Py_None, 1);
-    if (retval) {
-        Py_DECREF(retval);
-        PyErr_SetString(PyExc_RuntimeError,
-                        "generator ignored GeneratorExit");
-        return NULL;
-    }
-    if (PyErr_ExceptionMatches(PyExc_StopIteration)
-        || PyErr_ExceptionMatches(PyExc_GeneratorExit))
-    {
-        PyErr_Clear();          /* ignore these errors */
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return NULL;
-}
-
-static void
-gen_del(PyObject *self)
-{
-    PyObject *res;
-    PyObject *error_type, *error_value, *error_traceback;
-    PyGenObject *gen = (PyGenObject *)self;
-
-    if (gen->gi_frame == NULL || gen->gi_frame->f_stacktop == NULL)
-        /* Generator isn't paused, so no need to close */
-        return;
-
-    /* Temporarily resurrect the object. */
-    assert(self->ob_refcnt == 0);
-    self->ob_refcnt = 1;
-
-    /* Save the current exception, if any. */
-    PyErr_Fetch(&error_type, &error_value, &error_traceback);
-
-    res = gen_close(gen, NULL);
-
-    if (res == NULL)
-        PyErr_WriteUnraisable(self);
-    else
-        Py_DECREF(res);
-
-    /* Restore the saved exception. */
-    PyErr_Restore(error_type, error_value, error_traceback);
-
-    /* Undo the temporary resurrection; can't use DECREF here, it would
-     * cause a recursive call.
-     */
-    assert(self->ob_refcnt > 0);
-    if (--self->ob_refcnt == 0)
-        return; /* this is the normal path out */
-
-    /* close() resurrected it!  Make it look like the original Py_DECREF
-     * never happened.
-     */
-    {
-        Py_ssize_t refcnt = self->ob_refcnt;
-        _Py_NewReference(self);
-        self->ob_refcnt = refcnt;
-    }
-    assert(PyType_IS_GC(self->ob_type) &&
-           _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
-
-    /* If Py_REF_DEBUG, _Py_NewReference bumped _Py_RefTotal, so
-     * we need to undo that. */
-    _Py_DEC_REFTOTAL;
-    /* If Py_TRACE_REFS, _Py_NewReference re-added self to the object
-     * chain, so no more to do there.
-     * If COUNT_ALLOCS, the original decref bumped tp_frees, and
-     * _Py_NewReference bumped tp_allocs:  both of those need to be
-     * undone.
-     */
-#ifdef COUNT_ALLOCS
-    --self->ob_type->tp_frees;
-    --self->ob_type->tp_allocs;
-#endif
-}
-
-
-
-PyDoc_STRVAR(throw_doc,
-"throw(typ[,val[,tb]]) -> raise exception in generator,\n\
-return next yielded value or raise StopIteration.");
-
-static PyObject *
-gen_throw(PyGenObject *gen, PyObject *args)
-{
-    PyObject *typ;
-    PyObject *tb = NULL;
-    PyObject *val = NULL;
-
-    if (!PyArg_UnpackTuple(args, "throw", 1, 3, &typ, &val, &tb))
-        return NULL;
-
-    /* First, check the traceback argument, replacing None with
-       NULL. */
-    if (tb == Py_None)
-        tb = NULL;
-    else if (tb != NULL && !PyTraceBack_Check(tb)) {
-        PyErr_SetString(PyExc_TypeError,
-            "throw() third argument must be a traceback object");
-        return NULL;
-    }
-
-    Py_INCREF(typ);
-    Py_XINCREF(val);
-    Py_XINCREF(tb);
-
-    if (PyExceptionClass_Check(typ)) {
-        PyErr_NormalizeException(&typ, &val, &tb);
-    }
-
-    else if (PyExceptionInstance_Check(typ)) {
-        /* Raising an instance.  The value should be a dummy. */
-        if (val && val != Py_None) {
-            PyErr_SetString(PyExc_TypeError,
-              "instance exception may not have a separate value");
-            goto failed_throw;
-        }
-        else {
-            /* Normalize to raise <class>, <instance> */
-            Py_XDECREF(val);
-            val = typ;
-            typ = PyExceptionInstance_Class(typ);
-            Py_INCREF(typ);
-        }
-    }
-    else {
-        /* Not something you can raise.  throw() fails. */
-        PyErr_Format(PyExc_TypeError,
-                     "exceptions must be classes, or instances, not %s",
-                     typ->ob_type->tp_name);
-            goto failed_throw;
-    }
-
-    PyErr_Restore(typ, val, tb);
-    return gen_send_ex(gen, Py_None, 1);
-
-failed_throw:
-    /* Didn't use our arguments, so restore their original refcounts */
-    Py_DECREF(typ);
-    Py_XDECREF(val);
-    Py_XDECREF(tb);
-    return NULL;
-}
-
-
-static PyObject *
-gen_iternext(PyGenObject *gen)
-{
-    return gen_send_ex(gen, NULL, 0);
-}
-
-
-static PyObject *
-gen_repr(PyGenObject *gen)
-{
-    char *code_name;
-    code_name = PyString_AsString(((PyCodeObject *)gen->gi_code)->co_name);
-    if (code_name == NULL)
-        return NULL;
-    return PyString_FromFormat("<generator object %.200s at %p>",
-                               code_name, gen);
-}
-
-
-static PyObject *
-gen_get_name(PyGenObject *gen)
-{
-    PyObject *name = ((PyCodeObject *)gen->gi_code)->co_name;
-    Py_INCREF(name);
-    return name;
-}
-
-
-PyDoc_STRVAR(gen__name__doc__,
-"Return the name of the generator's associated code object.");
-
-static PyGetSetDef gen_getsetlist[] = {
-    {"__name__", (getter)gen_get_name, NULL, gen__name__doc__},
-    {NULL}
-};
-
-
-static PyMemberDef gen_memberlist[] = {
-    {"gi_frame",        T_OBJECT, offsetof(PyGenObject, gi_frame),      RO},
-    {"gi_running",      T_INT,    offsetof(PyGenObject, gi_running),    RO},
-    {"gi_code",     T_OBJECT, offsetof(PyGenObject, gi_code),  RO},
-    {NULL}      /* Sentinel */
-};
-
-static PyMethodDef gen_methods[] = {
-    {"send",(PyCFunction)gen_send, METH_O, send_doc},
-    {"throw",(PyCFunction)gen_throw, METH_VARARGS, throw_doc},
-    {"close",(PyCFunction)gen_close, METH_NOARGS, close_doc},
-    {NULL, NULL}        /* Sentinel */
-};
-
-PyTypeObject PyGen_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "generator",                                /* tp_name */
-    sizeof(PyGenObject),                        /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)gen_dealloc,                    /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)gen_repr,                         /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)gen_traverse,                 /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    offsetof(PyGenObject, gi_weakreflist),      /* tp_weaklistoffset */
-    PyObject_SelfIter,                          /* tp_iter */
-    (iternextfunc)gen_iternext,                 /* tp_iternext */
-    gen_methods,                                /* tp_methods */
-    gen_memberlist,                             /* tp_members */
-    gen_getsetlist,                             /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    0,                                          /* tp_new */
-    0,                                          /* tp_free */
-    0,                                          /* tp_is_gc */
-    0,                                          /* tp_bases */
-    0,                                          /* tp_mro */
-    0,                                          /* tp_cache */
-    0,                                          /* tp_subclasses */
-    0,                                          /* tp_weaklist */
-    gen_del,                                    /* tp_del */
-};
-
-PyObject *
-PyGen_New(PyFrameObject *f)
-{
-    PyGenObject *gen = PyObject_GC_New(PyGenObject, &PyGen_Type);
-    if (gen == NULL) {
-        Py_DECREF(f);
-        return NULL;
-    }
-    gen->gi_frame = f;
-    Py_INCREF(f->f_code);
-    gen->gi_code = (PyObject *)(f->f_code);
-    gen->gi_running = 0;
-    gen->gi_weakreflist = NULL;
-    _PyObject_GC_TRACK(gen);
-    return (PyObject *)gen;
-}
-
-int
-PyGen_NeedsFinalizing(PyGenObject *gen)
-{
-    int i;
-    PyFrameObject *f = gen->gi_frame;
-
-    if (f == NULL || f->f_stacktop == NULL || f->f_iblock <= 0)
-        return 0; /* no frame or empty blockstack == no finalization */
-
-    /* Any block type besides a loop requires cleanup. */
-    i = f->f_iblock;
-    while (--i >= 0) {
-        if (f->f_blockstack[i].b_type != SETUP_LOOP)
-            return 1;
-    }
-
-    /* No blocks except loops, it's safe to skip finalization. */
-    return 0;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/intobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/intobject.c
deleted file mode 100644
index c187ae9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/intobject.c
+++ /dev/null
@@ -1,1550 +0,0 @@
-
-/* Integer object implementation */
-
-#include "Python.h"
-#include <ctype.h>
-#include <float.h>
-
-static PyObject *int_int(PyIntObject *v);
-
-long
-PyInt_GetMax(void)
-{
-    return LONG_MAX;            /* To initialize sys.maxint */
-}
-
-/* Integers are quite normal objects, to make object handling uniform.
-   (Using odd pointers to represent integers would save much space
-   but require extra checks for this special case throughout the code.)
-   Since a typical Python program spends much of its time allocating
-   and deallocating integers, these operations should be very fast.
-   Therefore we use a dedicated allocation scheme with a much lower
-   overhead (in space and time) than straight malloc(): a simple
-   dedicated free list, filled when necessary with memory from malloc().
-
-   block_list is a singly-linked list of all PyIntBlocks ever allocated,
-   linked via their next members.  PyIntBlocks are never returned to the
-   system before shutdown (PyInt_Fini).
-
-   free_list is a singly-linked list of available PyIntObjects, linked
-   via abuse of their ob_type members.
-*/
-
-#define BLOCK_SIZE      1000    /* 1K less typical malloc overhead */
-#define BHEAD_SIZE      8       /* Enough for a 64-bit pointer */
-#define N_INTOBJECTS    ((BLOCK_SIZE - BHEAD_SIZE) / sizeof(PyIntObject))
-
-struct _intblock {
-    struct _intblock *next;
-    PyIntObject objects[N_INTOBJECTS];
-};
-
-typedef struct _intblock PyIntBlock;
-
-static PyIntBlock *block_list = NULL;
-static PyIntObject *free_list = NULL;
-
-static PyIntObject *
-fill_free_list(void)
-{
-    PyIntObject *p, *q;
-    /* Python's object allocator isn't appropriate for large blocks. */
-    p = (PyIntObject *) PyMem_MALLOC(sizeof(PyIntBlock));
-    if (p == NULL)
-        return (PyIntObject *) PyErr_NoMemory();
-    ((PyIntBlock *)p)->next = block_list;
-    block_list = (PyIntBlock *)p;
-    /* Link the int objects together, from rear to front, then return
-       the address of the last int object in the block. */
-    p = &((PyIntBlock *)p)->objects[0];
-    q = p + N_INTOBJECTS;
-    while (--q > p)
-        Py_TYPE(q) = (struct _typeobject *)(q-1);
-    Py_TYPE(q) = NULL;
-    return p + N_INTOBJECTS - 1;
-}
-
-#ifndef NSMALLPOSINTS
-#define NSMALLPOSINTS           257
-#endif
-#ifndef NSMALLNEGINTS
-#define NSMALLNEGINTS           5
-#endif
-#if NSMALLNEGINTS + NSMALLPOSINTS > 0
-/* References to small integers are saved in this array so that they
-   can be shared.
-   The integers that are saved are those in the range
-   -NSMALLNEGINTS (inclusive) to NSMALLPOSINTS (not inclusive).
-*/
-static PyIntObject *small_ints[NSMALLNEGINTS + NSMALLPOSINTS];
-#endif
-#ifdef COUNT_ALLOCS
-Py_ssize_t quick_int_allocs;
-Py_ssize_t quick_neg_int_allocs;
-#endif
-
-PyObject *
-PyInt_FromLong(long ival)
-{
-    register PyIntObject *v;
-#if NSMALLNEGINTS + NSMALLPOSINTS > 0
-    if (-NSMALLNEGINTS <= ival && ival < NSMALLPOSINTS) {
-        v = small_ints[ival + NSMALLNEGINTS];
-        Py_INCREF(v);
-#ifdef COUNT_ALLOCS
-        if (ival >= 0)
-            quick_int_allocs++;
-        else
-            quick_neg_int_allocs++;
-#endif
-        return (PyObject *) v;
-    }
-#endif
-    if (free_list == NULL) {
-        if ((free_list = fill_free_list()) == NULL)
-            return NULL;
-    }
-    /* Inline PyObject_New */
-    v = free_list;
-    free_list = (PyIntObject *)Py_TYPE(v);
-    PyObject_INIT(v, &PyInt_Type);
-    v->ob_ival = ival;
-    return (PyObject *) v;
-}
-
-PyObject *
-PyInt_FromSize_t(size_t ival)
-{
-    if (ival <= LONG_MAX)
-        return PyInt_FromLong((long)ival);
-    return _PyLong_FromSize_t(ival);
-}
-
-PyObject *
-PyInt_FromSsize_t(Py_ssize_t ival)
-{
-    if (ival >= LONG_MIN && ival <= LONG_MAX)
-        return PyInt_FromLong((long)ival);
-    return _PyLong_FromSsize_t(ival);
-}
-
-static void
-int_dealloc(PyIntObject *v)
-{
-    if (PyInt_CheckExact(v)) {
-        Py_TYPE(v) = (struct _typeobject *)free_list;
-        free_list = v;
-    }
-    else
-        Py_TYPE(v)->tp_free((PyObject *)v);
-}
-
-static void
-int_free(PyIntObject *v)
-{
-    Py_TYPE(v) = (struct _typeobject *)free_list;
-    free_list = v;
-}
-
-long
-PyInt_AsLong(register PyObject *op)
-{
-    PyNumberMethods *nb;
-    PyIntObject *io;
-    long val;
-
-    if (op && PyInt_Check(op))
-        return PyInt_AS_LONG((PyIntObject*) op);
-
-    if (op == NULL || (nb = Py_TYPE(op)->tp_as_number) == NULL ||
-        nb->nb_int == NULL) {
-        PyErr_SetString(PyExc_TypeError, "an integer is required");
-        return -1;
-    }
-
-    io = (PyIntObject*) (*nb->nb_int) (op);
-    if (io == NULL)
-        return -1;
-    if (!PyInt_Check(io)) {
-        if (PyLong_Check(io)) {
-            /* got a long? => retry int conversion */
-            val = PyLong_AsLong((PyObject *)io);
-            Py_DECREF(io);
-            if ((val == -1) && PyErr_Occurred())
-                return -1;
-            return val;
-        }
-        else
-        {
-            Py_DECREF(io);
-            PyErr_SetString(PyExc_TypeError,
-                        "__int__ method should return an integer");
-            return -1;
-        }
-    }
-
-    val = PyInt_AS_LONG(io);
-    Py_DECREF(io);
-
-    return val;
-}
-
-Py_ssize_t
-PyInt_AsSsize_t(register PyObject *op)
-{
-#if SIZEOF_SIZE_T != SIZEOF_LONG
-    PyNumberMethods *nb;
-    PyIntObject *io;
-    Py_ssize_t val;
-#endif
-
-    if (op == NULL) {
-        PyErr_SetString(PyExc_TypeError, "an integer is required");
-        return -1;
-    }
-
-    if (PyInt_Check(op))
-        return PyInt_AS_LONG((PyIntObject*) op);
-    if (PyLong_Check(op))
-        return _PyLong_AsSsize_t(op);
-#if SIZEOF_SIZE_T == SIZEOF_LONG
-    return PyInt_AsLong(op);
-#else
-
-    if ((nb = Py_TYPE(op)->tp_as_number) == NULL ||
-        (nb->nb_int == NULL && nb->nb_long == 0)) {
-        PyErr_SetString(PyExc_TypeError, "an integer is required");
-        return -1;
-    }
-
-    if (nb->nb_long != 0)
-        io = (PyIntObject*) (*nb->nb_long) (op);
-    else
-        io = (PyIntObject*) (*nb->nb_int) (op);
-    if (io == NULL)
-        return -1;
-    if (!PyInt_Check(io)) {
-        if (PyLong_Check(io)) {
-            /* got a long? => retry int conversion */
-            val = _PyLong_AsSsize_t((PyObject *)io);
-            Py_DECREF(io);
-            if ((val == -1) && PyErr_Occurred())
-                return -1;
-            return val;
-        }
-        else
-        {
-            Py_DECREF(io);
-            PyErr_SetString(PyExc_TypeError,
-                        "__int__ method should return an integer");
-            return -1;
-        }
-    }
-
-    val = PyInt_AS_LONG(io);
-    Py_DECREF(io);
-
-    return val;
-#endif
-}
-
-unsigned long
-PyInt_AsUnsignedLongMask(register PyObject *op)
-{
-    PyNumberMethods *nb;
-    PyIntObject *io;
-    unsigned long val;
-
-    if (op && PyInt_Check(op))
-        return PyInt_AS_LONG((PyIntObject*) op);
-    if (op && PyLong_Check(op))
-        return PyLong_AsUnsignedLongMask(op);
-
-    if (op == NULL || (nb = Py_TYPE(op)->tp_as_number) == NULL ||
-        nb->nb_int == NULL) {
-        PyErr_SetString(PyExc_TypeError, "an integer is required");
-        return (unsigned long)-1;
-    }
-
-    io = (PyIntObject*) (*nb->nb_int) (op);
-    if (io == NULL)
-        return (unsigned long)-1;
-    if (!PyInt_Check(io)) {
-        if (PyLong_Check(io)) {
-            val = PyLong_AsUnsignedLongMask((PyObject *)io);
-            Py_DECREF(io);
-            if (PyErr_Occurred())
-                return (unsigned long)-1;
-            return val;
-        }
-        else
-        {
-            Py_DECREF(io);
-            PyErr_SetString(PyExc_TypeError,
-                        "__int__ method should return an integer");
-            return (unsigned long)-1;
-        }
-    }
-
-    val = PyInt_AS_LONG(io);
-    Py_DECREF(io);
-
-    return val;
-}
-
-#ifdef HAVE_LONG_LONG
-unsigned PY_LONG_LONG
-PyInt_AsUnsignedLongLongMask(register PyObject *op)
-{
-    PyNumberMethods *nb;
-    PyIntObject *io;
-    unsigned PY_LONG_LONG val;
-
-    if (op && PyInt_Check(op))
-        return PyInt_AS_LONG((PyIntObject*) op);
-    if (op && PyLong_Check(op))
-        return PyLong_AsUnsignedLongLongMask(op);
-
-    if (op == NULL || (nb = Py_TYPE(op)->tp_as_number) == NULL ||
-        nb->nb_int == NULL) {
-        PyErr_SetString(PyExc_TypeError, "an integer is required");
-        return (unsigned PY_LONG_LONG)-1;
-    }
-
-    io = (PyIntObject*) (*nb->nb_int) (op);
-    if (io == NULL)
-        return (unsigned PY_LONG_LONG)-1;
-    if (!PyInt_Check(io)) {
-        if (PyLong_Check(io)) {
-            val = PyLong_AsUnsignedLongLongMask((PyObject *)io);
-            Py_DECREF(io);
-            if (PyErr_Occurred())
-                return (unsigned PY_LONG_LONG)-1;
-            return val;
-        }
-        else
-        {
-            Py_DECREF(io);
-            PyErr_SetString(PyExc_TypeError,
-                        "__int__ method should return an integer");
-            return (unsigned PY_LONG_LONG)-1;
-        }
-    }
-
-    val = PyInt_AS_LONG(io);
-    Py_DECREF(io);
-
-    return val;
-}
-#endif
-
-PyObject *
-PyInt_FromString(char *s, char **pend, int base)
-{
-    char *end;
-    long x;
-    Py_ssize_t slen;
-    PyObject *sobj, *srepr;
-
-    if ((base != 0 && base < 2) || base > 36) {
-        PyErr_SetString(PyExc_ValueError,
-                        "int() base must be >= 2 and <= 36");
-        return NULL;
-    }
-
-    while (*s && isspace(Py_CHARMASK(*s)))
-        s++;
-    errno = 0;
-    if (base == 0 && s[0] == '0') {
-        x = (long) PyOS_strtoul(s, &end, base);
-        if (x < 0)
-            return PyLong_FromString(s, pend, base);
-    }
-    else
-        x = PyOS_strtol(s, &end, base);
-    if (end == s || !isalnum(Py_CHARMASK(end[-1])))
-        goto bad;
-    while (*end && isspace(Py_CHARMASK(*end)))
-        end++;
-    if (*end != '\0') {
-  bad:
-        slen = strlen(s) < 200 ? strlen(s) : 200;
-        sobj = PyString_FromStringAndSize(s, slen);
-        if (sobj == NULL)
-            return NULL;
-        srepr = PyObject_Repr(sobj);
-        Py_DECREF(sobj);
-        if (srepr == NULL)
-            return NULL;
-        PyErr_Format(PyExc_ValueError,
-                     "invalid literal for int() with base %d: %s",
-                     base, PyString_AS_STRING(srepr));
-        Py_DECREF(srepr);
-        return NULL;
-    }
-    else if (errno != 0)
-        return PyLong_FromString(s, pend, base);
-    if (pend)
-        *pend = end;
-    return PyInt_FromLong(x);
-}
-
-#ifdef Py_USING_UNICODE
-PyObject *
-PyInt_FromUnicode(Py_UNICODE *s, Py_ssize_t length, int base)
-{
-    PyObject *result;
-    char *buffer = (char *)PyMem_MALLOC(length+1);
-
-    if (buffer == NULL)
-        return PyErr_NoMemory();
-
-    if (PyUnicode_EncodeDecimal(s, length, buffer, NULL)) {
-        PyMem_FREE(buffer);
-        return NULL;
-    }
-    result = PyInt_FromString(buffer, NULL, base);
-    PyMem_FREE(buffer);
-    return result;
-}
-#endif
-
-/* Methods */
-
-/* Integers are seen as the "smallest" of all numeric types and thus
-   don't have any knowledge about conversion of other types to
-   integers. */
-
-#define CONVERT_TO_LONG(obj, lng)               \
-    if (PyInt_Check(obj)) {                     \
-        lng = PyInt_AS_LONG(obj);               \
-    }                                           \
-    else {                                      \
-        Py_INCREF(Py_NotImplemented);           \
-        return Py_NotImplemented;               \
-    }
-
-/* ARGSUSED */
-static int
-int_print(PyIntObject *v, FILE *fp, int flags)
-     /* flags -- not used but required by interface */
-{
-    long int_val = v->ob_ival;
-    Py_BEGIN_ALLOW_THREADS
-    fprintf(fp, "%ld", int_val);
-    Py_END_ALLOW_THREADS
-    return 0;
-}
-
-static int
-int_compare(PyIntObject *v, PyIntObject *w)
-{
-    register long i = v->ob_ival;
-    register long j = w->ob_ival;
-    return (i < j) ? -1 : (i > j) ? 1 : 0;
-}
-
-static long
-int_hash(PyIntObject *v)
-{
-    /* XXX If this is changed, you also need to change the way
-       Python's long, float and complex types are hashed. */
-    long x = v -> ob_ival;
-    if (x == -1)
-        x = -2;
-    return x;
-}
-
-static PyObject *
-int_add(PyIntObject *v, PyIntObject *w)
-{
-    register long a, b, x;
-    CONVERT_TO_LONG(v, a);
-    CONVERT_TO_LONG(w, b);
-    /* casts in the line below avoid undefined behaviour on overflow */
-    x = (long)((unsigned long)a + b);
-    if ((x^a) >= 0 || (x^b) >= 0)
-        return PyInt_FromLong(x);
-    return PyLong_Type.tp_as_number->nb_add((PyObject *)v, (PyObject *)w);
-}
-
-static PyObject *
-int_sub(PyIntObject *v, PyIntObject *w)
-{
-    register long a, b, x;
-    CONVERT_TO_LONG(v, a);
-    CONVERT_TO_LONG(w, b);
-    /* casts in the line below avoid undefined behaviour on overflow */
-    x = (long)((unsigned long)a - b);
-    if ((x^a) >= 0 || (x^~b) >= 0)
-        return PyInt_FromLong(x);
-    return PyLong_Type.tp_as_number->nb_subtract((PyObject *)v,
-                                                 (PyObject *)w);
-}
-
-/*
-Integer overflow checking for * is painful:  Python tried a couple ways, but
-they didn't work on all platforms, or failed in endcases (a product of
--sys.maxint-1 has been a particular pain).
-
-Here's another way:
-
-The native long product x*y is either exactly right or *way* off, being
-just the last n bits of the true product, where n is the number of bits
-in a long (the delivered product is the true product plus i*2**n for
-some integer i).
-
-The native double product (double)x * (double)y is subject to three
-rounding errors:  on a sizeof(long)==8 box, each cast to double can lose
-info, and even on a sizeof(long)==4 box, the multiplication can lose info.
-But, unlike the native long product, it's not in *range* trouble:  even
-if sizeof(long)==32 (256-bit longs), the product easily fits in the
-dynamic range of a double.  So the leading 50 (or so) bits of the double
-product are correct.
-
-We check these two ways against each other, and declare victory if they're
-approximately the same.  Else, because the native long product is the only
-one that can lose catastrophic amounts of information, it's the native long
-product that must have overflowed.
-*/
-
-static PyObject *
-int_mul(PyObject *v, PyObject *w)
-{
-    long a, b;
-    long longprod;                      /* a*b in native long arithmetic */
-    double doubled_longprod;            /* (double)longprod */
-    double doubleprod;                  /* (double)a * (double)b */
-
-    CONVERT_TO_LONG(v, a);
-    CONVERT_TO_LONG(w, b);
-    /* casts in the next line avoid undefined behaviour on overflow */
-    longprod = (long)((unsigned long)a * b);
-    doubleprod = (double)a * (double)b;
-    doubled_longprod = (double)longprod;
-
-    /* Fast path for normal case:  small multiplicands, and no info
-       is lost in either method. */
-    if (doubled_longprod == doubleprod)
-        return PyInt_FromLong(longprod);
-
-    /* Somebody somewhere lost info.  Close enough, or way off?  Note
-       that a != 0 and b != 0 (else doubled_longprod == doubleprod == 0).
-       The difference either is or isn't significant compared to the
-       true value (of which doubleprod is a good approximation).
-    */
-    {
-        const double diff = doubled_longprod - doubleprod;
-        const double absdiff = diff >= 0.0 ? diff : -diff;
-        const double absprod = doubleprod >= 0.0 ? doubleprod :
-                              -doubleprod;
-        /* absdiff/absprod <= 1/32 iff
-           32 * absdiff <= absprod -- 5 good bits is "close enough" */
-        if (32.0 * absdiff <= absprod)
-            return PyInt_FromLong(longprod);
-        else
-            return PyLong_Type.tp_as_number->nb_multiply(v, w);
-    }
-}
-
-/* Integer overflow checking for unary negation: on a 2's-complement
- * box, -x overflows iff x is the most negative long.  In this case we
- * get -x == x.  However, -x is undefined (by C) if x /is/ the most
- * negative long (it's a signed overflow case), and some compilers care.
- * So we cast x to unsigned long first.  However, then other compilers
- * warn about applying unary minus to an unsigned operand.  Hence the
- * weird "0-".
- */
-#define UNARY_NEG_WOULD_OVERFLOW(x)     \
-    ((x) < 0 && (unsigned long)(x) == 0-(unsigned long)(x))
-
-/* Return type of i_divmod */
-enum divmod_result {
-    DIVMOD_OK,                  /* Correct result */
-    DIVMOD_OVERFLOW,            /* Overflow, try again using longs */
-    DIVMOD_ERROR                /* Exception raised */
-};
-
-static enum divmod_result
-i_divmod(register long x, register long y,
-         long *p_xdivy, long *p_xmody)
-{
-    long xdivy, xmody;
-
-    if (y == 0) {
-        PyErr_SetString(PyExc_ZeroDivisionError,
-                        "integer division or modulo by zero");
-        return DIVMOD_ERROR;
-    }
-    /* (-sys.maxint-1)/-1 is the only overflow case. */
-    if (y == -1 && UNARY_NEG_WOULD_OVERFLOW(x))
-        return DIVMOD_OVERFLOW;
-    xdivy = x / y;
-    /* xdiv*y can overflow on platforms where x/y gives floor(x/y)
-     * for x and y with differing signs. (This is unusual
-     * behaviour, and C99 prohibits it, but it's allowed by C89;
-     * for an example of overflow, take x = LONG_MIN, y = 5 or x =
-     * LONG_MAX, y = -5.)  However, x - xdivy*y is always
-     * representable as a long, since it lies strictly between
-     * -abs(y) and abs(y).  We add casts to avoid intermediate
-     * overflow.
-     */
-    xmody = (long)(x - (unsigned long)xdivy * y);
-    /* If the signs of x and y differ, and the remainder is non-0,
-     * C89 doesn't define whether xdivy is now the floor or the
-     * ceiling of the infinitely precise quotient.  We want the floor,
-     * and we have it iff the remainder's sign matches y's.
-     */
-    if (xmody && ((y ^ xmody) < 0) /* i.e. and signs differ */) {
-        xmody += y;
-        --xdivy;
-        assert(xmody && ((y ^ xmody) >= 0));
-    }
-    *p_xdivy = xdivy;
-    *p_xmody = xmody;
-    return DIVMOD_OK;
-}
-
-static PyObject *
-int_div(PyIntObject *x, PyIntObject *y)
-{
-    long xi, yi;
-    long d, m;
-    CONVERT_TO_LONG(x, xi);
-    CONVERT_TO_LONG(y, yi);
-    switch (i_divmod(xi, yi, &d, &m)) {
-    case DIVMOD_OK:
-        return PyInt_FromLong(d);
-    case DIVMOD_OVERFLOW:
-        return PyLong_Type.tp_as_number->nb_divide((PyObject *)x,
-                                                   (PyObject *)y);
-    default:
-        return NULL;
-    }
-}
-
-static PyObject *
-int_classic_div(PyIntObject *x, PyIntObject *y)
-{
-    long xi, yi;
-    long d, m;
-    CONVERT_TO_LONG(x, xi);
-    CONVERT_TO_LONG(y, yi);
-    if (Py_DivisionWarningFlag &&
-        PyErr_Warn(PyExc_DeprecationWarning, "classic int division") < 0)
-        return NULL;
-    switch (i_divmod(xi, yi, &d, &m)) {
-    case DIVMOD_OK:
-        return PyInt_FromLong(d);
-    case DIVMOD_OVERFLOW:
-        return PyLong_Type.tp_as_number->nb_divide((PyObject *)x,
-                                                   (PyObject *)y);
-    default:
-        return NULL;
-    }
-}
-
-static PyObject *
-int_true_divide(PyIntObject *x, PyIntObject *y)
-{
-    long xi, yi;
-    /* If they aren't both ints, give someone else a chance.  In
-       particular, this lets int/long get handled by longs, which
-       underflows to 0 gracefully if the long is too big to convert
-       to float. */
-    CONVERT_TO_LONG(x, xi);
-    CONVERT_TO_LONG(y, yi);
-    if (yi == 0) {
-        PyErr_SetString(PyExc_ZeroDivisionError,
-                        "division by zero");
-        return NULL;
-    }
-    if (xi == 0)
-        return PyFloat_FromDouble(yi < 0 ? -0.0 : 0.0);
-
-#define WIDTH_OF_ULONG (CHAR_BIT*SIZEOF_LONG)
-#if DBL_MANT_DIG < WIDTH_OF_ULONG
-    if ((xi >= 0 ? 0UL + xi : 0UL - xi) >> DBL_MANT_DIG ||
-        (yi >= 0 ? 0UL + yi : 0UL - yi) >> DBL_MANT_DIG)
-        /* Large x or y.  Use long integer arithmetic. */
-        return PyLong_Type.tp_as_number->nb_true_divide(
-            (PyObject *)x, (PyObject *)y);
-    else
-#endif
-        /* Both ints can be exactly represented as doubles.  Do a
-           floating-point division. */
-        return PyFloat_FromDouble((double)xi / (double)yi);
-}
-
-static PyObject *
-int_mod(PyIntObject *x, PyIntObject *y)
-{
-    long xi, yi;
-    long d, m;
-    CONVERT_TO_LONG(x, xi);
-    CONVERT_TO_LONG(y, yi);
-    switch (i_divmod(xi, yi, &d, &m)) {
-    case DIVMOD_OK:
-        return PyInt_FromLong(m);
-    case DIVMOD_OVERFLOW:
-        return PyLong_Type.tp_as_number->nb_remainder((PyObject *)x,
-                                                      (PyObject *)y);
-    default:
-        return NULL;
-    }
-}
-
-static PyObject *
-int_divmod(PyIntObject *x, PyIntObject *y)
-{
-    long xi, yi;
-    long d, m;
-    CONVERT_TO_LONG(x, xi);
-    CONVERT_TO_LONG(y, yi);
-    switch (i_divmod(xi, yi, &d, &m)) {
-    case DIVMOD_OK:
-        return Py_BuildValue("(ll)", d, m);
-    case DIVMOD_OVERFLOW:
-        return PyLong_Type.tp_as_number->nb_divmod((PyObject *)x,
-                                                   (PyObject *)y);
-    default:
-        return NULL;
-    }
-}
-
-static PyObject *
-int_pow(PyIntObject *v, PyIntObject *w, PyIntObject *z)
-{
-    register long iv, iw, iz=0, ix, temp, prev;
-    CONVERT_TO_LONG(v, iv);
-    CONVERT_TO_LONG(w, iw);
-    if (iw < 0) {
-        if ((PyObject *)z != Py_None) {
-            PyErr_SetString(PyExc_TypeError, "pow() 2nd argument "
-                 "cannot be negative when 3rd argument specified");
-            return NULL;
-        }
-        /* Return a float.  This works because we know that
-           this calls float_pow() which converts its
-           arguments to double. */
-        return PyFloat_Type.tp_as_number->nb_power(
-            (PyObject *)v, (PyObject *)w, (PyObject *)z);
-    }
-    if ((PyObject *)z != Py_None) {
-        CONVERT_TO_LONG(z, iz);
-        if (iz == 0) {
-            PyErr_SetString(PyExc_ValueError,
-                            "pow() 3rd argument cannot be 0");
-            return NULL;
-        }
-    }
-    /*
-     * XXX: The original exponentiation code stopped looping
-     * when temp hit zero; this code will continue onwards
-     * unnecessarily, but at least it won't cause any errors.
-     * Hopefully the speed improvement from the fast exponentiation
-     * will compensate for the slight inefficiency.
-     * XXX: Better handling of overflows is desperately needed.
-     */
-    temp = iv;
-    ix = 1;
-    while (iw > 0) {
-        prev = ix;              /* Save value for overflow check */
-        if (iw & 1) {
-            ix = ix*temp;
-            if (temp == 0)
-                break; /* Avoid ix / 0 */
-            if (ix / temp != prev) {
-                return PyLong_Type.tp_as_number->nb_power(
-                    (PyObject *)v,
-                    (PyObject *)w,
-                    (PyObject *)z);
-            }
-        }
-        iw >>= 1;               /* Shift exponent down by 1 bit */
-        if (iw==0) break;
-        prev = temp;
-        temp *= temp;           /* Square the value of temp */
-        if (prev != 0 && temp / prev != prev) {
-            return PyLong_Type.tp_as_number->nb_power(
-                (PyObject *)v, (PyObject *)w, (PyObject *)z);
-        }
-        if (iz) {
-            /* If we did a multiplication, perform a modulo */
-            ix = ix % iz;
-            temp = temp % iz;
-        }
-    }
-    if (iz) {
-        long div, mod;
-        switch (i_divmod(ix, iz, &div, &mod)) {
-        case DIVMOD_OK:
-            ix = mod;
-            break;
-        case DIVMOD_OVERFLOW:
-            return PyLong_Type.tp_as_number->nb_power(
-                (PyObject *)v, (PyObject *)w, (PyObject *)z);
-        default:
-            return NULL;
-        }
-    }
-    return PyInt_FromLong(ix);
-}
-
-static PyObject *
-int_neg(PyIntObject *v)
-{
-    register long a;
-    a = v->ob_ival;
-    /* check for overflow */
-    if (UNARY_NEG_WOULD_OVERFLOW(a)) {
-        PyObject *o = PyLong_FromLong(a);
-        if (o != NULL) {
-            PyObject *result = PyNumber_Negative(o);
-            Py_DECREF(o);
-            return result;
-        }
-        return NULL;
-    }
-    return PyInt_FromLong(-a);
-}
-
-static PyObject *
-int_abs(PyIntObject *v)
-{
-    if (v->ob_ival >= 0)
-        return int_int(v);
-    else
-        return int_neg(v);
-}
-
-static int
-int_nonzero(PyIntObject *v)
-{
-    return v->ob_ival != 0;
-}
-
-static PyObject *
-int_invert(PyIntObject *v)
-{
-    return PyInt_FromLong(~v->ob_ival);
-}
-
-static PyObject *
-int_lshift(PyIntObject *v, PyIntObject *w)
-{
-    long a, b, c;
-    PyObject *vv, *ww, *result;
-
-    CONVERT_TO_LONG(v, a);
-    CONVERT_TO_LONG(w, b);
-    if (b < 0) {
-        PyErr_SetString(PyExc_ValueError, "negative shift count");
-        return NULL;
-    }
-    if (a == 0 || b == 0)
-        return int_int(v);
-    if (b >= LONG_BIT) {
-        vv = PyLong_FromLong(PyInt_AS_LONG(v));
-        if (vv == NULL)
-            return NULL;
-        ww = PyLong_FromLong(PyInt_AS_LONG(w));
-        if (ww == NULL) {
-            Py_DECREF(vv);
-            return NULL;
-        }
-        result = PyNumber_Lshift(vv, ww);
-        Py_DECREF(vv);
-        Py_DECREF(ww);
-        return result;
-    }
-    c = a << b;
-    if (a != Py_ARITHMETIC_RIGHT_SHIFT(long, c, b)) {
-        vv = PyLong_FromLong(PyInt_AS_LONG(v));
-        if (vv == NULL)
-            return NULL;
-        ww = PyLong_FromLong(PyInt_AS_LONG(w));
-        if (ww == NULL) {
-            Py_DECREF(vv);
-            return NULL;
-        }
-        result = PyNumber_Lshift(vv, ww);
-        Py_DECREF(vv);
-        Py_DECREF(ww);
-        return result;
-    }
-    return PyInt_FromLong(c);
-}
-
-static PyObject *
-int_rshift(PyIntObject *v, PyIntObject *w)
-{
-    register long a, b;
-    CONVERT_TO_LONG(v, a);
-    CONVERT_TO_LONG(w, b);
-    if (b < 0) {
-        PyErr_SetString(PyExc_ValueError, "negative shift count");
-        return NULL;
-    }
-    if (a == 0 || b == 0)
-        return int_int(v);
-    if (b >= LONG_BIT) {
-        if (a < 0)
-            a = -1;
-        else
-            a = 0;
-    }
-    else {
-        a = Py_ARITHMETIC_RIGHT_SHIFT(long, a, b);
-    }
-    return PyInt_FromLong(a);
-}
-
-static PyObject *
-int_and(PyIntObject *v, PyIntObject *w)
-{
-    register long a, b;
-    CONVERT_TO_LONG(v, a);
-    CONVERT_TO_LONG(w, b);
-    return PyInt_FromLong(a & b);
-}
-
-static PyObject *
-int_xor(PyIntObject *v, PyIntObject *w)
-{
-    register long a, b;
-    CONVERT_TO_LONG(v, a);
-    CONVERT_TO_LONG(w, b);
-    return PyInt_FromLong(a ^ b);
-}
-
-static PyObject *
-int_or(PyIntObject *v, PyIntObject *w)
-{
-    register long a, b;
-    CONVERT_TO_LONG(v, a);
-    CONVERT_TO_LONG(w, b);
-    return PyInt_FromLong(a | b);
-}
-
-static int
-int_coerce(PyObject **pv, PyObject **pw)
-{
-    if (PyInt_Check(*pw)) {
-        Py_INCREF(*pv);
-        Py_INCREF(*pw);
-        return 0;
-    }
-    return 1; /* Can't do it */
-}
-
-static PyObject *
-int_int(PyIntObject *v)
-{
-    if (PyInt_CheckExact(v))
-        Py_INCREF(v);
-    else
-        v = (PyIntObject *)PyInt_FromLong(v->ob_ival);
-    return (PyObject *)v;
-}
-
-static PyObject *
-int_long(PyIntObject *v)
-{
-    return PyLong_FromLong((v -> ob_ival));
-}
-
-static const unsigned char BitLengthTable[32] = {
-    0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
-    5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
-};
-
-static int
-bits_in_ulong(unsigned long d)
-{
-    int d_bits = 0;
-    while (d >= 32) {
-        d_bits += 6;
-        d >>= 6;
-    }
-    d_bits += (int)BitLengthTable[d];
-    return d_bits;
-}
-
-#if 8*SIZEOF_LONG-1 <= DBL_MANT_DIG
-/* Every Python int can be exactly represented as a float. */
-
-static PyObject *
-int_float(PyIntObject *v)
-{
-    return PyFloat_FromDouble((double)(v -> ob_ival));
-}
-
-#else
-/* Here not all Python ints are exactly representable as floats, so we may
-   have to round.  We do this manually, since the C standards don't specify
-   whether converting an integer to a float rounds up or down */
-
-static PyObject *
-int_float(PyIntObject *v)
-{
-    unsigned long abs_ival, lsb;
-    int round_up;
-
-    if (v->ob_ival < 0)
-        abs_ival = 0U-(unsigned long)v->ob_ival;
-    else
-        abs_ival = (unsigned long)v->ob_ival;
-    if (abs_ival < (1L << DBL_MANT_DIG))
-        /* small integer;  no need to round */
-        return PyFloat_FromDouble((double)v->ob_ival);
-
-    /* Round abs_ival to MANT_DIG significant bits, using the
-       round-half-to-even rule.  abs_ival & lsb picks out the 'rounding'
-       bit: the first bit after the most significant MANT_DIG bits of
-       abs_ival.  We round up if this bit is set, provided that either:
-
-         (1) abs_ival isn't exactly halfway between two floats, in which
-         case at least one of the bits following the rounding bit must be
-         set; i.e., abs_ival & lsb-1 != 0, or:
-
-         (2) the resulting rounded value has least significant bit 0; or
-         in other words the bit above the rounding bit is set (this is the
-         'to-even' bit of round-half-to-even); i.e., abs_ival & 2*lsb != 0
-
-       The condition "(1) or (2)" equates to abs_ival & 3*lsb-1 != 0. */
-
-    lsb = 1L << (bits_in_ulong(abs_ival)-DBL_MANT_DIG-1);
-    round_up = (abs_ival & lsb) && (abs_ival & (3*lsb-1));
-    abs_ival &= -2*lsb;
-    if (round_up)
-        abs_ival += 2*lsb;
-    return PyFloat_FromDouble(v->ob_ival < 0 ?
-                              -(double)abs_ival :
-                  (double)abs_ival);
-}
-
-#endif
-
-static PyObject *
-int_oct(PyIntObject *v)
-{
-    return _PyInt_Format(v, 8, 0);
-}
-
-static PyObject *
-int_hex(PyIntObject *v)
-{
-    return _PyInt_Format(v, 16, 0);
-}
-
-static PyObject *
-int_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
-
-static PyObject *
-int_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *x = NULL;
-    int base = -909;
-    static char *kwlist[] = {"x", "base", 0};
-
-    if (type != &PyInt_Type)
-        return int_subtype_new(type, args, kwds); /* Wimp out */
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|Oi:int", kwlist,
-                                     &x, &base))
-        return NULL;
-    if (x == NULL)
-        return PyInt_FromLong(0L);
-    if (base == -909)
-        return PyNumber_Int(x);
-    if (PyString_Check(x)) {
-        /* Since PyInt_FromString doesn't have a length parameter,
-         * check here for possible NULs in the string. */
-        char *string = PyString_AS_STRING(x);
-        if (strlen(string) != PyString_Size(x)) {
-            /* create a repr() of the input string,
-             * just like PyInt_FromString does */
-            PyObject *srepr;
-            srepr = PyObject_Repr(x);
-            if (srepr == NULL)
-                return NULL;
-            PyErr_Format(PyExc_ValueError,
-                 "invalid literal for int() with base %d: %s",
-                 base, PyString_AS_STRING(srepr));
-            Py_DECREF(srepr);
-            return NULL;
-        }
-        return PyInt_FromString(string, NULL, base);
-    }
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(x))
-        return PyInt_FromUnicode(PyUnicode_AS_UNICODE(x),
-                                 PyUnicode_GET_SIZE(x),
-                                 base);
-#endif
-    PyErr_SetString(PyExc_TypeError,
-                    "int() can't convert non-string with explicit base");
-    return NULL;
-}
-
-/* Wimpy, slow approach to tp_new calls for subtypes of int:
-   first create a regular int from whatever arguments we got,
-   then allocate a subtype instance and initialize its ob_ival
-   from the regular int.  The regular int is then thrown away.
-*/
-static PyObject *
-int_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *tmp, *newobj;
-    long ival;
-
-    assert(PyType_IsSubtype(type, &PyInt_Type));
-    tmp = int_new(&PyInt_Type, args, kwds);
-    if (tmp == NULL)
-        return NULL;
-    if (!PyInt_Check(tmp)) {
-        ival = PyLong_AsLong(tmp);
-        if (ival == -1 && PyErr_Occurred()) {
-            Py_DECREF(tmp);
-            return NULL;
-        }
-    } else {
-        ival = ((PyIntObject *)tmp)->ob_ival;
-    }
-
-    newobj = type->tp_alloc(type, 0);
-    if (newobj == NULL) {
-        Py_DECREF(tmp);
-        return NULL;
-    }
-    ((PyIntObject *)newobj)->ob_ival = ival;
-    Py_DECREF(tmp);
-    return newobj;
-}
-
-static PyObject *
-int_getnewargs(PyIntObject *v)
-{
-    return Py_BuildValue("(l)", v->ob_ival);
-}
-
-static PyObject *
-int_get0(PyIntObject *v, void *context) {
-    return PyInt_FromLong(0L);
-}
-
-static PyObject *
-int_get1(PyIntObject *v, void *context) {
-    return PyInt_FromLong(1L);
-}
-
-/* Convert an integer to a decimal string.  On many platforms, this
-   will be significantly faster than the general arbitrary-base
-   conversion machinery in _PyInt_Format, thanks to optimization
-   opportunities offered by division by a compile-time constant. */
-static PyObject *
-int_to_decimal_string(PyIntObject *v) {
-    char buf[sizeof(long)*CHAR_BIT/3+6], *p, *bufend;
-    long n = v->ob_ival;
-    unsigned long absn;
-    p = bufend = buf + sizeof(buf);
-    absn = n < 0 ? 0UL - n : n;
-    do {
-        *--p = '0' + (char)(absn % 10);
-        absn /= 10;
-    } while (absn);
-    if (n < 0)
-        *--p = '-';
-    return PyString_FromStringAndSize(p, bufend - p);
-}
-
-/* Convert an integer to the given base.  Returns a string.
-   If base is 2, 8 or 16, add the proper prefix '0b', '0o' or '0x'.
-   If newstyle is zero, then use the pre-2.6 behavior of octal having
-   a leading "0" */
-PyAPI_FUNC(PyObject*)
-_PyInt_Format(PyIntObject *v, int base, int newstyle)
-{
-    /* There are no doubt many, many ways to optimize this, using code
-       similar to _PyLong_Format */
-    long n = v->ob_ival;
-    int  negative = n < 0;
-    int is_zero = n == 0;
-
-    /* For the reasoning behind this size, see
-       http://c-faq.com/misc/hexio.html. Then, add a few bytes for
-       the possible sign and prefix "0[box]" */
-    char buf[sizeof(n)*CHAR_BIT+6];
-
-    /* Start by pointing to the end of the buffer.  We fill in from
-       the back forward. */
-    char* p = &buf[sizeof(buf)];
-
-    assert(base >= 2 && base <= 36);
-
-    /* Special case base 10, for speed */
-    if (base == 10)
-        return int_to_decimal_string(v);
-
-    do {
-        /* I'd use i_divmod, except it doesn't produce the results
-           I want when n is negative.  So just duplicate the salient
-           part here. */
-        long div = n / base;
-        long mod = n - div * base;
-
-        /* convert abs(mod) to the right character in [0-9, a-z] */
-        char cdigit = (char)(mod < 0 ? -mod : mod);
-        cdigit += (cdigit < 10) ? '0' : 'a'-10;
-        *--p = cdigit;
-
-        n = div;
-    } while(n);
-
-    if (base == 2) {
-        *--p = 'b';
-        *--p = '0';
-    }
-    else if (base == 8) {
-        if (newstyle) {
-            *--p = 'o';
-            *--p = '0';
-        }
-        else
-            if (!is_zero)
-                *--p = '0';
-    }
-    else if (base == 16) {
-        *--p = 'x';
-        *--p = '0';
-    }
-    else {
-        *--p = '#';
-        *--p = '0' + base%10;
-        if (base > 10)
-            *--p = '0' + base/10;
-    }
-    if (negative)
-        *--p = '-';
-
-    return PyString_FromStringAndSize(p, &buf[sizeof(buf)] - p);
-}
-
-static PyObject *
-int__format__(PyObject *self, PyObject *args)
-{
-    PyObject *format_spec;
-
-    if (!PyArg_ParseTuple(args, "O:__format__", &format_spec))
-        return NULL;
-    if (PyBytes_Check(format_spec))
-        return _PyInt_FormatAdvanced(self,
-                                     PyBytes_AS_STRING(format_spec),
-                                     PyBytes_GET_SIZE(format_spec));
-    if (PyUnicode_Check(format_spec)) {
-        /* Convert format_spec to a str */
-        PyObject *result;
-        PyObject *str_spec = PyObject_Str(format_spec);
-
-        if (str_spec == NULL)
-            return NULL;
-
-        result = _PyInt_FormatAdvanced(self,
-                                       PyBytes_AS_STRING(str_spec),
-                                       PyBytes_GET_SIZE(str_spec));
-
-        Py_DECREF(str_spec);
-        return result;
-    }
-    PyErr_SetString(PyExc_TypeError, "__format__ requires str or unicode");
-    return NULL;
-}
-
-static PyObject *
-int_bit_length(PyIntObject *v)
-{
-    unsigned long n;
-
-    if (v->ob_ival < 0)
-        /* avoid undefined behaviour when v->ob_ival == -LONG_MAX-1 */
-        n = 0U-(unsigned long)v->ob_ival;
-    else
-        n = (unsigned long)v->ob_ival;
-
-    return PyInt_FromLong(bits_in_ulong(n));
-}
-
-PyDoc_STRVAR(int_bit_length_doc,
-"int.bit_length() -> int\n\
-\n\
-Number of bits necessary to represent self in binary.\n\
->>> bin(37)\n\
-'0b100101'\n\
->>> (37).bit_length()\n\
-6");
-
-#if 0
-static PyObject *
-int_is_finite(PyObject *v)
-{
-    Py_RETURN_TRUE;
-}
-#endif
-
-static PyMethodDef int_methods[] = {
-    {"conjugate",       (PyCFunction)int_int,   METH_NOARGS,
-     "Returns self, the complex conjugate of any int."},
-    {"bit_length", (PyCFunction)int_bit_length, METH_NOARGS,
-     int_bit_length_doc},
-#if 0
-    {"is_finite",       (PyCFunction)int_is_finite,     METH_NOARGS,
-     "Returns always True."},
-#endif
-    {"__trunc__",       (PyCFunction)int_int,   METH_NOARGS,
-     "Truncating an Integral returns itself."},
-    {"__getnewargs__",          (PyCFunction)int_getnewargs,    METH_NOARGS},
-    {"__format__", (PyCFunction)int__format__, METH_VARARGS},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyGetSetDef int_getset[] = {
-    {"real",
-     (getter)int_int, (setter)NULL,
-     "the real part of a complex number",
-     NULL},
-    {"imag",
-     (getter)int_get0, (setter)NULL,
-     "the imaginary part of a complex number",
-     NULL},
-    {"numerator",
-     (getter)int_int, (setter)NULL,
-     "the numerator of a rational number in lowest terms",
-     NULL},
-    {"denominator",
-     (getter)int_get1, (setter)NULL,
-     "the denominator of a rational number in lowest terms",
-     NULL},
-    {NULL}  /* Sentinel */
-};
-
-PyDoc_STRVAR(int_doc,
-"int(x[, base]) -> integer\n\
-\n\
-Convert a string or number to an integer, if possible.  A floating point\n\
-argument will be truncated towards zero (this does not include a string\n\
-representation of a floating point number!)  When converting a string, use\n\
-the optional base.  It is an error to supply a base when converting a\n\
-non-string.  If base is zero, the proper base is guessed based on the\n\
-string content.  If the argument is outside the integer range a\n\
-long object will be returned instead.");
-
-static PyNumberMethods int_as_number = {
-    (binaryfunc)int_add,        /*nb_add*/
-    (binaryfunc)int_sub,        /*nb_subtract*/
-    (binaryfunc)int_mul,        /*nb_multiply*/
-    (binaryfunc)int_classic_div, /*nb_divide*/
-    (binaryfunc)int_mod,        /*nb_remainder*/
-    (binaryfunc)int_divmod,     /*nb_divmod*/
-    (ternaryfunc)int_pow,       /*nb_power*/
-    (unaryfunc)int_neg,         /*nb_negative*/
-    (unaryfunc)int_int,         /*nb_positive*/
-    (unaryfunc)int_abs,         /*nb_absolute*/
-    (inquiry)int_nonzero,       /*nb_nonzero*/
-    (unaryfunc)int_invert,      /*nb_invert*/
-    (binaryfunc)int_lshift,     /*nb_lshift*/
-    (binaryfunc)int_rshift,     /*nb_rshift*/
-    (binaryfunc)int_and,        /*nb_and*/
-    (binaryfunc)int_xor,        /*nb_xor*/
-    (binaryfunc)int_or,         /*nb_or*/
-    int_coerce,                 /*nb_coerce*/
-    (unaryfunc)int_int,         /*nb_int*/
-    (unaryfunc)int_long,        /*nb_long*/
-    (unaryfunc)int_float,       /*nb_float*/
-    (unaryfunc)int_oct,         /*nb_oct*/
-    (unaryfunc)int_hex,         /*nb_hex*/
-    0,                          /*nb_inplace_add*/
-    0,                          /*nb_inplace_subtract*/
-    0,                          /*nb_inplace_multiply*/
-    0,                          /*nb_inplace_divide*/
-    0,                          /*nb_inplace_remainder*/
-    0,                          /*nb_inplace_power*/
-    0,                          /*nb_inplace_lshift*/
-    0,                          /*nb_inplace_rshift*/
-    0,                          /*nb_inplace_and*/
-    0,                          /*nb_inplace_xor*/
-    0,                          /*nb_inplace_or*/
-    (binaryfunc)int_div,        /* nb_floor_divide */
-    (binaryfunc)int_true_divide, /* nb_true_divide */
-    0,                          /* nb_inplace_floor_divide */
-    0,                          /* nb_inplace_true_divide */
-    (unaryfunc)int_int,         /* nb_index */
-};
-
-PyTypeObject PyInt_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "int",
-    sizeof(PyIntObject),
-    0,
-    (destructor)int_dealloc,                    /* tp_dealloc */
-    (printfunc)int_print,                       /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    (cmpfunc)int_compare,                       /* tp_compare */
-    (reprfunc)int_to_decimal_string,            /* tp_repr */
-    &int_as_number,                             /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    (hashfunc)int_hash,                         /* tp_hash */
-    0,                                          /* tp_call */
-    (reprfunc)int_to_decimal_string,            /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
-        Py_TPFLAGS_BASETYPE | Py_TPFLAGS_INT_SUBCLASS,          /* tp_flags */
-    int_doc,                                    /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    int_methods,                                /* tp_methods */
-    0,                                          /* tp_members */
-    int_getset,                                 /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    int_new,                                    /* tp_new */
-    (freefunc)int_free,                         /* tp_free */
-};
-
-int
-_PyInt_Init(void)
-{
-    PyIntObject *v;
-    int ival;
-#if NSMALLNEGINTS + NSMALLPOSINTS > 0
-    for (ival = -NSMALLNEGINTS; ival < NSMALLPOSINTS; ival++) {
-          if (!free_list && (free_list = fill_free_list()) == NULL)
-                    return 0;
-        /* PyObject_New is inlined */
-        v = free_list;
-        free_list = (PyIntObject *)Py_TYPE(v);
-        PyObject_INIT(v, &PyInt_Type);
-        v->ob_ival = ival;
-        small_ints[ival + NSMALLNEGINTS] = v;
-    }
-#endif
-    return 1;
-}
-
-int
-PyInt_ClearFreeList(void)
-{
-    PyIntObject *p;
-    PyIntBlock *list, *next;
-    int i;
-    int u;                      /* remaining unfreed ints per block */
-    int freelist_size = 0;
-
-    list = block_list;
-    block_list = NULL;
-    free_list = NULL;
-    while (list != NULL) {
-        u = 0;
-        for (i = 0, p = &list->objects[0];
-             i < N_INTOBJECTS;
-             i++, p++) {
-            if (PyInt_CheckExact(p) && p->ob_refcnt != 0)
-                u++;
-        }
-        next = list->next;
-        if (u) {
-            list->next = block_list;
-            block_list = list;
-            for (i = 0, p = &list->objects[0];
-                 i < N_INTOBJECTS;
-                 i++, p++) {
-                if (!PyInt_CheckExact(p) ||
-                    p->ob_refcnt == 0) {
-                    Py_TYPE(p) = (struct _typeobject *)
-                        free_list;
-                    free_list = p;
-                }
-#if NSMALLNEGINTS + NSMALLPOSINTS > 0
-                else if (-NSMALLNEGINTS <= p->ob_ival &&
-                         p->ob_ival < NSMALLPOSINTS &&
-                         small_ints[p->ob_ival +
-                                    NSMALLNEGINTS] == NULL) {
-                    Py_INCREF(p);
-                    small_ints[p->ob_ival +
-                               NSMALLNEGINTS] = p;
-                }
-#endif
-            }
-        }
-        else {
-            PyMem_FREE(list);
-        }
-        freelist_size += u;
-        list = next;
-    }
-
-    return freelist_size;
-}
-
-void
-PyInt_Fini(void)
-{
-    PyIntObject *p;
-    PyIntBlock *list;
-    int i;
-    int u;                      /* total unfreed ints per block */
-
-#if NSMALLNEGINTS + NSMALLPOSINTS > 0
-    PyIntObject **q;
-
-    i = NSMALLNEGINTS + NSMALLPOSINTS;
-    q = small_ints;
-    while (--i >= 0) {
-        Py_XDECREF(*q);
-        *q++ = NULL;
-    }
-#endif
-    u = PyInt_ClearFreeList();
-    if (!Py_VerboseFlag)
-        return;
-    fprintf(stderr, "# cleanup ints");
-    if (!u) {
-        fprintf(stderr, "\n");
-    }
-    else {
-        fprintf(stderr,
-            ": %d unfreed int%s\n",
-            u, u == 1 ? "" : "s");
-    }
-    if (Py_VerboseFlag > 1) {
-        list = block_list;
-        while (list != NULL) {
-            for (i = 0, p = &list->objects[0];
-                 i < N_INTOBJECTS;
-                 i++, p++) {
-                if (PyInt_CheckExact(p) && p->ob_refcnt != 0)
-                    /* XXX(twouters) cast refcount to
-                       long until %zd is universally
-                       available
-                     */
-                    fprintf(stderr,
-                "#   <int at %p, refcnt=%ld, val=%ld>\n",
-                                p, (long)p->ob_refcnt,
-                                p->ob_ival);
-            }
-            list = list->next;
-        }
-    }
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/iterobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/iterobject.c
deleted file mode 100644
index 529b593..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/iterobject.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/* Iterator objects */
-
-#include "Python.h"
-
-typedef struct {
-    PyObject_HEAD
-    long      it_index;
-    PyObject *it_seq; /* Set to NULL when iterator is exhausted */
-} seqiterobject;
-
-PyObject *
-PySeqIter_New(PyObject *seq)
-{
-    seqiterobject *it;
-
-    if (!PySequence_Check(seq)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    it = PyObject_GC_New(seqiterobject, &PySeqIter_Type);
-    if (it == NULL)
-        return NULL;
-    it->it_index = 0;
-    Py_INCREF(seq);
-    it->it_seq = seq;
-    _PyObject_GC_TRACK(it);
-    return (PyObject *)it;
-}
-
-static void
-iter_dealloc(seqiterobject *it)
-{
-    _PyObject_GC_UNTRACK(it);
-    Py_XDECREF(it->it_seq);
-    PyObject_GC_Del(it);
-}
-
-static int
-iter_traverse(seqiterobject *it, visitproc visit, void *arg)
-{
-    Py_VISIT(it->it_seq);
-    return 0;
-}
-
-static PyObject *
-iter_iternext(PyObject *iterator)
-{
-    seqiterobject *it;
-    PyObject *seq;
-    PyObject *result;
-
-    assert(PySeqIter_Check(iterator));
-    it = (seqiterobject *)iterator;
-    seq = it->it_seq;
-    if (seq == NULL)
-        return NULL;
-
-    result = PySequence_GetItem(seq, it->it_index);
-    if (result != NULL) {
-        it->it_index++;
-        return result;
-    }
-    if (PyErr_ExceptionMatches(PyExc_IndexError) ||
-        PyErr_ExceptionMatches(PyExc_StopIteration))
-    {
-        PyErr_Clear();
-        Py_DECREF(seq);
-        it->it_seq = NULL;
-    }
-    return NULL;
-}
-
-static PyObject *
-iter_len(seqiterobject *it)
-{
-    Py_ssize_t seqsize, len;
-
-    if (it->it_seq) {
-        seqsize = PySequence_Size(it->it_seq);
-        if (seqsize == -1)
-            return NULL;
-        len = seqsize - it->it_index;
-        if (len >= 0)
-            return PyInt_FromSsize_t(len);
-    }
-    return PyInt_FromLong(0);
-}
-
-PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
-
-static PyMethodDef seqiter_methods[] = {
-    {"__length_hint__", (PyCFunction)iter_len, METH_NOARGS, length_hint_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyTypeObject PySeqIter_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "iterator",                                 /* tp_name */
-    sizeof(seqiterobject),                      /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)iter_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)iter_traverse,                /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    PyObject_SelfIter,                          /* tp_iter */
-    iter_iternext,                              /* tp_iternext */
-    seqiter_methods,                            /* tp_methods */
-    0,                                          /* tp_members */
-};
-
-/* -------------------------------------- */
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *it_callable; /* Set to NULL when iterator is exhausted */
-    PyObject *it_sentinel; /* Set to NULL when iterator is exhausted */
-} calliterobject;
-
-PyObject *
-PyCallIter_New(PyObject *callable, PyObject *sentinel)
-{
-    calliterobject *it;
-    it = PyObject_GC_New(calliterobject, &PyCallIter_Type);
-    if (it == NULL)
-        return NULL;
-    Py_INCREF(callable);
-    it->it_callable = callable;
-    Py_INCREF(sentinel);
-    it->it_sentinel = sentinel;
-    _PyObject_GC_TRACK(it);
-    return (PyObject *)it;
-}
-static void
-calliter_dealloc(calliterobject *it)
-{
-    _PyObject_GC_UNTRACK(it);
-    Py_XDECREF(it->it_callable);
-    Py_XDECREF(it->it_sentinel);
-    PyObject_GC_Del(it);
-}
-
-static int
-calliter_traverse(calliterobject *it, visitproc visit, void *arg)
-{
-    Py_VISIT(it->it_callable);
-    Py_VISIT(it->it_sentinel);
-    return 0;
-}
-
-static PyObject *
-calliter_iternext(calliterobject *it)
-{
-    if (it->it_callable != NULL) {
-        PyObject *args = PyTuple_New(0);
-        PyObject *result;
-        if (args == NULL)
-            return NULL;
-        result = PyObject_Call(it->it_callable, args, NULL);
-        Py_DECREF(args);
-        if (result != NULL) {
-            int ok;
-            ok = PyObject_RichCompareBool(result,
-                                          it->it_sentinel,
-                                          Py_EQ);
-            if (ok == 0)
-                return result; /* Common case, fast path */
-            Py_DECREF(result);
-            if (ok > 0) {
-                Py_CLEAR(it->it_callable);
-                Py_CLEAR(it->it_sentinel);
-            }
-        }
-        else if (PyErr_ExceptionMatches(PyExc_StopIteration)) {
-            PyErr_Clear();
-            Py_CLEAR(it->it_callable);
-            Py_CLEAR(it->it_sentinel);
-        }
-    }
-    return NULL;
-}
-
-PyTypeObject PyCallIter_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "callable-iterator",                        /* tp_name */
-    sizeof(calliterobject),                     /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)calliter_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)calliter_traverse,            /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    PyObject_SelfIter,                          /* tp_iter */
-    (iternextfunc)calliter_iternext,            /* tp_iternext */
-    0,                                          /* tp_methods */
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/listobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/listobject.c
deleted file mode 100644
index 2632524..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/listobject.c
+++ /dev/null
@@ -1,3044 +0,0 @@
-/* List object implementation */
-
-#include "Python.h"
-
-#ifdef STDC_HEADERS
-#include <stddef.h>
-#else
-#include <sys/types.h>          /* For size_t */
-#endif
-
-/* Ensure ob_item has room for at least newsize elements, and set
- * ob_size to newsize.  If newsize > ob_size on entry, the content
- * of the new slots at exit is undefined heap trash; it's the caller's
- * responsibility to overwrite them with sane values.
- * The number of allocated elements may grow, shrink, or stay the same.
- * Failure is impossible if newsize <= self.allocated on entry, although
- * that partly relies on an assumption that the system realloc() never
- * fails when passed a number of bytes <= the number of bytes last
- * allocated (the C standard doesn't guarantee this, but it's hard to
- * imagine a realloc implementation where it wouldn't be true).
- * Note that self->ob_item may change, and even if newsize is less
- * than ob_size on entry.
- */
-static int
-list_resize(PyListObject *self, Py_ssize_t newsize)
-{
-    PyObject **items;
-    size_t new_allocated;
-    Py_ssize_t allocated = self->allocated;
-
-    /* Bypass realloc() when a previous overallocation is large enough
-       to accommodate the newsize.  If the newsize falls lower than half
-       the allocated size, then proceed with the realloc() to shrink the list.
-    */
-    if (allocated >= newsize && newsize >= (allocated >> 1)) {
-        assert(self->ob_item != NULL || newsize == 0);
-        Py_SIZE(self) = newsize;
-        return 0;
-    }
-
-    /* This over-allocates proportional to the list size, making room
-     * for additional growth.  The over-allocation is mild, but is
-     * enough to give linear-time amortized behavior over a long
-     * sequence of appends() in the presence of a poorly-performing
-     * system realloc().
-     * The growth pattern is:  0, 4, 8, 16, 25, 35, 46, 58, 72, 88, ...
-     */
-    new_allocated = (newsize >> 3) + (newsize < 9 ? 3 : 6);
-
-    /* check for integer overflow */
-    if (new_allocated > PY_SIZE_MAX - newsize) {
-        PyErr_NoMemory();
-        return -1;
-    } else {
-        new_allocated += newsize;
-    }
-
-    if (newsize == 0)
-        new_allocated = 0;
-    items = self->ob_item;
-    if (new_allocated <= ((~(size_t)0) / sizeof(PyObject *)))
-        PyMem_RESIZE(items, PyObject *, new_allocated);
-    else
-        items = NULL;
-    if (items == NULL) {
-        PyErr_NoMemory();
-        return -1;
-    }
-    self->ob_item = items;
-    Py_SIZE(self) = newsize;
-    self->allocated = new_allocated;
-    return 0;
-}
-
-/* Debug statistic to compare allocations with reuse through the free list */
-#undef SHOW_ALLOC_COUNT
-#ifdef SHOW_ALLOC_COUNT
-static size_t count_alloc = 0;
-static size_t count_reuse = 0;
-
-static void
-show_alloc(void)
-{
-    fprintf(stderr, "List allocations: %" PY_FORMAT_SIZE_T "d\n",
-        count_alloc);
-    fprintf(stderr, "List reuse through freelist: %" PY_FORMAT_SIZE_T
-        "d\n", count_reuse);
-    fprintf(stderr, "%.2f%% reuse rate\n\n",
-        (100.0*count_reuse/(count_alloc+count_reuse)));
-}
-#endif
-
-/* Empty list reuse scheme to save calls to malloc and free */
-#ifndef PyList_MAXFREELIST
-#define PyList_MAXFREELIST 80
-#endif
-static PyListObject *free_list[PyList_MAXFREELIST];
-static int numfree = 0;
-
-void
-PyList_Fini(void)
-{
-    PyListObject *op;
-
-    while (numfree) {
-        op = free_list[--numfree];
-        assert(PyList_CheckExact(op));
-        PyObject_GC_Del(op);
-    }
-}
-
-PyObject *
-PyList_New(Py_ssize_t size)
-{
-    PyListObject *op;
-    size_t nbytes;
-#ifdef SHOW_ALLOC_COUNT
-    static int initialized = 0;
-    if (!initialized) {
-        Py_AtExit(show_alloc);
-        initialized = 1;
-    }
-#endif
-
-    if (size < 0) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    /* Check for overflow without an actual overflow,
-     *  which can cause compiler to optimise out */
-    if ((size_t)size > PY_SIZE_MAX / sizeof(PyObject *))
-        return PyErr_NoMemory();
-    nbytes = size * sizeof(PyObject *);
-    if (numfree) {
-        numfree--;
-        op = free_list[numfree];
-        _Py_NewReference((PyObject *)op);
-#ifdef SHOW_ALLOC_COUNT
-        count_reuse++;
-#endif
-    } else {
-        op = PyObject_GC_New(PyListObject, &PyList_Type);
-        if (op == NULL)
-            return NULL;
-#ifdef SHOW_ALLOC_COUNT
-        count_alloc++;
-#endif
-    }
-    if (size <= 0)
-        op->ob_item = NULL;
-    else {
-        op->ob_item = (PyObject **) PyMem_MALLOC(nbytes);
-        if (op->ob_item == NULL) {
-            Py_DECREF(op);
-            return PyErr_NoMemory();
-        }
-        memset(op->ob_item, 0, nbytes);
-    }
-    Py_SIZE(op) = size;
-    op->allocated = size;
-    _PyObject_GC_TRACK(op);
-    return (PyObject *) op;
-}
-
-Py_ssize_t
-PyList_Size(PyObject *op)
-{
-    if (!PyList_Check(op)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    else
-        return Py_SIZE(op);
-}
-
-static PyObject *indexerr = NULL;
-
-PyObject *
-PyList_GetItem(PyObject *op, Py_ssize_t i)
-{
-    if (!PyList_Check(op)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    if (i < 0 || i >= Py_SIZE(op)) {
-        if (indexerr == NULL) {
-            indexerr = PyString_FromString(
-                "list index out of range");
-            if (indexerr == NULL)
-                return NULL;
-        }
-        PyErr_SetObject(PyExc_IndexError, indexerr);
-        return NULL;
-    }
-    return ((PyListObject *)op) -> ob_item[i];
-}
-
-int
-PyList_SetItem(register PyObject *op, register Py_ssize_t i,
-               register PyObject *newitem)
-{
-    register PyObject *olditem;
-    register PyObject **p;
-    if (!PyList_Check(op)) {
-        Py_XDECREF(newitem);
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    if (i < 0 || i >= Py_SIZE(op)) {
-        Py_XDECREF(newitem);
-        PyErr_SetString(PyExc_IndexError,
-                        "list assignment index out of range");
-        return -1;
-    }
-    p = ((PyListObject *)op) -> ob_item + i;
-    olditem = *p;
-    *p = newitem;
-    Py_XDECREF(olditem);
-    return 0;
-}
-
-static int
-ins1(PyListObject *self, Py_ssize_t where, PyObject *v)
-{
-    Py_ssize_t i, n = Py_SIZE(self);
-    PyObject **items;
-    if (v == NULL) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    if (n == PY_SSIZE_T_MAX) {
-        PyErr_SetString(PyExc_OverflowError,
-            "cannot add more objects to list");
-        return -1;
-    }
-
-    if (list_resize(self, n+1) == -1)
-        return -1;
-
-    if (where < 0) {
-        where += n;
-        if (where < 0)
-            where = 0;
-    }
-    if (where > n)
-        where = n;
-    items = self->ob_item;
-    for (i = n; --i >= where; )
-        items[i+1] = items[i];
-    Py_INCREF(v);
-    items[where] = v;
-    return 0;
-}
-
-int
-PyList_Insert(PyObject *op, Py_ssize_t where, PyObject *newitem)
-{
-    if (!PyList_Check(op)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    return ins1((PyListObject *)op, where, newitem);
-}
-
-static int
-app1(PyListObject *self, PyObject *v)
-{
-    Py_ssize_t n = PyList_GET_SIZE(self);
-
-    assert (v != NULL);
-    if (n == PY_SSIZE_T_MAX) {
-        PyErr_SetString(PyExc_OverflowError,
-            "cannot add more objects to list");
-        return -1;
-    }
-
-    if (list_resize(self, n+1) == -1)
-        return -1;
-
-    Py_INCREF(v);
-    PyList_SET_ITEM(self, n, v);
-    return 0;
-}
-
-int
-PyList_Append(PyObject *op, PyObject *newitem)
-{
-    if (PyList_Check(op) && (newitem != NULL))
-        return app1((PyListObject *)op, newitem);
-    PyErr_BadInternalCall();
-    return -1;
-}
-
-/* Methods */
-
-static void
-list_dealloc(PyListObject *op)
-{
-    Py_ssize_t i;
-    PyObject_GC_UnTrack(op);
-    Py_TRASHCAN_SAFE_BEGIN(op)
-    if (op->ob_item != NULL) {
-        /* Do it backwards, for Christian Tismer.
-           There's a simple test case where somehow this reduces
-           thrashing when a *very* large list is created and
-           immediately deleted. */
-        i = Py_SIZE(op);
-        while (--i >= 0) {
-            Py_XDECREF(op->ob_item[i]);
-        }
-        PyMem_FREE(op->ob_item);
-    }
-    if (numfree < PyList_MAXFREELIST && PyList_CheckExact(op))
-        free_list[numfree++] = op;
-    else
-        Py_TYPE(op)->tp_free((PyObject *)op);
-    Py_TRASHCAN_SAFE_END(op)
-}
-
-static int
-list_print(PyListObject *op, FILE *fp, int flags)
-{
-    int rc;
-    Py_ssize_t i;
-    PyObject *item;
-
-    rc = Py_ReprEnter((PyObject*)op);
-    if (rc != 0) {
-        if (rc < 0)
-            return rc;
-        Py_BEGIN_ALLOW_THREADS
-        fprintf(fp, "[...]");
-        Py_END_ALLOW_THREADS
-        return 0;
-    }
-    Py_BEGIN_ALLOW_THREADS
-    fprintf(fp, "[");
-    Py_END_ALLOW_THREADS
-    for (i = 0; i < Py_SIZE(op); i++) {
-        item = op->ob_item[i];
-        Py_INCREF(item);
-        if (i > 0) {
-            Py_BEGIN_ALLOW_THREADS
-            fprintf(fp, ", ");
-            Py_END_ALLOW_THREADS
-        }
-        if (PyObject_Print(item, fp, 0) != 0) {
-            Py_DECREF(item);
-            Py_ReprLeave((PyObject *)op);
-            return -1;
-        }
-        Py_DECREF(item);
-    }
-    Py_BEGIN_ALLOW_THREADS
-    fprintf(fp, "]");
-    Py_END_ALLOW_THREADS
-    Py_ReprLeave((PyObject *)op);
-    return 0;
-}
-
-static PyObject *
-list_repr(PyListObject *v)
-{
-    Py_ssize_t i;
-    PyObject *s, *temp;
-    PyObject *pieces = NULL, *result = NULL;
-
-    i = Py_ReprEnter((PyObject*)v);
-    if (i != 0) {
-        return i > 0 ? PyString_FromString("[...]") : NULL;
-    }
-
-    if (Py_SIZE(v) == 0) {
-        result = PyString_FromString("[]");
-        goto Done;
-    }
-
-    pieces = PyList_New(0);
-    if (pieces == NULL)
-        goto Done;
-
-    /* Do repr() on each element.  Note that this may mutate the list,
-       so must refetch the list size on each iteration. */
-    for (i = 0; i < Py_SIZE(v); ++i) {
-        int status;
-        if (Py_EnterRecursiveCall(" while getting the repr of a list"))
-            goto Done;
-        s = PyObject_Repr(v->ob_item[i]);
-        Py_LeaveRecursiveCall();
-        if (s == NULL)
-            goto Done;
-        status = PyList_Append(pieces, s);
-        Py_DECREF(s);  /* append created a new ref */
-        if (status < 0)
-            goto Done;
-    }
-
-    /* Add "[]" decorations to the first and last items. */
-    assert(PyList_GET_SIZE(pieces) > 0);
-    s = PyString_FromString("[");
-    if (s == NULL)
-        goto Done;
-    temp = PyList_GET_ITEM(pieces, 0);
-    PyString_ConcatAndDel(&s, temp);
-    PyList_SET_ITEM(pieces, 0, s);
-    if (s == NULL)
-        goto Done;
-
-    s = PyString_FromString("]");
-    if (s == NULL)
-        goto Done;
-    temp = PyList_GET_ITEM(pieces, PyList_GET_SIZE(pieces) - 1);
-    PyString_ConcatAndDel(&temp, s);
-    PyList_SET_ITEM(pieces, PyList_GET_SIZE(pieces) - 1, temp);
-    if (temp == NULL)
-        goto Done;
-
-    /* Paste them all together with ", " between. */
-    s = PyString_FromString(", ");
-    if (s == NULL)
-        goto Done;
-    result = _PyString_Join(s, pieces);
-    Py_DECREF(s);
-
-Done:
-    Py_XDECREF(pieces);
-    Py_ReprLeave((PyObject *)v);
-    return result;
-}
-
-static Py_ssize_t
-list_length(PyListObject *a)
-{
-    return Py_SIZE(a);
-}
-
-static int
-list_contains(PyListObject *a, PyObject *el)
-{
-    Py_ssize_t i;
-    int cmp;
-
-    for (i = 0, cmp = 0 ; cmp == 0 && i < Py_SIZE(a); ++i)
-        cmp = PyObject_RichCompareBool(el, PyList_GET_ITEM(a, i),
-                                           Py_EQ);
-    return cmp;
-}
-
-static PyObject *
-list_item(PyListObject *a, Py_ssize_t i)
-{
-    if (i < 0 || i >= Py_SIZE(a)) {
-        if (indexerr == NULL) {
-            indexerr = PyString_FromString(
-                "list index out of range");
-            if (indexerr == NULL)
-                return NULL;
-        }
-        PyErr_SetObject(PyExc_IndexError, indexerr);
-        return NULL;
-    }
-    Py_INCREF(a->ob_item[i]);
-    return a->ob_item[i];
-}
-
-static PyObject *
-list_slice(PyListObject *a, Py_ssize_t ilow, Py_ssize_t ihigh)
-{
-    PyListObject *np;
-    PyObject **src, **dest;
-    Py_ssize_t i, len;
-    if (ilow < 0)
-        ilow = 0;
-    else if (ilow > Py_SIZE(a))
-        ilow = Py_SIZE(a);
-    if (ihigh < ilow)
-        ihigh = ilow;
-    else if (ihigh > Py_SIZE(a))
-        ihigh = Py_SIZE(a);
-    len = ihigh - ilow;
-    np = (PyListObject *) PyList_New(len);
-    if (np == NULL)
-        return NULL;
-
-    src = a->ob_item + ilow;
-    dest = np->ob_item;
-    for (i = 0; i < len; i++) {
-        PyObject *v = src[i];
-        Py_INCREF(v);
-        dest[i] = v;
-    }
-    return (PyObject *)np;
-}
-
-PyObject *
-PyList_GetSlice(PyObject *a, Py_ssize_t ilow, Py_ssize_t ihigh)
-{
-    if (!PyList_Check(a)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return list_slice((PyListObject *)a, ilow, ihigh);
-}
-
-static PyObject *
-list_concat(PyListObject *a, PyObject *bb)
-{
-    Py_ssize_t size;
-    Py_ssize_t i;
-    PyObject **src, **dest;
-    PyListObject *np;
-    if (!PyList_Check(bb)) {
-        PyErr_Format(PyExc_TypeError,
-                  "can only concatenate list (not \"%.200s\") to list",
-                  bb->ob_type->tp_name);
-        return NULL;
-    }
-#define b ((PyListObject *)bb)
-    size = Py_SIZE(a) + Py_SIZE(b);
-    if (size < 0)
-        return PyErr_NoMemory();
-    np = (PyListObject *) PyList_New(size);
-    if (np == NULL) {
-        return NULL;
-    }
-    src = a->ob_item;
-    dest = np->ob_item;
-    for (i = 0; i < Py_SIZE(a); i++) {
-        PyObject *v = src[i];
-        Py_INCREF(v);
-        dest[i] = v;
-    }
-    src = b->ob_item;
-    dest = np->ob_item + Py_SIZE(a);
-    for (i = 0; i < Py_SIZE(b); i++) {
-        PyObject *v = src[i];
-        Py_INCREF(v);
-        dest[i] = v;
-    }
-    return (PyObject *)np;
-#undef b
-}
-
-static PyObject *
-list_repeat(PyListObject *a, Py_ssize_t n)
-{
-    Py_ssize_t i, j;
-    Py_ssize_t size;
-    PyListObject *np;
-    PyObject **p, **items;
-    PyObject *elem;
-    if (n < 0)
-        n = 0;
-    size = Py_SIZE(a) * n;
-    if (n && size/n != Py_SIZE(a))
-        return PyErr_NoMemory();
-    if (size == 0)
-        return PyList_New(0);
-    np = (PyListObject *) PyList_New(size);
-    if (np == NULL)
-        return NULL;
-
-    items = np->ob_item;
-    if (Py_SIZE(a) == 1) {
-        elem = a->ob_item[0];
-        for (i = 0; i < n; i++) {
-            items[i] = elem;
-            Py_INCREF(elem);
-        }
-        return (PyObject *) np;
-    }
-    p = np->ob_item;
-    items = a->ob_item;
-    for (i = 0; i < n; i++) {
-        for (j = 0; j < Py_SIZE(a); j++) {
-            *p = items[j];
-            Py_INCREF(*p);
-            p++;
-        }
-    }
-    return (PyObject *) np;
-}
-
-static int
-list_clear(PyListObject *a)
-{
-    Py_ssize_t i;
-    PyObject **item = a->ob_item;
-    if (item != NULL) {
-        /* Because XDECREF can recursively invoke operations on
-           this list, we make it empty first. */
-        i = Py_SIZE(a);
-        Py_SIZE(a) = 0;
-        a->ob_item = NULL;
-        a->allocated = 0;
-        while (--i >= 0) {
-            Py_XDECREF(item[i]);
-        }
-        PyMem_FREE(item);
-    }
-    /* Never fails; the return value can be ignored.
-       Note that there is no guarantee that the list is actually empty
-       at this point, because XDECREF may have populated it again! */
-    return 0;
-}
-
-/* a[ilow:ihigh] = v if v != NULL.
- * del a[ilow:ihigh] if v == NULL.
- *
- * Special speed gimmick:  when v is NULL and ihigh - ilow <= 8, it's
- * guaranteed the call cannot fail.
- */
-static int
-list_ass_slice(PyListObject *a, Py_ssize_t ilow, Py_ssize_t ihigh, PyObject *v)
-{
-    /* Because [X]DECREF can recursively invoke list operations on
-       this list, we must postpone all [X]DECREF activity until
-       after the list is back in its canonical shape.  Therefore
-       we must allocate an additional array, 'recycle', into which
-       we temporarily copy the items that are deleted from the
-       list. :-( */
-    PyObject *recycle_on_stack[8];
-    PyObject **recycle = recycle_on_stack; /* will allocate more if needed */
-    PyObject **item;
-    PyObject **vitem = NULL;
-    PyObject *v_as_SF = NULL; /* PySequence_Fast(v) */
-    Py_ssize_t n; /* # of elements in replacement list */
-    Py_ssize_t norig; /* # of elements in list getting replaced */
-    Py_ssize_t d; /* Change in size */
-    Py_ssize_t k;
-    size_t s;
-    int result = -1;            /* guilty until proved innocent */
-#define b ((PyListObject *)v)
-    if (v == NULL)
-        n = 0;
-    else {
-        if (a == b) {
-            /* Special case "a[i:j] = a" -- copy b first */
-            v = list_slice(b, 0, Py_SIZE(b));
-            if (v == NULL)
-                return result;
-            result = list_ass_slice(a, ilow, ihigh, v);
-            Py_DECREF(v);
-            return result;
-        }
-        v_as_SF = PySequence_Fast(v, "can only assign an iterable");
-        if(v_as_SF == NULL)
-            goto Error;
-        n = PySequence_Fast_GET_SIZE(v_as_SF);
-        vitem = PySequence_Fast_ITEMS(v_as_SF);
-    }
-    if (ilow < 0)
-        ilow = 0;
-    else if (ilow > Py_SIZE(a))
-        ilow = Py_SIZE(a);
-
-    if (ihigh < ilow)
-        ihigh = ilow;
-    else if (ihigh > Py_SIZE(a))
-        ihigh = Py_SIZE(a);
-
-    norig = ihigh - ilow;
-    assert(norig >= 0);
-    d = n - norig;
-    if (Py_SIZE(a) + d == 0) {
-        Py_XDECREF(v_as_SF);
-        return list_clear(a);
-    }
-    item = a->ob_item;
-    /* recycle the items that we are about to remove */
-    s = norig * sizeof(PyObject *);
-    if (s > sizeof(recycle_on_stack)) {
-        recycle = (PyObject **)PyMem_MALLOC(s);
-        if (recycle == NULL) {
-            PyErr_NoMemory();
-            goto Error;
-        }
-    }
-    memcpy(recycle, &item[ilow], s);
-
-    if (d < 0) { /* Delete -d items */
-        memmove(&item[ihigh+d], &item[ihigh],
-            (Py_SIZE(a) - ihigh)*sizeof(PyObject *));
-        list_resize(a, Py_SIZE(a) + d);
-        item = a->ob_item;
-    }
-    else if (d > 0) { /* Insert d items */
-        k = Py_SIZE(a);
-        if (list_resize(a, k+d) < 0)
-            goto Error;
-        item = a->ob_item;
-        memmove(&item[ihigh+d], &item[ihigh],
-            (k - ihigh)*sizeof(PyObject *));
-    }
-    for (k = 0; k < n; k++, ilow++) {
-        PyObject *w = vitem[k];
-        Py_XINCREF(w);
-        item[ilow] = w;
-    }
-    for (k = norig - 1; k >= 0; --k)
-        Py_XDECREF(recycle[k]);
-    result = 0;
- Error:
-    if (recycle != recycle_on_stack)
-        PyMem_FREE(recycle);
-    Py_XDECREF(v_as_SF);
-    return result;
-#undef b
-}
-
-int
-PyList_SetSlice(PyObject *a, Py_ssize_t ilow, Py_ssize_t ihigh, PyObject *v)
-{
-    if (!PyList_Check(a)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    return list_ass_slice((PyListObject *)a, ilow, ihigh, v);
-}
-
-static PyObject *
-list_inplace_repeat(PyListObject *self, Py_ssize_t n)
-{
-    PyObject **items;
-    Py_ssize_t size, i, j, p;
-
-
-    size = PyList_GET_SIZE(self);
-    if (size == 0 || n == 1) {
-        Py_INCREF(self);
-        return (PyObject *)self;
-    }
-
-    if (n < 1) {
-        (void)list_clear(self);
-        Py_INCREF(self);
-        return (PyObject *)self;
-    }
-
-    if (size > PY_SSIZE_T_MAX / n) {
-        return PyErr_NoMemory();
-    }
-
-    if (list_resize(self, size*n) == -1)
-        return NULL;
-
-    p = size;
-    items = self->ob_item;
-    for (i = 1; i < n; i++) { /* Start counting at 1, not 0 */
-        for (j = 0; j < size; j++) {
-            PyObject *o = items[j];
-            Py_INCREF(o);
-            items[p++] = o;
-        }
-    }
-    Py_INCREF(self);
-    return (PyObject *)self;
-}
-
-static int
-list_ass_item(PyListObject *a, Py_ssize_t i, PyObject *v)
-{
-    PyObject *old_value;
-    if (i < 0 || i >= Py_SIZE(a)) {
-        PyErr_SetString(PyExc_IndexError,
-                        "list assignment index out of range");
-        return -1;
-    }
-    if (v == NULL)
-        return list_ass_slice(a, i, i+1, v);
-    Py_INCREF(v);
-    old_value = a->ob_item[i];
-    a->ob_item[i] = v;
-    Py_DECREF(old_value);
-    return 0;
-}
-
-static PyObject *
-listinsert(PyListObject *self, PyObject *args)
-{
-    Py_ssize_t i;
-    PyObject *v;
-    if (!PyArg_ParseTuple(args, "nO:insert", &i, &v))
-        return NULL;
-    if (ins1(self, i, v) == 0)
-        Py_RETURN_NONE;
-    return NULL;
-}
-
-static PyObject *
-listappend(PyListObject *self, PyObject *v)
-{
-    if (app1(self, v) == 0)
-        Py_RETURN_NONE;
-    return NULL;
-}
-
-static PyObject *
-listextend(PyListObject *self, PyObject *b)
-{
-    PyObject *it;      /* iter(v) */
-    Py_ssize_t m;                  /* size of self */
-    Py_ssize_t n;                  /* guess for size of b */
-    Py_ssize_t mn;                 /* m + n */
-    Py_ssize_t i;
-    PyObject *(*iternext)(PyObject *);
-
-    /* Special cases:
-       1) lists and tuples which can use PySequence_Fast ops
-       2) extending self to self requires making a copy first
-    */
-    if (PyList_CheckExact(b) || PyTuple_CheckExact(b) || (PyObject *)self == b) {
-        PyObject **src, **dest;
-        b = PySequence_Fast(b, "argument must be iterable");
-        if (!b)
-            return NULL;
-        n = PySequence_Fast_GET_SIZE(b);
-        if (n == 0) {
-            /* short circuit when b is empty */
-            Py_DECREF(b);
-            Py_RETURN_NONE;
-        }
-        m = Py_SIZE(self);
-        if (list_resize(self, m + n) == -1) {
-            Py_DECREF(b);
-            return NULL;
-        }
-        /* note that we may still have self == b here for the
-         * situation a.extend(a), but the following code works
-         * in that case too.  Just make sure to resize self
-         * before calling PySequence_Fast_ITEMS.
-         */
-        /* populate the end of self with b's items */
-        src = PySequence_Fast_ITEMS(b);
-        dest = self->ob_item + m;
-        for (i = 0; i < n; i++) {
-            PyObject *o = src[i];
-            Py_INCREF(o);
-            dest[i] = o;
-        }
-        Py_DECREF(b);
-        Py_RETURN_NONE;
-    }
-
-    it = PyObject_GetIter(b);
-    if (it == NULL)
-        return NULL;
-    iternext = *it->ob_type->tp_iternext;
-
-    /* Guess a result list size. */
-    n = _PyObject_LengthHint(b, 8);
-    if (n == -1) {
-        Py_DECREF(it);
-        return NULL;
-    }
-    m = Py_SIZE(self);
-    mn = m + n;
-    if (mn >= m) {
-        /* Make room. */
-        if (list_resize(self, mn) == -1)
-            goto error;
-        /* Make the list sane again. */
-        Py_SIZE(self) = m;
-    }
-    /* Else m + n overflowed; on the chance that n lied, and there really
-     * is enough room, ignore it.  If n was telling the truth, we'll
-     * eventually run out of memory during the loop.
-     */
-
-    /* Run iterator to exhaustion. */
-    for (;;) {
-        PyObject *item = iternext(it);
-        if (item == NULL) {
-            if (PyErr_Occurred()) {
-                if (PyErr_ExceptionMatches(PyExc_StopIteration))
-                    PyErr_Clear();
-                else
-                    goto error;
-            }
-            break;
-        }
-        if (Py_SIZE(self) < self->allocated) {
-            /* steals ref */
-            PyList_SET_ITEM(self, Py_SIZE(self), item);
-            ++Py_SIZE(self);
-        }
-        else {
-            int status = app1(self, item);
-            Py_DECREF(item);  /* append creates a new ref */
-            if (status < 0)
-                goto error;
-        }
-    }
-
-    /* Cut back result list if initial guess was too large. */
-    if (Py_SIZE(self) < self->allocated)
-        list_resize(self, Py_SIZE(self));  /* shrinking can't fail */
-
-    Py_DECREF(it);
-    Py_RETURN_NONE;
-
-  error:
-    Py_DECREF(it);
-    return NULL;
-}
-
-PyObject *
-_PyList_Extend(PyListObject *self, PyObject *b)
-{
-    return listextend(self, b);
-}
-
-static PyObject *
-list_inplace_concat(PyListObject *self, PyObject *other)
-{
-    PyObject *result;
-
-    result = listextend(self, other);
-    if (result == NULL)
-        return result;
-    Py_DECREF(result);
-    Py_INCREF(self);
-    return (PyObject *)self;
-}
-
-static PyObject *
-listpop(PyListObject *self, PyObject *args)
-{
-    Py_ssize_t i = -1;
-    PyObject *v;
-    int status;
-
-    if (!PyArg_ParseTuple(args, "|n:pop", &i))
-        return NULL;
-
-    if (Py_SIZE(self) == 0) {
-        /* Special-case most common failure cause */
-        PyErr_SetString(PyExc_IndexError, "pop from empty list");
-        return NULL;
-    }
-    if (i < 0)
-        i += Py_SIZE(self);
-    if (i < 0 || i >= Py_SIZE(self)) {
-        PyErr_SetString(PyExc_IndexError, "pop index out of range");
-        return NULL;
-    }
-    v = self->ob_item[i];
-    if (i == Py_SIZE(self) - 1) {
-        status = list_resize(self, Py_SIZE(self) - 1);
-        assert(status >= 0);
-        return v; /* and v now owns the reference the list had */
-    }
-    Py_INCREF(v);
-    status = list_ass_slice(self, i, i+1, (PyObject *)NULL);
-    assert(status >= 0);
-    /* Use status, so that in a release build compilers don't
-     * complain about the unused name.
-     */
-    (void) status;
-
-    return v;
-}
-
-/* Reverse a slice of a list in place, from lo up to (exclusive) hi. */
-static void
-reverse_slice(PyObject **lo, PyObject **hi)
-{
-    assert(lo && hi);
-
-    --hi;
-    while (lo < hi) {
-        PyObject *t = *lo;
-        *lo = *hi;
-        *hi = t;
-        ++lo;
-        --hi;
-    }
-}
-
-/* Lots of code for an adaptive, stable, natural mergesort.  There are many
- * pieces to this algorithm; read listsort.txt for overviews and details.
- */
-
-/* Comparison function.  Takes care of calling a user-supplied
- * comparison function (any callable Python object), which must not be
- * NULL (use the ISLT macro if you don't know, or call PyObject_RichCompareBool
- * with Py_LT if you know it's NULL).
- * Returns -1 on error, 1 if x < y, 0 if x >= y.
- */
-static int
-islt(PyObject *x, PyObject *y, PyObject *compare)
-{
-    PyObject *res;
-    PyObject *args;
-    Py_ssize_t i;
-
-    assert(compare != NULL);
-    /* Call the user's comparison function and translate the 3-way
-     * result into true or false (or error).
-     */
-    args = PyTuple_New(2);
-    if (args == NULL)
-        return -1;
-    Py_INCREF(x);
-    Py_INCREF(y);
-    PyTuple_SET_ITEM(args, 0, x);
-    PyTuple_SET_ITEM(args, 1, y);
-    res = PyObject_Call(compare, args, NULL);
-    Py_DECREF(args);
-    if (res == NULL)
-        return -1;
-    if (!PyInt_Check(res)) {
-        PyErr_Format(PyExc_TypeError,
-                     "comparison function must return int, not %.200s",
-                     res->ob_type->tp_name);
-        Py_DECREF(res);
-        return -1;
-    }
-    i = PyInt_AsLong(res);
-    Py_DECREF(res);
-    return i < 0;
-}
-
-/* If COMPARE is NULL, calls PyObject_RichCompareBool with Py_LT, else calls
- * islt.  This avoids a layer of function call in the usual case, and
- * sorting does many comparisons.
- * Returns -1 on error, 1 if x < y, 0 if x >= y.
- */
-#define ISLT(X, Y, COMPARE) ((COMPARE) == NULL ?                        \
-                 PyObject_RichCompareBool(X, Y, Py_LT) :                \
-                 islt(X, Y, COMPARE))
-
-/* Compare X to Y via "<".  Goto "fail" if the comparison raises an
-   error.  Else "k" is set to true iff X<Y, and an "if (k)" block is
-   started.  It makes more sense in context <wink>.  X and Y are PyObject*s.
-*/
-#define IFLT(X, Y) if ((k = ISLT(X, Y, compare)) < 0) goto fail;  \
-           if (k)
-
-/* binarysort is the best method for sorting small arrays: it does
-   few compares, but can do data movement quadratic in the number of
-   elements.
-   [lo, hi) is a contiguous slice of a list, and is sorted via
-   binary insertion.  This sort is stable.
-   On entry, must have lo <= start <= hi, and that [lo, start) is already
-   sorted (pass start == lo if you don't know!).
-   If islt() complains return -1, else 0.
-   Even in case of error, the output slice will be some permutation of
-   the input (nothing is lost or duplicated).
-*/
-static int
-binarysort(PyObject **lo, PyObject **hi, PyObject **start, PyObject *compare)
-     /* compare -- comparison function object, or NULL for default */
-{
-    register Py_ssize_t k;
-    register PyObject **l, **p, **r;
-    register PyObject *pivot;
-
-    assert(lo <= start && start <= hi);
-    /* assert [lo, start) is sorted */
-    if (lo == start)
-        ++start;
-    for (; start < hi; ++start) {
-        /* set l to where *start belongs */
-        l = lo;
-        r = start;
-        pivot = *r;
-        /* Invariants:
-         * pivot >= all in [lo, l).
-         * pivot  < all in [r, start).
-         * The second is vacuously true at the start.
-         */
-        assert(l < r);
-        do {
-            p = l + ((r - l) >> 1);
-            IFLT(pivot, *p)
-                r = p;
-            else
-                l = p+1;
-        } while (l < r);
-        assert(l == r);
-        /* The invariants still hold, so pivot >= all in [lo, l) and
-           pivot < all in [l, start), so pivot belongs at l.  Note
-           that if there are elements equal to pivot, l points to the
-           first slot after them -- that's why this sort is stable.
-           Slide over to make room.
-           Caution: using memmove is much slower under MSVC 5;
-           we're not usually moving many slots. */
-        for (p = start; p > l; --p)
-            *p = *(p-1);
-        *l = pivot;
-    }
-    return 0;
-
- fail:
-    return -1;
-}
-
-/*
-Return the length of the run beginning at lo, in the slice [lo, hi).  lo < hi
-is required on entry.  "A run" is the longest ascending sequence, with
-
-    lo[0] <= lo[1] <= lo[2] <= ...
-
-or the longest descending sequence, with
-
-    lo[0] > lo[1] > lo[2] > ...
-
-Boolean *descending is set to 0 in the former case, or to 1 in the latter.
-For its intended use in a stable mergesort, the strictness of the defn of
-"descending" is needed so that the caller can safely reverse a descending
-sequence without violating stability (strict > ensures there are no equal
-elements to get out of order).
-
-Returns -1 in case of error.
-*/
-static Py_ssize_t
-count_run(PyObject **lo, PyObject **hi, PyObject *compare, int *descending)
-{
-    Py_ssize_t k;
-    Py_ssize_t n;
-
-    assert(lo < hi);
-    *descending = 0;
-    ++lo;
-    if (lo == hi)
-        return 1;
-
-    n = 2;
-    IFLT(*lo, *(lo-1)) {
-        *descending = 1;
-        for (lo = lo+1; lo < hi; ++lo, ++n) {
-            IFLT(*lo, *(lo-1))
-                ;
-            else
-                break;
-        }
-    }
-    else {
-        for (lo = lo+1; lo < hi; ++lo, ++n) {
-            IFLT(*lo, *(lo-1))
-                break;
-        }
-    }
-
-    return n;
-fail:
-    return -1;
-}
-
-/*
-Locate the proper position of key in a sorted vector; if the vector contains
-an element equal to key, return the position immediately to the left of
-the leftmost equal element.  [gallop_right() does the same except returns
-the position to the right of the rightmost equal element (if any).]
-
-"a" is a sorted vector with n elements, starting at a[0].  n must be > 0.
-
-"hint" is an index at which to begin the search, 0 <= hint < n.  The closer
-hint is to the final result, the faster this runs.
-
-The return value is the int k in 0..n such that
-
-    a[k-1] < key <= a[k]
-
-pretending that *(a-1) is minus infinity and a[n] is plus infinity.  IOW,
-key belongs at index k; or, IOW, the first k elements of a should precede
-key, and the last n-k should follow key.
-
-Returns -1 on error.  See listsort.txt for info on the method.
-*/
-static Py_ssize_t
-gallop_left(PyObject *key, PyObject **a, Py_ssize_t n, Py_ssize_t hint, PyObject *compare)
-{
-    Py_ssize_t ofs;
-    Py_ssize_t lastofs;
-    Py_ssize_t k;
-
-    assert(key && a && n > 0 && hint >= 0 && hint < n);
-
-    a += hint;
-    lastofs = 0;
-    ofs = 1;
-    IFLT(*a, key) {
-        /* a[hint] < key -- gallop right, until
-         * a[hint + lastofs] < key <= a[hint + ofs]
-         */
-        const Py_ssize_t maxofs = n - hint;             /* &a[n-1] is highest */
-        while (ofs < maxofs) {
-            IFLT(a[ofs], key) {
-                lastofs = ofs;
-                ofs = (ofs << 1) + 1;
-                if (ofs <= 0)                   /* int overflow */
-                    ofs = maxofs;
-            }
-            else                /* key <= a[hint + ofs] */
-                break;
-        }
-        if (ofs > maxofs)
-            ofs = maxofs;
-        /* Translate back to offsets relative to &a[0]. */
-        lastofs += hint;
-        ofs += hint;
-    }
-    else {
-        /* key <= a[hint] -- gallop left, until
-         * a[hint - ofs] < key <= a[hint - lastofs]
-         */
-        const Py_ssize_t maxofs = hint + 1;             /* &a[0] is lowest */
-        while (ofs < maxofs) {
-            IFLT(*(a-ofs), key)
-                break;
-            /* key <= a[hint - ofs] */
-            lastofs = ofs;
-            ofs = (ofs << 1) + 1;
-            if (ofs <= 0)               /* int overflow */
-                ofs = maxofs;
-        }
-        if (ofs > maxofs)
-            ofs = maxofs;
-        /* Translate back to positive offsets relative to &a[0]. */
-        k = lastofs;
-        lastofs = hint - ofs;
-        ofs = hint - k;
-    }
-    a -= hint;
-
-    assert(-1 <= lastofs && lastofs < ofs && ofs <= n);
-    /* Now a[lastofs] < key <= a[ofs], so key belongs somewhere to the
-     * right of lastofs but no farther right than ofs.  Do a binary
-     * search, with invariant a[lastofs-1] < key <= a[ofs].
-     */
-    ++lastofs;
-    while (lastofs < ofs) {
-        Py_ssize_t m = lastofs + ((ofs - lastofs) >> 1);
-
-        IFLT(a[m], key)
-            lastofs = m+1;              /* a[m] < key */
-        else
-            ofs = m;                    /* key <= a[m] */
-    }
-    assert(lastofs == ofs);             /* so a[ofs-1] < key <= a[ofs] */
-    return ofs;
-
-fail:
-    return -1;
-}
-
-/*
-Exactly like gallop_left(), except that if key already exists in a[0:n],
-finds the position immediately to the right of the rightmost equal value.
-
-The return value is the int k in 0..n such that
-
-    a[k-1] <= key < a[k]
-
-or -1 if error.
-
-The code duplication is massive, but this is enough different given that
-we're sticking to "<" comparisons that it's much harder to follow if
-written as one routine with yet another "left or right?" flag.
-*/
-static Py_ssize_t
-gallop_right(PyObject *key, PyObject **a, Py_ssize_t n, Py_ssize_t hint, PyObject *compare)
-{
-    Py_ssize_t ofs;
-    Py_ssize_t lastofs;
-    Py_ssize_t k;
-
-    assert(key && a && n > 0 && hint >= 0 && hint < n);
-
-    a += hint;
-    lastofs = 0;
-    ofs = 1;
-    IFLT(key, *a) {
-        /* key < a[hint] -- gallop left, until
-         * a[hint - ofs] <= key < a[hint - lastofs]
-         */
-        const Py_ssize_t maxofs = hint + 1;             /* &a[0] is lowest */
-        while (ofs < maxofs) {
-            IFLT(key, *(a-ofs)) {
-                lastofs = ofs;
-                ofs = (ofs << 1) + 1;
-                if (ofs <= 0)                   /* int overflow */
-                    ofs = maxofs;
-            }
-            else                /* a[hint - ofs] <= key */
-                break;
-        }
-        if (ofs > maxofs)
-            ofs = maxofs;
-        /* Translate back to positive offsets relative to &a[0]. */
-        k = lastofs;
-        lastofs = hint - ofs;
-        ofs = hint - k;
-    }
-    else {
-        /* a[hint] <= key -- gallop right, until
-         * a[hint + lastofs] <= key < a[hint + ofs]
-        */
-        const Py_ssize_t maxofs = n - hint;             /* &a[n-1] is highest */
-        while (ofs < maxofs) {
-            IFLT(key, a[ofs])
-                break;
-            /* a[hint + ofs] <= key */
-            lastofs = ofs;
-            ofs = (ofs << 1) + 1;
-            if (ofs <= 0)               /* int overflow */
-                ofs = maxofs;
-        }
-        if (ofs > maxofs)
-            ofs = maxofs;
-        /* Translate back to offsets relative to &a[0]. */
-        lastofs += hint;
-        ofs += hint;
-    }
-    a -= hint;
-
-    assert(-1 <= lastofs && lastofs < ofs && ofs <= n);
-    /* Now a[lastofs] <= key < a[ofs], so key belongs somewhere to the
-     * right of lastofs but no farther right than ofs.  Do a binary
-     * search, with invariant a[lastofs-1] <= key < a[ofs].
-     */
-    ++lastofs;
-    while (lastofs < ofs) {
-        Py_ssize_t m = lastofs + ((ofs - lastofs) >> 1);
-
-        IFLT(key, a[m])
-            ofs = m;                    /* key < a[m] */
-        else
-            lastofs = m+1;              /* a[m] <= key */
-    }
-    assert(lastofs == ofs);             /* so a[ofs-1] <= key < a[ofs] */
-    return ofs;
-
-fail:
-    return -1;
-}
-
-/* The maximum number of entries in a MergeState's pending-runs stack.
- * This is enough to sort arrays of size up to about
- *     32 * phi ** MAX_MERGE_PENDING
- * where phi ~= 1.618.  85 is ridiculouslylarge enough, good for an array
- * with 2**64 elements.
- */
-#define MAX_MERGE_PENDING 85
-
-/* When we get into galloping mode, we stay there until both runs win less
- * often than MIN_GALLOP consecutive times.  See listsort.txt for more info.
- */
-#define MIN_GALLOP 7
-
-/* Avoid malloc for small temp arrays. */
-#define MERGESTATE_TEMP_SIZE 256
-
-/* One MergeState exists on the stack per invocation of mergesort.  It's just
- * a convenient way to pass state around among the helper functions.
- */
-struct s_slice {
-    PyObject **base;
-    Py_ssize_t len;
-};
-
-typedef struct s_MergeState {
-    /* The user-supplied comparison function. or NULL if none given. */
-    PyObject *compare;
-
-    /* This controls when we get *into* galloping mode.  It's initialized
-     * to MIN_GALLOP.  merge_lo and merge_hi tend to nudge it higher for
-     * random data, and lower for highly structured data.
-     */
-    Py_ssize_t min_gallop;
-
-    /* 'a' is temp storage to help with merges.  It contains room for
-     * alloced entries.
-     */
-    PyObject **a;       /* may point to temparray below */
-    Py_ssize_t alloced;
-
-    /* A stack of n pending runs yet to be merged.  Run #i starts at
-     * address base[i] and extends for len[i] elements.  It's always
-     * true (so long as the indices are in bounds) that
-     *
-     *     pending[i].base + pending[i].len == pending[i+1].base
-     *
-     * so we could cut the storage for this, but it's a minor amount,
-     * and keeping all the info explicit simplifies the code.
-     */
-    int n;
-    struct s_slice pending[MAX_MERGE_PENDING];
-
-    /* 'a' points to this when possible, rather than muck with malloc. */
-    PyObject *temparray[MERGESTATE_TEMP_SIZE];
-} MergeState;
-
-/* Conceptually a MergeState's constructor. */
-static void
-merge_init(MergeState *ms, PyObject *compare)
-{
-    assert(ms != NULL);
-    ms->compare = compare;
-    ms->a = ms->temparray;
-    ms->alloced = MERGESTATE_TEMP_SIZE;
-    ms->n = 0;
-    ms->min_gallop = MIN_GALLOP;
-}
-
-/* Free all the temp memory owned by the MergeState.  This must be called
- * when you're done with a MergeState, and may be called before then if
- * you want to free the temp memory early.
- */
-static void
-merge_freemem(MergeState *ms)
-{
-    assert(ms != NULL);
-    if (ms->a != ms->temparray)
-        PyMem_Free(ms->a);
-    ms->a = ms->temparray;
-    ms->alloced = MERGESTATE_TEMP_SIZE;
-}
-
-/* Ensure enough temp memory for 'need' array slots is available.
- * Returns 0 on success and -1 if the memory can't be gotten.
- */
-static int
-merge_getmem(MergeState *ms, Py_ssize_t need)
-{
-    assert(ms != NULL);
-    if (need <= ms->alloced)
-        return 0;
-    /* Don't realloc!  That can cost cycles to copy the old data, but
-     * we don't care what's in the block.
-     */
-    merge_freemem(ms);
-    if ((size_t)need > PY_SSIZE_T_MAX / sizeof(PyObject*)) {
-        PyErr_NoMemory();
-        return -1;
-    }
-    ms->a = (PyObject **)PyMem_Malloc(need * sizeof(PyObject*));
-    if (ms->a) {
-        ms->alloced = need;
-        return 0;
-    }
-    PyErr_NoMemory();
-    merge_freemem(ms);          /* reset to sane state */
-    return -1;
-}
-#define MERGE_GETMEM(MS, NEED) ((NEED) <= (MS)->alloced ? 0 :   \
-                                merge_getmem(MS, NEED))
-
-/* Merge the na elements starting at pa with the nb elements starting at pb
- * in a stable way, in-place.  na and nb must be > 0, and pa + na == pb.
- * Must also have that *pb < *pa, that pa[na-1] belongs at the end of the
- * merge, and should have na <= nb.  See listsort.txt for more info.
- * Return 0 if successful, -1 if error.
- */
-static Py_ssize_t
-merge_lo(MergeState *ms, PyObject **pa, Py_ssize_t na,
-                         PyObject **pb, Py_ssize_t nb)
-{
-    Py_ssize_t k;
-    PyObject *compare;
-    PyObject **dest;
-    int result = -1;            /* guilty until proved innocent */
-    Py_ssize_t min_gallop;
-
-    assert(ms && pa && pb && na > 0 && nb > 0 && pa + na == pb);
-    if (MERGE_GETMEM(ms, na) < 0)
-        return -1;
-    memcpy(ms->a, pa, na * sizeof(PyObject*));
-    dest = pa;
-    pa = ms->a;
-
-    *dest++ = *pb++;
-    --nb;
-    if (nb == 0)
-        goto Succeed;
-    if (na == 1)
-        goto CopyB;
-
-    min_gallop = ms->min_gallop;
-    compare = ms->compare;
-    for (;;) {
-        Py_ssize_t acount = 0;          /* # of times A won in a row */
-        Py_ssize_t bcount = 0;          /* # of times B won in a row */
-
-        /* Do the straightforward thing until (if ever) one run
-         * appears to win consistently.
-         */
-        for (;;) {
-            assert(na > 1 && nb > 0);
-            k = ISLT(*pb, *pa, compare);
-            if (k) {
-                if (k < 0)
-                    goto Fail;
-                *dest++ = *pb++;
-                ++bcount;
-                acount = 0;
-                --nb;
-                if (nb == 0)
-                    goto Succeed;
-                if (bcount >= min_gallop)
-                    break;
-            }
-            else {
-                *dest++ = *pa++;
-                ++acount;
-                bcount = 0;
-                --na;
-                if (na == 1)
-                    goto CopyB;
-                if (acount >= min_gallop)
-                    break;
-            }
-        }
-
-        /* One run is winning so consistently that galloping may
-         * be a huge win.  So try that, and continue galloping until
-         * (if ever) neither run appears to be winning consistently
-         * anymore.
-         */
-        ++min_gallop;
-        do {
-            assert(na > 1 && nb > 0);
-            min_gallop -= min_gallop > 1;
-            ms->min_gallop = min_gallop;
-            k = gallop_right(*pb, pa, na, 0, compare);
-            acount = k;
-            if (k) {
-                if (k < 0)
-                    goto Fail;
-                memcpy(dest, pa, k * sizeof(PyObject *));
-                dest += k;
-                pa += k;
-                na -= k;
-                if (na == 1)
-                    goto CopyB;
-                /* na==0 is impossible now if the comparison
-                 * function is consistent, but we can't assume
-                 * that it is.
-                 */
-                if (na == 0)
-                    goto Succeed;
-            }
-            *dest++ = *pb++;
-            --nb;
-            if (nb == 0)
-                goto Succeed;
-
-            k = gallop_left(*pa, pb, nb, 0, compare);
-            bcount = k;
-            if (k) {
-                if (k < 0)
-                    goto Fail;
-                memmove(dest, pb, k * sizeof(PyObject *));
-                dest += k;
-                pb += k;
-                nb -= k;
-                if (nb == 0)
-                    goto Succeed;
-            }
-            *dest++ = *pa++;
-            --na;
-            if (na == 1)
-                goto CopyB;
-        } while (acount >= MIN_GALLOP || bcount >= MIN_GALLOP);
-        ++min_gallop;           /* penalize it for leaving galloping mode */
-        ms->min_gallop = min_gallop;
-    }
-Succeed:
-    result = 0;
-Fail:
-    if (na)
-        memcpy(dest, pa, na * sizeof(PyObject*));
-    return result;
-CopyB:
-    assert(na == 1 && nb > 0);
-    /* The last element of pa belongs at the end of the merge. */
-    memmove(dest, pb, nb * sizeof(PyObject *));
-    dest[nb] = *pa;
-    return 0;
-}
-
-/* Merge the na elements starting at pa with the nb elements starting at pb
- * in a stable way, in-place.  na and nb must be > 0, and pa + na == pb.
- * Must also have that *pb < *pa, that pa[na-1] belongs at the end of the
- * merge, and should have na >= nb.  See listsort.txt for more info.
- * Return 0 if successful, -1 if error.
- */
-static Py_ssize_t
-merge_hi(MergeState *ms, PyObject **pa, Py_ssize_t na, PyObject **pb, Py_ssize_t nb)
-{
-    Py_ssize_t k;
-    PyObject *compare;
-    PyObject **dest;
-    int result = -1;            /* guilty until proved innocent */
-    PyObject **basea;
-    PyObject **baseb;
-    Py_ssize_t min_gallop;
-
-    assert(ms && pa && pb && na > 0 && nb > 0 && pa + na == pb);
-    if (MERGE_GETMEM(ms, nb) < 0)
-        return -1;
-    dest = pb + nb - 1;
-    memcpy(ms->a, pb, nb * sizeof(PyObject*));
-    basea = pa;
-    baseb = ms->a;
-    pb = ms->a + nb - 1;
-    pa += na - 1;
-
-    *dest-- = *pa--;
-    --na;
-    if (na == 0)
-        goto Succeed;
-    if (nb == 1)
-        goto CopyA;
-
-    min_gallop = ms->min_gallop;
-    compare = ms->compare;
-    for (;;) {
-        Py_ssize_t acount = 0;          /* # of times A won in a row */
-        Py_ssize_t bcount = 0;          /* # of times B won in a row */
-
-        /* Do the straightforward thing until (if ever) one run
-         * appears to win consistently.
-         */
-        for (;;) {
-            assert(na > 0 && nb > 1);
-            k = ISLT(*pb, *pa, compare);
-            if (k) {
-                if (k < 0)
-                    goto Fail;
-                *dest-- = *pa--;
-                ++acount;
-                bcount = 0;
-                --na;
-                if (na == 0)
-                    goto Succeed;
-                if (acount >= min_gallop)
-                    break;
-            }
-            else {
-                *dest-- = *pb--;
-                ++bcount;
-                acount = 0;
-                --nb;
-                if (nb == 1)
-                    goto CopyA;
-                if (bcount >= min_gallop)
-                    break;
-            }
-        }
-
-        /* One run is winning so consistently that galloping may
-         * be a huge win.  So try that, and continue galloping until
-         * (if ever) neither run appears to be winning consistently
-         * anymore.
-         */
-        ++min_gallop;
-        do {
-            assert(na > 0 && nb > 1);
-            min_gallop -= min_gallop > 1;
-            ms->min_gallop = min_gallop;
-            k = gallop_right(*pb, basea, na, na-1, compare);
-            if (k < 0)
-                goto Fail;
-            k = na - k;
-            acount = k;
-            if (k) {
-                dest -= k;
-                pa -= k;
-                memmove(dest+1, pa+1, k * sizeof(PyObject *));
-                na -= k;
-                if (na == 0)
-                    goto Succeed;
-            }
-            *dest-- = *pb--;
-            --nb;
-            if (nb == 1)
-                goto CopyA;
-
-            k = gallop_left(*pa, baseb, nb, nb-1, compare);
-            if (k < 0)
-                goto Fail;
-            k = nb - k;
-            bcount = k;
-            if (k) {
-                dest -= k;
-                pb -= k;
-                memcpy(dest+1, pb+1, k * sizeof(PyObject *));
-                nb -= k;
-                if (nb == 1)
-                    goto CopyA;
-                /* nb==0 is impossible now if the comparison
-                 * function is consistent, but we can't assume
-                 * that it is.
-                 */
-                if (nb == 0)
-                    goto Succeed;
-            }
-            *dest-- = *pa--;
-            --na;
-            if (na == 0)
-                goto Succeed;
-        } while (acount >= MIN_GALLOP || bcount >= MIN_GALLOP);
-        ++min_gallop;           /* penalize it for leaving galloping mode */
-        ms->min_gallop = min_gallop;
-    }
-Succeed:
-    result = 0;
-Fail:
-    if (nb)
-        memcpy(dest-(nb-1), baseb, nb * sizeof(PyObject*));
-    return result;
-CopyA:
-    assert(nb == 1 && na > 0);
-    /* The first element of pb belongs at the front of the merge. */
-    dest -= na;
-    pa -= na;
-    memmove(dest+1, pa+1, na * sizeof(PyObject *));
-    *dest = *pb;
-    return 0;
-}
-
-/* Merge the two runs at stack indices i and i+1.
- * Returns 0 on success, -1 on error.
- */
-static Py_ssize_t
-merge_at(MergeState *ms, Py_ssize_t i)
-{
-    PyObject **pa, **pb;
-    Py_ssize_t na, nb;
-    Py_ssize_t k;
-    PyObject *compare;
-
-    assert(ms != NULL);
-    assert(ms->n >= 2);
-    assert(i >= 0);
-    assert(i == ms->n - 2 || i == ms->n - 3);
-
-    pa = ms->pending[i].base;
-    na = ms->pending[i].len;
-    pb = ms->pending[i+1].base;
-    nb = ms->pending[i+1].len;
-    assert(na > 0 && nb > 0);
-    assert(pa + na == pb);
-
-    /* Record the length of the combined runs; if i is the 3rd-last
-     * run now, also slide over the last run (which isn't involved
-     * in this merge).  The current run i+1 goes away in any case.
-     */
-    ms->pending[i].len = na + nb;
-    if (i == ms->n - 3)
-        ms->pending[i+1] = ms->pending[i+2];
-    --ms->n;
-
-    /* Where does b start in a?  Elements in a before that can be
-     * ignored (already in place).
-     */
-    compare = ms->compare;
-    k = gallop_right(*pb, pa, na, 0, compare);
-    if (k < 0)
-        return -1;
-    pa += k;
-    na -= k;
-    if (na == 0)
-        return 0;
-
-    /* Where does a end in b?  Elements in b after that can be
-     * ignored (already in place).
-     */
-    nb = gallop_left(pa[na-1], pb, nb, nb-1, compare);
-    if (nb <= 0)
-        return nb;
-
-    /* Merge what remains of the runs, using a temp array with
-     * min(na, nb) elements.
-     */
-    if (na <= nb)
-        return merge_lo(ms, pa, na, pb, nb);
-    else
-        return merge_hi(ms, pa, na, pb, nb);
-}
-
-/* Examine the stack of runs waiting to be merged, merging adjacent runs
- * until the stack invariants are re-established:
- *
- * 1. len[-3] > len[-2] + len[-1]
- * 2. len[-2] > len[-1]
- *
- * See listsort.txt for more info.
- *
- * Returns 0 on success, -1 on error.
- */
-static int
-merge_collapse(MergeState *ms)
-{
-    struct s_slice *p = ms->pending;
-
-    assert(ms);
-    while (ms->n > 1) {
-        Py_ssize_t n = ms->n - 2;
-        if (n > 0 && p[n-1].len <= p[n].len + p[n+1].len) {
-            if (p[n-1].len < p[n+1].len)
-                --n;
-            if (merge_at(ms, n) < 0)
-                return -1;
-        }
-        else if (p[n].len <= p[n+1].len) {
-                 if (merge_at(ms, n) < 0)
-                        return -1;
-        }
-        else
-            break;
-    }
-    return 0;
-}
-
-/* Regardless of invariants, merge all runs on the stack until only one
- * remains.  This is used at the end of the mergesort.
- *
- * Returns 0 on success, -1 on error.
- */
-static int
-merge_force_collapse(MergeState *ms)
-{
-    struct s_slice *p = ms->pending;
-
-    assert(ms);
-    while (ms->n > 1) {
-        Py_ssize_t n = ms->n - 2;
-        if (n > 0 && p[n-1].len < p[n+1].len)
-            --n;
-        if (merge_at(ms, n) < 0)
-            return -1;
-    }
-    return 0;
-}
-
-/* Compute a good value for the minimum run length; natural runs shorter
- * than this are boosted artificially via binary insertion.
- *
- * If n < 64, return n (it's too small to bother with fancy stuff).
- * Else if n is an exact power of 2, return 32.
- * Else return an int k, 32 <= k <= 64, such that n/k is close to, but
- * strictly less than, an exact power of 2.
- *
- * See listsort.txt for more info.
- */
-static Py_ssize_t
-merge_compute_minrun(Py_ssize_t n)
-{
-    Py_ssize_t r = 0;           /* becomes 1 if any 1 bits are shifted off */
-
-    assert(n >= 0);
-    while (n >= 64) {
-        r |= n & 1;
-        n >>= 1;
-    }
-    return n + r;
-}
-
-/* Special wrapper to support stable sorting using the decorate-sort-undecorate
-   pattern.  Holds a key which is used for comparisons and the original record
-   which is returned during the undecorate phase.  By exposing only the key
-   during comparisons, the underlying sort stability characteristics are left
-   unchanged.  Also, if a custom comparison function is used, it will only see
-   the key instead of a full record. */
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *key;
-    PyObject *value;
-} sortwrapperobject;
-
-PyDoc_STRVAR(sortwrapper_doc, "Object wrapper with a custom sort key.");
-static PyObject *
-sortwrapper_richcompare(sortwrapperobject *, sortwrapperobject *, int);
-static void
-sortwrapper_dealloc(sortwrapperobject *);
-
-static PyTypeObject sortwrapper_type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "sortwrapper",                              /* tp_name */
-    sizeof(sortwrapperobject),                  /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)sortwrapper_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT |
-    Py_TPFLAGS_HAVE_RICHCOMPARE,                /* tp_flags */
-    sortwrapper_doc,                            /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    (richcmpfunc)sortwrapper_richcompare,       /* tp_richcompare */
-};
-
-
-static PyObject *
-sortwrapper_richcompare(sortwrapperobject *a, sortwrapperobject *b, int op)
-{
-    if (!PyObject_TypeCheck(b, &sortwrapper_type)) {
-        PyErr_SetString(PyExc_TypeError,
-            "expected a sortwrapperobject");
-        return NULL;
-    }
-    return PyObject_RichCompare(a->key, b->key, op);
-}
-
-static void
-sortwrapper_dealloc(sortwrapperobject *so)
-{
-    Py_XDECREF(so->key);
-    Py_XDECREF(so->value);
-    PyObject_Del(so);
-}
-
-/* Returns a new reference to a sortwrapper.
-   Consumes the references to the two underlying objects. */
-
-static PyObject *
-build_sortwrapper(PyObject *key, PyObject *value)
-{
-    sortwrapperobject *so;
-
-    so = PyObject_New(sortwrapperobject, &sortwrapper_type);
-    if (so == NULL)
-        return NULL;
-    so->key = key;
-    so->value = value;
-    return (PyObject *)so;
-}
-
-/* Returns a new reference to the value underlying the wrapper. */
-static PyObject *
-sortwrapper_getvalue(PyObject *so)
-{
-    PyObject *value;
-
-    if (!PyObject_TypeCheck(so, &sortwrapper_type)) {
-        PyErr_SetString(PyExc_TypeError,
-            "expected a sortwrapperobject");
-        return NULL;
-    }
-    value = ((sortwrapperobject *)so)->value;
-    Py_INCREF(value);
-    return value;
-}
-
-/* Wrapper for user specified cmp functions in combination with a
-   specified key function.  Makes sure the cmp function is presented
-   with the actual key instead of the sortwrapper */
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *func;
-} cmpwrapperobject;
-
-static void
-cmpwrapper_dealloc(cmpwrapperobject *co)
-{
-    Py_XDECREF(co->func);
-    PyObject_Del(co);
-}
-
-static PyObject *
-cmpwrapper_call(cmpwrapperobject *co, PyObject *args, PyObject *kwds)
-{
-    PyObject *x, *y, *xx, *yy;
-
-    if (!PyArg_UnpackTuple(args, "", 2, 2, &x, &y))
-        return NULL;
-    if (!PyObject_TypeCheck(x, &sortwrapper_type) ||
-        !PyObject_TypeCheck(y, &sortwrapper_type)) {
-        PyErr_SetString(PyExc_TypeError,
-            "expected a sortwrapperobject");
-        return NULL;
-    }
-    xx = ((sortwrapperobject *)x)->key;
-    yy = ((sortwrapperobject *)y)->key;
-    return PyObject_CallFunctionObjArgs(co->func, xx, yy, NULL);
-}
-
-PyDoc_STRVAR(cmpwrapper_doc, "cmp() wrapper for sort with custom keys.");
-
-static PyTypeObject cmpwrapper_type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "cmpwrapper",                               /* tp_name */
-    sizeof(cmpwrapperobject),                   /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)cmpwrapper_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 */
-    (ternaryfunc)cmpwrapper_call,               /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                         /* tp_flags */
-    cmpwrapper_doc,                             /* tp_doc */
-};
-
-static PyObject *
-build_cmpwrapper(PyObject *cmpfunc)
-{
-    cmpwrapperobject *co;
-
-    co = PyObject_New(cmpwrapperobject, &cmpwrapper_type);
-    if (co == NULL)
-        return NULL;
-    Py_INCREF(cmpfunc);
-    co->func = cmpfunc;
-    return (PyObject *)co;
-}
-
-/* An adaptive, stable, natural mergesort.  See listsort.txt.
- * Returns Py_None on success, NULL on error.  Even in case of error, the
- * list will be some permutation of its input state (nothing is lost or
- * duplicated).
- */
-static PyObject *
-listsort(PyListObject *self, PyObject *args, PyObject *kwds)
-{
-    MergeState ms;
-    PyObject **lo, **hi;
-    Py_ssize_t nremaining;
-    Py_ssize_t minrun;
-    Py_ssize_t saved_ob_size, saved_allocated;
-    PyObject **saved_ob_item;
-    PyObject **final_ob_item;
-    PyObject *compare = NULL;
-    PyObject *result = NULL;            /* guilty until proved innocent */
-    int reverse = 0;
-    PyObject *keyfunc = NULL;
-    Py_ssize_t i;
-    PyObject *key, *value, *kvpair;
-    static char *kwlist[] = {"cmp", "key", "reverse", 0};
-
-    assert(self != NULL);
-    assert (PyList_Check(self));
-    if (args != NULL) {
-        if (!PyArg_ParseTupleAndKeywords(args, kwds, "|OOi:sort",
-            kwlist, &compare, &keyfunc, &reverse))
-            return NULL;
-    }
-    if (compare == Py_None)
-        compare = NULL;
-    if (compare != NULL &&
-        PyErr_WarnPy3k("the cmp argument is not supported in 3.x", 1) < 0)
-        return NULL;
-    if (keyfunc == Py_None)
-        keyfunc = NULL;
-    if (compare != NULL && keyfunc != NULL) {
-        compare = build_cmpwrapper(compare);
-        if (compare == NULL)
-            return NULL;
-    } else
-        Py_XINCREF(compare);
-
-    /* The list is temporarily made empty, so that mutations performed
-     * by comparison functions can't affect the slice of memory we're
-     * sorting (allowing mutations during sorting is a core-dump
-     * factory, since ob_item may change).
-     */
-    saved_ob_size = Py_SIZE(self);
-    saved_ob_item = self->ob_item;
-    saved_allocated = self->allocated;
-    Py_SIZE(self) = 0;
-    self->ob_item = NULL;
-    self->allocated = -1; /* any operation will reset it to >= 0 */
-
-    if (keyfunc != NULL) {
-        for (i=0 ; i < saved_ob_size ; i++) {
-            value = saved_ob_item[i];
-            key = PyObject_CallFunctionObjArgs(keyfunc, value,
-                                               NULL);
-            if (key == NULL) {
-                for (i=i-1 ; i>=0 ; i--) {
-                    kvpair = saved_ob_item[i];
-                    value = sortwrapper_getvalue(kvpair);
-                    saved_ob_item[i] = value;
-                    Py_DECREF(kvpair);
-                }
-                goto dsu_fail;
-            }
-            kvpair = build_sortwrapper(key, value);
-            if (kvpair == NULL)
-                goto dsu_fail;
-            saved_ob_item[i] = kvpair;
-        }
-    }
-
-    /* Reverse sort stability achieved by initially reversing the list,
-    applying a stable forward sort, then reversing the final result. */
-    if (reverse && saved_ob_size > 1)
-        reverse_slice(saved_ob_item, saved_ob_item + saved_ob_size);
-
-    merge_init(&ms, compare);
-
-    nremaining = saved_ob_size;
-    if (nremaining < 2)
-        goto succeed;
-
-    /* March over the array once, left to right, finding natural runs,
-     * and extending short natural runs to minrun elements.
-     */
-    lo = saved_ob_item;
-    hi = lo + nremaining;
-    minrun = merge_compute_minrun(nremaining);
-    do {
-        int descending;
-        Py_ssize_t n;
-
-        /* Identify next run. */
-        n = count_run(lo, hi, compare, &descending);
-        if (n < 0)
-            goto fail;
-        if (descending)
-            reverse_slice(lo, lo + n);
-        /* If short, extend to min(minrun, nremaining). */
-        if (n < minrun) {
-            const Py_ssize_t force = nremaining <= minrun ?
-                              nremaining : minrun;
-            if (binarysort(lo, lo + force, lo + n, compare) < 0)
-                goto fail;
-            n = force;
-        }
-        /* Push run onto pending-runs stack, and maybe merge. */
-        assert(ms.n < MAX_MERGE_PENDING);
-        ms.pending[ms.n].base = lo;
-        ms.pending[ms.n].len = n;
-        ++ms.n;
-        if (merge_collapse(&ms) < 0)
-            goto fail;
-        /* Advance to find next run. */
-        lo += n;
-        nremaining -= n;
-    } while (nremaining);
-    assert(lo == hi);
-
-    if (merge_force_collapse(&ms) < 0)
-        goto fail;
-    assert(ms.n == 1);
-    assert(ms.pending[0].base == saved_ob_item);
-    assert(ms.pending[0].len == saved_ob_size);
-
-succeed:
-    result = Py_None;
-fail:
-    if (keyfunc != NULL) {
-        for (i=0 ; i < saved_ob_size ; i++) {
-            kvpair = saved_ob_item[i];
-            value = sortwrapper_getvalue(kvpair);
-            saved_ob_item[i] = value;
-            Py_DECREF(kvpair);
-        }
-    }
-
-    if (self->allocated != -1 && result != NULL) {
-        /* The user mucked with the list during the sort,
-         * and we don't already have another error to report.
-         */
-        PyErr_SetString(PyExc_ValueError, "list modified during sort");
-        result = NULL;
-    }
-
-    if (reverse && saved_ob_size > 1)
-        reverse_slice(saved_ob_item, saved_ob_item + saved_ob_size);
-
-    merge_freemem(&ms);
-
-dsu_fail:
-    final_ob_item = self->ob_item;
-    i = Py_SIZE(self);
-    Py_SIZE(self) = saved_ob_size;
-    self->ob_item = saved_ob_item;
-    self->allocated = saved_allocated;
-    if (final_ob_item != NULL) {
-        /* we cannot use list_clear() for this because it does not
-           guarantee that the list is really empty when it returns */
-        while (--i >= 0) {
-            Py_XDECREF(final_ob_item[i]);
-        }
-        PyMem_FREE(final_ob_item);
-    }
-    Py_XDECREF(compare);
-    Py_XINCREF(result);
-    return result;
-}
-#undef IFLT
-#undef ISLT
-
-int
-PyList_Sort(PyObject *v)
-{
-    if (v == NULL || !PyList_Check(v)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    v = listsort((PyListObject *)v, (PyObject *)NULL, (PyObject *)NULL);
-    if (v == NULL)
-        return -1;
-    Py_DECREF(v);
-    return 0;
-}
-
-static PyObject *
-listreverse(PyListObject *self)
-{
-    if (Py_SIZE(self) > 1)
-        reverse_slice(self->ob_item, self->ob_item + Py_SIZE(self));
-    Py_RETURN_NONE;
-}
-
-int
-PyList_Reverse(PyObject *v)
-{
-    PyListObject *self = (PyListObject *)v;
-
-    if (v == NULL || !PyList_Check(v)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    if (Py_SIZE(self) > 1)
-        reverse_slice(self->ob_item, self->ob_item + Py_SIZE(self));
-    return 0;
-}
-
-PyObject *
-PyList_AsTuple(PyObject *v)
-{
-    PyObject *w;
-    PyObject **p, **q;
-    Py_ssize_t n;
-    if (v == NULL || !PyList_Check(v)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    n = Py_SIZE(v);
-    w = PyTuple_New(n);
-    if (w == NULL)
-        return NULL;
-    p = ((PyTupleObject *)w)->ob_item;
-    q = ((PyListObject *)v)->ob_item;
-    while (--n >= 0) {
-        Py_INCREF(*q);
-        *p = *q;
-        p++;
-        q++;
-    }
-    return w;
-}
-
-static PyObject *
-listindex(PyListObject *self, PyObject *args)
-{
-    Py_ssize_t i, start=0, stop=Py_SIZE(self);
-    PyObject *v, *format_tuple, *err_string;
-    static PyObject *err_format = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|O&O&:index", &v,
-                                _PyEval_SliceIndex, &start,
-                                _PyEval_SliceIndex, &stop))
-        return NULL;
-    if (start < 0) {
-        start += Py_SIZE(self);
-        if (start < 0)
-            start = 0;
-    }
-    if (stop < 0) {
-        stop += Py_SIZE(self);
-        if (stop < 0)
-            stop = 0;
-    }
-    for (i = start; i < stop && i < Py_SIZE(self); i++) {
-        int cmp = PyObject_RichCompareBool(self->ob_item[i], v, Py_EQ);
-        if (cmp > 0)
-            return PyInt_FromSsize_t(i);
-        else if (cmp < 0)
-            return NULL;
-    }
-    if (err_format == NULL) {
-        err_format = PyString_FromString("%r is not in list");
-        if (err_format == NULL)
-            return NULL;
-    }
-    format_tuple = PyTuple_Pack(1, v);
-    if (format_tuple == NULL)
-        return NULL;
-    err_string = PyString_Format(err_format, format_tuple);
-    Py_DECREF(format_tuple);
-    if (err_string == NULL)
-        return NULL;
-    PyErr_SetObject(PyExc_ValueError, err_string);
-    Py_DECREF(err_string);
-    return NULL;
-}
-
-static PyObject *
-listcount(PyListObject *self, PyObject *v)
-{
-    Py_ssize_t count = 0;
-    Py_ssize_t i;
-
-    for (i = 0; i < Py_SIZE(self); i++) {
-        int cmp = PyObject_RichCompareBool(self->ob_item[i], v, Py_EQ);
-        if (cmp > 0)
-            count++;
-        else if (cmp < 0)
-            return NULL;
-    }
-    return PyInt_FromSsize_t(count);
-}
-
-static PyObject *
-listremove(PyListObject *self, PyObject *v)
-{
-    Py_ssize_t i;
-
-    for (i = 0; i < Py_SIZE(self); i++) {
-        int cmp = PyObject_RichCompareBool(self->ob_item[i], v, Py_EQ);
-        if (cmp > 0) {
-            if (list_ass_slice(self, i, i+1,
-                               (PyObject *)NULL) == 0)
-                Py_RETURN_NONE;
-            return NULL;
-        }
-        else if (cmp < 0)
-            return NULL;
-    }
-    PyErr_SetString(PyExc_ValueError, "list.remove(x): x not in list");
-    return NULL;
-}
-
-static int
-list_traverse(PyListObject *o, visitproc visit, void *arg)
-{
-    Py_ssize_t i;
-
-    for (i = Py_SIZE(o); --i >= 0; )
-        Py_VISIT(o->ob_item[i]);
-    return 0;
-}
-
-static PyObject *
-list_richcompare(PyObject *v, PyObject *w, int op)
-{
-    PyListObject *vl, *wl;
-    Py_ssize_t i;
-
-    if (!PyList_Check(v) || !PyList_Check(w)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-
-    vl = (PyListObject *)v;
-    wl = (PyListObject *)w;
-
-    if (Py_SIZE(vl) != Py_SIZE(wl) && (op == Py_EQ || op == Py_NE)) {
-        /* Shortcut: if the lengths differ, the lists differ */
-        PyObject *res;
-        if (op == Py_EQ)
-            res = Py_False;
-        else
-            res = Py_True;
-        Py_INCREF(res);
-        return res;
-    }
-
-    /* Search for the first index where items are different */
-    for (i = 0; i < Py_SIZE(vl) && i < Py_SIZE(wl); i++) {
-        int k = PyObject_RichCompareBool(vl->ob_item[i],
-                                         wl->ob_item[i], Py_EQ);
-        if (k < 0)
-            return NULL;
-        if (!k)
-            break;
-    }
-
-    if (i >= Py_SIZE(vl) || i >= Py_SIZE(wl)) {
-        /* No more items to compare -- compare sizes */
-        Py_ssize_t vs = Py_SIZE(vl);
-        Py_ssize_t ws = Py_SIZE(wl);
-        int cmp;
-        PyObject *res;
-        switch (op) {
-        case Py_LT: cmp = vs <  ws; break;
-        case Py_LE: cmp = vs <= ws; break;
-        case Py_EQ: cmp = vs == ws; break;
-        case Py_NE: cmp = vs != ws; break;
-        case Py_GT: cmp = vs >  ws; break;
-        case Py_GE: cmp = vs >= ws; break;
-        default: return NULL; /* cannot happen */
-        }
-        if (cmp)
-            res = Py_True;
-        else
-            res = Py_False;
-        Py_INCREF(res);
-        return res;
-    }
-
-    /* We have an item that differs -- shortcuts for EQ/NE */
-    if (op == Py_EQ) {
-        Py_INCREF(Py_False);
-        return Py_False;
-    }
-    if (op == Py_NE) {
-        Py_INCREF(Py_True);
-        return Py_True;
-    }
-
-    /* Compare the final item again using the proper operator */
-    return PyObject_RichCompare(vl->ob_item[i], wl->ob_item[i], op);
-}
-
-static int
-list_init(PyListObject *self, PyObject *args, PyObject *kw)
-{
-    PyObject *arg = NULL;
-    static char *kwlist[] = {"sequence", 0};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kw, "|O:list", kwlist, &arg))
-        return -1;
-
-    /* Verify list invariants established by PyType_GenericAlloc() */
-    assert(0 <= Py_SIZE(self));
-    assert(Py_SIZE(self) <= self->allocated || self->allocated == -1);
-    assert(self->ob_item != NULL ||
-           self->allocated == 0 || self->allocated == -1);
-
-    /* Empty previous contents */
-    if (self->ob_item != NULL) {
-        (void)list_clear(self);
-    }
-    if (arg != NULL) {
-        PyObject *rv = listextend(self, arg);
-        if (rv == NULL)
-            return -1;
-        Py_DECREF(rv);
-    }
-    return 0;
-}
-
-static PyObject *
-list_sizeof(PyListObject *self)
-{
-    Py_ssize_t res;
-
-    res = sizeof(PyListObject) + self->allocated * sizeof(void*);
-    return PyInt_FromSsize_t(res);
-}
-
-static PyObject *list_iter(PyObject *seq);
-static PyObject *list_reversed(PyListObject* seq, PyObject* unused);
-
-PyDoc_STRVAR(getitem_doc,
-"x.__getitem__(y) <==> x[y]");
-PyDoc_STRVAR(reversed_doc,
-"L.__reversed__() -- return a reverse iterator over the list");
-PyDoc_STRVAR(sizeof_doc,
-"L.__sizeof__() -- size of L in memory, in bytes");
-PyDoc_STRVAR(append_doc,
-"L.append(object) -- append object to end");
-PyDoc_STRVAR(extend_doc,
-"L.extend(iterable) -- extend list by appending elements from the iterable");
-PyDoc_STRVAR(insert_doc,
-"L.insert(index, object) -- insert object before index");
-PyDoc_STRVAR(pop_doc,
-"L.pop([index]) -> item -- remove and return item at index (default last).\n"
-"Raises IndexError if list is empty or index is out of range.");
-PyDoc_STRVAR(remove_doc,
-"L.remove(value) -- remove first occurrence of value.\n"
-"Raises ValueError if the value is not present.");
-PyDoc_STRVAR(index_doc,
-"L.index(value, [start, [stop]]) -> integer -- return first index of value.\n"
-"Raises ValueError if the value is not present.");
-PyDoc_STRVAR(count_doc,
-"L.count(value) -> integer -- return number of occurrences of value");
-PyDoc_STRVAR(reverse_doc,
-"L.reverse() -- reverse *IN PLACE*");
-PyDoc_STRVAR(sort_doc,
-"L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;\n\
-cmp(x, y) -> -1, 0, 1");
-
-static PyObject *list_subscript(PyListObject*, PyObject*);
-
-static PyMethodDef list_methods[] = {
-    {"__getitem__", (PyCFunction)list_subscript, METH_O|METH_COEXIST, getitem_doc},
-    {"__reversed__",(PyCFunction)list_reversed, METH_NOARGS, reversed_doc},
-    {"__sizeof__",  (PyCFunction)list_sizeof, METH_NOARGS, sizeof_doc},
-    {"append",          (PyCFunction)listappend,  METH_O, append_doc},
-    {"insert",          (PyCFunction)listinsert,  METH_VARARGS, insert_doc},
-    {"extend",      (PyCFunction)listextend,  METH_O, extend_doc},
-    {"pop",             (PyCFunction)listpop,     METH_VARARGS, pop_doc},
-    {"remove",          (PyCFunction)listremove,  METH_O, remove_doc},
-    {"index",           (PyCFunction)listindex,   METH_VARARGS, index_doc},
-    {"count",           (PyCFunction)listcount,   METH_O, count_doc},
-    {"reverse",         (PyCFunction)listreverse, METH_NOARGS, reverse_doc},
-    {"sort",            (PyCFunction)listsort,    METH_VARARGS | METH_KEYWORDS, sort_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PySequenceMethods list_as_sequence = {
-    (lenfunc)list_length,                       /* sq_length */
-    (binaryfunc)list_concat,                    /* sq_concat */
-    (ssizeargfunc)list_repeat,                  /* sq_repeat */
-    (ssizeargfunc)list_item,                    /* sq_item */
-    (ssizessizeargfunc)list_slice,              /* sq_slice */
-    (ssizeobjargproc)list_ass_item,             /* sq_ass_item */
-    (ssizessizeobjargproc)list_ass_slice,       /* sq_ass_slice */
-    (objobjproc)list_contains,                  /* sq_contains */
-    (binaryfunc)list_inplace_concat,            /* sq_inplace_concat */
-    (ssizeargfunc)list_inplace_repeat,          /* sq_inplace_repeat */
-};
-
-PyDoc_STRVAR(list_doc,
-"list() -> new empty list\n"
-"list(iterable) -> new list initialized from iterable's items");
-
-
-static PyObject *
-list_subscript(PyListObject* self, PyObject* item)
-{
-    if (PyIndex_Check(item)) {
-        Py_ssize_t i;
-        i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-        if (i == -1 && PyErr_Occurred())
-            return NULL;
-        if (i < 0)
-            i += PyList_GET_SIZE(self);
-        return list_item(self, i);
-    }
-    else if (PySlice_Check(item)) {
-        Py_ssize_t start, stop, step, slicelength, cur, i;
-        PyObject* result;
-        PyObject* it;
-        PyObject **src, **dest;
-
-        if (PySlice_GetIndicesEx((PySliceObject*)item, Py_SIZE(self),
-                         &start, &stop, &step, &slicelength) < 0) {
-            return NULL;
-        }
-
-        if (slicelength <= 0) {
-            return PyList_New(0);
-        }
-        else if (step == 1) {
-            return list_slice(self, start, stop);
-        }
-        else {
-            result = PyList_New(slicelength);
-            if (!result) return NULL;
-
-            src = self->ob_item;
-            dest = ((PyListObject *)result)->ob_item;
-            for (cur = start, i = 0; i < slicelength;
-                 cur += step, i++) {
-                it = src[cur];
-                Py_INCREF(it);
-                dest[i] = it;
-            }
-
-            return result;
-        }
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-                     "list indices must be integers, not %.200s",
-                     item->ob_type->tp_name);
-        return NULL;
-    }
-}
-
-static int
-list_ass_subscript(PyListObject* self, PyObject* item, PyObject* value)
-{
-    if (PyIndex_Check(item)) {
-        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-        if (i == -1 && PyErr_Occurred())
-            return -1;
-        if (i < 0)
-            i += PyList_GET_SIZE(self);
-        return list_ass_item(self, i, value);
-    }
-    else if (PySlice_Check(item)) {
-        Py_ssize_t start, stop, step, slicelength;
-
-        if (PySlice_GetIndicesEx((PySliceObject*)item, Py_SIZE(self),
-                         &start, &stop, &step, &slicelength) < 0) {
-            return -1;
-        }
-
-        if (step == 1)
-            return list_ass_slice(self, start, stop, value);
-
-        /* Make sure s[5:2] = [..] inserts at the right place:
-           before 5, not before 2. */
-        if ((step < 0 && start < stop) ||
-            (step > 0 && start > stop))
-            stop = start;
-
-        if (value == NULL) {
-            /* delete slice */
-            PyObject **garbage;
-            size_t cur;
-            Py_ssize_t i;
-
-            if (slicelength <= 0)
-                return 0;
-
-            if (step < 0) {
-                stop = start + 1;
-                start = stop + step*(slicelength - 1) - 1;
-                step = -step;
-            }
-
-            assert((size_t)slicelength <=
-                   PY_SIZE_MAX / sizeof(PyObject*));
-
-            garbage = (PyObject**)
-                PyMem_MALLOC(slicelength*sizeof(PyObject*));
-            if (!garbage) {
-                PyErr_NoMemory();
-                return -1;
-            }
-
-            /* drawing pictures might help understand these for
-               loops. Basically, we memmove the parts of the
-               list that are *not* part of the slice: step-1
-               items for each item that is part of the slice,
-               and then tail end of the list that was not
-               covered by the slice */
-            for (cur = start, i = 0;
-                 cur < (size_t)stop;
-                 cur += step, i++) {
-                Py_ssize_t lim = step - 1;
-
-                garbage[i] = PyList_GET_ITEM(self, cur);
-
-                if (cur + step >= (size_t)Py_SIZE(self)) {
-                    lim = Py_SIZE(self) - cur - 1;
-                }
-
-                memmove(self->ob_item + cur - i,
-                    self->ob_item + cur + 1,
-                    lim * sizeof(PyObject *));
-            }
-            cur = start + slicelength*step;
-            if (cur < (size_t)Py_SIZE(self)) {
-                memmove(self->ob_item + cur - slicelength,
-                    self->ob_item + cur,
-                    (Py_SIZE(self) - cur) *
-                     sizeof(PyObject *));
-            }
-
-            Py_SIZE(self) -= slicelength;
-            list_resize(self, Py_SIZE(self));
-
-            for (i = 0; i < slicelength; i++) {
-                Py_DECREF(garbage[i]);
-            }
-            PyMem_FREE(garbage);
-
-            return 0;
-        }
-        else {
-            /* assign slice */
-            PyObject *ins, *seq;
-            PyObject **garbage, **seqitems, **selfitems;
-            Py_ssize_t cur, i;
-
-            /* protect against a[::-1] = a */
-            if (self == (PyListObject*)value) {
-                seq = list_slice((PyListObject*)value, 0,
-                                   PyList_GET_SIZE(value));
-            }
-            else {
-                seq = PySequence_Fast(value,
-                                      "must assign iterable "
-                                      "to extended slice");
-            }
-            if (!seq)
-                return -1;
-
-            if (PySequence_Fast_GET_SIZE(seq) != slicelength) {
-                PyErr_Format(PyExc_ValueError,
-                    "attempt to assign sequence of "
-                    "size %zd to extended slice of "
-                    "size %zd",
-                         PySequence_Fast_GET_SIZE(seq),
-                         slicelength);
-                Py_DECREF(seq);
-                return -1;
-            }
-
-            if (!slicelength) {
-                Py_DECREF(seq);
-                return 0;
-            }
-
-            garbage = (PyObject**)
-                PyMem_MALLOC(slicelength*sizeof(PyObject*));
-            if (!garbage) {
-                Py_DECREF(seq);
-                PyErr_NoMemory();
-                return -1;
-            }
-
-            selfitems = self->ob_item;
-            seqitems = PySequence_Fast_ITEMS(seq);
-            for (cur = start, i = 0; i < slicelength;
-                 cur += step, i++) {
-                garbage[i] = selfitems[cur];
-                ins = seqitems[i];
-                Py_INCREF(ins);
-                selfitems[cur] = ins;
-            }
-
-            for (i = 0; i < slicelength; i++) {
-                Py_DECREF(garbage[i]);
-            }
-
-            PyMem_FREE(garbage);
-            Py_DECREF(seq);
-
-            return 0;
-        }
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-                     "list indices must be integers, not %.200s",
-                     item->ob_type->tp_name);
-        return -1;
-    }
-}
-
-static PyMappingMethods list_as_mapping = {
-    (lenfunc)list_length,
-    (binaryfunc)list_subscript,
-    (objobjargproc)list_ass_subscript
-};
-
-PyTypeObject PyList_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "list",
-    sizeof(PyListObject),
-    0,
-    (destructor)list_dealloc,                   /* tp_dealloc */
-    (printfunc)list_print,                      /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)list_repr,                        /* tp_repr */
-    0,                                          /* tp_as_number */
-    &list_as_sequence,                          /* tp_as_sequence */
-    &list_as_mapping,                           /* tp_as_mapping */
-    (hashfunc)PyObject_HashNotImplemented,      /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE | Py_TPFLAGS_LIST_SUBCLASS,         /* tp_flags */
-    list_doc,                                   /* tp_doc */
-    (traverseproc)list_traverse,                /* tp_traverse */
-    (inquiry)list_clear,                        /* tp_clear */
-    list_richcompare,                           /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    list_iter,                                  /* tp_iter */
-    0,                                          /* tp_iternext */
-    list_methods,                               /* tp_methods */
-    0,                                          /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    (initproc)list_init,                        /* tp_init */
-    PyType_GenericAlloc,                        /* tp_alloc */
-    PyType_GenericNew,                          /* tp_new */
-    PyObject_GC_Del,                            /* tp_free */
-};
-
-
-/*********************** List Iterator **************************/
-
-typedef struct {
-    PyObject_HEAD
-    long it_index;
-    PyListObject *it_seq; /* Set to NULL when iterator is exhausted */
-} listiterobject;
-
-static PyObject *list_iter(PyObject *);
-static void listiter_dealloc(listiterobject *);
-static int listiter_traverse(listiterobject *, visitproc, void *);
-static PyObject *listiter_next(listiterobject *);
-static PyObject *listiter_len(listiterobject *);
-
-PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
-
-static PyMethodDef listiter_methods[] = {
-    {"__length_hint__", (PyCFunction)listiter_len, METH_NOARGS, length_hint_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyTypeObject PyListIter_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "listiterator",                             /* tp_name */
-    sizeof(listiterobject),                     /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)listiter_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)listiter_traverse,            /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    PyObject_SelfIter,                          /* tp_iter */
-    (iternextfunc)listiter_next,                /* tp_iternext */
-    listiter_methods,                           /* tp_methods */
-    0,                                          /* tp_members */
-};
-
-
-static PyObject *
-list_iter(PyObject *seq)
-{
-    listiterobject *it;
-
-    if (!PyList_Check(seq)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    it = PyObject_GC_New(listiterobject, &PyListIter_Type);
-    if (it == NULL)
-        return NULL;
-    it->it_index = 0;
-    Py_INCREF(seq);
-    it->it_seq = (PyListObject *)seq;
-    _PyObject_GC_TRACK(it);
-    return (PyObject *)it;
-}
-
-static void
-listiter_dealloc(listiterobject *it)
-{
-    _PyObject_GC_UNTRACK(it);
-    Py_XDECREF(it->it_seq);
-    PyObject_GC_Del(it);
-}
-
-static int
-listiter_traverse(listiterobject *it, visitproc visit, void *arg)
-{
-    Py_VISIT(it->it_seq);
-    return 0;
-}
-
-static PyObject *
-listiter_next(listiterobject *it)
-{
-    PyListObject *seq;
-    PyObject *item;
-
-    assert(it != NULL);
-    seq = it->it_seq;
-    if (seq == NULL)
-        return NULL;
-    assert(PyList_Check(seq));
-
-    if (it->it_index < PyList_GET_SIZE(seq)) {
-        item = PyList_GET_ITEM(seq, it->it_index);
-        ++it->it_index;
-        Py_INCREF(item);
-        return item;
-    }
-
-    Py_DECREF(seq);
-    it->it_seq = NULL;
-    return NULL;
-}
-
-static PyObject *
-listiter_len(listiterobject *it)
-{
-    Py_ssize_t len;
-    if (it->it_seq) {
-        len = PyList_GET_SIZE(it->it_seq) - it->it_index;
-        if (len >= 0)
-            return PyInt_FromSsize_t(len);
-    }
-    return PyInt_FromLong(0);
-}
-/*********************** List Reverse Iterator **************************/
-
-typedef struct {
-    PyObject_HEAD
-    Py_ssize_t it_index;
-    PyListObject *it_seq; /* Set to NULL when iterator is exhausted */
-} listreviterobject;
-
-static PyObject *list_reversed(PyListObject *, PyObject *);
-static void listreviter_dealloc(listreviterobject *);
-static int listreviter_traverse(listreviterobject *, visitproc, void *);
-static PyObject *listreviter_next(listreviterobject *);
-static PyObject *listreviter_len(listreviterobject *);
-
-static PyMethodDef listreviter_methods[] = {
-    {"__length_hint__", (PyCFunction)listreviter_len, METH_NOARGS, length_hint_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyTypeObject PyListRevIter_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "listreverseiterator",                      /* tp_name */
-    sizeof(listreviterobject),                  /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)listreviter_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)listreviter_traverse,         /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    PyObject_SelfIter,                          /* tp_iter */
-    (iternextfunc)listreviter_next,             /* tp_iternext */
-    listreviter_methods,                /* tp_methods */
-    0,
-};
-
-static PyObject *
-list_reversed(PyListObject *seq, PyObject *unused)
-{
-    listreviterobject *it;
-
-    it = PyObject_GC_New(listreviterobject, &PyListRevIter_Type);
-    if (it == NULL)
-        return NULL;
-    assert(PyList_Check(seq));
-    it->it_index = PyList_GET_SIZE(seq) - 1;
-    Py_INCREF(seq);
-    it->it_seq = seq;
-    PyObject_GC_Track(it);
-    return (PyObject *)it;
-}
-
-static void
-listreviter_dealloc(listreviterobject *it)
-{
-    PyObject_GC_UnTrack(it);
-    Py_XDECREF(it->it_seq);
-    PyObject_GC_Del(it);
-}
-
-static int
-listreviter_traverse(listreviterobject *it, visitproc visit, void *arg)
-{
-    Py_VISIT(it->it_seq);
-    return 0;
-}
-
-static PyObject *
-listreviter_next(listreviterobject *it)
-{
-    PyObject *item;
-    Py_ssize_t index = it->it_index;
-    PyListObject *seq = it->it_seq;
-
-    if (index>=0 && index < PyList_GET_SIZE(seq)) {
-        item = PyList_GET_ITEM(seq, index);
-        it->it_index--;
-        Py_INCREF(item);
-        return item;
-    }
-    it->it_index = -1;
-    if (seq != NULL) {
-        it->it_seq = NULL;
-        Py_DECREF(seq);
-    }
-    return NULL;
-}
-
-static PyObject *
-listreviter_len(listreviterobject *it)
-{
-    Py_ssize_t len = it->it_index + 1;
-    if (it->it_seq == NULL || PyList_GET_SIZE(it->it_seq) < len)
-        len = 0;
-    return PyLong_FromSsize_t(len);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/listsort.txt b/AppPkg/Applications/Python/Python-2.7.2/Objects/listsort.txt
deleted file mode 100644
index 5fae0dc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/listsort.txt
+++ /dev/null
@@ -1,677 +0,0 @@
-Intro
------
-This describes an adaptive, stable, natural mergesort, modestly called
-timsort (hey, I earned it <wink>).  It has supernatural performance on many
-kinds of partially ordered arrays (less than lg(N!) comparisons needed, and
-as few as N-1), yet as fast as Python's previous highly tuned samplesort
-hybrid on random arrays.
-
-In a nutshell, the main routine marches over the array once, left to right,
-alternately identifying the next run, then merging it into the previous
-runs "intelligently".  Everything else is complication for speed, and some
-hard-won measure of memory efficiency.
-
-
-Comparison with Python's Samplesort Hybrid
-------------------------------------------
-+ timsort can require a temp array containing as many as N//2 pointers,
-  which means as many as 2*N extra bytes on 32-bit boxes.  It can be
-  expected to require a temp array this large when sorting random data; on
-  data with significant structure, it may get away without using any extra
-  heap memory.  This appears to be the strongest argument against it, but
-  compared to the size of an object, 2 temp bytes worst-case (also expected-
-  case for random data) doesn't scare me much.
-
-  It turns out that Perl is moving to a stable mergesort, and the code for
-  that appears always to require a temp array with room for at least N
-  pointers. (Note that I wouldn't want to do that even if space weren't an
-  issue; I believe its efforts at memory frugality also save timsort
-  significant pointer-copying costs, and allow it to have a smaller working
-  set.)
-
-+ Across about four hours of generating random arrays, and sorting them
-  under both methods, samplesort required about 1.5% more comparisons
-  (the program is at the end of this file).
-
-+ In real life, this may be faster or slower on random arrays than
-  samplesort was, depending on platform quirks.  Since it does fewer
-  comparisons on average, it can be expected to do better the more
-  expensive a comparison function is.  OTOH, it does more data movement
-  (pointer copying) than samplesort, and that may negate its small
-  comparison advantage (depending on platform quirks) unless comparison
-  is very expensive.
-
-+ On arrays with many kinds of pre-existing order, this blows samplesort out
-  of the water.  It's significantly faster than samplesort even on some
-  cases samplesort was special-casing the snot out of.  I believe that lists
-  very often do have exploitable partial order in real life, and this is the
-  strongest argument in favor of timsort (indeed, samplesort's special cases
-  for extreme partial order are appreciated by real users, and timsort goes
-  much deeper than those, in particular naturally covering every case where
-  someone has suggested "and it would be cool if list.sort() had a special
-  case for this too ... and for that ...").
-
-+ Here are exact comparison counts across all the tests in sortperf.py,
-  when run with arguments "15 20 1".
-
-  Column Key:
-      *sort: random data
-      \sort: descending data
-      /sort: ascending data
-      3sort: ascending, then 3 random exchanges
-      +sort: ascending, then 10 random at the end
-      ~sort: many duplicates
-      =sort: all equal
-      !sort: worst case scenario
-
-  First the trivial cases, trivial for samplesort because it special-cased
-  them, and trivial for timsort because it naturally works on runs.  Within
-  an "n" block, the first line gives the # of compares done by samplesort,
-  the second line by timsort, and the third line is the percentage by
-  which the samplesort count exceeds the timsort count:
-
-      n   \sort   /sort   =sort
--------  ------  ------  ------
-  32768   32768   32767   32767  samplesort
-          32767   32767   32767  timsort
-          0.00%   0.00%   0.00%  (samplesort - timsort) / timsort
-
-  65536   65536   65535   65535
-          65535   65535   65535
-          0.00%   0.00%   0.00%
-
- 131072  131072  131071  131071
-         131071  131071  131071
-          0.00%   0.00%   0.00%
-
- 262144  262144  262143  262143
-         262143  262143  262143
-          0.00%   0.00%   0.00%
-
- 524288  524288  524287  524287
-         524287  524287  524287
-          0.00%   0.00%   0.00%
-
-1048576 1048576 1048575 1048575
-        1048575 1048575 1048575
-          0.00%   0.00%   0.00%
-
-  The algorithms are effectively identical in these cases, except that
-  timsort does one less compare in \sort.
-
-  Now for the more interesting cases.  lg(n!) is the information-theoretic
-  limit for the best any comparison-based sorting algorithm can do on
-  average (across all permutations).  When a method gets significantly
-  below that, it's either astronomically lucky, or is finding exploitable
-  structure in the data.
-
-      n   lg(n!)    *sort    3sort     +sort   %sort    ~sort     !sort
--------  -------   ------   -------  -------  ------  -------  --------
-  32768   444255   453096   453614    32908   452871   130491    469141 old
-                   448885    33016    33007    50426   182083     65534 new
-                    0.94% 1273.92%   -0.30%  798.09%  -28.33%   615.87% %ch from new
-
-  65536   954037   972699   981940    65686   973104   260029   1004607
-                   962991    65821    65808   101667   364341    131070
-                    1.01% 1391.83%   -0.19%  857.15%  -28.63%   666.47%
-
- 131072  2039137  2101881  2091491   131232  2092894   554790   2161379
-                  2057533   131410   131361   206193   728871    262142
-                    2.16% 1491.58%   -0.10%  915.02%  -23.88%   724.51%
-
- 262144  4340409  4464460  4403233   262314  4445884  1107842   4584560
-                  4377402   262437   262459   416347  1457945    524286
-                    1.99% 1577.82%   -0.06%  967.83%  -24.01%   774.44%
-
- 524288  9205096  9453356  9408463   524468  9441930  2218577   9692015
-                  9278734   524580   524633   837947  2916107   1048574
-                   1.88%  1693.52%   -0.03% 1026.79%  -23.92%   824.30%
-
-1048576 19458756 19950272 19838588  1048766 19912134  4430649  20434212
-                 19606028  1048958  1048941  1694896  5832445   2097150
-                    1.76% 1791.27%   -0.02% 1074.83%  -24.03%   874.38%
-
-  Discussion of cases:
-
-  *sort:  There's no structure in random data to exploit, so the theoretical
-  limit is lg(n!).  Both methods get close to that, and timsort is hugging
-  it (indeed, in a *marginal* sense, it's a spectacular improvement --
-  there's only about 1% left before hitting the wall, and timsort knows
-  darned well it's doing compares that won't pay on random data -- but so
-  does the samplesort hybrid).  For contrast, Hoare's original random-pivot
-  quicksort does about 39% more compares than the limit, and the median-of-3
-  variant about 19% more.
-
-  3sort, %sort, and !sort:  No contest; there's structure in this data, but
-  not of the specific kinds samplesort special-cases.  Note that structure
-  in !sort wasn't put there on purpose -- it was crafted as a worst case for
-  a previous quicksort implementation.  That timsort nails it came as a
-  surprise to me (although it's obvious in retrospect).
-
-  +sort:  samplesort special-cases this data, and does a few less compares
-  than timsort.  However, timsort runs this case significantly faster on all
-  boxes we have timings for, because timsort is in the business of merging
-  runs efficiently, while samplesort does much more data movement in this
-  (for it) special case.
-
-  ~sort:  samplesort's special cases for large masses of equal elements are
-  extremely effective on ~sort's specific data pattern, and timsort just
-  isn't going to get close to that, despite that it's clearly getting a
-  great deal of benefit out of the duplicates (the # of compares is much less
-  than lg(n!)).  ~sort has a perfectly uniform distribution of just 4
-  distinct values, and as the distribution gets more skewed, samplesort's
-  equal-element gimmicks become less effective, while timsort's adaptive
-  strategies find more to exploit; in a database supplied by Kevin Altis, a
-  sort on its highly skewed "on which stock exchange does this company's
-  stock trade?" field ran over twice as fast under timsort.
-
-  However, despite that timsort does many more comparisons on ~sort, and
-  that on several platforms ~sort runs highly significantly slower under
-  timsort, on other platforms ~sort runs highly significantly faster under
-  timsort.  No other kind of data has shown this wild x-platform behavior,
-  and we don't have an explanation for it.  The only thing I can think of
-  that could transform what "should be" highly significant slowdowns into
-  highly significant speedups on some boxes are catastrophic cache effects
-  in samplesort.
-
-  But timsort "should be" slower than samplesort on ~sort, so it's hard
-  to count that it isn't on some boxes as a strike against it <wink>.
-
-+ Here's the highwater mark for the number of heap-based temp slots (4
-  bytes each on this box) needed by each test, again with arguments
-  "15 20 1":
-
-   2**i  *sort \sort /sort  3sort  +sort  %sort  ~sort  =sort  !sort
-  32768  16384     0     0   6256      0  10821  12288      0  16383
-  65536  32766     0     0  21652      0  31276  24576      0  32767
- 131072  65534     0     0  17258      0  58112  49152      0  65535
- 262144 131072     0     0  35660      0 123561  98304      0 131071
- 524288 262142     0     0  31302      0 212057 196608      0 262143
-1048576 524286     0     0 312438      0 484942 393216      0 524287
-
-  Discussion:  The tests that end up doing (close to) perfectly balanced
-  merges (*sort, !sort) need all N//2 temp slots (or almost all).  ~sort
-  also ends up doing balanced merges, but systematically benefits a lot from
-  the preliminary pre-merge searches described under "Merge Memory" later.
-  %sort approaches having a balanced merge at the end because the random
-  selection of elements to replace is expected to produce an out-of-order
-  element near the midpoint.  \sort, /sort, =sort are the trivial one-run
-  cases, needing no merging at all.  +sort ends up having one very long run
-  and one very short, and so gets all the temp space it needs from the small
-  temparray member of the MergeState struct (note that the same would be
-  true if the new random elements were prefixed to the sorted list instead,
-  but not if they appeared "in the middle").  3sort approaches N//3 temp
-  slots twice, but the run lengths that remain after 3 random exchanges
-  clearly has very high variance.
-
-
-A detailed description of timsort follows.
-
-Runs
-----
-count_run() returns the # of elements in the next run.  A run is either
-"ascending", which means non-decreasing:
-
-    a0 <= a1 <= a2 <= ...
-
-or "descending", which means strictly decreasing:
-
-    a0 > a1 > a2 > ...
-
-Note that a run is always at least 2 long, unless we start at the array's
-last element.
-
-The definition of descending is strict, because the main routine reverses
-a descending run in-place, transforming a descending run into an ascending
-run.  Reversal is done via the obvious fast "swap elements starting at each
-end, and converge at the middle" method, and that can violate stability if
-the slice contains any equal elements.  Using a strict definition of
-descending ensures that a descending run contains distinct elements.
-
-If an array is random, it's very unlikely we'll see long runs.  If a natural
-run contains less than minrun elements (see next section), the main loop
-artificially boosts it to minrun elements, via a stable binary insertion sort
-applied to the right number of array elements following the short natural
-run.  In a random array, *all* runs are likely to be minrun long as a
-result.  This has two primary good effects:
-
-1. Random data strongly tends then toward perfectly balanced (both runs have
-   the same length) merges, which is the most efficient way to proceed when
-   data is random.
-
-2. Because runs are never very short, the rest of the code doesn't make
-   heroic efforts to shave a few cycles off per-merge overheads.  For
-   example, reasonable use of function calls is made, rather than trying to
-   inline everything.  Since there are no more than N/minrun runs to begin
-   with, a few "extra" function calls per merge is barely measurable.
-
-
-Computing minrun
-----------------
-If N < 64, minrun is N.  IOW, binary insertion sort is used for the whole
-array then; it's hard to beat that given the overheads of trying something
-fancier.
-
-When N is a power of 2, testing on random data showed that minrun values of
-16, 32, 64 and 128 worked about equally well.  At 256 the data-movement cost
-in binary insertion sort clearly hurt, and at 8 the increase in the number
-of function calls clearly hurt.  Picking *some* power of 2 is important
-here, so that the merges end up perfectly balanced (see next section).  We
-pick 32 as a good value in the sweet range; picking a value at the low end
-allows the adaptive gimmicks more opportunity to exploit shorter natural
-runs.
-
-Because sortperf.py only tries powers of 2, it took a long time to notice
-that 32 isn't a good choice for the general case!  Consider N=2112:
-
->>> divmod(2112, 32)
-(66, 0)
->>>
-
-If the data is randomly ordered, we're very likely to end up with 66 runs
-each of length 32.  The first 64 of these trigger a sequence of perfectly
-balanced merges (see next section), leaving runs of lengths 2048 and 64 to
-merge at the end.  The adaptive gimmicks can do that with fewer than 2048+64
-compares, but it's still more compares than necessary, and-- mergesort's
-bugaboo relative to samplesort --a lot more data movement (O(N) copies just
-to get 64 elements into place).
-
-If we take minrun=33 in this case, then we're very likely to end up with 64
-runs each of length 33, and then all merges are perfectly balanced.  Better!
-
-What we want to avoid is picking minrun such that in
-
-    q, r = divmod(N, minrun)
-
-q is a power of 2 and r>0 (then the last merge only gets r elements into
-place, and r < minrun is small compared to N), or q a little larger than a
-power of 2 regardless of r (then we've got a case similar to "2112", again
-leaving too little work for the last merge to do).
-
-Instead we pick a minrun in range(32, 65) such that N/minrun is exactly a
-power of 2, or if that isn't possible, is close to, but strictly less than,
-a power of 2.  This is easier to do than it may sound:  take the first 6
-bits of N, and add 1 if any of the remaining bits are set.  In fact, that
-rule covers every case in this section, including small N and exact powers
-of 2; merge_compute_minrun() is a deceptively simple function.
-
-
-The Merge Pattern
------------------
-In order to exploit regularities in the data, we're merging on natural
-run lengths, and they can become wildly unbalanced.  That's a Good Thing
-for this sort!  It means we have to find a way to manage an assortment of
-potentially very different run lengths, though.
-
-Stability constrains permissible merging patterns.  For example, if we have
-3 consecutive runs of lengths
-
-    A:10000  B:20000  C:10000
-
-we dare not merge A with C first, because if A, B and C happen to contain
-a common element, it would get out of order wrt its occurrence(s) in B.  The
-merging must be done as (A+B)+C or A+(B+C) instead.
-
-So merging is always done on two consecutive runs at a time, and in-place,
-although this may require some temp memory (more on that later).
-
-When a run is identified, its base address and length are pushed on a stack
-in the MergeState struct.  merge_collapse() is then called to see whether it
-should merge it with preceding run(s).  We would like to delay merging as
-long as possible in order to exploit patterns that may come up later, but we
-like even more to do merging as soon as possible to exploit that the run just
-found is still high in the memory hierarchy.  We also can't delay merging
-"too long" because it consumes memory to remember the runs that are still
-unmerged, and the stack has a fixed size.
-
-What turned out to be a good compromise maintains two invariants on the
-stack entries, where A, B and C are the lengths of the three righmost not-yet
-merged slices:
-
-1.  A > B+C
-2.  B > C
-
-Note that, by induction, #2 implies the lengths of pending runs form a
-decreasing sequence.  #1 implies that, reading the lengths right to left,
-the pending-run lengths grow at least as fast as the Fibonacci numbers.
-Therefore the stack can never grow larger than about log_base_phi(N) entries,
-where phi = (1+sqrt(5))/2 ~= 1.618.  Thus a small # of stack slots suffice
-for very large arrays.
-
-If A <= B+C, the smaller of A and C is merged with B (ties favor C, for the
-freshness-in-cache reason), and the new run replaces the A,B or B,C entries;
-e.g., if the last 3 entries are
-
-    A:30  B:20  C:10
-
-then B is merged with C, leaving
-
-    A:30  BC:30
-
-on the stack.  Or if they were
-
-    A:500  B:400:  C:1000
-
-then A is merged with B, leaving
-
-    AB:900  C:1000
-
-on the stack.
-
-In both examples, the stack configuration after the merge still violates
-invariant #2, and merge_collapse() goes on to continue merging runs until
-both invariants are satisfied.  As an extreme case, suppose we didn't do the
-minrun gimmick, and natural runs were of lengths 128, 64, 32, 16, 8, 4, 2,
-and 2.  Nothing would get merged until the final 2 was seen, and that would
-trigger 7 perfectly balanced merges.
-
-The thrust of these rules when they trigger merging is to balance the run
-lengths as closely as possible, while keeping a low bound on the number of
-runs we have to remember.  This is maximally effective for random data,
-where all runs are likely to be of (artificially forced) length minrun, and
-then we get a sequence of perfectly balanced merges (with, perhaps, some
-oddballs at the end).
-
-OTOH, one reason this sort is so good for partly ordered data has to do
-with wildly unbalanced run lengths.
-
-
-Merge Memory
-------------
-Merging adjacent runs of lengths A and B in-place is very difficult.
-Theoretical constructions are known that can do it, but they're too difficult
-and slow for practical use.  But if we have temp memory equal to min(A, B),
-it's easy.
-
-If A is smaller (function merge_lo), copy A to a temp array, leave B alone,
-and then we can do the obvious merge algorithm left to right, from the temp
-area and B, starting the stores into where A used to live.  There's always a
-free area in the original area comprising a number of elements equal to the
-number not yet merged from the temp array (trivially true at the start;
-proceed by induction).  The only tricky bit is that if a comparison raises an
-exception, we have to remember to copy the remaining elements back in from
-the temp area, lest the array end up with duplicate entries from B.  But
-that's exactly the same thing we need to do if we reach the end of B first,
-so the exit code is pleasantly common to both the normal and error cases.
-
-If B is smaller (function merge_hi, which is merge_lo's "mirror image"),
-much the same, except that we need to merge right to left, copying B into a
-temp array and starting the stores at the right end of where B used to live.
-
-A refinement:  When we're about to merge adjacent runs A and B, we first do
-a form of binary search (more on that later) to see where B[0] should end up
-in A.  Elements in A preceding that point are already in their final
-positions, effectively shrinking the size of A.  Likewise we also search to
-see where A[-1] should end up in B, and elements of B after that point can
-also be ignored.  This cuts the amount of temp memory needed by the same
-amount.
-
-These preliminary searches may not pay off, and can be expected *not* to
-repay their cost if the data is random.  But they can win huge in all of
-time, copying, and memory savings when they do pay, so this is one of the
-"per-merge overheads" mentioned above that we're happy to endure because
-there is at most one very short run.  It's generally true in this algorithm
-that we're willing to gamble a little to win a lot, even though the net
-expectation is negative for random data.
-
-
-Merge Algorithms
-----------------
-merge_lo() and merge_hi() are where the bulk of the time is spent.  merge_lo
-deals with runs where A <= B, and merge_hi where A > B.  They don't know
-whether the data is clustered or uniform, but a lovely thing about merging
-is that many kinds of clustering "reveal themselves" by how many times in a
-row the winning merge element comes from the same run.  We'll only discuss
-merge_lo here; merge_hi is exactly analogous.
-
-Merging begins in the usual, obvious way, comparing the first element of A
-to the first of B, and moving B[0] to the merge area if it's less than A[0],
-else moving A[0] to the merge area.  Call that the "one pair at a time"
-mode.  The only twist here is keeping track of how many times in a row "the
-winner" comes from the same run.
-
-If that count reaches MIN_GALLOP, we switch to "galloping mode".  Here
-we *search* B for where A[0] belongs, and move over all the B's before
-that point in one chunk to the merge area, then move A[0] to the merge
-area.  Then we search A for where B[0] belongs, and similarly move a
-slice of A in one chunk.  Then back to searching B for where A[0] belongs,
-etc.  We stay in galloping mode until both searches find slices to copy
-less than MIN_GALLOP elements long, at which point we go back to one-pair-
-at-a-time mode.
-
-A refinement:  The MergeState struct contains the value of min_gallop that
-controls when we enter galloping mode, initialized to MIN_GALLOP.
-merge_lo() and merge_hi() adjust this higher when galloping isn't paying
-off, and lower when it is.
-
-
-Galloping
----------
-Still without loss of generality, assume A is the shorter run.  In galloping
-mode, we first look for A[0] in B.  We do this via "galloping", comparing
-A[0] in turn to B[0], B[1], B[3], B[7], ..., B[2**j - 1], ..., until finding
-the k such that B[2**(k-1) - 1] < A[0] <= B[2**k - 1].  This takes at most
-roughly lg(B) comparisons, and, unlike a straight binary search, favors
-finding the right spot early in B (more on that later).
-
-After finding such a k, the region of uncertainty is reduced to 2**(k-1) - 1
-consecutive elements, and a straight binary search requires exactly k-1
-additional comparisons to nail it.  Then we copy all the B's up to that
-point in one chunk, and then copy A[0].  Note that no matter where A[0]
-belongs in B, the combination of galloping + binary search finds it in no
-more than about 2*lg(B) comparisons.
-
-If we did a straight binary search, we could find it in no more than
-ceiling(lg(B+1)) comparisons -- but straight binary search takes that many
-comparisons no matter where A[0] belongs.  Straight binary search thus loses
-to galloping unless the run is quite long, and we simply can't guess
-whether it is in advance.
-
-If data is random and runs have the same length, A[0] belongs at B[0] half
-the time, at B[1] a quarter of the time, and so on:  a consecutive winning
-sub-run in B of length k occurs with probability 1/2**(k+1).  So long
-winning sub-runs are extremely unlikely in random data, and guessing that a
-winning sub-run is going to be long is a dangerous game.
-
-OTOH, if data is lopsided or lumpy or contains many duplicates, long
-stretches of winning sub-runs are very likely, and cutting the number of
-comparisons needed to find one from O(B) to O(log B) is a huge win.
-
-Galloping compromises by getting out fast if there isn't a long winning
-sub-run, yet finding such very efficiently when they exist.
-
-I first learned about the galloping strategy in a related context; see:
-
-    "Adaptive Set Intersections, Unions, and Differences" (2000)
-    Erik D. Demaine, Alejandro López-Ortiz, J. Ian Munro
-
-and its followup(s).  An earlier paper called the same strategy
-"exponential search":
-
-   "Optimistic Sorting and Information Theoretic Complexity"
-   Peter McIlroy
-   SODA (Fourth Annual ACM-SIAM Symposium on Discrete Algorithms), pp
-   467-474, Austin, Texas, 25-27 January 1993.
-
-and it probably dates back to an earlier paper by Bentley and Yao.  The
-McIlroy paper in particular has good analysis of a mergesort that's
-probably strongly related to this one in its galloping strategy.
-
-
-Galloping with a Broken Leg
----------------------------
-So why don't we always gallop?  Because it can lose, on two counts:
-
-1. While we're willing to endure small per-merge overheads, per-comparison
-   overheads are a different story.  Calling Yet Another Function per
-   comparison is expensive, and gallop_left() and gallop_right() are
-   too long-winded for sane inlining.
-
-2. Galloping can-- alas --require more comparisons than linear one-at-time
-   search, depending on the data.
-
-#2 requires details.  If A[0] belongs before B[0], galloping requires 1
-compare to determine that, same as linear search, except it costs more
-to call the gallop function.  If A[0] belongs right before B[1], galloping
-requires 2 compares, again same as linear search.  On the third compare,
-galloping checks A[0] against B[3], and if it's <=, requires one more
-compare to determine whether A[0] belongs at B[2] or B[3].  That's a total
-of 4 compares, but if A[0] does belong at B[2], linear search would have
-discovered that in only 3 compares, and that's a huge loss!  Really.  It's
-an increase of 33% in the number of compares needed, and comparisons are
-expensive in Python.
-
-index in B where    # compares linear  # gallop  # binary  gallop
-A[0] belongs        search needs       compares  compares  total
-----------------    -----------------  --------  --------  ------
-               0                    1         1         0       1
-
-               1                    2         2         0       2
-
-               2                    3         3         1       4
-               3                    4         3         1       4
-
-               4                    5         4         2       6
-               5                    6         4         2       6
-               6                    7         4         2       6
-               7                    8         4         2       6
-
-               8                    9         5         3       8
-               9                   10         5         3       8
-              10                   11         5         3       8
-              11                   12         5         3       8
-                                        ...
-
-In general, if A[0] belongs at B[i], linear search requires i+1 comparisons
-to determine that, and galloping a total of 2*floor(lg(i))+2 comparisons.
-The advantage of galloping is unbounded as i grows, but it doesn't win at
-all until i=6.  Before then, it loses twice (at i=2 and i=4), and ties
-at the other values.  At and after i=6, galloping always wins.
-
-We can't guess in advance when it's going to win, though, so we do one pair
-at a time until the evidence seems strong that galloping may pay.  MIN_GALLOP
-is 7, and that's pretty strong evidence.  However, if the data is random, it
-simply will trigger galloping mode purely by luck every now and again, and
-it's quite likely to hit one of the losing cases next.  On the other hand,
-in cases like ~sort, galloping always pays, and MIN_GALLOP is larger than it
-"should be" then.  So the MergeState struct keeps a min_gallop variable
-that merge_lo and merge_hi adjust:  the longer we stay in galloping mode,
-the smaller min_gallop gets, making it easier to transition back to
-galloping mode (if we ever leave it in the current merge, and at the
-start of the next merge).  But whenever the gallop loop doesn't pay,
-min_gallop is increased by one, making it harder to transition back
-to galloping mode (and again both within a merge and across merges).  For
-random data, this all but eliminates the gallop penalty:  min_gallop grows
-large enough that we almost never get into galloping mode.  And for cases
-like ~sort, min_gallop can fall to as low as 1.  This seems to work well,
-but in all it's a minor improvement over using a fixed MIN_GALLOP value.
-
-
-Galloping Complication
-----------------------
-The description above was for merge_lo.  merge_hi has to merge "from the
-other end", and really needs to gallop starting at the last element in a run
-instead of the first.  Galloping from the first still works, but does more
-comparisons than it should (this is significant -- I timed it both ways).
-For this reason, the gallop_left() and gallop_right() functions have a
-"hint" argument, which is the index at which galloping should begin.  So
-galloping can actually start at any index, and proceed at offsets of 1, 3,
-7, 15, ... or -1, -3, -7, -15, ... from the starting index.
-
-In the code as I type it's always called with either 0 or n-1 (where n is
-the # of elements in a run).  It's tempting to try to do something fancier,
-melding galloping with some form of interpolation search; for example, if
-we're merging a run of length 1 with a run of length 10000, index 5000 is
-probably a better guess at the final result than either 0 or 9999.  But
-it's unclear how to generalize that intuition usefully, and merging of
-wildly unbalanced runs already enjoys excellent performance.
-
-~sort is a good example of when balanced runs could benefit from a better
-hint value:  to the extent possible, this would like to use a starting
-offset equal to the previous value of acount/bcount.  Doing so saves about
-10% of the compares in ~sort.  However, doing so is also a mixed bag,
-hurting other cases.
-
-
-Comparing Average # of Compares on Random Arrays
-------------------------------------------------
-[NOTE:  This was done when the new algorithm used about 0.1% more compares
- on random data than does its current incarnation.]
-
-Here list.sort() is samplesort, and list.msort() this sort:
-
-"""
-import random
-from time import clock as now
-
-def fill(n):
-    from random import random
-    return [random() for i in xrange(n)]
-
-def mycmp(x, y):
-    global ncmp
-    ncmp += 1
-    return cmp(x, y)
-
-def timeit(values, method):
-    global ncmp
-    X = values[:]
-    bound = getattr(X, method)
-    ncmp = 0
-    t1 = now()
-    bound(mycmp)
-    t2 = now()
-    return t2-t1, ncmp
-
-format = "%5s  %9.2f  %11d"
-f2     = "%5s  %9.2f  %11.2f"
-
-def drive():
-    count = sst = sscmp = mst = mscmp = nelts = 0
-    while True:
-        n = random.randrange(100000)
-        nelts += n
-        x = fill(n)
-
-        t, c = timeit(x, 'sort')
-        sst += t
-        sscmp += c
-
-        t, c = timeit(x, 'msort')
-        mst += t
-        mscmp += c
-
-        count += 1
-        if count % 10:
-            continue
-
-        print "count", count, "nelts", nelts
-        print format % ("sort",  sst, sscmp)
-        print format % ("msort", mst, mscmp)
-        print f2     % ("", (sst-mst)*1e2/mst, (sscmp-mscmp)*1e2/mscmp)
-
-drive()
-"""
-
-I ran this on Windows and kept using the computer lightly while it was
-running.  time.clock() is wall-clock time on Windows, with better than
-microsecond resolution.  samplesort started with a 1.52% #-of-comparisons
-disadvantage, fell quickly to 1.48%, and then fluctuated within that small
-range.  Here's the last chunk of output before I killed the job:
-
-count 2630 nelts 130906543
- sort    6110.80   1937887573
-msort    6002.78   1909389381
-            1.80         1.49
-
-We've done nearly 2 billion comparisons apiece at Python speed there, and
-that's enough <wink>.
-
-For random arrays of size 2 (yes, there are only 2 interesting ones),
-samplesort has a 50%(!) comparison disadvantage.  This is a consequence of
-samplesort special-casing at most one ascending run at the start, then
-falling back to the general case if it doesn't find an ascending run
-immediately.  The consequence is that it ends up using two compares to sort
-[2, 1].  Gratifyingly, timsort doesn't do any special-casing, so had to be
-taught how to deal with mixtures of ascending and descending runs
-efficiently in all cases.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/lnotab_notes.txt b/AppPkg/Applications/Python/Python-2.7.2/Objects/lnotab_notes.txt
deleted file mode 100644
index c9d45cf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/lnotab_notes.txt
+++ /dev/null
@@ -1,124 +0,0 @@
-All about co_lnotab, the line number table.
-
-Code objects store a field named co_lnotab.  This is an array of unsigned bytes
-disguised as a Python string.  It is used to map bytecode offsets to source code
-line #s for tracebacks and to identify line number boundaries for line tracing.
-
-The array is conceptually a compressed list of
-    (bytecode offset increment, line number increment)
-pairs.  The details are important and delicate, best illustrated by example:
-
-    byte code offset    source code line number
-        0		    1
-        6		    2
-       50		    7
-      350                 307
-      361                 308
-
-Instead of storing these numbers literally, we compress the list by storing only
-the increments from one row to the next.  Conceptually, the stored list might
-look like:
-
-    0, 1,  6, 1,  44, 5,  300, 300,  11, 1
-
-The above doesn't really work, but it's a start. Note that an unsigned byte
-can't hold negative values, or values larger than 255, and the above example
-contains two such values. So we make two tweaks:
-
- (a) there's a deep assumption that byte code offsets and their corresponding
- line #s both increase monotonically, and
- (b) if at least one column jumps by more than 255 from one row to the next,
- more than one pair is written to the table. In case #b, there's no way to know
- from looking at the table later how many were written.  That's the delicate
- part.  A user of co_lnotab desiring to find the source line number
- corresponding to a bytecode address A should do something like this
-
-    lineno = addr = 0
-    for addr_incr, line_incr in co_lnotab:
-        addr += addr_incr
-        if addr > A:
-            return lineno
-        lineno += line_incr
-
-(In C, this is implemented by PyCode_Addr2Line().)  In order for this to work,
-when the addr field increments by more than 255, the line # increment in each
-pair generated must be 0 until the remaining addr increment is < 256.  So, in
-the example above, assemble_lnotab in compile.c should not (as was actually done
-until 2.2) expand 300, 300 to
-    255, 255, 45, 45,
-but to
-    255, 0, 45, 255, 0, 45.
-
-The above is sufficient to reconstruct line numbers for tracebacks, but not for
-line tracing.  Tracing is handled by PyCode_CheckLineNumber() in codeobject.c
-and maybe_call_line_trace() in ceval.c.
-
-*** Tracing ***
-
-To a first approximation, we want to call the tracing function when the line
-number of the current instruction changes.  Re-computing the current line for
-every instruction is a little slow, though, so each time we compute the line
-number we save the bytecode indices where it's valid:
-
-     *instr_lb <= frame->f_lasti < *instr_ub
-
-is true so long as execution does not change lines.  That is, *instr_lb holds
-the first bytecode index of the current line, and *instr_ub holds the first
-bytecode index of the next line.  As long as the above expression is true,
-maybe_call_line_trace() does not need to call PyCode_CheckLineNumber().  Note
-that the same line may appear multiple times in the lnotab, either because the
-bytecode jumped more than 255 indices between line number changes or because
-the compiler inserted the same line twice.  Even in that case, *instr_ub holds
-the first index of the next line.
-
-However, we don't *always* want to call the line trace function when the above
-test fails.
-
-Consider this code:
-
-1: def f(a):
-2:    while a:
-3:       print 1,
-4:       break
-5:    else:
-6:       print 2,
-
-which compiles to this:
-
-  2           0 SETUP_LOOP              19 (to 22)
-        >>    3 LOAD_FAST                0 (a)
-              6 POP_JUMP_IF_FALSE       17
-
-  3           9 LOAD_CONST               1 (1)
-             12 PRINT_ITEM          
-
-  4          13 BREAK_LOOP          
-             14 JUMP_ABSOLUTE            3
-        >>   17 POP_BLOCK           
-
-  6          18 LOAD_CONST               2 (2)
-             21 PRINT_ITEM          
-        >>   22 LOAD_CONST               0 (None)
-             25 RETURN_VALUE        
-
-If 'a' is false, execution will jump to the POP_BLOCK instruction at offset 17
-and the co_lnotab will claim that execution has moved to line 4, which is wrong.
-In this case, we could instead associate the POP_BLOCK with line 5, but that
-would break jumps around loops without else clauses.
-
-We fix this by only calling the line trace function for a forward jump if the
-co_lnotab indicates we have jumped to the *start* of a line, i.e. if the current
-instruction offset matches the offset given for the start of a line by the
-co_lnotab.  For backward jumps, however, we always call the line trace function,
-which lets a debugger stop on every evaluation of a loop guard (which usually
-won't be the first opcode in a line).
-
-Why do we set f_lineno when tracing, and only just before calling the trace
-function?  Well, consider the code above when 'a' is true.  If stepping through
-this with 'n' in pdb, you would stop at line 1 with a "call" type event, then
-line events on lines 2, 3, and 4, then a "return" type event -- but because the
-code for the return actually falls in the range of the "line 6" opcodes, you
-would be shown line 6 during this event.  This is a change from the behaviour in
-2.2 and before, and I've found it confusing in practice.  By setting and using
-f_lineno when tracing, one can report a line number different from that
-suggested by f_lasti on this one occasion where it's desirable.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/longobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/longobject.c
deleted file mode 100644
index 2552e99..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/longobject.c
+++ /dev/null
@@ -1,4381 +0,0 @@
-/** @file
-    Long (arbitrary precision) integer object implementation.
-
-    Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-
-/* XXX The functional organization of this file is terrible */
-
-#include "Python.h"
-#include "longintrepr.h"
-#include "structseq.h"
-
-#include <float.h>
-#include <ctype.h>
-#include <stddef.h>
-
-/* For long multiplication, use the O(N**2) school algorithm unless
- * both operands contain more than KARATSUBA_CUTOFF digits (this
- * being an internal Python long digit, in base PyLong_BASE).
- */
-#define KARATSUBA_CUTOFF 70
-#define KARATSUBA_SQUARE_CUTOFF (2 * KARATSUBA_CUTOFF)
-
-/* For exponentiation, use the binary left-to-right algorithm
- * unless the exponent contains more than FIVEARY_CUTOFF digits.
- * In that case, do 5 bits at a time.  The potential drawback is that
- * a table of 2**5 intermediate results is computed.
- */
-#define FIVEARY_CUTOFF 8
-
-#ifndef ABS
-  #define ABS(x) ((x) < 0 ? -(x) : (x))
-#endif
-
-#ifndef MAX
-  #define MAX(x, y) ((x) < (y) ? (y) : (x))
-#endif
-
-#ifndef MIN
-  #define MIN(x, y) ((x) > (y) ? (y) : (x))
-#endif
-
-#define SIGCHECK(PyTryBlock)                            \
-    do {                                                \
-        if (--_Py_Ticker < 0) {                         \
-            _Py_Ticker = _Py_CheckInterval;             \
-            if (PyErr_CheckSignals()) PyTryBlock        \
-                                          }             \
-    } while(0)
-
-/* Normalize (remove leading zeros from) a long int object.
-   Doesn't attempt to free the storage--in most cases, due to the nature
-   of the algorithms used, this could save at most be one word anyway. */
-
-static PyLongObject *
-long_normalize(register PyLongObject *v)
-{
-    Py_ssize_t j = ABS(Py_SIZE(v));
-    Py_ssize_t i = j;
-
-    while (i > 0 && v->ob_digit[i-1] == 0)
-        --i;
-    if (i != j)
-        Py_SIZE(v) = (Py_SIZE(v) < 0) ? -(i) : i;
-    return v;
-}
-
-/* Allocate a new long int object with size digits.
-   Return NULL and set exception if we run out of memory. */
-
-#define MAX_LONG_DIGITS \
-    ((PY_SSIZE_T_MAX - offsetof(PyLongObject, ob_digit))/sizeof(digit))
-
-PyLongObject *
-_PyLong_New(Py_ssize_t size)
-{
-    if (size > (Py_ssize_t)MAX_LONG_DIGITS) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "too many digits in integer");
-        return NULL;
-    }
-    /* coverity[ampersand_in_size] */
-    /* XXX(nnorwitz): PyObject_NEW_VAR / _PyObject_VAR_SIZE need to detect
-       overflow */
-    return PyObject_NEW_VAR(PyLongObject, &PyLong_Type, size);
-}
-
-PyObject *
-_PyLong_Copy(PyLongObject *src)
-{
-    PyLongObject *result;
-    Py_ssize_t i;
-
-    assert(src != NULL);
-    i = src->ob_size;
-    if (i < 0)
-        i = -(i);
-    result = _PyLong_New(i);
-    if (result != NULL) {
-        result->ob_size = src->ob_size;
-        while (--i >= 0)
-            result->ob_digit[i] = src->ob_digit[i];
-    }
-    return (PyObject *)result;
-}
-
-/* Create a new long int object from a C long int */
-
-PyObject *
-PyLong_FromLong(long ival)
-{
-    PyLongObject *v;
-    unsigned long abs_ival;
-    unsigned long t;  /* unsigned so >> doesn't propagate sign bit */
-    int ndigits = 0;
-    int negative = 0;
-
-    if (ival < 0) {
-        /* if LONG_MIN == -LONG_MAX-1 (true on most platforms) then
-           ANSI C says that the result of -ival is undefined when ival
-           == LONG_MIN.  Hence the following workaround. */
-        abs_ival = (unsigned long)(-1-ival) + 1;
-        negative = 1;
-    }
-    else {
-        abs_ival = (unsigned long)ival;
-    }
-
-    /* Count the number of Python digits.
-       We used to pick 5 ("big enough for anything"), but that's a
-       waste of time and space given that 5*15 = 75 bits are rarely
-       needed. */
-    t = abs_ival;
-    while (t) {
-        ++ndigits;
-        t >>= PyLong_SHIFT;
-    }
-    v = _PyLong_New(ndigits);
-    if (v != NULL) {
-        digit *p = v->ob_digit;
-        v->ob_size = negative ? -ndigits : ndigits;
-        t = abs_ival;
-        while (t) {
-            *p++ = (digit)(t & PyLong_MASK);
-            t >>= PyLong_SHIFT;
-        }
-    }
-    return (PyObject *)v;
-}
-
-/* Create a new long int object from a C unsigned long int */
-
-PyObject *
-PyLong_FromUnsignedLong(unsigned long ival)
-{
-    PyLongObject *v;
-    unsigned long t;
-    int ndigits = 0;
-
-    /* Count the number of Python digits. */
-    t = (unsigned long)ival;
-    while (t) {
-        ++ndigits;
-        t >>= PyLong_SHIFT;
-    }
-    v = _PyLong_New(ndigits);
-    if (v != NULL) {
-        digit *p = v->ob_digit;
-        Py_SIZE(v) = ndigits;
-        while (ival) {
-            *p++ = (digit)(ival & PyLong_MASK);
-            ival >>= PyLong_SHIFT;
-        }
-    }
-    return (PyObject *)v;
-}
-
-/* Create a new long int object from a C double */
-
-PyObject *
-PyLong_FromDouble(double dval)
-{
-    PyLongObject *v;
-    double frac;
-    int i, ndig, expo, neg;
-    neg = 0;
-    if (Py_IS_INFINITY(dval)) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "cannot convert float infinity to integer");
-        return NULL;
-    }
-    if (Py_IS_NAN(dval)) {
-        PyErr_SetString(PyExc_ValueError,
-                        "cannot convert float NaN to integer");
-        return NULL;
-    }
-    if (dval < 0.0) {
-        neg = 1;
-        dval = -dval;
-    }
-    frac = frexp(dval, &expo); /* dval = frac*2**expo; 0.0 <= frac < 1.0 */
-    if (expo <= 0)
-        return PyLong_FromLong(0L);
-    ndig = (expo-1) / PyLong_SHIFT + 1; /* Number of 'digits' in result */
-    v = _PyLong_New(ndig);
-    if (v == NULL)
-        return NULL;
-    frac = ldexp(frac, (expo-1) % PyLong_SHIFT + 1);
-    for (i = ndig; --i >= 0; ) {
-        digit bits = (digit)frac;
-        v->ob_digit[i] = bits;
-        frac = frac - (double)bits;
-        frac = ldexp(frac, PyLong_SHIFT);
-    }
-    if (neg)
-        Py_SIZE(v) = -(Py_SIZE(v));
-    return (PyObject *)v;
-}
-
-/* Checking for overflow in PyLong_AsLong is a PITA since C doesn't define
- * anything about what happens when a signed integer operation overflows,
- * and some compilers think they're doing you a favor by being "clever"
- * then.  The bit pattern for the largest postive signed long is
- * (unsigned long)LONG_MAX, and for the smallest negative signed long
- * it is abs(LONG_MIN), which we could write -(unsigned long)LONG_MIN.
- * However, some other compilers warn about applying unary minus to an
- * unsigned operand.  Hence the weird "0-".
- */
-#define PY_ABS_LONG_MIN         (0-(unsigned long)LONG_MIN)
-#define PY_ABS_SSIZE_T_MIN      (0-(size_t)PY_SSIZE_T_MIN)
-
-/* Get a C long int from a Python long or Python int object.
-   On overflow, returns -1 and sets *overflow to 1 or -1 depending
-   on the sign of the result.  Otherwise *overflow is 0.
-
-   For other errors (e.g., type error), returns -1 and sets an error
-   condition.
-*/
-
-long
-PyLong_AsLongAndOverflow(PyObject *vv, int *overflow)
-{
-    /* This version by Tim Peters */
-    register PyLongObject *v;
-    unsigned long x, prev;
-    long res;
-    Py_ssize_t i;
-    int sign;
-    int do_decref = 0; /* if nb_int was called */
-
-    *overflow = 0;
-    if (vv == NULL) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-
-    if(PyInt_Check(vv))
-        return PyInt_AsLong(vv);
-
-    if (!PyLong_Check(vv)) {
-        PyNumberMethods *nb;
-        nb = vv->ob_type->tp_as_number;
-        if (nb == NULL || nb->nb_int == NULL) {
-            PyErr_SetString(PyExc_TypeError,
-                            "an integer is required");
-            return -1;
-        }
-        vv = (*nb->nb_int) (vv);
-        if (vv == NULL)
-            return -1;
-        do_decref = 1;
-        if(PyInt_Check(vv)) {
-            res = PyInt_AsLong(vv);
-            goto exit;
-        }
-        if (!PyLong_Check(vv)) {
-            Py_DECREF(vv);
-            PyErr_SetString(PyExc_TypeError,
-                            "nb_int should return int object");
-            return -1;
-        }
-    }
-
-    res = -1;
-    v = (PyLongObject *)vv;
-    i = Py_SIZE(v);
-
-    switch (i) {
-    case -1:
-        res = -(sdigit)v->ob_digit[0];
-        break;
-    case 0:
-        res = 0;
-        break;
-    case 1:
-        res = v->ob_digit[0];
-        break;
-    default:
-        sign = 1;
-        x = 0;
-        if (i < 0) {
-            sign = -1;
-            i = -(i);
-        }
-        while (--i >= 0) {
-            prev = x;
-            x = (x << PyLong_SHIFT) + v->ob_digit[i];
-            if ((x >> PyLong_SHIFT) != prev) {
-                *overflow = sign;
-                goto exit;
-            }
-        }
-        /* Haven't lost any bits, but casting to long requires extra
-         * care (see comment above).
-         */
-        if (x <= (unsigned long)LONG_MAX) {
-            res = (long)x * sign;
-        }
-        else if (sign < 0 && x == PY_ABS_LONG_MIN) {
-            res = LONG_MIN;
-        }
-        else {
-            *overflow = sign;
-            /* res is already set to -1 */
-        }
-    }
-  exit:
-    if (do_decref) {
-        Py_DECREF(vv);
-    }
-    return res;
-}
-
-/* Get a C long int from a long int object.
-   Returns -1 and sets an error condition if overflow occurs. */
-
-long
-PyLong_AsLong(PyObject *obj)
-{
-    int overflow;
-    long result = PyLong_AsLongAndOverflow(obj, &overflow);
-    if (overflow) {
-        /* XXX: could be cute and give a different
-           message for overflow == -1 */
-        PyErr_SetString(PyExc_OverflowError,
-                        "Python int too large to convert to C long");
-    }
-    return result;
-}
-
-/* Get a Py_ssize_t from a long int object.
-   Returns -1 and sets an error condition if overflow occurs. */
-
-Py_ssize_t
-PyLong_AsSsize_t(PyObject *vv) {
-    register PyLongObject *v;
-    size_t x, prev;
-    Py_ssize_t i;
-    int sign;
-
-    if (vv == NULL || !PyLong_Check(vv)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    v = (PyLongObject *)vv;
-    i = v->ob_size;
-    sign = 1;
-    x = 0;
-    if (i < 0) {
-        sign = -1;
-        i = -(i);
-    }
-    while (--i >= 0) {
-        prev = x;
-        x = (x << PyLong_SHIFT) | v->ob_digit[i];
-        if ((x >> PyLong_SHIFT) != prev)
-            goto overflow;
-    }
-    /* Haven't lost any bits, but casting to a signed type requires
-     * extra care (see comment above).
-     */
-    if (x <= (size_t)PY_SSIZE_T_MAX) {
-        return (Py_ssize_t)x * sign;
-    }
-    else if (sign < 0 && x == PY_ABS_SSIZE_T_MIN) {
-        return PY_SSIZE_T_MIN;
-    }
-    /* else overflow */
-
-  overflow:
-    PyErr_SetString(PyExc_OverflowError,
-                    "long int too large to convert to int");
-    return -1;
-}
-
-/* Get a C unsigned long int from a long int object.
-   Returns -1 and sets an error condition if overflow occurs. */
-
-unsigned long
-PyLong_AsUnsignedLong(PyObject *vv)
-{
-    register PyLongObject *v;
-    unsigned long x, prev;
-    Py_ssize_t i;
-
-    if (vv == NULL || !PyLong_Check(vv)) {
-        if (vv != NULL && PyInt_Check(vv)) {
-            long val = PyInt_AsLong(vv);
-            if (val < 0) {
-                PyErr_SetString(PyExc_OverflowError,
-                                "can't convert negative value "
-                                "to unsigned long");
-                return (unsigned long) -1;
-            }
-            return val;
-        }
-        PyErr_BadInternalCall();
-        return (unsigned long) -1;
-    }
-    v = (PyLongObject *)vv;
-    i = Py_SIZE(v);
-    x = 0;
-    if (i < 0) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "can't convert negative value to unsigned long");
-        return (unsigned long) -1;
-    }
-    while (--i >= 0) {
-        prev = x;
-        x = (x << PyLong_SHIFT) | v->ob_digit[i];
-        if ((x >> PyLong_SHIFT) != prev) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "long int too large to convert");
-            return (unsigned long) -1;
-        }
-    }
-    return x;
-}
-
-/* Get a C unsigned long int from a long int object, ignoring the high bits.
-   Returns -1 and sets an error condition if an error occurs. */
-
-unsigned long
-PyLong_AsUnsignedLongMask(PyObject *vv)
-{
-    register PyLongObject *v;
-    unsigned long x;
-    Py_ssize_t i;
-    int sign;
-
-    if (vv == NULL || !PyLong_Check(vv)) {
-        if (vv != NULL && PyInt_Check(vv))
-            return PyInt_AsUnsignedLongMask(vv);
-        PyErr_BadInternalCall();
-        return (unsigned long) -1;
-    }
-    v = (PyLongObject *)vv;
-    i = v->ob_size;
-    sign = 1;
-    x = 0;
-    if (i < 0) {
-        sign = -1;
-        i = -i;
-    }
-    while (--i >= 0) {
-        x = (x << PyLong_SHIFT) | v->ob_digit[i];
-    }
-    return x * sign;
-}
-
-int
-_PyLong_Sign(PyObject *vv)
-{
-    PyLongObject *v = (PyLongObject *)vv;
-
-    assert(v != NULL);
-    assert(PyLong_Check(v));
-
-    return Py_SIZE(v) == 0 ? 0 : (Py_SIZE(v) < 0 ? -1 : 1);
-}
-
-size_t
-_PyLong_NumBits(PyObject *vv)
-{
-    PyLongObject *v = (PyLongObject *)vv;
-    size_t result = 0;
-    Py_ssize_t ndigits;
-
-    assert(v != NULL);
-    assert(PyLong_Check(v));
-    ndigits = ABS(Py_SIZE(v));
-    assert(ndigits == 0 || v->ob_digit[ndigits - 1] != 0);
-    if (ndigits > 0) {
-        digit msd = v->ob_digit[ndigits - 1];
-
-        result = (ndigits - 1) * PyLong_SHIFT;
-        if (result / PyLong_SHIFT != (size_t)(ndigits - 1))
-            goto Overflow;
-        do {
-            ++result;
-            if (result == 0)
-                goto Overflow;
-            msd >>= 1;
-        } while (msd);
-    }
-    return result;
-
-  Overflow:
-    PyErr_SetString(PyExc_OverflowError, "long has too many bits "
-                    "to express in a platform size_t");
-    return (size_t)-1;
-}
-
-PyObject *
-_PyLong_FromByteArray(const unsigned char* bytes, size_t n,
-                      int little_endian, int is_signed)
-{
-    const unsigned char* pstartbyte;    /* LSB of bytes */
-    int incr;                           /* direction to move pstartbyte */
-    const unsigned char* pendbyte;      /* MSB of bytes */
-    size_t numsignificantbytes;         /* number of bytes that matter */
-    Py_ssize_t ndigits;                 /* number of Python long digits */
-    PyLongObject* v;                    /* result */
-    Py_ssize_t idigit = 0;              /* next free index in v->ob_digit */
-
-    if (n == 0)
-        return PyLong_FromLong(0L);
-
-    if (little_endian) {
-        pstartbyte = bytes;
-        pendbyte = bytes + n - 1;
-        incr = 1;
-    }
-    else {
-        pstartbyte = bytes + n - 1;
-        pendbyte = bytes;
-        incr = -1;
-    }
-
-    if (is_signed)
-        is_signed = *pendbyte >= 0x80;
-
-    /* Compute numsignificantbytes.  This consists of finding the most
-       significant byte.  Leading 0 bytes are insignificant if the number
-       is positive, and leading 0xff bytes if negative. */
-    {
-        size_t i;
-        const unsigned char* p = pendbyte;
-        const int pincr = -incr;  /* search MSB to LSB */
-        const unsigned char insignficant = is_signed ? 0xff : 0x00;
-
-        for (i = 0; i < n; ++i, p += pincr) {
-            if (*p != insignficant)
-                break;
-        }
-        numsignificantbytes = n - i;
-        /* 2's-comp is a bit tricky here, e.g. 0xff00 == -0x0100, so
-           actually has 2 significant bytes.  OTOH, 0xff0001 ==
-           -0x00ffff, so we wouldn't *need* to bump it there; but we
-           do for 0xffff = -0x0001.  To be safe without bothering to
-           check every case, bump it regardless. */
-        if (is_signed && numsignificantbytes < n)
-            ++numsignificantbytes;
-    }
-
-    /* How many Python long digits do we need?  We have
-       8*numsignificantbytes bits, and each Python long digit has
-       PyLong_SHIFT bits, so it's the ceiling of the quotient. */
-    /* catch overflow before it happens */
-    if (numsignificantbytes > (PY_SSIZE_T_MAX - PyLong_SHIFT) / 8) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "byte array too long to convert to int");
-        return NULL;
-    }
-    ndigits = (numsignificantbytes * 8 + PyLong_SHIFT - 1) / PyLong_SHIFT;
-    v = _PyLong_New(ndigits);
-    if (v == NULL)
-        return NULL;
-
-    /* Copy the bits over.  The tricky parts are computing 2's-comp on
-       the fly for signed numbers, and dealing with the mismatch between
-       8-bit bytes and (probably) 15-bit Python digits.*/
-    {
-        size_t i;
-        twodigits carry = 1;                    /* for 2's-comp calculation */
-        twodigits accum = 0;                    /* sliding register */
-        unsigned int accumbits = 0;             /* number of bits in accum */
-        const unsigned char* p = pstartbyte;
-
-        for (i = 0; i < numsignificantbytes; ++i, p += incr) {
-            twodigits thisbyte = *p;
-            /* Compute correction for 2's comp, if needed. */
-            if (is_signed) {
-                thisbyte = (0xff ^ thisbyte) + carry;
-                carry = thisbyte >> 8;
-                thisbyte &= 0xff;
-            }
-            /* Because we're going LSB to MSB, thisbyte is
-               more significant than what's already in accum,
-               so needs to be prepended to accum. */
-            accum |= (twodigits)thisbyte << accumbits;
-            accumbits += 8;
-            if (accumbits >= PyLong_SHIFT) {
-                /* There's enough to fill a Python digit. */
-                assert(idigit < ndigits);
-                v->ob_digit[idigit] = (digit)(accum & PyLong_MASK);
-                ++idigit;
-                accum >>= PyLong_SHIFT;
-                accumbits -= PyLong_SHIFT;
-                assert(accumbits < PyLong_SHIFT);
-            }
-        }
-        assert(accumbits < PyLong_SHIFT);
-        if (accumbits) {
-            assert(idigit < ndigits);
-            v->ob_digit[idigit] = (digit)accum;
-            ++idigit;
-        }
-    }
-
-    Py_SIZE(v) = is_signed ? -idigit : idigit;
-    return (PyObject *)long_normalize(v);
-}
-
-int
-_PyLong_AsByteArray(PyLongObject* v,
-                    unsigned char* bytes, size_t n,
-                    int little_endian, int is_signed)
-{
-    Py_ssize_t i;               /* index into v->ob_digit */
-    Py_ssize_t ndigits;         /* |v->ob_size| */
-    twodigits accum;            /* sliding register */
-    unsigned int accumbits;     /* # bits in accum */
-    int do_twos_comp;           /* store 2's-comp?  is_signed and v < 0 */
-    digit carry;                /* for computing 2's-comp */
-    size_t j;                   /* # bytes filled */
-    unsigned char* p;           /* pointer to next byte in bytes */
-    int pincr;                  /* direction to move p */
-
-    assert(v != NULL && PyLong_Check(v));
-
-    if (Py_SIZE(v) < 0) {
-        ndigits = -(Py_SIZE(v));
-        if (!is_signed) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "can't convert negative long to unsigned");
-            return -1;
-        }
-        do_twos_comp = 1;
-    }
-    else {
-        ndigits = Py_SIZE(v);
-        do_twos_comp = 0;
-    }
-
-    if (little_endian) {
-        p = bytes;
-        pincr = 1;
-    }
-    else {
-        p = bytes + n - 1;
-        pincr = -1;
-    }
-
-    /* Copy over all the Python digits.
-       It's crucial that every Python digit except for the MSD contribute
-       exactly PyLong_SHIFT bits to the total, so first assert that the long is
-       normalized. */
-    assert(ndigits == 0 || v->ob_digit[ndigits - 1] != 0);
-    j = 0;
-    accum = 0;
-    accumbits = 0;
-    carry = do_twos_comp ? 1 : 0;
-    for (i = 0; i < ndigits; ++i) {
-        digit thisdigit = v->ob_digit[i];
-        if (do_twos_comp) {
-            thisdigit = (thisdigit ^ PyLong_MASK) + carry;
-            carry = thisdigit >> PyLong_SHIFT;
-            thisdigit &= PyLong_MASK;
-        }
-        /* Because we're going LSB to MSB, thisdigit is more
-           significant than what's already in accum, so needs to be
-           prepended to accum. */
-        accum |= (twodigits)thisdigit << accumbits;
-
-        /* The most-significant digit may be (probably is) at least
-           partly empty. */
-        if (i == ndigits - 1) {
-            /* Count # of sign bits -- they needn't be stored,
-             * although for signed conversion we need later to
-             * make sure at least one sign bit gets stored. */
-            digit s = do_twos_comp ? thisdigit ^ PyLong_MASK : thisdigit;
-            while (s != 0) {
-                s >>= 1;
-                accumbits++;
-            }
-        }
-        else
-            accumbits += PyLong_SHIFT;
-
-        /* Store as many bytes as possible. */
-        while (accumbits >= 8) {
-            if (j >= n)
-                goto Overflow;
-            ++j;
-            *p = (unsigned char)(accum & 0xff);
-            p += pincr;
-            accumbits -= 8;
-            accum >>= 8;
-        }
-    }
-
-    /* Store the straggler (if any). */
-    assert(accumbits < 8);
-    assert(carry == 0);  /* else do_twos_comp and *every* digit was 0 */
-    if (accumbits > 0) {
-        if (j >= n)
-            goto Overflow;
-        ++j;
-        if (do_twos_comp) {
-            /* Fill leading bits of the byte with sign bits
-               (appropriately pretending that the long had an
-               infinite supply of sign bits). */
-            accum |= (~(twodigits)0) << accumbits;
-        }
-        *p = (unsigned char)(accum & 0xff);
-        p += pincr;
-    }
-    else if (j == n && n > 0 && is_signed) {
-        /* The main loop filled the byte array exactly, so the code
-           just above didn't get to ensure there's a sign bit, and the
-           loop below wouldn't add one either.  Make sure a sign bit
-           exists. */
-        unsigned char msb = *(p - pincr);
-        int sign_bit_set = msb >= 0x80;
-        assert(accumbits == 0);
-        if (sign_bit_set == do_twos_comp)
-            return 0;
-        else
-            goto Overflow;
-    }
-
-    /* Fill remaining bytes with copies of the sign bit. */
-    {
-        unsigned char signbyte = do_twos_comp ? 0xffU : 0U;
-        for ( ; j < n; ++j, p += pincr)
-            *p = signbyte;
-    }
-
-    return 0;
-
-  Overflow:
-    PyErr_SetString(PyExc_OverflowError, "long too big to convert");
-    return -1;
-
-}
-
-/* Create a new long (or int) object from a C pointer */
-
-PyObject *
-PyLong_FromVoidPtr(void *p)
-{
-#if SIZEOF_VOID_P <= SIZEOF_LONG
-    if ((long)p < 0)
-        return PyLong_FromUnsignedLong((unsigned long)p);
-    return PyInt_FromLong((long)p);
-#else
-
-#ifndef HAVE_LONG_LONG
-#   error "PyLong_FromVoidPtr: sizeof(void*) > sizeof(long), but no long long"
-#endif
-#if SIZEOF_LONG_LONG < SIZEOF_VOID_P
-#   error "PyLong_FromVoidPtr: sizeof(PY_LONG_LONG) < sizeof(void*)"
-#endif
-    /* optimize null pointers */
-    if (p == NULL)
-        return PyInt_FromLong(0);
-    return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)p);
-
-#endif /* SIZEOF_VOID_P <= SIZEOF_LONG */
-}
-
-/* Get a C pointer from a long object (or an int object in some cases) */
-
-void *
-PyLong_AsVoidPtr(PyObject *vv)
-{
-    /* This function will allow int or long objects. If vv is neither,
-       then the PyLong_AsLong*() functions will raise the exception:
-       PyExc_SystemError, "bad argument to internal function"
-    */
-#if SIZEOF_VOID_P <= SIZEOF_LONG
-    long x;
-
-    if (PyInt_Check(vv))
-        x = PyInt_AS_LONG(vv);
-    else if (PyLong_Check(vv) && _PyLong_Sign(vv) < 0)
-        x = PyLong_AsLong(vv);
-    else
-        x = PyLong_AsUnsignedLong(vv);
-#else
-
-#ifndef HAVE_LONG_LONG
-#   error "PyLong_AsVoidPtr: sizeof(void*) > sizeof(long), but no long long"
-#endif
-#if SIZEOF_LONG_LONG < SIZEOF_VOID_P
-#   error "PyLong_AsVoidPtr: sizeof(PY_LONG_LONG) < sizeof(void*)"
-#endif
-    PY_LONG_LONG x;
-
-    if (PyInt_Check(vv))
-        x = PyInt_AS_LONG(vv);
-    else if (PyLong_Check(vv) && _PyLong_Sign(vv) < 0)
-        x = PyLong_AsLongLong(vv);
-    else
-        x = PyLong_AsUnsignedLongLong(vv);
-
-#endif /* SIZEOF_VOID_P <= SIZEOF_LONG */
-
-    if (x == -1 && PyErr_Occurred())
-        return NULL;
-    return (void *)x;
-}
-
-#ifdef HAVE_LONG_LONG
-
-/* Initial PY_LONG_LONG support by Chris Herborth (chrish@qnx.com), later
- * rewritten to use the newer PyLong_{As,From}ByteArray API.
- */
-
-#define IS_LITTLE_ENDIAN (int)*(unsigned char*)&one
-#define PY_ABS_LLONG_MIN (0-(unsigned PY_LONG_LONG)PY_LLONG_MIN)
-
-/* Create a new long int object from a C PY_LONG_LONG int. */
-
-PyObject *
-PyLong_FromLongLong(PY_LONG_LONG ival)
-{
-    PyLongObject *v;
-    unsigned PY_LONG_LONG abs_ival;
-    unsigned PY_LONG_LONG t;  /* unsigned so >> doesn't propagate sign bit */
-    int ndigits = 0;
-    int negative = 0;
-
-    if (ival < 0) {
-        /* avoid signed overflow on negation;  see comments
-           in PyLong_FromLong above. */
-        abs_ival = (unsigned PY_LONG_LONG)(-1-ival) + 1;
-        negative = 1;
-    }
-    else {
-        abs_ival = (unsigned PY_LONG_LONG)ival;
-    }
-
-    /* Count the number of Python digits.
-       We used to pick 5 ("big enough for anything"), but that's a
-       waste of time and space given that 5*15 = 75 bits are rarely
-       needed. */
-    t = abs_ival;
-    while (t) {
-        ++ndigits;
-        t >>= PyLong_SHIFT;
-    }
-    v = _PyLong_New(ndigits);
-    if (v != NULL) {
-        digit *p = v->ob_digit;
-        Py_SIZE(v) = negative ? -ndigits : ndigits;
-        t = abs_ival;
-        while (t) {
-            *p++ = (digit)(t & PyLong_MASK);
-            t >>= PyLong_SHIFT;
-        }
-    }
-    return (PyObject *)v;
-}
-
-/* Create a new long int object from a C unsigned PY_LONG_LONG int. */
-
-PyObject *
-PyLong_FromUnsignedLongLong(unsigned PY_LONG_LONG ival)
-{
-    PyLongObject *v;
-    unsigned PY_LONG_LONG t;
-    int ndigits = 0;
-
-    /* Count the number of Python digits. */
-    t = (unsigned PY_LONG_LONG)ival;
-    while (t) {
-        ++ndigits;
-        t >>= PyLong_SHIFT;
-    }
-    v = _PyLong_New(ndigits);
-    if (v != NULL) {
-        digit *p = v->ob_digit;
-        Py_SIZE(v) = ndigits;
-        while (ival) {
-            *p++ = (digit)(ival & PyLong_MASK);
-            ival >>= PyLong_SHIFT;
-        }
-    }
-    return (PyObject *)v;
-}
-
-/* Create a new long int object from a C Py_ssize_t. */
-
-PyObject *
-PyLong_FromSsize_t(Py_ssize_t ival)
-{
-    Py_ssize_t bytes = ival;
-    int one = 1;
-    return _PyLong_FromByteArray((unsigned char *)&bytes,
-                                 SIZEOF_SIZE_T, IS_LITTLE_ENDIAN, 1);
-}
-
-/* Create a new long int object from a C size_t. */
-
-PyObject *
-PyLong_FromSize_t(size_t ival)
-{
-    size_t bytes = ival;
-    int one = 1;
-    return _PyLong_FromByteArray((unsigned char *)&bytes,
-                                 SIZEOF_SIZE_T, IS_LITTLE_ENDIAN, 0);
-}
-
-/* Get a C PY_LONG_LONG int from a long int object.
-   Return -1 and set an error if overflow occurs. */
-
-PY_LONG_LONG
-PyLong_AsLongLong(PyObject *vv)
-{
-    PY_LONG_LONG bytes;
-    int one = 1;
-    int res;
-
-    if (vv == NULL) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    if (!PyLong_Check(vv)) {
-        PyNumberMethods *nb;
-        PyObject *io;
-        if (PyInt_Check(vv))
-            return (PY_LONG_LONG)PyInt_AsLong(vv);
-        if ((nb = vv->ob_type->tp_as_number) == NULL ||
-            nb->nb_int == NULL) {
-            PyErr_SetString(PyExc_TypeError, "an integer is required");
-            return -1;
-        }
-        io = (*nb->nb_int) (vv);
-        if (io == NULL)
-            return -1;
-        if (PyInt_Check(io)) {
-            bytes = PyInt_AsLong(io);
-            Py_DECREF(io);
-            return bytes;
-        }
-        if (PyLong_Check(io)) {
-            bytes = PyLong_AsLongLong(io);
-            Py_DECREF(io);
-            return bytes;
-        }
-        Py_DECREF(io);
-        PyErr_SetString(PyExc_TypeError, "integer conversion failed");
-        return -1;
-    }
-
-    res = _PyLong_AsByteArray((PyLongObject *)vv, (unsigned char *)&bytes,
-                              SIZEOF_LONG_LONG, IS_LITTLE_ENDIAN, 1);
-
-    /* Plan 9 can't handle PY_LONG_LONG in ? : expressions */
-    if (res < 0)
-        return (PY_LONG_LONG)-1;
-    else
-        return bytes;
-}
-
-/* Get a C unsigned PY_LONG_LONG int from a long int object.
-   Return -1 and set an error if overflow occurs. */
-
-unsigned PY_LONG_LONG
-PyLong_AsUnsignedLongLong(PyObject *vv)
-{
-    unsigned PY_LONG_LONG bytes;
-    int one = 1;
-    int res;
-
-    if (vv == NULL || !PyLong_Check(vv)) {
-        PyErr_BadInternalCall();
-        return (unsigned PY_LONG_LONG)-1;
-    }
-
-    res = _PyLong_AsByteArray((PyLongObject *)vv, (unsigned char *)&bytes,
-                              SIZEOF_LONG_LONG, IS_LITTLE_ENDIAN, 0);
-
-    /* Plan 9 can't handle PY_LONG_LONG in ? : expressions */
-    if (res < 0)
-        return (unsigned PY_LONG_LONG)res;
-    else
-        return bytes;
-}
-
-/* Get a C unsigned long int from a long int object, ignoring the high bits.
-   Returns -1 and sets an error condition if an error occurs. */
-
-unsigned PY_LONG_LONG
-PyLong_AsUnsignedLongLongMask(PyObject *vv)
-{
-    register PyLongObject *v;
-    unsigned PY_LONG_LONG x;
-    Py_ssize_t i;
-    int sign;
-
-    if (vv == NULL || !PyLong_Check(vv)) {
-        PyErr_BadInternalCall();
-        return (unsigned long) -1;
-    }
-    v = (PyLongObject *)vv;
-    i = v->ob_size;
-    sign = 1;
-    x = 0;
-    if (i < 0) {
-        sign = -1;
-        i = -i;
-    }
-    while (--i >= 0) {
-        x = (x << PyLong_SHIFT) | v->ob_digit[i];
-    }
-    return x * sign;
-}
-
-/* Get a C long long int from a Python long or Python int object.
-   On overflow, returns -1 and sets *overflow to 1 or -1 depending
-   on the sign of the result.  Otherwise *overflow is 0.
-
-   For other errors (e.g., type error), returns -1 and sets an error
-   condition.
-*/
-
-PY_LONG_LONG
-PyLong_AsLongLongAndOverflow(PyObject *vv, int *overflow)
-{
-    /* This version by Tim Peters */
-    register PyLongObject *v;
-    unsigned PY_LONG_LONG x, prev;
-    PY_LONG_LONG res;
-    Py_ssize_t i;
-    int sign;
-    int do_decref = 0; /* if nb_int was called */
-
-    *overflow = 0;
-    if (vv == NULL) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-
-    if (PyInt_Check(vv))
-        return PyInt_AsLong(vv);
-
-    if (!PyLong_Check(vv)) {
-        PyNumberMethods *nb;
-        nb = vv->ob_type->tp_as_number;
-        if (nb == NULL || nb->nb_int == NULL) {
-            PyErr_SetString(PyExc_TypeError,
-                            "an integer is required");
-            return -1;
-        }
-        vv = (*nb->nb_int) (vv);
-        if (vv == NULL)
-            return -1;
-        do_decref = 1;
-        if(PyInt_Check(vv)) {
-            res = PyInt_AsLong(vv);
-            goto exit;
-        }
-        if (!PyLong_Check(vv)) {
-            Py_DECREF(vv);
-            PyErr_SetString(PyExc_TypeError,
-                            "nb_int should return int object");
-            return -1;
-        }
-    }
-
-    res = -1;
-    v = (PyLongObject *)vv;
-    i = Py_SIZE(v);
-
-    switch (i) {
-    case -1:
-        res = -(sdigit)v->ob_digit[0];
-        break;
-    case 0:
-        res = 0;
-        break;
-    case 1:
-        res = v->ob_digit[0];
-        break;
-    default:
-        sign = 1;
-        x = 0;
-        if (i < 0) {
-            sign = -1;
-            i = -(i);
-        }
-        while (--i >= 0) {
-            prev = x;
-            x = (x << PyLong_SHIFT) + v->ob_digit[i];
-            if ((x >> PyLong_SHIFT) != prev) {
-                *overflow = sign;
-                goto exit;
-            }
-        }
-        /* Haven't lost any bits, but casting to long requires extra
-         * care (see comment above).
-         */
-        if (x <= (unsigned PY_LONG_LONG)PY_LLONG_MAX) {
-            res = (PY_LONG_LONG)x * sign;
-        }
-        else if (sign < 0 && x == PY_ABS_LLONG_MIN) {
-            res = PY_LLONG_MIN;
-        }
-        else {
-            *overflow = sign;
-            /* res is already set to -1 */
-        }
-    }
-  exit:
-    if (do_decref) {
-        Py_DECREF(vv);
-    }
-    return res;
-}
-
-#undef IS_LITTLE_ENDIAN
-
-#endif /* HAVE_LONG_LONG */
-
-
-static int
-convert_binop(PyObject *v, PyObject *w, PyLongObject **a, PyLongObject **b) {
-    if (PyLong_Check(v)) {
-        *a = (PyLongObject *) v;
-        Py_INCREF(v);
-    }
-    else if (PyInt_Check(v)) {
-        *a = (PyLongObject *) PyLong_FromLong(PyInt_AS_LONG(v));
-    }
-    else {
-        return 0;
-    }
-    if (PyLong_Check(w)) {
-        *b = (PyLongObject *) w;
-        Py_INCREF(w);
-    }
-    else if (PyInt_Check(w)) {
-        *b = (PyLongObject *) PyLong_FromLong(PyInt_AS_LONG(w));
-    }
-    else {
-        Py_DECREF(*a);
-        return 0;
-    }
-    return 1;
-}
-
-#define CONVERT_BINOP(v, w, a, b)               \
-    do {                                        \
-        if (!convert_binop(v, w, a, b)) {       \
-            Py_INCREF(Py_NotImplemented);       \
-            return Py_NotImplemented;           \
-        }                                       \
-    } while(0)                                  \
-
-/* bits_in_digit(d) returns the unique integer k such that 2**(k-1) <= d <
-   2**k if d is nonzero, else 0. */
-
-static const unsigned char BitLengthTable[32] = {
-    0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
-    5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
-};
-
-static int
-bits_in_digit(digit d)
-{
-    int d_bits = 0;
-    while (d >= 32) {
-        d_bits += 6;
-        d >>= 6;
-    }
-    d_bits += (int)BitLengthTable[d];
-    return d_bits;
-}
-
-/* x[0:m] and y[0:n] are digit vectors, LSD first, m >= n required.  x[0:n]
- * is modified in place, by adding y to it.  Carries are propagated as far as
- * x[m-1], and the remaining carry (0 or 1) is returned.
- */
-static digit
-v_iadd(digit *x, Py_ssize_t m, digit *y, Py_ssize_t n)
-{
-    Py_ssize_t i;
-    digit carry = 0;
-
-    assert(m >= n);
-    for (i = 0; i < n; ++i) {
-        carry += x[i] + y[i];
-        x[i] = carry & PyLong_MASK;
-        carry >>= PyLong_SHIFT;
-        assert((carry & 1) == carry);
-    }
-    for (; carry && i < m; ++i) {
-        carry += x[i];
-        x[i] = carry & PyLong_MASK;
-        carry >>= PyLong_SHIFT;
-        assert((carry & 1) == carry);
-    }
-    return carry;
-}
-
-/* x[0:m] and y[0:n] are digit vectors, LSD first, m >= n required.  x[0:n]
- * is modified in place, by subtracting y from it.  Borrows are propagated as
- * far as x[m-1], and the remaining borrow (0 or 1) is returned.
- */
-static digit
-v_isub(digit *x, Py_ssize_t m, digit *y, Py_ssize_t n)
-{
-    Py_ssize_t i;
-    digit borrow = 0;
-
-    assert(m >= n);
-    for (i = 0; i < n; ++i) {
-        borrow = x[i] - y[i] - borrow;
-        x[i] = borrow & PyLong_MASK;
-        borrow >>= PyLong_SHIFT;
-        borrow &= 1;            /* keep only 1 sign bit */
-    }
-    for (; borrow && i < m; ++i) {
-        borrow = x[i] - borrow;
-        x[i] = borrow & PyLong_MASK;
-        borrow >>= PyLong_SHIFT;
-        borrow &= 1;
-    }
-    return borrow;
-}
-
-/* Shift digit vector a[0:m] d bits left, with 0 <= d < PyLong_SHIFT.  Put
- * result in z[0:m], and return the d bits shifted out of the top.
- */
-static digit
-v_lshift(digit *z, digit *a, Py_ssize_t m, int d)
-{
-    Py_ssize_t i;
-    digit carry = 0;
-
-    assert(0 <= d && d < PyLong_SHIFT);
-    for (i=0; i < m; i++) {
-        twodigits acc = (twodigits)a[i] << d | carry;
-        z[i] = (digit)acc & PyLong_MASK;
-        carry = (digit)(acc >> PyLong_SHIFT);
-    }
-    return carry;
-}
-
-/* Shift digit vector a[0:m] d bits right, with 0 <= d < PyLong_SHIFT.  Put
- * result in z[0:m], and return the d bits shifted out of the bottom.
- */
-static digit
-v_rshift(digit *z, digit *a, Py_ssize_t m, int d)
-{
-    Py_ssize_t i;
-    digit carry = 0;
-    digit mask = ((digit)1 << d) - 1U;
-
-    assert(0 <= d && d < PyLong_SHIFT);
-    for (i=m; i-- > 0;) {
-        twodigits acc = (twodigits)carry << PyLong_SHIFT | a[i];
-        carry = (digit)acc & mask;
-        z[i] = (digit)(acc >> d);
-    }
-    return carry;
-}
-
-/* Divide long pin, w/ size digits, by non-zero digit n, storing quotient
-   in pout, and returning the remainder.  pin and pout point at the LSD.
-   It's OK for pin == pout on entry, which saves oodles of mallocs/frees in
-   _PyLong_Format, but that should be done with great care since longs are
-   immutable. */
-
-static digit
-inplace_divrem1(digit *pout, digit *pin, Py_ssize_t size, digit n)
-{
-    twodigits rem = 0;
-
-    assert(n > 0 && n <= PyLong_MASK);
-    pin += size;
-    pout += size;
-    while (--size >= 0) {
-        digit hi;
-        rem = (rem << PyLong_SHIFT) | *--pin;
-        *--pout = hi = (digit)(rem / n);
-        rem -= (twodigits)hi * n;
-    }
-    return (digit)rem;
-}
-
-/* Divide a long integer by a digit, returning both the quotient
-   (as function result) and the remainder (through *prem).
-   The sign of a is ignored; n should not be zero. */
-
-static PyLongObject *
-divrem1(PyLongObject *a, digit n, digit *prem)
-{
-    const Py_ssize_t size = ABS(Py_SIZE(a));
-    PyLongObject *z;
-
-    assert(n > 0 && n <= PyLong_MASK);
-    z = _PyLong_New(size);
-    if (z == NULL)
-        return NULL;
-    *prem = inplace_divrem1(z->ob_digit, a->ob_digit, size, n);
-    return long_normalize(z);
-}
-
-/* Convert a long integer to a base 10 string.  Returns a new non-shared
-   string.  (Return value is non-shared so that callers can modify the
-   returned value if necessary.) */
-
-static PyObject *
-long_to_decimal_string(PyObject *aa, int addL)
-{
-    PyLongObject *scratch, *a;
-    PyObject *str;
-    Py_ssize_t size, strlen, size_a, i, j;
-    digit *pout, *pin, rem, tenpow;
-    char *p;
-    int negative;
-
-    a = (PyLongObject *)aa;
-    if (a == NULL || !PyLong_Check(a)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    size_a = ABS(Py_SIZE(a));
-    negative = Py_SIZE(a) < 0;
-
-    /* quick and dirty upper bound for the number of digits
-       required to express a in base _PyLong_DECIMAL_BASE:
-
-         #digits = 1 + floor(log2(a) / log2(_PyLong_DECIMAL_BASE))
-
-       But log2(a) < size_a * PyLong_SHIFT, and
-       log2(_PyLong_DECIMAL_BASE) = log2(10) * _PyLong_DECIMAL_SHIFT
-                                  > 3 * _PyLong_DECIMAL_SHIFT
-    */
-    if (size_a > PY_SSIZE_T_MAX / PyLong_SHIFT) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "long is too large to format");
-        return NULL;
-    }
-    /* the expression size_a * PyLong_SHIFT is now safe from overflow */
-    size = 1 + size_a * PyLong_SHIFT / (3 * _PyLong_DECIMAL_SHIFT);
-    scratch = _PyLong_New(size);
-    if (scratch == NULL)
-        return NULL;
-
-    /* convert array of base _PyLong_BASE digits in pin to an array of
-       base _PyLong_DECIMAL_BASE digits in pout, following Knuth (TAOCP,
-       Volume 2 (3rd edn), section 4.4, Method 1b). */
-    pin = a->ob_digit;
-    pout = scratch->ob_digit;
-    size = 0;
-    for (i = size_a; --i >= 0; ) {
-        digit hi = pin[i];
-        for (j = 0; j < size; j++) {
-            twodigits z = (twodigits)pout[j] << PyLong_SHIFT | hi;
-            hi = (digit)(z / _PyLong_DECIMAL_BASE);
-            pout[j] = (digit)(z - (twodigits)hi *
-                              _PyLong_DECIMAL_BASE);
-        }
-        while (hi) {
-            pout[size++] = hi % _PyLong_DECIMAL_BASE;
-            hi /= _PyLong_DECIMAL_BASE;
-        }
-        /* check for keyboard interrupt */
-        SIGCHECK({
-                Py_DECREF(scratch);
-                return NULL;
-            });
-    }
-    /* pout should have at least one digit, so that the case when a = 0
-       works correctly */
-    if (size == 0)
-        pout[size++] = 0;
-
-    /* calculate exact length of output string, and allocate */
-    strlen = (addL != 0) + negative +
-        1 + (size - 1) * _PyLong_DECIMAL_SHIFT;
-    tenpow = 10;
-    rem = pout[size-1];
-    while (rem >= tenpow) {
-        tenpow *= 10;
-        strlen++;
-    }
-    str = PyString_FromStringAndSize(NULL, strlen);
-    if (str == NULL) {
-        Py_DECREF(scratch);
-        return NULL;
-    }
-
-    /* fill the string right-to-left */
-    p = PyString_AS_STRING(str) + strlen;
-    *p = '\0';
-    if (addL)
-        *--p = 'L';
-    /* pout[0] through pout[size-2] contribute exactly
-       _PyLong_DECIMAL_SHIFT digits each */
-    for (i=0; i < size - 1; i++) {
-        rem = pout[i];
-        for (j = 0; j < _PyLong_DECIMAL_SHIFT; j++) {
-            *--p = '0' + rem % 10;
-            rem /= 10;
-        }
-    }
-    /* pout[size-1]: always produce at least one decimal digit */
-    rem = pout[i];
-    do {
-        *--p = '0' + rem % 10;
-        rem /= 10;
-    } while (rem != 0);
-
-    /* and sign */
-    if (negative)
-        *--p = '-';
-
-    /* check we've counted correctly */
-    assert(p == PyString_AS_STRING(str));
-    Py_DECREF(scratch);
-    return (PyObject *)str;
-}
-
-/* Convert the long to a string object with given base,
-   appending a base prefix of 0[box] if base is 2, 8 or 16.
-   Add a trailing "L" if addL is non-zero.
-   If newstyle is zero, then use the pre-2.6 behavior of octal having
-   a leading "0", instead of the prefix "0o" */
-PyAPI_FUNC(PyObject *)
-_PyLong_Format(PyObject *aa, int base, int addL, int newstyle)
-{
-    register PyLongObject *a = (PyLongObject *)aa;
-    PyStringObject *str;
-    Py_ssize_t i, sz;
-    Py_ssize_t size_a;
-    char *p;
-    int bits;
-    char sign = '\0';
-
-    if (base == 10)
-        return long_to_decimal_string((PyObject *)a, addL);
-
-    if (a == NULL || !PyLong_Check(a)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    assert(base >= 2 && base <= 36);
-    size_a = ABS(Py_SIZE(a));
-
-    /* Compute a rough upper bound for the length of the string */
-    i = base;
-    bits = 0;
-    while (i > 1) {
-        ++bits;
-        i >>= 1;
-    }
-    i = 5 + (addL ? 1 : 0);
-    /* ensure we don't get signed overflow in sz calculation */
-    if (size_a > (PY_SSIZE_T_MAX - i) / PyLong_SHIFT) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "long is too large to format");
-        return NULL;
-    }
-    sz = i + 1 + (size_a * PyLong_SHIFT - 1) / bits;
-    assert(sz >= 0);
-    str = (PyStringObject *) PyString_FromStringAndSize((char *)0, sz);
-    if (str == NULL)
-        return NULL;
-    p = PyString_AS_STRING(str) + sz;
-    *p = '\0';
-    if (addL)
-        *--p = 'L';
-    if (a->ob_size < 0)
-        sign = '-';
-
-    if (a->ob_size == 0) {
-        *--p = '0';
-    }
-    else if ((base & (base - 1)) == 0) {
-        /* JRH: special case for power-of-2 bases */
-        twodigits accum = 0;
-        int accumbits = 0;              /* # of bits in accum */
-        int basebits = 1;               /* # of bits in base-1 */
-        i = base;
-        while ((i >>= 1) > 1)
-            ++basebits;
-
-        for (i = 0; i < size_a; ++i) {
-            accum |= (twodigits)a->ob_digit[i] << accumbits;
-            accumbits += PyLong_SHIFT;
-            assert(accumbits >= basebits);
-            do {
-                char cdigit = (char)(accum & (base - 1));
-                cdigit += (cdigit < 10) ? '0' : 'a'-10;
-                assert(p > PyString_AS_STRING(str));
-                *--p = cdigit;
-                accumbits -= basebits;
-                accum >>= basebits;
-            } while (i < size_a-1 ? accumbits >= basebits : accum > 0);
-        }
-    }
-    else {
-        /* Not 0, and base not a power of 2.  Divide repeatedly by
-           base, but for speed use the highest power of base that
-           fits in a digit. */
-        Py_ssize_t size = size_a;
-        digit *pin = a->ob_digit;
-        PyLongObject *scratch;
-        /* powbasw <- largest power of base that fits in a digit. */
-        digit powbase = base;  /* powbase == base ** power */
-        int power = 1;
-        for (;;) {
-            twodigits newpow = powbase * (twodigits)base;
-            if (newpow >> PyLong_SHIFT)
-                /* doesn't fit in a digit */
-                break;
-            powbase = (digit)newpow;
-            ++power;
-        }
-
-        /* Get a scratch area for repeated division. */
-        scratch = _PyLong_New(size);
-        if (scratch == NULL) {
-            Py_DECREF(str);
-            return NULL;
-        }
-
-        /* Repeatedly divide by powbase. */
-        do {
-            int ntostore = power;
-            digit rem = inplace_divrem1(scratch->ob_digit,
-                                        pin, size, powbase);
-            pin = scratch->ob_digit; /* no need to use a again */
-            if (pin[size - 1] == 0)
-                --size;
-            SIGCHECK({
-                    Py_DECREF(scratch);
-                    Py_DECREF(str);
-                    return NULL;
-                });
-
-            /* Break rem into digits. */
-            assert(ntostore > 0);
-            do {
-                digit nextrem = (digit)(rem / base);
-                char c = (char)(rem - nextrem * base);
-                assert(p > PyString_AS_STRING(str));
-                c += (c < 10) ? '0' : 'a'-10;
-                *--p = c;
-                rem = nextrem;
-                --ntostore;
-                /* Termination is a bit delicate:  must not
-                   store leading zeroes, so must get out if
-                   remaining quotient and rem are both 0. */
-            } while (ntostore && (size || rem));
-        } while (size != 0);
-        Py_DECREF(scratch);
-    }
-
-    if (base == 2) {
-        *--p = 'b';
-        *--p = '0';
-    }
-    else if (base == 8) {
-        if (newstyle) {
-            *--p = 'o';
-            *--p = '0';
-        }
-        else
-            if (size_a != 0)
-                *--p = '0';
-    }
-    else if (base == 16) {
-        *--p = 'x';
-        *--p = '0';
-    }
-    else if (base != 10) {
-        *--p = '#';
-        *--p = '0' + base%10;
-        if (base > 10)
-            *--p = '0' + base/10;
-    }
-    if (sign)
-        *--p = sign;
-    if (p != PyString_AS_STRING(str)) {
-        char *q = PyString_AS_STRING(str);
-        assert(p > q);
-        do {
-        } while ((*q++ = *p++) != '\0');
-        q--;
-        _PyString_Resize((PyObject **)&str,
-                         (Py_ssize_t) (q - PyString_AS_STRING(str)));
-    }
-    return (PyObject *)str;
-}
-
-/* Table of digit values for 8-bit string -> integer conversion.
- * '0' maps to 0, ..., '9' maps to 9.
- * 'a' and 'A' map to 10, ..., 'z' and 'Z' map to 35.
- * All other indices map to 37.
- * Note that when converting a base B string, a char c is a legitimate
- * base B digit iff _PyLong_DigitValue[Py_CHARMASK(c)] < B.
- */
-int _PyLong_DigitValue[256] = {
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  37, 37, 37, 37, 37, 37,
-    37, 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, 37, 37, 37, 37, 37,
-    37, 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, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-    37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
-};
-
-/* *str points to the first digit in a string of base `base` digits.  base
- * is a power of 2 (2, 4, 8, 16, or 32).  *str is set to point to the first
- * non-digit (which may be *str!).  A normalized long is returned.
- * The point to this routine is that it takes time linear in the number of
- * string characters.
- */
-static PyLongObject *
-long_from_binary_base(char **str, int base)
-{
-    char *p = *str;
-    char *start = p;
-    int bits_per_char;
-    Py_ssize_t n;
-    PyLongObject *z;
-    twodigits accum;
-    int bits_in_accum;
-    digit *pdigit;
-
-    assert(base >= 2 && base <= 32 && (base & (base - 1)) == 0);
-    n = base;
-    for (bits_per_char = -1; n; ++bits_per_char)
-        n >>= 1;
-    /* n <- total # of bits needed, while setting p to end-of-string */
-    while (_PyLong_DigitValue[Py_CHARMASK(*p)] < base)
-        ++p;
-    *str = p;
-    /* n <- # of Python digits needed, = ceiling(n/PyLong_SHIFT). */
-    n = (p - start) * bits_per_char + PyLong_SHIFT - 1;
-    if (n / bits_per_char < p - start) {
-        PyErr_SetString(PyExc_ValueError,
-                        "long string too large to convert");
-        return NULL;
-    }
-    n = n / PyLong_SHIFT;
-    z = _PyLong_New(n);
-    if (z == NULL)
-        return NULL;
-    /* Read string from right, and fill in long from left; i.e.,
-     * from least to most significant in both.
-     */
-    accum = 0;
-    bits_in_accum = 0;
-    pdigit = z->ob_digit;
-    while (--p >= start) {
-        int k = _PyLong_DigitValue[Py_CHARMASK(*p)];
-        assert(k >= 0 && k < base);
-        accum |= (twodigits)k << bits_in_accum;
-        bits_in_accum += bits_per_char;
-        if (bits_in_accum >= PyLong_SHIFT) {
-            *pdigit++ = (digit)(accum & PyLong_MASK);
-            assert(pdigit - z->ob_digit <= n);
-            accum >>= PyLong_SHIFT;
-            bits_in_accum -= PyLong_SHIFT;
-            assert(bits_in_accum < PyLong_SHIFT);
-        }
-    }
-    if (bits_in_accum) {
-        assert(bits_in_accum <= PyLong_SHIFT);
-        *pdigit++ = (digit)accum;
-        assert(pdigit - z->ob_digit <= n);
-    }
-    while (pdigit - z->ob_digit < n)
-        *pdigit++ = 0;
-    return long_normalize(z);
-}
-
-PyObject *
-PyLong_FromString(char *str, char **pend, int base)
-{
-    int sign = 1;
-    char *start, *orig_str = str;
-    PyLongObject *z;
-    PyObject *strobj, *strrepr;
-    Py_ssize_t slen;
-
-    if ((base != 0 && base < 2) || base > 36) {
-        PyErr_SetString(PyExc_ValueError,
-                        "long() arg 2 must be >= 2 and <= 36");
-        return NULL;
-    }
-    while (*str != '\0' && isspace(Py_CHARMASK(*str)))
-        str++;
-    if (*str == '+')
-        ++str;
-    else if (*str == '-') {
-        ++str;
-        sign = -1;
-    }
-    while (*str != '\0' && isspace(Py_CHARMASK(*str)))
-        str++;
-    if (base == 0) {
-        /* No base given.  Deduce the base from the contents
-           of the string */
-        if (str[0] != '0')
-            base = 10;
-        else if (str[1] == 'x' || str[1] == 'X')
-            base = 16;
-        else if (str[1] == 'o' || str[1] == 'O')
-            base = 8;
-        else if (str[1] == 'b' || str[1] == 'B')
-            base = 2;
-        else
-            /* "old" (C-style) octal literal, still valid in
-               2.x, although illegal in 3.x */
-            base = 8;
-    }
-    /* Whether or not we were deducing the base, skip leading chars
-       as needed */
-    if (str[0] == '0' &&
-        ((base == 16 && (str[1] == 'x' || str[1] == 'X')) ||
-         (base == 8  && (str[1] == 'o' || str[1] == 'O')) ||
-         (base == 2  && (str[1] == 'b' || str[1] == 'B'))))
-        str += 2;
-
-    start = str;
-    if ((base & (base - 1)) == 0)
-        z = long_from_binary_base(&str, base);
-    else {
-/***
-Binary bases can be converted in time linear in the number of digits, because
-Python's representation base is binary.  Other bases (including decimal!) use
-the simple quadratic-time algorithm below, complicated by some speed tricks.
-
-First some math:  the largest integer that can be expressed in N base-B digits
-is B**N-1.  Consequently, if we have an N-digit input in base B, the worst-
-case number of Python digits needed to hold it is the smallest integer n s.t.
-
-    PyLong_BASE**n-1 >= B**N-1  [or, adding 1 to both sides]
-    PyLong_BASE**n >= B**N      [taking logs to base PyLong_BASE]
-    n >= log(B**N)/log(PyLong_BASE) = N * log(B)/log(PyLong_BASE)
-
-The static array log_base_PyLong_BASE[base] == log(base)/log(PyLong_BASE) so
-we can compute this quickly.  A Python long with that much space is reserved
-near the start, and the result is computed into it.
-
-The input string is actually treated as being in base base**i (i.e., i digits
-are processed at a time), where two more static arrays hold:
-
-    convwidth_base[base] = the largest integer i such that
-                           base**i <= PyLong_BASE
-    convmultmax_base[base] = base ** convwidth_base[base]
-
-The first of these is the largest i such that i consecutive input digits
-must fit in a single Python digit.  The second is effectively the input
-base we're really using.
-
-Viewing the input as a sequence <c0, c1, ..., c_n-1> of digits in base
-convmultmax_base[base], the result is "simply"
-
-   (((c0*B + c1)*B + c2)*B + c3)*B + ... ))) + c_n-1
-
-where B = convmultmax_base[base].
-
-Error analysis:  as above, the number of Python digits `n` needed is worst-
-case
-
-    n >= N * log(B)/log(PyLong_BASE)
-
-where `N` is the number of input digits in base `B`.  This is computed via
-
-    size_z = (Py_ssize_t)((scan - str) * log_base_PyLong_BASE[base]) + 1;
-
-below.  Two numeric concerns are how much space this can waste, and whether
-the computed result can be too small.  To be concrete, assume PyLong_BASE =
-2**15, which is the default (and it's unlikely anyone changes that).
-
-Waste isn't a problem: provided the first input digit isn't 0, the difference
-between the worst-case input with N digits and the smallest input with N
-digits is about a factor of B, but B is small compared to PyLong_BASE so at
-most one allocated Python digit can remain unused on that count.  If
-N*log(B)/log(PyLong_BASE) is mathematically an exact integer, then truncating
-that and adding 1 returns a result 1 larger than necessary.  However, that
-can't happen: whenever B is a power of 2, long_from_binary_base() is called
-instead, and it's impossible for B**i to be an integer power of 2**15 when B
-is not a power of 2 (i.e., it's impossible for N*log(B)/log(PyLong_BASE) to be
-an exact integer when B is not a power of 2, since B**i has a prime factor
-other than 2 in that case, but (2**15)**j's only prime factor is 2).
-
-The computed result can be too small if the true value of
-N*log(B)/log(PyLong_BASE) is a little bit larger than an exact integer, but
-due to roundoff errors (in computing log(B), log(PyLong_BASE), their quotient,
-and/or multiplying that by N) yields a numeric result a little less than that
-integer.  Unfortunately, "how close can a transcendental function get to an
-integer over some range?"  questions are generally theoretically intractable.
-Computer analysis via continued fractions is practical: expand
-log(B)/log(PyLong_BASE) via continued fractions, giving a sequence i/j of "the
-best" rational approximations.  Then j*log(B)/log(PyLong_BASE) is
-approximately equal to (the integer) i.  This shows that we can get very close
-to being in trouble, but very rarely.  For example, 76573 is a denominator in
-one of the continued-fraction approximations to log(10)/log(2**15), and
-indeed:
-
-    >>> log(10)/log(2**15)*76573
-    16958.000000654003
-
-is very close to an integer.  If we were working with IEEE single-precision,
-rounding errors could kill us.  Finding worst cases in IEEE double-precision
-requires better-than-double-precision log() functions, and Tim didn't bother.
-Instead the code checks to see whether the allocated space is enough as each
-new Python digit is added, and copies the whole thing to a larger long if not.
-This should happen extremely rarely, and in fact I don't have a test case
-that triggers it(!).  Instead the code was tested by artificially allocating
-just 1 digit at the start, so that the copying code was exercised for every
-digit beyond the first.
-***/
-        register twodigits c;           /* current input character */
-        Py_ssize_t size_z;
-        int i;
-        int convwidth;
-        twodigits convmultmax, convmult;
-        digit *pz, *pzstop;
-        char* scan;
-
-        static double log_base_PyLong_BASE[37] = {0.0e0,};
-        static int convwidth_base[37] = {0,};
-        static twodigits convmultmax_base[37] = {0,};
-
-        if (log_base_PyLong_BASE[base] == 0.0) {
-            twodigits convmax = base;
-            int i = 1;
-
-            log_base_PyLong_BASE[base] = (log((double)base) /
-                                          log((double)PyLong_BASE));
-            for (;;) {
-                twodigits next = convmax * base;
-                if (next > PyLong_BASE)
-                    break;
-                convmax = next;
-                ++i;
-            }
-            convmultmax_base[base] = convmax;
-            assert(i > 0);
-            convwidth_base[base] = i;
-        }
-
-        /* Find length of the string of numeric characters. */
-        scan = str;
-        while (_PyLong_DigitValue[Py_CHARMASK(*scan)] < base)
-            ++scan;
-
-        /* Create a long object that can contain the largest possible
-         * integer with this base and length.  Note that there's no
-         * need to initialize z->ob_digit -- no slot is read up before
-         * being stored into.
-         */
-        size_z = (Py_ssize_t)((scan - str) * log_base_PyLong_BASE[base]) + 1;
-        /* Uncomment next line to test exceedingly rare copy code */
-        /* size_z = 1; */
-        assert(size_z > 0);
-        z = _PyLong_New(size_z);
-        if (z == NULL)
-            return NULL;
-        Py_SIZE(z) = 0;
-
-        /* `convwidth` consecutive input digits are treated as a single
-         * digit in base `convmultmax`.
-         */
-        convwidth = convwidth_base[base];
-        convmultmax = convmultmax_base[base];
-
-        /* Work ;-) */
-        while (str < scan) {
-            /* grab up to convwidth digits from the input string */
-            c = (digit)_PyLong_DigitValue[Py_CHARMASK(*str++)];
-            for (i = 1; i < convwidth && str != scan; ++i, ++str) {
-                c = (twodigits)(c *  base +
-                                _PyLong_DigitValue[Py_CHARMASK(*str)]);
-                assert(c < PyLong_BASE);
-            }
-
-            convmult = convmultmax;
-            /* Calculate the shift only if we couldn't get
-             * convwidth digits.
-             */
-            if (i != convwidth) {
-                convmult = base;
-                for ( ; i > 1; --i)
-                    convmult *= base;
-            }
-
-            /* Multiply z by convmult, and add c. */
-            pz = z->ob_digit;
-            pzstop = pz + Py_SIZE(z);
-            for (; pz < pzstop; ++pz) {
-                c += (twodigits)*pz * convmult;
-                *pz = (digit)(c & PyLong_MASK);
-                c >>= PyLong_SHIFT;
-            }
-            /* carry off the current end? */
-            if (c) {
-                assert(c < PyLong_BASE);
-                if (Py_SIZE(z) < size_z) {
-                    *pz = (digit)c;
-                    ++Py_SIZE(z);
-                }
-                else {
-                    PyLongObject *tmp;
-                    /* Extremely rare.  Get more space. */
-                    assert(Py_SIZE(z) == size_z);
-                    tmp = _PyLong_New(size_z + 1);
-                    if (tmp == NULL) {
-                        Py_DECREF(z);
-                        return NULL;
-                    }
-                    memcpy(tmp->ob_digit,
-                           z->ob_digit,
-                           sizeof(digit) * size_z);
-                    Py_DECREF(z);
-                    z = tmp;
-                    z->ob_digit[size_z] = (digit)c;
-                    ++size_z;
-                }
-            }
-        }
-    }
-    if (z == NULL)
-        return NULL;
-    if (str == start)
-        goto onError;
-    if (sign < 0)
-        Py_SIZE(z) = -(Py_SIZE(z));
-    if (*str == 'L' || *str == 'l')
-        str++;
-    while (*str && isspace(Py_CHARMASK(*str)))
-        str++;
-    if (*str != '\0')
-        goto onError;
-    if (pend)
-        *pend = str;
-    return (PyObject *) z;
-
-  onError:
-    Py_XDECREF(z);
-    slen = strlen(orig_str) < 200 ? strlen(orig_str) : 200;
-    strobj = PyString_FromStringAndSize(orig_str, slen);
-    if (strobj == NULL)
-        return NULL;
-    strrepr = PyObject_Repr(strobj);
-    Py_DECREF(strobj);
-    if (strrepr == NULL)
-        return NULL;
-    PyErr_Format(PyExc_ValueError,
-                 "invalid literal for long() with base %d: %s",
-                 base, PyString_AS_STRING(strrepr));
-    Py_DECREF(strrepr);
-    return NULL;
-}
-
-#ifdef Py_USING_UNICODE
-PyObject *
-PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base)
-{
-    PyObject *result;
-    char *buffer = (char *)PyMem_MALLOC(length+1);
-
-    if (buffer == NULL)
-        return NULL;
-
-    if (PyUnicode_EncodeDecimal(u, length, buffer, NULL)) {
-        PyMem_FREE(buffer);
-        return NULL;
-    }
-    result = PyLong_FromString(buffer, NULL, base);
-    PyMem_FREE(buffer);
-    return result;
-}
-#endif
-
-/* forward */
-static PyLongObject *x_divrem
-    (PyLongObject *, PyLongObject *, PyLongObject **);
-static PyObject *long_long(PyObject *v);
-
-/* Long division with remainder, top-level routine */
-
-static int
-long_divrem(PyLongObject *a, PyLongObject *b,
-            PyLongObject **pdiv, PyLongObject **prem)
-{
-    Py_ssize_t size_a = ABS(Py_SIZE(a)), size_b = ABS(Py_SIZE(b));
-    PyLongObject *z;
-
-    if (size_b == 0) {
-        PyErr_SetString(PyExc_ZeroDivisionError,
-                        "long division or modulo by zero");
-        return -1;
-    }
-    if (size_a < size_b ||
-        (size_a == size_b &&
-         a->ob_digit[size_a-1] < b->ob_digit[size_b-1])) {
-        /* |a| < |b|. */
-        *pdiv = _PyLong_New(0);
-        if (*pdiv == NULL)
-            return -1;
-        Py_INCREF(a);
-        *prem = (PyLongObject *) a;
-        return 0;
-    }
-    if (size_b == 1) {
-        digit rem = 0;
-        z = divrem1(a, b->ob_digit[0], &rem);
-        if (z == NULL)
-            return -1;
-        *prem = (PyLongObject *) PyLong_FromLong((long)rem);
-        if (*prem == NULL) {
-            Py_DECREF(z);
-            return -1;
-        }
-    }
-    else {
-        z = x_divrem(a, b, prem);
-        if (z == NULL)
-            return -1;
-    }
-    /* Set the signs.
-       The quotient z has the sign of a*b;
-       the remainder r has the sign of a,
-       so a = b*z + r. */
-    if ((a->ob_size < 0) != (b->ob_size < 0))
-        z->ob_size = -(z->ob_size);
-    if (a->ob_size < 0 && (*prem)->ob_size != 0)
-        (*prem)->ob_size = -((*prem)->ob_size);
-    *pdiv = z;
-    return 0;
-}
-
-/* Unsigned long division with remainder -- the algorithm.  The arguments v1
-   and w1 should satisfy 2 <= ABS(Py_SIZE(w1)) <= ABS(Py_SIZE(v1)). */
-
-static PyLongObject *
-x_divrem(PyLongObject *v1, PyLongObject *w1, PyLongObject **prem)
-{
-    PyLongObject *v, *w, *a;
-    Py_ssize_t i, k, size_v, size_w;
-    int d;
-    digit wm1, wm2, carry, q, r, vtop, *v0, *vk, *w0, *ak;
-    twodigits vv;
-    sdigit zhi;
-    stwodigits z;
-
-    /* We follow Knuth [The Art of Computer Programming, Vol. 2 (3rd
-       edn.), section 4.3.1, Algorithm D], except that we don't explicitly
-       handle the special case when the initial estimate q for a quotient
-       digit is >= PyLong_BASE: the max value for q is PyLong_BASE+1, and
-       that won't overflow a digit. */
-
-    /* allocate space; w will also be used to hold the final remainder */
-    size_v = ABS(Py_SIZE(v1));
-    size_w = ABS(Py_SIZE(w1));
-    assert(size_v >= size_w && size_w >= 2); /* Assert checks by div() */
-    v = _PyLong_New(size_v+1);
-    if (v == NULL) {
-        *prem = NULL;
-        return NULL;
-    }
-    w = _PyLong_New(size_w);
-    if (w == NULL) {
-        Py_DECREF(v);
-        *prem = NULL;
-        return NULL;
-    }
-
-    /* normalize: shift w1 left so that its top digit is >= PyLong_BASE/2.
-       shift v1 left by the same amount.  Results go into w and v. */
-    d = PyLong_SHIFT - bits_in_digit(w1->ob_digit[size_w-1]);
-    carry = v_lshift(w->ob_digit, w1->ob_digit, size_w, d);
-    assert(carry == 0);
-    carry = v_lshift(v->ob_digit, v1->ob_digit, size_v, d);
-    if (carry != 0 || v->ob_digit[size_v-1] >= w->ob_digit[size_w-1]) {
-        v->ob_digit[size_v] = carry;
-        size_v++;
-    }
-
-    /* Now v->ob_digit[size_v-1] < w->ob_digit[size_w-1], so quotient has
-       at most (and usually exactly) k = size_v - size_w digits. */
-    k = size_v - size_w;
-    assert(k >= 0);
-    a = _PyLong_New(k);
-    if (a == NULL) {
-        Py_DECREF(w);
-        Py_DECREF(v);
-        *prem = NULL;
-        return NULL;
-    }
-    v0 = v->ob_digit;
-    w0 = w->ob_digit;
-    wm1 = w0[size_w-1];
-    wm2 = w0[size_w-2];
-    for (vk = v0+k, ak = a->ob_digit + k; vk-- > v0;) {
-        /* inner loop: divide vk[0:size_w+1] by w0[0:size_w], giving
-           single-digit quotient q, remainder in vk[0:size_w]. */
-
-        SIGCHECK({
-                Py_DECREF(a);
-                Py_DECREF(w);
-                Py_DECREF(v);
-                *prem = NULL;
-                return NULL;
-            });
-
-        /* estimate quotient digit q; may overestimate by 1 (rare) */
-        vtop = vk[size_w];
-        assert(vtop <= wm1);
-        vv = ((twodigits)vtop << PyLong_SHIFT) | vk[size_w-1];
-        q = (digit)(vv / wm1);
-        r = (digit)(vv - (twodigits)wm1 * q); /* r = vv % wm1 */
-        while ((twodigits)wm2 * q > (((twodigits)r << PyLong_SHIFT)
-                                     | vk[size_w-2])) {
-            --q;
-            r += wm1;
-            if (r >= PyLong_BASE)
-                break;
-        }
-        assert(q <= PyLong_BASE);
-
-        /* subtract q*w0[0:size_w] from vk[0:size_w+1] */
-        zhi = 0;
-        for (i = 0; i < size_w; ++i) {
-            /* invariants: -PyLong_BASE <= -q <= zhi <= 0;
-               -PyLong_BASE * q <= z < PyLong_BASE */
-            z = (sdigit)vk[i] + zhi -
-                (stwodigits)q * (stwodigits)w0[i];
-            vk[i] = (digit)z & PyLong_MASK;
-            zhi = (sdigit)Py_ARITHMETIC_RIGHT_SHIFT(stwodigits,
-                                                    z, PyLong_SHIFT);
-        }
-
-        /* add w back if q was too large (this branch taken rarely) */
-        assert((sdigit)vtop + zhi == -1 || (sdigit)vtop + zhi == 0);
-        if ((sdigit)vtop + zhi < 0) {
-            carry = 0;
-            for (i = 0; i < size_w; ++i) {
-                carry += vk[i] + w0[i];
-                vk[i] = carry & PyLong_MASK;
-                carry >>= PyLong_SHIFT;
-            }
-            --q;
-        }
-
-        /* store quotient digit */
-        assert(q < PyLong_BASE);
-        *--ak = q;
-    }
-
-    /* unshift remainder; we reuse w to store the result */
-    carry = v_rshift(w0, v0, size_w, d);
-    assert(carry==0);
-    Py_DECREF(v);
-
-    *prem = long_normalize(w);
-    return long_normalize(a);
-}
-
-/* For a nonzero PyLong a, express a in the form x * 2**e, with 0.5 <=
-   abs(x) < 1.0 and e >= 0; return x and put e in *e.  Here x is
-   rounded to DBL_MANT_DIG significant bits using round-half-to-even.
-   If a == 0, return 0.0 and set *e = 0.  If the resulting exponent
-   e is larger than PY_SSIZE_T_MAX, raise OverflowError and return
-   -1.0. */
-
-/* attempt to define 2.0**DBL_MANT_DIG as a compile-time constant */
-#if DBL_MANT_DIG == 53
-#define EXP2_DBL_MANT_DIG 9007199254740992.0
-#else
-#define EXP2_DBL_MANT_DIG (ldexp(1.0, DBL_MANT_DIG))
-#endif
-
-double
-_PyLong_Frexp(PyLongObject *a, Py_ssize_t *e)
-{
-    Py_ssize_t a_size, a_bits, shift_digits, shift_bits, x_size;
-    /* See below for why x_digits is always large enough. */
-    digit rem, x_digits[2 + (DBL_MANT_DIG + 1) / PyLong_SHIFT];
-    double dx;
-    /* Correction term for round-half-to-even rounding.  For a digit x,
-       "x + half_even_correction[x & 7]" gives x rounded to the nearest
-       multiple of 4, rounding ties to a multiple of 8. */
-    static const int half_even_correction[8] = {0, -1, -2, 1, 0, -1, 2, 1};
-
-    a_size = ABS(Py_SIZE(a));
-    if (a_size == 0) {
-        /* Special case for 0: significand 0.0, exponent 0. */
-        *e = 0;
-        return 0.0;
-    }
-    a_bits = bits_in_digit(a->ob_digit[a_size-1]);
-    /* The following is an overflow-free version of the check
-       "if ((a_size - 1) * PyLong_SHIFT + a_bits > PY_SSIZE_T_MAX) ..." */
-    if (a_size >= (PY_SSIZE_T_MAX - 1) / PyLong_SHIFT + 1 &&
-        (a_size > (PY_SSIZE_T_MAX - 1) / PyLong_SHIFT + 1 ||
-         a_bits > (PY_SSIZE_T_MAX - 1) % PyLong_SHIFT + 1))
-        goto overflow;
-    a_bits = (a_size - 1) * PyLong_SHIFT + a_bits;
-
-    /* Shift the first DBL_MANT_DIG + 2 bits of a into x_digits[0:x_size]
-       (shifting left if a_bits <= DBL_MANT_DIG + 2).
-
-       Number of digits needed for result: write // for floor division.
-       Then if shifting left, we end up using
-
-         1 + a_size + (DBL_MANT_DIG + 2 - a_bits) // PyLong_SHIFT
-
-       digits.  If shifting right, we use
-
-         a_size - (a_bits - DBL_MANT_DIG - 2) // PyLong_SHIFT
-
-       digits.  Using a_size = 1 + (a_bits - 1) // PyLong_SHIFT along with
-       the inequalities
-
-         m // PyLong_SHIFT + n // PyLong_SHIFT <= (m + n) // PyLong_SHIFT
-         m // PyLong_SHIFT - n // PyLong_SHIFT <=
-                                          1 + (m - n - 1) // PyLong_SHIFT,
-
-       valid for any integers m and n, we find that x_size satisfies
-
-         x_size <= 2 + (DBL_MANT_DIG + 1) // PyLong_SHIFT
-
-       in both cases.
-    */
-    if (a_bits <= DBL_MANT_DIG + 2) {
-        shift_digits = (DBL_MANT_DIG + 2 - a_bits) / PyLong_SHIFT;
-        shift_bits = (DBL_MANT_DIG + 2 - a_bits) % PyLong_SHIFT;
-        x_size = 0;
-        while (x_size < shift_digits)
-            x_digits[x_size++] = 0;
-        rem = v_lshift(x_digits + x_size, a->ob_digit, a_size,
-                       (int)shift_bits);
-        x_size += a_size;
-        x_digits[x_size++] = rem;
-    }
-    else {
-        shift_digits = (a_bits - DBL_MANT_DIG - 2) / PyLong_SHIFT;
-        shift_bits = (a_bits - DBL_MANT_DIG - 2) % PyLong_SHIFT;
-        rem = v_rshift(x_digits, a->ob_digit + shift_digits,
-                       a_size - shift_digits, (int)shift_bits);
-        x_size = a_size - shift_digits;
-        /* For correct rounding below, we need the least significant
-           bit of x to be 'sticky' for this shift: if any of the bits
-           shifted out was nonzero, we set the least significant bit
-           of x. */
-        if (rem)
-            x_digits[0] |= 1;
-        else
-            while (shift_digits > 0)
-                if (a->ob_digit[--shift_digits]) {
-                    x_digits[0] |= 1;
-                    break;
-                }
-    }
-    assert(1 <= x_size &&
-           x_size <= (Py_ssize_t)(sizeof(x_digits)/sizeof(digit)));
-
-    /* Round, and convert to double. */
-    x_digits[0] += half_even_correction[x_digits[0] & 7];
-    dx = x_digits[--x_size];
-    while (x_size > 0)
-        dx = dx * PyLong_BASE + x_digits[--x_size];
-
-    /* Rescale;  make correction if result is 1.0. */
-    dx /= 4.0 * EXP2_DBL_MANT_DIG;
-    if (dx == 1.0) {
-        if (a_bits == PY_SSIZE_T_MAX)
-            goto overflow;
-        dx = 0.5;
-        a_bits += 1;
-    }
-
-    *e = a_bits;
-    return Py_SIZE(a) < 0 ? -dx : dx;
-
-  overflow:
-    /* exponent > PY_SSIZE_T_MAX */
-    PyErr_SetString(PyExc_OverflowError,
-                    "huge integer: number of bits overflows a Py_ssize_t");
-    *e = 0;
-    return -1.0;
-}
-
-/* Get a C double from a long int object.  Rounds to the nearest double,
-   using the round-half-to-even rule in the case of a tie. */
-
-double
-PyLong_AsDouble(PyObject *v)
-{
-    Py_ssize_t exponent;
-    double x;
-
-    if (v == NULL || !PyLong_Check(v)) {
-        PyErr_BadInternalCall();
-        return -1.0;
-    }
-    x = _PyLong_Frexp((PyLongObject *)v, &exponent);
-    if ((x == -1.0 && PyErr_Occurred()) || exponent > DBL_MAX_EXP) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "long int too large to convert to float");
-        return -1.0;
-    }
-    return ldexp(x, (int)exponent);
-}
-
-/* Methods */
-
-static void
-long_dealloc(PyObject *v)
-{
-    Py_TYPE(v)->tp_free(v);
-}
-
-static PyObject *
-long_repr(PyObject *v)
-{
-    return _PyLong_Format(v, 10, 1, 0);
-}
-
-static PyObject *
-long_str(PyObject *v)
-{
-    return _PyLong_Format(v, 10, 0, 0);
-}
-
-static int
-long_compare(PyLongObject *a, PyLongObject *b)
-{
-    Py_ssize_t sign;
-
-    if (Py_SIZE(a) != Py_SIZE(b)) {
-        sign = Py_SIZE(a) - Py_SIZE(b);
-    }
-    else {
-        Py_ssize_t i = ABS(Py_SIZE(a));
-        while (--i >= 0 && a->ob_digit[i] == b->ob_digit[i])
-            ;
-        if (i < 0)
-            sign = 0;
-        else {
-            sign = (sdigit)a->ob_digit[i] - (sdigit)b->ob_digit[i];
-            if (Py_SIZE(a) < 0)
-                sign = -sign;
-        }
-    }
-    return sign < 0 ? -1 : sign > 0 ? 1 : 0;
-}
-
-static long
-long_hash(PyLongObject *v)
-{
-    unsigned long x;
-    Py_ssize_t i;
-    int sign;
-
-    /* This is designed so that Python ints and longs with the
-       same value hash to the same value, otherwise comparisons
-       of mapping keys will turn out weird */
-    i = v->ob_size;
-    sign = 1;
-    x = 0;
-    if (i < 0) {
-        sign = -1;
-        i = -(i);
-    }
-    /* The following loop produces a C unsigned long x such that x is
-       congruent to the absolute value of v modulo ULONG_MAX.  The
-       resulting x is nonzero if and only if v is. */
-    while (--i >= 0) {
-        /* Force a native long #-bits (32 or 64) circular shift */
-        x = (x >> (8*SIZEOF_LONG-PyLong_SHIFT)) | (x << PyLong_SHIFT);
-        x += v->ob_digit[i];
-        /* If the addition above overflowed we compensate by
-           incrementing.  This preserves the value modulo
-           ULONG_MAX. */
-        if (x < v->ob_digit[i])
-            x++;
-    }
-    x = x * sign;
-    if (x == (unsigned long)-1)
-        x = (unsigned long)-2;
-    return (long)x;
-}
-
-
-/* Add the absolute values of two long integers. */
-
-static PyLongObject *
-x_add(PyLongObject *a, PyLongObject *b)
-{
-    Py_ssize_t size_a = ABS(Py_SIZE(a)), size_b = ABS(Py_SIZE(b));
-    PyLongObject *z;
-    Py_ssize_t i;
-    digit carry = 0;
-
-    /* Ensure a is the larger of the two: */
-    if (size_a < size_b) {
-        { PyLongObject *temp = a; a = b; b = temp; }
-        { Py_ssize_t size_temp = size_a;
-            size_a = size_b;
-            size_b = size_temp; }
-    }
-    z = _PyLong_New(size_a+1);
-    if (z == NULL)
-        return NULL;
-    for (i = 0; i < size_b; ++i) {
-        carry += a->ob_digit[i] + b->ob_digit[i];
-        z->ob_digit[i] = carry & PyLong_MASK;
-        carry >>= PyLong_SHIFT;
-    }
-    for (; i < size_a; ++i) {
-        carry += a->ob_digit[i];
-        z->ob_digit[i] = carry & PyLong_MASK;
-        carry >>= PyLong_SHIFT;
-    }
-    z->ob_digit[i] = carry;
-    return long_normalize(z);
-}
-
-/* Subtract the absolute values of two integers. */
-
-static PyLongObject *
-x_sub(PyLongObject *a, PyLongObject *b)
-{
-    Py_ssize_t size_a = ABS(Py_SIZE(a)), size_b = ABS(Py_SIZE(b));
-    PyLongObject *z;
-    Py_ssize_t i;
-    int sign = 1;
-    digit borrow = 0;
-
-    /* Ensure a is the larger of the two: */
-    if (size_a < size_b) {
-        sign = -1;
-        { PyLongObject *temp = a; a = b; b = temp; }
-        { Py_ssize_t size_temp = size_a;
-            size_a = size_b;
-            size_b = size_temp; }
-    }
-    else if (size_a == size_b) {
-        /* Find highest digit where a and b differ: */
-        i = size_a;
-        while (--i >= 0 && a->ob_digit[i] == b->ob_digit[i])
-            ;
-        if (i < 0)
-            return _PyLong_New(0);
-        if (a->ob_digit[i] < b->ob_digit[i]) {
-            sign = -1;
-            { PyLongObject *temp = a; a = b; b = temp; }
-        }
-        size_a = size_b = i+1;
-    }
-    z = _PyLong_New(size_a);
-    if (z == NULL)
-        return NULL;
-    for (i = 0; i < size_b; ++i) {
-        /* The following assumes unsigned arithmetic
-           works module 2**N for some N>PyLong_SHIFT. */
-        borrow = a->ob_digit[i] - b->ob_digit[i] - borrow;
-        z->ob_digit[i] = borrow & PyLong_MASK;
-        borrow >>= PyLong_SHIFT;
-        borrow &= 1; /* Keep only one sign bit */
-    }
-    for (; i < size_a; ++i) {
-        borrow = a->ob_digit[i] - borrow;
-        z->ob_digit[i] = borrow & PyLong_MASK;
-        borrow >>= PyLong_SHIFT;
-        borrow &= 1; /* Keep only one sign bit */
-    }
-    assert(borrow == 0);
-    if (sign < 0)
-        z->ob_size = -(z->ob_size);
-    return long_normalize(z);
-}
-
-static PyObject *
-long_add(PyLongObject *v, PyLongObject *w)
-{
-    PyLongObject *a, *b, *z;
-
-    CONVERT_BINOP((PyObject *)v, (PyObject *)w, &a, &b);
-
-    if (a->ob_size < 0) {
-        if (b->ob_size < 0) {
-            z = x_add(a, b);
-            if (z != NULL && z->ob_size != 0)
-                z->ob_size = -(z->ob_size);
-        }
-        else
-            z = x_sub(b, a);
-    }
-    else {
-        if (b->ob_size < 0)
-            z = x_sub(a, b);
-        else
-            z = x_add(a, b);
-    }
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *)z;
-}
-
-static PyObject *
-long_sub(PyLongObject *v, PyLongObject *w)
-{
-    PyLongObject *a, *b, *z;
-
-    CONVERT_BINOP((PyObject *)v, (PyObject *)w, &a, &b);
-
-    if (a->ob_size < 0) {
-        if (b->ob_size < 0)
-            z = x_sub(a, b);
-        else
-            z = x_add(a, b);
-        if (z != NULL && z->ob_size != 0)
-            z->ob_size = -(z->ob_size);
-    }
-    else {
-        if (b->ob_size < 0)
-            z = x_add(a, b);
-        else
-            z = x_sub(a, b);
-    }
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *)z;
-}
-
-/* Grade school multiplication, ignoring the signs.
- * Returns the absolute value of the product, or NULL if error.
- */
-static PyLongObject *
-x_mul(PyLongObject *a, PyLongObject *b)
-{
-    PyLongObject *z;
-    Py_ssize_t size_a = ABS(Py_SIZE(a));
-    Py_ssize_t size_b = ABS(Py_SIZE(b));
-    Py_ssize_t i;
-
-    z = _PyLong_New(size_a + size_b);
-    if (z == NULL)
-        return NULL;
-
-    memset(z->ob_digit, 0, Py_SIZE(z) * sizeof(digit));
-    if (a == b) {
-        /* Efficient squaring per HAC, Algorithm 14.16:
-         * http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf
-         * Gives slightly less than a 2x speedup when a == b,
-         * via exploiting that each entry in the multiplication
-         * pyramid appears twice (except for the size_a squares).
-         */
-        for (i = 0; i < size_a; ++i) {
-            twodigits carry;
-            twodigits f = a->ob_digit[i];
-            digit *pz = z->ob_digit + (i << 1);
-            digit *pa = a->ob_digit + i + 1;
-            digit *paend = a->ob_digit + size_a;
-
-            SIGCHECK({
-                    Py_DECREF(z);
-                    return NULL;
-                });
-
-            carry = *pz + f * f;
-            *pz++ = (digit)(carry & PyLong_MASK);
-            carry >>= PyLong_SHIFT;
-            assert(carry <= PyLong_MASK);
-
-            /* Now f is added in twice in each column of the
-             * pyramid it appears.  Same as adding f<<1 once.
-             */
-            f <<= 1;
-            while (pa < paend) {
-                carry += *pz + *pa++ * f;
-                *pz++ = (digit)(carry & PyLong_MASK);
-                carry >>= PyLong_SHIFT;
-                assert(carry <= (PyLong_MASK << 1));
-            }
-            if (carry) {
-                carry += *pz;
-                *pz++ = (digit)(carry & PyLong_MASK);
-                carry >>= PyLong_SHIFT;
-            }
-            if (carry)
-                *pz += (digit)(carry & PyLong_MASK);
-            assert((carry >> PyLong_SHIFT) == 0);
-        }
-    }
-    else {      /* a is not the same as b -- gradeschool long mult */
-        for (i = 0; i < size_a; ++i) {
-            twodigits carry = 0;
-            twodigits f = a->ob_digit[i];
-            digit *pz = z->ob_digit + i;
-            digit *pb = b->ob_digit;
-            digit *pbend = b->ob_digit + size_b;
-
-            SIGCHECK({
-                    Py_DECREF(z);
-                    return NULL;
-                });
-
-            while (pb < pbend) {
-                carry += *pz + *pb++ * f;
-                *pz++ = (digit)(carry & PyLong_MASK);
-                carry >>= PyLong_SHIFT;
-                assert(carry <= PyLong_MASK);
-            }
-            if (carry)
-                *pz += (digit)(carry & PyLong_MASK);
-            assert((carry >> PyLong_SHIFT) == 0);
-        }
-    }
-    return long_normalize(z);
-}
-
-/* A helper for Karatsuba multiplication (k_mul).
-   Takes a long "n" and an integer "size" representing the place to
-   split, and sets low and high such that abs(n) == (high << size) + low,
-   viewing the shift as being by digits.  The sign bit is ignored, and
-   the return values are >= 0.
-   Returns 0 on success, -1 on failure.
-*/
-static int
-kmul_split(PyLongObject *n,
-           Py_ssize_t size,
-           PyLongObject **high,
-           PyLongObject **low)
-{
-    PyLongObject *hi, *lo;
-    Py_ssize_t size_lo, size_hi;
-    const Py_ssize_t size_n = ABS(Py_SIZE(n));
-
-    size_lo = MIN(size_n, size);
-    size_hi = size_n - size_lo;
-
-    if ((hi = _PyLong_New(size_hi)) == NULL)
-        return -1;
-    if ((lo = _PyLong_New(size_lo)) == NULL) {
-        Py_DECREF(hi);
-        return -1;
-    }
-
-    memcpy(lo->ob_digit, n->ob_digit, size_lo * sizeof(digit));
-    memcpy(hi->ob_digit, n->ob_digit + size_lo, size_hi * sizeof(digit));
-
-    *high = long_normalize(hi);
-    *low = long_normalize(lo);
-    return 0;
-}
-
-static PyLongObject *k_lopsided_mul(PyLongObject *a, PyLongObject *b);
-
-/* Karatsuba multiplication.  Ignores the input signs, and returns the
- * absolute value of the product (or NULL if error).
- * See Knuth Vol. 2 Chapter 4.3.3 (Pp. 294-295).
- */
-static PyLongObject *
-k_mul(PyLongObject *a, PyLongObject *b)
-{
-    Py_ssize_t asize = ABS(Py_SIZE(a));
-    Py_ssize_t bsize = ABS(Py_SIZE(b));
-    PyLongObject *ah = NULL;
-    PyLongObject *al = NULL;
-    PyLongObject *bh = NULL;
-    PyLongObject *bl = NULL;
-    PyLongObject *ret = NULL;
-    PyLongObject *t1, *t2, *t3;
-    Py_ssize_t shift;           /* the number of digits we split off */
-    Py_ssize_t i;
-
-    /* (ah*X+al)(bh*X+bl) = ah*bh*X*X + (ah*bl + al*bh)*X + al*bl
-     * Let k = (ah+al)*(bh+bl) = ah*bl + al*bh  + ah*bh + al*bl
-     * Then the original product is
-     *     ah*bh*X*X + (k - ah*bh - al*bl)*X + al*bl
-     * By picking X to be a power of 2, "*X" is just shifting, and it's
-     * been reduced to 3 multiplies on numbers half the size.
-     */
-
-    /* We want to split based on the larger number; fiddle so that b
-     * is largest.
-     */
-    if (asize > bsize) {
-        t1 = a;
-        a = b;
-        b = t1;
-
-        i = asize;
-        asize = bsize;
-        bsize = i;
-    }
-
-    /* Use gradeschool math when either number is too small. */
-    i = a == b ? KARATSUBA_SQUARE_CUTOFF : KARATSUBA_CUTOFF;
-    if (asize <= i) {
-        if (asize == 0)
-            return _PyLong_New(0);
-        else
-            return x_mul(a, b);
-    }
-
-    /* If a is small compared to b, splitting on b gives a degenerate
-     * case with ah==0, and Karatsuba may be (even much) less efficient
-     * than "grade school" then.  However, we can still win, by viewing
-     * b as a string of "big digits", each of width a->ob_size.  That
-     * leads to a sequence of balanced calls to k_mul.
-     */
-    if (2 * asize <= bsize)
-        return k_lopsided_mul(a, b);
-
-    /* Split a & b into hi & lo pieces. */
-    shift = bsize >> 1;
-    if (kmul_split(a, shift, &ah, &al) < 0) goto fail;
-    assert(Py_SIZE(ah) > 0);            /* the split isn't degenerate */
-
-    if (a == b) {
-        bh = ah;
-        bl = al;
-        Py_INCREF(bh);
-        Py_INCREF(bl);
-    }
-    else if (kmul_split(b, shift, &bh, &bl) < 0) goto fail;
-
-    /* The plan:
-     * 1. Allocate result space (asize + bsize digits:  that's always
-     *    enough).
-     * 2. Compute ah*bh, and copy into result at 2*shift.
-     * 3. Compute al*bl, and copy into result at 0.  Note that this
-     *    can't overlap with #2.
-     * 4. Subtract al*bl from the result, starting at shift.  This may
-     *    underflow (borrow out of the high digit), but we don't care:
-     *    we're effectively doing unsigned arithmetic mod
-     *    PyLong_BASE**(sizea + sizeb), and so long as the *final* result fits,
-     *    borrows and carries out of the high digit can be ignored.
-     * 5. Subtract ah*bh from the result, starting at shift.
-     * 6. Compute (ah+al)*(bh+bl), and add it into the result starting
-     *    at shift.
-     */
-
-    /* 1. Allocate result space. */
-    ret = _PyLong_New(asize + bsize);
-    if (ret == NULL) goto fail;
-#ifdef Py_DEBUG
-    /* Fill with trash, to catch reference to uninitialized digits. */
-    memset(ret->ob_digit, 0xDF, Py_SIZE(ret) * sizeof(digit));
-#endif
-
-    /* 2. t1 <- ah*bh, and copy into high digits of result. */
-    if ((t1 = k_mul(ah, bh)) == NULL) goto fail;
-    assert(Py_SIZE(t1) >= 0);
-    assert(2*shift + Py_SIZE(t1) <= Py_SIZE(ret));
-    memcpy(ret->ob_digit + 2*shift, t1->ob_digit,
-           Py_SIZE(t1) * sizeof(digit));
-
-    /* Zero-out the digits higher than the ah*bh copy. */
-    i = Py_SIZE(ret) - 2*shift - Py_SIZE(t1);
-    if (i)
-        memset(ret->ob_digit + 2*shift + Py_SIZE(t1), 0,
-               i * sizeof(digit));
-
-    /* 3. t2 <- al*bl, and copy into the low digits. */
-    if ((t2 = k_mul(al, bl)) == NULL) {
-        Py_DECREF(t1);
-        goto fail;
-    }
-    assert(Py_SIZE(t2) >= 0);
-    assert(Py_SIZE(t2) <= 2*shift); /* no overlap with high digits */
-    memcpy(ret->ob_digit, t2->ob_digit, Py_SIZE(t2) * sizeof(digit));
-
-    /* Zero out remaining digits. */
-    i = 2*shift - Py_SIZE(t2);          /* number of uninitialized digits */
-    if (i)
-        memset(ret->ob_digit + Py_SIZE(t2), 0, i * sizeof(digit));
-
-    /* 4 & 5. Subtract ah*bh (t1) and al*bl (t2).  We do al*bl first
-     * because it's fresher in cache.
-     */
-    i = Py_SIZE(ret) - shift;  /* # digits after shift */
-    (void)v_isub(ret->ob_digit + shift, i, t2->ob_digit, Py_SIZE(t2));
-    Py_DECREF(t2);
-
-    (void)v_isub(ret->ob_digit + shift, i, t1->ob_digit, Py_SIZE(t1));
-    Py_DECREF(t1);
-
-    /* 6. t3 <- (ah+al)(bh+bl), and add into result. */
-    if ((t1 = x_add(ah, al)) == NULL) goto fail;
-    Py_DECREF(ah);
-    Py_DECREF(al);
-    ah = al = NULL;
-
-    if (a == b) {
-        t2 = t1;
-        Py_INCREF(t2);
-    }
-    else if ((t2 = x_add(bh, bl)) == NULL) {
-        Py_DECREF(t1);
-        goto fail;
-    }
-    Py_DECREF(bh);
-    Py_DECREF(bl);
-    bh = bl = NULL;
-
-    t3 = k_mul(t1, t2);
-    Py_DECREF(t1);
-    Py_DECREF(t2);
-    if (t3 == NULL) goto fail;
-    assert(Py_SIZE(t3) >= 0);
-
-    /* Add t3.  It's not obvious why we can't run out of room here.
-     * See the (*) comment after this function.
-     */
-    (void)v_iadd(ret->ob_digit + shift, i, t3->ob_digit, Py_SIZE(t3));
-    Py_DECREF(t3);
-
-    return long_normalize(ret);
-
-  fail:
-    Py_XDECREF(ret);
-    Py_XDECREF(ah);
-    Py_XDECREF(al);
-    Py_XDECREF(bh);
-    Py_XDECREF(bl);
-    return NULL;
-}
-
-/* (*) Why adding t3 can't "run out of room" above.
-
-Let f(x) mean the floor of x and c(x) mean the ceiling of x.  Some facts
-to start with:
-
-1. For any integer i, i = c(i/2) + f(i/2).  In particular,
-   bsize = c(bsize/2) + f(bsize/2).
-2. shift = f(bsize/2)
-3. asize <= bsize
-4. Since we call k_lopsided_mul if asize*2 <= bsize, asize*2 > bsize in this
-   routine, so asize > bsize/2 >= f(bsize/2) in this routine.
-
-We allocated asize + bsize result digits, and add t3 into them at an offset
-of shift.  This leaves asize+bsize-shift allocated digit positions for t3
-to fit into, = (by #1 and #2) asize + f(bsize/2) + c(bsize/2) - f(bsize/2) =
-asize + c(bsize/2) available digit positions.
-
-bh has c(bsize/2) digits, and bl at most f(size/2) digits.  So bh+hl has
-at most c(bsize/2) digits + 1 bit.
-
-If asize == bsize, ah has c(bsize/2) digits, else ah has at most f(bsize/2)
-digits, and al has at most f(bsize/2) digits in any case.  So ah+al has at
-most (asize == bsize ? c(bsize/2) : f(bsize/2)) digits + 1 bit.
-
-The product (ah+al)*(bh+bl) therefore has at most
-
-    c(bsize/2) + (asize == bsize ? c(bsize/2) : f(bsize/2)) digits + 2 bits
-
-and we have asize + c(bsize/2) available digit positions.  We need to show
-this is always enough.  An instance of c(bsize/2) cancels out in both, so
-the question reduces to whether asize digits is enough to hold
-(asize == bsize ? c(bsize/2) : f(bsize/2)) digits + 2 bits.  If asize < bsize,
-then we're asking whether asize digits >= f(bsize/2) digits + 2 bits.  By #4,
-asize is at least f(bsize/2)+1 digits, so this in turn reduces to whether 1
-digit is enough to hold 2 bits.  This is so since PyLong_SHIFT=15 >= 2.  If
-asize == bsize, then we're asking whether bsize digits is enough to hold
-c(bsize/2) digits + 2 bits, or equivalently (by #1) whether f(bsize/2) digits
-is enough to hold 2 bits.  This is so if bsize >= 2, which holds because
-bsize >= KARATSUBA_CUTOFF >= 2.
-
-Note that since there's always enough room for (ah+al)*(bh+bl), and that's
-clearly >= each of ah*bh and al*bl, there's always enough room to subtract
-ah*bh and al*bl too.
-*/
-
-/* b has at least twice the digits of a, and a is big enough that Karatsuba
- * would pay off *if* the inputs had balanced sizes.  View b as a sequence
- * of slices, each with a->ob_size digits, and multiply the slices by a,
- * one at a time.  This gives k_mul balanced inputs to work with, and is
- * also cache-friendly (we compute one double-width slice of the result
- * at a time, then move on, never backtracking except for the helpful
- * single-width slice overlap between successive partial sums).
- */
-static PyLongObject *
-k_lopsided_mul(PyLongObject *a, PyLongObject *b)
-{
-    const Py_ssize_t asize = ABS(Py_SIZE(a));
-    Py_ssize_t bsize = ABS(Py_SIZE(b));
-    Py_ssize_t nbdone;          /* # of b digits already multiplied */
-    PyLongObject *ret;
-    PyLongObject *bslice = NULL;
-
-    assert(asize > KARATSUBA_CUTOFF);
-    assert(2 * asize <= bsize);
-
-    /* Allocate result space, and zero it out. */
-    ret = _PyLong_New(asize + bsize);
-    if (ret == NULL)
-        return NULL;
-    memset(ret->ob_digit, 0, Py_SIZE(ret) * sizeof(digit));
-
-    /* Successive slices of b are copied into bslice. */
-    bslice = _PyLong_New(asize);
-    if (bslice == NULL)
-        goto fail;
-
-    nbdone = 0;
-    while (bsize > 0) {
-        PyLongObject *product;
-        const Py_ssize_t nbtouse = MIN(bsize, asize);
-
-        /* Multiply the next slice of b by a. */
-        memcpy(bslice->ob_digit, b->ob_digit + nbdone,
-               nbtouse * sizeof(digit));
-        Py_SIZE(bslice) = nbtouse;
-        product = k_mul(a, bslice);
-        if (product == NULL)
-            goto fail;
-
-        /* Add into result. */
-        (void)v_iadd(ret->ob_digit + nbdone, Py_SIZE(ret) - nbdone,
-                     product->ob_digit, Py_SIZE(product));
-        Py_DECREF(product);
-
-        bsize -= nbtouse;
-        nbdone += nbtouse;
-    }
-
-    Py_DECREF(bslice);
-    return long_normalize(ret);
-
-  fail:
-    Py_DECREF(ret);
-    Py_XDECREF(bslice);
-    return NULL;
-}
-
-static PyObject *
-long_mul(PyLongObject *v, PyLongObject *w)
-{
-    PyLongObject *a, *b, *z;
-
-    if (!convert_binop((PyObject *)v, (PyObject *)w, &a, &b)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-
-    z = k_mul(a, b);
-    /* Negate if exactly one of the inputs is negative. */
-    if (((a->ob_size ^ b->ob_size) < 0) && z)
-        z->ob_size = -(z->ob_size);
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *)z;
-}
-
-/* The / and % operators are now defined in terms of divmod().
-   The expression a mod b has the value a - b*floor(a/b).
-   The long_divrem function gives the remainder after division of
-   |a| by |b|, with the sign of a.  This is also expressed
-   as a - b*trunc(a/b), if trunc truncates towards zero.
-   Some examples:
-     a           b      a rem b         a mod b
-     13          10      3               3
-    -13          10     -3               7
-     13         -10      3              -7
-    -13         -10     -3              -3
-   So, to get from rem to mod, we have to add b if a and b
-   have different signs.  We then subtract one from the 'div'
-   part of the outcome to keep the invariant intact. */
-
-/* Compute
- *     *pdiv, *pmod = divmod(v, w)
- * NULL can be passed for pdiv or pmod, in which case that part of
- * the result is simply thrown away.  The caller owns a reference to
- * each of these it requests (does not pass NULL for).
- */
-static int
-l_divmod(PyLongObject *v, PyLongObject *w,
-         PyLongObject **pdiv, PyLongObject **pmod)
-{
-    PyLongObject *div, *mod;
-
-    if (long_divrem(v, w, &div, &mod) < 0)
-        return -1;
-    if ((Py_SIZE(mod) < 0 && Py_SIZE(w) > 0) ||
-        (Py_SIZE(mod) > 0 && Py_SIZE(w) < 0)) {
-        PyLongObject *temp;
-        PyLongObject *one;
-        temp = (PyLongObject *) long_add(mod, w);
-        Py_DECREF(mod);
-        mod = temp;
-        if (mod == NULL) {
-            Py_DECREF(div);
-            return -1;
-        }
-        one = (PyLongObject *) PyLong_FromLong(1L);
-        if (one == NULL ||
-            (temp = (PyLongObject *) long_sub(div, one)) == NULL) {
-            Py_DECREF(mod);
-            Py_DECREF(div);
-            Py_XDECREF(one);
-            return -1;
-        }
-        Py_DECREF(one);
-        Py_DECREF(div);
-        div = temp;
-    }
-    if (pdiv != NULL)
-        *pdiv = div;
-    else
-        Py_DECREF(div);
-
-    if (pmod != NULL)
-        *pmod = mod;
-    else
-        Py_DECREF(mod);
-
-    return 0;
-}
-
-static PyObject *
-long_div(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b, *div;
-
-    CONVERT_BINOP(v, w, &a, &b);
-    if (l_divmod(a, b, &div, NULL) < 0)
-        div = NULL;
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *)div;
-}
-
-static PyObject *
-long_classic_div(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b, *div;
-
-    CONVERT_BINOP(v, w, &a, &b);
-    if (Py_DivisionWarningFlag &&
-        PyErr_Warn(PyExc_DeprecationWarning, "classic long division") < 0)
-        div = NULL;
-    else if (l_divmod(a, b, &div, NULL) < 0)
-        div = NULL;
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *)div;
-}
-
-/* PyLong/PyLong -> float, with correctly rounded result. */
-
-#define MANT_DIG_DIGITS (DBL_MANT_DIG / PyLong_SHIFT)
-#define MANT_DIG_BITS (DBL_MANT_DIG % PyLong_SHIFT)
-
-static PyObject *
-long_true_divide(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b, *x;
-    Py_ssize_t a_size, b_size, shift, extra_bits, diff, x_size, x_bits;
-    digit mask, low;
-    int inexact, negate, a_is_small, b_is_small;
-    double dx, result;
-
-    CONVERT_BINOP(v, w, &a, &b);
-
-    /*
-       Method in a nutshell:
-
-         0. reduce to case a, b > 0; filter out obvious underflow/overflow
-         1. choose a suitable integer 'shift'
-         2. use integer arithmetic to compute x = floor(2**-shift*a/b)
-         3. adjust x for correct rounding
-         4. convert x to a double dx with the same value
-         5. return ldexp(dx, shift).
-
-       In more detail:
-
-       0. For any a, a/0 raises ZeroDivisionError; for nonzero b, 0/b
-       returns either 0.0 or -0.0, depending on the sign of b.  For a and
-       b both nonzero, ignore signs of a and b, and add the sign back in
-       at the end.  Now write a_bits and b_bits for the bit lengths of a
-       and b respectively (that is, a_bits = 1 + floor(log_2(a)); likewise
-       for b).  Then
-
-          2**(a_bits - b_bits - 1) < a/b < 2**(a_bits - b_bits + 1).
-
-       So if a_bits - b_bits > DBL_MAX_EXP then a/b > 2**DBL_MAX_EXP and
-       so overflows.  Similarly, if a_bits - b_bits < DBL_MIN_EXP -
-       DBL_MANT_DIG - 1 then a/b underflows to 0.  With these cases out of
-       the way, we can assume that
-
-          DBL_MIN_EXP - DBL_MANT_DIG - 1 <= a_bits - b_bits <= DBL_MAX_EXP.
-
-       1. The integer 'shift' is chosen so that x has the right number of
-       bits for a double, plus two or three extra bits that will be used
-       in the rounding decisions.  Writing a_bits and b_bits for the
-       number of significant bits in a and b respectively, a
-       straightforward formula for shift is:
-
-          shift = a_bits - b_bits - DBL_MANT_DIG - 2
-
-       This is fine in the usual case, but if a/b is smaller than the
-       smallest normal float then it can lead to double rounding on an
-       IEEE 754 platform, giving incorrectly rounded results.  So we
-       adjust the formula slightly.  The actual formula used is:
-
-           shift = MAX(a_bits - b_bits, DBL_MIN_EXP) - DBL_MANT_DIG - 2
-
-       2. The quantity x is computed by first shifting a (left -shift bits
-       if shift <= 0, right shift bits if shift > 0) and then dividing by
-       b.  For both the shift and the division, we keep track of whether
-       the result is inexact, in a flag 'inexact'; this information is
-       needed at the rounding stage.
-
-       With the choice of shift above, together with our assumption that
-       a_bits - b_bits >= DBL_MIN_EXP - DBL_MANT_DIG - 1, it follows
-       that x >= 1.
-
-       3. Now x * 2**shift <= a/b < (x+1) * 2**shift.  We want to replace
-       this with an exactly representable float of the form
-
-          round(x/2**extra_bits) * 2**(extra_bits+shift).
-
-       For float representability, we need x/2**extra_bits <
-       2**DBL_MANT_DIG and extra_bits + shift >= DBL_MIN_EXP -
-       DBL_MANT_DIG.  This translates to the condition:
-
-          extra_bits >= MAX(x_bits, DBL_MIN_EXP - shift) - DBL_MANT_DIG
-
-       To round, we just modify the bottom digit of x in-place; this can
-       end up giving a digit with value > PyLONG_MASK, but that's not a
-       problem since digits can hold values up to 2*PyLONG_MASK+1.
-
-       With the original choices for shift above, extra_bits will always
-       be 2 or 3.  Then rounding under the round-half-to-even rule, we
-       round up iff the most significant of the extra bits is 1, and
-       either: (a) the computation of x in step 2 had an inexact result,
-       or (b) at least one other of the extra bits is 1, or (c) the least
-       significant bit of x (above those to be rounded) is 1.
-
-       4. Conversion to a double is straightforward; all floating-point
-       operations involved in the conversion are exact, so there's no
-       danger of rounding errors.
-
-       5. Use ldexp(x, shift) to compute x*2**shift, the final result.
-       The result will always be exactly representable as a double, except
-       in the case that it overflows.  To avoid dependence on the exact
-       behaviour of ldexp on overflow, we check for overflow before
-       applying ldexp.  The result of ldexp is adjusted for sign before
-       returning.
-    */
-
-    /* Reduce to case where a and b are both positive. */
-    a_size = ABS(Py_SIZE(a));
-    b_size = ABS(Py_SIZE(b));
-    negate = (Py_SIZE(a) < 0) ^ (Py_SIZE(b) < 0);
-    if (b_size == 0) {
-        PyErr_SetString(PyExc_ZeroDivisionError,
-                        "division by zero");
-        goto error;
-    }
-    if (a_size == 0)
-        goto underflow_or_zero;
-
-    /* Fast path for a and b small (exactly representable in a double).
-       Relies on floating-point division being correctly rounded; results
-       may be subject to double rounding on x86 machines that operate with
-       the x87 FPU set to 64-bit precision. */
-    a_is_small = a_size <= MANT_DIG_DIGITS ||
-        (a_size == MANT_DIG_DIGITS+1 &&
-         a->ob_digit[MANT_DIG_DIGITS] >> MANT_DIG_BITS == 0);
-    b_is_small = b_size <= MANT_DIG_DIGITS ||
-        (b_size == MANT_DIG_DIGITS+1 &&
-         b->ob_digit[MANT_DIG_DIGITS] >> MANT_DIG_BITS == 0);
-    if (a_is_small && b_is_small) {
-        double da, db;
-        da = a->ob_digit[--a_size];
-        while (a_size > 0)
-            da = da * PyLong_BASE + a->ob_digit[--a_size];
-        db = b->ob_digit[--b_size];
-        while (b_size > 0)
-            db = db * PyLong_BASE + b->ob_digit[--b_size];
-        result = da / db;
-        goto success;
-    }
-
-    /* Catch obvious cases of underflow and overflow */
-    diff = a_size - b_size;
-    if (diff > PY_SSIZE_T_MAX/PyLong_SHIFT - 1)
-        /* Extreme overflow */
-        goto overflow;
-    else if (diff < 1 - PY_SSIZE_T_MAX/PyLong_SHIFT)
-        /* Extreme underflow */
-        goto underflow_or_zero;
-    /* Next line is now safe from overflowing a Py_ssize_t */
-    diff = diff * PyLong_SHIFT + bits_in_digit(a->ob_digit[a_size - 1]) -
-        bits_in_digit(b->ob_digit[b_size - 1]);
-    /* Now diff = a_bits - b_bits. */
-    if (diff > DBL_MAX_EXP)
-        goto overflow;
-    else if (diff < DBL_MIN_EXP - DBL_MANT_DIG - 1)
-        goto underflow_or_zero;
-
-    /* Choose value for shift; see comments for step 1 above. */
-    shift = MAX(diff, DBL_MIN_EXP) - DBL_MANT_DIG - 2;
-
-    inexact = 0;
-
-    /* x = abs(a * 2**-shift) */
-    if (shift <= 0) {
-        Py_ssize_t i, shift_digits = -shift / PyLong_SHIFT;
-        digit rem;
-        /* x = a << -shift */
-        if (a_size >= PY_SSIZE_T_MAX - 1 - shift_digits) {
-            /* In practice, it's probably impossible to end up
-               here.  Both a and b would have to be enormous,
-               using close to SIZE_T_MAX bytes of memory each. */
-            PyErr_SetString(PyExc_OverflowError,
-                            "intermediate overflow during division");
-            goto error;
-        }
-        x = _PyLong_New(a_size + shift_digits + 1);
-        if (x == NULL)
-            goto error;
-        for (i = 0; i < shift_digits; i++)
-            x->ob_digit[i] = 0;
-        rem = v_lshift(x->ob_digit + shift_digits, a->ob_digit,
-                       a_size, -shift % PyLong_SHIFT);
-        x->ob_digit[a_size + shift_digits] = rem;
-    }
-    else {
-        Py_ssize_t shift_digits = shift / PyLong_SHIFT;
-        digit rem;
-        /* x = a >> shift */
-        assert(a_size >= shift_digits);
-        x = _PyLong_New(a_size - shift_digits);
-        if (x == NULL)
-            goto error;
-        rem = v_rshift(x->ob_digit, a->ob_digit + shift_digits,
-                       a_size - shift_digits, shift % PyLong_SHIFT);
-        /* set inexact if any of the bits shifted out is nonzero */
-        if (rem)
-            inexact = 1;
-        while (!inexact && shift_digits > 0)
-            if (a->ob_digit[--shift_digits])
-                inexact = 1;
-    }
-    long_normalize(x);
-    x_size = Py_SIZE(x);
-
-    /* x //= b. If the remainder is nonzero, set inexact.  We own the only
-       reference to x, so it's safe to modify it in-place. */
-    if (b_size == 1) {
-        digit rem = inplace_divrem1(x->ob_digit, x->ob_digit, x_size,
-                              b->ob_digit[0]);
-        long_normalize(x);
-        if (rem)
-            inexact = 1;
-    }
-    else {
-        PyLongObject *div, *rem;
-        div = x_divrem(x, b, &rem);
-        Py_DECREF(x);
-        x = div;
-        if (x == NULL)
-            goto error;
-        if (Py_SIZE(rem))
-            inexact = 1;
-        Py_DECREF(rem);
-    }
-    x_size = ABS(Py_SIZE(x));
-    assert(x_size > 0); /* result of division is never zero */
-    x_bits = (x_size-1)*PyLong_SHIFT+bits_in_digit(x->ob_digit[x_size-1]);
-
-    /* The number of extra bits that have to be rounded away. */
-    extra_bits = MAX(x_bits, DBL_MIN_EXP - shift) - DBL_MANT_DIG;
-    assert(extra_bits == 2 || extra_bits == 3);
-
-    /* Round by directly modifying the low digit of x. */
-    mask = (digit)1 << (extra_bits - 1);
-    low = x->ob_digit[0] | inexact;
-    if (low & mask && low & (3*mask-1))
-        low += mask;
-    x->ob_digit[0] = low & ~(mask-1U);
-
-    /* Convert x to a double dx; the conversion is exact. */
-    dx = x->ob_digit[--x_size];
-    while (x_size > 0)
-        dx = dx * PyLong_BASE + x->ob_digit[--x_size];
-    Py_DECREF(x);
-
-    /* Check whether ldexp result will overflow a double. */
-    if (shift + x_bits >= DBL_MAX_EXP &&
-        (shift + x_bits > DBL_MAX_EXP || dx == ldexp(1.0, (int)x_bits)))
-        goto overflow;
-    result = ldexp(dx, (int)shift);
-
-  success:
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return PyFloat_FromDouble(negate ? -result : result);
-
-  underflow_or_zero:
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return PyFloat_FromDouble(negate ? -0.0 : 0.0);
-
-  overflow:
-    PyErr_SetString(PyExc_OverflowError,
-                    "integer division result too large for a float");
-  error:
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return NULL;
-}
-
-static PyObject *
-long_mod(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b, *mod;
-
-    CONVERT_BINOP(v, w, &a, &b);
-
-    if (l_divmod(a, b, NULL, &mod) < 0)
-        mod = NULL;
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *)mod;
-}
-
-static PyObject *
-long_divmod(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b, *div, *mod;
-    PyObject *z;
-
-    CONVERT_BINOP(v, w, &a, &b);
-
-    if (l_divmod(a, b, &div, &mod) < 0) {
-        Py_DECREF(a);
-        Py_DECREF(b);
-        return NULL;
-    }
-    z = PyTuple_New(2);
-    if (z != NULL) {
-        PyTuple_SetItem(z, 0, (PyObject *) div);
-        PyTuple_SetItem(z, 1, (PyObject *) mod);
-    }
-    else {
-        Py_DECREF(div);
-        Py_DECREF(mod);
-    }
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return z;
-}
-
-/* pow(v, w, x) */
-static PyObject *
-long_pow(PyObject *v, PyObject *w, PyObject *x)
-{
-    PyLongObject *a, *b, *c; /* a,b,c = v,w,x */
-    int negativeOutput = 0;  /* if x<0 return negative output */
-
-    PyLongObject *z = NULL;  /* accumulated result */
-    Py_ssize_t i, j, k;             /* counters */
-    PyLongObject *temp = NULL;
-
-    /* 5-ary values.  If the exponent is large enough, table is
-     * precomputed so that table[i] == a**i % c for i in range(32).
-     */
-    PyLongObject *table[32] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-                               0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-
-    /* a, b, c = v, w, x */
-    CONVERT_BINOP(v, w, &a, &b);
-    if (PyLong_Check(x)) {
-        c = (PyLongObject *)x;
-        Py_INCREF(x);
-    }
-    else if (PyInt_Check(x)) {
-        c = (PyLongObject *)PyLong_FromLong(PyInt_AS_LONG(x));
-        if (c == NULL)
-            goto Error;
-    }
-    else if (x == Py_None)
-        c = NULL;
-    else {
-        Py_DECREF(a);
-        Py_DECREF(b);
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-
-    if (Py_SIZE(b) < 0) {  /* if exponent is negative */
-        if (c) {
-            PyErr_SetString(PyExc_TypeError, "pow() 2nd argument "
-                            "cannot be negative when 3rd argument specified");
-            goto Error;
-        }
-        else {
-            /* else return a float.  This works because we know
-               that this calls float_pow() which converts its
-               arguments to double. */
-            Py_DECREF(a);
-            Py_DECREF(b);
-            return PyFloat_Type.tp_as_number->nb_power(v, w, x);
-        }
-    }
-
-    if (c) {
-        /* if modulus == 0:
-               raise ValueError() */
-        if (Py_SIZE(c) == 0) {
-            PyErr_SetString(PyExc_ValueError,
-                            "pow() 3rd argument cannot be 0");
-            goto Error;
-        }
-
-        /* if modulus < 0:
-               negativeOutput = True
-               modulus = -modulus */
-        if (Py_SIZE(c) < 0) {
-            negativeOutput = 1;
-            temp = (PyLongObject *)_PyLong_Copy(c);
-            if (temp == NULL)
-                goto Error;
-            Py_DECREF(c);
-            c = temp;
-            temp = NULL;
-            c->ob_size = - c->ob_size;
-        }
-
-        /* if modulus == 1:
-               return 0 */
-        if ((Py_SIZE(c) == 1) && (c->ob_digit[0] == 1)) {
-            z = (PyLongObject *)PyLong_FromLong(0L);
-            goto Done;
-        }
-
-        /* if base < 0:
-               base = base % modulus
-           Having the base positive just makes things easier. */
-        if (Py_SIZE(a) < 0) {
-            if (l_divmod(a, c, NULL, &temp) < 0)
-                goto Error;
-            Py_DECREF(a);
-            a = temp;
-            temp = NULL;
-        }
-    }
-
-    /* At this point a, b, and c are guaranteed non-negative UNLESS
-       c is NULL, in which case a may be negative. */
-
-    z = (PyLongObject *)PyLong_FromLong(1L);
-    if (z == NULL)
-        goto Error;
-
-    /* Perform a modular reduction, X = X % c, but leave X alone if c
-     * is NULL.
-     */
-#define REDUCE(X)                                       \
-    do {                                                \
-        if (c != NULL) {                                \
-            if (l_divmod(X, c, NULL, &temp) < 0)        \
-                goto Error;                             \
-            Py_XDECREF(X);                              \
-            X = temp;                                   \
-            temp = NULL;                                \
-        }                                               \
-    } while(0)
-
-    /* Multiply two values, then reduce the result:
-       result = X*Y % c.  If c is NULL, skip the mod. */
-#define MULT(X, Y, result)                      \
-    do {                                        \
-        temp = (PyLongObject *)long_mul(X, Y);  \
-        if (temp == NULL)                       \
-            goto Error;                         \
-        Py_XDECREF(result);                     \
-        result = temp;                          \
-        temp = NULL;                            \
-        REDUCE(result);                         \
-    } while(0)
-
-    if (Py_SIZE(b) <= FIVEARY_CUTOFF) {
-        /* Left-to-right binary exponentiation (HAC Algorithm 14.79) */
-        /* http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf    */
-        for (i = Py_SIZE(b) - 1; i >= 0; --i) {
-            digit bi = b->ob_digit[i];
-
-            for (j = (digit)1 << (PyLong_SHIFT-1); j != 0; j >>= 1) {
-                MULT(z, z, z);
-                if (bi & j)
-                    MULT(z, a, z);
-            }
-        }
-    }
-    else {
-        /* Left-to-right 5-ary exponentiation (HAC Algorithm 14.82) */
-        Py_INCREF(z);           /* still holds 1L */
-        table[0] = z;
-        for (i = 1; i < 32; ++i)
-            MULT(table[i-1], a, table[i]);
-
-        for (i = Py_SIZE(b) - 1; i >= 0; --i) {
-            const digit bi = b->ob_digit[i];
-
-            for (j = PyLong_SHIFT - 5; j >= 0; j -= 5) {
-                const int index = (bi >> j) & 0x1f;
-                for (k = 0; k < 5; ++k)
-                    MULT(z, z, z);
-                if (index)
-                    MULT(z, table[index], z);
-            }
-        }
-    }
-
-    if (negativeOutput && (Py_SIZE(z) != 0)) {
-        temp = (PyLongObject *)long_sub(z, c);
-        if (temp == NULL)
-            goto Error;
-        Py_DECREF(z);
-        z = temp;
-        temp = NULL;
-    }
-    goto Done;
-
-  Error:
-    if (z != NULL) {
-        Py_DECREF(z);
-        z = NULL;
-    }
-    /* fall through */
-  Done:
-    if (Py_SIZE(b) > FIVEARY_CUTOFF) {
-        for (i = 0; i < 32; ++i)
-            Py_XDECREF(table[i]);
-    }
-    Py_DECREF(a);
-    Py_DECREF(b);
-    Py_XDECREF(c);
-    Py_XDECREF(temp);
-    return (PyObject *)z;
-}
-
-static PyObject *
-long_invert(PyLongObject *v)
-{
-    /* Implement ~x as -(x+1) */
-    PyLongObject *x;
-    PyLongObject *w;
-    w = (PyLongObject *)PyLong_FromLong(1L);
-    if (w == NULL)
-        return NULL;
-    x = (PyLongObject *) long_add(v, w);
-    Py_DECREF(w);
-    if (x == NULL)
-        return NULL;
-    Py_SIZE(x) = -(Py_SIZE(x));
-    return (PyObject *)x;
-}
-
-static PyObject *
-long_neg(PyLongObject *v)
-{
-    PyLongObject *z;
-    if (v->ob_size == 0 && PyLong_CheckExact(v)) {
-        /* -0 == 0 */
-        Py_INCREF(v);
-        return (PyObject *) v;
-    }
-    z = (PyLongObject *)_PyLong_Copy(v);
-    if (z != NULL)
-        z->ob_size = -(v->ob_size);
-    return (PyObject *)z;
-}
-
-static PyObject *
-long_abs(PyLongObject *v)
-{
-    if (v->ob_size < 0)
-        return long_neg(v);
-    else
-        return long_long((PyObject *)v);
-}
-
-static int
-long_nonzero(PyLongObject *v)
-{
-    return Py_SIZE(v) != 0;
-}
-
-static PyObject *
-long_rshift(PyLongObject *v, PyLongObject *w)
-{
-    PyLongObject *a, *b;
-    PyLongObject *z = NULL;
-    Py_ssize_t shiftby, newsize, wordshift, loshift, hishift, i, j;
-    digit lomask, himask;
-
-    CONVERT_BINOP((PyObject *)v, (PyObject *)w, &a, &b);
-
-    if (Py_SIZE(a) < 0) {
-        /* Right shifting negative numbers is harder */
-        PyLongObject *a1, *a2;
-        a1 = (PyLongObject *) long_invert(a);
-        if (a1 == NULL)
-            goto rshift_error;
-        a2 = (PyLongObject *) long_rshift(a1, b);
-        Py_DECREF(a1);
-        if (a2 == NULL)
-            goto rshift_error;
-        z = (PyLongObject *) long_invert(a2);
-        Py_DECREF(a2);
-    }
-    else {
-        shiftby = PyLong_AsSsize_t((PyObject *)b);
-        if (shiftby == -1L && PyErr_Occurred())
-            goto rshift_error;
-        if (shiftby < 0) {
-            PyErr_SetString(PyExc_ValueError,
-                            "negative shift count");
-            goto rshift_error;
-        }
-        wordshift = shiftby / PyLong_SHIFT;
-        newsize = ABS(Py_SIZE(a)) - wordshift;
-        if (newsize <= 0) {
-            z = _PyLong_New(0);
-            Py_DECREF(a);
-            Py_DECREF(b);
-            return (PyObject *)z;
-        }
-        loshift = shiftby % PyLong_SHIFT;
-        hishift = PyLong_SHIFT - loshift;
-        lomask = ((digit)1 << hishift) - 1;
-        himask = PyLong_MASK ^ lomask;
-        z = _PyLong_New(newsize);
-        if (z == NULL)
-            goto rshift_error;
-        if (Py_SIZE(a) < 0)
-            Py_SIZE(z) = -(Py_SIZE(z));
-        for (i = 0, j = wordshift; i < newsize; i++, j++) {
-            z->ob_digit[i] = (a->ob_digit[j] >> loshift) & lomask;
-            if (i+1 < newsize)
-                z->ob_digit[i] |= (a->ob_digit[j+1] << hishift) & himask;
-        }
-        z = long_normalize(z);
-    }
-  rshift_error:
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *) z;
-
-}
-
-static PyObject *
-long_lshift(PyObject *v, PyObject *w)
-{
-    /* This version due to Tim Peters */
-    PyLongObject *a, *b;
-    PyLongObject *z = NULL;
-    Py_ssize_t shiftby, oldsize, newsize, wordshift, remshift, i, j;
-    twodigits accum;
-
-    CONVERT_BINOP(v, w, &a, &b);
-
-    shiftby = PyLong_AsSsize_t((PyObject *)b);
-    if (shiftby == -1L && PyErr_Occurred())
-        goto lshift_error;
-    if (shiftby < 0) {
-        PyErr_SetString(PyExc_ValueError, "negative shift count");
-        goto lshift_error;
-    }
-    /* wordshift, remshift = divmod(shiftby, PyLong_SHIFT) */
-    wordshift = shiftby / PyLong_SHIFT;
-    remshift  = shiftby - wordshift * PyLong_SHIFT;
-
-    oldsize = ABS(a->ob_size);
-    newsize = oldsize + wordshift;
-    if (remshift)
-        ++newsize;
-    z = _PyLong_New(newsize);
-    if (z == NULL)
-        goto lshift_error;
-    if (a->ob_size < 0)
-        z->ob_size = -(z->ob_size);
-    for (i = 0; i < wordshift; i++)
-        z->ob_digit[i] = 0;
-    accum = 0;
-    for (i = wordshift, j = 0; j < oldsize; i++, j++) {
-        accum |= (twodigits)a->ob_digit[j] << remshift;
-        z->ob_digit[i] = (digit)(accum & PyLong_MASK);
-        accum >>= PyLong_SHIFT;
-    }
-    if (remshift)
-        z->ob_digit[newsize-1] = (digit)accum;
-    else
-        assert(!accum);
-    z = long_normalize(z);
-  lshift_error:
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *) z;
-}
-
-/* Compute two's complement of digit vector a[0:m], writing result to
-   z[0:m].  The digit vector a need not be normalized, but should not
-   be entirely zero.  a and z may point to the same digit vector. */
-
-static void
-v_complement(digit *z, digit *a, Py_ssize_t m)
-{
-    Py_ssize_t i;
-    digit carry = 1;
-    for (i = 0; i < m; ++i) {
-        carry += a[i] ^ PyLong_MASK;
-        z[i] = carry & PyLong_MASK;
-        carry >>= PyLong_SHIFT;
-    }
-    assert(carry == 0);
-}
-
-/* Bitwise and/xor/or operations */
-
-static PyObject *
-long_bitwise(PyLongObject *a,
-             int op,  /* '&', '|', '^' */
-             PyLongObject *b)
-{
-    int nega, negb, negz;
-    Py_ssize_t size_a, size_b, size_z, i;
-    PyLongObject *z;
-
-    /* Bitwise operations for negative numbers operate as though
-       on a two's complement representation.  So convert arguments
-       from sign-magnitude to two's complement, and convert the
-       result back to sign-magnitude at the end. */
-
-    /* If a is negative, replace it by its two's complement. */
-    size_a = ABS(Py_SIZE(a));
-    nega = Py_SIZE(a) < 0;
-    if (nega) {
-        z = _PyLong_New(size_a);
-        if (z == NULL)
-            return NULL;
-        v_complement(z->ob_digit, a->ob_digit, size_a);
-        a = z;
-    }
-    else
-        /* Keep reference count consistent. */
-        Py_INCREF(a);
-
-    /* Same for b. */
-    size_b = ABS(Py_SIZE(b));
-    negb = Py_SIZE(b) < 0;
-    if (negb) {
-        z = _PyLong_New(size_b);
-        if (z == NULL) {
-            Py_DECREF(a);
-            return NULL;
-        }
-        v_complement(z->ob_digit, b->ob_digit, size_b);
-        b = z;
-    }
-    else
-        Py_INCREF(b);
-
-    /* Swap a and b if necessary to ensure size_a >= size_b. */
-    if (size_a < size_b) {
-        z = a; a = b; b = z;
-        size_z = size_a; size_a = size_b; size_b = size_z;
-        negz = nega; nega = negb; negb = negz;
-    }
-
-    /* JRH: The original logic here was to allocate the result value (z)
-       as the longer of the two operands.  However, there are some cases
-       where the result is guaranteed to be shorter than that: AND of two
-       positives, OR of two negatives: use the shorter number.  AND with
-       mixed signs: use the positive number.  OR with mixed signs: use the
-       negative number.
-    */
-    switch (op) {
-    case '^':
-        negz = nega ^ negb;
-        size_z = size_a;
-        break;
-    case '&':
-        negz = nega & negb;
-        size_z = negb ? size_a : size_b;
-        break;
-    case '|':
-        negz = nega | negb;
-        size_z = negb ? size_b : size_a;
-        break;
-    default:
-        PyErr_BadArgument();
-        return NULL;
-    }
-
-    /* We allow an extra digit if z is negative, to make sure that
-       the final two's complement of z doesn't overflow. */
-    z = _PyLong_New(size_z + negz);
-    if (z == NULL) {
-        Py_DECREF(a);
-        Py_DECREF(b);
-        return NULL;
-    }
-
-    /* Compute digits for overlap of a and b. */
-    switch(op) {
-    case '&':
-        for (i = 0; i < size_b; ++i)
-            z->ob_digit[i] = a->ob_digit[i] & b->ob_digit[i];
-        break;
-    case '|':
-        for (i = 0; i < size_b; ++i)
-            z->ob_digit[i] = a->ob_digit[i] | b->ob_digit[i];
-        break;
-    case '^':
-        for (i = 0; i < size_b; ++i)
-            z->ob_digit[i] = a->ob_digit[i] ^ b->ob_digit[i];
-        break;
-    default:
-        PyErr_BadArgument();
-        return NULL;
-    }
-
-    /* Copy any remaining digits of a, inverting if necessary. */
-    if (op == '^' && negb)
-        for (; i < size_z; ++i)
-            z->ob_digit[i] = a->ob_digit[i] ^ PyLong_MASK;
-    else if (i < size_z)
-        memcpy(&z->ob_digit[i], &a->ob_digit[i],
-               (size_z-i)*sizeof(digit));
-
-    /* Complement result if negative. */
-    if (negz) {
-        Py_SIZE(z) = -(Py_SIZE(z));
-        z->ob_digit[size_z] = PyLong_MASK;
-        v_complement(z->ob_digit, z->ob_digit, size_z+1);
-    }
-
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return (PyObject *)long_normalize(z);
-}
-
-static PyObject *
-long_and(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b;
-    PyObject *c;
-    CONVERT_BINOP(v, w, &a, &b);
-    c = long_bitwise(a, '&', b);
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return c;
-}
-
-static PyObject *
-long_xor(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b;
-    PyObject *c;
-    CONVERT_BINOP(v, w, &a, &b);
-    c = long_bitwise(a, '^', b);
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return c;
-}
-
-static PyObject *
-long_or(PyObject *v, PyObject *w)
-{
-    PyLongObject *a, *b;
-    PyObject *c;
-    CONVERT_BINOP(v, w, &a, &b);
-    c = long_bitwise(a, '|', b);
-    Py_DECREF(a);
-    Py_DECREF(b);
-    return c;
-}
-
-static int
-long_coerce(PyObject **pv, PyObject **pw)
-{
-    if (PyInt_Check(*pw)) {
-        *pw = PyLong_FromLong(PyInt_AS_LONG(*pw));
-        if (*pw == NULL)
-            return -1;
-        Py_INCREF(*pv);
-        return 0;
-    }
-    else if (PyLong_Check(*pw)) {
-        Py_INCREF(*pv);
-        Py_INCREF(*pw);
-        return 0;
-    }
-    return 1; /* Can't do it */
-}
-
-static PyObject *
-long_long(PyObject *v)
-{
-    if (PyLong_CheckExact(v))
-        Py_INCREF(v);
-    else
-        v = _PyLong_Copy((PyLongObject *)v);
-    return v;
-}
-
-static PyObject *
-long_int(PyObject *v)
-{
-    long x;
-    x = PyLong_AsLong(v);
-    if (PyErr_Occurred()) {
-        if (PyErr_ExceptionMatches(PyExc_OverflowError)) {
-            PyErr_Clear();
-            if (PyLong_CheckExact(v)) {
-                Py_INCREF(v);
-                return v;
-            }
-            else
-                return _PyLong_Copy((PyLongObject *)v);
-        }
-        else
-            return NULL;
-    }
-    return PyInt_FromLong(x);
-}
-
-static PyObject *
-long_float(PyObject *v)
-{
-    double result;
-    result = PyLong_AsDouble(v);
-    if (result == -1.0 && PyErr_Occurred())
-        return NULL;
-    return PyFloat_FromDouble(result);
-}
-
-static PyObject *
-long_oct(PyObject *v)
-{
-    return _PyLong_Format(v, 8, 1, 0);
-}
-
-static PyObject *
-long_hex(PyObject *v)
-{
-    return _PyLong_Format(v, 16, 1, 0);
-}
-
-static PyObject *
-long_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
-
-static PyObject *
-long_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *x = NULL;
-    int base = -909;                         /* unlikely! */
-    static char *kwlist[] = {"x", "base", 0};
-
-    if (type != &PyLong_Type)
-        return long_subtype_new(type, args, kwds); /* Wimp out */
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|Oi:long", kwlist,
-                                     &x, &base))
-        return NULL;
-    if (x == NULL)
-        return PyLong_FromLong(0L);
-    if (base == -909)
-        return PyNumber_Long(x);
-    else if (PyString_Check(x)) {
-        /* Since PyLong_FromString doesn't have a length parameter,
-         * check here for possible NULs in the string. */
-        char *string = PyString_AS_STRING(x);
-        if (strlen(string) != (size_t)PyString_Size(x)) {
-            /* create a repr() of the input string,
-             * just like PyLong_FromString does. */
-            PyObject *srepr;
-            srepr = PyObject_Repr(x);
-            if (srepr == NULL)
-                return NULL;
-            PyErr_Format(PyExc_ValueError,
-                         "invalid literal for long() with base %d: %s",
-                         base, PyString_AS_STRING(srepr));
-            Py_DECREF(srepr);
-            return NULL;
-        }
-        return PyLong_FromString(PyString_AS_STRING(x), NULL, base);
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_Check(x))
-        return PyLong_FromUnicode(PyUnicode_AS_UNICODE(x),
-                                  PyUnicode_GET_SIZE(x),
-                                  base);
-#endif
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "long() can't convert non-string with explicit base");
-        return NULL;
-    }
-}
-
-/* Wimpy, slow approach to tp_new calls for subtypes of long:
-   first create a regular long from whatever arguments we got,
-   then allocate a subtype instance and initialize it from
-   the regular long.  The regular long is then thrown away.
-*/
-static PyObject *
-long_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyLongObject *tmp, *newobj;
-    Py_ssize_t i, n;
-
-    assert(PyType_IsSubtype(type, &PyLong_Type));
-    tmp = (PyLongObject *)long_new(&PyLong_Type, args, kwds);
-    if (tmp == NULL)
-        return NULL;
-    assert(PyLong_CheckExact(tmp));
-    n = Py_SIZE(tmp);
-    if (n < 0)
-        n = -n;
-    newobj = (PyLongObject *)type->tp_alloc(type, n);
-    if (newobj == NULL) {
-        Py_DECREF(tmp);
-        return NULL;
-    }
-    assert(PyLong_Check(newobj));
-    Py_SIZE(newobj) = Py_SIZE(tmp);
-    for (i = 0; i < n; i++)
-        newobj->ob_digit[i] = tmp->ob_digit[i];
-    Py_DECREF(tmp);
-    return (PyObject *)newobj;
-}
-
-static PyObject *
-long_getnewargs(PyLongObject *v)
-{
-    return Py_BuildValue("(N)", _PyLong_Copy(v));
-}
-
-static PyObject *
-long_get0(PyLongObject *v, void *context) {
-    return PyLong_FromLong(0L);
-}
-
-static PyObject *
-long_get1(PyLongObject *v, void *context) {
-    return PyLong_FromLong(1L);
-}
-
-static PyObject *
-long__format__(PyObject *self, PyObject *args)
-{
-    PyObject *format_spec;
-
-    if (!PyArg_ParseTuple(args, "O:__format__", &format_spec))
-        return NULL;
-    if (PyBytes_Check(format_spec))
-        return _PyLong_FormatAdvanced(self,
-                                      PyBytes_AS_STRING(format_spec),
-                                      PyBytes_GET_SIZE(format_spec));
-    if (PyUnicode_Check(format_spec)) {
-        /* Convert format_spec to a str */
-        PyObject *result;
-        PyObject *str_spec = PyObject_Str(format_spec);
-
-        if (str_spec == NULL)
-            return NULL;
-
-        result = _PyLong_FormatAdvanced(self,
-                                        PyBytes_AS_STRING(str_spec),
-                                        PyBytes_GET_SIZE(str_spec));
-
-        Py_DECREF(str_spec);
-        return result;
-    }
-    PyErr_SetString(PyExc_TypeError, "__format__ requires str or unicode");
-    return NULL;
-}
-
-static PyObject *
-long_sizeof(PyLongObject *v)
-{
-    Py_ssize_t res;
-
-    res = v->ob_type->tp_basicsize + ABS(Py_SIZE(v))*sizeof(digit);
-    return PyInt_FromSsize_t(res);
-}
-
-static PyObject *
-long_bit_length(PyLongObject *v)
-{
-    PyLongObject *result, *x, *y;
-    Py_ssize_t ndigits, msd_bits = 0;
-    digit msd;
-
-    assert(v != NULL);
-    assert(PyLong_Check(v));
-
-    ndigits = ABS(Py_SIZE(v));
-    if (ndigits == 0)
-        return PyInt_FromLong(0);
-
-    msd = v->ob_digit[ndigits-1];
-    while (msd >= 32) {
-        msd_bits += 6;
-        msd >>= 6;
-    }
-    msd_bits += (long)(BitLengthTable[msd]);
-
-    if (ndigits <= PY_SSIZE_T_MAX/PyLong_SHIFT)
-        return PyInt_FromSsize_t((ndigits-1)*PyLong_SHIFT + msd_bits);
-
-    /* expression above may overflow; use Python integers instead */
-    result = (PyLongObject *)PyLong_FromSsize_t(ndigits - 1);
-    if (result == NULL)
-        return NULL;
-    x = (PyLongObject *)PyLong_FromLong(PyLong_SHIFT);
-    if (x == NULL)
-        goto error;
-    y = (PyLongObject *)long_mul(result, x);
-    Py_DECREF(x);
-    if (y == NULL)
-        goto error;
-    Py_DECREF(result);
-    result = y;
-
-    x = (PyLongObject *)PyLong_FromLong((long)msd_bits);
-    if (x == NULL)
-        goto error;
-    y = (PyLongObject *)long_add(result, x);
-    Py_DECREF(x);
-    if (y == NULL)
-        goto error;
-    Py_DECREF(result);
-    result = y;
-
-    return (PyObject *)result;
-
-  error:
-    Py_DECREF(result);
-    return NULL;
-}
-
-PyDoc_STRVAR(long_bit_length_doc,
-"long.bit_length() -> int or long\n\
-\n\
-Number of bits necessary to represent self in binary.\n\
->>> bin(37L)\n\
-'0b100101'\n\
->>> (37L).bit_length()\n\
-6");
-
-#if 0
-static PyObject *
-long_is_finite(PyObject *v)
-{
-    Py_RETURN_TRUE;
-}
-#endif
-
-static PyMethodDef long_methods[] = {
-    {"conjugate",       (PyCFunction)long_long, METH_NOARGS,
-     "Returns self, the complex conjugate of any long."},
-    {"bit_length",      (PyCFunction)long_bit_length, METH_NOARGS,
-     long_bit_length_doc},
-#if 0
-    {"is_finite",       (PyCFunction)long_is_finite,    METH_NOARGS,
-     "Returns always True."},
-#endif
-    {"__trunc__",       (PyCFunction)long_long, METH_NOARGS,
-     "Truncating an Integral returns itself."},
-    {"__getnewargs__",          (PyCFunction)long_getnewargs,   METH_NOARGS},
-    {"__format__", (PyCFunction)long__format__, METH_VARARGS},
-    {"__sizeof__",      (PyCFunction)long_sizeof, METH_NOARGS,
-     "Returns size in memory, in bytes"},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyGetSetDef long_getset[] = {
-    {"real",
-     (getter)long_long, (setter)NULL,
-     "the real part of a complex number",
-     NULL},
-    {"imag",
-     (getter)long_get0, (setter)NULL,
-     "the imaginary part of a complex number",
-     NULL},
-    {"numerator",
-     (getter)long_long, (setter)NULL,
-     "the numerator of a rational number in lowest terms",
-     NULL},
-    {"denominator",
-     (getter)long_get1, (setter)NULL,
-     "the denominator of a rational number in lowest terms",
-     NULL},
-    {NULL}  /* Sentinel */
-};
-
-PyDoc_STRVAR(long_doc,
-"long(x[, base]) -> integer\n\
-\n\
-Convert a string or number to a long integer, if possible.  A floating\n\
-point argument will be truncated towards zero (this does not include a\n\
-string representation of a floating point number!)  When converting a\n\
-string, use the optional base.  It is an error to supply a base when\n\
-converting a non-string.");
-
-static PyNumberMethods long_as_number = {
-    (binaryfunc)long_add,       /*nb_add*/
-    (binaryfunc)long_sub,       /*nb_subtract*/
-    (binaryfunc)long_mul,       /*nb_multiply*/
-    long_classic_div,           /*nb_divide*/
-    long_mod,                   /*nb_remainder*/
-    long_divmod,                /*nb_divmod*/
-    long_pow,                   /*nb_power*/
-    (unaryfunc)long_neg,        /*nb_negative*/
-    (unaryfunc)long_long,       /*tp_positive*/
-    (unaryfunc)long_abs,        /*tp_absolute*/
-    (inquiry)long_nonzero,      /*tp_nonzero*/
-    (unaryfunc)long_invert,     /*nb_invert*/
-    long_lshift,                /*nb_lshift*/
-    (binaryfunc)long_rshift,    /*nb_rshift*/
-    long_and,                   /*nb_and*/
-    long_xor,                   /*nb_xor*/
-    long_or,                    /*nb_or*/
-    long_coerce,                /*nb_coerce*/
-    long_int,                   /*nb_int*/
-    long_long,                  /*nb_long*/
-    long_float,                 /*nb_float*/
-    long_oct,                   /*nb_oct*/
-    long_hex,                   /*nb_hex*/
-    0,                          /* nb_inplace_add */
-    0,                          /* nb_inplace_subtract */
-    0,                          /* nb_inplace_multiply */
-    0,                          /* nb_inplace_divide */
-    0,                          /* nb_inplace_remainder */
-    0,                          /* nb_inplace_power */
-    0,                          /* nb_inplace_lshift */
-    0,                          /* nb_inplace_rshift */
-    0,                          /* nb_inplace_and */
-    0,                          /* nb_inplace_xor */
-    0,                          /* nb_inplace_or */
-    long_div,                   /* nb_floor_divide */
-    long_true_divide,           /* nb_true_divide */
-    0,                          /* nb_inplace_floor_divide */
-    0,                          /* nb_inplace_true_divide */
-    long_long,                  /* nb_index */
-};
-
-PyTypeObject PyLong_Type = {
-    PyObject_HEAD_INIT(&PyType_Type)
-    0,                                          /* ob_size */
-    "long",                                     /* tp_name */
-    offsetof(PyLongObject, ob_digit),           /* tp_basicsize */
-    sizeof(digit),                              /* tp_itemsize */
-    long_dealloc,                               /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    (cmpfunc)long_compare,                      /* tp_compare */
-    long_repr,                                  /* tp_repr */
-    &long_as_number,                            /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    (hashfunc)long_hash,                        /* tp_hash */
-    0,                                          /* tp_call */
-    long_str,                                   /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
-        Py_TPFLAGS_BASETYPE | Py_TPFLAGS_LONG_SUBCLASS, /* tp_flags */
-    long_doc,                                   /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    long_methods,                               /* tp_methods */
-    0,                                          /* tp_members */
-    long_getset,                                /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    long_new,                                   /* tp_new */
-    PyObject_Del,                               /* tp_free */
-};
-
-static PyTypeObject Long_InfoType;
-
-PyDoc_STRVAR(long_info__doc__,
-"sys.long_info\n\
-\n\
-A struct sequence that holds information about Python's\n\
-internal representation of integers.  The attributes are read only.");
-
-static PyStructSequence_Field long_info_fields[] = {
-    {"bits_per_digit", "size of a digit in bits"},
-    {"sizeof_digit", "size in bytes of the C type used to represent a digit"},
-    {NULL, NULL}
-};
-
-static PyStructSequence_Desc long_info_desc = {
-    "sys.long_info",   /* name */
-    long_info__doc__,  /* doc */
-    long_info_fields,  /* fields */
-    2                  /* number of fields */
-};
-
-PyObject *
-PyLong_GetInfo(void)
-{
-    PyObject* long_info;
-    int field = 0;
-    long_info = PyStructSequence_New(&Long_InfoType);
-    if (long_info == NULL)
-        return NULL;
-    PyStructSequence_SET_ITEM(long_info, field++,
-                              PyInt_FromLong(PyLong_SHIFT));
-    PyStructSequence_SET_ITEM(long_info, field++,
-                              PyInt_FromLong(sizeof(digit)));
-    if (PyErr_Occurred()) {
-        Py_CLEAR(long_info);
-        return NULL;
-    }
-    return long_info;
-}
-
-int
-_PyLong_Init(void)
-{
-    /* initialize long_info */
-    if (Long_InfoType.tp_name == 0)
-        PyStructSequence_InitType(&Long_InfoType, &long_info_desc);
-    return 1;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/memoryobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/memoryobject.c
deleted file mode 100644
index 00da8b9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/memoryobject.c
+++ /dev/null
@@ -1,842 +0,0 @@
-
-/* Memoryview object implementation */
-
-#include "Python.h"
-
-static Py_ssize_t
-get_shape0(Py_buffer *buf)
-{
-    if (buf->shape != NULL)
-        return buf->shape[0];
-    if (buf->ndim == 0)
-        return 1;
-    PyErr_SetString(PyExc_TypeError,
-        "exported buffer does not have any shape information associated "
-        "to it");
-    return -1;
-}
-
-static void
-dup_buffer(Py_buffer *dest, Py_buffer *src)
-{
-    *dest = *src;
-    if (src->ndim == 1 && src->shape != NULL) {
-        dest->shape = &(dest->smalltable[0]);
-        dest->shape[0] = get_shape0(src);
-    }
-    if (src->ndim == 1 && src->strides != NULL) {
-        dest->strides = &(dest->smalltable[1]);
-        dest->strides[0] = src->strides[0];
-    }
-}
-
-static int
-memory_getbuf(PyMemoryViewObject *self, Py_buffer *view, int flags)
-{
-    int res = 0;
-    if (self->view.obj != NULL)
-        res = PyObject_GetBuffer(self->view.obj, view, flags);
-    if (view)
-        dup_buffer(view, &self->view);
-    return res;
-}
-
-static void
-memory_releasebuf(PyMemoryViewObject *self, Py_buffer *view)
-{
-    PyBuffer_Release(view);
-}
-
-PyDoc_STRVAR(memory_doc,
-"memoryview(object)\n\
-\n\
-Create a new memoryview object which references the given object.");
-
-PyObject *
-PyMemoryView_FromBuffer(Py_buffer *info)
-{
-    PyMemoryViewObject *mview;
-
-    mview = (PyMemoryViewObject *)
-        PyObject_GC_New(PyMemoryViewObject, &PyMemoryView_Type);
-    if (mview == NULL)
-        return NULL;
-    mview->base = NULL;
-    dup_buffer(&mview->view, info);
-    /* NOTE: mview->view.obj should already have been incref'ed as
-       part of PyBuffer_FillInfo(). */
-    _PyObject_GC_TRACK(mview);
-    return (PyObject *)mview;
-}
-
-PyObject *
-PyMemoryView_FromObject(PyObject *base)
-{
-    PyMemoryViewObject *mview;
-    Py_buffer view;
-
-    if (!PyObject_CheckBuffer(base)) {
-        PyErr_SetString(PyExc_TypeError,
-            "cannot make memory view because object does "
-            "not have the buffer interface");
-        return NULL;
-    }
-
-    if (PyObject_GetBuffer(base, &view, PyBUF_FULL_RO) < 0)
-        return NULL;
-
-    mview = (PyMemoryViewObject *)PyMemoryView_FromBuffer(&view);
-    if (mview == NULL) {
-        PyBuffer_Release(&view);
-        return NULL;
-    }
-
-    mview->base = base;
-    Py_INCREF(base);
-    return (PyObject *)mview;
-}
-
-static PyObject *
-memory_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds)
-{
-    PyObject *obj;
-    static char *kwlist[] = {"object", 0};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O:memoryview", kwlist,
-                                     &obj)) {
-        return NULL;
-    }
-
-    return PyMemoryView_FromObject(obj);
-}
-
-
-static void
-_strided_copy_nd(char *dest, char *src, int nd, Py_ssize_t *shape,
-                 Py_ssize_t *strides, Py_ssize_t itemsize, char fort)
-{
-    int k;
-    Py_ssize_t outstride;
-
-    if (nd==0) {
-        memcpy(dest, src, itemsize);
-    }
-    else if (nd == 1) {
-        for (k = 0; k<shape[0]; k++) {
-            memcpy(dest, src, itemsize);
-            dest += itemsize;
-            src += strides[0];
-        }
-    }
-    else {
-        if (fort == 'F') {
-            /* Copy first dimension first,
-               second dimension second, etc...
-               Set up the recursive loop backwards so that final
-               dimension is actually copied last.
-            */
-            outstride = itemsize;
-            for (k=1; k<nd-1;k++) {
-                outstride *= shape[k];
-            }
-            for (k=0; k<shape[nd-1]; k++) {
-                _strided_copy_nd(dest, src, nd-1, shape,
-                                 strides, itemsize, fort);
-                dest += outstride;
-                src += strides[nd-1];
-            }
-        }
-
-        else {
-            /* Copy last dimension first,
-               second-to-last dimension second, etc.
-               Set up the recursion so that the
-               first dimension is copied last
-            */
-            outstride = itemsize;
-            for (k=1; k < nd; k++) {
-                outstride *= shape[k];
-            }
-            for (k=0; k<shape[0]; k++) {
-                _strided_copy_nd(dest, src, nd-1, shape+1,
-                                 strides+1, itemsize,
-                                 fort);
-                dest += outstride;
-                src += strides[0];
-            }
-        }
-    }
-    return;
-}
-
-static int
-_indirect_copy_nd(char *dest, Py_buffer *view, char fort)
-{
-    Py_ssize_t *indices;
-    int k;
-    Py_ssize_t elements;
-    char *ptr;
-    void (*func)(int, Py_ssize_t *, const Py_ssize_t *);
-
-    if (view->ndim > PY_SSIZE_T_MAX / sizeof(Py_ssize_t)) {
-        PyErr_NoMemory();
-        return -1;
-    }
-
-    indices = (Py_ssize_t *)PyMem_Malloc(sizeof(Py_ssize_t)*view->ndim);
-    if (indices == NULL) {
-        PyErr_NoMemory();
-        return -1;
-    }
-    for (k=0; k<view->ndim;k++) {
-        indices[k] = 0;
-    }
-
-    elements = 1;
-    for (k=0; k<view->ndim; k++) {
-        elements *= view->shape[k];
-    }
-    if (fort == 'F') {
-        func = _Py_add_one_to_index_F;
-    }
-    else {
-        func = _Py_add_one_to_index_C;
-    }
-    while (elements--) {
-        func(view->ndim, indices, view->shape);
-        ptr = PyBuffer_GetPointer(view, indices);
-        memcpy(dest, ptr, view->itemsize);
-        dest += view->itemsize;
-    }
-
-    PyMem_Free(indices);
-    return 0;
-}
-
-/*
-   Get a the data from an object as a contiguous chunk of memory (in
-   either 'C' or 'F'ortran order) even if it means copying it into a
-   separate memory area.
-
-   Returns a new reference to a Memory view object.  If no copy is needed,
-   the memory view object points to the original memory and holds a
-   lock on the original.  If a copy is needed, then the memory view object
-   points to a brand-new Bytes object (and holds a memory lock on it).
-
-   buffertype
-
-   PyBUF_READ  buffer only needs to be read-only
-   PyBUF_WRITE buffer needs to be writable (give error if not contiguous)
-   PyBUF_SHADOW buffer needs to be writable so shadow it with
-                a contiguous buffer if it is not. The view will point to
-                the shadow buffer which can be written to and then
-                will be copied back into the other buffer when the memory
-                view is de-allocated.  While the shadow buffer is
-                being used, it will have an exclusive write lock on
-                the original buffer.
- */
-
-PyObject *
-PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char fort)
-{
-    PyMemoryViewObject *mem;
-    PyObject *bytes;
-    Py_buffer *view;
-    int flags;
-    char *dest;
-
-    if (!PyObject_CheckBuffer(obj)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "object does not have the buffer interface");
-        return NULL;
-    }
-
-    mem = PyObject_GC_New(PyMemoryViewObject, &PyMemoryView_Type);
-    if (mem == NULL)
-        return NULL;
-
-    view = &mem->view;
-    flags = PyBUF_FULL_RO;
-    switch(buffertype) {
-    case PyBUF_WRITE:
-        flags = PyBUF_FULL;
-        break;
-    }
-
-    if (PyObject_GetBuffer(obj, view, flags) != 0) {
-        Py_DECREF(mem);
-        return NULL;
-    }
-
-    if (PyBuffer_IsContiguous(view, fort)) {
-        /* no copy needed */
-        Py_INCREF(obj);
-        mem->base = obj;
-        _PyObject_GC_TRACK(mem);
-        return (PyObject *)mem;
-    }
-    /* otherwise a copy is needed */
-    if (buffertype == PyBUF_WRITE) {
-        Py_DECREF(mem);
-        PyErr_SetString(PyExc_BufferError,
-                        "writable contiguous buffer requested "
-                        "for a non-contiguousobject.");
-        return NULL;
-    }
-    bytes = PyBytes_FromStringAndSize(NULL, view->len);
-    if (bytes == NULL) {
-        Py_DECREF(mem);
-        return NULL;
-    }
-    dest = PyBytes_AS_STRING(bytes);
-    /* different copying strategy depending on whether
-       or not any pointer de-referencing is needed
-    */
-    /* strided or in-direct copy */
-    if (view->suboffsets==NULL) {
-        _strided_copy_nd(dest, view->buf, view->ndim, view->shape,
-                         view->strides, view->itemsize, fort);
-    }
-    else {
-        if (_indirect_copy_nd(dest, view, fort) < 0) {
-            Py_DECREF(bytes);
-            Py_DECREF(mem);
-            return NULL;
-        }
-    }
-    if (buffertype == PyBUF_SHADOW) {
-        /* return a shadowed memory-view object */
-        view->buf = dest;
-        mem->base = PyTuple_Pack(2, obj, bytes);
-        Py_DECREF(bytes);
-        if (mem->base == NULL) {
-            Py_DECREF(mem);
-            return NULL;
-        }
-    }
-    else {
-        PyBuffer_Release(view);  /* XXX ? */
-        /* steal the reference */
-        mem->base = bytes;
-    }
-    _PyObject_GC_TRACK(mem);
-    return (PyObject *)mem;
-}
-
-
-static PyObject *
-memory_format_get(PyMemoryViewObject *self)
-{
-    return PyString_FromString(self->view.format);
-}
-
-static PyObject *
-memory_itemsize_get(PyMemoryViewObject *self)
-{
-    return PyLong_FromSsize_t(self->view.itemsize);
-}
-
-static PyObject *
-_IntTupleFromSsizet(int len, Py_ssize_t *vals)
-{
-    int i;
-    PyObject *o;
-    PyObject *intTuple;
-
-    if (vals == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    intTuple = PyTuple_New(len);
-    if (!intTuple) return NULL;
-    for(i=0; i<len; i++) {
-        o = PyLong_FromSsize_t(vals[i]);
-        if (!o) {
-            Py_DECREF(intTuple);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(intTuple, i, o);
-    }
-    return intTuple;
-}
-
-static PyObject *
-memory_shape_get(PyMemoryViewObject *self)
-{
-    return _IntTupleFromSsizet(self->view.ndim, self->view.shape);
-}
-
-static PyObject *
-memory_strides_get(PyMemoryViewObject *self)
-{
-    return _IntTupleFromSsizet(self->view.ndim, self->view.strides);
-}
-
-static PyObject *
-memory_suboffsets_get(PyMemoryViewObject *self)
-{
-    return _IntTupleFromSsizet(self->view.ndim, self->view.suboffsets);
-}
-
-static PyObject *
-memory_readonly_get(PyMemoryViewObject *self)
-{
-    return PyBool_FromLong(self->view.readonly);
-}
-
-static PyObject *
-memory_ndim_get(PyMemoryViewObject *self)
-{
-    return PyLong_FromLong(self->view.ndim);
-}
-
-static PyGetSetDef memory_getsetlist[] ={
-    {"format",          (getter)memory_format_get,      NULL, NULL},
-    {"itemsize",        (getter)memory_itemsize_get,    NULL, NULL},
-    {"shape",           (getter)memory_shape_get,       NULL, NULL},
-    {"strides",         (getter)memory_strides_get,     NULL, NULL},
-    {"suboffsets",      (getter)memory_suboffsets_get,  NULL, NULL},
-    {"readonly",        (getter)memory_readonly_get,    NULL, NULL},
-    {"ndim",            (getter)memory_ndim_get,        NULL, NULL},
-    {NULL, NULL, NULL, NULL},
-};
-
-
-static PyObject *
-memory_tobytes(PyMemoryViewObject *self, PyObject *noargs)
-{
-    Py_buffer view;
-    PyObject *res;
-
-    if (PyObject_GetBuffer((PyObject *)self, &view, PyBUF_SIMPLE) < 0)
-        return NULL;
-
-    res = PyBytes_FromStringAndSize(NULL, view.len);
-    PyBuffer_ToContiguous(PyBytes_AS_STRING(res), &view, view.len, 'C');
-    PyBuffer_Release(&view);
-    return res;
-}
-
-/* TODO: rewrite this function using the struct module to unpack
-   each buffer item */
-
-static PyObject *
-memory_tolist(PyMemoryViewObject *mem, PyObject *noargs)
-{
-    Py_buffer *view = &(mem->view);
-    Py_ssize_t i;
-    PyObject *res, *item;
-    char *buf;
-
-    if (strcmp(view->format, "B") || view->itemsize != 1) {
-        PyErr_SetString(PyExc_NotImplementedError, 
-                "tolist() only supports byte views");
-        return NULL;
-    }
-    if (view->ndim != 1) {
-        PyErr_SetString(PyExc_NotImplementedError, 
-                "tolist() only supports one-dimensional objects");
-        return NULL;
-    }
-    res = PyList_New(view->len);
-    if (res == NULL)
-        return NULL;
-    buf = view->buf;
-    for (i = 0; i < view->len; i++) {
-        item = PyInt_FromLong((unsigned char) *buf);
-        if (item == NULL) {
-            Py_DECREF(res);
-            return NULL;
-        }
-        PyList_SET_ITEM(res, i, item);
-        buf++;
-    }
-    return res;
-}
-
-static PyMethodDef memory_methods[] = {
-    {"tobytes", (PyCFunction)memory_tobytes, METH_NOARGS, NULL},
-    {"tolist", (PyCFunction)memory_tolist, METH_NOARGS, NULL},
-    {NULL,          NULL}           /* sentinel */
-};
-
-
-static void
-memory_dealloc(PyMemoryViewObject *self)
-{
-    _PyObject_GC_UNTRACK(self);
-    if (self->view.obj != NULL) {
-        if (self->base && PyTuple_Check(self->base)) {
-            /* Special case when first element is generic object
-               with buffer interface and the second element is a
-               contiguous "shadow" that must be copied back into
-               the data areay of the first tuple element before
-               releasing the buffer on the first element.
-            */
-
-            PyObject_CopyData(PyTuple_GET_ITEM(self->base,0),
-                              PyTuple_GET_ITEM(self->base,1));
-
-            /* The view member should have readonly == -1 in
-               this instance indicating that the memory can
-               be "locked" and was locked and will be unlocked
-               again after this call.
-            */
-            PyBuffer_Release(&(self->view));
-        }
-        else {
-            PyBuffer_Release(&(self->view));
-        }
-        Py_CLEAR(self->base);
-    }
-    PyObject_GC_Del(self);
-}
-
-static PyObject *
-memory_repr(PyMemoryViewObject *self)
-{
-    return PyString_FromFormat("<memory at %p>", self);
-}
-
-/* Sequence methods */
-static Py_ssize_t
-memory_length(PyMemoryViewObject *self)
-{
-    return get_shape0(&self->view);
-}
-
-/* Alternate version of memory_subcript that only accepts indices.
-   Used by PySeqIter_New().
-*/
-static PyObject *
-memory_item(PyMemoryViewObject *self, Py_ssize_t result)
-{
-    Py_buffer *view = &(self->view);
-
-    if (view->ndim == 0) {
-        PyErr_SetString(PyExc_IndexError,
-                        "invalid indexing of 0-dim memory");
-        return NULL;
-    }
-    if (view->ndim == 1) {
-        /* Return a bytes object */
-        char *ptr;
-        ptr = (char *)view->buf;
-        if (result < 0) {
-            result += get_shape0(view);
-        }
-        if ((result < 0) || (result >= get_shape0(view))) {
-            PyErr_SetString(PyExc_IndexError,
-                                "index out of bounds");
-            return NULL;
-        }
-        if (view->strides == NULL)
-            ptr += view->itemsize * result;
-        else
-            ptr += view->strides[0] * result;
-        if (view->suboffsets != NULL &&
-            view->suboffsets[0] >= 0) {
-            ptr = *((char **)ptr) + view->suboffsets[0];
-        }
-        return PyBytes_FromStringAndSize(ptr, view->itemsize);
-    } else {
-        /* Return a new memory-view object */
-        Py_buffer newview;
-        memset(&newview, 0, sizeof(newview));
-        /* XXX:  This needs to be fixed so it actually returns a sub-view */
-        return PyMemoryView_FromBuffer(&newview);
-    }
-}
-
-/*
-  mem[obj] returns a bytes object holding the data for one element if
-           obj fully indexes the memory view or another memory-view object
-           if it does not.
-
-           0-d memory-view objects can be referenced using ... or () but
-           not with anything else.
- */
-static PyObject *
-memory_subscript(PyMemoryViewObject *self, PyObject *key)
-{
-    Py_buffer *view;
-    view = &(self->view);
-    
-    if (view->ndim == 0) {
-        if (key == Py_Ellipsis ||
-            (PyTuple_Check(key) && PyTuple_GET_SIZE(key)==0)) {
-            Py_INCREF(self);
-            return (PyObject *)self;
-        }
-        else {
-            PyErr_SetString(PyExc_IndexError,
-                                "invalid indexing of 0-dim memory");
-            return NULL;
-        }
-    }
-    if (PyIndex_Check(key)) {
-        Py_ssize_t result;
-        result = PyNumber_AsSsize_t(key, NULL);
-        if (result == -1 && PyErr_Occurred())
-                return NULL;
-        return memory_item(self, result);
-    }
-    else if (PySlice_Check(key)) {
-        Py_ssize_t start, stop, step, slicelength;
-
-        if (PySlice_GetIndicesEx((PySliceObject*)key, get_shape0(view),
-                                 &start, &stop, &step, &slicelength) < 0) {
-            return NULL;
-        }
-    
-        if (step == 1 && view->ndim == 1) {
-            Py_buffer newview;
-            void *newbuf = (char *) view->buf
-                                    + start * view->itemsize;
-            int newflags = view->readonly
-                    ? PyBUF_CONTIG_RO : PyBUF_CONTIG;
-    
-            /* XXX There should be an API to create a subbuffer */
-            if (view->obj != NULL) {
-                if (PyObject_GetBuffer(view->obj, &newview, newflags) == -1)
-                    return NULL;
-            }
-            else {
-                newview = *view;
-            }
-            newview.buf = newbuf;
-            newview.len = slicelength * newview.itemsize;
-            newview.format = view->format;
-            newview.shape = &(newview.smalltable[0]);
-            newview.shape[0] = slicelength;
-            newview.strides = &(newview.itemsize);
-            return PyMemoryView_FromBuffer(&newview);
-        }
-        PyErr_SetNone(PyExc_NotImplementedError);
-        return NULL;
-    }
-    PyErr_Format(PyExc_TypeError,
-        "cannot index memory using \"%.200s\"", 
-        key->ob_type->tp_name);
-    return NULL;
-}
-
-
-/* Need to support assigning memory if we can */
-static int
-memory_ass_sub(PyMemoryViewObject *self, PyObject *key, PyObject *value)
-{
-    Py_ssize_t start, len, bytelen;
-    Py_buffer srcview;
-    Py_buffer *view = &(self->view);
-    char *srcbuf, *destbuf;
-
-    if (view->readonly) {
-        PyErr_SetString(PyExc_TypeError,
-            "cannot modify read-only memory");
-        return -1;
-    }
-    if (value == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "cannot delete memory");
-        return -1;
-    }
-    if (view->ndim != 1) {
-        PyErr_SetNone(PyExc_NotImplementedError);
-        return -1;
-    }
-    if (PyIndex_Check(key)) {
-        start = PyNumber_AsSsize_t(key, NULL);
-        if (start == -1 && PyErr_Occurred())
-            return -1;
-        if (start < 0) {
-            start += get_shape0(view);
-        }
-        if ((start < 0) || (start >= get_shape0(view))) {
-            PyErr_SetString(PyExc_IndexError,
-                            "index out of bounds");
-            return -1;
-        }
-        len = 1;
-    }
-    else if (PySlice_Check(key)) {
-        Py_ssize_t stop, step;
-
-        if (PySlice_GetIndicesEx((PySliceObject*)key, get_shape0(view),
-                         &start, &stop, &step, &len) < 0) {
-            return -1;
-        }
-        if (step != 1) {
-            PyErr_SetNone(PyExc_NotImplementedError);
-            return -1;
-        }
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-            "cannot index memory using \"%.200s\"", 
-            key->ob_type->tp_name);
-        return -1;
-    }
-    if (PyObject_GetBuffer(value, &srcview, PyBUF_CONTIG_RO) == -1) {
-        return -1;
-    }
-    /* XXX should we allow assignment of different item sizes
-       as long as the byte length is the same?
-       (e.g. assign 2 shorts to a 4-byte slice) */
-    if (srcview.itemsize != view->itemsize) {
-        PyErr_Format(PyExc_TypeError,
-            "mismatching item sizes for \"%.200s\" and \"%.200s\"", 
-            view->obj->ob_type->tp_name, srcview.obj->ob_type->tp_name);
-        goto _error;
-    }
-    bytelen = len * view->itemsize;
-    if (bytelen != srcview.len) {
-        PyErr_SetString(PyExc_ValueError,
-            "cannot modify size of memoryview object");
-        goto _error;
-    }
-    /* Do the actual copy */
-    destbuf = (char *) view->buf + start * view->itemsize;
-    srcbuf = (char *) srcview.buf;
-    if (destbuf + bytelen < srcbuf || srcbuf + bytelen < destbuf)
-        /* No overlapping */
-        memcpy(destbuf, srcbuf, bytelen);
-    else
-        memmove(destbuf, srcbuf, bytelen);
-
-    PyBuffer_Release(&srcview);
-    return 0;
-
-_error:
-    PyBuffer_Release(&srcview);
-    return -1;
-}
-
-static PyObject *
-memory_richcompare(PyObject *v, PyObject *w, int op)
-{
-    Py_buffer vv, ww;
-    int equal = 0;
-    PyObject *res;
-
-    vv.obj = NULL;
-    ww.obj = NULL;
-    if (op != Py_EQ && op != Py_NE)
-        goto _notimpl;
-    if (PyObject_GetBuffer(v, &vv, PyBUF_CONTIG_RO) == -1) {
-        PyErr_Clear();
-        goto _notimpl;
-    }
-    if (PyObject_GetBuffer(w, &ww, PyBUF_CONTIG_RO) == -1) {
-        PyErr_Clear();
-        goto _notimpl;
-    }
-
-    if (vv.itemsize != ww.itemsize || vv.len != ww.len)
-        goto _end;
-
-    equal = !memcmp(vv.buf, ww.buf, vv.len);
-
-_end:
-    PyBuffer_Release(&vv);
-    PyBuffer_Release(&ww);
-    if ((equal && op == Py_EQ) || (!equal && op == Py_NE))
-        res = Py_True;
-    else
-        res = Py_False;
-    Py_INCREF(res);
-    return res;
-
-_notimpl:
-    PyBuffer_Release(&vv);
-    PyBuffer_Release(&ww);
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-}
-
-
-static int
-memory_traverse(PyMemoryViewObject *self, visitproc visit, void *arg)
-{
-    if (self->base != NULL)
-        Py_VISIT(self->base);
-    if (self->view.obj != NULL)
-        Py_VISIT(self->view.obj);
-    return 0;
-}
-
-static int
-memory_clear(PyMemoryViewObject *self)
-{
-    Py_CLEAR(self->base);
-    PyBuffer_Release(&self->view);
-    return 0;
-}
-
-
-/* As mapping */
-static PyMappingMethods memory_as_mapping = {
-    (lenfunc)memory_length,               /* mp_length */
-    (binaryfunc)memory_subscript,         /* mp_subscript */
-    (objobjargproc)memory_ass_sub,        /* mp_ass_subscript */
-};
-
-static PySequenceMethods memory_as_sequence = {
-	0,                                  /* sq_length */
-	0,                                  /* sq_concat */
-	0,                                  /* sq_repeat */
-	(ssizeargfunc)memory_item,          /* sq_item */
-};
-
-/* Buffer methods */
-static PyBufferProcs memory_as_buffer = {
-    0,                                    /* bf_getreadbuffer */
-    0,                                    /* bf_getwritebuffer */
-    0,                                    /* bf_getsegcount */
-    0,                                    /* bf_getcharbuffer */
-    (getbufferproc)memory_getbuf,         /* bf_getbuffer */
-    (releasebufferproc)memory_releasebuf, /* bf_releasebuffer */
-};
-
-
-PyTypeObject PyMemoryView_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "memoryview",
-    sizeof(PyMemoryViewObject),
-    0,
-    (destructor)memory_dealloc,               /* tp_dealloc */
-    0,                                        /* tp_print */
-    0,                                        /* tp_getattr */
-    0,                                        /* tp_setattr */
-    0,                                        /* tp_compare */
-    (reprfunc)memory_repr,                    /* tp_repr */
-    0,                                        /* tp_as_number */
-    &memory_as_sequence,                      /* tp_as_sequence */
-    &memory_as_mapping,                       /* tp_as_mapping */
-    0,                                        /* tp_hash */
-    0,                                        /* tp_call */
-    0,                                        /* tp_str */
-    PyObject_GenericGetAttr,                  /* tp_getattro */
-    0,                                        /* tp_setattro */
-    &memory_as_buffer,                        /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_HAVE_NEWBUFFER,            /* tp_flags */
-    memory_doc,                               /* tp_doc */
-    (traverseproc)memory_traverse,            /* tp_traverse */
-    (inquiry)memory_clear,                    /* tp_clear */
-    memory_richcompare,                       /* tp_richcompare */
-    0,                                        /* tp_weaklistoffset */
-    0,                                        /* tp_iter */
-    0,                                        /* tp_iternext */
-    memory_methods,                           /* tp_methods */
-    0,                                        /* tp_members */
-    memory_getsetlist,                        /* tp_getset */
-    0,                                        /* tp_base */
-    0,                                        /* tp_dict */
-    0,                                        /* tp_descr_get */
-    0,                                        /* tp_descr_set */
-    0,                                        /* tp_dictoffset */
-    0,                                        /* tp_init */
-    0,                                        /* tp_alloc */
-    memory_new,                               /* tp_new */
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/methodobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/methodobject.c
deleted file mode 100644
index 5fe69a09..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/methodobject.c
+++ /dev/null
@@ -1,427 +0,0 @@
-
-/* Method object implementation */
-
-#include "Python.h"
-#include "structmember.h"
-
-/* Free list for method objects to safe malloc/free overhead
- * The m_self element is used to chain the objects.
- */
-static PyCFunctionObject *free_list = NULL;
-static int numfree = 0;
-#ifndef PyCFunction_MAXFREELIST
-#define PyCFunction_MAXFREELIST 256
-#endif
-
-PyObject *
-PyCFunction_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module)
-{
-    PyCFunctionObject *op;
-    op = free_list;
-    if (op != NULL) {
-        free_list = (PyCFunctionObject *)(op->m_self);
-        PyObject_INIT(op, &PyCFunction_Type);
-        numfree--;
-    }
-    else {
-        op = PyObject_GC_New(PyCFunctionObject, &PyCFunction_Type);
-        if (op == NULL)
-            return NULL;
-    }
-    op->m_ml = ml;
-    Py_XINCREF(self);
-    op->m_self = self;
-    Py_XINCREF(module);
-    op->m_module = module;
-    _PyObject_GC_TRACK(op);
-    return (PyObject *)op;
-}
-
-PyCFunction
-PyCFunction_GetFunction(PyObject *op)
-{
-    if (!PyCFunction_Check(op)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return ((PyCFunctionObject *)op) -> m_ml -> ml_meth;
-}
-
-PyObject *
-PyCFunction_GetSelf(PyObject *op)
-{
-    if (!PyCFunction_Check(op)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return ((PyCFunctionObject *)op) -> m_self;
-}
-
-int
-PyCFunction_GetFlags(PyObject *op)
-{
-    if (!PyCFunction_Check(op)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    return ((PyCFunctionObject *)op) -> m_ml -> ml_flags;
-}
-
-PyObject *
-PyCFunction_Call(PyObject *func, PyObject *arg, PyObject *kw)
-{
-    PyCFunctionObject* f = (PyCFunctionObject*)func;
-    PyCFunction meth = PyCFunction_GET_FUNCTION(func);
-    PyObject *self = PyCFunction_GET_SELF(func);
-    Py_ssize_t size;
-
-    switch (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST)) {
-    case METH_VARARGS:
-        if (kw == NULL || PyDict_Size(kw) == 0)
-            return (*meth)(self, arg);
-        break;
-    case METH_VARARGS | METH_KEYWORDS:
-    case METH_OLDARGS | METH_KEYWORDS:
-        return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);
-    case METH_NOARGS:
-        if (kw == NULL || PyDict_Size(kw) == 0) {
-            size = PyTuple_GET_SIZE(arg);
-            if (size == 0)
-                return (*meth)(self, NULL);
-            PyErr_Format(PyExc_TypeError,
-                "%.200s() takes no arguments (%zd given)",
-                f->m_ml->ml_name, size);
-            return NULL;
-        }
-        break;
-    case METH_O:
-        if (kw == NULL || PyDict_Size(kw) == 0) {
-            size = PyTuple_GET_SIZE(arg);
-            if (size == 1)
-                return (*meth)(self, PyTuple_GET_ITEM(arg, 0));
-            PyErr_Format(PyExc_TypeError,
-                "%.200s() takes exactly one argument (%zd given)",
-                f->m_ml->ml_name, size);
-            return NULL;
-        }
-        break;
-    case METH_OLDARGS:
-        /* the really old style */
-        if (kw == NULL || PyDict_Size(kw) == 0) {
-            size = PyTuple_GET_SIZE(arg);
-            if (size == 1)
-                arg = PyTuple_GET_ITEM(arg, 0);
-            else if (size == 0)
-                arg = NULL;
-            return (*meth)(self, arg);
-        }
-        break;
-    default:
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
-                 f->m_ml->ml_name);
-    return NULL;
-}
-
-/* Methods (the standard built-in methods, that is) */
-
-static void
-meth_dealloc(PyCFunctionObject *m)
-{
-    _PyObject_GC_UNTRACK(m);
-    Py_XDECREF(m->m_self);
-    Py_XDECREF(m->m_module);
-    if (numfree < PyCFunction_MAXFREELIST) {
-        m->m_self = (PyObject *)free_list;
-        free_list = m;
-        numfree++;
-    }
-    else {
-        PyObject_GC_Del(m);
-    }
-}
-
-static PyObject *
-meth_get__doc__(PyCFunctionObject *m, void *closure)
-{
-    const char *doc = m->m_ml->ml_doc;
-
-    if (doc != NULL)
-        return PyString_FromString(doc);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-meth_get__name__(PyCFunctionObject *m, void *closure)
-{
-    return PyString_FromString(m->m_ml->ml_name);
-}
-
-static int
-meth_traverse(PyCFunctionObject *m, visitproc visit, void *arg)
-{
-    Py_VISIT(m->m_self);
-    Py_VISIT(m->m_module);
-    return 0;
-}
-
-static PyObject *
-meth_get__self__(PyCFunctionObject *m, void *closure)
-{
-    PyObject *self;
-    if (PyEval_GetRestricted()) {
-        PyErr_SetString(PyExc_RuntimeError,
-            "method.__self__ not accessible in restricted mode");
-        return NULL;
-    }
-    self = m->m_self;
-    if (self == NULL)
-        self = Py_None;
-    Py_INCREF(self);
-    return self;
-}
-
-static PyGetSetDef meth_getsets [] = {
-    {"__doc__",  (getter)meth_get__doc__,  NULL, NULL},
-    {"__name__", (getter)meth_get__name__, NULL, NULL},
-    {"__self__", (getter)meth_get__self__, NULL, NULL},
-    {0}
-};
-
-#define OFF(x) offsetof(PyCFunctionObject, x)
-
-static PyMemberDef meth_members[] = {
-    {"__module__",    T_OBJECT,     OFF(m_module), PY_WRITE_RESTRICTED},
-    {NULL}
-};
-
-static PyObject *
-meth_repr(PyCFunctionObject *m)
-{
-    if (m->m_self == NULL)
-        return PyString_FromFormat("<built-in function %s>",
-                                   m->m_ml->ml_name);
-    return PyString_FromFormat("<built-in method %s of %s object at %p>",
-                               m->m_ml->ml_name,
-                               m->m_self->ob_type->tp_name,
-                               m->m_self);
-}
-
-static int
-meth_compare(PyCFunctionObject *a, PyCFunctionObject *b)
-{
-    if (a->m_self != b->m_self)
-        return (a->m_self < b->m_self) ? -1 : 1;
-    if (a->m_ml->ml_meth == b->m_ml->ml_meth)
-        return 0;
-    if (strcmp(a->m_ml->ml_name, b->m_ml->ml_name) < 0)
-        return -1;
-    else
-        return 1;
-}
-
-static PyObject *
-meth_richcompare(PyObject *self, PyObject *other, int op)
-{
-    PyCFunctionObject *a, *b;
-    PyObject *res;
-    int eq;
-
-    if (op != Py_EQ && op != Py_NE) {
-        /* Py3K warning if comparison isn't == or !=.  */
-        if (PyErr_WarnPy3k("builtin_function_or_method order "
-                           "comparisons not supported in 3.x", 1) < 0) {
-            return NULL;
-        }
-
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    else if (!PyCFunction_Check(self) || !PyCFunction_Check(other)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    a = (PyCFunctionObject *)self;
-    b = (PyCFunctionObject *)other;
-    eq = a->m_self == b->m_self;
-    if (eq)
-        eq = a->m_ml->ml_meth == b->m_ml->ml_meth;
-    if (op == Py_EQ)
-        res = eq ? Py_True : Py_False;
-    else
-        res = eq ? Py_False : Py_True;
-    Py_INCREF(res);
-    return res;
-}
-
-static long
-meth_hash(PyCFunctionObject *a)
-{
-    long x,y;
-    if (a->m_self == NULL)
-        x = 0;
-    else {
-        x = PyObject_Hash(a->m_self);
-        if (x == -1)
-            return -1;
-    }
-    y = _Py_HashPointer((void*)(a->m_ml->ml_meth));
-    if (y == -1)
-        return -1;
-    x ^= y;
-    if (x == -1)
-        x = -2;
-    return x;
-}
-
-
-PyTypeObject PyCFunction_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "builtin_function_or_method",
-    sizeof(PyCFunctionObject),
-    0,
-    (destructor)meth_dealloc,                   /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    (cmpfunc)meth_compare,                      /* tp_compare */
-    (reprfunc)meth_repr,                        /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    (hashfunc)meth_hash,                        /* tp_hash */
-    PyCFunction_Call,                           /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)meth_traverse,                /* tp_traverse */
-    0,                                          /* tp_clear */
-    meth_richcompare,                                           /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    meth_members,                               /* tp_members */
-    meth_getsets,                               /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-};
-
-/* List all methods in a chain -- helper for findmethodinchain */
-
-static PyObject *
-listmethodchain(PyMethodChain *chain)
-{
-    PyMethodChain *c;
-    PyMethodDef *ml;
-    int i, n;
-    PyObject *v;
-
-    n = 0;
-    for (c = chain; c != NULL; c = c->link) {
-        for (ml = c->methods; ml->ml_name != NULL; ml++)
-            n++;
-    }
-    v = PyList_New(n);
-    if (v == NULL)
-        return NULL;
-    i = 0;
-    for (c = chain; c != NULL; c = c->link) {
-        for (ml = c->methods; ml->ml_name != NULL; ml++) {
-            PyList_SetItem(v, i, PyString_FromString(ml->ml_name));
-            i++;
-        }
-    }
-    if (PyErr_Occurred()) {
-        Py_DECREF(v);
-        return NULL;
-    }
-    PyList_Sort(v);
-    return v;
-}
-
-/* Find a method in a method chain */
-
-PyObject *
-Py_FindMethodInChain(PyMethodChain *chain, PyObject *self, const char *name)
-{
-    if (name[0] == '_' && name[1] == '_') {
-        if (strcmp(name, "__methods__") == 0) {
-            if (PyErr_WarnPy3k("__methods__ not supported in 3.x",
-                               1) < 0)
-                return NULL;
-            return listmethodchain(chain);
-        }
-        if (strcmp(name, "__doc__") == 0) {
-            const char *doc = self->ob_type->tp_doc;
-            if (doc != NULL)
-                return PyString_FromString(doc);
-        }
-    }
-    while (chain != NULL) {
-        PyMethodDef *ml = chain->methods;
-        for (; ml->ml_name != NULL; ml++) {
-            if (name[0] == ml->ml_name[0] &&
-                strcmp(name+1, ml->ml_name+1) == 0)
-                /* XXX */
-                return PyCFunction_New(ml, self);
-        }
-        chain = chain->link;
-    }
-    PyErr_SetString(PyExc_AttributeError, name);
-    return NULL;
-}
-
-/* Find a method in a single method list */
-
-PyObject *
-Py_FindMethod(PyMethodDef *methods, PyObject *self, const char *name)
-{
-    PyMethodChain chain;
-    chain.methods = methods;
-    chain.link = NULL;
-    return Py_FindMethodInChain(&chain, self, name);
-}
-
-/* Clear out the free list */
-
-int
-PyCFunction_ClearFreeList(void)
-{
-    int freelist_size = numfree;
-
-    while (free_list) {
-        PyCFunctionObject *v = free_list;
-        free_list = (PyCFunctionObject *)(v->m_self);
-        PyObject_GC_Del(v);
-        numfree--;
-    }
-    assert(numfree == 0);
-    return freelist_size;
-}
-
-void
-PyCFunction_Fini(void)
-{
-    (void)PyCFunction_ClearFreeList();
-}
-
-/* PyCFunction_New() is now just a macro that calls PyCFunction_NewEx(),
-   but it's part of the API so we need to keep a function around that
-   existing C extensions can call.
-*/
-
-#undef PyCFunction_New
-PyAPI_FUNC(PyObject *) PyCFunction_New(PyMethodDef *, PyObject *);
-
-PyObject *
-PyCFunction_New(PyMethodDef *ml, PyObject *self)
-{
-    return PyCFunction_NewEx(ml, self, NULL);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/moduleobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/moduleobject.c
deleted file mode 100644
index 19cadd2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/moduleobject.c
+++ /dev/null
@@ -1,260 +0,0 @@
-
-/* Module object implementation */
-
-#include "Python.h"
-#include "structmember.h"
-
-typedef struct {
-    PyObject_HEAD
-    PyObject *md_dict;
-} PyModuleObject;
-
-static PyMemberDef module_members[] = {
-    {"__dict__", T_OBJECT, offsetof(PyModuleObject, md_dict), READONLY},
-    {0}
-};
-
-PyObject *
-PyModule_New(const char *name)
-{
-    PyModuleObject *m;
-    PyObject *nameobj;
-    m = PyObject_GC_New(PyModuleObject, &PyModule_Type);
-    if (m == NULL)
-        return NULL;
-    nameobj = PyString_FromString(name);
-    m->md_dict = PyDict_New();
-    if (m->md_dict == NULL || nameobj == NULL)
-        goto fail;
-    if (PyDict_SetItemString(m->md_dict, "__name__", nameobj) != 0)
-        goto fail;
-    if (PyDict_SetItemString(m->md_dict, "__doc__", Py_None) != 0)
-        goto fail;
-    if (PyDict_SetItemString(m->md_dict, "__package__", Py_None) != 0)
-        goto fail;
-    Py_DECREF(nameobj);
-    PyObject_GC_Track(m);
-    return (PyObject *)m;
-
- fail:
-    Py_XDECREF(nameobj);
-    Py_DECREF(m);
-    return NULL;
-}
-
-PyObject *
-PyModule_GetDict(PyObject *m)
-{
-    PyObject *d;
-    if (!PyModule_Check(m)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    d = ((PyModuleObject *)m) -> md_dict;
-    if (d == NULL)
-        ((PyModuleObject *)m) -> md_dict = d = PyDict_New();
-    return d;
-}
-
-char *
-PyModule_GetName(PyObject *m)
-{
-    PyObject *d;
-    PyObject *nameobj;
-    if (!PyModule_Check(m)) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    d = ((PyModuleObject *)m)->md_dict;
-    if (d == NULL ||
-        (nameobj = PyDict_GetItemString(d, "__name__")) == NULL ||
-        !PyString_Check(nameobj))
-    {
-        PyErr_SetString(PyExc_SystemError, "nameless module");
-        return NULL;
-    }
-    return PyString_AsString(nameobj);
-}
-
-char *
-PyModule_GetFilename(PyObject *m)
-{
-    PyObject *d;
-    PyObject *fileobj;
-    if (!PyModule_Check(m)) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    d = ((PyModuleObject *)m)->md_dict;
-    if (d == NULL ||
-        (fileobj = PyDict_GetItemString(d, "__file__")) == NULL ||
-        !PyString_Check(fileobj))
-    {
-        PyErr_SetString(PyExc_SystemError, "module filename missing");
-        return NULL;
-    }
-    return PyString_AsString(fileobj);
-}
-
-void
-_PyModule_Clear(PyObject *m)
-{
-    /* To make the execution order of destructors for global
-       objects a bit more predictable, we first zap all objects
-       whose name starts with a single underscore, before we clear
-       the entire dictionary.  We zap them by replacing them with
-       None, rather than deleting them from the dictionary, to
-       avoid rehashing the dictionary (to some extent). */
-
-    Py_ssize_t pos;
-    PyObject *key, *value;
-    PyObject *d;
-
-    d = ((PyModuleObject *)m)->md_dict;
-    if (d == NULL)
-        return;
-
-    /* First, clear only names starting with a single underscore */
-    pos = 0;
-    while (PyDict_Next(d, &pos, &key, &value)) {
-        if (value != Py_None && PyString_Check(key)) {
-            char *s = PyString_AsString(key);
-            if (s[0] == '_' && s[1] != '_') {
-                if (Py_VerboseFlag > 1)
-                    PySys_WriteStderr("#   clear[1] %s\n", s);
-                PyDict_SetItem(d, key, Py_None);
-            }
-        }
-    }
-
-    /* Next, clear all names except for __builtins__ */
-    pos = 0;
-    while (PyDict_Next(d, &pos, &key, &value)) {
-        if (value != Py_None && PyString_Check(key)) {
-            char *s = PyString_AsString(key);
-            if (s[0] != '_' || strcmp(s, "__builtins__") != 0) {
-                if (Py_VerboseFlag > 1)
-                    PySys_WriteStderr("#   clear[2] %s\n", s);
-                PyDict_SetItem(d, key, Py_None);
-            }
-        }
-    }
-
-    /* Note: we leave __builtins__ in place, so that destructors
-       of non-global objects defined in this module can still use
-       builtins, in particularly 'None'. */
-
-}
-
-/* Methods */
-
-static int
-module_init(PyModuleObject *m, PyObject *args, PyObject *kwds)
-{
-    static char *kwlist[] = {"name", "doc", NULL};
-    PyObject *dict, *name = Py_None, *doc = Py_None;
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "S|O:module.__init__",
-                                     kwlist, &name, &doc))
-        return -1;
-    dict = m->md_dict;
-    if (dict == NULL) {
-        dict = PyDict_New();
-        if (dict == NULL)
-            return -1;
-        m->md_dict = dict;
-    }
-    if (PyDict_SetItemString(dict, "__name__", name) < 0)
-        return -1;
-    if (PyDict_SetItemString(dict, "__doc__", doc) < 0)
-        return -1;
-    return 0;
-}
-
-static void
-module_dealloc(PyModuleObject *m)
-{
-    PyObject_GC_UnTrack(m);
-    if (m->md_dict != NULL) {
-        _PyModule_Clear((PyObject *)m);
-        Py_DECREF(m->md_dict);
-    }
-    Py_TYPE(m)->tp_free((PyObject *)m);
-}
-
-static PyObject *
-module_repr(PyModuleObject *m)
-{
-    char *name;
-    char *filename;
-
-    name = PyModule_GetName((PyObject *)m);
-    if (name == NULL) {
-        PyErr_Clear();
-        name = "?";
-    }
-    filename = PyModule_GetFilename((PyObject *)m);
-    if (filename == NULL) {
-        PyErr_Clear();
-        return PyString_FromFormat("<module '%s' (built-in)>", name);
-    }
-    return PyString_FromFormat("<module '%s' from '%s'>", name, filename);
-}
-
-/* We only need a traverse function, no clear function: If the module
-   is in a cycle, md_dict will be cleared as well, which will break
-   the cycle. */
-static int
-module_traverse(PyModuleObject *m, visitproc visit, void *arg)
-{
-    Py_VISIT(m->md_dict);
-    return 0;
-}
-
-PyDoc_STRVAR(module_doc,
-"module(name[, doc])\n\
-\n\
-Create a module object.\n\
-The name must be a string; the optional doc argument can have any type.");
-
-PyTypeObject PyModule_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "module",                                   /* tp_name */
-    sizeof(PyModuleObject),                     /* tp_size */
-    0,                                          /* tp_itemsize */
-    (destructor)module_dealloc,                 /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)module_repr,                      /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    PyObject_GenericSetAttr,                    /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,                    /* tp_flags */
-    module_doc,                                 /* tp_doc */
-    (traverseproc)module_traverse,              /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    module_members,                             /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    offsetof(PyModuleObject, md_dict),          /* tp_dictoffset */
-    (initproc)module_init,                      /* tp_init */
-    PyType_GenericAlloc,                        /* tp_alloc */
-    PyType_GenericNew,                          /* tp_new */
-    PyObject_GC_Del,                            /* tp_free */
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/object.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/object.c
deleted file mode 100644
index 2cdc043..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/object.c
+++ /dev/null
@@ -1,2455 +0,0 @@
-
-/* Generic object operations; and implementation of None (NoObject) */
-
-#include "Python.h"
-#include "frameobject.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef Py_REF_DEBUG
-Py_ssize_t _Py_RefTotal;
-
-Py_ssize_t
-_Py_GetRefTotal(void)
-{
-    PyObject *o;
-    Py_ssize_t total = _Py_RefTotal;
-    /* ignore the references to the dummy object of the dicts and sets
-       because they are not reliable and not useful (now that the
-       hash table code is well-tested) */
-    o = _PyDict_Dummy();
-    if (o != NULL)
-        total -= o->ob_refcnt;
-    o = _PySet_Dummy();
-    if (o != NULL)
-        total -= o->ob_refcnt;
-    return total;
-}
-#endif /* Py_REF_DEBUG */
-
-int Py_DivisionWarningFlag;
-int Py_Py3kWarningFlag;
-
-/* Object allocation routines used by NEWOBJ and NEWVAROBJ macros.
-   These are used by the individual routines for object creation.
-   Do not call them otherwise, they do not initialize the object! */
-
-#ifdef Py_TRACE_REFS
-/* Head of circular doubly-linked list of all objects.  These are linked
- * together via the _ob_prev and _ob_next members of a PyObject, which
- * exist only in a Py_TRACE_REFS build.
- */
-static PyObject refchain = {&refchain, &refchain};
-
-/* Insert op at the front of the list of all objects.  If force is true,
- * op is added even if _ob_prev and _ob_next are non-NULL already.  If
- * force is false amd _ob_prev or _ob_next are non-NULL, do nothing.
- * force should be true if and only if op points to freshly allocated,
- * uninitialized memory, or you've unlinked op from the list and are
- * relinking it into the front.
- * Note that objects are normally added to the list via _Py_NewReference,
- * which is called by PyObject_Init.  Not all objects are initialized that
- * way, though; exceptions include statically allocated type objects, and
- * statically allocated singletons (like Py_True and Py_None).
- */
-void
-_Py_AddToAllObjects(PyObject *op, int force)
-{
-#ifdef  Py_DEBUG
-    if (!force) {
-        /* If it's initialized memory, op must be in or out of
-         * the list unambiguously.
-         */
-        assert((op->_ob_prev == NULL) == (op->_ob_next == NULL));
-    }
-#endif
-    if (force || op->_ob_prev == NULL) {
-        op->_ob_next = refchain._ob_next;
-        op->_ob_prev = &refchain;
-        refchain._ob_next->_ob_prev = op;
-        refchain._ob_next = op;
-    }
-}
-#endif  /* Py_TRACE_REFS */
-
-#ifdef COUNT_ALLOCS
-static PyTypeObject *type_list;
-/* All types are added to type_list, at least when
-   they get one object created. That makes them
-   immortal, which unfortunately contributes to
-   garbage itself. If unlist_types_without_objects
-   is set, they will be removed from the type_list
-   once the last object is deallocated. */
-static int unlist_types_without_objects;
-extern Py_ssize_t tuple_zero_allocs, fast_tuple_allocs;
-extern Py_ssize_t quick_int_allocs, quick_neg_int_allocs;
-extern Py_ssize_t null_strings, one_strings;
-void
-dump_counts(FILE* f)
-{
-    PyTypeObject *tp;
-
-    for (tp = type_list; tp; tp = tp->tp_next)
-        fprintf(f, "%s alloc'd: %" PY_FORMAT_SIZE_T "d, "
-            "freed: %" PY_FORMAT_SIZE_T "d, "
-            "max in use: %" PY_FORMAT_SIZE_T "d\n",
-            tp->tp_name, tp->tp_allocs, tp->tp_frees,
-            tp->tp_maxalloc);
-    fprintf(f, "fast tuple allocs: %" PY_FORMAT_SIZE_T "d, "
-        "empty: %" PY_FORMAT_SIZE_T "d\n",
-        fast_tuple_allocs, tuple_zero_allocs);
-    fprintf(f, "fast int allocs: pos: %" PY_FORMAT_SIZE_T "d, "
-        "neg: %" PY_FORMAT_SIZE_T "d\n",
-        quick_int_allocs, quick_neg_int_allocs);
-    fprintf(f, "null strings: %" PY_FORMAT_SIZE_T "d, "
-        "1-strings: %" PY_FORMAT_SIZE_T "d\n",
-        null_strings, one_strings);
-}
-
-PyObject *
-get_counts(void)
-{
-    PyTypeObject *tp;
-    PyObject *result;
-    PyObject *v;
-
-    result = PyList_New(0);
-    if (result == NULL)
-        return NULL;
-    for (tp = type_list; tp; tp = tp->tp_next) {
-        v = Py_BuildValue("(snnn)", tp->tp_name, tp->tp_allocs,
-                          tp->tp_frees, tp->tp_maxalloc);
-        if (v == NULL) {
-            Py_DECREF(result);
-            return NULL;
-        }
-        if (PyList_Append(result, v) < 0) {
-            Py_DECREF(v);
-            Py_DECREF(result);
-            return NULL;
-        }
-        Py_DECREF(v);
-    }
-    return result;
-}
-
-void
-inc_count(PyTypeObject *tp)
-{
-    if (tp->tp_next == NULL && tp->tp_prev == NULL) {
-        /* first time; insert in linked list */
-        if (tp->tp_next != NULL) /* sanity check */
-            Py_FatalError("XXX inc_count sanity check");
-        if (type_list)
-            type_list->tp_prev = tp;
-        tp->tp_next = type_list;
-        /* Note that as of Python 2.2, heap-allocated type objects
-         * can go away, but this code requires that they stay alive
-         * until program exit.  That's why we're careful with
-         * refcounts here.  type_list gets a new reference to tp,
-         * while ownership of the reference type_list used to hold
-         * (if any) was transferred to tp->tp_next in the line above.
-         * tp is thus effectively immortal after this.
-         */
-        Py_INCREF(tp);
-        type_list = tp;
-#ifdef Py_TRACE_REFS
-        /* Also insert in the doubly-linked list of all objects,
-         * if not already there.
-         */
-        _Py_AddToAllObjects((PyObject *)tp, 0);
-#endif
-    }
-    tp->tp_allocs++;
-    if (tp->tp_allocs - tp->tp_frees > tp->tp_maxalloc)
-        tp->tp_maxalloc = tp->tp_allocs - tp->tp_frees;
-}
-
-void dec_count(PyTypeObject *tp)
-{
-    tp->tp_frees++;
-    if (unlist_types_without_objects &&
-        tp->tp_allocs == tp->tp_frees) {
-        /* unlink the type from type_list */
-        if (tp->tp_prev)
-            tp->tp_prev->tp_next = tp->tp_next;
-        else
-            type_list = tp->tp_next;
-        if (tp->tp_next)
-            tp->tp_next->tp_prev = tp->tp_prev;
-        tp->tp_next = tp->tp_prev = NULL;
-        Py_DECREF(tp);
-    }
-}
-
-#endif
-
-#ifdef Py_REF_DEBUG
-/* Log a fatal error; doesn't return. */
-void
-_Py_NegativeRefcount(const char *fname, int lineno, PyObject *op)
-{
-    char buf[300];
-
-    PyOS_snprintf(buf, sizeof(buf),
-                  "%s:%i object at %p has negative ref count "
-                  "%" PY_FORMAT_SIZE_T "d",
-                  fname, lineno, op, op->ob_refcnt);
-    Py_FatalError(buf);
-}
-
-#endif /* Py_REF_DEBUG */
-
-void
-Py_IncRef(PyObject *o)
-{
-    Py_XINCREF(o);
-}
-
-void
-Py_DecRef(PyObject *o)
-{
-    Py_XDECREF(o);
-}
-
-PyObject *
-PyObject_Init(PyObject *op, PyTypeObject *tp)
-{
-    if (op == NULL)
-        return PyErr_NoMemory();
-    /* Any changes should be reflected in PyObject_INIT (objimpl.h) */
-    Py_TYPE(op) = tp;
-    _Py_NewReference(op);
-    return op;
-}
-
-PyVarObject *
-PyObject_InitVar(PyVarObject *op, PyTypeObject *tp, Py_ssize_t size)
-{
-    if (op == NULL)
-        return (PyVarObject *) PyErr_NoMemory();
-    /* Any changes should be reflected in PyObject_INIT_VAR */
-    op->ob_size = size;
-    Py_TYPE(op) = tp;
-    _Py_NewReference((PyObject *)op);
-    return op;
-}
-
-PyObject *
-_PyObject_New(PyTypeObject *tp)
-{
-    PyObject *op;
-    op = (PyObject *) PyObject_MALLOC(_PyObject_SIZE(tp));
-    if (op == NULL)
-        return PyErr_NoMemory();
-    return PyObject_INIT(op, tp);
-}
-
-PyVarObject *
-_PyObject_NewVar(PyTypeObject *tp, Py_ssize_t nitems)
-{
-    PyVarObject *op;
-    const size_t size = _PyObject_VAR_SIZE(tp, nitems);
-    op = (PyVarObject *) PyObject_MALLOC(size);
-    if (op == NULL)
-        return (PyVarObject *)PyErr_NoMemory();
-    return PyObject_INIT_VAR(op, tp, nitems);
-}
-
-/* for binary compatibility with 2.2 */
-#undef _PyObject_Del
-void
-_PyObject_Del(PyObject *op)
-{
-    PyObject_FREE(op);
-}
-
-/* Implementation of PyObject_Print with recursion checking */
-static int
-internal_print(PyObject *op, FILE *fp, int flags, int nesting)
-{
-    int ret = 0;
-    if (nesting > 10) {
-        PyErr_SetString(PyExc_RuntimeError, "print recursion");
-        return -1;
-    }
-    if (PyErr_CheckSignals())
-        return -1;
-#ifdef USE_STACKCHECK
-    if (PyOS_CheckStack()) {
-        PyErr_SetString(PyExc_MemoryError, "stack overflow");
-        return -1;
-    }
-#endif
-    clearerr(fp); /* Clear any previous error condition */
-    if (op == NULL) {
-        Py_BEGIN_ALLOW_THREADS
-        fprintf(fp, "<nil>");
-        Py_END_ALLOW_THREADS
-    }
-    else {
-        if (op->ob_refcnt <= 0)
-            /* XXX(twouters) cast refcount to long until %zd is
-               universally available */
-            Py_BEGIN_ALLOW_THREADS
-            fprintf(fp, "<refcnt %ld at %p>",
-                (long)op->ob_refcnt, op);
-            Py_END_ALLOW_THREADS
-        else if (Py_TYPE(op)->tp_print == NULL) {
-            PyObject *s;
-            if (flags & Py_PRINT_RAW)
-                s = PyObject_Str(op);
-            else
-                s = PyObject_Repr(op);
-            if (s == NULL)
-                ret = -1;
-            else {
-                ret = internal_print(s, fp, Py_PRINT_RAW,
-                                     nesting+1);
-            }
-            Py_XDECREF(s);
-        }
-        else
-            ret = (*Py_TYPE(op)->tp_print)(op, fp, flags);
-    }
-    if (ret == 0) {
-        if (ferror(fp)) {
-            PyErr_SetFromErrno(PyExc_IOError);
-            clearerr(fp);
-            ret = -1;
-        }
-    }
-    return ret;
-}
-
-int
-PyObject_Print(PyObject *op, FILE *fp, int flags)
-{
-    return internal_print(op, fp, flags, 0);
-}
-
-
-/* For debugging convenience.  See Misc/gdbinit for some useful gdb hooks */
-void _PyObject_Dump(PyObject* op)
-{
-    if (op == NULL)
-        fprintf(stderr, "NULL\n");
-    else {
-#ifdef WITH_THREAD
-        PyGILState_STATE gil;
-#endif
-        fprintf(stderr, "object  : ");
-#ifdef WITH_THREAD
-        gil = PyGILState_Ensure();
-#endif
-        (void)PyObject_Print(op, stderr, 0);
-#ifdef WITH_THREAD
-        PyGILState_Release(gil);
-#endif
-        /* XXX(twouters) cast refcount to long until %zd is
-           universally available */
-        fprintf(stderr, "\n"
-            "type    : %s\n"
-            "refcount: %ld\n"
-            "address : %p\n",
-            Py_TYPE(op)==NULL ? "NULL" : Py_TYPE(op)->tp_name,
-            (long)op->ob_refcnt,
-            op);
-    }
-}
-
-PyObject *
-PyObject_Repr(PyObject *v)
-{
-    if (PyErr_CheckSignals())
-        return NULL;
-#ifdef USE_STACKCHECK
-    if (PyOS_CheckStack()) {
-        PyErr_SetString(PyExc_MemoryError, "stack overflow");
-        return NULL;
-    }
-#endif
-    if (v == NULL)
-        return PyString_FromString("<NULL>");
-    else if (Py_TYPE(v)->tp_repr == NULL)
-        return PyString_FromFormat("<%s object at %p>",
-                                   Py_TYPE(v)->tp_name, v);
-    else {
-        PyObject *res;
-        res = (*Py_TYPE(v)->tp_repr)(v);
-        if (res == NULL)
-            return NULL;
-#ifdef Py_USING_UNICODE
-        if (PyUnicode_Check(res)) {
-            PyObject* str;
-            str = PyUnicode_AsEncodedString(res, NULL, NULL);
-            Py_DECREF(res);
-            if (str)
-                res = str;
-            else
-                return NULL;
-        }
-#endif
-        if (!PyString_Check(res)) {
-            PyErr_Format(PyExc_TypeError,
-                         "__repr__ returned non-string (type %.200s)",
-                         Py_TYPE(res)->tp_name);
-            Py_DECREF(res);
-            return NULL;
-        }
-        return res;
-    }
-}
-
-PyObject *
-_PyObject_Str(PyObject *v)
-{
-    PyObject *res;
-    int type_ok;
-    if (v == NULL)
-        return PyString_FromString("<NULL>");
-    if (PyString_CheckExact(v)) {
-        Py_INCREF(v);
-        return v;
-    }
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_CheckExact(v)) {
-        Py_INCREF(v);
-        return v;
-    }
-#endif
-    if (Py_TYPE(v)->tp_str == NULL)
-        return PyObject_Repr(v);
-
-    /* It is possible for a type to have a tp_str representation that loops
-       infinitely. */
-    if (Py_EnterRecursiveCall(" while getting the str of an object"))
-        return NULL;
-    res = (*Py_TYPE(v)->tp_str)(v);
-    Py_LeaveRecursiveCall();
-    if (res == NULL)
-        return NULL;
-    type_ok = PyString_Check(res);
-#ifdef Py_USING_UNICODE
-    type_ok = type_ok || PyUnicode_Check(res);
-#endif
-    if (!type_ok) {
-        PyErr_Format(PyExc_TypeError,
-                     "__str__ returned non-string (type %.200s)",
-                     Py_TYPE(res)->tp_name);
-        Py_DECREF(res);
-        return NULL;
-    }
-    return res;
-}
-
-PyObject *
-PyObject_Str(PyObject *v)
-{
-    PyObject *res = _PyObject_Str(v);
-    if (res == NULL)
-        return NULL;
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(res)) {
-        PyObject* str;
-        str = PyUnicode_AsEncodedString(res, NULL, NULL);
-        Py_DECREF(res);
-        if (str)
-            res = str;
-        else
-            return NULL;
-    }
-#endif
-    assert(PyString_Check(res));
-    return res;
-}
-
-#ifdef Py_USING_UNICODE
-PyObject *
-PyObject_Unicode(PyObject *v)
-{
-    PyObject *res       = NULL;
-    PyObject *func      = NULL;
-    PyObject *str       = NULL;
-    int unicode_method_found = 0;
-    static PyObject *unicodestr   = NULL;
-
-    if (v == NULL) {
-        res = PyString_FromString("<NULL>");
-        if (res == NULL)
-            return NULL;
-        str = PyUnicode_FromEncodedObject(res, NULL, "strict");
-        Py_DECREF(res);
-        return str;
-    } else if (PyUnicode_CheckExact(v)) {
-        Py_INCREF(v);
-        return v;
-    }
-
-    if (PyInstance_Check(v)) {
-        /* We're an instance of a classic class */
-        /* Try __unicode__ from the instance -- alas we have no type */
-        func = PyObject_GetAttr(v, unicodestr);
-        if (func != NULL) {
-            unicode_method_found = 1;
-            res = PyObject_CallFunctionObjArgs(func, NULL);
-            Py_DECREF(func);
-        }
-        else {
-            PyErr_Clear();
-        }
-    }
-    else {
-        /* Not a classic class instance, try __unicode__. */
-        func = _PyObject_LookupSpecial(v, "__unicode__", &unicodestr);
-        if (func != NULL) {
-            unicode_method_found = 1;
-            res = PyObject_CallFunctionObjArgs(func, NULL);
-            Py_DECREF(func);
-        }
-        else if (PyErr_Occurred())
-            return NULL;
-    }
-
-    /* Didn't find __unicode__ */
-    if (!unicode_method_found) {
-        if (PyUnicode_Check(v)) {
-            /* For a Unicode subtype that's didn't overwrite __unicode__,
-               return a true Unicode object with the same data. */
-            return PyUnicode_FromUnicode(PyUnicode_AS_UNICODE(v),
-                                         PyUnicode_GET_SIZE(v));
-        }
-        if (PyString_CheckExact(v)) {
-            Py_INCREF(v);
-            res = v;
-        }
-        else {
-            if (Py_TYPE(v)->tp_str != NULL)
-                res = (*Py_TYPE(v)->tp_str)(v);
-            else
-                res = PyObject_Repr(v);
-        }
-    }
-
-    if (res == NULL)
-        return NULL;
-    if (!PyUnicode_Check(res)) {
-        str = PyUnicode_FromEncodedObject(res, NULL, "strict");
-        Py_DECREF(res);
-        res = str;
-    }
-    return res;
-}
-#endif
-
-
-/* Helper to warn about deprecated tp_compare return values.  Return:
-   -2 for an exception;
-   -1 if v <  w;
-    0 if v == w;
-    1 if v  > w.
-   (This function cannot return 2.)
-*/
-static int
-adjust_tp_compare(int c)
-{
-    if (PyErr_Occurred()) {
-        if (c != -1 && c != -2) {
-            PyObject *t, *v, *tb;
-            PyErr_Fetch(&t, &v, &tb);
-            if (PyErr_Warn(PyExc_RuntimeWarning,
-                           "tp_compare didn't return -1 or -2 "
-                           "for exception") < 0) {
-                Py_XDECREF(t);
-                Py_XDECREF(v);
-                Py_XDECREF(tb);
-            }
-            else
-                PyErr_Restore(t, v, tb);
-        }
-        return -2;
-    }
-    else if (c < -1 || c > 1) {
-        if (PyErr_Warn(PyExc_RuntimeWarning,
-                       "tp_compare didn't return -1, 0 or 1") < 0)
-            return -2;
-        else
-            return c < -1 ? -1 : 1;
-    }
-    else {
-        assert(c >= -1 && c <= 1);
-        return c;
-    }
-}
-
-
-/* Macro to get the tp_richcompare field of a type if defined */
-#define RICHCOMPARE(t) (PyType_HasFeature((t), Py_TPFLAGS_HAVE_RICHCOMPARE) \
-             ? (t)->tp_richcompare : NULL)
-
-/* Map rich comparison operators to their swapped version, e.g. LT --> GT */
-int _Py_SwappedOp[] = {Py_GT, Py_GE, Py_EQ, Py_NE, Py_LT, Py_LE};
-
-/* Try a genuine rich comparison, returning an object.  Return:
-   NULL for exception;
-   NotImplemented if this particular rich comparison is not implemented or
-     undefined;
-   some object not equal to NotImplemented if it is implemented
-     (this latter object may not be a Boolean).
-*/
-static PyObject *
-try_rich_compare(PyObject *v, PyObject *w, int op)
-{
-    richcmpfunc f;
-    PyObject *res;
-
-    if (v->ob_type != w->ob_type &&
-        PyType_IsSubtype(w->ob_type, v->ob_type) &&
-        (f = RICHCOMPARE(w->ob_type)) != NULL) {
-        res = (*f)(w, v, _Py_SwappedOp[op]);
-        if (res != Py_NotImplemented)
-            return res;
-        Py_DECREF(res);
-    }
-    if ((f = RICHCOMPARE(v->ob_type)) != NULL) {
-        res = (*f)(v, w, op);
-        if (res != Py_NotImplemented)
-            return res;
-        Py_DECREF(res);
-    }
-    if ((f = RICHCOMPARE(w->ob_type)) != NULL) {
-        return (*f)(w, v, _Py_SwappedOp[op]);
-    }
-    res = Py_NotImplemented;
-    Py_INCREF(res);
-    return res;
-}
-
-/* Try a genuine rich comparison, returning an int.  Return:
-   -1 for exception (including the case where try_rich_compare() returns an
-      object that's not a Boolean);
-    0 if the outcome is false;
-    1 if the outcome is true;
-    2 if this particular rich comparison is not implemented or undefined.
-*/
-static int
-try_rich_compare_bool(PyObject *v, PyObject *w, int op)
-{
-    PyObject *res;
-    int ok;
-
-    if (RICHCOMPARE(v->ob_type) == NULL && RICHCOMPARE(w->ob_type) == NULL)
-        return 2; /* Shortcut, avoid INCREF+DECREF */
-    res = try_rich_compare(v, w, op);
-    if (res == NULL)
-        return -1;
-    if (res == Py_NotImplemented) {
-        Py_DECREF(res);
-        return 2;
-    }
-    ok = PyObject_IsTrue(res);
-    Py_DECREF(res);
-    return ok;
-}
-
-/* Try rich comparisons to determine a 3-way comparison.  Return:
-   -2 for an exception;
-   -1 if v  < w;
-    0 if v == w;
-    1 if v  > w;
-    2 if this particular rich comparison is not implemented or undefined.
-*/
-static int
-try_rich_to_3way_compare(PyObject *v, PyObject *w)
-{
-    static struct { int op; int outcome; } tries[3] = {
-        /* Try this operator, and if it is true, use this outcome: */
-        {Py_EQ, 0},
-        {Py_LT, -1},
-        {Py_GT, 1},
-    };
-    int i;
-
-    if (RICHCOMPARE(v->ob_type) == NULL && RICHCOMPARE(w->ob_type) == NULL)
-        return 2; /* Shortcut */
-
-    for (i = 0; i < 3; i++) {
-        switch (try_rich_compare_bool(v, w, tries[i].op)) {
-        case -1:
-            return -2;
-        case 1:
-            return tries[i].outcome;
-        }
-    }
-
-    return 2;
-}
-
-/* Try a 3-way comparison, returning an int.  Return:
-   -2 for an exception;
-   -1 if v <  w;
-    0 if v == w;
-    1 if v  > w;
-    2 if this particular 3-way comparison is not implemented or undefined.
-*/
-static int
-try_3way_compare(PyObject *v, PyObject *w)
-{
-    int c;
-    cmpfunc f;
-
-    /* Comparisons involving instances are given to instance_compare,
-       which has the same return conventions as this function. */
-
-    f = v->ob_type->tp_compare;
-    if (PyInstance_Check(v))
-        return (*f)(v, w);
-    if (PyInstance_Check(w))
-        return (*w->ob_type->tp_compare)(v, w);
-
-    /* If both have the same (non-NULL) tp_compare, use it. */
-    if (f != NULL && f == w->ob_type->tp_compare) {
-        c = (*f)(v, w);
-        return adjust_tp_compare(c);
-    }
-
-    /* If either tp_compare is _PyObject_SlotCompare, that's safe. */
-    if (f == _PyObject_SlotCompare ||
-        w->ob_type->tp_compare == _PyObject_SlotCompare)
-        return _PyObject_SlotCompare(v, w);
-
-    /* If we're here, v and w,
-        a) are not instances;
-        b) have different types or a type without tp_compare; and
-        c) don't have a user-defined tp_compare.
-       tp_compare implementations in C assume that both arguments
-       have their type, so we give up if the coercion fails or if
-       it yields types which are still incompatible (which can
-       happen with a user-defined nb_coerce).
-    */
-    c = PyNumber_CoerceEx(&v, &w);
-    if (c < 0)
-        return -2;
-    if (c > 0)
-        return 2;
-    f = v->ob_type->tp_compare;
-    if (f != NULL && f == w->ob_type->tp_compare) {
-        c = (*f)(v, w);
-        Py_DECREF(v);
-        Py_DECREF(w);
-        return adjust_tp_compare(c);
-    }
-
-    /* No comparison defined */
-    Py_DECREF(v);
-    Py_DECREF(w);
-    return 2;
-}
-
-/* Final fallback 3-way comparison, returning an int.  Return:
-   -2 if an error occurred;
-   -1 if v <  w;
-    0 if v == w;
-    1 if v >  w.
-*/
-static int
-default_3way_compare(PyObject *v, PyObject *w)
-{
-    int c;
-    const char *vname, *wname;
-
-    if (v->ob_type == w->ob_type) {
-        /* When comparing these pointers, they must be cast to
-         * integer types (i.e. Py_uintptr_t, our spelling of C9X's
-         * uintptr_t).  ANSI specifies that pointer compares other
-         * than == and != to non-related structures are undefined.
-         */
-        Py_uintptr_t vv = (Py_uintptr_t)v;
-        Py_uintptr_t ww = (Py_uintptr_t)w;
-        return (vv < ww) ? -1 : (vv > ww) ? 1 : 0;
-    }
-
-    /* None is smaller than anything */
-    if (v == Py_None)
-        return -1;
-    if (w == Py_None)
-        return 1;
-
-    /* different type: compare type names; numbers are smaller */
-    if (PyNumber_Check(v))
-        vname = "";
-    else
-        vname = v->ob_type->tp_name;
-    if (PyNumber_Check(w))
-        wname = "";
-    else
-        wname = w->ob_type->tp_name;
-    c = strcmp(vname, wname);
-    if (c < 0)
-        return -1;
-    if (c > 0)
-        return 1;
-    /* Same type name, or (more likely) incomparable numeric types */
-    return ((Py_uintptr_t)(v->ob_type) < (
-        Py_uintptr_t)(w->ob_type)) ? -1 : 1;
-}
-
-/* Do a 3-way comparison, by hook or by crook.  Return:
-   -2 for an exception (but see below);
-   -1 if v <  w;
-    0 if v == w;
-    1 if v >  w;
-   BUT: if the object implements a tp_compare function, it returns
-   whatever this function returns (whether with an exception or not).
-*/
-static int
-do_cmp(PyObject *v, PyObject *w)
-{
-    int c;
-    cmpfunc f;
-
-    if (v->ob_type == w->ob_type
-        && (f = v->ob_type->tp_compare) != NULL) {
-        c = (*f)(v, w);
-        if (PyInstance_Check(v)) {
-            /* Instance tp_compare has a different signature.
-               But if it returns undefined we fall through. */
-            if (c != 2)
-                return c;
-            /* Else fall through to try_rich_to_3way_compare() */
-        }
-        else
-            return adjust_tp_compare(c);
-    }
-    /* We only get here if one of the following is true:
-       a) v and w have different types
-       b) v and w have the same type, which doesn't have tp_compare
-       c) v and w are instances, and either __cmp__ is not defined or
-          __cmp__ returns NotImplemented
-    */
-    c = try_rich_to_3way_compare(v, w);
-    if (c < 2)
-        return c;
-    c = try_3way_compare(v, w);
-    if (c < 2)
-        return c;
-    return default_3way_compare(v, w);
-}
-
-/* Compare v to w.  Return
-   -1 if v <  w or exception (PyErr_Occurred() true in latter case).
-    0 if v == w.
-    1 if v > w.
-   XXX The docs (C API manual) say the return value is undefined in case
-   XXX of error.
-*/
-int
-PyObject_Compare(PyObject *v, PyObject *w)
-{
-    int result;
-
-    if (v == NULL || w == NULL) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    if (v == w)
-        return 0;
-    if (Py_EnterRecursiveCall(" in cmp"))
-        return -1;
-    result = do_cmp(v, w);
-    Py_LeaveRecursiveCall();
-    return result < 0 ? -1 : result;
-}
-
-/* Return (new reference to) Py_True or Py_False. */
-static PyObject *
-convert_3way_to_object(int op, int c)
-{
-    PyObject *result;
-    switch (op) {
-    case Py_LT: c = c <  0; break;
-    case Py_LE: c = c <= 0; break;
-    case Py_EQ: c = c == 0; break;
-    case Py_NE: c = c != 0; break;
-    case Py_GT: c = c >  0; break;
-    case Py_GE: c = c >= 0; break;
-    }
-    result = c ? Py_True : Py_False;
-    Py_INCREF(result);
-    return result;
-}
-
-/* We want a rich comparison but don't have one.  Try a 3-way cmp instead.
-   Return
-   NULL      if error
-   Py_True   if v op w
-   Py_False  if not (v op w)
-*/
-static PyObject *
-try_3way_to_rich_compare(PyObject *v, PyObject *w, int op)
-{
-    int c;
-
-    c = try_3way_compare(v, w);
-    if (c >= 2) {
-
-        /* Py3K warning if types are not equal and comparison isn't == or !=  */
-        if (Py_Py3kWarningFlag &&
-            v->ob_type != w->ob_type && op != Py_EQ && op != Py_NE &&
-            PyErr_WarnEx(PyExc_DeprecationWarning,
-                       "comparing unequal types not supported "
-                       "in 3.x", 1) < 0) {
-            return NULL;
-        }
-
-        c = default_3way_compare(v, w);
-    }
-    if (c <= -2)
-        return NULL;
-    return convert_3way_to_object(op, c);
-}
-
-/* Do rich comparison on v and w.  Return
-   NULL      if error
-   Else a new reference to an object other than Py_NotImplemented, usually(?):
-   Py_True   if v op w
-   Py_False  if not (v op w)
-*/
-static PyObject *
-do_richcmp(PyObject *v, PyObject *w, int op)
-{
-    PyObject *res;
-
-    res = try_rich_compare(v, w, op);
-    if (res != Py_NotImplemented)
-        return res;
-    Py_DECREF(res);
-
-    return try_3way_to_rich_compare(v, w, op);
-}
-
-/* Return:
-   NULL for exception;
-   some object not equal to NotImplemented if it is implemented
-     (this latter object may not be a Boolean).
-*/
-PyObject *
-PyObject_RichCompare(PyObject *v, PyObject *w, int op)
-{
-    PyObject *res;
-
-    assert(Py_LT <= op && op <= Py_GE);
-    if (Py_EnterRecursiveCall(" in cmp"))
-        return NULL;
-
-    /* If the types are equal, and not old-style instances, try to
-       get out cheap (don't bother with coercions etc.). */
-    if (v->ob_type == w->ob_type && !PyInstance_Check(v)) {
-        cmpfunc fcmp;
-        richcmpfunc frich = RICHCOMPARE(v->ob_type);
-        /* If the type has richcmp, try it first.  try_rich_compare
-           tries it two-sided, which is not needed since we've a
-           single type only. */
-        if (frich != NULL) {
-            res = (*frich)(v, w, op);
-            if (res != Py_NotImplemented)
-                goto Done;
-            Py_DECREF(res);
-        }
-        /* No richcmp, or this particular richmp not implemented.
-           Try 3-way cmp. */
-        fcmp = v->ob_type->tp_compare;
-        if (fcmp != NULL) {
-            int c = (*fcmp)(v, w);
-            c = adjust_tp_compare(c);
-            if (c == -2) {
-                res = NULL;
-                goto Done;
-            }
-            res = convert_3way_to_object(op, c);
-            goto Done;
-        }
-    }
-
-    /* Fast path not taken, or couldn't deliver a useful result. */
-    res = do_richcmp(v, w, op);
-Done:
-    Py_LeaveRecursiveCall();
-    return res;
-}
-
-/* Return -1 if error; 1 if v op w; 0 if not (v op w). */
-int
-PyObject_RichCompareBool(PyObject *v, PyObject *w, int op)
-{
-    PyObject *res;
-    int ok;
-
-    /* Quick result when objects are the same.
-       Guarantees that identity implies equality. */
-    if (v == w) {
-        if (op == Py_EQ)
-            return 1;
-        else if (op == Py_NE)
-            return 0;
-    }
-
-    res = PyObject_RichCompare(v, w, op);
-    if (res == NULL)
-        return -1;
-    if (PyBool_Check(res))
-        ok = (res == Py_True);
-    else
-        ok = PyObject_IsTrue(res);
-    Py_DECREF(res);
-    return ok;
-}
-
-/* Set of hash utility functions to help maintaining the invariant that
-    if a==b then hash(a)==hash(b)
-
-   All the utility functions (_Py_Hash*()) return "-1" to signify an error.
-*/
-
-long
-_Py_HashDouble(double v)
-{
-    double intpart, fractpart;
-    int expo;
-    long hipart;
-    long x;             /* the final hash value */
-    /* This is designed so that Python numbers of different types
-     * that compare equal hash to the same value; otherwise comparisons
-     * of mapping keys will turn out weird.
-     */
-
-    if (!Py_IS_FINITE(v)) {
-        if (Py_IS_INFINITY(v))
-            return v < 0 ? -271828 : 314159;
-        else
-            return 0;
-    }
-    fractpart = modf(v, &intpart);
-    if (fractpart == 0.0) {
-        /* This must return the same hash as an equal int or long. */
-        if (intpart > LONG_MAX/2 || -intpart > LONG_MAX/2) {
-            /* Convert to long and use its hash. */
-            PyObject *plong;                    /* converted to Python long */
-            plong = PyLong_FromDouble(v);
-            if (plong == NULL)
-                return -1;
-            x = PyObject_Hash(plong);
-            Py_DECREF(plong);
-            return x;
-        }
-        /* Fits in a C long == a Python int, so is its own hash. */
-        x = (long)intpart;
-        if (x == -1)
-            x = -2;
-        return x;
-    }
-    /* The fractional part is non-zero, so we don't have to worry about
-     * making this match the hash of some other type.
-     * Use frexp to get at the bits in the double.
-     * Since the VAX D double format has 56 mantissa bits, which is the
-     * most of any double format in use, each of these parts may have as
-     * many as (but no more than) 56 significant bits.
-     * So, assuming sizeof(long) >= 4, each part can be broken into two
-     * longs; frexp and multiplication are used to do that.
-     * Also, since the Cray double format has 15 exponent bits, which is
-     * the most of any double format in use, shifting the exponent field
-     * left by 15 won't overflow a long (again assuming sizeof(long) >= 4).
-     */
-    v = frexp(v, &expo);
-    v *= 2147483648.0;          /* 2**31 */
-    hipart = (long)v;           /* take the top 32 bits */
-    v = (v - (double)hipart) * 2147483648.0; /* get the next 32 bits */
-    x = hipart + (long)v + (expo << 15);
-    if (x == -1)
-        x = -2;
-    return x;
-}
-
-long
-_Py_HashPointer(void *p)
-{
-    long x;
-    size_t y = (size_t)p;
-    /* bottom 3 or 4 bits are likely to be 0; rotate y by 4 to avoid
-       excessive hash collisions for dicts and sets */
-    y = (y >> 4) | (y << (8 * SIZEOF_VOID_P - 4));
-    x = (long)y;
-    if (x == -1)
-        x = -2;
-    return x;
-}
-
-long
-PyObject_HashNotImplemented(PyObject *self)
-{
-    PyErr_Format(PyExc_TypeError, "unhashable type: '%.200s'",
-                 self->ob_type->tp_name);
-    return -1;
-}
-
-long
-PyObject_Hash(PyObject *v)
-{
-    PyTypeObject *tp = v->ob_type;
-    if (tp->tp_hash != NULL)
-        return (*tp->tp_hash)(v);
-    /* To keep to the general practice that inheriting
-     * solely from object in C code should work without
-     * an explicit call to PyType_Ready, we implicitly call
-     * PyType_Ready here and then check the tp_hash slot again
-     */
-    if (tp->tp_dict == NULL) {
-        if (PyType_Ready(tp) < 0)
-            return -1;
-        if (tp->tp_hash != NULL)
-            return (*tp->tp_hash)(v);
-    }
-    if (tp->tp_compare == NULL && RICHCOMPARE(tp) == NULL) {
-        return _Py_HashPointer(v); /* Use address as hash value */
-    }
-    /* If there's a cmp but no hash defined, the object can't be hashed */
-    return PyObject_HashNotImplemented(v);
-}
-
-PyObject *
-PyObject_GetAttrString(PyObject *v, const char *name)
-{
-    PyObject *w, *res;
-
-    if (Py_TYPE(v)->tp_getattr != NULL)
-        return (*Py_TYPE(v)->tp_getattr)(v, (char*)name);
-    w = PyString_InternFromString(name);
-    if (w == NULL)
-        return NULL;
-    res = PyObject_GetAttr(v, w);
-    Py_XDECREF(w);
-    return res;
-}
-
-int
-PyObject_HasAttrString(PyObject *v, const char *name)
-{
-    PyObject *res = PyObject_GetAttrString(v, name);
-    if (res != NULL) {
-        Py_DECREF(res);
-        return 1;
-    }
-    PyErr_Clear();
-    return 0;
-}
-
-int
-PyObject_SetAttrString(PyObject *v, const char *name, PyObject *w)
-{
-    PyObject *s;
-    int res;
-
-    if (Py_TYPE(v)->tp_setattr != NULL)
-        return (*Py_TYPE(v)->tp_setattr)(v, (char*)name, w);
-    s = PyString_InternFromString(name);
-    if (s == NULL)
-        return -1;
-    res = PyObject_SetAttr(v, s, w);
-    Py_XDECREF(s);
-    return res;
-}
-
-PyObject *
-PyObject_GetAttr(PyObject *v, PyObject *name)
-{
-    PyTypeObject *tp = Py_TYPE(v);
-
-    if (!PyString_Check(name)) {
-#ifdef Py_USING_UNICODE
-        /* The Unicode to string conversion is done here because the
-           existing tp_getattro slots expect a string object as name
-           and we wouldn't want to break those. */
-        if (PyUnicode_Check(name)) {
-            name = _PyUnicode_AsDefaultEncodedString(name, NULL);
-            if (name == NULL)
-                return NULL;
-        }
-        else
-#endif
-        {
-            PyErr_Format(PyExc_TypeError,
-                         "attribute name must be string, not '%.200s'",
-                         Py_TYPE(name)->tp_name);
-            return NULL;
-        }
-    }
-    if (tp->tp_getattro != NULL)
-        return (*tp->tp_getattro)(v, name);
-    if (tp->tp_getattr != NULL)
-        return (*tp->tp_getattr)(v, PyString_AS_STRING(name));
-    PyErr_Format(PyExc_AttributeError,
-                 "'%.50s' object has no attribute '%.400s'",
-                 tp->tp_name, PyString_AS_STRING(name));
-    return NULL;
-}
-
-int
-PyObject_HasAttr(PyObject *v, PyObject *name)
-{
-    PyObject *res = PyObject_GetAttr(v, name);
-    if (res != NULL) {
-        Py_DECREF(res);
-        return 1;
-    }
-    PyErr_Clear();
-    return 0;
-}
-
-int
-PyObject_SetAttr(PyObject *v, PyObject *name, PyObject *value)
-{
-    PyTypeObject *tp = Py_TYPE(v);
-    int err;
-
-    if (!PyString_Check(name)){
-#ifdef Py_USING_UNICODE
-        /* The Unicode to string conversion is done here because the
-           existing tp_setattro slots expect a string object as name
-           and we wouldn't want to break those. */
-        if (PyUnicode_Check(name)) {
-            name = PyUnicode_AsEncodedString(name, NULL, NULL);
-            if (name == NULL)
-                return -1;
-        }
-        else
-#endif
-        {
-            PyErr_Format(PyExc_TypeError,
-                         "attribute name must be string, not '%.200s'",
-                         Py_TYPE(name)->tp_name);
-            return -1;
-        }
-    }
-    else
-        Py_INCREF(name);
-
-    PyString_InternInPlace(&name);
-    if (tp->tp_setattro != NULL) {
-        err = (*tp->tp_setattro)(v, name, value);
-        Py_DECREF(name);
-        return err;
-    }
-    if (tp->tp_setattr != NULL) {
-        err = (*tp->tp_setattr)(v, PyString_AS_STRING(name), value);
-        Py_DECREF(name);
-        return err;
-    }
-    Py_DECREF(name);
-    if (tp->tp_getattr == NULL && tp->tp_getattro == NULL)
-        PyErr_Format(PyExc_TypeError,
-                     "'%.100s' object has no attributes "
-                     "(%s .%.100s)",
-                     tp->tp_name,
-                     value==NULL ? "del" : "assign to",
-                     PyString_AS_STRING(name));
-    else
-        PyErr_Format(PyExc_TypeError,
-                     "'%.100s' object has only read-only attributes "
-                     "(%s .%.100s)",
-                     tp->tp_name,
-                     value==NULL ? "del" : "assign to",
-                     PyString_AS_STRING(name));
-    return -1;
-}
-
-/* Helper to get a pointer to an object's __dict__ slot, if any */
-
-PyObject **
-_PyObject_GetDictPtr(PyObject *obj)
-{
-    Py_ssize_t dictoffset;
-    PyTypeObject *tp = Py_TYPE(obj);
-
-    if (!(tp->tp_flags & Py_TPFLAGS_HAVE_CLASS))
-        return NULL;
-    dictoffset = tp->tp_dictoffset;
-    if (dictoffset == 0)
-        return NULL;
-    if (dictoffset < 0) {
-        Py_ssize_t tsize;
-        size_t size;
-
-        tsize = ((PyVarObject *)obj)->ob_size;
-        if (tsize < 0)
-            tsize = -tsize;
-        size = _PyObject_VAR_SIZE(tp, tsize);
-
-        dictoffset += (long)size;
-        assert(dictoffset > 0);
-        assert(dictoffset % SIZEOF_VOID_P == 0);
-    }
-    return (PyObject **) ((char *)obj + dictoffset);
-}
-
-PyObject *
-PyObject_SelfIter(PyObject *obj)
-{
-    Py_INCREF(obj);
-    return obj;
-}
-
-/* Helper used when the __next__ method is removed from a type:
-   tp_iternext is never NULL and can be safely called without checking
-   on every iteration.
- */
-
-PyObject *
-_PyObject_NextNotImplemented(PyObject *self)
-{
-    PyErr_Format(PyExc_TypeError,
-                 "'%.200s' object is not iterable",
-                 Py_TYPE(self)->tp_name);
-    return NULL;
-}
-
-/* Generic GetAttr functions - put these in your tp_[gs]etattro slot */
-
-PyObject *
-_PyObject_GenericGetAttrWithDict(PyObject *obj, PyObject *name, PyObject *dict)
-{
-    PyTypeObject *tp = Py_TYPE(obj);
-    PyObject *descr = NULL;
-    PyObject *res = NULL;
-    descrgetfunc f;
-    Py_ssize_t dictoffset;
-    PyObject **dictptr;
-
-    if (!PyString_Check(name)){
-#ifdef Py_USING_UNICODE
-        /* The Unicode to string conversion is done here because the
-           existing tp_setattro slots expect a string object as name
-           and we wouldn't want to break those. */
-        if (PyUnicode_Check(name)) {
-            name = PyUnicode_AsEncodedString(name, NULL, NULL);
-            if (name == NULL)
-                return NULL;
-        }
-        else
-#endif
-        {
-            PyErr_Format(PyExc_TypeError,
-                         "attribute name must be string, not '%.200s'",
-                         Py_TYPE(name)->tp_name);
-            return NULL;
-        }
-    }
-    else
-        Py_INCREF(name);
-
-    if (tp->tp_dict == NULL) {
-        if (PyType_Ready(tp) < 0)
-            goto done;
-    }
-
-#if 0 /* XXX this is not quite _PyType_Lookup anymore */
-    /* Inline _PyType_Lookup */
-    {
-        Py_ssize_t i, n;
-        PyObject *mro, *base, *dict;
-
-        /* Look in tp_dict of types in MRO */
-        mro = tp->tp_mro;
-        assert(mro != NULL);
-        assert(PyTuple_Check(mro));
-        n = PyTuple_GET_SIZE(mro);
-        for (i = 0; i < n; i++) {
-            base = PyTuple_GET_ITEM(mro, i);
-            if (PyClass_Check(base))
-                dict = ((PyClassObject *)base)->cl_dict;
-            else {
-                assert(PyType_Check(base));
-                dict = ((PyTypeObject *)base)->tp_dict;
-            }
-            assert(dict && PyDict_Check(dict));
-            descr = PyDict_GetItem(dict, name);
-            if (descr != NULL)
-                break;
-        }
-    }
-#else
-    descr = _PyType_Lookup(tp, name);
-#endif
-
-    Py_XINCREF(descr);
-
-    f = NULL;
-    if (descr != NULL &&
-        PyType_HasFeature(descr->ob_type, Py_TPFLAGS_HAVE_CLASS)) {
-        f = descr->ob_type->tp_descr_get;
-        if (f != NULL && PyDescr_IsData(descr)) {
-            res = f(descr, obj, (PyObject *)obj->ob_type);
-            Py_DECREF(descr);
-            goto done;
-        }
-    }
-
-    if (dict == NULL) {
-        /* Inline _PyObject_GetDictPtr */
-        dictoffset = tp->tp_dictoffset;
-        if (dictoffset != 0) {
-            if (dictoffset < 0) {
-                Py_ssize_t tsize;
-                size_t size;
-
-                tsize = ((PyVarObject *)obj)->ob_size;
-                if (tsize < 0)
-                    tsize = -tsize;
-                size = _PyObject_VAR_SIZE(tp, tsize);
-
-                dictoffset += (long)size;
-                assert(dictoffset > 0);
-                assert(dictoffset % SIZEOF_VOID_P == 0);
-            }
-            dictptr = (PyObject **) ((char *)obj + dictoffset);
-            dict = *dictptr;
-        }
-    }
-    if (dict != NULL) {
-        Py_INCREF(dict);
-        res = PyDict_GetItem(dict, name);
-        if (res != NULL) {
-            Py_INCREF(res);
-            Py_XDECREF(descr);
-            Py_DECREF(dict);
-            goto done;
-        }
-        Py_DECREF(dict);
-    }
-
-    if (f != NULL) {
-        res = f(descr, obj, (PyObject *)Py_TYPE(obj));
-        Py_DECREF(descr);
-        goto done;
-    }
-
-    if (descr != NULL) {
-        res = descr;
-        /* descr was already increfed above */
-        goto done;
-    }
-
-    PyErr_Format(PyExc_AttributeError,
-                 "'%.50s' object has no attribute '%.400s'",
-                 tp->tp_name, PyString_AS_STRING(name));
-  done:
-    Py_DECREF(name);
-    return res;
-}
-
-PyObject *
-PyObject_GenericGetAttr(PyObject *obj, PyObject *name)
-{
-    return _PyObject_GenericGetAttrWithDict(obj, name, NULL);
-}
-
-int
-_PyObject_GenericSetAttrWithDict(PyObject *obj, PyObject *name,
-                                 PyObject *value, PyObject *dict)
-{
-    PyTypeObject *tp = Py_TYPE(obj);
-    PyObject *descr;
-    descrsetfunc f;
-    PyObject **dictptr;
-    int res = -1;
-
-    if (!PyString_Check(name)){
-#ifdef Py_USING_UNICODE
-        /* The Unicode to string conversion is done here because the
-           existing tp_setattro slots expect a string object as name
-           and we wouldn't want to break those. */
-        if (PyUnicode_Check(name)) {
-            name = PyUnicode_AsEncodedString(name, NULL, NULL);
-            if (name == NULL)
-                return -1;
-        }
-        else
-#endif
-        {
-            PyErr_Format(PyExc_TypeError,
-                         "attribute name must be string, not '%.200s'",
-                         Py_TYPE(name)->tp_name);
-            return -1;
-        }
-    }
-    else
-        Py_INCREF(name);
-
-    if (tp->tp_dict == NULL) {
-        if (PyType_Ready(tp) < 0)
-            goto done;
-    }
-
-    descr = _PyType_Lookup(tp, name);
-    f = NULL;
-    if (descr != NULL &&
-        PyType_HasFeature(descr->ob_type, Py_TPFLAGS_HAVE_CLASS)) {
-        f = descr->ob_type->tp_descr_set;
-        if (f != NULL && PyDescr_IsData(descr)) {
-            res = f(descr, obj, value);
-            goto done;
-        }
-    }
-
-    if (dict == NULL) {
-        dictptr = _PyObject_GetDictPtr(obj);
-        if (dictptr != NULL) {
-            dict = *dictptr;
-            if (dict == NULL && value != NULL) {
-                dict = PyDict_New();
-                if (dict == NULL)
-                    goto done;
-                *dictptr = dict;
-            }
-        }
-    }
-    if (dict != NULL) {
-        Py_INCREF(dict);
-        if (value == NULL)
-            res = PyDict_DelItem(dict, name);
-        else
-            res = PyDict_SetItem(dict, name, value);
-        if (res < 0 && PyErr_ExceptionMatches(PyExc_KeyError))
-            PyErr_SetObject(PyExc_AttributeError, name);
-        Py_DECREF(dict);
-        goto done;
-    }
-
-    if (f != NULL) {
-        res = f(descr, obj, value);
-        goto done;
-    }
-
-    if (descr == NULL) {
-        PyErr_Format(PyExc_AttributeError,
-                     "'%.100s' object has no attribute '%.200s'",
-                     tp->tp_name, PyString_AS_STRING(name));
-        goto done;
-    }
-
-    PyErr_Format(PyExc_AttributeError,
-                 "'%.50s' object attribute '%.400s' is read-only",
-                 tp->tp_name, PyString_AS_STRING(name));
-  done:
-    Py_DECREF(name);
-    return res;
-}
-
-int
-PyObject_GenericSetAttr(PyObject *obj, PyObject *name, PyObject *value)
-{
-    return _PyObject_GenericSetAttrWithDict(obj, name, value, NULL);
-}
-
-
-/* Test a value used as condition, e.g., in a for or if statement.
-   Return -1 if an error occurred */
-
-int
-PyObject_IsTrue(PyObject *v)
-{
-    Py_ssize_t res;
-    if (v == Py_True)
-        return 1;
-    if (v == Py_False)
-        return 0;
-    if (v == Py_None)
-        return 0;
-    else if (v->ob_type->tp_as_number != NULL &&
-             v->ob_type->tp_as_number->nb_nonzero != NULL)
-        res = (*v->ob_type->tp_as_number->nb_nonzero)(v);
-    else if (v->ob_type->tp_as_mapping != NULL &&
-             v->ob_type->tp_as_mapping->mp_length != NULL)
-        res = (*v->ob_type->tp_as_mapping->mp_length)(v);
-    else if (v->ob_type->tp_as_sequence != NULL &&
-             v->ob_type->tp_as_sequence->sq_length != NULL)
-        res = (*v->ob_type->tp_as_sequence->sq_length)(v);
-    else
-        return 1;
-    /* if it is negative, it should be either -1 or -2 */
-    return (res > 0) ? 1 : Py_SAFE_DOWNCAST(res, Py_ssize_t, int);
-}
-
-/* equivalent of 'not v'
-   Return -1 if an error occurred */
-
-int
-PyObject_Not(PyObject *v)
-{
-    int res;
-    res = PyObject_IsTrue(v);
-    if (res < 0)
-        return res;
-    return res == 0;
-}
-
-/* Coerce two numeric types to the "larger" one.
-   Increment the reference count on each argument.
-   Return value:
-   -1 if an error occurred;
-   0 if the coercion succeeded (and then the reference counts are increased);
-   1 if no coercion is possible (and no error is raised).
-*/
-int
-PyNumber_CoerceEx(PyObject **pv, PyObject **pw)
-{
-    register PyObject *v = *pv;
-    register PyObject *w = *pw;
-    int res;
-
-    /* Shortcut only for old-style types */
-    if (v->ob_type == w->ob_type &&
-        !PyType_HasFeature(v->ob_type, Py_TPFLAGS_CHECKTYPES))
-    {
-        Py_INCREF(v);
-        Py_INCREF(w);
-        return 0;
-    }
-    if (v->ob_type->tp_as_number && v->ob_type->tp_as_number->nb_coerce) {
-        res = (*v->ob_type->tp_as_number->nb_coerce)(pv, pw);
-        if (res <= 0)
-            return res;
-    }
-    if (w->ob_type->tp_as_number && w->ob_type->tp_as_number->nb_coerce) {
-        res = (*w->ob_type->tp_as_number->nb_coerce)(pw, pv);
-        if (res <= 0)
-            return res;
-    }
-    return 1;
-}
-
-/* Coerce two numeric types to the "larger" one.
-   Increment the reference count on each argument.
-   Return -1 and raise an exception if no coercion is possible
-   (and then no reference count is incremented).
-*/
-int
-PyNumber_Coerce(PyObject **pv, PyObject **pw)
-{
-    int err = PyNumber_CoerceEx(pv, pw);
-    if (err <= 0)
-        return err;
-    PyErr_SetString(PyExc_TypeError, "number coercion failed");
-    return -1;
-}
-
-
-/* Test whether an object can be called */
-
-int
-PyCallable_Check(PyObject *x)
-{
-    if (x == NULL)
-        return 0;
-    if (PyInstance_Check(x)) {
-        PyObject *call = PyObject_GetAttrString(x, "__call__");
-        if (call == NULL) {
-            PyErr_Clear();
-            return 0;
-        }
-        /* Could test recursively but don't, for fear of endless
-           recursion if some joker sets self.__call__ = self */
-        Py_DECREF(call);
-        return 1;
-    }
-    else {
-        return x->ob_type->tp_call != NULL;
-    }
-}
-
-/* ------------------------- PyObject_Dir() helpers ------------------------- */
-
-/* Helper for PyObject_Dir.
-   Merge the __dict__ of aclass into dict, and recursively also all
-   the __dict__s of aclass's base classes.  The order of merging isn't
-   defined, as it's expected that only the final set of dict keys is
-   interesting.
-   Return 0 on success, -1 on error.
-*/
-
-static int
-merge_class_dict(PyObject* dict, PyObject* aclass)
-{
-    PyObject *classdict;
-    PyObject *bases;
-
-    assert(PyDict_Check(dict));
-    assert(aclass);
-
-    /* Merge in the type's dict (if any). */
-    classdict = PyObject_GetAttrString(aclass, "__dict__");
-    if (classdict == NULL)
-        PyErr_Clear();
-    else {
-        int status = PyDict_Update(dict, classdict);
-        Py_DECREF(classdict);
-        if (status < 0)
-            return -1;
-    }
-
-    /* Recursively merge in the base types' (if any) dicts. */
-    bases = PyObject_GetAttrString(aclass, "__bases__");
-    if (bases == NULL)
-        PyErr_Clear();
-    else {
-        /* We have no guarantee that bases is a real tuple */
-        Py_ssize_t i, n;
-        n = PySequence_Size(bases); /* This better be right */
-        if (n < 0)
-            PyErr_Clear();
-        else {
-            for (i = 0; i < n; i++) {
-                int status;
-                PyObject *base = PySequence_GetItem(bases, i);
-                if (base == NULL) {
-                    Py_DECREF(bases);
-                    return -1;
-                }
-                status = merge_class_dict(dict, base);
-                Py_DECREF(base);
-                if (status < 0) {
-                    Py_DECREF(bases);
-                    return -1;
-                }
-            }
-        }
-        Py_DECREF(bases);
-    }
-    return 0;
-}
-
-/* Helper for PyObject_Dir.
-   If obj has an attr named attrname that's a list, merge its string
-   elements into keys of dict.
-   Return 0 on success, -1 on error.  Errors due to not finding the attr,
-   or the attr not being a list, are suppressed.
-*/
-
-static int
-merge_list_attr(PyObject* dict, PyObject* obj, const char *attrname)
-{
-    PyObject *list;
-    int result = 0;
-
-    assert(PyDict_Check(dict));
-    assert(obj);
-    assert(attrname);
-
-    list = PyObject_GetAttrString(obj, attrname);
-    if (list == NULL)
-        PyErr_Clear();
-
-    else if (PyList_Check(list)) {
-        int i;
-        for (i = 0; i < PyList_GET_SIZE(list); ++i) {
-            PyObject *item = PyList_GET_ITEM(list, i);
-            if (PyString_Check(item)) {
-                result = PyDict_SetItem(dict, item, Py_None);
-                if (result < 0)
-                    break;
-            }
-        }
-        if (Py_Py3kWarningFlag &&
-            (strcmp(attrname, "__members__") == 0 ||
-             strcmp(attrname, "__methods__") == 0)) {
-            if (PyErr_WarnEx(PyExc_DeprecationWarning,
-                           "__members__ and __methods__ not "
-                           "supported in 3.x", 1) < 0) {
-                Py_XDECREF(list);
-                return -1;
-            }
-        }
-    }
-
-    Py_XDECREF(list);
-    return result;
-}
-
-/* Helper for PyObject_Dir without arguments: returns the local scope. */
-static PyObject *
-_dir_locals(void)
-{
-    PyObject *names;
-    PyObject *locals = PyEval_GetLocals();
-
-    if (locals == NULL) {
-        PyErr_SetString(PyExc_SystemError, "frame does not exist");
-        return NULL;
-    }
-
-    names = PyMapping_Keys(locals);
-    if (!names)
-        return NULL;
-    if (!PyList_Check(names)) {
-        PyErr_Format(PyExc_TypeError,
-            "dir(): expected keys() of locals to be a list, "
-            "not '%.200s'", Py_TYPE(names)->tp_name);
-        Py_DECREF(names);
-        return NULL;
-    }
-    /* the locals don't need to be DECREF'd */
-    return names;
-}
-
-/* Helper for PyObject_Dir of type objects: returns __dict__ and __bases__.
-   We deliberately don't suck up its __class__, as methods belonging to the
-   metaclass would probably be more confusing than helpful.
-*/
-static PyObject *
-_specialized_dir_type(PyObject *obj)
-{
-    PyObject *result = NULL;
-    PyObject *dict = PyDict_New();
-
-    if (dict != NULL && merge_class_dict(dict, obj) == 0)
-        result = PyDict_Keys(dict);
-
-    Py_XDECREF(dict);
-    return result;
-}
-
-/* Helper for PyObject_Dir of module objects: returns the module's __dict__. */
-static PyObject *
-_specialized_dir_module(PyObject *obj)
-{
-    PyObject *result = NULL;
-    PyObject *dict = PyObject_GetAttrString(obj, "__dict__");
-
-    if (dict != NULL) {
-        if (PyDict_Check(dict))
-            result = PyDict_Keys(dict);
-        else {
-            char *name = PyModule_GetName(obj);
-            if (name)
-                PyErr_Format(PyExc_TypeError,
-                             "%.200s.__dict__ is not a dictionary",
-                             name);
-        }
-    }
-
-    Py_XDECREF(dict);
-    return result;
-}
-
-/* Helper for PyObject_Dir of generic objects: returns __dict__, __class__,
-   and recursively up the __class__.__bases__ chain.
-*/
-static PyObject *
-_generic_dir(PyObject *obj)
-{
-    PyObject *result = NULL;
-    PyObject *dict = NULL;
-    PyObject *itsclass = NULL;
-
-    /* Get __dict__ (which may or may not be a real dict...) */
-    dict = PyObject_GetAttrString(obj, "__dict__");
-    if (dict == NULL) {
-        PyErr_Clear();
-        dict = PyDict_New();
-    }
-    else if (!PyDict_Check(dict)) {
-        Py_DECREF(dict);
-        dict = PyDict_New();
-    }
-    else {
-        /* Copy __dict__ to avoid mutating it. */
-        PyObject *temp = PyDict_Copy(dict);
-        Py_DECREF(dict);
-        dict = temp;
-    }
-
-    if (dict == NULL)
-        goto error;
-
-    /* Merge in __members__ and __methods__ (if any).
-     * This is removed in Python 3000. */
-    if (merge_list_attr(dict, obj, "__members__") < 0)
-        goto error;
-    if (merge_list_attr(dict, obj, "__methods__") < 0)
-        goto error;
-
-    /* Merge in attrs reachable from its class. */
-    itsclass = PyObject_GetAttrString(obj, "__class__");
-    if (itsclass == NULL)
-        /* XXX(tomer): Perhaps fall back to obj->ob_type if no
-                       __class__ exists? */
-        PyErr_Clear();
-    else {
-        if (merge_class_dict(dict, itsclass) != 0)
-            goto error;
-    }
-
-    result = PyDict_Keys(dict);
-    /* fall through */
-error:
-    Py_XDECREF(itsclass);
-    Py_XDECREF(dict);
-    return result;
-}
-
-/* Helper for PyObject_Dir: object introspection.
-   This calls one of the above specialized versions if no __dir__ method
-   exists. */
-static PyObject *
-_dir_object(PyObject *obj)
-{
-    PyObject *result = NULL;
-    static PyObject *dir_str = NULL;
-    PyObject *dirfunc;
-
-    assert(obj);
-    if (PyInstance_Check(obj)) {
-        dirfunc = PyObject_GetAttrString(obj, "__dir__");
-        if (dirfunc == NULL) {
-            if (PyErr_ExceptionMatches(PyExc_AttributeError))
-                PyErr_Clear();
-            else
-                return NULL;
-        }
-    }
-    else {
-        dirfunc = _PyObject_LookupSpecial(obj, "__dir__", &dir_str);
-        if (PyErr_Occurred())
-            return NULL;
-    }
-    if (dirfunc == NULL) {
-        /* use default implementation */
-        if (PyModule_Check(obj))
-            result = _specialized_dir_module(obj);
-        else if (PyType_Check(obj) || PyClass_Check(obj))
-            result = _specialized_dir_type(obj);
-        else
-            result = _generic_dir(obj);
-    }
-    else {
-        /* use __dir__ */
-        result = PyObject_CallFunctionObjArgs(dirfunc, NULL);
-        Py_DECREF(dirfunc);
-        if (result == NULL)
-            return NULL;
-
-        /* result must be a list */
-        /* XXX(gbrandl): could also check if all items are strings */
-        if (!PyList_Check(result)) {
-            PyErr_Format(PyExc_TypeError,
-                         "__dir__() must return a list, not %.200s",
-                         Py_TYPE(result)->tp_name);
-            Py_DECREF(result);
-            result = NULL;
-        }
-    }
-
-    return result;
-}
-
-/* Implementation of dir() -- if obj is NULL, returns the names in the current
-   (local) scope.  Otherwise, performs introspection of the object: returns a
-   sorted list of attribute names (supposedly) accessible from the object
-*/
-PyObject *
-PyObject_Dir(PyObject *obj)
-{
-    PyObject * result;
-
-    if (obj == NULL)
-        /* no object -- introspect the locals */
-        result = _dir_locals();
-    else
-        /* object -- introspect the object */
-        result = _dir_object(obj);
-
-    assert(result == NULL || PyList_Check(result));
-
-    if (result != NULL && PyList_Sort(result) != 0) {
-        /* sorting the list failed */
-        Py_DECREF(result);
-        result = NULL;
-    }
-
-    return result;
-}
-
-/*
-NoObject is usable as a non-NULL undefined value, used by the macro None.
-There is (and should be!) no way to create other objects of this type,
-so there is exactly one (which is indestructible, by the way).
-(XXX This type and the type of NotImplemented below should be unified.)
-*/
-
-/* ARGSUSED */
-static PyObject *
-none_repr(PyObject *op)
-{
-    return PyString_FromString("None");
-}
-
-/* ARGUSED */
-static void
-none_dealloc(PyObject* ignore)
-{
-    /* This should never get called, but we also don't want to SEGV if
-     * we accidentally decref None out of existence.
-     */
-    Py_FatalError("deallocating None");
-}
-
-
-static PyTypeObject PyNone_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "NoneType",
-    0,
-    0,
-    none_dealloc,       /*tp_dealloc*/ /*never called*/
-    0,                  /*tp_print*/
-    0,                  /*tp_getattr*/
-    0,                  /*tp_setattr*/
-    0,                  /*tp_compare*/
-    none_repr,          /*tp_repr*/
-    0,                  /*tp_as_number*/
-    0,                  /*tp_as_sequence*/
-    0,                  /*tp_as_mapping*/
-    (hashfunc)_Py_HashPointer, /*tp_hash */
-};
-
-PyObject _Py_NoneStruct = {
-  _PyObject_EXTRA_INIT
-  1, &PyNone_Type
-};
-
-/* NotImplemented is an object that can be used to signal that an
-   operation is not implemented for the given type combination. */
-
-static PyObject *
-NotImplemented_repr(PyObject *op)
-{
-    return PyString_FromString("NotImplemented");
-}
-
-static PyTypeObject PyNotImplemented_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "NotImplementedType",
-    0,
-    0,
-    none_dealloc,       /*tp_dealloc*/ /*never called*/
-    0,                  /*tp_print*/
-    0,                  /*tp_getattr*/
-    0,                  /*tp_setattr*/
-    0,                  /*tp_compare*/
-    NotImplemented_repr, /*tp_repr*/
-    0,                  /*tp_as_number*/
-    0,                  /*tp_as_sequence*/
-    0,                  /*tp_as_mapping*/
-    0,                  /*tp_hash */
-};
-
-PyObject _Py_NotImplementedStruct = {
-    _PyObject_EXTRA_INIT
-    1, &PyNotImplemented_Type
-};
-
-void
-_Py_ReadyTypes(void)
-{
-    if (PyType_Ready(&PyType_Type) < 0)
-        Py_FatalError("Can't initialize type type");
-
-    if (PyType_Ready(&_PyWeakref_RefType) < 0)
-        Py_FatalError("Can't initialize weakref type");
-
-    if (PyType_Ready(&_PyWeakref_CallableProxyType) < 0)
-        Py_FatalError("Can't initialize callable weakref proxy type");
-
-    if (PyType_Ready(&_PyWeakref_ProxyType) < 0)
-        Py_FatalError("Can't initialize weakref proxy type");
-
-    if (PyType_Ready(&PyBool_Type) < 0)
-        Py_FatalError("Can't initialize bool type");
-
-    if (PyType_Ready(&PyString_Type) < 0)
-        Py_FatalError("Can't initialize str type");
-
-    if (PyType_Ready(&PyByteArray_Type) < 0)
-        Py_FatalError("Can't initialize bytearray type");
-
-    if (PyType_Ready(&PyList_Type) < 0)
-        Py_FatalError("Can't initialize list type");
-
-    if (PyType_Ready(&PyNone_Type) < 0)
-        Py_FatalError("Can't initialize None type");
-
-    if (PyType_Ready(&PyNotImplemented_Type) < 0)
-        Py_FatalError("Can't initialize NotImplemented type");
-
-    if (PyType_Ready(&PyTraceBack_Type) < 0)
-        Py_FatalError("Can't initialize traceback type");
-
-    if (PyType_Ready(&PySuper_Type) < 0)
-        Py_FatalError("Can't initialize super type");
-
-    if (PyType_Ready(&PyBaseObject_Type) < 0)
-        Py_FatalError("Can't initialize object type");
-
-    if (PyType_Ready(&PyRange_Type) < 0)
-        Py_FatalError("Can't initialize xrange type");
-
-    if (PyType_Ready(&PyDict_Type) < 0)
-        Py_FatalError("Can't initialize dict type");
-
-    if (PyType_Ready(&PySet_Type) < 0)
-        Py_FatalError("Can't initialize set type");
-
-    if (PyType_Ready(&PyUnicode_Type) < 0)
-        Py_FatalError("Can't initialize unicode type");
-
-    if (PyType_Ready(&PySlice_Type) < 0)
-        Py_FatalError("Can't initialize slice type");
-
-    if (PyType_Ready(&PyStaticMethod_Type) < 0)
-        Py_FatalError("Can't initialize static method type");
-
-#ifndef WITHOUT_COMPLEX
-    if (PyType_Ready(&PyComplex_Type) < 0)
-        Py_FatalError("Can't initialize complex type");
-#endif
-
-    if (PyType_Ready(&PyFloat_Type) < 0)
-        Py_FatalError("Can't initialize float type");
-
-    if (PyType_Ready(&PyBuffer_Type) < 0)
-        Py_FatalError("Can't initialize buffer type");
-
-    if (PyType_Ready(&PyLong_Type) < 0)
-        Py_FatalError("Can't initialize long type");
-
-    if (PyType_Ready(&PyInt_Type) < 0)
-        Py_FatalError("Can't initialize int type");
-
-    if (PyType_Ready(&PyFrozenSet_Type) < 0)
-        Py_FatalError("Can't initialize frozenset type");
-
-    if (PyType_Ready(&PyProperty_Type) < 0)
-        Py_FatalError("Can't initialize property type");
-
-    if (PyType_Ready(&PyMemoryView_Type) < 0)
-        Py_FatalError("Can't initialize memoryview type");
-
-    if (PyType_Ready(&PyTuple_Type) < 0)
-        Py_FatalError("Can't initialize tuple type");
-
-    if (PyType_Ready(&PyEnum_Type) < 0)
-        Py_FatalError("Can't initialize enumerate type");
-
-    if (PyType_Ready(&PyReversed_Type) < 0)
-        Py_FatalError("Can't initialize reversed type");
-
-    if (PyType_Ready(&PyCode_Type) < 0)
-        Py_FatalError("Can't initialize code type");
-
-    if (PyType_Ready(&PyFrame_Type) < 0)
-        Py_FatalError("Can't initialize frame type");
-
-    if (PyType_Ready(&PyCFunction_Type) < 0)
-        Py_FatalError("Can't initialize builtin function type");
-
-    if (PyType_Ready(&PyMethod_Type) < 0)
-        Py_FatalError("Can't initialize method type");
-
-    if (PyType_Ready(&PyFunction_Type) < 0)
-        Py_FatalError("Can't initialize function type");
-
-    if (PyType_Ready(&PyClass_Type) < 0)
-        Py_FatalError("Can't initialize class type");
-
-    if (PyType_Ready(&PyDictProxy_Type) < 0)
-        Py_FatalError("Can't initialize dict proxy type");
-
-    if (PyType_Ready(&PyGen_Type) < 0)
-        Py_FatalError("Can't initialize generator type");
-
-    if (PyType_Ready(&PyGetSetDescr_Type) < 0)
-        Py_FatalError("Can't initialize get-set descriptor type");
-
-    if (PyType_Ready(&PyWrapperDescr_Type) < 0)
-        Py_FatalError("Can't initialize wrapper type");
-
-    if (PyType_Ready(&PyInstance_Type) < 0)
-        Py_FatalError("Can't initialize instance type");
-
-    if (PyType_Ready(&PyEllipsis_Type) < 0)
-        Py_FatalError("Can't initialize ellipsis type");
-
-    if (PyType_Ready(&PyMemberDescr_Type) < 0)
-        Py_FatalError("Can't initialize member descriptor type");
-
-    if (PyType_Ready(&PyFile_Type) < 0)
-        Py_FatalError("Can't initialize file type");
-}
-
-
-#ifdef Py_TRACE_REFS
-
-void
-_Py_NewReference(PyObject *op)
-{
-    _Py_INC_REFTOTAL;
-    op->ob_refcnt = 1;
-    _Py_AddToAllObjects(op, 1);
-    _Py_INC_TPALLOCS(op);
-}
-
-void
-_Py_ForgetReference(register PyObject *op)
-{
-#ifdef SLOW_UNREF_CHECK
-    register PyObject *p;
-#endif
-    if (op->ob_refcnt < 0)
-        Py_FatalError("UNREF negative refcnt");
-    if (op == &refchain ||
-        op->_ob_prev->_ob_next != op || op->_ob_next->_ob_prev != op)
-        Py_FatalError("UNREF invalid object");
-#ifdef SLOW_UNREF_CHECK
-    for (p = refchain._ob_next; p != &refchain; p = p->_ob_next) {
-        if (p == op)
-            break;
-    }
-    if (p == &refchain) /* Not found */
-        Py_FatalError("UNREF unknown object");
-#endif
-    op->_ob_next->_ob_prev = op->_ob_prev;
-    op->_ob_prev->_ob_next = op->_ob_next;
-    op->_ob_next = op->_ob_prev = NULL;
-    _Py_INC_TPFREES(op);
-}
-
-void
-_Py_Dealloc(PyObject *op)
-{
-    destructor dealloc = Py_TYPE(op)->tp_dealloc;
-    _Py_ForgetReference(op);
-    (*dealloc)(op);
-}
-
-/* Print all live objects.  Because PyObject_Print is called, the
- * interpreter must be in a healthy state.
- */
-void
-_Py_PrintReferences(FILE *fp)
-{
-    PyObject *op;
-    fprintf(fp, "Remaining objects:\n");
-    for (op = refchain._ob_next; op != &refchain; op = op->_ob_next) {
-        fprintf(fp, "%p [%" PY_FORMAT_SIZE_T "d] ", op, op->ob_refcnt);
-        if (PyObject_Print(op, fp, 0) != 0)
-            PyErr_Clear();
-        putc('\n', fp);
-    }
-}
-
-/* Print the addresses of all live objects.  Unlike _Py_PrintReferences, this
- * doesn't make any calls to the Python C API, so is always safe to call.
- */
-void
-_Py_PrintReferenceAddresses(FILE *fp)
-{
-    PyObject *op;
-    fprintf(fp, "Remaining object addresses:\n");
-    for (op = refchain._ob_next; op != &refchain; op = op->_ob_next)
-        fprintf(fp, "%p [%" PY_FORMAT_SIZE_T "d] %s\n", op,
-            op->ob_refcnt, Py_TYPE(op)->tp_name);
-}
-
-PyObject *
-_Py_GetObjects(PyObject *self, PyObject *args)
-{
-    int i, n;
-    PyObject *t = NULL;
-    PyObject *res, *op;
-
-    if (!PyArg_ParseTuple(args, "i|O", &n, &t))
-        return NULL;
-    op = refchain._ob_next;
-    res = PyList_New(0);
-    if (res == NULL)
-        return NULL;
-    for (i = 0; (n == 0 || i < n) && op != &refchain; i++) {
-        while (op == self || op == args || op == res || op == t ||
-               (t != NULL && Py_TYPE(op) != (PyTypeObject *) t)) {
-            op = op->_ob_next;
-            if (op == &refchain)
-                return res;
-        }
-        if (PyList_Append(res, op) < 0) {
-            Py_DECREF(res);
-            return NULL;
-        }
-        op = op->_ob_next;
-    }
-    return res;
-}
-
-#endif
-
-
-/* Hack to force loading of capsule.o */
-PyTypeObject *_Py_capsule_hack = &PyCapsule_Type;
-
-
-/* Hack to force loading of cobject.o */
-PyTypeObject *_Py_cobject_hack = &PyCObject_Type;
-
-
-/* Hack to force loading of abstract.o */
-Py_ssize_t (*_Py_abstract_hack)(PyObject *) = PyObject_Size;
-
-
-/* Python's malloc wrappers (see pymem.h) */
-
-void *
-PyMem_Malloc(size_t nbytes)
-{
-    return PyMem_MALLOC(nbytes);
-}
-
-void *
-PyMem_Realloc(void *p, size_t nbytes)
-{
-    return PyMem_REALLOC(p, nbytes);
-}
-
-void
-PyMem_Free(void *p)
-{
-    PyMem_FREE(p);
-}
-
-
-/* These methods are used to control infinite recursion in repr, str, print,
-   etc.  Container objects that may recursively contain themselves,
-   e.g. builtin dictionaries and lists, should used Py_ReprEnter() and
-   Py_ReprLeave() to avoid infinite recursion.
-
-   Py_ReprEnter() returns 0 the first time it is called for a particular
-   object and 1 every time thereafter.  It returns -1 if an exception
-   occurred.  Py_ReprLeave() has no return value.
-
-   See dictobject.c and listobject.c for examples of use.
-*/
-
-#define KEY "Py_Repr"
-
-int
-Py_ReprEnter(PyObject *obj)
-{
-    PyObject *dict;
-    PyObject *list;
-    Py_ssize_t i;
-
-    dict = PyThreadState_GetDict();
-    if (dict == NULL)
-        return 0;
-    list = PyDict_GetItemString(dict, KEY);
-    if (list == NULL) {
-        list = PyList_New(0);
-        if (list == NULL)
-            return -1;
-        if (PyDict_SetItemString(dict, KEY, list) < 0)
-            return -1;
-        Py_DECREF(list);
-    }
-    i = PyList_GET_SIZE(list);
-    while (--i >= 0) {
-        if (PyList_GET_ITEM(list, i) == obj)
-            return 1;
-    }
-    PyList_Append(list, obj);
-    return 0;
-}
-
-void
-Py_ReprLeave(PyObject *obj)
-{
-    PyObject *dict;
-    PyObject *list;
-    Py_ssize_t i;
-
-    dict = PyThreadState_GetDict();
-    if (dict == NULL)
-        return;
-    list = PyDict_GetItemString(dict, KEY);
-    if (list == NULL || !PyList_Check(list))
-        return;
-    i = PyList_GET_SIZE(list);
-    /* Count backwards because we always expect obj to be list[-1] */
-    while (--i >= 0) {
-        if (PyList_GET_ITEM(list, i) == obj) {
-            PyList_SetSlice(list, i, i + 1, NULL);
-            break;
-        }
-    }
-}
-
-/* Trashcan support. */
-
-/* Current call-stack depth of tp_dealloc calls. */
-int _PyTrash_delete_nesting = 0;
-
-/* List of objects that still need to be cleaned up, singly linked via their
- * gc headers' gc_prev pointers.
- */
-PyObject *_PyTrash_delete_later = NULL;
-
-/* Add op to the _PyTrash_delete_later list.  Called when the current
- * call-stack depth gets large.  op must be a currently untracked gc'ed
- * object, with refcount 0.  Py_DECREF must already have been called on it.
- */
-void
-_PyTrash_deposit_object(PyObject *op)
-{
-    assert(PyObject_IS_GC(op));
-    assert(_Py_AS_GC(op)->gc.gc_refs == _PyGC_REFS_UNTRACKED);
-    assert(op->ob_refcnt == 0);
-    _Py_AS_GC(op)->gc.gc_prev = (PyGC_Head *)_PyTrash_delete_later;
-    _PyTrash_delete_later = op;
-}
-
-/* Dealloccate all the objects in the _PyTrash_delete_later list.  Called when
- * the call-stack unwinds again.
- */
-void
-_PyTrash_destroy_chain(void)
-{
-    while (_PyTrash_delete_later) {
-        PyObject *op = _PyTrash_delete_later;
-        destructor dealloc = Py_TYPE(op)->tp_dealloc;
-
-        _PyTrash_delete_later =
-            (PyObject*) _Py_AS_GC(op)->gc.gc_prev;
-
-        /* Call the deallocator directly.  This used to try to
-         * fool Py_DECREF into calling it indirectly, but
-         * Py_DECREF was already called on this object, and in
-         * assorted non-release builds calling Py_DECREF again ends
-         * up distorting allocation statistics.
-         */
-        assert(op->ob_refcnt == 0);
-        ++_PyTrash_delete_nesting;
-        (*dealloc)(op);
-        --_PyTrash_delete_nesting;
-    }
-}
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/obmalloc.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/obmalloc.c
deleted file mode 100644
index 03d0f97..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/obmalloc.c
+++ /dev/null
@@ -1,1888 +0,0 @@
-#include "Python.h"
-
-#ifdef WITH_PYMALLOC
-
-#ifdef WITH_VALGRIND
-#include <valgrind/valgrind.h>
-
-/* If we're using GCC, use __builtin_expect() to reduce overhead of
-   the valgrind checks */
-#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__)
-#  define UNLIKELY(value) __builtin_expect((value), 0)
-#else
-#  define UNLIKELY(value) (value)
-#endif
-
-/* -1 indicates that we haven't checked that we're running on valgrind yet. */
-static int running_on_valgrind = -1;
-#endif
-
-/* An object allocator for Python.
-
-   Here is an introduction to the layers of the Python memory architecture,
-   showing where the object allocator is actually used (layer +2), It is
-   called for every object allocation and deallocation (PyObject_New/Del),
-   unless the object-specific allocators implement a proprietary allocation
-   scheme (ex.: ints use a simple free list). This is also the place where
-   the cyclic garbage collector operates selectively on container objects.
-
-
-    Object-specific allocators
-    _____   ______   ______       ________
-   [ int ] [ dict ] [ list ] ... [ string ]       Python core         |
-+3 | <----- Object-specific memory -----> | <-- Non-object memory --> |
-    _______________________________       |                           |
-   [   Python's object allocator   ]      |                           |
-+2 | ####### Object memory ####### | <------ Internal buffers ------> |
-    ______________________________________________________________    |
-   [          Python's raw memory allocator (PyMem_ API)          ]   |
-+1 | <----- Python memory (under PyMem manager's control) ------> |   |
-    __________________________________________________________________
-   [    Underlying general-purpose allocator (ex: C library malloc)   ]
- 0 | <------ Virtual memory allocated for the python process -------> |
-
-   =========================================================================
-    _______________________________________________________________________
-   [                OS-specific Virtual Memory Manager (VMM)               ]
--1 | <--- Kernel dynamic storage allocation & management (page-based) ---> |
-    __________________________________   __________________________________
-   [                                  ] [                                  ]
--2 | <-- Physical memory: ROM/RAM --> | | <-- Secondary storage (swap) --> |
-
-*/
-/*==========================================================================*/
-
-/* A fast, special-purpose memory allocator for small blocks, to be used
-   on top of a general-purpose malloc -- heavily based on previous art. */
-
-/* Vladimir Marangozov -- August 2000 */
-
-/*
- * "Memory management is where the rubber meets the road -- if we do the wrong
- * thing at any level, the results will not be good. And if we don't make the
- * levels work well together, we are in serious trouble." (1)
- *
- * (1) Paul R. Wilson, Mark S. Johnstone, Michael Neely, and David Boles,
- *    "Dynamic Storage Allocation: A Survey and Critical Review",
- *    in Proc. 1995 Int'l. Workshop on Memory Management, September 1995.
- */
-
-/* #undef WITH_MEMORY_LIMITS */         /* disable mem limit checks  */
-
-/*==========================================================================*/
-
-/*
- * Allocation strategy abstract:
- *
- * For small requests, the allocator sub-allocates <Big> blocks of memory.
- * Requests greater than 256 bytes are routed to the system's allocator.
- *
- * Small requests are grouped in size classes spaced 8 bytes apart, due
- * to the required valid alignment of the returned address. Requests of
- * a particular size are serviced from memory pools of 4K (one VMM page).
- * Pools are fragmented on demand and contain free lists of blocks of one
- * particular size class. In other words, there is a fixed-size allocator
- * for each size class. Free pools are shared by the different allocators
- * thus minimizing the space reserved for a particular size class.
- *
- * This allocation strategy is a variant of what is known as "simple
- * segregated storage based on array of free lists". The main drawback of
- * simple segregated storage is that we might end up with lot of reserved
- * memory for the different free lists, which degenerate in time. To avoid
- * this, we partition each free list in pools and we share dynamically the
- * reserved space between all free lists. This technique is quite efficient
- * for memory intensive programs which allocate mainly small-sized blocks.
- *
- * For small requests we have the following table:
- *
- * Request in bytes     Size of allocated block      Size class idx
- * ----------------------------------------------------------------
- *        1-8                     8                       0
- *        9-16                   16                       1
- *       17-24                   24                       2
- *       25-32                   32                       3
- *       33-40                   40                       4
- *       41-48                   48                       5
- *       49-56                   56                       6
- *       57-64                   64                       7
- *       65-72                   72                       8
- *        ...                   ...                     ...
- *      241-248                 248                      30
- *      249-256                 256                      31
- *
- *      0, 257 and up: routed to the underlying allocator.
- */
-
-/*==========================================================================*/
-
-/*
- * -- Main tunable settings section --
- */
-
-/*
- * Alignment of addresses returned to the user. 8-bytes alignment works
- * on most current architectures (with 32-bit or 64-bit address busses).
- * The alignment value is also used for grouping small requests in size
- * classes spaced ALIGNMENT bytes apart.
- *
- * You shouldn't change this unless you know what you are doing.
- */
-#define ALIGNMENT               8               /* must be 2^N */
-#define ALIGNMENT_SHIFT         3
-#define ALIGNMENT_MASK          (ALIGNMENT - 1)
-
-/* Return the number of bytes in size class I, as a uint. */
-#define INDEX2SIZE(I) (((uint)(I) + 1) << ALIGNMENT_SHIFT)
-
-/*
- * Max size threshold below which malloc requests are considered to be
- * small enough in order to use preallocated memory pools. You can tune
- * this value according to your application behaviour and memory needs.
- *
- * The following invariants must hold:
- *      1) ALIGNMENT <= SMALL_REQUEST_THRESHOLD <= 256
- *      2) SMALL_REQUEST_THRESHOLD is evenly divisible by ALIGNMENT
- *
- * Although not required, for better performance and space efficiency,
- * it is recommended that SMALL_REQUEST_THRESHOLD is set to a power of 2.
- */
-#define SMALL_REQUEST_THRESHOLD 256
-#define NB_SMALL_SIZE_CLASSES   (SMALL_REQUEST_THRESHOLD / ALIGNMENT)
-
-/*
- * The system's VMM page size can be obtained on most unices with a
- * getpagesize() call or deduced from various header files. To make
- * things simpler, we assume that it is 4K, which is OK for most systems.
- * It is probably better if this is the native page size, but it doesn't
- * have to be.  In theory, if SYSTEM_PAGE_SIZE is larger than the native page
- * size, then `POOL_ADDR(p)->arenaindex' could rarely cause a segmentation
- * violation fault.  4K is apparently OK for all the platforms that python
- * currently targets.
- */
-#define SYSTEM_PAGE_SIZE        (4 * 1024)
-#define SYSTEM_PAGE_SIZE_MASK   (SYSTEM_PAGE_SIZE - 1)
-
-/*
- * Maximum amount of memory managed by the allocator for small requests.
- */
-#ifdef WITH_MEMORY_LIMITS
-#ifndef SMALL_MEMORY_LIMIT
-#define SMALL_MEMORY_LIMIT      (64 * 1024 * 1024)      /* 64 MB -- more? */
-#endif
-#endif
-
-/*
- * The allocator sub-allocates <Big> blocks of memory (called arenas) aligned
- * on a page boundary. This is a reserved virtual address space for the
- * current process (obtained through a malloc call). In no way this means
- * that the memory arenas will be used entirely. A malloc(<Big>) is usually
- * an address range reservation for <Big> bytes, unless all pages within this
- * space are referenced subsequently. So malloc'ing big blocks and not using
- * them does not mean "wasting memory". It's an addressable range wastage...
- *
- * Therefore, allocating arenas with malloc is not optimal, because there is
- * some address space wastage, but this is the most portable way to request
- * memory from the system across various platforms.
- */
-#define ARENA_SIZE              (256 << 10)     /* 256KB */
-
-#ifdef WITH_MEMORY_LIMITS
-#define MAX_ARENAS              (SMALL_MEMORY_LIMIT / ARENA_SIZE)
-#endif
-
-/*
- * Size of the pools used for small blocks. Should be a power of 2,
- * between 1K and SYSTEM_PAGE_SIZE, that is: 1k, 2k, 4k.
- */
-#define POOL_SIZE               SYSTEM_PAGE_SIZE        /* must be 2^N */
-#define POOL_SIZE_MASK          SYSTEM_PAGE_SIZE_MASK
-
-/*
- * -- End of tunable settings section --
- */
-
-/*==========================================================================*/
-
-/*
- * Locking
- *
- * To reduce lock contention, it would probably be better to refine the
- * crude function locking with per size class locking. I'm not positive
- * however, whether it's worth switching to such locking policy because
- * of the performance penalty it might introduce.
- *
- * The following macros describe the simplest (should also be the fastest)
- * lock object on a particular platform and the init/fini/lock/unlock
- * operations on it. The locks defined here are not expected to be recursive
- * because it is assumed that they will always be called in the order:
- * INIT, [LOCK, UNLOCK]*, FINI.
- */
-
-/*
- * Python's threads are serialized, so object malloc locking is disabled.
- */
-#define SIMPLELOCK_DECL(lock)   /* simple lock declaration              */
-#define SIMPLELOCK_INIT(lock)   /* allocate (if needed) and initialize  */
-#define SIMPLELOCK_FINI(lock)   /* free/destroy an existing lock        */
-#define SIMPLELOCK_LOCK(lock)   /* acquire released lock */
-#define SIMPLELOCK_UNLOCK(lock) /* release acquired lock */
-
-/*
- * Basic types
- * I don't care if these are defined in <sys/types.h> or elsewhere. Axiom.
- */
-#undef  uchar
-#define uchar   unsigned char   /* assuming == 8 bits  */
-
-#undef  uint
-#define uint    unsigned int    /* assuming >= 16 bits */
-
-#undef  ulong
-#define ulong   unsigned long   /* assuming >= 32 bits */
-
-#undef uptr
-#define uptr    Py_uintptr_t
-
-/* When you say memory, my mind reasons in terms of (pointers to) blocks */
-typedef uchar block;
-
-/* Pool for small blocks. */
-struct pool_header {
-    union { block *_padding;
-            uint count; } ref;          /* number of allocated blocks    */
-    block *freeblock;                   /* pool's free list head         */
-    struct pool_header *nextpool;       /* next pool of this size class  */
-    struct pool_header *prevpool;       /* previous pool       ""        */
-    uint arenaindex;                    /* index into arenas of base adr */
-    uint szidx;                         /* block size class index        */
-    uint nextoffset;                    /* bytes to virgin block         */
-    uint maxnextoffset;                 /* largest valid nextoffset      */
-};
-
-typedef struct pool_header *poolp;
-
-/* Record keeping for arenas. */
-struct arena_object {
-    /* The address of the arena, as returned by malloc.  Note that 0
-     * will never be returned by a successful malloc, and is used
-     * here to mark an arena_object that doesn't correspond to an
-     * allocated arena.
-     */
-    uptr address;
-
-    /* Pool-aligned pointer to the next pool to be carved off. */
-    block* pool_address;
-
-    /* The number of available pools in the arena:  free pools + never-
-     * allocated pools.
-     */
-    uint nfreepools;
-
-    /* The total number of pools in the arena, whether or not available. */
-    uint ntotalpools;
-
-    /* Singly-linked list of available pools. */
-    struct pool_header* freepools;
-
-    /* Whenever this arena_object is not associated with an allocated
-     * arena, the nextarena member is used to link all unassociated
-     * arena_objects in the singly-linked `unused_arena_objects` list.
-     * The prevarena member is unused in this case.
-     *
-     * When this arena_object is associated with an allocated arena
-     * with at least one available pool, both members are used in the
-     * doubly-linked `usable_arenas` list, which is maintained in
-     * increasing order of `nfreepools` values.
-     *
-     * Else this arena_object is associated with an allocated arena
-     * all of whose pools are in use.  `nextarena` and `prevarena`
-     * are both meaningless in this case.
-     */
-    struct arena_object* nextarena;
-    struct arena_object* prevarena;
-};
-
-#undef  ROUNDUP
-#define ROUNDUP(x)              (((x) + ALIGNMENT_MASK) & ~ALIGNMENT_MASK)
-#define POOL_OVERHEAD           ROUNDUP(sizeof(struct pool_header))
-
-#define DUMMY_SIZE_IDX          0xffff  /* size class of newly cached pools */
-
-/* Round pointer P down to the closest pool-aligned address <= P, as a poolp */
-#define POOL_ADDR(P) ((poolp)((uptr)(P) & ~(uptr)POOL_SIZE_MASK))
-
-/* Return total number of blocks in pool of size index I, as a uint. */
-#define NUMBLOCKS(I) ((uint)(POOL_SIZE - POOL_OVERHEAD) / INDEX2SIZE(I))
-
-/*==========================================================================*/
-
-/*
- * This malloc lock
- */
-SIMPLELOCK_DECL(_malloc_lock)
-#define LOCK()          SIMPLELOCK_LOCK(_malloc_lock)
-#define UNLOCK()        SIMPLELOCK_UNLOCK(_malloc_lock)
-#define LOCK_INIT()     SIMPLELOCK_INIT(_malloc_lock)
-#define LOCK_FINI()     SIMPLELOCK_FINI(_malloc_lock)
-
-/*
- * Pool table -- headed, circular, doubly-linked lists of partially used pools.
-
-This is involved.  For an index i, usedpools[i+i] is the header for a list of
-all partially used pools holding small blocks with "size class idx" i. So
-usedpools[0] corresponds to blocks of size 8, usedpools[2] to blocks of size
-16, and so on:  index 2*i <-> blocks of size (i+1)<<ALIGNMENT_SHIFT.
-
-Pools are carved off an arena's highwater mark (an arena_object's pool_address
-member) as needed.  Once carved off, a pool is in one of three states forever
-after:
-
-used == partially used, neither empty nor full
-    At least one block in the pool is currently allocated, and at least one
-    block in the pool is not currently allocated (note this implies a pool
-    has room for at least two blocks).
-    This is a pool's initial state, as a pool is created only when malloc
-    needs space.
-    The pool holds blocks of a fixed size, and is in the circular list headed
-    at usedpools[i] (see above).  It's linked to the other used pools of the
-    same size class via the pool_header's nextpool and prevpool members.
-    If all but one block is currently allocated, a malloc can cause a
-    transition to the full state.  If all but one block is not currently
-    allocated, a free can cause a transition to the empty state.
-
-full == all the pool's blocks are currently allocated
-    On transition to full, a pool is unlinked from its usedpools[] list.
-    It's not linked to from anything then anymore, and its nextpool and
-    prevpool members are meaningless until it transitions back to used.
-    A free of a block in a full pool puts the pool back in the used state.
-    Then it's linked in at the front of the appropriate usedpools[] list, so
-    that the next allocation for its size class will reuse the freed block.
-
-empty == all the pool's blocks are currently available for allocation
-    On transition to empty, a pool is unlinked from its usedpools[] list,
-    and linked to the front of its arena_object's singly-linked freepools list,
-    via its nextpool member.  The prevpool member has no meaning in this case.
-    Empty pools have no inherent size class:  the next time a malloc finds
-    an empty list in usedpools[], it takes the first pool off of freepools.
-    If the size class needed happens to be the same as the size class the pool
-    last had, some pool initialization can be skipped.
-
-
-Block Management
-
-Blocks within pools are again carved out as needed.  pool->freeblock points to
-the start of a singly-linked list of free blocks within the pool.  When a
-block is freed, it's inserted at the front of its pool's freeblock list.  Note
-that the available blocks in a pool are *not* linked all together when a pool
-is initialized.  Instead only "the first two" (lowest addresses) blocks are
-set up, returning the first such block, and setting pool->freeblock to a
-one-block list holding the second such block.  This is consistent with that
-pymalloc strives at all levels (arena, pool, and block) never to touch a piece
-of memory until it's actually needed.
-
-So long as a pool is in the used state, we're certain there *is* a block
-available for allocating, and pool->freeblock is not NULL.  If pool->freeblock
-points to the end of the free list before we've carved the entire pool into
-blocks, that means we simply haven't yet gotten to one of the higher-address
-blocks.  The offset from the pool_header to the start of "the next" virgin
-block is stored in the pool_header nextoffset member, and the largest value
-of nextoffset that makes sense is stored in the maxnextoffset member when a
-pool is initialized.  All the blocks in a pool have been passed out at least
-once when and only when nextoffset > maxnextoffset.
-
-
-Major obscurity:  While the usedpools vector is declared to have poolp
-entries, it doesn't really.  It really contains two pointers per (conceptual)
-poolp entry, the nextpool and prevpool members of a pool_header.  The
-excruciating initialization code below fools C so that
-
-    usedpool[i+i]
-
-"acts like" a genuine poolp, but only so long as you only reference its
-nextpool and prevpool members.  The "- 2*sizeof(block *)" gibberish is
-compensating for that a pool_header's nextpool and prevpool members
-immediately follow a pool_header's first two members:
-
-    union { block *_padding;
-            uint count; } ref;
-    block *freeblock;
-
-each of which consume sizeof(block *) bytes.  So what usedpools[i+i] really
-contains is a fudged-up pointer p such that *if* C believes it's a poolp
-pointer, then p->nextpool and p->prevpool are both p (meaning that the headed
-circular list is empty).
-
-It's unclear why the usedpools setup is so convoluted.  It could be to
-minimize the amount of cache required to hold this heavily-referenced table
-(which only *needs* the two interpool pointer members of a pool_header). OTOH,
-referencing code has to remember to "double the index" and doing so isn't
-free, usedpools[0] isn't a strictly legal pointer, and we're crucially relying
-on that C doesn't insert any padding anywhere in a pool_header at or before
-the prevpool member.
-**************************************************************************** */
-
-#define PTA(x)  ((poolp )((uchar *)&(usedpools[2*(x)]) - 2*sizeof(block *)))
-#define PT(x)   PTA(x), PTA(x)
-
-static poolp usedpools[2 * ((NB_SMALL_SIZE_CLASSES + 7) / 8) * 8] = {
-    PT(0), PT(1), PT(2), PT(3), PT(4), PT(5), PT(6), PT(7)
-#if NB_SMALL_SIZE_CLASSES > 8
-    , PT(8), PT(9), PT(10), PT(11), PT(12), PT(13), PT(14), PT(15)
-#if NB_SMALL_SIZE_CLASSES > 16
-    , PT(16), PT(17), PT(18), PT(19), PT(20), PT(21), PT(22), PT(23)
-#if NB_SMALL_SIZE_CLASSES > 24
-    , PT(24), PT(25), PT(26), PT(27), PT(28), PT(29), PT(30), PT(31)
-#if NB_SMALL_SIZE_CLASSES > 32
-    , PT(32), PT(33), PT(34), PT(35), PT(36), PT(37), PT(38), PT(39)
-#if NB_SMALL_SIZE_CLASSES > 40
-    , PT(40), PT(41), PT(42), PT(43), PT(44), PT(45), PT(46), PT(47)
-#if NB_SMALL_SIZE_CLASSES > 48
-    , PT(48), PT(49), PT(50), PT(51), PT(52), PT(53), PT(54), PT(55)
-#if NB_SMALL_SIZE_CLASSES > 56
-    , PT(56), PT(57), PT(58), PT(59), PT(60), PT(61), PT(62), PT(63)
-#endif /* NB_SMALL_SIZE_CLASSES > 56 */
-#endif /* NB_SMALL_SIZE_CLASSES > 48 */
-#endif /* NB_SMALL_SIZE_CLASSES > 40 */
-#endif /* NB_SMALL_SIZE_CLASSES > 32 */
-#endif /* NB_SMALL_SIZE_CLASSES > 24 */
-#endif /* NB_SMALL_SIZE_CLASSES > 16 */
-#endif /* NB_SMALL_SIZE_CLASSES >  8 */
-};
-
-/*==========================================================================
-Arena management.
-
-`arenas` is a vector of arena_objects.  It contains maxarenas entries, some of
-which may not be currently used (== they're arena_objects that aren't
-currently associated with an allocated arena).  Note that arenas proper are
-separately malloc'ed.
-
-Prior to Python 2.5, arenas were never free()'ed.  Starting with Python 2.5,
-we do try to free() arenas, and use some mild heuristic strategies to increase
-the likelihood that arenas eventually can be freed.
-
-unused_arena_objects
-
-    This is a singly-linked list of the arena_objects that are currently not
-    being used (no arena is associated with them).  Objects are taken off the
-    head of the list in new_arena(), and are pushed on the head of the list in
-    PyObject_Free() when the arena is empty.  Key invariant:  an arena_object
-    is on this list if and only if its .address member is 0.
-
-usable_arenas
-
-    This is a doubly-linked list of the arena_objects associated with arenas
-    that have pools available.  These pools are either waiting to be reused,
-    or have not been used before.  The list is sorted to have the most-
-    allocated arenas first (ascending order based on the nfreepools member).
-    This means that the next allocation will come from a heavily used arena,
-    which gives the nearly empty arenas a chance to be returned to the system.
-    In my unscientific tests this dramatically improved the number of arenas
-    that could be freed.
-
-Note that an arena_object associated with an arena all of whose pools are
-currently in use isn't on either list.
-*/
-
-/* Array of objects used to track chunks of memory (arenas). */
-static struct arena_object* arenas = NULL;
-/* Number of slots currently allocated in the `arenas` vector. */
-static uint maxarenas = 0;
-
-/* The head of the singly-linked, NULL-terminated list of available
- * arena_objects.
- */
-static struct arena_object* unused_arena_objects = NULL;
-
-/* The head of the doubly-linked, NULL-terminated at each end, list of
- * arena_objects associated with arenas that have pools available.
- */
-static struct arena_object* usable_arenas = NULL;
-
-/* How many arena_objects do we initially allocate?
- * 16 = can allocate 16 arenas = 16 * ARENA_SIZE = 4MB before growing the
- * `arenas` vector.
- */
-#define INITIAL_ARENA_OBJECTS 16
-
-/* Number of arenas allocated that haven't been free()'d. */
-static size_t narenas_currently_allocated = 0;
-
-#ifdef PYMALLOC_DEBUG
-/* Total number of times malloc() called to allocate an arena. */
-static size_t ntimes_arena_allocated = 0;
-/* High water mark (max value ever seen) for narenas_currently_allocated. */
-static size_t narenas_highwater = 0;
-#endif
-
-/* Allocate a new arena.  If we run out of memory, return NULL.  Else
- * allocate a new arena, and return the address of an arena_object
- * describing the new arena.  It's expected that the caller will set
- * `usable_arenas` to the return value.
- */
-static struct arena_object*
-new_arena(void)
-{
-    struct arena_object* arenaobj;
-    uint excess;        /* number of bytes above pool alignment */
-
-#ifdef PYMALLOC_DEBUG
-    if (Py_GETENV("PYTHONMALLOCSTATS"))
-        _PyObject_DebugMallocStats();
-#endif
-    if (unused_arena_objects == NULL) {
-        uint i;
-        uint numarenas;
-        size_t nbytes;
-
-        /* Double the number of arena objects on each allocation.
-         * Note that it's possible for `numarenas` to overflow.
-         */
-        numarenas = maxarenas ? maxarenas << 1 : INITIAL_ARENA_OBJECTS;
-        if (numarenas <= maxarenas)
-            return NULL;                /* overflow */
-#if SIZEOF_SIZE_T <= SIZEOF_INT
-        if (numarenas > PY_SIZE_MAX / sizeof(*arenas))
-            return NULL;                /* overflow */
-#endif
-        nbytes = numarenas * sizeof(*arenas);
-        arenaobj = (struct arena_object *)realloc(arenas, nbytes);
-        if (arenaobj == NULL)
-            return NULL;
-        arenas = arenaobj;
-
-        /* We might need to fix pointers that were copied.  However,
-         * new_arena only gets called when all the pages in the
-         * previous arenas are full.  Thus, there are *no* pointers
-         * into the old array. Thus, we don't have to worry about
-         * invalid pointers.  Just to be sure, some asserts:
-         */
-        assert(usable_arenas == NULL);
-        assert(unused_arena_objects == NULL);
-
-        /* Put the new arenas on the unused_arena_objects list. */
-        for (i = maxarenas; i < numarenas; ++i) {
-            arenas[i].address = 0;              /* mark as unassociated */
-            arenas[i].nextarena = i < numarenas - 1 ?
-                                   &arenas[i+1] : NULL;
-        }
-
-        /* Update globals. */
-        unused_arena_objects = &arenas[maxarenas];
-        maxarenas = numarenas;
-    }
-
-    /* Take the next available arena object off the head of the list. */
-    assert(unused_arena_objects != NULL);
-    arenaobj = unused_arena_objects;
-    unused_arena_objects = arenaobj->nextarena;
-    assert(arenaobj->address == 0);
-    arenaobj->address = (uptr)malloc(ARENA_SIZE);
-    if (arenaobj->address == 0) {
-        /* The allocation failed: return NULL after putting the
-         * arenaobj back.
-         */
-        arenaobj->nextarena = unused_arena_objects;
-        unused_arena_objects = arenaobj;
-        return NULL;
-    }
-
-    ++narenas_currently_allocated;
-#ifdef PYMALLOC_DEBUG
-    ++ntimes_arena_allocated;
-    if (narenas_currently_allocated > narenas_highwater)
-        narenas_highwater = narenas_currently_allocated;
-#endif
-    arenaobj->freepools = NULL;
-    /* pool_address <- first pool-aligned address in the arena
-       nfreepools <- number of whole pools that fit after alignment */
-    arenaobj->pool_address = (block*)arenaobj->address;
-    arenaobj->nfreepools = ARENA_SIZE / POOL_SIZE;
-    assert(POOL_SIZE * arenaobj->nfreepools == ARENA_SIZE);
-    excess = (uint)(arenaobj->address & POOL_SIZE_MASK);
-    if (excess != 0) {
-        --arenaobj->nfreepools;
-        arenaobj->pool_address += POOL_SIZE - excess;
-    }
-    arenaobj->ntotalpools = arenaobj->nfreepools;
-
-    return arenaobj;
-}
-
-/*
-Py_ADDRESS_IN_RANGE(P, POOL)
-
-Return true if and only if P is an address that was allocated by pymalloc.
-POOL must be the pool address associated with P, i.e., POOL = POOL_ADDR(P)
-(the caller is asked to compute this because the macro expands POOL more than
-once, and for efficiency it's best for the caller to assign POOL_ADDR(P) to a
-variable and pass the latter to the macro; because Py_ADDRESS_IN_RANGE is
-called on every alloc/realloc/free, micro-efficiency is important here).
-
-Tricky:  Let B be the arena base address associated with the pool, B =
-arenas[(POOL)->arenaindex].address.  Then P belongs to the arena if and only if
-
-    B <= P < B + ARENA_SIZE
-
-Subtracting B throughout, this is true iff
-
-    0 <= P-B < ARENA_SIZE
-
-By using unsigned arithmetic, the "0 <=" half of the test can be skipped.
-
-Obscure:  A PyMem "free memory" function can call the pymalloc free or realloc
-before the first arena has been allocated.  `arenas` is still NULL in that
-case.  We're relying on that maxarenas is also 0 in that case, so that
-(POOL)->arenaindex < maxarenas  must be false, saving us from trying to index
-into a NULL arenas.
-
-Details:  given P and POOL, the arena_object corresponding to P is AO =
-arenas[(POOL)->arenaindex].  Suppose obmalloc controls P.  Then (barring wild
-stores, etc), POOL is the correct address of P's pool, AO.address is the
-correct base address of the pool's arena, and P must be within ARENA_SIZE of
-AO.address.  In addition, AO.address is not 0 (no arena can start at address 0
-(NULL)).  Therefore Py_ADDRESS_IN_RANGE correctly reports that obmalloc
-controls P.
-
-Now suppose obmalloc does not control P (e.g., P was obtained via a direct
-call to the system malloc() or realloc()).  (POOL)->arenaindex may be anything
-in this case -- it may even be uninitialized trash.  If the trash arenaindex
-is >= maxarenas, the macro correctly concludes at once that obmalloc doesn't
-control P.
-
-Else arenaindex is < maxarena, and AO is read up.  If AO corresponds to an
-allocated arena, obmalloc controls all the memory in slice AO.address :
-AO.address+ARENA_SIZE.  By case assumption, P is not controlled by obmalloc,
-so P doesn't lie in that slice, so the macro correctly reports that P is not
-controlled by obmalloc.
-
-Finally, if P is not controlled by obmalloc and AO corresponds to an unused
-arena_object (one not currently associated with an allocated arena),
-AO.address is 0, and the second test in the macro reduces to:
-
-    P < ARENA_SIZE
-
-If P >= ARENA_SIZE (extremely likely), the macro again correctly concludes
-that P is not controlled by obmalloc.  However, if P < ARENA_SIZE, this part
-of the test still passes, and the third clause (AO.address != 0) is necessary
-to get the correct result:  AO.address is 0 in this case, so the macro
-correctly reports that P is not controlled by obmalloc (despite that P lies in
-slice AO.address : AO.address + ARENA_SIZE).
-
-Note:  The third (AO.address != 0) clause was added in Python 2.5.  Before
-2.5, arenas were never free()'ed, and an arenaindex < maxarena always
-corresponded to a currently-allocated arena, so the "P is not controlled by
-obmalloc, AO corresponds to an unused arena_object, and P < ARENA_SIZE" case
-was impossible.
-
-Note that the logic is excruciating, and reading up possibly uninitialized
-memory when P is not controlled by obmalloc (to get at (POOL)->arenaindex)
-creates problems for some memory debuggers.  The overwhelming advantage is
-that this test determines whether an arbitrary address is controlled by
-obmalloc in a small constant time, independent of the number of arenas
-obmalloc controls.  Since this test is needed at every entry point, it's
-extremely desirable that it be this fast.
-
-Since Py_ADDRESS_IN_RANGE may be reading from memory which was not allocated
-by Python, it is important that (POOL)->arenaindex is read only once, as
-another thread may be concurrently modifying the value without holding the
-GIL.  To accomplish this, the arenaindex_temp variable is used to store
-(POOL)->arenaindex for the duration of the Py_ADDRESS_IN_RANGE macro's
-execution.  The caller of the macro is responsible for declaring this
-variable.
-*/
-#define Py_ADDRESS_IN_RANGE(P, POOL)                    \
-    ((arenaindex_temp = (POOL)->arenaindex) < maxarenas &&              \
-     (uptr)(P) - arenas[arenaindex_temp].address < (uptr)ARENA_SIZE && \
-     arenas[arenaindex_temp].address != 0)
-
-
-/* This is only useful when running memory debuggers such as
- * Purify or Valgrind.  Uncomment to use.
- *
-#define Py_USING_MEMORY_DEBUGGER
- */
-
-#ifdef Py_USING_MEMORY_DEBUGGER
-
-/* Py_ADDRESS_IN_RANGE may access uninitialized memory by design
- * This leads to thousands of spurious warnings when using
- * Purify or Valgrind.  By making a function, we can easily
- * suppress the uninitialized memory reads in this one function.
- * So we won't ignore real errors elsewhere.
- *
- * Disable the macro and use a function.
- */
-
-#undef Py_ADDRESS_IN_RANGE
-
-#if defined(__GNUC__) && ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1) || \
-                          (__GNUC__ >= 4))
-#define Py_NO_INLINE __attribute__((__noinline__))
-#else
-#define Py_NO_INLINE
-#endif
-
-/* Don't make static, to try to ensure this isn't inlined. */
-int Py_ADDRESS_IN_RANGE(void *P, poolp pool) Py_NO_INLINE;
-#undef Py_NO_INLINE
-#endif
-
-/*==========================================================================*/
-
-/* malloc.  Note that nbytes==0 tries to return a non-NULL pointer, distinct
- * from all other currently live pointers.  This may not be possible.
- */
-
-/*
- * The basic blocks are ordered by decreasing execution frequency,
- * which minimizes the number of jumps in the most common cases,
- * improves branching prediction and instruction scheduling (small
- * block allocations typically result in a couple of instructions).
- * Unless the optimizer reorders everything, being too smart...
- */
-
-#undef PyObject_Malloc
-void *
-PyObject_Malloc(size_t nbytes)
-{
-    block *bp;
-    poolp pool;
-    poolp next;
-    uint size;
-
-#ifdef WITH_VALGRIND
-    if (UNLIKELY(running_on_valgrind == -1))
-        running_on_valgrind = RUNNING_ON_VALGRIND;
-    if (UNLIKELY(running_on_valgrind))
-        goto redirect;
-#endif
-
-    /*
-     * Limit ourselves to PY_SSIZE_T_MAX bytes to prevent security holes.
-     * Most python internals blindly use a signed Py_ssize_t to track
-     * things without checking for overflows or negatives.
-     * As size_t is unsigned, checking for nbytes < 0 is not required.
-     */
-    if (nbytes > PY_SSIZE_T_MAX)
-        return NULL;
-
-    /*
-     * This implicitly redirects malloc(0).
-     */
-    if ((nbytes - 1) < SMALL_REQUEST_THRESHOLD) {
-        LOCK();
-        /*
-         * Most frequent paths first
-         */
-        size = (uint)(nbytes - 1) >> ALIGNMENT_SHIFT;
-        pool = usedpools[size + size];
-        if (pool != pool->nextpool) {
-            /*
-             * There is a used pool for this size class.
-             * Pick up the head block of its free list.
-             */
-            ++pool->ref.count;
-            bp = pool->freeblock;
-            assert(bp != NULL);
-            if ((pool->freeblock = *(block **)bp) != NULL) {
-                UNLOCK();
-                return (void *)bp;
-            }
-            /*
-             * Reached the end of the free list, try to extend it.
-             */
-            if (pool->nextoffset <= pool->maxnextoffset) {
-                /* There is room for another block. */
-                pool->freeblock = (block*)pool +
-                                  pool->nextoffset;
-                pool->nextoffset += INDEX2SIZE(size);
-                *(block **)(pool->freeblock) = NULL;
-                UNLOCK();
-                return (void *)bp;
-            }
-            /* Pool is full, unlink from used pools. */
-            next = pool->nextpool;
-            pool = pool->prevpool;
-            next->prevpool = pool;
-            pool->nextpool = next;
-            UNLOCK();
-            return (void *)bp;
-        }
-
-        /* There isn't a pool of the right size class immediately
-         * available:  use a free pool.
-         */
-        if (usable_arenas == NULL) {
-            /* No arena has a free pool:  allocate a new arena. */
-#ifdef WITH_MEMORY_LIMITS
-            if (narenas_currently_allocated >= MAX_ARENAS) {
-                UNLOCK();
-                goto redirect;
-            }
-#endif
-            usable_arenas = new_arena();
-            if (usable_arenas == NULL) {
-                UNLOCK();
-                goto redirect;
-            }
-            usable_arenas->nextarena =
-                usable_arenas->prevarena = NULL;
-        }
-        assert(usable_arenas->address != 0);
-
-        /* Try to get a cached free pool. */
-        pool = usable_arenas->freepools;
-        if (pool != NULL) {
-            /* Unlink from cached pools. */
-            usable_arenas->freepools = pool->nextpool;
-
-            /* This arena already had the smallest nfreepools
-             * value, so decreasing nfreepools doesn't change
-             * that, and we don't need to rearrange the
-             * usable_arenas list.  However, if the arena has
-             * become wholly allocated, we need to remove its
-             * arena_object from usable_arenas.
-             */
-            --usable_arenas->nfreepools;
-            if (usable_arenas->nfreepools == 0) {
-                /* Wholly allocated:  remove. */
-                assert(usable_arenas->freepools == NULL);
-                assert(usable_arenas->nextarena == NULL ||
-                       usable_arenas->nextarena->prevarena ==
-                       usable_arenas);
-
-                usable_arenas = usable_arenas->nextarena;
-                if (usable_arenas != NULL) {
-                    usable_arenas->prevarena = NULL;
-                    assert(usable_arenas->address != 0);
-                }
-            }
-            else {
-                /* nfreepools > 0:  it must be that freepools
-                 * isn't NULL, or that we haven't yet carved
-                 * off all the arena's pools for the first
-                 * time.
-                 */
-                assert(usable_arenas->freepools != NULL ||
-                       usable_arenas->pool_address <=
-                       (block*)usable_arenas->address +
-                           ARENA_SIZE - POOL_SIZE);
-            }
-        init_pool:
-            /* Frontlink to used pools. */
-            next = usedpools[size + size]; /* == prev */
-            pool->nextpool = next;
-            pool->prevpool = next;
-            next->nextpool = pool;
-            next->prevpool = pool;
-            pool->ref.count = 1;
-            if (pool->szidx == size) {
-                /* Luckily, this pool last contained blocks
-                 * of the same size class, so its header
-                 * and free list are already initialized.
-                 */
-                bp = pool->freeblock;
-                pool->freeblock = *(block **)bp;
-                UNLOCK();
-                return (void *)bp;
-            }
-            /*
-             * Initialize the pool header, set up the free list to
-             * contain just the second block, and return the first
-             * block.
-             */
-            pool->szidx = size;
-            size = INDEX2SIZE(size);
-            bp = (block *)pool + POOL_OVERHEAD;
-            pool->nextoffset = POOL_OVERHEAD + (size << 1);
-            pool->maxnextoffset = POOL_SIZE - size;
-            pool->freeblock = bp + size;
-            *(block **)(pool->freeblock) = NULL;
-            UNLOCK();
-            return (void *)bp;
-        }
-
-        /* Carve off a new pool. */
-        assert(usable_arenas->nfreepools > 0);
-        assert(usable_arenas->freepools == NULL);
-        pool = (poolp)usable_arenas->pool_address;
-        assert((block*)pool <= (block*)usable_arenas->address +
-                               ARENA_SIZE - POOL_SIZE);
-        pool->arenaindex = usable_arenas - arenas;
-        assert(&arenas[pool->arenaindex] == usable_arenas);
-        pool->szidx = DUMMY_SIZE_IDX;
-        usable_arenas->pool_address += POOL_SIZE;
-        --usable_arenas->nfreepools;
-
-        if (usable_arenas->nfreepools == 0) {
-            assert(usable_arenas->nextarena == NULL ||
-                   usable_arenas->nextarena->prevarena ==
-                   usable_arenas);
-            /* Unlink the arena:  it is completely allocated. */
-            usable_arenas = usable_arenas->nextarena;
-            if (usable_arenas != NULL) {
-                usable_arenas->prevarena = NULL;
-                assert(usable_arenas->address != 0);
-            }
-        }
-
-        goto init_pool;
-    }
-
-    /* The small block allocator ends here. */
-
-redirect:
-    /* Redirect the original request to the underlying (libc) allocator.
-     * We jump here on bigger requests, on error in the code above (as a
-     * last chance to serve the request) or when the max memory limit
-     * has been reached.
-     */
-    if (nbytes == 0)
-        nbytes = 1;
-    return (void *)malloc(nbytes);
-}
-
-/* free */
-
-#undef PyObject_Free
-void
-PyObject_Free(void *p)
-{
-    poolp pool;
-    block *lastfree;
-    poolp next, prev;
-    uint size;
-#ifndef Py_USING_MEMORY_DEBUGGER
-    uint arenaindex_temp;
-#endif
-
-    if (p == NULL)      /* free(NULL) has no effect */
-        return;
-
-#ifdef WITH_VALGRIND
-    if (UNLIKELY(running_on_valgrind > 0))
-        goto redirect;
-#endif
-
-    pool = POOL_ADDR(p);
-    if (Py_ADDRESS_IN_RANGE(p, pool)) {
-        /* We allocated this address. */
-        LOCK();
-        /* Link p to the start of the pool's freeblock list.  Since
-         * the pool had at least the p block outstanding, the pool
-         * wasn't empty (so it's already in a usedpools[] list, or
-         * was full and is in no list -- it's not in the freeblocks
-         * list in any case).
-         */
-        assert(pool->ref.count > 0);            /* else it was empty */
-        *(block **)p = lastfree = pool->freeblock;
-        pool->freeblock = (block *)p;
-        if (lastfree) {
-            struct arena_object* ao;
-            uint nf;  /* ao->nfreepools */
-
-            /* freeblock wasn't NULL, so the pool wasn't full,
-             * and the pool is in a usedpools[] list.
-             */
-            if (--pool->ref.count != 0) {
-                /* pool isn't empty:  leave it in usedpools */
-                UNLOCK();
-                return;
-            }
-            /* Pool is now empty:  unlink from usedpools, and
-             * link to the front of freepools.  This ensures that
-             * previously freed pools will be allocated later
-             * (being not referenced, they are perhaps paged out).
-             */
-            next = pool->nextpool;
-            prev = pool->prevpool;
-            next->prevpool = prev;
-            prev->nextpool = next;
-
-            /* Link the pool to freepools.  This is a singly-linked
-             * list, and pool->prevpool isn't used there.
-             */
-            ao = &arenas[pool->arenaindex];
-            pool->nextpool = ao->freepools;
-            ao->freepools = pool;
-            nf = ++ao->nfreepools;
-
-            /* All the rest is arena management.  We just freed
-             * a pool, and there are 4 cases for arena mgmt:
-             * 1. If all the pools are free, return the arena to
-             *    the system free().
-             * 2. If this is the only free pool in the arena,
-             *    add the arena back to the `usable_arenas` list.
-             * 3. If the "next" arena has a smaller count of free
-             *    pools, we have to "slide this arena right" to
-             *    restore that usable_arenas is sorted in order of
-             *    nfreepools.
-             * 4. Else there's nothing more to do.
-             */
-            if (nf == ao->ntotalpools) {
-                /* Case 1.  First unlink ao from usable_arenas.
-                 */
-                assert(ao->prevarena == NULL ||
-                       ao->prevarena->address != 0);
-                assert(ao ->nextarena == NULL ||
-                       ao->nextarena->address != 0);
-
-                /* Fix the pointer in the prevarena, or the
-                 * usable_arenas pointer.
-                 */
-                if (ao->prevarena == NULL) {
-                    usable_arenas = ao->nextarena;
-                    assert(usable_arenas == NULL ||
-                           usable_arenas->address != 0);
-                }
-                else {
-                    assert(ao->prevarena->nextarena == ao);
-                    ao->prevarena->nextarena =
-                        ao->nextarena;
-                }
-                /* Fix the pointer in the nextarena. */
-                if (ao->nextarena != NULL) {
-                    assert(ao->nextarena->prevarena == ao);
-                    ao->nextarena->prevarena =
-                        ao->prevarena;
-                }
-                /* Record that this arena_object slot is
-                 * available to be reused.
-                 */
-                ao->nextarena = unused_arena_objects;
-                unused_arena_objects = ao;
-
-                /* Free the entire arena. */
-                free((void *)ao->address);
-                ao->address = 0;                        /* mark unassociated */
-                --narenas_currently_allocated;
-
-                UNLOCK();
-                return;
-            }
-            if (nf == 1) {
-                /* Case 2.  Put ao at the head of
-                 * usable_arenas.  Note that because
-                 * ao->nfreepools was 0 before, ao isn't
-                 * currently on the usable_arenas list.
-                 */
-                ao->nextarena = usable_arenas;
-                ao->prevarena = NULL;
-                if (usable_arenas)
-                    usable_arenas->prevarena = ao;
-                usable_arenas = ao;
-                assert(usable_arenas->address != 0);
-
-                UNLOCK();
-                return;
-            }
-            /* If this arena is now out of order, we need to keep
-             * the list sorted.  The list is kept sorted so that
-             * the "most full" arenas are used first, which allows
-             * the nearly empty arenas to be completely freed.  In
-             * a few un-scientific tests, it seems like this
-             * approach allowed a lot more memory to be freed.
-             */
-            if (ao->nextarena == NULL ||
-                         nf <= ao->nextarena->nfreepools) {
-                /* Case 4.  Nothing to do. */
-                UNLOCK();
-                return;
-            }
-            /* Case 3:  We have to move the arena towards the end
-             * of the list, because it has more free pools than
-             * the arena to its right.
-             * First unlink ao from usable_arenas.
-             */
-            if (ao->prevarena != NULL) {
-                /* ao isn't at the head of the list */
-                assert(ao->prevarena->nextarena == ao);
-                ao->prevarena->nextarena = ao->nextarena;
-            }
-            else {
-                /* ao is at the head of the list */
-                assert(usable_arenas == ao);
-                usable_arenas = ao->nextarena;
-            }
-            ao->nextarena->prevarena = ao->prevarena;
-
-            /* Locate the new insertion point by iterating over
-             * the list, using our nextarena pointer.
-             */
-            while (ao->nextarena != NULL &&
-                            nf > ao->nextarena->nfreepools) {
-                ao->prevarena = ao->nextarena;
-                ao->nextarena = ao->nextarena->nextarena;
-            }
-
-            /* Insert ao at this point. */
-            assert(ao->nextarena == NULL ||
-                ao->prevarena == ao->nextarena->prevarena);
-            assert(ao->prevarena->nextarena == ao->nextarena);
-
-            ao->prevarena->nextarena = ao;
-            if (ao->nextarena != NULL)
-                ao->nextarena->prevarena = ao;
-
-            /* Verify that the swaps worked. */
-            assert(ao->nextarena == NULL ||
-                      nf <= ao->nextarena->nfreepools);
-            assert(ao->prevarena == NULL ||
-                      nf > ao->prevarena->nfreepools);
-            assert(ao->nextarena == NULL ||
-                ao->nextarena->prevarena == ao);
-            assert((usable_arenas == ao &&
-                ao->prevarena == NULL) ||
-                ao->prevarena->nextarena == ao);
-
-            UNLOCK();
-            return;
-        }
-        /* Pool was full, so doesn't currently live in any list:
-         * link it to the front of the appropriate usedpools[] list.
-         * This mimics LRU pool usage for new allocations and
-         * targets optimal filling when several pools contain
-         * blocks of the same size class.
-         */
-        --pool->ref.count;
-        assert(pool->ref.count > 0);            /* else the pool is empty */
-        size = pool->szidx;
-        next = usedpools[size + size];
-        prev = next->prevpool;
-        /* insert pool before next:   prev <-> pool <-> next */
-        pool->nextpool = next;
-        pool->prevpool = prev;
-        next->prevpool = pool;
-        prev->nextpool = pool;
-        UNLOCK();
-        return;
-    }
-
-#ifdef WITH_VALGRIND
-redirect:
-#endif
-    /* We didn't allocate this address. */
-    free(p);
-}
-
-/* realloc.  If p is NULL, this acts like malloc(nbytes).  Else if nbytes==0,
- * then as the Python docs promise, we do not treat this like free(p), and
- * return a non-NULL result.
- */
-
-#undef PyObject_Realloc
-void *
-PyObject_Realloc(void *p, size_t nbytes)
-{
-    void *bp;
-    poolp pool;
-    size_t size;
-#ifndef Py_USING_MEMORY_DEBUGGER
-    uint arenaindex_temp;
-#endif
-
-    if (p == NULL)
-        return PyObject_Malloc(nbytes);
-
-    /*
-     * Limit ourselves to PY_SSIZE_T_MAX bytes to prevent security holes.
-     * Most python internals blindly use a signed Py_ssize_t to track
-     * things without checking for overflows or negatives.
-     * As size_t is unsigned, checking for nbytes < 0 is not required.
-     */
-    if (nbytes > PY_SSIZE_T_MAX)
-        return NULL;
-
-#ifdef WITH_VALGRIND
-    /* Treat running_on_valgrind == -1 the same as 0 */
-    if (UNLIKELY(running_on_valgrind > 0))
-        goto redirect;
-#endif
-
-    pool = POOL_ADDR(p);
-    if (Py_ADDRESS_IN_RANGE(p, pool)) {
-        /* We're in charge of this block */
-        size = INDEX2SIZE(pool->szidx);
-        if (nbytes <= size) {
-            /* The block is staying the same or shrinking.  If
-             * it's shrinking, there's a tradeoff:  it costs
-             * cycles to copy the block to a smaller size class,
-             * but it wastes memory not to copy it.  The
-             * compromise here is to copy on shrink only if at
-             * least 25% of size can be shaved off.
-             */
-            if (4 * nbytes > 3 * size) {
-                /* It's the same,
-                 * or shrinking and new/old > 3/4.
-                 */
-                return p;
-            }
-            size = nbytes;
-        }
-        bp = PyObject_Malloc(nbytes);
-        if (bp != NULL) {
-            memcpy(bp, p, size);
-            PyObject_Free(p);
-        }
-        return bp;
-    }
-#ifdef WITH_VALGRIND
- redirect:
-#endif
-    /* We're not managing this block.  If nbytes <=
-     * SMALL_REQUEST_THRESHOLD, it's tempting to try to take over this
-     * block.  However, if we do, we need to copy the valid data from
-     * the C-managed block to one of our blocks, and there's no portable
-     * way to know how much of the memory space starting at p is valid.
-     * As bug 1185883 pointed out the hard way, it's possible that the
-     * C-managed block is "at the end" of allocated VM space, so that
-     * a memory fault can occur if we try to copy nbytes bytes starting
-     * at p.  Instead we punt:  let C continue to manage this block.
-     */
-    if (nbytes)
-        return realloc(p, nbytes);
-    /* C doesn't define the result of realloc(p, 0) (it may or may not
-     * return NULL then), but Python's docs promise that nbytes==0 never
-     * returns NULL.  We don't pass 0 to realloc(), to avoid that endcase
-     * to begin with.  Even then, we can't be sure that realloc() won't
-     * return NULL.
-     */
-    bp = realloc(p, 1);
-    return bp ? bp : p;
-}
-
-#else   /* ! WITH_PYMALLOC */
-
-/*==========================================================================*/
-/* pymalloc not enabled:  Redirect the entry points to malloc.  These will
- * only be used by extensions that are compiled with pymalloc enabled. */
-
-void *
-PyObject_Malloc(size_t n)
-{
-    return PyMem_MALLOC(n);
-}
-
-void *
-PyObject_Realloc(void *p, size_t n)
-{
-    return PyMem_REALLOC(p, n);
-}
-
-void
-PyObject_Free(void *p)
-{
-    PyMem_FREE(p);
-}
-#endif /* WITH_PYMALLOC */
-
-#ifdef PYMALLOC_DEBUG
-/*==========================================================================*/
-/* A x-platform debugging allocator.  This doesn't manage memory directly,
- * it wraps a real allocator, adding extra debugging info to the memory blocks.
- */
-
-/* Special bytes broadcast into debug memory blocks at appropriate times.
- * Strings of these are unlikely to be valid addresses, floats, ints or
- * 7-bit ASCII.
- */
-#undef CLEANBYTE
-#undef DEADBYTE
-#undef FORBIDDENBYTE
-#define CLEANBYTE      0xCB    /* clean (newly allocated) memory */
-#define DEADBYTE       0xDB    /* dead (newly freed) memory */
-#define FORBIDDENBYTE  0xFB    /* untouchable bytes at each end of a block */
-
-/* We tag each block with an API ID in order to tag API violations */
-#define _PYMALLOC_MEM_ID 'm'   /* the PyMem_Malloc() API */
-#define _PYMALLOC_OBJ_ID 'o'   /* The PyObject_Malloc() API */
-
-static size_t serialno = 0;     /* incremented on each debug {m,re}alloc */
-
-/* serialno is always incremented via calling this routine.  The point is
- * to supply a single place to set a breakpoint.
- */
-static void
-bumpserialno(void)
-{
-    ++serialno;
-}
-
-#define SST SIZEOF_SIZE_T
-
-/* Read sizeof(size_t) bytes at p as a big-endian size_t. */
-static size_t
-read_size_t(const void *p)
-{
-    const uchar *q = (const uchar *)p;
-    size_t result = *q++;
-    int i;
-
-    for (i = SST; --i > 0; ++q)
-        result = (result << 8) | *q;
-    return result;
-}
-
-/* Write n as a big-endian size_t, MSB at address p, LSB at
- * p + sizeof(size_t) - 1.
- */
-static void
-write_size_t(void *p, size_t n)
-{
-    uchar *q = (uchar *)p + SST - 1;
-    int i;
-
-    for (i = SST; --i >= 0; --q) {
-        *q = (uchar)(n & 0xff);
-        n >>= 8;
-    }
-}
-
-#ifdef Py_DEBUG
-/* Is target in the list?  The list is traversed via the nextpool pointers.
- * The list may be NULL-terminated, or circular.  Return 1 if target is in
- * list, else 0.
- */
-static int
-pool_is_in_list(const poolp target, poolp list)
-{
-    poolp origlist = list;
-    assert(target != NULL);
-    if (list == NULL)
-        return 0;
-    do {
-        if (target == list)
-            return 1;
-        list = list->nextpool;
-    } while (list != NULL && list != origlist);
-    return 0;
-}
-
-#else
-#define pool_is_in_list(X, Y) 1
-
-#endif  /* Py_DEBUG */
-
-/* Let S = sizeof(size_t).  The debug malloc asks for 4*S extra bytes and
-   fills them with useful stuff, here calling the underlying malloc's result p:
-
-p[0: S]
-    Number of bytes originally asked for.  This is a size_t, big-endian (easier
-    to read in a memory dump).
-p[S: 2*S]
-    Copies of FORBIDDENBYTE.  Used to catch under- writes and reads.
-p[2*S: 2*S+n]
-    The requested memory, filled with copies of CLEANBYTE.
-    Used to catch reference to uninitialized memory.
-    &p[2*S] is returned.  Note that this is 8-byte aligned if pymalloc
-    handled the request itself.
-p[2*S+n: 2*S+n+S]
-    Copies of FORBIDDENBYTE.  Used to catch over- writes and reads.
-p[2*S+n+S: 2*S+n+2*S]
-    A serial number, incremented by 1 on each call to _PyObject_DebugMalloc
-    and _PyObject_DebugRealloc.
-    This is a big-endian size_t.
-    If "bad memory" is detected later, the serial number gives an
-    excellent way to set a breakpoint on the next run, to capture the
-    instant at which this block was passed out.
-*/
-
-/* debug replacements for the PyMem_* memory API */
-void *
-_PyMem_DebugMalloc(size_t nbytes)
-{
-    return _PyObject_DebugMallocApi(_PYMALLOC_MEM_ID, nbytes);
-}
-void *
-_PyMem_DebugRealloc(void *p, size_t nbytes)
-{
-    return _PyObject_DebugReallocApi(_PYMALLOC_MEM_ID, p, nbytes);
-}
-void
-_PyMem_DebugFree(void *p)
-{
-    _PyObject_DebugFreeApi(_PYMALLOC_MEM_ID, p);
-}
-
-/* debug replacements for the PyObject_* memory API */
-void *
-_PyObject_DebugMalloc(size_t nbytes)
-{
-    return _PyObject_DebugMallocApi(_PYMALLOC_OBJ_ID, nbytes);
-}
-void *
-_PyObject_DebugRealloc(void *p, size_t nbytes)
-{
-    return _PyObject_DebugReallocApi(_PYMALLOC_OBJ_ID, p, nbytes);
-}
-void
-_PyObject_DebugFree(void *p)
-{
-    _PyObject_DebugFreeApi(_PYMALLOC_OBJ_ID, p);
-}
-void
-_PyObject_DebugCheckAddress(const void *p)
-{
-    _PyObject_DebugCheckAddressApi(_PYMALLOC_OBJ_ID, p);
-}
-
-
-/* generic debug memory api, with an "id" to identify the API in use */
-void *
-_PyObject_DebugMallocApi(char id, size_t nbytes)
-{
-    uchar *p;           /* base address of malloc'ed block */
-    uchar *tail;        /* p + 2*SST + nbytes == pointer to tail pad bytes */
-    size_t total;       /* nbytes + 4*SST */
-
-    bumpserialno();
-    total = nbytes + 4*SST;
-    if (total < nbytes)
-        /* overflow:  can't represent total as a size_t */
-        return NULL;
-
-    p = (uchar *)PyObject_Malloc(total);
-    if (p == NULL)
-        return NULL;
-
-    /* at p, write size (SST bytes), id (1 byte), pad (SST-1 bytes) */
-    write_size_t(p, nbytes);
-    p[SST] = (uchar)id;
-    memset(p + SST + 1 , FORBIDDENBYTE, SST-1);
-
-    if (nbytes > 0)
-        memset(p + 2*SST, CLEANBYTE, nbytes);
-
-    /* at tail, write pad (SST bytes) and serialno (SST bytes) */
-    tail = p + 2*SST + nbytes;
-    memset(tail, FORBIDDENBYTE, SST);
-    write_size_t(tail + SST, serialno);
-
-    return p + 2*SST;
-}
-
-/* The debug free first checks the 2*SST bytes on each end for sanity (in
-   particular, that the FORBIDDENBYTEs with the api ID are still intact).
-   Then fills the original bytes with DEADBYTE.
-   Then calls the underlying free.
-*/
-void
-_PyObject_DebugFreeApi(char api, void *p)
-{
-    uchar *q = (uchar *)p - 2*SST;  /* address returned from malloc */
-    size_t nbytes;
-
-    if (p == NULL)
-        return;
-    _PyObject_DebugCheckAddressApi(api, p);
-    nbytes = read_size_t(q);
-    nbytes += 4*SST;
-    if (nbytes > 0)
-        memset(q, DEADBYTE, nbytes);
-    PyObject_Free(q);
-}
-
-void *
-_PyObject_DebugReallocApi(char api, void *p, size_t nbytes)
-{
-    uchar *q = (uchar *)p;
-    uchar *tail;
-    size_t total;       /* nbytes + 4*SST */
-    size_t original_nbytes;
-    int i;
-
-    if (p == NULL)
-        return _PyObject_DebugMallocApi(api, nbytes);
-
-    _PyObject_DebugCheckAddressApi(api, p);
-    bumpserialno();
-    original_nbytes = read_size_t(q - 2*SST);
-    total = nbytes + 4*SST;
-    if (total < nbytes)
-        /* overflow:  can't represent total as a size_t */
-        return NULL;
-
-    if (nbytes < original_nbytes) {
-        /* shrinking:  mark old extra memory dead */
-        memset(q + nbytes, DEADBYTE, original_nbytes - nbytes + 2*SST);
-    }
-
-    /* Resize and add decorations. We may get a new pointer here, in which
-     * case we didn't get the chance to mark the old memory with DEADBYTE,
-     * but we live with that.
-     */
-    q = (uchar *)PyObject_Realloc(q - 2*SST, total);
-    if (q == NULL)
-        return NULL;
-
-    write_size_t(q, nbytes);
-    assert(q[SST] == (uchar)api);
-    for (i = 1; i < SST; ++i)
-        assert(q[SST + i] == FORBIDDENBYTE);
-    q += 2*SST;
-    tail = q + nbytes;
-    memset(tail, FORBIDDENBYTE, SST);
-    write_size_t(tail + SST, serialno);
-
-    if (nbytes > original_nbytes) {
-        /* growing:  mark new extra memory clean */
-        memset(q + original_nbytes, CLEANBYTE,
-               nbytes - original_nbytes);
-    }
-
-    return q;
-}
-
-/* Check the forbidden bytes on both ends of the memory allocated for p.
- * If anything is wrong, print info to stderr via _PyObject_DebugDumpAddress,
- * and call Py_FatalError to kill the program.
- * The API id, is also checked.
- */
- void
-_PyObject_DebugCheckAddressApi(char api, const void *p)
-{
-    const uchar *q = (const uchar *)p;
-    char msgbuf[64];
-    char *msg;
-    size_t nbytes;
-    const uchar *tail;
-    int i;
-    char id;
-
-    if (p == NULL) {
-        msg = "didn't expect a NULL pointer";
-        goto error;
-    }
-
-    /* Check the API id */
-    id = (char)q[-SST];
-    if (id != api) {
-        msg = msgbuf;
-        snprintf(msg, sizeof(msgbuf), "bad ID: Allocated using API '%c', verified using API '%c'", id, api);
-        msgbuf[sizeof(msgbuf)-1] = 0;
-        goto error;
-    }
-
-    /* Check the stuff at the start of p first:  if there's underwrite
-     * corruption, the number-of-bytes field may be nuts, and checking
-     * the tail could lead to a segfault then.
-     */
-    for (i = SST-1; i >= 1; --i) {
-        if (*(q-i) != FORBIDDENBYTE) {
-            msg = "bad leading pad byte";
-            goto error;
-        }
-    }
-
-    nbytes = read_size_t(q - 2*SST);
-    tail = q + nbytes;
-    for (i = 0; i < SST; ++i) {
-        if (tail[i] != FORBIDDENBYTE) {
-            msg = "bad trailing pad byte";
-            goto error;
-        }
-    }
-
-    return;
-
-error:
-    _PyObject_DebugDumpAddress(p);
-    Py_FatalError(msg);
-}
-
-/* Display info to stderr about the memory block at p. */
-void
-_PyObject_DebugDumpAddress(const void *p)
-{
-    const uchar *q = (const uchar *)p;
-    const uchar *tail;
-    size_t nbytes, serial;
-    int i;
-    int ok;
-    char id;
-
-    fprintf(stderr, "Debug memory block at address p=%p:", p);
-    if (p == NULL) {
-        fprintf(stderr, "\n");
-        return;
-    }
-    id = (char)q[-SST];
-    fprintf(stderr, " API '%c'\n", id);
-
-    nbytes = read_size_t(q - 2*SST);
-    fprintf(stderr, "    %" PY_FORMAT_SIZE_T "u bytes originally "
-                    "requested\n", nbytes);
-
-    /* In case this is nuts, check the leading pad bytes first. */
-    fprintf(stderr, "    The %d pad bytes at p-%d are ", SST-1, SST-1);
-    ok = 1;
-    for (i = 1; i <= SST-1; ++i) {
-        if (*(q-i) != FORBIDDENBYTE) {
-            ok = 0;
-            break;
-        }
-    }
-    if (ok)
-        fputs("FORBIDDENBYTE, as expected.\n", stderr);
-    else {
-        fprintf(stderr, "not all FORBIDDENBYTE (0x%02x):\n",
-            FORBIDDENBYTE);
-        for (i = SST-1; i >= 1; --i) {
-            const uchar byte = *(q-i);
-            fprintf(stderr, "        at p-%d: 0x%02x", i, byte);
-            if (byte != FORBIDDENBYTE)
-                fputs(" *** OUCH", stderr);
-            fputc('\n', stderr);
-        }
-
-        fputs("    Because memory is corrupted at the start, the "
-              "count of bytes requested\n"
-              "       may be bogus, and checking the trailing pad "
-              "bytes may segfault.\n", stderr);
-    }
-
-    tail = q + nbytes;
-    fprintf(stderr, "    The %d pad bytes at tail=%p are ", SST, tail);
-    ok = 1;
-    for (i = 0; i < SST; ++i) {
-        if (tail[i] != FORBIDDENBYTE) {
-            ok = 0;
-            break;
-        }
-    }
-    if (ok)
-        fputs("FORBIDDENBYTE, as expected.\n", stderr);
-    else {
-        fprintf(stderr, "not all FORBIDDENBYTE (0x%02x):\n",
-                FORBIDDENBYTE);
-        for (i = 0; i < SST; ++i) {
-            const uchar byte = tail[i];
-            fprintf(stderr, "        at tail+%d: 0x%02x",
-                    i, byte);
-            if (byte != FORBIDDENBYTE)
-                fputs(" *** OUCH", stderr);
-            fputc('\n', stderr);
-        }
-    }
-
-    serial = read_size_t(tail + SST);
-    fprintf(stderr, "    The block was made by call #%" PY_FORMAT_SIZE_T
-                    "u to debug malloc/realloc.\n", serial);
-
-    if (nbytes > 0) {
-        i = 0;
-        fputs("    Data at p:", stderr);
-        /* print up to 8 bytes at the start */
-        while (q < tail && i < 8) {
-            fprintf(stderr, " %02x", *q);
-            ++i;
-            ++q;
-        }
-        /* and up to 8 at the end */
-        if (q < tail) {
-            if (tail - q > 8) {
-                fputs(" ...", stderr);
-                q = tail - 8;
-            }
-            while (q < tail) {
-                fprintf(stderr, " %02x", *q);
-                ++q;
-            }
-        }
-        fputc('\n', stderr);
-    }
-}
-
-static size_t
-printone(const char* msg, size_t value)
-{
-    int i, k;
-    char buf[100];
-    size_t origvalue = value;
-
-    fputs(msg, stderr);
-    for (i = (int)strlen(msg); i < 35; ++i)
-        fputc(' ', stderr);
-    fputc('=', stderr);
-
-    /* Write the value with commas. */
-    i = 22;
-    buf[i--] = '\0';
-    buf[i--] = '\n';
-    k = 3;
-    do {
-        size_t nextvalue = value / 10;
-        uint digit = (uint)(value - nextvalue * 10);
-        value = nextvalue;
-        buf[i--] = (char)(digit + '0');
-        --k;
-        if (k == 0 && value && i >= 0) {
-            k = 3;
-            buf[i--] = ',';
-        }
-    } while (value && i >= 0);
-
-    while (i >= 0)
-        buf[i--] = ' ';
-    fputs(buf, stderr);
-
-    return origvalue;
-}
-
-/* Print summary info to stderr about the state of pymalloc's structures.
- * In Py_DEBUG mode, also perform some expensive internal consistency
- * checks.
- */
-void
-_PyObject_DebugMallocStats(void)
-{
-    uint i;
-    const uint numclasses = SMALL_REQUEST_THRESHOLD >> ALIGNMENT_SHIFT;
-    /* # of pools, allocated blocks, and free blocks per class index */
-    size_t numpools[SMALL_REQUEST_THRESHOLD >> ALIGNMENT_SHIFT];
-    size_t numblocks[SMALL_REQUEST_THRESHOLD >> ALIGNMENT_SHIFT];
-    size_t numfreeblocks[SMALL_REQUEST_THRESHOLD >> ALIGNMENT_SHIFT];
-    /* total # of allocated bytes in used and full pools */
-    size_t allocated_bytes = 0;
-    /* total # of available bytes in used pools */
-    size_t available_bytes = 0;
-    /* # of free pools + pools not yet carved out of current arena */
-    uint numfreepools = 0;
-    /* # of bytes for arena alignment padding */
-    size_t arena_alignment = 0;
-    /* # of bytes in used and full pools used for pool_headers */
-    size_t pool_header_bytes = 0;
-    /* # of bytes in used and full pools wasted due to quantization,
-     * i.e. the necessarily leftover space at the ends of used and
-     * full pools.
-     */
-    size_t quantization = 0;
-    /* # of arenas actually allocated. */
-    size_t narenas = 0;
-    /* running total -- should equal narenas * ARENA_SIZE */
-    size_t total;
-    char buf[128];
-
-    fprintf(stderr, "Small block threshold = %d, in %u size classes.\n",
-            SMALL_REQUEST_THRESHOLD, numclasses);
-
-    for (i = 0; i < numclasses; ++i)
-        numpools[i] = numblocks[i] = numfreeblocks[i] = 0;
-
-    /* Because full pools aren't linked to from anything, it's easiest
-     * to march over all the arenas.  If we're lucky, most of the memory
-     * will be living in full pools -- would be a shame to miss them.
-     */
-    for (i = 0; i < maxarenas; ++i) {
-        uint j;
-        uptr base = arenas[i].address;
-
-        /* Skip arenas which are not allocated. */
-        if (arenas[i].address == (uptr)NULL)
-            continue;
-        narenas += 1;
-
-        numfreepools += arenas[i].nfreepools;
-
-        /* round up to pool alignment */
-        if (base & (uptr)POOL_SIZE_MASK) {
-            arena_alignment += POOL_SIZE;
-            base &= ~(uptr)POOL_SIZE_MASK;
-            base += POOL_SIZE;
-        }
-
-        /* visit every pool in the arena */
-        assert(base <= (uptr) arenas[i].pool_address);
-        for (j = 0;
-                    base < (uptr) arenas[i].pool_address;
-                    ++j, base += POOL_SIZE) {
-            poolp p = (poolp)base;
-            const uint sz = p->szidx;
-            uint freeblocks;
-
-            if (p->ref.count == 0) {
-                /* currently unused */
-                assert(pool_is_in_list(p, arenas[i].freepools));
-                continue;
-            }
-            ++numpools[sz];
-            numblocks[sz] += p->ref.count;
-            freeblocks = NUMBLOCKS(sz) - p->ref.count;
-            numfreeblocks[sz] += freeblocks;
-#ifdef Py_DEBUG
-            if (freeblocks > 0)
-                assert(pool_is_in_list(p, usedpools[sz + sz]));
-#endif
-        }
-    }
-    assert(narenas == narenas_currently_allocated);
-
-    fputc('\n', stderr);
-    fputs("class   size   num pools   blocks in use  avail blocks\n"
-          "-----   ----   ---------   -------------  ------------\n",
-          stderr);
-
-    for (i = 0; i < numclasses; ++i) {
-        size_t p = numpools[i];
-        size_t b = numblocks[i];
-        size_t f = numfreeblocks[i];
-        uint size = INDEX2SIZE(i);
-        if (p == 0) {
-            assert(b == 0 && f == 0);
-            continue;
-        }
-        fprintf(stderr, "%5u %6u "
-                        "%11" PY_FORMAT_SIZE_T "u "
-                        "%15" PY_FORMAT_SIZE_T "u "
-                        "%13" PY_FORMAT_SIZE_T "u\n",
-                i, size, p, b, f);
-        allocated_bytes += b * size;
-        available_bytes += f * size;
-        pool_header_bytes += p * POOL_OVERHEAD;
-        quantization += p * ((POOL_SIZE - POOL_OVERHEAD) % size);
-    }
-    fputc('\n', stderr);
-    (void)printone("# times object malloc called", serialno);
-
-    (void)printone("# arenas allocated total", ntimes_arena_allocated);
-    (void)printone("# arenas reclaimed", ntimes_arena_allocated - narenas);
-    (void)printone("# arenas highwater mark", narenas_highwater);
-    (void)printone("# arenas allocated current", narenas);
-
-    PyOS_snprintf(buf, sizeof(buf),
-        "%" PY_FORMAT_SIZE_T "u arenas * %d bytes/arena",
-        narenas, ARENA_SIZE);
-    (void)printone(buf, narenas * ARENA_SIZE);
-
-    fputc('\n', stderr);
-
-    total = printone("# bytes in allocated blocks", allocated_bytes);
-    total += printone("# bytes in available blocks", available_bytes);
-
-    PyOS_snprintf(buf, sizeof(buf),
-        "%u unused pools * %d bytes", numfreepools, POOL_SIZE);
-    total += printone(buf, (size_t)numfreepools * POOL_SIZE);
-
-    total += printone("# bytes lost to pool headers", pool_header_bytes);
-    total += printone("# bytes lost to quantization", quantization);
-    total += printone("# bytes lost to arena alignment", arena_alignment);
-    (void)printone("Total", total);
-}
-
-#endif  /* PYMALLOC_DEBUG */
-
-#ifdef Py_USING_MEMORY_DEBUGGER
-/* Make this function last so gcc won't inline it since the definition is
- * after the reference.
- */
-int
-Py_ADDRESS_IN_RANGE(void *P, poolp pool)
-{
-    uint arenaindex_temp = pool->arenaindex;
-
-    return arenaindex_temp < maxarenas &&
-           (uptr)P - arenas[arenaindex_temp].address < (uptr)ARENA_SIZE &&
-           arenas[arenaindex_temp].address != 0;
-}
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/rangeobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/rangeobject.c
deleted file mode 100644
index 13739e4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/rangeobject.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/* Range object implementation */
-
-#include "Python.h"
-
-typedef struct {
-    PyObject_HEAD
-    long        start;
-    long        step;
-    long        len;
-} rangeobject;
-
-/* Return number of items in range (lo, hi, step).  step != 0
- * required.  The result always fits in an unsigned long.
- */
-static unsigned long
-get_len_of_range(long lo, long hi, long step)
-{
-    /* -------------------------------------------------------------
-    If step > 0 and lo >= hi, or step < 0 and lo <= hi, the range is empty.
-    Else for step > 0, if n values are in the range, the last one is
-    lo + (n-1)*step, which must be <= hi-1.  Rearranging,
-    n <= (hi - lo - 1)/step + 1, so taking the floor of the RHS gives
-    the proper value.  Since lo < hi in this case, hi-lo-1 >= 0, so
-    the RHS is non-negative and so truncation is the same as the
-    floor.  Letting M be the largest positive long, the worst case
-    for the RHS numerator is hi=M, lo=-M-1, and then
-    hi-lo-1 = M-(-M-1)-1 = 2*M.  Therefore unsigned long has enough
-    precision to compute the RHS exactly.  The analysis for step < 0
-    is similar.
-    ---------------------------------------------------------------*/
-    assert(step != 0);
-    if (step > 0 && lo < hi)
-    return 1UL + (hi - 1UL - lo) / step;
-    else if (step < 0 && lo > hi)
-    return 1UL + (lo - 1UL - hi) / (0UL - step);
-    else
-    return 0UL;
-}
-
-static PyObject *
-range_new(PyTypeObject *type, PyObject *args, PyObject *kw)
-{
-    rangeobject *obj;
-    long ilow = 0, ihigh = 0, istep = 1;
-    unsigned long n;
-
-    if (!_PyArg_NoKeywords("xrange()", kw))
-        return NULL;
-
-    if (PyTuple_Size(args) <= 1) {
-        if (!PyArg_ParseTuple(args,
-                        "l;xrange() requires 1-3 int arguments",
-                        &ihigh))
-            return NULL;
-    }
-    else {
-        if (!PyArg_ParseTuple(args,
-                        "ll|l;xrange() requires 1-3 int arguments",
-                        &ilow, &ihigh, &istep))
-            return NULL;
-    }
-    if (istep == 0) {
-        PyErr_SetString(PyExc_ValueError, "xrange() arg 3 must not be zero");
-        return NULL;
-    }
-    n = get_len_of_range(ilow, ihigh, istep);
-    if (n > (unsigned long)LONG_MAX || (long)n > PY_SSIZE_T_MAX) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "xrange() result has too many items");
-        return NULL;
-    }
-
-    obj = PyObject_New(rangeobject, &PyRange_Type);
-    if (obj == NULL)
-        return NULL;
-    obj->start = ilow;
-    obj->len   = (long)n;
-    obj->step  = istep;
-    return (PyObject *) obj;
-}
-
-PyDoc_STRVAR(range_doc,
-"xrange([start,] stop[, step]) -> xrange object\n\
-\n\
-Like range(), but instead of returning a list, returns an object that\n\
-generates the numbers in the range on demand.  For looping, this is \n\
-slightly faster than range() and more memory efficient.");
-
-static PyObject *
-range_item(rangeobject *r, Py_ssize_t i)
-{
-    if (i < 0 || i >= r->len) {
-        PyErr_SetString(PyExc_IndexError,
-                        "xrange object index out of range");
-        return NULL;
-    }
-    /* do calculation entirely using unsigned longs, to avoid
-       undefined behaviour due to signed overflow. */
-    return PyInt_FromLong((long)(r->start + (unsigned long)i * r->step));
-}
-
-static Py_ssize_t
-range_length(rangeobject *r)
-{
-    return (Py_ssize_t)(r->len);
-}
-
-static PyObject *
-range_repr(rangeobject *r)
-{
-    PyObject *rtn;
-
-    if (r->start == 0 && r->step == 1)
-        rtn = PyString_FromFormat("xrange(%ld)",
-                                  r->start + r->len * r->step);
-
-    else if (r->step == 1)
-        rtn = PyString_FromFormat("xrange(%ld, %ld)",
-                                  r->start,
-                                  r->start + r->len * r->step);
-
-    else
-        rtn = PyString_FromFormat("xrange(%ld, %ld, %ld)",
-                                  r->start,
-                                  r->start + r->len * r->step,
-                                  r->step);
-    return rtn;
-}
-
-/* Pickling support */
-static PyObject *
-range_reduce(rangeobject *r, PyObject *args)
-{
-    return Py_BuildValue("(O(iii))", Py_TYPE(r),
-                         r->start,
-                         r->start + r->len * r->step,
-                         r->step);
-}
-
-static PySequenceMethods range_as_sequence = {
-    (lenfunc)range_length,      /* sq_length */
-    0,                          /* sq_concat */
-    0,                          /* sq_repeat */
-    (ssizeargfunc)range_item, /* sq_item */
-    0,                          /* sq_slice */
-};
-
-static PyObject * range_iter(PyObject *seq);
-static PyObject * range_reverse(PyObject *seq);
-
-PyDoc_STRVAR(reverse_doc,
-"Returns a reverse iterator.");
-
-static PyMethodDef range_methods[] = {
-    {"__reversed__",            (PyCFunction)range_reverse, METH_NOARGS, reverse_doc},
-    {"__reduce__",              (PyCFunction)range_reduce, METH_VARARGS},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyTypeObject PyRange_Type = {
-    PyObject_HEAD_INIT(&PyType_Type)
-    0,                          /* Number of items for varobject */
-    "xrange",                   /* Name of this type */
-    sizeof(rangeobject),        /* Basic object size */
-    0,                          /* Item size for varobject */
-    (destructor)PyObject_Del, /* tp_dealloc */
-    0,                          /* tp_print */
-    0,                          /* tp_getattr */
-    0,                          /* tp_setattr */
-    0,                          /* tp_compare */
-    (reprfunc)range_repr,       /* tp_repr */
-    0,                          /* tp_as_number */
-    &range_as_sequence,         /* tp_as_sequence */
-    0,                          /* tp_as_mapping */
-    0,                          /* tp_hash */
-    0,                          /* tp_call */
-    0,                          /* tp_str */
-    PyObject_GenericGetAttr,  /* tp_getattro */
-    0,                          /* tp_setattro */
-    0,                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,         /* tp_flags */
-    range_doc,                  /* tp_doc */
-    0,                          /* tp_traverse */
-    0,                          /* tp_clear */
-    0,                          /* tp_richcompare */
-    0,                          /* tp_weaklistoffset */
-    range_iter,                 /* tp_iter */
-    0,                          /* tp_iternext */
-    range_methods,              /* tp_methods */
-    0,                          /* tp_members */
-    0,                          /* tp_getset */
-    0,                          /* tp_base */
-    0,                          /* tp_dict */
-    0,                          /* tp_descr_get */
-    0,                          /* tp_descr_set */
-    0,                          /* tp_dictoffset */
-    0,                          /* tp_init */
-    0,                          /* tp_alloc */
-    range_new,                  /* tp_new */
-};
-
-/*********************** Xrange Iterator **************************/
-
-typedef struct {
-    PyObject_HEAD
-    long        index;
-    long        start;
-    long        step;
-    long        len;
-} rangeiterobject;
-
-static PyObject *
-rangeiter_next(rangeiterobject *r)
-{
-    if (r->index < r->len)
-        return PyInt_FromLong(r->start + (r->index++) * r->step);
-    return NULL;
-}
-
-static PyObject *
-rangeiter_len(rangeiterobject *r)
-{
-    return PyInt_FromLong(r->len - r->index);
-}
-
-PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
-
-static PyMethodDef rangeiter_methods[] = {
-    {"__length_hint__", (PyCFunction)rangeiter_len, METH_NOARGS, length_hint_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyTypeObject Pyrangeiter_Type = {
-    PyObject_HEAD_INIT(&PyType_Type)
-    0,                                      /* ob_size */
-    "rangeiterator",                        /* tp_name */
-    sizeof(rangeiterobject),                /* tp_basicsize */
-    0,                                      /* tp_itemsize */
-    /* methods */
-    (destructor)PyObject_Del,                   /* 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 */
-    PyObject_GenericGetAttr,                /* tp_getattro */
-    0,                                      /* tp_setattro */
-    0,                                      /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                         /* tp_flags */
-    0,                                      /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                      /* tp_clear */
-    0,                                      /* tp_richcompare */
-    0,                                      /* tp_weaklistoffset */
-    PyObject_SelfIter,                          /* tp_iter */
-    (iternextfunc)rangeiter_next,               /* tp_iternext */
-    rangeiter_methods,                          /* tp_methods */
-    0,
-};
-
-static PyObject *
-range_iter(PyObject *seq)
-{
-    rangeiterobject *it;
-
-    if (!PyRange_Check(seq)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    it = PyObject_New(rangeiterobject, &Pyrangeiter_Type);
-    if (it == NULL)
-        return NULL;
-    it->index = 0;
-    it->start = ((rangeobject *)seq)->start;
-    it->step = ((rangeobject *)seq)->step;
-    it->len = ((rangeobject *)seq)->len;
-    return (PyObject *)it;
-}
-
-static PyObject *
-range_reverse(PyObject *seq)
-{
-    rangeiterobject *it;
-    long start, step, len;
-
-    if (!PyRange_Check(seq)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    it = PyObject_New(rangeiterobject, &Pyrangeiter_Type);
-    if (it == NULL)
-        return NULL;
-
-    start = ((rangeobject *)seq)->start;
-    step = ((rangeobject *)seq)->step;
-    len = ((rangeobject *)seq)->len;
-
-    it->index = 0;
-    it->len = len;
-    /* the casts below guard against signed overflow by turning it
-       into unsigned overflow instead.  The correctness of this
-       code still depends on conversion from unsigned long to long
-       wrapping modulo ULONG_MAX+1, which isn't guaranteed (see
-       C99 6.3.1.3p3) but seems to hold in practice for all
-       platforms we're likely to meet.
-
-       If step == LONG_MIN then we still end up with LONG_MIN
-       after negation; but this works out, since we've still got
-       the correct value modulo ULONG_MAX+1, and the range_item
-       calculation is also done modulo ULONG_MAX+1.
-    */
-    it->start = (long)(start + (unsigned long)(len-1) * step);
-    it->step = (long)(0UL-step);
-
-    return (PyObject *)it;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/setobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/setobject.c
deleted file mode 100644
index 40a127c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/setobject.c
+++ /dev/null
@@ -1,2518 +0,0 @@
-
-/* set object implementation
-   Written and maintained by Raymond D. Hettinger <python@rcn.com>
-   Derived from Lib/sets.py and Objects/dictobject.c.
-
-   Copyright (c) 2003-2007 Python Software Foundation.
-   All rights reserved.
-*/
-
-#include "Python.h"
-#include "structmember.h"
-
-/* Set a key error with the specified argument, wrapping it in a
- * tuple automatically so that tuple keys are not unpacked as the
- * exception arguments. */
-static void
-set_key_error(PyObject *arg)
-{
-    PyObject *tup;
-    tup = PyTuple_Pack(1, arg);
-    if (!tup)
-        return; /* caller will expect error to be set anyway */
-    PyErr_SetObject(PyExc_KeyError, tup);
-    Py_DECREF(tup);
-}
-
-/* This must be >= 1. */
-#define PERTURB_SHIFT 5
-
-/* Object used as dummy key to fill deleted entries */
-static PyObject *dummy = NULL; /* Initialized by first call to make_new_set() */
-
-#ifdef Py_REF_DEBUG
-PyObject *
-_PySet_Dummy(void)
-{
-    return dummy;
-}
-#endif
-
-#define INIT_NONZERO_SET_SLOTS(so) do {                         \
-    (so)->table = (so)->smalltable;                             \
-    (so)->mask = PySet_MINSIZE - 1;                             \
-    (so)->hash = -1;                                            \
-    } while(0)
-
-#define EMPTY_TO_MINSIZE(so) do {                               \
-    memset((so)->smalltable, 0, sizeof((so)->smalltable));      \
-    (so)->used = (so)->fill = 0;                                \
-    INIT_NONZERO_SET_SLOTS(so);                                 \
-    } while(0)
-
-/* Reuse scheme to save calls to malloc, free, and memset */
-#ifndef PySet_MAXFREELIST
-#define PySet_MAXFREELIST 80
-#endif
-static PySetObject *free_list[PySet_MAXFREELIST];
-static int numfree = 0;
-
-/*
-The basic lookup function used by all operations.
-This is based on Algorithm D from Knuth Vol. 3, Sec. 6.4.
-Open addressing is preferred over chaining since the link overhead for
-chaining would be substantial (100% with typical malloc overhead).
-
-The initial probe index is computed as hash mod the table size. Subsequent
-probe indices are computed as explained in Objects/dictobject.c.
-
-All arithmetic on hash should ignore overflow.
-
-Unlike the dictionary implementation, the lookkey functions can return
-NULL if the rich comparison returns an error.
-*/
-
-static setentry *
-set_lookkey(PySetObject *so, PyObject *key, register long hash)
-{
-    register Py_ssize_t i;
-    register size_t perturb;
-    register setentry *freeslot;
-    register size_t mask = so->mask;
-    setentry *table = so->table;
-    register setentry *entry;
-    register int cmp;
-    PyObject *startkey;
-
-    i = hash & mask;
-    entry = &table[i];
-    if (entry->key == NULL || entry->key == key)
-        return entry;
-
-    if (entry->key == dummy)
-        freeslot = entry;
-    else {
-        if (entry->hash == hash) {
-            startkey = entry->key;
-            Py_INCREF(startkey);
-            cmp = PyObject_RichCompareBool(startkey, key, Py_EQ);
-            Py_DECREF(startkey);
-            if (cmp < 0)
-                return NULL;
-            if (table == so->table && entry->key == startkey) {
-                if (cmp > 0)
-                    return entry;
-            }
-            else {
-                /* The compare did major nasty stuff to the
-                 * set:  start over.
-                 */
-                return set_lookkey(so, key, hash);
-            }
-        }
-        freeslot = NULL;
-    }
-
-    /* In the loop, key == dummy is by far (factor of 100s) the
-       least likely outcome, so test for that last. */
-    for (perturb = hash; ; perturb >>= PERTURB_SHIFT) {
-        i = (i << 2) + i + perturb + 1;
-        entry = &table[i & mask];
-        if (entry->key == NULL) {
-            if (freeslot != NULL)
-                entry = freeslot;
-            break;
-        }
-        if (entry->key == key)
-            break;
-        if (entry->hash == hash && entry->key != dummy) {
-            startkey = entry->key;
-            Py_INCREF(startkey);
-            cmp = PyObject_RichCompareBool(startkey, key, Py_EQ);
-            Py_DECREF(startkey);
-            if (cmp < 0)
-                return NULL;
-            if (table == so->table && entry->key == startkey) {
-                if (cmp > 0)
-                    break;
-            }
-            else {
-                /* The compare did major nasty stuff to the
-                 * set:  start over.
-                 */
-                return set_lookkey(so, key, hash);
-            }
-        }
-        else if (entry->key == dummy && freeslot == NULL)
-            freeslot = entry;
-    }
-    return entry;
-}
-
-/*
- * Hacked up version of set_lookkey which can assume keys are always strings;
- * This means we can always use _PyString_Eq directly and not have to check to
- * see if the comparison altered the table.
- */
-static setentry *
-set_lookkey_string(PySetObject *so, PyObject *key, register long hash)
-{
-    register Py_ssize_t i;
-    register size_t perturb;
-    register setentry *freeslot;
-    register size_t mask = so->mask;
-    setentry *table = so->table;
-    register setentry *entry;
-
-    /* Make sure this function doesn't have to handle non-string keys,
-       including subclasses of str; e.g., one reason to subclass
-       strings is to override __eq__, and for speed we don't cater to
-       that here. */
-    if (!PyString_CheckExact(key)) {
-        so->lookup = set_lookkey;
-        return set_lookkey(so, key, hash);
-    }
-    i = hash & mask;
-    entry = &table[i];
-    if (entry->key == NULL || entry->key == key)
-        return entry;
-    if (entry->key == dummy)
-        freeslot = entry;
-    else {
-        if (entry->hash == hash && _PyString_Eq(entry->key, key))
-            return entry;
-        freeslot = NULL;
-    }
-
-    /* In the loop, key == dummy is by far (factor of 100s) the
-       least likely outcome, so test for that last. */
-    for (perturb = hash; ; perturb >>= PERTURB_SHIFT) {
-        i = (i << 2) + i + perturb + 1;
-        entry = &table[i & mask];
-        if (entry->key == NULL)
-            return freeslot == NULL ? entry : freeslot;
-        if (entry->key == key
-            || (entry->hash == hash
-            && entry->key != dummy
-            && _PyString_Eq(entry->key, key)))
-            return entry;
-        if (entry->key == dummy && freeslot == NULL)
-            freeslot = entry;
-    }
-    assert(0);          /* NOT REACHED */
-    return 0;
-}
-
-/*
-Internal routine to insert a new key into the table.
-Used by the public insert routine.
-Eats a reference to key.
-*/
-static int
-set_insert_key(register PySetObject *so, PyObject *key, long hash)
-{
-    register setentry *entry;
-    typedef setentry *(*lookupfunc)(PySetObject *, PyObject *, long);
-
-    assert(so->lookup != NULL);
-    entry = so->lookup(so, key, hash);
-    if (entry == NULL)
-        return -1;
-    if (entry->key == NULL) {
-        /* UNUSED */
-        so->fill++;
-        entry->key = key;
-        entry->hash = hash;
-        so->used++;
-    } else if (entry->key == dummy) {
-        /* DUMMY */
-        entry->key = key;
-        entry->hash = hash;
-        so->used++;
-        Py_DECREF(dummy);
-    } else {
-        /* ACTIVE */
-        Py_DECREF(key);
-    }
-    return 0;
-}
-
-/*
-Internal routine used by set_table_resize() to insert an item which is
-known to be absent from the set.  This routine also assumes that
-the set contains no deleted entries.  Besides the performance benefit,
-using set_insert_clean() in set_table_resize() is dangerous (SF bug #1456209).
-Note that no refcounts are changed by this routine; if needed, the caller
-is responsible for incref'ing `key`.
-*/
-static void
-set_insert_clean(register PySetObject *so, PyObject *key, long hash)
-{
-    register size_t i;
-    register size_t perturb;
-    register size_t mask = (size_t)so->mask;
-    setentry *table = so->table;
-    register setentry *entry;
-
-    i = hash & mask;
-    entry = &table[i];
-    for (perturb = hash; entry->key != NULL; perturb >>= PERTURB_SHIFT) {
-        i = (i << 2) + i + perturb + 1;
-        entry = &table[i & mask];
-    }
-    so->fill++;
-    entry->key = key;
-    entry->hash = hash;
-    so->used++;
-}
-
-/*
-Restructure the table by allocating a new table and reinserting all
-keys again.  When entries have been deleted, the new table may
-actually be smaller than the old one.
-*/
-static int
-set_table_resize(PySetObject *so, Py_ssize_t minused)
-{
-    Py_ssize_t newsize;
-    setentry *oldtable, *newtable, *entry;
-    Py_ssize_t i;
-    int is_oldtable_malloced;
-    setentry small_copy[PySet_MINSIZE];
-
-    assert(minused >= 0);
-
-    /* Find the smallest table size > minused. */
-    for (newsize = PySet_MINSIZE;
-         newsize <= minused && newsize > 0;
-         newsize <<= 1)
-        ;
-    if (newsize <= 0) {
-        PyErr_NoMemory();
-        return -1;
-    }
-
-    /* Get space for a new table. */
-    oldtable = so->table;
-    assert(oldtable != NULL);
-    is_oldtable_malloced = oldtable != so->smalltable;
-
-    if (newsize == PySet_MINSIZE) {
-        /* A large table is shrinking, or we can't get any smaller. */
-        newtable = so->smalltable;
-        if (newtable == oldtable) {
-            if (so->fill == so->used) {
-                /* No dummies, so no point doing anything. */
-                return 0;
-            }
-            /* We're not going to resize it, but rebuild the
-               table anyway to purge old dummy entries.
-               Subtle:  This is *necessary* if fill==size,
-               as set_lookkey needs at least one virgin slot to
-               terminate failing searches.  If fill < size, it's
-               merely desirable, as dummies slow searches. */
-            assert(so->fill > so->used);
-            memcpy(small_copy, oldtable, sizeof(small_copy));
-            oldtable = small_copy;
-        }
-    }
-    else {
-        newtable = PyMem_NEW(setentry, newsize);
-        if (newtable == NULL) {
-            PyErr_NoMemory();
-            return -1;
-        }
-    }
-
-    /* Make the set empty, using the new table. */
-    assert(newtable != oldtable);
-    so->table = newtable;
-    so->mask = newsize - 1;
-    memset(newtable, 0, sizeof(setentry) * newsize);
-    so->used = 0;
-    i = so->fill;
-    so->fill = 0;
-
-    /* Copy the data over; this is refcount-neutral for active entries;
-       dummy entries aren't copied over, of course */
-    for (entry = oldtable; i > 0; entry++) {
-        if (entry->key == NULL) {
-            /* UNUSED */
-            ;
-        } else if (entry->key == dummy) {
-            /* DUMMY */
-            --i;
-            assert(entry->key == dummy);
-            Py_DECREF(entry->key);
-        } else {
-            /* ACTIVE */
-            --i;
-            set_insert_clean(so, entry->key, entry->hash);
-        }
-    }
-
-    if (is_oldtable_malloced)
-        PyMem_DEL(oldtable);
-    return 0;
-}
-
-/* CAUTION: set_add_key/entry() must guarantee it won't resize the table */
-
-static int
-set_add_entry(register PySetObject *so, setentry *entry)
-{
-    register Py_ssize_t n_used;
-    PyObject *key = entry->key;
-    long hash = entry->hash;
-
-    assert(so->fill <= so->mask);  /* at least one empty slot */
-    n_used = so->used;
-    Py_INCREF(key);
-    if (set_insert_key(so, key, hash) == -1) {
-        Py_DECREF(key);
-        return -1;
-    }
-    if (!(so->used > n_used && so->fill*3 >= (so->mask+1)*2))
-        return 0;
-    return set_table_resize(so, so->used>50000 ? so->used*2 : so->used*4);
-}
-
-static int
-set_add_key(register PySetObject *so, PyObject *key)
-{
-    register long hash;
-    register Py_ssize_t n_used;
-
-    if (!PyString_CheckExact(key) ||
-        (hash = ((PyStringObject *) key)->ob_shash) == -1) {
-        hash = PyObject_Hash(key);
-        if (hash == -1)
-            return -1;
-    }
-    assert(so->fill <= so->mask);  /* at least one empty slot */
-    n_used = so->used;
-    Py_INCREF(key);
-    if (set_insert_key(so, key, hash) == -1) {
-        Py_DECREF(key);
-        return -1;
-    }
-    if (!(so->used > n_used && so->fill*3 >= (so->mask+1)*2))
-        return 0;
-    return set_table_resize(so, so->used>50000 ? so->used*2 : so->used*4);
-}
-
-#define DISCARD_NOTFOUND 0
-#define DISCARD_FOUND 1
-
-static int
-set_discard_entry(PySetObject *so, setentry *oldentry)
-{       register setentry *entry;
-    PyObject *old_key;
-
-    entry = (so->lookup)(so, oldentry->key, oldentry->hash);
-    if (entry == NULL)
-        return -1;
-    if (entry->key == NULL  ||  entry->key == dummy)
-        return DISCARD_NOTFOUND;
-    old_key = entry->key;
-    Py_INCREF(dummy);
-    entry->key = dummy;
-    so->used--;
-    Py_DECREF(old_key);
-    return DISCARD_FOUND;
-}
-
-static int
-set_discard_key(PySetObject *so, PyObject *key)
-{
-    register long hash;
-    register setentry *entry;
-    PyObject *old_key;
-
-    assert (PyAnySet_Check(so));
-    if (!PyString_CheckExact(key) ||
-        (hash = ((PyStringObject *) key)->ob_shash) == -1) {
-        hash = PyObject_Hash(key);
-        if (hash == -1)
-            return -1;
-    }
-    entry = (so->lookup)(so, key, hash);
-    if (entry == NULL)
-        return -1;
-    if (entry->key == NULL  ||  entry->key == dummy)
-        return DISCARD_NOTFOUND;
-    old_key = entry->key;
-    Py_INCREF(dummy);
-    entry->key = dummy;
-    so->used--;
-    Py_DECREF(old_key);
-    return DISCARD_FOUND;
-}
-
-static int
-set_clear_internal(PySetObject *so)
-{
-    setentry *entry, *table;
-    int table_is_malloced;
-    Py_ssize_t fill;
-    setentry small_copy[PySet_MINSIZE];
-#ifdef Py_DEBUG
-    Py_ssize_t i, n;
-    assert (PyAnySet_Check(so));
-
-    n = so->mask + 1;
-    i = 0;
-#endif
-
-    table = so->table;
-    assert(table != NULL);
-    table_is_malloced = table != so->smalltable;
-
-    /* This is delicate.  During the process of clearing the set,
-     * decrefs can cause the set to mutate.  To avoid fatal confusion
-     * (voice of experience), we have to make the set empty before
-     * clearing the slots, and never refer to anything via so->ref while
-     * clearing.
-     */
-    fill = so->fill;
-    if (table_is_malloced)
-        EMPTY_TO_MINSIZE(so);
-
-    else if (fill > 0) {
-        /* It's a small table with something that needs to be cleared.
-         * Afraid the only safe way is to copy the set entries into
-         * another small table first.
-         */
-        memcpy(small_copy, table, sizeof(small_copy));
-        table = small_copy;
-        EMPTY_TO_MINSIZE(so);
-    }
-    /* else it's a small table that's already empty */
-
-    /* Now we can finally clear things.  If C had refcounts, we could
-     * assert that the refcount on table is 1 now, i.e. that this function
-     * has unique access to it, so decref side-effects can't alter it.
-     */
-    for (entry = table; fill > 0; ++entry) {
-#ifdef Py_DEBUG
-        assert(i < n);
-        ++i;
-#endif
-        if (entry->key) {
-            --fill;
-            Py_DECREF(entry->key);
-        }
-#ifdef Py_DEBUG
-        else
-            assert(entry->key == NULL);
-#endif
-    }
-
-    if (table_is_malloced)
-        PyMem_DEL(table);
-    return 0;
-}
-
-/*
- * Iterate over a set table.  Use like so:
- *
- *     Py_ssize_t pos;
- *     setentry *entry;
- *     pos = 0;   # important!  pos should not otherwise be changed by you
- *     while (set_next(yourset, &pos, &entry)) {
- *              Refer to borrowed reference in entry->key.
- *     }
- *
- * CAUTION:  In general, it isn't safe to use set_next in a loop that
- * mutates the table.
- */
-static int
-set_next(PySetObject *so, Py_ssize_t *pos_ptr, setentry **entry_ptr)
-{
-    Py_ssize_t i;
-    Py_ssize_t mask;
-    register setentry *table;
-
-    assert (PyAnySet_Check(so));
-    i = *pos_ptr;
-    assert(i >= 0);
-    table = so->table;
-    mask = so->mask;
-    while (i <= mask && (table[i].key == NULL || table[i].key == dummy))
-        i++;
-    *pos_ptr = i+1;
-    if (i > mask)
-        return 0;
-    assert(table[i].key != NULL);
-    *entry_ptr = &table[i];
-    return 1;
-}
-
-static void
-set_dealloc(PySetObject *so)
-{
-    register setentry *entry;
-    Py_ssize_t fill = so->fill;
-    PyObject_GC_UnTrack(so);
-    Py_TRASHCAN_SAFE_BEGIN(so)
-    if (so->weakreflist != NULL)
-        PyObject_ClearWeakRefs((PyObject *) so);
-
-    for (entry = so->table; fill > 0; entry++) {
-        if (entry->key) {
-            --fill;
-            Py_DECREF(entry->key);
-        }
-    }
-    if (so->table != so->smalltable)
-        PyMem_DEL(so->table);
-    if (numfree < PySet_MAXFREELIST && PyAnySet_CheckExact(so))
-        free_list[numfree++] = so;
-    else
-        Py_TYPE(so)->tp_free(so);
-    Py_TRASHCAN_SAFE_END(so)
-}
-
-static int
-set_tp_print(PySetObject *so, FILE *fp, int flags)
-{
-    setentry *entry;
-    Py_ssize_t pos=0;
-    char *emit = "";            /* No separator emitted on first pass */
-    char *separator = ", ";
-    int status = Py_ReprEnter((PyObject*)so);
-
-    if (status != 0) {
-        if (status < 0)
-            return status;
-        Py_BEGIN_ALLOW_THREADS
-        fprintf(fp, "%s(...)", so->ob_type->tp_name);
-        Py_END_ALLOW_THREADS
-        return 0;
-    }
-
-    Py_BEGIN_ALLOW_THREADS
-    fprintf(fp, "%s([", so->ob_type->tp_name);
-    Py_END_ALLOW_THREADS
-    while (set_next(so, &pos, &entry)) {
-        Py_BEGIN_ALLOW_THREADS
-        fputs(emit, fp);
-        Py_END_ALLOW_THREADS
-        emit = separator;
-        if (PyObject_Print(entry->key, fp, 0) != 0) {
-            Py_ReprLeave((PyObject*)so);
-            return -1;
-        }
-    }
-    Py_BEGIN_ALLOW_THREADS
-    fputs("])", fp);
-    Py_END_ALLOW_THREADS
-    Py_ReprLeave((PyObject*)so);
-    return 0;
-}
-
-static PyObject *
-set_repr(PySetObject *so)
-{
-    PyObject *keys, *result=NULL, *listrepr;
-    int status = Py_ReprEnter((PyObject*)so);
-
-    if (status != 0) {
-        if (status < 0)
-            return NULL;
-        return PyString_FromFormat("%s(...)", so->ob_type->tp_name);
-    }
-
-    keys = PySequence_List((PyObject *)so);
-    if (keys == NULL)
-        goto done;
-    listrepr = PyObject_Repr(keys);
-    Py_DECREF(keys);
-    if (listrepr == NULL)
-        goto done;
-
-    result = PyString_FromFormat("%s(%s)", so->ob_type->tp_name,
-        PyString_AS_STRING(listrepr));
-    Py_DECREF(listrepr);
-done:
-    Py_ReprLeave((PyObject*)so);
-    return result;
-}
-
-static Py_ssize_t
-set_len(PyObject *so)
-{
-    return ((PySetObject *)so)->used;
-}
-
-static int
-set_merge(PySetObject *so, PyObject *otherset)
-{
-    PySetObject *other;
-    PyObject *key;
-    long hash;
-    register Py_ssize_t i;
-    register setentry *entry;
-
-    assert (PyAnySet_Check(so));
-    assert (PyAnySet_Check(otherset));
-
-    other = (PySetObject*)otherset;
-    if (other == so || other->used == 0)
-        /* a.update(a) or a.update({}); nothing to do */
-        return 0;
-    /* Do one big resize at the start, rather than
-     * incrementally resizing as we insert new keys.  Expect
-     * that there will be no (or few) overlapping keys.
-     */
-    if ((so->fill + other->used)*3 >= (so->mask+1)*2) {
-       if (set_table_resize(so, (so->used + other->used)*2) != 0)
-           return -1;
-    }
-    for (i = 0; i <= other->mask; i++) {
-        entry = &other->table[i];
-        key = entry->key;
-        hash = entry->hash;
-        if (key != NULL &&
-            key != dummy) {
-            Py_INCREF(key);
-            if (set_insert_key(so, key, hash) == -1) {
-                Py_DECREF(key);
-                return -1;
-            }
-        }
-    }
-    return 0;
-}
-
-static int
-set_contains_key(PySetObject *so, PyObject *key)
-{
-    long hash;
-    setentry *entry;
-
-    if (!PyString_CheckExact(key) ||
-        (hash = ((PyStringObject *) key)->ob_shash) == -1) {
-        hash = PyObject_Hash(key);
-        if (hash == -1)
-            return -1;
-    }
-    entry = (so->lookup)(so, key, hash);
-    if (entry == NULL)
-        return -1;
-    key = entry->key;
-    return key != NULL && key != dummy;
-}
-
-static int
-set_contains_entry(PySetObject *so, setentry *entry)
-{
-    PyObject *key;
-    setentry *lu_entry;
-
-    lu_entry = (so->lookup)(so, entry->key, entry->hash);
-    if (lu_entry == NULL)
-        return -1;
-    key = lu_entry->key;
-    return key != NULL && key != dummy;
-}
-
-static PyObject *
-set_pop(PySetObject *so)
-{
-    register Py_ssize_t i = 0;
-    register setentry *entry;
-    PyObject *key;
-
-    assert (PyAnySet_Check(so));
-    if (so->used == 0) {
-        PyErr_SetString(PyExc_KeyError, "pop from an empty set");
-        return NULL;
-    }
-
-    /* Set entry to "the first" unused or dummy set entry.  We abuse
-     * the hash field of slot 0 to hold a search finger:
-     * If slot 0 has a value, use slot 0.
-     * Else slot 0 is being used to hold a search finger,
-     * and we use its hash value as the first index to look.
-     */
-    entry = &so->table[0];
-    if (entry->key == NULL || entry->key == dummy) {
-        i = entry->hash;
-        /* The hash field may be a real hash value, or it may be a
-         * legit search finger, or it may be a once-legit search
-         * finger that's out of bounds now because it wrapped around
-         * or the table shrunk -- simply make sure it's in bounds now.
-         */
-        if (i > so->mask || i < 1)
-            i = 1;              /* skip slot 0 */
-        while ((entry = &so->table[i])->key == NULL || entry->key==dummy) {
-            i++;
-            if (i > so->mask)
-                i = 1;
-        }
-    }
-    key = entry->key;
-    Py_INCREF(dummy);
-    entry->key = dummy;
-    so->used--;
-    so->table[0].hash = i + 1;  /* next place to start */
-    return key;
-}
-
-PyDoc_STRVAR(pop_doc, "Remove and return an arbitrary set element.\n\
-Raises KeyError if the set is empty.");
-
-static int
-set_traverse(PySetObject *so, visitproc visit, void *arg)
-{
-    Py_ssize_t pos = 0;
-    setentry *entry;
-
-    while (set_next(so, &pos, &entry))
-        Py_VISIT(entry->key);
-    return 0;
-}
-
-static long
-frozenset_hash(PyObject *self)
-{
-    PySetObject *so = (PySetObject *)self;
-    long h, hash = 1927868237L;
-    setentry *entry;
-    Py_ssize_t pos = 0;
-
-    if (so->hash != -1)
-        return so->hash;
-
-    hash *= PySet_GET_SIZE(self) + 1;
-    while (set_next(so, &pos, &entry)) {
-        /* Work to increase the bit dispersion for closely spaced hash
-           values.  The is important because some use cases have many
-           combinations of a small number of elements with nearby
-           hashes so that many distinct combinations collapse to only
-           a handful of distinct hash values. */
-        h = entry->hash;
-        hash ^= (h ^ (h << 16) ^ 89869747L)  * 3644798167u;
-    }
-    hash = hash * 69069L + 907133923L;
-    if (hash == -1)
-        hash = 590923713L;
-    so->hash = hash;
-    return hash;
-}
-
-/***** Set iterator type ***********************************************/
-
-typedef struct {
-    PyObject_HEAD
-    PySetObject *si_set; /* Set to NULL when iterator is exhausted */
-    Py_ssize_t si_used;
-    Py_ssize_t si_pos;
-    Py_ssize_t len;
-} setiterobject;
-
-static void
-setiter_dealloc(setiterobject *si)
-{
-    Py_XDECREF(si->si_set);
-    PyObject_GC_Del(si);
-}
-
-static int
-setiter_traverse(setiterobject *si, visitproc visit, void *arg)
-{
-    Py_VISIT(si->si_set);
-    return 0;
-}
-
-static PyObject *
-setiter_len(setiterobject *si)
-{
-    Py_ssize_t len = 0;
-    if (si->si_set != NULL && si->si_used == si->si_set->used)
-        len = si->len;
-    return PyInt_FromLong(len);
-}
-
-PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
-
-static PyMethodDef setiter_methods[] = {
-    {"__length_hint__", (PyCFunction)setiter_len, METH_NOARGS, length_hint_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyObject *setiter_iternext(setiterobject *si)
-{
-    PyObject *key;
-    register Py_ssize_t i, mask;
-    register setentry *entry;
-    PySetObject *so = si->si_set;
-
-    if (so == NULL)
-        return NULL;
-    assert (PyAnySet_Check(so));
-
-    if (si->si_used != so->used) {
-        PyErr_SetString(PyExc_RuntimeError,
-                        "Set changed size during iteration");
-        si->si_used = -1; /* Make this state sticky */
-        return NULL;
-    }
-
-    i = si->si_pos;
-    assert(i>=0);
-    entry = so->table;
-    mask = so->mask;
-    while (i <= mask && (entry[i].key == NULL || entry[i].key == dummy))
-        i++;
-    si->si_pos = i+1;
-    if (i > mask)
-        goto fail;
-    si->len--;
-    key = entry[i].key;
-    Py_INCREF(key);
-    return key;
-
-fail:
-    Py_DECREF(so);
-    si->si_set = NULL;
-    return NULL;
-}
-
-static PyTypeObject PySetIter_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "setiterator",                              /* tp_name */
-    sizeof(setiterobject),                      /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)setiter_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)setiter_traverse,             /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    PyObject_SelfIter,                          /* tp_iter */
-    (iternextfunc)setiter_iternext,             /* tp_iternext */
-    setiter_methods,                            /* tp_methods */
-    0,
-};
-
-static PyObject *
-set_iter(PySetObject *so)
-{
-    setiterobject *si = PyObject_GC_New(setiterobject, &PySetIter_Type);
-    if (si == NULL)
-        return NULL;
-    Py_INCREF(so);
-    si->si_set = so;
-    si->si_used = so->used;
-    si->si_pos = 0;
-    si->len = so->used;
-    _PyObject_GC_TRACK(si);
-    return (PyObject *)si;
-}
-
-static int
-set_update_internal(PySetObject *so, PyObject *other)
-{
-    PyObject *key, *it;
-
-    if (PyAnySet_Check(other))
-        return set_merge(so, other);
-
-    if (PyDict_CheckExact(other)) {
-        PyObject *value;
-        Py_ssize_t pos = 0;
-        long hash;
-        Py_ssize_t dictsize = PyDict_Size(other);
-
-        /* Do one big resize at the start, rather than
-        * incrementally resizing as we insert new keys.  Expect
-        * that there will be no (or few) overlapping keys.
-        */
-        if (dictsize == -1)
-            return -1;
-        if ((so->fill + dictsize)*3 >= (so->mask+1)*2) {
-            if (set_table_resize(so, (so->used + dictsize)*2) != 0)
-                return -1;
-        }
-        while (_PyDict_Next(other, &pos, &key, &value, &hash)) {
-            setentry an_entry;
-
-            an_entry.hash = hash;
-            an_entry.key = key;
-            if (set_add_entry(so, &an_entry) == -1)
-                return -1;
-        }
-        return 0;
-    }
-
-    it = PyObject_GetIter(other);
-    if (it == NULL)
-        return -1;
-
-    while ((key = PyIter_Next(it)) != NULL) {
-        if (set_add_key(so, key) == -1) {
-            Py_DECREF(it);
-            Py_DECREF(key);
-            return -1;
-        }
-        Py_DECREF(key);
-    }
-    Py_DECREF(it);
-    if (PyErr_Occurred())
-        return -1;
-    return 0;
-}
-
-static PyObject *
-set_update(PySetObject *so, PyObject *args)
-{
-    Py_ssize_t i;
-
-    for (i=0 ; i<PyTuple_GET_SIZE(args) ; i++) {
-        PyObject *other = PyTuple_GET_ITEM(args, i);
-        if (set_update_internal(so, other) == -1)
-            return NULL;
-    }
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(update_doc,
-"Update a set with the union of itself and others.");
-
-static PyObject *
-make_new_set(PyTypeObject *type, PyObject *iterable)
-{
-    register PySetObject *so = NULL;
-
-    if (dummy == NULL) { /* Auto-initialize dummy */
-        dummy = PyString_FromString("<dummy key>");
-        if (dummy == NULL)
-            return NULL;
-    }
-
-    /* create PySetObject structure */
-    if (numfree &&
-        (type == &PySet_Type  ||  type == &PyFrozenSet_Type)) {
-        so = free_list[--numfree];
-        assert (so != NULL && PyAnySet_CheckExact(so));
-        Py_TYPE(so) = type;
-        _Py_NewReference((PyObject *)so);
-        EMPTY_TO_MINSIZE(so);
-        PyObject_GC_Track(so);
-    } else {
-        so = (PySetObject *)type->tp_alloc(type, 0);
-        if (so == NULL)
-            return NULL;
-        /* tp_alloc has already zeroed the structure */
-        assert(so->table == NULL && so->fill == 0 && so->used == 0);
-        INIT_NONZERO_SET_SLOTS(so);
-    }
-
-    so->lookup = set_lookkey_string;
-    so->weakreflist = NULL;
-
-    if (iterable != NULL) {
-        if (set_update_internal(so, iterable) == -1) {
-            Py_DECREF(so);
-            return NULL;
-        }
-    }
-
-    return (PyObject *)so;
-}
-
-/* The empty frozenset is a singleton */
-static PyObject *emptyfrozenset = NULL;
-
-static PyObject *
-frozenset_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *iterable = NULL, *result;
-
-    if (type == &PyFrozenSet_Type && !_PyArg_NoKeywords("frozenset()", kwds))
-        return NULL;
-
-    if (!PyArg_UnpackTuple(args, type->tp_name, 0, 1, &iterable))
-        return NULL;
-
-    if (type != &PyFrozenSet_Type)
-        return make_new_set(type, iterable);
-
-    if (iterable != NULL) {
-        /* frozenset(f) is idempotent */
-        if (PyFrozenSet_CheckExact(iterable)) {
-            Py_INCREF(iterable);
-            return iterable;
-        }
-        result = make_new_set(type, iterable);
-        if (result == NULL || PySet_GET_SIZE(result))
-            return result;
-        Py_DECREF(result);
-    }
-    /* The empty frozenset is a singleton */
-    if (emptyfrozenset == NULL)
-        emptyfrozenset = make_new_set(type, NULL);
-    Py_XINCREF(emptyfrozenset);
-    return emptyfrozenset;
-}
-
-void
-PySet_Fini(void)
-{
-    PySetObject *so;
-
-    while (numfree) {
-        numfree--;
-        so = free_list[numfree];
-        PyObject_GC_Del(so);
-    }
-    Py_CLEAR(dummy);
-    Py_CLEAR(emptyfrozenset);
-}
-
-static PyObject *
-set_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    if (type == &PySet_Type && !_PyArg_NoKeywords("set()", kwds))
-        return NULL;
-
-    return make_new_set(type, NULL);
-}
-
-/* set_swap_bodies() switches the contents of any two sets by moving their
-   internal data pointers and, if needed, copying the internal smalltables.
-   Semantically equivalent to:
-
-     t=set(a); a.clear(); a.update(b); b.clear(); b.update(t); del t
-
-   The function always succeeds and it leaves both objects in a stable state.
-   Useful for creating temporary frozensets from sets for membership testing
-   in __contains__(), discard(), and remove().  Also useful for operations
-   that update in-place (by allowing an intermediate result to be swapped
-   into one of the original inputs).
-*/
-
-static void
-set_swap_bodies(PySetObject *a, PySetObject *b)
-{
-    Py_ssize_t t;
-    setentry *u;
-    setentry *(*f)(PySetObject *so, PyObject *key, long hash);
-    setentry tab[PySet_MINSIZE];
-    long h;
-
-    t = a->fill;     a->fill   = b->fill;        b->fill  = t;
-    t = a->used;     a->used   = b->used;        b->used  = t;
-    t = a->mask;     a->mask   = b->mask;        b->mask  = t;
-
-    u = a->table;
-    if (a->table == a->smalltable)
-        u = b->smalltable;
-    a->table  = b->table;
-    if (b->table == b->smalltable)
-        a->table = a->smalltable;
-    b->table = u;
-
-    f = a->lookup;   a->lookup = b->lookup;      b->lookup = f;
-
-    if (a->table == a->smalltable || b->table == b->smalltable) {
-        memcpy(tab, a->smalltable, sizeof(tab));
-        memcpy(a->smalltable, b->smalltable, sizeof(tab));
-        memcpy(b->smalltable, tab, sizeof(tab));
-    }
-
-    if (PyType_IsSubtype(Py_TYPE(a), &PyFrozenSet_Type)  &&
-        PyType_IsSubtype(Py_TYPE(b), &PyFrozenSet_Type)) {
-        h = a->hash;     a->hash = b->hash;  b->hash = h;
-    } else {
-        a->hash = -1;
-        b->hash = -1;
-    }
-}
-
-static PyObject *
-set_copy(PySetObject *so)
-{
-    return make_new_set(Py_TYPE(so), (PyObject *)so);
-}
-
-static PyObject *
-frozenset_copy(PySetObject *so)
-{
-    if (PyFrozenSet_CheckExact(so)) {
-        Py_INCREF(so);
-        return (PyObject *)so;
-    }
-    return set_copy(so);
-}
-
-PyDoc_STRVAR(copy_doc, "Return a shallow copy of a set.");
-
-static PyObject *
-set_clear(PySetObject *so)
-{
-    set_clear_internal(so);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(clear_doc, "Remove all elements from this set.");
-
-static PyObject *
-set_union(PySetObject *so, PyObject *args)
-{
-    PySetObject *result;
-    PyObject *other;
-    Py_ssize_t i;
-
-    result = (PySetObject *)set_copy(so);
-    if (result == NULL)
-        return NULL;
-
-    for (i=0 ; i<PyTuple_GET_SIZE(args) ; i++) {
-        other = PyTuple_GET_ITEM(args, i);
-        if ((PyObject *)so == other)
-            continue;
-        if (set_update_internal(result, other) == -1) {
-            Py_DECREF(result);
-            return NULL;
-        }
-    }
-    return (PyObject *)result;
-}
-
-PyDoc_STRVAR(union_doc,
- "Return the union of sets as a new set.\n\
-\n\
-(i.e. all elements that are in either set.)");
-
-static PyObject *
-set_or(PySetObject *so, PyObject *other)
-{
-    PySetObject *result;
-
-    if (!PyAnySet_Check(so) || !PyAnySet_Check(other)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-
-    result = (PySetObject *)set_copy(so);
-    if (result == NULL)
-        return NULL;
-    if ((PyObject *)so == other)
-        return (PyObject *)result;
-    if (set_update_internal(result, other) == -1) {
-        Py_DECREF(result);
-        return NULL;
-    }
-    return (PyObject *)result;
-}
-
-static PyObject *
-set_ior(PySetObject *so, PyObject *other)
-{
-    if (!PyAnySet_Check(other)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    if (set_update_internal(so, other) == -1)
-        return NULL;
-    Py_INCREF(so);
-    return (PyObject *)so;
-}
-
-static PyObject *
-set_intersection(PySetObject *so, PyObject *other)
-{
-    PySetObject *result;
-    PyObject *key, *it, *tmp;
-
-    if ((PyObject *)so == other)
-        return set_copy(so);
-
-    result = (PySetObject *)make_new_set(Py_TYPE(so), NULL);
-    if (result == NULL)
-        return NULL;
-
-    if (PyAnySet_Check(other)) {
-        Py_ssize_t pos = 0;
-        setentry *entry;
-
-        if (PySet_GET_SIZE(other) > PySet_GET_SIZE(so)) {
-            tmp = (PyObject *)so;
-            so = (PySetObject *)other;
-            other = tmp;
-        }
-
-        while (set_next((PySetObject *)other, &pos, &entry)) {
-            int rv = set_contains_entry(so, entry);
-            if (rv == -1) {
-                Py_DECREF(result);
-                return NULL;
-            }
-            if (rv) {
-                if (set_add_entry(result, entry) == -1) {
-                    Py_DECREF(result);
-                    return NULL;
-                }
-            }
-        }
-        return (PyObject *)result;
-    }
-
-    it = PyObject_GetIter(other);
-    if (it == NULL) {
-        Py_DECREF(result);
-        return NULL;
-    }
-
-    while ((key = PyIter_Next(it)) != NULL) {
-        int rv;
-        setentry entry;
-        long hash = PyObject_Hash(key);
-
-        if (hash == -1) {
-            Py_DECREF(it);
-            Py_DECREF(result);
-            Py_DECREF(key);
-            return NULL;
-        }
-        entry.hash = hash;
-        entry.key = key;
-        rv = set_contains_entry(so, &entry);
-        if (rv == -1) {
-            Py_DECREF(it);
-            Py_DECREF(result);
-            Py_DECREF(key);
-            return NULL;
-        }
-        if (rv) {
-            if (set_add_entry(result, &entry) == -1) {
-                Py_DECREF(it);
-                Py_DECREF(result);
-                Py_DECREF(key);
-                return NULL;
-            }
-        }
-        Py_DECREF(key);
-    }
-    Py_DECREF(it);
-    if (PyErr_Occurred()) {
-        Py_DECREF(result);
-        return NULL;
-    }
-    return (PyObject *)result;
-}
-
-static PyObject *
-set_intersection_multi(PySetObject *so, PyObject *args)
-{
-    Py_ssize_t i;
-    PyObject *result = (PyObject *)so;
-
-    if (PyTuple_GET_SIZE(args) == 0)
-        return set_copy(so);
-
-    Py_INCREF(so);
-    for (i=0 ; i<PyTuple_GET_SIZE(args) ; i++) {
-        PyObject *other = PyTuple_GET_ITEM(args, i);
-        PyObject *newresult = set_intersection((PySetObject *)result, other);
-        if (newresult == NULL) {
-            Py_DECREF(result);
-            return NULL;
-        }
-        Py_DECREF(result);
-        result = newresult;
-    }
-    return result;
-}
-
-PyDoc_STRVAR(intersection_doc,
-"Return the intersection of two or more sets as a new set.\n\
-\n\
-(i.e. elements that are common to all of the sets.)");
-
-static PyObject *
-set_intersection_update(PySetObject *so, PyObject *other)
-{
-    PyObject *tmp;
-
-    tmp = set_intersection(so, other);
-    if (tmp == NULL)
-        return NULL;
-    set_swap_bodies(so, (PySetObject *)tmp);
-    Py_DECREF(tmp);
-    Py_RETURN_NONE;
-}
-
-static PyObject *
-set_intersection_update_multi(PySetObject *so, PyObject *args)
-{
-    PyObject *tmp;
-
-    tmp = set_intersection_multi(so, args);
-    if (tmp == NULL)
-        return NULL;
-    set_swap_bodies(so, (PySetObject *)tmp);
-    Py_DECREF(tmp);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(intersection_update_doc,
-"Update a set with the intersection of itself and another.");
-
-static PyObject *
-set_and(PySetObject *so, PyObject *other)
-{
-    if (!PyAnySet_Check(so) || !PyAnySet_Check(other)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    return set_intersection(so, other);
-}
-
-static PyObject *
-set_iand(PySetObject *so, PyObject *other)
-{
-    PyObject *result;
-
-    if (!PyAnySet_Check(other)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    result = set_intersection_update(so, other);
-    if (result == NULL)
-        return NULL;
-    Py_DECREF(result);
-    Py_INCREF(so);
-    return (PyObject *)so;
-}
-
-static PyObject *
-set_isdisjoint(PySetObject *so, PyObject *other)
-{
-    PyObject *key, *it, *tmp;
-
-    if ((PyObject *)so == other) {
-        if (PySet_GET_SIZE(so) == 0)
-            Py_RETURN_TRUE;
-        else
-            Py_RETURN_FALSE;
-    }
-
-    if (PyAnySet_CheckExact(other)) {
-        Py_ssize_t pos = 0;
-        setentry *entry;
-
-        if (PySet_GET_SIZE(other) > PySet_GET_SIZE(so)) {
-            tmp = (PyObject *)so;
-            so = (PySetObject *)other;
-            other = tmp;
-        }
-        while (set_next((PySetObject *)other, &pos, &entry)) {
-            int rv = set_contains_entry(so, entry);
-            if (rv == -1)
-                return NULL;
-            if (rv)
-                Py_RETURN_FALSE;
-        }
-        Py_RETURN_TRUE;
-    }
-
-    it = PyObject_GetIter(other);
-    if (it == NULL)
-        return NULL;
-
-    while ((key = PyIter_Next(it)) != NULL) {
-        int rv;
-        setentry entry;
-        long hash = PyObject_Hash(key);
-
-        if (hash == -1) {
-            Py_DECREF(key);
-            Py_DECREF(it);
-            return NULL;
-        }
-        entry.hash = hash;
-        entry.key = key;
-        rv = set_contains_entry(so, &entry);
-        Py_DECREF(key);
-        if (rv == -1) {
-            Py_DECREF(it);
-            return NULL;
-        }
-        if (rv) {
-            Py_DECREF(it);
-            Py_RETURN_FALSE;
-        }
-    }
-    Py_DECREF(it);
-    if (PyErr_Occurred())
-        return NULL;
-    Py_RETURN_TRUE;
-}
-
-PyDoc_STRVAR(isdisjoint_doc,
-"Return True if two sets have a null intersection.");
-
-static int
-set_difference_update_internal(PySetObject *so, PyObject *other)
-{
-    if ((PyObject *)so == other)
-        return set_clear_internal(so);
-
-    if (PyAnySet_Check(other)) {
-        setentry *entry;
-        Py_ssize_t pos = 0;
-
-        while (set_next((PySetObject *)other, &pos, &entry))
-            if (set_discard_entry(so, entry) == -1)
-                return -1;
-    } else {
-        PyObject *key, *it;
-        it = PyObject_GetIter(other);
-        if (it == NULL)
-            return -1;
-
-        while ((key = PyIter_Next(it)) != NULL) {
-            if (set_discard_key(so, key) == -1) {
-                Py_DECREF(it);
-                Py_DECREF(key);
-                return -1;
-            }
-            Py_DECREF(key);
-        }
-        Py_DECREF(it);
-        if (PyErr_Occurred())
-            return -1;
-    }
-    /* If more than 1/5 are dummies, then resize them away. */
-    if ((so->fill - so->used) * 5 < so->mask)
-        return 0;
-    return set_table_resize(so, so->used>50000 ? so->used*2 : so->used*4);
-}
-
-static PyObject *
-set_difference_update(PySetObject *so, PyObject *args)
-{
-    Py_ssize_t i;
-
-    for (i=0 ; i<PyTuple_GET_SIZE(args) ; i++) {
-        PyObject *other = PyTuple_GET_ITEM(args, i);
-        if (set_difference_update_internal(so, other) == -1)
-            return NULL;
-    }
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(difference_update_doc,
-"Remove all elements of another set from this set.");
-
-static PyObject *
-set_difference(PySetObject *so, PyObject *other)
-{
-    PyObject *result;
-    setentry *entry;
-    Py_ssize_t pos = 0;
-
-    if (!PyAnySet_Check(other)  && !PyDict_CheckExact(other)) {
-        result = set_copy(so);
-        if (result == NULL)
-            return NULL;
-        if (set_difference_update_internal((PySetObject *)result, other) != -1)
-            return result;
-        Py_DECREF(result);
-        return NULL;
-    }
-
-    result = make_new_set(Py_TYPE(so), NULL);
-    if (result == NULL)
-        return NULL;
-
-    if (PyDict_CheckExact(other)) {
-        while (set_next(so, &pos, &entry)) {
-            setentry entrycopy;
-            entrycopy.hash = entry->hash;
-            entrycopy.key = entry->key;
-            if (!_PyDict_Contains(other, entry->key, entry->hash)) {
-                if (set_add_entry((PySetObject *)result, &entrycopy) == -1) {
-                    Py_DECREF(result);
-                    return NULL;
-                }
-            }
-        }
-        return result;
-    }
-
-    while (set_next(so, &pos, &entry)) {
-        int rv = set_contains_entry((PySetObject *)other, entry);
-        if (rv == -1) {
-            Py_DECREF(result);
-            return NULL;
-        }
-        if (!rv) {
-            if (set_add_entry((PySetObject *)result, entry) == -1) {
-                Py_DECREF(result);
-                return NULL;
-            }
-        }
-    }
-    return result;
-}
-
-static PyObject *
-set_difference_multi(PySetObject *so, PyObject *args)
-{
-    Py_ssize_t i;
-    PyObject *result, *other;
-
-    if (PyTuple_GET_SIZE(args) == 0)
-        return set_copy(so);
-
-    other = PyTuple_GET_ITEM(args, 0);
-    result = set_difference(so, other);
-    if (result == NULL)
-        return NULL;
-
-    for (i=1 ; i<PyTuple_GET_SIZE(args) ; i++) {
-        other = PyTuple_GET_ITEM(args, i);
-        if (set_difference_update_internal((PySetObject *)result, other) == -1) {
-            Py_DECREF(result);
-            return NULL;
-        }
-    }
-    return result;
-}
-
-PyDoc_STRVAR(difference_doc,
-"Return the difference of two or more sets as a new set.\n\
-\n\
-(i.e. all elements that are in this set but not the others.)");
-static PyObject *
-set_sub(PySetObject *so, PyObject *other)
-{
-    if (!PyAnySet_Check(so) || !PyAnySet_Check(other)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    return set_difference(so, other);
-}
-
-static PyObject *
-set_isub(PySetObject *so, PyObject *other)
-{
-    if (!PyAnySet_Check(other)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    if (set_difference_update_internal(so, other) == -1)
-        return NULL;
-    Py_INCREF(so);
-    return (PyObject *)so;
-}
-
-static PyObject *
-set_symmetric_difference_update(PySetObject *so, PyObject *other)
-{
-    PySetObject *otherset;
-    PyObject *key;
-    Py_ssize_t pos = 0;
-    setentry *entry;
-
-    if ((PyObject *)so == other)
-        return set_clear(so);
-
-    if (PyDict_CheckExact(other)) {
-        PyObject *value;
-        int rv;
-        long hash;
-        while (_PyDict_Next(other, &pos, &key, &value, &hash)) {
-            setentry an_entry;
-
-            Py_INCREF(key);
-            an_entry.hash = hash;
-            an_entry.key = key;
-
-            rv = set_discard_entry(so, &an_entry);
-            if (rv == -1) {
-                Py_DECREF(key);
-                return NULL;
-            }
-            if (rv == DISCARD_NOTFOUND) {
-                if (set_add_entry(so, &an_entry) == -1) {
-                    Py_DECREF(key);
-                    return NULL;
-                }
-            }
-            Py_DECREF(key);
-        }
-        Py_RETURN_NONE;
-    }
-
-    if (PyAnySet_Check(other)) {
-        Py_INCREF(other);
-        otherset = (PySetObject *)other;
-    } else {
-        otherset = (PySetObject *)make_new_set(Py_TYPE(so), other);
-        if (otherset == NULL)
-            return NULL;
-    }
-
-    while (set_next(otherset, &pos, &entry)) {
-        int rv = set_discard_entry(so, entry);
-        if (rv == -1) {
-            Py_DECREF(otherset);
-            return NULL;
-        }
-        if (rv == DISCARD_NOTFOUND) {
-            if (set_add_entry(so, entry) == -1) {
-                Py_DECREF(otherset);
-                return NULL;
-            }
-        }
-    }
-    Py_DECREF(otherset);
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(symmetric_difference_update_doc,
-"Update a set with the symmetric difference of itself and another.");
-
-static PyObject *
-set_symmetric_difference(PySetObject *so, PyObject *other)
-{
-    PyObject *rv;
-    PySetObject *otherset;
-
-    otherset = (PySetObject *)make_new_set(Py_TYPE(so), other);
-    if (otherset == NULL)
-        return NULL;
-    rv = set_symmetric_difference_update(otherset, (PyObject *)so);
-    if (rv == NULL)
-        return NULL;
-    Py_DECREF(rv);
-    return (PyObject *)otherset;
-}
-
-PyDoc_STRVAR(symmetric_difference_doc,
-"Return the symmetric difference of two sets as a new set.\n\
-\n\
-(i.e. all elements that are in exactly one of the sets.)");
-
-static PyObject *
-set_xor(PySetObject *so, PyObject *other)
-{
-    if (!PyAnySet_Check(so) || !PyAnySet_Check(other)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    return set_symmetric_difference(so, other);
-}
-
-static PyObject *
-set_ixor(PySetObject *so, PyObject *other)
-{
-    PyObject *result;
-
-    if (!PyAnySet_Check(other)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    result = set_symmetric_difference_update(so, other);
-    if (result == NULL)
-        return NULL;
-    Py_DECREF(result);
-    Py_INCREF(so);
-    return (PyObject *)so;
-}
-
-static PyObject *
-set_issubset(PySetObject *so, PyObject *other)
-{
-    setentry *entry;
-    Py_ssize_t pos = 0;
-
-    if (!PyAnySet_Check(other)) {
-        PyObject *tmp, *result;
-        tmp = make_new_set(&PySet_Type, other);
-        if (tmp == NULL)
-            return NULL;
-        result = set_issubset(so, tmp);
-        Py_DECREF(tmp);
-        return result;
-    }
-    if (PySet_GET_SIZE(so) > PySet_GET_SIZE(other))
-        Py_RETURN_FALSE;
-
-    while (set_next(so, &pos, &entry)) {
-        int rv = set_contains_entry((PySetObject *)other, entry);
-        if (rv == -1)
-            return NULL;
-        if (!rv)
-            Py_RETURN_FALSE;
-    }
-    Py_RETURN_TRUE;
-}
-
-PyDoc_STRVAR(issubset_doc, "Report whether another set contains this set.");
-
-static PyObject *
-set_issuperset(PySetObject *so, PyObject *other)
-{
-    PyObject *tmp, *result;
-
-    if (!PyAnySet_Check(other)) {
-        tmp = make_new_set(&PySet_Type, other);
-        if (tmp == NULL)
-            return NULL;
-        result = set_issuperset(so, tmp);
-        Py_DECREF(tmp);
-        return result;
-    }
-    return set_issubset((PySetObject *)other, (PyObject *)so);
-}
-
-PyDoc_STRVAR(issuperset_doc, "Report whether this set contains another set.");
-
-static PyObject *
-set_richcompare(PySetObject *v, PyObject *w, int op)
-{
-    PyObject *r1, *r2;
-
-    if(!PyAnySet_Check(w)) {
-        if (op == Py_EQ)
-            Py_RETURN_FALSE;
-        if (op == Py_NE)
-            Py_RETURN_TRUE;
-        PyErr_SetString(PyExc_TypeError, "can only compare to a set");
-        return NULL;
-    }
-    switch (op) {
-    case Py_EQ:
-        if (PySet_GET_SIZE(v) != PySet_GET_SIZE(w))
-            Py_RETURN_FALSE;
-        if (v->hash != -1  &&
-            ((PySetObject *)w)->hash != -1 &&
-            v->hash != ((PySetObject *)w)->hash)
-            Py_RETURN_FALSE;
-        return set_issubset(v, w);
-    case Py_NE:
-        r1 = set_richcompare(v, w, Py_EQ);
-        if (r1 == NULL)
-            return NULL;
-        r2 = PyBool_FromLong(PyObject_Not(r1));
-        Py_DECREF(r1);
-        return r2;
-    case Py_LE:
-        return set_issubset(v, w);
-    case Py_GE:
-        return set_issuperset(v, w);
-    case Py_LT:
-        if (PySet_GET_SIZE(v) >= PySet_GET_SIZE(w))
-            Py_RETURN_FALSE;
-        return set_issubset(v, w);
-    case Py_GT:
-        if (PySet_GET_SIZE(v) <= PySet_GET_SIZE(w))
-            Py_RETURN_FALSE;
-        return set_issuperset(v, w);
-    }
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-}
-
-static int
-set_nocmp(PyObject *self, PyObject *other)
-{
-    PyErr_SetString(PyExc_TypeError, "cannot compare sets using cmp()");
-    return -1;
-}
-
-static PyObject *
-set_add(PySetObject *so, PyObject *key)
-{
-    if (set_add_key(so, key) == -1)
-        return NULL;
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(add_doc,
-"Add an element to a set.\n\
-\n\
-This has no effect if the element is already present.");
-
-static int
-set_contains(PySetObject *so, PyObject *key)
-{
-    PyObject *tmpkey;
-    int rv;
-
-    rv = set_contains_key(so, key);
-    if (rv == -1) {
-        if (!PySet_Check(key) || !PyErr_ExceptionMatches(PyExc_TypeError))
-            return -1;
-        PyErr_Clear();
-        tmpkey = make_new_set(&PyFrozenSet_Type, key);
-        if (tmpkey == NULL)
-            return -1;
-        rv = set_contains(so, tmpkey);
-        Py_DECREF(tmpkey);
-    }
-    return rv;
-}
-
-static PyObject *
-set_direct_contains(PySetObject *so, PyObject *key)
-{
-    long result;
-
-    result = set_contains(so, key);
-    if (result == -1)
-        return NULL;
-    return PyBool_FromLong(result);
-}
-
-PyDoc_STRVAR(contains_doc, "x.__contains__(y) <==> y in x.");
-
-static PyObject *
-set_remove(PySetObject *so, PyObject *key)
-{
-    PyObject *tmpkey;
-    int rv;
-
-    rv = set_discard_key(so, key);
-    if (rv == -1) {
-        if (!PySet_Check(key) || !PyErr_ExceptionMatches(PyExc_TypeError))
-            return NULL;
-        PyErr_Clear();
-        tmpkey = make_new_set(&PyFrozenSet_Type, key);
-        if (tmpkey == NULL)
-            return NULL;
-        rv = set_discard_key(so, tmpkey);
-        Py_DECREF(tmpkey);
-        if (rv == -1)
-            return NULL;
-    }
-
-    if (rv == DISCARD_NOTFOUND) {
-        set_key_error(key);
-        return NULL;
-    }
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(remove_doc,
-"Remove an element from a set; it must be a member.\n\
-\n\
-If the element is not a member, raise a KeyError.");
-
-static PyObject *
-set_discard(PySetObject *so, PyObject *key)
-{
-    PyObject *tmpkey, *result;
-    int rv;
-
-    rv = set_discard_key(so, key);
-    if (rv == -1) {
-        if (!PySet_Check(key) || !PyErr_ExceptionMatches(PyExc_TypeError))
-            return NULL;
-        PyErr_Clear();
-        tmpkey = make_new_set(&PyFrozenSet_Type, key);
-        if (tmpkey == NULL)
-            return NULL;
-        result = set_discard(so, tmpkey);
-        Py_DECREF(tmpkey);
-        return result;
-    }
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(discard_doc,
-"Remove an element from a set if it is a member.\n\
-\n\
-If the element is not a member, do nothing.");
-
-static PyObject *
-set_reduce(PySetObject *so)
-{
-    PyObject *keys=NULL, *args=NULL, *result=NULL, *dict=NULL;
-
-    keys = PySequence_List((PyObject *)so);
-    if (keys == NULL)
-        goto done;
-    args = PyTuple_Pack(1, keys);
-    if (args == NULL)
-        goto done;
-    dict = PyObject_GetAttrString((PyObject *)so, "__dict__");
-    if (dict == NULL) {
-        PyErr_Clear();
-        dict = Py_None;
-        Py_INCREF(dict);
-    }
-    result = PyTuple_Pack(3, Py_TYPE(so), args, dict);
-done:
-    Py_XDECREF(args);
-    Py_XDECREF(keys);
-    Py_XDECREF(dict);
-    return result;
-}
-
-PyDoc_STRVAR(reduce_doc, "Return state information for pickling.");
-
-static PyObject *
-set_sizeof(PySetObject *so)
-{
-    Py_ssize_t res;
-
-    res = sizeof(PySetObject);
-    if (so->table != so->smalltable)
-        res = res + (so->mask + 1) * sizeof(setentry);
-    return PyInt_FromSsize_t(res);
-}
-
-PyDoc_STRVAR(sizeof_doc, "S.__sizeof__() -> size of S in memory, in bytes");
-static int
-set_init(PySetObject *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *iterable = NULL;
-
-    if (!PyAnySet_Check(self))
-        return -1;
-    if (PySet_Check(self) && !_PyArg_NoKeywords("set()", kwds))
-        return -1;
-    if (!PyArg_UnpackTuple(args, Py_TYPE(self)->tp_name, 0, 1, &iterable))
-        return -1;
-    set_clear_internal(self);
-    self->hash = -1;
-    if (iterable == NULL)
-        return 0;
-    return set_update_internal(self, iterable);
-}
-
-static PySequenceMethods set_as_sequence = {
-    set_len,                            /* sq_length */
-    0,                                  /* sq_concat */
-    0,                                  /* sq_repeat */
-    0,                                  /* sq_item */
-    0,                                  /* sq_slice */
-    0,                                  /* sq_ass_item */
-    0,                                  /* sq_ass_slice */
-    (objobjproc)set_contains,           /* sq_contains */
-};
-
-/* set object ********************************************************/
-
-#ifdef Py_DEBUG
-static PyObject *test_c_api(PySetObject *so);
-
-PyDoc_STRVAR(test_c_api_doc, "Exercises C API.  Returns True.\n\
-All is well if assertions don't fail.");
-#endif
-
-static PyMethodDef set_methods[] = {
-    {"add",             (PyCFunction)set_add,           METH_O,
-     add_doc},
-    {"clear",           (PyCFunction)set_clear,         METH_NOARGS,
-     clear_doc},
-    {"__contains__",(PyCFunction)set_direct_contains,           METH_O | METH_COEXIST,
-     contains_doc},
-    {"copy",            (PyCFunction)set_copy,          METH_NOARGS,
-     copy_doc},
-    {"discard",         (PyCFunction)set_discard,       METH_O,
-     discard_doc},
-    {"difference",      (PyCFunction)set_difference_multi,      METH_VARARGS,
-     difference_doc},
-    {"difference_update",       (PyCFunction)set_difference_update,     METH_VARARGS,
-     difference_update_doc},
-    {"intersection",(PyCFunction)set_intersection_multi,        METH_VARARGS,
-     intersection_doc},
-    {"intersection_update",(PyCFunction)set_intersection_update_multi,          METH_VARARGS,
-     intersection_update_doc},
-    {"isdisjoint",      (PyCFunction)set_isdisjoint,    METH_O,
-     isdisjoint_doc},
-    {"issubset",        (PyCFunction)set_issubset,      METH_O,
-     issubset_doc},
-    {"issuperset",      (PyCFunction)set_issuperset,    METH_O,
-     issuperset_doc},
-    {"pop",             (PyCFunction)set_pop,           METH_NOARGS,
-     pop_doc},
-    {"__reduce__",      (PyCFunction)set_reduce,        METH_NOARGS,
-     reduce_doc},
-    {"remove",          (PyCFunction)set_remove,        METH_O,
-     remove_doc},
-    {"__sizeof__",      (PyCFunction)set_sizeof,        METH_NOARGS,
-     sizeof_doc},
-    {"symmetric_difference",(PyCFunction)set_symmetric_difference,      METH_O,
-     symmetric_difference_doc},
-    {"symmetric_difference_update",(PyCFunction)set_symmetric_difference_update,        METH_O,
-     symmetric_difference_update_doc},
-#ifdef Py_DEBUG
-    {"test_c_api",      (PyCFunction)test_c_api,        METH_NOARGS,
-     test_c_api_doc},
-#endif
-    {"union",           (PyCFunction)set_union,         METH_VARARGS,
-     union_doc},
-    {"update",          (PyCFunction)set_update,        METH_VARARGS,
-     update_doc},
-    {NULL,              NULL}   /* sentinel */
-};
-
-static PyNumberMethods set_as_number = {
-    0,                                  /*nb_add*/
-    (binaryfunc)set_sub,                /*nb_subtract*/
-    0,                                  /*nb_multiply*/
-    0,                                  /*nb_divide*/
-    0,                                  /*nb_remainder*/
-    0,                                  /*nb_divmod*/
-    0,                                  /*nb_power*/
-    0,                                  /*nb_negative*/
-    0,                                  /*nb_positive*/
-    0,                                  /*nb_absolute*/
-    0,                                  /*nb_nonzero*/
-    0,                                  /*nb_invert*/
-    0,                                  /*nb_lshift*/
-    0,                                  /*nb_rshift*/
-    (binaryfunc)set_and,                /*nb_and*/
-    (binaryfunc)set_xor,                /*nb_xor*/
-    (binaryfunc)set_or,                 /*nb_or*/
-    0,                                  /*nb_coerce*/
-    0,                                  /*nb_int*/
-    0,                                  /*nb_long*/
-    0,                                  /*nb_float*/
-    0,                                  /*nb_oct*/
-    0,                                  /*nb_hex*/
-    0,                                  /*nb_inplace_add*/
-    (binaryfunc)set_isub,               /*nb_inplace_subtract*/
-    0,                                  /*nb_inplace_multiply*/
-    0,                                  /*nb_inplace_divide*/
-    0,                                  /*nb_inplace_remainder*/
-    0,                                  /*nb_inplace_power*/
-    0,                                  /*nb_inplace_lshift*/
-    0,                                  /*nb_inplace_rshift*/
-    (binaryfunc)set_iand,               /*nb_inplace_and*/
-    (binaryfunc)set_ixor,               /*nb_inplace_xor*/
-    (binaryfunc)set_ior,                /*nb_inplace_or*/
-};
-
-PyDoc_STRVAR(set_doc,
-"set() -> new empty set object\n\
-set(iterable) -> new set object\n\
-\n\
-Build an unordered collection of unique elements.");
-
-PyTypeObject PySet_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "set",                              /* tp_name */
-    sizeof(PySetObject),                /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)set_dealloc,            /* tp_dealloc */
-    (printfunc)set_tp_print,            /* tp_print */
-    0,                                  /* tp_getattr */
-    0,                                  /* tp_setattr */
-    set_nocmp,                          /* tp_compare */
-    (reprfunc)set_repr,                 /* tp_repr */
-    &set_as_number,                     /* tp_as_number */
-    &set_as_sequence,                   /* tp_as_sequence */
-    0,                                  /* tp_as_mapping */
-    (hashfunc)PyObject_HashNotImplemented,      /* tp_hash */
-    0,                                  /* tp_call */
-    0,                                  /* tp_str */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_CHECKTYPES |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    set_doc,                            /* tp_doc */
-    (traverseproc)set_traverse,         /* tp_traverse */
-    (inquiry)set_clear_internal,        /* tp_clear */
-    (richcmpfunc)set_richcompare,       /* tp_richcompare */
-    offsetof(PySetObject, weakreflist),         /* tp_weaklistoffset */
-    (getiterfunc)set_iter,      /* tp_iter */
-    0,                                  /* tp_iternext */
-    set_methods,                        /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    (initproc)set_init,                 /* tp_init */
-    PyType_GenericAlloc,                /* tp_alloc */
-    set_new,                            /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-/* frozenset object ********************************************************/
-
-
-static PyMethodDef frozenset_methods[] = {
-    {"__contains__",(PyCFunction)set_direct_contains,           METH_O | METH_COEXIST,
-     contains_doc},
-    {"copy",            (PyCFunction)frozenset_copy,    METH_NOARGS,
-     copy_doc},
-    {"difference",      (PyCFunction)set_difference_multi,      METH_VARARGS,
-     difference_doc},
-    {"intersection",(PyCFunction)set_intersection_multi,        METH_VARARGS,
-     intersection_doc},
-    {"isdisjoint",      (PyCFunction)set_isdisjoint,    METH_O,
-     isdisjoint_doc},
-    {"issubset",        (PyCFunction)set_issubset,      METH_O,
-     issubset_doc},
-    {"issuperset",      (PyCFunction)set_issuperset,    METH_O,
-     issuperset_doc},
-    {"__reduce__",      (PyCFunction)set_reduce,        METH_NOARGS,
-     reduce_doc},
-    {"__sizeof__",      (PyCFunction)set_sizeof,        METH_NOARGS,
-     sizeof_doc},
-    {"symmetric_difference",(PyCFunction)set_symmetric_difference,      METH_O,
-     symmetric_difference_doc},
-    {"union",           (PyCFunction)set_union,         METH_VARARGS,
-     union_doc},
-    {NULL,              NULL}   /* sentinel */
-};
-
-static PyNumberMethods frozenset_as_number = {
-    0,                                  /*nb_add*/
-    (binaryfunc)set_sub,                /*nb_subtract*/
-    0,                                  /*nb_multiply*/
-    0,                                  /*nb_divide*/
-    0,                                  /*nb_remainder*/
-    0,                                  /*nb_divmod*/
-    0,                                  /*nb_power*/
-    0,                                  /*nb_negative*/
-    0,                                  /*nb_positive*/
-    0,                                  /*nb_absolute*/
-    0,                                  /*nb_nonzero*/
-    0,                                  /*nb_invert*/
-    0,                                  /*nb_lshift*/
-    0,                                  /*nb_rshift*/
-    (binaryfunc)set_and,                /*nb_and*/
-    (binaryfunc)set_xor,                /*nb_xor*/
-    (binaryfunc)set_or,                 /*nb_or*/
-};
-
-PyDoc_STRVAR(frozenset_doc,
-"frozenset() -> empty frozenset object\n\
-frozenset(iterable) -> frozenset object\n\
-\n\
-Build an immutable unordered collection of unique elements.");
-
-PyTypeObject PyFrozenSet_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "frozenset",                        /* tp_name */
-    sizeof(PySetObject),                /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)set_dealloc,            /* tp_dealloc */
-    (printfunc)set_tp_print,            /* tp_print */
-    0,                                  /* tp_getattr */
-    0,                                  /* tp_setattr */
-    set_nocmp,                          /* tp_compare */
-    (reprfunc)set_repr,                 /* tp_repr */
-    &frozenset_as_number,               /* tp_as_number */
-    &set_as_sequence,                   /* tp_as_sequence */
-    0,                                  /* tp_as_mapping */
-    frozenset_hash,                     /* tp_hash */
-    0,                                  /* tp_call */
-    0,                                  /* tp_str */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_CHECKTYPES |
-        Py_TPFLAGS_BASETYPE,            /* tp_flags */
-    frozenset_doc,                      /* tp_doc */
-    (traverseproc)set_traverse,         /* tp_traverse */
-    (inquiry)set_clear_internal,        /* tp_clear */
-    (richcmpfunc)set_richcompare,       /* tp_richcompare */
-    offsetof(PySetObject, weakreflist),         /* tp_weaklistoffset */
-    (getiterfunc)set_iter,              /* tp_iter */
-    0,                                  /* tp_iternext */
-    frozenset_methods,                  /* tp_methods */
-    0,                                  /* tp_members */
-    0,                                  /* tp_getset */
-    0,                                  /* tp_base */
-    0,                                  /* tp_dict */
-    0,                                  /* tp_descr_get */
-    0,                                  /* tp_descr_set */
-    0,                                  /* tp_dictoffset */
-    0,                                  /* tp_init */
-    PyType_GenericAlloc,                /* tp_alloc */
-    frozenset_new,                      /* tp_new */
-    PyObject_GC_Del,                    /* tp_free */
-};
-
-
-/***** C API functions *************************************************/
-
-PyObject *
-PySet_New(PyObject *iterable)
-{
-    return make_new_set(&PySet_Type, iterable);
-}
-
-PyObject *
-PyFrozenSet_New(PyObject *iterable)
-{
-    return make_new_set(&PyFrozenSet_Type, iterable);
-}
-
-Py_ssize_t
-PySet_Size(PyObject *anyset)
-{
-    if (!PyAnySet_Check(anyset)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    return PySet_GET_SIZE(anyset);
-}
-
-int
-PySet_Clear(PyObject *set)
-{
-    if (!PySet_Check(set)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    return set_clear_internal((PySetObject *)set);
-}
-
-int
-PySet_Contains(PyObject *anyset, PyObject *key)
-{
-    if (!PyAnySet_Check(anyset)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    return set_contains_key((PySetObject *)anyset, key);
-}
-
-int
-PySet_Discard(PyObject *set, PyObject *key)
-{
-    if (!PySet_Check(set)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    return set_discard_key((PySetObject *)set, key);
-}
-
-int
-PySet_Add(PyObject *anyset, PyObject *key)
-{
-    if (!PySet_Check(anyset) &&
-        (!PyFrozenSet_Check(anyset) || Py_REFCNT(anyset) != 1)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    return set_add_key((PySetObject *)anyset, key);
-}
-
-int
-_PySet_Next(PyObject *set, Py_ssize_t *pos, PyObject **key)
-{
-    setentry *entry_ptr;
-
-    if (!PyAnySet_Check(set)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    if (set_next((PySetObject *)set, pos, &entry_ptr) == 0)
-        return 0;
-    *key = entry_ptr->key;
-    return 1;
-}
-
-int
-_PySet_NextEntry(PyObject *set, Py_ssize_t *pos, PyObject **key, long *hash)
-{
-    setentry *entry;
-
-    if (!PyAnySet_Check(set)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    if (set_next((PySetObject *)set, pos, &entry) == 0)
-        return 0;
-    *key = entry->key;
-    *hash = entry->hash;
-    return 1;
-}
-
-PyObject *
-PySet_Pop(PyObject *set)
-{
-    if (!PySet_Check(set)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return set_pop((PySetObject *)set);
-}
-
-int
-_PySet_Update(PyObject *set, PyObject *iterable)
-{
-    if (!PySet_Check(set)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    return set_update_internal((PySetObject *)set, iterable);
-}
-
-#ifdef Py_DEBUG
-
-/* Test code to be called with any three element set.
-   Returns True and original set is restored. */
-
-#define assertRaises(call_return_value, exception)              \
-    do {                                                        \
-        assert(call_return_value);                              \
-        assert(PyErr_ExceptionMatches(exception));              \
-        PyErr_Clear();                                          \
-    } while(0)
-
-static PyObject *
-test_c_api(PySetObject *so)
-{
-    Py_ssize_t count;
-    char *s;
-    Py_ssize_t i;
-    PyObject *elem=NULL, *dup=NULL, *t, *f, *dup2, *x;
-    PyObject *ob = (PyObject *)so;
-    PyObject *str;
-
-    /* Verify preconditions */
-    assert(PyAnySet_Check(ob));
-    assert(PyAnySet_CheckExact(ob));
-    assert(!PyFrozenSet_CheckExact(ob));
-
-    /* so.clear(); so |= set("abc"); */
-    str = PyString_FromString("abc");
-    if (str == NULL)
-        return NULL;
-    set_clear_internal(so);
-    if (set_update_internal(so, str) == -1) {
-        Py_DECREF(str);
-        return NULL;
-    }
-    Py_DECREF(str);
-
-    /* Exercise type/size checks */
-    assert(PySet_Size(ob) == 3);
-    assert(PySet_GET_SIZE(ob) == 3);
-
-    /* Raise TypeError for non-iterable constructor arguments */
-    assertRaises(PySet_New(Py_None) == NULL, PyExc_TypeError);
-    assertRaises(PyFrozenSet_New(Py_None) == NULL, PyExc_TypeError);
-
-    /* Raise TypeError for unhashable key */
-    dup = PySet_New(ob);
-    assertRaises(PySet_Discard(ob, dup) == -1, PyExc_TypeError);
-    assertRaises(PySet_Contains(ob, dup) == -1, PyExc_TypeError);
-    assertRaises(PySet_Add(ob, dup) == -1, PyExc_TypeError);
-
-    /* Exercise successful pop, contains, add, and discard */
-    elem = PySet_Pop(ob);
-    assert(PySet_Contains(ob, elem) == 0);
-    assert(PySet_GET_SIZE(ob) == 2);
-    assert(PySet_Add(ob, elem) == 0);
-    assert(PySet_Contains(ob, elem) == 1);
-    assert(PySet_GET_SIZE(ob) == 3);
-    assert(PySet_Discard(ob, elem) == 1);
-    assert(PySet_GET_SIZE(ob) == 2);
-    assert(PySet_Discard(ob, elem) == 0);
-    assert(PySet_GET_SIZE(ob) == 2);
-
-    /* Exercise clear */
-    dup2 = PySet_New(dup);
-    assert(PySet_Clear(dup2) == 0);
-    assert(PySet_Size(dup2) == 0);
-    Py_DECREF(dup2);
-
-    /* Raise SystemError on clear or update of frozen set */
-    f = PyFrozenSet_New(dup);
-    assertRaises(PySet_Clear(f) == -1, PyExc_SystemError);
-    assertRaises(_PySet_Update(f, dup) == -1, PyExc_SystemError);
-    assert(PySet_Add(f, elem) == 0);
-    Py_INCREF(f);
-    assertRaises(PySet_Add(f, elem) == -1, PyExc_SystemError);
-    Py_DECREF(f);
-    Py_DECREF(f);
-
-    /* Exercise direct iteration */
-    i = 0, count = 0;
-    while (_PySet_Next((PyObject *)dup, &i, &x)) {
-        s = PyString_AsString(x);
-        assert(s && (s[0] == 'a' || s[0] == 'b' || s[0] == 'c'));
-        count++;
-    }
-    assert(count == 3);
-
-    /* Exercise updates */
-    dup2 = PySet_New(NULL);
-    assert(_PySet_Update(dup2, dup) == 0);
-    assert(PySet_Size(dup2) == 3);
-    assert(_PySet_Update(dup2, dup) == 0);
-    assert(PySet_Size(dup2) == 3);
-    Py_DECREF(dup2);
-
-    /* Raise SystemError when self argument is not a set or frozenset. */
-    t = PyTuple_New(0);
-    assertRaises(PySet_Size(t) == -1, PyExc_SystemError);
-    assertRaises(PySet_Contains(t, elem) == -1, PyExc_SystemError);
-    Py_DECREF(t);
-
-    /* Raise SystemError when self argument is not a set. */
-    f = PyFrozenSet_New(dup);
-    assert(PySet_Size(f) == 3);
-    assert(PyFrozenSet_CheckExact(f));
-    assertRaises(PySet_Discard(f, elem) == -1, PyExc_SystemError);
-    assertRaises(PySet_Pop(f) == NULL, PyExc_SystemError);
-    Py_DECREF(f);
-
-    /* Raise KeyError when popping from an empty set */
-    assert(PyNumber_InPlaceSubtract(ob, ob) == ob);
-    Py_DECREF(ob);
-    assert(PySet_GET_SIZE(ob) == 0);
-    assertRaises(PySet_Pop(ob) == NULL, PyExc_KeyError);
-
-    /* Restore the set from the copy using the PyNumber API */
-    assert(PyNumber_InPlaceOr(ob, dup) == ob);
-    Py_DECREF(ob);
-
-    /* Verify constructors accept NULL arguments */
-    f = PySet_New(NULL);
-    assert(f != NULL);
-    assert(PySet_GET_SIZE(f) == 0);
-    Py_DECREF(f);
-    f = PyFrozenSet_New(NULL);
-    assert(f != NULL);
-    assert(PyFrozenSet_CheckExact(f));
-    assert(PySet_GET_SIZE(f) == 0);
-    Py_DECREF(f);
-
-    Py_DECREF(elem);
-    Py_DECREF(dup);
-    Py_RETURN_TRUE;
-}
-
-#undef assertRaises
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/sliceobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/sliceobject.c
deleted file mode 100644
index 63b1e4f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/sliceobject.c
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
-Written by Jim Hugunin and Chris Chase.
-
-This includes both the singular ellipsis object and slice objects.
-
-Guido, feel free to do whatever you want in the way of copyrights
-for this file.
-*/
-
-/*
-Py_Ellipsis encodes the '...' rubber index token. It is similar to
-the Py_NoneStruct in that there is no way to create other objects of
-this type and there is exactly one in existence.
-*/
-
-#include "Python.h"
-#include "structmember.h"
-
-static PyObject *
-ellipsis_repr(PyObject *op)
-{
-    return PyString_FromString("Ellipsis");
-}
-
-PyTypeObject PyEllipsis_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "ellipsis",                         /* tp_name */
-    0,                                  /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    0, /*never called*/                 /* tp_dealloc */
-    0,                                  /* tp_print */
-    0,                                  /* tp_getattr */
-    0,                                  /* tp_setattr */
-    0,                                  /* tp_compare */
-    ellipsis_repr,                      /* tp_repr */
-    0,                                  /* tp_as_number */
-    0,                                  /* tp_as_sequence */
-    0,                                  /* tp_as_mapping */
-    0,                                  /* tp_hash */
-    0,                                  /* tp_call */
-    0,                                  /* tp_str */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                 /* tp_flags */
-};
-
-PyObject _Py_EllipsisObject = {
-    _PyObject_EXTRA_INIT
-    1, &PyEllipsis_Type
-};
-
-
-/* Slice object implementation
-
-   start, stop, and step are python objects with None indicating no
-   index is present.
-*/
-
-PyObject *
-PySlice_New(PyObject *start, PyObject *stop, PyObject *step)
-{
-    PySliceObject *obj = PyObject_New(PySliceObject, &PySlice_Type);
-
-    if (obj == NULL)
-        return NULL;
-
-    if (step == NULL) step = Py_None;
-    Py_INCREF(step);
-    if (start == NULL) start = Py_None;
-    Py_INCREF(start);
-    if (stop == NULL) stop = Py_None;
-    Py_INCREF(stop);
-
-    obj->step = step;
-    obj->start = start;
-    obj->stop = stop;
-
-    return (PyObject *) obj;
-}
-
-PyObject *
-_PySlice_FromIndices(Py_ssize_t istart, Py_ssize_t istop)
-{
-    PyObject *start, *end, *slice;
-    start = PyInt_FromSsize_t(istart);
-    if (!start)
-        return NULL;
-    end = PyInt_FromSsize_t(istop);
-    if (!end) {
-        Py_DECREF(start);
-        return NULL;
-    }
-
-    slice = PySlice_New(start, end, NULL);
-    Py_DECREF(start);
-    Py_DECREF(end);
-    return slice;
-}
-
-int
-PySlice_GetIndices(PySliceObject *r, Py_ssize_t length,
-                   Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
-{
-    /* XXX support long ints */
-    if (r->step == Py_None) {
-        *step = 1;
-    } else {
-        if (!PyInt_Check(r->step) && !PyLong_Check(r->step)) return -1;
-        *step = PyInt_AsSsize_t(r->step);
-    }
-    if (r->start == Py_None) {
-        *start = *step < 0 ? length-1 : 0;
-    } else {
-        if (!PyInt_Check(r->start) && !PyLong_Check(r->step)) return -1;
-        *start = PyInt_AsSsize_t(r->start);
-        if (*start < 0) *start += length;
-    }
-    if (r->stop == Py_None) {
-        *stop = *step < 0 ? -1 : length;
-    } else {
-        if (!PyInt_Check(r->stop) && !PyLong_Check(r->step)) return -1;
-        *stop = PyInt_AsSsize_t(r->stop);
-        if (*stop < 0) *stop += length;
-    }
-    if (*stop > length) return -1;
-    if (*start >= length) return -1;
-    if (*step == 0) return -1;
-    return 0;
-}
-
-int
-PySlice_GetIndicesEx(PySliceObject *r, Py_ssize_t length,
-                     Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)
-{
-    /* this is harder to get right than you might think */
-
-    Py_ssize_t defstart, defstop;
-
-    if (r->step == Py_None) {
-        *step = 1;
-    }
-    else {
-        if (!_PyEval_SliceIndex(r->step, step)) return -1;
-        if (*step == 0) {
-            PyErr_SetString(PyExc_ValueError,
-                            "slice step cannot be zero");
-            return -1;
-        }
-    }
-
-    defstart = *step < 0 ? length-1 : 0;
-    defstop = *step < 0 ? -1 : length;
-
-    if (r->start == Py_None) {
-        *start = defstart;
-    }
-    else {
-        if (!_PyEval_SliceIndex(r->start, start)) return -1;
-        if (*start < 0) *start += length;
-        if (*start < 0) *start = (*step < 0) ? -1 : 0;
-        if (*start >= length)
-            *start = (*step < 0) ? length - 1 : length;
-    }
-
-    if (r->stop == Py_None) {
-        *stop = defstop;
-    }
-    else {
-        if (!_PyEval_SliceIndex(r->stop, stop)) return -1;
-        if (*stop < 0) *stop += length;
-        if (*stop < 0) *stop = (*step < 0) ? -1 : 0;
-        if (*stop >= length)
-            *stop = (*step < 0) ? length - 1 : length;
-    }
-
-    if ((*step < 0 && *stop >= *start)
-        || (*step > 0 && *start >= *stop)) {
-        *slicelength = 0;
-    }
-    else if (*step < 0) {
-        *slicelength = (*stop-*start+1)/(*step)+1;
-    }
-    else {
-        *slicelength = (*stop-*start-1)/(*step)+1;
-    }
-
-    return 0;
-}
-
-static PyObject *
-slice_new(PyTypeObject *type, PyObject *args, PyObject *kw)
-{
-    PyObject *start, *stop, *step;
-
-    start = stop = step = NULL;
-
-    if (!_PyArg_NoKeywords("slice()", kw))
-        return NULL;
-
-    if (!PyArg_UnpackTuple(args, "slice", 1, 3, &start, &stop, &step))
-        return NULL;
-
-    /* This swapping of stop and start is to maintain similarity with
-       range(). */
-    if (stop == NULL) {
-        stop = start;
-        start = NULL;
-    }
-    return PySlice_New(start, stop, step);
-}
-
-PyDoc_STRVAR(slice_doc,
-"slice([start,] stop[, step])\n\
-\n\
-Create a slice object.  This is used for extended slicing (e.g. a[0:10:2]).");
-
-static void
-slice_dealloc(PySliceObject *r)
-{
-    Py_DECREF(r->step);
-    Py_DECREF(r->start);
-    Py_DECREF(r->stop);
-    PyObject_Del(r);
-}
-
-static PyObject *
-slice_repr(PySliceObject *r)
-{
-    PyObject *s, *comma;
-
-    s = PyString_FromString("slice(");
-    comma = PyString_FromString(", ");
-    PyString_ConcatAndDel(&s, PyObject_Repr(r->start));
-    PyString_Concat(&s, comma);
-    PyString_ConcatAndDel(&s, PyObject_Repr(r->stop));
-    PyString_Concat(&s, comma);
-    PyString_ConcatAndDel(&s, PyObject_Repr(r->step));
-    PyString_ConcatAndDel(&s, PyString_FromString(")"));
-    Py_DECREF(comma);
-    return s;
-}
-
-static PyMemberDef slice_members[] = {
-    {"start", T_OBJECT, offsetof(PySliceObject, start), READONLY},
-    {"stop", T_OBJECT, offsetof(PySliceObject, stop), READONLY},
-    {"step", T_OBJECT, offsetof(PySliceObject, step), READONLY},
-    {0}
-};
-
-static PyObject*
-slice_indices(PySliceObject* self, PyObject* len)
-{
-    Py_ssize_t ilen, start, stop, step, slicelength;
-
-    ilen = PyNumber_AsSsize_t(len, PyExc_OverflowError);
-
-    if (ilen == -1 && PyErr_Occurred()) {
-        return NULL;
-    }
-
-    if (PySlice_GetIndicesEx(self, ilen, &start, &stop,
-                             &step, &slicelength) < 0) {
-        return NULL;
-    }
-
-    return Py_BuildValue("(nnn)", start, stop, step);
-}
-
-PyDoc_STRVAR(slice_indices_doc,
-"S.indices(len) -> (start, stop, stride)\n\
-\n\
-Assuming a sequence of length len, calculate the start and stop\n\
-indices, and the stride length of the extended slice described by\n\
-S. Out of bounds indices are clipped in a manner consistent with the\n\
-handling of normal slices.");
-
-static PyObject *
-slice_reduce(PySliceObject* self)
-{
-    return Py_BuildValue("O(OOO)", Py_TYPE(self), self->start, self->stop, self->step);
-}
-
-PyDoc_STRVAR(reduce_doc, "Return state information for pickling.");
-
-static PyMethodDef slice_methods[] = {
-    {"indices",         (PyCFunction)slice_indices,
-     METH_O,            slice_indices_doc},
-    {"__reduce__",      (PyCFunction)slice_reduce,
-     METH_NOARGS,       reduce_doc},
-    {NULL, NULL}
-};
-
-static int
-slice_compare(PySliceObject *v, PySliceObject *w)
-{
-    int result = 0;
-
-    if (v == w)
-        return 0;
-
-    if (PyObject_Cmp(v->start, w->start, &result) < 0)
-        return -2;
-    if (result != 0)
-        return result;
-    if (PyObject_Cmp(v->stop, w->stop, &result) < 0)
-        return -2;
-    if (result != 0)
-        return result;
-    if (PyObject_Cmp(v->step, w->step, &result) < 0)
-        return -2;
-    return result;
-}
-
-static long
-slice_hash(PySliceObject *v)
-{
-    PyErr_SetString(PyExc_TypeError, "unhashable type");
-    return -1L;
-}
-
-PyTypeObject PySlice_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "slice",                    /* Name of this type */
-    sizeof(PySliceObject),      /* Basic object size */
-    0,                          /* Item size for varobject */
-    (destructor)slice_dealloc,                  /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    (cmpfunc)slice_compare,                     /* tp_compare */
-    (reprfunc)slice_repr,                       /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    (hashfunc)slice_hash,                       /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                         /* tp_flags */
-    slice_doc,                                  /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    slice_methods,                              /* tp_methods */
-    slice_members,                              /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    slice_new,                                  /* tp_new */
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/README.txt b/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/README.txt
deleted file mode 100644
index 66e671f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/README.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-bits shared by the stringobject and unicodeobject implementations (and
-possibly other modules, in a not too distant future).
-
-the stuff in here is included into relevant places; see the individual
-source files for details.
-
---------------------------------------------------------------------
-the following defines used by the different modules:
-
-STRINGLIB_CHAR
-
-    the type used to hold a character (char or Py_UNICODE)
-
-STRINGLIB_EMPTY
-
-    a PyObject representing the empty string, only to be used if
-    STRINGLIB_MUTABLE is 0
-
-Py_ssize_t STRINGLIB_LEN(PyObject*)
-
-    returns the length of the given string object (which must be of the
-    right type)
-
-PyObject* STRINGLIB_NEW(STRINGLIB_CHAR*, Py_ssize_t)
-
-    creates a new string object
-
-STRINGLIB_CHAR* STRINGLIB_STR(PyObject*)
-
-    returns the pointer to the character data for the given string
-    object (which must be of the right type)
-
-int STRINGLIB_CHECK_EXACT(PyObject *)
-
-    returns true if the object is an instance of our type, not a subclass
-
-STRINGLIB_MUTABLE
-
-    must be 0 or 1 to tell the cpp macros in stringlib code if the object
-    being operated on is mutable or not
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/count.h b/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/count.h
deleted file mode 100644
index 216c269..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/count.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* stringlib: count implementation */
-
-#ifndef STRINGLIB_COUNT_H
-#define STRINGLIB_COUNT_H
-
-#ifndef STRINGLIB_FASTSEARCH_H
-#error must include "stringlib/fastsearch.h" before including this module
-#endif
-
-Py_LOCAL_INLINE(Py_ssize_t)
-stringlib_count(const STRINGLIB_CHAR* str, Py_ssize_t str_len,
-                const STRINGLIB_CHAR* sub, Py_ssize_t sub_len,
-                Py_ssize_t maxcount)
-{
-    Py_ssize_t count;
-
-    if (str_len < 0)
-        return 0; /* start > len(str) */
-    if (sub_len == 0)
-        return (str_len < maxcount) ? str_len + 1 : maxcount;
-
-    count = fastsearch(str, str_len, sub, sub_len, maxcount, FAST_COUNT);
-
-    if (count < 0)
-        return 0; /* no match */
-
-    return count;
-}
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/ctype.h b/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/ctype.h
deleted file mode 100644
index df2fede..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/ctype.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* NOTE: this API is -ONLY- for use with single byte character strings. */
-/* Do not use it with Unicode. */
-
-#include "bytes_methods.h"
-
-static PyObject*
-stringlib_isspace(PyObject *self)
-{
-    return _Py_bytes_isspace(STRINGLIB_STR(self), STRINGLIB_LEN(self));
-}
-
-static PyObject*
-stringlib_isalpha(PyObject *self)
-{
-    return _Py_bytes_isalpha(STRINGLIB_STR(self), STRINGLIB_LEN(self));
-}
-
-static PyObject*
-stringlib_isalnum(PyObject *self)
-{
-    return _Py_bytes_isalnum(STRINGLIB_STR(self), STRINGLIB_LEN(self));
-}
-
-static PyObject*
-stringlib_isdigit(PyObject *self)
-{
-    return _Py_bytes_isdigit(STRINGLIB_STR(self), STRINGLIB_LEN(self));
-}
-
-static PyObject*
-stringlib_islower(PyObject *self)
-{
-    return _Py_bytes_islower(STRINGLIB_STR(self), STRINGLIB_LEN(self));
-}
-
-static PyObject*
-stringlib_isupper(PyObject *self)
-{
-    return _Py_bytes_isupper(STRINGLIB_STR(self), STRINGLIB_LEN(self));
-}
-
-static PyObject*
-stringlib_istitle(PyObject *self)
-{
-    return _Py_bytes_istitle(STRINGLIB_STR(self), STRINGLIB_LEN(self));
-}
-
-
-/* functions that return a new object partially translated by ctype funcs: */
-
-static PyObject*
-stringlib_lower(PyObject *self)
-{
-    PyObject* newobj;
-    newobj = STRINGLIB_NEW(NULL, STRINGLIB_LEN(self));
-    if (!newobj)
-            return NULL;
-    _Py_bytes_lower(STRINGLIB_STR(newobj), STRINGLIB_STR(self),
-                 STRINGLIB_LEN(self));
-    return newobj;
-}
-
-static PyObject*
-stringlib_upper(PyObject *self)
-{
-    PyObject* newobj;
-    newobj = STRINGLIB_NEW(NULL, STRINGLIB_LEN(self));
-    if (!newobj)
-            return NULL;
-    _Py_bytes_upper(STRINGLIB_STR(newobj), STRINGLIB_STR(self),
-                 STRINGLIB_LEN(self));
-    return newobj;
-}
-
-static PyObject*
-stringlib_title(PyObject *self)
-{
-    PyObject* newobj;
-    newobj = STRINGLIB_NEW(NULL, STRINGLIB_LEN(self));
-    if (!newobj)
-            return NULL;
-    _Py_bytes_title(STRINGLIB_STR(newobj), STRINGLIB_STR(self),
-                 STRINGLIB_LEN(self));
-    return newobj;
-}
-
-static PyObject*
-stringlib_capitalize(PyObject *self)
-{
-    PyObject* newobj;
-    newobj = STRINGLIB_NEW(NULL, STRINGLIB_LEN(self));
-    if (!newobj)
-            return NULL;
-    _Py_bytes_capitalize(STRINGLIB_STR(newobj), STRINGLIB_STR(self),
-                      STRINGLIB_LEN(self));
-    return newobj;
-}
-
-static PyObject*
-stringlib_swapcase(PyObject *self)
-{
-    PyObject* newobj;
-    newobj = STRINGLIB_NEW(NULL, STRINGLIB_LEN(self));
-    if (!newobj)
-            return NULL;
-    _Py_bytes_swapcase(STRINGLIB_STR(newobj), STRINGLIB_STR(self),
-                    STRINGLIB_LEN(self));
-    return newobj;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/fastsearch.h b/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/fastsearch.h
deleted file mode 100644
index 6255b36..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/fastsearch.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/* stringlib: fastsearch implementation */
-
-#ifndef STRINGLIB_FASTSEARCH_H
-#define STRINGLIB_FASTSEARCH_H
-
-/* fast search/count implementation, based on a mix between boyer-
-   moore and horspool, with a few more bells and whistles on the top.
-   for some more background, see: http://effbot.org/zone/stringlib.htm */
-
-/* note: fastsearch may access s[n], which isn't a problem when using
-   Python's ordinary string types, but may cause problems if you're
-   using this code in other contexts.  also, the count mode returns -1
-   if there cannot possible be a match in the target string, and 0 if
-   it has actually checked for matches, but didn't find any.  callers
-   beware! */
-
-#define FAST_COUNT 0
-#define FAST_SEARCH 1
-#define FAST_RSEARCH 2
-
-#if LONG_BIT >= 128
-#define STRINGLIB_BLOOM_WIDTH 128
-#elif LONG_BIT >= 64
-#define STRINGLIB_BLOOM_WIDTH 64
-#elif LONG_BIT >= 32
-#define STRINGLIB_BLOOM_WIDTH 32
-#else
-#error "LONG_BIT is smaller than 32"
-#endif
-
-#define STRINGLIB_BLOOM_ADD(mask, ch) \
-    ((mask |= (1UL << ((ch) & (STRINGLIB_BLOOM_WIDTH -1)))))
-#define STRINGLIB_BLOOM(mask, ch)     \
-    ((mask &  (1UL << ((ch) & (STRINGLIB_BLOOM_WIDTH -1)))))
-
-Py_LOCAL_INLINE(Py_ssize_t)
-fastsearch(const STRINGLIB_CHAR* s, Py_ssize_t n,
-           const STRINGLIB_CHAR* p, Py_ssize_t m,
-           Py_ssize_t maxcount, int mode)
-{
-    unsigned long mask;
-    Py_ssize_t skip, count = 0;
-    Py_ssize_t i, j, mlast, w;
-
-    w = n - m;
-
-    if (w < 0 || (mode == FAST_COUNT && maxcount == 0))
-        return -1;
-
-    /* look for special cases */
-    if (m <= 1) {
-        if (m <= 0)
-            return -1;
-        /* use special case for 1-character strings */
-        if (mode == FAST_COUNT) {
-            for (i = 0; i < n; i++)
-                if (s[i] == p[0]) {
-                    count++;
-                    if (count == maxcount)
-                        return maxcount;
-                }
-            return count;
-        } else if (mode == FAST_SEARCH) {
-            for (i = 0; i < n; i++)
-                if (s[i] == p[0])
-                    return i;
-        } else {    /* FAST_RSEARCH */
-            for (i = n - 1; i > -1; i--)
-                if (s[i] == p[0])
-                    return i;
-        }
-        return -1;
-    }
-
-    mlast = m - 1;
-    skip = mlast - 1;
-    mask = 0;
-
-    if (mode != FAST_RSEARCH) {
-
-        /* create compressed boyer-moore delta 1 table */
-
-        /* process pattern[:-1] */
-        for (i = 0; i < mlast; i++) {
-            STRINGLIB_BLOOM_ADD(mask, p[i]);
-            if (p[i] == p[mlast])
-                skip = mlast - i - 1;
-        }
-        /* process pattern[-1] outside the loop */
-        STRINGLIB_BLOOM_ADD(mask, p[mlast]);
-
-        for (i = 0; i <= w; i++) {
-            /* note: using mlast in the skip path slows things down on x86 */
-            if (s[i+m-1] == p[m-1]) {
-                /* candidate match */
-                for (j = 0; j < mlast; j++)
-                    if (s[i+j] != p[j])
-                        break;
-                if (j == mlast) {
-                    /* got a match! */
-                    if (mode != FAST_COUNT)
-                        return i;
-                    count++;
-                    if (count == maxcount)
-                        return maxcount;
-                    i = i + mlast;
-                    continue;
-                }
-                /* miss: check if next character is part of pattern */
-                if (!STRINGLIB_BLOOM(mask, s[i+m]))
-                    i = i + m;
-                else
-                    i = i + skip;
-            } else {
-                /* skip: check if next character is part of pattern */
-                if (!STRINGLIB_BLOOM(mask, s[i+m]))
-                    i = i + m;
-            }
-        }
-    } else {    /* FAST_RSEARCH */
-
-        /* create compressed boyer-moore delta 1 table */
-
-        /* process pattern[0] outside the loop */
-        STRINGLIB_BLOOM_ADD(mask, p[0]);
-        /* process pattern[:0:-1] */
-        for (i = mlast; i > 0; i--) {
-            STRINGLIB_BLOOM_ADD(mask, p[i]);
-            if (p[i] == p[0])
-                skip = i - 1;
-        }
-
-        for (i = w; i >= 0; i--) {
-            if (s[i] == p[0]) {
-                /* candidate match */
-                for (j = mlast; j > 0; j--)
-                    if (s[i+j] != p[j])
-                        break;
-                if (j == 0)
-                    /* got a match! */
-                    return i;
-                /* miss: check if previous character is part of pattern */
-                if (i > 0 && !STRINGLIB_BLOOM(mask, s[i-1]))
-                    i = i - m;
-                else
-                    i = i - skip;
-            } else {
-                /* skip: check if previous character is part of pattern */
-                if (i > 0 && !STRINGLIB_BLOOM(mask, s[i-1]))
-                    i = i - m;
-            }
-        }
-    }
-
-    if (mode != FAST_COUNT)
-        return -1;
-    return count;
-}
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/find.h b/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/find.h
deleted file mode 100644
index a580e4b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/find.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/* stringlib: find/index implementation */
-
-#ifndef STRINGLIB_FIND_H
-#define STRINGLIB_FIND_H
-
-#ifndef STRINGLIB_FASTSEARCH_H
-#error must include "stringlib/fastsearch.h" before including this module
-#endif
-
-Py_LOCAL_INLINE(Py_ssize_t)
-stringlib_find(const STRINGLIB_CHAR* str, Py_ssize_t str_len,
-               const STRINGLIB_CHAR* sub, Py_ssize_t sub_len,
-               Py_ssize_t offset)
-{
-    Py_ssize_t pos;
-
-    if (str_len < 0)
-        return -1;
-    if (sub_len == 0)
-        return offset;
-
-    pos = fastsearch(str, str_len, sub, sub_len, -1, FAST_SEARCH);
-
-    if (pos >= 0)
-        pos += offset;
-
-    return pos;
-}
-
-Py_LOCAL_INLINE(Py_ssize_t)
-stringlib_rfind(const STRINGLIB_CHAR* str, Py_ssize_t str_len,
-                const STRINGLIB_CHAR* sub, Py_ssize_t sub_len,
-                Py_ssize_t offset)
-{
-    Py_ssize_t pos;
-
-    if (str_len < 0)
-        return -1;
-    if (sub_len == 0)
-        return str_len + offset;
-
-    pos = fastsearch(str, str_len, sub, sub_len, -1, FAST_RSEARCH);
-
-    if (pos >= 0)
-        pos += offset;
-
-    return pos;
-}
-
-/* helper macro to fixup start/end slice values */
-#define ADJUST_INDICES(start, end, len)         \
-    if (end > len)                              \
-        end = len;                              \
-    else if (end < 0) {                         \
-        end += len;                             \
-        if (end < 0)                            \
-            end = 0;                            \
-    }                                           \
-    if (start < 0) {                            \
-        start += len;                           \
-        if (start < 0)                          \
-            start = 0;                          \
-    }
-
-Py_LOCAL_INLINE(Py_ssize_t)
-stringlib_find_slice(const STRINGLIB_CHAR* str, Py_ssize_t str_len,
-                     const STRINGLIB_CHAR* sub, Py_ssize_t sub_len,
-                     Py_ssize_t start, Py_ssize_t end)
-{
-    ADJUST_INDICES(start, end, str_len);
-    return stringlib_find(str + start, end - start, sub, sub_len, start);
-}
-
-Py_LOCAL_INLINE(Py_ssize_t)
-stringlib_rfind_slice(const STRINGLIB_CHAR* str, Py_ssize_t str_len,
-                      const STRINGLIB_CHAR* sub, Py_ssize_t sub_len,
-                      Py_ssize_t start, Py_ssize_t end)
-{
-    ADJUST_INDICES(start, end, str_len);
-    return stringlib_rfind(str + start, end - start, sub, sub_len, start);
-}
-
-#ifdef STRINGLIB_WANT_CONTAINS_OBJ
-
-Py_LOCAL_INLINE(int)
-stringlib_contains_obj(PyObject* str, PyObject* sub)
-{
-    return stringlib_find(
-        STRINGLIB_STR(str), STRINGLIB_LEN(str),
-        STRINGLIB_STR(sub), STRINGLIB_LEN(sub), 0
-        ) != -1;
-}
-
-#endif /* STRINGLIB_WANT_CONTAINS_OBJ */
-
-/*
-This function is a helper for the "find" family (find, rfind, index,
-rindex) and for count, startswith and endswith, because they all have
-the same behaviour for the arguments.
-
-It does not touch the variables received until it knows everything 
-is ok.
-*/
-
-#define FORMAT_BUFFER_SIZE 50
-
-Py_LOCAL_INLINE(int)
-stringlib_parse_args_finds(const char * function_name, PyObject *args,
-                           PyObject **subobj,
-                           Py_ssize_t *start, Py_ssize_t *end)
-{
-    PyObject *tmp_subobj;
-    Py_ssize_t tmp_start = 0;
-    Py_ssize_t tmp_end = PY_SSIZE_T_MAX;
-    PyObject *obj_start=Py_None, *obj_end=Py_None;
-    char format[FORMAT_BUFFER_SIZE] = "O|OO:";
-    size_t len = strlen(format);
-
-    strncpy(format + len, function_name, FORMAT_BUFFER_SIZE - len - 1);
-    format[FORMAT_BUFFER_SIZE - 1] = '\0';
-
-    if (!PyArg_ParseTuple(args, format, &tmp_subobj, &obj_start, &obj_end))
-        return 0;
-
-    /* To support None in "start" and "end" arguments, meaning
-       the same as if they were not passed.
-    */
-    if (obj_start != Py_None)
-        if (!_PyEval_SliceIndex(obj_start, &tmp_start))
-            return 0;
-    if (obj_end != Py_None)
-        if (!_PyEval_SliceIndex(obj_end, &tmp_end))
-            return 0;
-
-    *start = tmp_start;
-    *end = tmp_end;
-    *subobj = tmp_subobj;
-    return 1;
-}
-
-#undef FORMAT_BUFFER_SIZE
-
-#if STRINGLIB_IS_UNICODE
-
-/*
-Wraps stringlib_parse_args_finds() and additionally ensures that the
-first argument is a unicode object.
-
-Note that we receive a pointer to the pointer of the substring object,
-so when we create that object in this function we don't DECREF it,
-because it continues living in the caller functions (those functions, 
-after finishing using the substring, must DECREF it).
-*/
-
-Py_LOCAL_INLINE(int)
-stringlib_parse_args_finds_unicode(const char * function_name, PyObject *args,
-                                   PyUnicodeObject **substring,
-                                   Py_ssize_t *start, Py_ssize_t *end)
-{
-    PyObject *tmp_substring;
-
-    if(stringlib_parse_args_finds(function_name, args, &tmp_substring,
-                                  start, end)) {
-        tmp_substring = PyUnicode_FromObject(tmp_substring);
-        if (!tmp_substring)
-            return 0;
-        *substring = (PyUnicodeObject *)tmp_substring;
-        return 1;
-    }
-    return 0;
-}
-
-#endif /* STRINGLIB_IS_UNICODE */
-
-#endif /* STRINGLIB_FIND_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/formatter.h b/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/formatter.h
deleted file mode 100644
index 4f9e64b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/formatter.h
+++ /dev/null
@@ -1,1531 +0,0 @@
-/* implements the string, long, and float formatters.  that is,
-   string.__format__, etc. */
-
-#include <locale.h>
-
-/* Before including this, you must include either:
-   stringlib/unicodedefs.h
-   stringlib/stringdefs.h
-
-   Also, you should define the names:
-   FORMAT_STRING
-   FORMAT_LONG
-   FORMAT_FLOAT
-   FORMAT_COMPLEX
-   to be whatever you want the public names of these functions to
-   be.  These are the only non-static functions defined here.
-*/
-
-/* Raises an exception about an unknown presentation type for this
- * type. */
-
-static void
-unknown_presentation_type(STRINGLIB_CHAR presentation_type,
-                          const char* type_name)
-{
-#if STRINGLIB_IS_UNICODE
-    /* If STRINGLIB_CHAR is Py_UNICODE, %c might be out-of-range,
-       hence the two cases. If it is char, gcc complains that the
-       condition below is always true, hence the ifdef. */
-    if (presentation_type > 32 && presentation_type < 128)
-#endif
-        PyErr_Format(PyExc_ValueError,
-                     "Unknown format code '%c' "
-                     "for object of type '%.200s'",
-                     (char)presentation_type,
-                     type_name);
-#if STRINGLIB_IS_UNICODE
-    else
-        PyErr_Format(PyExc_ValueError,
-                     "Unknown format code '\\x%x' "
-                     "for object of type '%.200s'",
-                     (unsigned int)presentation_type,
-                     type_name);
-#endif
-}
-
-static void
-invalid_comma_type(STRINGLIB_CHAR presentation_type)
-{
-#if STRINGLIB_IS_UNICODE
-    /* See comment in unknown_presentation_type */
-    if (presentation_type > 32 && presentation_type < 128)
-#endif
-        PyErr_Format(PyExc_ValueError,
-                     "Cannot specify ',' with '%c'.",
-                     (char)presentation_type);
-#if STRINGLIB_IS_UNICODE
-    else
-        PyErr_Format(PyExc_ValueError,
-                     "Cannot specify ',' with '\\x%x'.",
-                     (unsigned int)presentation_type);
-#endif
-}
-
-/*
-    get_integer consumes 0 or more decimal digit characters from an
-    input string, updates *result with the corresponding positive
-    integer, and returns the number of digits consumed.
-
-    returns -1 on error.
-*/
-static int
-get_integer(STRINGLIB_CHAR **ptr, STRINGLIB_CHAR *end,
-                  Py_ssize_t *result)
-{
-    Py_ssize_t accumulator, digitval, oldaccumulator;
-    int numdigits;
-    accumulator = numdigits = 0;
-    for (;;(*ptr)++, numdigits++) {
-        if (*ptr >= end)
-            break;
-        digitval = STRINGLIB_TODECIMAL(**ptr);
-        if (digitval < 0)
-            break;
-        /*
-           This trick was copied from old Unicode format code.  It's cute,
-           but would really suck on an old machine with a slow divide
-           implementation.  Fortunately, in the normal case we do not
-           expect too many digits.
-        */
-        oldaccumulator = accumulator;
-        accumulator *= 10;
-        if ((accumulator+10)/10 != oldaccumulator+1) {
-            PyErr_Format(PyExc_ValueError,
-                         "Too many decimal digits in format string");
-            return -1;
-        }
-        accumulator += digitval;
-    }
-    *result = accumulator;
-    return numdigits;
-}
-
-/************************************************************************/
-/*********** standard format specifier parsing **************************/
-/************************************************************************/
-
-/* returns true if this character is a specifier alignment token */
-Py_LOCAL_INLINE(int)
-is_alignment_token(STRINGLIB_CHAR c)
-{
-    switch (c) {
-    case '<': case '>': case '=': case '^':
-        return 1;
-    default:
-        return 0;
-    }
-}
-
-/* returns true if this character is a sign element */
-Py_LOCAL_INLINE(int)
-is_sign_element(STRINGLIB_CHAR c)
-{
-    switch (c) {
-    case ' ': case '+': case '-':
-        return 1;
-    default:
-        return 0;
-    }
-}
-
-
-typedef struct {
-    STRINGLIB_CHAR fill_char;
-    STRINGLIB_CHAR align;
-    int alternate;
-    STRINGLIB_CHAR sign;
-    Py_ssize_t width;
-    int thousands_separators;
-    Py_ssize_t precision;
-    STRINGLIB_CHAR type;
-} InternalFormatSpec;
-
-
-#if 0
-/* Occassionally useful for debugging. Should normally be commented out. */
-static void
-DEBUG_PRINT_FORMAT_SPEC(InternalFormatSpec *format)
-{
-    printf("internal format spec: fill_char %d\n", format->fill_char);
-    printf("internal format spec: align %d\n", format->align);
-    printf("internal format spec: alternate %d\n", format->alternate);
-    printf("internal format spec: sign %d\n", format->sign);
-    printf("internal format spec: width %zd\n", format->width);
-    printf("internal format spec: thousands_separators %d\n",
-           format->thousands_separators);
-    printf("internal format spec: precision %zd\n", format->precision);
-    printf("internal format spec: type %c\n", format->type);
-    printf("\n");
-}
-#endif
-
-
-/*
-  ptr points to the start of the format_spec, end points just past its end.
-  fills in format with the parsed information.
-  returns 1 on success, 0 on failure.
-  if failure, sets the exception
-*/
-static int
-parse_internal_render_format_spec(STRINGLIB_CHAR *format_spec,
-                                  Py_ssize_t format_spec_len,
-                                  InternalFormatSpec *format,
-                                  char default_type,
-                                  char default_align)
-{
-    STRINGLIB_CHAR *ptr = format_spec;
-    STRINGLIB_CHAR *end = format_spec + format_spec_len;
-
-    /* end-ptr is used throughout this code to specify the length of
-       the input string */
-
-    Py_ssize_t consumed;
-    int align_specified = 0;
-
-    format->fill_char = '\0';
-    format->align = default_align;
-    format->alternate = 0;
-    format->sign = '\0';
-    format->width = -1;
-    format->thousands_separators = 0;
-    format->precision = -1;
-    format->type = default_type;
-
-    /* If the second char is an alignment token,
-       then parse the fill char */
-    if (end-ptr >= 2 && is_alignment_token(ptr[1])) {
-        format->align = ptr[1];
-        format->fill_char = ptr[0];
-        align_specified = 1;
-        ptr += 2;
-    }
-    else if (end-ptr >= 1 && is_alignment_token(ptr[0])) {
-        format->align = ptr[0];
-        align_specified = 1;
-        ++ptr;
-    }
-
-    /* Parse the various sign options */
-    if (end-ptr >= 1 && is_sign_element(ptr[0])) {
-        format->sign = ptr[0];
-        ++ptr;
-    }
-
-    /* If the next character is #, we're in alternate mode.  This only
-       applies to integers. */
-    if (end-ptr >= 1 && ptr[0] == '#') {
-        format->alternate = 1;
-        ++ptr;
-    }
-
-    /* The special case for 0-padding (backwards compat) */
-    if (format->fill_char == '\0' && end-ptr >= 1 && ptr[0] == '0') {
-        format->fill_char = '0';
-        if (!align_specified) {
-            format->align = '=';
-        }
-        ++ptr;
-    }
-
-    consumed = get_integer(&ptr, end, &format->width);
-    if (consumed == -1)
-        /* Overflow error. Exception already set. */
-        return 0;
-
-    /* If consumed is 0, we didn't consume any characters for the
-       width. In that case, reset the width to -1, because
-       get_integer() will have set it to zero. -1 is how we record
-       that the width wasn't specified. */
-    if (consumed == 0)
-        format->width = -1;
-
-    /* Comma signifies add thousands separators */
-    if (end-ptr && ptr[0] == ',') {
-        format->thousands_separators = 1;
-        ++ptr;
-    }
-
-    /* Parse field precision */
-    if (end-ptr && ptr[0] == '.') {
-        ++ptr;
-
-        consumed = get_integer(&ptr, end, &format->precision);
-        if (consumed == -1)
-            /* Overflow error. Exception already set. */
-            return 0;
-
-        /* Not having a precision after a dot is an error. */
-        if (consumed == 0) {
-            PyErr_Format(PyExc_ValueError,
-                         "Format specifier missing precision");
-            return 0;
-        }
-
-    }
-
-    /* Finally, parse the type field. */
-
-    if (end-ptr > 1) {
-        /* More than one char remain, invalid conversion spec. */
-        PyErr_Format(PyExc_ValueError, "Invalid conversion specification");
-        return 0;
-    }
-
-    if (end-ptr == 1) {
-        format->type = ptr[0];
-        ++ptr;
-    }
-
-    /* Do as much validating as we can, just by looking at the format
-       specifier.  Do not take into account what type of formatting
-       we're doing (int, float, string). */
-
-    if (format->thousands_separators) {
-        switch (format->type) {
-        case 'd':
-        case 'e':
-        case 'f':
-        case 'g':
-        case 'E':
-        case 'G':
-        case '%':
-        case 'F':
-        case '\0':
-            /* These are allowed. See PEP 378.*/
-            break;
-        default:
-            invalid_comma_type(format->type);
-            return 0;
-        }
-    }
-
-    return 1;
-}
-
-/* Calculate the padding needed. */
-static void
-calc_padding(Py_ssize_t nchars, Py_ssize_t width, STRINGLIB_CHAR align,
-             Py_ssize_t *n_lpadding, Py_ssize_t *n_rpadding,
-             Py_ssize_t *n_total)
-{
-    if (width >= 0) {
-        if (nchars > width)
-            *n_total = nchars;
-        else
-            *n_total = width;
-    }
-    else {
-        /* not specified, use all of the chars and no more */
-        *n_total = nchars;
-    }
-
-    /* Figure out how much leading space we need, based on the
-       aligning */
-    if (align == '>')
-        *n_lpadding = *n_total - nchars;
-    else if (align == '^')
-        *n_lpadding = (*n_total - nchars) / 2;
-    else if (align == '<' || align == '=')
-        *n_lpadding = 0;
-    else {
-        /* We should never have an unspecified alignment. */
-        *n_lpadding = 0;
-        assert(0);
-    }
-
-    *n_rpadding = *n_total - nchars - *n_lpadding;
-}
-
-/* Do the padding, and return a pointer to where the caller-supplied
-   content goes. */
-static STRINGLIB_CHAR *
-fill_padding(STRINGLIB_CHAR *p, Py_ssize_t nchars, STRINGLIB_CHAR fill_char,
-             Py_ssize_t n_lpadding, Py_ssize_t n_rpadding)
-{
-    /* Pad on left. */
-    if (n_lpadding)
-        STRINGLIB_FILL(p, fill_char, n_lpadding);
-
-    /* Pad on right. */
-    if (n_rpadding)
-        STRINGLIB_FILL(p + nchars + n_lpadding, fill_char, n_rpadding);
-
-    /* Pointer to the user content. */
-    return p + n_lpadding;
-}
-
-#if defined FORMAT_FLOAT || defined FORMAT_LONG || defined FORMAT_COMPLEX
-/************************************************************************/
-/*********** common routines for numeric formatting *********************/
-/************************************************************************/
-
-/* Locale type codes. */
-#define LT_CURRENT_LOCALE 0
-#define LT_DEFAULT_LOCALE 1
-#define LT_NO_LOCALE 2
-
-/* Locale info needed for formatting integers and the part of floats
-   before and including the decimal. Note that locales only support
-   8-bit chars, not unicode. */
-typedef struct {
-    char *decimal_point;
-    char *thousands_sep;
-    char *grouping;
-} LocaleInfo;
-
-/* describes the layout for an integer, see the comment in
-   calc_number_widths() for details */
-typedef struct {
-    Py_ssize_t n_lpadding;
-    Py_ssize_t n_prefix;
-    Py_ssize_t n_spadding;
-    Py_ssize_t n_rpadding;
-    char sign;
-    Py_ssize_t n_sign;      /* number of digits needed for sign (0/1) */
-    Py_ssize_t n_grouped_digits; /* Space taken up by the digits, including
-                                    any grouping chars. */
-    Py_ssize_t n_decimal;   /* 0 if only an integer */
-    Py_ssize_t n_remainder; /* Digits in decimal and/or exponent part,
-                               excluding the decimal itself, if
-                               present. */
-
-    /* These 2 are not the widths of fields, but are needed by
-       STRINGLIB_GROUPING. */
-    Py_ssize_t n_digits;    /* The number of digits before a decimal
-                               or exponent. */
-    Py_ssize_t n_min_width; /* The min_width we used when we computed
-                               the n_grouped_digits width. */
-} NumberFieldWidths;
-
-
-/* Given a number of the form:
-   digits[remainder]
-   where ptr points to the start and end points to the end, find where
-    the integer part ends. This could be a decimal, an exponent, both,
-    or neither.
-   If a decimal point is present, set *has_decimal and increment
-    remainder beyond it.
-   Results are undefined (but shouldn't crash) for improperly
-    formatted strings.
-*/
-static void
-parse_number(STRINGLIB_CHAR *ptr, Py_ssize_t len,
-             Py_ssize_t *n_remainder, int *has_decimal)
-{
-    STRINGLIB_CHAR *end = ptr + len;
-    STRINGLIB_CHAR *remainder;
-
-    while (ptr<end && isdigit(*ptr))
-        ++ptr;
-    remainder = ptr;
-
-    /* Does remainder start with a decimal point? */
-    *has_decimal = ptr<end && *remainder == '.';
-
-    /* Skip the decimal point. */
-    if (*has_decimal)
-        remainder++;
-
-    *n_remainder = end - remainder;
-}
-
-/* not all fields of format are used.  for example, precision is
-   unused.  should this take discrete params in order to be more clear
-   about what it does?  or is passing a single format parameter easier
-   and more efficient enough to justify a little obfuscation? */
-static Py_ssize_t
-calc_number_widths(NumberFieldWidths *spec, Py_ssize_t n_prefix,
-                   STRINGLIB_CHAR sign_char, STRINGLIB_CHAR *number,
-                   Py_ssize_t n_number, Py_ssize_t n_remainder,
-                   int has_decimal, const LocaleInfo *locale,
-                   const InternalFormatSpec *format)
-{
-    Py_ssize_t n_non_digit_non_padding;
-    Py_ssize_t n_padding;
-
-    spec->n_digits = n_number - n_remainder - (has_decimal?1:0);
-    spec->n_lpadding = 0;
-    spec->n_prefix = n_prefix;
-    spec->n_decimal = has_decimal ? strlen(locale->decimal_point) : 0;
-    spec->n_remainder = n_remainder;
-    spec->n_spadding = 0;
-    spec->n_rpadding = 0;
-    spec->sign = '\0';
-    spec->n_sign = 0;
-
-    /* the output will look like:
-       |                                                                                         |
-       | <lpadding> <sign> <prefix> <spadding> <grouped_digits> <decimal> <remainder> <rpadding> |
-       |                                                                                         |
-
-       sign is computed from format->sign and the actual
-       sign of the number
-
-       prefix is given (it's for the '0x' prefix)
-
-       digits is already known
-
-       the total width is either given, or computed from the
-       actual digits
-
-       only one of lpadding, spadding, and rpadding can be non-zero,
-       and it's calculated from the width and other fields
-    */
-
-    /* compute the various parts we're going to write */
-    switch (format->sign) {
-    case '+':
-        /* always put a + or - */
-        spec->n_sign = 1;
-        spec->sign = (sign_char == '-' ? '-' : '+');
-        break;
-    case ' ':
-        spec->n_sign = 1;
-        spec->sign = (sign_char == '-' ? '-' : ' ');
-        break;
-    default:
-        /* Not specified, or the default (-) */
-        if (sign_char == '-') {
-            spec->n_sign = 1;
-            spec->sign = '-';
-        }
-    }
-
-    /* The number of chars used for non-digits and non-padding. */
-    n_non_digit_non_padding = spec->n_sign + spec->n_prefix + spec->n_decimal +
-        spec->n_remainder;
-
-    /* min_width can go negative, that's okay. format->width == -1 means
-       we don't care. */
-    if (format->fill_char == '0' && format->align == '=')
-        spec->n_min_width = format->width - n_non_digit_non_padding;
-    else
-        spec->n_min_width = 0;
-
-    if (spec->n_digits == 0)
-        /* This case only occurs when using 'c' formatting, we need
-           to special case it because the grouping code always wants
-           to have at least one character. */
-        spec->n_grouped_digits = 0;
-    else
-        spec->n_grouped_digits = STRINGLIB_GROUPING(NULL, 0, NULL,
-                                                    spec->n_digits,
-                                                    spec->n_min_width,
-                                                    locale->grouping,
-                                                    locale->thousands_sep);
-
-    /* Given the desired width and the total of digit and non-digit
-       space we consume, see if we need any padding. format->width can
-       be negative (meaning no padding), but this code still works in
-       that case. */
-    n_padding = format->width -
-                        (n_non_digit_non_padding + spec->n_grouped_digits);
-    if (n_padding > 0) {
-        /* Some padding is needed. Determine if it's left, space, or right. */
-        switch (format->align) {
-        case '<':
-            spec->n_rpadding = n_padding;
-            break;
-        case '^':
-            spec->n_lpadding = n_padding / 2;
-            spec->n_rpadding = n_padding - spec->n_lpadding;
-            break;
-        case '=':
-            spec->n_spadding = n_padding;
-            break;
-        case '>':
-            spec->n_lpadding = n_padding;
-            break;
-        default:
-            /* Shouldn't get here, but treat it as '>' */
-            spec->n_lpadding = n_padding;
-            assert(0);
-            break;
-        }
-    }
-    return spec->n_lpadding + spec->n_sign + spec->n_prefix +
-        spec->n_spadding + spec->n_grouped_digits + spec->n_decimal +
-        spec->n_remainder + spec->n_rpadding;
-}
-
-/* Fill in the digit parts of a numbers's string representation,
-   as determined in calc_number_widths().
-   No error checking, since we know the buffer is the correct size. */
-static void
-fill_number(STRINGLIB_CHAR *buf, const NumberFieldWidths *spec,
-            STRINGLIB_CHAR *digits, Py_ssize_t n_digits,
-            STRINGLIB_CHAR *prefix, STRINGLIB_CHAR fill_char,
-            LocaleInfo *locale, int toupper)
-{
-    /* Used to keep track of digits, decimal, and remainder. */
-    STRINGLIB_CHAR *p = digits;
-
-#ifndef NDEBUG
-    Py_ssize_t r;
-#endif
-
-    if (spec->n_lpadding) {
-        STRINGLIB_FILL(buf, fill_char, spec->n_lpadding);
-        buf += spec->n_lpadding;
-    }
-    if (spec->n_sign == 1) {
-        *buf++ = spec->sign;
-    }
-    if (spec->n_prefix) {
-        memmove(buf,
-                prefix,
-                spec->n_prefix * sizeof(STRINGLIB_CHAR));
-        if (toupper) {
-            Py_ssize_t t;
-            for (t = 0; t < spec->n_prefix; ++t)
-                buf[t] = STRINGLIB_TOUPPER(buf[t]);
-        }
-        buf += spec->n_prefix;
-    }
-    if (spec->n_spadding) {
-        STRINGLIB_FILL(buf, fill_char, spec->n_spadding);
-        buf += spec->n_spadding;
-    }
-
-    /* Only for type 'c' special case, it has no digits. */
-    if (spec->n_digits != 0) {
-        /* Fill the digits with InsertThousandsGrouping. */
-#ifndef NDEBUG
-        r =
-#endif
-            STRINGLIB_GROUPING(buf, spec->n_grouped_digits, digits,
-                               spec->n_digits, spec->n_min_width,
-                               locale->grouping, locale->thousands_sep);
-#ifndef NDEBUG
-        assert(r == spec->n_grouped_digits);
-#endif
-        p += spec->n_digits;
-    }
-    if (toupper) {
-        Py_ssize_t t;
-        for (t = 0; t < spec->n_grouped_digits; ++t)
-            buf[t] = STRINGLIB_TOUPPER(buf[t]);
-    }
-    buf += spec->n_grouped_digits;
-
-    if (spec->n_decimal) {
-        Py_ssize_t t;
-        for (t = 0; t < spec->n_decimal; ++t)
-            buf[t] = locale->decimal_point[t];
-        buf += spec->n_decimal;
-        p += 1;
-    }
-
-    if (spec->n_remainder) {
-        memcpy(buf, p, spec->n_remainder * sizeof(STRINGLIB_CHAR));
-        buf += spec->n_remainder;
-        p += spec->n_remainder;
-    }
-
-    if (spec->n_rpadding) {
-        STRINGLIB_FILL(buf, fill_char, spec->n_rpadding);
-        buf += spec->n_rpadding;
-    }
-}
-
-static char no_grouping[1] = {CHAR_MAX};
-
-/* Find the decimal point character(s?), thousands_separator(s?), and
-   grouping description, either for the current locale if type is
-   LT_CURRENT_LOCALE, a hard-coded locale if LT_DEFAULT_LOCALE, or
-   none if LT_NO_LOCALE. */
-static void
-get_locale_info(int type, LocaleInfo *locale_info)
-{
-    switch (type) {
-    case LT_CURRENT_LOCALE: {
-        struct lconv *locale_data = localeconv();
-        locale_info->decimal_point = locale_data->decimal_point;
-        locale_info->thousands_sep = locale_data->thousands_sep;
-        locale_info->grouping = locale_data->grouping;
-        break;
-    }
-    case LT_DEFAULT_LOCALE:
-        locale_info->decimal_point = ".";
-        locale_info->thousands_sep = ",";
-        locale_info->grouping = "\3"; /* Group every 3 characters.  The
-                                         (implicit) trailing 0 means repeat
-                                         infinitely. */
-        break;
-    case LT_NO_LOCALE:
-        locale_info->decimal_point = ".";
-        locale_info->thousands_sep = "";
-        locale_info->grouping = no_grouping;
-        break;
-    default:
-        assert(0);
-    }
-}
-
-#endif /* FORMAT_FLOAT || FORMAT_LONG || FORMAT_COMPLEX */
-
-/************************************************************************/
-/*********** string formatting ******************************************/
-/************************************************************************/
-
-static PyObject *
-format_string_internal(PyObject *value, const InternalFormatSpec *format)
-{
-    Py_ssize_t lpad;
-    Py_ssize_t rpad;
-    Py_ssize_t total;
-    STRINGLIB_CHAR *p;
-    Py_ssize_t len = STRINGLIB_LEN(value);
-    PyObject *result = NULL;
-
-    /* sign is not allowed on strings */
-    if (format->sign != '\0') {
-        PyErr_SetString(PyExc_ValueError,
-                        "Sign not allowed in string format specifier");
-        goto done;
-    }
-
-    /* alternate is not allowed on strings */
-    if (format->alternate) {
-        PyErr_SetString(PyExc_ValueError,
-                        "Alternate form (#) not allowed in string format "
-                        "specifier");
-        goto done;
-    }
-
-    /* '=' alignment not allowed on strings */
-    if (format->align == '=') {
-        PyErr_SetString(PyExc_ValueError,
-                        "'=' alignment not allowed "
-                        "in string format specifier");
-        goto done;
-    }
-
-    /* if precision is specified, output no more that format.precision
-       characters */
-    if (format->precision >= 0 && len >= format->precision) {
-        len = format->precision;
-    }
-
-    calc_padding(len, format->width, format->align, &lpad, &rpad, &total);
-
-    /* allocate the resulting string */
-    result = STRINGLIB_NEW(NULL, total);
-    if (result == NULL)
-        goto done;
-
-    /* Write into that space. First the padding. */
-    p = fill_padding(STRINGLIB_STR(result), len,
-                     format->fill_char=='\0'?' ':format->fill_char,
-                     lpad, rpad);
-
-    /* Then the source string. */
-    memcpy(p, STRINGLIB_STR(value), len * sizeof(STRINGLIB_CHAR));
-
-done:
-    return result;
-}
-
-
-/************************************************************************/
-/*********** long formatting ********************************************/
-/************************************************************************/
-
-#if defined FORMAT_LONG || defined FORMAT_INT
-typedef PyObject*
-(*IntOrLongToString)(PyObject *value, int base);
-
-static PyObject *
-format_int_or_long_internal(PyObject *value, const InternalFormatSpec *format,
-                            IntOrLongToString tostring)
-{
-    PyObject *result = NULL;
-    PyObject *tmp = NULL;
-    STRINGLIB_CHAR *pnumeric_chars;
-    STRINGLIB_CHAR numeric_char;
-    STRINGLIB_CHAR sign_char = '\0';
-    Py_ssize_t n_digits;       /* count of digits need from the computed
-                                  string */
-    Py_ssize_t n_remainder = 0; /* Used only for 'c' formatting, which
-                                   produces non-digits */
-    Py_ssize_t n_prefix = 0;   /* Count of prefix chars, (e.g., '0x') */
-    Py_ssize_t n_total;
-    STRINGLIB_CHAR *prefix = NULL;
-    NumberFieldWidths spec;
-    long x;
-
-    /* Locale settings, either from the actual locale or
-       from a hard-code pseudo-locale */
-    LocaleInfo locale;
-
-    /* no precision allowed on integers */
-    if (format->precision != -1) {
-        PyErr_SetString(PyExc_ValueError,
-                        "Precision not allowed in integer format specifier");
-        goto done;
-    }
-
-    /* special case for character formatting */
-    if (format->type == 'c') {
-        /* error to specify a sign */
-        if (format->sign != '\0') {
-            PyErr_SetString(PyExc_ValueError,
-                            "Sign not allowed with integer"
-                            " format specifier 'c'");
-            goto done;
-        }
-
-        /* Error to specify a comma. */
-        if (format->thousands_separators) {
-            PyErr_SetString(PyExc_ValueError,
-                            "Thousands separators not allowed with integer"
-                            " format specifier 'c'");
-            goto done;
-        }
-
-        /* taken from unicodeobject.c formatchar() */
-        /* Integer input truncated to a character */
-/* XXX: won't work for int */
-        x = PyLong_AsLong(value);
-        if (x == -1 && PyErr_Occurred())
-            goto done;
-#ifdef Py_UNICODE_WIDE
-        if (x < 0 || x > 0x10ffff) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "%c arg not in range(0x110000) "
-                            "(wide Python build)");
-            goto done;
-        }
-#else
-        if (x < 0 || x > 0xffff) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "%c arg not in range(0x10000) "
-                            "(narrow Python build)");
-            goto done;
-        }
-#endif
-        numeric_char = (STRINGLIB_CHAR)x;
-        pnumeric_chars = &numeric_char;
-        n_digits = 1;
-
-        /* As a sort-of hack, we tell calc_number_widths that we only
-           have "remainder" characters. calc_number_widths thinks
-           these are characters that don't get formatted, only copied
-           into the output string. We do this for 'c' formatting,
-           because the characters are likely to be non-digits. */
-        n_remainder = 1;
-    }
-    else {
-        int base;
-        int leading_chars_to_skip = 0;  /* Number of characters added by
-                                           PyNumber_ToBase that we want to
-                                           skip over. */
-
-        /* Compute the base and how many characters will be added by
-           PyNumber_ToBase */
-        switch (format->type) {
-        case 'b':
-            base = 2;
-            leading_chars_to_skip = 2; /* 0b */
-            break;
-        case 'o':
-            base = 8;
-            leading_chars_to_skip = 2; /* 0o */
-            break;
-        case 'x':
-        case 'X':
-            base = 16;
-            leading_chars_to_skip = 2; /* 0x */
-            break;
-        default:  /* shouldn't be needed, but stops a compiler warning */
-        case 'd':
-        case 'n':
-            base = 10;
-            break;
-        }
-
-        /* The number of prefix chars is the same as the leading
-           chars to skip */
-        if (format->alternate)
-            n_prefix = leading_chars_to_skip;
-
-        /* Do the hard part, converting to a string in a given base */
-        tmp = tostring(value, base);
-        if (tmp == NULL)
-            goto done;
-
-        pnumeric_chars = STRINGLIB_STR(tmp);
-        n_digits = STRINGLIB_LEN(tmp);
-
-        prefix = pnumeric_chars;
-
-        /* Remember not to modify what pnumeric_chars points to.  it
-           might be interned.  Only modify it after we copy it into a
-           newly allocated output buffer. */
-
-        /* Is a sign character present in the output?  If so, remember it
-           and skip it */
-        if (pnumeric_chars[0] == '-') {
-            sign_char = pnumeric_chars[0];
-            ++prefix;
-            ++leading_chars_to_skip;
-        }
-
-        /* Skip over the leading chars (0x, 0b, etc.) */
-        n_digits -= leading_chars_to_skip;
-        pnumeric_chars += leading_chars_to_skip;
-    }
-
-    /* Determine the grouping, separator, and decimal point, if any. */
-    get_locale_info(format->type == 'n' ? LT_CURRENT_LOCALE :
-                    (format->thousands_separators ?
-                     LT_DEFAULT_LOCALE :
-                     LT_NO_LOCALE),
-                    &locale);
-
-    /* Calculate how much memory we'll need. */
-    n_total = calc_number_widths(&spec, n_prefix, sign_char, pnumeric_chars,
-                       n_digits, n_remainder, 0, &locale, format);
-
-    /* Allocate the memory. */
-    result = STRINGLIB_NEW(NULL, n_total);
-    if (!result)
-        goto done;
-
-    /* Populate the memory. */
-    fill_number(STRINGLIB_STR(result), &spec, pnumeric_chars, n_digits,
-                prefix, format->fill_char == '\0' ? ' ' : format->fill_char,
-                &locale, format->type == 'X');
-
-done:
-    Py_XDECREF(tmp);
-    return result;
-}
-#endif /* defined FORMAT_LONG || defined FORMAT_INT */
-
-/************************************************************************/
-/*********** float formatting *******************************************/
-/************************************************************************/
-
-#ifdef FORMAT_FLOAT
-#if STRINGLIB_IS_UNICODE
-static void
-strtounicode(Py_UNICODE *buffer, const char *charbuffer, Py_ssize_t len)
-{
-    Py_ssize_t i;
-    for (i = 0; i < len; ++i)
-        buffer[i] = (Py_UNICODE)charbuffer[i];
-}
-#endif
-
-/* much of this is taken from unicodeobject.c */
-static PyObject *
-format_float_internal(PyObject *value,
-                      const InternalFormatSpec *format)
-{
-    char *buf = NULL;       /* buffer returned from PyOS_double_to_string */
-    Py_ssize_t n_digits;
-    Py_ssize_t n_remainder;
-    Py_ssize_t n_total;
-    int has_decimal;
-    double val;
-    Py_ssize_t precision = format->precision;
-    Py_ssize_t default_precision = 6;
-    STRINGLIB_CHAR type = format->type;
-    int add_pct = 0;
-    STRINGLIB_CHAR *p;
-    NumberFieldWidths spec;
-    int flags = 0;
-    PyObject *result = NULL;
-    STRINGLIB_CHAR sign_char = '\0';
-    int float_type; /* Used to see if we have a nan, inf, or regular float. */
-
-#if STRINGLIB_IS_UNICODE
-    Py_UNICODE *unicode_tmp = NULL;
-#endif
-
-    /* Locale settings, either from the actual locale or
-       from a hard-code pseudo-locale */
-    LocaleInfo locale;
-
-    /* Alternate is not allowed on floats. */
-    if (format->alternate) {
-        PyErr_SetString(PyExc_ValueError,
-                        "Alternate form (#) not allowed in float format "
-                        "specifier");
-        goto done;
-    }
-
-    if (type == '\0') {
-        /* Omitted type specifier. This is like 'g' but with at least one
-           digit after the decimal point, and different default precision.*/
-        type = 'g';
-        default_precision = PyFloat_STR_PRECISION;
-        flags |= Py_DTSF_ADD_DOT_0;
-    }
-
-    if (type == 'n')
-        /* 'n' is the same as 'g', except for the locale used to
-           format the result. We take care of that later. */
-        type = 'g';
-
-    val = PyFloat_AsDouble(value);
-    if (val == -1.0 && PyErr_Occurred())
-        goto done;
-
-    if (type == '%') {
-        type = 'f';
-        val *= 100;
-        add_pct = 1;
-    }
-
-    if (precision < 0)
-        precision = default_precision;
-
-    /* Cast "type", because if we're in unicode we need to pass a
-       8-bit char. This is safe, because we've restricted what "type"
-       can be. */
-    buf = PyOS_double_to_string(val, (char)type, precision, flags,
-                                &float_type);
-    if (buf == NULL)
-        goto done;
-    n_digits = strlen(buf);
-
-    if (add_pct) {
-        /* We know that buf has a trailing zero (since we just called
-           strlen() on it), and we don't use that fact any more. So we
-           can just write over the trailing zero. */
-        buf[n_digits] = '%';
-        n_digits += 1;
-    }
-
-    /* Since there is no unicode version of PyOS_double_to_string,
-       just use the 8 bit version and then convert to unicode. */
-#if STRINGLIB_IS_UNICODE
-    unicode_tmp = (Py_UNICODE*)PyMem_Malloc((n_digits)*sizeof(Py_UNICODE));
-    if (unicode_tmp == NULL) {
-        PyErr_NoMemory();
-        goto done;
-    }
-    strtounicode(unicode_tmp, buf, n_digits);
-    p = unicode_tmp;
-#else
-    p = buf;
-#endif
-
-    /* Is a sign character present in the output?  If so, remember it
-       and skip it */
-    if (*p == '-') {
-        sign_char = *p;
-        ++p;
-        --n_digits;
-    }
-
-    /* Determine if we have any "remainder" (after the digits, might include
-       decimal or exponent or both (or neither)) */
-    parse_number(p, n_digits, &n_remainder, &has_decimal);
-
-    /* Determine the grouping, separator, and decimal point, if any. */
-    get_locale_info(format->type == 'n' ? LT_CURRENT_LOCALE :
-                    (format->thousands_separators ?
-                     LT_DEFAULT_LOCALE :
-                     LT_NO_LOCALE),
-                    &locale);
-
-    /* Calculate how much memory we'll need. */
-    n_total = calc_number_widths(&spec, 0, sign_char, p, n_digits,
-                                 n_remainder, has_decimal, &locale, format);
-
-    /* Allocate the memory. */
-    result = STRINGLIB_NEW(NULL, n_total);
-    if (result == NULL)
-        goto done;
-
-    /* Populate the memory. */
-    fill_number(STRINGLIB_STR(result), &spec, p, n_digits, NULL,
-                format->fill_char == '\0' ? ' ' : format->fill_char, &locale,
-                0);
-
-done:
-    PyMem_Free(buf);
-#if STRINGLIB_IS_UNICODE
-    PyMem_Free(unicode_tmp);
-#endif
-    return result;
-}
-#endif /* FORMAT_FLOAT */
-
-/************************************************************************/
-/*********** complex formatting *****************************************/
-/************************************************************************/
-
-#ifdef FORMAT_COMPLEX
-
-static PyObject *
-format_complex_internal(PyObject *value,
-                        const InternalFormatSpec *format)
-{
-    double re;
-    double im;
-    char *re_buf = NULL;       /* buffer returned from PyOS_double_to_string */
-    char *im_buf = NULL;       /* buffer returned from PyOS_double_to_string */
-
-    InternalFormatSpec tmp_format = *format;
-    Py_ssize_t n_re_digits;
-    Py_ssize_t n_im_digits;
-    Py_ssize_t n_re_remainder;
-    Py_ssize_t n_im_remainder;
-    Py_ssize_t n_re_total;
-    Py_ssize_t n_im_total;
-    int re_has_decimal;
-    int im_has_decimal;
-    Py_ssize_t precision = format->precision;
-    Py_ssize_t default_precision = 6;
-    STRINGLIB_CHAR type = format->type;
-    STRINGLIB_CHAR *p_re;
-    STRINGLIB_CHAR *p_im;
-    NumberFieldWidths re_spec;
-    NumberFieldWidths im_spec;
-    int flags = 0;
-    PyObject *result = NULL;
-    STRINGLIB_CHAR *p;
-    STRINGLIB_CHAR re_sign_char = '\0';
-    STRINGLIB_CHAR im_sign_char = '\0';
-    int re_float_type; /* Used to see if we have a nan, inf, or regular float. */
-    int im_float_type;
-    int add_parens = 0;
-    int skip_re = 0;
-    Py_ssize_t lpad;
-    Py_ssize_t rpad;
-    Py_ssize_t total;
-
-#if STRINGLIB_IS_UNICODE
-    Py_UNICODE *re_unicode_tmp = NULL;
-    Py_UNICODE *im_unicode_tmp = NULL;
-#endif
-
-    /* Locale settings, either from the actual locale or
-       from a hard-code pseudo-locale */
-    LocaleInfo locale;
-
-    /* Alternate is not allowed on complex. */
-    if (format->alternate) {
-        PyErr_SetString(PyExc_ValueError,
-                        "Alternate form (#) not allowed in complex format "
-                        "specifier");
-        goto done;
-    }
-
-    /* Neither is zero pading. */
-    if (format->fill_char == '0') {
-        PyErr_SetString(PyExc_ValueError,
-                        "Zero padding is not allowed in complex format "
-                        "specifier");
-        goto done;
-    }
-
-    /* Neither is '=' alignment . */
-    if (format->align == '=') {
-        PyErr_SetString(PyExc_ValueError,
-                        "'=' alignment flag is not allowed in complex format "
-                        "specifier");
-        goto done;
-    }
-
-    re = PyComplex_RealAsDouble(value);
-    if (re == -1.0 && PyErr_Occurred())
-        goto done;
-    im = PyComplex_ImagAsDouble(value);
-    if (im == -1.0 && PyErr_Occurred())
-        goto done;
-
-    if (type == '\0') {
-        /* Omitted type specifier. Should be like str(self). */
-        type = 'g';
-        default_precision = PyFloat_STR_PRECISION;
-        if (re == 0.0 && copysign(1.0, re) == 1.0)
-            skip_re = 1;
-        else
-            add_parens = 1;
-    }
-
-    if (type == 'n')
-        /* 'n' is the same as 'g', except for the locale used to
-           format the result. We take care of that later. */
-        type = 'g';
-
-    if (precision < 0)
-        precision = default_precision;
-
-    /* Cast "type", because if we're in unicode we need to pass a
-       8-bit char. This is safe, because we've restricted what "type"
-       can be. */
-    re_buf = PyOS_double_to_string(re, (char)type, precision, flags,
-                                   &re_float_type);
-    if (re_buf == NULL)
-        goto done;
-    im_buf = PyOS_double_to_string(im, (char)type, precision, flags,
-                                   &im_float_type);
-    if (im_buf == NULL)
-        goto done;
-
-    n_re_digits = strlen(re_buf);
-    n_im_digits = strlen(im_buf);
-
-    /* Since there is no unicode version of PyOS_double_to_string,
-       just use the 8 bit version and then convert to unicode. */
-#if STRINGLIB_IS_UNICODE
-    re_unicode_tmp = (Py_UNICODE*)PyMem_Malloc((n_re_digits)*sizeof(Py_UNICODE));
-    if (re_unicode_tmp == NULL) {
-        PyErr_NoMemory();
-        goto done;
-    }
-    strtounicode(re_unicode_tmp, re_buf, n_re_digits);
-    p_re = re_unicode_tmp;
-
-    im_unicode_tmp = (Py_UNICODE*)PyMem_Malloc((n_im_digits)*sizeof(Py_UNICODE));
-    if (im_unicode_tmp == NULL) {
-        PyErr_NoMemory();
-        goto done;
-    }
-    strtounicode(im_unicode_tmp, im_buf, n_im_digits);
-    p_im = im_unicode_tmp;
-#else
-    p_re = re_buf;
-    p_im = im_buf;
-#endif
-
-    /* Is a sign character present in the output?  If so, remember it
-       and skip it */
-    if (*p_re == '-') {
-        re_sign_char = *p_re;
-        ++p_re;
-        --n_re_digits;
-    }
-    if (*p_im == '-') {
-        im_sign_char = *p_im;
-        ++p_im;
-        --n_im_digits;
-    }
-
-    /* Determine if we have any "remainder" (after the digits, might include
-       decimal or exponent or both (or neither)) */
-    parse_number(p_re, n_re_digits, &n_re_remainder, &re_has_decimal);
-    parse_number(p_im, n_im_digits, &n_im_remainder, &im_has_decimal);
-
-    /* Determine the grouping, separator, and decimal point, if any. */
-    get_locale_info(format->type == 'n' ? LT_CURRENT_LOCALE :
-                    (format->thousands_separators ?
-                     LT_DEFAULT_LOCALE :
-                     LT_NO_LOCALE),
-                    &locale);
-
-    /* Turn off any padding. We'll do it later after we've composed
-       the numbers without padding. */
-    tmp_format.fill_char = '\0';
-    tmp_format.align = '<';
-    tmp_format.width = -1;
-
-    /* Calculate how much memory we'll need. */
-    n_re_total = calc_number_widths(&re_spec, 0, re_sign_char, p_re,
-                                    n_re_digits, n_re_remainder,
-                                    re_has_decimal, &locale, &tmp_format);
-
-    /* Same formatting, but always include a sign, unless the real part is
-     * going to be omitted, in which case we use whatever sign convention was
-     * requested by the original format. */
-    if (!skip_re)
-        tmp_format.sign = '+';
-    n_im_total = calc_number_widths(&im_spec, 0, im_sign_char, p_im,
-                                    n_im_digits, n_im_remainder,
-                                    im_has_decimal, &locale, &tmp_format);
-
-    if (skip_re)
-        n_re_total = 0;
-
-    /* Add 1 for the 'j', and optionally 2 for parens. */
-    calc_padding(n_re_total + n_im_total + 1 + add_parens * 2,
-                 format->width, format->align, &lpad, &rpad, &total);
-
-    result = STRINGLIB_NEW(NULL, total);
-    if (result == NULL)
-        goto done;
-
-    /* Populate the memory. First, the padding. */
-    p = fill_padding(STRINGLIB_STR(result),
-                     n_re_total + n_im_total + 1 + add_parens * 2,
-                     format->fill_char=='\0' ? ' ' : format->fill_char,
-                     lpad, rpad);
-
-    if (add_parens)
-        *p++ = '(';
-
-    if (!skip_re) {
-        fill_number(p, &re_spec, p_re, n_re_digits, NULL, 0, &locale, 0);
-        p += n_re_total;
-    }
-    fill_number(p, &im_spec, p_im, n_im_digits, NULL, 0, &locale, 0);
-    p += n_im_total;
-    *p++ = 'j';
-
-    if (add_parens)
-        *p++ = ')';
-
-done:
-    PyMem_Free(re_buf);
-    PyMem_Free(im_buf);
-#if STRINGLIB_IS_UNICODE
-    PyMem_Free(re_unicode_tmp);
-    PyMem_Free(im_unicode_tmp);
-#endif
-    return result;
-}
-#endif /* FORMAT_COMPLEX */
-
-/************************************************************************/
-/*********** built in formatters ****************************************/
-/************************************************************************/
-PyObject *
-FORMAT_STRING(PyObject *obj,
-              STRINGLIB_CHAR *format_spec,
-              Py_ssize_t format_spec_len)
-{
-    InternalFormatSpec format;
-    PyObject *result = NULL;
-
-    /* check for the special case of zero length format spec, make
-       it equivalent to str(obj) */
-    if (format_spec_len == 0) {
-        result = STRINGLIB_TOSTR(obj);
-        goto done;
-    }
-
-    /* parse the format_spec */
-    if (!parse_internal_render_format_spec(format_spec, format_spec_len,
-                                           &format, 's', '<'))
-        goto done;
-
-    /* type conversion? */
-    switch (format.type) {
-    case 's':
-        /* no type conversion needed, already a string.  do the formatting */
-        result = format_string_internal(obj, &format);
-        break;
-    default:
-        /* unknown */
-        unknown_presentation_type(format.type, obj->ob_type->tp_name);
-        goto done;
-    }
-
-done:
-    return result;
-}
-
-#if defined FORMAT_LONG || defined FORMAT_INT
-static PyObject*
-format_int_or_long(PyObject* obj,
-                   STRINGLIB_CHAR *format_spec,
-                   Py_ssize_t format_spec_len,
-                   IntOrLongToString tostring)
-{
-    PyObject *result = NULL;
-    PyObject *tmp = NULL;
-    InternalFormatSpec format;
-
-    /* check for the special case of zero length format spec, make
-       it equivalent to str(obj) */
-    if (format_spec_len == 0) {
-        result = STRINGLIB_TOSTR(obj);
-        goto done;
-    }
-
-    /* parse the format_spec */
-    if (!parse_internal_render_format_spec(format_spec,
-                                           format_spec_len,
-                                           &format, 'd', '>'))
-        goto done;
-
-    /* type conversion? */
-    switch (format.type) {
-    case 'b':
-    case 'c':
-    case 'd':
-    case 'o':
-    case 'x':
-    case 'X':
-    case 'n':
-        /* no type conversion needed, already an int (or long).  do
-           the formatting */
-            result = format_int_or_long_internal(obj, &format, tostring);
-        break;
-
-    case 'e':
-    case 'E':
-    case 'f':
-    case 'F':
-    case 'g':
-    case 'G':
-    case '%':
-        /* convert to float */
-        tmp = PyNumber_Float(obj);
-        if (tmp == NULL)
-            goto done;
-        result = format_float_internal(tmp, &format);
-        break;
-
-    default:
-        /* unknown */
-        unknown_presentation_type(format.type, obj->ob_type->tp_name);
-        goto done;
-    }
-
-done:
-    Py_XDECREF(tmp);
-    return result;
-}
-#endif /* FORMAT_LONG || defined FORMAT_INT */
-
-#ifdef FORMAT_LONG
-/* Need to define long_format as a function that will convert a long
-   to a string.  In 3.0, _PyLong_Format has the correct signature.  In
-   2.x, we need to fudge a few parameters */
-#if PY_VERSION_HEX >= 0x03000000
-#define long_format _PyLong_Format
-#else
-static PyObject*
-long_format(PyObject* value, int base)
-{
-    /* Convert to base, don't add trailing 'L', and use the new octal
-       format. We already know this is a long object */
-    assert(PyLong_Check(value));
-    /* convert to base, don't add 'L', and use the new octal format */
-    return _PyLong_Format(value, base, 0, 1);
-}
-#endif
-
-PyObject *
-FORMAT_LONG(PyObject *obj,
-            STRINGLIB_CHAR *format_spec,
-            Py_ssize_t format_spec_len)
-{
-    return format_int_or_long(obj, format_spec, format_spec_len,
-                              long_format);
-}
-#endif /* FORMAT_LONG */
-
-#ifdef FORMAT_INT
-/* this is only used for 2.x, not 3.0 */
-static PyObject*
-int_format(PyObject* value, int base)
-{
-    /* Convert to base, and use the new octal format. We already
-       know this is an int object */
-    assert(PyInt_Check(value));
-    return _PyInt_Format((PyIntObject*)value, base, 1);
-}
-
-PyObject *
-FORMAT_INT(PyObject *obj,
-           STRINGLIB_CHAR *format_spec,
-           Py_ssize_t format_spec_len)
-{
-    return format_int_or_long(obj, format_spec, format_spec_len,
-                              int_format);
-}
-#endif /* FORMAT_INT */
-
-#ifdef FORMAT_FLOAT
-PyObject *
-FORMAT_FLOAT(PyObject *obj,
-             STRINGLIB_CHAR *format_spec,
-             Py_ssize_t format_spec_len)
-{
-    PyObject *result = NULL;
-    InternalFormatSpec format;
-
-    /* check for the special case of zero length format spec, make
-       it equivalent to str(obj) */
-    if (format_spec_len == 0) {
-        result = STRINGLIB_TOSTR(obj);
-        goto done;
-    }
-
-    /* parse the format_spec */
-    if (!parse_internal_render_format_spec(format_spec,
-                                           format_spec_len,
-                                           &format, '\0', '>'))
-        goto done;
-
-    /* type conversion? */
-    switch (format.type) {
-    case '\0': /* No format code: like 'g', but with at least one decimal. */
-    case 'e':
-    case 'E':
-    case 'f':
-    case 'F':
-    case 'g':
-    case 'G':
-    case 'n':
-    case '%':
-        /* no conversion, already a float.  do the formatting */
-        result = format_float_internal(obj, &format);
-        break;
-
-    default:
-        /* unknown */
-        unknown_presentation_type(format.type, obj->ob_type->tp_name);
-        goto done;
-    }
-
-done:
-    return result;
-}
-#endif /* FORMAT_FLOAT */
-
-#ifdef FORMAT_COMPLEX
-PyObject *
-FORMAT_COMPLEX(PyObject *obj,
-               STRINGLIB_CHAR *format_spec,
-               Py_ssize_t format_spec_len)
-{
-    PyObject *result = NULL;
-    InternalFormatSpec format;
-
-    /* check for the special case of zero length format spec, make
-       it equivalent to str(obj) */
-    if (format_spec_len == 0) {
-        result = STRINGLIB_TOSTR(obj);
-        goto done;
-    }
-
-    /* parse the format_spec */
-    if (!parse_internal_render_format_spec(format_spec,
-                                           format_spec_len,
-                                           &format, '\0', '>'))
-        goto done;
-
-    /* type conversion? */
-    switch (format.type) {
-    case '\0': /* No format code: like 'g', but with at least one decimal. */
-    case 'e':
-    case 'E':
-    case 'f':
-    case 'F':
-    case 'g':
-    case 'G':
-    case 'n':
-        /* no conversion, already a complex.  do the formatting */
-        result = format_complex_internal(obj, &format);
-        break;
-
-    default:
-        /* unknown */
-        unknown_presentation_type(format.type, obj->ob_type->tp_name);
-        goto done;
-    }
-
-done:
-    return result;
-}
-#endif /* FORMAT_COMPLEX */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/localeutil.h b/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/localeutil.h
deleted file mode 100644
index 45c980c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/localeutil.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/** @file
-    stringlib: locale related helpers implementation.
-
-    Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-
-#ifndef STRINGLIB_LOCALEUTIL_H
-#define STRINGLIB_LOCALEUTIL_H
-
-#include <locale.h>
-
-// Prevent conflicts with EFI
-#undef  MAX
-#undef  MIN
-
-#define MAX(x, y) ((x) < (y) ? (y) : (x))
-#define MIN(x, y) ((x) < (y) ? (x) : (y))
-
-typedef struct {
-    const char *grouping;
-    char previous;
-    Py_ssize_t i; /* Where we're currently pointing in grouping. */
-} GroupGenerator;
-
-static void
-_GroupGenerator_init(GroupGenerator *self, const char *grouping)
-{
-    self->grouping = grouping;
-    self->i = 0;
-    self->previous = 0;
-}
-
-/* Returns the next grouping, or 0 to signify end. */
-static Py_ssize_t
-_GroupGenerator_next(GroupGenerator *self)
-{
-    /* Note that we don't really do much error checking here. If a
-       grouping string contains just CHAR_MAX, for example, then just
-       terminate the generator. That shouldn't happen, but at least we
-       fail gracefully. */
-    switch (self->grouping[self->i]) {
-    case 0:
-        return self->previous;
-    case CHAR_MAX:
-        /* Stop the generator. */
-        return 0;
-    default: {
-        char ch = self->grouping[self->i];
-        self->previous = ch;
-        self->i++;
-        return (Py_ssize_t)ch;
-    }
-    }
-}
-
-/* Fill in some digits, leading zeros, and thousands separator. All
-   are optional, depending on when we're called. */
-static void
-fill(STRINGLIB_CHAR **digits_end, STRINGLIB_CHAR **buffer_end,
-     Py_ssize_t n_chars, Py_ssize_t n_zeros, const char* thousands_sep,
-     Py_ssize_t thousands_sep_len)
-{
-#if STRINGLIB_IS_UNICODE
-    Py_ssize_t i;
-#endif
-
-    if (thousands_sep) {
-        *buffer_end -= thousands_sep_len;
-
-        /* Copy the thousands_sep chars into the buffer. */
-#if STRINGLIB_IS_UNICODE
-        /* Convert from the char's of the thousands_sep from
-           the locale into unicode. */
-        for (i = 0; i < thousands_sep_len; ++i)
-            (*buffer_end)[i] = thousands_sep[i];
-#else
-        /* No conversion, just memcpy the thousands_sep. */
-        memcpy(*buffer_end, thousands_sep, thousands_sep_len);
-#endif
-    }
-
-    *buffer_end -= n_chars;
-    *digits_end -= n_chars;
-    memcpy(*buffer_end, *digits_end, n_chars * sizeof(STRINGLIB_CHAR));
-
-    *buffer_end -= n_zeros;
-    STRINGLIB_FILL(*buffer_end, '0', n_zeros);
-}
-
-/**
- * _Py_InsertThousandsGrouping:
- * @buffer: A pointer to the start of a string.
- * @n_buffer: Number of characters in @buffer.
- * @digits: A pointer to the digits we're reading from. If count
- *          is non-NULL, this is unused.
- * @n_digits: The number of digits in the string, in which we want
- *            to put the grouping chars.
- * @min_width: The minimum width of the digits in the output string.
- *             Output will be zero-padded on the left to fill.
- * @grouping: see definition in localeconv().
- * @thousands_sep: see definition in localeconv().
- *
- * There are 2 modes: counting and filling. If @buffer is NULL,
- *  we are in counting mode, else filling mode.
- * If counting, the required buffer size is returned.
- * If filling, we know the buffer will be large enough, so we don't
- *  need to pass in the buffer size.
- * Inserts thousand grouping characters (as defined by grouping and
- *  thousands_sep) into the string between buffer and buffer+n_digits.
- *
- * Return value: 0 on error, else 1.  Note that no error can occur if
- *  count is non-NULL.
- *
- * This name won't be used, the includer of this file should define
- *  it to be the actual function name, based on unicode or string.
- *
- * As closely as possible, this code mimics the logic in decimal.py's
-    _insert_thousands_sep().
- **/
-Py_ssize_t
-_Py_InsertThousandsGrouping(STRINGLIB_CHAR *buffer,
-                            Py_ssize_t n_buffer,
-                            STRINGLIB_CHAR *digits,
-                            Py_ssize_t n_digits,
-                            Py_ssize_t min_width,
-                            const char *grouping,
-                            const char *thousands_sep)
-{
-    Py_ssize_t count = 0;
-    Py_ssize_t n_zeros;
-    int loop_broken = 0;
-    int use_separator = 0; /* First time through, don't append the
-                              separator. They only go between
-                              groups. */
-    STRINGLIB_CHAR *buffer_end = NULL;
-    STRINGLIB_CHAR *digits_end = NULL;
-    Py_ssize_t l;
-    Py_ssize_t n_chars;
-    Py_ssize_t thousands_sep_len = strlen(thousands_sep);
-    Py_ssize_t remaining = n_digits; /* Number of chars remaining to
-                                        be looked at */
-    /* A generator that returns all of the grouping widths, until it
-       returns 0. */
-    GroupGenerator groupgen;
-    _GroupGenerator_init(&groupgen, grouping);
-
-    if (buffer) {
-        buffer_end = buffer + n_buffer;
-        digits_end = digits + n_digits;
-    }
-
-    while ((l = _GroupGenerator_next(&groupgen)) > 0) {
-        l = MIN(l, MAX(MAX(remaining, min_width), 1));
-        n_zeros = MAX(0, l - remaining);
-        n_chars = MAX(0, MIN(remaining, l));
-
-        /* Use n_zero zero's and n_chars chars */
-
-        /* Count only, don't do anything. */
-        count += (use_separator ? thousands_sep_len : 0) + n_zeros + n_chars;
-
-        if (buffer) {
-            /* Copy into the output buffer. */
-            fill(&digits_end, &buffer_end, n_chars, n_zeros,
-                 use_separator ? thousands_sep : NULL, thousands_sep_len);
-        }
-
-        /* Use a separator next time. */
-        use_separator = 1;
-
-        remaining -= n_chars;
-        min_width -= l;
-
-        if (remaining <= 0 && min_width <= 0) {
-            loop_broken = 1;
-            break;
-        }
-        min_width -= thousands_sep_len;
-    }
-    if (!loop_broken) {
-        /* We left the loop without using a break statement. */
-
-        l = MAX(MAX(remaining, min_width), 1);
-        n_zeros = MAX(0, l - remaining);
-        n_chars = MAX(0, MIN(remaining, l));
-
-        /* Use n_zero zero's and n_chars chars */
-        count += (use_separator ? thousands_sep_len : 0) + n_zeros + n_chars;
-        if (buffer) {
-            /* Copy into the output buffer. */
-            fill(&digits_end, &buffer_end, n_chars, n_zeros,
-                 use_separator ? thousands_sep : NULL, thousands_sep_len);
-        }
-    }
-    return count;
-}
-
-/**
- * _Py_InsertThousandsGroupingLocale:
- * @buffer: A pointer to the start of a string.
- * @n_digits: The number of digits in the string, in which we want
- *            to put the grouping chars.
- *
- * Reads thee current locale and calls _Py_InsertThousandsGrouping().
- **/
-Py_ssize_t
-_Py_InsertThousandsGroupingLocale(STRINGLIB_CHAR *buffer,
-                                  Py_ssize_t n_buffer,
-                                  STRINGLIB_CHAR *digits,
-                                  Py_ssize_t n_digits,
-                                  Py_ssize_t min_width)
-{
-        struct lconv *locale_data = localeconv();
-        const char *grouping = locale_data->grouping;
-        const char *thousands_sep = locale_data->thousands_sep;
-
-        return _Py_InsertThousandsGrouping(buffer, n_buffer, digits, n_digits,
-                                           min_width, grouping, thousands_sep);
-}
-#endif /* STRINGLIB_LOCALEUTIL_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/partition.h b/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/partition.h
deleted file mode 100644
index fc07640..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/partition.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/* stringlib: partition implementation */
-
-#ifndef STRINGLIB_PARTITION_H
-#define STRINGLIB_PARTITION_H
-
-#ifndef STRINGLIB_FASTSEARCH_H
-#error must include "stringlib/fastsearch.h" before including this module
-#endif
-
-Py_LOCAL_INLINE(PyObject*)
-stringlib_partition(PyObject* str_obj,
-                    const STRINGLIB_CHAR* str, Py_ssize_t str_len,
-                    PyObject* sep_obj,
-                    const STRINGLIB_CHAR* sep, Py_ssize_t sep_len)
-{
-    PyObject* out;
-    Py_ssize_t pos;
-
-    if (sep_len == 0) {
-        PyErr_SetString(PyExc_ValueError, "empty separator");
-        return NULL;
-    }
-
-    out = PyTuple_New(3);
-    if (!out)
-        return NULL;
-
-    pos = fastsearch(str, str_len, sep, sep_len, -1, FAST_SEARCH);
-
-    if (pos < 0) {
-#if STRINGLIB_MUTABLE
-        PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(str, str_len));
-        PyTuple_SET_ITEM(out, 1, STRINGLIB_NEW(NULL, 0));
-        PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(NULL, 0));
-#else
-        Py_INCREF(str_obj);
-        PyTuple_SET_ITEM(out, 0, (PyObject*) str_obj);
-        Py_INCREF(STRINGLIB_EMPTY);
-        PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY);
-        Py_INCREF(STRINGLIB_EMPTY);
-        PyTuple_SET_ITEM(out, 2, (PyObject*) STRINGLIB_EMPTY);
-#endif
-        return out;
-    }
-
-    PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(str, pos));
-    Py_INCREF(sep_obj);
-    PyTuple_SET_ITEM(out, 1, sep_obj);
-    pos += sep_len;
-    PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(str + pos, str_len - pos));
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(out);
-        return NULL;
-    }
-
-    return out;
-}
-
-Py_LOCAL_INLINE(PyObject*)
-stringlib_rpartition(PyObject* str_obj,
-                     const STRINGLIB_CHAR* str, Py_ssize_t str_len,
-                     PyObject* sep_obj,
-                     const STRINGLIB_CHAR* sep, Py_ssize_t sep_len)
-{
-    PyObject* out;
-    Py_ssize_t pos;
-
-    if (sep_len == 0) {
-        PyErr_SetString(PyExc_ValueError, "empty separator");
-        return NULL;
-    }
-
-    out = PyTuple_New(3);
-    if (!out)
-        return NULL;
-
-    pos = fastsearch(str, str_len, sep, sep_len, -1, FAST_RSEARCH);
-
-    if (pos < 0) {
-#if STRINGLIB_MUTABLE
-        PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(NULL, 0));
-        PyTuple_SET_ITEM(out, 1, STRINGLIB_NEW(NULL, 0));
-        PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(str, str_len));
-#else
-        Py_INCREF(STRINGLIB_EMPTY);
-        PyTuple_SET_ITEM(out, 0, (PyObject*) STRINGLIB_EMPTY);
-        Py_INCREF(STRINGLIB_EMPTY);
-        PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY);
-        Py_INCREF(str_obj);
-        PyTuple_SET_ITEM(out, 2, (PyObject*) str_obj);
-#endif
-        return out;
-    }
-
-    PyTuple_SET_ITEM(out, 0, STRINGLIB_NEW(str, pos));
-    Py_INCREF(sep_obj);
-    PyTuple_SET_ITEM(out, 1, sep_obj);
-    pos += sep_len;
-    PyTuple_SET_ITEM(out, 2, STRINGLIB_NEW(str + pos, str_len - pos));
-
-    if (PyErr_Occurred()) {
-        Py_DECREF(out);
-        return NULL;
-    }
-
-    return out;
-}
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/split.h b/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/split.h
deleted file mode 100644
index 13eb93e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/split.h
+++ /dev/null
@@ -1,394 +0,0 @@
-/* stringlib: split implementation */
-
-#ifndef STRINGLIB_SPLIT_H
-#define STRINGLIB_SPLIT_H
-
-#ifndef STRINGLIB_FASTSEARCH_H
-#error must include "stringlib/fastsearch.h" before including this module
-#endif
-
-/* Overallocate the initial list to reduce the number of reallocs for small
-   split sizes.  Eg, "A A A A A A A A A A".split() (10 elements) has three
-   resizes, to sizes 4, 8, then 16.  Most observed string splits are for human
-   text (roughly 11 words per line) and field delimited data (usually 1-10
-   fields).  For large strings the split algorithms are bandwidth limited
-   so increasing the preallocation likely will not improve things.*/
-
-#define MAX_PREALLOC 12
-
-/* 5 splits gives 6 elements */
-#define PREALLOC_SIZE(maxsplit) \
-    (maxsplit >= MAX_PREALLOC ? MAX_PREALLOC : maxsplit+1)
-
-#define SPLIT_APPEND(data, left, right)         \
-    sub = STRINGLIB_NEW((data) + (left),        \
-                        (right) - (left));      \
-    if (sub == NULL)                            \
-        goto onError;                           \
-    if (PyList_Append(list, sub)) {             \
-        Py_DECREF(sub);                         \
-        goto onError;                           \
-    }                                           \
-    else                                        \
-        Py_DECREF(sub);
-
-#define SPLIT_ADD(data, left, right) {          \
-    sub = STRINGLIB_NEW((data) + (left),        \
-                        (right) - (left));      \
-    if (sub == NULL)                            \
-        goto onError;                           \
-    if (count < MAX_PREALLOC) {                 \
-        PyList_SET_ITEM(list, count, sub);      \
-    } else {                                    \
-        if (PyList_Append(list, sub)) {         \
-            Py_DECREF(sub);                     \
-            goto onError;                       \
-        }                                       \
-        else                                    \
-            Py_DECREF(sub);                     \
-    }                                           \
-    count++; }
-
-
-/* Always force the list to the expected size. */
-#define FIX_PREALLOC_SIZE(list) Py_SIZE(list) = count
-
-Py_LOCAL_INLINE(PyObject *)
-stringlib_split_whitespace(PyObject* str_obj,
-                           const STRINGLIB_CHAR* str, Py_ssize_t str_len,
-                           Py_ssize_t maxcount)
-{
-    Py_ssize_t i, j, count=0;
-    PyObject *list = PyList_New(PREALLOC_SIZE(maxcount));
-    PyObject *sub;
-
-    if (list == NULL)
-        return NULL;
-
-    i = j = 0;
-    while (maxcount-- > 0) {
-        while (i < str_len && STRINGLIB_ISSPACE(str[i]))
-            i++;
-        if (i == str_len) break;
-        j = i; i++;
-        while (i < str_len && !STRINGLIB_ISSPACE(str[i]))
-            i++;
-#ifndef STRINGLIB_MUTABLE
-        if (j == 0 && i == str_len && STRINGLIB_CHECK_EXACT(str_obj)) {
-            /* No whitespace in str_obj, so just use it as list[0] */
-            Py_INCREF(str_obj);
-            PyList_SET_ITEM(list, 0, (PyObject *)str_obj);
-            count++;
-            break;
-        }
-#endif
-        SPLIT_ADD(str, j, i);
-    }
-
-    if (i < str_len) {
-        /* Only occurs when maxcount was reached */
-        /* Skip any remaining whitespace and copy to end of string */
-        while (i < str_len && STRINGLIB_ISSPACE(str[i]))
-            i++;
-        if (i != str_len)
-            SPLIT_ADD(str, i, str_len);
-    }
-    FIX_PREALLOC_SIZE(list);
-    return list;
-
-  onError:
-    Py_DECREF(list);
-    return NULL;
-}
-
-Py_LOCAL_INLINE(PyObject *)
-stringlib_split_char(PyObject* str_obj,
-                     const STRINGLIB_CHAR* str, Py_ssize_t str_len,
-                     const STRINGLIB_CHAR ch,
-                     Py_ssize_t maxcount)
-{
-    Py_ssize_t i, j, count=0;
-    PyObject *list = PyList_New(PREALLOC_SIZE(maxcount));
-    PyObject *sub;
-
-    if (list == NULL)
-        return NULL;
-
-    i = j = 0;
-    while ((j < str_len) && (maxcount-- > 0)) {
-        for(; j < str_len; j++) {
-            /* I found that using memchr makes no difference */
-            if (str[j] == ch) {
-                SPLIT_ADD(str, i, j);
-                i = j = j + 1;
-                break;
-            }
-        }
-    }
-#ifndef STRINGLIB_MUTABLE
-    if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) {
-        /* ch not in str_obj, so just use str_obj as list[0] */
-        Py_INCREF(str_obj);
-        PyList_SET_ITEM(list, 0, (PyObject *)str_obj);
-        count++;
-    } else
-#endif
-    if (i <= str_len) {
-        SPLIT_ADD(str, i, str_len);
-    }
-    FIX_PREALLOC_SIZE(list);
-    return list;
-
-  onError:
-    Py_DECREF(list);
-    return NULL;
-}
-
-Py_LOCAL_INLINE(PyObject *)
-stringlib_split(PyObject* str_obj,
-                const STRINGLIB_CHAR* str, Py_ssize_t str_len,
-                const STRINGLIB_CHAR* sep, Py_ssize_t sep_len,
-                Py_ssize_t maxcount)
-{
-    Py_ssize_t i, j, pos, count=0;
-    PyObject *list, *sub;
-
-    if (sep_len == 0) {
-        PyErr_SetString(PyExc_ValueError, "empty separator");
-        return NULL;
-    }
-    else if (sep_len == 1)
-        return stringlib_split_char(str_obj, str, str_len, sep[0], maxcount);
-
-    list = PyList_New(PREALLOC_SIZE(maxcount));
-    if (list == NULL)
-        return NULL;
-
-    i = j = 0;
-    while (maxcount-- > 0) {
-        pos = fastsearch(str+i, str_len-i, sep, sep_len, -1, FAST_SEARCH);
-        if (pos < 0)
-            break;
-        j = i + pos;
-        SPLIT_ADD(str, i, j);
-        i = j + sep_len;
-    }
-#ifndef STRINGLIB_MUTABLE
-    if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) {
-        /* No match in str_obj, so just use it as list[0] */
-        Py_INCREF(str_obj);
-        PyList_SET_ITEM(list, 0, (PyObject *)str_obj);
-        count++;
-    } else
-#endif
-    {
-        SPLIT_ADD(str, i, str_len);
-    }
-    FIX_PREALLOC_SIZE(list);
-    return list;
-
-  onError:
-    Py_DECREF(list);
-    return NULL;
-}
-
-Py_LOCAL_INLINE(PyObject *)
-stringlib_rsplit_whitespace(PyObject* str_obj,
-                            const STRINGLIB_CHAR* str, Py_ssize_t str_len,
-                            Py_ssize_t maxcount)
-{
-    Py_ssize_t i, j, count=0;
-    PyObject *list = PyList_New(PREALLOC_SIZE(maxcount));
-    PyObject *sub;
-
-    if (list == NULL)
-        return NULL;
-
-    i = j = str_len - 1;
-    while (maxcount-- > 0) {
-        while (i >= 0 && STRINGLIB_ISSPACE(str[i]))
-            i--;
-        if (i < 0) break;
-        j = i; i--;
-        while (i >= 0 && !STRINGLIB_ISSPACE(str[i]))
-            i--;
-#ifndef STRINGLIB_MUTABLE
-        if (j == str_len - 1 && i < 0 && STRINGLIB_CHECK_EXACT(str_obj)) {
-            /* No whitespace in str_obj, so just use it as list[0] */
-            Py_INCREF(str_obj);
-            PyList_SET_ITEM(list, 0, (PyObject *)str_obj);
-            count++;
-            break;
-        }
-#endif
-        SPLIT_ADD(str, i + 1, j + 1);
-    }
-
-    if (i >= 0) {
-        /* Only occurs when maxcount was reached */
-        /* Skip any remaining whitespace and copy to beginning of string */
-        while (i >= 0 && STRINGLIB_ISSPACE(str[i]))
-            i--;
-        if (i >= 0)
-            SPLIT_ADD(str, 0, i + 1);
-    }
-    FIX_PREALLOC_SIZE(list);
-    if (PyList_Reverse(list) < 0)
-        goto onError;
-    return list;
-
-  onError:
-    Py_DECREF(list);
-    return NULL;
-}
-
-Py_LOCAL_INLINE(PyObject *)
-stringlib_rsplit_char(PyObject* str_obj,
-                      const STRINGLIB_CHAR* str, Py_ssize_t str_len,
-                      const STRINGLIB_CHAR ch,
-                      Py_ssize_t maxcount)
-{
-    Py_ssize_t i, j, count=0;
-    PyObject *list = PyList_New(PREALLOC_SIZE(maxcount));
-    PyObject *sub;
-
-    if (list == NULL)
-        return NULL;
-
-    i = j = str_len - 1;
-    while ((i >= 0) && (maxcount-- > 0)) {
-        for(; i >= 0; i--) {
-            if (str[i] == ch) {
-                SPLIT_ADD(str, i + 1, j + 1);
-                j = i = i - 1;
-                break;
-            }
-        }
-    }
-#ifndef STRINGLIB_MUTABLE
-    if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) {
-        /* ch not in str_obj, so just use str_obj as list[0] */
-        Py_INCREF(str_obj);
-        PyList_SET_ITEM(list, 0, (PyObject *)str_obj);
-        count++;
-    } else
-#endif
-    if (j >= -1) {
-        SPLIT_ADD(str, 0, j + 1);
-    }
-    FIX_PREALLOC_SIZE(list);
-    if (PyList_Reverse(list) < 0)
-        goto onError;
-    return list;
-
-  onError:
-    Py_DECREF(list);
-    return NULL;
-}
-
-Py_LOCAL_INLINE(PyObject *)
-stringlib_rsplit(PyObject* str_obj,
-                 const STRINGLIB_CHAR* str, Py_ssize_t str_len,
-                 const STRINGLIB_CHAR* sep, Py_ssize_t sep_len,
-                 Py_ssize_t maxcount)
-{
-    Py_ssize_t j, pos, count=0;
-    PyObject *list, *sub;
-
-    if (sep_len == 0) {
-        PyErr_SetString(PyExc_ValueError, "empty separator");
-        return NULL;
-    }
-    else if (sep_len == 1)
-        return stringlib_rsplit_char(str_obj, str, str_len, sep[0], maxcount);
-
-    list = PyList_New(PREALLOC_SIZE(maxcount));
-    if (list == NULL)
-        return NULL;
-
-    j = str_len;
-    while (maxcount-- > 0) {
-        pos = fastsearch(str, j, sep, sep_len, -1, FAST_RSEARCH);
-        if (pos < 0)
-            break;
-        SPLIT_ADD(str, pos + sep_len, j);
-        j = pos;
-    }
-#ifndef STRINGLIB_MUTABLE
-    if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) {
-        /* No match in str_obj, so just use it as list[0] */
-        Py_INCREF(str_obj);
-        PyList_SET_ITEM(list, 0, (PyObject *)str_obj);
-        count++;
-    } else
-#endif
-    {
-        SPLIT_ADD(str, 0, j);
-    }
-    FIX_PREALLOC_SIZE(list);
-    if (PyList_Reverse(list) < 0)
-        goto onError;
-    return list;
-
-  onError:
-    Py_DECREF(list);
-    return NULL;
-}
-
-Py_LOCAL_INLINE(PyObject *)
-stringlib_splitlines(PyObject* str_obj,
-                     const STRINGLIB_CHAR* str, Py_ssize_t str_len,
-                     int keepends)
-{
-    /* This does not use the preallocated list because splitlines is
-       usually run with hundreds of newlines.  The overhead of
-       switching between PyList_SET_ITEM and append causes about a
-       2-3% slowdown for that common case.  A smarter implementation
-       could move the if check out, so the SET_ITEMs are done first
-       and the appends only done when the prealloc buffer is full.
-       That's too much work for little gain.*/
-
-    register Py_ssize_t i;
-    register Py_ssize_t j;
-    PyObject *list = PyList_New(0);
-    PyObject *sub;
-
-    if (list == NULL)
-        return NULL;
-
-    for (i = j = 0; i < str_len; ) {
-        Py_ssize_t eol;
-
-        /* Find a line and append it */
-        while (i < str_len && !STRINGLIB_ISLINEBREAK(str[i]))
-            i++;
-
-        /* Skip the line break reading CRLF as one line break */
-        eol = i;
-        if (i < str_len) {
-            if (str[i] == '\r' && i + 1 < str_len && str[i+1] == '\n')
-                i += 2;
-            else
-                i++;
-            if (keepends)
-                eol = i;
-        }
-#ifndef STRINGLIB_MUTABLE
-        if (j == 0 && eol == str_len && STRINGLIB_CHECK_EXACT(str_obj)) {
-            /* No linebreak in str_obj, so just use it as list[0] */
-            if (PyList_Append(list, str_obj))
-                goto onError;
-            break;
-        }
-#endif
-        SPLIT_APPEND(str, j, eol);
-        j = i;
-    }
-    return list;
-
-  onError:
-    Py_DECREF(list);
-    return NULL;
-}
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/string_format.h b/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/string_format.h
deleted file mode 100644
index a5b9330..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/string_format.h
+++ /dev/null
@@ -1,1364 +0,0 @@
-/*
-    string_format.h -- implementation of string.format().
-
-    It uses the Objects/stringlib conventions, so that it can be
-    compiled for both unicode and string objects.
-*/
-
-
-/* Defines for Python 2.6 compatibility */
-#if PY_VERSION_HEX < 0x03000000
-#define PyLong_FromSsize_t _PyLong_FromSsize_t
-#endif
-
-/* Defines for more efficiently reallocating the string buffer */
-#define INITIAL_SIZE_INCREMENT 100
-#define SIZE_MULTIPLIER 2
-#define MAX_SIZE_INCREMENT  3200
-
-
-/************************************************************************/
-/***********   Global data structures and forward declarations  *********/
-/************************************************************************/
-
-/*
-   A SubString consists of the characters between two string or
-   unicode pointers.
-*/
-typedef struct {
-    STRINGLIB_CHAR *ptr;
-    STRINGLIB_CHAR *end;
-} SubString;
-
-
-typedef enum {
-    ANS_INIT,
-    ANS_AUTO,
-    ANS_MANUAL
-} AutoNumberState;   /* Keep track if we're auto-numbering fields */
-
-/* Keeps track of our auto-numbering state, and which number field we're on */
-typedef struct {
-    AutoNumberState an_state;
-    int an_field_number;
-} AutoNumber;
-
-
-/* forward declaration for recursion */
-static PyObject *
-build_string(SubString *input, PyObject *args, PyObject *kwargs,
-             int recursion_depth, AutoNumber *auto_number);
-
-
-
-/************************************************************************/
-/**************************  Utility  functions  ************************/
-/************************************************************************/
-
-static void
-AutoNumber_Init(AutoNumber *auto_number)
-{
-    auto_number->an_state = ANS_INIT;
-    auto_number->an_field_number = 0;
-}
-
-/* fill in a SubString from a pointer and length */
-Py_LOCAL_INLINE(void)
-SubString_init(SubString *str, STRINGLIB_CHAR *p, Py_ssize_t len)
-{
-    str->ptr = p;
-    if (p == NULL)
-        str->end = NULL;
-    else
-        str->end = str->ptr + len;
-}
-
-/* return a new string.  if str->ptr is NULL, return None */
-Py_LOCAL_INLINE(PyObject *)
-SubString_new_object(SubString *str)
-{
-    if (str->ptr == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return STRINGLIB_NEW(str->ptr, str->end - str->ptr);
-}
-
-/* return a new string.  if str->ptr is NULL, return None */
-Py_LOCAL_INLINE(PyObject *)
-SubString_new_object_or_empty(SubString *str)
-{
-    if (str->ptr == NULL) {
-        return STRINGLIB_NEW(NULL, 0);
-    }
-    return STRINGLIB_NEW(str->ptr, str->end - str->ptr);
-}
-
-/* Return 1 if an error has been detected switching between automatic
-   field numbering and manual field specification, else return 0. Set
-   ValueError on error. */
-static int
-autonumber_state_error(AutoNumberState state, int field_name_is_empty)
-{
-    if (state == ANS_MANUAL) {
-        if (field_name_is_empty) {
-            PyErr_SetString(PyExc_ValueError, "cannot switch from "
-                            "manual field specification to "
-                            "automatic field numbering");
-            return 1;
-        }
-    }
-    else {
-        if (!field_name_is_empty) {
-            PyErr_SetString(PyExc_ValueError, "cannot switch from "
-                            "automatic field numbering to "
-                            "manual field specification");
-            return 1;
-        }
-    }
-    return 0;
-}
-
-
-/************************************************************************/
-/***********    Output string management functions       ****************/
-/************************************************************************/
-
-typedef struct {
-    STRINGLIB_CHAR *ptr;
-    STRINGLIB_CHAR *end;
-    PyObject *obj;
-    Py_ssize_t size_increment;
-} OutputString;
-
-/* initialize an OutputString object, reserving size characters */
-static int
-output_initialize(OutputString *output, Py_ssize_t size)
-{
-    output->obj = STRINGLIB_NEW(NULL, size);
-    if (output->obj == NULL)
-        return 0;
-
-    output->ptr = STRINGLIB_STR(output->obj);
-    output->end = STRINGLIB_LEN(output->obj) + output->ptr;
-    output->size_increment = INITIAL_SIZE_INCREMENT;
-
-    return 1;
-}
-
-/*
-    output_extend reallocates the output string buffer.
-    It returns a status:  0 for a failed reallocation,
-    1 for success.
-*/
-
-static int
-output_extend(OutputString *output, Py_ssize_t count)
-{
-    STRINGLIB_CHAR *startptr = STRINGLIB_STR(output->obj);
-    Py_ssize_t curlen = output->ptr - startptr;
-    Py_ssize_t maxlen = curlen + count + output->size_increment;
-
-    if (STRINGLIB_RESIZE(&output->obj, maxlen) < 0)
-        return 0;
-    startptr = STRINGLIB_STR(output->obj);
-    output->ptr = startptr + curlen;
-    output->end = startptr + maxlen;
-    if (output->size_increment < MAX_SIZE_INCREMENT)
-        output->size_increment *= SIZE_MULTIPLIER;
-    return 1;
-}
-
-/*
-    output_data dumps characters into our output string
-    buffer.
-
-    In some cases, it has to reallocate the string.
-
-    It returns a status:  0 for a failed reallocation,
-    1 for success.
-*/
-static int
-output_data(OutputString *output, const STRINGLIB_CHAR *s, Py_ssize_t count)
-{
-    if ((count > output->end - output->ptr) && !output_extend(output, count))
-        return 0;
-    memcpy(output->ptr, s, count * sizeof(STRINGLIB_CHAR));
-    output->ptr += count;
-    return 1;
-}
-
-/************************************************************************/
-/***********  Format string parsing -- integers and identifiers *********/
-/************************************************************************/
-
-static Py_ssize_t
-get_integer(const SubString *str)
-{
-    Py_ssize_t accumulator = 0;
-    Py_ssize_t digitval;
-    Py_ssize_t oldaccumulator;
-    STRINGLIB_CHAR *p;
-
-    /* empty string is an error */
-    if (str->ptr >= str->end)
-        return -1;
-
-    for (p = str->ptr; p < str->end; p++) {
-        digitval = STRINGLIB_TODECIMAL(*p);
-        if (digitval < 0)
-            return -1;
-        /*
-           This trick was copied from old Unicode format code.  It's cute,
-           but would really suck on an old machine with a slow divide
-           implementation.  Fortunately, in the normal case we do not
-           expect too many digits.
-        */
-        oldaccumulator = accumulator;
-        accumulator *= 10;
-        if ((accumulator+10)/10 != oldaccumulator+1) {
-            PyErr_Format(PyExc_ValueError,
-                         "Too many decimal digits in format string");
-            return -1;
-        }
-        accumulator += digitval;
-    }
-    return accumulator;
-}
-
-/************************************************************************/
-/******** Functions to get field objects and specification strings ******/
-/************************************************************************/
-
-/* do the equivalent of obj.name */
-static PyObject *
-getattr(PyObject *obj, SubString *name)
-{
-    PyObject *newobj;
-    PyObject *str = SubString_new_object(name);
-    if (str == NULL)
-        return NULL;
-    newobj = PyObject_GetAttr(obj, str);
-    Py_DECREF(str);
-    return newobj;
-}
-
-/* do the equivalent of obj[idx], where obj is a sequence */
-static PyObject *
-getitem_sequence(PyObject *obj, Py_ssize_t idx)
-{
-    return PySequence_GetItem(obj, idx);
-}
-
-/* do the equivalent of obj[idx], where obj is not a sequence */
-static PyObject *
-getitem_idx(PyObject *obj, Py_ssize_t idx)
-{
-    PyObject *newobj;
-    PyObject *idx_obj = PyLong_FromSsize_t(idx);
-    if (idx_obj == NULL)
-        return NULL;
-    newobj = PyObject_GetItem(obj, idx_obj);
-    Py_DECREF(idx_obj);
-    return newobj;
-}
-
-/* do the equivalent of obj[name] */
-static PyObject *
-getitem_str(PyObject *obj, SubString *name)
-{
-    PyObject *newobj;
-    PyObject *str = SubString_new_object(name);
-    if (str == NULL)
-        return NULL;
-    newobj = PyObject_GetItem(obj, str);
-    Py_DECREF(str);
-    return newobj;
-}
-
-typedef struct {
-    /* the entire string we're parsing.  we assume that someone else
-       is managing its lifetime, and that it will exist for the
-       lifetime of the iterator.  can be empty */
-    SubString str;
-
-    /* pointer to where we are inside field_name */
-    STRINGLIB_CHAR *ptr;
-} FieldNameIterator;
-
-
-static int
-FieldNameIterator_init(FieldNameIterator *self, STRINGLIB_CHAR *ptr,
-                       Py_ssize_t len)
-{
-    SubString_init(&self->str, ptr, len);
-    self->ptr = self->str.ptr;
-    return 1;
-}
-
-static int
-_FieldNameIterator_attr(FieldNameIterator *self, SubString *name)
-{
-    STRINGLIB_CHAR c;
-
-    name->ptr = self->ptr;
-
-    /* return everything until '.' or '[' */
-    while (self->ptr < self->str.end) {
-        switch (c = *self->ptr++) {
-        case '[':
-        case '.':
-            /* backup so that we this character will be seen next time */
-            self->ptr--;
-            break;
-        default:
-            continue;
-        }
-        break;
-    }
-    /* end of string is okay */
-    name->end = self->ptr;
-    return 1;
-}
-
-static int
-_FieldNameIterator_item(FieldNameIterator *self, SubString *name)
-{
-    int bracket_seen = 0;
-    STRINGLIB_CHAR c;
-
-    name->ptr = self->ptr;
-
-    /* return everything until ']' */
-    while (self->ptr < self->str.end) {
-        switch (c = *self->ptr++) {
-        case ']':
-            bracket_seen = 1;
-            break;
-        default:
-            continue;
-        }
-        break;
-    }
-    /* make sure we ended with a ']' */
-    if (!bracket_seen) {
-        PyErr_SetString(PyExc_ValueError, "Missing ']' in format string");
-        return 0;
-    }
-
-    /* end of string is okay */
-    /* don't include the ']' */
-    name->end = self->ptr-1;
-    return 1;
-}
-
-/* returns 0 on error, 1 on non-error termination, and 2 if it returns a value */
-static int
-FieldNameIterator_next(FieldNameIterator *self, int *is_attribute,
-                       Py_ssize_t *name_idx, SubString *name)
-{
-    /* check at end of input */
-    if (self->ptr >= self->str.end)
-        return 1;
-
-    switch (*self->ptr++) {
-    case '.':
-        *is_attribute = 1;
-        if (_FieldNameIterator_attr(self, name) == 0)
-            return 0;
-        *name_idx = -1;
-        break;
-    case '[':
-        *is_attribute = 0;
-        if (_FieldNameIterator_item(self, name) == 0)
-            return 0;
-        *name_idx = get_integer(name);
-        if (*name_idx == -1 && PyErr_Occurred())
-            return 0;
-        break;
-    default:
-        /* Invalid character follows ']' */
-        PyErr_SetString(PyExc_ValueError, "Only '.' or '[' may "
-                        "follow ']' in format field specifier");
-        return 0;
-    }
-
-    /* empty string is an error */
-    if (name->ptr == name->end) {
-        PyErr_SetString(PyExc_ValueError, "Empty attribute in format string");
-        return 0;
-    }
-
-    return 2;
-}
-
-
-/* input: field_name
-   output: 'first' points to the part before the first '[' or '.'
-           'first_idx' is -1 if 'first' is not an integer, otherwise
-                       it's the value of first converted to an integer
-           'rest' is an iterator to return the rest
-*/
-static int
-field_name_split(STRINGLIB_CHAR *ptr, Py_ssize_t len, SubString *first,
-                 Py_ssize_t *first_idx, FieldNameIterator *rest,
-                 AutoNumber *auto_number)
-{
-    STRINGLIB_CHAR c;
-    STRINGLIB_CHAR *p = ptr;
-    STRINGLIB_CHAR *end = ptr + len;
-    int field_name_is_empty;
-    int using_numeric_index;
-
-    /* find the part up until the first '.' or '[' */
-    while (p < end) {
-        switch (c = *p++) {
-        case '[':
-        case '.':
-            /* backup so that we this character is available to the
-               "rest" iterator */
-            p--;
-            break;
-        default:
-            continue;
-        }
-        break;
-    }
-
-    /* set up the return values */
-    SubString_init(first, ptr, p - ptr);
-    FieldNameIterator_init(rest, p, end - p);
-
-    /* see if "first" is an integer, in which case it's used as an index */
-    *first_idx = get_integer(first);
-    if (*first_idx == -1 && PyErr_Occurred())
-        return 0;
-
-    field_name_is_empty = first->ptr >= first->end;
-
-    /* If the field name is omitted or if we have a numeric index
-       specified, then we're doing numeric indexing into args. */
-    using_numeric_index = field_name_is_empty || *first_idx != -1;
-
-    /* We always get here exactly one time for each field we're
-       processing. And we get here in field order (counting by left
-       braces). So this is the perfect place to handle automatic field
-       numbering if the field name is omitted. */
-
-    /* Check if we need to do the auto-numbering. It's not needed if
-       we're called from string.Format routines, because it's handled
-       in that class by itself. */
-    if (auto_number) {
-        /* Initialize our auto numbering state if this is the first
-           time we're either auto-numbering or manually numbering. */
-        if (auto_number->an_state == ANS_INIT && using_numeric_index)
-            auto_number->an_state = field_name_is_empty ?
-                ANS_AUTO : ANS_MANUAL;
-
-        /* Make sure our state is consistent with what we're doing
-           this time through. Only check if we're using a numeric
-           index. */
-        if (using_numeric_index)
-            if (autonumber_state_error(auto_number->an_state,
-                                       field_name_is_empty))
-                return 0;
-        /* Zero length field means we want to do auto-numbering of the
-           fields. */
-        if (field_name_is_empty)
-            *first_idx = (auto_number->an_field_number)++;
-    }
-
-    return 1;
-}
-
-
-/*
-    get_field_object returns the object inside {}, before the
-    format_spec.  It handles getindex and getattr lookups and consumes
-    the entire input string.
-*/
-static PyObject *
-get_field_object(SubString *input, PyObject *args, PyObject *kwargs,
-                 AutoNumber *auto_number)
-{
-    PyObject *obj = NULL;
-    int ok;
-    int is_attribute;
-    SubString name;
-    SubString first;
-    Py_ssize_t index;
-    FieldNameIterator rest;
-
-    if (!field_name_split(input->ptr, input->end - input->ptr, &first,
-                          &index, &rest, auto_number)) {
-        goto error;
-    }
-
-    if (index == -1) {
-        /* look up in kwargs */
-        PyObject *key = SubString_new_object(&first);
-        if (key == NULL)
-            goto error;
-        if ((kwargs == NULL) || (obj = PyDict_GetItem(kwargs, key)) == NULL) {
-            PyErr_SetObject(PyExc_KeyError, key);
-            Py_DECREF(key);
-            goto error;
-        }
-        Py_DECREF(key);
-        Py_INCREF(obj);
-    }
-    else {
-        /* look up in args */
-        obj = PySequence_GetItem(args, index);
-        if (obj == NULL)
-            goto error;
-    }
-
-    /* iterate over the rest of the field_name */
-    while ((ok = FieldNameIterator_next(&rest, &is_attribute, &index,
-                                        &name)) == 2) {
-        PyObject *tmp;
-
-        if (is_attribute)
-            /* getattr lookup "." */
-            tmp = getattr(obj, &name);
-        else
-            /* getitem lookup "[]" */
-            if (index == -1)
-                tmp = getitem_str(obj, &name);
-            else
-                if (PySequence_Check(obj))
-                    tmp = getitem_sequence(obj, index);
-                else
-                    /* not a sequence */
-                    tmp = getitem_idx(obj, index);
-        if (tmp == NULL)
-            goto error;
-
-        /* assign to obj */
-        Py_DECREF(obj);
-        obj = tmp;
-    }
-    /* end of iterator, this is the non-error case */
-    if (ok == 1)
-        return obj;
-error:
-    Py_XDECREF(obj);
-    return NULL;
-}
-
-/************************************************************************/
-/*****************  Field rendering functions  **************************/
-/************************************************************************/
-
-/*
-    render_field() is the main function in this section.  It takes the
-    field object and field specification string generated by
-    get_field_and_spec, and renders the field into the output string.
-
-    render_field calls fieldobj.__format__(format_spec) method, and
-    appends to the output.
-*/
-static int
-render_field(PyObject *fieldobj, SubString *format_spec, OutputString *output)
-{
-    int ok = 0;
-    PyObject *result = NULL;
-    PyObject *format_spec_object = NULL;
-    PyObject *(*formatter)(PyObject *, STRINGLIB_CHAR *, Py_ssize_t) = NULL;
-    STRINGLIB_CHAR* format_spec_start = format_spec->ptr ?
-            format_spec->ptr : NULL;
-    Py_ssize_t format_spec_len = format_spec->ptr ?
-            format_spec->end - format_spec->ptr : 0;
-
-    /* If we know the type exactly, skip the lookup of __format__ and just
-       call the formatter directly. */
-#if STRINGLIB_IS_UNICODE
-    if (PyUnicode_CheckExact(fieldobj))
-        formatter = _PyUnicode_FormatAdvanced;
-    /* Unfortunately, there's a problem with checking for int, long,
-       and float here.  If we're being included as unicode, their
-       formatters expect string format_spec args.  For now, just skip
-       this optimization for unicode.  This could be fixed, but it's a
-       hassle. */
-#else
-    if (PyString_CheckExact(fieldobj))
-        formatter = _PyBytes_FormatAdvanced;
-    else if (PyInt_CheckExact(fieldobj))
-        formatter =_PyInt_FormatAdvanced;
-    else if (PyLong_CheckExact(fieldobj))
-        formatter =_PyLong_FormatAdvanced;
-    else if (PyFloat_CheckExact(fieldobj))
-        formatter = _PyFloat_FormatAdvanced;
-#endif
-
-    if (formatter) {
-        /* we know exactly which formatter will be called when __format__ is
-           looked up, so call it directly, instead. */
-        result = formatter(fieldobj, format_spec_start, format_spec_len);
-    }
-    else {
-        /* We need to create an object out of the pointers we have, because
-           __format__ takes a string/unicode object for format_spec. */
-        format_spec_object = STRINGLIB_NEW(format_spec_start,
-                                           format_spec_len);
-        if (format_spec_object == NULL)
-            goto done;
-
-        result = PyObject_Format(fieldobj, format_spec_object);
-    }
-    if (result == NULL)
-        goto done;
-
-#if PY_VERSION_HEX >= 0x03000000
-    assert(PyUnicode_Check(result));
-#else
-    assert(PyString_Check(result) || PyUnicode_Check(result));
-
-    /* Convert result to our type.  We could be str, and result could
-       be unicode */
-    {
-        PyObject *tmp = STRINGLIB_TOSTR(result);
-        if (tmp == NULL)
-            goto done;
-        Py_DECREF(result);
-        result = tmp;
-    }
-#endif
-
-    ok = output_data(output,
-                     STRINGLIB_STR(result), STRINGLIB_LEN(result));
-done:
-    Py_XDECREF(format_spec_object);
-    Py_XDECREF(result);
-    return ok;
-}
-
-static int
-parse_field(SubString *str, SubString *field_name, SubString *format_spec,
-            STRINGLIB_CHAR *conversion)
-{
-    /* Note this function works if the field name is zero length,
-       which is good.  Zero length field names are handled later, in
-       field_name_split. */
-
-    STRINGLIB_CHAR c = 0;
-
-    /* initialize these, as they may be empty */
-    *conversion = '\0';
-    SubString_init(format_spec, NULL, 0);
-
-    /* Search for the field name.  it's terminated by the end of
-       the string, or a ':' or '!' */
-    field_name->ptr = str->ptr;
-    while (str->ptr < str->end) {
-        switch (c = *(str->ptr++)) {
-        case ':':
-        case '!':
-            break;
-        default:
-            continue;
-        }
-        break;
-    }
-
-    if (c == '!' || c == ':') {
-        /* we have a format specifier and/or a conversion */
-        /* don't include the last character */
-        field_name->end = str->ptr-1;
-
-        /* the format specifier is the rest of the string */
-        format_spec->ptr = str->ptr;
-        format_spec->end = str->end;
-
-        /* see if there's a conversion specifier */
-        if (c == '!') {
-            /* there must be another character present */
-            if (format_spec->ptr >= format_spec->end) {
-                PyErr_SetString(PyExc_ValueError,
-                                "end of format while looking for conversion "
-                                "specifier");
-                return 0;
-            }
-            *conversion = *(format_spec->ptr++);
-
-            /* if there is another character, it must be a colon */
-            if (format_spec->ptr < format_spec->end) {
-                c = *(format_spec->ptr++);
-                if (c != ':') {
-                    PyErr_SetString(PyExc_ValueError,
-                                    "expected ':' after format specifier");
-                    return 0;
-                }
-            }
-        }
-    }
-    else
-        /* end of string, there's no format_spec or conversion */
-        field_name->end = str->ptr;
-
-    return 1;
-}
-
-/************************************************************************/
-/******* Output string allocation and escape-to-markup processing  ******/
-/************************************************************************/
-
-/* MarkupIterator breaks the string into pieces of either literal
-   text, or things inside {} that need to be marked up.  it is
-   designed to make it easy to wrap a Python iterator around it, for
-   use with the Formatter class */
-
-typedef struct {
-    SubString str;
-} MarkupIterator;
-
-static int
-MarkupIterator_init(MarkupIterator *self, STRINGLIB_CHAR *ptr, Py_ssize_t len)
-{
-    SubString_init(&self->str, ptr, len);
-    return 1;
-}
-
-/* returns 0 on error, 1 on non-error termination, and 2 if it got a
-   string (or something to be expanded) */
-static int
-MarkupIterator_next(MarkupIterator *self, SubString *literal,
-                    int *field_present, SubString *field_name,
-                    SubString *format_spec, STRINGLIB_CHAR *conversion,
-                    int *format_spec_needs_expanding)
-{
-    int at_end;
-    STRINGLIB_CHAR c = 0;
-    STRINGLIB_CHAR *start;
-    int count;
-    Py_ssize_t len;
-    int markup_follows = 0;
-
-    /* initialize all of the output variables */
-    SubString_init(literal, NULL, 0);
-    SubString_init(field_name, NULL, 0);
-    SubString_init(format_spec, NULL, 0);
-    *conversion = '\0';
-    *format_spec_needs_expanding = 0;
-    *field_present = 0;
-
-    /* No more input, end of iterator.  This is the normal exit
-       path. */
-    if (self->str.ptr >= self->str.end)
-        return 1;
-
-    start = self->str.ptr;
-
-    /* First read any literal text. Read until the end of string, an
-       escaped '{' or '}', or an unescaped '{'.  In order to never
-       allocate memory and so I can just pass pointers around, if
-       there's an escaped '{' or '}' then we'll return the literal
-       including the brace, but no format object.  The next time
-       through, we'll return the rest of the literal, skipping past
-       the second consecutive brace. */
-    while (self->str.ptr < self->str.end) {
-        switch (c = *(self->str.ptr++)) {
-        case '{':
-        case '}':
-            markup_follows = 1;
-            break;
-        default:
-            continue;
-        }
-        break;
-    }
-
-    at_end = self->str.ptr >= self->str.end;
-    len = self->str.ptr - start;
-
-    if ((c == '}') && (at_end || (c != *self->str.ptr))) {
-        PyErr_SetString(PyExc_ValueError, "Single '}' encountered "
-                        "in format string");
-        return 0;
-    }
-    if (at_end && c == '{') {
-        PyErr_SetString(PyExc_ValueError, "Single '{' encountered "
-                        "in format string");
-        return 0;
-    }
-    if (!at_end) {
-        if (c == *self->str.ptr) {
-            /* escaped } or {, skip it in the input.  there is no
-               markup object following us, just this literal text */
-            self->str.ptr++;
-            markup_follows = 0;
-        }
-        else
-            len--;
-    }
-
-    /* record the literal text */
-    literal->ptr = start;
-    literal->end = start + len;
-
-    if (!markup_follows)
-        return 2;
-
-    /* this is markup, find the end of the string by counting nested
-       braces.  note that this prohibits escaped braces, so that
-       format_specs cannot have braces in them. */
-    *field_present = 1;
-    count = 1;
-
-    start = self->str.ptr;
-
-    /* we know we can't have a zero length string, so don't worry
-       about that case */
-    while (self->str.ptr < self->str.end) {
-        switch (c = *(self->str.ptr++)) {
-        case '{':
-            /* the format spec needs to be recursively expanded.
-               this is an optimization, and not strictly needed */
-            *format_spec_needs_expanding = 1;
-            count++;
-            break;
-        case '}':
-            count--;
-            if (count <= 0) {
-                /* we're done.  parse and get out */
-                SubString s;
-
-                SubString_init(&s, start, self->str.ptr - 1 - start);
-                if (parse_field(&s, field_name, format_spec, conversion) == 0)
-                    return 0;
-
-                /* success */
-                return 2;
-            }
-            break;
-        }
-    }
-
-    /* end of string while searching for matching '}' */
-    PyErr_SetString(PyExc_ValueError, "unmatched '{' in format");
-    return 0;
-}
-
-
-/* do the !r or !s conversion on obj */
-static PyObject *
-do_conversion(PyObject *obj, STRINGLIB_CHAR conversion)
-{
-    /* XXX in pre-3.0, do we need to convert this to unicode, since it
-       might have returned a string? */
-    switch (conversion) {
-    case 'r':
-        return PyObject_Repr(obj);
-    case 's':
-        return STRINGLIB_TOSTR(obj);
-    default:
-        if (conversion > 32 && conversion < 127) {
-                /* It's the ASCII subrange; casting to char is safe
-                   (assuming the execution character set is an ASCII
-                   superset). */
-                PyErr_Format(PyExc_ValueError,
-                     "Unknown conversion specifier %c",
-                     (char)conversion);
-        } else
-                PyErr_Format(PyExc_ValueError,
-                     "Unknown conversion specifier \\x%x",
-                     (unsigned int)conversion);
-        return NULL;
-    }
-}
-
-/* given:
-
-   {field_name!conversion:format_spec}
-
-   compute the result and write it to output.
-   format_spec_needs_expanding is an optimization.  if it's false,
-   just output the string directly, otherwise recursively expand the
-   format_spec string.
-
-   field_name is allowed to be zero length, in which case we
-   are doing auto field numbering.
-*/
-
-static int
-output_markup(SubString *field_name, SubString *format_spec,
-              int format_spec_needs_expanding, STRINGLIB_CHAR conversion,
-              OutputString *output, PyObject *args, PyObject *kwargs,
-              int recursion_depth, AutoNumber *auto_number)
-{
-    PyObject *tmp = NULL;
-    PyObject *fieldobj = NULL;
-    SubString expanded_format_spec;
-    SubString *actual_format_spec;
-    int result = 0;
-
-    /* convert field_name to an object */
-    fieldobj = get_field_object(field_name, args, kwargs, auto_number);
-    if (fieldobj == NULL)
-        goto done;
-
-    if (conversion != '\0') {
-        tmp = do_conversion(fieldobj, conversion);
-        if (tmp == NULL)
-            goto done;
-
-        /* do the assignment, transferring ownership: fieldobj = tmp */
-        Py_DECREF(fieldobj);
-        fieldobj = tmp;
-        tmp = NULL;
-    }
-
-    /* if needed, recurively compute the format_spec */
-    if (format_spec_needs_expanding) {
-        tmp = build_string(format_spec, args, kwargs, recursion_depth-1,
-                           auto_number);
-        if (tmp == NULL)
-            goto done;
-
-        /* note that in the case we're expanding the format string,
-           tmp must be kept around until after the call to
-           render_field. */
-        SubString_init(&expanded_format_spec,
-                       STRINGLIB_STR(tmp), STRINGLIB_LEN(tmp));
-        actual_format_spec = &expanded_format_spec;
-    }
-    else
-        actual_format_spec = format_spec;
-
-    if (render_field(fieldobj, actual_format_spec, output) == 0)
-        goto done;
-
-    result = 1;
-
-done:
-    Py_XDECREF(fieldobj);
-    Py_XDECREF(tmp);
-
-    return result;
-}
-
-/*
-    do_markup is the top-level loop for the format() method.  It
-    searches through the format string for escapes to markup codes, and
-    calls other functions to move non-markup text to the output,
-    and to perform the markup to the output.
-*/
-static int
-do_markup(SubString *input, PyObject *args, PyObject *kwargs,
-          OutputString *output, int recursion_depth, AutoNumber *auto_number)
-{
-    MarkupIterator iter;
-    int format_spec_needs_expanding;
-    int result;
-    int field_present;
-    SubString literal;
-    SubString field_name;
-    SubString format_spec;
-    STRINGLIB_CHAR conversion;
-
-    MarkupIterator_init(&iter, input->ptr, input->end - input->ptr);
-    while ((result = MarkupIterator_next(&iter, &literal, &field_present,
-                                         &field_name, &format_spec,
-                                         &conversion,
-                                         &format_spec_needs_expanding)) == 2) {
-        if (!output_data(output, literal.ptr, literal.end - literal.ptr))
-            return 0;
-        if (field_present)
-            if (!output_markup(&field_name, &format_spec,
-                               format_spec_needs_expanding, conversion, output,
-                               args, kwargs, recursion_depth, auto_number))
-                return 0;
-    }
-    return result;
-}
-
-
-/*
-    build_string allocates the output string and then
-    calls do_markup to do the heavy lifting.
-*/
-static PyObject *
-build_string(SubString *input, PyObject *args, PyObject *kwargs,
-             int recursion_depth, AutoNumber *auto_number)
-{
-    OutputString output;
-    PyObject *result = NULL;
-    Py_ssize_t count;
-
-    output.obj = NULL; /* needed so cleanup code always works */
-
-    /* check the recursion level */
-    if (recursion_depth <= 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "Max string recursion exceeded");
-        goto done;
-    }
-
-    /* initial size is the length of the format string, plus the size
-       increment.  seems like a reasonable default */
-    if (!output_initialize(&output,
-                           input->end - input->ptr +
-                           INITIAL_SIZE_INCREMENT))
-        goto done;
-
-    if (!do_markup(input, args, kwargs, &output, recursion_depth,
-                   auto_number)) {
-        goto done;
-    }
-
-    count = output.ptr - STRINGLIB_STR(output.obj);
-    if (STRINGLIB_RESIZE(&output.obj, count) < 0) {
-        goto done;
-    }
-
-    /* transfer ownership to result */
-    result = output.obj;
-    output.obj = NULL;
-
-done:
-    Py_XDECREF(output.obj);
-    return result;
-}
-
-/************************************************************************/
-/*********** main routine ***********************************************/
-/************************************************************************/
-
-/* this is the main entry point */
-static PyObject *
-do_string_format(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    SubString input;
-
-    /* PEP 3101 says only 2 levels, so that
-       "{0:{1}}".format('abc', 's')            # works
-       "{0:{1:{2}}}".format('abc', 's', '')    # fails
-    */
-    int recursion_depth = 2;
-
-    AutoNumber auto_number;
-
-    AutoNumber_Init(&auto_number);
-    SubString_init(&input, STRINGLIB_STR(self), STRINGLIB_LEN(self));
-    return build_string(&input, args, kwargs, recursion_depth, &auto_number);
-}
-
-
-
-/************************************************************************/
-/*********** formatteriterator ******************************************/
-/************************************************************************/
-
-/* This is used to implement string.Formatter.vparse().  It exists so
-   Formatter can share code with the built in unicode.format() method.
-   It's really just a wrapper around MarkupIterator that is callable
-   from Python. */
-
-typedef struct {
-    PyObject_HEAD
-
-    STRINGLIB_OBJECT *str;
-
-    MarkupIterator it_markup;
-} formatteriterobject;
-
-static void
-formatteriter_dealloc(formatteriterobject *it)
-{
-    Py_XDECREF(it->str);
-    PyObject_FREE(it);
-}
-
-/* returns a tuple:
-   (literal, field_name, format_spec, conversion)
-
-   literal is any literal text to output.  might be zero length
-   field_name is the string before the ':'.  might be None
-   format_spec is the string after the ':'.  mibht be None
-   conversion is either None, or the string after the '!'
-*/
-static PyObject *
-formatteriter_next(formatteriterobject *it)
-{
-    SubString literal;
-    SubString field_name;
-    SubString format_spec;
-    STRINGLIB_CHAR conversion;
-    int format_spec_needs_expanding;
-    int field_present;
-    int result = MarkupIterator_next(&it->it_markup, &literal, &field_present,
-                                     &field_name, &format_spec, &conversion,
-                                     &format_spec_needs_expanding);
-
-    /* all of the SubString objects point into it->str, so no
-       memory management needs to be done on them */
-    assert(0 <= result && result <= 2);
-    if (result == 0 || result == 1)
-        /* if 0, error has already been set, if 1, iterator is empty */
-        return NULL;
-    else {
-        PyObject *literal_str = NULL;
-        PyObject *field_name_str = NULL;
-        PyObject *format_spec_str = NULL;
-        PyObject *conversion_str = NULL;
-        PyObject *tuple = NULL;
-
-        literal_str = SubString_new_object(&literal);
-        if (literal_str == NULL)
-            goto done;
-
-        field_name_str = SubString_new_object(&field_name);
-        if (field_name_str == NULL)
-            goto done;
-
-        /* if field_name is non-zero length, return a string for
-           format_spec (even if zero length), else return None */
-        format_spec_str = (field_present ?
-                           SubString_new_object_or_empty :
-                           SubString_new_object)(&format_spec);
-        if (format_spec_str == NULL)
-            goto done;
-
-        /* if the conversion is not specified, return a None,
-           otherwise create a one length string with the conversion
-           character */
-        if (conversion == '\0') {
-            conversion_str = Py_None;
-            Py_INCREF(conversion_str);
-        }
-        else
-            conversion_str = STRINGLIB_NEW(&conversion, 1);
-        if (conversion_str == NULL)
-            goto done;
-
-        tuple = PyTuple_Pack(4, literal_str, field_name_str, format_spec_str,
-                             conversion_str);
-    done:
-        Py_XDECREF(literal_str);
-        Py_XDECREF(field_name_str);
-        Py_XDECREF(format_spec_str);
-        Py_XDECREF(conversion_str);
-        return tuple;
-    }
-}
-
-static PyMethodDef formatteriter_methods[] = {
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyTypeObject PyFormatterIter_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "formatteriterator",                /* tp_name */
-    sizeof(formatteriterobject),        /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)formatteriter_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                 /* tp_flags */
-    0,                                  /* tp_doc */
-    0,                                  /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)formatteriter_next,   /* tp_iternext */
-    formatteriter_methods,              /* tp_methods */
-    0,
-};
-
-/* unicode_formatter_parser is used to implement
-   string.Formatter.vformat.  it parses a string and returns tuples
-   describing the parsed elements.  It's a wrapper around
-   stringlib/string_format.h's MarkupIterator */
-static PyObject *
-formatter_parser(STRINGLIB_OBJECT *self)
-{
-    formatteriterobject *it;
-
-    it = PyObject_New(formatteriterobject, &PyFormatterIter_Type);
-    if (it == NULL)
-        return NULL;
-
-    /* take ownership, give the object to the iterator */
-    Py_INCREF(self);
-    it->str = self;
-
-    /* initialize the contained MarkupIterator */
-    MarkupIterator_init(&it->it_markup,
-                        STRINGLIB_STR(self),
-                        STRINGLIB_LEN(self));
-
-    return (PyObject *)it;
-}
-
-
-/************************************************************************/
-/*********** fieldnameiterator ******************************************/
-/************************************************************************/
-
-
-/* This is used to implement string.Formatter.vparse().  It parses the
-   field name into attribute and item values.  It's a Python-callable
-   wrapper around FieldNameIterator */
-
-typedef struct {
-    PyObject_HEAD
-
-    STRINGLIB_OBJECT *str;
-
-    FieldNameIterator it_field;
-} fieldnameiterobject;
-
-static void
-fieldnameiter_dealloc(fieldnameiterobject *it)
-{
-    Py_XDECREF(it->str);
-    PyObject_FREE(it);
-}
-
-/* returns a tuple:
-   (is_attr, value)
-   is_attr is true if we used attribute syntax (e.g., '.foo')
-              false if we used index syntax (e.g., '[foo]')
-   value is an integer or string
-*/
-static PyObject *
-fieldnameiter_next(fieldnameiterobject *it)
-{
-    int result;
-    int is_attr;
-    Py_ssize_t idx;
-    SubString name;
-
-    result = FieldNameIterator_next(&it->it_field, &is_attr,
-                                    &idx, &name);
-    if (result == 0 || result == 1)
-        /* if 0, error has already been set, if 1, iterator is empty */
-        return NULL;
-    else {
-        PyObject* result = NULL;
-        PyObject* is_attr_obj = NULL;
-        PyObject* obj = NULL;
-
-        is_attr_obj = PyBool_FromLong(is_attr);
-        if (is_attr_obj == NULL)
-            goto done;
-
-        /* either an integer or a string */
-        if (idx != -1)
-            obj = PyLong_FromSsize_t(idx);
-        else
-            obj = SubString_new_object(&name);
-        if (obj == NULL)
-            goto done;
-
-        /* return a tuple of values */
-        result = PyTuple_Pack(2, is_attr_obj, obj);
-
-    done:
-        Py_XDECREF(is_attr_obj);
-        Py_XDECREF(obj);
-        return result;
-    }
-}
-
-static PyMethodDef fieldnameiter_methods[] = {
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyTypeObject PyFieldNameIter_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "fieldnameiterator",                /* tp_name */
-    sizeof(fieldnameiterobject),        /* tp_basicsize */
-    0,                                  /* tp_itemsize */
-    /* methods */
-    (destructor)fieldnameiter_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 */
-    PyObject_GenericGetAttr,            /* tp_getattro */
-    0,                                  /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                 /* tp_flags */
-    0,                                  /* tp_doc */
-    0,                                  /* tp_traverse */
-    0,                                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    PyObject_SelfIter,                  /* tp_iter */
-    (iternextfunc)fieldnameiter_next,   /* tp_iternext */
-    fieldnameiter_methods,              /* tp_methods */
-    0};
-
-/* unicode_formatter_field_name_split is used to implement
-   string.Formatter.vformat.  it takes an PEP 3101 "field name", and
-   returns a tuple of (first, rest): "first", the part before the
-   first '.' or '['; and "rest", an iterator for the rest of the field
-   name.  it's a wrapper around stringlib/string_format.h's
-   field_name_split.  The iterator it returns is a
-   FieldNameIterator */
-static PyObject *
-formatter_field_name_split(STRINGLIB_OBJECT *self)
-{
-    SubString first;
-    Py_ssize_t first_idx;
-    fieldnameiterobject *it;
-
-    PyObject *first_obj = NULL;
-    PyObject *result = NULL;
-
-    it = PyObject_New(fieldnameiterobject, &PyFieldNameIter_Type);
-    if (it == NULL)
-        return NULL;
-
-    /* take ownership, give the object to the iterator.  this is
-       just to keep the field_name alive */
-    Py_INCREF(self);
-    it->str = self;
-
-    /* Pass in auto_number = NULL. We'll return an empty string for
-       first_obj in that case. */
-    if (!field_name_split(STRINGLIB_STR(self),
-                          STRINGLIB_LEN(self),
-                          &first, &first_idx, &it->it_field, NULL))
-        goto done;
-
-    /* first becomes an integer, if possible; else a string */
-    if (first_idx != -1)
-        first_obj = PyLong_FromSsize_t(first_idx);
-    else
-        /* convert "first" into a string object */
-        first_obj = SubString_new_object(&first);
-    if (first_obj == NULL)
-        goto done;
-
-    /* return a tuple of values */
-    result = PyTuple_Pack(2, first_obj, it);
-
-done:
-    Py_XDECREF(it);
-    Py_XDECREF(first_obj);
-    return result;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/stringdefs.h b/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/stringdefs.h
deleted file mode 100644
index a301d4e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/stringdefs.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef STRINGLIB_STRINGDEFS_H
-#define STRINGLIB_STRINGDEFS_H
-
-/* this is sort of a hack.  there's at least one place (formatting
-   floats) where some stringlib code takes a different path if it's
-   compiled as unicode. */
-#define STRINGLIB_IS_UNICODE     0
-
-#define STRINGLIB_OBJECT         PyStringObject
-#define STRINGLIB_CHAR           char
-#define STRINGLIB_TYPE_NAME      "string"
-#define STRINGLIB_PARSE_CODE     "S"
-#define STRINGLIB_EMPTY          nullstring
-#define STRINGLIB_ISSPACE        Py_ISSPACE
-#define STRINGLIB_ISLINEBREAK(x) ((x == '\n') || (x == '\r'))
-#define STRINGLIB_ISDECIMAL(x)   ((x >= '0') && (x <= '9'))
-#define STRINGLIB_TODECIMAL(x)   (STRINGLIB_ISDECIMAL(x) ? (x - '0') : -1)
-#define STRINGLIB_TOUPPER        Py_TOUPPER
-#define STRINGLIB_TOLOWER        Py_TOLOWER
-#define STRINGLIB_FILL           memset
-#define STRINGLIB_STR            PyString_AS_STRING
-#define STRINGLIB_LEN            PyString_GET_SIZE
-#define STRINGLIB_NEW            PyString_FromStringAndSize
-#define STRINGLIB_RESIZE         _PyString_Resize
-#define STRINGLIB_CHECK          PyString_Check
-#define STRINGLIB_CHECK_EXACT    PyString_CheckExact
-#define STRINGLIB_TOSTR          PyObject_Str
-#define STRINGLIB_GROUPING       _PyString_InsertThousandsGrouping
-#define STRINGLIB_GROUPING_LOCALE _PyString_InsertThousandsGroupingLocale
-
-#define STRINGLIB_WANT_CONTAINS_OBJ 1
-
-#endif /* !STRINGLIB_STRINGDEFS_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/transmogrify.h b/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/transmogrify.h
deleted file mode 100644
index d6e0dc9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/transmogrify.h
+++ /dev/null
@@ -1,264 +0,0 @@
-/* NOTE: this API is -ONLY- for use with single byte character strings. */
-/* Do not use it with Unicode. */
-
-/* the more complicated methods.  parts of these should be pulled out into the
-   shared code in bytes_methods.c to cut down on duplicate code bloat.  */
-
-PyDoc_STRVAR(expandtabs__doc__,
-"B.expandtabs([tabsize]) -> copy of B\n\
-\n\
-Return a copy of B where all tab characters are expanded using spaces.\n\
-If tabsize is not given, a tab size of 8 characters is assumed.");
-
-static PyObject*
-stringlib_expandtabs(PyObject *self, PyObject *args)
-{
-    const char *e, *p;
-    char *q;
-    size_t i, j;
-    PyObject *u;
-    int tabsize = 8;
-    
-    if (!PyArg_ParseTuple(args, "|i:expandtabs", &tabsize))
-        return NULL;
-    
-    /* First pass: determine size of output string */
-    i = j = 0;
-    e = STRINGLIB_STR(self) + STRINGLIB_LEN(self);
-    for (p = STRINGLIB_STR(self); p < e; p++)
-        if (*p == '\t') {
-            if (tabsize > 0) {
-                j += tabsize - (j % tabsize);
-                if (j > PY_SSIZE_T_MAX) {
-                    PyErr_SetString(PyExc_OverflowError,
-                                    "result is too long");
-                    return NULL;
-                }
-            }
-        }
-        else {
-            j++;
-            if (*p == '\n' || *p == '\r') {
-                i += j;
-                j = 0;
-                if (i > PY_SSIZE_T_MAX) {
-                    PyErr_SetString(PyExc_OverflowError,
-                                    "result is too long");
-                    return NULL;
-                }
-            }
-        }
-    
-    if ((i + j) > PY_SSIZE_T_MAX) {
-        PyErr_SetString(PyExc_OverflowError, "result is too long");
-        return NULL;
-    }
-    
-    /* Second pass: create output string and fill it */
-    u = STRINGLIB_NEW(NULL, i + j);
-    if (!u)
-        return NULL;
-    
-    j = 0;
-    q = STRINGLIB_STR(u);
-    
-    for (p = STRINGLIB_STR(self); p < e; p++)
-        if (*p == '\t') {
-            if (tabsize > 0) {
-                i = tabsize - (j % tabsize);
-                j += i;
-                while (i--)
-                    *q++ = ' ';
-            }
-        }
-        else {
-            j++;
-            *q++ = *p;
-            if (*p == '\n' || *p == '\r')
-                j = 0;
-        }
-    
-    return u;
-}
-
-Py_LOCAL_INLINE(PyObject *)
-pad(PyObject *self, Py_ssize_t left, Py_ssize_t right, char fill)
-{
-    PyObject *u;
-
-    if (left < 0)
-        left = 0;
-    if (right < 0)
-        right = 0;
-
-    if (left == 0 && right == 0 && STRINGLIB_CHECK_EXACT(self)) {
-#if STRINGLIB_MUTABLE
-        /* We're defined as returning a copy;  If the object is mutable
-         * that means we must make an identical copy. */
-        return STRINGLIB_NEW(STRINGLIB_STR(self), STRINGLIB_LEN(self));
-#else
-        Py_INCREF(self);
-        return (PyObject *)self;
-#endif /* STRINGLIB_MUTABLE */
-    }
-
-    u = STRINGLIB_NEW(NULL,
-				   left + STRINGLIB_LEN(self) + right);
-    if (u) {
-        if (left)
-            memset(STRINGLIB_STR(u), fill, left);
-        Py_MEMCPY(STRINGLIB_STR(u) + left,
-	       STRINGLIB_STR(self),
-	       STRINGLIB_LEN(self));
-        if (right)
-            memset(STRINGLIB_STR(u) + left + STRINGLIB_LEN(self),
-		   fill, right);
-    }
-
-    return u;
-}
-
-PyDoc_STRVAR(ljust__doc__,
-"B.ljust(width[, fillchar]) -> copy of B\n"
-"\n"
-"Return B left justified in a string of length width. Padding is\n"
-"done using the specified fill character (default is a space).");
-
-static PyObject *
-stringlib_ljust(PyObject *self, PyObject *args)
-{
-    Py_ssize_t width;
-    char fillchar = ' ';
-
-    if (!PyArg_ParseTuple(args, "n|c:ljust", &width, &fillchar))
-        return NULL;
-
-    if (STRINGLIB_LEN(self) >= width && STRINGLIB_CHECK_EXACT(self)) {
-#if STRINGLIB_MUTABLE
-        /* We're defined as returning a copy;  If the object is mutable
-         * that means we must make an identical copy. */
-        return STRINGLIB_NEW(STRINGLIB_STR(self), STRINGLIB_LEN(self));
-#else
-        Py_INCREF(self);
-        return (PyObject*) self;
-#endif
-    }
-
-    return pad(self, 0, width - STRINGLIB_LEN(self), fillchar);
-}
-
-
-PyDoc_STRVAR(rjust__doc__,
-"B.rjust(width[, fillchar]) -> copy of B\n"
-"\n"
-"Return B right justified in a string of length width. Padding is\n"
-"done using the specified fill character (default is a space)");
-
-static PyObject *
-stringlib_rjust(PyObject *self, PyObject *args)
-{
-    Py_ssize_t width;
-    char fillchar = ' ';
-
-    if (!PyArg_ParseTuple(args, "n|c:rjust", &width, &fillchar))
-        return NULL;
-
-    if (STRINGLIB_LEN(self) >= width && STRINGLIB_CHECK_EXACT(self)) {
-#if STRINGLIB_MUTABLE
-        /* We're defined as returning a copy;  If the object is mutable
-         * that means we must make an identical copy. */
-        return STRINGLIB_NEW(STRINGLIB_STR(self), STRINGLIB_LEN(self));
-#else
-        Py_INCREF(self);
-        return (PyObject*) self;
-#endif
-    }
-
-    return pad(self, width - STRINGLIB_LEN(self), 0, fillchar);
-}
-
-
-PyDoc_STRVAR(center__doc__,
-"B.center(width[, fillchar]) -> copy of B\n"
-"\n"
-"Return B centered in a string of length width.  Padding is\n"
-"done using the specified fill character (default is a space).");
-
-static PyObject *
-stringlib_center(PyObject *self, PyObject *args)
-{
-    Py_ssize_t marg, left;
-    Py_ssize_t width;
-    char fillchar = ' ';
-
-    if (!PyArg_ParseTuple(args, "n|c:center", &width, &fillchar))
-        return NULL;
-
-    if (STRINGLIB_LEN(self) >= width && STRINGLIB_CHECK_EXACT(self)) {
-#if STRINGLIB_MUTABLE
-        /* We're defined as returning a copy;  If the object is mutable
-         * that means we must make an identical copy. */
-        return STRINGLIB_NEW(STRINGLIB_STR(self), STRINGLIB_LEN(self));
-#else
-        Py_INCREF(self);
-        return (PyObject*) self;
-#endif
-    }
-
-    marg = width - STRINGLIB_LEN(self);
-    left = marg / 2 + (marg & width & 1);
-
-    return pad(self, left, marg - left, fillchar);
-}
-
-PyDoc_STRVAR(zfill__doc__,
-"B.zfill(width) -> copy of B\n"
-"\n"
-"Pad a numeric string B with zeros on the left, to fill a field\n"
-"of the specified width.  B is never truncated.");
-
-static PyObject *
-stringlib_zfill(PyObject *self, PyObject *args)
-{
-    Py_ssize_t fill;
-    PyObject *s;
-    char *p;
-    Py_ssize_t width;
-
-    if (!PyArg_ParseTuple(args, "n:zfill", &width))
-        return NULL;
-
-    if (STRINGLIB_LEN(self) >= width) {
-        if (STRINGLIB_CHECK_EXACT(self)) {
-#if STRINGLIB_MUTABLE
-            /* We're defined as returning a copy;  If the object is mutable
-             * that means we must make an identical copy. */
-            return STRINGLIB_NEW(STRINGLIB_STR(self), STRINGLIB_LEN(self));
-#else
-            Py_INCREF(self);
-            return (PyObject*) self;
-#endif
-        }
-        else
-            return STRINGLIB_NEW(
-                STRINGLIB_STR(self),
-                STRINGLIB_LEN(self)
-            );
-    }
-
-    fill = width - STRINGLIB_LEN(self);
-
-    s = pad(self, fill, 0, '0');
-
-    if (s == NULL)
-        return NULL;
-
-    p = STRINGLIB_STR(s);
-    if (p[fill] == '+' || p[fill] == '-') {
-        /* move sign to beginning of string */
-        p[0] = p[fill];
-        p[fill] = '0';
-    }
-
-    return (PyObject*) s;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/unicodedefs.h b/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/unicodedefs.h
deleted file mode 100644
index ecb4425..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringlib/unicodedefs.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef STRINGLIB_UNICODEDEFS_H
-#define STRINGLIB_UNICODEDEFS_H
-
-/* this is sort of a hack.  there's at least one place (formatting
-   floats) where some stringlib code takes a different path if it's
-   compiled as unicode. */
-#define STRINGLIB_IS_UNICODE     1
-
-#define STRINGLIB_OBJECT         PyUnicodeObject
-#define STRINGLIB_CHAR           Py_UNICODE
-#define STRINGLIB_TYPE_NAME      "unicode"
-#define STRINGLIB_PARSE_CODE     "U"
-#define STRINGLIB_EMPTY          unicode_empty
-#define STRINGLIB_ISSPACE        Py_UNICODE_ISSPACE
-#define STRINGLIB_ISLINEBREAK    BLOOM_LINEBREAK
-#define STRINGLIB_ISDECIMAL      Py_UNICODE_ISDECIMAL
-#define STRINGLIB_TODECIMAL      Py_UNICODE_TODECIMAL
-#define STRINGLIB_TOUPPER        Py_UNICODE_TOUPPER
-#define STRINGLIB_TOLOWER        Py_UNICODE_TOLOWER
-#define STRINGLIB_FILL           Py_UNICODE_FILL
-#define STRINGLIB_STR            PyUnicode_AS_UNICODE
-#define STRINGLIB_LEN            PyUnicode_GET_SIZE
-#define STRINGLIB_NEW            PyUnicode_FromUnicode
-#define STRINGLIB_RESIZE         PyUnicode_Resize
-#define STRINGLIB_CHECK          PyUnicode_Check
-#define STRINGLIB_CHECK_EXACT    PyUnicode_CheckExact
-#define STRINGLIB_GROUPING       _PyUnicode_InsertThousandsGrouping
-
-#if PY_VERSION_HEX < 0x03000000
-#define STRINGLIB_TOSTR          PyObject_Unicode
-#else
-#define STRINGLIB_TOSTR          PyObject_Str
-#endif
-
-#define STRINGLIB_WANT_CONTAINS_OBJ 1
-
-#endif /* !STRINGLIB_UNICODEDEFS_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/stringobject.c
deleted file mode 100644
index 3d3c641..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/stringobject.c
+++ /dev/null
@@ -1,4824 +0,0 @@
-/* String (str/bytes) object implementation */
-
-#define PY_SSIZE_T_CLEAN
-
-#include "Python.h"
-#include <ctype.h>
-#include <stddef.h>
-
-#ifdef COUNT_ALLOCS
-Py_ssize_t null_strings, one_strings;
-#endif
-
-static PyStringObject *characters[UCHAR_MAX + 1];
-static PyStringObject *nullstring;
-
-/* This dictionary holds all interned strings.  Note that references to
-   strings in this dictionary are *not* counted in the string's ob_refcnt.
-   When the interned string reaches a refcnt of 0 the string deallocation
-   function will delete the reference from this dictionary.
-
-   Another way to look at this is that to say that the actual reference
-   count of a string is:  s->ob_refcnt + (s->ob_sstate?2:0)
-*/
-static PyObject *interned;
-
-/* PyStringObject_SIZE gives the basic size of a string; any memory allocation
-   for a string of length n should request PyStringObject_SIZE + n bytes.
-
-   Using PyStringObject_SIZE instead of sizeof(PyStringObject) saves
-   3 bytes per string allocation on a typical system.
-*/
-#define PyStringObject_SIZE (offsetof(PyStringObject, ob_sval) + 1)
-
-/*
-   For PyString_FromString(), the parameter `str' points to a null-terminated
-   string containing exactly `size' bytes.
-
-   For PyString_FromStringAndSize(), the parameter the parameter `str' is
-   either NULL or else points to a string containing at least `size' bytes.
-   For PyString_FromStringAndSize(), the string in the `str' parameter does
-   not have to be null-terminated.  (Therefore it is safe to construct a
-   substring by calling `PyString_FromStringAndSize(origstring, substrlen)'.)
-   If `str' is NULL then PyString_FromStringAndSize() will allocate `size+1'
-   bytes (setting the last byte to the null terminating character) and you can
-   fill in the data yourself.  If `str' is non-NULL then the resulting
-   PyString object must be treated as immutable and you must not fill in nor
-   alter the data yourself, since the strings may be shared.
-
-   The PyObject member `op->ob_size', which denotes the number of "extra
-   items" in a variable-size object, will contain the number of bytes
-   allocated for string data, not counting the null terminating character.
-   It is therefore equal to the `size' parameter (for
-   PyString_FromStringAndSize()) or the length of the string in the `str'
-   parameter (for PyString_FromString()).
-*/
-PyObject *
-PyString_FromStringAndSize(const char *str, Py_ssize_t size)
-{
-    register PyStringObject *op;
-    if (size < 0) {
-        PyErr_SetString(PyExc_SystemError,
-            "Negative size passed to PyString_FromStringAndSize");
-        return NULL;
-    }
-    if (size == 0 && (op = nullstring) != NULL) {
-#ifdef COUNT_ALLOCS
-        null_strings++;
-#endif
-        Py_INCREF(op);
-        return (PyObject *)op;
-    }
-    if (size == 1 && str != NULL &&
-        (op = characters[*str & UCHAR_MAX]) != NULL)
-    {
-#ifdef COUNT_ALLOCS
-        one_strings++;
-#endif
-        Py_INCREF(op);
-        return (PyObject *)op;
-    }
-
-    if (size > PY_SSIZE_T_MAX - PyStringObject_SIZE) {
-        PyErr_SetString(PyExc_OverflowError, "string is too large");
-        return NULL;
-    }
-
-    /* Inline PyObject_NewVar */
-    op = (PyStringObject *)PyObject_MALLOC(PyStringObject_SIZE + size);
-    if (op == NULL)
-        return PyErr_NoMemory();
-    PyObject_INIT_VAR(op, &PyString_Type, size);
-    op->ob_shash = -1;
-    op->ob_sstate = SSTATE_NOT_INTERNED;
-    if (str != NULL)
-        Py_MEMCPY(op->ob_sval, str, size);
-    op->ob_sval[size] = '\0';
-    /* share short strings */
-    if (size == 0) {
-        PyObject *t = (PyObject *)op;
-        PyString_InternInPlace(&t);
-        op = (PyStringObject *)t;
-        nullstring = op;
-        Py_INCREF(op);
-    } else if (size == 1 && str != NULL) {
-        PyObject *t = (PyObject *)op;
-        PyString_InternInPlace(&t);
-        op = (PyStringObject *)t;
-        characters[*str & UCHAR_MAX] = op;
-        Py_INCREF(op);
-    }
-    return (PyObject *) op;
-}
-
-PyObject *
-PyString_FromString(const char *str)
-{
-    register size_t size;
-    register PyStringObject *op;
-
-    assert(str != NULL);
-    size = strlen(str);
-    if (size > PY_SSIZE_T_MAX - PyStringObject_SIZE) {
-        PyErr_SetString(PyExc_OverflowError,
-            "string is too long for a Python string");
-        return NULL;
-    }
-    if (size == 0 && (op = nullstring) != NULL) {
-#ifdef COUNT_ALLOCS
-        null_strings++;
-#endif
-        Py_INCREF(op);
-        return (PyObject *)op;
-    }
-    if (size == 1 && (op = characters[*str & UCHAR_MAX]) != NULL) {
-#ifdef COUNT_ALLOCS
-        one_strings++;
-#endif
-        Py_INCREF(op);
-        return (PyObject *)op;
-    }
-
-    /* Inline PyObject_NewVar */
-    op = (PyStringObject *)PyObject_MALLOC(PyStringObject_SIZE + size);
-    if (op == NULL)
-        return PyErr_NoMemory();
-    PyObject_INIT_VAR(op, &PyString_Type, size);
-    op->ob_shash = -1;
-    op->ob_sstate = SSTATE_NOT_INTERNED;
-    Py_MEMCPY(op->ob_sval, str, size+1);
-    /* share short strings */
-    if (size == 0) {
-        PyObject *t = (PyObject *)op;
-        PyString_InternInPlace(&t);
-        op = (PyStringObject *)t;
-        nullstring = op;
-        Py_INCREF(op);
-    } else if (size == 1) {
-        PyObject *t = (PyObject *)op;
-        PyString_InternInPlace(&t);
-        op = (PyStringObject *)t;
-        characters[*str & UCHAR_MAX] = op;
-        Py_INCREF(op);
-    }
-    return (PyObject *) op;
-}
-
-PyObject *
-PyString_FromFormatV(const char *format, va_list vargs)
-{
-    va_list count;
-    Py_ssize_t n = 0;
-    const char* f;
-    char *s;
-    PyObject* string;
-
-#ifdef VA_LIST_IS_ARRAY
-    Py_MEMCPY(count, vargs, sizeof(va_list));
-#else
-#ifdef  __va_copy
-    __va_copy(count, vargs);
-#else
-    count = vargs;
-#endif
-#endif
-    /* step 1: figure out how large a buffer we need */
-    for (f = format; *f; f++) {
-        if (*f == '%') {
-#ifdef HAVE_LONG_LONG
-            int longlongflag = 0;
-#endif
-            const char* p = f;
-            while (*++f && *f != '%' && !isalpha(Py_CHARMASK(*f)))
-                ;
-
-            /* skip the 'l' or 'z' in {%ld, %zd, %lu, %zu} since
-             * they don't affect the amount of space we reserve.
-             */
-            if (*f == 'l') {
-                if (f[1] == 'd' || f[1] == 'u') {
-                    ++f;
-                }
-#ifdef HAVE_LONG_LONG
-                else if (f[1] == 'l' &&
-                         (f[2] == 'd' || f[2] == 'u')) {
-                    longlongflag = 1;
-                    f += 2;
-                }
-#endif
-            }
-            else if (*f == 'z' && (f[1] == 'd' || f[1] == 'u')) {
-                ++f;
-            }
-
-            switch (*f) {
-            case 'c':
-                (void)va_arg(count, int);
-                /* fall through... */
-            case '%':
-                n++;
-                break;
-            case 'd': case 'u': case 'i': case 'x':
-                (void) va_arg(count, int);
-#ifdef HAVE_LONG_LONG
-                /* Need at most
-                   ceil(log10(256)*SIZEOF_LONG_LONG) digits,
-                   plus 1 for the sign.  53/22 is an upper
-                   bound for log10(256). */
-                if (longlongflag)
-                    n += 2 + (SIZEOF_LONG_LONG*53-1) / 22;
-                else
-#endif
-                    /* 20 bytes is enough to hold a 64-bit
-                       integer.  Decimal takes the most
-                       space.  This isn't enough for
-                       octal. */
-                    n += 20;
-
-                break;
-            case 's':
-                s = va_arg(count, char*);
-                n += strlen(s);
-                break;
-            case 'p':
-                (void) va_arg(count, int);
-                /* maximum 64-bit pointer representation:
-                 * 0xffffffffffffffff
-                 * so 19 characters is enough.
-                 * XXX I count 18 -- what's the extra for?
-                 */
-                n += 19;
-                break;
-            default:
-                /* if we stumble upon an unknown
-                   formatting code, copy the rest of
-                   the format string to the output
-                   string. (we cannot just skip the
-                   code, since there's no way to know
-                   what's in the argument list) */
-                n += strlen(p);
-                goto expand;
-            }
-        } else
-            n++;
-    }
- expand:
-    /* step 2: fill the buffer */
-    /* Since we've analyzed how much space we need for the worst case,
-       use sprintf directly instead of the slower PyOS_snprintf. */
-    string = PyString_FromStringAndSize(NULL, n);
-    if (!string)
-        return NULL;
-
-    s = PyString_AsString(string);
-
-    for (f = format; *f; f++) {
-        if (*f == '%') {
-            const char* p = f++;
-            Py_ssize_t i;
-            int longflag = 0;
-#ifdef HAVE_LONG_LONG
-            int longlongflag = 0;
-#endif
-            int size_tflag = 0;
-            /* parse the width.precision part (we're only
-               interested in the precision value, if any) */
-            n = 0;
-            while (isdigit(Py_CHARMASK(*f)))
-                n = (n*10) + *f++ - '0';
-            if (*f == '.') {
-                f++;
-                n = 0;
-                while (isdigit(Py_CHARMASK(*f)))
-                    n = (n*10) + *f++ - '0';
-            }
-            while (*f && *f != '%' && !isalpha(Py_CHARMASK(*f)))
-                f++;
-            /* Handle %ld, %lu, %lld and %llu. */
-            if (*f == 'l') {
-                if (f[1] == 'd' || f[1] == 'u') {
-                    longflag = 1;
-                    ++f;
-                }
-#ifdef HAVE_LONG_LONG
-                else if (f[1] == 'l' &&
-                         (f[2] == 'd' || f[2] == 'u')) {
-                    longlongflag = 1;
-                    f += 2;
-                }
-#endif
-            }
-            /* handle the size_t flag. */
-            else if (*f == 'z' && (f[1] == 'd' || f[1] == 'u')) {
-                size_tflag = 1;
-                ++f;
-            }
-
-            switch (*f) {
-            case 'c':
-                *s++ = va_arg(vargs, int);
-                break;
-            case 'd':
-                if (longflag)
-                    sprintf(s, "%ld", va_arg(vargs, long));
-#ifdef HAVE_LONG_LONG
-                else if (longlongflag)
-                    sprintf(s, "%" PY_FORMAT_LONG_LONG "d",
-                        va_arg(vargs, PY_LONG_LONG));
-#endif
-                else if (size_tflag)
-                    sprintf(s, "%" PY_FORMAT_SIZE_T "d",
-                        va_arg(vargs, Py_ssize_t));
-                else
-                    sprintf(s, "%d", va_arg(vargs, int));
-                s += strlen(s);
-                break;
-            case 'u':
-                if (longflag)
-                    sprintf(s, "%lu",
-                        va_arg(vargs, unsigned long));
-#ifdef HAVE_LONG_LONG
-                else if (longlongflag)
-                    sprintf(s, "%" PY_FORMAT_LONG_LONG "u",
-                        va_arg(vargs, PY_LONG_LONG));
-#endif
-                else if (size_tflag)
-                    sprintf(s, "%" PY_FORMAT_SIZE_T "u",
-                        va_arg(vargs, size_t));
-                else
-                    sprintf(s, "%u",
-                        va_arg(vargs, unsigned int));
-                s += strlen(s);
-                break;
-            case 'i':
-                sprintf(s, "%i", va_arg(vargs, int));
-                s += strlen(s);
-                break;
-            case 'x':
-                sprintf(s, "%x", va_arg(vargs, int));
-                s += strlen(s);
-                break;
-            case 's':
-                p = va_arg(vargs, char*);
-                i = strlen(p);
-                if (n > 0 && i > n)
-                    i = n;
-                Py_MEMCPY(s, p, i);
-                s += i;
-                break;
-            case 'p':
-                sprintf(s, "%p", va_arg(vargs, void*));
-                /* %p is ill-defined:  ensure leading 0x. */
-                if (s[1] == 'X')
-                    s[1] = 'x';
-                else if (s[1] != 'x') {
-                    memmove(s+2, s, strlen(s)+1);
-                    s[0] = '0';
-                    s[1] = 'x';
-                }
-                s += strlen(s);
-                break;
-            case '%':
-                *s++ = '%';
-                break;
-            default:
-                strcpy(s, p);
-                s += strlen(s);
-                goto end;
-            }
-        } else
-            *s++ = *f;
-    }
-
- end:
-    if (_PyString_Resize(&string, s - PyString_AS_STRING(string)))
-        return NULL;
-    return string;
-}
-
-PyObject *
-PyString_FromFormat(const char *format, ...)
-{
-    PyObject* ret;
-    va_list vargs;
-
-#ifdef HAVE_STDARG_PROTOTYPES
-    va_start(vargs, format);
-#else
-    va_start(vargs);
-#endif
-    ret = PyString_FromFormatV(format, vargs);
-    va_end(vargs);
-    return ret;
-}
-
-
-PyObject *PyString_Decode(const char *s,
-                          Py_ssize_t size,
-                          const char *encoding,
-                          const char *errors)
-{
-    PyObject *v, *str;
-
-    str = PyString_FromStringAndSize(s, size);
-    if (str == NULL)
-        return NULL;
-    v = PyString_AsDecodedString(str, encoding, errors);
-    Py_DECREF(str);
-    return v;
-}
-
-PyObject *PyString_AsDecodedObject(PyObject *str,
-                                   const char *encoding,
-                                   const char *errors)
-{
-    PyObject *v;
-
-    if (!PyString_Check(str)) {
-        PyErr_BadArgument();
-        goto onError;
-    }
-
-    if (encoding == NULL) {
-#ifdef Py_USING_UNICODE
-        encoding = PyUnicode_GetDefaultEncoding();
-#else
-        PyErr_SetString(PyExc_ValueError, "no encoding specified");
-        goto onError;
-#endif
-    }
-
-    /* Decode via the codec registry */
-    v = PyCodec_Decode(str, encoding, errors);
-    if (v == NULL)
-        goto onError;
-
-    return v;
-
- onError:
-    return NULL;
-}
-
-PyObject *PyString_AsDecodedString(PyObject *str,
-                                   const char *encoding,
-                                   const char *errors)
-{
-    PyObject *v;
-
-    v = PyString_AsDecodedObject(str, encoding, errors);
-    if (v == NULL)
-        goto onError;
-
-#ifdef Py_USING_UNICODE
-    /* Convert Unicode to a string using the default encoding */
-    if (PyUnicode_Check(v)) {
-        PyObject *temp = v;
-        v = PyUnicode_AsEncodedString(v, NULL, NULL);
-        Py_DECREF(temp);
-        if (v == NULL)
-            goto onError;
-    }
-#endif
-    if (!PyString_Check(v)) {
-        PyErr_Format(PyExc_TypeError,
-                     "decoder did not return a string object (type=%.400s)",
-                     Py_TYPE(v)->tp_name);
-        Py_DECREF(v);
-        goto onError;
-    }
-
-    return v;
-
- onError:
-    return NULL;
-}
-
-PyObject *PyString_Encode(const char *s,
-                          Py_ssize_t size,
-                          const char *encoding,
-                          const char *errors)
-{
-    PyObject *v, *str;
-
-    str = PyString_FromStringAndSize(s, size);
-    if (str == NULL)
-        return NULL;
-    v = PyString_AsEncodedString(str, encoding, errors);
-    Py_DECREF(str);
-    return v;
-}
-
-PyObject *PyString_AsEncodedObject(PyObject *str,
-                                   const char *encoding,
-                                   const char *errors)
-{
-    PyObject *v;
-
-    if (!PyString_Check(str)) {
-        PyErr_BadArgument();
-        goto onError;
-    }
-
-    if (encoding == NULL) {
-#ifdef Py_USING_UNICODE
-        encoding = PyUnicode_GetDefaultEncoding();
-#else
-        PyErr_SetString(PyExc_ValueError, "no encoding specified");
-        goto onError;
-#endif
-    }
-
-    /* Encode via the codec registry */
-    v = PyCodec_Encode(str, encoding, errors);
-    if (v == NULL)
-        goto onError;
-
-    return v;
-
- onError:
-    return NULL;
-}
-
-PyObject *PyString_AsEncodedString(PyObject *str,
-                                   const char *encoding,
-                                   const char *errors)
-{
-    PyObject *v;
-
-    v = PyString_AsEncodedObject(str, encoding, errors);
-    if (v == NULL)
-        goto onError;
-
-#ifdef Py_USING_UNICODE
-    /* Convert Unicode to a string using the default encoding */
-    if (PyUnicode_Check(v)) {
-        PyObject *temp = v;
-        v = PyUnicode_AsEncodedString(v, NULL, NULL);
-        Py_DECREF(temp);
-        if (v == NULL)
-            goto onError;
-    }
-#endif
-    if (!PyString_Check(v)) {
-        PyErr_Format(PyExc_TypeError,
-                     "encoder did not return a string object (type=%.400s)",
-                     Py_TYPE(v)->tp_name);
-        Py_DECREF(v);
-        goto onError;
-    }
-
-    return v;
-
- onError:
-    return NULL;
-}
-
-static void
-string_dealloc(PyObject *op)
-{
-    switch (PyString_CHECK_INTERNED(op)) {
-        case SSTATE_NOT_INTERNED:
-            break;
-
-        case SSTATE_INTERNED_MORTAL:
-            /* revive dead object temporarily for DelItem */
-            Py_REFCNT(op) = 3;
-            if (PyDict_DelItem(interned, op) != 0)
-                Py_FatalError(
-                    "deletion of interned string failed");
-            break;
-
-        case SSTATE_INTERNED_IMMORTAL:
-            Py_FatalError("Immortal interned string died.");
-
-        default:
-            Py_FatalError("Inconsistent interned string state.");
-    }
-    Py_TYPE(op)->tp_free(op);
-}
-
-/* Unescape a backslash-escaped string. If unicode is non-zero,
-   the string is a u-literal. If recode_encoding is non-zero,
-   the string is UTF-8 encoded and should be re-encoded in the
-   specified encoding.  */
-
-PyObject *PyString_DecodeEscape(const char *s,
-                                Py_ssize_t len,
-                                const char *errors,
-                                Py_ssize_t unicode,
-                                const char *recode_encoding)
-{
-    int c;
-    char *p, *buf;
-    const char *end;
-    PyObject *v;
-    Py_ssize_t newlen = recode_encoding ? 4*len:len;
-    v = PyString_FromStringAndSize((char *)NULL, newlen);
-    if (v == NULL)
-        return NULL;
-    p = buf = PyString_AsString(v);
-    end = s + len;
-    while (s < end) {
-        if (*s != '\\') {
-          non_esc:
-#ifdef Py_USING_UNICODE
-            if (recode_encoding && (*s & 0x80)) {
-                PyObject *u, *w;
-                char *r;
-                const char* t;
-                Py_ssize_t rn;
-                t = s;
-                /* Decode non-ASCII bytes as UTF-8. */
-                while (t < end && (*t & 0x80)) t++;
-                u = PyUnicode_DecodeUTF8(s, t - s, errors);
-                if(!u) goto failed;
-
-                /* Recode them in target encoding. */
-                w = PyUnicode_AsEncodedString(
-                    u, recode_encoding, errors);
-                Py_DECREF(u);
-                if (!w)                 goto failed;
-
-                /* Append bytes to output buffer. */
-                assert(PyString_Check(w));
-                r = PyString_AS_STRING(w);
-                rn = PyString_GET_SIZE(w);
-                Py_MEMCPY(p, r, rn);
-                p += rn;
-                Py_DECREF(w);
-                s = t;
-            } else {
-                *p++ = *s++;
-            }
-#else
-            *p++ = *s++;
-#endif
-            continue;
-        }
-        s++;
-        if (s==end) {
-            PyErr_SetString(PyExc_ValueError,
-                            "Trailing \\ in string");
-            goto failed;
-        }
-        switch (*s++) {
-        /* XXX This assumes ASCII! */
-        case '\n': break;
-        case '\\': *p++ = '\\'; break;
-        case '\'': *p++ = '\''; break;
-        case '\"': *p++ = '\"'; break;
-        case 'b': *p++ = '\b'; break;
-        case 'f': *p++ = '\014'; break; /* FF */
-        case 't': *p++ = '\t'; break;
-        case 'n': *p++ = '\n'; break;
-        case 'r': *p++ = '\r'; break;
-        case 'v': *p++ = '\013'; break; /* VT */
-        case 'a': *p++ = '\007'; break; /* BEL, not classic C */
-        case '0': case '1': case '2': case '3':
-        case '4': case '5': case '6': case '7':
-            c = s[-1] - '0';
-            if (s < end && '0' <= *s && *s <= '7') {
-                c = (c<<3) + *s++ - '0';
-                if (s < end && '0' <= *s && *s <= '7')
-                    c = (c<<3) + *s++ - '0';
-            }
-            *p++ = c;
-            break;
-        case 'x':
-            if (s+1 < end &&
-                isxdigit(Py_CHARMASK(s[0])) &&
-                isxdigit(Py_CHARMASK(s[1])))
-            {
-                unsigned int x = 0;
-                c = Py_CHARMASK(*s);
-                s++;
-                if (isdigit(c))
-                    x = c - '0';
-                else if (islower(c))
-                    x = 10 + c - 'a';
-                else
-                    x = 10 + c - 'A';
-                x = x << 4;
-                c = Py_CHARMASK(*s);
-                s++;
-                if (isdigit(c))
-                    x += c - '0';
-                else if (islower(c))
-                    x += 10 + c - 'a';
-                else
-                    x += 10 + c - 'A';
-                *p++ = x;
-                break;
-            }
-            if (!errors || strcmp(errors, "strict") == 0) {
-                PyErr_SetString(PyExc_ValueError,
-                                "invalid \\x escape");
-                goto failed;
-            }
-            if (strcmp(errors, "replace") == 0) {
-                *p++ = '?';
-            } else if (strcmp(errors, "ignore") == 0)
-                /* do nothing */;
-            else {
-                PyErr_Format(PyExc_ValueError,
-                             "decoding error; "
-                             "unknown error handling code: %.400s",
-                             errors);
-                goto failed;
-            }
-#ifndef Py_USING_UNICODE
-        case 'u':
-        case 'U':
-        case 'N':
-            if (unicode) {
-                PyErr_SetString(PyExc_ValueError,
-                          "Unicode escapes not legal "
-                          "when Unicode disabled");
-                goto failed;
-            }
-#endif
-        default:
-            *p++ = '\\';
-            s--;
-            goto non_esc; /* an arbitrary number of unescaped
-                             UTF-8 bytes may follow. */
-        }
-    }
-    if (p-buf < newlen && _PyString_Resize(&v, p - buf))
-        goto failed;
-    return v;
-  failed:
-    Py_DECREF(v);
-    return NULL;
-}
-
-/* -------------------------------------------------------------------- */
-/* object api */
-
-static Py_ssize_t
-string_getsize(register PyObject *op)
-{
-    char *s;
-    Py_ssize_t len;
-    if (PyString_AsStringAndSize(op, &s, &len))
-        return -1;
-    return len;
-}
-
-static /*const*/ char *
-string_getbuffer(register PyObject *op)
-{
-    char *s;
-    Py_ssize_t len;
-    if (PyString_AsStringAndSize(op, &s, &len))
-        return NULL;
-    return s;
-}
-
-Py_ssize_t
-PyString_Size(register PyObject *op)
-{
-    if (!PyString_Check(op))
-        return string_getsize(op);
-    return Py_SIZE(op);
-}
-
-/*const*/ char *
-PyString_AsString(register PyObject *op)
-{
-    if (!PyString_Check(op))
-        return string_getbuffer(op);
-    return ((PyStringObject *)op) -> ob_sval;
-}
-
-int
-PyString_AsStringAndSize(register PyObject *obj,
-                         register char **s,
-                         register Py_ssize_t *len)
-{
-    if (s == NULL) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-
-    if (!PyString_Check(obj)) {
-#ifdef Py_USING_UNICODE
-        if (PyUnicode_Check(obj)) {
-            obj = _PyUnicode_AsDefaultEncodedString(obj, NULL);
-            if (obj == NULL)
-                return -1;
-        }
-        else
-#endif
-        {
-            PyErr_Format(PyExc_TypeError,
-                         "expected string or Unicode object, "
-                         "%.200s found", Py_TYPE(obj)->tp_name);
-            return -1;
-        }
-    }
-
-    *s = PyString_AS_STRING(obj);
-    if (len != NULL)
-        *len = PyString_GET_SIZE(obj);
-    else if (strlen(*s) != (size_t)PyString_GET_SIZE(obj)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "expected string without null bytes");
-        return -1;
-    }
-    return 0;
-}
-
-/* -------------------------------------------------------------------- */
-/* Methods */
-
-#include "stringlib/stringdefs.h"
-#include "stringlib/fastsearch.h"
-
-#include "stringlib/count.h"
-#include "stringlib/find.h"
-#include "stringlib/partition.h"
-#include "stringlib/split.h"
-
-#define _Py_InsertThousandsGrouping _PyString_InsertThousandsGrouping
-#include "stringlib/localeutil.h"
-
-
-
-static int
-string_print(PyStringObject *op, FILE *fp, int flags)
-{
-    Py_ssize_t i, str_len;
-    char c;
-    int quote;
-
-    /* XXX Ought to check for interrupts when writing long strings */
-    if (! PyString_CheckExact(op)) {
-        int ret;
-        /* A str subclass may have its own __str__ method. */
-        op = (PyStringObject *) PyObject_Str((PyObject *)op);
-        if (op == NULL)
-            return -1;
-        ret = string_print(op, fp, flags);
-        Py_DECREF(op);
-        return ret;
-    }
-    if (flags & Py_PRINT_RAW) {
-        char *data = op->ob_sval;
-        Py_ssize_t size = Py_SIZE(op);
-        Py_BEGIN_ALLOW_THREADS
-        while (size > INT_MAX) {
-            /* Very long strings cannot be written atomically.
-             * But don't write exactly INT_MAX bytes at a time
-             * to avoid memory aligment issues.
-             */
-            const int chunk_size = INT_MAX & ~0x3FFF;
-            fwrite(data, 1, chunk_size, fp);
-            data += chunk_size;
-            size -= chunk_size;
-        }
-#ifdef __VMS
-        if (size) fwrite(data, (int)size, 1, fp);
-#else
-        fwrite(data, 1, (int)size, fp);
-#endif
-        Py_END_ALLOW_THREADS
-        return 0;
-    }
-
-    /* figure out which quote to use; single is preferred */
-    quote = '\'';
-    if (memchr(op->ob_sval, '\'', Py_SIZE(op)) &&
-        !memchr(op->ob_sval, '"', Py_SIZE(op)))
-        quote = '"';
-
-    str_len = Py_SIZE(op);
-    Py_BEGIN_ALLOW_THREADS
-    fputc(quote, fp);
-    for (i = 0; i < str_len; i++) {
-        /* Since strings are immutable and the caller should have a
-        reference, accessing the interal buffer should not be an issue
-        with the GIL released. */
-        c = op->ob_sval[i];
-        if (c == quote || c == '\\')
-            fprintf(fp, "\\%c", c);
-        else if (c == '\t')
-            fprintf(fp, "\\t");
-        else if (c == '\n')
-            fprintf(fp, "\\n");
-        else if (c == '\r')
-            fprintf(fp, "\\r");
-        else if (c < ' ' || c >= 0x7f)
-            fprintf(fp, "\\x%02x", c & 0xff);
-        else
-            fputc(c, fp);
-    }
-    fputc(quote, fp);
-    Py_END_ALLOW_THREADS
-    return 0;
-}
-
-PyObject *
-PyString_Repr(PyObject *obj, int smartquotes)
-{
-    register PyStringObject* op = (PyStringObject*) obj;
-    size_t newsize = 2 + 4 * Py_SIZE(op);
-    PyObject *v;
-    if (newsize > PY_SSIZE_T_MAX || newsize / 4 != Py_SIZE(op)) {
-        PyErr_SetString(PyExc_OverflowError,
-            "string is too large to make repr");
-        return NULL;
-    }
-    v = PyString_FromStringAndSize((char *)NULL, newsize);
-    if (v == NULL) {
-        return NULL;
-    }
-    else {
-        register Py_ssize_t i;
-        register char c;
-        register char *p;
-        int quote;
-
-        /* figure out which quote to use; single is preferred */
-        quote = '\'';
-        if (smartquotes &&
-            memchr(op->ob_sval, '\'', Py_SIZE(op)) &&
-            !memchr(op->ob_sval, '"', Py_SIZE(op)))
-            quote = '"';
-
-        p = PyString_AS_STRING(v);
-        *p++ = quote;
-        for (i = 0; i < Py_SIZE(op); i++) {
-            /* There's at least enough room for a hex escape
-               and a closing quote. */
-            assert(newsize - (p - PyString_AS_STRING(v)) >= 5);
-            c = op->ob_sval[i];
-            if (c == quote || c == '\\')
-                *p++ = '\\', *p++ = c;
-            else if (c == '\t')
-                *p++ = '\\', *p++ = 't';
-            else if (c == '\n')
-                *p++ = '\\', *p++ = 'n';
-            else if (c == '\r')
-                *p++ = '\\', *p++ = 'r';
-            else if (c < ' ' || c >= 0x7f) {
-                /* For performance, we don't want to call
-                   PyOS_snprintf here (extra layers of
-                   function call). */
-                sprintf(p, "\\x%02x", c & 0xff);
-                p += 4;
-            }
-            else
-                *p++ = c;
-        }
-        assert(newsize - (p - PyString_AS_STRING(v)) >= 1);
-        *p++ = quote;
-        *p = '\0';
-        if (_PyString_Resize(&v, (p - PyString_AS_STRING(v))))
-            return NULL;
-        return v;
-    }
-}
-
-static PyObject *
-string_repr(PyObject *op)
-{
-    return PyString_Repr(op, 1);
-}
-
-static PyObject *
-string_str(PyObject *s)
-{
-    assert(PyString_Check(s));
-    if (PyString_CheckExact(s)) {
-        Py_INCREF(s);
-        return s;
-    }
-    else {
-        /* Subtype -- return genuine string with the same value. */
-        PyStringObject *t = (PyStringObject *) s;
-        return PyString_FromStringAndSize(t->ob_sval, Py_SIZE(t));
-    }
-}
-
-static Py_ssize_t
-string_length(PyStringObject *a)
-{
-    return Py_SIZE(a);
-}
-
-static PyObject *
-string_concat(register PyStringObject *a, register PyObject *bb)
-{
-    register Py_ssize_t size;
-    register PyStringObject *op;
-    if (!PyString_Check(bb)) {
-#ifdef Py_USING_UNICODE
-        if (PyUnicode_Check(bb))
-            return PyUnicode_Concat((PyObject *)a, bb);
-#endif
-        if (PyByteArray_Check(bb))
-            return PyByteArray_Concat((PyObject *)a, bb);
-        PyErr_Format(PyExc_TypeError,
-                     "cannot concatenate 'str' and '%.200s' objects",
-                     Py_TYPE(bb)->tp_name);
-        return NULL;
-    }
-#define b ((PyStringObject *)bb)
-    /* Optimize cases with empty left or right operand */
-    if ((Py_SIZE(a) == 0 || Py_SIZE(b) == 0) &&
-        PyString_CheckExact(a) && PyString_CheckExact(b)) {
-        if (Py_SIZE(a) == 0) {
-            Py_INCREF(bb);
-            return bb;
-        }
-        Py_INCREF(a);
-        return (PyObject *)a;
-    }
-    size = Py_SIZE(a) + Py_SIZE(b);
-    /* Check that string sizes are not negative, to prevent an
-       overflow in cases where we are passed incorrectly-created
-       strings with negative lengths (due to a bug in other code).
-    */
-    if (Py_SIZE(a) < 0 || Py_SIZE(b) < 0 ||
-        Py_SIZE(a) > PY_SSIZE_T_MAX - Py_SIZE(b)) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "strings are too large to concat");
-        return NULL;
-    }
-
-    /* Inline PyObject_NewVar */
-    if (size > PY_SSIZE_T_MAX - PyStringObject_SIZE) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "strings are too large to concat");
-        return NULL;
-    }
-    op = (PyStringObject *)PyObject_MALLOC(PyStringObject_SIZE + size);
-    if (op == NULL)
-        return PyErr_NoMemory();
-    PyObject_INIT_VAR(op, &PyString_Type, size);
-    op->ob_shash = -1;
-    op->ob_sstate = SSTATE_NOT_INTERNED;
-    Py_MEMCPY(op->ob_sval, a->ob_sval, Py_SIZE(a));
-    Py_MEMCPY(op->ob_sval + Py_SIZE(a), b->ob_sval, Py_SIZE(b));
-    op->ob_sval[size] = '\0';
-    return (PyObject *) op;
-#undef b
-}
-
-static PyObject *
-string_repeat(register PyStringObject *a, register Py_ssize_t n)
-{
-    register Py_ssize_t i;
-    register Py_ssize_t j;
-    register Py_ssize_t size;
-    register PyStringObject *op;
-    size_t nbytes;
-    if (n < 0)
-        n = 0;
-    /* watch out for overflows:  the size can overflow int,
-     * and the # of bytes needed can overflow size_t
-     */
-    size = Py_SIZE(a) * n;
-    if (n && size / n != Py_SIZE(a)) {
-        PyErr_SetString(PyExc_OverflowError,
-            "repeated string is too long");
-        return NULL;
-    }
-    if (size == Py_SIZE(a) && PyString_CheckExact(a)) {
-        Py_INCREF(a);
-        return (PyObject *)a;
-    }
-    nbytes = (size_t)size;
-    if (nbytes + PyStringObject_SIZE <= nbytes) {
-        PyErr_SetString(PyExc_OverflowError,
-            "repeated string is too long");
-        return NULL;
-    }
-    op = (PyStringObject *)PyObject_MALLOC(PyStringObject_SIZE + nbytes);
-    if (op == NULL)
-        return PyErr_NoMemory();
-    PyObject_INIT_VAR(op, &PyString_Type, size);
-    op->ob_shash = -1;
-    op->ob_sstate = SSTATE_NOT_INTERNED;
-    op->ob_sval[size] = '\0';
-    if (Py_SIZE(a) == 1 && n > 0) {
-        memset(op->ob_sval, a->ob_sval[0] , n);
-        return (PyObject *) op;
-    }
-    i = 0;
-    if (i < size) {
-        Py_MEMCPY(op->ob_sval, a->ob_sval, Py_SIZE(a));
-        i = Py_SIZE(a);
-    }
-    while (i < size) {
-        j = (i <= size-i)  ?  i  :  size-i;
-        Py_MEMCPY(op->ob_sval+i, op->ob_sval, j);
-        i += j;
-    }
-    return (PyObject *) op;
-}
-
-/* String slice a[i:j] consists of characters a[i] ... a[j-1] */
-
-static PyObject *
-string_slice(register PyStringObject *a, register Py_ssize_t i,
-             register Py_ssize_t j)
-     /* j -- may be negative! */
-{
-    if (i < 0)
-        i = 0;
-    if (j < 0)
-        j = 0; /* Avoid signed/unsigned bug in next line */
-    if (j > Py_SIZE(a))
-        j = Py_SIZE(a);
-    if (i == 0 && j == Py_SIZE(a) && PyString_CheckExact(a)) {
-        /* It's the same as a */
-        Py_INCREF(a);
-        return (PyObject *)a;
-    }
-    if (j < i)
-        j = i;
-    return PyString_FromStringAndSize(a->ob_sval + i, j-i);
-}
-
-static int
-string_contains(PyObject *str_obj, PyObject *sub_obj)
-{
-    if (!PyString_CheckExact(sub_obj)) {
-#ifdef Py_USING_UNICODE
-        if (PyUnicode_Check(sub_obj))
-            return PyUnicode_Contains(str_obj, sub_obj);
-#endif
-        if (!PyString_Check(sub_obj)) {
-            PyErr_Format(PyExc_TypeError,
-                "'in <string>' requires string as left operand, "
-                "not %.200s", Py_TYPE(sub_obj)->tp_name);
-            return -1;
-        }
-    }
-
-    return stringlib_contains_obj(str_obj, sub_obj);
-}
-
-static PyObject *
-string_item(PyStringObject *a, register Py_ssize_t i)
-{
-    char pchar;
-    PyObject *v;
-    if (i < 0 || i >= Py_SIZE(a)) {
-        PyErr_SetString(PyExc_IndexError, "string index out of range");
-        return NULL;
-    }
-    pchar = a->ob_sval[i];
-    v = (PyObject *)characters[pchar & UCHAR_MAX];
-    if (v == NULL)
-        v = PyString_FromStringAndSize(&pchar, 1);
-    else {
-#ifdef COUNT_ALLOCS
-        one_strings++;
-#endif
-        Py_INCREF(v);
-    }
-    return v;
-}
-
-static PyObject*
-string_richcompare(PyStringObject *a, PyStringObject *b, int op)
-{
-    int c;
-    Py_ssize_t len_a, len_b;
-    Py_ssize_t min_len;
-    PyObject *result;
-
-    /* Make sure both arguments are strings. */
-    if (!(PyString_Check(a) && PyString_Check(b))) {
-        result = Py_NotImplemented;
-        goto out;
-    }
-    if (a == b) {
-        switch (op) {
-        case Py_EQ:case Py_LE:case Py_GE:
-            result = Py_True;
-            goto out;
-        case Py_NE:case Py_LT:case Py_GT:
-            result = Py_False;
-            goto out;
-        }
-    }
-    if (op == Py_EQ) {
-        /* Supporting Py_NE here as well does not save
-           much time, since Py_NE is rarely used.  */
-        if (Py_SIZE(a) == Py_SIZE(b)
-            && (a->ob_sval[0] == b->ob_sval[0]
-            && memcmp(a->ob_sval, b->ob_sval, Py_SIZE(a)) == 0)) {
-            result = Py_True;
-        } else {
-            result = Py_False;
-        }
-        goto out;
-    }
-    len_a = Py_SIZE(a); len_b = Py_SIZE(b);
-    min_len = (len_a < len_b) ? len_a : len_b;
-    if (min_len > 0) {
-        c = Py_CHARMASK(*a->ob_sval) - Py_CHARMASK(*b->ob_sval);
-        if (c==0)
-            c = memcmp(a->ob_sval, b->ob_sval, min_len);
-    } else
-        c = 0;
-    if (c == 0)
-        c = (len_a < len_b) ? -1 : (len_a > len_b) ? 1 : 0;
-    switch (op) {
-    case Py_LT: c = c <  0; break;
-    case Py_LE: c = c <= 0; break;
-    case Py_EQ: assert(0);  break; /* unreachable */
-    case Py_NE: c = c != 0; break;
-    case Py_GT: c = c >  0; break;
-    case Py_GE: c = c >= 0; break;
-    default:
-        result = Py_NotImplemented;
-        goto out;
-    }
-    result = c ? Py_True : Py_False;
-  out:
-    Py_INCREF(result);
-    return result;
-}
-
-int
-_PyString_Eq(PyObject *o1, PyObject *o2)
-{
-    PyStringObject *a = (PyStringObject*) o1;
-    PyStringObject *b = (PyStringObject*) o2;
-    return Py_SIZE(a) == Py_SIZE(b)
-      && *a->ob_sval == *b->ob_sval
-      && memcmp(a->ob_sval, b->ob_sval, Py_SIZE(a)) == 0;
-}
-
-static long
-string_hash(PyStringObject *a)
-{
-    register Py_ssize_t len;
-    register unsigned char *p;
-    register long x;
-
-    if (a->ob_shash != -1)
-        return a->ob_shash;
-    len = Py_SIZE(a);
-    p = (unsigned char *) a->ob_sval;
-    x = *p << 7;
-    while (--len >= 0)
-        x = (1000003*x) ^ *p++;
-    x ^= Py_SIZE(a);
-    if (x == -1)
-        x = -2;
-    a->ob_shash = x;
-    return x;
-}
-
-static PyObject*
-string_subscript(PyStringObject* self, PyObject* item)
-{
-    if (PyIndex_Check(item)) {
-        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-        if (i == -1 && PyErr_Occurred())
-            return NULL;
-        if (i < 0)
-            i += PyString_GET_SIZE(self);
-        return string_item(self, i);
-    }
-    else if (PySlice_Check(item)) {
-        Py_ssize_t start, stop, step, slicelength, cur, i;
-        char* source_buf;
-        char* result_buf;
-        PyObject* result;
-
-        if (PySlice_GetIndicesEx((PySliceObject*)item,
-                         PyString_GET_SIZE(self),
-                         &start, &stop, &step, &slicelength) < 0) {
-            return NULL;
-        }
-
-        if (slicelength <= 0) {
-            return PyString_FromStringAndSize("", 0);
-        }
-        else if (start == 0 && step == 1 &&
-                 slicelength == PyString_GET_SIZE(self) &&
-                 PyString_CheckExact(self)) {
-            Py_INCREF(self);
-            return (PyObject *)self;
-        }
-        else if (step == 1) {
-            return PyString_FromStringAndSize(
-                PyString_AS_STRING(self) + start,
-                slicelength);
-        }
-        else {
-            source_buf = PyString_AsString((PyObject*)self);
-            result_buf = (char *)PyMem_Malloc(slicelength);
-            if (result_buf == NULL)
-                return PyErr_NoMemory();
-
-            for (cur = start, i = 0; i < slicelength;
-                 cur += step, i++) {
-                result_buf[i] = source_buf[cur];
-            }
-
-            result = PyString_FromStringAndSize(result_buf,
-                                                slicelength);
-            PyMem_Free(result_buf);
-            return result;
-        }
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-                     "string indices must be integers, not %.200s",
-                     Py_TYPE(item)->tp_name);
-        return NULL;
-    }
-}
-
-static Py_ssize_t
-string_buffer_getreadbuf(PyStringObject *self, Py_ssize_t index, const void **ptr)
-{
-    if ( index != 0 ) {
-        PyErr_SetString(PyExc_SystemError,
-                        "accessing non-existent string segment");
-        return -1;
-    }
-    *ptr = (void *)self->ob_sval;
-    return Py_SIZE(self);
-}
-
-static Py_ssize_t
-string_buffer_getwritebuf(PyStringObject *self, Py_ssize_t index, const void **ptr)
-{
-    PyErr_SetString(PyExc_TypeError,
-                    "Cannot use string as modifiable buffer");
-    return -1;
-}
-
-static Py_ssize_t
-string_buffer_getsegcount(PyStringObject *self, Py_ssize_t *lenp)
-{
-    if ( lenp )
-        *lenp = Py_SIZE(self);
-    return 1;
-}
-
-static Py_ssize_t
-string_buffer_getcharbuf(PyStringObject *self, Py_ssize_t index, const char **ptr)
-{
-    if ( index != 0 ) {
-        PyErr_SetString(PyExc_SystemError,
-                        "accessing non-existent string segment");
-        return -1;
-    }
-    *ptr = self->ob_sval;
-    return Py_SIZE(self);
-}
-
-static int
-string_buffer_getbuffer(PyStringObject *self, Py_buffer *view, int flags)
-{
-    return PyBuffer_FillInfo(view, (PyObject*)self,
-                             (void *)self->ob_sval, Py_SIZE(self),
-                             1, flags);
-}
-
-static PySequenceMethods string_as_sequence = {
-    (lenfunc)string_length, /*sq_length*/
-    (binaryfunc)string_concat, /*sq_concat*/
-    (ssizeargfunc)string_repeat, /*sq_repeat*/
-    (ssizeargfunc)string_item, /*sq_item*/
-    (ssizessizeargfunc)string_slice, /*sq_slice*/
-    0,                  /*sq_ass_item*/
-    0,                  /*sq_ass_slice*/
-    (objobjproc)string_contains /*sq_contains*/
-};
-
-static PyMappingMethods string_as_mapping = {
-    (lenfunc)string_length,
-    (binaryfunc)string_subscript,
-    0,
-};
-
-static PyBufferProcs string_as_buffer = {
-    (readbufferproc)string_buffer_getreadbuf,
-    (writebufferproc)string_buffer_getwritebuf,
-    (segcountproc)string_buffer_getsegcount,
-    (charbufferproc)string_buffer_getcharbuf,
-    (getbufferproc)string_buffer_getbuffer,
-    0, /* XXX */
-};
-
-
-
-#define LEFTSTRIP 0
-#define RIGHTSTRIP 1
-#define BOTHSTRIP 2
-
-/* Arrays indexed by above */
-static const char *stripformat[] = {"|O:lstrip", "|O:rstrip", "|O:strip"};
-
-#define STRIPNAME(i) (stripformat[i]+3)
-
-PyDoc_STRVAR(split__doc__,
-"S.split([sep [,maxsplit]]) -> list of strings\n\
-\n\
-Return a list of the words in the string S, using sep as the\n\
-delimiter string.  If maxsplit is given, at most maxsplit\n\
-splits are done. If sep is not specified or is None, any\n\
-whitespace string is a separator and empty strings are removed\n\
-from the result.");
-
-static PyObject *
-string_split(PyStringObject *self, PyObject *args)
-{
-    Py_ssize_t len = PyString_GET_SIZE(self), n;
-    Py_ssize_t maxsplit = -1;
-    const char *s = PyString_AS_STRING(self), *sub;
-    PyObject *subobj = Py_None;
-
-    if (!PyArg_ParseTuple(args, "|On:split", &subobj, &maxsplit))
-        return NULL;
-    if (maxsplit < 0)
-        maxsplit = PY_SSIZE_T_MAX;
-    if (subobj == Py_None)
-        return stringlib_split_whitespace((PyObject*) self, s, len, maxsplit);
-    if (PyString_Check(subobj)) {
-        sub = PyString_AS_STRING(subobj);
-        n = PyString_GET_SIZE(subobj);
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_Check(subobj))
-        return PyUnicode_Split((PyObject *)self, subobj, maxsplit);
-#endif
-    else if (PyObject_AsCharBuffer(subobj, &sub, &n))
-        return NULL;
-
-    return stringlib_split((PyObject*) self, s, len, sub, n, maxsplit);
-}
-
-PyDoc_STRVAR(partition__doc__,
-"S.partition(sep) -> (head, sep, tail)\n\
-\n\
-Search for the separator sep in S, and return the part before it,\n\
-the separator itself, and the part after it.  If the separator is not\n\
-found, return S and two empty strings.");
-
-static PyObject *
-string_partition(PyStringObject *self, PyObject *sep_obj)
-{
-    const char *sep;
-    Py_ssize_t sep_len;
-
-    if (PyString_Check(sep_obj)) {
-        sep = PyString_AS_STRING(sep_obj);
-        sep_len = PyString_GET_SIZE(sep_obj);
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_Check(sep_obj))
-        return PyUnicode_Partition((PyObject *) self, sep_obj);
-#endif
-    else if (PyObject_AsCharBuffer(sep_obj, &sep, &sep_len))
-        return NULL;
-
-    return stringlib_partition(
-        (PyObject*) self,
-        PyString_AS_STRING(self), PyString_GET_SIZE(self),
-        sep_obj, sep, sep_len
-        );
-}
-
-PyDoc_STRVAR(rpartition__doc__,
-"S.rpartition(sep) -> (head, sep, tail)\n\
-\n\
-Search for the separator sep in S, starting at the end of S, and return\n\
-the part before it, the separator itself, and the part after it.  If the\n\
-separator is not found, return two empty strings and S.");
-
-static PyObject *
-string_rpartition(PyStringObject *self, PyObject *sep_obj)
-{
-    const char *sep;
-    Py_ssize_t sep_len;
-
-    if (PyString_Check(sep_obj)) {
-        sep = PyString_AS_STRING(sep_obj);
-        sep_len = PyString_GET_SIZE(sep_obj);
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_Check(sep_obj))
-        return PyUnicode_RPartition((PyObject *) self, sep_obj);
-#endif
-    else if (PyObject_AsCharBuffer(sep_obj, &sep, &sep_len))
-        return NULL;
-
-    return stringlib_rpartition(
-        (PyObject*) self,
-        PyString_AS_STRING(self), PyString_GET_SIZE(self),
-        sep_obj, sep, sep_len
-        );
-}
-
-PyDoc_STRVAR(rsplit__doc__,
-"S.rsplit([sep [,maxsplit]]) -> list of strings\n\
-\n\
-Return a list of the words in the string S, using sep as the\n\
-delimiter string, starting at the end of the string and working\n\
-to the front.  If maxsplit is given, at most maxsplit splits are\n\
-done. If sep is not specified or is None, any whitespace string\n\
-is a separator.");
-
-static PyObject *
-string_rsplit(PyStringObject *self, PyObject *args)
-{
-    Py_ssize_t len = PyString_GET_SIZE(self), n;
-    Py_ssize_t maxsplit = -1;
-    const char *s = PyString_AS_STRING(self), *sub;
-    PyObject *subobj = Py_None;
-
-    if (!PyArg_ParseTuple(args, "|On:rsplit", &subobj, &maxsplit))
-        return NULL;
-    if (maxsplit < 0)
-        maxsplit = PY_SSIZE_T_MAX;
-    if (subobj == Py_None)
-        return stringlib_rsplit_whitespace((PyObject*) self, s, len, maxsplit);
-    if (PyString_Check(subobj)) {
-        sub = PyString_AS_STRING(subobj);
-        n = PyString_GET_SIZE(subobj);
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_Check(subobj))
-        return PyUnicode_RSplit((PyObject *)self, subobj, maxsplit);
-#endif
-    else if (PyObject_AsCharBuffer(subobj, &sub, &n))
-        return NULL;
-
-    return stringlib_rsplit((PyObject*) self, s, len, sub, n, maxsplit);
-}
-
-
-PyDoc_STRVAR(join__doc__,
-"S.join(iterable) -> string\n\
-\n\
-Return a string which is the concatenation of the strings in the\n\
-iterable.  The separator between elements is S.");
-
-static PyObject *
-string_join(PyStringObject *self, PyObject *orig)
-{
-    char *sep = PyString_AS_STRING(self);
-    const Py_ssize_t seplen = PyString_GET_SIZE(self);
-    PyObject *res = NULL;
-    char *p;
-    Py_ssize_t seqlen = 0;
-    size_t sz = 0;
-    Py_ssize_t i;
-    PyObject *seq, *item;
-
-    seq = PySequence_Fast(orig, "");
-    if (seq == NULL) {
-        return NULL;
-    }
-
-    seqlen = PySequence_Size(seq);
-    if (seqlen == 0) {
-        Py_DECREF(seq);
-        return PyString_FromString("");
-    }
-    if (seqlen == 1) {
-        item = PySequence_Fast_GET_ITEM(seq, 0);
-        if (PyString_CheckExact(item) || PyUnicode_CheckExact(item)) {
-            Py_INCREF(item);
-            Py_DECREF(seq);
-            return item;
-        }
-    }
-
-    /* There are at least two things to join, or else we have a subclass
-     * of the builtin types in the sequence.
-     * Do a pre-pass to figure out the total amount of space we'll
-     * need (sz), see whether any argument is absurd, and defer to
-     * the Unicode join if appropriate.
-     */
-    for (i = 0; i < seqlen; i++) {
-        const size_t old_sz = sz;
-        item = PySequence_Fast_GET_ITEM(seq, i);
-        if (!PyString_Check(item)){
-#ifdef Py_USING_UNICODE
-            if (PyUnicode_Check(item)) {
-                /* Defer to Unicode join.
-                 * CAUTION:  There's no gurantee that the
-                 * original sequence can be iterated over
-                 * again, so we must pass seq here.
-                 */
-                PyObject *result;
-                result = PyUnicode_Join((PyObject *)self, seq);
-                Py_DECREF(seq);
-                return result;
-            }
-#endif
-            PyErr_Format(PyExc_TypeError,
-                         "sequence item %zd: expected string,"
-                         " %.80s found",
-                         i, Py_TYPE(item)->tp_name);
-            Py_DECREF(seq);
-            return NULL;
-        }
-        sz += PyString_GET_SIZE(item);
-        if (i != 0)
-            sz += seplen;
-        if (sz < old_sz || sz > PY_SSIZE_T_MAX) {
-            PyErr_SetString(PyExc_OverflowError,
-                "join() result is too long for a Python string");
-            Py_DECREF(seq);
-            return NULL;
-        }
-    }
-
-    /* Allocate result space. */
-    res = PyString_FromStringAndSize((char*)NULL, sz);
-    if (res == NULL) {
-        Py_DECREF(seq);
-        return NULL;
-    }
-
-    /* Catenate everything. */
-    p = PyString_AS_STRING(res);
-    for (i = 0; i < seqlen; ++i) {
-        size_t n;
-        item = PySequence_Fast_GET_ITEM(seq, i);
-        n = PyString_GET_SIZE(item);
-        Py_MEMCPY(p, PyString_AS_STRING(item), n);
-        p += n;
-        if (i < seqlen - 1) {
-            Py_MEMCPY(p, sep, seplen);
-            p += seplen;
-        }
-    }
-
-    Py_DECREF(seq);
-    return res;
-}
-
-PyObject *
-_PyString_Join(PyObject *sep, PyObject *x)
-{
-    assert(sep != NULL && PyString_Check(sep));
-    assert(x != NULL);
-    return string_join((PyStringObject *)sep, x);
-}
-
-/* helper macro to fixup start/end slice values */
-#define ADJUST_INDICES(start, end, len)         \
-    if (end > len)                          \
-        end = len;                          \
-    else if (end < 0) {                     \
-        end += len;                         \
-        if (end < 0)                        \
-        end = 0;                        \
-    }                                       \
-    if (start < 0) {                        \
-        start += len;                       \
-        if (start < 0)                      \
-        start = 0;                      \
-    }
-
-Py_LOCAL_INLINE(Py_ssize_t)
-string_find_internal(PyStringObject *self, PyObject *args, int dir)
-{
-    PyObject *subobj;
-    const char *sub;
-    Py_ssize_t sub_len;
-    Py_ssize_t start=0, end=PY_SSIZE_T_MAX;
-
-    if (!stringlib_parse_args_finds("find/rfind/index/rindex",
-                                    args, &subobj, &start, &end))
-        return -2;
-
-    if (PyString_Check(subobj)) {
-        sub = PyString_AS_STRING(subobj);
-        sub_len = PyString_GET_SIZE(subobj);
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_Check(subobj))
-        return PyUnicode_Find(
-            (PyObject *)self, subobj, start, end, dir);
-#endif
-    else if (PyObject_AsCharBuffer(subobj, &sub, &sub_len))
-        /* XXX - the "expected a character buffer object" is pretty
-           confusing for a non-expert.  remap to something else ? */
-        return -2;
-
-    if (dir > 0)
-        return stringlib_find_slice(
-            PyString_AS_STRING(self), PyString_GET_SIZE(self),
-            sub, sub_len, start, end);
-    else
-        return stringlib_rfind_slice(
-            PyString_AS_STRING(self), PyString_GET_SIZE(self),
-            sub, sub_len, start, end);
-}
-
-
-PyDoc_STRVAR(find__doc__,
-"S.find(sub [,start [,end]]) -> int\n\
-\n\
-Return the lowest index in S where substring sub is found,\n\
-such that sub is contained within s[start:end].  Optional\n\
-arguments start and end are interpreted as in slice notation.\n\
-\n\
-Return -1 on failure.");
-
-static PyObject *
-string_find(PyStringObject *self, PyObject *args)
-{
-    Py_ssize_t result = string_find_internal(self, args, +1);
-    if (result == -2)
-        return NULL;
-    return PyInt_FromSsize_t(result);
-}
-
-
-PyDoc_STRVAR(index__doc__,
-"S.index(sub [,start [,end]]) -> int\n\
-\n\
-Like S.find() but raise ValueError when the substring is not found.");
-
-static PyObject *
-string_index(PyStringObject *self, PyObject *args)
-{
-    Py_ssize_t result = string_find_internal(self, args, +1);
-    if (result == -2)
-        return NULL;
-    if (result == -1) {
-        PyErr_SetString(PyExc_ValueError,
-                        "substring not found");
-        return NULL;
-    }
-    return PyInt_FromSsize_t(result);
-}
-
-
-PyDoc_STRVAR(rfind__doc__,
-"S.rfind(sub [,start [,end]]) -> int\n\
-\n\
-Return the highest index in S where substring sub is found,\n\
-such that sub is contained within s[start:end].  Optional\n\
-arguments start and end are interpreted as in slice notation.\n\
-\n\
-Return -1 on failure.");
-
-static PyObject *
-string_rfind(PyStringObject *self, PyObject *args)
-{
-    Py_ssize_t result = string_find_internal(self, args, -1);
-    if (result == -2)
-        return NULL;
-    return PyInt_FromSsize_t(result);
-}
-
-
-PyDoc_STRVAR(rindex__doc__,
-"S.rindex(sub [,start [,end]]) -> int\n\
-\n\
-Like S.rfind() but raise ValueError when the substring is not found.");
-
-static PyObject *
-string_rindex(PyStringObject *self, PyObject *args)
-{
-    Py_ssize_t result = string_find_internal(self, args, -1);
-    if (result == -2)
-        return NULL;
-    if (result == -1) {
-        PyErr_SetString(PyExc_ValueError,
-                        "substring not found");
-        return NULL;
-    }
-    return PyInt_FromSsize_t(result);
-}
-
-
-Py_LOCAL_INLINE(PyObject *)
-do_xstrip(PyStringObject *self, int striptype, PyObject *sepobj)
-{
-    char *s = PyString_AS_STRING(self);
-    Py_ssize_t len = PyString_GET_SIZE(self);
-    char *sep = PyString_AS_STRING(sepobj);
-    Py_ssize_t seplen = PyString_GET_SIZE(sepobj);
-    Py_ssize_t i, j;
-
-    i = 0;
-    if (striptype != RIGHTSTRIP) {
-        while (i < len && memchr(sep, Py_CHARMASK(s[i]), seplen)) {
-            i++;
-        }
-    }
-
-    j = len;
-    if (striptype != LEFTSTRIP) {
-        do {
-            j--;
-        } while (j >= i && memchr(sep, Py_CHARMASK(s[j]), seplen));
-        j++;
-    }
-
-    if (i == 0 && j == len && PyString_CheckExact(self)) {
-        Py_INCREF(self);
-        return (PyObject*)self;
-    }
-    else
-        return PyString_FromStringAndSize(s+i, j-i);
-}
-
-
-Py_LOCAL_INLINE(PyObject *)
-do_strip(PyStringObject *self, int striptype)
-{
-    char *s = PyString_AS_STRING(self);
-    Py_ssize_t len = PyString_GET_SIZE(self), i, j;
-
-    i = 0;
-    if (striptype != RIGHTSTRIP) {
-        while (i < len && isspace(Py_CHARMASK(s[i]))) {
-            i++;
-        }
-    }
-
-    j = len;
-    if (striptype != LEFTSTRIP) {
-        do {
-            j--;
-        } while (j >= i && isspace(Py_CHARMASK(s[j])));
-        j++;
-    }
-
-    if (i == 0 && j == len && PyString_CheckExact(self)) {
-        Py_INCREF(self);
-        return (PyObject*)self;
-    }
-    else
-        return PyString_FromStringAndSize(s+i, j-i);
-}
-
-
-Py_LOCAL_INLINE(PyObject *)
-do_argstrip(PyStringObject *self, int striptype, PyObject *args)
-{
-    PyObject *sep = NULL;
-
-    if (!PyArg_ParseTuple(args, (char *)stripformat[striptype], &sep))
-        return NULL;
-
-    if (sep != NULL && sep != Py_None) {
-        if (PyString_Check(sep))
-            return do_xstrip(self, striptype, sep);
-#ifdef Py_USING_UNICODE
-        else if (PyUnicode_Check(sep)) {
-            PyObject *uniself = PyUnicode_FromObject((PyObject *)self);
-            PyObject *res;
-            if (uniself==NULL)
-                return NULL;
-            res = _PyUnicode_XStrip((PyUnicodeObject *)uniself,
-                striptype, sep);
-            Py_DECREF(uniself);
-            return res;
-        }
-#endif
-        PyErr_Format(PyExc_TypeError,
-#ifdef Py_USING_UNICODE
-                     "%s arg must be None, str or unicode",
-#else
-                     "%s arg must be None or str",
-#endif
-                     STRIPNAME(striptype));
-        return NULL;
-    }
-
-    return do_strip(self, striptype);
-}
-
-
-PyDoc_STRVAR(strip__doc__,
-"S.strip([chars]) -> string or unicode\n\
-\n\
-Return a copy of the string S with leading and trailing\n\
-whitespace removed.\n\
-If chars is given and not None, remove characters in chars instead.\n\
-If chars is unicode, S will be converted to unicode before stripping");
-
-static PyObject *
-string_strip(PyStringObject *self, PyObject *args)
-{
-    if (PyTuple_GET_SIZE(args) == 0)
-        return do_strip(self, BOTHSTRIP); /* Common case */
-    else
-        return do_argstrip(self, BOTHSTRIP, args);
-}
-
-
-PyDoc_STRVAR(lstrip__doc__,
-"S.lstrip([chars]) -> string or unicode\n\
-\n\
-Return a copy of the string S with leading whitespace removed.\n\
-If chars is given and not None, remove characters in chars instead.\n\
-If chars is unicode, S will be converted to unicode before stripping");
-
-static PyObject *
-string_lstrip(PyStringObject *self, PyObject *args)
-{
-    if (PyTuple_GET_SIZE(args) == 0)
-        return do_strip(self, LEFTSTRIP); /* Common case */
-    else
-        return do_argstrip(self, LEFTSTRIP, args);
-}
-
-
-PyDoc_STRVAR(rstrip__doc__,
-"S.rstrip([chars]) -> string or unicode\n\
-\n\
-Return a copy of the string S with trailing whitespace removed.\n\
-If chars is given and not None, remove characters in chars instead.\n\
-If chars is unicode, S will be converted to unicode before stripping");
-
-static PyObject *
-string_rstrip(PyStringObject *self, PyObject *args)
-{
-    if (PyTuple_GET_SIZE(args) == 0)
-        return do_strip(self, RIGHTSTRIP); /* Common case */
-    else
-        return do_argstrip(self, RIGHTSTRIP, args);
-}
-
-
-PyDoc_STRVAR(lower__doc__,
-"S.lower() -> string\n\
-\n\
-Return a copy of the string S converted to lowercase.");
-
-/* _tolower and _toupper are defined by SUSv2, but they're not ISO C */
-#ifndef _tolower
-#define _tolower tolower
-#endif
-
-static PyObject *
-string_lower(PyStringObject *self)
-{
-    char *s;
-    Py_ssize_t i, n = PyString_GET_SIZE(self);
-    PyObject *newobj;
-
-    newobj = PyString_FromStringAndSize(NULL, n);
-    if (!newobj)
-        return NULL;
-
-    s = PyString_AS_STRING(newobj);
-
-    Py_MEMCPY(s, PyString_AS_STRING(self), n);
-
-    for (i = 0; i < n; i++) {
-        int c = Py_CHARMASK(s[i]);
-        if (isupper(c))
-            s[i] = _tolower(c);
-    }
-
-    return newobj;
-}
-
-PyDoc_STRVAR(upper__doc__,
-"S.upper() -> string\n\
-\n\
-Return a copy of the string S converted to uppercase.");
-
-#ifndef _toupper
-#define _toupper toupper
-#endif
-
-static PyObject *
-string_upper(PyStringObject *self)
-{
-    char *s;
-    Py_ssize_t i, n = PyString_GET_SIZE(self);
-    PyObject *newobj;
-
-    newobj = PyString_FromStringAndSize(NULL, n);
-    if (!newobj)
-        return NULL;
-
-    s = PyString_AS_STRING(newobj);
-
-    Py_MEMCPY(s, PyString_AS_STRING(self), n);
-
-    for (i = 0; i < n; i++) {
-        int c = Py_CHARMASK(s[i]);
-        if (islower(c))
-            s[i] = _toupper(c);
-    }
-
-    return newobj;
-}
-
-PyDoc_STRVAR(title__doc__,
-"S.title() -> string\n\
-\n\
-Return a titlecased version of S, i.e. words start with uppercase\n\
-characters, all remaining cased characters have lowercase.");
-
-static PyObject*
-string_title(PyStringObject *self)
-{
-    char *s = PyString_AS_STRING(self), *s_new;
-    Py_ssize_t i, n = PyString_GET_SIZE(self);
-    int previous_is_cased = 0;
-    PyObject *newobj;
-
-    newobj = PyString_FromStringAndSize(NULL, n);
-    if (newobj == NULL)
-        return NULL;
-    s_new = PyString_AsString(newobj);
-    for (i = 0; i < n; i++) {
-        int c = Py_CHARMASK(*s++);
-        if (islower(c)) {
-            if (!previous_is_cased)
-                c = toupper(c);
-            previous_is_cased = 1;
-        } else if (isupper(c)) {
-            if (previous_is_cased)
-                c = tolower(c);
-            previous_is_cased = 1;
-        } else
-            previous_is_cased = 0;
-        *s_new++ = c;
-    }
-    return newobj;
-}
-
-PyDoc_STRVAR(capitalize__doc__,
-"S.capitalize() -> string\n\
-\n\
-Return a copy of the string S with only its first character\n\
-capitalized.");
-
-static PyObject *
-string_capitalize(PyStringObject *self)
-{
-    char *s = PyString_AS_STRING(self), *s_new;
-    Py_ssize_t i, n = PyString_GET_SIZE(self);
-    PyObject *newobj;
-
-    newobj = PyString_FromStringAndSize(NULL, n);
-    if (newobj == NULL)
-        return NULL;
-    s_new = PyString_AsString(newobj);
-    if (0 < n) {
-        int c = Py_CHARMASK(*s++);
-        if (islower(c))
-            *s_new = toupper(c);
-        else
-            *s_new = c;
-        s_new++;
-    }
-    for (i = 1; i < n; i++) {
-        int c = Py_CHARMASK(*s++);
-        if (isupper(c))
-            *s_new = tolower(c);
-        else
-            *s_new = c;
-        s_new++;
-    }
-    return newobj;
-}
-
-
-PyDoc_STRVAR(count__doc__,
-"S.count(sub[, start[, end]]) -> int\n\
-\n\
-Return the number of non-overlapping occurrences of substring sub in\n\
-string S[start:end].  Optional arguments start and end are interpreted\n\
-as in slice notation.");
-
-static PyObject *
-string_count(PyStringObject *self, PyObject *args)
-{
-    PyObject *sub_obj;
-    const char *str = PyString_AS_STRING(self), *sub;
-    Py_ssize_t sub_len;
-    Py_ssize_t start = 0, end = PY_SSIZE_T_MAX;
-
-    if (!stringlib_parse_args_finds("count", args, &sub_obj, &start, &end))
-        return NULL;
-
-    if (PyString_Check(sub_obj)) {
-        sub = PyString_AS_STRING(sub_obj);
-        sub_len = PyString_GET_SIZE(sub_obj);
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_Check(sub_obj)) {
-        Py_ssize_t count;
-        count = PyUnicode_Count((PyObject *)self, sub_obj, start, end);
-        if (count == -1)
-            return NULL;
-        else
-            return PyInt_FromSsize_t(count);
-    }
-#endif
-    else if (PyObject_AsCharBuffer(sub_obj, &sub, &sub_len))
-        return NULL;
-
-    ADJUST_INDICES(start, end, PyString_GET_SIZE(self));
-
-    return PyInt_FromSsize_t(
-        stringlib_count(str + start, end - start, sub, sub_len, PY_SSIZE_T_MAX)
-        );
-}
-
-PyDoc_STRVAR(swapcase__doc__,
-"S.swapcase() -> string\n\
-\n\
-Return a copy of the string S with uppercase characters\n\
-converted to lowercase and vice versa.");
-
-static PyObject *
-string_swapcase(PyStringObject *self)
-{
-    char *s = PyString_AS_STRING(self), *s_new;
-    Py_ssize_t i, n = PyString_GET_SIZE(self);
-    PyObject *newobj;
-
-    newobj = PyString_FromStringAndSize(NULL, n);
-    if (newobj == NULL)
-        return NULL;
-    s_new = PyString_AsString(newobj);
-    for (i = 0; i < n; i++) {
-        int c = Py_CHARMASK(*s++);
-        if (islower(c)) {
-            *s_new = toupper(c);
-        }
-        else if (isupper(c)) {
-            *s_new = tolower(c);
-        }
-        else
-            *s_new = c;
-        s_new++;
-    }
-    return newobj;
-}
-
-
-PyDoc_STRVAR(translate__doc__,
-"S.translate(table [,deletechars]) -> string\n\
-\n\
-Return a copy of the string S, where all characters occurring\n\
-in the optional argument deletechars are removed, and the\n\
-remaining characters have been mapped through the given\n\
-translation table, which must be a string of length 256.");
-
-static PyObject *
-string_translate(PyStringObject *self, PyObject *args)
-{
-    register char *input, *output;
-    const char *table;
-    register Py_ssize_t i, c, changed = 0;
-    PyObject *input_obj = (PyObject*)self;
-    const char *output_start, *del_table=NULL;
-    Py_ssize_t inlen, tablen, dellen = 0;
-    PyObject *result;
-    int trans_table[256];
-    PyObject *tableobj, *delobj = NULL;
-
-    if (!PyArg_UnpackTuple(args, "translate", 1, 2,
-                          &tableobj, &delobj))
-        return NULL;
-
-    if (PyString_Check(tableobj)) {
-        table = PyString_AS_STRING(tableobj);
-        tablen = PyString_GET_SIZE(tableobj);
-    }
-    else if (tableobj == Py_None) {
-        table = NULL;
-        tablen = 256;
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_Check(tableobj)) {
-        /* Unicode .translate() does not support the deletechars
-           parameter; instead a mapping to None will cause characters
-           to be deleted. */
-        if (delobj != NULL) {
-            PyErr_SetString(PyExc_TypeError,
-            "deletions are implemented differently for unicode");
-            return NULL;
-        }
-        return PyUnicode_Translate((PyObject *)self, tableobj, NULL);
-    }
-#endif
-    else if (PyObject_AsCharBuffer(tableobj, &table, &tablen))
-        return NULL;
-
-    if (tablen != 256) {
-        PyErr_SetString(PyExc_ValueError,
-          "translation table must be 256 characters long");
-        return NULL;
-    }
-
-    if (delobj != NULL) {
-        if (PyString_Check(delobj)) {
-            del_table = PyString_AS_STRING(delobj);
-            dellen = PyString_GET_SIZE(delobj);
-        }
-#ifdef Py_USING_UNICODE
-        else if (PyUnicode_Check(delobj)) {
-            PyErr_SetString(PyExc_TypeError,
-            "deletions are implemented differently for unicode");
-            return NULL;
-        }
-#endif
-        else if (PyObject_AsCharBuffer(delobj, &del_table, &dellen))
-            return NULL;
-    }
-    else {
-        del_table = NULL;
-        dellen = 0;
-    }
-
-    inlen = PyString_GET_SIZE(input_obj);
-    result = PyString_FromStringAndSize((char *)NULL, inlen);
-    if (result == NULL)
-        return NULL;
-    output_start = output = PyString_AsString(result);
-    input = PyString_AS_STRING(input_obj);
-
-    if (dellen == 0 && table != NULL) {
-        /* If no deletions are required, use faster code */
-        for (i = inlen; --i >= 0; ) {
-            c = Py_CHARMASK(*input++);
-            if (Py_CHARMASK((*output++ = table[c])) != c)
-                changed = 1;
-        }
-        if (changed || !PyString_CheckExact(input_obj))
-            return result;
-        Py_DECREF(result);
-        Py_INCREF(input_obj);
-        return input_obj;
-    }
-
-    if (table == NULL) {
-        for (i = 0; i < 256; i++)
-            trans_table[i] = Py_CHARMASK(i);
-    } else {
-        for (i = 0; i < 256; i++)
-            trans_table[i] = Py_CHARMASK(table[i]);
-    }
-
-    for (i = 0; i < dellen; i++)
-        trans_table[(int) Py_CHARMASK(del_table[i])] = -1;
-
-    for (i = inlen; --i >= 0; ) {
-        c = Py_CHARMASK(*input++);
-        if (trans_table[c] != -1)
-            if (Py_CHARMASK(*output++ = (char)trans_table[c]) == c)
-                continue;
-        changed = 1;
-    }
-    if (!changed && PyString_CheckExact(input_obj)) {
-        Py_DECREF(result);
-        Py_INCREF(input_obj);
-        return input_obj;
-    }
-    /* Fix the size of the resulting string */
-    if (inlen > 0 && _PyString_Resize(&result, output - output_start))
-        return NULL;
-    return result;
-}
-
-
-/* find and count characters and substrings */
-
-#define findchar(target, target_len, c)                         \
-  ((char *)memchr((const void *)(target), c, target_len))
-
-/* String ops must return a string.  */
-/* If the object is subclass of string, create a copy */
-Py_LOCAL(PyStringObject *)
-return_self(PyStringObject *self)
-{
-    if (PyString_CheckExact(self)) {
-        Py_INCREF(self);
-        return self;
-    }
-    return (PyStringObject *)PyString_FromStringAndSize(
-        PyString_AS_STRING(self),
-        PyString_GET_SIZE(self));
-}
-
-Py_LOCAL_INLINE(Py_ssize_t)
-countchar(const char *target, int target_len, char c, Py_ssize_t maxcount)
-{
-    Py_ssize_t count=0;
-    const char *start=target;
-    const char *end=target+target_len;
-
-    while ( (start=findchar(start, end-start, c)) != NULL ) {
-        count++;
-        if (count >= maxcount)
-            break;
-        start += 1;
-    }
-    return count;
-}
-
-
-/* Algorithms for different cases of string replacement */
-
-/* len(self)>=1, from="", len(to)>=1, maxcount>=1 */
-Py_LOCAL(PyStringObject *)
-replace_interleave(PyStringObject *self,
-                   const char *to_s, Py_ssize_t to_len,
-                   Py_ssize_t maxcount)
-{
-    char *self_s, *result_s;
-    Py_ssize_t self_len, result_len;
-    Py_ssize_t count, i, product;
-    PyStringObject *result;
-
-    self_len = PyString_GET_SIZE(self);
-
-    /* 1 at the end plus 1 after every character */
-    count = self_len+1;
-    if (maxcount < count)
-        count = maxcount;
-
-    /* Check for overflow */
-    /*   result_len = count * to_len + self_len; */
-    product = count * to_len;
-    if (product / to_len != count) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "replace string is too long");
-        return NULL;
-    }
-    result_len = product + self_len;
-    if (result_len < 0) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "replace string is too long");
-        return NULL;
-    }
-
-    if (! (result = (PyStringObject *)
-                     PyString_FromStringAndSize(NULL, result_len)) )
-        return NULL;
-
-    self_s = PyString_AS_STRING(self);
-    result_s = PyString_AS_STRING(result);
-
-    /* TODO: special case single character, which doesn't need memcpy */
-
-    /* Lay the first one down (guaranteed this will occur) */
-    Py_MEMCPY(result_s, to_s, to_len);
-    result_s += to_len;
-    count -= 1;
-
-    for (i=0; i<count; i++) {
-        *result_s++ = *self_s++;
-        Py_MEMCPY(result_s, to_s, to_len);
-        result_s += to_len;
-    }
-
-    /* Copy the rest of the original string */
-    Py_MEMCPY(result_s, self_s, self_len-i);
-
-    return result;
-}
-
-/* Special case for deleting a single character */
-/* len(self)>=1, len(from)==1, to="", maxcount>=1 */
-Py_LOCAL(PyStringObject *)
-replace_delete_single_character(PyStringObject *self,
-                                char from_c, Py_ssize_t maxcount)
-{
-    char *self_s, *result_s;
-    char *start, *next, *end;
-    Py_ssize_t self_len, result_len;
-    Py_ssize_t count;
-    PyStringObject *result;
-
-    self_len = PyString_GET_SIZE(self);
-    self_s = PyString_AS_STRING(self);
-
-    count = countchar(self_s, self_len, from_c, maxcount);
-    if (count == 0) {
-        return return_self(self);
-    }
-
-    result_len = self_len - count;  /* from_len == 1 */
-    assert(result_len>=0);
-
-    if ( (result = (PyStringObject *)
-                    PyString_FromStringAndSize(NULL, result_len)) == NULL)
-        return NULL;
-    result_s = PyString_AS_STRING(result);
-
-    start = self_s;
-    end = self_s + self_len;
-    while (count-- > 0) {
-        next = findchar(start, end-start, from_c);
-        if (next == NULL)
-            break;
-        Py_MEMCPY(result_s, start, next-start);
-        result_s += (next-start);
-        start = next+1;
-    }
-    Py_MEMCPY(result_s, start, end-start);
-
-    return result;
-}
-
-/* len(self)>=1, len(from)>=2, to="", maxcount>=1 */
-
-Py_LOCAL(PyStringObject *)
-replace_delete_substring(PyStringObject *self,
-                         const char *from_s, Py_ssize_t from_len,
-                         Py_ssize_t maxcount) {
-    char *self_s, *result_s;
-    char *start, *next, *end;
-    Py_ssize_t self_len, result_len;
-    Py_ssize_t count, offset;
-    PyStringObject *result;
-
-    self_len = PyString_GET_SIZE(self);
-    self_s = PyString_AS_STRING(self);
-
-    count = stringlib_count(self_s, self_len,
-                            from_s, from_len,
-                            maxcount);
-
-    if (count == 0) {
-        /* no matches */
-        return return_self(self);
-    }
-
-    result_len = self_len - (count * from_len);
-    assert (result_len>=0);
-
-    if ( (result = (PyStringObject *)
-          PyString_FromStringAndSize(NULL, result_len)) == NULL )
-        return NULL;
-
-    result_s = PyString_AS_STRING(result);
-
-    start = self_s;
-    end = self_s + self_len;
-    while (count-- > 0) {
-        offset = stringlib_find(start, end-start,
-                                from_s, from_len,
-                                0);
-        if (offset == -1)
-            break;
-        next = start + offset;
-
-        Py_MEMCPY(result_s, start, next-start);
-
-        result_s += (next-start);
-        start = next+from_len;
-    }
-    Py_MEMCPY(result_s, start, end-start);
-    return result;
-}
-
-/* len(self)>=1, len(from)==len(to)==1, maxcount>=1 */
-Py_LOCAL(PyStringObject *)
-replace_single_character_in_place(PyStringObject *self,
-                                  char from_c, char to_c,
-                                  Py_ssize_t maxcount)
-{
-    char *self_s, *result_s, *start, *end, *next;
-    Py_ssize_t self_len;
-    PyStringObject *result;
-
-    /* The result string will be the same size */
-    self_s = PyString_AS_STRING(self);
-    self_len = PyString_GET_SIZE(self);
-
-    next = findchar(self_s, self_len, from_c);
-
-    if (next == NULL) {
-        /* No matches; return the original string */
-        return return_self(self);
-    }
-
-    /* Need to make a new string */
-    result = (PyStringObject *) PyString_FromStringAndSize(NULL, self_len);
-    if (result == NULL)
-        return NULL;
-    result_s = PyString_AS_STRING(result);
-    Py_MEMCPY(result_s, self_s, self_len);
-
-    /* change everything in-place, starting with this one */
-    start =  result_s + (next-self_s);
-    *start = to_c;
-    start++;
-    end = result_s + self_len;
-
-    while (--maxcount > 0) {
-        next = findchar(start, end-start, from_c);
-        if (next == NULL)
-            break;
-        *next = to_c;
-        start = next+1;
-    }
-
-    return result;
-}
-
-/* len(self)>=1, len(from)==len(to)>=2, maxcount>=1 */
-Py_LOCAL(PyStringObject *)
-replace_substring_in_place(PyStringObject *self,
-                           const char *from_s, Py_ssize_t from_len,
-                           const char *to_s, Py_ssize_t to_len,
-                           Py_ssize_t maxcount)
-{
-    char *result_s, *start, *end;
-    char *self_s;
-    Py_ssize_t self_len, offset;
-    PyStringObject *result;
-
-    /* The result string will be the same size */
-
-    self_s = PyString_AS_STRING(self);
-    self_len = PyString_GET_SIZE(self);
-
-    offset = stringlib_find(self_s, self_len,
-                            from_s, from_len,
-                            0);
-    if (offset == -1) {
-        /* No matches; return the original string */
-        return return_self(self);
-    }
-
-    /* Need to make a new string */
-    result = (PyStringObject *) PyString_FromStringAndSize(NULL, self_len);
-    if (result == NULL)
-        return NULL;
-    result_s = PyString_AS_STRING(result);
-    Py_MEMCPY(result_s, self_s, self_len);
-
-    /* change everything in-place, starting with this one */
-    start =  result_s + offset;
-    Py_MEMCPY(start, to_s, from_len);
-    start += from_len;
-    end = result_s + self_len;
-
-    while ( --maxcount > 0) {
-        offset = stringlib_find(start, end-start,
-                                from_s, from_len,
-                                0);
-        if (offset==-1)
-            break;
-        Py_MEMCPY(start+offset, to_s, from_len);
-        start += offset+from_len;
-    }
-
-    return result;
-}
-
-/* len(self)>=1, len(from)==1, len(to)>=2, maxcount>=1 */
-Py_LOCAL(PyStringObject *)
-replace_single_character(PyStringObject *self,
-                         char from_c,
-                         const char *to_s, Py_ssize_t to_len,
-                         Py_ssize_t maxcount)
-{
-    char *self_s, *result_s;
-    char *start, *next, *end;
-    Py_ssize_t self_len, result_len;
-    Py_ssize_t count, product;
-    PyStringObject *result;
-
-    self_s = PyString_AS_STRING(self);
-    self_len = PyString_GET_SIZE(self);
-
-    count = countchar(self_s, self_len, from_c, maxcount);
-    if (count == 0) {
-        /* no matches, return unchanged */
-        return return_self(self);
-    }
-
-    /* use the difference between current and new, hence the "-1" */
-    /*   result_len = self_len + count * (to_len-1)  */
-    product = count * (to_len-1);
-    if (product / (to_len-1) != count) {
-        PyErr_SetString(PyExc_OverflowError, "replace string is too long");
-        return NULL;
-    }
-    result_len = self_len + product;
-    if (result_len < 0) {
-        PyErr_SetString(PyExc_OverflowError, "replace string is too long");
-        return NULL;
-    }
-
-    if ( (result = (PyStringObject *)
-          PyString_FromStringAndSize(NULL, result_len)) == NULL)
-        return NULL;
-    result_s = PyString_AS_STRING(result);
-
-    start = self_s;
-    end = self_s + self_len;
-    while (count-- > 0) {
-        next = findchar(start, end-start, from_c);
-        if (next == NULL)
-            break;
-
-        if (next == start) {
-            /* replace with the 'to' */
-            Py_MEMCPY(result_s, to_s, to_len);
-            result_s += to_len;
-            start += 1;
-        } else {
-            /* copy the unchanged old then the 'to' */
-            Py_MEMCPY(result_s, start, next-start);
-            result_s += (next-start);
-            Py_MEMCPY(result_s, to_s, to_len);
-            result_s += to_len;
-            start = next+1;
-        }
-    }
-    /* Copy the remainder of the remaining string */
-    Py_MEMCPY(result_s, start, end-start);
-
-    return result;
-}
-
-/* len(self)>=1, len(from)>=2, len(to)>=2, maxcount>=1 */
-Py_LOCAL(PyStringObject *)
-replace_substring(PyStringObject *self,
-                  const char *from_s, Py_ssize_t from_len,
-                  const char *to_s, Py_ssize_t to_len,
-                  Py_ssize_t maxcount) {
-    char *self_s, *result_s;
-    char *start, *next, *end;
-    Py_ssize_t self_len, result_len;
-    Py_ssize_t count, offset, product;
-    PyStringObject *result;
-
-    self_s = PyString_AS_STRING(self);
-    self_len = PyString_GET_SIZE(self);
-
-    count = stringlib_count(self_s, self_len,
-                            from_s, from_len,
-                            maxcount);
-
-    if (count == 0) {
-        /* no matches, return unchanged */
-        return return_self(self);
-    }
-
-    /* Check for overflow */
-    /*    result_len = self_len + count * (to_len-from_len) */
-    product = count * (to_len-from_len);
-    if (product / (to_len-from_len) != count) {
-        PyErr_SetString(PyExc_OverflowError, "replace string is too long");
-        return NULL;
-    }
-    result_len = self_len + product;
-    if (result_len < 0) {
-        PyErr_SetString(PyExc_OverflowError, "replace string is too long");
-        return NULL;
-    }
-
-    if ( (result = (PyStringObject *)
-          PyString_FromStringAndSize(NULL, result_len)) == NULL)
-        return NULL;
-    result_s = PyString_AS_STRING(result);
-
-    start = self_s;
-    end = self_s + self_len;
-    while (count-- > 0) {
-        offset = stringlib_find(start, end-start,
-                                from_s, from_len,
-                                0);
-        if (offset == -1)
-            break;
-        next = start+offset;
-        if (next == start) {
-            /* replace with the 'to' */
-            Py_MEMCPY(result_s, to_s, to_len);
-            result_s += to_len;
-            start += from_len;
-        } else {
-            /* copy the unchanged old then the 'to' */
-            Py_MEMCPY(result_s, start, next-start);
-            result_s += (next-start);
-            Py_MEMCPY(result_s, to_s, to_len);
-            result_s += to_len;
-            start = next+from_len;
-        }
-    }
-    /* Copy the remainder of the remaining string */
-    Py_MEMCPY(result_s, start, end-start);
-
-    return result;
-}
-
-
-Py_LOCAL(PyStringObject *)
-replace(PyStringObject *self,
-    const char *from_s, Py_ssize_t from_len,
-    const char *to_s, Py_ssize_t to_len,
-    Py_ssize_t maxcount)
-{
-    if (maxcount < 0) {
-        maxcount = PY_SSIZE_T_MAX;
-    } else if (maxcount == 0 || PyString_GET_SIZE(self) == 0) {
-        /* nothing to do; return the original string */
-        return return_self(self);
-    }
-
-    if (maxcount == 0 ||
-        (from_len == 0 && to_len == 0)) {
-        /* nothing to do; return the original string */
-        return return_self(self);
-    }
-
-    /* Handle zero-length special cases */
-
-    if (from_len == 0) {
-        /* insert the 'to' string everywhere.   */
-        /*    >>> "Python".replace("", ".")     */
-        /*    '.P.y.t.h.o.n.'                   */
-        return replace_interleave(self, to_s, to_len, maxcount);
-    }
-
-    /* Except for "".replace("", "A") == "A" there is no way beyond this */
-    /* point for an empty self string to generate a non-empty string */
-    /* Special case so the remaining code always gets a non-empty string */
-    if (PyString_GET_SIZE(self) == 0) {
-        return return_self(self);
-    }
-
-    if (to_len == 0) {
-        /* delete all occurances of 'from' string */
-        if (from_len == 1) {
-            return replace_delete_single_character(
-                self, from_s[0], maxcount);
-        } else {
-            return replace_delete_substring(self, from_s, from_len, maxcount);
-        }
-    }
-
-    /* Handle special case where both strings have the same length */
-
-    if (from_len == to_len) {
-        if (from_len == 1) {
-            return replace_single_character_in_place(
-                self,
-                from_s[0],
-                to_s[0],
-                maxcount);
-        } else {
-            return replace_substring_in_place(
-                self, from_s, from_len, to_s, to_len, maxcount);
-        }
-    }
-
-    /* Otherwise use the more generic algorithms */
-    if (from_len == 1) {
-        return replace_single_character(self, from_s[0],
-                                        to_s, to_len, maxcount);
-    } else {
-        /* len('from')>=2, len('to')>=1 */
-        return replace_substring(self, from_s, from_len, to_s, to_len, maxcount);
-    }
-}
-
-PyDoc_STRVAR(replace__doc__,
-"S.replace(old, new[, count]) -> string\n\
-\n\
-Return a copy of string S with all occurrences of substring\n\
-old replaced by new.  If the optional argument count is\n\
-given, only the first count occurrences are replaced.");
-
-static PyObject *
-string_replace(PyStringObject *self, PyObject *args)
-{
-    Py_ssize_t count = -1;
-    PyObject *from, *to;
-    const char *from_s, *to_s;
-    Py_ssize_t from_len, to_len;
-
-    if (!PyArg_ParseTuple(args, "OO|n:replace", &from, &to, &count))
-        return NULL;
-
-    if (PyString_Check(from)) {
-        from_s = PyString_AS_STRING(from);
-        from_len = PyString_GET_SIZE(from);
-    }
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(from))
-        return PyUnicode_Replace((PyObject *)self,
-                                 from, to, count);
-#endif
-    else if (PyObject_AsCharBuffer(from, &from_s, &from_len))
-        return NULL;
-
-    if (PyString_Check(to)) {
-        to_s = PyString_AS_STRING(to);
-        to_len = PyString_GET_SIZE(to);
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_Check(to))
-        return PyUnicode_Replace((PyObject *)self,
-                                 from, to, count);
-#endif
-    else if (PyObject_AsCharBuffer(to, &to_s, &to_len))
-        return NULL;
-
-    return (PyObject *)replace((PyStringObject *) self,
-                               from_s, from_len,
-                               to_s, to_len, count);
-}
-
-/** End DALKE **/
-
-/* Matches the end (direction >= 0) or start (direction < 0) of self
- * against substr, using the start and end arguments. Returns
- * -1 on error, 0 if not found and 1 if found.
- */
-Py_LOCAL(int)
-_string_tailmatch(PyStringObject *self, PyObject *substr, Py_ssize_t start,
-                  Py_ssize_t end, int direction)
-{
-    Py_ssize_t len = PyString_GET_SIZE(self);
-    Py_ssize_t slen;
-    const char* sub;
-    const char* str;
-
-    if (PyString_Check(substr)) {
-        sub = PyString_AS_STRING(substr);
-        slen = PyString_GET_SIZE(substr);
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_Check(substr))
-        return PyUnicode_Tailmatch((PyObject *)self,
-                                   substr, start, end, direction);
-#endif
-    else if (PyObject_AsCharBuffer(substr, &sub, &slen))
-        return -1;
-    str = PyString_AS_STRING(self);
-
-    ADJUST_INDICES(start, end, len);
-
-    if (direction < 0) {
-        /* startswith */
-        if (start+slen > len)
-            return 0;
-    } else {
-        /* endswith */
-        if (end-start < slen || start > len)
-            return 0;
-
-        if (end-slen > start)
-            start = end - slen;
-    }
-    if (end-start >= slen)
-        return ! memcmp(str+start, sub, slen);
-    return 0;
-}
-
-
-PyDoc_STRVAR(startswith__doc__,
-"S.startswith(prefix[, start[, end]]) -> bool\n\
-\n\
-Return True if S starts with the specified prefix, False otherwise.\n\
-With optional start, test S beginning at that position.\n\
-With optional end, stop comparing S at that position.\n\
-prefix can also be a tuple of strings to try.");
-
-static PyObject *
-string_startswith(PyStringObject *self, PyObject *args)
-{
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    PyObject *subobj;
-    int result;
-
-    if (!stringlib_parse_args_finds("startswith", args, &subobj, &start, &end))
-        return NULL;
-    if (PyTuple_Check(subobj)) {
-        Py_ssize_t i;
-        for (i = 0; i < PyTuple_GET_SIZE(subobj); i++) {
-            result = _string_tailmatch(self,
-                            PyTuple_GET_ITEM(subobj, i),
-                            start, end, -1);
-            if (result == -1)
-                return NULL;
-            else if (result) {
-                Py_RETURN_TRUE;
-            }
-        }
-        Py_RETURN_FALSE;
-    }
-    result = _string_tailmatch(self, subobj, start, end, -1);
-    if (result == -1) {
-        if (PyErr_ExceptionMatches(PyExc_TypeError))
-            PyErr_Format(PyExc_TypeError, "startswith first arg must be str, "
-                         "unicode, or tuple, not %s", Py_TYPE(subobj)->tp_name);
-        return NULL;
-    }
-    else
-        return PyBool_FromLong(result);
-}
-
-
-PyDoc_STRVAR(endswith__doc__,
-"S.endswith(suffix[, start[, end]]) -> bool\n\
-\n\
-Return True if S ends with the specified suffix, False otherwise.\n\
-With optional start, test S beginning at that position.\n\
-With optional end, stop comparing S at that position.\n\
-suffix can also be a tuple of strings to try.");
-
-static PyObject *
-string_endswith(PyStringObject *self, PyObject *args)
-{
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    PyObject *subobj;
-    int result;
-
-    if (!stringlib_parse_args_finds("endswith", args, &subobj, &start, &end))
-        return NULL;
-    if (PyTuple_Check(subobj)) {
-        Py_ssize_t i;
-        for (i = 0; i < PyTuple_GET_SIZE(subobj); i++) {
-            result = _string_tailmatch(self,
-                            PyTuple_GET_ITEM(subobj, i),
-                            start, end, +1);
-            if (result == -1)
-                return NULL;
-            else if (result) {
-                Py_RETURN_TRUE;
-            }
-        }
-        Py_RETURN_FALSE;
-    }
-    result = _string_tailmatch(self, subobj, start, end, +1);
-    if (result == -1) {
-        if (PyErr_ExceptionMatches(PyExc_TypeError))
-            PyErr_Format(PyExc_TypeError, "endswith first arg must be str, "
-                         "unicode, or tuple, not %s", Py_TYPE(subobj)->tp_name);
-        return NULL;
-    }
-    else
-        return PyBool_FromLong(result);
-}
-
-
-PyDoc_STRVAR(encode__doc__,
-"S.encode([encoding[,errors]]) -> object\n\
-\n\
-Encodes S using the codec registered for encoding. encoding defaults\n\
-to the default encoding. errors may be given to set a different error\n\
-handling scheme. Default is 'strict' meaning that encoding errors raise\n\
-a UnicodeEncodeError. Other possible values are 'ignore', 'replace' and\n\
-'xmlcharrefreplace' as well as any other name registered with\n\
-codecs.register_error that is able to handle UnicodeEncodeErrors.");
-
-static PyObject *
-string_encode(PyStringObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = {"encoding", "errors", 0};
-    char *encoding = NULL;
-    char *errors = NULL;
-    PyObject *v;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|ss:encode",
-                                     kwlist, &encoding, &errors))
-        return NULL;
-    v = PyString_AsEncodedObject((PyObject *)self, encoding, errors);
-    if (v == NULL)
-        goto onError;
-    if (!PyString_Check(v) && !PyUnicode_Check(v)) {
-        PyErr_Format(PyExc_TypeError,
-                     "encoder did not return a string/unicode object "
-                     "(type=%.400s)",
-                     Py_TYPE(v)->tp_name);
-        Py_DECREF(v);
-        return NULL;
-    }
-    return v;
-
- onError:
-    return NULL;
-}
-
-
-PyDoc_STRVAR(decode__doc__,
-"S.decode([encoding[,errors]]) -> object\n\
-\n\
-Decodes S using the codec registered for encoding. encoding defaults\n\
-to the default encoding. errors may be given to set a different error\n\
-handling scheme. Default is 'strict' meaning that encoding errors raise\n\
-a UnicodeDecodeError. Other possible values are 'ignore' and 'replace'\n\
-as well as any other name registered with codecs.register_error that is\n\
-able to handle UnicodeDecodeErrors.");
-
-static PyObject *
-string_decode(PyStringObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = {"encoding", "errors", 0};
-    char *encoding = NULL;
-    char *errors = NULL;
-    PyObject *v;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|ss:decode",
-                                     kwlist, &encoding, &errors))
-        return NULL;
-    v = PyString_AsDecodedObject((PyObject *)self, encoding, errors);
-    if (v == NULL)
-        goto onError;
-    if (!PyString_Check(v) && !PyUnicode_Check(v)) {
-        PyErr_Format(PyExc_TypeError,
-                     "decoder did not return a string/unicode object "
-                     "(type=%.400s)",
-                     Py_TYPE(v)->tp_name);
-        Py_DECREF(v);
-        return NULL;
-    }
-    return v;
-
- onError:
-    return NULL;
-}
-
-
-PyDoc_STRVAR(expandtabs__doc__,
-"S.expandtabs([tabsize]) -> string\n\
-\n\
-Return a copy of S where all tab characters are expanded using spaces.\n\
-If tabsize is not given, a tab size of 8 characters is assumed.");
-
-static PyObject*
-string_expandtabs(PyStringObject *self, PyObject *args)
-{
-    const char *e, *p, *qe;
-    char *q;
-    Py_ssize_t i, j, incr;
-    PyObject *u;
-    int tabsize = 8;
-
-    if (!PyArg_ParseTuple(args, "|i:expandtabs", &tabsize))
-        return NULL;
-
-    /* First pass: determine size of output string */
-    i = 0; /* chars up to and including most recent \n or \r */
-    j = 0; /* chars since most recent \n or \r (use in tab calculations) */
-    e = PyString_AS_STRING(self) + PyString_GET_SIZE(self); /* end of input */
-    for (p = PyString_AS_STRING(self); p < e; p++)
-    if (*p == '\t') {
-        if (tabsize > 0) {
-            incr = tabsize - (j % tabsize);
-            if (j > PY_SSIZE_T_MAX - incr)
-                goto overflow1;
-            j += incr;
-        }
-    }
-    else {
-        if (j > PY_SSIZE_T_MAX - 1)
-            goto overflow1;
-        j++;
-        if (*p == '\n' || *p == '\r') {
-            if (i > PY_SSIZE_T_MAX - j)
-                goto overflow1;
-            i += j;
-            j = 0;
-        }
-    }
-
-    if (i > PY_SSIZE_T_MAX - j)
-        goto overflow1;
-
-    /* Second pass: create output string and fill it */
-    u = PyString_FromStringAndSize(NULL, i + j);
-    if (!u)
-        return NULL;
-
-    j = 0; /* same as in first pass */
-    q = PyString_AS_STRING(u); /* next output char */
-    qe = PyString_AS_STRING(u) + PyString_GET_SIZE(u); /* end of output */
-
-    for (p = PyString_AS_STRING(self); p < e; p++)
-    if (*p == '\t') {
-        if (tabsize > 0) {
-            i = tabsize - (j % tabsize);
-            j += i;
-            while (i--) {
-                if (q >= qe)
-                    goto overflow2;
-                *q++ = ' ';
-            }
-        }
-    }
-    else {
-        if (q >= qe)
-            goto overflow2;
-        *q++ = *p;
-        j++;
-        if (*p == '\n' || *p == '\r')
-            j = 0;
-    }
-
-    return u;
-
-  overflow2:
-    Py_DECREF(u);
-  overflow1:
-    PyErr_SetString(PyExc_OverflowError, "new string is too long");
-    return NULL;
-}
-
-Py_LOCAL_INLINE(PyObject *)
-pad(PyStringObject *self, Py_ssize_t left, Py_ssize_t right, char fill)
-{
-    PyObject *u;
-
-    if (left < 0)
-        left = 0;
-    if (right < 0)
-        right = 0;
-
-    if (left == 0 && right == 0 && PyString_CheckExact(self)) {
-        Py_INCREF(self);
-        return (PyObject *)self;
-    }
-
-    u = PyString_FromStringAndSize(NULL,
-                                   left + PyString_GET_SIZE(self) + right);
-    if (u) {
-        if (left)
-            memset(PyString_AS_STRING(u), fill, left);
-        Py_MEMCPY(PyString_AS_STRING(u) + left,
-               PyString_AS_STRING(self),
-               PyString_GET_SIZE(self));
-        if (right)
-            memset(PyString_AS_STRING(u) + left + PyString_GET_SIZE(self),
-               fill, right);
-    }
-
-    return u;
-}
-
-PyDoc_STRVAR(ljust__doc__,
-"S.ljust(width[, fillchar]) -> string\n"
-"\n"
-"Return S left-justified in a string of length width. Padding is\n"
-"done using the specified fill character (default is a space).");
-
-static PyObject *
-string_ljust(PyStringObject *self, PyObject *args)
-{
-    Py_ssize_t width;
-    char fillchar = ' ';
-
-    if (!PyArg_ParseTuple(args, "n|c:ljust", &width, &fillchar))
-        return NULL;
-
-    if (PyString_GET_SIZE(self) >= width && PyString_CheckExact(self)) {
-        Py_INCREF(self);
-        return (PyObject*) self;
-    }
-
-    return pad(self, 0, width - PyString_GET_SIZE(self), fillchar);
-}
-
-
-PyDoc_STRVAR(rjust__doc__,
-"S.rjust(width[, fillchar]) -> string\n"
-"\n"
-"Return S right-justified in a string of length width. Padding is\n"
-"done using the specified fill character (default is a space)");
-
-static PyObject *
-string_rjust(PyStringObject *self, PyObject *args)
-{
-    Py_ssize_t width;
-    char fillchar = ' ';
-
-    if (!PyArg_ParseTuple(args, "n|c:rjust", &width, &fillchar))
-        return NULL;
-
-    if (PyString_GET_SIZE(self) >= width && PyString_CheckExact(self)) {
-        Py_INCREF(self);
-        return (PyObject*) self;
-    }
-
-    return pad(self, width - PyString_GET_SIZE(self), 0, fillchar);
-}
-
-
-PyDoc_STRVAR(center__doc__,
-"S.center(width[, fillchar]) -> string\n"
-"\n"
-"Return S centered in a string of length width. Padding is\n"
-"done using the specified fill character (default is a space)");
-
-static PyObject *
-string_center(PyStringObject *self, PyObject *args)
-{
-    Py_ssize_t marg, left;
-    Py_ssize_t width;
-    char fillchar = ' ';
-
-    if (!PyArg_ParseTuple(args, "n|c:center", &width, &fillchar))
-        return NULL;
-
-    if (PyString_GET_SIZE(self) >= width && PyString_CheckExact(self)) {
-        Py_INCREF(self);
-        return (PyObject*) self;
-    }
-
-    marg = width - PyString_GET_SIZE(self);
-    left = marg / 2 + (marg & width & 1);
-
-    return pad(self, left, marg - left, fillchar);
-}
-
-PyDoc_STRVAR(zfill__doc__,
-"S.zfill(width) -> string\n"
-"\n"
-"Pad a numeric string S with zeros on the left, to fill a field\n"
-"of the specified width.  The string S is never truncated.");
-
-static PyObject *
-string_zfill(PyStringObject *self, PyObject *args)
-{
-    Py_ssize_t fill;
-    PyObject *s;
-    char *p;
-    Py_ssize_t width;
-
-    if (!PyArg_ParseTuple(args, "n:zfill", &width))
-        return NULL;
-
-    if (PyString_GET_SIZE(self) >= width) {
-        if (PyString_CheckExact(self)) {
-            Py_INCREF(self);
-            return (PyObject*) self;
-        }
-        else
-            return PyString_FromStringAndSize(
-            PyString_AS_STRING(self),
-            PyString_GET_SIZE(self)
-            );
-    }
-
-    fill = width - PyString_GET_SIZE(self);
-
-    s = pad(self, fill, 0, '0');
-
-    if (s == NULL)
-        return NULL;
-
-    p = PyString_AS_STRING(s);
-    if (p[fill] == '+' || p[fill] == '-') {
-        /* move sign to beginning of string */
-        p[0] = p[fill];
-        p[fill] = '0';
-    }
-
-    return (PyObject*) s;
-}
-
-PyDoc_STRVAR(isspace__doc__,
-"S.isspace() -> bool\n\
-\n\
-Return True if all characters in S are whitespace\n\
-and there is at least one character in S, False otherwise.");
-
-static PyObject*
-string_isspace(PyStringObject *self)
-{
-    register const unsigned char *p
-        = (unsigned char *) PyString_AS_STRING(self);
-    register const unsigned char *e;
-
-    /* Shortcut for single character strings */
-    if (PyString_GET_SIZE(self) == 1 &&
-        isspace(*p))
-        return PyBool_FromLong(1);
-
-    /* Special case for empty strings */
-    if (PyString_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyString_GET_SIZE(self);
-    for (; p < e; p++) {
-        if (!isspace(*p))
-            return PyBool_FromLong(0);
-    }
-    return PyBool_FromLong(1);
-}
-
-
-PyDoc_STRVAR(isalpha__doc__,
-"S.isalpha() -> bool\n\
-\n\
-Return True if all characters in S are alphabetic\n\
-and there is at least one character in S, False otherwise.");
-
-static PyObject*
-string_isalpha(PyStringObject *self)
-{
-    register const unsigned char *p
-        = (unsigned char *) PyString_AS_STRING(self);
-    register const unsigned char *e;
-
-    /* Shortcut for single character strings */
-    if (PyString_GET_SIZE(self) == 1 &&
-        isalpha(*p))
-        return PyBool_FromLong(1);
-
-    /* Special case for empty strings */
-    if (PyString_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyString_GET_SIZE(self);
-    for (; p < e; p++) {
-        if (!isalpha(*p))
-            return PyBool_FromLong(0);
-    }
-    return PyBool_FromLong(1);
-}
-
-
-PyDoc_STRVAR(isalnum__doc__,
-"S.isalnum() -> bool\n\
-\n\
-Return True if all characters in S are alphanumeric\n\
-and there is at least one character in S, False otherwise.");
-
-static PyObject*
-string_isalnum(PyStringObject *self)
-{
-    register const unsigned char *p
-        = (unsigned char *) PyString_AS_STRING(self);
-    register const unsigned char *e;
-
-    /* Shortcut for single character strings */
-    if (PyString_GET_SIZE(self) == 1 &&
-        isalnum(*p))
-        return PyBool_FromLong(1);
-
-    /* Special case for empty strings */
-    if (PyString_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyString_GET_SIZE(self);
-    for (; p < e; p++) {
-        if (!isalnum(*p))
-            return PyBool_FromLong(0);
-    }
-    return PyBool_FromLong(1);
-}
-
-
-PyDoc_STRVAR(isdigit__doc__,
-"S.isdigit() -> bool\n\
-\n\
-Return True if all characters in S are digits\n\
-and there is at least one character in S, False otherwise.");
-
-static PyObject*
-string_isdigit(PyStringObject *self)
-{
-    register const unsigned char *p
-        = (unsigned char *) PyString_AS_STRING(self);
-    register const unsigned char *e;
-
-    /* Shortcut for single character strings */
-    if (PyString_GET_SIZE(self) == 1 &&
-        isdigit(*p))
-        return PyBool_FromLong(1);
-
-    /* Special case for empty strings */
-    if (PyString_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyString_GET_SIZE(self);
-    for (; p < e; p++) {
-        if (!isdigit(*p))
-            return PyBool_FromLong(0);
-    }
-    return PyBool_FromLong(1);
-}
-
-
-PyDoc_STRVAR(islower__doc__,
-"S.islower() -> bool\n\
-\n\
-Return True if all cased characters in S are lowercase and there is\n\
-at least one cased character in S, False otherwise.");
-
-static PyObject*
-string_islower(PyStringObject *self)
-{
-    register const unsigned char *p
-        = (unsigned char *) PyString_AS_STRING(self);
-    register const unsigned char *e;
-    int cased;
-
-    /* Shortcut for single character strings */
-    if (PyString_GET_SIZE(self) == 1)
-        return PyBool_FromLong(islower(*p) != 0);
-
-    /* Special case for empty strings */
-    if (PyString_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyString_GET_SIZE(self);
-    cased = 0;
-    for (; p < e; p++) {
-        if (isupper(*p))
-            return PyBool_FromLong(0);
-        else if (!cased && islower(*p))
-            cased = 1;
-    }
-    return PyBool_FromLong(cased);
-}
-
-
-PyDoc_STRVAR(isupper__doc__,
-"S.isupper() -> bool\n\
-\n\
-Return True if all cased characters in S are uppercase and there is\n\
-at least one cased character in S, False otherwise.");
-
-static PyObject*
-string_isupper(PyStringObject *self)
-{
-    register const unsigned char *p
-        = (unsigned char *) PyString_AS_STRING(self);
-    register const unsigned char *e;
-    int cased;
-
-    /* Shortcut for single character strings */
-    if (PyString_GET_SIZE(self) == 1)
-        return PyBool_FromLong(isupper(*p) != 0);
-
-    /* Special case for empty strings */
-    if (PyString_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyString_GET_SIZE(self);
-    cased = 0;
-    for (; p < e; p++) {
-        if (islower(*p))
-            return PyBool_FromLong(0);
-        else if (!cased && isupper(*p))
-            cased = 1;
-    }
-    return PyBool_FromLong(cased);
-}
-
-
-PyDoc_STRVAR(istitle__doc__,
-"S.istitle() -> bool\n\
-\n\
-Return True if S is a titlecased string and there is at least one\n\
-character in S, i.e. uppercase characters may only follow uncased\n\
-characters and lowercase characters only cased ones. Return False\n\
-otherwise.");
-
-static PyObject*
-string_istitle(PyStringObject *self, PyObject *uncased)
-{
-    register const unsigned char *p
-        = (unsigned char *) PyString_AS_STRING(self);
-    register const unsigned char *e;
-    int cased, previous_is_cased;
-
-    /* Shortcut for single character strings */
-    if (PyString_GET_SIZE(self) == 1)
-        return PyBool_FromLong(isupper(*p) != 0);
-
-    /* Special case for empty strings */
-    if (PyString_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyString_GET_SIZE(self);
-    cased = 0;
-    previous_is_cased = 0;
-    for (; p < e; p++) {
-        register const unsigned char ch = *p;
-
-        if (isupper(ch)) {
-            if (previous_is_cased)
-                return PyBool_FromLong(0);
-            previous_is_cased = 1;
-            cased = 1;
-        }
-        else if (islower(ch)) {
-            if (!previous_is_cased)
-                return PyBool_FromLong(0);
-            previous_is_cased = 1;
-            cased = 1;
-        }
-        else
-            previous_is_cased = 0;
-    }
-    return PyBool_FromLong(cased);
-}
-
-
-PyDoc_STRVAR(splitlines__doc__,
-"S.splitlines([keepends]) -> list of strings\n\
-\n\
-Return a list of the lines in S, breaking at line boundaries.\n\
-Line breaks are not included in the resulting list unless keepends\n\
-is given and true.");
-
-static PyObject*
-string_splitlines(PyStringObject *self, PyObject *args)
-{
-    int keepends = 0;
-
-    if (!PyArg_ParseTuple(args, "|i:splitlines", &keepends))
-        return NULL;
-
-    return stringlib_splitlines(
-        (PyObject*) self, PyString_AS_STRING(self), PyString_GET_SIZE(self),
-        keepends
-    );
-}
-
-PyDoc_STRVAR(sizeof__doc__,
-"S.__sizeof__() -> size of S in memory, in bytes");
-
-static PyObject *
-string_sizeof(PyStringObject *v)
-{
-    Py_ssize_t res;
-    res = PyStringObject_SIZE + PyString_GET_SIZE(v) * Py_TYPE(v)->tp_itemsize;
-    return PyInt_FromSsize_t(res);
-}
-
-static PyObject *
-string_getnewargs(PyStringObject *v)
-{
-    return Py_BuildValue("(s#)", v->ob_sval, Py_SIZE(v));
-}
-
-
-#include "stringlib/string_format.h"
-
-PyDoc_STRVAR(format__doc__,
-"S.format(*args, **kwargs) -> string\n\
-\n\
-Return a formatted version of S, using substitutions from args and kwargs.\n\
-The substitutions are identified by braces ('{' and '}').");
-
-static PyObject *
-string__format__(PyObject* self, PyObject* args)
-{
-    PyObject *format_spec;
-    PyObject *result = NULL;
-    PyObject *tmp = NULL;
-
-    /* If 2.x, convert format_spec to the same type as value */
-    /* This is to allow things like u''.format('') */
-    if (!PyArg_ParseTuple(args, "O:__format__", &format_spec))
-        goto done;
-    if (!(PyString_Check(format_spec) || PyUnicode_Check(format_spec))) {
-        PyErr_Format(PyExc_TypeError, "__format__ arg must be str "
-                     "or unicode, not %s", Py_TYPE(format_spec)->tp_name);
-        goto done;
-    }
-    tmp = PyObject_Str(format_spec);
-    if (tmp == NULL)
-        goto done;
-    format_spec = tmp;
-
-    result = _PyBytes_FormatAdvanced(self,
-                                     PyString_AS_STRING(format_spec),
-                                     PyString_GET_SIZE(format_spec));
-done:
-    Py_XDECREF(tmp);
-    return result;
-}
-
-PyDoc_STRVAR(p_format__doc__,
-"S.__format__(format_spec) -> string\n\
-\n\
-Return a formatted version of S as described by format_spec.");
-
-
-static PyMethodDef
-string_methods[] = {
-    /* Counterparts of the obsolete stropmodule functions; except
-       string.maketrans(). */
-    {"join", (PyCFunction)string_join, METH_O, join__doc__},
-    {"split", (PyCFunction)string_split, METH_VARARGS, split__doc__},
-    {"rsplit", (PyCFunction)string_rsplit, METH_VARARGS, rsplit__doc__},
-    {"lower", (PyCFunction)string_lower, METH_NOARGS, lower__doc__},
-    {"upper", (PyCFunction)string_upper, METH_NOARGS, upper__doc__},
-    {"islower", (PyCFunction)string_islower, METH_NOARGS, islower__doc__},
-    {"isupper", (PyCFunction)string_isupper, METH_NOARGS, isupper__doc__},
-    {"isspace", (PyCFunction)string_isspace, METH_NOARGS, isspace__doc__},
-    {"isdigit", (PyCFunction)string_isdigit, METH_NOARGS, isdigit__doc__},
-    {"istitle", (PyCFunction)string_istitle, METH_NOARGS, istitle__doc__},
-    {"isalpha", (PyCFunction)string_isalpha, METH_NOARGS, isalpha__doc__},
-    {"isalnum", (PyCFunction)string_isalnum, METH_NOARGS, isalnum__doc__},
-    {"capitalize", (PyCFunction)string_capitalize, METH_NOARGS,
-     capitalize__doc__},
-    {"count", (PyCFunction)string_count, METH_VARARGS, count__doc__},
-    {"endswith", (PyCFunction)string_endswith, METH_VARARGS,
-     endswith__doc__},
-    {"partition", (PyCFunction)string_partition, METH_O, partition__doc__},
-    {"find", (PyCFunction)string_find, METH_VARARGS, find__doc__},
-    {"index", (PyCFunction)string_index, METH_VARARGS, index__doc__},
-    {"lstrip", (PyCFunction)string_lstrip, METH_VARARGS, lstrip__doc__},
-    {"replace", (PyCFunction)string_replace, METH_VARARGS, replace__doc__},
-    {"rfind", (PyCFunction)string_rfind, METH_VARARGS, rfind__doc__},
-    {"rindex", (PyCFunction)string_rindex, METH_VARARGS, rindex__doc__},
-    {"rstrip", (PyCFunction)string_rstrip, METH_VARARGS, rstrip__doc__},
-    {"rpartition", (PyCFunction)string_rpartition, METH_O,
-     rpartition__doc__},
-    {"startswith", (PyCFunction)string_startswith, METH_VARARGS,
-     startswith__doc__},
-    {"strip", (PyCFunction)string_strip, METH_VARARGS, strip__doc__},
-    {"swapcase", (PyCFunction)string_swapcase, METH_NOARGS,
-     swapcase__doc__},
-    {"translate", (PyCFunction)string_translate, METH_VARARGS,
-     translate__doc__},
-    {"title", (PyCFunction)string_title, METH_NOARGS, title__doc__},
-    {"ljust", (PyCFunction)string_ljust, METH_VARARGS, ljust__doc__},
-    {"rjust", (PyCFunction)string_rjust, METH_VARARGS, rjust__doc__},
-    {"center", (PyCFunction)string_center, METH_VARARGS, center__doc__},
-    {"zfill", (PyCFunction)string_zfill, METH_VARARGS, zfill__doc__},
-    {"format", (PyCFunction) do_string_format, METH_VARARGS | METH_KEYWORDS, format__doc__},
-    {"__format__", (PyCFunction) string__format__, METH_VARARGS, p_format__doc__},
-    {"_formatter_field_name_split", (PyCFunction) formatter_field_name_split, METH_NOARGS},
-    {"_formatter_parser", (PyCFunction) formatter_parser, METH_NOARGS},
-    {"encode", (PyCFunction)string_encode, METH_VARARGS | METH_KEYWORDS, encode__doc__},
-    {"decode", (PyCFunction)string_decode, METH_VARARGS | METH_KEYWORDS, decode__doc__},
-    {"expandtabs", (PyCFunction)string_expandtabs, METH_VARARGS,
-     expandtabs__doc__},
-    {"splitlines", (PyCFunction)string_splitlines, METH_VARARGS,
-     splitlines__doc__},
-    {"__sizeof__", (PyCFunction)string_sizeof, METH_NOARGS,
-     sizeof__doc__},
-    {"__getnewargs__",          (PyCFunction)string_getnewargs, METH_NOARGS},
-    {NULL,     NULL}                         /* sentinel */
-};
-
-static PyObject *
-str_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
-
-static PyObject *
-string_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *x = NULL;
-    static char *kwlist[] = {"object", 0};
-
-    if (type != &PyString_Type)
-        return str_subtype_new(type, args, kwds);
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:str", kwlist, &x))
-        return NULL;
-    if (x == NULL)
-        return PyString_FromString("");
-    return PyObject_Str(x);
-}
-
-static PyObject *
-str_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *tmp, *pnew;
-    Py_ssize_t n;
-
-    assert(PyType_IsSubtype(type, &PyString_Type));
-    tmp = string_new(&PyString_Type, args, kwds);
-    if (tmp == NULL)
-        return NULL;
-    assert(PyString_CheckExact(tmp));
-    n = PyString_GET_SIZE(tmp);
-    pnew = type->tp_alloc(type, n);
-    if (pnew != NULL) {
-        Py_MEMCPY(PyString_AS_STRING(pnew), PyString_AS_STRING(tmp), n+1);
-        ((PyStringObject *)pnew)->ob_shash =
-            ((PyStringObject *)tmp)->ob_shash;
-        ((PyStringObject *)pnew)->ob_sstate = SSTATE_NOT_INTERNED;
-    }
-    Py_DECREF(tmp);
-    return pnew;
-}
-
-static PyObject *
-basestring_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyErr_SetString(PyExc_TypeError,
-                    "The basestring type cannot be instantiated");
-    return NULL;
-}
-
-static PyObject *
-string_mod(PyObject *v, PyObject *w)
-{
-    if (!PyString_Check(v)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    return PyString_Format(v, w);
-}
-
-PyDoc_STRVAR(basestring_doc,
-"Type basestring cannot be instantiated; it is the base for str and unicode.");
-
-static PyNumberMethods string_as_number = {
-    0,                          /*nb_add*/
-    0,                          /*nb_subtract*/
-    0,                          /*nb_multiply*/
-    0,                          /*nb_divide*/
-    string_mod,                 /*nb_remainder*/
-};
-
-
-PyTypeObject PyBaseString_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "basestring",
-    0,
-    0,
-    0,                                          /* 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 */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
-    basestring_doc,                             /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    0,                                          /* tp_members */
-    0,                                          /* tp_getset */
-    &PyBaseObject_Type,                         /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    basestring_new,                             /* tp_new */
-    0,                                          /* tp_free */
-};
-
-PyDoc_STRVAR(string_doc,
-"str(object) -> string\n\
-\n\
-Return a nice string representation of the object.\n\
-If the argument is a string, the return value is the same object.");
-
-PyTypeObject PyString_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "str",
-    PyStringObject_SIZE,
-    sizeof(char),
-    string_dealloc,                             /* tp_dealloc */
-    (printfunc)string_print,                    /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    string_repr,                                /* tp_repr */
-    &string_as_number,                          /* tp_as_number */
-    &string_as_sequence,                        /* tp_as_sequence */
-    &string_as_mapping,                         /* tp_as_mapping */
-    (hashfunc)string_hash,                      /* tp_hash */
-    0,                                          /* tp_call */
-    string_str,                                 /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    &string_as_buffer,                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
-        Py_TPFLAGS_BASETYPE | Py_TPFLAGS_STRING_SUBCLASS |
-        Py_TPFLAGS_HAVE_NEWBUFFER,              /* tp_flags */
-    string_doc,                                 /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    (richcmpfunc)string_richcompare,            /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    string_methods,                             /* tp_methods */
-    0,                                          /* tp_members */
-    0,                                          /* tp_getset */
-    &PyBaseString_Type,                         /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    string_new,                                 /* tp_new */
-    PyObject_Del,                               /* tp_free */
-};
-
-void
-PyString_Concat(register PyObject **pv, register PyObject *w)
-{
-    register PyObject *v;
-    if (*pv == NULL)
-        return;
-    if (w == NULL || !PyString_Check(*pv)) {
-        Py_DECREF(*pv);
-        *pv = NULL;
-        return;
-    }
-    v = string_concat((PyStringObject *) *pv, w);
-    Py_DECREF(*pv);
-    *pv = v;
-}
-
-void
-PyString_ConcatAndDel(register PyObject **pv, register PyObject *w)
-{
-    PyString_Concat(pv, w);
-    Py_XDECREF(w);
-}
-
-
-/* The following function breaks the notion that strings are immutable:
-   it changes the size of a string.  We get away with this only if there
-   is only one module referencing the object.  You can also think of it
-   as creating a new string object and destroying the old one, only
-   more efficiently.  In any case, don't use this if the string may
-   already be known to some other part of the code...
-   Note that if there's not enough memory to resize the string, the original
-   string object at *pv is deallocated, *pv is set to NULL, an "out of
-   memory" exception is set, and -1 is returned.  Else (on success) 0 is
-   returned, and the value in *pv may or may not be the same as on input.
-   As always, an extra byte is allocated for a trailing \0 byte (newsize
-   does *not* include that), and a trailing \0 byte is stored.
-*/
-
-int
-_PyString_Resize(PyObject **pv, Py_ssize_t newsize)
-{
-    register PyObject *v;
-    register PyStringObject *sv;
-    v = *pv;
-    if (!PyString_Check(v) || Py_REFCNT(v) != 1 || newsize < 0 ||
-        PyString_CHECK_INTERNED(v)) {
-        *pv = 0;
-        Py_DECREF(v);
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    /* XXX UNREF/NEWREF interface should be more symmetrical */
-    _Py_DEC_REFTOTAL;
-    _Py_ForgetReference(v);
-    *pv = (PyObject *)
-        PyObject_REALLOC((char *)v, PyStringObject_SIZE + newsize);
-    if (*pv == NULL) {
-        PyObject_Del(v);
-        PyErr_NoMemory();
-        return -1;
-    }
-    _Py_NewReference(*pv);
-    sv = (PyStringObject *) *pv;
-    Py_SIZE(sv) = newsize;
-    sv->ob_sval[newsize] = '\0';
-    sv->ob_shash = -1;          /* invalidate cached hash value */
-    return 0;
-}
-
-/* Helpers for formatstring */
-
-Py_LOCAL_INLINE(PyObject *)
-getnextarg(PyObject *args, Py_ssize_t arglen, Py_ssize_t *p_argidx)
-{
-    Py_ssize_t argidx = *p_argidx;
-    if (argidx < arglen) {
-        (*p_argidx)++;
-        if (arglen < 0)
-            return args;
-        else
-            return PyTuple_GetItem(args, argidx);
-    }
-    PyErr_SetString(PyExc_TypeError,
-                    "not enough arguments for format string");
-    return NULL;
-}
-
-/* Format codes
- * F_LJUST      '-'
- * F_SIGN       '+'
- * F_BLANK      ' '
- * F_ALT        '#'
- * F_ZERO       '0'
- */
-#define F_LJUST (1<<0)
-#define F_SIGN  (1<<1)
-#define F_BLANK (1<<2)
-#define F_ALT   (1<<3)
-#define F_ZERO  (1<<4)
-
-/* Returns a new reference to a PyString object, or NULL on failure. */
-
-static PyObject *
-formatfloat(PyObject *v, int flags, int prec, int type)
-{
-    char *p;
-    PyObject *result;
-    double x;
-
-    x = PyFloat_AsDouble(v);
-    if (x == -1.0 && PyErr_Occurred()) {
-        PyErr_Format(PyExc_TypeError, "float argument required, "
-                     "not %.200s", Py_TYPE(v)->tp_name);
-        return NULL;
-    }
-
-    if (prec < 0)
-        prec = 6;
-
-    p = PyOS_double_to_string(x, type, prec,
-                              (flags & F_ALT) ? Py_DTSF_ALT : 0, NULL);
-
-    if (p == NULL)
-        return NULL;
-    result = PyString_FromStringAndSize(p, strlen(p));
-    PyMem_Free(p);
-    return result;
-}
-
-/* _PyString_FormatLong emulates the format codes d, u, o, x and X, and
- * the F_ALT flag, for Python's long (unbounded) ints.  It's not used for
- * Python's regular ints.
- * Return value:  a new PyString*, or NULL if error.
- *  .  *pbuf is set to point into it,
- *     *plen set to the # of chars following that.
- *     Caller must decref it when done using pbuf.
- *     The string starting at *pbuf is of the form
- *         "-"? ("0x" | "0X")? digit+
- *     "0x"/"0X" are present only for x and X conversions, with F_ALT
- *         set in flags.  The case of hex digits will be correct,
- *     There will be at least prec digits, zero-filled on the left if
- *         necessary to get that many.
- * val          object to be converted
- * flags        bitmask of format flags; only F_ALT is looked at
- * prec         minimum number of digits; 0-fill on left if needed
- * type         a character in [duoxX]; u acts the same as d
- *
- * CAUTION:  o, x and X conversions on regular ints can never
- * produce a '-' sign, but can for Python's unbounded ints.
- */
-PyObject*
-_PyString_FormatLong(PyObject *val, int flags, int prec, int type,
-                     char **pbuf, int *plen)
-{
-    PyObject *result = NULL;
-    char *buf;
-    Py_ssize_t i;
-    int sign;           /* 1 if '-', else 0 */
-    int len;            /* number of characters */
-    Py_ssize_t llen;
-    int numdigits;      /* len == numnondigits + numdigits */
-    int numnondigits = 0;
-
-    switch (type) {
-    case 'd':
-    case 'u':
-        result = Py_TYPE(val)->tp_str(val);
-        break;
-    case 'o':
-        result = Py_TYPE(val)->tp_as_number->nb_oct(val);
-        break;
-    case 'x':
-    case 'X':
-        numnondigits = 2;
-        result = Py_TYPE(val)->tp_as_number->nb_hex(val);
-        break;
-    default:
-        assert(!"'type' not in [duoxX]");
-    }
-    if (!result)
-        return NULL;
-
-    buf = PyString_AsString(result);
-    if (!buf) {
-        Py_DECREF(result);
-        return NULL;
-    }
-
-    /* To modify the string in-place, there can only be one reference. */
-    if (Py_REFCNT(result) != 1) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    llen = PyString_Size(result);
-    if (llen > INT_MAX) {
-        PyErr_SetString(PyExc_ValueError, "string too large in _PyString_FormatLong");
-        return NULL;
-    }
-    len = (int)llen;
-    if (buf[len-1] == 'L') {
-        --len;
-        buf[len] = '\0';
-    }
-    sign = buf[0] == '-';
-    numnondigits += sign;
-    numdigits = len - numnondigits;
-    assert(numdigits > 0);
-
-    /* Get rid of base marker unless F_ALT */
-    if ((flags & F_ALT) == 0) {
-        /* Need to skip 0x, 0X or 0. */
-        int skipped = 0;
-        switch (type) {
-        case 'o':
-            assert(buf[sign] == '0');
-            /* If 0 is only digit, leave it alone. */
-            if (numdigits > 1) {
-                skipped = 1;
-                --numdigits;
-            }
-            break;
-        case 'x':
-        case 'X':
-            assert(buf[sign] == '0');
-            assert(buf[sign + 1] == 'x');
-            skipped = 2;
-            numnondigits -= 2;
-            break;
-        }
-        if (skipped) {
-            buf += skipped;
-            len -= skipped;
-            if (sign)
-                buf[0] = '-';
-        }
-        assert(len == numnondigits + numdigits);
-        assert(numdigits > 0);
-    }
-
-    /* Fill with leading zeroes to meet minimum width. */
-    if (prec > numdigits) {
-        PyObject *r1 = PyString_FromStringAndSize(NULL,
-                                numnondigits + prec);
-        char *b1;
-        if (!r1) {
-            Py_DECREF(result);
-            return NULL;
-        }
-        b1 = PyString_AS_STRING(r1);
-        for (i = 0; i < numnondigits; ++i)
-            *b1++ = *buf++;
-        for (i = 0; i < prec - numdigits; i++)
-            *b1++ = '0';
-        for (i = 0; i < numdigits; i++)
-            *b1++ = *buf++;
-        *b1 = '\0';
-        Py_DECREF(result);
-        result = r1;
-        buf = PyString_AS_STRING(result);
-        len = numnondigits + prec;
-    }
-
-    /* Fix up case for hex conversions. */
-    if (type == 'X') {
-        /* Need to convert all lower case letters to upper case.
-           and need to convert 0x to 0X (and -0x to -0X). */
-        for (i = 0; i < len; i++)
-            if (buf[i] >= 'a' && buf[i] <= 'x')
-                buf[i] -= 'a'-'A';
-    }
-    *pbuf = buf;
-    *plen = len;
-    return result;
-}
-
-Py_LOCAL_INLINE(int)
-formatint(char *buf, size_t buflen, int flags,
-          int prec, int type, PyObject *v)
-{
-    /* fmt = '%#.' + `prec` + 'l' + `type`
-       worst case length = 3 + 19 (worst len of INT_MAX on 64-bit machine)
-       + 1 + 1 = 24 */
-    char fmt[64];       /* plenty big enough! */
-    char *sign;
-    long x;
-
-    x = PyInt_AsLong(v);
-    if (x == -1 && PyErr_Occurred()) {
-        PyErr_Format(PyExc_TypeError, "int argument required, not %.200s",
-                     Py_TYPE(v)->tp_name);
-        return -1;
-    }
-    if (x < 0 && type == 'u') {
-        type = 'd';
-    }
-    if (x < 0 && (type == 'x' || type == 'X' || type == 'o'))
-        sign = "-";
-    else
-        sign = "";
-    if (prec < 0)
-        prec = 1;
-
-    if ((flags & F_ALT) &&
-        (type == 'x' || type == 'X')) {
-        /* When converting under %#x or %#X, there are a number
-         * of issues that cause pain:
-         * - when 0 is being converted, the C standard leaves off
-         *   the '0x' or '0X', which is inconsistent with other
-         *   %#x/%#X conversions and inconsistent with Python's
-         *   hex() function
-         * - there are platforms that violate the standard and
-         *   convert 0 with the '0x' or '0X'
-         *   (Metrowerks, Compaq Tru64)
-         * - there are platforms that give '0x' when converting
-         *   under %#X, but convert 0 in accordance with the
-         *   standard (OS/2 EMX)
-         *
-         * We can achieve the desired consistency by inserting our
-         * own '0x' or '0X' prefix, and substituting %x/%X in place
-         * of %#x/%#X.
-         *
-         * Note that this is the same approach as used in
-         * formatint() in unicodeobject.c
-         */
-        PyOS_snprintf(fmt, sizeof(fmt), "%s0%c%%.%dl%c",
-                      sign, type, prec, type);
-    }
-    else {
-        PyOS_snprintf(fmt, sizeof(fmt), "%s%%%s.%dl%c",
-                      sign, (flags&F_ALT) ? "#" : "",
-                      prec, type);
-    }
-
-    /* buf = '+'/'-'/'' + '0'/'0x'/'' + '[0-9]'*max(prec, len(x in octal))
-     * worst case buf = '-0x' + [0-9]*prec, where prec >= 11
-     */
-    if (buflen <= 14 || buflen <= (size_t)3 + (size_t)prec) {
-        PyErr_SetString(PyExc_OverflowError,
-            "formatted integer is too long (precision too large?)");
-        return -1;
-    }
-    if (sign[0])
-        PyOS_snprintf(buf, buflen, fmt, -x);
-    else
-        PyOS_snprintf(buf, buflen, fmt, x);
-    return (int)strlen(buf);
-}
-
-Py_LOCAL_INLINE(int)
-formatchar(char *buf, size_t buflen, PyObject *v)
-{
-    /* presume that the buffer is at least 2 characters long */
-    if (PyString_Check(v)) {
-        if (!PyArg_Parse(v, "c;%c requires int or char", &buf[0]))
-            return -1;
-    }
-    else {
-        if (!PyArg_Parse(v, "b;%c requires int or char", &buf[0]))
-            return -1;
-    }
-    buf[1] = '\0';
-    return 1;
-}
-
-/* fmt%(v1,v2,...) is roughly equivalent to sprintf(fmt, v1, v2, ...)
-
-   FORMATBUFLEN is the length of the buffer in which the ints &
-   chars are formatted. XXX This is a magic number. Each formatting
-   routine does bounds checking to ensure no overflow, but a better
-   solution may be to malloc a buffer of appropriate size for each
-   format. For now, the current solution is sufficient.
-*/
-#define FORMATBUFLEN (size_t)120
-
-PyObject *
-PyString_Format(PyObject *format, PyObject *args)
-{
-    char *fmt, *res;
-    Py_ssize_t arglen, argidx;
-    Py_ssize_t reslen, rescnt, fmtcnt;
-    int args_owned = 0;
-    PyObject *result, *orig_args;
-#ifdef Py_USING_UNICODE
-    PyObject *v, *w;
-#endif
-    PyObject *dict = NULL;
-    if (format == NULL || !PyString_Check(format) || args == NULL) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    orig_args = args;
-    fmt = PyString_AS_STRING(format);
-    fmtcnt = PyString_GET_SIZE(format);
-    reslen = rescnt = fmtcnt + 100;
-    result = PyString_FromStringAndSize((char *)NULL, reslen);
-    if (result == NULL)
-        return NULL;
-    res = PyString_AsString(result);
-    if (PyTuple_Check(args)) {
-        arglen = PyTuple_GET_SIZE(args);
-        argidx = 0;
-    }
-    else {
-        arglen = -1;
-        argidx = -2;
-    }
-    if (Py_TYPE(args)->tp_as_mapping && !PyTuple_Check(args) &&
-        !PyObject_TypeCheck(args, &PyBaseString_Type))
-        dict = args;
-    while (--fmtcnt >= 0) {
-        if (*fmt != '%') {
-            if (--rescnt < 0) {
-                rescnt = fmtcnt + 100;
-                reslen += rescnt;
-                if (_PyString_Resize(&result, reslen))
-                    return NULL;
-                res = PyString_AS_STRING(result)
-                    + reslen - rescnt;
-                --rescnt;
-            }
-            *res++ = *fmt++;
-        }
-        else {
-            /* Got a format specifier */
-            int flags = 0;
-            Py_ssize_t width = -1;
-            int prec = -1;
-            int c = '\0';
-            int fill;
-            int isnumok;
-            PyObject *v     = NULL;
-            PyObject *temp  = NULL;
-            char *pbuf      = NULL;
-            int sign;
-            Py_ssize_t len;
-            char formatbuf[FORMATBUFLEN];
-                 /* For format{int,char}() */
-#ifdef Py_USING_UNICODE
-            char *fmt_start = fmt;
-            Py_ssize_t argidx_start = argidx;
-#endif
-
-            fmt++;
-            if (*fmt == '(') {
-                char *keystart;
-                Py_ssize_t keylen;
-                PyObject *key;
-                int pcount = 1;
-
-                if (dict == NULL) {
-                    PyErr_SetString(PyExc_TypeError,
-                             "format requires a mapping");
-                    goto error;
-                }
-                ++fmt;
-                --fmtcnt;
-                keystart = fmt;
-                /* Skip over balanced parentheses */
-                while (pcount > 0 && --fmtcnt >= 0) {
-                    if (*fmt == ')')
-                        --pcount;
-                    else if (*fmt == '(')
-                        ++pcount;
-                    fmt++;
-                }
-                keylen = fmt - keystart - 1;
-                if (fmtcnt < 0 || pcount > 0) {
-                    PyErr_SetString(PyExc_ValueError,
-                               "incomplete format key");
-                    goto error;
-                }
-                key = PyString_FromStringAndSize(keystart,
-                                                 keylen);
-                if (key == NULL)
-                    goto error;
-                if (args_owned) {
-                    Py_DECREF(args);
-                    args_owned = 0;
-                }
-                args = PyObject_GetItem(dict, key);
-                Py_DECREF(key);
-                if (args == NULL) {
-                    goto error;
-                }
-                args_owned = 1;
-                arglen = -1;
-                argidx = -2;
-            }
-            while (--fmtcnt >= 0) {
-                switch (c = *fmt++) {
-                case '-': flags |= F_LJUST; continue;
-                case '+': flags |= F_SIGN; continue;
-                case ' ': flags |= F_BLANK; continue;
-                case '#': flags |= F_ALT; continue;
-                case '0': flags |= F_ZERO; continue;
-                }
-                break;
-            }
-            if (c == '*') {
-                v = getnextarg(args, arglen, &argidx);
-                if (v == NULL)
-                    goto error;
-                if (!PyInt_Check(v)) {
-                    PyErr_SetString(PyExc_TypeError,
-                                    "* wants int");
-                    goto error;
-                }
-                width = PyInt_AsLong(v);
-                if (width < 0) {
-                    flags |= F_LJUST;
-                    width = -width;
-                }
-                if (--fmtcnt >= 0)
-                    c = *fmt++;
-            }
-            else if (c >= 0 && isdigit(c)) {
-                width = c - '0';
-                while (--fmtcnt >= 0) {
-                    c = Py_CHARMASK(*fmt++);
-                    if (!isdigit(c))
-                        break;
-                    if ((width*10) / 10 != width) {
-                        PyErr_SetString(
-                            PyExc_ValueError,
-                            "width too big");
-                        goto error;
-                    }
-                    width = width*10 + (c - '0');
-                }
-            }
-            if (c == '.') {
-                prec = 0;
-                if (--fmtcnt >= 0)
-                    c = *fmt++;
-                if (c == '*') {
-                    v = getnextarg(args, arglen, &argidx);
-                    if (v == NULL)
-                        goto error;
-                    if (!PyInt_Check(v)) {
-                        PyErr_SetString(
-                            PyExc_TypeError,
-                            "* wants int");
-                        goto error;
-                    }
-                    prec = PyInt_AsLong(v);
-                    if (prec < 0)
-                        prec = 0;
-                    if (--fmtcnt >= 0)
-                        c = *fmt++;
-                }
-                else if (c >= 0 && isdigit(c)) {
-                    prec = c - '0';
-                    while (--fmtcnt >= 0) {
-                        c = Py_CHARMASK(*fmt++);
-                        if (!isdigit(c))
-                            break;
-                        if ((prec*10) / 10 != prec) {
-                            PyErr_SetString(
-                                PyExc_ValueError,
-                                "prec too big");
-                            goto error;
-                        }
-                        prec = prec*10 + (c - '0');
-                    }
-                }
-            } /* prec */
-            if (fmtcnt >= 0) {
-                if (c == 'h' || c == 'l' || c == 'L') {
-                    if (--fmtcnt >= 0)
-                        c = *fmt++;
-                }
-            }
-            if (fmtcnt < 0) {
-                PyErr_SetString(PyExc_ValueError,
-                                "incomplete format");
-                goto error;
-            }
-            if (c != '%') {
-                v = getnextarg(args, arglen, &argidx);
-                if (v == NULL)
-                    goto error;
-            }
-            sign = 0;
-            fill = ' ';
-            switch (c) {
-            case '%':
-                pbuf = "%";
-                len = 1;
-                break;
-            case 's':
-#ifdef Py_USING_UNICODE
-                if (PyUnicode_Check(v)) {
-                    fmt = fmt_start;
-                    argidx = argidx_start;
-                    goto unicode;
-                }
-#endif
-                temp = _PyObject_Str(v);
-#ifdef Py_USING_UNICODE
-                if (temp != NULL && PyUnicode_Check(temp)) {
-                    Py_DECREF(temp);
-                    fmt = fmt_start;
-                    argidx = argidx_start;
-                    goto unicode;
-                }
-#endif
-                /* Fall through */
-            case 'r':
-                if (c == 'r')
-                    temp = PyObject_Repr(v);
-                if (temp == NULL)
-                    goto error;
-                if (!PyString_Check(temp)) {
-                    PyErr_SetString(PyExc_TypeError,
-                      "%s argument has non-string str()");
-                    Py_DECREF(temp);
-                    goto error;
-                }
-                pbuf = PyString_AS_STRING(temp);
-                len = PyString_GET_SIZE(temp);
-                if (prec >= 0 && len > prec)
-                    len = prec;
-                break;
-            case 'i':
-            case 'd':
-            case 'u':
-            case 'o':
-            case 'x':
-            case 'X':
-                if (c == 'i')
-                    c = 'd';
-                isnumok = 0;
-                if (PyNumber_Check(v)) {
-                    PyObject *iobj=NULL;
-
-                    if (PyInt_Check(v) || (PyLong_Check(v))) {
-                        iobj = v;
-                        Py_INCREF(iobj);
-                    }
-                    else {
-                        iobj = PyNumber_Int(v);
-                        if (iobj==NULL) iobj = PyNumber_Long(v);
-                    }
-                    if (iobj!=NULL) {
-                        if (PyInt_Check(iobj)) {
-                            isnumok = 1;
-                            pbuf = formatbuf;
-                            len = formatint(pbuf,
-                                            sizeof(formatbuf),
-                                            flags, prec, c, iobj);
-                            Py_DECREF(iobj);
-                            if (len < 0)
-                                goto error;
-                            sign = 1;
-                        }
-                        else if (PyLong_Check(iobj)) {
-                            int ilen;
-
-                            isnumok = 1;
-                            temp = _PyString_FormatLong(iobj, flags,
-                                prec, c, &pbuf, &ilen);
-                            Py_DECREF(iobj);
-                            len = ilen;
-                            if (!temp)
-                                goto error;
-                            sign = 1;
-                        }
-                        else {
-                            Py_DECREF(iobj);
-                        }
-                    }
-                }
-                if (!isnumok) {
-                    PyErr_Format(PyExc_TypeError,
-                        "%%%c format: a number is required, "
-                        "not %.200s", c, Py_TYPE(v)->tp_name);
-                    goto error;
-                }
-                if (flags & F_ZERO)
-                    fill = '0';
-                break;
-            case 'e':
-            case 'E':
-            case 'f':
-            case 'F':
-            case 'g':
-            case 'G':
-                temp = formatfloat(v, flags, prec, c);
-                if (temp == NULL)
-                    goto error;
-                pbuf = PyString_AS_STRING(temp);
-                len = PyString_GET_SIZE(temp);
-                sign = 1;
-                if (flags & F_ZERO)
-                    fill = '0';
-                break;
-            case 'c':
-#ifdef Py_USING_UNICODE
-                if (PyUnicode_Check(v)) {
-                    fmt = fmt_start;
-                    argidx = argidx_start;
-                    goto unicode;
-                }
-#endif
-                pbuf = formatbuf;
-                len = formatchar(pbuf, sizeof(formatbuf), v);
-                if (len < 0)
-                    goto error;
-                break;
-            default:
-                PyErr_Format(PyExc_ValueError,
-                  "unsupported format character '%c' (0x%x) "
-                  "at index %zd",
-                  c, c,
-                  (Py_ssize_t)(fmt - 1 -
-                               PyString_AsString(format)));
-                goto error;
-            }
-            if (sign) {
-                if (*pbuf == '-' || *pbuf == '+') {
-                    sign = *pbuf++;
-                    len--;
-                }
-                else if (flags & F_SIGN)
-                    sign = '+';
-                else if (flags & F_BLANK)
-                    sign = ' ';
-                else
-                    sign = 0;
-            }
-            if (width < len)
-                width = len;
-            if (rescnt - (sign != 0) < width) {
-                reslen -= rescnt;
-                rescnt = width + fmtcnt + 100;
-                reslen += rescnt;
-                if (reslen < 0) {
-                    Py_DECREF(result);
-                    Py_XDECREF(temp);
-                    return PyErr_NoMemory();
-                }
-                if (_PyString_Resize(&result, reslen)) {
-                    Py_XDECREF(temp);
-                    return NULL;
-                }
-                res = PyString_AS_STRING(result)
-                    + reslen - rescnt;
-            }
-            if (sign) {
-                if (fill != ' ')
-                    *res++ = sign;
-                rescnt--;
-                if (width > len)
-                    width--;
-            }
-            if ((flags & F_ALT) && (c == 'x' || c == 'X')) {
-                assert(pbuf[0] == '0');
-                assert(pbuf[1] == c);
-                if (fill != ' ') {
-                    *res++ = *pbuf++;
-                    *res++ = *pbuf++;
-                }
-                rescnt -= 2;
-                width -= 2;
-                if (width < 0)
-                    width = 0;
-                len -= 2;
-            }
-            if (width > len && !(flags & F_LJUST)) {
-                do {
-                    --rescnt;
-                    *res++ = fill;
-                } while (--width > len);
-            }
-            if (fill == ' ') {
-                if (sign)
-                    *res++ = sign;
-                if ((flags & F_ALT) &&
-                    (c == 'x' || c == 'X')) {
-                    assert(pbuf[0] == '0');
-                    assert(pbuf[1] == c);
-                    *res++ = *pbuf++;
-                    *res++ = *pbuf++;
-                }
-            }
-            Py_MEMCPY(res, pbuf, len);
-            res += len;
-            rescnt -= len;
-            while (--width >= len) {
-                --rescnt;
-                *res++ = ' ';
-            }
-            if (dict && (argidx < arglen) && c != '%') {
-                PyErr_SetString(PyExc_TypeError,
-                           "not all arguments converted during string formatting");
-                Py_XDECREF(temp);
-                goto error;
-            }
-            Py_XDECREF(temp);
-        } /* '%' */
-    } /* until end */
-    if (argidx < arglen && !dict) {
-        PyErr_SetString(PyExc_TypeError,
-                        "not all arguments converted during string formatting");
-        goto error;
-    }
-    if (args_owned) {
-        Py_DECREF(args);
-    }
-    if (_PyString_Resize(&result, reslen - rescnt))
-        return NULL;
-    return result;
-
-#ifdef Py_USING_UNICODE
- unicode:
-    if (args_owned) {
-        Py_DECREF(args);
-        args_owned = 0;
-    }
-    /* Fiddle args right (remove the first argidx arguments) */
-    if (PyTuple_Check(orig_args) && argidx > 0) {
-        PyObject *v;
-        Py_ssize_t n = PyTuple_GET_SIZE(orig_args) - argidx;
-        v = PyTuple_New(n);
-        if (v == NULL)
-            goto error;
-        while (--n >= 0) {
-            PyObject *w = PyTuple_GET_ITEM(orig_args, n + argidx);
-            Py_INCREF(w);
-            PyTuple_SET_ITEM(v, n, w);
-        }
-        args = v;
-    } else {
-        Py_INCREF(orig_args);
-        args = orig_args;
-    }
-    args_owned = 1;
-    /* Take what we have of the result and let the Unicode formatting
-       function format the rest of the input. */
-    rescnt = res - PyString_AS_STRING(result);
-    if (_PyString_Resize(&result, rescnt))
-        goto error;
-    fmtcnt = PyString_GET_SIZE(format) - \
-             (fmt - PyString_AS_STRING(format));
-    format = PyUnicode_Decode(fmt, fmtcnt, NULL, NULL);
-    if (format == NULL)
-        goto error;
-    v = PyUnicode_Format(format, args);
-    Py_DECREF(format);
-    if (v == NULL)
-        goto error;
-    /* Paste what we have (result) to what the Unicode formatting
-       function returned (v) and return the result (or error) */
-    w = PyUnicode_Concat(result, v);
-    Py_DECREF(result);
-    Py_DECREF(v);
-    Py_DECREF(args);
-    return w;
-#endif /* Py_USING_UNICODE */
-
- error:
-    Py_DECREF(result);
-    if (args_owned) {
-        Py_DECREF(args);
-    }
-    return NULL;
-}
-
-void
-PyString_InternInPlace(PyObject **p)
-{
-    register PyStringObject *s = (PyStringObject *)(*p);
-    PyObject *t;
-    if (s == NULL || !PyString_Check(s))
-        Py_FatalError("PyString_InternInPlace: strings only please!");
-    /* If it's a string subclass, we don't really know what putting
-       it in the interned dict might do. */
-    if (!PyString_CheckExact(s))
-        return;
-    if (PyString_CHECK_INTERNED(s))
-        return;
-    if (interned == NULL) {
-        interned = PyDict_New();
-        if (interned == NULL) {
-            PyErr_Clear(); /* Don't leave an exception */
-            return;
-        }
-    }
-    t = PyDict_GetItem(interned, (PyObject *)s);
-    if (t) {
-        Py_INCREF(t);
-        Py_DECREF(*p);
-        *p = t;
-        return;
-    }
-
-    if (PyDict_SetItem(interned, (PyObject *)s, (PyObject *)s) < 0) {
-        PyErr_Clear();
-        return;
-    }
-    /* The two references in interned are not counted by refcnt.
-       The string deallocator will take care of this */
-    Py_REFCNT(s) -= 2;
-    PyString_CHECK_INTERNED(s) = SSTATE_INTERNED_MORTAL;
-}
-
-void
-PyString_InternImmortal(PyObject **p)
-{
-    PyString_InternInPlace(p);
-    if (PyString_CHECK_INTERNED(*p) != SSTATE_INTERNED_IMMORTAL) {
-        PyString_CHECK_INTERNED(*p) = SSTATE_INTERNED_IMMORTAL;
-        Py_INCREF(*p);
-    }
-}
-
-
-PyObject *
-PyString_InternFromString(const char *cp)
-{
-    PyObject *s = PyString_FromString(cp);
-    if (s == NULL)
-        return NULL;
-    PyString_InternInPlace(&s);
-    return s;
-}
-
-void
-PyString_Fini(void)
-{
-    int i;
-    for (i = 0; i < UCHAR_MAX + 1; i++) {
-        Py_XDECREF(characters[i]);
-        characters[i] = NULL;
-    }
-    Py_XDECREF(nullstring);
-    nullstring = NULL;
-}
-
-void _Py_ReleaseInternedStrings(void)
-{
-    PyObject *keys;
-    PyStringObject *s;
-    Py_ssize_t i, n;
-    Py_ssize_t immortal_size = 0, mortal_size = 0;
-
-    if (interned == NULL || !PyDict_Check(interned))
-        return;
-    keys = PyDict_Keys(interned);
-    if (keys == NULL || !PyList_Check(keys)) {
-        PyErr_Clear();
-        return;
-    }
-
-    /* Since _Py_ReleaseInternedStrings() is intended to help a leak
-       detector, interned strings are not forcibly deallocated; rather, we
-       give them their stolen references back, and then clear and DECREF
-       the interned dict. */
-
-    n = PyList_GET_SIZE(keys);
-    fprintf(stderr, "releasing %" PY_FORMAT_SIZE_T "d interned strings\n",
-        n);
-    for (i = 0; i < n; i++) {
-        s = (PyStringObject *) PyList_GET_ITEM(keys, i);
-        switch (s->ob_sstate) {
-        case SSTATE_NOT_INTERNED:
-            /* XXX Shouldn't happen */
-            break;
-        case SSTATE_INTERNED_IMMORTAL:
-            Py_REFCNT(s) += 1;
-            immortal_size += Py_SIZE(s);
-            break;
-        case SSTATE_INTERNED_MORTAL:
-            Py_REFCNT(s) += 2;
-            mortal_size += Py_SIZE(s);
-            break;
-        default:
-            Py_FatalError("Inconsistent interned string state.");
-        }
-        s->ob_sstate = SSTATE_NOT_INTERNED;
-    }
-    fprintf(stderr, "total size of all interned strings: "
-                    "%" PY_FORMAT_SIZE_T "d/%" PY_FORMAT_SIZE_T "d "
-                    "mortal/immortal\n", mortal_size, immortal_size);
-    Py_DECREF(keys);
-    PyDict_Clear(interned);
-    Py_DECREF(interned);
-    interned = NULL;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/structseq.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/structseq.c
deleted file mode 100644
index eb0c3ac..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/structseq.c
+++ /dev/null
@@ -1,539 +0,0 @@
-/* Implementation helper: a struct that looks like a tuple.  See timemodule
-   and posixmodule for example uses. */
-
-#include "Python.h"
-#include "structmember.h"
-#include "structseq.h"
-
-static char visible_length_key[] = "n_sequence_fields";
-static char real_length_key[] = "n_fields";
-static char unnamed_fields_key[] = "n_unnamed_fields";
-
-/* Fields with this name have only a field index, not a field name.
-   They are only allowed for indices < n_visible_fields. */
-char *PyStructSequence_UnnamedField = "unnamed field";
-
-#define VISIBLE_SIZE(op) Py_SIZE(op)
-#define VISIBLE_SIZE_TP(tp) PyInt_AsLong( \
-                      PyDict_GetItemString((tp)->tp_dict, visible_length_key))
-
-#define REAL_SIZE_TP(tp) PyInt_AsLong( \
-                      PyDict_GetItemString((tp)->tp_dict, real_length_key))
-#define REAL_SIZE(op) REAL_SIZE_TP(Py_TYPE(op))
-
-#define UNNAMED_FIELDS_TP(tp) PyInt_AsLong( \
-                      PyDict_GetItemString((tp)->tp_dict, unnamed_fields_key))
-#define UNNAMED_FIELDS(op) UNNAMED_FIELDS_TP(Py_TYPE(op))
-
-
-PyObject *
-PyStructSequence_New(PyTypeObject *type)
-{
-    PyStructSequence *obj;
-
-    obj = PyObject_New(PyStructSequence, type);
-    if (obj == NULL)
-        return NULL;
-    Py_SIZE(obj) = VISIBLE_SIZE_TP(type);
-
-    return (PyObject*) obj;
-}
-
-static void
-structseq_dealloc(PyStructSequence *obj)
-{
-    Py_ssize_t i, size;
-
-    size = REAL_SIZE(obj);
-    for (i = 0; i < size; ++i) {
-        Py_XDECREF(obj->ob_item[i]);
-    }
-    PyObject_Del(obj);
-}
-
-static Py_ssize_t
-structseq_length(PyStructSequence *obj)
-{
-    return VISIBLE_SIZE(obj);
-}
-
-static PyObject*
-structseq_item(PyStructSequence *obj, Py_ssize_t i)
-{
-    if (i < 0 || i >= VISIBLE_SIZE(obj)) {
-        PyErr_SetString(PyExc_IndexError, "tuple index out of range");
-        return NULL;
-    }
-    Py_INCREF(obj->ob_item[i]);
-    return obj->ob_item[i];
-}
-
-static PyObject*
-structseq_slice(PyStructSequence *obj, Py_ssize_t low, Py_ssize_t high)
-{
-    PyTupleObject *np;
-    Py_ssize_t i;
-
-    if (low < 0)
-        low = 0;
-    if (high > VISIBLE_SIZE(obj))
-        high = VISIBLE_SIZE(obj);
-    if (high < low)
-        high = low;
-    np = (PyTupleObject *)PyTuple_New(high-low);
-    if (np == NULL)
-        return NULL;
-    for(i = low; i < high; ++i) {
-        PyObject *v = obj->ob_item[i];
-        Py_INCREF(v);
-        PyTuple_SET_ITEM(np, i-low, v);
-    }
-    return (PyObject *) np;
-}
-
-static PyObject *
-structseq_subscript(PyStructSequence *self, PyObject *item)
-{
-    if (PyIndex_Check(item)) {
-        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-        if (i == -1 && PyErr_Occurred())
-            return NULL;
-
-        if (i < 0)
-            i += VISIBLE_SIZE(self);
-
-        if (i < 0 || i >= VISIBLE_SIZE(self)) {
-            PyErr_SetString(PyExc_IndexError,
-                "tuple index out of range");
-            return NULL;
-        }
-        Py_INCREF(self->ob_item[i]);
-        return self->ob_item[i];
-    }
-    else if (PySlice_Check(item)) {
-        Py_ssize_t start, stop, step, slicelen, cur, i;
-        PyObject *result;
-
-        if (PySlice_GetIndicesEx((PySliceObject *)item,
-                                 VISIBLE_SIZE(self), &start, &stop,
-                                 &step, &slicelen) < 0) {
-            return NULL;
-        }
-        if (slicelen <= 0)
-            return PyTuple_New(0);
-        result = PyTuple_New(slicelen);
-        if (result == NULL)
-            return NULL;
-        for (cur = start, i = 0; i < slicelen;
-             cur += step, i++) {
-            PyObject *v = self->ob_item[cur];
-            Py_INCREF(v);
-            PyTuple_SET_ITEM(result, i, v);
-        }
-        return result;
-    }
-    else {
-        PyErr_SetString(PyExc_TypeError,
-                        "structseq index must be integer");
-        return NULL;
-    }
-}
-
-static PyObject *
-structseq_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *arg = NULL;
-    PyObject *dict = NULL;
-    PyObject *ob;
-    PyStructSequence *res = NULL;
-    Py_ssize_t len, min_len, max_len, i, n_unnamed_fields;
-    static char *kwlist[] = {"sequence", "dict", 0};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:structseq",
-                                     kwlist, &arg, &dict))
-        return NULL;
-
-    arg = PySequence_Fast(arg, "constructor requires a sequence");
-
-    if (!arg) {
-        return NULL;
-    }
-
-    if (dict && !PyDict_Check(dict)) {
-        PyErr_Format(PyExc_TypeError,
-                     "%.500s() takes a dict as second arg, if any",
-                     type->tp_name);
-        Py_DECREF(arg);
-        return NULL;
-    }
-
-    len = PySequence_Fast_GET_SIZE(arg);
-    min_len = VISIBLE_SIZE_TP(type);
-    max_len = REAL_SIZE_TP(type);
-    n_unnamed_fields = UNNAMED_FIELDS_TP(type);
-
-    if (min_len != max_len) {
-        if (len < min_len) {
-            PyErr_Format(PyExc_TypeError,
-           "%.500s() takes an at least %zd-sequence (%zd-sequence given)",
-                                 type->tp_name, min_len, len);
-                    Py_DECREF(arg);
-                    return NULL;
-        }
-
-        if (len > max_len) {
-            PyErr_Format(PyExc_TypeError,
-           "%.500s() takes an at most %zd-sequence (%zd-sequence given)",
-                                 type->tp_name, max_len, len);
-                    Py_DECREF(arg);
-                    return NULL;
-        }
-    }
-    else {
-        if (len != min_len) {
-            PyErr_Format(PyExc_TypeError,
-           "%.500s() takes a %zd-sequence (%zd-sequence given)",
-                                 type->tp_name, min_len, len);
-                    Py_DECREF(arg);
-                    return NULL;
-        }
-    }
-
-    res = (PyStructSequence*) PyStructSequence_New(type);
-    if (res == NULL) {
-        return NULL;
-    }
-    for (i = 0; i < len; ++i) {
-        PyObject *v = PySequence_Fast_GET_ITEM(arg, i);
-        Py_INCREF(v);
-        res->ob_item[i] = v;
-    }
-    for (; i < max_len; ++i) {
-        if (dict && (ob = PyDict_GetItemString(
-            dict, type->tp_members[i-n_unnamed_fields].name))) {
-        }
-        else {
-            ob = Py_None;
-        }
-        Py_INCREF(ob);
-        res->ob_item[i] = ob;
-    }
-
-    Py_DECREF(arg);
-    return (PyObject*) res;
-}
-
-static PyObject *
-make_tuple(PyStructSequence *obj)
-{
-    return structseq_slice(obj, 0, VISIBLE_SIZE(obj));
-}
-
-static PyObject *
-structseq_repr(PyStructSequence *obj)
-{
-    /* buffer and type size were chosen well considered. */
-#define REPR_BUFFER_SIZE 512
-#define TYPE_MAXSIZE 100
-
-    PyObject *tup;
-    PyTypeObject *typ = Py_TYPE(obj);
-    int i, removelast = 0;
-    Py_ssize_t len;
-    char buf[REPR_BUFFER_SIZE];
-    char *endofbuf, *pbuf = buf;
-
-    /* pointer to end of writeable buffer; safes space for "...)\0" */
-    endofbuf= &buf[REPR_BUFFER_SIZE-5];
-
-    if ((tup = make_tuple(obj)) == NULL) {
-        return NULL;
-    }
-
-    /* "typename(", limited to  TYPE_MAXSIZE */
-    len = strlen(typ->tp_name) > TYPE_MAXSIZE ? TYPE_MAXSIZE :
-                            strlen(typ->tp_name);
-    strncpy(pbuf, typ->tp_name, len);
-    pbuf += len;
-    *pbuf++ = '(';
-
-    for (i=0; i < VISIBLE_SIZE(obj); i++) {
-        PyObject *val, *repr;
-        char *cname, *crepr;
-
-        cname = typ->tp_members[i].name;
-
-        val = PyTuple_GetItem(tup, i);
-        if (cname == NULL || val == NULL) {
-            return NULL;
-        }
-        repr = PyObject_Repr(val);
-        if (repr == NULL) {
-            Py_DECREF(tup);
-            return NULL;
-        }
-        crepr = PyString_AsString(repr);
-        if (crepr == NULL) {
-            Py_DECREF(tup);
-            Py_DECREF(repr);
-            return NULL;
-        }
-
-        /* + 3: keep space for "=" and ", " */
-        len = strlen(cname) + strlen(crepr) + 3;
-        if ((pbuf+len) <= endofbuf) {
-            strcpy(pbuf, cname);
-            pbuf += strlen(cname);
-            *pbuf++ = '=';
-            strcpy(pbuf, crepr);
-            pbuf += strlen(crepr);
-            *pbuf++ = ',';
-            *pbuf++ = ' ';
-            removelast = 1;
-            Py_DECREF(repr);
-        }
-        else {
-            strcpy(pbuf, "...");
-            pbuf += 3;
-            removelast = 0;
-            Py_DECREF(repr);
-            break;
-        }
-    }
-    Py_DECREF(tup);
-    if (removelast) {
-        /* overwrite last ", " */
-        pbuf-=2;
-    }
-    *pbuf++ = ')';
-    *pbuf = '\0';
-
-    return PyString_FromString(buf);
-}
-
-static PyObject *
-structseq_concat(PyStructSequence *obj, PyObject *b)
-{
-    PyObject *tup, *result;
-    tup = make_tuple(obj);
-    result = PySequence_Concat(tup, b);
-    Py_DECREF(tup);
-    return result;
-}
-
-static PyObject *
-structseq_repeat(PyStructSequence *obj, Py_ssize_t n)
-{
-    PyObject *tup, *result;
-    tup = make_tuple(obj);
-    result = PySequence_Repeat(tup, n);
-    Py_DECREF(tup);
-    return result;
-}
-
-static int
-structseq_contains(PyStructSequence *obj, PyObject *o)
-{
-    PyObject *tup;
-    int result;
-    tup = make_tuple(obj);
-    if (!tup)
-        return -1;
-    result = PySequence_Contains(tup, o);
-    Py_DECREF(tup);
-    return result;
-}
-
-static long
-structseq_hash(PyObject *obj)
-{
-    PyObject *tup;
-    long result;
-    tup = make_tuple((PyStructSequence*) obj);
-    if (!tup)
-        return -1;
-    result = PyObject_Hash(tup);
-    Py_DECREF(tup);
-    return result;
-}
-
-static PyObject *
-structseq_richcompare(PyObject *obj, PyObject *o2, int op)
-{
-    PyObject *tup, *result;
-    tup = make_tuple((PyStructSequence*) obj);
-    result = PyObject_RichCompare(tup, o2, op);
-    Py_DECREF(tup);
-    return result;
-}
-
-static PyObject *
-structseq_reduce(PyStructSequence* self)
-{
-    PyObject* tup;
-    PyObject* dict;
-    PyObject* result;
-    Py_ssize_t n_fields, n_visible_fields, n_unnamed_fields;
-    int i;
-
-    n_fields = REAL_SIZE(self);
-    n_visible_fields = VISIBLE_SIZE(self);
-    n_unnamed_fields = UNNAMED_FIELDS(self);
-    tup = PyTuple_New(n_visible_fields);
-    if (!tup) {
-        return NULL;
-    }
-
-    dict = PyDict_New();
-    if (!dict) {
-        Py_DECREF(tup);
-        return NULL;
-    }
-
-    for (i = 0; i < n_visible_fields; i++) {
-        Py_INCREF(self->ob_item[i]);
-        PyTuple_SET_ITEM(tup, i, self->ob_item[i]);
-    }
-
-    for (; i < n_fields; i++) {
-        char *n = Py_TYPE(self)->tp_members[i-n_unnamed_fields].name;
-        PyDict_SetItemString(dict, n,
-                             self->ob_item[i]);
-    }
-
-    result = Py_BuildValue("(O(OO))", Py_TYPE(self), tup, dict);
-
-    Py_DECREF(tup);
-    Py_DECREF(dict);
-
-    return result;
-}
-
-static PySequenceMethods structseq_as_sequence = {
-    (lenfunc)structseq_length,
-    (binaryfunc)structseq_concat,           /* sq_concat */
-    (ssizeargfunc)structseq_repeat,         /* sq_repeat */
-    (ssizeargfunc)structseq_item,               /* sq_item */
-    (ssizessizeargfunc)structseq_slice,         /* sq_slice */
-    0,                                          /* sq_ass_item */
-    0,                                          /* sq_ass_slice */
-    (objobjproc)structseq_contains,             /* sq_contains */
-};
-
-static PyMappingMethods structseq_as_mapping = {
-    (lenfunc)structseq_length,
-    (binaryfunc)structseq_subscript,
-};
-
-static PyMethodDef structseq_methods[] = {
-    {"__reduce__", (PyCFunction)structseq_reduce,
-     METH_NOARGS, NULL},
-    {NULL, NULL}
-};
-
-static PyTypeObject _struct_sequence_template = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    NULL,                                       /* tp_name */
-    0,                                          /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    (destructor)structseq_dealloc,              /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)structseq_repr,                   /* tp_repr */
-    0,                                          /* tp_as_number */
-    &structseq_as_sequence,                     /* tp_as_sequence */
-    &structseq_as_mapping,                      /* tp_as_mapping */
-    structseq_hash,                             /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    0,                                          /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                     /* tp_flags */
-    NULL,                                       /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    structseq_richcompare,                      /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    structseq_methods,                          /* tp_methods */
-    NULL,                                       /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    structseq_new,                              /* tp_new */
-};
-
-void
-PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)
-{
-    PyObject *dict;
-    PyMemberDef* members;
-    int n_members, n_unnamed_members, i, k;
-
-#ifdef Py_TRACE_REFS
-    /* if the type object was chained, unchain it first
-       before overwriting its storage */
-    if (type->_ob_next) {
-        _Py_ForgetReference((PyObject*)type);
-    }
-#endif
-
-    n_unnamed_members = 0;
-    for (i = 0; desc->fields[i].name != NULL; ++i)
-        if (desc->fields[i].name == PyStructSequence_UnnamedField)
-            n_unnamed_members++;
-    n_members = i;
-
-    memcpy(type, &_struct_sequence_template, sizeof(PyTypeObject));
-    type->tp_name = desc->name;
-    type->tp_doc = desc->doc;
-    type->tp_basicsize = sizeof(PyStructSequence)+
-        sizeof(PyObject*)*(n_members-1);
-    type->tp_itemsize = 0;
-
-    members = PyMem_NEW(PyMemberDef, n_members-n_unnamed_members+1);
-    if (members == NULL)
-        return;
-
-    for (i = k = 0; i < n_members; ++i) {
-        if (desc->fields[i].name == PyStructSequence_UnnamedField)
-            continue;
-        members[k].name = desc->fields[i].name;
-        members[k].type = T_OBJECT;
-        members[k].offset = offsetof(PyStructSequence, ob_item)
-          + i * sizeof(PyObject*);
-        members[k].flags = READONLY;
-        members[k].doc = desc->fields[i].doc;
-        k++;
-    }
-    members[k].name = NULL;
-
-    type->tp_members = members;
-
-    if (PyType_Ready(type) < 0)
-        return;
-    Py_INCREF(type);
-
-    dict = type->tp_dict;
-#define SET_DICT_FROM_INT(key, value)                           \
-    do {                                                        \
-        PyObject *v = PyInt_FromLong((long) value);             \
-        if (v != NULL) {                                        \
-            PyDict_SetItemString(dict, key, v);                 \
-            Py_DECREF(v);                                       \
-        }                                                       \
-    } while (0)
-
-    SET_DICT_FROM_INT(visible_length_key, desc->n_in_sequence);
-    SET_DICT_FROM_INT(real_length_key, n_members);
-    SET_DICT_FROM_INT(unnamed_fields_key, n_unnamed_members);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/tupleobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/tupleobject.c
deleted file mode 100644
index 9a3a9c5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/tupleobject.c
+++ /dev/null
@@ -1,1052 +0,0 @@
-
-/* Tuple object implementation */
-
-#include "Python.h"
-
-/* Speed optimization to avoid frequent malloc/free of small tuples */
-#ifndef PyTuple_MAXSAVESIZE
-#define PyTuple_MAXSAVESIZE     20  /* Largest tuple to save on free list */
-#endif
-#ifndef PyTuple_MAXFREELIST
-#define PyTuple_MAXFREELIST  2000  /* Maximum number of tuples of each size to save */
-#endif
-
-#if PyTuple_MAXSAVESIZE > 0
-/* Entries 1 up to PyTuple_MAXSAVESIZE are free lists, entry 0 is the empty
-   tuple () of which at most one instance will be allocated.
-*/
-static PyTupleObject *free_list[PyTuple_MAXSAVESIZE];
-static int numfree[PyTuple_MAXSAVESIZE];
-#endif
-#ifdef COUNT_ALLOCS
-Py_ssize_t fast_tuple_allocs;
-Py_ssize_t tuple_zero_allocs;
-#endif
-
-/* Debug statistic to count GC tracking of tuples.
-   Please note that tuples are only untracked when considered by the GC, and
-   many of them will be dead before. Therefore, a tracking rate close to 100%
-   does not necessarily prove that the heuristic is inefficient.
-*/
-#ifdef SHOW_TRACK_COUNT
-static Py_ssize_t count_untracked = 0;
-static Py_ssize_t count_tracked = 0;
-
-static void
-show_track(void)
-{
-    fprintf(stderr, "Tuples created: %" PY_FORMAT_SIZE_T "d\n",
-        count_tracked + count_untracked);
-    fprintf(stderr, "Tuples tracked by the GC: %" PY_FORMAT_SIZE_T
-        "d\n", count_tracked);
-    fprintf(stderr, "%.2f%% tuple tracking rate\n\n",
-        (100.0*count_tracked/(count_untracked+count_tracked)));
-}
-#endif
-
-
-PyObject *
-PyTuple_New(register Py_ssize_t size)
-{
-    register PyTupleObject *op;
-    Py_ssize_t i;
-    if (size < 0) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-#if PyTuple_MAXSAVESIZE > 0
-    if (size == 0 && free_list[0]) {
-        op = free_list[0];
-        Py_INCREF(op);
-#ifdef COUNT_ALLOCS
-        tuple_zero_allocs++;
-#endif
-        return (PyObject *) op;
-    }
-    if (size < PyTuple_MAXSAVESIZE && (op = free_list[size]) != NULL) {
-        free_list[size] = (PyTupleObject *) op->ob_item[0];
-        numfree[size]--;
-#ifdef COUNT_ALLOCS
-        fast_tuple_allocs++;
-#endif
-        /* Inline PyObject_InitVar */
-#ifdef Py_TRACE_REFS
-        Py_SIZE(op) = size;
-        Py_TYPE(op) = &PyTuple_Type;
-#endif
-        _Py_NewReference((PyObject *)op);
-    }
-    else
-#endif
-    {
-        Py_ssize_t nbytes = size * sizeof(PyObject *);
-        /* Check for overflow */
-        if (nbytes / sizeof(PyObject *) != (size_t)size ||
-            (nbytes > PY_SSIZE_T_MAX - sizeof(PyTupleObject) - sizeof(PyObject *)))
-        {
-            return PyErr_NoMemory();
-        }
-
-        op = PyObject_GC_NewVar(PyTupleObject, &PyTuple_Type, size);
-        if (op == NULL)
-            return NULL;
-    }
-    for (i=0; i < size; i++)
-        op->ob_item[i] = NULL;
-#if PyTuple_MAXSAVESIZE > 0
-    if (size == 0) {
-        free_list[0] = op;
-        ++numfree[0];
-        Py_INCREF(op);          /* extra INCREF so that this is never freed */
-    }
-#endif
-#ifdef SHOW_TRACK_COUNT
-    count_tracked++;
-#endif
-    _PyObject_GC_TRACK(op);
-    return (PyObject *) op;
-}
-
-Py_ssize_t
-PyTuple_Size(register PyObject *op)
-{
-    if (!PyTuple_Check(op)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    else
-        return Py_SIZE(op);
-}
-
-PyObject *
-PyTuple_GetItem(register PyObject *op, register Py_ssize_t i)
-{
-    if (!PyTuple_Check(op)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    if (i < 0 || i >= Py_SIZE(op)) {
-        PyErr_SetString(PyExc_IndexError, "tuple index out of range");
-        return NULL;
-    }
-    return ((PyTupleObject *)op) -> ob_item[i];
-}
-
-int
-PyTuple_SetItem(register PyObject *op, register Py_ssize_t i, PyObject *newitem)
-{
-    register PyObject *olditem;
-    register PyObject **p;
-    if (!PyTuple_Check(op) || op->ob_refcnt != 1) {
-        Py_XDECREF(newitem);
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    if (i < 0 || i >= Py_SIZE(op)) {
-        Py_XDECREF(newitem);
-        PyErr_SetString(PyExc_IndexError,
-                        "tuple assignment index out of range");
-        return -1;
-    }
-    p = ((PyTupleObject *)op) -> ob_item + i;
-    olditem = *p;
-    *p = newitem;
-    Py_XDECREF(olditem);
-    return 0;
-}
-
-void
-_PyTuple_MaybeUntrack(PyObject *op)
-{
-    PyTupleObject *t;
-    Py_ssize_t i, n;
-
-    if (!PyTuple_CheckExact(op) || !_PyObject_GC_IS_TRACKED(op))
-        return;
-    t = (PyTupleObject *) op;
-    n = Py_SIZE(t);
-    for (i = 0; i < n; i++) {
-        PyObject *elt = PyTuple_GET_ITEM(t, i);
-        /* Tuple with NULL elements aren't
-           fully constructed, don't untrack
-           them yet. */
-        if (!elt ||
-            _PyObject_GC_MAY_BE_TRACKED(elt))
-            return;
-    }
-#ifdef SHOW_TRACK_COUNT
-    count_tracked--;
-    count_untracked++;
-#endif
-    _PyObject_GC_UNTRACK(op);
-}
-
-PyObject *
-PyTuple_Pack(Py_ssize_t n, ...)
-{
-    Py_ssize_t i;
-    PyObject *o;
-    PyObject *result;
-    PyObject **items;
-    va_list vargs;
-
-    va_start(vargs, n);
-    result = PyTuple_New(n);
-    if (result == NULL)
-        return NULL;
-    items = ((PyTupleObject *)result)->ob_item;
-    for (i = 0; i < n; i++) {
-        o = va_arg(vargs, PyObject *);
-        Py_INCREF(o);
-        items[i] = o;
-    }
-    va_end(vargs);
-    return result;
-}
-
-
-/* Methods */
-
-static void
-tupledealloc(register PyTupleObject *op)
-{
-    register Py_ssize_t i;
-    register Py_ssize_t len =  Py_SIZE(op);
-    PyObject_GC_UnTrack(op);
-    Py_TRASHCAN_SAFE_BEGIN(op)
-    if (len > 0) {
-        i = len;
-        while (--i >= 0)
-            Py_XDECREF(op->ob_item[i]);
-#if PyTuple_MAXSAVESIZE > 0
-        if (len < PyTuple_MAXSAVESIZE &&
-            numfree[len] < PyTuple_MAXFREELIST &&
-            Py_TYPE(op) == &PyTuple_Type)
-        {
-            op->ob_item[0] = (PyObject *) free_list[len];
-            numfree[len]++;
-            free_list[len] = op;
-            goto done; /* return */
-        }
-#endif
-    }
-    Py_TYPE(op)->tp_free((PyObject *)op);
-done:
-    Py_TRASHCAN_SAFE_END(op)
-}
-
-static int
-tupleprint(PyTupleObject *op, FILE *fp, int flags)
-{
-    Py_ssize_t i;
-    Py_BEGIN_ALLOW_THREADS
-    fprintf(fp, "(");
-    Py_END_ALLOW_THREADS
-    for (i = 0; i < Py_SIZE(op); i++) {
-        if (i > 0) {
-            Py_BEGIN_ALLOW_THREADS
-            fprintf(fp, ", ");
-            Py_END_ALLOW_THREADS
-        }
-        if (PyObject_Print(op->ob_item[i], fp, 0) != 0)
-            return -1;
-    }
-    i = Py_SIZE(op);
-    Py_BEGIN_ALLOW_THREADS
-    if (i == 1)
-        fprintf(fp, ",");
-    fprintf(fp, ")");
-    Py_END_ALLOW_THREADS
-    return 0;
-}
-
-static PyObject *
-tuplerepr(PyTupleObject *v)
-{
-    Py_ssize_t i, n;
-    PyObject *s, *temp;
-    PyObject *pieces, *result = NULL;
-
-    n = Py_SIZE(v);
-    if (n == 0)
-        return PyString_FromString("()");
-
-    /* While not mutable, it is still possible to end up with a cycle in a
-       tuple through an object that stores itself within a tuple (and thus
-       infinitely asks for the repr of itself). This should only be
-       possible within a type. */
-    i = Py_ReprEnter((PyObject *)v);
-    if (i != 0) {
-        return i > 0 ? PyString_FromString("(...)") : NULL;
-    }
-
-    pieces = PyTuple_New(n);
-    if (pieces == NULL)
-        return NULL;
-
-    /* Do repr() on each element. */
-    for (i = 0; i < n; ++i) {
-        if (Py_EnterRecursiveCall(" while getting the repr of a tuple"))
-            goto Done;
-        s = PyObject_Repr(v->ob_item[i]);
-        Py_LeaveRecursiveCall();
-        if (s == NULL)
-            goto Done;
-        PyTuple_SET_ITEM(pieces, i, s);
-    }
-
-    /* Add "()" decorations to the first and last items. */
-    assert(n > 0);
-    s = PyString_FromString("(");
-    if (s == NULL)
-        goto Done;
-    temp = PyTuple_GET_ITEM(pieces, 0);
-    PyString_ConcatAndDel(&s, temp);
-    PyTuple_SET_ITEM(pieces, 0, s);
-    if (s == NULL)
-        goto Done;
-
-    s = PyString_FromString(n == 1 ? ",)" : ")");
-    if (s == NULL)
-        goto Done;
-    temp = PyTuple_GET_ITEM(pieces, n-1);
-    PyString_ConcatAndDel(&temp, s);
-    PyTuple_SET_ITEM(pieces, n-1, temp);
-    if (temp == NULL)
-        goto Done;
-
-    /* Paste them all together with ", " between. */
-    s = PyString_FromString(", ");
-    if (s == NULL)
-        goto Done;
-    result = _PyString_Join(s, pieces);
-    Py_DECREF(s);
-
-Done:
-    Py_DECREF(pieces);
-    Py_ReprLeave((PyObject *)v);
-    return result;
-}
-
-/* The addend 82520, was selected from the range(0, 1000000) for
-   generating the greatest number of prime multipliers for tuples
-   upto length eight:
-
-     1082527, 1165049, 1082531, 1165057, 1247581, 1330103, 1082533,
-     1330111, 1412633, 1165069, 1247599, 1495177, 1577699
-*/
-
-static long
-tuplehash(PyTupleObject *v)
-{
-    register long x, y;
-    register Py_ssize_t len = Py_SIZE(v);
-    register PyObject **p;
-    long mult = 1000003L;
-    x = 0x345678L;
-    p = v->ob_item;
-    while (--len >= 0) {
-        y = PyObject_Hash(*p++);
-        if (y == -1)
-            return -1;
-        x = (x ^ y) * mult;
-        /* the cast might truncate len; that doesn't change hash stability */
-        mult += (long)(82520L + len + len);
-    }
-    x += 97531L;
-    if (x == -1)
-        x = -2;
-    return x;
-}
-
-static Py_ssize_t
-tuplelength(PyTupleObject *a)
-{
-    return Py_SIZE(a);
-}
-
-static int
-tuplecontains(PyTupleObject *a, PyObject *el)
-{
-    Py_ssize_t i;
-    int cmp;
-
-    for (i = 0, cmp = 0 ; cmp == 0 && i < Py_SIZE(a); ++i)
-        cmp = PyObject_RichCompareBool(el, PyTuple_GET_ITEM(a, i),
-                                           Py_EQ);
-    return cmp;
-}
-
-static PyObject *
-tupleitem(register PyTupleObject *a, register Py_ssize_t i)
-{
-    if (i < 0 || i >= Py_SIZE(a)) {
-        PyErr_SetString(PyExc_IndexError, "tuple index out of range");
-        return NULL;
-    }
-    Py_INCREF(a->ob_item[i]);
-    return a->ob_item[i];
-}
-
-static PyObject *
-tupleslice(register PyTupleObject *a, register Py_ssize_t ilow,
-           register Py_ssize_t ihigh)
-{
-    register PyTupleObject *np;
-    PyObject **src, **dest;
-    register Py_ssize_t i;
-    Py_ssize_t len;
-    if (ilow < 0)
-        ilow = 0;
-    if (ihigh > Py_SIZE(a))
-        ihigh = Py_SIZE(a);
-    if (ihigh < ilow)
-        ihigh = ilow;
-    if (ilow == 0 && ihigh == Py_SIZE(a) && PyTuple_CheckExact(a)) {
-        Py_INCREF(a);
-        return (PyObject *)a;
-    }
-    len = ihigh - ilow;
-    np = (PyTupleObject *)PyTuple_New(len);
-    if (np == NULL)
-        return NULL;
-    src = a->ob_item + ilow;
-    dest = np->ob_item;
-    for (i = 0; i < len; i++) {
-        PyObject *v = src[i];
-        Py_INCREF(v);
-        dest[i] = v;
-    }
-    return (PyObject *)np;
-}
-
-PyObject *
-PyTuple_GetSlice(PyObject *op, Py_ssize_t i, Py_ssize_t j)
-{
-    if (op == NULL || !PyTuple_Check(op)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return tupleslice((PyTupleObject *)op, i, j);
-}
-
-static PyObject *
-tupleconcat(register PyTupleObject *a, register PyObject *bb)
-{
-    register Py_ssize_t size;
-    register Py_ssize_t i;
-    PyObject **src, **dest;
-    PyTupleObject *np;
-    if (!PyTuple_Check(bb)) {
-        PyErr_Format(PyExc_TypeError,
-             "can only concatenate tuple (not \"%.200s\") to tuple",
-                 Py_TYPE(bb)->tp_name);
-        return NULL;
-    }
-#define b ((PyTupleObject *)bb)
-    size = Py_SIZE(a) + Py_SIZE(b);
-    if (size < 0)
-        return PyErr_NoMemory();
-    np = (PyTupleObject *) PyTuple_New(size);
-    if (np == NULL) {
-        return NULL;
-    }
-    src = a->ob_item;
-    dest = np->ob_item;
-    for (i = 0; i < Py_SIZE(a); i++) {
-        PyObject *v = src[i];
-        Py_INCREF(v);
-        dest[i] = v;
-    }
-    src = b->ob_item;
-    dest = np->ob_item + Py_SIZE(a);
-    for (i = 0; i < Py_SIZE(b); i++) {
-        PyObject *v = src[i];
-        Py_INCREF(v);
-        dest[i] = v;
-    }
-    return (PyObject *)np;
-#undef b
-}
-
-static PyObject *
-tuplerepeat(PyTupleObject *a, Py_ssize_t n)
-{
-    Py_ssize_t i, j;
-    Py_ssize_t size;
-    PyTupleObject *np;
-    PyObject **p, **items;
-    if (n < 0)
-        n = 0;
-    if (Py_SIZE(a) == 0 || n == 1) {
-        if (PyTuple_CheckExact(a)) {
-            /* Since tuples are immutable, we can return a shared
-               copy in this case */
-            Py_INCREF(a);
-            return (PyObject *)a;
-        }
-        if (Py_SIZE(a) == 0)
-            return PyTuple_New(0);
-    }
-    size = Py_SIZE(a) * n;
-    if (size/Py_SIZE(a) != n)
-        return PyErr_NoMemory();
-    np = (PyTupleObject *) PyTuple_New(size);
-    if (np == NULL)
-        return NULL;
-    p = np->ob_item;
-    items = a->ob_item;
-    for (i = 0; i < n; i++) {
-        for (j = 0; j < Py_SIZE(a); j++) {
-            *p = items[j];
-            Py_INCREF(*p);
-            p++;
-        }
-    }
-    return (PyObject *) np;
-}
-
-static PyObject *
-tupleindex(PyTupleObject *self, PyObject *args)
-{
-    Py_ssize_t i, start=0, stop=Py_SIZE(self);
-    PyObject *v;
-
-    if (!PyArg_ParseTuple(args, "O|O&O&:index", &v,
-                                _PyEval_SliceIndex, &start,
-                                _PyEval_SliceIndex, &stop))
-        return NULL;
-    if (start < 0) {
-        start += Py_SIZE(self);
-        if (start < 0)
-            start = 0;
-    }
-    if (stop < 0) {
-        stop += Py_SIZE(self);
-        if (stop < 0)
-            stop = 0;
-    }
-    for (i = start; i < stop && i < Py_SIZE(self); i++) {
-        int cmp = PyObject_RichCompareBool(self->ob_item[i], v, Py_EQ);
-        if (cmp > 0)
-            return PyInt_FromSsize_t(i);
-        else if (cmp < 0)
-            return NULL;
-    }
-    PyErr_SetString(PyExc_ValueError, "tuple.index(x): x not in tuple");
-    return NULL;
-}
-
-static PyObject *
-tuplecount(PyTupleObject *self, PyObject *v)
-{
-    Py_ssize_t count = 0;
-    Py_ssize_t i;
-
-    for (i = 0; i < Py_SIZE(self); i++) {
-        int cmp = PyObject_RichCompareBool(self->ob_item[i], v, Py_EQ);
-        if (cmp > 0)
-            count++;
-        else if (cmp < 0)
-            return NULL;
-    }
-    return PyInt_FromSsize_t(count);
-}
-
-static int
-tupletraverse(PyTupleObject *o, visitproc visit, void *arg)
-{
-    Py_ssize_t i;
-
-    for (i = Py_SIZE(o); --i >= 0; )
-        Py_VISIT(o->ob_item[i]);
-    return 0;
-}
-
-static PyObject *
-tuplerichcompare(PyObject *v, PyObject *w, int op)
-{
-    PyTupleObject *vt, *wt;
-    Py_ssize_t i;
-    Py_ssize_t vlen, wlen;
-
-    if (!PyTuple_Check(v) || !PyTuple_Check(w)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-
-    vt = (PyTupleObject *)v;
-    wt = (PyTupleObject *)w;
-
-    vlen = Py_SIZE(vt);
-    wlen = Py_SIZE(wt);
-
-    /* Note:  the corresponding code for lists has an "early out" test
-     * here when op is EQ or NE and the lengths differ.  That pays there,
-     * but Tim was unable to find any real code where EQ/NE tuple
-     * compares don't have the same length, so testing for it here would
-     * have cost without benefit.
-     */
-
-    /* Search for the first index where items are different.
-     * Note that because tuples are immutable, it's safe to reuse
-     * vlen and wlen across the comparison calls.
-     */
-    for (i = 0; i < vlen && i < wlen; i++) {
-        int k = PyObject_RichCompareBool(vt->ob_item[i],
-                                         wt->ob_item[i], Py_EQ);
-        if (k < 0)
-            return NULL;
-        if (!k)
-            break;
-    }
-
-    if (i >= vlen || i >= wlen) {
-        /* No more items to compare -- compare sizes */
-        int cmp;
-        PyObject *res;
-        switch (op) {
-        case Py_LT: cmp = vlen <  wlen; break;
-        case Py_LE: cmp = vlen <= wlen; break;
-        case Py_EQ: cmp = vlen == wlen; break;
-        case Py_NE: cmp = vlen != wlen; break;
-        case Py_GT: cmp = vlen >  wlen; break;
-        case Py_GE: cmp = vlen >= wlen; break;
-        default: return NULL; /* cannot happen */
-        }
-        if (cmp)
-            res = Py_True;
-        else
-            res = Py_False;
-        Py_INCREF(res);
-        return res;
-    }
-
-    /* We have an item that differs -- shortcuts for EQ/NE */
-    if (op == Py_EQ) {
-        Py_INCREF(Py_False);
-        return Py_False;
-    }
-    if (op == Py_NE) {
-        Py_INCREF(Py_True);
-        return Py_True;
-    }
-
-    /* Compare the final item again using the proper operator */
-    return PyObject_RichCompare(vt->ob_item[i], wt->ob_item[i], op);
-}
-
-static PyObject *
-tuple_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
-
-static PyObject *
-tuple_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *arg = NULL;
-    static char *kwlist[] = {"sequence", 0};
-
-    if (type != &PyTuple_Type)
-        return tuple_subtype_new(type, args, kwds);
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:tuple", kwlist, &arg))
-        return NULL;
-
-    if (arg == NULL)
-        return PyTuple_New(0);
-    else
-        return PySequence_Tuple(arg);
-}
-
-static PyObject *
-tuple_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *tmp, *newobj, *item;
-    Py_ssize_t i, n;
-
-    assert(PyType_IsSubtype(type, &PyTuple_Type));
-    tmp = tuple_new(&PyTuple_Type, args, kwds);
-    if (tmp == NULL)
-        return NULL;
-    assert(PyTuple_Check(tmp));
-    newobj = type->tp_alloc(type, n = PyTuple_GET_SIZE(tmp));
-    if (newobj == NULL)
-        return NULL;
-    for (i = 0; i < n; i++) {
-        item = PyTuple_GET_ITEM(tmp, i);
-        Py_INCREF(item);
-        PyTuple_SET_ITEM(newobj, i, item);
-    }
-    Py_DECREF(tmp);
-    return newobj;
-}
-
-PyDoc_STRVAR(tuple_doc,
-"tuple() -> empty tuple\n\
-tuple(iterable) -> tuple initialized from iterable's items\n\
-\n\
-If the argument is a tuple, the return value is the same object.");
-
-static PySequenceMethods tuple_as_sequence = {
-    (lenfunc)tuplelength,                       /* sq_length */
-    (binaryfunc)tupleconcat,                    /* sq_concat */
-    (ssizeargfunc)tuplerepeat,                  /* sq_repeat */
-    (ssizeargfunc)tupleitem,                    /* sq_item */
-    (ssizessizeargfunc)tupleslice,              /* sq_slice */
-    0,                                          /* sq_ass_item */
-    0,                                          /* sq_ass_slice */
-    (objobjproc)tuplecontains,                  /* sq_contains */
-};
-
-static PyObject*
-tuplesubscript(PyTupleObject* self, PyObject* item)
-{
-    if (PyIndex_Check(item)) {
-        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-        if (i == -1 && PyErr_Occurred())
-            return NULL;
-        if (i < 0)
-            i += PyTuple_GET_SIZE(self);
-        return tupleitem(self, i);
-    }
-    else if (PySlice_Check(item)) {
-        Py_ssize_t start, stop, step, slicelength, cur, i;
-        PyObject* result;
-        PyObject* it;
-        PyObject **src, **dest;
-
-        if (PySlice_GetIndicesEx((PySliceObject*)item,
-                         PyTuple_GET_SIZE(self),
-                         &start, &stop, &step, &slicelength) < 0) {
-            return NULL;
-        }
-
-        if (slicelength <= 0) {
-            return PyTuple_New(0);
-        }
-        else if (start == 0 && step == 1 &&
-                 slicelength == PyTuple_GET_SIZE(self) &&
-                 PyTuple_CheckExact(self)) {
-            Py_INCREF(self);
-            return (PyObject *)self;
-        }
-        else {
-            result = PyTuple_New(slicelength);
-            if (!result) return NULL;
-
-            src = self->ob_item;
-            dest = ((PyTupleObject *)result)->ob_item;
-            for (cur = start, i = 0; i < slicelength;
-                 cur += step, i++) {
-                it = src[cur];
-                Py_INCREF(it);
-                dest[i] = it;
-            }
-
-            return result;
-        }
-    }
-    else {
-        PyErr_Format(PyExc_TypeError,
-                     "tuple indices must be integers, not %.200s",
-                     Py_TYPE(item)->tp_name);
-        return NULL;
-    }
-}
-
-static PyObject *
-tuple_getnewargs(PyTupleObject *v)
-{
-    return Py_BuildValue("(N)", tupleslice(v, 0, Py_SIZE(v)));
-
-}
-
-static PyObject *
-tuple_sizeof(PyTupleObject *self)
-{
-    Py_ssize_t res;
-
-    res = PyTuple_Type.tp_basicsize + Py_SIZE(self) * sizeof(PyObject *);
-    return PyInt_FromSsize_t(res);
-}
-
-PyDoc_STRVAR(index_doc,
-"T.index(value, [start, [stop]]) -> integer -- return first index of value.\n"
-"Raises ValueError if the value is not present."
-);
-PyDoc_STRVAR(count_doc,
-"T.count(value) -> integer -- return number of occurrences of value");
-PyDoc_STRVAR(sizeof_doc,
-"T.__sizeof__() -- size of T in memory, in bytes");
-
-static PyMethodDef tuple_methods[] = {
-    {"__getnewargs__",          (PyCFunction)tuple_getnewargs,  METH_NOARGS},
-    {"__sizeof__",      (PyCFunction)tuple_sizeof, METH_NOARGS, sizeof_doc},
-    {"index",           (PyCFunction)tupleindex,  METH_VARARGS, index_doc},
-    {"count",           (PyCFunction)tuplecount,  METH_O, count_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyMappingMethods tuple_as_mapping = {
-    (lenfunc)tuplelength,
-    (binaryfunc)tuplesubscript,
-    0
-};
-
-static PyObject *tuple_iter(PyObject *seq);
-
-PyTypeObject PyTuple_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "tuple",
-    sizeof(PyTupleObject) - sizeof(PyObject *),
-    sizeof(PyObject *),
-    (destructor)tupledealloc,                   /* tp_dealloc */
-    (printfunc)tupleprint,                      /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)tuplerepr,                        /* tp_repr */
-    0,                                          /* tp_as_number */
-    &tuple_as_sequence,                         /* tp_as_sequence */
-    &tuple_as_mapping,                          /* tp_as_mapping */
-    (hashfunc)tuplehash,                        /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE | Py_TPFLAGS_TUPLE_SUBCLASS, /* tp_flags */
-    tuple_doc,                                  /* tp_doc */
-    (traverseproc)tupletraverse,                /* tp_traverse */
-    0,                                          /* tp_clear */
-    tuplerichcompare,                           /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    tuple_iter,                                 /* tp_iter */
-    0,                                          /* tp_iternext */
-    tuple_methods,                              /* tp_methods */
-    0,                                          /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    tuple_new,                                  /* tp_new */
-    PyObject_GC_Del,                            /* tp_free */
-};
-
-/* The following function breaks the notion that tuples are immutable:
-   it changes the size of a tuple.  We get away with this only if there
-   is only one module referencing the object.  You can also think of it
-   as creating a new tuple object and destroying the old one, only more
-   efficiently.  In any case, don't use this if the tuple may already be
-   known to some other part of the code. */
-
-int
-_PyTuple_Resize(PyObject **pv, Py_ssize_t newsize)
-{
-    register PyTupleObject *v;
-    register PyTupleObject *sv;
-    Py_ssize_t i;
-    Py_ssize_t oldsize;
-
-    v = (PyTupleObject *) *pv;
-    if (v == NULL || Py_TYPE(v) != &PyTuple_Type ||
-        (Py_SIZE(v) != 0 && Py_REFCNT(v) != 1)) {
-        *pv = 0;
-        Py_XDECREF(v);
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    oldsize = Py_SIZE(v);
-    if (oldsize == newsize)
-        return 0;
-
-    if (oldsize == 0) {
-        /* Empty tuples are often shared, so we should never
-           resize them in-place even if we do own the only
-           (current) reference */
-        Py_DECREF(v);
-        *pv = PyTuple_New(newsize);
-        return *pv == NULL ? -1 : 0;
-    }
-
-    /* XXX UNREF/NEWREF interface should be more symmetrical */
-    _Py_DEC_REFTOTAL;
-    if (_PyObject_GC_IS_TRACKED(v))
-        _PyObject_GC_UNTRACK(v);
-    _Py_ForgetReference((PyObject *) v);
-    /* DECREF items deleted by shrinkage */
-    for (i = newsize; i < oldsize; i++) {
-        Py_XDECREF(v->ob_item[i]);
-        v->ob_item[i] = NULL;
-    }
-    sv = PyObject_GC_Resize(PyTupleObject, v, newsize);
-    if (sv == NULL) {
-        *pv = NULL;
-        PyObject_GC_Del(v);
-        return -1;
-    }
-    _Py_NewReference((PyObject *) sv);
-    /* Zero out items added by growing */
-    if (newsize > oldsize)
-        memset(&sv->ob_item[oldsize], 0,
-               sizeof(*sv->ob_item) * (newsize - oldsize));
-    *pv = (PyObject *) sv;
-    _PyObject_GC_TRACK(sv);
-    return 0;
-}
-
-int
-PyTuple_ClearFreeList(void)
-{
-    int freelist_size = 0;
-#if PyTuple_MAXSAVESIZE > 0
-    int i;
-    for (i = 1; i < PyTuple_MAXSAVESIZE; i++) {
-        PyTupleObject *p, *q;
-        p = free_list[i];
-        freelist_size += numfree[i];
-        free_list[i] = NULL;
-        numfree[i] = 0;
-        while (p) {
-            q = p;
-            p = (PyTupleObject *)(p->ob_item[0]);
-            PyObject_GC_Del(q);
-        }
-    }
-#endif
-    return freelist_size;
-}
-
-void
-PyTuple_Fini(void)
-{
-#if PyTuple_MAXSAVESIZE > 0
-    /* empty tuples are used all over the place and applications may
-     * rely on the fact that an empty tuple is a singleton. */
-    Py_XDECREF(free_list[0]);
-    free_list[0] = NULL;
-
-    (void)PyTuple_ClearFreeList();
-#endif
-#ifdef SHOW_TRACK_COUNT
-    show_track();
-#endif
-}
-
-/*********************** Tuple Iterator **************************/
-
-typedef struct {
-    PyObject_HEAD
-    long it_index;
-    PyTupleObject *it_seq; /* Set to NULL when iterator is exhausted */
-} tupleiterobject;
-
-static void
-tupleiter_dealloc(tupleiterobject *it)
-{
-    _PyObject_GC_UNTRACK(it);
-    Py_XDECREF(it->it_seq);
-    PyObject_GC_Del(it);
-}
-
-static int
-tupleiter_traverse(tupleiterobject *it, visitproc visit, void *arg)
-{
-    Py_VISIT(it->it_seq);
-    return 0;
-}
-
-static PyObject *
-tupleiter_next(tupleiterobject *it)
-{
-    PyTupleObject *seq;
-    PyObject *item;
-
-    assert(it != NULL);
-    seq = it->it_seq;
-    if (seq == NULL)
-        return NULL;
-    assert(PyTuple_Check(seq));
-
-    if (it->it_index < PyTuple_GET_SIZE(seq)) {
-        item = PyTuple_GET_ITEM(seq, it->it_index);
-        ++it->it_index;
-        Py_INCREF(item);
-        return item;
-    }
-
-    Py_DECREF(seq);
-    it->it_seq = NULL;
-    return NULL;
-}
-
-static PyObject *
-tupleiter_len(tupleiterobject *it)
-{
-    Py_ssize_t len = 0;
-    if (it->it_seq)
-        len = PyTuple_GET_SIZE(it->it_seq) - it->it_index;
-    return PyInt_FromSsize_t(len);
-}
-
-PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it)).");
-
-static PyMethodDef tupleiter_methods[] = {
-    {"__length_hint__", (PyCFunction)tupleiter_len, METH_NOARGS, length_hint_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyTypeObject PyTupleIter_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "tupleiterator",                            /* tp_name */
-    sizeof(tupleiterobject),                    /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    (destructor)tupleiter_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 */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)tupleiter_traverse,           /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    PyObject_SelfIter,                          /* tp_iter */
-    (iternextfunc)tupleiter_next,               /* tp_iternext */
-    tupleiter_methods,                          /* tp_methods */
-    0,
-};
-
-static PyObject *
-tuple_iter(PyObject *seq)
-{
-    tupleiterobject *it;
-
-    if (!PyTuple_Check(seq)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    it = PyObject_GC_New(tupleiterobject, &PyTupleIter_Type);
-    if (it == NULL)
-        return NULL;
-    it->it_index = 0;
-    Py_INCREF(seq);
-    it->it_seq = (PyTupleObject *)seq;
-    _PyObject_GC_TRACK(it);
-    return (PyObject *)it;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/typeobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/typeobject.c
deleted file mode 100644
index 58becb7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/typeobject.c
+++ /dev/null
@@ -1,6712 +0,0 @@
-/* Type object implementation */
-
-#include "Python.h"
-#include "structmember.h"
-
-#include <ctype.h>
-
-
-/* Support type attribute cache */
-
-/* The cache can keep references to the names alive for longer than
-   they normally would.  This is why the maximum size is limited to
-   MCACHE_MAX_ATTR_SIZE, since it might be a problem if very large
-   strings are used as attribute names. */
-#define MCACHE_MAX_ATTR_SIZE    100
-#define MCACHE_SIZE_EXP         10
-#define MCACHE_HASH(version, name_hash)                                 \
-        (((unsigned int)(version) * (unsigned int)(name_hash))          \
-         >> (8*sizeof(unsigned int) - MCACHE_SIZE_EXP))
-#define MCACHE_HASH_METHOD(type, name)                                  \
-        MCACHE_HASH((type)->tp_version_tag,                     \
-                    ((PyStringObject *)(name))->ob_shash)
-#define MCACHE_CACHEABLE_NAME(name)                                     \
-        PyString_CheckExact(name) &&                            \
-        PyString_GET_SIZE(name) <= MCACHE_MAX_ATTR_SIZE
-
-struct method_cache_entry {
-    unsigned int version;
-    PyObject *name;             /* reference to exactly a str or None */
-    PyObject *value;            /* borrowed */
-};
-
-static struct method_cache_entry method_cache[1 << MCACHE_SIZE_EXP];
-static unsigned int next_version_tag = 0;
-
-unsigned int
-PyType_ClearCache(void)
-{
-    Py_ssize_t i;
-    unsigned int cur_version_tag = next_version_tag - 1;
-
-    for (i = 0; i < (1 << MCACHE_SIZE_EXP); i++) {
-        method_cache[i].version = 0;
-        Py_CLEAR(method_cache[i].name);
-        method_cache[i].value = NULL;
-    }
-    next_version_tag = 0;
-    /* mark all version tags as invalid */
-    PyType_Modified(&PyBaseObject_Type);
-    return cur_version_tag;
-}
-
-void
-PyType_Modified(PyTypeObject *type)
-{
-    /* Invalidate any cached data for the specified type and all
-       subclasses.  This function is called after the base
-       classes, mro, or attributes of the type are altered.
-
-       Invariants:
-
-       - Py_TPFLAGS_VALID_VERSION_TAG is never set if
-         Py_TPFLAGS_HAVE_VERSION_TAG is not set (e.g. on type
-         objects coming from non-recompiled extension modules)
-
-       - before Py_TPFLAGS_VALID_VERSION_TAG can be set on a type,
-         it must first be set on all super types.
-
-       This function clears the Py_TPFLAGS_VALID_VERSION_TAG of a
-       type (so it must first clear it on all subclasses).  The
-       tp_version_tag value is meaningless unless this flag is set.
-       We don't assign new version tags eagerly, but only as
-       needed.
-     */
-    PyObject *raw, *ref;
-    Py_ssize_t i, n;
-
-    if (!PyType_HasFeature(type, Py_TPFLAGS_VALID_VERSION_TAG))
-        return;
-
-    raw = type->tp_subclasses;
-    if (raw != NULL) {
-        n = PyList_GET_SIZE(raw);
-        for (i = 0; i < n; i++) {
-            ref = PyList_GET_ITEM(raw, i);
-            ref = PyWeakref_GET_OBJECT(ref);
-            if (ref != Py_None) {
-                PyType_Modified((PyTypeObject *)ref);
-            }
-        }
-    }
-    type->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG;
-}
-
-static void
-type_mro_modified(PyTypeObject *type, PyObject *bases) {
-    /*
-       Check that all base classes or elements of the mro of type are
-       able to be cached.  This function is called after the base
-       classes or mro of the type are altered.
-
-       Unset HAVE_VERSION_TAG and VALID_VERSION_TAG if the type
-       inherits from an old-style class, either directly or if it
-       appears in the MRO of a new-style class.  No support either for
-       custom MROs that include types that are not officially super
-       types.
-
-       Called from mro_internal, which will subsequently be called on
-       each subclass when their mro is recursively updated.
-     */
-    Py_ssize_t i, n;
-    int clear = 0;
-
-    if (!PyType_HasFeature(type, Py_TPFLAGS_HAVE_VERSION_TAG))
-        return;
-
-    n = PyTuple_GET_SIZE(bases);
-    for (i = 0; i < n; i++) {
-        PyObject *b = PyTuple_GET_ITEM(bases, i);
-        PyTypeObject *cls;
-
-        if (!PyType_Check(b) ) {
-            clear = 1;
-            break;
-        }
-
-        cls = (PyTypeObject *)b;
-
-        if (!PyType_HasFeature(cls, Py_TPFLAGS_HAVE_VERSION_TAG) ||
-            !PyType_IsSubtype(type, cls)) {
-            clear = 1;
-            break;
-        }
-    }
-
-    if (clear)
-        type->tp_flags &= ~(Py_TPFLAGS_HAVE_VERSION_TAG|
-                            Py_TPFLAGS_VALID_VERSION_TAG);
-}
-
-static int
-assign_version_tag(PyTypeObject *type)
-{
-    /* Ensure that the tp_version_tag is valid and set
-       Py_TPFLAGS_VALID_VERSION_TAG.  To respect the invariant, this
-       must first be done on all super classes.  Return 0 if this
-       cannot be done, 1 if Py_TPFLAGS_VALID_VERSION_TAG.
-    */
-    Py_ssize_t i, n;
-    PyObject *bases;
-
-    if (PyType_HasFeature(type, Py_TPFLAGS_VALID_VERSION_TAG))
-        return 1;
-    if (!PyType_HasFeature(type, Py_TPFLAGS_HAVE_VERSION_TAG))
-        return 0;
-    if (!PyType_HasFeature(type, Py_TPFLAGS_READY))
-        return 0;
-
-    type->tp_version_tag = next_version_tag++;
-    /* for stress-testing: next_version_tag &= 0xFF; */
-
-    if (type->tp_version_tag == 0) {
-        /* wrap-around or just starting Python - clear the whole
-           cache by filling names with references to Py_None.
-           Values are also set to NULL for added protection, as they
-           are borrowed reference */
-        for (i = 0; i < (1 << MCACHE_SIZE_EXP); i++) {
-            method_cache[i].value = NULL;
-            Py_XDECREF(method_cache[i].name);
-            method_cache[i].name = Py_None;
-            Py_INCREF(Py_None);
-        }
-        /* mark all version tags as invalid */
-        PyType_Modified(&PyBaseObject_Type);
-        return 1;
-    }
-    bases = type->tp_bases;
-    n = PyTuple_GET_SIZE(bases);
-    for (i = 0; i < n; i++) {
-        PyObject *b = PyTuple_GET_ITEM(bases, i);
-        assert(PyType_Check(b));
-        if (!assign_version_tag((PyTypeObject *)b))
-            return 0;
-    }
-    type->tp_flags |= Py_TPFLAGS_VALID_VERSION_TAG;
-    return 1;
-}
-
-
-static PyMemberDef type_members[] = {
-    {"__basicsize__", T_PYSSIZET, offsetof(PyTypeObject,tp_basicsize),READONLY},
-    {"__itemsize__", T_PYSSIZET, offsetof(PyTypeObject, tp_itemsize), READONLY},
-    {"__flags__", T_LONG, offsetof(PyTypeObject, tp_flags), READONLY},
-    {"__weakrefoffset__", T_LONG,
-     offsetof(PyTypeObject, tp_weaklistoffset), READONLY},
-    {"__base__", T_OBJECT, offsetof(PyTypeObject, tp_base), READONLY},
-    {"__dictoffset__", T_LONG,
-     offsetof(PyTypeObject, tp_dictoffset), READONLY},
-    {"__mro__", T_OBJECT, offsetof(PyTypeObject, tp_mro), READONLY},
-    {0}
-};
-
-static PyObject *
-type_name(PyTypeObject *type, void *context)
-{
-    const char *s;
-
-    if (type->tp_flags & Py_TPFLAGS_HEAPTYPE) {
-        PyHeapTypeObject* et = (PyHeapTypeObject*)type;
-
-        Py_INCREF(et->ht_name);
-        return et->ht_name;
-    }
-    else {
-        s = strrchr(type->tp_name, '.');
-        if (s == NULL)
-            s = type->tp_name;
-        else
-            s++;
-        return PyString_FromString(s);
-    }
-}
-
-static int
-type_set_name(PyTypeObject *type, PyObject *value, void *context)
-{
-    PyHeapTypeObject* et;
-
-    if (!(type->tp_flags & Py_TPFLAGS_HEAPTYPE)) {
-        PyErr_Format(PyExc_TypeError,
-                     "can't set %s.__name__", type->tp_name);
-        return -1;
-    }
-    if (!value) {
-        PyErr_Format(PyExc_TypeError,
-                     "can't delete %s.__name__", type->tp_name);
-        return -1;
-    }
-    if (!PyString_Check(value)) {
-        PyErr_Format(PyExc_TypeError,
-                     "can only assign string to %s.__name__, not '%s'",
-                     type->tp_name, Py_TYPE(value)->tp_name);
-        return -1;
-    }
-    if (strlen(PyString_AS_STRING(value))
-        != (size_t)PyString_GET_SIZE(value)) {
-        PyErr_Format(PyExc_ValueError,
-                     "__name__ must not contain null bytes");
-        return -1;
-    }
-
-    et = (PyHeapTypeObject*)type;
-
-    Py_INCREF(value);
-
-    Py_DECREF(et->ht_name);
-    et->ht_name = value;
-
-    type->tp_name = PyString_AS_STRING(value);
-
-    return 0;
-}
-
-static PyObject *
-type_module(PyTypeObject *type, void *context)
-{
-    PyObject *mod;
-    char *s;
-
-    if (type->tp_flags & Py_TPFLAGS_HEAPTYPE) {
-        mod = PyDict_GetItemString(type->tp_dict, "__module__");
-        if (!mod) {
-            PyErr_Format(PyExc_AttributeError, "__module__");
-            return 0;
-        }
-        Py_XINCREF(mod);
-        return mod;
-    }
-    else {
-        s = strrchr(type->tp_name, '.');
-        if (s != NULL)
-            return PyString_FromStringAndSize(
-                type->tp_name, (Py_ssize_t)(s - type->tp_name));
-        return PyString_FromString("__builtin__");
-    }
-}
-
-static int
-type_set_module(PyTypeObject *type, PyObject *value, void *context)
-{
-    if (!(type->tp_flags & Py_TPFLAGS_HEAPTYPE)) {
-        PyErr_Format(PyExc_TypeError,
-                     "can't set %s.__module__", type->tp_name);
-        return -1;
-    }
-    if (!value) {
-        PyErr_Format(PyExc_TypeError,
-                     "can't delete %s.__module__", type->tp_name);
-        return -1;
-    }
-
-    PyType_Modified(type);
-
-    return PyDict_SetItemString(type->tp_dict, "__module__", value);
-}
-
-static PyObject *
-type_abstractmethods(PyTypeObject *type, void *context)
-{
-    PyObject *mod = NULL;
-    /* type itself has an __abstractmethods__ descriptor (this). Don't return
-       that. */
-    if (type != &PyType_Type)
-        mod = PyDict_GetItemString(type->tp_dict, "__abstractmethods__");
-    if (!mod) {
-        PyErr_SetString(PyExc_AttributeError, "__abstractmethods__");
-        return NULL;
-    }
-    Py_XINCREF(mod);
-    return mod;
-}
-
-static int
-type_set_abstractmethods(PyTypeObject *type, PyObject *value, void *context)
-{
-    /* __abstractmethods__ should only be set once on a type, in
-       abc.ABCMeta.__new__, so this function doesn't do anything
-       special to update subclasses.
-    */
-    int res;
-    if (value != NULL) {
-        res = PyDict_SetItemString(type->tp_dict, "__abstractmethods__", value);
-    }
-    else {
-        res = PyDict_DelItemString(type->tp_dict, "__abstractmethods__");
-        if (res && PyErr_ExceptionMatches(PyExc_KeyError)) {
-            PyErr_SetString(PyExc_AttributeError, "__abstractmethods__");
-            return -1;
-        }
-    }
-    if (res == 0) {
-        PyType_Modified(type);
-        if (value && PyObject_IsTrue(value)) {
-            type->tp_flags |= Py_TPFLAGS_IS_ABSTRACT;
-        }
-        else {
-            type->tp_flags &= ~Py_TPFLAGS_IS_ABSTRACT;
-        }
-    }
-    return res;
-}
-
-static PyObject *
-type_get_bases(PyTypeObject *type, void *context)
-{
-    Py_INCREF(type->tp_bases);
-    return type->tp_bases;
-}
-
-static PyTypeObject *best_base(PyObject *);
-static int mro_internal(PyTypeObject *);
-static int compatible_for_assignment(PyTypeObject *, PyTypeObject *, char *);
-static int add_subclass(PyTypeObject*, PyTypeObject*);
-static void remove_subclass(PyTypeObject *, PyTypeObject *);
-static void update_all_slots(PyTypeObject *);
-
-typedef int (*update_callback)(PyTypeObject *, void *);
-static int update_subclasses(PyTypeObject *type, PyObject *name,
-                             update_callback callback, void *data);
-static int recurse_down_subclasses(PyTypeObject *type, PyObject *name,
-                                   update_callback callback, void *data);
-
-static int
-mro_subclasses(PyTypeObject *type, PyObject* temp)
-{
-    PyTypeObject *subclass;
-    PyObject *ref, *subclasses, *old_mro;
-    Py_ssize_t i, n;
-
-    subclasses = type->tp_subclasses;
-    if (subclasses == NULL)
-        return 0;
-    assert(PyList_Check(subclasses));
-    n = PyList_GET_SIZE(subclasses);
-    for (i = 0; i < n; i++) {
-        ref = PyList_GET_ITEM(subclasses, i);
-        assert(PyWeakref_CheckRef(ref));
-        subclass = (PyTypeObject *)PyWeakref_GET_OBJECT(ref);
-        assert(subclass != NULL);
-        if ((PyObject *)subclass == Py_None)
-            continue;
-        assert(PyType_Check(subclass));
-        old_mro = subclass->tp_mro;
-        if (mro_internal(subclass) < 0) {
-            subclass->tp_mro = old_mro;
-            return -1;
-        }
-        else {
-            PyObject* tuple;
-            tuple = PyTuple_Pack(2, subclass, old_mro);
-            Py_DECREF(old_mro);
-            if (!tuple)
-                return -1;
-            if (PyList_Append(temp, tuple) < 0)
-                return -1;
-            Py_DECREF(tuple);
-        }
-        if (mro_subclasses(subclass, temp) < 0)
-            return -1;
-    }
-    return 0;
-}
-
-static int
-type_set_bases(PyTypeObject *type, PyObject *value, void *context)
-{
-    Py_ssize_t i;
-    int r = 0;
-    PyObject *ob, *temp;
-    PyTypeObject *new_base, *old_base;
-    PyObject *old_bases, *old_mro;
-
-    if (!(type->tp_flags & Py_TPFLAGS_HEAPTYPE)) {
-        PyErr_Format(PyExc_TypeError,
-                     "can't set %s.__bases__", type->tp_name);
-        return -1;
-    }
-    if (!value) {
-        PyErr_Format(PyExc_TypeError,
-                     "can't delete %s.__bases__", type->tp_name);
-        return -1;
-    }
-    if (!PyTuple_Check(value)) {
-        PyErr_Format(PyExc_TypeError,
-             "can only assign tuple to %s.__bases__, not %s",
-                 type->tp_name, Py_TYPE(value)->tp_name);
-        return -1;
-    }
-    if (PyTuple_GET_SIZE(value) == 0) {
-        PyErr_Format(PyExc_TypeError,
-             "can only assign non-empty tuple to %s.__bases__, not ()",
-                 type->tp_name);
-        return -1;
-    }
-    for (i = 0; i < PyTuple_GET_SIZE(value); i++) {
-        ob = PyTuple_GET_ITEM(value, i);
-        if (!PyClass_Check(ob) && !PyType_Check(ob)) {
-            PyErr_Format(
-                PyExc_TypeError,
-    "%s.__bases__ must be tuple of old- or new-style classes, not '%s'",
-                            type->tp_name, Py_TYPE(ob)->tp_name);
-                    return -1;
-        }
-        if (PyType_Check(ob)) {
-            if (PyType_IsSubtype((PyTypeObject*)ob, type)) {
-                PyErr_SetString(PyExc_TypeError,
-            "a __bases__ item causes an inheritance cycle");
-                return -1;
-            }
-        }
-    }
-
-    new_base = best_base(value);
-
-    if (!new_base) {
-        return -1;
-    }
-
-    if (!compatible_for_assignment(type->tp_base, new_base, "__bases__"))
-        return -1;
-
-    Py_INCREF(new_base);
-    Py_INCREF(value);
-
-    old_bases = type->tp_bases;
-    old_base = type->tp_base;
-    old_mro = type->tp_mro;
-
-    type->tp_bases = value;
-    type->tp_base = new_base;
-
-    if (mro_internal(type) < 0) {
-        goto bail;
-    }
-
-    temp = PyList_New(0);
-    if (!temp)
-        goto bail;
-
-    r = mro_subclasses(type, temp);
-
-    if (r < 0) {
-        for (i = 0; i < PyList_Size(temp); i++) {
-            PyTypeObject* cls;
-            PyObject* mro;
-            PyArg_UnpackTuple(PyList_GET_ITEM(temp, i),
-                             "", 2, 2, &cls, &mro);
-            Py_INCREF(mro);
-            ob = cls->tp_mro;
-            cls->tp_mro = mro;
-            Py_DECREF(ob);
-        }
-        Py_DECREF(temp);
-        goto bail;
-    }
-
-    Py_DECREF(temp);
-
-    /* any base that was in __bases__ but now isn't, we
-       need to remove |type| from its tp_subclasses.
-       conversely, any class now in __bases__ that wasn't
-       needs to have |type| added to its subclasses. */
-
-    /* for now, sod that: just remove from all old_bases,
-       add to all new_bases */
-
-    for (i = PyTuple_GET_SIZE(old_bases) - 1; i >= 0; i--) {
-        ob = PyTuple_GET_ITEM(old_bases, i);
-        if (PyType_Check(ob)) {
-            remove_subclass(
-                (PyTypeObject*)ob, type);
-        }
-    }
-
-    for (i = PyTuple_GET_SIZE(value) - 1; i >= 0; i--) {
-        ob = PyTuple_GET_ITEM(value, i);
-        if (PyType_Check(ob)) {
-            if (add_subclass((PyTypeObject*)ob, type) < 0)
-                r = -1;
-        }
-    }
-
-    update_all_slots(type);
-
-    Py_DECREF(old_bases);
-    Py_DECREF(old_base);
-    Py_DECREF(old_mro);
-
-    return r;
-
-  bail:
-    Py_DECREF(type->tp_bases);
-    Py_DECREF(type->tp_base);
-    if (type->tp_mro != old_mro) {
-        Py_DECREF(type->tp_mro);
-    }
-
-    type->tp_bases = old_bases;
-    type->tp_base = old_base;
-    type->tp_mro = old_mro;
-
-    return -1;
-}
-
-static PyObject *
-type_dict(PyTypeObject *type, void *context)
-{
-    if (type->tp_dict == NULL) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyDictProxy_New(type->tp_dict);
-}
-
-static PyObject *
-type_get_doc(PyTypeObject *type, void *context)
-{
-    PyObject *result;
-    if (!(type->tp_flags & Py_TPFLAGS_HEAPTYPE) && type->tp_doc != NULL)
-        return PyString_FromString(type->tp_doc);
-    result = PyDict_GetItemString(type->tp_dict, "__doc__");
-    if (result == NULL) {
-        result = Py_None;
-        Py_INCREF(result);
-    }
-    else if (Py_TYPE(result)->tp_descr_get) {
-        result = Py_TYPE(result)->tp_descr_get(result, NULL,
-                                               (PyObject *)type);
-    }
-    else {
-        Py_INCREF(result);
-    }
-    return result;
-}
-
-static PyObject *
-type___instancecheck__(PyObject *type, PyObject *inst)
-{
-    switch (_PyObject_RealIsInstance(inst, type)) {
-    case -1:
-        return NULL;
-    case 0:
-        Py_RETURN_FALSE;
-    default:
-        Py_RETURN_TRUE;
-    }
-}
-
-
-static PyObject *
-type___subclasscheck__(PyObject *type, PyObject *inst)
-{
-    switch (_PyObject_RealIsSubclass(inst, type)) {
-    case -1:
-        return NULL;
-    case 0:
-        Py_RETURN_FALSE;
-    default:
-        Py_RETURN_TRUE;
-    }
-}
-
-
-static PyGetSetDef type_getsets[] = {
-    {"__name__", (getter)type_name, (setter)type_set_name, NULL},
-    {"__bases__", (getter)type_get_bases, (setter)type_set_bases, NULL},
-    {"__module__", (getter)type_module, (setter)type_set_module, NULL},
-    {"__abstractmethods__", (getter)type_abstractmethods,
-     (setter)type_set_abstractmethods, NULL},
-    {"__dict__",  (getter)type_dict,  NULL, NULL},
-    {"__doc__", (getter)type_get_doc, NULL, NULL},
-    {0}
-};
-
-
-static PyObject*
-type_richcompare(PyObject *v, PyObject *w, int op)
-{
-    PyObject *result;
-    Py_uintptr_t vv, ww;
-    int c;
-
-    /* Make sure both arguments are types. */
-    if (!PyType_Check(v) || !PyType_Check(w) ||
-        /* If there is a __cmp__ method defined, let it be called instead
-           of our dumb function designed merely to warn.  See bug
-           #7491. */
-        Py_TYPE(v)->tp_compare || Py_TYPE(w)->tp_compare) {
-        result = Py_NotImplemented;
-        goto out;
-    }
-
-    /* Py3K warning if comparison isn't == or !=  */
-    if (Py_Py3kWarningFlag && op != Py_EQ && op != Py_NE &&
-        PyErr_WarnEx(PyExc_DeprecationWarning,
-                   "type inequality comparisons not supported "
-                   "in 3.x", 1) < 0) {
-        return NULL;
-    }
-
-    /* Compare addresses */
-    vv = (Py_uintptr_t)v;
-    ww = (Py_uintptr_t)w;
-    switch (op) {
-    case Py_LT: c = vv <  ww; break;
-    case Py_LE: c = vv <= ww; break;
-    case Py_EQ: c = vv == ww; break;
-    case Py_NE: c = vv != ww; break;
-    case Py_GT: c = vv >  ww; break;
-    case Py_GE: c = vv >= ww; break;
-    default:
-        result = Py_NotImplemented;
-        goto out;
-    }
-    result = c ? Py_True : Py_False;
-
-  /* incref and return */
-  out:
-    Py_INCREF(result);
-    return result;
-}
-
-static PyObject *
-type_repr(PyTypeObject *type)
-{
-    PyObject *mod, *name, *rtn;
-    char *kind;
-
-    mod = type_module(type, NULL);
-    if (mod == NULL)
-        PyErr_Clear();
-    else if (!PyString_Check(mod)) {
-        Py_DECREF(mod);
-        mod = NULL;
-    }
-    name = type_name(type, NULL);
-    if (name == NULL)
-        return NULL;
-
-    if (type->tp_flags & Py_TPFLAGS_HEAPTYPE)
-        kind = "class";
-    else
-        kind = "type";
-
-    if (mod != NULL && strcmp(PyString_AS_STRING(mod), "__builtin__")) {
-        rtn = PyString_FromFormat("<%s '%s.%s'>",
-                                  kind,
-                                  PyString_AS_STRING(mod),
-                                  PyString_AS_STRING(name));
-    }
-    else
-        rtn = PyString_FromFormat("<%s '%s'>", kind, type->tp_name);
-
-    Py_XDECREF(mod);
-    Py_DECREF(name);
-    return rtn;
-}
-
-static PyObject *
-type_call(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *obj;
-
-    if (type->tp_new == NULL) {
-        PyErr_Format(PyExc_TypeError,
-                     "cannot create '%.100s' instances",
-                     type->tp_name);
-        return NULL;
-    }
-
-    obj = type->tp_new(type, args, kwds);
-    if (obj != NULL) {
-        /* Ugly exception: when the call was type(something),
-           don't call tp_init on the result. */
-        if (type == &PyType_Type &&
-            PyTuple_Check(args) && PyTuple_GET_SIZE(args) == 1 &&
-            (kwds == NULL ||
-             (PyDict_Check(kwds) && PyDict_Size(kwds) == 0)))
-            return obj;
-        /* If the returned object is not an instance of type,
-           it won't be initialized. */
-        if (!PyType_IsSubtype(obj->ob_type, type))
-            return obj;
-        type = obj->ob_type;
-        if (PyType_HasFeature(type, Py_TPFLAGS_HAVE_CLASS) &&
-            type->tp_init != NULL &&
-            type->tp_init(obj, args, kwds) < 0) {
-            Py_DECREF(obj);
-            obj = NULL;
-        }
-    }
-    return obj;
-}
-
-PyObject *
-PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
-{
-    PyObject *obj;
-    const size_t size = _PyObject_VAR_SIZE(type, nitems+1);
-    /* note that we need to add one, for the sentinel */
-
-    if (PyType_IS_GC(type))
-        obj = _PyObject_GC_Malloc(size);
-    else
-        obj = (PyObject *)PyObject_MALLOC(size);
-
-    if (obj == NULL)
-        return PyErr_NoMemory();
-
-    memset(obj, '\0', size);
-
-    if (type->tp_flags & Py_TPFLAGS_HEAPTYPE)
-        Py_INCREF(type);
-
-    if (type->tp_itemsize == 0)
-        PyObject_INIT(obj, type);
-    else
-        (void) PyObject_INIT_VAR((PyVarObject *)obj, type, nitems);
-
-    if (PyType_IS_GC(type))
-        _PyObject_GC_TRACK(obj);
-    return obj;
-}
-
-PyObject *
-PyType_GenericNew(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    return type->tp_alloc(type, 0);
-}
-
-/* Helpers for subtyping */
-
-static int
-traverse_slots(PyTypeObject *type, PyObject *self, visitproc visit, void *arg)
-{
-    Py_ssize_t i, n;
-    PyMemberDef *mp;
-
-    n = Py_SIZE(type);
-    mp = PyHeapType_GET_MEMBERS((PyHeapTypeObject *)type);
-    for (i = 0; i < n; i++, mp++) {
-        if (mp->type == T_OBJECT_EX) {
-            char *addr = (char *)self + mp->offset;
-            PyObject *obj = *(PyObject **)addr;
-            if (obj != NULL) {
-                int err = visit(obj, arg);
-                if (err)
-                    return err;
-            }
-        }
-    }
-    return 0;
-}
-
-static int
-subtype_traverse(PyObject *self, visitproc visit, void *arg)
-{
-    PyTypeObject *type, *base;
-    traverseproc basetraverse;
-
-    /* Find the nearest base with a different tp_traverse,
-       and traverse slots while we're at it */
-    type = Py_TYPE(self);
-    base = type;
-    while ((basetraverse = base->tp_traverse) == subtype_traverse) {
-        if (Py_SIZE(base)) {
-            int err = traverse_slots(base, self, visit, arg);
-            if (err)
-                return err;
-        }
-        base = base->tp_base;
-        assert(base);
-    }
-
-    if (type->tp_dictoffset != base->tp_dictoffset) {
-        PyObject **dictptr = _PyObject_GetDictPtr(self);
-        if (dictptr && *dictptr)
-            Py_VISIT(*dictptr);
-    }
-
-    if (type->tp_flags & Py_TPFLAGS_HEAPTYPE)
-        /* For a heaptype, the instances count as references
-           to the type.          Traverse the type so the collector
-           can find cycles involving this link. */
-        Py_VISIT(type);
-
-    if (basetraverse)
-        return basetraverse(self, visit, arg);
-    return 0;
-}
-
-static void
-clear_slots(PyTypeObject *type, PyObject *self)
-{
-    Py_ssize_t i, n;
-    PyMemberDef *mp;
-
-    n = Py_SIZE(type);
-    mp = PyHeapType_GET_MEMBERS((PyHeapTypeObject *)type);
-    for (i = 0; i < n; i++, mp++) {
-        if (mp->type == T_OBJECT_EX && !(mp->flags & READONLY)) {
-            char *addr = (char *)self + mp->offset;
-            PyObject *obj = *(PyObject **)addr;
-            if (obj != NULL) {
-                *(PyObject **)addr = NULL;
-                Py_DECREF(obj);
-            }
-        }
-    }
-}
-
-static int
-subtype_clear(PyObject *self)
-{
-    PyTypeObject *type, *base;
-    inquiry baseclear;
-
-    /* Find the nearest base with a different tp_clear
-       and clear slots while we're at it */
-    type = Py_TYPE(self);
-    base = type;
-    while ((baseclear = base->tp_clear) == subtype_clear) {
-        if (Py_SIZE(base))
-            clear_slots(base, self);
-        base = base->tp_base;
-        assert(base);
-    }
-
-    /* There's no need to clear the instance dict (if any);
-       the collector will call its tp_clear handler. */
-
-    if (baseclear)
-        return baseclear(self);
-    return 0;
-}
-
-static void
-subtype_dealloc(PyObject *self)
-{
-    PyTypeObject *type, *base;
-    destructor basedealloc;
-
-    /* Extract the type; we expect it to be a heap type */
-    type = Py_TYPE(self);
-    assert(type->tp_flags & Py_TPFLAGS_HEAPTYPE);
-
-    /* Test whether the type has GC exactly once */
-
-    if (!PyType_IS_GC(type)) {
-        /* It's really rare to find a dynamic type that doesn't have
-           GC; it can only happen when deriving from 'object' and not
-           adding any slots or instance variables.  This allows
-           certain simplifications: there's no need to call
-           clear_slots(), or DECREF the dict, or clear weakrefs. */
-
-        /* Maybe call finalizer; exit early if resurrected */
-        if (type->tp_del) {
-            type->tp_del(self);
-            if (self->ob_refcnt > 0)
-                return;
-        }
-
-        /* Find the nearest base with a different tp_dealloc */
-        base = type;
-        while ((basedealloc = base->tp_dealloc) == subtype_dealloc) {
-            assert(Py_SIZE(base) == 0);
-            base = base->tp_base;
-            assert(base);
-        }
-
-        /* Extract the type again; tp_del may have changed it */
-        type = Py_TYPE(self);
-
-        /* Call the base tp_dealloc() */
-        assert(basedealloc);
-        basedealloc(self);
-
-        /* Can't reference self beyond this point */
-        Py_DECREF(type);
-
-        /* Done */
-        return;
-    }
-
-    /* We get here only if the type has GC */
-
-    /* UnTrack and re-Track around the trashcan macro, alas */
-    /* See explanation at end of function for full disclosure */
-    PyObject_GC_UnTrack(self);
-    ++_PyTrash_delete_nesting;
-    Py_TRASHCAN_SAFE_BEGIN(self);
-    --_PyTrash_delete_nesting;
-    /* DO NOT restore GC tracking at this point.  weakref callbacks
-     * (if any, and whether directly here or indirectly in something we
-     * call) may trigger GC, and if self is tracked at that point, it
-     * will look like trash to GC and GC will try to delete self again.
-     */
-
-    /* Find the nearest base with a different tp_dealloc */
-    base = type;
-    while ((basedealloc = base->tp_dealloc) == subtype_dealloc) {
-        base = base->tp_base;
-        assert(base);
-    }
-
-    /* If we added a weaklist, we clear it.      Do this *before* calling
-       the finalizer (__del__), clearing slots, or clearing the instance
-       dict. */
-
-    if (type->tp_weaklistoffset && !base->tp_weaklistoffset)
-        PyObject_ClearWeakRefs(self);
-
-    /* Maybe call finalizer; exit early if resurrected */
-    if (type->tp_del) {
-        _PyObject_GC_TRACK(self);
-        type->tp_del(self);
-        if (self->ob_refcnt > 0)
-            goto endlabel;              /* resurrected */
-        else
-            _PyObject_GC_UNTRACK(self);
-        /* New weakrefs could be created during the finalizer call.
-            If this occurs, clear them out without calling their
-            finalizers since they might rely on part of the object
-            being finalized that has already been destroyed. */
-        if (type->tp_weaklistoffset && !base->tp_weaklistoffset) {
-            /* Modeled after GET_WEAKREFS_LISTPTR() */
-            PyWeakReference **list = (PyWeakReference **) \
-                PyObject_GET_WEAKREFS_LISTPTR(self);
-            while (*list)
-                _PyWeakref_ClearRef(*list);
-        }
-    }
-
-    /*  Clear slots up to the nearest base with a different tp_dealloc */
-    base = type;
-    while (base->tp_dealloc == subtype_dealloc) {
-        if (Py_SIZE(base))
-            clear_slots(base, self);
-        base = base->tp_base;
-        assert(base);
-    }
-
-    /* If we added a dict, DECREF it */
-    if (type->tp_dictoffset && !base->tp_dictoffset) {
-        PyObject **dictptr = _PyObject_GetDictPtr(self);
-        if (dictptr != NULL) {
-            PyObject *dict = *dictptr;
-            if (dict != NULL) {
-                Py_DECREF(dict);
-                *dictptr = NULL;
-            }
-        }
-    }
-
-    /* Extract the type again; tp_del may have changed it */
-    type = Py_TYPE(self);
-
-    /* Call the base tp_dealloc(); first retrack self if
-     * basedealloc knows about gc.
-     */
-    if (PyType_IS_GC(base))
-        _PyObject_GC_TRACK(self);
-    assert(basedealloc);
-    basedealloc(self);
-
-    /* Can't reference self beyond this point */
-    Py_DECREF(type);
-
-  endlabel:
-    ++_PyTrash_delete_nesting;
-    Py_TRASHCAN_SAFE_END(self);
-    --_PyTrash_delete_nesting;
-
-    /* Explanation of the weirdness around the trashcan macros:
-
-       Q. What do the trashcan macros do?
-
-       A. Read the comment titled "Trashcan mechanism" in object.h.
-          For one, this explains why there must be a call to GC-untrack
-          before the trashcan begin macro.      Without understanding the
-          trashcan code, the answers to the following questions don't make
-          sense.
-
-       Q. Why do we GC-untrack before the trashcan and then immediately
-          GC-track again afterward?
-
-       A. In the case that the base class is GC-aware, the base class
-          probably GC-untracks the object.      If it does that using the
-          UNTRACK macro, this will crash when the object is already
-          untracked.  Because we don't know what the base class does, the
-          only safe thing is to make sure the object is tracked when we
-          call the base class dealloc.  But...  The trashcan begin macro
-          requires that the object is *untracked* before it is called.  So
-          the dance becomes:
-
-         GC untrack
-         trashcan begin
-         GC track
-
-       Q. Why did the last question say "immediately GC-track again"?
-          It's nowhere near immediately.
-
-       A. Because the code *used* to re-track immediately.      Bad Idea.
-          self has a refcount of 0, and if gc ever gets its hands on it
-          (which can happen if any weakref callback gets invoked), it
-          looks like trash to gc too, and gc also tries to delete self
-          then.  But we're already deleting self.  Double deallocation is
-          a subtle disaster.
-
-       Q. Why the bizarre (net-zero) manipulation of
-          _PyTrash_delete_nesting around the trashcan macros?
-
-       A. Some base classes (e.g. list) also use the trashcan mechanism.
-          The following scenario used to be possible:
-
-          - suppose the trashcan level is one below the trashcan limit
-
-          - subtype_dealloc() is called
-
-          - the trashcan limit is not yet reached, so the trashcan level
-        is incremented and the code between trashcan begin and end is
-        executed
-
-          - this destroys much of the object's contents, including its
-        slots and __dict__
-
-          - basedealloc() is called; this is really list_dealloc(), or
-        some other type which also uses the trashcan macros
-
-          - the trashcan limit is now reached, so the object is put on the
-        trashcan's to-be-deleted-later list
-
-          - basedealloc() returns
-
-          - subtype_dealloc() decrefs the object's type
-
-          - subtype_dealloc() returns
-
-          - later, the trashcan code starts deleting the objects from its
-        to-be-deleted-later list
-
-          - subtype_dealloc() is called *AGAIN* for the same object
-
-          - at the very least (if the destroyed slots and __dict__ don't
-        cause problems) the object's type gets decref'ed a second
-        time, which is *BAD*!!!
-
-          The remedy is to make sure that if the code between trashcan
-          begin and end in subtype_dealloc() is called, the code between
-          trashcan begin and end in basedealloc() will also be called.
-          This is done by decrementing the level after passing into the
-          trashcan block, and incrementing it just before leaving the
-          block.
-
-          But now it's possible that a chain of objects consisting solely
-          of objects whose deallocator is subtype_dealloc() will defeat
-          the trashcan mechanism completely: the decremented level means
-          that the effective level never reaches the limit.      Therefore, we
-          *increment* the level *before* entering the trashcan block, and
-          matchingly decrement it after leaving.  This means the trashcan
-          code will trigger a little early, but that's no big deal.
-
-       Q. Are there any live examples of code in need of all this
-          complexity?
-
-       A. Yes.  See SF bug 668433 for code that crashed (when Python was
-          compiled in debug mode) before the trashcan level manipulations
-          were added.  For more discussion, see SF patches 581742, 575073
-          and bug 574207.
-    */
-}
-
-static PyTypeObject *solid_base(PyTypeObject *type);
-
-/* type test with subclassing support */
-
-int
-PyType_IsSubtype(PyTypeObject *a, PyTypeObject *b)
-{
-    PyObject *mro;
-
-    if (!(a->tp_flags & Py_TPFLAGS_HAVE_CLASS))
-        return b == a || b == &PyBaseObject_Type;
-
-    mro = a->tp_mro;
-    if (mro != NULL) {
-        /* Deal with multiple inheritance without recursion
-           by walking the MRO tuple */
-        Py_ssize_t i, n;
-        assert(PyTuple_Check(mro));
-        n = PyTuple_GET_SIZE(mro);
-        for (i = 0; i < n; i++) {
-            if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
-                return 1;
-        }
-        return 0;
-    }
-    else {
-        /* a is not completely initilized yet; follow tp_base */
-        do {
-            if (a == b)
-                return 1;
-            a = a->tp_base;
-        } while (a != NULL);
-        return b == &PyBaseObject_Type;
-    }
-}
-
-/* Internal routines to do a method lookup in the type
-   without looking in the instance dictionary
-   (so we can't use PyObject_GetAttr) but still binding
-   it to the instance.  The arguments are the object,
-   the method name as a C string, and the address of a
-   static variable used to cache the interned Python string.
-
-   Two variants:
-
-   - lookup_maybe() returns NULL without raising an exception
-     when the _PyType_Lookup() call fails;
-
-   - lookup_method() always raises an exception upon errors.
-
-   - _PyObject_LookupSpecial() exported for the benefit of other places.
-*/
-
-static PyObject *
-lookup_maybe(PyObject *self, char *attrstr, PyObject **attrobj)
-{
-    PyObject *res;
-
-    if (*attrobj == NULL) {
-        *attrobj = PyString_InternFromString(attrstr);
-        if (*attrobj == NULL)
-            return NULL;
-    }
-    res = _PyType_Lookup(Py_TYPE(self), *attrobj);
-    if (res != NULL) {
-        descrgetfunc f;
-        if ((f = Py_TYPE(res)->tp_descr_get) == NULL)
-            Py_INCREF(res);
-        else
-            res = f(res, self, (PyObject *)(Py_TYPE(self)));
-    }
-    return res;
-}
-
-static PyObject *
-lookup_method(PyObject *self, char *attrstr, PyObject **attrobj)
-{
-    PyObject *res = lookup_maybe(self, attrstr, attrobj);
-    if (res == NULL && !PyErr_Occurred())
-        PyErr_SetObject(PyExc_AttributeError, *attrobj);
-    return res;
-}
-
-PyObject *
-_PyObject_LookupSpecial(PyObject *self, char *attrstr, PyObject **attrobj)
-{
-    assert(!PyInstance_Check(self));
-    return lookup_maybe(self, attrstr, attrobj);
-}
-
-/* A variation of PyObject_CallMethod that uses lookup_method()
-   instead of PyObject_GetAttrString().  This uses the same convention
-   as lookup_method to cache the interned name string object. */
-
-static PyObject *
-call_method(PyObject *o, char *name, PyObject **nameobj, char *format, ...)
-{
-    va_list va;
-    PyObject *args, *func = 0, *retval;
-    va_start(va, format);
-
-    func = lookup_maybe(o, name, nameobj);
-    if (func == NULL) {
-        va_end(va);
-        if (!PyErr_Occurred())
-            PyErr_SetObject(PyExc_AttributeError, *nameobj);
-        return NULL;
-    }
-
-    if (format && *format)
-        args = Py_VaBuildValue(format, va);
-    else
-        args = PyTuple_New(0);
-
-    va_end(va);
-
-    if (args == NULL)
-        return NULL;
-
-    assert(PyTuple_Check(args));
-    retval = PyObject_Call(func, args, NULL);
-
-    Py_DECREF(args);
-    Py_DECREF(func);
-
-    return retval;
-}
-
-/* Clone of call_method() that returns NotImplemented when the lookup fails. */
-
-static PyObject *
-call_maybe(PyObject *o, char *name, PyObject **nameobj, char *format, ...)
-{
-    va_list va;
-    PyObject *args, *func = 0, *retval;
-    va_start(va, format);
-
-    func = lookup_maybe(o, name, nameobj);
-    if (func == NULL) {
-        va_end(va);
-        if (!PyErr_Occurred()) {
-            Py_INCREF(Py_NotImplemented);
-            return Py_NotImplemented;
-        }
-        return NULL;
-    }
-
-    if (format && *format)
-        args = Py_VaBuildValue(format, va);
-    else
-        args = PyTuple_New(0);
-
-    va_end(va);
-
-    if (args == NULL)
-        return NULL;
-
-    assert(PyTuple_Check(args));
-    retval = PyObject_Call(func, args, NULL);
-
-    Py_DECREF(args);
-    Py_DECREF(func);
-
-    return retval;
-}
-
-static int
-fill_classic_mro(PyObject *mro, PyObject *cls)
-{
-    PyObject *bases, *base;
-    Py_ssize_t i, n;
-
-    assert(PyList_Check(mro));
-    assert(PyClass_Check(cls));
-    i = PySequence_Contains(mro, cls);
-    if (i < 0)
-        return -1;
-    if (!i) {
-        if (PyList_Append(mro, cls) < 0)
-            return -1;
-    }
-    bases = ((PyClassObject *)cls)->cl_bases;
-    assert(bases && PyTuple_Check(bases));
-    n = PyTuple_GET_SIZE(bases);
-    for (i = 0; i < n; i++) {
-        base = PyTuple_GET_ITEM(bases, i);
-        if (fill_classic_mro(mro, base) < 0)
-            return -1;
-    }
-    return 0;
-}
-
-static PyObject *
-classic_mro(PyObject *cls)
-{
-    PyObject *mro;
-
-    assert(PyClass_Check(cls));
-    mro = PyList_New(0);
-    if (mro != NULL) {
-        if (fill_classic_mro(mro, cls) == 0)
-            return mro;
-        Py_DECREF(mro);
-    }
-    return NULL;
-}
-
-/*
-    Method resolution order algorithm C3 described in
-    "A Monotonic Superclass Linearization for Dylan",
-    by Kim Barrett, Bob Cassel, Paul Haahr,
-    David A. Moon, Keith Playford, and P. Tucker Withington.
-    (OOPSLA 1996)
-
-    Some notes about the rules implied by C3:
-
-    No duplicate bases.
-    It isn't legal to repeat a class in a list of base classes.
-
-    The next three properties are the 3 constraints in "C3".
-
-    Local precendece order.
-    If A precedes B in C's MRO, then A will precede B in the MRO of all
-    subclasses of C.
-
-    Monotonicity.
-    The MRO of a class must be an extension without reordering of the
-    MRO of each of its superclasses.
-
-    Extended Precedence Graph (EPG).
-    Linearization is consistent if there is a path in the EPG from
-    each class to all its successors in the linearization.  See
-    the paper for definition of EPG.
- */
-
-static int
-tail_contains(PyObject *list, int whence, PyObject *o) {
-    Py_ssize_t j, size;
-    size = PyList_GET_SIZE(list);
-
-    for (j = whence+1; j < size; j++) {
-        if (PyList_GET_ITEM(list, j) == o)
-            return 1;
-    }
-    return 0;
-}
-
-static PyObject *
-class_name(PyObject *cls)
-{
-    PyObject *name = PyObject_GetAttrString(cls, "__name__");
-    if (name == NULL) {
-        PyErr_Clear();
-        Py_XDECREF(name);
-        name = PyObject_Repr(cls);
-    }
-    if (name == NULL)
-        return NULL;
-    if (!PyString_Check(name)) {
-        Py_DECREF(name);
-        return NULL;
-    }
-    return name;
-}
-
-static int
-check_duplicates(PyObject *list)
-{
-    Py_ssize_t i, j, n;
-    /* Let's use a quadratic time algorithm,
-       assuming that the bases lists is short.
-    */
-    n = PyList_GET_SIZE(list);
-    for (i = 0; i < n; i++) {
-        PyObject *o = PyList_GET_ITEM(list, i);
-        for (j = i + 1; j < n; j++) {
-            if (PyList_GET_ITEM(list, j) == o) {
-                o = class_name(o);
-                PyErr_Format(PyExc_TypeError,
-                             "duplicate base class %s",
-                             o ? PyString_AS_STRING(o) : "?");
-                Py_XDECREF(o);
-                return -1;
-            }
-        }
-    }
-    return 0;
-}
-
-/* Raise a TypeError for an MRO order disagreement.
-
-   It's hard to produce a good error message.  In the absence of better
-   insight into error reporting, report the classes that were candidates
-   to be put next into the MRO.  There is some conflict between the
-   order in which they should be put in the MRO, but it's hard to
-   diagnose what constraint can't be satisfied.
-*/
-
-static void
-set_mro_error(PyObject *to_merge, int *remain)
-{
-    Py_ssize_t i, n, off, to_merge_size;
-    char buf[1000];
-    PyObject *k, *v;
-    PyObject *set = PyDict_New();
-    if (!set) return;
-
-    to_merge_size = PyList_GET_SIZE(to_merge);
-    for (i = 0; i < to_merge_size; i++) {
-        PyObject *L = PyList_GET_ITEM(to_merge, i);
-        if (remain[i] < PyList_GET_SIZE(L)) {
-            PyObject *c = PyList_GET_ITEM(L, remain[i]);
-            if (PyDict_SetItem(set, c, Py_None) < 0) {
-                Py_DECREF(set);
-                return;
-            }
-        }
-    }
-    n = PyDict_Size(set);
-
-    off = PyOS_snprintf(buf, sizeof(buf), "Cannot create a \
-consistent method resolution\norder (MRO) for bases");
-    i = 0;
-    while (PyDict_Next(set, &i, &k, &v) && (size_t)off < sizeof(buf)) {
-        PyObject *name = class_name(k);
-        off += PyOS_snprintf(buf + off, sizeof(buf) - off, " %s",
-                             name ? PyString_AS_STRING(name) : "?");
-        Py_XDECREF(name);
-        if (--n && (size_t)(off+1) < sizeof(buf)) {
-            buf[off++] = ',';
-            buf[off] = '\0';
-        }
-    }
-    PyErr_SetString(PyExc_TypeError, buf);
-    Py_DECREF(set);
-}
-
-static int
-pmerge(PyObject *acc, PyObject* to_merge) {
-    Py_ssize_t i, j, to_merge_size, empty_cnt;
-    int *remain;
-    int ok;
-
-    to_merge_size = PyList_GET_SIZE(to_merge);
-
-    /* remain stores an index into each sublist of to_merge.
-       remain[i] is the index of the next base in to_merge[i]
-       that is not included in acc.
-    */
-    remain = (int *)PyMem_MALLOC(SIZEOF_INT*to_merge_size);
-    if (remain == NULL)
-        return -1;
-    for (i = 0; i < to_merge_size; i++)
-        remain[i] = 0;
-
-  again:
-    empty_cnt = 0;
-    for (i = 0; i < to_merge_size; i++) {
-        PyObject *candidate;
-
-        PyObject *cur_list = PyList_GET_ITEM(to_merge, i);
-
-        if (remain[i] >= PyList_GET_SIZE(cur_list)) {
-            empty_cnt++;
-            continue;
-        }
-
-        /* Choose next candidate for MRO.
-
-           The input sequences alone can determine the choice.
-           If not, choose the class which appears in the MRO
-           of the earliest direct superclass of the new class.
-        */
-
-        candidate = PyList_GET_ITEM(cur_list, remain[i]);
-        for (j = 0; j < to_merge_size; j++) {
-            PyObject *j_lst = PyList_GET_ITEM(to_merge, j);
-            if (tail_contains(j_lst, remain[j], candidate)) {
-                goto skip; /* continue outer loop */
-            }
-        }
-        ok = PyList_Append(acc, candidate);
-        if (ok < 0) {
-            PyMem_Free(remain);
-            return -1;
-        }
-        for (j = 0; j < to_merge_size; j++) {
-            PyObject *j_lst = PyList_GET_ITEM(to_merge, j);
-            if (remain[j] < PyList_GET_SIZE(j_lst) &&
-                PyList_GET_ITEM(j_lst, remain[j]) == candidate) {
-                remain[j]++;
-            }
-        }
-        goto again;
-      skip: ;
-    }
-
-    if (empty_cnt == to_merge_size) {
-        PyMem_FREE(remain);
-        return 0;
-    }
-    set_mro_error(to_merge, remain);
-    PyMem_FREE(remain);
-    return -1;
-}
-
-static PyObject *
-mro_implementation(PyTypeObject *type)
-{
-    Py_ssize_t i, n;
-    int ok;
-    PyObject *bases, *result;
-    PyObject *to_merge, *bases_aslist;
-
-    if (type->tp_dict == NULL) {
-        if (PyType_Ready(type) < 0)
-            return NULL;
-    }
-
-    /* Find a superclass linearization that honors the constraints
-       of the explicit lists of bases and the constraints implied by
-       each base class.
-
-       to_merge is a list of lists, where each list is a superclass
-       linearization implied by a base class.  The last element of
-       to_merge is the declared list of bases.
-    */
-
-    bases = type->tp_bases;
-    n = PyTuple_GET_SIZE(bases);
-
-    to_merge = PyList_New(n+1);
-    if (to_merge == NULL)
-        return NULL;
-
-    for (i = 0; i < n; i++) {
-        PyObject *base = PyTuple_GET_ITEM(bases, i);
-        PyObject *parentMRO;
-        if (PyType_Check(base))
-            parentMRO = PySequence_List(
-                ((PyTypeObject*)base)->tp_mro);
-        else
-            parentMRO = classic_mro(base);
-        if (parentMRO == NULL) {
-            Py_DECREF(to_merge);
-            return NULL;
-        }
-
-        PyList_SET_ITEM(to_merge, i, parentMRO);
-    }
-
-    bases_aslist = PySequence_List(bases);
-    if (bases_aslist == NULL) {
-        Py_DECREF(to_merge);
-        return NULL;
-    }
-    /* This is just a basic sanity check. */
-    if (check_duplicates(bases_aslist) < 0) {
-        Py_DECREF(to_merge);
-        Py_DECREF(bases_aslist);
-        return NULL;
-    }
-    PyList_SET_ITEM(to_merge, n, bases_aslist);
-
-    result = Py_BuildValue("[O]", (PyObject *)type);
-    if (result == NULL) {
-        Py_DECREF(to_merge);
-        return NULL;
-    }
-
-    ok = pmerge(result, to_merge);
-    Py_DECREF(to_merge);
-    if (ok < 0) {
-        Py_DECREF(result);
-        return NULL;
-    }
-
-    return result;
-}
-
-static PyObject *
-mro_external(PyObject *self)
-{
-    PyTypeObject *type = (PyTypeObject *)self;
-
-    return mro_implementation(type);
-}
-
-static int
-mro_internal(PyTypeObject *type)
-{
-    PyObject *mro, *result, *tuple;
-    int checkit = 0;
-
-    if (Py_TYPE(type) == &PyType_Type) {
-        result = mro_implementation(type);
-    }
-    else {
-        static PyObject *mro_str;
-        checkit = 1;
-        mro = lookup_method((PyObject *)type, "mro", &mro_str);
-        if (mro == NULL)
-            return -1;
-        result = PyObject_CallObject(mro, NULL);
-        Py_DECREF(mro);
-    }
-    if (result == NULL)
-        return -1;
-    tuple = PySequence_Tuple(result);
-    Py_DECREF(result);
-    if (tuple == NULL)
-        return -1;
-    if (checkit) {
-        Py_ssize_t i, len;
-        PyObject *cls;
-        PyTypeObject *solid;
-
-        solid = solid_base(type);
-
-        len = PyTuple_GET_SIZE(tuple);
-
-        for (i = 0; i < len; i++) {
-            PyTypeObject *t;
-            cls = PyTuple_GET_ITEM(tuple, i);
-            if (PyClass_Check(cls))
-                continue;
-            else if (!PyType_Check(cls)) {
-                PyErr_Format(PyExc_TypeError,
-                 "mro() returned a non-class ('%.500s')",
-                                 Py_TYPE(cls)->tp_name);
-                Py_DECREF(tuple);
-                return -1;
-            }
-            t = (PyTypeObject*)cls;
-            if (!PyType_IsSubtype(solid, solid_base(t))) {
-                PyErr_Format(PyExc_TypeError,
-             "mro() returned base with unsuitable layout ('%.500s')",
-                                     t->tp_name);
-                        Py_DECREF(tuple);
-                        return -1;
-            }
-        }
-    }
-    type->tp_mro = tuple;
-
-    type_mro_modified(type, type->tp_mro);
-    /* corner case: the old-style super class might have been hidden
-       from the custom MRO */
-    type_mro_modified(type, type->tp_bases);
-
-    PyType_Modified(type);
-
-    return 0;
-}
-
-
-/* Calculate the best base amongst multiple base classes.
-   This is the first one that's on the path to the "solid base". */
-
-static PyTypeObject *
-best_base(PyObject *bases)
-{
-    Py_ssize_t i, n;
-    PyTypeObject *base, *winner, *candidate, *base_i;
-    PyObject *base_proto;
-
-    assert(PyTuple_Check(bases));
-    n = PyTuple_GET_SIZE(bases);
-    assert(n > 0);
-    base = NULL;
-    winner = NULL;
-    for (i = 0; i < n; i++) {
-        base_proto = PyTuple_GET_ITEM(bases, i);
-        if (PyClass_Check(base_proto))
-            continue;
-        if (!PyType_Check(base_proto)) {
-            PyErr_SetString(
-                PyExc_TypeError,
-                "bases must be types");
-            return NULL;
-        }
-        base_i = (PyTypeObject *)base_proto;
-        if (base_i->tp_dict == NULL) {
-            if (PyType_Ready(base_i) < 0)
-                return NULL;
-        }
-        candidate = solid_base(base_i);
-        if (winner == NULL) {
-            winner = candidate;
-            base = base_i;
-        }
-        else if (PyType_IsSubtype(winner, candidate))
-            ;
-        else if (PyType_IsSubtype(candidate, winner)) {
-            winner = candidate;
-            base = base_i;
-        }
-        else {
-            PyErr_SetString(
-                PyExc_TypeError,
-                "multiple bases have "
-                "instance lay-out conflict");
-            return NULL;
-        }
-    }
-    if (base == NULL)
-        PyErr_SetString(PyExc_TypeError,
-            "a new-style class can't have only classic bases");
-    return base;
-}
-
-static int
-extra_ivars(PyTypeObject *type, PyTypeObject *base)
-{
-    size_t t_size = type->tp_basicsize;
-    size_t b_size = base->tp_basicsize;
-
-    assert(t_size >= b_size); /* Else type smaller than base! */
-    if (type->tp_itemsize || base->tp_itemsize) {
-        /* If itemsize is involved, stricter rules */
-        return t_size != b_size ||
-            type->tp_itemsize != base->tp_itemsize;
-    }
-    if (type->tp_weaklistoffset && base->tp_weaklistoffset == 0 &&
-        type->tp_weaklistoffset + sizeof(PyObject *) == t_size &&
-        type->tp_flags & Py_TPFLAGS_HEAPTYPE)
-        t_size -= sizeof(PyObject *);
-    if (type->tp_dictoffset && base->tp_dictoffset == 0 &&
-        type->tp_dictoffset + sizeof(PyObject *) == t_size &&
-        type->tp_flags & Py_TPFLAGS_HEAPTYPE)
-        t_size -= sizeof(PyObject *);
-
-    return t_size != b_size;
-}
-
-static PyTypeObject *
-solid_base(PyTypeObject *type)
-{
-    PyTypeObject *base;
-
-    if (type->tp_base)
-        base = solid_base(type->tp_base);
-    else
-        base = &PyBaseObject_Type;
-    if (extra_ivars(type, base))
-        return type;
-    else
-        return base;
-}
-
-static void object_dealloc(PyObject *);
-static int object_init(PyObject *, PyObject *, PyObject *);
-static int update_slot(PyTypeObject *, PyObject *);
-static void fixup_slot_dispatchers(PyTypeObject *);
-
-/*
- * Helpers for  __dict__ descriptor.  We don't want to expose the dicts
- * inherited from various builtin types.  The builtin base usually provides
- * its own __dict__ descriptor, so we use that when we can.
- */
-static PyTypeObject *
-get_builtin_base_with_dict(PyTypeObject *type)
-{
-    while (type->tp_base != NULL) {
-        if (type->tp_dictoffset != 0 &&
-            !(type->tp_flags & Py_TPFLAGS_HEAPTYPE))
-            return type;
-        type = type->tp_base;
-    }
-    return NULL;
-}
-
-static PyObject *
-get_dict_descriptor(PyTypeObject *type)
-{
-    static PyObject *dict_str;
-    PyObject *descr;
-
-    if (dict_str == NULL) {
-        dict_str = PyString_InternFromString("__dict__");
-        if (dict_str == NULL)
-            return NULL;
-    }
-    descr = _PyType_Lookup(type, dict_str);
-    if (descr == NULL || !PyDescr_IsData(descr))
-        return NULL;
-
-    return descr;
-}
-
-static void
-raise_dict_descr_error(PyObject *obj)
-{
-    PyErr_Format(PyExc_TypeError,
-                 "this __dict__ descriptor does not support "
-                 "'%.200s' objects", obj->ob_type->tp_name);
-}
-
-static PyObject *
-subtype_dict(PyObject *obj, void *context)
-{
-    PyObject **dictptr;
-    PyObject *dict;
-    PyTypeObject *base;
-
-    base = get_builtin_base_with_dict(obj->ob_type);
-    if (base != NULL) {
-        descrgetfunc func;
-        PyObject *descr = get_dict_descriptor(base);
-        if (descr == NULL) {
-            raise_dict_descr_error(obj);
-            return NULL;
-        }
-        func = descr->ob_type->tp_descr_get;
-        if (func == NULL) {
-            raise_dict_descr_error(obj);
-            return NULL;
-        }
-        return func(descr, obj, (PyObject *)(obj->ob_type));
-    }
-
-    dictptr = _PyObject_GetDictPtr(obj);
-    if (dictptr == NULL) {
-        PyErr_SetString(PyExc_AttributeError,
-                        "This object has no __dict__");
-        return NULL;
-    }
-    dict = *dictptr;
-    if (dict == NULL)
-        *dictptr = dict = PyDict_New();
-    Py_XINCREF(dict);
-    return dict;
-}
-
-static int
-subtype_setdict(PyObject *obj, PyObject *value, void *context)
-{
-    PyObject **dictptr;
-    PyObject *dict;
-    PyTypeObject *base;
-
-    base = get_builtin_base_with_dict(obj->ob_type);
-    if (base != NULL) {
-        descrsetfunc func;
-        PyObject *descr = get_dict_descriptor(base);
-        if (descr == NULL) {
-            raise_dict_descr_error(obj);
-            return -1;
-        }
-        func = descr->ob_type->tp_descr_set;
-        if (func == NULL) {
-            raise_dict_descr_error(obj);
-            return -1;
-        }
-        return func(descr, obj, value);
-    }
-
-    dictptr = _PyObject_GetDictPtr(obj);
-    if (dictptr == NULL) {
-        PyErr_SetString(PyExc_AttributeError,
-                        "This object has no __dict__");
-        return -1;
-    }
-    if (value != NULL && !PyDict_Check(value)) {
-        PyErr_Format(PyExc_TypeError,
-                     "__dict__ must be set to a dictionary, "
-                     "not a '%.200s'", Py_TYPE(value)->tp_name);
-        return -1;
-    }
-    dict = *dictptr;
-    Py_XINCREF(value);
-    *dictptr = value;
-    Py_XDECREF(dict);
-    return 0;
-}
-
-static PyObject *
-subtype_getweakref(PyObject *obj, void *context)
-{
-    PyObject **weaklistptr;
-    PyObject *result;
-
-    if (Py_TYPE(obj)->tp_weaklistoffset == 0) {
-        PyErr_SetString(PyExc_AttributeError,
-                        "This object has no __weakref__");
-        return NULL;
-    }
-    assert(Py_TYPE(obj)->tp_weaklistoffset > 0);
-    assert(Py_TYPE(obj)->tp_weaklistoffset + sizeof(PyObject *) <=
-           (size_t)(Py_TYPE(obj)->tp_basicsize));
-    weaklistptr = (PyObject **)
-        ((char *)obj + Py_TYPE(obj)->tp_weaklistoffset);
-    if (*weaklistptr == NULL)
-        result = Py_None;
-    else
-        result = *weaklistptr;
-    Py_INCREF(result);
-    return result;
-}
-
-/* Three variants on the subtype_getsets list. */
-
-static PyGetSetDef subtype_getsets_full[] = {
-    {"__dict__", subtype_dict, subtype_setdict,
-     PyDoc_STR("dictionary for instance variables (if defined)")},
-    {"__weakref__", subtype_getweakref, NULL,
-     PyDoc_STR("list of weak references to the object (if defined)")},
-    {0}
-};
-
-static PyGetSetDef subtype_getsets_dict_only[] = {
-    {"__dict__", subtype_dict, subtype_setdict,
-     PyDoc_STR("dictionary for instance variables (if defined)")},
-    {0}
-};
-
-static PyGetSetDef subtype_getsets_weakref_only[] = {
-    {"__weakref__", subtype_getweakref, NULL,
-     PyDoc_STR("list of weak references to the object (if defined)")},
-    {0}
-};
-
-static int
-valid_identifier(PyObject *s)
-{
-    unsigned char *p;
-    Py_ssize_t i, n;
-
-    if (!PyString_Check(s)) {
-        PyErr_Format(PyExc_TypeError,
-                     "__slots__ items must be strings, not '%.200s'",
-                     Py_TYPE(s)->tp_name);
-        return 0;
-    }
-    p = (unsigned char *) PyString_AS_STRING(s);
-    n = PyString_GET_SIZE(s);
-    /* We must reject an empty name.  As a hack, we bump the
-       length to 1 so that the loop will balk on the trailing \0. */
-    if (n == 0)
-        n = 1;
-    for (i = 0; i < n; i++, p++) {
-        if (!(i == 0 ? isalpha(*p) : isalnum(*p)) && *p != '_') {
-            PyErr_SetString(PyExc_TypeError,
-                            "__slots__ must be identifiers");
-            return 0;
-        }
-    }
-    return 1;
-}
-
-#ifdef Py_USING_UNICODE
-/* Replace Unicode objects in slots.  */
-
-static PyObject *
-_unicode_to_string(PyObject *slots, Py_ssize_t nslots)
-{
-    PyObject *tmp = NULL;
-    PyObject *slot_name, *new_name;
-    Py_ssize_t i;
-
-    for (i = 0; i < nslots; i++) {
-        if (PyUnicode_Check(slot_name = PyTuple_GET_ITEM(slots, i))) {
-            if (tmp == NULL) {
-                tmp = PySequence_List(slots);
-                if (tmp == NULL)
-                    return NULL;
-            }
-            new_name = _PyUnicode_AsDefaultEncodedString(slot_name,
-                                                         NULL);
-            if (new_name == NULL) {
-                Py_DECREF(tmp);
-                return NULL;
-            }
-            Py_INCREF(new_name);
-            PyList_SET_ITEM(tmp, i, new_name);
-            Py_DECREF(slot_name);
-        }
-    }
-    if (tmp != NULL) {
-        slots = PyList_AsTuple(tmp);
-        Py_DECREF(tmp);
-    }
-    return slots;
-}
-#endif
-
-/* Forward */
-static int
-object_init(PyObject *self, PyObject *args, PyObject *kwds);
-
-static int
-type_init(PyObject *cls, PyObject *args, PyObject *kwds)
-{
-    int res;
-
-    assert(args != NULL && PyTuple_Check(args));
-    assert(kwds == NULL || PyDict_Check(kwds));
-
-    if (kwds != NULL && PyDict_Check(kwds) && PyDict_Size(kwds) != 0) {
-        PyErr_SetString(PyExc_TypeError,
-                        "type.__init__() takes no keyword arguments");
-        return -1;
-    }
-
-    if (args != NULL && PyTuple_Check(args) &&
-        (PyTuple_GET_SIZE(args) != 1 && PyTuple_GET_SIZE(args) != 3)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "type.__init__() takes 1 or 3 arguments");
-        return -1;
-    }
-
-    /* Call object.__init__(self) now. */
-    /* XXX Could call super(type, cls).__init__() but what's the point? */
-    args = PyTuple_GetSlice(args, 0, 0);
-    res = object_init(cls, args, NULL);
-    Py_DECREF(args);
-    return res;
-}
-
-static PyObject *
-type_new(PyTypeObject *metatype, PyObject *args, PyObject *kwds)
-{
-    PyObject *name, *bases, *dict;
-    static char *kwlist[] = {"name", "bases", "dict", 0};
-    PyObject *slots, *tmp, *newslots;
-    PyTypeObject *type, *base, *tmptype, *winner;
-    PyHeapTypeObject *et;
-    PyMemberDef *mp;
-    Py_ssize_t i, nbases, nslots, slotoffset, add_dict, add_weak;
-    int j, may_add_dict, may_add_weak;
-
-    assert(args != NULL && PyTuple_Check(args));
-    assert(kwds == NULL || PyDict_Check(kwds));
-
-    /* Special case: type(x) should return x->ob_type */
-    {
-        const Py_ssize_t nargs = PyTuple_GET_SIZE(args);
-        const Py_ssize_t nkwds = kwds == NULL ? 0 : PyDict_Size(kwds);
-
-        if (PyType_CheckExact(metatype) && nargs == 1 && nkwds == 0) {
-            PyObject *x = PyTuple_GET_ITEM(args, 0);
-            Py_INCREF(Py_TYPE(x));
-            return (PyObject *) Py_TYPE(x);
-        }
-
-        /* SF bug 475327 -- if that didn't trigger, we need 3
-           arguments. but PyArg_ParseTupleAndKeywords below may give
-           a msg saying type() needs exactly 3. */
-        if (nargs + nkwds != 3) {
-            PyErr_SetString(PyExc_TypeError,
-                            "type() takes 1 or 3 arguments");
-            return NULL;
-        }
-    }
-
-    /* Check arguments: (name, bases, dict) */
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "SO!O!:type", kwlist,
-                                     &name,
-                                     &PyTuple_Type, &bases,
-                                     &PyDict_Type, &dict))
-        return NULL;
-
-    /* Determine the proper metatype to deal with this,
-       and check for metatype conflicts while we're at it.
-       Note that if some other metatype wins to contract,
-       it's possible that its instances are not types. */
-    nbases = PyTuple_GET_SIZE(bases);
-    winner = metatype;
-    for (i = 0; i < nbases; i++) {
-        tmp = PyTuple_GET_ITEM(bases, i);
-        tmptype = tmp->ob_type;
-        if (tmptype == &PyClass_Type)
-            continue; /* Special case classic classes */
-        if (PyType_IsSubtype(winner, tmptype))
-            continue;
-        if (PyType_IsSubtype(tmptype, winner)) {
-            winner = tmptype;
-            continue;
-        }
-        PyErr_SetString(PyExc_TypeError,
-                        "metaclass conflict: "
-                        "the metaclass of a derived class "
-                        "must be a (non-strict) subclass "
-                        "of the metaclasses of all its bases");
-        return NULL;
-    }
-    if (winner != metatype) {
-        if (winner->tp_new != type_new) /* Pass it to the winner */
-            return winner->tp_new(winner, args, kwds);
-        metatype = winner;
-    }
-
-    /* Adjust for empty tuple bases */
-    if (nbases == 0) {
-        bases = PyTuple_Pack(1, &PyBaseObject_Type);
-        if (bases == NULL)
-            return NULL;
-        nbases = 1;
-    }
-    else
-        Py_INCREF(bases);
-
-    /* XXX From here until type is allocated, "return NULL" leaks bases! */
-
-    /* Calculate best base, and check that all bases are type objects */
-    base = best_base(bases);
-    if (base == NULL) {
-        Py_DECREF(bases);
-        return NULL;
-    }
-    if (!PyType_HasFeature(base, Py_TPFLAGS_BASETYPE)) {
-        PyErr_Format(PyExc_TypeError,
-                     "type '%.100s' is not an acceptable base type",
-                     base->tp_name);
-        Py_DECREF(bases);
-        return NULL;
-    }
-
-    /* Check for a __slots__ sequence variable in dict, and count it */
-    slots = PyDict_GetItemString(dict, "__slots__");
-    nslots = 0;
-    add_dict = 0;
-    add_weak = 0;
-    may_add_dict = base->tp_dictoffset == 0;
-    may_add_weak = base->tp_weaklistoffset == 0 && base->tp_itemsize == 0;
-    if (slots == NULL) {
-        if (may_add_dict) {
-            add_dict++;
-        }
-        if (may_add_weak) {
-            add_weak++;
-        }
-    }
-    else {
-        /* Have slots */
-
-        /* Make it into a tuple */
-        if (PyString_Check(slots) || PyUnicode_Check(slots))
-            slots = PyTuple_Pack(1, slots);
-        else
-            slots = PySequence_Tuple(slots);
-        if (slots == NULL) {
-            Py_DECREF(bases);
-            return NULL;
-        }
-        assert(PyTuple_Check(slots));
-
-        /* Are slots allowed? */
-        nslots = PyTuple_GET_SIZE(slots);
-        if (nslots > 0 && base->tp_itemsize != 0) {
-            PyErr_Format(PyExc_TypeError,
-                         "nonempty __slots__ "
-                         "not supported for subtype of '%s'",
-                         base->tp_name);
-          bad_slots:
-            Py_DECREF(bases);
-            Py_DECREF(slots);
-            return NULL;
-        }
-
-#ifdef Py_USING_UNICODE
-        tmp = _unicode_to_string(slots, nslots);
-        if (tmp == NULL)
-            goto bad_slots;
-        if (tmp != slots) {
-            Py_DECREF(slots);
-            slots = tmp;
-        }
-#endif
-        /* Check for valid slot names and two special cases */
-        for (i = 0; i < nslots; i++) {
-            PyObject *tmp = PyTuple_GET_ITEM(slots, i);
-            char *s;
-            if (!valid_identifier(tmp))
-                goto bad_slots;
-            assert(PyString_Check(tmp));
-            s = PyString_AS_STRING(tmp);
-            if (strcmp(s, "__dict__") == 0) {
-                if (!may_add_dict || add_dict) {
-                    PyErr_SetString(PyExc_TypeError,
-                        "__dict__ slot disallowed: "
-                        "we already got one");
-                    goto bad_slots;
-                }
-                add_dict++;
-            }
-            if (strcmp(s, "__weakref__") == 0) {
-                if (!may_add_weak || add_weak) {
-                    PyErr_SetString(PyExc_TypeError,
-                        "__weakref__ slot disallowed: "
-                        "either we already got one, "
-                        "or __itemsize__ != 0");
-                    goto bad_slots;
-                }
-                add_weak++;
-            }
-        }
-
-        /* Copy slots into a list, mangle names and sort them.
-           Sorted names are needed for __class__ assignment.
-           Convert them back to tuple at the end.
-        */
-        newslots = PyList_New(nslots - add_dict - add_weak);
-        if (newslots == NULL)
-            goto bad_slots;
-        for (i = j = 0; i < nslots; i++) {
-            char *s;
-            tmp = PyTuple_GET_ITEM(slots, i);
-            s = PyString_AS_STRING(tmp);
-            if ((add_dict && strcmp(s, "__dict__") == 0) ||
-                (add_weak && strcmp(s, "__weakref__") == 0))
-                continue;
-            tmp =_Py_Mangle(name, tmp);
-            if (!tmp)
-                goto bad_slots;
-            PyList_SET_ITEM(newslots, j, tmp);
-            j++;
-        }
-        assert(j == nslots - add_dict - add_weak);
-        nslots = j;
-        Py_DECREF(slots);
-        if (PyList_Sort(newslots) == -1) {
-            Py_DECREF(bases);
-            Py_DECREF(newslots);
-            return NULL;
-        }
-        slots = PyList_AsTuple(newslots);
-        Py_DECREF(newslots);
-        if (slots == NULL) {
-            Py_DECREF(bases);
-            return NULL;
-        }
-
-        /* Secondary bases may provide weakrefs or dict */
-        if (nbases > 1 &&
-            ((may_add_dict && !add_dict) ||
-             (may_add_weak && !add_weak))) {
-            for (i = 0; i < nbases; i++) {
-                tmp = PyTuple_GET_ITEM(bases, i);
-                if (tmp == (PyObject *)base)
-                    continue; /* Skip primary base */
-                if (PyClass_Check(tmp)) {
-                    /* Classic base class provides both */
-                    if (may_add_dict && !add_dict)
-                        add_dict++;
-                    if (may_add_weak && !add_weak)
-                        add_weak++;
-                    break;
-                }
-                assert(PyType_Check(tmp));
-                tmptype = (PyTypeObject *)tmp;
-                if (may_add_dict && !add_dict &&
-                    tmptype->tp_dictoffset != 0)
-                    add_dict++;
-                if (may_add_weak && !add_weak &&
-                    tmptype->tp_weaklistoffset != 0)
-                    add_weak++;
-                if (may_add_dict && !add_dict)
-                    continue;
-                if (may_add_weak && !add_weak)
-                    continue;
-                /* Nothing more to check */
-                break;
-            }
-        }
-    }
-
-    /* XXX From here until type is safely allocated,
-       "return NULL" may leak slots! */
-
-    /* Allocate the type object */
-    type = (PyTypeObject *)metatype->tp_alloc(metatype, nslots);
-    if (type == NULL) {
-        Py_XDECREF(slots);
-        Py_DECREF(bases);
-        return NULL;
-    }
-
-    /* Keep name and slots alive in the extended type object */
-    et = (PyHeapTypeObject *)type;
-    Py_INCREF(name);
-    et->ht_name = name;
-    et->ht_slots = slots;
-
-    /* Initialize tp_flags */
-    type->tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HEAPTYPE |
-        Py_TPFLAGS_BASETYPE;
-    if (base->tp_flags & Py_TPFLAGS_HAVE_GC)
-        type->tp_flags |= Py_TPFLAGS_HAVE_GC;
-    if (base->tp_flags & Py_TPFLAGS_HAVE_NEWBUFFER)
-        type->tp_flags |= Py_TPFLAGS_HAVE_NEWBUFFER;
-
-    /* It's a new-style number unless it specifically inherits any
-       old-style numeric behavior */
-    if ((base->tp_flags & Py_TPFLAGS_CHECKTYPES) ||
-        (base->tp_as_number == NULL))
-        type->tp_flags |= Py_TPFLAGS_CHECKTYPES;
-
-    /* Initialize essential fields */
-    type->tp_as_number = &et->as_number;
-    type->tp_as_sequence = &et->as_sequence;
-    type->tp_as_mapping = &et->as_mapping;
-    type->tp_as_buffer = &et->as_buffer;
-    type->tp_name = PyString_AS_STRING(name);
-
-    /* Set tp_base and tp_bases */
-    type->tp_bases = bases;
-    Py_INCREF(base);
-    type->tp_base = base;
-
-    /* Initialize tp_dict from passed-in dict */
-    type->tp_dict = dict = PyDict_Copy(dict);
-    if (dict == NULL) {
-        Py_DECREF(type);
-        return NULL;
-    }
-
-    /* Set __module__ in the dict */
-    if (PyDict_GetItemString(dict, "__module__") == NULL) {
-        tmp = PyEval_GetGlobals();
-        if (tmp != NULL) {
-            tmp = PyDict_GetItemString(tmp, "__name__");
-            if (tmp != NULL) {
-                if (PyDict_SetItemString(dict, "__module__",
-                                         tmp) < 0)
-                    return NULL;
-            }
-        }
-    }
-
-    /* Set tp_doc to a copy of dict['__doc__'], if the latter is there
-       and is a string.  The __doc__ accessor will first look for tp_doc;
-       if that fails, it will still look into __dict__.
-    */
-    {
-        PyObject *doc = PyDict_GetItemString(dict, "__doc__");
-        if (doc != NULL && PyString_Check(doc)) {
-            const size_t n = (size_t)PyString_GET_SIZE(doc);
-            char *tp_doc = (char *)PyObject_MALLOC(n+1);
-            if (tp_doc == NULL) {
-                Py_DECREF(type);
-                return NULL;
-            }
-            memcpy(tp_doc, PyString_AS_STRING(doc), n+1);
-            type->tp_doc = tp_doc;
-        }
-    }
-
-    /* Special-case __new__: if it's a plain function,
-       make it a static function */
-    tmp = PyDict_GetItemString(dict, "__new__");
-    if (tmp != NULL && PyFunction_Check(tmp)) {
-        tmp = PyStaticMethod_New(tmp);
-        if (tmp == NULL) {
-            Py_DECREF(type);
-            return NULL;
-        }
-        PyDict_SetItemString(dict, "__new__", tmp);
-        Py_DECREF(tmp);
-    }
-
-    /* Add descriptors for custom slots from __slots__, or for __dict__ */
-    mp = PyHeapType_GET_MEMBERS(et);
-    slotoffset = base->tp_basicsize;
-    if (slots != NULL) {
-        for (i = 0; i < nslots; i++, mp++) {
-            mp->name = PyString_AS_STRING(
-                PyTuple_GET_ITEM(slots, i));
-            mp->type = T_OBJECT_EX;
-            mp->offset = slotoffset;
-
-            /* __dict__ and __weakref__ are already filtered out */
-            assert(strcmp(mp->name, "__dict__") != 0);
-            assert(strcmp(mp->name, "__weakref__") != 0);
-
-            slotoffset += sizeof(PyObject *);
-        }
-    }
-    if (add_dict) {
-        if (base->tp_itemsize)
-            type->tp_dictoffset = -(long)sizeof(PyObject *);
-        else
-            type->tp_dictoffset = slotoffset;
-        slotoffset += sizeof(PyObject *);
-    }
-    if (add_weak) {
-        assert(!base->tp_itemsize);
-        type->tp_weaklistoffset = slotoffset;
-        slotoffset += sizeof(PyObject *);
-    }
-    type->tp_basicsize = slotoffset;
-    type->tp_itemsize = base->tp_itemsize;
-    type->tp_members = PyHeapType_GET_MEMBERS(et);
-
-    if (type->tp_weaklistoffset && type->tp_dictoffset)
-        type->tp_getset = subtype_getsets_full;
-    else if (type->tp_weaklistoffset && !type->tp_dictoffset)
-        type->tp_getset = subtype_getsets_weakref_only;
-    else if (!type->tp_weaklistoffset && type->tp_dictoffset)
-        type->tp_getset = subtype_getsets_dict_only;
-    else
-        type->tp_getset = NULL;
-
-    /* Special case some slots */
-    if (type->tp_dictoffset != 0 || nslots > 0) {
-        if (base->tp_getattr == NULL && base->tp_getattro == NULL)
-            type->tp_getattro = PyObject_GenericGetAttr;
-        if (base->tp_setattr == NULL && base->tp_setattro == NULL)
-            type->tp_setattro = PyObject_GenericSetAttr;
-    }
-    type->tp_dealloc = subtype_dealloc;
-
-    /* Enable GC unless there are really no instance variables possible */
-    if (!(type->tp_basicsize == sizeof(PyObject) &&
-          type->tp_itemsize == 0))
-        type->tp_flags |= Py_TPFLAGS_HAVE_GC;
-
-    /* Always override allocation strategy to use regular heap */
-    type->tp_alloc = PyType_GenericAlloc;
-    if (type->tp_flags & Py_TPFLAGS_HAVE_GC) {
-        type->tp_free = PyObject_GC_Del;
-        type->tp_traverse = subtype_traverse;
-        type->tp_clear = subtype_clear;
-    }
-    else
-        type->tp_free = PyObject_Del;
-
-    /* Initialize the rest */
-    if (PyType_Ready(type) < 0) {
-        Py_DECREF(type);
-        return NULL;
-    }
-
-    /* Put the proper slots in place */
-    fixup_slot_dispatchers(type);
-
-    return (PyObject *)type;
-}
-
-/* Internal API to look for a name through the MRO.
-   This returns a borrowed reference, and doesn't set an exception! */
-PyObject *
-_PyType_Lookup(PyTypeObject *type, PyObject *name)
-{
-    Py_ssize_t i, n;
-    PyObject *mro, *res, *base, *dict;
-    unsigned int h;
-
-    if (MCACHE_CACHEABLE_NAME(name) &&
-        PyType_HasFeature(type, Py_TPFLAGS_VALID_VERSION_TAG)) {
-        /* fast path */
-        h = MCACHE_HASH_METHOD(type, name);
-        if (method_cache[h].version == type->tp_version_tag &&
-            method_cache[h].name == name)
-            return method_cache[h].value;
-    }
-
-    /* Look in tp_dict of types in MRO */
-    mro = type->tp_mro;
-
-    /* If mro is NULL, the type is either not yet initialized
-       by PyType_Ready(), or already cleared by type_clear().
-       Either way the safest thing to do is to return NULL. */
-    if (mro == NULL)
-        return NULL;
-
-    res = NULL;
-    assert(PyTuple_Check(mro));
-    n = PyTuple_GET_SIZE(mro);
-    for (i = 0; i < n; i++) {
-        base = PyTuple_GET_ITEM(mro, i);
-        if (PyClass_Check(base))
-            dict = ((PyClassObject *)base)->cl_dict;
-        else {
-            assert(PyType_Check(base));
-            dict = ((PyTypeObject *)base)->tp_dict;
-        }
-        assert(dict && PyDict_Check(dict));
-        res = PyDict_GetItem(dict, name);
-        if (res != NULL)
-            break;
-    }
-
-    if (MCACHE_CACHEABLE_NAME(name) && assign_version_tag(type)) {
-        h = MCACHE_HASH_METHOD(type, name);
-        method_cache[h].version = type->tp_version_tag;
-        method_cache[h].value = res;  /* borrowed */
-        Py_INCREF(name);
-        Py_DECREF(method_cache[h].name);
-        method_cache[h].name = name;
-    }
-    return res;
-}
-
-/* This is similar to PyObject_GenericGetAttr(),
-   but uses _PyType_Lookup() instead of just looking in type->tp_dict. */
-static PyObject *
-type_getattro(PyTypeObject *type, PyObject *name)
-{
-    PyTypeObject *metatype = Py_TYPE(type);
-    PyObject *meta_attribute, *attribute;
-    descrgetfunc meta_get;
-
-    /* Initialize this type (we'll assume the metatype is initialized) */
-    if (type->tp_dict == NULL) {
-        if (PyType_Ready(type) < 0)
-            return NULL;
-    }
-
-    /* No readable descriptor found yet */
-    meta_get = NULL;
-
-    /* Look for the attribute in the metatype */
-    meta_attribute = _PyType_Lookup(metatype, name);
-
-    if (meta_attribute != NULL) {
-        meta_get = Py_TYPE(meta_attribute)->tp_descr_get;
-
-        if (meta_get != NULL && PyDescr_IsData(meta_attribute)) {
-            /* Data descriptors implement tp_descr_set to intercept
-             * writes. Assume the attribute is not overridden in
-             * type's tp_dict (and bases): call the descriptor now.
-             */
-            return meta_get(meta_attribute, (PyObject *)type,
-                            (PyObject *)metatype);
-        }
-        Py_INCREF(meta_attribute);
-    }
-
-    /* No data descriptor found on metatype. Look in tp_dict of this
-     * type and its bases */
-    attribute = _PyType_Lookup(type, name);
-    if (attribute != NULL) {
-        /* Implement descriptor functionality, if any */
-        descrgetfunc local_get = Py_TYPE(attribute)->tp_descr_get;
-
-        Py_XDECREF(meta_attribute);
-
-        if (local_get != NULL) {
-            /* NULL 2nd argument indicates the descriptor was
-             * found on the target object itself (or a base)  */
-            return local_get(attribute, (PyObject *)NULL,
-                             (PyObject *)type);
-        }
-
-        Py_INCREF(attribute);
-        return attribute;
-    }
-
-    /* No attribute found in local __dict__ (or bases): use the
-     * descriptor from the metatype, if any */
-    if (meta_get != NULL) {
-        PyObject *res;
-        res = meta_get(meta_attribute, (PyObject *)type,
-                       (PyObject *)metatype);
-        Py_DECREF(meta_attribute);
-        return res;
-    }
-
-    /* If an ordinary attribute was found on the metatype, return it now */
-    if (meta_attribute != NULL) {
-        return meta_attribute;
-    }
-
-    /* Give up */
-    PyErr_Format(PyExc_AttributeError,
-                     "type object '%.50s' has no attribute '%.400s'",
-                     type->tp_name, PyString_AS_STRING(name));
-    return NULL;
-}
-
-static int
-type_setattro(PyTypeObject *type, PyObject *name, PyObject *value)
-{
-    if (!(type->tp_flags & Py_TPFLAGS_HEAPTYPE)) {
-        PyErr_Format(
-            PyExc_TypeError,
-            "can't set attributes of built-in/extension type '%s'",
-            type->tp_name);
-        return -1;
-    }
-    if (PyObject_GenericSetAttr((PyObject *)type, name, value) < 0)
-        return -1;
-    return update_slot(type, name);
-}
-
-static void
-type_dealloc(PyTypeObject *type)
-{
-    PyHeapTypeObject *et;
-
-    /* Assert this is a heap-allocated type object */
-    assert(type->tp_flags & Py_TPFLAGS_HEAPTYPE);
-    _PyObject_GC_UNTRACK(type);
-    PyObject_ClearWeakRefs((PyObject *)type);
-    et = (PyHeapTypeObject *)type;
-    Py_XDECREF(type->tp_base);
-    Py_XDECREF(type->tp_dict);
-    Py_XDECREF(type->tp_bases);
-    Py_XDECREF(type->tp_mro);
-    Py_XDECREF(type->tp_cache);
-    Py_XDECREF(type->tp_subclasses);
-    /* A type's tp_doc is heap allocated, unlike the tp_doc slots
-     * of most other objects.  It's okay to cast it to char *.
-     */
-    PyObject_Free((char *)type->tp_doc);
-    Py_XDECREF(et->ht_name);
-    Py_XDECREF(et->ht_slots);
-    Py_TYPE(type)->tp_free((PyObject *)type);
-}
-
-static PyObject *
-type_subclasses(PyTypeObject *type, PyObject *args_ignored)
-{
-    PyObject *list, *raw, *ref;
-    Py_ssize_t i, n;
-
-    list = PyList_New(0);
-    if (list == NULL)
-        return NULL;
-    raw = type->tp_subclasses;
-    if (raw == NULL)
-        return list;
-    assert(PyList_Check(raw));
-    n = PyList_GET_SIZE(raw);
-    for (i = 0; i < n; i++) {
-        ref = PyList_GET_ITEM(raw, i);
-        assert(PyWeakref_CheckRef(ref));
-        ref = PyWeakref_GET_OBJECT(ref);
-        if (ref != Py_None) {
-            if (PyList_Append(list, ref) < 0) {
-                Py_DECREF(list);
-                return NULL;
-            }
-        }
-    }
-    return list;
-}
-
-static PyMethodDef type_methods[] = {
-    {"mro", (PyCFunction)mro_external, METH_NOARGS,
-     PyDoc_STR("mro() -> list\nreturn a type's method resolution order")},
-    {"__subclasses__", (PyCFunction)type_subclasses, METH_NOARGS,
-     PyDoc_STR("__subclasses__() -> list of immediate subclasses")},
-    {"__instancecheck__", type___instancecheck__, METH_O,
-     PyDoc_STR("__instancecheck__() -> bool\ncheck if an object is an instance")},
-    {"__subclasscheck__", type___subclasscheck__, METH_O,
-     PyDoc_STR("__subclasscheck__() -> bool\ncheck if a class is a subclass")},
-    {0}
-};
-
-PyDoc_STRVAR(type_doc,
-"type(object) -> the object's type\n"
-"type(name, bases, dict) -> a new type");
-
-static int
-type_traverse(PyTypeObject *type, visitproc visit, void *arg)
-{
-    /* Because of type_is_gc(), the collector only calls this
-       for heaptypes. */
-    assert(type->tp_flags & Py_TPFLAGS_HEAPTYPE);
-
-    Py_VISIT(type->tp_dict);
-    Py_VISIT(type->tp_cache);
-    Py_VISIT(type->tp_mro);
-    Py_VISIT(type->tp_bases);
-    Py_VISIT(type->tp_base);
-
-    /* There's no need to visit type->tp_subclasses or
-       ((PyHeapTypeObject *)type)->ht_slots, because they can't be involved
-       in cycles; tp_subclasses is a list of weak references,
-       and slots is a tuple of strings. */
-
-    return 0;
-}
-
-static int
-type_clear(PyTypeObject *type)
-{
-    /* Because of type_is_gc(), the collector only calls this
-       for heaptypes. */
-    assert(type->tp_flags & Py_TPFLAGS_HEAPTYPE);
-
-    /* The only field we need to clear is tp_mro, which is part of a
-       hard cycle (its first element is the class itself) that won't
-       be broken otherwise (it's a tuple and tuples don't have a
-       tp_clear handler).  None of the other fields need to be
-       cleared, and here's why:
-
-       tp_dict:
-           It is a dict, so the collector will call its tp_clear.
-
-       tp_cache:
-           Not used; if it were, it would be a dict.
-
-       tp_bases, tp_base:
-           If these are involved in a cycle, there must be at least
-           one other, mutable object in the cycle, e.g. a base
-           class's dict; the cycle will be broken that way.
-
-       tp_subclasses:
-           A list of weak references can't be part of a cycle; and
-           lists have their own tp_clear.
-
-       slots (in PyHeapTypeObject):
-           A tuple of strings can't be part of a cycle.
-    */
-
-    Py_CLEAR(type->tp_mro);
-
-    return 0;
-}
-
-static int
-type_is_gc(PyTypeObject *type)
-{
-    return type->tp_flags & Py_TPFLAGS_HEAPTYPE;
-}
-
-PyTypeObject PyType_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "type",                                     /* tp_name */
-    sizeof(PyHeapTypeObject),                   /* tp_basicsize */
-    sizeof(PyMemberDef),                        /* tp_itemsize */
-    (destructor)type_dealloc,                   /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                  /* tp_compare */
-    (reprfunc)type_repr,                        /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    (hashfunc)_Py_HashPointer,                  /* tp_hash */
-    (ternaryfunc)type_call,                     /* tp_call */
-    0,                                          /* tp_str */
-    (getattrofunc)type_getattro,                /* tp_getattro */
-    (setattrofunc)type_setattro,                /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE | Py_TPFLAGS_TYPE_SUBCLASS,         /* tp_flags */
-    type_doc,                                   /* tp_doc */
-    (traverseproc)type_traverse,                /* tp_traverse */
-    (inquiry)type_clear,                        /* tp_clear */
-    type_richcompare,                                           /* tp_richcompare */
-    offsetof(PyTypeObject, tp_weaklist),        /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    type_methods,                               /* tp_methods */
-    type_members,                               /* tp_members */
-    type_getsets,                               /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    offsetof(PyTypeObject, tp_dict),            /* tp_dictoffset */
-    type_init,                                  /* tp_init */
-    0,                                          /* tp_alloc */
-    type_new,                                   /* tp_new */
-    PyObject_GC_Del,                            /* tp_free */
-    (inquiry)type_is_gc,                        /* tp_is_gc */
-};
-
-
-/* The base type of all types (eventually)... except itself. */
-
-/* You may wonder why object.__new__() only complains about arguments
-   when object.__init__() is not overridden, and vice versa.
-
-   Consider the use cases:
-
-   1. When neither is overridden, we want to hear complaints about
-      excess (i.e., any) arguments, since their presence could
-      indicate there's a bug.
-
-   2. When defining an Immutable type, we are likely to override only
-      __new__(), since __init__() is called too late to initialize an
-      Immutable object.  Since __new__() defines the signature for the
-      type, it would be a pain to have to override __init__() just to
-      stop it from complaining about excess arguments.
-
-   3. When defining a Mutable type, we are likely to override only
-      __init__().  So here the converse reasoning applies: we don't
-      want to have to override __new__() just to stop it from
-      complaining.
-
-   4. When __init__() is overridden, and the subclass __init__() calls
-      object.__init__(), the latter should complain about excess
-      arguments; ditto for __new__().
-
-   Use cases 2 and 3 make it unattractive to unconditionally check for
-   excess arguments.  The best solution that addresses all four use
-   cases is as follows: __init__() complains about excess arguments
-   unless __new__() is overridden and __init__() is not overridden
-   (IOW, if __init__() is overridden or __new__() is not overridden);
-   symmetrically, __new__() complains about excess arguments unless
-   __init__() is overridden and __new__() is not overridden
-   (IOW, if __new__() is overridden or __init__() is not overridden).
-
-   However, for backwards compatibility, this breaks too much code.
-   Therefore, in 2.6, we'll *warn* about excess arguments when both
-   methods are overridden; for all other cases we'll use the above
-   rules.
-
-*/
-
-/* Forward */
-static PyObject *
-object_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
-
-static int
-excess_args(PyObject *args, PyObject *kwds)
-{
-    return PyTuple_GET_SIZE(args) ||
-        (kwds && PyDict_Check(kwds) && PyDict_Size(kwds));
-}
-
-static int
-object_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    int err = 0;
-    if (excess_args(args, kwds)) {
-        PyTypeObject *type = Py_TYPE(self);
-        if (type->tp_init != object_init &&
-            type->tp_new != object_new)
-        {
-            err = PyErr_WarnEx(PyExc_DeprecationWarning,
-                       "object.__init__() takes no parameters",
-                       1);
-        }
-        else if (type->tp_init != object_init ||
-                 type->tp_new == object_new)
-        {
-            PyErr_SetString(PyExc_TypeError,
-                "object.__init__() takes no parameters");
-            err = -1;
-        }
-    }
-    return err;
-}
-
-static PyObject *
-object_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    int err = 0;
-    if (excess_args(args, kwds)) {
-        if (type->tp_new != object_new &&
-            type->tp_init != object_init)
-        {
-            err = PyErr_WarnEx(PyExc_DeprecationWarning,
-                       "object.__new__() takes no parameters",
-                       1);
-        }
-        else if (type->tp_new != object_new ||
-                 type->tp_init == object_init)
-        {
-            PyErr_SetString(PyExc_TypeError,
-                "object.__new__() takes no parameters");
-            err = -1;
-        }
-    }
-    if (err < 0)
-        return NULL;
-
-    if (type->tp_flags & Py_TPFLAGS_IS_ABSTRACT) {
-        static PyObject *comma = NULL;
-        PyObject *abstract_methods = NULL;
-        PyObject *builtins;
-        PyObject *sorted;
-        PyObject *sorted_methods = NULL;
-        PyObject *joined = NULL;
-        const char *joined_str;
-
-        /* Compute ", ".join(sorted(type.__abstractmethods__))
-           into joined. */
-        abstract_methods = type_abstractmethods(type, NULL);
-        if (abstract_methods == NULL)
-            goto error;
-        builtins = PyEval_GetBuiltins();
-        if (builtins == NULL)
-            goto error;
-        sorted = PyDict_GetItemString(builtins, "sorted");
-        if (sorted == NULL)
-            goto error;
-        sorted_methods = PyObject_CallFunctionObjArgs(sorted,
-                                                      abstract_methods,
-                                                      NULL);
-        if (sorted_methods == NULL)
-            goto error;
-        if (comma == NULL) {
-            comma = PyString_InternFromString(", ");
-            if (comma == NULL)
-                goto error;
-        }
-        joined = PyObject_CallMethod(comma, "join",
-                                     "O",  sorted_methods);
-        if (joined == NULL)
-            goto error;
-        joined_str = PyString_AsString(joined);
-        if (joined_str == NULL)
-            goto error;
-
-        PyErr_Format(PyExc_TypeError,
-                     "Can't instantiate abstract class %s "
-                     "with abstract methods %s",
-                     type->tp_name,
-                     joined_str);
-    error:
-        Py_XDECREF(joined);
-        Py_XDECREF(sorted_methods);
-        Py_XDECREF(abstract_methods);
-        return NULL;
-    }
-    return type->tp_alloc(type, 0);
-}
-
-static void
-object_dealloc(PyObject *self)
-{
-    Py_TYPE(self)->tp_free(self);
-}
-
-static PyObject *
-object_repr(PyObject *self)
-{
-    PyTypeObject *type;
-    PyObject *mod, *name, *rtn;
-
-    type = Py_TYPE(self);
-    mod = type_module(type, NULL);
-    if (mod == NULL)
-        PyErr_Clear();
-    else if (!PyString_Check(mod)) {
-        Py_DECREF(mod);
-        mod = NULL;
-    }
-    name = type_name(type, NULL);
-    if (name == NULL)
-        return NULL;
-    if (mod != NULL && strcmp(PyString_AS_STRING(mod), "__builtin__"))
-        rtn = PyString_FromFormat("<%s.%s object at %p>",
-                                  PyString_AS_STRING(mod),
-                                  PyString_AS_STRING(name),
-                                  self);
-    else
-        rtn = PyString_FromFormat("<%s object at %p>",
-                                  type->tp_name, self);
-    Py_XDECREF(mod);
-    Py_DECREF(name);
-    return rtn;
-}
-
-static PyObject *
-object_str(PyObject *self)
-{
-    unaryfunc f;
-
-    f = Py_TYPE(self)->tp_repr;
-    if (f == NULL)
-        f = object_repr;
-    return f(self);
-}
-
-static PyObject *
-object_get_class(PyObject *self, void *closure)
-{
-    Py_INCREF(Py_TYPE(self));
-    return (PyObject *)(Py_TYPE(self));
-}
-
-static int
-equiv_structs(PyTypeObject *a, PyTypeObject *b)
-{
-    return a == b ||
-           (a != NULL &&
-        b != NULL &&
-        a->tp_basicsize == b->tp_basicsize &&
-        a->tp_itemsize == b->tp_itemsize &&
-        a->tp_dictoffset == b->tp_dictoffset &&
-        a->tp_weaklistoffset == b->tp_weaklistoffset &&
-        ((a->tp_flags & Py_TPFLAGS_HAVE_GC) ==
-         (b->tp_flags & Py_TPFLAGS_HAVE_GC)));
-}
-
-static int
-same_slots_added(PyTypeObject *a, PyTypeObject *b)
-{
-    PyTypeObject *base = a->tp_base;
-    Py_ssize_t size;
-    PyObject *slots_a, *slots_b;
-
-    assert(base == b->tp_base);
-    size = base->tp_basicsize;
-    if (a->tp_dictoffset == size && b->tp_dictoffset == size)
-        size += sizeof(PyObject *);
-    if (a->tp_weaklistoffset == size && b->tp_weaklistoffset == size)
-        size += sizeof(PyObject *);
-
-    /* Check slots compliance */
-    slots_a = ((PyHeapTypeObject *)a)->ht_slots;
-    slots_b = ((PyHeapTypeObject *)b)->ht_slots;
-    if (slots_a && slots_b) {
-        if (PyObject_Compare(slots_a, slots_b) != 0)
-            return 0;
-        size += sizeof(PyObject *) * PyTuple_GET_SIZE(slots_a);
-    }
-    return size == a->tp_basicsize && size == b->tp_basicsize;
-}
-
-static int
-compatible_for_assignment(PyTypeObject* oldto, PyTypeObject* newto, char* attr)
-{
-    PyTypeObject *newbase, *oldbase;
-
-    if (newto->tp_dealloc != oldto->tp_dealloc ||
-        newto->tp_free != oldto->tp_free)
-    {
-        PyErr_Format(PyExc_TypeError,
-                     "%s assignment: "
-                     "'%s' deallocator differs from '%s'",
-                     attr,
-                     newto->tp_name,
-                     oldto->tp_name);
-        return 0;
-    }
-    newbase = newto;
-    oldbase = oldto;
-    while (equiv_structs(newbase, newbase->tp_base))
-        newbase = newbase->tp_base;
-    while (equiv_structs(oldbase, oldbase->tp_base))
-        oldbase = oldbase->tp_base;
-    if (newbase != oldbase &&
-        (newbase->tp_base != oldbase->tp_base ||
-         !same_slots_added(newbase, oldbase))) {
-        PyErr_Format(PyExc_TypeError,
-                     "%s assignment: "
-                     "'%s' object layout differs from '%s'",
-                     attr,
-                     newto->tp_name,
-                     oldto->tp_name);
-        return 0;
-    }
-
-    return 1;
-}
-
-static int
-object_set_class(PyObject *self, PyObject *value, void *closure)
-{
-    PyTypeObject *oldto = Py_TYPE(self);
-    PyTypeObject *newto;
-
-    if (value == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "can't delete __class__ attribute");
-        return -1;
-    }
-    if (!PyType_Check(value)) {
-        PyErr_Format(PyExc_TypeError,
-          "__class__ must be set to new-style class, not '%s' object",
-          Py_TYPE(value)->tp_name);
-        return -1;
-    }
-    newto = (PyTypeObject *)value;
-    if (!(newto->tp_flags & Py_TPFLAGS_HEAPTYPE) ||
-        !(oldto->tp_flags & Py_TPFLAGS_HEAPTYPE))
-    {
-        PyErr_Format(PyExc_TypeError,
-                     "__class__ assignment: only for heap types");
-        return -1;
-    }
-    if (compatible_for_assignment(newto, oldto, "__class__")) {
-        Py_INCREF(newto);
-        Py_TYPE(self) = newto;
-        Py_DECREF(oldto);
-        return 0;
-    }
-    else {
-        return -1;
-    }
-}
-
-static PyGetSetDef object_getsets[] = {
-    {"__class__", object_get_class, object_set_class,
-     PyDoc_STR("the object's class")},
-    {0}
-};
-
-
-/* Stuff to implement __reduce_ex__ for pickle protocols >= 2.
-   We fall back to helpers in copy_reg for:
-   - pickle protocols < 2
-   - calculating the list of slot names (done only once per class)
-   - the __newobj__ function (which is used as a token but never called)
-*/
-
-static PyObject *
-import_copyreg(void)
-{
-    static PyObject *copyreg_str;
-
-    if (!copyreg_str) {
-        copyreg_str = PyString_InternFromString("copy_reg");
-        if (copyreg_str == NULL)
-            return NULL;
-    }
-
-    return PyImport_Import(copyreg_str);
-}
-
-static PyObject *
-slotnames(PyObject *cls)
-{
-    PyObject *clsdict;
-    PyObject *copyreg;
-    PyObject *slotnames;
-
-    if (!PyType_Check(cls)) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-
-    clsdict = ((PyTypeObject *)cls)->tp_dict;
-    slotnames = PyDict_GetItemString(clsdict, "__slotnames__");
-    if (slotnames != NULL && PyList_Check(slotnames)) {
-        Py_INCREF(slotnames);
-        return slotnames;
-    }
-
-    copyreg = import_copyreg();
-    if (copyreg == NULL)
-        return NULL;
-
-    slotnames = PyObject_CallMethod(copyreg, "_slotnames", "O", cls);
-    Py_DECREF(copyreg);
-    if (slotnames != NULL &&
-        slotnames != Py_None &&
-        !PyList_Check(slotnames))
-    {
-        PyErr_SetString(PyExc_TypeError,
-            "copy_reg._slotnames didn't return a list or None");
-        Py_DECREF(slotnames);
-        slotnames = NULL;
-    }
-
-    return slotnames;
-}
-
-static PyObject *
-reduce_2(PyObject *obj)
-{
-    PyObject *cls, *getnewargs;
-    PyObject *args = NULL, *args2 = NULL;
-    PyObject *getstate = NULL, *state = NULL, *names = NULL;
-    PyObject *slots = NULL, *listitems = NULL, *dictitems = NULL;
-    PyObject *copyreg = NULL, *newobj = NULL, *res = NULL;
-    Py_ssize_t i, n;
-
-    cls = PyObject_GetAttrString(obj, "__class__");
-    if (cls == NULL)
-        return NULL;
-
-    getnewargs = PyObject_GetAttrString(obj, "__getnewargs__");
-    if (getnewargs != NULL) {
-        args = PyObject_CallObject(getnewargs, NULL);
-        Py_DECREF(getnewargs);
-        if (args != NULL && !PyTuple_Check(args)) {
-            PyErr_Format(PyExc_TypeError,
-                "__getnewargs__ should return a tuple, "
-                "not '%.200s'", Py_TYPE(args)->tp_name);
-            goto end;
-        }
-    }
-    else {
-        PyErr_Clear();
-        args = PyTuple_New(0);
-    }
-    if (args == NULL)
-        goto end;
-
-    getstate = PyObject_GetAttrString(obj, "__getstate__");
-    if (getstate != NULL) {
-        state = PyObject_CallObject(getstate, NULL);
-        Py_DECREF(getstate);
-        if (state == NULL)
-            goto end;
-    }
-    else {
-        PyErr_Clear();
-        state = PyObject_GetAttrString(obj, "__dict__");
-        if (state == NULL) {
-            PyErr_Clear();
-            state = Py_None;
-            Py_INCREF(state);
-        }
-        names = slotnames(cls);
-        if (names == NULL)
-            goto end;
-        if (names != Py_None) {
-            assert(PyList_Check(names));
-            slots = PyDict_New();
-            if (slots == NULL)
-                goto end;
-            n = 0;
-            /* Can't pre-compute the list size; the list
-               is stored on the class so accessible to other
-               threads, which may be run by DECREF */
-            for (i = 0; i < PyList_GET_SIZE(names); i++) {
-                PyObject *name, *value;
-                name = PyList_GET_ITEM(names, i);
-                value = PyObject_GetAttr(obj, name);
-                if (value == NULL)
-                    PyErr_Clear();
-                else {
-                    int err = PyDict_SetItem(slots, name,
-                                             value);
-                    Py_DECREF(value);
-                    if (err)
-                        goto end;
-                    n++;
-                }
-            }
-            if (n) {
-                state = Py_BuildValue("(NO)", state, slots);
-                if (state == NULL)
-                    goto end;
-            }
-        }
-    }
-
-    if (!PyList_Check(obj)) {
-        listitems = Py_None;
-        Py_INCREF(listitems);
-    }
-    else {
-        listitems = PyObject_GetIter(obj);
-        if (listitems == NULL)
-            goto end;
-    }
-
-    if (!PyDict_Check(obj)) {
-        dictitems = Py_None;
-        Py_INCREF(dictitems);
-    }
-    else {
-        dictitems = PyObject_CallMethod(obj, "iteritems", "");
-        if (dictitems == NULL)
-            goto end;
-    }
-
-    copyreg = import_copyreg();
-    if (copyreg == NULL)
-        goto end;
-    newobj = PyObject_GetAttrString(copyreg, "__newobj__");
-    if (newobj == NULL)
-        goto end;
-
-    n = PyTuple_GET_SIZE(args);
-    args2 = PyTuple_New(n+1);
-    if (args2 == NULL)
-        goto end;
-    PyTuple_SET_ITEM(args2, 0, cls);
-    cls = NULL;
-    for (i = 0; i < n; i++) {
-        PyObject *v = PyTuple_GET_ITEM(args, i);
-        Py_INCREF(v);
-        PyTuple_SET_ITEM(args2, i+1, v);
-    }
-
-    res = PyTuple_Pack(5, newobj, args2, state, listitems, dictitems);
-
-  end:
-    Py_XDECREF(cls);
-    Py_XDECREF(args);
-    Py_XDECREF(args2);
-    Py_XDECREF(slots);
-    Py_XDECREF(state);
-    Py_XDECREF(names);
-    Py_XDECREF(listitems);
-    Py_XDECREF(dictitems);
-    Py_XDECREF(copyreg);
-    Py_XDECREF(newobj);
-    return res;
-}
-
-/*
- * There were two problems when object.__reduce__ and object.__reduce_ex__
- * were implemented in the same function:
- *  - trying to pickle an object with a custom __reduce__ method that
- *    fell back to object.__reduce__ in certain circumstances led to
- *    infinite recursion at Python level and eventual RuntimeError.
- *  - Pickling objects that lied about their type by overwriting the
- *    __class__ descriptor could lead to infinite recursion at C level
- *    and eventual segfault.
- *
- * Because of backwards compatibility, the two methods still have to
- * behave in the same way, even if this is not required by the pickle
- * protocol. This common functionality was moved to the _common_reduce
- * function.
- */
-static PyObject *
-_common_reduce(PyObject *self, int proto)
-{
-    PyObject *copyreg, *res;
-
-    if (proto >= 2)
-        return reduce_2(self);
-
-    copyreg = import_copyreg();
-    if (!copyreg)
-        return NULL;
-
-    res = PyEval_CallMethod(copyreg, "_reduce_ex", "(Oi)", self, proto);
-    Py_DECREF(copyreg);
-
-    return res;
-}
-
-static PyObject *
-object_reduce(PyObject *self, PyObject *args)
-{
-    int proto = 0;
-
-    if (!PyArg_ParseTuple(args, "|i:__reduce__", &proto))
-        return NULL;
-
-    return _common_reduce(self, proto);
-}
-
-static PyObject *
-object_reduce_ex(PyObject *self, PyObject *args)
-{
-    PyObject *reduce, *res;
-    int proto = 0;
-
-    if (!PyArg_ParseTuple(args, "|i:__reduce_ex__", &proto))
-        return NULL;
-
-    reduce = PyObject_GetAttrString(self, "__reduce__");
-    if (reduce == NULL)
-        PyErr_Clear();
-    else {
-        PyObject *cls, *clsreduce, *objreduce;
-        int override;
-        cls = PyObject_GetAttrString(self, "__class__");
-        if (cls == NULL) {
-            Py_DECREF(reduce);
-            return NULL;
-        }
-        clsreduce = PyObject_GetAttrString(cls, "__reduce__");
-        Py_DECREF(cls);
-        if (clsreduce == NULL) {
-            Py_DECREF(reduce);
-            return NULL;
-        }
-        objreduce = PyDict_GetItemString(PyBaseObject_Type.tp_dict,
-                                         "__reduce__");
-        override = (clsreduce != objreduce);
-        Py_DECREF(clsreduce);
-        if (override) {
-            res = PyObject_CallObject(reduce, NULL);
-            Py_DECREF(reduce);
-            return res;
-        }
-        else
-            Py_DECREF(reduce);
-    }
-
-    return _common_reduce(self, proto);
-}
-
-static PyObject *
-object_subclasshook(PyObject *cls, PyObject *args)
-{
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-}
-
-PyDoc_STRVAR(object_subclasshook_doc,
-"Abstract classes can override this to customize issubclass().\n"
-"\n"
-"This is invoked early on by abc.ABCMeta.__subclasscheck__().\n"
-"It should return True, False or NotImplemented.  If it returns\n"
-"NotImplemented, the normal algorithm is used.  Otherwise, it\n"
-"overrides the normal algorithm (and the outcome is cached).\n");
-
-/*
-   from PEP 3101, this code implements:
-
-   class object:
-       def __format__(self, format_spec):
-       if isinstance(format_spec, str):
-           return format(str(self), format_spec)
-       elif isinstance(format_spec, unicode):
-           return format(unicode(self), format_spec)
-*/
-static PyObject *
-object_format(PyObject *self, PyObject *args)
-{
-    PyObject *format_spec;
-    PyObject *self_as_str = NULL;
-    PyObject *result = NULL;
-    Py_ssize_t format_len;
-
-    if (!PyArg_ParseTuple(args, "O:__format__", &format_spec))
-        return NULL;
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(format_spec)) {
-        format_len = PyUnicode_GET_SIZE(format_spec);
-        self_as_str = PyObject_Unicode(self);
-    } else if (PyString_Check(format_spec)) {
-#else
-    if (PyString_Check(format_spec)) {
-#endif
-        format_len = PyString_GET_SIZE(format_spec);
-        self_as_str = PyObject_Str(self);
-    } else {
-        PyErr_SetString(PyExc_TypeError,
-                 "argument to __format__ must be unicode or str");
-        return NULL;
-    }
-
-    if (self_as_str != NULL) {
-        /* Issue 7994: If we're converting to a string, we
-           should reject format specifications */
-        if (format_len > 0) {
-            if (PyErr_WarnEx(PyExc_PendingDeprecationWarning,
-             "object.__format__ with a non-empty format "
-             "string is deprecated", 1) < 0) {
-                goto done;
-            }
-            /* Eventually this will become an error:
-            PyErr_Format(PyExc_TypeError,
-               "non-empty format string passed to object.__format__");
-            goto done;
-            */
-        }
-        result = PyObject_Format(self_as_str, format_spec);
-    }
-
-done:
-    Py_XDECREF(self_as_str);
-
-    return result;
-}
-
-static PyObject *
-object_sizeof(PyObject *self, PyObject *args)
-{
-    Py_ssize_t res, isize;
-
-    res = 0;
-    isize = self->ob_type->tp_itemsize;
-    if (isize > 0)
-        res = self->ob_type->ob_size * isize;
-    res += self->ob_type->tp_basicsize;
-
-    return PyInt_FromSsize_t(res);
-}
-
-static PyMethodDef object_methods[] = {
-    {"__reduce_ex__", object_reduce_ex, METH_VARARGS,
-     PyDoc_STR("helper for pickle")},
-    {"__reduce__", object_reduce, METH_VARARGS,
-     PyDoc_STR("helper for pickle")},
-    {"__subclasshook__", object_subclasshook, METH_CLASS | METH_VARARGS,
-     object_subclasshook_doc},
-    {"__format__", object_format, METH_VARARGS,
-     PyDoc_STR("default object formatter")},
-    {"__sizeof__", object_sizeof, METH_NOARGS,
-     PyDoc_STR("__sizeof__() -> int\nsize of object in memory, in bytes")},
-    {0}
-};
-
-
-PyTypeObject PyBaseObject_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "object",                                   /* tp_name */
-    sizeof(PyObject),                           /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    object_dealloc,                             /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    object_repr,                                /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    (hashfunc)_Py_HashPointer,                  /* tp_hash */
-    0,                                          /* tp_call */
-    object_str,                                 /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    PyObject_GenericSetAttr,                    /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
-    PyDoc_STR("The most base type"),            /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    object_methods,                             /* tp_methods */
-    0,                                          /* tp_members */
-    object_getsets,                             /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    object_init,                                /* tp_init */
-    PyType_GenericAlloc,                        /* tp_alloc */
-    object_new,                                 /* tp_new */
-    PyObject_Del,                               /* tp_free */
-};
-
-
-/* Initialize the __dict__ in a type object */
-
-static int
-add_methods(PyTypeObject *type, PyMethodDef *meth)
-{
-    PyObject *dict = type->tp_dict;
-
-    for (; meth->ml_name != NULL; meth++) {
-        PyObject *descr;
-        if (PyDict_GetItemString(dict, meth->ml_name) &&
-            !(meth->ml_flags & METH_COEXIST))
-                continue;
-        if (meth->ml_flags & METH_CLASS) {
-            if (meth->ml_flags & METH_STATIC) {
-                PyErr_SetString(PyExc_ValueError,
-                     "method cannot be both class and static");
-                return -1;
-            }
-            descr = PyDescr_NewClassMethod(type, meth);
-        }
-        else if (meth->ml_flags & METH_STATIC) {
-            PyObject *cfunc = PyCFunction_New(meth, NULL);
-            if (cfunc == NULL)
-                return -1;
-            descr = PyStaticMethod_New(cfunc);
-            Py_DECREF(cfunc);
-        }
-        else {
-            descr = PyDescr_NewMethod(type, meth);
-        }
-        if (descr == NULL)
-            return -1;
-        if (PyDict_SetItemString(dict, meth->ml_name, descr) < 0)
-            return -1;
-        Py_DECREF(descr);
-    }
-    return 0;
-}
-
-static int
-add_members(PyTypeObject *type, PyMemberDef *memb)
-{
-    PyObject *dict = type->tp_dict;
-
-    for (; memb->name != NULL; memb++) {
-        PyObject *descr;
-        if (PyDict_GetItemString(dict, memb->name))
-            continue;
-        descr = PyDescr_NewMember(type, memb);
-        if (descr == NULL)
-            return -1;
-        if (PyDict_SetItemString(dict, memb->name, descr) < 0)
-            return -1;
-        Py_DECREF(descr);
-    }
-    return 0;
-}
-
-static int
-add_getset(PyTypeObject *type, PyGetSetDef *gsp)
-{
-    PyObject *dict = type->tp_dict;
-
-    for (; gsp->name != NULL; gsp++) {
-        PyObject *descr;
-        if (PyDict_GetItemString(dict, gsp->name))
-            continue;
-        descr = PyDescr_NewGetSet(type, gsp);
-
-        if (descr == NULL)
-            return -1;
-        if (PyDict_SetItemString(dict, gsp->name, descr) < 0)
-            return -1;
-        Py_DECREF(descr);
-    }
-    return 0;
-}
-
-#define BUFFER_FLAGS (Py_TPFLAGS_HAVE_GETCHARBUFFER | Py_TPFLAGS_HAVE_NEWBUFFER)
-
-static void
-inherit_special(PyTypeObject *type, PyTypeObject *base)
-{
-    Py_ssize_t oldsize, newsize;
-
-    /* Special flag magic */
-    if (!type->tp_as_buffer && base->tp_as_buffer) {
-        type->tp_flags &= ~BUFFER_FLAGS;
-        type->tp_flags |=
-            base->tp_flags & BUFFER_FLAGS;
-    }
-    if (!type->tp_as_sequence && base->tp_as_sequence) {
-        type->tp_flags &= ~Py_TPFLAGS_HAVE_SEQUENCE_IN;
-        type->tp_flags |= base->tp_flags & Py_TPFLAGS_HAVE_SEQUENCE_IN;
-    }
-    if ((type->tp_flags & Py_TPFLAGS_HAVE_INPLACEOPS) !=
-        (base->tp_flags & Py_TPFLAGS_HAVE_INPLACEOPS)) {
-        if ((!type->tp_as_number && base->tp_as_number) ||
-            (!type->tp_as_sequence && base->tp_as_sequence)) {
-            type->tp_flags &= ~Py_TPFLAGS_HAVE_INPLACEOPS;
-            if (!type->tp_as_number && !type->tp_as_sequence) {
-                type->tp_flags |= base->tp_flags &
-                    Py_TPFLAGS_HAVE_INPLACEOPS;
-            }
-        }
-        /* Wow */
-    }
-    if (!type->tp_as_number && base->tp_as_number) {
-        type->tp_flags &= ~Py_TPFLAGS_CHECKTYPES;
-        type->tp_flags |= base->tp_flags & Py_TPFLAGS_CHECKTYPES;
-    }
-
-    /* Copying basicsize is connected to the GC flags */
-    oldsize = base->tp_basicsize;
-    newsize = type->tp_basicsize ? type->tp_basicsize : oldsize;
-    if (!(type->tp_flags & Py_TPFLAGS_HAVE_GC) &&
-        (base->tp_flags & Py_TPFLAGS_HAVE_GC) &&
-        (type->tp_flags & Py_TPFLAGS_HAVE_RICHCOMPARE/*GC slots exist*/) &&
-        (!type->tp_traverse && !type->tp_clear)) {
-        type->tp_flags |= Py_TPFLAGS_HAVE_GC;
-        if (type->tp_traverse == NULL)
-            type->tp_traverse = base->tp_traverse;
-        if (type->tp_clear == NULL)
-            type->tp_clear = base->tp_clear;
-    }
-    if (type->tp_flags & base->tp_flags & Py_TPFLAGS_HAVE_CLASS) {
-        /* The condition below could use some explanation.
-           It appears that tp_new is not inherited for static types
-           whose base class is 'object'; this seems to be a precaution
-           so that old extension types don't suddenly become
-           callable (object.__new__ wouldn't insure the invariants
-           that the extension type's own factory function ensures).
-           Heap types, of course, are under our control, so they do
-           inherit tp_new; static extension types that specify some
-           other built-in type as the default are considered
-           new-style-aware so they also inherit object.__new__. */
-        if (base != &PyBaseObject_Type ||
-            (type->tp_flags & Py_TPFLAGS_HEAPTYPE)) {
-            if (type->tp_new == NULL)
-                type->tp_new = base->tp_new;
-        }
-    }
-    type->tp_basicsize = newsize;
-
-    /* Copy other non-function slots */
-
-#undef COPYVAL
-#define COPYVAL(SLOT) \
-    if (type->SLOT == 0) type->SLOT = base->SLOT
-
-    COPYVAL(tp_itemsize);
-    if (type->tp_flags & base->tp_flags & Py_TPFLAGS_HAVE_WEAKREFS) {
-        COPYVAL(tp_weaklistoffset);
-    }
-    if (type->tp_flags & base->tp_flags & Py_TPFLAGS_HAVE_CLASS) {
-        COPYVAL(tp_dictoffset);
-    }
-
-    /* Setup fast subclass flags */
-    if (PyType_IsSubtype(base, (PyTypeObject*)PyExc_BaseException))
-        type->tp_flags |= Py_TPFLAGS_BASE_EXC_SUBCLASS;
-    else if (PyType_IsSubtype(base, &PyType_Type))
-        type->tp_flags |= Py_TPFLAGS_TYPE_SUBCLASS;
-    else if (PyType_IsSubtype(base, &PyInt_Type))
-        type->tp_flags |= Py_TPFLAGS_INT_SUBCLASS;
-    else if (PyType_IsSubtype(base, &PyLong_Type))
-        type->tp_flags |= Py_TPFLAGS_LONG_SUBCLASS;
-    else if (PyType_IsSubtype(base, &PyString_Type))
-        type->tp_flags |= Py_TPFLAGS_STRING_SUBCLASS;
-#ifdef Py_USING_UNICODE
-    else if (PyType_IsSubtype(base, &PyUnicode_Type))
-        type->tp_flags |= Py_TPFLAGS_UNICODE_SUBCLASS;
-#endif
-    else if (PyType_IsSubtype(base, &PyTuple_Type))
-        type->tp_flags |= Py_TPFLAGS_TUPLE_SUBCLASS;
-    else if (PyType_IsSubtype(base, &PyList_Type))
-        type->tp_flags |= Py_TPFLAGS_LIST_SUBCLASS;
-    else if (PyType_IsSubtype(base, &PyDict_Type))
-        type->tp_flags |= Py_TPFLAGS_DICT_SUBCLASS;
-}
-
-static int
-overrides_name(PyTypeObject *type, char *name)
-{
-    PyObject *dict = type->tp_dict;
-
-    assert(dict != NULL);
-    if (PyDict_GetItemString(dict, name) != NULL) {
-        return 1;
-    }
-    return 0;
-}
-
-#define OVERRIDES_HASH(x)       overrides_name(x, "__hash__")
-#define OVERRIDES_EQ(x)         overrides_name(x, "__eq__")
-
-static void
-inherit_slots(PyTypeObject *type, PyTypeObject *base)
-{
-    PyTypeObject *basebase;
-
-#undef SLOTDEFINED
-#undef COPYSLOT
-#undef COPYNUM
-#undef COPYSEQ
-#undef COPYMAP
-#undef COPYBUF
-
-#define SLOTDEFINED(SLOT) \
-    (base->SLOT != 0 && \
-     (basebase == NULL || base->SLOT != basebase->SLOT))
-
-#define COPYSLOT(SLOT) \
-    if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT
-
-#define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT)
-#define COPYSEQ(SLOT) COPYSLOT(tp_as_sequence->SLOT)
-#define COPYMAP(SLOT) COPYSLOT(tp_as_mapping->SLOT)
-#define COPYBUF(SLOT) COPYSLOT(tp_as_buffer->SLOT)
-
-    /* This won't inherit indirect slots (from tp_as_number etc.)
-       if type doesn't provide the space. */
-
-    if (type->tp_as_number != NULL && base->tp_as_number != NULL) {
-        basebase = base->tp_base;
-        if (basebase->tp_as_number == NULL)
-            basebase = NULL;
-        COPYNUM(nb_add);
-        COPYNUM(nb_subtract);
-        COPYNUM(nb_multiply);
-        COPYNUM(nb_divide);
-        COPYNUM(nb_remainder);
-        COPYNUM(nb_divmod);
-        COPYNUM(nb_power);
-        COPYNUM(nb_negative);
-        COPYNUM(nb_positive);
-        COPYNUM(nb_absolute);
-        COPYNUM(nb_nonzero);
-        COPYNUM(nb_invert);
-        COPYNUM(nb_lshift);
-        COPYNUM(nb_rshift);
-        COPYNUM(nb_and);
-        COPYNUM(nb_xor);
-        COPYNUM(nb_or);
-        COPYNUM(nb_coerce);
-        COPYNUM(nb_int);
-        COPYNUM(nb_long);
-        COPYNUM(nb_float);
-        COPYNUM(nb_oct);
-        COPYNUM(nb_hex);
-        COPYNUM(nb_inplace_add);
-        COPYNUM(nb_inplace_subtract);
-        COPYNUM(nb_inplace_multiply);
-        COPYNUM(nb_inplace_divide);
-        COPYNUM(nb_inplace_remainder);
-        COPYNUM(nb_inplace_power);
-        COPYNUM(nb_inplace_lshift);
-        COPYNUM(nb_inplace_rshift);
-        COPYNUM(nb_inplace_and);
-        COPYNUM(nb_inplace_xor);
-        COPYNUM(nb_inplace_or);
-        if (base->tp_flags & Py_TPFLAGS_CHECKTYPES) {
-            COPYNUM(nb_true_divide);
-            COPYNUM(nb_floor_divide);
-            COPYNUM(nb_inplace_true_divide);
-            COPYNUM(nb_inplace_floor_divide);
-        }
-        if (base->tp_flags & Py_TPFLAGS_HAVE_INDEX) {
-            COPYNUM(nb_index);
-        }
-    }
-
-    if (type->tp_as_sequence != NULL && base->tp_as_sequence != NULL) {
-        basebase = base->tp_base;
-        if (basebase->tp_as_sequence == NULL)
-            basebase = NULL;
-        COPYSEQ(sq_length);
-        COPYSEQ(sq_concat);
-        COPYSEQ(sq_repeat);
-        COPYSEQ(sq_item);
-        COPYSEQ(sq_slice);
-        COPYSEQ(sq_ass_item);
-        COPYSEQ(sq_ass_slice);
-        COPYSEQ(sq_contains);
-        COPYSEQ(sq_inplace_concat);
-        COPYSEQ(sq_inplace_repeat);
-    }
-
-    if (type->tp_as_mapping != NULL && base->tp_as_mapping != NULL) {
-        basebase = base->tp_base;
-        if (basebase->tp_as_mapping == NULL)
-            basebase = NULL;
-        COPYMAP(mp_length);
-        COPYMAP(mp_subscript);
-        COPYMAP(mp_ass_subscript);
-    }
-
-    if (type->tp_as_buffer != NULL && base->tp_as_buffer != NULL) {
-        basebase = base->tp_base;
-        if (basebase->tp_as_buffer == NULL)
-            basebase = NULL;
-        COPYBUF(bf_getreadbuffer);
-        COPYBUF(bf_getwritebuffer);
-        COPYBUF(bf_getsegcount);
-        COPYBUF(bf_getcharbuffer);
-        COPYBUF(bf_getbuffer);
-        COPYBUF(bf_releasebuffer);
-    }
-
-    basebase = base->tp_base;
-
-    COPYSLOT(tp_dealloc);
-    COPYSLOT(tp_print);
-    if (type->tp_getattr == NULL && type->tp_getattro == NULL) {
-        type->tp_getattr = base->tp_getattr;
-        type->tp_getattro = base->tp_getattro;
-    }
-    if (type->tp_setattr == NULL && type->tp_setattro == NULL) {
-        type->tp_setattr = base->tp_setattr;
-        type->tp_setattro = base->tp_setattro;
-    }
-    /* tp_compare see tp_richcompare */
-    COPYSLOT(tp_repr);
-    /* tp_hash see tp_richcompare */
-    COPYSLOT(tp_call);
-    COPYSLOT(tp_str);
-    if (type->tp_flags & base->tp_flags & Py_TPFLAGS_HAVE_RICHCOMPARE) {
-        if (type->tp_compare == NULL &&
-            type->tp_richcompare == NULL &&
-            type->tp_hash == NULL)
-        {
-            type->tp_compare = base->tp_compare;
-            type->tp_richcompare = base->tp_richcompare;
-            type->tp_hash = base->tp_hash;
-            /* Check for changes to inherited methods in Py3k*/
-            if (Py_Py3kWarningFlag) {
-                if (base->tp_hash &&
-                                (base->tp_hash != PyObject_HashNotImplemented) &&
-                                !OVERRIDES_HASH(type)) {
-                    if (OVERRIDES_EQ(type)) {
-                        if (PyErr_WarnPy3k("Overriding "
-                                           "__eq__ blocks inheritance "
-                                           "of __hash__ in 3.x",
-                                           1) < 0)
-                            /* XXX This isn't right.  If the warning is turned
-                               into an exception, we should be communicating
-                               the error back to the caller, but figuring out
-                               how to clean up in that case is tricky.  See
-                               issue 8627 for more. */
-                            PyErr_Clear();
-                    }
-                }
-            }
-        }
-    }
-    else {
-        COPYSLOT(tp_compare);
-    }
-    if (type->tp_flags & base->tp_flags & Py_TPFLAGS_HAVE_ITER) {
-        COPYSLOT(tp_iter);
-        COPYSLOT(tp_iternext);
-    }
-    if (type->tp_flags & base->tp_flags & Py_TPFLAGS_HAVE_CLASS) {
-        COPYSLOT(tp_descr_get);
-        COPYSLOT(tp_descr_set);
-        COPYSLOT(tp_dictoffset);
-        COPYSLOT(tp_init);
-        COPYSLOT(tp_alloc);
-        COPYSLOT(tp_is_gc);
-        if ((type->tp_flags & Py_TPFLAGS_HAVE_GC) ==
-            (base->tp_flags & Py_TPFLAGS_HAVE_GC)) {
-            /* They agree about gc. */
-            COPYSLOT(tp_free);
-        }
-        else if ((type->tp_flags & Py_TPFLAGS_HAVE_GC) &&
-                 type->tp_free == NULL &&
-                 base->tp_free == _PyObject_Del) {
-            /* A bit of magic to plug in the correct default
-             * tp_free function when a derived class adds gc,
-             * didn't define tp_free, and the base uses the
-             * default non-gc tp_free.
-             */
-            type->tp_free = PyObject_GC_Del;
-        }
-        /* else they didn't agree about gc, and there isn't something
-         * obvious to be done -- the type is on its own.
-         */
-    }
-}
-
-static int add_operators(PyTypeObject *);
-
-int
-PyType_Ready(PyTypeObject *type)
-{
-    PyObject *dict, *bases;
-    PyTypeObject *base;
-    Py_ssize_t i, n;
-
-    if (type->tp_flags & Py_TPFLAGS_READY) {
-        assert(type->tp_dict != NULL);
-        return 0;
-    }
-    assert((type->tp_flags & Py_TPFLAGS_READYING) == 0);
-
-    type->tp_flags |= Py_TPFLAGS_READYING;
-
-#ifdef Py_TRACE_REFS
-    /* PyType_Ready is the closest thing we have to a choke point
-     * for type objects, so is the best place I can think of to try
-     * to get type objects into the doubly-linked list of all objects.
-     * Still, not all type objects go thru PyType_Ready.
-     */
-    _Py_AddToAllObjects((PyObject *)type, 0);
-#endif
-
-    /* Initialize tp_base (defaults to BaseObject unless that's us) */
-    base = type->tp_base;
-    if (base == NULL && type != &PyBaseObject_Type) {
-        base = type->tp_base = &PyBaseObject_Type;
-        Py_INCREF(base);
-    }
-
-    /* Now the only way base can still be NULL is if type is
-     * &PyBaseObject_Type.
-     */
-
-    /* Initialize the base class */
-    if (base && base->tp_dict == NULL) {
-        if (PyType_Ready(base) < 0)
-            goto error;
-    }
-
-    /* Initialize ob_type if NULL.      This means extensions that want to be
-       compilable separately on Windows can call PyType_Ready() instead of
-       initializing the ob_type field of their type objects. */
-    /* The test for base != NULL is really unnecessary, since base is only
-       NULL when type is &PyBaseObject_Type, and we know its ob_type is
-       not NULL (it's initialized to &PyType_Type).      But coverity doesn't
-       know that. */
-    if (Py_TYPE(type) == NULL && base != NULL)
-        Py_TYPE(type) = Py_TYPE(base);
-
-    /* Initialize tp_bases */
-    bases = type->tp_bases;
-    if (bases == NULL) {
-        if (base == NULL)
-            bases = PyTuple_New(0);
-        else
-            bases = PyTuple_Pack(1, base);
-        if (bases == NULL)
-            goto error;
-        type->tp_bases = bases;
-    }
-
-    /* Initialize tp_dict */
-    dict = type->tp_dict;
-    if (dict == NULL) {
-        dict = PyDict_New();
-        if (dict == NULL)
-            goto error;
-        type->tp_dict = dict;
-    }
-
-    /* Add type-specific descriptors to tp_dict */
-    if (add_operators(type) < 0)
-        goto error;
-    if (type->tp_methods != NULL) {
-        if (add_methods(type, type->tp_methods) < 0)
-            goto error;
-    }
-    if (type->tp_members != NULL) {
-        if (add_members(type, type->tp_members) < 0)
-            goto error;
-    }
-    if (type->tp_getset != NULL) {
-        if (add_getset(type, type->tp_getset) < 0)
-            goto error;
-    }
-
-    /* Calculate method resolution order */
-    if (mro_internal(type) < 0) {
-        goto error;
-    }
-
-    /* Inherit special flags from dominant base */
-    if (type->tp_base != NULL)
-        inherit_special(type, type->tp_base);
-
-    /* Initialize tp_dict properly */
-    bases = type->tp_mro;
-    assert(bases != NULL);
-    assert(PyTuple_Check(bases));
-    n = PyTuple_GET_SIZE(bases);
-    for (i = 1; i < n; i++) {
-        PyObject *b = PyTuple_GET_ITEM(bases, i);
-        if (PyType_Check(b))
-            inherit_slots(type, (PyTypeObject *)b);
-    }
-
-    /* Sanity check for tp_free. */
-    if (PyType_IS_GC(type) && (type->tp_flags & Py_TPFLAGS_BASETYPE) &&
-        (type->tp_free == NULL || type->tp_free == PyObject_Del)) {
-        /* This base class needs to call tp_free, but doesn't have
-         * one, or its tp_free is for non-gc'ed objects.
-         */
-        PyErr_Format(PyExc_TypeError, "type '%.100s' participates in "
-                     "gc and is a base type but has inappropriate "
-                     "tp_free slot",
-                     type->tp_name);
-        goto error;
-    }
-
-    /* if the type dictionary doesn't contain a __doc__, set it from
-       the tp_doc slot.
-     */
-    if (PyDict_GetItemString(type->tp_dict, "__doc__") == NULL) {
-        if (type->tp_doc != NULL) {
-            PyObject *doc = PyString_FromString(type->tp_doc);
-            if (doc == NULL)
-                goto error;
-            PyDict_SetItemString(type->tp_dict, "__doc__", doc);
-            Py_DECREF(doc);
-        } else {
-            PyDict_SetItemString(type->tp_dict,
-                                 "__doc__", Py_None);
-        }
-    }
-
-    /* Some more special stuff */
-    base = type->tp_base;
-    if (base != NULL) {
-        if (type->tp_as_number == NULL)
-            type->tp_as_number = base->tp_as_number;
-        if (type->tp_as_sequence == NULL)
-            type->tp_as_sequence = base->tp_as_sequence;
-        if (type->tp_as_mapping == NULL)
-            type->tp_as_mapping = base->tp_as_mapping;
-        if (type->tp_as_buffer == NULL)
-            type->tp_as_buffer = base->tp_as_buffer;
-    }
-
-    /* Link into each base class's list of subclasses */
-    bases = type->tp_bases;
-    n = PyTuple_GET_SIZE(bases);
-    for (i = 0; i < n; i++) {
-        PyObject *b = PyTuple_GET_ITEM(bases, i);
-        if (PyType_Check(b) &&
-            add_subclass((PyTypeObject *)b, type) < 0)
-            goto error;
-    }
-
-    /* All done -- set the ready flag */
-    assert(type->tp_dict != NULL);
-    type->tp_flags =
-        (type->tp_flags & ~Py_TPFLAGS_READYING) | Py_TPFLAGS_READY;
-    return 0;
-
-  error:
-    type->tp_flags &= ~Py_TPFLAGS_READYING;
-    return -1;
-}
-
-static int
-add_subclass(PyTypeObject *base, PyTypeObject *type)
-{
-    Py_ssize_t i;
-    int result;
-    PyObject *list, *ref, *newobj;
-
-    list = base->tp_subclasses;
-    if (list == NULL) {
-        base->tp_subclasses = list = PyList_New(0);
-        if (list == NULL)
-            return -1;
-    }
-    assert(PyList_Check(list));
-    newobj = PyWeakref_NewRef((PyObject *)type, NULL);
-    i = PyList_GET_SIZE(list);
-    while (--i >= 0) {
-        ref = PyList_GET_ITEM(list, i);
-        assert(PyWeakref_CheckRef(ref));
-        if (PyWeakref_GET_OBJECT(ref) == Py_None)
-            return PyList_SetItem(list, i, newobj);
-    }
-    result = PyList_Append(list, newobj);
-    Py_DECREF(newobj);
-    return result;
-}
-
-static void
-remove_subclass(PyTypeObject *base, PyTypeObject *type)
-{
-    Py_ssize_t i;
-    PyObject *list, *ref;
-
-    list = base->tp_subclasses;
-    if (list == NULL) {
-        return;
-    }
-    assert(PyList_Check(list));
-    i = PyList_GET_SIZE(list);
-    while (--i >= 0) {
-        ref = PyList_GET_ITEM(list, i);
-        assert(PyWeakref_CheckRef(ref));
-        if (PyWeakref_GET_OBJECT(ref) == (PyObject*)type) {
-            /* this can't fail, right? */
-            PySequence_DelItem(list, i);
-            return;
-        }
-    }
-}
-
-static int
-check_num_args(PyObject *ob, int n)
-{
-    if (!PyTuple_CheckExact(ob)) {
-        PyErr_SetString(PyExc_SystemError,
-            "PyArg_UnpackTuple() argument list is not a tuple");
-        return 0;
-    }
-    if (n == PyTuple_GET_SIZE(ob))
-        return 1;
-    PyErr_Format(
-        PyExc_TypeError,
-        "expected %d arguments, got %zd", n, PyTuple_GET_SIZE(ob));
-    return 0;
-}
-
-/* Generic wrappers for overloadable 'operators' such as __getitem__ */
-
-/* There's a wrapper *function* for each distinct function typedef used
-   for type object slots (e.g. binaryfunc, ternaryfunc, etc.).  There's a
-   wrapper *table* for each distinct operation (e.g. __len__, __add__).
-   Most tables have only one entry; the tables for binary operators have two
-   entries, one regular and one with reversed arguments. */
-
-static PyObject *
-wrap_lenfunc(PyObject *self, PyObject *args, void *wrapped)
-{
-    lenfunc func = (lenfunc)wrapped;
-    Py_ssize_t res;
-
-    if (!check_num_args(args, 0))
-        return NULL;
-    res = (*func)(self);
-    if (res == -1 && PyErr_Occurred())
-        return NULL;
-    return PyInt_FromLong((long)res);
-}
-
-static PyObject *
-wrap_inquirypred(PyObject *self, PyObject *args, void *wrapped)
-{
-    inquiry func = (inquiry)wrapped;
-    int res;
-
-    if (!check_num_args(args, 0))
-        return NULL;
-    res = (*func)(self);
-    if (res == -1 && PyErr_Occurred())
-        return NULL;
-    return PyBool_FromLong((long)res);
-}
-
-static PyObject *
-wrap_binaryfunc(PyObject *self, PyObject *args, void *wrapped)
-{
-    binaryfunc func = (binaryfunc)wrapped;
-    PyObject *other;
-
-    if (!check_num_args(args, 1))
-        return NULL;
-    other = PyTuple_GET_ITEM(args, 0);
-    return (*func)(self, other);
-}
-
-static PyObject *
-wrap_binaryfunc_l(PyObject *self, PyObject *args, void *wrapped)
-{
-    binaryfunc func = (binaryfunc)wrapped;
-    PyObject *other;
-
-    if (!check_num_args(args, 1))
-        return NULL;
-    other = PyTuple_GET_ITEM(args, 0);
-    if (!(self->ob_type->tp_flags & Py_TPFLAGS_CHECKTYPES) &&
-        !PyType_IsSubtype(other->ob_type, self->ob_type)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    return (*func)(self, other);
-}
-
-static PyObject *
-wrap_binaryfunc_r(PyObject *self, PyObject *args, void *wrapped)
-{
-    binaryfunc func = (binaryfunc)wrapped;
-    PyObject *other;
-
-    if (!check_num_args(args, 1))
-        return NULL;
-    other = PyTuple_GET_ITEM(args, 0);
-    if (!(self->ob_type->tp_flags & Py_TPFLAGS_CHECKTYPES) &&
-        !PyType_IsSubtype(other->ob_type, self->ob_type)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    return (*func)(other, self);
-}
-
-static PyObject *
-wrap_coercefunc(PyObject *self, PyObject *args, void *wrapped)
-{
-    coercion func = (coercion)wrapped;
-    PyObject *other, *res;
-    int ok;
-
-    if (!check_num_args(args, 1))
-        return NULL;
-    other = PyTuple_GET_ITEM(args, 0);
-    ok = func(&self, &other);
-    if (ok < 0)
-        return NULL;
-    if (ok > 0) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    res = PyTuple_New(2);
-    if (res == NULL) {
-        Py_DECREF(self);
-        Py_DECREF(other);
-        return NULL;
-    }
-    PyTuple_SET_ITEM(res, 0, self);
-    PyTuple_SET_ITEM(res, 1, other);
-    return res;
-}
-
-static PyObject *
-wrap_ternaryfunc(PyObject *self, PyObject *args, void *wrapped)
-{
-    ternaryfunc func = (ternaryfunc)wrapped;
-    PyObject *other;
-    PyObject *third = Py_None;
-
-    /* Note: This wrapper only works for __pow__() */
-
-    if (!PyArg_UnpackTuple(args, "", 1, 2, &other, &third))
-        return NULL;
-    return (*func)(self, other, third);
-}
-
-static PyObject *
-wrap_ternaryfunc_r(PyObject *self, PyObject *args, void *wrapped)
-{
-    ternaryfunc func = (ternaryfunc)wrapped;
-    PyObject *other;
-    PyObject *third = Py_None;
-
-    /* Note: This wrapper only works for __pow__() */
-
-    if (!PyArg_UnpackTuple(args, "", 1, 2, &other, &third))
-        return NULL;
-    return (*func)(other, self, third);
-}
-
-static PyObject *
-wrap_unaryfunc(PyObject *self, PyObject *args, void *wrapped)
-{
-    unaryfunc func = (unaryfunc)wrapped;
-
-    if (!check_num_args(args, 0))
-        return NULL;
-    return (*func)(self);
-}
-
-static PyObject *
-wrap_indexargfunc(PyObject *self, PyObject *args, void *wrapped)
-{
-    ssizeargfunc func = (ssizeargfunc)wrapped;
-    PyObject* o;
-    Py_ssize_t i;
-
-    if (!PyArg_UnpackTuple(args, "", 1, 1, &o))
-        return NULL;
-    i = PyNumber_AsSsize_t(o, PyExc_OverflowError);
-    if (i == -1 && PyErr_Occurred())
-        return NULL;
-    return (*func)(self, i);
-}
-
-static Py_ssize_t
-getindex(PyObject *self, PyObject *arg)
-{
-    Py_ssize_t i;
-
-    i = PyNumber_AsSsize_t(arg, PyExc_OverflowError);
-    if (i == -1 && PyErr_Occurred())
-        return -1;
-    if (i < 0) {
-        PySequenceMethods *sq = Py_TYPE(self)->tp_as_sequence;
-        if (sq && sq->sq_length) {
-            Py_ssize_t n = (*sq->sq_length)(self);
-            if (n < 0)
-                return -1;
-            i += n;
-        }
-    }
-    return i;
-}
-
-static PyObject *
-wrap_sq_item(PyObject *self, PyObject *args, void *wrapped)
-{
-    ssizeargfunc func = (ssizeargfunc)wrapped;
-    PyObject *arg;
-    Py_ssize_t i;
-
-    if (PyTuple_GET_SIZE(args) == 1) {
-        arg = PyTuple_GET_ITEM(args, 0);
-        i = getindex(self, arg);
-        if (i == -1 && PyErr_Occurred())
-            return NULL;
-        return (*func)(self, i);
-    }
-    check_num_args(args, 1);
-    assert(PyErr_Occurred());
-    return NULL;
-}
-
-static PyObject *
-wrap_ssizessizeargfunc(PyObject *self, PyObject *args, void *wrapped)
-{
-    ssizessizeargfunc func = (ssizessizeargfunc)wrapped;
-    Py_ssize_t i, j;
-
-    if (!PyArg_ParseTuple(args, "nn", &i, &j))
-        return NULL;
-    return (*func)(self, i, j);
-}
-
-static PyObject *
-wrap_sq_setitem(PyObject *self, PyObject *args, void *wrapped)
-{
-    ssizeobjargproc func = (ssizeobjargproc)wrapped;
-    Py_ssize_t i;
-    int res;
-    PyObject *arg, *value;
-
-    if (!PyArg_UnpackTuple(args, "", 2, 2, &arg, &value))
-        return NULL;
-    i = getindex(self, arg);
-    if (i == -1 && PyErr_Occurred())
-        return NULL;
-    res = (*func)(self, i, value);
-    if (res == -1 && PyErr_Occurred())
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-wrap_sq_delitem(PyObject *self, PyObject *args, void *wrapped)
-{
-    ssizeobjargproc func = (ssizeobjargproc)wrapped;
-    Py_ssize_t i;
-    int res;
-    PyObject *arg;
-
-    if (!check_num_args(args, 1))
-        return NULL;
-    arg = PyTuple_GET_ITEM(args, 0);
-    i = getindex(self, arg);
-    if (i == -1 && PyErr_Occurred())
-        return NULL;
-    res = (*func)(self, i, NULL);
-    if (res == -1 && PyErr_Occurred())
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-wrap_ssizessizeobjargproc(PyObject *self, PyObject *args, void *wrapped)
-{
-    ssizessizeobjargproc func = (ssizessizeobjargproc)wrapped;
-    Py_ssize_t i, j;
-    int res;
-    PyObject *value;
-
-    if (!PyArg_ParseTuple(args, "nnO", &i, &j, &value))
-        return NULL;
-    res = (*func)(self, i, j, value);
-    if (res == -1 && PyErr_Occurred())
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-wrap_delslice(PyObject *self, PyObject *args, void *wrapped)
-{
-    ssizessizeobjargproc func = (ssizessizeobjargproc)wrapped;
-    Py_ssize_t i, j;
-    int res;
-
-    if (!PyArg_ParseTuple(args, "nn", &i, &j))
-        return NULL;
-    res = (*func)(self, i, j, NULL);
-    if (res == -1 && PyErr_Occurred())
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/* XXX objobjproc is a misnomer; should be objargpred */
-static PyObject *
-wrap_objobjproc(PyObject *self, PyObject *args, void *wrapped)
-{
-    objobjproc func = (objobjproc)wrapped;
-    int res;
-    PyObject *value;
-
-    if (!check_num_args(args, 1))
-        return NULL;
-    value = PyTuple_GET_ITEM(args, 0);
-    res = (*func)(self, value);
-    if (res == -1 && PyErr_Occurred())
-        return NULL;
-    else
-        return PyBool_FromLong(res);
-}
-
-static PyObject *
-wrap_objobjargproc(PyObject *self, PyObject *args, void *wrapped)
-{
-    objobjargproc func = (objobjargproc)wrapped;
-    int res;
-    PyObject *key, *value;
-
-    if (!PyArg_UnpackTuple(args, "", 2, 2, &key, &value))
-        return NULL;
-    res = (*func)(self, key, value);
-    if (res == -1 && PyErr_Occurred())
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-wrap_delitem(PyObject *self, PyObject *args, void *wrapped)
-{
-    objobjargproc func = (objobjargproc)wrapped;
-    int res;
-    PyObject *key;
-
-    if (!check_num_args(args, 1))
-        return NULL;
-    key = PyTuple_GET_ITEM(args, 0);
-    res = (*func)(self, key, NULL);
-    if (res == -1 && PyErr_Occurred())
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-wrap_cmpfunc(PyObject *self, PyObject *args, void *wrapped)
-{
-    cmpfunc func = (cmpfunc)wrapped;
-    int res;
-    PyObject *other;
-
-    if (!check_num_args(args, 1))
-        return NULL;
-    other = PyTuple_GET_ITEM(args, 0);
-    if (Py_TYPE(other)->tp_compare != func &&
-        !PyType_IsSubtype(Py_TYPE(other), Py_TYPE(self))) {
-        PyErr_Format(
-            PyExc_TypeError,
-            "%s.__cmp__(x,y) requires y to be a '%s', not a '%s'",
-            Py_TYPE(self)->tp_name,
-            Py_TYPE(self)->tp_name,
-            Py_TYPE(other)->tp_name);
-        return NULL;
-    }
-    res = (*func)(self, other);
-    if (PyErr_Occurred())
-        return NULL;
-    return PyInt_FromLong((long)res);
-}
-
-/* Helper to check for object.__setattr__ or __delattr__ applied to a type.
-   This is called the Carlo Verre hack after its discoverer. */
-static int
-hackcheck(PyObject *self, setattrofunc func, char *what)
-{
-    PyTypeObject *type = Py_TYPE(self);
-    while (type && type->tp_flags & Py_TPFLAGS_HEAPTYPE)
-        type = type->tp_base;
-    /* If type is NULL now, this is a really weird type.
-       In the spirit of backwards compatibility (?), just shut up. */
-    if (type && type->tp_setattro != func) {
-        PyErr_Format(PyExc_TypeError,
-                     "can't apply this %s to %s object",
-                     what,
-                     type->tp_name);
-        return 0;
-    }
-    return 1;
-}
-
-static PyObject *
-wrap_setattr(PyObject *self, PyObject *args, void *wrapped)
-{
-    setattrofunc func = (setattrofunc)wrapped;
-    int res;
-    PyObject *name, *value;
-
-    if (!PyArg_UnpackTuple(args, "", 2, 2, &name, &value))
-        return NULL;
-    if (!hackcheck(self, func, "__setattr__"))
-        return NULL;
-    res = (*func)(self, name, value);
-    if (res < 0)
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-wrap_delattr(PyObject *self, PyObject *args, void *wrapped)
-{
-    setattrofunc func = (setattrofunc)wrapped;
-    int res;
-    PyObject *name;
-
-    if (!check_num_args(args, 1))
-        return NULL;
-    name = PyTuple_GET_ITEM(args, 0);
-    if (!hackcheck(self, func, "__delattr__"))
-        return NULL;
-    res = (*func)(self, name, NULL);
-    if (res < 0)
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-wrap_hashfunc(PyObject *self, PyObject *args, void *wrapped)
-{
-    hashfunc func = (hashfunc)wrapped;
-    long res;
-
-    if (!check_num_args(args, 0))
-        return NULL;
-    res = (*func)(self);
-    if (res == -1 && PyErr_Occurred())
-        return NULL;
-    return PyInt_FromLong(res);
-}
-
-static PyObject *
-wrap_call(PyObject *self, PyObject *args, void *wrapped, PyObject *kwds)
-{
-    ternaryfunc func = (ternaryfunc)wrapped;
-
-    return (*func)(self, args, kwds);
-}
-
-static PyObject *
-wrap_richcmpfunc(PyObject *self, PyObject *args, void *wrapped, int op)
-{
-    richcmpfunc func = (richcmpfunc)wrapped;
-    PyObject *other;
-
-    if (!check_num_args(args, 1))
-        return NULL;
-    other = PyTuple_GET_ITEM(args, 0);
-    return (*func)(self, other, op);
-}
-
-#undef RICHCMP_WRAPPER
-#define RICHCMP_WRAPPER(NAME, OP) \
-static PyObject * \
-richcmp_##NAME(PyObject *self, PyObject *args, void *wrapped) \
-{ \
-    return wrap_richcmpfunc(self, args, wrapped, OP); \
-}
-
-RICHCMP_WRAPPER(lt, Py_LT)
-RICHCMP_WRAPPER(le, Py_LE)
-RICHCMP_WRAPPER(eq, Py_EQ)
-RICHCMP_WRAPPER(ne, Py_NE)
-RICHCMP_WRAPPER(gt, Py_GT)
-RICHCMP_WRAPPER(ge, Py_GE)
-
-static PyObject *
-wrap_next(PyObject *self, PyObject *args, void *wrapped)
-{
-    unaryfunc func = (unaryfunc)wrapped;
-    PyObject *res;
-
-    if (!check_num_args(args, 0))
-        return NULL;
-    res = (*func)(self);
-    if (res == NULL && !PyErr_Occurred())
-        PyErr_SetNone(PyExc_StopIteration);
-    return res;
-}
-
-static PyObject *
-wrap_descr_get(PyObject *self, PyObject *args, void *wrapped)
-{
-    descrgetfunc func = (descrgetfunc)wrapped;
-    PyObject *obj;
-    PyObject *type = NULL;
-
-    if (!PyArg_UnpackTuple(args, "", 1, 2, &obj, &type))
-        return NULL;
-    if (obj == Py_None)
-        obj = NULL;
-    if (type == Py_None)
-        type = NULL;
-    if (type == NULL &&obj == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "__get__(None, None) is invalid");
-        return NULL;
-    }
-    return (*func)(self, obj, type);
-}
-
-static PyObject *
-wrap_descr_set(PyObject *self, PyObject *args, void *wrapped)
-{
-    descrsetfunc func = (descrsetfunc)wrapped;
-    PyObject *obj, *value;
-    int ret;
-
-    if (!PyArg_UnpackTuple(args, "", 2, 2, &obj, &value))
-        return NULL;
-    ret = (*func)(self, obj, value);
-    if (ret < 0)
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-wrap_descr_delete(PyObject *self, PyObject *args, void *wrapped)
-{
-    descrsetfunc func = (descrsetfunc)wrapped;
-    PyObject *obj;
-    int ret;
-
-    if (!check_num_args(args, 1))
-        return NULL;
-    obj = PyTuple_GET_ITEM(args, 0);
-    ret = (*func)(self, obj, NULL);
-    if (ret < 0)
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-wrap_init(PyObject *self, PyObject *args, void *wrapped, PyObject *kwds)
-{
-    initproc func = (initproc)wrapped;
-
-    if (func(self, args, kwds) < 0)
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-tp_new_wrapper(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    PyTypeObject *type, *subtype, *staticbase;
-    PyObject *arg0, *res;
-
-    if (self == NULL || !PyType_Check(self))
-        Py_FatalError("__new__() called with non-type 'self'");
-    type = (PyTypeObject *)self;
-    if (!PyTuple_Check(args) || PyTuple_GET_SIZE(args) < 1) {
-        PyErr_Format(PyExc_TypeError,
-                     "%s.__new__(): not enough arguments",
-                     type->tp_name);
-        return NULL;
-    }
-    arg0 = PyTuple_GET_ITEM(args, 0);
-    if (!PyType_Check(arg0)) {
-        PyErr_Format(PyExc_TypeError,
-                     "%s.__new__(X): X is not a type object (%s)",
-                     type->tp_name,
-                     Py_TYPE(arg0)->tp_name);
-        return NULL;
-    }
-    subtype = (PyTypeObject *)arg0;
-    if (!PyType_IsSubtype(subtype, type)) {
-        PyErr_Format(PyExc_TypeError,
-                     "%s.__new__(%s): %s is not a subtype of %s",
-                     type->tp_name,
-                     subtype->tp_name,
-                     subtype->tp_name,
-                     type->tp_name);
-        return NULL;
-    }
-
-    /* Check that the use doesn't do something silly and unsafe like
-       object.__new__(dict).  To do this, we check that the
-       most derived base that's not a heap type is this type. */
-    staticbase = subtype;
-    while (staticbase && (staticbase->tp_flags & Py_TPFLAGS_HEAPTYPE))
-        staticbase = staticbase->tp_base;
-    /* If staticbase is NULL now, it is a really weird type.
-       In the spirit of backwards compatibility (?), just shut up. */
-    if (staticbase && staticbase->tp_new != type->tp_new) {
-        PyErr_Format(PyExc_TypeError,
-                     "%s.__new__(%s) is not safe, use %s.__new__()",
-                     type->tp_name,
-                     subtype->tp_name,
-                     staticbase == NULL ? "?" : staticbase->tp_name);
-        return NULL;
-    }
-
-    args = PyTuple_GetSlice(args, 1, PyTuple_GET_SIZE(args));
-    if (args == NULL)
-        return NULL;
-    res = type->tp_new(subtype, args, kwds);
-    Py_DECREF(args);
-    return res;
-}
-
-static struct PyMethodDef tp_new_methoddef[] = {
-    {"__new__", (PyCFunction)tp_new_wrapper, METH_VARARGS|METH_KEYWORDS,
-     PyDoc_STR("T.__new__(S, ...) -> "
-               "a new object with type S, a subtype of T")},
-    {0}
-};
-
-static int
-add_tp_new_wrapper(PyTypeObject *type)
-{
-    PyObject *func;
-
-    if (PyDict_GetItemString(type->tp_dict, "__new__") != NULL)
-        return 0;
-    func = PyCFunction_New(tp_new_methoddef, (PyObject *)type);
-    if (func == NULL)
-        return -1;
-    if (PyDict_SetItemString(type->tp_dict, "__new__", func)) {
-        Py_DECREF(func);
-        return -1;
-    }
-    Py_DECREF(func);
-    return 0;
-}
-
-/* Slot wrappers that call the corresponding __foo__ slot.  See comments
-   below at override_slots() for more explanation. */
-
-#define SLOT0(FUNCNAME, OPSTR) \
-static PyObject * \
-FUNCNAME(PyObject *self) \
-{ \
-    static PyObject *cache_str; \
-    return call_method(self, OPSTR, &cache_str, "()"); \
-}
-
-#define SLOT1(FUNCNAME, OPSTR, ARG1TYPE, ARGCODES) \
-static PyObject * \
-FUNCNAME(PyObject *self, ARG1TYPE arg1) \
-{ \
-    static PyObject *cache_str; \
-    return call_method(self, OPSTR, &cache_str, "(" ARGCODES ")", arg1); \
-}
-
-/* Boolean helper for SLOT1BINFULL().
-   right.__class__ is a nontrivial subclass of left.__class__. */
-static int
-method_is_overloaded(PyObject *left, PyObject *right, char *name)
-{
-    PyObject *a, *b;
-    int ok;
-
-    b = PyObject_GetAttrString((PyObject *)(Py_TYPE(right)), name);
-    if (b == NULL) {
-        PyErr_Clear();
-        /* If right doesn't have it, it's not overloaded */
-        return 0;
-    }
-
-    a = PyObject_GetAttrString((PyObject *)(Py_TYPE(left)), name);
-    if (a == NULL) {
-        PyErr_Clear();
-        Py_DECREF(b);
-        /* If right has it but left doesn't, it's overloaded */
-        return 1;
-    }
-
-    ok = PyObject_RichCompareBool(a, b, Py_NE);
-    Py_DECREF(a);
-    Py_DECREF(b);
-    if (ok < 0) {
-        PyErr_Clear();
-        return 0;
-    }
-
-    return ok;
-}
-
-
-#define SLOT1BINFULL(FUNCNAME, TESTFUNC, SLOTNAME, OPSTR, ROPSTR) \
-static PyObject * \
-FUNCNAME(PyObject *self, PyObject *other) \
-{ \
-    static PyObject *cache_str, *rcache_str; \
-    int do_other = Py_TYPE(self) != Py_TYPE(other) && \
-        Py_TYPE(other)->tp_as_number != NULL && \
-        Py_TYPE(other)->tp_as_number->SLOTNAME == TESTFUNC; \
-    if (Py_TYPE(self)->tp_as_number != NULL && \
-        Py_TYPE(self)->tp_as_number->SLOTNAME == TESTFUNC) { \
-        PyObject *r; \
-        if (do_other && \
-            PyType_IsSubtype(Py_TYPE(other), Py_TYPE(self)) && \
-            method_is_overloaded(self, other, ROPSTR)) { \
-            r = call_maybe( \
-                other, ROPSTR, &rcache_str, "(O)", self); \
-            if (r != Py_NotImplemented) \
-                return r; \
-            Py_DECREF(r); \
-            do_other = 0; \
-        } \
-        r = call_maybe( \
-            self, OPSTR, &cache_str, "(O)", other); \
-        if (r != Py_NotImplemented || \
-            Py_TYPE(other) == Py_TYPE(self)) \
-            return r; \
-        Py_DECREF(r); \
-    } \
-    if (do_other) { \
-        return call_maybe( \
-            other, ROPSTR, &rcache_str, "(O)", self); \
-    } \
-    Py_INCREF(Py_NotImplemented); \
-    return Py_NotImplemented; \
-}
-
-#define SLOT1BIN(FUNCNAME, SLOTNAME, OPSTR, ROPSTR) \
-    SLOT1BINFULL(FUNCNAME, FUNCNAME, SLOTNAME, OPSTR, ROPSTR)
-
-#define SLOT2(FUNCNAME, OPSTR, ARG1TYPE, ARG2TYPE, ARGCODES) \
-static PyObject * \
-FUNCNAME(PyObject *self, ARG1TYPE arg1, ARG2TYPE arg2) \
-{ \
-    static PyObject *cache_str; \
-    return call_method(self, OPSTR, &cache_str, \
-                       "(" ARGCODES ")", arg1, arg2); \
-}
-
-static Py_ssize_t
-slot_sq_length(PyObject *self)
-{
-    static PyObject *len_str;
-    PyObject *res = call_method(self, "__len__", &len_str, "()");
-    Py_ssize_t len;
-
-    if (res == NULL)
-        return -1;
-    len = PyInt_AsSsize_t(res);
-    Py_DECREF(res);
-    if (len < 0) {
-        if (!PyErr_Occurred())
-            PyErr_SetString(PyExc_ValueError,
-                            "__len__() should return >= 0");
-        return -1;
-    }
-    return len;
-}
-
-/* Super-optimized version of slot_sq_item.
-   Other slots could do the same... */
-static PyObject *
-slot_sq_item(PyObject *self, Py_ssize_t i)
-{
-    static PyObject *getitem_str;
-    PyObject *func, *args = NULL, *ival = NULL, *retval = NULL;
-    descrgetfunc f;
-
-    if (getitem_str == NULL) {
-        getitem_str = PyString_InternFromString("__getitem__");
-        if (getitem_str == NULL)
-            return NULL;
-    }
-    func = _PyType_Lookup(Py_TYPE(self), getitem_str);
-    if (func != NULL) {
-        if ((f = Py_TYPE(func)->tp_descr_get) == NULL)
-            Py_INCREF(func);
-        else {
-            func = f(func, self, (PyObject *)(Py_TYPE(self)));
-            if (func == NULL) {
-                return NULL;
-            }
-        }
-        ival = PyInt_FromSsize_t(i);
-        if (ival != NULL) {
-            args = PyTuple_New(1);
-            if (args != NULL) {
-                PyTuple_SET_ITEM(args, 0, ival);
-                retval = PyObject_Call(func, args, NULL);
-                Py_XDECREF(args);
-                Py_XDECREF(func);
-                return retval;
-            }
-        }
-    }
-    else {
-        PyErr_SetObject(PyExc_AttributeError, getitem_str);
-    }
-    Py_XDECREF(args);
-    Py_XDECREF(ival);
-    Py_XDECREF(func);
-    return NULL;
-}
-
-static PyObject*
-slot_sq_slice(PyObject *self, Py_ssize_t i, Py_ssize_t j)
-{
-    static PyObject *getslice_str;
-
-    if (PyErr_WarnPy3k("in 3.x, __getslice__ has been removed; "
-                        "use __getitem__", 1) < 0)
-        return NULL;
-    return call_method(self, "__getslice__", &getslice_str,
-        "nn", i, j);
-}
-
-static int
-slot_sq_ass_item(PyObject *self, Py_ssize_t index, PyObject *value)
-{
-    PyObject *res;
-    static PyObject *delitem_str, *setitem_str;
-
-    if (value == NULL)
-        res = call_method(self, "__delitem__", &delitem_str,
-                          "(n)", index);
-    else
-        res = call_method(self, "__setitem__", &setitem_str,
-                          "(nO)", index, value);
-    if (res == NULL)
-        return -1;
-    Py_DECREF(res);
-    return 0;
-}
-
-static int
-slot_sq_ass_slice(PyObject *self, Py_ssize_t i, Py_ssize_t j, PyObject *value)
-{
-    PyObject *res;
-    static PyObject *delslice_str, *setslice_str;
-
-    if (value == NULL) {
-        if (PyErr_WarnPy3k("in 3.x, __delslice__ has been removed; "
-                           "use __delitem__", 1) < 0)
-            return -1;
-        res = call_method(self, "__delslice__", &delslice_str,
-                          "(nn)", i, j);
-    }
-    else {
-        if (PyErr_WarnPy3k("in 3.x, __setslice__ has been removed; "
-                                "use __setitem__", 1) < 0)
-            return -1;
-        res = call_method(self, "__setslice__", &setslice_str,
-                  "(nnO)", i, j, value);
-    }
-    if (res == NULL)
-        return -1;
-    Py_DECREF(res);
-    return 0;
-}
-
-static int
-slot_sq_contains(PyObject *self, PyObject *value)
-{
-    PyObject *func, *res, *args;
-    int result = -1;
-
-    static PyObject *contains_str;
-
-    func = lookup_maybe(self, "__contains__", &contains_str);
-    if (func != NULL) {
-        args = PyTuple_Pack(1, value);
-        if (args == NULL)
-            res = NULL;
-        else {
-            res = PyObject_Call(func, args, NULL);
-            Py_DECREF(args);
-        }
-        Py_DECREF(func);
-        if (res != NULL) {
-            result = PyObject_IsTrue(res);
-            Py_DECREF(res);
-        }
-    }
-    else if (! PyErr_Occurred()) {
-        /* Possible results: -1 and 1 */
-        result = (int)_PySequence_IterSearch(self, value,
-                                         PY_ITERSEARCH_CONTAINS);
-    }
-    return result;
-}
-
-#define slot_mp_length slot_sq_length
-
-SLOT1(slot_mp_subscript, "__getitem__", PyObject *, "O")
-
-static int
-slot_mp_ass_subscript(PyObject *self, PyObject *key, PyObject *value)
-{
-    PyObject *res;
-    static PyObject *delitem_str, *setitem_str;
-
-    if (value == NULL)
-        res = call_method(self, "__delitem__", &delitem_str,
-                          "(O)", key);
-    else
-        res = call_method(self, "__setitem__", &setitem_str,
-                         "(OO)", key, value);
-    if (res == NULL)
-        return -1;
-    Py_DECREF(res);
-    return 0;
-}
-
-SLOT1BIN(slot_nb_add, nb_add, "__add__", "__radd__")
-SLOT1BIN(slot_nb_subtract, nb_subtract, "__sub__", "__rsub__")
-SLOT1BIN(slot_nb_multiply, nb_multiply, "__mul__", "__rmul__")
-SLOT1BIN(slot_nb_divide, nb_divide, "__div__", "__rdiv__")
-SLOT1BIN(slot_nb_remainder, nb_remainder, "__mod__", "__rmod__")
-SLOT1BIN(slot_nb_divmod, nb_divmod, "__divmod__", "__rdivmod__")
-
-static PyObject *slot_nb_power(PyObject *, PyObject *, PyObject *);
-
-SLOT1BINFULL(slot_nb_power_binary, slot_nb_power,
-             nb_power, "__pow__", "__rpow__")
-
-static PyObject *
-slot_nb_power(PyObject *self, PyObject *other, PyObject *modulus)
-{
-    static PyObject *pow_str;
-
-    if (modulus == Py_None)
-        return slot_nb_power_binary(self, other);
-    /* Three-arg power doesn't use __rpow__.  But ternary_op
-       can call this when the second argument's type uses
-       slot_nb_power, so check before calling self.__pow__. */
-    if (Py_TYPE(self)->tp_as_number != NULL &&
-        Py_TYPE(self)->tp_as_number->nb_power == slot_nb_power) {
-        return call_method(self, "__pow__", &pow_str,
-                           "(OO)", other, modulus);
-    }
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-}
-
-SLOT0(slot_nb_negative, "__neg__")
-SLOT0(slot_nb_positive, "__pos__")
-SLOT0(slot_nb_absolute, "__abs__")
-
-static int
-slot_nb_nonzero(PyObject *self)
-{
-    PyObject *func, *args;
-    static PyObject *nonzero_str, *len_str;
-    int result = -1;
-    int using_len = 0;
-
-    func = lookup_maybe(self, "__nonzero__", &nonzero_str);
-    if (func == NULL) {
-        if (PyErr_Occurred())
-            return -1;
-        func = lookup_maybe(self, "__len__", &len_str);
-        if (func == NULL)
-            return PyErr_Occurred() ? -1 : 1;
-        using_len = 1;
-    }
-    args = PyTuple_New(0);
-    if (args != NULL) {
-        PyObject *temp = PyObject_Call(func, args, NULL);
-        Py_DECREF(args);
-        if (temp != NULL) {
-            if (PyInt_CheckExact(temp) || PyBool_Check(temp))
-                result = PyObject_IsTrue(temp);
-            else {
-                PyErr_Format(PyExc_TypeError,
-                             "%s should return "
-                             "bool or int, returned %s",
-                             (using_len ? "__len__"
-                                        : "__nonzero__"),
-                             temp->ob_type->tp_name);
-                result = -1;
-            }
-            Py_DECREF(temp);
-        }
-    }
-    Py_DECREF(func);
-    return result;
-}
-
-
-static PyObject *
-slot_nb_index(PyObject *self)
-{
-    static PyObject *index_str;
-    return call_method(self, "__index__", &index_str, "()");
-}
-
-
-SLOT0(slot_nb_invert, "__invert__")
-SLOT1BIN(slot_nb_lshift, nb_lshift, "__lshift__", "__rlshift__")
-SLOT1BIN(slot_nb_rshift, nb_rshift, "__rshift__", "__rrshift__")
-SLOT1BIN(slot_nb_and, nb_and, "__and__", "__rand__")
-SLOT1BIN(slot_nb_xor, nb_xor, "__xor__", "__rxor__")
-SLOT1BIN(slot_nb_or, nb_or, "__or__", "__ror__")
-
-static int
-slot_nb_coerce(PyObject **a, PyObject **b)
-{
-    static PyObject *coerce_str;
-    PyObject *self = *a, *other = *b;
-
-    if (self->ob_type->tp_as_number != NULL &&
-        self->ob_type->tp_as_number->nb_coerce == slot_nb_coerce) {
-        PyObject *r;
-        r = call_maybe(
-            self, "__coerce__", &coerce_str, "(O)", other);
-        if (r == NULL)
-            return -1;
-        if (r == Py_NotImplemented) {
-            Py_DECREF(r);
-        }
-        else {
-            if (!PyTuple_Check(r) || PyTuple_GET_SIZE(r) != 2) {
-                PyErr_SetString(PyExc_TypeError,
-                    "__coerce__ didn't return a 2-tuple");
-                Py_DECREF(r);
-                return -1;
-            }
-            *a = PyTuple_GET_ITEM(r, 0);
-            Py_INCREF(*a);
-            *b = PyTuple_GET_ITEM(r, 1);
-            Py_INCREF(*b);
-            Py_DECREF(r);
-            return 0;
-        }
-    }
-    if (other->ob_type->tp_as_number != NULL &&
-        other->ob_type->tp_as_number->nb_coerce == slot_nb_coerce) {
-        PyObject *r;
-        r = call_maybe(
-            other, "__coerce__", &coerce_str, "(O)", self);
-        if (r == NULL)
-            return -1;
-        if (r == Py_NotImplemented) {
-            Py_DECREF(r);
-            return 1;
-        }
-        if (!PyTuple_Check(r) || PyTuple_GET_SIZE(r) != 2) {
-            PyErr_SetString(PyExc_TypeError,
-                            "__coerce__ didn't return a 2-tuple");
-            Py_DECREF(r);
-            return -1;
-        }
-        *a = PyTuple_GET_ITEM(r, 1);
-        Py_INCREF(*a);
-        *b = PyTuple_GET_ITEM(r, 0);
-        Py_INCREF(*b);
-        Py_DECREF(r);
-        return 0;
-    }
-    return 1;
-}
-
-SLOT0(slot_nb_int, "__int__")
-SLOT0(slot_nb_long, "__long__")
-SLOT0(slot_nb_float, "__float__")
-SLOT0(slot_nb_oct, "__oct__")
-SLOT0(slot_nb_hex, "__hex__")
-SLOT1(slot_nb_inplace_add, "__iadd__", PyObject *, "O")
-SLOT1(slot_nb_inplace_subtract, "__isub__", PyObject *, "O")
-SLOT1(slot_nb_inplace_multiply, "__imul__", PyObject *, "O")
-SLOT1(slot_nb_inplace_divide, "__idiv__", PyObject *, "O")
-SLOT1(slot_nb_inplace_remainder, "__imod__", PyObject *, "O")
-/* Can't use SLOT1 here, because nb_inplace_power is ternary */
-static PyObject *
-slot_nb_inplace_power(PyObject *self, PyObject * arg1, PyObject *arg2)
-{
-  static PyObject *cache_str;
-  return call_method(self, "__ipow__", &cache_str, "(" "O" ")", arg1);
-}
-SLOT1(slot_nb_inplace_lshift, "__ilshift__", PyObject *, "O")
-SLOT1(slot_nb_inplace_rshift, "__irshift__", PyObject *, "O")
-SLOT1(slot_nb_inplace_and, "__iand__", PyObject *, "O")
-SLOT1(slot_nb_inplace_xor, "__ixor__", PyObject *, "O")
-SLOT1(slot_nb_inplace_or, "__ior__", PyObject *, "O")
-SLOT1BIN(slot_nb_floor_divide, nb_floor_divide,
-         "__floordiv__", "__rfloordiv__")
-SLOT1BIN(slot_nb_true_divide, nb_true_divide, "__truediv__", "__rtruediv__")
-SLOT1(slot_nb_inplace_floor_divide, "__ifloordiv__", PyObject *, "O")
-SLOT1(slot_nb_inplace_true_divide, "__itruediv__", PyObject *, "O")
-
-static int
-half_compare(PyObject *self, PyObject *other)
-{
-    PyObject *func, *args, *res;
-    static PyObject *cmp_str;
-    Py_ssize_t c;
-
-    func = lookup_method(self, "__cmp__", &cmp_str);
-    if (func == NULL) {
-        PyErr_Clear();
-    }
-    else {
-        args = PyTuple_Pack(1, other);
-        if (args == NULL)
-            res = NULL;
-        else {
-            res = PyObject_Call(func, args, NULL);
-            Py_DECREF(args);
-        }
-        Py_DECREF(func);
-        if (res != Py_NotImplemented) {
-            if (res == NULL)
-                return -2;
-            c = PyInt_AsLong(res);
-            Py_DECREF(res);
-            if (c == -1 && PyErr_Occurred())
-                return -2;
-            return (c < 0) ? -1 : (c > 0) ? 1 : 0;
-        }
-        Py_DECREF(res);
-    }
-    return 2;
-}
-
-/* This slot is published for the benefit of try_3way_compare in object.c */
-int
-_PyObject_SlotCompare(PyObject *self, PyObject *other)
-{
-    int c;
-
-    if (Py_TYPE(self)->tp_compare == _PyObject_SlotCompare) {
-        c = half_compare(self, other);
-        if (c <= 1)
-            return c;
-    }
-    if (Py_TYPE(other)->tp_compare == _PyObject_SlotCompare) {
-        c = half_compare(other, self);
-        if (c < -1)
-            return -2;
-        if (c <= 1)
-            return -c;
-    }
-    return (void *)self < (void *)other ? -1 :
-        (void *)self > (void *)other ? 1 : 0;
-}
-
-static PyObject *
-slot_tp_repr(PyObject *self)
-{
-    PyObject *func, *res;
-    static PyObject *repr_str;
-
-    func = lookup_method(self, "__repr__", &repr_str);
-    if (func != NULL) {
-        res = PyEval_CallObject(func, NULL);
-        Py_DECREF(func);
-        return res;
-    }
-    PyErr_Clear();
-    return PyString_FromFormat("<%s object at %p>",
-                               Py_TYPE(self)->tp_name, self);
-}
-
-static PyObject *
-slot_tp_str(PyObject *self)
-{
-    PyObject *func, *res;
-    static PyObject *str_str;
-
-    func = lookup_method(self, "__str__", &str_str);
-    if (func != NULL) {
-        res = PyEval_CallObject(func, NULL);
-        Py_DECREF(func);
-        return res;
-    }
-    else {
-        PyErr_Clear();
-        return slot_tp_repr(self);
-    }
-}
-
-static long
-slot_tp_hash(PyObject *self)
-{
-    PyObject *func;
-    static PyObject *hash_str, *eq_str, *cmp_str;
-    long h;
-
-    func = lookup_method(self, "__hash__", &hash_str);
-
-    if (func != NULL && func != Py_None) {
-        PyObject *res = PyEval_CallObject(func, NULL);
-        Py_DECREF(func);
-        if (res == NULL)
-            return -1;
-        if (PyLong_Check(res))
-            h = PyLong_Type.tp_hash(res);
-        else
-            h = PyInt_AsLong(res);
-        Py_DECREF(res);
-    }
-    else {
-        Py_XDECREF(func); /* may be None */
-        PyErr_Clear();
-        func = lookup_method(self, "__eq__", &eq_str);
-        if (func == NULL) {
-            PyErr_Clear();
-            func = lookup_method(self, "__cmp__", &cmp_str);
-        }
-        if (func != NULL) {
-            Py_DECREF(func);
-            return PyObject_HashNotImplemented(self);
-        }
-        PyErr_Clear();
-        h = _Py_HashPointer((void *)self);
-    }
-    if (h == -1 && !PyErr_Occurred())
-        h = -2;
-    return h;
-}
-
-static PyObject *
-slot_tp_call(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    static PyObject *call_str;
-    PyObject *meth = lookup_method(self, "__call__", &call_str);
-    PyObject *res;
-
-    if (meth == NULL)
-        return NULL;
-
-    res = PyObject_Call(meth, args, kwds);
-
-    Py_DECREF(meth);
-    return res;
-}
-
-/* There are two slot dispatch functions for tp_getattro.
-
-   - slot_tp_getattro() is used when __getattribute__ is overridden
-     but no __getattr__ hook is present;
-
-   - slot_tp_getattr_hook() is used when a __getattr__ hook is present.
-
-   The code in update_one_slot() always installs slot_tp_getattr_hook(); this
-   detects the absence of __getattr__ and then installs the simpler slot if
-   necessary. */
-
-static PyObject *
-slot_tp_getattro(PyObject *self, PyObject *name)
-{
-    static PyObject *getattribute_str = NULL;
-    return call_method(self, "__getattribute__", &getattribute_str,
-                       "(O)", name);
-}
-
-static PyObject *
-call_attribute(PyObject *self, PyObject *attr, PyObject *name)
-{
-    PyObject *res, *descr = NULL;
-    descrgetfunc f = Py_TYPE(attr)->tp_descr_get;
-
-    if (f != NULL) {
-        descr = f(attr, self, (PyObject *)(Py_TYPE(self)));
-        if (descr == NULL)
-            return NULL;
-        else
-            attr = descr;
-    }
-    res = PyObject_CallFunctionObjArgs(attr, name, NULL);
-    Py_XDECREF(descr);
-    return res;
-}
-
-static PyObject *
-slot_tp_getattr_hook(PyObject *self, PyObject *name)
-{
-    PyTypeObject *tp = Py_TYPE(self);
-    PyObject *getattr, *getattribute, *res;
-    static PyObject *getattribute_str = NULL;
-    static PyObject *getattr_str = NULL;
-
-    if (getattr_str == NULL) {
-        getattr_str = PyString_InternFromString("__getattr__");
-        if (getattr_str == NULL)
-            return NULL;
-    }
-    if (getattribute_str == NULL) {
-        getattribute_str =
-            PyString_InternFromString("__getattribute__");
-        if (getattribute_str == NULL)
-            return NULL;
-    }
-    /* speed hack: we could use lookup_maybe, but that would resolve the
-       method fully for each attribute lookup for classes with
-       __getattr__, even when the attribute is present. So we use
-       _PyType_Lookup and create the method only when needed, with
-       call_attribute. */
-    getattr = _PyType_Lookup(tp, getattr_str);
-    if (getattr == NULL) {
-        /* No __getattr__ hook: use a simpler dispatcher */
-        tp->tp_getattro = slot_tp_getattro;
-        return slot_tp_getattro(self, name);
-    }
-    Py_INCREF(getattr);
-    /* speed hack: we could use lookup_maybe, but that would resolve the
-       method fully for each attribute lookup for classes with
-       __getattr__, even when self has the default __getattribute__
-       method. So we use _PyType_Lookup and create the method only when
-       needed, with call_attribute. */
-    getattribute = _PyType_Lookup(tp, getattribute_str);
-    if (getattribute == NULL ||
-        (Py_TYPE(getattribute) == &PyWrapperDescr_Type &&
-         ((PyWrapperDescrObject *)getattribute)->d_wrapped ==
-         (void *)PyObject_GenericGetAttr))
-        res = PyObject_GenericGetAttr(self, name);
-    else {
-        Py_INCREF(getattribute);
-        res = call_attribute(self, getattribute, name);
-        Py_DECREF(getattribute);
-    }
-    if (res == NULL && PyErr_ExceptionMatches(PyExc_AttributeError)) {
-        PyErr_Clear();
-        res = call_attribute(self, getattr, name);
-    }
-    Py_DECREF(getattr);
-    return res;
-}
-
-static int
-slot_tp_setattro(PyObject *self, PyObject *name, PyObject *value)
-{
-    PyObject *res;
-    static PyObject *delattr_str, *setattr_str;
-
-    if (value == NULL)
-        res = call_method(self, "__delattr__", &delattr_str,
-                          "(O)", name);
-    else
-        res = call_method(self, "__setattr__", &setattr_str,
-                          "(OO)", name, value);
-    if (res == NULL)
-        return -1;
-    Py_DECREF(res);
-    return 0;
-}
-
-static char *name_op[] = {
-    "__lt__",
-    "__le__",
-    "__eq__",
-    "__ne__",
-    "__gt__",
-    "__ge__",
-};
-
-static PyObject *
-half_richcompare(PyObject *self, PyObject *other, int op)
-{
-    PyObject *func, *args, *res;
-    static PyObject *op_str[6];
-
-    func = lookup_method(self, name_op[op], &op_str[op]);
-    if (func == NULL) {
-        PyErr_Clear();
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    args = PyTuple_Pack(1, other);
-    if (args == NULL)
-        res = NULL;
-    else {
-        res = PyObject_Call(func, args, NULL);
-        Py_DECREF(args);
-    }
-    Py_DECREF(func);
-    return res;
-}
-
-static PyObject *
-slot_tp_richcompare(PyObject *self, PyObject *other, int op)
-{
-    PyObject *res;
-
-    if (Py_TYPE(self)->tp_richcompare == slot_tp_richcompare) {
-        res = half_richcompare(self, other, op);
-        if (res != Py_NotImplemented)
-            return res;
-        Py_DECREF(res);
-    }
-    if (Py_TYPE(other)->tp_richcompare == slot_tp_richcompare) {
-        res = half_richcompare(other, self, _Py_SwappedOp[op]);
-        if (res != Py_NotImplemented) {
-            return res;
-        }
-        Py_DECREF(res);
-    }
-    Py_INCREF(Py_NotImplemented);
-    return Py_NotImplemented;
-}
-
-static PyObject *
-slot_tp_iter(PyObject *self)
-{
-    PyObject *func, *res;
-    static PyObject *iter_str, *getitem_str;
-
-    func = lookup_method(self, "__iter__", &iter_str);
-    if (func != NULL) {
-        PyObject *args;
-        args = res = PyTuple_New(0);
-        if (args != NULL) {
-            res = PyObject_Call(func, args, NULL);
-            Py_DECREF(args);
-        }
-        Py_DECREF(func);
-        return res;
-    }
-    PyErr_Clear();
-    func = lookup_method(self, "__getitem__", &getitem_str);
-    if (func == NULL) {
-        PyErr_Format(PyExc_TypeError,
-                     "'%.200s' object is not iterable",
-                     Py_TYPE(self)->tp_name);
-        return NULL;
-    }
-    Py_DECREF(func);
-    return PySeqIter_New(self);
-}
-
-static PyObject *
-slot_tp_iternext(PyObject *self)
-{
-    static PyObject *next_str;
-    return call_method(self, "next", &next_str, "()");
-}
-
-static PyObject *
-slot_tp_descr_get(PyObject *self, PyObject *obj, PyObject *type)
-{
-    PyTypeObject *tp = Py_TYPE(self);
-    PyObject *get;
-    static PyObject *get_str = NULL;
-
-    if (get_str == NULL) {
-        get_str = PyString_InternFromString("__get__");
-        if (get_str == NULL)
-            return NULL;
-    }
-    get = _PyType_Lookup(tp, get_str);
-    if (get == NULL) {
-        /* Avoid further slowdowns */
-        if (tp->tp_descr_get == slot_tp_descr_get)
-            tp->tp_descr_get = NULL;
-        Py_INCREF(self);
-        return self;
-    }
-    if (obj == NULL)
-        obj = Py_None;
-    if (type == NULL)
-        type = Py_None;
-    return PyObject_CallFunctionObjArgs(get, self, obj, type, NULL);
-}
-
-static int
-slot_tp_descr_set(PyObject *self, PyObject *target, PyObject *value)
-{
-    PyObject *res;
-    static PyObject *del_str, *set_str;
-
-    if (value == NULL)
-        res = call_method(self, "__delete__", &del_str,
-                          "(O)", target);
-    else
-        res = call_method(self, "__set__", &set_str,
-                          "(OO)", target, value);
-    if (res == NULL)
-        return -1;
-    Py_DECREF(res);
-    return 0;
-}
-
-static int
-slot_tp_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    static PyObject *init_str;
-    PyObject *meth = lookup_method(self, "__init__", &init_str);
-    PyObject *res;
-
-    if (meth == NULL)
-        return -1;
-    res = PyObject_Call(meth, args, kwds);
-    Py_DECREF(meth);
-    if (res == NULL)
-        return -1;
-    if (res != Py_None) {
-        PyErr_Format(PyExc_TypeError,
-                     "__init__() should return None, not '%.200s'",
-                     Py_TYPE(res)->tp_name);
-        Py_DECREF(res);
-        return -1;
-    }
-    Py_DECREF(res);
-    return 0;
-}
-
-static PyObject *
-slot_tp_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    static PyObject *new_str;
-    PyObject *func;
-    PyObject *newargs, *x;
-    Py_ssize_t i, n;
-
-    if (new_str == NULL) {
-        new_str = PyString_InternFromString("__new__");
-        if (new_str == NULL)
-            return NULL;
-    }
-    func = PyObject_GetAttr((PyObject *)type, new_str);
-    if (func == NULL)
-        return NULL;
-    assert(PyTuple_Check(args));
-    n = PyTuple_GET_SIZE(args);
-    newargs = PyTuple_New(n+1);
-    if (newargs == NULL)
-        return NULL;
-    Py_INCREF(type);
-    PyTuple_SET_ITEM(newargs, 0, (PyObject *)type);
-    for (i = 0; i < n; i++) {
-        x = PyTuple_GET_ITEM(args, i);
-        Py_INCREF(x);
-        PyTuple_SET_ITEM(newargs, i+1, x);
-    }
-    x = PyObject_Call(func, newargs, kwds);
-    Py_DECREF(newargs);
-    Py_DECREF(func);
-    return x;
-}
-
-static void
-slot_tp_del(PyObject *self)
-{
-    static PyObject *del_str = NULL;
-    PyObject *del, *res;
-    PyObject *error_type, *error_value, *error_traceback;
-
-    /* Temporarily resurrect the object. */
-    assert(self->ob_refcnt == 0);
-    self->ob_refcnt = 1;
-
-    /* Save the current exception, if any. */
-    PyErr_Fetch(&error_type, &error_value, &error_traceback);
-
-    /* Execute __del__ method, if any. */
-    del = lookup_maybe(self, "__del__", &del_str);
-    if (del != NULL) {
-        res = PyEval_CallObject(del, NULL);
-        if (res == NULL)
-            PyErr_WriteUnraisable(del);
-        else
-            Py_DECREF(res);
-        Py_DECREF(del);
-    }
-
-    /* Restore the saved exception. */
-    PyErr_Restore(error_type, error_value, error_traceback);
-
-    /* Undo the temporary resurrection; can't use DECREF here, it would
-     * cause a recursive call.
-     */
-    assert(self->ob_refcnt > 0);
-    if (--self->ob_refcnt == 0)
-        return;         /* this is the normal path out */
-
-    /* __del__ resurrected it!  Make it look like the original Py_DECREF
-     * never happened.
-     */
-    {
-        Py_ssize_t refcnt = self->ob_refcnt;
-        _Py_NewReference(self);
-        self->ob_refcnt = refcnt;
-    }
-    assert(!PyType_IS_GC(Py_TYPE(self)) ||
-           _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
-    /* If Py_REF_DEBUG, _Py_NewReference bumped _Py_RefTotal, so
-     * we need to undo that. */
-    _Py_DEC_REFTOTAL;
-    /* If Py_TRACE_REFS, _Py_NewReference re-added self to the object
-     * chain, so no more to do there.
-     * If COUNT_ALLOCS, the original decref bumped tp_frees, and
-     * _Py_NewReference bumped tp_allocs:  both of those need to be
-     * undone.
-     */
-#ifdef COUNT_ALLOCS
-    --Py_TYPE(self)->tp_frees;
-    --Py_TYPE(self)->tp_allocs;
-#endif
-}
-
-
-/* Table mapping __foo__ names to tp_foo offsets and slot_tp_foo wrapper
-   functions.  The offsets here are relative to the 'PyHeapTypeObject'
-   structure, which incorporates the additional structures used for numbers,
-   sequences and mappings.
-   Note that multiple names may map to the same slot (e.g. __eq__,
-   __ne__ etc. all map to tp_richcompare) and one name may map to multiple
-   slots (e.g. __str__ affects tp_str as well as tp_repr). The table is
-   terminated with an all-zero entry.  (This table is further initialized and
-   sorted in init_slotdefs() below.) */
-
-typedef struct wrapperbase slotdef;
-
-#undef TPSLOT
-#undef FLSLOT
-#undef ETSLOT
-#undef SQSLOT
-#undef MPSLOT
-#undef NBSLOT
-#undef UNSLOT
-#undef IBSLOT
-#undef BINSLOT
-#undef RBINSLOT
-
-#define TPSLOT(NAME, SLOT, FUNCTION, WRAPPER, DOC) \
-    {NAME, offsetof(PyTypeObject, SLOT), (void *)(FUNCTION), WRAPPER, \
-     PyDoc_STR(DOC)}
-#define FLSLOT(NAME, SLOT, FUNCTION, WRAPPER, DOC, FLAGS) \
-    {NAME, offsetof(PyTypeObject, SLOT), (void *)(FUNCTION), WRAPPER, \
-     PyDoc_STR(DOC), FLAGS}
-#define ETSLOT(NAME, SLOT, FUNCTION, WRAPPER, DOC) \
-    {NAME, offsetof(PyHeapTypeObject, SLOT), (void *)(FUNCTION), WRAPPER, \
-     PyDoc_STR(DOC)}
-#define SQSLOT(NAME, SLOT, FUNCTION, WRAPPER, DOC) \
-    ETSLOT(NAME, as_sequence.SLOT, FUNCTION, WRAPPER, DOC)
-#define MPSLOT(NAME, SLOT, FUNCTION, WRAPPER, DOC) \
-    ETSLOT(NAME, as_mapping.SLOT, FUNCTION, WRAPPER, DOC)
-#define NBSLOT(NAME, SLOT, FUNCTION, WRAPPER, DOC) \
-    ETSLOT(NAME, as_number.SLOT, FUNCTION, WRAPPER, DOC)
-#define UNSLOT(NAME, SLOT, FUNCTION, WRAPPER, DOC) \
-    ETSLOT(NAME, as_number.SLOT, FUNCTION, WRAPPER, \
-           "x." NAME "() <==> " DOC)
-#define IBSLOT(NAME, SLOT, FUNCTION, WRAPPER, DOC) \
-    ETSLOT(NAME, as_number.SLOT, FUNCTION, WRAPPER, \
-           "x." NAME "(y) <==> x" DOC "y")
-#define BINSLOT(NAME, SLOT, FUNCTION, DOC) \
-    ETSLOT(NAME, as_number.SLOT, FUNCTION, wrap_binaryfunc_l, \
-           "x." NAME "(y) <==> x" DOC "y")
-#define RBINSLOT(NAME, SLOT, FUNCTION, DOC) \
-    ETSLOT(NAME, as_number.SLOT, FUNCTION, wrap_binaryfunc_r, \
-           "x." NAME "(y) <==> y" DOC "x")
-#define BINSLOTNOTINFIX(NAME, SLOT, FUNCTION, DOC) \
-    ETSLOT(NAME, as_number.SLOT, FUNCTION, wrap_binaryfunc_l, \
-           "x." NAME "(y) <==> " DOC)
-#define RBINSLOTNOTINFIX(NAME, SLOT, FUNCTION, DOC) \
-    ETSLOT(NAME, as_number.SLOT, FUNCTION, wrap_binaryfunc_r, \
-           "x." NAME "(y) <==> " DOC)
-
-static slotdef slotdefs[] = {
-    SQSLOT("__len__", sq_length, slot_sq_length, wrap_lenfunc,
-           "x.__len__() <==> len(x)"),
-    /* Heap types defining __add__/__mul__ have sq_concat/sq_repeat == NULL.
-       The logic in abstract.c always falls back to nb_add/nb_multiply in
-       this case.  Defining both the nb_* and the sq_* slots to call the
-       user-defined methods has unexpected side-effects, as shown by
-       test_descr.notimplemented() */
-    SQSLOT("__add__", sq_concat, NULL, wrap_binaryfunc,
-      "x.__add__(y) <==> x+y"),
-    SQSLOT("__mul__", sq_repeat, NULL, wrap_indexargfunc,
-      "x.__mul__(n) <==> x*n"),
-    SQSLOT("__rmul__", sq_repeat, NULL, wrap_indexargfunc,
-      "x.__rmul__(n) <==> n*x"),
-    SQSLOT("__getitem__", sq_item, slot_sq_item, wrap_sq_item,
-           "x.__getitem__(y) <==> x[y]"),
-    SQSLOT("__getslice__", sq_slice, slot_sq_slice, wrap_ssizessizeargfunc,
-           "x.__getslice__(i, j) <==> x[i:j]\n\
-           \n\
-           Use of negative indices is not supported."),
-    SQSLOT("__setitem__", sq_ass_item, slot_sq_ass_item, wrap_sq_setitem,
-           "x.__setitem__(i, y) <==> x[i]=y"),
-    SQSLOT("__delitem__", sq_ass_item, slot_sq_ass_item, wrap_sq_delitem,
-           "x.__delitem__(y) <==> del x[y]"),
-    SQSLOT("__setslice__", sq_ass_slice, slot_sq_ass_slice,
-           wrap_ssizessizeobjargproc,
-           "x.__setslice__(i, j, y) <==> x[i:j]=y\n\
-           \n\
-           Use  of negative indices is not supported."),
-    SQSLOT("__delslice__", sq_ass_slice, slot_sq_ass_slice, wrap_delslice,
-           "x.__delslice__(i, j) <==> del x[i:j]\n\
-           \n\
-           Use of negative indices is not supported."),
-    SQSLOT("__contains__", sq_contains, slot_sq_contains, wrap_objobjproc,
-           "x.__contains__(y) <==> y in x"),
-    SQSLOT("__iadd__", sq_inplace_concat, NULL,
-      wrap_binaryfunc, "x.__iadd__(y) <==> x+=y"),
-    SQSLOT("__imul__", sq_inplace_repeat, NULL,
-      wrap_indexargfunc, "x.__imul__(y) <==> x*=y"),
-
-    MPSLOT("__len__", mp_length, slot_mp_length, wrap_lenfunc,
-           "x.__len__() <==> len(x)"),
-    MPSLOT("__getitem__", mp_subscript, slot_mp_subscript,
-           wrap_binaryfunc,
-           "x.__getitem__(y) <==> x[y]"),
-    MPSLOT("__setitem__", mp_ass_subscript, slot_mp_ass_subscript,
-           wrap_objobjargproc,
-           "x.__setitem__(i, y) <==> x[i]=y"),
-    MPSLOT("__delitem__", mp_ass_subscript, slot_mp_ass_subscript,
-           wrap_delitem,
-           "x.__delitem__(y) <==> del x[y]"),
-
-    BINSLOT("__add__", nb_add, slot_nb_add,
-        "+"),
-    RBINSLOT("__radd__", nb_add, slot_nb_add,
-             "+"),
-    BINSLOT("__sub__", nb_subtract, slot_nb_subtract,
-        "-"),
-    RBINSLOT("__rsub__", nb_subtract, slot_nb_subtract,
-             "-"),
-    BINSLOT("__mul__", nb_multiply, slot_nb_multiply,
-        "*"),
-    RBINSLOT("__rmul__", nb_multiply, slot_nb_multiply,
-             "*"),
-    BINSLOT("__div__", nb_divide, slot_nb_divide,
-        "/"),
-    RBINSLOT("__rdiv__", nb_divide, slot_nb_divide,
-             "/"),
-    BINSLOT("__mod__", nb_remainder, slot_nb_remainder,
-        "%"),
-    RBINSLOT("__rmod__", nb_remainder, slot_nb_remainder,
-             "%"),
-    BINSLOTNOTINFIX("__divmod__", nb_divmod, slot_nb_divmod,
-        "divmod(x, y)"),
-    RBINSLOTNOTINFIX("__rdivmod__", nb_divmod, slot_nb_divmod,
-             "divmod(y, x)"),
-    NBSLOT("__pow__", nb_power, slot_nb_power, wrap_ternaryfunc,
-           "x.__pow__(y[, z]) <==> pow(x, y[, z])"),
-    NBSLOT("__rpow__", nb_power, slot_nb_power, wrap_ternaryfunc_r,
-           "y.__rpow__(x[, z]) <==> pow(x, y[, z])"),
-    UNSLOT("__neg__", nb_negative, slot_nb_negative, wrap_unaryfunc, "-x"),
-    UNSLOT("__pos__", nb_positive, slot_nb_positive, wrap_unaryfunc, "+x"),
-    UNSLOT("__abs__", nb_absolute, slot_nb_absolute, wrap_unaryfunc,
-           "abs(x)"),
-    UNSLOT("__nonzero__", nb_nonzero, slot_nb_nonzero, wrap_inquirypred,
-           "x != 0"),
-    UNSLOT("__invert__", nb_invert, slot_nb_invert, wrap_unaryfunc, "~x"),
-    BINSLOT("__lshift__", nb_lshift, slot_nb_lshift, "<<"),
-    RBINSLOT("__rlshift__", nb_lshift, slot_nb_lshift, "<<"),
-    BINSLOT("__rshift__", nb_rshift, slot_nb_rshift, ">>"),
-    RBINSLOT("__rrshift__", nb_rshift, slot_nb_rshift, ">>"),
-    BINSLOT("__and__", nb_and, slot_nb_and, "&"),
-    RBINSLOT("__rand__", nb_and, slot_nb_and, "&"),
-    BINSLOT("__xor__", nb_xor, slot_nb_xor, "^"),
-    RBINSLOT("__rxor__", nb_xor, slot_nb_xor, "^"),
-    BINSLOT("__or__", nb_or, slot_nb_or, "|"),
-    RBINSLOT("__ror__", nb_or, slot_nb_or, "|"),
-    NBSLOT("__coerce__", nb_coerce, slot_nb_coerce, wrap_coercefunc,
-           "x.__coerce__(y) <==> coerce(x, y)"),
-    UNSLOT("__int__", nb_int, slot_nb_int, wrap_unaryfunc,
-           "int(x)"),
-    UNSLOT("__long__", nb_long, slot_nb_long, wrap_unaryfunc,
-           "long(x)"),
-    UNSLOT("__float__", nb_float, slot_nb_float, wrap_unaryfunc,
-           "float(x)"),
-    UNSLOT("__oct__", nb_oct, slot_nb_oct, wrap_unaryfunc,
-           "oct(x)"),
-    UNSLOT("__hex__", nb_hex, slot_nb_hex, wrap_unaryfunc,
-           "hex(x)"),
-    NBSLOT("__index__", nb_index, slot_nb_index, wrap_unaryfunc,
-           "x[y:z] <==> x[y.__index__():z.__index__()]"),
-    IBSLOT("__iadd__", nb_inplace_add, slot_nb_inplace_add,
-           wrap_binaryfunc, "+"),
-    IBSLOT("__isub__", nb_inplace_subtract, slot_nb_inplace_subtract,
-           wrap_binaryfunc, "-"),
-    IBSLOT("__imul__", nb_inplace_multiply, slot_nb_inplace_multiply,
-           wrap_binaryfunc, "*"),
-    IBSLOT("__idiv__", nb_inplace_divide, slot_nb_inplace_divide,
-           wrap_binaryfunc, "/"),
-    IBSLOT("__imod__", nb_inplace_remainder, slot_nb_inplace_remainder,
-           wrap_binaryfunc, "%"),
-    IBSLOT("__ipow__", nb_inplace_power, slot_nb_inplace_power,
-           wrap_binaryfunc, "**"),
-    IBSLOT("__ilshift__", nb_inplace_lshift, slot_nb_inplace_lshift,
-           wrap_binaryfunc, "<<"),
-    IBSLOT("__irshift__", nb_inplace_rshift, slot_nb_inplace_rshift,
-           wrap_binaryfunc, ">>"),
-    IBSLOT("__iand__", nb_inplace_and, slot_nb_inplace_and,
-           wrap_binaryfunc, "&"),
-    IBSLOT("__ixor__", nb_inplace_xor, slot_nb_inplace_xor,
-           wrap_binaryfunc, "^"),
-    IBSLOT("__ior__", nb_inplace_or, slot_nb_inplace_or,
-           wrap_binaryfunc, "|"),
-    BINSLOT("__floordiv__", nb_floor_divide, slot_nb_floor_divide, "//"),
-    RBINSLOT("__rfloordiv__", nb_floor_divide, slot_nb_floor_divide, "//"),
-    BINSLOT("__truediv__", nb_true_divide, slot_nb_true_divide, "/"),
-    RBINSLOT("__rtruediv__", nb_true_divide, slot_nb_true_divide, "/"),
-    IBSLOT("__ifloordiv__", nb_inplace_floor_divide,
-           slot_nb_inplace_floor_divide, wrap_binaryfunc, "//"),
-    IBSLOT("__itruediv__", nb_inplace_true_divide,
-           slot_nb_inplace_true_divide, wrap_binaryfunc, "/"),
-
-    TPSLOT("__str__", tp_str, slot_tp_str, wrap_unaryfunc,
-           "x.__str__() <==> str(x)"),
-    TPSLOT("__str__", tp_print, NULL, NULL, ""),
-    TPSLOT("__repr__", tp_repr, slot_tp_repr, wrap_unaryfunc,
-           "x.__repr__() <==> repr(x)"),
-    TPSLOT("__repr__", tp_print, NULL, NULL, ""),
-    TPSLOT("__cmp__", tp_compare, _PyObject_SlotCompare, wrap_cmpfunc,
-           "x.__cmp__(y) <==> cmp(x,y)"),
-    TPSLOT("__hash__", tp_hash, slot_tp_hash, wrap_hashfunc,
-           "x.__hash__() <==> hash(x)"),
-    FLSLOT("__call__", tp_call, slot_tp_call, (wrapperfunc)wrap_call,
-           "x.__call__(...) <==> x(...)", PyWrapperFlag_KEYWORDS),
-    TPSLOT("__getattribute__", tp_getattro, slot_tp_getattr_hook,
-           wrap_binaryfunc, "x.__getattribute__('name') <==> x.name"),
-    TPSLOT("__getattribute__", tp_getattr, NULL, NULL, ""),
-    TPSLOT("__getattr__", tp_getattro, slot_tp_getattr_hook, NULL, ""),
-    TPSLOT("__getattr__", tp_getattr, NULL, NULL, ""),
-    TPSLOT("__setattr__", tp_setattro, slot_tp_setattro, wrap_setattr,
-           "x.__setattr__('name', value) <==> x.name = value"),
-    TPSLOT("__setattr__", tp_setattr, NULL, NULL, ""),
-    TPSLOT("__delattr__", tp_setattro, slot_tp_setattro, wrap_delattr,
-           "x.__delattr__('name') <==> del x.name"),
-    TPSLOT("__delattr__", tp_setattr, NULL, NULL, ""),
-    TPSLOT("__lt__", tp_richcompare, slot_tp_richcompare, richcmp_lt,
-           "x.__lt__(y) <==> x<y"),
-    TPSLOT("__le__", tp_richcompare, slot_tp_richcompare, richcmp_le,
-           "x.__le__(y) <==> x<=y"),
-    TPSLOT("__eq__", tp_richcompare, slot_tp_richcompare, richcmp_eq,
-           "x.__eq__(y) <==> x==y"),
-    TPSLOT("__ne__", tp_richcompare, slot_tp_richcompare, richcmp_ne,
-           "x.__ne__(y) <==> x!=y"),
-    TPSLOT("__gt__", tp_richcompare, slot_tp_richcompare, richcmp_gt,
-           "x.__gt__(y) <==> x>y"),
-    TPSLOT("__ge__", tp_richcompare, slot_tp_richcompare, richcmp_ge,
-           "x.__ge__(y) <==> x>=y"),
-    TPSLOT("__iter__", tp_iter, slot_tp_iter, wrap_unaryfunc,
-           "x.__iter__() <==> iter(x)"),
-    TPSLOT("next", tp_iternext, slot_tp_iternext, wrap_next,
-           "x.next() -> the next value, or raise StopIteration"),
-    TPSLOT("__get__", tp_descr_get, slot_tp_descr_get, wrap_descr_get,
-           "descr.__get__(obj[, type]) -> value"),
-    TPSLOT("__set__", tp_descr_set, slot_tp_descr_set, wrap_descr_set,
-           "descr.__set__(obj, value)"),
-    TPSLOT("__delete__", tp_descr_set, slot_tp_descr_set,
-           wrap_descr_delete, "descr.__delete__(obj)"),
-    FLSLOT("__init__", tp_init, slot_tp_init, (wrapperfunc)wrap_init,
-           "x.__init__(...) initializes x; "
-           "see help(type(x)) for signature",
-           PyWrapperFlag_KEYWORDS),
-    TPSLOT("__new__", tp_new, slot_tp_new, NULL, ""),
-    TPSLOT("__del__", tp_del, slot_tp_del, NULL, ""),
-    {NULL}
-};
-
-/* Given a type pointer and an offset gotten from a slotdef entry, return a
-   pointer to the actual slot.  This is not quite the same as simply adding
-   the offset to the type pointer, since it takes care to indirect through the
-   proper indirection pointer (as_buffer, etc.); it returns NULL if the
-   indirection pointer is NULL. */
-static void **
-slotptr(PyTypeObject *type, int ioffset)
-{
-    char *ptr;
-    long offset = ioffset;
-
-    /* Note: this depends on the order of the members of PyHeapTypeObject! */
-    assert(offset >= 0);
-    assert((size_t)offset < offsetof(PyHeapTypeObject, as_buffer));
-    if ((size_t)offset >= offsetof(PyHeapTypeObject, as_sequence)) {
-        ptr = (char *)type->tp_as_sequence;
-        offset -= offsetof(PyHeapTypeObject, as_sequence);
-    }
-    else if ((size_t)offset >= offsetof(PyHeapTypeObject, as_mapping)) {
-        ptr = (char *)type->tp_as_mapping;
-        offset -= offsetof(PyHeapTypeObject, as_mapping);
-    }
-    else if ((size_t)offset >= offsetof(PyHeapTypeObject, as_number)) {
-        ptr = (char *)type->tp_as_number;
-        offset -= offsetof(PyHeapTypeObject, as_number);
-    }
-    else {
-        ptr = (char *)type;
-    }
-    if (ptr != NULL)
-        ptr += offset;
-    return (void **)ptr;
-}
-
-/* Length of array of slotdef pointers used to store slots with the
-   same __name__.  There should be at most MAX_EQUIV-1 slotdef entries with
-   the same __name__, for any __name__. Since that's a static property, it is
-   appropriate to declare fixed-size arrays for this. */
-#define MAX_EQUIV 10
-
-/* Return a slot pointer for a given name, but ONLY if the attribute has
-   exactly one slot function.  The name must be an interned string. */
-static void **
-resolve_slotdups(PyTypeObject *type, PyObject *name)
-{
-    /* XXX Maybe this could be optimized more -- but is it worth it? */
-
-    /* pname and ptrs act as a little cache */
-    static PyObject *pname;
-    static slotdef *ptrs[MAX_EQUIV];
-    slotdef *p, **pp;
-    void **res, **ptr;
-
-    if (pname != name) {
-        /* Collect all slotdefs that match name into ptrs. */
-        pname = name;
-        pp = ptrs;
-        for (p = slotdefs; p->name_strobj; p++) {
-            if (p->name_strobj == name)
-                *pp++ = p;
-        }
-        *pp = NULL;
-    }
-
-    /* Look in all matching slots of the type; if exactly one of these has
-       a filled-in slot, return its value.      Otherwise return NULL. */
-    res = NULL;
-    for (pp = ptrs; *pp; pp++) {
-        ptr = slotptr(type, (*pp)->offset);
-        if (ptr == NULL || *ptr == NULL)
-            continue;
-        if (res != NULL)
-            return NULL;
-        res = ptr;
-    }
-    return res;
-}
-
-/* Common code for update_slots_callback() and fixup_slot_dispatchers().  This
-   does some incredibly complex thinking and then sticks something into the
-   slot.  (It sees if the adjacent slotdefs for the same slot have conflicting
-   interests, and then stores a generic wrapper or a specific function into
-   the slot.)  Return a pointer to the next slotdef with a different offset,
-   because that's convenient  for fixup_slot_dispatchers(). */
-static slotdef *
-update_one_slot(PyTypeObject *type, slotdef *p)
-{
-    PyObject *descr;
-    PyWrapperDescrObject *d;
-    void *generic = NULL, *specific = NULL;
-    int use_generic = 0;
-    int offset = p->offset;
-    void **ptr = slotptr(type, offset);
-
-    if (ptr == NULL) {
-        do {
-            ++p;
-        } while (p->offset == offset);
-        return p;
-    }
-    do {
-        descr = _PyType_Lookup(type, p->name_strobj);
-        if (descr == NULL) {
-            if (ptr == (void**)&type->tp_iternext) {
-                specific = _PyObject_NextNotImplemented;
-            }
-            continue;
-        }
-        if (Py_TYPE(descr) == &PyWrapperDescr_Type) {
-            void **tptr = resolve_slotdups(type, p->name_strobj);
-            if (tptr == NULL || tptr == ptr)
-                generic = p->function;
-            d = (PyWrapperDescrObject *)descr;
-            if (d->d_base->wrapper == p->wrapper &&
-                PyType_IsSubtype(type, d->d_type))
-            {
-                if (specific == NULL ||
-                    specific == d->d_wrapped)
-                    specific = d->d_wrapped;
-                else
-                    use_generic = 1;
-            }
-        }
-        else if (Py_TYPE(descr) == &PyCFunction_Type &&
-                 PyCFunction_GET_FUNCTION(descr) ==
-                 (PyCFunction)tp_new_wrapper &&
-                 ptr == (void**)&type->tp_new)
-        {
-            /* The __new__ wrapper is not a wrapper descriptor,
-               so must be special-cased differently.
-               If we don't do this, creating an instance will
-               always use slot_tp_new which will look up
-               __new__ in the MRO which will call tp_new_wrapper
-               which will look through the base classes looking
-               for a static base and call its tp_new (usually
-               PyType_GenericNew), after performing various
-               sanity checks and constructing a new argument
-               list.  Cut all that nonsense short -- this speeds
-               up instance creation tremendously. */
-            specific = (void *)type->tp_new;
-            /* XXX I'm not 100% sure that there isn't a hole
-               in this reasoning that requires additional
-               sanity checks.  I'll buy the first person to
-               point out a bug in this reasoning a beer. */
-        }
-        else if (descr == Py_None &&
-                 ptr == (void**)&type->tp_hash) {
-            /* We specifically allow __hash__ to be set to None
-               to prevent inheritance of the default
-               implementation from object.__hash__ */
-            specific = PyObject_HashNotImplemented;
-        }
-        else {
-            use_generic = 1;
-            generic = p->function;
-        }
-    } while ((++p)->offset == offset);
-    if (specific && !use_generic)
-        *ptr = specific;
-    else
-        *ptr = generic;
-    return p;
-}
-
-/* In the type, update the slots whose slotdefs are gathered in the pp array.
-   This is a callback for update_subclasses(). */
-static int
-update_slots_callback(PyTypeObject *type, void *data)
-{
-    slotdef **pp = (slotdef **)data;
-
-    for (; *pp; pp++)
-        update_one_slot(type, *pp);
-    return 0;
-}
-
-/* Comparison function for qsort() to compare slotdefs by their offset, and
-   for equal offset by their address (to force a stable sort). */
-static int
-slotdef_cmp(const void *aa, const void *bb)
-{
-    const slotdef *a = (const slotdef *)aa, *b = (const slotdef *)bb;
-    int c = a->offset - b->offset;
-    if (c != 0)
-        return c;
-    else
-        /* Cannot use a-b, as this gives off_t,
-           which may lose precision when converted to int. */
-        return (a > b) ? 1 : (a < b) ? -1 : 0;
-}
-
-/* Initialize the slotdefs table by adding interned string objects for the
-   names and sorting the entries. */
-static void
-init_slotdefs(void)
-{
-    slotdef *p;
-    static int initialized = 0;
-
-    if (initialized)
-        return;
-    for (p = slotdefs; p->name; p++) {
-        p->name_strobj = PyString_InternFromString(p->name);
-        if (!p->name_strobj)
-            Py_FatalError("Out of memory interning slotdef names");
-    }
-    qsort((void *)slotdefs, (size_t)(p-slotdefs), sizeof(slotdef),
-          slotdef_cmp);
-    initialized = 1;
-}
-
-/* Update the slots after assignment to a class (type) attribute. */
-static int
-update_slot(PyTypeObject *type, PyObject *name)
-{
-    slotdef *ptrs[MAX_EQUIV];
-    slotdef *p;
-    slotdef **pp;
-    int offset;
-
-    /* Clear the VALID_VERSION flag of 'type' and all its
-       subclasses.  This could possibly be unified with the
-       update_subclasses() recursion below, but carefully:
-       they each have their own conditions on which to stop
-       recursing into subclasses. */
-    PyType_Modified(type);
-
-    init_slotdefs();
-    pp = ptrs;
-    for (p = slotdefs; p->name; p++) {
-        /* XXX assume name is interned! */
-        if (p->name_strobj == name)
-            *pp++ = p;
-    }
-    *pp = NULL;
-    for (pp = ptrs; *pp; pp++) {
-        p = *pp;
-        offset = p->offset;
-        while (p > slotdefs && (p-1)->offset == offset)
-            --p;
-        *pp = p;
-    }
-    if (ptrs[0] == NULL)
-        return 0; /* Not an attribute that affects any slots */
-    return update_subclasses(type, name,
-                             update_slots_callback, (void *)ptrs);
-}
-
-/* Store the proper functions in the slot dispatches at class (type)
-   definition time, based upon which operations the class overrides in its
-   dict. */
-static void
-fixup_slot_dispatchers(PyTypeObject *type)
-{
-    slotdef *p;
-
-    init_slotdefs();
-    for (p = slotdefs; p->name; )
-        p = update_one_slot(type, p);
-}
-
-static void
-update_all_slots(PyTypeObject* type)
-{
-    slotdef *p;
-
-    init_slotdefs();
-    for (p = slotdefs; p->name; p++) {
-        /* update_slot returns int but can't actually fail */
-        update_slot(type, p->name_strobj);
-    }
-}
-
-/* recurse_down_subclasses() and update_subclasses() are mutually
-   recursive functions to call a callback for all subclasses,
-   but refraining from recursing into subclasses that define 'name'. */
-
-static int
-update_subclasses(PyTypeObject *type, PyObject *name,
-                  update_callback callback, void *data)
-{
-    if (callback(type, data) < 0)
-        return -1;
-    return recurse_down_subclasses(type, name, callback, data);
-}
-
-static int
-recurse_down_subclasses(PyTypeObject *type, PyObject *name,
-                        update_callback callback, void *data)
-{
-    PyTypeObject *subclass;
-    PyObject *ref, *subclasses, *dict;
-    Py_ssize_t i, n;
-
-    subclasses = type->tp_subclasses;
-    if (subclasses == NULL)
-        return 0;
-    assert(PyList_Check(subclasses));
-    n = PyList_GET_SIZE(subclasses);
-    for (i = 0; i < n; i++) {
-        ref = PyList_GET_ITEM(subclasses, i);
-        assert(PyWeakref_CheckRef(ref));
-        subclass = (PyTypeObject *)PyWeakref_GET_OBJECT(ref);
-        assert(subclass != NULL);
-        if ((PyObject *)subclass == Py_None)
-            continue;
-        assert(PyType_Check(subclass));
-        /* Avoid recursing down into unaffected classes */
-        dict = subclass->tp_dict;
-        if (dict != NULL && PyDict_Check(dict) &&
-            PyDict_GetItem(dict, name) != NULL)
-            continue;
-        if (update_subclasses(subclass, name, callback, data) < 0)
-            return -1;
-    }
-    return 0;
-}
-
-/* This function is called by PyType_Ready() to populate the type's
-   dictionary with method descriptors for function slots.  For each
-   function slot (like tp_repr) that's defined in the type, one or more
-   corresponding descriptors are added in the type's tp_dict dictionary
-   under the appropriate name (like __repr__).  Some function slots
-   cause more than one descriptor to be added (for example, the nb_add
-   slot adds both __add__ and __radd__ descriptors) and some function
-   slots compete for the same descriptor (for example both sq_item and
-   mp_subscript generate a __getitem__ descriptor).
-
-   In the latter case, the first slotdef entry encountered wins.  Since
-   slotdef entries are sorted by the offset of the slot in the
-   PyHeapTypeObject, this gives us some control over disambiguating
-   between competing slots: the members of PyHeapTypeObject are listed
-   from most general to least general, so the most general slot is
-   preferred.  In particular, because as_mapping comes before as_sequence,
-   for a type that defines both mp_subscript and sq_item, mp_subscript
-   wins.
-
-   This only adds new descriptors and doesn't overwrite entries in
-   tp_dict that were previously defined.  The descriptors contain a
-   reference to the C function they must call, so that it's safe if they
-   are copied into a subtype's __dict__ and the subtype has a different
-   C function in its slot -- calling the method defined by the
-   descriptor will call the C function that was used to create it,
-   rather than the C function present in the slot when it is called.
-   (This is important because a subtype may have a C function in the
-   slot that calls the method from the dictionary, and we want to avoid
-   infinite recursion here.) */
-
-static int
-add_operators(PyTypeObject *type)
-{
-    PyObject *dict = type->tp_dict;
-    slotdef *p;
-    PyObject *descr;
-    void **ptr;
-
-    init_slotdefs();
-    for (p = slotdefs; p->name; p++) {
-        if (p->wrapper == NULL)
-            continue;
-        ptr = slotptr(type, p->offset);
-        if (!ptr || !*ptr)
-            continue;
-        if (PyDict_GetItem(dict, p->name_strobj))
-            continue;
-        if (*ptr == PyObject_HashNotImplemented) {
-            /* Classes may prevent the inheritance of the tp_hash
-               slot by storing PyObject_HashNotImplemented in it. Make it
-               visible as a None value for the __hash__ attribute. */
-            if (PyDict_SetItem(dict, p->name_strobj, Py_None) < 0)
-                return -1;
-        }
-        else {
-            descr = PyDescr_NewWrapper(type, p, *ptr);
-            if (descr == NULL)
-                return -1;
-            if (PyDict_SetItem(dict, p->name_strobj, descr) < 0)
-                return -1;
-            Py_DECREF(descr);
-        }
-    }
-    if (type->tp_new != NULL) {
-        if (add_tp_new_wrapper(type) < 0)
-            return -1;
-    }
-    return 0;
-}
-
-
-/* Cooperative 'super' */
-
-typedef struct {
-    PyObject_HEAD
-    PyTypeObject *type;
-    PyObject *obj;
-    PyTypeObject *obj_type;
-} superobject;
-
-static PyMemberDef super_members[] = {
-    {"__thisclass__", T_OBJECT, offsetof(superobject, type), READONLY,
-     "the class invoking super()"},
-    {"__self__",  T_OBJECT, offsetof(superobject, obj), READONLY,
-     "the instance invoking super(); may be None"},
-    {"__self_class__", T_OBJECT, offsetof(superobject, obj_type), READONLY,
-     "the type of the instance invoking super(); may be None"},
-    {0}
-};
-
-static void
-super_dealloc(PyObject *self)
-{
-    superobject *su = (superobject *)self;
-
-    _PyObject_GC_UNTRACK(self);
-    Py_XDECREF(su->obj);
-    Py_XDECREF(su->type);
-    Py_XDECREF(su->obj_type);
-    Py_TYPE(self)->tp_free(self);
-}
-
-static PyObject *
-super_repr(PyObject *self)
-{
-    superobject *su = (superobject *)self;
-
-    if (su->obj_type)
-        return PyString_FromFormat(
-            "<super: <class '%s'>, <%s object>>",
-            su->type ? su->type->tp_name : "NULL",
-            su->obj_type->tp_name);
-    else
-        return PyString_FromFormat(
-            "<super: <class '%s'>, NULL>",
-            su->type ? su->type->tp_name : "NULL");
-}
-
-static PyObject *
-super_getattro(PyObject *self, PyObject *name)
-{
-    superobject *su = (superobject *)self;
-    int skip = su->obj_type == NULL;
-
-    if (!skip) {
-        /* We want __class__ to return the class of the super object
-           (i.e. super, or a subclass), not the class of su->obj. */
-        skip = (PyString_Check(name) &&
-            PyString_GET_SIZE(name) == 9 &&
-            strcmp(PyString_AS_STRING(name), "__class__") == 0);
-    }
-
-    if (!skip) {
-        PyObject *mro, *res, *tmp, *dict;
-        PyTypeObject *starttype;
-        descrgetfunc f;
-        Py_ssize_t i, n;
-
-        starttype = su->obj_type;
-        mro = starttype->tp_mro;
-
-        if (mro == NULL)
-            n = 0;
-        else {
-            assert(PyTuple_Check(mro));
-            n = PyTuple_GET_SIZE(mro);
-        }
-        for (i = 0; i < n; i++) {
-            if ((PyObject *)(su->type) == PyTuple_GET_ITEM(mro, i))
-                break;
-        }
-        i++;
-        res = NULL;
-        for (; i < n; i++) {
-            tmp = PyTuple_GET_ITEM(mro, i);
-            if (PyType_Check(tmp))
-                dict = ((PyTypeObject *)tmp)->tp_dict;
-            else if (PyClass_Check(tmp))
-                dict = ((PyClassObject *)tmp)->cl_dict;
-            else
-                continue;
-            res = PyDict_GetItem(dict, name);
-            if (res != NULL) {
-                Py_INCREF(res);
-                f = Py_TYPE(res)->tp_descr_get;
-                if (f != NULL) {
-                    tmp = f(res,
-                        /* Only pass 'obj' param if
-                           this is instance-mode super
-                           (See SF ID #743627)
-                        */
-                        (su->obj == (PyObject *)
-                                    su->obj_type
-                            ? (PyObject *)NULL
-                            : su->obj),
-                        (PyObject *)starttype);
-                    Py_DECREF(res);
-                    res = tmp;
-                }
-                return res;
-            }
-        }
-    }
-    return PyObject_GenericGetAttr(self, name);
-}
-
-static PyTypeObject *
-supercheck(PyTypeObject *type, PyObject *obj)
-{
-    /* Check that a super() call makes sense.  Return a type object.
-
-       obj can be a new-style class, or an instance of one:
-
-       - If it is a class, it must be a subclass of 'type'.      This case is
-         used for class methods; the return value is obj.
-
-       - If it is an instance, it must be an instance of 'type'.  This is
-         the normal case; the return value is obj.__class__.
-
-       But... when obj is an instance, we want to allow for the case where
-       Py_TYPE(obj) is not a subclass of type, but obj.__class__ is!
-       This will allow using super() with a proxy for obj.
-    */
-
-    /* Check for first bullet above (special case) */
-    if (PyType_Check(obj) && PyType_IsSubtype((PyTypeObject *)obj, type)) {
-        Py_INCREF(obj);
-        return (PyTypeObject *)obj;
-    }
-
-    /* Normal case */
-    if (PyType_IsSubtype(Py_TYPE(obj), type)) {
-        Py_INCREF(Py_TYPE(obj));
-        return Py_TYPE(obj);
-    }
-    else {
-        /* Try the slow way */
-        static PyObject *class_str = NULL;
-        PyObject *class_attr;
-
-        if (class_str == NULL) {
-            class_str = PyString_FromString("__class__");
-            if (class_str == NULL)
-                return NULL;
-        }
-
-        class_attr = PyObject_GetAttr(obj, class_str);
-
-        if (class_attr != NULL &&
-            PyType_Check(class_attr) &&
-            (PyTypeObject *)class_attr != Py_TYPE(obj))
-        {
-            int ok = PyType_IsSubtype(
-                (PyTypeObject *)class_attr, type);
-            if (ok)
-                return (PyTypeObject *)class_attr;
-        }
-
-        if (class_attr == NULL)
-            PyErr_Clear();
-        else
-            Py_DECREF(class_attr);
-    }
-
-    PyErr_SetString(PyExc_TypeError,
-                    "super(type, obj): "
-                    "obj must be an instance or subtype of type");
-    return NULL;
-}
-
-static PyObject *
-super_descr_get(PyObject *self, PyObject *obj, PyObject *type)
-{
-    superobject *su = (superobject *)self;
-    superobject *newobj;
-
-    if (obj == NULL || obj == Py_None || su->obj != NULL) {
-        /* Not binding to an object, or already bound */
-        Py_INCREF(self);
-        return self;
-    }
-    if (Py_TYPE(su) != &PySuper_Type)
-        /* If su is an instance of a (strict) subclass of super,
-           call its type */
-        return PyObject_CallFunctionObjArgs((PyObject *)Py_TYPE(su),
-                                            su->type, obj, NULL);
-    else {
-        /* Inline the common case */
-        PyTypeObject *obj_type = supercheck(su->type, obj);
-        if (obj_type == NULL)
-            return NULL;
-        newobj = (superobject *)PySuper_Type.tp_new(&PySuper_Type,
-                                                 NULL, NULL);
-        if (newobj == NULL)
-            return NULL;
-        Py_INCREF(su->type);
-        Py_INCREF(obj);
-        newobj->type = su->type;
-        newobj->obj = obj;
-        newobj->obj_type = obj_type;
-        return (PyObject *)newobj;
-    }
-}
-
-static int
-super_init(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    superobject *su = (superobject *)self;
-    PyTypeObject *type;
-    PyObject *obj = NULL;
-    PyTypeObject *obj_type = NULL;
-
-    if (!_PyArg_NoKeywords("super", kwds))
-        return -1;
-    if (!PyArg_ParseTuple(args, "O!|O:super", &PyType_Type, &type, &obj))
-        return -1;
-    if (obj == Py_None)
-        obj = NULL;
-    if (obj != NULL) {
-        obj_type = supercheck(type, obj);
-        if (obj_type == NULL)
-            return -1;
-        Py_INCREF(obj);
-    }
-    Py_INCREF(type);
-    su->type = type;
-    su->obj = obj;
-    su->obj_type = obj_type;
-    return 0;
-}
-
-PyDoc_STRVAR(super_doc,
-"super(type) -> unbound super object\n"
-"super(type, obj) -> bound super object; requires isinstance(obj, type)\n"
-"super(type, type2) -> bound super object; requires issubclass(type2, type)\n"
-"Typical use to call a cooperative superclass method:\n"
-"class C(B):\n"
-"    def meth(self, arg):\n"
-"        super(C, self).meth(arg)");
-
-static int
-super_traverse(PyObject *self, visitproc visit, void *arg)
-{
-    superobject *su = (superobject *)self;
-
-    Py_VISIT(su->obj);
-    Py_VISIT(su->type);
-    Py_VISIT(su->obj_type);
-
-    return 0;
-}
-
-PyTypeObject PySuper_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "super",                                    /* tp_name */
-    sizeof(superobject),                        /* tp_basicsize */
-    0,                                          /* tp_itemsize */
-    /* methods */
-    super_dealloc,                              /* tp_dealloc */
-    0,                                          /* tp_print */
-    0,                                          /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    super_repr,                                 /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    super_getattro,                             /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
-        Py_TPFLAGS_BASETYPE,                    /* tp_flags */
-    super_doc,                                  /* tp_doc */
-    super_traverse,                             /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    super_members,                              /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    super_descr_get,                            /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    super_init,                                 /* tp_init */
-    PyType_GenericAlloc,                        /* tp_alloc */
-    PyType_GenericNew,                          /* tp_new */
-    PyObject_GC_Del,                            /* tp_free */
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/unicodectype.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/unicodectype.c
deleted file mode 100644
index ca44bce..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/unicodectype.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
-   Unicode character type helpers.
-
-   Written by Marc-Andre Lemburg (mal@lemburg.com).
-   Modified for Python 2.0 by Fredrik Lundh (fredrik@pythonware.com)
-
-   Copyright (c) Corporation for National Research Initiatives.
-
-*/
-
-#include "Python.h"
-#include "unicodeobject.h"
-
-#define ALPHA_MASK 0x01
-#define DECIMAL_MASK 0x02
-#define DIGIT_MASK 0x04
-#define LOWER_MASK 0x08
-#define LINEBREAK_MASK 0x10
-#define SPACE_MASK 0x20
-#define TITLE_MASK 0x40
-#define UPPER_MASK 0x80
-#define NODELTA_MASK 0x100
-#define NUMERIC_MASK 0x200
-
-typedef struct {
-    const Py_UNICODE upper;
-    const Py_UNICODE lower;
-    const Py_UNICODE title;
-    const unsigned char decimal;
-    const unsigned char digit;
-    const unsigned short flags;
-} _PyUnicode_TypeRecord;
-
-#include "unicodetype_db.h"
-
-static const _PyUnicode_TypeRecord *
-gettyperecord(Py_UNICODE code)
-{
-    int index;
-
-#ifdef Py_UNICODE_WIDE
-    if (code >= 0x110000)
-        index = 0;
-    else
-#endif
-    {
-        index = index1[(code>>SHIFT)];
-        index = index2[(index<<SHIFT)+(code&((1<<SHIFT)-1))];
-    }
-
-    return &_PyUnicode_TypeRecords[index];
-}
-
-/* Returns the titlecase Unicode characters corresponding to ch or just
-   ch if no titlecase mapping is known. */
-
-Py_UNICODE _PyUnicode_ToTitlecase(register Py_UNICODE ch)
-{
-    const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
-    int delta = ctype->title;
-
-    if (ctype->flags & NODELTA_MASK)
-	return delta;
-
-    if (delta >= 32768)
-	    delta -= 65536;
-
-    return ch + delta;
-}
-
-/* Returns 1 for Unicode characters having the category 'Lt', 0
-   otherwise. */
-
-int _PyUnicode_IsTitlecase(Py_UNICODE ch)
-{
-    const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
-
-    return (ctype->flags & TITLE_MASK) != 0;
-}
-
-/* Returns the integer decimal (0-9) for Unicode characters having
-   this property, -1 otherwise. */
-
-int _PyUnicode_ToDecimalDigit(Py_UNICODE ch)
-{
-    const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
-
-    return (ctype->flags & DECIMAL_MASK) ? ctype->decimal : -1;
-}
-
-int _PyUnicode_IsDecimalDigit(Py_UNICODE ch)
-{
-    if (_PyUnicode_ToDecimalDigit(ch) < 0)
-	return 0;
-    return 1;
-}
-
-/* Returns the integer digit (0-9) for Unicode characters having
-   this property, -1 otherwise. */
-
-int _PyUnicode_ToDigit(Py_UNICODE ch)
-{
-    const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
-
-    return (ctype->flags & DIGIT_MASK) ? ctype->digit : -1;
-}
-
-int _PyUnicode_IsDigit(Py_UNICODE ch)
-{
-    if (_PyUnicode_ToDigit(ch) < 0)
-	return 0;
-    return 1;
-}
-
-/* Returns the numeric value as double for Unicode characters having
-   this property, -1.0 otherwise. */
-
-int _PyUnicode_IsNumeric(Py_UNICODE ch)
-{
-    const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
-
-    return (ctype->flags & NUMERIC_MASK) != 0;
-}
-
-#ifndef WANT_WCTYPE_FUNCTIONS
-
-/* Returns 1 for Unicode characters having the category 'Ll', 0
-   otherwise. */
-
-int _PyUnicode_IsLowercase(Py_UNICODE ch)
-{
-    const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
-
-    return (ctype->flags & LOWER_MASK) != 0;
-}
-
-/* Returns 1 for Unicode characters having the category 'Lu', 0
-   otherwise. */
-
-int _PyUnicode_IsUppercase(Py_UNICODE ch)
-{
-    const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
-
-    return (ctype->flags & UPPER_MASK) != 0;
-}
-
-/* Returns the uppercase Unicode characters corresponding to ch or just
-   ch if no uppercase mapping is known. */
-
-Py_UNICODE _PyUnicode_ToUppercase(Py_UNICODE ch)
-{
-    const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
-    int delta = ctype->upper;
-    if (ctype->flags & NODELTA_MASK)
-	return delta;
-    if (delta >= 32768)
-	    delta -= 65536;
-    return ch + delta;
-}
-
-/* Returns the lowercase Unicode characters corresponding to ch or just
-   ch if no lowercase mapping is known. */
-
-Py_UNICODE _PyUnicode_ToLowercase(Py_UNICODE ch)
-{
-    const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
-    int delta = ctype->lower;
-    if (ctype->flags & NODELTA_MASK)
-	return delta;
-    if (delta >= 32768)
-	    delta -= 65536;
-    return ch + delta;
-}
-
-/* Returns 1 for Unicode characters having the category 'Ll', 'Lu', 'Lt',
-   'Lo' or 'Lm',  0 otherwise. */
-
-int _PyUnicode_IsAlpha(Py_UNICODE ch)
-{
-    const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
-
-    return (ctype->flags & ALPHA_MASK) != 0;
-}
-
-#else
-
-/* Export the interfaces using the wchar_t type for portability
-   reasons:  */
-
-int _PyUnicode_IsLowercase(Py_UNICODE ch)
-{
-    return iswlower(ch);
-}
-
-int _PyUnicode_IsUppercase(Py_UNICODE ch)
-{
-    return iswupper(ch);
-}
-
-Py_UNICODE _PyUnicode_ToLowercase(Py_UNICODE ch)
-{
-    return towlower(ch);
-}
-
-Py_UNICODE _PyUnicode_ToUppercase(Py_UNICODE ch)
-{
-    return towupper(ch);
-}
-
-int _PyUnicode_IsAlpha(Py_UNICODE ch)
-{
-    return iswalpha(ch);
-}
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/unicodeobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/unicodeobject.c
deleted file mode 100644
index 67abada..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/unicodeobject.c
+++ /dev/null
@@ -1,8888 +0,0 @@
-/*
-
-Unicode implementation based on original code by Fredrik Lundh,
-modified by Marc-Andre Lemburg <mal@lemburg.com> according to the
-Unicode Integration Proposal (see file Misc/unicode.txt).
-
-Major speed upgrades to the method implementations at the Reykjavik
-NeedForSpeed sprint, by Fredrik Lundh and Andrew Dalke.
-
-Copyright (c) Corporation for National Research Initiatives.
-
---------------------------------------------------------------------
-The original string type implementation is:
-
-  Copyright (c) 1999 by Secret Labs AB
-  Copyright (c) 1999 by Fredrik Lundh
-
-By obtaining, using, and/or copying this software and/or its
-associated documentation, you agree that you have read, understood,
-and will comply with the following terms and conditions:
-
-Permission to use, copy, modify, and distribute this software and its
-associated documentation for any purpose and without fee is hereby
-granted, provided that the above copyright notice appears in all
-copies, and that both that copyright notice and this permission notice
-appear in supporting documentation, and that the name of Secret Labs
-AB or the author not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior
-permission.
-
-SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO
-THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
---------------------------------------------------------------------
-
-*/
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-
-#include "unicodeobject.h"
-#include "ucnhash.h"
-
-#ifdef MS_WINDOWS
-#include <windows.h>
-#endif
-
-/* Limit for the Unicode object free list */
-
-#define PyUnicode_MAXFREELIST       1024
-
-/* Limit for the Unicode object free list stay alive optimization.
-
-   The implementation will keep allocated Unicode memory intact for
-   all objects on the free list having a size less than this
-   limit. This reduces malloc() overhead for small Unicode objects.
-
-   At worst this will result in PyUnicode_MAXFREELIST *
-   (sizeof(PyUnicodeObject) + KEEPALIVE_SIZE_LIMIT +
-   malloc()-overhead) bytes of unused garbage.
-
-   Setting the limit to 0 effectively turns the feature off.
-
-   Note: This is an experimental feature ! If you get core dumps when
-   using Unicode objects, turn this feature off.
-
-*/
-
-#define KEEPALIVE_SIZE_LIMIT       9
-
-/* Endianness switches; defaults to little endian */
-
-#ifdef WORDS_BIGENDIAN
-# define BYTEORDER_IS_BIG_ENDIAN
-#else
-# define BYTEORDER_IS_LITTLE_ENDIAN
-#endif
-
-/* --- Globals ------------------------------------------------------------
-
-   The globals are initialized by the _PyUnicode_Init() API and should
-   not be used before calling that API.
-
-*/
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Free list for Unicode objects */
-static PyUnicodeObject *free_list;
-static int numfree;
-
-/* The empty Unicode object is shared to improve performance. */
-static PyUnicodeObject *unicode_empty;
-
-/* Single character Unicode strings in the Latin-1 range are being
-   shared as well. */
-static PyUnicodeObject *unicode_latin1[256];
-
-/* Default encoding to use and assume when NULL is passed as encoding
-   parameter; it is initialized by _PyUnicode_Init().
-
-   Always use the PyUnicode_SetDefaultEncoding() and
-   PyUnicode_GetDefaultEncoding() APIs to access this global.
-
-*/
-static char unicode_default_encoding[100];
-
-/* Fast detection of the most frequent whitespace characters */
-const unsigned char _Py_ascii_whitespace[] = {
-    0, 0, 0, 0, 0, 0, 0, 0,
-/*     case 0x0009: * CHARACTER TABULATION */
-/*     case 0x000A: * LINE FEED */
-/*     case 0x000B: * LINE TABULATION */
-/*     case 0x000C: * FORM FEED */
-/*     case 0x000D: * CARRIAGE RETURN */
-    0, 1, 1, 1, 1, 1, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-/*     case 0x001C: * FILE SEPARATOR */
-/*     case 0x001D: * GROUP SEPARATOR */
-/*     case 0x001E: * RECORD SEPARATOR */
-/*     case 0x001F: * UNIT SEPARATOR */
-    0, 0, 0, 0, 1, 1, 1, 1,
-/*     case 0x0020: * SPACE */
-    1, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0
-};
-
-/* Same for linebreaks */
-static unsigned char ascii_linebreak[] = {
-    0, 0, 0, 0, 0, 0, 0, 0,
-/*         0x000A, * LINE FEED */
-/*         0x000B, * LINE TABULATION */
-/*         0x000C, * FORM FEED */
-/*         0x000D, * CARRIAGE RETURN */
-    0, 0, 1, 1, 1, 1, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-/*         0x001C, * FILE SEPARATOR */
-/*         0x001D, * GROUP SEPARATOR */
-/*         0x001E, * RECORD SEPARATOR */
-    0, 0, 0, 0, 1, 1, 1, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0
-};
-
-
-Py_UNICODE
-PyUnicode_GetMax(void)
-{
-#ifdef Py_UNICODE_WIDE
-    return 0x10FFFF;
-#else
-    /* This is actually an illegal character, so it should
-       not be passed to unichr. */
-    return 0xFFFF;
-#endif
-}
-
-/* --- Bloom Filters ----------------------------------------------------- */
-
-/* stuff to implement simple "bloom filters" for Unicode characters.
-   to keep things simple, we use a single bitmask, using the least 5
-   bits from each unicode characters as the bit index. */
-
-/* the linebreak mask is set up by Unicode_Init below */
-
-#if LONG_BIT >= 128
-#define BLOOM_WIDTH 128
-#elif LONG_BIT >= 64
-#define BLOOM_WIDTH 64
-#elif LONG_BIT >= 32
-#define BLOOM_WIDTH 32
-#else
-#error "LONG_BIT is smaller than 32"
-#endif
-
-#define BLOOM_MASK unsigned long
-
-static BLOOM_MASK bloom_linebreak;
-
-#define BLOOM_ADD(mask, ch) ((mask |= (1UL << ((ch) & (BLOOM_WIDTH - 1)))))
-#define BLOOM(mask, ch)     ((mask &  (1UL << ((ch) & (BLOOM_WIDTH - 1)))))
-
-#define BLOOM_LINEBREAK(ch)                                             \
-    ((ch) < 128U ? ascii_linebreak[(ch)] :                              \
-     (BLOOM(bloom_linebreak, (ch)) && Py_UNICODE_ISLINEBREAK(ch)))
-
-Py_LOCAL_INLINE(BLOOM_MASK) make_bloom_mask(Py_UNICODE* ptr, Py_ssize_t len)
-{
-    /* calculate simple bloom-style bitmask for a given unicode string */
-
-    BLOOM_MASK mask;
-    Py_ssize_t i;
-
-    mask = 0;
-    for (i = 0; i < len; i++)
-        BLOOM_ADD(mask, ptr[i]);
-
-    return mask;
-}
-
-Py_LOCAL_INLINE(int) unicode_member(Py_UNICODE chr, Py_UNICODE* set, Py_ssize_t setlen)
-{
-    Py_ssize_t i;
-
-    for (i = 0; i < setlen; i++)
-        if (set[i] == chr)
-            return 1;
-
-    return 0;
-}
-
-#define BLOOM_MEMBER(mask, chr, set, setlen)                    \
-    BLOOM(mask, chr) && unicode_member(chr, set, setlen)
-
-/* --- Unicode Object ----------------------------------------------------- */
-
-static
-int unicode_resize(register PyUnicodeObject *unicode,
-                   Py_ssize_t length)
-{
-    void *oldstr;
-
-    /* Shortcut if there's nothing much to do. */
-    if (unicode->length == length)
-        goto reset;
-
-    /* Resizing shared object (unicode_empty or single character
-       objects) in-place is not allowed. Use PyUnicode_Resize()
-       instead ! */
-
-    if (unicode == unicode_empty ||
-        (unicode->length == 1 &&
-         unicode->str[0] < 256U &&
-         unicode_latin1[unicode->str[0]] == unicode)) {
-        PyErr_SetString(PyExc_SystemError,
-                        "can't resize shared unicode objects");
-        return -1;
-    }
-
-    /* We allocate one more byte to make sure the string is Ux0000 terminated.
-       The overallocation is also used by fastsearch, which assumes that it's
-       safe to look at str[length] (without making any assumptions about what
-       it contains). */
-
-    oldstr = unicode->str;
-    unicode->str = PyObject_REALLOC(unicode->str,
-                                    sizeof(Py_UNICODE) * (length + 1));
-    if (!unicode->str) {
-        unicode->str = (Py_UNICODE *)oldstr;
-        PyErr_NoMemory();
-        return -1;
-    }
-    unicode->str[length] = 0;
-    unicode->length = length;
-
-  reset:
-    /* Reset the object caches */
-    if (unicode->defenc) {
-        Py_CLEAR(unicode->defenc);
-    }
-    unicode->hash = -1;
-
-    return 0;
-}
-
-/* We allocate one more byte to make sure the string is
-   Ux0000 terminated; some code relies on that.
-
-   XXX This allocator could further be enhanced by assuring that the
-   free list never reduces its size below 1.
-
-*/
-
-static
-PyUnicodeObject *_PyUnicode_New(Py_ssize_t length)
-{
-    register PyUnicodeObject *unicode;
-
-    /* Optimization for empty strings */
-    if (length == 0 && unicode_empty != NULL) {
-        Py_INCREF(unicode_empty);
-        return unicode_empty;
-    }
-
-    /* Ensure we won't overflow the size. */
-    if (length > ((PY_SSIZE_T_MAX / sizeof(Py_UNICODE)) - 1)) {
-        return (PyUnicodeObject *)PyErr_NoMemory();
-    }
-
-    /* Unicode freelist & memory allocation */
-    if (free_list) {
-        unicode = free_list;
-        free_list = *(PyUnicodeObject **)unicode;
-        numfree--;
-        if (unicode->str) {
-            /* Keep-Alive optimization: we only upsize the buffer,
-               never downsize it. */
-            if ((unicode->length < length) &&
-                unicode_resize(unicode, length) < 0) {
-                PyObject_DEL(unicode->str);
-                unicode->str = NULL;
-            }
-        }
-        else {
-            size_t new_size = sizeof(Py_UNICODE) * ((size_t)length + 1);
-            unicode->str = (Py_UNICODE*) PyObject_MALLOC(new_size);
-        }
-        PyObject_INIT(unicode, &PyUnicode_Type);
-    }
-    else {
-        size_t new_size;
-        unicode = PyObject_New(PyUnicodeObject, &PyUnicode_Type);
-        if (unicode == NULL)
-            return NULL;
-        new_size = sizeof(Py_UNICODE) * ((size_t)length + 1);
-        unicode->str = (Py_UNICODE*) PyObject_MALLOC(new_size);
-    }
-
-    if (!unicode->str) {
-        PyErr_NoMemory();
-        goto onError;
-    }
-    /* Initialize the first element to guard against cases where
-     * the caller fails before initializing str -- unicode_resize()
-     * reads str[0], and the Keep-Alive optimization can keep memory
-     * allocated for str alive across a call to unicode_dealloc(unicode).
-     * We don't want unicode_resize to read uninitialized memory in
-     * that case.
-     */
-    unicode->str[0] = 0;
-    unicode->str[length] = 0;
-    unicode->length = length;
-    unicode->hash = -1;
-    unicode->defenc = NULL;
-    return unicode;
-
-  onError:
-    /* XXX UNREF/NEWREF interface should be more symmetrical */
-    _Py_DEC_REFTOTAL;
-    _Py_ForgetReference((PyObject *)unicode);
-    PyObject_Del(unicode);
-    return NULL;
-}
-
-static
-void unicode_dealloc(register PyUnicodeObject *unicode)
-{
-    if (PyUnicode_CheckExact(unicode) &&
-        numfree < PyUnicode_MAXFREELIST) {
-        /* Keep-Alive optimization */
-        if (unicode->length >= KEEPALIVE_SIZE_LIMIT) {
-            PyObject_DEL(unicode->str);
-            unicode->str = NULL;
-            unicode->length = 0;
-        }
-        if (unicode->defenc) {
-            Py_CLEAR(unicode->defenc);
-        }
-        /* Add to free list */
-        *(PyUnicodeObject **)unicode = free_list;
-        free_list = unicode;
-        numfree++;
-    }
-    else {
-        PyObject_DEL(unicode->str);
-        Py_XDECREF(unicode->defenc);
-        Py_TYPE(unicode)->tp_free((PyObject *)unicode);
-    }
-}
-
-static
-int _PyUnicode_Resize(PyUnicodeObject **unicode, Py_ssize_t length)
-{
-    register PyUnicodeObject *v;
-
-    /* Argument checks */
-    if (unicode == NULL) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    v = *unicode;
-    if (v == NULL || !PyUnicode_Check(v) || Py_REFCNT(v) != 1 || length < 0) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-
-    /* Resizing unicode_empty and single character objects is not
-       possible since these are being shared. We simply return a fresh
-       copy with the same Unicode content. */
-    if (v->length != length &&
-        (v == unicode_empty || v->length == 1)) {
-        PyUnicodeObject *w = _PyUnicode_New(length);
-        if (w == NULL)
-            return -1;
-        Py_UNICODE_COPY(w->str, v->str,
-                        length < v->length ? length : v->length);
-        Py_DECREF(*unicode);
-        *unicode = w;
-        return 0;
-    }
-
-    /* Note that we don't have to modify *unicode for unshared Unicode
-       objects, since we can modify them in-place. */
-    return unicode_resize(v, length);
-}
-
-int PyUnicode_Resize(PyObject **unicode, Py_ssize_t length)
-{
-    return _PyUnicode_Resize((PyUnicodeObject **)unicode, length);
-}
-
-PyObject *PyUnicode_FromUnicode(const Py_UNICODE *u,
-                                Py_ssize_t size)
-{
-    PyUnicodeObject *unicode;
-
-    /* If the Unicode data is known at construction time, we can apply
-       some optimizations which share commonly used objects. */
-    if (u != NULL) {
-
-        /* Optimization for empty strings */
-        if (size == 0 && unicode_empty != NULL) {
-            Py_INCREF(unicode_empty);
-            return (PyObject *)unicode_empty;
-        }
-
-        /* Single character Unicode objects in the Latin-1 range are
-           shared when using this constructor */
-        if (size == 1 && *u < 256) {
-            unicode = unicode_latin1[*u];
-            if (!unicode) {
-                unicode = _PyUnicode_New(1);
-                if (!unicode)
-                    return NULL;
-                unicode->str[0] = *u;
-                unicode_latin1[*u] = unicode;
-            }
-            Py_INCREF(unicode);
-            return (PyObject *)unicode;
-        }
-    }
-
-    unicode = _PyUnicode_New(size);
-    if (!unicode)
-        return NULL;
-
-    /* Copy the Unicode data into the new object */
-    if (u != NULL)
-        Py_UNICODE_COPY(unicode->str, u, size);
-
-    return (PyObject *)unicode;
-}
-
-PyObject *PyUnicode_FromStringAndSize(const char *u, Py_ssize_t size)
-{
-    PyUnicodeObject *unicode;
-
-    if (size < 0) {
-        PyErr_SetString(PyExc_SystemError,
-                        "Negative size passed to PyUnicode_FromStringAndSize");
-        return NULL;
-    }
-
-    /* If the Unicode data is known at construction time, we can apply
-       some optimizations which share commonly used objects.
-       Also, this means the input must be UTF-8, so fall back to the
-       UTF-8 decoder at the end. */
-    if (u != NULL) {
-
-        /* Optimization for empty strings */
-        if (size == 0 && unicode_empty != NULL) {
-            Py_INCREF(unicode_empty);
-            return (PyObject *)unicode_empty;
-        }
-
-        /* Single characters are shared when using this constructor.
-           Restrict to ASCII, since the input must be UTF-8. */
-        if (size == 1 && Py_CHARMASK(*u) < 128) {
-            unicode = unicode_latin1[Py_CHARMASK(*u)];
-            if (!unicode) {
-                unicode = _PyUnicode_New(1);
-                if (!unicode)
-                    return NULL;
-                unicode->str[0] = Py_CHARMASK(*u);
-                unicode_latin1[Py_CHARMASK(*u)] = unicode;
-            }
-            Py_INCREF(unicode);
-            return (PyObject *)unicode;
-        }
-
-        return PyUnicode_DecodeUTF8(u, size, NULL);
-    }
-
-    unicode = _PyUnicode_New(size);
-    if (!unicode)
-        return NULL;
-
-    return (PyObject *)unicode;
-}
-
-PyObject *PyUnicode_FromString(const char *u)
-{
-    size_t size = strlen(u);
-    if (size > PY_SSIZE_T_MAX) {
-        PyErr_SetString(PyExc_OverflowError, "input too long");
-        return NULL;
-    }
-
-    return PyUnicode_FromStringAndSize(u, size);
-}
-
-#ifdef HAVE_WCHAR_H
-
-#if (Py_UNICODE_SIZE == 2) && defined(SIZEOF_WCHAR_T) && (SIZEOF_WCHAR_T == 4)
-# define CONVERT_WCHAR_TO_SURROGATES
-#endif
-
-#ifdef CONVERT_WCHAR_TO_SURROGATES
-
-/* Here sizeof(wchar_t) is 4 but Py_UNICODE_SIZE == 2, so we need
-   to convert from UTF32 to UTF16. */
-
-PyObject *PyUnicode_FromWideChar(register const wchar_t *w,
-                                 Py_ssize_t size)
-{
-    PyUnicodeObject *unicode;
-    register Py_ssize_t i;
-    Py_ssize_t alloc;
-    const wchar_t *orig_w;
-
-    if (w == NULL) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-
-    alloc = size;
-    orig_w = w;
-    for (i = size; i > 0; i--) {
-        if (*w > 0xFFFF)
-            alloc++;
-        w++;
-    }
-    w = orig_w;
-    unicode = _PyUnicode_New(alloc);
-    if (!unicode)
-        return NULL;
-
-    /* Copy the wchar_t data into the new object */
-    {
-        register Py_UNICODE *u;
-        u = PyUnicode_AS_UNICODE(unicode);
-        for (i = size; i > 0; i--) {
-            if (*w > 0xFFFF) {
-                wchar_t ordinal = *w++;
-                ordinal -= 0x10000;
-                *u++ = 0xD800 | (ordinal >> 10);
-                *u++ = 0xDC00 | (ordinal & 0x3FF);
-            }
-            else
-                *u++ = *w++;
-        }
-    }
-    return (PyObject *)unicode;
-}
-
-#else
-
-PyObject *PyUnicode_FromWideChar(register const wchar_t *w,
-                                 Py_ssize_t size)
-{
-    PyUnicodeObject *unicode;
-
-    if (w == NULL) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-
-    unicode = _PyUnicode_New(size);
-    if (!unicode)
-        return NULL;
-
-    /* Copy the wchar_t data into the new object */
-#ifdef HAVE_USABLE_WCHAR_T
-    memcpy(unicode->str, w, size * sizeof(wchar_t));
-#else
-    {
-        register Py_UNICODE *u;
-        register Py_ssize_t i;
-        u = PyUnicode_AS_UNICODE(unicode);
-        for (i = size; i > 0; i--)
-            *u++ = *w++;
-    }
-#endif
-
-    return (PyObject *)unicode;
-}
-
-#endif /* CONVERT_WCHAR_TO_SURROGATES */
-
-#undef CONVERT_WCHAR_TO_SURROGATES
-
-static void
-makefmt(char *fmt, int longflag, int size_tflag, int zeropad, int width, int precision, char c)
-{
-    *fmt++ = '%';
-    if (width) {
-        if (zeropad)
-            *fmt++ = '0';
-        fmt += sprintf(fmt, "%d", width);
-    }
-    if (precision)
-        fmt += sprintf(fmt, ".%d", precision);
-    if (longflag)
-        *fmt++ = 'l';
-    else if (size_tflag) {
-        char *f = PY_FORMAT_SIZE_T;
-        while (*f)
-            *fmt++ = *f++;
-    }
-    *fmt++ = c;
-    *fmt = '\0';
-}
-
-#define appendstring(string) {for (copy = string;*copy;) *s++ = *copy++;}
-
-PyObject *
-PyUnicode_FromFormatV(const char *format, va_list vargs)
-{
-    va_list count;
-    Py_ssize_t callcount = 0;
-    PyObject **callresults = NULL;
-    PyObject **callresult = NULL;
-    Py_ssize_t n = 0;
-    int width = 0;
-    int precision = 0;
-    int zeropad;
-    const char* f;
-    Py_UNICODE *s;
-    PyObject *string;
-    /* used by sprintf */
-    char buffer[21];
-    /* use abuffer instead of buffer, if we need more space
-     * (which can happen if there's a format specifier with width). */
-    char *abuffer = NULL;
-    char *realbuffer;
-    Py_ssize_t abuffersize = 0;
-    char fmt[60]; /* should be enough for %0width.precisionld */
-    const char *copy;
-
-#ifdef VA_LIST_IS_ARRAY
-    Py_MEMCPY(count, vargs, sizeof(va_list));
-#else
-#ifdef  __va_copy
-    __va_copy(count, vargs);
-#else
-    count = vargs;
-#endif
-#endif
-     /* step 1: count the number of %S/%R/%s format specifications
-      * (we call PyObject_Str()/PyObject_Repr()/PyUnicode_DecodeUTF8() for these
-      * objects once during step 3 and put the result in an array) */
-    for (f = format; *f; f++) {
-         if (*f == '%') {
-             if (*(f+1)=='%')
-                 continue;
-             if (*(f+1)=='S' || *(f+1)=='R')
-                 ++callcount;
-             while (isdigit((unsigned)*f))
-                 width = (width*10) + *f++ - '0';
-             while (*++f && *f != '%' && !isalpha((unsigned)*f))
-                 ;
-             if (*f == 's')
-                 ++callcount;
-         }
-    }
-    /* step 2: allocate memory for the results of
-     * PyObject_Str()/PyObject_Repr()/PyUnicode_DecodeUTF8() calls */
-    if (callcount) {
-        callresults = PyObject_Malloc(sizeof(PyObject *)*callcount);
-        if (!callresults) {
-            PyErr_NoMemory();
-            return NULL;
-        }
-        callresult = callresults;
-    }
-    /* step 3: figure out how large a buffer we need */
-    for (f = format; *f; f++) {
-        if (*f == '%') {
-            const char* p = f;
-            width = 0;
-            while (isdigit((unsigned)*f))
-                width = (width*10) + *f++ - '0';
-            while (*++f && *f != '%' && !isalpha((unsigned)*f))
-                ;
-
-            /* skip the 'l' or 'z' in {%ld, %zd, %lu, %zu} since
-             * they don't affect the amount of space we reserve.
-             */
-            if ((*f == 'l' || *f == 'z') &&
-                (f[1] == 'd' || f[1] == 'u'))
-                ++f;
-
-            switch (*f) {
-            case 'c':
-                (void)va_arg(count, int);
-                /* fall through... */
-            case '%':
-                n++;
-                break;
-            case 'd': case 'u': case 'i': case 'x':
-                (void) va_arg(count, int);
-                /* 20 bytes is enough to hold a 64-bit
-                   integer.  Decimal takes the most space.
-                   This isn't enough for octal.
-                   If a width is specified we need more
-                   (which we allocate later). */
-                if (width < 20)
-                    width = 20;
-                n += width;
-                if (abuffersize < width)
-                    abuffersize = width;
-                break;
-            case 's':
-            {
-                /* UTF-8 */
-                const char *s = va_arg(count, const char*);
-                PyObject *str = PyUnicode_DecodeUTF8(s, strlen(s), "replace");
-                if (!str)
-                    goto fail;
-                n += PyUnicode_GET_SIZE(str);
-                /* Remember the str and switch to the next slot */
-                *callresult++ = str;
-                break;
-            }
-            case 'U':
-            {
-                PyObject *obj = va_arg(count, PyObject *);
-                assert(obj && PyUnicode_Check(obj));
-                n += PyUnicode_GET_SIZE(obj);
-                break;
-            }
-            case 'V':
-            {
-                PyObject *obj = va_arg(count, PyObject *);
-                const char *str = va_arg(count, const char *);
-                assert(obj || str);
-                assert(!obj || PyUnicode_Check(obj));
-                if (obj)
-                    n += PyUnicode_GET_SIZE(obj);
-                else
-                    n += strlen(str);
-                break;
-            }
-            case 'S':
-            {
-                PyObject *obj = va_arg(count, PyObject *);
-                PyObject *str;
-                assert(obj);
-                str = PyObject_Str(obj);
-                if (!str)
-                    goto fail;
-                n += PyUnicode_GET_SIZE(str);
-                /* Remember the str and switch to the next slot */
-                *callresult++ = str;
-                break;
-            }
-            case 'R':
-            {
-                PyObject *obj = va_arg(count, PyObject *);
-                PyObject *repr;
-                assert(obj);
-                repr = PyObject_Repr(obj);
-                if (!repr)
-                    goto fail;
-                n += PyUnicode_GET_SIZE(repr);
-                /* Remember the repr and switch to the next slot */
-                *callresult++ = repr;
-                break;
-            }
-            case 'p':
-                (void) va_arg(count, int);
-                /* maximum 64-bit pointer representation:
-                 * 0xffffffffffffffff
-                 * so 19 characters is enough.
-                 * XXX I count 18 -- what's the extra for?
-                 */
-                n += 19;
-                break;
-            default:
-                /* if we stumble upon an unknown
-                   formatting code, copy the rest of
-                   the format string to the output
-                   string. (we cannot just skip the
-                   code, since there's no way to know
-                   what's in the argument list) */
-                n += strlen(p);
-                goto expand;
-            }
-        } else
-            n++;
-    }
-  expand:
-    if (abuffersize > 20) {
-        abuffer = PyObject_Malloc(abuffersize);
-        if (!abuffer) {
-            PyErr_NoMemory();
-            goto fail;
-        }
-        realbuffer = abuffer;
-    }
-    else
-        realbuffer = buffer;
-    /* step 4: fill the buffer */
-    /* Since we've analyzed how much space we need for the worst case,
-       we don't have to resize the string.
-       There can be no errors beyond this point. */
-    string = PyUnicode_FromUnicode(NULL, n);
-    if (!string)
-        goto fail;
-
-    s = PyUnicode_AS_UNICODE(string);
-    callresult = callresults;
-
-    for (f = format; *f; f++) {
-        if (*f == '%') {
-            const char* p = f++;
-            int longflag = 0;
-            int size_tflag = 0;
-            zeropad = (*f == '0');
-            /* parse the width.precision part */
-            width = 0;
-            while (isdigit((unsigned)*f))
-                width = (width*10) + *f++ - '0';
-            precision = 0;
-            if (*f == '.') {
-                f++;
-                while (isdigit((unsigned)*f))
-                    precision = (precision*10) + *f++ - '0';
-            }
-            /* handle the long flag, but only for %ld and %lu.
-               others can be added when necessary. */
-            if (*f == 'l' && (f[1] == 'd' || f[1] == 'u')) {
-                longflag = 1;
-                ++f;
-            }
-            /* handle the size_t flag. */
-            if (*f == 'z' && (f[1] == 'd' || f[1] == 'u')) {
-                size_tflag = 1;
-                ++f;
-            }
-
-            switch (*f) {
-            case 'c':
-                *s++ = va_arg(vargs, int);
-                break;
-            case 'd':
-                makefmt(fmt, longflag, size_tflag, zeropad, width, precision, 'd');
-                if (longflag)
-                    sprintf(realbuffer, fmt, va_arg(vargs, long));
-                else if (size_tflag)
-                    sprintf(realbuffer, fmt, va_arg(vargs, Py_ssize_t));
-                else
-                    sprintf(realbuffer, fmt, va_arg(vargs, int));
-                appendstring(realbuffer);
-                break;
-            case 'u':
-                makefmt(fmt, longflag, size_tflag, zeropad, width, precision, 'u');
-                if (longflag)
-                    sprintf(realbuffer, fmt, va_arg(vargs, unsigned long));
-                else if (size_tflag)
-                    sprintf(realbuffer, fmt, va_arg(vargs, size_t));
-                else
-                    sprintf(realbuffer, fmt, va_arg(vargs, unsigned int));
-                appendstring(realbuffer);
-                break;
-            case 'i':
-                makefmt(fmt, 0, 0, zeropad, width, precision, 'i');
-                sprintf(realbuffer, fmt, va_arg(vargs, int));
-                appendstring(realbuffer);
-                break;
-            case 'x':
-                makefmt(fmt, 0, 0, zeropad, width, precision, 'x');
-                sprintf(realbuffer, fmt, va_arg(vargs, int));
-                appendstring(realbuffer);
-                break;
-            case 's':
-            {
-                /* unused, since we already have the result */
-                (void) va_arg(vargs, char *);
-                Py_UNICODE_COPY(s, PyUnicode_AS_UNICODE(*callresult),
-                                PyUnicode_GET_SIZE(*callresult));
-                s += PyUnicode_GET_SIZE(*callresult);
-                /* We're done with the unicode()/repr() => forget it */
-                Py_DECREF(*callresult);
-                /* switch to next unicode()/repr() result */
-                ++callresult;
-                break;
-            }
-            case 'U':
-            {
-                PyObject *obj = va_arg(vargs, PyObject *);
-                Py_ssize_t size = PyUnicode_GET_SIZE(obj);
-                Py_UNICODE_COPY(s, PyUnicode_AS_UNICODE(obj), size);
-                s += size;
-                break;
-            }
-            case 'V':
-            {
-                PyObject *obj = va_arg(vargs, PyObject *);
-                const char *str = va_arg(vargs, const char *);
-                if (obj) {
-                    Py_ssize_t size = PyUnicode_GET_SIZE(obj);
-                    Py_UNICODE_COPY(s, PyUnicode_AS_UNICODE(obj), size);
-                    s += size;
-                } else {
-                    appendstring(str);
-                }
-                break;
-            }
-            case 'S':
-            case 'R':
-            {
-                Py_UNICODE *ucopy;
-                Py_ssize_t usize;
-                Py_ssize_t upos;
-                /* unused, since we already have the result */
-                (void) va_arg(vargs, PyObject *);
-                ucopy = PyUnicode_AS_UNICODE(*callresult);
-                usize = PyUnicode_GET_SIZE(*callresult);
-                for (upos = 0; upos<usize;)
-                    *s++ = ucopy[upos++];
-                /* We're done with the unicode()/repr() => forget it */
-                Py_DECREF(*callresult);
-                /* switch to next unicode()/repr() result */
-                ++callresult;
-                break;
-            }
-            case 'p':
-                sprintf(buffer, "%p", va_arg(vargs, void*));
-                /* %p is ill-defined:  ensure leading 0x. */
-                if (buffer[1] == 'X')
-                    buffer[1] = 'x';
-                else if (buffer[1] != 'x') {
-                    memmove(buffer+2, buffer, strlen(buffer)+1);
-                    buffer[0] = '0';
-                    buffer[1] = 'x';
-                }
-                appendstring(buffer);
-                break;
-            case '%':
-                *s++ = '%';
-                break;
-            default:
-                appendstring(p);
-                goto end;
-            }
-        } else
-            *s++ = *f;
-    }
-
-  end:
-    if (callresults)
-        PyObject_Free(callresults);
-    if (abuffer)
-        PyObject_Free(abuffer);
-    PyUnicode_Resize(&string, s - PyUnicode_AS_UNICODE(string));
-    return string;
-  fail:
-    if (callresults) {
-        PyObject **callresult2 = callresults;
-        while (callresult2 < callresult) {
-            Py_DECREF(*callresult2);
-            ++callresult2;
-        }
-        PyObject_Free(callresults);
-    }
-    if (abuffer)
-        PyObject_Free(abuffer);
-    return NULL;
-}
-
-#undef appendstring
-
-PyObject *
-PyUnicode_FromFormat(const char *format, ...)
-{
-    PyObject* ret;
-    va_list vargs;
-
-#ifdef HAVE_STDARG_PROTOTYPES
-    va_start(vargs, format);
-#else
-    va_start(vargs);
-#endif
-    ret = PyUnicode_FromFormatV(format, vargs);
-    va_end(vargs);
-    return ret;
-}
-
-Py_ssize_t PyUnicode_AsWideChar(PyUnicodeObject *unicode,
-                                wchar_t *w,
-                                Py_ssize_t size)
-{
-    if (unicode == NULL) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-
-    /* If possible, try to copy the 0-termination as well */
-    if (size > PyUnicode_GET_SIZE(unicode))
-        size = PyUnicode_GET_SIZE(unicode) + 1;
-
-#ifdef HAVE_USABLE_WCHAR_T
-    memcpy(w, unicode->str, size * sizeof(wchar_t));
-#else
-    {
-        register Py_UNICODE *u;
-        register Py_ssize_t i;
-        u = PyUnicode_AS_UNICODE(unicode);
-        for (i = size; i > 0; i--)
-            *w++ = *u++;
-    }
-#endif
-
-    if (size > PyUnicode_GET_SIZE(unicode))
-        return PyUnicode_GET_SIZE(unicode);
-    else
-        return size;
-}
-
-#endif
-
-PyObject *PyUnicode_FromOrdinal(int ordinal)
-{
-    Py_UNICODE s[1];
-
-#ifdef Py_UNICODE_WIDE
-    if (ordinal < 0 || ordinal > 0x10ffff) {
-        PyErr_SetString(PyExc_ValueError,
-                        "unichr() arg not in range(0x110000) "
-                        "(wide Python build)");
-        return NULL;
-    }
-#else
-    if (ordinal < 0 || ordinal > 0xffff) {
-        PyErr_SetString(PyExc_ValueError,
-                        "unichr() arg not in range(0x10000) "
-                        "(narrow Python build)");
-        return NULL;
-    }
-#endif
-
-    s[0] = (Py_UNICODE)ordinal;
-    return PyUnicode_FromUnicode(s, 1);
-}
-
-PyObject *PyUnicode_FromObject(register PyObject *obj)
-{
-    /* XXX Perhaps we should make this API an alias of
-       PyObject_Unicode() instead ?! */
-    if (PyUnicode_CheckExact(obj)) {
-        Py_INCREF(obj);
-        return obj;
-    }
-    if (PyUnicode_Check(obj)) {
-        /* For a Unicode subtype that's not a Unicode object,
-           return a true Unicode object with the same data. */
-        return PyUnicode_FromUnicode(PyUnicode_AS_UNICODE(obj),
-                                     PyUnicode_GET_SIZE(obj));
-    }
-    return PyUnicode_FromEncodedObject(obj, NULL, "strict");
-}
-
-PyObject *PyUnicode_FromEncodedObject(register PyObject *obj,
-                                      const char *encoding,
-                                      const char *errors)
-{
-    const char *s = NULL;
-    Py_ssize_t len;
-    PyObject *v;
-
-    if (obj == NULL) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-
-#if 0
-    /* For b/w compatibility we also accept Unicode objects provided
-       that no encodings is given and then redirect to
-       PyObject_Unicode() which then applies the additional logic for
-       Unicode subclasses.
-
-       NOTE: This API should really only be used for object which
-       represent *encoded* Unicode !
-
-    */
-    if (PyUnicode_Check(obj)) {
-        if (encoding) {
-            PyErr_SetString(PyExc_TypeError,
-                            "decoding Unicode is not supported");
-            return NULL;
-        }
-        return PyObject_Unicode(obj);
-    }
-#else
-    if (PyUnicode_Check(obj)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "decoding Unicode is not supported");
-        return NULL;
-    }
-#endif
-
-    /* Coerce object */
-    if (PyString_Check(obj)) {
-        s = PyString_AS_STRING(obj);
-        len = PyString_GET_SIZE(obj);
-    }
-    else if (PyByteArray_Check(obj)) {
-        /* Python 2.x specific */
-        PyErr_Format(PyExc_TypeError,
-                     "decoding bytearray is not supported");
-        return NULL;
-    }
-    else if (PyObject_AsCharBuffer(obj, &s, &len)) {
-        /* Overwrite the error message with something more useful in
-           case of a TypeError. */
-        if (PyErr_ExceptionMatches(PyExc_TypeError))
-            PyErr_Format(PyExc_TypeError,
-                         "coercing to Unicode: need string or buffer, "
-                         "%.80s found",
-                         Py_TYPE(obj)->tp_name);
-        goto onError;
-    }
-
-    /* Convert to Unicode */
-    if (len == 0) {
-        Py_INCREF(unicode_empty);
-        v = (PyObject *)unicode_empty;
-    }
-    else
-        v = PyUnicode_Decode(s, len, encoding, errors);
-
-    return v;
-
-  onError:
-    return NULL;
-}
-
-PyObject *PyUnicode_Decode(const char *s,
-                           Py_ssize_t size,
-                           const char *encoding,
-                           const char *errors)
-{
-    PyObject *buffer = NULL, *unicode;
-
-    if (encoding == NULL)
-        encoding = PyUnicode_GetDefaultEncoding();
-
-    /* Shortcuts for common default encodings */
-    if (strcmp(encoding, "utf-8") == 0)
-        return PyUnicode_DecodeUTF8(s, size, errors);
-    else if (strcmp(encoding, "latin-1") == 0)
-        return PyUnicode_DecodeLatin1(s, size, errors);
-#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
-    else if (strcmp(encoding, "mbcs") == 0)
-        return PyUnicode_DecodeMBCS(s, size, errors);
-#endif
-    else if (strcmp(encoding, "ascii") == 0)
-        return PyUnicode_DecodeASCII(s, size, errors);
-
-    /* Decode via the codec registry */
-    buffer = PyBuffer_FromMemory((void *)s, size);
-    if (buffer == NULL)
-        goto onError;
-    unicode = PyCodec_Decode(buffer, encoding, errors);
-    if (unicode == NULL)
-        goto onError;
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_Format(PyExc_TypeError,
-                     "decoder did not return an unicode object (type=%.400s)",
-                     Py_TYPE(unicode)->tp_name);
-        Py_DECREF(unicode);
-        goto onError;
-    }
-    Py_DECREF(buffer);
-    return unicode;
-
-  onError:
-    Py_XDECREF(buffer);
-    return NULL;
-}
-
-PyObject *PyUnicode_AsDecodedObject(PyObject *unicode,
-                                    const char *encoding,
-                                    const char *errors)
-{
-    PyObject *v;
-
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        goto onError;
-    }
-
-    if (encoding == NULL)
-        encoding = PyUnicode_GetDefaultEncoding();
-
-    /* Decode via the codec registry */
-    v = PyCodec_Decode(unicode, encoding, errors);
-    if (v == NULL)
-        goto onError;
-    return v;
-
-  onError:
-    return NULL;
-}
-
-PyObject *PyUnicode_Encode(const Py_UNICODE *s,
-                           Py_ssize_t size,
-                           const char *encoding,
-                           const char *errors)
-{
-    PyObject *v, *unicode;
-
-    unicode = PyUnicode_FromUnicode(s, size);
-    if (unicode == NULL)
-        return NULL;
-    v = PyUnicode_AsEncodedString(unicode, encoding, errors);
-    Py_DECREF(unicode);
-    return v;
-}
-
-PyObject *PyUnicode_AsEncodedObject(PyObject *unicode,
-                                    const char *encoding,
-                                    const char *errors)
-{
-    PyObject *v;
-
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        goto onError;
-    }
-
-    if (encoding == NULL)
-        encoding = PyUnicode_GetDefaultEncoding();
-
-    /* Encode via the codec registry */
-    v = PyCodec_Encode(unicode, encoding, errors);
-    if (v == NULL)
-        goto onError;
-    return v;
-
-  onError:
-    return NULL;
-}
-
-PyObject *PyUnicode_AsEncodedString(PyObject *unicode,
-                                    const char *encoding,
-                                    const char *errors)
-{
-    PyObject *v;
-
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        goto onError;
-    }
-
-    if (encoding == NULL)
-        encoding = PyUnicode_GetDefaultEncoding();
-
-    /* Shortcuts for common default encodings */
-    if (errors == NULL) {
-        if (strcmp(encoding, "utf-8") == 0)
-            return PyUnicode_AsUTF8String(unicode);
-        else if (strcmp(encoding, "latin-1") == 0)
-            return PyUnicode_AsLatin1String(unicode);
-#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
-        else if (strcmp(encoding, "mbcs") == 0)
-            return PyUnicode_AsMBCSString(unicode);
-#endif
-        else if (strcmp(encoding, "ascii") == 0)
-            return PyUnicode_AsASCIIString(unicode);
-    }
-
-    /* Encode via the codec registry */
-    v = PyCodec_Encode(unicode, encoding, errors);
-    if (v == NULL)
-        goto onError;
-    if (!PyString_Check(v)) {
-        PyErr_Format(PyExc_TypeError,
-                     "encoder did not return a string object (type=%.400s)",
-                     Py_TYPE(v)->tp_name);
-        Py_DECREF(v);
-        goto onError;
-    }
-    return v;
-
-  onError:
-    return NULL;
-}
-
-PyObject *_PyUnicode_AsDefaultEncodedString(PyObject *unicode,
-                                            const char *errors)
-{
-    PyObject *v = ((PyUnicodeObject *)unicode)->defenc;
-
-    if (v)
-        return v;
-    v = PyUnicode_AsEncodedString(unicode, NULL, errors);
-    if (v && errors == NULL)
-        ((PyUnicodeObject *)unicode)->defenc = v;
-    return v;
-}
-
-Py_UNICODE *PyUnicode_AsUnicode(PyObject *unicode)
-{
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        goto onError;
-    }
-    return PyUnicode_AS_UNICODE(unicode);
-
-  onError:
-    return NULL;
-}
-
-Py_ssize_t PyUnicode_GetSize(PyObject *unicode)
-{
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        goto onError;
-    }
-    return PyUnicode_GET_SIZE(unicode);
-
-  onError:
-    return -1;
-}
-
-const char *PyUnicode_GetDefaultEncoding(void)
-{
-    return unicode_default_encoding;
-}
-
-int PyUnicode_SetDefaultEncoding(const char *encoding)
-{
-    PyObject *v;
-
-    /* Make sure the encoding is valid. As side effect, this also
-       loads the encoding into the codec registry cache. */
-    v = _PyCodec_Lookup(encoding);
-    if (v == NULL)
-        goto onError;
-    Py_DECREF(v);
-    strncpy(unicode_default_encoding,
-            encoding,
-            sizeof(unicode_default_encoding));
-    return 0;
-
-  onError:
-    return -1;
-}
-
-/* error handling callback helper:
-   build arguments, call the callback and check the arguments,
-   if no exception occurred, copy the replacement to the output
-   and adjust various state variables.
-   return 0 on success, -1 on error
-*/
-
-static
-int unicode_decode_call_errorhandler(const char *errors, PyObject **errorHandler,
-                                     const char *encoding, const char *reason,
-                                     const char *input, Py_ssize_t insize, Py_ssize_t *startinpos,
-                                     Py_ssize_t *endinpos, PyObject **exceptionObject, const char **inptr,
-                                     PyUnicodeObject **output, Py_ssize_t *outpos, Py_UNICODE **outptr)
-{
-    static char *argparse = "O!n;decoding error handler must return (unicode, int) tuple";
-
-    PyObject *restuple = NULL;
-    PyObject *repunicode = NULL;
-    Py_ssize_t outsize = PyUnicode_GET_SIZE(*output);
-    Py_ssize_t requiredsize;
-    Py_ssize_t newpos;
-    Py_UNICODE *repptr;
-    Py_ssize_t repsize;
-    int res = -1;
-
-    if (*errorHandler == NULL) {
-        *errorHandler = PyCodec_LookupError(errors);
-        if (*errorHandler == NULL)
-            goto onError;
-    }
-
-    if (*exceptionObject == NULL) {
-        *exceptionObject = PyUnicodeDecodeError_Create(
-            encoding, input, insize, *startinpos, *endinpos, reason);
-        if (*exceptionObject == NULL)
-            goto onError;
-    }
-    else {
-        if (PyUnicodeDecodeError_SetStart(*exceptionObject, *startinpos))
-            goto onError;
-        if (PyUnicodeDecodeError_SetEnd(*exceptionObject, *endinpos))
-            goto onError;
-        if (PyUnicodeDecodeError_SetReason(*exceptionObject, reason))
-            goto onError;
-    }
-
-    restuple = PyObject_CallFunctionObjArgs(*errorHandler, *exceptionObject, NULL);
-    if (restuple == NULL)
-        goto onError;
-    if (!PyTuple_Check(restuple)) {
-        PyErr_SetString(PyExc_TypeError, &argparse[4]);
-        goto onError;
-    }
-    if (!PyArg_ParseTuple(restuple, argparse, &PyUnicode_Type, &repunicode, &newpos))
-        goto onError;
-    if (newpos<0)
-        newpos = insize+newpos;
-    if (newpos<0 || newpos>insize) {
-        PyErr_Format(PyExc_IndexError, "position %zd from error handler out of bounds", newpos);
-        goto onError;
-    }
-
-    /* need more space? (at least enough for what we
-       have+the replacement+the rest of the string (starting
-       at the new input position), so we won't have to check space
-       when there are no errors in the rest of the string) */
-    repptr = PyUnicode_AS_UNICODE(repunicode);
-    repsize = PyUnicode_GET_SIZE(repunicode);
-    requiredsize = *outpos + repsize + insize-newpos;
-    if (requiredsize > outsize) {
-        if (requiredsize<2*outsize)
-            requiredsize = 2*outsize;
-        if (_PyUnicode_Resize(output, requiredsize) < 0)
-            goto onError;
-        *outptr = PyUnicode_AS_UNICODE(*output) + *outpos;
-    }
-    *endinpos = newpos;
-    *inptr = input + newpos;
-    Py_UNICODE_COPY(*outptr, repptr, repsize);
-    *outptr += repsize;
-    *outpos += repsize;
-    /* we made it! */
-    res = 0;
-
-  onError:
-    Py_XDECREF(restuple);
-    return res;
-}
-
-/* --- UTF-7 Codec -------------------------------------------------------- */
-
-/* See RFC2152 for details.  We encode conservatively and decode liberally. */
-
-/* Three simple macros defining base-64. */
-
-/* Is c a base-64 character? */
-
-#define IS_BASE64(c) \
-    (isalnum(c) || (c) == '+' || (c) == '/')
-
-/* given that c is a base-64 character, what is its base-64 value? */
-
-#define FROM_BASE64(c)                                                  \
-    (((c) >= 'A' && (c) <= 'Z') ? (c) - 'A' :                           \
-     ((c) >= 'a' && (c) <= 'z') ? (c) - 'a' + 26 :                      \
-     ((c) >= '0' && (c) <= '9') ? (c) - '0' + 52 :                      \
-     (c) == '+' ? 62 : 63)
-
-/* What is the base-64 character of the bottom 6 bits of n? */
-
-#define TO_BASE64(n)  \
-    ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(n) & 0x3f])
-
-/* DECODE_DIRECT: this byte encountered in a UTF-7 string should be
- * decoded as itself.  We are permissive on decoding; the only ASCII
- * byte not decoding to itself is the + which begins a base64
- * string. */
-
-#define DECODE_DIRECT(c)                                \
-    ((c) <= 127 && (c) != '+')
-
-/* The UTF-7 encoder treats ASCII characters differently according to
- * whether they are Set D, Set O, Whitespace, or special (i.e. none of
- * the above).  See RFC2152.  This array identifies these different
- * sets:
- * 0 : "Set D"
- *     alphanumeric and '(),-./:?
- * 1 : "Set O"
- *     !"#$%&*;<=>@[]^_`{|}
- * 2 : "whitespace"
- *     ht nl cr sp
- * 3 : special (must be base64 encoded)
- *     everything else (i.e. +\~ and non-printing codes 0-8 11-12 14-31 127)
- */
-
-static
-char utf7_category[128] = {
-/* nul soh stx etx eot enq ack bel bs  ht  nl  vt  np  cr  so  si  */
-    3,  3,  3,  3,  3,  3,  3,  3,  3,  2,  2,  3,  3,  2,  3,  3,
-/* dle dc1 dc2 dc3 dc4 nak syn etb can em  sub esc fs  gs  rs  us  */
-    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
-/* sp   !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /  */
-    2,  1,  1,  1,  1,  1,  1,  0,  0,  0,  1,  3,  0,  0,  0,  0,
-/*  0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?  */
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  0,
-/*  @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O  */
-    1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-/*  P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _  */
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  3,  1,  1,  1,
-/*  `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o  */
-    1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-/*  p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~  del */
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  3,  3,
-};
-
-/* ENCODE_DIRECT: this character should be encoded as itself.  The
- * answer depends on whether we are encoding set O as itself, and also
- * on whether we are encoding whitespace as itself.  RFC2152 makes it
- * clear that the answers to these questions vary between
- * applications, so this code needs to be flexible.  */
-
-#define ENCODE_DIRECT(c, directO, directWS)             \
-    ((c) < 128 && (c) > 0 &&                            \
-     ((utf7_category[(c)] == 0) ||                      \
-      (directWS && (utf7_category[(c)] == 2)) ||        \
-      (directO && (utf7_category[(c)] == 1))))
-
-PyObject *PyUnicode_DecodeUTF7(const char *s,
-                               Py_ssize_t size,
-                               const char *errors)
-{
-    return PyUnicode_DecodeUTF7Stateful(s, size, errors, NULL);
-}
-
-/* The decoder.  The only state we preserve is our read position,
- * i.e. how many characters we have consumed.  So if we end in the
- * middle of a shift sequence we have to back off the read position
- * and the output to the beginning of the sequence, otherwise we lose
- * all the shift state (seen bits, number of bits seen, high
- * surrogate). */
-
-PyObject *PyUnicode_DecodeUTF7Stateful(const char *s,
-                                       Py_ssize_t size,
-                                       const char *errors,
-                                       Py_ssize_t *consumed)
-{
-    const char *starts = s;
-    Py_ssize_t startinpos;
-    Py_ssize_t endinpos;
-    Py_ssize_t outpos;
-    const char *e;
-    PyUnicodeObject *unicode;
-    Py_UNICODE *p;
-    const char *errmsg = "";
-    int inShift = 0;
-    Py_UNICODE *shiftOutStart;
-    unsigned int base64bits = 0;
-    unsigned long base64buffer = 0;
-    Py_UNICODE surrogate = 0;
-    PyObject *errorHandler = NULL;
-    PyObject *exc = NULL;
-
-    unicode = _PyUnicode_New(size);
-    if (!unicode)
-        return NULL;
-    if (size == 0) {
-        if (consumed)
-            *consumed = 0;
-        return (PyObject *)unicode;
-    }
-
-    p = unicode->str;
-    shiftOutStart = p;
-    e = s + size;
-
-    while (s < e) {
-        Py_UNICODE ch = (unsigned char) *s;
-
-        if (inShift) { /* in a base-64 section */
-            if (IS_BASE64(ch)) { /* consume a base-64 character */
-                base64buffer = (base64buffer << 6) | FROM_BASE64(ch);
-                base64bits += 6;
-                s++;
-                if (base64bits >= 16) {
-                    /* we have enough bits for a UTF-16 value */
-                    Py_UNICODE outCh = (Py_UNICODE)
-                                       (base64buffer >> (base64bits-16));
-                    base64bits -= 16;
-                    base64buffer &= (1 << base64bits) - 1; /* clear high bits */
-                    if (surrogate) {
-                        /* expecting a second surrogate */
-                        if (outCh >= 0xDC00 && outCh <= 0xDFFF) {
-#ifdef Py_UNICODE_WIDE
-                            *p++ = (((surrogate & 0x3FF)<<10)
-                                    | (outCh & 0x3FF)) + 0x10000;
-#else
-                            *p++ = surrogate;
-                            *p++ = outCh;
-#endif
-                            surrogate = 0;
-                        }
-                        else {
-                            surrogate = 0;
-                            errmsg = "second surrogate missing";
-                            goto utf7Error;
-                        }
-                    }
-                    else if (outCh >= 0xD800 && outCh <= 0xDBFF) {
-                        /* first surrogate */
-                        surrogate = outCh;
-                    }
-                    else if (outCh >= 0xDC00 && outCh <= 0xDFFF) {
-                        errmsg = "unexpected second surrogate";
-                        goto utf7Error;
-                    }
-                    else {
-                        *p++ = outCh;
-                    }
-                }
-            }
-            else { /* now leaving a base-64 section */
-                inShift = 0;
-                s++;
-                if (surrogate) {
-                    errmsg = "second surrogate missing at end of shift sequence";
-                    goto utf7Error;
-                }
-                if (base64bits > 0) { /* left-over bits */
-                    if (base64bits >= 6) {
-                        /* We've seen at least one base-64 character */
-                        errmsg = "partial character in shift sequence";
-                        goto utf7Error;
-                    }
-                    else {
-                        /* Some bits remain; they should be zero */
-                        if (base64buffer != 0) {
-                            errmsg = "non-zero padding bits in shift sequence";
-                            goto utf7Error;
-                        }
-                    }
-                }
-                if (ch != '-') {
-                    /* '-' is absorbed; other terminating
-                       characters are preserved */
-                    *p++ = ch;
-                }
-            }
-        }
-        else if ( ch == '+' ) {
-            startinpos = s-starts;
-            s++; /* consume '+' */
-            if (s < e && *s == '-') { /* '+-' encodes '+' */
-                s++;
-                *p++ = '+';
-            }
-            else { /* begin base64-encoded section */
-                inShift = 1;
-                shiftOutStart = p;
-                base64bits = 0;
-            }
-        }
-        else if (DECODE_DIRECT(ch)) { /* character decodes as itself */
-            *p++ = ch;
-            s++;
-        }
-        else {
-            startinpos = s-starts;
-            s++;
-            errmsg = "unexpected special character";
-            goto utf7Error;
-        }
-        continue;
-utf7Error:
-        outpos = p-PyUnicode_AS_UNICODE(unicode);
-        endinpos = s-starts;
-        if (unicode_decode_call_errorhandler(
-                errors, &errorHandler,
-                "utf7", errmsg,
-                starts, size, &startinpos, &endinpos, &exc, &s,
-                &unicode, &outpos, &p))
-            goto onError;
-    }
-
-    /* end of string */
-
-    if (inShift && !consumed) { /* in shift sequence, no more to follow */
-        /* if we're in an inconsistent state, that's an error */
-        if (surrogate ||
-                (base64bits >= 6) ||
-                (base64bits > 0 && base64buffer != 0)) {
-            outpos = p-PyUnicode_AS_UNICODE(unicode);
-            endinpos = size;
-            if (unicode_decode_call_errorhandler(
-                    errors, &errorHandler,
-                    "utf7", "unterminated shift sequence",
-                    starts, size, &startinpos, &endinpos, &exc, &s,
-                    &unicode, &outpos, &p))
-                goto onError;
-        }
-    }
-
-    /* return state */
-    if (consumed) {
-        if (inShift) {
-            p = shiftOutStart; /* back off output */
-            *consumed = startinpos;
-        }
-        else {
-            *consumed = s-starts;
-        }
-    }
-
-    if (_PyUnicode_Resize(&unicode, p - PyUnicode_AS_UNICODE(unicode)) < 0)
-        goto onError;
-
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return (PyObject *)unicode;
-
-  onError:
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    Py_DECREF(unicode);
-    return NULL;
-}
-
-
-PyObject *PyUnicode_EncodeUTF7(const Py_UNICODE *s,
-                               Py_ssize_t size,
-                               int base64SetO,
-                               int base64WhiteSpace,
-                               const char *errors)
-{
-    PyObject *v;
-    /* It might be possible to tighten this worst case */
-    Py_ssize_t allocated = 8 * size;
-    int inShift = 0;
-    Py_ssize_t i = 0;
-    unsigned int base64bits = 0;
-    unsigned long base64buffer = 0;
-    char * out;
-    char * start;
-
-    if (allocated / 8 != size)
-        return PyErr_NoMemory();
-
-    if (size == 0)
-        return PyString_FromStringAndSize(NULL, 0);
-
-    v = PyString_FromStringAndSize(NULL, allocated);
-    if (v == NULL)
-        return NULL;
-
-    start = out = PyString_AS_STRING(v);
-    for (;i < size; ++i) {
-        Py_UNICODE ch = s[i];
-
-        if (inShift) {
-            if (ENCODE_DIRECT(ch, !base64SetO, !base64WhiteSpace)) {
-                /* shifting out */
-                if (base64bits) { /* output remaining bits */
-                    *out++ = TO_BASE64(base64buffer << (6-base64bits));
-                    base64buffer = 0;
-                    base64bits = 0;
-                }
-                inShift = 0;
-                /* Characters not in the BASE64 set implicitly unshift the sequence
-                   so no '-' is required, except if the character is itself a '-' */
-                if (IS_BASE64(ch) || ch == '-') {
-                    *out++ = '-';
-                }
-                *out++ = (char) ch;
-            }
-            else {
-                goto encode_char;
-            }
-        }
-        else { /* not in a shift sequence */
-            if (ch == '+') {
-                *out++ = '+';
-                        *out++ = '-';
-            }
-            else if (ENCODE_DIRECT(ch, !base64SetO, !base64WhiteSpace)) {
-                *out++ = (char) ch;
-            }
-            else {
-                *out++ = '+';
-                inShift = 1;
-                goto encode_char;
-            }
-        }
-        continue;
-encode_char:
-#ifdef Py_UNICODE_WIDE
-        if (ch >= 0x10000) {
-            /* code first surrogate */
-            base64bits += 16;
-            base64buffer = (base64buffer << 16) | 0xd800 | ((ch-0x10000) >> 10);
-            while (base64bits >= 6) {
-                *out++ = TO_BASE64(base64buffer >> (base64bits-6));
-                base64bits -= 6;
-            }
-            /* prepare second surrogate */
-            ch =  0xDC00 | ((ch-0x10000) & 0x3FF);
-        }
-#endif
-        base64bits += 16;
-        base64buffer = (base64buffer << 16) | ch;
-        while (base64bits >= 6) {
-            *out++ = TO_BASE64(base64buffer >> (base64bits-6));
-            base64bits -= 6;
-        }
-    }
-    if (base64bits)
-        *out++= TO_BASE64(base64buffer << (6-base64bits) );
-    if (inShift)
-        *out++ = '-';
-
-    if (_PyString_Resize(&v, out - start))
-        return NULL;
-    return v;
-}
-
-#undef IS_BASE64
-#undef FROM_BASE64
-#undef TO_BASE64
-#undef DECODE_DIRECT
-#undef ENCODE_DIRECT
-
-/* --- UTF-8 Codec -------------------------------------------------------- */
-
-static
-char utf8_code_length[256] = {
-    /* Map UTF-8 encoded prefix byte to sequence length.  Zero means
-       illegal prefix.  See RFC 3629 for details */
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 00-0F */
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 70-7F */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 80-8F */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* B0-BF */
-    0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* C0-C1 + C2-CF */
-    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* D0-DF */
-    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* E0-EF */
-    4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  /* F0-F4 + F5-FF */
-};
-
-PyObject *PyUnicode_DecodeUTF8(const char *s,
-                               Py_ssize_t size,
-                               const char *errors)
-{
-    return PyUnicode_DecodeUTF8Stateful(s, size, errors, NULL);
-}
-
-PyObject *PyUnicode_DecodeUTF8Stateful(const char *s,
-                                       Py_ssize_t size,
-                                       const char *errors,
-                                       Py_ssize_t *consumed)
-{
-    const char *starts = s;
-    int n;
-    int k;
-    Py_ssize_t startinpos;
-    Py_ssize_t endinpos;
-    Py_ssize_t outpos;
-    const char *e;
-    PyUnicodeObject *unicode;
-    Py_UNICODE *p;
-    const char *errmsg = "";
-    PyObject *errorHandler = NULL;
-    PyObject *exc = NULL;
-
-    /* Note: size will always be longer than the resulting Unicode
-       character count */
-    unicode = _PyUnicode_New(size);
-    if (!unicode)
-        return NULL;
-    if (size == 0) {
-        if (consumed)
-            *consumed = 0;
-        return (PyObject *)unicode;
-    }
-
-    /* Unpack UTF-8 encoded data */
-    p = unicode->str;
-    e = s + size;
-
-    while (s < e) {
-        Py_UCS4 ch = (unsigned char)*s;
-
-        if (ch < 0x80) {
-            *p++ = (Py_UNICODE)ch;
-            s++;
-            continue;
-        }
-
-        n = utf8_code_length[ch];
-
-        if (s + n > e) {
-            if (consumed)
-                break;
-            else {
-                errmsg = "unexpected end of data";
-                startinpos = s-starts;
-                endinpos = startinpos+1;
-                for (k=1; (k < size-startinpos) && ((s[k]&0xC0) == 0x80); k++)
-                    endinpos++;
-                goto utf8Error;
-            }
-        }
-
-        switch (n) {
-
-        case 0:
-            errmsg = "invalid start byte";
-            startinpos = s-starts;
-            endinpos = startinpos+1;
-            goto utf8Error;
-
-        case 1:
-            errmsg = "internal error";
-            startinpos = s-starts;
-            endinpos = startinpos+1;
-            goto utf8Error;
-
-        case 2:
-            if ((s[1] & 0xc0) != 0x80) {
-                errmsg = "invalid continuation byte";
-                startinpos = s-starts;
-                endinpos = startinpos + 1;
-                goto utf8Error;
-            }
-            ch = ((s[0] & 0x1f) << 6) + (s[1] & 0x3f);
-            assert ((ch > 0x007F) && (ch <= 0x07FF));
-            *p++ = (Py_UNICODE)ch;
-            break;
-
-        case 3:
-            /* XXX: surrogates shouldn't be valid UTF-8!
-               see http://www.unicode.org/versions/Unicode5.2.0/ch03.pdf
-               (table 3-7) and http://www.rfc-editor.org/rfc/rfc3629.txt
-               Uncomment the 2 lines below to make them invalid,
-               codepoints: d800-dfff; UTF-8: \xed\xa0\x80-\xed\xbf\xbf. */
-            if ((s[1] & 0xc0) != 0x80 ||
-                (s[2] & 0xc0) != 0x80 ||
-                ((unsigned char)s[0] == 0xE0 &&
-                 (unsigned char)s[1] < 0xA0)/* ||
-                ((unsigned char)s[0] == 0xED &&
-                 (unsigned char)s[1] > 0x9F)*/) {
-                errmsg = "invalid continuation byte";
-                startinpos = s-starts;
-                endinpos = startinpos + 1;
-
-                /* if s[1] first two bits are 1 and 0, then the invalid
-                   continuation byte is s[2], so increment endinpos by 1,
-                   if not, s[1] is invalid and endinpos doesn't need to
-                   be incremented. */
-                if ((s[1] & 0xC0) == 0x80)
-                    endinpos++;
-                goto utf8Error;
-            }
-            ch = ((s[0] & 0x0f) << 12) + ((s[1] & 0x3f) << 6) + (s[2] & 0x3f);
-            assert ((ch > 0x07FF) && (ch <= 0xFFFF));
-            *p++ = (Py_UNICODE)ch;
-            break;
-
-        case 4:
-            if ((s[1] & 0xc0) != 0x80 ||
-                (s[2] & 0xc0) != 0x80 ||
-                (s[3] & 0xc0) != 0x80 ||
-                ((unsigned char)s[0] == 0xF0 &&
-                 (unsigned char)s[1] < 0x90) ||
-                ((unsigned char)s[0] == 0xF4 &&
-                 (unsigned char)s[1] > 0x8F)) {
-                errmsg = "invalid continuation byte";
-                startinpos = s-starts;
-                endinpos = startinpos + 1;
-                if ((s[1] & 0xC0) == 0x80) {
-                    endinpos++;
-                    if ((s[2] & 0xC0) == 0x80)
-                        endinpos++;
-                }
-                goto utf8Error;
-            }
-            ch = ((s[0] & 0x7) << 18) + ((s[1] & 0x3f) << 12) +
-                 ((s[2] & 0x3f) << 6) + (s[3] & 0x3f);
-            assert ((ch > 0xFFFF) && (ch <= 0x10ffff));
-
-#ifdef Py_UNICODE_WIDE
-            *p++ = (Py_UNICODE)ch;
-#else
-            /*  compute and append the two surrogates: */
-
-            /*  translate from 10000..10FFFF to 0..FFFF */
-            ch -= 0x10000;
-
-            /*  high surrogate = top 10 bits added to D800 */
-            *p++ = (Py_UNICODE)(0xD800 + (ch >> 10));
-
-            /*  low surrogate = bottom 10 bits added to DC00 */
-            *p++ = (Py_UNICODE)(0xDC00 + (ch & 0x03FF));
-#endif
-            break;
-        }
-        s += n;
-        continue;
-
-      utf8Error:
-        outpos = p-PyUnicode_AS_UNICODE(unicode);
-        if (unicode_decode_call_errorhandler(
-                errors, &errorHandler,
-                "utf8", errmsg,
-                starts, size, &startinpos, &endinpos, &exc, &s,
-                &unicode, &outpos, &p))
-            goto onError;
-    }
-    if (consumed)
-        *consumed = s-starts;
-
-    /* Adjust length */
-    if (_PyUnicode_Resize(&unicode, p - unicode->str) < 0)
-        goto onError;
-
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return (PyObject *)unicode;
-
-  onError:
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    Py_DECREF(unicode);
-    return NULL;
-}
-
-/* Allocation strategy:  if the string is short, convert into a stack buffer
-   and allocate exactly as much space needed at the end.  Else allocate the
-   maximum possible needed (4 result bytes per Unicode character), and return
-   the excess memory at the end.
-*/
-PyObject *
-PyUnicode_EncodeUTF8(const Py_UNICODE *s,
-                     Py_ssize_t size,
-                     const char *errors)
-{
-#define MAX_SHORT_UNICHARS 300  /* largest size we'll do on the stack */
-
-    Py_ssize_t i;           /* index into s of next input byte */
-    PyObject *v;        /* result string object */
-    char *p;            /* next free byte in output buffer */
-    Py_ssize_t nallocated;  /* number of result bytes allocated */
-    Py_ssize_t nneeded;        /* number of result bytes needed */
-    char stackbuf[MAX_SHORT_UNICHARS * 4];
-
-    assert(s != NULL);
-    assert(size >= 0);
-
-    if (size <= MAX_SHORT_UNICHARS) {
-        /* Write into the stack buffer; nallocated can't overflow.
-         * At the end, we'll allocate exactly as much heap space as it
-         * turns out we need.
-         */
-        nallocated = Py_SAFE_DOWNCAST(sizeof(stackbuf), size_t, int);
-        v = NULL;   /* will allocate after we're done */
-        p = stackbuf;
-    }
-    else {
-        /* Overallocate on the heap, and give the excess back at the end. */
-        nallocated = size * 4;
-        if (nallocated / 4 != size)  /* overflow! */
-            return PyErr_NoMemory();
-        v = PyString_FromStringAndSize(NULL, nallocated);
-        if (v == NULL)
-            return NULL;
-        p = PyString_AS_STRING(v);
-    }
-
-    for (i = 0; i < size;) {
-        Py_UCS4 ch = s[i++];
-
-        if (ch < 0x80)
-            /* Encode ASCII */
-            *p++ = (char) ch;
-
-        else if (ch < 0x0800) {
-            /* Encode Latin-1 */
-            *p++ = (char)(0xc0 | (ch >> 6));
-            *p++ = (char)(0x80 | (ch & 0x3f));
-        }
-        else {
-            /* Encode UCS2 Unicode ordinals */
-            if (ch < 0x10000) {
-                /* Special case: check for high surrogate */
-                if (0xD800 <= ch && ch <= 0xDBFF && i != size) {
-                    Py_UCS4 ch2 = s[i];
-                    /* Check for low surrogate and combine the two to
-                       form a UCS4 value */
-                    if (0xDC00 <= ch2 && ch2 <= 0xDFFF) {
-                        ch = ((ch - 0xD800) << 10 | (ch2 - 0xDC00)) + 0x10000;
-                        i++;
-                        goto encodeUCS4;
-                    }
-                    /* Fall through: handles isolated high surrogates */
-                }
-                *p++ = (char)(0xe0 | (ch >> 12));
-                *p++ = (char)(0x80 | ((ch >> 6) & 0x3f));
-                *p++ = (char)(0x80 | (ch & 0x3f));
-                continue;
-            }
-          encodeUCS4:
-            /* Encode UCS4 Unicode ordinals */
-            *p++ = (char)(0xf0 | (ch >> 18));
-            *p++ = (char)(0x80 | ((ch >> 12) & 0x3f));
-            *p++ = (char)(0x80 | ((ch >> 6) & 0x3f));
-            *p++ = (char)(0x80 | (ch & 0x3f));
-        }
-    }
-
-    if (v == NULL) {
-        /* This was stack allocated. */
-        nneeded = p - stackbuf;
-        assert(nneeded <= nallocated);
-        v = PyString_FromStringAndSize(stackbuf, nneeded);
-    }
-    else {
-        /* Cut back to size actually needed. */
-        nneeded = p - PyString_AS_STRING(v);
-        assert(nneeded <= nallocated);
-        if (_PyString_Resize(&v, nneeded))
-            return NULL;
-    }
-    return v;
-
-#undef MAX_SHORT_UNICHARS
-}
-
-PyObject *PyUnicode_AsUTF8String(PyObject *unicode)
-{
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    return PyUnicode_EncodeUTF8(PyUnicode_AS_UNICODE(unicode),
-                                PyUnicode_GET_SIZE(unicode),
-                                NULL);
-}
-
-/* --- UTF-32 Codec ------------------------------------------------------- */
-
-PyObject *
-PyUnicode_DecodeUTF32(const char *s,
-                      Py_ssize_t size,
-                      const char *errors,
-                      int *byteorder)
-{
-    return PyUnicode_DecodeUTF32Stateful(s, size, errors, byteorder, NULL);
-}
-
-PyObject *
-PyUnicode_DecodeUTF32Stateful(const char *s,
-                              Py_ssize_t size,
-                              const char *errors,
-                              int *byteorder,
-                              Py_ssize_t *consumed)
-{
-    const char *starts = s;
-    Py_ssize_t startinpos;
-    Py_ssize_t endinpos;
-    Py_ssize_t outpos;
-    PyUnicodeObject *unicode;
-    Py_UNICODE *p;
-#ifndef Py_UNICODE_WIDE
-    int pairs = 0;
-    const unsigned char *qq;
-#else
-    const int pairs = 0;
-#endif
-    const unsigned char *q, *e;
-    int bo = 0;       /* assume native ordering by default */
-    const char *errmsg = "";
-    /* Offsets from q for retrieving bytes in the right order. */
-#ifdef BYTEORDER_IS_LITTLE_ENDIAN
-    int iorder[] = {0, 1, 2, 3};
-#else
-    int iorder[] = {3, 2, 1, 0};
-#endif
-    PyObject *errorHandler = NULL;
-    PyObject *exc = NULL;
-
-    q = (unsigned char *)s;
-    e = q + size;
-
-    if (byteorder)
-        bo = *byteorder;
-
-    /* Check for BOM marks (U+FEFF) in the input and adjust current
-       byte order setting accordingly. In native mode, the leading BOM
-       mark is skipped, in all other modes, it is copied to the output
-       stream as-is (giving a ZWNBSP character). */
-    if (bo == 0) {
-        if (size >= 4) {
-            const Py_UCS4 bom = (q[iorder[3]] << 24) | (q[iorder[2]] << 16) |
-                (q[iorder[1]] << 8) | q[iorder[0]];
-#ifdef BYTEORDER_IS_LITTLE_ENDIAN
-            if (bom == 0x0000FEFF) {
-                q += 4;
-                bo = -1;
-            }
-            else if (bom == 0xFFFE0000) {
-                q += 4;
-                bo = 1;
-            }
-#else
-            if (bom == 0x0000FEFF) {
-                q += 4;
-                bo = 1;
-            }
-            else if (bom == 0xFFFE0000) {
-                q += 4;
-                bo = -1;
-            }
-#endif
-        }
-    }
-
-    if (bo == -1) {
-        /* force LE */
-        iorder[0] = 0;
-        iorder[1] = 1;
-        iorder[2] = 2;
-        iorder[3] = 3;
-    }
-    else if (bo == 1) {
-        /* force BE */
-        iorder[0] = 3;
-        iorder[1] = 2;
-        iorder[2] = 1;
-        iorder[3] = 0;
-    }
-
-    /* On narrow builds we split characters outside the BMP into two
-       codepoints => count how much extra space we need. */
-#ifndef Py_UNICODE_WIDE
-    for (qq = q; qq < e; qq += 4)
-        if (qq[iorder[2]] != 0 || qq[iorder[3]] != 0)
-            pairs++;
-#endif
-
-    /* This might be one to much, because of a BOM */
-    unicode = _PyUnicode_New((size+3)/4+pairs);
-    if (!unicode)
-        return NULL;
-    if (size == 0)
-        return (PyObject *)unicode;
-
-    /* Unpack UTF-32 encoded data */
-    p = unicode->str;
-
-    while (q < e) {
-        Py_UCS4 ch;
-        /* remaining bytes at the end? (size should be divisible by 4) */
-        if (e-q<4) {
-            if (consumed)
-                break;
-            errmsg = "truncated data";
-            startinpos = ((const char *)q)-starts;
-            endinpos = ((const char *)e)-starts;
-            goto utf32Error;
-            /* The remaining input chars are ignored if the callback
-               chooses to skip the input */
-        }
-        ch = (q[iorder[3]] << 24) | (q[iorder[2]] << 16) |
-            (q[iorder[1]] << 8) | q[iorder[0]];
-
-        if (ch >= 0x110000)
-        {
-            errmsg = "codepoint not in range(0x110000)";
-            startinpos = ((const char *)q)-starts;
-            endinpos = startinpos+4;
-            goto utf32Error;
-        }
-#ifndef Py_UNICODE_WIDE
-        if (ch >= 0x10000)
-        {
-            *p++ = 0xD800 | ((ch-0x10000) >> 10);
-            *p++ = 0xDC00 | ((ch-0x10000) & 0x3FF);
-        }
-        else
-#endif
-            *p++ = ch;
-        q += 4;
-        continue;
-      utf32Error:
-        outpos = p-PyUnicode_AS_UNICODE(unicode);
-        if (unicode_decode_call_errorhandler(
-                errors, &errorHandler,
-                "utf32", errmsg,
-                starts, size, &startinpos, &endinpos, &exc, (const char **)&q,
-                &unicode, &outpos, &p))
-            goto onError;
-    }
-
-    if (byteorder)
-        *byteorder = bo;
-
-    if (consumed)
-        *consumed = (const char *)q-starts;
-
-    /* Adjust length */
-    if (_PyUnicode_Resize(&unicode, p - unicode->str) < 0)
-        goto onError;
-
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return (PyObject *)unicode;
-
-  onError:
-    Py_DECREF(unicode);
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return NULL;
-}
-
-PyObject *
-PyUnicode_EncodeUTF32(const Py_UNICODE *s,
-                      Py_ssize_t size,
-                      const char *errors,
-                      int byteorder)
-{
-    PyObject *v;
-    unsigned char *p;
-    Py_ssize_t nsize, bytesize;
-#ifndef Py_UNICODE_WIDE
-    Py_ssize_t i, pairs;
-#else
-    const int pairs = 0;
-#endif
-    /* Offsets from p for storing byte pairs in the right order. */
-#ifdef BYTEORDER_IS_LITTLE_ENDIAN
-    int iorder[] = {0, 1, 2, 3};
-#else
-    int iorder[] = {3, 2, 1, 0};
-#endif
-
-#define STORECHAR(CH)                           \
-    do {                                        \
-        p[iorder[3]] = ((CH) >> 24) & 0xff;     \
-        p[iorder[2]] = ((CH) >> 16) & 0xff;     \
-        p[iorder[1]] = ((CH) >> 8) & 0xff;      \
-        p[iorder[0]] = (CH) & 0xff;             \
-        p += 4;                                 \
-    } while(0)
-
-    /* In narrow builds we can output surrogate pairs as one codepoint,
-       so we need less space. */
-#ifndef Py_UNICODE_WIDE
-    for (i = pairs = 0; i < size-1; i++)
-        if (0xD800 <= s[i] && s[i] <= 0xDBFF &&
-            0xDC00 <= s[i+1] && s[i+1] <= 0xDFFF)
-            pairs++;
-#endif
-    nsize = (size - pairs + (byteorder == 0));
-    bytesize = nsize * 4;
-    if (bytesize / 4 != nsize)
-        return PyErr_NoMemory();
-    v = PyString_FromStringAndSize(NULL, bytesize);
-    if (v == NULL)
-        return NULL;
-
-    p = (unsigned char *)PyString_AS_STRING(v);
-    if (byteorder == 0)
-        STORECHAR(0xFEFF);
-    if (size == 0)
-        return v;
-
-    if (byteorder == -1) {
-        /* force LE */
-        iorder[0] = 0;
-        iorder[1] = 1;
-        iorder[2] = 2;
-        iorder[3] = 3;
-    }
-    else if (byteorder == 1) {
-        /* force BE */
-        iorder[0] = 3;
-        iorder[1] = 2;
-        iorder[2] = 1;
-        iorder[3] = 0;
-    }
-
-    while (size-- > 0) {
-        Py_UCS4 ch = *s++;
-#ifndef Py_UNICODE_WIDE
-        if (0xD800 <= ch && ch <= 0xDBFF && size > 0) {
-            Py_UCS4 ch2 = *s;
-            if (0xDC00 <= ch2 && ch2 <= 0xDFFF) {
-                ch = (((ch & 0x3FF)<<10) | (ch2 & 0x3FF)) + 0x10000;
-                s++;
-                size--;
-            }
-        }
-#endif
-        STORECHAR(ch);
-    }
-    return v;
-#undef STORECHAR
-}
-
-PyObject *PyUnicode_AsUTF32String(PyObject *unicode)
-{
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    return PyUnicode_EncodeUTF32(PyUnicode_AS_UNICODE(unicode),
-                                 PyUnicode_GET_SIZE(unicode),
-                                 NULL,
-                                 0);
-}
-
-/* --- UTF-16 Codec ------------------------------------------------------- */
-
-PyObject *
-PyUnicode_DecodeUTF16(const char *s,
-                      Py_ssize_t size,
-                      const char *errors,
-                      int *byteorder)
-{
-    return PyUnicode_DecodeUTF16Stateful(s, size, errors, byteorder, NULL);
-}
-
-PyObject *
-PyUnicode_DecodeUTF16Stateful(const char *s,
-                              Py_ssize_t size,
-                              const char *errors,
-                              int *byteorder,
-                              Py_ssize_t *consumed)
-{
-    const char *starts = s;
-    Py_ssize_t startinpos;
-    Py_ssize_t endinpos;
-    Py_ssize_t outpos;
-    PyUnicodeObject *unicode;
-    Py_UNICODE *p;
-    const unsigned char *q, *e;
-    int bo = 0;       /* assume native ordering by default */
-    const char *errmsg = "";
-    /* Offsets from q for retrieving byte pairs in the right order. */
-#ifdef BYTEORDER_IS_LITTLE_ENDIAN
-    int ihi = 1, ilo = 0;
-#else
-    int ihi = 0, ilo = 1;
-#endif
-    PyObject *errorHandler = NULL;
-    PyObject *exc = NULL;
-
-    /* Note: size will always be longer than the resulting Unicode
-       character count */
-    unicode = _PyUnicode_New(size);
-    if (!unicode)
-        return NULL;
-    if (size == 0)
-        return (PyObject *)unicode;
-
-    /* Unpack UTF-16 encoded data */
-    p = unicode->str;
-    q = (unsigned char *)s;
-    e = q + size;
-
-    if (byteorder)
-        bo = *byteorder;
-
-    /* Check for BOM marks (U+FEFF) in the input and adjust current
-       byte order setting accordingly. In native mode, the leading BOM
-       mark is skipped, in all other modes, it is copied to the output
-       stream as-is (giving a ZWNBSP character). */
-    if (bo == 0) {
-        if (size >= 2) {
-            const Py_UNICODE bom = (q[ihi] << 8) | q[ilo];
-#ifdef BYTEORDER_IS_LITTLE_ENDIAN
-            if (bom == 0xFEFF) {
-                q += 2;
-                bo = -1;
-            }
-            else if (bom == 0xFFFE) {
-                q += 2;
-                bo = 1;
-            }
-#else
-            if (bom == 0xFEFF) {
-                q += 2;
-                bo = 1;
-            }
-            else if (bom == 0xFFFE) {
-                q += 2;
-                bo = -1;
-            }
-#endif
-        }
-    }
-
-    if (bo == -1) {
-        /* force LE */
-        ihi = 1;
-        ilo = 0;
-    }
-    else if (bo == 1) {
-        /* force BE */
-        ihi = 0;
-        ilo = 1;
-    }
-
-    while (q < e) {
-        Py_UNICODE ch;
-        /* remaining bytes at the end? (size should be even) */
-        if (e-q<2) {
-            if (consumed)
-                break;
-            errmsg = "truncated data";
-            startinpos = ((const char *)q)-starts;
-            endinpos = ((const char *)e)-starts;
-            goto utf16Error;
-            /* The remaining input chars are ignored if the callback
-               chooses to skip the input */
-        }
-        ch = (q[ihi] << 8) | q[ilo];
-
-        q += 2;
-
-        if (ch < 0xD800 || ch > 0xDFFF) {
-            *p++ = ch;
-            continue;
-        }
-
-        /* UTF-16 code pair: */
-        if (q >= e) {
-            errmsg = "unexpected end of data";
-            startinpos = (((const char *)q)-2)-starts;
-            endinpos = ((const char *)e)-starts;
-            goto utf16Error;
-        }
-        if (0xD800 <= ch && ch <= 0xDBFF) {
-            Py_UNICODE ch2 = (q[ihi] << 8) | q[ilo];
-            q += 2;
-            if (0xDC00 <= ch2 && ch2 <= 0xDFFF) {
-#ifndef Py_UNICODE_WIDE
-                *p++ = ch;
-                *p++ = ch2;
-#else
-                *p++ = (((ch & 0x3FF)<<10) | (ch2 & 0x3FF)) + 0x10000;
-#endif
-                continue;
-            }
-            else {
-                errmsg = "illegal UTF-16 surrogate";
-                startinpos = (((const char *)q)-4)-starts;
-                endinpos = startinpos+2;
-                goto utf16Error;
-            }
-
-        }
-        errmsg = "illegal encoding";
-        startinpos = (((const char *)q)-2)-starts;
-        endinpos = startinpos+2;
-        /* Fall through to report the error */
-
-      utf16Error:
-        outpos = p-PyUnicode_AS_UNICODE(unicode);
-        if (unicode_decode_call_errorhandler(
-                errors, &errorHandler,
-                "utf16", errmsg,
-                starts, size, &startinpos, &endinpos, &exc, (const char **)&q,
-                &unicode, &outpos, &p))
-            goto onError;
-    }
-
-    if (byteorder)
-        *byteorder = bo;
-
-    if (consumed)
-        *consumed = (const char *)q-starts;
-
-    /* Adjust length */
-    if (_PyUnicode_Resize(&unicode, p - unicode->str) < 0)
-        goto onError;
-
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return (PyObject *)unicode;
-
-  onError:
-    Py_DECREF(unicode);
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return NULL;
-}
-
-PyObject *
-PyUnicode_EncodeUTF16(const Py_UNICODE *s,
-                      Py_ssize_t size,
-                      const char *errors,
-                      int byteorder)
-{
-    PyObject *v;
-    unsigned char *p;
-    Py_ssize_t nsize, bytesize;
-#ifdef Py_UNICODE_WIDE
-    Py_ssize_t i, pairs;
-#else
-    const int pairs = 0;
-#endif
-    /* Offsets from p for storing byte pairs in the right order. */
-#ifdef BYTEORDER_IS_LITTLE_ENDIAN
-    int ihi = 1, ilo = 0;
-#else
-    int ihi = 0, ilo = 1;
-#endif
-
-#define STORECHAR(CH)                           \
-    do {                                        \
-        p[ihi] = ((CH) >> 8) & 0xff;            \
-        p[ilo] = (CH) & 0xff;                   \
-        p += 2;                                 \
-    } while(0)
-
-#ifdef Py_UNICODE_WIDE
-    for (i = pairs = 0; i < size; i++)
-        if (s[i] >= 0x10000)
-            pairs++;
-#endif
-    /* 2 * (size + pairs + (byteorder == 0)) */
-    if (size > PY_SSIZE_T_MAX ||
-        size > PY_SSIZE_T_MAX - pairs - (byteorder == 0))
-        return PyErr_NoMemory();
-    nsize = size + pairs + (byteorder == 0);
-    bytesize = nsize * 2;
-    if (bytesize / 2 != nsize)
-        return PyErr_NoMemory();
-    v = PyString_FromStringAndSize(NULL, bytesize);
-    if (v == NULL)
-        return NULL;
-
-    p = (unsigned char *)PyString_AS_STRING(v);
-    if (byteorder == 0)
-        STORECHAR(0xFEFF);
-    if (size == 0)
-        return v;
-
-    if (byteorder == -1) {
-        /* force LE */
-        ihi = 1;
-        ilo = 0;
-    }
-    else if (byteorder == 1) {
-        /* force BE */
-        ihi = 0;
-        ilo = 1;
-    }
-
-    while (size-- > 0) {
-        Py_UNICODE ch = *s++;
-        Py_UNICODE ch2 = 0;
-#ifdef Py_UNICODE_WIDE
-        if (ch >= 0x10000) {
-            ch2 = 0xDC00 | ((ch-0x10000) & 0x3FF);
-            ch  = 0xD800 | ((ch-0x10000) >> 10);
-        }
-#endif
-        STORECHAR(ch);
-        if (ch2)
-            STORECHAR(ch2);
-    }
-    return v;
-#undef STORECHAR
-}
-
-PyObject *PyUnicode_AsUTF16String(PyObject *unicode)
-{
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    return PyUnicode_EncodeUTF16(PyUnicode_AS_UNICODE(unicode),
-                                 PyUnicode_GET_SIZE(unicode),
-                                 NULL,
-                                 0);
-}
-
-/* --- Unicode Escape Codec ----------------------------------------------- */
-
-static _PyUnicode_Name_CAPI *ucnhash_CAPI = NULL;
-
-PyObject *PyUnicode_DecodeUnicodeEscape(const char *s,
-                                        Py_ssize_t size,
-                                        const char *errors)
-{
-    const char *starts = s;
-    Py_ssize_t startinpos;
-    Py_ssize_t endinpos;
-    Py_ssize_t outpos;
-    int i;
-    PyUnicodeObject *v;
-    Py_UNICODE *p;
-    const char *end;
-    char* message;
-    Py_UCS4 chr = 0xffffffff; /* in case 'getcode' messes up */
-    PyObject *errorHandler = NULL;
-    PyObject *exc = NULL;
-
-    /* Escaped strings will always be longer than the resulting
-       Unicode string, so we start with size here and then reduce the
-       length after conversion to the true value.
-       (but if the error callback returns a long replacement string
-       we'll have to allocate more space) */
-    v = _PyUnicode_New(size);
-    if (v == NULL)
-        goto onError;
-    if (size == 0)
-        return (PyObject *)v;
-
-    p = PyUnicode_AS_UNICODE(v);
-    end = s + size;
-
-    while (s < end) {
-        unsigned char c;
-        Py_UNICODE x;
-        int digits;
-
-        /* Non-escape characters are interpreted as Unicode ordinals */
-        if (*s != '\\') {
-            *p++ = (unsigned char) *s++;
-            continue;
-        }
-
-        startinpos = s-starts;
-        /* \ - Escapes */
-        s++;
-        c = *s++;
-        if (s > end)
-            c = '\0'; /* Invalid after \ */
-        switch (c) {
-
-            /* \x escapes */
-        case '\n': break;
-        case '\\': *p++ = '\\'; break;
-        case '\'': *p++ = '\''; break;
-        case '\"': *p++ = '\"'; break;
-        case 'b': *p++ = '\b'; break;
-        case 'f': *p++ = '\014'; break; /* FF */
-        case 't': *p++ = '\t'; break;
-        case 'n': *p++ = '\n'; break;
-        case 'r': *p++ = '\r'; break;
-        case 'v': *p++ = '\013'; break; /* VT */
-        case 'a': *p++ = '\007'; break; /* BEL, not classic C */
-
-            /* \OOO (octal) escapes */
-        case '0': case '1': case '2': case '3':
-        case '4': case '5': case '6': case '7':
-            x = s[-1] - '0';
-            if (s < end && '0' <= *s && *s <= '7') {
-                x = (x<<3) + *s++ - '0';
-                if (s < end && '0' <= *s && *s <= '7')
-                    x = (x<<3) + *s++ - '0';
-            }
-            *p++ = x;
-            break;
-
-            /* hex escapes */
-            /* \xXX */
-        case 'x':
-            digits = 2;
-            message = "truncated \\xXX escape";
-            goto hexescape;
-
-            /* \uXXXX */
-        case 'u':
-            digits = 4;
-            message = "truncated \\uXXXX escape";
-            goto hexescape;
-
-            /* \UXXXXXXXX */
-        case 'U':
-            digits = 8;
-            message = "truncated \\UXXXXXXXX escape";
-        hexescape:
-            chr = 0;
-            outpos = p-PyUnicode_AS_UNICODE(v);
-            if (s+digits>end) {
-                endinpos = size;
-                if (unicode_decode_call_errorhandler(
-                        errors, &errorHandler,
-                        "unicodeescape", "end of string in escape sequence",
-                        starts, size, &startinpos, &endinpos, &exc, &s,
-                        &v, &outpos, &p))
-                    goto onError;
-                goto nextByte;
-            }
-            for (i = 0; i < digits; ++i) {
-                c = (unsigned char) s[i];
-                if (!isxdigit(c)) {
-                    endinpos = (s+i+1)-starts;
-                    if (unicode_decode_call_errorhandler(
-                            errors, &errorHandler,
-                            "unicodeescape", message,
-                            starts, size, &startinpos, &endinpos, &exc, &s,
-                            &v, &outpos, &p))
-                        goto onError;
-                    goto nextByte;
-                }
-                chr = (chr<<4) & ~0xF;
-                if (c >= '0' && c <= '9')
-                    chr += c - '0';
-                else if (c >= 'a' && c <= 'f')
-                    chr += 10 + c - 'a';
-                else
-                    chr += 10 + c - 'A';
-            }
-            s += i;
-            if (chr == 0xffffffff && PyErr_Occurred())
-                /* _decoding_error will have already written into the
-                   target buffer. */
-                break;
-        store:
-            /* when we get here, chr is a 32-bit unicode character */
-            if (chr <= 0xffff)
-                /* UCS-2 character */
-                *p++ = (Py_UNICODE) chr;
-            else if (chr <= 0x10ffff) {
-                /* UCS-4 character. Either store directly, or as
-                   surrogate pair. */
-#ifdef Py_UNICODE_WIDE
-                *p++ = chr;
-#else
-                chr -= 0x10000L;
-                *p++ = 0xD800 + (Py_UNICODE) (chr >> 10);
-                *p++ = 0xDC00 + (Py_UNICODE) (chr & 0x03FF);
-#endif
-            } else {
-                endinpos = s-starts;
-                outpos = p-PyUnicode_AS_UNICODE(v);
-                if (unicode_decode_call_errorhandler(
-                        errors, &errorHandler,
-                        "unicodeescape", "illegal Unicode character",
-                        starts, size, &startinpos, &endinpos, &exc, &s,
-                        &v, &outpos, &p))
-                    goto onError;
-            }
-            break;
-
-            /* \N{name} */
-        case 'N':
-            message = "malformed \\N character escape";
-            if (ucnhash_CAPI == NULL) {
-                /* load the unicode data module */
-                ucnhash_CAPI = (_PyUnicode_Name_CAPI *)PyCapsule_Import(PyUnicodeData_CAPSULE_NAME, 1);
-                if (ucnhash_CAPI == NULL)
-                    goto ucnhashError;
-            }
-            if (*s == '{') {
-                const char *start = s+1;
-                /* look for the closing brace */
-                while (*s != '}' && s < end)
-                    s++;
-                if (s > start && s < end && *s == '}') {
-                    /* found a name.  look it up in the unicode database */
-                    message = "unknown Unicode character name";
-                    s++;
-                    if (ucnhash_CAPI->getcode(NULL, start, (int)(s-start-1), &chr))
-                        goto store;
-                }
-            }
-            endinpos = s-starts;
-            outpos = p-PyUnicode_AS_UNICODE(v);
-            if (unicode_decode_call_errorhandler(
-                    errors, &errorHandler,
-                    "unicodeescape", message,
-                    starts, size, &startinpos, &endinpos, &exc, &s,
-                    &v, &outpos, &p))
-                goto onError;
-            break;
-
-        default:
-            if (s > end) {
-                message = "\\ at end of string";
-                s--;
-                endinpos = s-starts;
-                outpos = p-PyUnicode_AS_UNICODE(v);
-                if (unicode_decode_call_errorhandler(
-                        errors, &errorHandler,
-                        "unicodeescape", message,
-                        starts, size, &startinpos, &endinpos, &exc, &s,
-                        &v, &outpos, &p))
-                    goto onError;
-            }
-            else {
-                *p++ = '\\';
-                *p++ = (unsigned char)s[-1];
-            }
-            break;
-        }
-      nextByte:
-        ;
-    }
-    if (_PyUnicode_Resize(&v, p - PyUnicode_AS_UNICODE(v)) < 0)
-        goto onError;
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return (PyObject *)v;
-
-  ucnhashError:
-    PyErr_SetString(
-        PyExc_UnicodeError,
-        "\\N escapes not supported (can't load unicodedata module)"
-        );
-    Py_XDECREF(v);
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return NULL;
-
-  onError:
-    Py_XDECREF(v);
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return NULL;
-}
-
-/* Return a Unicode-Escape string version of the Unicode object.
-
-   If quotes is true, the string is enclosed in u"" or u'' quotes as
-   appropriate.
-
-*/
-
-Py_LOCAL_INLINE(const Py_UNICODE *) findchar(const Py_UNICODE *s,
-                                             Py_ssize_t size,
-                                             Py_UNICODE ch)
-{
-    /* like wcschr, but doesn't stop at NULL characters */
-
-    while (size-- > 0) {
-        if (*s == ch)
-            return s;
-        s++;
-    }
-
-    return NULL;
-}
-
-static
-PyObject *unicodeescape_string(const Py_UNICODE *s,
-                               Py_ssize_t size,
-                               int quotes)
-{
-    PyObject *repr;
-    char *p;
-
-    static const char *hexdigit = "0123456789abcdef";
-#ifdef Py_UNICODE_WIDE
-    const Py_ssize_t expandsize = 10;
-#else
-    const Py_ssize_t expandsize = 6;
-#endif
-
-    /* XXX(nnorwitz): rather than over-allocating, it would be
-       better to choose a different scheme.  Perhaps scan the
-       first N-chars of the string and allocate based on that size.
-    */
-    /* Initial allocation is based on the longest-possible unichr
-       escape.
-
-       In wide (UTF-32) builds '\U00xxxxxx' is 10 chars per source
-       unichr, so in this case it's the longest unichr escape. In
-       narrow (UTF-16) builds this is five chars per source unichr
-       since there are two unichrs in the surrogate pair, so in narrow
-       (UTF-16) builds it's not the longest unichr escape.
-
-       In wide or narrow builds '\uxxxx' is 6 chars per source unichr,
-       so in the narrow (UTF-16) build case it's the longest unichr
-       escape.
-    */
-
-    if (size > (PY_SSIZE_T_MAX - 2 - 1) / expandsize)
-        return PyErr_NoMemory();
-
-    repr = PyString_FromStringAndSize(NULL,
-                                      2
-                                      + expandsize*size
-                                      + 1);
-    if (repr == NULL)
-        return NULL;
-
-    p = PyString_AS_STRING(repr);
-
-    if (quotes) {
-        *p++ = 'u';
-        *p++ = (findchar(s, size, '\'') &&
-                !findchar(s, size, '"')) ? '"' : '\'';
-    }
-    while (size-- > 0) {
-        Py_UNICODE ch = *s++;
-
-        /* Escape quotes and backslashes */
-        if ((quotes &&
-             ch == (Py_UNICODE) PyString_AS_STRING(repr)[1]) || ch == '\\') {
-            *p++ = '\\';
-            *p++ = (char) ch;
-            continue;
-        }
-
-#ifdef Py_UNICODE_WIDE
-        /* Map 21-bit characters to '\U00xxxxxx' */
-        else if (ch >= 0x10000) {
-            *p++ = '\\';
-            *p++ = 'U';
-            *p++ = hexdigit[(ch >> 28) & 0x0000000F];
-            *p++ = hexdigit[(ch >> 24) & 0x0000000F];
-            *p++ = hexdigit[(ch >> 20) & 0x0000000F];
-            *p++ = hexdigit[(ch >> 16) & 0x0000000F];
-            *p++ = hexdigit[(ch >> 12) & 0x0000000F];
-            *p++ = hexdigit[(ch >> 8) & 0x0000000F];
-            *p++ = hexdigit[(ch >> 4) & 0x0000000F];
-            *p++ = hexdigit[ch & 0x0000000F];
-            continue;
-        }
-#else
-        /* Map UTF-16 surrogate pairs to '\U00xxxxxx' */
-        else if (ch >= 0xD800 && ch < 0xDC00) {
-            Py_UNICODE ch2;
-            Py_UCS4 ucs;
-
-            ch2 = *s++;
-            size--;
-            if (ch2 >= 0xDC00 && ch2 <= 0xDFFF) {
-                ucs = (((ch & 0x03FF) << 10) | (ch2 & 0x03FF)) + 0x00010000;
-                *p++ = '\\';
-                *p++ = 'U';
-                *p++ = hexdigit[(ucs >> 28) & 0x0000000F];
-                *p++ = hexdigit[(ucs >> 24) & 0x0000000F];
-                *p++ = hexdigit[(ucs >> 20) & 0x0000000F];
-                *p++ = hexdigit[(ucs >> 16) & 0x0000000F];
-                *p++ = hexdigit[(ucs >> 12) & 0x0000000F];
-                *p++ = hexdigit[(ucs >> 8) & 0x0000000F];
-                *p++ = hexdigit[(ucs >> 4) & 0x0000000F];
-                *p++ = hexdigit[ucs & 0x0000000F];
-                continue;
-            }
-            /* Fall through: isolated surrogates are copied as-is */
-            s--;
-            size++;
-        }
-#endif
-
-        /* Map 16-bit characters to '\uxxxx' */
-        if (ch >= 256) {
-            *p++ = '\\';
-            *p++ = 'u';
-            *p++ = hexdigit[(ch >> 12) & 0x000F];
-            *p++ = hexdigit[(ch >> 8) & 0x000F];
-            *p++ = hexdigit[(ch >> 4) & 0x000F];
-            *p++ = hexdigit[ch & 0x000F];
-        }
-
-        /* Map special whitespace to '\t', \n', '\r' */
-        else if (ch == '\t') {
-            *p++ = '\\';
-            *p++ = 't';
-        }
-        else if (ch == '\n') {
-            *p++ = '\\';
-            *p++ = 'n';
-        }
-        else if (ch == '\r') {
-            *p++ = '\\';
-            *p++ = 'r';
-        }
-
-        /* Map non-printable US ASCII to '\xhh' */
-        else if (ch < ' ' || ch >= 0x7F) {
-            *p++ = '\\';
-            *p++ = 'x';
-            *p++ = hexdigit[(ch >> 4) & 0x000F];
-            *p++ = hexdigit[ch & 0x000F];
-        }
-
-        /* Copy everything else as-is */
-        else
-            *p++ = (char) ch;
-    }
-    if (quotes)
-        *p++ = PyString_AS_STRING(repr)[1];
-
-    *p = '\0';
-    if (_PyString_Resize(&repr, p - PyString_AS_STRING(repr)))
-        return NULL;
-    return repr;
-}
-
-PyObject *PyUnicode_EncodeUnicodeEscape(const Py_UNICODE *s,
-                                        Py_ssize_t size)
-{
-    return unicodeescape_string(s, size, 0);
-}
-
-PyObject *PyUnicode_AsUnicodeEscapeString(PyObject *unicode)
-{
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    return PyUnicode_EncodeUnicodeEscape(PyUnicode_AS_UNICODE(unicode),
-                                         PyUnicode_GET_SIZE(unicode));
-}
-
-/* --- Raw Unicode Escape Codec ------------------------------------------- */
-
-PyObject *PyUnicode_DecodeRawUnicodeEscape(const char *s,
-                                           Py_ssize_t size,
-                                           const char *errors)
-{
-    const char *starts = s;
-    Py_ssize_t startinpos;
-    Py_ssize_t endinpos;
-    Py_ssize_t outpos;
-    PyUnicodeObject *v;
-    Py_UNICODE *p;
-    const char *end;
-    const char *bs;
-    PyObject *errorHandler = NULL;
-    PyObject *exc = NULL;
-
-    /* Escaped strings will always be longer than the resulting
-       Unicode string, so we start with size here and then reduce the
-       length after conversion to the true value. (But decoding error
-       handler might have to resize the string) */
-    v = _PyUnicode_New(size);
-    if (v == NULL)
-        goto onError;
-    if (size == 0)
-        return (PyObject *)v;
-    p = PyUnicode_AS_UNICODE(v);
-    end = s + size;
-    while (s < end) {
-        unsigned char c;
-        Py_UCS4 x;
-        int i;
-        int count;
-
-        /* Non-escape characters are interpreted as Unicode ordinals */
-        if (*s != '\\') {
-            *p++ = (unsigned char)*s++;
-            continue;
-        }
-        startinpos = s-starts;
-
-        /* \u-escapes are only interpreted iff the number of leading
-           backslashes if odd */
-        bs = s;
-        for (;s < end;) {
-            if (*s != '\\')
-                break;
-            *p++ = (unsigned char)*s++;
-        }
-        if (((s - bs) & 1) == 0 ||
-            s >= end ||
-            (*s != 'u' && *s != 'U')) {
-            continue;
-        }
-        p--;
-        count = *s=='u' ? 4 : 8;
-        s++;
-
-        /* \uXXXX with 4 hex digits, \Uxxxxxxxx with 8 */
-        outpos = p-PyUnicode_AS_UNICODE(v);
-        for (x = 0, i = 0; i < count; ++i, ++s) {
-            c = (unsigned char)*s;
-            if (!isxdigit(c)) {
-                endinpos = s-starts;
-                if (unicode_decode_call_errorhandler(
-                        errors, &errorHandler,
-                        "rawunicodeescape", "truncated \\uXXXX",
-                        starts, size, &startinpos, &endinpos, &exc, &s,
-                        &v, &outpos, &p))
-                    goto onError;
-                goto nextByte;
-            }
-            x = (x<<4) & ~0xF;
-            if (c >= '0' && c <= '9')
-                x += c - '0';
-            else if (c >= 'a' && c <= 'f')
-                x += 10 + c - 'a';
-            else
-                x += 10 + c - 'A';
-        }
-        if (x <= 0xffff)
-            /* UCS-2 character */
-            *p++ = (Py_UNICODE) x;
-        else if (x <= 0x10ffff) {
-            /* UCS-4 character. Either store directly, or as
-               surrogate pair. */
-#ifdef Py_UNICODE_WIDE
-            *p++ = (Py_UNICODE) x;
-#else
-            x -= 0x10000L;
-            *p++ = 0xD800 + (Py_UNICODE) (x >> 10);
-            *p++ = 0xDC00 + (Py_UNICODE) (x & 0x03FF);
-#endif
-        } else {
-            endinpos = s-starts;
-            outpos = p-PyUnicode_AS_UNICODE(v);
-            if (unicode_decode_call_errorhandler(
-                    errors, &errorHandler,
-                    "rawunicodeescape", "\\Uxxxxxxxx out of range",
-                    starts, size, &startinpos, &endinpos, &exc, &s,
-                    &v, &outpos, &p))
-                goto onError;
-        }
-      nextByte:
-        ;
-    }
-    if (_PyUnicode_Resize(&v, p - PyUnicode_AS_UNICODE(v)) < 0)
-        goto onError;
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return (PyObject *)v;
-
-  onError:
-    Py_XDECREF(v);
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return NULL;
-}
-
-PyObject *PyUnicode_EncodeRawUnicodeEscape(const Py_UNICODE *s,
-                                           Py_ssize_t size)
-{
-    PyObject *repr;
-    char *p;
-    char *q;
-
-    static const char *hexdigit = "0123456789abcdef";
-#ifdef Py_UNICODE_WIDE
-    const Py_ssize_t expandsize = 10;
-#else
-    const Py_ssize_t expandsize = 6;
-#endif
-
-    if (size > PY_SSIZE_T_MAX / expandsize)
-        return PyErr_NoMemory();
-
-    repr = PyString_FromStringAndSize(NULL, expandsize * size);
-    if (repr == NULL)
-        return NULL;
-    if (size == 0)
-        return repr;
-
-    p = q = PyString_AS_STRING(repr);
-    while (size-- > 0) {
-        Py_UNICODE ch = *s++;
-#ifdef Py_UNICODE_WIDE
-        /* Map 32-bit characters to '\Uxxxxxxxx' */
-        if (ch >= 0x10000) {
-            *p++ = '\\';
-            *p++ = 'U';
-            *p++ = hexdigit[(ch >> 28) & 0xf];
-            *p++ = hexdigit[(ch >> 24) & 0xf];
-            *p++ = hexdigit[(ch >> 20) & 0xf];
-            *p++ = hexdigit[(ch >> 16) & 0xf];
-            *p++ = hexdigit[(ch >> 12) & 0xf];
-            *p++ = hexdigit[(ch >> 8) & 0xf];
-            *p++ = hexdigit[(ch >> 4) & 0xf];
-            *p++ = hexdigit[ch & 15];
-        }
-        else
-#else
-            /* Map UTF-16 surrogate pairs to '\U00xxxxxx' */
-            if (ch >= 0xD800 && ch < 0xDC00) {
-                Py_UNICODE ch2;
-                Py_UCS4 ucs;
-
-                ch2 = *s++;
-                size--;
-                if (ch2 >= 0xDC00 && ch2 <= 0xDFFF) {
-                    ucs = (((ch & 0x03FF) << 10) | (ch2 & 0x03FF)) + 0x00010000;
-                    *p++ = '\\';
-                    *p++ = 'U';
-                    *p++ = hexdigit[(ucs >> 28) & 0xf];
-                    *p++ = hexdigit[(ucs >> 24) & 0xf];
-                    *p++ = hexdigit[(ucs >> 20) & 0xf];
-                    *p++ = hexdigit[(ucs >> 16) & 0xf];
-                    *p++ = hexdigit[(ucs >> 12) & 0xf];
-                    *p++ = hexdigit[(ucs >> 8) & 0xf];
-                    *p++ = hexdigit[(ucs >> 4) & 0xf];
-                    *p++ = hexdigit[ucs & 0xf];
-                    continue;
-                }
-                /* Fall through: isolated surrogates are copied as-is */
-                s--;
-                size++;
-            }
-#endif
-        /* Map 16-bit characters to '\uxxxx' */
-        if (ch >= 256) {
-            *p++ = '\\';
-            *p++ = 'u';
-            *p++ = hexdigit[(ch >> 12) & 0xf];
-            *p++ = hexdigit[(ch >> 8) & 0xf];
-            *p++ = hexdigit[(ch >> 4) & 0xf];
-            *p++ = hexdigit[ch & 15];
-        }
-        /* Copy everything else as-is */
-        else
-            *p++ = (char) ch;
-    }
-    *p = '\0';
-    if (_PyString_Resize(&repr, p - q))
-        return NULL;
-    return repr;
-}
-
-PyObject *PyUnicode_AsRawUnicodeEscapeString(PyObject *unicode)
-{
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    return PyUnicode_EncodeRawUnicodeEscape(PyUnicode_AS_UNICODE(unicode),
-                                            PyUnicode_GET_SIZE(unicode));
-}
-
-/* --- Unicode Internal Codec ------------------------------------------- */
-
-PyObject *_PyUnicode_DecodeUnicodeInternal(const char *s,
-                                           Py_ssize_t size,
-                                           const char *errors)
-{
-    const char *starts = s;
-    Py_ssize_t startinpos;
-    Py_ssize_t endinpos;
-    Py_ssize_t outpos;
-    PyUnicodeObject *v;
-    Py_UNICODE *p;
-    const char *end;
-    const char *reason;
-    PyObject *errorHandler = NULL;
-    PyObject *exc = NULL;
-
-#ifdef Py_UNICODE_WIDE
-    Py_UNICODE unimax = PyUnicode_GetMax();
-#endif
-
-    /* XXX overflow detection missing */
-    v = _PyUnicode_New((size+Py_UNICODE_SIZE-1)/ Py_UNICODE_SIZE);
-    if (v == NULL)
-        goto onError;
-    if (PyUnicode_GetSize((PyObject *)v) == 0)
-        return (PyObject *)v;
-    p = PyUnicode_AS_UNICODE(v);
-    end = s + size;
-
-    while (s < end) {
-        memcpy(p, s, sizeof(Py_UNICODE));
-        /* We have to sanity check the raw data, otherwise doom looms for
-           some malformed UCS-4 data. */
-        if (
-#ifdef Py_UNICODE_WIDE
-            *p > unimax || *p < 0 ||
-#endif
-            end-s < Py_UNICODE_SIZE
-            )
-        {
-            startinpos = s - starts;
-            if (end-s < Py_UNICODE_SIZE) {
-                endinpos = end-starts;
-                reason = "truncated input";
-            }
-            else {
-                endinpos = s - starts + Py_UNICODE_SIZE;
-                reason = "illegal code point (> 0x10FFFF)";
-            }
-            outpos = p - PyUnicode_AS_UNICODE(v);
-            if (unicode_decode_call_errorhandler(
-                    errors, &errorHandler,
-                    "unicode_internal", reason,
-                    starts, size, &startinpos, &endinpos, &exc, &s,
-                    &v, &outpos, &p)) {
-                goto onError;
-            }
-        }
-        else {
-            p++;
-            s += Py_UNICODE_SIZE;
-        }
-    }
-
-    if (_PyUnicode_Resize(&v, p - PyUnicode_AS_UNICODE(v)) < 0)
-        goto onError;
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return (PyObject *)v;
-
-  onError:
-    Py_XDECREF(v);
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return NULL;
-}
-
-/* --- Latin-1 Codec ------------------------------------------------------ */
-
-PyObject *PyUnicode_DecodeLatin1(const char *s,
-                                 Py_ssize_t size,
-                                 const char *errors)
-{
-    PyUnicodeObject *v;
-    Py_UNICODE *p;
-
-    /* Latin-1 is equivalent to the first 256 ordinals in Unicode. */
-    if (size == 1) {
-        Py_UNICODE r = *(unsigned char*)s;
-        return PyUnicode_FromUnicode(&r, 1);
-    }
-
-    v = _PyUnicode_New(size);
-    if (v == NULL)
-        goto onError;
-    if (size == 0)
-        return (PyObject *)v;
-    p = PyUnicode_AS_UNICODE(v);
-    while (size-- > 0)
-        *p++ = (unsigned char)*s++;
-    return (PyObject *)v;
-
-  onError:
-    Py_XDECREF(v);
-    return NULL;
-}
-
-/* create or adjust a UnicodeEncodeError */
-static void make_encode_exception(PyObject **exceptionObject,
-                                  const char *encoding,
-                                  const Py_UNICODE *unicode, Py_ssize_t size,
-                                  Py_ssize_t startpos, Py_ssize_t endpos,
-                                  const char *reason)
-{
-    if (*exceptionObject == NULL) {
-        *exceptionObject = PyUnicodeEncodeError_Create(
-            encoding, unicode, size, startpos, endpos, reason);
-    }
-    else {
-        if (PyUnicodeEncodeError_SetStart(*exceptionObject, startpos))
-            goto onError;
-        if (PyUnicodeEncodeError_SetEnd(*exceptionObject, endpos))
-            goto onError;
-        if (PyUnicodeEncodeError_SetReason(*exceptionObject, reason))
-            goto onError;
-        return;
-      onError:
-        Py_DECREF(*exceptionObject);
-        *exceptionObject = NULL;
-    }
-}
-
-/* raises a UnicodeEncodeError */
-static void raise_encode_exception(PyObject **exceptionObject,
-                                   const char *encoding,
-                                   const Py_UNICODE *unicode, Py_ssize_t size,
-                                   Py_ssize_t startpos, Py_ssize_t endpos,
-                                   const char *reason)
-{
-    make_encode_exception(exceptionObject,
-                          encoding, unicode, size, startpos, endpos, reason);
-    if (*exceptionObject != NULL)
-        PyCodec_StrictErrors(*exceptionObject);
-}
-
-/* error handling callback helper:
-   build arguments, call the callback and check the arguments,
-   put the result into newpos and return the replacement string, which
-   has to be freed by the caller */
-static PyObject *unicode_encode_call_errorhandler(const char *errors,
-                                                  PyObject **errorHandler,
-                                                  const char *encoding, const char *reason,
-                                                  const Py_UNICODE *unicode, Py_ssize_t size, PyObject **exceptionObject,
-                                                  Py_ssize_t startpos, Py_ssize_t endpos,
-                                                  Py_ssize_t *newpos)
-{
-    static char *argparse = "O!n;encoding error handler must return (unicode, int) tuple";
-
-    PyObject *restuple;
-    PyObject *resunicode;
-
-    if (*errorHandler == NULL) {
-        *errorHandler = PyCodec_LookupError(errors);
-        if (*errorHandler == NULL)
-            return NULL;
-    }
-
-    make_encode_exception(exceptionObject,
-                          encoding, unicode, size, startpos, endpos, reason);
-    if (*exceptionObject == NULL)
-        return NULL;
-
-    restuple = PyObject_CallFunctionObjArgs(
-        *errorHandler, *exceptionObject, NULL);
-    if (restuple == NULL)
-        return NULL;
-    if (!PyTuple_Check(restuple)) {
-        PyErr_SetString(PyExc_TypeError, &argparse[4]);
-        Py_DECREF(restuple);
-        return NULL;
-    }
-    if (!PyArg_ParseTuple(restuple, argparse, &PyUnicode_Type,
-                          &resunicode, newpos)) {
-        Py_DECREF(restuple);
-        return NULL;
-    }
-    if (*newpos<0)
-        *newpos = size+*newpos;
-    if (*newpos<0 || *newpos>size) {
-        PyErr_Format(PyExc_IndexError, "position %zd from error handler out of bounds", *newpos);
-        Py_DECREF(restuple);
-        return NULL;
-    }
-    Py_INCREF(resunicode);
-    Py_DECREF(restuple);
-    return resunicode;
-}
-
-static PyObject *unicode_encode_ucs1(const Py_UNICODE *p,
-                                     Py_ssize_t size,
-                                     const char *errors,
-                                     int limit)
-{
-    /* output object */
-    PyObject *res;
-    /* pointers to the beginning and end+1 of input */
-    const Py_UNICODE *startp = p;
-    const Py_UNICODE *endp = p + size;
-    /* pointer to the beginning of the unencodable characters */
-    /* const Py_UNICODE *badp = NULL; */
-    /* pointer into the output */
-    char *str;
-    /* current output position */
-    Py_ssize_t respos = 0;
-    Py_ssize_t ressize;
-    const char *encoding = (limit == 256) ? "latin-1" : "ascii";
-    const char *reason = (limit == 256) ? "ordinal not in range(256)" : "ordinal not in range(128)";
-    PyObject *errorHandler = NULL;
-    PyObject *exc = NULL;
-    /* the following variable is used for caching string comparisons
-     * -1=not initialized, 0=unknown, 1=strict, 2=replace, 3=ignore, 4=xmlcharrefreplace */
-    int known_errorHandler = -1;
-
-    /* allocate enough for a simple encoding without
-       replacements, if we need more, we'll resize */
-    res = PyString_FromStringAndSize(NULL, size);
-    if (res == NULL)
-        goto onError;
-    if (size == 0)
-        return res;
-    str = PyString_AS_STRING(res);
-    ressize = size;
-
-    while (p<endp) {
-        Py_UNICODE c = *p;
-
-        /* can we encode this? */
-        if (c<limit) {
-            /* no overflow check, because we know that the space is enough */
-            *str++ = (char)c;
-            ++p;
-        }
-        else {
-            Py_ssize_t unicodepos = p-startp;
-            Py_ssize_t requiredsize;
-            PyObject *repunicode;
-            Py_ssize_t repsize;
-            Py_ssize_t newpos;
-            Py_ssize_t respos;
-            Py_UNICODE *uni2;
-            /* startpos for collecting unencodable chars */
-            const Py_UNICODE *collstart = p;
-            const Py_UNICODE *collend = p;
-            /* find all unecodable characters */
-            while ((collend < endp) && ((*collend)>=limit))
-                ++collend;
-            /* cache callback name lookup (if not done yet, i.e. it's the first error) */
-            if (known_errorHandler==-1) {
-                if ((errors==NULL) || (!strcmp(errors, "strict")))
-                    known_errorHandler = 1;
-                else if (!strcmp(errors, "replace"))
-                    known_errorHandler = 2;
-                else if (!strcmp(errors, "ignore"))
-                    known_errorHandler = 3;
-                else if (!strcmp(errors, "xmlcharrefreplace"))
-                    known_errorHandler = 4;
-                else
-                    known_errorHandler = 0;
-            }
-            switch (known_errorHandler) {
-            case 1: /* strict */
-                raise_encode_exception(&exc, encoding, startp, size, collstart-startp, collend-startp, reason);
-                goto onError;
-            case 2: /* replace */
-                while (collstart++<collend)
-                    *str++ = '?'; /* fall through */
-            case 3: /* ignore */
-                p = collend;
-                break;
-            case 4: /* xmlcharrefreplace */
-                respos = str-PyString_AS_STRING(res);
-                /* determine replacement size (temporarily (mis)uses p) */
-                for (p = collstart, repsize = 0; p < collend; ++p) {
-                    if (*p<10)
-                        repsize += 2+1+1;
-                    else if (*p<100)
-                        repsize += 2+2+1;
-                    else if (*p<1000)
-                        repsize += 2+3+1;
-                    else if (*p<10000)
-                        repsize += 2+4+1;
-#ifndef Py_UNICODE_WIDE
-                    else
-                        repsize += 2+5+1;
-#else
-                    else if (*p<100000)
-                        repsize += 2+5+1;
-                    else if (*p<1000000)
-                        repsize += 2+6+1;
-                    else
-                        repsize += 2+7+1;
-#endif
-                }
-                requiredsize = respos+repsize+(endp-collend);
-                if (requiredsize > ressize) {
-                    if (requiredsize<2*ressize)
-                        requiredsize = 2*ressize;
-                    if (_PyString_Resize(&res, requiredsize))
-                        goto onError;
-                    str = PyString_AS_STRING(res) + respos;
-                    ressize = requiredsize;
-                }
-                /* generate replacement (temporarily (mis)uses p) */
-                for (p = collstart; p < collend; ++p) {
-                    str += sprintf(str, "&#%d;", (int)*p);
-                }
-                p = collend;
-                break;
-            default:
-                repunicode = unicode_encode_call_errorhandler(errors, &errorHandler,
-                                                              encoding, reason, startp, size, &exc,
-                                                              collstart-startp, collend-startp, &newpos);
-                if (repunicode == NULL)
-                    goto onError;
-                /* need more space? (at least enough for what we have+the
-                   replacement+the rest of the string, so we won't have to
-                   check space for encodable characters) */
-                respos = str-PyString_AS_STRING(res);
-                repsize = PyUnicode_GET_SIZE(repunicode);
-                requiredsize = respos+repsize+(endp-collend);
-                if (requiredsize > ressize) {
-                    if (requiredsize<2*ressize)
-                        requiredsize = 2*ressize;
-                    if (_PyString_Resize(&res, requiredsize)) {
-                        Py_DECREF(repunicode);
-                        goto onError;
-                    }
-                    str = PyString_AS_STRING(res) + respos;
-                    ressize = requiredsize;
-                }
-                /* check if there is anything unencodable in the replacement
-                   and copy it to the output */
-                for (uni2 = PyUnicode_AS_UNICODE(repunicode);repsize-->0; ++uni2, ++str) {
-                    c = *uni2;
-                    if (c >= limit) {
-                        raise_encode_exception(&exc, encoding, startp, size,
-                                               unicodepos, unicodepos+1, reason);
-                        Py_DECREF(repunicode);
-                        goto onError;
-                    }
-                    *str = (char)c;
-                }
-                p = startp + newpos;
-                Py_DECREF(repunicode);
-            }
-        }
-    }
-    /* Resize if we allocated to much */
-    respos = str-PyString_AS_STRING(res);
-    if (respos<ressize)
-        /* If this falls res will be NULL */
-        _PyString_Resize(&res, respos);
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return res;
-
-  onError:
-    Py_XDECREF(res);
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return NULL;
-}
-
-PyObject *PyUnicode_EncodeLatin1(const Py_UNICODE *p,
-                                 Py_ssize_t size,
-                                 const char *errors)
-{
-    return unicode_encode_ucs1(p, size, errors, 256);
-}
-
-PyObject *PyUnicode_AsLatin1String(PyObject *unicode)
-{
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    return PyUnicode_EncodeLatin1(PyUnicode_AS_UNICODE(unicode),
-                                  PyUnicode_GET_SIZE(unicode),
-                                  NULL);
-}
-
-/* --- 7-bit ASCII Codec -------------------------------------------------- */
-
-PyObject *PyUnicode_DecodeASCII(const char *s,
-                                Py_ssize_t size,
-                                const char *errors)
-{
-    const char *starts = s;
-    PyUnicodeObject *v;
-    Py_UNICODE *p;
-    Py_ssize_t startinpos;
-    Py_ssize_t endinpos;
-    Py_ssize_t outpos;
-    const char *e;
-    PyObject *errorHandler = NULL;
-    PyObject *exc = NULL;
-
-    /* ASCII is equivalent to the first 128 ordinals in Unicode. */
-    if (size == 1 && *(unsigned char*)s < 128) {
-        Py_UNICODE r = *(unsigned char*)s;
-        return PyUnicode_FromUnicode(&r, 1);
-    }
-
-    v = _PyUnicode_New(size);
-    if (v == NULL)
-        goto onError;
-    if (size == 0)
-        return (PyObject *)v;
-    p = PyUnicode_AS_UNICODE(v);
-    e = s + size;
-    while (s < e) {
-        register unsigned char c = (unsigned char)*s;
-        if (c < 128) {
-            *p++ = c;
-            ++s;
-        }
-        else {
-            startinpos = s-starts;
-            endinpos = startinpos + 1;
-            outpos = p - (Py_UNICODE *)PyUnicode_AS_UNICODE(v);
-            if (unicode_decode_call_errorhandler(
-                    errors, &errorHandler,
-                    "ascii", "ordinal not in range(128)",
-                    starts, size, &startinpos, &endinpos, &exc, &s,
-                    &v, &outpos, &p))
-                goto onError;
-        }
-    }
-    if (p - PyUnicode_AS_UNICODE(v) < PyString_GET_SIZE(v))
-        if (_PyUnicode_Resize(&v, p - PyUnicode_AS_UNICODE(v)) < 0)
-            goto onError;
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return (PyObject *)v;
-
-  onError:
-    Py_XDECREF(v);
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return NULL;
-}
-
-PyObject *PyUnicode_EncodeASCII(const Py_UNICODE *p,
-                                Py_ssize_t size,
-                                const char *errors)
-{
-    return unicode_encode_ucs1(p, size, errors, 128);
-}
-
-PyObject *PyUnicode_AsASCIIString(PyObject *unicode)
-{
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    return PyUnicode_EncodeASCII(PyUnicode_AS_UNICODE(unicode),
-                                 PyUnicode_GET_SIZE(unicode),
-                                 NULL);
-}
-
-#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
-
-/* --- MBCS codecs for Windows -------------------------------------------- */
-
-#if SIZEOF_INT < SIZEOF_SIZE_T
-#define NEED_RETRY
-#endif
-
-/* XXX This code is limited to "true" double-byte encodings, as
-   a) it assumes an incomplete character consists of a single byte, and
-   b) IsDBCSLeadByte (probably) does not work for non-DBCS multi-byte
-   encodings, see IsDBCSLeadByteEx documentation. */
-
-static int is_dbcs_lead_byte(const char *s, int offset)
-{
-    const char *curr = s + offset;
-
-    if (IsDBCSLeadByte(*curr)) {
-        const char *prev = CharPrev(s, curr);
-        return (prev == curr) || !IsDBCSLeadByte(*prev) || (curr - prev == 2);
-    }
-    return 0;
-}
-
-/*
- * Decode MBCS string into unicode object. If 'final' is set, converts
- * trailing lead-byte too. Returns consumed size if succeed, -1 otherwise.
- */
-static int decode_mbcs(PyUnicodeObject **v,
-                       const char *s, /* MBCS string */
-                       int size, /* sizeof MBCS string */
-                       int final)
-{
-    Py_UNICODE *p;
-    Py_ssize_t n = 0;
-    int usize = 0;
-
-    assert(size >= 0);
-
-    /* Skip trailing lead-byte unless 'final' is set */
-    if (!final && size >= 1 && is_dbcs_lead_byte(s, size - 1))
-        --size;
-
-    /* First get the size of the result */
-    if (size > 0) {
-        usize = MultiByteToWideChar(CP_ACP, 0, s, size, NULL, 0);
-        if (usize == 0) {
-            PyErr_SetFromWindowsErrWithFilename(0, NULL);
-            return -1;
-        }
-    }
-
-    if (*v == NULL) {
-        /* Create unicode object */
-        *v = _PyUnicode_New(usize);
-        if (*v == NULL)
-            return -1;
-    }
-    else {
-        /* Extend unicode object */
-        n = PyUnicode_GET_SIZE(*v);
-        if (_PyUnicode_Resize(v, n + usize) < 0)
-            return -1;
-    }
-
-    /* Do the conversion */
-    if (size > 0) {
-        p = PyUnicode_AS_UNICODE(*v) + n;
-        if (0 == MultiByteToWideChar(CP_ACP, 0, s, size, p, usize)) {
-            PyErr_SetFromWindowsErrWithFilename(0, NULL);
-            return -1;
-        }
-    }
-
-    return size;
-}
-
-PyObject *PyUnicode_DecodeMBCSStateful(const char *s,
-                                       Py_ssize_t size,
-                                       const char *errors,
-                                       Py_ssize_t *consumed)
-{
-    PyUnicodeObject *v = NULL;
-    int done;
-
-    if (consumed)
-        *consumed = 0;
-
-#ifdef NEED_RETRY
-  retry:
-    if (size > INT_MAX)
-        done = decode_mbcs(&v, s, INT_MAX, 0);
-    else
-#endif
-        done = decode_mbcs(&v, s, (int)size, !consumed);
-
-    if (done < 0) {
-        Py_XDECREF(v);
-        return NULL;
-    }
-
-    if (consumed)
-        *consumed += done;
-
-#ifdef NEED_RETRY
-    if (size > INT_MAX) {
-        s += done;
-        size -= done;
-        goto retry;
-    }
-#endif
-
-    return (PyObject *)v;
-}
-
-PyObject *PyUnicode_DecodeMBCS(const char *s,
-                               Py_ssize_t size,
-                               const char *errors)
-{
-    return PyUnicode_DecodeMBCSStateful(s, size, errors, NULL);
-}
-
-/*
- * Convert unicode into string object (MBCS).
- * Returns 0 if succeed, -1 otherwise.
- */
-static int encode_mbcs(PyObject **repr,
-                       const Py_UNICODE *p, /* unicode */
-                       int size) /* size of unicode */
-{
-    int mbcssize = 0;
-    Py_ssize_t n = 0;
-
-    assert(size >= 0);
-
-    /* First get the size of the result */
-    if (size > 0) {
-        mbcssize = WideCharToMultiByte(CP_ACP, 0, p, size, NULL, 0, NULL, NULL);
-        if (mbcssize == 0) {
-            PyErr_SetFromWindowsErrWithFilename(0, NULL);
-            return -1;
-        }
-    }
-
-    if (*repr == NULL) {
-        /* Create string object */
-        *repr = PyString_FromStringAndSize(NULL, mbcssize);
-        if (*repr == NULL)
-            return -1;
-    }
-    else {
-        /* Extend string object */
-        n = PyString_Size(*repr);
-        if (_PyString_Resize(repr, n + mbcssize) < 0)
-            return -1;
-    }
-
-    /* Do the conversion */
-    if (size > 0) {
-        char *s = PyString_AS_STRING(*repr) + n;
-        if (0 == WideCharToMultiByte(CP_ACP, 0, p, size, s, mbcssize, NULL, NULL)) {
-            PyErr_SetFromWindowsErrWithFilename(0, NULL);
-            return -1;
-        }
-    }
-
-    return 0;
-}
-
-PyObject *PyUnicode_EncodeMBCS(const Py_UNICODE *p,
-                               Py_ssize_t size,
-                               const char *errors)
-{
-    PyObject *repr = NULL;
-    int ret;
-
-#ifdef NEED_RETRY
-  retry:
-    if (size > INT_MAX)
-        ret = encode_mbcs(&repr, p, INT_MAX);
-    else
-#endif
-        ret = encode_mbcs(&repr, p, (int)size);
-
-    if (ret < 0) {
-        Py_XDECREF(repr);
-        return NULL;
-    }
-
-#ifdef NEED_RETRY
-    if (size > INT_MAX) {
-        p += INT_MAX;
-        size -= INT_MAX;
-        goto retry;
-    }
-#endif
-
-    return repr;
-}
-
-PyObject *PyUnicode_AsMBCSString(PyObject *unicode)
-{
-    if (!PyUnicode_Check(unicode)) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    return PyUnicode_EncodeMBCS(PyUnicode_AS_UNICODE(unicode),
-                                PyUnicode_GET_SIZE(unicode),
-                                NULL);
-}
-
-#undef NEED_RETRY
-
-#endif /* MS_WINDOWS */
-
-/* --- Character Mapping Codec -------------------------------------------- */
-
-PyObject *PyUnicode_DecodeCharmap(const char *s,
-                                  Py_ssize_t size,
-                                  PyObject *mapping,
-                                  const char *errors)
-{
-    const char *starts = s;
-    Py_ssize_t startinpos;
-    Py_ssize_t endinpos;
-    Py_ssize_t outpos;
-    const char *e;
-    PyUnicodeObject *v;
-    Py_UNICODE *p;
-    Py_ssize_t extrachars = 0;
-    PyObject *errorHandler = NULL;
-    PyObject *exc = NULL;
-    Py_UNICODE *mapstring = NULL;
-    Py_ssize_t maplen = 0;
-
-    /* Default to Latin-1 */
-    if (mapping == NULL)
-        return PyUnicode_DecodeLatin1(s, size, errors);
-
-    v = _PyUnicode_New(size);
-    if (v == NULL)
-        goto onError;
-    if (size == 0)
-        return (PyObject *)v;
-    p = PyUnicode_AS_UNICODE(v);
-    e = s + size;
-    if (PyUnicode_CheckExact(mapping)) {
-        mapstring = PyUnicode_AS_UNICODE(mapping);
-        maplen = PyUnicode_GET_SIZE(mapping);
-        while (s < e) {
-            unsigned char ch = *s;
-            Py_UNICODE x = 0xfffe; /* illegal value */
-
-            if (ch < maplen)
-                x = mapstring[ch];
-
-            if (x == 0xfffe) {
-                /* undefined mapping */
-                outpos = p-PyUnicode_AS_UNICODE(v);
-                startinpos = s-starts;
-                endinpos = startinpos+1;
-                if (unicode_decode_call_errorhandler(
-                        errors, &errorHandler,
-                        "charmap", "character maps to <undefined>",
-                        starts, size, &startinpos, &endinpos, &exc, &s,
-                        &v, &outpos, &p)) {
-                    goto onError;
-                }
-                continue;
-            }
-            *p++ = x;
-            ++s;
-        }
-    }
-    else {
-        while (s < e) {
-            unsigned char ch = *s;
-            PyObject *w, *x;
-
-            /* Get mapping (char ordinal -> integer, Unicode char or None) */
-            w = PyInt_FromLong((long)ch);
-            if (w == NULL)
-                goto onError;
-            x = PyObject_GetItem(mapping, w);
-            Py_DECREF(w);
-            if (x == NULL) {
-                if (PyErr_ExceptionMatches(PyExc_LookupError)) {
-                    /* No mapping found means: mapping is undefined. */
-                    PyErr_Clear();
-                    x = Py_None;
-                    Py_INCREF(x);
-                } else
-                    goto onError;
-            }
-
-            /* Apply mapping */
-            if (PyInt_Check(x)) {
-                long value = PyInt_AS_LONG(x);
-                if (value < 0 || value > 65535) {
-                    PyErr_SetString(PyExc_TypeError,
-                                    "character mapping must be in range(65536)");
-                    Py_DECREF(x);
-                    goto onError;
-                }
-                *p++ = (Py_UNICODE)value;
-            }
-            else if (x == Py_None) {
-                /* undefined mapping */
-                outpos = p-PyUnicode_AS_UNICODE(v);
-                startinpos = s-starts;
-                endinpos = startinpos+1;
-                if (unicode_decode_call_errorhandler(
-                        errors, &errorHandler,
-                        "charmap", "character maps to <undefined>",
-                        starts, size, &startinpos, &endinpos, &exc, &s,
-                        &v, &outpos, &p)) {
-                    Py_DECREF(x);
-                    goto onError;
-                }
-                Py_DECREF(x);
-                continue;
-            }
-            else if (PyUnicode_Check(x)) {
-                Py_ssize_t targetsize = PyUnicode_GET_SIZE(x);
-
-                if (targetsize == 1)
-                    /* 1-1 mapping */
-                    *p++ = *PyUnicode_AS_UNICODE(x);
-
-                else if (targetsize > 1) {
-                    /* 1-n mapping */
-                    if (targetsize > extrachars) {
-                        /* resize first */
-                        Py_ssize_t oldpos = p - PyUnicode_AS_UNICODE(v);
-                        Py_ssize_t needed = (targetsize - extrachars) + \
-                            (targetsize << 2);
-                        extrachars += needed;
-                        /* XXX overflow detection missing */
-                        if (_PyUnicode_Resize(&v,
-                                              PyUnicode_GET_SIZE(v) + needed) < 0) {
-                            Py_DECREF(x);
-                            goto onError;
-                        }
-                        p = PyUnicode_AS_UNICODE(v) + oldpos;
-                    }
-                    Py_UNICODE_COPY(p,
-                                    PyUnicode_AS_UNICODE(x),
-                                    targetsize);
-                    p += targetsize;
-                    extrachars -= targetsize;
-                }
-                /* 1-0 mapping: skip the character */
-            }
-            else {
-                /* wrong return value */
-                PyErr_SetString(PyExc_TypeError,
-                                "character mapping must return integer, None or unicode");
-                Py_DECREF(x);
-                goto onError;
-            }
-            Py_DECREF(x);
-            ++s;
-        }
-    }
-    if (p - PyUnicode_AS_UNICODE(v) < PyUnicode_GET_SIZE(v))
-        if (_PyUnicode_Resize(&v, p - PyUnicode_AS_UNICODE(v)) < 0)
-            goto onError;
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    return (PyObject *)v;
-
-  onError:
-    Py_XDECREF(errorHandler);
-    Py_XDECREF(exc);
-    Py_XDECREF(v);
-    return NULL;
-}
-
-/* Charmap encoding: the lookup table */
-
-struct encoding_map{
-    PyObject_HEAD
-    unsigned char level1[32];
-    int count2, count3;
-    unsigned char level23[1];
-};
-
-static PyObject*
-encoding_map_size(PyObject *obj, PyObject* args)
-{
-    struct encoding_map *map = (struct encoding_map*)obj;
-    return PyInt_FromLong(sizeof(*map) - 1 + 16*map->count2 +
-                          128*map->count3);
-}
-
-static PyMethodDef encoding_map_methods[] = {
-    {"size", encoding_map_size, METH_NOARGS,
-     PyDoc_STR("Return the size (in bytes) of this object") },
-    { 0 }
-};
-
-static void
-encoding_map_dealloc(PyObject* o)
-{
-    PyObject_FREE(o);
-}
-
-static PyTypeObject EncodingMapType = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "EncodingMap",          /*tp_name*/
-    sizeof(struct encoding_map),   /*tp_basicsize*/
-    0,                      /*tp_itemsize*/
-    /* methods */
-    encoding_map_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*/
-    Py_TPFLAGS_DEFAULT,     /*tp_flags*/
-    0,                      /*tp_doc*/
-    0,                      /*tp_traverse*/
-    0,                      /*tp_clear*/
-    0,                      /*tp_richcompare*/
-    0,                      /*tp_weaklistoffset*/
-    0,                      /*tp_iter*/
-    0,                      /*tp_iternext*/
-    encoding_map_methods,   /*tp_methods*/
-    0,                      /*tp_members*/
-    0,                      /*tp_getset*/
-    0,                      /*tp_base*/
-    0,                      /*tp_dict*/
-    0,                      /*tp_descr_get*/
-    0,                      /*tp_descr_set*/
-    0,                      /*tp_dictoffset*/
-    0,                      /*tp_init*/
-    0,                      /*tp_alloc*/
-    0,                      /*tp_new*/
-    0,                      /*tp_free*/
-    0,                      /*tp_is_gc*/
-};
-
-PyObject*
-PyUnicode_BuildEncodingMap(PyObject* string)
-{
-    Py_UNICODE *decode;
-    PyObject *result;
-    struct encoding_map *mresult;
-    int i;
-    int need_dict = 0;
-    unsigned char level1[32];
-    unsigned char level2[512];
-    unsigned char *mlevel1, *mlevel2, *mlevel3;
-    int count2 = 0, count3 = 0;
-
-    if (!PyUnicode_Check(string) || PyUnicode_GetSize(string) != 256) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    decode = PyUnicode_AS_UNICODE(string);
-    memset(level1, 0xFF, sizeof level1);
-    memset(level2, 0xFF, sizeof level2);
-
-    /* If there isn't a one-to-one mapping of NULL to \0,
-       or if there are non-BMP characters, we need to use
-       a mapping dictionary. */
-    if (decode[0] != 0)
-        need_dict = 1;
-    for (i = 1; i < 256; i++) {
-        int l1, l2;
-        if (decode[i] == 0
-#ifdef Py_UNICODE_WIDE
-            || decode[i] > 0xFFFF
-#endif
-            ) {
-            need_dict = 1;
-            break;
-        }
-        if (decode[i] == 0xFFFE)
-            /* unmapped character */
-            continue;
-        l1 = decode[i] >> 11;
-        l2 = decode[i] >> 7;
-        if (level1[l1] == 0xFF)
-            level1[l1] = count2++;
-        if (level2[l2] == 0xFF)
-            level2[l2] = count3++;
-    }
-
-    if (count2 >= 0xFF || count3 >= 0xFF)
-        need_dict = 1;
-
-    if (need_dict) {
-        PyObject *result = PyDict_New();
-        PyObject *key, *value;
-        if (!result)
-            return NULL;
-        for (i = 0; i < 256; i++) {
-            value = NULL;
-            key = PyInt_FromLong(decode[i]);
-            value = PyInt_FromLong(i);
-            if (!key || !value)
-                goto failed1;
-            if (PyDict_SetItem(result, key, value) == -1)
-                goto failed1;
-            Py_DECREF(key);
-            Py_DECREF(value);
-        }
-        return result;
-      failed1:
-        Py_XDECREF(key);
-        Py_XDECREF(value);
-        Py_DECREF(result);
-        return NULL;
-    }
-
-    /* Create a three-level trie */
-    result = PyObject_MALLOC(sizeof(struct encoding_map) +
-                             16*count2 + 128*count3 - 1);
-    if (!result)
-        return PyErr_NoMemory();
-    PyObject_Init(result, &EncodingMapType);
-    mresult = (struct encoding_map*)result;
-    mresult->count2 = count2;
-    mresult->count3 = count3;
-    mlevel1 = mresult->level1;
-    mlevel2 = mresult->level23;
-    mlevel3 = mresult->level23 + 16*count2;
-    memcpy(mlevel1, level1, 32);
-    memset(mlevel2, 0xFF, 16*count2);
-    memset(mlevel3, 0, 128*count3);
-    count3 = 0;
-    for (i = 1; i < 256; i++) {
-        int o1, o2, o3, i2, i3;
-        if (decode[i] == 0xFFFE)
-            /* unmapped character */
-            continue;
-        o1 = decode[i]>>11;
-        o2 = (decode[i]>>7) & 0xF;
-        i2 = 16*mlevel1[o1] + o2;
-        if (mlevel2[i2] == 0xFF)
-            mlevel2[i2] = count3++;
-        o3 = decode[i] & 0x7F;
-        i3 = 128*mlevel2[i2] + o3;
-        mlevel3[i3] = i;
-    }
-    return result;
-}
-
-static int
-encoding_map_lookup(Py_UNICODE c, PyObject *mapping)
-{
-    struct encoding_map *map = (struct encoding_map*)mapping;
-    int l1 = c>>11;
-    int l2 = (c>>7) & 0xF;
-    int l3 = c & 0x7F;
-    int i;
-
-#ifdef Py_UNICODE_WIDE
-    if (c > 0xFFFF) {
-        return -1;
-    }
-#endif
-    if (c == 0)
-        return 0;
-    /* level 1*/
-    i = map->level1[l1];
-    if (i == 0xFF) {
-        return -1;
-    }
-    /* level 2*/
-    i = map->level23[16*i+l2];
-    if (i == 0xFF) {
-        return -1;
-    }
-    /* level 3 */
-    i = map->level23[16*map->count2 + 128*i + l3];
-    if (i == 0) {
-        return -1;
-    }
-    return i;
-}
-
-/* Lookup the character ch in the mapping. If the character
-   can't be found, Py_None is returned (or NULL, if another
-   error occurred). */
-static PyObject *charmapencode_lookup(Py_UNICODE c, PyObject *mapping)
-{
-    PyObject *w = PyInt_FromLong((long)c);
-    PyObject *x;
-
-    if (w == NULL)
-        return NULL;
-    x = PyObject_GetItem(mapping, w);
-    Py_DECREF(w);
-    if (x == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_LookupError)) {
-            /* No mapping found means: mapping is undefined. */
-            PyErr_Clear();
-            x = Py_None;
-            Py_INCREF(x);
-            return x;
-        } else
-            return NULL;
-    }
-    else if (x == Py_None)
-        return x;
-    else if (PyInt_Check(x)) {
-        long value = PyInt_AS_LONG(x);
-        if (value < 0 || value > 255) {
-            PyErr_SetString(PyExc_TypeError,
-                            "character mapping must be in range(256)");
-            Py_DECREF(x);
-            return NULL;
-        }
-        return x;
-    }
-    else if (PyString_Check(x))
-        return x;
-    else {
-        /* wrong return value */
-        PyErr_SetString(PyExc_TypeError,
-                        "character mapping must return integer, None or str");
-        Py_DECREF(x);
-        return NULL;
-    }
-}
-
-static int
-charmapencode_resize(PyObject **outobj, Py_ssize_t *outpos, Py_ssize_t requiredsize)
-{
-    Py_ssize_t outsize = PyString_GET_SIZE(*outobj);
-    /* exponentially overallocate to minimize reallocations */
-    if (requiredsize < 2*outsize)
-        requiredsize = 2*outsize;
-    if (_PyString_Resize(outobj, requiredsize)) {
-        return 0;
-    }
-    return 1;
-}
-
-typedef enum charmapencode_result {
-    enc_SUCCESS, enc_FAILED, enc_EXCEPTION
-}charmapencode_result;
-/* lookup the character, put the result in the output string and adjust
-   various state variables. Reallocate the output string if not enough
-   space is available. Return a new reference to the object that
-   was put in the output buffer, or Py_None, if the mapping was undefined
-   (in which case no character was written) or NULL, if a
-   reallocation error occurred. The caller must decref the result */
-static
-charmapencode_result charmapencode_output(Py_UNICODE c, PyObject *mapping,
-                                          PyObject **outobj, Py_ssize_t *outpos)
-{
-    PyObject *rep;
-    char *outstart;
-    Py_ssize_t outsize = PyString_GET_SIZE(*outobj);
-
-    if (Py_TYPE(mapping) == &EncodingMapType) {
-        int res = encoding_map_lookup(c, mapping);
-        Py_ssize_t requiredsize = *outpos+1;
-        if (res == -1)
-            return enc_FAILED;
-        if (outsize<requiredsize)
-            if (!charmapencode_resize(outobj, outpos, requiredsize))
-                return enc_EXCEPTION;
-        outstart = PyString_AS_STRING(*outobj);
-        outstart[(*outpos)++] = (char)res;
-        return enc_SUCCESS;
-    }
-
-    rep = charmapencode_lookup(c, mapping);
-    if (rep==NULL)
-        return enc_EXCEPTION;
-    else if (rep==Py_None) {
-        Py_DECREF(rep);
-        return enc_FAILED;
-    } else {
-        if (PyInt_Check(rep)) {
-            Py_ssize_t requiredsize = *outpos+1;
-            if (outsize<requiredsize)
-                if (!charmapencode_resize(outobj, outpos, requiredsize)) {
-                    Py_DECREF(rep);
-                    return enc_EXCEPTION;
-                }
-            outstart = PyString_AS_STRING(*outobj);
-            outstart[(*outpos)++] = (char)PyInt_AS_LONG(rep);
-        }
-        else {
-            const char *repchars = PyString_AS_STRING(rep);
-            Py_ssize_t repsize = PyString_GET_SIZE(rep);
-            Py_ssize_t requiredsize = *outpos+repsize;
-            if (outsize<requiredsize)
-                if (!charmapencode_resize(outobj, outpos, requiredsize)) {
-                    Py_DECREF(rep);
-                    return enc_EXCEPTION;
-                }
-            outstart = PyString_AS_STRING(*outobj);
-            memcpy(outstart + *outpos, repchars, repsize);
-            *outpos += repsize;
-        }
-    }
-    Py_DECREF(rep);
-    return enc_SUCCESS;
-}
-
-/* handle an error in PyUnicode_EncodeCharmap
-   Return 0 on success, -1 on error */
-static
-int charmap_encoding_error(
-    const Py_UNICODE *p, Py_ssize_t size, Py_ssize_t *inpos, PyObject *mapping,
-    PyObject **exceptionObject,
-    int *known_errorHandler, PyObject **errorHandler, const char *errors,
-    PyObject **res, Py_ssize_t *respos)
-{
-    PyObject *repunicode = NULL; /* initialize to prevent gcc warning */
-    Py_ssize_t repsize;
-    Py_ssize_t newpos;
-    Py_UNICODE *uni2;
-    /* startpos for collecting unencodable chars */
-    Py_ssize_t collstartpos = *inpos;
-    Py_ssize_t collendpos = *inpos+1;
-    Py_ssize_t collpos;
-    char *encoding = "charmap";
-    char *reason = "character maps to <undefined>";
-    charmapencode_result x;
-
-    /* find all unencodable characters */
-    while (collendpos < size) {
-        PyObject *rep;
-        if (Py_TYPE(mapping) == &EncodingMapType) {
-            int res = encoding_map_lookup(p[collendpos], mapping);
-            if (res != -1)
-                break;
-            ++collendpos;
-            continue;
-        }
-
-        rep = charmapencode_lookup(p[collendpos], mapping);
-        if (rep==NULL)
-            return -1;
-        else if (rep!=Py_None) {
-            Py_DECREF(rep);
-            break;
-        }
-        Py_DECREF(rep);
-        ++collendpos;
-    }
-    /* cache callback name lookup
-     * (if not done yet, i.e. it's the first error) */
-    if (*known_errorHandler==-1) {
-        if ((errors==NULL) || (!strcmp(errors, "strict")))
-            *known_errorHandler = 1;
-        else if (!strcmp(errors, "replace"))
-            *known_errorHandler = 2;
-        else if (!strcmp(errors, "ignore"))
-            *known_errorHandler = 3;
-        else if (!strcmp(errors, "xmlcharrefreplace"))
-            *known_errorHandler = 4;
-        else
-            *known_errorHandler = 0;
-    }
-    switch (*known_errorHandler) {
-    case 1: /* strict */
-        raise_encode_exception(exceptionObject, encoding, p, size, collstartpos, collendpos, reason);
-        return -1;
-    case 2: /* replace */
-        for (collpos = collstartpos; collpos<collendpos; ++collpos) {
-            x = charmapencode_output('?', mapping, res, respos);
-            if (x==enc_EXCEPTION) {
-                return -1;
-            }
-            else if (x==enc_FAILED) {
-                raise_encode_exception(exceptionObject, encoding, p, size, collstartpos, collendpos, reason);
-                return -1;
-            }
-        }
-        /* fall through */
-    case 3: /* ignore */
-        *inpos = collendpos;
-        break;
-    case 4: /* xmlcharrefreplace */
-        /* generate replacement (temporarily (mis)uses p) */
-        for (collpos = collstartpos; collpos < collendpos; ++collpos) {
-            char buffer[2+29+1+1];
-            char *cp;
-            sprintf(buffer, "&#%d;", (int)p[collpos]);
-            for (cp = buffer; *cp; ++cp) {
-                x = charmapencode_output(*cp, mapping, res, respos);
-                if (x==enc_EXCEPTION)
-                    return -1;
-                else if (x==enc_FAILED) {
-                    raise_encode_exception(exceptionObject, encoding, p, size, collstartpos, collendpos, reason);
-                    return -1;
-                }
-            }
-        }
-        *inpos = collendpos;
-        break;
-    default:
-        repunicode = unicode_encode_call_errorhandler(errors, errorHandler,
-                                                      encoding, reason, p, size, exceptionObject,
-                                                      collstartpos, collendpos, &newpos);
-        if (repunicode == NULL)
-            return -1;
-        /* generate replacement  */
-        repsize = PyUnicode_GET_SIZE(repunicode);
-        for (uni2 = PyUnicode_AS_UNICODE(repunicode); repsize-->0; ++uni2) {
-            x = charmapencode_output(*uni2, mapping, res, respos);
-            if (x==enc_EXCEPTION) {
-                return -1;
-            }
-            else if (x==enc_FAILED) {
-                Py_DECREF(repunicode);
-                raise_encode_exception(exceptionObject, encoding, p, size, collstartpos, collendpos, reason);
-                return -1;
-            }
-        }
-        *inpos = newpos;
-        Py_DECREF(repunicode);
-    }
-    return 0;
-}
-
-PyObject *PyUnicode_EncodeCharmap(const Py_UNICODE *p,
-                                  Py_ssize_t size,
-                                  PyObject *mapping,
-                                  const char *errors)
-{
-    /* output object */
-    PyObject *res = NULL;
-    /* current input position */
-    Py_ssize_t inpos = 0;
-    /* current output position */
-    Py_ssize_t respos = 0;
-    PyObject *errorHandler = NULL;
-    PyObject *exc = NULL;
-    /* the following variable is used for caching string comparisons
-     * -1=not initialized, 0=unknown, 1=strict, 2=replace,
-     * 3=ignore, 4=xmlcharrefreplace */
-    int known_errorHandler = -1;
-
-    /* Default to Latin-1 */
-    if (mapping == NULL)
-        return PyUnicode_EncodeLatin1(p, size, errors);
-
-    /* allocate enough for a simple encoding without
-       replacements, if we need more, we'll resize */
-    res = PyString_FromStringAndSize(NULL, size);
-    if (res == NULL)
-        goto onError;
-    if (size == 0)
-        return res;
-
-    while (inpos<size) {
-        /* try to encode it */
-        charmapencode_result x = charmapencode_output(p[inpos], mapping, &res, &respos);
-        if (x==enc_EXCEPTION) /* error */
-            goto onError;
-        if (x==enc_FAILED) { /* unencodable character */
-            if (charmap_encoding_error(p, size, &inpos, mapping,
-                                       &exc,
-                                       &known_errorHandler, &errorHandler, errors,
-                                       &res, &respos)) {
-                goto onError;
-            }
-        }
-        else
-            /* done with this character => adjust input position */
-            ++inpos;
-    }
-
-    /* Resize if we allocated to much */
-    if (respos<PyString_GET_SIZE(res)) {
-        if (_PyString_Resize(&res, respos))
-            goto onError;
-    }
-    Py_XDECREF(exc);
-    Py_XDECREF(errorHandler);
-    return res;
-
-  onError:
-    Py_XDECREF(res);
-    Py_XDECREF(exc);
-    Py_XDECREF(errorHandler);
-    return NULL;
-}
-
-PyObject *PyUnicode_AsCharmapString(PyObject *unicode,
-                                    PyObject *mapping)
-{
-    if (!PyUnicode_Check(unicode) || mapping == NULL) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-    return PyUnicode_EncodeCharmap(PyUnicode_AS_UNICODE(unicode),
-                                   PyUnicode_GET_SIZE(unicode),
-                                   mapping,
-                                   NULL);
-}
-
-/* create or adjust a UnicodeTranslateError */
-static void make_translate_exception(PyObject **exceptionObject,
-                                     const Py_UNICODE *unicode, Py_ssize_t size,
-                                     Py_ssize_t startpos, Py_ssize_t endpos,
-                                     const char *reason)
-{
-    if (*exceptionObject == NULL) {
-        *exceptionObject = PyUnicodeTranslateError_Create(
-            unicode, size, startpos, endpos, reason);
-    }
-    else {
-        if (PyUnicodeTranslateError_SetStart(*exceptionObject, startpos))
-            goto onError;
-        if (PyUnicodeTranslateError_SetEnd(*exceptionObject, endpos))
-            goto onError;
-        if (PyUnicodeTranslateError_SetReason(*exceptionObject, reason))
-            goto onError;
-        return;
-      onError:
-        Py_DECREF(*exceptionObject);
-        *exceptionObject = NULL;
-    }
-}
-
-/* raises a UnicodeTranslateError */
-static void raise_translate_exception(PyObject **exceptionObject,
-                                      const Py_UNICODE *unicode, Py_ssize_t size,
-                                      Py_ssize_t startpos, Py_ssize_t endpos,
-                                      const char *reason)
-{
-    make_translate_exception(exceptionObject,
-                             unicode, size, startpos, endpos, reason);
-    if (*exceptionObject != NULL)
-        PyCodec_StrictErrors(*exceptionObject);
-}
-
-/* error handling callback helper:
-   build arguments, call the callback and check the arguments,
-   put the result into newpos and return the replacement string, which
-   has to be freed by the caller */
-static PyObject *unicode_translate_call_errorhandler(const char *errors,
-                                                     PyObject **errorHandler,
-                                                     const char *reason,
-                                                     const Py_UNICODE *unicode, Py_ssize_t size, PyObject **exceptionObject,
-                                                     Py_ssize_t startpos, Py_ssize_t endpos,
-                                                     Py_ssize_t *newpos)
-{
-    static char *argparse = "O!n;translating error handler must return (unicode, int) tuple";
-
-    Py_ssize_t i_newpos;
-    PyObject *restuple;
-    PyObject *resunicode;
-
-    if (*errorHandler == NULL) {
-        *errorHandler = PyCodec_LookupError(errors);
-        if (*errorHandler == NULL)
-            return NULL;
-    }
-
-    make_translate_exception(exceptionObject,
-                             unicode, size, startpos, endpos, reason);
-    if (*exceptionObject == NULL)
-        return NULL;
-
-    restuple = PyObject_CallFunctionObjArgs(
-        *errorHandler, *exceptionObject, NULL);
-    if (restuple == NULL)
-        return NULL;
-    if (!PyTuple_Check(restuple)) {
-        PyErr_SetString(PyExc_TypeError, &argparse[4]);
-        Py_DECREF(restuple);
-        return NULL;
-    }
-    if (!PyArg_ParseTuple(restuple, argparse, &PyUnicode_Type,
-                          &resunicode, &i_newpos)) {
-        Py_DECREF(restuple);
-        return NULL;
-    }
-    if (i_newpos<0)
-        *newpos = size+i_newpos;
-    else
-        *newpos = i_newpos;
-    if (*newpos<0 || *newpos>size) {
-        PyErr_Format(PyExc_IndexError, "position %zd from error handler out of bounds", *newpos);
-        Py_DECREF(restuple);
-        return NULL;
-    }
-    Py_INCREF(resunicode);
-    Py_DECREF(restuple);
-    return resunicode;
-}
-
-/* Lookup the character ch in the mapping and put the result in result,
-   which must be decrefed by the caller.
-   Return 0 on success, -1 on error */
-static
-int charmaptranslate_lookup(Py_UNICODE c, PyObject *mapping, PyObject **result)
-{
-    PyObject *w = PyInt_FromLong((long)c);
-    PyObject *x;
-
-    if (w == NULL)
-        return -1;
-    x = PyObject_GetItem(mapping, w);
-    Py_DECREF(w);
-    if (x == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_LookupError)) {
-            /* No mapping found means: use 1:1 mapping. */
-            PyErr_Clear();
-            *result = NULL;
-            return 0;
-        } else
-            return -1;
-    }
-    else if (x == Py_None) {
-        *result = x;
-        return 0;
-    }
-    else if (PyInt_Check(x)) {
-        long value = PyInt_AS_LONG(x);
-        long max = PyUnicode_GetMax();
-        if (value < 0 || value > max) {
-            PyErr_Format(PyExc_TypeError,
-                         "character mapping must be in range(0x%lx)", max+1);
-            Py_DECREF(x);
-            return -1;
-        }
-        *result = x;
-        return 0;
-    }
-    else if (PyUnicode_Check(x)) {
-        *result = x;
-        return 0;
-    }
-    else {
-        /* wrong return value */
-        PyErr_SetString(PyExc_TypeError,
-                        "character mapping must return integer, None or unicode");
-        Py_DECREF(x);
-        return -1;
-    }
-}
-/* ensure that *outobj is at least requiredsize characters long,
-   if not reallocate and adjust various state variables.
-   Return 0 on success, -1 on error */
-static
-int charmaptranslate_makespace(PyObject **outobj, Py_UNICODE **outp,
-                               Py_ssize_t requiredsize)
-{
-    Py_ssize_t oldsize = PyUnicode_GET_SIZE(*outobj);
-    if (requiredsize > oldsize) {
-        /* remember old output position */
-        Py_ssize_t outpos = *outp-PyUnicode_AS_UNICODE(*outobj);
-        /* exponentially overallocate to minimize reallocations */
-        if (requiredsize < 2 * oldsize)
-            requiredsize = 2 * oldsize;
-        if (PyUnicode_Resize(outobj, requiredsize) < 0)
-            return -1;
-        *outp = PyUnicode_AS_UNICODE(*outobj) + outpos;
-    }
-    return 0;
-}
-/* lookup the character, put the result in the output string and adjust
-   various state variables. Return a new reference to the object that
-   was put in the output buffer in *result, or Py_None, if the mapping was
-   undefined (in which case no character was written).
-   The called must decref result.
-   Return 0 on success, -1 on error. */
-static
-int charmaptranslate_output(const Py_UNICODE *startinp, const Py_UNICODE *curinp,
-                            Py_ssize_t insize, PyObject *mapping, PyObject **outobj, Py_UNICODE **outp,
-                            PyObject **res)
-{
-    if (charmaptranslate_lookup(*curinp, mapping, res))
-        return -1;
-    if (*res==NULL) {
-        /* not found => default to 1:1 mapping */
-        *(*outp)++ = *curinp;
-    }
-    else if (*res==Py_None)
-        ;
-    else if (PyInt_Check(*res)) {
-        /* no overflow check, because we know that the space is enough */
-        *(*outp)++ = (Py_UNICODE)PyInt_AS_LONG(*res);
-    }
-    else if (PyUnicode_Check(*res)) {
-        Py_ssize_t repsize = PyUnicode_GET_SIZE(*res);
-        if (repsize==1) {
-            /* no overflow check, because we know that the space is enough */
-            *(*outp)++ = *PyUnicode_AS_UNICODE(*res);
-        }
-        else if (repsize!=0) {
-            /* more than one character */
-            Py_ssize_t requiredsize = (*outp-PyUnicode_AS_UNICODE(*outobj)) +
-                (insize - (curinp-startinp)) +
-                repsize - 1;
-            if (charmaptranslate_makespace(outobj, outp, requiredsize))
-                return -1;
-            memcpy(*outp, PyUnicode_AS_UNICODE(*res), sizeof(Py_UNICODE)*repsize);
-            *outp += repsize;
-        }
-    }
-    else
-        return -1;
-    return 0;
-}
-
-PyObject *PyUnicode_TranslateCharmap(const Py_UNICODE *p,
-                                     Py_ssize_t size,
-                                     PyObject *mapping,
-                                     const char *errors)
-{
-    /* output object */
-    PyObject *res = NULL;
-    /* pointers to the beginning and end+1 of input */
-    const Py_UNICODE *startp = p;
-    const Py_UNICODE *endp = p + size;
-    /* pointer into the output */
-    Py_UNICODE *str;
-    /* current output position */
-    Py_ssize_t respos = 0;
-    char *reason = "character maps to <undefined>";
-    PyObject *errorHandler = NULL;
-    PyObject *exc = NULL;
-    /* the following variable is used for caching string comparisons
-     * -1=not initialized, 0=unknown, 1=strict, 2=replace,
-     * 3=ignore, 4=xmlcharrefreplace */
-    int known_errorHandler = -1;
-
-    if (mapping == NULL) {
-        PyErr_BadArgument();
-        return NULL;
-    }
-
-    /* allocate enough for a simple 1:1 translation without
-       replacements, if we need more, we'll resize */
-    res = PyUnicode_FromUnicode(NULL, size);
-    if (res == NULL)
-        goto onError;
-    if (size == 0)
-        return res;
-    str = PyUnicode_AS_UNICODE(res);
-
-    while (p<endp) {
-        /* try to encode it */
-        PyObject *x = NULL;
-        if (charmaptranslate_output(startp, p, size, mapping, &res, &str, &x)) {
-            Py_XDECREF(x);
-            goto onError;
-        }
-        Py_XDECREF(x);
-        if (x!=Py_None) /* it worked => adjust input pointer */
-            ++p;
-        else { /* untranslatable character */
-            PyObject *repunicode = NULL; /* initialize to prevent gcc warning */
-            Py_ssize_t repsize;
-            Py_ssize_t newpos;
-            Py_UNICODE *uni2;
-            /* startpos for collecting untranslatable chars */
-            const Py_UNICODE *collstart = p;
-            const Py_UNICODE *collend = p+1;
-            const Py_UNICODE *coll;
-
-            /* find all untranslatable characters */
-            while (collend < endp) {
-                if (charmaptranslate_lookup(*collend, mapping, &x))
-                    goto onError;
-                Py_XDECREF(x);
-                if (x!=Py_None)
-                    break;
-                ++collend;
-            }
-            /* cache callback name lookup
-             * (if not done yet, i.e. it's the first error) */
-            if (known_errorHandler==-1) {
-                if ((errors==NULL) || (!strcmp(errors, "strict")))
-                    known_errorHandler = 1;
-                else if (!strcmp(errors, "replace"))
-                    known_errorHandler = 2;
-                else if (!strcmp(errors, "ignore"))
-                    known_errorHandler = 3;
-                else if (!strcmp(errors, "xmlcharrefreplace"))
-                    known_errorHandler = 4;
-                else
-                    known_errorHandler = 0;
-            }
-            switch (known_errorHandler) {
-            case 1: /* strict */
-                raise_translate_exception(&exc, startp, size, collstart-startp, collend-startp, reason);
-                goto onError;
-            case 2: /* replace */
-                /* No need to check for space, this is a 1:1 replacement */
-                for (coll = collstart; coll<collend; ++coll)
-                    *str++ = '?';
-                /* fall through */
-            case 3: /* ignore */
-                p = collend;
-                break;
-            case 4: /* xmlcharrefreplace */
-                /* generate replacement (temporarily (mis)uses p) */
-                for (p = collstart; p < collend; ++p) {
-                    char buffer[2+29+1+1];
-                    char *cp;
-                    sprintf(buffer, "&#%d;", (int)*p);
-                    if (charmaptranslate_makespace(&res, &str,
-                                                   (str-PyUnicode_AS_UNICODE(res))+strlen(buffer)+(endp-collend)))
-                        goto onError;
-                    for (cp = buffer; *cp; ++cp)
-                        *str++ = *cp;
-                }
-                p = collend;
-                break;
-            default:
-                repunicode = unicode_translate_call_errorhandler(errors, &errorHandler,
-                                                                 reason, startp, size, &exc,
-                                                                 collstart-startp, collend-startp, &newpos);
-                if (repunicode == NULL)
-                    goto onError;
-                /* generate replacement  */
-                repsize = PyUnicode_GET_SIZE(repunicode);
-                if (charmaptranslate_makespace(&res, &str,
-                                               (str-PyUnicode_AS_UNICODE(res))+repsize+(endp-collend))) {
-                    Py_DECREF(repunicode);
-                    goto onError;
-                }
-                for (uni2 = PyUnicode_AS_UNICODE(repunicode); repsize-->0; ++uni2)
-                    *str++ = *uni2;
-                p = startp + newpos;
-                Py_DECREF(repunicode);
-            }
-        }
-    }
-    /* Resize if we allocated to much */
-    respos = str-PyUnicode_AS_UNICODE(res);
-    if (respos<PyUnicode_GET_SIZE(res)) {
-        if (PyUnicode_Resize(&res, respos) < 0)
-            goto onError;
-    }
-    Py_XDECREF(exc);
-    Py_XDECREF(errorHandler);
-    return res;
-
-  onError:
-    Py_XDECREF(res);
-    Py_XDECREF(exc);
-    Py_XDECREF(errorHandler);
-    return NULL;
-}
-
-PyObject *PyUnicode_Translate(PyObject *str,
-                              PyObject *mapping,
-                              const char *errors)
-{
-    PyObject *result;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        goto onError;
-    result = PyUnicode_TranslateCharmap(PyUnicode_AS_UNICODE(str),
-                                        PyUnicode_GET_SIZE(str),
-                                        mapping,
-                                        errors);
-    Py_DECREF(str);
-    return result;
-
-  onError:
-    Py_XDECREF(str);
-    return NULL;
-}
-
-/* --- Decimal Encoder ---------------------------------------------------- */
-
-int PyUnicode_EncodeDecimal(Py_UNICODE *s,
-                            Py_ssize_t length,
-                            char *output,
-                            const char *errors)
-{
-    Py_UNICODE *p, *end;
-    PyObject *errorHandler = NULL;
-    PyObject *exc = NULL;
-    const char *encoding = "decimal";
-    const char *reason = "invalid decimal Unicode string";
-    /* the following variable is used for caching string comparisons
-     * -1=not initialized, 0=unknown, 1=strict, 2=replace, 3=ignore, 4=xmlcharrefreplace */
-    int known_errorHandler = -1;
-
-    if (output == NULL) {
-        PyErr_BadArgument();
-        return -1;
-    }
-
-    p = s;
-    end = s + length;
-    while (p < end) {
-        register Py_UNICODE ch = *p;
-        int decimal;
-        PyObject *repunicode;
-        Py_ssize_t repsize;
-        Py_ssize_t newpos;
-        Py_UNICODE *uni2;
-        Py_UNICODE *collstart;
-        Py_UNICODE *collend;
-
-        if (Py_UNICODE_ISSPACE(ch)) {
-            *output++ = ' ';
-            ++p;
-            continue;
-        }
-        decimal = Py_UNICODE_TODECIMAL(ch);
-        if (decimal >= 0) {
-            *output++ = '0' + decimal;
-            ++p;
-            continue;
-        }
-        if (0 < ch && ch < 256) {
-            *output++ = (char)ch;
-            ++p;
-            continue;
-        }
-        /* All other characters are considered unencodable */
-        collstart = p;
-        collend = p+1;
-        while (collend < end) {
-            if ((0 < *collend && *collend < 256) ||
-                !Py_UNICODE_ISSPACE(*collend) ||
-                Py_UNICODE_TODECIMAL(*collend))
-                break;
-        }
-        /* cache callback name lookup
-         * (if not done yet, i.e. it's the first error) */
-        if (known_errorHandler==-1) {
-            if ((errors==NULL) || (!strcmp(errors, "strict")))
-                known_errorHandler = 1;
-            else if (!strcmp(errors, "replace"))
-                known_errorHandler = 2;
-            else if (!strcmp(errors, "ignore"))
-                known_errorHandler = 3;
-            else if (!strcmp(errors, "xmlcharrefreplace"))
-                known_errorHandler = 4;
-            else
-                known_errorHandler = 0;
-        }
-        switch (known_errorHandler) {
-        case 1: /* strict */
-            raise_encode_exception(&exc, encoding, s, length, collstart-s, collend-s, reason);
-            goto onError;
-        case 2: /* replace */
-            for (p = collstart; p < collend; ++p)
-                *output++ = '?';
-            /* fall through */
-        case 3: /* ignore */
-            p = collend;
-            break;
-        case 4: /* xmlcharrefreplace */
-            /* generate replacement (temporarily (mis)uses p) */
-            for (p = collstart; p < collend; ++p)
-                output += sprintf(output, "&#%d;", (int)*p);
-            p = collend;
-            break;
-        default:
-            repunicode = unicode_encode_call_errorhandler(errors, &errorHandler,
-                                                          encoding, reason, s, length, &exc,
-                                                          collstart-s, collend-s, &newpos);
-            if (repunicode == NULL)
-                goto onError;
-            /* generate replacement  */
-            repsize = PyUnicode_GET_SIZE(repunicode);
-            for (uni2 = PyUnicode_AS_UNICODE(repunicode); repsize-->0; ++uni2) {
-                Py_UNICODE ch = *uni2;
-                if (Py_UNICODE_ISSPACE(ch))
-                    *output++ = ' ';
-                else {
-                    decimal = Py_UNICODE_TODECIMAL(ch);
-                    if (decimal >= 0)
-                        *output++ = '0' + decimal;
-                    else if (0 < ch && ch < 256)
-                        *output++ = (char)ch;
-                    else {
-                        Py_DECREF(repunicode);
-                        raise_encode_exception(&exc, encoding,
-                                               s, length, collstart-s, collend-s, reason);
-                        goto onError;
-                    }
-                }
-            }
-            p = s + newpos;
-            Py_DECREF(repunicode);
-        }
-    }
-    /* 0-terminate the output string */
-    *output++ = '\0';
-    Py_XDECREF(exc);
-    Py_XDECREF(errorHandler);
-    return 0;
-
-  onError:
-    Py_XDECREF(exc);
-    Py_XDECREF(errorHandler);
-    return -1;
-}
-
-/* --- Helpers ------------------------------------------------------------ */
-
-#include "stringlib/unicodedefs.h"
-#include "stringlib/fastsearch.h"
-
-#include "stringlib/count.h"
-#include "stringlib/find.h"
-#include "stringlib/partition.h"
-#include "stringlib/split.h"
-
-/* helper macro to fixup start/end slice values */
-#define ADJUST_INDICES(start, end, len)         \
-    if (end > len)                              \
-        end = len;                              \
-    else if (end < 0) {                         \
-        end += len;                             \
-        if (end < 0)                            \
-            end = 0;                            \
-    }                                           \
-    if (start < 0) {                            \
-        start += len;                           \
-        if (start < 0)                          \
-            start = 0;                          \
-    }
-
-Py_ssize_t PyUnicode_Count(PyObject *str,
-                           PyObject *substr,
-                           Py_ssize_t start,
-                           Py_ssize_t end)
-{
-    Py_ssize_t result;
-    PyUnicodeObject* str_obj;
-    PyUnicodeObject* sub_obj;
-
-    str_obj = (PyUnicodeObject*) PyUnicode_FromObject(str);
-    if (!str_obj)
-        return -1;
-    sub_obj = (PyUnicodeObject*) PyUnicode_FromObject(substr);
-    if (!sub_obj) {
-        Py_DECREF(str_obj);
-        return -1;
-    }
-
-    ADJUST_INDICES(start, end, str_obj->length);
-    result = stringlib_count(
-        str_obj->str + start, end - start, sub_obj->str, sub_obj->length,
-        PY_SSIZE_T_MAX
-        );
-
-    Py_DECREF(sub_obj);
-    Py_DECREF(str_obj);
-
-    return result;
-}
-
-Py_ssize_t PyUnicode_Find(PyObject *str,
-                          PyObject *sub,
-                          Py_ssize_t start,
-                          Py_ssize_t end,
-                          int direction)
-{
-    Py_ssize_t result;
-
-    str = PyUnicode_FromObject(str);
-    if (!str)
-        return -2;
-    sub = PyUnicode_FromObject(sub);
-    if (!sub) {
-        Py_DECREF(str);
-        return -2;
-    }
-
-    if (direction > 0)
-        result = stringlib_find_slice(
-            PyUnicode_AS_UNICODE(str), PyUnicode_GET_SIZE(str),
-            PyUnicode_AS_UNICODE(sub), PyUnicode_GET_SIZE(sub),
-            start, end
-            );
-    else
-        result = stringlib_rfind_slice(
-            PyUnicode_AS_UNICODE(str), PyUnicode_GET_SIZE(str),
-            PyUnicode_AS_UNICODE(sub), PyUnicode_GET_SIZE(sub),
-            start, end
-            );
-
-    Py_DECREF(str);
-    Py_DECREF(sub);
-
-    return result;
-}
-
-static
-int tailmatch(PyUnicodeObject *self,
-              PyUnicodeObject *substring,
-              Py_ssize_t start,
-              Py_ssize_t end,
-              int direction)
-{
-    if (substring->length == 0)
-        return 1;
-
-    ADJUST_INDICES(start, end, self->length);
-    end -= substring->length;
-    if (end < start)
-        return 0;
-
-    if (direction > 0) {
-        if (Py_UNICODE_MATCH(self, end, substring))
-            return 1;
-    } else {
-        if (Py_UNICODE_MATCH(self, start, substring))
-            return 1;
-    }
-
-    return 0;
-}
-
-Py_ssize_t PyUnicode_Tailmatch(PyObject *str,
-                               PyObject *substr,
-                               Py_ssize_t start,
-                               Py_ssize_t end,
-                               int direction)
-{
-    Py_ssize_t result;
-
-    str = PyUnicode_FromObject(str);
-    if (str == NULL)
-        return -1;
-    substr = PyUnicode_FromObject(substr);
-    if (substr == NULL) {
-        Py_DECREF(str);
-        return -1;
-    }
-
-    result = tailmatch((PyUnicodeObject *)str,
-                       (PyUnicodeObject *)substr,
-                       start, end, direction);
-    Py_DECREF(str);
-    Py_DECREF(substr);
-    return result;
-}
-
-/* Apply fixfct filter to the Unicode object self and return a
-   reference to the modified object */
-
-static
-PyObject *fixup(PyUnicodeObject *self,
-                int (*fixfct)(PyUnicodeObject *s))
-{
-
-    PyUnicodeObject *u;
-
-    u = (PyUnicodeObject*) PyUnicode_FromUnicode(NULL, self->length);
-    if (u == NULL)
-        return NULL;
-
-    Py_UNICODE_COPY(u->str, self->str, self->length);
-
-    if (!fixfct(u) && PyUnicode_CheckExact(self)) {
-        /* fixfct should return TRUE if it modified the buffer. If
-           FALSE, return a reference to the original buffer instead
-           (to save space, not time) */
-        Py_INCREF(self);
-        Py_DECREF(u);
-        return (PyObject*) self;
-    }
-    return (PyObject*) u;
-}
-
-static
-int fixupper(PyUnicodeObject *self)
-{
-    Py_ssize_t len = self->length;
-    Py_UNICODE *s = self->str;
-    int status = 0;
-
-    while (len-- > 0) {
-        register Py_UNICODE ch;
-
-        ch = Py_UNICODE_TOUPPER(*s);
-        if (ch != *s) {
-            status = 1;
-            *s = ch;
-        }
-        s++;
-    }
-
-    return status;
-}
-
-static
-int fixlower(PyUnicodeObject *self)
-{
-    Py_ssize_t len = self->length;
-    Py_UNICODE *s = self->str;
-    int status = 0;
-
-    while (len-- > 0) {
-        register Py_UNICODE ch;
-
-        ch = Py_UNICODE_TOLOWER(*s);
-        if (ch != *s) {
-            status = 1;
-            *s = ch;
-        }
-        s++;
-    }
-
-    return status;
-}
-
-static
-int fixswapcase(PyUnicodeObject *self)
-{
-    Py_ssize_t len = self->length;
-    Py_UNICODE *s = self->str;
-    int status = 0;
-
-    while (len-- > 0) {
-        if (Py_UNICODE_ISUPPER(*s)) {
-            *s = Py_UNICODE_TOLOWER(*s);
-            status = 1;
-        } else if (Py_UNICODE_ISLOWER(*s)) {
-            *s = Py_UNICODE_TOUPPER(*s);
-            status = 1;
-        }
-        s++;
-    }
-
-    return status;
-}
-
-static
-int fixcapitalize(PyUnicodeObject *self)
-{
-    Py_ssize_t len = self->length;
-    Py_UNICODE *s = self->str;
-    int status = 0;
-
-    if (len == 0)
-        return 0;
-    if (Py_UNICODE_ISLOWER(*s)) {
-        *s = Py_UNICODE_TOUPPER(*s);
-        status = 1;
-    }
-    s++;
-    while (--len > 0) {
-        if (Py_UNICODE_ISUPPER(*s)) {
-            *s = Py_UNICODE_TOLOWER(*s);
-            status = 1;
-        }
-        s++;
-    }
-    return status;
-}
-
-static
-int fixtitle(PyUnicodeObject *self)
-{
-    register Py_UNICODE *p = PyUnicode_AS_UNICODE(self);
-    register Py_UNICODE *e;
-    int previous_is_cased;
-
-    /* Shortcut for single character strings */
-    if (PyUnicode_GET_SIZE(self) == 1) {
-        Py_UNICODE ch = Py_UNICODE_TOTITLE(*p);
-        if (*p != ch) {
-            *p = ch;
-            return 1;
-        }
-        else
-            return 0;
-    }
-
-    e = p + PyUnicode_GET_SIZE(self);
-    previous_is_cased = 0;
-    for (; p < e; p++) {
-        register const Py_UNICODE ch = *p;
-
-        if (previous_is_cased)
-            *p = Py_UNICODE_TOLOWER(ch);
-        else
-            *p = Py_UNICODE_TOTITLE(ch);
-
-        if (Py_UNICODE_ISLOWER(ch) ||
-            Py_UNICODE_ISUPPER(ch) ||
-            Py_UNICODE_ISTITLE(ch))
-            previous_is_cased = 1;
-        else
-            previous_is_cased = 0;
-    }
-    return 1;
-}
-
-PyObject *
-PyUnicode_Join(PyObject *separator, PyObject *seq)
-{
-    PyObject *internal_separator = NULL;
-    const Py_UNICODE blank = ' ';
-    const Py_UNICODE *sep = &blank;
-    Py_ssize_t seplen = 1;
-    PyUnicodeObject *res = NULL; /* the result */
-    Py_ssize_t res_alloc = 100;  /* # allocated bytes for string in res */
-    Py_ssize_t res_used;         /* # used bytes */
-    Py_UNICODE *res_p;       /* pointer to free byte in res's string area */
-    PyObject *fseq;          /* PySequence_Fast(seq) */
-    Py_ssize_t seqlen;              /* len(fseq) -- number of items in sequence */
-    PyObject *item;
-    Py_ssize_t i;
-
-    fseq = PySequence_Fast(seq, "");
-    if (fseq == NULL) {
-        return NULL;
-    }
-
-    /* Grrrr.  A codec may be invoked to convert str objects to
-     * Unicode, and so it's possible to call back into Python code
-     * during PyUnicode_FromObject(), and so it's possible for a sick
-     * codec to change the size of fseq (if seq is a list).  Therefore
-     * we have to keep refetching the size -- can't assume seqlen
-     * is invariant.
-     */
-    seqlen = PySequence_Fast_GET_SIZE(fseq);
-    /* If empty sequence, return u"". */
-    if (seqlen == 0) {
-        res = _PyUnicode_New(0);  /* empty sequence; return u"" */
-        goto Done;
-    }
-    /* If singleton sequence with an exact Unicode, return that. */
-    if (seqlen == 1) {
-        item = PySequence_Fast_GET_ITEM(fseq, 0);
-        if (PyUnicode_CheckExact(item)) {
-            Py_INCREF(item);
-            res = (PyUnicodeObject *)item;
-            goto Done;
-        }
-    }
-
-    /* At least two items to join, or one that isn't exact Unicode. */
-    if (seqlen > 1) {
-        /* Set up sep and seplen -- they're needed. */
-        if (separator == NULL) {
-            sep = &blank;
-            seplen = 1;
-        }
-        else {
-            internal_separator = PyUnicode_FromObject(separator);
-            if (internal_separator == NULL)
-                goto onError;
-            sep = PyUnicode_AS_UNICODE(internal_separator);
-            seplen = PyUnicode_GET_SIZE(internal_separator);
-            /* In case PyUnicode_FromObject() mutated seq. */
-            seqlen = PySequence_Fast_GET_SIZE(fseq);
-        }
-    }
-
-    /* Get space. */
-    res = _PyUnicode_New(res_alloc);
-    if (res == NULL)
-        goto onError;
-    res_p = PyUnicode_AS_UNICODE(res);
-    res_used = 0;
-
-    for (i = 0; i < seqlen; ++i) {
-        Py_ssize_t itemlen;
-        Py_ssize_t new_res_used;
-
-        item = PySequence_Fast_GET_ITEM(fseq, i);
-        /* Convert item to Unicode. */
-        if (! PyUnicode_Check(item) && ! PyString_Check(item)) {
-            PyErr_Format(PyExc_TypeError,
-                         "sequence item %zd: expected string or Unicode,"
-                         " %.80s found",
-                         i, Py_TYPE(item)->tp_name);
-            goto onError;
-        }
-        item = PyUnicode_FromObject(item);
-        if (item == NULL)
-            goto onError;
-        /* We own a reference to item from here on. */
-
-        /* In case PyUnicode_FromObject() mutated seq. */
-        seqlen = PySequence_Fast_GET_SIZE(fseq);
-
-        /* Make sure we have enough space for the separator and the item. */
-        itemlen = PyUnicode_GET_SIZE(item);
-        new_res_used = res_used + itemlen;
-        if (new_res_used < 0)
-            goto Overflow;
-        if (i < seqlen - 1) {
-            new_res_used += seplen;
-            if (new_res_used < 0)
-                goto Overflow;
-        }
-        if (new_res_used > res_alloc) {
-            /* double allocated size until it's big enough */
-            do {
-                res_alloc += res_alloc;
-                if (res_alloc <= 0)
-                    goto Overflow;
-            } while (new_res_used > res_alloc);
-            if (_PyUnicode_Resize(&res, res_alloc) < 0) {
-                Py_DECREF(item);
-                goto onError;
-            }
-            res_p = PyUnicode_AS_UNICODE(res) + res_used;
-        }
-
-        /* Copy item, and maybe the separator. */
-        Py_UNICODE_COPY(res_p, PyUnicode_AS_UNICODE(item), itemlen);
-        res_p += itemlen;
-        if (i < seqlen - 1) {
-            Py_UNICODE_COPY(res_p, sep, seplen);
-            res_p += seplen;
-        }
-        Py_DECREF(item);
-        res_used = new_res_used;
-    }
-
-    /* Shrink res to match the used area; this probably can't fail,
-     * but it's cheap to check.
-     */
-    if (_PyUnicode_Resize(&res, res_used) < 0)
-        goto onError;
-
-  Done:
-    Py_XDECREF(internal_separator);
-    Py_DECREF(fseq);
-    return (PyObject *)res;
-
-  Overflow:
-    PyErr_SetString(PyExc_OverflowError,
-                    "join() result is too long for a Python string");
-    Py_DECREF(item);
-    /* fall through */
-
-  onError:
-    Py_XDECREF(internal_separator);
-    Py_DECREF(fseq);
-    Py_XDECREF(res);
-    return NULL;
-}
-
-static
-PyUnicodeObject *pad(PyUnicodeObject *self,
-                     Py_ssize_t left,
-                     Py_ssize_t right,
-                     Py_UNICODE fill)
-{
-    PyUnicodeObject *u;
-
-    if (left < 0)
-        left = 0;
-    if (right < 0)
-        right = 0;
-
-    if (left == 0 && right == 0 && PyUnicode_CheckExact(self)) {
-        Py_INCREF(self);
-        return self;
-    }
-
-    if (left > PY_SSIZE_T_MAX - self->length ||
-        right > PY_SSIZE_T_MAX - (left + self->length)) {
-        PyErr_SetString(PyExc_OverflowError, "padded string is too long");
-        return NULL;
-    }
-    u = _PyUnicode_New(left + self->length + right);
-    if (u) {
-        if (left)
-            Py_UNICODE_FILL(u->str, fill, left);
-        Py_UNICODE_COPY(u->str + left, self->str, self->length);
-        if (right)
-            Py_UNICODE_FILL(u->str + left + self->length, fill, right);
-    }
-
-    return u;
-}
-
-PyObject *PyUnicode_Splitlines(PyObject *string, int keepends)
-{
-    PyObject *list;
-
-    string = PyUnicode_FromObject(string);
-    if (string == NULL)
-        return NULL;
-
-    list = stringlib_splitlines(
-        (PyObject*) string, PyUnicode_AS_UNICODE(string),
-        PyUnicode_GET_SIZE(string), keepends);
-
-    Py_DECREF(string);
-    return list;
-}
-
-static
-PyObject *split(PyUnicodeObject *self,
-                PyUnicodeObject *substring,
-                Py_ssize_t maxcount)
-{
-    if (maxcount < 0)
-        maxcount = PY_SSIZE_T_MAX;
-
-    if (substring == NULL)
-        return stringlib_split_whitespace(
-            (PyObject*) self,  self->str, self->length, maxcount
-            );
-
-    return stringlib_split(
-        (PyObject*) self,  self->str, self->length,
-        substring->str, substring->length,
-        maxcount
-        );
-}
-
-static
-PyObject *rsplit(PyUnicodeObject *self,
-                 PyUnicodeObject *substring,
-                 Py_ssize_t maxcount)
-{
-    if (maxcount < 0)
-        maxcount = PY_SSIZE_T_MAX;
-
-    if (substring == NULL)
-        return stringlib_rsplit_whitespace(
-            (PyObject*) self,  self->str, self->length, maxcount
-            );
-
-    return stringlib_rsplit(
-        (PyObject*) self,  self->str, self->length,
-        substring->str, substring->length,
-        maxcount
-        );
-}
-
-static
-PyObject *replace(PyUnicodeObject *self,
-                  PyUnicodeObject *str1,
-                  PyUnicodeObject *str2,
-                  Py_ssize_t maxcount)
-{
-    PyUnicodeObject *u;
-
-    if (maxcount < 0)
-        maxcount = PY_SSIZE_T_MAX;
-    else if (maxcount == 0 || self->length == 0)
-        goto nothing;
-
-    if (str1->length == str2->length) {
-        Py_ssize_t i;
-        /* same length */
-        if (str1->length == 0)
-            goto nothing;
-        if (str1->length == 1) {
-            /* replace characters */
-            Py_UNICODE u1, u2;
-            if (!findchar(self->str, self->length, str1->str[0]))
-                goto nothing;
-            u = (PyUnicodeObject*) PyUnicode_FromUnicode(NULL, self->length);
-            if (!u)
-                return NULL;
-            Py_UNICODE_COPY(u->str, self->str, self->length);
-            u1 = str1->str[0];
-            u2 = str2->str[0];
-            for (i = 0; i < u->length; i++)
-                if (u->str[i] == u1) {
-                    if (--maxcount < 0)
-                        break;
-                    u->str[i] = u2;
-                }
-        } else {
-            i = stringlib_find(
-                self->str, self->length, str1->str, str1->length, 0
-                );
-            if (i < 0)
-                goto nothing;
-            u = (PyUnicodeObject*) PyUnicode_FromUnicode(NULL, self->length);
-            if (!u)
-                return NULL;
-            Py_UNICODE_COPY(u->str, self->str, self->length);
-
-            /* change everything in-place, starting with this one */
-            Py_UNICODE_COPY(u->str+i, str2->str, str2->length);
-            i += str1->length;
-
-            while ( --maxcount > 0) {
-                i = stringlib_find(self->str+i, self->length-i,
-                                   str1->str, str1->length,
-                                   i);
-                if (i == -1)
-                    break;
-                Py_UNICODE_COPY(u->str+i, str2->str, str2->length);
-                i += str1->length;
-            }
-        }
-    } else {
-
-        Py_ssize_t n, i, j;
-        Py_ssize_t product, new_size, delta;
-        Py_UNICODE *p;
-
-        /* replace strings */
-        n = stringlib_count(self->str, self->length, str1->str, str1->length,
-                            maxcount);
-        if (n == 0)
-            goto nothing;
-        /* new_size = self->length + n * (str2->length - str1->length)); */
-        delta = (str2->length - str1->length);
-        if (delta == 0) {
-            new_size = self->length;
-        } else {
-            product = n * (str2->length - str1->length);
-            if ((product / (str2->length - str1->length)) != n) {
-                PyErr_SetString(PyExc_OverflowError,
-                                "replace string is too long");
-                return NULL;
-            }
-            new_size = self->length + product;
-            if (new_size < 0) {
-                PyErr_SetString(PyExc_OverflowError,
-                                "replace string is too long");
-                return NULL;
-            }
-        }
-        u = _PyUnicode_New(new_size);
-        if (!u)
-            return NULL;
-        i = 0;
-        p = u->str;
-        if (str1->length > 0) {
-            while (n-- > 0) {
-                /* look for next match */
-                j = stringlib_find(self->str+i, self->length-i,
-                                   str1->str, str1->length,
-                                   i);
-                if (j == -1)
-                    break;
-                else if (j > i) {
-                    /* copy unchanged part [i:j] */
-                    Py_UNICODE_COPY(p, self->str+i, j-i);
-                    p += j - i;
-                }
-                /* copy substitution string */
-                if (str2->length > 0) {
-                    Py_UNICODE_COPY(p, str2->str, str2->length);
-                    p += str2->length;
-                }
-                i = j + str1->length;
-            }
-            if (i < self->length)
-                /* copy tail [i:] */
-                Py_UNICODE_COPY(p, self->str+i, self->length-i);
-        } else {
-            /* interleave */
-            while (n > 0) {
-                Py_UNICODE_COPY(p, str2->str, str2->length);
-                p += str2->length;
-                if (--n <= 0)
-                    break;
-                *p++ = self->str[i++];
-            }
-            Py_UNICODE_COPY(p, self->str+i, self->length-i);
-        }
-    }
-    return (PyObject *) u;
-
-  nothing:
-    /* nothing to replace; return original string (when possible) */
-    if (PyUnicode_CheckExact(self)) {
-        Py_INCREF(self);
-        return (PyObject *) self;
-    }
-    return PyUnicode_FromUnicode(self->str, self->length);
-}
-
-/* --- Unicode Object Methods --------------------------------------------- */
-
-PyDoc_STRVAR(title__doc__,
-             "S.title() -> unicode\n\
-\n\
-Return a titlecased version of S, i.e. words start with title case\n\
-characters, all remaining cased characters have lower case.");
-
-static PyObject*
-unicode_title(PyUnicodeObject *self)
-{
-    return fixup(self, fixtitle);
-}
-
-PyDoc_STRVAR(capitalize__doc__,
-             "S.capitalize() -> unicode\n\
-\n\
-Return a capitalized version of S, i.e. make the first character\n\
-have upper case and the rest lower case.");
-
-static PyObject*
-unicode_capitalize(PyUnicodeObject *self)
-{
-    return fixup(self, fixcapitalize);
-}
-
-#if 0
-PyDoc_STRVAR(capwords__doc__,
-             "S.capwords() -> unicode\n\
-\n\
-Apply .capitalize() to all words in S and return the result with\n\
-normalized whitespace (all whitespace strings are replaced by ' ').");
-
-static PyObject*
-unicode_capwords(PyUnicodeObject *self)
-{
-    PyObject *list;
-    PyObject *item;
-    Py_ssize_t i;
-
-    /* Split into words */
-    list = split(self, NULL, -1);
-    if (!list)
-        return NULL;
-
-    /* Capitalize each word */
-    for (i = 0; i < PyList_GET_SIZE(list); i++) {
-        item = fixup((PyUnicodeObject *)PyList_GET_ITEM(list, i),
-                     fixcapitalize);
-        if (item == NULL)
-            goto onError;
-        Py_DECREF(PyList_GET_ITEM(list, i));
-        PyList_SET_ITEM(list, i, item);
-    }
-
-    /* Join the words to form a new string */
-    item = PyUnicode_Join(NULL, list);
-
-  onError:
-    Py_DECREF(list);
-    return (PyObject *)item;
-}
-#endif
-
-/* Argument converter.  Coerces to a single unicode character */
-
-static int
-convert_uc(PyObject *obj, void *addr)
-{
-    Py_UNICODE *fillcharloc = (Py_UNICODE *)addr;
-    PyObject *uniobj;
-    Py_UNICODE *unistr;
-
-    uniobj = PyUnicode_FromObject(obj);
-    if (uniobj == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                        "The fill character cannot be converted to Unicode");
-        return 0;
-    }
-    if (PyUnicode_GET_SIZE(uniobj) != 1) {
-        PyErr_SetString(PyExc_TypeError,
-                        "The fill character must be exactly one character long");
-        Py_DECREF(uniobj);
-        return 0;
-    }
-    unistr = PyUnicode_AS_UNICODE(uniobj);
-    *fillcharloc = unistr[0];
-    Py_DECREF(uniobj);
-    return 1;
-}
-
-PyDoc_STRVAR(center__doc__,
-             "S.center(width[, fillchar]) -> unicode\n\
-\n\
-Return S centered in a Unicode string of length width. Padding is\n\
-done using the specified fill character (default is a space)");
-
-static PyObject *
-unicode_center(PyUnicodeObject *self, PyObject *args)
-{
-    Py_ssize_t marg, left;
-    Py_ssize_t width;
-    Py_UNICODE fillchar = ' ';
-
-    if (!PyArg_ParseTuple(args, "n|O&:center", &width, convert_uc, &fillchar))
-        return NULL;
-
-    if (self->length >= width && PyUnicode_CheckExact(self)) {
-        Py_INCREF(self);
-        return (PyObject*) self;
-    }
-
-    marg = width - self->length;
-    left = marg / 2 + (marg & width & 1);
-
-    return (PyObject*) pad(self, left, marg - left, fillchar);
-}
-
-#if 0
-
-/* This code should go into some future Unicode collation support
-   module. The basic comparison should compare ordinals on a naive
-   basis (this is what Java does and thus Jython too). */
-
-/* speedy UTF-16 code point order comparison */
-/* gleaned from: */
-/* http://www-4.ibm.com/software/developer/library/utf16.html?dwzone=unicode */
-
-static short utf16Fixup[32] =
-{
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0x2000, -0x800, -0x800, -0x800, -0x800
-};
-
-static int
-unicode_compare(PyUnicodeObject *str1, PyUnicodeObject *str2)
-{
-    Py_ssize_t len1, len2;
-
-    Py_UNICODE *s1 = str1->str;
-    Py_UNICODE *s2 = str2->str;
-
-    len1 = str1->length;
-    len2 = str2->length;
-
-    while (len1 > 0 && len2 > 0) {
-        Py_UNICODE c1, c2;
-
-        c1 = *s1++;
-        c2 = *s2++;
-
-        if (c1 > (1<<11) * 26)
-            c1 += utf16Fixup[c1>>11];
-        if (c2 > (1<<11) * 26)
-            c2 += utf16Fixup[c2>>11];
-        /* now c1 and c2 are in UTF-32-compatible order */
-
-        if (c1 != c2)
-            return (c1 < c2) ? -1 : 1;
-
-        len1--; len2--;
-    }
-
-    return (len1 < len2) ? -1 : (len1 != len2);
-}
-
-#else
-
-static int
-unicode_compare(PyUnicodeObject *str1, PyUnicodeObject *str2)
-{
-    register Py_ssize_t len1, len2;
-
-    Py_UNICODE *s1 = str1->str;
-    Py_UNICODE *s2 = str2->str;
-
-    len1 = str1->length;
-    len2 = str2->length;
-
-    while (len1 > 0 && len2 > 0) {
-        Py_UNICODE c1, c2;
-
-        c1 = *s1++;
-        c2 = *s2++;
-
-        if (c1 != c2)
-            return (c1 < c2) ? -1 : 1;
-
-        len1--; len2--;
-    }
-
-    return (len1 < len2) ? -1 : (len1 != len2);
-}
-
-#endif
-
-int PyUnicode_Compare(PyObject *left,
-                      PyObject *right)
-{
-    PyUnicodeObject *u = NULL, *v = NULL;
-    int result;
-
-    /* Coerce the two arguments */
-    u = (PyUnicodeObject *)PyUnicode_FromObject(left);
-    if (u == NULL)
-        goto onError;
-    v = (PyUnicodeObject *)PyUnicode_FromObject(right);
-    if (v == NULL)
-        goto onError;
-
-    /* Shortcut for empty or interned objects */
-    if (v == u) {
-        Py_DECREF(u);
-        Py_DECREF(v);
-        return 0;
-    }
-
-    result = unicode_compare(u, v);
-
-    Py_DECREF(u);
-    Py_DECREF(v);
-    return result;
-
-  onError:
-    Py_XDECREF(u);
-    Py_XDECREF(v);
-    return -1;
-}
-
-PyObject *PyUnicode_RichCompare(PyObject *left,
-                                PyObject *right,
-                                int op)
-{
-    int result;
-
-    result = PyUnicode_Compare(left, right);
-    if (result == -1 && PyErr_Occurred())
-        goto onError;
-
-    /* Convert the return value to a Boolean */
-    switch (op) {
-    case Py_EQ:
-        result = (result == 0);
-        break;
-    case Py_NE:
-        result = (result != 0);
-        break;
-    case Py_LE:
-        result = (result <= 0);
-        break;
-    case Py_GE:
-        result = (result >= 0);
-        break;
-    case Py_LT:
-        result = (result == -1);
-        break;
-    case Py_GT:
-        result = (result == 1);
-        break;
-    }
-    return PyBool_FromLong(result);
-
-  onError:
-
-    /* Standard case
-
-       Type errors mean that PyUnicode_FromObject() could not convert
-       one of the arguments (usually the right hand side) to Unicode,
-       ie. we can't handle the comparison request. However, it is
-       possible that the other object knows a comparison method, which
-       is why we return Py_NotImplemented to give the other object a
-       chance.
-
-    */
-    if (PyErr_ExceptionMatches(PyExc_TypeError)) {
-        PyErr_Clear();
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    if (op != Py_EQ && op != Py_NE)
-        return NULL;
-
-    /* Equality comparison.
-
-       This is a special case: we silence any PyExc_UnicodeDecodeError
-       and instead turn it into a PyErr_UnicodeWarning.
-
-    */
-    if (!PyErr_ExceptionMatches(PyExc_UnicodeDecodeError))
-        return NULL;
-    PyErr_Clear();
-    if (PyErr_Warn(PyExc_UnicodeWarning,
-                   (op == Py_EQ) ?
-                   "Unicode equal comparison "
-                   "failed to convert both arguments to Unicode - "
-                   "interpreting them as being unequal" :
-                   "Unicode unequal comparison "
-                   "failed to convert both arguments to Unicode - "
-                   "interpreting them as being unequal"
-            ) < 0)
-        return NULL;
-    result = (op == Py_NE);
-    return PyBool_FromLong(result);
-}
-
-int PyUnicode_Contains(PyObject *container,
-                       PyObject *element)
-{
-    PyObject *str, *sub;
-    int result;
-
-    /* Coerce the two arguments */
-    sub = PyUnicode_FromObject(element);
-    if (!sub) {
-        return -1;
-    }
-
-    str = PyUnicode_FromObject(container);
-    if (!str) {
-        Py_DECREF(sub);
-        return -1;
-    }
-
-    result = stringlib_contains_obj(str, sub);
-
-    Py_DECREF(str);
-    Py_DECREF(sub);
-
-    return result;
-}
-
-/* Concat to string or Unicode object giving a new Unicode object. */
-
-PyObject *PyUnicode_Concat(PyObject *left,
-                           PyObject *right)
-{
-    PyUnicodeObject *u = NULL, *v = NULL, *w;
-
-    /* Coerce the two arguments */
-    u = (PyUnicodeObject *)PyUnicode_FromObject(left);
-    if (u == NULL)
-        goto onError;
-    v = (PyUnicodeObject *)PyUnicode_FromObject(right);
-    if (v == NULL)
-        goto onError;
-
-    /* Shortcuts */
-    if (v == unicode_empty) {
-        Py_DECREF(v);
-        return (PyObject *)u;
-    }
-    if (u == unicode_empty) {
-        Py_DECREF(u);
-        return (PyObject *)v;
-    }
-
-    /* Concat the two Unicode strings */
-    w = _PyUnicode_New(u->length + v->length);
-    if (w == NULL)
-        goto onError;
-    Py_UNICODE_COPY(w->str, u->str, u->length);
-    Py_UNICODE_COPY(w->str + u->length, v->str, v->length);
-
-    Py_DECREF(u);
-    Py_DECREF(v);
-    return (PyObject *)w;
-
-  onError:
-    Py_XDECREF(u);
-    Py_XDECREF(v);
-    return NULL;
-}
-
-PyDoc_STRVAR(count__doc__,
-             "S.count(sub[, start[, end]]) -> int\n\
-\n\
-Return the number of non-overlapping occurrences of substring sub in\n\
-Unicode string S[start:end].  Optional arguments start and end are\n\
-interpreted as in slice notation.");
-
-static PyObject *
-unicode_count(PyUnicodeObject *self, PyObject *args)
-{
-    PyUnicodeObject *substring;
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    PyObject *result;
-
-    if (!stringlib_parse_args_finds_unicode("count", args, &substring,
-                                            &start, &end))
-        return NULL;
-
-    ADJUST_INDICES(start, end, self->length);
-    result = PyInt_FromSsize_t(
-        stringlib_count(self->str + start, end - start,
-                        substring->str, substring->length,
-                        PY_SSIZE_T_MAX)
-        );
-
-    Py_DECREF(substring);
-
-    return result;
-}
-
-PyDoc_STRVAR(encode__doc__,
-             "S.encode([encoding[,errors]]) -> string or unicode\n\
-\n\
-Encodes S using the codec registered for encoding. encoding defaults\n\
-to the default encoding. errors may be given to set a different error\n\
-handling scheme. Default is 'strict' meaning that encoding errors raise\n\
-a UnicodeEncodeError. Other possible values are 'ignore', 'replace' and\n\
-'xmlcharrefreplace' as well as any other name registered with\n\
-codecs.register_error that can handle UnicodeEncodeErrors.");
-
-static PyObject *
-unicode_encode(PyUnicodeObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = {"encoding", "errors", 0};
-    char *encoding = NULL;
-    char *errors = NULL;
-    PyObject *v;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|ss:encode",
-                                     kwlist, &encoding, &errors))
-        return NULL;
-    v = PyUnicode_AsEncodedObject((PyObject *)self, encoding, errors);
-    if (v == NULL)
-        goto onError;
-    if (!PyString_Check(v) && !PyUnicode_Check(v)) {
-        PyErr_Format(PyExc_TypeError,
-                     "encoder did not return a string/unicode object "
-                     "(type=%.400s)",
-                     Py_TYPE(v)->tp_name);
-        Py_DECREF(v);
-        return NULL;
-    }
-    return v;
-
-  onError:
-    return NULL;
-}
-
-PyDoc_STRVAR(decode__doc__,
-             "S.decode([encoding[,errors]]) -> string or unicode\n\
-\n\
-Decodes S using the codec registered for encoding. encoding defaults\n\
-to the default encoding. errors may be given to set a different error\n\
-handling scheme. Default is 'strict' meaning that encoding errors raise\n\
-a UnicodeDecodeError. Other possible values are 'ignore' and 'replace'\n\
-as well as any other name registerd with codecs.register_error that is\n\
-able to handle UnicodeDecodeErrors.");
-
-static PyObject *
-unicode_decode(PyUnicodeObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = {"encoding", "errors", 0};
-    char *encoding = NULL;
-    char *errors = NULL;
-    PyObject *v;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|ss:decode",
-                                     kwlist, &encoding, &errors))
-        return NULL;
-    v = PyUnicode_AsDecodedObject((PyObject *)self, encoding, errors);
-    if (v == NULL)
-        goto onError;
-    if (!PyString_Check(v) && !PyUnicode_Check(v)) {
-        PyErr_Format(PyExc_TypeError,
-                     "decoder did not return a string/unicode object "
-                     "(type=%.400s)",
-                     Py_TYPE(v)->tp_name);
-        Py_DECREF(v);
-        return NULL;
-    }
-    return v;
-
-  onError:
-    return NULL;
-}
-
-PyDoc_STRVAR(expandtabs__doc__,
-             "S.expandtabs([tabsize]) -> unicode\n\
-\n\
-Return a copy of S where all tab characters are expanded using spaces.\n\
-If tabsize is not given, a tab size of 8 characters is assumed.");
-
-static PyObject*
-unicode_expandtabs(PyUnicodeObject *self, PyObject *args)
-{
-    Py_UNICODE *e;
-    Py_UNICODE *p;
-    Py_UNICODE *q;
-    Py_UNICODE *qe;
-    Py_ssize_t i, j, incr;
-    PyUnicodeObject *u;
-    int tabsize = 8;
-
-    if (!PyArg_ParseTuple(args, "|i:expandtabs", &tabsize))
-        return NULL;
-
-    /* First pass: determine size of output string */
-    i = 0; /* chars up to and including most recent \n or \r */
-    j = 0; /* chars since most recent \n or \r (use in tab calculations) */
-    e = self->str + self->length; /* end of input */
-    for (p = self->str; p < e; p++)
-        if (*p == '\t') {
-            if (tabsize > 0) {
-                incr = tabsize - (j % tabsize); /* cannot overflow */
-                if (j > PY_SSIZE_T_MAX - incr)
-                    goto overflow1;
-                j += incr;
-            }
-        }
-        else {
-            if (j > PY_SSIZE_T_MAX - 1)
-                goto overflow1;
-            j++;
-            if (*p == '\n' || *p == '\r') {
-                if (i > PY_SSIZE_T_MAX - j)
-                    goto overflow1;
-                i += j;
-                j = 0;
-            }
-        }
-
-    if (i > PY_SSIZE_T_MAX - j)
-        goto overflow1;
-
-    /* Second pass: create output string and fill it */
-    u = _PyUnicode_New(i + j);
-    if (!u)
-        return NULL;
-
-    j = 0; /* same as in first pass */
-    q = u->str; /* next output char */
-    qe = u->str + u->length; /* end of output */
-
-    for (p = self->str; p < e; p++)
-        if (*p == '\t') {
-            if (tabsize > 0) {
-                i = tabsize - (j % tabsize);
-                j += i;
-                while (i--) {
-                    if (q >= qe)
-                        goto overflow2;
-                    *q++ = ' ';
-                }
-            }
-        }
-        else {
-            if (q >= qe)
-                goto overflow2;
-            *q++ = *p;
-            j++;
-            if (*p == '\n' || *p == '\r')
-                j = 0;
-        }
-
-    return (PyObject*) u;
-
-  overflow2:
-    Py_DECREF(u);
-  overflow1:
-    PyErr_SetString(PyExc_OverflowError, "new string is too long");
-    return NULL;
-}
-
-PyDoc_STRVAR(find__doc__,
-             "S.find(sub [,start [,end]]) -> int\n\
-\n\
-Return the lowest index in S where substring sub is found,\n\
-such that sub is contained within s[start:end].  Optional\n\
-arguments start and end are interpreted as in slice notation.\n\
-\n\
-Return -1 on failure.");
-
-static PyObject *
-unicode_find(PyUnicodeObject *self, PyObject *args)
-{
-    PyUnicodeObject *substring;
-    Py_ssize_t start;
-    Py_ssize_t end;
-    Py_ssize_t result;
-
-    if (!stringlib_parse_args_finds_unicode("find", args, &substring,
-                                            &start, &end))
-        return NULL;
-
-    result = stringlib_find_slice(
-        PyUnicode_AS_UNICODE(self), PyUnicode_GET_SIZE(self),
-        PyUnicode_AS_UNICODE(substring), PyUnicode_GET_SIZE(substring),
-        start, end
-        );
-
-    Py_DECREF(substring);
-
-    return PyInt_FromSsize_t(result);
-}
-
-static PyObject *
-unicode_getitem(PyUnicodeObject *self, Py_ssize_t index)
-{
-    if (index < 0 || index >= self->length) {
-        PyErr_SetString(PyExc_IndexError, "string index out of range");
-        return NULL;
-    }
-
-    return (PyObject*) PyUnicode_FromUnicode(&self->str[index], 1);
-}
-
-static long
-unicode_hash(PyUnicodeObject *self)
-{
-    /* Since Unicode objects compare equal to their ASCII string
-       counterparts, they should use the individual character values
-       as basis for their hash value.  This is needed to assure that
-       strings and Unicode objects behave in the same way as
-       dictionary keys. */
-
-    register Py_ssize_t len;
-    register Py_UNICODE *p;
-    register long x;
-
-    if (self->hash != -1)
-        return self->hash;
-    len = PyUnicode_GET_SIZE(self);
-    p = PyUnicode_AS_UNICODE(self);
-    x = *p << 7;
-    while (--len >= 0)
-        x = (1000003*x) ^ *p++;
-    x ^= PyUnicode_GET_SIZE(self);
-    if (x == -1)
-        x = -2;
-    self->hash = x;
-    return x;
-}
-
-PyDoc_STRVAR(index__doc__,
-             "S.index(sub [,start [,end]]) -> int\n\
-\n\
-Like S.find() but raise ValueError when the substring is not found.");
-
-static PyObject *
-unicode_index(PyUnicodeObject *self, PyObject *args)
-{
-    Py_ssize_t result;
-    PyUnicodeObject *substring;
-    Py_ssize_t start;
-    Py_ssize_t end;
-
-    if (!stringlib_parse_args_finds_unicode("index", args, &substring,
-                                            &start, &end))
-        return NULL;
-
-    result = stringlib_find_slice(
-        PyUnicode_AS_UNICODE(self), PyUnicode_GET_SIZE(self),
-        PyUnicode_AS_UNICODE(substring), PyUnicode_GET_SIZE(substring),
-        start, end
-        );
-
-    Py_DECREF(substring);
-
-    if (result < 0) {
-        PyErr_SetString(PyExc_ValueError, "substring not found");
-        return NULL;
-    }
-
-    return PyInt_FromSsize_t(result);
-}
-
-PyDoc_STRVAR(islower__doc__,
-             "S.islower() -> bool\n\
-\n\
-Return True if all cased characters in S are lowercase and there is\n\
-at least one cased character in S, False otherwise.");
-
-static PyObject*
-unicode_islower(PyUnicodeObject *self)
-{
-    register const Py_UNICODE *p = PyUnicode_AS_UNICODE(self);
-    register const Py_UNICODE *e;
-    int cased;
-
-    /* Shortcut for single character strings */
-    if (PyUnicode_GET_SIZE(self) == 1)
-        return PyBool_FromLong(Py_UNICODE_ISLOWER(*p));
-
-    /* Special case for empty strings */
-    if (PyUnicode_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyUnicode_GET_SIZE(self);
-    cased = 0;
-    for (; p < e; p++) {
-        register const Py_UNICODE ch = *p;
-
-        if (Py_UNICODE_ISUPPER(ch) || Py_UNICODE_ISTITLE(ch))
-            return PyBool_FromLong(0);
-        else if (!cased && Py_UNICODE_ISLOWER(ch))
-            cased = 1;
-    }
-    return PyBool_FromLong(cased);
-}
-
-PyDoc_STRVAR(isupper__doc__,
-             "S.isupper() -> bool\n\
-\n\
-Return True if all cased characters in S are uppercase and there is\n\
-at least one cased character in S, False otherwise.");
-
-static PyObject*
-unicode_isupper(PyUnicodeObject *self)
-{
-    register const Py_UNICODE *p = PyUnicode_AS_UNICODE(self);
-    register const Py_UNICODE *e;
-    int cased;
-
-    /* Shortcut for single character strings */
-    if (PyUnicode_GET_SIZE(self) == 1)
-        return PyBool_FromLong(Py_UNICODE_ISUPPER(*p) != 0);
-
-    /* Special case for empty strings */
-    if (PyUnicode_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyUnicode_GET_SIZE(self);
-    cased = 0;
-    for (; p < e; p++) {
-        register const Py_UNICODE ch = *p;
-
-        if (Py_UNICODE_ISLOWER(ch) || Py_UNICODE_ISTITLE(ch))
-            return PyBool_FromLong(0);
-        else if (!cased && Py_UNICODE_ISUPPER(ch))
-            cased = 1;
-    }
-    return PyBool_FromLong(cased);
-}
-
-PyDoc_STRVAR(istitle__doc__,
-             "S.istitle() -> bool\n\
-\n\
-Return True if S is a titlecased string and there is at least one\n\
-character in S, i.e. upper- and titlecase characters may only\n\
-follow uncased characters and lowercase characters only cased ones.\n\
-Return False otherwise.");
-
-static PyObject*
-unicode_istitle(PyUnicodeObject *self)
-{
-    register const Py_UNICODE *p = PyUnicode_AS_UNICODE(self);
-    register const Py_UNICODE *e;
-    int cased, previous_is_cased;
-
-    /* Shortcut for single character strings */
-    if (PyUnicode_GET_SIZE(self) == 1)
-        return PyBool_FromLong((Py_UNICODE_ISTITLE(*p) != 0) ||
-                               (Py_UNICODE_ISUPPER(*p) != 0));
-
-    /* Special case for empty strings */
-    if (PyUnicode_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyUnicode_GET_SIZE(self);
-    cased = 0;
-    previous_is_cased = 0;
-    for (; p < e; p++) {
-        register const Py_UNICODE ch = *p;
-
-        if (Py_UNICODE_ISUPPER(ch) || Py_UNICODE_ISTITLE(ch)) {
-            if (previous_is_cased)
-                return PyBool_FromLong(0);
-            previous_is_cased = 1;
-            cased = 1;
-        }
-        else if (Py_UNICODE_ISLOWER(ch)) {
-            if (!previous_is_cased)
-                return PyBool_FromLong(0);
-            previous_is_cased = 1;
-            cased = 1;
-        }
-        else
-            previous_is_cased = 0;
-    }
-    return PyBool_FromLong(cased);
-}
-
-PyDoc_STRVAR(isspace__doc__,
-             "S.isspace() -> bool\n\
-\n\
-Return True if all characters in S are whitespace\n\
-and there is at least one character in S, False otherwise.");
-
-static PyObject*
-unicode_isspace(PyUnicodeObject *self)
-{
-    register const Py_UNICODE *p = PyUnicode_AS_UNICODE(self);
-    register const Py_UNICODE *e;
-
-    /* Shortcut for single character strings */
-    if (PyUnicode_GET_SIZE(self) == 1 &&
-        Py_UNICODE_ISSPACE(*p))
-        return PyBool_FromLong(1);
-
-    /* Special case for empty strings */
-    if (PyUnicode_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyUnicode_GET_SIZE(self);
-    for (; p < e; p++) {
-        if (!Py_UNICODE_ISSPACE(*p))
-            return PyBool_FromLong(0);
-    }
-    return PyBool_FromLong(1);
-}
-
-PyDoc_STRVAR(isalpha__doc__,
-             "S.isalpha() -> bool\n\
-\n\
-Return True if all characters in S are alphabetic\n\
-and there is at least one character in S, False otherwise.");
-
-static PyObject*
-unicode_isalpha(PyUnicodeObject *self)
-{
-    register const Py_UNICODE *p = PyUnicode_AS_UNICODE(self);
-    register const Py_UNICODE *e;
-
-    /* Shortcut for single character strings */
-    if (PyUnicode_GET_SIZE(self) == 1 &&
-        Py_UNICODE_ISALPHA(*p))
-        return PyBool_FromLong(1);
-
-    /* Special case for empty strings */
-    if (PyUnicode_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyUnicode_GET_SIZE(self);
-    for (; p < e; p++) {
-        if (!Py_UNICODE_ISALPHA(*p))
-            return PyBool_FromLong(0);
-    }
-    return PyBool_FromLong(1);
-}
-
-PyDoc_STRVAR(isalnum__doc__,
-             "S.isalnum() -> bool\n\
-\n\
-Return True if all characters in S are alphanumeric\n\
-and there is at least one character in S, False otherwise.");
-
-static PyObject*
-unicode_isalnum(PyUnicodeObject *self)
-{
-    register const Py_UNICODE *p = PyUnicode_AS_UNICODE(self);
-    register const Py_UNICODE *e;
-
-    /* Shortcut for single character strings */
-    if (PyUnicode_GET_SIZE(self) == 1 &&
-        Py_UNICODE_ISALNUM(*p))
-        return PyBool_FromLong(1);
-
-    /* Special case for empty strings */
-    if (PyUnicode_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyUnicode_GET_SIZE(self);
-    for (; p < e; p++) {
-        if (!Py_UNICODE_ISALNUM(*p))
-            return PyBool_FromLong(0);
-    }
-    return PyBool_FromLong(1);
-}
-
-PyDoc_STRVAR(isdecimal__doc__,
-             "S.isdecimal() -> bool\n\
-\n\
-Return True if there are only decimal characters in S,\n\
-False otherwise.");
-
-static PyObject*
-unicode_isdecimal(PyUnicodeObject *self)
-{
-    register const Py_UNICODE *p = PyUnicode_AS_UNICODE(self);
-    register const Py_UNICODE *e;
-
-    /* Shortcut for single character strings */
-    if (PyUnicode_GET_SIZE(self) == 1 &&
-        Py_UNICODE_ISDECIMAL(*p))
-        return PyBool_FromLong(1);
-
-    /* Special case for empty strings */
-    if (PyUnicode_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyUnicode_GET_SIZE(self);
-    for (; p < e; p++) {
-        if (!Py_UNICODE_ISDECIMAL(*p))
-            return PyBool_FromLong(0);
-    }
-    return PyBool_FromLong(1);
-}
-
-PyDoc_STRVAR(isdigit__doc__,
-             "S.isdigit() -> bool\n\
-\n\
-Return True if all characters in S are digits\n\
-and there is at least one character in S, False otherwise.");
-
-static PyObject*
-unicode_isdigit(PyUnicodeObject *self)
-{
-    register const Py_UNICODE *p = PyUnicode_AS_UNICODE(self);
-    register const Py_UNICODE *e;
-
-    /* Shortcut for single character strings */
-    if (PyUnicode_GET_SIZE(self) == 1 &&
-        Py_UNICODE_ISDIGIT(*p))
-        return PyBool_FromLong(1);
-
-    /* Special case for empty strings */
-    if (PyUnicode_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyUnicode_GET_SIZE(self);
-    for (; p < e; p++) {
-        if (!Py_UNICODE_ISDIGIT(*p))
-            return PyBool_FromLong(0);
-    }
-    return PyBool_FromLong(1);
-}
-
-PyDoc_STRVAR(isnumeric__doc__,
-             "S.isnumeric() -> bool\n\
-\n\
-Return True if there are only numeric characters in S,\n\
-False otherwise.");
-
-static PyObject*
-unicode_isnumeric(PyUnicodeObject *self)
-{
-    register const Py_UNICODE *p = PyUnicode_AS_UNICODE(self);
-    register const Py_UNICODE *e;
-
-    /* Shortcut for single character strings */
-    if (PyUnicode_GET_SIZE(self) == 1 &&
-        Py_UNICODE_ISNUMERIC(*p))
-        return PyBool_FromLong(1);
-
-    /* Special case for empty strings */
-    if (PyUnicode_GET_SIZE(self) == 0)
-        return PyBool_FromLong(0);
-
-    e = p + PyUnicode_GET_SIZE(self);
-    for (; p < e; p++) {
-        if (!Py_UNICODE_ISNUMERIC(*p))
-            return PyBool_FromLong(0);
-    }
-    return PyBool_FromLong(1);
-}
-
-PyDoc_STRVAR(join__doc__,
-             "S.join(iterable) -> unicode\n\
-\n\
-Return a string which is the concatenation of the strings in the\n\
-iterable.  The separator between elements is S.");
-
-static PyObject*
-unicode_join(PyObject *self, PyObject *data)
-{
-    return PyUnicode_Join(self, data);
-}
-
-static Py_ssize_t
-unicode_length(PyUnicodeObject *self)
-{
-    return self->length;
-}
-
-PyDoc_STRVAR(ljust__doc__,
-             "S.ljust(width[, fillchar]) -> int\n\
-\n\
-Return S left-justified in a Unicode string of length width. Padding is\n\
-done using the specified fill character (default is a space).");
-
-static PyObject *
-unicode_ljust(PyUnicodeObject *self, PyObject *args)
-{
-    Py_ssize_t width;
-    Py_UNICODE fillchar = ' ';
-
-    if (!PyArg_ParseTuple(args, "n|O&:ljust", &width, convert_uc, &fillchar))
-        return NULL;
-
-    if (self->length >= width && PyUnicode_CheckExact(self)) {
-        Py_INCREF(self);
-        return (PyObject*) self;
-    }
-
-    return (PyObject*) pad(self, 0, width - self->length, fillchar);
-}
-
-PyDoc_STRVAR(lower__doc__,
-             "S.lower() -> unicode\n\
-\n\
-Return a copy of the string S converted to lowercase.");
-
-static PyObject*
-unicode_lower(PyUnicodeObject *self)
-{
-    return fixup(self, fixlower);
-}
-
-#define LEFTSTRIP 0
-#define RIGHTSTRIP 1
-#define BOTHSTRIP 2
-
-/* Arrays indexed by above */
-static const char *stripformat[] = {"|O:lstrip", "|O:rstrip", "|O:strip"};
-
-#define STRIPNAME(i) (stripformat[i]+3)
-
-/* externally visible for str.strip(unicode) */
-PyObject *
-_PyUnicode_XStrip(PyUnicodeObject *self, int striptype, PyObject *sepobj)
-{
-    Py_UNICODE *s = PyUnicode_AS_UNICODE(self);
-    Py_ssize_t len = PyUnicode_GET_SIZE(self);
-    Py_UNICODE *sep = PyUnicode_AS_UNICODE(sepobj);
-    Py_ssize_t seplen = PyUnicode_GET_SIZE(sepobj);
-    Py_ssize_t i, j;
-
-    BLOOM_MASK sepmask = make_bloom_mask(sep, seplen);
-
-    i = 0;
-    if (striptype != RIGHTSTRIP) {
-        while (i < len && BLOOM_MEMBER(sepmask, s[i], sep, seplen)) {
-            i++;
-        }
-    }
-
-    j = len;
-    if (striptype != LEFTSTRIP) {
-        do {
-            j--;
-        } while (j >= i && BLOOM_MEMBER(sepmask, s[j], sep, seplen));
-        j++;
-    }
-
-    if (i == 0 && j == len && PyUnicode_CheckExact(self)) {
-        Py_INCREF(self);
-        return (PyObject*)self;
-    }
-    else
-        return PyUnicode_FromUnicode(s+i, j-i);
-}
-
-
-static PyObject *
-do_strip(PyUnicodeObject *self, int striptype)
-{
-    Py_UNICODE *s = PyUnicode_AS_UNICODE(self);
-    Py_ssize_t len = PyUnicode_GET_SIZE(self), i, j;
-
-    i = 0;
-    if (striptype != RIGHTSTRIP) {
-        while (i < len && Py_UNICODE_ISSPACE(s[i])) {
-            i++;
-        }
-    }
-
-    j = len;
-    if (striptype != LEFTSTRIP) {
-        do {
-            j--;
-        } while (j >= i && Py_UNICODE_ISSPACE(s[j]));
-        j++;
-    }
-
-    if (i == 0 && j == len && PyUnicode_CheckExact(self)) {
-        Py_INCREF(self);
-        return (PyObject*)self;
-    }
-    else
-        return PyUnicode_FromUnicode(s+i, j-i);
-}
-
-
-static PyObject *
-do_argstrip(PyUnicodeObject *self, int striptype, PyObject *args)
-{
-    PyObject *sep = NULL;
-
-    if (!PyArg_ParseTuple(args, (char *)stripformat[striptype], &sep))
-        return NULL;
-
-    if (sep != NULL && sep != Py_None) {
-        if (PyUnicode_Check(sep))
-            return _PyUnicode_XStrip(self, striptype, sep);
-        else if (PyString_Check(sep)) {
-            PyObject *res;
-            sep = PyUnicode_FromObject(sep);
-            if (sep==NULL)
-                return NULL;
-            res = _PyUnicode_XStrip(self, striptype, sep);
-            Py_DECREF(sep);
-            return res;
-        }
-        else {
-            PyErr_Format(PyExc_TypeError,
-                         "%s arg must be None, unicode or str",
-                         STRIPNAME(striptype));
-            return NULL;
-        }
-    }
-
-    return do_strip(self, striptype);
-}
-
-
-PyDoc_STRVAR(strip__doc__,
-             "S.strip([chars]) -> unicode\n\
-\n\
-Return a copy of the string S with leading and trailing\n\
-whitespace removed.\n\
-If chars is given and not None, remove characters in chars instead.\n\
-If chars is a str, it will be converted to unicode before stripping");
-
-static PyObject *
-unicode_strip(PyUnicodeObject *self, PyObject *args)
-{
-    if (PyTuple_GET_SIZE(args) == 0)
-        return do_strip(self, BOTHSTRIP); /* Common case */
-    else
-        return do_argstrip(self, BOTHSTRIP, args);
-}
-
-
-PyDoc_STRVAR(lstrip__doc__,
-             "S.lstrip([chars]) -> unicode\n\
-\n\
-Return a copy of the string S with leading whitespace removed.\n\
-If chars is given and not None, remove characters in chars instead.\n\
-If chars is a str, it will be converted to unicode before stripping");
-
-static PyObject *
-unicode_lstrip(PyUnicodeObject *self, PyObject *args)
-{
-    if (PyTuple_GET_SIZE(args) == 0)
-        return do_strip(self, LEFTSTRIP); /* Common case */
-    else
-        return do_argstrip(self, LEFTSTRIP, args);
-}
-
-
-PyDoc_STRVAR(rstrip__doc__,
-             "S.rstrip([chars]) -> unicode\n\
-\n\
-Return a copy of the string S with trailing whitespace removed.\n\
-If chars is given and not None, remove characters in chars instead.\n\
-If chars is a str, it will be converted to unicode before stripping");
-
-static PyObject *
-unicode_rstrip(PyUnicodeObject *self, PyObject *args)
-{
-    if (PyTuple_GET_SIZE(args) == 0)
-        return do_strip(self, RIGHTSTRIP); /* Common case */
-    else
-        return do_argstrip(self, RIGHTSTRIP, args);
-}
-
-
-static PyObject*
-unicode_repeat(PyUnicodeObject *str, Py_ssize_t len)
-{
-    PyUnicodeObject *u;
-    Py_UNICODE *p;
-    Py_ssize_t nchars;
-    size_t nbytes;
-
-    if (len < 0)
-        len = 0;
-
-    if (len == 1 && PyUnicode_CheckExact(str)) {
-        /* no repeat, return original string */
-        Py_INCREF(str);
-        return (PyObject*) str;
-    }
-
-    /* ensure # of chars needed doesn't overflow int and # of bytes
-     * needed doesn't overflow size_t
-     */
-    nchars = len * str->length;
-    if (len && nchars / len != str->length) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "repeated string is too long");
-        return NULL;
-    }
-    nbytes = (nchars + 1) * sizeof(Py_UNICODE);
-    if (nbytes / sizeof(Py_UNICODE) != (size_t)(nchars + 1)) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "repeated string is too long");
-        return NULL;
-    }
-    u = _PyUnicode_New(nchars);
-    if (!u)
-        return NULL;
-
-    p = u->str;
-
-    if (str->length == 1 && len > 0) {
-        Py_UNICODE_FILL(p, str->str[0], len);
-    } else {
-        Py_ssize_t done = 0; /* number of characters copied this far */
-        if (done < nchars) {
-            Py_UNICODE_COPY(p, str->str, str->length);
-            done = str->length;
-        }
-        while (done < nchars) {
-            Py_ssize_t n = (done <= nchars-done) ? done : nchars-done;
-            Py_UNICODE_COPY(p+done, p, n);
-            done += n;
-        }
-    }
-
-    return (PyObject*) u;
-}
-
-PyObject *PyUnicode_Replace(PyObject *obj,
-                            PyObject *subobj,
-                            PyObject *replobj,
-                            Py_ssize_t maxcount)
-{
-    PyObject *self;
-    PyObject *str1;
-    PyObject *str2;
-    PyObject *result;
-
-    self = PyUnicode_FromObject(obj);
-    if (self == NULL)
-        return NULL;
-    str1 = PyUnicode_FromObject(subobj);
-    if (str1 == NULL) {
-        Py_DECREF(self);
-        return NULL;
-    }
-    str2 = PyUnicode_FromObject(replobj);
-    if (str2 == NULL) {
-        Py_DECREF(self);
-        Py_DECREF(str1);
-        return NULL;
-    }
-    result = replace((PyUnicodeObject *)self,
-                     (PyUnicodeObject *)str1,
-                     (PyUnicodeObject *)str2,
-                     maxcount);
-    Py_DECREF(self);
-    Py_DECREF(str1);
-    Py_DECREF(str2);
-    return result;
-}
-
-PyDoc_STRVAR(replace__doc__,
-             "S.replace(old, new[, count]) -> unicode\n\
-\n\
-Return a copy of S with all occurrences of substring\n\
-old replaced by new.  If the optional argument count is\n\
-given, only the first count occurrences are replaced.");
-
-static PyObject*
-unicode_replace(PyUnicodeObject *self, PyObject *args)
-{
-    PyUnicodeObject *str1;
-    PyUnicodeObject *str2;
-    Py_ssize_t maxcount = -1;
-    PyObject *result;
-
-    if (!PyArg_ParseTuple(args, "OO|n:replace", &str1, &str2, &maxcount))
-        return NULL;
-    str1 = (PyUnicodeObject *)PyUnicode_FromObject((PyObject *)str1);
-    if (str1 == NULL)
-        return NULL;
-    str2 = (PyUnicodeObject *)PyUnicode_FromObject((PyObject *)str2);
-    if (str2 == NULL) {
-        Py_DECREF(str1);
-        return NULL;
-    }
-
-    result = replace(self, str1, str2, maxcount);
-
-    Py_DECREF(str1);
-    Py_DECREF(str2);
-    return result;
-}
-
-static
-PyObject *unicode_repr(PyObject *unicode)
-{
-    return unicodeescape_string(PyUnicode_AS_UNICODE(unicode),
-                                PyUnicode_GET_SIZE(unicode),
-                                1);
-}
-
-PyDoc_STRVAR(rfind__doc__,
-             "S.rfind(sub [,start [,end]]) -> int\n\
-\n\
-Return the highest index in S where substring sub is found,\n\
-such that sub is contained within s[start:end].  Optional\n\
-arguments start and end are interpreted as in slice notation.\n\
-\n\
-Return -1 on failure.");
-
-static PyObject *
-unicode_rfind(PyUnicodeObject *self, PyObject *args)
-{
-    PyUnicodeObject *substring;
-    Py_ssize_t start;
-    Py_ssize_t end;
-    Py_ssize_t result;
-
-    if (!stringlib_parse_args_finds_unicode("rfind", args, &substring,
-                                            &start, &end))
-        return NULL;
-
-    result = stringlib_rfind_slice(
-        PyUnicode_AS_UNICODE(self), PyUnicode_GET_SIZE(self),
-        PyUnicode_AS_UNICODE(substring), PyUnicode_GET_SIZE(substring),
-        start, end
-        );
-
-    Py_DECREF(substring);
-
-    return PyInt_FromSsize_t(result);
-}
-
-PyDoc_STRVAR(rindex__doc__,
-             "S.rindex(sub [,start [,end]]) -> int\n\
-\n\
-Like S.rfind() but raise ValueError when the substring is not found.");
-
-static PyObject *
-unicode_rindex(PyUnicodeObject *self, PyObject *args)
-{
-    PyUnicodeObject *substring;
-    Py_ssize_t start;
-    Py_ssize_t end;
-    Py_ssize_t result;
-
-    if (!stringlib_parse_args_finds_unicode("rindex", args, &substring,
-                                            &start, &end))
-        return NULL;
-
-    result = stringlib_rfind_slice(
-        PyUnicode_AS_UNICODE(self), PyUnicode_GET_SIZE(self),
-        PyUnicode_AS_UNICODE(substring), PyUnicode_GET_SIZE(substring),
-        start, end
-        );
-
-    Py_DECREF(substring);
-
-    if (result < 0) {
-        PyErr_SetString(PyExc_ValueError, "substring not found");
-        return NULL;
-    }
-    return PyInt_FromSsize_t(result);
-}
-
-PyDoc_STRVAR(rjust__doc__,
-             "S.rjust(width[, fillchar]) -> unicode\n\
-\n\
-Return S right-justified in a Unicode string of length width. Padding is\n\
-done using the specified fill character (default is a space).");
-
-static PyObject *
-unicode_rjust(PyUnicodeObject *self, PyObject *args)
-{
-    Py_ssize_t width;
-    Py_UNICODE fillchar = ' ';
-
-    if (!PyArg_ParseTuple(args, "n|O&:rjust", &width, convert_uc, &fillchar))
-        return NULL;
-
-    if (self->length >= width && PyUnicode_CheckExact(self)) {
-        Py_INCREF(self);
-        return (PyObject*) self;
-    }
-
-    return (PyObject*) pad(self, width - self->length, 0, fillchar);
-}
-
-static PyObject*
-unicode_slice(PyUnicodeObject *self, Py_ssize_t start, Py_ssize_t end)
-{
-    /* standard clamping */
-    if (start < 0)
-        start = 0;
-    if (end < 0)
-        end = 0;
-    if (end > self->length)
-        end = self->length;
-    if (start == 0 && end == self->length && PyUnicode_CheckExact(self)) {
-        /* full slice, return original string */
-        Py_INCREF(self);
-        return (PyObject*) self;
-    }
-    if (start > end)
-        start = end;
-    /* copy slice */
-    return (PyObject*) PyUnicode_FromUnicode(self->str + start,
-                                             end - start);
-}
-
-PyObject *PyUnicode_Split(PyObject *s,
-                          PyObject *sep,
-                          Py_ssize_t maxsplit)
-{
-    PyObject *result;
-
-    s = PyUnicode_FromObject(s);
-    if (s == NULL)
-        return NULL;
-    if (sep != NULL) {
-        sep = PyUnicode_FromObject(sep);
-        if (sep == NULL) {
-            Py_DECREF(s);
-            return NULL;
-        }
-    }
-
-    result = split((PyUnicodeObject *)s, (PyUnicodeObject *)sep, maxsplit);
-
-    Py_DECREF(s);
-    Py_XDECREF(sep);
-    return result;
-}
-
-PyDoc_STRVAR(split__doc__,
-             "S.split([sep [,maxsplit]]) -> list of strings\n\
-\n\
-Return a list of the words in S, using sep as the\n\
-delimiter string.  If maxsplit is given, at most maxsplit\n\
-splits are done. If sep is not specified or is None, any\n\
-whitespace string is a separator and empty strings are\n\
-removed from the result.");
-
-static PyObject*
-unicode_split(PyUnicodeObject *self, PyObject *args)
-{
-    PyObject *substring = Py_None;
-    Py_ssize_t maxcount = -1;
-
-    if (!PyArg_ParseTuple(args, "|On:split", &substring, &maxcount))
-        return NULL;
-
-    if (substring == Py_None)
-        return split(self, NULL, maxcount);
-    else if (PyUnicode_Check(substring))
-        return split(self, (PyUnicodeObject *)substring, maxcount);
-    else
-        return PyUnicode_Split((PyObject *)self, substring, maxcount);
-}
-
-PyObject *
-PyUnicode_Partition(PyObject *str_in, PyObject *sep_in)
-{
-    PyObject* str_obj;
-    PyObject* sep_obj;
-    PyObject* out;
-
-    str_obj = PyUnicode_FromObject(str_in);
-    if (!str_obj)
-        return NULL;
-    sep_obj = PyUnicode_FromObject(sep_in);
-    if (!sep_obj) {
-        Py_DECREF(str_obj);
-        return NULL;
-    }
-
-    out = stringlib_partition(
-        str_obj, PyUnicode_AS_UNICODE(str_obj), PyUnicode_GET_SIZE(str_obj),
-        sep_obj, PyUnicode_AS_UNICODE(sep_obj), PyUnicode_GET_SIZE(sep_obj)
-        );
-
-    Py_DECREF(sep_obj);
-    Py_DECREF(str_obj);
-
-    return out;
-}
-
-
-PyObject *
-PyUnicode_RPartition(PyObject *str_in, PyObject *sep_in)
-{
-    PyObject* str_obj;
-    PyObject* sep_obj;
-    PyObject* out;
-
-    str_obj = PyUnicode_FromObject(str_in);
-    if (!str_obj)
-        return NULL;
-    sep_obj = PyUnicode_FromObject(sep_in);
-    if (!sep_obj) {
-        Py_DECREF(str_obj);
-        return NULL;
-    }
-
-    out = stringlib_rpartition(
-        str_obj, PyUnicode_AS_UNICODE(str_obj), PyUnicode_GET_SIZE(str_obj),
-        sep_obj, PyUnicode_AS_UNICODE(sep_obj), PyUnicode_GET_SIZE(sep_obj)
-        );
-
-    Py_DECREF(sep_obj);
-    Py_DECREF(str_obj);
-
-    return out;
-}
-
-PyDoc_STRVAR(partition__doc__,
-             "S.partition(sep) -> (head, sep, tail)\n\
-\n\
-Search for the separator sep in S, and return the part before it,\n\
-the separator itself, and the part after it.  If the separator is not\n\
-found, return S and two empty strings.");
-
-static PyObject*
-unicode_partition(PyUnicodeObject *self, PyObject *separator)
-{
-    return PyUnicode_Partition((PyObject *)self, separator);
-}
-
-PyDoc_STRVAR(rpartition__doc__,
-             "S.rpartition(sep) -> (head, sep, tail)\n\
-\n\
-Search for the separator sep in S, starting at the end of S, and return\n\
-the part before it, the separator itself, and the part after it.  If the\n\
-separator is not found, return two empty strings and S.");
-
-static PyObject*
-unicode_rpartition(PyUnicodeObject *self, PyObject *separator)
-{
-    return PyUnicode_RPartition((PyObject *)self, separator);
-}
-
-PyObject *PyUnicode_RSplit(PyObject *s,
-                           PyObject *sep,
-                           Py_ssize_t maxsplit)
-{
-    PyObject *result;
-
-    s = PyUnicode_FromObject(s);
-    if (s == NULL)
-        return NULL;
-    if (sep != NULL) {
-        sep = PyUnicode_FromObject(sep);
-        if (sep == NULL) {
-            Py_DECREF(s);
-            return NULL;
-        }
-    }
-
-    result = rsplit((PyUnicodeObject *)s, (PyUnicodeObject *)sep, maxsplit);
-
-    Py_DECREF(s);
-    Py_XDECREF(sep);
-    return result;
-}
-
-PyDoc_STRVAR(rsplit__doc__,
-             "S.rsplit([sep [,maxsplit]]) -> list of strings\n\
-\n\
-Return a list of the words in S, using sep as the\n\
-delimiter string, starting at the end of the string and\n\
-working to the front.  If maxsplit is given, at most maxsplit\n\
-splits are done. If sep is not specified, any whitespace string\n\
-is a separator.");
-
-static PyObject*
-unicode_rsplit(PyUnicodeObject *self, PyObject *args)
-{
-    PyObject *substring = Py_None;
-    Py_ssize_t maxcount = -1;
-
-    if (!PyArg_ParseTuple(args, "|On:rsplit", &substring, &maxcount))
-        return NULL;
-
-    if (substring == Py_None)
-        return rsplit(self, NULL, maxcount);
-    else if (PyUnicode_Check(substring))
-        return rsplit(self, (PyUnicodeObject *)substring, maxcount);
-    else
-        return PyUnicode_RSplit((PyObject *)self, substring, maxcount);
-}
-
-PyDoc_STRVAR(splitlines__doc__,
-             "S.splitlines([keepends]) -> list of strings\n\
-\n\
-Return a list of the lines in S, breaking at line boundaries.\n\
-Line breaks are not included in the resulting list unless keepends\n\
-is given and true.");
-
-static PyObject*
-unicode_splitlines(PyUnicodeObject *self, PyObject *args)
-{
-    int keepends = 0;
-
-    if (!PyArg_ParseTuple(args, "|i:splitlines", &keepends))
-        return NULL;
-
-    return PyUnicode_Splitlines((PyObject *)self, keepends);
-}
-
-static
-PyObject *unicode_str(PyUnicodeObject *self)
-{
-    return PyUnicode_AsEncodedString((PyObject *)self, NULL, NULL);
-}
-
-PyDoc_STRVAR(swapcase__doc__,
-             "S.swapcase() -> unicode\n\
-\n\
-Return a copy of S with uppercase characters converted to lowercase\n\
-and vice versa.");
-
-static PyObject*
-unicode_swapcase(PyUnicodeObject *self)
-{
-    return fixup(self, fixswapcase);
-}
-
-PyDoc_STRVAR(translate__doc__,
-             "S.translate(table) -> unicode\n\
-\n\
-Return a copy of the string S, where all characters have been mapped\n\
-through the given translation table, which must be a mapping of\n\
-Unicode ordinals to Unicode ordinals, Unicode strings or None.\n\
-Unmapped characters are left untouched. Characters mapped to None\n\
-are deleted.");
-
-static PyObject*
-unicode_translate(PyUnicodeObject *self, PyObject *table)
-{
-    return PyUnicode_TranslateCharmap(self->str,
-                                      self->length,
-                                      table,
-                                      "ignore");
-}
-
-PyDoc_STRVAR(upper__doc__,
-             "S.upper() -> unicode\n\
-\n\
-Return a copy of S converted to uppercase.");
-
-static PyObject*
-unicode_upper(PyUnicodeObject *self)
-{
-    return fixup(self, fixupper);
-}
-
-PyDoc_STRVAR(zfill__doc__,
-             "S.zfill(width) -> unicode\n\
-\n\
-Pad a numeric string S with zeros on the left, to fill a field\n\
-of the specified width. The string S is never truncated.");
-
-static PyObject *
-unicode_zfill(PyUnicodeObject *self, PyObject *args)
-{
-    Py_ssize_t fill;
-    PyUnicodeObject *u;
-
-    Py_ssize_t width;
-    if (!PyArg_ParseTuple(args, "n:zfill", &width))
-        return NULL;
-
-    if (self->length >= width) {
-        if (PyUnicode_CheckExact(self)) {
-            Py_INCREF(self);
-            return (PyObject*) self;
-        }
-        else
-            return PyUnicode_FromUnicode(
-                PyUnicode_AS_UNICODE(self),
-                PyUnicode_GET_SIZE(self)
-                );
-    }
-
-    fill = width - self->length;
-
-    u = pad(self, fill, 0, '0');
-
-    if (u == NULL)
-        return NULL;
-
-    if (u->str[fill] == '+' || u->str[fill] == '-') {
-        /* move sign to beginning of string */
-        u->str[0] = u->str[fill];
-        u->str[fill] = '0';
-    }
-
-    return (PyObject*) u;
-}
-
-#if 0
-static PyObject*
-free_listsize(PyUnicodeObject *self)
-{
-    return PyInt_FromLong(numfree);
-}
-#endif
-
-PyDoc_STRVAR(startswith__doc__,
-             "S.startswith(prefix[, start[, end]]) -> bool\n\
-\n\
-Return True if S starts with the specified prefix, False otherwise.\n\
-With optional start, test S beginning at that position.\n\
-With optional end, stop comparing S at that position.\n\
-prefix can also be a tuple of strings to try.");
-
-static PyObject *
-unicode_startswith(PyUnicodeObject *self,
-                   PyObject *args)
-{
-    PyObject *subobj;
-    PyUnicodeObject *substring;
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    int result;
-
-    if (!stringlib_parse_args_finds("startswith", args, &subobj, &start, &end))
-        return NULL;
-    if (PyTuple_Check(subobj)) {
-        Py_ssize_t i;
-        for (i = 0; i < PyTuple_GET_SIZE(subobj); i++) {
-            substring = (PyUnicodeObject *)PyUnicode_FromObject(
-                PyTuple_GET_ITEM(subobj, i));
-            if (substring == NULL)
-                return NULL;
-            result = tailmatch(self, substring, start, end, -1);
-            Py_DECREF(substring);
-            if (result) {
-                Py_RETURN_TRUE;
-            }
-        }
-        /* nothing matched */
-        Py_RETURN_FALSE;
-    }
-    substring = (PyUnicodeObject *)PyUnicode_FromObject(subobj);
-    if (substring == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_TypeError))
-            PyErr_Format(PyExc_TypeError, "startswith first arg must be str, "
-                         "unicode, or tuple, not %s", Py_TYPE(subobj)->tp_name);
-        return NULL;
-    }
-    result = tailmatch(self, substring, start, end, -1);
-    Py_DECREF(substring);
-    return PyBool_FromLong(result);
-}
-
-
-PyDoc_STRVAR(endswith__doc__,
-             "S.endswith(suffix[, start[, end]]) -> bool\n\
-\n\
-Return True if S ends with the specified suffix, False otherwise.\n\
-With optional start, test S beginning at that position.\n\
-With optional end, stop comparing S at that position.\n\
-suffix can also be a tuple of strings to try.");
-
-static PyObject *
-unicode_endswith(PyUnicodeObject *self,
-                 PyObject *args)
-{
-    PyObject *subobj;
-    PyUnicodeObject *substring;
-    Py_ssize_t start = 0;
-    Py_ssize_t end = PY_SSIZE_T_MAX;
-    int result;
-
-    if (!stringlib_parse_args_finds("endswith", args, &subobj, &start, &end))
-        return NULL;
-    if (PyTuple_Check(subobj)) {
-        Py_ssize_t i;
-        for (i = 0; i < PyTuple_GET_SIZE(subobj); i++) {
-            substring = (PyUnicodeObject *)PyUnicode_FromObject(
-                PyTuple_GET_ITEM(subobj, i));
-            if (substring == NULL)
-                return NULL;
-            result = tailmatch(self, substring, start, end, +1);
-            Py_DECREF(substring);
-            if (result) {
-                Py_RETURN_TRUE;
-            }
-        }
-        Py_RETURN_FALSE;
-    }
-    substring = (PyUnicodeObject *)PyUnicode_FromObject(subobj);
-    if (substring == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_TypeError))
-            PyErr_Format(PyExc_TypeError, "endswith first arg must be str, "
-                         "unicode, or tuple, not %s", Py_TYPE(subobj)->tp_name);
-        return NULL;
-    }
-    result = tailmatch(self, substring, start, end, +1);
-    Py_DECREF(substring);
-    return PyBool_FromLong(result);
-}
-
-
-/* Implements do_string_format, which is unicode because of stringlib */
-#include "stringlib/string_format.h"
-
-PyDoc_STRVAR(format__doc__,
-             "S.format(*args, **kwargs) -> unicode\n\
-\n\
-Return a formatted version of S, using substitutions from args and kwargs.\n\
-The substitutions are identified by braces ('{' and '}').");
-
-static PyObject *
-unicode__format__(PyObject *self, PyObject *args)
-{
-    PyObject *format_spec;
-    PyObject *result = NULL;
-    PyObject *tmp = NULL;
-
-    /* If 2.x, convert format_spec to the same type as value */
-    /* This is to allow things like u''.format('') */
-    if (!PyArg_ParseTuple(args, "O:__format__", &format_spec))
-        goto done;
-    if (!(PyBytes_Check(format_spec) || PyUnicode_Check(format_spec))) {
-        PyErr_Format(PyExc_TypeError, "__format__ arg must be str "
-                     "or unicode, not %s", Py_TYPE(format_spec)->tp_name);
-        goto done;
-    }
-    tmp = PyObject_Unicode(format_spec);
-    if (tmp == NULL)
-        goto done;
-    format_spec = tmp;
-
-    result = _PyUnicode_FormatAdvanced(self,
-                                       PyUnicode_AS_UNICODE(format_spec),
-                                       PyUnicode_GET_SIZE(format_spec));
-  done:
-    Py_XDECREF(tmp);
-    return result;
-}
-
-PyDoc_STRVAR(p_format__doc__,
-             "S.__format__(format_spec) -> unicode\n\
-\n\
-Return a formatted version of S as described by format_spec.");
-
-static PyObject *
-unicode__sizeof__(PyUnicodeObject *v)
-{
-    return PyInt_FromSsize_t(sizeof(PyUnicodeObject) +
-                             sizeof(Py_UNICODE) * (v->length + 1));
-}
-
-PyDoc_STRVAR(sizeof__doc__,
-             "S.__sizeof__() -> size of S in memory, in bytes\n\
-\n\
-");
-
-static PyObject *
-unicode_getnewargs(PyUnicodeObject *v)
-{
-    return Py_BuildValue("(u#)", v->str, v->length);
-}
-
-
-static PyMethodDef unicode_methods[] = {
-
-    /* Order is according to common usage: often used methods should
-       appear first, since lookup is done sequentially. */
-
-    {"encode", (PyCFunction) unicode_encode, METH_VARARGS | METH_KEYWORDS, encode__doc__},
-    {"replace", (PyCFunction) unicode_replace, METH_VARARGS, replace__doc__},
-    {"split", (PyCFunction) unicode_split, METH_VARARGS, split__doc__},
-    {"rsplit", (PyCFunction) unicode_rsplit, METH_VARARGS, rsplit__doc__},
-    {"join", (PyCFunction) unicode_join, METH_O, join__doc__},
-    {"capitalize", (PyCFunction) unicode_capitalize, METH_NOARGS, capitalize__doc__},
-    {"title", (PyCFunction) unicode_title, METH_NOARGS, title__doc__},
-    {"center", (PyCFunction) unicode_center, METH_VARARGS, center__doc__},
-    {"count", (PyCFunction) unicode_count, METH_VARARGS, count__doc__},
-    {"expandtabs", (PyCFunction) unicode_expandtabs, METH_VARARGS, expandtabs__doc__},
-    {"find", (PyCFunction) unicode_find, METH_VARARGS, find__doc__},
-    {"partition", (PyCFunction) unicode_partition, METH_O, partition__doc__},
-    {"index", (PyCFunction) unicode_index, METH_VARARGS, index__doc__},
-    {"ljust", (PyCFunction) unicode_ljust, METH_VARARGS, ljust__doc__},
-    {"lower", (PyCFunction) unicode_lower, METH_NOARGS, lower__doc__},
-    {"lstrip", (PyCFunction) unicode_lstrip, METH_VARARGS, lstrip__doc__},
-    {"decode", (PyCFunction) unicode_decode, METH_VARARGS | METH_KEYWORDS, decode__doc__},
-/*  {"maketrans", (PyCFunction) unicode_maketrans, METH_VARARGS, maketrans__doc__}, */
-    {"rfind", (PyCFunction) unicode_rfind, METH_VARARGS, rfind__doc__},
-    {"rindex", (PyCFunction) unicode_rindex, METH_VARARGS, rindex__doc__},
-    {"rjust", (PyCFunction) unicode_rjust, METH_VARARGS, rjust__doc__},
-    {"rstrip", (PyCFunction) unicode_rstrip, METH_VARARGS, rstrip__doc__},
-    {"rpartition", (PyCFunction) unicode_rpartition, METH_O, rpartition__doc__},
-    {"splitlines", (PyCFunction) unicode_splitlines, METH_VARARGS, splitlines__doc__},
-    {"strip", (PyCFunction) unicode_strip, METH_VARARGS, strip__doc__},
-    {"swapcase", (PyCFunction) unicode_swapcase, METH_NOARGS, swapcase__doc__},
-    {"translate", (PyCFunction) unicode_translate, METH_O, translate__doc__},
-    {"upper", (PyCFunction) unicode_upper, METH_NOARGS, upper__doc__},
-    {"startswith", (PyCFunction) unicode_startswith, METH_VARARGS, startswith__doc__},
-    {"endswith", (PyCFunction) unicode_endswith, METH_VARARGS, endswith__doc__},
-    {"islower", (PyCFunction) unicode_islower, METH_NOARGS, islower__doc__},
-    {"isupper", (PyCFunction) unicode_isupper, METH_NOARGS, isupper__doc__},
-    {"istitle", (PyCFunction) unicode_istitle, METH_NOARGS, istitle__doc__},
-    {"isspace", (PyCFunction) unicode_isspace, METH_NOARGS, isspace__doc__},
-    {"isdecimal", (PyCFunction) unicode_isdecimal, METH_NOARGS, isdecimal__doc__},
-    {"isdigit", (PyCFunction) unicode_isdigit, METH_NOARGS, isdigit__doc__},
-    {"isnumeric", (PyCFunction) unicode_isnumeric, METH_NOARGS, isnumeric__doc__},
-    {"isalpha", (PyCFunction) unicode_isalpha, METH_NOARGS, isalpha__doc__},
-    {"isalnum", (PyCFunction) unicode_isalnum, METH_NOARGS, isalnum__doc__},
-    {"zfill", (PyCFunction) unicode_zfill, METH_VARARGS, zfill__doc__},
-    {"format", (PyCFunction) do_string_format, METH_VARARGS | METH_KEYWORDS, format__doc__},
-    {"__format__", (PyCFunction) unicode__format__, METH_VARARGS, p_format__doc__},
-    {"_formatter_field_name_split", (PyCFunction) formatter_field_name_split, METH_NOARGS},
-    {"_formatter_parser", (PyCFunction) formatter_parser, METH_NOARGS},
-    {"__sizeof__", (PyCFunction) unicode__sizeof__, METH_NOARGS, sizeof__doc__},
-#if 0
-    {"capwords", (PyCFunction) unicode_capwords, METH_NOARGS, capwords__doc__},
-#endif
-
-#if 0
-    /* This one is just used for debugging the implementation. */
-    {"freelistsize", (PyCFunction) free_listsize, METH_NOARGS},
-#endif
-
-    {"__getnewargs__",  (PyCFunction)unicode_getnewargs, METH_NOARGS},
-    {NULL, NULL}
-};
-
-static PyObject *
-unicode_mod(PyObject *v, PyObject *w)
-{
-    if (!PyUnicode_Check(v)) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    return PyUnicode_Format(v, w);
-}
-
-static PyNumberMethods unicode_as_number = {
-    0,              /*nb_add*/
-    0,              /*nb_subtract*/
-    0,              /*nb_multiply*/
-    0,              /*nb_divide*/
-    unicode_mod,            /*nb_remainder*/
-};
-
-static PySequenceMethods unicode_as_sequence = {
-    (lenfunc) unicode_length,       /* sq_length */
-    PyUnicode_Concat,           /* sq_concat */
-    (ssizeargfunc) unicode_repeat,  /* sq_repeat */
-    (ssizeargfunc) unicode_getitem,     /* sq_item */
-    (ssizessizeargfunc) unicode_slice,  /* sq_slice */
-    0,                  /* sq_ass_item */
-    0,                  /* sq_ass_slice */
-    PyUnicode_Contains,         /* sq_contains */
-};
-
-static PyObject*
-unicode_subscript(PyUnicodeObject* self, PyObject* item)
-{
-    if (PyIndex_Check(item)) {
-        Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
-        if (i == -1 && PyErr_Occurred())
-            return NULL;
-        if (i < 0)
-            i += PyUnicode_GET_SIZE(self);
-        return unicode_getitem(self, i);
-    } else if (PySlice_Check(item)) {
-        Py_ssize_t start, stop, step, slicelength, cur, i;
-        Py_UNICODE* source_buf;
-        Py_UNICODE* result_buf;
-        PyObject* result;
-
-        if (PySlice_GetIndicesEx((PySliceObject*)item, PyUnicode_GET_SIZE(self),
-                                 &start, &stop, &step, &slicelength) < 0) {
-            return NULL;
-        }
-
-        if (slicelength <= 0) {
-            return PyUnicode_FromUnicode(NULL, 0);
-        } else if (start == 0 && step == 1 && slicelength == self->length &&
-                   PyUnicode_CheckExact(self)) {
-            Py_INCREF(self);
-            return (PyObject *)self;
-        } else if (step == 1) {
-            return PyUnicode_FromUnicode(self->str + start, slicelength);
-        } else {
-            source_buf = PyUnicode_AS_UNICODE((PyObject*)self);
-            result_buf = (Py_UNICODE *)PyObject_MALLOC(slicelength*
-                                                       sizeof(Py_UNICODE));
-
-            if (result_buf == NULL)
-                return PyErr_NoMemory();
-
-            for (cur = start, i = 0; i < slicelength; cur += step, i++) {
-                result_buf[i] = source_buf[cur];
-            }
-
-            result = PyUnicode_FromUnicode(result_buf, slicelength);
-            PyObject_FREE(result_buf);
-            return result;
-        }
-    } else {
-        PyErr_SetString(PyExc_TypeError, "string indices must be integers");
-        return NULL;
-    }
-}
-
-static PyMappingMethods unicode_as_mapping = {
-    (lenfunc)unicode_length,        /* mp_length */
-    (binaryfunc)unicode_subscript,  /* mp_subscript */
-    (objobjargproc)0,           /* mp_ass_subscript */
-};
-
-static Py_ssize_t
-unicode_buffer_getreadbuf(PyUnicodeObject *self,
-                          Py_ssize_t index,
-                          const void **ptr)
-{
-    if (index != 0) {
-        PyErr_SetString(PyExc_SystemError,
-                        "accessing non-existent unicode segment");
-        return -1;
-    }
-    *ptr = (void *) self->str;
-    return PyUnicode_GET_DATA_SIZE(self);
-}
-
-static Py_ssize_t
-unicode_buffer_getwritebuf(PyUnicodeObject *self, Py_ssize_t index,
-                           const void **ptr)
-{
-    PyErr_SetString(PyExc_TypeError,
-                    "cannot use unicode as modifiable buffer");
-    return -1;
-}
-
-static int
-unicode_buffer_getsegcount(PyUnicodeObject *self,
-                           Py_ssize_t *lenp)
-{
-    if (lenp)
-        *lenp = PyUnicode_GET_DATA_SIZE(self);
-    return 1;
-}
-
-static Py_ssize_t
-unicode_buffer_getcharbuf(PyUnicodeObject *self,
-                          Py_ssize_t index,
-                          const void **ptr)
-{
-    PyObject *str;
-
-    if (index != 0) {
-        PyErr_SetString(PyExc_SystemError,
-                        "accessing non-existent unicode segment");
-        return -1;
-    }
-    str = _PyUnicode_AsDefaultEncodedString((PyObject *)self, NULL);
-    if (str == NULL)
-        return -1;
-    *ptr = (void *) PyString_AS_STRING(str);
-    return PyString_GET_SIZE(str);
-}
-
-/* Helpers for PyUnicode_Format() */
-
-static PyObject *
-getnextarg(PyObject *args, Py_ssize_t arglen, Py_ssize_t *p_argidx)
-{
-    Py_ssize_t argidx = *p_argidx;
-    if (argidx < arglen) {
-        (*p_argidx)++;
-        if (arglen < 0)
-            return args;
-        else
-            return PyTuple_GetItem(args, argidx);
-    }
-    PyErr_SetString(PyExc_TypeError,
-                    "not enough arguments for format string");
-    return NULL;
-}
-
-#define F_LJUST (1<<0)
-#define F_SIGN  (1<<1)
-#define F_BLANK (1<<2)
-#define F_ALT   (1<<3)
-#define F_ZERO  (1<<4)
-
-static Py_ssize_t
-strtounicode(Py_UNICODE *buffer, const char *charbuffer)
-{
-    register Py_ssize_t i;
-    Py_ssize_t len = strlen(charbuffer);
-    for (i = len - 1; i >= 0; i--)
-        buffer[i] = (Py_UNICODE) charbuffer[i];
-
-    return len;
-}
-
-static int
-longtounicode(Py_UNICODE *buffer, size_t len, const char *format, long x)
-{
-    Py_ssize_t result;
-
-    PyOS_snprintf((char *)buffer, len, format, x);
-    result = strtounicode(buffer, (char *)buffer);
-    return Py_SAFE_DOWNCAST(result, Py_ssize_t, int);
-}
-
-/* XXX To save some code duplication, formatfloat/long/int could have been
-   shared with stringobject.c, converting from 8-bit to Unicode after the
-   formatting is done. */
-
-/* Returns a new reference to a PyUnicode object, or NULL on failure. */
-
-static PyObject *
-formatfloat(PyObject *v, int flags, int prec, int type)
-{
-    char *p;
-    PyObject *result;
-    double x;
-
-    x = PyFloat_AsDouble(v);
-    if (x == -1.0 && PyErr_Occurred())
-        return NULL;
-
-    if (prec < 0)
-        prec = 6;
-
-    p = PyOS_double_to_string(x, type, prec,
-                              (flags & F_ALT) ? Py_DTSF_ALT : 0, NULL);
-    if (p == NULL)
-        return NULL;
-    result = PyUnicode_FromStringAndSize(p, strlen(p));
-    PyMem_Free(p);
-    return result;
-}
-
-static PyObject*
-formatlong(PyObject *val, int flags, int prec, int type)
-{
-    char *buf;
-    int i, len;
-    PyObject *str; /* temporary string object. */
-    PyUnicodeObject *result;
-
-    str = _PyString_FormatLong(val, flags, prec, type, &buf, &len);
-    if (!str)
-        return NULL;
-    result = _PyUnicode_New(len);
-    if (!result) {
-        Py_DECREF(str);
-        return NULL;
-    }
-    for (i = 0; i < len; i++)
-        result->str[i] = buf[i];
-    result->str[len] = 0;
-    Py_DECREF(str);
-    return (PyObject*)result;
-}
-
-static int
-formatint(Py_UNICODE *buf,
-          size_t buflen,
-          int flags,
-          int prec,
-          int type,
-          PyObject *v)
-{
-    /* fmt = '%#.' + `prec` + 'l' + `type`
-     * worst case length = 3 + 19 (worst len of INT_MAX on 64-bit machine)
-     *                     + 1 + 1
-     *                   = 24
-     */
-    char fmt[64]; /* plenty big enough! */
-    char *sign;
-    long x;
-
-    x = PyInt_AsLong(v);
-    if (x == -1 && PyErr_Occurred())
-        return -1;
-    if (x < 0 && type == 'u') {
-        type = 'd';
-    }
-    if (x < 0 && (type == 'x' || type == 'X' || type == 'o'))
-        sign = "-";
-    else
-        sign = "";
-    if (prec < 0)
-        prec = 1;
-
-    /* buf = '+'/'-'/'' + '0'/'0x'/'' + '[0-9]'*max(prec, len(x in octal))
-     * worst case buf = '-0x' + [0-9]*prec, where prec >= 11
-     */
-    if (buflen <= 14 || buflen <= (size_t)3 + (size_t)prec) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "formatted integer is too long (precision too large?)");
-        return -1;
-    }
-
-    if ((flags & F_ALT) &&
-        (type == 'x' || type == 'X')) {
-        /* When converting under %#x or %#X, there are a number
-         * of issues that cause pain:
-         * - when 0 is being converted, the C standard leaves off
-         *   the '0x' or '0X', which is inconsistent with other
-         *   %#x/%#X conversions and inconsistent with Python's
-         *   hex() function
-         * - there are platforms that violate the standard and
-         *   convert 0 with the '0x' or '0X'
-         *   (Metrowerks, Compaq Tru64)
-         * - there are platforms that give '0x' when converting
-         *   under %#X, but convert 0 in accordance with the
-         *   standard (OS/2 EMX)
-         *
-         * We can achieve the desired consistency by inserting our
-         * own '0x' or '0X' prefix, and substituting %x/%X in place
-         * of %#x/%#X.
-         *
-         * Note that this is the same approach as used in
-         * formatint() in stringobject.c
-         */
-        PyOS_snprintf(fmt, sizeof(fmt), "%s0%c%%.%dl%c",
-                      sign, type, prec, type);
-    }
-    else {
-        PyOS_snprintf(fmt, sizeof(fmt), "%s%%%s.%dl%c",
-                      sign, (flags&F_ALT) ? "#" : "",
-                      prec, type);
-    }
-    if (sign[0])
-        return longtounicode(buf, buflen, fmt, -x);
-    else
-        return longtounicode(buf, buflen, fmt, x);
-}
-
-static int
-formatchar(Py_UNICODE *buf,
-           size_t buflen,
-           PyObject *v)
-{
-    PyObject *unistr;
-    char *str;
-    /* presume that the buffer is at least 2 characters long */
-    if (PyUnicode_Check(v)) {
-        if (PyUnicode_GET_SIZE(v) != 1)
-            goto onError;
-        buf[0] = PyUnicode_AS_UNICODE(v)[0];
-    }
-
-    else if (PyString_Check(v)) {
-        if (PyString_GET_SIZE(v) != 1)
-            goto onError;
-        /* #7649: "u'%c' % char" should behave like "u'%s' % char" and fail
-           with a UnicodeDecodeError if 'char' is not decodable with the
-           default encoding (usually ASCII, but it might be something else) */
-        str = PyString_AS_STRING(v);
-        if ((unsigned char)str[0] > 0x7F) {
-            /* the char is not ASCII; try to decode the string using the
-               default encoding and return -1 to let the UnicodeDecodeError
-               be raised if the string can't be decoded */
-            unistr = PyUnicode_Decode(str, 1, NULL, "strict");
-            if (unistr == NULL)
-                return -1;
-            buf[0] = PyUnicode_AS_UNICODE(unistr)[0];
-            Py_DECREF(unistr);
-        }
-        else
-            buf[0] = (Py_UNICODE)str[0];
-    }
-
-    else {
-        /* Integer input truncated to a character */
-        long x;
-        x = PyInt_AsLong(v);
-        if (x == -1 && PyErr_Occurred())
-            goto onError;
-#ifdef Py_UNICODE_WIDE
-        if (x < 0 || x > 0x10ffff) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "%c arg not in range(0x110000) "
-                            "(wide Python build)");
-            return -1;
-        }
-#else
-        if (x < 0 || x > 0xffff) {
-            PyErr_SetString(PyExc_OverflowError,
-                            "%c arg not in range(0x10000) "
-                            "(narrow Python build)");
-            return -1;
-        }
-#endif
-        buf[0] = (Py_UNICODE) x;
-    }
-    buf[1] = '\0';
-    return 1;
-
-  onError:
-    PyErr_SetString(PyExc_TypeError,
-                    "%c requires int or char");
-    return -1;
-}
-
-/* fmt%(v1,v2,...) is roughly equivalent to sprintf(fmt, v1, v2, ...)
-
-   FORMATBUFLEN is the length of the buffer in which the ints &
-   chars are formatted. XXX This is a magic number. Each formatting
-   routine does bounds checking to ensure no overflow, but a better
-   solution may be to malloc a buffer of appropriate size for each
-   format. For now, the current solution is sufficient.
-*/
-#define FORMATBUFLEN (size_t)120
-
-PyObject *PyUnicode_Format(PyObject *format,
-                           PyObject *args)
-{
-    Py_UNICODE *fmt, *res;
-    Py_ssize_t fmtcnt, rescnt, reslen, arglen, argidx;
-    int args_owned = 0;
-    PyUnicodeObject *result = NULL;
-    PyObject *dict = NULL;
-    PyObject *uformat;
-
-    if (format == NULL || args == NULL) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    uformat = PyUnicode_FromObject(format);
-    if (uformat == NULL)
-        return NULL;
-    fmt = PyUnicode_AS_UNICODE(uformat);
-    fmtcnt = PyUnicode_GET_SIZE(uformat);
-
-    reslen = rescnt = fmtcnt + 100;
-    result = _PyUnicode_New(reslen);
-    if (result == NULL)
-        goto onError;
-    res = PyUnicode_AS_UNICODE(result);
-
-    if (PyTuple_Check(args)) {
-        arglen = PyTuple_Size(args);
-        argidx = 0;
-    }
-    else {
-        arglen = -1;
-        argidx = -2;
-    }
-    if (Py_TYPE(args)->tp_as_mapping && !PyTuple_Check(args) &&
-        !PyObject_TypeCheck(args, &PyBaseString_Type))
-        dict = args;
-
-    while (--fmtcnt >= 0) {
-        if (*fmt != '%') {
-            if (--rescnt < 0) {
-                rescnt = fmtcnt + 100;
-                reslen += rescnt;
-                if (_PyUnicode_Resize(&result, reslen) < 0)
-                    goto onError;
-                res = PyUnicode_AS_UNICODE(result) + reslen - rescnt;
-                --rescnt;
-            }
-            *res++ = *fmt++;
-        }
-        else {
-            /* Got a format specifier */
-            int flags = 0;
-            Py_ssize_t width = -1;
-            int prec = -1;
-            Py_UNICODE c = '\0';
-            Py_UNICODE fill;
-            int isnumok;
-            PyObject *v       = NULL;
-            PyObject *temp    = NULL;
-            Py_UNICODE *pbuf  = NULL;
-            Py_UNICODE sign;
-            Py_ssize_t len;
-            Py_UNICODE formatbuf[FORMATBUFLEN]; /* For format{int,char}() */
-
-            fmt++;
-            if (*fmt == '(') {
-                Py_UNICODE *keystart;
-                Py_ssize_t keylen;
-                PyObject *key;
-                int pcount = 1;
-
-                if (dict == NULL) {
-                    PyErr_SetString(PyExc_TypeError,
-                                    "format requires a mapping");
-                    goto onError;
-                }
-                ++fmt;
-                --fmtcnt;
-                keystart = fmt;
-                /* Skip over balanced parentheses */
-                while (pcount > 0 && --fmtcnt >= 0) {
-                    if (*fmt == ')')
-                        --pcount;
-                    else if (*fmt == '(')
-                        ++pcount;
-                    fmt++;
-                }
-                keylen = fmt - keystart - 1;
-                if (fmtcnt < 0 || pcount > 0) {
-                    PyErr_SetString(PyExc_ValueError,
-                                    "incomplete format key");
-                    goto onError;
-                }
-#if 0
-                /* keys are converted to strings using UTF-8 and
-                   then looked up since Python uses strings to hold
-                   variables names etc. in its namespaces and we
-                   wouldn't want to break common idioms. */
-                key = PyUnicode_EncodeUTF8(keystart,
-                                           keylen,
-                                           NULL);
-#else
-                key = PyUnicode_FromUnicode(keystart, keylen);
-#endif
-                if (key == NULL)
-                    goto onError;
-                if (args_owned) {
-                    Py_DECREF(args);
-                    args_owned = 0;
-                }
-                args = PyObject_GetItem(dict, key);
-                Py_DECREF(key);
-                if (args == NULL) {
-                    goto onError;
-                }
-                args_owned = 1;
-                arglen = -1;
-                argidx = -2;
-            }
-            while (--fmtcnt >= 0) {
-                switch (c = *fmt++) {
-                case '-': flags |= F_LJUST; continue;
-                case '+': flags |= F_SIGN; continue;
-                case ' ': flags |= F_BLANK; continue;
-                case '#': flags |= F_ALT; continue;
-                case '0': flags |= F_ZERO; continue;
-                }
-                break;
-            }
-            if (c == '*') {
-                v = getnextarg(args, arglen, &argidx);
-                if (v == NULL)
-                    goto onError;
-                if (!PyInt_Check(v)) {
-                    PyErr_SetString(PyExc_TypeError,
-                                    "* wants int");
-                    goto onError;
-                }
-                width = PyInt_AsLong(v);
-                if (width < 0) {
-                    flags |= F_LJUST;
-                    width = -width;
-                }
-                if (--fmtcnt >= 0)
-                    c = *fmt++;
-            }
-            else if (c >= '0' && c <= '9') {
-                width = c - '0';
-                while (--fmtcnt >= 0) {
-                    c = *fmt++;
-                    if (c < '0' || c > '9')
-                        break;
-                    if ((width*10) / 10 != width) {
-                        PyErr_SetString(PyExc_ValueError,
-                                        "width too big");
-                        goto onError;
-                    }
-                    width = width*10 + (c - '0');
-                }
-            }
-            if (c == '.') {
-                prec = 0;
-                if (--fmtcnt >= 0)
-                    c = *fmt++;
-                if (c == '*') {
-                    v = getnextarg(args, arglen, &argidx);
-                    if (v == NULL)
-                        goto onError;
-                    if (!PyInt_Check(v)) {
-                        PyErr_SetString(PyExc_TypeError,
-                                        "* wants int");
-                        goto onError;
-                    }
-                    prec = PyInt_AsLong(v);
-                    if (prec < 0)
-                        prec = 0;
-                    if (--fmtcnt >= 0)
-                        c = *fmt++;
-                }
-                else if (c >= '0' && c <= '9') {
-                    prec = c - '0';
-                    while (--fmtcnt >= 0) {
-                        c = *fmt++;
-                        if (c < '0' || c > '9')
-                            break;
-                        if ((prec*10) / 10 != prec) {
-                            PyErr_SetString(PyExc_ValueError,
-                                            "prec too big");
-                            goto onError;
-                        }
-                        prec = prec*10 + (c - '0');
-                    }
-                }
-            } /* prec */
-            if (fmtcnt >= 0) {
-                if (c == 'h' || c == 'l' || c == 'L') {
-                    if (--fmtcnt >= 0)
-                        c = *fmt++;
-                }
-            }
-            if (fmtcnt < 0) {
-                PyErr_SetString(PyExc_ValueError,
-                                "incomplete format");
-                goto onError;
-            }
-            if (c != '%') {
-                v = getnextarg(args, arglen, &argidx);
-                if (v == NULL)
-                    goto onError;
-            }
-            sign = 0;
-            fill = ' ';
-            switch (c) {
-
-            case '%':
-                pbuf = formatbuf;
-                /* presume that buffer length is at least 1 */
-                pbuf[0] = '%';
-                len = 1;
-                break;
-
-            case 's':
-            case 'r':
-                if (PyUnicode_CheckExact(v) && c == 's') {
-                    temp = v;
-                    Py_INCREF(temp);
-                }
-                else {
-                    PyObject *unicode;
-                    if (c == 's')
-                        temp = PyObject_Unicode(v);
-                    else
-                        temp = PyObject_Repr(v);
-                    if (temp == NULL)
-                        goto onError;
-                    if (PyUnicode_Check(temp))
-                        /* nothing to do */;
-                    else if (PyString_Check(temp)) {
-                        /* convert to string to Unicode */
-                        unicode = PyUnicode_Decode(PyString_AS_STRING(temp),
-                                                   PyString_GET_SIZE(temp),
-                                                   NULL,
-                                                   "strict");
-                        Py_DECREF(temp);
-                        temp = unicode;
-                        if (temp == NULL)
-                            goto onError;
-                    }
-                    else {
-                        Py_DECREF(temp);
-                        PyErr_SetString(PyExc_TypeError,
-                                        "%s argument has non-string str()");
-                        goto onError;
-                    }
-                }
-                pbuf = PyUnicode_AS_UNICODE(temp);
-                len = PyUnicode_GET_SIZE(temp);
-                if (prec >= 0 && len > prec)
-                    len = prec;
-                break;
-
-            case 'i':
-            case 'd':
-            case 'u':
-            case 'o':
-            case 'x':
-            case 'X':
-                if (c == 'i')
-                    c = 'd';
-                isnumok = 0;
-                if (PyNumber_Check(v)) {
-                    PyObject *iobj=NULL;
-
-                    if (PyInt_Check(v) || (PyLong_Check(v))) {
-                        iobj = v;
-                        Py_INCREF(iobj);
-                    }
-                    else {
-                        iobj = PyNumber_Int(v);
-                        if (iobj==NULL) iobj = PyNumber_Long(v);
-                    }
-                    if (iobj!=NULL) {
-                        if (PyInt_Check(iobj)) {
-                            isnumok = 1;
-                            pbuf = formatbuf;
-                            len = formatint(pbuf, sizeof(formatbuf)/sizeof(Py_UNICODE),
-                                            flags, prec, c, iobj);
-                            Py_DECREF(iobj);
-                            if (len < 0)
-                                goto onError;
-                            sign = 1;
-                        }
-                        else if (PyLong_Check(iobj)) {
-                            isnumok = 1;
-                            temp = formatlong(iobj, flags, prec, c);
-                            Py_DECREF(iobj);
-                            if (!temp)
-                                goto onError;
-                            pbuf = PyUnicode_AS_UNICODE(temp);
-                            len = PyUnicode_GET_SIZE(temp);
-                            sign = 1;
-                        }
-                        else {
-                            Py_DECREF(iobj);
-                        }
-                    }
-                }
-                if (!isnumok) {
-                    PyErr_Format(PyExc_TypeError,
-                                 "%%%c format: a number is required, "
-                                 "not %.200s", (char)c, Py_TYPE(v)->tp_name);
-                    goto onError;
-                }
-                if (flags & F_ZERO)
-                    fill = '0';
-                break;
-
-            case 'e':
-            case 'E':
-            case 'f':
-            case 'F':
-            case 'g':
-            case 'G':
-                temp = formatfloat(v, flags, prec, c);
-                if (temp == NULL)
-                    goto onError;
-                pbuf = PyUnicode_AS_UNICODE(temp);
-                len = PyUnicode_GET_SIZE(temp);
-                sign = 1;
-                if (flags & F_ZERO)
-                    fill = '0';
-                break;
-
-            case 'c':
-                pbuf = formatbuf;
-                len = formatchar(pbuf, sizeof(formatbuf)/sizeof(Py_UNICODE), v);
-                if (len < 0)
-                    goto onError;
-                break;
-
-            default:
-                PyErr_Format(PyExc_ValueError,
-                             "unsupported format character '%c' (0x%x) "
-                             "at index %zd",
-                             (31<=c && c<=126) ? (char)c : '?',
-                             (int)c,
-                             (Py_ssize_t)(fmt - 1 -
-                                          PyUnicode_AS_UNICODE(uformat)));
-                goto onError;
-            }
-            if (sign) {
-                if (*pbuf == '-' || *pbuf == '+') {
-                    sign = *pbuf++;
-                    len--;
-                }
-                else if (flags & F_SIGN)
-                    sign = '+';
-                else if (flags & F_BLANK)
-                    sign = ' ';
-                else
-                    sign = 0;
-            }
-            if (width < len)
-                width = len;
-            if (rescnt - (sign != 0) < width) {
-                reslen -= rescnt;
-                rescnt = width + fmtcnt + 100;
-                reslen += rescnt;
-                if (reslen < 0) {
-                    Py_XDECREF(temp);
-                    PyErr_NoMemory();
-                    goto onError;
-                }
-                if (_PyUnicode_Resize(&result, reslen) < 0) {
-                    Py_XDECREF(temp);
-                    goto onError;
-                }
-                res = PyUnicode_AS_UNICODE(result)
-                    + reslen - rescnt;
-            }
-            if (sign) {
-                if (fill != ' ')
-                    *res++ = sign;
-                rescnt--;
-                if (width > len)
-                    width--;
-            }
-            if ((flags & F_ALT) && (c == 'x' || c == 'X')) {
-                assert(pbuf[0] == '0');
-                assert(pbuf[1] == c);
-                if (fill != ' ') {
-                    *res++ = *pbuf++;
-                    *res++ = *pbuf++;
-                }
-                rescnt -= 2;
-                width -= 2;
-                if (width < 0)
-                    width = 0;
-                len -= 2;
-            }
-            if (width > len && !(flags & F_LJUST)) {
-                do {
-                    --rescnt;
-                    *res++ = fill;
-                } while (--width > len);
-            }
-            if (fill == ' ') {
-                if (sign)
-                    *res++ = sign;
-                if ((flags & F_ALT) && (c == 'x' || c == 'X')) {
-                    assert(pbuf[0] == '0');
-                    assert(pbuf[1] == c);
-                    *res++ = *pbuf++;
-                    *res++ = *pbuf++;
-                }
-            }
-            Py_UNICODE_COPY(res, pbuf, len);
-            res += len;
-            rescnt -= len;
-            while (--width >= len) {
-                --rescnt;
-                *res++ = ' ';
-            }
-            if (dict && (argidx < arglen) && c != '%') {
-                PyErr_SetString(PyExc_TypeError,
-                                "not all arguments converted during string formatting");
-                Py_XDECREF(temp);
-                goto onError;
-            }
-            Py_XDECREF(temp);
-        } /* '%' */
-    } /* until end */
-    if (argidx < arglen && !dict) {
-        PyErr_SetString(PyExc_TypeError,
-                        "not all arguments converted during string formatting");
-        goto onError;
-    }
-
-    if (_PyUnicode_Resize(&result, reslen - rescnt) < 0)
-        goto onError;
-    if (args_owned) {
-        Py_DECREF(args);
-    }
-    Py_DECREF(uformat);
-    return (PyObject *)result;
-
-  onError:
-    Py_XDECREF(result);
-    Py_DECREF(uformat);
-    if (args_owned) {
-        Py_DECREF(args);
-    }
-    return NULL;
-}
-
-static PyBufferProcs unicode_as_buffer = {
-    (readbufferproc) unicode_buffer_getreadbuf,
-    (writebufferproc) unicode_buffer_getwritebuf,
-    (segcountproc) unicode_buffer_getsegcount,
-    (charbufferproc) unicode_buffer_getcharbuf,
-};
-
-static PyObject *
-unicode_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
-
-static PyObject *
-unicode_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyObject *x = NULL;
-    static char *kwlist[] = {"string", "encoding", "errors", 0};
-    char *encoding = NULL;
-    char *errors = NULL;
-
-    if (type != &PyUnicode_Type)
-        return unicode_subtype_new(type, args, kwds);
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|Oss:unicode",
-                                     kwlist, &x, &encoding, &errors))
-        return NULL;
-    if (x == NULL)
-        return (PyObject *)_PyUnicode_New(0);
-    if (encoding == NULL && errors == NULL)
-        return PyObject_Unicode(x);
-    else
-        return PyUnicode_FromEncodedObject(x, encoding, errors);
-}
-
-static PyObject *
-unicode_subtype_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
-{
-    PyUnicodeObject *tmp, *pnew;
-    Py_ssize_t n;
-
-    assert(PyType_IsSubtype(type, &PyUnicode_Type));
-    tmp = (PyUnicodeObject *)unicode_new(&PyUnicode_Type, args, kwds);
-    if (tmp == NULL)
-        return NULL;
-    assert(PyUnicode_Check(tmp));
-    pnew = (PyUnicodeObject *) type->tp_alloc(type, n = tmp->length);
-    if (pnew == NULL) {
-        Py_DECREF(tmp);
-        return NULL;
-    }
-    pnew->str = (Py_UNICODE*) PyObject_MALLOC(sizeof(Py_UNICODE) * (n+1));
-    if (pnew->str == NULL) {
-        _Py_ForgetReference((PyObject *)pnew);
-        PyObject_Del(pnew);
-        Py_DECREF(tmp);
-        return PyErr_NoMemory();
-    }
-    Py_UNICODE_COPY(pnew->str, tmp->str, n+1);
-    pnew->length = n;
-    pnew->hash = tmp->hash;
-    Py_DECREF(tmp);
-    return (PyObject *)pnew;
-}
-
-PyDoc_STRVAR(unicode_doc,
-             "unicode(string [, encoding[, errors]]) -> object\n\
-\n\
-Create a new Unicode object from the given encoded string.\n\
-encoding defaults to the current default string encoding.\n\
-errors can be 'strict', 'replace' or 'ignore' and defaults to 'strict'.");
-
-PyTypeObject PyUnicode_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "unicode",              /* tp_name */
-    sizeof(PyUnicodeObject),        /* tp_size */
-    0,                  /* tp_itemsize */
-    /* Slots */
-    (destructor)unicode_dealloc,    /* tp_dealloc */
-    0,                  /* tp_print */
-    0,                  /* tp_getattr */
-    0,                  /* tp_setattr */
-    0,                  /* tp_compare */
-    unicode_repr,           /* tp_repr */
-    &unicode_as_number,         /* tp_as_number */
-    &unicode_as_sequence,       /* tp_as_sequence */
-    &unicode_as_mapping,        /* tp_as_mapping */
-    (hashfunc) unicode_hash,        /* tp_hash*/
-    0,                  /* tp_call*/
-    (reprfunc) unicode_str,     /* tp_str */
-    PyObject_GenericGetAttr,        /* tp_getattro */
-    0,                  /* tp_setattro */
-    &unicode_as_buffer,         /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES |
-    Py_TPFLAGS_BASETYPE | Py_TPFLAGS_UNICODE_SUBCLASS,  /* tp_flags */
-    unicode_doc,            /* tp_doc */
-    0,                  /* tp_traverse */
-    0,                  /* tp_clear */
-    PyUnicode_RichCompare,      /* tp_richcompare */
-    0,                  /* tp_weaklistoffset */
-    0,                  /* tp_iter */
-    0,                  /* tp_iternext */
-    unicode_methods,            /* tp_methods */
-    0,                  /* tp_members */
-    0,                  /* tp_getset */
-    &PyBaseString_Type,         /* tp_base */
-    0,                  /* tp_dict */
-    0,                  /* tp_descr_get */
-    0,                  /* tp_descr_set */
-    0,                  /* tp_dictoffset */
-    0,                  /* tp_init */
-    0,                  /* tp_alloc */
-    unicode_new,            /* tp_new */
-    PyObject_Del,           /* tp_free */
-};
-
-/* Initialize the Unicode implementation */
-
-void _PyUnicode_Init(void)
-{
-    int i;
-
-    /* XXX - move this array to unicodectype.c ? */
-    Py_UNICODE linebreak[] = {
-        0x000A, /* LINE FEED */
-        0x000D, /* CARRIAGE RETURN */
-        0x001C, /* FILE SEPARATOR */
-        0x001D, /* GROUP SEPARATOR */
-        0x001E, /* RECORD SEPARATOR */
-        0x0085, /* NEXT LINE */
-        0x2028, /* LINE SEPARATOR */
-        0x2029, /* PARAGRAPH SEPARATOR */
-    };
-
-    /* Init the implementation */
-    free_list = NULL;
-    numfree = 0;
-    unicode_empty = _PyUnicode_New(0);
-    if (!unicode_empty)
-        return;
-
-    strcpy(unicode_default_encoding, "ascii");
-    for (i = 0; i < 256; i++)
-        unicode_latin1[i] = NULL;
-    if (PyType_Ready(&PyUnicode_Type) < 0)
-        Py_FatalError("Can't initialize 'unicode'");
-
-    /* initialize the linebreak bloom filter */
-    bloom_linebreak = make_bloom_mask(
-        linebreak, sizeof(linebreak) / sizeof(linebreak[0])
-        );
-
-    PyType_Ready(&EncodingMapType);
-}
-
-/* Finalize the Unicode implementation */
-
-int
-PyUnicode_ClearFreeList(void)
-{
-    int freelist_size = numfree;
-    PyUnicodeObject *u;
-
-    for (u = free_list; u != NULL;) {
-        PyUnicodeObject *v = u;
-        u = *(PyUnicodeObject **)u;
-        if (v->str)
-            PyObject_DEL(v->str);
-        Py_XDECREF(v->defenc);
-        PyObject_Del(v);
-        numfree--;
-    }
-    free_list = NULL;
-    assert(numfree == 0);
-    return freelist_size;
-}
-
-void
-_PyUnicode_Fini(void)
-{
-    int i;
-
-    Py_XDECREF(unicode_empty);
-    unicode_empty = NULL;
-
-    for (i = 0; i < 256; i++) {
-        if (unicode_latin1[i]) {
-            Py_DECREF(unicode_latin1[i]);
-            unicode_latin1[i] = NULL;
-        }
-    }
-    (void)PyUnicode_ClearFreeList();
-}
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/unicodetype_db.h b/AppPkg/Applications/Python/Python-2.7.2/Objects/unicodetype_db.h
deleted file mode 100644
index 0423400..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/unicodetype_db.h
+++ /dev/null
@@ -1,3337 +0,0 @@
-/* this file was generated by Tools/unicode/makeunicodedata.py 2.6 */
-
-/* a list of unique character type descriptors */
-const _PyUnicode_TypeRecord _PyUnicode_TypeRecords[] = {
-    {0, 0, 0, 0, 0, 0},
-    {0, 0, 0, 0, 0, 0},
-    {0, 0, 0, 0, 0, 32},
-    {0, 0, 0, 0, 0, 48},
-    {0, 0, 0, 0, 0, 518},
-    {0, 0, 0, 1, 1, 518},
-    {0, 0, 0, 2, 2, 518},
-    {0, 0, 0, 3, 3, 518},
-    {0, 0, 0, 4, 4, 518},
-    {0, 0, 0, 5, 5, 518},
-    {0, 0, 0, 6, 6, 518},
-    {0, 0, 0, 7, 7, 518},
-    {0, 0, 0, 8, 8, 518},
-    {0, 0, 0, 9, 9, 518},
-    {0, 32, 0, 0, 0, 129},
-    {65504, 0, 65504, 0, 0, 9},
-    {0, 0, 0, 0, 0, 9},
-    {0, 0, 0, 0, 2, 516},
-    {0, 0, 0, 0, 3, 516},
-    {743, 0, 743, 0, 0, 9},
-    {0, 0, 0, 0, 1, 516},
-    {0, 0, 0, 0, 0, 512},
-    {121, 0, 121, 0, 0, 9},
-    {0, 1, 0, 0, 0, 129},
-    {65535, 0, 65535, 0, 0, 9},
-    {0, 65337, 0, 0, 0, 129},
-    {65304, 0, 65304, 0, 0, 9},
-    {0, 65415, 0, 0, 0, 129},
-    {65236, 0, 65236, 0, 0, 9},
-    {195, 0, 195, 0, 0, 9},
-    {0, 210, 0, 0, 0, 129},
-    {0, 206, 0, 0, 0, 129},
-    {0, 205, 0, 0, 0, 129},
-    {0, 79, 0, 0, 0, 129},
-    {0, 202, 0, 0, 0, 129},
-    {0, 203, 0, 0, 0, 129},
-    {0, 207, 0, 0, 0, 129},
-    {97, 0, 97, 0, 0, 9},
-    {0, 211, 0, 0, 0, 129},
-    {0, 209, 0, 0, 0, 129},
-    {163, 0, 163, 0, 0, 9},
-    {0, 213, 0, 0, 0, 129},
-    {130, 0, 130, 0, 0, 9},
-    {0, 214, 0, 0, 0, 129},
-    {0, 218, 0, 0, 0, 129},
-    {0, 217, 0, 0, 0, 129},
-    {0, 219, 0, 0, 0, 129},
-    {0, 0, 0, 0, 0, 1},
-    {56, 0, 56, 0, 0, 9},
-    {0, 2, 1, 0, 0, 129},
-    {65535, 1, 0, 0, 0, 65},
-    {65534, 0, 65535, 0, 0, 9},
-    {65457, 0, 65457, 0, 0, 9},
-    {0, 65439, 0, 0, 0, 129},
-    {0, 65480, 0, 0, 0, 129},
-    {0, 65406, 0, 0, 0, 129},
-    {0, 10795, 0, 0, 0, 129},
-    {0, 65373, 0, 0, 0, 129},
-    {0, 10792, 0, 0, 0, 129},
-    {10815, 0, 10815, 0, 0, 9},
-    {0, 65341, 0, 0, 0, 129},
-    {0, 69, 0, 0, 0, 129},
-    {0, 71, 0, 0, 0, 129},
-    {10783, 0, 10783, 0, 0, 9},
-    {10780, 0, 10780, 0, 0, 9},
-    {10782, 0, 10782, 0, 0, 9},
-    {65326, 0, 65326, 0, 0, 9},
-    {65330, 0, 65330, 0, 0, 9},
-    {65331, 0, 65331, 0, 0, 9},
-    {65334, 0, 65334, 0, 0, 9},
-    {65333, 0, 65333, 0, 0, 9},
-    {65329, 0, 65329, 0, 0, 9},
-    {65327, 0, 65327, 0, 0, 9},
-    {65325, 0, 65325, 0, 0, 9},
-    {10743, 0, 10743, 0, 0, 9},
-    {10749, 0, 10749, 0, 0, 9},
-    {65323, 0, 65323, 0, 0, 9},
-    {65322, 0, 65322, 0, 0, 9},
-    {10727, 0, 10727, 0, 0, 9},
-    {65318, 0, 65318, 0, 0, 9},
-    {65467, 0, 65467, 0, 0, 9},
-    {65319, 0, 65319, 0, 0, 9},
-    {65465, 0, 65465, 0, 0, 9},
-    {65317, 0, 65317, 0, 0, 9},
-    {84, 0, 84, 0, 0, 0},
-    {0, 38, 0, 0, 0, 129},
-    {0, 37, 0, 0, 0, 129},
-    {0, 64, 0, 0, 0, 129},
-    {0, 63, 0, 0, 0, 129},
-    {65498, 0, 65498, 0, 0, 9},
-    {65499, 0, 65499, 0, 0, 9},
-    {65505, 0, 65505, 0, 0, 9},
-    {65472, 0, 65472, 0, 0, 9},
-    {65473, 0, 65473, 0, 0, 9},
-    {0, 8, 0, 0, 0, 129},
-    {65474, 0, 65474, 0, 0, 9},
-    {65479, 0, 65479, 0, 0, 9},
-    {0, 0, 0, 0, 0, 129},
-    {65489, 0, 65489, 0, 0, 9},
-    {65482, 0, 65482, 0, 0, 9},
-    {65528, 0, 65528, 0, 0, 9},
-    {65450, 0, 65450, 0, 0, 9},
-    {65456, 0, 65456, 0, 0, 9},
-    {7, 0, 7, 0, 0, 9},
-    {0, 65476, 0, 0, 0, 129},
-    {65440, 0, 65440, 0, 0, 9},
-    {0, 65529, 0, 0, 0, 129},
-    {0, 80, 0, 0, 0, 129},
-    {0, 15, 0, 0, 0, 129},
-    {65521, 0, 65521, 0, 0, 9},
-    {0, 48, 0, 0, 0, 129},
-    {65488, 0, 65488, 0, 0, 9},
-    {0, 7264, 0, 0, 0, 129},
-    {0, 0, 0, 0, 4, 516},
-    {0, 0, 0, 0, 5, 516},
-    {0, 0, 0, 0, 6, 516},
-    {0, 0, 0, 0, 7, 516},
-    {0, 0, 0, 0, 8, 516},
-    {0, 0, 0, 0, 9, 516},
-    {42877, 7545, 42877, 0, 0, 265},
-    {3814, 0, 3814, 0, 0, 9},
-    {65477, 0, 65477, 0, 0, 9},
-    {0, 57921, 0, 0, 0, 129},
-    {8, 0, 8, 0, 0, 9},
-    {0, 65528, 0, 0, 0, 129},
-    {74, 0, 74, 0, 0, 9},
-    {86, 0, 86, 0, 0, 9},
-    {100, 0, 100, 0, 0, 9},
-    {128, 0, 128, 0, 0, 9},
-    {112, 0, 112, 0, 0, 9},
-    {126, 0, 126, 0, 0, 9},
-    {0, 65528, 0, 0, 0, 65},
-    {9, 0, 9, 0, 0, 9},
-    {0, 65462, 0, 0, 0, 129},
-    {0, 65527, 0, 0, 0, 65},
-    {58331, 0, 58331, 0, 0, 9},
-    {0, 65450, 0, 0, 0, 129},
-    {0, 65436, 0, 0, 0, 129},
-    {0, 65424, 0, 0, 0, 129},
-    {0, 65408, 0, 0, 0, 129},
-    {0, 65410, 0, 0, 0, 129},
-    {0, 0, 0, 0, 0, 516},
-    {0, 58019, 0, 0, 0, 129},
-    {0, 57153, 0, 0, 0, 129},
-    {0, 57274, 0, 0, 0, 129},
-    {0, 28, 0, 0, 0, 129},
-    {65508, 0, 65508, 0, 0, 9},
-    {0, 16, 0, 0, 0, 512},
-    {65520, 0, 65520, 0, 0, 512},
-    {0, 26, 0, 0, 0, 0},
-    {65510, 0, 65510, 0, 0, 0},
-    {0, 54793, 0, 0, 0, 129},
-    {0, 61722, 0, 0, 0, 129},
-    {0, 54809, 0, 0, 0, 129},
-    {54741, 0, 54741, 0, 0, 9},
-    {54744, 0, 54744, 0, 0, 9},
-    {0, 54756, 0, 0, 0, 129},
-    {0, 54787, 0, 0, 0, 129},
-    {0, 54753, 0, 0, 0, 129},
-    {0, 54754, 0, 0, 0, 129},
-    {0, 54721, 0, 0, 0, 129},
-    {58272, 0, 58272, 0, 0, 9},
-    {0, 0, 0, 0, 0, 513},
-    {42877, 7545, 42877, 0, 0, 385},
-    {0, 40, 0, 0, 0, 129},
-    {65496, 0, 65496, 0, 0, 9},
-};
-
-/* type indexes */
-#define SHIFT 7
-static unsigned char index1[] = {
-    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, 34, 35, 36, 37, 
-    38, 39, 34, 34, 34, 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, 64, 64, 65, 66, 67, 64, 
-    64, 64, 68, 69, 70, 64, 64, 64, 64, 64, 64, 71, 17, 72, 73, 74, 75, 76, 
-    77, 64, 78, 79, 80, 81, 82, 83, 84, 64, 64, 85, 86, 34, 34, 34, 34, 34, 
-    34, 87, 34, 34, 34, 34, 34, 88, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 89, 90, 91, 92, 34, 34, 34, 93, 34, 34, 
-    34, 94, 95, 34, 34, 34, 34, 34, 96, 34, 34, 34, 97, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 98, 99, 100, 34, 34, 34, 34, 34, 34, 101, 102, 34, 
-    34, 34, 34, 34, 34, 34, 34, 103, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 104, 34, 34, 34, 34, 34, 34, 34, 34, 105, 34, 34, 34, 34, 
-    101, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 104, 34, 34, 34, 34, 34, 34, 106, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 107, 108, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 109, 110, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 111, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 112, 34, 34, 113, 114, 115, 116, 117, 118, 119, 120, 121, 
-    122, 17, 123, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    124, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 125, 126, 127, 128, 
-    129, 130, 34, 34, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 17, 
-    141, 142, 143, 144, 145, 17, 17, 17, 17, 17, 17, 146, 17, 147, 17, 148, 
-    17, 149, 17, 150, 17, 17, 17, 151, 17, 17, 17, 17, 152, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 34, 34, 34, 34, 34, 34, 153, 17, 154, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 34, 34, 34, 34, 34, 34, 34, 34, 155, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    64, 156, 157, 158, 159, 17, 160, 17, 161, 162, 163, 164, 165, 166, 167, 
-    168, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 169, 170, 171, 172, 
-    173, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 174, 175, 176, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 87, 177, 34, 178, 179, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 180, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 181, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 182, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 183, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 184, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 
-    185, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 34, 180, 34, 34, 186, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    187, 17, 64, 188, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 
-    17, 17, 17, 17, 17, 17, 17, 17, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 189, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 
-    64, 64, 64, 64, 64, 189, 
-};
-
-static unsigned char index2[] = {
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 1, 1, 1, 1, 1, 1, 14, 14, 14, 14, 
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-    14, 14, 14, 14, 1, 1, 1, 1, 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 1, 1, 1, 
-    1, 1, 1, 1, 17, 18, 1, 19, 1, 1, 1, 20, 16, 1, 21, 21, 21, 1, 14, 14, 14, 
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-    14, 14, 1, 14, 14, 14, 14, 14, 14, 14, 16, 15, 15, 15, 15, 15, 15, 15, 
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 1, 15, 
-    15, 15, 15, 15, 15, 15, 22, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 25, 26, 23, 24, 23, 24, 23, 24, 16, 23, 24, 23, 24, 23, 24, 23, 24, 
-    23, 24, 23, 24, 23, 24, 23, 24, 16, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 27, 23, 24, 23, 24, 23, 24, 28, 29, 30, 23, 24, 23, 24, 31, 23, 24, 
-    32, 32, 23, 24, 16, 33, 34, 35, 23, 24, 32, 36, 37, 38, 39, 23, 24, 40, 
-    16, 38, 41, 42, 43, 23, 24, 23, 24, 23, 24, 44, 23, 24, 44, 16, 16, 23, 
-    24, 44, 23, 24, 45, 45, 23, 24, 23, 24, 46, 23, 24, 16, 47, 23, 24, 16, 
-    48, 47, 47, 47, 47, 49, 50, 51, 49, 50, 51, 49, 50, 51, 23, 24, 23, 24, 
-    23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 52, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 16, 49, 50, 51, 23, 
-    24, 53, 54, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 55, 16, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 16, 16, 16, 16, 16, 16, 56, 23, 24, 
-    57, 58, 59, 59, 23, 24, 60, 61, 62, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 63, 64, 65, 66, 67, 16, 68, 68, 16, 69, 16, 70, 16, 16, 16, 16, 68, 
-    16, 16, 71, 16, 16, 16, 16, 72, 73, 16, 74, 16, 16, 16, 73, 16, 75, 76, 
-    16, 16, 77, 16, 16, 16, 16, 16, 16, 16, 78, 16, 16, 79, 16, 16, 79, 16, 
-    16, 16, 16, 79, 80, 81, 81, 82, 16, 16, 16, 16, 16, 83, 16, 47, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 47, 47, 47, 
-    47, 1, 1, 1, 1, 1, 1, 1, 47, 1, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 84, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 24, 
-    23, 24, 47, 1, 23, 24, 0, 0, 47, 42, 42, 42, 1, 0, 0, 0, 0, 0, 1, 1, 85, 
-    1, 86, 86, 86, 0, 87, 0, 88, 88, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-    14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-    89, 90, 90, 90, 16, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 
-    15, 15, 15, 15, 91, 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, 93, 93, 94, 
-    95, 96, 97, 97, 97, 98, 99, 100, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 
-    23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 101, 102, 103, 
-    16, 104, 105, 1, 23, 24, 106, 23, 24, 16, 55, 55, 55, 107, 107, 107, 107, 
-    107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 14, 14, 14, 
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 
-    15, 15, 15, 15, 15, 15, 15, 102, 102, 102, 102, 102, 102, 102, 102, 102, 
-    102, 102, 102, 102, 102, 102, 102, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 1, 1, 1, 1, 1, 1, 1, 1, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 108, 23, 24, 23, 24, 
-    23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 109, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 110, 
-    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 
-    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 
-    110, 110, 110, 110, 110, 110, 110, 110, 0, 0, 47, 1, 1, 1, 1, 1, 1, 0, 
-    111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 
-    111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 
-    111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 16, 0, 1, 1, 0, 0, 0, 
-    0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 0, 0, 0, 0, 0, 47, 47, 47, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, 5, 6, 7, 8, 9, 10, 
-    11, 12, 13, 1, 1, 1, 1, 47, 47, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    1, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 47, 1, 1, 1, 1, 
-    1, 1, 1, 47, 47, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 47, 47, 47, 1, 1, 47, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 47, 1, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 
-    12, 13, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 47, 47, 1, 1, 1, 1, 47, 0, 0, 0, 0, 0, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 1, 1, 1, 1, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 1, 1, 1, 47, 1, 1, 1, 
-    1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    0, 0, 1, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 47, 1, 
-    1, 1, 1, 1, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 4, 
-    5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 47, 47, 0, 0, 0, 0, 0, 0, 47, 47, 47, 
-    47, 47, 47, 47, 0, 1, 1, 1, 0, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 47, 
-    47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 0, 0, 0, 
-    47, 47, 47, 47, 0, 0, 1, 47, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 
-    1, 47, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 47, 47, 0, 47, 47, 47, 1, 
-    1, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 47, 47, 1, 1, 21, 21, 21, 21, 
-    21, 21, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 47, 47, 47, 47, 47, 47, 0, 0, 0, 
-    0, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 
-    0, 47, 47, 0, 47, 47, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 
-    1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 0, 47, 0, 0, 0, 
-    0, 0, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 1, 47, 47, 47, 1, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 0, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 
-    47, 0, 47, 47, 47, 47, 47, 0, 0, 1, 47, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 
-    1, 0, 1, 1, 1, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 
-    47, 1, 1, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 1, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 47, 47, 47, 47, 47, 47, 47, 47, 0, 
-    0, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 
-    0, 47, 47, 47, 47, 47, 0, 0, 1, 47, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 
-    0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 47, 47, 0, 47, 47, 
-    47, 1, 1, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 47, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 47, 0, 47, 47, 47, 47, 47, 47, 0, 0, 
-    0, 47, 47, 47, 0, 47, 47, 47, 47, 0, 0, 0, 47, 47, 0, 47, 0, 47, 47, 0, 
-    0, 0, 47, 47, 0, 0, 0, 47, 47, 47, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 
-    1, 1, 0, 0, 47, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 
-    1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 
-    47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 0, 47, 47, 47, 47, 47, 0, 0, 0, 47, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 
-    0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 47, 47, 0, 0, 0, 0, 0, 0, 
-    47, 47, 1, 1, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 
-    0, 0, 21, 21, 21, 21, 21, 21, 21, 1, 0, 0, 1, 1, 0, 47, 47, 47, 47, 47, 
-    47, 47, 47, 0, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 0, 0, 1, 47, 1, 1, 1, 1, 1, 1, 
-    1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 
-    0, 0, 47, 0, 47, 47, 1, 1, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 1, 
-    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 47, 47, 47, 47, 
-    47, 47, 47, 47, 0, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 47, 1, 1, 1, 1, 
-    1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 
-    0, 0, 0, 0, 0, 0, 47, 47, 1, 1, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 
-    21, 21, 21, 21, 21, 21, 0, 0, 0, 1, 47, 47, 47, 47, 47, 47, 0, 0, 1, 1, 
-    0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 0, 47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 1, 0, 0, 0, 0, 1, 
-    1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 47, 47, 1, 1, 1, 
-    1, 1, 1, 1, 0, 0, 0, 0, 1, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 47, 47, 0, 47, 0, 0, 47, 47, 0, 47, 0, 0, 47, 0, 0, 0, 0, 
-    0, 0, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 0, 
-    47, 0, 47, 0, 0, 47, 47, 0, 47, 47, 47, 47, 1, 47, 47, 1, 1, 1, 1, 1, 1, 
-    0, 1, 1, 47, 0, 0, 47, 47, 47, 47, 47, 0, 47, 0, 1, 1, 1, 1, 1, 1, 0, 0, 
-    4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 21, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 
-    47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 47, 47, 47, 0, 0, 0, 0, 1, 1, 
-    1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 4, 5, 6, 7, 8, 
-    9, 10, 11, 12, 13, 1, 1, 1, 1, 1, 1, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 
-    47, 47, 47, 47, 1, 1, 1, 47, 1, 1, 1, 47, 47, 1, 1, 1, 1, 1, 1, 1, 47, 
-    47, 47, 1, 1, 1, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
-    13, 1, 1, 1, 1, 1, 1, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 
-    112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 47, 0, 0, 0, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 0, 47, 47, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 
-    0, 47, 47, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 0, 0, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 
-    47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 0, 47, 47, 47, 47, 0, 0, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    0, 47, 47, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 17, 18, 113, 114, 115, 
-    116, 117, 118, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 0, 0, 0, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 2, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 1, 1, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 21, 21, 21, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    0, 47, 47, 47, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 47, 1, 1, 1, 1, 47, 1, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
-    13, 0, 0, 0, 0, 0, 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 0, 0, 0, 0, 
-    0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 4, 5, 6, 7, 8, 9, 
-    10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 
-    47, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 4, 5, 6, 
-    7, 8, 9, 10, 11, 12, 13, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    0, 0, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 47, 47, 47, 47, 47, 47, 47, 1, 1, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 
-    8, 9, 10, 11, 12, 13, 5, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 1, 1, 1, 1, 1, 0, 0, 1, 1, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 0, 0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 
-    4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 
-    47, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 4, 5, 6, 7, 8, 9, 
-    10, 11, 12, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 
-    0, 0, 47, 47, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10, 
-    11, 12, 13, 0, 0, 0, 47, 47, 47, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 47, 47, 47, 1, 47, 47, 47, 47, 1, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 47, 119, 16, 16, 16, 120, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 16, 16, 16, 16, 16, 121, 16, 16, 122, 16, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 123, 
-    123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 124, 124, 124, 124, 
-    124, 123, 123, 123, 123, 123, 123, 0, 0, 124, 124, 124, 124, 124, 124, 0, 
-    0, 123, 123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 124, 124, 124, 
-    124, 124, 123, 123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 124, 
-    124, 124, 124, 124, 123, 123, 123, 123, 123, 123, 0, 0, 124, 124, 124, 
-    124, 124, 124, 0, 0, 16, 123, 16, 123, 16, 123, 16, 123, 0, 124, 0, 124, 
-    0, 124, 0, 124, 123, 123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 
-    124, 124, 124, 124, 124, 125, 125, 126, 126, 126, 126, 127, 127, 128, 
-    128, 129, 129, 130, 130, 0, 0, 123, 123, 123, 123, 123, 123, 123, 123, 
-    131, 131, 131, 131, 131, 131, 131, 131, 123, 123, 123, 123, 123, 123, 
-    123, 123, 131, 131, 131, 131, 131, 131, 131, 131, 123, 123, 123, 123, 
-    123, 123, 123, 123, 131, 131, 131, 131, 131, 131, 131, 131, 123, 123, 16, 
-    132, 16, 0, 16, 16, 124, 124, 133, 133, 134, 1, 135, 1, 1, 1, 16, 132, 
-    16, 0, 16, 16, 136, 136, 136, 136, 134, 1, 1, 1, 123, 123, 16, 16, 0, 0, 
-    16, 16, 124, 124, 137, 137, 0, 1, 1, 1, 123, 123, 16, 16, 16, 103, 16, 
-    16, 124, 124, 138, 138, 106, 1, 1, 1, 0, 0, 16, 132, 16, 0, 16, 16, 139, 
-    139, 140, 140, 134, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 3, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 
-    1, 141, 47, 0, 0, 113, 114, 115, 116, 117, 118, 1, 1, 1, 1, 1, 47, 141, 
-    20, 17, 18, 113, 114, 115, 116, 117, 118, 1, 1, 1, 1, 1, 0, 47, 47, 47, 
-    47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 97, 1, 1, 1, 1, 97, 1, 1, 
-    16, 97, 97, 97, 16, 16, 97, 97, 97, 16, 1, 97, 1, 1, 1, 97, 97, 97, 97, 
-    97, 1, 1, 1, 1, 1, 1, 97, 1, 142, 1, 97, 1, 143, 144, 97, 97, 1, 16, 97, 
-    97, 145, 97, 16, 47, 47, 47, 47, 16, 1, 1, 16, 16, 97, 97, 1, 1, 1, 1, 1, 
-    97, 16, 16, 16, 16, 1, 1, 1, 1, 146, 1, 21, 21, 21, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 147, 147, 147, 147, 147, 147, 147, 147, 
-    147, 147, 147, 147, 147, 147, 147, 147, 148, 148, 148, 148, 148, 148, 
-    148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 21, 21, 21, 23, 24, 21, 
-    21, 21, 21, 21, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 17, 18, 113, 
-    114, 115, 116, 117, 118, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 20, 
-    17, 18, 113, 114, 115, 116, 117, 118, 21, 21, 21, 21, 21, 21, 21, 21, 21, 
-    21, 21, 20, 17, 18, 113, 114, 115, 116, 117, 118, 21, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 
-    149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 
-    149, 149, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 
-    150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 
-    141, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 20, 17, 18, 113, 114, 115, 
-    116, 117, 118, 21, 141, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 
-    1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 
-    1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 17, 18, 113, 114, 115, 116, 
-    117, 118, 21, 20, 17, 18, 113, 114, 115, 116, 117, 118, 21, 20, 17, 18, 
-    113, 114, 115, 116, 117, 118, 21, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 
-    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 
-    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 
-    110, 110, 110, 110, 110, 110, 110, 110, 110, 0, 111, 111, 111, 111, 111, 
-    111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 
-    111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 
-    111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 0, 
-    23, 24, 151, 152, 153, 154, 155, 23, 24, 23, 24, 23, 24, 156, 157, 158, 
-    159, 16, 23, 24, 16, 23, 24, 16, 16, 16, 16, 16, 16, 47, 160, 160, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 16, 1, 1, 1, 1, 1, 1, 23, 24, 23, 24, 
-    1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 21, 1, 1, 161, 161, 161, 161, 
-    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 
-    161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 
-    161, 161, 161, 161, 161, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 0, 
-    47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 
-    47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 
-    47, 0, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 0, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 47, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 0, 0, 0, 0, 2, 1, 1, 1, 1, 47, 47, 21, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 47, 47, 47, 47, 47, 1, 1, 21, 21, 
-    21, 47, 47, 1, 1, 1, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 0, 0, 1, 1, 1, 1, 47, 47, 47, 1, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 47, 47, 47, 47, 0, 0, 0, 0, 0, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 1, 1, 21, 21, 21, 21, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 
-    0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 
-    21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 0, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 162, 47, 47, 162, 
-    47, 47, 47, 162, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 
-    162, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 162, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 
-    47, 162, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 162, 
-    162, 162, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    162, 162, 162, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 
-    47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 162, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 162, 162, 47, 162, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 
-    47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 47, 
-    47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, 
-    23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 
-    23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 0, 0, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 47, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 
-    1, 1, 47, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 
-    23, 24, 23, 24, 23, 24, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 21, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 1, 1, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 16, 16, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 47, 16, 16, 16, 16, 
-    16, 16, 16, 16, 23, 24, 23, 24, 163, 23, 24, 23, 24, 23, 24, 23, 24, 23, 
-    24, 47, 1, 1, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 
-    47, 47, 47, 47, 47, 1, 47, 47, 47, 1, 47, 47, 47, 47, 1, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 21, 21, 21, 21, 21, 21, 1, 1, 
-    1, 1, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 4, 5, 6, 7, 8, 9, 10, 
-    11, 12, 13, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 47, 47, 47, 47, 47, 47, 1, 1, 1, 47, 0, 0, 0, 0, 4, 5, 6, 7, 
-    8, 9, 10, 11, 12, 13, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 0, 0, 0, 1, 1, 1, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 0, 47, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, 1, 1, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 1, 47, 47, 47, 47, 47, 
-    47, 47, 47, 1, 1, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 1, 1, 1, 
-    1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 1, 1, 1, 47, 1, 0, 0, 0, 0, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 1, 47, 1, 1, 1, 47, 47, 1, 1, 47, 47, 47, 47, 
-    47, 1, 1, 47, 1, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 
-    0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 162, 
-    47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 162, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 47, 1, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 0, 47, 47, 47, 47, 47, 0, 47, 0, 47, 47, 0, 47, 47, 0, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 0, 0, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 47, 47, 47, 47, 47, 0, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 1, 1, 1, 1, 1, 
-    1, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 
-    14, 14, 14, 14, 14, 14, 14, 14, 14, 1, 1, 1, 1, 1, 1, 15, 15, 15, 15, 15, 
-    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 
-    15, 15, 15, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 47, 47, 47, 47, 47, 47, 
-    0, 0, 47, 47, 47, 47, 47, 47, 0, 0, 47, 47, 47, 47, 47, 47, 0, 0, 47, 47, 
-    47, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 47, 47, 0, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 
-    0, 1, 1, 1, 0, 0, 0, 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 0, 0, 0, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 21, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 0, 21, 21, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 21, 
-    47, 47, 47, 47, 47, 47, 47, 47, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 0, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 
-    47, 1, 21, 21, 21, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 
-    164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 
-    164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 165, 
-    165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 
-    165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 
-    165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 0, 0, 47, 0, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 0, 47, 47, 0, 0, 0, 47, 0, 0, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 1, 21, 
-    21, 21, 21, 21, 21, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 21, 
-    21, 21, 21, 21, 21, 0, 0, 0, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 
-    0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 1, 1, 1, 0, 
-    1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 47, 47, 47, 47, 0, 47, 47, 47, 0, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 20, 
-    17, 18, 113, 21, 21, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    21, 21, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 21, 21, 21, 
-    21, 21, 21, 21, 21, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 21, 21, 21, 21, 21, 21, 21, 21, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 20, 17, 18, 113, 114, 115, 116, 117, 118, 21, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 
-    21, 21, 0, 1, 1, 1, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 21, 21, 21, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 1, 21, 21, 21, 21, 21, 
-    21, 21, 21, 21, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 
-    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 
-    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 16, 16, 16, 16, 
-    16, 16, 16, 0, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 97, 0, 97, 97, 0, 0, 97, 0, 0, 97, 97, 0, 0, 97, 97, 97, 97, 0, 
-    97, 97, 97, 97, 97, 97, 97, 97, 16, 16, 16, 16, 0, 16, 0, 16, 16, 16, 16, 
-    16, 16, 16, 0, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 97, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 97, 97, 0, 97, 97, 
-    97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 
-    97, 0, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 97, 97, 0, 97, 97, 97, 97, 0, 97, 
-    97, 97, 97, 97, 0, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 0, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 97, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 1, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 16, 16, 16, 16, 16, 
-    16, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 1, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 16, 
-    16, 16, 16, 16, 16, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 1, 16, 16, 16, 16, 16, 16, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 1, 16, 16, 16, 16, 16, 16, 97, 97, 97, 97, 97, 
-    97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 
-    97, 97, 1, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 
-    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 1, 16, 16, 16, 16, 16, 16, 97, 
-    16, 0, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
-    13, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 
-    4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 141, 141, 20, 17, 18, 113, 114, 115, 116, 117, 118, 0, 0, 0, 0, 
-    0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 
-    1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 
-    1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 
-    47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 162, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 
-    47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
-    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
-};
-
-/* Returns the numeric value as double for Unicode characters
- * having this property, -1.0 otherwise.
- */
-double _PyUnicode_ToNumeric(Py_UNICODE ch)
-{
-    switch (ch) {
-    case 0x0F33:
-        return (double) -1.0/2.0;
-    case 0x0030:
-    case 0x0660:
-    case 0x06F0:
-    case 0x07C0:
-    case 0x0966:
-    case 0x09E6:
-    case 0x0A66:
-    case 0x0AE6:
-    case 0x0B66:
-    case 0x0BE6:
-    case 0x0C66:
-    case 0x0C78:
-    case 0x0CE6:
-    case 0x0D66:
-    case 0x0E50:
-    case 0x0ED0:
-    case 0x0F20:
-    case 0x1040:
-    case 0x1090:
-    case 0x17E0:
-    case 0x17F0:
-    case 0x1810:
-    case 0x1946:
-    case 0x19D0:
-    case 0x1A80:
-    case 0x1A90:
-    case 0x1B50:
-    case 0x1BB0:
-    case 0x1C40:
-    case 0x1C50:
-    case 0x2070:
-    case 0x2080:
-    case 0x2189:
-    case 0x24EA:
-    case 0x24FF:
-    case 0x3007:
-    case 0x96F6:
-    case 0xA620:
-    case 0xA6EF:
-    case 0xA8D0:
-    case 0xA900:
-    case 0xA9D0:
-    case 0xAA50:
-    case 0xABF0:
-    case 0xF9B2:
-    case 0xFF10:
-#ifdef Py_UNICODE_WIDE
-    case 0x1018A:
-    case 0x104A0:
-    case 0x1D7CE:
-    case 0x1D7D8:
-    case 0x1D7E2:
-    case 0x1D7EC:
-    case 0x1D7F6:
-    case 0x1F100:
-    case 0x1F101:
-#endif
-        return (double) 0.0;
-    case 0x0031:
-    case 0x00B9:
-    case 0x0661:
-    case 0x06F1:
-    case 0x07C1:
-    case 0x0967:
-    case 0x09E7:
-    case 0x0A67:
-    case 0x0AE7:
-    case 0x0B67:
-    case 0x0BE7:
-    case 0x0C67:
-    case 0x0C79:
-    case 0x0C7C:
-    case 0x0CE7:
-    case 0x0D67:
-    case 0x0E51:
-    case 0x0ED1:
-    case 0x0F21:
-    case 0x1041:
-    case 0x1091:
-    case 0x1369:
-    case 0x17E1:
-    case 0x17F1:
-    case 0x1811:
-    case 0x1947:
-    case 0x19D1:
-    case 0x19DA:
-    case 0x1A81:
-    case 0x1A91:
-    case 0x1B51:
-    case 0x1BB1:
-    case 0x1C41:
-    case 0x1C51:
-    case 0x2081:
-    case 0x215F:
-    case 0x2160:
-    case 0x2170:
-    case 0x2460:
-    case 0x2474:
-    case 0x2488:
-    case 0x24F5:
-    case 0x2776:
-    case 0x2780:
-    case 0x278A:
-    case 0x3021:
-    case 0x3192:
-    case 0x3220:
-    case 0x3280:
-    case 0x4E00:
-    case 0x58F1:
-    case 0x58F9:
-    case 0x5E7A:
-    case 0x5F0C:
-    case 0xA621:
-    case 0xA6E6:
-    case 0xA8D1:
-    case 0xA901:
-    case 0xA9D1:
-    case 0xAA51:
-    case 0xABF1:
-    case 0xFF11:
-#ifdef Py_UNICODE_WIDE
-    case 0x10107:
-    case 0x10142:
-    case 0x10158:
-    case 0x10159:
-    case 0x1015A:
-    case 0x10320:
-    case 0x103D1:
-    case 0x104A1:
-    case 0x10858:
-    case 0x10916:
-    case 0x10A40:
-    case 0x10A7D:
-    case 0x10B58:
-    case 0x10B78:
-    case 0x10E60:
-    case 0x12415:
-    case 0x1241E:
-    case 0x1242C:
-    case 0x12434:
-    case 0x1244F:
-    case 0x12458:
-    case 0x1D360:
-    case 0x1D7CF:
-    case 0x1D7D9:
-    case 0x1D7E3:
-    case 0x1D7ED:
-    case 0x1D7F7:
-    case 0x1F102:
-    case 0x2092A:
-#endif
-        return (double) 1.0;
-    case 0x2152:
-        return (double) 1.0/10.0;
-    case 0x09F4:
-    case 0xA833:
-        return (double) 1.0/16.0;
-    case 0x00BD:
-    case 0x0D74:
-    case 0x0F2A:
-    case 0x2CFD:
-    case 0xA831:
-#ifdef Py_UNICODE_WIDE
-    case 0x10141:
-    case 0x10175:
-    case 0x10176:
-    case 0x10E7B:
-#endif
-        return (double) 1.0/2.0;
-    case 0x2153:
-#ifdef Py_UNICODE_WIDE
-    case 0x10E7D:
-    case 0x1245A:
-    case 0x1245D:
-#endif
-        return (double) 1.0/3.0;
-    case 0x00BC:
-    case 0x09F7:
-    case 0x0D73:
-    case 0xA830:
-#ifdef Py_UNICODE_WIDE
-    case 0x10140:
-    case 0x10E7C:
-    case 0x12460:
-    case 0x12462:
-#endif
-        return (double) 1.0/4.0;
-    case 0x2155:
-        return (double) 1.0/5.0;
-    case 0x2159:
-#ifdef Py_UNICODE_WIDE
-    case 0x12461:
-#endif
-        return (double) 1.0/6.0;
-    case 0x2150:
-        return (double) 1.0/7.0;
-    case 0x09F5:
-    case 0x215B:
-    case 0xA834:
-#ifdef Py_UNICODE_WIDE
-    case 0x1245F:
-#endif
-        return (double) 1.0/8.0;
-    case 0x2151:
-        return (double) 1.0/9.0;
-    case 0x0BF0:
-    case 0x0D70:
-    case 0x1372:
-    case 0x2169:
-    case 0x2179:
-    case 0x2469:
-    case 0x247D:
-    case 0x2491:
-    case 0x24FE:
-    case 0x277F:
-    case 0x2789:
-    case 0x2793:
-    case 0x3038:
-    case 0x3229:
-    case 0x3289:
-    case 0x4EC0:
-    case 0x5341:
-    case 0x62FE:
-    case 0xF973:
-    case 0xF9FD:
-#ifdef Py_UNICODE_WIDE
-    case 0x10110:
-    case 0x10149:
-    case 0x10150:
-    case 0x10157:
-    case 0x10160:
-    case 0x10161:
-    case 0x10162:
-    case 0x10163:
-    case 0x10164:
-    case 0x10322:
-    case 0x103D3:
-    case 0x1085B:
-    case 0x10917:
-    case 0x10A44:
-    case 0x10B5C:
-    case 0x10B7C:
-    case 0x10E69:
-    case 0x1D369:
-#endif
-        return (double) 10.0;
-    case 0x0BF1:
-    case 0x0D71:
-    case 0x137B:
-    case 0x216D:
-    case 0x217D:
-    case 0x4F70:
-    case 0x767E:
-    case 0x964C:
-#ifdef Py_UNICODE_WIDE
-    case 0x10119:
-    case 0x1014B:
-    case 0x10152:
-    case 0x1016A:
-    case 0x103D5:
-    case 0x1085D:
-    case 0x10919:
-    case 0x10A46:
-    case 0x10B5E:
-    case 0x10B7E:
-    case 0x10E72:
-#endif
-        return (double) 100.0;
-    case 0x0BF2:
-    case 0x0D72:
-    case 0x216F:
-    case 0x217F:
-    case 0x2180:
-    case 0x4EDF:
-    case 0x5343:
-    case 0x9621:
-#ifdef Py_UNICODE_WIDE
-    case 0x10122:
-    case 0x1014D:
-    case 0x10154:
-    case 0x10171:
-    case 0x1085E:
-    case 0x10A47:
-    case 0x10B5F:
-    case 0x10B7F:
-#endif
-        return (double) 1000.0;
-    case 0x137C:
-    case 0x2182:
-    case 0x4E07:
-    case 0x842C:
-#ifdef Py_UNICODE_WIDE
-    case 0x1012B:
-    case 0x10155:
-    case 0x1085F:
-#endif
-        return (double) 10000.0;
-    case 0x2188:
-        return (double) 100000.0;
-    case 0x4EBF:
-    case 0x5104:
-        return (double) 100000000.0;
-    case 0x5146:
-        return (double) 1000000000000.0;
-    case 0x216A:
-    case 0x217A:
-    case 0x246A:
-    case 0x247E:
-    case 0x2492:
-    case 0x24EB:
-        return (double) 11.0;
-    case 0x0F2F:
-        return (double) 11.0/2.0;
-    case 0x216B:
-    case 0x217B:
-    case 0x246B:
-    case 0x247F:
-    case 0x2493:
-    case 0x24EC:
-        return (double) 12.0;
-    case 0x246C:
-    case 0x2480:
-    case 0x2494:
-    case 0x24ED:
-        return (double) 13.0;
-    case 0x0F30:
-        return (double) 13.0/2.0;
-    case 0x246D:
-    case 0x2481:
-    case 0x2495:
-    case 0x24EE:
-        return (double) 14.0;
-    case 0x246E:
-    case 0x2482:
-    case 0x2496:
-    case 0x24EF:
-        return (double) 15.0;
-    case 0x0F31:
-        return (double) 15.0/2.0;
-    case 0x09F9:
-    case 0x246F:
-    case 0x2483:
-    case 0x2497:
-    case 0x24F0:
-        return (double) 16.0;
-    case 0x16EE:
-    case 0x2470:
-    case 0x2484:
-    case 0x2498:
-    case 0x24F1:
-        return (double) 17.0;
-    case 0x0F32:
-        return (double) 17.0/2.0;
-    case 0x16EF:
-    case 0x2471:
-    case 0x2485:
-    case 0x2499:
-    case 0x24F2:
-        return (double) 18.0;
-    case 0x16F0:
-    case 0x2472:
-    case 0x2486:
-    case 0x249A:
-    case 0x24F3:
-        return (double) 19.0;
-    case 0x0032:
-    case 0x00B2:
-    case 0x0662:
-    case 0x06F2:
-    case 0x07C2:
-    case 0x0968:
-    case 0x09E8:
-    case 0x0A68:
-    case 0x0AE8:
-    case 0x0B68:
-    case 0x0BE8:
-    case 0x0C68:
-    case 0x0C7A:
-    case 0x0C7D:
-    case 0x0CE8:
-    case 0x0D68:
-    case 0x0E52:
-    case 0x0ED2:
-    case 0x0F22:
-    case 0x1042:
-    case 0x1092:
-    case 0x136A:
-    case 0x17E2:
-    case 0x17F2:
-    case 0x1812:
-    case 0x1948:
-    case 0x19D2:
-    case 0x1A82:
-    case 0x1A92:
-    case 0x1B52:
-    case 0x1BB2:
-    case 0x1C42:
-    case 0x1C52:
-    case 0x2082:
-    case 0x2161:
-    case 0x2171:
-    case 0x2461:
-    case 0x2475:
-    case 0x2489:
-    case 0x24F6:
-    case 0x2777:
-    case 0x2781:
-    case 0x278B:
-    case 0x3022:
-    case 0x3193:
-    case 0x3221:
-    case 0x3281:
-    case 0x3483:
-    case 0x4E8C:
-    case 0x5169:
-    case 0x5F0D:
-    case 0x5F10:
-    case 0x8CAE:
-    case 0x8CB3:
-    case 0x8D30:
-    case 0xA622:
-    case 0xA6E7:
-    case 0xA8D2:
-    case 0xA902:
-    case 0xA9D2:
-    case 0xAA52:
-    case 0xABF2:
-    case 0xF978:
-    case 0xFF12:
-#ifdef Py_UNICODE_WIDE
-    case 0x10108:
-    case 0x1015B:
-    case 0x1015C:
-    case 0x1015D:
-    case 0x1015E:
-    case 0x103D2:
-    case 0x104A2:
-    case 0x10859:
-    case 0x1091A:
-    case 0x10A41:
-    case 0x10B59:
-    case 0x10B79:
-    case 0x10E61:
-    case 0x12400:
-    case 0x12416:
-    case 0x1241F:
-    case 0x12423:
-    case 0x1242D:
-    case 0x12435:
-    case 0x1244A:
-    case 0x12450:
-    case 0x12459:
-    case 0x1D361:
-    case 0x1D7D0:
-    case 0x1D7DA:
-    case 0x1D7E4:
-    case 0x1D7EE:
-    case 0x1D7F8:
-    case 0x1F103:
-    case 0x22390:
-#endif
-        return (double) 2.0;
-    case 0x2154:
-#ifdef Py_UNICODE_WIDE
-    case 0x10177:
-    case 0x10E7E:
-    case 0x1245B:
-    case 0x1245E:
-#endif
-        return (double) 2.0/3.0;
-    case 0x2156:
-        return (double) 2.0/5.0;
-    case 0x1373:
-    case 0x2473:
-    case 0x2487:
-    case 0x249B:
-    case 0x24F4:
-    case 0x3039:
-    case 0x5344:
-    case 0x5EFF:
-#ifdef Py_UNICODE_WIDE
-    case 0x10111:
-    case 0x103D4:
-    case 0x1085C:
-    case 0x10918:
-    case 0x10A45:
-    case 0x10B5D:
-    case 0x10B7D:
-    case 0x10E6A:
-    case 0x1D36A:
-#endif
-        return (double) 20.0;
-#ifdef Py_UNICODE_WIDE
-    case 0x1011A:
-    case 0x10E73:
-        return (double) 200.0;
-#endif
-#ifdef Py_UNICODE_WIDE
-    case 0x10123:
-        return (double) 2000.0;
-#endif
-#ifdef Py_UNICODE_WIDE
-    case 0x1012C:
-        return (double) 20000.0;
-#endif
-    case 0x3251:
-        return (double) 21.0;
-    case 0x3252:
-        return (double) 22.0;
-    case 0x3253:
-        return (double) 23.0;
-    case 0x3254:
-        return (double) 24.0;
-    case 0x3255:
-        return (double) 25.0;
-    case 0x3256:
-        return (double) 26.0;
-    case 0x3257:
-        return (double) 27.0;
-    case 0x3258:
-        return (double) 28.0;
-    case 0x3259:
-        return (double) 29.0;
-    case 0x0033:
-    case 0x00B3:
-    case 0x0663:
-    case 0x06F3:
-    case 0x07C3:
-    case 0x0969:
-    case 0x09E9:
-    case 0x0A69:
-    case 0x0AE9:
-    case 0x0B69:
-    case 0x0BE9:
-    case 0x0C69:
-    case 0x0C7B:
-    case 0x0C7E:
-    case 0x0CE9:
-    case 0x0D69:
-    case 0x0E53:
-    case 0x0ED3:
-    case 0x0F23:
-    case 0x1043:
-    case 0x1093:
-    case 0x136B:
-    case 0x17E3:
-    case 0x17F3:
-    case 0x1813:
-    case 0x1949:
-    case 0x19D3:
-    case 0x1A83:
-    case 0x1A93:
-    case 0x1B53:
-    case 0x1BB3:
-    case 0x1C43:
-    case 0x1C53:
-    case 0x2083:
-    case 0x2162:
-    case 0x2172:
-    case 0x2462:
-    case 0x2476:
-    case 0x248A:
-    case 0x24F7:
-    case 0x2778:
-    case 0x2782:
-    case 0x278C:
-    case 0x3023:
-    case 0x3194:
-    case 0x3222:
-    case 0x3282:
-    case 0x4E09:
-    case 0x4EE8:
-    case 0x53C1:
-    case 0x53C2:
-    case 0x53C3:
-    case 0x53C4:
-    case 0x5F0E:
-    case 0xA623:
-    case 0xA6E8:
-    case 0xA8D3:
-    case 0xA903:
-    case 0xA9D3:
-    case 0xAA53:
-    case 0xABF3:
-    case 0xF96B:
-    case 0xFF13:
-#ifdef Py_UNICODE_WIDE
-    case 0x10109:
-    case 0x104A3:
-    case 0x1085A:
-    case 0x1091B:
-    case 0x10A42:
-    case 0x10B5A:
-    case 0x10B7A:
-    case 0x10E62:
-    case 0x12401:
-    case 0x12408:
-    case 0x12417:
-    case 0x12420:
-    case 0x12424:
-    case 0x12425:
-    case 0x1242E:
-    case 0x1242F:
-    case 0x12436:
-    case 0x12437:
-    case 0x1243A:
-    case 0x1243B:
-    case 0x1244B:
-    case 0x12451:
-    case 0x1D362:
-    case 0x1D7D1:
-    case 0x1D7DB:
-    case 0x1D7E5:
-    case 0x1D7EF:
-    case 0x1D7F9:
-    case 0x1F104:
-    case 0x20AFD:
-    case 0x20B19:
-    case 0x22998:
-    case 0x23B1B:
-#endif
-        return (double) 3.0;
-    case 0x09F6:
-    case 0xA835:
-        return (double) 3.0/16.0;
-    case 0x0F2B:
-        return (double) 3.0/2.0;
-    case 0x00BE:
-    case 0x09F8:
-    case 0x0D75:
-    case 0xA832:
-#ifdef Py_UNICODE_WIDE
-    case 0x10178:
-#endif
-        return (double) 3.0/4.0;
-    case 0x2157:
-        return (double) 3.0/5.0;
-    case 0x215C:
-        return (double) 3.0/8.0;
-    case 0x1374:
-    case 0x303A:
-    case 0x325A:
-    case 0x5345:
-#ifdef Py_UNICODE_WIDE
-    case 0x10112:
-    case 0x10165:
-    case 0x10E6B:
-    case 0x1D36B:
-    case 0x20983:
-#endif
-        return (double) 30.0;
-#ifdef Py_UNICODE_WIDE
-    case 0x1011B:
-    case 0x1016B:
-    case 0x10E74:
-        return (double) 300.0;
-#endif
-#ifdef Py_UNICODE_WIDE
-    case 0x10124:
-        return (double) 3000.0;
-#endif
-#ifdef Py_UNICODE_WIDE
-    case 0x1012D:
-        return (double) 30000.0;
-#endif
-    case 0x325B:
-        return (double) 31.0;
-    case 0x325C:
-        return (double) 32.0;
-    case 0x325D:
-        return (double) 33.0;
-    case 0x325E:
-        return (double) 34.0;
-    case 0x325F:
-        return (double) 35.0;
-    case 0x32B1:
-        return (double) 36.0;
-    case 0x32B2:
-        return (double) 37.0;
-    case 0x32B3:
-        return (double) 38.0;
-    case 0x32B4:
-        return (double) 39.0;
-    case 0x0034:
-    case 0x0664:
-    case 0x06F4:
-    case 0x07C4:
-    case 0x096A:
-    case 0x09EA:
-    case 0x0A6A:
-    case 0x0AEA:
-    case 0x0B6A:
-    case 0x0BEA:
-    case 0x0C6A:
-    case 0x0CEA:
-    case 0x0D6A:
-    case 0x0E54:
-    case 0x0ED4:
-    case 0x0F24:
-    case 0x1044:
-    case 0x1094:
-    case 0x136C:
-    case 0x17E4:
-    case 0x17F4:
-    case 0x1814:
-    case 0x194A:
-    case 0x19D4:
-    case 0x1A84:
-    case 0x1A94:
-    case 0x1B54:
-    case 0x1BB4:
-    case 0x1C44:
-    case 0x1C54:
-    case 0x2074:
-    case 0x2084:
-    case 0x2163:
-    case 0x2173:
-    case 0x2463:
-    case 0x2477:
-    case 0x248B:
-    case 0x24F8:
-    case 0x2779:
-    case 0x2783:
-    case 0x278D:
-    case 0x3024:
-    case 0x3195:
-    case 0x3223:
-    case 0x3283:
-    case 0x4E96:
-    case 0x56DB:
-    case 0x8086:
-    case 0xA624:
-    case 0xA6E9:
-    case 0xA8D4:
-    case 0xA904:
-    case 0xA9D4:
-    case 0xAA54:
-    case 0xABF4:
-    case 0xFF14:
-#ifdef Py_UNICODE_WIDE
-    case 0x1010A:
-    case 0x104A4:
-    case 0x10A43:
-    case 0x10B5B:
-    case 0x10B7B:
-    case 0x10E63:
-    case 0x12402:
-    case 0x12409:
-    case 0x1240F:
-    case 0x12418:
-    case 0x12421:
-    case 0x12426:
-    case 0x12430:
-    case 0x12438:
-    case 0x1243C:
-    case 0x1243D:
-    case 0x1243E:
-    case 0x1243F:
-    case 0x1244C:
-    case 0x12452:
-    case 0x12453:
-    case 0x1D363:
-    case 0x1D7D2:
-    case 0x1D7DC:
-    case 0x1D7E6:
-    case 0x1D7F0:
-    case 0x1D7FA:
-    case 0x1F105:
-    case 0x20064:
-    case 0x200E2:
-    case 0x2626D:
-#endif
-        return (double) 4.0;
-    case 0x2158:
-        return (double) 4.0/5.0;
-    case 0x1375:
-    case 0x32B5:
-    case 0x534C:
-#ifdef Py_UNICODE_WIDE
-    case 0x10113:
-    case 0x10E6C:
-    case 0x1D36C:
-    case 0x2098C:
-    case 0x2099C:
-#endif
-        return (double) 40.0;
-#ifdef Py_UNICODE_WIDE
-    case 0x1011C:
-    case 0x10E75:
-        return (double) 400.0;
-#endif
-#ifdef Py_UNICODE_WIDE
-    case 0x10125:
-        return (double) 4000.0;
-#endif
-#ifdef Py_UNICODE_WIDE
-    case 0x1012E:
-        return (double) 40000.0;
-#endif
-    case 0x32B6:
-        return (double) 41.0;
-    case 0x32B7:
-        return (double) 42.0;
-    case 0x32B8:
-        return (double) 43.0;
-    case 0x32B9:
-        return (double) 44.0;
-    case 0x32BA:
-        return (double) 45.0;
-    case 0x32BB:
-        return (double) 46.0;
-    case 0x32BC:
-        return (double) 47.0;
-    case 0x32BD:
-        return (double) 48.0;
-    case 0x32BE:
-        return (double) 49.0;
-    case 0x0035:
-    case 0x0665:
-    case 0x06F5:
-    case 0x07C5:
-    case 0x096B:
-    case 0x09EB:
-    case 0x0A6B:
-    case 0x0AEB:
-    case 0x0B6B:
-    case 0x0BEB:
-    case 0x0C6B:
-    case 0x0CEB:
-    case 0x0D6B:
-    case 0x0E55:
-    case 0x0ED5:
-    case 0x0F25:
-    case 0x1045:
-    case 0x1095:
-    case 0x136D:
-    case 0x17E5:
-    case 0x17F5:
-    case 0x1815:
-    case 0x194B:
-    case 0x19D5:
-    case 0x1A85:
-    case 0x1A95:
-    case 0x1B55:
-    case 0x1BB5:
-    case 0x1C45:
-    case 0x1C55:
-    case 0x2075:
-    case 0x2085:
-    case 0x2164:
-    case 0x2174:
-    case 0x2464:
-    case 0x2478:
-    case 0x248C:
-    case 0x24F9:
-    case 0x277A:
-    case 0x2784:
-    case 0x278E:
-    case 0x3025:
-    case 0x3224:
-    case 0x3284:
-    case 0x3405:
-    case 0x382A:
-    case 0x4E94:
-    case 0x4F0D:
-    case 0xA625:
-    case 0xA6EA:
-    case 0xA8D5:
-    case 0xA905:
-    case 0xA9D5:
-    case 0xAA55:
-    case 0xABF5:
-    case 0xFF15:
-#ifdef Py_UNICODE_WIDE
-    case 0x1010B:
-    case 0x10143:
-    case 0x10148:
-    case 0x1014F:
-    case 0x1015F:
-    case 0x10173:
-    case 0x10321:
-    case 0x104A5:
-    case 0x10E64:
-    case 0x12403:
-    case 0x1240A:
-    case 0x12410:
-    case 0x12419:
-    case 0x12422:
-    case 0x12427:
-    case 0x12431:
-    case 0x12439:
-    case 0x1244D:
-    case 0x12454:
-    case 0x12455:
-    case 0x1D364:
-    case 0x1D7D3:
-    case 0x1D7DD:
-    case 0x1D7E7:
-    case 0x1D7F1:
-    case 0x1D7FB:
-    case 0x1F106:
-    case 0x20121:
-#endif
-        return (double) 5.0;
-    case 0x0F2C:
-        return (double) 5.0/2.0;
-    case 0x215A:
-#ifdef Py_UNICODE_WIDE
-    case 0x1245C:
-#endif
-        return (double) 5.0/6.0;
-    case 0x215D:
-        return (double) 5.0/8.0;
-    case 0x1376:
-    case 0x216C:
-    case 0x217C:
-    case 0x2186:
-    case 0x32BF:
-#ifdef Py_UNICODE_WIDE
-    case 0x10114:
-    case 0x10144:
-    case 0x1014A:
-    case 0x10151:
-    case 0x10166:
-    case 0x10167:
-    case 0x10168:
-    case 0x10169:
-    case 0x10174:
-    case 0x10323:
-    case 0x10A7E:
-    case 0x10E6D:
-    case 0x1D36D:
-#endif
-        return (double) 50.0;
-    case 0x216E:
-    case 0x217E:
-#ifdef Py_UNICODE_WIDE
-    case 0x1011D:
-    case 0x10145:
-    case 0x1014C:
-    case 0x10153:
-    case 0x1016C:
-    case 0x1016D:
-    case 0x1016E:
-    case 0x1016F:
-    case 0x10170:
-    case 0x10E76:
-#endif
-        return (double) 500.0;
-    case 0x2181:
-#ifdef Py_UNICODE_WIDE
-    case 0x10126:
-    case 0x10146:
-    case 0x1014E:
-    case 0x10172:
-#endif
-        return (double) 5000.0;
-    case 0x2187:
-#ifdef Py_UNICODE_WIDE
-    case 0x1012F:
-    case 0x10147:
-    case 0x10156:
-#endif
-        return (double) 50000.0;
-    case 0x0036:
-    case 0x0666:
-    case 0x06F6:
-    case 0x07C6:
-    case 0x096C:
-    case 0x09EC:
-    case 0x0A6C:
-    case 0x0AEC:
-    case 0x0B6C:
-    case 0x0BEC:
-    case 0x0C6C:
-    case 0x0CEC:
-    case 0x0D6C:
-    case 0x0E56:
-    case 0x0ED6:
-    case 0x0F26:
-    case 0x1046:
-    case 0x1096:
-    case 0x136E:
-    case 0x17E6:
-    case 0x17F6:
-    case 0x1816:
-    case 0x194C:
-    case 0x19D6:
-    case 0x1A86:
-    case 0x1A96:
-    case 0x1B56:
-    case 0x1BB6:
-    case 0x1C46:
-    case 0x1C56:
-    case 0x2076:
-    case 0x2086:
-    case 0x2165:
-    case 0x2175:
-    case 0x2185:
-    case 0x2465:
-    case 0x2479:
-    case 0x248D:
-    case 0x24FA:
-    case 0x277B:
-    case 0x2785:
-    case 0x278F:
-    case 0x3026:
-    case 0x3225:
-    case 0x3285:
-    case 0x516D:
-    case 0x9646:
-    case 0x9678:
-    case 0xA626:
-    case 0xA6EB:
-    case 0xA8D6:
-    case 0xA906:
-    case 0xA9D6:
-    case 0xAA56:
-    case 0xABF6:
-    case 0xF9D1:
-    case 0xF9D3:
-    case 0xFF16:
-#ifdef Py_UNICODE_WIDE
-    case 0x1010C:
-    case 0x104A6:
-    case 0x10E65:
-    case 0x12404:
-    case 0x1240B:
-    case 0x12411:
-    case 0x1241A:
-    case 0x12428:
-    case 0x12440:
-    case 0x1244E:
-    case 0x1D365:
-    case 0x1D7D4:
-    case 0x1D7DE:
-    case 0x1D7E8:
-    case 0x1D7F2:
-    case 0x1D7FC:
-    case 0x1F107:
-    case 0x20AEA:
-#endif
-        return (double) 6.0;
-    case 0x1377:
-#ifdef Py_UNICODE_WIDE
-    case 0x10115:
-    case 0x10E6E:
-    case 0x1D36E:
-#endif
-        return (double) 60.0;
-#ifdef Py_UNICODE_WIDE
-    case 0x1011E:
-    case 0x10E77:
-        return (double) 600.0;
-#endif
-#ifdef Py_UNICODE_WIDE
-    case 0x10127:
-        return (double) 6000.0;
-#endif
-#ifdef Py_UNICODE_WIDE
-    case 0x10130:
-        return (double) 60000.0;
-#endif
-    case 0x0037:
-    case 0x0667:
-    case 0x06F7:
-    case 0x07C7:
-    case 0x096D:
-    case 0x09ED:
-    case 0x0A6D:
-    case 0x0AED:
-    case 0x0B6D:
-    case 0x0BED:
-    case 0x0C6D:
-    case 0x0CED:
-    case 0x0D6D:
-    case 0x0E57:
-    case 0x0ED7:
-    case 0x0F27:
-    case 0x1047:
-    case 0x1097:
-    case 0x136F:
-    case 0x17E7:
-    case 0x17F7:
-    case 0x1817:
-    case 0x194D:
-    case 0x19D7:
-    case 0x1A87:
-    case 0x1A97:
-    case 0x1B57:
-    case 0x1BB7:
-    case 0x1C47:
-    case 0x1C57:
-    case 0x2077:
-    case 0x2087:
-    case 0x2166:
-    case 0x2176:
-    case 0x2466:
-    case 0x247A:
-    case 0x248E:
-    case 0x24FB:
-    case 0x277C:
-    case 0x2786:
-    case 0x2790:
-    case 0x3027:
-    case 0x3226:
-    case 0x3286:
-    case 0x3B4D:
-    case 0x4E03:
-    case 0x67D2:
-    case 0x6F06:
-    case 0xA627:
-    case 0xA6EC:
-    case 0xA8D7:
-    case 0xA907:
-    case 0xA9D7:
-    case 0xAA57:
-    case 0xABF7:
-    case 0xFF17:
-#ifdef Py_UNICODE_WIDE
-    case 0x1010D:
-    case 0x104A7:
-    case 0x10E66:
-    case 0x12405:
-    case 0x1240C:
-    case 0x12412:
-    case 0x1241B:
-    case 0x12429:
-    case 0x12441:
-    case 0x12442:
-    case 0x12443:
-    case 0x1D366:
-    case 0x1D7D5:
-    case 0x1D7DF:
-    case 0x1D7E9:
-    case 0x1D7F3:
-    case 0x1D7FD:
-    case 0x1F108:
-    case 0x20001:
-#endif
-        return (double) 7.0;
-    case 0x0F2D:
-        return (double) 7.0/2.0;
-    case 0x215E:
-        return (double) 7.0/8.0;
-    case 0x1378:
-#ifdef Py_UNICODE_WIDE
-    case 0x10116:
-    case 0x10E6F:
-    case 0x1D36F:
-#endif
-        return (double) 70.0;
-#ifdef Py_UNICODE_WIDE
-    case 0x1011F:
-    case 0x10E78:
-        return (double) 700.0;
-#endif
-#ifdef Py_UNICODE_WIDE
-    case 0x10128:
-        return (double) 7000.0;
-#endif
-#ifdef Py_UNICODE_WIDE
-    case 0x10131:
-        return (double) 70000.0;
-#endif
-    case 0x0038:
-    case 0x0668:
-    case 0x06F8:
-    case 0x07C8:
-    case 0x096E:
-    case 0x09EE:
-    case 0x0A6E:
-    case 0x0AEE:
-    case 0x0B6E:
-    case 0x0BEE:
-    case 0x0C6E:
-    case 0x0CEE:
-    case 0x0D6E:
-    case 0x0E58:
-    case 0x0ED8:
-    case 0x0F28:
-    case 0x1048:
-    case 0x1098:
-    case 0x1370:
-    case 0x17E8:
-    case 0x17F8:
-    case 0x1818:
-    case 0x194E:
-    case 0x19D8:
-    case 0x1A88:
-    case 0x1A98:
-    case 0x1B58:
-    case 0x1BB8:
-    case 0x1C48:
-    case 0x1C58:
-    case 0x2078:
-    case 0x2088:
-    case 0x2167:
-    case 0x2177:
-    case 0x2467:
-    case 0x247B:
-    case 0x248F:
-    case 0x24FC:
-    case 0x277D:
-    case 0x2787:
-    case 0x2791:
-    case 0x3028:
-    case 0x3227:
-    case 0x3287:
-    case 0x516B:
-    case 0x634C:
-    case 0xA628:
-    case 0xA6ED:
-    case 0xA8D8:
-    case 0xA908:
-    case 0xA9D8:
-    case 0xAA58:
-    case 0xABF8:
-    case 0xFF18:
-#ifdef Py_UNICODE_WIDE
-    case 0x1010E:
-    case 0x104A8:
-    case 0x10E67:
-    case 0x12406:
-    case 0x1240D:
-    case 0x12413:
-    case 0x1241C:
-    case 0x1242A:
-    case 0x12444:
-    case 0x12445:
-    case 0x1D367:
-    case 0x1D7D6:
-    case 0x1D7E0:
-    case 0x1D7EA:
-    case 0x1D7F4:
-    case 0x1D7FE:
-    case 0x1F109:
-#endif
-        return (double) 8.0;
-    case 0x1379:
-#ifdef Py_UNICODE_WIDE
-    case 0x10117:
-    case 0x10E70:
-    case 0x1D370:
-#endif
-        return (double) 80.0;
-#ifdef Py_UNICODE_WIDE
-    case 0x10120:
-    case 0x10E79:
-        return (double) 800.0;
-#endif
-#ifdef Py_UNICODE_WIDE
-    case 0x10129:
-        return (double) 8000.0;
-#endif
-#ifdef Py_UNICODE_WIDE
-    case 0x10132:
-        return (double) 80000.0;
-#endif
-    case 0x0039:
-    case 0x0669:
-    case 0x06F9:
-    case 0x07C9:
-    case 0x096F:
-    case 0x09EF:
-    case 0x0A6F:
-    case 0x0AEF:
-    case 0x0B6F:
-    case 0x0BEF:
-    case 0x0C6F:
-    case 0x0CEF:
-    case 0x0D6F:
-    case 0x0E59:
-    case 0x0ED9:
-    case 0x0F29:
-    case 0x1049:
-    case 0x1099:
-    case 0x1371:
-    case 0x17E9:
-    case 0x17F9:
-    case 0x1819:
-    case 0x194F:
-    case 0x19D9:
-    case 0x1A89:
-    case 0x1A99:
-    case 0x1B59:
-    case 0x1BB9:
-    case 0x1C49:
-    case 0x1C59:
-    case 0x2079:
-    case 0x2089:
-    case 0x2168:
-    case 0x2178:
-    case 0x2468:
-    case 0x247C:
-    case 0x2490:
-    case 0x24FD:
-    case 0x277E:
-    case 0x2788:
-    case 0x2792:
-    case 0x3029:
-    case 0x3228:
-    case 0x3288:
-    case 0x4E5D:
-    case 0x5EFE:
-    case 0x7396:
-    case 0xA629:
-    case 0xA6EE:
-    case 0xA8D9:
-    case 0xA909:
-    case 0xA9D9:
-    case 0xAA59:
-    case 0xABF9:
-    case 0xFF19:
-#ifdef Py_UNICODE_WIDE
-    case 0x1010F:
-    case 0x104A9:
-    case 0x10E68:
-    case 0x12407:
-    case 0x1240E:
-    case 0x12414:
-    case 0x1241D:
-    case 0x1242B:
-    case 0x12446:
-    case 0x12447:
-    case 0x12448:
-    case 0x12449:
-    case 0x1D368:
-    case 0x1D7D7:
-    case 0x1D7E1:
-    case 0x1D7EB:
-    case 0x1D7F5:
-    case 0x1D7FF:
-    case 0x1F10A:
-    case 0x2F890:
-#endif
-        return (double) 9.0;
-    case 0x0F2E:
-        return (double) 9.0/2.0;
-    case 0x137A:
-#ifdef Py_UNICODE_WIDE
-    case 0x10118:
-    case 0x10341:
-    case 0x10E71:
-    case 0x1D371:
-#endif
-        return (double) 90.0;
-#ifdef Py_UNICODE_WIDE
-    case 0x10121:
-    case 0x1034A:
-    case 0x10E7A:
-        return (double) 900.0;
-#endif
-#ifdef Py_UNICODE_WIDE
-    case 0x1012A:
-        return (double) 9000.0;
-#endif
-#ifdef Py_UNICODE_WIDE
-    case 0x10133:
-        return (double) 90000.0;
-#endif
-    }
-    return -1.0;
-}
-
-/* Returns 1 for Unicode characters having the bidirectional
- * type 'WS', 'B' or 'S' or the category 'Zs', 0 otherwise.
- */
-int _PyUnicode_IsWhitespace(register const Py_UNICODE ch)
-{
-#ifdef WANT_WCTYPE_FUNCTIONS
-    return iswspace(ch);
-#else
-    switch (ch) {
-    case 0x0009:
-    case 0x000A:
-    case 0x000B:
-    case 0x000C:
-    case 0x000D:
-    case 0x001C:
-    case 0x001D:
-    case 0x001E:
-    case 0x001F:
-    case 0x0020:
-    case 0x0085:
-    case 0x00A0:
-    case 0x1680:
-    case 0x180E:
-    case 0x2000:
-    case 0x2001:
-    case 0x2002:
-    case 0x2003:
-    case 0x2004:
-    case 0x2005:
-    case 0x2006:
-    case 0x2007:
-    case 0x2008:
-    case 0x2009:
-    case 0x200A:
-    case 0x2028:
-    case 0x2029:
-    case 0x202F:
-    case 0x205F:
-    case 0x3000:
-        return 1;
-    }
-    return 0;
-#endif
-}
-
-/* Returns 1 for Unicode characters having the line break
- * property 'BK', 'CR', 'LF' or 'NL' or having bidirectional
- * type 'B', 0 otherwise.
- */
-int _PyUnicode_IsLinebreak(register const Py_UNICODE ch)
-{
-    switch (ch) {
-    case 0x000A:
-    case 0x000B:
-    case 0x000C:
-    case 0x000D:
-    case 0x001C:
-    case 0x001D:
-    case 0x001E:
-    case 0x0085:
-    case 0x2028:
-    case 0x2029:
-        return 1;
-    }
-    return 0;
-}
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Objects/weakrefobject.c b/AppPkg/Applications/Python/Python-2.7.2/Objects/weakrefobject.c
deleted file mode 100644
index f852aea..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Objects/weakrefobject.c
+++ /dev/null
@@ -1,975 +0,0 @@
-#include "Python.h"
-#include "structmember.h"
-
-
-#define GET_WEAKREFS_LISTPTR(o) \
-        ((PyWeakReference **) PyObject_GET_WEAKREFS_LISTPTR(o))
-
-
-Py_ssize_t
-_PyWeakref_GetWeakrefCount(PyWeakReference *head)
-{
-    Py_ssize_t count = 0;
-
-    while (head != NULL) {
-        ++count;
-        head = head->wr_next;
-    }
-    return count;
-}
-
-
-static void
-init_weakref(PyWeakReference *self, PyObject *ob, PyObject *callback)
-{
-    self->hash = -1;
-    self->wr_object = ob;
-    Py_XINCREF(callback);
-    self->wr_callback = callback;
-}
-
-static PyWeakReference *
-new_weakref(PyObject *ob, PyObject *callback)
-{
-    PyWeakReference *result;
-
-    result = PyObject_GC_New(PyWeakReference, &_PyWeakref_RefType);
-    if (result) {
-        init_weakref(result, ob, callback);
-        PyObject_GC_Track(result);
-    }
-    return result;
-}
-
-
-/* This function clears the passed-in reference and removes it from the
- * list of weak references for the referent.  This is the only code that
- * removes an item from the doubly-linked list of weak references for an
- * object; it is also responsible for clearing the callback slot.
- */
-static void
-clear_weakref(PyWeakReference *self)
-{
-    PyObject *callback = self->wr_callback;
-
-    if (PyWeakref_GET_OBJECT(self) != Py_None) {
-        PyWeakReference **list = GET_WEAKREFS_LISTPTR(
-            PyWeakref_GET_OBJECT(self));
-
-        if (*list == self)
-            /* If 'self' is the end of the list (and thus self->wr_next == NULL)
-               then the weakref list itself (and thus the value of *list) will
-               end up being set to NULL. */
-            *list = self->wr_next;
-        self->wr_object = Py_None;
-        if (self->wr_prev != NULL)
-            self->wr_prev->wr_next = self->wr_next;
-        if (self->wr_next != NULL)
-            self->wr_next->wr_prev = self->wr_prev;
-        self->wr_prev = NULL;
-        self->wr_next = NULL;
-    }
-    if (callback != NULL) {
-        Py_DECREF(callback);
-        self->wr_callback = NULL;
-    }
-}
-
-/* Cyclic gc uses this to *just* clear the passed-in reference, leaving
- * the callback intact and uncalled.  It must be possible to call self's
- * tp_dealloc() after calling this, so self has to be left in a sane enough
- * state for that to work.  We expect tp_dealloc to decref the callback
- * then.  The reason for not letting clear_weakref() decref the callback
- * right now is that if the callback goes away, that may in turn trigger
- * another callback (if a weak reference to the callback exists) -- running
- * arbitrary Python code in the middle of gc is a disaster.  The convolution
- * here allows gc to delay triggering such callbacks until the world is in
- * a sane state again.
- */
-void
-_PyWeakref_ClearRef(PyWeakReference *self)
-{
-    PyObject *callback;
-
-    assert(self != NULL);
-    assert(PyWeakref_Check(self));
-    /* Preserve and restore the callback around clear_weakref. */
-    callback = self->wr_callback;
-    self->wr_callback = NULL;
-    clear_weakref(self);
-    self->wr_callback = callback;
-}
-
-static void
-weakref_dealloc(PyObject *self)
-{
-    PyObject_GC_UnTrack(self);
-    clear_weakref((PyWeakReference *) self);
-    Py_TYPE(self)->tp_free(self);
-}
-
-
-static int
-gc_traverse(PyWeakReference *self, visitproc visit, void *arg)
-{
-    Py_VISIT(self->wr_callback);
-    return 0;
-}
-
-
-static int
-gc_clear(PyWeakReference *self)
-{
-    clear_weakref(self);
-    return 0;
-}
-
-
-static PyObject *
-weakref_call(PyWeakReference *self, PyObject *args, PyObject *kw)
-{
-    static char *kwlist[] = {NULL};
-
-    if (PyArg_ParseTupleAndKeywords(args, kw, ":__call__", kwlist)) {
-        PyObject *object = PyWeakref_GET_OBJECT(self);
-        Py_INCREF(object);
-        return (object);
-    }
-    return NULL;
-}
-
-
-static long
-weakref_hash(PyWeakReference *self)
-{
-    if (self->hash != -1)
-        return self->hash;
-    if (PyWeakref_GET_OBJECT(self) == Py_None) {
-        PyErr_SetString(PyExc_TypeError, "weak object has gone away");
-        return -1;
-    }
-    self->hash = PyObject_Hash(PyWeakref_GET_OBJECT(self));
-    return self->hash;
-}
-
-
-static PyObject *
-weakref_repr(PyWeakReference *self)
-{
-    char buffer[256];
-    if (PyWeakref_GET_OBJECT(self) == Py_None) {
-        PyOS_snprintf(buffer, sizeof(buffer), "<weakref at %p; dead>", self);
-    }
-    else {
-        char *name = NULL;
-        PyObject *nameobj = PyObject_GetAttrString(PyWeakref_GET_OBJECT(self),
-                                                   "__name__");
-        if (nameobj == NULL)
-                PyErr_Clear();
-        else if (PyString_Check(nameobj))
-                name = PyString_AS_STRING(nameobj);
-        PyOS_snprintf(buffer, sizeof(buffer),
-                      name ? "<weakref at %p; to '%.50s' at %p (%s)>"
-                           : "<weakref at %p; to '%.50s' at %p>",
-                      self,
-                      Py_TYPE(PyWeakref_GET_OBJECT(self))->tp_name,
-                      PyWeakref_GET_OBJECT(self),
-                      name);
-        Py_XDECREF(nameobj);
-    }
-    return PyString_FromString(buffer);
-}
-
-/* Weak references only support equality, not ordering. Two weak references
-   are equal if the underlying objects are equal. If the underlying object has
-   gone away, they are equal if they are identical. */
-
-static PyObject *
-weakref_richcompare(PyWeakReference* self, PyWeakReference* other, int op)
-{
-    if (op != Py_EQ || self->ob_type != other->ob_type) {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-    if (PyWeakref_GET_OBJECT(self) == Py_None
-        || PyWeakref_GET_OBJECT(other) == Py_None) {
-        PyObject *res = self==other ? Py_True : Py_False;
-        Py_INCREF(res);
-        return res;
-    }
-    return PyObject_RichCompare(PyWeakref_GET_OBJECT(self),
-                                PyWeakref_GET_OBJECT(other), op);
-}
-
-/* Given the head of an object's list of weak references, extract the
- * two callback-less refs (ref and proxy).  Used to determine if the
- * shared references exist and to determine the back link for newly
- * inserted references.
- */
-static void
-get_basic_refs(PyWeakReference *head,
-               PyWeakReference **refp, PyWeakReference **proxyp)
-{
-    *refp = NULL;
-    *proxyp = NULL;
-
-    if (head != NULL && head->wr_callback == NULL) {
-        /* We need to be careful that the "basic refs" aren't
-           subclasses of the main types.  That complicates this a
-           little. */
-        if (PyWeakref_CheckRefExact(head)) {
-            *refp = head;
-            head = head->wr_next;
-        }
-        if (head != NULL
-            && head->wr_callback == NULL
-            && PyWeakref_CheckProxy(head)) {
-            *proxyp = head;
-            /* head = head->wr_next; */
-        }
-    }
-}
-
-/* Insert 'newref' in the list after 'prev'.  Both must be non-NULL. */
-static void
-insert_after(PyWeakReference *newref, PyWeakReference *prev)
-{
-    newref->wr_prev = prev;
-    newref->wr_next = prev->wr_next;
-    if (prev->wr_next != NULL)
-        prev->wr_next->wr_prev = newref;
-    prev->wr_next = newref;
-}
-
-/* Insert 'newref' at the head of the list; 'list' points to the variable
- * that stores the head.
- */
-static void
-insert_head(PyWeakReference *newref, PyWeakReference **list)
-{
-    PyWeakReference *next = *list;
-
-    newref->wr_prev = NULL;
-    newref->wr_next = next;
-    if (next != NULL)
-        next->wr_prev = newref;
-    *list = newref;
-}
-
-static int
-parse_weakref_init_args(char *funcname, PyObject *args, PyObject *kwargs,
-                        PyObject **obp, PyObject **callbackp)
-{
-    /* XXX Should check that kwargs == NULL or is empty. */
-    return PyArg_UnpackTuple(args, funcname, 1, 2, obp, callbackp);
-}
-
-static PyObject *
-weakref___new__(PyTypeObject *type, PyObject *args, PyObject *kwargs)
-{
-    PyWeakReference *self = NULL;
-    PyObject *ob, *callback = NULL;
-
-    if (parse_weakref_init_args("__new__", args, kwargs, &ob, &callback)) {
-        PyWeakReference *ref, *proxy;
-        PyWeakReference **list;
-
-        if (!PyType_SUPPORTS_WEAKREFS(Py_TYPE(ob))) {
-            PyErr_Format(PyExc_TypeError,
-                         "cannot create weak reference to '%s' object",
-                         Py_TYPE(ob)->tp_name);
-            return NULL;
-        }
-        if (callback == Py_None)
-            callback = NULL;
-        list = GET_WEAKREFS_LISTPTR(ob);
-        get_basic_refs(*list, &ref, &proxy);
-        if (callback == NULL && type == &_PyWeakref_RefType) {
-            if (ref != NULL) {
-                /* We can re-use an existing reference. */
-                Py_INCREF(ref);
-                return (PyObject *)ref;
-            }
-        }
-        /* We have to create a new reference. */
-        /* Note: the tp_alloc() can trigger cyclic GC, so the weakref
-           list on ob can be mutated.  This means that the ref and
-           proxy pointers we got back earlier may have been collected,
-           so we need to compute these values again before we use
-           them. */
-        self = (PyWeakReference *) (type->tp_alloc(type, 0));
-        if (self != NULL) {
-            init_weakref(self, ob, callback);
-            if (callback == NULL && type == &_PyWeakref_RefType) {
-                insert_head(self, list);
-            }
-            else {
-                PyWeakReference *prev;
-
-                get_basic_refs(*list, &ref, &proxy);
-                prev = (proxy == NULL) ? ref : proxy;
-                if (prev == NULL)
-                    insert_head(self, list);
-                else
-                    insert_after(self, prev);
-            }
-        }
-    }
-    return (PyObject *)self;
-}
-
-static int
-weakref___init__(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    PyObject *tmp;
-
-    if (parse_weakref_init_args("__init__", args, kwargs, &tmp, &tmp))
-        return 0;
-    else
-        return -1;
-}
-
-
-PyTypeObject
-_PyWeakref_RefType = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "weakref",
-    sizeof(PyWeakReference),
-    0,
-    weakref_dealloc,            /*tp_dealloc*/
-    0,                          /*tp_print*/
-    0,                          /*tp_getattr*/
-    0,                          /*tp_setattr*/
-    0,                          /*tp_compare*/
-    (reprfunc)weakref_repr,     /*tp_repr*/
-    0,                          /*tp_as_number*/
-    0,                          /*tp_as_sequence*/
-    0,                          /*tp_as_mapping*/
-    (hashfunc)weakref_hash,     /*tp_hash*/
-    (ternaryfunc)weakref_call,  /*tp_call*/
-    0,                          /*tp_str*/
-    0,                          /*tp_getattro*/
-    0,                          /*tp_setattro*/
-    0,                          /*tp_as_buffer*/
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_RICHCOMPARE
-        | Py_TPFLAGS_BASETYPE,  /*tp_flags*/
-    0,                          /*tp_doc*/
-    (traverseproc)gc_traverse,  /*tp_traverse*/
-    (inquiry)gc_clear,          /*tp_clear*/
-    (richcmpfunc)weakref_richcompare,   /*tp_richcompare*/
-    0,                          /*tp_weaklistoffset*/
-    0,                          /*tp_iter*/
-    0,                          /*tp_iternext*/
-    0,                          /*tp_methods*/
-    0,                          /*tp_members*/
-    0,                          /*tp_getset*/
-    0,                          /*tp_base*/
-    0,                          /*tp_dict*/
-    0,                          /*tp_descr_get*/
-    0,                          /*tp_descr_set*/
-    0,                          /*tp_dictoffset*/
-    weakref___init__,           /*tp_init*/
-    PyType_GenericAlloc,        /*tp_alloc*/
-    weakref___new__,            /*tp_new*/
-    PyObject_GC_Del,            /*tp_free*/
-};
-
-
-static int
-proxy_checkref(PyWeakReference *proxy)
-{
-    if (PyWeakref_GET_OBJECT(proxy) == Py_None) {
-        PyErr_SetString(PyExc_ReferenceError,
-                        "weakly-referenced object no longer exists");
-        return 0;
-    }
-    return 1;
-}
-
-
-/* If a parameter is a proxy, check that it is still "live" and wrap it,
- * replacing the original value with the raw object.  Raises ReferenceError
- * if the param is a dead proxy.
- */
-#define UNWRAP(o) \
-        if (PyWeakref_CheckProxy(o)) { \
-            if (!proxy_checkref((PyWeakReference *)o)) \
-                return NULL; \
-            o = PyWeakref_GET_OBJECT(o); \
-        }
-
-#define UNWRAP_I(o) \
-        if (PyWeakref_CheckProxy(o)) { \
-            if (!proxy_checkref((PyWeakReference *)o)) \
-                return -1; \
-            o = PyWeakref_GET_OBJECT(o); \
-        }
-
-#define WRAP_UNARY(method, generic) \
-    static PyObject * \
-    method(PyObject *proxy) { \
-        UNWRAP(proxy); \
-        return generic(proxy); \
-    }
-
-#define WRAP_BINARY(method, generic) \
-    static PyObject * \
-    method(PyObject *x, PyObject *y) { \
-        UNWRAP(x); \
-        UNWRAP(y); \
-        return generic(x, y); \
-    }
-
-/* Note that the third arg needs to be checked for NULL since the tp_call
- * slot can receive NULL for this arg.
- */
-#define WRAP_TERNARY(method, generic) \
-    static PyObject * \
-    method(PyObject *proxy, PyObject *v, PyObject *w) { \
-        UNWRAP(proxy); \
-        UNWRAP(v); \
-        if (w != NULL) \
-            UNWRAP(w); \
-        return generic(proxy, v, w); \
-    }
-
-#define WRAP_METHOD(method, special) \
-    static PyObject * \
-    method(PyObject *proxy) { \
-            UNWRAP(proxy); \
-                return PyObject_CallMethod(proxy, special, ""); \
-        }
-
-
-/* direct slots */
-
-WRAP_BINARY(proxy_getattr, PyObject_GetAttr)
-WRAP_UNARY(proxy_str, PyObject_Str)
-WRAP_TERNARY(proxy_call, PyEval_CallObjectWithKeywords)
-
-static PyObject *
-proxy_repr(PyWeakReference *proxy)
-{
-    char buf[160];
-    PyOS_snprintf(buf, sizeof(buf),
-                  "<weakproxy at %p to %.100s at %p>", proxy,
-                  Py_TYPE(PyWeakref_GET_OBJECT(proxy))->tp_name,
-                  PyWeakref_GET_OBJECT(proxy));
-    return PyString_FromString(buf);
-}
-
-
-static int
-proxy_setattr(PyWeakReference *proxy, PyObject *name, PyObject *value)
-{
-    if (!proxy_checkref(proxy))
-        return -1;
-    return PyObject_SetAttr(PyWeakref_GET_OBJECT(proxy), name, value);
-}
-
-static int
-proxy_compare(PyObject *proxy, PyObject *v)
-{
-    UNWRAP_I(proxy);
-    UNWRAP_I(v);
-    return PyObject_Compare(proxy, v);
-}
-
-/* number slots */
-WRAP_BINARY(proxy_add, PyNumber_Add)
-WRAP_BINARY(proxy_sub, PyNumber_Subtract)
-WRAP_BINARY(proxy_mul, PyNumber_Multiply)
-WRAP_BINARY(proxy_div, PyNumber_Divide)
-WRAP_BINARY(proxy_floor_div, PyNumber_FloorDivide)
-WRAP_BINARY(proxy_true_div, PyNumber_TrueDivide)
-WRAP_BINARY(proxy_mod, PyNumber_Remainder)
-WRAP_BINARY(proxy_divmod, PyNumber_Divmod)
-WRAP_TERNARY(proxy_pow, PyNumber_Power)
-WRAP_UNARY(proxy_neg, PyNumber_Negative)
-WRAP_UNARY(proxy_pos, PyNumber_Positive)
-WRAP_UNARY(proxy_abs, PyNumber_Absolute)
-WRAP_UNARY(proxy_invert, PyNumber_Invert)
-WRAP_BINARY(proxy_lshift, PyNumber_Lshift)
-WRAP_BINARY(proxy_rshift, PyNumber_Rshift)
-WRAP_BINARY(proxy_and, PyNumber_And)
-WRAP_BINARY(proxy_xor, PyNumber_Xor)
-WRAP_BINARY(proxy_or, PyNumber_Or)
-WRAP_UNARY(proxy_int, PyNumber_Int)
-WRAP_UNARY(proxy_long, PyNumber_Long)
-WRAP_UNARY(proxy_float, PyNumber_Float)
-WRAP_BINARY(proxy_iadd, PyNumber_InPlaceAdd)
-WRAP_BINARY(proxy_isub, PyNumber_InPlaceSubtract)
-WRAP_BINARY(proxy_imul, PyNumber_InPlaceMultiply)
-WRAP_BINARY(proxy_idiv, PyNumber_InPlaceDivide)
-WRAP_BINARY(proxy_ifloor_div, PyNumber_InPlaceFloorDivide)
-WRAP_BINARY(proxy_itrue_div, PyNumber_InPlaceTrueDivide)
-WRAP_BINARY(proxy_imod, PyNumber_InPlaceRemainder)
-WRAP_TERNARY(proxy_ipow, PyNumber_InPlacePower)
-WRAP_BINARY(proxy_ilshift, PyNumber_InPlaceLshift)
-WRAP_BINARY(proxy_irshift, PyNumber_InPlaceRshift)
-WRAP_BINARY(proxy_iand, PyNumber_InPlaceAnd)
-WRAP_BINARY(proxy_ixor, PyNumber_InPlaceXor)
-WRAP_BINARY(proxy_ior, PyNumber_InPlaceOr)
-WRAP_UNARY(proxy_index, PyNumber_Index)
-
-static int
-proxy_nonzero(PyWeakReference *proxy)
-{
-    PyObject *o = PyWeakref_GET_OBJECT(proxy);
-    if (!proxy_checkref(proxy))
-        return -1;
-    return PyObject_IsTrue(o);
-}
-
-static void
-proxy_dealloc(PyWeakReference *self)
-{
-    if (self->wr_callback != NULL)
-        PyObject_GC_UnTrack((PyObject *)self);
-    clear_weakref(self);
-    PyObject_GC_Del(self);
-}
-
-/* sequence slots */
-
-static PyObject *
-proxy_slice(PyWeakReference *proxy, Py_ssize_t i, Py_ssize_t j)
-{
-    if (!proxy_checkref(proxy))
-        return NULL;
-    return PySequence_GetSlice(PyWeakref_GET_OBJECT(proxy), i, j);
-}
-
-static int
-proxy_ass_slice(PyWeakReference *proxy, Py_ssize_t i, Py_ssize_t j, PyObject *value)
-{
-    if (!proxy_checkref(proxy))
-        return -1;
-    return PySequence_SetSlice(PyWeakref_GET_OBJECT(proxy), i, j, value);
-}
-
-static int
-proxy_contains(PyWeakReference *proxy, PyObject *value)
-{
-    if (!proxy_checkref(proxy))
-        return -1;
-    return PySequence_Contains(PyWeakref_GET_OBJECT(proxy), value);
-}
-
-
-/* mapping slots */
-
-static Py_ssize_t
-proxy_length(PyWeakReference *proxy)
-{
-    if (!proxy_checkref(proxy))
-        return -1;
-    return PyObject_Length(PyWeakref_GET_OBJECT(proxy));
-}
-
-WRAP_BINARY(proxy_getitem, PyObject_GetItem)
-
-static int
-proxy_setitem(PyWeakReference *proxy, PyObject *key, PyObject *value)
-{
-    if (!proxy_checkref(proxy))
-        return -1;
-
-    if (value == NULL)
-        return PyObject_DelItem(PyWeakref_GET_OBJECT(proxy), key);
-    else
-        return PyObject_SetItem(PyWeakref_GET_OBJECT(proxy), key, value);
-}
-
-/* iterator slots */
-
-static PyObject *
-proxy_iter(PyWeakReference *proxy)
-{
-    if (!proxy_checkref(proxy))
-        return NULL;
-    return PyObject_GetIter(PyWeakref_GET_OBJECT(proxy));
-}
-
-static PyObject *
-proxy_iternext(PyWeakReference *proxy)
-{
-    if (!proxy_checkref(proxy))
-        return NULL;
-    return PyIter_Next(PyWeakref_GET_OBJECT(proxy));
-}
-
-
-WRAP_METHOD(proxy_unicode, "__unicode__");
-
-
-static PyMethodDef proxy_methods[] = {
-        {"__unicode__", (PyCFunction)proxy_unicode, METH_NOARGS},
-        {NULL, NULL}
-};
-
-
-static PyNumberMethods proxy_as_number = {
-    proxy_add,              /*nb_add*/
-    proxy_sub,              /*nb_subtract*/
-    proxy_mul,              /*nb_multiply*/
-    proxy_div,              /*nb_divide*/
-    proxy_mod,              /*nb_remainder*/
-    proxy_divmod,           /*nb_divmod*/
-    proxy_pow,              /*nb_power*/
-    proxy_neg,              /*nb_negative*/
-    proxy_pos,              /*nb_positive*/
-    proxy_abs,              /*nb_absolute*/
-    (inquiry)proxy_nonzero, /*nb_nonzero*/
-    proxy_invert,           /*nb_invert*/
-    proxy_lshift,           /*nb_lshift*/
-    proxy_rshift,           /*nb_rshift*/
-    proxy_and,              /*nb_and*/
-    proxy_xor,              /*nb_xor*/
-    proxy_or,               /*nb_or*/
-    0,                      /*nb_coerce*/
-    proxy_int,              /*nb_int*/
-    proxy_long,             /*nb_long*/
-    proxy_float,            /*nb_float*/
-    0,                      /*nb_oct*/
-    0,                      /*nb_hex*/
-    proxy_iadd,             /*nb_inplace_add*/
-    proxy_isub,             /*nb_inplace_subtract*/
-    proxy_imul,             /*nb_inplace_multiply*/
-    proxy_idiv,             /*nb_inplace_divide*/
-    proxy_imod,             /*nb_inplace_remainder*/
-    proxy_ipow,             /*nb_inplace_power*/
-    proxy_ilshift,          /*nb_inplace_lshift*/
-    proxy_irshift,          /*nb_inplace_rshift*/
-    proxy_iand,             /*nb_inplace_and*/
-    proxy_ixor,             /*nb_inplace_xor*/
-    proxy_ior,              /*nb_inplace_or*/
-    proxy_floor_div,        /*nb_floor_divide*/
-    proxy_true_div,         /*nb_true_divide*/
-    proxy_ifloor_div,       /*nb_inplace_floor_divide*/
-    proxy_itrue_div,        /*nb_inplace_true_divide*/
-    proxy_index,            /*nb_index*/
-};
-
-static PySequenceMethods proxy_as_sequence = {
-    (lenfunc)proxy_length,      /*sq_length*/
-    0,                          /*sq_concat*/
-    0,                          /*sq_repeat*/
-    0,                          /*sq_item*/
-    (ssizessizeargfunc)proxy_slice, /*sq_slice*/
-    0,                          /*sq_ass_item*/
-    (ssizessizeobjargproc)proxy_ass_slice, /*sq_ass_slice*/
-    (objobjproc)proxy_contains, /* sq_contains */
-};
-
-static PyMappingMethods proxy_as_mapping = {
-    (lenfunc)proxy_length,        /*mp_length*/
-    proxy_getitem,                /*mp_subscript*/
-    (objobjargproc)proxy_setitem, /*mp_ass_subscript*/
-};
-
-
-PyTypeObject
-_PyWeakref_ProxyType = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "weakproxy",
-    sizeof(PyWeakReference),
-    0,
-    /* methods */
-    (destructor)proxy_dealloc,          /* tp_dealloc */
-    0,                                  /* tp_print */
-    0,                                  /* tp_getattr */
-    0,                                  /* tp_setattr */
-    proxy_compare,                      /* tp_compare */
-    (reprfunc)proxy_repr,               /* tp_repr */
-    &proxy_as_number,                   /* tp_as_number */
-    &proxy_as_sequence,                 /* tp_as_sequence */
-    &proxy_as_mapping,                  /* tp_as_mapping */
-    0,                                  /* tp_hash */
-    0,                                  /* tp_call */
-    proxy_str,                          /* tp_str */
-    proxy_getattr,                      /* tp_getattro */
-    (setattrofunc)proxy_setattr,        /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC
-    | Py_TPFLAGS_CHECKTYPES,            /* tp_flags */
-    0,                                  /* tp_doc */
-    (traverseproc)gc_traverse,          /* tp_traverse */
-    (inquiry)gc_clear,                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    (getiterfunc)proxy_iter,            /* tp_iter */
-    (iternextfunc)proxy_iternext,       /* tp_iternext */
-        proxy_methods,                      /* tp_methods */
-};
-
-
-PyTypeObject
-_PyWeakref_CallableProxyType = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "weakcallableproxy",
-    sizeof(PyWeakReference),
-    0,
-    /* methods */
-    (destructor)proxy_dealloc,          /* tp_dealloc */
-    0,                                  /* tp_print */
-    0,                                  /* tp_getattr */
-    0,                                  /* tp_setattr */
-    proxy_compare,                      /* tp_compare */
-    (unaryfunc)proxy_repr,              /* tp_repr */
-    &proxy_as_number,                   /* tp_as_number */
-    &proxy_as_sequence,                 /* tp_as_sequence */
-    &proxy_as_mapping,                  /* tp_as_mapping */
-    0,                                  /* tp_hash */
-    proxy_call,                         /* tp_call */
-    proxy_str,                          /* tp_str */
-    proxy_getattr,                      /* tp_getattro */
-    (setattrofunc)proxy_setattr,        /* tp_setattro */
-    0,                                  /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC
-    | Py_TPFLAGS_CHECKTYPES,            /* tp_flags */
-    0,                                  /* tp_doc */
-    (traverseproc)gc_traverse,          /* tp_traverse */
-    (inquiry)gc_clear,                  /* tp_clear */
-    0,                                  /* tp_richcompare */
-    0,                                  /* tp_weaklistoffset */
-    (getiterfunc)proxy_iter,            /* tp_iter */
-    (iternextfunc)proxy_iternext,       /* tp_iternext */
-};
-
-
-
-PyObject *
-PyWeakref_NewRef(PyObject *ob, PyObject *callback)
-{
-    PyWeakReference *result = NULL;
-    PyWeakReference **list;
-    PyWeakReference *ref, *proxy;
-
-    if (!PyType_SUPPORTS_WEAKREFS(Py_TYPE(ob))) {
-        PyErr_Format(PyExc_TypeError,
-                     "cannot create weak reference to '%s' object",
-                     Py_TYPE(ob)->tp_name);
-        return NULL;
-    }
-    list = GET_WEAKREFS_LISTPTR(ob);
-    get_basic_refs(*list, &ref, &proxy);
-    if (callback == Py_None)
-        callback = NULL;
-    if (callback == NULL)
-        /* return existing weak reference if it exists */
-        result = ref;
-    if (result != NULL)
-        Py_INCREF(result);
-    else {
-        /* Note: new_weakref() can trigger cyclic GC, so the weakref
-           list on ob can be mutated.  This means that the ref and
-           proxy pointers we got back earlier may have been collected,
-           so we need to compute these values again before we use
-           them. */
-        result = new_weakref(ob, callback);
-        if (result != NULL) {
-            get_basic_refs(*list, &ref, &proxy);
-            if (callback == NULL) {
-                if (ref == NULL)
-                    insert_head(result, list);
-                else {
-                    /* Someone else added a ref without a callback
-                       during GC.  Return that one instead of this one
-                       to avoid violating the invariants of the list
-                       of weakrefs for ob. */
-                    Py_DECREF(result);
-                    Py_INCREF(ref);
-                    result = ref;
-                }
-            }
-            else {
-                PyWeakReference *prev;
-
-                prev = (proxy == NULL) ? ref : proxy;
-                if (prev == NULL)
-                    insert_head(result, list);
-                else
-                    insert_after(result, prev);
-            }
-        }
-    }
-    return (PyObject *) result;
-}
-
-
-PyObject *
-PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
-{
-    PyWeakReference *result = NULL;
-    PyWeakReference **list;
-    PyWeakReference *ref, *proxy;
-
-    if (!PyType_SUPPORTS_WEAKREFS(Py_TYPE(ob))) {
-        PyErr_Format(PyExc_TypeError,
-                     "cannot create weak reference to '%s' object",
-                     Py_TYPE(ob)->tp_name);
-        return NULL;
-    }
-    list = GET_WEAKREFS_LISTPTR(ob);
-    get_basic_refs(*list, &ref, &proxy);
-    if (callback == Py_None)
-        callback = NULL;
-    if (callback == NULL)
-        /* attempt to return an existing weak reference if it exists */
-        result = proxy;
-    if (result != NULL)
-        Py_INCREF(result);
-    else {
-        /* Note: new_weakref() can trigger cyclic GC, so the weakref
-           list on ob can be mutated.  This means that the ref and
-           proxy pointers we got back earlier may have been collected,
-           so we need to compute these values again before we use
-           them. */
-        result = new_weakref(ob, callback);
-        if (result != NULL) {
-            PyWeakReference *prev;
-
-            if (PyCallable_Check(ob))
-                Py_TYPE(result) = &_PyWeakref_CallableProxyType;
-            else
-                Py_TYPE(result) = &_PyWeakref_ProxyType;
-            get_basic_refs(*list, &ref, &proxy);
-            if (callback == NULL) {
-                if (proxy != NULL) {
-                    /* Someone else added a proxy without a callback
-                       during GC.  Return that one instead of this one
-                       to avoid violating the invariants of the list
-                       of weakrefs for ob. */
-                    Py_DECREF(result);
-                    Py_INCREF(result = proxy);
-                    goto skip_insert;
-                }
-                prev = ref;
-            }
-            else
-                prev = (proxy == NULL) ? ref : proxy;
-
-            if (prev == NULL)
-                insert_head(result, list);
-            else
-                insert_after(result, prev);
-        skip_insert:
-            ;
-        }
-    }
-    return (PyObject *) result;
-}
-
-
-PyObject *
-PyWeakref_GetObject(PyObject *ref)
-{
-    if (ref == NULL || !PyWeakref_Check(ref)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    return PyWeakref_GET_OBJECT(ref);
-}
-
-/* Note that there's an inlined copy-paste of handle_callback() in gcmodule.c's
- * handle_weakrefs().
- */
-static void
-handle_callback(PyWeakReference *ref, PyObject *callback)
-{
-    PyObject *cbresult = PyObject_CallFunctionObjArgs(callback, ref, NULL);
-
-    if (cbresult == NULL)
-        PyErr_WriteUnraisable(callback);
-    else
-        Py_DECREF(cbresult);
-}
-
-/* This function is called by the tp_dealloc handler to clear weak references.
- *
- * This iterates through the weak references for 'object' and calls callbacks
- * for those references which have one.  It returns when all callbacks have
- * been attempted.
- */
-void
-PyObject_ClearWeakRefs(PyObject *object)
-{
-    PyWeakReference **list;
-
-    if (object == NULL
-        || !PyType_SUPPORTS_WEAKREFS(Py_TYPE(object))
-        || object->ob_refcnt != 0) {
-        PyErr_BadInternalCall();
-        return;
-    }
-    list = GET_WEAKREFS_LISTPTR(object);
-    /* Remove the callback-less basic and proxy references */
-    if (*list != NULL && (*list)->wr_callback == NULL) {
-        clear_weakref(*list);
-        if (*list != NULL && (*list)->wr_callback == NULL)
-            clear_weakref(*list);
-    }
-    if (*list != NULL) {
-        PyWeakReference *current = *list;
-        Py_ssize_t count = _PyWeakref_GetWeakrefCount(current);
-        int restore_error = PyErr_Occurred() ? 1 : 0;
-        PyObject *err_type    = NULL,
-                 *err_value   = NULL,
-                 *err_tb      = NULL;
-
-        if (restore_error)
-            PyErr_Fetch(&err_type, &err_value, &err_tb);
-        if (count == 1) {
-            PyObject *callback = current->wr_callback;
-
-            current->wr_callback = NULL;
-            clear_weakref(current);
-            if (callback != NULL) {
-                if (current->ob_refcnt > 0)
-                    handle_callback(current, callback);
-                Py_DECREF(callback);
-            }
-        }
-        else {
-            PyObject *tuple;
-            Py_ssize_t i = 0;
-
-            tuple = PyTuple_New(count * 2);
-            if (tuple == NULL) {
-                if (restore_error)
-                    PyErr_Fetch(&err_type, &err_value, &err_tb);
-                return;
-            }
-
-            for (i = 0; i < count; ++i) {
-                PyWeakReference *next = current->wr_next;
-
-                if (current->ob_refcnt > 0)
-                {
-                    Py_INCREF(current);
-                    PyTuple_SET_ITEM(tuple, i * 2, (PyObject *) current);
-                    PyTuple_SET_ITEM(tuple, i * 2 + 1, current->wr_callback);
-                }
-                else {
-                    Py_DECREF(current->wr_callback);
-                }
-                current->wr_callback = NULL;
-                clear_weakref(current);
-                current = next;
-            }
-            for (i = 0; i < count; ++i) {
-                PyObject *callback = PyTuple_GET_ITEM(tuple, i * 2 + 1);
-
-                /* The tuple may have slots left to NULL */
-                if (callback != NULL) {
-                    PyObject *item = PyTuple_GET_ITEM(tuple, i * 2);
-                    handle_callback((PyWeakReference *)item, callback);
-                }
-            }
-            Py_DECREF(tuple);
-        }
-        if (restore_error)
-            PyErr_Restore(err_type, err_value, err_tb);
-    }
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/Python.asdl b/AppPkg/Applications/Python/Python-2.7.2/Parser/Python.asdl
deleted file mode 100644
index 9e7c1f5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/Python.asdl
+++ /dev/null
@@ -1,115 +0,0 @@
--- ASDL's five builtin types are identifier, int, string, object, bool
-
-module Python version "$Revision$"
-{
-	mod = Module(stmt* body)
-	    | Interactive(stmt* body)
-	    | Expression(expr body)
-
-	    -- not really an actual node but useful in Jython's typesystem.
-	    | Suite(stmt* body)
-
-	stmt = FunctionDef(identifier name, arguments args, 
-                            stmt* body, expr* decorator_list)
-	      | ClassDef(identifier name, expr* bases, stmt* body, expr* decorator_list)
-	      | Return(expr? value)
-
-	      | Delete(expr* targets)
-	      | Assign(expr* targets, expr value)
-	      | AugAssign(expr target, operator op, expr value)
-
-	      -- not sure if bool is allowed, can always use int
- 	      | Print(expr? dest, expr* values, bool nl)
-
-	      -- use 'orelse' because else is a keyword in target languages
-	      | For(expr target, expr iter, stmt* body, stmt* orelse)
-	      | While(expr test, stmt* body, stmt* orelse)
-	      | If(expr test, stmt* body, stmt* orelse)
-	      | With(expr context_expr, expr? optional_vars, stmt* body)
-
-	      -- 'type' is a bad name
-	      | Raise(expr? type, expr? inst, expr? tback)
-	      | TryExcept(stmt* body, excepthandler* handlers, stmt* orelse)
-	      | TryFinally(stmt* body, stmt* finalbody)
-	      | Assert(expr test, expr? msg)
-
-	      | Import(alias* names)
-	      | ImportFrom(identifier? module, alias* names, int? level)
-
-	      -- Doesn't capture requirement that locals must be
-	      -- defined if globals is
-	      -- still supports use as a function!
-	      | Exec(expr body, expr? globals, expr? locals)
-
-	      | Global(identifier* names)
-	      | Expr(expr value)
-	      | Pass | Break | Continue
-
-	      -- XXX Jython will be different
-	      -- col_offset is the byte offset in the utf8 string the parser uses
-	      attributes (int lineno, int col_offset)
-
-	      -- BoolOp() can use left & right?
-	expr = BoolOp(boolop op, expr* values)
-	     | BinOp(expr left, operator op, expr right)
-	     | UnaryOp(unaryop op, expr operand)
-	     | Lambda(arguments args, expr body)
-	     | IfExp(expr test, expr body, expr orelse)
-	     | Dict(expr* keys, expr* values)
-	     | Set(expr* elts)
-	     | ListComp(expr elt, comprehension* generators)
-	     | SetComp(expr elt, comprehension* generators)
-	     | DictComp(expr key, expr value, comprehension* generators)
-	     | GeneratorExp(expr elt, comprehension* generators)
-	     -- the grammar constrains where yield expressions can occur
-	     | Yield(expr? value)
-	     -- need sequences for compare to distinguish between
-	     -- x < 4 < 3 and (x < 4) < 3
-	     | Compare(expr left, cmpop* ops, expr* comparators)
-	     | Call(expr func, expr* args, keyword* keywords,
-			 expr? starargs, expr? kwargs)
-	     | Repr(expr value)
-	     | Num(object n) -- a number as a PyObject.
-	     | Str(string s) -- need to specify raw, unicode, etc?
-	     -- other literals? bools?
-
-	     -- the following expression can appear in assignment context
-	     | Attribute(expr value, identifier attr, expr_context ctx)
-	     | Subscript(expr value, slice slice, expr_context ctx)
-	     | Name(identifier id, expr_context ctx)
-	     | List(expr* elts, expr_context ctx) 
-	     | Tuple(expr* elts, expr_context ctx)
-
-	      -- col_offset is the byte offset in the utf8 string the parser uses
-	      attributes (int lineno, int col_offset)
-
-	expr_context = Load | Store | Del | AugLoad | AugStore | Param
-
-	slice = Ellipsis | Slice(expr? lower, expr? upper, expr? step) 
-	      | ExtSlice(slice* dims) 
-	      | Index(expr value) 
-
-	boolop = And | Or 
-
-	operator = Add | Sub | Mult | Div | Mod | Pow | LShift 
-                 | RShift | BitOr | BitXor | BitAnd | FloorDiv
-
-	unaryop = Invert | Not | UAdd | USub
-
-	cmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn
-
-	comprehension = (expr target, expr iter, expr* ifs)
-
-	-- not sure what to call the first argument for raise and except
-	excepthandler = ExceptHandler(expr? type, expr? name, stmt* body)
-	                attributes (int lineno, int col_offset)
-
-	arguments = (expr* args, identifier? vararg, 
-		     identifier? kwarg, expr* defaults)
-
-        -- keyword arguments supplied to call
-        keyword = (identifier arg, expr value)
-
-        -- import name with optional 'as' alias.
-        alias = (identifier name, identifier? asname)
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/acceler.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/acceler.c
deleted file mode 100644
index f6036d9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/acceler.c
+++ /dev/null
@@ -1,125 +0,0 @@
-
-/* Parser accelerator module */
-
-/* The parser as originally conceived had disappointing performance.
-   This module does some precomputation that speeds up the selection
-   of a DFA based upon a token, turning a search through an array
-   into a simple indexing operation.  The parser now cannot work
-   without the accelerators installed.  Note that the accelerators
-   are installed dynamically when the parser is initialized, they
-   are not part of the static data structure written on graminit.[ch]
-   by the parser generator. */
-
-#include "pgenheaders.h"
-#include "grammar.h"
-#include "node.h"
-#include "token.h"
-#include "parser.h"
-
-/* Forward references */
-static void fixdfa(grammar *, dfa *);
-static void fixstate(grammar *, state *);
-
-void
-PyGrammar_AddAccelerators(grammar *g)
-{
-    dfa *d;
-    int i;
-    d = g->g_dfa;
-    for (i = g->g_ndfas; --i >= 0; d++)
-        fixdfa(g, d);
-    g->g_accel = 1;
-}
-
-void
-PyGrammar_RemoveAccelerators(grammar *g)
-{
-    dfa *d;
-    int i;
-    g->g_accel = 0;
-    d = g->g_dfa;
-    for (i = g->g_ndfas; --i >= 0; d++) {
-        state *s;
-        int j;
-        s = d->d_state;
-        for (j = 0; j < d->d_nstates; j++, s++) {
-            if (s->s_accel)
-                PyObject_FREE(s->s_accel);
-            s->s_accel = NULL;
-        }
-    }
-}
-
-static void
-fixdfa(grammar *g, dfa *d)
-{
-    state *s;
-    int j;
-    s = d->d_state;
-    for (j = 0; j < d->d_nstates; j++, s++)
-        fixstate(g, s);
-}
-
-static void
-fixstate(grammar *g, state *s)
-{
-    arc *a;
-    int k;
-    int *accel;
-    int nl = g->g_ll.ll_nlabels;
-    s->s_accept = 0;
-    accel = (int *) PyObject_MALLOC(nl * sizeof(int));
-    if (accel == NULL) {
-        fprintf(stderr, "no mem to build parser accelerators\n");
-        exit(1);
-    }
-    for (k = 0; k < nl; k++)
-        accel[k] = -1;
-    a = s->s_arc;
-    for (k = s->s_narcs; --k >= 0; a++) {
-        int lbl = a->a_lbl;
-        label *l = &g->g_ll.ll_label[lbl];
-        int type = l->lb_type;
-        if (a->a_arrow >= (1 << 7)) {
-            printf("XXX too many states!\n");
-            continue;
-        }
-        if (ISNONTERMINAL(type)) {
-            dfa *d1 = PyGrammar_FindDFA(g, type);
-            int ibit;
-            if (type - NT_OFFSET >= (1 << 7)) {
-                printf("XXX too high nonterminal number!\n");
-                continue;
-            }
-            for (ibit = 0; ibit < g->g_ll.ll_nlabels; ibit++) {
-                if (testbit(d1->d_first, ibit)) {
-                    if (accel[ibit] != -1)
-                        printf("XXX ambiguity!\n");
-                    accel[ibit] = a->a_arrow | (1 << 7) |
-                        ((type - NT_OFFSET) << 8);
-                }
-            }
-        }
-        else if (lbl == EMPTY)
-            s->s_accept = 1;
-        else if (lbl >= 0 && lbl < nl)
-            accel[lbl] = a->a_arrow;
-    }
-    while (nl > 0 && accel[nl-1] == -1)
-        nl--;
-    for (k = 0; k < nl && accel[k] == -1;)
-        k++;
-    if (k < nl) {
-        int i;
-        s->s_accel = (int *) PyObject_MALLOC((nl-k) * sizeof(int));
-        if (s->s_accel == NULL) {
-            fprintf(stderr, "no mem to add parser accelerators\n");
-            exit(1);
-        }
-        s->s_lower = k;
-        s->s_upper = nl;
-        for (i = 0; k < nl; i++, k++)
-            s->s_accel[i] = accel[k];
-    }
-    PyObject_FREE(accel);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/asdl.py b/AppPkg/Applications/Python/Python-2.7.2/Parser/asdl.py
deleted file mode 100644
index 7af84e8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/asdl.py
+++ /dev/null
@@ -1,413 +0,0 @@
-"""An implementation of the Zephyr Abstract Syntax Definition Language.
-
-See http://asdl.sourceforge.net/ and
-http://www.cs.princeton.edu/research/techreps/TR-554-97
-
-Only supports top level module decl, not view.  I'm guessing that view
-is intended to support the browser and I'm not interested in the
-browser.
-
-Changes for Python: Add support for module versions
-"""
-
-import os
-import traceback
-
-import spark
-
-class Token(object):
-    # spark seems to dispatch in the parser based on a token's
-    # type attribute
-    def __init__(self, type, lineno):
-        self.type = type
-        self.lineno = lineno
-
-    def __str__(self):
-        return self.type
-
-    def __repr__(self):
-        return str(self)
-
-class Id(Token):
-    def __init__(self, value, lineno):
-        self.type = 'Id'
-        self.value = value
-        self.lineno = lineno
-
-    def __str__(self):
-        return self.value
-
-class String(Token):
-    def __init__(self, value, lineno):
-        self.type = 'String'
-        self.value = value
-        self.lineno = lineno
-
-class ASDLSyntaxError(Exception):
-
-    def __init__(self, lineno, token=None, msg=None):
-        self.lineno = lineno
-        self.token = token
-        self.msg = msg
-
-    def __str__(self):
-        if self.msg is None:
-            return "Error at '%s', line %d" % (self.token, self.lineno)
-        else:
-            return "%s, line %d" % (self.msg, self.lineno)
-
-class ASDLScanner(spark.GenericScanner, object):
-
-    def tokenize(self, input):
-        self.rv = []
-        self.lineno = 1
-        super(ASDLScanner, self).tokenize(input)
-        return self.rv
-
-    def t_id(self, s):
-        r"[\w\.]+"
-        # XXX doesn't distinguish upper vs. lower, which is
-        # significant for ASDL.
-        self.rv.append(Id(s, self.lineno))
-
-    def t_string(self, s):
-        r'"[^"]*"'
-        self.rv.append(String(s, self.lineno))
-
-    def t_xxx(self, s): # not sure what this production means
-        r"<="
-        self.rv.append(Token(s, self.lineno))
-
-    def t_punctuation(self, s):
-        r"[\{\}\*\=\|\(\)\,\?\:]"
-        self.rv.append(Token(s, self.lineno))
-
-    def t_comment(self, s):
-        r"\-\-[^\n]*"
-        pass
-
-    def t_newline(self, s):
-        r"\n"
-        self.lineno += 1
-
-    def t_whitespace(self, s):
-        r"[ \t]+"
-        pass
-
-    def t_default(self, s):
-        r" . +"
-        raise ValueError, "unmatched input: %s" % `s`
-
-class ASDLParser(spark.GenericParser, object):
-    def __init__(self):
-        super(ASDLParser, self).__init__("module")
-
-    def typestring(self, tok):
-        return tok.type
-
-    def error(self, tok):
-        raise ASDLSyntaxError(tok.lineno, tok)
-
-    def p_module_0(self, (module, name, version, _0, _1)):
-        " module ::= Id Id version { } "
-        if module.value != "module":
-            raise ASDLSyntaxError(module.lineno,
-                                  msg="expected 'module', found %s" % module)
-        return Module(name, None, version)
-
-    def p_module(self, (module, name, version, _0, definitions, _1)):
-        " module ::= Id Id version { definitions } "
-        if module.value != "module":
-            raise ASDLSyntaxError(module.lineno,
-                                  msg="expected 'module', found %s" % module)
-        return Module(name, definitions, version)
-
-    def p_version(self, (version, V)):
-        "version ::= Id String"
-        if version.value != "version":
-            raise ASDLSyntaxError(version.lineno,
-                                msg="expected 'version', found %" % version)
-        return V
-
-    def p_definition_0(self, (definition,)):
-        " definitions ::= definition "
-        return definition
-
-    def p_definition_1(self, (definitions, definition)):
-        " definitions ::= definition definitions "
-        return definitions + definition
-
-    def p_definition(self, (id, _, type)):
-        " definition ::= Id = type "
-        return [Type(id, type)]
-
-    def p_type_0(self, (product,)):
-        " type ::= product "
-        return product
-
-    def p_type_1(self, (sum,)):
-        " type ::= sum "
-        return Sum(sum)
-
-    def p_type_2(self, (sum, id, _0, attributes, _1)):
-        " type ::= sum Id ( fields ) "
-        if id.value != "attributes":
-            raise ASDLSyntaxError(id.lineno,
-                                  msg="expected attributes, found %s" % id)
-        if attributes:
-            attributes.reverse()
-        return Sum(sum, attributes)
-
-    def p_product(self, (_0, fields, _1)):
-        " product ::= ( fields ) "
-        # XXX can't I just construct things in the right order?
-        fields.reverse()
-        return Product(fields)
-
-    def p_sum_0(self, (constructor,)):
-        " sum ::= constructor "
-        return [constructor]
-
-    def p_sum_1(self, (constructor, _, sum)):
-        " sum ::= constructor | sum "
-        return [constructor] + sum
-
-    def p_sum_2(self, (constructor, _, sum)):
-        " sum ::= constructor | sum "
-        return [constructor] + sum
-
-    def p_constructor_0(self, (id,)):
-        " constructor ::= Id "
-        return Constructor(id)
-
-    def p_constructor_1(self, (id, _0, fields, _1)):
-        " constructor ::= Id ( fields ) "
-        # XXX can't I just construct things in the right order?
-        fields.reverse()
-        return Constructor(id, fields)
-
-    def p_fields_0(self, (field,)):
-        " fields ::= field "
-        return [field]
-
-    def p_fields_1(self, (field, _, fields)):
-        " fields ::= field , fields "
-        return fields + [field]
-
-    def p_field_0(self, (type,)):
-        " field ::= Id "
-        return Field(type)
-
-    def p_field_1(self, (type, name)):
-        " field ::= Id Id "
-        return Field(type, name)
-
-    def p_field_2(self, (type, _, name)):
-        " field ::= Id * Id "
-        return Field(type, name, seq=True)
-
-    def p_field_3(self, (type, _, name)):
-        " field ::= Id ? Id "
-        return Field(type, name, opt=True)
-
-    def p_field_4(self, (type, _)):
-        " field ::= Id * "
-        return Field(type, seq=True)
-
-    def p_field_5(self, (type, _)):
-        " field ::= Id ? "
-        return Field(type, opt=True)
-
-builtin_types = ("identifier", "string", "int", "bool", "object")
-
-# below is a collection of classes to capture the AST of an AST :-)
-# not sure if any of the methods are useful yet, but I'm adding them
-# piecemeal as they seem helpful
-
-class AST(object):
-    pass # a marker class
-
-class Module(AST):
-    def __init__(self, name, dfns, version):
-        self.name = name
-        self.dfns = dfns
-        self.version = version
-        self.types = {} # maps type name to value (from dfns)
-        for type in dfns:
-            self.types[type.name.value] = type.value
-
-    def __repr__(self):
-        return "Module(%s, %s)" % (self.name, self.dfns)
-
-class Type(AST):
-    def __init__(self, name, value):
-        self.name = name
-        self.value = value
-
-    def __repr__(self):
-        return "Type(%s, %s)" % (self.name, self.value)
-
-class Constructor(AST):
-    def __init__(self, name, fields=None):
-        self.name = name
-        self.fields = fields or []
-
-    def __repr__(self):
-        return "Constructor(%s, %s)" % (self.name, self.fields)
-
-class Field(AST):
-    def __init__(self, type, name=None, seq=False, opt=False):
-        self.type = type
-        self.name = name
-        self.seq = seq
-        self.opt = opt
-
-    def __repr__(self):
-        if self.seq:
-            extra = ", seq=True"
-        elif self.opt:
-            extra = ", opt=True"
-        else:
-            extra = ""
-        if self.name is None:
-            return "Field(%s%s)" % (self.type, extra)
-        else:
-            return "Field(%s, %s%s)" % (self.type, self.name, extra)
-
-class Sum(AST):
-    def __init__(self, types, attributes=None):
-        self.types = types
-        self.attributes = attributes or []
-
-    def __repr__(self):
-        if self.attributes is None:
-            return "Sum(%s)" % self.types
-        else:
-            return "Sum(%s, %s)" % (self.types, self.attributes)
-
-class Product(AST):
-    def __init__(self, fields):
-        self.fields = fields
-
-    def __repr__(self):
-        return "Product(%s)" % self.fields
-
-class VisitorBase(object):
-
-    def __init__(self, skip=False):
-        self.cache = {}
-        self.skip = skip
-
-    def visit(self, object, *args):
-        meth = self._dispatch(object)
-        if meth is None:
-            return
-        try:
-            meth(object, *args)
-        except Exception, err:
-            print "Error visiting", repr(object)
-            print err
-            traceback.print_exc()
-            # XXX hack
-            if hasattr(self, 'file'):
-                self.file.flush()
-            os._exit(1)
-
-    def _dispatch(self, object):
-        assert isinstance(object, AST), repr(object)
-        klass = object.__class__
-        meth = self.cache.get(klass)
-        if meth is None:
-            methname = "visit" + klass.__name__
-            if self.skip:
-                meth = getattr(self, methname, None)
-            else:
-                meth = getattr(self, methname)
-            self.cache[klass] = meth
-        return meth
-
-class Check(VisitorBase):
-
-    def __init__(self):
-        super(Check, self).__init__(skip=True)
-        self.cons = {}
-        self.errors = 0
-        self.types = {}
-
-    def visitModule(self, mod):
-        for dfn in mod.dfns:
-            self.visit(dfn)
-
-    def visitType(self, type):
-        self.visit(type.value, str(type.name))
-
-    def visitSum(self, sum, name):
-        for t in sum.types:
-            self.visit(t, name)
-
-    def visitConstructor(self, cons, name):
-        key = str(cons.name)
-        conflict = self.cons.get(key)
-        if conflict is None:
-            self.cons[key] = name
-        else:
-            print "Redefinition of constructor %s" % key
-            print "Defined in %s and %s" % (conflict, name)
-            self.errors += 1
-        for f in cons.fields:
-            self.visit(f, key)
-
-    def visitField(self, field, name):
-        key = str(field.type)
-        l = self.types.setdefault(key, [])
-        l.append(name)
-
-    def visitProduct(self, prod, name):
-        for f in prod.fields:
-            self.visit(f, name)
-
-def check(mod):
-    v = Check()
-    v.visit(mod)
-
-    for t in v.types:
-        if t not in mod.types and not t in builtin_types:
-            v.errors += 1
-            uses = ", ".join(v.types[t])
-            print "Undefined type %s, used in %s" % (t, uses)
-
-    return not v.errors
-
-def parse(file):
-    scanner = ASDLScanner()
-    parser = ASDLParser()
-
-    buf = open(file).read()
-    tokens = scanner.tokenize(buf)
-    try:
-        return parser.parse(tokens)
-    except ASDLSyntaxError, err:
-        print err
-        lines = buf.split("\n")
-        print lines[err.lineno - 1] # lines starts at 0, files at 1
-
-if __name__ == "__main__":
-    import glob
-    import sys
-
-    if len(sys.argv) > 1:
-        files = sys.argv[1:]
-    else:
-        testdir = "tests"
-        files = glob.glob(testdir + "/*.asdl")
-
-    for file in files:
-        print file
-        mod = parse(file)
-        print "module", mod.name
-        print len(mod.dfns), "definitions"
-        if not check(mod):
-            print "Check failed"
-        else:
-            for dfn in mod.dfns:
-                print dfn.type
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/asdl_c.py b/AppPkg/Applications/Python/Python-2.7.2/Parser/asdl_c.py
deleted file mode 100644
index 421ee0b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/asdl_c.py
+++ /dev/null
@@ -1,1220 +0,0 @@
-#! /usr/bin/env python
-"""Generate C code from an ASDL description."""
-
-# TO DO
-# handle fields that have a type but no name
-
-import os, sys
-
-import asdl
-
-TABSIZE = 8
-MAX_COL = 80
-
-def get_c_type(name):
-    """Return a string for the C name of the type.
-
-    This function special cases the default types provided by asdl:
-    identifier, string, int, bool.
-    """
-    # XXX ack!  need to figure out where Id is useful and where string
-    if isinstance(name, asdl.Id):
-        name = name.value
-    if name in asdl.builtin_types:
-        return name
-    else:
-        return "%s_ty" % name
-
-def reflow_lines(s, depth):
-    """Reflow the line s indented depth tabs.
-
-    Return a sequence of lines where no line extends beyond MAX_COL
-    when properly indented.  The first line is properly indented based
-    exclusively on depth * TABSIZE.  All following lines -- these are
-    the reflowed lines generated by this function -- start at the same
-    column as the first character beyond the opening { in the first
-    line.
-    """
-    size = MAX_COL - depth * TABSIZE
-    if len(s) < size:
-        return [s]
-
-    lines = []
-    cur = s
-    padding = ""
-    while len(cur) > size:
-        i = cur.rfind(' ', 0, size)
-        # XXX this should be fixed for real
-        if i == -1 and 'GeneratorExp' in cur:
-            i = size + 3
-        assert i != -1, "Impossible line %d to reflow: %r" % (size, s)
-        lines.append(padding + cur[:i])
-        if len(lines) == 1:
-            # find new size based on brace
-            j = cur.find('{', 0, i)
-            if j >= 0:
-                j += 2 # account for the brace and the space after it
-                size -= j
-                padding = " " * j
-            else:
-                j = cur.find('(', 0, i)
-                if j >= 0:
-                    j += 1 # account for the paren (no space after it)
-                    size -= j
-                    padding = " " * j
-        cur = cur[i+1:]
-    else:
-        lines.append(padding + cur)
-    return lines
-
-def is_simple(sum):
-    """Return True if a sum is a simple.
-
-    A sum is simple if its types have no fields, e.g.
-    unaryop = Invert | Not | UAdd | USub
-    """
-    for t in sum.types:
-        if t.fields:
-            return False
-    return True
-
-
-class EmitVisitor(asdl.VisitorBase):
-    """Visit that emits lines"""
-
-    def __init__(self, file):
-        self.file = file
-        super(EmitVisitor, self).__init__()
-
-    def emit(self, s, depth, reflow=True):
-        # XXX reflow long lines?
-        if reflow:
-            lines = reflow_lines(s, depth)
-        else:
-            lines = [s]
-        for line in lines:
-            line = (" " * TABSIZE * depth) + line + "\n"
-            self.file.write(line)
-
-
-class TypeDefVisitor(EmitVisitor):
-    def visitModule(self, mod):
-        for dfn in mod.dfns:
-            self.visit(dfn)
-
-    def visitType(self, type, depth=0):
-        self.visit(type.value, type.name, depth)
-
-    def visitSum(self, sum, name, depth):
-        if is_simple(sum):
-            self.simple_sum(sum, name, depth)
-        else:
-            self.sum_with_constructors(sum, name, depth)
-
-    def simple_sum(self, sum, name, depth):
-        enum = []
-        for i in range(len(sum.types)):
-            type = sum.types[i]
-            enum.append("%s=%d" % (type.name, i + 1))
-        enums = ", ".join(enum)
-        ctype = get_c_type(name)
-        s = "typedef enum _%s { %s } %s;" % (name, enums, ctype)
-        self.emit(s, depth)
-        self.emit("", depth)
-
-    def sum_with_constructors(self, sum, name, depth):
-        ctype = get_c_type(name)
-        s = "typedef struct _%(name)s *%(ctype)s;" % locals()
-        self.emit(s, depth)
-        self.emit("", depth)
-
-    def visitProduct(self, product, name, depth):
-        ctype = get_c_type(name)
-        s = "typedef struct _%(name)s *%(ctype)s;" % locals()
-        self.emit(s, depth)
-        self.emit("", depth)
-
-
-class StructVisitor(EmitVisitor):
-    """Visitor to generate typdefs for AST."""
-
-    def visitModule(self, mod):
-        for dfn in mod.dfns:
-            self.visit(dfn)
-
-    def visitType(self, type, depth=0):
-        self.visit(type.value, type.name, depth)
-
-    def visitSum(self, sum, name, depth):
-        if not is_simple(sum):
-            self.sum_with_constructors(sum, name, depth)
-
-    def sum_with_constructors(self, sum, name, depth):
-        def emit(s, depth=depth):
-            self.emit(s % sys._getframe(1).f_locals, depth)
-        enum = []
-        for i in range(len(sum.types)):
-            type = sum.types[i]
-            enum.append("%s_kind=%d" % (type.name, i + 1))
-
-        emit("enum _%(name)s_kind {" + ", ".join(enum) + "};")
-
-        emit("struct _%(name)s {")
-        emit("enum _%(name)s_kind kind;", depth + 1)
-        emit("union {", depth + 1)
-        for t in sum.types:
-            self.visit(t, depth + 2)
-        emit("} v;", depth + 1)
-        for field in sum.attributes:
-            # rudimentary attribute handling
-            type = str(field.type)
-            assert type in asdl.builtin_types, type
-            emit("%s %s;" % (type, field.name), depth + 1);
-        emit("};")
-        emit("")
-
-    def visitConstructor(self, cons, depth):
-        if cons.fields:
-            self.emit("struct {", depth)
-            for f in cons.fields:
-                self.visit(f, depth + 1)
-            self.emit("} %s;" % cons.name, depth)
-            self.emit("", depth)
-        else:
-            # XXX not sure what I want here, nothing is probably fine
-            pass
-
-    def visitField(self, field, depth):
-        # XXX need to lookup field.type, because it might be something
-        # like a builtin...
-        ctype = get_c_type(field.type)
-        name = field.name
-        if field.seq:
-            if field.type.value in ('cmpop',):
-                self.emit("asdl_int_seq *%(name)s;" % locals(), depth)
-            else:
-                self.emit("asdl_seq *%(name)s;" % locals(), depth)
-        else:
-            self.emit("%(ctype)s %(name)s;" % locals(), depth)
-
-    def visitProduct(self, product, name, depth):
-        self.emit("struct _%(name)s {" % locals(), depth)
-        for f in product.fields:
-            self.visit(f, depth + 1)
-        self.emit("};", depth)
-        self.emit("", depth)
-
-
-class PrototypeVisitor(EmitVisitor):
-    """Generate function prototypes for the .h file"""
-
-    def visitModule(self, mod):
-        for dfn in mod.dfns:
-            self.visit(dfn)
-
-    def visitType(self, type):
-        self.visit(type.value, type.name)
-
-    def visitSum(self, sum, name):
-        if is_simple(sum):
-            pass # XXX
-        else:
-            for t in sum.types:
-                self.visit(t, name, sum.attributes)
-
-    def get_args(self, fields):
-        """Return list of C argument into, one for each field.
-
-        Argument info is 3-tuple of a C type, variable name, and flag
-        that is true if type can be NULL.
-        """
-        args = []
-        unnamed = {}
-        for f in fields:
-            if f.name is None:
-                name = f.type
-                c = unnamed[name] = unnamed.get(name, 0) + 1
-                if c > 1:
-                    name = "name%d" % (c - 1)
-            else:
-                name = f.name
-            # XXX should extend get_c_type() to handle this
-            if f.seq:
-                if f.type.value in ('cmpop',):
-                    ctype = "asdl_int_seq *"
-                else:
-                    ctype = "asdl_seq *"
-            else:
-                ctype = get_c_type(f.type)
-            args.append((ctype, name, f.opt or f.seq))
-        return args
-
-    def visitConstructor(self, cons, type, attrs):
-        args = self.get_args(cons.fields)
-        attrs = self.get_args(attrs)
-        ctype = get_c_type(type)
-        self.emit_function(cons.name, ctype, args, attrs)
-
-    def emit_function(self, name, ctype, args, attrs, union=True):
-        args = args + attrs
-        if args:
-            argstr = ", ".join(["%s %s" % (atype, aname)
-                                for atype, aname, opt in args])
-            argstr += ", PyArena *arena"
-        else:
-            argstr = "PyArena *arena"
-        margs = "a0"
-        for i in range(1, len(args)+1):
-            margs += ", a%d" % i
-        self.emit("#define %s(%s) _Py_%s(%s)" % (name, margs, name, margs), 0,
-                reflow=False)
-        self.emit("%s _Py_%s(%s);" % (ctype, name, argstr), False)
-
-    def visitProduct(self, prod, name):
-        self.emit_function(name, get_c_type(name),
-                           self.get_args(prod.fields), [], union=False)
-
-
-class FunctionVisitor(PrototypeVisitor):
-    """Visitor to generate constructor functions for AST."""
-
-    def emit_function(self, name, ctype, args, attrs, union=True):
-        def emit(s, depth=0, reflow=True):
-            self.emit(s, depth, reflow)
-        argstr = ", ".join(["%s %s" % (atype, aname)
-                            for atype, aname, opt in args + attrs])
-        if argstr:
-            argstr += ", PyArena *arena"
-        else:
-            argstr = "PyArena *arena"
-        self.emit("%s" % ctype, 0)
-        emit("%s(%s)" % (name, argstr))
-        emit("{")
-        emit("%s p;" % ctype, 1)
-        for argtype, argname, opt in args:
-            # XXX hack alert: false is allowed for a bool
-            if not opt and not (argtype == "bool" or argtype == "int"):
-                emit("if (!%s) {" % argname, 1)
-                emit("PyErr_SetString(PyExc_ValueError,", 2)
-                msg = "field %s is required for %s" % (argname, name)
-                emit('                "%s");' % msg,
-                     2, reflow=False)
-                emit('return NULL;', 2)
-                emit('}', 1)
-
-        emit("p = (%s)PyArena_Malloc(arena, sizeof(*p));" % ctype, 1);
-        emit("if (!p)", 1)
-        emit("return NULL;", 2)
-        if union:
-            self.emit_body_union(name, args, attrs)
-        else:
-            self.emit_body_struct(name, args, attrs)
-        emit("return p;", 1)
-        emit("}")
-        emit("")
-
-    def emit_body_union(self, name, args, attrs):
-        def emit(s, depth=0, reflow=True):
-            self.emit(s, depth, reflow)
-        emit("p->kind = %s_kind;" % name, 1)
-        for argtype, argname, opt in args:
-            emit("p->v.%s.%s = %s;" % (name, argname, argname), 1)
-        for argtype, argname, opt in attrs:
-            emit("p->%s = %s;" % (argname, argname), 1)
-
-    def emit_body_struct(self, name, args, attrs):
-        def emit(s, depth=0, reflow=True):
-            self.emit(s, depth, reflow)
-        for argtype, argname, opt in args:
-            emit("p->%s = %s;" % (argname, argname), 1)
-        assert not attrs
-
-
-class PickleVisitor(EmitVisitor):
-
-    def visitModule(self, mod):
-        for dfn in mod.dfns:
-            self.visit(dfn)
-
-    def visitType(self, type):
-        self.visit(type.value, type.name)
-
-    def visitSum(self, sum, name):
-        pass
-
-    def visitProduct(self, sum, name):
-        pass
-
-    def visitConstructor(self, cons, name):
-        pass
-
-    def visitField(self, sum):
-        pass
-
-
-class Obj2ModPrototypeVisitor(PickleVisitor):
-    def visitProduct(self, prod, name):
-        code = "static int obj2ast_%s(PyObject* obj, %s* out, PyArena* arena);"
-        self.emit(code % (name, get_c_type(name)), 0)
-
-    visitSum = visitProduct
-
-
-class Obj2ModVisitor(PickleVisitor):
-    def funcHeader(self, name):
-        ctype = get_c_type(name)
-        self.emit("int", 0)
-        self.emit("obj2ast_%s(PyObject* obj, %s* out, PyArena* arena)" % (name, ctype), 0)
-        self.emit("{", 0)
-        self.emit("PyObject* tmp = NULL;", 1)
-        self.emit("int isinstance;", 1)
-        self.emit("", 0)
-
-    def sumTrailer(self, name):
-        self.emit("", 0)
-        self.emit("tmp = PyObject_Repr(obj);", 1)
-        # there's really nothing more we can do if this fails ...
-        self.emit("if (tmp == NULL) goto failed;", 1)
-        error = "expected some sort of %s, but got %%.400s" % name
-        format = "PyErr_Format(PyExc_TypeError, \"%s\", PyString_AS_STRING(tmp));"
-        self.emit(format % error, 1, reflow=False)
-        self.emit("failed:", 0)
-        self.emit("Py_XDECREF(tmp);", 1)
-        self.emit("return 1;", 1)
-        self.emit("}", 0)
-        self.emit("", 0)
-
-    def simpleSum(self, sum, name):
-        self.funcHeader(name)
-        for t in sum.types:
-            line = ("isinstance = PyObject_IsInstance(obj, "
-                    "(PyObject *)%s_type);")
-            self.emit(line % (t.name,), 1)
-            self.emit("if (isinstance == -1) {", 1)
-            self.emit("return 1;", 2)
-            self.emit("}", 1)
-            self.emit("if (isinstance) {", 1)
-            self.emit("*out = %s;" % t.name, 2)
-            self.emit("return 0;", 2)
-            self.emit("}", 1)
-        self.sumTrailer(name)
-
-    def buildArgs(self, fields):
-        return ", ".join(fields + ["arena"])
-
-    def complexSum(self, sum, name):
-        self.funcHeader(name)
-        for a in sum.attributes:
-            self.visitAttributeDeclaration(a, name, sum=sum)
-        self.emit("", 0)
-        # XXX: should we only do this for 'expr'?
-        self.emit("if (obj == Py_None) {", 1)
-        self.emit("*out = NULL;", 2)
-        self.emit("return 0;", 2)
-        self.emit("}", 1)
-        for a in sum.attributes:
-            self.visitField(a, name, sum=sum, depth=1)
-        for t in sum.types:
-            line = "isinstance = PyObject_IsInstance(obj, (PyObject*)%s_type);"
-            self.emit(line % (t.name,), 1)
-            self.emit("if (isinstance == -1) {", 1)
-            self.emit("return 1;", 2)
-            self.emit("}", 1)
-            self.emit("if (isinstance) {", 1)
-            for f in t.fields:
-                self.visitFieldDeclaration(f, t.name, sum=sum, depth=2)
-            self.emit("", 0)
-            for f in t.fields:
-                self.visitField(f, t.name, sum=sum, depth=2)
-            args = [f.name.value for f in t.fields] + [a.name.value for a in sum.attributes]
-            self.emit("*out = %s(%s);" % (t.name, self.buildArgs(args)), 2)
-            self.emit("if (*out == NULL) goto failed;", 2)
-            self.emit("return 0;", 2)
-            self.emit("}", 1)
-        self.sumTrailer(name)
-
-    def visitAttributeDeclaration(self, a, name, sum=sum):
-        ctype = get_c_type(a.type)
-        self.emit("%s %s;" % (ctype, a.name), 1)
-
-    def visitSum(self, sum, name):
-        if is_simple(sum):
-            self.simpleSum(sum, name)
-        else:
-            self.complexSum(sum, name)
-
-    def visitProduct(self, prod, name):
-        ctype = get_c_type(name)
-        self.emit("int", 0)
-        self.emit("obj2ast_%s(PyObject* obj, %s* out, PyArena* arena)" % (name, ctype), 0)
-        self.emit("{", 0)
-        self.emit("PyObject* tmp = NULL;", 1)
-        for f in prod.fields:
-            self.visitFieldDeclaration(f, name, prod=prod, depth=1)
-        self.emit("", 0)
-        for f in prod.fields:
-            self.visitField(f, name, prod=prod, depth=1)
-        args = [f.name.value for f in prod.fields]
-        self.emit("*out = %s(%s);" % (name, self.buildArgs(args)), 1)
-        self.emit("return 0;", 1)
-        self.emit("failed:", 0)
-        self.emit("Py_XDECREF(tmp);", 1)
-        self.emit("return 1;", 1)
-        self.emit("}", 0)
-        self.emit("", 0)
-
-    def visitFieldDeclaration(self, field, name, sum=None, prod=None, depth=0):
-        ctype = get_c_type(field.type)
-        if field.seq:
-            if self.isSimpleType(field):
-                self.emit("asdl_int_seq* %s;" % field.name, depth)
-            else:
-                self.emit("asdl_seq* %s;" % field.name, depth)
-        else:
-            ctype = get_c_type(field.type)
-            self.emit("%s %s;" % (ctype, field.name), depth)
-
-    def isSimpleSum(self, field):
-        # XXX can the members of this list be determined automatically?
-        return field.type.value in ('expr_context', 'boolop', 'operator',
-                                    'unaryop', 'cmpop')
-
-    def isNumeric(self, field):
-        return get_c_type(field.type) in ("int", "bool")
-
-    def isSimpleType(self, field):
-        return self.isSimpleSum(field) or self.isNumeric(field)
-
-    def visitField(self, field, name, sum=None, prod=None, depth=0):
-        ctype = get_c_type(field.type)
-        self.emit("if (PyObject_HasAttrString(obj, \"%s\")) {" % field.name, depth)
-        self.emit("int res;", depth+1)
-        if field.seq:
-            self.emit("Py_ssize_t len;", depth+1)
-            self.emit("Py_ssize_t i;", depth+1)
-        self.emit("tmp = PyObject_GetAttrString(obj, \"%s\");" % field.name, depth+1)
-        self.emit("if (tmp == NULL) goto failed;", depth+1)
-        if field.seq:
-            self.emit("if (!PyList_Check(tmp)) {", depth+1)
-            self.emit("PyErr_Format(PyExc_TypeError, \"%s field \\\"%s\\\" must "
-                      "be a list, not a %%.200s\", tmp->ob_type->tp_name);" %
-                      (name, field.name),
-                      depth+2, reflow=False)
-            self.emit("goto failed;", depth+2)
-            self.emit("}", depth+1)
-            self.emit("len = PyList_GET_SIZE(tmp);", depth+1)
-            if self.isSimpleType(field):
-                self.emit("%s = asdl_int_seq_new(len, arena);" % field.name, depth+1)
-            else:
-                self.emit("%s = asdl_seq_new(len, arena);" % field.name, depth+1)
-            self.emit("if (%s == NULL) goto failed;" % field.name, depth+1)
-            self.emit("for (i = 0; i < len; i++) {", depth+1)
-            self.emit("%s value;" % ctype, depth+2)
-            self.emit("res = obj2ast_%s(PyList_GET_ITEM(tmp, i), &value, arena);" %
-                      field.type, depth+2, reflow=False)
-            self.emit("if (res != 0) goto failed;", depth+2)
-            self.emit("asdl_seq_SET(%s, i, value);" % field.name, depth+2)
-            self.emit("}", depth+1)
-        else:
-            self.emit("res = obj2ast_%s(tmp, &%s, arena);" %
-                      (field.type, field.name), depth+1)
-            self.emit("if (res != 0) goto failed;", depth+1)
-
-        self.emit("Py_XDECREF(tmp);", depth+1)
-        self.emit("tmp = NULL;", depth+1)
-        self.emit("} else {", depth)
-        if not field.opt:
-            message = "required field \\\"%s\\\" missing from %s" % (field.name, name)
-            format = "PyErr_SetString(PyExc_TypeError, \"%s\");"
-            self.emit(format % message, depth+1, reflow=False)
-            self.emit("return 1;", depth+1)
-        else:
-            if self.isNumeric(field):
-                self.emit("%s = 0;" % field.name, depth+1)
-            elif not self.isSimpleType(field):
-                self.emit("%s = NULL;" % field.name, depth+1)
-            else:
-                raise TypeError("could not determine the default value for %s" % field.name)
-        self.emit("}", depth)
-
-
-class MarshalPrototypeVisitor(PickleVisitor):
-
-    def prototype(self, sum, name):
-        ctype = get_c_type(name)
-        self.emit("static int marshal_write_%s(PyObject **, int *, %s);"
-                  % (name, ctype), 0)
-
-    visitProduct = visitSum = prototype
-
-
-class PyTypesDeclareVisitor(PickleVisitor):
-
-    def visitProduct(self, prod, name):
-        self.emit("static PyTypeObject *%s_type;" % name, 0)
-        self.emit("static PyObject* ast2obj_%s(void*);" % name, 0)
-        if prod.fields:
-            self.emit("static char *%s_fields[]={" % name,0)
-            for f in prod.fields:
-                self.emit('"%s",' % f.name, 1)
-            self.emit("};", 0)
-
-    def visitSum(self, sum, name):
-        self.emit("static PyTypeObject *%s_type;" % name, 0)
-        if sum.attributes:
-            self.emit("static char *%s_attributes[] = {" % name, 0)
-            for a in sum.attributes:
-                self.emit('"%s",' % a.name, 1)
-            self.emit("};", 0)
-        ptype = "void*"
-        if is_simple(sum):
-            ptype = get_c_type(name)
-            tnames = []
-            for t in sum.types:
-                tnames.append(str(t.name)+"_singleton")
-            tnames = ", *".join(tnames)
-            self.emit("static PyObject *%s;" % tnames, 0)
-        self.emit("static PyObject* ast2obj_%s(%s);" % (name, ptype), 0)
-        for t in sum.types:
-            self.visitConstructor(t, name)
-
-    def visitConstructor(self, cons, name):
-        self.emit("static PyTypeObject *%s_type;" % cons.name, 0)
-        if cons.fields:
-            self.emit("static char *%s_fields[]={" % cons.name, 0)
-            for t in cons.fields:
-                self.emit('"%s",' % t.name, 1)
-            self.emit("};",0)
-
-class PyTypesVisitor(PickleVisitor):
-
-    def visitModule(self, mod):
-        self.emit("""
-static int
-ast_type_init(PyObject *self, PyObject *args, PyObject *kw)
-{
-    Py_ssize_t i, numfields = 0;
-    int res = -1;
-    PyObject *key, *value, *fields;
-    fields = PyObject_GetAttrString((PyObject*)Py_TYPE(self), "_fields");
-    if (!fields)
-        PyErr_Clear();
-    if (fields) {
-        numfields = PySequence_Size(fields);
-        if (numfields == -1)
-            goto cleanup;
-    }
-    res = 0; /* if no error occurs, this stays 0 to the end */
-    if (PyTuple_GET_SIZE(args) > 0) {
-        if (numfields != PyTuple_GET_SIZE(args)) {
-            PyErr_Format(PyExc_TypeError, "%.400s constructor takes %s"
-                         "%zd positional argument%s",
-                         Py_TYPE(self)->tp_name,
-                         numfields == 0 ? "" : "either 0 or ",
-                         numfields, numfields == 1 ? "" : "s");
-            res = -1;
-            goto cleanup;
-        }
-        for (i = 0; i < PyTuple_GET_SIZE(args); i++) {
-            /* cannot be reached when fields is NULL */
-            PyObject *name = PySequence_GetItem(fields, i);
-            if (!name) {
-                res = -1;
-                goto cleanup;
-            }
-            res = PyObject_SetAttr(self, name, PyTuple_GET_ITEM(args, i));
-            Py_DECREF(name);
-            if (res < 0)
-                goto cleanup;
-        }
-    }
-    if (kw) {
-        i = 0;  /* needed by PyDict_Next */
-        while (PyDict_Next(kw, &i, &key, &value)) {
-            res = PyObject_SetAttr(self, key, value);
-            if (res < 0)
-                goto cleanup;
-        }
-    }
-  cleanup:
-    Py_XDECREF(fields);
-    return res;
-}
-
-/* Pickling support */
-static PyObject *
-ast_type_reduce(PyObject *self, PyObject *unused)
-{
-    PyObject *res;
-    PyObject *dict = PyObject_GetAttrString(self, "__dict__");
-    if (dict == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_AttributeError))
-            PyErr_Clear();
-        else
-            return NULL;
-    }
-    if (dict) {
-        res = Py_BuildValue("O()O", Py_TYPE(self), dict);
-        Py_DECREF(dict);
-        return res;
-    }
-    return Py_BuildValue("O()", Py_TYPE(self));
-}
-
-static PyMethodDef ast_type_methods[] = {
-    {"__reduce__", ast_type_reduce, METH_NOARGS, NULL},
-    {NULL}
-};
-
-static PyTypeObject AST_type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "_ast.AST",
-    sizeof(PyObject),
-    0,
-    0,                       /* 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 */
-    PyObject_GenericGetAttr, /* tp_getattro */
-    PyObject_GenericSetAttr, /* tp_setattro */
-    0,                       /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
-    0,                       /* tp_doc */
-    0,                       /* tp_traverse */
-    0,                       /* tp_clear */
-    0,                       /* tp_richcompare */
-    0,                       /* tp_weaklistoffset */
-    0,                       /* tp_iter */
-    0,                       /* tp_iternext */
-    ast_type_methods,        /* tp_methods */
-    0,                       /* tp_members */
-    0,                       /* tp_getset */
-    0,                       /* tp_base */
-    0,                       /* tp_dict */
-    0,                       /* tp_descr_get */
-    0,                       /* tp_descr_set */
-    0,                       /* tp_dictoffset */
-    (initproc)ast_type_init, /* tp_init */
-    PyType_GenericAlloc,     /* tp_alloc */
-    PyType_GenericNew,       /* tp_new */
-    PyObject_Del,            /* tp_free */
-};
-
-
-static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int num_fields)
-{
-    PyObject *fnames, *result;
-    int i;
-    fnames = PyTuple_New(num_fields);
-    if (!fnames) return NULL;
-    for (i = 0; i < num_fields; i++) {
-        PyObject *field = PyString_FromString(fields[i]);
-        if (!field) {
-            Py_DECREF(fnames);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(fnames, i, field);
-    }
-    result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){sOss}",
-                    type, base, "_fields", fnames, "__module__", "_ast");
-    Py_DECREF(fnames);
-    return (PyTypeObject*)result;
-}
-
-static int add_attributes(PyTypeObject* type, char**attrs, int num_fields)
-{
-    int i, result;
-    PyObject *s, *l = PyTuple_New(num_fields);
-    if (!l)
-        return 0;
-    for (i = 0; i < num_fields; i++) {
-        s = PyString_FromString(attrs[i]);
-        if (!s) {
-            Py_DECREF(l);
-            return 0;
-        }
-        PyTuple_SET_ITEM(l, i, s);
-    }
-    result = PyObject_SetAttrString((PyObject*)type, "_attributes", l) >= 0;
-    Py_DECREF(l);
-    return result;
-}
-
-/* Conversion AST -> Python */
-
-static PyObject* ast2obj_list(asdl_seq *seq, PyObject* (*func)(void*))
-{
-    int i, n = asdl_seq_LEN(seq);
-    PyObject *result = PyList_New(n);
-    PyObject *value;
-    if (!result)
-        return NULL;
-    for (i = 0; i < n; i++) {
-        value = func(asdl_seq_GET(seq, i));
-        if (!value) {
-            Py_DECREF(result);
-            return NULL;
-        }
-        PyList_SET_ITEM(result, i, value);
-    }
-    return result;
-}
-
-static PyObject* ast2obj_object(void *o)
-{
-    if (!o)
-        o = Py_None;
-    Py_INCREF((PyObject*)o);
-    return (PyObject*)o;
-}
-#define ast2obj_identifier ast2obj_object
-#define ast2obj_string ast2obj_object
-static PyObject* ast2obj_bool(bool b)
-{
-    return PyBool_FromLong(b);
-}
-
-static PyObject* ast2obj_int(long b)
-{
-    return PyInt_FromLong(b);
-}
-
-/* Conversion Python -> AST */
-
-static int obj2ast_object(PyObject* obj, PyObject** out, PyArena* arena)
-{
-    if (obj == Py_None)
-        obj = NULL;
-    if (obj)
-        PyArena_AddPyObject(arena, obj);
-    Py_XINCREF(obj);
-    *out = obj;
-    return 0;
-}
-
-#define obj2ast_identifier obj2ast_object
-#define obj2ast_string obj2ast_object
-
-static int obj2ast_int(PyObject* obj, int* out, PyArena* arena)
-{
-    int i;
-    if (!PyInt_Check(obj) && !PyLong_Check(obj)) {
-        PyObject *s = PyObject_Repr(obj);
-        if (s == NULL) return 1;
-        PyErr_Format(PyExc_ValueError, "invalid integer value: %.400s",
-                     PyString_AS_STRING(s));
-        Py_DECREF(s);
-        return 1;
-    }
-
-    i = (int)PyLong_AsLong(obj);
-    if (i == -1 && PyErr_Occurred())
-        return 1;
-    *out = i;
-    return 0;
-}
-
-static int obj2ast_bool(PyObject* obj, bool* out, PyArena* arena)
-{
-    if (!PyBool_Check(obj)) {
-        PyObject *s = PyObject_Repr(obj);
-        if (s == NULL) return 1;
-        PyErr_Format(PyExc_ValueError, "invalid boolean value: %.400s",
-                     PyString_AS_STRING(s));
-        Py_DECREF(s);
-        return 1;
-    }
-
-    *out = (obj == Py_True);
-    return 0;
-}
-
-static int add_ast_fields(void)
-{
-    PyObject *empty_tuple, *d;
-    if (PyType_Ready(&AST_type) < 0)
-        return -1;
-    d = AST_type.tp_dict;
-    empty_tuple = PyTuple_New(0);
-    if (!empty_tuple ||
-        PyDict_SetItemString(d, "_fields", empty_tuple) < 0 ||
-        PyDict_SetItemString(d, "_attributes", empty_tuple) < 0) {
-        Py_XDECREF(empty_tuple);
-        return -1;
-    }
-    Py_DECREF(empty_tuple);
-    return 0;
-}
-
-""", 0, reflow=False)
-
-        self.emit("static int init_types(void)",0)
-        self.emit("{", 0)
-        self.emit("static int initialized;", 1)
-        self.emit("if (initialized) return 1;", 1)
-        self.emit("if (add_ast_fields() < 0) return 0;", 1)
-        for dfn in mod.dfns:
-            self.visit(dfn)
-        self.emit("initialized = 1;", 1)
-        self.emit("return 1;", 1);
-        self.emit("}", 0)
-
-    def visitProduct(self, prod, name):
-        if prod.fields:
-            fields = name.value+"_fields"
-        else:
-            fields = "NULL"
-        self.emit('%s_type = make_type("%s", &AST_type, %s, %d);' %
-                        (name, name, fields, len(prod.fields)), 1)
-        self.emit("if (!%s_type) return 0;" % name, 1)
-
-    def visitSum(self, sum, name):
-        self.emit('%s_type = make_type("%s", &AST_type, NULL, 0);' %
-                  (name, name), 1)
-        self.emit("if (!%s_type) return 0;" % name, 1)
-        if sum.attributes:
-            self.emit("if (!add_attributes(%s_type, %s_attributes, %d)) return 0;" %
-                            (name, name, len(sum.attributes)), 1)
-        else:
-            self.emit("if (!add_attributes(%s_type, NULL, 0)) return 0;" % name, 1)
-        simple = is_simple(sum)
-        for t in sum.types:
-            self.visitConstructor(t, name, simple)
-
-    def visitConstructor(self, cons, name, simple):
-        if cons.fields:
-            fields = cons.name.value+"_fields"
-        else:
-            fields = "NULL"
-        self.emit('%s_type = make_type("%s", %s_type, %s, %d);' %
-                            (cons.name, cons.name, name, fields, len(cons.fields)), 1)
-        self.emit("if (!%s_type) return 0;" % cons.name, 1)
-        if simple:
-            self.emit("%s_singleton = PyType_GenericNew(%s_type, NULL, NULL);" %
-                             (cons.name, cons.name), 1)
-            self.emit("if (!%s_singleton) return 0;" % cons.name, 1)
-
-
-def parse_version(mod):
-    return mod.version.value[12:-3]
-
-class ASTModuleVisitor(PickleVisitor):
-
-    def visitModule(self, mod):
-        self.emit("PyMODINIT_FUNC", 0)
-        self.emit("init_ast(void)", 0)
-        self.emit("{", 0)
-        self.emit("PyObject *m, *d;", 1)
-        self.emit("if (!init_types()) return;", 1)
-        self.emit('m = Py_InitModule3("_ast", NULL, NULL);', 1)
-        self.emit("if (!m) return;", 1)
-        self.emit("d = PyModule_GetDict(m);", 1)
-        self.emit('if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return;', 1)
-        self.emit('if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0)', 1)
-        self.emit("return;", 2)
-        # Value of version: "$Revision$"
-        self.emit('if (PyModule_AddStringConstant(m, "__version__", "%s") < 0)'
-                % parse_version(mod), 1)
-        self.emit("return;", 2)
-        for dfn in mod.dfns:
-            self.visit(dfn)
-        self.emit("}", 0)
-
-    def visitProduct(self, prod, name):
-        self.addObj(name)
-
-    def visitSum(self, sum, name):
-        self.addObj(name)
-        for t in sum.types:
-            self.visitConstructor(t, name)
-
-    def visitConstructor(self, cons, name):
-        self.addObj(cons.name)
-
-    def addObj(self, name):
-        self.emit('if (PyDict_SetItemString(d, "%s", (PyObject*)%s_type) < 0) return;' % (name, name), 1)
-
-
-_SPECIALIZED_SEQUENCES = ('stmt', 'expr')
-
-def find_sequence(fields, doing_specialization):
-    """Return True if any field uses a sequence."""
-    for f in fields:
-        if f.seq:
-            if not doing_specialization:
-                return True
-            if str(f.type) not in _SPECIALIZED_SEQUENCES:
-                return True
-    return False
-
-def has_sequence(types, doing_specialization):
-    for t in types:
-        if find_sequence(t.fields, doing_specialization):
-            return True
-    return False
-
-
-class StaticVisitor(PickleVisitor):
-    CODE = '''Very simple, always emit this static code.  Overide CODE'''
-
-    def visit(self, object):
-        self.emit(self.CODE, 0, reflow=False)
-
-
-class ObjVisitor(PickleVisitor):
-
-    def func_begin(self, name):
-        ctype = get_c_type(name)
-        self.emit("PyObject*", 0)
-        self.emit("ast2obj_%s(void* _o)" % (name), 0)
-        self.emit("{", 0)
-        self.emit("%s o = (%s)_o;" % (ctype, ctype), 1)
-        self.emit("PyObject *result = NULL, *value = NULL;", 1)
-        self.emit('if (!o) {', 1)
-        self.emit("Py_INCREF(Py_None);", 2)
-        self.emit('return Py_None;', 2)
-        self.emit("}", 1)
-        self.emit('', 0)
-
-    def func_end(self):
-        self.emit("return result;", 1)
-        self.emit("failed:", 0)
-        self.emit("Py_XDECREF(value);", 1)
-        self.emit("Py_XDECREF(result);", 1)
-        self.emit("return NULL;", 1)
-        self.emit("}", 0)
-        self.emit("", 0)
-
-    def visitSum(self, sum, name):
-        if is_simple(sum):
-            self.simpleSum(sum, name)
-            return
-        self.func_begin(name)
-        self.emit("switch (o->kind) {", 1)
-        for i in range(len(sum.types)):
-            t = sum.types[i]
-            self.visitConstructor(t, i + 1, name)
-        self.emit("}", 1)
-        for a in sum.attributes:
-            self.emit("value = ast2obj_%s(o->%s);" % (a.type, a.name), 1)
-            self.emit("if (!value) goto failed;", 1)
-            self.emit('if (PyObject_SetAttrString(result, "%s", value) < 0)' % a.name, 1)
-            self.emit('goto failed;', 2)
-            self.emit('Py_DECREF(value);', 1)
-        self.func_end()
-
-    def simpleSum(self, sum, name):
-        self.emit("PyObject* ast2obj_%s(%s_ty o)" % (name, name), 0)
-        self.emit("{", 0)
-        self.emit("switch(o) {", 1)
-        for t in sum.types:
-            self.emit("case %s:" % t.name, 2)
-            self.emit("Py_INCREF(%s_singleton);" % t.name, 3)
-            self.emit("return %s_singleton;" % t.name, 3)
-        self.emit("default:" % name, 2)
-        self.emit('/* should never happen, but just in case ... */', 3)
-        code = "PyErr_Format(PyExc_SystemError, \"unknown %s found\");" % name
-        self.emit(code, 3, reflow=False)
-        self.emit("return NULL;", 3)
-        self.emit("}", 1)
-        self.emit("}", 0)
-
-    def visitProduct(self, prod, name):
-        self.func_begin(name)
-        self.emit("result = PyType_GenericNew(%s_type, NULL, NULL);" % name, 1);
-        self.emit("if (!result) return NULL;", 1)
-        for field in prod.fields:
-            self.visitField(field, name, 1, True)
-        self.func_end()
-
-    def visitConstructor(self, cons, enum, name):
-        self.emit("case %s_kind:" % cons.name, 1)
-        self.emit("result = PyType_GenericNew(%s_type, NULL, NULL);" % cons.name, 2);
-        self.emit("if (!result) goto failed;", 2)
-        for f in cons.fields:
-            self.visitField(f, cons.name, 2, False)
-        self.emit("break;", 2)
-
-    def visitField(self, field, name, depth, product):
-        def emit(s, d):
-            self.emit(s, depth + d)
-        if product:
-            value = "o->%s" % field.name
-        else:
-            value = "o->v.%s.%s" % (name, field.name)
-        self.set(field, value, depth)
-        emit("if (!value) goto failed;", 0)
-        emit('if (PyObject_SetAttrString(result, "%s", value) == -1)' % field.name, 0)
-        emit("goto failed;", 1)
-        emit("Py_DECREF(value);", 0)
-
-    def emitSeq(self, field, value, depth, emit):
-        emit("seq = %s;" % value, 0)
-        emit("n = asdl_seq_LEN(seq);", 0)
-        emit("value = PyList_New(n);", 0)
-        emit("if (!value) goto failed;", 0)
-        emit("for (i = 0; i < n; i++) {", 0)
-        self.set("value", field, "asdl_seq_GET(seq, i)", depth + 1)
-        emit("if (!value1) goto failed;", 1)
-        emit("PyList_SET_ITEM(value, i, value1);", 1)
-        emit("value1 = NULL;", 1)
-        emit("}", 0)
-
-    def set(self, field, value, depth):
-        if field.seq:
-            # XXX should really check for is_simple, but that requires a symbol table
-            if field.type.value == "cmpop":
-                # While the sequence elements are stored as void*,
-                # ast2obj_cmpop expects an enum
-                self.emit("{", depth)
-                self.emit("int i, n = asdl_seq_LEN(%s);" % value, depth+1)
-                self.emit("value = PyList_New(n);", depth+1)
-                self.emit("if (!value) goto failed;", depth+1)
-                self.emit("for(i = 0; i < n; i++)", depth+1)
-                # This cannot fail, so no need for error handling
-                self.emit("PyList_SET_ITEM(value, i, ast2obj_cmpop((cmpop_ty)asdl_seq_GET(%s, i)));" % value,
-                          depth+2, reflow=False)
-                self.emit("}", depth)
-            else:
-                self.emit("value = ast2obj_list(%s, ast2obj_%s);" % (value, field.type), depth)
-        else:
-            ctype = get_c_type(field.type)
-            self.emit("value = ast2obj_%s(%s);" % (field.type, value), depth, reflow=False)
-
-
-class PartingShots(StaticVisitor):
-
-    CODE = """
-PyObject* PyAST_mod2obj(mod_ty t)
-{
-    init_types();
-    return ast2obj_mod(t);
-}
-
-/* mode is 0 for "exec", 1 for "eval" and 2 for "single" input */
-mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
-{
-    mod_ty res;
-    PyObject *req_type[] = {(PyObject*)Module_type, (PyObject*)Expression_type,
-                            (PyObject*)Interactive_type};
-    char *req_name[] = {"Module", "Expression", "Interactive"};
-    int isinstance;
-    assert(0 <= mode && mode <= 2);
-
-    init_types();
-
-    isinstance = PyObject_IsInstance(ast, req_type[mode]);
-    if (isinstance == -1)
-        return NULL;
-    if (!isinstance) {
-        PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s",
-                     req_name[mode], Py_TYPE(ast)->tp_name);
-        return NULL;
-    }
-    if (obj2ast_mod(ast, &res, arena) != 0)
-        return NULL;
-    else
-        return res;
-}
-
-int PyAST_Check(PyObject* obj)
-{
-    init_types();
-    return PyObject_IsInstance(obj, (PyObject*)&AST_type);
-}
-"""
-
-class ChainOfVisitors:
-    def __init__(self, *visitors):
-        self.visitors = visitors
-
-    def visit(self, object):
-        for v in self.visitors:
-            v.visit(object)
-            v.emit("", 0)
-
-common_msg = "/* File automatically generated by %s. */\n\n"
-
-c_file_msg = """
-/*
-   __version__ %s.
-
-   This module must be committed separately after each AST grammar change;
-   The __version__ number is set to the revision number of the commit
-   containing the grammar change.
-*/
-
-"""
-
-def main(srcfile):
-    argv0 = sys.argv[0]
-    components = argv0.split(os.sep)
-    argv0 = os.sep.join(components[-2:])
-    auto_gen_msg = common_msg % argv0
-    mod = asdl.parse(srcfile)
-    if not asdl.check(mod):
-        sys.exit(1)
-    if INC_DIR:
-        p = "%s/%s-ast.h" % (INC_DIR, mod.name)
-        f = open(p, "wb")
-        f.write(auto_gen_msg)
-        f.write('#include "asdl.h"\n\n')
-        c = ChainOfVisitors(TypeDefVisitor(f),
-                            StructVisitor(f),
-                            PrototypeVisitor(f),
-                            )
-        c.visit(mod)
-        f.write("PyObject* PyAST_mod2obj(mod_ty t);\n")
-        f.write("mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode);\n")
-        f.write("int PyAST_Check(PyObject* obj);\n")
-        f.close()
-
-    if SRC_DIR:
-        p = os.path.join(SRC_DIR, str(mod.name) + "-ast.c")
-        f = open(p, "wb")
-        f.write(auto_gen_msg)
-        f.write(c_file_msg % parse_version(mod))
-        f.write('#include "Python.h"\n')
-        f.write('#include "%s-ast.h"\n' % mod.name)
-        f.write('\n')
-        f.write("static PyTypeObject AST_type;\n")
-        v = ChainOfVisitors(
-            PyTypesDeclareVisitor(f),
-            PyTypesVisitor(f),
-            Obj2ModPrototypeVisitor(f),
-            FunctionVisitor(f),
-            ObjVisitor(f),
-            Obj2ModVisitor(f),
-            ASTModuleVisitor(f),
-            PartingShots(f),
-            )
-        v.visit(mod)
-        f.close()
-
-if __name__ == "__main__":
-    import sys
-    import getopt
-
-    INC_DIR = ''
-    SRC_DIR = ''
-    opts, args = getopt.getopt(sys.argv[1:], "h:c:")
-    if len(opts) != 1:
-        print "Must specify exactly one output file"
-        sys.exit(1)
-    for o, v in opts:
-        if o == '-h':
-            INC_DIR = v
-        if o == '-c':
-            SRC_DIR = v
-    if len(args) != 1:
-        print "Must specify single input file"
-        sys.exit(1)
-    main(args[0])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/bitset.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/bitset.c
deleted file mode 100644
index 3bf5da1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/bitset.c
+++ /dev/null
@@ -1,66 +0,0 @@
-
-/* Bitset primitives used by the parser generator */
-
-#include "pgenheaders.h"
-#include "bitset.h"
-
-bitset
-newbitset(int nbits)
-{
-    int nbytes = NBYTES(nbits);
-    bitset ss = (char *)PyObject_MALLOC(sizeof(BYTE) *  nbytes);
-
-    if (ss == NULL)
-        Py_FatalError("no mem for bitset");
-
-    ss += nbytes;
-    while (--nbytes >= 0)
-        *--ss = 0;
-    return ss;
-}
-
-void
-delbitset(bitset ss)
-{
-    PyObject_FREE(ss);
-}
-
-int
-addbit(bitset ss, int ibit)
-{
-    int ibyte = BIT2BYTE(ibit);
-    BYTE mask = BIT2MASK(ibit);
-
-    if (ss[ibyte] & mask)
-        return 0; /* Bit already set */
-    ss[ibyte] |= mask;
-    return 1;
-}
-
-#if 0 /* Now a macro */
-int
-testbit(bitset ss, int ibit)
-{
-    return (ss[BIT2BYTE(ibit)] & BIT2MASK(ibit)) != 0;
-}
-#endif
-
-int
-samebitset(bitset ss1, bitset ss2, int nbits)
-{
-    int i;
-
-    for (i = NBYTES(nbits); --i >= 0; )
-        if (*ss1++ != *ss2++)
-            return 0;
-    return 1;
-}
-
-void
-mergebitset(bitset ss1, bitset ss2, int nbits)
-{
-    int i;
-
-    for (i = NBYTES(nbits); --i >= 0; )
-        *ss1++ |= *ss2++;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/firstsets.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/firstsets.c
deleted file mode 100644
index 69faf8f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/firstsets.c
+++ /dev/null
@@ -1,113 +0,0 @@
-
-/* Computation of FIRST stets */
-
-#include "pgenheaders.h"
-#include "grammar.h"
-#include "token.h"
-
-extern int Py_DebugFlag;
-
-/* Forward */
-static void calcfirstset(grammar *, dfa *);
-
-void
-addfirstsets(grammar *g)
-{
-    int i;
-    dfa *d;
-
-    if (Py_DebugFlag)
-        printf("Adding FIRST sets ...\n");
-    for (i = 0; i < g->g_ndfas; i++) {
-        d = &g->g_dfa[i];
-        if (d->d_first == NULL)
-            calcfirstset(g, d);
-    }
-}
-
-static void
-calcfirstset(grammar *g, dfa *d)
-{
-    int i, j;
-    state *s;
-    arc *a;
-    int nsyms;
-    int *sym;
-    int nbits;
-    static bitset dummy;
-    bitset result;
-    int type;
-    dfa *d1;
-    label *l0;
-
-    if (Py_DebugFlag)
-        printf("Calculate FIRST set for '%s'\n", d->d_name);
-
-    if (dummy == NULL)
-        dummy = newbitset(1);
-    if (d->d_first == dummy) {
-        fprintf(stderr, "Left-recursion for '%s'\n", d->d_name);
-        return;
-    }
-    if (d->d_first != NULL) {
-        fprintf(stderr, "Re-calculating FIRST set for '%s' ???\n",
-            d->d_name);
-    }
-    d->d_first = dummy;
-
-    l0 = g->g_ll.ll_label;
-    nbits = g->g_ll.ll_nlabels;
-    result = newbitset(nbits);
-
-    sym = (int *)PyObject_MALLOC(sizeof(int));
-    if (sym == NULL)
-        Py_FatalError("no mem for new sym in calcfirstset");
-    nsyms = 1;
-    sym[0] = findlabel(&g->g_ll, d->d_type, (char *)NULL);
-
-    s = &d->d_state[d->d_initial];
-    for (i = 0; i < s->s_narcs; i++) {
-        a = &s->s_arc[i];
-        for (j = 0; j < nsyms; j++) {
-            if (sym[j] == a->a_lbl)
-                break;
-        }
-        if (j >= nsyms) { /* New label */
-            sym = (int *)PyObject_REALLOC(sym,
-                                    sizeof(int) * (nsyms + 1));
-            if (sym == NULL)
-                Py_FatalError(
-                    "no mem to resize sym in calcfirstset");
-            sym[nsyms++] = a->a_lbl;
-            type = l0[a->a_lbl].lb_type;
-            if (ISNONTERMINAL(type)) {
-                d1 = PyGrammar_FindDFA(g, type);
-                if (d1->d_first == dummy) {
-                    fprintf(stderr,
-                        "Left-recursion below '%s'\n",
-                        d->d_name);
-                }
-                else {
-                    if (d1->d_first == NULL)
-                        calcfirstset(g, d1);
-                    mergebitset(result,
-                                d1->d_first, nbits);
-                }
-            }
-            else if (ISTERMINAL(type)) {
-                addbit(result, a->a_lbl);
-            }
-        }
-    }
-    d->d_first = result;
-    if (Py_DebugFlag) {
-        printf("FIRST set for '%s': {", d->d_name);
-        for (i = 0; i < nbits; i++) {
-            if (testbit(result, i))
-                printf(" %s", PyGrammar_LabelRepr(&l0[i]));
-        }
-        printf(" }\n");
-    }
-
-    PyObject_FREE(sym);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/grammar.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/grammar.c
deleted file mode 100644
index 4cce422..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/grammar.c
+++ /dev/null
@@ -1,254 +0,0 @@
-
-/* Grammar implementation */
-
-#include "Python.h"
-#include "pgenheaders.h"
-
-#include <ctype.h>
-
-#include "token.h"
-#include "grammar.h"
-
-#ifdef RISCOS
-#include <unixlib.h>
-#endif
-
-extern int Py_DebugFlag;
-
-grammar *
-newgrammar(int start)
-{
-    grammar *g;
-
-    g = (grammar *)PyObject_MALLOC(sizeof(grammar));
-    if (g == NULL)
-        Py_FatalError("no mem for new grammar");
-    g->g_ndfas = 0;
-    g->g_dfa = NULL;
-    g->g_start = start;
-    g->g_ll.ll_nlabels = 0;
-    g->g_ll.ll_label = NULL;
-    g->g_accel = 0;
-    return g;
-}
-
-dfa *
-adddfa(grammar *g, int type, char *name)
-{
-    dfa *d;
-
-    g->g_dfa = (dfa *)PyObject_REALLOC(g->g_dfa,
-                                        sizeof(dfa) * (g->g_ndfas + 1));
-    if (g->g_dfa == NULL)
-        Py_FatalError("no mem to resize dfa in adddfa");
-    d = &g->g_dfa[g->g_ndfas++];
-    d->d_type = type;
-    d->d_name = strdup(name);
-    d->d_nstates = 0;
-    d->d_state = NULL;
-    d->d_initial = -1;
-    d->d_first = NULL;
-    return d; /* Only use while fresh! */
-}
-
-int
-addstate(dfa *d)
-{
-    state *s;
-
-    d->d_state = (state *)PyObject_REALLOC(d->d_state,
-                                  sizeof(state) * (d->d_nstates + 1));
-    if (d->d_state == NULL)
-        Py_FatalError("no mem to resize state in addstate");
-    s = &d->d_state[d->d_nstates++];
-    s->s_narcs = 0;
-    s->s_arc = NULL;
-    s->s_lower = 0;
-    s->s_upper = 0;
-    s->s_accel = NULL;
-    s->s_accept = 0;
-    return s - d->d_state;
-}
-
-void
-addarc(dfa *d, int from, int to, int lbl)
-{
-    state *s;
-    arc *a;
-
-    assert(0 <= from && from < d->d_nstates);
-    assert(0 <= to && to < d->d_nstates);
-
-    s = &d->d_state[from];
-    s->s_arc = (arc *)PyObject_REALLOC(s->s_arc, sizeof(arc) * (s->s_narcs + 1));
-    if (s->s_arc == NULL)
-        Py_FatalError("no mem to resize arc list in addarc");
-    a = &s->s_arc[s->s_narcs++];
-    a->a_lbl = lbl;
-    a->a_arrow = to;
-}
-
-int
-addlabel(labellist *ll, int type, char *str)
-{
-    int i;
-    label *lb;
-
-    for (i = 0; i < ll->ll_nlabels; i++) {
-        if (ll->ll_label[i].lb_type == type &&
-            strcmp(ll->ll_label[i].lb_str, str) == 0)
-            return i;
-    }
-    ll->ll_label = (label *)PyObject_REALLOC(ll->ll_label,
-                                    sizeof(label) * (ll->ll_nlabels + 1));
-    if (ll->ll_label == NULL)
-        Py_FatalError("no mem to resize labellist in addlabel");
-    lb = &ll->ll_label[ll->ll_nlabels++];
-    lb->lb_type = type;
-    lb->lb_str = strdup(str);
-    if (Py_DebugFlag)
-        printf("Label @ %8p, %d: %s\n", ll, ll->ll_nlabels,
-               PyGrammar_LabelRepr(lb));
-    return lb - ll->ll_label;
-}
-
-/* Same, but rather dies than adds */
-
-int
-findlabel(labellist *ll, int type, char *str)
-{
-    int i;
-
-    for (i = 0; i < ll->ll_nlabels; i++) {
-        if (ll->ll_label[i].lb_type == type /*&&
-            strcmp(ll->ll_label[i].lb_str, str) == 0*/)
-            return i;
-    }
-    fprintf(stderr, "Label %d/'%s' not found\n", type, str);
-    Py_FatalError("grammar.c:findlabel()");
-    return 0; /* Make gcc -Wall happy */
-}
-
-/* Forward */
-static void translabel(grammar *, label *);
-
-void
-translatelabels(grammar *g)
-{
-    int i;
-
-#ifdef Py_DEBUG
-    printf("Translating labels ...\n");
-#endif
-    /* Don't translate EMPTY */
-    for (i = EMPTY+1; i < g->g_ll.ll_nlabels; i++)
-        translabel(g, &g->g_ll.ll_label[i]);
-}
-
-static void
-translabel(grammar *g, label *lb)
-{
-    int i;
-
-    if (Py_DebugFlag)
-        printf("Translating label %s ...\n", PyGrammar_LabelRepr(lb));
-
-    if (lb->lb_type == NAME) {
-        for (i = 0; i < g->g_ndfas; i++) {
-            if (strcmp(lb->lb_str, g->g_dfa[i].d_name) == 0) {
-                if (Py_DebugFlag)
-                    printf(
-                        "Label %s is non-terminal %d.\n",
-                        lb->lb_str,
-                        g->g_dfa[i].d_type);
-                lb->lb_type = g->g_dfa[i].d_type;
-                free(lb->lb_str);
-                lb->lb_str = NULL;
-                return;
-            }
-        }
-        for (i = 0; i < (int)N_TOKENS; i++) {
-            if (strcmp(lb->lb_str, _PyParser_TokenNames[i]) == 0) {
-                if (Py_DebugFlag)
-                    printf("Label %s is terminal %d.\n",
-                        lb->lb_str, i);
-                lb->lb_type = i;
-                free(lb->lb_str);
-                lb->lb_str = NULL;
-                return;
-            }
-        }
-        printf("Can't translate NAME label '%s'\n", lb->lb_str);
-        return;
-    }
-
-    if (lb->lb_type == STRING) {
-        if (isalpha(Py_CHARMASK(lb->lb_str[1])) ||
-            lb->lb_str[1] == '_') {
-            char *p;
-            char *src;
-            char *dest;
-            size_t name_len;
-            if (Py_DebugFlag)
-                printf("Label %s is a keyword\n", lb->lb_str);
-            lb->lb_type = NAME;
-            src = lb->lb_str + 1;
-            p = strchr(src, '\'');
-            if (p)
-                name_len = p - src;
-            else
-                name_len = strlen(src);
-            dest = (char *)malloc(name_len + 1);
-            if (!dest) {
-                printf("Can't alloc dest '%s'\n", src);
-                return;
-            }
-            strncpy(dest, src, name_len);
-            dest[name_len] = '\0';
-            free(lb->lb_str);
-            lb->lb_str = dest;
-        }
-        else if (lb->lb_str[2] == lb->lb_str[0]) {
-            int type = (int) PyToken_OneChar(lb->lb_str[1]);
-            if (type != OP) {
-                lb->lb_type = type;
-                free(lb->lb_str);
-                lb->lb_str = NULL;
-            }
-            else
-                printf("Unknown OP label %s\n",
-                    lb->lb_str);
-        }
-        else if (lb->lb_str[2] && lb->lb_str[3] == lb->lb_str[0]) {
-            int type = (int) PyToken_TwoChars(lb->lb_str[1],
-                                       lb->lb_str[2]);
-            if (type != OP) {
-                lb->lb_type = type;
-                free(lb->lb_str);
-                lb->lb_str = NULL;
-            }
-            else
-                printf("Unknown OP label %s\n",
-                    lb->lb_str);
-        }
-        else if (lb->lb_str[2] && lb->lb_str[3] && lb->lb_str[4] == lb->lb_str[0]) {
-            int type = (int) PyToken_ThreeChars(lb->lb_str[1],
-                                                lb->lb_str[2],
-                                                lb->lb_str[3]);
-            if (type != OP) {
-                lb->lb_type = type;
-                free(lb->lb_str);
-                lb->lb_str = NULL;
-            }
-            else
-                printf("Unknown OP label %s\n",
-                    lb->lb_str);
-        }
-        else
-            printf("Can't translate STRING label %s\n",
-                lb->lb_str);
-    }
-    else
-        printf("Can't translate label '%s'\n",
-               PyGrammar_LabelRepr(lb));
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/grammar1.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/grammar1.c
deleted file mode 100644
index 27db22f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/grammar1.c
+++ /dev/null
@@ -1,57 +0,0 @@
-
-/* Grammar subroutines needed by parser */
-
-#include "Python.h"
-#include "pgenheaders.h"
-#include "grammar.h"
-#include "token.h"
-
-/* Return the DFA for the given type */
-
-dfa *
-PyGrammar_FindDFA(grammar *g, register int type)
-{
-    register dfa *d;
-#if 1
-    /* Massive speed-up */
-    d = &g->g_dfa[type - NT_OFFSET];
-    assert(d->d_type == type);
-    return d;
-#else
-    /* Old, slow version */
-    register int i;
-
-    for (i = g->g_ndfas, d = g->g_dfa; --i >= 0; d++) {
-        if (d->d_type == type)
-            return d;
-    }
-    assert(0);
-    /* NOTREACHED */
-#endif
-}
-
-char *
-PyGrammar_LabelRepr(label *lb)
-{
-    static char buf[100];
-
-    if (lb->lb_type == ENDMARKER)
-        return "EMPTY";
-    else if (ISNONTERMINAL(lb->lb_type)) {
-        if (lb->lb_str == NULL) {
-            PyOS_snprintf(buf, sizeof(buf), "NT%d", lb->lb_type);
-            return buf;
-        }
-        else
-            return lb->lb_str;
-    }
-    else {
-        if (lb->lb_str == NULL)
-            return _PyParser_TokenNames[lb->lb_type];
-        else {
-            PyOS_snprintf(buf, sizeof(buf), "%.32s(%.32s)",
-                _PyParser_TokenNames[lb->lb_type], lb->lb_str);
-            return buf;
-        }
-    }
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/intrcheck.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/intrcheck.c
deleted file mode 100644
index bc2b8e4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/intrcheck.c
+++ /dev/null
@@ -1,178 +0,0 @@
-
-/* Check for interrupts */
-
-#include "Python.h"
-#include "pythread.h"
-
-#ifdef QUICKWIN
-
-#include <io.h>
-
-void
-PyOS_InitInterrupts(void)
-{
-}
-
-void
-PyOS_FiniInterrupts(void)
-{
-}
-
-int
-PyOS_InterruptOccurred(void)
-{
-    _wyield();
-}
-
-#define OK
-
-#endif /* QUICKWIN */
-
-#if defined(_M_IX86) && !defined(__QNX__)
-#include <io.h>
-#endif
-
-#if defined(MSDOS) && !defined(QUICKWIN)
-
-#ifdef __GNUC__
-
-/* This is for DJGPP's GO32 extender.  I don't know how to trap
- * control-C  (There's no API for ctrl-C, and I don't want to mess with
- * the interrupt vectors.)  However, this DOES catch control-break.
- * --Amrit
- */
-
-#include <go32.h>
-
-void
-PyOS_InitInterrupts(void)
-{
-    _go32_want_ctrl_break(1 /* TRUE */);
-}
-
-void
-PyOS_FiniInterrupts(void)
-{
-}
-
-int
-PyOS_InterruptOccurred(void)
-{
-    return _go32_was_ctrl_break_hit();
-}
-
-#else /* !__GNUC__ */
-
-/* This might work for MS-DOS (untested though): */
-
-void
-PyOS_InitInterrupts(void)
-{
-}
-
-void
-PyOS_FiniInterrupts(void)
-{
-}
-
-int
-PyOS_InterruptOccurred(void)
-{
-    int interrupted = 0;
-    while (kbhit()) {
-        if (getch() == '\003')
-            interrupted = 1;
-    }
-    return interrupted;
-}
-
-#endif /* __GNUC__ */
-
-#define OK
-
-#endif /* MSDOS && !QUICKWIN */
-
-
-#ifndef OK
-
-/* Default version -- for real operating systems and for Standard C */
-
-#include <stdio.h>
-#include <string.h>
-#include <signal.h>
-
-static int interrupted;
-
-void
-PyErr_SetInterrupt(void)
-{
-    interrupted = 1;
-}
-
-extern int PyErr_CheckSignals(void);
-
-static int
-checksignals_witharg(void * arg)
-{
-    return PyErr_CheckSignals();
-}
-
-static void
-intcatcher(int sig)
-{
-    extern void Py_Exit(int);
-    static char message[] =
-"python: to interrupt a truly hanging Python program, interrupt once more.\n";
-    switch (interrupted++) {
-    case 0:
-        break;
-    case 1:
-#ifdef RISCOS
-        fprintf(stderr, message);
-#else
-        write(2, message, strlen(message));
-#endif
-        break;
-    case 2:
-        interrupted = 0;
-        Py_Exit(1);
-        break;
-    }
-    PyOS_setsig(SIGINT, intcatcher);
-    Py_AddPendingCall(checksignals_witharg, NULL);
-}
-
-static void (*old_siginthandler)(int) = SIG_DFL;
-
-void
-PyOS_InitInterrupts(void)
-{
-    if ((old_siginthandler = PyOS_setsig(SIGINT, SIG_IGN)) != SIG_IGN)
-        PyOS_setsig(SIGINT, intcatcher);
-}
-
-void
-PyOS_FiniInterrupts(void)
-{
-    PyOS_setsig(SIGINT, old_siginthandler);
-}
-
-int
-PyOS_InterruptOccurred(void)
-{
-    if (!interrupted)
-        return 0;
-    interrupted = 0;
-    return 1;
-}
-
-#endif /* !OK */
-
-void
-PyOS_AfterFork(void)
-{
-#ifdef WITH_THREAD
-    PyEval_ReInitThreads();
-    PyThread_ReInitTLS();
-#endif
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/listnode.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/listnode.c
deleted file mode 100644
index 8d59233..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/listnode.c
+++ /dev/null
@@ -1,66 +0,0 @@
-
-/* List a node on a file */
-
-#include "pgenheaders.h"
-#include "token.h"
-#include "node.h"
-
-/* Forward */
-static void list1node(FILE *, node *);
-static void listnode(FILE *, node *);
-
-void
-PyNode_ListTree(node *n)
-{
-    listnode(stdout, n);
-}
-
-static int level, atbol;
-
-static void
-listnode(FILE *fp, node *n)
-{
-    level = 0;
-    atbol = 1;
-    list1node(fp, n);
-}
-
-static void
-list1node(FILE *fp, node *n)
-{
-    if (n == 0)
-        return;
-    if (ISNONTERMINAL(TYPE(n))) {
-        int i;
-        for (i = 0; i < NCH(n); i++)
-            list1node(fp, CHILD(n, i));
-    }
-    else if (ISTERMINAL(TYPE(n))) {
-        switch (TYPE(n)) {
-        case INDENT:
-            ++level;
-            break;
-        case DEDENT:
-            --level;
-            break;
-        default:
-            if (atbol) {
-                int i;
-                for (i = 0; i < level; ++i)
-                    fprintf(fp, "\t");
-                atbol = 0;
-            }
-            if (TYPE(n) == NEWLINE) {
-                if (STR(n) != NULL)
-                    fprintf(fp, "%s", STR(n));
-                fprintf(fp, "\n");
-                atbol = 1;
-            }
-            else
-                fprintf(fp, "%s ", STR(n));
-            break;
-        }
-    }
-    else
-        fprintf(fp, "? ");
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/metagrammar.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/metagrammar.c
deleted file mode 100644
index 299ccaa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/metagrammar.c
+++ /dev/null
@@ -1,159 +0,0 @@
-
-#include "pgenheaders.h"
-#include "metagrammar.h"
-#include "grammar.h"
-#include "pgen.h"
-static arc arcs_0_0[3] = {
-    {2, 0},
-    {3, 0},
-    {4, 1},
-};
-static arc arcs_0_1[1] = {
-    {0, 1},
-};
-static state states_0[2] = {
-    {3, arcs_0_0},
-    {1, arcs_0_1},
-};
-static arc arcs_1_0[1] = {
-    {5, 1},
-};
-static arc arcs_1_1[1] = {
-    {6, 2},
-};
-static arc arcs_1_2[1] = {
-    {7, 3},
-};
-static arc arcs_1_3[1] = {
-    {3, 4},
-};
-static arc arcs_1_4[1] = {
-    {0, 4},
-};
-static state states_1[5] = {
-    {1, arcs_1_0},
-    {1, arcs_1_1},
-    {1, arcs_1_2},
-    {1, arcs_1_3},
-    {1, arcs_1_4},
-};
-static arc arcs_2_0[1] = {
-    {8, 1},
-};
-static arc arcs_2_1[2] = {
-    {9, 0},
-    {0, 1},
-};
-static state states_2[2] = {
-    {1, arcs_2_0},
-    {2, arcs_2_1},
-};
-static arc arcs_3_0[1] = {
-    {10, 1},
-};
-static arc arcs_3_1[2] = {
-    {10, 1},
-    {0, 1},
-};
-static state states_3[2] = {
-    {1, arcs_3_0},
-    {2, arcs_3_1},
-};
-static arc arcs_4_0[2] = {
-    {11, 1},
-    {13, 2},
-};
-static arc arcs_4_1[1] = {
-    {7, 3},
-};
-static arc arcs_4_2[3] = {
-    {14, 4},
-    {15, 4},
-    {0, 2},
-};
-static arc arcs_4_3[1] = {
-    {12, 4},
-};
-static arc arcs_4_4[1] = {
-    {0, 4},
-};
-static state states_4[5] = {
-    {2, arcs_4_0},
-    {1, arcs_4_1},
-    {3, arcs_4_2},
-    {1, arcs_4_3},
-    {1, arcs_4_4},
-};
-static arc arcs_5_0[3] = {
-    {5, 1},
-    {16, 1},
-    {17, 2},
-};
-static arc arcs_5_1[1] = {
-    {0, 1},
-};
-static arc arcs_5_2[1] = {
-    {7, 3},
-};
-static arc arcs_5_3[1] = {
-    {18, 1},
-};
-static state states_5[4] = {
-    {3, arcs_5_0},
-    {1, arcs_5_1},
-    {1, arcs_5_2},
-    {1, arcs_5_3},
-};
-static dfa dfas[6] = {
-    {256, "MSTART", 0, 2, states_0,
-     "\070\000\000"},
-    {257, "RULE", 0, 5, states_1,
-     "\040\000\000"},
-    {258, "RHS", 0, 2, states_2,
-     "\040\010\003"},
-    {259, "ALT", 0, 2, states_3,
-     "\040\010\003"},
-    {260, "ITEM", 0, 5, states_4,
-     "\040\010\003"},
-    {261, "ATOM", 0, 4, states_5,
-     "\040\000\003"},
-};
-static label labels[19] = {
-    {0, "EMPTY"},
-    {256, 0},
-    {257, 0},
-    {4, 0},
-    {0, 0},
-    {1, 0},
-    {11, 0},
-    {258, 0},
-    {259, 0},
-    {18, 0},
-    {260, 0},
-    {9, 0},
-    {10, 0},
-    {261, 0},
-    {16, 0},
-    {14, 0},
-    {3, 0},
-    {7, 0},
-    {8, 0},
-};
-static grammar _PyParser_Grammar = {
-    6,
-    dfas,
-    {19, labels},
-    256
-};
-
-grammar *
-meta_grammar(void)
-{
-    return &_PyParser_Grammar;
-}
-
-grammar *
-Py_meta_grammar(void)
-{
-  return meta_grammar();
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/myreadline.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/myreadline.c
deleted file mode 100644
index 05d74a4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/myreadline.c
+++ /dev/null
@@ -1,221 +0,0 @@
-
-/* Readline interface for tokenizer.c and [raw_]input() in bltinmodule.c.
-   By default, or when stdin is not a tty device, we have a super
-   simple my_readline function using fgets.
-   Optionally, we can use the GNU readline library.
-   my_readline() has a different return value from GNU readline():
-   - NULL if an interrupt occurred or if an error occurred
-   - a malloc'ed empty string if EOF was read
-   - a malloc'ed string ending in \n normally
-*/
-
-#include "Python.h"
-#ifdef MS_WINDOWS
-#define WIN32_LEAN_AND_MEAN
-#include "windows.h"
-#endif /* MS_WINDOWS */
-
-#ifdef __VMS
-extern char* vms__StdioReadline(FILE *sys_stdin, FILE *sys_stdout, char *prompt);
-#endif
-
-
-PyThreadState* _PyOS_ReadlineTState;
-
-#ifdef WITH_THREAD
-#include "pythread.h"
-static PyThread_type_lock _PyOS_ReadlineLock = NULL;
-#endif
-
-int (*PyOS_InputHook)(void) = NULL;
-
-#ifdef RISCOS
-int Py_RISCOSWimpFlag;
-#endif
-
-/* This function restarts a fgets() after an EINTR error occurred
-   except if PyOS_InterruptOccurred() returns true. */
-
-static int
-my_fgets(char *buf, int len, FILE *fp)
-{
-    char *p;
-    while (1) {
-        if (PyOS_InputHook != NULL)
-            (void)(PyOS_InputHook)();
-        errno = 0;
-        p = fgets(buf, len, fp);
-        if (p != NULL)
-            return 0; /* No error */
-#ifdef MS_WINDOWS
-        /* In the case of a Ctrl+C or some other external event
-           interrupting the operation:
-           Win2k/NT: ERROR_OPERATION_ABORTED is the most recent Win32
-           error code (and feof() returns TRUE).
-           Win9x: Ctrl+C seems to have no effect on fgets() returning
-           early - the signal handler is called, but the fgets()
-           only returns "normally" (ie, when Enter hit or feof())
-        */
-        if (GetLastError()==ERROR_OPERATION_ABORTED) {
-            /* Signals come asynchronously, so we sleep a brief
-               moment before checking if the handler has been
-               triggered (we cant just return 1 before the
-               signal handler has been called, as the later
-               signal may be treated as a separate interrupt).
-            */
-            Sleep(1);
-            if (PyOS_InterruptOccurred()) {
-                return 1; /* Interrupt */
-            }
-            /* Either the sleep wasn't long enough (need a
-               short loop retrying?) or not interrupted at all
-               (in which case we should revisit the whole thing!)
-               Logging some warning would be nice.  assert is not
-               viable as under the debugger, the various dialogs
-               mean the condition is not true.
-            */
-        }
-#endif /* MS_WINDOWS */
-        if (feof(fp)) {
-            clearerr(fp);
-            return -1; /* EOF */
-        }
-#ifdef EINTR
-        if (errno == EINTR) {
-            int s;
-#ifdef WITH_THREAD
-            PyEval_RestoreThread(_PyOS_ReadlineTState);
-#endif
-            s = PyErr_CheckSignals();
-#ifdef WITH_THREAD
-            PyEval_SaveThread();
-#endif
-            if (s < 0)
-                    return 1;
-	    /* try again */
-            continue;
-        }
-#endif
-        if (PyOS_InterruptOccurred()) {
-            return 1; /* Interrupt */
-        }
-        return -2; /* Error */
-    }
-    /* NOTREACHED */
-}
-
-
-/* Readline implementation using fgets() */
-
-char *
-PyOS_StdioReadline(FILE *sys_stdin, FILE *sys_stdout, char *prompt)
-{
-    size_t n;
-    char *p;
-    n = 100;
-    if ((p = (char *)PyMem_MALLOC(n)) == NULL)
-        return NULL;
-    fflush(sys_stdout);
-#ifndef RISCOS
-    if (prompt)
-        fprintf(stderr, "%s", prompt);
-#else
-    if (prompt) {
-        if(Py_RISCOSWimpFlag)
-            fprintf(stderr, "\x0cr%s\x0c", prompt);
-        else
-            fprintf(stderr, "%s", prompt);
-    }
-#endif
-    fflush(stderr);
-    switch (my_fgets(p, (int)n, sys_stdin)) {
-    case 0: /* Normal case */
-        break;
-    case 1: /* Interrupt */
-        PyMem_FREE(p);
-        return NULL;
-    case -1: /* EOF */
-    case -2: /* Error */
-    default: /* Shouldn't happen */
-        *p = '\0';
-        break;
-    }
-    n = strlen(p);
-    while (n > 0 && p[n-1] != '\n') {
-        size_t incr = n+2;
-        p = (char *)PyMem_REALLOC(p, n + incr);
-        if (p == NULL)
-            return NULL;
-        if (incr > INT_MAX) {
-            PyErr_SetString(PyExc_OverflowError, "input line too long");
-        }
-        if (my_fgets(p+n, (int)incr, sys_stdin) != 0)
-            break;
-        n += strlen(p+n);
-    }
-    return (char *)PyMem_REALLOC(p, n+1);
-}
-
-
-/* By initializing this function pointer, systems embedding Python can
-   override the readline function.
-
-   Note: Python expects in return a buffer allocated with PyMem_Malloc. */
-
-char *(*PyOS_ReadlineFunctionPointer)(FILE *, FILE *, char *);
-
-
-/* Interface used by tokenizer.c and bltinmodule.c */
-
-char *
-PyOS_Readline(FILE *sys_stdin, FILE *sys_stdout, char *prompt)
-{
-    char *rv;
-
-    if (_PyOS_ReadlineTState == PyThreadState_GET()) {
-        PyErr_SetString(PyExc_RuntimeError,
-                        "can't re-enter readline");
-        return NULL;
-    }
-
-
-    if (PyOS_ReadlineFunctionPointer == NULL) {
-#ifdef __VMS
-        PyOS_ReadlineFunctionPointer = vms__StdioReadline;
-#else
-        PyOS_ReadlineFunctionPointer = PyOS_StdioReadline;
-#endif
-    }
-
-#ifdef WITH_THREAD
-    if (_PyOS_ReadlineLock == NULL) {
-        _PyOS_ReadlineLock = PyThread_allocate_lock();
-    }
-#endif
-
-    _PyOS_ReadlineTState = PyThreadState_GET();
-    Py_BEGIN_ALLOW_THREADS
-#ifdef WITH_THREAD
-    PyThread_acquire_lock(_PyOS_ReadlineLock, 1);
-#endif
-
-    /* This is needed to handle the unlikely case that the
-     * interpreter is in interactive mode *and* stdin/out are not
-     * a tty.  This can happen, for example if python is run like
-     * this: python -i < test1.py
-     */
-    if (!isatty (fileno (sys_stdin)) || !isatty (fileno (sys_stdout)))
-        rv = PyOS_StdioReadline (sys_stdin, sys_stdout, prompt);
-    else
-        rv = (*PyOS_ReadlineFunctionPointer)(sys_stdin, sys_stdout,
-                                             prompt);
-    Py_END_ALLOW_THREADS
-
-#ifdef WITH_THREAD
-    PyThread_release_lock(_PyOS_ReadlineLock);
-#endif
-
-    _PyOS_ReadlineTState = NULL;
-
-    return rv;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/node.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/node.c
deleted file mode 100644
index 4949b7c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/node.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/* Parse tree node implementation */
-
-#include "Python.h"
-#include "node.h"
-#include "errcode.h"
-
-node *
-PyNode_New(int type)
-{
-    node *n = (node *) PyObject_MALLOC(1 * sizeof(node));
-    if (n == NULL)
-        return NULL;
-    n->n_type = type;
-    n->n_str = NULL;
-    n->n_lineno = 0;
-    n->n_nchildren = 0;
-    n->n_child = NULL;
-    return n;
-}
-
-/* See comments at XXXROUNDUP below.  Returns -1 on overflow. */
-static int
-fancy_roundup(int n)
-{
-    /* Round up to the closest power of 2 >= n. */
-    int result = 256;
-    assert(n > 128);
-    while (result < n) {
-        result <<= 1;
-        if (result <= 0)
-            return -1;
-    }
-    return result;
-}
-
-/* A gimmick to make massive numbers of reallocs quicker.  The result is
- * a number >= the input.  In PyNode_AddChild, it's used like so, when
- * we're about to add child number current_size + 1:
- *
- *     if XXXROUNDUP(current_size) < XXXROUNDUP(current_size + 1):
- *         allocate space for XXXROUNDUP(current_size + 1) total children
- *     else:
- *         we already have enough space
- *
- * Since a node starts out empty, we must have
- *
- *     XXXROUNDUP(0) < XXXROUNDUP(1)
- *
- * so that we allocate space for the first child.  One-child nodes are very
- * common (presumably that would change if we used a more abstract form
- * of syntax tree), so to avoid wasting memory it's desirable that
- * XXXROUNDUP(1) == 1.  That in turn forces XXXROUNDUP(0) == 0.
- *
- * Else for 2 <= n <= 128, we round up to the closest multiple of 4.  Why 4?
- * Rounding up to a multiple of an exact power of 2 is very efficient, and
- * most nodes with more than one child have <= 4 kids.
- *
- * Else we call fancy_roundup() to grow proportionately to n.  We've got an
- * extreme case then (like test_longexp.py), and on many platforms doing
- * anything less than proportional growth leads to exorbitant runtime
- * (e.g., MacPython), or extreme fragmentation of user address space (e.g.,
- * Win98).
- *
- * In a run of compileall across the 2.3a0 Lib directory, Andrew MacIntyre
- * reported that, with this scheme, 89% of PyObject_REALLOC calls in
- * PyNode_AddChild passed 1 for the size, and 9% passed 4.  So this usually
- * wastes very little memory, but is very effective at sidestepping
- * platform-realloc disasters on vulnerable platforms.
- *
- * Note that this would be straightforward if a node stored its current
- * capacity.  The code is tricky to avoid that.
- */
-#define XXXROUNDUP(n) ((n) <= 1 ? (n) :                 \
-               (n) <= 128 ? (((n) + 3) & ~3) :          \
-               fancy_roundup(n))
-
-
-int
-PyNode_AddChild(register node *n1, int type, char *str, int lineno, int col_offset)
-{
-    const int nch = n1->n_nchildren;
-    int current_capacity;
-    int required_capacity;
-    node *n;
-
-    if (nch == INT_MAX || nch < 0)
-        return E_OVERFLOW;
-
-    current_capacity = XXXROUNDUP(nch);
-    required_capacity = XXXROUNDUP(nch + 1);
-    if (current_capacity < 0 || required_capacity < 0)
-        return E_OVERFLOW;
-    if (current_capacity < required_capacity) {
-        if (required_capacity > PY_SIZE_MAX / sizeof(node)) {
-            return E_NOMEM;
-        }
-        n = n1->n_child;
-        n = (node *) PyObject_REALLOC(n,
-                                      required_capacity * sizeof(node));
-        if (n == NULL)
-            return E_NOMEM;
-        n1->n_child = n;
-    }
-
-    n = &n1->n_child[n1->n_nchildren++];
-    n->n_type = type;
-    n->n_str = str;
-    n->n_lineno = lineno;
-    n->n_col_offset = col_offset;
-    n->n_nchildren = 0;
-    n->n_child = NULL;
-    return 0;
-}
-
-/* Forward */
-static void freechildren(node *);
-
-
-void
-PyNode_Free(node *n)
-{
-    if (n != NULL) {
-        freechildren(n);
-        PyObject_FREE(n);
-    }
-}
-
-static void
-freechildren(node *n)
-{
-    int i;
-    for (i = NCH(n); --i >= 0; )
-        freechildren(CHILD(n, i));
-    if (n->n_child != NULL)
-        PyObject_FREE(n->n_child);
-    if (STR(n) != NULL)
-        PyObject_FREE(STR(n));
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/parser.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/parser.c
deleted file mode 100644
index d98dfaa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/parser.c
+++ /dev/null
@@ -1,436 +0,0 @@
-
-/* Parser implementation */
-
-/* For a description, see the comments at end of this file */
-
-/* XXX To do: error recovery */
-
-#include "Python.h"
-#include "pgenheaders.h"
-#include "token.h"
-#include "grammar.h"
-#include "node.h"
-#include "parser.h"
-#include "errcode.h"
-
-
-#ifdef Py_DEBUG
-extern int Py_DebugFlag;
-#define D(x) if (!Py_DebugFlag); else x
-#else
-#define D(x)
-#endif
-
-
-/* STACK DATA TYPE */
-
-static void s_reset(stack *);
-
-static void
-s_reset(stack *s)
-{
-    s->s_top = &s->s_base[MAXSTACK];
-}
-
-#define s_empty(s) ((s)->s_top == &(s)->s_base[MAXSTACK])
-
-static int
-s_push(register stack *s, dfa *d, node *parent)
-{
-    register stackentry *top;
-    if (s->s_top == s->s_base) {
-        fprintf(stderr, "s_push: parser stack overflow\n");
-        return E_NOMEM;
-    }
-    top = --s->s_top;
-    top->s_dfa = d;
-    top->s_parent = parent;
-    top->s_state = 0;
-    return 0;
-}
-
-#ifdef Py_DEBUG
-
-static void
-s_pop(register stack *s)
-{
-    if (s_empty(s))
-        Py_FatalError("s_pop: parser stack underflow -- FATAL");
-    s->s_top++;
-}
-
-#else /* !Py_DEBUG */
-
-#define s_pop(s) (s)->s_top++
-
-#endif
-
-
-/* PARSER CREATION */
-
-parser_state *
-PyParser_New(grammar *g, int start)
-{
-    parser_state *ps;
-
-    if (!g->g_accel)
-        PyGrammar_AddAccelerators(g);
-    ps = (parser_state *)PyMem_MALLOC(sizeof(parser_state));
-    if (ps == NULL)
-        return NULL;
-    ps->p_grammar = g;
-#ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
-    ps->p_flags = 0;
-#endif
-    ps->p_tree = PyNode_New(start);
-    if (ps->p_tree == NULL) {
-        PyMem_FREE(ps);
-        return NULL;
-    }
-    s_reset(&ps->p_stack);
-    (void) s_push(&ps->p_stack, PyGrammar_FindDFA(g, start), ps->p_tree);
-    return ps;
-}
-
-void
-PyParser_Delete(parser_state *ps)
-{
-    /* NB If you want to save the parse tree,
-       you must set p_tree to NULL before calling delparser! */
-    PyNode_Free(ps->p_tree);
-    PyMem_FREE(ps);
-}
-
-
-/* PARSER STACK OPERATIONS */
-
-static int
-shift(register stack *s, int type, char *str, int newstate, int lineno, int col_offset)
-{
-    int err;
-    assert(!s_empty(s));
-    err = PyNode_AddChild(s->s_top->s_parent, type, str, lineno, col_offset);
-    if (err)
-        return err;
-    s->s_top->s_state = newstate;
-    return 0;
-}
-
-static int
-push(register stack *s, int type, dfa *d, int newstate, int lineno, int col_offset)
-{
-    int err;
-    register node *n;
-    n = s->s_top->s_parent;
-    assert(!s_empty(s));
-    err = PyNode_AddChild(n, type, (char *)NULL, lineno, col_offset);
-    if (err)
-        return err;
-    s->s_top->s_state = newstate;
-    return s_push(s, d, CHILD(n, NCH(n)-1));
-}
-
-
-/* PARSER PROPER */
-
-static int
-classify(parser_state *ps, int type, char *str)
-{
-    grammar *g = ps->p_grammar;
-    register int n = g->g_ll.ll_nlabels;
-
-    if (type == NAME) {
-        register char *s = str;
-        register label *l = g->g_ll.ll_label;
-        register int i;
-        for (i = n; i > 0; i--, l++) {
-            if (l->lb_type != NAME || l->lb_str == NULL ||
-                l->lb_str[0] != s[0] ||
-                strcmp(l->lb_str, s) != 0)
-                continue;
-#ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
-            if (ps->p_flags & CO_FUTURE_PRINT_FUNCTION &&
-                s[0] == 'p' && strcmp(s, "print") == 0) {
-                break; /* no longer a keyword */
-            }
-#endif
-            D(printf("It's a keyword\n"));
-            return n - i;
-        }
-    }
-
-    {
-        register label *l = g->g_ll.ll_label;
-        register int i;
-        for (i = n; i > 0; i--, l++) {
-            if (l->lb_type == type && l->lb_str == NULL) {
-                D(printf("It's a token we know\n"));
-                return n - i;
-            }
-        }
-    }
-
-    D(printf("Illegal token\n"));
-    return -1;
-}
-
-#ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
-static void
-future_hack(parser_state *ps)
-{
-    node *n = ps->p_stack.s_top->s_parent;
-    node *ch, *cch;
-    int i;
-
-    /* from __future__ import ..., must have at least 4 children */
-    n = CHILD(n, 0);
-    if (NCH(n) < 4)
-        return;
-    ch = CHILD(n, 0);
-    if (STR(ch) == NULL || strcmp(STR(ch), "from") != 0)
-        return;
-    ch = CHILD(n, 1);
-    if (NCH(ch) == 1 && STR(CHILD(ch, 0)) &&
-        strcmp(STR(CHILD(ch, 0)), "__future__") != 0)
-        return;
-    ch = CHILD(n, 3);
-    /* ch can be a star, a parenthesis or import_as_names */
-    if (TYPE(ch) == STAR)
-        return;
-    if (TYPE(ch) == LPAR)
-        ch = CHILD(n, 4);
-
-    for (i = 0; i < NCH(ch); i += 2) {
-        cch = CHILD(ch, i);
-        if (NCH(cch) >= 1 && TYPE(CHILD(cch, 0)) == NAME) {
-            char *str_ch = STR(CHILD(cch, 0));
-            if (strcmp(str_ch, FUTURE_WITH_STATEMENT) == 0) {
-                ps->p_flags |= CO_FUTURE_WITH_STATEMENT;
-            } else if (strcmp(str_ch, FUTURE_PRINT_FUNCTION) == 0) {
-                ps->p_flags |= CO_FUTURE_PRINT_FUNCTION;
-            } else if (strcmp(str_ch, FUTURE_UNICODE_LITERALS) == 0) {
-                ps->p_flags |= CO_FUTURE_UNICODE_LITERALS;
-            }
-        }
-    }
-}
-#endif /* future keyword */
-
-int
-PyParser_AddToken(register parser_state *ps, register int type, char *str,
-                  int lineno, int col_offset, int *expected_ret)
-{
-    register int ilabel;
-    int err;
-
-    D(printf("Token %s/'%s' ... ", _PyParser_TokenNames[type], str));
-
-    /* Find out which label this token is */
-    ilabel = classify(ps, type, str);
-    if (ilabel < 0)
-        return E_SYNTAX;
-
-    /* Loop until the token is shifted or an error occurred */
-    for (;;) {
-        /* Fetch the current dfa and state */
-        register dfa *d = ps->p_stack.s_top->s_dfa;
-        register state *s = &d->d_state[ps->p_stack.s_top->s_state];
-
-        D(printf(" DFA '%s', state %d:",
-            d->d_name, ps->p_stack.s_top->s_state));
-
-        /* Check accelerator */
-        if (s->s_lower <= ilabel && ilabel < s->s_upper) {
-            register int x = s->s_accel[ilabel - s->s_lower];
-            if (x != -1) {
-                if (x & (1<<7)) {
-                    /* Push non-terminal */
-                    int nt = (x >> 8) + NT_OFFSET;
-                    int arrow = x & ((1<<7)-1);
-                    dfa *d1 = PyGrammar_FindDFA(
-                        ps->p_grammar, nt);
-                    if ((err = push(&ps->p_stack, nt, d1,
-                        arrow, lineno, col_offset)) > 0) {
-                        D(printf(" MemError: push\n"));
-                        return err;
-                    }
-                    D(printf(" Push ...\n"));
-                    continue;
-                }
-
-                /* Shift the token */
-                if ((err = shift(&ps->p_stack, type, str,
-                                x, lineno, col_offset)) > 0) {
-                    D(printf(" MemError: shift.\n"));
-                    return err;
-                }
-                D(printf(" Shift.\n"));
-                /* Pop while we are in an accept-only state */
-                while (s = &d->d_state
-                                [ps->p_stack.s_top->s_state],
-                    s->s_accept && s->s_narcs == 1) {
-                    D(printf("  DFA '%s', state %d: "
-                             "Direct pop.\n",
-                             d->d_name,
-                             ps->p_stack.s_top->s_state));
-#ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
-                    if (d->d_name[0] == 'i' &&
-                        strcmp(d->d_name,
-                           "import_stmt") == 0)
-                        future_hack(ps);
-#endif
-                    s_pop(&ps->p_stack);
-                    if (s_empty(&ps->p_stack)) {
-                        D(printf("  ACCEPT.\n"));
-                        return E_DONE;
-                    }
-                    d = ps->p_stack.s_top->s_dfa;
-                }
-                return E_OK;
-            }
-        }
-
-        if (s->s_accept) {
-#ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
-            if (d->d_name[0] == 'i' &&
-                strcmp(d->d_name, "import_stmt") == 0)
-                future_hack(ps);
-#endif
-            /* Pop this dfa and try again */
-            s_pop(&ps->p_stack);
-            D(printf(" Pop ...\n"));
-            if (s_empty(&ps->p_stack)) {
-                D(printf(" Error: bottom of stack.\n"));
-                return E_SYNTAX;
-            }
-            continue;
-        }
-
-        /* Stuck, report syntax error */
-        D(printf(" Error.\n"));
-        if (expected_ret) {
-            if (s->s_lower == s->s_upper - 1) {
-                /* Only one possible expected token */
-                *expected_ret = ps->p_grammar->
-                    g_ll.ll_label[s->s_lower].lb_type;
-            }
-            else
-                *expected_ret = -1;
-        }
-        return E_SYNTAX;
-    }
-}
-
-
-#ifdef Py_DEBUG
-
-/* DEBUG OUTPUT */
-
-void
-dumptree(grammar *g, node *n)
-{
-    int i;
-
-    if (n == NULL)
-        printf("NIL");
-    else {
-        label l;
-        l.lb_type = TYPE(n);
-        l.lb_str = STR(n);
-        printf("%s", PyGrammar_LabelRepr(&l));
-        if (ISNONTERMINAL(TYPE(n))) {
-            printf("(");
-            for (i = 0; i < NCH(n); i++) {
-                if (i > 0)
-                    printf(",");
-                dumptree(g, CHILD(n, i));
-            }
-            printf(")");
-        }
-    }
-}
-
-void
-showtree(grammar *g, node *n)
-{
-    int i;
-
-    if (n == NULL)
-        return;
-    if (ISNONTERMINAL(TYPE(n))) {
-        for (i = 0; i < NCH(n); i++)
-            showtree(g, CHILD(n, i));
-    }
-    else if (ISTERMINAL(TYPE(n))) {
-        printf("%s", _PyParser_TokenNames[TYPE(n)]);
-        if (TYPE(n) == NUMBER || TYPE(n) == NAME)
-            printf("(%s)", STR(n));
-        printf(" ");
-    }
-    else
-        printf("? ");
-}
-
-void
-printtree(parser_state *ps)
-{
-    if (Py_DebugFlag) {
-        printf("Parse tree:\n");
-        dumptree(ps->p_grammar, ps->p_tree);
-        printf("\n");
-        printf("Tokens:\n");
-        showtree(ps->p_grammar, ps->p_tree);
-        printf("\n");
-    }
-    printf("Listing:\n");
-    PyNode_ListTree(ps->p_tree);
-    printf("\n");
-}
-
-#endif /* Py_DEBUG */
-
-/*
-
-Description
------------
-
-The parser's interface is different than usual: the function addtoken()
-must be called for each token in the input.  This makes it possible to
-turn it into an incremental parsing system later.  The parsing system
-constructs a parse tree as it goes.
-
-A parsing rule is represented as a Deterministic Finite-state Automaton
-(DFA).  A node in a DFA represents a state of the parser; an arc represents
-a transition.  Transitions are either labeled with terminal symbols or
-with non-terminals.  When the parser decides to follow an arc labeled
-with a non-terminal, it is invoked recursively with the DFA representing
-the parsing rule for that as its initial state; when that DFA accepts,
-the parser that invoked it continues.  The parse tree constructed by the
-recursively called parser is inserted as a child in the current parse tree.
-
-The DFA's can be constructed automatically from a more conventional
-language description.  An extended LL(1) grammar (ELL(1)) is suitable.
-Certain restrictions make the parser's life easier: rules that can produce
-the empty string should be outlawed (there are other ways to put loops
-or optional parts in the language).  To avoid the need to construct
-FIRST sets, we can require that all but the last alternative of a rule
-(really: arc going out of a DFA's state) must begin with a terminal
-symbol.
-
-As an example, consider this grammar:
-
-expr:   term (OP term)*
-term:   CONSTANT | '(' expr ')'
-
-The DFA corresponding to the rule for expr is:
-
-------->.---term-->.------->
-    ^          |
-    |          |
-    \----OP----/
-
-The parse tree generated for the input a+b is:
-
-(expr: (term: (NAME: a)), (OP: +), (term: (NAME: b)))
-
-*/
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/parser.h b/AppPkg/Applications/Python/Python-2.7.2/Parser/parser.h
deleted file mode 100644
index bc09396..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/parser.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef Py_PARSER_H
-#define Py_PARSER_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Parser interface */
-
-#define MAXSTACK 1500
-
-typedef struct {
-	int		 s_state;	/* State in current DFA */
-	dfa		*s_dfa;		/* Current DFA */
-	struct _node	*s_parent;	/* Where to add next node */
-} stackentry;
-
-typedef struct {
-	stackentry	*s_top;		/* Top entry */
-	stackentry	 s_base[MAXSTACK];/* Array of stack entries */
-					/* NB The stack grows down */
-} stack;
-
-typedef struct {
-	stack	 	p_stack;	/* Stack of parser states */
-	grammar		*p_grammar;	/* Grammar to use */
-	node		*p_tree;	/* Top of parse tree */
-#ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
-	unsigned long	p_flags;	/* see co_flags in Include/code.h */
-#endif
-} parser_state;
-
-parser_state *PyParser_New(grammar *g, int start);
-void PyParser_Delete(parser_state *ps);
-int PyParser_AddToken(parser_state *ps, int type, char *str, int lineno, int col_offset,
-                      int *expected_ret);
-void PyGrammar_AddAccelerators(grammar *g);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_PARSER_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/parsetok.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/parsetok.c
deleted file mode 100644
index f086449..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/parsetok.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/** @file
-  Parser-tokenizer link implementation.
-
-  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-  This program and the accompanying materials are licensed and made available under
-  the terms and conditions of the BSD License that accompanies this distribution.
-  The full text of the license may be found at
-  http://opensource.org/licenses/bsd-license.php.
-
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-#include "pgenheaders.h"
-#include "tokenizer.h"
-#include "node.h"
-#include "grammar.h"
-#include "parser.h"
-#include "parsetok.h"
-#include "errcode.h"
-#include "graminit.h"
-
-int Py_TabcheckFlag;
-
-
-/* Forward */
-static node *parsetok(struct tok_state *, grammar *, int, perrdetail *, int *);
-static void initerr(perrdetail *err_ret, const char* filename);
-
-/* Parse input coming from a string.  Return error code, print some errors. */
-node *
-PyParser_ParseString(const char *s, grammar *g, int start, perrdetail *err_ret)
-{
-    return PyParser_ParseStringFlagsFilename(s, NULL, g, start, err_ret, 0);
-}
-
-node *
-PyParser_ParseStringFlags(const char *s, grammar *g, int start,
-                          perrdetail *err_ret, int flags)
-{
-    return PyParser_ParseStringFlagsFilename(s, NULL,
-                                             g, start, err_ret, flags);
-}
-
-node *
-PyParser_ParseStringFlagsFilename(const char *s, const char *filename,
-                          grammar *g, int start,
-                          perrdetail *err_ret, int flags)
-{
-    int iflags = flags;
-    return PyParser_ParseStringFlagsFilenameEx(s, filename, g, start,
-                                               err_ret, &iflags);
-}
-
-node *
-PyParser_ParseStringFlagsFilenameEx(const char *s, const char *filename,
-                          grammar *g, int start,
-                          perrdetail *err_ret, int *flags)
-{
-    struct tok_state *tok;
-
-    initerr(err_ret, filename);
-
-    if ((tok = PyTokenizer_FromString(s, start == file_input)) == NULL) {
-        err_ret->error = PyErr_Occurred() ? E_DECODE : E_NOMEM;
-        return NULL;
-    }
-
-    tok->filename = filename ? filename : "<string>";
-    if (Py_TabcheckFlag || Py_VerboseFlag) {
-        tok->altwarning = (tok->filename != NULL);
-        if (Py_TabcheckFlag >= 2)
-            tok->alterror++;
-    }
-
-    return parsetok(tok, g, start, err_ret, flags);
-}
-
-/* Parse input coming from a file.  Return error code, print some errors. */
-
-node *
-PyParser_ParseFile(FILE *fp, const char *filename, grammar *g, int start,
-                   char *ps1, char *ps2, perrdetail *err_ret)
-{
-    return PyParser_ParseFileFlags(fp, filename, g, start, ps1, ps2,
-                                   err_ret, 0);
-}
-
-node *
-PyParser_ParseFileFlags(FILE *fp, const char *filename, grammar *g, int start,
-                        char *ps1, char *ps2, perrdetail *err_ret, int flags)
-{
-    int iflags = flags;
-    return PyParser_ParseFileFlagsEx(fp, filename, g, start, ps1, ps2, err_ret, &iflags);
-}
-
-node *
-PyParser_ParseFileFlagsEx(FILE *fp, const char *filename, grammar *g, int start,
-                          char *ps1, char *ps2, perrdetail *err_ret, int *flags)
-{
-    struct tok_state *tok;
-
-    initerr(err_ret, filename);
-
-    if ((tok = PyTokenizer_FromFile(fp, ps1, ps2)) == NULL) {
-        err_ret->error = E_NOMEM;
-        return NULL;
-    }
-    tok->filename = filename;
-    if (Py_TabcheckFlag || Py_VerboseFlag) {
-        tok->altwarning = (filename != NULL);
-        if (Py_TabcheckFlag >= 2)
-            tok->alterror++;
-    }
-
-    return parsetok(tok, g, start, err_ret, flags);
-}
-
-#if 0
-static char with_msg[] =
-"%s:%d: Warning: 'with' will become a reserved keyword in Python 2.6\n";
-
-static char as_msg[] =
-"%s:%d: Warning: 'as' will become a reserved keyword in Python 2.6\n";
-
-static void
-warn(const char *msg, const char *filename, int lineno)
-{
-    if (filename == NULL)
-        filename = "<string>";
-    PySys_WriteStderr(msg, filename, lineno);
-}
-#endif
-
-/* Parse input coming from the given tokenizer structure.
-   Return error code. */
-
-static node *
-parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret,
-         int *flags)
-{
-    parser_state *ps;
-    node *n;
-    int started = 0;
-    //int handling_import = 0;
-    //int handling_with = 0;
-
-    if ((ps = PyParser_New(g, start)) == NULL) {
-        fprintf(stderr, "no mem for new parser\n");
-        err_ret->error = E_NOMEM;
-        PyTokenizer_Free(tok);
-        return NULL;
-    }
-#ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
-    if (*flags & PyPARSE_PRINT_IS_FUNCTION) {
-        ps->p_flags |= CO_FUTURE_PRINT_FUNCTION;
-    }
-    if (*flags & PyPARSE_UNICODE_LITERALS) {
-        ps->p_flags |= CO_FUTURE_UNICODE_LITERALS;
-    }
-
-#endif
-
-    for (;;) {
-        char *a, *b;
-        int type;
-        size_t len;
-        char *str;
-        int col_offset;
-
-        type = PyTokenizer_Get(tok, &a, &b);
-        if (type == ERRORTOKEN) {
-            err_ret->error = tok->done;
-            break;
-        }
-        if (type == ENDMARKER && started) {
-            type = NEWLINE; /* Add an extra newline */
-            //handling_with = 0;
-            //handling_import = 0;
-            started = 0;
-            /* Add the right number of dedent tokens,
-               except if a certain flag is given --
-               codeop.py uses this. */
-            if (tok->indent &&
-                !(*flags & PyPARSE_DONT_IMPLY_DEDENT))
-            {
-                tok->pendin = -tok->indent;
-                tok->indent = 0;
-            }
-        }
-        else
-            started = 1;
-        len = b - a; /* XXX this may compute NULL - NULL */
-        str = (char *) PyObject_MALLOC(len + 1);
-        if (str == NULL) {
-            fprintf(stderr, "no mem for next token\n");
-            err_ret->error = E_NOMEM;
-            break;
-        }
-        if (len > 0)
-            strncpy(str, a, len);
-        str[len] = '\0';
-
-#ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
-#endif
-        if (a >= tok->line_start)
-            col_offset = a - tok->line_start;
-        else
-            col_offset = -1;
-
-        if ((err_ret->error =
-             PyParser_AddToken(ps, (int)type, str, tok->lineno, col_offset,
-                               &(err_ret->expected))) != E_OK) {
-            if (err_ret->error != E_DONE) {
-                PyObject_FREE(str);
-                err_ret->token = type;
-            }
-            break;
-        }
-    }
-
-    if (err_ret->error == E_DONE) {
-        n = ps->p_tree;
-        ps->p_tree = NULL;
-    }
-    else
-        n = NULL;
-
-#ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
-    *flags = ps->p_flags;
-#endif
-    PyParser_Delete(ps);
-
-    if (n == NULL) {
-        if (tok->lineno <= 1 && tok->done == E_EOF)
-            err_ret->error = E_EOF;
-        err_ret->lineno = tok->lineno;
-        if (tok->buf != NULL) {
-            char *text = NULL;
-            size_t len;
-            assert(tok->cur - tok->buf < INT_MAX);
-            err_ret->offset = (int)(tok->cur - tok->buf);
-            len = tok->inp - tok->buf;
-#ifdef Py_USING_UNICODE
-            text = PyTokenizer_RestoreEncoding(tok, len, &err_ret->offset);
-
-#endif
-            if (text == NULL) {
-                text = (char *) PyObject_MALLOC(len + 1);
-                if (text != NULL) {
-                    if (len > 0)
-                        strncpy(text, tok->buf, len);
-                    text[len] = '\0';
-                }
-            }
-            err_ret->text = text;
-        }
-    } else if (tok->encoding != NULL) {
-        /* 'nodes->n_str' uses PyObject_*, while 'tok->encoding' was
-         * allocated using PyMem_
-         */
-        node* r = PyNode_New(encoding_decl);
-        if (r)
-            r->n_str = PyObject_MALLOC(strlen(tok->encoding)+1);
-        if (!r || !r->n_str) {
-            err_ret->error = E_NOMEM;
-            if (r)
-                PyObject_FREE(r);
-            n = NULL;
-            goto done;
-        }
-        strcpy(r->n_str, tok->encoding);
-        PyMem_FREE(tok->encoding);
-        tok->encoding = NULL;
-        r->n_nchildren = 1;
-        r->n_child = n;
-        n = r;
-    }
-
-done:
-    PyTokenizer_Free(tok);
-
-    return n;
-}
-
-static void
-initerr(perrdetail *err_ret, const char *filename)
-{
-    err_ret->error = E_OK;
-    err_ret->filename = filename;
-    err_ret->lineno = 0;
-    err_ret->offset = 0;
-    err_ret->text = NULL;
-    err_ret->token = -1;
-    err_ret->expected = -1;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/pgen.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/pgen.c
deleted file mode 100644
index 4e36faf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/pgen.c
+++ /dev/null
@@ -1,708 +0,0 @@
-/* Parser generator */
-
-/* For a description, see the comments at end of this file */
-
-#include "Python.h"
-#include "pgenheaders.h"
-#include "token.h"
-#include "node.h"
-#include "grammar.h"
-#include "metagrammar.h"
-#include "pgen.h"
-
-extern int Py_DebugFlag;
-extern int Py_IgnoreEnvironmentFlag; /* needed by Py_GETENV */
-
-
-/* PART ONE -- CONSTRUCT NFA -- Cf. Algorithm 3.2 from [Aho&Ullman 77] */
-
-typedef struct _nfaarc {
-    int         ar_label;
-    int         ar_arrow;
-} nfaarc;
-
-typedef struct _nfastate {
-    int         st_narcs;
-    nfaarc      *st_arc;
-} nfastate;
-
-typedef struct _nfa {
-    int                 nf_type;
-    char                *nf_name;
-    int                 nf_nstates;
-    nfastate            *nf_state;
-    int                 nf_start, nf_finish;
-} nfa;
-
-/* Forward */
-static void compile_rhs(labellist *ll,
-                        nfa *nf, node *n, int *pa, int *pb);
-static void compile_alt(labellist *ll,
-                        nfa *nf, node *n, int *pa, int *pb);
-static void compile_item(labellist *ll,
-                         nfa *nf, node *n, int *pa, int *pb);
-static void compile_atom(labellist *ll,
-                         nfa *nf, node *n, int *pa, int *pb);
-
-static int
-addnfastate(nfa *nf)
-{
-    nfastate *st;
-
-    nf->nf_state = (nfastate *)PyObject_REALLOC(nf->nf_state,
-                                sizeof(nfastate) * (nf->nf_nstates + 1));
-    if (nf->nf_state == NULL)
-        Py_FatalError("out of mem");
-    st = &nf->nf_state[nf->nf_nstates++];
-    st->st_narcs = 0;
-    st->st_arc = NULL;
-    return st - nf->nf_state;
-}
-
-static void
-addnfaarc(nfa *nf, int from, int to, int lbl)
-{
-    nfastate *st;
-    nfaarc *ar;
-
-    st = &nf->nf_state[from];
-    st->st_arc = (nfaarc *)PyObject_REALLOC(st->st_arc,
-                                  sizeof(nfaarc) * (st->st_narcs + 1));
-    if (st->st_arc == NULL)
-        Py_FatalError("out of mem");
-    ar = &st->st_arc[st->st_narcs++];
-    ar->ar_label = lbl;
-    ar->ar_arrow = to;
-}
-
-static nfa *
-newnfa(char *name)
-{
-    nfa *nf;
-    static int type = NT_OFFSET; /* All types will be disjunct */
-
-    nf = (nfa *)PyObject_MALLOC(sizeof(nfa));
-    if (nf == NULL)
-        Py_FatalError("no mem for new nfa");
-    nf->nf_type = type++;
-    nf->nf_name = name; /* XXX strdup(name) ??? */
-    nf->nf_nstates = 0;
-    nf->nf_state = NULL;
-    nf->nf_start = nf->nf_finish = -1;
-    return nf;
-}
-
-typedef struct _nfagrammar {
-    int                 gr_nnfas;
-    nfa                 **gr_nfa;
-    labellist           gr_ll;
-} nfagrammar;
-
-/* Forward */
-static void compile_rule(nfagrammar *gr, node *n);
-
-static nfagrammar *
-newnfagrammar(void)
-{
-    nfagrammar *gr;
-
-    gr = (nfagrammar *)PyObject_MALLOC(sizeof(nfagrammar));
-    if (gr == NULL)
-        Py_FatalError("no mem for new nfa grammar");
-    gr->gr_nnfas = 0;
-    gr->gr_nfa = NULL;
-    gr->gr_ll.ll_nlabels = 0;
-    gr->gr_ll.ll_label = NULL;
-    addlabel(&gr->gr_ll, ENDMARKER, "EMPTY");
-    return gr;
-}
-
-static nfa *
-addnfa(nfagrammar *gr, char *name)
-{
-    nfa *nf;
-
-    nf = newnfa(name);
-    gr->gr_nfa = (nfa **)PyObject_REALLOC(gr->gr_nfa,
-                                  sizeof(nfa*) * (gr->gr_nnfas + 1));
-    if (gr->gr_nfa == NULL)
-        Py_FatalError("out of mem");
-    gr->gr_nfa[gr->gr_nnfas++] = nf;
-    addlabel(&gr->gr_ll, NAME, nf->nf_name);
-    return nf;
-}
-
-#ifdef Py_DEBUG
-
-static char REQNFMT[] = "metacompile: less than %d children\n";
-
-#define REQN(i, count) \
-    if (i < count) { \
-        fprintf(stderr, REQNFMT, count); \
-        Py_FatalError("REQN"); \
-    } else
-
-#else
-#define REQN(i, count)  /* empty */
-#endif
-
-static nfagrammar *
-metacompile(node *n)
-{
-    nfagrammar *gr;
-    int i;
-
-    if (Py_DebugFlag)
-        printf("Compiling (meta-) parse tree into NFA grammar\n");
-    gr = newnfagrammar();
-    REQ(n, MSTART);
-    i = n->n_nchildren - 1; /* Last child is ENDMARKER */
-    n = n->n_child;
-    for (; --i >= 0; n++) {
-        if (n->n_type != NEWLINE)
-            compile_rule(gr, n);
-    }
-    return gr;
-}
-
-static void
-compile_rule(nfagrammar *gr, node *n)
-{
-    nfa *nf;
-
-    REQ(n, RULE);
-    REQN(n->n_nchildren, 4);
-    n = n->n_child;
-    REQ(n, NAME);
-    nf = addnfa(gr, n->n_str);
-    n++;
-    REQ(n, COLON);
-    n++;
-    REQ(n, RHS);
-    compile_rhs(&gr->gr_ll, nf, n, &nf->nf_start, &nf->nf_finish);
-    n++;
-    REQ(n, NEWLINE);
-}
-
-static void
-compile_rhs(labellist *ll, nfa *nf, node *n, int *pa, int *pb)
-{
-    int i;
-    int a, b;
-
-    REQ(n, RHS);
-    i = n->n_nchildren;
-    REQN(i, 1);
-    n = n->n_child;
-    REQ(n, ALT);
-    compile_alt(ll, nf, n, pa, pb);
-    if (--i <= 0)
-        return;
-    n++;
-    a = *pa;
-    b = *pb;
-    *pa = addnfastate(nf);
-    *pb = addnfastate(nf);
-    addnfaarc(nf, *pa, a, EMPTY);
-    addnfaarc(nf, b, *pb, EMPTY);
-    for (; --i >= 0; n++) {
-        REQ(n, VBAR);
-        REQN(i, 1);
-        --i;
-        n++;
-        REQ(n, ALT);
-        compile_alt(ll, nf, n, &a, &b);
-        addnfaarc(nf, *pa, a, EMPTY);
-        addnfaarc(nf, b, *pb, EMPTY);
-    }
-}
-
-static void
-compile_alt(labellist *ll, nfa *nf, node *n, int *pa, int *pb)
-{
-    int i;
-    int a, b;
-
-    REQ(n, ALT);
-    i = n->n_nchildren;
-    REQN(i, 1);
-    n = n->n_child;
-    REQ(n, ITEM);
-    compile_item(ll, nf, n, pa, pb);
-    --i;
-    n++;
-    for (; --i >= 0; n++) {
-        REQ(n, ITEM);
-        compile_item(ll, nf, n, &a, &b);
-        addnfaarc(nf, *pb, a, EMPTY);
-        *pb = b;
-    }
-}
-
-static void
-compile_item(labellist *ll, nfa *nf, node *n, int *pa, int *pb)
-{
-    int i;
-    int a, b;
-
-    REQ(n, ITEM);
-    i = n->n_nchildren;
-    REQN(i, 1);
-    n = n->n_child;
-    if (n->n_type == LSQB) {
-        REQN(i, 3);
-        n++;
-        REQ(n, RHS);
-        *pa = addnfastate(nf);
-        *pb = addnfastate(nf);
-        addnfaarc(nf, *pa, *pb, EMPTY);
-        compile_rhs(ll, nf, n, &a, &b);
-        addnfaarc(nf, *pa, a, EMPTY);
-        addnfaarc(nf, b, *pb, EMPTY);
-        REQN(i, 1);
-        n++;
-        REQ(n, RSQB);
-    }
-    else {
-        compile_atom(ll, nf, n, pa, pb);
-        if (--i <= 0)
-            return;
-        n++;
-        addnfaarc(nf, *pb, *pa, EMPTY);
-        if (n->n_type == STAR)
-            *pb = *pa;
-        else
-            REQ(n, PLUS);
-    }
-}
-
-static void
-compile_atom(labellist *ll, nfa *nf, node *n, int *pa, int *pb)
-{
-    int i;
-
-    REQ(n, ATOM);
-    i = n->n_nchildren;
-    REQN(i, 1);
-    n = n->n_child;
-    if (n->n_type == LPAR) {
-        REQN(i, 3);
-        n++;
-        REQ(n, RHS);
-        compile_rhs(ll, nf, n, pa, pb);
-        n++;
-        REQ(n, RPAR);
-    }
-    else if (n->n_type == NAME || n->n_type == STRING) {
-        *pa = addnfastate(nf);
-        *pb = addnfastate(nf);
-        addnfaarc(nf, *pa, *pb, addlabel(ll, n->n_type, n->n_str));
-    }
-    else
-        REQ(n, NAME);
-}
-
-static void
-dumpstate(labellist *ll, nfa *nf, int istate)
-{
-    nfastate *st;
-    int i;
-    nfaarc *ar;
-
-    printf("%c%2d%c",
-        istate == nf->nf_start ? '*' : ' ',
-        istate,
-        istate == nf->nf_finish ? '.' : ' ');
-    st = &nf->nf_state[istate];
-    ar = st->st_arc;
-    for (i = 0; i < st->st_narcs; i++) {
-        if (i > 0)
-            printf("\n    ");
-        printf("-> %2d  %s", ar->ar_arrow,
-            PyGrammar_LabelRepr(&ll->ll_label[ar->ar_label]));
-        ar++;
-    }
-    printf("\n");
-}
-
-static void
-dumpnfa(labellist *ll, nfa *nf)
-{
-    int i;
-
-    printf("NFA '%s' has %d states; start %d, finish %d\n",
-        nf->nf_name, nf->nf_nstates, nf->nf_start, nf->nf_finish);
-    for (i = 0; i < nf->nf_nstates; i++)
-        dumpstate(ll, nf, i);
-}
-
-
-/* PART TWO -- CONSTRUCT DFA -- Algorithm 3.1 from [Aho&Ullman 77] */
-
-static void
-addclosure(bitset ss, nfa *nf, int istate)
-{
-    if (addbit(ss, istate)) {
-        nfastate *st = &nf->nf_state[istate];
-        nfaarc *ar = st->st_arc;
-        int i;
-
-        for (i = st->st_narcs; --i >= 0; ) {
-            if (ar->ar_label == EMPTY)
-                addclosure(ss, nf, ar->ar_arrow);
-            ar++;
-        }
-    }
-}
-
-typedef struct _ss_arc {
-    bitset      sa_bitset;
-    int         sa_arrow;
-    int         sa_label;
-} ss_arc;
-
-typedef struct _ss_state {
-    bitset      ss_ss;
-    int         ss_narcs;
-    struct _ss_arc      *ss_arc;
-    int         ss_deleted;
-    int         ss_finish;
-    int         ss_rename;
-} ss_state;
-
-typedef struct _ss_dfa {
-    int         sd_nstates;
-    ss_state *sd_state;
-} ss_dfa;
-
-/* Forward */
-static void printssdfa(int xx_nstates, ss_state *xx_state, int nbits,
-                       labellist *ll, char *msg);
-static void simplify(int xx_nstates, ss_state *xx_state);
-static void convert(dfa *d, int xx_nstates, ss_state *xx_state);
-
-static void
-makedfa(nfagrammar *gr, nfa *nf, dfa *d)
-{
-    int nbits = nf->nf_nstates;
-    bitset ss;
-    int xx_nstates;
-    ss_state *xx_state, *yy;
-    ss_arc *zz;
-    int istate, jstate, iarc, jarc, ibit;
-    nfastate *st;
-    nfaarc *ar;
-
-    ss = newbitset(nbits);
-    addclosure(ss, nf, nf->nf_start);
-    xx_state = (ss_state *)PyObject_MALLOC(sizeof(ss_state));
-    if (xx_state == NULL)
-        Py_FatalError("no mem for xx_state in makedfa");
-    xx_nstates = 1;
-    yy = &xx_state[0];
-    yy->ss_ss = ss;
-    yy->ss_narcs = 0;
-    yy->ss_arc = NULL;
-    yy->ss_deleted = 0;
-    yy->ss_finish = testbit(ss, nf->nf_finish);
-    if (yy->ss_finish)
-        printf("Error: nonterminal '%s' may produce empty.\n",
-            nf->nf_name);
-
-    /* This algorithm is from a book written before
-       the invention of structured programming... */
-
-    /* For each unmarked state... */
-    for (istate = 0; istate < xx_nstates; ++istate) {
-        size_t size;
-        yy = &xx_state[istate];
-        ss = yy->ss_ss;
-        /* For all its states... */
-        for (ibit = 0; ibit < nf->nf_nstates; ++ibit) {
-            if (!testbit(ss, ibit))
-                continue;
-            st = &nf->nf_state[ibit];
-            /* For all non-empty arcs from this state... */
-            for (iarc = 0; iarc < st->st_narcs; iarc++) {
-                ar = &st->st_arc[iarc];
-                if (ar->ar_label == EMPTY)
-                    continue;
-                /* Look up in list of arcs from this state */
-                for (jarc = 0; jarc < yy->ss_narcs; ++jarc) {
-                    zz = &yy->ss_arc[jarc];
-                    if (ar->ar_label == zz->sa_label)
-                        goto found;
-                }
-                /* Add new arc for this state */
-                size = sizeof(ss_arc) * (yy->ss_narcs + 1);
-                yy->ss_arc = (ss_arc *)PyObject_REALLOC(
-                                            yy->ss_arc, size);
-                if (yy->ss_arc == NULL)
-                    Py_FatalError("out of mem");
-                zz = &yy->ss_arc[yy->ss_narcs++];
-                zz->sa_label = ar->ar_label;
-                zz->sa_bitset = newbitset(nbits);
-                zz->sa_arrow = -1;
-             found:             ;
-                /* Add destination */
-                addclosure(zz->sa_bitset, nf, ar->ar_arrow);
-            }
-        }
-        /* Now look up all the arrow states */
-        for (jarc = 0; jarc < xx_state[istate].ss_narcs; jarc++) {
-            zz = &xx_state[istate].ss_arc[jarc];
-            for (jstate = 0; jstate < xx_nstates; jstate++) {
-                if (samebitset(zz->sa_bitset,
-                    xx_state[jstate].ss_ss, nbits)) {
-                    zz->sa_arrow = jstate;
-                    goto done;
-                }
-            }
-            size = sizeof(ss_state) * (xx_nstates + 1);
-            xx_state = (ss_state *)PyObject_REALLOC(xx_state,
-                                                        size);
-            if (xx_state == NULL)
-                Py_FatalError("out of mem");
-            zz->sa_arrow = xx_nstates;
-            yy = &xx_state[xx_nstates++];
-            yy->ss_ss = zz->sa_bitset;
-            yy->ss_narcs = 0;
-            yy->ss_arc = NULL;
-            yy->ss_deleted = 0;
-            yy->ss_finish = testbit(yy->ss_ss, nf->nf_finish);
-         done:          ;
-        }
-    }
-
-    if (Py_DebugFlag)
-        printssdfa(xx_nstates, xx_state, nbits, &gr->gr_ll,
-                                        "before minimizing");
-
-    simplify(xx_nstates, xx_state);
-
-    if (Py_DebugFlag)
-        printssdfa(xx_nstates, xx_state, nbits, &gr->gr_ll,
-                                        "after minimizing");
-
-    convert(d, xx_nstates, xx_state);
-
-    /* XXX cleanup */
-    PyObject_FREE(xx_state);
-}
-
-static void
-printssdfa(int xx_nstates, ss_state *xx_state, int nbits,
-           labellist *ll, char *msg)
-{
-    int i, ibit, iarc;
-    ss_state *yy;
-    ss_arc *zz;
-
-    printf("Subset DFA %s\n", msg);
-    for (i = 0; i < xx_nstates; i++) {
-        yy = &xx_state[i];
-        if (yy->ss_deleted)
-            continue;
-        printf(" Subset %d", i);
-        if (yy->ss_finish)
-            printf(" (finish)");
-        printf(" { ");
-        for (ibit = 0; ibit < nbits; ibit++) {
-            if (testbit(yy->ss_ss, ibit))
-                printf("%d ", ibit);
-        }
-        printf("}\n");
-        for (iarc = 0; iarc < yy->ss_narcs; iarc++) {
-            zz = &yy->ss_arc[iarc];
-            printf("  Arc to state %d, label %s\n",
-                zz->sa_arrow,
-                PyGrammar_LabelRepr(
-                    &ll->ll_label[zz->sa_label]));
-        }
-    }
-}
-
-
-/* PART THREE -- SIMPLIFY DFA */
-
-/* Simplify the DFA by repeatedly eliminating states that are
-   equivalent to another oner.  This is NOT Algorithm 3.3 from
-   [Aho&Ullman 77].  It does not always finds the minimal DFA,
-   but it does usually make a much smaller one...  (For an example
-   of sub-optimal behavior, try S: x a b+ | y a b+.)
-*/
-
-static int
-samestate(ss_state *s1, ss_state *s2)
-{
-    int i;
-
-    if (s1->ss_narcs != s2->ss_narcs || s1->ss_finish != s2->ss_finish)
-        return 0;
-    for (i = 0; i < s1->ss_narcs; i++) {
-        if (s1->ss_arc[i].sa_arrow != s2->ss_arc[i].sa_arrow ||
-            s1->ss_arc[i].sa_label != s2->ss_arc[i].sa_label)
-            return 0;
-    }
-    return 1;
-}
-
-static void
-renamestates(int xx_nstates, ss_state *xx_state, int from, int to)
-{
-    int i, j;
-
-    if (Py_DebugFlag)
-        printf("Rename state %d to %d.\n", from, to);
-    for (i = 0; i < xx_nstates; i++) {
-        if (xx_state[i].ss_deleted)
-            continue;
-        for (j = 0; j < xx_state[i].ss_narcs; j++) {
-            if (xx_state[i].ss_arc[j].sa_arrow == from)
-                xx_state[i].ss_arc[j].sa_arrow = to;
-        }
-    }
-}
-
-static void
-simplify(int xx_nstates, ss_state *xx_state)
-{
-    int changes;
-    int i, j;
-
-    do {
-        changes = 0;
-        for (i = 1; i < xx_nstates; i++) {
-            if (xx_state[i].ss_deleted)
-                continue;
-            for (j = 0; j < i; j++) {
-                if (xx_state[j].ss_deleted)
-                    continue;
-                if (samestate(&xx_state[i], &xx_state[j])) {
-                    xx_state[i].ss_deleted++;
-                    renamestates(xx_nstates, xx_state,
-                                 i, j);
-                    changes++;
-                    break;
-                }
-            }
-        }
-    } while (changes);
-}
-
-
-/* PART FOUR -- GENERATE PARSING TABLES */
-
-/* Convert the DFA into a grammar that can be used by our parser */
-
-static void
-convert(dfa *d, int xx_nstates, ss_state *xx_state)
-{
-    int i, j;
-    ss_state *yy;
-    ss_arc *zz;
-
-    for (i = 0; i < xx_nstates; i++) {
-        yy = &xx_state[i];
-        if (yy->ss_deleted)
-            continue;
-        yy->ss_rename = addstate(d);
-    }
-
-    for (i = 0; i < xx_nstates; i++) {
-        yy = &xx_state[i];
-        if (yy->ss_deleted)
-            continue;
-        for (j = 0; j < yy->ss_narcs; j++) {
-            zz = &yy->ss_arc[j];
-            addarc(d, yy->ss_rename,
-                xx_state[zz->sa_arrow].ss_rename,
-                zz->sa_label);
-        }
-        if (yy->ss_finish)
-            addarc(d, yy->ss_rename, yy->ss_rename, 0);
-    }
-
-    d->d_initial = 0;
-}
-
-
-/* PART FIVE -- GLUE IT ALL TOGETHER */
-
-static grammar *
-maketables(nfagrammar *gr)
-{
-    int i;
-    nfa *nf;
-    dfa *d;
-    grammar *g;
-
-    if (gr->gr_nnfas == 0)
-        return NULL;
-    g = newgrammar(gr->gr_nfa[0]->nf_type);
-                    /* XXX first rule must be start rule */
-    g->g_ll = gr->gr_ll;
-
-    for (i = 0; i < gr->gr_nnfas; i++) {
-        nf = gr->gr_nfa[i];
-        if (Py_DebugFlag) {
-            printf("Dump of NFA for '%s' ...\n", nf->nf_name);
-            dumpnfa(&gr->gr_ll, nf);
-            printf("Making DFA for '%s' ...\n", nf->nf_name);
-        }
-        d = adddfa(g, nf->nf_type, nf->nf_name);
-        makedfa(gr, gr->gr_nfa[i], d);
-    }
-
-    return g;
-}
-
-grammar *
-pgen(node *n)
-{
-    nfagrammar *gr;
-    grammar *g;
-
-    gr = metacompile(n);
-    g = maketables(gr);
-    translatelabels(g);
-    addfirstsets(g);
-    PyObject_FREE(gr);
-    return g;
-}
-
-grammar *
-Py_pgen(node *n)
-{
-  return pgen(n);
-}
-
-/*
-
-Description
------------
-
-Input is a grammar in extended BNF (using * for repetition, + for
-at-least-once repetition, [] for optional parts, | for alternatives and
-() for grouping).  This has already been parsed and turned into a parse
-tree.
-
-Each rule is considered as a regular expression in its own right.
-It is turned into a Non-deterministic Finite Automaton (NFA), which
-is then turned into a Deterministic Finite Automaton (DFA), which is then
-optimized to reduce the number of states.  See [Aho&Ullman 77] chapter 3,
-or similar compiler books (this technique is more often used for lexical
-analyzers).
-
-The DFA's are used by the parser as parsing tables in a special way
-that's probably unique.  Before they are usable, the FIRST sets of all
-non-terminals are computed.
-
-Reference
----------
-
-[Aho&Ullman 77]
-    Aho&Ullman, Principles of Compiler Design, Addison-Wesley 1977
-    (first edition)
-
-*/
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/pgenmain.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/pgenmain.c
deleted file mode 100644
index 0dc5556..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/pgenmain.c
+++ /dev/null
@@ -1,173 +0,0 @@
-
-/* Parser generator main program */
-
-/* This expects a filename containing the grammar as argv[1] (UNIX)
-   or asks the console for such a file name (THINK C).
-   It writes its output on two files in the current directory:
-   - "graminit.c" gets the grammar as a bunch of initialized data
-   - "graminit.h" gets the grammar's non-terminals as #defines.
-   Error messages and status info during the generation process are
-   written to stdout, or sometimes to stderr. */
-
-/* XXX TO DO:
-   - check for duplicate definitions of names (instead of fatal err)
-*/
-
-#include "Python.h"
-#include "pgenheaders.h"
-#include "grammar.h"
-#include "node.h"
-#include "parsetok.h"
-#include "pgen.h"
-
-int Py_DebugFlag;
-int Py_VerboseFlag;
-int Py_IgnoreEnvironmentFlag;
-
-/* Forward */
-grammar *getgrammar(char *filename);
-
-void
-Py_Exit(int sts)
-{
-    exit(sts);
-}
-
-int
-main(int argc, char **argv)
-{
-    grammar *g;
-    FILE *fp;
-    char *filename, *graminit_h, *graminit_c;
-
-    if (argc != 4) {
-        fprintf(stderr,
-            "usage: %s grammar graminit.h graminit.c\n", argv[0]);
-        Py_Exit(2);
-    }
-    filename = argv[1];
-    graminit_h = argv[2];
-    graminit_c = argv[3];
-    g = getgrammar(filename);
-    fp = fopen(graminit_c, "w");
-    if (fp == NULL) {
-        perror(graminit_c);
-        Py_Exit(1);
-    }
-    if (Py_DebugFlag)
-        printf("Writing %s ...\n", graminit_c);
-    printgrammar(g, fp);
-    fclose(fp);
-    fp = fopen(graminit_h, "w");
-    if (fp == NULL) {
-        perror(graminit_h);
-        Py_Exit(1);
-    }
-    if (Py_DebugFlag)
-        printf("Writing %s ...\n", graminit_h);
-    printnonterminals(g, fp);
-    fclose(fp);
-    Py_Exit(0);
-    return 0; /* Make gcc -Wall happy */
-}
-
-grammar *
-getgrammar(char *filename)
-{
-    FILE *fp;
-    node *n;
-    grammar *g0, *g;
-    perrdetail err;
-
-    fp = fopen(filename, "r");
-    if (fp == NULL) {
-        perror(filename);
-        Py_Exit(1);
-    }
-    g0 = meta_grammar();
-    n = PyParser_ParseFile(fp, filename, g0, g0->g_start,
-                  (char *)NULL, (char *)NULL, &err);
-    fclose(fp);
-    if (n == NULL) {
-        fprintf(stderr, "Parsing error %d, line %d.\n",
-            err.error, err.lineno);
-        if (err.text != NULL) {
-            size_t i;
-            fprintf(stderr, "%s", err.text);
-            i = strlen(err.text);
-            if (i == 0 || err.text[i-1] != '\n')
-                fprintf(stderr, "\n");
-            for (i = 0; i < err.offset; i++) {
-                if (err.text[i] == '\t')
-                    putc('\t', stderr);
-                else
-                    putc(' ', stderr);
-            }
-            fprintf(stderr, "^\n");
-            PyObject_FREE(err.text);
-        }
-        Py_Exit(1);
-    }
-    g = pgen(n);
-    if (g == NULL) {
-        printf("Bad grammar.\n");
-        Py_Exit(1);
-    }
-    return g;
-}
-
-/* Can't happen in pgen */
-PyObject*
-PyErr_Occurred()
-{
-    return 0;
-}
-
-void
-Py_FatalError(const char *msg)
-{
-    fprintf(stderr, "pgen: FATAL ERROR: %s\n", msg);
-    Py_Exit(1);
-}
-
-/* No-nonsense my_readline() for tokenizer.c */
-
-char *
-PyOS_Readline(FILE *sys_stdin, FILE *sys_stdout, char *prompt)
-{
-    size_t n = 1000;
-    char *p = (char *)PyMem_MALLOC(n);
-    char *q;
-    if (p == NULL)
-        return NULL;
-    fprintf(stderr, "%s", prompt);
-    q = fgets(p, n, sys_stdin);
-    if (q == NULL) {
-        *p = '\0';
-        return p;
-    }
-    n = strlen(p);
-    if (n > 0 && p[n-1] != '\n')
-        p[n-1] = '\n';
-    return (char *)PyMem_REALLOC(p, n+1);
-}
-
-/* No-nonsense fgets */
-char *
-Py_UniversalNewlineFgets(char *buf, int n, FILE *stream, PyObject *fobj)
-{
-    return fgets(buf, n, stream);
-}
-
-
-#include <stdarg.h>
-
-void
-PySys_WriteStderr(const char *format, ...)
-{
-    va_list va;
-
-    va_start(va, format);
-    vfprintf(stderr, format, va);
-    va_end(va);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/printgrammar.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/printgrammar.c
deleted file mode 100644
index d92ccc3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/printgrammar.c
+++ /dev/null
@@ -1,117 +0,0 @@
-
-/* Print a bunch of C initializers that represent a grammar */
-
-#include "pgenheaders.h"
-#include "grammar.h"
-
-/* Forward */
-static void printarcs(int, dfa *, FILE *);
-static void printstates(grammar *, FILE *);
-static void printdfas(grammar *, FILE *);
-static void printlabels(grammar *, FILE *);
-
-void
-printgrammar(grammar *g, FILE *fp)
-{
-    fprintf(fp, "/* Generated by Parser/pgen */\n\n");
-    fprintf(fp, "#include \"pgenheaders.h\"\n");
-    fprintf(fp, "#include \"grammar.h\"\n");
-    fprintf(fp, "PyAPI_DATA(grammar) _PyParser_Grammar;\n");
-    printdfas(g, fp);
-    printlabels(g, fp);
-    fprintf(fp, "grammar _PyParser_Grammar = {\n");
-    fprintf(fp, "    %d,\n", g->g_ndfas);
-    fprintf(fp, "    dfas,\n");
-    fprintf(fp, "    {%d, labels},\n", g->g_ll.ll_nlabels);
-    fprintf(fp, "    %d\n", g->g_start);
-    fprintf(fp, "};\n");
-}
-
-void
-printnonterminals(grammar *g, FILE *fp)
-{
-    dfa *d;
-    int i;
-
-    fprintf(fp, "/* Generated by Parser/pgen */\n\n");
-
-    d = g->g_dfa;
-    for (i = g->g_ndfas; --i >= 0; d++)
-        fprintf(fp, "#define %s %d\n", d->d_name, d->d_type);
-}
-
-static void
-printarcs(int i, dfa *d, FILE *fp)
-{
-    arc *a;
-    state *s;
-    int j, k;
-
-    s = d->d_state;
-    for (j = 0; j < d->d_nstates; j++, s++) {
-        fprintf(fp, "static arc arcs_%d_%d[%d] = {\n",
-            i, j, s->s_narcs);
-        a = s->s_arc;
-        for (k = 0; k < s->s_narcs; k++, a++)
-            fprintf(fp, "    {%d, %d},\n", a->a_lbl, a->a_arrow);
-        fprintf(fp, "};\n");
-    }
-}
-
-static void
-printstates(grammar *g, FILE *fp)
-{
-    state *s;
-    dfa *d;
-    int i, j;
-
-    d = g->g_dfa;
-    for (i = 0; i < g->g_ndfas; i++, d++) {
-        printarcs(i, d, fp);
-        fprintf(fp, "static state states_%d[%d] = {\n",
-            i, d->d_nstates);
-        s = d->d_state;
-        for (j = 0; j < d->d_nstates; j++, s++)
-            fprintf(fp, "    {%d, arcs_%d_%d},\n",
-                s->s_narcs, i, j);
-        fprintf(fp, "};\n");
-    }
-}
-
-static void
-printdfas(grammar *g, FILE *fp)
-{
-    dfa *d;
-    int i, j;
-
-    printstates(g, fp);
-    fprintf(fp, "static dfa dfas[%d] = {\n", g->g_ndfas);
-    d = g->g_dfa;
-    for (i = 0; i < g->g_ndfas; i++, d++) {
-        fprintf(fp, "    {%d, \"%s\", %d, %d, states_%d,\n",
-            d->d_type, d->d_name, d->d_initial, d->d_nstates, i);
-        fprintf(fp, "     \"");
-        for (j = 0; j < NBYTES(g->g_ll.ll_nlabels); j++)
-            fprintf(fp, "\\%03o", d->d_first[j] & 0xff);
-        fprintf(fp, "\"},\n");
-    }
-    fprintf(fp, "};\n");
-}
-
-static void
-printlabels(grammar *g, FILE *fp)
-{
-    label *l;
-    int i;
-
-    fprintf(fp, "static label labels[%d] = {\n", g->g_ll.ll_nlabels);
-    l = g->g_ll.ll_label;
-    for (i = g->g_ll.ll_nlabels; --i >= 0; l++) {
-        if (l->lb_str == NULL)
-            fprintf(fp, "    {%d, 0},\n", l->lb_type);
-        else
-            fprintf(fp, "    {%d, \"%s\"},\n",
-                l->lb_type, l->lb_str);
-    }
-    fprintf(fp, "};\n");
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/spark.py b/AppPkg/Applications/Python/Python-2.7.2/Parser/spark.py
deleted file mode 100644
index e991129..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/spark.py
+++ /dev/null
@@ -1,839 +0,0 @@
-#  Copyright (c) 1998-2002 John Aycock
-#
-#  Permission is hereby granted, free of charge, to any person obtaining
-#  a copy of this software and associated documentation files (the
-#  "Software"), to deal in the Software without restriction, including
-#  without limitation the rights to use, copy, modify, merge, publish,
-#  distribute, sublicense, and/or sell copies of the Software, and to
-#  permit persons to whom the Software is furnished to do so, subject to
-#  the following conditions:
-#
-#  The above copyright notice and this permission notice shall be
-#  included in all copies or substantial portions of the Software.
-#
-#  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-#  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-#  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-#  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-#  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-#  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-#  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-__version__ = 'SPARK-0.7 (pre-alpha-5)'
-
-import re
-import string
-
-def _namelist(instance):
-    namelist, namedict, classlist = [], {}, [instance.__class__]
-    for c in classlist:
-        for b in c.__bases__:
-            classlist.append(b)
-        for name in c.__dict__.keys():
-            if not namedict.has_key(name):
-                namelist.append(name)
-                namedict[name] = 1
-    return namelist
-
-class GenericScanner:
-    def __init__(self, flags=0):
-        pattern = self.reflect()
-        self.re = re.compile(pattern, re.VERBOSE|flags)
-
-        self.index2func = {}
-        for name, number in self.re.groupindex.items():
-            self.index2func[number-1] = getattr(self, 't_' + name)
-
-    def makeRE(self, name):
-        doc = getattr(self, name).__doc__
-        rv = '(?P<%s>%s)' % (name[2:], doc)
-        return rv
-
-    def reflect(self):
-        rv = []
-        for name in _namelist(self):
-            if name[:2] == 't_' and name != 't_default':
-                rv.append(self.makeRE(name))
-
-        rv.append(self.makeRE('t_default'))
-        return string.join(rv, '|')
-
-    def error(self, s, pos):
-        print "Lexical error at position %s" % pos
-        raise SystemExit
-
-    def tokenize(self, s):
-        pos = 0
-        n = len(s)
-        while pos < n:
-            m = self.re.match(s, pos)
-            if m is None:
-                self.error(s, pos)
-
-            groups = m.groups()
-            for i in range(len(groups)):
-                if groups[i] and self.index2func.has_key(i):
-                    self.index2func[i](groups[i])
-            pos = m.end()
-
-    def t_default(self, s):
-        r'( . | \n )+'
-        print "Specification error: unmatched input"
-        raise SystemExit
-
-#
-#  Extracted from GenericParser and made global so that [un]picking works.
-#
-class _State:
-    def __init__(self, stateno, items):
-        self.T, self.complete, self.items = [], [], items
-        self.stateno = stateno
-
-class GenericParser:
-    #
-    #  An Earley parser, as per J. Earley, "An Efficient Context-Free
-    #  Parsing Algorithm", CACM 13(2), pp. 94-102.  Also J. C. Earley,
-    #  "An Efficient Context-Free Parsing Algorithm", Ph.D. thesis,
-    #  Carnegie-Mellon University, August 1968.  New formulation of
-    #  the parser according to J. Aycock, "Practical Earley Parsing
-    #  and the SPARK Toolkit", Ph.D. thesis, University of Victoria,
-    #  2001, and J. Aycock and R. N. Horspool, "Practical Earley
-    #  Parsing", unpublished paper, 2001.
-    #
-
-    def __init__(self, start):
-        self.rules = {}
-        self.rule2func = {}
-        self.rule2name = {}
-        self.collectRules()
-        self.augment(start)
-        self.ruleschanged = 1
-
-    _NULLABLE = '\e_'
-    _START = 'START'
-    _BOF = '|-'
-
-    #
-    #  When pickling, take the time to generate the full state machine;
-    #  some information is then extraneous, too.  Unfortunately we
-    #  can't save the rule2func map.
-    #
-    def __getstate__(self):
-        if self.ruleschanged:
-            #
-            #  XXX - duplicated from parse()
-            #
-            self.computeNull()
-            self.newrules = {}
-            self.new2old = {}
-            self.makeNewRules()
-            self.ruleschanged = 0
-            self.edges, self.cores = {}, {}
-            self.states = { 0: self.makeState0() }
-            self.makeState(0, self._BOF)
-        #
-        #  XXX - should find a better way to do this..
-        #
-        changes = 1
-        while changes:
-            changes = 0
-            for k, v in self.edges.items():
-                if v is None:
-                    state, sym = k
-                    if self.states.has_key(state):
-                        self.goto(state, sym)
-                        changes = 1
-        rv = self.__dict__.copy()
-        for s in self.states.values():
-            del s.items
-        del rv['rule2func']
-        del rv['nullable']
-        del rv['cores']
-        return rv
-
-    def __setstate__(self, D):
-        self.rules = {}
-        self.rule2func = {}
-        self.rule2name = {}
-        self.collectRules()
-        start = D['rules'][self._START][0][1][1]        # Blech.
-        self.augment(start)
-        D['rule2func'] = self.rule2func
-        D['makeSet'] = self.makeSet_fast
-        self.__dict__ = D
-
-    #
-    #  A hook for GenericASTBuilder and GenericASTMatcher.  Mess
-    #  thee not with this; nor shall thee toucheth the _preprocess
-    #  argument to addRule.
-    #
-    def preprocess(self, rule, func):       return rule, func
-
-    def addRule(self, doc, func, _preprocess=1):
-        fn = func
-        rules = string.split(doc)
-
-        index = []
-        for i in range(len(rules)):
-            if rules[i] == '::=':
-                index.append(i-1)
-        index.append(len(rules))
-
-        for i in range(len(index)-1):
-            lhs = rules[index[i]]
-            rhs = rules[index[i]+2:index[i+1]]
-            rule = (lhs, tuple(rhs))
-
-            if _preprocess:
-                rule, fn = self.preprocess(rule, func)
-
-            if self.rules.has_key(lhs):
-                self.rules[lhs].append(rule)
-            else:
-                self.rules[lhs] = [ rule ]
-            self.rule2func[rule] = fn
-            self.rule2name[rule] = func.__name__[2:]
-        self.ruleschanged = 1
-
-    def collectRules(self):
-        for name in _namelist(self):
-            if name[:2] == 'p_':
-                func = getattr(self, name)
-                doc = func.__doc__
-                self.addRule(doc, func)
-
-    def augment(self, start):
-        rule = '%s ::= %s %s' % (self._START, self._BOF, start)
-        self.addRule(rule, lambda args: args[1], 0)
-
-    def computeNull(self):
-        self.nullable = {}
-        tbd = []
-
-        for rulelist in self.rules.values():
-            lhs = rulelist[0][0]
-            self.nullable[lhs] = 0
-            for rule in rulelist:
-                rhs = rule[1]
-                if len(rhs) == 0:
-                    self.nullable[lhs] = 1
-                    continue
-                #
-                #  We only need to consider rules which
-                #  consist entirely of nonterminal symbols.
-                #  This should be a savings on typical
-                #  grammars.
-                #
-                for sym in rhs:
-                    if not self.rules.has_key(sym):
-                        break
-                else:
-                    tbd.append(rule)
-        changes = 1
-        while changes:
-            changes = 0
-            for lhs, rhs in tbd:
-                if self.nullable[lhs]:
-                    continue
-                for sym in rhs:
-                    if not self.nullable[sym]:
-                        break
-                else:
-                    self.nullable[lhs] = 1
-                    changes = 1
-
-    def makeState0(self):
-        s0 = _State(0, [])
-        for rule in self.newrules[self._START]:
-            s0.items.append((rule, 0))
-        return s0
-
-    def finalState(self, tokens):
-        #
-        #  Yuck.
-        #
-        if len(self.newrules[self._START]) == 2 and len(tokens) == 0:
-            return 1
-        start = self.rules[self._START][0][1][1]
-        return self.goto(1, start)
-
-    def makeNewRules(self):
-        worklist = []
-        for rulelist in self.rules.values():
-            for rule in rulelist:
-                worklist.append((rule, 0, 1, rule))
-
-        for rule, i, candidate, oldrule in worklist:
-            lhs, rhs = rule
-            n = len(rhs)
-            while i < n:
-                sym = rhs[i]
-                if not self.rules.has_key(sym) or \
-                   not self.nullable[sym]:
-                    candidate = 0
-                    i = i + 1
-                    continue
-
-                newrhs = list(rhs)
-                newrhs[i] = self._NULLABLE+sym
-                newrule = (lhs, tuple(newrhs))
-                worklist.append((newrule, i+1,
-                                 candidate, oldrule))
-                candidate = 0
-                i = i + 1
-            else:
-                if candidate:
-                    lhs = self._NULLABLE+lhs
-                    rule = (lhs, rhs)
-                if self.newrules.has_key(lhs):
-                    self.newrules[lhs].append(rule)
-                else:
-                    self.newrules[lhs] = [ rule ]
-                self.new2old[rule] = oldrule
-
-    def typestring(self, token):
-        return None
-
-    def error(self, token):
-        print "Syntax error at or near `%s' token" % token
-        raise SystemExit
-
-    def parse(self, tokens):
-        sets = [ [(1,0), (2,0)] ]
-        self.links = {}
-
-        if self.ruleschanged:
-            self.computeNull()
-            self.newrules = {}
-            self.new2old = {}
-            self.makeNewRules()
-            self.ruleschanged = 0
-            self.edges, self.cores = {}, {}
-            self.states = { 0: self.makeState0() }
-            self.makeState(0, self._BOF)
-
-        for i in xrange(len(tokens)):
-            sets.append([])
-
-            if sets[i] == []:
-                break
-            self.makeSet(tokens[i], sets, i)
-        else:
-            sets.append([])
-            self.makeSet(None, sets, len(tokens))
-
-        #_dump(tokens, sets, self.states)
-
-        finalitem = (self.finalState(tokens), 0)
-        if finalitem not in sets[-2]:
-            if len(tokens) > 0:
-                self.error(tokens[i-1])
-            else:
-                self.error(None)
-
-        return self.buildTree(self._START, finalitem,
-                              tokens, len(sets)-2)
-
-    def isnullable(self, sym):
-        #
-        #  For symbols in G_e only.  If we weren't supporting 1.5,
-        #  could just use sym.startswith().
-        #
-        return self._NULLABLE == sym[0:len(self._NULLABLE)]
-
-    def skip(self, (lhs, rhs), pos=0):
-        n = len(rhs)
-        while pos < n:
-            if not self.isnullable(rhs[pos]):
-                break
-            pos = pos + 1
-        return pos
-
-    def makeState(self, state, sym):
-        assert sym is not None
-        #
-        #  Compute \epsilon-kernel state's core and see if
-        #  it exists already.
-        #
-        kitems = []
-        for rule, pos in self.states[state].items:
-            lhs, rhs = rule
-            if rhs[pos:pos+1] == (sym,):
-                kitems.append((rule, self.skip(rule, pos+1)))
-        core = kitems
-
-        core.sort()
-        tcore = tuple(core)
-        if self.cores.has_key(tcore):
-            return self.cores[tcore]
-        #
-        #  Nope, doesn't exist.  Compute it and the associated
-        #  \epsilon-nonkernel state together; we'll need it right away.
-        #
-        k = self.cores[tcore] = len(self.states)
-        K, NK = _State(k, kitems), _State(k+1, [])
-        self.states[k] = K
-        predicted = {}
-
-        edges = self.edges
-        rules = self.newrules
-        for X in K, NK:
-            worklist = X.items
-            for item in worklist:
-                rule, pos = item
-                lhs, rhs = rule
-                if pos == len(rhs):
-                    X.complete.append(rule)
-                    continue
-
-                nextSym = rhs[pos]
-                key = (X.stateno, nextSym)
-                if not rules.has_key(nextSym):
-                    if not edges.has_key(key):
-                        edges[key] = None
-                        X.T.append(nextSym)
-                else:
-                    edges[key] = None
-                    if not predicted.has_key(nextSym):
-                        predicted[nextSym] = 1
-                        for prule in rules[nextSym]:
-                            ppos = self.skip(prule)
-                            new = (prule, ppos)
-                            NK.items.append(new)
-            #
-            #  Problem: we know K needs generating, but we
-            #  don't yet know about NK.  Can't commit anything
-            #  regarding NK to self.edges until we're sure.  Should
-            #  we delay committing on both K and NK to avoid this
-            #  hacky code?  This creates other problems..
-            #
-            if X is K:
-                edges = {}
-
-        if NK.items == []:
-            return k
-
-        #
-        #  Check for \epsilon-nonkernel's core.  Unfortunately we
-        #  need to know the entire set of predicted nonterminals
-        #  to do this without accidentally duplicating states.
-        #
-        core = predicted.keys()
-        core.sort()
-        tcore = tuple(core)
-        if self.cores.has_key(tcore):
-            self.edges[(k, None)] = self.cores[tcore]
-            return k
-
-        nk = self.cores[tcore] = self.edges[(k, None)] = NK.stateno
-        self.edges.update(edges)
-        self.states[nk] = NK
-        return k
-
-    def goto(self, state, sym):
-        key = (state, sym)
-        if not self.edges.has_key(key):
-            #
-            #  No transitions from state on sym.
-            #
-            return None
-
-        rv = self.edges[key]
-        if rv is None:
-            #
-            #  Target state isn't generated yet.  Remedy this.
-            #
-            rv = self.makeState(state, sym)
-            self.edges[key] = rv
-        return rv
-
-    def gotoT(self, state, t):
-        return [self.goto(state, t)]
-
-    def gotoST(self, state, st):
-        rv = []
-        for t in self.states[state].T:
-            if st == t:
-                rv.append(self.goto(state, t))
-        return rv
-
-    def add(self, set, item, i=None, predecessor=None, causal=None):
-        if predecessor is None:
-            if item not in set:
-                set.append(item)
-        else:
-            key = (item, i)
-            if item not in set:
-                self.links[key] = []
-                set.append(item)
-            self.links[key].append((predecessor, causal))
-
-    def makeSet(self, token, sets, i):
-        cur, next = sets[i], sets[i+1]
-
-        ttype = token is not None and self.typestring(token) or None
-        if ttype is not None:
-            fn, arg = self.gotoT, ttype
-        else:
-            fn, arg = self.gotoST, token
-
-        for item in cur:
-            ptr = (item, i)
-            state, parent = item
-            add = fn(state, arg)
-            for k in add:
-                if k is not None:
-                    self.add(next, (k, parent), i+1, ptr)
-                    nk = self.goto(k, None)
-                    if nk is not None:
-                        self.add(next, (nk, i+1))
-
-            if parent == i:
-                continue
-
-            for rule in self.states[state].complete:
-                lhs, rhs = rule
-                for pitem in sets[parent]:
-                    pstate, pparent = pitem
-                    k = self.goto(pstate, lhs)
-                    if k is not None:
-                        why = (item, i, rule)
-                        pptr = (pitem, parent)
-                        self.add(cur, (k, pparent),
-                                 i, pptr, why)
-                        nk = self.goto(k, None)
-                        if nk is not None:
-                            self.add(cur, (nk, i))
-
-    def makeSet_fast(self, token, sets, i):
-        #
-        #  Call *only* when the entire state machine has been built!
-        #  It relies on self.edges being filled in completely, and
-        #  then duplicates and inlines code to boost speed at the
-        #  cost of extreme ugliness.
-        #
-        cur, next = sets[i], sets[i+1]
-        ttype = token is not None and self.typestring(token) or None
-
-        for item in cur:
-            ptr = (item, i)
-            state, parent = item
-            if ttype is not None:
-                k = self.edges.get((state, ttype), None)
-                if k is not None:
-                    #self.add(next, (k, parent), i+1, ptr)
-                    #INLINED --v
-                    new = (k, parent)
-                    key = (new, i+1)
-                    if new not in next:
-                        self.links[key] = []
-                        next.append(new)
-                    self.links[key].append((ptr, None))
-                    #INLINED --^
-                    #nk = self.goto(k, None)
-                    nk = self.edges.get((k, None), None)
-                    if nk is not None:
-                        #self.add(next, (nk, i+1))
-                        #INLINED --v
-                        new = (nk, i+1)
-                        if new not in next:
-                            next.append(new)
-                        #INLINED --^
-            else:
-                add = self.gotoST(state, token)
-                for k in add:
-                    if k is not None:
-                        self.add(next, (k, parent), i+1, ptr)
-                        #nk = self.goto(k, None)
-                        nk = self.edges.get((k, None), None)
-                        if nk is not None:
-                            self.add(next, (nk, i+1))
-
-            if parent == i:
-                continue
-
-            for rule in self.states[state].complete:
-                lhs, rhs = rule
-                for pitem in sets[parent]:
-                    pstate, pparent = pitem
-                    #k = self.goto(pstate, lhs)
-                    k = self.edges.get((pstate, lhs), None)
-                    if k is not None:
-                        why = (item, i, rule)
-                        pptr = (pitem, parent)
-                        #self.add(cur, (k, pparent),
-                        #        i, pptr, why)
-                        #INLINED --v
-                        new = (k, pparent)
-                        key = (new, i)
-                        if new not in cur:
-                            self.links[key] = []
-                            cur.append(new)
-                        self.links[key].append((pptr, why))
-                        #INLINED --^
-                        #nk = self.goto(k, None)
-                        nk = self.edges.get((k, None), None)
-                        if nk is not None:
-                            #self.add(cur, (nk, i))
-                            #INLINED --v
-                            new = (nk, i)
-                            if new not in cur:
-                                cur.append(new)
-                            #INLINED --^
-
-    def predecessor(self, key, causal):
-        for p, c in self.links[key]:
-            if c == causal:
-                return p
-        assert 0
-
-    def causal(self, key):
-        links = self.links[key]
-        if len(links) == 1:
-            return links[0][1]
-        choices = []
-        rule2cause = {}
-        for p, c in links:
-            rule = c[2]
-            choices.append(rule)
-            rule2cause[rule] = c
-        return rule2cause[self.ambiguity(choices)]
-
-    def deriveEpsilon(self, nt):
-        if len(self.newrules[nt]) > 1:
-            rule = self.ambiguity(self.newrules[nt])
-        else:
-            rule = self.newrules[nt][0]
-        #print rule
-
-        rhs = rule[1]
-        attr = [None] * len(rhs)
-
-        for i in range(len(rhs)-1, -1, -1):
-            attr[i] = self.deriveEpsilon(rhs[i])
-        return self.rule2func[self.new2old[rule]](attr)
-
-    def buildTree(self, nt, item, tokens, k):
-        state, parent = item
-
-        choices = []
-        for rule in self.states[state].complete:
-            if rule[0] == nt:
-                choices.append(rule)
-        rule = choices[0]
-        if len(choices) > 1:
-            rule = self.ambiguity(choices)
-        #print rule
-
-        rhs = rule[1]
-        attr = [None] * len(rhs)
-
-        for i in range(len(rhs)-1, -1, -1):
-            sym = rhs[i]
-            if not self.newrules.has_key(sym):
-                if sym != self._BOF:
-                    attr[i] = tokens[k-1]
-                    key = (item, k)
-                    item, k = self.predecessor(key, None)
-            #elif self.isnullable(sym):
-            elif self._NULLABLE == sym[0:len(self._NULLABLE)]:
-                attr[i] = self.deriveEpsilon(sym)
-            else:
-                key = (item, k)
-                why = self.causal(key)
-                attr[i] = self.buildTree(sym, why[0],
-                                         tokens, why[1])
-                item, k = self.predecessor(key, why)
-        return self.rule2func[self.new2old[rule]](attr)
-
-    def ambiguity(self, rules):
-        #
-        #  XXX - problem here and in collectRules() if the same rule
-        #        appears in >1 method.  Also undefined results if rules
-        #        causing the ambiguity appear in the same method.
-        #
-        sortlist = []
-        name2index = {}
-        for i in range(len(rules)):
-            lhs, rhs = rule = rules[i]
-            name = self.rule2name[self.new2old[rule]]
-            sortlist.append((len(rhs), name))
-            name2index[name] = i
-        sortlist.sort()
-        list = map(lambda (a,b): b, sortlist)
-        return rules[name2index[self.resolve(list)]]
-
-    def resolve(self, list):
-        #
-        #  Resolve ambiguity in favor of the shortest RHS.
-        #  Since we walk the tree from the top down, this
-        #  should effectively resolve in favor of a "shift".
-        #
-        return list[0]
-
-#
-#  GenericASTBuilder automagically constructs a concrete/abstract syntax tree
-#  for a given input.  The extra argument is a class (not an instance!)
-#  which supports the "__setslice__" and "__len__" methods.
-#
-#  XXX - silently overrides any user code in methods.
-#
-
-class GenericASTBuilder(GenericParser):
-    def __init__(self, AST, start):
-        GenericParser.__init__(self, start)
-        self.AST = AST
-
-    def preprocess(self, rule, func):
-        rebind = lambda lhs, self=self: \
-                        lambda args, lhs=lhs, self=self: \
-                                self.buildASTNode(args, lhs)
-        lhs, rhs = rule
-        return rule, rebind(lhs)
-
-    def buildASTNode(self, args, lhs):
-        children = []
-        for arg in args:
-            if isinstance(arg, self.AST):
-                children.append(arg)
-            else:
-                children.append(self.terminal(arg))
-        return self.nonterminal(lhs, children)
-
-    def terminal(self, token):      return token
-
-    def nonterminal(self, type, args):
-        rv = self.AST(type)
-        rv[:len(args)] = args
-        return rv
-
-#
-#  GenericASTTraversal is a Visitor pattern according to Design Patterns.  For
-#  each node it attempts to invoke the method n_<node type>, falling
-#  back onto the default() method if the n_* can't be found.  The preorder
-#  traversal also looks for an exit hook named n_<node type>_exit (no default
-#  routine is called if it's not found).  To prematurely halt traversal
-#  of a subtree, call the prune() method -- this only makes sense for a
-#  preorder traversal.  Node type is determined via the typestring() method.
-#
-
-class GenericASTTraversalPruningException:
-    pass
-
-class GenericASTTraversal:
-    def __init__(self, ast):
-        self.ast = ast
-
-    def typestring(self, node):
-        return node.type
-
-    def prune(self):
-        raise GenericASTTraversalPruningException
-
-    def preorder(self, node=None):
-        if node is None:
-            node = self.ast
-
-        try:
-            name = 'n_' + self.typestring(node)
-            if hasattr(self, name):
-                func = getattr(self, name)
-                func(node)
-            else:
-                self.default(node)
-        except GenericASTTraversalPruningException:
-            return
-
-        for kid in node:
-            self.preorder(kid)
-
-        name = name + '_exit'
-        if hasattr(self, name):
-            func = getattr(self, name)
-            func(node)
-
-    def postorder(self, node=None):
-        if node is None:
-            node = self.ast
-
-        for kid in node:
-            self.postorder(kid)
-
-        name = 'n_' + self.typestring(node)
-        if hasattr(self, name):
-            func = getattr(self, name)
-            func(node)
-        else:
-            self.default(node)
-
-
-    def default(self, node):
-        pass
-
-#
-#  GenericASTMatcher.  AST nodes must have "__getitem__" and "__cmp__"
-#  implemented.
-#
-#  XXX - makes assumptions about how GenericParser walks the parse tree.
-#
-
-class GenericASTMatcher(GenericParser):
-    def __init__(self, start, ast):
-        GenericParser.__init__(self, start)
-        self.ast = ast
-
-    def preprocess(self, rule, func):
-        rebind = lambda func, self=self: \
-                        lambda args, func=func, self=self: \
-                                self.foundMatch(args, func)
-        lhs, rhs = rule
-        rhslist = list(rhs)
-        rhslist.reverse()
-
-        return (lhs, tuple(rhslist)), rebind(func)
-
-    def foundMatch(self, args, func):
-        func(args[-1])
-        return args[-1]
-
-    def match_r(self, node):
-        self.input.insert(0, node)
-        children = 0
-
-        for child in node:
-            if children == 0:
-                self.input.insert(0, '(')
-            children = children + 1
-            self.match_r(child)
-
-        if children > 0:
-            self.input.insert(0, ')')
-
-    def match(self, ast=None):
-        if ast is None:
-            ast = self.ast
-        self.input = []
-
-        self.match_r(ast)
-        self.parse(self.input)
-
-    def resolve(self, list):
-        #
-        #  Resolve ambiguity in favor of the longest RHS.
-        #
-        return list[-1]
-
-def _dump(tokens, sets, states):
-    for i in range(len(sets)):
-        print 'set', i
-        for item in sets[i]:
-            print '\t', item
-            for (lhs, rhs), pos in states[item[0]].items:
-                print '\t\t', lhs, '::=',
-                print string.join(rhs[:pos]),
-                print '.',
-                print string.join(rhs[pos:])
-        if i < len(tokens):
-            print
-            print 'token', str(tokens[i])
-            print
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer.c
deleted file mode 100644
index 3511cbe..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer.c
+++ /dev/null
@@ -1,1726 +0,0 @@
-
-/* Tokenizer implementation */
-
-#include "Python.h"
-#include "pgenheaders.h"
-
-#include <ctype.h>
-#include <assert.h>
-
-#include "tokenizer.h"
-#include "errcode.h"
-
-#ifndef PGEN
-#include "unicodeobject.h"
-#include "stringobject.h"
-#include "fileobject.h"
-#include "codecs.h"
-#include "abstract.h"
-#include "pydebug.h"
-#endif /* PGEN */
-
-extern char *PyOS_Readline(FILE *, FILE *, char *);
-/* Return malloc'ed string including trailing \n;
-   empty malloc'ed string for EOF;
-   NULL if interrupted */
-
-/* Don't ever change this -- it would break the portability of Python code */
-#define TABSIZE 8
-
-/* Forward */
-static struct tok_state *tok_new(void);
-static int tok_nextc(struct tok_state *tok);
-static void tok_backup(struct tok_state *tok, int c);
-
-/* Token names */
-
-char *_PyParser_TokenNames[] = {
-    "ENDMARKER",
-    "NAME",
-    "NUMBER",
-    "STRING",
-    "NEWLINE",
-    "INDENT",
-    "DEDENT",
-    "LPAR",
-    "RPAR",
-    "LSQB",
-    "RSQB",
-    "COLON",
-    "COMMA",
-    "SEMI",
-    "PLUS",
-    "MINUS",
-    "STAR",
-    "SLASH",
-    "VBAR",
-    "AMPER",
-    "LESS",
-    "GREATER",
-    "EQUAL",
-    "DOT",
-    "PERCENT",
-    "BACKQUOTE",
-    "LBRACE",
-    "RBRACE",
-    "EQEQUAL",
-    "NOTEQUAL",
-    "LESSEQUAL",
-    "GREATEREQUAL",
-    "TILDE",
-    "CIRCUMFLEX",
-    "LEFTSHIFT",
-    "RIGHTSHIFT",
-    "DOUBLESTAR",
-    "PLUSEQUAL",
-    "MINEQUAL",
-    "STAREQUAL",
-    "SLASHEQUAL",
-    "PERCENTEQUAL",
-    "AMPEREQUAL",
-    "VBAREQUAL",
-    "CIRCUMFLEXEQUAL",
-    "LEFTSHIFTEQUAL",
-    "RIGHTSHIFTEQUAL",
-    "DOUBLESTAREQUAL",
-    "DOUBLESLASH",
-    "DOUBLESLASHEQUAL",
-    "AT",
-    /* This table must match the #defines in token.h! */
-    "OP",
-    "<ERRORTOKEN>",
-    "<N_TOKENS>"
-};
-
-/* Create and initialize a new tok_state structure */
-
-static struct tok_state *
-tok_new(void)
-{
-    struct tok_state *tok = (struct tok_state *)PyMem_MALLOC(
-                                            sizeof(struct tok_state));
-    if (tok == NULL)
-        return NULL;
-    tok->buf = tok->cur = tok->end = tok->inp = tok->start = NULL;
-    tok->done = E_OK;
-    tok->fp = NULL;
-    tok->input = NULL;
-    tok->tabsize = TABSIZE;
-    tok->indent = 0;
-    tok->indstack[0] = 0;
-    tok->atbol = 1;
-    tok->pendin = 0;
-    tok->prompt = tok->nextprompt = NULL;
-    tok->lineno = 0;
-    tok->level = 0;
-    tok->filename = NULL;
-    tok->altwarning = 0;
-    tok->alterror = 0;
-    tok->alttabsize = 1;
-    tok->altindstack[0] = 0;
-    tok->decoding_state = 0;
-    tok->decoding_erred = 0;
-    tok->read_coding_spec = 0;
-    tok->encoding = NULL;
-    tok->cont_line = 0;
-#ifndef PGEN
-    tok->decoding_readline = NULL;
-    tok->decoding_buffer = NULL;
-#endif
-    return tok;
-}
-
-static char *
-new_string(const char *s, Py_ssize_t len)
-{
-    char* result = (char *)PyMem_MALLOC(len + 1);
-    if (result != NULL) {
-        memcpy(result, s, len);
-        result[len] = '\0';
-    }
-    return result;
-}
-
-#ifdef PGEN
-
-static char *
-decoding_fgets(char *s, int size, struct tok_state *tok)
-{
-    return fgets(s, size, tok->fp);
-}
-
-static int
-decoding_feof(struct tok_state *tok)
-{
-    return feof(tok->fp);
-}
-
-static char *
-decode_str(const char *str, int exec_input, struct tok_state *tok)
-{
-    return new_string(str, strlen(str));
-}
-
-#else /* PGEN */
-
-static char *
-error_ret(struct tok_state *tok) /* XXX */
-{
-    tok->decoding_erred = 1;
-    if (tok->fp != NULL && tok->buf != NULL) /* see PyTokenizer_Free */
-        PyMem_FREE(tok->buf);
-    tok->buf = NULL;
-    return NULL;                /* as if it were EOF */
-}
-
-
-static char *
-get_normal_name(char *s)        /* for utf-8 and latin-1 */
-{
-    char buf[13];
-    int i;
-    for (i = 0; i < 12; i++) {
-        int c = s[i];
-        if (c == '\0')
-            break;
-        else if (c == '_')
-            buf[i] = '-';
-        else
-            buf[i] = tolower(c);
-    }
-    buf[i] = '\0';
-    if (strcmp(buf, "utf-8") == 0 ||
-        strncmp(buf, "utf-8-", 6) == 0)
-        return "utf-8";
-    else if (strcmp(buf, "latin-1") == 0 ||
-             strcmp(buf, "iso-8859-1") == 0 ||
-             strcmp(buf, "iso-latin-1") == 0 ||
-             strncmp(buf, "latin-1-", 8) == 0 ||
-             strncmp(buf, "iso-8859-1-", 11) == 0 ||
-             strncmp(buf, "iso-latin-1-", 12) == 0)
-        return "iso-8859-1";
-    else
-        return s;
-}
-
-/* Return the coding spec in S, or NULL if none is found.  */
-
-static char *
-get_coding_spec(const char *s, Py_ssize_t size)
-{
-    Py_ssize_t i;
-    /* Coding spec must be in a comment, and that comment must be
-     * the only statement on the source code line. */
-    for (i = 0; i < size - 6; i++) {
-        if (s[i] == '#')
-            break;
-        if (s[i] != ' ' && s[i] != '\t' && s[i] != '\014')
-            return NULL;
-    }
-    for (; i < size - 6; i++) { /* XXX inefficient search */
-        const char* t = s + i;
-        if (strncmp(t, "coding", 6) == 0) {
-            const char* begin = NULL;
-            t += 6;
-            if (t[0] != ':' && t[0] != '=')
-                continue;
-            do {
-                t++;
-            } while (t[0] == '\x20' || t[0] == '\t');
-
-            begin = t;
-            while (Py_ISALNUM(t[0]) ||
-                   t[0] == '-' || t[0] == '_' || t[0] == '.')
-                t++;
-
-            if (begin < t) {
-                char* r = new_string(begin, t - begin);
-                char* q = get_normal_name(r);
-                if (r != q) {
-                    PyMem_FREE(r);
-                    r = new_string(q, strlen(q));
-                }
-                return r;
-            }
-        }
-    }
-    return NULL;
-}
-
-/* Check whether the line contains a coding spec. If it does,
-   invoke the set_readline function for the new encoding.
-   This function receives the tok_state and the new encoding.
-   Return 1 on success, 0 on failure.  */
-
-static int
-check_coding_spec(const char* line, Py_ssize_t size, struct tok_state *tok,
-                  int set_readline(struct tok_state *, const char *))
-{
-    char * cs;
-    int r = 1;
-
-    if (tok->cont_line)
-        /* It's a continuation line, so it can't be a coding spec. */
-        return 1;
-    cs = get_coding_spec(line, size);
-    if (cs != NULL) {
-        tok->read_coding_spec = 1;
-        if (tok->encoding == NULL) {
-            assert(tok->decoding_state == 1); /* raw */
-            if (strcmp(cs, "utf-8") == 0 ||
-                strcmp(cs, "iso-8859-1") == 0) {
-                tok->encoding = cs;
-            } else {
-#ifdef Py_USING_UNICODE
-                r = set_readline(tok, cs);
-                if (r) {
-                    tok->encoding = cs;
-                    tok->decoding_state = -1;
-                }
-                else
-                    PyMem_FREE(cs);
-#else
-                /* Without Unicode support, we cannot
-                   process the coding spec. Since there
-                   won't be any Unicode literals, that
-                   won't matter. */
-                PyMem_FREE(cs);
-#endif
-            }
-        } else {                /* then, compare cs with BOM */
-            r = (strcmp(tok->encoding, cs) == 0);
-            PyMem_FREE(cs);
-        }
-    }
-    if (!r) {
-        cs = tok->encoding;
-        if (!cs)
-            cs = "with BOM";
-        PyErr_Format(PyExc_SyntaxError, "encoding problem: %s", cs);
-    }
-    return r;
-}
-
-/* See whether the file starts with a BOM. If it does,
-   invoke the set_readline function with the new encoding.
-   Return 1 on success, 0 on failure.  */
-
-static int
-check_bom(int get_char(struct tok_state *),
-          void unget_char(int, struct tok_state *),
-          int set_readline(struct tok_state *, const char *),
-          struct tok_state *tok)
-{
-    int ch1, ch2, ch3;
-    ch1 = get_char(tok);
-    tok->decoding_state = 1;
-    if (ch1 == EOF) {
-        return 1;
-    } else if (ch1 == 0xEF) {
-        ch2 = get_char(tok);
-        if (ch2 != 0xBB) {
-            unget_char(ch2, tok);
-            unget_char(ch1, tok);
-            return 1;
-        }
-        ch3 = get_char(tok);
-        if (ch3 != 0xBF) {
-            unget_char(ch3, tok);
-            unget_char(ch2, tok);
-            unget_char(ch1, tok);
-            return 1;
-        }
-#if 0
-    /* Disable support for UTF-16 BOMs until a decision
-       is made whether this needs to be supported.  */
-    } else if (ch1 == 0xFE) {
-        ch2 = get_char(tok);
-        if (ch2 != 0xFF) {
-            unget_char(ch2, tok);
-            unget_char(ch1, tok);
-            return 1;
-        }
-        if (!set_readline(tok, "utf-16-be"))
-            return 0;
-        tok->decoding_state = -1;
-    } else if (ch1 == 0xFF) {
-        ch2 = get_char(tok);
-        if (ch2 != 0xFE) {
-            unget_char(ch2, tok);
-            unget_char(ch1, tok);
-            return 1;
-        }
-        if (!set_readline(tok, "utf-16-le"))
-            return 0;
-        tok->decoding_state = -1;
-#endif
-    } else {
-        unget_char(ch1, tok);
-        return 1;
-    }
-    if (tok->encoding != NULL)
-        PyMem_FREE(tok->encoding);
-    tok->encoding = new_string("utf-8", 5);     /* resulting is in utf-8 */
-    return 1;
-}
-
-/* Read a line of text from TOK into S, using the stream in TOK.
-   Return NULL on failure, else S.
-
-   On entry, tok->decoding_buffer will be one of:
-     1) NULL: need to call tok->decoding_readline to get a new line
-     2) PyUnicodeObject *: decoding_feof has called tok->decoding_readline and
-       stored the result in tok->decoding_buffer
-     3) PyStringObject *: previous call to fp_readl did not have enough room
-       (in the s buffer) to copy entire contents of the line read
-       by tok->decoding_readline.  tok->decoding_buffer has the overflow.
-       In this case, fp_readl is called in a loop (with an expanded buffer)
-       until the buffer ends with a '\n' (or until the end of the file is
-       reached): see tok_nextc and its calls to decoding_fgets.
-*/
-
-static char *
-fp_readl(char *s, int size, struct tok_state *tok)
-{
-#ifndef Py_USING_UNICODE
-    /* In a non-Unicode built, this should never be called. */
-    Py_FatalError("fp_readl should not be called in this build.");
-    return NULL; /* Keep compiler happy (not reachable) */
-#else
-    PyObject* utf8 = NULL;
-    PyObject* buf = tok->decoding_buffer;
-    char *str;
-    Py_ssize_t utf8len;
-
-    /* Ask for one less byte so we can terminate it */
-    assert(size > 0);
-    size--;
-
-    if (buf == NULL) {
-        buf = PyObject_CallObject(tok->decoding_readline, NULL);
-        if (buf == NULL)
-            return error_ret(tok);
-    } else {
-        tok->decoding_buffer = NULL;
-        if (PyString_CheckExact(buf))
-            utf8 = buf;
-    }
-    if (utf8 == NULL) {
-        utf8 = PyUnicode_AsUTF8String(buf);
-        Py_DECREF(buf);
-        if (utf8 == NULL)
-            return error_ret(tok);
-    }
-    str = PyString_AsString(utf8);
-    utf8len = PyString_GET_SIZE(utf8);
-    if (utf8len > size) {
-        tok->decoding_buffer = PyString_FromStringAndSize(str+size, utf8len-size);
-        if (tok->decoding_buffer == NULL) {
-            Py_DECREF(utf8);
-            return error_ret(tok);
-        }
-        utf8len = size;
-    }
-    memcpy(s, str, utf8len);
-    s[utf8len] = '\0';
-    Py_DECREF(utf8);
-    if (utf8len == 0)
-        return NULL; /* EOF */
-    return s;
-#endif
-}
-
-/* Set the readline function for TOK to a StreamReader's
-   readline function. The StreamReader is named ENC.
-
-   This function is called from check_bom and check_coding_spec.
-
-   ENC is usually identical to the future value of tok->encoding,
-   except for the (currently unsupported) case of UTF-16.
-
-   Return 1 on success, 0 on failure. */
-
-static int
-fp_setreadl(struct tok_state *tok, const char* enc)
-{
-    PyObject *reader, *stream, *readline;
-
-    /* XXX: constify filename argument. */
-    stream = PyFile_FromFile(tok->fp, (char*)tok->filename, "rb", NULL);
-    if (stream == NULL)
-        return 0;
-
-    reader = PyCodec_StreamReader(enc, stream, NULL);
-    Py_DECREF(stream);
-    if (reader == NULL)
-        return 0;
-
-    readline = PyObject_GetAttrString(reader, "readline");
-    Py_DECREF(reader);
-    if (readline == NULL)
-        return 0;
-
-    tok->decoding_readline = readline;
-    return 1;
-}
-
-/* Fetch the next byte from TOK. */
-
-static int fp_getc(struct tok_state *tok) {
-    return getc(tok->fp);
-}
-
-/* Unfetch the last byte back into TOK.  */
-
-static void fp_ungetc(int c, struct tok_state *tok) {
-    ungetc(c, tok->fp);
-}
-
-/* Read a line of input from TOK. Determine encoding
-   if necessary.  */
-
-static char *
-decoding_fgets(char *s, int size, struct tok_state *tok)
-{
-    char *line = NULL;
-    int badchar = 0;
-    for (;;) {
-        if (tok->decoding_state < 0) {
-            /* We already have a codec associated with
-               this input. */
-            line = fp_readl(s, size, tok);
-            break;
-        } else if (tok->decoding_state > 0) {
-            /* We want a 'raw' read. */
-            line = Py_UniversalNewlineFgets(s, size,
-                                            tok->fp, NULL);
-            break;
-        } else {
-            /* We have not yet determined the encoding.
-               If an encoding is found, use the file-pointer
-               reader functions from now on. */
-            if (!check_bom(fp_getc, fp_ungetc, fp_setreadl, tok))
-                return error_ret(tok);
-            assert(tok->decoding_state != 0);
-        }
-    }
-    if (line != NULL && tok->lineno < 2 && !tok->read_coding_spec) {
-        if (!check_coding_spec(line, strlen(line), tok, fp_setreadl)) {
-            return error_ret(tok);
-        }
-    }
-#ifndef PGEN
-    /* The default encoding is ASCII, so make sure we don't have any
-       non-ASCII bytes in it. */
-    if (line && !tok->encoding) {
-        unsigned char *c;
-        for (c = (unsigned char *)line; *c; c++)
-            if (*c > 127) {
-                badchar = *c;
-                break;
-            }
-    }
-    if (badchar) {
-        char buf[500];
-        /* Need to add 1 to the line number, since this line
-           has not been counted, yet.  */
-        sprintf(buf,
-            "Non-ASCII character '\\x%.2x' "
-            "in file %.200s on line %i, "
-            "but no encoding declared; "
-            "see http://www.python.org/peps/pep-0263.html for details",
-            badchar, tok->filename, tok->lineno + 1);
-        PyErr_SetString(PyExc_SyntaxError, buf);
-        return error_ret(tok);
-    }
-#endif
-    return line;
-}
-
-static int
-decoding_feof(struct tok_state *tok)
-{
-    if (tok->decoding_state >= 0) {
-        return feof(tok->fp);
-    } else {
-        PyObject* buf = tok->decoding_buffer;
-        if (buf == NULL) {
-            buf = PyObject_CallObject(tok->decoding_readline, NULL);
-            if (buf == NULL) {
-                error_ret(tok);
-                return 1;
-            } else {
-                tok->decoding_buffer = buf;
-            }
-        }
-        return PyObject_Length(buf) == 0;
-    }
-}
-
-/* Fetch a byte from TOK, using the string buffer. */
-
-static int
-buf_getc(struct tok_state *tok) {
-    return Py_CHARMASK(*tok->str++);
-}
-
-/* Unfetch a byte from TOK, using the string buffer. */
-
-static void
-buf_ungetc(int c, struct tok_state *tok) {
-    tok->str--;
-    assert(Py_CHARMASK(*tok->str) == c);        /* tok->cur may point to read-only segment */
-}
-
-/* Set the readline function for TOK to ENC. For the string-based
-   tokenizer, this means to just record the encoding. */
-
-static int
-buf_setreadl(struct tok_state *tok, const char* enc) {
-    tok->enc = enc;
-    return 1;
-}
-
-/* Return a UTF-8 encoding Python string object from the
-   C byte string STR, which is encoded with ENC. */
-
-#ifdef Py_USING_UNICODE
-static PyObject *
-translate_into_utf8(const char* str, const char* enc) {
-    PyObject *utf8;
-    PyObject* buf = PyUnicode_Decode(str, strlen(str), enc, NULL);
-    if (buf == NULL)
-        return NULL;
-    utf8 = PyUnicode_AsUTF8String(buf);
-    Py_DECREF(buf);
-    return utf8;
-}
-#endif
-
-
-static char *
-translate_newlines(const char *s, int exec_input, struct tok_state *tok) {
-    int skip_next_lf = 0, needed_length = strlen(s) + 2, final_length;
-    char *buf, *current;
-    char c = '\0';
-    buf = PyMem_MALLOC(needed_length);
-    if (buf == NULL) {
-        tok->done = E_NOMEM;
-        return NULL;
-    }
-    for (current = buf; *s; s++, current++) {
-        c = *s;
-        if (skip_next_lf) {
-            skip_next_lf = 0;
-            if (c == '\n') {
-                c = *++s;
-                if (!c)
-                    break;
-            }
-        }
-        if (c == '\r') {
-            skip_next_lf = 1;
-            c = '\n';
-        }
-        *current = c;
-    }
-    /* If this is exec input, add a newline to the end of the string if
-       there isn't one already. */
-    if (exec_input && c != '\n') {
-        *current = '\n';
-        current++;
-    }
-    *current = '\0';
-    final_length = current - buf + 1;
-    if (final_length < needed_length && final_length)
-        /* should never fail */
-        buf = PyMem_REALLOC(buf, final_length);
-    return buf;
-}
-
-/* Decode a byte string STR for use as the buffer of TOK.
-   Look for encoding declarations inside STR, and record them
-   inside TOK.  */
-
-static const char *
-decode_str(const char *input, int single, struct tok_state *tok)
-{
-    PyObject* utf8 = NULL;
-    const char *str;
-    const char *s;
-    const char *newl[2] = {NULL, NULL};
-    int lineno = 0;
-    tok->input = str = translate_newlines(input, single, tok);
-    if (str == NULL)
-        return NULL;
-    tok->enc = NULL;
-    tok->str = str;
-    if (!check_bom(buf_getc, buf_ungetc, buf_setreadl, tok))
-        return error_ret(tok);
-    str = tok->str;             /* string after BOM if any */
-    assert(str);
-#ifdef Py_USING_UNICODE
-    if (tok->enc != NULL) {
-        utf8 = translate_into_utf8(str, tok->enc);
-        if (utf8 == NULL)
-            return error_ret(tok);
-        str = PyString_AsString(utf8);
-    }
-#endif
-    for (s = str;; s++) {
-        if (*s == '\0') break;
-        else if (*s == '\n') {
-            assert(lineno < 2);
-            newl[lineno] = s;
-            lineno++;
-            if (lineno == 2) break;
-        }
-    }
-    tok->enc = NULL;
-    /* need to check line 1 and 2 separately since check_coding_spec
-       assumes a single line as input */
-    if (newl[0]) {
-        if (!check_coding_spec(str, newl[0] - str, tok, buf_setreadl))
-            return error_ret(tok);
-        if (tok->enc == NULL && newl[1]) {
-            if (!check_coding_spec(newl[0]+1, newl[1] - newl[0],
-                                   tok, buf_setreadl))
-                return error_ret(tok);
-        }
-    }
-#ifdef Py_USING_UNICODE
-    if (tok->enc != NULL) {
-        assert(utf8 == NULL);
-        utf8 = translate_into_utf8(str, tok->enc);
-        if (utf8 == NULL)
-            return error_ret(tok);
-        str = PyString_AsString(utf8);
-    }
-#endif
-    assert(tok->decoding_buffer == NULL);
-    tok->decoding_buffer = utf8; /* CAUTION */
-    return str;
-}
-
-#endif /* PGEN */
-
-/* Set up tokenizer for string */
-
-struct tok_state *
-PyTokenizer_FromString(const char *str, int exec_input)
-{
-    struct tok_state *tok = tok_new();
-    if (tok == NULL)
-        return NULL;
-    str = (char *)decode_str(str, exec_input, tok);
-    if (str == NULL) {
-        PyTokenizer_Free(tok);
-        return NULL;
-    }
-
-    /* XXX: constify members. */
-    tok->buf = tok->cur = tok->end = tok->inp = (char*)str;
-    return tok;
-}
-
-
-/* Set up tokenizer for file */
-
-struct tok_state *
-PyTokenizer_FromFile(FILE *fp, char *ps1, char *ps2)
-{
-    struct tok_state *tok = tok_new();
-    if (tok == NULL)
-        return NULL;
-    if ((tok->buf = (char *)PyMem_MALLOC(BUFSIZ)) == NULL) {
-        PyTokenizer_Free(tok);
-        return NULL;
-    }
-    tok->cur = tok->inp = tok->buf;
-    tok->end = tok->buf + BUFSIZ;
-    tok->fp = fp;
-    tok->prompt = ps1;
-    tok->nextprompt = ps2;
-    return tok;
-}
-
-
-/* Free a tok_state structure */
-
-void
-PyTokenizer_Free(struct tok_state *tok)
-{
-    if (tok->encoding != NULL)
-        PyMem_FREE(tok->encoding);
-#ifndef PGEN
-    Py_XDECREF(tok->decoding_readline);
-    Py_XDECREF(tok->decoding_buffer);
-#endif
-    if (tok->fp != NULL && tok->buf != NULL)
-        PyMem_FREE(tok->buf);
-    if (tok->input)
-        PyMem_FREE((char *)tok->input);
-    PyMem_FREE(tok);
-}
-
-#if !defined(PGEN) && defined(Py_USING_UNICODE)
-static int
-tok_stdin_decode(struct tok_state *tok, char **inp)
-{
-    PyObject *enc, *sysstdin, *decoded, *utf8;
-    const char *encoding;
-    char *converted;
-
-    if (PySys_GetFile((char *)"stdin", NULL) != stdin)
-        return 0;
-    sysstdin = PySys_GetObject("stdin");
-    if (sysstdin == NULL || !PyFile_Check(sysstdin))
-        return 0;
-
-    enc = ((PyFileObject *)sysstdin)->f_encoding;
-    if (enc == NULL || !PyString_Check(enc))
-        return 0;
-    Py_INCREF(enc);
-
-    encoding = PyString_AsString(enc);
-    decoded = PyUnicode_Decode(*inp, strlen(*inp), encoding, NULL);
-    if (decoded == NULL)
-        goto error_clear;
-
-    utf8 = PyUnicode_AsEncodedString(decoded, "utf-8", NULL);
-    Py_DECREF(decoded);
-    if (utf8 == NULL)
-        goto error_clear;
-
-    assert(PyString_Check(utf8));
-    converted = new_string(PyString_AS_STRING(utf8),
-                           PyString_GET_SIZE(utf8));
-    Py_DECREF(utf8);
-    if (converted == NULL)
-        goto error_nomem;
-
-    PyMem_FREE(*inp);
-    *inp = converted;
-    if (tok->encoding != NULL)
-        PyMem_FREE(tok->encoding);
-    tok->encoding = new_string(encoding, strlen(encoding));
-    if (tok->encoding == NULL)
-        goto error_nomem;
-
-    Py_DECREF(enc);
-    return 0;
-
-error_nomem:
-    Py_DECREF(enc);
-    tok->done = E_NOMEM;
-    return -1;
-
-error_clear:
-    Py_DECREF(enc);
-    if (!PyErr_ExceptionMatches(PyExc_UnicodeDecodeError)) {
-        tok->done = E_ERROR;
-        return -1;
-    }
-    /* Fallback to iso-8859-1: for backward compatibility */
-    PyErr_Clear();
-    return 0;
-}
-#endif
-
-/* Get next char, updating state; error code goes into tok->done */
-
-static int
-tok_nextc(register struct tok_state *tok)
-{
-    for (;;) {
-        if (tok->cur != tok->inp) {
-            return Py_CHARMASK(*tok->cur++); /* Fast path */
-        }
-        if (tok->done != E_OK)
-            return EOF;
-        if (tok->fp == NULL) {
-            char *end = strchr(tok->inp, '\n');
-            if (end != NULL)
-                end++;
-            else {
-                end = strchr(tok->inp, '\0');
-                if (end == tok->inp) {
-                    tok->done = E_EOF;
-                    return EOF;
-                }
-            }
-            if (tok->start == NULL)
-                tok->buf = tok->cur;
-            tok->line_start = tok->cur;
-            tok->lineno++;
-            tok->inp = end;
-            return Py_CHARMASK(*tok->cur++);
-        }
-        if (tok->prompt != NULL) {
-            char *newtok = PyOS_Readline(stdin, stdout, tok->prompt);
-            if (tok->nextprompt != NULL)
-                tok->prompt = tok->nextprompt;
-            if (newtok == NULL)
-                tok->done = E_INTR;
-            else if (*newtok == '\0') {
-                PyMem_FREE(newtok);
-                tok->done = E_EOF;
-            }
-#if !defined(PGEN) && defined(Py_USING_UNICODE)
-            else if (tok_stdin_decode(tok, &newtok) != 0)
-                PyMem_FREE(newtok);
-#endif
-            else if (tok->start != NULL) {
-                size_t start = tok->start - tok->buf;
-                size_t oldlen = tok->cur - tok->buf;
-                size_t newlen = oldlen + strlen(newtok);
-                char *buf = tok->buf;
-                buf = (char *)PyMem_REALLOC(buf, newlen+1);
-                tok->lineno++;
-                if (buf == NULL) {
-                    PyMem_FREE(tok->buf);
-                    tok->buf = NULL;
-                    PyMem_FREE(newtok);
-                    tok->done = E_NOMEM;
-                    return EOF;
-                }
-                tok->buf = buf;
-                tok->cur = tok->buf + oldlen;
-                tok->line_start = tok->cur;
-                strcpy(tok->buf + oldlen, newtok);
-                PyMem_FREE(newtok);
-                tok->inp = tok->buf + newlen;
-                tok->end = tok->inp + 1;
-                tok->start = tok->buf + start;
-            }
-            else {
-                tok->lineno++;
-                if (tok->buf != NULL)
-                    PyMem_FREE(tok->buf);
-                tok->buf = newtok;
-                tok->line_start = tok->buf;
-                tok->cur = tok->buf;
-                tok->line_start = tok->buf;
-                tok->inp = strchr(tok->buf, '\0');
-                tok->end = tok->inp + 1;
-            }
-        }
-        else {
-            int done = 0;
-            Py_ssize_t cur = 0;
-            char *pt;
-            if (tok->start == NULL) {
-                if (tok->buf == NULL) {
-                    tok->buf = (char *)
-                        PyMem_MALLOC(BUFSIZ);
-                    if (tok->buf == NULL) {
-                        tok->done = E_NOMEM;
-                        return EOF;
-                    }
-                    tok->end = tok->buf + BUFSIZ;
-                }
-                if (decoding_fgets(tok->buf, (int)(tok->end - tok->buf),
-                          tok) == NULL) {
-                    tok->done = E_EOF;
-                    done = 1;
-                }
-                else {
-                    tok->done = E_OK;
-                    tok->inp = strchr(tok->buf, '\0');
-                    done = tok->inp[-1] == '\n';
-                }
-            }
-            else {
-                cur = tok->cur - tok->buf;
-                if (decoding_feof(tok)) {
-                    tok->done = E_EOF;
-                    done = 1;
-                }
-                else
-                    tok->done = E_OK;
-            }
-            tok->lineno++;
-            /* Read until '\n' or EOF */
-            while (!done) {
-                Py_ssize_t curstart = tok->start == NULL ? -1 :
-                          tok->start - tok->buf;
-                Py_ssize_t curvalid = tok->inp - tok->buf;
-                Py_ssize_t newsize = curvalid + BUFSIZ;
-                char *newbuf = tok->buf;
-                newbuf = (char *)PyMem_REALLOC(newbuf,
-                                               newsize);
-                if (newbuf == NULL) {
-                    tok->done = E_NOMEM;
-                    tok->cur = tok->inp;
-                    return EOF;
-                }
-                tok->buf = newbuf;
-                tok->inp = tok->buf + curvalid;
-                tok->end = tok->buf + newsize;
-                tok->start = curstart < 0 ? NULL :
-                         tok->buf + curstart;
-                if (decoding_fgets(tok->inp,
-                               (int)(tok->end - tok->inp),
-                               tok) == NULL) {
-                    /* Break out early on decoding
-                       errors, as tok->buf will be NULL
-                     */
-                    if (tok->decoding_erred)
-                        return EOF;
-                    /* Last line does not end in \n,
-                       fake one */
-                    strcpy(tok->inp, "\n");
-                }
-                tok->inp = strchr(tok->inp, '\0');
-                done = tok->inp[-1] == '\n';
-            }
-            if (tok->buf != NULL) {
-                tok->cur = tok->buf + cur;
-                tok->line_start = tok->cur;
-                /* replace "\r\n" with "\n" */
-                /* For Mac leave the \r, giving a syntax error */
-                pt = tok->inp - 2;
-                if (pt >= tok->buf && *pt == '\r') {
-                    *pt++ = '\n';
-                    *pt = '\0';
-                    tok->inp = pt;
-                }
-            }
-        }
-        if (tok->done != E_OK) {
-            if (tok->prompt != NULL)
-                PySys_WriteStderr("\n");
-            tok->cur = tok->inp;
-            return EOF;
-        }
-    }
-    /*NOTREACHED*/
-}
-
-
-/* Back-up one character */
-
-static void
-tok_backup(register struct tok_state *tok, register int c)
-{
-    if (c != EOF) {
-        if (--tok->cur < tok->buf)
-            Py_FatalError("tok_backup: beginning of buffer");
-        if (*tok->cur != c)
-            *tok->cur = c;
-    }
-}
-
-
-/* Return the token corresponding to a single character */
-
-int
-PyToken_OneChar(int c)
-{
-    switch (c) {
-    case '(':           return LPAR;
-    case ')':           return RPAR;
-    case '[':           return LSQB;
-    case ']':           return RSQB;
-    case ':':           return COLON;
-    case ',':           return COMMA;
-    case ';':           return SEMI;
-    case '+':           return PLUS;
-    case '-':           return MINUS;
-    case '*':           return STAR;
-    case '/':           return SLASH;
-    case '|':           return VBAR;
-    case '&':           return AMPER;
-    case '<':           return LESS;
-    case '>':           return GREATER;
-    case '=':           return EQUAL;
-    case '.':           return DOT;
-    case '%':           return PERCENT;
-    case '`':           return BACKQUOTE;
-    case '{':           return LBRACE;
-    case '}':           return RBRACE;
-    case '^':           return CIRCUMFLEX;
-    case '~':           return TILDE;
-    case '@':       return AT;
-    default:            return OP;
-    }
-}
-
-
-int
-PyToken_TwoChars(int c1, int c2)
-{
-    switch (c1) {
-    case '=':
-        switch (c2) {
-        case '=':               return EQEQUAL;
-        }
-        break;
-    case '!':
-        switch (c2) {
-        case '=':               return NOTEQUAL;
-        }
-        break;
-    case '<':
-        switch (c2) {
-        case '>':               return NOTEQUAL;
-        case '=':               return LESSEQUAL;
-        case '<':               return LEFTSHIFT;
-        }
-        break;
-    case '>':
-        switch (c2) {
-        case '=':               return GREATEREQUAL;
-        case '>':               return RIGHTSHIFT;
-        }
-        break;
-    case '+':
-        switch (c2) {
-        case '=':               return PLUSEQUAL;
-        }
-        break;
-    case '-':
-        switch (c2) {
-        case '=':               return MINEQUAL;
-        }
-        break;
-    case '*':
-        switch (c2) {
-        case '*':               return DOUBLESTAR;
-        case '=':               return STAREQUAL;
-        }
-        break;
-    case '/':
-        switch (c2) {
-        case '/':               return DOUBLESLASH;
-        case '=':               return SLASHEQUAL;
-        }
-        break;
-    case '|':
-        switch (c2) {
-        case '=':               return VBAREQUAL;
-        }
-        break;
-    case '%':
-        switch (c2) {
-        case '=':               return PERCENTEQUAL;
-        }
-        break;
-    case '&':
-        switch (c2) {
-        case '=':               return AMPEREQUAL;
-        }
-        break;
-    case '^':
-        switch (c2) {
-        case '=':               return CIRCUMFLEXEQUAL;
-        }
-        break;
-    }
-    return OP;
-}
-
-int
-PyToken_ThreeChars(int c1, int c2, int c3)
-{
-    switch (c1) {
-    case '<':
-        switch (c2) {
-        case '<':
-            switch (c3) {
-            case '=':
-                return LEFTSHIFTEQUAL;
-            }
-            break;
-        }
-        break;
-    case '>':
-        switch (c2) {
-        case '>':
-            switch (c3) {
-            case '=':
-                return RIGHTSHIFTEQUAL;
-            }
-            break;
-        }
-        break;
-    case '*':
-        switch (c2) {
-        case '*':
-            switch (c3) {
-            case '=':
-                return DOUBLESTAREQUAL;
-            }
-            break;
-        }
-        break;
-    case '/':
-        switch (c2) {
-        case '/':
-            switch (c3) {
-            case '=':
-                return DOUBLESLASHEQUAL;
-            }
-            break;
-        }
-        break;
-    }
-    return OP;
-}
-
-static int
-indenterror(struct tok_state *tok)
-{
-    if (tok->alterror) {
-        tok->done = E_TABSPACE;
-        tok->cur = tok->inp;
-        return 1;
-    }
-    if (tok->altwarning) {
-        PySys_WriteStderr("%s: inconsistent use of tabs and spaces "
-                          "in indentation\n", tok->filename);
-        tok->altwarning = 0;
-    }
-    return 0;
-}
-
-/* Get next token, after space stripping etc. */
-
-static int
-tok_get(register struct tok_state *tok, char **p_start, char **p_end)
-{
-    register int c;
-    int blankline;
-
-    *p_start = *p_end = NULL;
-  nextline:
-    tok->start = NULL;
-    blankline = 0;
-
-    /* Get indentation level */
-    if (tok->atbol) {
-        register int col = 0;
-        register int altcol = 0;
-        tok->atbol = 0;
-        for (;;) {
-            c = tok_nextc(tok);
-            if (c == ' ')
-                col++, altcol++;
-            else if (c == '\t') {
-                col = (col/tok->tabsize + 1) * tok->tabsize;
-                altcol = (altcol/tok->alttabsize + 1)
-                    * tok->alttabsize;
-            }
-            else if (c == '\014') /* Control-L (formfeed) */
-                col = altcol = 0; /* For Emacs users */
-            else
-                break;
-        }
-        tok_backup(tok, c);
-        if (c == '#' || c == '\n') {
-            /* Lines with only whitespace and/or comments
-               shouldn't affect the indentation and are
-               not passed to the parser as NEWLINE tokens,
-               except *totally* empty lines in interactive
-               mode, which signal the end of a command group. */
-            if (col == 0 && c == '\n' && tok->prompt != NULL)
-                blankline = 0; /* Let it through */
-            else
-                blankline = 1; /* Ignore completely */
-            /* We can't jump back right here since we still
-               may need to skip to the end of a comment */
-        }
-        if (!blankline && tok->level == 0) {
-            if (col == tok->indstack[tok->indent]) {
-                /* No change */
-                if (altcol != tok->altindstack[tok->indent]) {
-                    if (indenterror(tok))
-                        return ERRORTOKEN;
-                }
-            }
-            else if (col > tok->indstack[tok->indent]) {
-                /* Indent -- always one */
-                if (tok->indent+1 >= MAXINDENT) {
-                    tok->done = E_TOODEEP;
-                    tok->cur = tok->inp;
-                    return ERRORTOKEN;
-                }
-                if (altcol <= tok->altindstack[tok->indent]) {
-                    if (indenterror(tok))
-                        return ERRORTOKEN;
-                }
-                tok->pendin++;
-                tok->indstack[++tok->indent] = col;
-                tok->altindstack[tok->indent] = altcol;
-            }
-            else /* col < tok->indstack[tok->indent] */ {
-                /* Dedent -- any number, must be consistent */
-                while (tok->indent > 0 &&
-                    col < tok->indstack[tok->indent]) {
-                    tok->pendin--;
-                    tok->indent--;
-                }
-                if (col != tok->indstack[tok->indent]) {
-                    tok->done = E_DEDENT;
-                    tok->cur = tok->inp;
-                    return ERRORTOKEN;
-                }
-                if (altcol != tok->altindstack[tok->indent]) {
-                    if (indenterror(tok))
-                        return ERRORTOKEN;
-                }
-            }
-        }
-    }
-
-    tok->start = tok->cur;
-
-    /* Return pending indents/dedents */
-    if (tok->pendin != 0) {
-        if (tok->pendin < 0) {
-            tok->pendin++;
-            return DEDENT;
-        }
-        else {
-            tok->pendin--;
-            return INDENT;
-        }
-    }
-
- again:
-    tok->start = NULL;
-    /* Skip spaces */
-    do {
-        c = tok_nextc(tok);
-    } while (c == ' ' || c == '\t' || c == '\014');
-
-    /* Set start of current token */
-    tok->start = tok->cur - 1;
-
-    /* Skip comment, while looking for tab-setting magic */
-    if (c == '#') {
-        static char *tabforms[] = {
-            "tab-width:",                       /* Emacs */
-            ":tabstop=",                        /* vim, full form */
-            ":ts=",                             /* vim, abbreviated form */
-            "set tabsize=",                     /* will vi never die? */
-        /* more templates can be added here to support other editors */
-        };
-        char cbuf[80];
-        char *tp, **cp;
-        tp = cbuf;
-        do {
-            *tp++ = c = tok_nextc(tok);
-        } while (c != EOF && c != '\n' &&
-                 (size_t)(tp - cbuf + 1) < sizeof(cbuf));
-        *tp = '\0';
-        for (cp = tabforms;
-             cp < tabforms + sizeof(tabforms)/sizeof(tabforms[0]);
-             cp++) {
-            if ((tp = strstr(cbuf, *cp))) {
-                int newsize = atoi(tp + strlen(*cp));
-
-                if (newsize >= 1 && newsize <= 40) {
-                    tok->tabsize = newsize;
-                    if (Py_VerboseFlag)
-                        PySys_WriteStderr(
-                        "Tab size set to %d\n",
-                        newsize);
-                }
-            }
-        }
-        while (c != EOF && c != '\n')
-            c = tok_nextc(tok);
-    }
-
-    /* Check for EOF and errors now */
-    if (c == EOF) {
-        return tok->done == E_EOF ? ENDMARKER : ERRORTOKEN;
-    }
-
-    /* Identifier (most frequent token!) */
-    if (Py_ISALPHA(c) || c == '_') {
-        /* Process r"", u"" and ur"" */
-        switch (c) {
-        case 'b':
-        case 'B':
-            c = tok_nextc(tok);
-            if (c == 'r' || c == 'R')
-                c = tok_nextc(tok);
-            if (c == '"' || c == '\'')
-                goto letter_quote;
-            break;
-        case 'r':
-        case 'R':
-            c = tok_nextc(tok);
-            if (c == '"' || c == '\'')
-                goto letter_quote;
-            break;
-        case 'u':
-        case 'U':
-            c = tok_nextc(tok);
-            if (c == 'r' || c == 'R')
-                c = tok_nextc(tok);
-            if (c == '"' || c == '\'')
-                goto letter_quote;
-            break;
-        }
-        while (c != EOF && (Py_ISALNUM(c) || c == '_')) {
-            c = tok_nextc(tok);
-        }
-        tok_backup(tok, c);
-        *p_start = tok->start;
-        *p_end = tok->cur;
-        return NAME;
-    }
-
-    /* Newline */
-    if (c == '\n') {
-        tok->atbol = 1;
-        if (blankline || tok->level > 0)
-            goto nextline;
-        *p_start = tok->start;
-        *p_end = tok->cur - 1; /* Leave '\n' out of the string */
-        tok->cont_line = 0;
-        return NEWLINE;
-    }
-
-    /* Period or number starting with period? */
-    if (c == '.') {
-        c = tok_nextc(tok);
-        if (isdigit(c)) {
-            goto fraction;
-        }
-        else {
-            tok_backup(tok, c);
-            *p_start = tok->start;
-            *p_end = tok->cur;
-            return DOT;
-        }
-    }
-
-    /* Number */
-    if (isdigit(c)) {
-        if (c == '0') {
-            /* Hex, octal or binary -- maybe. */
-            c = tok_nextc(tok);
-            if (c == '.')
-                goto fraction;
-#ifndef WITHOUT_COMPLEX
-            if (c == 'j' || c == 'J')
-                goto imaginary;
-#endif
-            if (c == 'x' || c == 'X') {
-
-                /* Hex */
-                c = tok_nextc(tok);
-                if (!isxdigit(c)) {
-                    tok->done = E_TOKEN;
-                    tok_backup(tok, c);
-                    return ERRORTOKEN;
-                }
-                do {
-                    c = tok_nextc(tok);
-                } while (isxdigit(c));
-            }
-            else if (c == 'o' || c == 'O') {
-                /* Octal */
-                c = tok_nextc(tok);
-                if (c < '0' || c >= '8') {
-                    tok->done = E_TOKEN;
-                    tok_backup(tok, c);
-                    return ERRORTOKEN;
-                }
-                do {
-                    c = tok_nextc(tok);
-                } while ('0' <= c && c < '8');
-            }
-            else if (c == 'b' || c == 'B') {
-                /* Binary */
-                c = tok_nextc(tok);
-                if (c != '0' && c != '1') {
-                    tok->done = E_TOKEN;
-                    tok_backup(tok, c);
-                    return ERRORTOKEN;
-                }
-                do {
-                    c = tok_nextc(tok);
-                } while (c == '0' || c == '1');
-            }
-            else {
-                int found_decimal = 0;
-                /* Octal; c is first char of it */
-                /* There's no 'isoctdigit' macro, sigh */
-                while ('0' <= c && c < '8') {
-                    c = tok_nextc(tok);
-                }
-                if (isdigit(c)) {
-                    found_decimal = 1;
-                    do {
-                        c = tok_nextc(tok);
-                    } while (isdigit(c));
-                }
-                if (c == '.')
-                    goto fraction;
-                else if (c == 'e' || c == 'E')
-                    goto exponent;
-#ifndef WITHOUT_COMPLEX
-                else if (c == 'j' || c == 'J')
-                    goto imaginary;
-#endif
-                else if (found_decimal) {
-                    tok->done = E_TOKEN;
-                    tok_backup(tok, c);
-                    return ERRORTOKEN;
-                }
-            }
-            if (c == 'l' || c == 'L')
-                c = tok_nextc(tok);
-        }
-        else {
-            /* Decimal */
-            do {
-                c = tok_nextc(tok);
-            } while (isdigit(c));
-            if (c == 'l' || c == 'L')
-                c = tok_nextc(tok);
-            else {
-                /* Accept floating point numbers. */
-                if (c == '.') {
-        fraction:
-                    /* Fraction */
-                    do {
-                        c = tok_nextc(tok);
-                    } while (isdigit(c));
-                }
-                if (c == 'e' || c == 'E') {
-        exponent:
-                    /* Exponent part */
-                    c = tok_nextc(tok);
-                    if (c == '+' || c == '-')
-                        c = tok_nextc(tok);
-                    if (!isdigit(c)) {
-                        tok->done = E_TOKEN;
-                        tok_backup(tok, c);
-                        return ERRORTOKEN;
-                    }
-                    do {
-                        c = tok_nextc(tok);
-                    } while (isdigit(c));
-                }
-#ifndef WITHOUT_COMPLEX
-                if (c == 'j' || c == 'J')
-                    /* Imaginary part */
-        imaginary:
-                    c = tok_nextc(tok);
-#endif
-            }
-        }
-        tok_backup(tok, c);
-        *p_start = tok->start;
-        *p_end = tok->cur;
-        return NUMBER;
-    }
-
-  letter_quote:
-    /* String */
-    if (c == '\'' || c == '"') {
-        Py_ssize_t quote2 = tok->cur - tok->start + 1;
-        int quote = c;
-        int triple = 0;
-        int tripcount = 0;
-        for (;;) {
-            c = tok_nextc(tok);
-            if (c == '\n') {
-                if (!triple) {
-                    tok->done = E_EOLS;
-                    tok_backup(tok, c);
-                    return ERRORTOKEN;
-                }
-                tripcount = 0;
-                tok->cont_line = 1; /* multiline string. */
-            }
-            else if (c == EOF) {
-                if (triple)
-                    tok->done = E_EOFS;
-                else
-                    tok->done = E_EOLS;
-                tok->cur = tok->inp;
-                return ERRORTOKEN;
-            }
-            else if (c == quote) {
-                tripcount++;
-                if (tok->cur - tok->start == quote2) {
-                    c = tok_nextc(tok);
-                    if (c == quote) {
-                        triple = 1;
-                        tripcount = 0;
-                        continue;
-                    }
-                    tok_backup(tok, c);
-                }
-                if (!triple || tripcount == 3)
-                    break;
-            }
-            else if (c == '\\') {
-                tripcount = 0;
-                c = tok_nextc(tok);
-                if (c == EOF) {
-                    tok->done = E_EOLS;
-                    tok->cur = tok->inp;
-                    return ERRORTOKEN;
-                }
-            }
-            else
-                tripcount = 0;
-        }
-        *p_start = tok->start;
-        *p_end = tok->cur;
-        return STRING;
-    }
-
-    /* Line continuation */
-    if (c == '\\') {
-        c = tok_nextc(tok);
-        if (c != '\n') {
-            tok->done = E_LINECONT;
-            tok->cur = tok->inp;
-            return ERRORTOKEN;
-        }
-        tok->cont_line = 1;
-        goto again; /* Read next line */
-    }
-
-    /* Check for two-character token */
-    {
-        int c2 = tok_nextc(tok);
-        int token = PyToken_TwoChars(c, c2);
-#ifndef PGEN
-        if (Py_Py3kWarningFlag && token == NOTEQUAL && c == '<') {
-            if (PyErr_WarnExplicit(PyExc_DeprecationWarning,
-                                   "<> not supported in 3.x; use !=",
-                                   tok->filename, tok->lineno,
-                                   NULL, NULL)) {
-                return ERRORTOKEN;
-            }
-        }
-#endif
-        if (token != OP) {
-            int c3 = tok_nextc(tok);
-            int token3 = PyToken_ThreeChars(c, c2, c3);
-            if (token3 != OP) {
-                token = token3;
-            } else {
-                tok_backup(tok, c3);
-            }
-            *p_start = tok->start;
-            *p_end = tok->cur;
-            return token;
-        }
-        tok_backup(tok, c2);
-    }
-
-    /* Keep track of parentheses nesting level */
-    switch (c) {
-    case '(':
-    case '[':
-    case '{':
-        tok->level++;
-        break;
-    case ')':
-    case ']':
-    case '}':
-        tok->level--;
-        break;
-    }
-
-    /* Punctuation character */
-    *p_start = tok->start;
-    *p_end = tok->cur;
-    return PyToken_OneChar(c);
-}
-
-int
-PyTokenizer_Get(struct tok_state *tok, char **p_start, char **p_end)
-{
-    int result = tok_get(tok, p_start, p_end);
-    if (tok->decoding_erred) {
-        result = ERRORTOKEN;
-        tok->done = E_DECODE;
-    }
-    return result;
-}
-
-/* This function is only called from parsetok. However, it cannot live
-   there, as it must be empty for PGEN, and we can check for PGEN only
-   in this file. */
-
-#if defined(PGEN) || !defined(Py_USING_UNICODE)
-char*
-PyTokenizer_RestoreEncoding(struct tok_state* tok, int len, int* offset)
-{
-    return NULL;
-}
-#else
-#ifdef Py_USING_UNICODE
-static PyObject *
-dec_utf8(const char *enc, const char *text, size_t len) {
-    PyObject *ret = NULL;
-    PyObject *unicode_text = PyUnicode_DecodeUTF8(text, len, "replace");
-    if (unicode_text) {
-        ret = PyUnicode_AsEncodedString(unicode_text, enc, "replace");
-        Py_DECREF(unicode_text);
-    }
-    if (!ret) {
-        PyErr_Clear();
-    }
-    return ret;
-}
-char *
-PyTokenizer_RestoreEncoding(struct tok_state* tok, int len, int *offset)
-{
-    char *text = NULL;
-    if (tok->encoding) {
-        /* convert source to original encondig */
-        PyObject *lineobj = dec_utf8(tok->encoding, tok->buf, len);
-        if (lineobj != NULL) {
-            int linelen = PyString_Size(lineobj);
-            const char *line = PyString_AsString(lineobj);
-            text = PyObject_MALLOC(linelen + 1);
-            if (text != NULL && line != NULL) {
-                if (linelen)
-                    strncpy(text, line, linelen);
-                text[linelen] = '\0';
-            }
-            Py_DECREF(lineobj);
-
-            /* adjust error offset */
-            if (*offset > 1) {
-                PyObject *offsetobj = dec_utf8(tok->encoding,
-                                               tok->buf, *offset-1);
-                if (offsetobj) {
-                    *offset = PyString_Size(offsetobj) + 1;
-                    Py_DECREF(offsetobj);
-                }
-            }
-
-        }
-    }
-    return text;
-
-}
-#endif /* defined(Py_USING_UNICODE) */
-#endif
-
-
-#ifdef Py_DEBUG
-
-void
-tok_dump(int type, char *start, char *end)
-{
-    printf("%s", _PyParser_TokenNames[type]);
-    if (type == NAME || type == NUMBER || type == STRING || type == OP)
-        printf("(%.*s)", (int)(end - start), start);
-}
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer.h b/AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer.h
deleted file mode 100644
index 3de3280..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer.h
+++ /dev/null
@@ -1,70 +0,0 @@
-#ifndef Py_TOKENIZER_H
-#define Py_TOKENIZER_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "object.h"
-
-/* Tokenizer interface */
-
-#include "token.h"      /* For token types */
-
-#define MAXINDENT 100   /* Max indentation level */
-
-/* Tokenizer state */
-struct tok_state {
-    /* Input state; buf <= cur <= inp <= end */
-    /* NB an entire line is held in the buffer */
-    char *buf;          /* Input buffer, or NULL; malloc'ed if fp != NULL */
-    char *cur;          /* Next character in buffer */
-    char *inp;          /* End of data in buffer */
-    char *end;          /* End of input buffer if buf != NULL */
-    char *start;        /* Start of current token if not NULL */
-    int done;           /* E_OK normally, E_EOF at EOF, otherwise error code */
-    /* NB If done != E_OK, cur must be == inp!!! */
-    FILE *fp;           /* Rest of input; NULL if tokenizing a string */
-    int tabsize;        /* Tab spacing */
-    int indent;         /* Current indentation index */
-    int indstack[MAXINDENT];            /* Stack of indents */
-    int atbol;          /* Nonzero if at begin of new line */
-    int pendin;         /* Pending indents (if > 0) or dedents (if < 0) */
-    char *prompt, *nextprompt;          /* For interactive prompting */
-    int lineno;         /* Current line number */
-    int level;          /* () [] {} Parentheses nesting level */
-            /* Used to allow free continuations inside them */
-    /* Stuff for checking on different tab sizes */
-    const char *filename;       /* For error messages */
-    int altwarning;     /* Issue warning if alternate tabs don't match */
-    int alterror;       /* Issue error if alternate tabs don't match */
-    int alttabsize;     /* Alternate tab spacing */
-    int altindstack[MAXINDENT];         /* Stack of alternate indents */
-    /* Stuff for PEP 0263 */
-    int decoding_state;         /* -1:decoding, 0:init, 1:raw */
-    int decoding_erred;         /* whether erred in decoding  */
-    int read_coding_spec;       /* whether 'coding:...' has been read  */
-    char *encoding;
-    int cont_line;          /* whether we are in a continuation line. */
-    const char* line_start;     /* pointer to start of current line */
-#ifndef PGEN
-    PyObject *decoding_readline; /* codecs.open(...).readline */
-    PyObject *decoding_buffer;
-#endif
-    const char* enc;
-    const char* str;
-    const char* input; /* Tokenizer's newline translated copy of the string. */
-};
-
-extern struct tok_state *PyTokenizer_FromString(const char *, int);
-extern struct tok_state *PyTokenizer_FromFile(FILE *, char *, char *);
-extern void PyTokenizer_Free(struct tok_state *);
-extern int PyTokenizer_Get(struct tok_state *, char **, char **);
-#if defined(PGEN) || defined(Py_USING_UNICODE)
-extern char * PyTokenizer_RestoreEncoding(struct tok_state* tok,
-                                          int len, int *offset);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_TOKENIZER_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer_pgen.c b/AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer_pgen.c
deleted file mode 100644
index ecbda9c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Parser/tokenizer_pgen.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define PGEN
-#include "tokenizer.c"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/Python-ast.c b/AppPkg/Applications/Python/Python-2.7.2/Python/Python-ast.c
deleted file mode 100644
index b223303..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/Python-ast.c
+++ /dev/null
@@ -1,6763 +0,0 @@
-/* File automatically generated by Parser/asdl_c.py. */
-
-
-/*
-   __version__ 82160.
-
-   This module must be committed separately after each AST grammar change;
-   The __version__ number is set to the revision number of the commit
-   containing the grammar change.
-*/
-
-#include "Python.h"
-#include "Python-ast.h"
-
-static PyTypeObject AST_type;
-static PyTypeObject *mod_type;
-static PyObject* ast2obj_mod(void*);
-static PyTypeObject *Module_type;
-static char *Module_fields[]={
-        "body",
-};
-static PyTypeObject *Interactive_type;
-static char *Interactive_fields[]={
-        "body",
-};
-static PyTypeObject *Expression_type;
-static char *Expression_fields[]={
-        "body",
-};
-static PyTypeObject *Suite_type;
-static char *Suite_fields[]={
-        "body",
-};
-static PyTypeObject *stmt_type;
-static char *stmt_attributes[] = {
-        "lineno",
-        "col_offset",
-};
-static PyObject* ast2obj_stmt(void*);
-static PyTypeObject *FunctionDef_type;
-static char *FunctionDef_fields[]={
-        "name",
-        "args",
-        "body",
-        "decorator_list",
-};
-static PyTypeObject *ClassDef_type;
-static char *ClassDef_fields[]={
-        "name",
-        "bases",
-        "body",
-        "decorator_list",
-};
-static PyTypeObject *Return_type;
-static char *Return_fields[]={
-        "value",
-};
-static PyTypeObject *Delete_type;
-static char *Delete_fields[]={
-        "targets",
-};
-static PyTypeObject *Assign_type;
-static char *Assign_fields[]={
-        "targets",
-        "value",
-};
-static PyTypeObject *AugAssign_type;
-static char *AugAssign_fields[]={
-        "target",
-        "op",
-        "value",
-};
-static PyTypeObject *Print_type;
-static char *Print_fields[]={
-        "dest",
-        "values",
-        "nl",
-};
-static PyTypeObject *For_type;
-static char *For_fields[]={
-        "target",
-        "iter",
-        "body",
-        "orelse",
-};
-static PyTypeObject *While_type;
-static char *While_fields[]={
-        "test",
-        "body",
-        "orelse",
-};
-static PyTypeObject *If_type;
-static char *If_fields[]={
-        "test",
-        "body",
-        "orelse",
-};
-static PyTypeObject *With_type;
-static char *With_fields[]={
-        "context_expr",
-        "optional_vars",
-        "body",
-};
-static PyTypeObject *Raise_type;
-static char *Raise_fields[]={
-        "type",
-        "inst",
-        "tback",
-};
-static PyTypeObject *TryExcept_type;
-static char *TryExcept_fields[]={
-        "body",
-        "handlers",
-        "orelse",
-};
-static PyTypeObject *TryFinally_type;
-static char *TryFinally_fields[]={
-        "body",
-        "finalbody",
-};
-static PyTypeObject *Assert_type;
-static char *Assert_fields[]={
-        "test",
-        "msg",
-};
-static PyTypeObject *Import_type;
-static char *Import_fields[]={
-        "names",
-};
-static PyTypeObject *ImportFrom_type;
-static char *ImportFrom_fields[]={
-        "module",
-        "names",
-        "level",
-};
-static PyTypeObject *Exec_type;
-static char *Exec_fields[]={
-        "body",
-        "globals",
-        "locals",
-};
-static PyTypeObject *Global_type;
-static char *Global_fields[]={
-        "names",
-};
-static PyTypeObject *Expr_type;
-static char *Expr_fields[]={
-        "value",
-};
-static PyTypeObject *Pass_type;
-static PyTypeObject *Break_type;
-static PyTypeObject *Continue_type;
-static PyTypeObject *expr_type;
-static char *expr_attributes[] = {
-        "lineno",
-        "col_offset",
-};
-static PyObject* ast2obj_expr(void*);
-static PyTypeObject *BoolOp_type;
-static char *BoolOp_fields[]={
-        "op",
-        "values",
-};
-static PyTypeObject *BinOp_type;
-static char *BinOp_fields[]={
-        "left",
-        "op",
-        "right",
-};
-static PyTypeObject *UnaryOp_type;
-static char *UnaryOp_fields[]={
-        "op",
-        "operand",
-};
-static PyTypeObject *Lambda_type;
-static char *Lambda_fields[]={
-        "args",
-        "body",
-};
-static PyTypeObject *IfExp_type;
-static char *IfExp_fields[]={
-        "test",
-        "body",
-        "orelse",
-};
-static PyTypeObject *Dict_type;
-static char *Dict_fields[]={
-        "keys",
-        "values",
-};
-static PyTypeObject *Set_type;
-static char *Set_fields[]={
-        "elts",
-};
-static PyTypeObject *ListComp_type;
-static char *ListComp_fields[]={
-        "elt",
-        "generators",
-};
-static PyTypeObject *SetComp_type;
-static char *SetComp_fields[]={
-        "elt",
-        "generators",
-};
-static PyTypeObject *DictComp_type;
-static char *DictComp_fields[]={
-        "key",
-        "value",
-        "generators",
-};
-static PyTypeObject *GeneratorExp_type;
-static char *GeneratorExp_fields[]={
-        "elt",
-        "generators",
-};
-static PyTypeObject *Yield_type;
-static char *Yield_fields[]={
-        "value",
-};
-static PyTypeObject *Compare_type;
-static char *Compare_fields[]={
-        "left",
-        "ops",
-        "comparators",
-};
-static PyTypeObject *Call_type;
-static char *Call_fields[]={
-        "func",
-        "args",
-        "keywords",
-        "starargs",
-        "kwargs",
-};
-static PyTypeObject *Repr_type;
-static char *Repr_fields[]={
-        "value",
-};
-static PyTypeObject *Num_type;
-static char *Num_fields[]={
-        "n",
-};
-static PyTypeObject *Str_type;
-static char *Str_fields[]={
-        "s",
-};
-static PyTypeObject *Attribute_type;
-static char *Attribute_fields[]={
-        "value",
-        "attr",
-        "ctx",
-};
-static PyTypeObject *Subscript_type;
-static char *Subscript_fields[]={
-        "value",
-        "slice",
-        "ctx",
-};
-static PyTypeObject *Name_type;
-static char *Name_fields[]={
-        "id",
-        "ctx",
-};
-static PyTypeObject *List_type;
-static char *List_fields[]={
-        "elts",
-        "ctx",
-};
-static PyTypeObject *Tuple_type;
-static char *Tuple_fields[]={
-        "elts",
-        "ctx",
-};
-static PyTypeObject *expr_context_type;
-static PyObject *Load_singleton, *Store_singleton, *Del_singleton,
-*AugLoad_singleton, *AugStore_singleton, *Param_singleton;
-static PyObject* ast2obj_expr_context(expr_context_ty);
-static PyTypeObject *Load_type;
-static PyTypeObject *Store_type;
-static PyTypeObject *Del_type;
-static PyTypeObject *AugLoad_type;
-static PyTypeObject *AugStore_type;
-static PyTypeObject *Param_type;
-static PyTypeObject *slice_type;
-static PyObject* ast2obj_slice(void*);
-static PyTypeObject *Ellipsis_type;
-static PyTypeObject *Slice_type;
-static char *Slice_fields[]={
-        "lower",
-        "upper",
-        "step",
-};
-static PyTypeObject *ExtSlice_type;
-static char *ExtSlice_fields[]={
-        "dims",
-};
-static PyTypeObject *Index_type;
-static char *Index_fields[]={
-        "value",
-};
-static PyTypeObject *boolop_type;
-static PyObject *And_singleton, *Or_singleton;
-static PyObject* ast2obj_boolop(boolop_ty);
-static PyTypeObject *And_type;
-static PyTypeObject *Or_type;
-static PyTypeObject *operator_type;
-static PyObject *Add_singleton, *Sub_singleton, *Mult_singleton,
-*Div_singleton, *Mod_singleton, *Pow_singleton, *LShift_singleton,
-*RShift_singleton, *BitOr_singleton, *BitXor_singleton, *BitAnd_singleton,
-*FloorDiv_singleton;
-static PyObject* ast2obj_operator(operator_ty);
-static PyTypeObject *Add_type;
-static PyTypeObject *Sub_type;
-static PyTypeObject *Mult_type;
-static PyTypeObject *Div_type;
-static PyTypeObject *Mod_type;
-static PyTypeObject *Pow_type;
-static PyTypeObject *LShift_type;
-static PyTypeObject *RShift_type;
-static PyTypeObject *BitOr_type;
-static PyTypeObject *BitXor_type;
-static PyTypeObject *BitAnd_type;
-static PyTypeObject *FloorDiv_type;
-static PyTypeObject *unaryop_type;
-static PyObject *Invert_singleton, *Not_singleton, *UAdd_singleton,
-*USub_singleton;
-static PyObject* ast2obj_unaryop(unaryop_ty);
-static PyTypeObject *Invert_type;
-static PyTypeObject *Not_type;
-static PyTypeObject *UAdd_type;
-static PyTypeObject *USub_type;
-static PyTypeObject *cmpop_type;
-static PyObject *Eq_singleton, *NotEq_singleton, *Lt_singleton, *LtE_singleton,
-*Gt_singleton, *GtE_singleton, *Is_singleton, *IsNot_singleton, *In_singleton,
-*NotIn_singleton;
-static PyObject* ast2obj_cmpop(cmpop_ty);
-static PyTypeObject *Eq_type;
-static PyTypeObject *NotEq_type;
-static PyTypeObject *Lt_type;
-static PyTypeObject *LtE_type;
-static PyTypeObject *Gt_type;
-static PyTypeObject *GtE_type;
-static PyTypeObject *Is_type;
-static PyTypeObject *IsNot_type;
-static PyTypeObject *In_type;
-static PyTypeObject *NotIn_type;
-static PyTypeObject *comprehension_type;
-static PyObject* ast2obj_comprehension(void*);
-static char *comprehension_fields[]={
-        "target",
-        "iter",
-        "ifs",
-};
-static PyTypeObject *excepthandler_type;
-static char *excepthandler_attributes[] = {
-        "lineno",
-        "col_offset",
-};
-static PyObject* ast2obj_excepthandler(void*);
-static PyTypeObject *ExceptHandler_type;
-static char *ExceptHandler_fields[]={
-        "type",
-        "name",
-        "body",
-};
-static PyTypeObject *arguments_type;
-static PyObject* ast2obj_arguments(void*);
-static char *arguments_fields[]={
-        "args",
-        "vararg",
-        "kwarg",
-        "defaults",
-};
-static PyTypeObject *keyword_type;
-static PyObject* ast2obj_keyword(void*);
-static char *keyword_fields[]={
-        "arg",
-        "value",
-};
-static PyTypeObject *alias_type;
-static PyObject* ast2obj_alias(void*);
-static char *alias_fields[]={
-        "name",
-        "asname",
-};
-
-
-static int
-ast_type_init(PyObject *self, PyObject *args, PyObject *kw)
-{
-    Py_ssize_t i, numfields = 0;
-    int res = -1;
-    PyObject *key, *value, *fields;
-    fields = PyObject_GetAttrString((PyObject*)Py_TYPE(self), "_fields");
-    if (!fields)
-        PyErr_Clear();
-    if (fields) {
-        numfields = PySequence_Size(fields);
-        if (numfields == -1)
-            goto cleanup;
-    }
-    res = 0; /* if no error occurs, this stays 0 to the end */
-    if (PyTuple_GET_SIZE(args) > 0) {
-        if (numfields != PyTuple_GET_SIZE(args)) {
-            PyErr_Format(PyExc_TypeError, "%.400s constructor takes %s"
-                         "%zd positional argument%s",
-                         Py_TYPE(self)->tp_name,
-                         numfields == 0 ? "" : "either 0 or ",
-                         numfields, numfields == 1 ? "" : "s");
-            res = -1;
-            goto cleanup;
-        }
-        for (i = 0; i < PyTuple_GET_SIZE(args); i++) {
-            /* cannot be reached when fields is NULL */
-            PyObject *name = PySequence_GetItem(fields, i);
-            if (!name) {
-                res = -1;
-                goto cleanup;
-            }
-            res = PyObject_SetAttr(self, name, PyTuple_GET_ITEM(args, i));
-            Py_DECREF(name);
-            if (res < 0)
-                goto cleanup;
-        }
-    }
-    if (kw) {
-        i = 0;  /* needed by PyDict_Next */
-        while (PyDict_Next(kw, &i, &key, &value)) {
-            res = PyObject_SetAttr(self, key, value);
-            if (res < 0)
-                goto cleanup;
-        }
-    }
-  cleanup:
-    Py_XDECREF(fields);
-    return res;
-}
-
-/* Pickling support */
-static PyObject *
-ast_type_reduce(PyObject *self, PyObject *unused)
-{
-    PyObject *res;
-    PyObject *dict = PyObject_GetAttrString(self, "__dict__");
-    if (dict == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_AttributeError))
-            PyErr_Clear();
-        else
-            return NULL;
-    }
-    if (dict) {
-        res = Py_BuildValue("O()O", Py_TYPE(self), dict);
-        Py_DECREF(dict);
-        return res;
-    }
-    return Py_BuildValue("O()", Py_TYPE(self));
-}
-
-static PyMethodDef ast_type_methods[] = {
-    {"__reduce__", ast_type_reduce, METH_NOARGS, NULL},
-    {NULL}
-};
-
-static PyTypeObject AST_type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "_ast.AST",
-    sizeof(PyObject),
-    0,
-    0,                       /* 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 */
-    PyObject_GenericGetAttr, /* tp_getattro */
-    PyObject_GenericSetAttr, /* tp_setattro */
-    0,                       /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
-    0,                       /* tp_doc */
-    0,                       /* tp_traverse */
-    0,                       /* tp_clear */
-    0,                       /* tp_richcompare */
-    0,                       /* tp_weaklistoffset */
-    0,                       /* tp_iter */
-    0,                       /* tp_iternext */
-    ast_type_methods,        /* tp_methods */
-    0,                       /* tp_members */
-    0,                       /* tp_getset */
-    0,                       /* tp_base */
-    0,                       /* tp_dict */
-    0,                       /* tp_descr_get */
-    0,                       /* tp_descr_set */
-    0,                       /* tp_dictoffset */
-    (initproc)ast_type_init, /* tp_init */
-    PyType_GenericAlloc,     /* tp_alloc */
-    PyType_GenericNew,       /* tp_new */
-    PyObject_Del,            /* tp_free */
-};
-
-
-static PyTypeObject* make_type(char *type, PyTypeObject* base, char**fields, int num_fields)
-{
-    PyObject *fnames, *result;
-    int i;
-    fnames = PyTuple_New(num_fields);
-    if (!fnames) return NULL;
-    for (i = 0; i < num_fields; i++) {
-        PyObject *field = PyString_FromString(fields[i]);
-        if (!field) {
-            Py_DECREF(fnames);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(fnames, i, field);
-    }
-    result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){sOss}",
-                    type, base, "_fields", fnames, "__module__", "_ast");
-    Py_DECREF(fnames);
-    return (PyTypeObject*)result;
-}
-
-static int add_attributes(PyTypeObject* type, char**attrs, int num_fields)
-{
-    int i, result;
-    PyObject *s, *l = PyTuple_New(num_fields);
-    if (!l)
-        return 0;
-    for (i = 0; i < num_fields; i++) {
-        s = PyString_FromString(attrs[i]);
-        if (!s) {
-            Py_DECREF(l);
-            return 0;
-        }
-        PyTuple_SET_ITEM(l, i, s);
-    }
-    result = PyObject_SetAttrString((PyObject*)type, "_attributes", l) >= 0;
-    Py_DECREF(l);
-    return result;
-}
-
-/* Conversion AST -> Python */
-
-static PyObject* ast2obj_list(asdl_seq *seq, PyObject* (*func)(void*))
-{
-    int i, n = asdl_seq_LEN(seq);
-    PyObject *result = PyList_New(n);
-    PyObject *value;
-    if (!result)
-        return NULL;
-    for (i = 0; i < n; i++) {
-        value = func(asdl_seq_GET(seq, i));
-        if (!value) {
-            Py_DECREF(result);
-            return NULL;
-        }
-        PyList_SET_ITEM(result, i, value);
-    }
-    return result;
-}
-
-static PyObject* ast2obj_object(void *o)
-{
-    if (!o)
-        o = Py_None;
-    Py_INCREF((PyObject*)o);
-    return (PyObject*)o;
-}
-#define ast2obj_identifier ast2obj_object
-#define ast2obj_string ast2obj_object
-static PyObject* ast2obj_bool(bool b)
-{
-    return PyBool_FromLong(b);
-}
-
-static PyObject* ast2obj_int(long b)
-{
-    return PyInt_FromLong(b);
-}
-
-/* Conversion Python -> AST */
-
-static int obj2ast_object(PyObject* obj, PyObject** out, PyArena* arena)
-{
-    if (obj == Py_None)
-        obj = NULL;
-    if (obj)
-        PyArena_AddPyObject(arena, obj);
-    Py_XINCREF(obj);
-    *out = obj;
-    return 0;
-}
-
-#define obj2ast_identifier obj2ast_object
-#define obj2ast_string obj2ast_object
-
-static int obj2ast_int(PyObject* obj, int* out, PyArena* arena)
-{
-    int i;
-    if (!PyInt_Check(obj) && !PyLong_Check(obj)) {
-        PyObject *s = PyObject_Repr(obj);
-        if (s == NULL) return 1;
-        PyErr_Format(PyExc_ValueError, "invalid integer value: %.400s",
-                     PyString_AS_STRING(s));
-        Py_DECREF(s);
-        return 1;
-    }
-
-    i = (int)PyLong_AsLong(obj);
-    if (i == -1 && PyErr_Occurred())
-        return 1;
-    *out = i;
-    return 0;
-}
-
-static int obj2ast_bool(PyObject* obj, bool* out, PyArena* arena)
-{
-    if (!PyBool_Check(obj)) {
-        PyObject *s = PyObject_Repr(obj);
-        if (s == NULL) return 1;
-        PyErr_Format(PyExc_ValueError, "invalid boolean value: %.400s",
-                     PyString_AS_STRING(s));
-        Py_DECREF(s);
-        return 1;
-    }
-
-    *out = (obj == Py_True);
-    return 0;
-}
-
-static int add_ast_fields(void)
-{
-    PyObject *empty_tuple, *d;
-    if (PyType_Ready(&AST_type) < 0)
-        return -1;
-    d = AST_type.tp_dict;
-    empty_tuple = PyTuple_New(0);
-    if (!empty_tuple ||
-        PyDict_SetItemString(d, "_fields", empty_tuple) < 0 ||
-        PyDict_SetItemString(d, "_attributes", empty_tuple) < 0) {
-        Py_XDECREF(empty_tuple);
-        return -1;
-    }
-    Py_DECREF(empty_tuple);
-    return 0;
-}
-
-
-static int init_types(void)
-{
-        static int initialized;
-        if (initialized) return 1;
-        if (add_ast_fields() < 0) return 0;
-        mod_type = make_type("mod", &AST_type, NULL, 0);
-        if (!mod_type) return 0;
-        if (!add_attributes(mod_type, NULL, 0)) return 0;
-        Module_type = make_type("Module", mod_type, Module_fields, 1);
-        if (!Module_type) return 0;
-        Interactive_type = make_type("Interactive", mod_type,
-                                     Interactive_fields, 1);
-        if (!Interactive_type) return 0;
-        Expression_type = make_type("Expression", mod_type, Expression_fields,
-                                    1);
-        if (!Expression_type) return 0;
-        Suite_type = make_type("Suite", mod_type, Suite_fields, 1);
-        if (!Suite_type) return 0;
-        stmt_type = make_type("stmt", &AST_type, NULL, 0);
-        if (!stmt_type) return 0;
-        if (!add_attributes(stmt_type, stmt_attributes, 2)) return 0;
-        FunctionDef_type = make_type("FunctionDef", stmt_type,
-                                     FunctionDef_fields, 4);
-        if (!FunctionDef_type) return 0;
-        ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 4);
-        if (!ClassDef_type) return 0;
-        Return_type = make_type("Return", stmt_type, Return_fields, 1);
-        if (!Return_type) return 0;
-        Delete_type = make_type("Delete", stmt_type, Delete_fields, 1);
-        if (!Delete_type) return 0;
-        Assign_type = make_type("Assign", stmt_type, Assign_fields, 2);
-        if (!Assign_type) return 0;
-        AugAssign_type = make_type("AugAssign", stmt_type, AugAssign_fields, 3);
-        if (!AugAssign_type) return 0;
-        Print_type = make_type("Print", stmt_type, Print_fields, 3);
-        if (!Print_type) return 0;
-        For_type = make_type("For", stmt_type, For_fields, 4);
-        if (!For_type) return 0;
-        While_type = make_type("While", stmt_type, While_fields, 3);
-        if (!While_type) return 0;
-        If_type = make_type("If", stmt_type, If_fields, 3);
-        if (!If_type) return 0;
-        With_type = make_type("With", stmt_type, With_fields, 3);
-        if (!With_type) return 0;
-        Raise_type = make_type("Raise", stmt_type, Raise_fields, 3);
-        if (!Raise_type) return 0;
-        TryExcept_type = make_type("TryExcept", stmt_type, TryExcept_fields, 3);
-        if (!TryExcept_type) return 0;
-        TryFinally_type = make_type("TryFinally", stmt_type, TryFinally_fields,
-                                    2);
-        if (!TryFinally_type) return 0;
-        Assert_type = make_type("Assert", stmt_type, Assert_fields, 2);
-        if (!Assert_type) return 0;
-        Import_type = make_type("Import", stmt_type, Import_fields, 1);
-        if (!Import_type) return 0;
-        ImportFrom_type = make_type("ImportFrom", stmt_type, ImportFrom_fields,
-                                    3);
-        if (!ImportFrom_type) return 0;
-        Exec_type = make_type("Exec", stmt_type, Exec_fields, 3);
-        if (!Exec_type) return 0;
-        Global_type = make_type("Global", stmt_type, Global_fields, 1);
-        if (!Global_type) return 0;
-        Expr_type = make_type("Expr", stmt_type, Expr_fields, 1);
-        if (!Expr_type) return 0;
-        Pass_type = make_type("Pass", stmt_type, NULL, 0);
-        if (!Pass_type) return 0;
-        Break_type = make_type("Break", stmt_type, NULL, 0);
-        if (!Break_type) return 0;
-        Continue_type = make_type("Continue", stmt_type, NULL, 0);
-        if (!Continue_type) return 0;
-        expr_type = make_type("expr", &AST_type, NULL, 0);
-        if (!expr_type) return 0;
-        if (!add_attributes(expr_type, expr_attributes, 2)) return 0;
-        BoolOp_type = make_type("BoolOp", expr_type, BoolOp_fields, 2);
-        if (!BoolOp_type) return 0;
-        BinOp_type = make_type("BinOp", expr_type, BinOp_fields, 3);
-        if (!BinOp_type) return 0;
-        UnaryOp_type = make_type("UnaryOp", expr_type, UnaryOp_fields, 2);
-        if (!UnaryOp_type) return 0;
-        Lambda_type = make_type("Lambda", expr_type, Lambda_fields, 2);
-        if (!Lambda_type) return 0;
-        IfExp_type = make_type("IfExp", expr_type, IfExp_fields, 3);
-        if (!IfExp_type) return 0;
-        Dict_type = make_type("Dict", expr_type, Dict_fields, 2);
-        if (!Dict_type) return 0;
-        Set_type = make_type("Set", expr_type, Set_fields, 1);
-        if (!Set_type) return 0;
-        ListComp_type = make_type("ListComp", expr_type, ListComp_fields, 2);
-        if (!ListComp_type) return 0;
-        SetComp_type = make_type("SetComp", expr_type, SetComp_fields, 2);
-        if (!SetComp_type) return 0;
-        DictComp_type = make_type("DictComp", expr_type, DictComp_fields, 3);
-        if (!DictComp_type) return 0;
-        GeneratorExp_type = make_type("GeneratorExp", expr_type,
-                                      GeneratorExp_fields, 2);
-        if (!GeneratorExp_type) return 0;
-        Yield_type = make_type("Yield", expr_type, Yield_fields, 1);
-        if (!Yield_type) return 0;
-        Compare_type = make_type("Compare", expr_type, Compare_fields, 3);
-        if (!Compare_type) return 0;
-        Call_type = make_type("Call", expr_type, Call_fields, 5);
-        if (!Call_type) return 0;
-        Repr_type = make_type("Repr", expr_type, Repr_fields, 1);
-        if (!Repr_type) return 0;
-        Num_type = make_type("Num", expr_type, Num_fields, 1);
-        if (!Num_type) return 0;
-        Str_type = make_type("Str", expr_type, Str_fields, 1);
-        if (!Str_type) return 0;
-        Attribute_type = make_type("Attribute", expr_type, Attribute_fields, 3);
-        if (!Attribute_type) return 0;
-        Subscript_type = make_type("Subscript", expr_type, Subscript_fields, 3);
-        if (!Subscript_type) return 0;
-        Name_type = make_type("Name", expr_type, Name_fields, 2);
-        if (!Name_type) return 0;
-        List_type = make_type("List", expr_type, List_fields, 2);
-        if (!List_type) return 0;
-        Tuple_type = make_type("Tuple", expr_type, Tuple_fields, 2);
-        if (!Tuple_type) return 0;
-        expr_context_type = make_type("expr_context", &AST_type, NULL, 0);
-        if (!expr_context_type) return 0;
-        if (!add_attributes(expr_context_type, NULL, 0)) return 0;
-        Load_type = make_type("Load", expr_context_type, NULL, 0);
-        if (!Load_type) return 0;
-        Load_singleton = PyType_GenericNew(Load_type, NULL, NULL);
-        if (!Load_singleton) return 0;
-        Store_type = make_type("Store", expr_context_type, NULL, 0);
-        if (!Store_type) return 0;
-        Store_singleton = PyType_GenericNew(Store_type, NULL, NULL);
-        if (!Store_singleton) return 0;
-        Del_type = make_type("Del", expr_context_type, NULL, 0);
-        if (!Del_type) return 0;
-        Del_singleton = PyType_GenericNew(Del_type, NULL, NULL);
-        if (!Del_singleton) return 0;
-        AugLoad_type = make_type("AugLoad", expr_context_type, NULL, 0);
-        if (!AugLoad_type) return 0;
-        AugLoad_singleton = PyType_GenericNew(AugLoad_type, NULL, NULL);
-        if (!AugLoad_singleton) return 0;
-        AugStore_type = make_type("AugStore", expr_context_type, NULL, 0);
-        if (!AugStore_type) return 0;
-        AugStore_singleton = PyType_GenericNew(AugStore_type, NULL, NULL);
-        if (!AugStore_singleton) return 0;
-        Param_type = make_type("Param", expr_context_type, NULL, 0);
-        if (!Param_type) return 0;
-        Param_singleton = PyType_GenericNew(Param_type, NULL, NULL);
-        if (!Param_singleton) return 0;
-        slice_type = make_type("slice", &AST_type, NULL, 0);
-        if (!slice_type) return 0;
-        if (!add_attributes(slice_type, NULL, 0)) return 0;
-        Ellipsis_type = make_type("Ellipsis", slice_type, NULL, 0);
-        if (!Ellipsis_type) return 0;
-        Slice_type = make_type("Slice", slice_type, Slice_fields, 3);
-        if (!Slice_type) return 0;
-        ExtSlice_type = make_type("ExtSlice", slice_type, ExtSlice_fields, 1);
-        if (!ExtSlice_type) return 0;
-        Index_type = make_type("Index", slice_type, Index_fields, 1);
-        if (!Index_type) return 0;
-        boolop_type = make_type("boolop", &AST_type, NULL, 0);
-        if (!boolop_type) return 0;
-        if (!add_attributes(boolop_type, NULL, 0)) return 0;
-        And_type = make_type("And", boolop_type, NULL, 0);
-        if (!And_type) return 0;
-        And_singleton = PyType_GenericNew(And_type, NULL, NULL);
-        if (!And_singleton) return 0;
-        Or_type = make_type("Or", boolop_type, NULL, 0);
-        if (!Or_type) return 0;
-        Or_singleton = PyType_GenericNew(Or_type, NULL, NULL);
-        if (!Or_singleton) return 0;
-        operator_type = make_type("operator", &AST_type, NULL, 0);
-        if (!operator_type) return 0;
-        if (!add_attributes(operator_type, NULL, 0)) return 0;
-        Add_type = make_type("Add", operator_type, NULL, 0);
-        if (!Add_type) return 0;
-        Add_singleton = PyType_GenericNew(Add_type, NULL, NULL);
-        if (!Add_singleton) return 0;
-        Sub_type = make_type("Sub", operator_type, NULL, 0);
-        if (!Sub_type) return 0;
-        Sub_singleton = PyType_GenericNew(Sub_type, NULL, NULL);
-        if (!Sub_singleton) return 0;
-        Mult_type = make_type("Mult", operator_type, NULL, 0);
-        if (!Mult_type) return 0;
-        Mult_singleton = PyType_GenericNew(Mult_type, NULL, NULL);
-        if (!Mult_singleton) return 0;
-        Div_type = make_type("Div", operator_type, NULL, 0);
-        if (!Div_type) return 0;
-        Div_singleton = PyType_GenericNew(Div_type, NULL, NULL);
-        if (!Div_singleton) return 0;
-        Mod_type = make_type("Mod", operator_type, NULL, 0);
-        if (!Mod_type) return 0;
-        Mod_singleton = PyType_GenericNew(Mod_type, NULL, NULL);
-        if (!Mod_singleton) return 0;
-        Pow_type = make_type("Pow", operator_type, NULL, 0);
-        if (!Pow_type) return 0;
-        Pow_singleton = PyType_GenericNew(Pow_type, NULL, NULL);
-        if (!Pow_singleton) return 0;
-        LShift_type = make_type("LShift", operator_type, NULL, 0);
-        if (!LShift_type) return 0;
-        LShift_singleton = PyType_GenericNew(LShift_type, NULL, NULL);
-        if (!LShift_singleton) return 0;
-        RShift_type = make_type("RShift", operator_type, NULL, 0);
-        if (!RShift_type) return 0;
-        RShift_singleton = PyType_GenericNew(RShift_type, NULL, NULL);
-        if (!RShift_singleton) return 0;
-        BitOr_type = make_type("BitOr", operator_type, NULL, 0);
-        if (!BitOr_type) return 0;
-        BitOr_singleton = PyType_GenericNew(BitOr_type, NULL, NULL);
-        if (!BitOr_singleton) return 0;
-        BitXor_type = make_type("BitXor", operator_type, NULL, 0);
-        if (!BitXor_type) return 0;
-        BitXor_singleton = PyType_GenericNew(BitXor_type, NULL, NULL);
-        if (!BitXor_singleton) return 0;
-        BitAnd_type = make_type("BitAnd", operator_type, NULL, 0);
-        if (!BitAnd_type) return 0;
-        BitAnd_singleton = PyType_GenericNew(BitAnd_type, NULL, NULL);
-        if (!BitAnd_singleton) return 0;
-        FloorDiv_type = make_type("FloorDiv", operator_type, NULL, 0);
-        if (!FloorDiv_type) return 0;
-        FloorDiv_singleton = PyType_GenericNew(FloorDiv_type, NULL, NULL);
-        if (!FloorDiv_singleton) return 0;
-        unaryop_type = make_type("unaryop", &AST_type, NULL, 0);
-        if (!unaryop_type) return 0;
-        if (!add_attributes(unaryop_type, NULL, 0)) return 0;
-        Invert_type = make_type("Invert", unaryop_type, NULL, 0);
-        if (!Invert_type) return 0;
-        Invert_singleton = PyType_GenericNew(Invert_type, NULL, NULL);
-        if (!Invert_singleton) return 0;
-        Not_type = make_type("Not", unaryop_type, NULL, 0);
-        if (!Not_type) return 0;
-        Not_singleton = PyType_GenericNew(Not_type, NULL, NULL);
-        if (!Not_singleton) return 0;
-        UAdd_type = make_type("UAdd", unaryop_type, NULL, 0);
-        if (!UAdd_type) return 0;
-        UAdd_singleton = PyType_GenericNew(UAdd_type, NULL, NULL);
-        if (!UAdd_singleton) return 0;
-        USub_type = make_type("USub", unaryop_type, NULL, 0);
-        if (!USub_type) return 0;
-        USub_singleton = PyType_GenericNew(USub_type, NULL, NULL);
-        if (!USub_singleton) return 0;
-        cmpop_type = make_type("cmpop", &AST_type, NULL, 0);
-        if (!cmpop_type) return 0;
-        if (!add_attributes(cmpop_type, NULL, 0)) return 0;
-        Eq_type = make_type("Eq", cmpop_type, NULL, 0);
-        if (!Eq_type) return 0;
-        Eq_singleton = PyType_GenericNew(Eq_type, NULL, NULL);
-        if (!Eq_singleton) return 0;
-        NotEq_type = make_type("NotEq", cmpop_type, NULL, 0);
-        if (!NotEq_type) return 0;
-        NotEq_singleton = PyType_GenericNew(NotEq_type, NULL, NULL);
-        if (!NotEq_singleton) return 0;
-        Lt_type = make_type("Lt", cmpop_type, NULL, 0);
-        if (!Lt_type) return 0;
-        Lt_singleton = PyType_GenericNew(Lt_type, NULL, NULL);
-        if (!Lt_singleton) return 0;
-        LtE_type = make_type("LtE", cmpop_type, NULL, 0);
-        if (!LtE_type) return 0;
-        LtE_singleton = PyType_GenericNew(LtE_type, NULL, NULL);
-        if (!LtE_singleton) return 0;
-        Gt_type = make_type("Gt", cmpop_type, NULL, 0);
-        if (!Gt_type) return 0;
-        Gt_singleton = PyType_GenericNew(Gt_type, NULL, NULL);
-        if (!Gt_singleton) return 0;
-        GtE_type = make_type("GtE", cmpop_type, NULL, 0);
-        if (!GtE_type) return 0;
-        GtE_singleton = PyType_GenericNew(GtE_type, NULL, NULL);
-        if (!GtE_singleton) return 0;
-        Is_type = make_type("Is", cmpop_type, NULL, 0);
-        if (!Is_type) return 0;
-        Is_singleton = PyType_GenericNew(Is_type, NULL, NULL);
-        if (!Is_singleton) return 0;
-        IsNot_type = make_type("IsNot", cmpop_type, NULL, 0);
-        if (!IsNot_type) return 0;
-        IsNot_singleton = PyType_GenericNew(IsNot_type, NULL, NULL);
-        if (!IsNot_singleton) return 0;
-        In_type = make_type("In", cmpop_type, NULL, 0);
-        if (!In_type) return 0;
-        In_singleton = PyType_GenericNew(In_type, NULL, NULL);
-        if (!In_singleton) return 0;
-        NotIn_type = make_type("NotIn", cmpop_type, NULL, 0);
-        if (!NotIn_type) return 0;
-        NotIn_singleton = PyType_GenericNew(NotIn_type, NULL, NULL);
-        if (!NotIn_singleton) return 0;
-        comprehension_type = make_type("comprehension", &AST_type,
-                                       comprehension_fields, 3);
-        if (!comprehension_type) return 0;
-        excepthandler_type = make_type("excepthandler", &AST_type, NULL, 0);
-        if (!excepthandler_type) return 0;
-        if (!add_attributes(excepthandler_type, excepthandler_attributes, 2))
-            return 0;
-        ExceptHandler_type = make_type("ExceptHandler", excepthandler_type,
-                                       ExceptHandler_fields, 3);
-        if (!ExceptHandler_type) return 0;
-        arguments_type = make_type("arguments", &AST_type, arguments_fields, 4);
-        if (!arguments_type) return 0;
-        keyword_type = make_type("keyword", &AST_type, keyword_fields, 2);
-        if (!keyword_type) return 0;
-        alias_type = make_type("alias", &AST_type, alias_fields, 2);
-        if (!alias_type) return 0;
-        initialized = 1;
-        return 1;
-}
-
-static int obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena);
-static int obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena);
-static int obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena);
-static int obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena*
-                                arena);
-static int obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena);
-static int obj2ast_boolop(PyObject* obj, boolop_ty* out, PyArena* arena);
-static int obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena);
-static int obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena);
-static int obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena);
-static int obj2ast_comprehension(PyObject* obj, comprehension_ty* out, PyArena*
-                                 arena);
-static int obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena*
-                                 arena);
-static int obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena);
-static int obj2ast_keyword(PyObject* obj, keyword_ty* out, PyArena* arena);
-static int obj2ast_alias(PyObject* obj, alias_ty* out, PyArena* arena);
-
-mod_ty
-Module(asdl_seq * body, PyArena *arena)
-{
-        mod_ty p;
-        p = (mod_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Module_kind;
-        p->v.Module.body = body;
-        return p;
-}
-
-mod_ty
-Interactive(asdl_seq * body, PyArena *arena)
-{
-        mod_ty p;
-        p = (mod_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Interactive_kind;
-        p->v.Interactive.body = body;
-        return p;
-}
-
-mod_ty
-Expression(expr_ty body, PyArena *arena)
-{
-        mod_ty p;
-        if (!body) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field body is required for Expression");
-                return NULL;
-        }
-        p = (mod_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Expression_kind;
-        p->v.Expression.body = body;
-        return p;
-}
-
-mod_ty
-Suite(asdl_seq * body, PyArena *arena)
-{
-        mod_ty p;
-        p = (mod_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Suite_kind;
-        p->v.Suite.body = body;
-        return p;
-}
-
-stmt_ty
-FunctionDef(identifier name, arguments_ty args, asdl_seq * body, asdl_seq *
-            decorator_list, int lineno, int col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        if (!name) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field name is required for FunctionDef");
-                return NULL;
-        }
-        if (!args) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field args is required for FunctionDef");
-                return NULL;
-        }
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = FunctionDef_kind;
-        p->v.FunctionDef.name = name;
-        p->v.FunctionDef.args = args;
-        p->v.FunctionDef.body = body;
-        p->v.FunctionDef.decorator_list = decorator_list;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-ClassDef(identifier name, asdl_seq * bases, asdl_seq * body, asdl_seq *
-         decorator_list, int lineno, int col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        if (!name) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field name is required for ClassDef");
-                return NULL;
-        }
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = ClassDef_kind;
-        p->v.ClassDef.name = name;
-        p->v.ClassDef.bases = bases;
-        p->v.ClassDef.body = body;
-        p->v.ClassDef.decorator_list = decorator_list;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-Return(expr_ty value, int lineno, int col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Return_kind;
-        p->v.Return.value = value;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-Delete(asdl_seq * targets, int lineno, int col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Delete_kind;
-        p->v.Delete.targets = targets;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-Assign(asdl_seq * targets, expr_ty value, int lineno, int col_offset, PyArena
-       *arena)
-{
-        stmt_ty p;
-        if (!value) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field value is required for Assign");
-                return NULL;
-        }
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Assign_kind;
-        p->v.Assign.targets = targets;
-        p->v.Assign.value = value;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-AugAssign(expr_ty target, operator_ty op, expr_ty value, int lineno, int
-          col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        if (!target) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field target is required for AugAssign");
-                return NULL;
-        }
-        if (!op) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field op is required for AugAssign");
-                return NULL;
-        }
-        if (!value) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field value is required for AugAssign");
-                return NULL;
-        }
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = AugAssign_kind;
-        p->v.AugAssign.target = target;
-        p->v.AugAssign.op = op;
-        p->v.AugAssign.value = value;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-Print(expr_ty dest, asdl_seq * values, bool nl, int lineno, int col_offset,
-      PyArena *arena)
-{
-        stmt_ty p;
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Print_kind;
-        p->v.Print.dest = dest;
-        p->v.Print.values = values;
-        p->v.Print.nl = nl;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-For(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * orelse, int
-    lineno, int col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        if (!target) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field target is required for For");
-                return NULL;
-        }
-        if (!iter) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field iter is required for For");
-                return NULL;
-        }
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = For_kind;
-        p->v.For.target = target;
-        p->v.For.iter = iter;
-        p->v.For.body = body;
-        p->v.For.orelse = orelse;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-While(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno, int
-      col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        if (!test) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field test is required for While");
-                return NULL;
-        }
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = While_kind;
-        p->v.While.test = test;
-        p->v.While.body = body;
-        p->v.While.orelse = orelse;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-If(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno, int
-   col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        if (!test) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field test is required for If");
-                return NULL;
-        }
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = If_kind;
-        p->v.If.test = test;
-        p->v.If.body = body;
-        p->v.If.orelse = orelse;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-With(expr_ty context_expr, expr_ty optional_vars, asdl_seq * body, int lineno,
-     int col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        if (!context_expr) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field context_expr is required for With");
-                return NULL;
-        }
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = With_kind;
-        p->v.With.context_expr = context_expr;
-        p->v.With.optional_vars = optional_vars;
-        p->v.With.body = body;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-Raise(expr_ty type, expr_ty inst, expr_ty tback, int lineno, int col_offset,
-      PyArena *arena)
-{
-        stmt_ty p;
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Raise_kind;
-        p->v.Raise.type = type;
-        p->v.Raise.inst = inst;
-        p->v.Raise.tback = tback;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-TryExcept(asdl_seq * body, asdl_seq * handlers, asdl_seq * orelse, int lineno,
-          int col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = TryExcept_kind;
-        p->v.TryExcept.body = body;
-        p->v.TryExcept.handlers = handlers;
-        p->v.TryExcept.orelse = orelse;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-TryFinally(asdl_seq * body, asdl_seq * finalbody, int lineno, int col_offset,
-           PyArena *arena)
-{
-        stmt_ty p;
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = TryFinally_kind;
-        p->v.TryFinally.body = body;
-        p->v.TryFinally.finalbody = finalbody;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-Assert(expr_ty test, expr_ty msg, int lineno, int col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        if (!test) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field test is required for Assert");
-                return NULL;
-        }
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Assert_kind;
-        p->v.Assert.test = test;
-        p->v.Assert.msg = msg;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-Import(asdl_seq * names, int lineno, int col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Import_kind;
-        p->v.Import.names = names;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-ImportFrom(identifier module, asdl_seq * names, int level, int lineno, int
-           col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = ImportFrom_kind;
-        p->v.ImportFrom.module = module;
-        p->v.ImportFrom.names = names;
-        p->v.ImportFrom.level = level;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-Exec(expr_ty body, expr_ty globals, expr_ty locals, int lineno, int col_offset,
-     PyArena *arena)
-{
-        stmt_ty p;
-        if (!body) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field body is required for Exec");
-                return NULL;
-        }
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Exec_kind;
-        p->v.Exec.body = body;
-        p->v.Exec.globals = globals;
-        p->v.Exec.locals = locals;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-Global(asdl_seq * names, int lineno, int col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Global_kind;
-        p->v.Global.names = names;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-Expr(expr_ty value, int lineno, int col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        if (!value) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field value is required for Expr");
-                return NULL;
-        }
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Expr_kind;
-        p->v.Expr.value = value;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-Pass(int lineno, int col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Pass_kind;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-Break(int lineno, int col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Break_kind;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-stmt_ty
-Continue(int lineno, int col_offset, PyArena *arena)
-{
-        stmt_ty p;
-        p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Continue_kind;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-BoolOp(boolop_ty op, asdl_seq * values, int lineno, int col_offset, PyArena
-       *arena)
-{
-        expr_ty p;
-        if (!op) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field op is required for BoolOp");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = BoolOp_kind;
-        p->v.BoolOp.op = op;
-        p->v.BoolOp.values = values;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-BinOp(expr_ty left, operator_ty op, expr_ty right, int lineno, int col_offset,
-      PyArena *arena)
-{
-        expr_ty p;
-        if (!left) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field left is required for BinOp");
-                return NULL;
-        }
-        if (!op) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field op is required for BinOp");
-                return NULL;
-        }
-        if (!right) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field right is required for BinOp");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = BinOp_kind;
-        p->v.BinOp.left = left;
-        p->v.BinOp.op = op;
-        p->v.BinOp.right = right;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-UnaryOp(unaryop_ty op, expr_ty operand, int lineno, int col_offset, PyArena
-        *arena)
-{
-        expr_ty p;
-        if (!op) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field op is required for UnaryOp");
-                return NULL;
-        }
-        if (!operand) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field operand is required for UnaryOp");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = UnaryOp_kind;
-        p->v.UnaryOp.op = op;
-        p->v.UnaryOp.operand = operand;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-Lambda(arguments_ty args, expr_ty body, int lineno, int col_offset, PyArena
-       *arena)
-{
-        expr_ty p;
-        if (!args) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field args is required for Lambda");
-                return NULL;
-        }
-        if (!body) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field body is required for Lambda");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Lambda_kind;
-        p->v.Lambda.args = args;
-        p->v.Lambda.body = body;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-IfExp(expr_ty test, expr_ty body, expr_ty orelse, int lineno, int col_offset,
-      PyArena *arena)
-{
-        expr_ty p;
-        if (!test) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field test is required for IfExp");
-                return NULL;
-        }
-        if (!body) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field body is required for IfExp");
-                return NULL;
-        }
-        if (!orelse) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field orelse is required for IfExp");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = IfExp_kind;
-        p->v.IfExp.test = test;
-        p->v.IfExp.body = body;
-        p->v.IfExp.orelse = orelse;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-Dict(asdl_seq * keys, asdl_seq * values, int lineno, int col_offset, PyArena
-     *arena)
-{
-        expr_ty p;
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Dict_kind;
-        p->v.Dict.keys = keys;
-        p->v.Dict.values = values;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-Set(asdl_seq * elts, int lineno, int col_offset, PyArena *arena)
-{
-        expr_ty p;
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Set_kind;
-        p->v.Set.elts = elts;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-ListComp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset,
-         PyArena *arena)
-{
-        expr_ty p;
-        if (!elt) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field elt is required for ListComp");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = ListComp_kind;
-        p->v.ListComp.elt = elt;
-        p->v.ListComp.generators = generators;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-SetComp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, PyArena
-        *arena)
-{
-        expr_ty p;
-        if (!elt) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field elt is required for SetComp");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = SetComp_kind;
-        p->v.SetComp.elt = elt;
-        p->v.SetComp.generators = generators;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-DictComp(expr_ty key, expr_ty value, asdl_seq * generators, int lineno, int
-         col_offset, PyArena *arena)
-{
-        expr_ty p;
-        if (!key) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field key is required for DictComp");
-                return NULL;
-        }
-        if (!value) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field value is required for DictComp");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = DictComp_kind;
-        p->v.DictComp.key = key;
-        p->v.DictComp.value = value;
-        p->v.DictComp.generators = generators;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset,
-             PyArena *arena)
-{
-        expr_ty p;
-        if (!elt) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field elt is required for GeneratorExp");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = GeneratorExp_kind;
-        p->v.GeneratorExp.elt = elt;
-        p->v.GeneratorExp.generators = generators;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-Yield(expr_ty value, int lineno, int col_offset, PyArena *arena)
-{
-        expr_ty p;
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Yield_kind;
-        p->v.Yield.value = value;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-Compare(expr_ty left, asdl_int_seq * ops, asdl_seq * comparators, int lineno,
-        int col_offset, PyArena *arena)
-{
-        expr_ty p;
-        if (!left) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field left is required for Compare");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Compare_kind;
-        p->v.Compare.left = left;
-        p->v.Compare.ops = ops;
-        p->v.Compare.comparators = comparators;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, expr_ty starargs,
-     expr_ty kwargs, int lineno, int col_offset, PyArena *arena)
-{
-        expr_ty p;
-        if (!func) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field func is required for Call");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Call_kind;
-        p->v.Call.func = func;
-        p->v.Call.args = args;
-        p->v.Call.keywords = keywords;
-        p->v.Call.starargs = starargs;
-        p->v.Call.kwargs = kwargs;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-Repr(expr_ty value, int lineno, int col_offset, PyArena *arena)
-{
-        expr_ty p;
-        if (!value) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field value is required for Repr");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Repr_kind;
-        p->v.Repr.value = value;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-Num(object n, int lineno, int col_offset, PyArena *arena)
-{
-        expr_ty p;
-        if (!n) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field n is required for Num");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Num_kind;
-        p->v.Num.n = n;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-Str(string s, int lineno, int col_offset, PyArena *arena)
-{
-        expr_ty p;
-        if (!s) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field s is required for Str");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Str_kind;
-        p->v.Str.s = s;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int lineno, int
-          col_offset, PyArena *arena)
-{
-        expr_ty p;
-        if (!value) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field value is required for Attribute");
-                return NULL;
-        }
-        if (!attr) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field attr is required for Attribute");
-                return NULL;
-        }
-        if (!ctx) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field ctx is required for Attribute");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Attribute_kind;
-        p->v.Attribute.value = value;
-        p->v.Attribute.attr = attr;
-        p->v.Attribute.ctx = ctx;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-Subscript(expr_ty value, slice_ty slice, expr_context_ty ctx, int lineno, int
-          col_offset, PyArena *arena)
-{
-        expr_ty p;
-        if (!value) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field value is required for Subscript");
-                return NULL;
-        }
-        if (!slice) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field slice is required for Subscript");
-                return NULL;
-        }
-        if (!ctx) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field ctx is required for Subscript");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Subscript_kind;
-        p->v.Subscript.value = value;
-        p->v.Subscript.slice = slice;
-        p->v.Subscript.ctx = ctx;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-Name(identifier id, expr_context_ty ctx, int lineno, int col_offset, PyArena
-     *arena)
-{
-        expr_ty p;
-        if (!id) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field id is required for Name");
-                return NULL;
-        }
-        if (!ctx) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field ctx is required for Name");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Name_kind;
-        p->v.Name.id = id;
-        p->v.Name.ctx = ctx;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-List(asdl_seq * elts, expr_context_ty ctx, int lineno, int col_offset, PyArena
-     *arena)
-{
-        expr_ty p;
-        if (!ctx) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field ctx is required for List");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = List_kind;
-        p->v.List.elts = elts;
-        p->v.List.ctx = ctx;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-expr_ty
-Tuple(asdl_seq * elts, expr_context_ty ctx, int lineno, int col_offset, PyArena
-      *arena)
-{
-        expr_ty p;
-        if (!ctx) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field ctx is required for Tuple");
-                return NULL;
-        }
-        p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Tuple_kind;
-        p->v.Tuple.elts = elts;
-        p->v.Tuple.ctx = ctx;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-slice_ty
-Ellipsis(PyArena *arena)
-{
-        slice_ty p;
-        p = (slice_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Ellipsis_kind;
-        return p;
-}
-
-slice_ty
-Slice(expr_ty lower, expr_ty upper, expr_ty step, PyArena *arena)
-{
-        slice_ty p;
-        p = (slice_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Slice_kind;
-        p->v.Slice.lower = lower;
-        p->v.Slice.upper = upper;
-        p->v.Slice.step = step;
-        return p;
-}
-
-slice_ty
-ExtSlice(asdl_seq * dims, PyArena *arena)
-{
-        slice_ty p;
-        p = (slice_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = ExtSlice_kind;
-        p->v.ExtSlice.dims = dims;
-        return p;
-}
-
-slice_ty
-Index(expr_ty value, PyArena *arena)
-{
-        slice_ty p;
-        if (!value) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field value is required for Index");
-                return NULL;
-        }
-        p = (slice_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = Index_kind;
-        p->v.Index.value = value;
-        return p;
-}
-
-comprehension_ty
-comprehension(expr_ty target, expr_ty iter, asdl_seq * ifs, PyArena *arena)
-{
-        comprehension_ty p;
-        if (!target) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field target is required for comprehension");
-                return NULL;
-        }
-        if (!iter) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field iter is required for comprehension");
-                return NULL;
-        }
-        p = (comprehension_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->target = target;
-        p->iter = iter;
-        p->ifs = ifs;
-        return p;
-}
-
-excepthandler_ty
-ExceptHandler(expr_ty type, expr_ty name, asdl_seq * body, int lineno, int
-              col_offset, PyArena *arena)
-{
-        excepthandler_ty p;
-        p = (excepthandler_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->kind = ExceptHandler_kind;
-        p->v.ExceptHandler.type = type;
-        p->v.ExceptHandler.name = name;
-        p->v.ExceptHandler.body = body;
-        p->lineno = lineno;
-        p->col_offset = col_offset;
-        return p;
-}
-
-arguments_ty
-arguments(asdl_seq * args, identifier vararg, identifier kwarg, asdl_seq *
-          defaults, PyArena *arena)
-{
-        arguments_ty p;
-        p = (arguments_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->args = args;
-        p->vararg = vararg;
-        p->kwarg = kwarg;
-        p->defaults = defaults;
-        return p;
-}
-
-keyword_ty
-keyword(identifier arg, expr_ty value, PyArena *arena)
-{
-        keyword_ty p;
-        if (!arg) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field arg is required for keyword");
-                return NULL;
-        }
-        if (!value) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field value is required for keyword");
-                return NULL;
-        }
-        p = (keyword_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->arg = arg;
-        p->value = value;
-        return p;
-}
-
-alias_ty
-alias(identifier name, identifier asname, PyArena *arena)
-{
-        alias_ty p;
-        if (!name) {
-                PyErr_SetString(PyExc_ValueError,
-                                "field name is required for alias");
-                return NULL;
-        }
-        p = (alias_ty)PyArena_Malloc(arena, sizeof(*p));
-        if (!p)
-                return NULL;
-        p->name = name;
-        p->asname = asname;
-        return p;
-}
-
-
-PyObject*
-ast2obj_mod(void* _o)
-{
-        mod_ty o = (mod_ty)_o;
-        PyObject *result = NULL, *value = NULL;
-        if (!o) {
-                Py_INCREF(Py_None);
-                return Py_None;
-        }
-
-        switch (o->kind) {
-        case Module_kind:
-                result = PyType_GenericNew(Module_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_list(o->v.Module.body, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Interactive_kind:
-                result = PyType_GenericNew(Interactive_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_list(o->v.Interactive.body, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Expression_kind:
-                result = PyType_GenericNew(Expression_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Expression.body);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Suite_kind:
-                result = PyType_GenericNew(Suite_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_list(o->v.Suite.body, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        }
-        return result;
-failed:
-        Py_XDECREF(value);
-        Py_XDECREF(result);
-        return NULL;
-}
-
-PyObject*
-ast2obj_stmt(void* _o)
-{
-        stmt_ty o = (stmt_ty)_o;
-        PyObject *result = NULL, *value = NULL;
-        if (!o) {
-                Py_INCREF(Py_None);
-                return Py_None;
-        }
-
-        switch (o->kind) {
-        case FunctionDef_kind:
-                result = PyType_GenericNew(FunctionDef_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_identifier(o->v.FunctionDef.name);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "name", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_arguments(o->v.FunctionDef.args);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "args", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.FunctionDef.body, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.FunctionDef.decorator_list,
-                                     ast2obj_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "decorator_list", value) ==
-                    -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case ClassDef_kind:
-                result = PyType_GenericNew(ClassDef_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_identifier(o->v.ClassDef.name);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "name", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.ClassDef.bases, ast2obj_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "bases", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.ClassDef.body, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.ClassDef.decorator_list,
-                                     ast2obj_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "decorator_list", value) ==
-                    -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Return_kind:
-                result = PyType_GenericNew(Return_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Return.value);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "value", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Delete_kind:
-                result = PyType_GenericNew(Delete_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_list(o->v.Delete.targets, ast2obj_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "targets", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Assign_kind:
-                result = PyType_GenericNew(Assign_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_list(o->v.Assign.targets, ast2obj_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "targets", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.Assign.value);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "value", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case AugAssign_kind:
-                result = PyType_GenericNew(AugAssign_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.AugAssign.target);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "target", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_operator(o->v.AugAssign.op);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "op", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.AugAssign.value);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "value", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Print_kind:
-                result = PyType_GenericNew(Print_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Print.dest);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "dest", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.Print.values, ast2obj_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "values", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_bool(o->v.Print.nl);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "nl", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case For_kind:
-                result = PyType_GenericNew(For_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.For.target);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "target", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.For.iter);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "iter", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.For.body, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.For.orelse, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "orelse", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case While_kind:
-                result = PyType_GenericNew(While_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.While.test);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "test", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.While.body, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.While.orelse, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "orelse", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case If_kind:
-                result = PyType_GenericNew(If_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.If.test);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "test", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.If.body, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.If.orelse, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "orelse", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case With_kind:
-                result = PyType_GenericNew(With_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.With.context_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "context_expr", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.With.optional_vars);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "optional_vars", value) ==
-                    -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.With.body, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Raise_kind:
-                result = PyType_GenericNew(Raise_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Raise.type);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "type", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.Raise.inst);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "inst", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.Raise.tback);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "tback", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case TryExcept_kind:
-                result = PyType_GenericNew(TryExcept_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_list(o->v.TryExcept.body, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.TryExcept.handlers,
-                                     ast2obj_excepthandler);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "handlers", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.TryExcept.orelse, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "orelse", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case TryFinally_kind:
-                result = PyType_GenericNew(TryFinally_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_list(o->v.TryFinally.body, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.TryFinally.finalbody, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "finalbody", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Assert_kind:
-                result = PyType_GenericNew(Assert_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Assert.test);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "test", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.Assert.msg);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "msg", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Import_kind:
-                result = PyType_GenericNew(Import_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_list(o->v.Import.names, ast2obj_alias);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "names", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case ImportFrom_kind:
-                result = PyType_GenericNew(ImportFrom_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_identifier(o->v.ImportFrom.module);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "module", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.ImportFrom.names, ast2obj_alias);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "names", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_int(o->v.ImportFrom.level);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "level", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Exec_kind:
-                result = PyType_GenericNew(Exec_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Exec.body);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.Exec.globals);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "globals", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.Exec.locals);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "locals", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Global_kind:
-                result = PyType_GenericNew(Global_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_list(o->v.Global.names, ast2obj_identifier);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "names", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Expr_kind:
-                result = PyType_GenericNew(Expr_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Expr.value);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "value", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Pass_kind:
-                result = PyType_GenericNew(Pass_type, NULL, NULL);
-                if (!result) goto failed;
-                break;
-        case Break_kind:
-                result = PyType_GenericNew(Break_type, NULL, NULL);
-                if (!result) goto failed;
-                break;
-        case Continue_kind:
-                result = PyType_GenericNew(Continue_type, NULL, NULL);
-                if (!result) goto failed;
-                break;
-        }
-        value = ast2obj_int(o->lineno);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "lineno", value) < 0)
-                goto failed;
-        Py_DECREF(value);
-        value = ast2obj_int(o->col_offset);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "col_offset", value) < 0)
-                goto failed;
-        Py_DECREF(value);
-        return result;
-failed:
-        Py_XDECREF(value);
-        Py_XDECREF(result);
-        return NULL;
-}
-
-PyObject*
-ast2obj_expr(void* _o)
-{
-        expr_ty o = (expr_ty)_o;
-        PyObject *result = NULL, *value = NULL;
-        if (!o) {
-                Py_INCREF(Py_None);
-                return Py_None;
-        }
-
-        switch (o->kind) {
-        case BoolOp_kind:
-                result = PyType_GenericNew(BoolOp_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_boolop(o->v.BoolOp.op);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "op", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.BoolOp.values, ast2obj_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "values", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case BinOp_kind:
-                result = PyType_GenericNew(BinOp_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.BinOp.left);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "left", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_operator(o->v.BinOp.op);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "op", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.BinOp.right);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "right", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case UnaryOp_kind:
-                result = PyType_GenericNew(UnaryOp_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_unaryop(o->v.UnaryOp.op);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "op", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.UnaryOp.operand);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "operand", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Lambda_kind:
-                result = PyType_GenericNew(Lambda_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_arguments(o->v.Lambda.args);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "args", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.Lambda.body);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case IfExp_kind:
-                result = PyType_GenericNew(IfExp_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.IfExp.test);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "test", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.IfExp.body);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.IfExp.orelse);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "orelse", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Dict_kind:
-                result = PyType_GenericNew(Dict_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_list(o->v.Dict.keys, ast2obj_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "keys", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.Dict.values, ast2obj_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "values", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Set_kind:
-                result = PyType_GenericNew(Set_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_list(o->v.Set.elts, ast2obj_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "elts", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case ListComp_kind:
-                result = PyType_GenericNew(ListComp_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.ListComp.elt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "elt", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.ListComp.generators,
-                                     ast2obj_comprehension);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "generators", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case SetComp_kind:
-                result = PyType_GenericNew(SetComp_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.SetComp.elt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "elt", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.SetComp.generators,
-                                     ast2obj_comprehension);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "generators", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case DictComp_kind:
-                result = PyType_GenericNew(DictComp_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.DictComp.key);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "key", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.DictComp.value);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "value", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.DictComp.generators,
-                                     ast2obj_comprehension);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "generators", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case GeneratorExp_kind:
-                result = PyType_GenericNew(GeneratorExp_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.GeneratorExp.elt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "elt", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.GeneratorExp.generators,
-                                     ast2obj_comprehension);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "generators", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Yield_kind:
-                result = PyType_GenericNew(Yield_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Yield.value);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "value", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Compare_kind:
-                result = PyType_GenericNew(Compare_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Compare.left);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "left", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                {
-                        int i, n = asdl_seq_LEN(o->v.Compare.ops);
-                        value = PyList_New(n);
-                        if (!value) goto failed;
-                        for(i = 0; i < n; i++)
-                                PyList_SET_ITEM(value, i, ast2obj_cmpop((cmpop_ty)asdl_seq_GET(o->v.Compare.ops, i)));
-                }
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "ops", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.Compare.comparators, ast2obj_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "comparators", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Call_kind:
-                result = PyType_GenericNew(Call_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Call.func);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "func", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.Call.args, ast2obj_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "args", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.Call.keywords, ast2obj_keyword);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "keywords", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.Call.starargs);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "starargs", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.Call.kwargs);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "kwargs", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Repr_kind:
-                result = PyType_GenericNew(Repr_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Repr.value);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "value", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Num_kind:
-                result = PyType_GenericNew(Num_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_object(o->v.Num.n);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "n", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Str_kind:
-                result = PyType_GenericNew(Str_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_string(o->v.Str.s);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "s", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Attribute_kind:
-                result = PyType_GenericNew(Attribute_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Attribute.value);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "value", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_identifier(o->v.Attribute.attr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "attr", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr_context(o->v.Attribute.ctx);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "ctx", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Subscript_kind:
-                result = PyType_GenericNew(Subscript_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Subscript.value);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "value", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_slice(o->v.Subscript.slice);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "slice", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr_context(o->v.Subscript.ctx);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "ctx", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Name_kind:
-                result = PyType_GenericNew(Name_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_identifier(o->v.Name.id);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "id", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr_context(o->v.Name.ctx);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "ctx", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case List_kind:
-                result = PyType_GenericNew(List_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_list(o->v.List.elts, ast2obj_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "elts", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr_context(o->v.List.ctx);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "ctx", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Tuple_kind:
-                result = PyType_GenericNew(Tuple_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_list(o->v.Tuple.elts, ast2obj_expr);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "elts", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr_context(o->v.Tuple.ctx);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "ctx", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        }
-        value = ast2obj_int(o->lineno);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "lineno", value) < 0)
-                goto failed;
-        Py_DECREF(value);
-        value = ast2obj_int(o->col_offset);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "col_offset", value) < 0)
-                goto failed;
-        Py_DECREF(value);
-        return result;
-failed:
-        Py_XDECREF(value);
-        Py_XDECREF(result);
-        return NULL;
-}
-
-PyObject* ast2obj_expr_context(expr_context_ty o)
-{
-        switch(o) {
-                case Load:
-                        Py_INCREF(Load_singleton);
-                        return Load_singleton;
-                case Store:
-                        Py_INCREF(Store_singleton);
-                        return Store_singleton;
-                case Del:
-                        Py_INCREF(Del_singleton);
-                        return Del_singleton;
-                case AugLoad:
-                        Py_INCREF(AugLoad_singleton);
-                        return AugLoad_singleton;
-                case AugStore:
-                        Py_INCREF(AugStore_singleton);
-                        return AugStore_singleton;
-                case Param:
-                        Py_INCREF(Param_singleton);
-                        return Param_singleton;
-                default:
-                        /* should never happen, but just in case ... */
-                        PyErr_Format(PyExc_SystemError, "unknown expr_context found");
-                        return NULL;
-        }
-}
-PyObject*
-ast2obj_slice(void* _o)
-{
-        slice_ty o = (slice_ty)_o;
-        PyObject *result = NULL, *value = NULL;
-        if (!o) {
-                Py_INCREF(Py_None);
-                return Py_None;
-        }
-
-        switch (o->kind) {
-        case Ellipsis_kind:
-                result = PyType_GenericNew(Ellipsis_type, NULL, NULL);
-                if (!result) goto failed;
-                break;
-        case Slice_kind:
-                result = PyType_GenericNew(Slice_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Slice.lower);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "lower", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.Slice.upper);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "upper", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.Slice.step);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "step", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case ExtSlice_kind:
-                result = PyType_GenericNew(ExtSlice_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_list(o->v.ExtSlice.dims, ast2obj_slice);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "dims", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        case Index_kind:
-                result = PyType_GenericNew(Index_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.Index.value);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "value", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        }
-        return result;
-failed:
-        Py_XDECREF(value);
-        Py_XDECREF(result);
-        return NULL;
-}
-
-PyObject* ast2obj_boolop(boolop_ty o)
-{
-        switch(o) {
-                case And:
-                        Py_INCREF(And_singleton);
-                        return And_singleton;
-                case Or:
-                        Py_INCREF(Or_singleton);
-                        return Or_singleton;
-                default:
-                        /* should never happen, but just in case ... */
-                        PyErr_Format(PyExc_SystemError, "unknown boolop found");
-                        return NULL;
-        }
-}
-PyObject* ast2obj_operator(operator_ty o)
-{
-        switch(o) {
-                case Add:
-                        Py_INCREF(Add_singleton);
-                        return Add_singleton;
-                case Sub:
-                        Py_INCREF(Sub_singleton);
-                        return Sub_singleton;
-                case Mult:
-                        Py_INCREF(Mult_singleton);
-                        return Mult_singleton;
-                case Div:
-                        Py_INCREF(Div_singleton);
-                        return Div_singleton;
-                case Mod:
-                        Py_INCREF(Mod_singleton);
-                        return Mod_singleton;
-                case Pow:
-                        Py_INCREF(Pow_singleton);
-                        return Pow_singleton;
-                case LShift:
-                        Py_INCREF(LShift_singleton);
-                        return LShift_singleton;
-                case RShift:
-                        Py_INCREF(RShift_singleton);
-                        return RShift_singleton;
-                case BitOr:
-                        Py_INCREF(BitOr_singleton);
-                        return BitOr_singleton;
-                case BitXor:
-                        Py_INCREF(BitXor_singleton);
-                        return BitXor_singleton;
-                case BitAnd:
-                        Py_INCREF(BitAnd_singleton);
-                        return BitAnd_singleton;
-                case FloorDiv:
-                        Py_INCREF(FloorDiv_singleton);
-                        return FloorDiv_singleton;
-                default:
-                        /* should never happen, but just in case ... */
-                        PyErr_Format(PyExc_SystemError, "unknown operator found");
-                        return NULL;
-        }
-}
-PyObject* ast2obj_unaryop(unaryop_ty o)
-{
-        switch(o) {
-                case Invert:
-                        Py_INCREF(Invert_singleton);
-                        return Invert_singleton;
-                case Not:
-                        Py_INCREF(Not_singleton);
-                        return Not_singleton;
-                case UAdd:
-                        Py_INCREF(UAdd_singleton);
-                        return UAdd_singleton;
-                case USub:
-                        Py_INCREF(USub_singleton);
-                        return USub_singleton;
-                default:
-                        /* should never happen, but just in case ... */
-                        PyErr_Format(PyExc_SystemError, "unknown unaryop found");
-                        return NULL;
-        }
-}
-PyObject* ast2obj_cmpop(cmpop_ty o)
-{
-        switch(o) {
-                case Eq:
-                        Py_INCREF(Eq_singleton);
-                        return Eq_singleton;
-                case NotEq:
-                        Py_INCREF(NotEq_singleton);
-                        return NotEq_singleton;
-                case Lt:
-                        Py_INCREF(Lt_singleton);
-                        return Lt_singleton;
-                case LtE:
-                        Py_INCREF(LtE_singleton);
-                        return LtE_singleton;
-                case Gt:
-                        Py_INCREF(Gt_singleton);
-                        return Gt_singleton;
-                case GtE:
-                        Py_INCREF(GtE_singleton);
-                        return GtE_singleton;
-                case Is:
-                        Py_INCREF(Is_singleton);
-                        return Is_singleton;
-                case IsNot:
-                        Py_INCREF(IsNot_singleton);
-                        return IsNot_singleton;
-                case In:
-                        Py_INCREF(In_singleton);
-                        return In_singleton;
-                case NotIn:
-                        Py_INCREF(NotIn_singleton);
-                        return NotIn_singleton;
-                default:
-                        /* should never happen, but just in case ... */
-                        PyErr_Format(PyExc_SystemError, "unknown cmpop found");
-                        return NULL;
-        }
-}
-PyObject*
-ast2obj_comprehension(void* _o)
-{
-        comprehension_ty o = (comprehension_ty)_o;
-        PyObject *result = NULL, *value = NULL;
-        if (!o) {
-                Py_INCREF(Py_None);
-                return Py_None;
-        }
-
-        result = PyType_GenericNew(comprehension_type, NULL, NULL);
-        if (!result) return NULL;
-        value = ast2obj_expr(o->target);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "target", value) == -1)
-                goto failed;
-        Py_DECREF(value);
-        value = ast2obj_expr(o->iter);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "iter", value) == -1)
-                goto failed;
-        Py_DECREF(value);
-        value = ast2obj_list(o->ifs, ast2obj_expr);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "ifs", value) == -1)
-                goto failed;
-        Py_DECREF(value);
-        return result;
-failed:
-        Py_XDECREF(value);
-        Py_XDECREF(result);
-        return NULL;
-}
-
-PyObject*
-ast2obj_excepthandler(void* _o)
-{
-        excepthandler_ty o = (excepthandler_ty)_o;
-        PyObject *result = NULL, *value = NULL;
-        if (!o) {
-                Py_INCREF(Py_None);
-                return Py_None;
-        }
-
-        switch (o->kind) {
-        case ExceptHandler_kind:
-                result = PyType_GenericNew(ExceptHandler_type, NULL, NULL);
-                if (!result) goto failed;
-                value = ast2obj_expr(o->v.ExceptHandler.type);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "type", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_expr(o->v.ExceptHandler.name);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "name", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                value = ast2obj_list(o->v.ExceptHandler.body, ast2obj_stmt);
-                if (!value) goto failed;
-                if (PyObject_SetAttrString(result, "body", value) == -1)
-                        goto failed;
-                Py_DECREF(value);
-                break;
-        }
-        value = ast2obj_int(o->lineno);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "lineno", value) < 0)
-                goto failed;
-        Py_DECREF(value);
-        value = ast2obj_int(o->col_offset);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "col_offset", value) < 0)
-                goto failed;
-        Py_DECREF(value);
-        return result;
-failed:
-        Py_XDECREF(value);
-        Py_XDECREF(result);
-        return NULL;
-}
-
-PyObject*
-ast2obj_arguments(void* _o)
-{
-        arguments_ty o = (arguments_ty)_o;
-        PyObject *result = NULL, *value = NULL;
-        if (!o) {
-                Py_INCREF(Py_None);
-                return Py_None;
-        }
-
-        result = PyType_GenericNew(arguments_type, NULL, NULL);
-        if (!result) return NULL;
-        value = ast2obj_list(o->args, ast2obj_expr);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "args", value) == -1)
-                goto failed;
-        Py_DECREF(value);
-        value = ast2obj_identifier(o->vararg);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "vararg", value) == -1)
-                goto failed;
-        Py_DECREF(value);
-        value = ast2obj_identifier(o->kwarg);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "kwarg", value) == -1)
-                goto failed;
-        Py_DECREF(value);
-        value = ast2obj_list(o->defaults, ast2obj_expr);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "defaults", value) == -1)
-                goto failed;
-        Py_DECREF(value);
-        return result;
-failed:
-        Py_XDECREF(value);
-        Py_XDECREF(result);
-        return NULL;
-}
-
-PyObject*
-ast2obj_keyword(void* _o)
-{
-        keyword_ty o = (keyword_ty)_o;
-        PyObject *result = NULL, *value = NULL;
-        if (!o) {
-                Py_INCREF(Py_None);
-                return Py_None;
-        }
-
-        result = PyType_GenericNew(keyword_type, NULL, NULL);
-        if (!result) return NULL;
-        value = ast2obj_identifier(o->arg);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "arg", value) == -1)
-                goto failed;
-        Py_DECREF(value);
-        value = ast2obj_expr(o->value);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "value", value) == -1)
-                goto failed;
-        Py_DECREF(value);
-        return result;
-failed:
-        Py_XDECREF(value);
-        Py_XDECREF(result);
-        return NULL;
-}
-
-PyObject*
-ast2obj_alias(void* _o)
-{
-        alias_ty o = (alias_ty)_o;
-        PyObject *result = NULL, *value = NULL;
-        if (!o) {
-                Py_INCREF(Py_None);
-                return Py_None;
-        }
-
-        result = PyType_GenericNew(alias_type, NULL, NULL);
-        if (!result) return NULL;
-        value = ast2obj_identifier(o->name);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "name", value) == -1)
-                goto failed;
-        Py_DECREF(value);
-        value = ast2obj_identifier(o->asname);
-        if (!value) goto failed;
-        if (PyObject_SetAttrString(result, "asname", value) == -1)
-                goto failed;
-        Py_DECREF(value);
-        return result;
-failed:
-        Py_XDECREF(value);
-        Py_XDECREF(result);
-        return NULL;
-}
-
-
-int
-obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena)
-{
-        PyObject* tmp = NULL;
-        int isinstance;
-
-
-        if (obj == Py_None) {
-                *out = NULL;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Module_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                asdl_seq* body;
-
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Module field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        body = asdl_seq_new(len, arena);
-                        if (body == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(body, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Module");
-                        return 1;
-                }
-                *out = Module(body, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Interactive_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                asdl_seq* body;
-
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Interactive field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        body = asdl_seq_new(len, arena);
-                        if (body == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(body, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Interactive");
-                        return 1;
-                }
-                *out = Interactive(body, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Expression_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty body;
-
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &body, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Expression");
-                        return 1;
-                }
-                *out = Expression(body, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Suite_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                asdl_seq* body;
-
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Suite field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        body = asdl_seq_new(len, arena);
-                        if (body == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(body, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Suite");
-                        return 1;
-                }
-                *out = Suite(body, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-
-        tmp = PyObject_Repr(obj);
-        if (tmp == NULL) goto failed;
-        PyErr_Format(PyExc_TypeError, "expected some sort of mod, but got %.400s", PyString_AS_STRING(tmp));
-failed:
-        Py_XDECREF(tmp);
-        return 1;
-}
-
-int
-obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
-{
-        PyObject* tmp = NULL;
-        int isinstance;
-
-        int lineno;
-        int col_offset;
-
-        if (obj == Py_None) {
-                *out = NULL;
-                return 0;
-        }
-        if (PyObject_HasAttrString(obj, "lineno")) {
-                int res;
-                tmp = PyObject_GetAttrString(obj, "lineno");
-                if (tmp == NULL) goto failed;
-                res = obj2ast_int(tmp, &lineno, arena);
-                if (res != 0) goto failed;
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from stmt");
-                return 1;
-        }
-        if (PyObject_HasAttrString(obj, "col_offset")) {
-                int res;
-                tmp = PyObject_GetAttrString(obj, "col_offset");
-                if (tmp == NULL) goto failed;
-                res = obj2ast_int(tmp, &col_offset, arena);
-                if (res != 0) goto failed;
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from stmt");
-                return 1;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)FunctionDef_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                identifier name;
-                arguments_ty args;
-                asdl_seq* body;
-                asdl_seq* decorator_list;
-
-                if (PyObject_HasAttrString(obj, "name")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "name");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_identifier(tmp, &name, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from FunctionDef");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "args")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "args");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_arguments(tmp, &args, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from FunctionDef");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "FunctionDef field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        body = asdl_seq_new(len, arena);
-                        if (body == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(body, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from FunctionDef");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "decorator_list")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "decorator_list");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "FunctionDef field \"decorator_list\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        decorator_list = asdl_seq_new(len, arena);
-                        if (decorator_list == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                expr_ty value;
-                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(decorator_list, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from FunctionDef");
-                        return 1;
-                }
-                *out = FunctionDef(name, args, body, decorator_list, lineno,
-                                   col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)ClassDef_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                identifier name;
-                asdl_seq* bases;
-                asdl_seq* body;
-                asdl_seq* decorator_list;
-
-                if (PyObject_HasAttrString(obj, "name")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "name");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_identifier(tmp, &name, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from ClassDef");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "bases")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "bases");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "ClassDef field \"bases\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        bases = asdl_seq_new(len, arena);
-                        if (bases == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                expr_ty value;
-                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(bases, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"bases\" missing from ClassDef");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "ClassDef field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        body = asdl_seq_new(len, arena);
-                        if (body == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(body, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from ClassDef");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "decorator_list")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "decorator_list");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "ClassDef field \"decorator_list\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        decorator_list = asdl_seq_new(len, arena);
-                        if (decorator_list == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                expr_ty value;
-                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(decorator_list, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from ClassDef");
-                        return 1;
-                }
-                *out = ClassDef(name, bases, body, decorator_list, lineno,
-                                col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Return_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty value;
-
-                if (PyObject_HasAttrString(obj, "value")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "value");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &value, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        value = NULL;
-                }
-                *out = Return(value, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Delete_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                asdl_seq* targets;
-
-                if (PyObject_HasAttrString(obj, "targets")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "targets");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Delete field \"targets\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        targets = asdl_seq_new(len, arena);
-                        if (targets == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                expr_ty value;
-                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(targets, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"targets\" missing from Delete");
-                        return 1;
-                }
-                *out = Delete(targets, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Assign_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                asdl_seq* targets;
-                expr_ty value;
-
-                if (PyObject_HasAttrString(obj, "targets")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "targets");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Assign field \"targets\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        targets = asdl_seq_new(len, arena);
-                        if (targets == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                expr_ty value;
-                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(targets, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"targets\" missing from Assign");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "value")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "value");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &value, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Assign");
-                        return 1;
-                }
-                *out = Assign(targets, value, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)AugAssign_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty target;
-                operator_ty op;
-                expr_ty value;
-
-                if (PyObject_HasAttrString(obj, "target")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "target");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &target, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from AugAssign");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "op")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "op");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_operator(tmp, &op, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from AugAssign");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "value")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "value");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &value, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from AugAssign");
-                        return 1;
-                }
-                *out = AugAssign(target, op, value, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Print_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty dest;
-                asdl_seq* values;
-                bool nl;
-
-                if (PyObject_HasAttrString(obj, "dest")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "dest");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &dest, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        dest = NULL;
-                }
-                if (PyObject_HasAttrString(obj, "values")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "values");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Print field \"values\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        values = asdl_seq_new(len, arena);
-                        if (values == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                expr_ty value;
-                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(values, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"values\" missing from Print");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "nl")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "nl");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_bool(tmp, &nl, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"nl\" missing from Print");
-                        return 1;
-                }
-                *out = Print(dest, values, nl, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)For_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty target;
-                expr_ty iter;
-                asdl_seq* body;
-                asdl_seq* orelse;
-
-                if (PyObject_HasAttrString(obj, "target")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "target");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &target, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from For");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "iter")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "iter");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &iter, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"iter\" missing from For");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "For field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        body = asdl_seq_new(len, arena);
-                        if (body == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(body, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from For");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "orelse")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "orelse");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "For field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        orelse = asdl_seq_new(len, arena);
-                        if (orelse == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(orelse, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from For");
-                        return 1;
-                }
-                *out = For(target, iter, body, orelse, lineno, col_offset,
-                           arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)While_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty test;
-                asdl_seq* body;
-                asdl_seq* orelse;
-
-                if (PyObject_HasAttrString(obj, "test")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "test");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &test, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from While");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "While field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        body = asdl_seq_new(len, arena);
-                        if (body == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(body, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from While");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "orelse")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "orelse");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "While field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        orelse = asdl_seq_new(len, arena);
-                        if (orelse == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(orelse, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from While");
-                        return 1;
-                }
-                *out = While(test, body, orelse, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)If_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty test;
-                asdl_seq* body;
-                asdl_seq* orelse;
-
-                if (PyObject_HasAttrString(obj, "test")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "test");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &test, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from If");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "If field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        body = asdl_seq_new(len, arena);
-                        if (body == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(body, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from If");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "orelse")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "orelse");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "If field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        orelse = asdl_seq_new(len, arena);
-                        if (orelse == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(orelse, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from If");
-                        return 1;
-                }
-                *out = If(test, body, orelse, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)With_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty context_expr;
-                expr_ty optional_vars;
-                asdl_seq* body;
-
-                if (PyObject_HasAttrString(obj, "context_expr")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "context_expr");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &context_expr, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"context_expr\" missing from With");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "optional_vars")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "optional_vars");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &optional_vars, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        optional_vars = NULL;
-                }
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "With field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        body = asdl_seq_new(len, arena);
-                        if (body == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(body, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from With");
-                        return 1;
-                }
-                *out = With(context_expr, optional_vars, body, lineno,
-                            col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Raise_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty type;
-                expr_ty inst;
-                expr_ty tback;
-
-                if (PyObject_HasAttrString(obj, "type")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "type");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &type, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        type = NULL;
-                }
-                if (PyObject_HasAttrString(obj, "inst")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "inst");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &inst, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        inst = NULL;
-                }
-                if (PyObject_HasAttrString(obj, "tback")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "tback");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &tback, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        tback = NULL;
-                }
-                *out = Raise(type, inst, tback, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)TryExcept_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                asdl_seq* body;
-                asdl_seq* handlers;
-                asdl_seq* orelse;
-
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "TryExcept field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        body = asdl_seq_new(len, arena);
-                        if (body == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(body, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from TryExcept");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "handlers")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "handlers");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "TryExcept field \"handlers\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        handlers = asdl_seq_new(len, arena);
-                        if (handlers == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                excepthandler_ty value;
-                                res = obj2ast_excepthandler(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(handlers, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"handlers\" missing from TryExcept");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "orelse")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "orelse");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "TryExcept field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        orelse = asdl_seq_new(len, arena);
-                        if (orelse == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(orelse, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from TryExcept");
-                        return 1;
-                }
-                *out = TryExcept(body, handlers, orelse, lineno, col_offset,
-                                 arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)TryFinally_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                asdl_seq* body;
-                asdl_seq* finalbody;
-
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "TryFinally field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        body = asdl_seq_new(len, arena);
-                        if (body == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(body, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from TryFinally");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "finalbody")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "finalbody");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "TryFinally field \"finalbody\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        finalbody = asdl_seq_new(len, arena);
-                        if (finalbody == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(finalbody, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"finalbody\" missing from TryFinally");
-                        return 1;
-                }
-                *out = TryFinally(body, finalbody, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Assert_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty test;
-                expr_ty msg;
-
-                if (PyObject_HasAttrString(obj, "test")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "test");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &test, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from Assert");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "msg")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "msg");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &msg, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        msg = NULL;
-                }
-                *out = Assert(test, msg, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Import_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                asdl_seq* names;
-
-                if (PyObject_HasAttrString(obj, "names")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "names");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Import field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        names = asdl_seq_new(len, arena);
-                        if (names == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                alias_ty value;
-                                res = obj2ast_alias(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(names, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from Import");
-                        return 1;
-                }
-                *out = Import(names, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)ImportFrom_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                identifier module;
-                asdl_seq* names;
-                int level;
-
-                if (PyObject_HasAttrString(obj, "module")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "module");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_identifier(tmp, &module, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        module = NULL;
-                }
-                if (PyObject_HasAttrString(obj, "names")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "names");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "ImportFrom field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        names = asdl_seq_new(len, arena);
-                        if (names == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                alias_ty value;
-                                res = obj2ast_alias(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(names, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from ImportFrom");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "level")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "level");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_int(tmp, &level, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        level = 0;
-                }
-                *out = ImportFrom(module, names, level, lineno, col_offset,
-                                  arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Exec_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty body;
-                expr_ty globals;
-                expr_ty locals;
-
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &body, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Exec");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "globals")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "globals");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &globals, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        globals = NULL;
-                }
-                if (PyObject_HasAttrString(obj, "locals")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "locals");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &locals, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        locals = NULL;
-                }
-                *out = Exec(body, globals, locals, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Global_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                asdl_seq* names;
-
-                if (PyObject_HasAttrString(obj, "names")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "names");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Global field \"names\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        names = asdl_seq_new(len, arena);
-                        if (names == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                identifier value;
-                                res = obj2ast_identifier(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(names, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from Global");
-                        return 1;
-                }
-                *out = Global(names, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Expr_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty value;
-
-                if (PyObject_HasAttrString(obj, "value")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "value");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &value, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Expr");
-                        return 1;
-                }
-                *out = Expr(value, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Pass_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-
-                *out = Pass(lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Break_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-
-                *out = Break(lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Continue_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-
-                *out = Continue(lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-
-        tmp = PyObject_Repr(obj);
-        if (tmp == NULL) goto failed;
-        PyErr_Format(PyExc_TypeError, "expected some sort of stmt, but got %.400s", PyString_AS_STRING(tmp));
-failed:
-        Py_XDECREF(tmp);
-        return 1;
-}
-
-int
-obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
-{
-        PyObject* tmp = NULL;
-        int isinstance;
-
-        int lineno;
-        int col_offset;
-
-        if (obj == Py_None) {
-                *out = NULL;
-                return 0;
-        }
-        if (PyObject_HasAttrString(obj, "lineno")) {
-                int res;
-                tmp = PyObject_GetAttrString(obj, "lineno");
-                if (tmp == NULL) goto failed;
-                res = obj2ast_int(tmp, &lineno, arena);
-                if (res != 0) goto failed;
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from expr");
-                return 1;
-        }
-        if (PyObject_HasAttrString(obj, "col_offset")) {
-                int res;
-                tmp = PyObject_GetAttrString(obj, "col_offset");
-                if (tmp == NULL) goto failed;
-                res = obj2ast_int(tmp, &col_offset, arena);
-                if (res != 0) goto failed;
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from expr");
-                return 1;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)BoolOp_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                boolop_ty op;
-                asdl_seq* values;
-
-                if (PyObject_HasAttrString(obj, "op")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "op");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_boolop(tmp, &op, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from BoolOp");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "values")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "values");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "BoolOp field \"values\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        values = asdl_seq_new(len, arena);
-                        if (values == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                expr_ty value;
-                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(values, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"values\" missing from BoolOp");
-                        return 1;
-                }
-                *out = BoolOp(op, values, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)BinOp_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty left;
-                operator_ty op;
-                expr_ty right;
-
-                if (PyObject_HasAttrString(obj, "left")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "left");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &left, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"left\" missing from BinOp");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "op")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "op");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_operator(tmp, &op, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from BinOp");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "right")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "right");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &right, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"right\" missing from BinOp");
-                        return 1;
-                }
-                *out = BinOp(left, op, right, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)UnaryOp_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                unaryop_ty op;
-                expr_ty operand;
-
-                if (PyObject_HasAttrString(obj, "op")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "op");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_unaryop(tmp, &op, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"op\" missing from UnaryOp");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "operand")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "operand");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &operand, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"operand\" missing from UnaryOp");
-                        return 1;
-                }
-                *out = UnaryOp(op, operand, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Lambda_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                arguments_ty args;
-                expr_ty body;
-
-                if (PyObject_HasAttrString(obj, "args")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "args");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_arguments(tmp, &args, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from Lambda");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &body, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from Lambda");
-                        return 1;
-                }
-                *out = Lambda(args, body, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)IfExp_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty test;
-                expr_ty body;
-                expr_ty orelse;
-
-                if (PyObject_HasAttrString(obj, "test")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "test");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &test, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from IfExp");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &body, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from IfExp");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "orelse")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "orelse");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &orelse, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from IfExp");
-                        return 1;
-                }
-                *out = IfExp(test, body, orelse, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Dict_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                asdl_seq* keys;
-                asdl_seq* values;
-
-                if (PyObject_HasAttrString(obj, "keys")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "keys");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Dict field \"keys\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        keys = asdl_seq_new(len, arena);
-                        if (keys == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                expr_ty value;
-                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(keys, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"keys\" missing from Dict");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "values")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "values");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Dict field \"values\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        values = asdl_seq_new(len, arena);
-                        if (values == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                expr_ty value;
-                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(values, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"values\" missing from Dict");
-                        return 1;
-                }
-                *out = Dict(keys, values, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Set_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                asdl_seq* elts;
-
-                if (PyObject_HasAttrString(obj, "elts")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "elts");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Set field \"elts\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        elts = asdl_seq_new(len, arena);
-                        if (elts == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                expr_ty value;
-                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(elts, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"elts\" missing from Set");
-                        return 1;
-                }
-                *out = Set(elts, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)ListComp_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty elt;
-                asdl_seq* generators;
-
-                if (PyObject_HasAttrString(obj, "elt")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "elt");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &elt, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"elt\" missing from ListComp");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "generators")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "generators");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "ListComp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        generators = asdl_seq_new(len, arena);
-                        if (generators == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                comprehension_ty value;
-                                res = obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(generators, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from ListComp");
-                        return 1;
-                }
-                *out = ListComp(elt, generators, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)SetComp_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty elt;
-                asdl_seq* generators;
-
-                if (PyObject_HasAttrString(obj, "elt")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "elt");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &elt, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"elt\" missing from SetComp");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "generators")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "generators");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "SetComp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        generators = asdl_seq_new(len, arena);
-                        if (generators == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                comprehension_ty value;
-                                res = obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(generators, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from SetComp");
-                        return 1;
-                }
-                *out = SetComp(elt, generators, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)DictComp_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty key;
-                expr_ty value;
-                asdl_seq* generators;
-
-                if (PyObject_HasAttrString(obj, "key")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "key");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &key, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"key\" missing from DictComp");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "value")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "value");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &value, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from DictComp");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "generators")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "generators");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "DictComp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        generators = asdl_seq_new(len, arena);
-                        if (generators == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                comprehension_ty value;
-                                res = obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(generators, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from DictComp");
-                        return 1;
-                }
-                *out = DictComp(key, value, generators, lineno, col_offset,
-                                arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)GeneratorExp_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty elt;
-                asdl_seq* generators;
-
-                if (PyObject_HasAttrString(obj, "elt")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "elt");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &elt, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"elt\" missing from GeneratorExp");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "generators")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "generators");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "GeneratorExp field \"generators\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        generators = asdl_seq_new(len, arena);
-                        if (generators == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                comprehension_ty value;
-                                res = obj2ast_comprehension(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(generators, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"generators\" missing from GeneratorExp");
-                        return 1;
-                }
-                *out = GeneratorExp(elt, generators, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Yield_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty value;
-
-                if (PyObject_HasAttrString(obj, "value")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "value");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &value, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        value = NULL;
-                }
-                *out = Yield(value, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Compare_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty left;
-                asdl_int_seq* ops;
-                asdl_seq* comparators;
-
-                if (PyObject_HasAttrString(obj, "left")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "left");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &left, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"left\" missing from Compare");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "ops")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "ops");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Compare field \"ops\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        ops = asdl_int_seq_new(len, arena);
-                        if (ops == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                cmpop_ty value;
-                                res = obj2ast_cmpop(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(ops, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"ops\" missing from Compare");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "comparators")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "comparators");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Compare field \"comparators\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        comparators = asdl_seq_new(len, arena);
-                        if (comparators == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                expr_ty value;
-                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(comparators, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"comparators\" missing from Compare");
-                        return 1;
-                }
-                *out = Compare(left, ops, comparators, lineno, col_offset,
-                               arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Call_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty func;
-                asdl_seq* args;
-                asdl_seq* keywords;
-                expr_ty starargs;
-                expr_ty kwargs;
-
-                if (PyObject_HasAttrString(obj, "func")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "func");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &func, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"func\" missing from Call");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "args")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "args");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Call field \"args\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        args = asdl_seq_new(len, arena);
-                        if (args == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                expr_ty value;
-                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(args, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from Call");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "keywords")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "keywords");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Call field \"keywords\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        keywords = asdl_seq_new(len, arena);
-                        if (keywords == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                keyword_ty value;
-                                res = obj2ast_keyword(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(keywords, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"keywords\" missing from Call");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "starargs")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "starargs");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &starargs, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        starargs = NULL;
-                }
-                if (PyObject_HasAttrString(obj, "kwargs")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "kwargs");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &kwargs, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        kwargs = NULL;
-                }
-                *out = Call(func, args, keywords, starargs, kwargs, lineno,
-                            col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Repr_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty value;
-
-                if (PyObject_HasAttrString(obj, "value")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "value");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &value, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Repr");
-                        return 1;
-                }
-                *out = Repr(value, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Num_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                object n;
-
-                if (PyObject_HasAttrString(obj, "n")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "n");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_object(tmp, &n, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"n\" missing from Num");
-                        return 1;
-                }
-                *out = Num(n, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Str_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                string s;
-
-                if (PyObject_HasAttrString(obj, "s")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "s");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_string(tmp, &s, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"s\" missing from Str");
-                        return 1;
-                }
-                *out = Str(s, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Attribute_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty value;
-                identifier attr;
-                expr_context_ty ctx;
-
-                if (PyObject_HasAttrString(obj, "value")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "value");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &value, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Attribute");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "attr")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "attr");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_identifier(tmp, &attr, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"attr\" missing from Attribute");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "ctx")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "ctx");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr_context(tmp, &ctx, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Attribute");
-                        return 1;
-                }
-                *out = Attribute(value, attr, ctx, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Subscript_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty value;
-                slice_ty slice;
-                expr_context_ty ctx;
-
-                if (PyObject_HasAttrString(obj, "value")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "value");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &value, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Subscript");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "slice")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "slice");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_slice(tmp, &slice, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"slice\" missing from Subscript");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "ctx")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "ctx");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr_context(tmp, &ctx, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Subscript");
-                        return 1;
-                }
-                *out = Subscript(value, slice, ctx, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Name_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                identifier id;
-                expr_context_ty ctx;
-
-                if (PyObject_HasAttrString(obj, "id")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "id");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_identifier(tmp, &id, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"id\" missing from Name");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "ctx")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "ctx");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr_context(tmp, &ctx, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Name");
-                        return 1;
-                }
-                *out = Name(id, ctx, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)List_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                asdl_seq* elts;
-                expr_context_ty ctx;
-
-                if (PyObject_HasAttrString(obj, "elts")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "elts");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "List field \"elts\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        elts = asdl_seq_new(len, arena);
-                        if (elts == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                expr_ty value;
-                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(elts, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"elts\" missing from List");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "ctx")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "ctx");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr_context(tmp, &ctx, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from List");
-                        return 1;
-                }
-                *out = List(elts, ctx, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Tuple_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                asdl_seq* elts;
-                expr_context_ty ctx;
-
-                if (PyObject_HasAttrString(obj, "elts")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "elts");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "Tuple field \"elts\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        elts = asdl_seq_new(len, arena);
-                        if (elts == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                expr_ty value;
-                                res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(elts, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"elts\" missing from Tuple");
-                        return 1;
-                }
-                if (PyObject_HasAttrString(obj, "ctx")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "ctx");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr_context(tmp, &ctx, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"ctx\" missing from Tuple");
-                        return 1;
-                }
-                *out = Tuple(elts, ctx, lineno, col_offset, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-
-        tmp = PyObject_Repr(obj);
-        if (tmp == NULL) goto failed;
-        PyErr_Format(PyExc_TypeError, "expected some sort of expr, but got %.400s", PyString_AS_STRING(tmp));
-failed:
-        Py_XDECREF(tmp);
-        return 1;
-}
-
-int
-obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena)
-{
-        PyObject* tmp = NULL;
-        int isinstance;
-
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Load_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Load;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Store_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Store;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Del_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Del;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)AugLoad_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = AugLoad;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)AugStore_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = AugStore;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Param_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Param;
-                return 0;
-        }
-
-        tmp = PyObject_Repr(obj);
-        if (tmp == NULL) goto failed;
-        PyErr_Format(PyExc_TypeError, "expected some sort of expr_context, but got %.400s", PyString_AS_STRING(tmp));
-failed:
-        Py_XDECREF(tmp);
-        return 1;
-}
-
-int
-obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena)
-{
-        PyObject* tmp = NULL;
-        int isinstance;
-
-
-        if (obj == Py_None) {
-                *out = NULL;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Ellipsis_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-
-                *out = Ellipsis(arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Slice_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty lower;
-                expr_ty upper;
-                expr_ty step;
-
-                if (PyObject_HasAttrString(obj, "lower")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "lower");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &lower, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        lower = NULL;
-                }
-                if (PyObject_HasAttrString(obj, "upper")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "upper");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &upper, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        upper = NULL;
-                }
-                if (PyObject_HasAttrString(obj, "step")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "step");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &step, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        step = NULL;
-                }
-                *out = Slice(lower, upper, step, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)ExtSlice_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                asdl_seq* dims;
-
-                if (PyObject_HasAttrString(obj, "dims")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "dims");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "ExtSlice field \"dims\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        dims = asdl_seq_new(len, arena);
-                        if (dims == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                slice_ty value;
-                                res = obj2ast_slice(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(dims, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"dims\" missing from ExtSlice");
-                        return 1;
-                }
-                *out = ExtSlice(dims, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)Index_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty value;
-
-                if (PyObject_HasAttrString(obj, "value")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "value");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &value, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Index");
-                        return 1;
-                }
-                *out = Index(value, arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-
-        tmp = PyObject_Repr(obj);
-        if (tmp == NULL) goto failed;
-        PyErr_Format(PyExc_TypeError, "expected some sort of slice, but got %.400s", PyString_AS_STRING(tmp));
-failed:
-        Py_XDECREF(tmp);
-        return 1;
-}
-
-int
-obj2ast_boolop(PyObject* obj, boolop_ty* out, PyArena* arena)
-{
-        PyObject* tmp = NULL;
-        int isinstance;
-
-        isinstance = PyObject_IsInstance(obj, (PyObject *)And_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = And;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Or_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Or;
-                return 0;
-        }
-
-        tmp = PyObject_Repr(obj);
-        if (tmp == NULL) goto failed;
-        PyErr_Format(PyExc_TypeError, "expected some sort of boolop, but got %.400s", PyString_AS_STRING(tmp));
-failed:
-        Py_XDECREF(tmp);
-        return 1;
-}
-
-int
-obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena)
-{
-        PyObject* tmp = NULL;
-        int isinstance;
-
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Add_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Add;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Sub_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Sub;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Mult_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Mult;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Div_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Div;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Mod_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Mod;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Pow_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Pow;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)LShift_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = LShift;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)RShift_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = RShift;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)BitOr_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = BitOr;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)BitXor_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = BitXor;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)BitAnd_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = BitAnd;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)FloorDiv_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = FloorDiv;
-                return 0;
-        }
-
-        tmp = PyObject_Repr(obj);
-        if (tmp == NULL) goto failed;
-        PyErr_Format(PyExc_TypeError, "expected some sort of operator, but got %.400s", PyString_AS_STRING(tmp));
-failed:
-        Py_XDECREF(tmp);
-        return 1;
-}
-
-int
-obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena)
-{
-        PyObject* tmp = NULL;
-        int isinstance;
-
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Invert_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Invert;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Not_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Not;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)UAdd_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = UAdd;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)USub_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = USub;
-                return 0;
-        }
-
-        tmp = PyObject_Repr(obj);
-        if (tmp == NULL) goto failed;
-        PyErr_Format(PyExc_TypeError, "expected some sort of unaryop, but got %.400s", PyString_AS_STRING(tmp));
-failed:
-        Py_XDECREF(tmp);
-        return 1;
-}
-
-int
-obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena)
-{
-        PyObject* tmp = NULL;
-        int isinstance;
-
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Eq_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Eq;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)NotEq_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = NotEq;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Lt_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Lt;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)LtE_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = LtE;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Gt_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Gt;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)GtE_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = GtE;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)Is_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = Is;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)IsNot_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = IsNot;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)In_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = In;
-                return 0;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject *)NotIn_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                *out = NotIn;
-                return 0;
-        }
-
-        tmp = PyObject_Repr(obj);
-        if (tmp == NULL) goto failed;
-        PyErr_Format(PyExc_TypeError, "expected some sort of cmpop, but got %.400s", PyString_AS_STRING(tmp));
-failed:
-        Py_XDECREF(tmp);
-        return 1;
-}
-
-int
-obj2ast_comprehension(PyObject* obj, comprehension_ty* out, PyArena* arena)
-{
-        PyObject* tmp = NULL;
-        expr_ty target;
-        expr_ty iter;
-        asdl_seq* ifs;
-
-        if (PyObject_HasAttrString(obj, "target")) {
-                int res;
-                tmp = PyObject_GetAttrString(obj, "target");
-                if (tmp == NULL) goto failed;
-                res = obj2ast_expr(tmp, &target, arena);
-                if (res != 0) goto failed;
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from comprehension");
-                return 1;
-        }
-        if (PyObject_HasAttrString(obj, "iter")) {
-                int res;
-                tmp = PyObject_GetAttrString(obj, "iter");
-                if (tmp == NULL) goto failed;
-                res = obj2ast_expr(tmp, &iter, arena);
-                if (res != 0) goto failed;
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                PyErr_SetString(PyExc_TypeError, "required field \"iter\" missing from comprehension");
-                return 1;
-        }
-        if (PyObject_HasAttrString(obj, "ifs")) {
-                int res;
-                Py_ssize_t len;
-                Py_ssize_t i;
-                tmp = PyObject_GetAttrString(obj, "ifs");
-                if (tmp == NULL) goto failed;
-                if (!PyList_Check(tmp)) {
-                        PyErr_Format(PyExc_TypeError, "comprehension field \"ifs\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                        goto failed;
-                }
-                len = PyList_GET_SIZE(tmp);
-                ifs = asdl_seq_new(len, arena);
-                if (ifs == NULL) goto failed;
-                for (i = 0; i < len; i++) {
-                        expr_ty value;
-                        res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                        if (res != 0) goto failed;
-                        asdl_seq_SET(ifs, i, value);
-                }
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                PyErr_SetString(PyExc_TypeError, "required field \"ifs\" missing from comprehension");
-                return 1;
-        }
-        *out = comprehension(target, iter, ifs, arena);
-        return 0;
-failed:
-        Py_XDECREF(tmp);
-        return 1;
-}
-
-int
-obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena)
-{
-        PyObject* tmp = NULL;
-        int isinstance;
-
-        int lineno;
-        int col_offset;
-
-        if (obj == Py_None) {
-                *out = NULL;
-                return 0;
-        }
-        if (PyObject_HasAttrString(obj, "lineno")) {
-                int res;
-                tmp = PyObject_GetAttrString(obj, "lineno");
-                if (tmp == NULL) goto failed;
-                res = obj2ast_int(tmp, &lineno, arena);
-                if (res != 0) goto failed;
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                PyErr_SetString(PyExc_TypeError, "required field \"lineno\" missing from excepthandler");
-                return 1;
-        }
-        if (PyObject_HasAttrString(obj, "col_offset")) {
-                int res;
-                tmp = PyObject_GetAttrString(obj, "col_offset");
-                if (tmp == NULL) goto failed;
-                res = obj2ast_int(tmp, &col_offset, arena);
-                if (res != 0) goto failed;
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from excepthandler");
-                return 1;
-        }
-        isinstance = PyObject_IsInstance(obj, (PyObject*)ExceptHandler_type);
-        if (isinstance == -1) {
-                return 1;
-        }
-        if (isinstance) {
-                expr_ty type;
-                expr_ty name;
-                asdl_seq* body;
-
-                if (PyObject_HasAttrString(obj, "type")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "type");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &type, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        type = NULL;
-                }
-                if (PyObject_HasAttrString(obj, "name")) {
-                        int res;
-                        tmp = PyObject_GetAttrString(obj, "name");
-                        if (tmp == NULL) goto failed;
-                        res = obj2ast_expr(tmp, &name, arena);
-                        if (res != 0) goto failed;
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        name = NULL;
-                }
-                if (PyObject_HasAttrString(obj, "body")) {
-                        int res;
-                        Py_ssize_t len;
-                        Py_ssize_t i;
-                        tmp = PyObject_GetAttrString(obj, "body");
-                        if (tmp == NULL) goto failed;
-                        if (!PyList_Check(tmp)) {
-                                PyErr_Format(PyExc_TypeError, "ExceptHandler field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                                goto failed;
-                        }
-                        len = PyList_GET_SIZE(tmp);
-                        body = asdl_seq_new(len, arena);
-                        if (body == NULL) goto failed;
-                        for (i = 0; i < len; i++) {
-                                stmt_ty value;
-                                res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena);
-                                if (res != 0) goto failed;
-                                asdl_seq_SET(body, i, value);
-                        }
-                        Py_XDECREF(tmp);
-                        tmp = NULL;
-                } else {
-                        PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from ExceptHandler");
-                        return 1;
-                }
-                *out = ExceptHandler(type, name, body, lineno, col_offset,
-                                     arena);
-                if (*out == NULL) goto failed;
-                return 0;
-        }
-
-        tmp = PyObject_Repr(obj);
-        if (tmp == NULL) goto failed;
-        PyErr_Format(PyExc_TypeError, "expected some sort of excepthandler, but got %.400s", PyString_AS_STRING(tmp));
-failed:
-        Py_XDECREF(tmp);
-        return 1;
-}
-
-int
-obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena)
-{
-        PyObject* tmp = NULL;
-        asdl_seq* args;
-        identifier vararg;
-        identifier kwarg;
-        asdl_seq* defaults;
-
-        if (PyObject_HasAttrString(obj, "args")) {
-                int res;
-                Py_ssize_t len;
-                Py_ssize_t i;
-                tmp = PyObject_GetAttrString(obj, "args");
-                if (tmp == NULL) goto failed;
-                if (!PyList_Check(tmp)) {
-                        PyErr_Format(PyExc_TypeError, "arguments field \"args\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                        goto failed;
-                }
-                len = PyList_GET_SIZE(tmp);
-                args = asdl_seq_new(len, arena);
-                if (args == NULL) goto failed;
-                for (i = 0; i < len; i++) {
-                        expr_ty value;
-                        res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                        if (res != 0) goto failed;
-                        asdl_seq_SET(args, i, value);
-                }
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from arguments");
-                return 1;
-        }
-        if (PyObject_HasAttrString(obj, "vararg")) {
-                int res;
-                tmp = PyObject_GetAttrString(obj, "vararg");
-                if (tmp == NULL) goto failed;
-                res = obj2ast_identifier(tmp, &vararg, arena);
-                if (res != 0) goto failed;
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                vararg = NULL;
-        }
-        if (PyObject_HasAttrString(obj, "kwarg")) {
-                int res;
-                tmp = PyObject_GetAttrString(obj, "kwarg");
-                if (tmp == NULL) goto failed;
-                res = obj2ast_identifier(tmp, &kwarg, arena);
-                if (res != 0) goto failed;
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                kwarg = NULL;
-        }
-        if (PyObject_HasAttrString(obj, "defaults")) {
-                int res;
-                Py_ssize_t len;
-                Py_ssize_t i;
-                tmp = PyObject_GetAttrString(obj, "defaults");
-                if (tmp == NULL) goto failed;
-                if (!PyList_Check(tmp)) {
-                        PyErr_Format(PyExc_TypeError, "arguments field \"defaults\" must be a list, not a %.200s", tmp->ob_type->tp_name);
-                        goto failed;
-                }
-                len = PyList_GET_SIZE(tmp);
-                defaults = asdl_seq_new(len, arena);
-                if (defaults == NULL) goto failed;
-                for (i = 0; i < len; i++) {
-                        expr_ty value;
-                        res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
-                        if (res != 0) goto failed;
-                        asdl_seq_SET(defaults, i, value);
-                }
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                PyErr_SetString(PyExc_TypeError, "required field \"defaults\" missing from arguments");
-                return 1;
-        }
-        *out = arguments(args, vararg, kwarg, defaults, arena);
-        return 0;
-failed:
-        Py_XDECREF(tmp);
-        return 1;
-}
-
-int
-obj2ast_keyword(PyObject* obj, keyword_ty* out, PyArena* arena)
-{
-        PyObject* tmp = NULL;
-        identifier arg;
-        expr_ty value;
-
-        if (PyObject_HasAttrString(obj, "arg")) {
-                int res;
-                tmp = PyObject_GetAttrString(obj, "arg");
-                if (tmp == NULL) goto failed;
-                res = obj2ast_identifier(tmp, &arg, arena);
-                if (res != 0) goto failed;
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                PyErr_SetString(PyExc_TypeError, "required field \"arg\" missing from keyword");
-                return 1;
-        }
-        if (PyObject_HasAttrString(obj, "value")) {
-                int res;
-                tmp = PyObject_GetAttrString(obj, "value");
-                if (tmp == NULL) goto failed;
-                res = obj2ast_expr(tmp, &value, arena);
-                if (res != 0) goto failed;
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from keyword");
-                return 1;
-        }
-        *out = keyword(arg, value, arena);
-        return 0;
-failed:
-        Py_XDECREF(tmp);
-        return 1;
-}
-
-int
-obj2ast_alias(PyObject* obj, alias_ty* out, PyArena* arena)
-{
-        PyObject* tmp = NULL;
-        identifier name;
-        identifier asname;
-
-        if (PyObject_HasAttrString(obj, "name")) {
-                int res;
-                tmp = PyObject_GetAttrString(obj, "name");
-                if (tmp == NULL) goto failed;
-                res = obj2ast_identifier(tmp, &name, arena);
-                if (res != 0) goto failed;
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from alias");
-                return 1;
-        }
-        if (PyObject_HasAttrString(obj, "asname")) {
-                int res;
-                tmp = PyObject_GetAttrString(obj, "asname");
-                if (tmp == NULL) goto failed;
-                res = obj2ast_identifier(tmp, &asname, arena);
-                if (res != 0) goto failed;
-                Py_XDECREF(tmp);
-                tmp = NULL;
-        } else {
-                asname = NULL;
-        }
-        *out = alias(name, asname, arena);
-        return 0;
-failed:
-        Py_XDECREF(tmp);
-        return 1;
-}
-
-
-PyMODINIT_FUNC
-init_ast(void)
-{
-        PyObject *m, *d;
-        if (!init_types()) return;
-        m = Py_InitModule3("_ast", NULL, NULL);
-        if (!m) return;
-        d = PyModule_GetDict(m);
-        if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return;
-        if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0)
-                return;
-        if (PyModule_AddStringConstant(m, "__version__", "82160") < 0)
-                return;
-        if (PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return;
-        if (PyDict_SetItemString(d, "Module", (PyObject*)Module_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "Interactive", (PyObject*)Interactive_type)
-            < 0) return;
-        if (PyDict_SetItemString(d, "Expression", (PyObject*)Expression_type) <
-            0) return;
-        if (PyDict_SetItemString(d, "Suite", (PyObject*)Suite_type) < 0) return;
-        if (PyDict_SetItemString(d, "stmt", (PyObject*)stmt_type) < 0) return;
-        if (PyDict_SetItemString(d, "FunctionDef", (PyObject*)FunctionDef_type)
-            < 0) return;
-        if (PyDict_SetItemString(d, "ClassDef", (PyObject*)ClassDef_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "Return", (PyObject*)Return_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "Delete", (PyObject*)Delete_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "Assign", (PyObject*)Assign_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "AugAssign", (PyObject*)AugAssign_type) <
-            0) return;
-        if (PyDict_SetItemString(d, "Print", (PyObject*)Print_type) < 0) return;
-        if (PyDict_SetItemString(d, "For", (PyObject*)For_type) < 0) return;
-        if (PyDict_SetItemString(d, "While", (PyObject*)While_type) < 0) return;
-        if (PyDict_SetItemString(d, "If", (PyObject*)If_type) < 0) return;
-        if (PyDict_SetItemString(d, "With", (PyObject*)With_type) < 0) return;
-        if (PyDict_SetItemString(d, "Raise", (PyObject*)Raise_type) < 0) return;
-        if (PyDict_SetItemString(d, "TryExcept", (PyObject*)TryExcept_type) <
-            0) return;
-        if (PyDict_SetItemString(d, "TryFinally", (PyObject*)TryFinally_type) <
-            0) return;
-        if (PyDict_SetItemString(d, "Assert", (PyObject*)Assert_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "Import", (PyObject*)Import_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "ImportFrom", (PyObject*)ImportFrom_type) <
-            0) return;
-        if (PyDict_SetItemString(d, "Exec", (PyObject*)Exec_type) < 0) return;
-        if (PyDict_SetItemString(d, "Global", (PyObject*)Global_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "Expr", (PyObject*)Expr_type) < 0) return;
-        if (PyDict_SetItemString(d, "Pass", (PyObject*)Pass_type) < 0) return;
-        if (PyDict_SetItemString(d, "Break", (PyObject*)Break_type) < 0) return;
-        if (PyDict_SetItemString(d, "Continue", (PyObject*)Continue_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "expr", (PyObject*)expr_type) < 0) return;
-        if (PyDict_SetItemString(d, "BoolOp", (PyObject*)BoolOp_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "BinOp", (PyObject*)BinOp_type) < 0) return;
-        if (PyDict_SetItemString(d, "UnaryOp", (PyObject*)UnaryOp_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "Lambda", (PyObject*)Lambda_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "IfExp", (PyObject*)IfExp_type) < 0) return;
-        if (PyDict_SetItemString(d, "Dict", (PyObject*)Dict_type) < 0) return;
-        if (PyDict_SetItemString(d, "Set", (PyObject*)Set_type) < 0) return;
-        if (PyDict_SetItemString(d, "ListComp", (PyObject*)ListComp_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "SetComp", (PyObject*)SetComp_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "DictComp", (PyObject*)DictComp_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "GeneratorExp",
-            (PyObject*)GeneratorExp_type) < 0) return;
-        if (PyDict_SetItemString(d, "Yield", (PyObject*)Yield_type) < 0) return;
-        if (PyDict_SetItemString(d, "Compare", (PyObject*)Compare_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "Call", (PyObject*)Call_type) < 0) return;
-        if (PyDict_SetItemString(d, "Repr", (PyObject*)Repr_type) < 0) return;
-        if (PyDict_SetItemString(d, "Num", (PyObject*)Num_type) < 0) return;
-        if (PyDict_SetItemString(d, "Str", (PyObject*)Str_type) < 0) return;
-        if (PyDict_SetItemString(d, "Attribute", (PyObject*)Attribute_type) <
-            0) return;
-        if (PyDict_SetItemString(d, "Subscript", (PyObject*)Subscript_type) <
-            0) return;
-        if (PyDict_SetItemString(d, "Name", (PyObject*)Name_type) < 0) return;
-        if (PyDict_SetItemString(d, "List", (PyObject*)List_type) < 0) return;
-        if (PyDict_SetItemString(d, "Tuple", (PyObject*)Tuple_type) < 0) return;
-        if (PyDict_SetItemString(d, "expr_context",
-            (PyObject*)expr_context_type) < 0) return;
-        if (PyDict_SetItemString(d, "Load", (PyObject*)Load_type) < 0) return;
-        if (PyDict_SetItemString(d, "Store", (PyObject*)Store_type) < 0) return;
-        if (PyDict_SetItemString(d, "Del", (PyObject*)Del_type) < 0) return;
-        if (PyDict_SetItemString(d, "AugLoad", (PyObject*)AugLoad_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "AugStore", (PyObject*)AugStore_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "Param", (PyObject*)Param_type) < 0) return;
-        if (PyDict_SetItemString(d, "slice", (PyObject*)slice_type) < 0) return;
-        if (PyDict_SetItemString(d, "Ellipsis", (PyObject*)Ellipsis_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "Slice", (PyObject*)Slice_type) < 0) return;
-        if (PyDict_SetItemString(d, "ExtSlice", (PyObject*)ExtSlice_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "Index", (PyObject*)Index_type) < 0) return;
-        if (PyDict_SetItemString(d, "boolop", (PyObject*)boolop_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "And", (PyObject*)And_type) < 0) return;
-        if (PyDict_SetItemString(d, "Or", (PyObject*)Or_type) < 0) return;
-        if (PyDict_SetItemString(d, "operator", (PyObject*)operator_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "Add", (PyObject*)Add_type) < 0) return;
-        if (PyDict_SetItemString(d, "Sub", (PyObject*)Sub_type) < 0) return;
-        if (PyDict_SetItemString(d, "Mult", (PyObject*)Mult_type) < 0) return;
-        if (PyDict_SetItemString(d, "Div", (PyObject*)Div_type) < 0) return;
-        if (PyDict_SetItemString(d, "Mod", (PyObject*)Mod_type) < 0) return;
-        if (PyDict_SetItemString(d, "Pow", (PyObject*)Pow_type) < 0) return;
-        if (PyDict_SetItemString(d, "LShift", (PyObject*)LShift_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "RShift", (PyObject*)RShift_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "BitOr", (PyObject*)BitOr_type) < 0) return;
-        if (PyDict_SetItemString(d, "BitXor", (PyObject*)BitXor_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "BitAnd", (PyObject*)BitAnd_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "FloorDiv", (PyObject*)FloorDiv_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "unaryop", (PyObject*)unaryop_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "Invert", (PyObject*)Invert_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "Not", (PyObject*)Not_type) < 0) return;
-        if (PyDict_SetItemString(d, "UAdd", (PyObject*)UAdd_type) < 0) return;
-        if (PyDict_SetItemString(d, "USub", (PyObject*)USub_type) < 0) return;
-        if (PyDict_SetItemString(d, "cmpop", (PyObject*)cmpop_type) < 0) return;
-        if (PyDict_SetItemString(d, "Eq", (PyObject*)Eq_type) < 0) return;
-        if (PyDict_SetItemString(d, "NotEq", (PyObject*)NotEq_type) < 0) return;
-        if (PyDict_SetItemString(d, "Lt", (PyObject*)Lt_type) < 0) return;
-        if (PyDict_SetItemString(d, "LtE", (PyObject*)LtE_type) < 0) return;
-        if (PyDict_SetItemString(d, "Gt", (PyObject*)Gt_type) < 0) return;
-        if (PyDict_SetItemString(d, "GtE", (PyObject*)GtE_type) < 0) return;
-        if (PyDict_SetItemString(d, "Is", (PyObject*)Is_type) < 0) return;
-        if (PyDict_SetItemString(d, "IsNot", (PyObject*)IsNot_type) < 0) return;
-        if (PyDict_SetItemString(d, "In", (PyObject*)In_type) < 0) return;
-        if (PyDict_SetItemString(d, "NotIn", (PyObject*)NotIn_type) < 0) return;
-        if (PyDict_SetItemString(d, "comprehension",
-            (PyObject*)comprehension_type) < 0) return;
-        if (PyDict_SetItemString(d, "excepthandler",
-            (PyObject*)excepthandler_type) < 0) return;
-        if (PyDict_SetItemString(d, "ExceptHandler",
-            (PyObject*)ExceptHandler_type) < 0) return;
-        if (PyDict_SetItemString(d, "arguments", (PyObject*)arguments_type) <
-            0) return;
-        if (PyDict_SetItemString(d, "keyword", (PyObject*)keyword_type) < 0)
-            return;
-        if (PyDict_SetItemString(d, "alias", (PyObject*)alias_type) < 0) return;
-}
-
-
-PyObject* PyAST_mod2obj(mod_ty t)
-{
-    init_types();
-    return ast2obj_mod(t);
-}
-
-/* mode is 0 for "exec", 1 for "eval" and 2 for "single" input */
-mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
-{
-    mod_ty res;
-    PyObject *req_type[] = {(PyObject*)Module_type, (PyObject*)Expression_type,
-                            (PyObject*)Interactive_type};
-    char *req_name[] = {"Module", "Expression", "Interactive"};
-    int isinstance;
-    assert(0 <= mode && mode <= 2);
-
-    init_types();
-
-    isinstance = PyObject_IsInstance(ast, req_type[mode]);
-    if (isinstance == -1)
-        return NULL;
-    if (!isinstance) {
-        PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s",
-                     req_name[mode], Py_TYPE(ast)->tp_name);
-        return NULL;
-    }
-    if (obj2ast_mod(ast, &res, arena) != 0)
-        return NULL;
-    else
-        return res;
-}
-
-int PyAST_Check(PyObject* obj)
-{
-    init_types();
-    return PyObject_IsInstance(obj, (PyObject*)&AST_type);
-}
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/_warnings.c b/AppPkg/Applications/Python/Python-2.7.2/Python/_warnings.c
deleted file mode 100644
index b876af6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/_warnings.c
+++ /dev/null
@@ -1,909 +0,0 @@
-#include "Python.h"
-#include "frameobject.h"
-
-#define MODULE_NAME "_warnings"
-
-PyDoc_STRVAR(warnings__doc__,
-MODULE_NAME " provides basic warning filtering support.\n"
-"It is a helper module to speed up interpreter start-up.");
-
-/* Both 'filters' and 'onceregistry' can be set in warnings.py;
-   get_warnings_attr() will reset these variables accordingly. */
-static PyObject *_filters;  /* List */
-static PyObject *_once_registry;  /* Dict */
-static PyObject *_default_action; /* String */
-
-
-static int
-check_matched(PyObject *obj, PyObject *arg)
-{
-    PyObject *result;
-    int rc;
-
-    if (obj == Py_None)
-        return 1;
-    result = PyObject_CallMethod(obj, "match", "O", arg);
-    if (result == NULL)
-        return -1;
-
-    rc = PyObject_IsTrue(result);
-    Py_DECREF(result);
-    return rc;
-}
-
-/*
-   Returns a new reference.
-   A NULL return value can mean false or an error.
-*/
-static PyObject *
-get_warnings_attr(const char *attr)
-{
-    static PyObject *warnings_str = NULL;
-    PyObject *all_modules;
-    PyObject *warnings_module;
-    int result;
-
-    if (warnings_str == NULL) {
-        warnings_str = PyString_InternFromString("warnings");
-        if (warnings_str == NULL)
-            return NULL;
-    }
-
-    all_modules = PyImport_GetModuleDict();
-    result = PyDict_Contains(all_modules, warnings_str);
-    if (result == -1 || result == 0)
-        return NULL;
-
-    warnings_module = PyDict_GetItem(all_modules, warnings_str);
-    if (!PyObject_HasAttrString(warnings_module, attr))
-            return NULL;
-    return PyObject_GetAttrString(warnings_module, attr);
-}
-
-
-static PyObject *
-get_once_registry(void)
-{
-    PyObject *registry;
-
-    registry = get_warnings_attr("onceregistry");
-    if (registry == NULL) {
-        if (PyErr_Occurred())
-            return NULL;
-        return _once_registry;
-    }
-    Py_DECREF(_once_registry);
-    _once_registry = registry;
-    return registry;
-}
-
-
-static PyObject *
-get_default_action(void)
-{
-    PyObject *default_action;
-
-    default_action = get_warnings_attr("defaultaction");
-    if (default_action == NULL) {
-        if (PyErr_Occurred()) {
-            return NULL;
-        }
-        return _default_action;
-    }
-
-    Py_DECREF(_default_action);
-    _default_action = default_action;
-    return default_action;
-}
-
-
-/* The item is a borrowed reference. */
-static const char *
-get_filter(PyObject *category, PyObject *text, Py_ssize_t lineno,
-           PyObject *module, PyObject **item)
-{
-    PyObject *action;
-    Py_ssize_t i;
-    PyObject *warnings_filters;
-
-    warnings_filters = get_warnings_attr("filters");
-    if (warnings_filters == NULL) {
-        if (PyErr_Occurred())
-            return NULL;
-    }
-    else {
-        Py_DECREF(_filters);
-        _filters = warnings_filters;
-    }
-
-    if (!PyList_Check(_filters)) {
-        PyErr_SetString(PyExc_ValueError,
-                        MODULE_NAME ".filters must be a list");
-        return NULL;
-    }
-
-    /* _filters could change while we are iterating over it. */
-    for (i = 0; i < PyList_GET_SIZE(_filters); i++) {
-        PyObject *tmp_item, *action, *msg, *cat, *mod, *ln_obj;
-        Py_ssize_t ln;
-        int is_subclass, good_msg, good_mod;
-
-        tmp_item = *item = PyList_GET_ITEM(_filters, i);
-        if (PyTuple_Size(tmp_item) != 5) {
-            PyErr_Format(PyExc_ValueError,
-                         MODULE_NAME ".filters item %zd isn't a 5-tuple", i);
-            return NULL;
-        }
-
-        /* Python code: action, msg, cat, mod, ln = item */
-        action = PyTuple_GET_ITEM(tmp_item, 0);
-        msg = PyTuple_GET_ITEM(tmp_item, 1);
-        cat = PyTuple_GET_ITEM(tmp_item, 2);
-        mod = PyTuple_GET_ITEM(tmp_item, 3);
-        ln_obj = PyTuple_GET_ITEM(tmp_item, 4);
-
-        good_msg = check_matched(msg, text);
-        good_mod = check_matched(mod, module);
-        is_subclass = PyObject_IsSubclass(category, cat);
-        ln = PyInt_AsSsize_t(ln_obj);
-        if (good_msg == -1 || good_mod == -1 || is_subclass == -1 ||
-            (ln == -1 && PyErr_Occurred()))
-            return NULL;
-
-        if (good_msg && is_subclass && good_mod && (ln == 0 || lineno == ln))
-            return PyString_AsString(action);
-    }
-
-    action = get_default_action();
-    if (action != NULL) {
-        return PyString_AsString(action);
-    }
-
-    PyErr_SetString(PyExc_ValueError,
-                    MODULE_NAME ".defaultaction not found");
-    return NULL;
-}
-
-
-static int
-already_warned(PyObject *registry, PyObject *key, int should_set)
-{
-    PyObject *already_warned;
-
-    if (key == NULL)
-        return -1;
-
-    already_warned = PyDict_GetItem(registry, key);
-    if (already_warned != NULL) {
-        int rc = PyObject_IsTrue(already_warned);
-        if (rc != 0)
-            return rc;
-    }
-
-    /* This warning wasn't found in the registry, set it. */
-    if (should_set)
-        return PyDict_SetItem(registry, key, Py_True);
-    return 0;
-}
-
-/* New reference. */
-static PyObject *
-normalize_module(PyObject *filename)
-{
-    PyObject *module;
-    const char *mod_str;
-    Py_ssize_t len;
-
-    int rc = PyObject_IsTrue(filename);
-    if (rc == -1)
-        return NULL;
-    else if (rc == 0)
-        return PyString_FromString("<unknown>");
-
-    mod_str = PyString_AsString(filename);
-    if (mod_str == NULL)
-        return NULL;
-    len = PyString_Size(filename);
-    if (len < 0)
-        return NULL;
-    if (len >= 3 &&
-            strncmp(mod_str + (len - 3), ".py", 3) == 0) {
-        module = PyString_FromStringAndSize(mod_str, len-3);
-    }
-    else {
-        module = filename;
-        Py_INCREF(module);
-    }
-    return module;
-}
-
-static int
-update_registry(PyObject *registry, PyObject *text, PyObject *category,
-                int add_zero)
-{
-    PyObject *altkey, *zero = NULL;
-    int rc;
-
-    if (add_zero) {
-        zero = PyInt_FromLong(0);
-        if (zero == NULL)
-            return -1;
-        altkey = PyTuple_Pack(3, text, category, zero);
-    }
-    else
-        altkey = PyTuple_Pack(2, text, category);
-
-    rc = already_warned(registry, altkey, 1);
-    Py_XDECREF(zero);
-    Py_XDECREF(altkey);
-    return rc;
-}
-
-static void
-show_warning(PyObject *filename, int lineno, PyObject *text, PyObject
-                *category, PyObject *sourceline)
-{
-    PyObject *f_stderr;
-    PyObject *name;
-    char lineno_str[128];
-
-    PyOS_snprintf(lineno_str, sizeof(lineno_str), ":%d: ", lineno);
-
-    name = PyObject_GetAttrString(category, "__name__");
-    if (name == NULL)  /* XXX Can an object lack a '__name__' attribute? */
-        return;
-
-    f_stderr = PySys_GetObject("stderr");
-    if (f_stderr == NULL) {
-        fprintf(stderr, "lost sys.stderr\n");
-        Py_DECREF(name);
-        return;
-    }
-
-    /* Print "filename:lineno: category: text\n" */
-    PyFile_WriteObject(filename, f_stderr, Py_PRINT_RAW);
-    PyFile_WriteString(lineno_str, f_stderr);
-    PyFile_WriteObject(name, f_stderr, Py_PRINT_RAW);
-    PyFile_WriteString(": ", f_stderr);
-    PyFile_WriteObject(text, f_stderr, Py_PRINT_RAW);
-    PyFile_WriteString("\n", f_stderr);
-    Py_XDECREF(name);
-
-    /* Print "  source_line\n" */
-    if (sourceline) {
-        char *source_line_str = PyString_AS_STRING(sourceline);
-        while (*source_line_str == ' ' || *source_line_str == '\t' ||
-                *source_line_str == '\014')
-            source_line_str++;
-
-        PyFile_WriteString(source_line_str, f_stderr);
-        PyFile_WriteString("\n", f_stderr);
-    }
-    else
-        _Py_DisplaySourceLine(f_stderr, PyString_AS_STRING(filename),
-                              lineno, 2);
-    PyErr_Clear();
-}
-
-static PyObject *
-warn_explicit(PyObject *category, PyObject *message,
-              PyObject *filename, int lineno,
-              PyObject *module, PyObject *registry, PyObject *sourceline)
-{
-    PyObject *key = NULL, *text = NULL, *result = NULL, *lineno_obj = NULL;
-    PyObject *item = Py_None;
-    const char *action;
-    int rc;
-
-    if (registry && !PyDict_Check(registry) && (registry != Py_None)) {
-        PyErr_SetString(PyExc_TypeError, "'registry' must be a dict");
-        return NULL;
-    }
-
-    /* Normalize module. */
-    if (module == NULL) {
-        module = normalize_module(filename);
-        if (module == NULL)
-            return NULL;
-    }
-    else
-        Py_INCREF(module);
-
-    /* Normalize message. */
-    Py_INCREF(message);  /* DECREF'ed in cleanup. */
-    rc = PyObject_IsInstance(message, PyExc_Warning);
-    if (rc == -1) {
-        goto cleanup;
-    }
-    if (rc == 1) {
-        text = PyObject_Str(message);
-        if (text == NULL)
-            goto cleanup;
-        category = (PyObject*)message->ob_type;
-    }
-    else {
-        text = message;
-        message = PyObject_CallFunction(category, "O", message);
-        if (message == NULL)
-            goto cleanup;
-    }
-
-    lineno_obj = PyInt_FromLong(lineno);
-    if (lineno_obj == NULL)
-        goto cleanup;
-
-    /* Create key. */
-    key = PyTuple_Pack(3, text, category, lineno_obj);
-    if (key == NULL)
-        goto cleanup;
-
-    if ((registry != NULL) && (registry != Py_None)) {
-        rc = already_warned(registry, key, 0);
-        if (rc == -1)
-            goto cleanup;
-        else if (rc == 1)
-            goto return_none;
-        /* Else this warning hasn't been generated before. */
-    }
-
-    action = get_filter(category, text, lineno, module, &item);
-    if (action == NULL)
-        goto cleanup;
-
-    if (strcmp(action, "error") == 0) {
-        PyErr_SetObject(category, message);
-        goto cleanup;
-    }
-
-    /* Store in the registry that we've been here, *except* when the action
-       is "always". */
-    rc = 0;
-    if (strcmp(action, "always") != 0) {
-        if (registry != NULL && registry != Py_None &&
-                PyDict_SetItem(registry, key, Py_True) < 0)
-            goto cleanup;
-        else if (strcmp(action, "ignore") == 0)
-            goto return_none;
-        else if (strcmp(action, "once") == 0) {
-            if (registry == NULL || registry == Py_None) {
-                registry = get_once_registry();
-                if (registry == NULL)
-                    goto cleanup;
-            }
-            /* _once_registry[(text, category)] = 1 */
-            rc = update_registry(registry, text, category, 0);
-        }
-        else if (strcmp(action, "module") == 0) {
-            /* registry[(text, category, 0)] = 1 */
-            if (registry != NULL && registry != Py_None)
-                rc = update_registry(registry, text, category, 0);
-        }
-        else if (strcmp(action, "default") != 0) {
-            PyObject *to_str = PyObject_Str(item);
-            const char *err_str = "???";
-
-            if (to_str != NULL)
-                err_str = PyString_AS_STRING(to_str);
-            PyErr_Format(PyExc_RuntimeError,
-                        "Unrecognized action (%s) in warnings.filters:\n %s",
-                        action, err_str);
-            Py_XDECREF(to_str);
-            goto cleanup;
-        }
-    }
-
-    if (rc == 1)  /* Already warned for this module. */
-        goto return_none;
-    if (rc == 0) {
-        PyObject *show_fxn = get_warnings_attr("showwarning");
-        if (show_fxn == NULL) {
-            if (PyErr_Occurred())
-                goto cleanup;
-            show_warning(filename, lineno, text, category, sourceline);
-        }
-        else {
-              PyObject *res;
-
-              if (!PyMethod_Check(show_fxn) && !PyFunction_Check(show_fxn)) {
-                  PyErr_SetString(PyExc_TypeError,
-                                  "warnings.showwarning() must be set to a "
-                                  "function or method");
-                  Py_DECREF(show_fxn);
-                  goto cleanup;
-              }
-
-              res = PyObject_CallFunctionObjArgs(show_fxn, message, category,
-                                                  filename, lineno_obj,
-                                                  NULL);
-              Py_DECREF(show_fxn);
-              Py_XDECREF(res);
-              if (res == NULL)
-                  goto cleanup;
-        }
-    }
-    else /* if (rc == -1) */
-        goto cleanup;
-
- return_none:
-    result = Py_None;
-    Py_INCREF(result);
-
- cleanup:
-    Py_XDECREF(key);
-    Py_XDECREF(text);
-    Py_XDECREF(lineno_obj);
-    Py_DECREF(module);
-    Py_XDECREF(message);
-    return result;  /* Py_None or NULL. */
-}
-
-/* filename, module, and registry are new refs, globals is borrowed */
-/* Returns 0 on error (no new refs), 1 on success */
-static int
-setup_context(Py_ssize_t stack_level, PyObject **filename, int *lineno,
-              PyObject **module, PyObject **registry)
-{
-    PyObject *globals;
-
-    /* Setup globals and lineno. */
-    PyFrameObject *f = PyThreadState_GET()->frame;
-    while (--stack_level > 0 && f != NULL)
-        f = f->f_back;
-
-    if (f == NULL) {
-        globals = PyThreadState_Get()->interp->sysdict;
-        *lineno = 1;
-    }
-    else {
-        globals = f->f_globals;
-        *lineno = PyFrame_GetLineNumber(f);
-    }
-
-    *module = NULL;
-
-    /* Setup registry. */
-    assert(globals != NULL);
-    assert(PyDict_Check(globals));
-    *registry = PyDict_GetItemString(globals, "__warningregistry__");
-    if (*registry == NULL) {
-        int rc;
-
-        *registry = PyDict_New();
-        if (*registry == NULL)
-            return 0;
-
-         rc = PyDict_SetItemString(globals, "__warningregistry__", *registry);
-         if (rc < 0)
-            goto handle_error;
-    }
-    else
-        Py_INCREF(*registry);
-
-    /* Setup module. */
-    *module = PyDict_GetItemString(globals, "__name__");
-    if (*module == NULL) {
-        *module = PyString_FromString("<string>");
-        if (*module == NULL)
-            goto handle_error;
-    }
-    else
-        Py_INCREF(*module);
-
-    /* Setup filename. */
-    *filename = PyDict_GetItemString(globals, "__file__");
-    if (*filename != NULL) {
-            Py_ssize_t len = PyString_Size(*filename);
-        const char *file_str = PyString_AsString(*filename);
-            if (file_str == NULL || (len < 0 && PyErr_Occurred()))
-            goto handle_error;
-
-        /* if filename.lower().endswith((".pyc", ".pyo")): */
-        if (len >= 4 &&
-            file_str[len-4] == '.' &&
-            tolower(file_str[len-3]) == 'p' &&
-            tolower(file_str[len-2]) == 'y' &&
-            (tolower(file_str[len-1]) == 'c' ||
-                tolower(file_str[len-1]) == 'o'))
-        {
-            *filename = PyString_FromStringAndSize(file_str, len-1);
-            if (*filename == NULL)
-                goto handle_error;
-        }
-        else
-            Py_INCREF(*filename);
-    }
-    else {
-        const char *module_str = PyString_AsString(*module);
-        if (module_str && strcmp(module_str, "__main__") == 0) {
-            PyObject *argv = PySys_GetObject("argv");
-            if (argv != NULL && PyList_Size(argv) > 0) {
-                int is_true;
-                *filename = PyList_GetItem(argv, 0);
-                Py_INCREF(*filename);
-                /* If sys.argv[0] is false, then use '__main__'. */
-                is_true = PyObject_IsTrue(*filename);
-                if (is_true < 0) {
-                    Py_DECREF(*filename);
-                    goto handle_error;
-                }
-                else if (!is_true) {
-                    Py_DECREF(*filename);
-                    *filename = PyString_FromString("__main__");
-                    if (*filename == NULL)
-                        goto handle_error;
-                }
-            }
-            else {
-                /* embedded interpreters don't have sys.argv, see bug #839151 */
-                *filename = PyString_FromString("__main__");
-                if (*filename == NULL)
-                    goto handle_error;
-            }
-        }
-        if (*filename == NULL) {
-            *filename = *module;
-            Py_INCREF(*filename);
-        }
-    }
-
-    return 1;
-
- handle_error:
-    /* filename not XDECREF'ed here as there is no way to jump here with a
-       dangling reference. */
-    Py_XDECREF(*registry);
-    Py_XDECREF(*module);
-    return 0;
-}
-
-static PyObject *
-get_category(PyObject *message, PyObject *category)
-{
-    int rc;
-
-    /* Get category. */
-    rc = PyObject_IsInstance(message, PyExc_Warning);
-    if (rc == -1)
-        return NULL;
-
-    if (rc == 1)
-        category = (PyObject*)message->ob_type;
-    else if (category == NULL)
-        category = PyExc_UserWarning;
-
-    /* Validate category. */
-    rc = PyObject_IsSubclass(category, PyExc_Warning);
-    if (rc == -1)
-        return NULL;
-    if (rc == 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "category is not a subclass of Warning");
-        return NULL;
-    }
-
-    return category;
-}
-
-static PyObject *
-do_warn(PyObject *message, PyObject *category, Py_ssize_t stack_level)
-{
-    PyObject *filename, *module, *registry, *res;
-    int lineno;
-
-    if (!setup_context(stack_level, &filename, &lineno, &module, &registry))
-        return NULL;
-
-    res = warn_explicit(category, message, filename, lineno, module, registry,
-                        NULL);
-    Py_DECREF(filename);
-    Py_DECREF(registry);
-    Py_DECREF(module);
-    return res;
-}
-
-static PyObject *
-warnings_warn(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    static char *kw_list[] = { "message", "category", "stacklevel", 0 };
-    PyObject *message, *category = NULL;
-    Py_ssize_t stack_level = 1;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|On:warn", kw_list,
-                                     &message, &category, &stack_level))
-        return NULL;
-
-    category = get_category(message, category);
-    if (category == NULL)
-        return NULL;
-    return do_warn(message, category, stack_level);
-}
-
-static PyObject *
-warnings_warn_explicit(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    static char *kwd_list[] = {"message", "category", "filename", "lineno",
-                                "module", "registry", "module_globals", 0};
-    PyObject *message;
-    PyObject *category;
-    PyObject *filename;
-    int lineno;
-    PyObject *module = NULL;
-    PyObject *registry = NULL;
-    PyObject *module_globals = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "OOOi|OOO:warn_explicit",
-                kwd_list, &message, &category, &filename, &lineno, &module,
-                &registry, &module_globals))
-        return NULL;
-
-    if (module_globals) {
-        static PyObject *get_source_name = NULL;
-        static PyObject *splitlines_name = NULL;
-        PyObject *loader;
-        PyObject *module_name;
-        PyObject *source;
-        PyObject *source_list;
-        PyObject *source_line;
-        PyObject *returned;
-
-        if (get_source_name == NULL) {
-            get_source_name = PyString_InternFromString("get_source");
-            if (!get_source_name)
-                return NULL;
-        }
-        if (splitlines_name == NULL) {
-            splitlines_name = PyString_InternFromString("splitlines");
-            if (!splitlines_name)
-                return NULL;
-        }
-
-        /* Check/get the requisite pieces needed for the loader. */
-        loader = PyDict_GetItemString(module_globals, "__loader__");
-        module_name = PyDict_GetItemString(module_globals, "__name__");
-
-        if (loader == NULL || module_name == NULL)
-            goto standard_call;
-
-        /* Make sure the loader implements the optional get_source() method. */
-        if (!PyObject_HasAttrString(loader, "get_source"))
-                goto standard_call;
-        /* Call get_source() to get the source code. */
-        source = PyObject_CallMethodObjArgs(loader, get_source_name,
-                                                module_name, NULL);
-        if (!source)
-            return NULL;
-        else if (source == Py_None) {
-            Py_DECREF(Py_None);
-            goto standard_call;
-        }
-
-        /* Split the source into lines. */
-        source_list = PyObject_CallMethodObjArgs(source, splitlines_name,
-                                                    NULL);
-        Py_DECREF(source);
-        if (!source_list)
-            return NULL;
-
-        /* Get the source line. */
-        source_line = PyList_GetItem(source_list, lineno-1);
-        if (!source_line) {
-            Py_DECREF(source_list);
-            return NULL;
-        }
-
-        /* Handle the warning. */
-        returned = warn_explicit(category, message, filename, lineno, module,
-                            registry, source_line);
-        Py_DECREF(source_list);
-        return returned;
-    }
-
- standard_call:
-    return warn_explicit(category, message, filename, lineno, module,
-                                registry, NULL);
-}
-
-
-/* Function to issue a warning message; may raise an exception. */
-int
-PyErr_WarnEx(PyObject *category, const char *text, Py_ssize_t stack_level)
-{
-    PyObject *res;
-    PyObject *message = PyString_FromString(text);
-    if (message == NULL)
-        return -1;
-
-    if (category == NULL)
-        category = PyExc_RuntimeWarning;
-
-    res = do_warn(message, category, stack_level);
-    Py_DECREF(message);
-    if (res == NULL)
-        return -1;
-    Py_DECREF(res);
-
-    return 0;
-}
-
-/* PyErr_Warn is only for backwards compatibility and will be removed.
-   Use PyErr_WarnEx instead. */
-
-#undef PyErr_Warn
-
-PyAPI_FUNC(int)
-PyErr_Warn(PyObject *category, char *text)
-{
-    return PyErr_WarnEx(category, text, 1);
-}
-
-/* Warning with explicit origin */
-int
-PyErr_WarnExplicit(PyObject *category, const char *text,
-                   const char *filename_str, int lineno,
-                   const char *module_str, PyObject *registry)
-{
-    PyObject *res;
-    PyObject *message = PyString_FromString(text);
-    PyObject *filename = PyString_FromString(filename_str);
-    PyObject *module = NULL;
-    int ret = -1;
-
-    if (message == NULL || filename == NULL)
-        goto exit;
-    if (module_str != NULL) {
-        module = PyString_FromString(module_str);
-            if (module == NULL)
-                goto exit;
-    }
-
-    if (category == NULL)
-        category = PyExc_RuntimeWarning;
-    res = warn_explicit(category, message, filename, lineno, module, registry,
-                        NULL);
-    if (res == NULL)
-        goto exit;
-    Py_DECREF(res);
-    ret = 0;
-
- exit:
-    Py_XDECREF(message);
-    Py_XDECREF(module);
-    Py_XDECREF(filename);
-    return ret;
-}
-
-
-PyDoc_STRVAR(warn_doc,
-"Issue a warning, or maybe ignore it or raise an exception.");
-
-PyDoc_STRVAR(warn_explicit_doc,
-"Low-level inferface to warnings functionality.");
-
-static PyMethodDef warnings_functions[] = {
-    {"warn", (PyCFunction)warnings_warn, METH_VARARGS | METH_KEYWORDS,
-        warn_doc},
-    {"warn_explicit", (PyCFunction)warnings_warn_explicit,
-        METH_VARARGS | METH_KEYWORDS, warn_explicit_doc},
-    /* XXX(brett.cannon): add showwarning? */
-    /* XXX(brett.cannon): Reasonable to add formatwarning? */
-    {NULL, NULL}	        /* sentinel */
-};
-
-
-static PyObject *
-create_filter(PyObject *category, const char *action)
-{
-    static PyObject *ignore_str = NULL;
-    static PyObject *error_str = NULL;
-    static PyObject *default_str = NULL;
-    PyObject *action_obj = NULL;
-    PyObject *lineno, *result;
-
-    if (!strcmp(action, "ignore")) {
-        if (ignore_str == NULL) {
-            ignore_str = PyString_InternFromString("ignore");
-            if (ignore_str == NULL)
-                return NULL;
-        }
-        action_obj = ignore_str;
-    }
-    else if (!strcmp(action, "error")) {
-        if (error_str == NULL) {
-            error_str = PyString_InternFromString("error");
-            if (error_str == NULL)
-                return NULL;
-        }
-        action_obj = error_str;
-    }
-    else if (!strcmp(action, "default")) {
-        if (default_str == NULL) {
-            default_str = PyString_InternFromString("default");
-            if (default_str == NULL)
-                return NULL;
-        }
-        action_obj = default_str;
-    }
-    else {
-        Py_FatalError("unknown action");
-    }
-
-    /* This assumes the line number is zero for now. */
-    lineno = PyInt_FromLong(0);
-    if (lineno == NULL)
-        return NULL;
-    result = PyTuple_Pack(5, action_obj, Py_None, category, Py_None, lineno);
-    Py_DECREF(lineno);
-    return result;
-}
-
-static PyObject *
-init_filters(void)
-{
-    /* Don't silence DeprecationWarning if -3 or -Q were used. */
-    PyObject *filters = PyList_New(Py_Py3kWarningFlag ||
-                                    Py_DivisionWarningFlag ? 3 : 4);
-    unsigned int pos = 0;  /* Post-incremented in each use. */
-    unsigned int x;
-    const char *bytes_action;
-
-    if (filters == NULL)
-        return NULL;
-
-    /* If guard changes, make sure to update 'filters' initialization above. */
-    if (!Py_Py3kWarningFlag && !Py_DivisionWarningFlag) {
-        PyList_SET_ITEM(filters, pos++,
-                        create_filter(PyExc_DeprecationWarning, "ignore"));
-    }
-    PyList_SET_ITEM(filters, pos++,
-                    create_filter(PyExc_PendingDeprecationWarning, "ignore"));
-    PyList_SET_ITEM(filters, pos++,
-                    create_filter(PyExc_ImportWarning, "ignore"));
-    if (Py_BytesWarningFlag > 1)
-        bytes_action = "error";
-    else if (Py_BytesWarningFlag)
-        bytes_action = "default";
-    else
-        bytes_action = "ignore";
-    PyList_SET_ITEM(filters, pos++, create_filter(PyExc_BytesWarning,
-                    bytes_action));
-
-    for (x = 0; x < pos; x += 1) {
-        if (PyList_GET_ITEM(filters, x) == NULL) {
-            Py_DECREF(filters);
-            return NULL;
-        }
-    }
-
-    return filters;
-}
-
-
-PyMODINIT_FUNC
-_PyWarnings_Init(void)
-{
-    PyObject *m;
-
-    m = Py_InitModule3(MODULE_NAME, warnings_functions, warnings__doc__);
-    if (m == NULL)
-        return;
-
-    _filters = init_filters();
-    if (_filters == NULL)
-        return;
-    Py_INCREF(_filters);
-    if (PyModule_AddObject(m, "filters", _filters) < 0)
-        return;
-
-    _once_registry = PyDict_New();
-    if (_once_registry == NULL)
-        return;
-    Py_INCREF(_once_registry);
-    if (PyModule_AddObject(m, "once_registry", _once_registry) < 0)
-        return;
-
-    _default_action = PyString_FromString("default");
-    if (_default_action == NULL)
-        return;
-    if (PyModule_AddObject(m, "default_action", _default_action) < 0)
-        return;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/asdl.c b/AppPkg/Applications/Python/Python-2.7.2/Python/asdl.c
deleted file mode 100644
index 5705758..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/asdl.c
+++ /dev/null
@@ -1,64 +0,0 @@
-#include "Python.h"
-#include "asdl.h"
-
-asdl_seq *
-asdl_seq_new(int size, PyArena *arena)
-{
-    asdl_seq *seq = NULL;
-    size_t n = (size ? (sizeof(void *) * (size - 1)) : 0);
-
-    /* check size is sane */
-    if (size < 0 || size == INT_MIN ||
-        (size && ((size - 1) > (PY_SIZE_MAX / sizeof(void *))))) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-
-    /* check if size can be added safely */
-    if (n > PY_SIZE_MAX - sizeof(asdl_seq)) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-
-    n += sizeof(asdl_seq);
-
-    seq = (asdl_seq *)PyArena_Malloc(arena, n);
-    if (!seq) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-    memset(seq, 0, n);
-    seq->size = size;
-    return seq;
-}
-
-asdl_int_seq *
-asdl_int_seq_new(int size, PyArena *arena)
-{
-    asdl_int_seq *seq = NULL;
-    size_t n = (size ? (sizeof(void *) * (size - 1)) : 0);
-
-    /* check size is sane */
-    if (size < 0 || size == INT_MIN ||
-        (size && ((size - 1) > (PY_SIZE_MAX / sizeof(void *))))) {
-            PyErr_NoMemory();
-            return NULL;
-    }
-
-    /* check if size can be added safely */
-    if (n > PY_SIZE_MAX - sizeof(asdl_seq)) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-
-    n += sizeof(asdl_seq);
-
-    seq = (asdl_int_seq *)PyArena_Malloc(arena, n);
-    if (!seq) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-    memset(seq, 0, n);
-    seq->size = size;
-    return seq;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/ast.c b/AppPkg/Applications/Python/Python-2.7.2/Python/ast.c
deleted file mode 100644
index 45b5a48..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/ast.c
+++ /dev/null
@@ -1,3558 +0,0 @@
-/*
- * This file includes functions to transform a concrete syntax tree (CST) to
- * an abstract syntax tree (AST).  The main function is PyAST_FromNode().
- *
- */
-#include "Python.h"
-#include "Python-ast.h"
-#include "grammar.h"
-#include "node.h"
-#include "pyarena.h"
-#include "ast.h"
-#include "token.h"
-#include "parsetok.h"
-#include "graminit.h"
-
-#include <assert.h>
-
-/* Data structure used internally */
-struct compiling {
-    char *c_encoding; /* source encoding */
-    int c_future_unicode; /* __future__ unicode literals flag */
-    PyArena *c_arena; /* arena for allocating memeory */
-    const char *c_filename; /* filename */
-};
-
-static asdl_seq *seq_for_testlist(struct compiling *, const node *);
-static expr_ty ast_for_expr(struct compiling *, const node *);
-static stmt_ty ast_for_stmt(struct compiling *, const node *);
-static asdl_seq *ast_for_suite(struct compiling *, const node *);
-static asdl_seq *ast_for_exprlist(struct compiling *, const node *,
-                                  expr_context_ty);
-static expr_ty ast_for_testlist(struct compiling *, const node *);
-static stmt_ty ast_for_classdef(struct compiling *, const node *, asdl_seq *);
-static expr_ty ast_for_testlist_comp(struct compiling *, const node *);
-
-/* Note different signature for ast_for_call */
-static expr_ty ast_for_call(struct compiling *, const node *, expr_ty);
-
-static PyObject *parsenumber(struct compiling *, const char *);
-static PyObject *parsestr(struct compiling *, const char *);
-static PyObject *parsestrplus(struct compiling *, const node *n);
-
-#ifndef LINENO
-#define LINENO(n)       ((n)->n_lineno)
-#endif
-
-#define COMP_GENEXP 0
-#define COMP_SETCOMP  1
-
-static identifier
-new_identifier(const char* n, PyArena *arena) {
-    PyObject* id = PyString_InternFromString(n);
-    if (id != NULL)
-        PyArena_AddPyObject(arena, id);
-    return id;
-}
-
-#define NEW_IDENTIFIER(n) new_identifier(STR(n), c->c_arena)
-
-/* This routine provides an invalid object for the syntax error.
-   The outermost routine must unpack this error and create the
-   proper object.  We do this so that we don't have to pass
-   the filename to everything function.
-
-   XXX Maybe we should just pass the filename...
-*/
-
-static int
-ast_error(const node *n, const char *errstr)
-{
-    PyObject *u = Py_BuildValue("zi", errstr, LINENO(n));
-    if (!u)
-        return 0;
-    PyErr_SetObject(PyExc_SyntaxError, u);
-    Py_DECREF(u);
-    return 0;
-}
-
-static void
-ast_error_finish(const char *filename)
-{
-    PyObject *type, *value, *tback, *errstr, *loc, *tmp;
-    long lineno;
-
-    assert(PyErr_Occurred());
-    if (!PyErr_ExceptionMatches(PyExc_SyntaxError))
-        return;
-
-    PyErr_Fetch(&type, &value, &tback);
-    errstr = PyTuple_GetItem(value, 0);
-    if (!errstr)
-        return;
-    Py_INCREF(errstr);
-    lineno = PyInt_AsLong(PyTuple_GetItem(value, 1));
-    if (lineno == -1) {
-        Py_DECREF(errstr);
-        return;
-    }
-    Py_DECREF(value);
-
-    loc = PyErr_ProgramText(filename, lineno);
-    if (!loc) {
-        Py_INCREF(Py_None);
-        loc = Py_None;
-    }
-    tmp = Py_BuildValue("(zlOO)", filename, lineno, Py_None, loc);
-    Py_DECREF(loc);
-    if (!tmp) {
-        Py_DECREF(errstr);
-        return;
-    }
-    value = PyTuple_Pack(2, errstr, tmp);
-    Py_DECREF(errstr);
-    Py_DECREF(tmp);
-    if (!value)
-        return;
-    PyErr_Restore(type, value, tback);
-}
-
-static int
-ast_warn(struct compiling *c, const node *n, char *msg)
-{
-    if (PyErr_WarnExplicit(PyExc_SyntaxWarning, msg, c->c_filename, LINENO(n),
-                           NULL, NULL) < 0) {
-        /* if -Werr, change it to a SyntaxError */
-        if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_SyntaxWarning))
-            ast_error(n, msg);
-        return 0;
-    }
-    return 1;
-}
-
-static int
-forbidden_check(struct compiling *c, const node *n, const char *x)
-{
-    if (!strcmp(x, "None"))
-        return ast_error(n, "cannot assign to None");
-    if (!strcmp(x, "__debug__"))
-        return ast_error(n, "cannot assign to __debug__");
-    if (Py_Py3kWarningFlag) {
-        if (!(strcmp(x, "True") && strcmp(x, "False")) &&
-            !ast_warn(c, n, "assignment to True or False is forbidden in 3.x"))
-            return 0;
-        if (!strcmp(x, "nonlocal") &&
-            !ast_warn(c, n, "nonlocal is a keyword in 3.x"))
-            return 0;
-    }
-    return 1;
-}
-
-/* num_stmts() returns number of contained statements.
-
-   Use this routine to determine how big a sequence is needed for
-   the statements in a parse tree.  Its raison d'etre is this bit of
-   grammar:
-
-   stmt: simple_stmt | compound_stmt
-   simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
-
-   A simple_stmt can contain multiple small_stmt elements joined
-   by semicolons.  If the arg is a simple_stmt, the number of
-   small_stmt elements is returned.
-*/
-
-static int
-num_stmts(const node *n)
-{
-    int i, l;
-    node *ch;
-
-    switch (TYPE(n)) {
-        case single_input:
-            if (TYPE(CHILD(n, 0)) == NEWLINE)
-                return 0;
-            else
-                return num_stmts(CHILD(n, 0));
-        case file_input:
-            l = 0;
-            for (i = 0; i < NCH(n); i++) {
-                ch = CHILD(n, i);
-                if (TYPE(ch) == stmt)
-                    l += num_stmts(ch);
-            }
-            return l;
-        case stmt:
-            return num_stmts(CHILD(n, 0));
-        case compound_stmt:
-            return 1;
-        case simple_stmt:
-            return NCH(n) / 2; /* Divide by 2 to remove count of semi-colons */
-        case suite:
-            if (NCH(n) == 1)
-                return num_stmts(CHILD(n, 0));
-            else {
-                l = 0;
-                for (i = 2; i < (NCH(n) - 1); i++)
-                    l += num_stmts(CHILD(n, i));
-                return l;
-            }
-        default: {
-            char buf[128];
-
-            sprintf(buf, "Non-statement found: %d %d",
-                    TYPE(n), NCH(n));
-            Py_FatalError(buf);
-        }
-    }
-    assert(0);
-    return 0;
-}
-
-/* Transform the CST rooted at node * to the appropriate AST
-*/
-
-mod_ty
-PyAST_FromNode(const node *n, PyCompilerFlags *flags, const char *filename,
-               PyArena *arena)
-{
-    int i, j, k, num;
-    asdl_seq *stmts = NULL;
-    stmt_ty s;
-    node *ch;
-    struct compiling c;
-
-    if (flags && flags->cf_flags & PyCF_SOURCE_IS_UTF8) {
-        c.c_encoding = "utf-8";
-        if (TYPE(n) == encoding_decl) {
-            ast_error(n, "encoding declaration in Unicode string");
-            goto error;
-        }
-    } else if (TYPE(n) == encoding_decl) {
-        c.c_encoding = STR(n);
-        n = CHILD(n, 0);
-    } else {
-        c.c_encoding = NULL;
-    }
-    c.c_future_unicode = flags && flags->cf_flags & CO_FUTURE_UNICODE_LITERALS;
-    c.c_arena = arena;
-    c.c_filename = filename;
-
-    k = 0;
-    switch (TYPE(n)) {
-        case file_input:
-            stmts = asdl_seq_new(num_stmts(n), arena);
-            if (!stmts)
-                return NULL;
-            for (i = 0; i < NCH(n) - 1; i++) {
-                ch = CHILD(n, i);
-                if (TYPE(ch) == NEWLINE)
-                    continue;
-                REQ(ch, stmt);
-                num = num_stmts(ch);
-                if (num == 1) {
-                    s = ast_for_stmt(&c, ch);
-                    if (!s)
-                        goto error;
-                    asdl_seq_SET(stmts, k++, s);
-                }
-                else {
-                    ch = CHILD(ch, 0);
-                    REQ(ch, simple_stmt);
-                    for (j = 0; j < num; j++) {
-                        s = ast_for_stmt(&c, CHILD(ch, j * 2));
-                        if (!s)
-                            goto error;
-                        asdl_seq_SET(stmts, k++, s);
-                    }
-                }
-            }
-            return Module(stmts, arena);
-        case eval_input: {
-            expr_ty testlist_ast;
-
-            /* XXX Why not comp_for here? */
-            testlist_ast = ast_for_testlist(&c, CHILD(n, 0));
-            if (!testlist_ast)
-                goto error;
-            return Expression(testlist_ast, arena);
-        }
-        case single_input:
-            if (TYPE(CHILD(n, 0)) == NEWLINE) {
-                stmts = asdl_seq_new(1, arena);
-                if (!stmts)
-                    goto error;
-                asdl_seq_SET(stmts, 0, Pass(n->n_lineno, n->n_col_offset,
-                                            arena));
-                if (!asdl_seq_GET(stmts, 0))
-                    goto error;
-                return Interactive(stmts, arena);
-            }
-            else {
-                n = CHILD(n, 0);
-                num = num_stmts(n);
-                stmts = asdl_seq_new(num, arena);
-                if (!stmts)
-                    goto error;
-                if (num == 1) {
-                    s = ast_for_stmt(&c, n);
-                    if (!s)
-                        goto error;
-                    asdl_seq_SET(stmts, 0, s);
-                }
-                else {
-                    /* Only a simple_stmt can contain multiple statements. */
-                    REQ(n, simple_stmt);
-                    for (i = 0; i < NCH(n); i += 2) {
-                        if (TYPE(CHILD(n, i)) == NEWLINE)
-                            break;
-                        s = ast_for_stmt(&c, CHILD(n, i));
-                        if (!s)
-                            goto error;
-                        asdl_seq_SET(stmts, i / 2, s);
-                    }
-                }
-
-                return Interactive(stmts, arena);
-            }
-        default:
-            PyErr_Format(PyExc_SystemError,
-                         "invalid node %d for PyAST_FromNode", TYPE(n));
-            goto error;
-    }
- error:
-    ast_error_finish(filename);
-    return NULL;
-}
-
-/* Return the AST repr. of the operator represented as syntax (|, ^, etc.)
-*/
-
-static operator_ty
-get_operator(const node *n)
-{
-    switch (TYPE(n)) {
-        case VBAR:
-            return BitOr;
-        case CIRCUMFLEX:
-            return BitXor;
-        case AMPER:
-            return BitAnd;
-        case LEFTSHIFT:
-            return LShift;
-        case RIGHTSHIFT:
-            return RShift;
-        case PLUS:
-            return Add;
-        case MINUS:
-            return Sub;
-        case STAR:
-            return Mult;
-        case SLASH:
-            return Div;
-        case DOUBLESLASH:
-            return FloorDiv;
-        case PERCENT:
-            return Mod;
-        default:
-            return (operator_ty)0;
-    }
-}
-
-/* Set the context ctx for expr_ty e, recursively traversing e.
-
-   Only sets context for expr kinds that "can appear in assignment context"
-   (according to ../Parser/Python.asdl).  For other expr kinds, it sets
-   an appropriate syntax error and returns false.
-*/
-
-static int
-set_context(struct compiling *c, expr_ty e, expr_context_ty ctx, const node *n)
-{
-    asdl_seq *s = NULL;
-    /* If a particular expression type can't be used for assign / delete,
-       set expr_name to its name and an error message will be generated.
-    */
-    const char* expr_name = NULL;
-
-    /* The ast defines augmented store and load contexts, but the
-       implementation here doesn't actually use them.  The code may be
-       a little more complex than necessary as a result.  It also means
-       that expressions in an augmented assignment have a Store context.
-       Consider restructuring so that augmented assignment uses
-       set_context(), too.
-    */
-    assert(ctx != AugStore && ctx != AugLoad);
-
-    switch (e->kind) {
-        case Attribute_kind:
-            if (ctx == Store && !forbidden_check(c, n,
-                                PyBytes_AS_STRING(e->v.Attribute.attr)))
-                    return 0;
-            e->v.Attribute.ctx = ctx;
-            break;
-        case Subscript_kind:
-            e->v.Subscript.ctx = ctx;
-            break;
-        case Name_kind:
-            if (ctx == Store && !forbidden_check(c, n,
-                                PyBytes_AS_STRING(e->v.Name.id)))
-                    return 0;
-            e->v.Name.ctx = ctx;
-            break;
-        case List_kind:
-            e->v.List.ctx = ctx;
-            s = e->v.List.elts;
-            break;
-        case Tuple_kind:
-            if (asdl_seq_LEN(e->v.Tuple.elts))  {
-                e->v.Tuple.ctx = ctx;
-                s = e->v.Tuple.elts;
-            }
-            else {
-                expr_name = "()";
-            }
-            break;
-        case Lambda_kind:
-            expr_name = "lambda";
-            break;
-        case Call_kind:
-            expr_name = "function call";
-            break;
-        case BoolOp_kind:
-        case BinOp_kind:
-        case UnaryOp_kind:
-            expr_name = "operator";
-            break;
-        case GeneratorExp_kind:
-            expr_name = "generator expression";
-            break;
-        case Yield_kind:
-            expr_name = "yield expression";
-            break;
-        case ListComp_kind:
-            expr_name = "list comprehension";
-            break;
-        case SetComp_kind:
-            expr_name = "set comprehension";
-            break;
-        case DictComp_kind:
-            expr_name = "dict comprehension";
-            break;
-        case Dict_kind:
-        case Set_kind:
-        case Num_kind:
-        case Str_kind:
-            expr_name = "literal";
-            break;
-        case Compare_kind:
-            expr_name = "comparison";
-            break;
-        case Repr_kind:
-            expr_name = "repr";
-            break;
-        case IfExp_kind:
-            expr_name = "conditional expression";
-            break;
-        default:
-            PyErr_Format(PyExc_SystemError,
-                         "unexpected expression in assignment %d (line %d)",
-                         e->kind, e->lineno);
-            return 0;
-    }
-    /* Check for error string set by switch */
-    if (expr_name) {
-        char buf[300];
-        PyOS_snprintf(buf, sizeof(buf),
-                      "can't %s %s",
-                      ctx == Store ? "assign to" : "delete",
-                      expr_name);
-        return ast_error(n, buf);
-    }
-
-    /* If the LHS is a list or tuple, we need to set the assignment
-       context for all the contained elements.
-    */
-    if (s) {
-        int i;
-
-        for (i = 0; i < asdl_seq_LEN(s); i++) {
-            if (!set_context(c, (expr_ty)asdl_seq_GET(s, i), ctx, n))
-                return 0;
-        }
-    }
-    return 1;
-}
-
-static operator_ty
-ast_for_augassign(struct compiling *c, const node *n)
-{
-    REQ(n, augassign);
-    n = CHILD(n, 0);
-    switch (STR(n)[0]) {
-        case '+':
-            return Add;
-        case '-':
-            return Sub;
-        case '/':
-            if (STR(n)[1] == '/')
-                return FloorDiv;
-            else
-                return Div;
-        case '%':
-            return Mod;
-        case '<':
-            return LShift;
-        case '>':
-            return RShift;
-        case '&':
-            return BitAnd;
-        case '^':
-            return BitXor;
-        case '|':
-            return BitOr;
-        case '*':
-            if (STR(n)[1] == '*')
-                return Pow;
-            else
-                return Mult;
-        default:
-            PyErr_Format(PyExc_SystemError, "invalid augassign: %s", STR(n));
-            return (operator_ty)0;
-    }
-}
-
-static cmpop_ty
-ast_for_comp_op(struct compiling *c, const node *n)
-{
-    /* comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'
-               |'is' 'not'
-    */
-    REQ(n, comp_op);
-    if (NCH(n) == 1) {
-        n = CHILD(n, 0);
-        switch (TYPE(n)) {
-            case LESS:
-                return Lt;
-            case GREATER:
-                return Gt;
-            case EQEQUAL:                       /* == */
-                return Eq;
-            case LESSEQUAL:
-                return LtE;
-            case GREATEREQUAL:
-                return GtE;
-            case NOTEQUAL:
-                return NotEq;
-            case NAME:
-                if (strcmp(STR(n), "in") == 0)
-                    return In;
-                if (strcmp(STR(n), "is") == 0)
-                    return Is;
-            default:
-                PyErr_Format(PyExc_SystemError, "invalid comp_op: %s",
-                             STR(n));
-                return (cmpop_ty)0;
-        }
-    }
-    else if (NCH(n) == 2) {
-        /* handle "not in" and "is not" */
-        switch (TYPE(CHILD(n, 0))) {
-            case NAME:
-                if (strcmp(STR(CHILD(n, 1)), "in") == 0)
-                    return NotIn;
-                if (strcmp(STR(CHILD(n, 0)), "is") == 0)
-                    return IsNot;
-            default:
-                PyErr_Format(PyExc_SystemError, "invalid comp_op: %s %s",
-                             STR(CHILD(n, 0)), STR(CHILD(n, 1)));
-                return (cmpop_ty)0;
-        }
-    }
-    PyErr_Format(PyExc_SystemError, "invalid comp_op: has %d children",
-                 NCH(n));
-    return (cmpop_ty)0;
-}
-
-static asdl_seq *
-seq_for_testlist(struct compiling *c, const node *n)
-{
-    /* testlist: test (',' test)* [','] */
-    asdl_seq *seq;
-    expr_ty expression;
-    int i;
-    assert(TYPE(n) == testlist ||
-           TYPE(n) == listmaker ||
-           TYPE(n) == testlist_comp ||
-           TYPE(n) == testlist_safe ||
-           TYPE(n) == testlist1);
-
-    seq = asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
-    if (!seq)
-        return NULL;
-
-    for (i = 0; i < NCH(n); i += 2) {
-        assert(TYPE(CHILD(n, i)) == test || TYPE(CHILD(n, i)) == old_test);
-
-        expression = ast_for_expr(c, CHILD(n, i));
-        if (!expression)
-            return NULL;
-
-        assert(i / 2 < seq->size);
-        asdl_seq_SET(seq, i / 2, expression);
-    }
-    return seq;
-}
-
-static expr_ty
-compiler_complex_args(struct compiling *c, const node *n)
-{
-    int i, len = (NCH(n) + 1) / 2;
-    expr_ty result;
-    asdl_seq *args = asdl_seq_new(len, c->c_arena);
-    if (!args)
-        return NULL;
-
-    /* fpdef: NAME | '(' fplist ')'
-       fplist: fpdef (',' fpdef)* [',']
-    */
-    REQ(n, fplist);
-    for (i = 0; i < len; i++) {
-        PyObject *arg_id;
-        const node *fpdef_node = CHILD(n, 2*i);
-        const node *child;
-        expr_ty arg;
-set_name:
-        /* fpdef_node is either a NAME or an fplist */
-        child = CHILD(fpdef_node, 0);
-        if (TYPE(child) == NAME) {
-            if (!forbidden_check(c, n, STR(child)))
-                return NULL;
-            arg_id = NEW_IDENTIFIER(child);
-            if (!arg_id)
-                return NULL;
-            arg = Name(arg_id, Store, LINENO(child), child->n_col_offset,
-                       c->c_arena);
-        }
-        else {
-            assert(TYPE(fpdef_node) == fpdef);
-            /* fpdef_node[0] is not a name, so it must be '(', get CHILD[1] */
-            child = CHILD(fpdef_node, 1);
-            assert(TYPE(child) == fplist);
-            /* NCH == 1 means we have (x), we need to elide the extra parens */
-            if (NCH(child) == 1) {
-                fpdef_node = CHILD(child, 0);
-                assert(TYPE(fpdef_node) == fpdef);
-                goto set_name;
-            }
-            arg = compiler_complex_args(c, child);
-        }
-        asdl_seq_SET(args, i, arg);
-    }
-
-    result = Tuple(args, Store, LINENO(n), n->n_col_offset, c->c_arena);
-    if (!set_context(c, result, Store, n))
-        return NULL;
-    return result;
-}
-
-
-/* Create AST for argument list. */
-
-static arguments_ty
-ast_for_arguments(struct compiling *c, const node *n)
-{
-    /* parameters: '(' [varargslist] ')'
-       varargslist: (fpdef ['=' test] ',')* ('*' NAME [',' '**' NAME]
-            | '**' NAME) | fpdef ['=' test] (',' fpdef ['=' test])* [',']
-    */
-    int i, j, k, n_args = 0, n_defaults = 0, found_default = 0;
-    asdl_seq *args, *defaults;
-    identifier vararg = NULL, kwarg = NULL;
-    node *ch;
-
-    if (TYPE(n) == parameters) {
-        if (NCH(n) == 2) /* () as argument list */
-            return arguments(NULL, NULL, NULL, NULL, c->c_arena);
-        n = CHILD(n, 1);
-    }
-    REQ(n, varargslist);
-
-    /* first count the number of normal args & defaults */
-    for (i = 0; i < NCH(n); i++) {
-        ch = CHILD(n, i);
-        if (TYPE(ch) == fpdef)
-            n_args++;
-        if (TYPE(ch) == EQUAL)
-            n_defaults++;
-    }
-    args = (n_args ? asdl_seq_new(n_args, c->c_arena) : NULL);
-    if (!args && n_args)
-        return NULL;
-    defaults = (n_defaults ? asdl_seq_new(n_defaults, c->c_arena) : NULL);
-    if (!defaults && n_defaults)
-        return NULL;
-
-    /* fpdef: NAME | '(' fplist ')'
-       fplist: fpdef (',' fpdef)* [',']
-    */
-    i = 0;
-    j = 0;  /* index for defaults */
-    k = 0;  /* index for args */
-    while (i < NCH(n)) {
-        ch = CHILD(n, i);
-        switch (TYPE(ch)) {
-            case fpdef: {
-                int complex_args = 0, parenthesized = 0;
-            handle_fpdef:
-                /* XXX Need to worry about checking if TYPE(CHILD(n, i+1)) is
-                   anything other than EQUAL or a comma? */
-                /* XXX Should NCH(n) check be made a separate check? */
-                if (i + 1 < NCH(n) && TYPE(CHILD(n, i + 1)) == EQUAL) {
-                    expr_ty expression = ast_for_expr(c, CHILD(n, i + 2));
-                    if (!expression)
-                        return NULL;
-                    assert(defaults != NULL);
-                    asdl_seq_SET(defaults, j++, expression);
-                    i += 2;
-                    found_default = 1;
-                }
-                else if (found_default) {
-                    /* def f((x)=4): pass should raise an error.
-                       def f((x, (y))): pass will just incur the tuple unpacking warning. */
-                    if (parenthesized && !complex_args) {
-                        ast_error(n, "parenthesized arg with default");
-                        return NULL;
-                    }
-                    ast_error(n,
-                             "non-default argument follows default argument");
-                    return NULL;
-                }
-                if (NCH(ch) == 3) {
-                    ch = CHILD(ch, 1);
-                    /* def foo((x)): is not complex, special case. */
-                    if (NCH(ch) != 1) {
-                        /* We have complex arguments, setup for unpacking. */
-                        if (Py_Py3kWarningFlag && !ast_warn(c, ch,
-                            "tuple parameter unpacking has been removed in 3.x"))
-                            return NULL;
-                        complex_args = 1;
-                        asdl_seq_SET(args, k++, compiler_complex_args(c, ch));
-                        if (!asdl_seq_GET(args, k-1))
-                                return NULL;
-                    } else {
-                        /* def foo((x)): setup for checking NAME below. */
-                        /* Loop because there can be many parens and tuple
-                           unpacking mixed in. */
-                        parenthesized = 1;
-                        ch = CHILD(ch, 0);
-                        assert(TYPE(ch) == fpdef);
-                        goto handle_fpdef;
-                    }
-                }
-                if (TYPE(CHILD(ch, 0)) == NAME) {
-                    PyObject *id;
-                    expr_ty name;
-                    if (!forbidden_check(c, n, STR(CHILD(ch, 0))))
-                        return NULL;
-                    id = NEW_IDENTIFIER(CHILD(ch, 0));
-                    if (!id)
-                        return NULL;
-                    name = Name(id, Param, LINENO(ch), ch->n_col_offset,
-                                c->c_arena);
-                    if (!name)
-                        return NULL;
-                    asdl_seq_SET(args, k++, name);
-
-                }
-                i += 2; /* the name and the comma */
-                if (parenthesized && Py_Py3kWarningFlag &&
-                    !ast_warn(c, ch, "parenthesized argument names "
-                              "are invalid in 3.x"))
-                    return NULL;
-
-                break;
-            }
-            case STAR:
-                if (!forbidden_check(c, CHILD(n, i+1), STR(CHILD(n, i+1))))
-                    return NULL;
-                vararg = NEW_IDENTIFIER(CHILD(n, i+1));
-                if (!vararg)
-                    return NULL;
-                i += 3;
-                break;
-            case DOUBLESTAR:
-                if (!forbidden_check(c, CHILD(n, i+1), STR(CHILD(n, i+1))))
-                    return NULL;
-                kwarg = NEW_IDENTIFIER(CHILD(n, i+1));
-                if (!kwarg)
-                    return NULL;
-                i += 3;
-                break;
-            default:
-                PyErr_Format(PyExc_SystemError,
-                             "unexpected node in varargslist: %d @ %d",
-                             TYPE(ch), i);
-                return NULL;
-        }
-    }
-
-    return arguments(args, vararg, kwarg, defaults, c->c_arena);
-}
-
-static expr_ty
-ast_for_dotted_name(struct compiling *c, const node *n)
-{
-    expr_ty e;
-    identifier id;
-    int lineno, col_offset;
-    int i;
-
-    REQ(n, dotted_name);
-
-    lineno = LINENO(n);
-    col_offset = n->n_col_offset;
-
-    id = NEW_IDENTIFIER(CHILD(n, 0));
-    if (!id)
-        return NULL;
-    e = Name(id, Load, lineno, col_offset, c->c_arena);
-    if (!e)
-        return NULL;
-
-    for (i = 2; i < NCH(n); i+=2) {
-        id = NEW_IDENTIFIER(CHILD(n, i));
-        if (!id)
-            return NULL;
-        e = Attribute(e, id, Load, lineno, col_offset, c->c_arena);
-        if (!e)
-            return NULL;
-    }
-
-    return e;
-}
-
-static expr_ty
-ast_for_decorator(struct compiling *c, const node *n)
-{
-    /* decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE */
-    expr_ty d = NULL;
-    expr_ty name_expr;
-
-    REQ(n, decorator);
-    REQ(CHILD(n, 0), AT);
-    REQ(RCHILD(n, -1), NEWLINE);
-
-    name_expr = ast_for_dotted_name(c, CHILD(n, 1));
-    if (!name_expr)
-        return NULL;
-
-    if (NCH(n) == 3) { /* No arguments */
-        d = name_expr;
-        name_expr = NULL;
-    }
-    else if (NCH(n) == 5) { /* Call with no arguments */
-        d = Call(name_expr, NULL, NULL, NULL, NULL, LINENO(n),
-                 n->n_col_offset, c->c_arena);
-        if (!d)
-            return NULL;
-        name_expr = NULL;
-    }
-    else {
-        d = ast_for_call(c, CHILD(n, 3), name_expr);
-        if (!d)
-            return NULL;
-        name_expr = NULL;
-    }
-
-    return d;
-}
-
-static asdl_seq*
-ast_for_decorators(struct compiling *c, const node *n)
-{
-    asdl_seq* decorator_seq;
-    expr_ty d;
-    int i;
-
-    REQ(n, decorators);
-    decorator_seq = asdl_seq_new(NCH(n), c->c_arena);
-    if (!decorator_seq)
-        return NULL;
-
-    for (i = 0; i < NCH(n); i++) {
-        d = ast_for_decorator(c, CHILD(n, i));
-        if (!d)
-            return NULL;
-        asdl_seq_SET(decorator_seq, i, d);
-    }
-    return decorator_seq;
-}
-
-static stmt_ty
-ast_for_funcdef(struct compiling *c, const node *n, asdl_seq *decorator_seq)
-{
-    /* funcdef: 'def' NAME parameters ':' suite */
-    identifier name;
-    arguments_ty args;
-    asdl_seq *body;
-    int name_i = 1;
-
-    REQ(n, funcdef);
-
-    name = NEW_IDENTIFIER(CHILD(n, name_i));
-    if (!name)
-        return NULL;
-    else if (!forbidden_check(c, CHILD(n, name_i), STR(CHILD(n, name_i))))
-        return NULL;
-    args = ast_for_arguments(c, CHILD(n, name_i + 1));
-    if (!args)
-        return NULL;
-    body = ast_for_suite(c, CHILD(n, name_i + 3));
-    if (!body)
-        return NULL;
-
-    return FunctionDef(name, args, body, decorator_seq, LINENO(n),
-                       n->n_col_offset, c->c_arena);
-}
-
-static stmt_ty
-ast_for_decorated(struct compiling *c, const node *n)
-{
-    /* decorated: decorators (classdef | funcdef) */
-    stmt_ty thing = NULL;
-    asdl_seq *decorator_seq = NULL;
-
-    REQ(n, decorated);
-
-    decorator_seq = ast_for_decorators(c, CHILD(n, 0));
-    if (!decorator_seq)
-      return NULL;
-
-    assert(TYPE(CHILD(n, 1)) == funcdef ||
-	   TYPE(CHILD(n, 1)) == classdef);
-
-    if (TYPE(CHILD(n, 1)) == funcdef) {
-      thing = ast_for_funcdef(c, CHILD(n, 1), decorator_seq);
-    } else if (TYPE(CHILD(n, 1)) == classdef) {
-      thing = ast_for_classdef(c, CHILD(n, 1), decorator_seq);
-    }
-    /* we count the decorators in when talking about the class' or
-       function's line number */
-    if (thing) {
-        thing->lineno = LINENO(n);
-        thing->col_offset = n->n_col_offset;
-    }
-    return thing;
-}
-
-static expr_ty
-ast_for_lambdef(struct compiling *c, const node *n)
-{
-    /* lambdef: 'lambda' [varargslist] ':' test */
-    arguments_ty args;
-    expr_ty expression;
-
-    if (NCH(n) == 3) {
-        args = arguments(NULL, NULL, NULL, NULL, c->c_arena);
-        if (!args)
-            return NULL;
-        expression = ast_for_expr(c, CHILD(n, 2));
-        if (!expression)
-            return NULL;
-    }
-    else {
-        args = ast_for_arguments(c, CHILD(n, 1));
-        if (!args)
-            return NULL;
-        expression = ast_for_expr(c, CHILD(n, 3));
-        if (!expression)
-            return NULL;
-    }
-
-    return Lambda(args, expression, LINENO(n), n->n_col_offset, c->c_arena);
-}
-
-static expr_ty
-ast_for_ifexpr(struct compiling *c, const node *n)
-{
-    /* test: or_test 'if' or_test 'else' test */
-    expr_ty expression, body, orelse;
-
-    assert(NCH(n) == 5);
-    body = ast_for_expr(c, CHILD(n, 0));
-    if (!body)
-        return NULL;
-    expression = ast_for_expr(c, CHILD(n, 2));
-    if (!expression)
-        return NULL;
-    orelse = ast_for_expr(c, CHILD(n, 4));
-    if (!orelse)
-        return NULL;
-    return IfExp(expression, body, orelse, LINENO(n), n->n_col_offset,
-                 c->c_arena);
-}
-
-/* XXX(nnorwitz): the listcomp and genexpr code should be refactored
-   so there is only a single version.  Possibly for loops can also re-use
-   the code.
-*/
-
-/* Count the number of 'for' loop in a list comprehension.
-
-   Helper for ast_for_listcomp().
-*/
-
-static int
-count_list_fors(struct compiling *c, const node *n)
-{
-    int n_fors = 0;
-    node *ch = CHILD(n, 1);
-
- count_list_for:
-    n_fors++;
-    REQ(ch, list_for);
-    if (NCH(ch) == 5)
-        ch = CHILD(ch, 4);
-    else
-        return n_fors;
- count_list_iter:
-    REQ(ch, list_iter);
-    ch = CHILD(ch, 0);
-    if (TYPE(ch) == list_for)
-        goto count_list_for;
-    else if (TYPE(ch) == list_if) {
-        if (NCH(ch) == 3) {
-            ch = CHILD(ch, 2);
-            goto count_list_iter;
-        }
-        else
-            return n_fors;
-    }
-
-    /* Should never be reached */
-    PyErr_SetString(PyExc_SystemError, "logic error in count_list_fors");
-    return -1;
-}
-
-/* Count the number of 'if' statements in a list comprehension.
-
-   Helper for ast_for_listcomp().
-*/
-
-static int
-count_list_ifs(struct compiling *c, const node *n)
-{
-    int n_ifs = 0;
-
- count_list_iter:
-    REQ(n, list_iter);
-    if (TYPE(CHILD(n, 0)) == list_for)
-        return n_ifs;
-    n = CHILD(n, 0);
-    REQ(n, list_if);
-    n_ifs++;
-    if (NCH(n) == 2)
-        return n_ifs;
-    n = CHILD(n, 2);
-    goto count_list_iter;
-}
-
-static expr_ty
-ast_for_listcomp(struct compiling *c, const node *n)
-{
-    /* listmaker: test ( list_for | (',' test)* [','] )
-       list_for: 'for' exprlist 'in' testlist_safe [list_iter]
-       list_iter: list_for | list_if
-       list_if: 'if' test [list_iter]
-       testlist_safe: test [(',' test)+ [',']]
-    */
-    expr_ty elt, first;
-    asdl_seq *listcomps;
-    int i, n_fors;
-    node *ch;
-
-    REQ(n, listmaker);
-    assert(NCH(n) > 1);
-
-    elt = ast_for_expr(c, CHILD(n, 0));
-    if (!elt)
-        return NULL;
-
-    n_fors = count_list_fors(c, n);
-    if (n_fors == -1)
-        return NULL;
-
-    listcomps = asdl_seq_new(n_fors, c->c_arena);
-    if (!listcomps)
-        return NULL;
-
-    ch = CHILD(n, 1);
-    for (i = 0; i < n_fors; i++) {
-        comprehension_ty lc;
-        asdl_seq *t;
-        expr_ty expression;
-        node *for_ch;
-
-        REQ(ch, list_for);
-
-        for_ch = CHILD(ch, 1);
-        t = ast_for_exprlist(c, for_ch, Store);
-        if (!t)
-            return NULL;
-        expression = ast_for_testlist(c, CHILD(ch, 3));
-        if (!expression)
-            return NULL;
-
-        /* Check the # of children rather than the length of t, since
-           [x for x, in ... ] has 1 element in t, but still requires a Tuple.
-        */
-        first = (expr_ty)asdl_seq_GET(t, 0);
-        if (NCH(for_ch) == 1)
-            lc = comprehension(first, expression, NULL, c->c_arena);
-        else
-            lc = comprehension(Tuple(t, Store, first->lineno, first->col_offset,
-                                     c->c_arena),
-                               expression, NULL, c->c_arena);
-        if (!lc)
-            return NULL;
-
-        if (NCH(ch) == 5) {
-            int j, n_ifs;
-            asdl_seq *ifs;
-            expr_ty list_for_expr;
-
-            ch = CHILD(ch, 4);
-            n_ifs = count_list_ifs(c, ch);
-            if (n_ifs == -1)
-                return NULL;
-
-            ifs = asdl_seq_new(n_ifs, c->c_arena);
-            if (!ifs)
-                return NULL;
-
-            for (j = 0; j < n_ifs; j++) {
-                REQ(ch, list_iter);
-                ch = CHILD(ch, 0);
-                REQ(ch, list_if);
-
-                list_for_expr = ast_for_expr(c, CHILD(ch, 1));
-                if (!list_for_expr)
-                    return NULL;
-
-                asdl_seq_SET(ifs, j, list_for_expr);
-                if (NCH(ch) == 3)
-                    ch = CHILD(ch, 2);
-            }
-            /* on exit, must guarantee that ch is a list_for */
-            if (TYPE(ch) == list_iter)
-                ch = CHILD(ch, 0);
-            lc->ifs = ifs;
-        }
-        asdl_seq_SET(listcomps, i, lc);
-    }
-
-    return ListComp(elt, listcomps, LINENO(n), n->n_col_offset, c->c_arena);
-}
-
-/*
-   Count the number of 'for' loops in a comprehension.
-
-   Helper for ast_for_comprehension().
-*/
-
-static int
-count_comp_fors(struct compiling *c, const node *n)
-{
-    int n_fors = 0;
-
-  count_comp_for:
-    n_fors++;
-    REQ(n, comp_for);
-    if (NCH(n) == 5)
-        n = CHILD(n, 4);
-    else
-        return n_fors;
-  count_comp_iter:
-    REQ(n, comp_iter);
-    n = CHILD(n, 0);
-    if (TYPE(n) == comp_for)
-        goto count_comp_for;
-    else if (TYPE(n) == comp_if) {
-        if (NCH(n) == 3) {
-            n = CHILD(n, 2);
-            goto count_comp_iter;
-        }
-        else
-            return n_fors;
-    }
-
-    /* Should never be reached */
-    PyErr_SetString(PyExc_SystemError,
-                    "logic error in count_comp_fors");
-    return -1;
-}
-
-/* Count the number of 'if' statements in a comprehension.
-
-   Helper for ast_for_comprehension().
-*/
-
-static int
-count_comp_ifs(struct compiling *c, const node *n)
-{
-    int n_ifs = 0;
-
-    while (1) {
-        REQ(n, comp_iter);
-        if (TYPE(CHILD(n, 0)) == comp_for)
-            return n_ifs;
-        n = CHILD(n, 0);
-        REQ(n, comp_if);
-        n_ifs++;
-        if (NCH(n) == 2)
-            return n_ifs;
-        n = CHILD(n, 2);
-    }
-}
-
-static asdl_seq *
-ast_for_comprehension(struct compiling *c, const node *n)
-{
-    int i, n_fors;
-    asdl_seq *comps;
-
-    n_fors = count_comp_fors(c, n);
-    if (n_fors == -1)
-        return NULL;
-
-    comps = asdl_seq_new(n_fors, c->c_arena);
-    if (!comps)
-        return NULL;
-
-    for (i = 0; i < n_fors; i++) {
-        comprehension_ty comp;
-        asdl_seq *t;
-        expr_ty expression, first;
-        node *for_ch;
-
-        REQ(n, comp_for);
-
-        for_ch = CHILD(n, 1);
-        t = ast_for_exprlist(c, for_ch, Store);
-        if (!t)
-            return NULL;
-        expression = ast_for_expr(c, CHILD(n, 3));
-        if (!expression)
-            return NULL;
-
-        /* Check the # of children rather than the length of t, since
-           (x for x, in ...) has 1 element in t, but still requires a Tuple. */
-        first = (expr_ty)asdl_seq_GET(t, 0);
-        if (NCH(for_ch) == 1)
-            comp = comprehension(first, expression, NULL, c->c_arena);
-        else
-            comp = comprehension(Tuple(t, Store, first->lineno, first->col_offset,
-                                     c->c_arena),
-                               expression, NULL, c->c_arena);
-        if (!comp)
-            return NULL;
-
-        if (NCH(n) == 5) {
-            int j, n_ifs;
-            asdl_seq *ifs;
-
-            n = CHILD(n, 4);
-            n_ifs = count_comp_ifs(c, n);
-            if (n_ifs == -1)
-                return NULL;
-
-            ifs = asdl_seq_new(n_ifs, c->c_arena);
-            if (!ifs)
-                return NULL;
-
-            for (j = 0; j < n_ifs; j++) {
-                REQ(n, comp_iter);
-                n = CHILD(n, 0);
-                REQ(n, comp_if);
-
-                expression = ast_for_expr(c, CHILD(n, 1));
-                if (!expression)
-                    return NULL;
-                asdl_seq_SET(ifs, j, expression);
-                if (NCH(n) == 3)
-                    n = CHILD(n, 2);
-            }
-            /* on exit, must guarantee that n is a comp_for */
-            if (TYPE(n) == comp_iter)
-                n = CHILD(n, 0);
-            comp->ifs = ifs;
-        }
-        asdl_seq_SET(comps, i, comp);
-    }
-    return comps;
-}
-
-static expr_ty
-ast_for_itercomp(struct compiling *c, const node *n, int type)
-{
-    expr_ty elt;
-    asdl_seq *comps;
-
-    assert(NCH(n) > 1);
-
-    elt = ast_for_expr(c, CHILD(n, 0));
-    if (!elt)
-        return NULL;
-
-    comps = ast_for_comprehension(c, CHILD(n, 1));
-    if (!comps)
-        return NULL;
-
-    if (type == COMP_GENEXP)
-        return GeneratorExp(elt, comps, LINENO(n), n->n_col_offset, c->c_arena);
-    else if (type == COMP_SETCOMP)
-        return SetComp(elt, comps, LINENO(n), n->n_col_offset, c->c_arena);
-    else
-        /* Should never happen */
-        return NULL;
-}
-
-static expr_ty
-ast_for_dictcomp(struct compiling *c, const node *n)
-{
-    expr_ty key, value;
-    asdl_seq *comps;
-
-    assert(NCH(n) > 3);
-    REQ(CHILD(n, 1), COLON);
-
-    key = ast_for_expr(c, CHILD(n, 0));
-    if (!key)
-        return NULL;
-
-    value = ast_for_expr(c, CHILD(n, 2));
-    if (!value)
-        return NULL;
-
-    comps = ast_for_comprehension(c, CHILD(n, 3));
-    if (!comps)
-        return NULL;
-
-    return DictComp(key, value, comps, LINENO(n), n->n_col_offset, c->c_arena);
-}
-
-static expr_ty
-ast_for_genexp(struct compiling *c, const node *n)
-{
-    assert(TYPE(n) == (testlist_comp) || TYPE(n) == (argument));
-    return ast_for_itercomp(c, n, COMP_GENEXP);
-}
-
-static expr_ty
-ast_for_setcomp(struct compiling *c, const node *n)
-{
-    assert(TYPE(n) == (dictorsetmaker));
-    return ast_for_itercomp(c, n, COMP_SETCOMP);
-}
-
-static expr_ty
-ast_for_atom(struct compiling *c, const node *n)
-{
-    /* atom: '(' [yield_expr|testlist_comp] ')' | '[' [listmaker] ']'
-       | '{' [dictmaker] '}' | '`' testlist '`' | NAME | NUMBER | STRING+
-    */
-    node *ch = CHILD(n, 0);
-
-    switch (TYPE(ch)) {
-    case NAME: {
-        /* All names start in Load context, but may later be
-           changed. */
-        PyObject *name = NEW_IDENTIFIER(ch);
-        if (!name)
-            return NULL;
-        return Name(name, Load, LINENO(n), n->n_col_offset, c->c_arena);
-    }
-    case STRING: {
-        PyObject *str = parsestrplus(c, n);
-        if (!str) {
-#ifdef Py_USING_UNICODE
-            if (PyErr_ExceptionMatches(PyExc_UnicodeError)){
-                PyObject *type, *value, *tback, *errstr;
-                PyErr_Fetch(&type, &value, &tback);
-                errstr = PyObject_Str(value);
-                if (errstr) {
-                    char *s = "";
-                    char buf[128];
-                    s = PyString_AsString(errstr);
-                    PyOS_snprintf(buf, sizeof(buf), "(unicode error) %s", s);
-                    ast_error(n, buf);
-                    Py_DECREF(errstr);
-                } else {
-                    ast_error(n, "(unicode error) unknown error");
-                }
-                Py_DECREF(type);
-                Py_DECREF(value);
-                Py_XDECREF(tback);
-            }
-#endif
-            return NULL;
-        }
-        PyArena_AddPyObject(c->c_arena, str);
-        return Str(str, LINENO(n), n->n_col_offset, c->c_arena);
-    }
-    case NUMBER: {
-        PyObject *pynum = parsenumber(c, STR(ch));
-        if (!pynum)
-            return NULL;
-
-        PyArena_AddPyObject(c->c_arena, pynum);
-        return Num(pynum, LINENO(n), n->n_col_offset, c->c_arena);
-    }
-    case LPAR: /* some parenthesized expressions */
-        ch = CHILD(n, 1);
-
-        if (TYPE(ch) == RPAR)
-            return Tuple(NULL, Load, LINENO(n), n->n_col_offset, c->c_arena);
-
-        if (TYPE(ch) == yield_expr)
-            return ast_for_expr(c, ch);
-
-        return ast_for_testlist_comp(c, ch);
-    case LSQB: /* list (or list comprehension) */
-        ch = CHILD(n, 1);
-
-        if (TYPE(ch) == RSQB)
-            return List(NULL, Load, LINENO(n), n->n_col_offset, c->c_arena);
-
-        REQ(ch, listmaker);
-        if (NCH(ch) == 1 || TYPE(CHILD(ch, 1)) == COMMA) {
-            asdl_seq *elts = seq_for_testlist(c, ch);
-            if (!elts)
-                return NULL;
-
-            return List(elts, Load, LINENO(n), n->n_col_offset, c->c_arena);
-        }
-        else
-            return ast_for_listcomp(c, ch);
-    case LBRACE: {
-        /* dictorsetmaker:
-         *    (test ':' test (comp_for | (',' test ':' test)* [','])) |
-         *    (test (comp_for | (',' test)* [',']))
-         */
-        int i, size;
-        asdl_seq *keys, *values;
-
-        ch = CHILD(n, 1);
-        if (TYPE(ch) == RBRACE) {
-            /* it's an empty dict */
-            return Dict(NULL, NULL, LINENO(n), n->n_col_offset, c->c_arena);
-        } else if (NCH(ch) == 1 || TYPE(CHILD(ch, 1)) == COMMA) {
-            /* it's a simple set */
-            asdl_seq *elts;
-            size = (NCH(ch) + 1) / 2; /* +1 in case no trailing comma */
-            elts = asdl_seq_new(size, c->c_arena);
-            if (!elts)
-                return NULL;
-            for (i = 0; i < NCH(ch); i += 2) {
-                expr_ty expression;
-                expression = ast_for_expr(c, CHILD(ch, i));
-                if (!expression)
-                    return NULL;
-                asdl_seq_SET(elts, i / 2, expression);
-            }
-            return Set(elts, LINENO(n), n->n_col_offset, c->c_arena);
-        } else if (TYPE(CHILD(ch, 1)) == comp_for) {
-            /* it's a set comprehension */
-            return ast_for_setcomp(c, ch);
-        } else if (NCH(ch) > 3 && TYPE(CHILD(ch, 3)) == comp_for) {
-            return ast_for_dictcomp(c, ch);
-        } else {
-            /* it's a dict */
-            size = (NCH(ch) + 1) / 4; /* +1 in case no trailing comma */
-            keys = asdl_seq_new(size, c->c_arena);
-            if (!keys)
-                return NULL;
-
-            values = asdl_seq_new(size, c->c_arena);
-            if (!values)
-                return NULL;
-
-            for (i = 0; i < NCH(ch); i += 4) {
-                expr_ty expression;
-
-                expression = ast_for_expr(c, CHILD(ch, i));
-                if (!expression)
-                    return NULL;
-
-                asdl_seq_SET(keys, i / 4, expression);
-
-                expression = ast_for_expr(c, CHILD(ch, i + 2));
-                if (!expression)
-                    return NULL;
-
-                asdl_seq_SET(values, i / 4, expression);
-            }
-            return Dict(keys, values, LINENO(n), n->n_col_offset, c->c_arena);
-        }
-    }
-    case BACKQUOTE: { /* repr */
-        expr_ty expression;
-        if (Py_Py3kWarningFlag &&
-            !ast_warn(c, n, "backquote not supported in 3.x; use repr()"))
-            return NULL;
-        expression = ast_for_testlist(c, CHILD(n, 1));
-        if (!expression)
-            return NULL;
-
-        return Repr(expression, LINENO(n), n->n_col_offset, c->c_arena);
-    }
-    default:
-        PyErr_Format(PyExc_SystemError, "unhandled atom %d", TYPE(ch));
-        return NULL;
-    }
-}
-
-static slice_ty
-ast_for_slice(struct compiling *c, const node *n)
-{
-    node *ch;
-    expr_ty lower = NULL, upper = NULL, step = NULL;
-
-    REQ(n, subscript);
-
-    /*
-       subscript: '.' '.' '.' | test | [test] ':' [test] [sliceop]
-       sliceop: ':' [test]
-    */
-    ch = CHILD(n, 0);
-    if (TYPE(ch) == DOT)
-        return Ellipsis(c->c_arena);
-
-    if (NCH(n) == 1 && TYPE(ch) == test) {
-        /* 'step' variable hold no significance in terms of being used over
-           other vars */
-        step = ast_for_expr(c, ch);
-        if (!step)
-            return NULL;
-
-        return Index(step, c->c_arena);
-    }
-
-    if (TYPE(ch) == test) {
-        lower = ast_for_expr(c, ch);
-        if (!lower)
-            return NULL;
-    }
-
-    /* If there's an upper bound it's in the second or third position. */
-    if (TYPE(ch) == COLON) {
-        if (NCH(n) > 1) {
-            node *n2 = CHILD(n, 1);
-
-            if (TYPE(n2) == test) {
-                upper = ast_for_expr(c, n2);
-                if (!upper)
-                    return NULL;
-            }
-        }
-    } else if (NCH(n) > 2) {
-        node *n2 = CHILD(n, 2);
-
-        if (TYPE(n2) == test) {
-            upper = ast_for_expr(c, n2);
-            if (!upper)
-                return NULL;
-        }
-    }
-
-    ch = CHILD(n, NCH(n) - 1);
-    if (TYPE(ch) == sliceop) {
-        if (NCH(ch) == 1) {
-            /*
-              This is an extended slice (ie "x[::]") with no expression in the
-              step field. We set this literally to "None" in order to
-              disambiguate it from x[:]. (The interpreter might have to call
-              __getslice__ for x[:], but it must call __getitem__ for x[::].)
-            */
-            identifier none = new_identifier("None", c->c_arena);
-            if (!none)
-                return NULL;
-            ch = CHILD(ch, 0);
-            step = Name(none, Load, LINENO(ch), ch->n_col_offset, c->c_arena);
-            if (!step)
-                return NULL;
-        } else {
-            ch = CHILD(ch, 1);
-            if (TYPE(ch) == test) {
-                step = ast_for_expr(c, ch);
-                if (!step)
-                    return NULL;
-            }
-        }
-    }
-
-    return Slice(lower, upper, step, c->c_arena);
-}
-
-static expr_ty
-ast_for_binop(struct compiling *c, const node *n)
-{
-        /* Must account for a sequence of expressions.
-           How should A op B op C by represented?
-           BinOp(BinOp(A, op, B), op, C).
-        */
-
-        int i, nops;
-        expr_ty expr1, expr2, result;
-        operator_ty newoperator;
-
-        expr1 = ast_for_expr(c, CHILD(n, 0));
-        if (!expr1)
-            return NULL;
-
-        expr2 = ast_for_expr(c, CHILD(n, 2));
-        if (!expr2)
-            return NULL;
-
-        newoperator = get_operator(CHILD(n, 1));
-        if (!newoperator)
-            return NULL;
-
-        result = BinOp(expr1, newoperator, expr2, LINENO(n), n->n_col_offset,
-                       c->c_arena);
-        if (!result)
-            return NULL;
-
-        nops = (NCH(n) - 1) / 2;
-        for (i = 1; i < nops; i++) {
-                expr_ty tmp_result, tmp;
-                const node* next_oper = CHILD(n, i * 2 + 1);
-
-                newoperator = get_operator(next_oper);
-                if (!newoperator)
-                    return NULL;
-
-                tmp = ast_for_expr(c, CHILD(n, i * 2 + 2));
-                if (!tmp)
-                    return NULL;
-
-                tmp_result = BinOp(result, newoperator, tmp,
-                                   LINENO(next_oper), next_oper->n_col_offset,
-                                   c->c_arena);
-                if (!tmp_result)
-                        return NULL;
-                result = tmp_result;
-        }
-        return result;
-}
-
-static expr_ty
-ast_for_trailer(struct compiling *c, const node *n, expr_ty left_expr)
-{
-    /* trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME
-       subscriptlist: subscript (',' subscript)* [',']
-       subscript: '.' '.' '.' | test | [test] ':' [test] [sliceop]
-     */
-    REQ(n, trailer);
-    if (TYPE(CHILD(n, 0)) == LPAR) {
-        if (NCH(n) == 2)
-            return Call(left_expr, NULL, NULL, NULL, NULL, LINENO(n),
-                        n->n_col_offset, c->c_arena);
-        else
-            return ast_for_call(c, CHILD(n, 1), left_expr);
-    }
-    else if (TYPE(CHILD(n, 0)) == DOT ) {
-        PyObject *attr_id = NEW_IDENTIFIER(CHILD(n, 1));
-        if (!attr_id)
-            return NULL;
-        return Attribute(left_expr, attr_id, Load,
-                         LINENO(n), n->n_col_offset, c->c_arena);
-    }
-    else {
-        REQ(CHILD(n, 0), LSQB);
-        REQ(CHILD(n, 2), RSQB);
-        n = CHILD(n, 1);
-        if (NCH(n) == 1) {
-            slice_ty slc = ast_for_slice(c, CHILD(n, 0));
-            if (!slc)
-                return NULL;
-            return Subscript(left_expr, slc, Load, LINENO(n), n->n_col_offset,
-                             c->c_arena);
-        }
-        else {
-            /* The grammar is ambiguous here. The ambiguity is resolved
-               by treating the sequence as a tuple literal if there are
-               no slice features.
-            */
-            int j;
-            slice_ty slc;
-            expr_ty e;
-            bool simple = true;
-            asdl_seq *slices, *elts;
-            slices = asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
-            if (!slices)
-                return NULL;
-            for (j = 0; j < NCH(n); j += 2) {
-                slc = ast_for_slice(c, CHILD(n, j));
-                if (!slc)
-                    return NULL;
-                if (slc->kind != Index_kind)
-                    simple = false;
-                asdl_seq_SET(slices, j / 2, slc);
-            }
-            if (!simple) {
-                return Subscript(left_expr, ExtSlice(slices, c->c_arena),
-                                 Load, LINENO(n), n->n_col_offset, c->c_arena);
-            }
-            /* extract Index values and put them in a Tuple */
-            elts = asdl_seq_new(asdl_seq_LEN(slices), c->c_arena);
-            if (!elts)
-                return NULL;
-            for (j = 0; j < asdl_seq_LEN(slices); ++j) {
-                slc = (slice_ty)asdl_seq_GET(slices, j);
-                assert(slc->kind == Index_kind  && slc->v.Index.value);
-                asdl_seq_SET(elts, j, slc->v.Index.value);
-            }
-            e = Tuple(elts, Load, LINENO(n), n->n_col_offset, c->c_arena);
-            if (!e)
-                return NULL;
-            return Subscript(left_expr, Index(e, c->c_arena),
-                             Load, LINENO(n), n->n_col_offset, c->c_arena);
-        }
-    }
-}
-
-static expr_ty
-ast_for_factor(struct compiling *c, const node *n)
-{
-    node *pfactor, *ppower, *patom, *pnum;
-    expr_ty expression;
-
-    /* If the unary - operator is applied to a constant, don't generate
-       a UNARY_NEGATIVE opcode.  Just store the approriate value as a
-       constant.  The peephole optimizer already does something like
-       this but it doesn't handle the case where the constant is
-       (sys.maxint - 1).  In that case, we want a PyIntObject, not a
-       PyLongObject.
-    */
-    if (TYPE(CHILD(n, 0)) == MINUS &&
-        NCH(n) == 2 &&
-        TYPE((pfactor = CHILD(n, 1))) == factor &&
-        NCH(pfactor) == 1 &&
-        TYPE((ppower = CHILD(pfactor, 0))) == power &&
-        NCH(ppower) == 1 &&
-        TYPE((patom = CHILD(ppower, 0))) == atom &&
-        TYPE((pnum = CHILD(patom, 0))) == NUMBER) {
-        char *s = PyObject_MALLOC(strlen(STR(pnum)) + 2);
-        if (s == NULL)
-            return NULL;
-        s[0] = '-';
-        strcpy(s + 1, STR(pnum));
-        PyObject_FREE(STR(pnum));
-        STR(pnum) = s;
-        return ast_for_atom(c, patom);
-    }
-
-    expression = ast_for_expr(c, CHILD(n, 1));
-    if (!expression)
-        return NULL;
-
-    switch (TYPE(CHILD(n, 0))) {
-        case PLUS:
-            return UnaryOp(UAdd, expression, LINENO(n), n->n_col_offset,
-                           c->c_arena);
-        case MINUS:
-            return UnaryOp(USub, expression, LINENO(n), n->n_col_offset,
-                           c->c_arena);
-        case TILDE:
-            return UnaryOp(Invert, expression, LINENO(n),
-                           n->n_col_offset, c->c_arena);
-    }
-    PyErr_Format(PyExc_SystemError, "unhandled factor: %d",
-                 TYPE(CHILD(n, 0)));
-    return NULL;
-}
-
-static expr_ty
-ast_for_power(struct compiling *c, const node *n)
-{
-    /* power: atom trailer* ('**' factor)*
-     */
-    int i;
-    expr_ty e, tmp;
-    REQ(n, power);
-    e = ast_for_atom(c, CHILD(n, 0));
-    if (!e)
-        return NULL;
-    if (NCH(n) == 1)
-        return e;
-    for (i = 1; i < NCH(n); i++) {
-        node *ch = CHILD(n, i);
-        if (TYPE(ch) != trailer)
-            break;
-        tmp = ast_for_trailer(c, ch, e);
-        if (!tmp)
-            return NULL;
-        tmp->lineno = e->lineno;
-        tmp->col_offset = e->col_offset;
-        e = tmp;
-    }
-    if (TYPE(CHILD(n, NCH(n) - 1)) == factor) {
-        expr_ty f = ast_for_expr(c, CHILD(n, NCH(n) - 1));
-        if (!f)
-            return NULL;
-        tmp = BinOp(e, Pow, f, LINENO(n), n->n_col_offset, c->c_arena);
-        if (!tmp)
-            return NULL;
-        e = tmp;
-    }
-    return e;
-}
-
-/* Do not name a variable 'expr'!  Will cause a compile error.
-*/
-
-static expr_ty
-ast_for_expr(struct compiling *c, const node *n)
-{
-    /* handle the full range of simple expressions
-       test: or_test ['if' or_test 'else' test] | lambdef
-       or_test: and_test ('or' and_test)*
-       and_test: not_test ('and' not_test)*
-       not_test: 'not' not_test | comparison
-       comparison: expr (comp_op expr)*
-       expr: xor_expr ('|' xor_expr)*
-       xor_expr: and_expr ('^' and_expr)*
-       and_expr: shift_expr ('&' shift_expr)*
-       shift_expr: arith_expr (('<<'|'>>') arith_expr)*
-       arith_expr: term (('+'|'-') term)*
-       term: factor (('*'|'/'|'%'|'//') factor)*
-       factor: ('+'|'-'|'~') factor | power
-       power: atom trailer* ('**' factor)*
-
-       As well as modified versions that exist for backward compatibility,
-       to explicitly allow:
-       [ x for x in lambda: 0, lambda: 1 ]
-       (which would be ambiguous without these extra rules)
-
-       old_test: or_test | old_lambdef
-       old_lambdef: 'lambda' [vararglist] ':' old_test
-
-    */
-
-    asdl_seq *seq;
-    int i;
-
- loop:
-    switch (TYPE(n)) {
-        case test:
-        case old_test:
-            if (TYPE(CHILD(n, 0)) == lambdef ||
-                TYPE(CHILD(n, 0)) == old_lambdef)
-                return ast_for_lambdef(c, CHILD(n, 0));
-            else if (NCH(n) > 1)
-                return ast_for_ifexpr(c, n);
-            /* Fallthrough */
-        case or_test:
-        case and_test:
-            if (NCH(n) == 1) {
-                n = CHILD(n, 0);
-                goto loop;
-            }
-            seq = asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
-            if (!seq)
-                return NULL;
-            for (i = 0; i < NCH(n); i += 2) {
-                expr_ty e = ast_for_expr(c, CHILD(n, i));
-                if (!e)
-                    return NULL;
-                asdl_seq_SET(seq, i / 2, e);
-            }
-            if (!strcmp(STR(CHILD(n, 1)), "and"))
-                return BoolOp(And, seq, LINENO(n), n->n_col_offset,
-                              c->c_arena);
-            assert(!strcmp(STR(CHILD(n, 1)), "or"));
-            return BoolOp(Or, seq, LINENO(n), n->n_col_offset, c->c_arena);
-        case not_test:
-            if (NCH(n) == 1) {
-                n = CHILD(n, 0);
-                goto loop;
-            }
-            else {
-                expr_ty expression = ast_for_expr(c, CHILD(n, 1));
-                if (!expression)
-                    return NULL;
-
-                return UnaryOp(Not, expression, LINENO(n), n->n_col_offset,
-                               c->c_arena);
-            }
-        case comparison:
-            if (NCH(n) == 1) {
-                n = CHILD(n, 0);
-                goto loop;
-            }
-            else {
-                expr_ty expression;
-                asdl_int_seq *ops;
-                asdl_seq *cmps;
-                ops = asdl_int_seq_new(NCH(n) / 2, c->c_arena);
-                if (!ops)
-                    return NULL;
-                cmps = asdl_seq_new(NCH(n) / 2, c->c_arena);
-                if (!cmps) {
-                    return NULL;
-                }
-                for (i = 1; i < NCH(n); i += 2) {
-                    cmpop_ty newoperator;
-
-                    newoperator = ast_for_comp_op(c, CHILD(n, i));
-                    if (!newoperator) {
-                        return NULL;
-                    }
-
-                    expression = ast_for_expr(c, CHILD(n, i + 1));
-                    if (!expression) {
-                        return NULL;
-                    }
-
-                    asdl_seq_SET(ops, i / 2, newoperator);
-                    asdl_seq_SET(cmps, i / 2, expression);
-                }
-                expression = ast_for_expr(c, CHILD(n, 0));
-                if (!expression) {
-                    return NULL;
-                }
-
-                return Compare(expression, ops, cmps, LINENO(n),
-                               n->n_col_offset, c->c_arena);
-            }
-            break;
-
-        /* The next five cases all handle BinOps.  The main body of code
-           is the same in each case, but the switch turned inside out to
-           reuse the code for each type of operator.
-         */
-        case expr:
-        case xor_expr:
-        case and_expr:
-        case shift_expr:
-        case arith_expr:
-        case term:
-            if (NCH(n) == 1) {
-                n = CHILD(n, 0);
-                goto loop;
-            }
-            return ast_for_binop(c, n);
-        case yield_expr: {
-            expr_ty exp = NULL;
-            if (NCH(n) == 2) {
-                exp = ast_for_testlist(c, CHILD(n, 1));
-                if (!exp)
-                    return NULL;
-            }
-            return Yield(exp, LINENO(n), n->n_col_offset, c->c_arena);
-        }
-        case factor:
-            if (NCH(n) == 1) {
-                n = CHILD(n, 0);
-                goto loop;
-            }
-            return ast_for_factor(c, n);
-        case power:
-            return ast_for_power(c, n);
-        default:
-            PyErr_Format(PyExc_SystemError, "unhandled expr: %d", TYPE(n));
-            return NULL;
-    }
-    /* should never get here unless if error is set */
-    return NULL;
-}
-
-static expr_ty
-ast_for_call(struct compiling *c, const node *n, expr_ty func)
-{
-    /*
-      arglist: (argument ',')* (argument [',']| '*' test [',' '**' test]
-               | '**' test)
-      argument: [test '='] test [comp_for]        # Really [keyword '='] test
-    */
-
-    int i, nargs, nkeywords, ngens;
-    asdl_seq *args;
-    asdl_seq *keywords;
-    expr_ty vararg = NULL, kwarg = NULL;
-
-    REQ(n, arglist);
-
-    nargs = 0;
-    nkeywords = 0;
-    ngens = 0;
-    for (i = 0; i < NCH(n); i++) {
-        node *ch = CHILD(n, i);
-        if (TYPE(ch) == argument) {
-            if (NCH(ch) == 1)
-                nargs++;
-            else if (TYPE(CHILD(ch, 1)) == comp_for)
-                ngens++;
-            else
-                nkeywords++;
-        }
-    }
-    if (ngens > 1 || (ngens && (nargs || nkeywords))) {
-        ast_error(n, "Generator expression must be parenthesized "
-                  "if not sole argument");
-        return NULL;
-    }
-
-    if (nargs + nkeywords + ngens > 255) {
-      ast_error(n, "more than 255 arguments");
-      return NULL;
-    }
-
-    args = asdl_seq_new(nargs + ngens, c->c_arena);
-    if (!args)
-        return NULL;
-    keywords = asdl_seq_new(nkeywords, c->c_arena);
-    if (!keywords)
-        return NULL;
-    nargs = 0;
-    nkeywords = 0;
-    for (i = 0; i < NCH(n); i++) {
-        node *ch = CHILD(n, i);
-        if (TYPE(ch) == argument) {
-            expr_ty e;
-            if (NCH(ch) == 1) {
-                if (nkeywords) {
-                    ast_error(CHILD(ch, 0),
-                              "non-keyword arg after keyword arg");
-                    return NULL;
-                }
-                if (vararg) {
-                    ast_error(CHILD(ch, 0),
-                              "only named arguments may follow *expression");
-                    return NULL;
-                }
-                e = ast_for_expr(c, CHILD(ch, 0));
-                if (!e)
-                    return NULL;
-                asdl_seq_SET(args, nargs++, e);
-            }
-            else if (TYPE(CHILD(ch, 1)) == comp_for) {
-                e = ast_for_genexp(c, ch);
-                if (!e)
-                    return NULL;
-                asdl_seq_SET(args, nargs++, e);
-            }
-            else {
-                keyword_ty kw;
-                identifier key;
-                int k;
-                char *tmp;
-
-                /* CHILD(ch, 0) is test, but must be an identifier? */
-                e = ast_for_expr(c, CHILD(ch, 0));
-                if (!e)
-                    return NULL;
-                /* f(lambda x: x[0] = 3) ends up getting parsed with
-                 * LHS test = lambda x: x[0], and RHS test = 3.
-                 * SF bug 132313 points out that complaining about a keyword
-                 * then is very confusing.
-                 */
-                if (e->kind == Lambda_kind) {
-                    ast_error(CHILD(ch, 0),
-                              "lambda cannot contain assignment");
-                    return NULL;
-                } else if (e->kind != Name_kind) {
-                    ast_error(CHILD(ch, 0), "keyword can't be an expression");
-                    return NULL;
-                }
-                key = e->v.Name.id;
-                if (!forbidden_check(c, CHILD(ch, 0), PyBytes_AS_STRING(key)))
-                    return NULL;
-                for (k = 0; k < nkeywords; k++) {
-                    tmp = PyString_AS_STRING(
-                        ((keyword_ty)asdl_seq_GET(keywords, k))->arg);
-                    if (!strcmp(tmp, PyString_AS_STRING(key))) {
-                        ast_error(CHILD(ch, 0), "keyword argument repeated");
-                        return NULL;
-                    }
-                }
-                e = ast_for_expr(c, CHILD(ch, 2));
-                if (!e)
-                    return NULL;
-                kw = keyword(key, e, c->c_arena);
-                if (!kw)
-                    return NULL;
-                asdl_seq_SET(keywords, nkeywords++, kw);
-            }
-        }
-        else if (TYPE(ch) == STAR) {
-            vararg = ast_for_expr(c, CHILD(n, i+1));
-            if (!vararg)
-                return NULL;
-            i++;
-        }
-        else if (TYPE(ch) == DOUBLESTAR) {
-            kwarg = ast_for_expr(c, CHILD(n, i+1));
-            if (!kwarg)
-                return NULL;
-            i++;
-        }
-    }
-
-    return Call(func, args, keywords, vararg, kwarg, func->lineno,
-                func->col_offset, c->c_arena);
-}
-
-static expr_ty
-ast_for_testlist(struct compiling *c, const node* n)
-{
-    /* testlist_comp: test (',' test)* [','] */
-    /* testlist: test (',' test)* [','] */
-    /* testlist_safe: test (',' test)+ [','] */
-    /* testlist1: test (',' test)* */
-    assert(NCH(n) > 0);
-    if (TYPE(n) == testlist_comp) {
-        if (NCH(n) > 1)
-            assert(TYPE(CHILD(n, 1)) != comp_for);
-    }
-    else {
-        assert(TYPE(n) == testlist ||
-               TYPE(n) == testlist_safe ||
-               TYPE(n) == testlist1);
-    }
-    if (NCH(n) == 1)
-        return ast_for_expr(c, CHILD(n, 0));
-    else {
-        asdl_seq *tmp = seq_for_testlist(c, n);
-        if (!tmp)
-            return NULL;
-        return Tuple(tmp, Load, LINENO(n), n->n_col_offset, c->c_arena);
-    }
-}
-
-static expr_ty
-ast_for_testlist_comp(struct compiling *c, const node* n)
-{
-    /* testlist_comp: test ( comp_for | (',' test)* [','] ) */
-    /* argument: test [ comp_for ] */
-    assert(TYPE(n) == testlist_comp || TYPE(n) == argument);
-    if (NCH(n) > 1 && TYPE(CHILD(n, 1)) == comp_for)
-        return ast_for_genexp(c, n);
-    return ast_for_testlist(c, n);
-}
-
-/* like ast_for_testlist() but returns a sequence */
-static asdl_seq*
-ast_for_class_bases(struct compiling *c, const node* n)
-{
-    /* testlist: test (',' test)* [','] */
-    assert(NCH(n) > 0);
-    REQ(n, testlist);
-    if (NCH(n) == 1) {
-        expr_ty base;
-        asdl_seq *bases = asdl_seq_new(1, c->c_arena);
-        if (!bases)
-            return NULL;
-        base = ast_for_expr(c, CHILD(n, 0));
-        if (!base)
-            return NULL;
-        asdl_seq_SET(bases, 0, base);
-        return bases;
-    }
-
-    return seq_for_testlist(c, n);
-}
-
-static stmt_ty
-ast_for_expr_stmt(struct compiling *c, const node *n)
-{
-    REQ(n, expr_stmt);
-    /* expr_stmt: testlist (augassign (yield_expr|testlist)
-                | ('=' (yield_expr|testlist))*)
-       testlist: test (',' test)* [',']
-       augassign: '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^='
-                | '<<=' | '>>=' | '**=' | '//='
-       test: ... here starts the operator precendence dance
-     */
-
-    if (NCH(n) == 1) {
-        expr_ty e = ast_for_testlist(c, CHILD(n, 0));
-        if (!e)
-            return NULL;
-
-        return Expr(e, LINENO(n), n->n_col_offset, c->c_arena);
-    }
-    else if (TYPE(CHILD(n, 1)) == augassign) {
-        expr_ty expr1, expr2;
-        operator_ty newoperator;
-        node *ch = CHILD(n, 0);
-
-        expr1 = ast_for_testlist(c, ch);
-        if (!expr1)
-            return NULL;
-        if(!set_context(c, expr1, Store, ch))
-            return NULL;
-        /* set_context checks that most expressions are not the left side.
-          Augmented assignments can only have a name, a subscript, or an
-          attribute on the left, though, so we have to explicitly check for
-          those. */
-        switch (expr1->kind) {
-            case Name_kind:
-            case Attribute_kind:
-            case Subscript_kind:
-                break;
-            default:
-                ast_error(ch, "illegal expression for augmented assignment");
-                return NULL;
-        }
-
-        ch = CHILD(n, 2);
-        if (TYPE(ch) == testlist)
-            expr2 = ast_for_testlist(c, ch);
-        else
-            expr2 = ast_for_expr(c, ch);
-        if (!expr2)
-            return NULL;
-
-        newoperator = ast_for_augassign(c, CHILD(n, 1));
-        if (!newoperator)
-            return NULL;
-
-        return AugAssign(expr1, newoperator, expr2, LINENO(n), n->n_col_offset,
-                         c->c_arena);
-    }
-    else {
-        int i;
-        asdl_seq *targets;
-        node *value;
-        expr_ty expression;
-
-        /* a normal assignment */
-        REQ(CHILD(n, 1), EQUAL);
-        targets = asdl_seq_new(NCH(n) / 2, c->c_arena);
-        if (!targets)
-            return NULL;
-        for (i = 0; i < NCH(n) - 2; i += 2) {
-            expr_ty e;
-            node *ch = CHILD(n, i);
-            if (TYPE(ch) == yield_expr) {
-                ast_error(ch, "assignment to yield expression not possible");
-                return NULL;
-            }
-            e = ast_for_testlist(c, ch);
-            if (!e)
-                return NULL;
-
-            /* set context to assign */
-            if (!set_context(c, e, Store, CHILD(n, i)))
-                return NULL;
-
-            asdl_seq_SET(targets, i / 2, e);
-        }
-        value = CHILD(n, NCH(n) - 1);
-        if (TYPE(value) == testlist)
-            expression = ast_for_testlist(c, value);
-        else
-            expression = ast_for_expr(c, value);
-        if (!expression)
-            return NULL;
-        return Assign(targets, expression, LINENO(n), n->n_col_offset,
-                      c->c_arena);
-    }
-}
-
-static stmt_ty
-ast_for_print_stmt(struct compiling *c, const node *n)
-{
-    /* print_stmt: 'print' ( [ test (',' test)* [','] ]
-                             | '>>' test [ (',' test)+ [','] ] )
-     */
-    expr_ty dest = NULL, expression;
-    asdl_seq *seq = NULL;
-    bool nl;
-    int i, j, values_count, start = 1;
-
-    REQ(n, print_stmt);
-    if (NCH(n) >= 2 && TYPE(CHILD(n, 1)) == RIGHTSHIFT) {
-        dest = ast_for_expr(c, CHILD(n, 2));
-        if (!dest)
-            return NULL;
-            start = 4;
-    }
-    values_count = (NCH(n) + 1 - start) / 2;
-    if (values_count) {
-        seq = asdl_seq_new(values_count, c->c_arena);
-        if (!seq)
-            return NULL;
-        for (i = start, j = 0; i < NCH(n); i += 2, ++j) {
-            expression = ast_for_expr(c, CHILD(n, i));
-            if (!expression)
-                return NULL;
-            asdl_seq_SET(seq, j, expression);
-        }
-    }
-    nl = (TYPE(CHILD(n, NCH(n) - 1)) == COMMA) ? false : true;
-    return Print(dest, seq, nl, LINENO(n), n->n_col_offset, c->c_arena);
-}
-
-static asdl_seq *
-ast_for_exprlist(struct compiling *c, const node *n, expr_context_ty context)
-{
-    asdl_seq *seq;
-    int i;
-    expr_ty e;
-
-    REQ(n, exprlist);
-
-    seq = asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
-    if (!seq)
-        return NULL;
-    for (i = 0; i < NCH(n); i += 2) {
-        e = ast_for_expr(c, CHILD(n, i));
-        if (!e)
-            return NULL;
-        asdl_seq_SET(seq, i / 2, e);
-        if (context && !set_context(c, e, context, CHILD(n, i)))
-            return NULL;
-    }
-    return seq;
-}
-
-static stmt_ty
-ast_for_del_stmt(struct compiling *c, const node *n)
-{
-    asdl_seq *expr_list;
-
-    /* del_stmt: 'del' exprlist */
-    REQ(n, del_stmt);
-
-    expr_list = ast_for_exprlist(c, CHILD(n, 1), Del);
-    if (!expr_list)
-        return NULL;
-    return Delete(expr_list, LINENO(n), n->n_col_offset, c->c_arena);
-}
-
-static stmt_ty
-ast_for_flow_stmt(struct compiling *c, const node *n)
-{
-    /*
-      flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt
-                 | yield_stmt
-      break_stmt: 'break'
-      continue_stmt: 'continue'
-      return_stmt: 'return' [testlist]
-      yield_stmt: yield_expr
-      yield_expr: 'yield' testlist
-      raise_stmt: 'raise' [test [',' test [',' test]]]
-    */
-    node *ch;
-
-    REQ(n, flow_stmt);
-    ch = CHILD(n, 0);
-    switch (TYPE(ch)) {
-        case break_stmt:
-            return Break(LINENO(n), n->n_col_offset, c->c_arena);
-        case continue_stmt:
-            return Continue(LINENO(n), n->n_col_offset, c->c_arena);
-        case yield_stmt: { /* will reduce to yield_expr */
-            expr_ty exp = ast_for_expr(c, CHILD(ch, 0));
-            if (!exp)
-                return NULL;
-            return Expr(exp, LINENO(n), n->n_col_offset, c->c_arena);
-        }
-        case return_stmt:
-            if (NCH(ch) == 1)
-                return Return(NULL, LINENO(n), n->n_col_offset, c->c_arena);
-            else {
-                expr_ty expression = ast_for_testlist(c, CHILD(ch, 1));
-                if (!expression)
-                    return NULL;
-                return Return(expression, LINENO(n), n->n_col_offset,
-                              c->c_arena);
-            }
-        case raise_stmt:
-            if (NCH(ch) == 1)
-                return Raise(NULL, NULL, NULL, LINENO(n), n->n_col_offset,
-                             c->c_arena);
-            else if (NCH(ch) == 2) {
-                expr_ty expression = ast_for_expr(c, CHILD(ch, 1));
-                if (!expression)
-                    return NULL;
-                return Raise(expression, NULL, NULL, LINENO(n),
-                             n->n_col_offset, c->c_arena);
-            }
-            else if (NCH(ch) == 4) {
-                expr_ty expr1, expr2;
-
-                expr1 = ast_for_expr(c, CHILD(ch, 1));
-                if (!expr1)
-                    return NULL;
-                expr2 = ast_for_expr(c, CHILD(ch, 3));
-                if (!expr2)
-                    return NULL;
-
-                return Raise(expr1, expr2, NULL, LINENO(n), n->n_col_offset,
-                             c->c_arena);
-            }
-            else if (NCH(ch) == 6) {
-                expr_ty expr1, expr2, expr3;
-
-                expr1 = ast_for_expr(c, CHILD(ch, 1));
-                if (!expr1)
-                    return NULL;
-                expr2 = ast_for_expr(c, CHILD(ch, 3));
-                if (!expr2)
-                    return NULL;
-                expr3 = ast_for_expr(c, CHILD(ch, 5));
-                if (!expr3)
-                    return NULL;
-
-                return Raise(expr1, expr2, expr3, LINENO(n), n->n_col_offset,
-                             c->c_arena);
-            }
-        default:
-            PyErr_Format(PyExc_SystemError,
-                         "unexpected flow_stmt: %d", TYPE(ch));
-            return NULL;
-    }
-
-    PyErr_SetString(PyExc_SystemError, "unhandled flow statement");
-    return NULL;
-}
-
-static alias_ty
-alias_for_import_name(struct compiling *c, const node *n, int store)
-{
-    /*
-      import_as_name: NAME ['as' NAME]
-      dotted_as_name: dotted_name ['as' NAME]
-      dotted_name: NAME ('.' NAME)*
-    */
-    PyObject *str, *name;
-
- loop:
-    switch (TYPE(n)) {
-         case import_as_name: {
-            node *name_node = CHILD(n, 0);
-            str = NULL;
-            if (NCH(n) == 3) {
-                node *str_node = CHILD(n, 2);
-                if (store && !forbidden_check(c, str_node, STR(str_node)))
-                    return NULL;
-                str = NEW_IDENTIFIER(str_node);
-                if (!str)
-                    return NULL;
-            }
-            else {
-                if (!forbidden_check(c, name_node, STR(name_node)))
-                    return NULL;
-            }
-            name = NEW_IDENTIFIER(name_node);
-            if (!name)
-                return NULL;
-            return alias(name, str, c->c_arena);
-        }
-        case dotted_as_name:
-            if (NCH(n) == 1) {
-                n = CHILD(n, 0);
-                goto loop;
-            }
-            else {
-                node *asname_node = CHILD(n, 2);
-                alias_ty a = alias_for_import_name(c, CHILD(n, 0), 0);
-                if (!a)
-                    return NULL;
-                assert(!a->asname);
-                if (!forbidden_check(c, asname_node, STR(asname_node)))
-                    return NULL;
-                a->asname = NEW_IDENTIFIER(asname_node);
-                if (!a->asname)
-                    return NULL;
-                return a;
-            }
-            break;
-        case dotted_name:
-            if (NCH(n) == 1) {
-                node *name_node = CHILD(n, 0);
-                if (store && !forbidden_check(c, name_node, STR(name_node)))
-                    return NULL;
-                name = NEW_IDENTIFIER(name_node);
-                if (!name)
-                    return NULL;
-                return alias(name, NULL, c->c_arena);
-            }
-            else {
-                /* Create a string of the form "a.b.c" */
-                int i;
-                size_t len;
-                char *s;
-
-                len = 0;
-                for (i = 0; i < NCH(n); i += 2)
-                    /* length of string plus one for the dot */
-                    len += strlen(STR(CHILD(n, i))) + 1;
-                len--; /* the last name doesn't have a dot */
-                str = PyString_FromStringAndSize(NULL, len);
-                if (!str)
-                    return NULL;
-                s = PyString_AS_STRING(str);
-                if (!s)
-                    return NULL;
-                for (i = 0; i < NCH(n); i += 2) {
-                    char *sch = STR(CHILD(n, i));
-                    strcpy(s, STR(CHILD(n, i)));
-                    s += strlen(sch);
-                    *s++ = '.';
-                }
-                --s;
-                *s = '\0';
-                PyString_InternInPlace(&str);
-                PyArena_AddPyObject(c->c_arena, str);
-                return alias(str, NULL, c->c_arena);
-            }
-            break;
-        case STAR:
-            str = PyString_InternFromString("*");
-            PyArena_AddPyObject(c->c_arena, str);
-            return alias(str, NULL, c->c_arena);
-        default:
-            PyErr_Format(PyExc_SystemError,
-                         "unexpected import name: %d", TYPE(n));
-            return NULL;
-    }
-
-    PyErr_SetString(PyExc_SystemError, "unhandled import name condition");
-    return NULL;
-}
-
-static stmt_ty
-ast_for_import_stmt(struct compiling *c, const node *n)
-{
-    /*
-      import_stmt: import_name | import_from
-      import_name: 'import' dotted_as_names
-      import_from: 'from' ('.'* dotted_name | '.') 'import'
-                          ('*' | '(' import_as_names ')' | import_as_names)
-    */
-    int lineno;
-    int col_offset;
-    int i;
-    asdl_seq *aliases;
-
-    REQ(n, import_stmt);
-    lineno = LINENO(n);
-    col_offset = n->n_col_offset;
-    n = CHILD(n, 0);
-    if (TYPE(n) == import_name) {
-        n = CHILD(n, 1);
-        REQ(n, dotted_as_names);
-        aliases = asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
-        if (!aliases)
-            return NULL;
-        for (i = 0; i < NCH(n); i += 2) {
-            alias_ty import_alias = alias_for_import_name(c, CHILD(n, i), 1);
-            if (!import_alias)
-                return NULL;
-            asdl_seq_SET(aliases, i / 2, import_alias);
-        }
-        return Import(aliases, lineno, col_offset, c->c_arena);
-    }
-    else if (TYPE(n) == import_from) {
-        int n_children;
-        int idx, ndots = 0;
-        alias_ty mod = NULL;
-        identifier modname = NULL;
-
-       /* Count the number of dots (for relative imports) and check for the
-          optional module name */
-        for (idx = 1; idx < NCH(n); idx++) {
-            if (TYPE(CHILD(n, idx)) == dotted_name) {
-                mod = alias_for_import_name(c, CHILD(n, idx), 0);
-                if (!mod)
-                    return NULL;
-                idx++;
-                break;
-            } else if (TYPE(CHILD(n, idx)) != DOT) {
-                break;
-            }
-            ndots++;
-        }
-        idx++; /* skip over the 'import' keyword */
-        switch (TYPE(CHILD(n, idx))) {
-        case STAR:
-            /* from ... import * */
-            n = CHILD(n, idx);
-            n_children = 1;
-            break;
-        case LPAR:
-            /* from ... import (x, y, z) */
-            n = CHILD(n, idx + 1);
-            n_children = NCH(n);
-            break;
-        case import_as_names:
-            /* from ... import x, y, z */
-            n = CHILD(n, idx);
-            n_children = NCH(n);
-            if (n_children % 2 == 0) {
-                ast_error(n, "trailing comma not allowed without"
-                             " surrounding parentheses");
-                return NULL;
-            }
-            break;
-        default:
-            ast_error(n, "Unexpected node-type in from-import");
-            return NULL;
-        }
-
-        aliases = asdl_seq_new((n_children + 1) / 2, c->c_arena);
-        if (!aliases)
-            return NULL;
-
-        /* handle "from ... import *" special b/c there's no children */
-        if (TYPE(n) == STAR) {
-            alias_ty import_alias = alias_for_import_name(c, n, 1);
-            if (!import_alias)
-                return NULL;
-                asdl_seq_SET(aliases, 0, import_alias);
-        }
-        else {
-            for (i = 0; i < NCH(n); i += 2) {
-                alias_ty import_alias = alias_for_import_name(c, CHILD(n, i), 1);
-                if (!import_alias)
-                    return NULL;
-                    asdl_seq_SET(aliases, i / 2, import_alias);
-            }
-        }
-        if (mod != NULL)
-            modname = mod->name;
-        return ImportFrom(modname, aliases, ndots, lineno, col_offset,
-                          c->c_arena);
-    }
-    PyErr_Format(PyExc_SystemError,
-                 "unknown import statement: starts with command '%s'",
-                 STR(CHILD(n, 0)));
-    return NULL;
-}
-
-static stmt_ty
-ast_for_global_stmt(struct compiling *c, const node *n)
-{
-    /* global_stmt: 'global' NAME (',' NAME)* */
-    identifier name;
-    asdl_seq *s;
-    int i;
-
-    REQ(n, global_stmt);
-    s = asdl_seq_new(NCH(n) / 2, c->c_arena);
-    if (!s)
-        return NULL;
-    for (i = 1; i < NCH(n); i += 2) {
-        name = NEW_IDENTIFIER(CHILD(n, i));
-        if (!name)
-            return NULL;
-        asdl_seq_SET(s, i / 2, name);
-    }
-    return Global(s, LINENO(n), n->n_col_offset, c->c_arena);
-}
-
-static stmt_ty
-ast_for_exec_stmt(struct compiling *c, const node *n)
-{
-    expr_ty expr1, globals = NULL, locals = NULL;
-    int n_children = NCH(n);
-    if (n_children != 2 && n_children != 4 && n_children != 6) {
-        PyErr_Format(PyExc_SystemError,
-                     "poorly formed 'exec' statement: %d parts to statement",
-                     n_children);
-        return NULL;
-    }
-
-    /* exec_stmt: 'exec' expr ['in' test [',' test]] */
-    REQ(n, exec_stmt);
-    expr1 = ast_for_expr(c, CHILD(n, 1));
-    if (!expr1)
-        return NULL;
-    if (n_children >= 4) {
-        globals = ast_for_expr(c, CHILD(n, 3));
-        if (!globals)
-            return NULL;
-    }
-    if (n_children == 6) {
-        locals = ast_for_expr(c, CHILD(n, 5));
-        if (!locals)
-            return NULL;
-    }
-
-    return Exec(expr1, globals, locals, LINENO(n), n->n_col_offset,
-                c->c_arena);
-}
-
-static stmt_ty
-ast_for_assert_stmt(struct compiling *c, const node *n)
-{
-    /* assert_stmt: 'assert' test [',' test] */
-    REQ(n, assert_stmt);
-    if (NCH(n) == 2) {
-        expr_ty expression = ast_for_expr(c, CHILD(n, 1));
-        if (!expression)
-            return NULL;
-        return Assert(expression, NULL, LINENO(n), n->n_col_offset,
-                      c->c_arena);
-    }
-    else if (NCH(n) == 4) {
-        expr_ty expr1, expr2;
-
-        expr1 = ast_for_expr(c, CHILD(n, 1));
-        if (!expr1)
-            return NULL;
-        expr2 = ast_for_expr(c, CHILD(n, 3));
-        if (!expr2)
-            return NULL;
-
-        return Assert(expr1, expr2, LINENO(n), n->n_col_offset, c->c_arena);
-    }
-    PyErr_Format(PyExc_SystemError,
-                 "improper number of parts to 'assert' statement: %d",
-                 NCH(n));
-    return NULL;
-}
-
-static asdl_seq *
-ast_for_suite(struct compiling *c, const node *n)
-{
-    /* suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT */
-    asdl_seq *seq;
-    stmt_ty s;
-    int i, total, num, end, pos = 0;
-    node *ch;
-
-    REQ(n, suite);
-
-    total = num_stmts(n);
-    seq = asdl_seq_new(total, c->c_arena);
-    if (!seq)
-        return NULL;
-    if (TYPE(CHILD(n, 0)) == simple_stmt) {
-        n = CHILD(n, 0);
-        /* simple_stmt always ends with a NEWLINE,
-           and may have a trailing SEMI
-        */
-        end = NCH(n) - 1;
-        if (TYPE(CHILD(n, end - 1)) == SEMI)
-            end--;
-        /* loop by 2 to skip semi-colons */
-        for (i = 0; i < end; i += 2) {
-            ch = CHILD(n, i);
-            s = ast_for_stmt(c, ch);
-            if (!s)
-                return NULL;
-            asdl_seq_SET(seq, pos++, s);
-        }
-    }
-    else {
-        for (i = 2; i < (NCH(n) - 1); i++) {
-            ch = CHILD(n, i);
-            REQ(ch, stmt);
-            num = num_stmts(ch);
-            if (num == 1) {
-                /* small_stmt or compound_stmt with only one child */
-                s = ast_for_stmt(c, ch);
-                if (!s)
-                    return NULL;
-                asdl_seq_SET(seq, pos++, s);
-            }
-            else {
-                int j;
-                ch = CHILD(ch, 0);
-                REQ(ch, simple_stmt);
-                for (j = 0; j < NCH(ch); j += 2) {
-                    /* statement terminates with a semi-colon ';' */
-                    if (NCH(CHILD(ch, j)) == 0) {
-                        assert((j + 1) == NCH(ch));
-                        break;
-                    }
-                    s = ast_for_stmt(c, CHILD(ch, j));
-                    if (!s)
-                        return NULL;
-                    asdl_seq_SET(seq, pos++, s);
-                }
-            }
-        }
-    }
-    assert(pos == seq->size);
-    return seq;
-}
-
-static stmt_ty
-ast_for_if_stmt(struct compiling *c, const node *n)
-{
-    /* if_stmt: 'if' test ':' suite ('elif' test ':' suite)*
-       ['else' ':' suite]
-    */
-    char *s;
-
-    REQ(n, if_stmt);
-
-    if (NCH(n) == 4) {
-        expr_ty expression;
-        asdl_seq *suite_seq;
-
-        expression = ast_for_expr(c, CHILD(n, 1));
-        if (!expression)
-            return NULL;
-        suite_seq = ast_for_suite(c, CHILD(n, 3));
-        if (!suite_seq)
-            return NULL;
-
-        return If(expression, suite_seq, NULL, LINENO(n), n->n_col_offset,
-                  c->c_arena);
-    }
-
-    s = STR(CHILD(n, 4));
-    /* s[2], the third character in the string, will be
-       's' for el_s_e, or
-       'i' for el_i_f
-    */
-    if (s[2] == 's') {
-        expr_ty expression;
-        asdl_seq *seq1, *seq2;
-
-        expression = ast_for_expr(c, CHILD(n, 1));
-        if (!expression)
-            return NULL;
-        seq1 = ast_for_suite(c, CHILD(n, 3));
-        if (!seq1)
-            return NULL;
-        seq2 = ast_for_suite(c, CHILD(n, 6));
-        if (!seq2)
-            return NULL;
-
-        return If(expression, seq1, seq2, LINENO(n), n->n_col_offset,
-                  c->c_arena);
-    }
-    else if (s[2] == 'i') {
-        int i, n_elif, has_else = 0;
-        expr_ty expression;
-        asdl_seq *suite_seq;
-        asdl_seq *orelse = NULL;
-        n_elif = NCH(n) - 4;
-        /* must reference the child n_elif+1 since 'else' token is third,
-           not fourth, child from the end. */
-        if (TYPE(CHILD(n, (n_elif + 1))) == NAME
-            && STR(CHILD(n, (n_elif + 1)))[2] == 's') {
-            has_else = 1;
-            n_elif -= 3;
-        }
-        n_elif /= 4;
-
-        if (has_else) {
-            asdl_seq *suite_seq2;
-
-            orelse = asdl_seq_new(1, c->c_arena);
-            if (!orelse)
-                return NULL;
-            expression = ast_for_expr(c, CHILD(n, NCH(n) - 6));
-            if (!expression)
-                return NULL;
-            suite_seq = ast_for_suite(c, CHILD(n, NCH(n) - 4));
-            if (!suite_seq)
-                return NULL;
-            suite_seq2 = ast_for_suite(c, CHILD(n, NCH(n) - 1));
-            if (!suite_seq2)
-                return NULL;
-
-            asdl_seq_SET(orelse, 0,
-                         If(expression, suite_seq, suite_seq2,
-                            LINENO(CHILD(n, NCH(n) - 6)),
-                            CHILD(n, NCH(n) - 6)->n_col_offset,
-                            c->c_arena));
-            /* the just-created orelse handled the last elif */
-            n_elif--;
-        }
-
-        for (i = 0; i < n_elif; i++) {
-            int off = 5 + (n_elif - i - 1) * 4;
-            asdl_seq *newobj = asdl_seq_new(1, c->c_arena);
-            if (!newobj)
-                return NULL;
-            expression = ast_for_expr(c, CHILD(n, off));
-            if (!expression)
-                return NULL;
-            suite_seq = ast_for_suite(c, CHILD(n, off + 2));
-            if (!suite_seq)
-                return NULL;
-
-            asdl_seq_SET(newobj, 0,
-                         If(expression, suite_seq, orelse,
-                            LINENO(CHILD(n, off)),
-                            CHILD(n, off)->n_col_offset, c->c_arena));
-            orelse = newobj;
-        }
-        expression = ast_for_expr(c, CHILD(n, 1));
-        if (!expression)
-            return NULL;
-        suite_seq = ast_for_suite(c, CHILD(n, 3));
-        if (!suite_seq)
-            return NULL;
-        return If(expression, suite_seq, orelse,
-                  LINENO(n), n->n_col_offset, c->c_arena);
-    }
-
-    PyErr_Format(PyExc_SystemError,
-                 "unexpected token in 'if' statement: %s", s);
-    return NULL;
-}
-
-static stmt_ty
-ast_for_while_stmt(struct compiling *c, const node *n)
-{
-    /* while_stmt: 'while' test ':' suite ['else' ':' suite] */
-    REQ(n, while_stmt);
-
-    if (NCH(n) == 4) {
-        expr_ty expression;
-        asdl_seq *suite_seq;
-
-        expression = ast_for_expr(c, CHILD(n, 1));
-        if (!expression)
-            return NULL;
-        suite_seq = ast_for_suite(c, CHILD(n, 3));
-        if (!suite_seq)
-            return NULL;
-        return While(expression, suite_seq, NULL, LINENO(n), n->n_col_offset,
-                     c->c_arena);
-    }
-    else if (NCH(n) == 7) {
-        expr_ty expression;
-        asdl_seq *seq1, *seq2;
-
-        expression = ast_for_expr(c, CHILD(n, 1));
-        if (!expression)
-            return NULL;
-        seq1 = ast_for_suite(c, CHILD(n, 3));
-        if (!seq1)
-            return NULL;
-        seq2 = ast_for_suite(c, CHILD(n, 6));
-        if (!seq2)
-            return NULL;
-
-        return While(expression, seq1, seq2, LINENO(n), n->n_col_offset,
-                     c->c_arena);
-    }
-
-    PyErr_Format(PyExc_SystemError,
-                 "wrong number of tokens for 'while' statement: %d",
-                 NCH(n));
-    return NULL;
-}
-
-static stmt_ty
-ast_for_for_stmt(struct compiling *c, const node *n)
-{
-    asdl_seq *_target, *seq = NULL, *suite_seq;
-    expr_ty expression;
-    expr_ty target, first;
-    const node *node_target;
-    /* for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] */
-    REQ(n, for_stmt);
-
-    if (NCH(n) == 9) {
-        seq = ast_for_suite(c, CHILD(n, 8));
-        if (!seq)
-            return NULL;
-    }
-
-    node_target = CHILD(n, 1);
-    _target = ast_for_exprlist(c, node_target, Store);
-    if (!_target)
-        return NULL;
-    /* Check the # of children rather than the length of _target, since
-       for x, in ... has 1 element in _target, but still requires a Tuple. */
-    first = (expr_ty)asdl_seq_GET(_target, 0);
-    if (NCH(node_target) == 1)
-        target = first;
-    else
-        target = Tuple(_target, Store, first->lineno, first->col_offset, c->c_arena);
-
-    expression = ast_for_testlist(c, CHILD(n, 3));
-    if (!expression)
-        return NULL;
-    suite_seq = ast_for_suite(c, CHILD(n, 5));
-    if (!suite_seq)
-        return NULL;
-
-    return For(target, expression, suite_seq, seq, LINENO(n), n->n_col_offset,
-               c->c_arena);
-}
-
-static excepthandler_ty
-ast_for_except_clause(struct compiling *c, const node *exc, node *body)
-{
-    /* except_clause: 'except' [test [(',' | 'as') test]] */
-    REQ(exc, except_clause);
-    REQ(body, suite);
-
-    if (NCH(exc) == 1) {
-        asdl_seq *suite_seq = ast_for_suite(c, body);
-        if (!suite_seq)
-            return NULL;
-
-        return ExceptHandler(NULL, NULL, suite_seq, LINENO(exc),
-                             exc->n_col_offset, c->c_arena);
-    }
-    else if (NCH(exc) == 2) {
-        expr_ty expression;
-        asdl_seq *suite_seq;
-
-        expression = ast_for_expr(c, CHILD(exc, 1));
-        if (!expression)
-            return NULL;
-        suite_seq = ast_for_suite(c, body);
-        if (!suite_seq)
-            return NULL;
-
-        return ExceptHandler(expression, NULL, suite_seq, LINENO(exc),
-                             exc->n_col_offset, c->c_arena);
-    }
-    else if (NCH(exc) == 4) {
-        asdl_seq *suite_seq;
-        expr_ty expression;
-        expr_ty e = ast_for_expr(c, CHILD(exc, 3));
-        if (!e)
-            return NULL;
-        if (!set_context(c, e, Store, CHILD(exc, 3)))
-            return NULL;
-        expression = ast_for_expr(c, CHILD(exc, 1));
-        if (!expression)
-            return NULL;
-        suite_seq = ast_for_suite(c, body);
-        if (!suite_seq)
-            return NULL;
-
-        return ExceptHandler(expression, e, suite_seq, LINENO(exc),
-                             exc->n_col_offset, c->c_arena);
-    }
-
-    PyErr_Format(PyExc_SystemError,
-                 "wrong number of children for 'except' clause: %d",
-                 NCH(exc));
-    return NULL;
-}
-
-static stmt_ty
-ast_for_try_stmt(struct compiling *c, const node *n)
-{
-    const int nch = NCH(n);
-    int n_except = (nch - 3)/3;
-    asdl_seq *body, *orelse = NULL, *finally = NULL;
-
-    REQ(n, try_stmt);
-
-    body = ast_for_suite(c, CHILD(n, 2));
-    if (body == NULL)
-        return NULL;
-
-    if (TYPE(CHILD(n, nch - 3)) == NAME) {
-        if (strcmp(STR(CHILD(n, nch - 3)), "finally") == 0) {
-            if (nch >= 9 && TYPE(CHILD(n, nch - 6)) == NAME) {
-                /* we can assume it's an "else",
-                   because nch >= 9 for try-else-finally and
-                   it would otherwise have a type of except_clause */
-                orelse = ast_for_suite(c, CHILD(n, nch - 4));
-                if (orelse == NULL)
-                    return NULL;
-                n_except--;
-            }
-
-            finally = ast_for_suite(c, CHILD(n, nch - 1));
-            if (finally == NULL)
-                return NULL;
-            n_except--;
-        }
-        else {
-            /* we can assume it's an "else",
-               otherwise it would have a type of except_clause */
-            orelse = ast_for_suite(c, CHILD(n, nch - 1));
-            if (orelse == NULL)
-                return NULL;
-            n_except--;
-        }
-    }
-    else if (TYPE(CHILD(n, nch - 3)) != except_clause) {
-        ast_error(n, "malformed 'try' statement");
-        return NULL;
-    }
-
-    if (n_except > 0) {
-        int i;
-        stmt_ty except_st;
-        /* process except statements to create a try ... except */
-        asdl_seq *handlers = asdl_seq_new(n_except, c->c_arena);
-        if (handlers == NULL)
-            return NULL;
-
-        for (i = 0; i < n_except; i++) {
-            excepthandler_ty e = ast_for_except_clause(c, CHILD(n, 3 + i * 3),
-                                                       CHILD(n, 5 + i * 3));
-            if (!e)
-                return NULL;
-            asdl_seq_SET(handlers, i, e);
-        }
-
-        except_st = TryExcept(body, handlers, orelse, LINENO(n),
-                              n->n_col_offset, c->c_arena);
-        if (!finally)
-            return except_st;
-
-        /* if a 'finally' is present too, we nest the TryExcept within a
-           TryFinally to emulate try ... except ... finally */
-        body = asdl_seq_new(1, c->c_arena);
-        if (body == NULL)
-            return NULL;
-        asdl_seq_SET(body, 0, except_st);
-    }
-
-    /* must be a try ... finally (except clauses are in body, if any exist) */
-    assert(finally != NULL);
-    return TryFinally(body, finally, LINENO(n), n->n_col_offset, c->c_arena);
-}
-
-/* with_item: test ['as' expr] */
-static stmt_ty
-ast_for_with_item(struct compiling *c, const node *n, asdl_seq *content)
-{
-    expr_ty context_expr, optional_vars = NULL;
-
-    REQ(n, with_item);
-    context_expr = ast_for_expr(c, CHILD(n, 0));
-    if (!context_expr)
-        return NULL;
-    if (NCH(n) == 3) {
-        optional_vars = ast_for_expr(c, CHILD(n, 2));
-
-        if (!optional_vars) {
-            return NULL;
-        }
-        if (!set_context(c, optional_vars, Store, n)) {
-            return NULL;
-        }
-    }
-
-    return With(context_expr, optional_vars, content, LINENO(n),
-                n->n_col_offset, c->c_arena);
-}
-
-/* with_stmt: 'with' with_item (',' with_item)* ':' suite */
-static stmt_ty
-ast_for_with_stmt(struct compiling *c, const node *n)
-{
-    int i;
-    stmt_ty ret;
-    asdl_seq *inner;
-
-    REQ(n, with_stmt);
-
-    /* process the with items inside-out */
-    i = NCH(n) - 1;
-    /* the suite of the innermost with item is the suite of the with stmt */
-    inner = ast_for_suite(c, CHILD(n, i));
-    if (!inner)
-        return NULL;
-
-    for (;;) {
-        i -= 2;
-        ret = ast_for_with_item(c, CHILD(n, i), inner);
-        if (!ret)
-            return NULL;
-        /* was this the last item? */
-        if (i == 1)
-            break;
-        /* if not, wrap the result so far in a new sequence */
-        inner = asdl_seq_new(1, c->c_arena);
-        if (!inner)
-            return NULL;
-        asdl_seq_SET(inner, 0, ret);
-    }
-
-    return ret;
-}
-
-static stmt_ty
-ast_for_classdef(struct compiling *c, const node *n, asdl_seq *decorator_seq)
-{
-    /* classdef: 'class' NAME ['(' testlist ')'] ':' suite */
-    PyObject *classname;
-    asdl_seq *bases, *s;
-
-    REQ(n, classdef);
-
-    if (!forbidden_check(c, n, STR(CHILD(n, 1))))
-            return NULL;
-
-    if (NCH(n) == 4) {
-        s = ast_for_suite(c, CHILD(n, 3));
-        if (!s)
-            return NULL;
-        classname = NEW_IDENTIFIER(CHILD(n, 1));
-        if (!classname)
-            return NULL;
-        return ClassDef(classname, NULL, s, decorator_seq, LINENO(n),
-                        n->n_col_offset, c->c_arena);
-    }
-    /* check for empty base list */
-    if (TYPE(CHILD(n,3)) == RPAR) {
-        s = ast_for_suite(c, CHILD(n,5));
-        if (!s)
-            return NULL;
-        classname = NEW_IDENTIFIER(CHILD(n, 1));
-        if (!classname)
-            return NULL;
-        return ClassDef(classname, NULL, s, decorator_seq, LINENO(n),
-                        n->n_col_offset, c->c_arena);
-    }
-
-    /* else handle the base class list */
-    bases = ast_for_class_bases(c, CHILD(n, 3));
-    if (!bases)
-        return NULL;
-
-    s = ast_for_suite(c, CHILD(n, 6));
-    if (!s)
-        return NULL;
-    classname = NEW_IDENTIFIER(CHILD(n, 1));
-    if (!classname)
-        return NULL;
-    return ClassDef(classname, bases, s, decorator_seq,
-                    LINENO(n), n->n_col_offset, c->c_arena);
-}
-
-static stmt_ty
-ast_for_stmt(struct compiling *c, const node *n)
-{
-    if (TYPE(n) == stmt) {
-        assert(NCH(n) == 1);
-        n = CHILD(n, 0);
-    }
-    if (TYPE(n) == simple_stmt) {
-        assert(num_stmts(n) == 1);
-        n = CHILD(n, 0);
-    }
-    if (TYPE(n) == small_stmt) {
-        n = CHILD(n, 0);
-        /* small_stmt: expr_stmt | print_stmt  | del_stmt | pass_stmt
-                     | flow_stmt | import_stmt | global_stmt | exec_stmt
-                     | assert_stmt
-        */
-        switch (TYPE(n)) {
-            case expr_stmt:
-                return ast_for_expr_stmt(c, n);
-            case print_stmt:
-                return ast_for_print_stmt(c, n);
-            case del_stmt:
-                return ast_for_del_stmt(c, n);
-            case pass_stmt:
-                return Pass(LINENO(n), n->n_col_offset, c->c_arena);
-            case flow_stmt:
-                return ast_for_flow_stmt(c, n);
-            case import_stmt:
-                return ast_for_import_stmt(c, n);
-            case global_stmt:
-                return ast_for_global_stmt(c, n);
-            case exec_stmt:
-                return ast_for_exec_stmt(c, n);
-            case assert_stmt:
-                return ast_for_assert_stmt(c, n);
-            default:
-                PyErr_Format(PyExc_SystemError,
-                             "unhandled small_stmt: TYPE=%d NCH=%d\n",
-                             TYPE(n), NCH(n));
-                return NULL;
-        }
-    }
-    else {
-        /* compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt
-                        | funcdef | classdef | decorated
-        */
-        node *ch = CHILD(n, 0);
-        REQ(n, compound_stmt);
-        switch (TYPE(ch)) {
-            case if_stmt:
-                return ast_for_if_stmt(c, ch);
-            case while_stmt:
-                return ast_for_while_stmt(c, ch);
-            case for_stmt:
-                return ast_for_for_stmt(c, ch);
-            case try_stmt:
-                return ast_for_try_stmt(c, ch);
-            case with_stmt:
-                return ast_for_with_stmt(c, ch);
-            case funcdef:
-                return ast_for_funcdef(c, ch, NULL);
-            case classdef:
-                return ast_for_classdef(c, ch, NULL);
-	    case decorated:
-	        return ast_for_decorated(c, ch);
-            default:
-                PyErr_Format(PyExc_SystemError,
-                             "unhandled small_stmt: TYPE=%d NCH=%d\n",
-                             TYPE(n), NCH(n));
-                return NULL;
-        }
-    }
-}
-
-static PyObject *
-parsenumber(struct compiling *c, const char *s)
-{
-        const char *end;
-        long x;
-        double dx;
-#ifndef WITHOUT_COMPLEX
-        Py_complex complex;
-        int imflag;
-#endif
-
-        assert(s != NULL);
-        errno = 0;
-        end = s + strlen(s) - 1;
-#ifndef WITHOUT_COMPLEX
-        imflag = *end == 'j' || *end == 'J';
-#endif
-        if (*end == 'l' || *end == 'L')
-                return PyLong_FromString((char *)s, (char **)0, 0);
-        x = PyOS_strtol((char *)s, (char **)&end, 0);
-        if (*end == '\0') {
-                if (errno != 0)
-                        return PyLong_FromString((char *)s, (char **)0, 0);
-                return PyInt_FromLong(x);
-        }
-        /* XXX Huge floats may silently fail */
-#ifndef WITHOUT_COMPLEX
-        if (imflag) {
-                complex.real = 0.;
-                complex.imag = PyOS_string_to_double(s, (char **)&end, NULL);
-                if (complex.imag == -1.0 && PyErr_Occurred())
-                        return NULL;
-                return PyComplex_FromCComplex(complex);
-        }
-        else
-#endif
-        {
-                dx = PyOS_string_to_double(s, NULL, NULL);
-                if (dx == -1.0 && PyErr_Occurred())
-                        return NULL;
-                return PyFloat_FromDouble(dx);
-        }
-}
-
-static PyObject *
-decode_utf8(struct compiling *c, const char **sPtr, const char *end, char* encoding)
-{
-#ifndef Py_USING_UNICODE
-        Py_FatalError("decode_utf8 should not be called in this build.");
-        return NULL;
-#else
-        PyObject *u, *v;
-        char *s, *t;
-        t = s = (char *)*sPtr;
-        /* while (s < end && *s != '\\') s++; */ /* inefficient for u".." */
-        while (s < end && (*s & 0x80)) s++;
-        *sPtr = s;
-        u = PyUnicode_DecodeUTF8(t, s - t, NULL);
-        if (u == NULL)
-                return NULL;
-        v = PyUnicode_AsEncodedString(u, encoding, NULL);
-        Py_DECREF(u);
-        return v;
-#endif
-}
-
-#ifdef Py_USING_UNICODE
-static PyObject *
-decode_unicode(struct compiling *c, const char *s, size_t len, int rawmode, const char *encoding)
-{
-        PyObject *v;
-        PyObject *u = NULL;
-        char *buf;
-        char *p;
-        const char *end;
-        if (encoding != NULL && strcmp(encoding, "iso-8859-1")) {
-                /* check for integer overflow */
-                if (len > PY_SIZE_MAX / 6)
-                        return NULL;
-		/* "<C3><A4>" (2 bytes) may become "\U000000E4" (10 bytes), or 1:5
-		   "\ä" (3 bytes) may become "\u005c\U000000E4" (16 bytes), or ~1:6 */
-                u = PyString_FromStringAndSize((char *)NULL, len * 6);
-                if (u == NULL)
-                        return NULL;
-                p = buf = PyString_AsString(u);
-                end = s + len;
-                while (s < end) {
-                        if (*s == '\\') {
-                                *p++ = *s++;
-                                if (*s & 0x80) {
-                                        strcpy(p, "u005c");
-                                        p += 5;
-                                }
-                        }
-                        if (*s & 0x80) { /* XXX inefficient */
-                                PyObject *w;
-                                char *r;
-                                Py_ssize_t rn, i;
-                                w = decode_utf8(c, &s, end, "utf-32-be");
-                                if (w == NULL) {
-                                        Py_DECREF(u);
-                                        return NULL;
-                                }
-                                r = PyString_AsString(w);
-                                rn = PyString_Size(w);
-                                assert(rn % 4 == 0);
-                                for (i = 0; i < rn; i += 4) {
-                                        sprintf(p, "\\U%02x%02x%02x%02x",
-                                                r[i + 0] & 0xFF,
-                                                r[i + 1] & 0xFF,
-						r[i + 2] & 0xFF,
-						r[i + 3] & 0xFF);
-                                        p += 10;
-                                }
-                                Py_DECREF(w);
-                        } else {
-                                *p++ = *s++;
-                        }
-                }
-                len = p - buf;
-                s = buf;
-        }
-        if (rawmode)
-                v = PyUnicode_DecodeRawUnicodeEscape(s, len, NULL);
-        else
-                v = PyUnicode_DecodeUnicodeEscape(s, len, NULL);
-        Py_XDECREF(u);
-        return v;
-}
-#endif
-
-/* s is a Python string literal, including the bracketing quote characters,
- * and r &/or u prefixes (if any), and embedded escape sequences (if any).
- * parsestr parses it, and returns the decoded Python string object.
- */
-static PyObject *
-parsestr(struct compiling *c, const char *s)
-{
-        size_t len;
-        int quote = Py_CHARMASK(*s);
-        int rawmode = 0;
-        int need_encoding;
-        int unicode = c->c_future_unicode;
-
-        if (isalpha(quote) || quote == '_') {
-                if (quote == 'u' || quote == 'U') {
-                        quote = *++s;
-                        unicode = 1;
-                }
-                if (quote == 'b' || quote == 'B') {
-                        quote = *++s;
-                        unicode = 0;
-                }
-                if (quote == 'r' || quote == 'R') {
-                        quote = *++s;
-                        rawmode = 1;
-                }
-        }
-        if (quote != '\'' && quote != '\"') {
-                PyErr_BadInternalCall();
-                return NULL;
-        }
-        s++;
-        len = strlen(s);
-        if (len > INT_MAX) {
-                PyErr_SetString(PyExc_OverflowError,
-                                "string to parse is too long");
-                return NULL;
-        }
-        if (s[--len] != quote) {
-                PyErr_BadInternalCall();
-                return NULL;
-        }
-        if (len >= 4 && s[0] == quote && s[1] == quote) {
-                s += 2;
-                len -= 2;
-                if (s[--len] != quote || s[--len] != quote) {
-                        PyErr_BadInternalCall();
-                        return NULL;
-                }
-        }
-#ifdef Py_USING_UNICODE
-        if (unicode || Py_UnicodeFlag) {
-                return decode_unicode(c, s, len, rawmode, c->c_encoding);
-        }
-#endif
-        need_encoding = (c->c_encoding != NULL &&
-                         strcmp(c->c_encoding, "utf-8") != 0 &&
-                         strcmp(c->c_encoding, "iso-8859-1") != 0);
-        if (rawmode || strchr(s, '\\') == NULL) {
-                if (need_encoding) {
-#ifndef Py_USING_UNICODE
-                        /* This should not happen - we never see any other
-                           encoding. */
-                        Py_FatalError(
-                            "cannot deal with encodings in this build.");
-#else
-                        PyObject *v, *u = PyUnicode_DecodeUTF8(s, len, NULL);
-                        if (u == NULL)
-                                return NULL;
-                        v = PyUnicode_AsEncodedString(u, c->c_encoding, NULL);
-                        Py_DECREF(u);
-                        return v;
-#endif
-                } else {
-                        return PyString_FromStringAndSize(s, len);
-                }
-        }
-
-        return PyString_DecodeEscape(s, len, NULL, unicode,
-                                     need_encoding ? c->c_encoding : NULL);
-}
-
-/* Build a Python string object out of a STRING atom.  This takes care of
- * compile-time literal catenation, calling parsestr() on each piece, and
- * pasting the intermediate results together.
- */
-static PyObject *
-parsestrplus(struct compiling *c, const node *n)
-{
-        PyObject *v;
-        int i;
-        REQ(CHILD(n, 0), STRING);
-        if ((v = parsestr(c, STR(CHILD(n, 0)))) != NULL) {
-                /* String literal concatenation */
-                for (i = 1; i < NCH(n); i++) {
-                        PyObject *s;
-                        s = parsestr(c, STR(CHILD(n, i)));
-                        if (s == NULL)
-                                goto onError;
-                        if (PyString_Check(v) && PyString_Check(s)) {
-                                PyString_ConcatAndDel(&v, s);
-                                if (v == NULL)
-                                    goto onError;
-                        }
-#ifdef Py_USING_UNICODE
-                        else {
-                                PyObject *temp = PyUnicode_Concat(v, s);
-                                Py_DECREF(s);
-                                Py_DECREF(v);
-                                v = temp;
-                                if (v == NULL)
-                                    goto onError;
-                        }
-#endif
-                }
-        }
-        return v;
-
- onError:
-        Py_XDECREF(v);
-        return NULL;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/atof.c b/AppPkg/Applications/Python/Python-2.7.2/Python/atof.c
deleted file mode 100644
index 5356cf0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/atof.c
+++ /dev/null
@@ -1,50 +0,0 @@
-
-/* Just in case you haven't got an atof() around...
-   This one doesn't check for bad syntax or overflow,
-   and is slow and inaccurate.
-   But it's good enough for the occasional string literal... */
-
-#include "pyconfig.h"
-
-#include <ctype.h>
-
-double atof(char *s)
-{
-    double a = 0.0;
-    int e = 0;
-    int c;
-    while ((c = *s++) != '\0' && isdigit(c)) {
-        a = a*10.0 + (c - '0');
-    }
-    if (c == '.') {
-        while ((c = *s++) != '\0' && isdigit(c)) {
-            a = a*10.0 + (c - '0');
-            e = e-1;
-        }
-    }
-    if (c == 'e' || c == 'E') {
-        int sign = 1;
-        int i = 0;
-        c = *s++;
-        if (c == '+')
-            c = *s++;
-        else if (c == '-') {
-            c = *s++;
-            sign = -1;
-        }
-        while (isdigit(c)) {
-            i = i*10 + (c - '0');
-            c = *s++;
-        }
-        e += i*sign;
-    }
-    while (e > 0) {
-        a *= 10.0;
-        e--;
-    }
-    while (e < 0) {
-        a *= 0.1;
-        e++;
-    }
-    return a;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/bltinmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Python/bltinmodule.c
deleted file mode 100644
index 67bb0dc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/bltinmodule.c
+++ /dev/null
@@ -1,3043 +0,0 @@
-/* Built-in functions */
-
-#include "Python.h"
-#include "Python-ast.h"
-
-#include "node.h"
-#include "code.h"
-#include "eval.h"
-
-#include <ctype.h>
-#include <float.h> /* for DBL_MANT_DIG and friends */
-
-#ifdef RISCOS
-#include "unixstuff.h"
-#endif
-
-/* The default encoding used by the platform file system APIs
-   Can remain NULL for all platforms that don't have such a concept
-*/
-#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
-const char *Py_FileSystemDefaultEncoding = "mbcs";
-#elif defined(__APPLE__)
-const char *Py_FileSystemDefaultEncoding = "utf-8";
-#else
-const char *Py_FileSystemDefaultEncoding = NULL; /* use default */
-#endif
-
-/* Forward */
-static PyObject *filterstring(PyObject *, PyObject *);
-#ifdef Py_USING_UNICODE
-static PyObject *filterunicode(PyObject *, PyObject *);
-#endif
-static PyObject *filtertuple (PyObject *, PyObject *);
-
-static PyObject *
-builtin___import__(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    static char *kwlist[] = {"name", "globals", "locals", "fromlist",
-                             "level", 0};
-    char *name;
-    PyObject *globals = NULL;
-    PyObject *locals = NULL;
-    PyObject *fromlist = NULL;
-    int level = -1;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|OOOi:__import__",
-                    kwlist, &name, &globals, &locals, &fromlist, &level))
-        return NULL;
-    return PyImport_ImportModuleLevel(name, globals, locals,
-                                      fromlist, level);
-}
-
-PyDoc_STRVAR(import_doc,
-"__import__(name, globals={}, locals={}, fromlist=[], level=-1) -> module\n\
-\n\
-Import a module.  The globals are only used to determine the context;\n\
-they are not modified.  The locals are currently unused.  The fromlist\n\
-should be a list of names to emulate ``from name import ...'', or an\n\
-empty list to emulate ``import name''.\n\
-When importing a module from a package, note that __import__('A.B', ...)\n\
-returns package A when fromlist is empty, but its submodule B when\n\
-fromlist is not empty.  Level is used to determine whether to perform \n\
-absolute or relative imports.  -1 is the original strategy of attempting\n\
-both absolute and relative imports, 0 is absolute, a positive number\n\
-is the number of parent directories to search relative to the current module.");
-
-
-static PyObject *
-builtin_abs(PyObject *self, PyObject *v)
-{
-    return PyNumber_Absolute(v);
-}
-
-PyDoc_STRVAR(abs_doc,
-"abs(number) -> number\n\
-\n\
-Return the absolute value of the argument.");
-
-static PyObject *
-builtin_all(PyObject *self, PyObject *v)
-{
-    PyObject *it, *item;
-    PyObject *(*iternext)(PyObject *);
-    int cmp;
-
-    it = PyObject_GetIter(v);
-    if (it == NULL)
-        return NULL;
-    iternext = *Py_TYPE(it)->tp_iternext;
-
-    for (;;) {
-        item = iternext(it);
-        if (item == NULL)
-            break;
-        cmp = PyObject_IsTrue(item);
-        Py_DECREF(item);
-        if (cmp < 0) {
-            Py_DECREF(it);
-            return NULL;
-        }
-        if (cmp == 0) {
-            Py_DECREF(it);
-            Py_RETURN_FALSE;
-        }
-    }
-    Py_DECREF(it);
-    if (PyErr_Occurred()) {
-        if (PyErr_ExceptionMatches(PyExc_StopIteration))
-            PyErr_Clear();
-        else
-            return NULL;
-    }
-    Py_RETURN_TRUE;
-}
-
-PyDoc_STRVAR(all_doc,
-"all(iterable) -> bool\n\
-\n\
-Return True if bool(x) is True for all values x in the iterable.");
-
-static PyObject *
-builtin_any(PyObject *self, PyObject *v)
-{
-    PyObject *it, *item;
-    PyObject *(*iternext)(PyObject *);
-    int cmp;
-
-    it = PyObject_GetIter(v);
-    if (it == NULL)
-        return NULL;
-    iternext = *Py_TYPE(it)->tp_iternext;
-
-    for (;;) {
-        item = iternext(it);
-        if (item == NULL)
-            break;
-        cmp = PyObject_IsTrue(item);
-        Py_DECREF(item);
-        if (cmp < 0) {
-            Py_DECREF(it);
-            return NULL;
-        }
-        if (cmp == 1) {
-            Py_DECREF(it);
-            Py_RETURN_TRUE;
-        }
-    }
-    Py_DECREF(it);
-    if (PyErr_Occurred()) {
-        if (PyErr_ExceptionMatches(PyExc_StopIteration))
-            PyErr_Clear();
-        else
-            return NULL;
-    }
-    Py_RETURN_FALSE;
-}
-
-PyDoc_STRVAR(any_doc,
-"any(iterable) -> bool\n\
-\n\
-Return True if bool(x) is True for any x in the iterable.");
-
-static PyObject *
-builtin_apply(PyObject *self, PyObject *args)
-{
-    PyObject *func, *alist = NULL, *kwdict = NULL;
-    PyObject *t = NULL, *retval = NULL;
-
-    if (PyErr_WarnPy3k("apply() not supported in 3.x; "
-                       "use func(*args, **kwargs)", 1) < 0)
-        return NULL;
-
-    if (!PyArg_UnpackTuple(args, "apply", 1, 3, &func, &alist, &kwdict))
-        return NULL;
-    if (alist != NULL) {
-        if (!PyTuple_Check(alist)) {
-            if (!PySequence_Check(alist)) {
-                PyErr_Format(PyExc_TypeError,
-                     "apply() arg 2 expected sequence, found %s",
-                         alist->ob_type->tp_name);
-                return NULL;
-            }
-            t = PySequence_Tuple(alist);
-            if (t == NULL)
-                return NULL;
-            alist = t;
-        }
-    }
-    if (kwdict != NULL && !PyDict_Check(kwdict)) {
-        PyErr_Format(PyExc_TypeError,
-                     "apply() arg 3 expected dictionary, found %s",
-                     kwdict->ob_type->tp_name);
-        goto finally;
-    }
-    retval = PyEval_CallObjectWithKeywords(func, alist, kwdict);
-  finally:
-    Py_XDECREF(t);
-    return retval;
-}
-
-PyDoc_STRVAR(apply_doc,
-"apply(object[, args[, kwargs]]) -> value\n\
-\n\
-Call a callable object with positional arguments taken from the tuple args,\n\
-and keyword arguments taken from the optional dictionary kwargs.\n\
-Note that classes are callable, as are instances with a __call__() method.\n\
-\n\
-Deprecated since release 2.3. Instead, use the extended call syntax:\n\
-    function(*args, **keywords).");
-
-
-static PyObject *
-builtin_bin(PyObject *self, PyObject *v)
-{
-    return PyNumber_ToBase(v, 2);
-}
-
-PyDoc_STRVAR(bin_doc,
-"bin(number) -> string\n\
-\n\
-Return the binary representation of an integer or long integer.");
-
-
-static PyObject *
-builtin_callable(PyObject *self, PyObject *v)
-{
-    if (PyErr_WarnPy3k("callable() not supported in 3.x; "
-                       "use isinstance(x, collections.Callable)", 1) < 0)
-        return NULL;
-    return PyBool_FromLong((long)PyCallable_Check(v));
-}
-
-PyDoc_STRVAR(callable_doc,
-"callable(object) -> bool\n\
-\n\
-Return whether the object is callable (i.e., some kind of function).\n\
-Note that classes are callable, as are instances with a __call__() method.");
-
-
-static PyObject *
-builtin_filter(PyObject *self, PyObject *args)
-{
-    PyObject *func, *seq, *result, *it, *arg;
-    Py_ssize_t len;   /* guess for result list size */
-    register Py_ssize_t j;
-
-    if (!PyArg_UnpackTuple(args, "filter", 2, 2, &func, &seq))
-        return NULL;
-
-    /* Strings and tuples return a result of the same type. */
-    if (PyString_Check(seq))
-        return filterstring(func, seq);
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(seq))
-        return filterunicode(func, seq);
-#endif
-    if (PyTuple_Check(seq))
-        return filtertuple(func, seq);
-
-    /* Pre-allocate argument list tuple. */
-    arg = PyTuple_New(1);
-    if (arg == NULL)
-        return NULL;
-
-    /* Get iterator. */
-    it = PyObject_GetIter(seq);
-    if (it == NULL)
-        goto Fail_arg;
-
-    /* Guess a result list size. */
-    len = _PyObject_LengthHint(seq, 8);
-    if (len == -1)
-        goto Fail_it;
-
-    /* Get a result list. */
-    if (PyList_Check(seq) && seq->ob_refcnt == 1) {
-        /* Eww - can modify the list in-place. */
-        Py_INCREF(seq);
-        result = seq;
-    }
-    else {
-        result = PyList_New(len);
-        if (result == NULL)
-            goto Fail_it;
-    }
-
-    /* Build the result list. */
-    j = 0;
-    for (;;) {
-        PyObject *item;
-        int ok;
-
-        item = PyIter_Next(it);
-        if (item == NULL) {
-            if (PyErr_Occurred())
-                goto Fail_result_it;
-            break;
-        }
-
-        if (func == (PyObject *)&PyBool_Type || func == Py_None) {
-            ok = PyObject_IsTrue(item);
-        }
-        else {
-            PyObject *good;
-            PyTuple_SET_ITEM(arg, 0, item);
-            good = PyObject_Call(func, arg, NULL);
-            PyTuple_SET_ITEM(arg, 0, NULL);
-            if (good == NULL) {
-                Py_DECREF(item);
-                goto Fail_result_it;
-            }
-            ok = PyObject_IsTrue(good);
-            Py_DECREF(good);
-        }
-        if (ok) {
-            if (j < len)
-                PyList_SET_ITEM(result, j, item);
-            else {
-                int status = PyList_Append(result, item);
-                Py_DECREF(item);
-                if (status < 0)
-                    goto Fail_result_it;
-            }
-            ++j;
-        }
-        else
-            Py_DECREF(item);
-    }
-
-
-    /* Cut back result list if len is too big. */
-    if (j < len && PyList_SetSlice(result, j, len, NULL) < 0)
-        goto Fail_result_it;
-
-    Py_DECREF(it);
-    Py_DECREF(arg);
-    return result;
-
-Fail_result_it:
-    Py_DECREF(result);
-Fail_it:
-    Py_DECREF(it);
-Fail_arg:
-    Py_DECREF(arg);
-    return NULL;
-}
-
-PyDoc_STRVAR(filter_doc,
-"filter(function or None, sequence) -> list, tuple, or string\n"
-"\n"
-"Return those items of sequence for which function(item) is true.  If\n"
-"function is None, return the items that are true.  If sequence is a tuple\n"
-"or string, return the same type, else return a list.");
-
-static PyObject *
-builtin_format(PyObject *self, PyObject *args)
-{
-    PyObject *value;
-    PyObject *format_spec = NULL;
-
-    if (!PyArg_ParseTuple(args, "O|O:format", &value, &format_spec))
-        return NULL;
-
-    return PyObject_Format(value, format_spec);
-}
-
-PyDoc_STRVAR(format_doc,
-"format(value[, format_spec]) -> string\n\
-\n\
-Returns value.__format__(format_spec)\n\
-format_spec defaults to \"\"");
-
-static PyObject *
-builtin_chr(PyObject *self, PyObject *args)
-{
-    long x;
-    char s[1];
-
-    if (!PyArg_ParseTuple(args, "l:chr", &x))
-        return NULL;
-    if (x < 0 || x >= 256) {
-        PyErr_SetString(PyExc_ValueError,
-                        "chr() arg not in range(256)");
-        return NULL;
-    }
-    s[0] = (char)x;
-    return PyString_FromStringAndSize(s, 1);
-}
-
-PyDoc_STRVAR(chr_doc,
-"chr(i) -> character\n\
-\n\
-Return a string of one character with ordinal i; 0 <= i < 256.");
-
-
-#ifdef Py_USING_UNICODE
-static PyObject *
-builtin_unichr(PyObject *self, PyObject *args)
-{
-    int x;
-
-    if (!PyArg_ParseTuple(args, "i:unichr", &x))
-        return NULL;
-
-    return PyUnicode_FromOrdinal(x);
-}
-
-PyDoc_STRVAR(unichr_doc,
-"unichr(i) -> Unicode character\n\
-\n\
-Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.");
-#endif
-
-
-static PyObject *
-builtin_cmp(PyObject *self, PyObject *args)
-{
-    PyObject *a, *b;
-    int c;
-
-    if (!PyArg_UnpackTuple(args, "cmp", 2, 2, &a, &b))
-        return NULL;
-    if (PyObject_Cmp(a, b, &c) < 0)
-        return NULL;
-    return PyInt_FromLong((long)c);
-}
-
-PyDoc_STRVAR(cmp_doc,
-"cmp(x, y) -> integer\n\
-\n\
-Return negative if x<y, zero if x==y, positive if x>y.");
-
-
-static PyObject *
-builtin_coerce(PyObject *self, PyObject *args)
-{
-    PyObject *v, *w;
-    PyObject *res;
-
-    if (PyErr_WarnPy3k("coerce() not supported in 3.x", 1) < 0)
-        return NULL;
-
-    if (!PyArg_UnpackTuple(args, "coerce", 2, 2, &v, &w))
-        return NULL;
-    if (PyNumber_Coerce(&v, &w) < 0)
-        return NULL;
-    res = PyTuple_Pack(2, v, w);
-    Py_DECREF(v);
-    Py_DECREF(w);
-    return res;
-}
-
-PyDoc_STRVAR(coerce_doc,
-"coerce(x, y) -> (x1, y1)\n\
-\n\
-Return a tuple consisting of the two numeric arguments converted to\n\
-a common type, using the same rules as used by arithmetic operations.\n\
-If coercion is not possible, raise TypeError.");
-
-static PyObject *
-builtin_compile(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    char *str;
-    char *filename;
-    char *startstr;
-    int mode = -1;
-    int dont_inherit = 0;
-    int supplied_flags = 0;
-    int is_ast;
-    PyCompilerFlags cf;
-    PyObject *result = NULL, *cmd, *tmp = NULL;
-    Py_ssize_t length;
-    static char *kwlist[] = {"source", "filename", "mode", "flags",
-                             "dont_inherit", NULL};
-    int start[] = {Py_file_input, Py_eval_input, Py_single_input};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "Oss|ii:compile",
-                                     kwlist, &cmd, &filename, &startstr,
-                                     &supplied_flags, &dont_inherit))
-        return NULL;
-
-    cf.cf_flags = supplied_flags;
-
-    if (supplied_flags &
-        ~(PyCF_MASK | PyCF_MASK_OBSOLETE | PyCF_DONT_IMPLY_DEDENT | PyCF_ONLY_AST))
-    {
-        PyErr_SetString(PyExc_ValueError,
-                        "compile(): unrecognised flags");
-        return NULL;
-    }
-    /* XXX Warn if (supplied_flags & PyCF_MASK_OBSOLETE) != 0? */
-
-    if (!dont_inherit) {
-        PyEval_MergeCompilerFlags(&cf);
-    }
-
-    if (strcmp(startstr, "exec") == 0)
-        mode = 0;
-    else if (strcmp(startstr, "eval") == 0)
-        mode = 1;
-    else if (strcmp(startstr, "single") == 0)
-        mode = 2;
-    else {
-        PyErr_SetString(PyExc_ValueError,
-                        "compile() arg 3 must be 'exec', 'eval' or 'single'");
-        return NULL;
-    }
-
-    is_ast = PyAST_Check(cmd);
-    if (is_ast == -1)
-        return NULL;
-    if (is_ast) {
-        if (supplied_flags & PyCF_ONLY_AST) {
-            Py_INCREF(cmd);
-            result = cmd;
-        }
-        else {
-            PyArena *arena;
-            mod_ty mod;
-
-            arena = PyArena_New();
-            mod = PyAST_obj2mod(cmd, arena, mode);
-            if (mod == NULL) {
-                PyArena_Free(arena);
-                return NULL;
-            }
-            result = (PyObject*)PyAST_Compile(mod, filename,
-                                              &cf, arena);
-            PyArena_Free(arena);
-        }
-        return result;
-    }
-
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(cmd)) {
-        tmp = PyUnicode_AsUTF8String(cmd);
-        if (tmp == NULL)
-            return NULL;
-        cmd = tmp;
-        cf.cf_flags |= PyCF_SOURCE_IS_UTF8;
-    }
-#endif
-
-    if (PyObject_AsReadBuffer(cmd, (const void **)&str, &length))
-        goto cleanup;
-    if ((size_t)length != strlen(str)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "compile() expected string without null bytes");
-        goto cleanup;
-    }
-    result = Py_CompileStringFlags(str, filename, start[mode], &cf);
-cleanup:
-    Py_XDECREF(tmp);
-    return result;
-}
-
-PyDoc_STRVAR(compile_doc,
-"compile(source, filename, mode[, flags[, dont_inherit]]) -> code object\n\
-\n\
-Compile the source string (a Python module, statement or expression)\n\
-into a code object that can be executed by the exec statement or eval().\n\
-The filename will be used for run-time error messages.\n\
-The mode must be 'exec' to compile a module, 'single' to compile a\n\
-single (interactive) statement, or 'eval' to compile an expression.\n\
-The flags argument, if present, controls which future statements influence\n\
-the compilation of the code.\n\
-The dont_inherit argument, if non-zero, stops the compilation inheriting\n\
-the effects of any future statements in effect in the code calling\n\
-compile; if absent or zero these statements do influence the compilation,\n\
-in addition to any features explicitly specified.");
-
-static PyObject *
-builtin_dir(PyObject *self, PyObject *args)
-{
-    PyObject *arg = NULL;
-
-    if (!PyArg_UnpackTuple(args, "dir", 0, 1, &arg))
-        return NULL;
-    return PyObject_Dir(arg);
-}
-
-PyDoc_STRVAR(dir_doc,
-"dir([object]) -> list of strings\n"
-"\n"
-"If called without an argument, return the names in the current scope.\n"
-"Else, return an alphabetized list of names comprising (some of) the attributes\n"
-"of the given object, and of attributes reachable from it.\n"
-"If the object supplies a method named __dir__, it will be used; otherwise\n"
-"the default dir() logic is used and returns:\n"
-"  for a module object: the module's attributes.\n"
-"  for a class object:  its attributes, and recursively the attributes\n"
-"    of its bases.\n"
-"  for any other object: its attributes, its class's attributes, and\n"
-"    recursively the attributes of its class's base classes.");
-
-static PyObject *
-builtin_divmod(PyObject *self, PyObject *args)
-{
-    PyObject *v, *w;
-
-    if (!PyArg_UnpackTuple(args, "divmod", 2, 2, &v, &w))
-        return NULL;
-    return PyNumber_Divmod(v, w);
-}
-
-PyDoc_STRVAR(divmod_doc,
-"divmod(x, y) -> (div, mod)\n\
-\n\
-Return the tuple ((x-x%y)/y, x%y).  Invariant: div*y + mod == x.");
-
-
-static PyObject *
-builtin_eval(PyObject *self, PyObject *args)
-{
-    PyObject *cmd, *result, *tmp = NULL;
-    PyObject *globals = Py_None, *locals = Py_None;
-    char *str;
-    PyCompilerFlags cf;
-
-    if (!PyArg_UnpackTuple(args, "eval", 1, 3, &cmd, &globals, &locals))
-        return NULL;
-    if (locals != Py_None && !PyMapping_Check(locals)) {
-        PyErr_SetString(PyExc_TypeError, "locals must be a mapping");
-        return NULL;
-    }
-    if (globals != Py_None && !PyDict_Check(globals)) {
-        PyErr_SetString(PyExc_TypeError, PyMapping_Check(globals) ?
-            "globals must be a real dict; try eval(expr, {}, mapping)"
-            : "globals must be a dict");
-        return NULL;
-    }
-    if (globals == Py_None) {
-        globals = PyEval_GetGlobals();
-        if (locals == Py_None)
-            locals = PyEval_GetLocals();
-    }
-    else if (locals == Py_None)
-        locals = globals;
-
-    if (globals == NULL || locals == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-            "eval must be given globals and locals "
-            "when called without a frame");
-        return NULL;
-    }
-
-    if (PyDict_GetItemString(globals, "__builtins__") == NULL) {
-        if (PyDict_SetItemString(globals, "__builtins__",
-                                 PyEval_GetBuiltins()) != 0)
-            return NULL;
-    }
-
-    if (PyCode_Check(cmd)) {
-        if (PyCode_GetNumFree((PyCodeObject *)cmd) > 0) {
-            PyErr_SetString(PyExc_TypeError,
-        "code object passed to eval() may not contain free variables");
-            return NULL;
-        }
-        return PyEval_EvalCode((PyCodeObject *) cmd, globals, locals);
-    }
-
-    if (!PyString_Check(cmd) &&
-        !PyUnicode_Check(cmd)) {
-        PyErr_SetString(PyExc_TypeError,
-                   "eval() arg 1 must be a string or code object");
-        return NULL;
-    }
-    cf.cf_flags = 0;
-
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(cmd)) {
-        tmp = PyUnicode_AsUTF8String(cmd);
-        if (tmp == NULL)
-            return NULL;
-        cmd = tmp;
-        cf.cf_flags |= PyCF_SOURCE_IS_UTF8;
-    }
-#endif
-    if (PyString_AsStringAndSize(cmd, &str, NULL)) {
-        Py_XDECREF(tmp);
-        return NULL;
-    }
-    while (*str == ' ' || *str == '\t')
-        str++;
-
-    (void)PyEval_MergeCompilerFlags(&cf);
-    result = PyRun_StringFlags(str, Py_eval_input, globals, locals, &cf);
-    Py_XDECREF(tmp);
-    return result;
-}
-
-PyDoc_STRVAR(eval_doc,
-"eval(source[, globals[, locals]]) -> value\n\
-\n\
-Evaluate the source in the context of globals and locals.\n\
-The source may be a string representing a Python expression\n\
-or a code object as returned by compile().\n\
-The globals must be a dictionary and locals can be any mapping,\n\
-defaulting to the current globals and locals.\n\
-If only globals is given, locals defaults to it.\n");
-
-
-static PyObject *
-builtin_execfile(PyObject *self, PyObject *args)
-{
-    char *filename;
-    PyObject *globals = Py_None, *locals = Py_None;
-    PyObject *res;
-    FILE* fp = NULL;
-    PyCompilerFlags cf;
-    int exists;
-
-    if (PyErr_WarnPy3k("execfile() not supported in 3.x; use exec()",
-                       1) < 0)
-        return NULL;
-
-    if (!PyArg_ParseTuple(args, "s|O!O:execfile",
-                    &filename,
-                    &PyDict_Type, &globals,
-                    &locals))
-        return NULL;
-    if (locals != Py_None && !PyMapping_Check(locals)) {
-        PyErr_SetString(PyExc_TypeError, "locals must be a mapping");
-        return NULL;
-    }
-    if (globals == Py_None) {
-        globals = PyEval_GetGlobals();
-        if (locals == Py_None)
-            locals = PyEval_GetLocals();
-    }
-    else if (locals == Py_None)
-        locals = globals;
-    if (PyDict_GetItemString(globals, "__builtins__") == NULL) {
-        if (PyDict_SetItemString(globals, "__builtins__",
-                                 PyEval_GetBuiltins()) != 0)
-            return NULL;
-    }
-
-    exists = 0;
-    /* Test for existence or directory. */
-#if defined(PLAN9)
-    {
-        Dir *d;
-
-        if ((d = dirstat(filename))!=nil) {
-            if(d->mode & DMDIR)
-                werrstr("is a directory");
-            else
-                exists = 1;
-            free(d);
-        }
-    }
-#elif defined(RISCOS)
-    if (object_exists(filename)) {
-        if (isdir(filename))
-            errno = EISDIR;
-        else
-            exists = 1;
-    }
-#else   /* standard Posix */
-    {
-        struct stat s;
-        if (stat(filename, &s) == 0) {
-            if (S_ISDIR(s.st_mode))
-#                               if defined(PYOS_OS2) && defined(PYCC_VACPP)
-                            errno = EOS2ERR;
-#                               else
-                            errno = EISDIR;
-#                               endif
-            else
-                exists = 1;
-        }
-    }
-#endif
-
-    if (exists) {
-        Py_BEGIN_ALLOW_THREADS
-        fp = fopen(filename, "r" PY_STDIOTEXTMODE);
-        Py_END_ALLOW_THREADS
-
-        if (fp == NULL) {
-            exists = 0;
-        }
-    }
-
-    if (!exists) {
-        PyErr_SetFromErrnoWithFilename(PyExc_IOError, filename);
-        return NULL;
-    }
-    cf.cf_flags = 0;
-    if (PyEval_MergeCompilerFlags(&cf))
-        res = PyRun_FileExFlags(fp, filename, Py_file_input, globals,
-                           locals, 1, &cf);
-    else
-        res = PyRun_FileEx(fp, filename, Py_file_input, globals,
-                           locals, 1);
-    return res;
-}
-
-PyDoc_STRVAR(execfile_doc,
-"execfile(filename[, globals[, locals]])\n\
-\n\
-Read and execute a Python script from a file.\n\
-The globals and locals are dictionaries, defaulting to the current\n\
-globals and locals.  If only globals is given, locals defaults to it.");
-
-
-static PyObject *
-builtin_getattr(PyObject *self, PyObject *args)
-{
-    PyObject *v, *result, *dflt = NULL;
-    PyObject *name;
-
-    if (!PyArg_UnpackTuple(args, "getattr", 2, 3, &v, &name, &dflt))
-        return NULL;
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(name)) {
-        name = _PyUnicode_AsDefaultEncodedString(name, NULL);
-        if (name == NULL)
-            return NULL;
-    }
-#endif
-
-    if (!PyString_Check(name)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "getattr(): attribute name must be string");
-        return NULL;
-    }
-    result = PyObject_GetAttr(v, name);
-    if (result == NULL && dflt != NULL &&
-        PyErr_ExceptionMatches(PyExc_AttributeError))
-    {
-        PyErr_Clear();
-        Py_INCREF(dflt);
-        result = dflt;
-    }
-    return result;
-}
-
-PyDoc_STRVAR(getattr_doc,
-"getattr(object, name[, default]) -> value\n\
-\n\
-Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y.\n\
-When a default argument is given, it is returned when the attribute doesn't\n\
-exist; without it, an exception is raised in that case.");
-
-
-static PyObject *
-builtin_globals(PyObject *self)
-{
-    PyObject *d;
-
-    d = PyEval_GetGlobals();
-    Py_XINCREF(d);
-    return d;
-}
-
-PyDoc_STRVAR(globals_doc,
-"globals() -> dictionary\n\
-\n\
-Return the dictionary containing the current scope's global variables.");
-
-
-static PyObject *
-builtin_hasattr(PyObject *self, PyObject *args)
-{
-    PyObject *v;
-    PyObject *name;
-
-    if (!PyArg_UnpackTuple(args, "hasattr", 2, 2, &v, &name))
-        return NULL;
-#ifdef Py_USING_UNICODE
-    if (PyUnicode_Check(name)) {
-        name = _PyUnicode_AsDefaultEncodedString(name, NULL);
-        if (name == NULL)
-            return NULL;
-    }
-#endif
-
-    if (!PyString_Check(name)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "hasattr(): attribute name must be string");
-        return NULL;
-    }
-    v = PyObject_GetAttr(v, name);
-    if (v == NULL) {
-        if (!PyErr_ExceptionMatches(PyExc_Exception))
-            return NULL;
-        else {
-            PyErr_Clear();
-            Py_INCREF(Py_False);
-            return Py_False;
-        }
-    }
-    Py_DECREF(v);
-    Py_INCREF(Py_True);
-    return Py_True;
-}
-
-PyDoc_STRVAR(hasattr_doc,
-"hasattr(object, name) -> bool\n\
-\n\
-Return whether the object has an attribute with the given name.\n\
-(This is done by calling getattr(object, name) and catching exceptions.)");
-
-
-static PyObject *
-builtin_id(PyObject *self, PyObject *v)
-{
-    return PyLong_FromVoidPtr(v);
-}
-
-PyDoc_STRVAR(id_doc,
-"id(object) -> integer\n\
-\n\
-Return the identity of an object.  This is guaranteed to be unique among\n\
-simultaneously existing objects.  (Hint: it's the object's memory address.)");
-
-
-static PyObject *
-builtin_map(PyObject *self, PyObject *args)
-{
-    typedef struct {
-        PyObject *it;           /* the iterator object */
-        int saw_StopIteration;  /* bool:  did the iterator end? */
-    } sequence;
-
-    PyObject *func, *result;
-    sequence *seqs = NULL, *sqp;
-    Py_ssize_t n, len;
-    register int i, j;
-
-    n = PyTuple_Size(args);
-    if (n < 2) {
-        PyErr_SetString(PyExc_TypeError,
-                        "map() requires at least two args");
-        return NULL;
-    }
-
-    func = PyTuple_GetItem(args, 0);
-    n--;
-
-    if (func == Py_None) {
-        if (PyErr_WarnPy3k("map(None, ...) not supported in 3.x; "
-                           "use list(...)", 1) < 0)
-            return NULL;
-        if (n == 1) {
-            /* map(None, S) is the same as list(S). */
-            return PySequence_List(PyTuple_GetItem(args, 1));
-        }
-    }
-
-    /* Get space for sequence descriptors.  Must NULL out the iterator
-     * pointers so that jumping to Fail_2 later doesn't see trash.
-     */
-    if ((seqs = PyMem_NEW(sequence, n)) == NULL) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-    for (i = 0; i < n; ++i) {
-        seqs[i].it = (PyObject*)NULL;
-        seqs[i].saw_StopIteration = 0;
-    }
-
-    /* Do a first pass to obtain iterators for the arguments, and set len
-     * to the largest of their lengths.
-     */
-    len = 0;
-    for (i = 0, sqp = seqs; i < n; ++i, ++sqp) {
-        PyObject *curseq;
-        Py_ssize_t curlen;
-
-        /* Get iterator. */
-        curseq = PyTuple_GetItem(args, i+1);
-        sqp->it = PyObject_GetIter(curseq);
-        if (sqp->it == NULL) {
-            static char errmsg[] =
-                "argument %d to map() must support iteration";
-            char errbuf[sizeof(errmsg) + 25];
-            PyOS_snprintf(errbuf, sizeof(errbuf), errmsg, i+2);
-            PyErr_SetString(PyExc_TypeError, errbuf);
-            goto Fail_2;
-        }
-
-        /* Update len. */
-        curlen = _PyObject_LengthHint(curseq, 8);
-        if (curlen > len)
-            len = curlen;
-    }
-
-    /* Get space for the result list. */
-    if ((result = (PyObject *) PyList_New(len)) == NULL)
-        goto Fail_2;
-
-    /* Iterate over the sequences until all have stopped. */
-    for (i = 0; ; ++i) {
-        PyObject *alist, *item=NULL, *value;
-        int numactive = 0;
-
-        if (func == Py_None && n == 1)
-            alist = NULL;
-        else if ((alist = PyTuple_New(n)) == NULL)
-            goto Fail_1;
-
-        for (j = 0, sqp = seqs; j < n; ++j, ++sqp) {
-            if (sqp->saw_StopIteration) {
-                Py_INCREF(Py_None);
-                item = Py_None;
-            }
-            else {
-                item = PyIter_Next(sqp->it);
-                if (item)
-                    ++numactive;
-                else {
-                    if (PyErr_Occurred()) {
-                        Py_XDECREF(alist);
-                        goto Fail_1;
-                    }
-                    Py_INCREF(Py_None);
-                    item = Py_None;
-                    sqp->saw_StopIteration = 1;
-                }
-            }
-            if (alist)
-                PyTuple_SET_ITEM(alist, j, item);
-            else
-                break;
-        }
-
-        if (!alist)
-            alist = item;
-
-        if (numactive == 0) {
-            Py_DECREF(alist);
-            break;
-        }
-
-        if (func == Py_None)
-            value = alist;
-        else {
-            value = PyEval_CallObject(func, alist);
-            Py_DECREF(alist);
-            if (value == NULL)
-                goto Fail_1;
-        }
-        if (i >= len) {
-            int status = PyList_Append(result, value);
-            Py_DECREF(value);
-            if (status < 0)
-                goto Fail_1;
-        }
-        else if (PyList_SetItem(result, i, value) < 0)
-            goto Fail_1;
-    }
-
-    if (i < len && PyList_SetSlice(result, i, len, NULL) < 0)
-        goto Fail_1;
-
-    goto Succeed;
-
-Fail_1:
-    Py_DECREF(result);
-Fail_2:
-    result = NULL;
-Succeed:
-    assert(seqs);
-    for (i = 0; i < n; ++i)
-        Py_XDECREF(seqs[i].it);
-    PyMem_DEL(seqs);
-    return result;
-}
-
-PyDoc_STRVAR(map_doc,
-"map(function, sequence[, sequence, ...]) -> list\n\
-\n\
-Return a list of the results of applying the function to the items of\n\
-the argument sequence(s).  If more than one sequence is given, the\n\
-function is called with an argument list consisting of the corresponding\n\
-item of each sequence, substituting None for missing values when not all\n\
-sequences have the same length.  If the function is None, return a list of\n\
-the items of the sequence (or a list of tuples if more than one sequence).");
-
-
-static PyObject *
-builtin_next(PyObject *self, PyObject *args)
-{
-    PyObject *it, *res;
-    PyObject *def = NULL;
-
-    if (!PyArg_UnpackTuple(args, "next", 1, 2, &it, &def))
-        return NULL;
-    if (!PyIter_Check(it)) {
-        PyErr_Format(PyExc_TypeError,
-            "%.200s object is not an iterator",
-            it->ob_type->tp_name);
-        return NULL;
-    }
-
-    res = (*it->ob_type->tp_iternext)(it);
-    if (res != NULL) {
-        return res;
-    } else if (def != NULL) {
-        if (PyErr_Occurred()) {
-            if (!PyErr_ExceptionMatches(PyExc_StopIteration))
-                return NULL;
-            PyErr_Clear();
-        }
-        Py_INCREF(def);
-        return def;
-    } else if (PyErr_Occurred()) {
-        return NULL;
-    } else {
-        PyErr_SetNone(PyExc_StopIteration);
-        return NULL;
-    }
-}
-
-PyDoc_STRVAR(next_doc,
-"next(iterator[, default])\n\
-\n\
-Return the next item from the iterator. If default is given and the iterator\n\
-is exhausted, it is returned instead of raising StopIteration.");
-
-
-static PyObject *
-builtin_setattr(PyObject *self, PyObject *args)
-{
-    PyObject *v;
-    PyObject *name;
-    PyObject *value;
-
-    if (!PyArg_UnpackTuple(args, "setattr", 3, 3, &v, &name, &value))
-        return NULL;
-    if (PyObject_SetAttr(v, name, value) != 0)
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(setattr_doc,
-"setattr(object, name, value)\n\
-\n\
-Set a named attribute on an object; setattr(x, 'y', v) is equivalent to\n\
-``x.y = v''.");
-
-
-static PyObject *
-builtin_delattr(PyObject *self, PyObject *args)
-{
-    PyObject *v;
-    PyObject *name;
-
-    if (!PyArg_UnpackTuple(args, "delattr", 2, 2, &v, &name))
-        return NULL;
-    if (PyObject_SetAttr(v, name, (PyObject *)NULL) != 0)
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(delattr_doc,
-"delattr(object, name)\n\
-\n\
-Delete a named attribute on an object; delattr(x, 'y') is equivalent to\n\
-``del x.y''.");
-
-
-static PyObject *
-builtin_hash(PyObject *self, PyObject *v)
-{
-    long x;
-
-    x = PyObject_Hash(v);
-    if (x == -1)
-        return NULL;
-    return PyInt_FromLong(x);
-}
-
-PyDoc_STRVAR(hash_doc,
-"hash(object) -> integer\n\
-\n\
-Return a hash value for the object.  Two objects with the same value have\n\
-the same hash value.  The reverse is not necessarily true, but likely.");
-
-
-static PyObject *
-builtin_hex(PyObject *self, PyObject *v)
-{
-    PyNumberMethods *nb;
-    PyObject *res;
-
-    if ((nb = v->ob_type->tp_as_number) == NULL ||
-        nb->nb_hex == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                   "hex() argument can't be converted to hex");
-        return NULL;
-    }
-    res = (*nb->nb_hex)(v);
-    if (res && !PyString_Check(res)) {
-        PyErr_Format(PyExc_TypeError,
-                     "__hex__ returned non-string (type %.200s)",
-                     res->ob_type->tp_name);
-        Py_DECREF(res);
-        return NULL;
-    }
-    return res;
-}
-
-PyDoc_STRVAR(hex_doc,
-"hex(number) -> string\n\
-\n\
-Return the hexadecimal representation of an integer or long integer.");
-
-
-static PyObject *builtin_raw_input(PyObject *, PyObject *);
-
-static PyObject *
-builtin_input(PyObject *self, PyObject *args)
-{
-    PyObject *line;
-    char *str;
-    PyObject *res;
-    PyObject *globals, *locals;
-    PyCompilerFlags cf;
-
-    line = builtin_raw_input(self, args);
-    if (line == NULL)
-        return line;
-    if (!PyArg_Parse(line, "s;embedded '\\0' in input line", &str))
-        return NULL;
-    while (*str == ' ' || *str == '\t')
-                    str++;
-    globals = PyEval_GetGlobals();
-    locals = PyEval_GetLocals();
-    if (PyDict_GetItemString(globals, "__builtins__") == NULL) {
-        if (PyDict_SetItemString(globals, "__builtins__",
-                                 PyEval_GetBuiltins()) != 0)
-            return NULL;
-    }
-    cf.cf_flags = 0;
-    PyEval_MergeCompilerFlags(&cf);
-    res = PyRun_StringFlags(str, Py_eval_input, globals, locals, &cf);
-    Py_DECREF(line);
-    return res;
-}
-
-PyDoc_STRVAR(input_doc,
-"input([prompt]) -> value\n\
-\n\
-Equivalent to eval(raw_input(prompt)).");
-
-
-static PyObject *
-builtin_intern(PyObject *self, PyObject *args)
-{
-    PyObject *s;
-    if (!PyArg_ParseTuple(args, "S:intern", &s))
-        return NULL;
-    if (!PyString_CheckExact(s)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "can't intern subclass of string");
-        return NULL;
-    }
-    Py_INCREF(s);
-    PyString_InternInPlace(&s);
-    return s;
-}
-
-PyDoc_STRVAR(intern_doc,
-"intern(string) -> string\n\
-\n\
-``Intern'' the given string.  This enters the string in the (global)\n\
-table of interned strings whose purpose is to speed up dictionary lookups.\n\
-Return the string itself or the previously interned string object with the\n\
-same value.");
-
-
-static PyObject *
-builtin_iter(PyObject *self, PyObject *args)
-{
-    PyObject *v, *w = NULL;
-
-    if (!PyArg_UnpackTuple(args, "iter", 1, 2, &v, &w))
-        return NULL;
-    if (w == NULL)
-        return PyObject_GetIter(v);
-    if (!PyCallable_Check(v)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "iter(v, w): v must be callable");
-        return NULL;
-    }
-    return PyCallIter_New(v, w);
-}
-
-PyDoc_STRVAR(iter_doc,
-"iter(collection) -> iterator\n\
-iter(callable, sentinel) -> iterator\n\
-\n\
-Get an iterator from an object.  In the first form, the argument must\n\
-supply its own iterator, or be a sequence.\n\
-In the second form, the callable is called until it returns the sentinel.");
-
-
-static PyObject *
-builtin_len(PyObject *self, PyObject *v)
-{
-    Py_ssize_t res;
-
-    res = PyObject_Size(v);
-    if (res < 0 && PyErr_Occurred())
-        return NULL;
-    return PyInt_FromSsize_t(res);
-}
-
-PyDoc_STRVAR(len_doc,
-"len(object) -> integer\n\
-\n\
-Return the number of items of a sequence or mapping.");
-
-
-static PyObject *
-builtin_locals(PyObject *self)
-{
-    PyObject *d;
-
-    d = PyEval_GetLocals();
-    Py_XINCREF(d);
-    return d;
-}
-
-PyDoc_STRVAR(locals_doc,
-"locals() -> dictionary\n\
-\n\
-Update and return a dictionary containing the current scope's local variables.");
-
-
-static PyObject *
-min_max(PyObject *args, PyObject *kwds, int op)
-{
-    PyObject *v, *it, *item, *val, *maxitem, *maxval, *keyfunc=NULL;
-    const char *name = op == Py_LT ? "min" : "max";
-
-    if (PyTuple_Size(args) > 1)
-        v = args;
-    else if (!PyArg_UnpackTuple(args, (char *)name, 1, 1, &v))
-        return NULL;
-
-    if (kwds != NULL && PyDict_Check(kwds) && PyDict_Size(kwds)) {
-        keyfunc = PyDict_GetItemString(kwds, "key");
-        if (PyDict_Size(kwds)!=1  ||  keyfunc == NULL) {
-            PyErr_Format(PyExc_TypeError,
-                "%s() got an unexpected keyword argument", name);
-            return NULL;
-        }
-        Py_INCREF(keyfunc);
-    }
-
-    it = PyObject_GetIter(v);
-    if (it == NULL) {
-        Py_XDECREF(keyfunc);
-        return NULL;
-    }
-
-    maxitem = NULL; /* the result */
-    maxval = NULL;  /* the value associated with the result */
-    while (( item = PyIter_Next(it) )) {
-        /* get the value from the key function */
-        if (keyfunc != NULL) {
-            val = PyObject_CallFunctionObjArgs(keyfunc, item, NULL);
-            if (val == NULL)
-                goto Fail_it_item;
-        }
-        /* no key function; the value is the item */
-        else {
-            val = item;
-            Py_INCREF(val);
-        }
-
-        /* maximum value and item are unset; set them */
-        if (maxval == NULL) {
-            maxitem = item;
-            maxval = val;
-        }
-        /* maximum value and item are set; update them as necessary */
-        else {
-            int cmp = PyObject_RichCompareBool(val, maxval, op);
-            if (cmp < 0)
-                goto Fail_it_item_and_val;
-            else if (cmp > 0) {
-                Py_DECREF(maxval);
-                Py_DECREF(maxitem);
-                maxval = val;
-                maxitem = item;
-            }
-            else {
-                Py_DECREF(item);
-                Py_DECREF(val);
-            }
-        }
-    }
-    if (PyErr_Occurred())
-        goto Fail_it;
-    if (maxval == NULL) {
-        PyErr_Format(PyExc_ValueError,
-                     "%s() arg is an empty sequence", name);
-        assert(maxitem == NULL);
-    }
-    else
-        Py_DECREF(maxval);
-    Py_DECREF(it);
-    Py_XDECREF(keyfunc);
-    return maxitem;
-
-Fail_it_item_and_val:
-    Py_DECREF(val);
-Fail_it_item:
-    Py_DECREF(item);
-Fail_it:
-    Py_XDECREF(maxval);
-    Py_XDECREF(maxitem);
-    Py_DECREF(it);
-    Py_XDECREF(keyfunc);
-    return NULL;
-}
-
-static PyObject *
-builtin_min(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    return min_max(args, kwds, Py_LT);
-}
-
-PyDoc_STRVAR(min_doc,
-"min(iterable[, key=func]) -> value\n\
-min(a, b, c, ...[, key=func]) -> value\n\
-\n\
-With a single iterable argument, return its smallest item.\n\
-With two or more arguments, return the smallest argument.");
-
-
-static PyObject *
-builtin_max(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    return min_max(args, kwds, Py_GT);
-}
-
-PyDoc_STRVAR(max_doc,
-"max(iterable[, key=func]) -> value\n\
-max(a, b, c, ...[, key=func]) -> value\n\
-\n\
-With a single iterable argument, return its largest item.\n\
-With two or more arguments, return the largest argument.");
-
-
-static PyObject *
-builtin_oct(PyObject *self, PyObject *v)
-{
-    PyNumberMethods *nb;
-    PyObject *res;
-
-    if (v == NULL || (nb = v->ob_type->tp_as_number) == NULL ||
-        nb->nb_oct == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-                   "oct() argument can't be converted to oct");
-        return NULL;
-    }
-    res = (*nb->nb_oct)(v);
-    if (res && !PyString_Check(res)) {
-        PyErr_Format(PyExc_TypeError,
-                     "__oct__ returned non-string (type %.200s)",
-                     res->ob_type->tp_name);
-        Py_DECREF(res);
-        return NULL;
-    }
-    return res;
-}
-
-PyDoc_STRVAR(oct_doc,
-"oct(number) -> string\n\
-\n\
-Return the octal representation of an integer or long integer.");
-
-
-static PyObject *
-builtin_open(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    return PyObject_Call((PyObject*)&PyFile_Type, args, kwds);
-}
-
-PyDoc_STRVAR(open_doc,
-"open(name[, mode[, buffering]]) -> file object\n\
-\n\
-Open a file using the file() type, returns a file object.  This is the\n\
-preferred way to open a file.  See file.__doc__ for further information.");
-
-
-static PyObject *
-builtin_ord(PyObject *self, PyObject* obj)
-{
-    long ord;
-    Py_ssize_t size;
-
-    if (PyString_Check(obj)) {
-        size = PyString_GET_SIZE(obj);
-        if (size == 1) {
-            ord = (long)((unsigned char)*PyString_AS_STRING(obj));
-            return PyInt_FromLong(ord);
-        }
-    } else if (PyByteArray_Check(obj)) {
-        size = PyByteArray_GET_SIZE(obj);
-        if (size == 1) {
-            ord = (long)((unsigned char)*PyByteArray_AS_STRING(obj));
-            return PyInt_FromLong(ord);
-        }
-
-#ifdef Py_USING_UNICODE
-    } else if (PyUnicode_Check(obj)) {
-        size = PyUnicode_GET_SIZE(obj);
-        if (size == 1) {
-            ord = (long)*PyUnicode_AS_UNICODE(obj);
-            return PyInt_FromLong(ord);
-        }
-#endif
-    } else {
-        PyErr_Format(PyExc_TypeError,
-                     "ord() expected string of length 1, but " \
-                     "%.200s found", obj->ob_type->tp_name);
-        return NULL;
-    }
-
-    PyErr_Format(PyExc_TypeError,
-                 "ord() expected a character, "
-                 "but string of length %zd found",
-                 size);
-    return NULL;
-}
-
-PyDoc_STRVAR(ord_doc,
-"ord(c) -> integer\n\
-\n\
-Return the integer ordinal of a one-character string.");
-
-
-static PyObject *
-builtin_pow(PyObject *self, PyObject *args)
-{
-    PyObject *v, *w, *z = Py_None;
-
-    if (!PyArg_UnpackTuple(args, "pow", 2, 3, &v, &w, &z))
-        return NULL;
-    return PyNumber_Power(v, w, z);
-}
-
-PyDoc_STRVAR(pow_doc,
-"pow(x, y[, z]) -> number\n\
-\n\
-With two arguments, equivalent to x**y.  With three arguments,\n\
-equivalent to (x**y) % z, but may be more efficient (e.g. for longs).");
-
-
-static PyObject *
-builtin_print(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    static char *kwlist[] = {"sep", "end", "file", 0};
-    static PyObject *dummy_args = NULL;
-    static PyObject *unicode_newline = NULL, *unicode_space = NULL;
-    static PyObject *str_newline = NULL, *str_space = NULL;
-    PyObject *newline, *space;
-    PyObject *sep = NULL, *end = NULL, *file = NULL;
-    int i, err, use_unicode = 0;
-
-    if (dummy_args == NULL) {
-        if (!(dummy_args = PyTuple_New(0)))
-            return NULL;
-    }
-    if (str_newline == NULL) {
-        str_newline = PyString_FromString("\n");
-        if (str_newline == NULL)
-            return NULL;
-        str_space = PyString_FromString(" ");
-        if (str_space == NULL) {
-            Py_CLEAR(str_newline);
-            return NULL;
-        }
-        unicode_newline = PyUnicode_FromString("\n");
-        if (unicode_newline == NULL) {
-            Py_CLEAR(str_newline);
-            Py_CLEAR(str_space);
-            return NULL;
-        }
-        unicode_space = PyUnicode_FromString(" ");
-        if (unicode_space == NULL) {
-            Py_CLEAR(str_newline);
-            Py_CLEAR(str_space);
-            Py_CLEAR(unicode_space);
-            return NULL;
-        }
-    }
-    if (!PyArg_ParseTupleAndKeywords(dummy_args, kwds, "|OOO:print",
-                                     kwlist, &sep, &end, &file))
-        return NULL;
-    if (file == NULL || file == Py_None) {
-        file = PySys_GetObject("stdout");
-        /* sys.stdout may be None when FILE* stdout isn't connected */
-        if (file == Py_None)
-            Py_RETURN_NONE;
-    }
-    if (sep == Py_None) {
-        sep = NULL;
-    }
-    else if (sep) {
-        if (PyUnicode_Check(sep)) {
-            use_unicode = 1;
-        }
-        else if (!PyString_Check(sep)) {
-            PyErr_Format(PyExc_TypeError,
-                         "sep must be None, str or unicode, not %.200s",
-                         sep->ob_type->tp_name);
-            return NULL;
-        }
-    }
-    if (end == Py_None)
-        end = NULL;
-    else if (end) {
-        if (PyUnicode_Check(end)) {
-            use_unicode = 1;
-        }
-        else if (!PyString_Check(end)) {
-            PyErr_Format(PyExc_TypeError,
-                         "end must be None, str or unicode, not %.200s",
-                         end->ob_type->tp_name);
-            return NULL;
-        }
-    }
-
-    if (!use_unicode) {
-        for (i = 0; i < PyTuple_Size(args); i++) {
-            if (PyUnicode_Check(PyTuple_GET_ITEM(args, i))) {
-                use_unicode = 1;
-                break;
-            }
-        }
-    }
-    if (use_unicode) {
-        newline = unicode_newline;
-        space = unicode_space;
-    }
-    else {
-        newline = str_newline;
-        space = str_space;
-    }
-
-    for (i = 0; i < PyTuple_Size(args); i++) {
-        if (i > 0) {
-            if (sep == NULL)
-                err = PyFile_WriteObject(space, file,
-                                         Py_PRINT_RAW);
-            else
-                err = PyFile_WriteObject(sep, file,
-                                         Py_PRINT_RAW);
-            if (err)
-                return NULL;
-        }
-        err = PyFile_WriteObject(PyTuple_GetItem(args, i), file,
-                                 Py_PRINT_RAW);
-        if (err)
-            return NULL;
-    }
-
-    if (end == NULL)
-        err = PyFile_WriteObject(newline, file, Py_PRINT_RAW);
-    else
-        err = PyFile_WriteObject(end, file, Py_PRINT_RAW);
-    if (err)
-        return NULL;
-
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(print_doc,
-"print(value, ..., sep=' ', end='\\n', file=sys.stdout)\n\
-\n\
-Prints the values to a stream, or to sys.stdout by default.\n\
-Optional keyword arguments:\n\
-file: a file-like object (stream); defaults to the current sys.stdout.\n\
-sep:  string inserted between values, default a space.\n\
-end:  string appended after the last value, default a newline.");
-
-
-/* Return number of items in range (lo, hi, step), when arguments are
- * PyInt or PyLong objects.  step > 0 required.  Return a value < 0 if
- * & only if the true value is too large to fit in a signed long.
- * Arguments MUST return 1 with either PyInt_Check() or
- * PyLong_Check().  Return -1 when there is an error.
- */
-static long
-get_len_of_range_longs(PyObject *lo, PyObject *hi, PyObject *step)
-{
-    /* -------------------------------------------------------------
-    Algorithm is equal to that of get_len_of_range(), but it operates
-    on PyObjects (which are assumed to be PyLong or PyInt objects).
-    ---------------------------------------------------------------*/
-    long n;
-    PyObject *diff = NULL;
-    PyObject *one = NULL;
-    PyObject *tmp1 = NULL, *tmp2 = NULL, *tmp3 = NULL;
-        /* holds sub-expression evaluations */
-
-    /* if (lo >= hi), return length of 0. */
-    if (PyObject_Compare(lo, hi) >= 0)
-        return 0;
-
-    if ((one = PyLong_FromLong(1L)) == NULL)
-        goto Fail;
-
-    if ((tmp1 = PyNumber_Subtract(hi, lo)) == NULL)
-        goto Fail;
-
-    if ((diff = PyNumber_Subtract(tmp1, one)) == NULL)
-        goto Fail;
-
-    if ((tmp2 = PyNumber_FloorDivide(diff, step)) == NULL)
-        goto Fail;
-
-    if ((tmp3 = PyNumber_Add(tmp2, one)) == NULL)
-        goto Fail;
-
-    n = PyLong_AsLong(tmp3);
-    if (PyErr_Occurred()) {  /* Check for Overflow */
-        PyErr_Clear();
-        goto Fail;
-    }
-
-    Py_DECREF(tmp3);
-    Py_DECREF(tmp2);
-    Py_DECREF(diff);
-    Py_DECREF(tmp1);
-    Py_DECREF(one);
-    return n;
-
-  Fail:
-    Py_XDECREF(tmp3);
-    Py_XDECREF(tmp2);
-    Py_XDECREF(diff);
-    Py_XDECREF(tmp1);
-    Py_XDECREF(one);
-    return -1;
-}
-
-/* Helper function for handle_range_longs.  If arg is int or long
-   object, returns it with incremented reference count.  If arg is
-   float, raises type error. As a last resort, creates a new int by
-   calling arg type's nb_int method if it is defined.  Returns NULL
-   and sets exception on error.
-
-   Returns a new reference to an int object. */
-static PyObject *
-get_range_long_argument(PyObject *arg, const char *name)
-{
-    PyObject *v;
-    PyNumberMethods *nb;
-    if (PyInt_Check(arg) || PyLong_Check(arg)) {
-        Py_INCREF(arg);
-        return arg;
-    }
-    if (PyFloat_Check(arg) ||
-        (nb = Py_TYPE(arg)->tp_as_number) == NULL ||
-        nb->nb_int == NULL) {
-        PyErr_Format(PyExc_TypeError,
-                     "range() integer %s argument expected, got %s.",
-                     name, arg->ob_type->tp_name);
-        return NULL;
-    }
-    v = nb->nb_int(arg);
-    if (v == NULL)
-        return NULL;
-    if (PyInt_Check(v) || PyLong_Check(v))
-        return v;
-    Py_DECREF(v);
-    PyErr_SetString(PyExc_TypeError,
-                    "__int__ should return int object");
-    return NULL;
-}
-
-/* An extension of builtin_range() that handles the case when PyLong
- * arguments are given. */
-static PyObject *
-handle_range_longs(PyObject *self, PyObject *args)
-{
-    PyObject *ilow = NULL;
-    PyObject *ihigh = NULL;
-    PyObject *istep = NULL;
-
-    PyObject *low = NULL;
-    PyObject *high = NULL;
-    PyObject *step = NULL;
-
-    PyObject *curnum = NULL;
-    PyObject *v = NULL;
-    long bign;
-    Py_ssize_t i, n;
-    int cmp_result;
-
-    PyObject *zero = PyLong_FromLong(0);
-
-    if (zero == NULL)
-        return NULL;
-
-    if (!PyArg_UnpackTuple(args, "range", 1, 3, &ilow, &ihigh, &istep)) {
-        Py_DECREF(zero);
-        return NULL;
-    }
-
-    /* Figure out which way we were called, supply defaults, and be
-     * sure to incref everything so that the decrefs at the end
-     * are correct. NB: ilow, ihigh and istep are borrowed references.
-     */
-    assert(ilow != NULL);
-    if (ihigh == NULL) {
-        /* only 1 arg -- it's the upper limit */
-        ihigh = ilow;
-        ilow = NULL;
-    }
-
-    /* convert ihigh if necessary */
-    assert(ihigh != NULL);
-    high = get_range_long_argument(ihigh, "end");
-    if (high == NULL)
-        goto Fail;
-
-    /* ihigh correct now; do ilow */
-    if (ilow == NULL) {
-        Py_INCREF(zero);
-        low = zero;
-    }
-    else {
-        low = get_range_long_argument(ilow, "start");
-        if (low == NULL)
-            goto Fail;
-    }
-
-    /* ilow and ihigh correct now; do istep */
-    if (istep == NULL)
-        step = PyLong_FromLong(1);
-    else
-        step = get_range_long_argument(istep, "step");
-    if (step == NULL)
-        goto Fail;
-
-    if (PyObject_Cmp(step, zero, &cmp_result) == -1)
-        goto Fail;
-
-    if (cmp_result == 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "range() step argument must not be zero");
-        goto Fail;
-    }
-
-    if (cmp_result > 0)
-        bign = get_len_of_range_longs(low, high, step);
-    else {
-        PyObject *neg_step = PyNumber_Negative(step);
-        if (neg_step == NULL)
-            goto Fail;
-        bign = get_len_of_range_longs(high, low, neg_step);
-        Py_DECREF(neg_step);
-    }
-
-    n = (Py_ssize_t)bign;
-    if (bign < 0 || (long)n != bign) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "range() result has too many items");
-        goto Fail;
-    }
-
-    v = PyList_New(n);
-    if (v == NULL)
-        goto Fail;
-
-    curnum = low;
-    Py_INCREF(curnum);
-
-    for (i = 0; i < n; i++) {
-        PyObject *w = PyNumber_Long(curnum);
-        PyObject *tmp_num;
-        if (w == NULL)
-            goto Fail;
-
-        PyList_SET_ITEM(v, i, w);
-
-        tmp_num = PyNumber_Add(curnum, step);
-        if (tmp_num == NULL)
-            goto Fail;
-
-        Py_DECREF(curnum);
-        curnum = tmp_num;
-    }
-    Py_DECREF(low);
-    Py_DECREF(high);
-    Py_DECREF(step);
-    Py_DECREF(zero);
-    Py_DECREF(curnum);
-    return v;
-
-  Fail:
-    Py_XDECREF(low);
-    Py_XDECREF(high);
-    Py_XDECREF(step);
-    Py_DECREF(zero);
-    Py_XDECREF(curnum);
-    Py_XDECREF(v);
-    return NULL;
-}
-
-/* Return number of items in range/xrange (lo, hi, step).  step > 0
- * required.  Return a value < 0 if & only if the true value is too
- * large to fit in a signed long.
- */
-static long
-get_len_of_range(long lo, long hi, long step)
-{
-    /* -------------------------------------------------------------
-    If lo >= hi, the range is empty.
-    Else if n values are in the range, the last one is
-    lo + (n-1)*step, which must be <= hi-1.  Rearranging,
-    n <= (hi - lo - 1)/step + 1, so taking the floor of the RHS gives
-    the proper value.  Since lo < hi in this case, hi-lo-1 >= 0, so
-    the RHS is non-negative and so truncation is the same as the
-    floor.  Letting M be the largest positive long, the worst case
-    for the RHS numerator is hi=M, lo=-M-1, and then
-    hi-lo-1 = M-(-M-1)-1 = 2*M.  Therefore unsigned long has enough
-    precision to compute the RHS exactly.
-    ---------------------------------------------------------------*/
-    long n = 0;
-    if (lo < hi) {
-        unsigned long uhi = (unsigned long)hi;
-        unsigned long ulo = (unsigned long)lo;
-        unsigned long diff = uhi - ulo - 1;
-        n = (long)(diff / (unsigned long)step + 1);
-    }
-    return n;
-}
-
-static PyObject *
-builtin_range(PyObject *self, PyObject *args)
-{
-    long ilow = 0, ihigh = 0, istep = 1;
-    long bign;
-    Py_ssize_t i, n;
-
-    PyObject *v;
-
-    if (PyTuple_Size(args) <= 1) {
-        if (!PyArg_ParseTuple(args,
-                        "l;range() requires 1-3 int arguments",
-                        &ihigh)) {
-            PyErr_Clear();
-            return handle_range_longs(self, args);
-        }
-    }
-    else {
-        if (!PyArg_ParseTuple(args,
-                        "ll|l;range() requires 1-3 int arguments",
-                        &ilow, &ihigh, &istep)) {
-            PyErr_Clear();
-            return handle_range_longs(self, args);
-        }
-    }
-    if (istep == 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "range() step argument must not be zero");
-        return NULL;
-    }
-    if (istep > 0)
-        bign = get_len_of_range(ilow, ihigh, istep);
-    else
-        bign = get_len_of_range(ihigh, ilow, -istep);
-    n = (Py_ssize_t)bign;
-    if (bign < 0 || (long)n != bign) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "range() result has too many items");
-        return NULL;
-    }
-    v = PyList_New(n);
-    if (v == NULL)
-        return NULL;
-    for (i = 0; i < n; i++) {
-        PyObject *w = PyInt_FromLong(ilow);
-        if (w == NULL) {
-            Py_DECREF(v);
-            return NULL;
-        }
-        PyList_SET_ITEM(v, i, w);
-        ilow += istep;
-    }
-    return v;
-}
-
-PyDoc_STRVAR(range_doc,
-"range([start,] stop[, step]) -> list of integers\n\
-\n\
-Return a list containing an arithmetic progression of integers.\n\
-range(i, j) returns [i, i+1, i+2, ..., j-1]; start (!) defaults to 0.\n\
-When step is given, it specifies the increment (or decrement).\n\
-For example, range(4) returns [0, 1, 2, 3].  The end point is omitted!\n\
-These are exactly the valid indices for a list of 4 elements.");
-
-
-static PyObject *
-builtin_raw_input(PyObject *self, PyObject *args)
-{
-    PyObject *v = NULL;
-    PyObject *fin = PySys_GetObject("stdin");
-    PyObject *fout = PySys_GetObject("stdout");
-
-    if (!PyArg_UnpackTuple(args, "[raw_]input", 0, 1, &v))
-        return NULL;
-
-    if (fin == NULL) {
-        PyErr_SetString(PyExc_RuntimeError, "[raw_]input: lost sys.stdin");
-        return NULL;
-    }
-    if (fout == NULL) {
-        PyErr_SetString(PyExc_RuntimeError, "[raw_]input: lost sys.stdout");
-        return NULL;
-    }
-    if (PyFile_SoftSpace(fout, 0)) {
-        if (PyFile_WriteString(" ", fout) != 0)
-            return NULL;
-    }
-    if (PyFile_AsFile(fin) && PyFile_AsFile(fout)
-        && isatty(fileno(PyFile_AsFile(fin)))
-        && isatty(fileno(PyFile_AsFile(fout)))) {
-        PyObject *po;
-        char *prompt;
-        char *s;
-        PyObject *result;
-        if (v != NULL) {
-            po = PyObject_Str(v);
-            if (po == NULL)
-                return NULL;
-            prompt = PyString_AsString(po);
-            if (prompt == NULL)
-                return NULL;
-        }
-        else {
-            po = NULL;
-            prompt = "";
-        }
-        s = PyOS_Readline(PyFile_AsFile(fin), PyFile_AsFile(fout),
-                          prompt);
-        Py_XDECREF(po);
-        if (s == NULL) {
-            if (!PyErr_Occurred())
-                PyErr_SetNone(PyExc_KeyboardInterrupt);
-            return NULL;
-        }
-        if (*s == '\0') {
-            PyErr_SetNone(PyExc_EOFError);
-            result = NULL;
-        }
-        else { /* strip trailing '\n' */
-            size_t len = strlen(s);
-            if (len > PY_SSIZE_T_MAX) {
-                PyErr_SetString(PyExc_OverflowError,
-                                "[raw_]input: input too long");
-                result = NULL;
-            }
-            else {
-                result = PyString_FromStringAndSize(s, len-1);
-            }
-        }
-        PyMem_FREE(s);
-        return result;
-    }
-    if (v != NULL) {
-        if (PyFile_WriteObject(v, fout, Py_PRINT_RAW) != 0)
-            return NULL;
-    }
-    return PyFile_GetLine(fin, -1);
-}
-
-PyDoc_STRVAR(raw_input_doc,
-"raw_input([prompt]) -> string\n\
-\n\
-Read a string from standard input.  The trailing newline is stripped.\n\
-If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.\n\
-On Unix, GNU readline is used if enabled.  The prompt string, if given,\n\
-is printed without a trailing newline before reading.");
-
-
-static PyObject *
-builtin_reduce(PyObject *self, PyObject *args)
-{
-    static PyObject *functools_reduce = NULL;
-
-    if (PyErr_WarnPy3k("reduce() not supported in 3.x; "
-                       "use functools.reduce()", 1) < 0)
-        return NULL;
-
-    if (functools_reduce == NULL) {
-        PyObject *functools = PyImport_ImportModule("functools");
-        if (functools == NULL)
-            return NULL;
-        functools_reduce = PyObject_GetAttrString(functools, "reduce");
-        Py_DECREF(functools);
-        if (functools_reduce == NULL)
-            return NULL;
-    }
-    return PyObject_Call(functools_reduce, args, NULL);
-}
-
-PyDoc_STRVAR(reduce_doc,
-"reduce(function, sequence[, initial]) -> value\n\
-\n\
-Apply a function of two arguments cumulatively to the items of a sequence,\n\
-from left to right, so as to reduce the sequence to a single value.\n\
-For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates\n\
-((((1+2)+3)+4)+5).  If initial is present, it is placed before the items\n\
-of the sequence in the calculation, and serves as a default when the\n\
-sequence is empty.");
-
-
-static PyObject *
-builtin_reload(PyObject *self, PyObject *v)
-{
-    if (PyErr_WarnPy3k("In 3.x, reload() is renamed to imp.reload()",
-                       1) < 0)
-        return NULL;
-
-    return PyImport_ReloadModule(v);
-}
-
-PyDoc_STRVAR(reload_doc,
-"reload(module) -> module\n\
-\n\
-Reload the module.  The module must have been successfully imported before.");
-
-
-static PyObject *
-builtin_repr(PyObject *self, PyObject *v)
-{
-    return PyObject_Repr(v);
-}
-
-PyDoc_STRVAR(repr_doc,
-"repr(object) -> string\n\
-\n\
-Return the canonical string representation of the object.\n\
-For most object types, eval(repr(object)) == object.");
-
-
-static PyObject *
-builtin_round(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    double x;
-    PyObject *o_ndigits = NULL;
-    Py_ssize_t ndigits;
-    static char *kwlist[] = {"number", "ndigits", 0};
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "d|O:round",
-        kwlist, &x, &o_ndigits))
-        return NULL;
-
-    if (o_ndigits == NULL) {
-        /* second argument defaults to 0 */
-        ndigits = 0;
-    }
-    else {
-        /* interpret 2nd argument as a Py_ssize_t; clip on overflow */
-        ndigits = PyNumber_AsSsize_t(o_ndigits, NULL);
-        if (ndigits == -1 && PyErr_Occurred())
-            return NULL;
-    }
-
-    /* nans, infinities and zeros round to themselves */
-    if (!Py_IS_FINITE(x) || x == 0.0)
-        return PyFloat_FromDouble(x);
-
-    /* Deal with extreme values for ndigits. For ndigits > NDIGITS_MAX, x
-       always rounds to itself.  For ndigits < NDIGITS_MIN, x always
-       rounds to +-0.0.  Here 0.30103 is an upper bound for log10(2). */
-#define NDIGITS_MAX ((int)((DBL_MANT_DIG-DBL_MIN_EXP) * 0.30103))
-#define NDIGITS_MIN (-(int)((DBL_MAX_EXP + 1) * 0.30103))
-    if (ndigits > NDIGITS_MAX)
-        /* return x */
-        return PyFloat_FromDouble(x);
-    else if (ndigits < NDIGITS_MIN)
-        /* return 0.0, but with sign of x */
-        return PyFloat_FromDouble(0.0*x);
-    else
-        /* finite x, and ndigits is not unreasonably large */
-        /* _Py_double_round is defined in floatobject.c */
-        return _Py_double_round(x, (int)ndigits);
-#undef NDIGITS_MAX
-#undef NDIGITS_MIN
-}
-
-PyDoc_STRVAR(round_doc,
-"round(number[, ndigits]) -> floating point number\n\
-\n\
-Round a number to a given precision in decimal digits (default 0 digits).\n\
-This always returns a floating point number.  Precision may be negative.");
-
-static PyObject *
-builtin_sorted(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *newlist, *v, *seq, *compare=NULL, *keyfunc=NULL, *newargs;
-    PyObject *callable;
-    static char *kwlist[] = {"iterable", "cmp", "key", "reverse", 0};
-    int reverse;
-
-    /* args 1-4 should match listsort in Objects/listobject.c */
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|OOi:sorted",
-        kwlist, &seq, &compare, &keyfunc, &reverse))
-        return NULL;
-
-    newlist = PySequence_List(seq);
-    if (newlist == NULL)
-        return NULL;
-
-    callable = PyObject_GetAttrString(newlist, "sort");
-    if (callable == NULL) {
-        Py_DECREF(newlist);
-        return NULL;
-    }
-
-    newargs = PyTuple_GetSlice(args, 1, 4);
-    if (newargs == NULL) {
-        Py_DECREF(newlist);
-        Py_DECREF(callable);
-        return NULL;
-    }
-
-    v = PyObject_Call(callable, newargs, kwds);
-    Py_DECREF(newargs);
-    Py_DECREF(callable);
-    if (v == NULL) {
-        Py_DECREF(newlist);
-        return NULL;
-    }
-    Py_DECREF(v);
-    return newlist;
-}
-
-PyDoc_STRVAR(sorted_doc,
-"sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list");
-
-static PyObject *
-builtin_vars(PyObject *self, PyObject *args)
-{
-    PyObject *v = NULL;
-    PyObject *d;
-
-    if (!PyArg_UnpackTuple(args, "vars", 0, 1, &v))
-        return NULL;
-    if (v == NULL) {
-        d = PyEval_GetLocals();
-        if (d == NULL) {
-            if (!PyErr_Occurred())
-                PyErr_SetString(PyExc_SystemError,
-                                "vars(): no locals!?");
-        }
-        else
-            Py_INCREF(d);
-    }
-    else {
-        d = PyObject_GetAttrString(v, "__dict__");
-        if (d == NULL) {
-            PyErr_SetString(PyExc_TypeError,
-                "vars() argument must have __dict__ attribute");
-            return NULL;
-        }
-    }
-    return d;
-}
-
-PyDoc_STRVAR(vars_doc,
-"vars([object]) -> dictionary\n\
-\n\
-Without arguments, equivalent to locals().\n\
-With an argument, equivalent to object.__dict__.");
-
-
-static PyObject*
-builtin_sum(PyObject *self, PyObject *args)
-{
-    PyObject *seq;
-    PyObject *result = NULL;
-    PyObject *temp, *item, *iter;
-
-    if (!PyArg_UnpackTuple(args, "sum", 1, 2, &seq, &result))
-        return NULL;
-
-    iter = PyObject_GetIter(seq);
-    if (iter == NULL)
-        return NULL;
-
-    if (result == NULL) {
-        result = PyInt_FromLong(0);
-        if (result == NULL) {
-            Py_DECREF(iter);
-            return NULL;
-        }
-    } else {
-        /* reject string values for 'start' parameter */
-        if (PyObject_TypeCheck(result, &PyBaseString_Type)) {
-            PyErr_SetString(PyExc_TypeError,
-                "sum() can't sum strings [use ''.join(seq) instead]");
-            Py_DECREF(iter);
-            return NULL;
-        }
-        Py_INCREF(result);
-    }
-
-#ifndef SLOW_SUM
-    /* Fast addition by keeping temporary sums in C instead of new Python objects.
-       Assumes all inputs are the same type.  If the assumption fails, default
-       to the more general routine.
-    */
-    if (PyInt_CheckExact(result)) {
-        long i_result = PyInt_AS_LONG(result);
-        Py_DECREF(result);
-        result = NULL;
-        while(result == NULL) {
-            item = PyIter_Next(iter);
-            if (item == NULL) {
-                Py_DECREF(iter);
-                if (PyErr_Occurred())
-                    return NULL;
-                return PyInt_FromLong(i_result);
-            }
-            if (PyInt_CheckExact(item)) {
-                long b = PyInt_AS_LONG(item);
-                long x = i_result + b;
-                if ((x^i_result) >= 0 || (x^b) >= 0) {
-                    i_result = x;
-                    Py_DECREF(item);
-                    continue;
-                }
-            }
-            /* Either overflowed or is not an int. Restore real objects and process normally */
-            result = PyInt_FromLong(i_result);
-            temp = PyNumber_Add(result, item);
-            Py_DECREF(result);
-            Py_DECREF(item);
-            result = temp;
-            if (result == NULL) {
-                Py_DECREF(iter);
-                return NULL;
-            }
-        }
-    }
-
-    if (PyFloat_CheckExact(result)) {
-        double f_result = PyFloat_AS_DOUBLE(result);
-        Py_DECREF(result);
-        result = NULL;
-        while(result == NULL) {
-            item = PyIter_Next(iter);
-            if (item == NULL) {
-                Py_DECREF(iter);
-                if (PyErr_Occurred())
-                    return NULL;
-                return PyFloat_FromDouble(f_result);
-            }
-            if (PyFloat_CheckExact(item)) {
-                PyFPE_START_PROTECT("add", Py_DECREF(item); Py_DECREF(iter); return 0)
-                f_result += PyFloat_AS_DOUBLE(item);
-                PyFPE_END_PROTECT(f_result)
-                Py_DECREF(item);
-                continue;
-            }
-            if (PyInt_CheckExact(item)) {
-                PyFPE_START_PROTECT("add", Py_DECREF(item); Py_DECREF(iter); return 0)
-                f_result += (double)PyInt_AS_LONG(item);
-                PyFPE_END_PROTECT(f_result)
-                Py_DECREF(item);
-                continue;
-            }
-            result = PyFloat_FromDouble(f_result);
-            temp = PyNumber_Add(result, item);
-            Py_DECREF(result);
-            Py_DECREF(item);
-            result = temp;
-            if (result == NULL) {
-                Py_DECREF(iter);
-                return NULL;
-            }
-        }
-    }
-#endif
-
-    for(;;) {
-        item = PyIter_Next(iter);
-        if (item == NULL) {
-            /* error, or end-of-sequence */
-            if (PyErr_Occurred()) {
-                Py_DECREF(result);
-                result = NULL;
-            }
-            break;
-        }
-        /* It's tempting to use PyNumber_InPlaceAdd instead of
-           PyNumber_Add here, to avoid quadratic running time
-           when doing 'sum(list_of_lists, [])'.  However, this
-           would produce a change in behaviour: a snippet like
-
-             empty = []
-             sum([[x] for x in range(10)], empty)
-
-           would change the value of empty. */
-        temp = PyNumber_Add(result, item);
-        Py_DECREF(result);
-        Py_DECREF(item);
-        result = temp;
-        if (result == NULL)
-            break;
-    }
-    Py_DECREF(iter);
-    return result;
-}
-
-PyDoc_STRVAR(sum_doc,
-"sum(sequence[, start]) -> value\n\
-\n\
-Returns the sum of a sequence of numbers (NOT strings) plus the value\n\
-of parameter 'start' (which defaults to 0).  When the sequence is\n\
-empty, returns start.");
-
-
-static PyObject *
-builtin_isinstance(PyObject *self, PyObject *args)
-{
-    PyObject *inst;
-    PyObject *cls;
-    int retval;
-
-    if (!PyArg_UnpackTuple(args, "isinstance", 2, 2, &inst, &cls))
-        return NULL;
-
-    retval = PyObject_IsInstance(inst, cls);
-    if (retval < 0)
-        return NULL;
-    return PyBool_FromLong(retval);
-}
-
-PyDoc_STRVAR(isinstance_doc,
-"isinstance(object, class-or-type-or-tuple) -> bool\n\
-\n\
-Return whether an object is an instance of a class or of a subclass thereof.\n\
-With a type as second argument, return whether that is the object's type.\n\
-The form using a tuple, isinstance(x, (A, B, ...)), is a shortcut for\n\
-isinstance(x, A) or isinstance(x, B) or ... (etc.).");
-
-
-static PyObject *
-builtin_issubclass(PyObject *self, PyObject *args)
-{
-    PyObject *derived;
-    PyObject *cls;
-    int retval;
-
-    if (!PyArg_UnpackTuple(args, "issubclass", 2, 2, &derived, &cls))
-        return NULL;
-
-    retval = PyObject_IsSubclass(derived, cls);
-    if (retval < 0)
-        return NULL;
-    return PyBool_FromLong(retval);
-}
-
-PyDoc_STRVAR(issubclass_doc,
-"issubclass(C, B) -> bool\n\
-\n\
-Return whether class C is a subclass (i.e., a derived class) of class B.\n\
-When using a tuple as the second argument issubclass(X, (A, B, ...)),\n\
-is a shortcut for issubclass(X, A) or issubclass(X, B) or ... (etc.).");
-
-
-static PyObject*
-builtin_zip(PyObject *self, PyObject *args)
-{
-    PyObject *ret;
-    const Py_ssize_t itemsize = PySequence_Length(args);
-    Py_ssize_t i;
-    PyObject *itlist;  /* tuple of iterators */
-    Py_ssize_t len;        /* guess at result length */
-
-    if (itemsize == 0)
-        return PyList_New(0);
-
-    /* args must be a tuple */
-    assert(PyTuple_Check(args));
-
-    /* Guess at result length:  the shortest of the input lengths.
-       If some argument refuses to say, we refuse to guess too, lest
-       an argument like xrange(sys.maxint) lead us astray.*/
-    len = -1;           /* unknown */
-    for (i = 0; i < itemsize; ++i) {
-        PyObject *item = PyTuple_GET_ITEM(args, i);
-        Py_ssize_t thislen = _PyObject_LengthHint(item, -2);
-        if (thislen < 0) {
-            if (thislen == -1)
-                return NULL;
-            len = -1;
-            break;
-        }
-        else if (len < 0 || thislen < len)
-            len = thislen;
-    }
-
-    /* allocate result list */
-    if (len < 0)
-        len = 10;               /* arbitrary */
-    if ((ret = PyList_New(len)) == NULL)
-        return NULL;
-
-    /* obtain iterators */
-    itlist = PyTuple_New(itemsize);
-    if (itlist == NULL)
-        goto Fail_ret;
-    for (i = 0; i < itemsize; ++i) {
-        PyObject *item = PyTuple_GET_ITEM(args, i);
-        PyObject *it = PyObject_GetIter(item);
-        if (it == NULL) {
-            if (PyErr_ExceptionMatches(PyExc_TypeError))
-                PyErr_Format(PyExc_TypeError,
-                    "zip argument #%zd must support iteration",
-                    i+1);
-            goto Fail_ret_itlist;
-        }
-        PyTuple_SET_ITEM(itlist, i, it);
-    }
-
-    /* build result into ret list */
-    for (i = 0; ; ++i) {
-        int j;
-        PyObject *next = PyTuple_New(itemsize);
-        if (!next)
-            goto Fail_ret_itlist;
-
-        for (j = 0; j < itemsize; j++) {
-            PyObject *it = PyTuple_GET_ITEM(itlist, j);
-            PyObject *item = PyIter_Next(it);
-            if (!item) {
-                if (PyErr_Occurred()) {
-                    Py_DECREF(ret);
-                    ret = NULL;
-                }
-                Py_DECREF(next);
-                Py_DECREF(itlist);
-                goto Done;
-            }
-            PyTuple_SET_ITEM(next, j, item);
-        }
-
-        if (i < len)
-            PyList_SET_ITEM(ret, i, next);
-        else {
-            int status = PyList_Append(ret, next);
-            Py_DECREF(next);
-            ++len;
-            if (status < 0)
-                goto Fail_ret_itlist;
-        }
-    }
-
-Done:
-    if (ret != NULL && i < len) {
-        /* The list is too big. */
-        if (PyList_SetSlice(ret, i, len, NULL) < 0)
-            return NULL;
-    }
-    return ret;
-
-Fail_ret_itlist:
-    Py_DECREF(itlist);
-Fail_ret:
-    Py_DECREF(ret);
-    return NULL;
-}
-
-
-PyDoc_STRVAR(zip_doc,
-"zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]\n\
-\n\
-Return a list of tuples, where each tuple contains the i-th element\n\
-from each of the argument sequences.  The returned list is truncated\n\
-in length to the length of the shortest argument sequence.");
-
-
-static PyMethodDef builtin_methods[] = {
-    {"__import__",      (PyCFunction)builtin___import__, METH_VARARGS | METH_KEYWORDS, import_doc},
-    {"abs",             builtin_abs,        METH_O, abs_doc},
-    {"all",             builtin_all,        METH_O, all_doc},
-    {"any",             builtin_any,        METH_O, any_doc},
-    {"apply",           builtin_apply,      METH_VARARGS, apply_doc},
-    {"bin",             builtin_bin,        METH_O, bin_doc},
-    {"callable",        builtin_callable,   METH_O, callable_doc},
-    {"chr",             builtin_chr,        METH_VARARGS, chr_doc},
-    {"cmp",             builtin_cmp,        METH_VARARGS, cmp_doc},
-    {"coerce",          builtin_coerce,     METH_VARARGS, coerce_doc},
-    {"compile",         (PyCFunction)builtin_compile,    METH_VARARGS | METH_KEYWORDS, compile_doc},
-    {"delattr",         builtin_delattr,    METH_VARARGS, delattr_doc},
-    {"dir",             builtin_dir,        METH_VARARGS, dir_doc},
-    {"divmod",          builtin_divmod,     METH_VARARGS, divmod_doc},
-    {"eval",            builtin_eval,       METH_VARARGS, eval_doc},
-    {"execfile",        builtin_execfile,   METH_VARARGS, execfile_doc},
-    {"filter",          builtin_filter,     METH_VARARGS, filter_doc},
-    {"format",          builtin_format,     METH_VARARGS, format_doc},
-    {"getattr",         builtin_getattr,    METH_VARARGS, getattr_doc},
-    {"globals",         (PyCFunction)builtin_globals,    METH_NOARGS, globals_doc},
-    {"hasattr",         builtin_hasattr,    METH_VARARGS, hasattr_doc},
-    {"hash",            builtin_hash,       METH_O, hash_doc},
-    {"hex",             builtin_hex,        METH_O, hex_doc},
-    {"id",              builtin_id,         METH_O, id_doc},
-    {"input",           builtin_input,      METH_VARARGS, input_doc},
-    {"intern",          builtin_intern,     METH_VARARGS, intern_doc},
-    {"isinstance",  builtin_isinstance, METH_VARARGS, isinstance_doc},
-    {"issubclass",  builtin_issubclass, METH_VARARGS, issubclass_doc},
-    {"iter",            builtin_iter,       METH_VARARGS, iter_doc},
-    {"len",             builtin_len,        METH_O, len_doc},
-    {"locals",          (PyCFunction)builtin_locals,     METH_NOARGS, locals_doc},
-    {"map",             builtin_map,        METH_VARARGS, map_doc},
-    {"max",             (PyCFunction)builtin_max,        METH_VARARGS | METH_KEYWORDS, max_doc},
-    {"min",             (PyCFunction)builtin_min,        METH_VARARGS | METH_KEYWORDS, min_doc},
-    {"next",            builtin_next,       METH_VARARGS, next_doc},
-    {"oct",             builtin_oct,        METH_O, oct_doc},
-    {"open",            (PyCFunction)builtin_open,       METH_VARARGS | METH_KEYWORDS, open_doc},
-    {"ord",             builtin_ord,        METH_O, ord_doc},
-    {"pow",             builtin_pow,        METH_VARARGS, pow_doc},
-    {"print",           (PyCFunction)builtin_print,      METH_VARARGS | METH_KEYWORDS, print_doc},
-    {"range",           builtin_range,      METH_VARARGS, range_doc},
-    {"raw_input",       builtin_raw_input,  METH_VARARGS, raw_input_doc},
-    {"reduce",          builtin_reduce,     METH_VARARGS, reduce_doc},
-    {"reload",          builtin_reload,     METH_O, reload_doc},
-    {"repr",            builtin_repr,       METH_O, repr_doc},
-    {"round",           (PyCFunction)builtin_round,      METH_VARARGS | METH_KEYWORDS, round_doc},
-    {"setattr",         builtin_setattr,    METH_VARARGS, setattr_doc},
-    {"sorted",          (PyCFunction)builtin_sorted,     METH_VARARGS | METH_KEYWORDS, sorted_doc},
-    {"sum",             builtin_sum,        METH_VARARGS, sum_doc},
-#ifdef Py_USING_UNICODE
-    {"unichr",          builtin_unichr,     METH_VARARGS, unichr_doc},
-#endif
-    {"vars",            builtin_vars,       METH_VARARGS, vars_doc},
-    {"zip",         builtin_zip,        METH_VARARGS, zip_doc},
-    {NULL,              NULL},
-};
-
-PyDoc_STRVAR(builtin_doc,
-"Built-in functions, exceptions, and other objects.\n\
-\n\
-Noteworthy: None is the `nil' object; Ellipsis represents `...' in slices.");
-
-PyObject *
-_PyBuiltin_Init(void)
-{
-    PyObject *mod, *dict, *debug;
-    mod = Py_InitModule4("__builtin__", builtin_methods,
-                         builtin_doc, (PyObject *)NULL,
-                         PYTHON_API_VERSION);
-    if (mod == NULL)
-        return NULL;
-    dict = PyModule_GetDict(mod);
-
-#ifdef Py_TRACE_REFS
-    /* __builtin__ exposes a number of statically allocated objects
-     * that, before this code was added in 2.3, never showed up in
-     * the list of "all objects" maintained by Py_TRACE_REFS.  As a
-     * result, programs leaking references to None and False (etc)
-     * couldn't be diagnosed by examining sys.getobjects(0).
-     */
-#define ADD_TO_ALL(OBJECT) _Py_AddToAllObjects((PyObject *)(OBJECT), 0)
-#else
-#define ADD_TO_ALL(OBJECT) (void)0
-#endif
-
-#define SETBUILTIN(NAME, OBJECT) \
-    if (PyDict_SetItemString(dict, NAME, (PyObject *)OBJECT) < 0)       \
-        return NULL;                                                    \
-    ADD_TO_ALL(OBJECT)
-
-    SETBUILTIN("None",                  Py_None);
-    SETBUILTIN("Ellipsis",              Py_Ellipsis);
-    SETBUILTIN("NotImplemented",        Py_NotImplemented);
-    SETBUILTIN("False",                 Py_False);
-    SETBUILTIN("True",                  Py_True);
-    SETBUILTIN("basestring",            &PyBaseString_Type);
-    SETBUILTIN("bool",                  &PyBool_Type);
-    SETBUILTIN("memoryview",        &PyMemoryView_Type);
-    SETBUILTIN("bytearray",             &PyByteArray_Type);
-    SETBUILTIN("bytes",                 &PyString_Type);
-    SETBUILTIN("buffer",                &PyBuffer_Type);
-    SETBUILTIN("classmethod",           &PyClassMethod_Type);
-#ifndef WITHOUT_COMPLEX
-    SETBUILTIN("complex",               &PyComplex_Type);
-#endif
-    SETBUILTIN("dict",                  &PyDict_Type);
-    SETBUILTIN("enumerate",             &PyEnum_Type);
-    SETBUILTIN("file",                  &PyFile_Type);
-    SETBUILTIN("float",                 &PyFloat_Type);
-    SETBUILTIN("frozenset",             &PyFrozenSet_Type);
-    SETBUILTIN("property",              &PyProperty_Type);
-    SETBUILTIN("int",                   &PyInt_Type);
-    SETBUILTIN("list",                  &PyList_Type);
-    SETBUILTIN("long",                  &PyLong_Type);
-    SETBUILTIN("object",                &PyBaseObject_Type);
-    SETBUILTIN("reversed",              &PyReversed_Type);
-    SETBUILTIN("set",                   &PySet_Type);
-    SETBUILTIN("slice",                 &PySlice_Type);
-    SETBUILTIN("staticmethod",          &PyStaticMethod_Type);
-    SETBUILTIN("str",                   &PyString_Type);
-    SETBUILTIN("super",                 &PySuper_Type);
-    SETBUILTIN("tuple",                 &PyTuple_Type);
-    SETBUILTIN("type",                  &PyType_Type);
-    SETBUILTIN("xrange",                &PyRange_Type);
-#ifdef Py_USING_UNICODE
-    SETBUILTIN("unicode",               &PyUnicode_Type);
-#endif
-    debug = PyBool_FromLong(Py_OptimizeFlag == 0);
-    if (PyDict_SetItemString(dict, "__debug__", debug) < 0) {
-        Py_XDECREF(debug);
-        return NULL;
-    }
-    Py_XDECREF(debug);
-
-    return mod;
-#undef ADD_TO_ALL
-#undef SETBUILTIN
-}
-
-/* Helper for filter(): filter a tuple through a function */
-
-static PyObject *
-filtertuple(PyObject *func, PyObject *tuple)
-{
-    PyObject *result;
-    Py_ssize_t i, j;
-    Py_ssize_t len = PyTuple_Size(tuple);
-
-    if (len == 0) {
-        if (PyTuple_CheckExact(tuple))
-            Py_INCREF(tuple);
-        else
-            tuple = PyTuple_New(0);
-        return tuple;
-    }
-
-    if ((result = PyTuple_New(len)) == NULL)
-        return NULL;
-
-    for (i = j = 0; i < len; ++i) {
-        PyObject *item, *good;
-        int ok;
-
-        if (tuple->ob_type->tp_as_sequence &&
-            tuple->ob_type->tp_as_sequence->sq_item) {
-            item = tuple->ob_type->tp_as_sequence->sq_item(tuple, i);
-            if (item == NULL)
-                goto Fail_1;
-        } else {
-            PyErr_SetString(PyExc_TypeError, "filter(): unsubscriptable tuple");
-            goto Fail_1;
-        }
-        if (func == Py_None) {
-            Py_INCREF(item);
-            good = item;
-        }
-        else {
-            PyObject *arg = PyTuple_Pack(1, item);
-            if (arg == NULL) {
-                Py_DECREF(item);
-                goto Fail_1;
-            }
-            good = PyEval_CallObject(func, arg);
-            Py_DECREF(arg);
-            if (good == NULL) {
-                Py_DECREF(item);
-                goto Fail_1;
-            }
-        }
-        ok = PyObject_IsTrue(good);
-        Py_DECREF(good);
-        if (ok) {
-            if (PyTuple_SetItem(result, j++, item) < 0)
-                goto Fail_1;
-        }
-        else
-            Py_DECREF(item);
-    }
-
-    if (_PyTuple_Resize(&result, j) < 0)
-        return NULL;
-
-    return result;
-
-Fail_1:
-    Py_DECREF(result);
-    return NULL;
-}
-
-
-/* Helper for filter(): filter a string through a function */
-
-static PyObject *
-filterstring(PyObject *func, PyObject *strobj)
-{
-    PyObject *result;
-    Py_ssize_t i, j;
-    Py_ssize_t len = PyString_Size(strobj);
-    Py_ssize_t outlen = len;
-
-    if (func == Py_None) {
-        /* If it's a real string we can return the original,
-         * as no character is ever false and __getitem__
-         * does return this character. If it's a subclass
-         * we must go through the __getitem__ loop */
-        if (PyString_CheckExact(strobj)) {
-            Py_INCREF(strobj);
-            return strobj;
-        }
-    }
-    if ((result = PyString_FromStringAndSize(NULL, len)) == NULL)
-        return NULL;
-
-    for (i = j = 0; i < len; ++i) {
-        PyObject *item;
-        int ok;
-
-        item = (*strobj->ob_type->tp_as_sequence->sq_item)(strobj, i);
-        if (item == NULL)
-            goto Fail_1;
-        if (func==Py_None) {
-            ok = 1;
-        } else {
-            PyObject *arg, *good;
-            arg = PyTuple_Pack(1, item);
-            if (arg == NULL) {
-                Py_DECREF(item);
-                goto Fail_1;
-            }
-            good = PyEval_CallObject(func, arg);
-            Py_DECREF(arg);
-            if (good == NULL) {
-                Py_DECREF(item);
-                goto Fail_1;
-            }
-            ok = PyObject_IsTrue(good);
-            Py_DECREF(good);
-        }
-        if (ok) {
-            Py_ssize_t reslen;
-            if (!PyString_Check(item)) {
-                PyErr_SetString(PyExc_TypeError, "can't filter str to str:"
-                    " __getitem__ returned different type");
-                Py_DECREF(item);
-                goto Fail_1;
-            }
-            reslen = PyString_GET_SIZE(item);
-            if (reslen == 1) {
-                PyString_AS_STRING(result)[j++] =
-                    PyString_AS_STRING(item)[0];
-            } else {
-                /* do we need more space? */
-                Py_ssize_t need = j;
-
-                /* calculate space requirements while checking for overflow */
-                if (need > PY_SSIZE_T_MAX - reslen) {
-                    Py_DECREF(item);
-                    goto Fail_1;
-                }
-
-                need += reslen;
-
-                if (need > PY_SSIZE_T_MAX - len) {
-                    Py_DECREF(item);
-                    goto Fail_1;
-                }
-
-                need += len;
-
-                if (need <= i) {
-                    Py_DECREF(item);
-                    goto Fail_1;
-                }
-
-                need = need - i - 1;
-
-                assert(need >= 0);
-                assert(outlen >= 0);
-
-                if (need > outlen) {
-                    /* overallocate, to avoid reallocations */
-                    if (outlen > PY_SSIZE_T_MAX / 2) {
-                        Py_DECREF(item);
-                        return NULL;
-                    }
-
-                    if (need<2*outlen) {
-                        need = 2*outlen;
-      }
-                                    if (_PyString_Resize(&result, need)) {
-                                            Py_DECREF(item);
-                                            return NULL;
-                                    }
-                                    outlen = need;
-                            }
-                            memcpy(
-                                    PyString_AS_STRING(result) + j,
-                                    PyString_AS_STRING(item),
-                                    reslen
-                            );
-                            j += reslen;
-                    }
-        }
-        Py_DECREF(item);
-    }
-
-    if (j < outlen)
-        _PyString_Resize(&result, j);
-
-    return result;
-
-Fail_1:
-    Py_DECREF(result);
-    return NULL;
-}
-
-#ifdef Py_USING_UNICODE
-/* Helper for filter(): filter a Unicode object through a function */
-
-static PyObject *
-filterunicode(PyObject *func, PyObject *strobj)
-{
-    PyObject *result;
-    register Py_ssize_t i, j;
-    Py_ssize_t len = PyUnicode_GetSize(strobj);
-    Py_ssize_t outlen = len;
-
-    if (func == Py_None) {
-        /* If it's a real string we can return the original,
-         * as no character is ever false and __getitem__
-         * does return this character. If it's a subclass
-         * we must go through the __getitem__ loop */
-        if (PyUnicode_CheckExact(strobj)) {
-            Py_INCREF(strobj);
-            return strobj;
-        }
-    }
-    if ((result = PyUnicode_FromUnicode(NULL, len)) == NULL)
-        return NULL;
-
-    for (i = j = 0; i < len; ++i) {
-        PyObject *item, *arg, *good;
-        int ok;
-
-        item = (*strobj->ob_type->tp_as_sequence->sq_item)(strobj, i);
-        if (item == NULL)
-            goto Fail_1;
-        if (func == Py_None) {
-            ok = 1;
-        } else {
-            arg = PyTuple_Pack(1, item);
-            if (arg == NULL) {
-                Py_DECREF(item);
-                goto Fail_1;
-            }
-            good = PyEval_CallObject(func, arg);
-            Py_DECREF(arg);
-            if (good == NULL) {
-                Py_DECREF(item);
-                goto Fail_1;
-            }
-            ok = PyObject_IsTrue(good);
-            Py_DECREF(good);
-        }
-        if (ok) {
-            Py_ssize_t reslen;
-            if (!PyUnicode_Check(item)) {
-                PyErr_SetString(PyExc_TypeError,
-                "can't filter unicode to unicode:"
-                " __getitem__ returned different type");
-                Py_DECREF(item);
-                goto Fail_1;
-            }
-            reslen = PyUnicode_GET_SIZE(item);
-            if (reslen == 1)
-                PyUnicode_AS_UNICODE(result)[j++] =
-                    PyUnicode_AS_UNICODE(item)[0];
-            else {
-                /* do we need more space? */
-                Py_ssize_t need = j + reslen + len - i - 1;
-
-                /* check that didnt overflow */
-                if ((j > PY_SSIZE_T_MAX - reslen) ||
-                    ((j + reslen) > PY_SSIZE_T_MAX - len) ||
-                        ((j + reslen + len) < i) ||
-                            ((j + reslen + len - i) <= 0)) {
-                    Py_DECREF(item);
-                    return NULL;
-                }
-
-                assert(need >= 0);
-                assert(outlen >= 0);
-
-                if (need > outlen) {
-                    /* overallocate,
-                       to avoid reallocations */
-                    if (need < 2 * outlen) {
-        if (outlen > PY_SSIZE_T_MAX / 2) {
-          Py_DECREF(item);
-          return NULL;
-                                            } else {
-                                                    need = 2 * outlen;
-                                }
-      }
-
-                                    if (PyUnicode_Resize(
-                                            &result, need) < 0) {
-                                            Py_DECREF(item);
-                                            goto Fail_1;
-                                    }
-                                    outlen = need;
-                            }
-                            memcpy(PyUnicode_AS_UNICODE(result) + j,
-                                   PyUnicode_AS_UNICODE(item),
-                                   reslen*sizeof(Py_UNICODE));
-                            j += reslen;
-                    }
-        }
-        Py_DECREF(item);
-    }
-
-    if (j < outlen)
-        PyUnicode_Resize(&result, j);
-
-    return result;
-
-Fail_1:
-    Py_DECREF(result);
-    return NULL;
-}
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/ceval.c b/AppPkg/Applications/Python/Python-2.7.2/Python/ceval.c
deleted file mode 100644
index 4a3cb62..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/ceval.c
+++ /dev/null
@@ -1,4895 +0,0 @@
-
-/* Execute compiled code */
-
-/* XXX TO DO:
-   XXX speed up searching for keywords by using a dictionary
-   XXX document it!
-   */
-
-/* enable more aggressive intra-module optimizations, where available */
-#define PY_LOCAL_AGGRESSIVE
-
-#include "Python.h"
-
-#include "code.h"
-#include "frameobject.h"
-#include "eval.h"
-#include "opcode.h"
-#include "structmember.h"
-
-#include <ctype.h>
-
-#ifndef WITH_TSC
-
-#define READ_TIMESTAMP(var)
-
-#else
-
-typedef unsigned long long uint64;
-
-/* PowerPC support.
-   "__ppc__" appears to be the preprocessor definition to detect on OS X, whereas
-   "__powerpc__" appears to be the correct one for Linux with GCC
-*/
-#if defined(__ppc__) || defined (__powerpc__)
-
-#define READ_TIMESTAMP(var) ppc_getcounter(&var)
-
-static void
-ppc_getcounter(uint64 *v)
-{
-    register unsigned long tbu, tb, tbu2;
-
-  loop:
-    asm volatile ("mftbu %0" : "=r" (tbu) );
-    asm volatile ("mftb  %0" : "=r" (tb)  );
-    asm volatile ("mftbu %0" : "=r" (tbu2));
-    if (__builtin_expect(tbu != tbu2, 0)) goto loop;
-
-    /* The slightly peculiar way of writing the next lines is
-       compiled better by GCC than any other way I tried. */
-    ((long*)(v))[0] = tbu;
-    ((long*)(v))[1] = tb;
-}
-
-#elif defined(__i386__)
-
-/* this is for linux/x86 (and probably any other GCC/x86 combo) */
-
-#define READ_TIMESTAMP(val) \
-     __asm__ __volatile__("rdtsc" : "=A" (val))
-
-#elif defined(__x86_64__)
-
-/* for gcc/x86_64, the "A" constraint in DI mode means *either* rax *or* rdx;
-   not edx:eax as it does for i386.  Since rdtsc puts its result in edx:eax
-   even in 64-bit mode, we need to use "a" and "d" for the lower and upper
-   32-bit pieces of the result. */
-
-#define READ_TIMESTAMP(val) \
-    __asm__ __volatile__("rdtsc" : \
-                         "=a" (((int*)&(val))[0]), "=d" (((int*)&(val))[1]));
-
-
-#else
-
-#error "Don't know how to implement timestamp counter for this architecture"
-
-#endif
-
-void dump_tsc(int opcode, int ticked, uint64 inst0, uint64 inst1,
-              uint64 loop0, uint64 loop1, uint64 intr0, uint64 intr1)
-{
-    uint64 intr, inst, loop;
-    PyThreadState *tstate = PyThreadState_Get();
-    if (!tstate->interp->tscdump)
-        return;
-    intr = intr1 - intr0;
-    inst = inst1 - inst0 - intr;
-    loop = loop1 - loop0 - intr;
-    fprintf(stderr, "opcode=%03d t=%d inst=%06lld loop=%06lld\n",
-            opcode, ticked, inst, loop);
-}
-
-#endif
-
-/* Turn this on if your compiler chokes on the big switch: */
-/* #define CASE_TOO_BIG 1 */
-
-#ifdef Py_DEBUG
-/* For debugging the interpreter: */
-#define LLTRACE  1      /* Low-level trace feature */
-#define CHECKEXC 1      /* Double-check exception checking */
-#endif
-
-typedef PyObject *(*callproc)(PyObject *, PyObject *, PyObject *);
-
-/* Forward declarations */
-#ifdef WITH_TSC
-static PyObject * call_function(PyObject ***, int, uint64*, uint64*);
-#else
-static PyObject * call_function(PyObject ***, int);
-#endif
-static PyObject * fast_function(PyObject *, PyObject ***, int, int, int);
-static PyObject * do_call(PyObject *, PyObject ***, int, int);
-static PyObject * ext_do_call(PyObject *, PyObject ***, int, int, int);
-static PyObject * update_keyword_args(PyObject *, int, PyObject ***,
-                                      PyObject *);
-static PyObject * update_star_args(int, int, PyObject *, PyObject ***);
-static PyObject * load_args(PyObject ***, int);
-#define CALL_FLAG_VAR 1
-#define CALL_FLAG_KW 2
-
-#ifdef LLTRACE
-static int lltrace;
-static int prtrace(PyObject *, char *);
-#endif
-static int call_trace(Py_tracefunc, PyObject *, PyFrameObject *,
-                      int, PyObject *);
-static int call_trace_protected(Py_tracefunc, PyObject *,
-                                PyFrameObject *, int, PyObject *);
-static void call_exc_trace(Py_tracefunc, PyObject *, PyFrameObject *);
-static int maybe_call_line_trace(Py_tracefunc, PyObject *,
-                                 PyFrameObject *, int *, int *, int *);
-
-static PyObject * apply_slice(PyObject *, PyObject *, PyObject *);
-static int assign_slice(PyObject *, PyObject *,
-                        PyObject *, PyObject *);
-static PyObject * cmp_outcome(int, PyObject *, PyObject *);
-static PyObject * import_from(PyObject *, PyObject *);
-static int import_all_from(PyObject *, PyObject *);
-static PyObject * build_class(PyObject *, PyObject *, PyObject *);
-static int exec_statement(PyFrameObject *,
-                          PyObject *, PyObject *, PyObject *);
-static void set_exc_info(PyThreadState *, PyObject *, PyObject *, PyObject *);
-static void reset_exc_info(PyThreadState *);
-static void format_exc_check_arg(PyObject *, char *, PyObject *);
-static PyObject * string_concatenate(PyObject *, PyObject *,
-                                     PyFrameObject *, unsigned char *);
-static PyObject * kwd_as_string(PyObject *);
-static PyObject * special_lookup(PyObject *, char *, PyObject **);
-
-#define NAME_ERROR_MSG \
-    "name '%.200s' is not defined"
-#define GLOBAL_NAME_ERROR_MSG \
-    "global name '%.200s' is not defined"
-#define UNBOUNDLOCAL_ERROR_MSG \
-    "local variable '%.200s' referenced before assignment"
-#define UNBOUNDFREE_ERROR_MSG \
-    "free variable '%.200s' referenced before assignment" \
-    " in enclosing scope"
-
-/* Dynamic execution profile */
-#ifdef DYNAMIC_EXECUTION_PROFILE
-#ifdef DXPAIRS
-static long dxpairs[257][256];
-#define dxp dxpairs[256]
-#else
-static long dxp[256];
-#endif
-#endif
-
-/* Function call profile */
-#ifdef CALL_PROFILE
-#define PCALL_NUM 11
-static int pcall[PCALL_NUM];
-
-#define PCALL_ALL 0
-#define PCALL_FUNCTION 1
-#define PCALL_FAST_FUNCTION 2
-#define PCALL_FASTER_FUNCTION 3
-#define PCALL_METHOD 4
-#define PCALL_BOUND_METHOD 5
-#define PCALL_CFUNCTION 6
-#define PCALL_TYPE 7
-#define PCALL_GENERATOR 8
-#define PCALL_OTHER 9
-#define PCALL_POP 10
-
-/* Notes about the statistics
-
-   PCALL_FAST stats
-
-   FAST_FUNCTION means no argument tuple needs to be created.
-   FASTER_FUNCTION means that the fast-path frame setup code is used.
-
-   If there is a method call where the call can be optimized by changing
-   the argument tuple and calling the function directly, it gets recorded
-   twice.
-
-   As a result, the relationship among the statistics appears to be
-   PCALL_ALL == PCALL_FUNCTION + PCALL_METHOD - PCALL_BOUND_METHOD +
-                PCALL_CFUNCTION + PCALL_TYPE + PCALL_GENERATOR + PCALL_OTHER
-   PCALL_FUNCTION > PCALL_FAST_FUNCTION > PCALL_FASTER_FUNCTION
-   PCALL_METHOD > PCALL_BOUND_METHOD
-*/
-
-#define PCALL(POS) pcall[POS]++
-
-PyObject *
-PyEval_GetCallStats(PyObject *self)
-{
-    return Py_BuildValue("iiiiiiiiiii",
-                         pcall[0], pcall[1], pcall[2], pcall[3],
-                         pcall[4], pcall[5], pcall[6], pcall[7],
-                         pcall[8], pcall[9], pcall[10]);
-}
-#else
-#define PCALL(O)
-
-PyObject *
-PyEval_GetCallStats(PyObject *self)
-{
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif
-
-
-#ifdef WITH_THREAD
-
-#ifdef HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#include "pythread.h"
-
-static PyThread_type_lock interpreter_lock = 0; /* This is the GIL */
-static PyThread_type_lock pending_lock = 0; /* for pending calls */
-static long main_thread = 0;
-
-int
-PyEval_ThreadsInitialized(void)
-{
-    return interpreter_lock != 0;
-}
-
-void
-PyEval_InitThreads(void)
-{
-    if (interpreter_lock)
-        return;
-    interpreter_lock = PyThread_allocate_lock();
-    PyThread_acquire_lock(interpreter_lock, 1);
-    main_thread = PyThread_get_thread_ident();
-}
-
-void
-PyEval_AcquireLock(void)
-{
-    PyThread_acquire_lock(interpreter_lock, 1);
-}
-
-void
-PyEval_ReleaseLock(void)
-{
-    PyThread_release_lock(interpreter_lock);
-}
-
-void
-PyEval_AcquireThread(PyThreadState *tstate)
-{
-    if (tstate == NULL)
-        Py_FatalError("PyEval_AcquireThread: NULL new thread state");
-    /* Check someone has called PyEval_InitThreads() to create the lock */
-    assert(interpreter_lock);
-    PyThread_acquire_lock(interpreter_lock, 1);
-    if (PyThreadState_Swap(tstate) != NULL)
-        Py_FatalError(
-            "PyEval_AcquireThread: non-NULL old thread state");
-}
-
-void
-PyEval_ReleaseThread(PyThreadState *tstate)
-{
-    if (tstate == NULL)
-        Py_FatalError("PyEval_ReleaseThread: NULL thread state");
-    if (PyThreadState_Swap(NULL) != tstate)
-        Py_FatalError("PyEval_ReleaseThread: wrong thread state");
-    PyThread_release_lock(interpreter_lock);
-}
-
-/* This function is called from PyOS_AfterFork to ensure that newly
-   created child processes don't hold locks referring to threads which
-   are not running in the child process.  (This could also be done using
-   pthread_atfork mechanism, at least for the pthreads implementation.) */
-
-void
-PyEval_ReInitThreads(void)
-{
-    PyObject *threading, *result;
-    PyThreadState *tstate;
-
-    if (!interpreter_lock)
-        return;
-    /*XXX Can't use PyThread_free_lock here because it does too
-      much error-checking.  Doing this cleanly would require
-      adding a new function to each thread_*.h.  Instead, just
-      create a new lock and waste a little bit of memory */
-    interpreter_lock = PyThread_allocate_lock();
-    pending_lock = PyThread_allocate_lock();
-    PyThread_acquire_lock(interpreter_lock, 1);
-    main_thread = PyThread_get_thread_ident();
-
-    /* Update the threading module with the new state.
-     */
-    tstate = PyThreadState_GET();
-    threading = PyMapping_GetItemString(tstate->interp->modules,
-                                        "threading");
-    if (threading == NULL) {
-        /* threading not imported */
-        PyErr_Clear();
-        return;
-    }
-    result = PyObject_CallMethod(threading, "_after_fork", NULL);
-    if (result == NULL)
-        PyErr_WriteUnraisable(threading);
-    else
-        Py_DECREF(result);
-    Py_DECREF(threading);
-}
-#endif
-
-/* Functions save_thread and restore_thread are always defined so
-   dynamically loaded modules needn't be compiled separately for use
-   with and without threads: */
-
-PyThreadState *
-PyEval_SaveThread(void)
-{
-    PyThreadState *tstate = PyThreadState_Swap(NULL);
-    if (tstate == NULL)
-        Py_FatalError("PyEval_SaveThread: NULL tstate");
-#ifdef WITH_THREAD
-    if (interpreter_lock)
-        PyThread_release_lock(interpreter_lock);
-#endif
-    return tstate;
-}
-
-void
-PyEval_RestoreThread(PyThreadState *tstate)
-{
-    if (tstate == NULL)
-        Py_FatalError("PyEval_RestoreThread: NULL tstate");
-#ifdef WITH_THREAD
-    if (interpreter_lock) {
-        int err = errno;
-        PyThread_acquire_lock(interpreter_lock, 1);
-        errno = err;
-    }
-#endif
-    PyThreadState_Swap(tstate);
-}
-
-
-/* Mechanism whereby asynchronously executing callbacks (e.g. UNIX
-   signal handlers or Mac I/O completion routines) can schedule calls
-   to a function to be called synchronously.
-   The synchronous function is called with one void* argument.
-   It should return 0 for success or -1 for failure -- failure should
-   be accompanied by an exception.
-
-   If registry succeeds, the registry function returns 0; if it fails
-   (e.g. due to too many pending calls) it returns -1 (without setting
-   an exception condition).
-
-   Note that because registry may occur from within signal handlers,
-   or other asynchronous events, calling malloc() is unsafe!
-
-#ifdef WITH_THREAD
-   Any thread can schedule pending calls, but only the main thread
-   will execute them.
-   There is no facility to schedule calls to a particular thread, but
-   that should be easy to change, should that ever be required.  In
-   that case, the static variables here should go into the python
-   threadstate.
-#endif
-*/
-
-#ifdef WITH_THREAD
-
-/* The WITH_THREAD implementation is thread-safe.  It allows
-   scheduling to be made from any thread, and even from an executing
-   callback.
- */
-
-#define NPENDINGCALLS 32
-static struct {
-    int (*func)(void *);
-    void *arg;
-} pendingcalls[NPENDINGCALLS];
-static int pendingfirst = 0;
-static int pendinglast = 0;
-static volatile int pendingcalls_to_do = 1; /* trigger initialization of lock */
-static char pendingbusy = 0;
-
-int
-Py_AddPendingCall(int (*func)(void *), void *arg)
-{
-    int i, j, result=0;
-    PyThread_type_lock lock = pending_lock;
-
-    /* try a few times for the lock.  Since this mechanism is used
-     * for signal handling (on the main thread), there is a (slim)
-     * chance that a signal is delivered on the same thread while we
-     * hold the lock during the Py_MakePendingCalls() function.
-     * This avoids a deadlock in that case.
-     * Note that signals can be delivered on any thread.  In particular,
-     * on Windows, a SIGINT is delivered on a system-created worker
-     * thread.
-     * We also check for lock being NULL, in the unlikely case that
-     * this function is called before any bytecode evaluation takes place.
-     */
-    if (lock != NULL) {
-        for (i = 0; i<100; i++) {
-            if (PyThread_acquire_lock(lock, NOWAIT_LOCK))
-                break;
-        }
-        if (i == 100)
-            return -1;
-    }
-
-    i = pendinglast;
-    j = (i + 1) % NPENDINGCALLS;
-    if (j == pendingfirst) {
-        result = -1; /* Queue full */
-    } else {
-        pendingcalls[i].func = func;
-        pendingcalls[i].arg = arg;
-        pendinglast = j;
-    }
-    /* signal main loop */
-    _Py_Ticker = 0;
-    pendingcalls_to_do = 1;
-    if (lock != NULL)
-        PyThread_release_lock(lock);
-    return result;
-}
-
-int
-Py_MakePendingCalls(void)
-{
-    int i;
-    int r = 0;
-
-    if (!pending_lock) {
-        /* initial allocation of the lock */
-        pending_lock = PyThread_allocate_lock();
-        if (pending_lock == NULL)
-            return -1;
-    }
-
-    /* only service pending calls on main thread */
-    if (main_thread && PyThread_get_thread_ident() != main_thread)
-        return 0;
-    /* don't perform recursive pending calls */
-    if (pendingbusy)
-        return 0;
-    pendingbusy = 1;
-    /* perform a bounded number of calls, in case of recursion */
-    for (i=0; i<NPENDINGCALLS; i++) {
-        int j;
-        int (*func)(void *);
-        void *arg = NULL;
-
-        /* pop one item off the queue while holding the lock */
-        PyThread_acquire_lock(pending_lock, WAIT_LOCK);
-        j = pendingfirst;
-        if (j == pendinglast) {
-            func = NULL; /* Queue empty */
-        } else {
-            func = pendingcalls[j].func;
-            arg = pendingcalls[j].arg;
-            pendingfirst = (j + 1) % NPENDINGCALLS;
-        }
-        pendingcalls_to_do = pendingfirst != pendinglast;
-        PyThread_release_lock(pending_lock);
-        /* having released the lock, perform the callback */
-        if (func == NULL)
-            break;
-        r = func(arg);
-        if (r)
-            break;
-    }
-    pendingbusy = 0;
-    return r;
-}
-
-#else /* if ! defined WITH_THREAD */
-
-/*
-   WARNING!  ASYNCHRONOUSLY EXECUTING CODE!
-   This code is used for signal handling in python that isn't built
-   with WITH_THREAD.
-   Don't use this implementation when Py_AddPendingCalls() can happen
-   on a different thread!
-
-   There are two possible race conditions:
-   (1) nested asynchronous calls to Py_AddPendingCall()
-   (2) AddPendingCall() calls made while pending calls are being processed.
-
-   (1) is very unlikely because typically signal delivery
-   is blocked during signal handling.  So it should be impossible.
-   (2) is a real possibility.
-   The current code is safe against (2), but not against (1).
-   The safety against (2) is derived from the fact that only one
-   thread is present, interrupted by signals, and that the critical
-   section is protected with the "busy" variable.  On Windows, which
-   delivers SIGINT on a system thread, this does not hold and therefore
-   Windows really shouldn't use this version.
-   The two threads could theoretically wiggle around the "busy" variable.
-*/
-
-#define NPENDINGCALLS 32
-static struct {
-    int (*func)(void *);
-    void *arg;
-} pendingcalls[NPENDINGCALLS];
-static volatile int pendingfirst = 0;
-static volatile int pendinglast = 0;
-static volatile int pendingcalls_to_do = 0;
-
-int
-Py_AddPendingCall(int (*func)(void *), void *arg)
-{
-    static volatile int busy = 0;
-    int i, j;
-    /* XXX Begin critical section */
-    if (busy)
-        return -1;
-    busy = 1;
-    i = pendinglast;
-    j = (i + 1) % NPENDINGCALLS;
-    if (j == pendingfirst) {
-        busy = 0;
-        return -1; /* Queue full */
-    }
-    pendingcalls[i].func = func;
-    pendingcalls[i].arg = arg;
-    pendinglast = j;
-
-    _Py_Ticker = 0;
-    pendingcalls_to_do = 1; /* Signal main loop */
-    busy = 0;
-    /* XXX End critical section */
-    return 0;
-}
-
-int
-Py_MakePendingCalls(void)
-{
-    static int busy = 0;
-    if (busy)
-        return 0;
-    busy = 1;
-    pendingcalls_to_do = 0;
-    for (;;) {
-        int i;
-        int (*func)(void *);
-        void *arg;
-        i = pendingfirst;
-        if (i == pendinglast)
-            break; /* Queue empty */
-        func = pendingcalls[i].func;
-        arg = pendingcalls[i].arg;
-        pendingfirst = (i + 1) % NPENDINGCALLS;
-        if (func(arg) < 0) {
-            busy = 0;
-            pendingcalls_to_do = 1; /* We're not done yet */
-            return -1;
-        }
-    }
-    busy = 0;
-    return 0;
-}
-
-#endif /* WITH_THREAD */
-
-
-/* The interpreter's recursion limit */
-
-#ifndef Py_DEFAULT_RECURSION_LIMIT
-#define Py_DEFAULT_RECURSION_LIMIT 1000
-#endif
-static int recursion_limit = Py_DEFAULT_RECURSION_LIMIT;
-int _Py_CheckRecursionLimit = Py_DEFAULT_RECURSION_LIMIT;
-
-int
-Py_GetRecursionLimit(void)
-{
-    return recursion_limit;
-}
-
-void
-Py_SetRecursionLimit(int new_limit)
-{
-    recursion_limit = new_limit;
-    _Py_CheckRecursionLimit = recursion_limit;
-}
-
-/* the macro Py_EnterRecursiveCall() only calls _Py_CheckRecursiveCall()
-   if the recursion_depth reaches _Py_CheckRecursionLimit.
-   If USE_STACKCHECK, the macro decrements _Py_CheckRecursionLimit
-   to guarantee that _Py_CheckRecursiveCall() is regularly called.
-   Without USE_STACKCHECK, there is no need for this. */
-int
-_Py_CheckRecursiveCall(char *where)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-
-#ifdef USE_STACKCHECK
-    if (PyOS_CheckStack()) {
-        --tstate->recursion_depth;
-        PyErr_SetString(PyExc_MemoryError, "Stack overflow");
-        return -1;
-    }
-#endif
-    if (tstate->recursion_depth > recursion_limit) {
-        --tstate->recursion_depth;
-        PyErr_Format(PyExc_RuntimeError,
-                     "maximum recursion depth exceeded%s",
-                     where);
-        return -1;
-    }
-    _Py_CheckRecursionLimit = recursion_limit;
-    return 0;
-}
-
-/* Status code for main loop (reason for stack unwind) */
-enum why_code {
-        WHY_NOT =       0x0001, /* No error */
-        WHY_EXCEPTION = 0x0002, /* Exception occurred */
-        WHY_RERAISE =   0x0004, /* Exception re-raised by 'finally' */
-        WHY_RETURN =    0x0008, /* 'return' statement */
-        WHY_BREAK =     0x0010, /* 'break' statement */
-        WHY_CONTINUE =  0x0020, /* 'continue' statement */
-        WHY_YIELD =     0x0040  /* 'yield' operator */
-};
-
-static enum why_code do_raise(PyObject *, PyObject *, PyObject *);
-static int unpack_iterable(PyObject *, int, PyObject **);
-
-/* Records whether tracing is on for any thread.  Counts the number of
-   threads for which tstate->c_tracefunc is non-NULL, so if the value
-   is 0, we know we don't have to check this thread's c_tracefunc.
-   This speeds up the if statement in PyEval_EvalFrameEx() after
-   fast_next_opcode*/
-static int _Py_TracingPossible = 0;
-
-/* for manipulating the thread switch and periodic "stuff" - used to be
-   per thread, now just a pair o' globals */
-int _Py_CheckInterval = 100;
-volatile int _Py_Ticker = 0; /* so that we hit a "tick" first thing */
-
-PyObject *
-PyEval_EvalCode(PyCodeObject *co, PyObject *globals, PyObject *locals)
-{
-    return PyEval_EvalCodeEx(co,
-                      globals, locals,
-                      (PyObject **)NULL, 0,
-                      (PyObject **)NULL, 0,
-                      (PyObject **)NULL, 0,
-                      NULL);
-}
-
-
-/* Interpreter main loop */
-
-PyObject *
-PyEval_EvalFrame(PyFrameObject *f) {
-    /* This is for backward compatibility with extension modules that
-       used this API; core interpreter code should call
-       PyEval_EvalFrameEx() */
-    return PyEval_EvalFrameEx(f, 0);
-}
-
-PyObject *
-PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
-{
-#ifdef DXPAIRS
-    int lastopcode = 0;
-#endif
-    register PyObject **stack_pointer;  /* Next free slot in value stack */
-    register unsigned char *next_instr;
-    register int opcode;        /* Current opcode */
-    register int oparg;         /* Current opcode argument, if any */
-    register enum why_code why; /* Reason for block stack unwind */
-    register int err;           /* Error status -- nonzero if error */
-    register PyObject *x;       /* Result object -- NULL if error */
-    register PyObject *v;       /* Temporary objects popped off stack */
-    register PyObject *w;
-    register PyObject *u;
-    register PyObject *t;
-    register PyObject *stream = NULL;    /* for PRINT opcodes */
-    register PyObject **fastlocals, **freevars;
-    PyObject *retval = NULL;            /* Return value */
-    PyThreadState *tstate = PyThreadState_GET();
-    PyCodeObject *co;
-
-    /* when tracing we set things up so that
-
-           not (instr_lb <= current_bytecode_offset < instr_ub)
-
-       is true when the line being executed has changed.  The
-       initial values are such as to make this false the first
-       time it is tested. */
-    int instr_ub = -1, instr_lb = 0, instr_prev = -1;
-
-    unsigned char *first_instr;
-    PyObject *names;
-    PyObject *consts;
-#if defined(Py_DEBUG) || defined(LLTRACE)
-    /* Make it easier to find out where we are with a debugger */
-    char *filename;
-#endif
-
-/* Tuple access macros */
-
-#ifndef Py_DEBUG
-#define GETITEM(v, i) PyTuple_GET_ITEM((PyTupleObject *)(v), (i))
-#else
-#define GETITEM(v, i) PyTuple_GetItem((v), (i))
-#endif
-
-#ifdef WITH_TSC
-/* Use Pentium timestamp counter to mark certain events:
-   inst0 -- beginning of switch statement for opcode dispatch
-   inst1 -- end of switch statement (may be skipped)
-   loop0 -- the top of the mainloop
-   loop1 -- place where control returns again to top of mainloop
-            (may be skipped)
-   intr1 -- beginning of long interruption
-   intr2 -- end of long interruption
-
-   Many opcodes call out to helper C functions.  In some cases, the
-   time in those functions should be counted towards the time for the
-   opcode, but not in all cases.  For example, a CALL_FUNCTION opcode
-   calls another Python function; there's no point in charge all the
-   bytecode executed by the called function to the caller.
-
-   It's hard to make a useful judgement statically.  In the presence
-   of operator overloading, it's impossible to tell if a call will
-   execute new Python code or not.
-
-   It's a case-by-case judgement.  I'll use intr1 for the following
-   cases:
-
-   EXEC_STMT
-   IMPORT_STAR
-   IMPORT_FROM
-   CALL_FUNCTION (and friends)
-
- */
-    uint64 inst0, inst1, loop0, loop1, intr0 = 0, intr1 = 0;
-    int ticked = 0;
-
-    READ_TIMESTAMP(inst0);
-    READ_TIMESTAMP(inst1);
-    READ_TIMESTAMP(loop0);
-    READ_TIMESTAMP(loop1);
-
-    /* shut up the compiler */
-    opcode = 0;
-#endif
-
-/* Code access macros */
-
-#define INSTR_OFFSET()  ((int)(next_instr - first_instr))
-#define NEXTOP()        (*next_instr++)
-#define NEXTARG()       (next_instr += 2, (next_instr[-1]<<8) + next_instr[-2])
-#define PEEKARG()       ((next_instr[2]<<8) + next_instr[1])
-#define JUMPTO(x)       (next_instr = first_instr + (x))
-#define JUMPBY(x)       (next_instr += (x))
-
-/* OpCode prediction macros
-    Some opcodes tend to come in pairs thus making it possible to
-    predict the second code when the first is run.  For example,
-    GET_ITER is often followed by FOR_ITER. And FOR_ITER is often
-    followed by STORE_FAST or UNPACK_SEQUENCE.
-
-    Verifying the prediction costs a single high-speed test of a register
-    variable against a constant.  If the pairing was good, then the
-    processor's own internal branch predication has a high likelihood of
-    success, resulting in a nearly zero-overhead transition to the
-    next opcode.  A successful prediction saves a trip through the eval-loop
-    including its two unpredictable branches, the HAS_ARG test and the
-    switch-case.  Combined with the processor's internal branch prediction,
-    a successful PREDICT has the effect of making the two opcodes run as if
-    they were a single new opcode with the bodies combined.
-
-    If collecting opcode statistics, your choices are to either keep the
-    predictions turned-on and interpret the results as if some opcodes
-    had been combined or turn-off predictions so that the opcode frequency
-    counter updates for both opcodes.
-*/
-
-#ifdef DYNAMIC_EXECUTION_PROFILE
-#define PREDICT(op)             if (0) goto PRED_##op
-#else
-#define PREDICT(op)             if (*next_instr == op) goto PRED_##op
-#endif
-
-#define PREDICTED(op)           PRED_##op: next_instr++
-#define PREDICTED_WITH_ARG(op)  PRED_##op: oparg = PEEKARG(); next_instr += 3
-
-/* Stack manipulation macros */
-
-/* The stack can grow at most MAXINT deep, as co_nlocals and
-   co_stacksize are ints. */
-#define STACK_LEVEL()     ((int)(stack_pointer - f->f_valuestack))
-#define EMPTY()           (STACK_LEVEL() == 0)
-#define TOP()             (stack_pointer[-1])
-#define SECOND()          (stack_pointer[-2])
-#define THIRD()           (stack_pointer[-3])
-#define FOURTH()          (stack_pointer[-4])
-#define PEEK(n)           (stack_pointer[-(n)])
-#define SET_TOP(v)        (stack_pointer[-1] = (v))
-#define SET_SECOND(v)     (stack_pointer[-2] = (v))
-#define SET_THIRD(v)      (stack_pointer[-3] = (v))
-#define SET_FOURTH(v)     (stack_pointer[-4] = (v))
-#define SET_VALUE(n, v)   (stack_pointer[-(n)] = (v))
-#define BASIC_STACKADJ(n) (stack_pointer += n)
-#define BASIC_PUSH(v)     (*stack_pointer++ = (v))
-#define BASIC_POP()       (*--stack_pointer)
-
-#ifdef LLTRACE
-#define PUSH(v)         { (void)(BASIC_PUSH(v), \
-                          lltrace && prtrace(TOP(), "push")); \
-                          assert(STACK_LEVEL() <= co->co_stacksize); }
-#define POP()           ((void)(lltrace && prtrace(TOP(), "pop")), \
-                         BASIC_POP())
-#define STACKADJ(n)     { (void)(BASIC_STACKADJ(n), \
-                          lltrace && prtrace(TOP(), "stackadj")); \
-                          assert(STACK_LEVEL() <= co->co_stacksize); }
-#define EXT_POP(STACK_POINTER) ((void)(lltrace && \
-                                prtrace((STACK_POINTER)[-1], "ext_pop")), \
-                                *--(STACK_POINTER))
-#else
-#define PUSH(v)                BASIC_PUSH(v)
-#define POP()                  BASIC_POP()
-#define STACKADJ(n)            BASIC_STACKADJ(n)
-#define EXT_POP(STACK_POINTER) (*--(STACK_POINTER))
-#endif
-
-/* Local variable macros */
-
-#define GETLOCAL(i)     (fastlocals[i])
-
-/* The SETLOCAL() macro must not DECREF the local variable in-place and
-   then store the new value; it must copy the old value to a temporary
-   value, then store the new value, and then DECREF the temporary value.
-   This is because it is possible that during the DECREF the frame is
-   accessed by other code (e.g. a __del__ method or gc.collect()) and the
-   variable would be pointing to already-freed memory. */
-#define SETLOCAL(i, value)      do { PyObject *tmp = GETLOCAL(i); \
-                                     GETLOCAL(i) = value; \
-                                     Py_XDECREF(tmp); } while (0)
-
-/* Start of code */
-
-    if (f == NULL)
-        return NULL;
-
-    /* push frame */
-    if (Py_EnterRecursiveCall(""))
-        return NULL;
-
-    tstate->frame = f;
-
-    if (tstate->use_tracing) {
-        if (tstate->c_tracefunc != NULL) {
-            /* tstate->c_tracefunc, if defined, is a
-               function that will be called on *every* entry
-               to a code block.  Its return value, if not
-               None, is a function that will be called at
-               the start of each executed line of code.
-               (Actually, the function must return itself
-               in order to continue tracing.)  The trace
-               functions are called with three arguments:
-               a pointer to the current frame, a string
-               indicating why the function is called, and
-               an argument which depends on the situation.
-               The global trace function is also called
-               whenever an exception is detected. */
-            if (call_trace_protected(tstate->c_tracefunc,
-                                     tstate->c_traceobj,
-                                     f, PyTrace_CALL, Py_None)) {
-                /* Trace function raised an error */
-                goto exit_eval_frame;
-            }
-        }
-        if (tstate->c_profilefunc != NULL) {
-            /* Similar for c_profilefunc, except it needn't
-               return itself and isn't called for "line" events */
-            if (call_trace_protected(tstate->c_profilefunc,
-                                     tstate->c_profileobj,
-                                     f, PyTrace_CALL, Py_None)) {
-                /* Profile function raised an error */
-                goto exit_eval_frame;
-            }
-        }
-    }
-
-    co = f->f_code;
-    names = co->co_names;
-    consts = co->co_consts;
-    fastlocals = f->f_localsplus;
-    freevars = f->f_localsplus + co->co_nlocals;
-    first_instr = (unsigned char*) PyString_AS_STRING(co->co_code);
-    /* An explanation is in order for the next line.
-
-       f->f_lasti now refers to the index of the last instruction
-       executed.  You might think this was obvious from the name, but
-       this wasn't always true before 2.3!  PyFrame_New now sets
-       f->f_lasti to -1 (i.e. the index *before* the first instruction)
-       and YIELD_VALUE doesn't fiddle with f_lasti any more.  So this
-       does work.  Promise.
-
-       When the PREDICT() macros are enabled, some opcode pairs follow in
-       direct succession without updating f->f_lasti.  A successful
-       prediction effectively links the two codes together as if they
-       were a single new opcode; accordingly,f->f_lasti will point to
-       the first code in the pair (for instance, GET_ITER followed by
-       FOR_ITER is effectively a single opcode and f->f_lasti will point
-       at to the beginning of the combined pair.)
-    */
-    next_instr = first_instr + f->f_lasti + 1;
-    stack_pointer = f->f_stacktop;
-    assert(stack_pointer != NULL);
-    f->f_stacktop = NULL;       /* remains NULL unless yield suspends frame */
-
-#ifdef LLTRACE
-    lltrace = PyDict_GetItemString(f->f_globals, "__lltrace__") != NULL;
-#endif
-#if defined(Py_DEBUG) || defined(LLTRACE)
-    filename = PyString_AsString(co->co_filename);
-#endif
-
-    why = WHY_NOT;
-    err = 0;
-    x = Py_None;        /* Not a reference, just anything non-NULL */
-    w = NULL;
-
-    if (throwflag) { /* support for generator.throw() */
-        why = WHY_EXCEPTION;
-        goto on_error;
-    }
-
-    for (;;) {
-#ifdef WITH_TSC
-        if (inst1 == 0) {
-            /* Almost surely, the opcode executed a break
-               or a continue, preventing inst1 from being set
-               on the way out of the loop.
-            */
-            READ_TIMESTAMP(inst1);
-            loop1 = inst1;
-        }
-        dump_tsc(opcode, ticked, inst0, inst1, loop0, loop1,
-                 intr0, intr1);
-        ticked = 0;
-        inst1 = 0;
-        intr0 = 0;
-        intr1 = 0;
-        READ_TIMESTAMP(loop0);
-#endif
-        assert(stack_pointer >= f->f_valuestack); /* else underflow */
-        assert(STACK_LEVEL() <= co->co_stacksize);  /* else overflow */
-
-        /* Do periodic things.  Doing this every time through
-           the loop would add too much overhead, so we do it
-           only every Nth instruction.  We also do it if
-           ``pendingcalls_to_do'' is set, i.e. when an asynchronous
-           event needs attention (e.g. a signal handler or
-           async I/O handler); see Py_AddPendingCall() and
-           Py_MakePendingCalls() above. */
-
-        if (--_Py_Ticker < 0) {
-            if (*next_instr == SETUP_FINALLY) {
-                /* Make the last opcode before
-                   a try: finally: block uninterruptible. */
-                goto fast_next_opcode;
-            }
-            _Py_Ticker = _Py_CheckInterval;
-            tstate->tick_counter++;
-#ifdef WITH_TSC
-            ticked = 1;
-#endif
-            if (pendingcalls_to_do) {
-                if (Py_MakePendingCalls() < 0) {
-                    why = WHY_EXCEPTION;
-                    goto on_error;
-                }
-                if (pendingcalls_to_do)
-                    /* MakePendingCalls() didn't succeed.
-                       Force early re-execution of this
-                       "periodic" code, possibly after
-                       a thread switch */
-                    _Py_Ticker = 0;
-            }
-#ifdef WITH_THREAD
-            if (interpreter_lock) {
-                /* Give another thread a chance */
-
-                if (PyThreadState_Swap(NULL) != tstate)
-                    Py_FatalError("ceval: tstate mix-up");
-                PyThread_release_lock(interpreter_lock);
-
-                /* Other threads may run now */
-
-                PyThread_acquire_lock(interpreter_lock, 1);
-                if (PyThreadState_Swap(tstate) != NULL)
-                    Py_FatalError("ceval: orphan tstate");
-
-                /* Check for thread interrupts */
-
-                if (tstate->async_exc != NULL) {
-                    x = tstate->async_exc;
-                    tstate->async_exc = NULL;
-                    PyErr_SetNone(x);
-                    Py_DECREF(x);
-                    why = WHY_EXCEPTION;
-                    goto on_error;
-                }
-            }
-#endif
-        }
-
-    fast_next_opcode:
-        f->f_lasti = INSTR_OFFSET();
-
-        /* line-by-line tracing support */
-
-        if (_Py_TracingPossible &&
-            tstate->c_tracefunc != NULL && !tstate->tracing) {
-            /* see maybe_call_line_trace
-               for expository comments */
-            f->f_stacktop = stack_pointer;
-
-            err = maybe_call_line_trace(tstate->c_tracefunc,
-                                        tstate->c_traceobj,
-                                        f, &instr_lb, &instr_ub,
-                                        &instr_prev);
-            /* Reload possibly changed frame fields */
-            JUMPTO(f->f_lasti);
-            if (f->f_stacktop != NULL) {
-                stack_pointer = f->f_stacktop;
-                f->f_stacktop = NULL;
-            }
-            if (err) {
-                /* trace function raised an exception */
-                goto on_error;
-            }
-        }
-
-        /* Extract opcode and argument */
-
-        opcode = NEXTOP();
-        oparg = 0;   /* allows oparg to be stored in a register because
-            it doesn't have to be remembered across a full loop */
-        if (HAS_ARG(opcode))
-            oparg = NEXTARG();
-    dispatch_opcode:
-#ifdef DYNAMIC_EXECUTION_PROFILE
-#ifdef DXPAIRS
-        dxpairs[lastopcode][opcode]++;
-        lastopcode = opcode;
-#endif
-        dxp[opcode]++;
-#endif
-
-#ifdef LLTRACE
-        /* Instruction tracing */
-
-        if (lltrace) {
-            if (HAS_ARG(opcode)) {
-                printf("%d: %d, %d\n",
-                       f->f_lasti, opcode, oparg);
-            }
-            else {
-                printf("%d: %d\n",
-                       f->f_lasti, opcode);
-            }
-        }
-#endif
-
-        /* Main switch on opcode */
-        READ_TIMESTAMP(inst0);
-
-        switch (opcode) {
-
-        /* BEWARE!
-           It is essential that any operation that fails sets either
-           x to NULL, err to nonzero, or why to anything but WHY_NOT,
-           and that no operation that succeeds does this! */
-
-        /* case STOP_CODE: this is an error! */
-
-        case NOP:
-            goto fast_next_opcode;
-
-        case LOAD_FAST:
-            x = GETLOCAL(oparg);
-            if (x != NULL) {
-                Py_INCREF(x);
-                PUSH(x);
-                goto fast_next_opcode;
-            }
-            format_exc_check_arg(PyExc_UnboundLocalError,
-                UNBOUNDLOCAL_ERROR_MSG,
-                PyTuple_GetItem(co->co_varnames, oparg));
-            break;
-
-        case LOAD_CONST:
-            x = GETITEM(consts, oparg);
-            Py_INCREF(x);
-            PUSH(x);
-            goto fast_next_opcode;
-
-        PREDICTED_WITH_ARG(STORE_FAST);
-        case STORE_FAST:
-            v = POP();
-            SETLOCAL(oparg, v);
-            goto fast_next_opcode;
-
-        case POP_TOP:
-            v = POP();
-            Py_DECREF(v);
-            goto fast_next_opcode;
-
-        case ROT_TWO:
-            v = TOP();
-            w = SECOND();
-            SET_TOP(w);
-            SET_SECOND(v);
-            goto fast_next_opcode;
-
-        case ROT_THREE:
-            v = TOP();
-            w = SECOND();
-            x = THIRD();
-            SET_TOP(w);
-            SET_SECOND(x);
-            SET_THIRD(v);
-            goto fast_next_opcode;
-
-        case ROT_FOUR:
-            u = TOP();
-            v = SECOND();
-            w = THIRD();
-            x = FOURTH();
-            SET_TOP(v);
-            SET_SECOND(w);
-            SET_THIRD(x);
-            SET_FOURTH(u);
-            goto fast_next_opcode;
-
-        case DUP_TOP:
-            v = TOP();
-            Py_INCREF(v);
-            PUSH(v);
-            goto fast_next_opcode;
-
-        case DUP_TOPX:
-            if (oparg == 2) {
-                x = TOP();
-                Py_INCREF(x);
-                w = SECOND();
-                Py_INCREF(w);
-                STACKADJ(2);
-                SET_TOP(x);
-                SET_SECOND(w);
-                goto fast_next_opcode;
-            } else if (oparg == 3) {
-                x = TOP();
-                Py_INCREF(x);
-                w = SECOND();
-                Py_INCREF(w);
-                v = THIRD();
-                Py_INCREF(v);
-                STACKADJ(3);
-                SET_TOP(x);
-                SET_SECOND(w);
-                SET_THIRD(v);
-                goto fast_next_opcode;
-            }
-            Py_FatalError("invalid argument to DUP_TOPX"
-                          " (bytecode corruption?)");
-            /* Never returns, so don't bother to set why. */
-            break;
-
-        case UNARY_POSITIVE:
-            v = TOP();
-            x = PyNumber_Positive(v);
-            Py_DECREF(v);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case UNARY_NEGATIVE:
-            v = TOP();
-            x = PyNumber_Negative(v);
-            Py_DECREF(v);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case UNARY_NOT:
-            v = TOP();
-            err = PyObject_IsTrue(v);
-            Py_DECREF(v);
-            if (err == 0) {
-                Py_INCREF(Py_True);
-                SET_TOP(Py_True);
-                continue;
-            }
-            else if (err > 0) {
-                Py_INCREF(Py_False);
-                SET_TOP(Py_False);
-                err = 0;
-                continue;
-            }
-            STACKADJ(-1);
-            break;
-
-        case UNARY_CONVERT:
-            v = TOP();
-            x = PyObject_Repr(v);
-            Py_DECREF(v);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case UNARY_INVERT:
-            v = TOP();
-            x = PyNumber_Invert(v);
-            Py_DECREF(v);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case BINARY_POWER:
-            w = POP();
-            v = TOP();
-            x = PyNumber_Power(v, w, Py_None);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case BINARY_MULTIPLY:
-            w = POP();
-            v = TOP();
-            x = PyNumber_Multiply(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case BINARY_DIVIDE:
-            if (!_Py_QnewFlag) {
-                w = POP();
-                v = TOP();
-                x = PyNumber_Divide(v, w);
-                Py_DECREF(v);
-                Py_DECREF(w);
-                SET_TOP(x);
-                if (x != NULL) continue;
-                break;
-            }
-            /* -Qnew is in effect:  fall through to
-               BINARY_TRUE_DIVIDE */
-        case BINARY_TRUE_DIVIDE:
-            w = POP();
-            v = TOP();
-            x = PyNumber_TrueDivide(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case BINARY_FLOOR_DIVIDE:
-            w = POP();
-            v = TOP();
-            x = PyNumber_FloorDivide(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case BINARY_MODULO:
-            w = POP();
-            v = TOP();
-            if (PyString_CheckExact(v))
-                x = PyString_Format(v, w);
-            else
-                x = PyNumber_Remainder(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case BINARY_ADD:
-            w = POP();
-            v = TOP();
-            if (PyInt_CheckExact(v) && PyInt_CheckExact(w)) {
-                /* INLINE: int + int */
-                register long a, b, i;
-                a = PyInt_AS_LONG(v);
-                b = PyInt_AS_LONG(w);
-                /* cast to avoid undefined behaviour
-                   on overflow */
-                i = (long)((unsigned long)a + b);
-                if ((i^a) < 0 && (i^b) < 0)
-                    goto slow_add;
-                x = PyInt_FromLong(i);
-            }
-            else if (PyString_CheckExact(v) &&
-                     PyString_CheckExact(w)) {
-                x = string_concatenate(v, w, f, next_instr);
-                /* string_concatenate consumed the ref to v */
-                goto skip_decref_vx;
-            }
-            else {
-              slow_add:
-                x = PyNumber_Add(v, w);
-            }
-            Py_DECREF(v);
-          skip_decref_vx:
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case BINARY_SUBTRACT:
-            w = POP();
-            v = TOP();
-            if (PyInt_CheckExact(v) && PyInt_CheckExact(w)) {
-                /* INLINE: int - int */
-                register long a, b, i;
-                a = PyInt_AS_LONG(v);
-                b = PyInt_AS_LONG(w);
-                /* cast to avoid undefined behaviour
-                   on overflow */
-                i = (long)((unsigned long)a - b);
-                if ((i^a) < 0 && (i^~b) < 0)
-                    goto slow_sub;
-                x = PyInt_FromLong(i);
-            }
-            else {
-              slow_sub:
-                x = PyNumber_Subtract(v, w);
-            }
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case BINARY_SUBSCR:
-            w = POP();
-            v = TOP();
-            if (PyList_CheckExact(v) && PyInt_CheckExact(w)) {
-                /* INLINE: list[int] */
-                Py_ssize_t i = PyInt_AsSsize_t(w);
-                if (i < 0)
-                    i += PyList_GET_SIZE(v);
-                if (i >= 0 && i < PyList_GET_SIZE(v)) {
-                    x = PyList_GET_ITEM(v, i);
-                    Py_INCREF(x);
-                }
-                else
-                    goto slow_get;
-            }
-            else
-              slow_get:
-                x = PyObject_GetItem(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case BINARY_LSHIFT:
-            w = POP();
-            v = TOP();
-            x = PyNumber_Lshift(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case BINARY_RSHIFT:
-            w = POP();
-            v = TOP();
-            x = PyNumber_Rshift(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case BINARY_AND:
-            w = POP();
-            v = TOP();
-            x = PyNumber_And(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case BINARY_XOR:
-            w = POP();
-            v = TOP();
-            x = PyNumber_Xor(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case BINARY_OR:
-            w = POP();
-            v = TOP();
-            x = PyNumber_Or(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case LIST_APPEND:
-            w = POP();
-            v = PEEK(oparg);
-            err = PyList_Append(v, w);
-            Py_DECREF(w);
-            if (err == 0) {
-                PREDICT(JUMP_ABSOLUTE);
-                continue;
-            }
-            break;
-
-        case SET_ADD:
-            w = POP();
-            v = stack_pointer[-oparg];
-            err = PySet_Add(v, w);
-            Py_DECREF(w);
-            if (err == 0) {
-                PREDICT(JUMP_ABSOLUTE);
-                continue;
-            }
-            break;
-
-        case INPLACE_POWER:
-            w = POP();
-            v = TOP();
-            x = PyNumber_InPlacePower(v, w, Py_None);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case INPLACE_MULTIPLY:
-            w = POP();
-            v = TOP();
-            x = PyNumber_InPlaceMultiply(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case INPLACE_DIVIDE:
-            if (!_Py_QnewFlag) {
-                w = POP();
-                v = TOP();
-                x = PyNumber_InPlaceDivide(v, w);
-                Py_DECREF(v);
-                Py_DECREF(w);
-                SET_TOP(x);
-                if (x != NULL) continue;
-                break;
-            }
-            /* -Qnew is in effect:  fall through to
-               INPLACE_TRUE_DIVIDE */
-        case INPLACE_TRUE_DIVIDE:
-            w = POP();
-            v = TOP();
-            x = PyNumber_InPlaceTrueDivide(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case INPLACE_FLOOR_DIVIDE:
-            w = POP();
-            v = TOP();
-            x = PyNumber_InPlaceFloorDivide(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case INPLACE_MODULO:
-            w = POP();
-            v = TOP();
-            x = PyNumber_InPlaceRemainder(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case INPLACE_ADD:
-            w = POP();
-            v = TOP();
-            if (PyInt_CheckExact(v) && PyInt_CheckExact(w)) {
-                /* INLINE: int + int */
-                register long a, b, i;
-                a = PyInt_AS_LONG(v);
-                b = PyInt_AS_LONG(w);
-                i = a + b;
-                if ((i^a) < 0 && (i^b) < 0)
-                    goto slow_iadd;
-                x = PyInt_FromLong(i);
-            }
-            else if (PyString_CheckExact(v) &&
-                     PyString_CheckExact(w)) {
-                x = string_concatenate(v, w, f, next_instr);
-                /* string_concatenate consumed the ref to v */
-                goto skip_decref_v;
-            }
-            else {
-              slow_iadd:
-                x = PyNumber_InPlaceAdd(v, w);
-            }
-            Py_DECREF(v);
-          skip_decref_v:
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case INPLACE_SUBTRACT:
-            w = POP();
-            v = TOP();
-            if (PyInt_CheckExact(v) && PyInt_CheckExact(w)) {
-                /* INLINE: int - int */
-                register long a, b, i;
-                a = PyInt_AS_LONG(v);
-                b = PyInt_AS_LONG(w);
-                i = a - b;
-                if ((i^a) < 0 && (i^~b) < 0)
-                    goto slow_isub;
-                x = PyInt_FromLong(i);
-            }
-            else {
-              slow_isub:
-                x = PyNumber_InPlaceSubtract(v, w);
-            }
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case INPLACE_LSHIFT:
-            w = POP();
-            v = TOP();
-            x = PyNumber_InPlaceLshift(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case INPLACE_RSHIFT:
-            w = POP();
-            v = TOP();
-            x = PyNumber_InPlaceRshift(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case INPLACE_AND:
-            w = POP();
-            v = TOP();
-            x = PyNumber_InPlaceAnd(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case INPLACE_XOR:
-            w = POP();
-            v = TOP();
-            x = PyNumber_InPlaceXor(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case INPLACE_OR:
-            w = POP();
-            v = TOP();
-            x = PyNumber_InPlaceOr(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case SLICE+0:
-        case SLICE+1:
-        case SLICE+2:
-        case SLICE+3:
-            if ((opcode-SLICE) & 2)
-                w = POP();
-            else
-                w = NULL;
-            if ((opcode-SLICE) & 1)
-                v = POP();
-            else
-                v = NULL;
-            u = TOP();
-            x = apply_slice(u, v, w);
-            Py_DECREF(u);
-            Py_XDECREF(v);
-            Py_XDECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case STORE_SLICE+0:
-        case STORE_SLICE+1:
-        case STORE_SLICE+2:
-        case STORE_SLICE+3:
-            if ((opcode-STORE_SLICE) & 2)
-                w = POP();
-            else
-                w = NULL;
-            if ((opcode-STORE_SLICE) & 1)
-                v = POP();
-            else
-                v = NULL;
-            u = POP();
-            t = POP();
-            err = assign_slice(u, v, w, t); /* u[v:w] = t */
-            Py_DECREF(t);
-            Py_DECREF(u);
-            Py_XDECREF(v);
-            Py_XDECREF(w);
-            if (err == 0) continue;
-            break;
-
-        case DELETE_SLICE+0:
-        case DELETE_SLICE+1:
-        case DELETE_SLICE+2:
-        case DELETE_SLICE+3:
-            if ((opcode-DELETE_SLICE) & 2)
-                w = POP();
-            else
-                w = NULL;
-            if ((opcode-DELETE_SLICE) & 1)
-                v = POP();
-            else
-                v = NULL;
-            u = POP();
-            err = assign_slice(u, v, w, (PyObject *)NULL);
-                                            /* del u[v:w] */
-            Py_DECREF(u);
-            Py_XDECREF(v);
-            Py_XDECREF(w);
-            if (err == 0) continue;
-            break;
-
-        case STORE_SUBSCR:
-            w = TOP();
-            v = SECOND();
-            u = THIRD();
-            STACKADJ(-3);
-            /* v[w] = u */
-            err = PyObject_SetItem(v, w, u);
-            Py_DECREF(u);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            if (err == 0) continue;
-            break;
-
-        case DELETE_SUBSCR:
-            w = TOP();
-            v = SECOND();
-            STACKADJ(-2);
-            /* del v[w] */
-            err = PyObject_DelItem(v, w);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            if (err == 0) continue;
-            break;
-
-        case PRINT_EXPR:
-            v = POP();
-            w = PySys_GetObject("displayhook");
-            if (w == NULL) {
-                PyErr_SetString(PyExc_RuntimeError,
-                                "lost sys.displayhook");
-                err = -1;
-                x = NULL;
-            }
-            if (err == 0) {
-                x = PyTuple_Pack(1, v);
-                if (x == NULL)
-                    err = -1;
-            }
-            if (err == 0) {
-                w = PyEval_CallObject(w, x);
-                Py_XDECREF(w);
-                if (w == NULL)
-                    err = -1;
-            }
-            Py_DECREF(v);
-            Py_XDECREF(x);
-            break;
-
-        case PRINT_ITEM_TO:
-            w = stream = POP();
-            /* fall through to PRINT_ITEM */
-
-        case PRINT_ITEM:
-            v = POP();
-            if (stream == NULL || stream == Py_None) {
-                w = PySys_GetObject("stdout");
-                if (w == NULL) {
-                    PyErr_SetString(PyExc_RuntimeError,
-                                    "lost sys.stdout");
-                    err = -1;
-                }
-            }
-            /* PyFile_SoftSpace() can exececute arbitrary code
-               if sys.stdout is an instance with a __getattr__.
-               If __getattr__ raises an exception, w will
-               be freed, so we need to prevent that temporarily. */
-            Py_XINCREF(w);
-            if (w != NULL && PyFile_SoftSpace(w, 0))
-                err = PyFile_WriteString(" ", w);
-            if (err == 0)
-                err = PyFile_WriteObject(v, w, Py_PRINT_RAW);
-            if (err == 0) {
-                /* XXX move into writeobject() ? */
-                if (PyString_Check(v)) {
-                    char *s = PyString_AS_STRING(v);
-                    Py_ssize_t len = PyString_GET_SIZE(v);
-                    if (len == 0 ||
-                        !isspace(Py_CHARMASK(s[len-1])) ||
-                        s[len-1] == ' ')
-                        PyFile_SoftSpace(w, 1);
-                }
-#ifdef Py_USING_UNICODE
-                else if (PyUnicode_Check(v)) {
-                    Py_UNICODE *s = PyUnicode_AS_UNICODE(v);
-                    Py_ssize_t len = PyUnicode_GET_SIZE(v);
-                    if (len == 0 ||
-                        !Py_UNICODE_ISSPACE(s[len-1]) ||
-                        s[len-1] == ' ')
-                        PyFile_SoftSpace(w, 1);
-                }
-#endif
-                else
-                    PyFile_SoftSpace(w, 1);
-            }
-            Py_XDECREF(w);
-            Py_DECREF(v);
-            Py_XDECREF(stream);
-            stream = NULL;
-            if (err == 0)
-                continue;
-            break;
-
-        case PRINT_NEWLINE_TO:
-            w = stream = POP();
-            /* fall through to PRINT_NEWLINE */
-
-        case PRINT_NEWLINE:
-            if (stream == NULL || stream == Py_None) {
-                w = PySys_GetObject("stdout");
-                if (w == NULL) {
-                    PyErr_SetString(PyExc_RuntimeError,
-                                    "lost sys.stdout");
-                    why = WHY_EXCEPTION;
-                }
-            }
-            if (w != NULL) {
-                /* w.write() may replace sys.stdout, so we
-                 * have to keep our reference to it */
-                Py_INCREF(w);
-                err = PyFile_WriteString("\n", w);
-                if (err == 0)
-                    PyFile_SoftSpace(w, 0);
-                Py_DECREF(w);
-            }
-            Py_XDECREF(stream);
-            stream = NULL;
-            break;
-
-
-#ifdef CASE_TOO_BIG
-        default: switch (opcode) {
-#endif
-        case RAISE_VARARGS:
-            u = v = w = NULL;
-            switch (oparg) {
-            case 3:
-                u = POP(); /* traceback */
-                /* Fallthrough */
-            case 2:
-                v = POP(); /* value */
-                /* Fallthrough */
-            case 1:
-                w = POP(); /* exc */
-            case 0: /* Fallthrough */
-                why = do_raise(w, v, u);
-                break;
-            default:
-                PyErr_SetString(PyExc_SystemError,
-                           "bad RAISE_VARARGS oparg");
-                why = WHY_EXCEPTION;
-                break;
-            }
-            break;
-
-        case LOAD_LOCALS:
-            if ((x = f->f_locals) != NULL) {
-                Py_INCREF(x);
-                PUSH(x);
-                continue;
-            }
-            PyErr_SetString(PyExc_SystemError, "no locals");
-            break;
-
-        case RETURN_VALUE:
-            retval = POP();
-            why = WHY_RETURN;
-            goto fast_block_end;
-
-        case YIELD_VALUE:
-            retval = POP();
-            f->f_stacktop = stack_pointer;
-            why = WHY_YIELD;
-            goto fast_yield;
-
-        case EXEC_STMT:
-            w = TOP();
-            v = SECOND();
-            u = THIRD();
-            STACKADJ(-3);
-            READ_TIMESTAMP(intr0);
-            err = exec_statement(f, u, v, w);
-            READ_TIMESTAMP(intr1);
-            Py_DECREF(u);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            break;
-
-        case POP_BLOCK:
-            {
-                PyTryBlock *b = PyFrame_BlockPop(f);
-                while (STACK_LEVEL() > b->b_level) {
-                    v = POP();
-                    Py_DECREF(v);
-                }
-            }
-            continue;
-
-        PREDICTED(END_FINALLY);
-        case END_FINALLY:
-            v = POP();
-            if (PyInt_Check(v)) {
-                why = (enum why_code) PyInt_AS_LONG(v);
-                assert(why != WHY_YIELD);
-                if (why == WHY_RETURN ||
-                    why == WHY_CONTINUE)
-                    retval = POP();
-            }
-            else if (PyExceptionClass_Check(v) ||
-                     PyString_Check(v)) {
-                w = POP();
-                u = POP();
-                PyErr_Restore(v, w, u);
-                why = WHY_RERAISE;
-                break;
-            }
-            else if (v != Py_None) {
-                PyErr_SetString(PyExc_SystemError,
-                    "'finally' pops bad exception");
-                why = WHY_EXCEPTION;
-            }
-            Py_DECREF(v);
-            break;
-
-        case BUILD_CLASS:
-            u = TOP();
-            v = SECOND();
-            w = THIRD();
-            STACKADJ(-2);
-            x = build_class(u, v, w);
-            SET_TOP(x);
-            Py_DECREF(u);
-            Py_DECREF(v);
-            Py_DECREF(w);
-            break;
-
-        case STORE_NAME:
-            w = GETITEM(names, oparg);
-            v = POP();
-            if ((x = f->f_locals) != NULL) {
-                if (PyDict_CheckExact(x))
-                    err = PyDict_SetItem(x, w, v);
-                else
-                    err = PyObject_SetItem(x, w, v);
-                Py_DECREF(v);
-                if (err == 0) continue;
-                break;
-            }
-            PyErr_Format(PyExc_SystemError,
-                         "no locals found when storing %s",
-                         PyObject_REPR(w));
-            break;
-
-        case DELETE_NAME:
-            w = GETITEM(names, oparg);
-            if ((x = f->f_locals) != NULL) {
-                if ((err = PyObject_DelItem(x, w)) != 0)
-                    format_exc_check_arg(PyExc_NameError,
-                                         NAME_ERROR_MSG,
-                                         w);
-                break;
-            }
-            PyErr_Format(PyExc_SystemError,
-                         "no locals when deleting %s",
-                         PyObject_REPR(w));
-            break;
-
-        PREDICTED_WITH_ARG(UNPACK_SEQUENCE);
-        case UNPACK_SEQUENCE:
-            v = POP();
-            if (PyTuple_CheckExact(v) &&
-                PyTuple_GET_SIZE(v) == oparg) {
-                PyObject **items = \
-                    ((PyTupleObject *)v)->ob_item;
-                while (oparg--) {
-                    w = items[oparg];
-                    Py_INCREF(w);
-                    PUSH(w);
-                }
-                Py_DECREF(v);
-                continue;
-            } else if (PyList_CheckExact(v) &&
-                       PyList_GET_SIZE(v) == oparg) {
-                PyObject **items = \
-                    ((PyListObject *)v)->ob_item;
-                while (oparg--) {
-                    w = items[oparg];
-                    Py_INCREF(w);
-                    PUSH(w);
-                }
-            } else if (unpack_iterable(v, oparg,
-                                       stack_pointer + oparg)) {
-                STACKADJ(oparg);
-            } else {
-                /* unpack_iterable() raised an exception */
-                why = WHY_EXCEPTION;
-            }
-            Py_DECREF(v);
-            break;
-
-        case STORE_ATTR:
-            w = GETITEM(names, oparg);
-            v = TOP();
-            u = SECOND();
-            STACKADJ(-2);
-            err = PyObject_SetAttr(v, w, u); /* v.w = u */
-            Py_DECREF(v);
-            Py_DECREF(u);
-            if (err == 0) continue;
-            break;
-
-        case DELETE_ATTR:
-            w = GETITEM(names, oparg);
-            v = POP();
-            err = PyObject_SetAttr(v, w, (PyObject *)NULL);
-                                            /* del v.w */
-            Py_DECREF(v);
-            break;
-
-        case STORE_GLOBAL:
-            w = GETITEM(names, oparg);
-            v = POP();
-            err = PyDict_SetItem(f->f_globals, w, v);
-            Py_DECREF(v);
-            if (err == 0) continue;
-            break;
-
-        case DELETE_GLOBAL:
-            w = GETITEM(names, oparg);
-            if ((err = PyDict_DelItem(f->f_globals, w)) != 0)
-                format_exc_check_arg(
-                    PyExc_NameError, GLOBAL_NAME_ERROR_MSG, w);
-            break;
-
-        case LOAD_NAME:
-            w = GETITEM(names, oparg);
-            if ((v = f->f_locals) == NULL) {
-                PyErr_Format(PyExc_SystemError,
-                             "no locals when loading %s",
-                             PyObject_REPR(w));
-                why = WHY_EXCEPTION;
-                break;
-            }
-            if (PyDict_CheckExact(v)) {
-                x = PyDict_GetItem(v, w);
-                Py_XINCREF(x);
-            }
-            else {
-                x = PyObject_GetItem(v, w);
-                if (x == NULL && PyErr_Occurred()) {
-                    if (!PyErr_ExceptionMatches(
-                                    PyExc_KeyError))
-                        break;
-                    PyErr_Clear();
-                }
-            }
-            if (x == NULL) {
-                x = PyDict_GetItem(f->f_globals, w);
-                if (x == NULL) {
-                    x = PyDict_GetItem(f->f_builtins, w);
-                    if (x == NULL) {
-                        format_exc_check_arg(
-                                    PyExc_NameError,
-                                    NAME_ERROR_MSG, w);
-                        break;
-                    }
-                }
-                Py_INCREF(x);
-            }
-            PUSH(x);
-            continue;
-
-        case LOAD_GLOBAL:
-            w = GETITEM(names, oparg);
-            if (PyString_CheckExact(w)) {
-                /* Inline the PyDict_GetItem() calls.
-                   WARNING: this is an extreme speed hack.
-                   Do not try this at home. */
-                long hash = ((PyStringObject *)w)->ob_shash;
-                if (hash != -1) {
-                    PyDictObject *d;
-                    PyDictEntry *e;
-                    d = (PyDictObject *)(f->f_globals);
-                    e = d->ma_lookup(d, w, hash);
-                    if (e == NULL) {
-                        x = NULL;
-                        break;
-                    }
-                    x = e->me_value;
-                    if (x != NULL) {
-                        Py_INCREF(x);
-                        PUSH(x);
-                        continue;
-                    }
-                    d = (PyDictObject *)(f->f_builtins);
-                    e = d->ma_lookup(d, w, hash);
-                    if (e == NULL) {
-                        x = NULL;
-                        break;
-                    }
-                    x = e->me_value;
-                    if (x != NULL) {
-                        Py_INCREF(x);
-                        PUSH(x);
-                        continue;
-                    }
-                    goto load_global_error;
-                }
-            }
-            /* This is the un-inlined version of the code above */
-            x = PyDict_GetItem(f->f_globals, w);
-            if (x == NULL) {
-                x = PyDict_GetItem(f->f_builtins, w);
-                if (x == NULL) {
-                  load_global_error:
-                    format_exc_check_arg(
-                                PyExc_NameError,
-                                GLOBAL_NAME_ERROR_MSG, w);
-                    break;
-                }
-            }
-            Py_INCREF(x);
-            PUSH(x);
-            continue;
-
-        case DELETE_FAST:
-            x = GETLOCAL(oparg);
-            if (x != NULL) {
-                SETLOCAL(oparg, NULL);
-                continue;
-            }
-            format_exc_check_arg(
-                PyExc_UnboundLocalError,
-                UNBOUNDLOCAL_ERROR_MSG,
-                PyTuple_GetItem(co->co_varnames, oparg)
-                );
-            break;
-
-        case LOAD_CLOSURE:
-            x = freevars[oparg];
-            Py_INCREF(x);
-            PUSH(x);
-            if (x != NULL) continue;
-            break;
-
-        case LOAD_DEREF:
-            x = freevars[oparg];
-            w = PyCell_Get(x);
-            if (w != NULL) {
-                PUSH(w);
-                continue;
-            }
-            err = -1;
-            /* Don't stomp existing exception */
-            if (PyErr_Occurred())
-                break;
-            if (oparg < PyTuple_GET_SIZE(co->co_cellvars)) {
-                v = PyTuple_GET_ITEM(co->co_cellvars,
-                                     oparg);
-                format_exc_check_arg(
-                       PyExc_UnboundLocalError,
-                       UNBOUNDLOCAL_ERROR_MSG,
-                       v);
-            } else {
-                v = PyTuple_GET_ITEM(co->co_freevars, oparg -
-                    PyTuple_GET_SIZE(co->co_cellvars));
-                format_exc_check_arg(PyExc_NameError,
-                                     UNBOUNDFREE_ERROR_MSG, v);
-            }
-            break;
-
-        case STORE_DEREF:
-            w = POP();
-            x = freevars[oparg];
-            PyCell_Set(x, w);
-            Py_DECREF(w);
-            continue;
-
-        case BUILD_TUPLE:
-            x = PyTuple_New(oparg);
-            if (x != NULL) {
-                for (; --oparg >= 0;) {
-                    w = POP();
-                    PyTuple_SET_ITEM(x, oparg, w);
-                }
-                PUSH(x);
-                continue;
-            }
-            break;
-
-        case BUILD_LIST:
-            x =  PyList_New(oparg);
-            if (x != NULL) {
-                for (; --oparg >= 0;) {
-                    w = POP();
-                    PyList_SET_ITEM(x, oparg, w);
-                }
-                PUSH(x);
-                continue;
-            }
-            break;
-
-        case BUILD_SET:
-            x = PySet_New(NULL);
-            if (x != NULL) {
-                for (; --oparg >= 0;) {
-                    w = POP();
-                    if (err == 0)
-                        err = PySet_Add(x, w);
-                    Py_DECREF(w);
-                }
-                if (err != 0) {
-                    Py_DECREF(x);
-                    break;
-                }
-                PUSH(x);
-                continue;
-            }
-            break;
-
-
-        case BUILD_MAP:
-            x = _PyDict_NewPresized((Py_ssize_t)oparg);
-            PUSH(x);
-            if (x != NULL) continue;
-            break;
-
-        case STORE_MAP:
-            w = TOP();     /* key */
-            u = SECOND();  /* value */
-            v = THIRD();   /* dict */
-            STACKADJ(-2);
-            assert (PyDict_CheckExact(v));
-            err = PyDict_SetItem(v, w, u);  /* v[w] = u */
-            Py_DECREF(u);
-            Py_DECREF(w);
-            if (err == 0) continue;
-            break;
-
-        case MAP_ADD:
-            w = TOP();     /* key */
-            u = SECOND();  /* value */
-            STACKADJ(-2);
-            v = stack_pointer[-oparg];  /* dict */
-            assert (PyDict_CheckExact(v));
-            err = PyDict_SetItem(v, w, u);  /* v[w] = u */
-            Py_DECREF(u);
-            Py_DECREF(w);
-            if (err == 0) {
-                PREDICT(JUMP_ABSOLUTE);
-                continue;
-            }
-            break;
-
-        case LOAD_ATTR:
-            w = GETITEM(names, oparg);
-            v = TOP();
-            x = PyObject_GetAttr(v, w);
-            Py_DECREF(v);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case COMPARE_OP:
-            w = POP();
-            v = TOP();
-            if (PyInt_CheckExact(w) && PyInt_CheckExact(v)) {
-                /* INLINE: cmp(int, int) */
-                register long a, b;
-                register int res;
-                a = PyInt_AS_LONG(v);
-                b = PyInt_AS_LONG(w);
-                switch (oparg) {
-                case PyCmp_LT: res = a <  b; break;
-                case PyCmp_LE: res = a <= b; break;
-                case PyCmp_EQ: res = a == b; break;
-                case PyCmp_NE: res = a != b; break;
-                case PyCmp_GT: res = a >  b; break;
-                case PyCmp_GE: res = a >= b; break;
-                case PyCmp_IS: res = v == w; break;
-                case PyCmp_IS_NOT: res = v != w; break;
-                default: goto slow_compare;
-                }
-                x = res ? Py_True : Py_False;
-                Py_INCREF(x);
-            }
-            else {
-              slow_compare:
-                x = cmp_outcome(oparg, v, w);
-            }
-            Py_DECREF(v);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x == NULL) break;
-            PREDICT(POP_JUMP_IF_FALSE);
-            PREDICT(POP_JUMP_IF_TRUE);
-            continue;
-
-        case IMPORT_NAME:
-            w = GETITEM(names, oparg);
-            x = PyDict_GetItemString(f->f_builtins, "__import__");
-            if (x == NULL) {
-                PyErr_SetString(PyExc_ImportError,
-                                "__import__ not found");
-                break;
-            }
-            Py_INCREF(x);
-            v = POP();
-            u = TOP();
-            if (PyInt_AsLong(u) != -1 || PyErr_Occurred())
-                w = PyTuple_Pack(5,
-                            w,
-                            f->f_globals,
-                            f->f_locals == NULL ?
-                                  Py_None : f->f_locals,
-                            v,
-                            u);
-            else
-                w = PyTuple_Pack(4,
-                            w,
-                            f->f_globals,
-                            f->f_locals == NULL ?
-                                  Py_None : f->f_locals,
-                            v);
-            Py_DECREF(v);
-            Py_DECREF(u);
-            if (w == NULL) {
-                u = POP();
-                Py_DECREF(x);
-                x = NULL;
-                break;
-            }
-            READ_TIMESTAMP(intr0);
-            v = x;
-            x = PyEval_CallObject(v, w);
-            Py_DECREF(v);
-            READ_TIMESTAMP(intr1);
-            Py_DECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case IMPORT_STAR:
-            v = POP();
-            PyFrame_FastToLocals(f);
-            if ((x = f->f_locals) == NULL) {
-                PyErr_SetString(PyExc_SystemError,
-                    "no locals found during 'import *'");
-                break;
-            }
-            READ_TIMESTAMP(intr0);
-            err = import_all_from(x, v);
-            READ_TIMESTAMP(intr1);
-            PyFrame_LocalsToFast(f, 0);
-            Py_DECREF(v);
-            if (err == 0) continue;
-            break;
-
-        case IMPORT_FROM:
-            w = GETITEM(names, oparg);
-            v = TOP();
-            READ_TIMESTAMP(intr0);
-            x = import_from(v, w);
-            READ_TIMESTAMP(intr1);
-            PUSH(x);
-            if (x != NULL) continue;
-            break;
-
-        case JUMP_FORWARD:
-            JUMPBY(oparg);
-            goto fast_next_opcode;
-
-        PREDICTED_WITH_ARG(POP_JUMP_IF_FALSE);
-        case POP_JUMP_IF_FALSE:
-            w = POP();
-            if (w == Py_True) {
-                Py_DECREF(w);
-                goto fast_next_opcode;
-            }
-            if (w == Py_False) {
-                Py_DECREF(w);
-                JUMPTO(oparg);
-                goto fast_next_opcode;
-            }
-            err = PyObject_IsTrue(w);
-            Py_DECREF(w);
-            if (err > 0)
-                err = 0;
-            else if (err == 0)
-                JUMPTO(oparg);
-            else
-                break;
-            continue;
-
-        PREDICTED_WITH_ARG(POP_JUMP_IF_TRUE);
-        case POP_JUMP_IF_TRUE:
-            w = POP();
-            if (w == Py_False) {
-                Py_DECREF(w);
-                goto fast_next_opcode;
-            }
-            if (w == Py_True) {
-                Py_DECREF(w);
-                JUMPTO(oparg);
-                goto fast_next_opcode;
-            }
-            err = PyObject_IsTrue(w);
-            Py_DECREF(w);
-            if (err > 0) {
-                err = 0;
-                JUMPTO(oparg);
-            }
-            else if (err == 0)
-                ;
-            else
-                break;
-            continue;
-
-        case JUMP_IF_FALSE_OR_POP:
-            w = TOP();
-            if (w == Py_True) {
-                STACKADJ(-1);
-                Py_DECREF(w);
-                goto fast_next_opcode;
-            }
-            if (w == Py_False) {
-                JUMPTO(oparg);
-                goto fast_next_opcode;
-            }
-            err = PyObject_IsTrue(w);
-            if (err > 0) {
-                STACKADJ(-1);
-                Py_DECREF(w);
-                err = 0;
-            }
-            else if (err == 0)
-                JUMPTO(oparg);
-            else
-                break;
-            continue;
-
-        case JUMP_IF_TRUE_OR_POP:
-            w = TOP();
-            if (w == Py_False) {
-                STACKADJ(-1);
-                Py_DECREF(w);
-                goto fast_next_opcode;
-            }
-            if (w == Py_True) {
-                JUMPTO(oparg);
-                goto fast_next_opcode;
-            }
-            err = PyObject_IsTrue(w);
-            if (err > 0) {
-                err = 0;
-                JUMPTO(oparg);
-            }
-            else if (err == 0) {
-                STACKADJ(-1);
-                Py_DECREF(w);
-            }
-            else
-                break;
-            continue;
-
-        PREDICTED_WITH_ARG(JUMP_ABSOLUTE);
-        case JUMP_ABSOLUTE:
-            JUMPTO(oparg);
-#if FAST_LOOPS
-            /* Enabling this path speeds-up all while and for-loops by bypassing
-               the per-loop checks for signals.  By default, this should be turned-off
-               because it prevents detection of a control-break in tight loops like
-               "while 1: pass".  Compile with this option turned-on when you need
-               the speed-up and do not need break checking inside tight loops (ones
-               that contain only instructions ending with goto fast_next_opcode).
-            */
-            goto fast_next_opcode;
-#else
-            continue;
-#endif
-
-        case GET_ITER:
-            /* before: [obj]; after [getiter(obj)] */
-            v = TOP();
-            x = PyObject_GetIter(v);
-            Py_DECREF(v);
-            if (x != NULL) {
-                SET_TOP(x);
-                PREDICT(FOR_ITER);
-                continue;
-            }
-            STACKADJ(-1);
-            break;
-
-        PREDICTED_WITH_ARG(FOR_ITER);
-        case FOR_ITER:
-            /* before: [iter]; after: [iter, iter()] *or* [] */
-            v = TOP();
-            x = (*v->ob_type->tp_iternext)(v);
-            if (x != NULL) {
-                PUSH(x);
-                PREDICT(STORE_FAST);
-                PREDICT(UNPACK_SEQUENCE);
-                continue;
-            }
-            if (PyErr_Occurred()) {
-                if (!PyErr_ExceptionMatches(
-                                PyExc_StopIteration))
-                    break;
-                PyErr_Clear();
-            }
-            /* iterator ended normally */
-            x = v = POP();
-            Py_DECREF(v);
-            JUMPBY(oparg);
-            continue;
-
-        case BREAK_LOOP:
-            why = WHY_BREAK;
-            goto fast_block_end;
-
-        case CONTINUE_LOOP:
-            retval = PyInt_FromLong(oparg);
-            if (!retval) {
-                x = NULL;
-                break;
-            }
-            why = WHY_CONTINUE;
-            goto fast_block_end;
-
-        case SETUP_LOOP:
-        case SETUP_EXCEPT:
-        case SETUP_FINALLY:
-            /* NOTE: If you add any new block-setup opcodes that
-               are not try/except/finally handlers, you may need
-               to update the PyGen_NeedsFinalizing() function.
-               */
-
-            PyFrame_BlockSetup(f, opcode, INSTR_OFFSET() + oparg,
-                               STACK_LEVEL());
-            continue;
-
-        case SETUP_WITH:
-        {
-            static PyObject *exit, *enter;
-            w = TOP();
-            x = special_lookup(w, "__exit__", &exit);
-            if (!x)
-                break;
-            SET_TOP(x);
-            u = special_lookup(w, "__enter__", &enter);
-            Py_DECREF(w);
-            if (!u) {
-                x = NULL;
-                break;
-            }
-            x = PyObject_CallFunctionObjArgs(u, NULL);
-            Py_DECREF(u);
-            if (!x)
-                break;
-            /* Setup a finally block (SETUP_WITH as a block is
-               equivalent to SETUP_FINALLY except it normalizes
-               the exception) before pushing the result of
-               __enter__ on the stack. */
-            PyFrame_BlockSetup(f, SETUP_WITH, INSTR_OFFSET() + oparg,
-                               STACK_LEVEL());
-
-            PUSH(x);
-            continue;
-        }
-
-        case WITH_CLEANUP:
-        {
-            /* At the top of the stack are 1-3 values indicating
-               how/why we entered the finally clause:
-               - TOP = None
-               - (TOP, SECOND) = (WHY_{RETURN,CONTINUE}), retval
-               - TOP = WHY_*; no retval below it
-               - (TOP, SECOND, THIRD) = exc_info()
-               Below them is EXIT, the context.__exit__ bound method.
-               In the last case, we must call
-                 EXIT(TOP, SECOND, THIRD)
-               otherwise we must call
-                 EXIT(None, None, None)
-
-               In all cases, we remove EXIT from the stack, leaving
-               the rest in the same order.
-
-               In addition, if the stack represents an exception,
-               *and* the function call returns a 'true' value, we
-               "zap" this information, to prevent END_FINALLY from
-               re-raising the exception.  (But non-local gotos
-               should still be resumed.)
-            */
-
-            PyObject *exit_func;
-
-            u = POP();
-            if (u == Py_None) {
-                exit_func = TOP();
-                SET_TOP(u);
-                v = w = Py_None;
-            }
-            else if (PyInt_Check(u)) {
-                switch(PyInt_AS_LONG(u)) {
-                case WHY_RETURN:
-                case WHY_CONTINUE:
-                    /* Retval in TOP. */
-                    exit_func = SECOND();
-                    SET_SECOND(TOP());
-                    SET_TOP(u);
-                    break;
-                default:
-                    exit_func = TOP();
-                    SET_TOP(u);
-                    break;
-                }
-                u = v = w = Py_None;
-            }
-            else {
-                v = TOP();
-                w = SECOND();
-                exit_func = THIRD();
-                SET_TOP(u);
-                SET_SECOND(v);
-                SET_THIRD(w);
-            }
-            /* XXX Not the fastest way to call it... */
-            x = PyObject_CallFunctionObjArgs(exit_func, u, v, w,
-                                             NULL);
-            Py_DECREF(exit_func);
-            if (x == NULL)
-                break; /* Go to error exit */
-
-            if (u != Py_None)
-                err = PyObject_IsTrue(x);
-            else
-                err = 0;
-            Py_DECREF(x);
-
-            if (err < 0)
-                break; /* Go to error exit */
-            else if (err > 0) {
-                err = 0;
-                /* There was an exception and a true return */
-                STACKADJ(-2);
-                Py_INCREF(Py_None);
-                SET_TOP(Py_None);
-                Py_DECREF(u);
-                Py_DECREF(v);
-                Py_DECREF(w);
-            } else {
-                /* The stack was rearranged to remove EXIT
-                   above. Let END_FINALLY do its thing */
-            }
-            PREDICT(END_FINALLY);
-            break;
-        }
-
-        case CALL_FUNCTION:
-        {
-            PyObject **sp;
-            PCALL(PCALL_ALL);
-            sp = stack_pointer;
-#ifdef WITH_TSC
-            x = call_function(&sp, oparg, &intr0, &intr1);
-#else
-            x = call_function(&sp, oparg);
-#endif
-            stack_pointer = sp;
-            PUSH(x);
-            if (x != NULL)
-                continue;
-            break;
-        }
-
-        case CALL_FUNCTION_VAR:
-        case CALL_FUNCTION_KW:
-        case CALL_FUNCTION_VAR_KW:
-        {
-            int na = oparg & 0xff;
-            int nk = (oparg>>8) & 0xff;
-            int flags = (opcode - CALL_FUNCTION) & 3;
-            int n = na + 2 * nk;
-            PyObject **pfunc, *func, **sp;
-            PCALL(PCALL_ALL);
-            if (flags & CALL_FLAG_VAR)
-                n++;
-            if (flags & CALL_FLAG_KW)
-                n++;
-            pfunc = stack_pointer - n - 1;
-            func = *pfunc;
-
-            if (PyMethod_Check(func)
-                && PyMethod_GET_SELF(func) != NULL) {
-                PyObject *self = PyMethod_GET_SELF(func);
-                Py_INCREF(self);
-                func = PyMethod_GET_FUNCTION(func);
-                Py_INCREF(func);
-                Py_DECREF(*pfunc);
-                *pfunc = self;
-                na++;
-            } else
-                Py_INCREF(func);
-            sp = stack_pointer;
-            READ_TIMESTAMP(intr0);
-            x = ext_do_call(func, &sp, flags, na, nk);
-            READ_TIMESTAMP(intr1);
-            stack_pointer = sp;
-            Py_DECREF(func);
-
-            while (stack_pointer > pfunc) {
-                w = POP();
-                Py_DECREF(w);
-            }
-            PUSH(x);
-            if (x != NULL)
-                continue;
-            break;
-        }
-
-        case MAKE_FUNCTION:
-            v = POP(); /* code object */
-            x = PyFunction_New(v, f->f_globals);
-            Py_DECREF(v);
-            /* XXX Maybe this should be a separate opcode? */
-            if (x != NULL && oparg > 0) {
-                v = PyTuple_New(oparg);
-                if (v == NULL) {
-                    Py_DECREF(x);
-                    x = NULL;
-                    break;
-                }
-                while (--oparg >= 0) {
-                    w = POP();
-                    PyTuple_SET_ITEM(v, oparg, w);
-                }
-                err = PyFunction_SetDefaults(x, v);
-                Py_DECREF(v);
-            }
-            PUSH(x);
-            break;
-
-        case MAKE_CLOSURE:
-        {
-            v = POP(); /* code object */
-            x = PyFunction_New(v, f->f_globals);
-            Py_DECREF(v);
-            if (x != NULL) {
-                v = POP();
-                if (PyFunction_SetClosure(x, v) != 0) {
-                    /* Can't happen unless bytecode is corrupt. */
-                    why = WHY_EXCEPTION;
-                }
-                Py_DECREF(v);
-            }
-            if (x != NULL && oparg > 0) {
-                v = PyTuple_New(oparg);
-                if (v == NULL) {
-                    Py_DECREF(x);
-                    x = NULL;
-                    break;
-                }
-                while (--oparg >= 0) {
-                    w = POP();
-                    PyTuple_SET_ITEM(v, oparg, w);
-                }
-                if (PyFunction_SetDefaults(x, v) != 0) {
-                    /* Can't happen unless
-                       PyFunction_SetDefaults changes. */
-                    why = WHY_EXCEPTION;
-                }
-                Py_DECREF(v);
-            }
-            PUSH(x);
-            break;
-        }
-
-        case BUILD_SLICE:
-            if (oparg == 3)
-                w = POP();
-            else
-                w = NULL;
-            v = POP();
-            u = TOP();
-            x = PySlice_New(u, v, w);
-            Py_DECREF(u);
-            Py_DECREF(v);
-            Py_XDECREF(w);
-            SET_TOP(x);
-            if (x != NULL) continue;
-            break;
-
-        case EXTENDED_ARG:
-            opcode = NEXTOP();
-            oparg = oparg<<16 | NEXTARG();
-            goto dispatch_opcode;
-
-        default:
-            fprintf(stderr,
-                "XXX lineno: %d, opcode: %d\n",
-                PyFrame_GetLineNumber(f),
-                opcode);
-            PyErr_SetString(PyExc_SystemError, "unknown opcode");
-            why = WHY_EXCEPTION;
-            break;
-
-#ifdef CASE_TOO_BIG
-        }
-#endif
-
-        } /* switch */
-
-        on_error:
-
-        READ_TIMESTAMP(inst1);
-
-        /* Quickly continue if no error occurred */
-
-        if (why == WHY_NOT) {
-            if (err == 0 && x != NULL) {
-#ifdef CHECKEXC
-                /* This check is expensive! */
-                if (PyErr_Occurred())
-                    fprintf(stderr,
-                        "XXX undetected error\n");
-                else {
-#endif
-                    READ_TIMESTAMP(loop1);
-                    continue; /* Normal, fast path */
-#ifdef CHECKEXC
-                }
-#endif
-            }
-            why = WHY_EXCEPTION;
-            x = Py_None;
-            err = 0;
-        }
-
-        /* Double-check exception status */
-
-        if (why == WHY_EXCEPTION || why == WHY_RERAISE) {
-            if (!PyErr_Occurred()) {
-                PyErr_SetString(PyExc_SystemError,
-                    "error return without exception set");
-                why = WHY_EXCEPTION;
-            }
-        }
-#ifdef CHECKEXC
-        else {
-            /* This check is expensive! */
-            if (PyErr_Occurred()) {
-                char buf[128];
-                sprintf(buf, "Stack unwind with exception "
-                    "set and why=%d", why);
-                Py_FatalError(buf);
-            }
-        }
-#endif
-
-        /* Log traceback info if this is a real exception */
-
-        if (why == WHY_EXCEPTION) {
-            PyTraceBack_Here(f);
-
-            if (tstate->c_tracefunc != NULL)
-                call_exc_trace(tstate->c_tracefunc,
-                               tstate->c_traceobj, f);
-        }
-
-        /* For the rest, treat WHY_RERAISE as WHY_EXCEPTION */
-
-        if (why == WHY_RERAISE)
-            why = WHY_EXCEPTION;
-
-        /* Unwind stacks if a (pseudo) exception occurred */
-
-fast_block_end:
-        while (why != WHY_NOT && f->f_iblock > 0) {
-            /* Peek at the current block. */
-            PyTryBlock *b = &f->f_blockstack[f->f_iblock - 1];
-
-            assert(why != WHY_YIELD);
-            if (b->b_type == SETUP_LOOP && why == WHY_CONTINUE) {
-                why = WHY_NOT;
-                JUMPTO(PyInt_AS_LONG(retval));
-                Py_DECREF(retval);
-                break;
-            }
-
-            /* Now we have to pop the block. */
-            f->f_iblock--;
-
-            while (STACK_LEVEL() > b->b_level) {
-                v = POP();
-                Py_XDECREF(v);
-            }
-            if (b->b_type == SETUP_LOOP && why == WHY_BREAK) {
-                why = WHY_NOT;
-                JUMPTO(b->b_handler);
-                break;
-            }
-            if (b->b_type == SETUP_FINALLY ||
-                (b->b_type == SETUP_EXCEPT &&
-                 why == WHY_EXCEPTION) ||
-                b->b_type == SETUP_WITH) {
-                if (why == WHY_EXCEPTION) {
-                    PyObject *exc, *val, *tb;
-                    PyErr_Fetch(&exc, &val, &tb);
-                    if (val == NULL) {
-                        val = Py_None;
-                        Py_INCREF(val);
-                    }
-                    /* Make the raw exception data
-                       available to the handler,
-                       so a program can emulate the
-                       Python main loop.  Don't do
-                       this for 'finally'. */
-                    if (b->b_type == SETUP_EXCEPT ||
-                        b->b_type == SETUP_WITH) {
-                        PyErr_NormalizeException(
-                            &exc, &val, &tb);
-                        set_exc_info(tstate,
-                                     exc, val, tb);
-                    }
-                    if (tb == NULL) {
-                        Py_INCREF(Py_None);
-                        PUSH(Py_None);
-                    } else
-                        PUSH(tb);
-                    PUSH(val);
-                    PUSH(exc);
-                }
-                else {
-                    if (why & (WHY_RETURN | WHY_CONTINUE))
-                        PUSH(retval);
-                    v = PyInt_FromLong((long)why);
-                    PUSH(v);
-                }
-                why = WHY_NOT;
-                JUMPTO(b->b_handler);
-                break;
-            }
-        } /* unwind stack */
-
-        /* End the loop if we still have an error (or return) */
-
-        if (why != WHY_NOT)
-            break;
-        READ_TIMESTAMP(loop1);
-
-    } /* main loop */
-
-    assert(why != WHY_YIELD);
-    /* Pop remaining stack entries. */
-    while (!EMPTY()) {
-        v = POP();
-        Py_XDECREF(v);
-    }
-
-    if (why != WHY_RETURN)
-        retval = NULL;
-
-fast_yield:
-    if (tstate->use_tracing) {
-        if (tstate->c_tracefunc) {
-            if (why == WHY_RETURN || why == WHY_YIELD) {
-                if (call_trace(tstate->c_tracefunc,
-                               tstate->c_traceobj, f,
-                               PyTrace_RETURN, retval)) {
-                    Py_XDECREF(retval);
-                    retval = NULL;
-                    why = WHY_EXCEPTION;
-                }
-            }
-            else if (why == WHY_EXCEPTION) {
-                call_trace_protected(tstate->c_tracefunc,
-                                     tstate->c_traceobj, f,
-                                     PyTrace_RETURN, NULL);
-            }
-        }
-        if (tstate->c_profilefunc) {
-            if (why == WHY_EXCEPTION)
-                call_trace_protected(tstate->c_profilefunc,
-                                     tstate->c_profileobj, f,
-                                     PyTrace_RETURN, NULL);
-            else if (call_trace(tstate->c_profilefunc,
-                                tstate->c_profileobj, f,
-                                PyTrace_RETURN, retval)) {
-                Py_XDECREF(retval);
-                retval = NULL;
-                why = WHY_EXCEPTION;
-            }
-        }
-    }
-
-    if (tstate->frame->f_exc_type != NULL)
-        reset_exc_info(tstate);
-    else {
-        assert(tstate->frame->f_exc_value == NULL);
-        assert(tstate->frame->f_exc_traceback == NULL);
-    }
-
-    /* pop frame */
-exit_eval_frame:
-    Py_LeaveRecursiveCall();
-    tstate->frame = f->f_back;
-
-    return retval;
-}
-
-/* This is gonna seem *real weird*, but if you put some other code between
-   PyEval_EvalFrame() and PyEval_EvalCodeEx() you will need to adjust
-   the test in the if statements in Misc/gdbinit (pystack and pystackv). */
-
-PyObject *
-PyEval_EvalCodeEx(PyCodeObject *co, PyObject *globals, PyObject *locals,
-           PyObject **args, int argcount, PyObject **kws, int kwcount,
-           PyObject **defs, int defcount, PyObject *closure)
-{
-    register PyFrameObject *f;
-    register PyObject *retval = NULL;
-    register PyObject **fastlocals, **freevars;
-    PyThreadState *tstate = PyThreadState_GET();
-    PyObject *x, *u;
-
-    if (globals == NULL) {
-        PyErr_SetString(PyExc_SystemError,
-                        "PyEval_EvalCodeEx: NULL globals");
-        return NULL;
-    }
-
-    assert(tstate != NULL);
-    assert(globals != NULL);
-    f = PyFrame_New(tstate, co, globals, locals);
-    if (f == NULL)
-        return NULL;
-
-    fastlocals = f->f_localsplus;
-    freevars = f->f_localsplus + co->co_nlocals;
-
-    if (co->co_argcount > 0 ||
-        co->co_flags & (CO_VARARGS | CO_VARKEYWORDS)) {
-        int i;
-        int n = argcount;
-        PyObject *kwdict = NULL;
-        if (co->co_flags & CO_VARKEYWORDS) {
-            kwdict = PyDict_New();
-            if (kwdict == NULL)
-                goto fail;
-            i = co->co_argcount;
-            if (co->co_flags & CO_VARARGS)
-                i++;
-            SETLOCAL(i, kwdict);
-        }
-        if (argcount > co->co_argcount) {
-            if (!(co->co_flags & CO_VARARGS)) {
-                PyErr_Format(PyExc_TypeError,
-                    "%.200s() takes %s %d "
-                    "argument%s (%d given)",
-                    PyString_AsString(co->co_name),
-                    defcount ? "at most" : "exactly",
-                    co->co_argcount,
-                    co->co_argcount == 1 ? "" : "s",
-                    argcount + kwcount);
-                goto fail;
-            }
-            n = co->co_argcount;
-        }
-        for (i = 0; i < n; i++) {
-            x = args[i];
-            Py_INCREF(x);
-            SETLOCAL(i, x);
-        }
-        if (co->co_flags & CO_VARARGS) {
-            u = PyTuple_New(argcount - n);
-            if (u == NULL)
-                goto fail;
-            SETLOCAL(co->co_argcount, u);
-            for (i = n; i < argcount; i++) {
-                x = args[i];
-                Py_INCREF(x);
-                PyTuple_SET_ITEM(u, i-n, x);
-            }
-        }
-        for (i = 0; i < kwcount; i++) {
-            PyObject **co_varnames;
-            PyObject *keyword = kws[2*i];
-            PyObject *value = kws[2*i + 1];
-            int j;
-            if (keyword == NULL || !(PyString_Check(keyword)
-#ifdef Py_USING_UNICODE
-                                     || PyUnicode_Check(keyword)
-#endif
-                        )) {
-                PyErr_Format(PyExc_TypeError,
-                    "%.200s() keywords must be strings",
-                    PyString_AsString(co->co_name));
-                goto fail;
-            }
-            /* Speed hack: do raw pointer compares. As names are
-               normally interned this should almost always hit. */
-            co_varnames = ((PyTupleObject *)(co->co_varnames))->ob_item;
-            for (j = 0; j < co->co_argcount; j++) {
-                PyObject *nm = co_varnames[j];
-                if (nm == keyword)
-                    goto kw_found;
-            }
-            /* Slow fallback, just in case */
-            for (j = 0; j < co->co_argcount; j++) {
-                PyObject *nm = co_varnames[j];
-                int cmp = PyObject_RichCompareBool(
-                    keyword, nm, Py_EQ);
-                if (cmp > 0)
-                    goto kw_found;
-                else if (cmp < 0)
-                    goto fail;
-            }
-            if (kwdict == NULL) {
-                PyObject *kwd_str = kwd_as_string(keyword);
-                if (kwd_str) {
-                    PyErr_Format(PyExc_TypeError,
-                                 "%.200s() got an unexpected "
-                                 "keyword argument '%.400s'",
-                                 PyString_AsString(co->co_name),
-                                 PyString_AsString(kwd_str));
-                    Py_DECREF(kwd_str);
-                }
-                goto fail;
-            }
-            PyDict_SetItem(kwdict, keyword, value);
-            continue;
-          kw_found:
-            if (GETLOCAL(j) != NULL) {
-                PyObject *kwd_str = kwd_as_string(keyword);
-                if (kwd_str) {
-                    PyErr_Format(PyExc_TypeError,
-                                 "%.200s() got multiple "
-                                 "values for keyword "
-                                 "argument '%.400s'",
-                                 PyString_AsString(co->co_name),
-                                 PyString_AsString(kwd_str));
-                    Py_DECREF(kwd_str);
-                }
-                goto fail;
-            }
-            Py_INCREF(value);
-            SETLOCAL(j, value);
-        }
-        if (argcount < co->co_argcount) {
-            int m = co->co_argcount - defcount;
-            for (i = argcount; i < m; i++) {
-                if (GETLOCAL(i) == NULL) {
-                    int j, given = 0;
-                    for (j = 0; j < co->co_argcount; j++)
-                        if (GETLOCAL(j))
-                            given++;
-                    PyErr_Format(PyExc_TypeError,
-                        "%.200s() takes %s %d "
-                        "argument%s (%d given)",
-                        PyString_AsString(co->co_name),
-                        ((co->co_flags & CO_VARARGS) ||
-                         defcount) ? "at least"
-                                   : "exactly",
-                        m, m == 1 ? "" : "s", given);
-                    goto fail;
-                }
-            }
-            if (n > m)
-                i = n - m;
-            else
-                i = 0;
-            for (; i < defcount; i++) {
-                if (GETLOCAL(m+i) == NULL) {
-                    PyObject *def = defs[i];
-                    Py_INCREF(def);
-                    SETLOCAL(m+i, def);
-                }
-            }
-        }
-    }
-    else if (argcount > 0 || kwcount > 0) {
-        PyErr_Format(PyExc_TypeError,
-                     "%.200s() takes no arguments (%d given)",
-                     PyString_AsString(co->co_name),
-                     argcount + kwcount);
-        goto fail;
-    }
-    /* Allocate and initialize storage for cell vars, and copy free
-       vars into frame.  This isn't too efficient right now. */
-    if (PyTuple_GET_SIZE(co->co_cellvars)) {
-        int i, j, nargs, found;
-        char *cellname, *argname;
-        PyObject *c;
-
-        nargs = co->co_argcount;
-        if (co->co_flags & CO_VARARGS)
-            nargs++;
-        if (co->co_flags & CO_VARKEYWORDS)
-            nargs++;
-
-        /* Initialize each cell var, taking into account
-           cell vars that are initialized from arguments.
-
-           Should arrange for the compiler to put cellvars
-           that are arguments at the beginning of the cellvars
-           list so that we can march over it more efficiently?
-        */
-        for (i = 0; i < PyTuple_GET_SIZE(co->co_cellvars); ++i) {
-            cellname = PyString_AS_STRING(
-                PyTuple_GET_ITEM(co->co_cellvars, i));
-            found = 0;
-            for (j = 0; j < nargs; j++) {
-                argname = PyString_AS_STRING(
-                    PyTuple_GET_ITEM(co->co_varnames, j));
-                if (strcmp(cellname, argname) == 0) {
-                    c = PyCell_New(GETLOCAL(j));
-                    if (c == NULL)
-                        goto fail;
-                    GETLOCAL(co->co_nlocals + i) = c;
-                    found = 1;
-                    break;
-                }
-            }
-            if (found == 0) {
-                c = PyCell_New(NULL);
-                if (c == NULL)
-                    goto fail;
-                SETLOCAL(co->co_nlocals + i, c);
-            }
-        }
-    }
-    if (PyTuple_GET_SIZE(co->co_freevars)) {
-        int i;
-        for (i = 0; i < PyTuple_GET_SIZE(co->co_freevars); ++i) {
-            PyObject *o = PyTuple_GET_ITEM(closure, i);
-            Py_INCREF(o);
-            freevars[PyTuple_GET_SIZE(co->co_cellvars) + i] = o;
-        }
-    }
-
-    if (co->co_flags & CO_GENERATOR) {
-        /* Don't need to keep the reference to f_back, it will be set
-         * when the generator is resumed. */
-        Py_XDECREF(f->f_back);
-        f->f_back = NULL;
-
-        PCALL(PCALL_GENERATOR);
-
-        /* Create a new generator that owns the ready to run frame
-         * and return that as the value. */
-        return PyGen_New(f);
-    }
-
-    retval = PyEval_EvalFrameEx(f,0);
-
-fail: /* Jump here from prelude on failure */
-
-    /* decref'ing the frame can cause __del__ methods to get invoked,
-       which can call back into Python.  While we're done with the
-       current Python frame (f), the associated C stack is still in use,
-       so recursion_depth must be boosted for the duration.
-    */
-    assert(tstate != NULL);
-    ++tstate->recursion_depth;
-    Py_DECREF(f);
-    --tstate->recursion_depth;
-    return retval;
-}
-
-
-static PyObject *
-special_lookup(PyObject *o, char *meth, PyObject **cache)
-{
-    PyObject *res;
-    if (PyInstance_Check(o)) {
-        if (!*cache)
-            return PyObject_GetAttrString(o, meth);
-        else
-            return PyObject_GetAttr(o, *cache);
-    }
-    res = _PyObject_LookupSpecial(o, meth, cache);
-    if (res == NULL && !PyErr_Occurred()) {
-        PyErr_SetObject(PyExc_AttributeError, *cache);
-        return NULL;
-    }
-    return res;
-}
-
-
-static PyObject *
-kwd_as_string(PyObject *kwd) {
-#ifdef Py_USING_UNICODE
-    if (PyString_Check(kwd)) {
-#else
-        assert(PyString_Check(kwd));
-#endif
-        Py_INCREF(kwd);
-        return kwd;
-#ifdef Py_USING_UNICODE
-    }
-    return _PyUnicode_AsDefaultEncodedString(kwd, "replace");
-#endif
-}
-
-
-/* Implementation notes for set_exc_info() and reset_exc_info():
-
-- Below, 'exc_ZZZ' stands for 'exc_type', 'exc_value' and
-  'exc_traceback'.  These always travel together.
-
-- tstate->curexc_ZZZ is the "hot" exception that is set by
-  PyErr_SetString(), cleared by PyErr_Clear(), and so on.
-
-- Once an exception is caught by an except clause, it is transferred
-  from tstate->curexc_ZZZ to tstate->exc_ZZZ, from which sys.exc_info()
-  can pick it up.  This is the primary task of set_exc_info().
-  XXX That can't be right:  set_exc_info() doesn't look at tstate->curexc_ZZZ.
-
-- Now let me explain the complicated dance with frame->f_exc_ZZZ.
-
-  Long ago, when none of this existed, there were just a few globals:
-  one set corresponding to the "hot" exception, and one set
-  corresponding to sys.exc_ZZZ.  (Actually, the latter weren't C
-  globals; they were simply stored as sys.exc_ZZZ.  For backwards
-  compatibility, they still are!)  The problem was that in code like
-  this:
-
-     try:
-    "something that may fail"
-     except "some exception":
-    "do something else first"
-    "print the exception from sys.exc_ZZZ."
-
-  if "do something else first" invoked something that raised and caught
-  an exception, sys.exc_ZZZ were overwritten.  That was a frequent
-  cause of subtle bugs.  I fixed this by changing the semantics as
-  follows:
-
-    - Within one frame, sys.exc_ZZZ will hold the last exception caught
-      *in that frame*.
-
-    - But initially, and as long as no exception is caught in a given
-      frame, sys.exc_ZZZ will hold the last exception caught in the
-      previous frame (or the frame before that, etc.).
-
-  The first bullet fixed the bug in the above example.  The second
-  bullet was for backwards compatibility: it was (and is) common to
-  have a function that is called when an exception is caught, and to
-  have that function access the caught exception via sys.exc_ZZZ.
-  (Example: traceback.print_exc()).
-
-  At the same time I fixed the problem that sys.exc_ZZZ weren't
-  thread-safe, by introducing sys.exc_info() which gets it from tstate;
-  but that's really a separate improvement.
-
-  The reset_exc_info() function in ceval.c restores the tstate->exc_ZZZ
-  variables to what they were before the current frame was called.  The
-  set_exc_info() function saves them on the frame so that
-  reset_exc_info() can restore them.  The invariant is that
-  frame->f_exc_ZZZ is NULL iff the current frame never caught an
-  exception (where "catching" an exception applies only to successful
-  except clauses); and if the current frame ever caught an exception,
-  frame->f_exc_ZZZ is the exception that was stored in tstate->exc_ZZZ
-  at the start of the current frame.
-
-*/
-
-static void
-set_exc_info(PyThreadState *tstate,
-             PyObject *type, PyObject *value, PyObject *tb)
-{
-    PyFrameObject *frame = tstate->frame;
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-
-    assert(type != NULL);
-    assert(frame != NULL);
-    if (frame->f_exc_type == NULL) {
-        assert(frame->f_exc_value == NULL);
-        assert(frame->f_exc_traceback == NULL);
-        /* This frame didn't catch an exception before. */
-        /* Save previous exception of this thread in this frame. */
-        if (tstate->exc_type == NULL) {
-            /* XXX Why is this set to Py_None? */
-            Py_INCREF(Py_None);
-            tstate->exc_type = Py_None;
-        }
-        Py_INCREF(tstate->exc_type);
-        Py_XINCREF(tstate->exc_value);
-        Py_XINCREF(tstate->exc_traceback);
-        frame->f_exc_type = tstate->exc_type;
-        frame->f_exc_value = tstate->exc_value;
-        frame->f_exc_traceback = tstate->exc_traceback;
-    }
-    /* Set new exception for this thread. */
-    tmp_type = tstate->exc_type;
-    tmp_value = tstate->exc_value;
-    tmp_tb = tstate->exc_traceback;
-    Py_INCREF(type);
-    Py_XINCREF(value);
-    Py_XINCREF(tb);
-    tstate->exc_type = type;
-    tstate->exc_value = value;
-    tstate->exc_traceback = tb;
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-    /* For b/w compatibility */
-    PySys_SetObject("exc_type", type);
-    PySys_SetObject("exc_value", value);
-    PySys_SetObject("exc_traceback", tb);
-}
-
-static void
-reset_exc_info(PyThreadState *tstate)
-{
-    PyFrameObject *frame;
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-
-    /* It's a precondition that the thread state's frame caught an
-     * exception -- verify in a debug build.
-     */
-    assert(tstate != NULL);
-    frame = tstate->frame;
-    assert(frame != NULL);
-    assert(frame->f_exc_type != NULL);
-
-    /* Copy the frame's exception info back to the thread state. */
-    tmp_type = tstate->exc_type;
-    tmp_value = tstate->exc_value;
-    tmp_tb = tstate->exc_traceback;
-    Py_INCREF(frame->f_exc_type);
-    Py_XINCREF(frame->f_exc_value);
-    Py_XINCREF(frame->f_exc_traceback);
-    tstate->exc_type = frame->f_exc_type;
-    tstate->exc_value = frame->f_exc_value;
-    tstate->exc_traceback = frame->f_exc_traceback;
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-
-    /* For b/w compatibility */
-    PySys_SetObject("exc_type", frame->f_exc_type);
-    PySys_SetObject("exc_value", frame->f_exc_value);
-    PySys_SetObject("exc_traceback", frame->f_exc_traceback);
-
-    /* Clear the frame's exception info. */
-    tmp_type = frame->f_exc_type;
-    tmp_value = frame->f_exc_value;
-    tmp_tb = frame->f_exc_traceback;
-    frame->f_exc_type = NULL;
-    frame->f_exc_value = NULL;
-    frame->f_exc_traceback = NULL;
-    Py_DECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-}
-
-/* Logic for the raise statement (too complicated for inlining).
-   This *consumes* a reference count to each of its arguments. */
-static enum why_code
-do_raise(PyObject *type, PyObject *value, PyObject *tb)
-{
-    if (type == NULL) {
-        /* Reraise */
-        PyThreadState *tstate = PyThreadState_GET();
-        type = tstate->exc_type == NULL ? Py_None : tstate->exc_type;
-        value = tstate->exc_value;
-        tb = tstate->exc_traceback;
-        Py_XINCREF(type);
-        Py_XINCREF(value);
-        Py_XINCREF(tb);
-    }
-
-    /* We support the following forms of raise:
-       raise <class>, <classinstance>
-       raise <class>, <argument tuple>
-       raise <class>, None
-       raise <class>, <argument>
-       raise <classinstance>, None
-       raise <string>, <object>
-       raise <string>, None
-
-       An omitted second argument is the same as None.
-
-       In addition, raise <tuple>, <anything> is the same as
-       raising the tuple's first item (and it better have one!);
-       this rule is applied recursively.
-
-       Finally, an optional third argument can be supplied, which
-       gives the traceback to be substituted (useful when
-       re-raising an exception after examining it).  */
-
-    /* First, check the traceback argument, replacing None with
-       NULL. */
-    if (tb == Py_None) {
-        Py_DECREF(tb);
-        tb = NULL;
-    }
-    else if (tb != NULL && !PyTraceBack_Check(tb)) {
-        PyErr_SetString(PyExc_TypeError,
-                   "raise: arg 3 must be a traceback or None");
-        goto raise_error;
-    }
-
-    /* Next, replace a missing value with None */
-    if (value == NULL) {
-        value = Py_None;
-        Py_INCREF(value);
-    }
-
-    /* Next, repeatedly, replace a tuple exception with its first item */
-    while (PyTuple_Check(type) && PyTuple_Size(type) > 0) {
-        PyObject *tmp = type;
-        type = PyTuple_GET_ITEM(type, 0);
-        Py_INCREF(type);
-        Py_DECREF(tmp);
-    }
-
-    if (PyExceptionClass_Check(type))
-        PyErr_NormalizeException(&type, &value, &tb);
-
-    else if (PyExceptionInstance_Check(type)) {
-        /* Raising an instance.  The value should be a dummy. */
-        if (value != Py_None) {
-            PyErr_SetString(PyExc_TypeError,
-              "instance exception may not have a separate value");
-            goto raise_error;
-        }
-        else {
-            /* Normalize to raise <class>, <instance> */
-            Py_DECREF(value);
-            value = type;
-            type = PyExceptionInstance_Class(type);
-            Py_INCREF(type);
-        }
-    }
-    else {
-        /* Not something you can raise.  You get an exception
-           anyway, just not what you specified :-) */
-        PyErr_Format(PyExc_TypeError,
-                     "exceptions must be old-style classes or "
-                     "derived from BaseException, not %s",
-                     type->ob_type->tp_name);
-        goto raise_error;
-    }
-
-    assert(PyExceptionClass_Check(type));
-    if (Py_Py3kWarningFlag && PyClass_Check(type)) {
-        if (PyErr_WarnEx(PyExc_DeprecationWarning,
-                        "exceptions must derive from BaseException "
-                        "in 3.x", 1) < 0)
-            goto raise_error;
-    }
-
-    PyErr_Restore(type, value, tb);
-    if (tb == NULL)
-        return WHY_EXCEPTION;
-    else
-        return WHY_RERAISE;
- raise_error:
-    Py_XDECREF(value);
-    Py_XDECREF(type);
-    Py_XDECREF(tb);
-    return WHY_EXCEPTION;
-}
-
-/* Iterate v argcnt times and store the results on the stack (via decreasing
-   sp).  Return 1 for success, 0 if error. */
-
-static int
-unpack_iterable(PyObject *v, int argcnt, PyObject **sp)
-{
-    int i = 0;
-    PyObject *it;  /* iter(v) */
-    PyObject *w;
-
-    assert(v != NULL);
-
-    it = PyObject_GetIter(v);
-    if (it == NULL)
-        goto Error;
-
-    for (; i < argcnt; i++) {
-        w = PyIter_Next(it);
-        if (w == NULL) {
-            /* Iterator done, via error or exhaustion. */
-            if (!PyErr_Occurred()) {
-                PyErr_Format(PyExc_ValueError,
-                    "need more than %d value%s to unpack",
-                    i, i == 1 ? "" : "s");
-            }
-            goto Error;
-        }
-        *--sp = w;
-    }
-
-    /* We better have exhausted the iterator now. */
-    w = PyIter_Next(it);
-    if (w == NULL) {
-        if (PyErr_Occurred())
-            goto Error;
-        Py_DECREF(it);
-        return 1;
-    }
-    Py_DECREF(w);
-    PyErr_SetString(PyExc_ValueError, "too many values to unpack");
-    /* fall through */
-Error:
-    for (; i > 0; i--, sp++)
-        Py_DECREF(*sp);
-    Py_XDECREF(it);
-    return 0;
-}
-
-
-#ifdef LLTRACE
-static int
-prtrace(PyObject *v, char *str)
-{
-    printf("%s ", str);
-    if (PyObject_Print(v, stdout, 0) != 0)
-        PyErr_Clear(); /* Don't know what else to do */
-    printf("\n");
-    return 1;
-}
-#endif
-
-static void
-call_exc_trace(Py_tracefunc func, PyObject *self, PyFrameObject *f)
-{
-    PyObject *type, *value, *traceback, *arg;
-    int err;
-    PyErr_Fetch(&type, &value, &traceback);
-    if (value == NULL) {
-        value = Py_None;
-        Py_INCREF(value);
-    }
-    arg = PyTuple_Pack(3, type, value, traceback);
-    if (arg == NULL) {
-        PyErr_Restore(type, value, traceback);
-        return;
-    }
-    err = call_trace(func, self, f, PyTrace_EXCEPTION, arg);
-    Py_DECREF(arg);
-    if (err == 0)
-        PyErr_Restore(type, value, traceback);
-    else {
-        Py_XDECREF(type);
-        Py_XDECREF(value);
-        Py_XDECREF(traceback);
-    }
-}
-
-static int
-call_trace_protected(Py_tracefunc func, PyObject *obj, PyFrameObject *frame,
-                     int what, PyObject *arg)
-{
-    PyObject *type, *value, *traceback;
-    int err;
-    PyErr_Fetch(&type, &value, &traceback);
-    err = call_trace(func, obj, frame, what, arg);
-    if (err == 0)
-    {
-        PyErr_Restore(type, value, traceback);
-        return 0;
-    }
-    else {
-        Py_XDECREF(type);
-        Py_XDECREF(value);
-        Py_XDECREF(traceback);
-        return -1;
-    }
-}
-
-static int
-call_trace(Py_tracefunc func, PyObject *obj, PyFrameObject *frame,
-           int what, PyObject *arg)
-{
-    register PyThreadState *tstate = frame->f_tstate;
-    int result;
-    if (tstate->tracing)
-        return 0;
-    tstate->tracing++;
-    tstate->use_tracing = 0;
-    result = func(obj, frame, what, arg);
-    tstate->use_tracing = ((tstate->c_tracefunc != NULL)
-                           || (tstate->c_profilefunc != NULL));
-    tstate->tracing--;
-    return result;
-}
-
-PyObject *
-_PyEval_CallTracing(PyObject *func, PyObject *args)
-{
-    PyFrameObject *frame = PyEval_GetFrame();
-    PyThreadState *tstate = frame->f_tstate;
-    int save_tracing = tstate->tracing;
-    int save_use_tracing = tstate->use_tracing;
-    PyObject *result;
-
-    tstate->tracing = 0;
-    tstate->use_tracing = ((tstate->c_tracefunc != NULL)
-                           || (tstate->c_profilefunc != NULL));
-    result = PyObject_Call(func, args, NULL);
-    tstate->tracing = save_tracing;
-    tstate->use_tracing = save_use_tracing;
-    return result;
-}
-
-/* See Objects/lnotab_notes.txt for a description of how tracing works. */
-static int
-maybe_call_line_trace(Py_tracefunc func, PyObject *obj,
-                      PyFrameObject *frame, int *instr_lb, int *instr_ub,
-                      int *instr_prev)
-{
-    int result = 0;
-    int line = frame->f_lineno;
-
-    /* If the last instruction executed isn't in the current
-       instruction window, reset the window.
-    */
-    if (frame->f_lasti < *instr_lb || frame->f_lasti >= *instr_ub) {
-        PyAddrPair bounds;
-        line = _PyCode_CheckLineNumber(frame->f_code, frame->f_lasti,
-                                       &bounds);
-        *instr_lb = bounds.ap_lower;
-        *instr_ub = bounds.ap_upper;
-    }
-    /* If the last instruction falls at the start of a line or if
-       it represents a jump backwards, update the frame's line
-       number and call the trace function. */
-    if (frame->f_lasti == *instr_lb || frame->f_lasti < *instr_prev) {
-        frame->f_lineno = line;
-        result = call_trace(func, obj, frame, PyTrace_LINE, Py_None);
-    }
-    *instr_prev = frame->f_lasti;
-    return result;
-}
-
-void
-PyEval_SetProfile(Py_tracefunc func, PyObject *arg)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-    PyObject *temp = tstate->c_profileobj;
-    Py_XINCREF(arg);
-    tstate->c_profilefunc = NULL;
-    tstate->c_profileobj = NULL;
-    /* Must make sure that tracing is not ignored if 'temp' is freed */
-    tstate->use_tracing = tstate->c_tracefunc != NULL;
-    Py_XDECREF(temp);
-    tstate->c_profilefunc = func;
-    tstate->c_profileobj = arg;
-    /* Flag that tracing or profiling is turned on */
-    tstate->use_tracing = (func != NULL) || (tstate->c_tracefunc != NULL);
-}
-
-void
-PyEval_SetTrace(Py_tracefunc func, PyObject *arg)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-    PyObject *temp = tstate->c_traceobj;
-    _Py_TracingPossible += (func != NULL) - (tstate->c_tracefunc != NULL);
-    Py_XINCREF(arg);
-    tstate->c_tracefunc = NULL;
-    tstate->c_traceobj = NULL;
-    /* Must make sure that profiling is not ignored if 'temp' is freed */
-    tstate->use_tracing = tstate->c_profilefunc != NULL;
-    Py_XDECREF(temp);
-    tstate->c_tracefunc = func;
-    tstate->c_traceobj = arg;
-    /* Flag that tracing or profiling is turned on */
-    tstate->use_tracing = ((func != NULL)
-                           || (tstate->c_profilefunc != NULL));
-}
-
-PyObject *
-PyEval_GetBuiltins(void)
-{
-    PyFrameObject *current_frame = PyEval_GetFrame();
-    if (current_frame == NULL)
-        return PyThreadState_GET()->interp->builtins;
-    else
-        return current_frame->f_builtins;
-}
-
-PyObject *
-PyEval_GetLocals(void)
-{
-    PyFrameObject *current_frame = PyEval_GetFrame();
-    if (current_frame == NULL)
-        return NULL;
-    PyFrame_FastToLocals(current_frame);
-    return current_frame->f_locals;
-}
-
-PyObject *
-PyEval_GetGlobals(void)
-{
-    PyFrameObject *current_frame = PyEval_GetFrame();
-    if (current_frame == NULL)
-        return NULL;
-    else
-        return current_frame->f_globals;
-}
-
-PyFrameObject *
-PyEval_GetFrame(void)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-    return _PyThreadState_GetFrame(tstate);
-}
-
-int
-PyEval_GetRestricted(void)
-{
-    PyFrameObject *current_frame = PyEval_GetFrame();
-    return current_frame == NULL ? 0 : PyFrame_IsRestricted(current_frame);
-}
-
-int
-PyEval_MergeCompilerFlags(PyCompilerFlags *cf)
-{
-    PyFrameObject *current_frame = PyEval_GetFrame();
-    int result = cf->cf_flags != 0;
-
-    if (current_frame != NULL) {
-        const int codeflags = current_frame->f_code->co_flags;
-        const int compilerflags = codeflags & PyCF_MASK;
-        if (compilerflags) {
-            result = 1;
-            cf->cf_flags |= compilerflags;
-        }
-#if 0 /* future keyword */
-        if (codeflags & CO_GENERATOR_ALLOWED) {
-            result = 1;
-            cf->cf_flags |= CO_GENERATOR_ALLOWED;
-        }
-#endif
-    }
-    return result;
-}
-
-int
-Py_FlushLine(void)
-{
-    PyObject *f = PySys_GetObject("stdout");
-    if (f == NULL)
-        return 0;
-    if (!PyFile_SoftSpace(f, 0))
-        return 0;
-    return PyFile_WriteString("\n", f);
-}
-
-
-/* External interface to call any callable object.
-   The arg must be a tuple or NULL.  The kw must be a dict or NULL. */
-
-PyObject *
-PyEval_CallObjectWithKeywords(PyObject *func, PyObject *arg, PyObject *kw)
-{
-    PyObject *result;
-
-    if (arg == NULL) {
-        arg = PyTuple_New(0);
-        if (arg == NULL)
-            return NULL;
-    }
-    else if (!PyTuple_Check(arg)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "argument list must be a tuple");
-        return NULL;
-    }
-    else
-        Py_INCREF(arg);
-
-    if (kw != NULL && !PyDict_Check(kw)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "keyword list must be a dictionary");
-        Py_DECREF(arg);
-        return NULL;
-    }
-
-    result = PyObject_Call(func, arg, kw);
-    Py_DECREF(arg);
-    return result;
-}
-
-const char *
-PyEval_GetFuncName(PyObject *func)
-{
-    if (PyMethod_Check(func))
-        return PyEval_GetFuncName(PyMethod_GET_FUNCTION(func));
-    else if (PyFunction_Check(func))
-        return PyString_AsString(((PyFunctionObject*)func)->func_name);
-    else if (PyCFunction_Check(func))
-        return ((PyCFunctionObject*)func)->m_ml->ml_name;
-    else if (PyClass_Check(func))
-        return PyString_AsString(((PyClassObject*)func)->cl_name);
-    else if (PyInstance_Check(func)) {
-        return PyString_AsString(
-            ((PyInstanceObject*)func)->in_class->cl_name);
-    } else {
-        return func->ob_type->tp_name;
-    }
-}
-
-const char *
-PyEval_GetFuncDesc(PyObject *func)
-{
-    if (PyMethod_Check(func))
-        return "()";
-    else if (PyFunction_Check(func))
-        return "()";
-    else if (PyCFunction_Check(func))
-        return "()";
-    else if (PyClass_Check(func))
-        return " constructor";
-    else if (PyInstance_Check(func)) {
-        return " instance";
-    } else {
-        return " object";
-    }
-}
-
-static void
-err_args(PyObject *func, int flags, int nargs)
-{
-    if (flags & METH_NOARGS)
-        PyErr_Format(PyExc_TypeError,
-                     "%.200s() takes no arguments (%d given)",
-                     ((PyCFunctionObject *)func)->m_ml->ml_name,
-                     nargs);
-    else
-        PyErr_Format(PyExc_TypeError,
-                     "%.200s() takes exactly one argument (%d given)",
-                     ((PyCFunctionObject *)func)->m_ml->ml_name,
-                     nargs);
-}
-
-#define C_TRACE(x, call) \
-if (tstate->use_tracing && tstate->c_profilefunc) { \
-    if (call_trace(tstate->c_profilefunc, \
-        tstate->c_profileobj, \
-        tstate->frame, PyTrace_C_CALL, \
-        func)) { \
-        x = NULL; \
-    } \
-    else { \
-        x = call; \
-        if (tstate->c_profilefunc != NULL) { \
-            if (x == NULL) { \
-                call_trace_protected(tstate->c_profilefunc, \
-                    tstate->c_profileobj, \
-                    tstate->frame, PyTrace_C_EXCEPTION, \
-                    func); \
-                /* XXX should pass (type, value, tb) */ \
-            } else { \
-                if (call_trace(tstate->c_profilefunc, \
-                    tstate->c_profileobj, \
-                    tstate->frame, PyTrace_C_RETURN, \
-                    func)) { \
-                    Py_DECREF(x); \
-                    x = NULL; \
-                } \
-            } \
-        } \
-    } \
-} else { \
-    x = call; \
-    }
-
-static PyObject *
-call_function(PyObject ***pp_stack, int oparg
-#ifdef WITH_TSC
-                , uint64* pintr0, uint64* pintr1
-#endif
-                )
-{
-    int na = oparg & 0xff;
-    int nk = (oparg>>8) & 0xff;
-    int n = na + 2 * nk;
-    PyObject **pfunc = (*pp_stack) - n - 1;
-    PyObject *func = *pfunc;
-    PyObject *x, *w;
-
-    /* Always dispatch PyCFunction first, because these are
-       presumed to be the most frequent callable object.
-    */
-    if (PyCFunction_Check(func) && nk == 0) {
-        int flags = PyCFunction_GET_FLAGS(func);
-        PyThreadState *tstate = PyThreadState_GET();
-
-        PCALL(PCALL_CFUNCTION);
-        if (flags & (METH_NOARGS | METH_O)) {
-            PyCFunction meth = PyCFunction_GET_FUNCTION(func);
-            PyObject *self = PyCFunction_GET_SELF(func);
-            if (flags & METH_NOARGS && na == 0) {
-                C_TRACE(x, (*meth)(self,NULL));
-            }
-            else if (flags & METH_O && na == 1) {
-                PyObject *arg = EXT_POP(*pp_stack);
-                C_TRACE(x, (*meth)(self,arg));
-                Py_DECREF(arg);
-            }
-            else {
-                err_args(func, flags, na);
-                x = NULL;
-            }
-        }
-        else {
-            PyObject *callargs;
-            callargs = load_args(pp_stack, na);
-            READ_TIMESTAMP(*pintr0);
-            C_TRACE(x, PyCFunction_Call(func,callargs,NULL));
-            READ_TIMESTAMP(*pintr1);
-            Py_XDECREF(callargs);
-        }
-    } else {
-        if (PyMethod_Check(func) && PyMethod_GET_SELF(func) != NULL) {
-            /* optimize access to bound methods */
-            PyObject *self = PyMethod_GET_SELF(func);
-            PCALL(PCALL_METHOD);
-            PCALL(PCALL_BOUND_METHOD);
-            Py_INCREF(self);
-            func = PyMethod_GET_FUNCTION(func);
-            Py_INCREF(func);
-            Py_DECREF(*pfunc);
-            *pfunc = self;
-            na++;
-            n++;
-        } else
-            Py_INCREF(func);
-        READ_TIMESTAMP(*pintr0);
-        if (PyFunction_Check(func))
-            x = fast_function(func, pp_stack, n, na, nk);
-        else
-            x = do_call(func, pp_stack, na, nk);
-        READ_TIMESTAMP(*pintr1);
-        Py_DECREF(func);
-    }
-
-    /* Clear the stack of the function object.  Also removes
-       the arguments in case they weren't consumed already
-       (fast_function() and err_args() leave them on the stack).
-     */
-    while ((*pp_stack) > pfunc) {
-        w = EXT_POP(*pp_stack);
-        Py_DECREF(w);
-        PCALL(PCALL_POP);
-    }
-    return x;
-}
-
-/* The fast_function() function optimize calls for which no argument
-   tuple is necessary; the objects are passed directly from the stack.
-   For the simplest case -- a function that takes only positional
-   arguments and is called with only positional arguments -- it
-   inlines the most primitive frame setup code from
-   PyEval_EvalCodeEx(), which vastly reduces the checks that must be
-   done before evaluating the frame.
-*/
-
-static PyObject *
-fast_function(PyObject *func, PyObject ***pp_stack, int n, int na, int nk)
-{
-    PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
-    PyObject *globals = PyFunction_GET_GLOBALS(func);
-    PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
-    PyObject **d = NULL;
-    int nd = 0;
-
-    PCALL(PCALL_FUNCTION);
-    PCALL(PCALL_FAST_FUNCTION);
-    if (argdefs == NULL && co->co_argcount == n && nk==0 &&
-        co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
-        PyFrameObject *f;
-        PyObject *retval = NULL;
-        PyThreadState *tstate = PyThreadState_GET();
-        PyObject **fastlocals, **stack;
-        int i;
-
-        PCALL(PCALL_FASTER_FUNCTION);
-        assert(globals != NULL);
-        /* XXX Perhaps we should create a specialized
-           PyFrame_New() that doesn't take locals, but does
-           take builtins without sanity checking them.
-        */
-        assert(tstate != NULL);
-        f = PyFrame_New(tstate, co, globals, NULL);
-        if (f == NULL)
-            return NULL;
-
-        fastlocals = f->f_localsplus;
-        stack = (*pp_stack) - n;
-
-        for (i = 0; i < n; i++) {
-            Py_INCREF(*stack);
-            fastlocals[i] = *stack++;
-        }
-        retval = PyEval_EvalFrameEx(f,0);
-        ++tstate->recursion_depth;
-        Py_DECREF(f);
-        --tstate->recursion_depth;
-        return retval;
-    }
-    if (argdefs != NULL) {
-        d = &PyTuple_GET_ITEM(argdefs, 0);
-        nd = Py_SIZE(argdefs);
-    }
-    return PyEval_EvalCodeEx(co, globals,
-                             (PyObject *)NULL, (*pp_stack)-n, na,
-                             (*pp_stack)-2*nk, nk, d, nd,
-                             PyFunction_GET_CLOSURE(func));
-}
-
-static PyObject *
-update_keyword_args(PyObject *orig_kwdict, int nk, PyObject ***pp_stack,
-                    PyObject *func)
-{
-    PyObject *kwdict = NULL;
-    if (orig_kwdict == NULL)
-        kwdict = PyDict_New();
-    else {
-        kwdict = PyDict_Copy(orig_kwdict);
-        Py_DECREF(orig_kwdict);
-    }
-    if (kwdict == NULL)
-        return NULL;
-    while (--nk >= 0) {
-        int err;
-        PyObject *value = EXT_POP(*pp_stack);
-        PyObject *key = EXT_POP(*pp_stack);
-        if (PyDict_GetItem(kwdict, key) != NULL) {
-            PyErr_Format(PyExc_TypeError,
-                         "%.200s%s got multiple values "
-                         "for keyword argument '%.200s'",
-                         PyEval_GetFuncName(func),
-                         PyEval_GetFuncDesc(func),
-                         PyString_AsString(key));
-            Py_DECREF(key);
-            Py_DECREF(value);
-            Py_DECREF(kwdict);
-            return NULL;
-        }
-        err = PyDict_SetItem(kwdict, key, value);
-        Py_DECREF(key);
-        Py_DECREF(value);
-        if (err) {
-            Py_DECREF(kwdict);
-            return NULL;
-        }
-    }
-    return kwdict;
-}
-
-static PyObject *
-update_star_args(int nstack, int nstar, PyObject *stararg,
-                 PyObject ***pp_stack)
-{
-    PyObject *callargs, *w;
-
-    callargs = PyTuple_New(nstack + nstar);
-    if (callargs == NULL) {
-        return NULL;
-    }
-    if (nstar) {
-        int i;
-        for (i = 0; i < nstar; i++) {
-            PyObject *a = PyTuple_GET_ITEM(stararg, i);
-            Py_INCREF(a);
-            PyTuple_SET_ITEM(callargs, nstack + i, a);
-        }
-    }
-    while (--nstack >= 0) {
-        w = EXT_POP(*pp_stack);
-        PyTuple_SET_ITEM(callargs, nstack, w);
-    }
-    return callargs;
-}
-
-static PyObject *
-load_args(PyObject ***pp_stack, int na)
-{
-    PyObject *args = PyTuple_New(na);
-    PyObject *w;
-
-    if (args == NULL)
-        return NULL;
-    while (--na >= 0) {
-        w = EXT_POP(*pp_stack);
-        PyTuple_SET_ITEM(args, na, w);
-    }
-    return args;
-}
-
-static PyObject *
-do_call(PyObject *func, PyObject ***pp_stack, int na, int nk)
-{
-    PyObject *callargs = NULL;
-    PyObject *kwdict = NULL;
-    PyObject *result = NULL;
-
-    if (nk > 0) {
-        kwdict = update_keyword_args(NULL, nk, pp_stack, func);
-        if (kwdict == NULL)
-            goto call_fail;
-    }
-    callargs = load_args(pp_stack, na);
-    if (callargs == NULL)
-        goto call_fail;
-#ifdef CALL_PROFILE
-    /* At this point, we have to look at the type of func to
-       update the call stats properly.  Do it here so as to avoid
-       exposing the call stats machinery outside ceval.c
-    */
-    if (PyFunction_Check(func))
-        PCALL(PCALL_FUNCTION);
-    else if (PyMethod_Check(func))
-        PCALL(PCALL_METHOD);
-    else if (PyType_Check(func))
-        PCALL(PCALL_TYPE);
-    else if (PyCFunction_Check(func))
-        PCALL(PCALL_CFUNCTION);
-    else
-        PCALL(PCALL_OTHER);
-#endif
-    if (PyCFunction_Check(func)) {
-        PyThreadState *tstate = PyThreadState_GET();
-        C_TRACE(result, PyCFunction_Call(func, callargs, kwdict));
-    }
-    else
-        result = PyObject_Call(func, callargs, kwdict);
- call_fail:
-    Py_XDECREF(callargs);
-    Py_XDECREF(kwdict);
-    return result;
-}
-
-static PyObject *
-ext_do_call(PyObject *func, PyObject ***pp_stack, int flags, int na, int nk)
-{
-    int nstar = 0;
-    PyObject *callargs = NULL;
-    PyObject *stararg = NULL;
-    PyObject *kwdict = NULL;
-    PyObject *result = NULL;
-
-    if (flags & CALL_FLAG_KW) {
-        kwdict = EXT_POP(*pp_stack);
-        if (!PyDict_Check(kwdict)) {
-            PyObject *d;
-            d = PyDict_New();
-            if (d == NULL)
-                goto ext_call_fail;
-            if (PyDict_Update(d, kwdict) != 0) {
-                Py_DECREF(d);
-                /* PyDict_Update raises attribute
-                 * error (percolated from an attempt
-                 * to get 'keys' attribute) instead of
-                 * a type error if its second argument
-                 * is not a mapping.
-                 */
-                if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
-                    PyErr_Format(PyExc_TypeError,
-                                 "%.200s%.200s argument after ** "
-                                 "must be a mapping, not %.200s",
-                                 PyEval_GetFuncName(func),
-                                 PyEval_GetFuncDesc(func),
-                                 kwdict->ob_type->tp_name);
-                }
-                goto ext_call_fail;
-            }
-            Py_DECREF(kwdict);
-            kwdict = d;
-        }
-    }
-    if (flags & CALL_FLAG_VAR) {
-        stararg = EXT_POP(*pp_stack);
-        if (!PyTuple_Check(stararg)) {
-            PyObject *t = NULL;
-            t = PySequence_Tuple(stararg);
-            if (t == NULL) {
-                if (PyErr_ExceptionMatches(PyExc_TypeError)) {
-                    PyErr_Format(PyExc_TypeError,
-                                 "%.200s%.200s argument after * "
-                                 "must be a sequence, not %200s",
-                                 PyEval_GetFuncName(func),
-                                 PyEval_GetFuncDesc(func),
-                                 stararg->ob_type->tp_name);
-                }
-                goto ext_call_fail;
-            }
-            Py_DECREF(stararg);
-            stararg = t;
-        }
-        nstar = PyTuple_GET_SIZE(stararg);
-    }
-    if (nk > 0) {
-        kwdict = update_keyword_args(kwdict, nk, pp_stack, func);
-        if (kwdict == NULL)
-            goto ext_call_fail;
-    }
-    callargs = update_star_args(na, nstar, stararg, pp_stack);
-    if (callargs == NULL)
-        goto ext_call_fail;
-#ifdef CALL_PROFILE
-    /* At this point, we have to look at the type of func to
-       update the call stats properly.  Do it here so as to avoid
-       exposing the call stats machinery outside ceval.c
-    */
-    if (PyFunction_Check(func))
-        PCALL(PCALL_FUNCTION);
-    else if (PyMethod_Check(func))
-        PCALL(PCALL_METHOD);
-    else if (PyType_Check(func))
-        PCALL(PCALL_TYPE);
-    else if (PyCFunction_Check(func))
-        PCALL(PCALL_CFUNCTION);
-    else
-        PCALL(PCALL_OTHER);
-#endif
-    if (PyCFunction_Check(func)) {
-        PyThreadState *tstate = PyThreadState_GET();
-        C_TRACE(result, PyCFunction_Call(func, callargs, kwdict));
-    }
-    else
-        result = PyObject_Call(func, callargs, kwdict);
-ext_call_fail:
-    Py_XDECREF(callargs);
-    Py_XDECREF(kwdict);
-    Py_XDECREF(stararg);
-    return result;
-}
-
-/* Extract a slice index from a PyInt or PyLong or an object with the
-   nb_index slot defined, and store in *pi.
-   Silently reduce values larger than PY_SSIZE_T_MAX to PY_SSIZE_T_MAX,
-   and silently boost values less than -PY_SSIZE_T_MAX-1 to -PY_SSIZE_T_MAX-1.
-   Return 0 on error, 1 on success.
-*/
-/* Note:  If v is NULL, return success without storing into *pi.  This
-   is because_PyEval_SliceIndex() is called by apply_slice(), which can be
-   called by the SLICE opcode with v and/or w equal to NULL.
-*/
-int
-_PyEval_SliceIndex(PyObject *v, Py_ssize_t *pi)
-{
-    if (v != NULL) {
-        Py_ssize_t x;
-        if (PyInt_Check(v)) {
-            /* XXX(nnorwitz): I think PyInt_AS_LONG is correct,
-               however, it looks like it should be AsSsize_t.
-               There should be a comment here explaining why.
-            */
-            x = PyInt_AS_LONG(v);
-        }
-        else if (PyIndex_Check(v)) {
-            x = PyNumber_AsSsize_t(v, NULL);
-            if (x == -1 && PyErr_Occurred())
-                return 0;
-        }
-        else {
-            PyErr_SetString(PyExc_TypeError,
-                            "slice indices must be integers or "
-                            "None or have an __index__ method");
-            return 0;
-        }
-        *pi = x;
-    }
-    return 1;
-}
-
-#undef ISINDEX
-#define ISINDEX(x) ((x) == NULL || \
-                    PyInt_Check(x) || PyLong_Check(x) || PyIndex_Check(x))
-
-static PyObject *
-apply_slice(PyObject *u, PyObject *v, PyObject *w) /* return u[v:w] */
-{
-    PyTypeObject *tp = u->ob_type;
-    PySequenceMethods *sq = tp->tp_as_sequence;
-
-    if (sq && sq->sq_slice && ISINDEX(v) && ISINDEX(w)) {
-        Py_ssize_t ilow = 0, ihigh = PY_SSIZE_T_MAX;
-        if (!_PyEval_SliceIndex(v, &ilow))
-            return NULL;
-        if (!_PyEval_SliceIndex(w, &ihigh))
-            return NULL;
-        return PySequence_GetSlice(u, ilow, ihigh);
-    }
-    else {
-        PyObject *slice = PySlice_New(v, w, NULL);
-        if (slice != NULL) {
-            PyObject *res = PyObject_GetItem(u, slice);
-            Py_DECREF(slice);
-            return res;
-        }
-        else
-            return NULL;
-    }
-}
-
-static int
-assign_slice(PyObject *u, PyObject *v, PyObject *w, PyObject *x)
-    /* u[v:w] = x */
-{
-    PyTypeObject *tp = u->ob_type;
-    PySequenceMethods *sq = tp->tp_as_sequence;
-
-    if (sq && sq->sq_ass_slice && ISINDEX(v) && ISINDEX(w)) {
-        Py_ssize_t ilow = 0, ihigh = PY_SSIZE_T_MAX;
-        if (!_PyEval_SliceIndex(v, &ilow))
-            return -1;
-        if (!_PyEval_SliceIndex(w, &ihigh))
-            return -1;
-        if (x == NULL)
-            return PySequence_DelSlice(u, ilow, ihigh);
-        else
-            return PySequence_SetSlice(u, ilow, ihigh, x);
-    }
-    else {
-        PyObject *slice = PySlice_New(v, w, NULL);
-        if (slice != NULL) {
-            int res;
-            if (x != NULL)
-                res = PyObject_SetItem(u, slice, x);
-            else
-                res = PyObject_DelItem(u, slice);
-            Py_DECREF(slice);
-            return res;
-        }
-        else
-            return -1;
-    }
-}
-
-#define Py3kExceptionClass_Check(x)     \
-    (PyType_Check((x)) &&               \
-     PyType_FastSubclass((PyTypeObject*)(x), Py_TPFLAGS_BASE_EXC_SUBCLASS))
-
-#define CANNOT_CATCH_MSG "catching classes that don't inherit from " \
-                         "BaseException is not allowed in 3.x"
-
-static PyObject *
-cmp_outcome(int op, register PyObject *v, register PyObject *w)
-{
-    int res = 0;
-    switch (op) {
-    case PyCmp_IS:
-        res = (v == w);
-        break;
-    case PyCmp_IS_NOT:
-        res = (v != w);
-        break;
-    case PyCmp_IN:
-        res = PySequence_Contains(w, v);
-        if (res < 0)
-            return NULL;
-        break;
-    case PyCmp_NOT_IN:
-        res = PySequence_Contains(w, v);
-        if (res < 0)
-            return NULL;
-        res = !res;
-        break;
-    case PyCmp_EXC_MATCH:
-        if (PyTuple_Check(w)) {
-            Py_ssize_t i, length;
-            length = PyTuple_Size(w);
-            for (i = 0; i < length; i += 1) {
-                PyObject *exc = PyTuple_GET_ITEM(w, i);
-                if (PyString_Check(exc)) {
-                    int ret_val;
-                    ret_val = PyErr_WarnEx(
-                        PyExc_DeprecationWarning,
-                        "catching of string "
-                        "exceptions is deprecated", 1);
-                    if (ret_val < 0)
-                        return NULL;
-                }
-                else if (Py_Py3kWarningFlag  &&
-                         !PyTuple_Check(exc) &&
-                         !Py3kExceptionClass_Check(exc))
-                {
-                    int ret_val;
-                    ret_val = PyErr_WarnEx(
-                        PyExc_DeprecationWarning,
-                        CANNOT_CATCH_MSG, 1);
-                    if (ret_val < 0)
-                        return NULL;
-                }
-            }
-        }
-        else {
-            if (PyString_Check(w)) {
-                int ret_val;
-                ret_val = PyErr_WarnEx(
-                                PyExc_DeprecationWarning,
-                                "catching of string "
-                                "exceptions is deprecated", 1);
-                if (ret_val < 0)
-                    return NULL;
-            }
-            else if (Py_Py3kWarningFlag  &&
-                     !PyTuple_Check(w) &&
-                     !Py3kExceptionClass_Check(w))
-            {
-                int ret_val;
-                ret_val = PyErr_WarnEx(
-                    PyExc_DeprecationWarning,
-                    CANNOT_CATCH_MSG, 1);
-                if (ret_val < 0)
-                    return NULL;
-            }
-        }
-        res = PyErr_GivenExceptionMatches(v, w);
-        break;
-    default:
-        return PyObject_RichCompare(v, w, op);
-    }
-    v = res ? Py_True : Py_False;
-    Py_INCREF(v);
-    return v;
-}
-
-static PyObject *
-import_from(PyObject *v, PyObject *name)
-{
-    PyObject *x;
-
-    x = PyObject_GetAttr(v, name);
-    if (x == NULL && PyErr_ExceptionMatches(PyExc_AttributeError)) {
-        PyErr_Format(PyExc_ImportError,
-                     "cannot import name %.230s",
-                     PyString_AsString(name));
-    }
-    return x;
-}
-
-static int
-import_all_from(PyObject *locals, PyObject *v)
-{
-    PyObject *all = PyObject_GetAttrString(v, "__all__");
-    PyObject *dict, *name, *value;
-    int skip_leading_underscores = 0;
-    int pos, err;
-
-    if (all == NULL) {
-        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-            return -1; /* Unexpected error */
-        PyErr_Clear();
-        dict = PyObject_GetAttrString(v, "__dict__");
-        if (dict == NULL) {
-            if (!PyErr_ExceptionMatches(PyExc_AttributeError))
-                return -1;
-            PyErr_SetString(PyExc_ImportError,
-            "from-import-* object has no __dict__ and no __all__");
-            return -1;
-        }
-        all = PyMapping_Keys(dict);
-        Py_DECREF(dict);
-        if (all == NULL)
-            return -1;
-        skip_leading_underscores = 1;
-    }
-
-    for (pos = 0, err = 0; ; pos++) {
-        name = PySequence_GetItem(all, pos);
-        if (name == NULL) {
-            if (!PyErr_ExceptionMatches(PyExc_IndexError))
-                err = -1;
-            else
-                PyErr_Clear();
-            break;
-        }
-        if (skip_leading_underscores &&
-            PyString_Check(name) &&
-            PyString_AS_STRING(name)[0] == '_')
-        {
-            Py_DECREF(name);
-            continue;
-        }
-        value = PyObject_GetAttr(v, name);
-        if (value == NULL)
-            err = -1;
-        else if (PyDict_CheckExact(locals))
-            err = PyDict_SetItem(locals, name, value);
-        else
-            err = PyObject_SetItem(locals, name, value);
-        Py_DECREF(name);
-        Py_XDECREF(value);
-        if (err != 0)
-            break;
-    }
-    Py_DECREF(all);
-    return err;
-}
-
-static PyObject *
-build_class(PyObject *methods, PyObject *bases, PyObject *name)
-{
-    PyObject *metaclass = NULL, *result, *base;
-
-    if (PyDict_Check(methods))
-        metaclass = PyDict_GetItemString(methods, "__metaclass__");
-    if (metaclass != NULL)
-        Py_INCREF(metaclass);
-    else if (PyTuple_Check(bases) && PyTuple_GET_SIZE(bases) > 0) {
-        base = PyTuple_GET_ITEM(bases, 0);
-        metaclass = PyObject_GetAttrString(base, "__class__");
-        if (metaclass == NULL) {
-            PyErr_Clear();
-            metaclass = (PyObject *)base->ob_type;
-            Py_INCREF(metaclass);
-        }
-    }
-    else {
-        PyObject *g = PyEval_GetGlobals();
-        if (g != NULL && PyDict_Check(g))
-            metaclass = PyDict_GetItemString(g, "__metaclass__");
-        if (metaclass == NULL)
-            metaclass = (PyObject *) &PyClass_Type;
-        Py_INCREF(metaclass);
-    }
-    result = PyObject_CallFunctionObjArgs(metaclass, name, bases, methods,
-                                          NULL);
-    Py_DECREF(metaclass);
-    if (result == NULL && PyErr_ExceptionMatches(PyExc_TypeError)) {
-        /* A type error here likely means that the user passed
-           in a base that was not a class (such the random module
-           instead of the random.random type).  Help them out with
-           by augmenting the error message with more information.*/
-
-        PyObject *ptype, *pvalue, *ptraceback;
-
-        PyErr_Fetch(&ptype, &pvalue, &ptraceback);
-        if (PyString_Check(pvalue)) {
-            PyObject *newmsg;
-            newmsg = PyString_FromFormat(
-                "Error when calling the metaclass bases\n"
-                "    %s",
-                PyString_AS_STRING(pvalue));
-            if (newmsg != NULL) {
-                Py_DECREF(pvalue);
-                pvalue = newmsg;
-            }
-        }
-        PyErr_Restore(ptype, pvalue, ptraceback);
-    }
-    return result;
-}
-
-static int
-exec_statement(PyFrameObject *f, PyObject *prog, PyObject *globals,
-               PyObject *locals)
-{
-    int n;
-    PyObject *v;
-    int plain = 0;
-
-    if (PyTuple_Check(prog) && globals == Py_None && locals == Py_None &&
-        ((n = PyTuple_Size(prog)) == 2 || n == 3)) {
-        /* Backward compatibility hack */
-        globals = PyTuple_GetItem(prog, 1);
-        if (n == 3)
-            locals = PyTuple_GetItem(prog, 2);
-        prog = PyTuple_GetItem(prog, 0);
-    }
-    if (globals == Py_None) {
-        globals = PyEval_GetGlobals();
-        if (locals == Py_None) {
-            locals = PyEval_GetLocals();
-            plain = 1;
-        }
-        if (!globals || !locals) {
-            PyErr_SetString(PyExc_SystemError,
-                            "globals and locals cannot be NULL");
-            return -1;
-        }
-    }
-    else if (locals == Py_None)
-        locals = globals;
-    if (!PyString_Check(prog) &&
-#ifdef Py_USING_UNICODE
-        !PyUnicode_Check(prog) &&
-#endif
-        !PyCode_Check(prog) &&
-        !PyFile_Check(prog)) {
-        PyErr_SetString(PyExc_TypeError,
-            "exec: arg 1 must be a string, file, or code object");
-        return -1;
-    }
-    if (!PyDict_Check(globals)) {
-        PyErr_SetString(PyExc_TypeError,
-            "exec: arg 2 must be a dictionary or None");
-        return -1;
-    }
-    if (!PyMapping_Check(locals)) {
-        PyErr_SetString(PyExc_TypeError,
-            "exec: arg 3 must be a mapping or None");
-        return -1;
-    }
-    if (PyDict_GetItemString(globals, "__builtins__") == NULL)
-        PyDict_SetItemString(globals, "__builtins__", f->f_builtins);
-    if (PyCode_Check(prog)) {
-        if (PyCode_GetNumFree((PyCodeObject *)prog) > 0) {
-            PyErr_SetString(PyExc_TypeError,
-        "code object passed to exec may not contain free variables");
-            return -1;
-        }
-        v = PyEval_EvalCode((PyCodeObject *) prog, globals, locals);
-    }
-    else if (PyFile_Check(prog)) {
-        FILE *fp = PyFile_AsFile(prog);
-        char *name = PyString_AsString(PyFile_Name(prog));
-        PyCompilerFlags cf;
-        if (name == NULL)
-            return -1;
-        cf.cf_flags = 0;
-        if (PyEval_MergeCompilerFlags(&cf))
-            v = PyRun_FileFlags(fp, name, Py_file_input, globals,
-                                locals, &cf);
-        else
-            v = PyRun_File(fp, name, Py_file_input, globals,
-                           locals);
-    }
-    else {
-        PyObject *tmp = NULL;
-        char *str;
-        PyCompilerFlags cf;
-        cf.cf_flags = 0;
-#ifdef Py_USING_UNICODE
-        if (PyUnicode_Check(prog)) {
-            tmp = PyUnicode_AsUTF8String(prog);
-            if (tmp == NULL)
-                return -1;
-            prog = tmp;
-            cf.cf_flags |= PyCF_SOURCE_IS_UTF8;
-        }
-#endif
-        if (PyString_AsStringAndSize(prog, &str, NULL))
-            return -1;
-        if (PyEval_MergeCompilerFlags(&cf))
-            v = PyRun_StringFlags(str, Py_file_input, globals,
-                                  locals, &cf);
-        else
-            v = PyRun_String(str, Py_file_input, globals, locals);
-        Py_XDECREF(tmp);
-    }
-    if (plain)
-        PyFrame_LocalsToFast(f, 0);
-    if (v == NULL)
-        return -1;
-    Py_DECREF(v);
-    return 0;
-}
-
-static void
-format_exc_check_arg(PyObject *exc, char *format_str, PyObject *obj)
-{
-    char *obj_str;
-
-    if (!obj)
-        return;
-
-    obj_str = PyString_AsString(obj);
-    if (!obj_str)
-        return;
-
-    PyErr_Format(exc, format_str, obj_str);
-}
-
-static PyObject *
-string_concatenate(PyObject *v, PyObject *w,
-                   PyFrameObject *f, unsigned char *next_instr)
-{
-    /* This function implements 'variable += expr' when both arguments
-       are strings. */
-    Py_ssize_t v_len = PyString_GET_SIZE(v);
-    Py_ssize_t w_len = PyString_GET_SIZE(w);
-    Py_ssize_t new_len = v_len + w_len;
-    if (new_len < 0) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "strings are too large to concat");
-        return NULL;
-    }
-
-    if (v->ob_refcnt == 2) {
-        /* In the common case, there are 2 references to the value
-         * stored in 'variable' when the += is performed: one on the
-         * value stack (in 'v') and one still stored in the
-         * 'variable'.  We try to delete the variable now to reduce
-         * the refcnt to 1.
-         */
-        switch (*next_instr) {
-        case STORE_FAST:
-        {
-            int oparg = PEEKARG();
-            PyObject **fastlocals = f->f_localsplus;
-            if (GETLOCAL(oparg) == v)
-                SETLOCAL(oparg, NULL);
-            break;
-        }
-        case STORE_DEREF:
-        {
-            PyObject **freevars = (f->f_localsplus +
-                                   f->f_code->co_nlocals);
-            PyObject *c = freevars[PEEKARG()];
-            if (PyCell_GET(c) == v)
-                PyCell_Set(c, NULL);
-            break;
-        }
-        case STORE_NAME:
-        {
-            PyObject *names = f->f_code->co_names;
-            PyObject *name = GETITEM(names, PEEKARG());
-            PyObject *locals = f->f_locals;
-            if (PyDict_CheckExact(locals) &&
-                PyDict_GetItem(locals, name) == v) {
-                if (PyDict_DelItem(locals, name) != 0) {
-                    PyErr_Clear();
-                }
-            }
-            break;
-        }
-        }
-    }
-
-    if (v->ob_refcnt == 1 && !PyString_CHECK_INTERNED(v)) {
-        /* Now we own the last reference to 'v', so we can resize it
-         * in-place.
-         */
-        if (_PyString_Resize(&v, new_len) != 0) {
-            /* XXX if _PyString_Resize() fails, 'v' has been
-             * deallocated so it cannot be put back into
-             * 'variable'.  The MemoryError is raised when there
-             * is no value in 'variable', which might (very
-             * remotely) be a cause of incompatibilities.
-             */
-            return NULL;
-        }
-        /* copy 'w' into the newly allocated area of 'v' */
-        memcpy(PyString_AS_STRING(v) + v_len,
-               PyString_AS_STRING(w), w_len);
-        return v;
-    }
-    else {
-        /* When in-place resizing is not an option. */
-        PyString_Concat(&v, w);
-        return v;
-    }
-}
-
-#ifdef DYNAMIC_EXECUTION_PROFILE
-
-static PyObject *
-getarray(long a[256])
-{
-    int i;
-    PyObject *l = PyList_New(256);
-    if (l == NULL) return NULL;
-    for (i = 0; i < 256; i++) {
-        PyObject *x = PyInt_FromLong(a[i]);
-        if (x == NULL) {
-            Py_DECREF(l);
-            return NULL;
-        }
-        PyList_SetItem(l, i, x);
-    }
-    for (i = 0; i < 256; i++)
-        a[i] = 0;
-    return l;
-}
-
-PyObject *
-_Py_GetDXProfile(PyObject *self, PyObject *args)
-{
-#ifndef DXPAIRS
-    return getarray(dxp);
-#else
-    int i;
-    PyObject *l = PyList_New(257);
-    if (l == NULL) return NULL;
-    for (i = 0; i < 257; i++) {
-        PyObject *x = getarray(dxpairs[i]);
-        if (x == NULL) {
-            Py_DECREF(l);
-            return NULL;
-        }
-        PyList_SetItem(l, i, x);
-    }
-    return l;
-#endif
-}
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/codecs.c b/AppPkg/Applications/Python/Python-2.7.2/Python/codecs.c
deleted file mode 100644
index 694a67e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/codecs.c
+++ /dev/null
@@ -1,872 +0,0 @@
-/* ------------------------------------------------------------------------
-
-   Python Codec Registry and support functions
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-Copyright (c) Corporation for National Research Initiatives.
-
-   ------------------------------------------------------------------------ */
-
-#include "Python.h"
-#include <ctype.h>
-
-/* --- Codec Registry ----------------------------------------------------- */
-
-/* Import the standard encodings package which will register the first
-   codec search function.
-
-   This is done in a lazy way so that the Unicode implementation does
-   not downgrade startup time of scripts not needing it.
-
-   ImportErrors are silently ignored by this function. Only one try is
-   made.
-
-*/
-
-static int _PyCodecRegistry_Init(void); /* Forward */
-
-int PyCodec_Register(PyObject *search_function)
-{
-    PyInterpreterState *interp = PyThreadState_GET()->interp;
-    if (interp->codec_search_path == NULL && _PyCodecRegistry_Init())
-        goto onError;
-    if (search_function == NULL) {
-        PyErr_BadArgument();
-        goto onError;
-    }
-    if (!PyCallable_Check(search_function)) {
-        PyErr_SetString(PyExc_TypeError, "argument must be callable");
-        goto onError;
-    }
-    return PyList_Append(interp->codec_search_path, search_function);
-
- onError:
-    return -1;
-}
-
-/* Convert a string to a normalized Python string: all characters are
-   converted to lower case, spaces are replaced with underscores. */
-
-static
-PyObject *normalizestring(const char *string)
-{
-    register size_t i;
-    size_t len = strlen(string);
-    char *p;
-    PyObject *v;
-
-    if (len > PY_SSIZE_T_MAX) {
-        PyErr_SetString(PyExc_OverflowError, "string is too large");
-        return NULL;
-    }
-
-    v = PyString_FromStringAndSize(NULL, len);
-    if (v == NULL)
-        return NULL;
-    p = PyString_AS_STRING(v);
-    for (i = 0; i < len; i++) {
-        register char ch = string[i];
-        if (ch == ' ')
-            ch = '-';
-        else
-            ch = tolower(Py_CHARMASK(ch));
-        p[i] = ch;
-    }
-    return v;
-}
-
-/* Lookup the given encoding and return a tuple providing the codec
-   facilities.
-
-   The encoding string is looked up converted to all lower-case
-   characters. This makes encodings looked up through this mechanism
-   effectively case-insensitive.
-
-   If no codec is found, a LookupError is set and NULL returned.
-
-   As side effect, this tries to load the encodings package, if not
-   yet done. This is part of the lazy load strategy for the encodings
-   package.
-
-*/
-
-PyObject *_PyCodec_Lookup(const char *encoding)
-{
-    PyInterpreterState *interp;
-    PyObject *result, *args = NULL, *v;
-    Py_ssize_t i, len;
-
-    if (encoding == NULL) {
-        PyErr_BadArgument();
-        goto onError;
-    }
-
-    interp = PyThreadState_GET()->interp;
-    if (interp->codec_search_path == NULL && _PyCodecRegistry_Init())
-        goto onError;
-
-    /* Convert the encoding to a normalized Python string: all
-       characters are converted to lower case, spaces and hyphens are
-       replaced with underscores. */
-    v = normalizestring(encoding);
-    if (v == NULL)
-        goto onError;
-    PyString_InternInPlace(&v);
-
-    /* First, try to lookup the name in the registry dictionary */
-    result = PyDict_GetItem(interp->codec_search_cache, v);
-    if (result != NULL) {
-        Py_INCREF(result);
-        Py_DECREF(v);
-        return result;
-    }
-
-    /* Next, scan the search functions in order of registration */
-    args = PyTuple_New(1);
-    if (args == NULL)
-        goto onError;
-    PyTuple_SET_ITEM(args,0,v);
-
-    len = PyList_Size(interp->codec_search_path);
-    if (len < 0)
-        goto onError;
-    if (len == 0) {
-        PyErr_SetString(PyExc_LookupError,
-                        "no codec search functions registered: "
-                        "can't find encoding");
-        goto onError;
-    }
-
-    for (i = 0; i < len; i++) {
-        PyObject *func;
-
-        func = PyList_GetItem(interp->codec_search_path, i);
-        if (func == NULL)
-            goto onError;
-        result = PyEval_CallObject(func, args);
-        if (result == NULL)
-            goto onError;
-        if (result == Py_None) {
-            Py_DECREF(result);
-            continue;
-        }
-        if (!PyTuple_Check(result) || PyTuple_GET_SIZE(result) != 4) {
-            PyErr_SetString(PyExc_TypeError,
-                            "codec search functions must return 4-tuples");
-            Py_DECREF(result);
-            goto onError;
-        }
-        break;
-    }
-    if (i == len) {
-        /* XXX Perhaps we should cache misses too ? */
-        PyErr_Format(PyExc_LookupError,
-                     "unknown encoding: %s", encoding);
-        goto onError;
-    }
-
-    /* Cache and return the result */
-    PyDict_SetItem(interp->codec_search_cache, v, result);
-    Py_DECREF(args);
-    return result;
-
- onError:
-    Py_XDECREF(args);
-    return NULL;
-}
-
-static
-PyObject *args_tuple(PyObject *object,
-                     const char *errors)
-{
-    PyObject *args;
-
-    args = PyTuple_New(1 + (errors != NULL));
-    if (args == NULL)
-        return NULL;
-    Py_INCREF(object);
-    PyTuple_SET_ITEM(args,0,object);
-    if (errors) {
-        PyObject *v;
-
-        v = PyString_FromString(errors);
-        if (v == NULL) {
-            Py_DECREF(args);
-            return NULL;
-        }
-        PyTuple_SET_ITEM(args, 1, v);
-    }
-    return args;
-}
-
-/* Helper function to get a codec item */
-
-static
-PyObject *codec_getitem(const char *encoding, int index)
-{
-    PyObject *codecs;
-    PyObject *v;
-
-    codecs = _PyCodec_Lookup(encoding);
-    if (codecs == NULL)
-        return NULL;
-    v = PyTuple_GET_ITEM(codecs, index);
-    Py_DECREF(codecs);
-    Py_INCREF(v);
-    return v;
-}
-
-/* Helper function to create an incremental codec. */
-
-static
-PyObject *codec_getincrementalcodec(const char *encoding,
-                                    const char *errors,
-                                    const char *attrname)
-{
-    PyObject *codecs, *ret, *inccodec;
-
-    codecs = _PyCodec_Lookup(encoding);
-    if (codecs == NULL)
-        return NULL;
-    inccodec = PyObject_GetAttrString(codecs, attrname);
-    Py_DECREF(codecs);
-    if (inccodec == NULL)
-        return NULL;
-    if (errors)
-        ret = PyObject_CallFunction(inccodec, "s", errors);
-    else
-        ret = PyObject_CallFunction(inccodec, NULL);
-    Py_DECREF(inccodec);
-    return ret;
-}
-
-/* Helper function to create a stream codec. */
-
-static
-PyObject *codec_getstreamcodec(const char *encoding,
-                               PyObject *stream,
-                               const char *errors,
-                               const int index)
-{
-    PyObject *codecs, *streamcodec, *codeccls;
-
-    codecs = _PyCodec_Lookup(encoding);
-    if (codecs == NULL)
-        return NULL;
-
-    codeccls = PyTuple_GET_ITEM(codecs, index);
-    if (errors != NULL)
-        streamcodec = PyObject_CallFunction(codeccls, "Os", stream, errors);
-    else
-        streamcodec = PyObject_CallFunction(codeccls, "O", stream);
-    Py_DECREF(codecs);
-    return streamcodec;
-}
-
-/* Convenience APIs to query the Codec registry.
-
-   All APIs return a codec object with incremented refcount.
-
- */
-
-PyObject *PyCodec_Encoder(const char *encoding)
-{
-    return codec_getitem(encoding, 0);
-}
-
-PyObject *PyCodec_Decoder(const char *encoding)
-{
-    return codec_getitem(encoding, 1);
-}
-
-PyObject *PyCodec_IncrementalEncoder(const char *encoding,
-                                     const char *errors)
-{
-    return codec_getincrementalcodec(encoding, errors, "incrementalencoder");
-}
-
-PyObject *PyCodec_IncrementalDecoder(const char *encoding,
-                                     const char *errors)
-{
-    return codec_getincrementalcodec(encoding, errors, "incrementaldecoder");
-}
-
-PyObject *PyCodec_StreamReader(const char *encoding,
-                               PyObject *stream,
-                               const char *errors)
-{
-    return codec_getstreamcodec(encoding, stream, errors, 2);
-}
-
-PyObject *PyCodec_StreamWriter(const char *encoding,
-                               PyObject *stream,
-                               const char *errors)
-{
-    return codec_getstreamcodec(encoding, stream, errors, 3);
-}
-
-/* Encode an object (e.g. an Unicode object) using the given encoding
-   and return the resulting encoded object (usually a Python string).
-
-   errors is passed to the encoder factory as argument if non-NULL. */
-
-PyObject *PyCodec_Encode(PyObject *object,
-                         const char *encoding,
-                         const char *errors)
-{
-    PyObject *encoder = NULL;
-    PyObject *args = NULL, *result = NULL;
-    PyObject *v;
-
-    encoder = PyCodec_Encoder(encoding);
-    if (encoder == NULL)
-        goto onError;
-
-    args = args_tuple(object, errors);
-    if (args == NULL)
-        goto onError;
-
-    result = PyEval_CallObject(encoder,args);
-    if (result == NULL)
-        goto onError;
-
-    if (!PyTuple_Check(result) ||
-        PyTuple_GET_SIZE(result) != 2) {
-        PyErr_SetString(PyExc_TypeError,
-                        "encoder must return a tuple (object,integer)");
-        goto onError;
-    }
-    v = PyTuple_GET_ITEM(result,0);
-    Py_INCREF(v);
-    /* We don't check or use the second (integer) entry. */
-
-    Py_DECREF(args);
-    Py_DECREF(encoder);
-    Py_DECREF(result);
-    return v;
-
- onError:
-    Py_XDECREF(result);
-    Py_XDECREF(args);
-    Py_XDECREF(encoder);
-    return NULL;
-}
-
-/* Decode an object (usually a Python string) using the given encoding
-   and return an equivalent object (e.g. an Unicode object).
-
-   errors is passed to the decoder factory as argument if non-NULL. */
-
-PyObject *PyCodec_Decode(PyObject *object,
-                         const char *encoding,
-                         const char *errors)
-{
-    PyObject *decoder = NULL;
-    PyObject *args = NULL, *result = NULL;
-    PyObject *v;
-
-    decoder = PyCodec_Decoder(encoding);
-    if (decoder == NULL)
-        goto onError;
-
-    args = args_tuple(object, errors);
-    if (args == NULL)
-        goto onError;
-
-    result = PyEval_CallObject(decoder,args);
-    if (result == NULL)
-        goto onError;
-    if (!PyTuple_Check(result) ||
-        PyTuple_GET_SIZE(result) != 2) {
-        PyErr_SetString(PyExc_TypeError,
-                        "decoder must return a tuple (object,integer)");
-        goto onError;
-    }
-    v = PyTuple_GET_ITEM(result,0);
-    Py_INCREF(v);
-    /* We don't check or use the second (integer) entry. */
-
-    Py_DECREF(args);
-    Py_DECREF(decoder);
-    Py_DECREF(result);
-    return v;
-
- onError:
-    Py_XDECREF(args);
-    Py_XDECREF(decoder);
-    Py_XDECREF(result);
-    return NULL;
-}
-
-/* Register the error handling callback function error under the name
-   name. This function will be called by the codec when it encounters
-   an unencodable characters/undecodable bytes and doesn't know the
-   callback name, when name is specified as the error parameter
-   in the call to the encode/decode function.
-   Return 0 on success, -1 on error */
-int PyCodec_RegisterError(const char *name, PyObject *error)
-{
-    PyInterpreterState *interp = PyThreadState_GET()->interp;
-    if (interp->codec_search_path == NULL && _PyCodecRegistry_Init())
-        return -1;
-    if (!PyCallable_Check(error)) {
-        PyErr_SetString(PyExc_TypeError, "handler must be callable");
-        return -1;
-    }
-    return PyDict_SetItemString(interp->codec_error_registry,
-                                (char *)name, error);
-}
-
-/* Lookup the error handling callback function registered under the
-   name error. As a special case NULL can be passed, in which case
-   the error handling callback for strict encoding will be returned. */
-PyObject *PyCodec_LookupError(const char *name)
-{
-    PyObject *handler = NULL;
-
-    PyInterpreterState *interp = PyThreadState_GET()->interp;
-    if (interp->codec_search_path == NULL && _PyCodecRegistry_Init())
-        return NULL;
-
-    if (name==NULL)
-        name = "strict";
-    handler = PyDict_GetItemString(interp->codec_error_registry, (char *)name);
-    if (!handler)
-        PyErr_Format(PyExc_LookupError, "unknown error handler name '%.400s'", name);
-    else
-        Py_INCREF(handler);
-    return handler;
-}
-
-static void wrong_exception_type(PyObject *exc)
-{
-    PyObject *type = PyObject_GetAttrString(exc, "__class__");
-    if (type != NULL) {
-        PyObject *name = PyObject_GetAttrString(type, "__name__");
-        Py_DECREF(type);
-        if (name != NULL) {
-            PyObject *string = PyObject_Str(name);
-            Py_DECREF(name);
-            if (string != NULL) {
-                PyErr_Format(PyExc_TypeError,
-                    "don't know how to handle %.400s in error callback",
-                    PyString_AS_STRING(string));
-                Py_DECREF(string);
-            }
-        }
-    }
-}
-
-PyObject *PyCodec_StrictErrors(PyObject *exc)
-{
-    if (PyExceptionInstance_Check(exc))
-        PyErr_SetObject(PyExceptionInstance_Class(exc), exc);
-    else
-        PyErr_SetString(PyExc_TypeError, "codec must pass exception instance");
-    return NULL;
-}
-
-
-#ifdef Py_USING_UNICODE
-PyObject *PyCodec_IgnoreErrors(PyObject *exc)
-{
-    Py_ssize_t end;
-    if (PyObject_IsInstance(exc, PyExc_UnicodeEncodeError)) {
-        if (PyUnicodeEncodeError_GetEnd(exc, &end))
-            return NULL;
-    }
-    else if (PyObject_IsInstance(exc, PyExc_UnicodeDecodeError)) {
-        if (PyUnicodeDecodeError_GetEnd(exc, &end))
-            return NULL;
-    }
-    else if (PyObject_IsInstance(exc, PyExc_UnicodeTranslateError)) {
-        if (PyUnicodeTranslateError_GetEnd(exc, &end))
-            return NULL;
-    }
-    else {
-        wrong_exception_type(exc);
-        return NULL;
-    }
-    /* ouch: passing NULL, 0, pos gives None instead of u'' */
-    return Py_BuildValue("(u#n)", &end, 0, end);
-}
-
-
-PyObject *PyCodec_ReplaceErrors(PyObject *exc)
-{
-    PyObject *restuple;
-    Py_ssize_t start;
-    Py_ssize_t end;
-    Py_ssize_t i;
-
-    if (PyObject_IsInstance(exc, PyExc_UnicodeEncodeError)) {
-        PyObject *res;
-        Py_UNICODE *p;
-        if (PyUnicodeEncodeError_GetStart(exc, &start))
-            return NULL;
-        if (PyUnicodeEncodeError_GetEnd(exc, &end))
-            return NULL;
-        res = PyUnicode_FromUnicode(NULL, end-start);
-        if (res == NULL)
-            return NULL;
-        for (p = PyUnicode_AS_UNICODE(res), i = start;
-            i<end; ++p, ++i)
-            *p = '?';
-        restuple = Py_BuildValue("(On)", res, end);
-        Py_DECREF(res);
-        return restuple;
-    }
-    else if (PyObject_IsInstance(exc, PyExc_UnicodeDecodeError)) {
-        Py_UNICODE res = Py_UNICODE_REPLACEMENT_CHARACTER;
-        if (PyUnicodeDecodeError_GetEnd(exc, &end))
-            return NULL;
-        return Py_BuildValue("(u#n)", &res, 1, end);
-    }
-    else if (PyObject_IsInstance(exc, PyExc_UnicodeTranslateError)) {
-        PyObject *res;
-        Py_UNICODE *p;
-        if (PyUnicodeTranslateError_GetStart(exc, &start))
-            return NULL;
-        if (PyUnicodeTranslateError_GetEnd(exc, &end))
-            return NULL;
-        res = PyUnicode_FromUnicode(NULL, end-start);
-        if (res == NULL)
-            return NULL;
-        for (p = PyUnicode_AS_UNICODE(res), i = start;
-            i<end; ++p, ++i)
-            *p = Py_UNICODE_REPLACEMENT_CHARACTER;
-        restuple = Py_BuildValue("(On)", res, end);
-        Py_DECREF(res);
-        return restuple;
-    }
-    else {
-        wrong_exception_type(exc);
-        return NULL;
-    }
-}
-
-PyObject *PyCodec_XMLCharRefReplaceErrors(PyObject *exc)
-{
-    if (PyObject_IsInstance(exc, PyExc_UnicodeEncodeError)) {
-        PyObject *restuple;
-        PyObject *object;
-        Py_ssize_t start;
-        Py_ssize_t end;
-        PyObject *res;
-        Py_UNICODE *p;
-        Py_UNICODE *startp;
-        Py_UNICODE *outp;
-        int ressize;
-        if (PyUnicodeEncodeError_GetStart(exc, &start))
-            return NULL;
-        if (PyUnicodeEncodeError_GetEnd(exc, &end))
-            return NULL;
-        if (!(object = PyUnicodeEncodeError_GetObject(exc)))
-            return NULL;
-        startp = PyUnicode_AS_UNICODE(object);
-        for (p = startp+start, ressize = 0; p < startp+end; ++p) {
-            if (*p<10)
-                ressize += 2+1+1;
-            else if (*p<100)
-                ressize += 2+2+1;
-            else if (*p<1000)
-                ressize += 2+3+1;
-            else if (*p<10000)
-                ressize += 2+4+1;
-#ifndef Py_UNICODE_WIDE
-            else
-                ressize += 2+5+1;
-#else
-            else if (*p<100000)
-                ressize += 2+5+1;
-            else if (*p<1000000)
-                ressize += 2+6+1;
-            else
-                ressize += 2+7+1;
-#endif
-        }
-        /* allocate replacement */
-        res = PyUnicode_FromUnicode(NULL, ressize);
-        if (res == NULL) {
-            Py_DECREF(object);
-            return NULL;
-        }
-        /* generate replacement */
-        for (p = startp+start, outp = PyUnicode_AS_UNICODE(res);
-            p < startp+end; ++p) {
-            Py_UNICODE c = *p;
-            int digits;
-            int base;
-            *outp++ = '&';
-            *outp++ = '#';
-            if (*p<10) {
-                digits = 1;
-                base = 1;
-            }
-            else if (*p<100) {
-                digits = 2;
-                base = 10;
-            }
-            else if (*p<1000) {
-                digits = 3;
-                base = 100;
-            }
-            else if (*p<10000) {
-                digits = 4;
-                base = 1000;
-            }
-#ifndef Py_UNICODE_WIDE
-            else {
-                digits = 5;
-                base = 10000;
-            }
-#else
-            else if (*p<100000) {
-                digits = 5;
-                base = 10000;
-            }
-            else if (*p<1000000) {
-                digits = 6;
-                base = 100000;
-            }
-            else {
-                digits = 7;
-                base = 1000000;
-            }
-#endif
-            while (digits-->0) {
-                *outp++ = '0' + c/base;
-                c %= base;
-                base /= 10;
-            }
-            *outp++ = ';';
-        }
-        restuple = Py_BuildValue("(On)", res, end);
-        Py_DECREF(res);
-        Py_DECREF(object);
-        return restuple;
-    }
-    else {
-        wrong_exception_type(exc);
-        return NULL;
-    }
-}
-
-static Py_UNICODE hexdigits[] = {
-    '0', '1', '2', '3', '4', '5', '6', '7',
-    '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
-};
-
-PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc)
-{
-    if (PyObject_IsInstance(exc, PyExc_UnicodeEncodeError)) {
-        PyObject *restuple;
-        PyObject *object;
-        Py_ssize_t start;
-        Py_ssize_t end;
-        PyObject *res;
-        Py_UNICODE *p;
-        Py_UNICODE *startp;
-        Py_UNICODE *outp;
-        int ressize;
-        if (PyUnicodeEncodeError_GetStart(exc, &start))
-            return NULL;
-        if (PyUnicodeEncodeError_GetEnd(exc, &end))
-            return NULL;
-        if (!(object = PyUnicodeEncodeError_GetObject(exc)))
-            return NULL;
-        startp = PyUnicode_AS_UNICODE(object);
-        for (p = startp+start, ressize = 0; p < startp+end; ++p) {
-#ifdef Py_UNICODE_WIDE
-            if (*p >= 0x00010000)
-                ressize += 1+1+8;
-            else
-#endif
-            if (*p >= 0x100) {
-                ressize += 1+1+4;
-            }
-            else
-                ressize += 1+1+2;
-        }
-        res = PyUnicode_FromUnicode(NULL, ressize);
-        if (res==NULL)
-            return NULL;
-        for (p = startp+start, outp = PyUnicode_AS_UNICODE(res);
-            p < startp+end; ++p) {
-            Py_UNICODE c = *p;
-            *outp++ = '\\';
-#ifdef Py_UNICODE_WIDE
-            if (c >= 0x00010000) {
-                *outp++ = 'U';
-                *outp++ = hexdigits[(c>>28)&0xf];
-                *outp++ = hexdigits[(c>>24)&0xf];
-                *outp++ = hexdigits[(c>>20)&0xf];
-                *outp++ = hexdigits[(c>>16)&0xf];
-                *outp++ = hexdigits[(c>>12)&0xf];
-                *outp++ = hexdigits[(c>>8)&0xf];
-            }
-            else
-#endif
-            if (c >= 0x100) {
-                *outp++ = 'u';
-                *outp++ = hexdigits[(c>>12)&0xf];
-                *outp++ = hexdigits[(c>>8)&0xf];
-            }
-            else
-                *outp++ = 'x';
-            *outp++ = hexdigits[(c>>4)&0xf];
-            *outp++ = hexdigits[c&0xf];
-        }
-
-        restuple = Py_BuildValue("(On)", res, end);
-        Py_DECREF(res);
-        Py_DECREF(object);
-        return restuple;
-    }
-    else {
-        wrong_exception_type(exc);
-        return NULL;
-    }
-}
-#endif
-
-static PyObject *strict_errors(PyObject *self, PyObject *exc)
-{
-    return PyCodec_StrictErrors(exc);
-}
-
-
-#ifdef Py_USING_UNICODE
-static PyObject *ignore_errors(PyObject *self, PyObject *exc)
-{
-    return PyCodec_IgnoreErrors(exc);
-}
-
-
-static PyObject *replace_errors(PyObject *self, PyObject *exc)
-{
-    return PyCodec_ReplaceErrors(exc);
-}
-
-
-static PyObject *xmlcharrefreplace_errors(PyObject *self, PyObject *exc)
-{
-    return PyCodec_XMLCharRefReplaceErrors(exc);
-}
-
-
-static PyObject *backslashreplace_errors(PyObject *self, PyObject *exc)
-{
-    return PyCodec_BackslashReplaceErrors(exc);
-}
-#endif
-
-static int _PyCodecRegistry_Init(void)
-{
-    static struct {
-        char *name;
-        PyMethodDef def;
-    } methods[] =
-    {
-        {
-            "strict",
-            {
-                "strict_errors",
-                strict_errors,
-                METH_O,
-                PyDoc_STR("Implements the 'strict' error handling, which "
-                          "raises a UnicodeError on coding errors.")
-            }
-        },
-#ifdef Py_USING_UNICODE
-        {
-            "ignore",
-            {
-                "ignore_errors",
-                ignore_errors,
-                METH_O,
-                PyDoc_STR("Implements the 'ignore' error handling, which "
-                          "ignores malformed data and continues.")
-            }
-        },
-        {
-            "replace",
-            {
-                "replace_errors",
-                replace_errors,
-                METH_O,
-                PyDoc_STR("Implements the 'replace' error handling, which "
-                          "replaces malformed data with a replacement marker.")
-            }
-        },
-        {
-            "xmlcharrefreplace",
-            {
-                "xmlcharrefreplace_errors",
-                xmlcharrefreplace_errors,
-                METH_O,
-                PyDoc_STR("Implements the 'xmlcharrefreplace' error handling, "
-                          "which replaces an unencodable character with the "
-                          "appropriate XML character reference.")
-            }
-        },
-        {
-            "backslashreplace",
-            {
-                "backslashreplace_errors",
-                backslashreplace_errors,
-                METH_O,
-                PyDoc_STR("Implements the 'backslashreplace' error handling, "
-                          "which replaces an unencodable character with a "
-                          "backslashed escape sequence.")
-            }
-        }
-#endif
-    };
-
-    PyInterpreterState *interp = PyThreadState_GET()->interp;
-    PyObject *mod;
-    unsigned i;
-
-    if (interp->codec_search_path != NULL)
-        return 0;
-
-    interp->codec_search_path = PyList_New(0);
-    interp->codec_search_cache = PyDict_New();
-    interp->codec_error_registry = PyDict_New();
-
-    if (interp->codec_error_registry) {
-        for (i = 0; i < sizeof(methods)/sizeof(methods[0]); ++i) {
-            PyObject *func = PyCFunction_New(&methods[i].def, NULL);
-            int res;
-            if (!func)
-                Py_FatalError("can't initialize codec error registry");
-            res = PyCodec_RegisterError(methods[i].name, func);
-            Py_DECREF(func);
-            if (res)
-                Py_FatalError("can't initialize codec error registry");
-        }
-    }
-
-    if (interp->codec_search_path == NULL ||
-        interp->codec_search_cache == NULL ||
-        interp->codec_error_registry == NULL)
-        Py_FatalError("can't initialize codec registry");
-
-    mod = PyImport_ImportModuleLevel("encodings", NULL, NULL, NULL, 0);
-    if (mod == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_ImportError)) {
-            /* Ignore ImportErrors... this is done so that
-               distributions can disable the encodings package. Note
-               that other errors are not masked, e.g. SystemErrors
-               raised to inform the user of an error in the Python
-               configuration are still reported back to the user. */
-            PyErr_Clear();
-            return 0;
-        }
-        return -1;
-    }
-    Py_DECREF(mod);
-    return 0;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/compile.c b/AppPkg/Applications/Python/Python-2.7.2/Python/compile.c
deleted file mode 100644
index 1b051b7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/compile.c
+++ /dev/null
@@ -1,3979 +0,0 @@
-/*
- * This file compiles an abstract syntax tree (AST) into Python bytecode.
- *
- * The primary entry point is PyAST_Compile(), which returns a
- * PyCodeObject.  The compiler makes several passes to build the code
- * object:
- *   1. Checks for future statements.  See future.c
- *   2. Builds a symbol table.  See symtable.c.
- *   3. Generate code for basic blocks.  See compiler_mod() in this file.
- *   4. Assemble the basic blocks into final code.  See assemble() in
- *      this file.
- *   5. Optimize the byte code (peephole optimizations).  See peephole.c
- *
- * Note that compiler_mod() suggests module, but the module ast type
- * (mod_ty) has cases for expressions and interactive statements.
- *
- * CAUTION: The VISIT_* macros abort the current function when they
- * encounter a problem. So don't invoke them when there is memory
- * which needs to be released. Code blocks are OK, as the compiler
- * structure takes care of releasing those.  Use the arena to manage
- * objects.
- */
-
-#include "Python.h"
-
-#include "Python-ast.h"
-#include "node.h"
-#include "pyarena.h"
-#include "ast.h"
-#include "code.h"
-#include "compile.h"
-#include "symtable.h"
-#include "opcode.h"
-
-int Py_OptimizeFlag = 0;
-
-#define DEFAULT_BLOCK_SIZE 16
-#define DEFAULT_BLOCKS 8
-#define DEFAULT_CODE_SIZE 128
-#define DEFAULT_LNOTAB_SIZE 16
-
-#define COMP_GENEXP   0
-#define COMP_SETCOMP  1
-#define COMP_DICTCOMP 2
-
-struct instr {
-    unsigned i_jabs : 1;
-    unsigned i_jrel : 1;
-    unsigned i_hasarg : 1;
-    unsigned char i_opcode;
-    int i_oparg;
-    struct basicblock_ *i_target; /* target block (if jump instruction) */
-    int i_lineno;
-};
-
-typedef struct basicblock_ {
-    /* Each basicblock in a compilation unit is linked via b_list in the
-       reverse order that the block are allocated.  b_list points to the next
-       block, not to be confused with b_next, which is next by control flow. */
-    struct basicblock_ *b_list;
-    /* number of instructions used */
-    int b_iused;
-    /* length of instruction array (b_instr) */
-    int b_ialloc;
-    /* pointer to an array of instructions, initially NULL */
-    struct instr *b_instr;
-    /* If b_next is non-NULL, it is a pointer to the next
-       block reached by normal control flow. */
-    struct basicblock_ *b_next;
-    /* b_seen is used to perform a DFS of basicblocks. */
-    unsigned b_seen : 1;
-    /* b_return is true if a RETURN_VALUE opcode is inserted. */
-    unsigned b_return : 1;
-    /* depth of stack upon entry of block, computed by stackdepth() */
-    int b_startdepth;
-    /* instruction offset for block, computed by assemble_jump_offsets() */
-    int b_offset;
-} basicblock;
-
-/* fblockinfo tracks the current frame block.
-
-A frame block is used to handle loops, try/except, and try/finally.
-It's called a frame block to distinguish it from a basic block in the
-compiler IR.
-*/
-
-enum fblocktype { LOOP, EXCEPT, FINALLY_TRY, FINALLY_END };
-
-struct fblockinfo {
-    enum fblocktype fb_type;
-    basicblock *fb_block;
-};
-
-/* The following items change on entry and exit of code blocks.
-   They must be saved and restored when returning to a block.
-*/
-struct compiler_unit {
-    PySTEntryObject *u_ste;
-
-    PyObject *u_name;
-    /* The following fields are dicts that map objects to
-       the index of them in co_XXX.      The index is used as
-       the argument for opcodes that refer to those collections.
-    */
-    PyObject *u_consts;    /* all constants */
-    PyObject *u_names;     /* all names */
-    PyObject *u_varnames;  /* local variables */
-    PyObject *u_cellvars;  /* cell variables */
-    PyObject *u_freevars;  /* free variables */
-
-    PyObject *u_private;        /* for private name mangling */
-
-    int u_argcount;        /* number of arguments for block */
-    /* Pointer to the most recently allocated block.  By following b_list
-       members, you can reach all early allocated blocks. */
-    basicblock *u_blocks;
-    basicblock *u_curblock; /* pointer to current block */
-
-    int u_nfblocks;
-    struct fblockinfo u_fblock[CO_MAXBLOCKS];
-
-    int u_firstlineno; /* the first lineno of the block */
-    int u_lineno;          /* the lineno for the current stmt */
-    bool u_lineno_set; /* boolean to indicate whether instr
-                          has been generated with current lineno */
-};
-
-/* This struct captures the global state of a compilation.
-
-The u pointer points to the current compilation unit, while units
-for enclosing blocks are stored in c_stack.     The u and c_stack are
-managed by compiler_enter_scope() and compiler_exit_scope().
-*/
-
-struct compiler {
-    const char *c_filename;
-    struct symtable *c_st;
-    PyFutureFeatures *c_future; /* pointer to module's __future__ */
-    PyCompilerFlags *c_flags;
-
-    int c_interactive;           /* true if in interactive mode */
-    int c_nestlevel;
-
-    struct compiler_unit *u; /* compiler state for current block */
-    PyObject *c_stack;           /* Python list holding compiler_unit ptrs */
-    PyArena *c_arena;            /* pointer to memory allocation arena */
-};
-
-static int compiler_enter_scope(struct compiler *, identifier, void *, int);
-static void compiler_free(struct compiler *);
-static basicblock *compiler_new_block(struct compiler *);
-static int compiler_next_instr(struct compiler *, basicblock *);
-static int compiler_addop(struct compiler *, int);
-static int compiler_addop_o(struct compiler *, int, PyObject *, PyObject *);
-static int compiler_addop_i(struct compiler *, int, int);
-static int compiler_addop_j(struct compiler *, int, basicblock *, int);
-static basicblock *compiler_use_new_block(struct compiler *);
-static int compiler_error(struct compiler *, const char *);
-static int compiler_nameop(struct compiler *, identifier, expr_context_ty);
-
-static PyCodeObject *compiler_mod(struct compiler *, mod_ty);
-static int compiler_visit_stmt(struct compiler *, stmt_ty);
-static int compiler_visit_keyword(struct compiler *, keyword_ty);
-static int compiler_visit_expr(struct compiler *, expr_ty);
-static int compiler_augassign(struct compiler *, stmt_ty);
-static int compiler_visit_slice(struct compiler *, slice_ty,
-                                expr_context_ty);
-
-static int compiler_push_fblock(struct compiler *, enum fblocktype,
-                                basicblock *);
-static void compiler_pop_fblock(struct compiler *, enum fblocktype,
-                                basicblock *);
-/* Returns true if there is a loop on the fblock stack. */
-static int compiler_in_loop(struct compiler *);
-
-static int inplace_binop(struct compiler *, operator_ty);
-static int expr_constant(expr_ty e);
-
-static int compiler_with(struct compiler *, stmt_ty);
-
-static PyCodeObject *assemble(struct compiler *, int addNone);
-static PyObject *__doc__;
-
-#define COMPILER_CAPSULE_NAME_COMPILER_UNIT "compile.c compiler unit"
-
-PyObject *
-_Py_Mangle(PyObject *privateobj, PyObject *ident)
-{
-    /* Name mangling: __private becomes _classname__private.
-       This is independent from how the name is used. */
-    const char *p, *name = PyString_AsString(ident);
-    char *buffer;
-    size_t nlen, plen;
-    if (privateobj == NULL || !PyString_Check(privateobj) ||
-        name == NULL || name[0] != '_' || name[1] != '_') {
-        Py_INCREF(ident);
-        return ident;
-    }
-    p = PyString_AsString(privateobj);
-    nlen = strlen(name);
-    /* Don't mangle __id__ or names with dots.
-
-       The only time a name with a dot can occur is when
-       we are compiling an import statement that has a
-       package name.
-
-       TODO(jhylton): Decide whether we want to support
-       mangling of the module name, e.g. __M.X.
-    */
-    if ((name[nlen-1] == '_' && name[nlen-2] == '_')
-        || strchr(name, '.')) {
-        Py_INCREF(ident);
-        return ident; /* Don't mangle __whatever__ */
-    }
-    /* Strip leading underscores from class name */
-    while (*p == '_')
-        p++;
-    if (*p == '\0') {
-        Py_INCREF(ident);
-        return ident; /* Don't mangle if class is just underscores */
-    }
-    plen = strlen(p);
-
-    assert(1 <= PY_SSIZE_T_MAX - nlen);
-    assert(1 + nlen <= PY_SSIZE_T_MAX - plen);
-
-    ident = PyString_FromStringAndSize(NULL, 1 + nlen + plen);
-    if (!ident)
-        return 0;
-    /* ident = "_" + p[:plen] + name # i.e. 1+plen+nlen bytes */
-    buffer = PyString_AS_STRING(ident);
-    buffer[0] = '_';
-    strncpy(buffer+1, p, plen);
-    strcpy(buffer+1+plen, name);
-    return ident;
-}
-
-static int
-compiler_init(struct compiler *c)
-{
-    memset(c, 0, sizeof(struct compiler));
-
-    c->c_stack = PyList_New(0);
-    if (!c->c_stack)
-        return 0;
-
-    return 1;
-}
-
-PyCodeObject *
-PyAST_Compile(mod_ty mod, const char *filename, PyCompilerFlags *flags,
-              PyArena *arena)
-{
-    struct compiler c;
-    PyCodeObject *co = NULL;
-    PyCompilerFlags local_flags;
-    int merged;
-
-    if (!__doc__) {
-        __doc__ = PyString_InternFromString("__doc__");
-        if (!__doc__)
-            return NULL;
-    }
-
-    if (!compiler_init(&c))
-        return NULL;
-    c.c_filename = filename;
-    c.c_arena = arena;
-    c.c_future = PyFuture_FromAST(mod, filename);
-    if (c.c_future == NULL)
-        goto finally;
-    if (!flags) {
-        local_flags.cf_flags = 0;
-        flags = &local_flags;
-    }
-    merged = c.c_future->ff_features | flags->cf_flags;
-    c.c_future->ff_features = merged;
-    flags->cf_flags = merged;
-    c.c_flags = flags;
-    c.c_nestlevel = 0;
-
-    c.c_st = PySymtable_Build(mod, filename, c.c_future);
-    if (c.c_st == NULL) {
-        if (!PyErr_Occurred())
-            PyErr_SetString(PyExc_SystemError, "no symtable");
-        goto finally;
-    }
-
-    co = compiler_mod(&c, mod);
-
- finally:
-    compiler_free(&c);
-    assert(co || PyErr_Occurred());
-    return co;
-}
-
-PyCodeObject *
-PyNode_Compile(struct _node *n, const char *filename)
-{
-    PyCodeObject *co = NULL;
-    mod_ty mod;
-    PyArena *arena = PyArena_New();
-    if (!arena)
-        return NULL;
-    mod = PyAST_FromNode(n, NULL, filename, arena);
-    if (mod)
-        co = PyAST_Compile(mod, filename, NULL, arena);
-    PyArena_Free(arena);
-    return co;
-}
-
-static void
-compiler_free(struct compiler *c)
-{
-    if (c->c_st)
-        PySymtable_Free(c->c_st);
-    if (c->c_future)
-        PyObject_Free(c->c_future);
-    Py_DECREF(c->c_stack);
-}
-
-static PyObject *
-list2dict(PyObject *list)
-{
-    Py_ssize_t i, n;
-    PyObject *v, *k;
-    PyObject *dict = PyDict_New();
-    if (!dict) return NULL;
-
-    n = PyList_Size(list);
-    for (i = 0; i < n; i++) {
-        v = PyInt_FromLong(i);
-        if (!v) {
-            Py_DECREF(dict);
-            return NULL;
-        }
-        k = PyList_GET_ITEM(list, i);
-        k = PyTuple_Pack(2, k, k->ob_type);
-        if (k == NULL || PyDict_SetItem(dict, k, v) < 0) {
-            Py_XDECREF(k);
-            Py_DECREF(v);
-            Py_DECREF(dict);
-            return NULL;
-        }
-        Py_DECREF(k);
-        Py_DECREF(v);
-    }
-    return dict;
-}
-
-/* Return new dict containing names from src that match scope(s).
-
-src is a symbol table dictionary.  If the scope of a name matches
-either scope_type or flag is set, insert it into the new dict.  The
-values are integers, starting at offset and increasing by one for
-each key.
-*/
-
-static PyObject *
-dictbytype(PyObject *src, int scope_type, int flag, int offset)
-{
-    Py_ssize_t pos = 0, i = offset, scope;
-    PyObject *k, *v, *dest = PyDict_New();
-
-    assert(offset >= 0);
-    if (dest == NULL)
-        return NULL;
-
-    while (PyDict_Next(src, &pos, &k, &v)) {
-        /* XXX this should probably be a macro in symtable.h */
-        assert(PyInt_Check(v));
-        scope = (PyInt_AS_LONG(v) >> SCOPE_OFF) & SCOPE_MASK;
-
-        if (scope == scope_type || PyInt_AS_LONG(v) & flag) {
-            PyObject *tuple, *item = PyInt_FromLong(i);
-            if (item == NULL) {
-                Py_DECREF(dest);
-                return NULL;
-            }
-            i++;
-            tuple = PyTuple_Pack(2, k, k->ob_type);
-            if (!tuple || PyDict_SetItem(dest, tuple, item) < 0) {
-                Py_DECREF(item);
-                Py_DECREF(dest);
-                Py_XDECREF(tuple);
-                return NULL;
-            }
-            Py_DECREF(item);
-            Py_DECREF(tuple);
-        }
-    }
-    return dest;
-}
-
-static void
-compiler_unit_check(struct compiler_unit *u)
-{
-    basicblock *block;
-    for (block = u->u_blocks; block != NULL; block = block->b_list) {
-        assert((void *)block != (void *)0xcbcbcbcb);
-        assert((void *)block != (void *)0xfbfbfbfb);
-        assert((void *)block != (void *)0xdbdbdbdb);
-        if (block->b_instr != NULL) {
-            assert(block->b_ialloc > 0);
-            assert(block->b_iused > 0);
-            assert(block->b_ialloc >= block->b_iused);
-        }
-        else {
-            assert (block->b_iused == 0);
-            assert (block->b_ialloc == 0);
-        }
-    }
-}
-
-static void
-compiler_unit_free(struct compiler_unit *u)
-{
-    basicblock *b, *next;
-
-    compiler_unit_check(u);
-    b = u->u_blocks;
-    while (b != NULL) {
-        if (b->b_instr)
-            PyObject_Free((void *)b->b_instr);
-        next = b->b_list;
-        PyObject_Free((void *)b);
-        b = next;
-    }
-    Py_CLEAR(u->u_ste);
-    Py_CLEAR(u->u_name);
-    Py_CLEAR(u->u_consts);
-    Py_CLEAR(u->u_names);
-    Py_CLEAR(u->u_varnames);
-    Py_CLEAR(u->u_freevars);
-    Py_CLEAR(u->u_cellvars);
-    Py_CLEAR(u->u_private);
-    PyObject_Free(u);
-}
-
-static int
-compiler_enter_scope(struct compiler *c, identifier name, void *key,
-                     int lineno)
-{
-    struct compiler_unit *u;
-
-    u = (struct compiler_unit *)PyObject_Malloc(sizeof(
-                                            struct compiler_unit));
-    if (!u) {
-        PyErr_NoMemory();
-        return 0;
-    }
-    memset(u, 0, sizeof(struct compiler_unit));
-    u->u_argcount = 0;
-    u->u_ste = PySymtable_Lookup(c->c_st, key);
-    if (!u->u_ste) {
-        compiler_unit_free(u);
-        return 0;
-    }
-    Py_INCREF(name);
-    u->u_name = name;
-    u->u_varnames = list2dict(u->u_ste->ste_varnames);
-    u->u_cellvars = dictbytype(u->u_ste->ste_symbols, CELL, 0, 0);
-    if (!u->u_varnames || !u->u_cellvars) {
-        compiler_unit_free(u);
-        return 0;
-    }
-
-    u->u_freevars = dictbytype(u->u_ste->ste_symbols, FREE, DEF_FREE_CLASS,
-                               PyDict_Size(u->u_cellvars));
-    if (!u->u_freevars) {
-        compiler_unit_free(u);
-        return 0;
-    }
-
-    u->u_blocks = NULL;
-    u->u_nfblocks = 0;
-    u->u_firstlineno = lineno;
-    u->u_lineno = 0;
-    u->u_lineno_set = false;
-    u->u_consts = PyDict_New();
-    if (!u->u_consts) {
-        compiler_unit_free(u);
-        return 0;
-    }
-    u->u_names = PyDict_New();
-    if (!u->u_names) {
-        compiler_unit_free(u);
-        return 0;
-    }
-
-    u->u_private = NULL;
-
-    /* Push the old compiler_unit on the stack. */
-    if (c->u) {
-        PyObject *capsule = PyCapsule_New(c->u, COMPILER_CAPSULE_NAME_COMPILER_UNIT, NULL);
-        if (!capsule || PyList_Append(c->c_stack, capsule) < 0) {
-            Py_XDECREF(capsule);
-            compiler_unit_free(u);
-            return 0;
-        }
-        Py_DECREF(capsule);
-        u->u_private = c->u->u_private;
-        Py_XINCREF(u->u_private);
-    }
-    c->u = u;
-
-    c->c_nestlevel++;
-    if (compiler_use_new_block(c) == NULL)
-        return 0;
-
-    return 1;
-}
-
-static void
-compiler_exit_scope(struct compiler *c)
-{
-    int n;
-    PyObject *capsule;
-
-    c->c_nestlevel--;
-    compiler_unit_free(c->u);
-    /* Restore c->u to the parent unit. */
-    n = PyList_GET_SIZE(c->c_stack) - 1;
-    if (n >= 0) {
-        capsule = PyList_GET_ITEM(c->c_stack, n);
-        c->u = (struct compiler_unit *)PyCapsule_GetPointer(capsule, COMPILER_CAPSULE_NAME_COMPILER_UNIT);
-        assert(c->u);
-        /* we are deleting from a list so this really shouldn't fail */
-        if (PySequence_DelItem(c->c_stack, n) < 0)
-            Py_FatalError("compiler_exit_scope()");
-        compiler_unit_check(c->u);
-    }
-    else
-        c->u = NULL;
-
-}
-
-/* Allocate a new block and return a pointer to it.
-   Returns NULL on error.
-*/
-
-static basicblock *
-compiler_new_block(struct compiler *c)
-{
-    basicblock *b;
-    struct compiler_unit *u;
-
-    u = c->u;
-    b = (basicblock *)PyObject_Malloc(sizeof(basicblock));
-    if (b == NULL) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-    memset((void *)b, 0, sizeof(basicblock));
-    /* Extend the singly linked list of blocks with new block. */
-    b->b_list = u->u_blocks;
-    u->u_blocks = b;
-    return b;
-}
-
-static basicblock *
-compiler_use_new_block(struct compiler *c)
-{
-    basicblock *block = compiler_new_block(c);
-    if (block == NULL)
-        return NULL;
-    c->u->u_curblock = block;
-    return block;
-}
-
-static basicblock *
-compiler_next_block(struct compiler *c)
-{
-    basicblock *block = compiler_new_block(c);
-    if (block == NULL)
-        return NULL;
-    c->u->u_curblock->b_next = block;
-    c->u->u_curblock = block;
-    return block;
-}
-
-static basicblock *
-compiler_use_next_block(struct compiler *c, basicblock *block)
-{
-    assert(block != NULL);
-    c->u->u_curblock->b_next = block;
-    c->u->u_curblock = block;
-    return block;
-}
-
-/* Returns the offset of the next instruction in the current block's
-   b_instr array.  Resizes the b_instr as necessary.
-   Returns -1 on failure.
-*/
-
-static int
-compiler_next_instr(struct compiler *c, basicblock *b)
-{
-    assert(b != NULL);
-    if (b->b_instr == NULL) {
-        b->b_instr = (struct instr *)PyObject_Malloc(
-                         sizeof(struct instr) * DEFAULT_BLOCK_SIZE);
-        if (b->b_instr == NULL) {
-            PyErr_NoMemory();
-            return -1;
-        }
-        b->b_ialloc = DEFAULT_BLOCK_SIZE;
-        memset((char *)b->b_instr, 0,
-               sizeof(struct instr) * DEFAULT_BLOCK_SIZE);
-    }
-    else if (b->b_iused == b->b_ialloc) {
-        struct instr *tmp;
-        size_t oldsize, newsize;
-        oldsize = b->b_ialloc * sizeof(struct instr);
-        newsize = oldsize << 1;
-
-        if (oldsize > (PY_SIZE_MAX >> 1)) {
-            PyErr_NoMemory();
-            return -1;
-        }
-
-        if (newsize == 0) {
-            PyErr_NoMemory();
-            return -1;
-        }
-        b->b_ialloc <<= 1;
-        tmp = (struct instr *)PyObject_Realloc(
-                                        (void *)b->b_instr, newsize);
-        if (tmp == NULL) {
-            PyErr_NoMemory();
-            return -1;
-        }
-        b->b_instr = tmp;
-        memset((char *)b->b_instr + oldsize, 0, newsize - oldsize);
-    }
-    return b->b_iused++;
-}
-
-/* Set the i_lineno member of the instruction at offset off if the
-   line number for the current expression/statement has not
-   already been set.  If it has been set, the call has no effect.
-
-   The line number is reset in the following cases:
-   - when entering a new scope
-   - on each statement
-   - on each expression that start a new line
-   - before the "except" clause
-   - before the "for" and "while" expressions
-*/
-
-static void
-compiler_set_lineno(struct compiler *c, int off)
-{
-    basicblock *b;
-    if (c->u->u_lineno_set)
-        return;
-    c->u->u_lineno_set = true;
-    b = c->u->u_curblock;
-    b->b_instr[off].i_lineno = c->u->u_lineno;
-}
-
-static int
-opcode_stack_effect(int opcode, int oparg)
-{
-    switch (opcode) {
-        case POP_TOP:
-            return -1;
-        case ROT_TWO:
-        case ROT_THREE:
-            return 0;
-        case DUP_TOP:
-            return 1;
-        case ROT_FOUR:
-            return 0;
-
-        case UNARY_POSITIVE:
-        case UNARY_NEGATIVE:
-        case UNARY_NOT:
-        case UNARY_CONVERT:
-        case UNARY_INVERT:
-            return 0;
-
-        case SET_ADD:
-        case LIST_APPEND:
-            return -1;
-
-        case MAP_ADD:
-            return -2;
-
-        case BINARY_POWER:
-        case BINARY_MULTIPLY:
-        case BINARY_DIVIDE:
-        case BINARY_MODULO:
-        case BINARY_ADD:
-        case BINARY_SUBTRACT:
-        case BINARY_SUBSCR:
-        case BINARY_FLOOR_DIVIDE:
-        case BINARY_TRUE_DIVIDE:
-            return -1;
-        case INPLACE_FLOOR_DIVIDE:
-        case INPLACE_TRUE_DIVIDE:
-            return -1;
-
-        case SLICE+0:
-            return 0;
-        case SLICE+1:
-            return -1;
-        case SLICE+2:
-            return -1;
-        case SLICE+3:
-            return -2;
-
-        case STORE_SLICE+0:
-            return -2;
-        case STORE_SLICE+1:
-            return -3;
-        case STORE_SLICE+2:
-            return -3;
-        case STORE_SLICE+3:
-            return -4;
-
-        case DELETE_SLICE+0:
-            return -1;
-        case DELETE_SLICE+1:
-            return -2;
-        case DELETE_SLICE+2:
-            return -2;
-        case DELETE_SLICE+3:
-            return -3;
-
-        case INPLACE_ADD:
-        case INPLACE_SUBTRACT:
-        case INPLACE_MULTIPLY:
-        case INPLACE_DIVIDE:
-        case INPLACE_MODULO:
-            return -1;
-        case STORE_SUBSCR:
-            return -3;
-        case STORE_MAP:
-            return -2;
-        case DELETE_SUBSCR:
-            return -2;
-
-        case BINARY_LSHIFT:
-        case BINARY_RSHIFT:
-        case BINARY_AND:
-        case BINARY_XOR:
-        case BINARY_OR:
-            return -1;
-        case INPLACE_POWER:
-            return -1;
-        case GET_ITER:
-            return 0;
-
-        case PRINT_EXPR:
-            return -1;
-        case PRINT_ITEM:
-            return -1;
-        case PRINT_NEWLINE:
-            return 0;
-        case PRINT_ITEM_TO:
-            return -2;
-        case PRINT_NEWLINE_TO:
-            return -1;
-        case INPLACE_LSHIFT:
-        case INPLACE_RSHIFT:
-        case INPLACE_AND:
-        case INPLACE_XOR:
-        case INPLACE_OR:
-            return -1;
-        case BREAK_LOOP:
-            return 0;
-        case SETUP_WITH:
-            return 4;
-        case WITH_CLEANUP:
-            return -1; /* XXX Sometimes more */
-        case LOAD_LOCALS:
-            return 1;
-        case RETURN_VALUE:
-            return -1;
-        case IMPORT_STAR:
-            return -1;
-        case EXEC_STMT:
-            return -3;
-        case YIELD_VALUE:
-            return 0;
-
-        case POP_BLOCK:
-            return 0;
-        case END_FINALLY:
-            return -3; /* or -1 or -2 if no exception occurred or
-                          return/break/continue */
-        case BUILD_CLASS:
-            return -2;
-
-        case STORE_NAME:
-            return -1;
-        case DELETE_NAME:
-            return 0;
-        case UNPACK_SEQUENCE:
-            return oparg-1;
-        case FOR_ITER:
-            return 1; /* or -1, at end of iterator */
-
-        case STORE_ATTR:
-            return -2;
-        case DELETE_ATTR:
-            return -1;
-        case STORE_GLOBAL:
-            return -1;
-        case DELETE_GLOBAL:
-            return 0;
-        case DUP_TOPX:
-            return oparg;
-        case LOAD_CONST:
-            return 1;
-        case LOAD_NAME:
-            return 1;
-        case BUILD_TUPLE:
-        case BUILD_LIST:
-        case BUILD_SET:
-            return 1-oparg;
-        case BUILD_MAP:
-            return 1;
-        case LOAD_ATTR:
-            return 0;
-        case COMPARE_OP:
-            return -1;
-        case IMPORT_NAME:
-            return -1;
-        case IMPORT_FROM:
-            return 1;
-
-        case JUMP_FORWARD:
-        case JUMP_IF_TRUE_OR_POP:  /* -1 if jump not taken */
-        case JUMP_IF_FALSE_OR_POP:  /*  "" */
-        case JUMP_ABSOLUTE:
-            return 0;
-
-        case POP_JUMP_IF_FALSE:
-        case POP_JUMP_IF_TRUE:
-            return -1;
-
-        case LOAD_GLOBAL:
-            return 1;
-
-        case CONTINUE_LOOP:
-            return 0;
-        case SETUP_LOOP:
-        case SETUP_EXCEPT:
-        case SETUP_FINALLY:
-            return 0;
-
-        case LOAD_FAST:
-            return 1;
-        case STORE_FAST:
-            return -1;
-        case DELETE_FAST:
-            return 0;
-
-        case RAISE_VARARGS:
-            return -oparg;
-#define NARGS(o) (((o) % 256) + 2*((o) / 256))
-        case CALL_FUNCTION:
-            return -NARGS(oparg);
-        case CALL_FUNCTION_VAR:
-        case CALL_FUNCTION_KW:
-            return -NARGS(oparg)-1;
-        case CALL_FUNCTION_VAR_KW:
-            return -NARGS(oparg)-2;
-#undef NARGS
-        case MAKE_FUNCTION:
-            return -oparg;
-        case BUILD_SLICE:
-            if (oparg == 3)
-                return -2;
-            else
-                return -1;
-
-        case MAKE_CLOSURE:
-            return -oparg-1;
-        case LOAD_CLOSURE:
-            return 1;
-        case LOAD_DEREF:
-            return 1;
-        case STORE_DEREF:
-            return -1;
-        default:
-            fprintf(stderr, "opcode = %d\n", opcode);
-            Py_FatalError("opcode_stack_effect()");
-
-    }
-    return 0; /* not reachable */
-}
-
-/* Add an opcode with no argument.
-   Returns 0 on failure, 1 on success.
-*/
-
-static int
-compiler_addop(struct compiler *c, int opcode)
-{
-    basicblock *b;
-    struct instr *i;
-    int off;
-    off = compiler_next_instr(c, c->u->u_curblock);
-    if (off < 0)
-        return 0;
-    b = c->u->u_curblock;
-    i = &b->b_instr[off];
-    i->i_opcode = opcode;
-    i->i_hasarg = 0;
-    if (opcode == RETURN_VALUE)
-        b->b_return = 1;
-    compiler_set_lineno(c, off);
-    return 1;
-}
-
-static int
-compiler_add_o(struct compiler *c, PyObject *dict, PyObject *o)
-{
-    PyObject *t, *v;
-    Py_ssize_t arg;
-    double d;
-
-    /* necessary to make sure types aren't coerced (e.g., int and long) */
-    /* _and_ to distinguish 0.0 from -0.0 e.g. on IEEE platforms */
-    if (PyFloat_Check(o)) {
-        d = PyFloat_AS_DOUBLE(o);
-        /* all we need is to make the tuple different in either the 0.0
-         * or -0.0 case from all others, just to avoid the "coercion".
-         */
-        if (d == 0.0 && copysign(1.0, d) < 0.0)
-            t = PyTuple_Pack(3, o, o->ob_type, Py_None);
-        else
-            t = PyTuple_Pack(2, o, o->ob_type);
-    }
-#ifndef WITHOUT_COMPLEX
-    else if (PyComplex_Check(o)) {
-        Py_complex z;
-        int real_negzero, imag_negzero;
-        /* For the complex case we must make complex(x, 0.)
-           different from complex(x, -0.) and complex(0., y)
-           different from complex(-0., y), for any x and y.
-           All four complex zeros must be distinguished.*/
-        z = PyComplex_AsCComplex(o);
-        real_negzero = z.real == 0.0 && copysign(1.0, z.real) < 0.0;
-        imag_negzero = z.imag == 0.0 && copysign(1.0, z.imag) < 0.0;
-        if (real_negzero && imag_negzero) {
-            t = PyTuple_Pack(5, o, o->ob_type,
-                             Py_None, Py_None, Py_None);
-        }
-        else if (imag_negzero) {
-            t = PyTuple_Pack(4, o, o->ob_type, Py_None, Py_None);
-        }
-        else if (real_negzero) {
-            t = PyTuple_Pack(3, o, o->ob_type, Py_None);
-        }
-        else {
-            t = PyTuple_Pack(2, o, o->ob_type);
-        }
-    }
-#endif /* WITHOUT_COMPLEX */
-    else {
-        t = PyTuple_Pack(2, o, o->ob_type);
-    }
-    if (t == NULL)
-        return -1;
-
-    v = PyDict_GetItem(dict, t);
-    if (!v) {
-        arg = PyDict_Size(dict);
-        v = PyInt_FromLong(arg);
-        if (!v) {
-            Py_DECREF(t);
-            return -1;
-        }
-        if (PyDict_SetItem(dict, t, v) < 0) {
-            Py_DECREF(t);
-            Py_DECREF(v);
-            return -1;
-        }
-        Py_DECREF(v);
-    }
-    else
-        arg = PyInt_AsLong(v);
-    Py_DECREF(t);
-    return arg;
-}
-
-static int
-compiler_addop_o(struct compiler *c, int opcode, PyObject *dict,
-                     PyObject *o)
-{
-    int arg = compiler_add_o(c, dict, o);
-    if (arg < 0)
-        return 0;
-    return compiler_addop_i(c, opcode, arg);
-}
-
-static int
-compiler_addop_name(struct compiler *c, int opcode, PyObject *dict,
-                    PyObject *o)
-{
-    int arg;
-    PyObject *mangled = _Py_Mangle(c->u->u_private, o);
-    if (!mangled)
-        return 0;
-    arg = compiler_add_o(c, dict, mangled);
-    Py_DECREF(mangled);
-    if (arg < 0)
-        return 0;
-    return compiler_addop_i(c, opcode, arg);
-}
-
-/* Add an opcode with an integer argument.
-   Returns 0 on failure, 1 on success.
-*/
-
-static int
-compiler_addop_i(struct compiler *c, int opcode, int oparg)
-{
-    struct instr *i;
-    int off;
-    off = compiler_next_instr(c, c->u->u_curblock);
-    if (off < 0)
-        return 0;
-    i = &c->u->u_curblock->b_instr[off];
-    i->i_opcode = opcode;
-    i->i_oparg = oparg;
-    i->i_hasarg = 1;
-    compiler_set_lineno(c, off);
-    return 1;
-}
-
-static int
-compiler_addop_j(struct compiler *c, int opcode, basicblock *b, int absolute)
-{
-    struct instr *i;
-    int off;
-
-    assert(b != NULL);
-    off = compiler_next_instr(c, c->u->u_curblock);
-    if (off < 0)
-        return 0;
-    i = &c->u->u_curblock->b_instr[off];
-    i->i_opcode = opcode;
-    i->i_target = b;
-    i->i_hasarg = 1;
-    if (absolute)
-        i->i_jabs = 1;
-    else
-        i->i_jrel = 1;
-    compiler_set_lineno(c, off);
-    return 1;
-}
-
-/* The distinction between NEW_BLOCK and NEXT_BLOCK is subtle.  (I'd
-   like to find better names.)  NEW_BLOCK() creates a new block and sets
-   it as the current block.  NEXT_BLOCK() also creates an implicit jump
-   from the current block to the new block.
-*/
-
-/* The returns inside these macros make it impossible to decref objects
-   created in the local function.  Local objects should use the arena.
-*/
-
-
-#define NEW_BLOCK(C) { \
-    if (compiler_use_new_block((C)) == NULL) \
-        return 0; \
-}
-
-#define NEXT_BLOCK(C) { \
-    if (compiler_next_block((C)) == NULL) \
-        return 0; \
-}
-
-#define ADDOP(C, OP) { \
-    if (!compiler_addop((C), (OP))) \
-        return 0; \
-}
-
-#define ADDOP_IN_SCOPE(C, OP) { \
-    if (!compiler_addop((C), (OP))) { \
-        compiler_exit_scope(c); \
-        return 0; \
-    } \
-}
-
-#define ADDOP_O(C, OP, O, TYPE) { \
-    if (!compiler_addop_o((C), (OP), (C)->u->u_ ## TYPE, (O))) \
-        return 0; \
-}
-
-#define ADDOP_NAME(C, OP, O, TYPE) { \
-    if (!compiler_addop_name((C), (OP), (C)->u->u_ ## TYPE, (O))) \
-        return 0; \
-}
-
-#define ADDOP_I(C, OP, O) { \
-    if (!compiler_addop_i((C), (OP), (O))) \
-        return 0; \
-}
-
-#define ADDOP_JABS(C, OP, O) { \
-    if (!compiler_addop_j((C), (OP), (O), 1)) \
-        return 0; \
-}
-
-#define ADDOP_JREL(C, OP, O) { \
-    if (!compiler_addop_j((C), (OP), (O), 0)) \
-        return 0; \
-}
-
-/* VISIT and VISIT_SEQ takes an ASDL type as their second argument.  They use
-   the ASDL name to synthesize the name of the C type and the visit function.
-*/
-
-#define VISIT(C, TYPE, V) {\
-    if (!compiler_visit_ ## TYPE((C), (V))) \
-        return 0; \
-}
-
-#define VISIT_IN_SCOPE(C, TYPE, V) {\
-    if (!compiler_visit_ ## TYPE((C), (V))) { \
-        compiler_exit_scope(c); \
-        return 0; \
-    } \
-}
-
-#define VISIT_SLICE(C, V, CTX) {\
-    if (!compiler_visit_slice((C), (V), (CTX))) \
-        return 0; \
-}
-
-#define VISIT_SEQ(C, TYPE, SEQ) { \
-    int _i; \
-    asdl_seq *seq = (SEQ); /* avoid variable capture */ \
-    for (_i = 0; _i < asdl_seq_LEN(seq); _i++) { \
-        TYPE ## _ty elt = (TYPE ## _ty)asdl_seq_GET(seq, _i); \
-        if (!compiler_visit_ ## TYPE((C), elt)) \
-            return 0; \
-    } \
-}
-
-#define VISIT_SEQ_IN_SCOPE(C, TYPE, SEQ) { \
-    int _i; \
-    asdl_seq *seq = (SEQ); /* avoid variable capture */ \
-    for (_i = 0; _i < asdl_seq_LEN(seq); _i++) { \
-        TYPE ## _ty elt = (TYPE ## _ty)asdl_seq_GET(seq, _i); \
-        if (!compiler_visit_ ## TYPE((C), elt)) { \
-            compiler_exit_scope(c); \
-            return 0; \
-        } \
-    } \
-}
-
-static int
-compiler_isdocstring(stmt_ty s)
-{
-    if (s->kind != Expr_kind)
-        return 0;
-    return s->v.Expr.value->kind == Str_kind;
-}
-
-/* Compile a sequence of statements, checking for a docstring. */
-
-static int
-compiler_body(struct compiler *c, asdl_seq *stmts)
-{
-    int i = 0;
-    stmt_ty st;
-
-    if (!asdl_seq_LEN(stmts))
-        return 1;
-    st = (stmt_ty)asdl_seq_GET(stmts, 0);
-    if (compiler_isdocstring(st) && Py_OptimizeFlag < 2) {
-        /* don't generate docstrings if -OO */
-        i = 1;
-        VISIT(c, expr, st->v.Expr.value);
-        if (!compiler_nameop(c, __doc__, Store))
-            return 0;
-    }
-    for (; i < asdl_seq_LEN(stmts); i++)
-        VISIT(c, stmt, (stmt_ty)asdl_seq_GET(stmts, i));
-    return 1;
-}
-
-static PyCodeObject *
-compiler_mod(struct compiler *c, mod_ty mod)
-{
-    PyCodeObject *co;
-    int addNone = 1;
-    static PyObject *module;
-    if (!module) {
-        module = PyString_InternFromString("<module>");
-        if (!module)
-            return NULL;
-    }
-    /* Use 0 for firstlineno initially, will fixup in assemble(). */
-    if (!compiler_enter_scope(c, module, mod, 0))
-        return NULL;
-    switch (mod->kind) {
-    case Module_kind:
-        if (!compiler_body(c, mod->v.Module.body)) {
-            compiler_exit_scope(c);
-            return 0;
-        }
-        break;
-    case Interactive_kind:
-        c->c_interactive = 1;
-        VISIT_SEQ_IN_SCOPE(c, stmt,
-                                mod->v.Interactive.body);
-        break;
-    case Expression_kind:
-        VISIT_IN_SCOPE(c, expr, mod->v.Expression.body);
-        addNone = 0;
-        break;
-    case Suite_kind:
-        PyErr_SetString(PyExc_SystemError,
-                        "suite should not be possible");
-        return 0;
-    default:
-        PyErr_Format(PyExc_SystemError,
-                     "module kind %d should not be possible",
-                     mod->kind);
-        return 0;
-    }
-    co = assemble(c, addNone);
-    compiler_exit_scope(c);
-    return co;
-}
-
-/* The test for LOCAL must come before the test for FREE in order to
-   handle classes where name is both local and free.  The local var is
-   a method and the free var is a free var referenced within a method.
-*/
-
-static int
-get_ref_type(struct compiler *c, PyObject *name)
-{
-    int scope = PyST_GetScope(c->u->u_ste, name);
-    if (scope == 0) {
-        char buf[350];
-        PyOS_snprintf(buf, sizeof(buf),
-                      "unknown scope for %.100s in %.100s(%s) in %s\n"
-                      "symbols: %s\nlocals: %s\nglobals: %s",
-                      PyString_AS_STRING(name),
-                      PyString_AS_STRING(c->u->u_name),
-                      PyObject_REPR(c->u->u_ste->ste_id),
-                      c->c_filename,
-                      PyObject_REPR(c->u->u_ste->ste_symbols),
-                      PyObject_REPR(c->u->u_varnames),
-                      PyObject_REPR(c->u->u_names)
-        );
-        Py_FatalError(buf);
-    }
-
-    return scope;
-}
-
-static int
-compiler_lookup_arg(PyObject *dict, PyObject *name)
-{
-    PyObject *k, *v;
-    k = PyTuple_Pack(2, name, name->ob_type);
-    if (k == NULL)
-        return -1;
-    v = PyDict_GetItem(dict, k);
-    Py_DECREF(k);
-    if (v == NULL)
-        return -1;
-    return PyInt_AS_LONG(v);
-}
-
-static int
-compiler_make_closure(struct compiler *c, PyCodeObject *co, int args)
-{
-    int i, free = PyCode_GetNumFree(co);
-    if (free == 0) {
-        ADDOP_O(c, LOAD_CONST, (PyObject*)co, consts);
-        ADDOP_I(c, MAKE_FUNCTION, args);
-        return 1;
-    }
-    for (i = 0; i < free; ++i) {
-        /* Bypass com_addop_varname because it will generate
-           LOAD_DEREF but LOAD_CLOSURE is needed.
-        */
-        PyObject *name = PyTuple_GET_ITEM(co->co_freevars, i);
-        int arg, reftype;
-
-        /* Special case: If a class contains a method with a
-           free variable that has the same name as a method,
-           the name will be considered free *and* local in the
-           class.  It should be handled by the closure, as
-           well as by the normal name loookup logic.
-        */
-        reftype = get_ref_type(c, name);
-        if (reftype == CELL)
-            arg = compiler_lookup_arg(c->u->u_cellvars, name);
-        else /* (reftype == FREE) */
-            arg = compiler_lookup_arg(c->u->u_freevars, name);
-        if (arg == -1) {
-            printf("lookup %s in %s %d %d\n"
-                "freevars of %s: %s\n",
-                PyObject_REPR(name),
-                PyString_AS_STRING(c->u->u_name),
-                reftype, arg,
-                PyString_AS_STRING(co->co_name),
-                PyObject_REPR(co->co_freevars));
-            Py_FatalError("compiler_make_closure()");
-        }
-        ADDOP_I(c, LOAD_CLOSURE, arg);
-    }
-    ADDOP_I(c, BUILD_TUPLE, free);
-    ADDOP_O(c, LOAD_CONST, (PyObject*)co, consts);
-    ADDOP_I(c, MAKE_CLOSURE, args);
-    return 1;
-}
-
-static int
-compiler_decorators(struct compiler *c, asdl_seq* decos)
-{
-    int i;
-
-    if (!decos)
-        return 1;
-
-    for (i = 0; i < asdl_seq_LEN(decos); i++) {
-        VISIT(c, expr, (expr_ty)asdl_seq_GET(decos, i));
-    }
-    return 1;
-}
-
-static int
-compiler_arguments(struct compiler *c, arguments_ty args)
-{
-    int i;
-    int n = asdl_seq_LEN(args->args);
-    /* Correctly handle nested argument lists */
-    for (i = 0; i < n; i++) {
-        expr_ty arg = (expr_ty)asdl_seq_GET(args->args, i);
-        if (arg->kind == Tuple_kind) {
-            PyObject *id = PyString_FromFormat(".%d", i);
-            if (id == NULL) {
-                return 0;
-            }
-            if (!compiler_nameop(c, id, Load)) {
-                Py_DECREF(id);
-                return 0;
-            }
-            Py_DECREF(id);
-            VISIT(c, expr, arg);
-        }
-    }
-    return 1;
-}
-
-static int
-compiler_function(struct compiler *c, stmt_ty s)
-{
-    PyCodeObject *co;
-    PyObject *first_const = Py_None;
-    arguments_ty args = s->v.FunctionDef.args;
-    asdl_seq* decos = s->v.FunctionDef.decorator_list;
-    stmt_ty st;
-    int i, n, docstring;
-
-    assert(s->kind == FunctionDef_kind);
-
-    if (!compiler_decorators(c, decos))
-        return 0;
-    if (args->defaults)
-        VISIT_SEQ(c, expr, args->defaults);
-    if (!compiler_enter_scope(c, s->v.FunctionDef.name, (void *)s,
-                              s->lineno))
-        return 0;
-
-    st = (stmt_ty)asdl_seq_GET(s->v.FunctionDef.body, 0);
-    docstring = compiler_isdocstring(st);
-    if (docstring && Py_OptimizeFlag < 2)
-        first_const = st->v.Expr.value->v.Str.s;
-    if (compiler_add_o(c, c->u->u_consts, first_const) < 0)      {
-        compiler_exit_scope(c);
-        return 0;
-    }
-
-    /* unpack nested arguments */
-    compiler_arguments(c, args);
-
-    c->u->u_argcount = asdl_seq_LEN(args->args);
-    n = asdl_seq_LEN(s->v.FunctionDef.body);
-    /* if there was a docstring, we need to skip the first statement */
-    for (i = docstring; i < n; i++) {
-        st = (stmt_ty)asdl_seq_GET(s->v.FunctionDef.body, i);
-        VISIT_IN_SCOPE(c, stmt, st);
-    }
-    co = assemble(c, 1);
-    compiler_exit_scope(c);
-    if (co == NULL)
-        return 0;
-
-    compiler_make_closure(c, co, asdl_seq_LEN(args->defaults));
-    Py_DECREF(co);
-
-    for (i = 0; i < asdl_seq_LEN(decos); i++) {
-        ADDOP_I(c, CALL_FUNCTION, 1);
-    }
-
-    return compiler_nameop(c, s->v.FunctionDef.name, Store);
-}
-
-static int
-compiler_class(struct compiler *c, stmt_ty s)
-{
-    int n, i;
-    PyCodeObject *co;
-    PyObject *str;
-    asdl_seq* decos = s->v.ClassDef.decorator_list;
-
-    if (!compiler_decorators(c, decos))
-        return 0;
-
-    /* push class name on stack, needed by BUILD_CLASS */
-    ADDOP_O(c, LOAD_CONST, s->v.ClassDef.name, consts);
-    /* push the tuple of base classes on the stack */
-    n = asdl_seq_LEN(s->v.ClassDef.bases);
-    if (n > 0)
-        VISIT_SEQ(c, expr, s->v.ClassDef.bases);
-    ADDOP_I(c, BUILD_TUPLE, n);
-    if (!compiler_enter_scope(c, s->v.ClassDef.name, (void *)s,
-                              s->lineno))
-        return 0;
-    Py_XDECREF(c->u->u_private);
-    c->u->u_private = s->v.ClassDef.name;
-    Py_INCREF(c->u->u_private);
-    str = PyString_InternFromString("__name__");
-    if (!str || !compiler_nameop(c, str, Load)) {
-        Py_XDECREF(str);
-        compiler_exit_scope(c);
-        return 0;
-    }
-
-    Py_DECREF(str);
-    str = PyString_InternFromString("__module__");
-    if (!str || !compiler_nameop(c, str, Store)) {
-        Py_XDECREF(str);
-        compiler_exit_scope(c);
-        return 0;
-    }
-    Py_DECREF(str);
-
-    if (!compiler_body(c, s->v.ClassDef.body)) {
-        compiler_exit_scope(c);
-        return 0;
-    }
-
-    ADDOP_IN_SCOPE(c, LOAD_LOCALS);
-    ADDOP_IN_SCOPE(c, RETURN_VALUE);
-    co = assemble(c, 1);
-    compiler_exit_scope(c);
-    if (co == NULL)
-        return 0;
-
-    compiler_make_closure(c, co, 0);
-    Py_DECREF(co);
-
-    ADDOP_I(c, CALL_FUNCTION, 0);
-    ADDOP(c, BUILD_CLASS);
-    /* apply decorators */
-    for (i = 0; i < asdl_seq_LEN(decos); i++) {
-        ADDOP_I(c, CALL_FUNCTION, 1);
-    }
-    if (!compiler_nameop(c, s->v.ClassDef.name, Store))
-        return 0;
-    return 1;
-}
-
-static int
-compiler_ifexp(struct compiler *c, expr_ty e)
-{
-    basicblock *end, *next;
-
-    assert(e->kind == IfExp_kind);
-    end = compiler_new_block(c);
-    if (end == NULL)
-        return 0;
-    next = compiler_new_block(c);
-    if (next == NULL)
-        return 0;
-    VISIT(c, expr, e->v.IfExp.test);
-    ADDOP_JABS(c, POP_JUMP_IF_FALSE, next);
-    VISIT(c, expr, e->v.IfExp.body);
-    ADDOP_JREL(c, JUMP_FORWARD, end);
-    compiler_use_next_block(c, next);
-    VISIT(c, expr, e->v.IfExp.orelse);
-    compiler_use_next_block(c, end);
-    return 1;
-}
-
-static int
-compiler_lambda(struct compiler *c, expr_ty e)
-{
-    PyCodeObject *co;
-    static identifier name;
-    arguments_ty args = e->v.Lambda.args;
-    assert(e->kind == Lambda_kind);
-
-    if (!name) {
-        name = PyString_InternFromString("<lambda>");
-        if (!name)
-            return 0;
-    }
-
-    if (args->defaults)
-        VISIT_SEQ(c, expr, args->defaults);
-    if (!compiler_enter_scope(c, name, (void *)e, e->lineno))
-        return 0;
-
-    /* unpack nested arguments */
-    compiler_arguments(c, args);
-
-    /* Make None the first constant, so the lambda can't have a
-       docstring. */
-    if (compiler_add_o(c, c->u->u_consts, Py_None) < 0)
-        return 0;
-
-    c->u->u_argcount = asdl_seq_LEN(args->args);
-    VISIT_IN_SCOPE(c, expr, e->v.Lambda.body);
-    if (c->u->u_ste->ste_generator) {
-        ADDOP_IN_SCOPE(c, POP_TOP);
-    }
-    else {
-        ADDOP_IN_SCOPE(c, RETURN_VALUE);
-    }
-    co = assemble(c, 1);
-    compiler_exit_scope(c);
-    if (co == NULL)
-        return 0;
-
-    compiler_make_closure(c, co, asdl_seq_LEN(args->defaults));
-    Py_DECREF(co);
-
-    return 1;
-}
-
-static int
-compiler_print(struct compiler *c, stmt_ty s)
-{
-    int i, n;
-    bool dest;
-
-    assert(s->kind == Print_kind);
-    n = asdl_seq_LEN(s->v.Print.values);
-    dest = false;
-    if (s->v.Print.dest) {
-        VISIT(c, expr, s->v.Print.dest);
-        dest = true;
-    }
-    for (i = 0; i < n; i++) {
-        expr_ty e = (expr_ty)asdl_seq_GET(s->v.Print.values, i);
-        if (dest) {
-            ADDOP(c, DUP_TOP);
-            VISIT(c, expr, e);
-            ADDOP(c, ROT_TWO);
-            ADDOP(c, PRINT_ITEM_TO);
-        }
-        else {
-            VISIT(c, expr, e);
-            ADDOP(c, PRINT_ITEM);
-        }
-    }
-    if (s->v.Print.nl) {
-        if (dest)
-            ADDOP(c, PRINT_NEWLINE_TO)
-        else
-            ADDOP(c, PRINT_NEWLINE)
-    }
-    else if (dest)
-        ADDOP(c, POP_TOP);
-    return 1;
-}
-
-static int
-compiler_if(struct compiler *c, stmt_ty s)
-{
-    basicblock *end, *next;
-    int constant;
-    assert(s->kind == If_kind);
-    end = compiler_new_block(c);
-    if (end == NULL)
-        return 0;
-
-    constant = expr_constant(s->v.If.test);
-    /* constant = 0: "if 0"
-     * constant = 1: "if 1", "if 2", ...
-     * constant = -1: rest */
-    if (constant == 0) {
-        if (s->v.If.orelse)
-            VISIT_SEQ(c, stmt, s->v.If.orelse);
-    } else if (constant == 1) {
-        VISIT_SEQ(c, stmt, s->v.If.body);
-    } else {
-        if (s->v.If.orelse) {
-            next = compiler_new_block(c);
-            if (next == NULL)
-                return 0;
-        }
-        else
-            next = end;
-        VISIT(c, expr, s->v.If.test);
-        ADDOP_JABS(c, POP_JUMP_IF_FALSE, next);
-        VISIT_SEQ(c, stmt, s->v.If.body);
-        ADDOP_JREL(c, JUMP_FORWARD, end);
-        if (s->v.If.orelse) {
-            compiler_use_next_block(c, next);
-            VISIT_SEQ(c, stmt, s->v.If.orelse);
-        }
-    }
-    compiler_use_next_block(c, end);
-    return 1;
-}
-
-static int
-compiler_for(struct compiler *c, stmt_ty s)
-{
-    basicblock *start, *cleanup, *end;
-
-    start = compiler_new_block(c);
-    cleanup = compiler_new_block(c);
-    end = compiler_new_block(c);
-    if (start == NULL || end == NULL || cleanup == NULL)
-        return 0;
-    ADDOP_JREL(c, SETUP_LOOP, end);
-    if (!compiler_push_fblock(c, LOOP, start))
-        return 0;
-    VISIT(c, expr, s->v.For.iter);
-    ADDOP(c, GET_ITER);
-    compiler_use_next_block(c, start);
-    ADDOP_JREL(c, FOR_ITER, cleanup);
-    VISIT(c, expr, s->v.For.target);
-    VISIT_SEQ(c, stmt, s->v.For.body);
-    ADDOP_JABS(c, JUMP_ABSOLUTE, start);
-    compiler_use_next_block(c, cleanup);
-    ADDOP(c, POP_BLOCK);
-    compiler_pop_fblock(c, LOOP, start);
-    VISIT_SEQ(c, stmt, s->v.For.orelse);
-    compiler_use_next_block(c, end);
-    return 1;
-}
-
-static int
-compiler_while(struct compiler *c, stmt_ty s)
-{
-    basicblock *loop, *orelse, *end, *anchor = NULL;
-    int constant = expr_constant(s->v.While.test);
-
-    if (constant == 0) {
-        if (s->v.While.orelse)
-            VISIT_SEQ(c, stmt, s->v.While.orelse);
-        return 1;
-    }
-    loop = compiler_new_block(c);
-    end = compiler_new_block(c);
-    if (constant == -1) {
-        anchor = compiler_new_block(c);
-        if (anchor == NULL)
-            return 0;
-    }
-    if (loop == NULL || end == NULL)
-        return 0;
-    if (s->v.While.orelse) {
-        orelse = compiler_new_block(c);
-        if (orelse == NULL)
-            return 0;
-    }
-    else
-        orelse = NULL;
-
-    ADDOP_JREL(c, SETUP_LOOP, end);
-    compiler_use_next_block(c, loop);
-    if (!compiler_push_fblock(c, LOOP, loop))
-        return 0;
-    if (constant == -1) {
-        VISIT(c, expr, s->v.While.test);
-        ADDOP_JABS(c, POP_JUMP_IF_FALSE, anchor);
-    }
-    VISIT_SEQ(c, stmt, s->v.While.body);
-    ADDOP_JABS(c, JUMP_ABSOLUTE, loop);
-
-    /* XXX should the two POP instructions be in a separate block
-       if there is no else clause ?
-    */
-
-    if (constant == -1) {
-        compiler_use_next_block(c, anchor);
-        ADDOP(c, POP_BLOCK);
-    }
-    compiler_pop_fblock(c, LOOP, loop);
-    if (orelse != NULL) /* what if orelse is just pass? */
-        VISIT_SEQ(c, stmt, s->v.While.orelse);
-    compiler_use_next_block(c, end);
-
-    return 1;
-}
-
-static int
-compiler_continue(struct compiler *c)
-{
-    static const char LOOP_ERROR_MSG[] = "'continue' not properly in loop";
-    static const char IN_FINALLY_ERROR_MSG[] =
-                    "'continue' not supported inside 'finally' clause";
-    int i;
-
-    if (!c->u->u_nfblocks)
-        return compiler_error(c, LOOP_ERROR_MSG);
-    i = c->u->u_nfblocks - 1;
-    switch (c->u->u_fblock[i].fb_type) {
-    case LOOP:
-        ADDOP_JABS(c, JUMP_ABSOLUTE, c->u->u_fblock[i].fb_block);
-        break;
-    case EXCEPT:
-    case FINALLY_TRY:
-        while (--i >= 0 && c->u->u_fblock[i].fb_type != LOOP) {
-            /* Prevent continue anywhere under a finally
-                  even if hidden in a sub-try or except. */
-            if (c->u->u_fblock[i].fb_type == FINALLY_END)
-                return compiler_error(c, IN_FINALLY_ERROR_MSG);
-        }
-        if (i == -1)
-            return compiler_error(c, LOOP_ERROR_MSG);
-        ADDOP_JABS(c, CONTINUE_LOOP, c->u->u_fblock[i].fb_block);
-        break;
-    case FINALLY_END:
-        return compiler_error(c, IN_FINALLY_ERROR_MSG);
-    }
-
-    return 1;
-}
-
-/* Code generated for "try: <body> finally: <finalbody>" is as follows:
-
-        SETUP_FINALLY           L
-        <code for body>
-        POP_BLOCK
-        LOAD_CONST              <None>
-    L:          <code for finalbody>
-        END_FINALLY
-
-   The special instructions use the block stack.  Each block
-   stack entry contains the instruction that created it (here
-   SETUP_FINALLY), the level of the value stack at the time the
-   block stack entry was created, and a label (here L).
-
-   SETUP_FINALLY:
-    Pushes the current value stack level and the label
-    onto the block stack.
-   POP_BLOCK:
-    Pops en entry from the block stack, and pops the value
-    stack until its level is the same as indicated on the
-    block stack.  (The label is ignored.)
-   END_FINALLY:
-    Pops a variable number of entries from the *value* stack
-    and re-raises the exception they specify.  The number of
-    entries popped depends on the (pseudo) exception type.
-
-   The block stack is unwound when an exception is raised:
-   when a SETUP_FINALLY entry is found, the exception is pushed
-   onto the value stack (and the exception condition is cleared),
-   and the interpreter jumps to the label gotten from the block
-   stack.
-*/
-
-static int
-compiler_try_finally(struct compiler *c, stmt_ty s)
-{
-    basicblock *body, *end;
-    body = compiler_new_block(c);
-    end = compiler_new_block(c);
-    if (body == NULL || end == NULL)
-        return 0;
-
-    ADDOP_JREL(c, SETUP_FINALLY, end);
-    compiler_use_next_block(c, body);
-    if (!compiler_push_fblock(c, FINALLY_TRY, body))
-        return 0;
-    VISIT_SEQ(c, stmt, s->v.TryFinally.body);
-    ADDOP(c, POP_BLOCK);
-    compiler_pop_fblock(c, FINALLY_TRY, body);
-
-    ADDOP_O(c, LOAD_CONST, Py_None, consts);
-    compiler_use_next_block(c, end);
-    if (!compiler_push_fblock(c, FINALLY_END, end))
-        return 0;
-    VISIT_SEQ(c, stmt, s->v.TryFinally.finalbody);
-    ADDOP(c, END_FINALLY);
-    compiler_pop_fblock(c, FINALLY_END, end);
-
-    return 1;
-}
-
-/*
-   Code generated for "try: S except E1, V1: S1 except E2, V2: S2 ...":
-   (The contents of the value stack is shown in [], with the top
-   at the right; 'tb' is trace-back info, 'val' the exception's
-   associated value, and 'exc' the exception.)
-
-   Value stack          Label   Instruction     Argument
-   []                           SETUP_EXCEPT    L1
-   []                           <code for S>
-   []                           POP_BLOCK
-   []                           JUMP_FORWARD    L0
-
-   [tb, val, exc]       L1:     DUP                             )
-   [tb, val, exc, exc]          <evaluate E1>                   )
-   [tb, val, exc, exc, E1]      COMPARE_OP      EXC_MATCH       ) only if E1
-   [tb, val, exc, 1-or-0]       POP_JUMP_IF_FALSE       L2      )
-   [tb, val, exc]               POP
-   [tb, val]                    <assign to V1>  (or POP if no V1)
-   [tb]                         POP
-   []                           <code for S1>
-                                JUMP_FORWARD    L0
-
-   [tb, val, exc]       L2:     DUP
-   .............................etc.......................
-
-   [tb, val, exc]       Ln+1:   END_FINALLY     # re-raise exception
-
-   []                   L0:     <next statement>
-
-   Of course, parts are not generated if Vi or Ei is not present.
-*/
-static int
-compiler_try_except(struct compiler *c, stmt_ty s)
-{
-    basicblock *body, *orelse, *except, *end;
-    int i, n;
-
-    body = compiler_new_block(c);
-    except = compiler_new_block(c);
-    orelse = compiler_new_block(c);
-    end = compiler_new_block(c);
-    if (body == NULL || except == NULL || orelse == NULL || end == NULL)
-        return 0;
-    ADDOP_JREL(c, SETUP_EXCEPT, except);
-    compiler_use_next_block(c, body);
-    if (!compiler_push_fblock(c, EXCEPT, body))
-        return 0;
-    VISIT_SEQ(c, stmt, s->v.TryExcept.body);
-    ADDOP(c, POP_BLOCK);
-    compiler_pop_fblock(c, EXCEPT, body);
-    ADDOP_JREL(c, JUMP_FORWARD, orelse);
-    n = asdl_seq_LEN(s->v.TryExcept.handlers);
-    compiler_use_next_block(c, except);
-    for (i = 0; i < n; i++) {
-        excepthandler_ty handler = (excepthandler_ty)asdl_seq_GET(
-                                        s->v.TryExcept.handlers, i);
-        if (!handler->v.ExceptHandler.type && i < n-1)
-            return compiler_error(c, "default 'except:' must be last");
-        c->u->u_lineno_set = false;
-        c->u->u_lineno = handler->lineno;
-        except = compiler_new_block(c);
-        if (except == NULL)
-            return 0;
-        if (handler->v.ExceptHandler.type) {
-            ADDOP(c, DUP_TOP);
-            VISIT(c, expr, handler->v.ExceptHandler.type);
-            ADDOP_I(c, COMPARE_OP, PyCmp_EXC_MATCH);
-            ADDOP_JABS(c, POP_JUMP_IF_FALSE, except);
-        }
-        ADDOP(c, POP_TOP);
-        if (handler->v.ExceptHandler.name) {
-            VISIT(c, expr, handler->v.ExceptHandler.name);
-        }
-        else {
-            ADDOP(c, POP_TOP);
-        }
-        ADDOP(c, POP_TOP);
-        VISIT_SEQ(c, stmt, handler->v.ExceptHandler.body);
-        ADDOP_JREL(c, JUMP_FORWARD, end);
-        compiler_use_next_block(c, except);
-    }
-    ADDOP(c, END_FINALLY);
-    compiler_use_next_block(c, orelse);
-    VISIT_SEQ(c, stmt, s->v.TryExcept.orelse);
-    compiler_use_next_block(c, end);
-    return 1;
-}
-
-static int
-compiler_import_as(struct compiler *c, identifier name, identifier asname)
-{
-    /* The IMPORT_NAME opcode was already generated.  This function
-       merely needs to bind the result to a name.
-
-       If there is a dot in name, we need to split it and emit a
-       LOAD_ATTR for each name.
-    */
-    const char *src = PyString_AS_STRING(name);
-    const char *dot = strchr(src, '.');
-    if (dot) {
-        /* Consume the base module name to get the first attribute */
-        src = dot + 1;
-        while (dot) {
-            /* NB src is only defined when dot != NULL */
-            PyObject *attr;
-            dot = strchr(src, '.');
-            attr = PyString_FromStringAndSize(src,
-                                dot ? dot - src : strlen(src));
-            if (!attr)
-                return -1;
-            ADDOP_O(c, LOAD_ATTR, attr, names);
-            Py_DECREF(attr);
-            src = dot + 1;
-        }
-    }
-    return compiler_nameop(c, asname, Store);
-}
-
-static int
-compiler_import(struct compiler *c, stmt_ty s)
-{
-    /* The Import node stores a module name like a.b.c as a single
-       string.  This is convenient for all cases except
-         import a.b.c as d
-       where we need to parse that string to extract the individual
-       module names.
-       XXX Perhaps change the representation to make this case simpler?
-     */
-    int i, n = asdl_seq_LEN(s->v.Import.names);
-
-    for (i = 0; i < n; i++) {
-        alias_ty alias = (alias_ty)asdl_seq_GET(s->v.Import.names, i);
-        int r;
-        PyObject *level;
-
-        if (c->c_flags && (c->c_flags->cf_flags & CO_FUTURE_ABSOLUTE_IMPORT))
-            level = PyInt_FromLong(0);
-        else
-            level = PyInt_FromLong(-1);
-
-        if (level == NULL)
-            return 0;
-
-        ADDOP_O(c, LOAD_CONST, level, consts);
-        Py_DECREF(level);
-        ADDOP_O(c, LOAD_CONST, Py_None, consts);
-        ADDOP_NAME(c, IMPORT_NAME, alias->name, names);
-
-        if (alias->asname) {
-            r = compiler_import_as(c, alias->name, alias->asname);
-            if (!r)
-                return r;
-        }
-        else {
-            identifier tmp = alias->name;
-            const char *base = PyString_AS_STRING(alias->name);
-            char *dot = strchr(base, '.');
-            if (dot)
-                tmp = PyString_FromStringAndSize(base,
-                                                 dot - base);
-            r = compiler_nameop(c, tmp, Store);
-            if (dot) {
-                Py_DECREF(tmp);
-            }
-            if (!r)
-                return r;
-        }
-    }
-    return 1;
-}
-
-static int
-compiler_from_import(struct compiler *c, stmt_ty s)
-{
-    int i, n = asdl_seq_LEN(s->v.ImportFrom.names);
-
-    PyObject *names = PyTuple_New(n);
-    PyObject *level;
-    static PyObject *empty_string;
-
-    if (!empty_string) {
-        empty_string = PyString_FromString("");
-        if (!empty_string)
-            return 0;
-    }
-
-    if (!names)
-        return 0;
-
-    if (s->v.ImportFrom.level == 0 && c->c_flags &&
-        !(c->c_flags->cf_flags & CO_FUTURE_ABSOLUTE_IMPORT))
-        level = PyInt_FromLong(-1);
-    else
-        level = PyInt_FromLong(s->v.ImportFrom.level);
-
-    if (!level) {
-        Py_DECREF(names);
-        return 0;
-    }
-
-    /* build up the names */
-    for (i = 0; i < n; i++) {
-        alias_ty alias = (alias_ty)asdl_seq_GET(s->v.ImportFrom.names, i);
-        Py_INCREF(alias->name);
-        PyTuple_SET_ITEM(names, i, alias->name);
-    }
-
-    if (s->lineno > c->c_future->ff_lineno && s->v.ImportFrom.module &&
-        !strcmp(PyString_AS_STRING(s->v.ImportFrom.module), "__future__")) {
-        Py_DECREF(level);
-        Py_DECREF(names);
-        return compiler_error(c, "from __future__ imports must occur "
-                              "at the beginning of the file");
-    }
-
-    ADDOP_O(c, LOAD_CONST, level, consts);
-    Py_DECREF(level);
-    ADDOP_O(c, LOAD_CONST, names, consts);
-    Py_DECREF(names);
-    if (s->v.ImportFrom.module) {
-        ADDOP_NAME(c, IMPORT_NAME, s->v.ImportFrom.module, names);
-    }
-    else {
-        ADDOP_NAME(c, IMPORT_NAME, empty_string, names);
-    }
-    for (i = 0; i < n; i++) {
-        alias_ty alias = (alias_ty)asdl_seq_GET(s->v.ImportFrom.names, i);
-        identifier store_name;
-
-        if (i == 0 && *PyString_AS_STRING(alias->name) == '*') {
-            assert(n == 1);
-            ADDOP(c, IMPORT_STAR);
-            return 1;
-        }
-
-        ADDOP_NAME(c, IMPORT_FROM, alias->name, names);
-        store_name = alias->name;
-        if (alias->asname)
-            store_name = alias->asname;
-
-        if (!compiler_nameop(c, store_name, Store)) {
-            Py_DECREF(names);
-            return 0;
-        }
-    }
-    /* remove imported module */
-    ADDOP(c, POP_TOP);
-    return 1;
-}
-
-static int
-compiler_assert(struct compiler *c, stmt_ty s)
-{
-    static PyObject *assertion_error = NULL;
-    basicblock *end;
-
-    if (Py_OptimizeFlag)
-        return 1;
-    if (assertion_error == NULL) {
-        assertion_error = PyString_InternFromString("AssertionError");
-        if (assertion_error == NULL)
-            return 0;
-    }
-    if (s->v.Assert.test->kind == Tuple_kind &&
-        asdl_seq_LEN(s->v.Assert.test->v.Tuple.elts) > 0) {
-        const char* msg =
-            "assertion is always true, perhaps remove parentheses?";
-        if (PyErr_WarnExplicit(PyExc_SyntaxWarning, msg, c->c_filename,
-                               c->u->u_lineno, NULL, NULL) == -1)
-            return 0;
-    }
-    VISIT(c, expr, s->v.Assert.test);
-    end = compiler_new_block(c);
-    if (end == NULL)
-        return 0;
-    ADDOP_JABS(c, POP_JUMP_IF_TRUE, end);
-    ADDOP_O(c, LOAD_GLOBAL, assertion_error, names);
-    if (s->v.Assert.msg) {
-        VISIT(c, expr, s->v.Assert.msg);
-        ADDOP_I(c, RAISE_VARARGS, 2);
-    }
-    else {
-        ADDOP_I(c, RAISE_VARARGS, 1);
-    }
-    compiler_use_next_block(c, end);
-    return 1;
-}
-
-static int
-compiler_visit_stmt(struct compiler *c, stmt_ty s)
-{
-    int i, n;
-
-    /* Always assign a lineno to the next instruction for a stmt. */
-    c->u->u_lineno = s->lineno;
-    c->u->u_lineno_set = false;
-
-    switch (s->kind) {
-    case FunctionDef_kind:
-        return compiler_function(c, s);
-    case ClassDef_kind:
-        return compiler_class(c, s);
-    case Return_kind:
-        if (c->u->u_ste->ste_type != FunctionBlock)
-            return compiler_error(c, "'return' outside function");
-        if (s->v.Return.value) {
-            VISIT(c, expr, s->v.Return.value);
-        }
-        else
-            ADDOP_O(c, LOAD_CONST, Py_None, consts);
-        ADDOP(c, RETURN_VALUE);
-        break;
-    case Delete_kind:
-        VISIT_SEQ(c, expr, s->v.Delete.targets)
-        break;
-    case Assign_kind:
-        n = asdl_seq_LEN(s->v.Assign.targets);
-        VISIT(c, expr, s->v.Assign.value);
-        for (i = 0; i < n; i++) {
-            if (i < n - 1)
-                ADDOP(c, DUP_TOP);
-            VISIT(c, expr,
-                  (expr_ty)asdl_seq_GET(s->v.Assign.targets, i));
-        }
-        break;
-    case AugAssign_kind:
-        return compiler_augassign(c, s);
-    case Print_kind:
-        return compiler_print(c, s);
-    case For_kind:
-        return compiler_for(c, s);
-    case While_kind:
-        return compiler_while(c, s);
-    case If_kind:
-        return compiler_if(c, s);
-    case Raise_kind:
-        n = 0;
-        if (s->v.Raise.type) {
-            VISIT(c, expr, s->v.Raise.type);
-            n++;
-            if (s->v.Raise.inst) {
-                VISIT(c, expr, s->v.Raise.inst);
-                n++;
-                if (s->v.Raise.tback) {
-                    VISIT(c, expr, s->v.Raise.tback);
-                    n++;
-                }
-            }
-        }
-        ADDOP_I(c, RAISE_VARARGS, n);
-        break;
-    case TryExcept_kind:
-        return compiler_try_except(c, s);
-    case TryFinally_kind:
-        return compiler_try_finally(c, s);
-    case Assert_kind:
-        return compiler_assert(c, s);
-    case Import_kind:
-        return compiler_import(c, s);
-    case ImportFrom_kind:
-        return compiler_from_import(c, s);
-    case Exec_kind:
-        VISIT(c, expr, s->v.Exec.body);
-        if (s->v.Exec.globals) {
-            VISIT(c, expr, s->v.Exec.globals);
-            if (s->v.Exec.locals) {
-                VISIT(c, expr, s->v.Exec.locals);
-            } else {
-                ADDOP(c, DUP_TOP);
-            }
-        } else {
-            ADDOP_O(c, LOAD_CONST, Py_None, consts);
-            ADDOP(c, DUP_TOP);
-        }
-        ADDOP(c, EXEC_STMT);
-        break;
-    case Global_kind:
-        break;
-    case Expr_kind:
-        if (c->c_interactive && c->c_nestlevel <= 1) {
-            VISIT(c, expr, s->v.Expr.value);
-            ADDOP(c, PRINT_EXPR);
-        }
-        else if (s->v.Expr.value->kind != Str_kind &&
-                 s->v.Expr.value->kind != Num_kind) {
-            VISIT(c, expr, s->v.Expr.value);
-            ADDOP(c, POP_TOP);
-        }
-        break;
-    case Pass_kind:
-        break;
-    case Break_kind:
-        if (!compiler_in_loop(c))
-            return compiler_error(c, "'break' outside loop");
-        ADDOP(c, BREAK_LOOP);
-        break;
-    case Continue_kind:
-        return compiler_continue(c);
-    case With_kind:
-        return compiler_with(c, s);
-    }
-    return 1;
-}
-
-static int
-unaryop(unaryop_ty op)
-{
-    switch (op) {
-    case Invert:
-        return UNARY_INVERT;
-    case Not:
-        return UNARY_NOT;
-    case UAdd:
-        return UNARY_POSITIVE;
-    case USub:
-        return UNARY_NEGATIVE;
-    default:
-        PyErr_Format(PyExc_SystemError,
-            "unary op %d should not be possible", op);
-        return 0;
-    }
-}
-
-static int
-binop(struct compiler *c, operator_ty op)
-{
-    switch (op) {
-    case Add:
-        return BINARY_ADD;
-    case Sub:
-        return BINARY_SUBTRACT;
-    case Mult:
-        return BINARY_MULTIPLY;
-    case Div:
-        if (c->c_flags && c->c_flags->cf_flags & CO_FUTURE_DIVISION)
-            return BINARY_TRUE_DIVIDE;
-        else
-            return BINARY_DIVIDE;
-    case Mod:
-        return BINARY_MODULO;
-    case Pow:
-        return BINARY_POWER;
-    case LShift:
-        return BINARY_LSHIFT;
-    case RShift:
-        return BINARY_RSHIFT;
-    case BitOr:
-        return BINARY_OR;
-    case BitXor:
-        return BINARY_XOR;
-    case BitAnd:
-        return BINARY_AND;
-    case FloorDiv:
-        return BINARY_FLOOR_DIVIDE;
-    default:
-        PyErr_Format(PyExc_SystemError,
-            "binary op %d should not be possible", op);
-        return 0;
-    }
-}
-
-static int
-cmpop(cmpop_ty op)
-{
-    switch (op) {
-    case Eq:
-        return PyCmp_EQ;
-    case NotEq:
-        return PyCmp_NE;
-    case Lt:
-        return PyCmp_LT;
-    case LtE:
-        return PyCmp_LE;
-    case Gt:
-        return PyCmp_GT;
-    case GtE:
-        return PyCmp_GE;
-    case Is:
-        return PyCmp_IS;
-    case IsNot:
-        return PyCmp_IS_NOT;
-    case In:
-        return PyCmp_IN;
-    case NotIn:
-        return PyCmp_NOT_IN;
-    default:
-        return PyCmp_BAD;
-    }
-}
-
-static int
-inplace_binop(struct compiler *c, operator_ty op)
-{
-    switch (op) {
-    case Add:
-        return INPLACE_ADD;
-    case Sub:
-        return INPLACE_SUBTRACT;
-    case Mult:
-        return INPLACE_MULTIPLY;
-    case Div:
-        if (c->c_flags && c->c_flags->cf_flags & CO_FUTURE_DIVISION)
-            return INPLACE_TRUE_DIVIDE;
-        else
-            return INPLACE_DIVIDE;
-    case Mod:
-        return INPLACE_MODULO;
-    case Pow:
-        return INPLACE_POWER;
-    case LShift:
-        return INPLACE_LSHIFT;
-    case RShift:
-        return INPLACE_RSHIFT;
-    case BitOr:
-        return INPLACE_OR;
-    case BitXor:
-        return INPLACE_XOR;
-    case BitAnd:
-        return INPLACE_AND;
-    case FloorDiv:
-        return INPLACE_FLOOR_DIVIDE;
-    default:
-        PyErr_Format(PyExc_SystemError,
-            "inplace binary op %d should not be possible", op);
-        return 0;
-    }
-}
-
-static int
-compiler_nameop(struct compiler *c, identifier name, expr_context_ty ctx)
-{
-    int op, scope, arg;
-    enum { OP_FAST, OP_GLOBAL, OP_DEREF, OP_NAME } optype;
-
-    PyObject *dict = c->u->u_names;
-    PyObject *mangled;
-    /* XXX AugStore isn't used anywhere! */
-
-    mangled = _Py_Mangle(c->u->u_private, name);
-    if (!mangled)
-        return 0;
-
-    op = 0;
-    optype = OP_NAME;
-    scope = PyST_GetScope(c->u->u_ste, mangled);
-    switch (scope) {
-    case FREE:
-        dict = c->u->u_freevars;
-        optype = OP_DEREF;
-        break;
-    case CELL:
-        dict = c->u->u_cellvars;
-        optype = OP_DEREF;
-        break;
-    case LOCAL:
-        if (c->u->u_ste->ste_type == FunctionBlock)
-            optype = OP_FAST;
-        break;
-    case GLOBAL_IMPLICIT:
-        if (c->u->u_ste->ste_type == FunctionBlock &&
-            !c->u->u_ste->ste_unoptimized)
-            optype = OP_GLOBAL;
-        break;
-    case GLOBAL_EXPLICIT:
-        optype = OP_GLOBAL;
-        break;
-    default:
-        /* scope can be 0 */
-        break;
-    }
-
-    /* XXX Leave assert here, but handle __doc__ and the like better */
-    assert(scope || PyString_AS_STRING(name)[0] == '_');
-
-    switch (optype) {
-    case OP_DEREF:
-        switch (ctx) {
-        case Load: op = LOAD_DEREF; break;
-        case Store: op = STORE_DEREF; break;
-        case AugLoad:
-        case AugStore:
-            break;
-        case Del:
-            PyErr_Format(PyExc_SyntaxError,
-                         "can not delete variable '%s' referenced "
-                         "in nested scope",
-                         PyString_AS_STRING(name));
-            Py_DECREF(mangled);
-            return 0;
-        case Param:
-        default:
-            PyErr_SetString(PyExc_SystemError,
-                            "param invalid for deref variable");
-            return 0;
-        }
-        break;
-    case OP_FAST:
-        switch (ctx) {
-        case Load: op = LOAD_FAST; break;
-        case Store: op = STORE_FAST; break;
-        case Del: op = DELETE_FAST; break;
-        case AugLoad:
-        case AugStore:
-            break;
-        case Param:
-        default:
-            PyErr_SetString(PyExc_SystemError,
-                            "param invalid for local variable");
-            return 0;
-        }
-        ADDOP_O(c, op, mangled, varnames);
-        Py_DECREF(mangled);
-        return 1;
-    case OP_GLOBAL:
-        switch (ctx) {
-        case Load: op = LOAD_GLOBAL; break;
-        case Store: op = STORE_GLOBAL; break;
-        case Del: op = DELETE_GLOBAL; break;
-        case AugLoad:
-        case AugStore:
-            break;
-        case Param:
-        default:
-            PyErr_SetString(PyExc_SystemError,
-                            "param invalid for global variable");
-            return 0;
-        }
-        break;
-    case OP_NAME:
-        switch (ctx) {
-        case Load: op = LOAD_NAME; break;
-        case Store: op = STORE_NAME; break;
-        case Del: op = DELETE_NAME; break;
-        case AugLoad:
-        case AugStore:
-            break;
-        case Param:
-        default:
-            PyErr_SetString(PyExc_SystemError,
-                            "param invalid for name variable");
-            return 0;
-        }
-        break;
-    }
-
-    assert(op);
-    arg = compiler_add_o(c, dict, mangled);
-    Py_DECREF(mangled);
-    if (arg < 0)
-        return 0;
-    return compiler_addop_i(c, op, arg);
-}
-
-static int
-compiler_boolop(struct compiler *c, expr_ty e)
-{
-    basicblock *end;
-    int jumpi, i, n;
-    asdl_seq *s;
-
-    assert(e->kind == BoolOp_kind);
-    if (e->v.BoolOp.op == And)
-        jumpi = JUMP_IF_FALSE_OR_POP;
-    else
-        jumpi = JUMP_IF_TRUE_OR_POP;
-    end = compiler_new_block(c);
-    if (end == NULL)
-        return 0;
-    s = e->v.BoolOp.values;
-    n = asdl_seq_LEN(s) - 1;
-    assert(n >= 0);
-    for (i = 0; i < n; ++i) {
-        VISIT(c, expr, (expr_ty)asdl_seq_GET(s, i));
-        ADDOP_JABS(c, jumpi, end);
-    }
-    VISIT(c, expr, (expr_ty)asdl_seq_GET(s, n));
-    compiler_use_next_block(c, end);
-    return 1;
-}
-
-static int
-compiler_list(struct compiler *c, expr_ty e)
-{
-    int n = asdl_seq_LEN(e->v.List.elts);
-    if (e->v.List.ctx == Store) {
-        ADDOP_I(c, UNPACK_SEQUENCE, n);
-    }
-    VISIT_SEQ(c, expr, e->v.List.elts);
-    if (e->v.List.ctx == Load) {
-        ADDOP_I(c, BUILD_LIST, n);
-    }
-    return 1;
-}
-
-static int
-compiler_tuple(struct compiler *c, expr_ty e)
-{
-    int n = asdl_seq_LEN(e->v.Tuple.elts);
-    if (e->v.Tuple.ctx == Store) {
-        ADDOP_I(c, UNPACK_SEQUENCE, n);
-    }
-    VISIT_SEQ(c, expr, e->v.Tuple.elts);
-    if (e->v.Tuple.ctx == Load) {
-        ADDOP_I(c, BUILD_TUPLE, n);
-    }
-    return 1;
-}
-
-static int
-compiler_compare(struct compiler *c, expr_ty e)
-{
-    int i, n;
-    basicblock *cleanup = NULL;
-
-    /* XXX the logic can be cleaned up for 1 or multiple comparisons */
-    VISIT(c, expr, e->v.Compare.left);
-    n = asdl_seq_LEN(e->v.Compare.ops);
-    assert(n > 0);
-    if (n > 1) {
-        cleanup = compiler_new_block(c);
-        if (cleanup == NULL)
-            return 0;
-        VISIT(c, expr,
-            (expr_ty)asdl_seq_GET(e->v.Compare.comparators, 0));
-    }
-    for (i = 1; i < n; i++) {
-        ADDOP(c, DUP_TOP);
-        ADDOP(c, ROT_THREE);
-        ADDOP_I(c, COMPARE_OP,
-            cmpop((cmpop_ty)(asdl_seq_GET(
-                                      e->v.Compare.ops, i - 1))));
-        ADDOP_JABS(c, JUMP_IF_FALSE_OR_POP, cleanup);
-        NEXT_BLOCK(c);
-        if (i < (n - 1))
-            VISIT(c, expr,
-                (expr_ty)asdl_seq_GET(e->v.Compare.comparators, i));
-    }
-    VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Compare.comparators, n - 1));
-    ADDOP_I(c, COMPARE_OP,
-           cmpop((cmpop_ty)(asdl_seq_GET(e->v.Compare.ops, n - 1))));
-    if (n > 1) {
-        basicblock *end = compiler_new_block(c);
-        if (end == NULL)
-            return 0;
-        ADDOP_JREL(c, JUMP_FORWARD, end);
-        compiler_use_next_block(c, cleanup);
-        ADDOP(c, ROT_TWO);
-        ADDOP(c, POP_TOP);
-        compiler_use_next_block(c, end);
-    }
-    return 1;
-}
-
-static int
-compiler_call(struct compiler *c, expr_ty e)
-{
-    int n, code = 0;
-
-    VISIT(c, expr, e->v.Call.func);
-    n = asdl_seq_LEN(e->v.Call.args);
-    VISIT_SEQ(c, expr, e->v.Call.args);
-    if (e->v.Call.keywords) {
-        VISIT_SEQ(c, keyword, e->v.Call.keywords);
-        n |= asdl_seq_LEN(e->v.Call.keywords) << 8;
-    }
-    if (e->v.Call.starargs) {
-        VISIT(c, expr, e->v.Call.starargs);
-        code |= 1;
-    }
-    if (e->v.Call.kwargs) {
-        VISIT(c, expr, e->v.Call.kwargs);
-        code |= 2;
-    }
-    switch (code) {
-    case 0:
-        ADDOP_I(c, CALL_FUNCTION, n);
-        break;
-    case 1:
-        ADDOP_I(c, CALL_FUNCTION_VAR, n);
-        break;
-    case 2:
-        ADDOP_I(c, CALL_FUNCTION_KW, n);
-        break;
-    case 3:
-        ADDOP_I(c, CALL_FUNCTION_VAR_KW, n);
-        break;
-    }
-    return 1;
-}
-
-static int
-compiler_listcomp_generator(struct compiler *c, asdl_seq *generators,
-                            int gen_index, expr_ty elt)
-{
-    /* generate code for the iterator, then each of the ifs,
-       and then write to the element */
-
-    comprehension_ty l;
-    basicblock *start, *anchor, *skip, *if_cleanup;
-    int i, n;
-
-    start = compiler_new_block(c);
-    skip = compiler_new_block(c);
-    if_cleanup = compiler_new_block(c);
-    anchor = compiler_new_block(c);
-
-    if (start == NULL || skip == NULL || if_cleanup == NULL ||
-        anchor == NULL)
-        return 0;
-
-    l = (comprehension_ty)asdl_seq_GET(generators, gen_index);
-    VISIT(c, expr, l->iter);
-    ADDOP(c, GET_ITER);
-    compiler_use_next_block(c, start);
-    ADDOP_JREL(c, FOR_ITER, anchor);
-    NEXT_BLOCK(c);
-    VISIT(c, expr, l->target);
-
-    /* XXX this needs to be cleaned up...a lot! */
-    n = asdl_seq_LEN(l->ifs);
-    for (i = 0; i < n; i++) {
-        expr_ty e = (expr_ty)asdl_seq_GET(l->ifs, i);
-        VISIT(c, expr, e);
-        ADDOP_JABS(c, POP_JUMP_IF_FALSE, if_cleanup);
-        NEXT_BLOCK(c);
-    }
-
-    if (++gen_index < asdl_seq_LEN(generators))
-        if (!compiler_listcomp_generator(c, generators, gen_index, elt))
-        return 0;
-
-    /* only append after the last for generator */
-    if (gen_index >= asdl_seq_LEN(generators)) {
-        VISIT(c, expr, elt);
-        ADDOP_I(c, LIST_APPEND, gen_index+1);
-
-        compiler_use_next_block(c, skip);
-    }
-    compiler_use_next_block(c, if_cleanup);
-    ADDOP_JABS(c, JUMP_ABSOLUTE, start);
-    compiler_use_next_block(c, anchor);
-
-    return 1;
-}
-
-static int
-compiler_listcomp(struct compiler *c, expr_ty e)
-{
-    assert(e->kind == ListComp_kind);
-    ADDOP_I(c, BUILD_LIST, 0);
-    return compiler_listcomp_generator(c, e->v.ListComp.generators, 0,
-                                       e->v.ListComp.elt);
-}
-
-/* Dict and set comprehensions and generator expressions work by creating a
-   nested function to perform the actual iteration. This means that the
-   iteration variables don't leak into the current scope.
-   The defined function is called immediately following its definition, with the
-   result of that call being the result of the expression.
-   The LC/SC version returns the populated container, while the GE version is
-   flagged in symtable.c as a generator, so it returns the generator object
-   when the function is called.
-   This code *knows* that the loop cannot contain break, continue, or return,
-   so it cheats and skips the SETUP_LOOP/POP_BLOCK steps used in normal loops.
-
-   Possible cleanups:
-    - iterate over the generator sequence instead of using recursion
-*/
-
-static int
-compiler_comprehension_generator(struct compiler *c,
-                                 asdl_seq *generators, int gen_index,
-                                 expr_ty elt, expr_ty val, int type)
-{
-    /* generate code for the iterator, then each of the ifs,
-       and then write to the element */
-
-    comprehension_ty gen;
-    basicblock *start, *anchor, *skip, *if_cleanup;
-    int i, n;
-
-    start = compiler_new_block(c);
-    skip = compiler_new_block(c);
-    if_cleanup = compiler_new_block(c);
-    anchor = compiler_new_block(c);
-
-    if (start == NULL || skip == NULL || if_cleanup == NULL ||
-        anchor == NULL)
-        return 0;
-
-    gen = (comprehension_ty)asdl_seq_GET(generators, gen_index);
-
-    if (gen_index == 0) {
-        /* Receive outermost iter as an implicit argument */
-        c->u->u_argcount = 1;
-        ADDOP_I(c, LOAD_FAST, 0);
-    }
-    else {
-        /* Sub-iter - calculate on the fly */
-        VISIT(c, expr, gen->iter);
-        ADDOP(c, GET_ITER);
-    }
-    compiler_use_next_block(c, start);
-    ADDOP_JREL(c, FOR_ITER, anchor);
-    NEXT_BLOCK(c);
-    VISIT(c, expr, gen->target);
-
-    /* XXX this needs to be cleaned up...a lot! */
-    n = asdl_seq_LEN(gen->ifs);
-    for (i = 0; i < n; i++) {
-        expr_ty e = (expr_ty)asdl_seq_GET(gen->ifs, i);
-        VISIT(c, expr, e);
-        ADDOP_JABS(c, POP_JUMP_IF_FALSE, if_cleanup);
-        NEXT_BLOCK(c);
-    }
-
-    if (++gen_index < asdl_seq_LEN(generators))
-        if (!compiler_comprehension_generator(c,
-                                              generators, gen_index,
-                                              elt, val, type))
-        return 0;
-
-    /* only append after the last for generator */
-    if (gen_index >= asdl_seq_LEN(generators)) {
-        /* comprehension specific code */
-        switch (type) {
-        case COMP_GENEXP:
-            VISIT(c, expr, elt);
-            ADDOP(c, YIELD_VALUE);
-            ADDOP(c, POP_TOP);
-            break;
-        case COMP_SETCOMP:
-            VISIT(c, expr, elt);
-            ADDOP_I(c, SET_ADD, gen_index + 1);
-            break;
-        case COMP_DICTCOMP:
-            /* With 'd[k] = v', v is evaluated before k, so we do
-               the same. */
-            VISIT(c, expr, val);
-            VISIT(c, expr, elt);
-            ADDOP_I(c, MAP_ADD, gen_index + 1);
-            break;
-        default:
-            return 0;
-        }
-
-        compiler_use_next_block(c, skip);
-    }
-    compiler_use_next_block(c, if_cleanup);
-    ADDOP_JABS(c, JUMP_ABSOLUTE, start);
-    compiler_use_next_block(c, anchor);
-
-    return 1;
-}
-
-static int
-compiler_comprehension(struct compiler *c, expr_ty e, int type, identifier name,
-                       asdl_seq *generators, expr_ty elt, expr_ty val)
-{
-    PyCodeObject *co = NULL;
-    expr_ty outermost_iter;
-
-    outermost_iter = ((comprehension_ty)
-                      asdl_seq_GET(generators, 0))->iter;
-
-    if (!compiler_enter_scope(c, name, (void *)e, e->lineno))
-        goto error;
-
-    if (type != COMP_GENEXP) {
-        int op;
-        switch (type) {
-        case COMP_SETCOMP:
-            op = BUILD_SET;
-            break;
-        case COMP_DICTCOMP:
-            op = BUILD_MAP;
-            break;
-        default:
-            PyErr_Format(PyExc_SystemError,
-                         "unknown comprehension type %d", type);
-            goto error_in_scope;
-        }
-
-        ADDOP_I(c, op, 0);
-    }
-
-    if (!compiler_comprehension_generator(c, generators, 0, elt,
-                                          val, type))
-        goto error_in_scope;
-
-    if (type != COMP_GENEXP) {
-        ADDOP(c, RETURN_VALUE);
-    }
-
-    co = assemble(c, 1);
-    compiler_exit_scope(c);
-    if (co == NULL)
-        goto error;
-
-    if (!compiler_make_closure(c, co, 0))
-        goto error;
-    Py_DECREF(co);
-
-    VISIT(c, expr, outermost_iter);
-    ADDOP(c, GET_ITER);
-    ADDOP_I(c, CALL_FUNCTION, 1);
-    return 1;
-error_in_scope:
-    compiler_exit_scope(c);
-error:
-    Py_XDECREF(co);
-    return 0;
-}
-
-static int
-compiler_genexp(struct compiler *c, expr_ty e)
-{
-    static identifier name;
-    if (!name) {
-        name = PyString_FromString("<genexpr>");
-        if (!name)
-            return 0;
-    }
-    assert(e->kind == GeneratorExp_kind);
-    return compiler_comprehension(c, e, COMP_GENEXP, name,
-                                  e->v.GeneratorExp.generators,
-                                  e->v.GeneratorExp.elt, NULL);
-}
-
-static int
-compiler_setcomp(struct compiler *c, expr_ty e)
-{
-    static identifier name;
-    if (!name) {
-        name = PyString_FromString("<setcomp>");
-        if (!name)
-            return 0;
-    }
-    assert(e->kind == SetComp_kind);
-    return compiler_comprehension(c, e, COMP_SETCOMP, name,
-                                  e->v.SetComp.generators,
-                                  e->v.SetComp.elt, NULL);
-}
-
-static int
-compiler_dictcomp(struct compiler *c, expr_ty e)
-{
-    static identifier name;
-    if (!name) {
-        name = PyString_FromString("<dictcomp>");
-        if (!name)
-            return 0;
-    }
-    assert(e->kind == DictComp_kind);
-    return compiler_comprehension(c, e, COMP_DICTCOMP, name,
-                                  e->v.DictComp.generators,
-                                  e->v.DictComp.key, e->v.DictComp.value);
-}
-
-static int
-compiler_visit_keyword(struct compiler *c, keyword_ty k)
-{
-    ADDOP_O(c, LOAD_CONST, k->arg, consts);
-    VISIT(c, expr, k->value);
-    return 1;
-}
-
-/* Test whether expression is constant.  For constants, report
-   whether they are true or false.
-
-   Return values: 1 for true, 0 for false, -1 for non-constant.
- */
-
-static int
-expr_constant(expr_ty e)
-{
-    switch (e->kind) {
-    case Num_kind:
-        return PyObject_IsTrue(e->v.Num.n);
-    case Str_kind:
-        return PyObject_IsTrue(e->v.Str.s);
-    case Name_kind:
-        /* __debug__ is not assignable, so we can optimize
-         * it away in if and while statements */
-        if (strcmp(PyString_AS_STRING(e->v.Name.id),
-                   "__debug__") == 0)
-                   return ! Py_OptimizeFlag;
-        /* fall through */
-    default:
-        return -1;
-    }
-}
-
-/*
-   Implements the with statement from PEP 343.
-
-   The semantics outlined in that PEP are as follows:
-
-   with EXPR as VAR:
-       BLOCK
-
-   It is implemented roughly as:
-
-   context = EXPR
-   exit = context.__exit__  # not calling it
-   value = context.__enter__()
-   try:
-       VAR = value  # if VAR present in the syntax
-       BLOCK
-   finally:
-       if an exception was raised:
-       exc = copy of (exception, instance, traceback)
-       else:
-       exc = (None, None, None)
-       exit(*exc)
- */
-static int
-compiler_with(struct compiler *c, stmt_ty s)
-{
-    basicblock *block, *finally;
-
-    assert(s->kind == With_kind);
-
-    block = compiler_new_block(c);
-    finally = compiler_new_block(c);
-    if (!block || !finally)
-        return 0;
-
-    /* Evaluate EXPR */
-    VISIT(c, expr, s->v.With.context_expr);
-    ADDOP_JREL(c, SETUP_WITH, finally);
-
-    /* SETUP_WITH pushes a finally block. */
-    compiler_use_next_block(c, block);
-    /* Note that the block is actually called SETUP_WITH in ceval.c, but
-       functions the same as SETUP_FINALLY except that exceptions are
-       normalized. */
-    if (!compiler_push_fblock(c, FINALLY_TRY, block)) {
-        return 0;
-    }
-
-    if (s->v.With.optional_vars) {
-        VISIT(c, expr, s->v.With.optional_vars);
-    }
-    else {
-    /* Discard result from context.__enter__() */
-        ADDOP(c, POP_TOP);
-    }
-
-    /* BLOCK code */
-    VISIT_SEQ(c, stmt, s->v.With.body);
-
-    /* End of try block; start the finally block */
-    ADDOP(c, POP_BLOCK);
-    compiler_pop_fblock(c, FINALLY_TRY, block);
-
-    ADDOP_O(c, LOAD_CONST, Py_None, consts);
-    compiler_use_next_block(c, finally);
-    if (!compiler_push_fblock(c, FINALLY_END, finally))
-        return 0;
-
-    /* Finally block starts; context.__exit__ is on the stack under
-       the exception or return information. Just issue our magic
-       opcode. */
-    ADDOP(c, WITH_CLEANUP);
-
-    /* Finally block ends. */
-    ADDOP(c, END_FINALLY);
-    compiler_pop_fblock(c, FINALLY_END, finally);
-    return 1;
-}
-
-static int
-compiler_visit_expr(struct compiler *c, expr_ty e)
-{
-    int i, n;
-
-    /* If expr e has a different line number than the last expr/stmt,
-       set a new line number for the next instruction.
-    */
-    if (e->lineno > c->u->u_lineno) {
-        c->u->u_lineno = e->lineno;
-        c->u->u_lineno_set = false;
-    }
-    switch (e->kind) {
-    case BoolOp_kind:
-        return compiler_boolop(c, e);
-    case BinOp_kind:
-        VISIT(c, expr, e->v.BinOp.left);
-        VISIT(c, expr, e->v.BinOp.right);
-        ADDOP(c, binop(c, e->v.BinOp.op));
-        break;
-    case UnaryOp_kind:
-        VISIT(c, expr, e->v.UnaryOp.operand);
-        ADDOP(c, unaryop(e->v.UnaryOp.op));
-        break;
-    case Lambda_kind:
-        return compiler_lambda(c, e);
-    case IfExp_kind:
-        return compiler_ifexp(c, e);
-    case Dict_kind:
-        n = asdl_seq_LEN(e->v.Dict.values);
-        ADDOP_I(c, BUILD_MAP, (n>0xFFFF ? 0xFFFF : n));
-        for (i = 0; i < n; i++) {
-            VISIT(c, expr,
-                (expr_ty)asdl_seq_GET(e->v.Dict.values, i));
-            VISIT(c, expr,
-                (expr_ty)asdl_seq_GET(e->v.Dict.keys, i));
-            ADDOP(c, STORE_MAP);
-        }
-        break;
-    case Set_kind:
-        n = asdl_seq_LEN(e->v.Set.elts);
-        VISIT_SEQ(c, expr, e->v.Set.elts);
-        ADDOP_I(c, BUILD_SET, n);
-        break;
-    case ListComp_kind:
-        return compiler_listcomp(c, e);
-    case SetComp_kind:
-        return compiler_setcomp(c, e);
-    case DictComp_kind:
-        return compiler_dictcomp(c, e);
-    case GeneratorExp_kind:
-        return compiler_genexp(c, e);
-    case Yield_kind:
-        if (c->u->u_ste->ste_type != FunctionBlock)
-            return compiler_error(c, "'yield' outside function");
-        if (e->v.Yield.value) {
-            VISIT(c, expr, e->v.Yield.value);
-        }
-        else {
-            ADDOP_O(c, LOAD_CONST, Py_None, consts);
-        }
-        ADDOP(c, YIELD_VALUE);
-        break;
-    case Compare_kind:
-        return compiler_compare(c, e);
-    case Call_kind:
-        return compiler_call(c, e);
-    case Repr_kind:
-        VISIT(c, expr, e->v.Repr.value);
-        ADDOP(c, UNARY_CONVERT);
-        break;
-    case Num_kind:
-        ADDOP_O(c, LOAD_CONST, e->v.Num.n, consts);
-        break;
-    case Str_kind:
-        ADDOP_O(c, LOAD_CONST, e->v.Str.s, consts);
-        break;
-    /* The following exprs can be assignment targets. */
-    case Attribute_kind:
-        if (e->v.Attribute.ctx != AugStore)
-            VISIT(c, expr, e->v.Attribute.value);
-        switch (e->v.Attribute.ctx) {
-        case AugLoad:
-            ADDOP(c, DUP_TOP);
-            /* Fall through to load */
-        case Load:
-            ADDOP_NAME(c, LOAD_ATTR, e->v.Attribute.attr, names);
-            break;
-        case AugStore:
-            ADDOP(c, ROT_TWO);
-            /* Fall through to save */
-        case Store:
-            ADDOP_NAME(c, STORE_ATTR, e->v.Attribute.attr, names);
-            break;
-        case Del:
-            ADDOP_NAME(c, DELETE_ATTR, e->v.Attribute.attr, names);
-            break;
-        case Param:
-        default:
-            PyErr_SetString(PyExc_SystemError,
-                            "param invalid in attribute expression");
-            return 0;
-        }
-        break;
-    case Subscript_kind:
-        switch (e->v.Subscript.ctx) {
-        case AugLoad:
-            VISIT(c, expr, e->v.Subscript.value);
-            VISIT_SLICE(c, e->v.Subscript.slice, AugLoad);
-            break;
-        case Load:
-            VISIT(c, expr, e->v.Subscript.value);
-            VISIT_SLICE(c, e->v.Subscript.slice, Load);
-            break;
-        case AugStore:
-            VISIT_SLICE(c, e->v.Subscript.slice, AugStore);
-            break;
-        case Store:
-            VISIT(c, expr, e->v.Subscript.value);
-            VISIT_SLICE(c, e->v.Subscript.slice, Store);
-            break;
-        case Del:
-            VISIT(c, expr, e->v.Subscript.value);
-            VISIT_SLICE(c, e->v.Subscript.slice, Del);
-            break;
-        case Param:
-        default:
-            PyErr_SetString(PyExc_SystemError,
-                "param invalid in subscript expression");
-            return 0;
-        }
-        break;
-    case Name_kind:
-        return compiler_nameop(c, e->v.Name.id, e->v.Name.ctx);
-    /* child nodes of List and Tuple will have expr_context set */
-    case List_kind:
-        return compiler_list(c, e);
-    case Tuple_kind:
-        return compiler_tuple(c, e);
-    }
-    return 1;
-}
-
-static int
-compiler_augassign(struct compiler *c, stmt_ty s)
-{
-    expr_ty e = s->v.AugAssign.target;
-    expr_ty auge;
-
-    assert(s->kind == AugAssign_kind);
-
-    switch (e->kind) {
-    case Attribute_kind:
-        auge = Attribute(e->v.Attribute.value, e->v.Attribute.attr,
-                         AugLoad, e->lineno, e->col_offset, c->c_arena);
-        if (auge == NULL)
-            return 0;
-        VISIT(c, expr, auge);
-        VISIT(c, expr, s->v.AugAssign.value);
-        ADDOP(c, inplace_binop(c, s->v.AugAssign.op));
-        auge->v.Attribute.ctx = AugStore;
-        VISIT(c, expr, auge);
-        break;
-    case Subscript_kind:
-        auge = Subscript(e->v.Subscript.value, e->v.Subscript.slice,
-                         AugLoad, e->lineno, e->col_offset, c->c_arena);
-        if (auge == NULL)
-            return 0;
-        VISIT(c, expr, auge);
-        VISIT(c, expr, s->v.AugAssign.value);
-        ADDOP(c, inplace_binop(c, s->v.AugAssign.op));
-        auge->v.Subscript.ctx = AugStore;
-        VISIT(c, expr, auge);
-        break;
-    case Name_kind:
-        if (!compiler_nameop(c, e->v.Name.id, Load))
-            return 0;
-        VISIT(c, expr, s->v.AugAssign.value);
-        ADDOP(c, inplace_binop(c, s->v.AugAssign.op));
-        return compiler_nameop(c, e->v.Name.id, Store);
-    default:
-        PyErr_Format(PyExc_SystemError,
-            "invalid node type (%d) for augmented assignment",
-            e->kind);
-        return 0;
-    }
-    return 1;
-}
-
-static int
-compiler_push_fblock(struct compiler *c, enum fblocktype t, basicblock *b)
-{
-    struct fblockinfo *f;
-    if (c->u->u_nfblocks >= CO_MAXBLOCKS) {
-        PyErr_SetString(PyExc_SystemError,
-                        "too many statically nested blocks");
-        return 0;
-    }
-    f = &c->u->u_fblock[c->u->u_nfblocks++];
-    f->fb_type = t;
-    f->fb_block = b;
-    return 1;
-}
-
-static void
-compiler_pop_fblock(struct compiler *c, enum fblocktype t, basicblock *b)
-{
-    struct compiler_unit *u = c->u;
-    assert(u->u_nfblocks > 0);
-    u->u_nfblocks--;
-    assert(u->u_fblock[u->u_nfblocks].fb_type == t);
-    assert(u->u_fblock[u->u_nfblocks].fb_block == b);
-}
-
-static int
-compiler_in_loop(struct compiler *c) {
-    int i;
-    struct compiler_unit *u = c->u;
-    for (i = 0; i < u->u_nfblocks; ++i) {
-        if (u->u_fblock[i].fb_type == LOOP)
-            return 1;
-    }
-    return 0;
-}
-/* Raises a SyntaxError and returns 0.
-   If something goes wrong, a different exception may be raised.
-*/
-
-static int
-compiler_error(struct compiler *c, const char *errstr)
-{
-    PyObject *loc;
-    PyObject *u = NULL, *v = NULL;
-
-    loc = PyErr_ProgramText(c->c_filename, c->u->u_lineno);
-    if (!loc) {
-        Py_INCREF(Py_None);
-        loc = Py_None;
-    }
-    u = Py_BuildValue("(ziOO)", c->c_filename, c->u->u_lineno,
-                      Py_None, loc);
-    if (!u)
-        goto exit;
-    v = Py_BuildValue("(zO)", errstr, u);
-    if (!v)
-        goto exit;
-    PyErr_SetObject(PyExc_SyntaxError, v);
- exit:
-    Py_DECREF(loc);
-    Py_XDECREF(u);
-    Py_XDECREF(v);
-    return 0;
-}
-
-static int
-compiler_handle_subscr(struct compiler *c, const char *kind,
-                       expr_context_ty ctx)
-{
-    int op = 0;
-
-    /* XXX this code is duplicated */
-    switch (ctx) {
-        case AugLoad: /* fall through to Load */
-        case Load:    op = BINARY_SUBSCR; break;
-        case AugStore:/* fall through to Store */
-        case Store:   op = STORE_SUBSCR; break;
-        case Del:     op = DELETE_SUBSCR; break;
-        case Param:
-            PyErr_Format(PyExc_SystemError,
-                         "invalid %s kind %d in subscript\n",
-                         kind, ctx);
-            return 0;
-    }
-    if (ctx == AugLoad) {
-        ADDOP_I(c, DUP_TOPX, 2);
-    }
-    else if (ctx == AugStore) {
-        ADDOP(c, ROT_THREE);
-    }
-    ADDOP(c, op);
-    return 1;
-}
-
-static int
-compiler_slice(struct compiler *c, slice_ty s, expr_context_ty ctx)
-{
-    int n = 2;
-    assert(s->kind == Slice_kind);
-
-    /* only handles the cases where BUILD_SLICE is emitted */
-    if (s->v.Slice.lower) {
-        VISIT(c, expr, s->v.Slice.lower);
-    }
-    else {
-        ADDOP_O(c, LOAD_CONST, Py_None, consts);
-    }
-
-    if (s->v.Slice.upper) {
-        VISIT(c, expr, s->v.Slice.upper);
-    }
-    else {
-        ADDOP_O(c, LOAD_CONST, Py_None, consts);
-    }
-
-    if (s->v.Slice.step) {
-        n++;
-        VISIT(c, expr, s->v.Slice.step);
-    }
-    ADDOP_I(c, BUILD_SLICE, n);
-    return 1;
-}
-
-static int
-compiler_simple_slice(struct compiler *c, slice_ty s, expr_context_ty ctx)
-{
-    int op = 0, slice_offset = 0, stack_count = 0;
-
-    assert(s->v.Slice.step == NULL);
-    if (s->v.Slice.lower) {
-        slice_offset++;
-        stack_count++;
-        if (ctx != AugStore)
-            VISIT(c, expr, s->v.Slice.lower);
-    }
-    if (s->v.Slice.upper) {
-        slice_offset += 2;
-        stack_count++;
-        if (ctx != AugStore)
-            VISIT(c, expr, s->v.Slice.upper);
-    }
-
-    if (ctx == AugLoad) {
-        switch (stack_count) {
-        case 0: ADDOP(c, DUP_TOP); break;
-        case 1: ADDOP_I(c, DUP_TOPX, 2); break;
-        case 2: ADDOP_I(c, DUP_TOPX, 3); break;
-        }
-    }
-    else if (ctx == AugStore) {
-        switch (stack_count) {
-        case 0: ADDOP(c, ROT_TWO); break;
-        case 1: ADDOP(c, ROT_THREE); break;
-        case 2: ADDOP(c, ROT_FOUR); break;
-        }
-    }
-
-    switch (ctx) {
-    case AugLoad: /* fall through to Load */
-    case Load: op = SLICE; break;
-    case AugStore:/* fall through to Store */
-    case Store: op = STORE_SLICE; break;
-    case Del: op = DELETE_SLICE; break;
-    case Param:
-    default:
-        PyErr_SetString(PyExc_SystemError,
-                        "param invalid in simple slice");
-        return 0;
-    }
-
-    ADDOP(c, op + slice_offset);
-    return 1;
-}
-
-static int
-compiler_visit_nested_slice(struct compiler *c, slice_ty s,
-                            expr_context_ty ctx)
-{
-    switch (s->kind) {
-    case Ellipsis_kind:
-        ADDOP_O(c, LOAD_CONST, Py_Ellipsis, consts);
-        break;
-    case Slice_kind:
-        return compiler_slice(c, s, ctx);
-    case Index_kind:
-        VISIT(c, expr, s->v.Index.value);
-        break;
-    case ExtSlice_kind:
-    default:
-        PyErr_SetString(PyExc_SystemError,
-                        "extended slice invalid in nested slice");
-        return 0;
-    }
-    return 1;
-}
-
-static int
-compiler_visit_slice(struct compiler *c, slice_ty s, expr_context_ty ctx)
-{
-    char * kindname = NULL;
-    switch (s->kind) {
-    case Index_kind:
-        kindname = "index";
-        if (ctx != AugStore) {
-            VISIT(c, expr, s->v.Index.value);
-        }
-        break;
-    case Ellipsis_kind:
-        kindname = "ellipsis";
-        if (ctx != AugStore) {
-            ADDOP_O(c, LOAD_CONST, Py_Ellipsis, consts);
-        }
-        break;
-    case Slice_kind:
-        kindname = "slice";
-        if (!s->v.Slice.step)
-            return compiler_simple_slice(c, s, ctx);
-        if (ctx != AugStore) {
-            if (!compiler_slice(c, s, ctx))
-                return 0;
-        }
-        break;
-    case ExtSlice_kind:
-        kindname = "extended slice";
-        if (ctx != AugStore) {
-            int i, n = asdl_seq_LEN(s->v.ExtSlice.dims);
-            for (i = 0; i < n; i++) {
-                slice_ty sub = (slice_ty)asdl_seq_GET(
-                    s->v.ExtSlice.dims, i);
-                if (!compiler_visit_nested_slice(c, sub, ctx))
-                    return 0;
-            }
-            ADDOP_I(c, BUILD_TUPLE, n);
-        }
-        break;
-    default:
-        PyErr_Format(PyExc_SystemError,
-                     "invalid subscript kind %d", s->kind);
-        return 0;
-    }
-    return compiler_handle_subscr(c, kindname, ctx);
-}
-
-
-/* End of the compiler section, beginning of the assembler section */
-
-/* do depth-first search of basic block graph, starting with block.
-   post records the block indices in post-order.
-
-   XXX must handle implicit jumps from one block to next
-*/
-
-struct assembler {
-    PyObject *a_bytecode;  /* string containing bytecode */
-    int a_offset;              /* offset into bytecode */
-    int a_nblocks;             /* number of reachable blocks */
-    basicblock **a_postorder; /* list of blocks in dfs postorder */
-    PyObject *a_lnotab;    /* string containing lnotab */
-    int a_lnotab_off;      /* offset into lnotab */
-    int a_lineno;              /* last lineno of emitted instruction */
-    int a_lineno_off;      /* bytecode offset of last lineno */
-};
-
-static void
-dfs(struct compiler *c, basicblock *b, struct assembler *a)
-{
-    int i;
-    struct instr *instr = NULL;
-
-    if (b->b_seen)
-        return;
-    b->b_seen = 1;
-    if (b->b_next != NULL)
-        dfs(c, b->b_next, a);
-    for (i = 0; i < b->b_iused; i++) {
-        instr = &b->b_instr[i];
-        if (instr->i_jrel || instr->i_jabs)
-            dfs(c, instr->i_target, a);
-    }
-    a->a_postorder[a->a_nblocks++] = b;
-}
-
-static int
-stackdepth_walk(struct compiler *c, basicblock *b, int depth, int maxdepth)
-{
-    int i, target_depth;
-    struct instr *instr;
-    if (b->b_seen || b->b_startdepth >= depth)
-        return maxdepth;
-    b->b_seen = 1;
-    b->b_startdepth = depth;
-    for (i = 0; i < b->b_iused; i++) {
-        instr = &b->b_instr[i];
-        depth += opcode_stack_effect(instr->i_opcode, instr->i_oparg);
-        if (depth > maxdepth)
-            maxdepth = depth;
-        assert(depth >= 0); /* invalid code or bug in stackdepth() */
-        if (instr->i_jrel || instr->i_jabs) {
-            target_depth = depth;
-            if (instr->i_opcode == FOR_ITER) {
-                target_depth = depth-2;
-            } else if (instr->i_opcode == SETUP_FINALLY ||
-                       instr->i_opcode == SETUP_EXCEPT) {
-                target_depth = depth+3;
-                if (target_depth > maxdepth)
-                    maxdepth = target_depth;
-            }
-            maxdepth = stackdepth_walk(c, instr->i_target,
-                                       target_depth, maxdepth);
-            if (instr->i_opcode == JUMP_ABSOLUTE ||
-                instr->i_opcode == JUMP_FORWARD) {
-                goto out; /* remaining code is dead */
-            }
-        }
-    }
-    if (b->b_next)
-        maxdepth = stackdepth_walk(c, b->b_next, depth, maxdepth);
-out:
-    b->b_seen = 0;
-    return maxdepth;
-}
-
-/* Find the flow path that needs the largest stack.  We assume that
- * cycles in the flow graph have no net effect on the stack depth.
- */
-static int
-stackdepth(struct compiler *c)
-{
-    basicblock *b, *entryblock;
-    entryblock = NULL;
-    for (b = c->u->u_blocks; b != NULL; b = b->b_list) {
-        b->b_seen = 0;
-        b->b_startdepth = INT_MIN;
-        entryblock = b;
-    }
-    if (!entryblock)
-        return 0;
-    return stackdepth_walk(c, entryblock, 0, 0);
-}
-
-static int
-assemble_init(struct assembler *a, int nblocks, int firstlineno)
-{
-    memset(a, 0, sizeof(struct assembler));
-    a->a_lineno = firstlineno;
-    a->a_bytecode = PyString_FromStringAndSize(NULL, DEFAULT_CODE_SIZE);
-    if (!a->a_bytecode)
-        return 0;
-    a->a_lnotab = PyString_FromStringAndSize(NULL, DEFAULT_LNOTAB_SIZE);
-    if (!a->a_lnotab)
-        return 0;
-    if (nblocks > PY_SIZE_MAX / sizeof(basicblock *)) {
-        PyErr_NoMemory();
-        return 0;
-    }
-    a->a_postorder = (basicblock **)PyObject_Malloc(
-                                        sizeof(basicblock *) * nblocks);
-    if (!a->a_postorder) {
-        PyErr_NoMemory();
-        return 0;
-    }
-    return 1;
-}
-
-static void
-assemble_free(struct assembler *a)
-{
-    Py_XDECREF(a->a_bytecode);
-    Py_XDECREF(a->a_lnotab);
-    if (a->a_postorder)
-        PyObject_Free(a->a_postorder);
-}
-
-/* Return the size of a basic block in bytes. */
-
-static int
-instrsize(struct instr *instr)
-{
-    if (!instr->i_hasarg)
-        return 1;               /* 1 byte for the opcode*/
-    if (instr->i_oparg > 0xffff)
-        return 6;               /* 1 (opcode) + 1 (EXTENDED_ARG opcode) + 2 (oparg) + 2(oparg extended) */
-    return 3;                   /* 1 (opcode) + 2 (oparg) */
-}
-
-static int
-blocksize(basicblock *b)
-{
-    int i;
-    int size = 0;
-
-    for (i = 0; i < b->b_iused; i++)
-        size += instrsize(&b->b_instr[i]);
-    return size;
-}
-
-/* Appends a pair to the end of the line number table, a_lnotab, representing
-   the instruction's bytecode offset and line number.  See
-   Objects/lnotab_notes.txt for the description of the line number table. */
-
-static int
-assemble_lnotab(struct assembler *a, struct instr *i)
-{
-    int d_bytecode, d_lineno;
-    int len;
-    unsigned char *lnotab;
-
-    d_bytecode = a->a_offset - a->a_lineno_off;
-    d_lineno = i->i_lineno - a->a_lineno;
-
-    assert(d_bytecode >= 0);
-    assert(d_lineno >= 0);
-
-    if(d_bytecode == 0 && d_lineno == 0)
-        return 1;
-
-    if (d_bytecode > 255) {
-        int j, nbytes, ncodes = d_bytecode / 255;
-        nbytes = a->a_lnotab_off + 2 * ncodes;
-        len = PyString_GET_SIZE(a->a_lnotab);
-        if (nbytes >= len) {
-            if ((len <= INT_MAX / 2) && (len * 2 < nbytes))
-                len = nbytes;
-            else if (len <= INT_MAX / 2)
-                len *= 2;
-            else {
-                PyErr_NoMemory();
-                return 0;
-            }
-            if (_PyString_Resize(&a->a_lnotab, len) < 0)
-                return 0;
-        }
-        lnotab = (unsigned char *)
-                   PyString_AS_STRING(a->a_lnotab) + a->a_lnotab_off;
-        for (j = 0; j < ncodes; j++) {
-            *lnotab++ = 255;
-            *lnotab++ = 0;
-        }
-        d_bytecode -= ncodes * 255;
-        a->a_lnotab_off += ncodes * 2;
-    }
-    assert(d_bytecode <= 255);
-    if (d_lineno > 255) {
-        int j, nbytes, ncodes = d_lineno / 255;
-        nbytes = a->a_lnotab_off + 2 * ncodes;
-        len = PyString_GET_SIZE(a->a_lnotab);
-        if (nbytes >= len) {
-            if ((len <= INT_MAX / 2) && len * 2 < nbytes)
-                len = nbytes;
-            else if (len <= INT_MAX / 2)
-                len *= 2;
-            else {
-                PyErr_NoMemory();
-                return 0;
-            }
-            if (_PyString_Resize(&a->a_lnotab, len) < 0)
-                return 0;
-        }
-        lnotab = (unsigned char *)
-                   PyString_AS_STRING(a->a_lnotab) + a->a_lnotab_off;
-        *lnotab++ = d_bytecode;
-        *lnotab++ = 255;
-        d_bytecode = 0;
-        for (j = 1; j < ncodes; j++) {
-            *lnotab++ = 0;
-            *lnotab++ = 255;
-        }
-        d_lineno -= ncodes * 255;
-        a->a_lnotab_off += ncodes * 2;
-    }
-
-    len = PyString_GET_SIZE(a->a_lnotab);
-    if (a->a_lnotab_off + 2 >= len) {
-        if (_PyString_Resize(&a->a_lnotab, len * 2) < 0)
-            return 0;
-    }
-    lnotab = (unsigned char *)
-                    PyString_AS_STRING(a->a_lnotab) + a->a_lnotab_off;
-
-    a->a_lnotab_off += 2;
-    if (d_bytecode) {
-        *lnotab++ = d_bytecode;
-        *lnotab++ = d_lineno;
-    }
-    else {      /* First line of a block; def stmt, etc. */
-        *lnotab++ = 0;
-        *lnotab++ = d_lineno;
-    }
-    a->a_lineno = i->i_lineno;
-    a->a_lineno_off = a->a_offset;
-    return 1;
-}
-
-/* assemble_emit()
-   Extend the bytecode with a new instruction.
-   Update lnotab if necessary.
-*/
-
-static int
-assemble_emit(struct assembler *a, struct instr *i)
-{
-    int size, arg = 0, ext = 0;
-    Py_ssize_t len = PyString_GET_SIZE(a->a_bytecode);
-    char *code;
-
-    size = instrsize(i);
-    if (i->i_hasarg) {
-        arg = i->i_oparg;
-        ext = arg >> 16;
-    }
-    if (i->i_lineno && !assemble_lnotab(a, i))
-        return 0;
-    if (a->a_offset + size >= len) {
-        if (len > PY_SSIZE_T_MAX / 2)
-            return 0;
-        if (_PyString_Resize(&a->a_bytecode, len * 2) < 0)
-            return 0;
-    }
-    code = PyString_AS_STRING(a->a_bytecode) + a->a_offset;
-    a->a_offset += size;
-    if (size == 6) {
-        assert(i->i_hasarg);
-        *code++ = (char)EXTENDED_ARG;
-        *code++ = ext & 0xff;
-        *code++ = ext >> 8;
-        arg &= 0xffff;
-    }
-    *code++ = i->i_opcode;
-    if (i->i_hasarg) {
-        assert(size == 3 || size == 6);
-        *code++ = arg & 0xff;
-        *code++ = arg >> 8;
-    }
-    return 1;
-}
-
-static void
-assemble_jump_offsets(struct assembler *a, struct compiler *c)
-{
-    basicblock *b;
-    int bsize, totsize, extended_arg_count = 0, last_extended_arg_count;
-    int i;
-
-    /* Compute the size of each block and fixup jump args.
-       Replace block pointer with position in bytecode. */
-    do {
-        totsize = 0;
-        for (i = a->a_nblocks - 1; i >= 0; i--) {
-            b = a->a_postorder[i];
-            bsize = blocksize(b);
-            b->b_offset = totsize;
-            totsize += bsize;
-        }
-        last_extended_arg_count = extended_arg_count;
-        extended_arg_count = 0;
-        for (b = c->u->u_blocks; b != NULL; b = b->b_list) {
-            bsize = b->b_offset;
-            for (i = 0; i < b->b_iused; i++) {
-                struct instr *instr = &b->b_instr[i];
-                /* Relative jumps are computed relative to
-                   the instruction pointer after fetching
-                   the jump instruction.
-                */
-                bsize += instrsize(instr);
-                if (instr->i_jabs)
-                    instr->i_oparg = instr->i_target->b_offset;
-                else if (instr->i_jrel) {
-                    int delta = instr->i_target->b_offset - bsize;
-                    instr->i_oparg = delta;
-                }
-                else
-                    continue;
-                if (instr->i_oparg > 0xffff)
-                    extended_arg_count++;
-            }
-        }
-
-    /* XXX: This is an awful hack that could hurt performance, but
-        on the bright side it should work until we come up
-        with a better solution.
-
-        The issue is that in the first loop blocksize() is called
-        which calls instrsize() which requires i_oparg be set
-        appropriately.          There is a bootstrap problem because
-        i_oparg is calculated in the second loop above.
-
-        So we loop until we stop seeing new EXTENDED_ARGs.
-        The only EXTENDED_ARGs that could be popping up are
-        ones in jump instructions.  So this should converge
-        fairly quickly.
-    */
-    } while (last_extended_arg_count != extended_arg_count);
-}
-
-static PyObject *
-dict_keys_inorder(PyObject *dict, int offset)
-{
-    PyObject *tuple, *k, *v;
-    Py_ssize_t i, pos = 0, size = PyDict_Size(dict);
-
-    tuple = PyTuple_New(size);
-    if (tuple == NULL)
-        return NULL;
-    while (PyDict_Next(dict, &pos, &k, &v)) {
-        i = PyInt_AS_LONG(v);
-        /* The keys of the dictionary are tuples. (see compiler_add_o)
-           The object we want is always first, though. */
-        k = PyTuple_GET_ITEM(k, 0);
-        Py_INCREF(k);
-        assert((i - offset) < size);
-        assert((i - offset) >= 0);
-        PyTuple_SET_ITEM(tuple, i - offset, k);
-    }
-    return tuple;
-}
-
-static int
-compute_code_flags(struct compiler *c)
-{
-    PySTEntryObject *ste = c->u->u_ste;
-    int flags = 0, n;
-    if (ste->ste_type != ModuleBlock)
-        flags |= CO_NEWLOCALS;
-    if (ste->ste_type == FunctionBlock) {
-        if (!ste->ste_unoptimized)
-            flags |= CO_OPTIMIZED;
-        if (ste->ste_nested)
-            flags |= CO_NESTED;
-        if (ste->ste_generator)
-            flags |= CO_GENERATOR;
-        if (ste->ste_varargs)
-            flags |= CO_VARARGS;
-        if (ste->ste_varkeywords)
-            flags |= CO_VARKEYWORDS;
-    }
-
-    /* (Only) inherit compilerflags in PyCF_MASK */
-    flags |= (c->c_flags->cf_flags & PyCF_MASK);
-
-    n = PyDict_Size(c->u->u_freevars);
-    if (n < 0)
-        return -1;
-    if (n == 0) {
-        n = PyDict_Size(c->u->u_cellvars);
-        if (n < 0)
-        return -1;
-        if (n == 0) {
-        flags |= CO_NOFREE;
-        }
-    }
-
-    return flags;
-}
-
-static PyCodeObject *
-makecode(struct compiler *c, struct assembler *a)
-{
-    PyObject *tmp;
-    PyCodeObject *co = NULL;
-    PyObject *consts = NULL;
-    PyObject *names = NULL;
-    PyObject *varnames = NULL;
-    PyObject *filename = NULL;
-    PyObject *name = NULL;
-    PyObject *freevars = NULL;
-    PyObject *cellvars = NULL;
-    PyObject *bytecode = NULL;
-    int nlocals, flags;
-
-    tmp = dict_keys_inorder(c->u->u_consts, 0);
-    if (!tmp)
-        goto error;
-    consts = PySequence_List(tmp); /* optimize_code requires a list */
-    Py_DECREF(tmp);
-
-    names = dict_keys_inorder(c->u->u_names, 0);
-    varnames = dict_keys_inorder(c->u->u_varnames, 0);
-    if (!consts || !names || !varnames)
-        goto error;
-
-    cellvars = dict_keys_inorder(c->u->u_cellvars, 0);
-    if (!cellvars)
-        goto error;
-    freevars = dict_keys_inorder(c->u->u_freevars, PyTuple_Size(cellvars));
-    if (!freevars)
-        goto error;
-    filename = PyString_FromString(c->c_filename);
-    if (!filename)
-        goto error;
-
-    nlocals = PyDict_Size(c->u->u_varnames);
-    flags = compute_code_flags(c);
-    if (flags < 0)
-        goto error;
-
-    bytecode = PyCode_Optimize(a->a_bytecode, consts, names, a->a_lnotab);
-    if (!bytecode)
-        goto error;
-
-    tmp = PyList_AsTuple(consts); /* PyCode_New requires a tuple */
-    if (!tmp)
-        goto error;
-    Py_DECREF(consts);
-    consts = tmp;
-
-    co = PyCode_New(c->u->u_argcount, nlocals, stackdepth(c), flags,
-                    bytecode, consts, names, varnames,
-                    freevars, cellvars,
-                    filename, c->u->u_name,
-                    c->u->u_firstlineno,
-                    a->a_lnotab);
- error:
-    Py_XDECREF(consts);
-    Py_XDECREF(names);
-    Py_XDECREF(varnames);
-    Py_XDECREF(filename);
-    Py_XDECREF(name);
-    Py_XDECREF(freevars);
-    Py_XDECREF(cellvars);
-    Py_XDECREF(bytecode);
-    return co;
-}
-
-
-/* For debugging purposes only */
-#if 0
-static void
-dump_instr(const struct instr *i)
-{
-    const char *jrel = i->i_jrel ? "jrel " : "";
-    const char *jabs = i->i_jabs ? "jabs " : "";
-    char arg[128];
-
-    *arg = '\0';
-    if (i->i_hasarg)
-        sprintf(arg, "arg: %d ", i->i_oparg);
-
-    fprintf(stderr, "line: %d, opcode: %d %s%s%s\n",
-                    i->i_lineno, i->i_opcode, arg, jabs, jrel);
-}
-
-static void
-dump_basicblock(const basicblock *b)
-{
-    const char *seen = b->b_seen ? "seen " : "";
-    const char *b_return = b->b_return ? "return " : "";
-    fprintf(stderr, "used: %d, depth: %d, offset: %d %s%s\n",
-        b->b_iused, b->b_startdepth, b->b_offset, seen, b_return);
-    if (b->b_instr) {
-        int i;
-        for (i = 0; i < b->b_iused; i++) {
-            fprintf(stderr, "  [%02d] ", i);
-            dump_instr(b->b_instr + i);
-        }
-    }
-}
-#endif
-
-static PyCodeObject *
-assemble(struct compiler *c, int addNone)
-{
-    basicblock *b, *entryblock;
-    struct assembler a;
-    int i, j, nblocks;
-    PyCodeObject *co = NULL;
-
-    /* Make sure every block that falls off the end returns None.
-       XXX NEXT_BLOCK() isn't quite right, because if the last
-       block ends with a jump or return b_next shouldn't set.
-     */
-    if (!c->u->u_curblock->b_return) {
-        NEXT_BLOCK(c);
-        if (addNone)
-            ADDOP_O(c, LOAD_CONST, Py_None, consts);
-        ADDOP(c, RETURN_VALUE);
-    }
-
-    nblocks = 0;
-    entryblock = NULL;
-    for (b = c->u->u_blocks; b != NULL; b = b->b_list) {
-        nblocks++;
-        entryblock = b;
-    }
-
-    /* Set firstlineno if it wasn't explicitly set. */
-    if (!c->u->u_firstlineno) {
-        if (entryblock && entryblock->b_instr)
-            c->u->u_firstlineno = entryblock->b_instr->i_lineno;
-        else
-            c->u->u_firstlineno = 1;
-    }
-    if (!assemble_init(&a, nblocks, c->u->u_firstlineno))
-        goto error;
-    dfs(c, entryblock, &a);
-
-    /* Can't modify the bytecode after computing jump offsets. */
-    assemble_jump_offsets(&a, c);
-
-    /* Emit code in reverse postorder from dfs. */
-    for (i = a.a_nblocks - 1; i >= 0; i--) {
-        b = a.a_postorder[i];
-        for (j = 0; j < b->b_iused; j++)
-            if (!assemble_emit(&a, &b->b_instr[j]))
-                goto error;
-    }
-
-    if (_PyString_Resize(&a.a_lnotab, a.a_lnotab_off) < 0)
-        goto error;
-    if (_PyString_Resize(&a.a_bytecode, a.a_offset) < 0)
-        goto error;
-
-    co = makecode(c, &a);
- error:
-    assemble_free(&a);
-    return co;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/dtoa.c b/AppPkg/Applications/Python/Python-2.7.2/Python/dtoa.c
deleted file mode 100644
index f932be9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/dtoa.c
+++ /dev/null
@@ -1,2918 +0,0 @@
-/****************************************************************
- *
- * The author of this software is David M. Gay.
- *
- * Copyright (c) 1991, 2000, 2001 by Lucent Technologies.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose without fee is hereby granted, provided that this entire notice
- * is included in all copies of any software which is or includes a copy
- * or modification of this software and in all copies of the supporting
- * documentation for such software.
- *
- * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTY.  IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY
- * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
- * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
- *
- ***************************************************************/
-
-/****************************************************************
- * This is dtoa.c by David M. Gay, downloaded from
- * http://www.netlib.org/fp/dtoa.c on April 15, 2009 and modified for
- * inclusion into the Python core by Mark E. T. Dickinson and Eric V. Smith.
- *
- * Please remember to check http://www.netlib.org/fp regularly (and especially
- * before any Python release) for bugfixes and updates.
- *
- * The major modifications from Gay's original code are as follows:
- *
- *  0. The original code has been specialized to Python's needs by removing
- *     many of the #ifdef'd sections.  In particular, code to support VAX and
- *     IBM floating-point formats, hex NaNs, hex floats, locale-aware
- *     treatment of the decimal point, and setting of the inexact flag have
- *     been removed.
- *
- *  1. We use PyMem_Malloc and PyMem_Free in place of malloc and free.
- *
- *  2. The public functions strtod, dtoa and freedtoa all now have
- *     a _Py_dg_ prefix.
- *
- *  3. Instead of assuming that PyMem_Malloc always succeeds, we thread
- *     PyMem_Malloc failures through the code.  The functions
- *
- *       Balloc, multadd, s2b, i2b, mult, pow5mult, lshift, diff, d2b
- *
- *     of return type *Bigint all return NULL to indicate a malloc failure.
- *     Similarly, rv_alloc and nrv_alloc (return type char *) return NULL on
- *     failure.  bigcomp now has return type int (it used to be void) and
- *     returns -1 on failure and 0 otherwise.  _Py_dg_dtoa returns NULL
- *     on failure.  _Py_dg_strtod indicates failure due to malloc failure
- *     by returning -1.0, setting errno=ENOMEM and *se to s00.
- *
- *  4. The static variable dtoa_result has been removed.  Callers of
- *     _Py_dg_dtoa are expected to call _Py_dg_freedtoa to free
- *     the memory allocated by _Py_dg_dtoa.
- *
- *  5. The code has been reformatted to better fit with Python's
- *     C style guide (PEP 7).
- *
- *  6. A bug in the memory allocation has been fixed: to avoid FREEing memory
- *     that hasn't been MALLOC'ed, private_mem should only be used when k <=
- *     Kmax.
- *
- *  7. _Py_dg_strtod has been modified so that it doesn't accept strings with
- *     leading whitespace.
- *
- ***************************************************************/
-
-/* Please send bug reports for the original dtoa.c code to David M. Gay (dmg
- * at acm dot org, with " at " changed at "@" and " dot " changed to ".").
- * Please report bugs for this modified version using the Python issue tracker
- * (http://bugs.python.org). */
-
-/* On a machine with IEEE extended-precision registers, it is
- * necessary to specify double-precision (53-bit) rounding precision
- * before invoking strtod or dtoa.  If the machine uses (the equivalent
- * of) Intel 80x87 arithmetic, the call
- *      _control87(PC_53, MCW_PC);
- * does this with many compilers.  Whether this or another call is
- * appropriate depends on the compiler; for this to work, it may be
- * necessary to #include "float.h" or another system-dependent header
- * file.
- */
-
-/* strtod for IEEE-, VAX-, and IBM-arithmetic machines.
- *
- * This strtod returns a nearest machine number to the input decimal
- * string (or sets errno to ERANGE).  With IEEE arithmetic, ties are
- * broken by the IEEE round-even rule.  Otherwise ties are broken by
- * biased rounding (add half and chop).
- *
- * Inspired loosely by William D. Clinger's paper "How to Read Floating
- * Point Numbers Accurately" [Proc. ACM SIGPLAN '90, pp. 92-101].
- *
- * Modifications:
- *
- *      1. We only require IEEE, IBM, or VAX double-precision
- *              arithmetic (not IEEE double-extended).
- *      2. We get by with floating-point arithmetic in a case that
- *              Clinger missed -- when we're computing d * 10^n
- *              for a small integer d and the integer n is not too
- *              much larger than 22 (the maximum integer k for which
- *              we can represent 10^k exactly), we may be able to
- *              compute (d*10^k) * 10^(e-k) with just one roundoff.
- *      3. Rather than a bit-at-a-time adjustment of the binary
- *              result in the hard case, we use floating-point
- *              arithmetic to determine the adjustment to within
- *              one bit; only in really hard cases do we need to
- *              compute a second residual.
- *      4. Because of 3., we don't need a large table of powers of 10
- *              for ten-to-e (just some small tables, e.g. of 10^k
- *              for 0 <= k <= 22).
- */
-
-/* Linking of Python's #defines to Gay's #defines starts here. */
-
-#include "Python.h"
-
-/* if PY_NO_SHORT_FLOAT_REPR is defined, then don't even try to compile
-   the following code */
-#ifndef PY_NO_SHORT_FLOAT_REPR
-
-#include "float.h"
-
-#define MALLOC PyMem_Malloc
-#define FREE PyMem_Free
-
-/* This code should also work for ARM mixed-endian format on little-endian
-   machines, where doubles have byte order 45670123 (in increasing address
-   order, 0 being the least significant byte). */
-#ifdef DOUBLE_IS_LITTLE_ENDIAN_IEEE754
-#  define IEEE_8087
-#endif
-#if defined(DOUBLE_IS_BIG_ENDIAN_IEEE754) ||  \
-  defined(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754)
-#  define IEEE_MC68k
-#endif
-#if defined(IEEE_8087) + defined(IEEE_MC68k) != 1
-#error "Exactly one of IEEE_8087 or IEEE_MC68k should be defined."
-#endif
-
-/* The code below assumes that the endianness of integers matches the
-   endianness of the two 32-bit words of a double.  Check this. */
-#if defined(WORDS_BIGENDIAN) && (defined(DOUBLE_IS_LITTLE_ENDIAN_IEEE754) || \
-                                 defined(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754))
-#error "doubles and ints have incompatible endianness"
-#endif
-
-#if !defined(WORDS_BIGENDIAN) && defined(DOUBLE_IS_BIG_ENDIAN_IEEE754)
-#error "doubles and ints have incompatible endianness"
-#endif
-
-
-#if defined(HAVE_UINT32_T) && defined(HAVE_INT32_T)
-typedef PY_UINT32_T ULong;
-typedef PY_INT32_T Long;
-#else
-#error "Failed to find an exact-width 32-bit integer type"
-#endif
-
-#if defined(HAVE_UINT64_T)
-#define ULLong PY_UINT64_T
-#else
-#undef ULLong
-#endif
-
-#undef DEBUG
-#ifdef Py_DEBUG
-#define DEBUG
-#endif
-
-/* End Python #define linking */
-
-#ifdef DEBUG
-#define Bug(x) {fprintf(stderr, "%s\n", x); exit(1);}
-#endif
-
-#ifndef PRIVATE_MEM
-#define PRIVATE_MEM 2304
-#endif
-#define PRIVATE_mem ((PRIVATE_MEM+sizeof(double)-1)/sizeof(double))
-static double private_mem[PRIVATE_mem], *pmem_next = private_mem;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef union { double d; ULong L[2]; } U;
-
-#ifdef IEEE_8087
-#define word0(x) (x)->L[1]
-#define word1(x) (x)->L[0]
-#else
-#define word0(x) (x)->L[0]
-#define word1(x) (x)->L[1]
-#endif
-#define dval(x) (x)->d
-
-#ifndef STRTOD_DIGLIM
-#define STRTOD_DIGLIM 40
-#endif
-
-/* maximum permitted exponent value for strtod; exponents larger than
-   MAX_ABS_EXP in absolute value get truncated to +-MAX_ABS_EXP.  MAX_ABS_EXP
-   should fit into an int. */
-#ifndef MAX_ABS_EXP
-#define MAX_ABS_EXP 19999U
-#endif
-
-/* The following definition of Storeinc is appropriate for MIPS processors.
- * An alternative that might be better on some machines is
- * #define Storeinc(a,b,c) (*a++ = b << 16 | c & 0xffff)
- */
-#if defined(IEEE_8087)
-#define Storeinc(a,b,c) (((unsigned short *)a)[1] = (unsigned short)b,  \
-                         ((unsigned short *)a)[0] = (unsigned short)c, a++)
-#else
-#define Storeinc(a,b,c) (((unsigned short *)a)[0] = (unsigned short)b,  \
-                         ((unsigned short *)a)[1] = (unsigned short)c, a++)
-#endif
-
-/* #define P DBL_MANT_DIG */
-/* Ten_pmax = floor(P*log(2)/log(5)) */
-/* Bletch = (highest power of 2 < DBL_MAX_10_EXP) / 16 */
-/* Quick_max = floor((P-1)*log(FLT_RADIX)/log(10) - 1) */
-/* Int_max = floor(P*log(FLT_RADIX)/log(10) - 1) */
-
-#define Exp_shift  20
-#define Exp_shift1 20
-#define Exp_msk1    0x100000
-#define Exp_msk11   0x100000
-#define Exp_mask  0x7ff00000
-#define P 53
-#define Nbits 53
-#define Bias 1023
-#define Emax 1023
-#define Emin (-1022)
-#define Etiny (-1074)  /* smallest denormal is 2**Etiny */
-#define Exp_1  0x3ff00000
-#define Exp_11 0x3ff00000
-#define Ebits 11
-#define Frac_mask  0xfffff
-#define Frac_mask1 0xfffff
-#define Ten_pmax 22
-#define Bletch 0x10
-#define Bndry_mask  0xfffff
-#define Bndry_mask1 0xfffff
-#define Sign_bit 0x80000000
-#define Log2P 1
-#define Tiny0 0
-#define Tiny1 1
-#define Quick_max 14
-#define Int_max 14
-
-#ifndef Flt_Rounds
-#ifdef FLT_ROUNDS
-#define Flt_Rounds FLT_ROUNDS
-#else
-#define Flt_Rounds 1
-#endif
-#endif /*Flt_Rounds*/
-
-#define Rounding Flt_Rounds
-
-#define Big0 (Frac_mask1 | Exp_msk1*(DBL_MAX_EXP+Bias-1))
-#define Big1 0xffffffff
-
-/* struct BCinfo is used to pass information from _Py_dg_strtod to bigcomp */
-
-typedef struct BCinfo BCinfo;
-struct
-BCinfo {
-    int e0, nd, nd0, scale;
-};
-
-#define FFFFFFFF 0xffffffffUL
-
-#define Kmax 7
-
-/* struct Bigint is used to represent arbitrary-precision integers.  These
-   integers are stored in sign-magnitude format, with the magnitude stored as
-   an array of base 2**32 digits.  Bigints are always normalized: if x is a
-   Bigint then x->wds >= 1, and either x->wds == 1 or x[wds-1] is nonzero.
-
-   The Bigint fields are as follows:
-
-     - next is a header used by Balloc and Bfree to keep track of lists
-         of freed Bigints;  it's also used for the linked list of
-         powers of 5 of the form 5**2**i used by pow5mult.
-     - k indicates which pool this Bigint was allocated from
-     - maxwds is the maximum number of words space was allocated for
-       (usually maxwds == 2**k)
-     - sign is 1 for negative Bigints, 0 for positive.  The sign is unused
-       (ignored on inputs, set to 0 on outputs) in almost all operations
-       involving Bigints: a notable exception is the diff function, which
-       ignores signs on inputs but sets the sign of the output correctly.
-     - wds is the actual number of significant words
-     - x contains the vector of words (digits) for this Bigint, from least
-       significant (x[0]) to most significant (x[wds-1]).
-*/
-
-struct
-Bigint {
-    struct Bigint *next;
-    int k, maxwds, sign, wds;
-    ULong x[1];
-};
-
-typedef struct Bigint Bigint;
-
-#ifndef Py_USING_MEMORY_DEBUGGER
-
-/* Memory management: memory is allocated from, and returned to, Kmax+1 pools
-   of memory, where pool k (0 <= k <= Kmax) is for Bigints b with b->maxwds ==
-   1 << k.  These pools are maintained as linked lists, with freelist[k]
-   pointing to the head of the list for pool k.
-
-   On allocation, if there's no free slot in the appropriate pool, MALLOC is
-   called to get more memory.  This memory is not returned to the system until
-   Python quits.  There's also a private memory pool that's allocated from
-   in preference to using MALLOC.
-
-   For Bigints with more than (1 << Kmax) digits (which implies at least 1233
-   decimal digits), memory is directly allocated using MALLOC, and freed using
-   FREE.
-
-   XXX: it would be easy to bypass this memory-management system and
-   translate each call to Balloc into a call to PyMem_Malloc, and each
-   Bfree to PyMem_Free.  Investigate whether this has any significant
-   performance on impact. */
-
-static Bigint *freelist[Kmax+1];
-
-/* Allocate space for a Bigint with up to 1<<k digits */
-
-static Bigint *
-Balloc(int k)
-{
-    int x;
-    Bigint *rv;
-    unsigned int len;
-
-    if (k <= Kmax && (rv = freelist[k]))
-        freelist[k] = rv->next;
-    else {
-        x = 1 << k;
-        len = (sizeof(Bigint) + (x-1)*sizeof(ULong) + sizeof(double) - 1)
-            /sizeof(double);
-        if (k <= Kmax && pmem_next - private_mem + len <= PRIVATE_mem) {
-            rv = (Bigint*)pmem_next;
-            pmem_next += len;
-        }
-        else {
-            rv = (Bigint*)MALLOC(len*sizeof(double));
-            if (rv == NULL)
-                return NULL;
-        }
-        rv->k = k;
-        rv->maxwds = x;
-    }
-    rv->sign = rv->wds = 0;
-    return rv;
-}
-
-/* Free a Bigint allocated with Balloc */
-
-static void
-Bfree(Bigint *v)
-{
-    if (v) {
-        if (v->k > Kmax)
-            FREE((void*)v);
-        else {
-            v->next = freelist[v->k];
-            freelist[v->k] = v;
-        }
-    }
-}
-
-#else
-
-/* Alternative versions of Balloc and Bfree that use PyMem_Malloc and
-   PyMem_Free directly in place of the custom memory allocation scheme above.
-   These are provided for the benefit of memory debugging tools like
-   Valgrind. */
-
-/* Allocate space for a Bigint with up to 1<<k digits */
-
-static Bigint *
-Balloc(int k)
-{
-    int x;
-    Bigint *rv;
-    unsigned int len;
-
-    x = 1 << k;
-    len = (sizeof(Bigint) + (x-1)*sizeof(ULong) + sizeof(double) - 1)
-        /sizeof(double);
-
-    rv = (Bigint*)MALLOC(len*sizeof(double));
-    if (rv == NULL)
-        return NULL;
-
-    rv->k = k;
-    rv->maxwds = x;
-    rv->sign = rv->wds = 0;
-    return rv;
-}
-
-/* Free a Bigint allocated with Balloc */
-
-static void
-Bfree(Bigint *v)
-{
-    if (v) {
-        FREE((void*)v);
-    }
-}
-
-#endif /* Py_USING_MEMORY_DEBUGGER */
-
-#define Bcopy(x,y) memcpy((char *)&x->sign, (char *)&y->sign,   \
-                          y->wds*sizeof(Long) + 2*sizeof(int))
-
-/* Multiply a Bigint b by m and add a.  Either modifies b in place and returns
-   a pointer to the modified b, or Bfrees b and returns a pointer to a copy.
-   On failure, return NULL.  In this case, b will have been already freed. */
-
-static Bigint *
-multadd(Bigint *b, int m, int a)       /* multiply by m and add a */
-{
-    int i, wds;
-#ifdef ULLong
-    ULong *x;
-    ULLong carry, y;
-#else
-    ULong carry, *x, y;
-    ULong xi, z;
-#endif
-    Bigint *b1;
-
-    wds = b->wds;
-    x = b->x;
-    i = 0;
-    carry = a;
-    do {
-#ifdef ULLong
-        y = *x * (ULLong)m + carry;
-        carry = y >> 32;
-        *x++ = (ULong)(y & FFFFFFFF);
-#else
-        xi = *x;
-        y = (xi & 0xffff) * m + carry;
-        z = (xi >> 16) * m + (y >> 16);
-        carry = z >> 16;
-        *x++ = (z << 16) + (y & 0xffff);
-#endif
-    }
-    while(++i < wds);
-    if (carry) {
-        if (wds >= b->maxwds) {
-            b1 = Balloc(b->k+1);
-            if (b1 == NULL){
-                Bfree(b);
-                return NULL;
-            }
-            Bcopy(b1, b);
-            Bfree(b);
-            b = b1;
-        }
-        b->x[wds++] = (ULong)carry;
-        b->wds = wds;
-    }
-    return b;
-}
-
-/* convert a string s containing nd decimal digits (possibly containing a
-   decimal separator at position nd0, which is ignored) to a Bigint.  This
-   function carries on where the parsing code in _Py_dg_strtod leaves off: on
-   entry, y9 contains the result of converting the first 9 digits.  Returns
-   NULL on failure. */
-
-static Bigint *
-s2b(const char *s, int nd0, int nd, ULong y9)
-{
-    Bigint *b;
-    int i, k;
-    Long x, y;
-
-    x = (nd + 8) / 9;
-    for(k = 0, y = 1; x > y; y <<= 1, k++) ;
-    b = Balloc(k);
-    if (b == NULL)
-        return NULL;
-    b->x[0] = y9;
-    b->wds = 1;
-
-    if (nd <= 9)
-      return b;
-
-    s += 9;
-    for (i = 9; i < nd0; i++) {
-        b = multadd(b, 10, *s++ - '0');
-        if (b == NULL)
-            return NULL;
-    }
-    s++;
-    for(; i < nd; i++) {
-        b = multadd(b, 10, *s++ - '0');
-        if (b == NULL)
-            return NULL;
-    }
-    return b;
-}
-
-/* count leading 0 bits in the 32-bit integer x. */
-
-static int
-hi0bits(ULong x)
-{
-    int k = 0;
-
-    if (!(x & 0xffff0000)) {
-        k = 16;
-        x <<= 16;
-    }
-    if (!(x & 0xff000000)) {
-        k += 8;
-        x <<= 8;
-    }
-    if (!(x & 0xf0000000)) {
-        k += 4;
-        x <<= 4;
-    }
-    if (!(x & 0xc0000000)) {
-        k += 2;
-        x <<= 2;
-    }
-    if (!(x & 0x80000000)) {
-        k++;
-        if (!(x & 0x40000000))
-            return 32;
-    }
-    return k;
-}
-
-/* count trailing 0 bits in the 32-bit integer y, and shift y right by that
-   number of bits. */
-
-static int
-lo0bits(ULong *y)
-{
-    int k;
-    ULong x = *y;
-
-    if (x & 7) {
-        if (x & 1)
-            return 0;
-        if (x & 2) {
-            *y = x >> 1;
-            return 1;
-        }
-        *y = x >> 2;
-        return 2;
-    }
-    k = 0;
-    if (!(x & 0xffff)) {
-        k = 16;
-        x >>= 16;
-    }
-    if (!(x & 0xff)) {
-        k += 8;
-        x >>= 8;
-    }
-    if (!(x & 0xf)) {
-        k += 4;
-        x >>= 4;
-    }
-    if (!(x & 0x3)) {
-        k += 2;
-        x >>= 2;
-    }
-    if (!(x & 1)) {
-        k++;
-        x >>= 1;
-        if (!x)
-            return 32;
-    }
-    *y = x;
-    return k;
-}
-
-/* convert a small nonnegative integer to a Bigint */
-
-static Bigint *
-i2b(int i)
-{
-    Bigint *b;
-
-    b = Balloc(1);
-    if (b == NULL)
-        return NULL;
-    b->x[0] = i;
-    b->wds = 1;
-    return b;
-}
-
-/* multiply two Bigints.  Returns a new Bigint, or NULL on failure.  Ignores
-   the signs of a and b. */
-
-static Bigint *
-mult(Bigint *a, Bigint *b)
-{
-    Bigint *c;
-    int k, wa, wb, wc;
-    ULong *x, *xa, *xae, *xb, *xbe, *xc, *xc0;
-    ULong y;
-#ifdef ULLong
-    ULLong carry, z;
-#else
-    ULong carry, z;
-    ULong z2;
-#endif
-
-    if ((!a->x[0] && a->wds == 1) || (!b->x[0] && b->wds == 1)) {
-        c = Balloc(0);
-        if (c == NULL)
-            return NULL;
-        c->wds = 1;
-        c->x[0] = 0;
-        return c;
-    }
-
-    if (a->wds < b->wds) {
-        c = a;
-        a = b;
-        b = c;
-    }
-    k = a->k;
-    wa = a->wds;
-    wb = b->wds;
-    wc = wa + wb;
-    if (wc > a->maxwds)
-        k++;
-    c = Balloc(k);
-    if (c == NULL)
-        return NULL;
-    for(x = c->x, xa = x + wc; x < xa; x++)
-        *x = 0;
-    xa = a->x;
-    xae = xa + wa;
-    xb = b->x;
-    xbe = xb + wb;
-    xc0 = c->x;
-#ifdef ULLong
-    for(; xb < xbe; xc0++) {
-        if ((y = *xb++)) {
-            x = xa;
-            xc = xc0;
-            carry = 0;
-            do {
-                z = *x++ * (ULLong)y + *xc + carry;
-                carry = z >> 32;
-                *xc++ = (ULong)(z & FFFFFFFF);
-            }
-            while(x < xae);
-            *xc = (ULong)carry;
-        }
-    }
-#else
-    for(; xb < xbe; xb++, xc0++) {
-        if (y = *xb & 0xffff) {
-            x = xa;
-            xc = xc0;
-            carry = 0;
-            do {
-                z = (*x & 0xffff) * y + (*xc & 0xffff) + carry;
-                carry = z >> 16;
-                z2 = (*x++ >> 16) * y + (*xc >> 16) + carry;
-                carry = z2 >> 16;
-                Storeinc(xc, z2, z);
-            }
-            while(x < xae);
-            *xc = carry;
-        }
-        if (y = *xb >> 16) {
-            x = xa;
-            xc = xc0;
-            carry = 0;
-            z2 = *xc;
-            do {
-                z = (*x & 0xffff) * y + (*xc >> 16) + carry;
-                carry = z >> 16;
-                Storeinc(xc, z, z2);
-                z2 = (*x++ >> 16) * y + (*xc & 0xffff) + carry;
-                carry = z2 >> 16;
-            }
-            while(x < xae);
-            *xc = z2;
-        }
-    }
-#endif
-    for(xc0 = c->x, xc = xc0 + wc; wc > 0 && !*--xc; --wc) ;
-    c->wds = wc;
-    return c;
-}
-
-#ifndef Py_USING_MEMORY_DEBUGGER
-
-/* p5s is a linked list of powers of 5 of the form 5**(2**i), i >= 2 */
-
-static Bigint *p5s;
-
-/* multiply the Bigint b by 5**k.  Returns a pointer to the result, or NULL on
-   failure; if the returned pointer is distinct from b then the original
-   Bigint b will have been Bfree'd.   Ignores the sign of b. */
-
-static Bigint *
-pow5mult(Bigint *b, int k)
-{
-    Bigint *b1, *p5, *p51;
-    int i;
-    static int p05[3] = { 5, 25, 125 };
-
-    if ((i = k & 3)) {
-        b = multadd(b, p05[i-1], 0);
-        if (b == NULL)
-            return NULL;
-    }
-
-    if (!(k >>= 2))
-        return b;
-    p5 = p5s;
-    if (!p5) {
-        /* first time */
-        p5 = i2b(625);
-        if (p5 == NULL) {
-            Bfree(b);
-            return NULL;
-        }
-        p5s = p5;
-        p5->next = 0;
-    }
-    for(;;) {
-        if (k & 1) {
-            b1 = mult(b, p5);
-            Bfree(b);
-            b = b1;
-            if (b == NULL)
-                return NULL;
-        }
-        if (!(k >>= 1))
-            break;
-        p51 = p5->next;
-        if (!p51) {
-            p51 = mult(p5,p5);
-            if (p51 == NULL) {
-                Bfree(b);
-                return NULL;
-            }
-            p51->next = 0;
-            p5->next = p51;
-        }
-        p5 = p51;
-    }
-    return b;
-}
-
-#else
-
-/* Version of pow5mult that doesn't cache powers of 5. Provided for
-   the benefit of memory debugging tools like Valgrind. */
-
-static Bigint *
-pow5mult(Bigint *b, int k)
-{
-    Bigint *b1, *p5, *p51;
-    int i;
-    static int p05[3] = { 5, 25, 125 };
-
-    if ((i = k & 3)) {
-        b = multadd(b, p05[i-1], 0);
-        if (b == NULL)
-            return NULL;
-    }
-
-    if (!(k >>= 2))
-        return b;
-    p5 = i2b(625);
-    if (p5 == NULL) {
-        Bfree(b);
-        return NULL;
-    }
-
-    for(;;) {
-        if (k & 1) {
-            b1 = mult(b, p5);
-            Bfree(b);
-            b = b1;
-            if (b == NULL) {
-                Bfree(p5);
-                return NULL;
-            }
-        }
-        if (!(k >>= 1))
-            break;
-        p51 = mult(p5, p5);
-        Bfree(p5);
-        p5 = p51;
-        if (p5 == NULL) {
-            Bfree(b);
-            return NULL;
-        }
-    }
-    Bfree(p5);
-    return b;
-}
-
-#endif /* Py_USING_MEMORY_DEBUGGER */
-
-/* shift a Bigint b left by k bits.  Return a pointer to the shifted result,
-   or NULL on failure.  If the returned pointer is distinct from b then the
-   original b will have been Bfree'd.   Ignores the sign of b. */
-
-static Bigint *
-lshift(Bigint *b, int k)
-{
-    int i, k1, n, n1;
-    Bigint *b1;
-    ULong *x, *x1, *xe, z;
-
-    if (!k || (!b->x[0] && b->wds == 1))
-        return b;
-
-    n = k >> 5;
-    k1 = b->k;
-    n1 = n + b->wds + 1;
-    for(i = b->maxwds; n1 > i; i <<= 1)
-        k1++;
-    b1 = Balloc(k1);
-    if (b1 == NULL) {
-        Bfree(b);
-        return NULL;
-    }
-    x1 = b1->x;
-    for(i = 0; i < n; i++)
-        *x1++ = 0;
-    x = b->x;
-    xe = x + b->wds;
-    if (k &= 0x1f) {
-        k1 = 32 - k;
-        z = 0;
-        do {
-            *x1++ = *x << k | z;
-            z = *x++ >> k1;
-        }
-        while(x < xe);
-        if ((*x1 = z))
-            ++n1;
-    }
-    else do
-             *x1++ = *x++;
-        while(x < xe);
-    b1->wds = n1 - 1;
-    Bfree(b);
-    return b1;
-}
-
-/* Do a three-way compare of a and b, returning -1 if a < b, 0 if a == b and
-   1 if a > b.  Ignores signs of a and b. */
-
-static int
-cmp(Bigint *a, Bigint *b)
-{
-    ULong *xa, *xa0, *xb, *xb0;
-    int i, j;
-
-    i = a->wds;
-    j = b->wds;
-#ifdef DEBUG
-    if (i > 1 && !a->x[i-1])
-        Bug("cmp called with a->x[a->wds-1] == 0");
-    if (j > 1 && !b->x[j-1])
-        Bug("cmp called with b->x[b->wds-1] == 0");
-#endif
-    if (i -= j)
-        return i;
-    xa0 = a->x;
-    xa = xa0 + j;
-    xb0 = b->x;
-    xb = xb0 + j;
-    for(;;) {
-        if (*--xa != *--xb)
-            return *xa < *xb ? -1 : 1;
-        if (xa <= xa0)
-            break;
-    }
-    return 0;
-}
-
-/* Take the difference of Bigints a and b, returning a new Bigint.  Returns
-   NULL on failure.  The signs of a and b are ignored, but the sign of the
-   result is set appropriately. */
-
-static Bigint *
-diff(Bigint *a, Bigint *b)
-{
-    Bigint *c;
-    int i, wa, wb;
-    ULong *xa, *xae, *xb, *xbe, *xc;
-#ifdef ULLong
-    ULLong borrow, y;
-#else
-    ULong borrow, y;
-    ULong z;
-#endif
-
-    i = cmp(a,b);
-    if (!i) {
-        c = Balloc(0);
-        if (c == NULL)
-            return NULL;
-        c->wds = 1;
-        c->x[0] = 0;
-        return c;
-    }
-    if (i < 0) {
-        c = a;
-        a = b;
-        b = c;
-        i = 1;
-    }
-    else
-        i = 0;
-    c = Balloc(a->k);
-    if (c == NULL)
-        return NULL;
-    c->sign = i;
-    wa = a->wds;
-    xa = a->x;
-    xae = xa + wa;
-    wb = b->wds;
-    xb = b->x;
-    xbe = xb + wb;
-    xc = c->x;
-    borrow = 0;
-#ifdef ULLong
-    do {
-        y = (ULLong)*xa++ - *xb++ - borrow;
-        borrow = y >> 32 & (ULong)1;
-        *xc++ = (ULong)(y & FFFFFFFF);
-    }
-    while(xb < xbe);
-    while(xa < xae) {
-        y = *xa++ - borrow;
-        borrow = y >> 32 & (ULong)1;
-        *xc++ = (ULong)(y & FFFFFFFF);
-    }
-#else
-    do {
-        y = (*xa & 0xffff) - (*xb & 0xffff) - borrow;
-        borrow = (y & 0x10000) >> 16;
-        z = (*xa++ >> 16) - (*xb++ >> 16) - borrow;
-        borrow = (z & 0x10000) >> 16;
-        Storeinc(xc, z, y);
-    }
-    while(xb < xbe);
-    while(xa < xae) {
-        y = (*xa & 0xffff) - borrow;
-        borrow = (y & 0x10000) >> 16;
-        z = (*xa++ >> 16) - borrow;
-        borrow = (z & 0x10000) >> 16;
-        Storeinc(xc, z, y);
-    }
-#endif
-    while(!*--xc)
-        wa--;
-    c->wds = wa;
-    return c;
-}
-
-/* Given a positive normal double x, return the difference between x and the
-   next double up.  Doesn't give correct results for subnormals. */
-
-static double
-ulp(U *x)
-{
-    Long L;
-    U u;
-
-    L = (word0(x) & Exp_mask) - (P-1)*Exp_msk1;
-    word0(&u) = L;
-    word1(&u) = 0;
-    return dval(&u);
-}
-
-/* Convert a Bigint to a double plus an exponent */
-
-static double
-b2d(Bigint *a, int *e)
-{
-    ULong *xa, *xa0, w, y, z;
-    int k;
-    U d;
-
-    xa0 = a->x;
-    xa = xa0 + a->wds;
-    y = *--xa;
-#ifdef DEBUG
-    if (!y) Bug("zero y in b2d");
-#endif
-    k = hi0bits(y);
-    *e = 32 - k;
-    if (k < Ebits) {
-        word0(&d) = Exp_1 | y >> (Ebits - k);
-        w = xa > xa0 ? *--xa : 0;
-        word1(&d) = y << ((32-Ebits) + k) | w >> (Ebits - k);
-        goto ret_d;
-    }
-    z = xa > xa0 ? *--xa : 0;
-    if (k -= Ebits) {
-        word0(&d) = Exp_1 | y << k | z >> (32 - k);
-        y = xa > xa0 ? *--xa : 0;
-        word1(&d) = z << k | y >> (32 - k);
-    }
-    else {
-        word0(&d) = Exp_1 | y;
-        word1(&d) = z;
-    }
-  ret_d:
-    return dval(&d);
-}
-
-/* Convert a scaled double to a Bigint plus an exponent.  Similar to d2b,
-   except that it accepts the scale parameter used in _Py_dg_strtod (which
-   should be either 0 or 2*P), and the normalization for the return value is
-   different (see below).  On input, d should be finite and nonnegative, and d
-   / 2**scale should be exactly representable as an IEEE 754 double.
-
-   Returns a Bigint b and an integer e such that
-
-     dval(d) / 2**scale = b * 2**e.
-
-   Unlike d2b, b is not necessarily odd: b and e are normalized so
-   that either 2**(P-1) <= b < 2**P and e >= Etiny, or b < 2**P
-   and e == Etiny.  This applies equally to an input of 0.0: in that
-   case the return values are b = 0 and e = Etiny.
-
-   The above normalization ensures that for all possible inputs d,
-   2**e gives ulp(d/2**scale).
-
-   Returns NULL on failure.
-*/
-
-static Bigint *
-sd2b(U *d, int scale, int *e)
-{
-    Bigint *b;
-
-    b = Balloc(1);
-    if (b == NULL)
-        return NULL;
-    
-    /* First construct b and e assuming that scale == 0. */
-    b->wds = 2;
-    b->x[0] = word1(d);
-    b->x[1] = word0(d) & Frac_mask;
-    *e = Etiny - 1 + (int)((word0(d) & Exp_mask) >> Exp_shift);
-    if (*e < Etiny)
-        *e = Etiny;
-    else
-        b->x[1] |= Exp_msk1;
-
-    /* Now adjust for scale, provided that b != 0. */
-    if (scale && (b->x[0] || b->x[1])) {
-        *e -= scale;
-        if (*e < Etiny) {
-            scale = Etiny - *e;
-            *e = Etiny;
-            /* We can't shift more than P-1 bits without shifting out a 1. */
-            assert(0 < scale && scale <= P - 1);
-            if (scale >= 32) {
-                /* The bits shifted out should all be zero. */
-                assert(b->x[0] == 0);
-                b->x[0] = b->x[1];
-                b->x[1] = 0;
-                scale -= 32;
-            }
-            if (scale) {
-                /* The bits shifted out should all be zero. */
-                assert(b->x[0] << (32 - scale) == 0);
-                b->x[0] = (b->x[0] >> scale) | (b->x[1] << (32 - scale));
-                b->x[1] >>= scale;
-            }
-        }
-    }
-    /* Ensure b is normalized. */
-    if (!b->x[1])
-        b->wds = 1;
-
-    return b;
-}
-
-/* Convert a double to a Bigint plus an exponent.  Return NULL on failure.
-
-   Given a finite nonzero double d, return an odd Bigint b and exponent *e
-   such that fabs(d) = b * 2**e.  On return, *bbits gives the number of
-   significant bits of b; that is, 2**(*bbits-1) <= b < 2**(*bbits).
-
-   If d is zero, then b == 0, *e == -1010, *bbits = 0.
- */
-
-static Bigint *
-d2b(U *d, int *e, int *bits)
-{
-    Bigint *b;
-    int de, k;
-    ULong *x, y, z;
-    int i;
-
-    b = Balloc(1);
-    if (b == NULL)
-        return NULL;
-    x = b->x;
-
-    z = word0(d) & Frac_mask;
-    word0(d) &= 0x7fffffff;   /* clear sign bit, which we ignore */
-    if ((de = (int)(word0(d) >> Exp_shift)))
-        z |= Exp_msk1;
-    if ((y = word1(d))) {
-        if ((k = lo0bits(&y))) {
-            x[0] = y | z << (32 - k);
-            z >>= k;
-        }
-        else
-            x[0] = y;
-        i =
-            b->wds = (x[1] = z) ? 2 : 1;
-    }
-    else {
-        k = lo0bits(&z);
-        x[0] = z;
-        i =
-            b->wds = 1;
-        k += 32;
-    }
-    if (de) {
-        *e = de - Bias - (P-1) + k;
-        *bits = P - k;
-    }
-    else {
-        *e = de - Bias - (P-1) + 1 + k;
-        *bits = 32*i - hi0bits(x[i-1]);
-    }
-    return b;
-}
-
-/* Compute the ratio of two Bigints, as a double.  The result may have an
-   error of up to 2.5 ulps. */
-
-static double
-ratio(Bigint *a, Bigint *b)
-{
-    U da, db;
-    int k, ka, kb;
-
-    dval(&da) = b2d(a, &ka);
-    dval(&db) = b2d(b, &kb);
-    k = ka - kb + 32*(a->wds - b->wds);
-    if (k > 0)
-        word0(&da) += k*Exp_msk1;
-    else {
-        k = -k;
-        word0(&db) += k*Exp_msk1;
-    }
-    return dval(&da) / dval(&db);
-}
-
-static const double
-tens[] = {
-    1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9,
-    1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19,
-    1e20, 1e21, 1e22
-};
-
-static const double
-bigtens[] = { 1e16, 1e32, 1e64, 1e128, 1e256 };
-static const double tinytens[] = { 1e-16, 1e-32, 1e-64, 1e-128,
-                                   9007199254740992.*9007199254740992.e-256
-                                   /* = 2^106 * 1e-256 */
-};
-/* The factor of 2^53 in tinytens[4] helps us avoid setting the underflow */
-/* flag unnecessarily.  It leads to a song and dance at the end of strtod. */
-#define Scale_Bit 0x10
-#define n_bigtens 5
-
-#define ULbits 32
-#define kshift 5
-#define kmask 31
-
-
-static int
-dshift(Bigint *b, int p2)
-{
-    int rv = hi0bits(b->x[b->wds-1]) - 4;
-    if (p2 > 0)
-        rv -= p2;
-    return rv & kmask;
-}
-
-/* special case of Bigint division.  The quotient is always in the range 0 <=
-   quotient < 10, and on entry the divisor S is normalized so that its top 4
-   bits (28--31) are zero and bit 27 is set. */
-
-static int
-quorem(Bigint *b, Bigint *S)
-{
-    int n;
-    ULong *bx, *bxe, q, *sx, *sxe;
-#ifdef ULLong
-    ULLong borrow, carry, y, ys;
-#else
-    ULong borrow, carry, y, ys;
-    ULong si, z, zs;
-#endif
-
-    n = S->wds;
-#ifdef DEBUG
-    /*debug*/ if (b->wds > n)
-        /*debug*/       Bug("oversize b in quorem");
-#endif
-    if (b->wds < n)
-        return 0;
-    sx = S->x;
-    sxe = sx + --n;
-    bx = b->x;
-    bxe = bx + n;
-    q = *bxe / (*sxe + 1);      /* ensure q <= true quotient */
-#ifdef DEBUG
-    /*debug*/ if (q > 9)
-        /*debug*/       Bug("oversized quotient in quorem");
-#endif
-    if (q) {
-        borrow = 0;
-        carry = 0;
-        do {
-#ifdef ULLong
-            ys = *sx++ * (ULLong)q + carry;
-            carry = ys >> 32;
-            y = *bx - (ys & FFFFFFFF) - borrow;
-            borrow = y >> 32 & (ULong)1;
-            *bx++ = (ULong)(y & FFFFFFFF);
-#else
-            si = *sx++;
-            ys = (si & 0xffff) * q + carry;
-            zs = (si >> 16) * q + (ys >> 16);
-            carry = zs >> 16;
-            y = (*bx & 0xffff) - (ys & 0xffff) - borrow;
-            borrow = (y & 0x10000) >> 16;
-            z = (*bx >> 16) - (zs & 0xffff) - borrow;
-            borrow = (z & 0x10000) >> 16;
-            Storeinc(bx, z, y);
-#endif
-        }
-        while(sx <= sxe);
-        if (!*bxe) {
-            bx = b->x;
-            while(--bxe > bx && !*bxe)
-                --n;
-            b->wds = n;
-        }
-    }
-    if (cmp(b, S) >= 0) {
-        q++;
-        borrow = 0;
-        carry = 0;
-        bx = b->x;
-        sx = S->x;
-        do {
-#ifdef ULLong
-            ys = *sx++ + carry;
-            carry = ys >> 32;
-            y = *bx - (ys & FFFFFFFF) - borrow;
-            borrow = y >> 32 & (ULong)1;
-            *bx++ = (ULong)(y & FFFFFFFF);
-#else
-            si = *sx++;
-            ys = (si & 0xffff) + carry;
-            zs = (si >> 16) + (ys >> 16);
-            carry = zs >> 16;
-            y = (*bx & 0xffff) - (ys & 0xffff) - borrow;
-            borrow = (y & 0x10000) >> 16;
-            z = (*bx >> 16) - (zs & 0xffff) - borrow;
-            borrow = (z & 0x10000) >> 16;
-            Storeinc(bx, z, y);
-#endif
-        }
-        while(sx <= sxe);
-        bx = b->x;
-        bxe = bx + n;
-        if (!*bxe) {
-            while(--bxe > bx && !*bxe)
-                --n;
-            b->wds = n;
-        }
-    }
-    return q;
-}
-
-/* sulp(x) is a version of ulp(x) that takes bc.scale into account.
-
-   Assuming that x is finite and nonnegative (positive zero is fine
-   here) and x / 2^bc.scale is exactly representable as a double,
-   sulp(x) is equivalent to 2^bc.scale * ulp(x / 2^bc.scale). */
-
-static double
-sulp(U *x, BCinfo *bc)
-{
-    U u;
-
-    if (bc->scale && 2*P + 1 > (int)((word0(x) & Exp_mask) >> Exp_shift)) {
-        /* rv/2^bc->scale is subnormal */
-        word0(&u) = (P+2)*Exp_msk1;
-        word1(&u) = 0;
-        return u.d;
-    }
-    else {
-        assert(word0(x) || word1(x)); /* x != 0.0 */
-        return ulp(x);
-    }
-}
-
-/* The bigcomp function handles some hard cases for strtod, for inputs
-   with more than STRTOD_DIGLIM digits.  It's called once an initial
-   estimate for the double corresponding to the input string has
-   already been obtained by the code in _Py_dg_strtod.
-
-   The bigcomp function is only called after _Py_dg_strtod has found a
-   double value rv such that either rv or rv + 1ulp represents the
-   correctly rounded value corresponding to the original string.  It
-   determines which of these two values is the correct one by
-   computing the decimal digits of rv + 0.5ulp and comparing them with
-   the corresponding digits of s0.
-
-   In the following, write dv for the absolute value of the number represented
-   by the input string.
-
-   Inputs:
-
-     s0 points to the first significant digit of the input string.
-
-     rv is a (possibly scaled) estimate for the closest double value to the
-        value represented by the original input to _Py_dg_strtod.  If
-        bc->scale is nonzero, then rv/2^(bc->scale) is the approximation to
-        the input value.
-
-     bc is a struct containing information gathered during the parsing and
-        estimation steps of _Py_dg_strtod.  Description of fields follows:
-
-        bc->e0 gives the exponent of the input value, such that dv = (integer
-           given by the bd->nd digits of s0) * 10**e0
-
-        bc->nd gives the total number of significant digits of s0.  It will
-           be at least 1.
-
-        bc->nd0 gives the number of significant digits of s0 before the
-           decimal separator.  If there's no decimal separator, bc->nd0 ==
-           bc->nd.
-
-        bc->scale is the value used to scale rv to avoid doing arithmetic with
-           subnormal values.  It's either 0 or 2*P (=106).
-
-   Outputs:
-
-     On successful exit, rv/2^(bc->scale) is the closest double to dv.
-
-     Returns 0 on success, -1 on failure (e.g., due to a failed malloc call). */
-
-static int
-bigcomp(U *rv, const char *s0, BCinfo *bc)
-{
-    Bigint *b, *d;
-    int b2, d2, dd, i, nd, nd0, odd, p2, p5;
-
-    nd = bc->nd;
-    nd0 = bc->nd0;
-    p5 = nd + bc->e0;
-    b = sd2b(rv, bc->scale, &p2);
-    if (b == NULL)
-        return -1;
-
-    /* record whether the lsb of rv/2^(bc->scale) is odd:  in the exact halfway
-       case, this is used for round to even. */
-    odd = b->x[0] & 1;
-
-    /* left shift b by 1 bit and or a 1 into the least significant bit;
-       this gives us b * 2**p2 = rv/2^(bc->scale) + 0.5 ulp. */
-    b = lshift(b, 1);
-    if (b == NULL)
-        return -1;
-    b->x[0] |= 1;
-    p2--;
-
-    p2 -= p5;
-    d = i2b(1);
-    if (d == NULL) {
-        Bfree(b);
-        return -1;
-    }
-    /* Arrange for convenient computation of quotients:
-     * shift left if necessary so divisor has 4 leading 0 bits.
-     */
-    if (p5 > 0) {
-        d = pow5mult(d, p5);
-        if (d == NULL) {
-            Bfree(b);
-            return -1;
-        }
-    }
-    else if (p5 < 0) {
-        b = pow5mult(b, -p5);
-        if (b == NULL) {
-            Bfree(d);
-            return -1;
-        }
-    }
-    if (p2 > 0) {
-        b2 = p2;
-        d2 = 0;
-    }
-    else {
-        b2 = 0;
-        d2 = -p2;
-    }
-    i = dshift(d, d2);
-    if ((b2 += i) > 0) {
-        b = lshift(b, b2);
-        if (b == NULL) {
-            Bfree(d);
-            return -1;
-        }
-    }
-    if ((d2 += i) > 0) {
-        d = lshift(d, d2);
-        if (d == NULL) {
-            Bfree(b);
-            return -1;
-        }
-    }
-
-    /* Compare s0 with b/d: set dd to -1, 0, or 1 according as s0 < b/d, s0 ==
-     * b/d, or s0 > b/d.  Here the digits of s0 are thought of as representing
-     * a number in the range [0.1, 1). */
-    if (cmp(b, d) >= 0)
-        /* b/d >= 1 */
-        dd = -1;
-    else {
-        i = 0;
-        for(;;) {
-            b = multadd(b, 10, 0);
-            if (b == NULL) {
-                Bfree(d);
-                return -1;
-            }
-            dd = s0[i < nd0 ? i : i+1] - '0' - quorem(b, d);
-            i++;
-
-            if (dd)
-                break;
-            if (!b->x[0] && b->wds == 1) {
-                /* b/d == 0 */
-                dd = i < nd;
-                break;
-            }
-            if (!(i < nd)) {
-                /* b/d != 0, but digits of s0 exhausted */
-                dd = -1;
-                break;
-            }
-        }
-    }
-    Bfree(b);
-    Bfree(d);
-    if (dd > 0 || (dd == 0 && odd))
-        dval(rv) += sulp(rv, bc);
-    return 0;
-}
-
-double
-_Py_dg_strtod(const char *s00, char **se)
-{
-    int bb2, bb5, bbe, bd2, bd5, bs2, c, dsign, e, e1, error;
-    int esign, i, j, k, lz, nd, nd0, odd, sign;
-    const char *s, *s0, *s1;
-    double aadj, aadj1;
-    U aadj2, adj, rv, rv0;
-    ULong y, z, abs_exp;
-    Long L;
-    BCinfo bc;
-    Bigint *bb, *bb1, *bd, *bd0, *bs, *delta;
-
-    dval(&rv) = 0.;
-
-    /* Start parsing. */
-    c = *(s = s00);
-
-    /* Parse optional sign, if present. */
-    sign = 0;
-    switch (c) {
-    case '-':
-        sign = 1;
-        /* no break */
-    case '+':
-        c = *++s;
-    }
-
-    /* Skip leading zeros: lz is true iff there were leading zeros. */
-    s1 = s;
-    while (c == '0')
-        c = *++s;
-    lz = s != s1;
-
-    /* Point s0 at the first nonzero digit (if any).  nd0 will be the position
-       of the point relative to s0.  nd will be the total number of digits
-       ignoring leading zeros. */
-    s0 = s1 = s;
-    while ('0' <= c && c <= '9')
-        c = *++s;
-    nd0 = nd = s - s1;
-
-    /* Parse decimal point and following digits. */
-    if (c == '.') {
-        c = *++s;
-        if (!nd) {
-            s1 = s;
-            while (c == '0')
-                c = *++s;
-            lz = lz || s != s1;
-            nd0 -= s - s1;
-            s0 = s;
-        }
-        s1 = s;
-        while ('0' <= c && c <= '9')
-            c = *++s;
-        nd += s - s1;
-    }
-
-    /* Now lz is true if and only if there were leading zero digits, and nd
-       gives the total number of digits ignoring leading zeros.  A valid input
-       must have at least one digit. */
-    if (!nd && !lz) {
-        if (se)
-            *se = (char *)s00;
-        goto parse_error;
-    }
-
-    /* Parse exponent. */
-    e = 0;
-    if (c == 'e' || c == 'E') {
-        s00 = s;
-        c = *++s;
-
-        /* Exponent sign. */
-        esign = 0;
-        switch (c) {
-        case '-':
-            esign = 1;
-            /* no break */
-        case '+':
-            c = *++s;
-        }
-
-        /* Skip zeros.  lz is true iff there are leading zeros. */
-        s1 = s;
-        while (c == '0')
-            c = *++s;
-        lz = s != s1;
-
-        /* Get absolute value of the exponent. */
-        s1 = s;
-        abs_exp = 0;
-        while ('0' <= c && c <= '9') {
-            abs_exp = 10*abs_exp + (c - '0');
-            c = *++s;
-        }
-
-        /* abs_exp will be correct modulo 2**32.  But 10**9 < 2**32, so if
-           there are at most 9 significant exponent digits then overflow is
-           impossible. */
-        if (s - s1 > 9 || abs_exp > MAX_ABS_EXP)
-            e = (int)MAX_ABS_EXP;
-        else
-            e = (int)abs_exp;
-        if (esign)
-            e = -e;
-
-        /* A valid exponent must have at least one digit. */
-        if (s == s1 && !lz)
-            s = s00;
-    }
-
-    /* Adjust exponent to take into account position of the point. */
-    e -= nd - nd0;
-    if (nd0 <= 0)
-        nd0 = nd;
-
-    /* Finished parsing.  Set se to indicate how far we parsed */
-    if (se)
-        *se = (char *)s;
-
-    /* If all digits were zero, exit with return value +-0.0.  Otherwise,
-       strip trailing zeros: scan back until we hit a nonzero digit. */
-    if (!nd)
-        goto ret;
-    for (i = nd; i > 0; ) {
-        --i;
-        if (s0[i < nd0 ? i : i+1] != '0') {
-            ++i;
-            break;
-        }
-    }
-    e += nd - i;
-    nd = i;
-    if (nd0 > nd)
-        nd0 = nd;
-
-    /* Summary of parsing results.  After parsing, and dealing with zero
-     * inputs, we have values s0, nd0, nd, e, sign, where:
-     *
-     *  - s0 points to the first significant digit of the input string
-     *
-     *  - nd is the total number of significant digits (here, and
-     *    below, 'significant digits' means the set of digits of the
-     *    significand of the input that remain after ignoring leading
-     *    and trailing zeros).
-     *
-     *  - nd0 indicates the position of the decimal point, if present; it
-     *    satisfies 1 <= nd0 <= nd.  The nd significant digits are in
-     *    s0[0:nd0] and s0[nd0+1:nd+1] using the usual Python half-open slice
-     *    notation.  (If nd0 < nd, then s0[nd0] contains a '.'  character; if
-     *    nd0 == nd, then s0[nd0] could be any non-digit character.)
-     *
-     *  - e is the adjusted exponent: the absolute value of the number
-     *    represented by the original input string is n * 10**e, where
-     *    n is the integer represented by the concatenation of
-     *    s0[0:nd0] and s0[nd0+1:nd+1]
-     *
-     *  - sign gives the sign of the input:  1 for negative, 0 for positive
-     *
-     *  - the first and last significant digits are nonzero
-     */
-
-    /* put first DBL_DIG+1 digits into integer y and z.
-     *
-     *  - y contains the value represented by the first min(9, nd)
-     *    significant digits
-     *
-     *  - if nd > 9, z contains the value represented by significant digits
-     *    with indices in [9, min(16, nd)).  So y * 10**(min(16, nd) - 9) + z
-     *    gives the value represented by the first min(16, nd) sig. digits.
-     */
-
-    bc.e0 = e1 = e;
-    y = z = 0;
-    for (i = 0; i < nd; i++) {
-        if (i < 9)
-            y = 10*y + s0[i < nd0 ? i : i+1] - '0';
-        else if (i < DBL_DIG+1)
-            z = 10*z + s0[i < nd0 ? i : i+1] - '0';
-        else
-            break;
-    }
-
-    k = nd < DBL_DIG + 1 ? nd : DBL_DIG + 1;
-    dval(&rv) = y;
-    if (k > 9) {
-        dval(&rv) = tens[k - 9] * dval(&rv) + z;
-    }
-    bd0 = 0;
-    if (nd <= DBL_DIG
-        && Flt_Rounds == 1
-        ) {
-        if (!e)
-            goto ret;
-        if (e > 0) {
-            if (e <= Ten_pmax) {
-                dval(&rv) *= tens[e];
-                goto ret;
-            }
-            i = DBL_DIG - nd;
-            if (e <= Ten_pmax + i) {
-                /* A fancier test would sometimes let us do
-                 * this for larger i values.
-                 */
-                e -= i;
-                dval(&rv) *= tens[i];
-                dval(&rv) *= tens[e];
-                goto ret;
-            }
-        }
-        else if (e >= -Ten_pmax) {
-            dval(&rv) /= tens[-e];
-            goto ret;
-        }
-    }
-    e1 += nd - k;
-
-    bc.scale = 0;
-
-    /* Get starting approximation = rv * 10**e1 */
-
-    if (e1 > 0) {
-        if ((i = e1 & 15))
-            dval(&rv) *= tens[i];
-        if (e1 &= ~15) {
-            if (e1 > DBL_MAX_10_EXP)
-                goto ovfl;
-            e1 >>= 4;
-            for(j = 0; e1 > 1; j++, e1 >>= 1)
-                if (e1 & 1)
-                    dval(&rv) *= bigtens[j];
-            /* The last multiplication could overflow. */
-            word0(&rv) -= P*Exp_msk1;
-            dval(&rv) *= bigtens[j];
-            if ((z = word0(&rv) & Exp_mask)
-                > Exp_msk1*(DBL_MAX_EXP+Bias-P))
-                goto ovfl;
-            if (z > Exp_msk1*(DBL_MAX_EXP+Bias-1-P)) {
-                /* set to largest number */
-                /* (Can't trust DBL_MAX) */
-                word0(&rv) = Big0;
-                word1(&rv) = Big1;
-            }
-            else
-                word0(&rv) += P*Exp_msk1;
-        }
-    }
-    else if (e1 < 0) {
-        /* The input decimal value lies in [10**e1, 10**(e1+16)).
-
-           If e1 <= -512, underflow immediately.
-           If e1 <= -256, set bc.scale to 2*P.
-
-           So for input value < 1e-256, bc.scale is always set;
-           for input value >= 1e-240, bc.scale is never set.
-           For input values in [1e-256, 1e-240), bc.scale may or may
-           not be set. */
-
-        e1 = -e1;
-        if ((i = e1 & 15))
-            dval(&rv) /= tens[i];
-        if (e1 >>= 4) {
-            if (e1 >= 1 << n_bigtens)
-                goto undfl;
-            if (e1 & Scale_Bit)
-                bc.scale = 2*P;
-            for(j = 0; e1 > 0; j++, e1 >>= 1)
-                if (e1 & 1)
-                    dval(&rv) *= tinytens[j];
-            if (bc.scale && (j = 2*P + 1 - ((word0(&rv) & Exp_mask)
-                                            >> Exp_shift)) > 0) {
-                /* scaled rv is denormal; clear j low bits */
-                if (j >= 32) {
-                    word1(&rv) = 0;
-                    if (j >= 53)
-                        word0(&rv) = (P+2)*Exp_msk1;
-                    else
-                        word0(&rv) &= 0xffffffff << (j-32);
-                }
-                else
-                    word1(&rv) &= 0xffffffff << j;
-            }
-            if (!dval(&rv))
-                goto undfl;
-        }
-    }
-
-    /* Now the hard part -- adjusting rv to the correct value.*/
-
-    /* Put digits into bd: true value = bd * 10^e */
-
-    bc.nd = nd;
-    bc.nd0 = nd0;       /* Only needed if nd > STRTOD_DIGLIM, but done here */
-                        /* to silence an erroneous warning about bc.nd0 */
-                        /* possibly not being initialized. */
-    if (nd > STRTOD_DIGLIM) {
-        /* ASSERT(STRTOD_DIGLIM >= 18); 18 == one more than the */
-        /* minimum number of decimal digits to distinguish double values */
-        /* in IEEE arithmetic. */
-
-        /* Truncate input to 18 significant digits, then discard any trailing
-           zeros on the result by updating nd, nd0, e and y suitably. (There's
-           no need to update z; it's not reused beyond this point.) */
-        for (i = 18; i > 0; ) {
-            /* scan back until we hit a nonzero digit.  significant digit 'i'
-            is s0[i] if i < nd0, s0[i+1] if i >= nd0. */
-            --i;
-            if (s0[i < nd0 ? i : i+1] != '0') {
-                ++i;
-                break;
-            }
-        }
-        e += nd - i;
-        nd = i;
-        if (nd0 > nd)
-            nd0 = nd;
-        if (nd < 9) { /* must recompute y */
-            y = 0;
-            for(i = 0; i < nd0; ++i)
-                y = 10*y + s0[i] - '0';
-            for(; i < nd; ++i)
-                y = 10*y + s0[i+1] - '0';
-        }
-    }
-    bd0 = s2b(s0, nd0, nd, y);
-    if (bd0 == NULL)
-        goto failed_malloc;
-
-    /* Notation for the comments below.  Write:
-
-         - dv for the absolute value of the number represented by the original
-           decimal input string.
-
-         - if we've truncated dv, write tdv for the truncated value.
-           Otherwise, set tdv == dv.
-
-         - srv for the quantity rv/2^bc.scale; so srv is the current binary
-           approximation to tdv (and dv).  It should be exactly representable
-           in an IEEE 754 double.
-    */
-
-    for(;;) {
-
-        /* This is the main correction loop for _Py_dg_strtod.
-
-           We've got a decimal value tdv, and a floating-point approximation
-           srv=rv/2^bc.scale to tdv.  The aim is to determine whether srv is
-           close enough (i.e., within 0.5 ulps) to tdv, and to compute a new
-           approximation if not.
-
-           To determine whether srv is close enough to tdv, compute integers
-           bd, bb and bs proportional to tdv, srv and 0.5 ulp(srv)
-           respectively, and then use integer arithmetic to determine whether
-           |tdv - srv| is less than, equal to, or greater than 0.5 ulp(srv).
-        */
-
-        bd = Balloc(bd0->k);
-        if (bd == NULL) {
-            Bfree(bd0);
-            goto failed_malloc;
-        }
-        Bcopy(bd, bd0);
-        bb = sd2b(&rv, bc.scale, &bbe);   /* srv = bb * 2^bbe */
-        if (bb == NULL) {
-            Bfree(bd);
-            Bfree(bd0);
-            goto failed_malloc;
-        }
-        /* Record whether lsb of bb is odd, in case we need this
-           for the round-to-even step later. */
-        odd = bb->x[0] & 1;
-
-        /* tdv = bd * 10**e;  srv = bb * 2**bbe */
-        bs = i2b(1);
-        if (bs == NULL) {
-            Bfree(bb);
-            Bfree(bd);
-            Bfree(bd0);
-            goto failed_malloc;
-        }
-
-        if (e >= 0) {
-            bb2 = bb5 = 0;
-            bd2 = bd5 = e;
-        }
-        else {
-            bb2 = bb5 = -e;
-            bd2 = bd5 = 0;
-        }
-        if (bbe >= 0)
-            bb2 += bbe;
-        else
-            bd2 -= bbe;
-        bs2 = bb2;
-        bb2++;
-        bd2++;
-
-        /* At this stage bd5 - bb5 == e == bd2 - bb2 + bbe, bb2 - bs2 == 1,
-	   and bs == 1, so:
-
-              tdv == bd * 10**e = bd * 2**(bbe - bb2 + bd2) * 5**(bd5 - bb5)
-              srv == bb * 2**bbe = bb * 2**(bbe - bb2 + bb2)
-	      0.5 ulp(srv) == 2**(bbe-1) = bs * 2**(bbe - bb2 + bs2)
-
-	   It follows that:
-
-              M * tdv = bd * 2**bd2 * 5**bd5
-              M * srv = bb * 2**bb2 * 5**bb5
-              M * 0.5 ulp(srv) = bs * 2**bs2 * 5**bb5
-
-	   for some constant M.  (Actually, M == 2**(bb2 - bbe) * 5**bb5, but
-	   this fact is not needed below.)
-        */
-
-        /* Remove factor of 2**i, where i = min(bb2, bd2, bs2). */
-        i = bb2 < bd2 ? bb2 : bd2;
-        if (i > bs2)
-            i = bs2;
-        if (i > 0) {
-            bb2 -= i;
-            bd2 -= i;
-            bs2 -= i;
-        }
-
-        /* Scale bb, bd, bs by the appropriate powers of 2 and 5. */
-        if (bb5 > 0) {
-            bs = pow5mult(bs, bb5);
-            if (bs == NULL) {
-                Bfree(bb);
-                Bfree(bd);
-                Bfree(bd0);
-                goto failed_malloc;
-            }
-            bb1 = mult(bs, bb);
-            Bfree(bb);
-            bb = bb1;
-            if (bb == NULL) {
-                Bfree(bs);
-                Bfree(bd);
-                Bfree(bd0);
-                goto failed_malloc;
-            }
-        }
-        if (bb2 > 0) {
-            bb = lshift(bb, bb2);
-            if (bb == NULL) {
-                Bfree(bs);
-                Bfree(bd);
-                Bfree(bd0);
-                goto failed_malloc;
-            }
-        }
-        if (bd5 > 0) {
-            bd = pow5mult(bd, bd5);
-            if (bd == NULL) {
-                Bfree(bb);
-                Bfree(bs);
-                Bfree(bd0);
-                goto failed_malloc;
-            }
-        }
-        if (bd2 > 0) {
-            bd = lshift(bd, bd2);
-            if (bd == NULL) {
-                Bfree(bb);
-                Bfree(bs);
-                Bfree(bd0);
-                goto failed_malloc;
-            }
-        }
-        if (bs2 > 0) {
-            bs = lshift(bs, bs2);
-            if (bs == NULL) {
-                Bfree(bb);
-                Bfree(bd);
-                Bfree(bd0);
-                goto failed_malloc;
-            }
-        }
-
-        /* Now bd, bb and bs are scaled versions of tdv, srv and 0.5 ulp(srv),
-           respectively.  Compute the difference |tdv - srv|, and compare
-           with 0.5 ulp(srv). */
-
-        delta = diff(bb, bd);
-        if (delta == NULL) {
-            Bfree(bb);
-            Bfree(bs);
-            Bfree(bd);
-            Bfree(bd0);
-            goto failed_malloc;
-        }
-        dsign = delta->sign;
-        delta->sign = 0;
-        i = cmp(delta, bs);
-        if (bc.nd > nd && i <= 0) {
-            if (dsign)
-                break;  /* Must use bigcomp(). */
-
-            /* Here rv overestimates the truncated decimal value by at most
-               0.5 ulp(rv).  Hence rv either overestimates the true decimal
-               value by <= 0.5 ulp(rv), or underestimates it by some small
-               amount (< 0.1 ulp(rv)); either way, rv is within 0.5 ulps of
-               the true decimal value, so it's possible to exit.
-
-               Exception: if scaled rv is a normal exact power of 2, but not
-               DBL_MIN, then rv - 0.5 ulp(rv) takes us all the way down to the
-               next double, so the correctly rounded result is either rv - 0.5
-               ulp(rv) or rv; in this case, use bigcomp to distinguish. */
-
-            if (!word1(&rv) && !(word0(&rv) & Bndry_mask)) {
-                /* rv can't be 0, since it's an overestimate for some
-                   nonzero value.  So rv is a normal power of 2. */
-                j = (int)(word0(&rv) & Exp_mask) >> Exp_shift;
-                /* rv / 2^bc.scale = 2^(j - 1023 - bc.scale); use bigcomp if
-                   rv / 2^bc.scale >= 2^-1021. */
-                if (j - bc.scale >= 2) {
-                    dval(&rv) -= 0.5 * sulp(&rv, &bc);
-                    break; /* Use bigcomp. */
-                }
-            }
-
-            {
-                bc.nd = nd;
-                i = -1; /* Discarded digits make delta smaller. */
-            }
-        }
-
-        if (i < 0) {
-            /* Error is less than half an ulp -- check for
-             * special case of mantissa a power of two.
-             */
-            if (dsign || word1(&rv) || word0(&rv) & Bndry_mask
-                || (word0(&rv) & Exp_mask) <= (2*P+1)*Exp_msk1
-                ) {
-                break;
-            }
-            if (!delta->x[0] && delta->wds <= 1) {
-                /* exact result */
-                break;
-            }
-            delta = lshift(delta,Log2P);
-            if (delta == NULL) {
-                Bfree(bb);
-                Bfree(bs);
-                Bfree(bd);
-                Bfree(bd0);
-                goto failed_malloc;
-            }
-            if (cmp(delta, bs) > 0)
-                goto drop_down;
-            break;
-        }
-        if (i == 0) {
-            /* exactly half-way between */
-            if (dsign) {
-                if ((word0(&rv) & Bndry_mask1) == Bndry_mask1
-                    &&  word1(&rv) == (
-                        (bc.scale &&
-                         (y = word0(&rv) & Exp_mask) <= 2*P*Exp_msk1) ?
-                        (0xffffffff & (0xffffffff << (2*P+1-(y>>Exp_shift)))) :
-                        0xffffffff)) {
-                    /*boundary case -- increment exponent*/
-                    word0(&rv) = (word0(&rv) & Exp_mask)
-                        + Exp_msk1
-                        ;
-                    word1(&rv) = 0;
-                    dsign = 0;
-                    break;
-                }
-            }
-            else if (!(word0(&rv) & Bndry_mask) && !word1(&rv)) {
-              drop_down:
-                /* boundary case -- decrement exponent */
-                if (bc.scale) {
-                    L = word0(&rv) & Exp_mask;
-                    if (L <= (2*P+1)*Exp_msk1) {
-                        if (L > (P+2)*Exp_msk1)
-                            /* round even ==> */
-                            /* accept rv */
-                            break;
-                        /* rv = smallest denormal */
-                        if (bc.nd > nd)
-                            break;
-                        goto undfl;
-                    }
-                }
-                L = (word0(&rv) & Exp_mask) - Exp_msk1;
-                word0(&rv) = L | Bndry_mask1;
-                word1(&rv) = 0xffffffff;
-                break;
-            }
-            if (!odd)
-                break;
-            if (dsign)
-                dval(&rv) += sulp(&rv, &bc);
-            else {
-                dval(&rv) -= sulp(&rv, &bc);
-                if (!dval(&rv)) {
-                    if (bc.nd >nd)
-                        break;
-                    goto undfl;
-                }
-            }
-            dsign = 1 - dsign;
-            break;
-        }
-        if ((aadj = ratio(delta, bs)) <= 2.) {
-            if (dsign)
-                aadj = aadj1 = 1.;
-            else if (word1(&rv) || word0(&rv) & Bndry_mask) {
-                if (word1(&rv) == Tiny1 && !word0(&rv)) {
-                    if (bc.nd >nd)
-                        break;
-                    goto undfl;
-                }
-                aadj = 1.;
-                aadj1 = -1.;
-            }
-            else {
-                /* special case -- power of FLT_RADIX to be */
-                /* rounded down... */
-
-                if (aadj < 2./FLT_RADIX)
-                    aadj = 1./FLT_RADIX;
-                else
-                    aadj *= 0.5;
-                aadj1 = -aadj;
-            }
-        }
-        else {
-            aadj *= 0.5;
-            aadj1 = dsign ? aadj : -aadj;
-            if (Flt_Rounds == 0)
-                aadj1 += 0.5;
-        }
-        y = word0(&rv) & Exp_mask;
-
-        /* Check for overflow */
-
-        if (y == Exp_msk1*(DBL_MAX_EXP+Bias-1)) {
-            dval(&rv0) = dval(&rv);
-            word0(&rv) -= P*Exp_msk1;
-            adj.d = aadj1 * ulp(&rv);
-            dval(&rv) += adj.d;
-            if ((word0(&rv) & Exp_mask) >=
-                Exp_msk1*(DBL_MAX_EXP+Bias-P)) {
-                if (word0(&rv0) == Big0 && word1(&rv0) == Big1) {
-                    Bfree(bb);
-                    Bfree(bd);
-                    Bfree(bs);
-                    Bfree(bd0);
-                    Bfree(delta);
-                    goto ovfl;
-                }
-                word0(&rv) = Big0;
-                word1(&rv) = Big1;
-                goto cont;
-            }
-            else
-                word0(&rv) += P*Exp_msk1;
-        }
-        else {
-            if (bc.scale && y <= 2*P*Exp_msk1) {
-                if (aadj <= 0x7fffffff) {
-                    if ((z = (ULong)aadj) <= 0)
-                        z = 1;
-                    aadj = z;
-                    aadj1 = dsign ? aadj : -aadj;
-                }
-                dval(&aadj2) = aadj1;
-                word0(&aadj2) += (2*P+1)*Exp_msk1 - y;
-                aadj1 = dval(&aadj2);
-            }
-            adj.d = aadj1 * ulp(&rv);
-            dval(&rv) += adj.d;
-        }
-        z = word0(&rv) & Exp_mask;
-        if (bc.nd == nd) {
-            if (!bc.scale)
-                if (y == z) {
-                    /* Can we stop now? */
-                    L = (Long)aadj;
-                    aadj -= L;
-                    /* The tolerances below are conservative. */
-                    if (dsign || word1(&rv) || word0(&rv) & Bndry_mask) {
-                        if (aadj < .4999999 || aadj > .5000001)
-                            break;
-                    }
-                    else if (aadj < .4999999/FLT_RADIX)
-                        break;
-                }
-        }
-      cont:
-        Bfree(bb);
-        Bfree(bd);
-        Bfree(bs);
-        Bfree(delta);
-    }
-    Bfree(bb);
-    Bfree(bd);
-    Bfree(bs);
-    Bfree(bd0);
-    Bfree(delta);
-    if (bc.nd > nd) {
-        error = bigcomp(&rv, s0, &bc);
-        if (error)
-            goto failed_malloc;
-    }
-
-    if (bc.scale) {
-        word0(&rv0) = Exp_1 - 2*P*Exp_msk1;
-        word1(&rv0) = 0;
-        dval(&rv) *= dval(&rv0);
-    }
-
-  ret:
-    return sign ? -dval(&rv) : dval(&rv);
-
-  parse_error:
-    return 0.0;
-
-  failed_malloc:
-    errno = ENOMEM;
-    return -1.0;
-
-  undfl:
-    return sign ? -0.0 : 0.0;
-
-  ovfl:
-    errno = ERANGE;
-    /* Can't trust HUGE_VAL */
-    word0(&rv) = Exp_mask;
-    word1(&rv) = 0;
-    return sign ? -dval(&rv) : dval(&rv);
-
-}
-
-static char *
-rv_alloc(int i)
-{
-    int j, k, *r;
-
-    j = sizeof(ULong);
-    for(k = 0;
-        sizeof(Bigint) - sizeof(ULong) - sizeof(int) + j <= (unsigned)i;
-        j <<= 1)
-        k++;
-    r = (int*)Balloc(k);
-    if (r == NULL)
-        return NULL;
-    *r = k;
-    return (char *)(r+1);
-}
-
-static char *
-nrv_alloc(char *s, char **rve, int n)
-{
-    char *rv, *t;
-
-    rv = rv_alloc(n);
-    if (rv == NULL)
-        return NULL;
-    t = rv;
-    while((*t = *s++)) t++;
-    if (rve)
-        *rve = t;
-    return rv;
-}
-
-/* freedtoa(s) must be used to free values s returned by dtoa
- * when MULTIPLE_THREADS is #defined.  It should be used in all cases,
- * but for consistency with earlier versions of dtoa, it is optional
- * when MULTIPLE_THREADS is not defined.
- */
-
-void
-_Py_dg_freedtoa(char *s)
-{
-    Bigint *b = (Bigint *)((int *)s - 1);
-    b->maxwds = 1 << (b->k = *(int*)b);
-    Bfree(b);
-}
-
-/* dtoa for IEEE arithmetic (dmg): convert double to ASCII string.
- *
- * Inspired by "How to Print Floating-Point Numbers Accurately" by
- * Guy L. Steele, Jr. and Jon L. White [Proc. ACM SIGPLAN '90, pp. 112-126].
- *
- * Modifications:
- *      1. Rather than iterating, we use a simple numeric overestimate
- *         to determine k = floor(log10(d)).  We scale relevant
- *         quantities using O(log2(k)) rather than O(k) multiplications.
- *      2. For some modes > 2 (corresponding to ecvt and fcvt), we don't
- *         try to generate digits strictly left to right.  Instead, we
- *         compute with fewer bits and propagate the carry if necessary
- *         when rounding the final digit up.  This is often faster.
- *      3. Under the assumption that input will be rounded nearest,
- *         mode 0 renders 1e23 as 1e23 rather than 9.999999999999999e22.
- *         That is, we allow equality in stopping tests when the
- *         round-nearest rule will give the same floating-point value
- *         as would satisfaction of the stopping test with strict
- *         inequality.
- *      4. We remove common factors of powers of 2 from relevant
- *         quantities.
- *      5. When converting floating-point integers less than 1e16,
- *         we use floating-point arithmetic rather than resorting
- *         to multiple-precision integers.
- *      6. When asked to produce fewer than 15 digits, we first try
- *         to get by with floating-point arithmetic; we resort to
- *         multiple-precision integer arithmetic only if we cannot
- *         guarantee that the floating-point calculation has given
- *         the correctly rounded result.  For k requested digits and
- *         "uniformly" distributed input, the probability is
- *         something like 10^(k-15) that we must resort to the Long
- *         calculation.
- */
-
-/* Additional notes (METD): (1) returns NULL on failure.  (2) to avoid memory
-   leakage, a successful call to _Py_dg_dtoa should always be matched by a
-   call to _Py_dg_freedtoa. */
-
-char *
-_Py_dg_dtoa(double dd, int mode, int ndigits,
-            int *decpt, int *sign, char **rve)
-{
-    /*  Arguments ndigits, decpt, sign are similar to those
-        of ecvt and fcvt; trailing zeros are suppressed from
-        the returned string.  If not null, *rve is set to point
-        to the end of the return value.  If d is +-Infinity or NaN,
-        then *decpt is set to 9999.
-
-        mode:
-        0 ==> shortest string that yields d when read in
-        and rounded to nearest.
-        1 ==> like 0, but with Steele & White stopping rule;
-        e.g. with IEEE P754 arithmetic , mode 0 gives
-        1e23 whereas mode 1 gives 9.999999999999999e22.
-        2 ==> max(1,ndigits) significant digits.  This gives a
-        return value similar to that of ecvt, except
-        that trailing zeros are suppressed.
-        3 ==> through ndigits past the decimal point.  This
-        gives a return value similar to that from fcvt,
-        except that trailing zeros are suppressed, and
-        ndigits can be negative.
-        4,5 ==> similar to 2 and 3, respectively, but (in
-        round-nearest mode) with the tests of mode 0 to
-        possibly return a shorter string that rounds to d.
-        With IEEE arithmetic and compilation with
-        -DHonor_FLT_ROUNDS, modes 4 and 5 behave the same
-        as modes 2 and 3 when FLT_ROUNDS != 1.
-        6-9 ==> Debugging modes similar to mode - 4:  don't try
-        fast floating-point estimate (if applicable).
-
-        Values of mode other than 0-9 are treated as mode 0.
-
-        Sufficient space is allocated to the return value
-        to hold the suppressed trailing zeros.
-    */
-
-    int bbits, b2, b5, be, dig, i, ieps, ilim, ilim0, ilim1,
-        j, j1, k, k0, k_check, leftright, m2, m5, s2, s5,
-        spec_case, try_quick;
-    Long L;
-    int denorm;
-    ULong x;
-    Bigint *b, *b1, *delta, *mlo, *mhi, *S;
-    U d2, eps, u;
-    double ds;
-    char *s, *s0;
-
-    /* set pointers to NULL, to silence gcc compiler warnings and make
-       cleanup easier on error */
-    mlo = mhi = S = 0;
-    s0 = 0;
-
-    u.d = dd;
-    if (word0(&u) & Sign_bit) {
-        /* set sign for everything, including 0's and NaNs */
-        *sign = 1;
-        word0(&u) &= ~Sign_bit; /* clear sign bit */
-    }
-    else
-        *sign = 0;
-
-    /* quick return for Infinities, NaNs and zeros */
-    if ((word0(&u) & Exp_mask) == Exp_mask)
-    {
-        /* Infinity or NaN */
-        *decpt = 9999;
-        if (!word1(&u) && !(word0(&u) & 0xfffff))
-            return nrv_alloc("Infinity", rve, 8);
-        return nrv_alloc("NaN", rve, 3);
-    }
-    if (!dval(&u)) {
-        *decpt = 1;
-        return nrv_alloc("0", rve, 1);
-    }
-
-    /* compute k = floor(log10(d)).  The computation may leave k
-       one too large, but should never leave k too small. */
-    b = d2b(&u, &be, &bbits);
-    if (b == NULL)
-        goto failed_malloc;
-    if ((i = (int)(word0(&u) >> Exp_shift1 & (Exp_mask>>Exp_shift1)))) {
-        dval(&d2) = dval(&u);
-        word0(&d2) &= Frac_mask1;
-        word0(&d2) |= Exp_11;
-
-        /* log(x)       ~=~ log(1.5) + (x-1.5)/1.5
-         * log10(x)      =  log(x) / log(10)
-         *              ~=~ log(1.5)/log(10) + (x-1.5)/(1.5*log(10))
-         * log10(d) = (i-Bias)*log(2)/log(10) + log10(d2)
-         *
-         * This suggests computing an approximation k to log10(d) by
-         *
-         * k = (i - Bias)*0.301029995663981
-         *      + ( (d2-1.5)*0.289529654602168 + 0.176091259055681 );
-         *
-         * We want k to be too large rather than too small.
-         * The error in the first-order Taylor series approximation
-         * is in our favor, so we just round up the constant enough
-         * to compensate for any error in the multiplication of
-         * (i - Bias) by 0.301029995663981; since |i - Bias| <= 1077,
-         * and 1077 * 0.30103 * 2^-52 ~=~ 7.2e-14,
-         * adding 1e-13 to the constant term more than suffices.
-         * Hence we adjust the constant term to 0.1760912590558.
-         * (We could get a more accurate k by invoking log10,
-         *  but this is probably not worthwhile.)
-         */
-
-        i -= Bias;
-        denorm = 0;
-    }
-    else {
-        /* d is denormalized */
-
-        i = bbits + be + (Bias + (P-1) - 1);
-        x = i > 32  ? word0(&u) << (64 - i) | word1(&u) >> (i - 32)
-            : word1(&u) << (32 - i);
-        dval(&d2) = x;
-        word0(&d2) -= 31*Exp_msk1; /* adjust exponent */
-        i -= (Bias + (P-1) - 1) + 1;
-        denorm = 1;
-    }
-    ds = (dval(&d2)-1.5)*0.289529654602168 + 0.1760912590558 +
-        i*0.301029995663981;
-    k = (int)ds;
-    if (ds < 0. && ds != k)
-        k--;    /* want k = floor(ds) */
-    k_check = 1;
-    if (k >= 0 && k <= Ten_pmax) {
-        if (dval(&u) < tens[k])
-            k--;
-        k_check = 0;
-    }
-    j = bbits - i - 1;
-    if (j >= 0) {
-        b2 = 0;
-        s2 = j;
-    }
-    else {
-        b2 = -j;
-        s2 = 0;
-    }
-    if (k >= 0) {
-        b5 = 0;
-        s5 = k;
-        s2 += k;
-    }
-    else {
-        b2 -= k;
-        b5 = -k;
-        s5 = 0;
-    }
-    if (mode < 0 || mode > 9)
-        mode = 0;
-
-    try_quick = 1;
-
-    if (mode > 5) {
-        mode -= 4;
-        try_quick = 0;
-    }
-    leftright = 1;
-    ilim = ilim1 = -1;  /* Values for cases 0 and 1; done here to */
-    /* silence erroneous "gcc -Wall" warning. */
-    switch(mode) {
-    case 0:
-    case 1:
-        i = 18;
-        ndigits = 0;
-        break;
-    case 2:
-        leftright = 0;
-        /* no break */
-    case 4:
-        if (ndigits <= 0)
-            ndigits = 1;
-        ilim = ilim1 = i = ndigits;
-        break;
-    case 3:
-        leftright = 0;
-        /* no break */
-    case 5:
-        i = ndigits + k + 1;
-        ilim = i;
-        ilim1 = i - 1;
-        if (i <= 0)
-            i = 1;
-    }
-    s0 = rv_alloc(i);
-    if (s0 == NULL)
-        goto failed_malloc;
-    s = s0;
-
-
-    if (ilim >= 0 && ilim <= Quick_max && try_quick) {
-
-        /* Try to get by with floating-point arithmetic. */
-
-        i = 0;
-        dval(&d2) = dval(&u);
-        k0 = k;
-        ilim0 = ilim;
-        ieps = 2; /* conservative */
-        if (k > 0) {
-            ds = tens[k&0xf];
-            j = k >> 4;
-            if (j & Bletch) {
-                /* prevent overflows */
-                j &= Bletch - 1;
-                dval(&u) /= bigtens[n_bigtens-1];
-                ieps++;
-            }
-            for(; j; j >>= 1, i++)
-                if (j & 1) {
-                    ieps++;
-                    ds *= bigtens[i];
-                }
-            dval(&u) /= ds;
-        }
-        else if ((j1 = -k)) {
-            dval(&u) *= tens[j1 & 0xf];
-            for(j = j1 >> 4; j; j >>= 1, i++)
-                if (j & 1) {
-                    ieps++;
-                    dval(&u) *= bigtens[i];
-                }
-        }
-        if (k_check && dval(&u) < 1. && ilim > 0) {
-            if (ilim1 <= 0)
-                goto fast_failed;
-            ilim = ilim1;
-            k--;
-            dval(&u) *= 10.;
-            ieps++;
-        }
-        dval(&eps) = ieps*dval(&u) + 7.;
-        word0(&eps) -= (P-1)*Exp_msk1;
-        if (ilim == 0) {
-            S = mhi = 0;
-            dval(&u) -= 5.;
-            if (dval(&u) > dval(&eps))
-                goto one_digit;
-            if (dval(&u) < -dval(&eps))
-                goto no_digits;
-            goto fast_failed;
-        }
-        if (leftright) {
-            /* Use Steele & White method of only
-             * generating digits needed.
-             */
-            dval(&eps) = 0.5/tens[ilim-1] - dval(&eps);
-            for(i = 0;;) {
-                L = (Long)dval(&u);
-                dval(&u) -= L;
-                *s++ = '0' + (int)L;
-                if (dval(&u) < dval(&eps))
-                    goto ret1;
-                if (1. - dval(&u) < dval(&eps))
-                    goto bump_up;
-                if (++i >= ilim)
-                    break;
-                dval(&eps) *= 10.;
-                dval(&u) *= 10.;
-            }
-        }
-        else {
-            /* Generate ilim digits, then fix them up. */
-            dval(&eps) *= tens[ilim-1];
-            for(i = 1;; i++, dval(&u) *= 10.) {
-                L = (Long)(dval(&u));
-                if (!(dval(&u) -= L))
-                    ilim = i;
-                *s++ = '0' + (int)L;
-                if (i == ilim) {
-                    if (dval(&u) > 0.5 + dval(&eps))
-                        goto bump_up;
-                    else if (dval(&u) < 0.5 - dval(&eps)) {
-                        while(*--s == '0');
-                        s++;
-                        goto ret1;
-                    }
-                    break;
-                }
-            }
-        }
-      fast_failed:
-        s = s0;
-        dval(&u) = dval(&d2);
-        k = k0;
-        ilim = ilim0;
-    }
-
-    /* Do we have a "small" integer? */
-
-    if (be >= 0 && k <= Int_max) {
-        /* Yes. */
-        ds = tens[k];
-        if (ndigits < 0 && ilim <= 0) {
-            S = mhi = 0;
-            if (ilim < 0 || dval(&u) <= 5*ds)
-                goto no_digits;
-            goto one_digit;
-        }
-        for(i = 1;; i++, dval(&u) *= 10.) {
-            L = (Long)(dval(&u) / ds);
-            dval(&u) -= L*ds;
-            *s++ = '0' + (int)L;
-            if (!dval(&u)) {
-                break;
-            }
-            if (i == ilim) {
-                dval(&u) += dval(&u);
-                if (dval(&u) > ds || (dval(&u) == ds && L & 1)) {
-                  bump_up:
-                    while(*--s == '9')
-                        if (s == s0) {
-                            k++;
-                            *s = '0';
-                            break;
-                        }
-                    ++*s++;
-                }
-                break;
-            }
-        }
-        goto ret1;
-    }
-
-    m2 = b2;
-    m5 = b5;
-    if (leftright) {
-        i =
-            denorm ? be + (Bias + (P-1) - 1 + 1) :
-            1 + P - bbits;
-        b2 += i;
-        s2 += i;
-        mhi = i2b(1);
-        if (mhi == NULL)
-            goto failed_malloc;
-    }
-    if (m2 > 0 && s2 > 0) {
-        i = m2 < s2 ? m2 : s2;
-        b2 -= i;
-        m2 -= i;
-        s2 -= i;
-    }
-    if (b5 > 0) {
-        if (leftright) {
-            if (m5 > 0) {
-                mhi = pow5mult(mhi, m5);
-                if (mhi == NULL)
-                    goto failed_malloc;
-                b1 = mult(mhi, b);
-                Bfree(b);
-                b = b1;
-                if (b == NULL)
-                    goto failed_malloc;
-            }
-            if ((j = b5 - m5)) {
-                b = pow5mult(b, j);
-                if (b == NULL)
-                    goto failed_malloc;
-            }
-        }
-        else {
-            b = pow5mult(b, b5);
-            if (b == NULL)
-                goto failed_malloc;
-        }
-    }
-    S = i2b(1);
-    if (S == NULL)
-        goto failed_malloc;
-    if (s5 > 0) {
-        S = pow5mult(S, s5);
-        if (S == NULL)
-            goto failed_malloc;
-    }
-
-    /* Check for special case that d is a normalized power of 2. */
-
-    spec_case = 0;
-    if ((mode < 2 || leftright)
-        ) {
-        if (!word1(&u) && !(word0(&u) & Bndry_mask)
-            && word0(&u) & (Exp_mask & ~Exp_msk1)
-            ) {
-            /* The special case */
-            b2 += Log2P;
-            s2 += Log2P;
-            spec_case = 1;
-        }
-    }
-
-    /* Arrange for convenient computation of quotients:
-     * shift left if necessary so divisor has 4 leading 0 bits.
-     *
-     * Perhaps we should just compute leading 28 bits of S once
-     * and for all and pass them and a shift to quorem, so it
-     * can do shifts and ors to compute the numerator for q.
-     */
-#define iInc 28
-    i = dshift(S, s2);
-    b2 += i;
-    m2 += i;
-    s2 += i;
-    if (b2 > 0) {
-        b = lshift(b, b2);
-        if (b == NULL)
-            goto failed_malloc;
-    }
-    if (s2 > 0) {
-        S = lshift(S, s2);
-        if (S == NULL)
-            goto failed_malloc;
-    }
-    if (k_check) {
-        if (cmp(b,S) < 0) {
-            k--;
-            b = multadd(b, 10, 0);      /* we botched the k estimate */
-            if (b == NULL)
-                goto failed_malloc;
-            if (leftright) {
-                mhi = multadd(mhi, 10, 0);
-                if (mhi == NULL)
-                    goto failed_malloc;
-            }
-            ilim = ilim1;
-        }
-    }
-    if (ilim <= 0 && (mode == 3 || mode == 5)) {
-        if (ilim < 0) {
-            /* no digits, fcvt style */
-          no_digits:
-            k = -1 - ndigits;
-            goto ret;
-        }
-        else {
-            S = multadd(S, 5, 0);
-            if (S == NULL)
-                goto failed_malloc;
-            if (cmp(b, S) <= 0)
-                goto no_digits;
-        }
-      one_digit:
-        *s++ = '1';
-        k++;
-        goto ret;
-    }
-    if (leftright) {
-        if (m2 > 0) {
-            mhi = lshift(mhi, m2);
-            if (mhi == NULL)
-                goto failed_malloc;
-        }
-
-        /* Compute mlo -- check for special case
-         * that d is a normalized power of 2.
-         */
-
-        mlo = mhi;
-        if (spec_case) {
-            mhi = Balloc(mhi->k);
-            if (mhi == NULL)
-                goto failed_malloc;
-            Bcopy(mhi, mlo);
-            mhi = lshift(mhi, Log2P);
-            if (mhi == NULL)
-                goto failed_malloc;
-        }
-
-        for(i = 1;;i++) {
-            dig = quorem(b,S) + '0';
-            /* Do we yet have the shortest decimal string
-             * that will round to d?
-             */
-            j = cmp(b, mlo);
-            delta = diff(S, mhi);
-            if (delta == NULL)
-                goto failed_malloc;
-            j1 = delta->sign ? 1 : cmp(b, delta);
-            Bfree(delta);
-            if (j1 == 0 && mode != 1 && !(word1(&u) & 1)
-                ) {
-                if (dig == '9')
-                    goto round_9_up;
-                if (j > 0)
-                    dig++;
-                *s++ = dig;
-                goto ret;
-            }
-            if (j < 0 || (j == 0 && mode != 1
-                          && !(word1(&u) & 1)
-                    )) {
-                if (!b->x[0] && b->wds <= 1) {
-                    goto accept_dig;
-                }
-                if (j1 > 0) {
-                    b = lshift(b, 1);
-                    if (b == NULL)
-                        goto failed_malloc;
-                    j1 = cmp(b, S);
-                    if ((j1 > 0 || (j1 == 0 && dig & 1))
-                        && dig++ == '9')
-                        goto round_9_up;
-                }
-              accept_dig:
-                *s++ = dig;
-                goto ret;
-            }
-            if (j1 > 0) {
-                if (dig == '9') { /* possible if i == 1 */
-                  round_9_up:
-                    *s++ = '9';
-                    goto roundoff;
-                }
-                *s++ = dig + 1;
-                goto ret;
-            }
-            *s++ = dig;
-            if (i == ilim)
-                break;
-            b = multadd(b, 10, 0);
-            if (b == NULL)
-                goto failed_malloc;
-            if (mlo == mhi) {
-                mlo = mhi = multadd(mhi, 10, 0);
-                if (mlo == NULL)
-                    goto failed_malloc;
-            }
-            else {
-                mlo = multadd(mlo, 10, 0);
-                if (mlo == NULL)
-                    goto failed_malloc;
-                mhi = multadd(mhi, 10, 0);
-                if (mhi == NULL)
-                    goto failed_malloc;
-            }
-        }
-    }
-    else
-        for(i = 1;; i++) {
-            *s++ = dig = quorem(b,S) + '0';
-            if (!b->x[0] && b->wds <= 1) {
-                goto ret;
-            }
-            if (i >= ilim)
-                break;
-            b = multadd(b, 10, 0);
-            if (b == NULL)
-                goto failed_malloc;
-        }
-
-    /* Round off last digit */
-
-    b = lshift(b, 1);
-    if (b == NULL)
-        goto failed_malloc;
-    j = cmp(b, S);
-    if (j > 0 || (j == 0 && dig & 1)) {
-      roundoff:
-        while(*--s == '9')
-            if (s == s0) {
-                k++;
-                *s++ = '1';
-                goto ret;
-            }
-        ++*s++;
-    }
-    else {
-        while(*--s == '0');
-        s++;
-    }
-  ret:
-    Bfree(S);
-    if (mhi) {
-        if (mlo && mlo != mhi)
-            Bfree(mlo);
-        Bfree(mhi);
-    }
-  ret1:
-    Bfree(b);
-    *s = 0;
-    *decpt = k + 1;
-    if (rve)
-        *rve = s;
-    return s0;
-  failed_malloc:
-    if (S)
-        Bfree(S);
-    if (mlo && mlo != mhi)
-        Bfree(mlo);
-    if (mhi)
-        Bfree(mhi);
-    if (b)
-        Bfree(b);
-    if (s0)
-        _Py_dg_freedtoa(s0);
-    return NULL;
-}
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* PY_NO_SHORT_FLOAT_REPR */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/dup2.c b/AppPkg/Applications/Python/Python-2.7.2/Python/dup2.c
deleted file mode 100644
index 818af54..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/dup2.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Public domain dup2() lookalike
- * by Curtis Jackson @ AT&T Technologies, Burlington, NC
- * electronic address:  burl!rcj
- *
- * dup2 performs the following functions:
- *
- * Check to make sure that fd1 is a valid open file descriptor.
- * Check to see if fd2 is already open; if so, close it.
- * Duplicate fd1 onto fd2; checking to make sure fd2 is a valid fd.
- * Return fd2 if all went well; return BADEXIT otherwise.
- */
-
-#include <fcntl.h>
-#include <unistd.h>
-
-#define BADEXIT -1
-
-int
-dup2(int fd1, int fd2)
-{
-	if (fd1 != fd2) {
-		if (fcntl(fd1, F_GETFL) < 0)
-			return BADEXIT;
-		if (fcntl(fd2, F_GETFL) >= 0)
-			close(fd2);
-		if (fcntl(fd1, F_DUPFD, fd2) < 0)
-			return BADEXIT;
-	}
-	return fd2;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_aix.c b/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_aix.c
deleted file mode 100644
index 28247e1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_aix.c
+++ /dev/null
@@ -1,183 +0,0 @@
-
-/* Support for dynamic loading of extension modules */
-
-#include "Python.h"
-#include "importdl.h"
-
-#include <ctype.h>      /*  for isdigit()         */
-#include <errno.h>      /*  for global errno      */
-#include <string.h>     /*  for strerror()        */
-#include <stdlib.h>     /*  for malloc(), free()  */
-#include <sys/ldr.h>
-
-
-#ifdef AIX_GENUINE_CPLUSPLUS
-#include <load.h>
-#define aix_load loadAndInit
-#else
-#define aix_load load
-#endif
-
-
-extern char *Py_GetProgramName(void);
-
-typedef struct Module {
-    struct Module *next;
-    void          *entry;
-} Module, *ModulePtr;
-
-const struct filedescr _PyImport_DynLoadFiletab[] = {
-    {".so", "rb", C_EXTENSION},
-    {"module.so", "rb", C_EXTENSION},
-    {0, 0}
-};
-
-static int
-aix_getoldmodules(void **modlistptr)
-{
-    register ModulePtr       modptr, prevmodptr;
-    register struct ld_info  *ldiptr;
-    register char            *ldibuf;
-    register int             errflag, bufsize = 1024;
-    register unsigned int    offset;
-    char *progname = Py_GetProgramName();
-
-    /*
-    -- Get the list of loaded modules into ld_info structures.
-    */
-    if ((ldibuf = malloc(bufsize)) == NULL) {
-        PyErr_SetString(PyExc_ImportError, strerror(errno));
-        return -1;
-    }
-    while ((errflag = loadquery(L_GETINFO, ldibuf, bufsize)) == -1
-           && errno == ENOMEM) {
-        free(ldibuf);
-        bufsize += 1024;
-        if ((ldibuf = malloc(bufsize)) == NULL) {
-            PyErr_SetString(PyExc_ImportError, strerror(errno));
-            return -1;
-        }
-    }
-    if (errflag == -1) {
-        PyErr_SetString(PyExc_ImportError, strerror(errno));
-        return -1;
-    }
-    /*
-    -- Make the modules list from the ld_info structures.
-    */
-    ldiptr = (struct ld_info *)ldibuf;
-    prevmodptr = NULL;
-    do {
-        if (strstr(progname, ldiptr->ldinfo_filename) == NULL &&
-            strstr(ldiptr->ldinfo_filename, "python") == NULL) {
-            /*
-            -- Extract only the modules belonging to the main
-            -- executable + those containing "python" as a
-            -- substring (like the "python[version]" binary or
-            -- "libpython[version].a" in case it's a shared lib).
-            */
-            offset = (unsigned int)ldiptr->ldinfo_next;
-            ldiptr = (struct ld_info *)((char*)ldiptr + offset);
-            continue;
-        }
-        if ((modptr = (ModulePtr)malloc(sizeof(Module))) == NULL) {
-            PyErr_SetString(PyExc_ImportError, strerror(errno));
-            while (*modlistptr) {
-                modptr = (ModulePtr)*modlistptr;
-                *modlistptr = (void *)modptr->next;
-                free(modptr);
-            }
-            return -1;
-        }
-        modptr->entry = ldiptr->ldinfo_dataorg;
-        modptr->next  = NULL;
-        if (prevmodptr == NULL)
-            *modlistptr = (void *)modptr;
-        else
-            prevmodptr->next = modptr;
-        prevmodptr = modptr;
-        offset = (unsigned int)ldiptr->ldinfo_next;
-        ldiptr = (struct ld_info *)((char*)ldiptr + offset);
-    } while (offset);
-    free(ldibuf);
-    return 0;
-}
-
-
-static void
-aix_loaderror(const char *pathname)
-{
-
-    char *message[1024], errbuf[1024];
-    register int i,j;
-
-    struct errtab {
-        int errNo;
-        char *errstr;
-    } load_errtab[] = {
-        {L_ERROR_TOOMANY,               "too many errors, rest skipped."},
-        {L_ERROR_NOLIB,                 "can't load library:"},
-        {L_ERROR_UNDEF,                 "can't find symbol in library:"},
-        {L_ERROR_RLDBAD,
-         "RLD index out of range or bad relocation type:"},
-        {L_ERROR_FORMAT,                "not a valid, executable xcoff file:"},
-        {L_ERROR_MEMBER,
-         "file not an archive or does not contain requested member:"},
-        {L_ERROR_TYPE,                  "symbol table mismatch:"},
-        {L_ERROR_ALIGN,                 "text alignment in file is wrong."},
-        {L_ERROR_SYSTEM,                "System error:"},
-        {L_ERROR_ERRNO,                 NULL}
-    };
-
-#define LOAD_ERRTAB_LEN (sizeof(load_errtab)/sizeof(load_errtab[0]))
-#define ERRBUF_APPEND(s) strncat(errbuf, s, sizeof(errbuf)-strlen(errbuf)-1)
-
-    PyOS_snprintf(errbuf, sizeof(errbuf), "from module %.200s ", pathname);
-
-    if (!loadquery(L_GETMESSAGES, &message[0], sizeof(message))) {
-        ERRBUF_APPEND(strerror(errno));
-        ERRBUF_APPEND("\n");
-    }
-    for(i = 0; message[i] && *message[i]; i++) {
-        int nerr = atoi(message[i]);
-        for (j=0; j<LOAD_ERRTAB_LEN ; j++) {
-            if (nerr == load_errtab[j].errNo && load_errtab[j].errstr)
-            ERRBUF_APPEND(load_errtab[j].errstr);
-        }
-        while (isdigit(Py_CHARMASK(*message[i]))) message[i]++ ;
-        ERRBUF_APPEND(message[i]);
-        ERRBUF_APPEND("\n");
-    }
-    errbuf[strlen(errbuf)-1] = '\0';            /* trim off last newline */
-    PyErr_SetString(PyExc_ImportError, errbuf);
-    return;
-}
-
-
-dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
-                                    const char *pathname, FILE *fp)
-{
-    dl_funcptr p;
-
-    /*
-    -- Invoke load() with L_NOAUTODEFER leaving the imported symbols
-    -- of the shared module unresolved. Thus we have to resolve them
-    -- explicitly with loadbind. The new module is loaded, then we
-    -- resolve its symbols using the list of already loaded modules
-    -- (only those that belong to the python executable). Get these
-    -- with loadquery(L_GETINFO).
-    */
-
-    static void *staticmodlistptr = NULL;
-
-    if (!staticmodlistptr)
-        if (aix_getoldmodules(&staticmodlistptr) == -1)
-            return NULL;
-    p = (dl_funcptr) aix_load((char *)pathname, L_NOAUTODEFER, 0);
-    if (p == NULL) {
-        aix_loaderror(pathname);
-        return NULL;
-    }
-
-    return p;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_atheos.c b/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_atheos.c
deleted file mode 100644
index a8e6965..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_atheos.c
+++ /dev/null
@@ -1,47 +0,0 @@
-
-/* Support for dynamic loading of extension modules */
-
-#include <atheos/image.h>
-#include <errno.h>
-
-#include "Python.h"
-#include "importdl.h"
-
-
-const struct filedescr _PyImport_DynLoadFiletab[] = {
-    {".so", "rb", C_EXTENSION},
-    {"module.so", "rb", C_EXTENSION},
-    {0, 0}
-};
-
-dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
-                                    const char *pathname, FILE *fp)
-{
-    void *p;
-    int lib;
-    char funcname[258];
-
-    if (Py_VerboseFlag)
-        printf("load_library %s\n", pathname);
-
-    lib = load_library(pathname, 0);
-    if (lib < 0) {
-        char buf[512];
-        if (Py_VerboseFlag)
-            perror(pathname);
-        PyOS_snprintf(buf, sizeof(buf), "Failed to load %.200s: %.200s",
-                      pathname, strerror(errno));
-        PyErr_SetString(PyExc_ImportError, buf);
-        return NULL;
-    }
-    PyOS_snprintf(funcname, sizeof(funcname), "init%.200s", shortname);
-    if (Py_VerboseFlag)
-        printf("get_symbol_address %s\n", funcname);
-    if (get_symbol_address(lib, funcname, -1, &p) < 0) {
-        p = NULL;
-        if (Py_VerboseFlag)
-            perror(funcname);
-    }
-
-    return (dl_funcptr) p;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_beos.c b/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_beos.c
deleted file mode 100644
index a01a31b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_beos.c
+++ /dev/null
@@ -1,254 +0,0 @@
-
-/* Support for dynamic loading of extension modules */
-
-#include <kernel/image.h>
-#include <kernel/OS.h>
-#include <stdlib.h>
-
-#include "Python.h"
-#include "importdl.h"
-
-const struct filedescr _PyImport_DynLoadFiletab[] = {
-    {".so", "rb", C_EXTENSION},
-    {"module.so", "rb", C_EXTENSION},
-    {0, 0}
-};
-
-#if defined(MAXPATHLEN) && !defined(_SYS_PARAM_H)
-#undef MAXPATHLEN
-#endif
-
-#ifdef WITH_THREAD
-#include "pythread.h"
-static PyThread_type_lock beos_dyn_lock;
-#endif
-
-static PyObject *beos_dyn_images = NULL;
-
-/* ----------------------------------------------------------------------
- * BeOS dynamic loading support
- *
- * This uses shared libraries, but BeOS has its own way of doing things
- * (much easier than dlfnc.h, from the look of things).  We'll use a
- * Python Dictionary object to store the images_ids so we can be very
- * nice and unload them when we exit.
- *
- * Note that this is thread-safe.  Probably irrelevent, because of losing
- * systems... Python probably disables threads while loading modules.
- * Note the use of "probably"!  Better to be safe than sorry. [chrish]
- *
- * As of 1.5.1 this should also work properly when you've configured
- * Python without thread support; the 1.5 version required it, which wasn't
- * very friendly.  Note that I haven't tested it without threading... why
- * would you want to avoid threads on BeOS? [chrish]
- *
- * As of 1.5.2, the PyImport_BeImageID() function has been removed; Donn
- * tells me it's not necessary anymore because of PyCObject_Import().
- * [chrish]
- */
-
-/* Whack an item; the item is an image_id in disguise, so we'll call
- * unload_add_on() for it.
- */
-static void beos_nuke_dyn( PyObject *item )
-{
-    status_t retval;
-
-    if( item ) {
-        image_id id = (image_id)PyInt_AsLong( item );
-
-        retval = unload_add_on( id );
-    }
-}
-
-/* atexit() handler that'll call unload_add_on() for every item in the
- * dictionary.
- */
-static void beos_cleanup_dyn( void )
-{
-    if( beos_dyn_images ) {
-        int idx;
-        int list_size;
-        PyObject *id_list;
-
-#ifdef WITH_THREAD
-        PyThread_acquire_lock( beos_dyn_lock, 1 );
-#endif
-
-        id_list = PyDict_Values( beos_dyn_images );
-
-        list_size = PyList_Size( id_list );
-        for( idx = 0; idx < list_size; idx++ ) {
-            PyObject *the_item;
-
-            the_item = PyList_GetItem( id_list, idx );
-            beos_nuke_dyn( the_item );
-        }
-
-        PyDict_Clear( beos_dyn_images );
-
-#ifdef WITH_THREAD
-        PyThread_free_lock( beos_dyn_lock );
-#endif
-    }
-}
-
-/*
- * Initialize our dictionary, and the dictionary mutex.
- */
-static void beos_init_dyn( void )
-{
-    /* We're protected from a race condition here by the atomic init_count
-     * variable.
-     */
-    static int32 init_count = 0;
-    int32 val;
-
-    val = atomic_add( &init_count, 1 );
-    if( beos_dyn_images == NULL && val == 0 ) {
-        beos_dyn_images = PyDict_New();
-#ifdef WITH_THREAD
-        beos_dyn_lock = PyThread_allocate_lock();
-#endif
-        atexit( beos_cleanup_dyn );
-    }
-}
-
-/*
- * Add an image_id to the dictionary; the module name of the loaded image
- * is the key.  Note that if the key is already in the dict, we unload
- * that image; this should allow reload() to work on dynamically loaded
- * modules (super-keen!).
- */
-static void beos_add_dyn( char *name, image_id id )
-{
-    int retval;
-    PyObject *py_id;
-
-    if( beos_dyn_images == NULL ) {
-        beos_init_dyn();
-    }
-
-#ifdef WITH_THREAD
-    retval = PyThread_acquire_lock( beos_dyn_lock, 1 );
-#endif
-
-    /* If there's already an object with this key in the dictionary,
-     * we're doing a reload(), so let's nuke it.
-     */
-    py_id = PyDict_GetItemString( beos_dyn_images, name );
-    if( py_id ) {
-        beos_nuke_dyn( py_id );
-        retval = PyDict_DelItemString( beos_dyn_images, name );
-    }
-
-    py_id = PyInt_FromLong( (long)id );
-    if( py_id ) {
-        retval = PyDict_SetItemString( beos_dyn_images, name, py_id );
-    }
-
-#ifdef WITH_THREAD
-    PyThread_release_lock( beos_dyn_lock );
-#endif
-}
-
-
-
-dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
-                                    const char *pathname, FILE *fp)
-{
-    dl_funcptr p;
-    image_id the_id;
-    status_t retval;
-    char fullpath[PATH_MAX];
-    char funcname[258];
-
-    if( Py_VerboseFlag ) {
-        printf( "load_add_on( %s )\n", pathname );
-    }
-
-    /* Hmm, this old bug appears to have regenerated itself; if the
-     * path isn't absolute, load_add_on() will fail.  Reported to Be
-     * April 21, 1998.
-     */
-    if( pathname[0] != '/' ) {
-        (void)getcwd( fullpath, PATH_MAX );
-        (void)strncat( fullpath, "/", PATH_MAX );
-        (void)strncat( fullpath, pathname, PATH_MAX );
-
-        if( Py_VerboseFlag ) {
-            printf( "load_add_on( %s )\n", fullpath );
-        }
-    } else {
-        (void)strcpy( fullpath, pathname );
-    }
-
-    the_id = load_add_on( fullpath );
-    if( the_id < B_NO_ERROR ) {
-        /* It's too bad load_add_on() doesn't set errno or something...
-         */
-        char buff[256];  /* hate hard-coded string sizes... */
-
-        if( Py_VerboseFlag ) {
-            printf( "load_add_on( %s ) failed", fullpath );
-        }
-
-        if( the_id == B_ERROR )
-            PyOS_snprintf( buff, sizeof(buff),
-                           "BeOS: Failed to load %.200s",
-                           fullpath );
-        else
-            PyOS_snprintf( buff, sizeof(buff),
-                           "Unknown error loading %.200s",
-                           fullpath );
-
-        PyErr_SetString( PyExc_ImportError, buff );
-        return NULL;
-    }
-
-    PyOS_snprintf(funcname, sizeof(funcname), "init%.200s", shortname);
-    if( Py_VerboseFlag ) {
-        printf( "get_image_symbol( %s )\n", funcname );
-    }
-
-    retval = get_image_symbol( the_id, funcname, B_SYMBOL_TYPE_TEXT, &p );
-    if( retval != B_NO_ERROR || p == NULL ) {
-        /* That's bad, we can't find that symbol in the module...
-         */
-        char buff[256];  /* hate hard-coded string sizes... */
-
-        if( Py_VerboseFlag ) {
-            printf( "get_image_symbol( %s ) failed", funcname );
-        }
-
-        switch( retval ) {
-        case B_BAD_IMAGE_ID:
-            PyOS_snprintf( buff, sizeof(buff),
-                   "can't load init function for dynamic module: "
-                   "Invalid image ID for %.180s", fullpath );
-            break;
-        case B_BAD_INDEX:
-            PyOS_snprintf( buff, sizeof(buff),
-                   "can't load init function for dynamic module: "
-                   "Bad index for %.180s", funcname );
-            break;
-        default:
-            PyOS_snprintf( buff, sizeof(buff),
-                   "can't load init function for dynamic module: "
-                   "Unknown error looking up %.180s", funcname );
-            break;
-        }
-
-        retval = unload_add_on( the_id );
-
-        PyErr_SetString( PyExc_ImportError, buff );
-        return NULL;
-    }
-
-    /* Save the module name and image ID for later so we can clean up
-     * gracefully.
-     */
-    beos_add_dyn( fqname, the_id );
-
-    return p;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_dl.c b/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_dl.c
deleted file mode 100644
index 794e3f8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_dl.c
+++ /dev/null
@@ -1,26 +0,0 @@
-
-/* Support for dynamic loading of extension modules */
-
-#include "dl.h"
-
-#include "Python.h"
-#include "importdl.h"
-
-
-extern char *Py_GetProgramName(void);
-
-const struct filedescr _PyImport_DynLoadFiletab[] = {
-	{".o", "rb", C_EXTENSION},
-	{"module.o", "rb", C_EXTENSION},
-	{0, 0}
-};
-
-
-dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
-				    const char *pathname, FILE *fp)
-{
-	char funcname[258];
-
-	PyOS_snprintf(funcname, sizeof(funcname), "init%.200s", shortname);
-	return dl_loadmod(Py_GetProgramName(), pathname, funcname);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_hpux.c b/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_hpux.c
deleted file mode 100644
index 8e42856..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_hpux.c
+++ /dev/null
@@ -1,58 +0,0 @@
-
-/* Support for dynamic loading of extension modules */
-
-#include "dl.h"
-#include <errno.h>
-
-#include "Python.h"
-#include "importdl.h"
-
-#if defined(__hp9000s300)
-#define FUNCNAME_PATTERN "_init%.200s"
-#else
-#define FUNCNAME_PATTERN "init%.200s"
-#endif
-
-const struct filedescr _PyImport_DynLoadFiletab[] = {
-    {SHLIB_EXT, "rb", C_EXTENSION},
-    {"module"SHLIB_EXT, "rb", C_EXTENSION},
-    {0, 0}
-};
-
-dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
-                                    const char *pathname, FILE *fp)
-{
-    dl_funcptr p;
-    shl_t lib;
-    int flags;
-    char funcname[258];
-
-    flags = BIND_FIRST | BIND_DEFERRED;
-    if (Py_VerboseFlag) {
-        flags = BIND_FIRST | BIND_IMMEDIATE |
-            BIND_NONFATAL | BIND_VERBOSE;
-        printf("shl_load %s\n",pathname);
-    }
-    lib = shl_load(pathname, flags, 0);
-    /* XXX Chuck Blake once wrote that 0 should be BIND_NOSTART? */
-    if (lib == NULL) {
-        char buf[256];
-        if (Py_VerboseFlag)
-            perror(pathname);
-        PyOS_snprintf(buf, sizeof(buf), "Failed to load %.200s",
-                      pathname);
-        PyErr_SetString(PyExc_ImportError, buf);
-        return NULL;
-    }
-    PyOS_snprintf(funcname, sizeof(funcname), FUNCNAME_PATTERN, shortname);
-    if (Py_VerboseFlag)
-        printf("shl_findsym %s\n", funcname);
-    if (shl_findsym(&lib, funcname, TYPE_UNDEFINED, (void *) &p) == -1) {
-        shl_unload(lib);
-        p = NULL;
-    }
-    if (p == NULL && Py_VerboseFlag)
-        perror(funcname);
-
-    return p;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_next.c b/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_next.c
deleted file mode 100644
index 3f6b987..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_next.c
+++ /dev/null
@@ -1,114 +0,0 @@
-
-/* Support for dynamic loading of extension modules on Mac OS X
-** All references to "NeXT" are for historical reasons.
-*/
-
-#include "Python.h"
-#include "importdl.h"
-
-#include <mach-o/dyld.h>
-
-const struct filedescr _PyImport_DynLoadFiletab[] = {
-    {".so", "rb", C_EXTENSION},
-    {"module.so", "rb", C_EXTENSION},
-    {0, 0}
-};
-
-/*
-** Python modules are Mach-O MH_BUNDLE files. The best way to load these
-** is each in a private namespace, so you can load, say, a module bar and a
-** module foo.bar. If we load everything in the global namespace the two
-** initbar() symbols will conflict.
-** However, it seems some extension packages depend upon being able to access
-** each others' global symbols. There seems to be no way to eat our cake and
-** have it, so the USE_DYLD_GLOBAL_NAMESPACE define determines which behaviour
-** you get.
-*/
-
-#ifdef USE_DYLD_GLOBAL_NAMESPACE
-#define LINKOPTIONS NSLINKMODULE_OPTION_BINDNOW|NSLINKMODULE_OPTION_RETURN_ON_ERROR
-#else
-#define LINKOPTIONS NSLINKMODULE_OPTION_BINDNOW| \
-    NSLINKMODULE_OPTION_RETURN_ON_ERROR|NSLINKMODULE_OPTION_PRIVATE
-#endif
-dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
-                                        const char *pathname, FILE *fp)
-{
-    dl_funcptr p = NULL;
-    char funcname[258];
-    NSObjectFileImageReturnCode rc;
-    NSObjectFileImage image;
-    NSModule newModule;
-    NSSymbol theSym;
-    const char *errString;
-    char errBuf[512];
-
-    PyOS_snprintf(funcname, sizeof(funcname), "_init%.200s", shortname);
-
-#ifdef USE_DYLD_GLOBAL_NAMESPACE
-    if (NSIsSymbolNameDefined(funcname)) {
-        theSym = NSLookupAndBindSymbol(funcname);
-        p = (dl_funcptr)NSAddressOfSymbol(theSym);
-        return p;
-    }
-#endif
-    rc = NSCreateObjectFileImageFromFile(pathname, &image);
-    switch(rc) {
-        default:
-        case NSObjectFileImageFailure:
-        case NSObjectFileImageFormat:
-            /* for these a message is printed on stderr by dyld */
-            errString = "Can't create object file image";
-        break;
-        case NSObjectFileImageSuccess:
-            errString = NULL;
-            break;
-        case NSObjectFileImageInappropriateFile:
-            errString = "Inappropriate file type for dynamic loading";
-            break;
-        case NSObjectFileImageArch:
-            errString = "Wrong CPU type in object file";
-            break;
-        case NSObjectFileImageAccess:
-            errString = "Can't read object file (no access)";
-            break;
-    }
-    if (errString == NULL) {
-        newModule = NSLinkModule(image, pathname, LINKOPTIONS);
-        if (newModule == NULL) {
-            int errNo;
-            const char *fileName, *moreErrorStr;
-            NSLinkEditErrors c;
-            NSLinkEditError( &c, &errNo, &fileName, &moreErrorStr );
-            PyOS_snprintf(errBuf, 512, "Failure linking new module: %s: %s",
-                            fileName, moreErrorStr);
-            errString = errBuf;
-        }
-    }
-    if (errString != NULL) {
-        PyErr_SetString(PyExc_ImportError, errString);
-        return NULL;
-    }
-#ifdef USE_DYLD_GLOBAL_NAMESPACE
-    if (!NSIsSymbolNameDefined(funcname)) {
-        /* UnlinkModule() isn't implemented in current versions, but calling it does no harm */
-        /* NSUnLinkModule(newModule, FALSE); removed: causes problems for ObjC code */
-        PyErr_Format(PyExc_ImportError,
-                         "Loaded module does not contain symbol %.200s",
-                         funcname);
-        return NULL;
-    }
-    theSym = NSLookupAndBindSymbol(funcname);
-#else
-    theSym = NSLookupSymbolInModule(newModule, funcname);
-    if ( theSym == NULL ) {
-        /* NSUnLinkModule(newModule, FALSE); removed: causes problems for ObjC code */
-        PyErr_Format(PyExc_ImportError,
-                         "Loaded module does not contain symbol %.200s",
-                         funcname);
-        return NULL;
-    }
-#endif
-    p = (dl_funcptr)NSAddressOfSymbol(theSym);
-    return p;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_os2.c b/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_os2.c
deleted file mode 100644
index 11769cf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_os2.c
+++ /dev/null
@@ -1,46 +0,0 @@
-
-/* Support for dynamic loading of extension modules */
-
-#define  INCL_DOSERRORS
-#define  INCL_DOSMODULEMGR
-#include <os2.h>
-
-#include "Python.h"
-#include "importdl.h"
-
-
-const struct filedescr _PyImport_DynLoadFiletab[] = {
-    {".pyd", "rb", C_EXTENSION},
-    {".dll", "rb", C_EXTENSION},
-    {0, 0}
-};
-
-dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
-                                    const char *pathname, FILE *fp)
-{
-    dl_funcptr p;
-    APIRET  rc;
-    HMODULE hDLL;
-    char failreason[256];
-    char funcname[258];
-
-    rc = DosLoadModule(failreason,
-                       sizeof(failreason),
-                       pathname,
-                       &hDLL);
-
-    if (rc != NO_ERROR) {
-        char errBuf[256];
-        PyOS_snprintf(errBuf, sizeof(errBuf),
-                      "DLL load failed, rc = %d: %.200s",
-                      rc, failreason);
-        PyErr_SetString(PyExc_ImportError, errBuf);
-        return NULL;
-    }
-
-    PyOS_snprintf(funcname, sizeof(funcname), "init%.200s", shortname);
-    rc = DosQueryProcAddr(hDLL, 0L, funcname, &p);
-    if (rc != NO_ERROR)
-        p = NULL; /* Signify Failure to Acquire Entrypoint */
-    return p;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_shlib.c b/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_shlib.c
deleted file mode 100644
index b3bc6a7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_shlib.c
+++ /dev/null
@@ -1,143 +0,0 @@
-
-/* Support for dynamic loading of extension modules */
-
-#include "Python.h"
-#include "importdl.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#if defined(__NetBSD__)
-#include <sys/param.h>
-#if (NetBSD < 199712)
-#include <nlist.h>
-#include <link.h>
-#define dlerror() "error in dynamic linking"
-#endif
-#endif /* NetBSD */
-
-#ifdef HAVE_DLFCN_H
-#include <dlfcn.h>
-#else
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-#include "dlfcn.h"
-#endif
-#endif
-
-#if (defined(__OpenBSD__) || defined(__NetBSD__)) && !defined(__ELF__)
-#define LEAD_UNDERSCORE "_"
-#else
-#define LEAD_UNDERSCORE ""
-#endif
-
-
-const struct filedescr _PyImport_DynLoadFiletab[] = {
-#ifdef __CYGWIN__
-    {".dll", "rb", C_EXTENSION},
-    {"module.dll", "rb", C_EXTENSION},
-#else
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-    {".pyd", "rb", C_EXTENSION},
-    {".dll", "rb", C_EXTENSION},
-#else
-#ifdef __VMS
-    {".exe", "rb", C_EXTENSION},
-    {".EXE", "rb", C_EXTENSION},
-    {"module.exe", "rb", C_EXTENSION},
-    {"MODULE.EXE", "rb", C_EXTENSION},
-#else
-    {".so", "rb", C_EXTENSION},
-    {"module.so", "rb", C_EXTENSION},
-#endif
-#endif
-#endif
-    {0, 0}
-};
-
-static struct {
-    dev_t dev;
-#ifdef __VMS
-    ino_t ino[3];
-#else
-    ino_t ino;
-#endif
-    void *handle;
-} handles[128];
-static int nhandles = 0;
-
-
-dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
-                                    const char *pathname, FILE *fp)
-{
-    dl_funcptr p;
-    void *handle;
-    char funcname[258];
-    char pathbuf[260];
-    int dlopenflags=0;
-
-    if (strchr(pathname, '/') == NULL) {
-        /* Prefix bare filename with "./" */
-        PyOS_snprintf(pathbuf, sizeof(pathbuf), "./%-.255s", pathname);
-        pathname = pathbuf;
-    }
-
-    PyOS_snprintf(funcname, sizeof(funcname),
-                  LEAD_UNDERSCORE "init%.200s", shortname);
-
-    if (fp != NULL) {
-        int i;
-        struct stat statb;
-        fstat(fileno(fp), &statb);
-        for (i = 0; i < nhandles; i++) {
-            if (statb.st_dev == handles[i].dev &&
-                statb.st_ino == handles[i].ino) {
-                p = (dl_funcptr) dlsym(handles[i].handle,
-                                       funcname);
-                return p;
-            }
-        }
-        if (nhandles < 128) {
-            handles[nhandles].dev = statb.st_dev;
-#ifdef __VMS
-            handles[nhandles].ino[0] = statb.st_ino[0];
-            handles[nhandles].ino[1] = statb.st_ino[1];
-            handles[nhandles].ino[2] = statb.st_ino[2];
-#else
-            handles[nhandles].ino = statb.st_ino;
-#endif
-        }
-    }
-
-#if !(defined(PYOS_OS2) && defined(PYCC_GCC))
-    dlopenflags = PyThreadState_GET()->interp->dlopenflags;
-#endif
-
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("dlopen(\"%s\", %x);\n", pathname,
-                          dlopenflags);
-
-#ifdef __VMS
-    /* VMS currently don't allow a pathname, use a logical name instead */
-    /* Concatenate 'python_module_' and shortname */
-    /* so "import vms.bar" will use the logical python_module_bar */
-    /* As C module use only one name space this is probably not a */
-    /* important limitation */
-    PyOS_snprintf(pathbuf, sizeof(pathbuf), "python_module_%-.200s",
-                  shortname);
-    pathname = pathbuf;
-#endif
-
-    handle = dlopen(pathname, dlopenflags);
-
-    if (handle == NULL) {
-        const char *error = dlerror();
-        if (error == NULL)
-            error = "unknown dlopen() error";
-        PyErr_SetString(PyExc_ImportError, error);
-        return NULL;
-    }
-    if (fp != NULL && nhandles < 128)
-        handles[nhandles++].handle = handle;
-    p = (dl_funcptr) dlsym(handle, funcname);
-    return p;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_stub.c b/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_stub.c
deleted file mode 100644
index 80f4abf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_stub.c
+++ /dev/null
@@ -1,11 +0,0 @@
-
-/* This module provides the necessary stubs for when dynamic loading is
-   not present. */
-
-#include "Python.h"
-#include "importdl.h"
-
-
-const struct filedescr _PyImport_DynLoadFiletab[] = {
-	{0, 0}
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_win.c b/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_win.c
deleted file mode 100644
index 6058eba..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/dynload_win.c
+++ /dev/null
@@ -1,274 +0,0 @@
-
-/* Support for dynamic loading of extension modules */
-
-#include "Python.h"
-
-#ifdef HAVE_DIRECT_H
-#include <direct.h>
-#endif
-#include <ctype.h>
-
-#include "importdl.h"
-#include <windows.h>
-
-// "activation context" magic - see dl_nt.c...
-extern ULONG_PTR _Py_ActivateActCtx();
-void _Py_DeactivateActCtx(ULONG_PTR cookie);
-
-const struct filedescr _PyImport_DynLoadFiletab[] = {
-#ifdef _DEBUG
-    {"_d.pyd", "rb", C_EXTENSION},
-#else
-    {".pyd", "rb", C_EXTENSION},
-#endif
-    {0, 0}
-};
-
-
-/* Case insensitive string compare, to avoid any dependencies on particular
-   C RTL implementations */
-
-static int strcasecmp (char *string1, char *string2)
-{
-    int first, second;
-
-    do {
-        first  = tolower(*string1);
-        second = tolower(*string2);
-        string1++;
-        string2++;
-    } while (first && first == second);
-
-    return (first - second);
-}
-
-
-/* Function to return the name of the "python" DLL that the supplied module
-   directly imports.  Looks through the list of imported modules and
-   returns the first entry that starts with "python" (case sensitive) and
-   is followed by nothing but numbers until the separator (period).
-
-   Returns a pointer to the import name, or NULL if no matching name was
-   located.
-
-   This function parses through the PE header for the module as loaded in
-   memory by the system loader.  The PE header is accessed as documented by
-   Microsoft in the MSDN PE and COFF specification (2/99), and handles
-   both PE32 and PE32+.  It only worries about the direct import table and
-   not the delay load import table since it's unlikely an extension is
-   going to be delay loading Python (after all, it's already loaded).
-
-   If any magic values are not found (e.g., the PE header or optional
-   header magic), then this function simply returns NULL. */
-
-#define DWORD_AT(mem) (*(DWORD *)(mem))
-#define WORD_AT(mem)  (*(WORD *)(mem))
-
-static char *GetPythonImport (HINSTANCE hModule)
-{
-    unsigned char *dllbase, *import_data, *import_name;
-    DWORD pe_offset, opt_offset;
-    WORD opt_magic;
-    int num_dict_off, import_off;
-
-    /* Safety check input */
-    if (hModule == NULL) {
-        return NULL;
-    }
-
-    /* Module instance is also the base load address.  First portion of
-       memory is the MS-DOS loader, which holds the offset to the PE
-       header (from the load base) at 0x3C */
-    dllbase = (unsigned char *)hModule;
-    pe_offset = DWORD_AT(dllbase + 0x3C);
-
-    /* The PE signature must be "PE\0\0" */
-    if (memcmp(dllbase+pe_offset,"PE\0\0",4)) {
-        return NULL;
-    }
-
-    /* Following the PE signature is the standard COFF header (20
-       bytes) and then the optional header.  The optional header starts
-       with a magic value of 0x10B for PE32 or 0x20B for PE32+ (PE32+
-       uses 64-bits for some fields).  It might also be 0x107 for a ROM
-       image, but we don't process that here.
-
-       The optional header ends with a data dictionary that directly
-       points to certain types of data, among them the import entries
-       (in the second table entry). Based on the header type, we
-       determine offsets for the data dictionary count and the entry
-       within the dictionary pointing to the imports. */
-
-    opt_offset = pe_offset + 4 + 20;
-    opt_magic = WORD_AT(dllbase+opt_offset);
-    if (opt_magic == 0x10B) {
-        /* PE32 */
-        num_dict_off = 92;
-        import_off   = 104;
-    } else if (opt_magic == 0x20B) {
-        /* PE32+ */
-        num_dict_off = 108;
-        import_off   = 120;
-    } else {
-        /* Unsupported */
-        return NULL;
-    }
-
-    /* Now if an import table exists, offset to it and walk the list of
-       imports.  The import table is an array (ending when an entry has
-       empty values) of structures (20 bytes each), which contains (at
-       offset 12) a relative address (to the module base) at which a
-       string constant holding the import name is located. */
-
-    if (DWORD_AT(dllbase + opt_offset + num_dict_off) >= 2) {
-        /* We have at least 2 tables - the import table is the second
-           one.  But still it may be that the table size is zero */
-        if (0 == DWORD_AT(dllbase + opt_offset + import_off + sizeof(DWORD)))
-            return NULL;
-        import_data = dllbase + DWORD_AT(dllbase +
-                                         opt_offset +
-                                         import_off);
-        while (DWORD_AT(import_data)) {
-            import_name = dllbase + DWORD_AT(import_data+12);
-            if (strlen(import_name) >= 6 &&
-                !strncmp(import_name,"python",6)) {
-                char *pch;
-
-                /* Ensure python prefix is followed only
-                   by numbers to the end of the basename */
-                pch = import_name + 6;
-#ifdef _DEBUG
-                while (*pch && pch[0] != '_' && pch[1] != 'd' && pch[2] != '.') {
-#else
-                while (*pch && *pch != '.') {
-#endif
-                    if (*pch >= '0' && *pch <= '9') {
-                        pch++;
-                    } else {
-                        pch = NULL;
-                        break;
-                    }
-                }
-
-                if (pch) {
-                    /* Found it - return the name */
-                    return import_name;
-                }
-            }
-            import_data += 20;
-        }
-    }
-
-    return NULL;
-}
-
-
-dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
-                                    const char *pathname, FILE *fp)
-{
-    dl_funcptr p;
-    char funcname[258], *import_python;
-
-    PyOS_snprintf(funcname, sizeof(funcname), "init%.200s", shortname);
-
-    {
-        HINSTANCE hDLL = NULL;
-        char pathbuf[260];
-        LPTSTR dummy;
-        unsigned int old_mode;
-        ULONG_PTR cookie = 0;
-        /* We use LoadLibraryEx so Windows looks for dependent DLLs
-            in directory of pathname first.  However, Windows95
-            can sometimes not work correctly unless the absolute
-            path is used.  If GetFullPathName() fails, the LoadLibrary
-            will certainly fail too, so use its error code */
-
-        /* Don't display a message box when Python can't load a DLL */
-        old_mode = SetErrorMode(SEM_FAILCRITICALERRORS);
-
-        if (GetFullPathName(pathname,
-                            sizeof(pathbuf),
-                            pathbuf,
-                            &dummy)) {
-            ULONG_PTR cookie = _Py_ActivateActCtx();
-            /* XXX This call doesn't exist in Windows CE */
-            hDLL = LoadLibraryEx(pathname, NULL,
-                                 LOAD_WITH_ALTERED_SEARCH_PATH);
-            _Py_DeactivateActCtx(cookie);
-        }
-
-        /* restore old error mode settings */
-        SetErrorMode(old_mode);
-
-        if (hDLL==NULL){
-            char errBuf[256];
-            unsigned int errorCode;
-
-            /* Get an error string from Win32 error code */
-            char theInfo[256]; /* Pointer to error text
-                                  from system */
-            int theLength; /* Length of error text */
-
-            errorCode = GetLastError();
-
-            theLength = FormatMessage(
-                FORMAT_MESSAGE_FROM_SYSTEM |
-                FORMAT_MESSAGE_IGNORE_INSERTS, /* flags */
-                NULL, /* message source */
-                errorCode, /* the message (error) ID */
-                0, /* default language environment */
-                (LPTSTR) theInfo, /* the buffer */
-                sizeof(theInfo), /* the buffer size */
-                NULL); /* no additional format args. */
-
-            /* Problem: could not get the error message.
-               This should not happen if called correctly. */
-            if (theLength == 0) {
-                PyOS_snprintf(errBuf, sizeof(errBuf),
-                      "DLL load failed with error code %d",
-                          errorCode);
-            } else {
-                size_t len;
-                /* For some reason a \r\n
-                   is appended to the text */
-                if (theLength >= 2 &&
-                    theInfo[theLength-2] == '\r' &&
-                    theInfo[theLength-1] == '\n') {
-                    theLength -= 2;
-                    theInfo[theLength] = '\0';
-                }
-                strcpy(errBuf, "DLL load failed: ");
-                len = strlen(errBuf);
-                strncpy(errBuf+len, theInfo,
-                    sizeof(errBuf)-len);
-                errBuf[sizeof(errBuf)-1] = '\0';
-            }
-            PyErr_SetString(PyExc_ImportError, errBuf);
-            return NULL;
-        } else {
-            char buffer[256];
-
-#ifdef _DEBUG
-            PyOS_snprintf(buffer, sizeof(buffer), "python%d%d_d.dll",
-#else
-            PyOS_snprintf(buffer, sizeof(buffer), "python%d%d.dll",
-#endif
-                          PY_MAJOR_VERSION,PY_MINOR_VERSION);
-            import_python = GetPythonImport(hDLL);
-
-            if (import_python &&
-                strcasecmp(buffer,import_python)) {
-                PyOS_snprintf(buffer, sizeof(buffer),
-                              "Module use of %.150s conflicts "
-                              "with this version of Python.",
-                              import_python);
-                PyErr_SetString(PyExc_ImportError,buffer);
-                FreeLibrary(hDLL);
-                return NULL;
-            }
-        }
-        p = GetProcAddress(hDLL, funcname);
-    }
-
-    return p;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/errors.c b/AppPkg/Applications/Python/Python-2.7.2/Python/errors.c
deleted file mode 100644
index 669411b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/errors.c
+++ /dev/null
@@ -1,805 +0,0 @@
-
-/* Error handling */
-
-#include "Python.h"
-
-#ifndef __STDC__
-#ifndef MS_WINDOWS
-extern char *strerror(int);
-#endif
-#endif
-
-#ifdef MS_WINDOWS
-#include "windows.h"
-#include "winbase.h"
-#endif
-
-#include <ctype.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-void
-PyErr_Restore(PyObject *type, PyObject *value, PyObject *traceback)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-    PyObject *oldtype, *oldvalue, *oldtraceback;
-
-    if (traceback != NULL && !PyTraceBack_Check(traceback)) {
-        /* XXX Should never happen -- fatal error instead? */
-        /* Well, it could be None. */
-        Py_DECREF(traceback);
-        traceback = NULL;
-    }
-
-    /* Save these in locals to safeguard against recursive
-       invocation through Py_XDECREF */
-    oldtype = tstate->curexc_type;
-    oldvalue = tstate->curexc_value;
-    oldtraceback = tstate->curexc_traceback;
-
-    tstate->curexc_type = type;
-    tstate->curexc_value = value;
-    tstate->curexc_traceback = traceback;
-
-    Py_XDECREF(oldtype);
-    Py_XDECREF(oldvalue);
-    Py_XDECREF(oldtraceback);
-}
-
-void
-PyErr_SetObject(PyObject *exception, PyObject *value)
-{
-    Py_XINCREF(exception);
-    Py_XINCREF(value);
-    PyErr_Restore(exception, value, (PyObject *)NULL);
-}
-
-void
-PyErr_SetNone(PyObject *exception)
-{
-    PyErr_SetObject(exception, (PyObject *)NULL);
-}
-
-void
-PyErr_SetString(PyObject *exception, const char *string)
-{
-    PyObject *value = PyString_FromString(string);
-    PyErr_SetObject(exception, value);
-    Py_XDECREF(value);
-}
-
-
-PyObject *
-PyErr_Occurred(void)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-
-    return tstate->curexc_type;
-}
-
-
-int
-PyErr_GivenExceptionMatches(PyObject *err, PyObject *exc)
-{
-    if (err == NULL || exc == NULL) {
-        /* maybe caused by "import exceptions" that failed early on */
-        return 0;
-    }
-    if (PyTuple_Check(exc)) {
-        Py_ssize_t i, n;
-        n = PyTuple_Size(exc);
-        for (i = 0; i < n; i++) {
-            /* Test recursively */
-             if (PyErr_GivenExceptionMatches(
-                 err, PyTuple_GET_ITEM(exc, i)))
-             {
-                 return 1;
-             }
-        }
-        return 0;
-    }
-    /* err might be an instance, so check its class. */
-    if (PyExceptionInstance_Check(err))
-        err = PyExceptionInstance_Class(err);
-
-    if (PyExceptionClass_Check(err) && PyExceptionClass_Check(exc)) {
-        int res = 0, reclimit;
-        PyObject *exception, *value, *tb;
-        PyErr_Fetch(&exception, &value, &tb);
-        /* Temporarily bump the recursion limit, so that in the most
-           common case PyObject_IsSubclass will not raise a recursion
-           error we have to ignore anyway. */
-        reclimit = Py_GetRecursionLimit();
-        Py_SetRecursionLimit(reclimit + 5);
-        res = PyObject_IsSubclass(err, exc);
-        Py_SetRecursionLimit(reclimit);
-        /* This function must not fail, so print the error here */
-        if (res == -1) {
-            PyErr_WriteUnraisable(err);
-            res = 0;
-        }
-        PyErr_Restore(exception, value, tb);
-        return res;
-    }
-
-    return err == exc;
-}
-
-
-int
-PyErr_ExceptionMatches(PyObject *exc)
-{
-    return PyErr_GivenExceptionMatches(PyErr_Occurred(), exc);
-}
-
-
-/* Used in many places to normalize a raised exception, including in
-   eval_code2(), do_raise(), and PyErr_Print()
-*/
-void
-PyErr_NormalizeException(PyObject **exc, PyObject **val, PyObject **tb)
-{
-    PyObject *type = *exc;
-    PyObject *value = *val;
-    PyObject *inclass = NULL;
-    PyObject *initial_tb = NULL;
-    PyThreadState *tstate = NULL;
-
-    if (type == NULL) {
-        /* There was no exception, so nothing to do. */
-        return;
-    }
-
-    /* If PyErr_SetNone() was used, the value will have been actually
-       set to NULL.
-    */
-    if (!value) {
-        value = Py_None;
-        Py_INCREF(value);
-    }
-
-    if (PyExceptionInstance_Check(value))
-        inclass = PyExceptionInstance_Class(value);
-
-    /* Normalize the exception so that if the type is a class, the
-       value will be an instance.
-    */
-    if (PyExceptionClass_Check(type)) {
-        /* if the value was not an instance, or is not an instance
-           whose class is (or is derived from) type, then use the
-           value as an argument to instantiation of the type
-           class.
-        */
-        if (!inclass || !PyObject_IsSubclass(inclass, type)) {
-            PyObject *args, *res;
-
-            if (value == Py_None)
-                args = PyTuple_New(0);
-            else if (PyTuple_Check(value)) {
-                Py_INCREF(value);
-                args = value;
-            }
-            else
-                args = PyTuple_Pack(1, value);
-
-            if (args == NULL)
-                goto finally;
-            res = PyEval_CallObject(type, args);
-            Py_DECREF(args);
-            if (res == NULL)
-                goto finally;
-            Py_DECREF(value);
-            value = res;
-        }
-        /* if the class of the instance doesn't exactly match the
-           class of the type, believe the instance
-        */
-        else if (inclass != type) {
-            Py_DECREF(type);
-            type = inclass;
-            Py_INCREF(type);
-        }
-    }
-    *exc = type;
-    *val = value;
-    return;
-finally:
-    Py_DECREF(type);
-    Py_DECREF(value);
-    /* If the new exception doesn't set a traceback and the old
-       exception had a traceback, use the old traceback for the
-       new exception.  It's better than nothing.
-    */
-    initial_tb = *tb;
-    PyErr_Fetch(exc, val, tb);
-    if (initial_tb != NULL) {
-        if (*tb == NULL)
-            *tb = initial_tb;
-        else
-            Py_DECREF(initial_tb);
-    }
-    /* normalize recursively */
-    tstate = PyThreadState_GET();
-    if (++tstate->recursion_depth > Py_GetRecursionLimit()) {
-        --tstate->recursion_depth;
-        /* throw away the old exception... */
-        Py_DECREF(*exc);
-        Py_DECREF(*val);
-        /* ... and use the recursion error instead */
-        *exc = PyExc_RuntimeError;
-        *val = PyExc_RecursionErrorInst;
-        Py_INCREF(*exc);
-        Py_INCREF(*val);
-        /* just keeping the old traceback */
-        return;
-    }
-    PyErr_NormalizeException(exc, val, tb);
-    --tstate->recursion_depth;
-}
-
-
-void
-PyErr_Fetch(PyObject **p_type, PyObject **p_value, PyObject **p_traceback)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-
-    *p_type = tstate->curexc_type;
-    *p_value = tstate->curexc_value;
-    *p_traceback = tstate->curexc_traceback;
-
-    tstate->curexc_type = NULL;
-    tstate->curexc_value = NULL;
-    tstate->curexc_traceback = NULL;
-}
-
-void
-PyErr_Clear(void)
-{
-    PyErr_Restore(NULL, NULL, NULL);
-}
-
-/* Convenience functions to set a type error exception and return 0 */
-
-int
-PyErr_BadArgument(void)
-{
-    PyErr_SetString(PyExc_TypeError,
-                    "bad argument type for built-in operation");
-    return 0;
-}
-
-PyObject *
-PyErr_NoMemory(void)
-{
-    if (PyErr_ExceptionMatches(PyExc_MemoryError))
-        /* already current */
-        return NULL;
-
-    /* raise the pre-allocated instance if it still exists */
-    if (PyExc_MemoryErrorInst)
-        PyErr_SetObject(PyExc_MemoryError, PyExc_MemoryErrorInst);
-    else
-        /* this will probably fail since there's no memory and hee,
-           hee, we have to instantiate this class
-        */
-        PyErr_SetNone(PyExc_MemoryError);
-
-    return NULL;
-}
-
-PyObject *
-PyErr_SetFromErrnoWithFilenameObject(PyObject *exc, PyObject *filenameObject)
-{
-    PyObject *v;
-    char *s;
-    int i = errno;
-#ifdef PLAN9
-    char errbuf[ERRMAX];
-#endif
-#ifdef MS_WINDOWS
-    char *s_buf = NULL;
-    char s_small_buf[28]; /* Room for "Windows Error 0xFFFFFFFF" */
-#endif
-#ifdef EINTR
-    if (i == EINTR && PyErr_CheckSignals())
-        return NULL;
-#endif
-#ifdef PLAN9
-    rerrstr(errbuf, sizeof errbuf);
-    s = errbuf;
-#else
-    if (i == 0)
-        s = "Error"; /* Sometimes errno didn't get set */
-    else
-#ifndef MS_WINDOWS
-        s = strerror(i);
-#else
-    {
-        /* Note that the Win32 errors do not lineup with the
-           errno error.  So if the error is in the MSVC error
-           table, we use it, otherwise we assume it really _is_
-           a Win32 error code
-        */
-        if (i > 0 && i < _sys_nerr) {
-            s = _sys_errlist[i];
-        }
-        else {
-            int len = FormatMessage(
-                FORMAT_MESSAGE_ALLOCATE_BUFFER |
-                FORMAT_MESSAGE_FROM_SYSTEM |
-                FORMAT_MESSAGE_IGNORE_INSERTS,
-                NULL,                   /* no message source */
-                i,
-                MAKELANGID(LANG_NEUTRAL,
-                           SUBLANG_DEFAULT),
-                           /* Default language */
-                (LPTSTR) &s_buf,
-                0,                      /* size not used */
-                NULL);                  /* no args */
-            if (len==0) {
-                /* Only ever seen this in out-of-mem
-                   situations */
-                sprintf(s_small_buf, "Windows Error 0x%X", i);
-                s = s_small_buf;
-                s_buf = NULL;
-            } else {
-                s = s_buf;
-                /* remove trailing cr/lf and dots */
-                while (len > 0 && (s[len-1] <= ' ' || s[len-1] == '.'))
-                    s[--len] = '\0';
-            }
-        }
-    }
-#endif /* Unix/Windows */
-#endif /* PLAN 9*/
-    if (filenameObject != NULL)
-        v = Py_BuildValue("(isO)", i, s, filenameObject);
-    else
-        v = Py_BuildValue("(is)", i, s);
-    if (v != NULL) {
-        PyErr_SetObject(exc, v);
-        Py_DECREF(v);
-    }
-#ifdef MS_WINDOWS
-    LocalFree(s_buf);
-#endif
-    return NULL;
-}
-
-
-PyObject *
-PyErr_SetFromErrnoWithFilename(PyObject *exc, const char *filename)
-{
-    PyObject *name = filename ? PyString_FromString(filename) : NULL;
-    PyObject *result = PyErr_SetFromErrnoWithFilenameObject(exc, name);
-    Py_XDECREF(name);
-    return result;
-}
-
-#ifdef MS_WINDOWS
-PyObject *
-PyErr_SetFromErrnoWithUnicodeFilename(PyObject *exc, const Py_UNICODE *filename)
-{
-    PyObject *name = filename ?
-                     PyUnicode_FromUnicode(filename, wcslen(filename)) :
-             NULL;
-    PyObject *result = PyErr_SetFromErrnoWithFilenameObject(exc, name);
-    Py_XDECREF(name);
-    return result;
-}
-#endif /* MS_WINDOWS */
-
-PyObject *
-PyErr_SetFromErrno(PyObject *exc)
-{
-    return PyErr_SetFromErrnoWithFilenameObject(exc, NULL);
-}
-
-#ifdef MS_WINDOWS
-/* Windows specific error code handling */
-PyObject *PyErr_SetExcFromWindowsErrWithFilenameObject(
-    PyObject *exc,
-    int ierr,
-    PyObject *filenameObject)
-{
-    int len;
-    char *s;
-    char *s_buf = NULL; /* Free via LocalFree */
-    char s_small_buf[28]; /* Room for "Windows Error 0xFFFFFFFF" */
-    PyObject *v;
-    DWORD err = (DWORD)ierr;
-    if (err==0) err = GetLastError();
-    len = FormatMessage(
-        /* Error API error */
-        FORMAT_MESSAGE_ALLOCATE_BUFFER |
-        FORMAT_MESSAGE_FROM_SYSTEM |
-        FORMAT_MESSAGE_IGNORE_INSERTS,
-        NULL,           /* no message source */
-        err,
-        MAKELANGID(LANG_NEUTRAL,
-        SUBLANG_DEFAULT), /* Default language */
-        (LPTSTR) &s_buf,
-        0,              /* size not used */
-        NULL);          /* no args */
-    if (len==0) {
-        /* Only seen this in out of mem situations */
-        sprintf(s_small_buf, "Windows Error 0x%X", err);
-        s = s_small_buf;
-        s_buf = NULL;
-    } else {
-        s = s_buf;
-        /* remove trailing cr/lf and dots */
-        while (len > 0 && (s[len-1] <= ' ' || s[len-1] == '.'))
-            s[--len] = '\0';
-    }
-    if (filenameObject != NULL)
-        v = Py_BuildValue("(isO)", err, s, filenameObject);
-    else
-        v = Py_BuildValue("(is)", err, s);
-    if (v != NULL) {
-        PyErr_SetObject(exc, v);
-        Py_DECREF(v);
-    }
-    LocalFree(s_buf);
-    return NULL;
-}
-
-PyObject *PyErr_SetExcFromWindowsErrWithFilename(
-    PyObject *exc,
-    int ierr,
-    const char *filename)
-{
-    PyObject *name = filename ? PyString_FromString(filename) : NULL;
-    PyObject *ret = PyErr_SetExcFromWindowsErrWithFilenameObject(exc,
-                                                                 ierr,
-                                                                 name);
-    Py_XDECREF(name);
-    return ret;
-}
-
-PyObject *PyErr_SetExcFromWindowsErrWithUnicodeFilename(
-    PyObject *exc,
-    int ierr,
-    const Py_UNICODE *filename)
-{
-    PyObject *name = filename ?
-                     PyUnicode_FromUnicode(filename, wcslen(filename)) :
-             NULL;
-    PyObject *ret = PyErr_SetExcFromWindowsErrWithFilenameObject(exc,
-                                                                 ierr,
-                                                                 name);
-    Py_XDECREF(name);
-    return ret;
-}
-
-PyObject *PyErr_SetExcFromWindowsErr(PyObject *exc, int ierr)
-{
-    return PyErr_SetExcFromWindowsErrWithFilename(exc, ierr, NULL);
-}
-
-PyObject *PyErr_SetFromWindowsErr(int ierr)
-{
-    return PyErr_SetExcFromWindowsErrWithFilename(PyExc_WindowsError,
-                                                  ierr, NULL);
-}
-PyObject *PyErr_SetFromWindowsErrWithFilename(
-    int ierr,
-    const char *filename)
-{
-    PyObject *name = filename ? PyString_FromString(filename) : NULL;
-    PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObject(
-                                                  PyExc_WindowsError,
-                                                  ierr, name);
-    Py_XDECREF(name);
-    return result;
-}
-
-PyObject *PyErr_SetFromWindowsErrWithUnicodeFilename(
-    int ierr,
-    const Py_UNICODE *filename)
-{
-    PyObject *name = filename ?
-                     PyUnicode_FromUnicode(filename, wcslen(filename)) :
-             NULL;
-    PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObject(
-                                                  PyExc_WindowsError,
-                                                  ierr, name);
-    Py_XDECREF(name);
-    return result;
-}
-#endif /* MS_WINDOWS */
-
-void
-_PyErr_BadInternalCall(char *filename, int lineno)
-{
-    PyErr_Format(PyExc_SystemError,
-                 "%s:%d: bad argument to internal function",
-                 filename, lineno);
-}
-
-/* Remove the preprocessor macro for PyErr_BadInternalCall() so that we can
-   export the entry point for existing object code: */
-#undef PyErr_BadInternalCall
-void
-PyErr_BadInternalCall(void)
-{
-    PyErr_Format(PyExc_SystemError,
-                 "bad argument to internal function");
-}
-#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
-
-
-
-PyObject *
-PyErr_Format(PyObject *exception, const char *format, ...)
-{
-    va_list vargs;
-    PyObject* string;
-
-#ifdef HAVE_STDARG_PROTOTYPES
-    va_start(vargs, format);
-#else
-    va_start(vargs);
-#endif
-
-    string = PyString_FromFormatV(format, vargs);
-    PyErr_SetObject(exception, string);
-    Py_XDECREF(string);
-    va_end(vargs);
-    return NULL;
-}
-
-
-
-PyObject *
-PyErr_NewException(char *name, PyObject *base, PyObject *dict)
-{
-    char *dot;
-    PyObject *modulename = NULL;
-    PyObject *classname = NULL;
-    PyObject *mydict = NULL;
-    PyObject *bases = NULL;
-    PyObject *result = NULL;
-    dot = strrchr(name, '.');
-    if (dot == NULL) {
-        PyErr_SetString(PyExc_SystemError,
-            "PyErr_NewException: name must be module.class");
-        return NULL;
-    }
-    if (base == NULL)
-        base = PyExc_Exception;
-    if (dict == NULL) {
-        dict = mydict = PyDict_New();
-        if (dict == NULL)
-            goto failure;
-    }
-    if (PyDict_GetItemString(dict, "__module__") == NULL) {
-        modulename = PyString_FromStringAndSize(name,
-                                             (Py_ssize_t)(dot-name));
-        if (modulename == NULL)
-            goto failure;
-        if (PyDict_SetItemString(dict, "__module__", modulename) != 0)
-            goto failure;
-    }
-    if (PyTuple_Check(base)) {
-        bases = base;
-        /* INCREF as we create a new ref in the else branch */
-        Py_INCREF(bases);
-    } else {
-        bases = PyTuple_Pack(1, base);
-        if (bases == NULL)
-            goto failure;
-    }
-    /* Create a real new-style class. */
-    result = PyObject_CallFunction((PyObject *)&PyType_Type, "sOO",
-                                   dot+1, bases, dict);
-  failure:
-    Py_XDECREF(bases);
-    Py_XDECREF(mydict);
-    Py_XDECREF(classname);
-    Py_XDECREF(modulename);
-    return result;
-}
-
-
-/* Create an exception with docstring */
-PyObject *
-PyErr_NewExceptionWithDoc(char *name, char *doc, PyObject *base, PyObject *dict)
-{
-    int result;
-    PyObject *ret = NULL;
-    PyObject *mydict = NULL; /* points to the dict only if we create it */
-    PyObject *docobj;
-
-    if (dict == NULL) {
-        dict = mydict = PyDict_New();
-        if (dict == NULL) {
-            return NULL;
-        }
-    }
-
-    if (doc != NULL) {
-        docobj = PyString_FromString(doc);
-        if (docobj == NULL)
-            goto failure;
-        result = PyDict_SetItemString(dict, "__doc__", docobj);
-        Py_DECREF(docobj);
-        if (result < 0)
-            goto failure;
-    }
-
-    ret = PyErr_NewException(name, base, dict);
-  failure:
-    Py_XDECREF(mydict);
-    return ret;
-}
-
-
-/* Call when an exception has occurred but there is no way for Python
-   to handle it.  Examples: exception in __del__ or during GC. */
-void
-PyErr_WriteUnraisable(PyObject *obj)
-{
-    PyObject *f, *t, *v, *tb;
-    PyErr_Fetch(&t, &v, &tb);
-    f = PySys_GetObject("stderr");
-    if (f != NULL) {
-        PyFile_WriteString("Exception ", f);
-        if (t) {
-            PyObject* moduleName;
-            char* className;
-            assert(PyExceptionClass_Check(t));
-            className = PyExceptionClass_Name(t);
-            if (className != NULL) {
-                char *dot = strrchr(className, '.');
-                if (dot != NULL)
-                    className = dot+1;
-            }
-
-            moduleName = PyObject_GetAttrString(t, "__module__");
-            if (moduleName == NULL)
-                PyFile_WriteString("<unknown>", f);
-            else {
-                char* modstr = PyString_AsString(moduleName);
-                if (modstr &&
-                    strcmp(modstr, "exceptions") != 0)
-                {
-                    PyFile_WriteString(modstr, f);
-                    PyFile_WriteString(".", f);
-                }
-            }
-            if (className == NULL)
-                PyFile_WriteString("<unknown>", f);
-            else
-                PyFile_WriteString(className, f);
-            if (v && v != Py_None) {
-                PyFile_WriteString(": ", f);
-                PyFile_WriteObject(v, f, 0);
-            }
-            Py_XDECREF(moduleName);
-        }
-        PyFile_WriteString(" in ", f);
-        PyFile_WriteObject(obj, f, 0);
-        PyFile_WriteString(" ignored\n", f);
-        PyErr_Clear(); /* Just in case */
-    }
-    Py_XDECREF(t);
-    Py_XDECREF(v);
-    Py_XDECREF(tb);
-}
-
-extern PyObject *PyModule_GetWarningsModule(void);
-
-
-/* Set file and line information for the current exception.
-   If the exception is not a SyntaxError, also sets additional attributes
-   to make printing of exceptions believe it is a syntax error. */
-
-void
-PyErr_SyntaxLocation(const char *filename, int lineno)
-{
-    PyObject *exc, *v, *tb, *tmp;
-
-    /* add attributes for the line number and filename for the error */
-    PyErr_Fetch(&exc, &v, &tb);
-    PyErr_NormalizeException(&exc, &v, &tb);
-    /* XXX check that it is, indeed, a syntax error. It might not
-     * be, though. */
-    tmp = PyInt_FromLong(lineno);
-    if (tmp == NULL)
-        PyErr_Clear();
-    else {
-        if (PyObject_SetAttrString(v, "lineno", tmp))
-            PyErr_Clear();
-        Py_DECREF(tmp);
-    }
-    if (filename != NULL) {
-        tmp = PyString_FromString(filename);
-        if (tmp == NULL)
-            PyErr_Clear();
-        else {
-            if (PyObject_SetAttrString(v, "filename", tmp))
-                PyErr_Clear();
-            Py_DECREF(tmp);
-        }
-
-        tmp = PyErr_ProgramText(filename, lineno);
-        if (tmp) {
-            if (PyObject_SetAttrString(v, "text", tmp))
-                PyErr_Clear();
-            Py_DECREF(tmp);
-        }
-    }
-    if (PyObject_SetAttrString(v, "offset", Py_None)) {
-        PyErr_Clear();
-    }
-    if (exc != PyExc_SyntaxError) {
-        if (!PyObject_HasAttrString(v, "msg")) {
-            tmp = PyObject_Str(v);
-            if (tmp) {
-                if (PyObject_SetAttrString(v, "msg", tmp))
-                    PyErr_Clear();
-                Py_DECREF(tmp);
-            } else {
-                PyErr_Clear();
-            }
-        }
-        if (!PyObject_HasAttrString(v, "print_file_and_line")) {
-            if (PyObject_SetAttrString(v, "print_file_and_line",
-                                       Py_None))
-                PyErr_Clear();
-        }
-    }
-    PyErr_Restore(exc, v, tb);
-}
-
-/* com_fetch_program_text will attempt to load the line of text that
-   the exception refers to.  If it fails, it will return NULL but will
-   not set an exception.
-
-   XXX The functionality of this function is quite similar to the
-   functionality in tb_displayline() in traceback.c.
-*/
-
-PyObject *
-PyErr_ProgramText(const char *filename, int lineno)
-{
-    FILE *fp;
-    int i;
-    char linebuf[1000];
-
-    if (filename == NULL || *filename == '\0' || lineno <= 0)
-        return NULL;
-    fp = fopen(filename, "r" PY_STDIOTEXTMODE);
-    if (fp == NULL)
-        return NULL;
-    for (i = 0; i < lineno; i++) {
-        char *pLastChar = &linebuf[sizeof(linebuf) - 2];
-        do {
-            *pLastChar = '\0';
-            if (Py_UniversalNewlineFgets(linebuf, sizeof linebuf, fp, NULL) == NULL)
-                break;
-            /* fgets read *something*; if it didn't get as
-               far as pLastChar, it must have found a newline
-               or hit the end of the file; if pLastChar is \n,
-               it obviously found a newline; else we haven't
-               yet seen a newline, so must continue */
-        } while (*pLastChar != '\0' && *pLastChar != '\n');
-    }
-    fclose(fp);
-    if (i == lineno) {
-        char *p = linebuf;
-        while (*p == ' ' || *p == '\t' || *p == '\014')
-            p++;
-        return PyString_FromString(p);
-    }
-    return NULL;
-}
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/formatter_string.c b/AppPkg/Applications/Python/Python-2.7.2/Python/formatter_string.c
deleted file mode 100644
index 1ab52e7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/formatter_string.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/***********************************************************************/
-/* Implements the string (as opposed to unicode) version of the
-   built-in formatters for string, int, float.  That is, the versions
-   of int.__format__, etc., that take and return string objects */
-
-#include "Python.h"
-#include "../Objects/stringlib/stringdefs.h"
-
-#define FORMAT_STRING  _PyBytes_FormatAdvanced
-#define FORMAT_LONG    _PyLong_FormatAdvanced
-#define FORMAT_INT     _PyInt_FormatAdvanced
-#define FORMAT_FLOAT   _PyFloat_FormatAdvanced
-#ifndef WITHOUT_COMPLEX
-#define FORMAT_COMPLEX _PyComplex_FormatAdvanced
-#endif
-
-#include "../Objects/stringlib/formatter.h"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/formatter_unicode.c b/AppPkg/Applications/Python/Python-2.7.2/Python/formatter_unicode.c
deleted file mode 100644
index c431639..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/formatter_unicode.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Implements the unicode (as opposed to string) version of the
-   built-in formatter for unicode.  That is, unicode.__format__(). */
-
-#include "Python.h"
-
-#ifdef Py_USING_UNICODE
-
-#include "../Objects/stringlib/unicodedefs.h"
-
-#define FORMAT_STRING _PyUnicode_FormatAdvanced
-
-/* don't define FORMAT_LONG, FORMAT_FLOAT, and FORMAT_COMPLEX, since
-   we can live with only the string versions of those.  The builtin
-   format() will convert them to unicode. */
-
-#include "../Objects/stringlib/formatter.h"
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/frozen.c b/AppPkg/Applications/Python/Python-2.7.2/Python/frozen.c
deleted file mode 100644
index 1ec3603..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/frozen.c
+++ /dev/null
@@ -1,38 +0,0 @@
-
-/* Dummy frozen modules initializer */
-
-#include "Python.h"
-
-/* In order to test the support for frozen modules, by default we
-   define a single frozen module, __hello__.  Loading it will print
-   some famous words... */
-
-/* To regenerate this data after the bytecode or marshal format has changed,
-   go to ../Tools/freeze/ and freeze the hello.py file; then copy and paste
-   the appropriate bytes from M___main__.c. */
-
-static unsigned char M___hello__[] = {
-    99,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
-    0,115,9,0,0,0,100,0,0,71,72,100,1,0,83,40,
-    2,0,0,0,115,14,0,0,0,72,101,108,108,111,32,119,
-    111,114,108,100,46,46,46,78,40,0,0,0,0,40,0,0,
-    0,0,40,0,0,0,0,40,0,0,0,0,115,8,0,0,
-    0,104,101,108,108,111,46,112,121,115,1,0,0,0,63,1,
-    0,0,0,115,0,0,0,0,
-};
-
-#define SIZE (int)sizeof(M___hello__)
-
-static struct _frozen _PyImport_FrozenModules[] = {
-    /* Test module */
-    {"__hello__", M___hello__, SIZE},
-    /* Test package (negative size indicates package-ness) */
-    {"__phello__", M___hello__, -SIZE},
-    {"__phello__.spam", M___hello__, SIZE},
-    {0, 0, 0} /* sentinel */
-};
-
-/* Embedding apps may change this pointer to point to their favorite
-   collection of frozen modules: */
-
-struct _frozen *PyImport_FrozenModules = _PyImport_FrozenModules;
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/frozenmain.c b/AppPkg/Applications/Python/Python-2.7.2/Python/frozenmain.c
deleted file mode 100644
index 2aac6c0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/frozenmain.c
+++ /dev/null
@@ -1,68 +0,0 @@
-
-/* Python interpreter main program for frozen scripts */
-
-#include "Python.h"
-
-#ifdef MS_WINDOWS
-extern void PyWinFreeze_ExeInit(void);
-extern void PyWinFreeze_ExeTerm(void);
-extern int PyInitFrozenExtensions(void);
-#endif
-
-/* Main program */
-
-int
-Py_FrozenMain(int argc, char **argv)
-{
-    char *p;
-    int n, sts;
-    int inspect = 0;
-    int unbuffered = 0;
-
-    Py_FrozenFlag = 1; /* Suppress errors from getpath.c */
-
-    if ((p = Py_GETENV("PYTHONINSPECT")) && *p != '\0')
-        inspect = 1;
-    if ((p = Py_GETENV("PYTHONUNBUFFERED")) && *p != '\0')
-        unbuffered = 1;
-
-    if (unbuffered) {
-        setbuf(stdin, (char *)NULL);
-        setbuf(stdout, (char *)NULL);
-        setbuf(stderr, (char *)NULL);
-    }
-
-#ifdef MS_WINDOWS
-    PyInitFrozenExtensions();
-#endif /* MS_WINDOWS */
-    Py_SetProgramName(argv[0]);
-    Py_Initialize();
-#ifdef MS_WINDOWS
-    PyWinFreeze_ExeInit();
-#endif
-
-    if (Py_VerboseFlag)
-        fprintf(stderr, "Python %s\n%s\n",
-            Py_GetVersion(), Py_GetCopyright());
-
-    PySys_SetArgv(argc, argv);
-
-    n = PyImport_ImportFrozenModule("__main__");
-    if (n == 0)
-        Py_FatalError("__main__ not frozen");
-    if (n < 0) {
-        PyErr_Print();
-        sts = 1;
-    }
-    else
-        sts = 0;
-
-    if (inspect && isatty((int)fileno(stdin)))
-        sts = PyRun_AnyFile(stdin, "<stdin>") != 0;
-
-#ifdef MS_WINDOWS
-    PyWinFreeze_ExeTerm();
-#endif
-    Py_Finalize();
-    return sts;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/future.c b/AppPkg/Applications/Python/Python-2.7.2/Python/future.c
deleted file mode 100644
index e3db5f9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/future.c
+++ /dev/null
@@ -1,142 +0,0 @@
-#include "Python.h"
-#include "Python-ast.h"
-#include "node.h"
-#include "token.h"
-#include "graminit.h"
-#include "code.h"
-#include "compile.h"
-#include "symtable.h"
-
-#define UNDEFINED_FUTURE_FEATURE "future feature %.100s is not defined"
-#define ERR_LATE_FUTURE \
-"from __future__ imports must occur at the beginning of the file"
-
-static int
-future_check_features(PyFutureFeatures *ff, stmt_ty s, const char *filename)
-{
-    int i;
-    asdl_seq *names;
-
-    assert(s->kind == ImportFrom_kind);
-
-    names = s->v.ImportFrom.names;
-    for (i = 0; i < asdl_seq_LEN(names); i++) {
-        alias_ty name = (alias_ty)asdl_seq_GET(names, i);
-        const char *feature = PyString_AsString(name->name);
-        if (!feature)
-            return 0;
-        if (strcmp(feature, FUTURE_NESTED_SCOPES) == 0) {
-            continue;
-        } else if (strcmp(feature, FUTURE_GENERATORS) == 0) {
-            continue;
-        } else if (strcmp(feature, FUTURE_DIVISION) == 0) {
-            ff->ff_features |= CO_FUTURE_DIVISION;
-        } else if (strcmp(feature, FUTURE_ABSOLUTE_IMPORT) == 0) {
-            ff->ff_features |= CO_FUTURE_ABSOLUTE_IMPORT;
-        } else if (strcmp(feature, FUTURE_WITH_STATEMENT) == 0) {
-            ff->ff_features |= CO_FUTURE_WITH_STATEMENT;
-        } else if (strcmp(feature, FUTURE_PRINT_FUNCTION) == 0) {
-            ff->ff_features |= CO_FUTURE_PRINT_FUNCTION;
-        } else if (strcmp(feature, FUTURE_UNICODE_LITERALS) == 0) {
-            ff->ff_features |= CO_FUTURE_UNICODE_LITERALS;
-        } else if (strcmp(feature, "braces") == 0) {
-            PyErr_SetString(PyExc_SyntaxError,
-                            "not a chance");
-            PyErr_SyntaxLocation(filename, s->lineno);
-            return 0;
-        } else {
-            PyErr_Format(PyExc_SyntaxError,
-                         UNDEFINED_FUTURE_FEATURE, feature);
-            PyErr_SyntaxLocation(filename, s->lineno);
-            return 0;
-        }
-    }
-    return 1;
-}
-
-static int
-future_parse(PyFutureFeatures *ff, mod_ty mod, const char *filename)
-{
-    int i, found_docstring = 0, done = 0, prev_line = 0;
-
-    static PyObject *future;
-    if (!future) {
-        future = PyString_InternFromString("__future__");
-        if (!future)
-            return 0;
-    }
-
-    if (!(mod->kind == Module_kind || mod->kind == Interactive_kind))
-        return 1;
-
-    /* A subsequent pass will detect future imports that don't
-       appear at the beginning of the file.  There's one case,
-       however, that is easier to handle here: A series of imports
-       joined by semi-colons, where the first import is a future
-       statement but some subsequent import has the future form
-       but is preceded by a regular import.
-    */
-
-
-    for (i = 0; i < asdl_seq_LEN(mod->v.Module.body); i++) {
-        stmt_ty s = (stmt_ty)asdl_seq_GET(mod->v.Module.body, i);
-
-        if (done && s->lineno > prev_line)
-            return 1;
-        prev_line = s->lineno;
-
-        /* The tests below will return from this function unless it is
-           still possible to find a future statement.  The only things
-           that can precede a future statement are another future
-           statement and a doc string.
-        */
-
-        if (s->kind == ImportFrom_kind) {
-            if (s->v.ImportFrom.module == future) {
-                if (done) {
-                    PyErr_SetString(PyExc_SyntaxError,
-                                    ERR_LATE_FUTURE);
-                    PyErr_SyntaxLocation(filename,
-                                         s->lineno);
-                    return 0;
-                }
-                if (!future_check_features(ff, s, filename))
-                    return 0;
-                ff->ff_lineno = s->lineno;
-            }
-            else
-                done = 1;
-        }
-        else if (s->kind == Expr_kind && !found_docstring) {
-            expr_ty e = s->v.Expr.value;
-            if (e->kind != Str_kind)
-                done = 1;
-            else
-                found_docstring = 1;
-        }
-        else
-            done = 1;
-    }
-    return 1;
-}
-
-
-PyFutureFeatures *
-PyFuture_FromAST(mod_ty mod, const char *filename)
-{
-    PyFutureFeatures *ff;
-
-    ff = (PyFutureFeatures *)PyObject_Malloc(sizeof(PyFutureFeatures));
-    if (ff == NULL) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-    ff->ff_features = 0;
-    ff->ff_lineno = -1;
-
-    if (!future_parse(ff, mod, filename)) {
-        PyObject_Free(ff);
-        return NULL;
-    }
-    return ff;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/getargs.c b/AppPkg/Applications/Python/Python-2.7.2/Python/getargs.c
deleted file mode 100644
index def8010..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/getargs.c
+++ /dev/null
@@ -1,1907 +0,0 @@
-
-/* New getargs implementation */
-
-#include "Python.h"
-
-#include <ctype.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-int PyArg_Parse(PyObject *, const char *, ...);
-int PyArg_ParseTuple(PyObject *, const char *, ...);
-int PyArg_VaParse(PyObject *, const char *, va_list);
-
-int PyArg_ParseTupleAndKeywords(PyObject *, PyObject *,
-                                const char *, char **, ...);
-int PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *,
-                                const char *, char **, va_list);
-
-#ifdef HAVE_DECLSPEC_DLL
-/* Export functions */
-PyAPI_FUNC(int) _PyArg_Parse_SizeT(PyObject *, char *, ...);
-PyAPI_FUNC(int) _PyArg_ParseTuple_SizeT(PyObject *, char *, ...);
-PyAPI_FUNC(int) _PyArg_ParseTupleAndKeywords_SizeT(PyObject *, PyObject *,
-                                                  const char *, char **, ...);
-PyAPI_FUNC(PyObject *) _Py_BuildValue_SizeT(const char *, ...);
-PyAPI_FUNC(int) _PyArg_VaParse_SizeT(PyObject *, char *, va_list);
-PyAPI_FUNC(int) _PyArg_VaParseTupleAndKeywords_SizeT(PyObject *, PyObject *,
-                                              const char *, char **, va_list);
-#endif
-
-#define FLAG_COMPAT 1
-#define FLAG_SIZE_T 2
-
-
-/* Forward */
-static int vgetargs1(PyObject *, const char *, va_list *, int);
-static void seterror(int, const char *, int *, const char *, const char *);
-static char *convertitem(PyObject *, const char **, va_list *, int, int *,
-                         char *, size_t, PyObject **);
-static char *converttuple(PyObject *, const char **, va_list *, int,
-                          int *, char *, size_t, int, PyObject **);
-static char *convertsimple(PyObject *, const char **, va_list *, int, char *,
-                           size_t, PyObject **);
-static Py_ssize_t convertbuffer(PyObject *, void **p, char **);
-static int getbuffer(PyObject *, Py_buffer *, char**);
-
-static int vgetargskeywords(PyObject *, PyObject *,
-                            const char *, char **, va_list *, int);
-static char *skipitem(const char **, va_list *, int);
-
-int
-PyArg_Parse(PyObject *args, const char *format, ...)
-{
-    int retval;
-    va_list va;
-
-    va_start(va, format);
-    retval = vgetargs1(args, format, &va, FLAG_COMPAT);
-    va_end(va);
-    return retval;
-}
-
-int
-_PyArg_Parse_SizeT(PyObject *args, char *format, ...)
-{
-    int retval;
-    va_list va;
-
-    va_start(va, format);
-    retval = vgetargs1(args, format, &va, FLAG_COMPAT|FLAG_SIZE_T);
-    va_end(va);
-    return retval;
-}
-
-
-int
-PyArg_ParseTuple(PyObject *args, const char *format, ...)
-{
-    int retval;
-    va_list va;
-
-    va_start(va, format);
-    retval = vgetargs1(args, format, &va, 0);
-    va_end(va);
-    return retval;
-}
-
-int
-_PyArg_ParseTuple_SizeT(PyObject *args, char *format, ...)
-{
-    int retval;
-    va_list va;
-
-    va_start(va, format);
-    retval = vgetargs1(args, format, &va, FLAG_SIZE_T);
-    va_end(va);
-    return retval;
-}
-
-
-int
-PyArg_VaParse(PyObject *args, const char *format, va_list va)
-{
-    va_list lva;
-
-#ifdef VA_LIST_IS_ARRAY
-    memcpy(lva, va, sizeof(va_list));
-#else
-#ifdef __va_copy
-    __va_copy(lva, va);
-#else
-    lva = va;
-#endif
-#endif
-
-    return vgetargs1(args, format, &lva, 0);
-}
-
-int
-_PyArg_VaParse_SizeT(PyObject *args, char *format, va_list va)
-{
-    va_list lva;
-
-#ifdef VA_LIST_IS_ARRAY
-    memcpy(lva, va, sizeof(va_list));
-#else
-#ifdef __va_copy
-    __va_copy(lva, va);
-#else
-    lva = va;
-#endif
-#endif
-
-    return vgetargs1(args, format, &lva, FLAG_SIZE_T);
-}
-
-
-/* Handle cleanup of allocated memory in case of exception */
-
-#define GETARGS_CAPSULE_NAME_CLEANUP_PTR "getargs.cleanup_ptr"
-#define GETARGS_CAPSULE_NAME_CLEANUP_BUFFER "getargs.cleanup_buffer"
-
-static void
-cleanup_ptr(PyObject *self)
-{
-    void *ptr = PyCapsule_GetPointer(self, GETARGS_CAPSULE_NAME_CLEANUP_PTR);
-    if (ptr) {
-      PyMem_FREE(ptr);
-    }
-}
-
-static void
-cleanup_buffer(PyObject *self)
-{
-    Py_buffer *ptr = (Py_buffer *)PyCapsule_GetPointer(self, GETARGS_CAPSULE_NAME_CLEANUP_BUFFER);
-    if (ptr) {
-        PyBuffer_Release(ptr);
-    }
-}
-
-static int
-addcleanup(void *ptr, PyObject **freelist, PyCapsule_Destructor destr)
-{
-    PyObject *cobj;
-    const char *name;
-
-    if (!*freelist) {
-        *freelist = PyList_New(0);
-        if (!*freelist) {
-            destr(ptr);
-            return -1;
-        }
-    }
-
-    if (destr == cleanup_ptr) {
-        name = GETARGS_CAPSULE_NAME_CLEANUP_PTR;
-    } else if (destr == cleanup_buffer) {
-        name = GETARGS_CAPSULE_NAME_CLEANUP_BUFFER;
-    } else {
-        return -1;
-    }
-    cobj = PyCapsule_New(ptr, name, destr);
-    if (!cobj) {
-        destr(ptr);
-        return -1;
-    }
-    if (PyList_Append(*freelist, cobj)) {
-        Py_DECREF(cobj);
-        return -1;
-    }
-    Py_DECREF(cobj);
-    return 0;
-}
-
-static int
-cleanreturn(int retval, PyObject *freelist)
-{
-    if (freelist && retval != 0) {
-        /* We were successful, reset the destructors so that they
-           don't get called. */
-        Py_ssize_t len = PyList_GET_SIZE(freelist), i;
-        for (i = 0; i < len; i++)
-            PyCapsule_SetDestructor(PyList_GET_ITEM(freelist, i), NULL);
-    }
-    Py_XDECREF(freelist);
-    return retval;
-}
-
-
-static int
-vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
-{
-    char msgbuf[256];
-    int levels[32];
-    const char *fname = NULL;
-    const char *message = NULL;
-    int min = -1;
-    int max = 0;
-    int level = 0;
-    int endfmt = 0;
-    const char *formatsave = format;
-    Py_ssize_t i, len;
-    char *msg;
-    PyObject *freelist = NULL;
-    int compat = flags & FLAG_COMPAT;
-
-    assert(compat || (args != (PyObject*)NULL));
-    flags = flags & ~FLAG_COMPAT;
-
-    while (endfmt == 0) {
-        int c = *format++;
-        switch (c) {
-        case '(':
-            if (level == 0)
-                max++;
-            level++;
-            if (level >= 30)
-                Py_FatalError("too many tuple nesting levels "
-                              "in argument format string");
-            break;
-        case ')':
-            if (level == 0)
-                Py_FatalError("excess ')' in getargs format");
-            else
-                level--;
-            break;
-        case '\0':
-            endfmt = 1;
-            break;
-        case ':':
-            fname = format;
-            endfmt = 1;
-            break;
-        case ';':
-            message = format;
-            endfmt = 1;
-            break;
-        default:
-            if (level == 0) {
-                if (c == 'O')
-                    max++;
-                else if (isalpha(Py_CHARMASK(c))) {
-                    if (c != 'e') /* skip encoded */
-                        max++;
-                } else if (c == '|')
-                    min = max;
-            }
-            break;
-        }
-    }
-
-    if (level != 0)
-        Py_FatalError(/* '(' */ "missing ')' in getargs format");
-
-    if (min < 0)
-        min = max;
-
-    format = formatsave;
-
-    if (compat) {
-        if (max == 0) {
-            if (args == NULL)
-                return 1;
-            PyOS_snprintf(msgbuf, sizeof(msgbuf),
-                          "%.200s%s takes no arguments",
-                          fname==NULL ? "function" : fname,
-                          fname==NULL ? "" : "()");
-            PyErr_SetString(PyExc_TypeError, msgbuf);
-            return 0;
-        }
-        else if (min == 1 && max == 1) {
-            if (args == NULL) {
-                PyOS_snprintf(msgbuf, sizeof(msgbuf),
-                      "%.200s%s takes at least one argument",
-                          fname==NULL ? "function" : fname,
-                          fname==NULL ? "" : "()");
-                PyErr_SetString(PyExc_TypeError, msgbuf);
-                return 0;
-            }
-            msg = convertitem(args, &format, p_va, flags, levels,
-                              msgbuf, sizeof(msgbuf), &freelist);
-            if (msg == NULL)
-                return cleanreturn(1, freelist);
-            seterror(levels[0], msg, levels+1, fname, message);
-            return cleanreturn(0, freelist);
-        }
-        else {
-            PyErr_SetString(PyExc_SystemError,
-                "old style getargs format uses new features");
-            return 0;
-        }
-    }
-
-    if (!PyTuple_Check(args)) {
-        PyErr_SetString(PyExc_SystemError,
-            "new style getargs format but argument is not a tuple");
-        return 0;
-    }
-
-    len = PyTuple_GET_SIZE(args);
-
-    if (len < min || max < len) {
-        if (message == NULL) {
-            PyOS_snprintf(msgbuf, sizeof(msgbuf),
-                          "%.150s%s takes %s %d argument%s "
-                          "(%ld given)",
-                          fname==NULL ? "function" : fname,
-                          fname==NULL ? "" : "()",
-                          min==max ? "exactly"
-                          : len < min ? "at least" : "at most",
-                          len < min ? min : max,
-                          (len < min ? min : max) == 1 ? "" : "s",
-                          Py_SAFE_DOWNCAST(len, Py_ssize_t, long));
-            message = msgbuf;
-        }
-        PyErr_SetString(PyExc_TypeError, message);
-        return 0;
-    }
-
-    for (i = 0; i < len; i++) {
-        if (*format == '|')
-            format++;
-        msg = convertitem(PyTuple_GET_ITEM(args, i), &format, p_va,
-                          flags, levels, msgbuf,
-                          sizeof(msgbuf), &freelist);
-        if (msg) {
-            seterror(i+1, msg, levels, fname, msg);
-            return cleanreturn(0, freelist);
-        }
-    }
-
-    if (*format != '\0' && !isalpha(Py_CHARMASK(*format)) &&
-        *format != '(' &&
-        *format != '|' && *format != ':' && *format != ';') {
-        PyErr_Format(PyExc_SystemError,
-                     "bad format string: %.200s", formatsave);
-        return cleanreturn(0, freelist);
-    }
-
-    return cleanreturn(1, freelist);
-}
-
-
-
-static void
-seterror(int iarg, const char *msg, int *levels, const char *fname,
-         const char *message)
-{
-    char buf[512];
-    int i;
-    char *p = buf;
-
-    if (PyErr_Occurred())
-        return;
-    else if (message == NULL) {
-        if (fname != NULL) {
-            PyOS_snprintf(p, sizeof(buf), "%.200s() ", fname);
-            p += strlen(p);
-        }
-        if (iarg != 0) {
-            PyOS_snprintf(p, sizeof(buf) - (p - buf),
-                          "argument %d", iarg);
-            i = 0;
-            p += strlen(p);
-            while (levels[i] > 0 && i < 32 && (int)(p-buf) < 220) {
-                PyOS_snprintf(p, sizeof(buf) - (p - buf),
-                              ", item %d", levels[i]-1);
-                p += strlen(p);
-                i++;
-            }
-        }
-        else {
-            PyOS_snprintf(p, sizeof(buf) - (p - buf), "argument");
-            p += strlen(p);
-        }
-        PyOS_snprintf(p, sizeof(buf) - (p - buf), " %.256s", msg);
-        message = buf;
-    }
-    PyErr_SetString(PyExc_TypeError, message);
-}
-
-
-/* Convert a tuple argument.
-   On entry, *p_format points to the character _after_ the opening '('.
-   On successful exit, *p_format points to the closing ')'.
-   If successful:
-      *p_format and *p_va are updated,
-      *levels and *msgbuf are untouched,
-      and NULL is returned.
-   If the argument is invalid:
-      *p_format is unchanged,
-      *p_va is undefined,
-      *levels is a 0-terminated list of item numbers,
-      *msgbuf contains an error message, whose format is:
-     "must be <typename1>, not <typename2>", where:
-        <typename1> is the name of the expected type, and
-        <typename2> is the name of the actual type,
-      and msgbuf is returned.
-*/
-
-static char *
-converttuple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
-             int *levels, char *msgbuf, size_t bufsize, int toplevel,
-             PyObject **freelist)
-{
-    int level = 0;
-    int n = 0;
-    const char *format = *p_format;
-    int i;
-
-    for (;;) {
-        int c = *format++;
-        if (c == '(') {
-            if (level == 0)
-                n++;
-            level++;
-        }
-        else if (c == ')') {
-            if (level == 0)
-                break;
-            level--;
-        }
-        else if (c == ':' || c == ';' || c == '\0')
-            break;
-        else if (level == 0 && isalpha(Py_CHARMASK(c)))
-            n++;
-    }
-
-    if (!PySequence_Check(arg) || PyString_Check(arg)) {
-        levels[0] = 0;
-        PyOS_snprintf(msgbuf, bufsize,
-                      toplevel ? "expected %d arguments, not %.50s" :
-                      "must be %d-item sequence, not %.50s",
-                  n,
-                  arg == Py_None ? "None" : arg->ob_type->tp_name);
-        return msgbuf;
-    }
-
-    if ((i = PySequence_Size(arg)) != n) {
-        levels[0] = 0;
-        PyOS_snprintf(msgbuf, bufsize,
-                      toplevel ? "expected %d arguments, not %d" :
-                     "must be sequence of length %d, not %d",
-                  n, i);
-        return msgbuf;
-    }
-
-    format = *p_format;
-    for (i = 0; i < n; i++) {
-        char *msg;
-        PyObject *item;
-        item = PySequence_GetItem(arg, i);
-        if (item == NULL) {
-            PyErr_Clear();
-            levels[0] = i+1;
-            levels[1] = 0;
-            strncpy(msgbuf, "is not retrievable", bufsize);
-            return msgbuf;
-        }
-        msg = convertitem(item, &format, p_va, flags, levels+1,
-                          msgbuf, bufsize, freelist);
-        /* PySequence_GetItem calls tp->sq_item, which INCREFs */
-        Py_XDECREF(item);
-        if (msg != NULL) {
-            levels[0] = i+1;
-            return msg;
-        }
-    }
-
-    *p_format = format;
-    return NULL;
-}
-
-
-/* Convert a single item. */
-
-static char *
-convertitem(PyObject *arg, const char **p_format, va_list *p_va, int flags,
-            int *levels, char *msgbuf, size_t bufsize, PyObject **freelist)
-{
-    char *msg;
-    const char *format = *p_format;
-
-    if (*format == '(' /* ')' */) {
-        format++;
-        msg = converttuple(arg, &format, p_va, flags, levels, msgbuf,
-                           bufsize, 0, freelist);
-        if (msg == NULL)
-            format++;
-    }
-    else {
-        msg = convertsimple(arg, &format, p_va, flags,
-                            msgbuf, bufsize, freelist);
-        if (msg != NULL)
-            levels[0] = 0;
-    }
-    if (msg == NULL)
-        *p_format = format;
-    return msg;
-}
-
-
-
-#define UNICODE_DEFAULT_ENCODING(arg) \
-    _PyUnicode_AsDefaultEncodedString(arg, NULL)
-
-/* Format an error message generated by convertsimple(). */
-
-static char *
-converterr(const char *expected, PyObject *arg, char *msgbuf, size_t bufsize)
-{
-    assert(expected != NULL);
-    assert(arg != NULL);
-    PyOS_snprintf(msgbuf, bufsize,
-                  "must be %.50s, not %.50s", expected,
-                  arg == Py_None ? "None" : arg->ob_type->tp_name);
-    return msgbuf;
-}
-
-#define CONV_UNICODE "(unicode conversion error)"
-
-/* explicitly check for float arguments when integers are expected.  For now
- * signal a warning.  Returns true if an exception was raised. */
-static int
-float_argument_warning(PyObject *arg)
-{
-    if (PyFloat_Check(arg) &&
-        PyErr_Warn(PyExc_DeprecationWarning,
-                   "integer argument expected, got float" ))
-        return 1;
-    else
-        return 0;
-}
-
-/* explicitly check for float arguments when integers are expected.  Raises
-   TypeError and returns true for float arguments. */
-static int
-float_argument_error(PyObject *arg)
-{
-    if (PyFloat_Check(arg)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "integer argument expected, got float");
-        return 1;
-    }
-    else
-        return 0;
-}
-
-/* Convert a non-tuple argument.  Return NULL if conversion went OK,
-   or a string with a message describing the failure.  The message is
-   formatted as "must be <desired type>, not <actual type>".
-   When failing, an exception may or may not have been raised.
-   Don't call if a tuple is expected.
-
-   When you add new format codes, please don't forget poor skipitem() below.
-*/
-
-static char *
-convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
-              char *msgbuf, size_t bufsize, PyObject **freelist)
-{
-    /* For # codes */
-#define FETCH_SIZE      int *q=NULL;Py_ssize_t *q2=NULL;\
-    if (flags & FLAG_SIZE_T) q2=va_arg(*p_va, Py_ssize_t*); \
-    else q=va_arg(*p_va, int*);
-#define STORE_SIZE(s)   \
-    if (flags & FLAG_SIZE_T) \
-        *q2=s; \
-    else { \
-        if (INT_MAX < s) { \
-            PyErr_SetString(PyExc_OverflowError, \
-                "size does not fit in an int"); \
-            return converterr("", arg, msgbuf, bufsize); \
-        } \
-        *q=s; \
-    }
-#define BUFFER_LEN      ((flags & FLAG_SIZE_T) ? *q2:*q)
-
-    const char *format = *p_format;
-    char c = *format++;
-#ifdef Py_USING_UNICODE
-    PyObject *uarg;
-#endif
-
-    switch (c) {
-
-    case 'b': { /* unsigned byte -- very short int */
-        char *p = va_arg(*p_va, char *);
-        long ival;
-        if (float_argument_error(arg))
-            return converterr("integer<b>", arg, msgbuf, bufsize);
-        ival = PyInt_AsLong(arg);
-        if (ival == -1 && PyErr_Occurred())
-            return converterr("integer<b>", arg, msgbuf, bufsize);
-        else if (ival < 0) {
-            PyErr_SetString(PyExc_OverflowError,
-            "unsigned byte integer is less than minimum");
-            return converterr("integer<b>", arg, msgbuf, bufsize);
-        }
-        else if (ival > UCHAR_MAX) {
-            PyErr_SetString(PyExc_OverflowError,
-            "unsigned byte integer is greater than maximum");
-            return converterr("integer<b>", arg, msgbuf, bufsize);
-        }
-        else
-            *p = (unsigned char) ival;
-        break;
-    }
-
-    case 'B': {/* byte sized bitfield - both signed and unsigned
-                  values allowed */
-        char *p = va_arg(*p_va, char *);
-        long ival;
-        if (float_argument_error(arg))
-            return converterr("integer<B>", arg, msgbuf, bufsize);
-        ival = PyInt_AsUnsignedLongMask(arg);
-        if (ival == -1 && PyErr_Occurred())
-            return converterr("integer<B>", arg, msgbuf, bufsize);
-        else
-            *p = (unsigned char) ival;
-        break;
-    }
-
-    case 'h': {/* signed short int */
-        short *p = va_arg(*p_va, short *);
-        long ival;
-        if (float_argument_error(arg))
-            return converterr("integer<h>", arg, msgbuf, bufsize);
-        ival = PyInt_AsLong(arg);
-        if (ival == -1 && PyErr_Occurred())
-            return converterr("integer<h>", arg, msgbuf, bufsize);
-        else if (ival < SHRT_MIN) {
-            PyErr_SetString(PyExc_OverflowError,
-            "signed short integer is less than minimum");
-            return converterr("integer<h>", arg, msgbuf, bufsize);
-        }
-        else if (ival > SHRT_MAX) {
-            PyErr_SetString(PyExc_OverflowError,
-            "signed short integer is greater than maximum");
-            return converterr("integer<h>", arg, msgbuf, bufsize);
-        }
-        else
-            *p = (short) ival;
-        break;
-    }
-
-    case 'H': { /* short int sized bitfield, both signed and
-                   unsigned allowed */
-        unsigned short *p = va_arg(*p_va, unsigned short *);
-        long ival;
-        if (float_argument_error(arg))
-            return converterr("integer<H>", arg, msgbuf, bufsize);
-        ival = PyInt_AsUnsignedLongMask(arg);
-        if (ival == -1 && PyErr_Occurred())
-            return converterr("integer<H>", arg, msgbuf, bufsize);
-        else
-            *p = (unsigned short) ival;
-        break;
-    }
-
-    case 'i': {/* signed int */
-        int *p = va_arg(*p_va, int *);
-        long ival;
-        if (float_argument_error(arg))
-            return converterr("integer<i>", arg, msgbuf, bufsize);
-        ival = PyInt_AsLong(arg);
-        if (ival == -1 && PyErr_Occurred())
-            return converterr("integer<i>", arg, msgbuf, bufsize);
-        else if (ival > INT_MAX) {
-            PyErr_SetString(PyExc_OverflowError,
-                "signed integer is greater than maximum");
-            return converterr("integer<i>", arg, msgbuf, bufsize);
-        }
-        else if (ival < INT_MIN) {
-            PyErr_SetString(PyExc_OverflowError,
-                "signed integer is less than minimum");
-            return converterr("integer<i>", arg, msgbuf, bufsize);
-        }
-        else
-            *p = ival;
-        break;
-    }
-
-    case 'I': { /* int sized bitfield, both signed and
-                   unsigned allowed */
-        unsigned int *p = va_arg(*p_va, unsigned int *);
-        unsigned int ival;
-        if (float_argument_error(arg))
-            return converterr("integer<I>", arg, msgbuf, bufsize);
-        ival = (unsigned int)PyInt_AsUnsignedLongMask(arg);
-        if (ival == (unsigned int)-1 && PyErr_Occurred())
-            return converterr("integer<I>", arg, msgbuf, bufsize);
-        else
-            *p = ival;
-        break;
-    }
-
-    case 'n': /* Py_ssize_t */
-#if SIZEOF_SIZE_T != SIZEOF_LONG
-    {
-        Py_ssize_t *p = va_arg(*p_va, Py_ssize_t *);
-        Py_ssize_t ival;
-        if (float_argument_error(arg))
-            return converterr("integer<n>", arg, msgbuf, bufsize);
-        ival = PyInt_AsSsize_t(arg);
-        if (ival == -1 && PyErr_Occurred())
-            return converterr("integer<n>", arg, msgbuf, bufsize);
-        *p = ival;
-        break;
-    }
-#endif
-    /* Fall through from 'n' to 'l' if Py_ssize_t is int */
-    case 'l': {/* long int */
-        long *p = va_arg(*p_va, long *);
-        long ival;
-        if (float_argument_error(arg))
-            return converterr("integer<l>", arg, msgbuf, bufsize);
-        ival = PyInt_AsLong(arg);
-        if (ival == -1 && PyErr_Occurred())
-            return converterr("integer<l>", arg, msgbuf, bufsize);
-        else
-            *p = ival;
-        break;
-    }
-
-    case 'k': { /* long sized bitfield */
-        unsigned long *p = va_arg(*p_va, unsigned long *);
-        unsigned long ival;
-        if (PyInt_Check(arg))
-            ival = PyInt_AsUnsignedLongMask(arg);
-        else if (PyLong_Check(arg))
-            ival = PyLong_AsUnsignedLongMask(arg);
-        else
-            return converterr("integer<k>", arg, msgbuf, bufsize);
-        *p = ival;
-        break;
-    }
-
-#ifdef HAVE_LONG_LONG
-    case 'L': {/* PY_LONG_LONG */
-        PY_LONG_LONG *p = va_arg( *p_va, PY_LONG_LONG * );
-        PY_LONG_LONG ival;
-        if (float_argument_warning(arg))
-            return converterr("long<L>", arg, msgbuf, bufsize);
-        ival = PyLong_AsLongLong(arg);
-        if (ival == (PY_LONG_LONG)-1 && PyErr_Occurred() ) {
-            return converterr("long<L>", arg, msgbuf, bufsize);
-        } else {
-            *p = ival;
-        }
-        break;
-    }
-
-    case 'K': { /* long long sized bitfield */
-        unsigned PY_LONG_LONG *p = va_arg(*p_va, unsigned PY_LONG_LONG *);
-        unsigned PY_LONG_LONG ival;
-        if (PyInt_Check(arg))
-            ival = PyInt_AsUnsignedLongMask(arg);
-        else if (PyLong_Check(arg))
-            ival = PyLong_AsUnsignedLongLongMask(arg);
-        else
-            return converterr("integer<K>", arg, msgbuf, bufsize);
-        *p = ival;
-        break;
-    }
-#endif
-
-    case 'f': {/* float */
-        float *p = va_arg(*p_va, float *);
-        double dval = PyFloat_AsDouble(arg);
-        if (PyErr_Occurred())
-            return converterr("float<f>", arg, msgbuf, bufsize);
-        else
-            *p = (float) dval;
-        break;
-    }
-
-    case 'd': {/* double */
-        double *p = va_arg(*p_va, double *);
-        double dval = PyFloat_AsDouble(arg);
-        if (PyErr_Occurred())
-            return converterr("float<d>", arg, msgbuf, bufsize);
-        else
-            *p = dval;
-        break;
-    }
-
-#ifndef WITHOUT_COMPLEX
-    case 'D': {/* complex double */
-        Py_complex *p = va_arg(*p_va, Py_complex *);
-        Py_complex cval;
-        cval = PyComplex_AsCComplex(arg);
-        if (PyErr_Occurred())
-            return converterr("complex<D>", arg, msgbuf, bufsize);
-        else
-            *p = cval;
-        break;
-    }
-#endif /* WITHOUT_COMPLEX */
-
-    case 'c': {/* char */
-        char *p = va_arg(*p_va, char *);
-        if (PyString_Check(arg) && PyString_Size(arg) == 1)
-            *p = PyString_AS_STRING(arg)[0];
-        else
-            return converterr("char", arg, msgbuf, bufsize);
-        break;
-    }
-
-    case 's': {/* string */
-        if (*format == '*') {
-            Py_buffer *p = (Py_buffer *)va_arg(*p_va, Py_buffer *);
-
-            if (PyString_Check(arg)) {
-                PyBuffer_FillInfo(p, arg,
-                                  PyString_AS_STRING(arg), PyString_GET_SIZE(arg),
-                                  1, 0);
-            }
-#ifdef Py_USING_UNICODE
-            else if (PyUnicode_Check(arg)) {
-                uarg = UNICODE_DEFAULT_ENCODING(arg);
-                if (uarg == NULL)
-                    return converterr(CONV_UNICODE,
-                                      arg, msgbuf, bufsize);
-                PyBuffer_FillInfo(p, arg,
-                                  PyString_AS_STRING(uarg), PyString_GET_SIZE(uarg),
-                                  1, 0);
-            }
-#endif
-            else { /* any buffer-like object */
-                char *buf;
-                if (getbuffer(arg, p, &buf) < 0)
-                    return converterr(buf, arg, msgbuf, bufsize);
-            }
-            if (addcleanup(p, freelist, cleanup_buffer)) {
-                return converterr(
-                    "(cleanup problem)",
-                    arg, msgbuf, bufsize);
-            }
-            format++;
-        } else if (*format == '#') {
-            void **p = (void **)va_arg(*p_va, char **);
-            FETCH_SIZE;
-
-            if (PyString_Check(arg)) {
-                *p = PyString_AS_STRING(arg);
-                STORE_SIZE(PyString_GET_SIZE(arg));
-            }
-#ifdef Py_USING_UNICODE
-            else if (PyUnicode_Check(arg)) {
-                uarg = UNICODE_DEFAULT_ENCODING(arg);
-                if (uarg == NULL)
-                    return converterr(CONV_UNICODE,
-                                      arg, msgbuf, bufsize);
-                *p = PyString_AS_STRING(uarg);
-                STORE_SIZE(PyString_GET_SIZE(uarg));
-            }
-#endif
-            else { /* any buffer-like object */
-                char *buf;
-                Py_ssize_t count = convertbuffer(arg, p, &buf);
-                if (count < 0)
-                    return converterr(buf, arg, msgbuf, bufsize);
-                STORE_SIZE(count);
-            }
-            format++;
-        } else {
-            char **p = va_arg(*p_va, char **);
-
-            if (PyString_Check(arg))
-                *p = PyString_AS_STRING(arg);
-#ifdef Py_USING_UNICODE
-            else if (PyUnicode_Check(arg)) {
-                uarg = UNICODE_DEFAULT_ENCODING(arg);
-                if (uarg == NULL)
-                    return converterr(CONV_UNICODE,
-                                      arg, msgbuf, bufsize);
-                *p = PyString_AS_STRING(uarg);
-            }
-#endif
-            else
-                return converterr("string", arg, msgbuf, bufsize);
-            if ((Py_ssize_t)strlen(*p) != PyString_Size(arg))
-                return converterr("string without null bytes",
-                                  arg, msgbuf, bufsize);
-        }
-        break;
-    }
-
-    case 'z': {/* string, may be NULL (None) */
-        if (*format == '*') {
-            Py_buffer *p = (Py_buffer *)va_arg(*p_va, Py_buffer *);
-
-            if (arg == Py_None)
-                PyBuffer_FillInfo(p, NULL, NULL, 0, 1, 0);
-            else if (PyString_Check(arg)) {
-                PyBuffer_FillInfo(p, arg,
-                                  PyString_AS_STRING(arg), PyString_GET_SIZE(arg),
-                                  1, 0);
-            }
-#ifdef Py_USING_UNICODE
-            else if (PyUnicode_Check(arg)) {
-                uarg = UNICODE_DEFAULT_ENCODING(arg);
-                if (uarg == NULL)
-                    return converterr(CONV_UNICODE,
-                                      arg, msgbuf, bufsize);
-                PyBuffer_FillInfo(p, arg,
-                                  PyString_AS_STRING(uarg), PyString_GET_SIZE(uarg),
-                                  1, 0);
-            }
-#endif
-            else { /* any buffer-like object */
-                char *buf;
-                if (getbuffer(arg, p, &buf) < 0)
-                    return converterr(buf, arg, msgbuf, bufsize);
-            }
-            if (addcleanup(p, freelist, cleanup_buffer)) {
-                return converterr(
-                    "(cleanup problem)",
-                    arg, msgbuf, bufsize);
-            }
-            format++;
-        } else if (*format == '#') { /* any buffer-like object */
-            void **p = (void **)va_arg(*p_va, char **);
-            FETCH_SIZE;
-
-            if (arg == Py_None) {
-                *p = 0;
-                STORE_SIZE(0);
-            }
-            else if (PyString_Check(arg)) {
-                *p = PyString_AS_STRING(arg);
-                STORE_SIZE(PyString_GET_SIZE(arg));
-            }
-#ifdef Py_USING_UNICODE
-            else if (PyUnicode_Check(arg)) {
-                uarg = UNICODE_DEFAULT_ENCODING(arg);
-                if (uarg == NULL)
-                    return converterr(CONV_UNICODE,
-                                      arg, msgbuf, bufsize);
-                *p = PyString_AS_STRING(uarg);
-                STORE_SIZE(PyString_GET_SIZE(uarg));
-            }
-#endif
-            else { /* any buffer-like object */
-                char *buf;
-                Py_ssize_t count = convertbuffer(arg, p, &buf);
-                if (count < 0)
-                    return converterr(buf, arg, msgbuf, bufsize);
-                STORE_SIZE(count);
-            }
-            format++;
-        } else {
-            char **p = va_arg(*p_va, char **);
-
-            if (arg == Py_None)
-                *p = 0;
-            else if (PyString_Check(arg))
-                *p = PyString_AS_STRING(arg);
-#ifdef Py_USING_UNICODE
-            else if (PyUnicode_Check(arg)) {
-                uarg = UNICODE_DEFAULT_ENCODING(arg);
-                if (uarg == NULL)
-                    return converterr(CONV_UNICODE,
-                                      arg, msgbuf, bufsize);
-                *p = PyString_AS_STRING(uarg);
-            }
-#endif
-            else
-                return converterr("string or None",
-                                  arg, msgbuf, bufsize);
-            if (*format == '#') {
-                FETCH_SIZE;
-                assert(0); /* XXX redundant with if-case */
-                if (arg == Py_None) {
-                    STORE_SIZE(0);
-                } else {
-                    STORE_SIZE(PyString_Size(arg));
-                }
-                format++;
-            }
-            else if (*p != NULL &&
-                     (Py_ssize_t)strlen(*p) != PyString_Size(arg))
-                return converterr(
-                    "string without null bytes or None",
-                    arg, msgbuf, bufsize);
-        }
-        break;
-    }
-
-    case 'e': {/* encoded string */
-        char **buffer;
-        const char *encoding;
-        PyObject *s;
-        Py_ssize_t size;
-        int recode_strings;
-
-        /* Get 'e' parameter: the encoding name */
-        encoding = (const char *)va_arg(*p_va, const char *);
-#ifdef Py_USING_UNICODE
-        if (encoding == NULL)
-            encoding = PyUnicode_GetDefaultEncoding();
-#endif
-
-        /* Get output buffer parameter:
-           's' (recode all objects via Unicode) or
-           't' (only recode non-string objects)
-        */
-        if (*format == 's')
-            recode_strings = 1;
-        else if (*format == 't')
-            recode_strings = 0;
-        else
-            return converterr(
-                "(unknown parser marker combination)",
-                arg, msgbuf, bufsize);
-        buffer = (char **)va_arg(*p_va, char **);
-        format++;
-        if (buffer == NULL)
-            return converterr("(buffer is NULL)",
-                              arg, msgbuf, bufsize);
-
-        /* Encode object */
-        if (!recode_strings && PyString_Check(arg)) {
-            s = arg;
-            Py_INCREF(s);
-        }
-        else {
-#ifdef Py_USING_UNICODE
-            PyObject *u;
-
-            /* Convert object to Unicode */
-            u = PyUnicode_FromObject(arg);
-            if (u == NULL)
-                return converterr(
-                    "string or unicode or text buffer",
-                    arg, msgbuf, bufsize);
-
-            /* Encode object; use default error handling */
-            s = PyUnicode_AsEncodedString(u,
-                                          encoding,
-                                          NULL);
-            Py_DECREF(u);
-            if (s == NULL)
-                return converterr("(encoding failed)",
-                                  arg, msgbuf, bufsize);
-            if (!PyString_Check(s)) {
-                Py_DECREF(s);
-                return converterr(
-                    "(encoder failed to return a string)",
-                    arg, msgbuf, bufsize);
-            }
-#else
-            return converterr("string<e>", arg, msgbuf, bufsize);
-#endif
-        }
-        size = PyString_GET_SIZE(s);
-
-        /* Write output; output is guaranteed to be 0-terminated */
-        if (*format == '#') {
-            /* Using buffer length parameter '#':
-
-               - if *buffer is NULL, a new buffer of the
-               needed size is allocated and the data
-               copied into it; *buffer is updated to point
-               to the new buffer; the caller is
-               responsible for PyMem_Free()ing it after
-               usage
-
-               - if *buffer is not NULL, the data is
-               copied to *buffer; *buffer_len has to be
-               set to the size of the buffer on input;
-               buffer overflow is signalled with an error;
-               buffer has to provide enough room for the
-               encoded string plus the trailing 0-byte
-
-               - in both cases, *buffer_len is updated to
-               the size of the buffer /excluding/ the
-               trailing 0-byte
-
-            */
-            FETCH_SIZE;
-
-            format++;
-            if (q == NULL && q2 == NULL) {
-                Py_DECREF(s);
-                return converterr(
-                    "(buffer_len is NULL)",
-                    arg, msgbuf, bufsize);
-            }
-            if (*buffer == NULL) {
-                *buffer = PyMem_NEW(char, size + 1);
-                if (*buffer == NULL) {
-                    Py_DECREF(s);
-                    return converterr(
-                        "(memory error)",
-                        arg, msgbuf, bufsize);
-                }
-                if (addcleanup(*buffer, freelist, cleanup_ptr)) {
-                    Py_DECREF(s);
-                    return converterr(
-                        "(cleanup problem)",
-                        arg, msgbuf, bufsize);
-                }
-            } else {
-                if (size + 1 > BUFFER_LEN) {
-                    Py_DECREF(s);
-                    return converterr(
-                        "(buffer overflow)",
-                        arg, msgbuf, bufsize);
-                }
-            }
-            memcpy(*buffer,
-                   PyString_AS_STRING(s),
-                   size + 1);
-            STORE_SIZE(size);
-        } else {
-            /* Using a 0-terminated buffer:
-
-               - the encoded string has to be 0-terminated
-               for this variant to work; if it is not, an
-               error raised
-
-               - a new buffer of the needed size is
-               allocated and the data copied into it;
-               *buffer is updated to point to the new
-               buffer; the caller is responsible for
-               PyMem_Free()ing it after usage
-
-            */
-            if ((Py_ssize_t)strlen(PyString_AS_STRING(s))
-                                                    != size) {
-                Py_DECREF(s);
-                return converterr(
-                    "encoded string without NULL bytes",
-                    arg, msgbuf, bufsize);
-            }
-            *buffer = PyMem_NEW(char, size + 1);
-            if (*buffer == NULL) {
-                Py_DECREF(s);
-                return converterr("(memory error)",
-                                  arg, msgbuf, bufsize);
-            }
-            if (addcleanup(*buffer, freelist, cleanup_ptr)) {
-                Py_DECREF(s);
-                return converterr("(cleanup problem)",
-                                arg, msgbuf, bufsize);
-            }
-            memcpy(*buffer,
-                   PyString_AS_STRING(s),
-                   size + 1);
-        }
-        Py_DECREF(s);
-        break;
-    }
-
-#ifdef Py_USING_UNICODE
-    case 'u': {/* raw unicode buffer (Py_UNICODE *) */
-        if (*format == '#') { /* any buffer-like object */
-            void **p = (void **)va_arg(*p_va, char **);
-            FETCH_SIZE;
-            if (PyUnicode_Check(arg)) {
-                *p = PyUnicode_AS_UNICODE(arg);
-                STORE_SIZE(PyUnicode_GET_SIZE(arg));
-            }
-            else {
-                return converterr("cannot convert raw buffers",
-                                  arg, msgbuf, bufsize);
-            }
-            format++;
-        } else {
-            Py_UNICODE **p = va_arg(*p_va, Py_UNICODE **);
-            if (PyUnicode_Check(arg))
-                *p = PyUnicode_AS_UNICODE(arg);
-            else
-                return converterr("unicode", arg, msgbuf, bufsize);
-        }
-        break;
-    }
-#endif
-
-    case 'S': { /* string object */
-        PyObject **p = va_arg(*p_va, PyObject **);
-        if (PyString_Check(arg))
-            *p = arg;
-        else
-            return converterr("string", arg, msgbuf, bufsize);
-        break;
-    }
-
-#ifdef Py_USING_UNICODE
-    case 'U': { /* Unicode object */
-        PyObject **p = va_arg(*p_va, PyObject **);
-        if (PyUnicode_Check(arg))
-            *p = arg;
-        else
-            return converterr("unicode", arg, msgbuf, bufsize);
-        break;
-    }
-#endif
-
-    case 'O': { /* object */
-        PyTypeObject *type;
-        PyObject **p;
-        if (*format == '!') {
-            type = va_arg(*p_va, PyTypeObject*);
-            p = va_arg(*p_va, PyObject **);
-            format++;
-            if (PyType_IsSubtype(arg->ob_type, type))
-                *p = arg;
-            else
-                return converterr(type->tp_name, arg, msgbuf, bufsize);
-
-        }
-        else if (*format == '?') {
-            inquiry pred = va_arg(*p_va, inquiry);
-            p = va_arg(*p_va, PyObject **);
-            format++;
-            if ((*pred)(arg))
-                *p = arg;
-            else
-                return converterr("(unspecified)",
-                                  arg, msgbuf, bufsize);
-
-        }
-        else if (*format == '&') {
-            typedef int (*converter)(PyObject *, void *);
-            converter convert = va_arg(*p_va, converter);
-            void *addr = va_arg(*p_va, void *);
-            format++;
-            if (! (*convert)(arg, addr))
-                return converterr("(unspecified)",
-                                  arg, msgbuf, bufsize);
-        }
-        else {
-            p = va_arg(*p_va, PyObject **);
-            *p = arg;
-        }
-        break;
-    }
-
-
-    case 'w': { /* memory buffer, read-write access */
-        void **p = va_arg(*p_va, void **);
-        void *res;
-        PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
-        Py_ssize_t count;
-
-        if (pb && pb->bf_releasebuffer && *format != '*')
-            /* Buffer must be released, yet caller does not use
-               the Py_buffer protocol. */
-            return converterr("pinned buffer", arg, msgbuf, bufsize);
-
-        if (pb && pb->bf_getbuffer && *format == '*') {
-            /* Caller is interested in Py_buffer, and the object
-               supports it directly. */
-            format++;
-            if (pb->bf_getbuffer(arg, (Py_buffer*)p, PyBUF_WRITABLE) < 0) {
-                PyErr_Clear();
-                return converterr("read-write buffer", arg, msgbuf, bufsize);
-            }
-            if (addcleanup(p, freelist, cleanup_buffer)) {
-                return converterr(
-                    "(cleanup problem)",
-                    arg, msgbuf, bufsize);
-            }
-            if (!PyBuffer_IsContiguous((Py_buffer*)p, 'C'))
-                return converterr("contiguous buffer", arg, msgbuf, bufsize);
-            break;
-        }
-
-        if (pb == NULL ||
-            pb->bf_getwritebuffer == NULL ||
-            pb->bf_getsegcount == NULL)
-            return converterr("read-write buffer", arg, msgbuf, bufsize);
-        if ((*pb->bf_getsegcount)(arg, NULL) != 1)
-            return converterr("single-segment read-write buffer",
-                              arg, msgbuf, bufsize);
-        if ((count = pb->bf_getwritebuffer(arg, 0, &res)) < 0)
-            return converterr("(unspecified)", arg, msgbuf, bufsize);
-        if (*format == '*') {
-            PyBuffer_FillInfo((Py_buffer*)p, arg, res, count, 1, 0);
-            format++;
-        }
-        else {
-            *p = res;
-            if (*format == '#') {
-                FETCH_SIZE;
-                STORE_SIZE(count);
-                format++;
-            }
-        }
-        break;
-    }
-
-    case 't': { /* 8-bit character buffer, read-only access */
-        char **p = va_arg(*p_va, char **);
-        PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
-        Py_ssize_t count;
-
-        if (*format++ != '#')
-            return converterr(
-                "invalid use of 't' format character",
-                arg, msgbuf, bufsize);
-        if (!PyType_HasFeature(arg->ob_type,
-                               Py_TPFLAGS_HAVE_GETCHARBUFFER) ||
-            pb == NULL || pb->bf_getcharbuffer == NULL ||
-            pb->bf_getsegcount == NULL)
-            return converterr(
-                "string or read-only character buffer",
-                arg, msgbuf, bufsize);
-
-        if (pb->bf_getsegcount(arg, NULL) != 1)
-            return converterr(
-                "string or single-segment read-only buffer",
-                arg, msgbuf, bufsize);
-
-        if (pb->bf_releasebuffer)
-            return converterr(
-                "string or pinned buffer",
-                arg, msgbuf, bufsize);
-
-        count = pb->bf_getcharbuffer(arg, 0, p);
-        if (count < 0)
-            return converterr("(unspecified)", arg, msgbuf, bufsize);
-        {
-            FETCH_SIZE;
-            STORE_SIZE(count);
-        }
-        break;
-    }
-
-    default:
-        return converterr("impossible<bad format char>", arg, msgbuf, bufsize);
-
-    }
-
-    *p_format = format;
-    return NULL;
-}
-
-static Py_ssize_t
-convertbuffer(PyObject *arg, void **p, char **errmsg)
-{
-    PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
-    Py_ssize_t count;
-    if (pb == NULL ||
-        pb->bf_getreadbuffer == NULL ||
-        pb->bf_getsegcount == NULL ||
-        pb->bf_releasebuffer != NULL) {
-        *errmsg = "string or read-only buffer";
-        return -1;
-    }
-    if ((*pb->bf_getsegcount)(arg, NULL) != 1) {
-        *errmsg = "string or single-segment read-only buffer";
-        return -1;
-    }
-    if ((count = (*pb->bf_getreadbuffer)(arg, 0, p)) < 0) {
-        *errmsg = "(unspecified)";
-    }
-    return count;
-}
-
-static int
-getbuffer(PyObject *arg, Py_buffer *view, char **errmsg)
-{
-    void *buf;
-    Py_ssize_t count;
-    PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
-    if (pb == NULL) {
-        *errmsg = "string or buffer";
-        return -1;
-    }
-    if (pb->bf_getbuffer) {
-        if (pb->bf_getbuffer(arg, view, 0) < 0) {
-            *errmsg = "convertible to a buffer";
-            return -1;
-        }
-        if (!PyBuffer_IsContiguous(view, 'C')) {
-            *errmsg = "contiguous buffer";
-            return -1;
-        }
-        return 0;
-    }
-
-    count = convertbuffer(arg, &buf, errmsg);
-    if (count < 0) {
-        *errmsg = "convertible to a buffer";
-        return count;
-    }
-    PyBuffer_FillInfo(view, NULL, buf, count, 1, 0);
-    return 0;
-}
-
-/* Support for keyword arguments donated by
-   Geoff Philbrick <philbric@delphi.hks.com> */
-
-/* Return false (0) for error, else true. */
-int
-PyArg_ParseTupleAndKeywords(PyObject *args,
-                            PyObject *keywords,
-                            const char *format,
-                            char **kwlist, ...)
-{
-    int retval;
-    va_list va;
-
-    if ((args == NULL || !PyTuple_Check(args)) ||
-        (keywords != NULL && !PyDict_Check(keywords)) ||
-        format == NULL ||
-        kwlist == NULL)
-    {
-        PyErr_BadInternalCall();
-        return 0;
-    }
-
-    va_start(va, kwlist);
-    retval = vgetargskeywords(args, keywords, format, kwlist, &va, 0);
-    va_end(va);
-    return retval;
-}
-
-int
-_PyArg_ParseTupleAndKeywords_SizeT(PyObject *args,
-                                  PyObject *keywords,
-                                  const char *format,
-                                  char **kwlist, ...)
-{
-    int retval;
-    va_list va;
-
-    if ((args == NULL || !PyTuple_Check(args)) ||
-        (keywords != NULL && !PyDict_Check(keywords)) ||
-        format == NULL ||
-        kwlist == NULL)
-    {
-        PyErr_BadInternalCall();
-        return 0;
-    }
-
-    va_start(va, kwlist);
-    retval = vgetargskeywords(args, keywords, format,
-                              kwlist, &va, FLAG_SIZE_T);
-    va_end(va);
-    return retval;
-}
-
-
-int
-PyArg_VaParseTupleAndKeywords(PyObject *args,
-                              PyObject *keywords,
-                              const char *format,
-                              char **kwlist, va_list va)
-{
-    int retval;
-    va_list lva;
-
-    if ((args == NULL || !PyTuple_Check(args)) ||
-        (keywords != NULL && !PyDict_Check(keywords)) ||
-        format == NULL ||
-        kwlist == NULL)
-    {
-        PyErr_BadInternalCall();
-        return 0;
-    }
-
-#ifdef VA_LIST_IS_ARRAY
-    memcpy(lva, va, sizeof(va_list));
-#else
-#ifdef __va_copy
-    __va_copy(lva, va);
-#else
-    lva = va;
-#endif
-#endif
-
-    retval = vgetargskeywords(args, keywords, format, kwlist, &lva, 0);
-    return retval;
-}
-
-int
-_PyArg_VaParseTupleAndKeywords_SizeT(PyObject *args,
-                                    PyObject *keywords,
-                                    const char *format,
-                                    char **kwlist, va_list va)
-{
-    int retval;
-    va_list lva;
-
-    if ((args == NULL || !PyTuple_Check(args)) ||
-        (keywords != NULL && !PyDict_Check(keywords)) ||
-        format == NULL ||
-        kwlist == NULL)
-    {
-        PyErr_BadInternalCall();
-        return 0;
-    }
-
-#ifdef VA_LIST_IS_ARRAY
-    memcpy(lva, va, sizeof(va_list));
-#else
-#ifdef __va_copy
-    __va_copy(lva, va);
-#else
-    lva = va;
-#endif
-#endif
-
-    retval = vgetargskeywords(args, keywords, format,
-                              kwlist, &lva, FLAG_SIZE_T);
-    return retval;
-}
-
-#define IS_END_OF_FORMAT(c) (c == '\0' || c == ';' || c == ':')
-
-static int
-vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
-                 char **kwlist, va_list *p_va, int flags)
-{
-    char msgbuf[512];
-    int levels[32];
-    const char *fname, *msg, *custom_msg, *keyword;
-    int min = INT_MAX;
-    int i, len, nargs, nkeywords;
-    PyObject *freelist = NULL, *current_arg;
-
-    assert(args != NULL && PyTuple_Check(args));
-    assert(keywords == NULL || PyDict_Check(keywords));
-    assert(format != NULL);
-    assert(kwlist != NULL);
-    assert(p_va != NULL);
-
-    /* grab the function name or custom error msg first (mutually exclusive) */
-    fname = strchr(format, ':');
-    if (fname) {
-        fname++;
-        custom_msg = NULL;
-    }
-    else {
-        custom_msg = strchr(format,';');
-        if (custom_msg)
-            custom_msg++;
-    }
-
-    /* scan kwlist and get greatest possible nbr of args */
-    for (len=0; kwlist[len]; len++)
-        continue;
-
-    nargs = PyTuple_GET_SIZE(args);
-    nkeywords = (keywords == NULL) ? 0 : PyDict_Size(keywords);
-    if (nargs + nkeywords > len) {
-        PyErr_Format(PyExc_TypeError, "%s%s takes at most %d "
-                     "argument%s (%d given)",
-                     (fname == NULL) ? "function" : fname,
-                     (fname == NULL) ? "" : "()",
-                     len,
-                     (len == 1) ? "" : "s",
-                     nargs + nkeywords);
-        return 0;
-    }
-
-    /* convert tuple args and keyword args in same loop, using kwlist to drive process */
-    for (i = 0; i < len; i++) {
-        keyword = kwlist[i];
-        if (*format == '|') {
-            min = i;
-            format++;
-        }
-        if (IS_END_OF_FORMAT(*format)) {
-            PyErr_Format(PyExc_RuntimeError,
-                         "More keyword list entries (%d) than "
-                         "format specifiers (%d)", len, i);
-            return cleanreturn(0, freelist);
-        }
-        current_arg = NULL;
-        if (nkeywords) {
-            current_arg = PyDict_GetItemString(keywords, keyword);
-        }
-        if (current_arg) {
-            --nkeywords;
-            if (i < nargs) {
-                /* arg present in tuple and in dict */
-                PyErr_Format(PyExc_TypeError,
-                             "Argument given by name ('%s') "
-                             "and position (%d)",
-                             keyword, i+1);
-                return cleanreturn(0, freelist);
-            }
-        }
-        else if (nkeywords && PyErr_Occurred())
-            return cleanreturn(0, freelist);
-        else if (i < nargs)
-            current_arg = PyTuple_GET_ITEM(args, i);
-
-        if (current_arg) {
-            msg = convertitem(current_arg, &format, p_va, flags,
-                levels, msgbuf, sizeof(msgbuf), &freelist);
-            if (msg) {
-                seterror(i+1, msg, levels, fname, custom_msg);
-                return cleanreturn(0, freelist);
-            }
-            continue;
-        }
-
-        if (i < min) {
-            PyErr_Format(PyExc_TypeError, "Required argument "
-                         "'%s' (pos %d) not found",
-                         keyword, i+1);
-            return cleanreturn(0, freelist);
-        }
-        /* current code reports success when all required args
-         * fulfilled and no keyword args left, with no further
-         * validation. XXX Maybe skip this in debug build ?
-         */
-        if (!nkeywords)
-            return cleanreturn(1, freelist);
-
-        /* We are into optional args, skip thru to any remaining
-         * keyword args */
-        msg = skipitem(&format, p_va, flags);
-        if (msg) {
-            PyErr_Format(PyExc_RuntimeError, "%s: '%s'", msg,
-                         format);
-            return cleanreturn(0, freelist);
-        }
-    }
-
-    if (!IS_END_OF_FORMAT(*format) && *format != '|') {
-        PyErr_Format(PyExc_RuntimeError,
-            "more argument specifiers than keyword list entries "
-            "(remaining format:'%s')", format);
-        return cleanreturn(0, freelist);
-    }
-
-    /* make sure there are no extraneous keyword arguments */
-    if (nkeywords > 0) {
-        PyObject *key, *value;
-        Py_ssize_t pos = 0;
-        while (PyDict_Next(keywords, &pos, &key, &value)) {
-            int match = 0;
-            char *ks;
-            if (!PyString_Check(key)) {
-                PyErr_SetString(PyExc_TypeError,
-                                "keywords must be strings");
-                return cleanreturn(0, freelist);
-            }
-            ks = PyString_AsString(key);
-            for (i = 0; i < len; i++) {
-                if (!strcmp(ks, kwlist[i])) {
-                    match = 1;
-                    break;
-                }
-            }
-            if (!match) {
-                PyErr_Format(PyExc_TypeError,
-                             "'%s' is an invalid keyword "
-                             "argument for this function",
-                             ks);
-                return cleanreturn(0, freelist);
-            }
-        }
-    }
-
-    return cleanreturn(1, freelist);
-}
-
-
-static char *
-skipitem(const char **p_format, va_list *p_va, int flags)
-{
-    const char *format = *p_format;
-    char c = *format++;
-
-    switch (c) {
-
-    /* simple codes
-     * The individual types (second arg of va_arg) are irrelevant */
-
-    case 'b': /* byte -- very short int */
-    case 'B': /* byte as bitfield */
-    case 'h': /* short int */
-    case 'H': /* short int as bitfield */
-    case 'i': /* int */
-    case 'I': /* int sized bitfield */
-    case 'l': /* long int */
-    case 'k': /* long int sized bitfield */
-#ifdef HAVE_LONG_LONG
-    case 'L': /* PY_LONG_LONG */
-    case 'K': /* PY_LONG_LONG sized bitfield */
-#endif
-    case 'f': /* float */
-    case 'd': /* double */
-#ifndef WITHOUT_COMPLEX
-    case 'D': /* complex double */
-#endif
-    case 'c': /* char */
-        {
-            (void) va_arg(*p_va, void *);
-            break;
-        }
-
-    case 'n': /* Py_ssize_t */
-        {
-            (void) va_arg(*p_va, Py_ssize_t *);
-            break;
-        }
-
-    /* string codes */
-
-    case 'e': /* string with encoding */
-        {
-            (void) va_arg(*p_va, const char *);
-            if (!(*format == 's' || *format == 't'))
-                /* after 'e', only 's' and 't' is allowed */
-                goto err;
-            format++;
-            /* explicit fallthrough to string cases */
-        }
-
-    case 's': /* string */
-    case 'z': /* string or None */
-#ifdef Py_USING_UNICODE
-    case 'u': /* unicode string */
-#endif
-    case 't': /* buffer, read-only */
-    case 'w': /* buffer, read-write */
-        {
-            (void) va_arg(*p_va, char **);
-            if (*format == '#') {
-                if (flags & FLAG_SIZE_T)
-                    (void) va_arg(*p_va, Py_ssize_t *);
-                else
-                    (void) va_arg(*p_va, int *);
-                format++;
-            } else if ((c == 's' || c == 'z') && *format == '*') {
-                format++;
-            }
-            break;
-        }
-
-    /* object codes */
-
-    case 'S': /* string object */
-#ifdef Py_USING_UNICODE
-    case 'U': /* unicode string object */
-#endif
-        {
-            (void) va_arg(*p_va, PyObject **);
-            break;
-        }
-
-    case 'O': /* object */
-        {
-            if (*format == '!') {
-                format++;
-                (void) va_arg(*p_va, PyTypeObject*);
-                (void) va_arg(*p_va, PyObject **);
-            }
-            else if (*format == '&') {
-                typedef int (*converter)(PyObject *, void *);
-                (void) va_arg(*p_va, converter);
-                (void) va_arg(*p_va, void *);
-                format++;
-            }
-            else {
-                (void) va_arg(*p_va, PyObject **);
-            }
-            break;
-        }
-
-    case '(':           /* bypass tuple, not handled at all previously */
-        {
-            char *msg;
-            for (;;) {
-                if (*format==')')
-                    break;
-                if (IS_END_OF_FORMAT(*format))
-                    return "Unmatched left paren in format "
-                           "string";
-                msg = skipitem(&format, p_va, flags);
-                if (msg)
-                    return msg;
-            }
-            format++;
-            break;
-        }
-
-    case ')':
-        return "Unmatched right paren in format string";
-
-    default:
-err:
-        return "impossible<bad format char>";
-
-    }
-
-    *p_format = format;
-    return NULL;
-}
-
-
-int
-PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, ...)
-{
-    Py_ssize_t i, l;
-    PyObject **o;
-    va_list vargs;
-
-#ifdef HAVE_STDARG_PROTOTYPES
-    va_start(vargs, max);
-#else
-    va_start(vargs);
-#endif
-
-    assert(min >= 0);
-    assert(min <= max);
-    if (!PyTuple_Check(args)) {
-        PyErr_SetString(PyExc_SystemError,
-            "PyArg_UnpackTuple() argument list is not a tuple");
-        return 0;
-    }
-    l = PyTuple_GET_SIZE(args);
-    if (l < min) {
-        if (name != NULL)
-            PyErr_Format(
-                PyExc_TypeError,
-                "%s expected %s%zd arguments, got %zd",
-                name, (min == max ? "" : "at least "), min, l);
-        else
-            PyErr_Format(
-                PyExc_TypeError,
-                "unpacked tuple should have %s%zd elements,"
-                " but has %zd",
-                (min == max ? "" : "at least "), min, l);
-        va_end(vargs);
-        return 0;
-    }
-    if (l > max) {
-        if (name != NULL)
-            PyErr_Format(
-                PyExc_TypeError,
-                "%s expected %s%zd arguments, got %zd",
-                name, (min == max ? "" : "at most "), max, l);
-        else
-            PyErr_Format(
-                PyExc_TypeError,
-                "unpacked tuple should have %s%zd elements,"
-                " but has %zd",
-                (min == max ? "" : "at most "), max, l);
-        va_end(vargs);
-        return 0;
-    }
-    for (i = 0; i < l; i++) {
-        o = va_arg(vargs, PyObject **);
-        *o = PyTuple_GET_ITEM(args, i);
-    }
-    va_end(vargs);
-    return 1;
-}
-
-
-/* For type constructors that don't take keyword args
- *
- * Sets a TypeError and returns 0 if the kwds dict is
- * not empty, returns 1 otherwise
- */
-int
-_PyArg_NoKeywords(const char *funcname, PyObject *kw)
-{
-    if (kw == NULL)
-        return 1;
-    if (!PyDict_CheckExact(kw)) {
-        PyErr_BadInternalCall();
-        return 0;
-    }
-    if (PyDict_Size(kw) == 0)
-        return 1;
-
-    PyErr_Format(PyExc_TypeError, "%s does not take keyword arguments",
-                    funcname);
-    return 0;
-}
-#ifdef __cplusplus
-};
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/getcompiler.c b/AppPkg/Applications/Python/Python-2.7.2/Python/getcompiler.c
deleted file mode 100644
index 33a7639..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/getcompiler.c
+++ /dev/null
@@ -1,28 +0,0 @@
-
-/* Return the compiler identification, if possible. */
-
-#include "Python.h"
-
-#ifndef COMPILER
-
-#ifdef __GNUC__
-#define COMPILER "\n[GCC " __VERSION__ "]"
-#endif
-
-#endif /* !COMPILER */
-
-#ifndef COMPILER
-
-#ifdef __cplusplus
-#define COMPILER "[C++]"
-#else
-#define COMPILER "[C]"
-#endif
-
-#endif /* !COMPILER */
-
-const char *
-Py_GetCompiler(void)
-{
-	return COMPILER;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/getcopyright.c b/AppPkg/Applications/Python/Python-2.7.2/Python/getcopyright.c
deleted file mode 100644
index 66ebc75..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/getcopyright.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Return the copyright string.  This is updated manually.
-
-    Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-*/
-
-#include "Python.h"
-
-static char cprt[] =
-"\
-Copyright (c) 2010-2011 Intel Corporation.\n\
-All Rights Reserved.\n\
-\n\
-Copyright (c) 2001-2011 Python Software Foundation.\n\
-All Rights Reserved.\n\
-\n\
-Copyright (c) 2000 BeOpen.com.\n\
-All Rights Reserved.\n\
-\n\
-Copyright (c) 1995-2001 Corporation for National Research Initiatives.\n\
-All Rights Reserved.\n\
-\n\
-Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.\n\
-All Rights Reserved.";
-
-const char *
-Py_GetCopyright(void)
-{
-  return cprt;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/getcwd.c b/AppPkg/Applications/Python/Python-2.7.2/Python/getcwd.c
deleted file mode 100644
index 54897c5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/getcwd.c
+++ /dev/null
@@ -1,82 +0,0 @@
-
-/* Two PD getcwd() implementations.
-   Author: Guido van Rossum, CWI Amsterdam, Jan 1991, <guido@cwi.nl>. */
-
-#include <stdio.h>
-#include <errno.h>
-
-#ifdef HAVE_GETWD
-
-/* Version for BSD systems -- use getwd() */
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-
-#ifndef MAXPATHLEN
-#if defined(PATH_MAX) && PATH_MAX > 1024
-#define MAXPATHLEN PATH_MAX
-#else
-#define MAXPATHLEN 1024
-#endif
-#endif
-
-extern char *getwd(char *);
-
-char *
-getcwd(char *buf, int size)
-{
-    char localbuf[MAXPATHLEN+1];
-    char *ret;
-
-    if (size <= 0) {
-        errno = EINVAL;
-        return NULL;
-    }
-    ret = getwd(localbuf);
-    if (ret != NULL && strlen(localbuf) >= (size_t)size) {
-        errno = ERANGE;
-        return NULL;
-    }
-    if (ret == NULL) {
-        errno = EACCES; /* Most likely error */
-        return NULL;
-    }
-    strncpy(buf, localbuf, size);
-    return buf;
-}
-
-#else /* !HAVE_GETWD */
-
-/* Version for really old UNIX systems -- use pipe from pwd */
-
-#ifndef PWD_CMD
-#define PWD_CMD "/bin/pwd"
-#endif
-
-char *
-getcwd(char *buf, int size)
-{
-    FILE *fp;
-    char *p;
-    if (size <= 0) {
-        errno = EINVAL;
-        return NULL;
-    }
-    if ((fp = popen(PWD_CMD, "r")) == NULL)
-        return NULL;
-    if (fgets(buf, size, fp) == NULL || pclose(fp) != 0) {
-        errno = EACCES; /* Most likely error */
-        return NULL;
-    }
-    for (p = buf; *p != '\n'; p++) {
-        if (*p == '\0') {
-            errno = ERANGE;
-            return NULL;
-        }
-    }
-    *p = '\0';
-    return buf;
-}
-
-#endif /* !HAVE_GETWD */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/getopt.c b/AppPkg/Applications/Python/Python-2.7.2/Python/getopt.c
deleted file mode 100644
index c6bc5e9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/getopt.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*---------------------------------------------------------------------------*
- * <RCS keywords>
- *
- * C++ Library
- *
- * Copyright 1992-1994, David Gottner
- *
- *                    All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice, this permission notice and
- * the following disclaimer notice appear unmodified in all copies.
- *
- * I DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL I
- * BE LIABLE FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER
- * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
- * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Nevertheless, I would like to know about bugs in this library or
- * suggestions for improvment.  Send bug reports and feedback to
- * davegottner@delphi.com.
- *---------------------------------------------------------------------------*/
-
-/* Modified to support --help and --version, as well as /? on Windows
- * by Georg Brandl. */
-
-#include <stdio.h>
-#include <string.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int _PyOS_opterr = 1;          /* generate error messages */
-int _PyOS_optind = 1;          /* index into argv array   */
-char *_PyOS_optarg = NULL;     /* optional argument       */
-
-int _PyOS_GetOpt(int argc, char **argv, char *optstring)
-{
-    static char *opt_ptr = "";
-    char *ptr;
-    int option;
-
-    if (*opt_ptr == '\0') {
-
-        if (_PyOS_optind >= argc)
-            return -1;
-#ifdef MS_WINDOWS
-        else if (strcmp(argv[_PyOS_optind], "/?") == 0) {
-            ++_PyOS_optind;
-            return 'h';
-        }
-#endif
-
-        else if (argv[_PyOS_optind][0] != '-' ||
-                 argv[_PyOS_optind][1] == '\0' /* lone dash */ )
-            return -1;
-
-        else if (strcmp(argv[_PyOS_optind], "--") == 0) {
-            ++_PyOS_optind;
-            return -1;
-        }
-
-        else if (strcmp(argv[_PyOS_optind], "--help") == 0) {
-            ++_PyOS_optind;
-            return 'h';
-        }
-
-        else if (strcmp(argv[_PyOS_optind], "--version") == 0) {
-            ++_PyOS_optind;
-            return 'V';
-        }
-
-
-        opt_ptr = &argv[_PyOS_optind++][1];
-    }
-
-    if ( (option = *opt_ptr++) == '\0')
-        return -1;
-
-    if (option == 'J') {
-        fprintf(stderr, "-J is reserved for Jython\n");
-        return '_';
-    }
-
-    if (option == 'X') {
-        fprintf(stderr,
-          "-X is reserved for implementation-specific arguments\n");
-        return '_';
-    }
-
-    if ((ptr = strchr(optstring, option)) == NULL) {
-        if (_PyOS_opterr)
-            fprintf(stderr, "Unknown option: -%c\n", option);
-
-        return '_';
-    }
-
-    if (*(ptr + 1) == ':') {
-        if (*opt_ptr != '\0') {
-            _PyOS_optarg  = opt_ptr;
-            opt_ptr = "";
-        }
-
-        else {
-            if (_PyOS_optind >= argc) {
-                if (_PyOS_opterr)
-                    fprintf(stderr,
-                "Argument expected for the -%c option\n", option);
-                return '_';
-            }
-
-            _PyOS_optarg = argv[_PyOS_optind++];
-        }
-    }
-
-    return option;
-}
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/getplatform.c b/AppPkg/Applications/Python/Python-2.7.2/Python/getplatform.c
deleted file mode 100644
index ce79ffe..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/getplatform.c
+++ /dev/null
@@ -1,12 +0,0 @@
-
-#include "Python.h"
-
-#ifndef PLATFORM
-#define PLATFORM "unknown"
-#endif
-
-const char *
-Py_GetPlatform(void)
-{
-	return PLATFORM;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/getversion.c b/AppPkg/Applications/Python/Python-2.7.2/Python/getversion.c
deleted file mode 100644
index 7c75348..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/getversion.c
+++ /dev/null
@@ -1,15 +0,0 @@
-
-/* Return the full version string. */
-
-#include "Python.h"
-
-#include "patchlevel.h"
-
-const char *
-Py_GetVersion(void)
-{
-	static char version[250];
-	PyOS_snprintf(version, sizeof(version), "%.80s (%.80s) %.80s",
-		      PY_VERSION, Py_GetBuildInfo(), Py_GetCompiler());
-	return version;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/graminit.c b/AppPkg/Applications/Python/Python-2.7.2/Python/graminit.c
deleted file mode 100644
index db2e9a7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/graminit.c
+++ /dev/null
@@ -1,2177 +0,0 @@
-/* Generated by Parser/pgen */
-
-#include "pgenheaders.h"
-#include "grammar.h"
-PyAPI_DATA(grammar) _PyParser_Grammar;
-static arc arcs_0_0[3] = {
-    {2, 1},
-    {3, 1},
-    {4, 2},
-};
-static arc arcs_0_1[1] = {
-    {0, 1},
-};
-static arc arcs_0_2[1] = {
-    {2, 1},
-};
-static state states_0[3] = {
-    {3, arcs_0_0},
-    {1, arcs_0_1},
-    {1, arcs_0_2},
-};
-static arc arcs_1_0[3] = {
-    {2, 0},
-    {6, 0},
-    {7, 1},
-};
-static arc arcs_1_1[1] = {
-    {0, 1},
-};
-static state states_1[2] = {
-    {3, arcs_1_0},
-    {1, arcs_1_1},
-};
-static arc arcs_2_0[1] = {
-    {9, 1},
-};
-static arc arcs_2_1[2] = {
-    {2, 1},
-    {7, 2},
-};
-static arc arcs_2_2[1] = {
-    {0, 2},
-};
-static state states_2[3] = {
-    {1, arcs_2_0},
-    {2, arcs_2_1},
-    {1, arcs_2_2},
-};
-static arc arcs_3_0[1] = {
-    {11, 1},
-};
-static arc arcs_3_1[1] = {
-    {12, 2},
-};
-static arc arcs_3_2[2] = {
-    {13, 3},
-    {2, 4},
-};
-static arc arcs_3_3[2] = {
-    {14, 5},
-    {15, 6},
-};
-static arc arcs_3_4[1] = {
-    {0, 4},
-};
-static arc arcs_3_5[1] = {
-    {15, 6},
-};
-static arc arcs_3_6[1] = {
-    {2, 4},
-};
-static state states_3[7] = {
-    {1, arcs_3_0},
-    {1, arcs_3_1},
-    {2, arcs_3_2},
-    {2, arcs_3_3},
-    {1, arcs_3_4},
-    {1, arcs_3_5},
-    {1, arcs_3_6},
-};
-static arc arcs_4_0[1] = {
-    {10, 1},
-};
-static arc arcs_4_1[2] = {
-    {10, 1},
-    {0, 1},
-};
-static state states_4[2] = {
-    {1, arcs_4_0},
-    {2, arcs_4_1},
-};
-static arc arcs_5_0[1] = {
-    {16, 1},
-};
-static arc arcs_5_1[2] = {
-    {18, 2},
-    {19, 2},
-};
-static arc arcs_5_2[1] = {
-    {0, 2},
-};
-static state states_5[3] = {
-    {1, arcs_5_0},
-    {2, arcs_5_1},
-    {1, arcs_5_2},
-};
-static arc arcs_6_0[1] = {
-    {20, 1},
-};
-static arc arcs_6_1[1] = {
-    {21, 2},
-};
-static arc arcs_6_2[1] = {
-    {22, 3},
-};
-static arc arcs_6_3[1] = {
-    {23, 4},
-};
-static arc arcs_6_4[1] = {
-    {24, 5},
-};
-static arc arcs_6_5[1] = {
-    {0, 5},
-};
-static state states_6[6] = {
-    {1, arcs_6_0},
-    {1, arcs_6_1},
-    {1, arcs_6_2},
-    {1, arcs_6_3},
-    {1, arcs_6_4},
-    {1, arcs_6_5},
-};
-static arc arcs_7_0[1] = {
-    {13, 1},
-};
-static arc arcs_7_1[2] = {
-    {25, 2},
-    {15, 3},
-};
-static arc arcs_7_2[1] = {
-    {15, 3},
-};
-static arc arcs_7_3[1] = {
-    {0, 3},
-};
-static state states_7[4] = {
-    {1, arcs_7_0},
-    {2, arcs_7_1},
-    {1, arcs_7_2},
-    {1, arcs_7_3},
-};
-static arc arcs_8_0[3] = {
-    {26, 1},
-    {30, 2},
-    {31, 3},
-};
-static arc arcs_8_1[3] = {
-    {27, 4},
-    {29, 5},
-    {0, 1},
-};
-static arc arcs_8_2[1] = {
-    {21, 6},
-};
-static arc arcs_8_3[1] = {
-    {21, 7},
-};
-static arc arcs_8_4[1] = {
-    {28, 8},
-};
-static arc arcs_8_5[4] = {
-    {26, 1},
-    {30, 2},
-    {31, 3},
-    {0, 5},
-};
-static arc arcs_8_6[2] = {
-    {29, 9},
-    {0, 6},
-};
-static arc arcs_8_7[1] = {
-    {0, 7},
-};
-static arc arcs_8_8[2] = {
-    {29, 5},
-    {0, 8},
-};
-static arc arcs_8_9[1] = {
-    {31, 3},
-};
-static state states_8[10] = {
-    {3, arcs_8_0},
-    {3, arcs_8_1},
-    {1, arcs_8_2},
-    {1, arcs_8_3},
-    {1, arcs_8_4},
-    {4, arcs_8_5},
-    {2, arcs_8_6},
-    {1, arcs_8_7},
-    {2, arcs_8_8},
-    {1, arcs_8_9},
-};
-static arc arcs_9_0[2] = {
-    {21, 1},
-    {13, 2},
-};
-static arc arcs_9_1[1] = {
-    {0, 1},
-};
-static arc arcs_9_2[1] = {
-    {32, 3},
-};
-static arc arcs_9_3[1] = {
-    {15, 1},
-};
-static state states_9[4] = {
-    {2, arcs_9_0},
-    {1, arcs_9_1},
-    {1, arcs_9_2},
-    {1, arcs_9_3},
-};
-static arc arcs_10_0[1] = {
-    {26, 1},
-};
-static arc arcs_10_1[2] = {
-    {29, 2},
-    {0, 1},
-};
-static arc arcs_10_2[2] = {
-    {26, 1},
-    {0, 2},
-};
-static state states_10[3] = {
-    {1, arcs_10_0},
-    {2, arcs_10_1},
-    {2, arcs_10_2},
-};
-static arc arcs_11_0[2] = {
-    {3, 1},
-    {4, 1},
-};
-static arc arcs_11_1[1] = {
-    {0, 1},
-};
-static state states_11[2] = {
-    {2, arcs_11_0},
-    {1, arcs_11_1},
-};
-static arc arcs_12_0[1] = {
-    {33, 1},
-};
-static arc arcs_12_1[2] = {
-    {34, 2},
-    {2, 3},
-};
-static arc arcs_12_2[2] = {
-    {33, 1},
-    {2, 3},
-};
-static arc arcs_12_3[1] = {
-    {0, 3},
-};
-static state states_12[4] = {
-    {1, arcs_12_0},
-    {2, arcs_12_1},
-    {2, arcs_12_2},
-    {1, arcs_12_3},
-};
-static arc arcs_13_0[9] = {
-    {35, 1},
-    {36, 1},
-    {37, 1},
-    {38, 1},
-    {39, 1},
-    {40, 1},
-    {41, 1},
-    {42, 1},
-    {43, 1},
-};
-static arc arcs_13_1[1] = {
-    {0, 1},
-};
-static state states_13[2] = {
-    {9, arcs_13_0},
-    {1, arcs_13_1},
-};
-static arc arcs_14_0[1] = {
-    {9, 1},
-};
-static arc arcs_14_1[3] = {
-    {44, 2},
-    {27, 3},
-    {0, 1},
-};
-static arc arcs_14_2[2] = {
-    {45, 4},
-    {9, 4},
-};
-static arc arcs_14_3[2] = {
-    {45, 5},
-    {9, 5},
-};
-static arc arcs_14_4[1] = {
-    {0, 4},
-};
-static arc arcs_14_5[2] = {
-    {27, 3},
-    {0, 5},
-};
-static state states_14[6] = {
-    {1, arcs_14_0},
-    {3, arcs_14_1},
-    {2, arcs_14_2},
-    {2, arcs_14_3},
-    {1, arcs_14_4},
-    {2, arcs_14_5},
-};
-static arc arcs_15_0[12] = {
-    {46, 1},
-    {47, 1},
-    {48, 1},
-    {49, 1},
-    {50, 1},
-    {51, 1},
-    {52, 1},
-    {53, 1},
-    {54, 1},
-    {55, 1},
-    {56, 1},
-    {57, 1},
-};
-static arc arcs_15_1[1] = {
-    {0, 1},
-};
-static state states_15[2] = {
-    {12, arcs_15_0},
-    {1, arcs_15_1},
-};
-static arc arcs_16_0[1] = {
-    {58, 1},
-};
-static arc arcs_16_1[3] = {
-    {28, 2},
-    {59, 3},
-    {0, 1},
-};
-static arc arcs_16_2[2] = {
-    {29, 4},
-    {0, 2},
-};
-static arc arcs_16_3[1] = {
-    {28, 5},
-};
-static arc arcs_16_4[2] = {
-    {28, 2},
-    {0, 4},
-};
-static arc arcs_16_5[2] = {
-    {29, 6},
-    {0, 5},
-};
-static arc arcs_16_6[1] = {
-    {28, 7},
-};
-static arc arcs_16_7[2] = {
-    {29, 8},
-    {0, 7},
-};
-static arc arcs_16_8[2] = {
-    {28, 7},
-    {0, 8},
-};
-static state states_16[9] = {
-    {1, arcs_16_0},
-    {3, arcs_16_1},
-    {2, arcs_16_2},
-    {1, arcs_16_3},
-    {2, arcs_16_4},
-    {2, arcs_16_5},
-    {1, arcs_16_6},
-    {2, arcs_16_7},
-    {2, arcs_16_8},
-};
-static arc arcs_17_0[1] = {
-    {60, 1},
-};
-static arc arcs_17_1[1] = {
-    {61, 2},
-};
-static arc arcs_17_2[1] = {
-    {0, 2},
-};
-static state states_17[3] = {
-    {1, arcs_17_0},
-    {1, arcs_17_1},
-    {1, arcs_17_2},
-};
-static arc arcs_18_0[1] = {
-    {62, 1},
-};
-static arc arcs_18_1[1] = {
-    {0, 1},
-};
-static state states_18[2] = {
-    {1, arcs_18_0},
-    {1, arcs_18_1},
-};
-static arc arcs_19_0[5] = {
-    {63, 1},
-    {64, 1},
-    {65, 1},
-    {66, 1},
-    {67, 1},
-};
-static arc arcs_19_1[1] = {
-    {0, 1},
-};
-static state states_19[2] = {
-    {5, arcs_19_0},
-    {1, arcs_19_1},
-};
-static arc arcs_20_0[1] = {
-    {68, 1},
-};
-static arc arcs_20_1[1] = {
-    {0, 1},
-};
-static state states_20[2] = {
-    {1, arcs_20_0},
-    {1, arcs_20_1},
-};
-static arc arcs_21_0[1] = {
-    {69, 1},
-};
-static arc arcs_21_1[1] = {
-    {0, 1},
-};
-static state states_21[2] = {
-    {1, arcs_21_0},
-    {1, arcs_21_1},
-};
-static arc arcs_22_0[1] = {
-    {70, 1},
-};
-static arc arcs_22_1[2] = {
-    {9, 2},
-    {0, 1},
-};
-static arc arcs_22_2[1] = {
-    {0, 2},
-};
-static state states_22[3] = {
-    {1, arcs_22_0},
-    {2, arcs_22_1},
-    {1, arcs_22_2},
-};
-static arc arcs_23_0[1] = {
-    {45, 1},
-};
-static arc arcs_23_1[1] = {
-    {0, 1},
-};
-static state states_23[2] = {
-    {1, arcs_23_0},
-    {1, arcs_23_1},
-};
-static arc arcs_24_0[1] = {
-    {71, 1},
-};
-static arc arcs_24_1[2] = {
-    {28, 2},
-    {0, 1},
-};
-static arc arcs_24_2[2] = {
-    {29, 3},
-    {0, 2},
-};
-static arc arcs_24_3[1] = {
-    {28, 4},
-};
-static arc arcs_24_4[2] = {
-    {29, 5},
-    {0, 4},
-};
-static arc arcs_24_5[1] = {
-    {28, 6},
-};
-static arc arcs_24_6[1] = {
-    {0, 6},
-};
-static state states_24[7] = {
-    {1, arcs_24_0},
-    {2, arcs_24_1},
-    {2, arcs_24_2},
-    {1, arcs_24_3},
-    {2, arcs_24_4},
-    {1, arcs_24_5},
-    {1, arcs_24_6},
-};
-static arc arcs_25_0[2] = {
-    {72, 1},
-    {73, 1},
-};
-static arc arcs_25_1[1] = {
-    {0, 1},
-};
-static state states_25[2] = {
-    {2, arcs_25_0},
-    {1, arcs_25_1},
-};
-static arc arcs_26_0[1] = {
-    {74, 1},
-};
-static arc arcs_26_1[1] = {
-    {75, 2},
-};
-static arc arcs_26_2[1] = {
-    {0, 2},
-};
-static state states_26[3] = {
-    {1, arcs_26_0},
-    {1, arcs_26_1},
-    {1, arcs_26_2},
-};
-static arc arcs_27_0[1] = {
-    {76, 1},
-};
-static arc arcs_27_1[2] = {
-    {77, 2},
-    {12, 3},
-};
-static arc arcs_27_2[3] = {
-    {77, 2},
-    {12, 3},
-    {74, 4},
-};
-static arc arcs_27_3[1] = {
-    {74, 4},
-};
-static arc arcs_27_4[3] = {
-    {30, 5},
-    {13, 6},
-    {78, 5},
-};
-static arc arcs_27_5[1] = {
-    {0, 5},
-};
-static arc arcs_27_6[1] = {
-    {78, 7},
-};
-static arc arcs_27_7[1] = {
-    {15, 5},
-};
-static state states_27[8] = {
-    {1, arcs_27_0},
-    {2, arcs_27_1},
-    {3, arcs_27_2},
-    {1, arcs_27_3},
-    {3, arcs_27_4},
-    {1, arcs_27_5},
-    {1, arcs_27_6},
-    {1, arcs_27_7},
-};
-static arc arcs_28_0[1] = {
-    {21, 1},
-};
-static arc arcs_28_1[2] = {
-    {80, 2},
-    {0, 1},
-};
-static arc arcs_28_2[1] = {
-    {21, 3},
-};
-static arc arcs_28_3[1] = {
-    {0, 3},
-};
-static state states_28[4] = {
-    {1, arcs_28_0},
-    {2, arcs_28_1},
-    {1, arcs_28_2},
-    {1, arcs_28_3},
-};
-static arc arcs_29_0[1] = {
-    {12, 1},
-};
-static arc arcs_29_1[2] = {
-    {80, 2},
-    {0, 1},
-};
-static arc arcs_29_2[1] = {
-    {21, 3},
-};
-static arc arcs_29_3[1] = {
-    {0, 3},
-};
-static state states_29[4] = {
-    {1, arcs_29_0},
-    {2, arcs_29_1},
-    {1, arcs_29_2},
-    {1, arcs_29_3},
-};
-static arc arcs_30_0[1] = {
-    {79, 1},
-};
-static arc arcs_30_1[2] = {
-    {29, 2},
-    {0, 1},
-};
-static arc arcs_30_2[2] = {
-    {79, 1},
-    {0, 2},
-};
-static state states_30[3] = {
-    {1, arcs_30_0},
-    {2, arcs_30_1},
-    {2, arcs_30_2},
-};
-static arc arcs_31_0[1] = {
-    {81, 1},
-};
-static arc arcs_31_1[2] = {
-    {29, 0},
-    {0, 1},
-};
-static state states_31[2] = {
-    {1, arcs_31_0},
-    {2, arcs_31_1},
-};
-static arc arcs_32_0[1] = {
-    {21, 1},
-};
-static arc arcs_32_1[2] = {
-    {77, 0},
-    {0, 1},
-};
-static state states_32[2] = {
-    {1, arcs_32_0},
-    {2, arcs_32_1},
-};
-static arc arcs_33_0[1] = {
-    {82, 1},
-};
-static arc arcs_33_1[1] = {
-    {21, 2},
-};
-static arc arcs_33_2[2] = {
-    {29, 1},
-    {0, 2},
-};
-static state states_33[3] = {
-    {1, arcs_33_0},
-    {1, arcs_33_1},
-    {2, arcs_33_2},
-};
-static arc arcs_34_0[1] = {
-    {83, 1},
-};
-static arc arcs_34_1[1] = {
-    {84, 2},
-};
-static arc arcs_34_2[2] = {
-    {85, 3},
-    {0, 2},
-};
-static arc arcs_34_3[1] = {
-    {28, 4},
-};
-static arc arcs_34_4[2] = {
-    {29, 5},
-    {0, 4},
-};
-static arc arcs_34_5[1] = {
-    {28, 6},
-};
-static arc arcs_34_6[1] = {
-    {0, 6},
-};
-static state states_34[7] = {
-    {1, arcs_34_0},
-    {1, arcs_34_1},
-    {2, arcs_34_2},
-    {1, arcs_34_3},
-    {2, arcs_34_4},
-    {1, arcs_34_5},
-    {1, arcs_34_6},
-};
-static arc arcs_35_0[1] = {
-    {86, 1},
-};
-static arc arcs_35_1[1] = {
-    {28, 2},
-};
-static arc arcs_35_2[2] = {
-    {29, 3},
-    {0, 2},
-};
-static arc arcs_35_3[1] = {
-    {28, 4},
-};
-static arc arcs_35_4[1] = {
-    {0, 4},
-};
-static state states_35[5] = {
-    {1, arcs_35_0},
-    {1, arcs_35_1},
-    {2, arcs_35_2},
-    {1, arcs_35_3},
-    {1, arcs_35_4},
-};
-static arc arcs_36_0[8] = {
-    {87, 1},
-    {88, 1},
-    {89, 1},
-    {90, 1},
-    {91, 1},
-    {19, 1},
-    {18, 1},
-    {17, 1},
-};
-static arc arcs_36_1[1] = {
-    {0, 1},
-};
-static state states_36[2] = {
-    {8, arcs_36_0},
-    {1, arcs_36_1},
-};
-static arc arcs_37_0[1] = {
-    {92, 1},
-};
-static arc arcs_37_1[1] = {
-    {28, 2},
-};
-static arc arcs_37_2[1] = {
-    {23, 3},
-};
-static arc arcs_37_3[1] = {
-    {24, 4},
-};
-static arc arcs_37_4[3] = {
-    {93, 1},
-    {94, 5},
-    {0, 4},
-};
-static arc arcs_37_5[1] = {
-    {23, 6},
-};
-static arc arcs_37_6[1] = {
-    {24, 7},
-};
-static arc arcs_37_7[1] = {
-    {0, 7},
-};
-static state states_37[8] = {
-    {1, arcs_37_0},
-    {1, arcs_37_1},
-    {1, arcs_37_2},
-    {1, arcs_37_3},
-    {3, arcs_37_4},
-    {1, arcs_37_5},
-    {1, arcs_37_6},
-    {1, arcs_37_7},
-};
-static arc arcs_38_0[1] = {
-    {95, 1},
-};
-static arc arcs_38_1[1] = {
-    {28, 2},
-};
-static arc arcs_38_2[1] = {
-    {23, 3},
-};
-static arc arcs_38_3[1] = {
-    {24, 4},
-};
-static arc arcs_38_4[2] = {
-    {94, 5},
-    {0, 4},
-};
-static arc arcs_38_5[1] = {
-    {23, 6},
-};
-static arc arcs_38_6[1] = {
-    {24, 7},
-};
-static arc arcs_38_7[1] = {
-    {0, 7},
-};
-static state states_38[8] = {
-    {1, arcs_38_0},
-    {1, arcs_38_1},
-    {1, arcs_38_2},
-    {1, arcs_38_3},
-    {2, arcs_38_4},
-    {1, arcs_38_5},
-    {1, arcs_38_6},
-    {1, arcs_38_7},
-};
-static arc arcs_39_0[1] = {
-    {96, 1},
-};
-static arc arcs_39_1[1] = {
-    {61, 2},
-};
-static arc arcs_39_2[1] = {
-    {85, 3},
-};
-static arc arcs_39_3[1] = {
-    {9, 4},
-};
-static arc arcs_39_4[1] = {
-    {23, 5},
-};
-static arc arcs_39_5[1] = {
-    {24, 6},
-};
-static arc arcs_39_6[2] = {
-    {94, 7},
-    {0, 6},
-};
-static arc arcs_39_7[1] = {
-    {23, 8},
-};
-static arc arcs_39_8[1] = {
-    {24, 9},
-};
-static arc arcs_39_9[1] = {
-    {0, 9},
-};
-static state states_39[10] = {
-    {1, arcs_39_0},
-    {1, arcs_39_1},
-    {1, arcs_39_2},
-    {1, arcs_39_3},
-    {1, arcs_39_4},
-    {1, arcs_39_5},
-    {2, arcs_39_6},
-    {1, arcs_39_7},
-    {1, arcs_39_8},
-    {1, arcs_39_9},
-};
-static arc arcs_40_0[1] = {
-    {97, 1},
-};
-static arc arcs_40_1[1] = {
-    {23, 2},
-};
-static arc arcs_40_2[1] = {
-    {24, 3},
-};
-static arc arcs_40_3[2] = {
-    {98, 4},
-    {99, 5},
-};
-static arc arcs_40_4[1] = {
-    {23, 6},
-};
-static arc arcs_40_5[1] = {
-    {23, 7},
-};
-static arc arcs_40_6[1] = {
-    {24, 8},
-};
-static arc arcs_40_7[1] = {
-    {24, 9},
-};
-static arc arcs_40_8[4] = {
-    {98, 4},
-    {94, 10},
-    {99, 5},
-    {0, 8},
-};
-static arc arcs_40_9[1] = {
-    {0, 9},
-};
-static arc arcs_40_10[1] = {
-    {23, 11},
-};
-static arc arcs_40_11[1] = {
-    {24, 12},
-};
-static arc arcs_40_12[2] = {
-    {99, 5},
-    {0, 12},
-};
-static state states_40[13] = {
-    {1, arcs_40_0},
-    {1, arcs_40_1},
-    {1, arcs_40_2},
-    {2, arcs_40_3},
-    {1, arcs_40_4},
-    {1, arcs_40_5},
-    {1, arcs_40_6},
-    {1, arcs_40_7},
-    {4, arcs_40_8},
-    {1, arcs_40_9},
-    {1, arcs_40_10},
-    {1, arcs_40_11},
-    {2, arcs_40_12},
-};
-static arc arcs_41_0[1] = {
-    {100, 1},
-};
-static arc arcs_41_1[1] = {
-    {101, 2},
-};
-static arc arcs_41_2[2] = {
-    {29, 1},
-    {23, 3},
-};
-static arc arcs_41_3[1] = {
-    {24, 4},
-};
-static arc arcs_41_4[1] = {
-    {0, 4},
-};
-static state states_41[5] = {
-    {1, arcs_41_0},
-    {1, arcs_41_1},
-    {2, arcs_41_2},
-    {1, arcs_41_3},
-    {1, arcs_41_4},
-};
-static arc arcs_42_0[1] = {
-    {28, 1},
-};
-static arc arcs_42_1[2] = {
-    {80, 2},
-    {0, 1},
-};
-static arc arcs_42_2[1] = {
-    {84, 3},
-};
-static arc arcs_42_3[1] = {
-    {0, 3},
-};
-static state states_42[4] = {
-    {1, arcs_42_0},
-    {2, arcs_42_1},
-    {1, arcs_42_2},
-    {1, arcs_42_3},
-};
-static arc arcs_43_0[1] = {
-    {102, 1},
-};
-static arc arcs_43_1[2] = {
-    {28, 2},
-    {0, 1},
-};
-static arc arcs_43_2[3] = {
-    {80, 3},
-    {29, 3},
-    {0, 2},
-};
-static arc arcs_43_3[1] = {
-    {28, 4},
-};
-static arc arcs_43_4[1] = {
-    {0, 4},
-};
-static state states_43[5] = {
-    {1, arcs_43_0},
-    {2, arcs_43_1},
-    {3, arcs_43_2},
-    {1, arcs_43_3},
-    {1, arcs_43_4},
-};
-static arc arcs_44_0[2] = {
-    {3, 1},
-    {2, 2},
-};
-static arc arcs_44_1[1] = {
-    {0, 1},
-};
-static arc arcs_44_2[1] = {
-    {103, 3},
-};
-static arc arcs_44_3[1] = {
-    {6, 4},
-};
-static arc arcs_44_4[2] = {
-    {6, 4},
-    {104, 1},
-};
-static state states_44[5] = {
-    {2, arcs_44_0},
-    {1, arcs_44_1},
-    {1, arcs_44_2},
-    {1, arcs_44_3},
-    {2, arcs_44_4},
-};
-static arc arcs_45_0[1] = {
-    {106, 1},
-};
-static arc arcs_45_1[2] = {
-    {29, 2},
-    {0, 1},
-};
-static arc arcs_45_2[1] = {
-    {106, 3},
-};
-static arc arcs_45_3[2] = {
-    {29, 4},
-    {0, 3},
-};
-static arc arcs_45_4[2] = {
-    {106, 3},
-    {0, 4},
-};
-static state states_45[5] = {
-    {1, arcs_45_0},
-    {2, arcs_45_1},
-    {1, arcs_45_2},
-    {2, arcs_45_3},
-    {2, arcs_45_4},
-};
-static arc arcs_46_0[2] = {
-    {107, 1},
-    {108, 1},
-};
-static arc arcs_46_1[1] = {
-    {0, 1},
-};
-static state states_46[2] = {
-    {2, arcs_46_0},
-    {1, arcs_46_1},
-};
-static arc arcs_47_0[1] = {
-    {109, 1},
-};
-static arc arcs_47_1[2] = {
-    {25, 2},
-    {23, 3},
-};
-static arc arcs_47_2[1] = {
-    {23, 3},
-};
-static arc arcs_47_3[1] = {
-    {106, 4},
-};
-static arc arcs_47_4[1] = {
-    {0, 4},
-};
-static state states_47[5] = {
-    {1, arcs_47_0},
-    {2, arcs_47_1},
-    {1, arcs_47_2},
-    {1, arcs_47_3},
-    {1, arcs_47_4},
-};
-static arc arcs_48_0[2] = {
-    {107, 1},
-    {110, 2},
-};
-static arc arcs_48_1[2] = {
-    {92, 3},
-    {0, 1},
-};
-static arc arcs_48_2[1] = {
-    {0, 2},
-};
-static arc arcs_48_3[1] = {
-    {107, 4},
-};
-static arc arcs_48_4[1] = {
-    {94, 5},
-};
-static arc arcs_48_5[1] = {
-    {28, 2},
-};
-static state states_48[6] = {
-    {2, arcs_48_0},
-    {2, arcs_48_1},
-    {1, arcs_48_2},
-    {1, arcs_48_3},
-    {1, arcs_48_4},
-    {1, arcs_48_5},
-};
-static arc arcs_49_0[1] = {
-    {111, 1},
-};
-static arc arcs_49_1[2] = {
-    {112, 0},
-    {0, 1},
-};
-static state states_49[2] = {
-    {1, arcs_49_0},
-    {2, arcs_49_1},
-};
-static arc arcs_50_0[1] = {
-    {113, 1},
-};
-static arc arcs_50_1[2] = {
-    {114, 0},
-    {0, 1},
-};
-static state states_50[2] = {
-    {1, arcs_50_0},
-    {2, arcs_50_1},
-};
-static arc arcs_51_0[2] = {
-    {115, 1},
-    {116, 2},
-};
-static arc arcs_51_1[1] = {
-    {113, 2},
-};
-static arc arcs_51_2[1] = {
-    {0, 2},
-};
-static state states_51[3] = {
-    {2, arcs_51_0},
-    {1, arcs_51_1},
-    {1, arcs_51_2},
-};
-static arc arcs_52_0[1] = {
-    {84, 1},
-};
-static arc arcs_52_1[2] = {
-    {117, 0},
-    {0, 1},
-};
-static state states_52[2] = {
-    {1, arcs_52_0},
-    {2, arcs_52_1},
-};
-static arc arcs_53_0[10] = {
-    {118, 1},
-    {119, 1},
-    {120, 1},
-    {121, 1},
-    {122, 1},
-    {123, 1},
-    {124, 1},
-    {85, 1},
-    {115, 2},
-    {125, 3},
-};
-static arc arcs_53_1[1] = {
-    {0, 1},
-};
-static arc arcs_53_2[1] = {
-    {85, 1},
-};
-static arc arcs_53_3[2] = {
-    {115, 1},
-    {0, 3},
-};
-static state states_53[4] = {
-    {10, arcs_53_0},
-    {1, arcs_53_1},
-    {1, arcs_53_2},
-    {2, arcs_53_3},
-};
-static arc arcs_54_0[1] = {
-    {126, 1},
-};
-static arc arcs_54_1[2] = {
-    {127, 0},
-    {0, 1},
-};
-static state states_54[2] = {
-    {1, arcs_54_0},
-    {2, arcs_54_1},
-};
-static arc arcs_55_0[1] = {
-    {128, 1},
-};
-static arc arcs_55_1[2] = {
-    {129, 0},
-    {0, 1},
-};
-static state states_55[2] = {
-    {1, arcs_55_0},
-    {2, arcs_55_1},
-};
-static arc arcs_56_0[1] = {
-    {130, 1},
-};
-static arc arcs_56_1[2] = {
-    {131, 0},
-    {0, 1},
-};
-static state states_56[2] = {
-    {1, arcs_56_0},
-    {2, arcs_56_1},
-};
-static arc arcs_57_0[1] = {
-    {132, 1},
-};
-static arc arcs_57_1[3] = {
-    {133, 0},
-    {59, 0},
-    {0, 1},
-};
-static state states_57[2] = {
-    {1, arcs_57_0},
-    {3, arcs_57_1},
-};
-static arc arcs_58_0[1] = {
-    {134, 1},
-};
-static arc arcs_58_1[3] = {
-    {135, 0},
-    {136, 0},
-    {0, 1},
-};
-static state states_58[2] = {
-    {1, arcs_58_0},
-    {3, arcs_58_1},
-};
-static arc arcs_59_0[1] = {
-    {137, 1},
-};
-static arc arcs_59_1[5] = {
-    {30, 0},
-    {138, 0},
-    {139, 0},
-    {140, 0},
-    {0, 1},
-};
-static state states_59[2] = {
-    {1, arcs_59_0},
-    {5, arcs_59_1},
-};
-static arc arcs_60_0[4] = {
-    {135, 1},
-    {136, 1},
-    {141, 1},
-    {142, 2},
-};
-static arc arcs_60_1[1] = {
-    {137, 2},
-};
-static arc arcs_60_2[1] = {
-    {0, 2},
-};
-static state states_60[3] = {
-    {4, arcs_60_0},
-    {1, arcs_60_1},
-    {1, arcs_60_2},
-};
-static arc arcs_61_0[1] = {
-    {143, 1},
-};
-static arc arcs_61_1[3] = {
-    {144, 1},
-    {31, 2},
-    {0, 1},
-};
-static arc arcs_61_2[1] = {
-    {137, 3},
-};
-static arc arcs_61_3[1] = {
-    {0, 3},
-};
-static state states_61[4] = {
-    {1, arcs_61_0},
-    {3, arcs_61_1},
-    {1, arcs_61_2},
-    {1, arcs_61_3},
-};
-static arc arcs_62_0[7] = {
-    {13, 1},
-    {146, 2},
-    {149, 3},
-    {152, 4},
-    {21, 5},
-    {154, 5},
-    {155, 6},
-};
-static arc arcs_62_1[3] = {
-    {45, 7},
-    {145, 7},
-    {15, 5},
-};
-static arc arcs_62_2[2] = {
-    {147, 8},
-    {148, 5},
-};
-static arc arcs_62_3[2] = {
-    {150, 9},
-    {151, 5},
-};
-static arc arcs_62_4[1] = {
-    {153, 10},
-};
-static arc arcs_62_5[1] = {
-    {0, 5},
-};
-static arc arcs_62_6[2] = {
-    {155, 6},
-    {0, 6},
-};
-static arc arcs_62_7[1] = {
-    {15, 5},
-};
-static arc arcs_62_8[1] = {
-    {148, 5},
-};
-static arc arcs_62_9[1] = {
-    {151, 5},
-};
-static arc arcs_62_10[1] = {
-    {152, 5},
-};
-static state states_62[11] = {
-    {7, arcs_62_0},
-    {3, arcs_62_1},
-    {2, arcs_62_2},
-    {2, arcs_62_3},
-    {1, arcs_62_4},
-    {1, arcs_62_5},
-    {2, arcs_62_6},
-    {1, arcs_62_7},
-    {1, arcs_62_8},
-    {1, arcs_62_9},
-    {1, arcs_62_10},
-};
-static arc arcs_63_0[1] = {
-    {28, 1},
-};
-static arc arcs_63_1[3] = {
-    {156, 2},
-    {29, 3},
-    {0, 1},
-};
-static arc arcs_63_2[1] = {
-    {0, 2},
-};
-static arc arcs_63_3[2] = {
-    {28, 4},
-    {0, 3},
-};
-static arc arcs_63_4[2] = {
-    {29, 3},
-    {0, 4},
-};
-static state states_63[5] = {
-    {1, arcs_63_0},
-    {3, arcs_63_1},
-    {1, arcs_63_2},
-    {2, arcs_63_3},
-    {2, arcs_63_4},
-};
-static arc arcs_64_0[1] = {
-    {28, 1},
-};
-static arc arcs_64_1[3] = {
-    {157, 2},
-    {29, 3},
-    {0, 1},
-};
-static arc arcs_64_2[1] = {
-    {0, 2},
-};
-static arc arcs_64_3[2] = {
-    {28, 4},
-    {0, 3},
-};
-static arc arcs_64_4[2] = {
-    {29, 3},
-    {0, 4},
-};
-static state states_64[5] = {
-    {1, arcs_64_0},
-    {3, arcs_64_1},
-    {1, arcs_64_2},
-    {2, arcs_64_3},
-    {2, arcs_64_4},
-};
-static arc arcs_65_0[1] = {
-    {109, 1},
-};
-static arc arcs_65_1[2] = {
-    {25, 2},
-    {23, 3},
-};
-static arc arcs_65_2[1] = {
-    {23, 3},
-};
-static arc arcs_65_3[1] = {
-    {28, 4},
-};
-static arc arcs_65_4[1] = {
-    {0, 4},
-};
-static state states_65[5] = {
-    {1, arcs_65_0},
-    {2, arcs_65_1},
-    {1, arcs_65_2},
-    {1, arcs_65_3},
-    {1, arcs_65_4},
-};
-static arc arcs_66_0[3] = {
-    {13, 1},
-    {146, 2},
-    {77, 3},
-};
-static arc arcs_66_1[2] = {
-    {14, 4},
-    {15, 5},
-};
-static arc arcs_66_2[1] = {
-    {158, 6},
-};
-static arc arcs_66_3[1] = {
-    {21, 5},
-};
-static arc arcs_66_4[1] = {
-    {15, 5},
-};
-static arc arcs_66_5[1] = {
-    {0, 5},
-};
-static arc arcs_66_6[1] = {
-    {148, 5},
-};
-static state states_66[7] = {
-    {3, arcs_66_0},
-    {2, arcs_66_1},
-    {1, arcs_66_2},
-    {1, arcs_66_3},
-    {1, arcs_66_4},
-    {1, arcs_66_5},
-    {1, arcs_66_6},
-};
-static arc arcs_67_0[1] = {
-    {159, 1},
-};
-static arc arcs_67_1[2] = {
-    {29, 2},
-    {0, 1},
-};
-static arc arcs_67_2[2] = {
-    {159, 1},
-    {0, 2},
-};
-static state states_67[3] = {
-    {1, arcs_67_0},
-    {2, arcs_67_1},
-    {2, arcs_67_2},
-};
-static arc arcs_68_0[3] = {
-    {77, 1},
-    {28, 2},
-    {23, 3},
-};
-static arc arcs_68_1[1] = {
-    {77, 4},
-};
-static arc arcs_68_2[2] = {
-    {23, 3},
-    {0, 2},
-};
-static arc arcs_68_3[3] = {
-    {28, 5},
-    {160, 6},
-    {0, 3},
-};
-static arc arcs_68_4[1] = {
-    {77, 6},
-};
-static arc arcs_68_5[2] = {
-    {160, 6},
-    {0, 5},
-};
-static arc arcs_68_6[1] = {
-    {0, 6},
-};
-static state states_68[7] = {
-    {3, arcs_68_0},
-    {1, arcs_68_1},
-    {2, arcs_68_2},
-    {3, arcs_68_3},
-    {1, arcs_68_4},
-    {2, arcs_68_5},
-    {1, arcs_68_6},
-};
-static arc arcs_69_0[1] = {
-    {23, 1},
-};
-static arc arcs_69_1[2] = {
-    {28, 2},
-    {0, 1},
-};
-static arc arcs_69_2[1] = {
-    {0, 2},
-};
-static state states_69[3] = {
-    {1, arcs_69_0},
-    {2, arcs_69_1},
-    {1, arcs_69_2},
-};
-static arc arcs_70_0[1] = {
-    {84, 1},
-};
-static arc arcs_70_1[2] = {
-    {29, 2},
-    {0, 1},
-};
-static arc arcs_70_2[2] = {
-    {84, 1},
-    {0, 2},
-};
-static state states_70[3] = {
-    {1, arcs_70_0},
-    {2, arcs_70_1},
-    {2, arcs_70_2},
-};
-static arc arcs_71_0[1] = {
-    {28, 1},
-};
-static arc arcs_71_1[2] = {
-    {29, 2},
-    {0, 1},
-};
-static arc arcs_71_2[2] = {
-    {28, 1},
-    {0, 2},
-};
-static state states_71[3] = {
-    {1, arcs_71_0},
-    {2, arcs_71_1},
-    {2, arcs_71_2},
-};
-static arc arcs_72_0[1] = {
-    {28, 1},
-};
-static arc arcs_72_1[4] = {
-    {23, 2},
-    {157, 3},
-    {29, 4},
-    {0, 1},
-};
-static arc arcs_72_2[1] = {
-    {28, 5},
-};
-static arc arcs_72_3[1] = {
-    {0, 3},
-};
-static arc arcs_72_4[2] = {
-    {28, 6},
-    {0, 4},
-};
-static arc arcs_72_5[3] = {
-    {157, 3},
-    {29, 7},
-    {0, 5},
-};
-static arc arcs_72_6[2] = {
-    {29, 4},
-    {0, 6},
-};
-static arc arcs_72_7[2] = {
-    {28, 8},
-    {0, 7},
-};
-static arc arcs_72_8[1] = {
-    {23, 9},
-};
-static arc arcs_72_9[1] = {
-    {28, 10},
-};
-static arc arcs_72_10[2] = {
-    {29, 7},
-    {0, 10},
-};
-static state states_72[11] = {
-    {1, arcs_72_0},
-    {4, arcs_72_1},
-    {1, arcs_72_2},
-    {1, arcs_72_3},
-    {2, arcs_72_4},
-    {3, arcs_72_5},
-    {2, arcs_72_6},
-    {2, arcs_72_7},
-    {1, arcs_72_8},
-    {1, arcs_72_9},
-    {2, arcs_72_10},
-};
-static arc arcs_73_0[1] = {
-    {161, 1},
-};
-static arc arcs_73_1[1] = {
-    {21, 2},
-};
-static arc arcs_73_2[2] = {
-    {13, 3},
-    {23, 4},
-};
-static arc arcs_73_3[2] = {
-    {9, 5},
-    {15, 6},
-};
-static arc arcs_73_4[1] = {
-    {24, 7},
-};
-static arc arcs_73_5[1] = {
-    {15, 6},
-};
-static arc arcs_73_6[1] = {
-    {23, 4},
-};
-static arc arcs_73_7[1] = {
-    {0, 7},
-};
-static state states_73[8] = {
-    {1, arcs_73_0},
-    {1, arcs_73_1},
-    {2, arcs_73_2},
-    {2, arcs_73_3},
-    {1, arcs_73_4},
-    {1, arcs_73_5},
-    {1, arcs_73_6},
-    {1, arcs_73_7},
-};
-static arc arcs_74_0[3] = {
-    {162, 1},
-    {30, 2},
-    {31, 3},
-};
-static arc arcs_74_1[2] = {
-    {29, 4},
-    {0, 1},
-};
-static arc arcs_74_2[1] = {
-    {28, 5},
-};
-static arc arcs_74_3[1] = {
-    {28, 6},
-};
-static arc arcs_74_4[4] = {
-    {162, 1},
-    {30, 2},
-    {31, 3},
-    {0, 4},
-};
-static arc arcs_74_5[2] = {
-    {29, 7},
-    {0, 5},
-};
-static arc arcs_74_6[1] = {
-    {0, 6},
-};
-static arc arcs_74_7[2] = {
-    {162, 5},
-    {31, 3},
-};
-static state states_74[8] = {
-    {3, arcs_74_0},
-    {2, arcs_74_1},
-    {1, arcs_74_2},
-    {1, arcs_74_3},
-    {4, arcs_74_4},
-    {2, arcs_74_5},
-    {1, arcs_74_6},
-    {2, arcs_74_7},
-};
-static arc arcs_75_0[1] = {
-    {28, 1},
-};
-static arc arcs_75_1[3] = {
-    {157, 2},
-    {27, 3},
-    {0, 1},
-};
-static arc arcs_75_2[1] = {
-    {0, 2},
-};
-static arc arcs_75_3[1] = {
-    {28, 2},
-};
-static state states_75[4] = {
-    {1, arcs_75_0},
-    {3, arcs_75_1},
-    {1, arcs_75_2},
-    {1, arcs_75_3},
-};
-static arc arcs_76_0[2] = {
-    {156, 1},
-    {164, 1},
-};
-static arc arcs_76_1[1] = {
-    {0, 1},
-};
-static state states_76[2] = {
-    {2, arcs_76_0},
-    {1, arcs_76_1},
-};
-static arc arcs_77_0[1] = {
-    {96, 1},
-};
-static arc arcs_77_1[1] = {
-    {61, 2},
-};
-static arc arcs_77_2[1] = {
-    {85, 3},
-};
-static arc arcs_77_3[1] = {
-    {105, 4},
-};
-static arc arcs_77_4[2] = {
-    {163, 5},
-    {0, 4},
-};
-static arc arcs_77_5[1] = {
-    {0, 5},
-};
-static state states_77[6] = {
-    {1, arcs_77_0},
-    {1, arcs_77_1},
-    {1, arcs_77_2},
-    {1, arcs_77_3},
-    {2, arcs_77_4},
-    {1, arcs_77_5},
-};
-static arc arcs_78_0[1] = {
-    {92, 1},
-};
-static arc arcs_78_1[1] = {
-    {106, 2},
-};
-static arc arcs_78_2[2] = {
-    {163, 3},
-    {0, 2},
-};
-static arc arcs_78_3[1] = {
-    {0, 3},
-};
-static state states_78[4] = {
-    {1, arcs_78_0},
-    {1, arcs_78_1},
-    {2, arcs_78_2},
-    {1, arcs_78_3},
-};
-static arc arcs_79_0[2] = {
-    {157, 1},
-    {166, 1},
-};
-static arc arcs_79_1[1] = {
-    {0, 1},
-};
-static state states_79[2] = {
-    {2, arcs_79_0},
-    {1, arcs_79_1},
-};
-static arc arcs_80_0[1] = {
-    {96, 1},
-};
-static arc arcs_80_1[1] = {
-    {61, 2},
-};
-static arc arcs_80_2[1] = {
-    {85, 3},
-};
-static arc arcs_80_3[1] = {
-    {107, 4},
-};
-static arc arcs_80_4[2] = {
-    {165, 5},
-    {0, 4},
-};
-static arc arcs_80_5[1] = {
-    {0, 5},
-};
-static state states_80[6] = {
-    {1, arcs_80_0},
-    {1, arcs_80_1},
-    {1, arcs_80_2},
-    {1, arcs_80_3},
-    {2, arcs_80_4},
-    {1, arcs_80_5},
-};
-static arc arcs_81_0[1] = {
-    {92, 1},
-};
-static arc arcs_81_1[1] = {
-    {106, 2},
-};
-static arc arcs_81_2[2] = {
-    {165, 3},
-    {0, 2},
-};
-static arc arcs_81_3[1] = {
-    {0, 3},
-};
-static state states_81[4] = {
-    {1, arcs_81_0},
-    {1, arcs_81_1},
-    {2, arcs_81_2},
-    {1, arcs_81_3},
-};
-static arc arcs_82_0[1] = {
-    {28, 1},
-};
-static arc arcs_82_1[2] = {
-    {29, 0},
-    {0, 1},
-};
-static state states_82[2] = {
-    {1, arcs_82_0},
-    {2, arcs_82_1},
-};
-static arc arcs_83_0[1] = {
-    {21, 1},
-};
-static arc arcs_83_1[1] = {
-    {0, 1},
-};
-static state states_83[2] = {
-    {1, arcs_83_0},
-    {1, arcs_83_1},
-};
-static arc arcs_84_0[1] = {
-    {168, 1},
-};
-static arc arcs_84_1[2] = {
-    {9, 2},
-    {0, 1},
-};
-static arc arcs_84_2[1] = {
-    {0, 2},
-};
-static state states_84[3] = {
-    {1, arcs_84_0},
-    {2, arcs_84_1},
-    {1, arcs_84_2},
-};
-static dfa dfas[85] = {
-    {256, "single_input", 0, 3, states_0,
-     "\004\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"},
-    {257, "file_input", 0, 2, states_1,
-     "\204\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"},
-    {258, "eval_input", 0, 3, states_2,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {259, "decorator", 0, 7, states_3,
-     "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {260, "decorators", 0, 2, states_4,
-     "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {261, "decorated", 0, 3, states_5,
-     "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {262, "funcdef", 0, 6, states_6,
-     "\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {263, "parameters", 0, 4, states_7,
-     "\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {264, "varargslist", 0, 10, states_8,
-     "\000\040\040\300\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {265, "fpdef", 0, 4, states_9,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {266, "fplist", 0, 3, states_10,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {267, "stmt", 0, 2, states_11,
-     "\000\050\060\000\000\000\000\124\360\024\114\220\023\040\010\000\200\041\044\015\002\001"},
-    {268, "simple_stmt", 0, 4, states_12,
-     "\000\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"},
-    {269, "small_stmt", 0, 2, states_13,
-     "\000\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"},
-    {270, "expr_stmt", 0, 6, states_14,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {271, "augassign", 0, 2, states_15,
-     "\000\000\000\000\000\300\377\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {272, "print_stmt", 0, 9, states_16,
-     "\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {273, "del_stmt", 0, 3, states_17,
-     "\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {274, "pass_stmt", 0, 2, states_18,
-     "\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {275, "flow_stmt", 0, 2, states_19,
-     "\000\000\000\000\000\000\000\000\360\000\000\000\000\000\000\000\000\000\000\000\000\001"},
-    {276, "break_stmt", 0, 2, states_20,
-     "\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {277, "continue_stmt", 0, 2, states_21,
-     "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {278, "return_stmt", 0, 3, states_22,
-     "\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {279, "yield_stmt", 0, 2, states_23,
-     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"},
-    {280, "raise_stmt", 0, 7, states_24,
-     "\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {281, "import_stmt", 0, 2, states_25,
-     "\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {282, "import_name", 0, 3, states_26,
-     "\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {283, "import_from", 0, 8, states_27,
-     "\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {284, "import_as_name", 0, 4, states_28,
-     "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {285, "dotted_as_name", 0, 4, states_29,
-     "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {286, "import_as_names", 0, 3, states_30,
-     "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {287, "dotted_as_names", 0, 2, states_31,
-     "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {288, "dotted_name", 0, 2, states_32,
-     "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {289, "global_stmt", 0, 3, states_33,
-     "\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000"},
-    {290, "exec_stmt", 0, 7, states_34,
-     "\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000"},
-    {291, "assert_stmt", 0, 5, states_35,
-     "\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"},
-    {292, "compound_stmt", 0, 2, states_36,
-     "\000\010\020\000\000\000\000\000\000\000\000\220\023\000\000\000\000\000\000\000\002\000"},
-    {293, "if_stmt", 0, 8, states_37,
-     "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"},
-    {294, "while_stmt", 0, 8, states_38,
-     "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000"},
-    {295, "for_stmt", 0, 10, states_39,
-     "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"},
-    {296, "try_stmt", 0, 13, states_40,
-     "\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"},
-    {297, "with_stmt", 0, 5, states_41,
-     "\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000"},
-    {298, "with_item", 0, 4, states_42,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {299, "except_clause", 0, 5, states_43,
-     "\000\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"},
-    {300, "suite", 0, 5, states_44,
-     "\004\040\040\000\000\000\000\124\360\024\114\000\000\040\010\000\200\041\044\015\000\001"},
-    {301, "testlist_safe", 0, 5, states_45,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {302, "old_test", 0, 2, states_46,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {303, "old_lambdef", 0, 5, states_47,
-     "\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"},
-    {304, "test", 0, 6, states_48,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {305, "or_test", 0, 2, states_49,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\010\000\200\041\044\015\000\000"},
-    {306, "and_test", 0, 2, states_50,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\010\000\200\041\044\015\000\000"},
-    {307, "not_test", 0, 3, states_51,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\010\000\200\041\044\015\000\000"},
-    {308, "comparison", 0, 2, states_52,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"},
-    {309, "comp_op", 0, 4, states_53,
-     "\000\000\000\000\000\000\000\000\000\000\040\000\000\000\310\077\000\000\000\000\000\000"},
-    {310, "expr", 0, 2, states_54,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"},
-    {311, "xor_expr", 0, 2, states_55,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"},
-    {312, "and_expr", 0, 2, states_56,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"},
-    {313, "shift_expr", 0, 2, states_57,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"},
-    {314, "arith_expr", 0, 2, states_58,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"},
-    {315, "term", 0, 2, states_59,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"},
-    {316, "factor", 0, 3, states_60,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"},
-    {317, "power", 0, 4, states_61,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\044\015\000\000"},
-    {318, "atom", 0, 11, states_62,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\044\015\000\000"},
-    {319, "listmaker", 0, 5, states_63,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {320, "testlist_comp", 0, 5, states_64,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {321, "lambdef", 0, 5, states_65,
-     "\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000"},
-    {322, "trailer", 0, 7, states_66,
-     "\000\040\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\004\000\000\000"},
-    {323, "subscriptlist", 0, 3, states_67,
-     "\000\040\240\000\000\000\000\000\000\040\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {324, "subscript", 0, 7, states_68,
-     "\000\040\240\000\000\000\000\000\000\040\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {325, "sliceop", 0, 3, states_69,
-     "\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {326, "exprlist", 0, 3, states_70,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\000\000\000\200\041\044\015\000\000"},
-    {327, "testlist", 0, 3, states_71,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {328, "dictorsetmaker", 0, 11, states_72,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {329, "classdef", 0, 8, states_73,
-     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000"},
-    {330, "arglist", 0, 8, states_74,
-     "\000\040\040\300\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {331, "argument", 0, 4, states_75,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {332, "list_iter", 0, 2, states_76,
-     "\000\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000\000\000\000"},
-    {333, "list_for", 0, 6, states_77,
-     "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"},
-    {334, "list_if", 0, 4, states_78,
-     "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"},
-    {335, "comp_iter", 0, 2, states_79,
-     "\000\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000\000\000\000"},
-    {336, "comp_for", 0, 6, states_80,
-     "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"},
-    {337, "comp_if", 0, 4, states_81,
-     "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"},
-    {338, "testlist1", 0, 2, states_82,
-     "\000\040\040\000\000\000\000\000\000\000\000\000\000\040\010\000\200\041\044\015\000\000"},
-    {339, "encoding_decl", 0, 2, states_83,
-     "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
-    {340, "yield_expr", 0, 3, states_84,
-     "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"},
-};
-static label labels[169] = {
-    {0, "EMPTY"},
-    {256, 0},
-    {4, 0},
-    {268, 0},
-    {292, 0},
-    {257, 0},
-    {267, 0},
-    {0, 0},
-    {258, 0},
-    {327, 0},
-    {259, 0},
-    {50, 0},
-    {288, 0},
-    {7, 0},
-    {330, 0},
-    {8, 0},
-    {260, 0},
-    {261, 0},
-    {329, 0},
-    {262, 0},
-    {1, "def"},
-    {1, 0},
-    {263, 0},
-    {11, 0},
-    {300, 0},
-    {264, 0},
-    {265, 0},
-    {22, 0},
-    {304, 0},
-    {12, 0},
-    {16, 0},
-    {36, 0},
-    {266, 0},
-    {269, 0},
-    {13, 0},
-    {270, 0},
-    {272, 0},
-    {273, 0},
-    {274, 0},
-    {275, 0},
-    {281, 0},
-    {289, 0},
-    {290, 0},
-    {291, 0},
-    {271, 0},
-    {340, 0},
-    {37, 0},
-    {38, 0},
-    {39, 0},
-    {40, 0},
-    {41, 0},
-    {42, 0},
-    {43, 0},
-    {44, 0},
-    {45, 0},
-    {46, 0},
-    {47, 0},
-    {49, 0},
-    {1, "print"},
-    {35, 0},
-    {1, "del"},
-    {326, 0},
-    {1, "pass"},
-    {276, 0},
-    {277, 0},
-    {278, 0},
-    {280, 0},
-    {279, 0},
-    {1, "break"},
-    {1, "continue"},
-    {1, "return"},
-    {1, "raise"},
-    {282, 0},
-    {283, 0},
-    {1, "import"},
-    {287, 0},
-    {1, "from"},
-    {23, 0},
-    {286, 0},
-    {284, 0},
-    {1, "as"},
-    {285, 0},
-    {1, "global"},
-    {1, "exec"},
-    {310, 0},
-    {1, "in"},
-    {1, "assert"},
-    {293, 0},
-    {294, 0},
-    {295, 0},
-    {296, 0},
-    {297, 0},
-    {1, "if"},
-    {1, "elif"},
-    {1, "else"},
-    {1, "while"},
-    {1, "for"},
-    {1, "try"},
-    {299, 0},
-    {1, "finally"},
-    {1, "with"},
-    {298, 0},
-    {1, "except"},
-    {5, 0},
-    {6, 0},
-    {301, 0},
-    {302, 0},
-    {305, 0},
-    {303, 0},
-    {1, "lambda"},
-    {321, 0},
-    {306, 0},
-    {1, "or"},
-    {307, 0},
-    {1, "and"},
-    {1, "not"},
-    {308, 0},
-    {309, 0},
-    {20, 0},
-    {21, 0},
-    {28, 0},
-    {31, 0},
-    {30, 0},
-    {29, 0},
-    {29, 0},
-    {1, "is"},
-    {311, 0},
-    {18, 0},
-    {312, 0},
-    {33, 0},
-    {313, 0},
-    {19, 0},
-    {314, 0},
-    {34, 0},
-    {315, 0},
-    {14, 0},
-    {15, 0},
-    {316, 0},
-    {17, 0},
-    {24, 0},
-    {48, 0},
-    {32, 0},
-    {317, 0},
-    {318, 0},
-    {322, 0},
-    {320, 0},
-    {9, 0},
-    {319, 0},
-    {10, 0},
-    {26, 0},
-    {328, 0},
-    {27, 0},
-    {25, 0},
-    {338, 0},
-    {2, 0},
-    {3, 0},
-    {333, 0},
-    {336, 0},
-    {323, 0},
-    {324, 0},
-    {325, 0},
-    {1, "class"},
-    {331, 0},
-    {332, 0},
-    {334, 0},
-    {335, 0},
-    {337, 0},
-    {339, 0},
-    {1, "yield"},
-};
-grammar _PyParser_Grammar = {
-    85,
-    dfas,
-    {169, labels},
-    256
-};
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/import.c b/AppPkg/Applications/Python/Python-2.7.2/Python/import.c
deleted file mode 100644
index 31ccd31..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/import.c
+++ /dev/null
@@ -1,3398 +0,0 @@
-
-/* Module definition and import implementation */
-
-#include "Python.h"
-
-#include "Python-ast.h"
-#undef Yield /* undefine macro conflicting with winbase.h */
-#include "pyarena.h"
-#include "pythonrun.h"
-#include "errcode.h"
-#include "marshal.h"
-#include "code.h"
-#include "compile.h"
-#include "eval.h"
-#include "osdefs.h"
-#include "importdl.h"
-
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef MS_WINDOWS
-/* for stat.st_mode */
-typedef unsigned short mode_t;
-#endif
-
-
-/* Magic word to reject .pyc files generated by other Python versions.
-   It should change for each incompatible change to the bytecode.
-
-   The value of CR and LF is incorporated so if you ever read or write
-   a .pyc file in text mode the magic number will be wrong; also, the
-   Apple MPW compiler swaps their values, botching string constants.
-
-   The magic numbers must be spaced apart atleast 2 values, as the
-   -U interpeter flag will cause MAGIC+1 being used. They have been
-   odd numbers for some time now.
-
-   There were a variety of old schemes for setting the magic number.
-   The current working scheme is to increment the previous value by
-   10.
-
-   Known values:
-       Python 1.5:   20121
-       Python 1.5.1: 20121
-       Python 1.5.2: 20121
-       Python 1.6:   50428
-       Python 2.0:   50823
-       Python 2.0.1: 50823
-       Python 2.1:   60202
-       Python 2.1.1: 60202
-       Python 2.1.2: 60202
-       Python 2.2:   60717
-       Python 2.3a0: 62011
-       Python 2.3a0: 62021
-       Python 2.3a0: 62011 (!)
-       Python 2.4a0: 62041
-       Python 2.4a3: 62051
-       Python 2.4b1: 62061
-       Python 2.5a0: 62071
-       Python 2.5a0: 62081 (ast-branch)
-       Python 2.5a0: 62091 (with)
-       Python 2.5a0: 62092 (changed WITH_CLEANUP opcode)
-       Python 2.5b3: 62101 (fix wrong code: for x, in ...)
-       Python 2.5b3: 62111 (fix wrong code: x += yield)
-       Python 2.5c1: 62121 (fix wrong lnotab with for loops and
-                            storing constants that should have been removed)
-       Python 2.5c2: 62131 (fix wrong code: for x, in ... in listcomp/genexp)
-       Python 2.6a0: 62151 (peephole optimizations and STORE_MAP opcode)
-       Python 2.6a1: 62161 (WITH_CLEANUP optimization)
-       Python 2.7a0: 62171 (optimize list comprehensions/change LIST_APPEND)
-       Python 2.7a0: 62181 (optimize conditional branches:
-                introduce POP_JUMP_IF_FALSE and POP_JUMP_IF_TRUE)
-       Python 2.7a0  62191 (introduce SETUP_WITH)
-       Python 2.7a0  62201 (introduce BUILD_SET)
-       Python 2.7a0  62211 (introduce MAP_ADD and SET_ADD)
-.
-*/
-#define MAGIC (62211 | ((long)'\r'<<16) | ((long)'\n'<<24))
-
-/* Magic word as global; note that _PyImport_Init() can change the
-   value of this global to accommodate for alterations of how the
-   compiler works which are enabled by command line switches. */
-static long pyc_magic = MAGIC;
-
-/* See _PyImport_FixupExtension() below */
-static PyObject *extensions = NULL;
-
-/* This table is defined in config.c: */
-extern struct _inittab _PyImport_Inittab[];
-
-struct _inittab *PyImport_Inittab = _PyImport_Inittab;
-
-/* these tables define the module suffixes that Python recognizes */
-struct filedescr * _PyImport_Filetab = NULL;
-
-#ifdef RISCOS
-static const struct filedescr _PyImport_StandardFiletab[] = {
-    {"/py", "U", PY_SOURCE},
-    {"/pyc", "rb", PY_COMPILED},
-    {0, 0}
-};
-#else
-static const struct filedescr _PyImport_StandardFiletab[] = {
-    {".py", "U", PY_SOURCE},
-#ifdef MS_WINDOWS
-    {".pyw", "U", PY_SOURCE},
-#endif
-    {".pyc", "rb", PY_COMPILED},
-    {0, 0}
-};
-#endif
-
-
-/* Initialize things */
-
-void
-_PyImport_Init(void)
-{
-    const struct filedescr *scan;
-    struct filedescr *filetab;
-    int countD = 0;
-    int countS = 0;
-
-    /* prepare _PyImport_Filetab: copy entries from
-       _PyImport_DynLoadFiletab and _PyImport_StandardFiletab.
-     */
-#ifdef HAVE_DYNAMIC_LOADING
-    for (scan = _PyImport_DynLoadFiletab; scan->suffix != NULL; ++scan)
-        ++countD;
-#endif
-    for (scan = _PyImport_StandardFiletab; scan->suffix != NULL; ++scan)
-        ++countS;
-    filetab = PyMem_NEW(struct filedescr, countD + countS + 1);
-    if (filetab == NULL)
-        Py_FatalError("Can't initialize import file table.");
-#ifdef HAVE_DYNAMIC_LOADING
-    memcpy(filetab, _PyImport_DynLoadFiletab,
-           countD * sizeof(struct filedescr));
-#endif
-    memcpy(filetab + countD, _PyImport_StandardFiletab,
-           countS * sizeof(struct filedescr));
-    filetab[countD + countS].suffix = NULL;
-
-    _PyImport_Filetab = filetab;
-
-    if (Py_OptimizeFlag) {
-        /* Replace ".pyc" with ".pyo" in _PyImport_Filetab */
-        for (; filetab->suffix != NULL; filetab++) {
-#ifndef RISCOS
-            if (strcmp(filetab->suffix, ".pyc") == 0)
-                filetab->suffix = ".pyo";
-#else
-            if (strcmp(filetab->suffix, "/pyc") == 0)
-                filetab->suffix = "/pyo";
-#endif
-        }
-    }
-
-    if (Py_UnicodeFlag) {
-        /* Fix the pyc_magic so that byte compiled code created
-           using the all-Unicode method doesn't interfere with
-           code created in normal operation mode. */
-        pyc_magic = MAGIC + 1;
-    }
-}
-
-void
-_PyImportHooks_Init(void)
-{
-    PyObject *v, *path_hooks = NULL, *zimpimport;
-    int err = 0;
-
-    /* adding sys.path_hooks and sys.path_importer_cache, setting up
-       zipimport */
-    if (PyType_Ready(&PyNullImporter_Type) < 0)
-        goto error;
-
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("# installing zipimport hook\n");
-
-    v = PyList_New(0);
-    if (v == NULL)
-        goto error;
-    err = PySys_SetObject("meta_path", v);
-    Py_DECREF(v);
-    if (err)
-        goto error;
-    v = PyDict_New();
-    if (v == NULL)
-        goto error;
-    err = PySys_SetObject("path_importer_cache", v);
-    Py_DECREF(v);
-    if (err)
-        goto error;
-    path_hooks = PyList_New(0);
-    if (path_hooks == NULL)
-        goto error;
-    err = PySys_SetObject("path_hooks", path_hooks);
-    if (err) {
-  error:
-        PyErr_Print();
-        Py_FatalError("initializing sys.meta_path, sys.path_hooks, "
-                      "path_importer_cache, or NullImporter failed"
-                      );
-    }
-
-    zimpimport = PyImport_ImportModule("zipimport");
-    if (zimpimport == NULL) {
-        PyErr_Clear(); /* No zip import module -- okay */
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# can't import zipimport\n");
-    }
-    else {
-        PyObject *zipimporter = PyObject_GetAttrString(zimpimport,
-                                                       "zipimporter");
-        Py_DECREF(zimpimport);
-        if (zipimporter == NULL) {
-            PyErr_Clear(); /* No zipimporter object -- okay */
-            if (Py_VerboseFlag)
-                PySys_WriteStderr(
-                    "# can't import zipimport.zipimporter\n");
-        }
-        else {
-            /* sys.path_hooks.append(zipimporter) */
-            err = PyList_Append(path_hooks, zipimporter);
-            Py_DECREF(zipimporter);
-            if (err)
-                goto error;
-            if (Py_VerboseFlag)
-                PySys_WriteStderr(
-                    "# installed zipimport hook\n");
-        }
-    }
-    Py_DECREF(path_hooks);
-}
-
-void
-_PyImport_Fini(void)
-{
-    Py_XDECREF(extensions);
-    extensions = NULL;
-    PyMem_DEL(_PyImport_Filetab);
-    _PyImport_Filetab = NULL;
-}
-
-
-/* Locking primitives to prevent parallel imports of the same module
-   in different threads to return with a partially loaded module.
-   These calls are serialized by the global interpreter lock. */
-
-#ifdef WITH_THREAD
-
-#include "pythread.h"
-
-static PyThread_type_lock import_lock = 0;
-static long import_lock_thread = -1;
-static int import_lock_level = 0;
-
-void
-_PyImport_AcquireLock(void)
-{
-    long me = PyThread_get_thread_ident();
-    if (me == -1)
-        return; /* Too bad */
-    if (import_lock == NULL) {
-        import_lock = PyThread_allocate_lock();
-        if (import_lock == NULL)
-            return;  /* Nothing much we can do. */
-    }
-    if (import_lock_thread == me) {
-        import_lock_level++;
-        return;
-    }
-    if (import_lock_thread != -1 || !PyThread_acquire_lock(import_lock, 0))
-    {
-        PyThreadState *tstate = PyEval_SaveThread();
-        PyThread_acquire_lock(import_lock, 1);
-        PyEval_RestoreThread(tstate);
-    }
-    import_lock_thread = me;
-    import_lock_level = 1;
-}
-
-int
-_PyImport_ReleaseLock(void)
-{
-    long me = PyThread_get_thread_ident();
-    if (me == -1 || import_lock == NULL)
-        return 0; /* Too bad */
-    if (import_lock_thread != me)
-        return -1;
-    import_lock_level--;
-    if (import_lock_level == 0) {
-        import_lock_thread = -1;
-        PyThread_release_lock(import_lock);
-    }
-    return 1;
-}
-
-/* This function is called from PyOS_AfterFork to ensure that newly
-   created child processes do not share locks with the parent.
-   We now acquire the import lock around fork() calls but on some platforms
-   (Solaris 9 and earlier? see isue7242) that still left us with problems. */
-
-void
-_PyImport_ReInitLock(void)
-{
-    if (import_lock != NULL)
-        import_lock = PyThread_allocate_lock();
-    import_lock_thread = -1;
-    import_lock_level = 0;
-}
-
-#endif
-
-static PyObject *
-imp_lock_held(PyObject *self, PyObject *noargs)
-{
-#ifdef WITH_THREAD
-    return PyBool_FromLong(import_lock_thread != -1);
-#else
-    return PyBool_FromLong(0);
-#endif
-}
-
-static PyObject *
-imp_acquire_lock(PyObject *self, PyObject *noargs)
-{
-#ifdef WITH_THREAD
-    _PyImport_AcquireLock();
-#endif
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-imp_release_lock(PyObject *self, PyObject *noargs)
-{
-#ifdef WITH_THREAD
-    if (_PyImport_ReleaseLock() < 0) {
-        PyErr_SetString(PyExc_RuntimeError,
-                        "not holding the import lock");
-        return NULL;
-    }
-#endif
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static void
-imp_modules_reloading_clear(void)
-{
-    PyInterpreterState *interp = PyThreadState_Get()->interp;
-    if (interp->modules_reloading != NULL)
-        PyDict_Clear(interp->modules_reloading);
-}
-
-/* Helper for sys */
-
-PyObject *
-PyImport_GetModuleDict(void)
-{
-    PyInterpreterState *interp = PyThreadState_GET()->interp;
-    if (interp->modules == NULL)
-        Py_FatalError("PyImport_GetModuleDict: no module dictionary!");
-    return interp->modules;
-}
-
-
-/* List of names to clear in sys */
-static char* sys_deletes[] = {
-    "path", "argv", "ps1", "ps2", "exitfunc",
-    "exc_type", "exc_value", "exc_traceback",
-    "last_type", "last_value", "last_traceback",
-    "path_hooks", "path_importer_cache", "meta_path",
-    /* misc stuff */
-    "flags", "float_info",
-    NULL
-};
-
-static char* sys_files[] = {
-    "stdin", "__stdin__",
-    "stdout", "__stdout__",
-    "stderr", "__stderr__",
-    NULL
-};
-
-
-/* Un-initialize things, as good as we can */
-
-void
-PyImport_Cleanup(void)
-{
-    Py_ssize_t pos, ndone;
-    char *name;
-    PyObject *key, *value, *dict;
-    PyInterpreterState *interp = PyThreadState_GET()->interp;
-    PyObject *modules = interp->modules;
-
-    if (modules == NULL)
-        return; /* Already done */
-
-    /* Delete some special variables first.  These are common
-       places where user values hide and people complain when their
-       destructors fail.  Since the modules containing them are
-       deleted *last* of all, they would come too late in the normal
-       destruction order.  Sigh. */
-
-    value = PyDict_GetItemString(modules, "__builtin__");
-    if (value != NULL && PyModule_Check(value)) {
-        dict = PyModule_GetDict(value);
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# clear __builtin__._\n");
-        PyDict_SetItemString(dict, "_", Py_None);
-    }
-    value = PyDict_GetItemString(modules, "sys");
-    if (value != NULL && PyModule_Check(value)) {
-        char **p;
-        PyObject *v;
-        dict = PyModule_GetDict(value);
-        for (p = sys_deletes; *p != NULL; p++) {
-            if (Py_VerboseFlag)
-                PySys_WriteStderr("# clear sys.%s\n", *p);
-            PyDict_SetItemString(dict, *p, Py_None);
-        }
-        for (p = sys_files; *p != NULL; p+=2) {
-            if (Py_VerboseFlag)
-                PySys_WriteStderr("# restore sys.%s\n", *p);
-            v = PyDict_GetItemString(dict, *(p+1));
-            if (v == NULL)
-                v = Py_None;
-            PyDict_SetItemString(dict, *p, v);
-        }
-    }
-
-    /* First, delete __main__ */
-    value = PyDict_GetItemString(modules, "__main__");
-    if (value != NULL && PyModule_Check(value)) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# cleanup __main__\n");
-        _PyModule_Clear(value);
-        PyDict_SetItemString(modules, "__main__", Py_None);
-    }
-
-    /* The special treatment of __builtin__ here is because even
-       when it's not referenced as a module, its dictionary is
-       referenced by almost every module's __builtins__.  Since
-       deleting a module clears its dictionary (even if there are
-       references left to it), we need to delete the __builtin__
-       module last.  Likewise, we don't delete sys until the very
-       end because it is implicitly referenced (e.g. by print).
-
-       Also note that we 'delete' modules by replacing their entry
-       in the modules dict with None, rather than really deleting
-       them; this avoids a rehash of the modules dictionary and
-       also marks them as "non existent" so they won't be
-       re-imported. */
-
-    /* Next, repeatedly delete modules with a reference count of
-       one (skipping __builtin__ and sys) and delete them */
-    do {
-        ndone = 0;
-        pos = 0;
-        while (PyDict_Next(modules, &pos, &key, &value)) {
-            if (value->ob_refcnt != 1)
-                continue;
-            if (PyString_Check(key) && PyModule_Check(value)) {
-                name = PyString_AS_STRING(key);
-                if (strcmp(name, "__builtin__") == 0)
-                    continue;
-                if (strcmp(name, "sys") == 0)
-                    continue;
-                if (Py_VerboseFlag)
-                    PySys_WriteStderr(
-                        "# cleanup[1] %s\n", name);
-                _PyModule_Clear(value);
-                PyDict_SetItem(modules, key, Py_None);
-                ndone++;
-            }
-        }
-    } while (ndone > 0);
-
-    /* Next, delete all modules (still skipping __builtin__ and sys) */
-    pos = 0;
-    while (PyDict_Next(modules, &pos, &key, &value)) {
-        if (PyString_Check(key) && PyModule_Check(value)) {
-            name = PyString_AS_STRING(key);
-            if (strcmp(name, "__builtin__") == 0)
-                continue;
-            if (strcmp(name, "sys") == 0)
-                continue;
-            if (Py_VerboseFlag)
-                PySys_WriteStderr("# cleanup[2] %s\n", name);
-            _PyModule_Clear(value);
-            PyDict_SetItem(modules, key, Py_None);
-        }
-    }
-
-    /* Next, delete sys and __builtin__ (in that order) */
-    value = PyDict_GetItemString(modules, "sys");
-    if (value != NULL && PyModule_Check(value)) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# cleanup sys\n");
-        _PyModule_Clear(value);
-        PyDict_SetItemString(modules, "sys", Py_None);
-    }
-    value = PyDict_GetItemString(modules, "__builtin__");
-    if (value != NULL && PyModule_Check(value)) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# cleanup __builtin__\n");
-        _PyModule_Clear(value);
-        PyDict_SetItemString(modules, "__builtin__", Py_None);
-    }
-
-    /* Finally, clear and delete the modules directory */
-    PyDict_Clear(modules);
-    interp->modules = NULL;
-    Py_DECREF(modules);
-    Py_CLEAR(interp->modules_reloading);
-}
-
-
-/* Helper for pythonrun.c -- return magic number */
-
-long
-PyImport_GetMagicNumber(void)
-{
-    return pyc_magic;
-}
-
-
-/* Magic for extension modules (built-in as well as dynamically
-   loaded).  To prevent initializing an extension module more than
-   once, we keep a static dictionary 'extensions' keyed by module name
-   (for built-in modules) or by filename (for dynamically loaded
-   modules), containing these modules.  A copy of the module's
-   dictionary is stored by calling _PyImport_FixupExtension()
-   immediately after the module initialization function succeeds.  A
-   copy can be retrieved from there by calling
-   _PyImport_FindExtension(). */
-
-PyObject *
-_PyImport_FixupExtension(char *name, char *filename)
-{
-    PyObject *modules, *mod, *dict, *copy;
-    if (extensions == NULL) {
-        extensions = PyDict_New();
-        if (extensions == NULL)
-            return NULL;
-    }
-    modules = PyImport_GetModuleDict();
-    mod = PyDict_GetItemString(modules, name);
-    if (mod == NULL || !PyModule_Check(mod)) {
-        PyErr_Format(PyExc_SystemError,
-          "_PyImport_FixupExtension: module %.200s not loaded", name);
-        return NULL;
-    }
-    dict = PyModule_GetDict(mod);
-    if (dict == NULL)
-        return NULL;
-    copy = PyDict_Copy(dict);
-    if (copy == NULL)
-        return NULL;
-    PyDict_SetItemString(extensions, filename, copy);
-    Py_DECREF(copy);
-    return copy;
-}
-
-PyObject *
-_PyImport_FindExtension(char *name, char *filename)
-{
-    PyObject *dict, *mod, *mdict;
-    if (extensions == NULL)
-        return NULL;
-    dict = PyDict_GetItemString(extensions, filename);
-    if (dict == NULL)
-        return NULL;
-    mod = PyImport_AddModule(name);
-    if (mod == NULL)
-        return NULL;
-    mdict = PyModule_GetDict(mod);
-    if (mdict == NULL)
-        return NULL;
-    if (PyDict_Update(mdict, dict))
-        return NULL;
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("import %s # previously loaded (%s)\n",
-            name, filename);
-    return mod;
-}
-
-
-/* Get the module object corresponding to a module name.
-   First check the modules dictionary if there's one there,
-   if not, create a new one and insert it in the modules dictionary.
-   Because the former action is most common, THIS DOES NOT RETURN A
-   'NEW' REFERENCE! */
-
-PyObject *
-PyImport_AddModule(const char *name)
-{
-    PyObject *modules = PyImport_GetModuleDict();
-    PyObject *m;
-
-    if ((m = PyDict_GetItemString(modules, name)) != NULL &&
-        PyModule_Check(m))
-        return m;
-    m = PyModule_New(name);
-    if (m == NULL)
-        return NULL;
-    if (PyDict_SetItemString(modules, name, m) != 0) {
-        Py_DECREF(m);
-        return NULL;
-    }
-    Py_DECREF(m); /* Yes, it still exists, in modules! */
-
-    return m;
-}
-
-/* Remove name from sys.modules, if it's there. */
-static void
-remove_module(const char *name)
-{
-    PyObject *modules = PyImport_GetModuleDict();
-    if (PyDict_GetItemString(modules, name) == NULL)
-        return;
-    if (PyDict_DelItemString(modules, name) < 0)
-        Py_FatalError("import:  deleting existing key in"
-                      "sys.modules failed");
-}
-
-/* Execute a code object in a module and return the module object
- * WITH INCREMENTED REFERENCE COUNT.  If an error occurs, name is
- * removed from sys.modules, to avoid leaving damaged module objects
- * in sys.modules.  The caller may wish to restore the original
- * module object (if any) in this case; PyImport_ReloadModule is an
- * example.
- */
-PyObject *
-PyImport_ExecCodeModule(char *name, PyObject *co)
-{
-    return PyImport_ExecCodeModuleEx(name, co, (char *)NULL);
-}
-
-PyObject *
-PyImport_ExecCodeModuleEx(char *name, PyObject *co, char *pathname)
-{
-    PyObject *modules = PyImport_GetModuleDict();
-    PyObject *m, *d, *v;
-
-    m = PyImport_AddModule(name);
-    if (m == NULL)
-        return NULL;
-    /* If the module is being reloaded, we get the old module back
-       and re-use its dict to exec the new code. */
-    d = PyModule_GetDict(m);
-    if (PyDict_GetItemString(d, "__builtins__") == NULL) {
-        if (PyDict_SetItemString(d, "__builtins__",
-                                 PyEval_GetBuiltins()) != 0)
-            goto error;
-    }
-    /* Remember the filename as the __file__ attribute */
-    v = NULL;
-    if (pathname != NULL) {
-        v = PyString_FromString(pathname);
-        if (v == NULL)
-            PyErr_Clear();
-    }
-    if (v == NULL) {
-        v = ((PyCodeObject *)co)->co_filename;
-        Py_INCREF(v);
-    }
-    if (PyDict_SetItemString(d, "__file__", v) != 0)
-        PyErr_Clear(); /* Not important enough to report */
-    Py_DECREF(v);
-
-    v = PyEval_EvalCode((PyCodeObject *)co, d, d);
-    if (v == NULL)
-        goto error;
-    Py_DECREF(v);
-
-    if ((m = PyDict_GetItemString(modules, name)) == NULL) {
-        PyErr_Format(PyExc_ImportError,
-                     "Loaded module %.200s not found in sys.modules",
-                     name);
-        return NULL;
-    }
-
-    Py_INCREF(m);
-
-    return m;
-
-  error:
-    remove_module(name);
-    return NULL;
-}
-
-
-/* Given a pathname for a Python source file, fill a buffer with the
-   pathname for the corresponding compiled file.  Return the pathname
-   for the compiled file, or NULL if there's no space in the buffer.
-   Doesn't set an exception. */
-
-static char *
-make_compiled_pathname(char *pathname, char *buf, size_t buflen)
-{
-    size_t len = strlen(pathname);
-    if (len+2 > buflen)
-        return NULL;
-
-#ifdef MS_WINDOWS
-    /* Treat .pyw as if it were .py.  The case of ".pyw" must match
-       that used in _PyImport_StandardFiletab. */
-    if (len >= 4 && strcmp(&pathname[len-4], ".pyw") == 0)
-        --len;          /* pretend 'w' isn't there */
-#endif
-    memcpy(buf, pathname, len);
-    buf[len] = Py_OptimizeFlag ? 'o' : 'c';
-    buf[len+1] = '\0';
-
-    return buf;
-}
-
-
-/* Given a pathname for a Python source file, its time of last
-   modification, and a pathname for a compiled file, check whether the
-   compiled file represents the same version of the source.  If so,
-   return a FILE pointer for the compiled file, positioned just after
-   the header; if not, return NULL.
-   Doesn't set an exception. */
-
-static FILE *
-check_compiled_module(char *pathname, time_t mtime, char *cpathname)
-{
-    FILE *fp;
-    long magic;
-    long pyc_mtime;
-
-    fp = fopen(cpathname, "rb");
-    if (fp == NULL)
-        return NULL;
-    magic = PyMarshal_ReadLongFromFile(fp);
-    if (magic != pyc_magic) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# %s has bad magic\n", cpathname);
-        fclose(fp);
-        return NULL;
-    }
-    pyc_mtime = PyMarshal_ReadLongFromFile(fp);
-    if (pyc_mtime != mtime) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# %s has bad mtime\n", cpathname);
-        fclose(fp);
-        return NULL;
-    }
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("# %s matches %s\n", cpathname, pathname);
-    return fp;
-}
-
-
-/* Read a code object from a file and check it for validity */
-
-static PyCodeObject *
-read_compiled_module(char *cpathname, FILE *fp)
-{
-    PyObject *co;
-
-    co = PyMarshal_ReadLastObjectFromFile(fp);
-    if (co == NULL)
-        return NULL;
-    if (!PyCode_Check(co)) {
-        PyErr_Format(PyExc_ImportError,
-                     "Non-code object in %.200s", cpathname);
-        Py_DECREF(co);
-        return NULL;
-    }
-    return (PyCodeObject *)co;
-}
-
-
-/* Load a module from a compiled file, execute it, and return its
-   module object WITH INCREMENTED REFERENCE COUNT */
-
-static PyObject *
-load_compiled_module(char *name, char *cpathname, FILE *fp)
-{
-    long magic;
-    PyCodeObject *co;
-    PyObject *m;
-
-    magic = PyMarshal_ReadLongFromFile(fp);
-    if (magic != pyc_magic) {
-        PyErr_Format(PyExc_ImportError,
-                     "Bad magic number in %.200s", cpathname);
-        return NULL;
-    }
-    (void) PyMarshal_ReadLongFromFile(fp);
-    co = read_compiled_module(cpathname, fp);
-    if (co == NULL)
-        return NULL;
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("import %s # precompiled from %s\n",
-            name, cpathname);
-    m = PyImport_ExecCodeModuleEx(name, (PyObject *)co, cpathname);
-    Py_DECREF(co);
-
-    return m;
-}
-
-/* Parse a source file and return the corresponding code object */
-
-static PyCodeObject *
-parse_source_module(const char *pathname, FILE *fp)
-{
-    PyCodeObject *co = NULL;
-    mod_ty mod;
-    PyCompilerFlags flags;
-    PyArena *arena = PyArena_New();
-    if (arena == NULL)
-        return NULL;
-
-    flags.cf_flags = 0;
-
-    mod = PyParser_ASTFromFile(fp, pathname, Py_file_input, 0, 0, &flags,
-                               NULL, arena);
-    if (mod) {
-        co = PyAST_Compile(mod, pathname, NULL, arena);
-    }
-    PyArena_Free(arena);
-    return co;
-}
-
-
-/* Helper to open a bytecode file for writing in exclusive mode */
-
-static FILE *
-open_exclusive(char *filename, mode_t mode)
-{
-#if defined(O_EXCL)&&defined(O_CREAT)&&defined(O_WRONLY)&&defined(O_TRUNC)
-    /* Use O_EXCL to avoid a race condition when another process tries to
-       write the same file.  When that happens, our open() call fails,
-       which is just fine (since it's only a cache).
-       XXX If the file exists and is writable but the directory is not
-       writable, the file will never be written.  Oh well.
-    */
-    int fd;
-    (void) unlink(filename);
-    fd = open(filename, O_EXCL|O_CREAT|O_WRONLY|O_TRUNC
-#ifdef O_BINARY
-                            |O_BINARY   /* necessary for Windows */
-#endif
-#ifdef __VMS
-            , mode, "ctxt=bin", "shr=nil"
-#else
-            , mode
-#endif
-          );
-    if (fd < 0)
-        return NULL;
-    return fdopen(fd, "wb");
-#else
-    /* Best we can do -- on Windows this can't happen anyway */
-    return fopen(filename, "wb");
-#endif
-}
-
-
-/* Write a compiled module to a file, placing the time of last
-   modification of its source into the header.
-   Errors are ignored, if a write error occurs an attempt is made to
-   remove the file. */
-
-static void
-write_compiled_module(PyCodeObject *co, char *cpathname, struct stat *srcstat)
-{
-    FILE *fp;
-    time_t mtime = srcstat->st_mtime;
-#ifdef MS_WINDOWS   /* since Windows uses different permissions  */
-    mode_t mode = srcstat->st_mode & ~S_IEXEC;
-#else
-    mode_t mode = srcstat->st_mode & ~S_IXUSR & ~S_IXGRP & ~S_IXOTH;
-#endif
-
-    fp = open_exclusive(cpathname, mode);
-    if (fp == NULL) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr(
-                "# can't create %s\n", cpathname);
-        return;
-    }
-    PyMarshal_WriteLongToFile(pyc_magic, fp, Py_MARSHAL_VERSION);
-    /* First write a 0 for mtime */
-    PyMarshal_WriteLongToFile(0L, fp, Py_MARSHAL_VERSION);
-    PyMarshal_WriteObjectToFile((PyObject *)co, fp, Py_MARSHAL_VERSION);
-    if (fflush(fp) != 0 || ferror(fp)) {
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("# can't write %s\n", cpathname);
-        /* Don't keep partial file */
-        fclose(fp);
-        (void) unlink(cpathname);
-        return;
-    }
-    /* Now write the true mtime */
-    fseek(fp, 4L, 0);
-    assert(mtime < LONG_MAX);
-    PyMarshal_WriteLongToFile((long)mtime, fp, Py_MARSHAL_VERSION);
-    fflush(fp);
-    fclose(fp);
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("# wrote %s\n", cpathname);
-}
-
-static void
-update_code_filenames(PyCodeObject *co, PyObject *oldname, PyObject *newname)
-{
-    PyObject *constants, *tmp;
-    Py_ssize_t i, n;
-
-    if (!_PyString_Eq(co->co_filename, oldname))
-        return;
-
-    tmp = co->co_filename;
-    co->co_filename = newname;
-    Py_INCREF(co->co_filename);
-    Py_DECREF(tmp);
-
-    constants = co->co_consts;
-    n = PyTuple_GET_SIZE(constants);
-    for (i = 0; i < n; i++) {
-        tmp = PyTuple_GET_ITEM(constants, i);
-        if (PyCode_Check(tmp))
-            update_code_filenames((PyCodeObject *)tmp,
-                                  oldname, newname);
-    }
-}
-
-static int
-update_compiled_module(PyCodeObject *co, char *pathname)
-{
-    PyObject *oldname, *newname;
-
-    if (strcmp(PyString_AsString(co->co_filename), pathname) == 0)
-        return 0;
-
-    newname = PyString_FromString(pathname);
-    if (newname == NULL)
-        return -1;
-
-    oldname = co->co_filename;
-    Py_INCREF(oldname);
-    update_code_filenames(co, oldname, newname);
-    Py_DECREF(oldname);
-    Py_DECREF(newname);
-    return 1;
-}
-
-/* Load a source module from a given file and return its module
-   object WITH INCREMENTED REFERENCE COUNT.  If there's a matching
-   byte-compiled file, use that instead. */
-
-static PyObject *
-load_source_module(char *name, char *pathname, FILE *fp)
-{
-    struct stat st;
-    FILE *fpc;
-    char buf[MAXPATHLEN+1];
-    char *cpathname;
-    PyCodeObject *co;
-    PyObject *m;
-
-    if (fstat(fileno(fp), &st) != 0) {
-        PyErr_Format(PyExc_RuntimeError,
-                     "unable to get file status from '%s'",
-                     pathname);
-        return NULL;
-    }
-#if SIZEOF_TIME_T > 4
-    /* Python's .pyc timestamp handling presumes that the timestamp fits
-       in 4 bytes. This will be fine until sometime in the year 2038,
-       when a 4-byte signed time_t will overflow.
-     */
-    if (st.st_mtime >> 32) {
-        PyErr_SetString(PyExc_OverflowError,
-            "modification time overflows a 4 byte field");
-        return NULL;
-    }
-#endif
-    cpathname = make_compiled_pathname(pathname, buf,
-                                       (size_t)MAXPATHLEN + 1);
-    if (cpathname != NULL &&
-        (fpc = check_compiled_module(pathname, st.st_mtime, cpathname))) {
-        co = read_compiled_module(cpathname, fpc);
-        fclose(fpc);
-        if (co == NULL)
-            return NULL;
-        if (update_compiled_module(co, pathname) < 0)
-            return NULL;
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("import %s # precompiled from %s\n",
-                name, cpathname);
-        pathname = cpathname;
-    }
-    else {
-        co = parse_source_module(pathname, fp);
-        if (co == NULL)
-            return NULL;
-        if (Py_VerboseFlag)
-            PySys_WriteStderr("import %s # from %s\n",
-                name, pathname);
-        if (cpathname) {
-            PyObject *ro = PySys_GetObject("dont_write_bytecode");
-            if (ro == NULL || !PyObject_IsTrue(ro))
-                write_compiled_module(co, cpathname, &st);
-        }
-    }
-    m = PyImport_ExecCodeModuleEx(name, (PyObject *)co, pathname);
-    Py_DECREF(co);
-
-    return m;
-}
-
-
-/* Forward */
-static PyObject *load_module(char *, FILE *, char *, int, PyObject *);
-static struct filedescr *find_module(char *, char *, PyObject *,
-                                     char *, size_t, FILE **, PyObject **);
-static struct _frozen *find_frozen(char *name);
-
-/* Load a package and return its module object WITH INCREMENTED
-   REFERENCE COUNT */
-
-static PyObject *
-load_package(char *name, char *pathname)
-{
-    PyObject *m, *d;
-    PyObject *file = NULL;
-    PyObject *path = NULL;
-    int err;
-    char buf[MAXPATHLEN+1];
-    FILE *fp = NULL;
-    struct filedescr *fdp;
-
-    m = PyImport_AddModule(name);
-    if (m == NULL)
-        return NULL;
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("import %s # directory %s\n",
-            name, pathname);
-    d = PyModule_GetDict(m);
-    file = PyString_FromString(pathname);
-    if (file == NULL)
-        goto error;
-    path = Py_BuildValue("[O]", file);
-    if (path == NULL)
-        goto error;
-    err = PyDict_SetItemString(d, "__file__", file);
-    if (err == 0)
-        err = PyDict_SetItemString(d, "__path__", path);
-    if (err != 0)
-        goto error;
-    buf[0] = '\0';
-    fdp = find_module(name, "__init__", path, buf, sizeof(buf), &fp, NULL);
-    if (fdp == NULL) {
-        if (PyErr_ExceptionMatches(PyExc_ImportError)) {
-            PyErr_Clear();
-            Py_INCREF(m);
-        }
-        else
-            m = NULL;
-        goto cleanup;
-    }
-    m = load_module(name, fp, buf, fdp->type, NULL);
-    if (fp != NULL)
-        fclose(fp);
-    goto cleanup;
-
-  error:
-    m = NULL;
-  cleanup:
-    Py_XDECREF(path);
-    Py_XDECREF(file);
-    return m;
-}
-
-
-/* Helper to test for built-in module */
-
-static int
-is_builtin(char *name)
-{
-    int i;
-    for (i = 0; PyImport_Inittab[i].name != NULL; i++) {
-        if (strcmp(name, PyImport_Inittab[i].name) == 0) {
-            if (PyImport_Inittab[i].initfunc == NULL)
-                return -1;
-            else
-                return 1;
-        }
-    }
-    return 0;
-}
-
-
-/* Return an importer object for a sys.path/pkg.__path__ item 'p',
-   possibly by fetching it from the path_importer_cache dict. If it
-   wasn't yet cached, traverse path_hooks until a hook is found
-   that can handle the path item. Return None if no hook could;
-   this tells our caller it should fall back to the builtin
-   import mechanism. Cache the result in path_importer_cache.
-   Returns a borrowed reference. */
-
-static PyObject *
-get_path_importer(PyObject *path_importer_cache, PyObject *path_hooks,
-                  PyObject *p)
-{
-    PyObject *importer;
-    Py_ssize_t j, nhooks;
-
-    /* These conditions are the caller's responsibility: */
-    assert(PyList_Check(path_hooks));
-    assert(PyDict_Check(path_importer_cache));
-
-    nhooks = PyList_Size(path_hooks);
-    if (nhooks < 0)
-        return NULL; /* Shouldn't happen */
-
-    importer = PyDict_GetItem(path_importer_cache, p);
-    if (importer != NULL)
-        return importer;
-
-    /* set path_importer_cache[p] to None to avoid recursion */
-    if (PyDict_SetItem(path_importer_cache, p, Py_None) != 0)
-        return NULL;
-
-    for (j = 0; j < nhooks; j++) {
-        PyObject *hook = PyList_GetItem(path_hooks, j);
-        if (hook == NULL)
-            return NULL;
-        importer = PyObject_CallFunctionObjArgs(hook, p, NULL);
-        if (importer != NULL)
-            break;
-
-        if (!PyErr_ExceptionMatches(PyExc_ImportError)) {
-            return NULL;
-        }
-        PyErr_Clear();
-    }
-    if (importer == NULL) {
-        importer = PyObject_CallFunctionObjArgs(
-            (PyObject *)&PyNullImporter_Type, p, NULL
-        );
-        if (importer == NULL) {
-            if (PyErr_ExceptionMatches(PyExc_ImportError)) {
-                PyErr_Clear();
-                return Py_None;
-            }
-        }
-    }
-    if (importer != NULL) {
-        int err = PyDict_SetItem(path_importer_cache, p, importer);
-        Py_DECREF(importer);
-        if (err != 0)
-            return NULL;
-    }
-    return importer;
-}
-
-PyAPI_FUNC(PyObject *)
-PyImport_GetImporter(PyObject *path) {
-    PyObject *importer=NULL, *path_importer_cache=NULL, *path_hooks=NULL;
-
-    if ((path_importer_cache = PySys_GetObject("path_importer_cache"))) {
-        if ((path_hooks = PySys_GetObject("path_hooks"))) {
-            importer = get_path_importer(path_importer_cache,
-                                         path_hooks, path);
-        }
-    }
-    Py_XINCREF(importer); /* get_path_importer returns a borrowed reference */
-    return importer;
-}
-
-/* Search the path (default sys.path) for a module.  Return the
-   corresponding filedescr struct, and (via return arguments) the
-   pathname and an open file.  Return NULL if the module is not found. */
-
-#ifdef MS_COREDLL
-extern FILE *PyWin_FindRegisteredModule(const char *, struct filedescr **,
-                                        char *, Py_ssize_t);
-#endif
-
-static int case_ok(char *, Py_ssize_t, Py_ssize_t, char *);
-static int find_init_module(char *); /* Forward */
-static struct filedescr importhookdescr = {"", "", IMP_HOOK};
-
-static struct filedescr *
-find_module(char *fullname, char *subname, PyObject *path, char *buf,
-            size_t buflen, FILE **p_fp, PyObject **p_loader)
-{
-    Py_ssize_t i, npath;
-    size_t len, namelen;
-    struct filedescr *fdp = NULL;
-    char *filemode;
-    FILE *fp = NULL;
-    PyObject *path_hooks, *path_importer_cache;
-#ifndef RISCOS
-    struct stat statbuf;
-#endif
-    static struct filedescr fd_frozen = {"", "", PY_FROZEN};
-    static struct filedescr fd_builtin = {"", "", C_BUILTIN};
-    static struct filedescr fd_package = {"", "", PKG_DIRECTORY};
-    char name[MAXPATHLEN+1];
-#if defined(PYOS_OS2)
-    size_t saved_len;
-    size_t saved_namelen;
-    char *saved_buf = NULL;
-#endif
-    if (p_loader != NULL)
-        *p_loader = NULL;
-
-    if (strlen(subname) > MAXPATHLEN) {
-        PyErr_SetString(PyExc_OverflowError,
-                        "module name is too long");
-        return NULL;
-    }
-    strcpy(name, subname);
-
-    /* sys.meta_path import hook */
-    if (p_loader != NULL) {
-        PyObject *meta_path;
-
-        meta_path = PySys_GetObject("meta_path");
-        if (meta_path == NULL || !PyList_Check(meta_path)) {
-            PyErr_SetString(PyExc_ImportError,
-                            "sys.meta_path must be a list of "
-                            "import hooks");
-            return NULL;
-        }
-        Py_INCREF(meta_path);  /* zap guard */
-        npath = PyList_Size(meta_path);
-        for (i = 0; i < npath; i++) {
-            PyObject *loader;
-            PyObject *hook = PyList_GetItem(meta_path, i);
-            loader = PyObject_CallMethod(hook, "find_module",
-                                         "sO", fullname,
-                                         path != NULL ?
-                                         path : Py_None);
-            if (loader == NULL) {
-                Py_DECREF(meta_path);
-                return NULL;  /* true error */
-            }
-            if (loader != Py_None) {
-                /* a loader was found */
-                *p_loader = loader;
-                Py_DECREF(meta_path);
-                return &importhookdescr;
-            }
-            Py_DECREF(loader);
-        }
-        Py_DECREF(meta_path);
-    }
-
-    if (path != NULL && PyString_Check(path)) {
-        /* The only type of submodule allowed inside a "frozen"
-           package are other frozen modules or packages. */
-        if (PyString_Size(path) + 1 + strlen(name) >= (size_t)buflen) {
-            PyErr_SetString(PyExc_ImportError,
-                            "full frozen module name too long");
-            return NULL;
-        }
-        strcpy(buf, PyString_AsString(path));
-        strcat(buf, ".");
-        strcat(buf, name);
-        strcpy(name, buf);
-        if (find_frozen(name) != NULL) {
-            strcpy(buf, name);
-            return &fd_frozen;
-        }
-        PyErr_Format(PyExc_ImportError,
-                     "No frozen submodule named %.200s", name);
-        return NULL;
-    }
-    if (path == NULL) {
-        if (is_builtin(name)) {
-            strcpy(buf, name);
-            return &fd_builtin;
-        }
-        if ((find_frozen(name)) != NULL) {
-            strcpy(buf, name);
-            return &fd_frozen;
-        }
-
-#ifdef MS_COREDLL
-        fp = PyWin_FindRegisteredModule(name, &fdp, buf, buflen);
-        if (fp != NULL) {
-            *p_fp = fp;
-            return fdp;
-        }
-#endif
-        path = PySys_GetObject("path");
-    }
-    if (path == NULL || !PyList_Check(path)) {
-        PyErr_SetString(PyExc_ImportError,
-                        "sys.path must be a list of directory names");
-        return NULL;
-    }
-
-    path_hooks = PySys_GetObject("path_hooks");
-    if (path_hooks == NULL || !PyList_Check(path_hooks)) {
-        PyErr_SetString(PyExc_ImportError,
-                        "sys.path_hooks must be a list of "
-                        "import hooks");
-        return NULL;
-    }
-    path_importer_cache = PySys_GetObject("path_importer_cache");
-    if (path_importer_cache == NULL ||
-        !PyDict_Check(path_importer_cache)) {
-        PyErr_SetString(PyExc_ImportError,
-                        "sys.path_importer_cache must be a dict");
-        return NULL;
-    }
-
-    npath = PyList_Size(path);
-    namelen = strlen(name);
-    for (i = 0; i < npath; i++) {
-        PyObject *copy = NULL;
-        PyObject *v = PyList_GetItem(path, i);
-        if (!v)
-            return NULL;
-#ifdef Py_USING_UNICODE
-        if (PyUnicode_Check(v)) {
-            copy = PyUnicode_Encode(PyUnicode_AS_UNICODE(v),
-                PyUnicode_GET_SIZE(v), Py_FileSystemDefaultEncoding, NULL);
-            if (copy == NULL)
-                return NULL;
-            v = copy;
-        }
-        else
-#endif
-        if (!PyString_Check(v))
-            continue;
-        len = PyString_GET_SIZE(v);
-        if (len + 2 + namelen + MAXSUFFIXSIZE >= buflen) {
-            Py_XDECREF(copy);
-            continue; /* Too long */
-        }
-        strcpy(buf, PyString_AS_STRING(v));
-        if (strlen(buf) != len) {
-            Py_XDECREF(copy);
-            continue; /* v contains '\0' */
-        }
-
-        /* sys.path_hooks import hook */
-        if (p_loader != NULL) {
-            PyObject *importer;
-
-            importer = get_path_importer(path_importer_cache,
-                                         path_hooks, v);
-            if (importer == NULL) {
-                Py_XDECREF(copy);
-                return NULL;
-            }
-            /* Note: importer is a borrowed reference */
-            if (importer != Py_None) {
-                PyObject *loader;
-                loader = PyObject_CallMethod(importer,
-                                             "find_module",
-                                             "s", fullname);
-                Py_XDECREF(copy);
-                if (loader == NULL)
-                    return NULL;  /* error */
-                if (loader != Py_None) {
-                    /* a loader was found */
-                    *p_loader = loader;
-                    return &importhookdescr;
-                }
-                Py_DECREF(loader);
-                continue;
-            }
-        }
-        /* no hook was found, use builtin import */
-
-        if (len > 0 && buf[len-1] != SEP
-#ifdef ALTSEP
-            && buf[len-1] != ALTSEP
-#endif
-            )
-            buf[len++] = SEP;
-        strcpy(buf+len, name);
-        len += namelen;
-
-        /* Check for package import (buf holds a directory name,
-           and there's an __init__ module in that directory */
-#ifdef HAVE_STAT
-        if (stat(buf, &statbuf) == 0 &&         /* it exists */
-            S_ISDIR(statbuf.st_mode) &&         /* it's a directory */
-            case_ok(buf, len, namelen, name)) { /* case matches */
-            if (find_init_module(buf)) { /* and has __init__.py */
-                Py_XDECREF(copy);
-                return &fd_package;
-            }
-            else {
-                char warnstr[MAXPATHLEN+80];
-                sprintf(warnstr, "Not importing directory "
-                    "'%.*s': missing __init__.py",
-                    MAXPATHLEN, buf);
-                if (PyErr_Warn(PyExc_ImportWarning,
-                               warnstr)) {
-                    Py_XDECREF(copy);
-                    return NULL;
-                }
-            }
-        }
-#else
-        /* XXX How are you going to test for directories? */
-#ifdef RISCOS
-        if (isdir(buf) &&
-            case_ok(buf, len, namelen, name)) {
-            if (find_init_module(buf)) {
-                Py_XDECREF(copy);
-                return &fd_package;
-            }
-            else {
-                char warnstr[MAXPATHLEN+80];
-                sprintf(warnstr, "Not importing directory "
-                    "'%.*s': missing __init__.py",
-                    MAXPATHLEN, buf);
-                if (PyErr_Warn(PyExc_ImportWarning,
-                               warnstr)) {
-                    Py_XDECREF(copy);
-                    return NULL;
-                }
-        }
-#endif
-#endif
-#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);
-            filemode = fdp->mode;
-            if (filemode[0] == 'U')
-                filemode = "r" PY_STDIOTEXTMODE;
-            fp = fopen(buf, filemode);
-            if (fp != NULL) {
-                if (case_ok(buf, len, namelen, name))
-                    break;
-                else {                   /* continue search */
-                    fclose(fp);
-                    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;
-    }
-    if (fp == NULL) {
-        PyErr_Format(PyExc_ImportError,
-                     "No module named %.200s", name);
-        return NULL;
-    }
-    *p_fp = fp;
-    return fdp;
-}
-
-/* Helpers for main.c
- *  Find the source file corresponding to a named module
- */
-struct filedescr *
-_PyImport_FindModule(const char *name, PyObject *path, char *buf,
-            size_t buflen, FILE **p_fp, PyObject **p_loader)
-{
-    return find_module((char *) name, (char *) name, path,
-                       buf, buflen, p_fp, p_loader);
-}
-
-PyAPI_FUNC(int) _PyImport_IsScript(struct filedescr * fd)
-{
-    return fd->type == PY_SOURCE || fd->type == PY_COMPILED;
-}
-
-/* case_ok(char* buf, Py_ssize_t len, Py_ssize_t namelen, char* name)
- * The arguments here are tricky, best shown by example:
- *    /a/b/c/d/e/f/g/h/i/j/k/some_long_module_name.py\0
- *    ^                      ^                   ^    ^
- *    |--------------------- buf ---------------------|
- *    |------------------- len ------------------|
- *                           |------ name -------|
- *                           |----- namelen -----|
- * buf is the full path, but len only counts up to (& exclusive of) the
- * extension.  name is the module name, also exclusive of extension.
- *
- * We've already done a successful stat() or fopen() on buf, so know that
- * there's some match, possibly case-insensitive.
- *
- * case_ok() is to return 1 if there's a case-sensitive match for
- * name, else 0.  case_ok() is also to return 1 if envar PYTHONCASEOK
- * exists.
- *
- * case_ok() is used to implement case-sensitive import semantics even
- * on platforms with case-insensitive filesystems.  It's trivial to implement
- * for case-sensitive filesystems.  It's pretty much a cross-platform
- * nightmare for systems with case-insensitive filesystems.
- */
-
-/* First we may need a pile of platform-specific header files; the sequence
- * of #if's here should match the sequence in the body of case_ok().
- */
-#if defined(MS_WINDOWS)
-#include <windows.h>
-
-#elif defined(DJGPP)
-#include <dir.h>
-
-#elif (defined(__MACH__) && defined(__APPLE__) || defined(__CYGWIN__)) && defined(HAVE_DIRENT_H)
-#include <sys/types.h>
-#include <dirent.h>
-
-#elif defined(PYOS_OS2)
-#define INCL_DOS
-#define INCL_DOSERRORS
-#define INCL_NOPMAPI
-#include <os2.h>
-
-#elif defined(RISCOS)
-#include "oslib/osfscontrol.h"
-#endif
-
-static int
-case_ok(char *buf, Py_ssize_t len, Py_ssize_t namelen, char *name)
-{
-/* Pick a platform-specific implementation; the sequence of #if's here should
- * match the sequence just above.
- */
-
-/* MS_WINDOWS */
-#if defined(MS_WINDOWS)
-    WIN32_FIND_DATA data;
-    HANDLE h;
-
-    if (Py_GETENV("PYTHONCASEOK") != NULL)
-        return 1;
-
-    h = FindFirstFile(buf, &data);
-    if (h == INVALID_HANDLE_VALUE) {
-        PyErr_Format(PyExc_NameError,
-          "Can't find file for module %.100s\n(filename %.300s)",
-          name, buf);
-        return 0;
-    }
-    FindClose(h);
-    return strncmp(data.cFileName, name, namelen) == 0;
-
-/* DJGPP */
-#elif defined(DJGPP)
-    struct ffblk ffblk;
-    int done;
-
-    if (Py_GETENV("PYTHONCASEOK") != NULL)
-        return 1;
-
-    done = findfirst(buf, &ffblk, FA_ARCH|FA_RDONLY|FA_HIDDEN|FA_DIREC);
-    if (done) {
-        PyErr_Format(PyExc_NameError,
-          "Can't find file for module %.100s\n(filename %.300s)",
-          name, buf);
-        return 0;
-    }
-    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)
-    DIR *dirp;
-    struct dirent *dp;
-    char dirname[MAXPATHLEN + 1];
-    const int dirlen = len - namelen - 1; /* don't want trailing SEP */
-
-    if (Py_GETENV("PYTHONCASEOK") != NULL)
-        return 1;
-
-    /* Copy the dir component into dirname; substitute "." if empty */
-    if (dirlen <= 0) {
-        dirname[0] = '.';
-        dirname[1] = '\0';
-    }
-    else {
-        assert(dirlen <= MAXPATHLEN);
-        memcpy(dirname, buf, dirlen);
-        dirname[dirlen] = '\0';
-    }
-    /* Open the directory and search the entries for an exact match. */
-    dirp = opendir(dirname);
-    if (dirp) {
-        char *nameWithExt = buf + len - namelen;
-        while ((dp = readdir(dirp)) != NULL) {
-            const int thislen =
-#ifdef _DIRENT_HAVE_D_NAMELEN
-                                    dp->d_namlen;
-#else
-                                    strlen(dp->d_name);
-#endif
-            if (thislen >= namelen &&
-                strcmp(dp->d_name, nameWithExt) == 0) {
-                (void)closedir(dirp);
-                return 1; /* Found */
-            }
-        }
-        (void)closedir(dirp);
-    }
-    return 0 ; /* Not found */
-
-/* RISC OS */
-#elif defined(RISCOS)
-    char canon[MAXPATHLEN+1]; /* buffer for the canonical form of the path */
-    char buf2[MAXPATHLEN+2];
-    char *nameWithExt = buf+len-namelen;
-    int canonlen;
-    os_error *e;
-
-    if (Py_GETENV("PYTHONCASEOK") != NULL)
-        return 1;
-
-    /* workaround:
-       append wildcard, otherwise case of filename wouldn't be touched */
-    strcpy(buf2, buf);
-    strcat(buf2, "*");
-
-    e = xosfscontrol_canonicalise_path(buf2,canon,0,0,MAXPATHLEN+1,&canonlen);
-    canonlen = MAXPATHLEN+1-canonlen;
-    if (e || canonlen<=0 || canonlen>(MAXPATHLEN+1) )
-        return 0;
-    if (strcmp(nameWithExt, canon+canonlen-strlen(nameWithExt))==0)
-        return 1; /* match */
-
-    return 0;
-
-/* OS/2 */
-#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;
-
-#endif
-}
-
-
-#ifdef HAVE_STAT
-/* Helper to look for __init__.py or __init__.py[co] in potential package */
-static int
-find_init_module(char *buf)
-{
-    const size_t save_len = strlen(buf);
-    size_t i = save_len;
-    char *pname;  /* pointer to start of __init__ */
-    struct stat statbuf;
-
-/*      For calling case_ok(buf, len, namelen, name):
- *      /a/b/c/d/e/f/g/h/i/j/k/some_long_module_name.py\0
- *      ^                      ^                   ^    ^
- *      |--------------------- buf ---------------------|
- *      |------------------- len ------------------|
- *                             |------ name -------|
- *                             |----- namelen -----|
- */
-    if (save_len + 13 >= MAXPATHLEN)
-        return 0;
-    buf[i++] = SEP;
-    pname = buf + i;
-    strcpy(pname, "__init__.py");
-    if (stat(buf, &statbuf) == 0) {
-        if (case_ok(buf,
-                    save_len + 9,               /* len("/__init__") */
-                8,                              /* len("__init__") */
-                pname)) {
-            buf[save_len] = '\0';
-            return 1;
-        }
-    }
-    i += strlen(pname);
-    strcpy(buf+i, Py_OptimizeFlag ? "o" : "c");
-    if (stat(buf, &statbuf) == 0) {
-        if (case_ok(buf,
-                    save_len + 9,               /* len("/__init__") */
-                8,                              /* len("__init__") */
-                pname)) {
-            buf[save_len] = '\0';
-            return 1;
-        }
-    }
-    buf[save_len] = '\0';
-    return 0;
-}
-
-#else
-
-#ifdef RISCOS
-static int
-find_init_module(buf)
-    char *buf;
-{
-    int save_len = strlen(buf);
-    int i = save_len;
-
-    if (save_len + 13 >= MAXPATHLEN)
-        return 0;
-    buf[i++] = SEP;
-    strcpy(buf+i, "__init__/py");
-    if (isfile(buf)) {
-        buf[save_len] = '\0';
-        return 1;
-    }
-
-    if (Py_OptimizeFlag)
-        strcpy(buf+i, "o");
-    else
-        strcpy(buf+i, "c");
-    if (isfile(buf)) {
-        buf[save_len] = '\0';
-        return 1;
-    }
-    buf[save_len] = '\0';
-    return 0;
-}
-#endif /*RISCOS*/
-
-#endif /* HAVE_STAT */
-
-
-static int init_builtin(char *); /* Forward */
-
-/* Load an external module using the default search path and return
-   its module object WITH INCREMENTED REFERENCE COUNT */
-
-static PyObject *
-load_module(char *name, FILE *fp, char *pathname, int type, PyObject *loader)
-{
-    PyObject *modules;
-    PyObject *m;
-    int err;
-
-    /* First check that there's an open file (if we need one)  */
-    switch (type) {
-    case PY_SOURCE:
-    case PY_COMPILED:
-        if (fp == NULL) {
-            PyErr_Format(PyExc_ValueError,
-               "file object required for import (type code %d)",
-                         type);
-            return NULL;
-        }
-    }
-
-    switch (type) {
-
-    case PY_SOURCE:
-        m = load_source_module(name, pathname, fp);
-        break;
-
-    case PY_COMPILED:
-        m = load_compiled_module(name, pathname, fp);
-        break;
-
-#ifdef HAVE_DYNAMIC_LOADING
-    case C_EXTENSION:
-        m = _PyImport_LoadDynamicModule(name, pathname, fp);
-        break;
-#endif
-
-    case PKG_DIRECTORY:
-        m = load_package(name, pathname);
-        break;
-
-    case C_BUILTIN:
-    case PY_FROZEN:
-        if (pathname != NULL && pathname[0] != '\0')
-            name = pathname;
-        if (type == C_BUILTIN)
-            err = init_builtin(name);
-        else
-            err = PyImport_ImportFrozenModule(name);
-        if (err < 0)
-            return NULL;
-        if (err == 0) {
-            PyErr_Format(PyExc_ImportError,
-                         "Purported %s module %.200s not found",
-                         type == C_BUILTIN ?
-                                    "builtin" : "frozen",
-                         name);
-            return NULL;
-        }
-        modules = PyImport_GetModuleDict();
-        m = PyDict_GetItemString(modules, name);
-        if (m == NULL) {
-            PyErr_Format(
-                PyExc_ImportError,
-                "%s module %.200s not properly initialized",
-                type == C_BUILTIN ?
-                    "builtin" : "frozen",
-                name);
-            return NULL;
-        }
-        Py_INCREF(m);
-        break;
-
-    case IMP_HOOK: {
-        if (loader == NULL) {
-            PyErr_SetString(PyExc_ImportError,
-                            "import hook without loader");
-            return NULL;
-        }
-        m = PyObject_CallMethod(loader, "load_module", "s", name);
-        break;
-    }
-
-    default:
-        PyErr_Format(PyExc_ImportError,
-                     "Don't know how to import %.200s (type code %d)",
-                      name, type);
-        m = NULL;
-
-    }
-
-    return m;
-}
-
-
-/* Initialize a built-in module.
-   Return 1 for success, 0 if the module is not found, and -1 with
-   an exception set if the initialization failed. */
-
-static int
-init_builtin(char *name)
-{
-    struct _inittab *p;
-
-    if (_PyImport_FindExtension(name, name) != NULL)
-        return 1;
-
-    for (p = PyImport_Inittab; p->name != NULL; p++) {
-        if (strcmp(name, p->name) == 0) {
-            if (p->initfunc == NULL) {
-                PyErr_Format(PyExc_ImportError,
-                    "Cannot re-init internal module %.200s",
-                    name);
-                return -1;
-            }
-            if (Py_VerboseFlag)
-                PySys_WriteStderr("import %s # builtin\n", name);
-            (*p->initfunc)();
-            if (PyErr_Occurred())
-                return -1;
-            if (_PyImport_FixupExtension(name, name) == NULL)
-                return -1;
-            return 1;
-        }
-    }
-    return 0;
-}
-
-
-/* Frozen modules */
-
-static struct _frozen *
-find_frozen(char *name)
-{
-    struct _frozen *p;
-
-    for (p = PyImport_FrozenModules; ; p++) {
-        if (p->name == NULL)
-            return NULL;
-        if (strcmp(p->name, name) == 0)
-            break;
-    }
-    return p;
-}
-
-static PyObject *
-get_frozen_object(char *name)
-{
-    struct _frozen *p = find_frozen(name);
-    int size;
-
-    if (p == NULL) {
-        PyErr_Format(PyExc_ImportError,
-                     "No such frozen object named %.200s",
-                     name);
-        return NULL;
-    }
-    if (p->code == NULL) {
-        PyErr_Format(PyExc_ImportError,
-                     "Excluded frozen object named %.200s",
-                     name);
-        return NULL;
-    }
-    size = p->size;
-    if (size < 0)
-        size = -size;
-    return PyMarshal_ReadObjectFromString((char *)p->code, size);
-}
-
-/* Initialize a frozen module.
-   Return 1 for succes, 0 if the module is not found, and -1 with
-   an exception set if the initialization failed.
-   This function is also used from frozenmain.c */
-
-int
-PyImport_ImportFrozenModule(char *name)
-{
-    struct _frozen *p = find_frozen(name);
-    PyObject *co;
-    PyObject *m;
-    int ispackage;
-    int size;
-
-    if (p == NULL)
-        return 0;
-    if (p->code == NULL) {
-        PyErr_Format(PyExc_ImportError,
-                     "Excluded frozen object named %.200s",
-                     name);
-        return -1;
-    }
-    size = p->size;
-    ispackage = (size < 0);
-    if (ispackage)
-        size = -size;
-    if (Py_VerboseFlag)
-        PySys_WriteStderr("import %s # frozen%s\n",
-            name, ispackage ? " package" : "");
-    co = PyMarshal_ReadObjectFromString((char *)p->code, size);
-    if (co == NULL)
-        return -1;
-    if (!PyCode_Check(co)) {
-        PyErr_Format(PyExc_TypeError,
-                     "frozen object %.200s is not a code object",
-                     name);
-        goto err_return;
-    }
-    if (ispackage) {
-        /* Set __path__ to the package name */
-        PyObject *d, *s;
-        int err;
-        m = PyImport_AddModule(name);
-        if (m == NULL)
-            goto err_return;
-        d = PyModule_GetDict(m);
-        s = PyString_InternFromString(name);
-        if (s == NULL)
-            goto err_return;
-        err = PyDict_SetItemString(d, "__path__", s);
-        Py_DECREF(s);
-        if (err != 0)
-            goto err_return;
-    }
-    m = PyImport_ExecCodeModuleEx(name, co, "<frozen>");
-    if (m == NULL)
-        goto err_return;
-    Py_DECREF(co);
-    Py_DECREF(m);
-    return 1;
-err_return:
-    Py_DECREF(co);
-    return -1;
-}
-
-
-/* Import a module, either built-in, frozen, or external, and return
-   its module object WITH INCREMENTED REFERENCE COUNT */
-
-PyObject *
-PyImport_ImportModule(const char *name)
-{
-    PyObject *pname;
-    PyObject *result;
-
-    pname = PyString_FromString(name);
-    if (pname == NULL)
-        return NULL;
-    result = PyImport_Import(pname);
-    Py_DECREF(pname);
-    return result;
-}
-
-/* Import a module without blocking
- *
- * At first it tries to fetch the module from sys.modules. If the module was
- * never loaded before it loads it with PyImport_ImportModule() unless another
- * thread holds the import lock. In the latter case the function raises an
- * ImportError instead of blocking.
- *
- * Returns the module object with incremented ref count.
- */
-PyObject *
-PyImport_ImportModuleNoBlock(const char *name)
-{
-    PyObject *result;
-    PyObject *modules;
-#ifdef WITH_THREAD
-    long me;
-#endif
-
-    /* Try to get the module from sys.modules[name] */
-    modules = PyImport_GetModuleDict();
-    if (modules == NULL)
-        return NULL;
-
-    result = PyDict_GetItemString(modules, name);
-    if (result != NULL) {
-        Py_INCREF(result);
-        return result;
-    }
-    else {
-        PyErr_Clear();
-    }
-#ifdef WITH_THREAD
-    /* check the import lock
-     * me might be -1 but I ignore the error here, the lock function
-     * takes care of the problem */
-    me = PyThread_get_thread_ident();
-    if (import_lock_thread == -1 || import_lock_thread == me) {
-        /* no thread or me is holding the lock */
-        return PyImport_ImportModule(name);
-    }
-    else {
-        PyErr_Format(PyExc_ImportError,
-                     "Failed to import %.200s because the import lock"
-                     "is held by another thread.",
-                     name);
-        return NULL;
-    }
-#else
-    return PyImport_ImportModule(name);
-#endif
-}
-
-/* Forward declarations for helper routines */
-static PyObject *get_parent(PyObject *globals, char *buf,
-                            Py_ssize_t *p_buflen, int level);
-static PyObject *load_next(PyObject *mod, PyObject *altmod,
-                           char **p_name, char *buf, Py_ssize_t *p_buflen);
-static int mark_miss(char *name);
-static int ensure_fromlist(PyObject *mod, PyObject *fromlist,
-                           char *buf, Py_ssize_t buflen, int recursive);
-static PyObject * import_submodule(PyObject *mod, char *name, char *fullname);
-
-/* The Magnum Opus of dotted-name import :-) */
-
-static PyObject *
-import_module_level(char *name, PyObject *globals, PyObject *locals,
-                    PyObject *fromlist, int level)
-{
-    char buf[MAXPATHLEN+1];
-    Py_ssize_t buflen = 0;
-    PyObject *parent, *head, *next, *tail;
-
-    if (strchr(name, '/') != NULL
-#ifdef MS_WINDOWS
-        || strchr(name, '\\') != NULL
-#endif
-        ) {
-        PyErr_SetString(PyExc_ImportError,
-                        "Import by filename is not supported.");
-        return NULL;
-    }
-
-    parent = get_parent(globals, buf, &buflen, level);
-    if (parent == NULL)
-        return NULL;
-
-    head = load_next(parent, level < 0 ? Py_None : parent, &name, buf,
-                        &buflen);
-    if (head == NULL)
-        return NULL;
-
-    tail = head;
-    Py_INCREF(tail);
-    while (name) {
-        next = load_next(tail, tail, &name, buf, &buflen);
-        Py_DECREF(tail);
-        if (next == NULL) {
-            Py_DECREF(head);
-            return NULL;
-        }
-        tail = next;
-    }
-    if (tail == Py_None) {
-        /* If tail is Py_None, both get_parent and load_next found
-           an empty module name: someone called __import__("") or
-           doctored faulty bytecode */
-        Py_DECREF(tail);
-        Py_DECREF(head);
-        PyErr_SetString(PyExc_ValueError,
-                        "Empty module name");
-        return NULL;
-    }
-
-    if (fromlist != NULL) {
-        if (fromlist == Py_None || !PyObject_IsTrue(fromlist))
-            fromlist = NULL;
-    }
-
-    if (fromlist == NULL) {
-        Py_DECREF(tail);
-        return head;
-    }
-
-    Py_DECREF(head);
-    if (!ensure_fromlist(tail, fromlist, buf, buflen, 0)) {
-        Py_DECREF(tail);
-        return NULL;
-    }
-
-    return tail;
-}
-
-PyObject *
-PyImport_ImportModuleLevel(char *name, PyObject *globals, PyObject *locals,
-                         PyObject *fromlist, int level)
-{
-    PyObject *result;
-    _PyImport_AcquireLock();
-    result = import_module_level(name, globals, locals, fromlist, level);
-    if (_PyImport_ReleaseLock() < 0) {
-        Py_XDECREF(result);
-        PyErr_SetString(PyExc_RuntimeError,
-                        "not holding the import lock");
-        return NULL;
-    }
-    return result;
-}
-
-/* Return the package that an import is being performed in.  If globals comes
-   from the module foo.bar.bat (not itself a package), this returns the
-   sys.modules entry for foo.bar.  If globals is from a package's __init__.py,
-   the package's entry in sys.modules is returned, as a borrowed reference.
-
-   The *name* of the returned package is returned in buf, with the length of
-   the name in *p_buflen.
-
-   If globals doesn't come from a package or a module in a package, or a
-   corresponding entry is not found in sys.modules, Py_None is returned.
-*/
-static PyObject *
-get_parent(PyObject *globals, char *buf, Py_ssize_t *p_buflen, int level)
-{
-    static PyObject *namestr = NULL;
-    static PyObject *pathstr = NULL;
-    static PyObject *pkgstr = NULL;
-    PyObject *pkgname, *modname, *modpath, *modules, *parent;
-    int orig_level = level;
-
-    if (globals == NULL || !PyDict_Check(globals) || !level)
-        return Py_None;
-
-    if (namestr == NULL) {
-        namestr = PyString_InternFromString("__name__");
-        if (namestr == NULL)
-            return NULL;
-    }
-    if (pathstr == NULL) {
-        pathstr = PyString_InternFromString("__path__");
-        if (pathstr == NULL)
-            return NULL;
-    }
-    if (pkgstr == NULL) {
-        pkgstr = PyString_InternFromString("__package__");
-        if (pkgstr == NULL)
-            return NULL;
-    }
-
-    *buf = '\0';
-    *p_buflen = 0;
-    pkgname = PyDict_GetItem(globals, pkgstr);
-
-    if ((pkgname != NULL) && (pkgname != Py_None)) {
-        /* __package__ is set, so use it */
-        Py_ssize_t len;
-        if (!PyString_Check(pkgname)) {
-            PyErr_SetString(PyExc_ValueError,
-                            "__package__ set to non-string");
-            return NULL;
-        }
-        len = PyString_GET_SIZE(pkgname);
-        if (len == 0) {
-            if (level > 0) {
-                PyErr_SetString(PyExc_ValueError,
-                    "Attempted relative import in non-package");
-                return NULL;
-            }
-            return Py_None;
-        }
-        if (len > MAXPATHLEN) {
-            PyErr_SetString(PyExc_ValueError,
-                            "Package name too long");
-            return NULL;
-        }
-        strcpy(buf, PyString_AS_STRING(pkgname));
-    } else {
-        /* __package__ not set, so figure it out and set it */
-        modname = PyDict_GetItem(globals, namestr);
-        if (modname == NULL || !PyString_Check(modname))
-            return Py_None;
-
-        modpath = PyDict_GetItem(globals, pathstr);
-        if (modpath != NULL) {
-            /* __path__ is set, so modname is already the package name */
-            Py_ssize_t len = PyString_GET_SIZE(modname);
-            int error;
-            if (len > MAXPATHLEN) {
-                PyErr_SetString(PyExc_ValueError,
-                                "Module name too long");
-                return NULL;
-            }
-            strcpy(buf, PyString_AS_STRING(modname));
-            error = PyDict_SetItem(globals, pkgstr, modname);
-            if (error) {
-                PyErr_SetString(PyExc_ValueError,
-                                "Could not set __package__");
-                return NULL;
-            }
-        } else {
-            /* Normal module, so work out the package name if any */
-            char *start = PyString_AS_STRING(modname);
-            char *lastdot = strrchr(start, '.');
-            size_t len;
-            int error;
-            if (lastdot == NULL && level > 0) {
-                PyErr_SetString(PyExc_ValueError,
-                    "Attempted relative import in non-package");
-                return NULL;
-            }
-            if (lastdot == NULL) {
-                error = PyDict_SetItem(globals, pkgstr, Py_None);
-                if (error) {
-                    PyErr_SetString(PyExc_ValueError,
-                        "Could not set __package__");
-                    return NULL;
-                }
-                return Py_None;
-            }
-            len = lastdot - start;
-            if (len >= MAXPATHLEN) {
-                PyErr_SetString(PyExc_ValueError,
-                                "Module name too long");
-                return NULL;
-            }
-            strncpy(buf, start, len);
-            buf[len] = '\0';
-            pkgname = PyString_FromString(buf);
-            if (pkgname == NULL) {
-                return NULL;
-            }
-            error = PyDict_SetItem(globals, pkgstr, pkgname);
-            Py_DECREF(pkgname);
-            if (error) {
-                PyErr_SetString(PyExc_ValueError,
-                                "Could not set __package__");
-                return NULL;
-            }
-        }
-    }
-    while (--level > 0) {
-        char *dot = strrchr(buf, '.');
-        if (dot == NULL) {
-            PyErr_SetString(PyExc_ValueError,
-                "Attempted relative import beyond "
-                "toplevel package");
-            return NULL;
-        }
-        *dot = '\0';
-    }
-    *p_buflen = strlen(buf);
-
-    modules = PyImport_GetModuleDict();
-    parent = PyDict_GetItemString(modules, buf);
-    if (parent == NULL) {
-        if (orig_level < 1) {
-            PyObject *err_msg = PyString_FromFormat(
-                "Parent module '%.200s' not found "
-                "while handling absolute import", buf);
-            if (err_msg == NULL) {
-                return NULL;
-            }
-            if (!PyErr_WarnEx(PyExc_RuntimeWarning,
-                            PyString_AsString(err_msg), 1)) {
-                *buf = '\0';
-                *p_buflen = 0;
-                parent = Py_None;
-            }
-            Py_DECREF(err_msg);
-        } else {
-            PyErr_Format(PyExc_SystemError,
-                "Parent module '%.200s' not loaded, "
-                "cannot perform relative import", buf);
-        }
-    }
-    return parent;
-    /* We expect, but can't guarantee, if parent != None, that:
-       - parent.__name__ == buf
-       - parent.__dict__ is globals
-       If this is violated...  Who cares? */
-}
-
-/* altmod is either None or same as mod */
-static PyObject *
-load_next(PyObject *mod, PyObject *altmod, char **p_name, char *buf,
-          Py_ssize_t *p_buflen)
-{
-    char *name = *p_name;
-    char *dot = strchr(name, '.');
-    size_t len;
-    char *p;
-    PyObject *result;
-
-    if (strlen(name) == 0) {
-        /* completely empty module name should only happen in
-           'from . import' (or '__import__("")')*/
-        Py_INCREF(mod);
-        *p_name = NULL;
-        return mod;
-    }
-
-    if (dot == NULL) {
-        *p_name = NULL;
-        len = strlen(name);
-    }
-    else {
-        *p_name = dot+1;
-        len = dot-name;
-    }
-    if (len == 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "Empty module name");
-        return NULL;
-    }
-
-    p = buf + *p_buflen;
-    if (p != buf)
-        *p++ = '.';
-    if (p+len-buf >= MAXPATHLEN) {
-        PyErr_SetString(PyExc_ValueError,
-                        "Module name too long");
-        return NULL;
-    }
-    strncpy(p, name, len);
-    p[len] = '\0';
-    *p_buflen = p+len-buf;
-
-    result = import_submodule(mod, p, buf);
-    if (result == Py_None && altmod != mod) {
-        Py_DECREF(result);
-        /* Here, altmod must be None and mod must not be None */
-        result = import_submodule(altmod, p, p);
-        if (result != NULL && result != Py_None) {
-            if (mark_miss(buf) != 0) {
-                Py_DECREF(result);
-                return NULL;
-            }
-            strncpy(buf, name, len);
-            buf[len] = '\0';
-            *p_buflen = len;
-        }
-    }
-    if (result == NULL)
-        return NULL;
-
-    if (result == Py_None) {
-        Py_DECREF(result);
-        PyErr_Format(PyExc_ImportError,
-                     "No module named %.200s", name);
-        return NULL;
-    }
-
-    return result;
-}
-
-static int
-mark_miss(char *name)
-{
-    PyObject *modules = PyImport_GetModuleDict();
-    return PyDict_SetItemString(modules, name, Py_None);
-}
-
-static int
-ensure_fromlist(PyObject *mod, PyObject *fromlist, char *buf, Py_ssize_t buflen,
-                int recursive)
-{
-    int i;
-
-    if (!PyObject_HasAttrString(mod, "__path__"))
-        return 1;
-
-    for (i = 0; ; i++) {
-        PyObject *item = PySequence_GetItem(fromlist, i);
-        int hasit;
-        if (item == NULL) {
-            if (PyErr_ExceptionMatches(PyExc_IndexError)) {
-                PyErr_Clear();
-                return 1;
-            }
-            return 0;
-        }
-        if (!PyString_Check(item)) {
-            PyErr_SetString(PyExc_TypeError,
-                            "Item in ``from list'' not a string");
-            Py_DECREF(item);
-            return 0;
-        }
-        if (PyString_AS_STRING(item)[0] == '*') {
-            PyObject *all;
-            Py_DECREF(item);
-            /* See if the package defines __all__ */
-            if (recursive)
-                continue; /* Avoid endless recursion */
-            all = PyObject_GetAttrString(mod, "__all__");
-            if (all == NULL)
-                PyErr_Clear();
-            else {
-                int ret = ensure_fromlist(mod, all, buf, buflen, 1);
-                Py_DECREF(all);
-                if (!ret)
-                    return 0;
-            }
-            continue;
-        }
-        hasit = PyObject_HasAttr(mod, item);
-        if (!hasit) {
-            char *subname = PyString_AS_STRING(item);
-            PyObject *submod;
-            char *p;
-            if (buflen + strlen(subname) >= MAXPATHLEN) {
-                PyErr_SetString(PyExc_ValueError,
-                                "Module name too long");
-                Py_DECREF(item);
-                return 0;
-            }
-            p = buf + buflen;
-            *p++ = '.';
-            strcpy(p, subname);
-            submod = import_submodule(mod, subname, buf);
-            Py_XDECREF(submod);
-            if (submod == NULL) {
-                Py_DECREF(item);
-                return 0;
-            }
-        }
-        Py_DECREF(item);
-    }
-
-    /* NOTREACHED */
-}
-
-static int
-add_submodule(PyObject *mod, PyObject *submod, char *fullname, char *subname,
-              PyObject *modules)
-{
-    if (mod == Py_None)
-        return 1;
-    /* Irrespective of the success of this load, make a
-       reference to it in the parent package module.  A copy gets
-       saved in the modules dictionary under the full name, so get a
-       reference from there, if need be.  (The exception is when the
-       load failed with a SyntaxError -- then there's no trace in
-       sys.modules.  In that case, of course, do nothing extra.) */
-    if (submod == NULL) {
-        submod = PyDict_GetItemString(modules, fullname);
-        if (submod == NULL)
-            return 1;
-    }
-    if (PyModule_Check(mod)) {
-        /* We can't use setattr here since it can give a
-         * spurious warning if the submodule name shadows a
-         * builtin name */
-        PyObject *dict = PyModule_GetDict(mod);
-        if (!dict)
-            return 0;
-        if (PyDict_SetItemString(dict, subname, submod) < 0)
-            return 0;
-    }
-    else {
-        if (PyObject_SetAttrString(mod, subname, submod) < 0)
-            return 0;
-    }
-    return 1;
-}
-
-static PyObject *
-import_submodule(PyObject *mod, char *subname, char *fullname)
-{
-    PyObject *modules = PyImport_GetModuleDict();
-    PyObject *m = NULL;
-
-    /* Require:
-       if mod == None: subname == fullname
-       else: mod.__name__ + "." + subname == fullname
-    */
-
-    if ((m = PyDict_GetItemString(modules, fullname)) != NULL) {
-        Py_INCREF(m);
-    }
-    else {
-        PyObject *path, *loader = NULL;
-        char buf[MAXPATHLEN+1];
-        struct filedescr *fdp;
-        FILE *fp = NULL;
-
-        if (mod == Py_None)
-            path = NULL;
-        else {
-            path = PyObject_GetAttrString(mod, "__path__");
-            if (path == NULL) {
-                PyErr_Clear();
-                Py_INCREF(Py_None);
-                return Py_None;
-            }
-        }
-
-        buf[0] = '\0';
-        fdp = find_module(fullname, subname, path, buf, MAXPATHLEN+1,
-                          &fp, &loader);
-        Py_XDECREF(path);
-        if (fdp == NULL) {
-            if (!PyErr_ExceptionMatches(PyExc_ImportError))
-                return NULL;
-            PyErr_Clear();
-            Py_INCREF(Py_None);
-            return Py_None;
-        }
-        m = load_module(fullname, fp, buf, fdp->type, loader);
-        Py_XDECREF(loader);
-        if (fp)
-            fclose(fp);
-        if (!add_submodule(mod, m, fullname, subname, modules)) {
-            Py_XDECREF(m);
-            m = NULL;
-        }
-    }
-
-    return m;
-}
-
-
-/* Re-import a module of any kind and return its module object, WITH
-   INCREMENTED REFERENCE COUNT */
-
-PyObject *
-PyImport_ReloadModule(PyObject *m)
-{
-    PyInterpreterState *interp = PyThreadState_Get()->interp;
-    PyObject *modules_reloading = interp->modules_reloading;
-    PyObject *modules = PyImport_GetModuleDict();
-    PyObject *path = NULL, *loader = NULL, *existing_m = NULL;
-    char *name, *subname;
-    char buf[MAXPATHLEN+1];
-    struct filedescr *fdp;
-    FILE *fp = NULL;
-    PyObject *newm;
-
-    if (modules_reloading == NULL) {
-        Py_FatalError("PyImport_ReloadModule: "
-                      "no modules_reloading dictionary!");
-        return NULL;
-    }
-
-    if (m == NULL || !PyModule_Check(m)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "reload() argument must be module");
-        return NULL;
-    }
-    name = PyModule_GetName(m);
-    if (name == NULL)
-        return NULL;
-    if (m != PyDict_GetItemString(modules, name)) {
-        PyErr_Format(PyExc_ImportError,
-                     "reload(): module %.200s not in sys.modules",
-                     name);
-        return NULL;
-    }
-    existing_m = PyDict_GetItemString(modules_reloading, name);
-    if (existing_m != NULL) {
-        /* Due to a recursive reload, this module is already
-           being reloaded. */
-        Py_INCREF(existing_m);
-        return existing_m;
-    }
-    if (PyDict_SetItemString(modules_reloading, name, m) < 0)
-        return NULL;
-
-    subname = strrchr(name, '.');
-    if (subname == NULL)
-        subname = name;
-    else {
-        PyObject *parentname, *parent;
-        parentname = PyString_FromStringAndSize(name, (subname-name));
-        if (parentname == NULL) {
-            imp_modules_reloading_clear();
-            return NULL;
-        }
-        parent = PyDict_GetItem(modules, parentname);
-        if (parent == NULL) {
-            PyErr_Format(PyExc_ImportError,
-                "reload(): parent %.200s not in sys.modules",
-                PyString_AS_STRING(parentname));
-            Py_DECREF(parentname);
-            imp_modules_reloading_clear();
-            return NULL;
-        }
-        Py_DECREF(parentname);
-        subname++;
-        path = PyObject_GetAttrString(parent, "__path__");
-        if (path == NULL)
-            PyErr_Clear();
-    }
-    buf[0] = '\0';
-    fdp = find_module(name, subname, path, buf, MAXPATHLEN+1, &fp, &loader);
-    Py_XDECREF(path);
-
-    if (fdp == NULL) {
-        Py_XDECREF(loader);
-        imp_modules_reloading_clear();
-        return NULL;
-    }
-
-    newm = load_module(name, fp, buf, fdp->type, loader);
-    Py_XDECREF(loader);
-
-    if (fp)
-        fclose(fp);
-    if (newm == NULL) {
-        /* load_module probably removed name from modules because of
-         * the error.  Put back the original module object.  We're
-         * going to return NULL in this case regardless of whether
-         * replacing name succeeds, so the return value is ignored.
-         */
-        PyDict_SetItemString(modules, name, m);
-    }
-    imp_modules_reloading_clear();
-    return newm;
-}
-
-
-/* Higher-level import emulator which emulates the "import" statement
-   more accurately -- it invokes the __import__() function from the
-   builtins of the current globals.  This means that the import is
-   done using whatever import hooks are installed in the current
-   environment, e.g. by "rexec".
-   A dummy list ["__doc__"] is passed as the 4th argument so that
-   e.g. PyImport_Import(PyString_FromString("win32com.client.gencache"))
-   will return <module "gencache"> instead of <module "win32com">. */
-
-PyObject *
-PyImport_Import(PyObject *module_name)
-{
-    static PyObject *silly_list = NULL;
-    static PyObject *builtins_str = NULL;
-    static PyObject *import_str = NULL;
-    PyObject *globals = NULL;
-    PyObject *import = NULL;
-    PyObject *builtins = NULL;
-    PyObject *r = NULL;
-
-    /* Initialize constant string objects */
-    if (silly_list == NULL) {
-        import_str = PyString_InternFromString("__import__");
-        if (import_str == NULL)
-            return NULL;
-        builtins_str = PyString_InternFromString("__builtins__");
-        if (builtins_str == NULL)
-            return NULL;
-        silly_list = Py_BuildValue("[s]", "__doc__");
-        if (silly_list == NULL)
-            return NULL;
-    }
-
-    /* Get the builtins from current globals */
-    globals = PyEval_GetGlobals();
-    if (globals != NULL) {
-        Py_INCREF(globals);
-        builtins = PyObject_GetItem(globals, builtins_str);
-        if (builtins == NULL)
-            goto err;
-    }
-    else {
-        /* No globals -- use standard builtins, and fake globals */
-        builtins = PyImport_ImportModuleLevel("__builtin__",
-                                              NULL, NULL, NULL, 0);
-        if (builtins == NULL)
-            return NULL;
-        globals = Py_BuildValue("{OO}", builtins_str, builtins);
-        if (globals == NULL)
-            goto err;
-    }
-
-    /* Get the __import__ function from the builtins */
-    if (PyDict_Check(builtins)) {
-        import = PyObject_GetItem(builtins, import_str);
-        if (import == NULL)
-            PyErr_SetObject(PyExc_KeyError, import_str);
-    }
-    else
-        import = PyObject_GetAttr(builtins, import_str);
-    if (import == NULL)
-        goto err;
-
-    /* Call the __import__ function with the proper argument list
-     * Always use absolute import here. */
-    r = PyObject_CallFunction(import, "OOOOi", module_name, globals,
-                              globals, silly_list, 0, NULL);
-
-  err:
-    Py_XDECREF(globals);
-    Py_XDECREF(builtins);
-    Py_XDECREF(import);
-
-    return r;
-}
-
-
-/* Module 'imp' provides Python access to the primitives used for
-   importing modules.
-*/
-
-static PyObject *
-imp_get_magic(PyObject *self, PyObject *noargs)
-{
-    char buf[4];
-
-    buf[0] = (char) ((pyc_magic >>  0) & 0xff);
-    buf[1] = (char) ((pyc_magic >>  8) & 0xff);
-    buf[2] = (char) ((pyc_magic >> 16) & 0xff);
-    buf[3] = (char) ((pyc_magic >> 24) & 0xff);
-
-    return PyString_FromStringAndSize(buf, 4);
-}
-
-static PyObject *
-imp_get_suffixes(PyObject *self, PyObject *noargs)
-{
-    PyObject *list;
-    struct filedescr *fdp;
-
-    list = PyList_New(0);
-    if (list == NULL)
-        return NULL;
-    for (fdp = _PyImport_Filetab; fdp->suffix != NULL; fdp++) {
-        PyObject *item = Py_BuildValue("ssi",
-                               fdp->suffix, fdp->mode, fdp->type);
-        if (item == NULL) {
-            Py_DECREF(list);
-            return NULL;
-        }
-        if (PyList_Append(list, item) < 0) {
-            Py_DECREF(list);
-            Py_DECREF(item);
-            return NULL;
-        }
-        Py_DECREF(item);
-    }
-    return list;
-}
-
-static PyObject *
-call_find_module(char *name, PyObject *path)
-{
-    extern int fclose(FILE *);
-    PyObject *fob, *ret;
-    struct filedescr *fdp;
-    char pathname[MAXPATHLEN+1];
-    FILE *fp = NULL;
-
-    pathname[0] = '\0';
-    if (path == Py_None)
-        path = NULL;
-    fdp = find_module(NULL, name, path, pathname, MAXPATHLEN+1, &fp, NULL);
-    if (fdp == NULL)
-        return NULL;
-    if (fp != NULL) {
-        fob = PyFile_FromFile(fp, pathname, fdp->mode, fclose);
-        if (fob == NULL) {
-            fclose(fp);
-            return NULL;
-        }
-    }
-    else {
-        fob = Py_None;
-        Py_INCREF(fob);
-    }
-    ret = Py_BuildValue("Os(ssi)",
-                  fob, pathname, fdp->suffix, fdp->mode, fdp->type);
-    Py_DECREF(fob);
-    return ret;
-}
-
-static PyObject *
-imp_find_module(PyObject *self, PyObject *args)
-{
-    char *name;
-    PyObject *path = NULL;
-    if (!PyArg_ParseTuple(args, "s|O:find_module", &name, &path))
-        return NULL;
-    return call_find_module(name, path);
-}
-
-static PyObject *
-imp_init_builtin(PyObject *self, PyObject *args)
-{
-    char *name;
-    int ret;
-    PyObject *m;
-    if (!PyArg_ParseTuple(args, "s:init_builtin", &name))
-        return NULL;
-    ret = init_builtin(name);
-    if (ret < 0)
-        return NULL;
-    if (ret == 0) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    m = PyImport_AddModule(name);
-    Py_XINCREF(m);
-    return m;
-}
-
-static PyObject *
-imp_init_frozen(PyObject *self, PyObject *args)
-{
-    char *name;
-    int ret;
-    PyObject *m;
-    if (!PyArg_ParseTuple(args, "s:init_frozen", &name))
-        return NULL;
-    ret = PyImport_ImportFrozenModule(name);
-    if (ret < 0)
-        return NULL;
-    if (ret == 0) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    m = PyImport_AddModule(name);
-    Py_XINCREF(m);
-    return m;
-}
-
-static PyObject *
-imp_get_frozen_object(PyObject *self, PyObject *args)
-{
-    char *name;
-
-    if (!PyArg_ParseTuple(args, "s:get_frozen_object", &name))
-        return NULL;
-    return get_frozen_object(name);
-}
-
-static PyObject *
-imp_is_builtin(PyObject *self, PyObject *args)
-{
-    char *name;
-    if (!PyArg_ParseTuple(args, "s:is_builtin", &name))
-        return NULL;
-    return PyInt_FromLong(is_builtin(name));
-}
-
-static PyObject *
-imp_is_frozen(PyObject *self, PyObject *args)
-{
-    char *name;
-    struct _frozen *p;
-    if (!PyArg_ParseTuple(args, "s:is_frozen", &name))
-        return NULL;
-    p = find_frozen(name);
-    return PyBool_FromLong((long) (p == NULL ? 0 : p->size));
-}
-
-static FILE *
-get_file(char *pathname, PyObject *fob, char *mode)
-{
-    FILE *fp;
-    if (fob == NULL) {
-        if (mode[0] == 'U')
-            mode = "r" PY_STDIOTEXTMODE;
-        fp = fopen(pathname, mode);
-        if (fp == NULL)
-            PyErr_SetFromErrno(PyExc_IOError);
-    }
-    else {
-        fp = PyFile_AsFile(fob);
-        if (fp == NULL)
-            PyErr_SetString(PyExc_ValueError,
-                            "bad/closed file object");
-    }
-    return fp;
-}
-
-static PyObject *
-imp_load_compiled(PyObject *self, PyObject *args)
-{
-    char *name;
-    char *pathname;
-    PyObject *fob = NULL;
-    PyObject *m;
-    FILE *fp;
-    if (!PyArg_ParseTuple(args, "ss|O!:load_compiled", &name, &pathname,
-                          &PyFile_Type, &fob))
-        return NULL;
-    fp = get_file(pathname, fob, "rb");
-    if (fp == NULL)
-        return NULL;
-    m = load_compiled_module(name, pathname, fp);
-    if (fob == NULL)
-        fclose(fp);
-    return m;
-}
-
-#ifdef HAVE_DYNAMIC_LOADING
-
-static PyObject *
-imp_load_dynamic(PyObject *self, PyObject *args)
-{
-    char *name;
-    char *pathname;
-    PyObject *fob = NULL;
-    PyObject *m;
-    FILE *fp = NULL;
-    if (!PyArg_ParseTuple(args, "ss|O!:load_dynamic", &name, &pathname,
-                          &PyFile_Type, &fob))
-        return NULL;
-    if (fob) {
-        fp = get_file(pathname, fob, "r");
-        if (fp == NULL)
-            return NULL;
-    }
-    m = _PyImport_LoadDynamicModule(name, pathname, fp);
-    return m;
-}
-
-#endif /* HAVE_DYNAMIC_LOADING */
-
-static PyObject *
-imp_load_source(PyObject *self, PyObject *args)
-{
-    char *name;
-    char *pathname;
-    PyObject *fob = NULL;
-    PyObject *m;
-    FILE *fp;
-    if (!PyArg_ParseTuple(args, "ss|O!:load_source", &name, &pathname,
-                          &PyFile_Type, &fob))
-        return NULL;
-    fp = get_file(pathname, fob, "r");
-    if (fp == NULL)
-        return NULL;
-    m = load_source_module(name, pathname, fp);
-    if (fob == NULL)
-        fclose(fp);
-    return m;
-}
-
-static PyObject *
-imp_load_module(PyObject *self, PyObject *args)
-{
-    char *name;
-    PyObject *fob;
-    char *pathname;
-    char *suffix; /* Unused */
-    char *mode;
-    int type;
-    FILE *fp;
-
-    if (!PyArg_ParseTuple(args, "sOs(ssi):load_module",
-                          &name, &fob, &pathname,
-                          &suffix, &mode, &type))
-        return NULL;
-    if (*mode) {
-        /* Mode must start with 'r' or 'U' and must not contain '+'.
-           Implicit in this test is the assumption that the mode
-           may contain other modifiers like 'b' or 't'. */
-
-        if (!(*mode == 'r' || *mode == 'U') || strchr(mode, '+')) {
-            PyErr_Format(PyExc_ValueError,
-                         "invalid file open mode %.200s", mode);
-            return NULL;
-        }
-    }
-    if (fob == Py_None)
-        fp = NULL;
-    else {
-        if (!PyFile_Check(fob)) {
-            PyErr_SetString(PyExc_ValueError,
-                "load_module arg#2 should be a file or None");
-            return NULL;
-        }
-        fp = get_file(pathname, fob, mode);
-        if (fp == NULL)
-            return NULL;
-    }
-    return load_module(name, fp, pathname, type, NULL);
-}
-
-static PyObject *
-imp_load_package(PyObject *self, PyObject *args)
-{
-    char *name;
-    char *pathname;
-    if (!PyArg_ParseTuple(args, "ss:load_package", &name, &pathname))
-        return NULL;
-    return load_package(name, pathname);
-}
-
-static PyObject *
-imp_new_module(PyObject *self, PyObject *args)
-{
-    char *name;
-    if (!PyArg_ParseTuple(args, "s:new_module", &name))
-        return NULL;
-    return PyModule_New(name);
-}
-
-static PyObject *
-imp_reload(PyObject *self, PyObject *v)
-{
-    return PyImport_ReloadModule(v);
-}
-
-
-/* Doc strings */
-
-PyDoc_STRVAR(doc_imp,
-"This module provides the components needed to build your own\n\
-__import__ function.  Undocumented functions are obsolete.");
-
-PyDoc_STRVAR(doc_reload,
-"reload(module) -> module\n\
-\n\
-Reload the module.  The module must have been successfully imported before.");
-
-PyDoc_STRVAR(doc_find_module,
-"find_module(name, [path]) -> (file, filename, (suffix, mode, type))\n\
-Search for a module.  If path is omitted or None, search for a\n\
-built-in, frozen or special module and continue search in sys.path.\n\
-The module name cannot contain '.'; to search for a submodule of a\n\
-package, pass the submodule name and the package's __path__.");
-
-PyDoc_STRVAR(doc_load_module,
-"load_module(name, file, filename, (suffix, mode, type)) -> module\n\
-Load a module, given information returned by find_module().\n\
-The module name must include the full package name, if any.");
-
-PyDoc_STRVAR(doc_get_magic,
-"get_magic() -> string\n\
-Return the magic number for .pyc or .pyo files.");
-
-PyDoc_STRVAR(doc_get_suffixes,
-"get_suffixes() -> [(suffix, mode, type), ...]\n\
-Return a list of (suffix, mode, type) tuples describing the files\n\
-that find_module() looks for.");
-
-PyDoc_STRVAR(doc_new_module,
-"new_module(name) -> module\n\
-Create a new module.  Do not enter it in sys.modules.\n\
-The module name must include the full package name, if any.");
-
-PyDoc_STRVAR(doc_lock_held,
-"lock_held() -> boolean\n\
-Return True if the import lock is currently held, else False.\n\
-On platforms without threads, return False.");
-
-PyDoc_STRVAR(doc_acquire_lock,
-"acquire_lock() -> None\n\
-Acquires the interpreter's import lock for the current thread.\n\
-This lock should be used by import hooks to ensure thread-safety\n\
-when importing modules.\n\
-On platforms without threads, this function does nothing.");
-
-PyDoc_STRVAR(doc_release_lock,
-"release_lock() -> None\n\
-Release the interpreter's import lock.\n\
-On platforms without threads, this function does nothing.");
-
-static PyMethodDef imp_methods[] = {
-    {"reload",           imp_reload,       METH_O,       doc_reload},
-    {"find_module",      imp_find_module,  METH_VARARGS, doc_find_module},
-    {"get_magic",        imp_get_magic,    METH_NOARGS,  doc_get_magic},
-    {"get_suffixes", imp_get_suffixes, METH_NOARGS,  doc_get_suffixes},
-    {"load_module",      imp_load_module,  METH_VARARGS, doc_load_module},
-    {"new_module",       imp_new_module,   METH_VARARGS, doc_new_module},
-    {"lock_held",        imp_lock_held,    METH_NOARGS,  doc_lock_held},
-    {"acquire_lock", imp_acquire_lock, METH_NOARGS,  doc_acquire_lock},
-    {"release_lock", imp_release_lock, METH_NOARGS,  doc_release_lock},
-    /* The rest are obsolete */
-    {"get_frozen_object",       imp_get_frozen_object,  METH_VARARGS},
-    {"init_builtin",            imp_init_builtin,       METH_VARARGS},
-    {"init_frozen",             imp_init_frozen,        METH_VARARGS},
-    {"is_builtin",              imp_is_builtin,         METH_VARARGS},
-    {"is_frozen",               imp_is_frozen,          METH_VARARGS},
-    {"load_compiled",           imp_load_compiled,      METH_VARARGS},
-#ifdef HAVE_DYNAMIC_LOADING
-    {"load_dynamic",            imp_load_dynamic,       METH_VARARGS},
-#endif
-    {"load_package",            imp_load_package,       METH_VARARGS},
-    {"load_source",             imp_load_source,        METH_VARARGS},
-    {NULL,                      NULL}           /* sentinel */
-};
-
-static int
-setint(PyObject *d, char *name, int value)
-{
-    PyObject *v;
-    int err;
-
-    v = PyInt_FromLong((long)value);
-    err = PyDict_SetItemString(d, name, v);
-    Py_XDECREF(v);
-    return err;
-}
-
-typedef struct {
-    PyObject_HEAD
-} NullImporter;
-
-static int
-NullImporter_init(NullImporter *self, PyObject *args, PyObject *kwds)
-{
-    char *path;
-    Py_ssize_t pathlen;
-
-    if (!_PyArg_NoKeywords("NullImporter()", kwds))
-        return -1;
-
-    if (!PyArg_ParseTuple(args, "s:NullImporter",
-                          &path))
-        return -1;
-
-    pathlen = strlen(path);
-    if (pathlen == 0) {
-        PyErr_SetString(PyExc_ImportError, "empty pathname");
-        return -1;
-    } else {
-#ifndef RISCOS
-#ifndef MS_WINDOWS
-        struct stat statbuf;
-        int rv;
-
-        rv = stat(path, &statbuf);
-        if (rv == 0) {
-            /* it exists */
-            if (S_ISDIR(statbuf.st_mode)) {
-                /* it's a directory */
-                PyErr_SetString(PyExc_ImportError,
-                                "existing directory");
-                return -1;
-            }
-        }
-#else /* MS_WINDOWS */
-        DWORD rv;
-        /* see issue1293 and issue3677:
-         * stat() on Windows doesn't recognise paths like
-         * "e:\\shared\\" and "\\\\whiterab-c2znlh\\shared" as dirs.
-         */
-        rv = GetFileAttributesA(path);
-        if (rv != INVALID_FILE_ATTRIBUTES) {
-            /* it exists */
-            if (rv & FILE_ATTRIBUTE_DIRECTORY) {
-                /* it's a directory */
-                PyErr_SetString(PyExc_ImportError,
-                                "existing directory");
-                return -1;
-            }
-        }
-#endif
-#else /* RISCOS */
-        if (object_exists(path)) {
-            /* it exists */
-            if (isdir(path)) {
-                /* it's a directory */
-                PyErr_SetString(PyExc_ImportError,
-                                "existing directory");
-                return -1;
-            }
-        }
-#endif
-    }
-    return 0;
-}
-
-static PyObject *
-NullImporter_find_module(NullImporter *self, PyObject *args)
-{
-    Py_RETURN_NONE;
-}
-
-static PyMethodDef NullImporter_methods[] = {
-    {"find_module", (PyCFunction)NullImporter_find_module, METH_VARARGS,
-     "Always return None"
-    },
-    {NULL}  /* Sentinel */
-};
-
-
-PyTypeObject PyNullImporter_Type = {
-    PyVarObject_HEAD_INIT(NULL, 0)
-    "imp.NullImporter",        /*tp_name*/
-    sizeof(NullImporter),      /*tp_basicsize*/
-    0,                         /*tp_itemsize*/
-    0,                         /*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*/
-    Py_TPFLAGS_DEFAULT,        /*tp_flags*/
-    "Null importer object",    /* tp_doc */
-    0,                             /* tp_traverse */
-    0,                             /* tp_clear */
-    0,                             /* tp_richcompare */
-    0,                             /* tp_weaklistoffset */
-    0,                             /* tp_iter */
-    0,                             /* tp_iternext */
-    NullImporter_methods,      /* tp_methods */
-    0,                         /* tp_members */
-    0,                         /* tp_getset */
-    0,                         /* tp_base */
-    0,                         /* tp_dict */
-    0,                         /* tp_descr_get */
-    0,                         /* tp_descr_set */
-    0,                         /* tp_dictoffset */
-    (initproc)NullImporter_init,      /* tp_init */
-    0,                         /* tp_alloc */
-    PyType_GenericNew          /* tp_new */
-};
-
-
-PyMODINIT_FUNC
-initimp(void)
-{
-    PyObject *m, *d;
-
-    if (PyType_Ready(&PyNullImporter_Type) < 0)
-        goto failure;
-
-    m = Py_InitModule4("imp", imp_methods, doc_imp,
-                       NULL, PYTHON_API_VERSION);
-    if (m == NULL)
-        goto failure;
-    d = PyModule_GetDict(m);
-    if (d == NULL)
-        goto failure;
-
-    if (setint(d, "SEARCH_ERROR", SEARCH_ERROR) < 0) goto failure;
-    if (setint(d, "PY_SOURCE", PY_SOURCE) < 0) goto failure;
-    if (setint(d, "PY_COMPILED", PY_COMPILED) < 0) goto failure;
-    if (setint(d, "C_EXTENSION", C_EXTENSION) < 0) goto failure;
-    if (setint(d, "PY_RESOURCE", PY_RESOURCE) < 0) goto failure;
-    if (setint(d, "PKG_DIRECTORY", PKG_DIRECTORY) < 0) goto failure;
-    if (setint(d, "C_BUILTIN", C_BUILTIN) < 0) goto failure;
-    if (setint(d, "PY_FROZEN", PY_FROZEN) < 0) goto failure;
-    if (setint(d, "PY_CODERESOURCE", PY_CODERESOURCE) < 0) goto failure;
-    if (setint(d, "IMP_HOOK", IMP_HOOK) < 0) goto failure;
-
-    Py_INCREF(&PyNullImporter_Type);
-    PyModule_AddObject(m, "NullImporter", (PyObject *)&PyNullImporter_Type);
-  failure:
-    ;
-}
-
-
-/* API for embedding applications that want to add their own entries
-   to the table of built-in modules.  This should normally be called
-   *before* Py_Initialize().  When the table resize fails, -1 is
-   returned and the existing table is unchanged.
-
-   After a similar function by Just van Rossum. */
-
-int
-PyImport_ExtendInittab(struct _inittab *newtab)
-{
-    static struct _inittab *our_copy = NULL;
-    struct _inittab *p;
-    int i, n;
-
-    /* Count the number of entries in both tables */
-    for (n = 0; newtab[n].name != NULL; n++)
-        ;
-    if (n == 0)
-        return 0; /* Nothing to do */
-    for (i = 0; PyImport_Inittab[i].name != NULL; i++)
-        ;
-
-    /* Allocate new memory for the combined table */
-    p = our_copy;
-    PyMem_RESIZE(p, struct _inittab, i+n+1);
-    if (p == NULL)
-        return -1;
-
-    /* Copy the tables into the new memory */
-    if (our_copy != PyImport_Inittab)
-        memcpy(p, PyImport_Inittab, (i+1) * sizeof(struct _inittab));
-    PyImport_Inittab = our_copy = p;
-    memcpy(p+i, newtab, (n+1) * sizeof(struct _inittab));
-
-    return 0;
-}
-
-/* Shorthand to add a single entry given a name and a function */
-
-int
-PyImport_AppendInittab(const char *name, void (*initfunc)(void))
-{
-    struct _inittab newtab[2];
-
-    memset(newtab, '\0', sizeof newtab);
-
-    newtab[0].name = (char *)name;
-    newtab[0].initfunc = initfunc;
-
-    return PyImport_ExtendInittab(newtab);
-}
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/importdl.c b/AppPkg/Applications/Python/Python-2.7.2/Python/importdl.c
deleted file mode 100644
index 0280e81..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/importdl.c
+++ /dev/null
@@ -1,78 +0,0 @@
-
-/* Support for dynamic loading of extension modules */
-
-#include "Python.h"
-
-/* ./configure sets HAVE_DYNAMIC_LOADING if dynamic loading of modules is
-   supported on this platform. configure will then compile and link in one
-   of the dynload_*.c files, as appropriate. We will call a function in
-   those modules to get a function pointer to the module's init function.
-*/
-#ifdef HAVE_DYNAMIC_LOADING
-
-#include "importdl.h"
-
-extern dl_funcptr _PyImport_GetDynLoadFunc(const char *name,
-                                           const char *shortname,
-                                           const char *pathname, FILE *fp);
-
-
-
-PyObject *
-_PyImport_LoadDynamicModule(char *name, char *pathname, FILE *fp)
-{
-    PyObject *m;
-    char *lastdot, *shortname, *packagecontext, *oldcontext;
-    dl_funcptr p;
-
-    if ((m = _PyImport_FindExtension(name, pathname)) != NULL) {
-        Py_INCREF(m);
-        return m;
-    }
-    lastdot = strrchr(name, '.');
-    if (lastdot == NULL) {
-        packagecontext = NULL;
-        shortname = name;
-    }
-    else {
-        packagecontext = name;
-        shortname = lastdot+1;
-    }
-
-    p = _PyImport_GetDynLoadFunc(name, shortname, pathname, fp);
-    if (PyErr_Occurred())
-        return NULL;
-    if (p == NULL) {
-        PyErr_Format(PyExc_ImportError,
-           "dynamic module does not define init function (init%.200s)",
-                     shortname);
-        return NULL;
-    }
-    oldcontext = _Py_PackageContext;
-    _Py_PackageContext = packagecontext;
-    (*p)();
-    _Py_PackageContext = oldcontext;
-    if (PyErr_Occurred())
-        return NULL;
-
-    m = PyDict_GetItemString(PyImport_GetModuleDict(), name);
-    if (m == NULL) {
-        PyErr_SetString(PyExc_SystemError,
-                        "dynamic module not initialized properly");
-        return NULL;
-    }
-    /* Remember the filename as the __file__ attribute */
-    if (PyModule_AddStringConstant(m, "__file__", pathname) < 0)
-        PyErr_Clear(); /* Not important enough to report */
-
-    if (_PyImport_FixupExtension(name, pathname) == NULL)
-        return NULL;
-    if (Py_VerboseFlag)
-        PySys_WriteStderr(
-            "import %s # dynamically loaded from %s\n",
-            name, pathname);
-    Py_INCREF(m);
-    return m;
-}
-
-#endif /* HAVE_DYNAMIC_LOADING */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/importdl.h b/AppPkg/Applications/Python/Python-2.7.2/Python/importdl.h
deleted file mode 100644
index 7e17246..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/importdl.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef Py_IMPORTDL_H
-#define Py_IMPORTDL_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Definitions for dynamic loading of extension modules */
-enum filetype {
-    SEARCH_ERROR,
-    PY_SOURCE,
-    PY_COMPILED,
-    C_EXTENSION,
-    PY_RESOURCE, /* Mac only */
-    PKG_DIRECTORY,
-    C_BUILTIN,
-    PY_FROZEN,
-    PY_CODERESOURCE, /* Mac only */
-    IMP_HOOK
-};
-
-struct filedescr {
-    char *suffix;
-    char *mode;
-    enum filetype type;
-};
-extern struct filedescr * _PyImport_Filetab;
-extern const struct filedescr _PyImport_DynLoadFiletab[];
-
-extern PyObject *_PyImport_LoadDynamicModule(char *name, char *pathname,
-                                             FILE *);
-
-/* Max length of module suffix searched for -- accommodates "module.slb" */
-#define MAXSUFFIXSIZE 12
-
-#ifdef MS_WINDOWS
-#include <windows.h>
-typedef FARPROC dl_funcptr;
-#else
-#if defined(PYOS_OS2) && !defined(PYCC_GCC)
-#include <os2def.h>
-typedef int (* APIENTRY dl_funcptr)();
-#else
-typedef void (*dl_funcptr)(void);
-#endif
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !Py_IMPORTDL_H */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/mactoolboxglue.c b/AppPkg/Applications/Python/Python-2.7.2/Python/mactoolboxglue.c
deleted file mode 100644
index b264b39..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/mactoolboxglue.c
+++ /dev/null
@@ -1,474 +0,0 @@
-/***********************************************************
-Copyright 1991-1997 by Stichting Mathematisch Centrum, Amsterdam,
-The Netherlands.
-
-                        All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the names of Stichting Mathematisch
-Centrum or CWI not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior permission.
-
-STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
-THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
-FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-******************************************************************/
-
-
-#include "Python.h"
-#include "pymactoolbox.h"
-#include <arpa/inet.h>  /* for ntohl, htonl */
-
-
-/* Like strerror() but for Mac OS error numbers */
-char *
-PyMac_StrError(int err)
-{
-    static char buf[256];
-    PyObject *m;
-    PyObject *rv;
-
-    m = PyImport_ImportModuleNoBlock("MacOS");
-    if (!m) {
-        if (Py_VerboseFlag)
-            PyErr_Print();
-        PyErr_Clear();
-        rv = NULL;
-    }
-    else {
-        rv = PyObject_CallMethod(m, "GetErrorString", "i", err);
-        if (!rv)
-            PyErr_Clear();
-    }
-    if (!rv) {
-        buf[0] = '\0';
-    }
-    else {
-        char *input = PyString_AsString(rv);
-        if (!input) {
-            PyErr_Clear();
-            buf[0] = '\0';
-        } else {
-            strncpy(buf, input, sizeof(buf) - 1);
-            buf[sizeof(buf) - 1] = '\0';
-        }
-        Py_DECREF(rv);
-    }
-    Py_XDECREF(m);
-    return buf;
-}
-
-/* Exception object shared by all Mac specific modules for Mac OS errors */
-PyObject *PyMac_OSErrException;
-
-/* Initialize and return PyMac_OSErrException */
-PyObject *
-PyMac_GetOSErrException(void)
-{
-    if (PyMac_OSErrException == NULL)
-        PyMac_OSErrException = PyErr_NewException("MacOS.Error", NULL, NULL);
-    return PyMac_OSErrException;
-}
-
-/* Set a MAC-specific error from errno, and return NULL; return None if no error */
-PyObject *
-PyErr_Mac(PyObject *eobj, int err)
-{
-    char *msg;
-    PyObject *v;
-
-    if (err == 0 && !PyErr_Occurred()) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    if (err == -1 && PyErr_Occurred())
-        return NULL;
-    msg = PyMac_StrError(err);
-    v = Py_BuildValue("(is)", err, msg);
-    PyErr_SetObject(eobj, v);
-    Py_DECREF(v);
-    return NULL;
-}
-
-/* Call PyErr_Mac with PyMac_OSErrException */
-PyObject *
-PyMac_Error(OSErr err)
-{
-    return PyErr_Mac(PyMac_GetOSErrException(), err);
-}
-
-
-#ifndef __LP64__
-OSErr
-PyMac_GetFullPathname(FSSpec *fss, char *path, int len)
-{
-    PyObject *fs, *exc;
-    PyObject *rv = NULL;
-    char *input;
-    OSErr err = noErr;
-
-    *path = '\0';
-
-    fs = PyMac_BuildFSSpec(fss);
-    if (!fs)
-        goto error;
-
-    rv = PyObject_CallMethod(fs, "as_pathname", "");
-    if (!rv)
-        goto error;
-
-    input = PyString_AsString(rv);
-    if (!input)
-        goto error;
-
-    strncpy(path, input, len - 1);
-    path[len - 1] = '\0';
-
-    Py_XDECREF(rv);
-    Py_XDECREF(fs);
-    return err;
-
-  error:
-    exc = PyErr_Occurred();
-    if (exc  && PyErr_GivenExceptionMatches(exc,
-                                            PyMac_GetOSErrException())) {
-        PyObject *args = PyObject_GetAttrString(exc, "args");
-        if (args) {
-            char *ignore;
-            PyArg_ParseTuple(args, "is", &err, &ignore);
-            Py_XDECREF(args);
-        }
-    }
-    if (err == noErr)
-        err = -1;
-    PyErr_Clear();
-    Py_XDECREF(rv);
-    Py_XDECREF(fs);
-    return err;
-}
-#endif /* !__LP64__ */
-
-/* Convert a 4-char string object argument to an OSType value */
-int
-PyMac_GetOSType(PyObject *v, OSType *pr)
-{
-    uint32_t tmp;
-    if (!PyString_Check(v) || PyString_Size(v) != 4) {
-        PyErr_SetString(PyExc_TypeError,
-            "OSType arg must be string of 4 chars");
-        return 0;
-    }
-    memcpy((char *)&tmp, PyString_AsString(v), 4);
-    *pr = (OSType)ntohl(tmp);
-    return 1;
-}
-
-/* Convert an OSType value to a 4-char string object */
-PyObject *
-PyMac_BuildOSType(OSType t)
-{
-    uint32_t tmp = htonl((uint32_t)t);
-    return PyString_FromStringAndSize((char *)&tmp, 4);
-}
-
-/* Convert an NumVersion value to a 4-element tuple */
-PyObject *
-PyMac_BuildNumVersion(NumVersion t)
-{
-    return Py_BuildValue("(hhhh)", t.majorRev, t.minorAndBugRev, t.stage, t.nonRelRev);
-}
-
-
-/* Convert a Python string object to a Str255 */
-int
-PyMac_GetStr255(PyObject *v, Str255 pbuf)
-{
-    int len;
-    if (!PyString_Check(v) || (len = PyString_Size(v)) > 255) {
-        PyErr_SetString(PyExc_TypeError,
-            "Str255 arg must be string of at most 255 chars");
-        return 0;
-    }
-    pbuf[0] = len;
-    memcpy((char *)(pbuf+1), PyString_AsString(v), len);
-    return 1;
-}
-
-/* Convert a Str255 to a Python string object */
-PyObject *
-PyMac_BuildStr255(Str255 s)
-{
-    if ( s == NULL ) {
-        PyErr_SetString(PyExc_SystemError, "Str255 pointer is NULL");
-        return NULL;
-    }
-    return PyString_FromStringAndSize((char *)&s[1], (int)s[0]);
-}
-
-PyObject *
-PyMac_BuildOptStr255(Str255 s)
-{
-    if ( s == NULL ) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PyString_FromStringAndSize((char *)&s[1], (int)s[0]);
-}
-
-
-
-/* Convert a Python object to a Rect.
-   The object must be a (left, top, right, bottom) tuple.
-   (This differs from the order in the struct but is consistent with
-   the arguments to SetRect(), and also with STDWIN). */
-int
-PyMac_GetRect(PyObject *v, Rect *r)
-{
-    return PyArg_Parse(v, "(hhhh)", &r->left, &r->top, &r->right, &r->bottom);
-}
-
-/* Convert a Rect to a Python object */
-PyObject *
-PyMac_BuildRect(Rect *r)
-{
-    return Py_BuildValue("(hhhh)", r->left, r->top, r->right, r->bottom);
-}
-
-
-/* Convert a Python object to a Point.
-   The object must be a (h, v) tuple.
-   (This differs from the order in the struct but is consistent with
-   the arguments to SetPoint(), and also with STDWIN). */
-int
-PyMac_GetPoint(PyObject *v, Point *p)
-{
-    return PyArg_Parse(v, "(hh)", &p->h, &p->v);
-}
-
-/* Convert a Point to a Python object */
-PyObject *
-PyMac_BuildPoint(Point p)
-{
-    return Py_BuildValue("(hh)", p.h, p.v);
-}
-
-
-/* Convert a Python object to an EventRecord.
-   The object must be a (what, message, when, (v, h), modifiers) tuple. */
-int
-PyMac_GetEventRecord(PyObject *v, EventRecord *e)
-{
-    return PyArg_Parse(v, "(Hkk(hh)H)",
-                       &e->what,
-                       &e->message,
-                       &e->when,
-                       &e->where.h,
-                       &e->where.v,
-                       &e->modifiers);
-}
-
-/* Convert a Rect to an EventRecord object */
-PyObject *
-PyMac_BuildEventRecord(EventRecord *e)
-{
-    return Py_BuildValue("(hll(hh)h)",
-                         e->what,
-                         e->message,
-                         e->when,
-                         e->where.h,
-                         e->where.v,
-                         e->modifiers);
-}
-
-/* Convert Python object to Fixed */
-int
-PyMac_GetFixed(PyObject *v, Fixed *f)
-{
-    double d;
-
-    if( !PyArg_Parse(v, "d", &d))
-        return 0;
-    *f = (Fixed)(d * 0x10000);
-    return 1;
-}
-
-/* Convert a Fixed to a Python object */
-PyObject *
-PyMac_BuildFixed(Fixed f)
-{
-    double d;
-
-    d = f;
-    d = d / 0x10000;
-    return Py_BuildValue("d", d);
-}
-
-/* Convert wide to/from Python int or (hi, lo) tuple. XXXX Should use Python longs */
-int
-PyMac_Getwide(PyObject *v, wide *rv)
-{
-    if (PyInt_Check(v)) {
-        rv->hi = 0;
-        rv->lo = PyInt_AsLong(v);
-        if( rv->lo & 0x80000000 )
-            rv->hi = -1;
-        return 1;
-    }
-    return PyArg_Parse(v, "(kk)", &rv->hi, &rv->lo);
-}
-
-
-PyObject *
-PyMac_Buildwide(wide *w)
-{
-    if ( (w->hi == 0 && (w->lo & 0x80000000) == 0) ||
-         (w->hi == -1 && (w->lo & 0x80000000) ) )
-        return PyInt_FromLong(w->lo);
-    return Py_BuildValue("(ll)", w->hi, w->lo);
-}
-
-#ifdef USE_TOOLBOX_OBJECT_GLUE
-/*
-** Glue together the toolbox objects.
-**
-** Because toolbox modules interdepend on each other, they use each others
-** object types, on MacOSX/MachO this leads to the situation that they
-** cannot be dynamically loaded (or they would all have to be lumped into
-** a single .so, but this would be bad for extensibility).
-**
-** This file defines wrappers for all the _New and _Convert functions,
-** which are the Py_BuildValue and PyArg_ParseTuple helpers. The wrappers
-** check an indirection function pointer, and if it isn't filled in yet
-** they import the appropriate module, whose init routine should fill in
-** the pointer.
-*/
-
-#define GLUE_NEW(object, routinename, module) \
-PyObject *(*PyMacGluePtr_##routinename)(object); \
-\
-PyObject *routinename(object cobj) { \
-    if (!PyMacGluePtr_##routinename) { \
-       if (!PyImport_ImportModule(module)) return NULL; \
-       if (!PyMacGluePtr_##routinename) { \
-       PyErr_SetString(PyExc_ImportError, "Module did not provide routine: " module ": " #routinename); \
-       return NULL; \
-       } \
-    } \
-    return (*PyMacGluePtr_##routinename)(cobj); \
-}
-
-#define GLUE_CONVERT(object, routinename, module) \
-int (*PyMacGluePtr_##routinename)(PyObject *, object *); \
-\
-int routinename(PyObject *pyobj, object *cobj) { \
-    if (!PyMacGluePtr_##routinename) { \
-       if (!PyImport_ImportModule(module)) return 0; \
-       if (!PyMacGluePtr_##routinename) { \
-       PyErr_SetString(PyExc_ImportError, "Module did not provide routine: " module ": " #routinename); \
-       return 0; \
-       } \
-    } \
-    return (*PyMacGluePtr_##routinename)(pyobj, cobj); \
-}
-
-GLUE_NEW(FSSpec *, PyMac_BuildFSSpec, "Carbon.File")
-GLUE_CONVERT(FSSpec, PyMac_GetFSSpec, "Carbon.File")
-GLUE_NEW(FSRef *, PyMac_BuildFSRef, "Carbon.File")
-GLUE_CONVERT(FSRef, PyMac_GetFSRef, "Carbon.File")
-
-GLUE_NEW(AppleEvent *, AEDesc_New, "Carbon.AE") /* XXXX Why by address? */
-GLUE_NEW(AppleEvent *, AEDesc_NewBorrowed, "Carbon.AE")
-GLUE_CONVERT(AppleEvent, AEDesc_Convert, "Carbon.AE")
-
-GLUE_NEW(Component, CmpObj_New, "Carbon.Cm")
-GLUE_CONVERT(Component, CmpObj_Convert, "Carbon.Cm")
-GLUE_NEW(ComponentInstance, CmpInstObj_New, "Carbon.Cm")
-GLUE_CONVERT(ComponentInstance, CmpInstObj_Convert, "Carbon.Cm")
-
-GLUE_NEW(ControlHandle, CtlObj_New, "Carbon.Ctl")
-GLUE_CONVERT(ControlHandle, CtlObj_Convert, "Carbon.Ctl")
-
-GLUE_NEW(DialogPtr, DlgObj_New, "Carbon.Dlg")
-GLUE_CONVERT(DialogPtr, DlgObj_Convert, "Carbon.Dlg")
-GLUE_NEW(DialogPtr, DlgObj_WhichDialog, "Carbon.Dlg")
-
-GLUE_NEW(DragReference, DragObj_New, "Carbon.Drag")
-GLUE_CONVERT(DragReference, DragObj_Convert, "Carbon.Drag")
-
-GLUE_NEW(ListHandle, ListObj_New, "Carbon.List")
-GLUE_CONVERT(ListHandle, ListObj_Convert, "Carbon.List")
-
-GLUE_NEW(MenuHandle, MenuObj_New, "Carbon.Menu")
-GLUE_CONVERT(MenuHandle, MenuObj_Convert, "Carbon.Menu")
-
-GLUE_NEW(GrafPtr, GrafObj_New, "Carbon.Qd")
-GLUE_CONVERT(GrafPtr, GrafObj_Convert, "Carbon.Qd")
-GLUE_NEW(BitMapPtr, BMObj_New, "Carbon.Qd")
-GLUE_CONVERT(BitMapPtr, BMObj_Convert, "Carbon.Qd")
-GLUE_NEW(RGBColor *, QdRGB_New, "Carbon.Qd") /* XXXX Why? */
-GLUE_CONVERT(RGBColor, QdRGB_Convert, "Carbon.Qd")
-
-GLUE_NEW(GWorldPtr, GWorldObj_New, "Carbon.Qdoffs")
-GLUE_CONVERT(GWorldPtr, GWorldObj_Convert, "Carbon.Qdoffs")
-
-#ifndef __LP64__
-GLUE_NEW(Track, TrackObj_New, "Carbon.Qt")
-GLUE_CONVERT(Track, TrackObj_Convert, "Carbon.Qt")
-GLUE_NEW(Movie, MovieObj_New, "Carbon.Qt")
-GLUE_CONVERT(Movie, MovieObj_Convert, "Carbon.Qt")
-GLUE_NEW(MovieController, MovieCtlObj_New, "Carbon.Qt")
-GLUE_CONVERT(MovieController, MovieCtlObj_Convert, "Carbon.Qt")
-GLUE_NEW(TimeBase, TimeBaseObj_New, "Carbon.Qt")
-GLUE_CONVERT(TimeBase, TimeBaseObj_Convert, "Carbon.Qt")
-GLUE_NEW(UserData, UserDataObj_New, "Carbon.Qt")
-GLUE_CONVERT(UserData, UserDataObj_Convert, "Carbon.Qt")
-GLUE_NEW(Media, MediaObj_New, "Carbon.Qt")
-GLUE_CONVERT(Media, MediaObj_Convert, "Carbon.Qt")
-#endif /* !__LP64__ */
-
-GLUE_NEW(Handle, ResObj_New, "Carbon.Res")
-GLUE_CONVERT(Handle, ResObj_Convert, "Carbon.Res")
-GLUE_NEW(Handle, OptResObj_New, "Carbon.Res")
-GLUE_CONVERT(Handle, OptResObj_Convert, "Carbon.Res")
-
-GLUE_NEW(TEHandle, TEObj_New, "Carbon.TE")
-GLUE_CONVERT(TEHandle, TEObj_Convert, "Carbon.TE")
-
-GLUE_NEW(WindowPtr, WinObj_New, "Carbon.Win")
-GLUE_CONVERT(WindowPtr, WinObj_Convert, "Carbon.Win")
-GLUE_NEW(WindowPtr, WinObj_WhichWindow, "Carbon.Win")
-
-GLUE_CONVERT(CFTypeRef, CFObj_Convert, "Carbon.CF")
-GLUE_NEW(CFTypeRef, CFObj_New, "Carbon.CF")
-
-GLUE_CONVERT(CFTypeRef, CFTypeRefObj_Convert, "Carbon.CF")
-GLUE_NEW(CFTypeRef, CFTypeRefObj_New, "Carbon.CF")
-
-GLUE_CONVERT(CFStringRef, CFStringRefObj_Convert, "Carbon.CF")
-GLUE_NEW(CFStringRef, CFStringRefObj_New, "Carbon.CF")
-GLUE_CONVERT(CFMutableStringRef, CFMutableStringRefObj_Convert, "Carbon.CF")
-GLUE_NEW(CFMutableStringRef, CFMutableStringRefObj_New, "Carbon.CF")
-
-GLUE_CONVERT(CFArrayRef, CFArrayRefObj_Convert, "Carbon.CF")
-GLUE_NEW(CFArrayRef, CFArrayRefObj_New, "Carbon.CF")
-GLUE_CONVERT(CFMutableArrayRef, CFMutableArrayRefObj_Convert, "Carbon.CF")
-GLUE_NEW(CFMutableArrayRef, CFMutableArrayRefObj_New, "Carbon.CF")
-
-GLUE_CONVERT(CFDictionaryRef, CFDictionaryRefObj_Convert, "Carbon.CF")
-GLUE_NEW(CFDictionaryRef, CFDictionaryRefObj_New, "Carbon.CF")
-GLUE_CONVERT(CFMutableDictionaryRef, CFMutableDictionaryRefObj_Convert, "Carbon.CF")
-GLUE_NEW(CFMutableDictionaryRef, CFMutableDictionaryRefObj_New, "Carbon.CF")
-
-GLUE_CONVERT(CFURLRef, CFURLRefObj_Convert, "Carbon.CF")
-GLUE_CONVERT(CFURLRef, OptionalCFURLRefObj_Convert, "Carbon.CF")
-GLUE_NEW(CFURLRef, CFURLRefObj_New, "Carbon.CF")
-
-#endif /* USE_TOOLBOX_OBJECT_GLUE */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/marshal.c b/AppPkg/Applications/Python/Python-2.7.2/Python/marshal.c
deleted file mode 100644
index 153bc13..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/marshal.c
+++ /dev/null
@@ -1,1422 +0,0 @@
-/** @file
-    Write Python objects to files and read them back.
-    This is intended for writing and reading compiled Python code only;
-    a true persistent storage facility would be much harder, since
-    it would have to take circular links and sharing into account.
-
-    Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-    This program and the accompanying materials are licensed and made available under
-    the terms and conditions of the BSD License that accompanies this distribution.
-    The full text of the license may be found at
-    http://opensource.org/licenses/bsd-license.
-
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-
-#define PY_SSIZE_T_CLEAN
-
-#include "Python.h"
-#include "longintrepr.h"
-#include "code.h"
-#include "marshal.h"
-
-#ifndef ABS
-  #define ABS(x) ((x) < 0 ? -(x) : (x))
-#endif
-
-/* High water mark to determine when the marshalled object is dangerously deep
- * and risks coring the interpreter.  When the object stack gets this deep,
- * raise an exception instead of continuing.
- */
-#define MAX_MARSHAL_STACK_DEPTH 2000
-
-#define TYPE_NULL               '0'
-#define TYPE_NONE               'N'
-#define TYPE_FALSE              'F'
-#define TYPE_TRUE               'T'
-#define TYPE_STOPITER           'S'
-#define TYPE_ELLIPSIS           '.'
-#define TYPE_INT                'i'
-#define TYPE_INT64              'I'
-#define TYPE_FLOAT              'f'
-#define TYPE_BINARY_FLOAT       'g'
-#define TYPE_COMPLEX            'x'
-#define TYPE_BINARY_COMPLEX     'y'
-#define TYPE_LONG               'l'
-#define TYPE_STRING             's'
-#define TYPE_INTERNED           't'
-#define TYPE_STRINGREF          'R'
-#define TYPE_TUPLE              '('
-#define TYPE_LIST               '['
-#define TYPE_DICT               '{'
-#define TYPE_CODE               'c'
-#define TYPE_UNICODE            'u'
-#define TYPE_UNKNOWN            '?'
-#define TYPE_SET                '<'
-#define TYPE_FROZENSET          '>'
-
-#define WFERR_OK 0
-#define WFERR_UNMARSHALLABLE 1
-#define WFERR_NESTEDTOODEEP 2
-#define WFERR_NOMEMORY 3
-
-typedef struct {
-    FILE *fp;
-    int error;  /* see WFERR_* values */
-    int depth;
-    /* If fp == NULL, the following are valid: */
-    PyObject *str;
-    char *ptr;
-    char *end;
-    PyObject *strings; /* dict on marshal, list on unmarshal */
-    int version;
-} WFILE;
-
-#define w_byte(c, p) if (((p)->fp)) putc((c), (p)->fp); \
-                      else if ((p)->ptr != (p)->end) *(p)->ptr++ = (c); \
-                           else w_more(c, p)
-
-static void
-w_more(int c, WFILE *p)
-{
-    Py_ssize_t size, newsize;
-    if (p->str == NULL)
-        return; /* An error already occurred */
-    size = PyString_Size(p->str);
-    newsize = size + size + 1024;
-    if (newsize > 32*1024*1024) {
-        newsize = size + (size >> 3);           /* 12.5% overallocation */
-    }
-    if (_PyString_Resize(&p->str, newsize) != 0) {
-        p->ptr = p->end = NULL;
-    }
-    else {
-        p->ptr = PyString_AS_STRING((PyStringObject *)p->str) + size;
-        p->end =
-            PyString_AS_STRING((PyStringObject *)p->str) + newsize;
-        *p->ptr++ = Py_SAFE_DOWNCAST(c, int, char);
-    }
-}
-
-static void
-w_string(char *s, int n, WFILE *p)
-{
-    if (p->fp != NULL) {
-        fwrite(s, 1, n, p->fp);
-    }
-    else {
-        while (--n >= 0) {
-            w_byte(*s, p);
-            s++;
-        }
-    }
-}
-
-static void
-w_short(int x, WFILE *p)
-{
-    w_byte((char)( x      & 0xff), p);
-    w_byte((char)((x>> 8) & 0xff), p);
-}
-
-static void
-w_long(long x, WFILE *p)
-{
-    w_byte((char)( x      & 0xff), p);
-    w_byte((char)((x>> 8) & 0xff), p);
-    w_byte((char)((x>>16) & 0xff), p);
-    w_byte((char)((x>>24) & 0xff), p);
-}
-
-#if SIZEOF_LONG > 4
-static void
-w_long64(long x, WFILE *p)
-{
-    w_long(x, p);
-    w_long(x>>32, p);
-}
-#endif
-
-/* We assume that Python longs are stored internally in base some power of
-   2**15; for the sake of portability we'll always read and write them in base
-   exactly 2**15. */
-
-#define PyLong_MARSHAL_SHIFT 15
-#define PyLong_MARSHAL_BASE ((short)1 << PyLong_MARSHAL_SHIFT)
-#define PyLong_MARSHAL_MASK (PyLong_MARSHAL_BASE - 1)
-#if PyLong_SHIFT % PyLong_MARSHAL_SHIFT != 0
-#error "PyLong_SHIFT must be a multiple of PyLong_MARSHAL_SHIFT"
-#endif
-#define PyLong_MARSHAL_RATIO (PyLong_SHIFT / PyLong_MARSHAL_SHIFT)
-
-static void
-w_PyLong(const PyLongObject *ob, WFILE *p)
-{
-    Py_ssize_t i, j, n, l;
-    digit d;
-
-    w_byte(TYPE_LONG, p);
-    if (Py_SIZE(ob) == 0) {
-        w_long((long)0, p);
-        return;
-    }
-
-    /* set l to number of base PyLong_MARSHAL_BASE digits */
-    n = ABS(Py_SIZE(ob));
-    l = (n-1) * PyLong_MARSHAL_RATIO;
-    d = ob->ob_digit[n-1];
-    assert(d != 0); /* a PyLong is always normalized */
-    do {
-        d >>= PyLong_MARSHAL_SHIFT;
-        l++;
-    } while (d != 0);
-    w_long((long)(Py_SIZE(ob) > 0 ? l : -l), p);
-
-    for (i=0; i < n-1; i++) {
-        d = ob->ob_digit[i];
-        for (j=0; j < PyLong_MARSHAL_RATIO; j++) {
-            w_short(d & PyLong_MARSHAL_MASK, p);
-            d >>= PyLong_MARSHAL_SHIFT;
-        }
-        assert (d == 0);
-    }
-    d = ob->ob_digit[n-1];
-    do {
-        w_short(d & PyLong_MARSHAL_MASK, p);
-        d >>= PyLong_MARSHAL_SHIFT;
-    } while (d != 0);
-}
-
-static void
-w_object(PyObject *v, WFILE *p)
-{
-    Py_ssize_t i, n;
-
-    p->depth++;
-
-    if (p->depth > MAX_MARSHAL_STACK_DEPTH) {
-        p->error = WFERR_NESTEDTOODEEP;
-    }
-    else if (v == NULL) {
-        w_byte(TYPE_NULL, p);
-    }
-    else if (v == Py_None) {
-        w_byte(TYPE_NONE, p);
-    }
-    else if (v == PyExc_StopIteration) {
-        w_byte(TYPE_STOPITER, p);
-    }
-    else if (v == Py_Ellipsis) {
-        w_byte(TYPE_ELLIPSIS, p);
-    }
-    else if (v == Py_False) {
-        w_byte(TYPE_FALSE, p);
-    }
-    else if (v == Py_True) {
-        w_byte(TYPE_TRUE, p);
-    }
-    else if (PyInt_CheckExact(v)) {
-        long x = PyInt_AS_LONG((PyIntObject *)v);
-#if SIZEOF_LONG > 4
-        long y = Py_ARITHMETIC_RIGHT_SHIFT(long, x, 31);
-        if (y && y != -1) {
-            w_byte(TYPE_INT64, p);
-            w_long64(x, p);
-        }
-        else
-#endif
-            {
-            w_byte(TYPE_INT, p);
-            w_long(x, p);
-        }
-    }
-    else if (PyLong_CheckExact(v)) {
-        PyLongObject *ob = (PyLongObject *)v;
-        w_PyLong(ob, p);
-    }
-    else if (PyFloat_CheckExact(v)) {
-        if (p->version > 1) {
-            unsigned char buf[8];
-            if (_PyFloat_Pack8(PyFloat_AsDouble(v),
-                               buf, 1) < 0) {
-                p->error = WFERR_UNMARSHALLABLE;
-                return;
-            }
-            w_byte(TYPE_BINARY_FLOAT, p);
-            w_string((char*)buf, 8, p);
-        }
-        else {
-            char *buf = PyOS_double_to_string(PyFloat_AS_DOUBLE(v),
-                                              'g', 17, 0, NULL);
-            if (!buf) {
-                p->error = WFERR_NOMEMORY;
-                return;
-            }
-            n = strlen(buf);
-            w_byte(TYPE_FLOAT, p);
-            w_byte((int)n, p);
-            w_string(buf, (int)n, p);
-            PyMem_Free(buf);
-        }
-    }
-#ifndef WITHOUT_COMPLEX
-    else if (PyComplex_CheckExact(v)) {
-        if (p->version > 1) {
-            unsigned char buf[8];
-            if (_PyFloat_Pack8(PyComplex_RealAsDouble(v),
-                               buf, 1) < 0) {
-                p->error = WFERR_UNMARSHALLABLE;
-                return;
-            }
-            w_byte(TYPE_BINARY_COMPLEX, p);
-            w_string((char*)buf, 8, p);
-            if (_PyFloat_Pack8(PyComplex_ImagAsDouble(v),
-                               buf, 1) < 0) {
-                p->error = WFERR_UNMARSHALLABLE;
-                return;
-            }
-            w_string((char*)buf, 8, p);
-        }
-        else {
-            char *buf;
-            w_byte(TYPE_COMPLEX, p);
-            buf = PyOS_double_to_string(PyComplex_RealAsDouble(v),
-                                        'g', 17, 0, NULL);
-            if (!buf) {
-                p->error = WFERR_NOMEMORY;
-                return;
-            }
-            n = strlen(buf);
-            w_byte((int)n, p);
-            w_string(buf, (int)n, p);
-            PyMem_Free(buf);
-            buf = PyOS_double_to_string(PyComplex_ImagAsDouble(v),
-                                        'g', 17, 0, NULL);
-            if (!buf) {
-                p->error = WFERR_NOMEMORY;
-                return;
-            }
-            n = strlen(buf);
-            w_byte((int)n, p);
-            w_string(buf, (int)n, p);
-            PyMem_Free(buf);
-        }
-    }
-#endif
-    else if (PyString_CheckExact(v)) {
-        if (p->strings && PyString_CHECK_INTERNED(v)) {
-            PyObject *o = PyDict_GetItem(p->strings, v);
-            if (o) {
-                long w = PyInt_AsLong(o);
-                w_byte(TYPE_STRINGREF, p);
-                w_long(w, p);
-                goto exit;
-            }
-            else {
-                int ok;
-                o = PyInt_FromSsize_t(PyDict_Size(p->strings));
-                ok = o &&
-                     PyDict_SetItem(p->strings, v, o) >= 0;
-                Py_XDECREF(o);
-                if (!ok) {
-                    p->depth--;
-                    p->error = WFERR_UNMARSHALLABLE;
-                    return;
-                }
-                w_byte(TYPE_INTERNED, p);
-            }
-        }
-        else {
-            w_byte(TYPE_STRING, p);
-        }
-        n = PyString_GET_SIZE(v);
-        if (n > INT_MAX) {
-            /* huge strings are not supported */
-            p->depth--;
-            p->error = WFERR_UNMARSHALLABLE;
-            return;
-        }
-        w_long((long)n, p);
-        w_string(PyString_AS_STRING(v), (int)n, p);
-    }
-#ifdef Py_USING_UNICODE
-    else if (PyUnicode_CheckExact(v)) {
-        PyObject *utf8;
-        utf8 = PyUnicode_AsUTF8String(v);
-        if (utf8 == NULL) {
-            p->depth--;
-            p->error = WFERR_UNMARSHALLABLE;
-            return;
-        }
-        w_byte(TYPE_UNICODE, p);
-        n = PyString_GET_SIZE(utf8);
-        if (n > INT_MAX) {
-            p->depth--;
-            p->error = WFERR_UNMARSHALLABLE;
-            return;
-        }
-        w_long((long)n, p);
-        w_string(PyString_AS_STRING(utf8), (int)n, p);
-        Py_DECREF(utf8);
-    }
-#endif
-    else if (PyTuple_CheckExact(v)) {
-        w_byte(TYPE_TUPLE, p);
-        n = PyTuple_Size(v);
-        w_long((long)n, p);
-        for (i = 0; i < n; i++) {
-            w_object(PyTuple_GET_ITEM(v, i), p);
-        }
-    }
-    else if (PyList_CheckExact(v)) {
-        w_byte(TYPE_LIST, p);
-        n = PyList_GET_SIZE(v);
-        w_long((long)n, p);
-        for (i = 0; i < n; i++) {
-            w_object(PyList_GET_ITEM(v, i), p);
-        }
-    }
-    else if (PyDict_CheckExact(v)) {
-        Py_ssize_t pos;
-        PyObject *key, *value;
-        w_byte(TYPE_DICT, p);
-        /* This one is NULL object terminated! */
-        pos = 0;
-        while (PyDict_Next(v, &pos, &key, &value)) {
-            w_object(key, p);
-            w_object(value, p);
-        }
-        w_object((PyObject *)NULL, p);
-    }
-    else if (PyAnySet_CheckExact(v)) {
-        PyObject *value, *it;
-
-        if (PyObject_TypeCheck(v, &PySet_Type))
-            w_byte(TYPE_SET, p);
-        else
-            w_byte(TYPE_FROZENSET, p);
-        n = PyObject_Size(v);
-        if (n == -1) {
-            p->depth--;
-            p->error = WFERR_UNMARSHALLABLE;
-            return;
-        }
-        w_long((long)n, p);
-        it = PyObject_GetIter(v);
-        if (it == NULL) {
-            p->depth--;
-            p->error = WFERR_UNMARSHALLABLE;
-            return;
-        }
-        while ((value = PyIter_Next(it)) != NULL) {
-            w_object(value, p);
-            Py_DECREF(value);
-        }
-        Py_DECREF(it);
-        if (PyErr_Occurred()) {
-            p->depth--;
-            p->error = WFERR_UNMARSHALLABLE;
-            return;
-        }
-    }
-    else if (PyCode_Check(v)) {
-        PyCodeObject *co = (PyCodeObject *)v;
-        w_byte(TYPE_CODE, p);
-        w_long(co->co_argcount, p);
-        w_long(co->co_nlocals, p);
-        w_long(co->co_stacksize, p);
-        w_long(co->co_flags, p);
-        w_object(co->co_code, p);
-        w_object(co->co_consts, p);
-        w_object(co->co_names, p);
-        w_object(co->co_varnames, p);
-        w_object(co->co_freevars, p);
-        w_object(co->co_cellvars, p);
-        w_object(co->co_filename, p);
-        w_object(co->co_name, p);
-        w_long(co->co_firstlineno, p);
-        w_object(co->co_lnotab, p);
-    }
-    else if (PyObject_CheckReadBuffer(v)) {
-        /* Write unknown buffer-style objects as a string */
-        char *s;
-        PyBufferProcs *pb = v->ob_type->tp_as_buffer;
-        w_byte(TYPE_STRING, p);
-        n = (*pb->bf_getreadbuffer)(v, 0, (void **)&s);
-        if (n > INT_MAX) {
-            p->depth--;
-            p->error = WFERR_UNMARSHALLABLE;
-            return;
-        }
-        w_long((long)n, p);
-        w_string(s, (int)n, p);
-    }
-    else {
-        w_byte(TYPE_UNKNOWN, p);
-        p->error = WFERR_UNMARSHALLABLE;
-    }
-   exit:
-    p->depth--;
-}
-
-/* version currently has no effect for writing longs. */
-void
-PyMarshal_WriteLongToFile(long x, FILE *fp, int version)
-{
-    WFILE wf;
-    wf.fp = fp;
-    wf.error = WFERR_OK;
-    wf.depth = 0;
-    wf.strings = NULL;
-    wf.version = version;
-    w_long(x, &wf);
-}
-
-void
-PyMarshal_WriteObjectToFile(PyObject *x, FILE *fp, int version)
-{
-    WFILE wf;
-    wf.fp = fp;
-    wf.error = WFERR_OK;
-    wf.depth = 0;
-    wf.strings = (version > 0) ? PyDict_New() : NULL;
-    wf.version = version;
-    w_object(x, &wf);
-    Py_XDECREF(wf.strings);
-}
-
-typedef WFILE RFILE; /* Same struct with different invariants */
-
-#define rs_byte(p) (((p)->ptr < (p)->end) ? (unsigned char)*(p)->ptr++ : EOF)
-
-#define r_byte(p) ((p)->fp ? getc((p)->fp) : rs_byte(p))
-
-static int
-r_string(char *s, int n, RFILE *p)
-{
-    if (p->fp != NULL)
-        /* The result fits into int because it must be <=n. */
-        return (int)fread(s, 1, n, p->fp);
-    if (p->end - p->ptr < n)
-        n = (int)(p->end - p->ptr);
-    memcpy(s, p->ptr, n);
-    p->ptr += n;
-    return n;
-}
-
-static int
-r_short(RFILE *p)
-{
-    register short x;
-    x = r_byte(p);
-    x |= r_byte(p) << 8;
-    /* Sign-extension, in case short greater than 16 bits */
-    x |= -(x & 0x8000);
-    return x;
-}
-
-static long
-r_long(RFILE *p)
-{
-    register long x;
-    register FILE *fp = p->fp;
-    if (fp) {
-        x = getc(fp);
-        x |= (long)getc(fp) << 8;
-        x |= (long)getc(fp) << 16;
-        x |= (long)getc(fp) << 24;
-    }
-    else {
-        x = rs_byte(p);
-        x |= (long)rs_byte(p) << 8;
-        x |= (long)rs_byte(p) << 16;
-        x |= (long)rs_byte(p) << 24;
-    }
-#if SIZEOF_LONG > 4
-    /* Sign extension for 64-bit machines */
-    x |= -(x & 0x80000000L);
-#endif
-    return x;
-}
-
-/* r_long64 deals with the TYPE_INT64 code.  On a machine with
-   sizeof(long) > 4, it returns a Python int object, else a Python long
-   object.  Note that w_long64 writes out TYPE_INT if 32 bits is enough,
-   so there's no inefficiency here in returning a PyLong on 32-bit boxes
-   for everything written via TYPE_INT64 (i.e., if an int is written via
-   TYPE_INT64, it *needs* more than 32 bits).
-*/
-static PyObject *
-r_long64(RFILE *p)
-{
-    long lo4 = r_long(p);
-    long hi4 = r_long(p);
-#if SIZEOF_LONG > 4
-    long x = (hi4 << 32) | (lo4 & 0xFFFFFFFFL);
-    return PyInt_FromLong(x);
-#else
-    unsigned char buf[8];
-    int one = 1;
-    int is_little_endian = (int)*(char*)&one;
-    if (is_little_endian) {
-        memcpy(buf, &lo4, 4);
-        memcpy(buf+4, &hi4, 4);
-    }
-    else {
-        memcpy(buf, &hi4, 4);
-        memcpy(buf+4, &lo4, 4);
-    }
-    return _PyLong_FromByteArray(buf, 8, is_little_endian, 1);
-#endif
-}
-
-static PyObject *
-r_PyLong(RFILE *p)
-{
-    PyLongObject *ob;
-    int size, i, j, md, shorts_in_top_digit;
-    long n;
-    digit d;
-
-    n = r_long(p);
-    if (n == 0)
-        return (PyObject *)_PyLong_New(0);
-    if (n < -INT_MAX || n > INT_MAX) {
-        PyErr_SetString(PyExc_ValueError,
-                       "bad marshal data (long size out of range)");
-        return NULL;
-    }
-
-    size = 1 + (ABS(n) - 1) / PyLong_MARSHAL_RATIO;
-    shorts_in_top_digit = 1 + (ABS(n) - 1) % PyLong_MARSHAL_RATIO;
-    ob = _PyLong_New(size);
-    if (ob == NULL)
-        return NULL;
-    Py_SIZE(ob) = n > 0 ? size : -size;
-
-    for (i = 0; i < size-1; i++) {
-        d = 0;
-        for (j=0; j < PyLong_MARSHAL_RATIO; j++) {
-            md = r_short(p);
-            if (md < 0 || md > PyLong_MARSHAL_BASE)
-                goto bad_digit;
-            d += (digit)md << j*PyLong_MARSHAL_SHIFT;
-        }
-        ob->ob_digit[i] = d;
-    }
-    d = 0;
-    for (j=0; j < shorts_in_top_digit; j++) {
-        md = r_short(p);
-        if (md < 0 || md > PyLong_MARSHAL_BASE)
-            goto bad_digit;
-        /* topmost marshal digit should be nonzero */
-        if (md == 0 && j == shorts_in_top_digit - 1) {
-            Py_DECREF(ob);
-            PyErr_SetString(PyExc_ValueError,
-                "bad marshal data (unnormalized long data)");
-            return NULL;
-        }
-        d += (digit)md << j*PyLong_MARSHAL_SHIFT;
-    }
-    /* top digit should be nonzero, else the resulting PyLong won't be
-       normalized */
-    ob->ob_digit[size-1] = d;
-    return (PyObject *)ob;
-  bad_digit:
-    Py_DECREF(ob);
-    PyErr_SetString(PyExc_ValueError,
-                    "bad marshal data (digit out of range in long)");
-    return NULL;
-}
-
-
-static PyObject *
-r_object(RFILE *p)
-{
-    /* NULL is a valid return value, it does not necessarily means that
-       an exception is set. */
-    PyObject *v, *v2;
-    long i, n;
-    int type = r_byte(p);
-    PyObject *retval;
-
-    p->depth++;
-
-    if (p->depth > MAX_MARSHAL_STACK_DEPTH) {
-        p->depth--;
-        PyErr_SetString(PyExc_ValueError, "recursion limit exceeded");
-        return NULL;
-    }
-
-    switch (type) {
-
-    case EOF:
-        PyErr_SetString(PyExc_EOFError,
-                        "EOF read where object expected");
-        retval = NULL;
-        break;
-
-    case TYPE_NULL:
-        retval = NULL;
-        break;
-
-    case TYPE_NONE:
-        Py_INCREF(Py_None);
-        retval = Py_None;
-        break;
-
-    case TYPE_STOPITER:
-        Py_INCREF(PyExc_StopIteration);
-        retval = PyExc_StopIteration;
-        break;
-
-    case TYPE_ELLIPSIS:
-        Py_INCREF(Py_Ellipsis);
-        retval = Py_Ellipsis;
-        break;
-
-    case TYPE_FALSE:
-        Py_INCREF(Py_False);
-        retval = Py_False;
-        break;
-
-    case TYPE_TRUE:
-        Py_INCREF(Py_True);
-        retval = Py_True;
-        break;
-
-    case TYPE_INT:
-        retval = PyInt_FromLong(r_long(p));
-        break;
-
-    case TYPE_INT64:
-        retval = r_long64(p);
-        break;
-
-    case TYPE_LONG:
-        retval = r_PyLong(p);
-        break;
-
-    case TYPE_FLOAT:
-        {
-            char buf[256];
-            double dx;
-            n = r_byte(p);
-            if (n == EOF || r_string(buf, (int)n, p) != n) {
-                PyErr_SetString(PyExc_EOFError,
-                    "EOF read where object expected");
-                retval = NULL;
-                break;
-            }
-            buf[n] = '\0';
-            dx = PyOS_string_to_double(buf, NULL, NULL);
-            if (dx == -1.0 && PyErr_Occurred()) {
-                retval = NULL;
-                break;
-            }
-            retval = PyFloat_FromDouble(dx);
-            break;
-        }
-
-    case TYPE_BINARY_FLOAT:
-        {
-            unsigned char buf[8];
-            double x;
-            if (r_string((char*)buf, 8, p) != 8) {
-                PyErr_SetString(PyExc_EOFError,
-                    "EOF read where object expected");
-                retval = NULL;
-                break;
-            }
-            x = _PyFloat_Unpack8(buf, 1);
-            if (x == -1.0 && PyErr_Occurred()) {
-                retval = NULL;
-                break;
-            }
-            retval = PyFloat_FromDouble(x);
-            break;
-        }
-
-#ifndef WITHOUT_COMPLEX
-    case TYPE_COMPLEX:
-        {
-            char buf[256];
-            Py_complex c;
-            n = r_byte(p);
-            if (n == EOF || r_string(buf, (int)n, p) != n) {
-                PyErr_SetString(PyExc_EOFError,
-                    "EOF read where object expected");
-                retval = NULL;
-                break;
-            }
-            buf[n] = '\0';
-            c.real = PyOS_string_to_double(buf, NULL, NULL);
-            if (c.real == -1.0 && PyErr_Occurred()) {
-                retval = NULL;
-                break;
-            }
-            n = r_byte(p);
-            if (n == EOF || r_string(buf, (int)n, p) != n) {
-                PyErr_SetString(PyExc_EOFError,
-                    "EOF read where object expected");
-                retval = NULL;
-                break;
-            }
-            buf[n] = '\0';
-            c.imag = PyOS_string_to_double(buf, NULL, NULL);
-            if (c.imag == -1.0 && PyErr_Occurred()) {
-                retval = NULL;
-                break;
-            }
-            retval = PyComplex_FromCComplex(c);
-            break;
-        }
-
-    case TYPE_BINARY_COMPLEX:
-        {
-            unsigned char buf[8];
-            Py_complex c;
-            if (r_string((char*)buf, 8, p) != 8) {
-                PyErr_SetString(PyExc_EOFError,
-                    "EOF read where object expected");
-                retval = NULL;
-                break;
-            }
-            c.real = _PyFloat_Unpack8(buf, 1);
-            if (c.real == -1.0 && PyErr_Occurred()) {
-                retval = NULL;
-                break;
-            }
-            if (r_string((char*)buf, 8, p) != 8) {
-                PyErr_SetString(PyExc_EOFError,
-                    "EOF read where object expected");
-                retval = NULL;
-                break;
-            }
-            c.imag = _PyFloat_Unpack8(buf, 1);
-            if (c.imag == -1.0 && PyErr_Occurred()) {
-                retval = NULL;
-                break;
-            }
-            retval = PyComplex_FromCComplex(c);
-            break;
-        }
-#endif
-
-    case TYPE_INTERNED:
-    case TYPE_STRING:
-        n = r_long(p);
-        if (n < 0 || n > INT_MAX) {
-            PyErr_SetString(PyExc_ValueError, "bad marshal data (string size out of range)");
-            retval = NULL;
-            break;
-        }
-        v = PyString_FromStringAndSize((char *)NULL, n);
-        if (v == NULL) {
-            retval = NULL;
-            break;
-        }
-        if (r_string(PyString_AS_STRING(v), (int)n, p) != n) {
-            Py_DECREF(v);
-            PyErr_SetString(PyExc_EOFError,
-                            "EOF read where object expected");
-            retval = NULL;
-            break;
-        }
-        if (type == TYPE_INTERNED) {
-            PyString_InternInPlace(&v);
-            if (PyList_Append(p->strings, v) < 0) {
-                retval = NULL;
-                break;
-            }
-        }
-        retval = v;
-        break;
-
-    case TYPE_STRINGREF:
-        n = r_long(p);
-        if (n < 0 || n >= PyList_GET_SIZE(p->strings)) {
-            PyErr_SetString(PyExc_ValueError, "bad marshal data (string ref out of range)");
-            retval = NULL;
-            break;
-        }
-        v = PyList_GET_ITEM(p->strings, n);
-        Py_INCREF(v);
-        retval = v;
-        break;
-
-#ifdef Py_USING_UNICODE
-    case TYPE_UNICODE:
-        {
-        char *buffer;
-
-        n = r_long(p);
-        if (n < 0 || n > INT_MAX) {
-            PyErr_SetString(PyExc_ValueError, "bad marshal data (unicode size out of range)");
-            retval = NULL;
-            break;
-        }
-        buffer = PyMem_NEW(char, n);
-        if (buffer == NULL) {
-            retval = PyErr_NoMemory();
-            break;
-        }
-        if (r_string(buffer, (int)n, p) != n) {
-            PyMem_DEL(buffer);
-            PyErr_SetString(PyExc_EOFError,
-                "EOF read where object expected");
-            retval = NULL;
-            break;
-        }
-        v = PyUnicode_DecodeUTF8(buffer, n, NULL);
-        PyMem_DEL(buffer);
-        retval = v;
-        break;
-        }
-#endif
-
-    case TYPE_TUPLE:
-        n = r_long(p);
-        if (n < 0 || n > INT_MAX) {
-            PyErr_SetString(PyExc_ValueError, "bad marshal data (tuple size out of range)");
-            retval = NULL;
-            break;
-        }
-        v = PyTuple_New((int)n);
-        if (v == NULL) {
-            retval = NULL;
-            break;
-        }
-        for (i = 0; i < n; i++) {
-            v2 = r_object(p);
-            if ( v2 == NULL ) {
-                if (!PyErr_Occurred())
-                    PyErr_SetString(PyExc_TypeError,
-                        "NULL object in marshal data for tuple");
-                Py_DECREF(v);
-                v = NULL;
-                break;
-            }
-            PyTuple_SET_ITEM(v, (int)i, v2);
-        }
-        retval = v;
-        break;
-
-    case TYPE_LIST:
-        n = r_long(p);
-        if (n < 0 || n > INT_MAX) {
-            PyErr_SetString(PyExc_ValueError, "bad marshal data (list size out of range)");
-            retval = NULL;
-            break;
-        }
-        v = PyList_New((int)n);
-        if (v == NULL) {
-            retval = NULL;
-            break;
-        }
-        for (i = 0; i < n; i++) {
-            v2 = r_object(p);
-            if ( v2 == NULL ) {
-                if (!PyErr_Occurred())
-                    PyErr_SetString(PyExc_TypeError,
-                        "NULL object in marshal data for list");
-                Py_DECREF(v);
-                v = NULL;
-                break;
-            }
-            PyList_SET_ITEM(v, (int)i, v2);
-        }
-        retval = v;
-        break;
-
-    case TYPE_DICT:
-        v = PyDict_New();
-        if (v == NULL) {
-            retval = NULL;
-            break;
-        }
-        for (;;) {
-            PyObject *key, *val;
-            key = r_object(p);
-            if (key == NULL)
-                break;
-            val = r_object(p);
-            if (val != NULL)
-                PyDict_SetItem(v, key, val);
-            Py_DECREF(key);
-            Py_XDECREF(val);
-        }
-        if (PyErr_Occurred()) {
-            Py_DECREF(v);
-            v = NULL;
-        }
-        retval = v;
-        break;
-
-    case TYPE_SET:
-    case TYPE_FROZENSET:
-        n = r_long(p);
-        if (n < 0 || n > INT_MAX) {
-            PyErr_SetString(PyExc_ValueError, "bad marshal data (set size out of range)");
-            retval = NULL;
-            break;
-        }
-        v = (type == TYPE_SET) ? PySet_New(NULL) : PyFrozenSet_New(NULL);
-        if (v == NULL) {
-            retval = NULL;
-            break;
-        }
-        for (i = 0; i < n; i++) {
-            v2 = r_object(p);
-            if ( v2 == NULL ) {
-                if (!PyErr_Occurred())
-                    PyErr_SetString(PyExc_TypeError,
-                        "NULL object in marshal data for set");
-                Py_DECREF(v);
-                v = NULL;
-                break;
-            }
-            if (PySet_Add(v, v2) == -1) {
-                Py_DECREF(v);
-                Py_DECREF(v2);
-                v = NULL;
-                break;
-            }
-            Py_DECREF(v2);
-        }
-        retval = v;
-        break;
-
-    case TYPE_CODE:
-        if (PyEval_GetRestricted()) {
-            PyErr_SetString(PyExc_RuntimeError,
-                "cannot unmarshal code objects in "
-                "restricted execution mode");
-            retval = NULL;
-            break;
-        }
-        else {
-            int argcount;
-            int nlocals;
-            int stacksize;
-            int flags;
-            PyObject *code = NULL;
-            PyObject *consts = NULL;
-            PyObject *names = NULL;
-            PyObject *varnames = NULL;
-            PyObject *freevars = NULL;
-            PyObject *cellvars = NULL;
-            PyObject *filename = NULL;
-            PyObject *name = NULL;
-            int firstlineno;
-            PyObject *lnotab = NULL;
-
-            v = NULL;
-
-            /* XXX ignore long->int overflows for now */
-            argcount = (int)r_long(p);
-            nlocals = (int)r_long(p);
-            stacksize = (int)r_long(p);
-            flags = (int)r_long(p);
-            code = r_object(p);
-            if (code == NULL)
-                goto code_error;
-            consts = r_object(p);
-            if (consts == NULL)
-                goto code_error;
-            names = r_object(p);
-            if (names == NULL)
-                goto code_error;
-            varnames = r_object(p);
-            if (varnames == NULL)
-                goto code_error;
-            freevars = r_object(p);
-            if (freevars == NULL)
-                goto code_error;
-            cellvars = r_object(p);
-            if (cellvars == NULL)
-                goto code_error;
-            filename = r_object(p);
-            if (filename == NULL)
-                goto code_error;
-            name = r_object(p);
-            if (name == NULL)
-                goto code_error;
-            firstlineno = (int)r_long(p);
-            lnotab = r_object(p);
-            if (lnotab == NULL)
-                goto code_error;
-
-            v = (PyObject *) PyCode_New(
-                            argcount, nlocals, stacksize, flags,
-                            code, consts, names, varnames,
-                            freevars, cellvars, filename, name,
-                            firstlineno, lnotab);
-
-          code_error:
-            Py_XDECREF(code);
-            Py_XDECREF(consts);
-            Py_XDECREF(names);
-            Py_XDECREF(varnames);
-            Py_XDECREF(freevars);
-            Py_XDECREF(cellvars);
-            Py_XDECREF(filename);
-            Py_XDECREF(name);
-            Py_XDECREF(lnotab);
-
-        }
-        retval = v;
-        break;
-
-    default:
-        /* Bogus data got written, which isn't ideal.
-           This will let you keep working and recover. */
-        PyErr_SetString(PyExc_ValueError, "bad marshal data (unknown type code)");
-        retval = NULL;
-        break;
-
-    }
-    p->depth--;
-    return retval;
-}
-
-static PyObject *
-read_object(RFILE *p)
-{
-    PyObject *v;
-    if (PyErr_Occurred()) {
-        fprintf(stderr, "XXX readobject called with exception set\n");
-        return NULL;
-    }
-    v = r_object(p);
-    if (v == NULL && !PyErr_Occurred())
-        PyErr_SetString(PyExc_TypeError, "NULL object in marshal data for object");
-    return v;
-}
-
-int
-PyMarshal_ReadShortFromFile(FILE *fp)
-{
-    RFILE rf;
-    assert(fp);
-    rf.fp = fp;
-    rf.strings = NULL;
-    rf.end = rf.ptr = NULL;
-    return r_short(&rf);
-}
-
-long
-PyMarshal_ReadLongFromFile(FILE *fp)
-{
-    RFILE rf;
-    rf.fp = fp;
-    rf.strings = NULL;
-    rf.ptr = rf.end = NULL;
-    return r_long(&rf);
-}
-
-#ifdef HAVE_FSTAT
-/* Return size of file in bytes; < 0 if unknown. */
-static off_t
-getfilesize(FILE *fp)
-{
-    struct stat st;
-    if (fstat(fileno(fp), &st) != 0)
-        return -1;
-    else
-        return st.st_size;
-}
-#endif
-
-/* If we can get the size of the file up-front, and it's reasonably small,
- * read it in one gulp and delegate to ...FromString() instead.  Much quicker
- * than reading a byte at a time from file; speeds .pyc imports.
- * CAUTION:  since this may read the entire remainder of the file, don't
- * call it unless you know you're done with the file.
- */
-PyObject *
-PyMarshal_ReadLastObjectFromFile(FILE *fp)
-{
-/* REASONABLE_FILE_LIMIT is by defn something big enough for Tkinter.pyc. */
-#define REASONABLE_FILE_LIMIT (1L << 18)
-#ifdef HAVE_FSTAT
-    off_t filesize;
-    filesize = getfilesize(fp);
-    if (filesize > 0 && filesize <= REASONABLE_FILE_LIMIT) {
-        char* pBuf = (char *)PyMem_MALLOC(filesize);
-        if (pBuf != NULL) {
-            PyObject* v;
-            size_t n;
-            /* filesize must fit into an int, because it
-               is smaller than REASONABLE_FILE_LIMIT */
-            n = fread(pBuf, 1, (int)filesize, fp);
-            v = PyMarshal_ReadObjectFromString(pBuf, n);
-            PyMem_FREE(pBuf);
-            return v;
-        }
-
-    }
-#endif
-    /* We don't have fstat, or we do but the file is larger than
-     * REASONABLE_FILE_LIMIT or malloc failed -- read a byte at a time.
-     */
-    return PyMarshal_ReadObjectFromFile(fp);
-
-#undef REASONABLE_FILE_LIMIT
-}
-
-PyObject *
-PyMarshal_ReadObjectFromFile(FILE *fp)
-{
-    RFILE rf;
-    PyObject *result;
-    rf.fp = fp;
-    rf.strings = PyList_New(0);
-    rf.depth = 0;
-    rf.ptr = rf.end = NULL;
-    result = r_object(&rf);
-    Py_DECREF(rf.strings);
-    return result;
-}
-
-PyObject *
-PyMarshal_ReadObjectFromString(char *str, Py_ssize_t len)
-{
-    RFILE rf;
-    PyObject *result;
-    rf.fp = NULL;
-    rf.ptr = str;
-    rf.end = str + len;
-    rf.strings = PyList_New(0);
-    rf.depth = 0;
-    result = r_object(&rf);
-    Py_DECREF(rf.strings);
-    return result;
-}
-
-static void
-set_error(int error)
-{
-    switch (error) {
-    case WFERR_NOMEMORY:
-        PyErr_NoMemory();
-        break;
-    case WFERR_UNMARSHALLABLE:
-        PyErr_SetString(PyExc_ValueError, "unmarshallable object");
-        break;
-    case WFERR_NESTEDTOODEEP:
-    default:
-        PyErr_SetString(PyExc_ValueError,
-            "object too deeply nested to marshal");
-        break;
-    }
-}
-
-PyObject *
-PyMarshal_WriteObjectToString(PyObject *x, int version)
-{
-    WFILE wf;
-    wf.fp = NULL;
-    wf.str = PyString_FromStringAndSize((char *)NULL, 50);
-    if (wf.str == NULL)
-        return NULL;
-    wf.ptr = PyString_AS_STRING((PyStringObject *)wf.str);
-    wf.end = wf.ptr + PyString_Size(wf.str);
-    wf.error = WFERR_OK;
-    wf.depth = 0;
-    wf.version = version;
-    wf.strings = (version > 0) ? PyDict_New() : NULL;
-    w_object(x, &wf);
-    Py_XDECREF(wf.strings);
-    if (wf.str != NULL) {
-        char *base = PyString_AS_STRING((PyStringObject *)wf.str);
-        if (wf.ptr - base > PY_SSIZE_T_MAX) {
-            Py_DECREF(wf.str);
-            PyErr_SetString(PyExc_OverflowError,
-                            "too much marshall data for a string");
-            return NULL;
-        }
-        if (_PyString_Resize(&wf.str, (Py_ssize_t)(wf.ptr - base)))
-            return NULL;
-    }
-    if (wf.error != WFERR_OK) {
-        Py_XDECREF(wf.str);
-        set_error(wf.error);
-        return NULL;
-    }
-    return wf.str;
-}
-
-/* And an interface for Python programs... */
-
-static PyObject *
-marshal_dump(PyObject *self, PyObject *args)
-{
-    WFILE wf;
-    PyObject *x;
-    PyObject *f;
-    int version = Py_MARSHAL_VERSION;
-    if (!PyArg_ParseTuple(args, "OO|i:dump", &x, &f, &version))
-        return NULL;
-    if (!PyFile_Check(f)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "marshal.dump() 2nd arg must be file");
-        return NULL;
-    }
-    wf.fp = PyFile_AsFile(f);
-    wf.str = NULL;
-    wf.ptr = wf.end = NULL;
-    wf.error = WFERR_OK;
-    wf.depth = 0;
-    wf.strings = (version > 0) ? PyDict_New() : 0;
-    wf.version = version;
-    w_object(x, &wf);
-    Py_XDECREF(wf.strings);
-    if (wf.error != WFERR_OK) {
-        set_error(wf.error);
-        return NULL;
-    }
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(dump_doc,
-"dump(value, file[, version])\n\
-\n\
-Write the value on the open file. The value must be a supported type.\n\
-The file must be an open file object such as sys.stdout or returned by\n\
-open() or os.popen(). It must be opened in binary mode ('wb' or 'w+b').\n\
-\n\
-If the value has (or contains an object that has) an unsupported type, a\n\
-ValueError exception is raised — but garbage data will also be written\n\
-to the file. The object will not be properly read back by load()\n\
-\n\
-New in version 2.4: The version argument indicates the data format that\n\
-dump should use.");
-
-static PyObject *
-marshal_load(PyObject *self, PyObject *f)
-{
-    RFILE rf;
-    PyObject *result;
-    if (!PyFile_Check(f)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "marshal.load() arg must be file");
-        return NULL;
-    }
-    rf.fp = PyFile_AsFile(f);
-    rf.strings = PyList_New(0);
-    rf.depth = 0;
-    result = read_object(&rf);
-    Py_DECREF(rf.strings);
-    return result;
-}
-
-PyDoc_STRVAR(load_doc,
-"load(file)\n\
-\n\
-Read one value from the open file and return it. If no valid value is\n\
-read (e.g. because the data has a different Python version’s\n\
-incompatible marshal format), raise EOFError, ValueError or TypeError.\n\
-The file must be an open file object opened in binary mode ('rb' or\n\
-'r+b').\n\
-\n\
-Note: If an object containing an unsupported type was marshalled with\n\
-dump(), load() will substitute None for the unmarshallable type.");
-
-
-static PyObject *
-marshal_dumps(PyObject *self, PyObject *args)
-{
-    PyObject *x;
-    int version = Py_MARSHAL_VERSION;
-    if (!PyArg_ParseTuple(args, "O|i:dumps", &x, &version))
-        return NULL;
-    return PyMarshal_WriteObjectToString(x, version);
-}
-
-PyDoc_STRVAR(dumps_doc,
-"dumps(value[, version])\n\
-\n\
-Return the string that would be written to a file by dump(value, file).\n\
-The value must be a supported type. Raise a ValueError exception if\n\
-value has (or contains an object that has) an unsupported type.\n\
-\n\
-New in version 2.4: The version argument indicates the data format that\n\
-dumps should use.");
-
-
-static PyObject *
-marshal_loads(PyObject *self, PyObject *args)
-{
-    RFILE rf;
-    char *s;
-    Py_ssize_t n;
-    PyObject* result;
-    if (!PyArg_ParseTuple(args, "s#:loads", &s, &n))
-        return NULL;
-    rf.fp = NULL;
-    rf.ptr = s;
-    rf.end = s + n;
-    rf.strings = PyList_New(0);
-    rf.depth = 0;
-    result = read_object(&rf);
-    Py_DECREF(rf.strings);
-    return result;
-}
-
-PyDoc_STRVAR(loads_doc,
-"loads(string)\n\
-\n\
-Convert the string to a value. If no valid value is found, raise\n\
-EOFError, ValueError or TypeError. Extra characters in the string are\n\
-ignored.");
-
-static PyMethodDef marshal_methods[] = {
-    {"dump",            marshal_dump,   METH_VARARGS,   dump_doc},
-    {"load",            marshal_load,   METH_O,         load_doc},
-    {"dumps",           marshal_dumps,  METH_VARARGS,   dumps_doc},
-    {"loads",           marshal_loads,  METH_VARARGS,   loads_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-PyDoc_STRVAR(marshal_doc,
-"This module contains functions that can read and write Python values in\n\
-a binary format. The format is specific to Python, but independent of\n\
-machine architecture issues.\n\
-\n\
-Not all Python object types are supported; in general, only objects\n\
-whose value is independent from a particular invocation of Python can be\n\
-written and read by this module. The following types are supported:\n\
-None, integers, long integers, floating point numbers, strings, Unicode\n\
-objects, tuples, lists, sets, dictionaries, and code objects, where it\n\
-should be understood that tuples, lists and dictionaries are only\n\
-supported as long as the values contained therein are themselves\n\
-supported; and recursive lists and dictionaries should not be written\n\
-(they will cause infinite loops).\n\
-\n\
-Variables:\n\
-\n\
-version -- indicates the format that the module uses. Version 0 is the\n\
-    historical format, version 1 (added in Python 2.4) shares interned\n\
-    strings and version 2 (added in Python 2.5) uses a binary format for\n\
-    floating point numbers. (New in version 2.4)\n\
-\n\
-Functions:\n\
-\n\
-dump() -- write value to a file\n\
-load() -- read value from a file\n\
-dumps() -- write value to a string\n\
-loads() -- read value from a string");
-
-
-PyMODINIT_FUNC
-PyMarshal_Init(void)
-{
-    PyObject *mod = Py_InitModule3("marshal", marshal_methods,
-        marshal_doc);
-    if (mod == NULL)
-        return;
-    PyModule_AddIntConstant(mod, "version", Py_MARSHAL_VERSION);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/modsupport.c b/AppPkg/Applications/Python/Python-2.7.2/Python/modsupport.c
deleted file mode 100644
index e383bdf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/modsupport.c
+++ /dev/null
@@ -1,644 +0,0 @@
-
-/* Module support implementation */
-
-#include "Python.h"
-
-#define FLAG_SIZE_T 1
-typedef double va_double;
-
-static PyObject *va_build_value(const char *, va_list, int);
-
-/* Package context -- the full module name for package imports */
-char *_Py_PackageContext = NULL;
-
-/* Py_InitModule4() parameters:
-   - name is the module name
-   - methods is the list of top-level functions
-   - doc is the documentation string
-   - passthrough is passed as self to functions defined in the module
-   - api_version is the value of PYTHON_API_VERSION at the time the
-     module was compiled
-
-   Return value is a borrowed reference to the module object; or NULL
-   if an error occurred (in Python 1.4 and before, errors were fatal).
-   Errors may still leak memory.
-*/
-
-static char api_version_warning[] =
-"Python C API version mismatch for module %.100s:\
- This Python has API version %d, module %.100s has version %d.";
-
-PyObject *
-Py_InitModule4(const char *name, PyMethodDef *methods, const char *doc,
-               PyObject *passthrough, int module_api_version)
-{
-    PyObject *m, *d, *v, *n;
-    PyMethodDef *ml;
-    PyInterpreterState *interp = PyThreadState_Get()->interp;
-    if (interp->modules == NULL)
-        Py_FatalError("Python import machinery not initialized");
-    if (module_api_version != PYTHON_API_VERSION) {
-        char message[512];
-        PyOS_snprintf(message, sizeof(message),
-                      api_version_warning, name,
-                      PYTHON_API_VERSION, name,
-                      module_api_version);
-        if (PyErr_Warn(PyExc_RuntimeWarning, message))
-            return NULL;
-    }
-    /* Make sure name is fully qualified.
-
-       This is a bit of a hack: when the shared library is loaded,
-       the module name is "package.module", but the module calls
-       Py_InitModule*() with just "module" for the name.  The shared
-       library loader squirrels away the true name of the module in
-       _Py_PackageContext, and Py_InitModule*() will substitute this
-       (if the name actually matches).
-    */
-    if (_Py_PackageContext != NULL) {
-        char *p = strrchr(_Py_PackageContext, '.');
-        if (p != NULL && strcmp(name, p+1) == 0) {
-            name = _Py_PackageContext;
-            _Py_PackageContext = NULL;
-        }
-    }
-    if ((m = PyImport_AddModule(name)) == NULL)
-        return NULL;
-    d = PyModule_GetDict(m);
-    if (methods != NULL) {
-        n = PyString_FromString(name);
-        if (n == NULL)
-            return NULL;
-        for (ml = methods; ml->ml_name != NULL; ml++) {
-            if ((ml->ml_flags & METH_CLASS) ||
-                (ml->ml_flags & METH_STATIC)) {
-                PyErr_SetString(PyExc_ValueError,
-                                "module functions cannot set"
-                                " METH_CLASS or METH_STATIC");
-                Py_DECREF(n);
-                return NULL;
-            }
-            v = PyCFunction_NewEx(ml, passthrough, n);
-            if (v == NULL) {
-                Py_DECREF(n);
-                return NULL;
-            }
-            if (PyDict_SetItemString(d, ml->ml_name, v) != 0) {
-                Py_DECREF(v);
-                Py_DECREF(n);
-                return NULL;
-            }
-            Py_DECREF(v);
-        }
-        Py_DECREF(n);
-    }
-    if (doc != NULL) {
-        v = PyString_FromString(doc);
-        if (v == NULL || PyDict_SetItemString(d, "__doc__", v) != 0) {
-            Py_XDECREF(v);
-            return NULL;
-        }
-        Py_DECREF(v);
-    }
-    return m;
-}
-
-
-/* Helper for mkvalue() to scan the length of a format */
-
-static int
-countformat(const char *format, int endchar)
-{
-    int count = 0;
-    int level = 0;
-    while (level > 0 || *format != endchar) {
-        switch (*format) {
-        case '\0':
-            /* Premature end */
-            PyErr_SetString(PyExc_SystemError,
-                            "unmatched paren in format");
-            return -1;
-        case '(':
-        case '[':
-        case '{':
-            if (level == 0)
-                count++;
-            level++;
-            break;
-        case ')':
-        case ']':
-        case '}':
-            level--;
-            break;
-        case '#':
-        case '&':
-        case ',':
-        case ':':
-        case ' ':
-        case '\t':
-            break;
-        default:
-            if (level == 0)
-                count++;
-        }
-        format++;
-    }
-    return count;
-}
-
-
-/* Generic function to create a value -- the inverse of getargs() */
-/* After an original idea and first implementation by Steven Miale */
-
-static PyObject *do_mktuple(const char**, va_list *, int, int, int);
-static PyObject *do_mklist(const char**, va_list *, int, int, int);
-static PyObject *do_mkdict(const char**, va_list *, int, int, int);
-static PyObject *do_mkvalue(const char**, va_list *, int);
-
-
-static PyObject *
-do_mkdict(const char **p_format, va_list *p_va, int endchar, int n, int flags)
-{
-    PyObject *d;
-    int i;
-    int itemfailed = 0;
-    if (n < 0)
-        return NULL;
-    if ((d = PyDict_New()) == NULL)
-        return NULL;
-    /* Note that we can't bail immediately on error as this will leak
-       refcounts on any 'N' arguments. */
-    for (i = 0; i < n; i+= 2) {
-        PyObject *k, *v;
-        int err;
-        k = do_mkvalue(p_format, p_va, flags);
-        if (k == NULL) {
-            itemfailed = 1;
-            Py_INCREF(Py_None);
-            k = Py_None;
-        }
-        v = do_mkvalue(p_format, p_va, flags);
-        if (v == NULL) {
-            itemfailed = 1;
-            Py_INCREF(Py_None);
-            v = Py_None;
-        }
-        err = PyDict_SetItem(d, k, v);
-        Py_DECREF(k);
-        Py_DECREF(v);
-        if (err < 0 || itemfailed) {
-            Py_DECREF(d);
-            return NULL;
-        }
-    }
-    if (d != NULL && **p_format != endchar) {
-        Py_DECREF(d);
-        d = NULL;
-        PyErr_SetString(PyExc_SystemError,
-                        "Unmatched paren in format");
-    }
-    else if (endchar)
-        ++*p_format;
-    return d;
-}
-
-static PyObject *
-do_mklist(const char **p_format, va_list *p_va, int endchar, int n, int flags)
-{
-    PyObject *v;
-    int i;
-    int itemfailed = 0;
-    if (n < 0)
-        return NULL;
-    v = PyList_New(n);
-    if (v == NULL)
-        return NULL;
-    /* Note that we can't bail immediately on error as this will leak
-       refcounts on any 'N' arguments. */
-    for (i = 0; i < n; i++) {
-        PyObject *w = do_mkvalue(p_format, p_va, flags);
-        if (w == NULL) {
-            itemfailed = 1;
-            Py_INCREF(Py_None);
-            w = Py_None;
-        }
-        PyList_SET_ITEM(v, i, w);
-    }
-
-    if (itemfailed) {
-        /* do_mkvalue() should have already set an error */
-        Py_DECREF(v);
-        return NULL;
-    }
-    if (**p_format != endchar) {
-        Py_DECREF(v);
-        PyErr_SetString(PyExc_SystemError,
-                        "Unmatched paren in format");
-        return NULL;
-    }
-    if (endchar)
-        ++*p_format;
-    return v;
-}
-
-#ifdef Py_USING_UNICODE
-static int
-_ustrlen(Py_UNICODE *u)
-{
-    int i = 0;
-    Py_UNICODE *v = u;
-    while (*v != 0) { i++; v++; }
-    return i;
-}
-#endif
-
-static PyObject *
-do_mktuple(const char **p_format, va_list *p_va, int endchar, int n, int flags)
-{
-    PyObject *v;
-    int i;
-    int itemfailed = 0;
-    if (n < 0)
-        return NULL;
-    if ((v = PyTuple_New(n)) == NULL)
-        return NULL;
-    /* Note that we can't bail immediately on error as this will leak
-       refcounts on any 'N' arguments. */
-    for (i = 0; i < n; i++) {
-        PyObject *w = do_mkvalue(p_format, p_va, flags);
-        if (w == NULL) {
-            itemfailed = 1;
-            Py_INCREF(Py_None);
-            w = Py_None;
-        }
-        PyTuple_SET_ITEM(v, i, w);
-    }
-    if (itemfailed) {
-        /* do_mkvalue() should have already set an error */
-        Py_DECREF(v);
-        return NULL;
-    }
-    if (**p_format != endchar) {
-        Py_DECREF(v);
-        PyErr_SetString(PyExc_SystemError,
-                        "Unmatched paren in format");
-        return NULL;
-    }
-    if (endchar)
-        ++*p_format;
-    return v;
-}
-
-static PyObject *
-do_mkvalue(const char **p_format, va_list *p_va, int flags)
-{
-    for (;;) {
-        switch (*(*p_format)++) {
-        case '(':
-            return do_mktuple(p_format, p_va, ')',
-                              countformat(*p_format, ')'), flags);
-
-        case '[':
-            return do_mklist(p_format, p_va, ']',
-                             countformat(*p_format, ']'), flags);
-
-        case '{':
-            return do_mkdict(p_format, p_va, '}',
-                             countformat(*p_format, '}'), flags);
-
-        case 'b':
-        case 'B':
-        case 'h':
-        case 'i':
-            return PyInt_FromLong((long)va_arg(*p_va, int));
-
-        case 'H':
-            return PyInt_FromLong((long)va_arg(*p_va, unsigned int));
-
-        case 'I':
-        {
-            unsigned int n;
-            n = va_arg(*p_va, unsigned int);
-            if (n > (unsigned long)PyInt_GetMax())
-                return PyLong_FromUnsignedLong((unsigned long)n);
-            else
-                return PyInt_FromLong(n);
-        }
-
-        case 'n':
-#if SIZEOF_SIZE_T!=SIZEOF_LONG
-            return PyInt_FromSsize_t(va_arg(*p_va, Py_ssize_t));
-#endif
-            /* Fall through from 'n' to 'l' if Py_ssize_t is long */
-        case 'l':
-            return PyInt_FromLong(va_arg(*p_va, long));
-
-        case 'k':
-        {
-            unsigned long n;
-            n = va_arg(*p_va, unsigned long);
-            if (n > (unsigned long)PyInt_GetMax())
-                return PyLong_FromUnsignedLong(n);
-            else
-                return PyInt_FromLong(n);
-        }
-
-#ifdef HAVE_LONG_LONG
-        case 'L':
-            return PyLong_FromLongLong((PY_LONG_LONG)va_arg(*p_va, PY_LONG_LONG));
-
-        case 'K':
-            return PyLong_FromUnsignedLongLong((PY_LONG_LONG)va_arg(*p_va, unsigned PY_LONG_LONG));
-#endif
-#ifdef Py_USING_UNICODE
-        case 'u':
-        {
-            PyObject *v;
-            Py_UNICODE *u = va_arg(*p_va, Py_UNICODE *);
-            Py_ssize_t n;
-            if (**p_format == '#') {
-                ++*p_format;
-                if (flags & FLAG_SIZE_T)
-                    n = va_arg(*p_va, Py_ssize_t);
-                else
-                    n = va_arg(*p_va, int);
-            }
-            else
-                n = -1;
-            if (u == NULL) {
-                v = Py_None;
-                Py_INCREF(v);
-            }
-            else {
-                if (n < 0)
-                    n = _ustrlen(u);
-                v = PyUnicode_FromUnicode(u, n);
-            }
-            return v;
-        }
-#endif
-        case 'f':
-        case 'd':
-            return PyFloat_FromDouble(
-                (double)va_arg(*p_va, va_double));
-
-#ifndef WITHOUT_COMPLEX
-        case 'D':
-            return PyComplex_FromCComplex(
-                *((Py_complex *)va_arg(*p_va, Py_complex *)));
-#endif /* WITHOUT_COMPLEX */
-
-        case 'c':
-        {
-            char p[1];
-            p[0] = (char)va_arg(*p_va, int);
-            return PyString_FromStringAndSize(p, 1);
-        }
-
-        case 's':
-        case 'z':
-        {
-            PyObject *v;
-            char *str = va_arg(*p_va, char *);
-            Py_ssize_t n;
-            if (**p_format == '#') {
-                ++*p_format;
-                if (flags & FLAG_SIZE_T)
-                    n = va_arg(*p_va, Py_ssize_t);
-                else
-                    n = va_arg(*p_va, int);
-            }
-            else
-                n = -1;
-            if (str == NULL) {
-                v = Py_None;
-                Py_INCREF(v);
-            }
-            else {
-                if (n < 0) {
-                    size_t m = strlen(str);
-                    if (m > PY_SSIZE_T_MAX) {
-                        PyErr_SetString(PyExc_OverflowError,
-                            "string too long for Python string");
-                        return NULL;
-                    }
-                    n = (Py_ssize_t)m;
-                }
-                v = PyString_FromStringAndSize(str, n);
-            }
-            return v;
-        }
-
-        case 'N':
-        case 'S':
-        case 'O':
-        if (**p_format == '&') {
-            typedef PyObject *(*converter)(void *);
-            converter func = va_arg(*p_va, converter);
-            void *arg = va_arg(*p_va, void *);
-            ++*p_format;
-            return (*func)(arg);
-        }
-        else {
-            PyObject *v;
-            v = va_arg(*p_va, PyObject *);
-            if (v != NULL) {
-                if (*(*p_format - 1) != 'N')
-                    Py_INCREF(v);
-            }
-            else if (!PyErr_Occurred())
-                /* If a NULL was passed
-                 * because a call that should
-                 * have constructed a value
-                 * failed, that's OK, and we
-                 * pass the error on; but if
-                 * no error occurred it's not
-                 * clear that the caller knew
-                 * what she was doing. */
-                PyErr_SetString(PyExc_SystemError,
-                    "NULL object passed to Py_BuildValue");
-            return v;
-        }
-
-        case ':':
-        case ',':
-        case ' ':
-        case '\t':
-            break;
-
-        default:
-            PyErr_SetString(PyExc_SystemError,
-                "bad format char passed to Py_BuildValue");
-            return NULL;
-
-        }
-    }
-}
-
-
-PyObject *
-Py_BuildValue(const char *format, ...)
-{
-    va_list va;
-    PyObject* retval;
-    va_start(va, format);
-    retval = va_build_value(format, va, 0);
-    va_end(va);
-    return retval;
-}
-
-PyObject *
-_Py_BuildValue_SizeT(const char *format, ...)
-{
-    va_list va;
-    PyObject* retval;
-    va_start(va, format);
-    retval = va_build_value(format, va, FLAG_SIZE_T);
-    va_end(va);
-    return retval;
-}
-
-PyObject *
-Py_VaBuildValue(const char *format, va_list va)
-{
-    return va_build_value(format, va, 0);
-}
-
-PyObject *
-_Py_VaBuildValue_SizeT(const char *format, va_list va)
-{
-    return va_build_value(format, va, FLAG_SIZE_T);
-}
-
-static PyObject *
-va_build_value(const char *format, va_list va, int flags)
-{
-    const char *f = format;
-    int n = countformat(f, '\0');
-    va_list lva;
-
-#ifdef VA_LIST_IS_ARRAY
-    memcpy(lva, va, sizeof(va_list));
-#else
-#ifdef __va_copy
-    __va_copy(lva, va);
-#else
-    lva = va;
-#endif
-#endif
-
-    if (n < 0)
-        return NULL;
-    if (n == 0) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    if (n == 1)
-        return do_mkvalue(&f, &lva, flags);
-    return do_mktuple(&f, &lva, '\0', n, flags);
-}
-
-
-PyObject *
-PyEval_CallFunction(PyObject *obj, const char *format, ...)
-{
-    va_list vargs;
-    PyObject *args;
-    PyObject *res;
-
-    va_start(vargs, format);
-
-    args = Py_VaBuildValue(format, vargs);
-    va_end(vargs);
-
-    if (args == NULL)
-        return NULL;
-
-    res = PyEval_CallObject(obj, args);
-    Py_DECREF(args);
-
-    return res;
-}
-
-
-PyObject *
-PyEval_CallMethod(PyObject *obj, const char *methodname, const char *format, ...)
-{
-    va_list vargs;
-    PyObject *meth;
-    PyObject *args;
-    PyObject *res;
-
-    meth = PyObject_GetAttrString(obj, methodname);
-    if (meth == NULL)
-        return NULL;
-
-    va_start(vargs, format);
-
-    args = Py_VaBuildValue(format, vargs);
-    va_end(vargs);
-
-    if (args == NULL) {
-        Py_DECREF(meth);
-        return NULL;
-    }
-
-    res = PyEval_CallObject(meth, args);
-    Py_DECREF(meth);
-    Py_DECREF(args);
-
-    return res;
-}
-
-int
-PyModule_AddObject(PyObject *m, const char *name, PyObject *o)
-{
-    PyObject *dict;
-    if (!PyModule_Check(m)) {
-        PyErr_SetString(PyExc_TypeError,
-                    "PyModule_AddObject() needs module as first arg");
-        return -1;
-    }
-    if (!o) {
-        if (!PyErr_Occurred())
-            PyErr_SetString(PyExc_TypeError,
-                            "PyModule_AddObject() needs non-NULL value");
-        return -1;
-    }
-
-    dict = PyModule_GetDict(m);
-    if (dict == NULL) {
-        /* Internal error -- modules must have a dict! */
-        PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__",
-                     PyModule_GetName(m));
-        return -1;
-    }
-    if (PyDict_SetItemString(dict, name, o))
-        return -1;
-    Py_DECREF(o);
-    return 0;
-}
-
-int
-PyModule_AddIntConstant(PyObject *m, const char *name, long value)
-{
-    PyObject *o = PyInt_FromLong(value);
-    if (!o)
-        return -1;
-    if (PyModule_AddObject(m, name, o) == 0)
-        return 0;
-    Py_DECREF(o);
-    return -1;
-}
-
-int
-PyModule_AddStringConstant(PyObject *m, const char *name, const char *value)
-{
-    PyObject *o = PyString_FromString(value);
-    if (!o)
-        return -1;
-    if (PyModule_AddObject(m, name, o) == 0)
-        return 0;
-    Py_DECREF(o);
-    return -1;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/mysnprintf.c b/AppPkg/Applications/Python/Python-2.7.2/Python/mysnprintf.c
deleted file mode 100644
index f9481a8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/mysnprintf.c
+++ /dev/null
@@ -1,105 +0,0 @@
-#include "Python.h"
-#include <ctype.h>
-
-/* snprintf() wrappers.  If the platform has vsnprintf, we use it, else we
-   emulate it in a half-hearted way.  Even if the platform has it, we wrap
-   it because platforms differ in what vsnprintf does in case the buffer
-   is too small:  C99 behavior is to return the number of characters that
-   would have been written had the buffer not been too small, and to set
-   the last byte of the buffer to \0.  At least MS _vsnprintf returns a
-   negative value instead, and fills the entire buffer with non-\0 data.
-
-   The wrappers ensure that str[size-1] is always \0 upon return.
-
-   PyOS_snprintf and PyOS_vsnprintf never write more than size bytes
-   (including the trailing '\0') into str.
-
-   If the platform doesn't have vsnprintf, and the buffer size needed to
-   avoid truncation exceeds size by more than 512, Python aborts with a
-   Py_FatalError.
-
-   Return value (rv):
-
-    When 0 <= rv < size, the output conversion was unexceptional, and
-    rv characters were written to str (excluding a trailing \0 byte at
-    str[rv]).
-
-    When rv >= size, output conversion was truncated, and a buffer of
-    size rv+1 would have been needed to avoid truncation.  str[size-1]
-    is \0 in this case.
-
-    When rv < 0, "something bad happened".  str[size-1] is \0 in this
-    case too, but the rest of str is unreliable.  It could be that
-    an error in format codes was detected by libc, or on platforms
-    with a non-C99 vsnprintf simply that the buffer wasn't big enough
-    to avoid truncation, or on platforms without any vsnprintf that
-    PyMem_Malloc couldn't obtain space for a temp buffer.
-
-   CAUTION:  Unlike C99, str != NULL and size > 0 are required.
-*/
-
-int
-PyOS_snprintf(char *str, size_t size, const  char  *format, ...)
-{
-    int rc;
-    va_list va;
-
-    va_start(va, format);
-    rc = PyOS_vsnprintf(str, size, format, va);
-    va_end(va);
-    return rc;
-}
-
-int
-PyOS_vsnprintf(char *str, size_t size, const char  *format, va_list va)
-{
-    int len;  /* # bytes written, excluding \0 */
-#ifdef HAVE_SNPRINTF
-#define _PyOS_vsnprintf_EXTRA_SPACE 1
-#else
-#define _PyOS_vsnprintf_EXTRA_SPACE 512
-    char *buffer;
-#endif
-    assert(str != NULL);
-    assert(size > 0);
-    assert(format != NULL);
-    /* We take a size_t as input but return an int.  Sanity check
-     * our input so that it won't cause an overflow in the
-     * vsnprintf return value or the buffer malloc size.  */
-    if (size > INT_MAX - _PyOS_vsnprintf_EXTRA_SPACE) {
-        len = -666;
-        goto Done;
-    }
-
-#ifdef HAVE_SNPRINTF
-    len = vsnprintf(str, size, format, va);
-#else
-    /* Emulate it. */
-    buffer = PyMem_MALLOC(size + _PyOS_vsnprintf_EXTRA_SPACE);
-    if (buffer == NULL) {
-        len = -666;
-        goto Done;
-    }
-
-    len = vsprintf(buffer, format, va);
-    if (len < 0)
-        /* ignore the error */;
-
-    else if ((size_t)len >= size + _PyOS_vsnprintf_EXTRA_SPACE)
-        Py_FatalError("Buffer overflow in PyOS_snprintf/PyOS_vsnprintf");
-
-    else {
-        const size_t to_copy = (size_t)len < size ?
-                                (size_t)len : size - 1;
-        assert(to_copy < size);
-        memcpy(str, buffer, to_copy);
-        str[to_copy] = '\0';
-    }
-    PyMem_FREE(buffer);
-#endif
-Done:
-    if (size > 0)
-        str[size-1] = '\0';
-    return len;
-#undef _PyOS_vsnprintf_EXTRA_SPACE
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/mystrtoul.c b/AppPkg/Applications/Python/Python-2.7.2/Python/mystrtoul.c
deleted file mode 100644
index 096eb16..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/mystrtoul.c
+++ /dev/null
@@ -1,285 +0,0 @@
-
-#include "Python.h"
-
-#if defined(__sgi) && defined(WITH_THREAD) && !defined(_SGI_MP_SOURCE)
-#define _SGI_MP_SOURCE
-#endif
-
-/* strtol and strtoul, renamed to avoid conflicts */
-
-
-#include <ctype.h>
-#ifdef HAVE_ERRNO_H
-#include <errno.h>
-#endif
-
-/* Static overflow check values for bases 2 through 36.
- * smallmax[base] is the largest unsigned long i such that
- * i * base doesn't overflow unsigned long.
- */
-static unsigned long smallmax[] = {
-    0, /* bases 0 and 1 are invalid */
-    0,
-    ULONG_MAX / 2,
-    ULONG_MAX / 3,
-    ULONG_MAX / 4,
-    ULONG_MAX / 5,
-    ULONG_MAX / 6,
-    ULONG_MAX / 7,
-    ULONG_MAX / 8,
-    ULONG_MAX / 9,
-    ULONG_MAX / 10,
-    ULONG_MAX / 11,
-    ULONG_MAX / 12,
-    ULONG_MAX / 13,
-    ULONG_MAX / 14,
-    ULONG_MAX / 15,
-    ULONG_MAX / 16,
-    ULONG_MAX / 17,
-    ULONG_MAX / 18,
-    ULONG_MAX / 19,
-    ULONG_MAX / 20,
-    ULONG_MAX / 21,
-    ULONG_MAX / 22,
-    ULONG_MAX / 23,
-    ULONG_MAX / 24,
-    ULONG_MAX / 25,
-    ULONG_MAX / 26,
-    ULONG_MAX / 27,
-    ULONG_MAX / 28,
-    ULONG_MAX / 29,
-    ULONG_MAX / 30,
-    ULONG_MAX / 31,
-    ULONG_MAX / 32,
-    ULONG_MAX / 33,
-    ULONG_MAX / 34,
-    ULONG_MAX / 35,
-    ULONG_MAX / 36,
-};
-
-/* maximum digits that can't ever overflow for bases 2 through 36,
- * calculated by [int(math.floor(math.log(2**32, i))) for i in range(2, 37)].
- * Note that this is pessimistic if sizeof(long) > 4.
- */
-#if SIZEOF_LONG == 4
-static int digitlimit[] = {
-    0,  0, 32, 20, 16, 13, 12, 11, 10, 10,  /*  0 -  9 */
-    9,  9,  8,  8,  8,  8,  8,  7,  7,  7,  /* 10 - 19 */
-    7,  7,  7,  7,  6,  6,  6,  6,  6,  6,  /* 20 - 29 */
-    6,  6,  6,  6,  6,  6,  6};             /* 30 - 36 */
-#elif SIZEOF_LONG == 8
-/* [int(math.floor(math.log(2**64, i))) for i in range(2, 37)] */
-static int digitlimit[] = {
-         0,   0, 64, 40, 32, 27, 24, 22, 21, 20,  /*  0 -  9 */
-    19,  18, 17, 17, 16, 16, 16, 15, 15, 15,  /* 10 - 19 */
-    14,  14, 14, 14, 13, 13, 13, 13, 13, 13,  /* 20 - 29 */
-    13,  12, 12, 12, 12, 12, 12};             /* 30 - 36 */
-#else
-#error "Need table for SIZEOF_LONG"
-#endif
-
-/*
-**      strtoul
-**              This is a general purpose routine for converting
-**              an ascii string to an integer in an arbitrary base.
-**              Leading white space is ignored.  If 'base' is zero
-**              it looks for a leading 0, 0b, 0B, 0o, 0O, 0x or 0X
-**              to tell which base.  If these are absent it defaults
-**              to 10. Base must be 0 or between 2 and 36 (inclusive).
-**              If 'ptr' is non-NULL it will contain a pointer to
-**              the end of the scan.
-**              Errors due to bad pointers will probably result in
-**              exceptions - we don't check for them.
-*/
-unsigned long
-PyOS_strtoul(register char *str, char **ptr, int base)
-{
-    register unsigned long result = 0; /* return value of the function */
-    register int c;             /* current input character */
-    register int ovlimit;       /* required digits to overflow */
-
-    /* skip leading white space */
-    while (*str && isspace(Py_CHARMASK(*str)))
-        ++str;
-
-    /* check for leading 0 or 0x for auto-base or base 16 */
-    switch (base) {
-    case 0:             /* look for leading 0, 0b, 0o or 0x */
-        if (*str == '0') {
-            ++str;
-            if (*str == 'x' || *str == 'X') {
-                /* there must be at least one digit after 0x */
-                if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 16) {
-                    if (ptr)
-                        *ptr = str;
-                    return 0;
-                }
-                ++str;
-                base = 16;
-            } else if (*str == 'o' || *str == 'O') {
-                /* there must be at least one digit after 0o */
-                if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 8) {
-                    if (ptr)
-                        *ptr = str;
-                    return 0;
-                }
-                ++str;
-                base = 8;
-            } else if (*str == 'b' || *str == 'B') {
-                /* there must be at least one digit after 0b */
-                if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 2) {
-                    if (ptr)
-                        *ptr = str;
-                    return 0;
-                }
-                ++str;
-                base = 2;
-            } else {
-                base = 8;
-            }
-        }
-        else
-            base = 10;
-        break;
-
-    case 2:     /* skip leading 0b or 0B */
-        if (*str == '0') {
-            ++str;
-            if (*str == 'b' || *str == 'B') {
-                /* there must be at least one digit after 0b */
-                if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 2) {
-                    if (ptr)
-                        *ptr = str;
-                    return 0;
-                }
-                ++str;
-            }
-        }
-        break;
-
-    case 8:     /* skip leading 0o or 0O */
-        if (*str == '0') {
-            ++str;
-            if (*str == 'o' || *str == 'O') {
-                /* there must be at least one digit after 0o */
-                if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 8) {
-                    if (ptr)
-                        *ptr = str;
-                    return 0;
-                }
-                ++str;
-            }
-        }
-        break;
-
-    case 16:            /* skip leading 0x or 0X */
-        if (*str == '0') {
-            ++str;
-            if (*str == 'x' || *str == 'X') {
-                /* there must be at least one digit after 0x */
-                if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 16) {
-                    if (ptr)
-                        *ptr = str;
-                    return 0;
-                }
-                ++str;
-            }
-        }
-        break;
-    }
-
-    /* catch silly bases */
-    if (base < 2 || base > 36) {
-        if (ptr)
-            *ptr = str;
-        return 0;
-    }
-
-    /* skip leading zeroes */
-    while (*str == '0')
-        ++str;
-
-    /* base is guaranteed to be in [2, 36] at this point */
-    ovlimit = digitlimit[base];
-
-    /* do the conversion until non-digit character encountered */
-    while ((c = _PyLong_DigitValue[Py_CHARMASK(*str)]) < base) {
-        if (ovlimit > 0) /* no overflow check required */
-            result = result * base + c;
-        else { /* requires overflow check */
-            register unsigned long temp_result;
-
-            if (ovlimit < 0) /* guaranteed overflow */
-                goto overflowed;
-
-            /* there could be an overflow */
-            /* check overflow just from shifting */
-            if (result > smallmax[base])
-                goto overflowed;
-
-            result *= base;
-
-            /* check overflow from the digit's value */
-            temp_result = result + c;
-            if (temp_result < result)
-                goto overflowed;
-
-            result = temp_result;
-        }
-
-        ++str;
-        --ovlimit;
-    }
-
-    /* set pointer to point to the last character scanned */
-    if (ptr)
-        *ptr = str;
-
-    return result;
-
-overflowed:
-    if (ptr) {
-        /* spool through remaining digit characters */
-        while (_PyLong_DigitValue[Py_CHARMASK(*str)] < base)
-            ++str;
-        *ptr = str;
-    }
-    errno = ERANGE;
-    return (unsigned long)-1;
-}
-
-/* Checking for overflow in PyOS_strtol is a PITA; see comments
- * about PY_ABS_LONG_MIN in longobject.c.
- */
-#define PY_ABS_LONG_MIN         (0-(unsigned long)LONG_MIN)
-
-long
-PyOS_strtol(char *str, char **ptr, int base)
-{
-    long result;
-    unsigned long uresult;
-    char sign;
-
-    while (*str && isspace(Py_CHARMASK(*str)))
-        str++;
-
-    sign = *str;
-    if (sign == '+' || sign == '-')
-        str++;
-
-    uresult = PyOS_strtoul(str, ptr, base);
-
-    if (uresult <= (unsigned long)LONG_MAX) {
-        result = (long)uresult;
-        if (sign == '-')
-            result = -result;
-    }
-    else if (sign == '-' && uresult == PY_ABS_LONG_MIN) {
-        result = LONG_MIN;
-    }
-    else {
-        errno = ERANGE;
-        result = LONG_MAX;
-    }
-    return result;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/peephole.c b/AppPkg/Applications/Python/Python-2.7.2/Python/peephole.c
deleted file mode 100644
index 5961cbd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/peephole.c
+++ /dev/null
@@ -1,680 +0,0 @@
-/* Peephole optimizations for bytecode compiler. */
-
-#include "Python.h"
-
-#include "Python-ast.h"
-#include "node.h"
-#include "pyarena.h"
-#include "ast.h"
-#include "code.h"
-#include "compile.h"
-#include "symtable.h"
-#include "opcode.h"
-
-#define GETARG(arr, i) ((int)((arr[i+2]<<8) + arr[i+1]))
-#define UNCONDITIONAL_JUMP(op)  (op==JUMP_ABSOLUTE || op==JUMP_FORWARD)
-#define CONDITIONAL_JUMP(op) (op==POP_JUMP_IF_FALSE || op==POP_JUMP_IF_TRUE \
-    || op==JUMP_IF_FALSE_OR_POP || op==JUMP_IF_TRUE_OR_POP)
-#define ABSOLUTE_JUMP(op) (op==JUMP_ABSOLUTE || op==CONTINUE_LOOP \
-    || op==POP_JUMP_IF_FALSE || op==POP_JUMP_IF_TRUE \
-    || op==JUMP_IF_FALSE_OR_POP || op==JUMP_IF_TRUE_OR_POP)
-#define JUMPS_ON_TRUE(op) (op==POP_JUMP_IF_TRUE || op==JUMP_IF_TRUE_OR_POP)
-#define GETJUMPTGT(arr, i) (GETARG(arr,i) + (ABSOLUTE_JUMP(arr[i]) ? 0 : i+3))
-#define SETARG(arr, i, val) arr[i+2] = val>>8; arr[i+1] = val & 255
-#define CODESIZE(op)  (HAS_ARG(op) ? 3 : 1)
-#define ISBASICBLOCK(blocks, start, bytes) \
-    (blocks[start]==blocks[start+bytes-1])
-
-/* Replace LOAD_CONST c1. LOAD_CONST c2 ... LOAD_CONST cn BUILD_TUPLE n
-   with    LOAD_CONST (c1, c2, ... cn).
-   The consts table must still be in list form so that the
-   new constant (c1, c2, ... cn) can be appended.
-   Called with codestr pointing to the first LOAD_CONST.
-   Bails out with no change if one or more of the LOAD_CONSTs is missing.
-   Also works for BUILD_LIST when followed by an "in" or "not in" test.
-*/
-static int
-tuple_of_constants(unsigned char *codestr, Py_ssize_t n, PyObject *consts)
-{
-    PyObject *newconst, *constant;
-    Py_ssize_t i, arg, len_consts;
-
-    /* Pre-conditions */
-    assert(PyList_CheckExact(consts));
-    assert(codestr[n*3] == BUILD_TUPLE || codestr[n*3] == BUILD_LIST);
-    assert(GETARG(codestr, (n*3)) == n);
-    for (i=0 ; i<n ; i++)
-        assert(codestr[i*3] == LOAD_CONST);
-
-    /* Buildup new tuple of constants */
-    newconst = PyTuple_New(n);
-    if (newconst == NULL)
-        return 0;
-    len_consts = PyList_GET_SIZE(consts);
-    for (i=0 ; i<n ; i++) {
-        arg = GETARG(codestr, (i*3));
-        assert(arg < len_consts);
-        constant = PyList_GET_ITEM(consts, arg);
-        Py_INCREF(constant);
-        PyTuple_SET_ITEM(newconst, i, constant);
-    }
-
-    /* Append folded constant onto consts */
-    if (PyList_Append(consts, newconst)) {
-        Py_DECREF(newconst);
-        return 0;
-    }
-    Py_DECREF(newconst);
-
-    /* Write NOPs over old LOAD_CONSTS and
-       add a new LOAD_CONST newconst on top of the BUILD_TUPLE n */
-    memset(codestr, NOP, n*3);
-    codestr[n*3] = LOAD_CONST;
-    SETARG(codestr, (n*3), len_consts);
-    return 1;
-}
-
-/* Replace LOAD_CONST c1. LOAD_CONST c2 BINOP
-   with    LOAD_CONST binop(c1,c2)
-   The consts table must still be in list form so that the
-   new constant can be appended.
-   Called with codestr pointing to the first LOAD_CONST.
-   Abandons the transformation if the folding fails (i.e.  1+'a').
-   If the new constant is a sequence, only folds when the size
-   is below a threshold value.  That keeps pyc files from
-   becoming large in the presence of code like:  (None,)*1000.
-*/
-static int
-fold_binops_on_constants(unsigned char *codestr, PyObject *consts)
-{
-    PyObject *newconst, *v, *w;
-    Py_ssize_t len_consts, size;
-    int opcode;
-
-    /* Pre-conditions */
-    assert(PyList_CheckExact(consts));
-    assert(codestr[0] == LOAD_CONST);
-    assert(codestr[3] == LOAD_CONST);
-
-    /* Create new constant */
-    v = PyList_GET_ITEM(consts, GETARG(codestr, 0));
-    w = PyList_GET_ITEM(consts, GETARG(codestr, 3));
-    opcode = codestr[6];
-    switch (opcode) {
-        case BINARY_POWER:
-            newconst = PyNumber_Power(v, w, Py_None);
-            break;
-        case BINARY_MULTIPLY:
-            newconst = PyNumber_Multiply(v, w);
-            break;
-        case BINARY_DIVIDE:
-            /* Cannot fold this operation statically since
-               the result can depend on the run-time presence
-               of the -Qnew flag */
-            return 0;
-        case BINARY_TRUE_DIVIDE:
-            newconst = PyNumber_TrueDivide(v, w);
-            break;
-        case BINARY_FLOOR_DIVIDE:
-            newconst = PyNumber_FloorDivide(v, w);
-            break;
-        case BINARY_MODULO:
-            newconst = PyNumber_Remainder(v, w);
-            break;
-        case BINARY_ADD:
-            newconst = PyNumber_Add(v, w);
-            break;
-        case BINARY_SUBTRACT:
-            newconst = PyNumber_Subtract(v, w);
-            break;
-        case BINARY_SUBSCR:
-            newconst = PyObject_GetItem(v, w);
-            /* #5057: if v is unicode, there might be differences between
-               wide and narrow builds in cases like u'\U00012345'[0].
-               Wide builds will return a non-BMP char, whereas narrow builds
-               will return a surrogate.  In both the cases skip the
-               optimization in order to produce compatible pycs.
-             */
-            if (newconst != NULL &&
-                PyUnicode_Check(v) && PyUnicode_Check(newconst)) {
-                Py_UNICODE ch = PyUnicode_AS_UNICODE(newconst)[0];
-#ifdef Py_UNICODE_WIDE
-                if (ch > 0xFFFF) {
-#else
-                if (ch >= 0xD800 && ch <= 0xDFFF) {
-#endif
-                    Py_DECREF(newconst);
-                    return 0;
-                }
-            }
-            break;
-        case BINARY_LSHIFT:
-            newconst = PyNumber_Lshift(v, w);
-            break;
-        case BINARY_RSHIFT:
-            newconst = PyNumber_Rshift(v, w);
-            break;
-        case BINARY_AND:
-            newconst = PyNumber_And(v, w);
-            break;
-        case BINARY_XOR:
-            newconst = PyNumber_Xor(v, w);
-            break;
-        case BINARY_OR:
-            newconst = PyNumber_Or(v, w);
-            break;
-        default:
-            /* Called with an unknown opcode */
-            PyErr_Format(PyExc_SystemError,
-                 "unexpected binary operation %d on a constant",
-                     opcode);
-            return 0;
-    }
-    if (newconst == NULL) {
-        PyErr_Clear();
-        return 0;
-    }
-    size = PyObject_Size(newconst);
-    if (size == -1)
-        PyErr_Clear();
-    else if (size > 20) {
-        Py_DECREF(newconst);
-        return 0;
-    }
-
-    /* Append folded constant into consts table */
-    len_consts = PyList_GET_SIZE(consts);
-    if (PyList_Append(consts, newconst)) {
-        Py_DECREF(newconst);
-        return 0;
-    }
-    Py_DECREF(newconst);
-
-    /* Write NOP NOP NOP NOP LOAD_CONST newconst */
-    memset(codestr, NOP, 4);
-    codestr[4] = LOAD_CONST;
-    SETARG(codestr, 4, len_consts);
-    return 1;
-}
-
-static int
-fold_unaryops_on_constants(unsigned char *codestr, PyObject *consts)
-{
-    PyObject *newconst=NULL, *v;
-    Py_ssize_t len_consts;
-    int opcode;
-
-    /* Pre-conditions */
-    assert(PyList_CheckExact(consts));
-    assert(codestr[0] == LOAD_CONST);
-
-    /* Create new constant */
-    v = PyList_GET_ITEM(consts, GETARG(codestr, 0));
-    opcode = codestr[3];
-    switch (opcode) {
-        case UNARY_NEGATIVE:
-            /* Preserve the sign of -0.0 */
-            if (PyObject_IsTrue(v) == 1)
-                newconst = PyNumber_Negative(v);
-            break;
-        case UNARY_CONVERT:
-            newconst = PyObject_Repr(v);
-            break;
-        case UNARY_INVERT:
-            newconst = PyNumber_Invert(v);
-            break;
-        default:
-            /* Called with an unknown opcode */
-            PyErr_Format(PyExc_SystemError,
-                 "unexpected unary operation %d on a constant",
-                     opcode);
-            return 0;
-    }
-    if (newconst == NULL) {
-        PyErr_Clear();
-        return 0;
-    }
-
-    /* Append folded constant into consts table */
-    len_consts = PyList_GET_SIZE(consts);
-    if (PyList_Append(consts, newconst)) {
-        Py_DECREF(newconst);
-        return 0;
-    }
-    Py_DECREF(newconst);
-
-    /* Write NOP LOAD_CONST newconst */
-    codestr[0] = NOP;
-    codestr[1] = LOAD_CONST;
-    SETARG(codestr, 1, len_consts);
-    return 1;
-}
-
-static unsigned int *
-markblocks(unsigned char *code, Py_ssize_t len)
-{
-    unsigned int *blocks = (unsigned int *)PyMem_Malloc(len*sizeof(int));
-    int i,j, opcode, blockcnt = 0;
-
-    if (blocks == NULL) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-    memset(blocks, 0, len*sizeof(int));
-
-    /* Mark labels in the first pass */
-    for (i=0 ; i<len ; i+=CODESIZE(opcode)) {
-        opcode = code[i];
-        switch (opcode) {
-            case FOR_ITER:
-            case JUMP_FORWARD:
-            case JUMP_IF_FALSE_OR_POP:
-            case JUMP_IF_TRUE_OR_POP:
-            case POP_JUMP_IF_FALSE:
-            case POP_JUMP_IF_TRUE:
-            case JUMP_ABSOLUTE:
-            case CONTINUE_LOOP:
-            case SETUP_LOOP:
-            case SETUP_EXCEPT:
-            case SETUP_FINALLY:
-            case SETUP_WITH:
-                j = GETJUMPTGT(code, i);
-                blocks[j] = 1;
-                break;
-        }
-    }
-    /* Build block numbers in the second pass */
-    for (i=0 ; i<len ; i++) {
-        blockcnt += blocks[i];          /* increment blockcnt over labels */
-        blocks[i] = blockcnt;
-    }
-    return blocks;
-}
-
-/* Perform basic peephole optimizations to components of a code object.
-   The consts object should still be in list form to allow new constants
-   to be appended.
-
-   To keep the optimizer simple, it bails out (does nothing) for code
-   containing extended arguments or that has a length over 32,700.  That
-   allows us to avoid overflow and sign issues.  Likewise, it bails when
-   the lineno table has complex encoding for gaps >= 255.
-
-   Optimizations are restricted to simple transformations occuring within a
-   single basic block.  All transformations keep the code size the same or
-   smaller.  For those that reduce size, the gaps are initially filled with
-   NOPs.  Later those NOPs are removed and the jump addresses retargeted in
-   a single pass.  Line numbering is adjusted accordingly. */
-
-PyObject *
-PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
-                PyObject *lineno_obj)
-{
-    Py_ssize_t i, j, codelen;
-    int nops, h, adj;
-    int tgt, tgttgt, opcode;
-    unsigned char *codestr = NULL;
-    unsigned char *lineno;
-    int *addrmap = NULL;
-    int new_line, cum_orig_line, last_line, tabsiz;
-    int cumlc=0, lastlc=0;      /* Count runs of consecutive LOAD_CONSTs */
-    unsigned int *blocks = NULL;
-    char *name;
-
-    /* Bail out if an exception is set */
-    if (PyErr_Occurred())
-        goto exitError;
-
-    /* Bypass optimization when the lineno table is too complex */
-    assert(PyString_Check(lineno_obj));
-    lineno = (unsigned char*)PyString_AS_STRING(lineno_obj);
-    tabsiz = PyString_GET_SIZE(lineno_obj);
-    if (memchr(lineno, 255, tabsiz) != NULL)
-        goto exitUnchanged;
-
-    /* Avoid situations where jump retargeting could overflow */
-    assert(PyString_Check(code));
-    codelen = PyString_GET_SIZE(code);
-    if (codelen > 32700)
-        goto exitUnchanged;
-
-    /* Make a modifiable copy of the code string */
-    codestr = (unsigned char *)PyMem_Malloc(codelen);
-    if (codestr == NULL)
-        goto exitError;
-    codestr = (unsigned char *)memcpy(codestr,
-                                      PyString_AS_STRING(code), codelen);
-
-    /* Verify that RETURN_VALUE terminates the codestring.      This allows
-       the various transformation patterns to look ahead several
-       instructions without additional checks to make sure they are not
-       looking beyond the end of the code string.
-    */
-    if (codestr[codelen-1] != RETURN_VALUE)
-        goto exitUnchanged;
-
-    /* Mapping to new jump targets after NOPs are removed */
-    addrmap = (int *)PyMem_Malloc(codelen * sizeof(int));
-    if (addrmap == NULL)
-        goto exitError;
-
-    blocks = markblocks(codestr, codelen);
-    if (blocks == NULL)
-        goto exitError;
-    assert(PyList_Check(consts));
-
-    for (i=0 ; i<codelen ; i += CODESIZE(codestr[i])) {
-      reoptimize_current:
-        opcode = codestr[i];
-
-        lastlc = cumlc;
-        cumlc = 0;
-
-        switch (opcode) {
-            /* Replace UNARY_NOT POP_JUMP_IF_FALSE
-               with    POP_JUMP_IF_TRUE */
-            case UNARY_NOT:
-                if (codestr[i+1] != POP_JUMP_IF_FALSE
-                    || !ISBASICBLOCK(blocks,i,4))
-                    continue;
-                j = GETARG(codestr, i+1);
-                codestr[i] = POP_JUMP_IF_TRUE;
-                SETARG(codestr, i, j);
-                codestr[i+3] = NOP;
-                goto reoptimize_current;
-
-                /* not a is b -->  a is not b
-                   not a in b -->  a not in b
-                   not a is not b -->  a is b
-                   not a not in b -->  a in b
-                */
-            case COMPARE_OP:
-                j = GETARG(codestr, i);
-                if (j < 6  ||  j > 9  ||
-                    codestr[i+3] != UNARY_NOT  ||
-                    !ISBASICBLOCK(blocks,i,4))
-                    continue;
-                SETARG(codestr, i, (j^1));
-                codestr[i+3] = NOP;
-                break;
-
-                /* Replace LOAD_GLOBAL/LOAD_NAME None
-                   with LOAD_CONST None */
-            case LOAD_NAME:
-            case LOAD_GLOBAL:
-                j = GETARG(codestr, i);
-                name = PyString_AsString(PyTuple_GET_ITEM(names, j));
-                if (name == NULL  ||  strcmp(name, "None") != 0)
-                    continue;
-                for (j=0 ; j < PyList_GET_SIZE(consts) ; j++) {
-                    if (PyList_GET_ITEM(consts, j) == Py_None)
-                        break;
-                }
-                if (j == PyList_GET_SIZE(consts)) {
-                    if (PyList_Append(consts, Py_None) == -1)
-                        goto exitError;
-                }
-                assert(PyList_GET_ITEM(consts, j) == Py_None);
-                codestr[i] = LOAD_CONST;
-                SETARG(codestr, i, j);
-                cumlc = lastlc + 1;
-                break;
-
-                /* Skip over LOAD_CONST trueconst
-                   POP_JUMP_IF_FALSE xx. This improves
-                   "while 1" performance. */
-            case LOAD_CONST:
-                cumlc = lastlc + 1;
-                j = GETARG(codestr, i);
-                if (codestr[i+3] != POP_JUMP_IF_FALSE  ||
-                    !ISBASICBLOCK(blocks,i,6)  ||
-                    !PyObject_IsTrue(PyList_GET_ITEM(consts, j)))
-                    continue;
-                memset(codestr+i, NOP, 6);
-                cumlc = 0;
-                break;
-
-                /* Try to fold tuples of constants (includes a case for lists
-                   which are only used for "in" and "not in" tests).
-                   Skip over BUILD_SEQN 1 UNPACK_SEQN 1.
-                   Replace BUILD_SEQN 2 UNPACK_SEQN 2 with ROT2.
-                   Replace BUILD_SEQN 3 UNPACK_SEQN 3 with ROT3 ROT2. */
-            case BUILD_TUPLE:
-            case BUILD_LIST:
-                j = GETARG(codestr, i);
-                h = i - 3 * j;
-                if (h >= 0  &&
-                    j <= lastlc                  &&
-                    ((opcode == BUILD_TUPLE &&
-                      ISBASICBLOCK(blocks, h, 3*(j+1))) ||
-                     (opcode == BUILD_LIST &&
-                      codestr[i+3]==COMPARE_OP &&
-                      ISBASICBLOCK(blocks, h, 3*(j+2)) &&
-                      (GETARG(codestr,i+3)==6 ||
-                       GETARG(codestr,i+3)==7))) &&
-                    tuple_of_constants(&codestr[h], j, consts)) {
-                    assert(codestr[i] == LOAD_CONST);
-                    cumlc = 1;
-                    break;
-                }
-                if (codestr[i+3] != UNPACK_SEQUENCE  ||
-                    !ISBASICBLOCK(blocks,i,6) ||
-                    j != GETARG(codestr, i+3))
-                    continue;
-                if (j == 1) {
-                    memset(codestr+i, NOP, 6);
-                } else if (j == 2) {
-                    codestr[i] = ROT_TWO;
-                    memset(codestr+i+1, NOP, 5);
-                } else if (j == 3) {
-                    codestr[i] = ROT_THREE;
-                    codestr[i+1] = ROT_TWO;
-                    memset(codestr+i+2, NOP, 4);
-                }
-                break;
-
-                /* Fold binary ops on constants.
-                   LOAD_CONST c1 LOAD_CONST c2 BINOP -->  LOAD_CONST binop(c1,c2) */
-            case BINARY_POWER:
-            case BINARY_MULTIPLY:
-            case BINARY_TRUE_DIVIDE:
-            case BINARY_FLOOR_DIVIDE:
-            case BINARY_MODULO:
-            case BINARY_ADD:
-            case BINARY_SUBTRACT:
-            case BINARY_SUBSCR:
-            case BINARY_LSHIFT:
-            case BINARY_RSHIFT:
-            case BINARY_AND:
-            case BINARY_XOR:
-            case BINARY_OR:
-                if (lastlc >= 2                  &&
-                    ISBASICBLOCK(blocks, i-6, 7)  &&
-                    fold_binops_on_constants(&codestr[i-6], consts)) {
-                    i -= 2;
-                    assert(codestr[i] == LOAD_CONST);
-                    cumlc = 1;
-                }
-                break;
-
-                /* Fold unary ops on constants.
-                   LOAD_CONST c1  UNARY_OP -->                  LOAD_CONST unary_op(c) */
-            case UNARY_NEGATIVE:
-            case UNARY_CONVERT:
-            case UNARY_INVERT:
-                if (lastlc >= 1                  &&
-                    ISBASICBLOCK(blocks, i-3, 4)  &&
-                    fold_unaryops_on_constants(&codestr[i-3], consts))                  {
-                    i -= 2;
-                    assert(codestr[i] == LOAD_CONST);
-                    cumlc = 1;
-                }
-                break;
-
-                /* Simplify conditional jump to conditional jump where the
-                   result of the first test implies the success of a similar
-                   test or the failure of the opposite test.
-                   Arises in code like:
-                   "if a and b:"
-                   "if a or b:"
-                   "a and b or c"
-                   "(a and b) and c"
-                   x:JUMP_IF_FALSE_OR_POP y   y:JUMP_IF_FALSE_OR_POP z
-                      -->  x:JUMP_IF_FALSE_OR_POP z
-                   x:JUMP_IF_FALSE_OR_POP y   y:JUMP_IF_TRUE_OR_POP z
-                      -->  x:POP_JUMP_IF_FALSE y+3
-                   where y+3 is the instruction following the second test.
-                */
-            case JUMP_IF_FALSE_OR_POP:
-            case JUMP_IF_TRUE_OR_POP:
-                tgt = GETJUMPTGT(codestr, i);
-                j = codestr[tgt];
-                if (CONDITIONAL_JUMP(j)) {
-                    /* NOTE: all possible jumps here are
-                       absolute! */
-                    if (JUMPS_ON_TRUE(j) == JUMPS_ON_TRUE(opcode)) {
-                        /* The second jump will be
-                           taken iff the first is. */
-                        tgttgt = GETJUMPTGT(codestr, tgt);
-                        /* The current opcode inherits
-                           its target's stack behaviour */
-                        codestr[i] = j;
-                        SETARG(codestr, i, tgttgt);
-                        goto reoptimize_current;
-                    } else {
-                        /* The second jump is not taken
-                           if the first is (so jump past
-                           it), and all conditional
-                           jumps pop their argument when
-                           they're not taken (so change
-                           the first jump to pop its
-                           argument when it's taken). */
-                        if (JUMPS_ON_TRUE(opcode))
-                            codestr[i] = POP_JUMP_IF_TRUE;
-                        else
-                            codestr[i] = POP_JUMP_IF_FALSE;
-                        SETARG(codestr, i, (tgt + 3));
-                        goto reoptimize_current;
-                    }
-                }
-                /* Intentional fallthrough */
-
-                /* Replace jumps to unconditional jumps */
-            case POP_JUMP_IF_FALSE:
-            case POP_JUMP_IF_TRUE:
-            case FOR_ITER:
-            case JUMP_FORWARD:
-            case JUMP_ABSOLUTE:
-            case CONTINUE_LOOP:
-            case SETUP_LOOP:
-            case SETUP_EXCEPT:
-            case SETUP_FINALLY:
-            case SETUP_WITH:
-                tgt = GETJUMPTGT(codestr, i);
-                /* Replace JUMP_* to a RETURN into just a RETURN */
-                if (UNCONDITIONAL_JUMP(opcode) &&
-                    codestr[tgt] == RETURN_VALUE) {
-                    codestr[i] = RETURN_VALUE;
-                    memset(codestr+i+1, NOP, 2);
-                    continue;
-                }
-                if (!UNCONDITIONAL_JUMP(codestr[tgt]))
-                    continue;
-                tgttgt = GETJUMPTGT(codestr, tgt);
-                if (opcode == JUMP_FORWARD) /* JMP_ABS can go backwards */
-                    opcode = JUMP_ABSOLUTE;
-                if (!ABSOLUTE_JUMP(opcode))
-                    tgttgt -= i + 3;     /* Calc relative jump addr */
-                if (tgttgt < 0)                           /* No backward relative jumps */
-                    continue;
-                codestr[i] = opcode;
-                SETARG(codestr, i, tgttgt);
-                break;
-
-            case EXTENDED_ARG:
-                goto exitUnchanged;
-
-                /* Replace RETURN LOAD_CONST None RETURN with just RETURN */
-                /* Remove unreachable JUMPs after RETURN */
-            case RETURN_VALUE:
-                if (i+4 >= codelen)
-                    continue;
-                if (codestr[i+4] == RETURN_VALUE &&
-                    ISBASICBLOCK(blocks,i,5))
-                    memset(codestr+i+1, NOP, 4);
-                else if (UNCONDITIONAL_JUMP(codestr[i+1]) &&
-                         ISBASICBLOCK(blocks,i,4))
-                    memset(codestr+i+1, NOP, 3);
-                break;
-        }
-    }
-
-    /* Fixup linenotab */
-    for (i=0, nops=0 ; i<codelen ; i += CODESIZE(codestr[i])) {
-        addrmap[i] = i - nops;
-        if (codestr[i] == NOP)
-            nops++;
-    }
-    cum_orig_line = 0;
-    last_line = 0;
-    for (i=0 ; i < tabsiz ; i+=2) {
-        cum_orig_line += lineno[i];
-        new_line = addrmap[cum_orig_line];
-        assert (new_line - last_line < 255);
-        lineno[i] =((unsigned char)(new_line - last_line));
-        last_line = new_line;
-    }
-
-    /* Remove NOPs and fixup jump targets */
-    for (i=0, h=0 ; i<codelen ; ) {
-        opcode = codestr[i];
-        switch (opcode) {
-            case NOP:
-                i++;
-                continue;
-
-            case JUMP_ABSOLUTE:
-            case CONTINUE_LOOP:
-            case POP_JUMP_IF_FALSE:
-            case POP_JUMP_IF_TRUE:
-            case JUMP_IF_FALSE_OR_POP:
-            case JUMP_IF_TRUE_OR_POP:
-                j = addrmap[GETARG(codestr, i)];
-                SETARG(codestr, i, j);
-                break;
-
-            case FOR_ITER:
-            case JUMP_FORWARD:
-            case SETUP_LOOP:
-            case SETUP_EXCEPT:
-            case SETUP_FINALLY:
-            case SETUP_WITH:
-                j = addrmap[GETARG(codestr, i) + i + 3] - addrmap[i] - 3;
-                SETARG(codestr, i, j);
-                break;
-        }
-        adj = CODESIZE(opcode);
-        while (adj--)
-            codestr[h++] = codestr[i++];
-    }
-    assert(h + nops == codelen);
-
-    code = PyString_FromStringAndSize((char *)codestr, h);
-    PyMem_Free(addrmap);
-    PyMem_Free(codestr);
-    PyMem_Free(blocks);
-    return code;
-
- exitError:
-    code = NULL;
-
- exitUnchanged:
-    if (blocks != NULL)
-        PyMem_Free(blocks);
-    if (addrmap != NULL)
-        PyMem_Free(addrmap);
-    if (codestr != NULL)
-        PyMem_Free(codestr);
-    Py_XINCREF(code);
-    return code;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/pyarena.c b/AppPkg/Applications/Python/Python-2.7.2/Python/pyarena.c
deleted file mode 100644
index 9fdeafd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/pyarena.c
+++ /dev/null
@@ -1,220 +0,0 @@
-#include "Python.h"
-#include "pyarena.h"
-
-/* A simple arena block structure.
-
-   Measurements with standard library modules suggest the average
-   allocation is about 20 bytes and that most compiles use a single
-   block.
-
-   TODO(jhylton): Think about a realloc API, maybe just for the last
-   allocation?
-*/
-
-#define DEFAULT_BLOCK_SIZE 8192
-#define ALIGNMENT               8
-#define ALIGNMENT_MASK          (ALIGNMENT - 1)
-#define ROUNDUP(x)              (((x) + ALIGNMENT_MASK) & ~ALIGNMENT_MASK)
-
-typedef struct _block {
-    /* Total number of bytes owned by this block available to pass out.
-     * Read-only after initialization.  The first such byte starts at
-     * ab_mem.
-     */
-    size_t ab_size;
-
-    /* Total number of bytes already passed out.  The next byte available
-     * to pass out starts at ab_mem + ab_offset.
-     */
-    size_t ab_offset;
-
-    /* An arena maintains a singly-linked, NULL-terminated list of
-     * all blocks owned by the arena.  These are linked via the
-     * ab_next member.
-     */
-    struct _block *ab_next;
-
-    /* Pointer to the first allocatable byte owned by this block.  Read-
-     * only after initialization.
-     */
-    void *ab_mem;
-} block;
-
-/* The arena manages two kinds of memory, blocks of raw memory
-   and a list of PyObject* pointers.  PyObjects are decrefed
-   when the arena is freed.
-*/
-
-struct _arena {
-    /* Pointer to the first block allocated for the arena, never NULL.
-       It is used only to find the first block when the arena is
-       being freed.
-     */
-    block *a_head;
-
-    /* Pointer to the block currently used for allocation.  It's
-       ab_next field should be NULL.  If it is not-null after a
-       call to block_alloc(), it means a new block has been allocated
-       and a_cur should be reset to point it.
-     */
-    block *a_cur;
-
-    /* A Python list object containing references to all the PyObject
-       pointers associated with this area.  They will be DECREFed
-       when the arena is freed.
-    */
-    PyObject *a_objects;
-
-#if defined(Py_DEBUG)
-    /* Debug output */
-    size_t total_allocs;
-    size_t total_size;
-    size_t total_blocks;
-    size_t total_block_size;
-    size_t total_big_blocks;
-#endif
-};
-
-static block *
-block_new(size_t size)
-{
-    /* Allocate header and block as one unit.
-       ab_mem points just past header. */
-    block *b = (block *)malloc(sizeof(block) + size);
-    if (!b)
-        return NULL;
-    b->ab_size = size;
-    b->ab_mem = (void *)(b + 1);
-    b->ab_next = NULL;
-    b->ab_offset = ROUNDUP((Py_uintptr_t)(b->ab_mem)) -
-      (Py_uintptr_t)(b->ab_mem);
-    return b;
-}
-
-static void
-block_free(block *b) {
-    while (b) {
-        block *next = b->ab_next;
-        free(b);
-        b = next;
-    }
-}
-
-static void *
-block_alloc(block *b, size_t size)
-{
-    void *p;
-    assert(b);
-    size = ROUNDUP(size);
-    if (b->ab_offset + size > b->ab_size) {
-        /* If we need to allocate more memory than will fit in
-           the default block, allocate a one-off block that is
-           exactly the right size. */
-        /* TODO(jhylton): Think about space waste at end of block */
-        block *newbl = block_new(
-                        size < DEFAULT_BLOCK_SIZE ?
-                        DEFAULT_BLOCK_SIZE : size);
-        if (!newbl)
-            return NULL;
-        assert(!b->ab_next);
-        b->ab_next = newbl;
-        b = newbl;
-    }
-
-    assert(b->ab_offset + size <= b->ab_size);
-    p = (void *)(((char *)b->ab_mem) + b->ab_offset);
-    b->ab_offset += size;
-    return p;
-}
-
-PyArena *
-PyArena_New()
-{
-    PyArena* arena = (PyArena *)malloc(sizeof(PyArena));
-    if (!arena)
-        return (PyArena*)PyErr_NoMemory();
-
-    arena->a_head = block_new(DEFAULT_BLOCK_SIZE);
-    arena->a_cur = arena->a_head;
-    if (!arena->a_head) {
-        free((void *)arena);
-        return (PyArena*)PyErr_NoMemory();
-    }
-    arena->a_objects = PyList_New(0);
-    if (!arena->a_objects) {
-        block_free(arena->a_head);
-        free((void *)arena);
-        return (PyArena*)PyErr_NoMemory();
-    }
-#if defined(Py_DEBUG)
-    arena->total_allocs = 0;
-    arena->total_size = 0;
-    arena->total_blocks = 1;
-    arena->total_block_size = DEFAULT_BLOCK_SIZE;
-    arena->total_big_blocks = 0;
-#endif
-    return arena;
-}
-
-void
-PyArena_Free(PyArena *arena)
-{
-    int r;
-    assert(arena);
-#if defined(Py_DEBUG)
-    /*
-    fprintf(stderr,
-        "alloc=%d size=%d blocks=%d block_size=%d big=%d objects=%d\n",
-        arena->total_allocs, arena->total_size, arena->total_blocks,
-        arena->total_block_size, arena->total_big_blocks,
-        PyList_Size(arena->a_objects));
-    */
-#endif
-    block_free(arena->a_head);
-    /* This property normally holds, except when the code being compiled
-       is sys.getobjects(0), in which case there will be two references.
-    assert(arena->a_objects->ob_refcnt == 1);
-    */
-
-    /* Clear all the elements from the list.  This is necessary
-       to guarantee that they will be DECREFed. */
-    r = PyList_SetSlice(arena->a_objects,
-                        0, PyList_GET_SIZE(arena->a_objects), NULL);
-    assert(r == 0);
-    assert(PyList_GET_SIZE(arena->a_objects) == 0);
-    Py_DECREF(arena->a_objects);
-    free(arena);
-}
-
-void *
-PyArena_Malloc(PyArena *arena, size_t size)
-{
-    void *p = block_alloc(arena->a_cur, size);
-    if (!p)
-        return PyErr_NoMemory();
-#if defined(Py_DEBUG)
-    arena->total_allocs++;
-    arena->total_size += size;
-#endif
-    /* Reset cur if we allocated a new block. */
-    if (arena->a_cur->ab_next) {
-        arena->a_cur = arena->a_cur->ab_next;
-#if defined(Py_DEBUG)
-        arena->total_blocks++;
-        arena->total_block_size += arena->a_cur->ab_size;
-        if (arena->a_cur->ab_size > DEFAULT_BLOCK_SIZE)
-            ++arena->total_big_blocks;
-#endif
-    }
-    return p;
-}
-
-int
-PyArena_AddPyObject(PyArena *arena, PyObject *obj)
-{
-    int r = PyList_Append(arena->a_objects, obj);
-    if (r >= 0) {
-        Py_DECREF(obj);
-    }
-    return r;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/pyctype.c b/AppPkg/Applications/Python/Python-2.7.2/Python/pyctype.c
deleted file mode 100644
index ea977b3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/pyctype.c
+++ /dev/null
@@ -1,214 +0,0 @@
-#include "Python.h"
-
-/* Our own locale-independent ctype.h-like macros */
-
-const unsigned int _Py_ctype_table[256] = {
-    0, /* 0x0 '\x00' */
-    0, /* 0x1 '\x01' */
-    0, /* 0x2 '\x02' */
-    0, /* 0x3 '\x03' */
-    0, /* 0x4 '\x04' */
-    0, /* 0x5 '\x05' */
-    0, /* 0x6 '\x06' */
-    0, /* 0x7 '\x07' */
-    0, /* 0x8 '\x08' */
-    PY_CTF_SPACE, /* 0x9 '\t' */
-    PY_CTF_SPACE, /* 0xa '\n' */
-    PY_CTF_SPACE, /* 0xb '\v' */
-    PY_CTF_SPACE, /* 0xc '\f' */
-    PY_CTF_SPACE, /* 0xd '\r' */
-    0, /* 0xe '\x0e' */
-    0, /* 0xf '\x0f' */
-    0, /* 0x10 '\x10' */
-    0, /* 0x11 '\x11' */
-    0, /* 0x12 '\x12' */
-    0, /* 0x13 '\x13' */
-    0, /* 0x14 '\x14' */
-    0, /* 0x15 '\x15' */
-    0, /* 0x16 '\x16' */
-    0, /* 0x17 '\x17' */
-    0, /* 0x18 '\x18' */
-    0, /* 0x19 '\x19' */
-    0, /* 0x1a '\x1a' */
-    0, /* 0x1b '\x1b' */
-    0, /* 0x1c '\x1c' */
-    0, /* 0x1d '\x1d' */
-    0, /* 0x1e '\x1e' */
-    0, /* 0x1f '\x1f' */
-    PY_CTF_SPACE, /* 0x20 ' ' */
-    0, /* 0x21 '!' */
-    0, /* 0x22 '"' */
-    0, /* 0x23 '#' */
-    0, /* 0x24 '$' */
-    0, /* 0x25 '%' */
-    0, /* 0x26 '&' */
-    0, /* 0x27 "'" */
-    0, /* 0x28 '(' */
-    0, /* 0x29 ')' */
-    0, /* 0x2a '*' */
-    0, /* 0x2b '+' */
-    0, /* 0x2c ',' */
-    0, /* 0x2d '-' */
-    0, /* 0x2e '.' */
-    0, /* 0x2f '/' */
-    PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x30 '0' */
-    PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x31 '1' */
-    PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x32 '2' */
-    PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x33 '3' */
-    PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x34 '4' */
-    PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x35 '5' */
-    PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x36 '6' */
-    PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x37 '7' */
-    PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x38 '8' */
-    PY_CTF_DIGIT|PY_CTF_XDIGIT, /* 0x39 '9' */
-    0, /* 0x3a ':' */
-    0, /* 0x3b ';' */
-    0, /* 0x3c '<' */
-    0, /* 0x3d '=' */
-    0, /* 0x3e '>' */
-    0, /* 0x3f '?' */
-    0, /* 0x40 '@' */
-    PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x41 'A' */
-    PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x42 'B' */
-    PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x43 'C' */
-    PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x44 'D' */
-    PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x45 'E' */
-    PY_CTF_UPPER|PY_CTF_XDIGIT, /* 0x46 'F' */
-    PY_CTF_UPPER, /* 0x47 'G' */
-    PY_CTF_UPPER, /* 0x48 'H' */
-    PY_CTF_UPPER, /* 0x49 'I' */
-    PY_CTF_UPPER, /* 0x4a 'J' */
-    PY_CTF_UPPER, /* 0x4b 'K' */
-    PY_CTF_UPPER, /* 0x4c 'L' */
-    PY_CTF_UPPER, /* 0x4d 'M' */
-    PY_CTF_UPPER, /* 0x4e 'N' */
-    PY_CTF_UPPER, /* 0x4f 'O' */
-    PY_CTF_UPPER, /* 0x50 'P' */
-    PY_CTF_UPPER, /* 0x51 'Q' */
-    PY_CTF_UPPER, /* 0x52 'R' */
-    PY_CTF_UPPER, /* 0x53 'S' */
-    PY_CTF_UPPER, /* 0x54 'T' */
-    PY_CTF_UPPER, /* 0x55 'U' */
-    PY_CTF_UPPER, /* 0x56 'V' */
-    PY_CTF_UPPER, /* 0x57 'W' */
-    PY_CTF_UPPER, /* 0x58 'X' */
-    PY_CTF_UPPER, /* 0x59 'Y' */
-    PY_CTF_UPPER, /* 0x5a 'Z' */
-    0, /* 0x5b '[' */
-    0, /* 0x5c '\\' */
-    0, /* 0x5d ']' */
-    0, /* 0x5e '^' */
-    0, /* 0x5f '_' */
-    0, /* 0x60 '`' */
-    PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x61 'a' */
-    PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x62 'b' */
-    PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x63 'c' */
-    PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x64 'd' */
-    PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x65 'e' */
-    PY_CTF_LOWER|PY_CTF_XDIGIT, /* 0x66 'f' */
-    PY_CTF_LOWER, /* 0x67 'g' */
-    PY_CTF_LOWER, /* 0x68 'h' */
-    PY_CTF_LOWER, /* 0x69 'i' */
-    PY_CTF_LOWER, /* 0x6a 'j' */
-    PY_CTF_LOWER, /* 0x6b 'k' */
-    PY_CTF_LOWER, /* 0x6c 'l' */
-    PY_CTF_LOWER, /* 0x6d 'm' */
-    PY_CTF_LOWER, /* 0x6e 'n' */
-    PY_CTF_LOWER, /* 0x6f 'o' */
-    PY_CTF_LOWER, /* 0x70 'p' */
-    PY_CTF_LOWER, /* 0x71 'q' */
-    PY_CTF_LOWER, /* 0x72 'r' */
-    PY_CTF_LOWER, /* 0x73 's' */
-    PY_CTF_LOWER, /* 0x74 't' */
-    PY_CTF_LOWER, /* 0x75 'u' */
-    PY_CTF_LOWER, /* 0x76 'v' */
-    PY_CTF_LOWER, /* 0x77 'w' */
-    PY_CTF_LOWER, /* 0x78 'x' */
-    PY_CTF_LOWER, /* 0x79 'y' */
-    PY_CTF_LOWER, /* 0x7a 'z' */
-    0, /* 0x7b '{' */
-    0, /* 0x7c '|' */
-    0, /* 0x7d '}' */
-    0, /* 0x7e '~' */
-    0, /* 0x7f '\x7f' */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-};
-
-
-const unsigned char _Py_ctype_tolower[256] = {
-    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
-    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
-    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
-    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
-    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
-    0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
-    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
-    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
-    0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
-    0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
-    0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
-    0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
-    0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
-    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
-    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
-    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
-    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
-    0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
-    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
-    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
-    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
-    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
-    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
-    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
-    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
-    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
-    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
-    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
-    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
-};
-
-const unsigned char _Py_ctype_toupper[256] = {
-    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
-    0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
-    0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
-    0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
-    0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
-    0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
-    0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
-    0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
-    0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
-    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
-    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
-    0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
-    0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
-    0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
-    0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
-    0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
-    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
-    0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
-    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
-    0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
-    0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
-    0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
-    0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
-    0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
-    0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
-    0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
-    0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
-    0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
-    0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
-    0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
-    0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
-    0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
-};
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/pyfpe.c b/AppPkg/Applications/Python/Python-2.7.2/Python/pyfpe.c
deleted file mode 100644
index 46a6197..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/pyfpe.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "pyconfig.h"
-#include "pyfpe.h"
-/* 
- * The signal handler for SIGFPE is actually declared in an external
- * module fpectl, or as preferred by the user.  These variable
- * definitions are required in order to compile Python without
- * getting missing externals, but to actually handle SIGFPE requires
- * defining a handler and enabling generation of SIGFPE.
- */
-
-#ifdef WANT_SIGFPE_HANDLER
-jmp_buf PyFPE_jbuf;
-int PyFPE_counter = 0;
-#endif
-
-/* Have this outside the above #ifdef, since some picky ANSI compilers issue a 
-   warning when compiling an empty file. */
-
-double
-PyFPE_dummy(void *dummy)
-{
-	return 1.0;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/pymath.c b/AppPkg/Applications/Python/Python-2.7.2/Python/pymath.c
deleted file mode 100644
index 8085bde..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/pymath.c
+++ /dev/null
@@ -1,79 +0,0 @@
-#include "Python.h"
-
-#ifdef X87_DOUBLE_ROUNDING
-/* On x86 platforms using an x87 FPU, this function is called from the
-   Py_FORCE_DOUBLE macro (defined in pymath.h) to force a floating-point
-   number out of an 80-bit x87 FPU register and into a 64-bit memory location,
-   thus rounding from extended precision to double precision. */
-double _Py_force_double(double x)
-{
-    volatile double y;
-    y = x;
-    return y;
-}
-#endif
-
-#ifdef HAVE_GCC_ASM_FOR_X87
-
-/* inline assembly for getting and setting the 387 FPU control word on
-   gcc/x86 */
-
-unsigned short _Py_get_387controlword(void) {
-    unsigned short cw;
-    __asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
-    return cw;
-}
-
-void _Py_set_387controlword(unsigned short cw) {
-    __asm__ __volatile__ ("fldcw %0" : : "m" (cw));
-}
-
-#endif
-
-
-#ifndef HAVE_HYPOT
-double hypot(double x, double y)
-{
-    double yx;
-
-    x = fabs(x);
-    y = fabs(y);
-    if (x < y) {
-        double temp = x;
-        x = y;
-        y = temp;
-    }
-    if (x == 0.)
-        return 0.;
-    else {
-        yx = y/x;
-        return x*sqrt(1.+yx*yx);
-    }
-}
-#endif /* HAVE_HYPOT */
-
-#ifndef HAVE_COPYSIGN
-double
-copysign(double x, double y)
-{
-    /* use atan2 to distinguish -0. from 0. */
-    if (y > 0. || (y == 0. && atan2(y, -1.) > 0.)) {
-        return fabs(x);
-    } else {
-        return -fabs(x);
-    }
-}
-#endif /* HAVE_COPYSIGN */
-
-#ifndef HAVE_ROUND
-double
-round(double x)
-{
-    double absx, y;
-    absx = fabs(x);
-    y = floor(absx);
-    if (absx - y >= 0.5)
-    y += 1.0;
-    return copysign(y, x);
-}
-#endif /* HAVE_ROUND */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/pystate.c b/AppPkg/Applications/Python/Python-2.7.2/Python/pystate.c
deleted file mode 100644
index a31efb0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/pystate.c
+++ /dev/null
@@ -1,680 +0,0 @@
-
-/* Thread and interpreter state structures and their interfaces */
-
-#include "Python.h"
-
-/* --------------------------------------------------------------------------
-CAUTION
-
-Always use malloc() and free() directly in this file.  A number of these
-functions are advertised as safe to call when the GIL isn't held, and in
-a debug build Python redirects (e.g.) PyMem_NEW (etc) to Python's debugging
-obmalloc functions.  Those aren't thread-safe (they rely on the GIL to avoid
-the expense of doing their own locking).
--------------------------------------------------------------------------- */
-
-#ifdef HAVE_DLOPEN
-#ifdef HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-#ifndef RTLD_LAZY
-#define RTLD_LAZY 1
-#endif
-#endif
-
-
-#ifdef WITH_THREAD
-#include "pythread.h"
-static PyThread_type_lock head_mutex = NULL; /* Protects interp->tstate_head */
-#define HEAD_INIT() (void)(head_mutex || (head_mutex = PyThread_allocate_lock()))
-#define HEAD_LOCK() PyThread_acquire_lock(head_mutex, WAIT_LOCK)
-#define HEAD_UNLOCK() PyThread_release_lock(head_mutex)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* The single PyInterpreterState used by this process'
-   GILState implementation
-*/
-static PyInterpreterState *autoInterpreterState = NULL;
-static int autoTLSkey = 0;
-#else
-#define HEAD_INIT() /* Nothing */
-#define HEAD_LOCK() /* Nothing */
-#define HEAD_UNLOCK() /* Nothing */
-#endif
-
-static PyInterpreterState *interp_head = NULL;
-
-PyThreadState *_PyThreadState_Current = NULL;
-PyThreadFrameGetter _PyThreadState_GetFrame = NULL;
-
-#ifdef WITH_THREAD
-static void _PyGILState_NoteThreadState(PyThreadState* tstate);
-#endif
-
-
-PyInterpreterState *
-PyInterpreterState_New(void)
-{
-    PyInterpreterState *interp = (PyInterpreterState *)
-                                 malloc(sizeof(PyInterpreterState));
-
-    if (interp != NULL) {
-        HEAD_INIT();
-#ifdef WITH_THREAD
-        if (head_mutex == NULL)
-            Py_FatalError("Can't initialize threads for interpreter");
-#endif
-        interp->modules = NULL;
-        interp->modules_reloading = NULL;
-        interp->sysdict = NULL;
-        interp->builtins = NULL;
-        interp->tstate_head = NULL;
-        interp->codec_search_path = NULL;
-        interp->codec_search_cache = NULL;
-        interp->codec_error_registry = NULL;
-#ifdef HAVE_DLOPEN
-#ifdef RTLD_NOW
-        interp->dlopenflags = RTLD_NOW;
-#else
-        interp->dlopenflags = RTLD_LAZY;
-#endif
-#endif
-#ifdef WITH_TSC
-        interp->tscdump = 0;
-#endif
-
-        HEAD_LOCK();
-        interp->next = interp_head;
-        interp_head = interp;
-        HEAD_UNLOCK();
-    }
-
-    return interp;
-}
-
-
-void
-PyInterpreterState_Clear(PyInterpreterState *interp)
-{
-    PyThreadState *p;
-    HEAD_LOCK();
-    for (p = interp->tstate_head; p != NULL; p = p->next)
-        PyThreadState_Clear(p);
-    HEAD_UNLOCK();
-    Py_CLEAR(interp->codec_search_path);
-    Py_CLEAR(interp->codec_search_cache);
-    Py_CLEAR(interp->codec_error_registry);
-    Py_CLEAR(interp->modules);
-    Py_CLEAR(interp->modules_reloading);
-    Py_CLEAR(interp->sysdict);
-    Py_CLEAR(interp->builtins);
-}
-
-
-static void
-zapthreads(PyInterpreterState *interp)
-{
-    PyThreadState *p;
-    /* No need to lock the mutex here because this should only happen
-       when the threads are all really dead (XXX famous last words). */
-    while ((p = interp->tstate_head) != NULL) {
-        PyThreadState_Delete(p);
-    }
-}
-
-
-void
-PyInterpreterState_Delete(PyInterpreterState *interp)
-{
-    PyInterpreterState **p;
-    zapthreads(interp);
-    HEAD_LOCK();
-    for (p = &interp_head; ; p = &(*p)->next) {
-        if (*p == NULL)
-            Py_FatalError(
-                "PyInterpreterState_Delete: invalid interp");
-        if (*p == interp)
-            break;
-    }
-    if (interp->tstate_head != NULL)
-        Py_FatalError("PyInterpreterState_Delete: remaining threads");
-    *p = interp->next;
-    HEAD_UNLOCK();
-    free(interp);
-}
-
-
-/* Default implementation for _PyThreadState_GetFrame */
-static struct _frame *
-threadstate_getframe(PyThreadState *self)
-{
-    return self->frame;
-}
-
-static PyThreadState *
-new_threadstate(PyInterpreterState *interp, int init)
-{
-    PyThreadState *tstate = (PyThreadState *)malloc(sizeof(PyThreadState));
-
-    if (_PyThreadState_GetFrame == NULL)
-        _PyThreadState_GetFrame = threadstate_getframe;
-
-    if (tstate != NULL) {
-        tstate->interp = interp;
-
-        tstate->frame = NULL;
-        tstate->recursion_depth = 0;
-        tstate->tracing = 0;
-        tstate->use_tracing = 0;
-        tstate->tick_counter = 0;
-        tstate->gilstate_counter = 0;
-        tstate->async_exc = NULL;
-#ifdef WITH_THREAD
-        tstate->thread_id = PyThread_get_thread_ident();
-#else
-        tstate->thread_id = 0;
-#endif
-
-        tstate->dict = NULL;
-
-        tstate->curexc_type = NULL;
-        tstate->curexc_value = NULL;
-        tstate->curexc_traceback = NULL;
-
-        tstate->exc_type = NULL;
-        tstate->exc_value = NULL;
-        tstate->exc_traceback = NULL;
-
-        tstate->c_profilefunc = NULL;
-        tstate->c_tracefunc = NULL;
-        tstate->c_profileobj = NULL;
-        tstate->c_traceobj = NULL;
-
-        if (init)
-            _PyThreadState_Init(tstate);
-
-        HEAD_LOCK();
-        tstate->next = interp->tstate_head;
-        interp->tstate_head = tstate;
-        HEAD_UNLOCK();
-    }
-
-    return tstate;
-}
-
-PyThreadState *
-PyThreadState_New(PyInterpreterState *interp)
-{
-    return new_threadstate(interp, 1);
-}
-
-PyThreadState *
-_PyThreadState_Prealloc(PyInterpreterState *interp)
-{
-    return new_threadstate(interp, 0);
-}
-
-void
-_PyThreadState_Init(PyThreadState *tstate)
-{
-#ifdef WITH_THREAD
-    _PyGILState_NoteThreadState(tstate);
-#endif
-}
-
-void
-PyThreadState_Clear(PyThreadState *tstate)
-{
-    if (Py_VerboseFlag && tstate->frame != NULL)
-        fprintf(stderr,
-          "PyThreadState_Clear: warning: thread still has a frame\n");
-
-    Py_CLEAR(tstate->frame);
-
-    Py_CLEAR(tstate->dict);
-    Py_CLEAR(tstate->async_exc);
-
-    Py_CLEAR(tstate->curexc_type);
-    Py_CLEAR(tstate->curexc_value);
-    Py_CLEAR(tstate->curexc_traceback);
-
-    Py_CLEAR(tstate->exc_type);
-    Py_CLEAR(tstate->exc_value);
-    Py_CLEAR(tstate->exc_traceback);
-
-    tstate->c_profilefunc = NULL;
-    tstate->c_tracefunc = NULL;
-    Py_CLEAR(tstate->c_profileobj);
-    Py_CLEAR(tstate->c_traceobj);
-}
-
-
-/* Common code for PyThreadState_Delete() and PyThreadState_DeleteCurrent() */
-static void
-tstate_delete_common(PyThreadState *tstate)
-{
-    PyInterpreterState *interp;
-    PyThreadState **p;
-    PyThreadState *prev_p = NULL;
-    if (tstate == NULL)
-        Py_FatalError("PyThreadState_Delete: NULL tstate");
-    interp = tstate->interp;
-    if (interp == NULL)
-        Py_FatalError("PyThreadState_Delete: NULL interp");
-    HEAD_LOCK();
-    for (p = &interp->tstate_head; ; p = &(*p)->next) {
-        if (*p == NULL)
-            Py_FatalError(
-                "PyThreadState_Delete: invalid tstate");
-        if (*p == tstate)
-            break;
-        /* Sanity check.  These states should never happen but if
-         * they do we must abort.  Otherwise we'll end up spinning in
-         * in a tight loop with the lock held.  A similar check is done
-         * in thread.c find_key().  */
-        if (*p == prev_p)
-            Py_FatalError(
-                "PyThreadState_Delete: small circular list(!)"
-                " and tstate not found.");
-        prev_p = *p;
-        if ((*p)->next == interp->tstate_head)
-            Py_FatalError(
-                "PyThreadState_Delete: circular list(!) and"
-                " tstate not found.");
-    }
-    *p = tstate->next;
-    HEAD_UNLOCK();
-    free(tstate);
-}
-
-
-void
-PyThreadState_Delete(PyThreadState *tstate)
-{
-    if (tstate == _PyThreadState_Current)
-        Py_FatalError("PyThreadState_Delete: tstate is still current");
-    tstate_delete_common(tstate);
-#ifdef WITH_THREAD
-    if (autoInterpreterState && PyThread_get_key_value(autoTLSkey) == tstate)
-        PyThread_delete_key_value(autoTLSkey);
-#endif /* WITH_THREAD */
-}
-
-
-#ifdef WITH_THREAD
-void
-PyThreadState_DeleteCurrent()
-{
-    PyThreadState *tstate = _PyThreadState_Current;
-    if (tstate == NULL)
-        Py_FatalError(
-            "PyThreadState_DeleteCurrent: no current tstate");
-    _PyThreadState_Current = NULL;
-    tstate_delete_common(tstate);
-    if (autoInterpreterState && PyThread_get_key_value(autoTLSkey) == tstate)
-        PyThread_delete_key_value(autoTLSkey);
-    PyEval_ReleaseLock();
-}
-#endif /* WITH_THREAD */
-
-
-PyThreadState *
-PyThreadState_Get(void)
-{
-    if (_PyThreadState_Current == NULL)
-        Py_FatalError("PyThreadState_Get: no current thread");
-
-    return _PyThreadState_Current;
-}
-
-
-PyThreadState *
-PyThreadState_Swap(PyThreadState *newts)
-{
-    PyThreadState *oldts = _PyThreadState_Current;
-
-    _PyThreadState_Current = newts;
-    /* It should not be possible for more than one thread state
-       to be used for a thread.  Check this the best we can in debug
-       builds.
-    */
-#if defined(Py_DEBUG) && defined(WITH_THREAD)
-    if (newts) {
-        /* This can be called from PyEval_RestoreThread(). Similar
-           to it, we need to ensure errno doesn't change.
-        */
-        int err = errno;
-        PyThreadState *check = PyGILState_GetThisThreadState();
-        if (check && check->interp == newts->interp && check != newts)
-            Py_FatalError("Invalid thread state for this thread");
-        errno = err;
-    }
-#endif
-    return oldts;
-}
-
-/* An extension mechanism to store arbitrary additional per-thread state.
-   PyThreadState_GetDict() returns a dictionary that can be used to hold such
-   state; the caller should pick a unique key and store its state there.  If
-   PyThreadState_GetDict() returns NULL, an exception has *not* been raised
-   and the caller should assume no per-thread state is available. */
-
-PyObject *
-PyThreadState_GetDict(void)
-{
-    if (_PyThreadState_Current == NULL)
-        return NULL;
-
-    if (_PyThreadState_Current->dict == NULL) {
-        PyObject *d;
-        _PyThreadState_Current->dict = d = PyDict_New();
-        if (d == NULL)
-            PyErr_Clear();
-    }
-    return _PyThreadState_Current->dict;
-}
-
-
-/* Asynchronously raise an exception in a thread.
-   Requested by Just van Rossum and Alex Martelli.
-   To prevent naive misuse, you must write your own extension
-   to call this, or use ctypes.  Must be called with the GIL held.
-   Returns the number of tstates modified (normally 1, but 0 if `id` didn't
-   match any known thread id).  Can be called with exc=NULL to clear an
-   existing async exception.  This raises no exceptions. */
-
-int
-PyThreadState_SetAsyncExc(long id, PyObject *exc) {
-    PyThreadState *tstate = PyThreadState_GET();
-    PyInterpreterState *interp = tstate->interp;
-    PyThreadState *p;
-
-    /* Although the GIL is held, a few C API functions can be called
-     * without the GIL held, and in particular some that create and
-     * destroy thread and interpreter states.  Those can mutate the
-     * list of thread states we're traversing, so to prevent that we lock
-     * head_mutex for the duration.
-     */
-    HEAD_LOCK();
-    for (p = interp->tstate_head; p != NULL; p = p->next) {
-        if (p->thread_id == id) {
-            /* Tricky:  we need to decref the current value
-             * (if any) in p->async_exc, but that can in turn
-             * allow arbitrary Python code to run, including
-             * perhaps calls to this function.  To prevent
-             * deadlock, we need to release head_mutex before
-             * the decref.
-             */
-            PyObject *old_exc = p->async_exc;
-            Py_XINCREF(exc);
-            p->async_exc = exc;
-            HEAD_UNLOCK();
-            Py_XDECREF(old_exc);
-            return 1;
-        }
-    }
-    HEAD_UNLOCK();
-    return 0;
-}
-
-
-/* Routines for advanced debuggers, requested by David Beazley.
-   Don't use unless you know what you are doing! */
-
-PyInterpreterState *
-PyInterpreterState_Head(void)
-{
-    return interp_head;
-}
-
-PyInterpreterState *
-PyInterpreterState_Next(PyInterpreterState *interp) {
-    return interp->next;
-}
-
-PyThreadState *
-PyInterpreterState_ThreadHead(PyInterpreterState *interp) {
-    return interp->tstate_head;
-}
-
-PyThreadState *
-PyThreadState_Next(PyThreadState *tstate) {
-    return tstate->next;
-}
-
-/* The implementation of sys._current_frames().  This is intended to be
-   called with the GIL held, as it will be when called via
-   sys._current_frames().  It's possible it would work fine even without
-   the GIL held, but haven't thought enough about that.
-*/
-PyObject *
-_PyThread_CurrentFrames(void)
-{
-    PyObject *result;
-    PyInterpreterState *i;
-
-    result = PyDict_New();
-    if (result == NULL)
-        return NULL;
-
-    /* for i in all interpreters:
-     *     for t in all of i's thread states:
-     *          if t's frame isn't NULL, map t's id to its frame
-     * Because these lists can mutate even when the GIL is held, we
-     * need to grab head_mutex for the duration.
-     */
-    HEAD_LOCK();
-    for (i = interp_head; i != NULL; i = i->next) {
-        PyThreadState *t;
-        for (t = i->tstate_head; t != NULL; t = t->next) {
-            PyObject *id;
-            int stat;
-            struct _frame *frame = t->frame;
-            if (frame == NULL)
-                continue;
-            id = PyInt_FromLong(t->thread_id);
-            if (id == NULL)
-                goto Fail;
-            stat = PyDict_SetItem(result, id, (PyObject *)frame);
-            Py_DECREF(id);
-            if (stat < 0)
-                goto Fail;
-        }
-    }
-    HEAD_UNLOCK();
-    return result;
-
- Fail:
-    HEAD_UNLOCK();
-    Py_DECREF(result);
-    return NULL;
-}
-
-/* Python "auto thread state" API. */
-#ifdef WITH_THREAD
-
-/* Keep this as a static, as it is not reliable!  It can only
-   ever be compared to the state for the *current* thread.
-   * If not equal, then it doesn't matter that the actual
-     value may change immediately after comparison, as it can't
-     possibly change to the current thread's state.
-   * If equal, then the current thread holds the lock, so the value can't
-     change until we yield the lock.
-*/
-static int
-PyThreadState_IsCurrent(PyThreadState *tstate)
-{
-    /* Must be the tstate for this thread */
-    assert(PyGILState_GetThisThreadState()==tstate);
-    /* On Windows at least, simple reads and writes to 32 bit values
-       are atomic.
-    */
-    return tstate == _PyThreadState_Current;
-}
-
-/* Internal initialization/finalization functions called by
-   Py_Initialize/Py_Finalize
-*/
-void
-_PyGILState_Init(PyInterpreterState *i, PyThreadState *t)
-{
-    assert(i && t); /* must init with valid states */
-    autoTLSkey = PyThread_create_key();
-    autoInterpreterState = i;
-    assert(PyThread_get_key_value(autoTLSkey) == NULL);
-    assert(t->gilstate_counter == 0);
-
-    _PyGILState_NoteThreadState(t);
-}
-
-void
-_PyGILState_Fini(void)
-{
-    PyThread_delete_key(autoTLSkey);
-    autoInterpreterState = NULL;
-}
-
-/* Reset the TLS key - called by PyOS_AfterFork.
- * This should not be necessary, but some - buggy - pthread implementations
- * don't flush TLS on fork, see issue #10517.
- */
-void
-_PyGILState_Reinit(void)
-{
-    PyThreadState *tstate = PyGILState_GetThisThreadState();
-    PyThread_delete_key(autoTLSkey);
-    if ((autoTLSkey = PyThread_create_key()) == -1)
-        Py_FatalError("Could not allocate TLS entry");
-
-    /* re-associate the current thread state with the new key */
-    if (PyThread_set_key_value(autoTLSkey, (void *)tstate) < 0)
-        Py_FatalError("Couldn't create autoTLSkey mapping");
-}
-
-/* When a thread state is created for a thread by some mechanism other than
-   PyGILState_Ensure, it's important that the GILState machinery knows about
-   it so it doesn't try to create another thread state for the thread (this is
-   a better fix for SF bug #1010677 than the first one attempted).
-*/
-static void
-_PyGILState_NoteThreadState(PyThreadState* tstate)
-{
-    /* If autoTLSkey isn't initialized, this must be the very first
-       threadstate created in Py_Initialize().  Don't do anything for now
-       (we'll be back here when _PyGILState_Init is called). */
-    if (!autoInterpreterState)
-        return;
-
-    /* Stick the thread state for this thread in thread local storage.
-
-       The only situation where you can legitimately have more than one
-       thread state for an OS level thread is when there are multiple
-       interpreters, when:
-
-           a) You shouldn't really be using the PyGILState_ APIs anyway,
-          and:
-
-           b) The slightly odd way PyThread_set_key_value works (see
-          comments by its implementation) means that the first thread
-          state created for that given OS level thread will "win",
-          which seems reasonable behaviour.
-    */
-    if (PyThread_set_key_value(autoTLSkey, (void *)tstate) < 0)
-        Py_FatalError("Couldn't create autoTLSkey mapping");
-
-    /* PyGILState_Release must not try to delete this thread state. */
-    tstate->gilstate_counter = 1;
-}
-
-/* The public functions */
-PyThreadState *
-PyGILState_GetThisThreadState(void)
-{
-    if (autoInterpreterState == NULL)
-        return NULL;
-    return (PyThreadState *)PyThread_get_key_value(autoTLSkey);
-}
-
-PyGILState_STATE
-PyGILState_Ensure(void)
-{
-    int current;
-    PyThreadState *tcur;
-    /* Note that we do not auto-init Python here - apart from
-       potential races with 2 threads auto-initializing, pep-311
-       spells out other issues.  Embedders are expected to have
-       called Py_Initialize() and usually PyEval_InitThreads().
-    */
-    assert(autoInterpreterState); /* Py_Initialize() hasn't been called! */
-    tcur = (PyThreadState *)PyThread_get_key_value(autoTLSkey);
-    if (tcur == NULL) {
-        /* Create a new thread state for this thread */
-        tcur = PyThreadState_New(autoInterpreterState);
-        if (tcur == NULL)
-            Py_FatalError("Couldn't create thread-state for new thread");
-        /* This is our thread state!  We'll need to delete it in the
-           matching call to PyGILState_Release(). */
-        tcur->gilstate_counter = 0;
-        current = 0; /* new thread state is never current */
-    }
-    else
-        current = PyThreadState_IsCurrent(tcur);
-    if (current == 0)
-        PyEval_RestoreThread(tcur);
-    /* Update our counter in the thread-state - no need for locks:
-       - tcur will remain valid as we hold the GIL.
-       - the counter is safe as we are the only thread "allowed"
-         to modify this value
-    */
-    ++tcur->gilstate_counter;
-    return current ? PyGILState_LOCKED : PyGILState_UNLOCKED;
-}
-
-void
-PyGILState_Release(PyGILState_STATE oldstate)
-{
-    PyThreadState *tcur = (PyThreadState *)PyThread_get_key_value(
-                                                            autoTLSkey);
-    if (tcur == NULL)
-        Py_FatalError("auto-releasing thread-state, "
-                      "but no thread-state for this thread");
-    /* We must hold the GIL and have our thread state current */
-    /* XXX - remove the check - the assert should be fine,
-       but while this is very new (April 2003), the extra check
-       by release-only users can't hurt.
-    */
-    if (! PyThreadState_IsCurrent(tcur))
-        Py_FatalError("This thread state must be current when releasing");
-    assert(PyThreadState_IsCurrent(tcur));
-    --tcur->gilstate_counter;
-    assert(tcur->gilstate_counter >= 0); /* illegal counter value */
-
-    /* If we're going to destroy this thread-state, we must
-     * clear it while the GIL is held, as destructors may run.
-     */
-    if (tcur->gilstate_counter == 0) {
-        /* can't have been locked when we created it */
-        assert(oldstate == PyGILState_UNLOCKED);
-        PyThreadState_Clear(tcur);
-        /* Delete the thread-state.  Note this releases the GIL too!
-         * It's vital that the GIL be held here, to avoid shutdown
-         * races; see bugs 225673 and 1061968 (that nasty bug has a
-         * habit of coming back).
-         */
-        PyThreadState_DeleteCurrent();
-    }
-    /* Release the lock if necessary */
-    else if (oldstate == PyGILState_UNLOCKED)
-        PyEval_SaveThread();
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* WITH_THREAD */
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/pystrcmp.c b/AppPkg/Applications/Python/Python-2.7.2/Python/pystrcmp.c
deleted file mode 100644
index f1b12b4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/pystrcmp.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Cross platform case insensitive string compare functions
- */
-
-#include "Python.h"
-
-int
-PyOS_mystrnicmp(const char *s1, const char *s2, Py_ssize_t size)
-{
-    if (size == 0)
-        return 0;
-    while ((--size > 0) &&
-           (tolower((unsigned)*s1) == tolower((unsigned)*s2))) {
-        if (!*s1++ || !*s2++)
-            break;
-    }
-    return tolower((unsigned)*s1) - tolower((unsigned)*s2);
-}
-
-int
-PyOS_mystricmp(const char *s1, const char *s2)
-{
-    while (*s1 && (tolower((unsigned)*s1++) == tolower((unsigned)*s2++))) {
-        ;
-    }
-    return (tolower((unsigned)*s1) - tolower((unsigned)*s2));
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/pystrtod.c b/AppPkg/Applications/Python/Python-2.7.2/Python/pystrtod.c
deleted file mode 100644
index 75a8105..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/pystrtod.c
+++ /dev/null
@@ -1,1249 +0,0 @@
-/* -*- Mode: C; c-file-style: "python" -*- */
-
-#include <Python.h>
-#include <locale.h>
-
-/* Case-insensitive string match used for nan and inf detection; t should be
-   lower-case.  Returns 1 for a successful match, 0 otherwise. */
-
-static int
-case_insensitive_match(const char *s, const char *t)
-{
-    while(*t && Py_TOLOWER(*s) == *t) {
-        s++;
-        t++;
-    }
-    return *t ? 0 : 1;
-}
-
-/* _Py_parse_inf_or_nan: Attempt to parse a string of the form "nan", "inf" or
-   "infinity", with an optional leading sign of "+" or "-".  On success,
-   return the NaN or Infinity as a double and set *endptr to point just beyond
-   the successfully parsed portion of the string.  On failure, return -1.0 and
-   set *endptr to point to the start of the string. */
-
-double
-_Py_parse_inf_or_nan(const char *p, char **endptr)
-{
-    double retval;
-    const char *s;
-    int negate = 0;
-
-    s = p;
-    if (*s == '-') {
-        negate = 1;
-        s++;
-    }
-    else if (*s == '+') {
-        s++;
-    }
-    if (case_insensitive_match(s, "inf")) {
-        s += 3;
-        if (case_insensitive_match(s, "inity"))
-            s += 5;
-        retval = negate ? -Py_HUGE_VAL : Py_HUGE_VAL;
-    }
-#ifdef Py_NAN
-    else if (case_insensitive_match(s, "nan")) {
-        s += 3;
-        retval = negate ? -Py_NAN : Py_NAN;
-    }
-#endif
-    else {
-        s = p;
-        retval = -1.0;
-    }
-    *endptr = (char *)s;
-    return retval;
-}
-
-/**
- * PyOS_ascii_strtod:
- * @nptr:    the string to convert to a numeric value.
- * @endptr:  if non-%NULL, it returns the character after
- *           the last character used in the conversion.
- *
- * Converts a string to a #gdouble value.
- * This function behaves like the standard strtod() function
- * does in the C locale. It does this without actually
- * changing the current locale, since that would not be
- * thread-safe.
- *
- * This function is typically used when reading configuration
- * files or other non-user input that should be locale independent.
- * To handle input from the user you should normally use the
- * locale-sensitive system strtod() function.
- *
- * If the correct value would cause overflow, plus or minus %HUGE_VAL
- * is returned (according to the sign of the value), and %ERANGE is
- * stored in %errno. If the correct value would cause underflow,
- * zero is returned and %ERANGE is stored in %errno.
- * If memory allocation fails, %ENOMEM is stored in %errno.
- *
- * This function resets %errno before calling strtod() so that
- * you can reliably detect overflow and underflow.
- *
- * Return value: the #gdouble value.
- **/
-
-#ifndef PY_NO_SHORT_FLOAT_REPR
-
-double
-_PyOS_ascii_strtod(const char *nptr, char **endptr)
-{
-    double result;
-    _Py_SET_53BIT_PRECISION_HEADER;
-
-    assert(nptr != NULL);
-    /* Set errno to zero, so that we can distinguish zero results
-       and underflows */
-    errno = 0;
-
-    _Py_SET_53BIT_PRECISION_START;
-    result = _Py_dg_strtod(nptr, endptr);
-    _Py_SET_53BIT_PRECISION_END;
-
-    if (*endptr == nptr)
-        /* string might represent an inf or nan */
-        result = _Py_parse_inf_or_nan(nptr, endptr);
-
-    return result;
-
-}
-
-#else
-
-/*
-   Use system strtod;  since strtod is locale aware, we may
-   have to first fix the decimal separator.
-
-   Note that unlike _Py_dg_strtod, the system strtod may not always give
-   correctly rounded results.
-*/
-
-double
-_PyOS_ascii_strtod(const char *nptr, char **endptr)
-{
-    char *fail_pos;
-    double val = -1.0;
-    struct lconv *locale_data;
-    const char *decimal_point;
-    size_t decimal_point_len;
-    const char *p, *decimal_point_pos;
-    const char *end = NULL; /* Silence gcc */
-    const char *digits_pos = NULL;
-    int negate = 0;
-
-    assert(nptr != NULL);
-
-    fail_pos = NULL;
-
-    locale_data = localeconv();
-    decimal_point = locale_data->decimal_point;
-    decimal_point_len = strlen(decimal_point);
-
-    assert(decimal_point_len != 0);
-
-    decimal_point_pos = NULL;
-
-    /* Parse infinities and nans */
-    val = _Py_parse_inf_or_nan(nptr, endptr);
-    if (*endptr != nptr)
-        return val;
-
-    /* Set errno to zero, so that we can distinguish zero results
-       and underflows */
-    errno = 0;
-
-    /* We process the optional sign manually, then pass the remainder to
-       the system strtod.  This ensures that the result of an underflow
-       has the correct sign. (bug #1725)  */
-    p = nptr;
-    /* Process leading sign, if present */
-    if (*p == '-') {
-        negate = 1;
-        p++;
-    }
-    else if (*p == '+') {
-        p++;
-    }
-
-    /* Some platform strtods accept hex floats; Python shouldn't (at the
-       moment), so we check explicitly for strings starting with '0x'. */
-    if (*p == '0' && (*(p+1) == 'x' || *(p+1) == 'X'))
-        goto invalid_string;
-
-    /* Check that what's left begins with a digit or decimal point */
-    if (!Py_ISDIGIT(*p) && *p != '.')
-        goto invalid_string;
-
-    digits_pos = p;
-    if (decimal_point[0] != '.' ||
-        decimal_point[1] != 0)
-    {
-        /* Look for a '.' in the input; if present, it'll need to be
-           swapped for the current locale's decimal point before we
-           call strtod.  On the other hand, if we find the current
-           locale's decimal point then the input is invalid. */
-        while (Py_ISDIGIT(*p))
-            p++;
-
-        if (*p == '.')
-        {
-            decimal_point_pos = p++;
-
-            /* locate end of number */
-            while (Py_ISDIGIT(*p))
-                p++;
-
-            if (*p == 'e' || *p == 'E')
-                p++;
-            if (*p == '+' || *p == '-')
-                p++;
-            while (Py_ISDIGIT(*p))
-                p++;
-            end = p;
-        }
-        else if (strncmp(p, decimal_point, decimal_point_len) == 0)
-            /* Python bug #1417699 */
-            goto invalid_string;
-        /* For the other cases, we need not convert the decimal
-           point */
-    }
-
-    if (decimal_point_pos) {
-        char *copy, *c;
-        /* Create a copy of the input, with the '.' converted to the
-           locale-specific decimal point */
-        copy = (char *)PyMem_MALLOC(end - digits_pos +
-                                    1 + decimal_point_len);
-        if (copy == NULL) {
-            *endptr = (char *)nptr;
-            errno = ENOMEM;
-            return val;
-        }
-
-        c = copy;
-        memcpy(c, digits_pos, decimal_point_pos - digits_pos);
-        c += decimal_point_pos - digits_pos;
-        memcpy(c, decimal_point, decimal_point_len);
-        c += decimal_point_len;
-        memcpy(c, decimal_point_pos + 1,
-               end - (decimal_point_pos + 1));
-        c += end - (decimal_point_pos + 1);
-        *c = 0;
-
-        val = strtod(copy, &fail_pos);
-
-        if (fail_pos)
-        {
-            if (fail_pos > decimal_point_pos)
-                fail_pos = (char *)digits_pos +
-                    (fail_pos - copy) -
-                    (decimal_point_len - 1);
-            else
-                fail_pos = (char *)digits_pos +
-                    (fail_pos - copy);
-        }
-
-        PyMem_FREE(copy);
-
-    }
-    else {
-        val = strtod(digits_pos, &fail_pos);
-    }
-
-    if (fail_pos == digits_pos)
-        goto invalid_string;
-
-    if (negate && fail_pos != nptr)
-        val = -val;
-    *endptr = fail_pos;
-
-    return val;
-
-  invalid_string:
-    *endptr = (char*)nptr;
-    errno = EINVAL;
-    return -1.0;
-}
-
-#endif
-
-/* PyOS_ascii_strtod is DEPRECATED in Python 2.7 and 3.1 */
-
-double
-PyOS_ascii_strtod(const char *nptr, char **endptr)
-{
-    char *fail_pos;
-    const char *p;
-    double x;
-
-    if (PyErr_WarnEx(PyExc_DeprecationWarning,
-                     "PyOS_ascii_strtod and PyOS_ascii_atof are "
-                     "deprecated.  Use PyOS_string_to_double "
-                     "instead.", 1) < 0)
-        return -1.0;
-
-    /* _PyOS_ascii_strtod already does everything that we want,
-       except that it doesn't parse leading whitespace */
-    p = nptr;
-    while (Py_ISSPACE(*p))
-        p++;
-    x = _PyOS_ascii_strtod(p, &fail_pos);
-    if (fail_pos == p)
-        fail_pos = (char *)nptr;
-    if (endptr)
-        *endptr = (char *)fail_pos;
-    return x;
-}
-
-/* PyOS_ascii_strtod is DEPRECATED in Python 2.7 and 3.1 */
-
-double
-PyOS_ascii_atof(const char *nptr)
-{
-    return PyOS_ascii_strtod(nptr, NULL);
-}
-
-/* PyOS_string_to_double is the recommended replacement for the deprecated
-   PyOS_ascii_strtod and PyOS_ascii_atof functions.  It converts a
-   null-terminated byte string s (interpreted as a string of ASCII characters)
-   to a float.  The string should not have leading or trailing whitespace (in
-   contrast, PyOS_ascii_strtod allows leading whitespace but not trailing
-   whitespace).  The conversion is independent of the current locale.
-
-   If endptr is NULL, try to convert the whole string.  Raise ValueError and
-   return -1.0 if the string is not a valid representation of a floating-point
-   number.
-
-   If endptr is non-NULL, try to convert as much of the string as possible.
-   If no initial segment of the string is the valid representation of a
-   floating-point number then *endptr is set to point to the beginning of the
-   string, -1.0 is returned and again ValueError is raised.
-
-   On overflow (e.g., when trying to convert '1e500' on an IEEE 754 machine),
-   if overflow_exception is NULL then +-Py_HUGE_VAL is returned, and no Python
-   exception is raised.  Otherwise, overflow_exception should point to a
-   a Python exception, this exception will be raised, -1.0 will be returned,
-   and *endptr will point just past the end of the converted value.
-
-   If any other failure occurs (for example lack of memory), -1.0 is returned
-   and the appropriate Python exception will have been set.
-*/
-
-double
-PyOS_string_to_double(const char *s,
-                      char **endptr,
-                      PyObject *overflow_exception)
-{
-    double x, result=-1.0;
-    char *fail_pos;
-
-    errno = 0;
-    PyFPE_START_PROTECT("PyOS_string_to_double", return -1.0)
-    x = _PyOS_ascii_strtod(s, &fail_pos);
-    PyFPE_END_PROTECT(x)
-
-    if (errno == ENOMEM) {
-        PyErr_NoMemory();
-        fail_pos = (char *)s;
-    }
-    else if (!endptr && (fail_pos == s || *fail_pos != '\0'))
-        PyErr_Format(PyExc_ValueError,
-                      "could not convert string to float: "
-                      "%.200s", s);
-    else if (fail_pos == s)
-        PyErr_Format(PyExc_ValueError,
-                      "could not convert string to float: "
-                      "%.200s", s);
-    else if (errno == ERANGE && fabs(x) >= 1.0 && overflow_exception)
-        PyErr_Format(overflow_exception,
-                      "value too large to convert to float: "
-                      "%.200s", s);
-    else
-        result = x;
-
-    if (endptr != NULL)
-        *endptr = fail_pos;
-    return result;
-}
-
-/* Given a string that may have a decimal point in the current
-   locale, change it back to a dot.  Since the string cannot get
-   longer, no need for a maximum buffer size parameter. */
-Py_LOCAL_INLINE(void)
-change_decimal_from_locale_to_dot(char* buffer)
-{
-    struct lconv *locale_data = localeconv();
-    const char *decimal_point = locale_data->decimal_point;
-
-    if (decimal_point[0] != '.' || decimal_point[1] != 0) {
-        size_t decimal_point_len = strlen(decimal_point);
-
-        if (*buffer == '+' || *buffer == '-')
-            buffer++;
-        while (Py_ISDIGIT(*buffer))
-            buffer++;
-        if (strncmp(buffer, decimal_point, decimal_point_len) == 0) {
-            *buffer = '.';
-            buffer++;
-            if (decimal_point_len > 1) {
-                /* buffer needs to get smaller */
-                size_t rest_len = strlen(buffer +
-                                     (decimal_point_len - 1));
-                memmove(buffer,
-                    buffer + (decimal_point_len - 1),
-                    rest_len);
-                buffer[rest_len] = 0;
-            }
-        }
-    }
-}
-
-
-/* From the C99 standard, section 7.19.6:
-The exponent always contains at least two digits, and only as many more digits
-as necessary to represent the exponent.
-*/
-#define MIN_EXPONENT_DIGITS 2
-
-/* Ensure that any exponent, if present, is at least MIN_EXPONENT_DIGITS
-   in length. */
-Py_LOCAL_INLINE(void)
-ensure_minimum_exponent_length(char* buffer, size_t buf_size)
-{
-    char *p = strpbrk(buffer, "eE");
-    if (p && (*(p + 1) == '-' || *(p + 1) == '+')) {
-        char *start = p + 2;
-        int exponent_digit_cnt = 0;
-        int leading_zero_cnt = 0;
-        int in_leading_zeros = 1;
-        int significant_digit_cnt;
-
-        /* Skip over the exponent and the sign. */
-        p += 2;
-
-        /* Find the end of the exponent, keeping track of leading
-           zeros. */
-        while (*p && Py_ISDIGIT(*p)) {
-            if (in_leading_zeros && *p == '0')
-                ++leading_zero_cnt;
-            if (*p != '0')
-                in_leading_zeros = 0;
-            ++p;
-            ++exponent_digit_cnt;
-        }
-
-        significant_digit_cnt = exponent_digit_cnt - leading_zero_cnt;
-        if (exponent_digit_cnt == MIN_EXPONENT_DIGITS) {
-            /* If there are 2 exactly digits, we're done,
-               regardless of what they contain */
-        }
-        else if (exponent_digit_cnt > MIN_EXPONENT_DIGITS) {
-            int extra_zeros_cnt;
-
-            /* There are more than 2 digits in the exponent.  See
-               if we can delete some of the leading zeros */
-            if (significant_digit_cnt < MIN_EXPONENT_DIGITS)
-                significant_digit_cnt = MIN_EXPONENT_DIGITS;
-            extra_zeros_cnt = exponent_digit_cnt -
-                significant_digit_cnt;
-
-            /* Delete extra_zeros_cnt worth of characters from the
-               front of the exponent */
-            assert(extra_zeros_cnt >= 0);
-
-            /* Add one to significant_digit_cnt to copy the
-               trailing 0 byte, thus setting the length */
-            memmove(start,
-                start + extra_zeros_cnt,
-                significant_digit_cnt + 1);
-        }
-        else {
-            /* If there are fewer than 2 digits, add zeros
-               until there are 2, if there's enough room */
-            int zeros = MIN_EXPONENT_DIGITS - exponent_digit_cnt;
-            if (start + zeros + exponent_digit_cnt + 1
-                  < buffer + buf_size) {
-                memmove(start + zeros, start,
-                    exponent_digit_cnt + 1);
-                memset(start, '0', zeros);
-            }
-        }
-    }
-}
-
-/* Remove trailing zeros after the decimal point from a numeric string; also
-   remove the decimal point if all digits following it are zero.  The numeric
-   string must end in '\0', and should not have any leading or trailing
-   whitespace.  Assumes that the decimal point is '.'. */
-Py_LOCAL_INLINE(void)
-remove_trailing_zeros(char *buffer)
-{
-    char *old_fraction_end, *new_fraction_end, *end, *p;
-
-    p = buffer;
-    if (*p == '-' || *p == '+')
-        /* Skip leading sign, if present */
-        ++p;
-    while (Py_ISDIGIT(*p))
-        ++p;
-
-    /* if there's no decimal point there's nothing to do */
-    if (*p++ != '.')
-        return;
-
-    /* scan any digits after the point */
-    while (Py_ISDIGIT(*p))
-        ++p;
-    old_fraction_end = p;
-
-    /* scan up to ending '\0' */
-    while (*p != '\0')
-        p++;
-    /* +1 to make sure that we move the null byte as well */
-    end = p+1;
-
-    /* scan back from fraction_end, looking for removable zeros */
-    p = old_fraction_end;
-    while (*(p-1) == '0')
-        --p;
-    /* and remove point if we've got that far */
-    if (*(p-1) == '.')
-        --p;
-    new_fraction_end = p;
-
-    memmove(new_fraction_end, old_fraction_end, end-old_fraction_end);
-}
-
-/* Ensure that buffer has a decimal point in it.  The decimal point will not
-   be in the current locale, it will always be '.'. Don't add a decimal point
-   if an exponent is present.  Also, convert to exponential notation where
-   adding a '.0' would produce too many significant digits (see issue 5864).
-
-   Returns a pointer to the fixed buffer, or NULL on failure.
-*/
-Py_LOCAL_INLINE(char *)
-ensure_decimal_point(char* buffer, size_t buf_size, int precision)
-{
-    int digit_count, insert_count = 0, convert_to_exp = 0;
-    char *chars_to_insert, *digits_start;
-
-    /* search for the first non-digit character */
-    char *p = buffer;
-    if (*p == '-' || *p == '+')
-        /* Skip leading sign, if present.  I think this could only
-           ever be '-', but it can't hurt to check for both. */
-        ++p;
-    digits_start = p;
-    while (*p && Py_ISDIGIT(*p))
-        ++p;
-    digit_count = Py_SAFE_DOWNCAST(p - digits_start, Py_ssize_t, int);
-
-    if (*p == '.') {
-        if (Py_ISDIGIT(*(p+1))) {
-            /* Nothing to do, we already have a decimal
-               point and a digit after it */
-        }
-        else {
-            /* We have a decimal point, but no following
-               digit.  Insert a zero after the decimal. */
-            /* can't ever get here via PyOS_double_to_string */
-            assert(precision == -1);
-            ++p;
-            chars_to_insert = "0";
-            insert_count = 1;
-        }
-    }
-    else if (!(*p == 'e' || *p == 'E')) {
-        /* Don't add ".0" if we have an exponent. */
-        if (digit_count == precision) {
-            /* issue 5864: don't add a trailing .0 in the case
-               where the '%g'-formatted result already has as many
-               significant digits as were requested.  Switch to
-               exponential notation instead. */
-            convert_to_exp = 1;
-            /* no exponent, no point, and we shouldn't land here
-               for infs and nans, so we must be at the end of the
-               string. */
-            assert(*p == '\0');
-        }
-        else {
-            assert(precision == -1 || digit_count < precision);
-            chars_to_insert = ".0";
-            insert_count = 2;
-        }
-    }
-    if (insert_count) {
-        size_t buf_len = strlen(buffer);
-        if (buf_len + insert_count + 1 >= buf_size) {
-            /* If there is not enough room in the buffer
-               for the additional text, just skip it.  It's
-               not worth generating an error over. */
-        }
-        else {
-            memmove(p + insert_count, p,
-                buffer + strlen(buffer) - p + 1);
-            memcpy(p, chars_to_insert, insert_count);
-        }
-    }
-    if (convert_to_exp) {
-        int written;
-        size_t buf_avail;
-        p = digits_start;
-        /* insert decimal point */
-        assert(digit_count >= 1);
-        memmove(p+2, p+1, digit_count); /* safe, but overwrites nul */
-        p[1] = '.';
-        p += digit_count+1;
-        assert(p <= buf_size+buffer);
-        buf_avail = buf_size+buffer-p;
-        if (buf_avail == 0)
-            return NULL;
-        /* Add exponent.  It's okay to use lower case 'e': we only
-           arrive here as a result of using the empty format code or
-           repr/str builtins and those never want an upper case 'E' */
-        written = PyOS_snprintf(p, buf_avail, "e%+.02d", digit_count-1);
-        if (!(0 <= written &&
-              written < Py_SAFE_DOWNCAST(buf_avail, size_t, int)))
-            /* output truncated, or something else bad happened */
-            return NULL;
-        remove_trailing_zeros(buffer);
-    }
-    return buffer;
-}
-
-/* see FORMATBUFLEN in unicodeobject.c */
-#define FLOAT_FORMATBUFLEN 120
-
-/**
- * PyOS_ascii_formatd:
- * @buffer: A buffer to place the resulting string in
- * @buf_size: The length of the buffer.
- * @format: The printf()-style format to use for the
- *          code to use for converting.
- * @d: The #gdouble to convert
- *
- * Converts a #gdouble to a string, using the '.' as
- * decimal point. To format the number you pass in
- * a printf()-style format string. Allowed conversion
- * specifiers are 'e', 'E', 'f', 'F', 'g', 'G', and 'Z'.
- *
- * 'Z' is the same as 'g', except it always has a decimal and
- *     at least one digit after the decimal.
- *
- * Return value: The pointer to the buffer with the converted string.
- * On failure returns NULL but does not set any Python exception.
- **/
-char *
-_PyOS_ascii_formatd(char       *buffer,
-                   size_t      buf_size,
-                   const char *format,
-                   double      d,
-                   int         precision)
-{
-    char format_char;
-    size_t format_len = strlen(format);
-
-    /* Issue 2264: code 'Z' requires copying the format.  'Z' is 'g', but
-       also with at least one character past the decimal. */
-    char tmp_format[FLOAT_FORMATBUFLEN];
-
-    /* The last character in the format string must be the format char */
-    format_char = format[format_len - 1];
-
-    if (format[0] != '%')
-        return NULL;
-
-    /* I'm not sure why this test is here.  It's ensuring that the format
-       string after the first character doesn't have a single quote, a
-       lowercase l, or a percent. This is the reverse of the commented-out
-       test about 10 lines ago. */
-    if (strpbrk(format + 1, "'l%"))
-        return NULL;
-
-    /* Also curious about this function is that it accepts format strings
-       like "%xg", which are invalid for floats.  In general, the
-       interface to this function is not very good, but changing it is
-       difficult because it's a public API. */
-
-    if (!(format_char == 'e' || format_char == 'E' ||
-          format_char == 'f' || format_char == 'F' ||
-          format_char == 'g' || format_char == 'G' ||
-          format_char == 'Z'))
-        return NULL;
-
-    /* Map 'Z' format_char to 'g', by copying the format string and
-       replacing the final char with a 'g' */
-    if (format_char == 'Z') {
-        if (format_len + 1 >= sizeof(tmp_format)) {
-            /* The format won't fit in our copy.  Error out.  In
-               practice, this will never happen and will be
-               detected by returning NULL */
-            return NULL;
-        }
-        strcpy(tmp_format, format);
-        tmp_format[format_len - 1] = 'g';
-        format = tmp_format;
-    }
-
-
-    /* Have PyOS_snprintf do the hard work */
-    PyOS_snprintf(buffer, buf_size, format, d);
-
-    /* Do various fixups on the return string */
-
-    /* Get the current locale, and find the decimal point string.
-       Convert that string back to a dot. */
-    change_decimal_from_locale_to_dot(buffer);
-
-    /* If an exponent exists, ensure that the exponent is at least
-       MIN_EXPONENT_DIGITS digits, providing the buffer is large enough
-       for the extra zeros.  Also, if there are more than
-       MIN_EXPONENT_DIGITS, remove as many zeros as possible until we get
-       back to MIN_EXPONENT_DIGITS */
-    ensure_minimum_exponent_length(buffer, buf_size);
-
-    /* If format_char is 'Z', make sure we have at least one character
-       after the decimal point (and make sure we have a decimal point);
-       also switch to exponential notation in some edge cases where the
-       extra character would produce more significant digits that we
-       really want. */
-    if (format_char == 'Z')
-        buffer = ensure_decimal_point(buffer, buf_size, precision);
-
-    return buffer;
-}
-
-char *
-PyOS_ascii_formatd(char       *buffer,
-                   size_t      buf_size,
-                   const char *format,
-                   double      d)
-{
-    if (PyErr_WarnEx(PyExc_DeprecationWarning,
-                     "PyOS_ascii_formatd is deprecated, "
-                     "use PyOS_double_to_string instead", 1) < 0)
-        return NULL;
-
-    return _PyOS_ascii_formatd(buffer, buf_size, format, d, -1);
-}
-
-#ifdef PY_NO_SHORT_FLOAT_REPR
-
-/* The fallback code to use if _Py_dg_dtoa is not available. */
-
-PyAPI_FUNC(char *) PyOS_double_to_string(double val,
-                                         char format_code,
-                                         int precision,
-                                         int flags,
-                                         int *type)
-{
-    char format[32];
-    Py_ssize_t bufsize;
-    char *buf;
-    int t, exp;
-    int upper = 0;
-
-    /* Validate format_code, and map upper and lower case */
-    switch (format_code) {
-    case 'e':          /* exponent */
-    case 'f':          /* fixed */
-    case 'g':          /* general */
-        break;
-    case 'E':
-        upper = 1;
-        format_code = 'e';
-        break;
-    case 'F':
-        upper = 1;
-        format_code = 'f';
-        break;
-    case 'G':
-        upper = 1;
-        format_code = 'g';
-        break;
-    case 'r':          /* repr format */
-        /* Supplied precision is unused, must be 0. */
-        if (precision != 0) {
-            PyErr_BadInternalCall();
-            return NULL;
-        }
-        /* The repr() precision (17 significant decimal digits) is the
-           minimal number that is guaranteed to have enough precision
-           so that if the number is read back in the exact same binary
-           value is recreated.  This is true for IEEE floating point
-           by design, and also happens to work for all other modern
-           hardware. */
-        precision = 17;
-        format_code = 'g';
-        break;
-    default:
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-
-    /* Here's a quick-and-dirty calculation to figure out how big a buffer
-       we need.  In general, for a finite float we need:
-
-         1 byte for each digit of the decimal significand, and
-
-         1 for a possible sign
-         1 for a possible decimal point
-         2 for a possible [eE][+-]
-         1 for each digit of the exponent;  if we allow 19 digits
-           total then we're safe up to exponents of 2**63.
-         1 for the trailing nul byte
-
-       This gives a total of 24 + the number of digits in the significand,
-       and the number of digits in the significand is:
-
-         for 'g' format: at most precision, except possibly
-           when precision == 0, when it's 1.
-         for 'e' format: precision+1
-         for 'f' format: precision digits after the point, at least 1
-           before.  To figure out how many digits appear before the point
-           we have to examine the size of the number.  If fabs(val) < 1.0
-           then there will be only one digit before the point.  If
-           fabs(val) >= 1.0, then there are at most
-
-         1+floor(log10(ceiling(fabs(val))))
-
-           digits before the point (where the 'ceiling' allows for the
-           possibility that the rounding rounds the integer part of val
-           up).  A safe upper bound for the above quantity is
-           1+floor(exp/3), where exp is the unique integer such that 0.5
-           <= fabs(val)/2**exp < 1.0.  This exp can be obtained from
-           frexp.
-
-       So we allow room for precision+1 digits for all formats, plus an
-       extra floor(exp/3) digits for 'f' format.
-
-    */
-
-    if (Py_IS_NAN(val) || Py_IS_INFINITY(val))
-        /* 3 for 'inf'/'nan', 1 for sign, 1 for '\0' */
-        bufsize = 5;
-    else {
-        bufsize = 25 + precision;
-        if (format_code == 'f' && fabs(val) >= 1.0) {
-            frexp(val, &exp);
-            bufsize += exp/3;
-        }
-    }
-
-    buf = PyMem_Malloc(bufsize);
-    if (buf == NULL) {
-        PyErr_NoMemory();
-        return NULL;
-    }
-
-    /* Handle nan and inf. */
-    if (Py_IS_NAN(val)) {
-        strcpy(buf, "nan");
-        t = Py_DTST_NAN;
-    } else if (Py_IS_INFINITY(val)) {
-        if (copysign(1., val) == 1.)
-            strcpy(buf, "inf");
-        else
-            strcpy(buf, "-inf");
-        t = Py_DTST_INFINITE;
-    } else {
-        t = Py_DTST_FINITE;
-        if (flags & Py_DTSF_ADD_DOT_0)
-            format_code = 'Z';
-
-        PyOS_snprintf(format, sizeof(format), "%%%s.%i%c",
-                      (flags & Py_DTSF_ALT ? "#" : ""), precision,
-                      format_code);
-        _PyOS_ascii_formatd(buf, bufsize, format, val, precision);
-    }
-
-    /* Add sign when requested.  It's convenient (esp. when formatting
-     complex numbers) to include a sign even for inf and nan. */
-    if (flags & Py_DTSF_SIGN && buf[0] != '-') {
-        size_t len = strlen(buf);
-        /* the bufsize calculations above should ensure that we've got
-           space to add a sign */
-        assert((size_t)bufsize >= len+2);
-        memmove(buf+1, buf, len+1);
-        buf[0] = '+';
-    }
-    if (upper) {
-        /* Convert to upper case. */
-        char *p1;
-        for (p1 = buf; *p1; p1++)
-            *p1 = Py_TOUPPER(*p1);
-    }
-
-    if (type)
-        *type = t;
-    return buf;
-}
-
-#else
-
-/* _Py_dg_dtoa is available. */
-
-/* I'm using a lookup table here so that I don't have to invent a non-locale
-   specific way to convert to uppercase */
-#define OFS_INF 0
-#define OFS_NAN 1
-#define OFS_E 2
-
-/* The lengths of these are known to the code below, so don't change them */
-static char *lc_float_strings[] = {
-    "inf",
-    "nan",
-    "e",
-};
-static char *uc_float_strings[] = {
-    "INF",
-    "NAN",
-    "E",
-};
-
-
-/* Convert a double d to a string, and return a PyMem_Malloc'd block of
-   memory contain the resulting string.
-
-   Arguments:
-     d is the double to be converted
-     format_code is one of 'e', 'f', 'g', 'r'.  'e', 'f' and 'g'
-       correspond to '%e', '%f' and '%g';  'r' corresponds to repr.
-     mode is one of '0', '2' or '3', and is completely determined by
-       format_code: 'e' and 'g' use mode 2; 'f' mode 3, 'r' mode 0.
-     precision is the desired precision
-     always_add_sign is nonzero if a '+' sign should be included for positive
-       numbers
-     add_dot_0_if_integer is nonzero if integers in non-exponential form
-       should have ".0" added.  Only applies to format codes 'r' and 'g'.
-     use_alt_formatting is nonzero if alternative formatting should be
-       used.  Only applies to format codes 'e', 'f' and 'g'.  For code 'g',
-       at most one of use_alt_formatting and add_dot_0_if_integer should
-       be nonzero.
-     type, if non-NULL, will be set to one of these constants to identify
-       the type of the 'd' argument:
-     Py_DTST_FINITE
-     Py_DTST_INFINITE
-     Py_DTST_NAN
-
-   Returns a PyMem_Malloc'd block of memory containing the resulting string,
-    or NULL on error. If NULL is returned, the Python error has been set.
- */
-
-static char *
-format_float_short(double d, char format_code,
-                   int mode, Py_ssize_t precision,
-                   int always_add_sign, int add_dot_0_if_integer,
-                   int use_alt_formatting, char **float_strings, int *type)
-{
-    char *buf = NULL;
-    char *p = NULL;
-    Py_ssize_t bufsize = 0;
-    char *digits, *digits_end;
-    int decpt_as_int, sign, exp_len, exp = 0, use_exp = 0;
-    Py_ssize_t decpt, digits_len, vdigits_start, vdigits_end;
-    _Py_SET_53BIT_PRECISION_HEADER;
-
-    /* _Py_dg_dtoa returns a digit string (no decimal point or exponent).
-       Must be matched by a call to _Py_dg_freedtoa. */
-    _Py_SET_53BIT_PRECISION_START;
-    digits = _Py_dg_dtoa(d, mode, precision, &decpt_as_int, &sign,
-                         &digits_end);
-    _Py_SET_53BIT_PRECISION_END;
-
-    decpt = (Py_ssize_t)decpt_as_int;
-    if (digits == NULL) {
-        /* The only failure mode is no memory. */
-        PyErr_NoMemory();
-        goto exit;
-    }
-    assert(digits_end != NULL && digits_end >= digits);
-    digits_len = digits_end - digits;
-
-    if (digits_len && !Py_ISDIGIT(digits[0])) {
-        /* Infinities and nans here; adapt Gay's output,
-           so convert Infinity to inf and NaN to nan, and
-           ignore sign of nan. Then return. */
-
-        /* ignore the actual sign of a nan */
-        if (digits[0] == 'n' || digits[0] == 'N')
-            sign = 0;
-
-        /* We only need 5 bytes to hold the result "+inf\0" . */
-        bufsize = 5; /* Used later in an assert. */
-        buf = (char *)PyMem_Malloc(bufsize);
-        if (buf == NULL) {
-            PyErr_NoMemory();
-            goto exit;
-        }
-        p = buf;
-
-        if (sign == 1) {
-            *p++ = '-';
-        }
-        else if (always_add_sign) {
-            *p++ = '+';
-        }
-        if (digits[0] == 'i' || digits[0] == 'I') {
-            strncpy(p, float_strings[OFS_INF], 3);
-            p += 3;
-
-            if (type)
-                *type = Py_DTST_INFINITE;
-        }
-        else if (digits[0] == 'n' || digits[0] == 'N') {
-            strncpy(p, float_strings[OFS_NAN], 3);
-            p += 3;
-
-            if (type)
-                *type = Py_DTST_NAN;
-        }
-        else {
-            /* shouldn't get here: Gay's code should always return
-               something starting with a digit, an 'I',  or 'N' */
-            strncpy(p, "ERR", 3);
-            p += 3;
-            assert(0);
-        }
-        goto exit;
-    }
-
-    /* The result must be finite (not inf or nan). */
-    if (type)
-        *type = Py_DTST_FINITE;
-
-
-    /* We got digits back, format them.  We may need to pad 'digits'
-       either on the left or right (or both) with extra zeros, so in
-       general the resulting string has the form
-
-         [<sign>]<zeros><digits><zeros>[<exponent>]
-
-       where either of the <zeros> pieces could be empty, and there's a
-       decimal point that could appear either in <digits> or in the
-       leading or trailing <zeros>.
-
-       Imagine an infinite 'virtual' string vdigits, consisting of the
-       string 'digits' (starting at index 0) padded on both the left and
-       right with infinite strings of zeros.  We want to output a slice
-
-         vdigits[vdigits_start : vdigits_end]
-
-       of this virtual string.  Thus if vdigits_start < 0 then we'll end
-       up producing some leading zeros; if vdigits_end > digits_len there
-       will be trailing zeros in the output.  The next section of code
-       determines whether to use an exponent or not, figures out the
-       position 'decpt' of the decimal point, and computes 'vdigits_start'
-       and 'vdigits_end'. */
-    vdigits_end = digits_len;
-    switch (format_code) {
-    case 'e':
-        use_exp = 1;
-        vdigits_end = precision;
-        break;
-    case 'f':
-        vdigits_end = decpt + precision;
-        break;
-    case 'g':
-        if (decpt <= -4 || decpt >
-            (add_dot_0_if_integer ? precision-1 : precision))
-            use_exp = 1;
-        if (use_alt_formatting)
-            vdigits_end = precision;
-        break;
-    case 'r':
-        /* convert to exponential format at 1e16.  We used to convert
-           at 1e17, but that gives odd-looking results for some values
-           when a 16-digit 'shortest' repr is padded with bogus zeros.
-           For example, repr(2e16+8) would give 20000000000000010.0;
-           the true value is 20000000000000008.0. */
-        if (decpt <= -4 || decpt > 16)
-            use_exp = 1;
-        break;
-    default:
-        PyErr_BadInternalCall();
-        goto exit;
-    }
-
-    /* if using an exponent, reset decimal point position to 1 and adjust
-       exponent accordingly.*/
-    if (use_exp) {
-        exp = decpt - 1;
-        decpt = 1;
-    }
-    /* ensure vdigits_start < decpt <= vdigits_end, or vdigits_start <
-       decpt < vdigits_end if add_dot_0_if_integer and no exponent */
-    vdigits_start = decpt <= 0 ? decpt-1 : 0;
-    if (!use_exp && add_dot_0_if_integer)
-        vdigits_end = vdigits_end > decpt ? vdigits_end : decpt + 1;
-    else
-        vdigits_end = vdigits_end > decpt ? vdigits_end : decpt;
-
-    /* double check inequalities */
-    assert(vdigits_start <= 0 &&
-           0 <= digits_len &&
-           digits_len <= vdigits_end);
-    /* decimal point should be in (vdigits_start, vdigits_end] */
-    assert(vdigits_start < decpt && decpt <= vdigits_end);
-
-    /* Compute an upper bound how much memory we need. This might be a few
-       chars too long, but no big deal. */
-    bufsize =
-        /* sign, decimal point and trailing 0 byte */
-        3 +
-
-        /* total digit count (including zero padding on both sides) */
-        (vdigits_end - vdigits_start) +
-
-        /* exponent "e+100", max 3 numerical digits */
-        (use_exp ? 5 : 0);
-
-    /* Now allocate the memory and initialize p to point to the start of
-       it. */
-    buf = (char *)PyMem_Malloc(bufsize);
-    if (buf == NULL) {
-        PyErr_NoMemory();
-        goto exit;
-    }
-    p = buf;
-
-    /* Add a negative sign if negative, and a plus sign if non-negative
-       and always_add_sign is true. */
-    if (sign == 1)
-        *p++ = '-';
-    else if (always_add_sign)
-        *p++ = '+';
-
-    /* note that exactly one of the three 'if' conditions is true,
-       so we include exactly one decimal point */
-    /* Zero padding on left of digit string */
-    if (decpt <= 0) {
-        memset(p, '0', decpt-vdigits_start);
-        p += decpt - vdigits_start;
-        *p++ = '.';
-        memset(p, '0', 0-decpt);
-        p += 0-decpt;
-    }
-    else {
-        memset(p, '0', 0-vdigits_start);
-        p += 0 - vdigits_start;
-    }
-
-    /* Digits, with included decimal point */
-    if (0 < decpt && decpt <= digits_len) {
-        strncpy(p, digits, decpt-0);
-        p += decpt-0;
-        *p++ = '.';
-        strncpy(p, digits+decpt, digits_len-decpt);
-        p += digits_len-decpt;
-    }
-    else {
-        strncpy(p, digits, digits_len);
-        p += digits_len;
-    }
-
-    /* And zeros on the right */
-    if (digits_len < decpt) {
-        memset(p, '0', decpt-digits_len);
-        p += decpt-digits_len;
-        *p++ = '.';
-        memset(p, '0', vdigits_end-decpt);
-        p += vdigits_end-decpt;
-    }
-    else {
-        memset(p, '0', vdigits_end-digits_len);
-        p += vdigits_end-digits_len;
-    }
-
-    /* Delete a trailing decimal pt unless using alternative formatting. */
-    if (p[-1] == '.' && !use_alt_formatting)
-        p--;
-
-    /* Now that we've done zero padding, add an exponent if needed. */
-    if (use_exp) {
-        *p++ = float_strings[OFS_E][0];
-        exp_len = sprintf(p, "%+.02d", exp);
-        p += exp_len;
-    }
-  exit:
-    if (buf) {
-        *p = '\0';
-        /* It's too late if this fails, as we've already stepped on
-           memory that isn't ours. But it's an okay debugging test. */
-        assert(p-buf < bufsize);
-    }
-    if (digits)
-        _Py_dg_freedtoa(digits);
-
-    return buf;
-}
-
-
-PyAPI_FUNC(char *) PyOS_double_to_string(double val,
-                                         char format_code,
-                                         int precision,
-                                         int flags,
-                                         int *type)
-{
-    char **float_strings = lc_float_strings;
-    int mode;
-
-    /* Validate format_code, and map upper and lower case. Compute the
-       mode and make any adjustments as needed. */
-    switch (format_code) {
-    /* exponent */
-    case 'E':
-        float_strings = uc_float_strings;
-        format_code = 'e';
-        /* Fall through. */
-    case 'e':
-        mode = 2;
-        precision++;
-        break;
-
-    /* fixed */
-    case 'F':
-        float_strings = uc_float_strings;
-        format_code = 'f';
-        /* Fall through. */
-    case 'f':
-        mode = 3;
-        break;
-
-    /* general */
-    case 'G':
-        float_strings = uc_float_strings;
-        format_code = 'g';
-        /* Fall through. */
-    case 'g':
-        mode = 2;
-        /* precision 0 makes no sense for 'g' format; interpret as 1 */
-        if (precision == 0)
-            precision = 1;
-        break;
-
-    /* repr format */
-    case 'r':
-        mode = 0;
-        /* Supplied precision is unused, must be 0. */
-        if (precision != 0) {
-            PyErr_BadInternalCall();
-            return NULL;
-        }
-        break;
-
-    default:
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-
-    return format_float_short(val, format_code, mode, precision,
-                              flags & Py_DTSF_SIGN,
-                              flags & Py_DTSF_ADD_DOT_0,
-                              flags & Py_DTSF_ALT,
-                              float_strings, type);
-}
-#endif /* ifdef PY_NO_SHORT_FLOAT_REPR */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/pythonrun.c b/AppPkg/Applications/Python/Python-2.7.2/Python/pythonrun.c
deleted file mode 100644
index b4d6782..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/pythonrun.c
+++ /dev/null
@@ -1,2004 +0,0 @@
-
-/* Python interpreter top-level routines, including init/exit */
-
-#include "Python.h"
-
-#include "Python-ast.h"
-#undef Yield /* undefine macro conflicting with winbase.h */
-#include "grammar.h"
-#include "node.h"
-#include "token.h"
-#include "parsetok.h"
-#include "errcode.h"
-#include "code.h"
-#include "compile.h"
-#include "symtable.h"
-#include "pyarena.h"
-#include "ast.h"
-#include "eval.h"
-#include "marshal.h"
-#include "abstract.h"
-
-#ifdef HAVE_SIGNAL_H
-#include <signal.h>
-#endif
-
-#ifdef MS_WINDOWS
-#include "malloc.h" /* for alloca */
-#endif
-
-#ifdef HAVE_LANGINFO_H
-#include <locale.h>
-#include <langinfo.h>
-#endif
-
-#ifdef MS_WINDOWS
-#undef BYTE
-#include "windows.h"
-#endif
-
-#ifndef Py_REF_DEBUG
-#define PRINT_TOTAL_REFS()
-#else /* Py_REF_DEBUG */
-#define PRINT_TOTAL_REFS() fprintf(stderr,                              \
-                   "[%" PY_FORMAT_SIZE_T "d refs]\n",                   \
-                   _Py_GetRefTotal())
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern char *Py_GetPath(void);
-
-extern grammar _PyParser_Grammar; /* From graminit.c */
-
-/* Forward */
-static void initmain(void);
-static void initsite(void);
-static PyObject *run_mod(mod_ty, const char *, PyObject *, PyObject *,
-                          PyCompilerFlags *, PyArena *);
-static PyObject *run_pyc_file(FILE *, const char *, PyObject *, PyObject *,
-                              PyCompilerFlags *);
-static void err_input(perrdetail *);
-static void initsigs(void);
-static void wait_for_thread_shutdown(void);
-static void call_sys_exitfunc(void);
-static void call_ll_exitfuncs(void);
-extern void _PyUnicode_Init(void);
-extern void _PyUnicode_Fini(void);
-
-#ifdef WITH_THREAD
-extern void _PyGILState_Init(PyInterpreterState *, PyThreadState *);
-extern void _PyGILState_Fini(void);
-#endif /* WITH_THREAD */
-
-int Py_DebugFlag; /* Needed by parser.c */
-int Py_VerboseFlag; /* Needed by import.c */
-int Py_InteractiveFlag; /* Needed by Py_FdIsInteractive() below */
-int Py_InspectFlag; /* Needed to determine whether to exit at SystemExit */
-int Py_NoSiteFlag; /* Suppress 'import site' */
-int Py_BytesWarningFlag; /* Warn on str(bytes) and str(buffer) */
-int Py_DontWriteBytecodeFlag; /* Suppress writing bytecode files (*.py[co]) */
-int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c: deprecated */
-int Py_FrozenFlag; /* Needed by getpath.c */
-int Py_UnicodeFlag = 0; /* Needed by compile.c */
-int Py_IgnoreEnvironmentFlag; /* e.g. PYTHONPATH, PYTHONHOME */
-/* _XXX Py_QnewFlag should go away in 2.3.  It's true iff -Qnew is passed,
-  on the command line, and is used in 2.2 by ceval.c to make all "/" divisions
-  true divisions (which they will be in 2.3). */
-int _Py_QnewFlag = 0;
-int Py_NoUserSiteDirectory = 0; /* for -s and site.py */
-
-/* PyModule_GetWarningsModule is no longer necessary as of 2.6
-since _warnings is builtin.  This API should not be used. */
-PyObject *
-PyModule_GetWarningsModule(void)
-{
-    return PyImport_ImportModule("warnings");
-}
-
-static int initialized = 0;
-
-/* API to access the initialized flag -- useful for esoteric use */
-
-int
-Py_IsInitialized(void)
-{
-    return initialized;
-}
-
-/* Global initializations.  Can be undone by Py_Finalize().  Don't
-   call this twice without an intervening Py_Finalize() call.  When
-   initializations fail, a fatal error is issued and the function does
-   not return.  On return, the first thread and interpreter state have
-   been created.
-
-   Locking: you must hold the interpreter lock while calling this.
-   (If the lock has not yet been initialized, that's equivalent to
-   having the lock, but you cannot use multiple threads.)
-
-*/
-
-static int
-add_flag(int flag, const char *envs)
-{
-    int env = atoi(envs);
-    if (flag < env)
-        flag = env;
-    if (flag < 1)
-        flag = 1;
-    return flag;
-}
-
-void
-Py_InitializeEx(int install_sigs)
-{
-    PyInterpreterState *interp;
-    PyThreadState *tstate;
-    PyObject *bimod, *sysmod;
-    char *p;
-    char *icodeset = NULL; /* On Windows, input codeset may theoretically
-                              differ from output codeset. */
-    char *codeset = NULL;
-    char *errors = NULL;
-    int free_codeset = 0;
-    int overridden = 0;
-    PyObject *sys_stream, *sys_isatty;
-#if defined(Py_USING_UNICODE) && defined(HAVE_LANGINFO_H) && defined(CODESET)
-    char *saved_locale, *loc_codeset;
-#endif
-#ifdef MS_WINDOWS
-    char ibuf[128];
-    char buf[128];
-#endif
-    extern void _Py_ReadyTypes(void);
-
-    if (initialized)
-        return;
-    initialized = 1;
-
-    if ((p = Py_GETENV("PYTHONDEBUG")) && *p != '\0')
-        Py_DebugFlag = add_flag(Py_DebugFlag, p);
-    if ((p = Py_GETENV("PYTHONVERBOSE")) && *p != '\0')
-        Py_VerboseFlag = add_flag(Py_VerboseFlag, p);
-    if ((p = Py_GETENV("PYTHONOPTIMIZE")) && *p != '\0')
-        Py_OptimizeFlag = add_flag(Py_OptimizeFlag, p);
-    if ((p = Py_GETENV("PYTHONDONTWRITEBYTECODE")) && *p != '\0')
-        Py_DontWriteBytecodeFlag = add_flag(Py_DontWriteBytecodeFlag, p);
-
-    interp = PyInterpreterState_New();
-    if (interp == NULL)
-        Py_FatalError("Py_Initialize: can't make first interpreter");
-
-    tstate = PyThreadState_New(interp);
-    if (tstate == NULL)
-        Py_FatalError("Py_Initialize: can't make first thread");
-    (void) PyThreadState_Swap(tstate);
-
-    _Py_ReadyTypes();
-
-    if (!_PyFrame_Init())
-        Py_FatalError("Py_Initialize: can't init frames");
-
-    if (!_PyInt_Init())
-        Py_FatalError("Py_Initialize: can't init ints");
-
-    if (!_PyLong_Init())
-        Py_FatalError("Py_Initialize: can't init longs");
-
-    if (!PyByteArray_Init())
-        Py_FatalError("Py_Initialize: can't init bytearray");
-
-    _PyFloat_Init();
-
-    interp->modules = PyDict_New();
-    if (interp->modules == NULL)
-        Py_FatalError("Py_Initialize: can't make modules dictionary");
-    interp->modules_reloading = PyDict_New();
-    if (interp->modules_reloading == NULL)
-        Py_FatalError("Py_Initialize: can't make modules_reloading dictionary");
-
-#ifdef Py_USING_UNICODE
-    /* Init Unicode implementation; relies on the codec registry */
-    _PyUnicode_Init();
-#endif
-
-    bimod = _PyBuiltin_Init();
-    if (bimod == NULL)
-        Py_FatalError("Py_Initialize: can't initialize __builtin__");
-    interp->builtins = PyModule_GetDict(bimod);
-    if (interp->builtins == NULL)
-        Py_FatalError("Py_Initialize: can't initialize builtins dict");
-    Py_INCREF(interp->builtins);
-
-    sysmod = _PySys_Init();
-    if (sysmod == NULL)
-        Py_FatalError("Py_Initialize: can't initialize sys");
-    interp->sysdict = PyModule_GetDict(sysmod);
-    if (interp->sysdict == NULL)
-        Py_FatalError("Py_Initialize: can't initialize sys dict");
-    Py_INCREF(interp->sysdict);
-    _PyImport_FixupExtension("sys", "sys");
-    PySys_SetPath(Py_GetPath());
-    PyDict_SetItemString(interp->sysdict, "modules",
-                         interp->modules);
-
-    _PyImport_Init();
-
-    /* initialize builtin exceptions */
-    _PyExc_Init();
-    _PyImport_FixupExtension("exceptions", "exceptions");
-
-    /* phase 2 of builtins */
-    _PyImport_FixupExtension("__builtin__", "__builtin__");
-
-    _PyImportHooks_Init();
-
-    if (install_sigs)
-        initsigs(); /* Signal handling stuff, including initintr() */
-
-    /* Initialize warnings. */
-    _PyWarnings_Init();
-    if (PySys_HasWarnOptions()) {
-        PyObject *warnings_module = PyImport_ImportModule("warnings");
-        if (!warnings_module)
-            PyErr_Clear();
-        Py_XDECREF(warnings_module);
-    }
-
-    initmain(); /* Module __main__ */
-
-    /* auto-thread-state API, if available */
-#ifdef WITH_THREAD
-    _PyGILState_Init(interp, tstate);
-#endif /* WITH_THREAD */
-
-    if (!Py_NoSiteFlag)
-        initsite(); /* Module site */
-
-    if ((p = Py_GETENV("PYTHONIOENCODING")) && *p != '\0') {
-        p = icodeset = codeset = strdup(p);
-        free_codeset = 1;
-        errors = strchr(p, ':');
-        if (errors) {
-            *errors = '\0';
-            errors++;
-        }
-        overridden = 1;
-    }
-
-#if defined(Py_USING_UNICODE) && defined(HAVE_LANGINFO_H) && defined(CODESET)
-    /* On Unix, set the file system encoding according to the
-       user's preference, if the CODESET names a well-known
-       Python codec, and Py_FileSystemDefaultEncoding isn't
-       initialized by other means. Also set the encoding of
-       stdin and stdout if these are terminals, unless overridden.  */
-
-    if (!overridden || !Py_FileSystemDefaultEncoding) {
-        saved_locale = strdup(setlocale(LC_CTYPE, NULL));
-        setlocale(LC_CTYPE, "");
-        loc_codeset = nl_langinfo(CODESET);
-        if (loc_codeset && *loc_codeset) {
-            PyObject *enc = PyCodec_Encoder(loc_codeset);
-            if (enc) {
-                loc_codeset = strdup(loc_codeset);
-                Py_DECREF(enc);
-            } else {
-                if (PyErr_ExceptionMatches(PyExc_LookupError)) {
-                    PyErr_Clear();
-                    loc_codeset = NULL;
-                } else {
-                    PyErr_Print();
-                    exit(1);
-                }
-            }
-        } else
-            loc_codeset = NULL;
-        setlocale(LC_CTYPE, saved_locale);
-        free(saved_locale);
-
-        if (!overridden) {
-            codeset = icodeset = loc_codeset;
-            free_codeset = 1;
-        }
-
-        /* Initialize Py_FileSystemDefaultEncoding from
-           locale even if PYTHONIOENCODING is set. */
-        if (!Py_FileSystemDefaultEncoding) {
-            Py_FileSystemDefaultEncoding = loc_codeset;
-            if (!overridden)
-                free_codeset = 0;
-        }
-    }
-#endif
-
-#ifdef MS_WINDOWS
-    if (!overridden) {
-        icodeset = ibuf;
-        codeset = buf;
-        sprintf(ibuf, "cp%d", GetConsoleCP());
-        sprintf(buf, "cp%d", GetConsoleOutputCP());
-    }
-#endif
-
-    if (codeset) {
-        sys_stream = PySys_GetObject("stdin");
-        sys_isatty = PyObject_CallMethod(sys_stream, "isatty", "");
-        if (!sys_isatty)
-            PyErr_Clear();
-        if ((overridden ||
-             (sys_isatty && PyObject_IsTrue(sys_isatty))) &&
-           PyFile_Check(sys_stream)) {
-            if (!PyFile_SetEncodingAndErrors(sys_stream, icodeset, errors))
-                Py_FatalError("Cannot set codeset of stdin");
-        }
-        Py_XDECREF(sys_isatty);
-
-        sys_stream = PySys_GetObject("stdout");
-        sys_isatty = PyObject_CallMethod(sys_stream, "isatty", "");
-        if (!sys_isatty)
-            PyErr_Clear();
-        if ((overridden ||
-             (sys_isatty && PyObject_IsTrue(sys_isatty))) &&
-           PyFile_Check(sys_stream)) {
-            if (!PyFile_SetEncodingAndErrors(sys_stream, codeset, errors))
-                Py_FatalError("Cannot set codeset of stdout");
-        }
-        Py_XDECREF(sys_isatty);
-
-        sys_stream = PySys_GetObject("stderr");
-        sys_isatty = PyObject_CallMethod(sys_stream, "isatty", "");
-        if (!sys_isatty)
-            PyErr_Clear();
-        if((overridden ||
-            (sys_isatty && PyObject_IsTrue(sys_isatty))) &&
-           PyFile_Check(sys_stream)) {
-            if (!PyFile_SetEncodingAndErrors(sys_stream, codeset, errors))
-                Py_FatalError("Cannot set codeset of stderr");
-        }
-        Py_XDECREF(sys_isatty);
-
-        if (free_codeset)
-            free(codeset);
-    }
-}
-
-void
-Py_Initialize(void)
-{
-    Py_InitializeEx(1);
-}
-
-
-#ifdef COUNT_ALLOCS
-extern void dump_counts(FILE*);
-#endif
-
-/* Undo the effect of Py_Initialize().
-
-   Beware: if multiple interpreter and/or thread states exist, these
-   are not wiped out; only the current thread and interpreter state
-   are deleted.  But since everything else is deleted, those other
-   interpreter and thread states should no longer be used.
-
-   (XXX We should do better, e.g. wipe out all interpreters and
-   threads.)
-
-   Locking: as above.
-
-*/
-
-void
-Py_Finalize(void)
-{
-    PyInterpreterState *interp;
-    PyThreadState *tstate;
-
-    if (!initialized)
-        return;
-
-    wait_for_thread_shutdown();
-
-    /* The interpreter is still entirely intact at this point, and the
-     * exit funcs may be relying on that.  In particular, if some thread
-     * or exit func is still waiting to do an import, the import machinery
-     * expects Py_IsInitialized() to return true.  So don't say the
-     * interpreter is uninitialized until after the exit funcs have run.
-     * Note that Threading.py uses an exit func to do a join on all the
-     * threads created thru it, so this also protects pending imports in
-     * the threads created via Threading.
-     */
-    call_sys_exitfunc();
-    initialized = 0;
-
-    /* Get current thread state and interpreter pointer */
-    tstate = PyThreadState_GET();
-    interp = tstate->interp;
-
-    /* Disable signal handling */
-    PyOS_FiniInterrupts();
-
-    /* Clear type lookup cache */
-    PyType_ClearCache();
-
-    /* Collect garbage.  This may call finalizers; it's nice to call these
-     * before all modules are destroyed.
-     * XXX If a __del__ or weakref callback is triggered here, and tries to
-     * XXX import a module, bad things can happen, because Python no
-     * XXX longer believes it's initialized.
-     * XXX     Fatal Python error: Interpreter not initialized (version mismatch?)
-     * XXX is easy to provoke that way.  I've also seen, e.g.,
-     * XXX     Exception exceptions.ImportError: 'No module named sha'
-     * XXX         in <function callback at 0x008F5718> ignored
-     * XXX but I'm unclear on exactly how that one happens.  In any case,
-     * XXX I haven't seen a real-life report of either of these.
-     */
-    PyGC_Collect();
-#ifdef COUNT_ALLOCS
-    /* With COUNT_ALLOCS, it helps to run GC multiple times:
-       each collection might release some types from the type
-       list, so they become garbage. */
-    while (PyGC_Collect() > 0)
-        /* nothing */;
-#endif
-
-    /* Destroy all modules */
-    PyImport_Cleanup();
-
-    /* Collect final garbage.  This disposes of cycles created by
-     * new-style class definitions, for example.
-     * XXX This is disabled because it caused too many problems.  If
-     * XXX a __del__ or weakref callback triggers here, Python code has
-     * XXX a hard time running, because even the sys module has been
-     * XXX cleared out (sys.stdout is gone, sys.excepthook is gone, etc).
-     * XXX One symptom is a sequence of information-free messages
-     * XXX coming from threads (if a __del__ or callback is invoked,
-     * XXX other threads can execute too, and any exception they encounter
-     * XXX triggers a comedy of errors as subsystem after subsystem
-     * XXX fails to find what it *expects* to find in sys to help report
-     * XXX the exception and consequent unexpected failures).  I've also
-     * XXX seen segfaults then, after adding print statements to the
-     * XXX Python code getting called.
-     */
-#if 0
-    PyGC_Collect();
-#endif
-
-    /* Destroy the database used by _PyImport_{Fixup,Find}Extension */
-    _PyImport_Fini();
-
-    /* Debugging stuff */
-#ifdef COUNT_ALLOCS
-    dump_counts(stdout);
-#endif
-
-    PRINT_TOTAL_REFS();
-
-#ifdef Py_TRACE_REFS
-    /* Display all objects still alive -- this can invoke arbitrary
-     * __repr__ overrides, so requires a mostly-intact interpreter.
-     * Alas, a lot of stuff may still be alive now that will be cleaned
-     * up later.
-     */
-    if (Py_GETENV("PYTHONDUMPREFS"))
-        _Py_PrintReferences(stderr);
-#endif /* Py_TRACE_REFS */
-
-    /* Clear interpreter state */
-    PyInterpreterState_Clear(interp);
-
-    /* Now we decref the exception classes.  After this point nothing
-       can raise an exception.  That's okay, because each Fini() method
-       below has been checked to make sure no exceptions are ever
-       raised.
-    */
-
-    _PyExc_Fini();
-
-    /* Cleanup auto-thread-state */
-#ifdef WITH_THREAD
-    _PyGILState_Fini();
-#endif /* WITH_THREAD */
-
-    /* Delete current thread */
-    PyThreadState_Swap(NULL);
-    PyInterpreterState_Delete(interp);
-
-    /* Sundry finalizers */
-    PyMethod_Fini();
-    PyFrame_Fini();
-    PyCFunction_Fini();
-    PyTuple_Fini();
-    PyList_Fini();
-    PySet_Fini();
-    PyString_Fini();
-    PyByteArray_Fini();
-    PyInt_Fini();
-    PyFloat_Fini();
-    PyDict_Fini();
-
-#ifdef Py_USING_UNICODE
-    /* Cleanup Unicode implementation */
-    _PyUnicode_Fini();
-#endif
-
-    /* XXX Still allocated:
-       - various static ad-hoc pointers to interned strings
-       - int and float free list blocks
-       - whatever various modules and libraries allocate
-    */
-
-    PyGrammar_RemoveAccelerators(&_PyParser_Grammar);
-
-#ifdef Py_TRACE_REFS
-    /* Display addresses (& refcnts) of all objects still alive.
-     * An address can be used to find the repr of the object, printed
-     * above by _Py_PrintReferences.
-     */
-    if (Py_GETENV("PYTHONDUMPREFS"))
-        _Py_PrintReferenceAddresses(stderr);
-#endif /* Py_TRACE_REFS */
-#ifdef PYMALLOC_DEBUG
-    if (Py_GETENV("PYTHONMALLOCSTATS"))
-        _PyObject_DebugMallocStats();
-#endif
-
-    call_ll_exitfuncs();
-}
-
-/* Create and initialize a new interpreter and thread, and return the
-   new thread.  This requires that Py_Initialize() has been called
-   first.
-
-   Unsuccessful initialization yields a NULL pointer.  Note that *no*
-   exception information is available even in this case -- the
-   exception information is held in the thread, and there is no
-   thread.
-
-   Locking: as above.
-
-*/
-
-PyThreadState *
-Py_NewInterpreter(void)
-{
-    PyInterpreterState *interp;
-    PyThreadState *tstate, *save_tstate;
-    PyObject *bimod, *sysmod;
-
-    if (!initialized)
-        Py_FatalError("Py_NewInterpreter: call Py_Initialize first");
-
-    interp = PyInterpreterState_New();
-    if (interp == NULL)
-        return NULL;
-
-    tstate = PyThreadState_New(interp);
-    if (tstate == NULL) {
-        PyInterpreterState_Delete(interp);
-        return NULL;
-    }
-
-    save_tstate = PyThreadState_Swap(tstate);
-
-    /* XXX The following is lax in error checking */
-
-    interp->modules = PyDict_New();
-    interp->modules_reloading = PyDict_New();
-
-    bimod = _PyImport_FindExtension("__builtin__", "__builtin__");
-    if (bimod != NULL) {
-        interp->builtins = PyModule_GetDict(bimod);
-        if (interp->builtins == NULL)
-            goto handle_error;
-        Py_INCREF(interp->builtins);
-    }
-    sysmod = _PyImport_FindExtension("sys", "sys");
-    if (bimod != NULL && sysmod != NULL) {
-        interp->sysdict = PyModule_GetDict(sysmod);
-        if (interp->sysdict == NULL)
-            goto handle_error;
-        Py_INCREF(interp->sysdict);
-        PySys_SetPath(Py_GetPath());
-        PyDict_SetItemString(interp->sysdict, "modules",
-                             interp->modules);
-        _PyImportHooks_Init();
-        initmain();
-        if (!Py_NoSiteFlag)
-            initsite();
-    }
-
-    if (!PyErr_Occurred())
-        return tstate;
-
-handle_error:
-    /* Oops, it didn't work.  Undo it all. */
-
-    PyErr_Print();
-    PyThreadState_Clear(tstate);
-    PyThreadState_Swap(save_tstate);
-    PyThreadState_Delete(tstate);
-    PyInterpreterState_Delete(interp);
-
-    return NULL;
-}
-
-/* Delete an interpreter and its last thread.  This requires that the
-   given thread state is current, that the thread has no remaining
-   frames, and that it is its interpreter's only remaining thread.
-   It is a fatal error to violate these constraints.
-
-   (Py_Finalize() doesn't have these constraints -- it zaps
-   everything, regardless.)
-
-   Locking: as above.
-
-*/
-
-void
-Py_EndInterpreter(PyThreadState *tstate)
-{
-    PyInterpreterState *interp = tstate->interp;
-
-    if (tstate != PyThreadState_GET())
-        Py_FatalError("Py_EndInterpreter: thread is not current");
-    if (tstate->frame != NULL)
-        Py_FatalError("Py_EndInterpreter: thread still has a frame");
-    if (tstate != interp->tstate_head || tstate->next != NULL)
-        Py_FatalError("Py_EndInterpreter: not the last thread");
-
-    PyImport_Cleanup();
-    PyInterpreterState_Clear(interp);
-    PyThreadState_Swap(NULL);
-    PyInterpreterState_Delete(interp);
-}
-
-static char *progname = "python";
-
-void
-Py_SetProgramName(char *pn)
-{
-    if (pn && *pn)
-        progname = pn;
-}
-
-char *
-Py_GetProgramName(void)
-{
-    return progname;
-}
-
-static char *default_home = NULL;
-
-void
-Py_SetPythonHome(char *home)
-{
-    default_home = home;
-}
-
-char *
-Py_GetPythonHome(void)
-{
-    char *home = default_home;
-    if (home == NULL && !Py_IgnoreEnvironmentFlag)
-        home = Py_GETENV("PYTHONHOME");
-    return home;
-}
-
-/* Create __main__ module */
-
-static void
-initmain(void)
-{
-    PyObject *m, *d;
-    m = PyImport_AddModule("__main__");
-    if (m == NULL)
-        Py_FatalError("can't create __main__ module");
-    d = PyModule_GetDict(m);
-    if (PyDict_GetItemString(d, "__builtins__") == NULL) {
-        PyObject *bimod = PyImport_ImportModule("__builtin__");
-        if (bimod == NULL ||
-            PyDict_SetItemString(d, "__builtins__", bimod) != 0)
-            Py_FatalError("can't add __builtins__ to __main__");
-        Py_XDECREF(bimod);
-    }
-}
-
-/* Import the site module (not into __main__ though) */
-
-static void
-initsite(void)
-{
-    PyObject *m;
-    m = PyImport_ImportModule("site");
-    if (m == NULL) {
-        PyErr_Print();
-        Py_Finalize();
-        exit(1);
-    }
-    else {
-        Py_DECREF(m);
-    }
-}
-
-/* Parse input from a file and execute it */
-
-int
-PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit,
-                     PyCompilerFlags *flags)
-{
-    if (filename == NULL)
-        filename = "???";
-    if (Py_FdIsInteractive(fp, filename)) {
-        int err = PyRun_InteractiveLoopFlags(fp, filename, flags);
-        if (closeit)
-            fclose(fp);
-        return err;
-    }
-    else
-        return PyRun_SimpleFileExFlags(fp, filename, closeit, flags);
-}
-
-int
-PyRun_InteractiveLoopFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
-{
-    PyObject *v;
-    int ret;
-    PyCompilerFlags local_flags;
-
-    if (flags == NULL) {
-        flags = &local_flags;
-        local_flags.cf_flags = 0;
-    }
-    v = PySys_GetObject("ps1");
-    if (v == NULL) {
-        PySys_SetObject("ps1", v = PyString_FromString(">>> "));
-        Py_XDECREF(v);
-    }
-    v = PySys_GetObject("ps2");
-    if (v == NULL) {
-        PySys_SetObject("ps2", v = PyString_FromString("... "));
-        Py_XDECREF(v);
-    }
-    for (;;) {
-        ret = PyRun_InteractiveOneFlags(fp, filename, flags);
-        PRINT_TOTAL_REFS();
-        if (ret == E_EOF)
-            return 0;
-        /*
-        if (ret == E_NOMEM)
-            return -1;
-        */
-    }
-}
-
-#if 0
-/* compute parser flags based on compiler flags */
-#define PARSER_FLAGS(flags) \
-    ((flags) ? ((((flags)->cf_flags & PyCF_DONT_IMPLY_DEDENT) ? \
-                  PyPARSE_DONT_IMPLY_DEDENT : 0)) : 0)
-#endif
-#if 1
-/* Keep an example of flags with future keyword support. */
-#define PARSER_FLAGS(flags) \
-    ((flags) ? ((((flags)->cf_flags & PyCF_DONT_IMPLY_DEDENT) ? \
-                  PyPARSE_DONT_IMPLY_DEDENT : 0) \
-                | (((flags)->cf_flags & CO_FUTURE_PRINT_FUNCTION) ? \
-                   PyPARSE_PRINT_IS_FUNCTION : 0) \
-                | (((flags)->cf_flags & CO_FUTURE_UNICODE_LITERALS) ? \
-                   PyPARSE_UNICODE_LITERALS : 0) \
-                ) : 0)
-#endif
-
-int
-PyRun_InteractiveOneFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
-{
-    PyObject *m, *d, *v, *w;
-    mod_ty mod;
-    PyArena *arena;
-    char *ps1 = "", *ps2 = "";
-    int errcode = 0;
-
-    v = PySys_GetObject("ps1");
-    if (v != NULL) {
-        v = PyObject_Str(v);
-        if (v == NULL)
-            PyErr_Clear();
-        else if (PyString_Check(v))
-            ps1 = PyString_AsString(v);
-    }
-    w = PySys_GetObject("ps2");
-    if (w != NULL) {
-        w = PyObject_Str(w);
-        if (w == NULL)
-            PyErr_Clear();
-        else if (PyString_Check(w))
-            ps2 = PyString_AsString(w);
-    }
-    arena = PyArena_New();
-    if (arena == NULL) {
-        Py_XDECREF(v);
-        Py_XDECREF(w);
-        return -1;
-    }
-    mod = PyParser_ASTFromFile(fp, filename,
-                               Py_single_input, ps1, ps2,
-                               flags, &errcode, arena);
-    Py_XDECREF(v);
-    Py_XDECREF(w);
-    if (mod == NULL) {
-        PyArena_Free(arena);
-        if (errcode == E_EOF) {
-            PyErr_Clear();
-            return E_EOF;
-        }
-        PyErr_Print();
-        return -1;
-    }
-    m = PyImport_AddModule("__main__");
-    if (m == NULL) {
-        PyArena_Free(arena);
-        return -1;
-    }
-    d = PyModule_GetDict(m);
-    v = run_mod(mod, filename, d, d, flags, arena);
-    PyArena_Free(arena);
-    if (v == NULL) {
-        PyErr_Print();
-        return -1;
-    }
-    Py_DECREF(v);
-    if (Py_FlushLine())
-        PyErr_Clear();
-    return 0;
-}
-
-/* Check whether a file maybe a pyc file: Look at the extension,
-   the file type, and, if we may close it, at the first few bytes. */
-
-static int
-maybe_pyc_file(FILE *fp, const char* filename, const char* ext, int closeit)
-{
-    if (strcmp(ext, ".pyc") == 0 || strcmp(ext, ".pyo") == 0)
-        return 1;
-
-    /* Only look into the file if we are allowed to close it, since
-       it then should also be seekable. */
-    if (closeit) {
-        /* Read only two bytes of the magic. If the file was opened in
-           text mode, the bytes 3 and 4 of the magic (\r\n) might not
-           be read as they are on disk. */
-        unsigned int halfmagic = PyImport_GetMagicNumber() & 0xFFFF;
-        unsigned char buf[2];
-        /* Mess:  In case of -x, the stream is NOT at its start now,
-           and ungetc() was used to push back the first newline,
-           which makes the current stream position formally undefined,
-           and a x-platform nightmare.
-           Unfortunately, we have no direct way to know whether -x
-           was specified.  So we use a terrible hack:  if the current
-           stream position is not 0, we assume -x was specified, and
-           give up.  Bug 132850 on SourceForge spells out the
-           hopelessness of trying anything else (fseek and ftell
-           don't work predictably x-platform for text-mode files).
-        */
-        int ispyc = 0;
-        if (ftell(fp) == 0) {
-            if (fread(buf, 1, 2, fp) == 2 &&
-                ((unsigned int)buf[1]<<8 | buf[0]) == halfmagic)
-                ispyc = 1;
-            rewind(fp);
-        }
-        return ispyc;
-    }
-    return 0;
-}
-
-int
-PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit,
-                        PyCompilerFlags *flags)
-{
-    PyObject *m, *d, *v;
-    const char *ext;
-    int set_file_name = 0, ret, len;
-
-    m = PyImport_AddModule("__main__");
-    if (m == NULL)
-        return -1;
-    d = PyModule_GetDict(m);
-    if (PyDict_GetItemString(d, "__file__") == NULL) {
-        PyObject *f = PyString_FromString(filename);
-        if (f == NULL)
-            return -1;
-        if (PyDict_SetItemString(d, "__file__", f) < 0) {
-            Py_DECREF(f);
-            return -1;
-        }
-        set_file_name = 1;
-        Py_DECREF(f);
-    }
-    len = strlen(filename);
-    ext = filename + len - (len > 4 ? 4 : 0);
-    if (maybe_pyc_file(fp, filename, ext, closeit)) {
-        /* Try to run a pyc file. First, re-open in binary */
-        if (closeit)
-            fclose(fp);
-        if ((fp = fopen(filename, "rb")) == NULL) {
-            fprintf(stderr, "python: Can't reopen .pyc file\n");
-            ret = -1;
-            goto done;
-        }
-        /* Turn on optimization if a .pyo file is given */
-        if (strcmp(ext, ".pyo") == 0)
-            Py_OptimizeFlag = 1;
-        v = run_pyc_file(fp, filename, d, d, flags);
-    } else {
-        v = PyRun_FileExFlags(fp, filename, Py_file_input, d, d,
-                              closeit, flags);
-    }
-    if (v == NULL) {
-        PyErr_Print();
-        ret = -1;
-        goto done;
-    }
-    Py_DECREF(v);
-    if (Py_FlushLine())
-        PyErr_Clear();
-    ret = 0;
-  done:
-    if (set_file_name && PyDict_DelItemString(d, "__file__"))
-        PyErr_Clear();
-    return ret;
-}
-
-int
-PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags)
-{
-    PyObject *m, *d, *v;
-    m = PyImport_AddModule("__main__");
-    if (m == NULL)
-        return -1;
-    d = PyModule_GetDict(m);
-    v = PyRun_StringFlags(command, Py_file_input, d, d, flags);
-    if (v == NULL) {
-        PyErr_Print();
-        return -1;
-    }
-    Py_DECREF(v);
-    if (Py_FlushLine())
-        PyErr_Clear();
-    return 0;
-}
-
-static int
-parse_syntax_error(PyObject *err, PyObject **message, const char **filename,
-                   int *lineno, int *offset, const char **text)
-{
-    long hold;
-    PyObject *v;
-
-    /* old style errors */
-    if (PyTuple_Check(err))
-        return PyArg_ParseTuple(err, "O(ziiz)", message, filename,
-                                lineno, offset, text);
-
-    /* new style errors.  `err' is an instance */
-
-    if (! (v = PyObject_GetAttrString(err, "msg")))
-        goto finally;
-    *message = v;
-
-    if (!(v = PyObject_GetAttrString(err, "filename")))
-        goto finally;
-    if (v == Py_None)
-        *filename = NULL;
-    else if (! (*filename = PyString_AsString(v)))
-        goto finally;
-
-    Py_DECREF(v);
-    if (!(v = PyObject_GetAttrString(err, "lineno")))
-        goto finally;
-    hold = PyInt_AsLong(v);
-    Py_DECREF(v);
-    v = NULL;
-    if (hold < 0 && PyErr_Occurred())
-        goto finally;
-    *lineno = (int)hold;
-
-    if (!(v = PyObject_GetAttrString(err, "offset")))
-        goto finally;
-    if (v == Py_None) {
-        *offset = -1;
-        Py_DECREF(v);
-        v = NULL;
-    } else {
-        hold = PyInt_AsLong(v);
-        Py_DECREF(v);
-        v = NULL;
-        if (hold < 0 && PyErr_Occurred())
-            goto finally;
-        *offset = (int)hold;
-    }
-
-    if (!(v = PyObject_GetAttrString(err, "text")))
-        goto finally;
-    if (v == Py_None)
-        *text = NULL;
-    else if (! (*text = PyString_AsString(v)))
-        goto finally;
-    Py_DECREF(v);
-    return 1;
-
-finally:
-    Py_XDECREF(v);
-    return 0;
-}
-
-void
-PyErr_Print(void)
-{
-    PyErr_PrintEx(1);
-}
-
-static void
-print_error_text(PyObject *f, int offset, const char *text)
-{
-    char *nl;
-    if (offset >= 0) {
-        if (offset > 0 && offset == strlen(text) && text[offset - 1] == '\n')
-            offset--;
-        for (;;) {
-            nl = strchr(text, '\n');
-            if (nl == NULL || nl-text >= offset)
-                break;
-            offset -= (int)(nl+1-text);
-            text = nl+1;
-        }
-        while (*text == ' ' || *text == '\t') {
-            text++;
-            offset--;
-        }
-    }
-    PyFile_WriteString("    ", f);
-    PyFile_WriteString(text, f);
-    if (*text == '\0' || text[strlen(text)-1] != '\n')
-        PyFile_WriteString("\n", f);
-    if (offset == -1)
-        return;
-    PyFile_WriteString("    ", f);
-    offset--;
-    while (offset > 0) {
-        PyFile_WriteString(" ", f);
-        offset--;
-    }
-    PyFile_WriteString("^\n", f);
-}
-
-static void
-handle_system_exit(void)
-{
-    PyObject *exception, *value, *tb;
-    int exitcode = 0;
-
-    if (Py_InspectFlag)
-        /* Don't exit if -i flag was given. This flag is set to 0
-         * when entering interactive mode for inspecting. */
-        return;
-
-    PyErr_Fetch(&exception, &value, &tb);
-    if (Py_FlushLine())
-        PyErr_Clear();
-    fflush(stdout);
-    if (value == NULL || value == Py_None)
-        goto done;
-    if (PyExceptionInstance_Check(value)) {
-        /* The error code should be in the `code' attribute. */
-        PyObject *code = PyObject_GetAttrString(value, "code");
-        if (code) {
-            Py_DECREF(value);
-            value = code;
-            if (value == Py_None)
-                goto done;
-        }
-        /* If we failed to dig out the 'code' attribute,
-           just let the else clause below print the error. */
-    }
-    if (PyInt_Check(value))
-        exitcode = (int)PyInt_AsLong(value);
-    else {
-        PyObject *sys_stderr = PySys_GetObject("stderr");
-        if (sys_stderr != NULL && sys_stderr != Py_None) {
-            PyFile_WriteObject(value, sys_stderr, Py_PRINT_RAW);
-        } else {
-            PyObject_Print(value, stderr, Py_PRINT_RAW);
-            fflush(stderr);
-        }
-        PySys_WriteStderr("\n");
-        exitcode = 1;
-    }
- done:
-    /* Restore and clear the exception info, in order to properly decref
-     * the exception, value, and traceback.      If we just exit instead,
-     * these leak, which confuses PYTHONDUMPREFS output, and may prevent
-     * some finalizers from running.
-     */
-    PyErr_Restore(exception, value, tb);
-    PyErr_Clear();
-    Py_Exit(exitcode);
-    /* NOTREACHED */
-}
-
-void
-PyErr_PrintEx(int set_sys_last_vars)
-{
-    PyObject *exception, *v, *tb, *hook;
-
-    if (PyErr_ExceptionMatches(PyExc_SystemExit)) {
-        handle_system_exit();
-    }
-    PyErr_Fetch(&exception, &v, &tb);
-    if (exception == NULL)
-        return;
-    PyErr_NormalizeException(&exception, &v, &tb);
-    if (exception == NULL)
-        return;
-    /* Now we know v != NULL too */
-    if (set_sys_last_vars) {
-        PySys_SetObject("last_type", exception);
-        PySys_SetObject("last_value", v);
-        PySys_SetObject("last_traceback", tb);
-    }
-    hook = PySys_GetObject("excepthook");
-    if (hook && hook != Py_None) {
-        PyObject *args = PyTuple_Pack(3,
-            exception, v, tb ? tb : Py_None);
-        PyObject *result = PyEval_CallObject(hook, args);
-        if (result == NULL) {
-            PyObject *exception2, *v2, *tb2;
-            if (PyErr_ExceptionMatches(PyExc_SystemExit)) {
-                handle_system_exit();
-            }
-            PyErr_Fetch(&exception2, &v2, &tb2);
-            PyErr_NormalizeException(&exception2, &v2, &tb2);
-            /* It should not be possible for exception2 or v2
-               to be NULL. However PyErr_Display() can't
-               tolerate NULLs, so just be safe. */
-            if (exception2 == NULL) {
-                exception2 = Py_None;
-                Py_INCREF(exception2);
-            }
-            if (v2 == NULL) {
-                v2 = Py_None;
-                Py_INCREF(v2);
-            }
-            if (Py_FlushLine())
-                PyErr_Clear();
-            fflush(stdout);
-            PySys_WriteStderr("Error in sys.excepthook:\n");
-            PyErr_Display(exception2, v2, tb2);
-            PySys_WriteStderr("\nOriginal exception was:\n");
-            PyErr_Display(exception, v, tb);
-            Py_DECREF(exception2);
-            Py_DECREF(v2);
-            Py_XDECREF(tb2);
-        }
-        Py_XDECREF(result);
-        Py_XDECREF(args);
-    } else {
-        PySys_WriteStderr("sys.excepthook is missing\n");
-        PyErr_Display(exception, v, tb);
-    }
-    Py_XDECREF(exception);
-    Py_XDECREF(v);
-    Py_XDECREF(tb);
-}
-
-void
-PyErr_Display(PyObject *exception, PyObject *value, PyObject *tb)
-{
-    int err = 0;
-    PyObject *f = PySys_GetObject("stderr");
-    Py_INCREF(value);
-    if (f == NULL || f == Py_None)
-        fprintf(stderr, "lost sys.stderr\n");
-    else {
-        if (Py_FlushLine())
-            PyErr_Clear();
-        fflush(stdout);
-        if (tb && tb != Py_None)
-            err = PyTraceBack_Print(tb, f);
-        if (err == 0 &&
-            PyObject_HasAttrString(value, "print_file_and_line"))
-        {
-            PyObject *message;
-            const char *filename, *text;
-            int lineno, offset;
-            if (!parse_syntax_error(value, &message, &filename,
-                                    &lineno, &offset, &text))
-                PyErr_Clear();
-            else {
-                char buf[10];
-                PyFile_WriteString("  File \"", f);
-                if (filename == NULL)
-                    PyFile_WriteString("<string>", f);
-                else
-                    PyFile_WriteString(filename, f);
-                PyFile_WriteString("\", line ", f);
-                PyOS_snprintf(buf, sizeof(buf), "%d", lineno);
-                PyFile_WriteString(buf, f);
-                PyFile_WriteString("\n", f);
-                if (text != NULL)
-                    print_error_text(f, offset, text);
-                Py_DECREF(value);
-                value = message;
-                /* Can't be bothered to check all those
-                   PyFile_WriteString() calls */
-                if (PyErr_Occurred())
-                    err = -1;
-            }
-        }
-        if (err) {
-            /* Don't do anything else */
-        }
-        else if (PyExceptionClass_Check(exception)) {
-            PyObject* moduleName;
-            char* className = PyExceptionClass_Name(exception);
-            if (className != NULL) {
-                char *dot = strrchr(className, '.');
-                if (dot != NULL)
-                    className = dot+1;
-            }
-
-            moduleName = PyObject_GetAttrString(exception, "__module__");
-            if (moduleName == NULL)
-                err = PyFile_WriteString("<unknown>", f);
-            else {
-                char* modstr = PyString_AsString(moduleName);
-                if (modstr && strcmp(modstr, "exceptions"))
-                {
-                    err = PyFile_WriteString(modstr, f);
-                    err += PyFile_WriteString(".", f);
-                }
-                Py_DECREF(moduleName);
-            }
-            if (err == 0) {
-                if (className == NULL)
-                      err = PyFile_WriteString("<unknown>", f);
-                else
-                      err = PyFile_WriteString(className, f);
-            }
-        }
-        else
-            err = PyFile_WriteObject(exception, f, Py_PRINT_RAW);
-        if (err == 0 && (value != Py_None)) {
-            PyObject *s = PyObject_Str(value);
-            /* only print colon if the str() of the
-               object is not the empty string
-            */
-            if (s == NULL)
-                err = -1;
-            else if (!PyString_Check(s) ||
-                     PyString_GET_SIZE(s) != 0)
-                err = PyFile_WriteString(": ", f);
-            if (err == 0)
-              err = PyFile_WriteObject(s, f, Py_PRINT_RAW);
-            Py_XDECREF(s);
-        }
-        /* try to write a newline in any case */
-        err += PyFile_WriteString("\n", f);
-    }
-    Py_DECREF(value);
-    /* If an error happened here, don't show it.
-       XXX This is wrong, but too many callers rely on this behavior. */
-    if (err != 0)
-        PyErr_Clear();
-}
-
-PyObject *
-PyRun_StringFlags(const char *str, int start, PyObject *globals,
-                  PyObject *locals, PyCompilerFlags *flags)
-{
-    PyObject *ret = NULL;
-    mod_ty mod;
-    PyArena *arena = PyArena_New();
-    if (arena == NULL)
-        return NULL;
-
-    mod = PyParser_ASTFromString(str, "<string>", start, flags, arena);
-    if (mod != NULL)
-        ret = run_mod(mod, "<string>", globals, locals, flags, arena);
-    PyArena_Free(arena);
-    return ret;
-}
-
-PyObject *
-PyRun_FileExFlags(FILE *fp, const char *filename, int start, PyObject *globals,
-                  PyObject *locals, int closeit, PyCompilerFlags *flags)
-{
-    PyObject *ret;
-    mod_ty mod;
-    PyArena *arena = PyArena_New();
-    if (arena == NULL)
-        return NULL;
-
-    mod = PyParser_ASTFromFile(fp, filename, start, 0, 0,
-                               flags, NULL, arena);
-    if (closeit)
-        fclose(fp);
-    if (mod == NULL) {
-        PyArena_Free(arena);
-        return NULL;
-    }
-    ret = run_mod(mod, filename, globals, locals, flags, arena);
-    PyArena_Free(arena);
-    return ret;
-}
-
-static PyObject *
-run_mod(mod_ty mod, const char *filename, PyObject *globals, PyObject *locals,
-         PyCompilerFlags *flags, PyArena *arena)
-{
-    PyCodeObject *co;
-    PyObject *v;
-    co = PyAST_Compile(mod, filename, flags, arena);
-    if (co == NULL)
-        return NULL;
-    v = PyEval_EvalCode(co, globals, locals);
-    Py_DECREF(co);
-    return v;
-}
-
-static PyObject *
-run_pyc_file(FILE *fp, const char *filename, PyObject *globals,
-             PyObject *locals, PyCompilerFlags *flags)
-{
-    PyCodeObject *co;
-    PyObject *v;
-    long magic;
-    long PyImport_GetMagicNumber(void);
-
-    magic = PyMarshal_ReadLongFromFile(fp);
-    if (magic != PyImport_GetMagicNumber()) {
-        PyErr_SetString(PyExc_RuntimeError,
-                   "Bad magic number in .pyc file");
-        return NULL;
-    }
-    (void) PyMarshal_ReadLongFromFile(fp);
-    v = PyMarshal_ReadLastObjectFromFile(fp);
-    fclose(fp);
-    if (v == NULL || !PyCode_Check(v)) {
-        Py_XDECREF(v);
-        PyErr_SetString(PyExc_RuntimeError,
-                   "Bad code object in .pyc file");
-        return NULL;
-    }
-    co = (PyCodeObject *)v;
-    v = PyEval_EvalCode(co, globals, locals);
-    if (v && flags)
-        flags->cf_flags |= (co->co_flags & PyCF_MASK);
-    Py_DECREF(co);
-    return v;
-}
-
-PyObject *
-Py_CompileStringFlags(const char *str, const char *filename, int start,
-                      PyCompilerFlags *flags)
-{
-    PyCodeObject *co;
-    mod_ty mod;
-    PyArena *arena = PyArena_New();
-    if (arena == NULL)
-        return NULL;
-
-    mod = PyParser_ASTFromString(str, filename, start, flags, arena);
-    if (mod == NULL) {
-        PyArena_Free(arena);
-        return NULL;
-    }
-    if (flags && (flags->cf_flags & PyCF_ONLY_AST)) {
-        PyObject *result = PyAST_mod2obj(mod);
-        PyArena_Free(arena);
-        return result;
-    }
-    co = PyAST_Compile(mod, filename, flags, arena);
-    PyArena_Free(arena);
-    return (PyObject *)co;
-}
-
-struct symtable *
-Py_SymtableString(const char *str, const char *filename, int start)
-{
-    struct symtable *st;
-    mod_ty mod;
-    PyCompilerFlags flags;
-    PyArena *arena = PyArena_New();
-    if (arena == NULL)
-        return NULL;
-
-    flags.cf_flags = 0;
-
-    mod = PyParser_ASTFromString(str, filename, start, &flags, arena);
-    if (mod == NULL) {
-        PyArena_Free(arena);
-        return NULL;
-    }
-    st = PySymtable_Build(mod, filename, 0);
-    PyArena_Free(arena);
-    return st;
-}
-
-/* Preferred access to parser is through AST. */
-mod_ty
-PyParser_ASTFromString(const char *s, const char *filename, int start,
-                       PyCompilerFlags *flags, PyArena *arena)
-{
-    mod_ty mod;
-    PyCompilerFlags localflags;
-    perrdetail err;
-    int iflags = PARSER_FLAGS(flags);
-
-    node *n = PyParser_ParseStringFlagsFilenameEx(s, filename,
-                                    &_PyParser_Grammar, start, &err,
-                                    &iflags);
-    if (flags == NULL) {
-        localflags.cf_flags = 0;
-        flags = &localflags;
-    }
-    if (n) {
-        flags->cf_flags |= iflags & PyCF_MASK;
-        mod = PyAST_FromNode(n, flags, filename, arena);
-        PyNode_Free(n);
-        return mod;
-    }
-    else {
-        err_input(&err);
-        return NULL;
-    }
-}
-
-mod_ty
-PyParser_ASTFromFile(FILE *fp, const char *filename, int start, char *ps1,
-                     char *ps2, PyCompilerFlags *flags, int *errcode,
-                     PyArena *arena)
-{
-    mod_ty mod;
-    PyCompilerFlags localflags;
-    perrdetail err;
-    int iflags = PARSER_FLAGS(flags);
-
-    node *n = PyParser_ParseFileFlagsEx(fp, filename, &_PyParser_Grammar,
-                            start, ps1, ps2, &err, &iflags);
-    if (flags == NULL) {
-        localflags.cf_flags = 0;
-        flags = &localflags;
-    }
-    if (n) {
-        flags->cf_flags |= iflags & PyCF_MASK;
-        mod = PyAST_FromNode(n, flags, filename, arena);
-        PyNode_Free(n);
-        return mod;
-    }
-    else {
-        err_input(&err);
-        if (errcode)
-            *errcode = err.error;
-        return NULL;
-    }
-}
-
-/* Simplified interface to parsefile -- return node or set exception */
-
-node *
-PyParser_SimpleParseFileFlags(FILE *fp, const char *filename, int start, int flags)
-{
-    perrdetail err;
-    node *n = PyParser_ParseFileFlags(fp, filename, &_PyParser_Grammar,
-                                      start, NULL, NULL, &err, flags);
-    if (n == NULL)
-        err_input(&err);
-
-    return n;
-}
-
-/* Simplified interface to parsestring -- return node or set exception */
-
-node *
-PyParser_SimpleParseStringFlags(const char *str, int start, int flags)
-{
-    perrdetail err;
-    node *n = PyParser_ParseStringFlags(str, &_PyParser_Grammar,
-                                        start, &err, flags);
-    if (n == NULL)
-        err_input(&err);
-    return n;
-}
-
-node *
-PyParser_SimpleParseStringFlagsFilename(const char *str, const char *filename,
-                                        int start, int flags)
-{
-    perrdetail err;
-    node *n = PyParser_ParseStringFlagsFilename(str, filename,
-                            &_PyParser_Grammar, start, &err, flags);
-    if (n == NULL)
-        err_input(&err);
-    return n;
-}
-
-node *
-PyParser_SimpleParseStringFilename(const char *str, const char *filename, int start)
-{
-    return PyParser_SimpleParseStringFlagsFilename(str, filename, start, 0);
-}
-
-/* May want to move a more generalized form of this to parsetok.c or
-   even parser modules. */
-
-void
-PyParser_SetError(perrdetail *err)
-{
-    err_input(err);
-}
-
-/* Set the error appropriate to the given input error code (see errcode.h) */
-
-static void
-err_input(perrdetail *err)
-{
-    PyObject *v, *w, *errtype;
-    PyObject* u = NULL;
-    char *msg = NULL;
-    errtype = PyExc_SyntaxError;
-    switch (err->error) {
-    case E_ERROR:
-        return;
-    case E_SYNTAX:
-        errtype = PyExc_IndentationError;
-        if (err->expected == INDENT)
-            msg = "expected an indented block";
-        else if (err->token == INDENT)
-            msg = "unexpected indent";
-        else if (err->token == DEDENT)
-            msg = "unexpected unindent";
-        else {
-            errtype = PyExc_SyntaxError;
-            msg = "invalid syntax";
-        }
-        break;
-    case E_TOKEN:
-        msg = "invalid token";
-        break;
-    case E_EOFS:
-        msg = "EOF while scanning triple-quoted string literal";
-        break;
-    case E_EOLS:
-        msg = "EOL while scanning string literal";
-        break;
-    case E_INTR:
-        if (!PyErr_Occurred())
-            PyErr_SetNone(PyExc_KeyboardInterrupt);
-        goto cleanup;
-    case E_NOMEM:
-        PyErr_NoMemory();
-        goto cleanup;
-    case E_EOF:
-        msg = "unexpected EOF while parsing";
-        break;
-    case E_TABSPACE:
-        errtype = PyExc_TabError;
-        msg = "inconsistent use of tabs and spaces in indentation";
-        break;
-    case E_OVERFLOW:
-        msg = "expression too long";
-        break;
-    case E_DEDENT:
-        errtype = PyExc_IndentationError;
-        msg = "unindent does not match any outer indentation level";
-        break;
-    case E_TOODEEP:
-        errtype = PyExc_IndentationError;
-        msg = "too many levels of indentation";
-        break;
-    case E_DECODE: {
-        PyObject *type, *value, *tb;
-        PyErr_Fetch(&type, &value, &tb);
-        if (value != NULL) {
-            u = PyObject_Str(value);
-            if (u != NULL) {
-                msg = PyString_AsString(u);
-            }
-        }
-        if (msg == NULL)
-            msg = "unknown decode error";
-        Py_XDECREF(type);
-        Py_XDECREF(value);
-        Py_XDECREF(tb);
-        break;
-    }
-    case E_LINECONT:
-        msg = "unexpected character after line continuation character";
-        break;
-    default:
-        fprintf(stderr, "error=%d\n", err->error);
-        msg = "unknown parsing error";
-        break;
-    }
-    v = Py_BuildValue("(ziiz)", err->filename,
-                      err->lineno, err->offset, err->text);
-    w = NULL;
-    if (v != NULL)
-        w = Py_BuildValue("(sO)", msg, v);
-    Py_XDECREF(u);
-    Py_XDECREF(v);
-    PyErr_SetObject(errtype, w);
-    Py_XDECREF(w);
-cleanup:
-    if (err->text != NULL) {
-        PyObject_FREE(err->text);
-        err->text = NULL;
-    }
-}
-
-/* Print fatal error message and abort */
-
-void
-Py_FatalError(const char *msg)
-{
-    fprintf(stderr, "Fatal Python error: %s\n", msg);
-    fflush(stderr); /* it helps in Windows debug build */
-
-#ifdef MS_WINDOWS
-    {
-        size_t len = strlen(msg);
-        WCHAR* buffer;
-        size_t i;
-
-        /* Convert the message to wchar_t. This uses a simple one-to-one
-        conversion, assuming that the this error message actually uses ASCII
-        only. If this ceases to be true, we will have to convert. */
-        buffer = alloca( (len+1) * (sizeof *buffer));
-        for( i=0; i<=len; ++i)
-            buffer[i] = msg[i];
-        OutputDebugStringW(L"Fatal Python error: ");
-        OutputDebugStringW(buffer);
-        OutputDebugStringW(L"\n");
-    }
-#ifdef _DEBUG
-    DebugBreak();
-#endif
-#endif /* MS_WINDOWS */
-    abort();
-}
-
-/* Clean up and exit */
-
-#ifdef WITH_THREAD
-#include "pythread.h"
-#endif
-
-/* Wait until threading._shutdown completes, provided
-   the threading module was imported in the first place.
-   The shutdown routine will wait until all non-daemon
-   "threading" threads have completed. */
-static void
-wait_for_thread_shutdown(void)
-{
-#ifdef WITH_THREAD
-    PyObject *result;
-    PyThreadState *tstate = PyThreadState_GET();
-    PyObject *threading = PyMapping_GetItemString(tstate->interp->modules,
-                                                  "threading");
-    if (threading == NULL) {
-        /* threading not imported */
-        PyErr_Clear();
-        return;
-    }
-    result = PyObject_CallMethod(threading, "_shutdown", "");
-    if (result == NULL)
-        PyErr_WriteUnraisable(threading);
-    else
-        Py_DECREF(result);
-    Py_DECREF(threading);
-#endif
-}
-
-#define NEXITFUNCS 32
-static void (*exitfuncs[NEXITFUNCS])(void);
-static int nexitfuncs = 0;
-
-int Py_AtExit(void (*func)(void))
-{
-    if (nexitfuncs >= NEXITFUNCS)
-        return -1;
-    exitfuncs[nexitfuncs++] = func;
-    return 0;
-}
-
-static void
-call_sys_exitfunc(void)
-{
-    PyObject *exitfunc = PySys_GetObject("exitfunc");
-
-    if (exitfunc) {
-        PyObject *res;
-        Py_INCREF(exitfunc);
-        PySys_SetObject("exitfunc", (PyObject *)NULL);
-        res = PyEval_CallObject(exitfunc, (PyObject *)NULL);
-        if (res == NULL) {
-            if (!PyErr_ExceptionMatches(PyExc_SystemExit)) {
-                PySys_WriteStderr("Error in sys.exitfunc:\n");
-            }
-            PyErr_Print();
-        }
-        Py_DECREF(exitfunc);
-    }
-
-    if (Py_FlushLine())
-        PyErr_Clear();
-}
-
-static void
-call_ll_exitfuncs(void)
-{
-    while (nexitfuncs > 0)
-        (*exitfuncs[--nexitfuncs])();
-
-    fflush(stdout);
-    fflush(stderr);
-}
-
-void
-Py_Exit(int sts)
-{
-    Py_Finalize();
-
-    exit(sts);
-}
-
-static void
-initsigs(void)
-{
-#ifdef SIGPIPE
-    PyOS_setsig(SIGPIPE, SIG_IGN);
-#endif
-#ifdef SIGXFZ
-    PyOS_setsig(SIGXFZ, SIG_IGN);
-#endif
-#ifdef SIGXFSZ
-    PyOS_setsig(SIGXFSZ, SIG_IGN);
-#endif
-    PyOS_InitInterrupts(); /* May imply initsignal() */
-}
-
-
-/*
- * The file descriptor fd is considered ``interactive'' if either
- *   a) isatty(fd) is TRUE, or
- *   b) the -i flag was given, and the filename associated with
- *      the descriptor is NULL or "<stdin>" or "???".
- */
-int
-Py_FdIsInteractive(FILE *fp, const char *filename)
-{
-    if (isatty((int)fileno(fp)))
-        return 1;
-    if (!Py_InteractiveFlag)
-        return 0;
-    return (filename == NULL) ||
-           (strcmp(filename, "<stdin>") == 0) ||
-           (strcmp(filename, "???") == 0);
-}
-
-
-#if defined(USE_STACKCHECK)
-#if defined(WIN32) && defined(_MSC_VER)
-
-/* Stack checking for Microsoft C */
-
-#include <malloc.h>
-#include <excpt.h>
-
-/*
- * Return non-zero when we run out of memory on the stack; zero otherwise.
- */
-int
-PyOS_CheckStack(void)
-{
-    __try {
-        /* alloca throws a stack overflow exception if there's
-           not enough space left on the stack */
-        alloca(PYOS_STACK_MARGIN * sizeof(void*));
-        return 0;
-    } __except (GetExceptionCode() == STATUS_STACK_OVERFLOW ?
-                    EXCEPTION_EXECUTE_HANDLER :
-            EXCEPTION_CONTINUE_SEARCH) {
-        int errcode = _resetstkoflw();
-        if (errcode == 0)
-        {
-            Py_FatalError("Could not reset the stack!");
-        }
-    }
-    return 1;
-}
-
-#endif /* WIN32 && _MSC_VER */
-
-/* Alternate implementations can be added here... */
-
-#endif /* USE_STACKCHECK */
-
-
-/* Wrappers around sigaction() or signal(). */
-
-PyOS_sighandler_t
-PyOS_getsig(int sig)
-{
-#ifdef HAVE_SIGACTION
-    struct sigaction context;
-    if (sigaction(sig, NULL, &context) == -1)
-        return SIG_ERR;
-    return context.sa_handler;
-#else
-    PyOS_sighandler_t handler;
-/* Special signal handling for the secure CRT in Visual Studio 2005 */
-#if defined(_MSC_VER) && _MSC_VER >= 1400
-    switch (sig) {
-    /* Only these signals are valid */
-    case SIGINT:
-    case SIGILL:
-    case SIGFPE:
-    case SIGSEGV:
-    case SIGTERM:
-    case SIGBREAK:
-    case SIGABRT:
-        break;
-    /* Don't call signal() with other values or it will assert */
-    default:
-        return SIG_ERR;
-    }
-#endif /* _MSC_VER && _MSC_VER >= 1400 */
-    handler = signal(sig, SIG_IGN);
-    if (handler != SIG_ERR)
-        signal(sig, handler);
-    return handler;
-#endif
-}
-
-PyOS_sighandler_t
-PyOS_setsig(int sig, PyOS_sighandler_t handler)
-{
-#ifdef HAVE_SIGACTION
-    /* Some code in Modules/signalmodule.c depends on sigaction() being
-     * used here if HAVE_SIGACTION is defined.  Fix that if this code
-     * changes to invalidate that assumption.
-     */
-    struct sigaction context, ocontext;
-    context.sa_handler = handler;
-    sigemptyset(&context.sa_mask);
-    context.sa_flags = 0;
-    if (sigaction(sig, &context, &ocontext) == -1)
-        return SIG_ERR;
-    return ocontext.sa_handler;
-#else
-    PyOS_sighandler_t oldhandler;
-    oldhandler = signal(sig, handler);
-#ifdef HAVE_SIGINTERRUPT
-    siginterrupt(sig, 1);
-#endif
-    return oldhandler;
-#endif
-}
-
-/* Deprecated C API functions still provided for binary compatiblity */
-
-#undef PyParser_SimpleParseFile
-PyAPI_FUNC(node *)
-PyParser_SimpleParseFile(FILE *fp, const char *filename, int start)
-{
-    return PyParser_SimpleParseFileFlags(fp, filename, start, 0);
-}
-
-#undef PyParser_SimpleParseString
-PyAPI_FUNC(node *)
-PyParser_SimpleParseString(const char *str, int start)
-{
-    return PyParser_SimpleParseStringFlags(str, start, 0);
-}
-
-#undef PyRun_AnyFile
-PyAPI_FUNC(int)
-PyRun_AnyFile(FILE *fp, const char *name)
-{
-    return PyRun_AnyFileExFlags(fp, name, 0, NULL);
-}
-
-#undef PyRun_AnyFileEx
-PyAPI_FUNC(int)
-PyRun_AnyFileEx(FILE *fp, const char *name, int closeit)
-{
-    return PyRun_AnyFileExFlags(fp, name, closeit, NULL);
-}
-
-#undef PyRun_AnyFileFlags
-PyAPI_FUNC(int)
-PyRun_AnyFileFlags(FILE *fp, const char *name, PyCompilerFlags *flags)
-{
-    return PyRun_AnyFileExFlags(fp, name, 0, flags);
-}
-
-#undef PyRun_File
-PyAPI_FUNC(PyObject *)
-PyRun_File(FILE *fp, const char *p, int s, PyObject *g, PyObject *l)
-{
-    return PyRun_FileExFlags(fp, p, s, g, l, 0, NULL);
-}
-
-#undef PyRun_FileEx
-PyAPI_FUNC(PyObject *)
-PyRun_FileEx(FILE *fp, const char *p, int s, PyObject *g, PyObject *l, int c)
-{
-    return PyRun_FileExFlags(fp, p, s, g, l, c, NULL);
-}
-
-#undef PyRun_FileFlags
-PyAPI_FUNC(PyObject *)
-PyRun_FileFlags(FILE *fp, const char *p, int s, PyObject *g, PyObject *l,
-                PyCompilerFlags *flags)
-{
-    return PyRun_FileExFlags(fp, p, s, g, l, 0, flags);
-}
-
-#undef PyRun_SimpleFile
-PyAPI_FUNC(int)
-PyRun_SimpleFile(FILE *f, const char *p)
-{
-    return PyRun_SimpleFileExFlags(f, p, 0, NULL);
-}
-
-#undef PyRun_SimpleFileEx
-PyAPI_FUNC(int)
-PyRun_SimpleFileEx(FILE *f, const char *p, int c)
-{
-    return PyRun_SimpleFileExFlags(f, p, c, NULL);
-}
-
-
-#undef PyRun_String
-PyAPI_FUNC(PyObject *)
-PyRun_String(const char *str, int s, PyObject *g, PyObject *l)
-{
-    return PyRun_StringFlags(str, s, g, l, NULL);
-}
-
-#undef PyRun_SimpleString
-PyAPI_FUNC(int)
-PyRun_SimpleString(const char *s)
-{
-    return PyRun_SimpleStringFlags(s, NULL);
-}
-
-#undef Py_CompileString
-PyAPI_FUNC(PyObject *)
-Py_CompileString(const char *str, const char *p, int s)
-{
-    return Py_CompileStringFlags(str, p, s, NULL);
-}
-
-#undef PyRun_InteractiveOne
-PyAPI_FUNC(int)
-PyRun_InteractiveOne(FILE *f, const char *p)
-{
-    return PyRun_InteractiveOneFlags(f, p, NULL);
-}
-
-#undef PyRun_InteractiveLoop
-PyAPI_FUNC(int)
-PyRun_InteractiveLoop(FILE *f, const char *p)
-{
-    return PyRun_InteractiveLoopFlags(f, p, NULL);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/sigcheck.c b/AppPkg/Applications/Python/Python-2.7.2/Python/sigcheck.c
deleted file mode 100644
index 730cd2e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/sigcheck.c
+++ /dev/null
@@ -1,19 +0,0 @@
-
-/* Sigcheck is similar to intrcheck() but sets an exception when an
-   interrupt occurs.  It can't be in the intrcheck.c file since that
-   file (and the whole directory it is in) doesn't know about objects
-   or exceptions.  It can't be in errors.c because it can be
-   overridden (at link time) by a more powerful version implemented in
-   signalmodule.c. */
-
-#include "Python.h"
-
-/* ARGSUSED */
-int
-PyErr_CheckSignals(void)
-{
-	if (!PyOS_InterruptOccurred())
-		return 0;
-	PyErr_SetNone(PyExc_KeyboardInterrupt);
-	return -1;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/strdup.c b/AppPkg/Applications/Python/Python-2.7.2/Python/strdup.c
deleted file mode 100644
index deef534..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/strdup.c
+++ /dev/null
@@ -1,14 +0,0 @@
-/* strdup() replacement (from stdwin, if you must know) */
-
-#include "pgenheaders.h"
-
-char *
-strdup(const char *str)
-{
-	if (str != NULL) {
-		register char *copy = malloc(strlen(str) + 1);
-		if (copy != NULL)
-			return strcpy(copy, str);
-	}
-	return NULL;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/strtod.c b/AppPkg/Applications/Python/Python-2.7.2/Python/strtod.c
deleted file mode 100644
index 1cdce8f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/strtod.c
+++ /dev/null
@@ -1,159 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-
-#include "pyconfig.h"
-
-/* comp.sources.misc strtod(), as posted in comp.lang.tcl,
-   with bugfix for "123000.0" and acceptance of space after 'e' sign nuked.
-
-   ************************************************************
-   * YOU MUST EDIT THE MACHINE-DEPENDENT DEFINITIONS BELOW!!! *
-   ************************************************************
-*/
-
-/*  File   : stdtod.c (Modified version of str2dbl.c)
-    Author : Richard A. O'Keefe @ Quintus Computer Systems, Inc.
-    Updated: Tuesday August 2nd, 1988
-    Defines: double strtod (char *str, char**ptr)
-*/
-
-/*  This is an implementation of the strtod() function described in the
-    System V manuals, with a different name to avoid linker problems.
-    All that str2dbl() does itself is check that the argument is well-formed
-    and is in range.  It leaves the work of conversion to atof(), which is
-    assumed to exist and deliver correct results (if they can be represented).
-
-    There are two reasons why this should be provided to the net:
-    (a) some UNIX systems do not yet have strtod(), or do not have it
-    available in the BSD "universe" (but they do have atof()).
-    (b) some of the UNIX systems that *do* have it get it wrong.
-    (some crash with large arguments, some assign the wrong *ptr value).
-    There is a reason why *we* are providing it: we need a correct version
-    of strtod(), and if we give this one away maybe someone will look for
-    mistakes in it and fix them for us (:-).
-*/
-
-/*  The following constants are machine-specific.  MD{MIN,MAX}EXPT are
-    integers and MD{MIN,MAX}FRAC are strings such that
-    0.${MDMAXFRAC}e${MDMAXEXPT} is the largest representable double,
-    0.${MDMINFRAC}e${MDMINEXPT} is the smallest representable +ve double
-    MD{MIN,MAX}FRAC must not have any trailing zeros.
-    The values here are for IEEE-754 64-bit floats.
-    It is not perfectly clear to me whether an IEEE infinity should be
-    returned for overflow, nor what a portable way of writing one is,
-    so HUGE is just 0.MAXFRAC*10**MAXEXPT (this seems still to be the
-    UNIX convention).
-
-    I do know about <values.h>, but the whole point of this file is that
-    we can't always trust that stuff to be there or to be correct.
-*/
-static  int     MDMINEXPT       = -323;
-static  char    MDMINFRAC[]     = "494065645841246544";
-static  double  ZERO            = 0.0;
-
-static  int     MDMAXEXPT       = 309;
-static  char    MDMAXFRAC[]     = "17976931348623157";
-static  double  HUGE            = 1.7976931348623157e308;
-
-extern  double  atof(const char *);             /* Only called when result known to be ok */
-
-#ifdef HAVE_ERRNO_H
-#include <errno.h>
-#endif
-extern  int     errno;
-
-double strtod(char *str, char **ptr)
-{
-    int sign, scale, dotseen;
-    int esign, expt;
-    char *save;
-    register char *sp, *dp;
-    register int c;
-    char *buforg, *buflim;
-    char buffer[64];                    /* 45-digit significant + */
-                    /* 13-digit exponent */
-    sp = str;
-    while (*sp == ' ') sp++;
-    sign = 1;
-    if (*sp == '-') sign -= 2, sp++;
-    dotseen = 0, scale = 0;
-    dp = buffer;
-    *dp++ = '0'; *dp++ = '.';
-    buforg = dp, buflim = buffer+48;
-    for (save = sp; (c = *sp); sp++)
-        if (c == '.') {
-        if (dotseen) break;
-        dotseen++;
-        } else
-        if ((unsigned)(c-'0') > (unsigned)('9'-'0')) {
-        break;
-        } else
-        if (c == '0') {
-        if (dp != buforg) {
-            /* This is not the first digit, so we want to keep it */
-            if (dp < buflim) *dp++ = c;
-            if (!dotseen) scale++;
-        } else {
-            /* No non-zero digits seen yet */
-            /* If a . has been seen, scale must be adjusted */
-            if (dotseen) scale--;
-        }
-        } else {
-        /* This is a nonzero digit, so we want to keep it */
-        if (dp < buflim) *dp++ = c;
-        /* If it precedes a ., scale must be adjusted */
-        if (!dotseen) scale++;
-        }
-    if (sp == save) {
-        if (ptr) *ptr = str;
-        errno = EDOM;                   /* what should this be? */
-        return ZERO;
-    }
-
-    while (dp > buforg && dp[-1] == '0') --dp;
-    if (dp == buforg) *dp++ = '0';
-    *dp = '\0';
-    /*  Now the contents of buffer are
-        +--+--------+-+--------+
-        |0.|fraction|\|leftover|
-        +--+--------+-+--------+
-                     ^dp points here
-        where fraction begins with 0 iff it is "0", and has at most
-        45 digits in it, and leftover is at least 16 characters.
-    */
-    save = sp, expt = 0, esign = 1;
-    do {
-        c = *sp++;
-        if (c != 'e' && c != 'E') break;
-        c = *sp++;
-        if (c == '-') esign -= 2, c = *sp++; else
-        if (c == '+' /* || c == ' ' */ ) c = *sp++;
-        if ((unsigned)(c-'0') > (unsigned)('9'-'0')) break;
-        while (c == '0') c = *sp++;
-        for (; (unsigned)(c-'0') <= (unsigned)('9'-'0'); c = *sp++)
-        expt = expt*10 + c-'0';
-        if (esign < 0) expt = -expt;
-        save = sp-1;
-    } while (0);
-    if (ptr) *ptr = save;
-    expt += scale;
-    /*  Now the number is sign*0.fraction*10**expt  */
-    errno = ERANGE;
-    if (expt > MDMAXEXPT) {
-        return HUGE*sign;
-    } else
-    if (expt == MDMAXEXPT) {
-        if (strcmp(buforg, MDMAXFRAC) > 0) return HUGE*sign;
-    } else
-    if (expt < MDMINEXPT) {
-        return ZERO*sign;
-    } else
-    if (expt == MDMINEXPT) {
-        if (strcmp(buforg, MDMINFRAC) < 0) return ZERO*sign;
-    }
-    /*  We have now established that the number can be  */
-    /*  represented without overflow or underflow  */
-    (void) sprintf(dp, "E%d", expt);
-    errno = 0;
-    return atof(buffer)*sign;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/structmember.c b/AppPkg/Applications/Python/Python-2.7.2/Python/structmember.c
deleted file mode 100644
index ce018c7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/structmember.c
+++ /dev/null
@@ -1,363 +0,0 @@
-
-/* Map C struct members to Python object attributes */
-
-#include "Python.h"
-
-#include "structmember.h"
-
-static PyObject *
-listmembers(struct memberlist *mlist)
-{
-    int i, n;
-    PyObject *v;
-    for (n = 0; mlist[n].name != NULL; n++)
-        ;
-    v = PyList_New(n);
-    if (v != NULL) {
-        for (i = 0; i < n; i++)
-            PyList_SetItem(v, i,
-                           PyString_FromString(mlist[i].name));
-        if (PyErr_Occurred()) {
-            Py_DECREF(v);
-            v = NULL;
-        }
-        else {
-            PyList_Sort(v);
-        }
-    }
-    return v;
-}
-
-PyObject *
-PyMember_Get(const char *addr, struct memberlist *mlist, const char *name)
-{
-    struct memberlist *l;
-
-    if (strcmp(name, "__members__") == 0)
-        return listmembers(mlist);
-    for (l = mlist; l->name != NULL; l++) {
-        if (strcmp(l->name, name) == 0) {
-            PyMemberDef copy;
-            copy.name = l->name;
-            copy.type = l->type;
-            copy.offset = l->offset;
-            copy.flags = l->flags;
-            copy.doc = NULL;
-            return PyMember_GetOne(addr, &copy);
-        }
-    }
-    PyErr_SetString(PyExc_AttributeError, name);
-    return NULL;
-}
-
-PyObject *
-PyMember_GetOne(const char *addr, PyMemberDef *l)
-{
-    PyObject *v;
-    if ((l->flags & READ_RESTRICTED) &&
-        PyEval_GetRestricted()) {
-        PyErr_SetString(PyExc_RuntimeError, "restricted attribute");
-        return NULL;
-    }
-    addr += l->offset;
-    switch (l->type) {
-    case T_BOOL:
-        v = PyBool_FromLong(*(char*)addr);
-        break;
-    case T_BYTE:
-        v = PyInt_FromLong(*(char*)addr);
-        break;
-    case T_UBYTE:
-        v = PyLong_FromUnsignedLong(*(unsigned char*)addr);
-        break;
-    case T_SHORT:
-        v = PyInt_FromLong(*(short*)addr);
-        break;
-    case T_USHORT:
-        v = PyLong_FromUnsignedLong(*(unsigned short*)addr);
-        break;
-    case T_INT:
-        v = PyInt_FromLong(*(int*)addr);
-        break;
-    case T_UINT:
-        v = PyLong_FromUnsignedLong(*(unsigned int*)addr);
-        break;
-    case T_LONG:
-        v = PyInt_FromLong(*(long*)addr);
-        break;
-    case T_ULONG:
-        v = PyLong_FromUnsignedLong(*(unsigned long*)addr);
-        break;
-    case T_PYSSIZET:
-        v = PyInt_FromSsize_t(*(Py_ssize_t*)addr);
-        break;
-    case T_FLOAT:
-        v = PyFloat_FromDouble((double)*(float*)addr);
-        break;
-    case T_DOUBLE:
-        v = PyFloat_FromDouble(*(double*)addr);
-        break;
-    case T_STRING:
-        if (*(char**)addr == NULL) {
-            Py_INCREF(Py_None);
-            v = Py_None;
-        }
-        else
-            v = PyString_FromString(*(char**)addr);
-        break;
-    case T_STRING_INPLACE:
-        v = PyString_FromString((char*)addr);
-        break;
-    case T_CHAR:
-        v = PyString_FromStringAndSize((char*)addr, 1);
-        break;
-    case T_OBJECT:
-        v = *(PyObject **)addr;
-        if (v == NULL)
-            v = Py_None;
-        Py_INCREF(v);
-        break;
-    case T_OBJECT_EX:
-        v = *(PyObject **)addr;
-        if (v == NULL)
-            PyErr_SetString(PyExc_AttributeError, l->name);
-        Py_XINCREF(v);
-        break;
-#ifdef HAVE_LONG_LONG
-    case T_LONGLONG:
-        v = PyLong_FromLongLong(*(PY_LONG_LONG *)addr);
-        break;
-    case T_ULONGLONG:
-        v = PyLong_FromUnsignedLongLong(*(unsigned PY_LONG_LONG *)addr);
-        break;
-#endif /* HAVE_LONG_LONG */
-    default:
-        PyErr_SetString(PyExc_SystemError, "bad memberdescr type");
-        v = NULL;
-    }
-    return v;
-}
-
-int
-PyMember_Set(char *addr, struct memberlist *mlist, const char *name, PyObject *v)
-{
-    struct memberlist *l;
-
-    for (l = mlist; l->name != NULL; l++) {
-        if (strcmp(l->name, name) == 0) {
-            PyMemberDef copy;
-            copy.name = l->name;
-            copy.type = l->type;
-            copy.offset = l->offset;
-            copy.flags = l->flags;
-            copy.doc = NULL;
-            return PyMember_SetOne(addr, &copy, v);
-        }
-    }
-
-    PyErr_SetString(PyExc_AttributeError, name);
-    return -1;
-}
-
-#define WARN(msg)                                       \
-    do {                                                \
-    if (PyErr_Warn(PyExc_RuntimeWarning, msg) < 0)      \
-        return -1;                                      \
-    } while (0)
-
-int
-PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v)
-{
-    PyObject *oldv;
-
-    addr += l->offset;
-
-    if ((l->flags & READONLY))
-    {
-        PyErr_SetString(PyExc_TypeError, "readonly attribute");
-        return -1;
-    }
-    if ((l->flags & PY_WRITE_RESTRICTED) && PyEval_GetRestricted()) {
-        PyErr_SetString(PyExc_RuntimeError, "restricted attribute");
-        return -1;
-    }
-    if (v == NULL) {
-        if (l->type == T_OBJECT_EX) {
-            /* Check if the attribute is set. */
-            if (*(PyObject **)addr == NULL) {
-                PyErr_SetString(PyExc_AttributeError, l->name);
-                return -1;
-            }
-        }
-        else if (l->type != T_OBJECT) {
-            PyErr_SetString(PyExc_TypeError,
-                            "can't delete numeric/char attribute");
-            return -1;
-        }
-    }
-    switch (l->type) {
-    case T_BOOL:{
-        if (!PyBool_Check(v)) {
-            PyErr_SetString(PyExc_TypeError,
-                            "attribute value type must be bool");
-            return -1;
-        }
-        if (v == Py_True)
-            *(char*)addr = (char) 1;
-        else
-            *(char*)addr = (char) 0;
-        break;
-        }
-    case T_BYTE:{
-        long long_val = PyInt_AsLong(v);
-        if ((long_val == -1) && PyErr_Occurred())
-            return -1;
-        *(char*)addr = (char)long_val;
-        /* XXX: For compatibility, only warn about truncations
-           for now. */
-        if ((long_val > CHAR_MAX) || (long_val < CHAR_MIN))
-            WARN("Truncation of value to char");
-        break;
-        }
-    case T_UBYTE:{
-        long long_val = PyInt_AsLong(v);
-        if ((long_val == -1) && PyErr_Occurred())
-            return -1;
-        *(unsigned char*)addr = (unsigned char)long_val;
-        if ((long_val > UCHAR_MAX) || (long_val < 0))
-            WARN("Truncation of value to unsigned char");
-        break;
-        }
-    case T_SHORT:{
-        long long_val = PyInt_AsLong(v);
-        if ((long_val == -1) && PyErr_Occurred())
-            return -1;
-        *(short*)addr = (short)long_val;
-        if ((long_val > SHRT_MAX) || (long_val < SHRT_MIN))
-            WARN("Truncation of value to short");
-        break;
-        }
-    case T_USHORT:{
-        long long_val = PyInt_AsLong(v);
-        if ((long_val == -1) && PyErr_Occurred())
-            return -1;
-        *(unsigned short*)addr = (unsigned short)long_val;
-        if ((long_val > USHRT_MAX) || (long_val < 0))
-            WARN("Truncation of value to unsigned short");
-        break;
-        }
-    case T_INT:{
-        long long_val = PyInt_AsLong(v);
-        if ((long_val == -1) && PyErr_Occurred())
-            return -1;
-        *(int *)addr = (int)long_val;
-        if ((long_val > INT_MAX) || (long_val < INT_MIN))
-            WARN("Truncation of value to int");
-        break;
-        }
-    case T_UINT:{
-        unsigned long ulong_val = PyLong_AsUnsignedLong(v);
-        if ((ulong_val == (unsigned long)-1) && PyErr_Occurred()) {
-            /* XXX: For compatibility, accept negative int values
-               as well. */
-            PyErr_Clear();
-            ulong_val = PyLong_AsLong(v);
-            if ((ulong_val == (unsigned long)-1) &&
-                PyErr_Occurred())
-                return -1;
-            *(unsigned int *)addr = (unsigned int)ulong_val;
-            WARN("Writing negative value into unsigned field");
-        } else
-            *(unsigned int *)addr = (unsigned int)ulong_val;
-        if (ulong_val > UINT_MAX)
-            WARN("Truncation of value to unsigned int");
-        break;
-        }
-    case T_LONG:{
-        *(long*)addr = PyLong_AsLong(v);
-        if ((*(long*)addr == -1) && PyErr_Occurred())
-            return -1;
-        break;
-        }
-    case T_ULONG:{
-        *(unsigned long*)addr = PyLong_AsUnsignedLong(v);
-        if ((*(unsigned long*)addr == (unsigned long)-1)
-            && PyErr_Occurred()) {
-            /* XXX: For compatibility, accept negative int values
-               as well. */
-            PyErr_Clear();
-            *(unsigned long*)addr = PyLong_AsLong(v);
-            if ((*(unsigned long*)addr == (unsigned long)-1)
-                && PyErr_Occurred())
-                return -1;
-            WARN("Writing negative value into unsigned field");
-        }
-        break;
-        }
-    case T_PYSSIZET:{
-        *(Py_ssize_t*)addr = PyInt_AsSsize_t(v);
-        if ((*(Py_ssize_t*)addr == (Py_ssize_t)-1)
-            && PyErr_Occurred())
-                        return -1;
-        break;
-        }
-    case T_FLOAT:{
-        double double_val = PyFloat_AsDouble(v);
-        if ((double_val == -1) && PyErr_Occurred())
-            return -1;
-        *(float*)addr = (float)double_val;
-        break;
-        }
-    case T_DOUBLE:
-        *(double*)addr = PyFloat_AsDouble(v);
-        if ((*(double*)addr == -1) && PyErr_Occurred())
-            return -1;
-        break;
-    case T_OBJECT:
-    case T_OBJECT_EX:
-        Py_XINCREF(v);
-        oldv = *(PyObject **)addr;
-        *(PyObject **)addr = v;
-        Py_XDECREF(oldv);
-        break;
-    case T_CHAR:
-        if (PyString_Check(v) && PyString_Size(v) == 1) {
-            *(char*)addr = PyString_AsString(v)[0];
-        }
-        else {
-            PyErr_BadArgument();
-            return -1;
-        }
-        break;
-    case T_STRING:
-    case T_STRING_INPLACE:
-        PyErr_SetString(PyExc_TypeError, "readonly attribute");
-        return -1;
-#ifdef HAVE_LONG_LONG
-    case T_LONGLONG:{
-        PY_LONG_LONG value;
-        *(PY_LONG_LONG*)addr = value = PyLong_AsLongLong(v);
-        if ((value == -1) && PyErr_Occurred())
-            return -1;
-        break;
-        }
-    case T_ULONGLONG:{
-        unsigned PY_LONG_LONG value;
-        /* ??? PyLong_AsLongLong accepts an int, but PyLong_AsUnsignedLongLong
-            doesn't ??? */
-        if (PyLong_Check(v))
-            *(unsigned PY_LONG_LONG*)addr = value = PyLong_AsUnsignedLongLong(v);
-        else
-            *(unsigned PY_LONG_LONG*)addr = value = PyInt_AsLong(v);
-        if ((value == (unsigned PY_LONG_LONG)-1) && PyErr_Occurred())
-            return -1;
-        break;
-        }
-#endif /* HAVE_LONG_LONG */
-    default:
-        PyErr_Format(PyExc_SystemError,
-                     "bad memberdescr type for %s", l->name);
-        return -1;
-    }
-    return 0;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/symtable.c b/AppPkg/Applications/Python/Python-2.7.2/Python/symtable.c
deleted file mode 100644
index ac80977..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/symtable.c
+++ /dev/null
@@ -1,1554 +0,0 @@
-#include "Python.h"
-#include "Python-ast.h"
-#include "code.h"
-#include "symtable.h"
-#include "structmember.h"
-
-/* error strings used for warnings */
-#define GLOBAL_AFTER_ASSIGN \
-"name '%.400s' is assigned to before global declaration"
-
-#define GLOBAL_AFTER_USE \
-"name '%.400s' is used prior to global declaration"
-
-#define IMPORT_STAR_WARNING "import * only allowed at module level"
-
-#define RETURN_VAL_IN_GENERATOR \
-    "'return' with argument inside generator"
-
-
-static PySTEntryObject *
-ste_new(struct symtable *st, identifier name, _Py_block_ty block,
-              void *key, int lineno)
-{
-    PySTEntryObject *ste = NULL;
-    PyObject *k;
-
-    k = PyLong_FromVoidPtr(key);
-    if (k == NULL)
-        goto fail;
-    ste = PyObject_New(PySTEntryObject, &PySTEntry_Type);
-    if (ste == NULL)
-        goto fail;
-    ste->ste_table = st;
-    ste->ste_id = k;
-
-    ste->ste_name = name;
-    Py_INCREF(name);
-
-    ste->ste_symbols = NULL;
-    ste->ste_varnames = NULL;
-    ste->ste_children = NULL;
-
-    ste->ste_symbols = PyDict_New();
-    if (ste->ste_symbols == NULL)
-        goto fail;
-
-    ste->ste_varnames = PyList_New(0);
-    if (ste->ste_varnames == NULL)
-        goto fail;
-
-    ste->ste_children = PyList_New(0);
-    if (ste->ste_children == NULL)
-        goto fail;
-
-    ste->ste_type = block;
-    ste->ste_unoptimized = 0;
-    ste->ste_nested = 0;
-    ste->ste_free = 0;
-    ste->ste_varargs = 0;
-    ste->ste_varkeywords = 0;
-    ste->ste_opt_lineno = 0;
-    ste->ste_tmpname = 0;
-    ste->ste_lineno = lineno;
-
-    if (st->st_cur != NULL &&
-        (st->st_cur->ste_nested ||
-         st->st_cur->ste_type == FunctionBlock))
-        ste->ste_nested = 1;
-    ste->ste_child_free = 0;
-    ste->ste_generator = 0;
-    ste->ste_returns_value = 0;
-
-    if (PyDict_SetItem(st->st_symbols, ste->ste_id, (PyObject *)ste) < 0)
-        goto fail;
-
-    return ste;
- fail:
-    Py_XDECREF(ste);
-    return NULL;
-}
-
-static PyObject *
-ste_repr(PySTEntryObject *ste)
-{
-    char buf[256];
-
-    PyOS_snprintf(buf, sizeof(buf),
-                  "<symtable entry %.100s(%ld), line %d>",
-                  PyString_AS_STRING(ste->ste_name),
-                  PyInt_AS_LONG(ste->ste_id), ste->ste_lineno);
-    return PyString_FromString(buf);
-}
-
-static void
-ste_dealloc(PySTEntryObject *ste)
-{
-    ste->ste_table = NULL;
-    Py_XDECREF(ste->ste_id);
-    Py_XDECREF(ste->ste_name);
-    Py_XDECREF(ste->ste_symbols);
-    Py_XDECREF(ste->ste_varnames);
-    Py_XDECREF(ste->ste_children);
-    PyObject_Del(ste);
-}
-
-#define OFF(x) offsetof(PySTEntryObject, x)
-
-static PyMemberDef ste_memberlist[] = {
-    {"id",       T_OBJECT, OFF(ste_id), READONLY},
-    {"name",     T_OBJECT, OFF(ste_name), READONLY},
-    {"symbols",  T_OBJECT, OFF(ste_symbols), READONLY},
-    {"varnames", T_OBJECT, OFF(ste_varnames), READONLY},
-    {"children", T_OBJECT, OFF(ste_children), READONLY},
-    {"optimized",T_INT,    OFF(ste_unoptimized), READONLY},
-    {"nested",   T_INT,    OFF(ste_nested), READONLY},
-    {"type",     T_INT,    OFF(ste_type), READONLY},
-    {"lineno",   T_INT,    OFF(ste_lineno), READONLY},
-    {NULL}
-};
-
-PyTypeObject PySTEntry_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "symtable entry",
-    sizeof(PySTEntryObject),
-    0,
-    (destructor)ste_dealloc,                /* tp_dealloc */
-    0,                                      /* tp_print */
-    0,                                         /* tp_getattr */
-    0,                                          /* tp_setattr */
-    0,                                          /* tp_compare */
-    (reprfunc)ste_repr,                         /* tp_repr */
-    0,                                          /* tp_as_number */
-    0,                                          /* tp_as_sequence */
-    0,                                          /* tp_as_mapping */
-    0,                                          /* tp_hash */
-    0,                                          /* tp_call */
-    0,                                          /* tp_str */
-    PyObject_GenericGetAttr,                    /* tp_getattro */
-    0,                                          /* tp_setattro */
-    0,                                          /* tp_as_buffer */
-    Py_TPFLAGS_DEFAULT,                         /* tp_flags */
-    0,                                          /* tp_doc */
-    0,                                          /* tp_traverse */
-    0,                                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    ste_memberlist,                             /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-    0,                                          /* tp_descr_get */
-    0,                                          /* tp_descr_set */
-    0,                                          /* tp_dictoffset */
-    0,                                          /* tp_init */
-    0,                                          /* tp_alloc */
-    0,                                          /* tp_new */
-};
-
-static int symtable_analyze(struct symtable *st);
-static int symtable_warn(struct symtable *st, char *msg, int lineno);
-static int symtable_enter_block(struct symtable *st, identifier name,
-                                _Py_block_ty block, void *ast, int lineno);
-static int symtable_exit_block(struct symtable *st, void *ast);
-static int symtable_visit_stmt(struct symtable *st, stmt_ty s);
-static int symtable_visit_expr(struct symtable *st, expr_ty s);
-static int symtable_visit_genexp(struct symtable *st, expr_ty s);
-static int symtable_visit_setcomp(struct symtable *st, expr_ty e);
-static int symtable_visit_dictcomp(struct symtable *st, expr_ty e);
-static int symtable_visit_arguments(struct symtable *st, arguments_ty);
-static int symtable_visit_excepthandler(struct symtable *st, excepthandler_ty);
-static int symtable_visit_alias(struct symtable *st, alias_ty);
-static int symtable_visit_comprehension(struct symtable *st, comprehension_ty);
-static int symtable_visit_keyword(struct symtable *st, keyword_ty);
-static int symtable_visit_slice(struct symtable *st, slice_ty);
-static int symtable_visit_params(struct symtable *st, asdl_seq *args, int top);
-static int symtable_visit_params_nested(struct symtable *st, asdl_seq *args);
-static int symtable_implicit_arg(struct symtable *st, int pos);
-
-
-static identifier top = NULL, lambda = NULL, genexpr = NULL, setcomp = NULL,
-    dictcomp = NULL;
-
-#define GET_IDENTIFIER(VAR) \
-    ((VAR) ? (VAR) : ((VAR) = PyString_InternFromString(# VAR)))
-
-#define DUPLICATE_ARGUMENT \
-"duplicate argument '%s' in function definition"
-
-static struct symtable *
-symtable_new(void)
-{
-    struct symtable *st;
-
-    st = (struct symtable *)PyMem_Malloc(sizeof(struct symtable));
-    if (st == NULL)
-        return NULL;
-
-    st->st_filename = NULL;
-    st->st_symbols = NULL;
-
-    if ((st->st_stack = PyList_New(0)) == NULL)
-        goto fail;
-    if ((st->st_symbols = PyDict_New()) == NULL)
-        goto fail;
-    st->st_cur = NULL;
-    st->st_private = NULL;
-    return st;
- fail:
-    PySymtable_Free(st);
-    return NULL;
-}
-
-struct symtable *
-PySymtable_Build(mod_ty mod, const char *filename, PyFutureFeatures *future)
-{
-    struct symtable *st = symtable_new();
-    asdl_seq *seq;
-    int i;
-
-    if (st == NULL)
-        return st;
-    st->st_filename = filename;
-    st->st_future = future;
-    if (!GET_IDENTIFIER(top) ||
-        !symtable_enter_block(st, top, ModuleBlock, (void *)mod, 0)) {
-        PySymtable_Free(st);
-        return NULL;
-    }
-
-    st->st_top = st->st_cur;
-    st->st_cur->ste_unoptimized = OPT_TOPLEVEL;
-    /* Any other top-level initialization? */
-    switch (mod->kind) {
-    case Module_kind:
-        seq = mod->v.Module.body;
-        for (i = 0; i < asdl_seq_LEN(seq); i++)
-            if (!symtable_visit_stmt(st,
-                        (stmt_ty)asdl_seq_GET(seq, i)))
-                goto error;
-        break;
-    case Expression_kind:
-        if (!symtable_visit_expr(st, mod->v.Expression.body))
-            goto error;
-        break;
-    case Interactive_kind:
-        seq = mod->v.Interactive.body;
-        for (i = 0; i < asdl_seq_LEN(seq); i++)
-            if (!symtable_visit_stmt(st,
-                        (stmt_ty)asdl_seq_GET(seq, i)))
-                goto error;
-        break;
-    case Suite_kind:
-        PyErr_SetString(PyExc_RuntimeError,
-                        "this compiler does not handle Suites");
-        goto error;
-    }
-    if (!symtable_exit_block(st, (void *)mod)) {
-        PySymtable_Free(st);
-        return NULL;
-    }
-    if (symtable_analyze(st))
-        return st;
-    PySymtable_Free(st);
-    return NULL;
- error:
-    (void) symtable_exit_block(st, (void *)mod);
-    PySymtable_Free(st);
-    return NULL;
-}
-
-void
-PySymtable_Free(struct symtable *st)
-{
-    Py_XDECREF(st->st_symbols);
-    Py_XDECREF(st->st_stack);
-    PyMem_Free((void *)st);
-}
-
-PySTEntryObject *
-PySymtable_Lookup(struct symtable *st, void *key)
-{
-    PyObject *k, *v;
-
-    k = PyLong_FromVoidPtr(key);
-    if (k == NULL)
-        return NULL;
-    v = PyDict_GetItem(st->st_symbols, k);
-    if (v) {
-        assert(PySTEntry_Check(v));
-        Py_INCREF(v);
-    }
-    else {
-        PyErr_SetString(PyExc_KeyError,
-                        "unknown symbol table entry");
-    }
-
-    Py_DECREF(k);
-    return (PySTEntryObject *)v;
-}
-
-int
-PyST_GetScope(PySTEntryObject *ste, PyObject *name)
-{
-    PyObject *v = PyDict_GetItem(ste->ste_symbols, name);
-    if (!v)
-        return 0;
-    assert(PyInt_Check(v));
-    return (PyInt_AS_LONG(v) >> SCOPE_OFF) & SCOPE_MASK;
-}
-
-
-/* Analyze raw symbol information to determine scope of each name.
-
-   The next several functions are helpers for PySymtable_Analyze(),
-   which determines whether a name is local, global, or free.  In addition,
-   it determines which local variables are cell variables; they provide
-   bindings that are used for free variables in enclosed blocks.
-
-   There are also two kinds of free variables, implicit and explicit.  An
-   explicit global is declared with the global statement.  An implicit
-   global is a free variable for which the compiler has found no binding
-   in an enclosing function scope.  The implicit global is either a global
-   or a builtin.  Python's module and class blocks use the xxx_NAME opcodes
-   to handle these names to implement slightly odd semantics.  In such a
-   block, the name is treated as global until it is assigned to; then it
-   is treated as a local.
-
-   The symbol table requires two passes to determine the scope of each name.
-   The first pass collects raw facts from the AST: the name is a parameter
-   here, the name is used by not defined here, etc.  The second pass analyzes
-   these facts during a pass over the PySTEntryObjects created during pass 1.
-
-   When a function is entered during the second pass, the parent passes
-   the set of all name bindings visible to its children.  These bindings
-   are used to determine if the variable is free or an implicit global.
-   After doing the local analysis, it analyzes each of its child blocks
-   using an updated set of name bindings.
-
-   The children update the free variable set.  If a local variable is free
-   in a child, the variable is marked as a cell.  The current function must
-   provide runtime storage for the variable that may outlive the function's
-   frame.  Cell variables are removed from the free set before the analyze
-   function returns to its parent.
-
-   The sets of bound and free variables are implemented as dictionaries
-   mapping strings to None.
-*/
-
-#define SET_SCOPE(DICT, NAME, I) { \
-    PyObject *o = PyInt_FromLong(I); \
-    if (!o) \
-        return 0; \
-    if (PyDict_SetItem((DICT), (NAME), o) < 0) { \
-        Py_DECREF(o); \
-        return 0; \
-    } \
-    Py_DECREF(o); \
-}
-
-/* Decide on scope of name, given flags.
-
-   The namespace dictionaries may be modified to record information
-   about the new name.  For example, a new global will add an entry to
-   global.  A name that was global can be changed to local.
-*/
-
-static int
-analyze_name(PySTEntryObject *ste, PyObject *dict, PyObject *name, long flags,
-             PyObject *bound, PyObject *local, PyObject *free,
-             PyObject *global)
-{
-    if (flags & DEF_GLOBAL) {
-        if (flags & DEF_PARAM) {
-            PyErr_Format(PyExc_SyntaxError,
-                         "name '%s' is local and global",
-                         PyString_AS_STRING(name));
-            PyErr_SyntaxLocation(ste->ste_table->st_filename,
-                                 ste->ste_lineno);
-
-            return 0;
-        }
-        SET_SCOPE(dict, name, GLOBAL_EXPLICIT);
-        if (PyDict_SetItem(global, name, Py_None) < 0)
-            return 0;
-        if (bound && PyDict_GetItem(bound, name)) {
-            if (PyDict_DelItem(bound, name) < 0)
-                return 0;
-        }
-        return 1;
-    }
-    if (flags & DEF_BOUND) {
-        SET_SCOPE(dict, name, LOCAL);
-        if (PyDict_SetItem(local, name, Py_None) < 0)
-            return 0;
-        if (PyDict_GetItem(global, name)) {
-            if (PyDict_DelItem(global, name) < 0)
-                return 0;
-        }
-        return 1;
-    }
-    /* If an enclosing block has a binding for this name, it
-       is a free variable rather than a global variable.
-       Note that having a non-NULL bound implies that the block
-       is nested.
-    */
-    if (bound && PyDict_GetItem(bound, name)) {
-        SET_SCOPE(dict, name, FREE);
-        ste->ste_free = 1;
-        if (PyDict_SetItem(free, name, Py_None) < 0)
-            return 0;
-        return 1;
-    }
-    /* If a parent has a global statement, then call it global
-       explicit?  It could also be global implicit.
-     */
-    else if (global && PyDict_GetItem(global, name)) {
-        SET_SCOPE(dict, name, GLOBAL_IMPLICIT);
-        return 1;
-    }
-    else {
-        if (ste->ste_nested)
-            ste->ste_free = 1;
-        SET_SCOPE(dict, name, GLOBAL_IMPLICIT);
-        return 1;
-    }
-    /* Should never get here. */
-    PyErr_Format(PyExc_SystemError, "failed to set scope for %s",
-                 PyString_AS_STRING(name));
-    return 0;
-}
-
-#undef SET_SCOPE
-
-/* If a name is defined in free and also in locals, then this block
-   provides the binding for the free variable.  The name should be
-   marked CELL in this block and removed from the free list.
-
-   Note that the current block's free variables are included in free.
-   That's safe because no name can be free and local in the same scope.
-*/
-
-static int
-analyze_cells(PyObject *scope, PyObject *free)
-{
-    PyObject *name, *v, *w;
-    int success = 0;
-    Py_ssize_t pos = 0;
-
-    w = PyInt_FromLong(CELL);
-    if (!w)
-        return 0;
-    while (PyDict_Next(scope, &pos, &name, &v)) {
-        long flags;
-        assert(PyInt_Check(v));
-        flags = PyInt_AS_LONG(v);
-        if (flags != LOCAL)
-            continue;
-        if (!PyDict_GetItem(free, name))
-            continue;
-        /* Replace LOCAL with CELL for this name, and remove
-           from free. It is safe to replace the value of name
-           in the dict, because it will not cause a resize.
-         */
-        if (PyDict_SetItem(scope, name, w) < 0)
-            goto error;
-        if (!PyDict_DelItem(free, name) < 0)
-            goto error;
-    }
-    success = 1;
- error:
-    Py_DECREF(w);
-    return success;
-}
-
-/* Check for illegal statements in unoptimized namespaces */
-static int
-check_unoptimized(const PySTEntryObject* ste) {
-    char buf[300];
-    const char* trailer;
-
-    if (ste->ste_type != FunctionBlock || !ste->ste_unoptimized
-        || !(ste->ste_free || ste->ste_child_free))
-        return 1;
-
-    trailer = (ste->ste_child_free ?
-                   "contains a nested function with free variables" :
-                   "is a nested function");
-
-    switch (ste->ste_unoptimized) {
-    case OPT_TOPLEVEL: /* exec / import * at top-level is fine */
-    case OPT_EXEC: /* qualified exec is fine */
-        return 1;
-    case OPT_IMPORT_STAR:
-        PyOS_snprintf(buf, sizeof(buf),
-                      "import * is not allowed in function '%.100s' "
-                      "because it %s",
-                      PyString_AS_STRING(ste->ste_name), trailer);
-        break;
-    case OPT_BARE_EXEC:
-        PyOS_snprintf(buf, sizeof(buf),
-                      "unqualified exec is not allowed in function "
-                      "'%.100s' it %s",
-                      PyString_AS_STRING(ste->ste_name), trailer);
-        break;
-    default:
-        PyOS_snprintf(buf, sizeof(buf),
-                      "function '%.100s' uses import * and bare exec, "
-                      "which are illegal because it %s",
-                      PyString_AS_STRING(ste->ste_name), trailer);
-        break;
-    }
-
-    PyErr_SetString(PyExc_SyntaxError, buf);
-    PyErr_SyntaxLocation(ste->ste_table->st_filename,
-                         ste->ste_opt_lineno);
-    return 0;
-}
-
-/* Enter the final scope information into the st_symbols dict.
- *
- * All arguments are dicts.  Modifies symbols, others are read-only.
-*/
-static int
-update_symbols(PyObject *symbols, PyObject *scope,
-               PyObject *bound, PyObject *free, int classflag)
-{
-    PyObject *name, *v, *u, *w, *free_value = NULL;
-    Py_ssize_t pos = 0;
-
-    while (PyDict_Next(symbols, &pos, &name, &v)) {
-        long i, flags;
-        assert(PyInt_Check(v));
-        flags = PyInt_AS_LONG(v);
-        w = PyDict_GetItem(scope, name);
-        assert(w && PyInt_Check(w));
-        i = PyInt_AS_LONG(w);
-        flags |= (i << SCOPE_OFF);
-        u = PyInt_FromLong(flags);
-        if (!u)
-            return 0;
-        if (PyDict_SetItem(symbols, name, u) < 0) {
-            Py_DECREF(u);
-            return 0;
-        }
-        Py_DECREF(u);
-    }
-
-    free_value = PyInt_FromLong(FREE << SCOPE_OFF);
-    if (!free_value)
-        return 0;
-
-    /* add a free variable when it's only use is for creating a closure */
-    pos = 0;
-    while (PyDict_Next(free, &pos, &name, &v)) {
-        PyObject *o = PyDict_GetItem(symbols, name);
-
-        if (o) {
-            /* It could be a free variable in a method of
-               the class that has the same name as a local
-               or global in the class scope.
-            */
-            if  (classflag &&
-                 PyInt_AS_LONG(o) & (DEF_BOUND | DEF_GLOBAL)) {
-                long i = PyInt_AS_LONG(o) | DEF_FREE_CLASS;
-                o = PyInt_FromLong(i);
-                if (!o) {
-                    Py_DECREF(free_value);
-                    return 0;
-                }
-                if (PyDict_SetItem(symbols, name, o) < 0) {
-                    Py_DECREF(o);
-                    Py_DECREF(free_value);
-                    return 0;
-                }
-                Py_DECREF(o);
-            }
-            /* else it's not free, probably a cell */
-            continue;
-        }
-        if (!PyDict_GetItem(bound, name))
-            continue;       /* it's a global */
-
-        if (PyDict_SetItem(symbols, name, free_value) < 0) {
-            Py_DECREF(free_value);
-            return 0;
-        }
-    }
-    Py_DECREF(free_value);
-    return 1;
-}
-
-/* Make final symbol table decisions for block of ste.
-
-   Arguments:
-   ste -- current symtable entry (input/output)
-   bound -- set of variables bound in enclosing scopes (input).  bound
-       is NULL for module blocks.
-   free -- set of free variables in enclosed scopes (output)
-   globals -- set of declared global variables in enclosing scopes (input)
-
-   The implementation uses two mutually recursive functions,
-   analyze_block() and analyze_child_block().  analyze_block() is
-   responsible for analyzing the individual names defined in a block.
-   analyze_child_block() prepares temporary namespace dictionaries
-   used to evaluated nested blocks.
-
-   The two functions exist because a child block should see the name
-   bindings of its enclosing blocks, but those bindings should not
-   propagate back to a parent block.
-*/
-
-static int
-analyze_child_block(PySTEntryObject *entry, PyObject *bound, PyObject *free,
-                    PyObject *global, PyObject* child_free);
-
-static int
-analyze_block(PySTEntryObject *ste, PyObject *bound, PyObject *free,
-              PyObject *global)
-{
-    PyObject *name, *v, *local = NULL, *scope = NULL;
-    PyObject *newbound = NULL, *newglobal = NULL;
-    PyObject *newfree = NULL, *allfree = NULL;
-    int i, success = 0;
-    Py_ssize_t pos = 0;
-
-    local = PyDict_New();  /* collect new names bound in block */
-    if (!local)
-        goto error;
-    scope = PyDict_New(); /* collect scopes defined for each name */
-    if (!scope)
-        goto error;
-
-    /* Allocate new global and bound variable dictionaries.  These
-       dictionaries hold the names visible in nested blocks.  For
-       ClassBlocks, the bound and global names are initialized
-       before analyzing names, because class bindings aren't
-       visible in methods.  For other blocks, they are initialized
-       after names are analyzed.
-     */
-
-    /* TODO(jhylton): Package these dicts in a struct so that we
-       can write reasonable helper functions?
-    */
-    newglobal = PyDict_New();
-    if (!newglobal)
-        goto error;
-    newbound = PyDict_New();
-    if (!newbound)
-        goto error;
-    newfree = PyDict_New();
-    if (!newfree)
-        goto error;
-
-    if (ste->ste_type == ClassBlock) {
-        if (PyDict_Update(newglobal, global) < 0)
-            goto error;
-        if (bound)
-            if (PyDict_Update(newbound, bound) < 0)
-                goto error;
-    }
-
-    while (PyDict_Next(ste->ste_symbols, &pos, &name, &v)) {
-        long flags = PyInt_AS_LONG(v);
-        if (!analyze_name(ste, scope, name, flags,
-                          bound, local, free, global))
-            goto error;
-    }
-
-    if (ste->ste_type != ClassBlock) {
-        if (ste->ste_type == FunctionBlock) {
-            if (PyDict_Update(newbound, local) < 0)
-                goto error;
-        }
-        if (bound) {
-            if (PyDict_Update(newbound, bound) < 0)
-                goto error;
-        }
-        if (PyDict_Update(newglobal, global) < 0)
-            goto error;
-    }
-
-    /* Recursively call analyze_block() on each child block.
-
-       newbound, newglobal now contain the names visible in
-       nested blocks.  The free variables in the children will
-       be collected in allfree.
-    */
-    allfree = PyDict_New();
-    if (!allfree)
-        goto error;
-    for (i = 0; i < PyList_GET_SIZE(ste->ste_children); ++i) {
-        PyObject *c = PyList_GET_ITEM(ste->ste_children, i);
-        PySTEntryObject* entry;
-        assert(c && PySTEntry_Check(c));
-        entry = (PySTEntryObject*)c;
-        if (!analyze_child_block(entry, newbound, newfree, newglobal,
-                                 allfree))
-            goto error;
-        if (entry->ste_free || entry->ste_child_free)
-            ste->ste_child_free = 1;
-    }
-
-    if (PyDict_Update(newfree, allfree) < 0)
-        goto error;
-    if (ste->ste_type == FunctionBlock && !analyze_cells(scope, newfree))
-        goto error;
-    if (!update_symbols(ste->ste_symbols, scope, bound, newfree,
-                        ste->ste_type == ClassBlock))
-        goto error;
-    if (!check_unoptimized(ste))
-        goto error;
-
-    if (PyDict_Update(free, newfree) < 0)
-        goto error;
-    success = 1;
- error:
-    Py_XDECREF(local);
-    Py_XDECREF(scope);
-    Py_XDECREF(newbound);
-    Py_XDECREF(newglobal);
-    Py_XDECREF(newfree);
-    Py_XDECREF(allfree);
-    if (!success)
-        assert(PyErr_Occurred());
-    return success;
-}
-
-static int
-analyze_child_block(PySTEntryObject *entry, PyObject *bound, PyObject *free,
-                    PyObject *global, PyObject* child_free)
-{
-    PyObject *temp_bound = NULL, *temp_global = NULL, *temp_free = NULL;
-
-    /* Copy the bound and global dictionaries.
-
-       These dictionary are used by all blocks enclosed by the
-       current block.  The analyze_block() call modifies these
-       dictionaries.
-
-    */
-    temp_bound = PyDict_New();
-    if (!temp_bound)
-        goto error;
-    if (PyDict_Update(temp_bound, bound) < 0)
-        goto error;
-    temp_free = PyDict_New();
-    if (!temp_free)
-        goto error;
-    if (PyDict_Update(temp_free, free) < 0)
-        goto error;
-    temp_global = PyDict_New();
-    if (!temp_global)
-        goto error;
-    if (PyDict_Update(temp_global, global) < 0)
-        goto error;
-
-    if (!analyze_block(entry, temp_bound, temp_free, temp_global))
-        goto error;
-    if (PyDict_Update(child_free, temp_free) < 0)
-        goto error;
-    Py_DECREF(temp_bound);
-    Py_DECREF(temp_free);
-    Py_DECREF(temp_global);
-    return 1;
- error:
-    Py_XDECREF(temp_bound);
-    Py_XDECREF(temp_free);
-    Py_XDECREF(temp_global);
-    return 0;
-}
-
-static int
-symtable_analyze(struct symtable *st)
-{
-    PyObject *free, *global;
-    int r;
-
-    free = PyDict_New();
-    if (!free)
-        return 0;
-    global = PyDict_New();
-    if (!global) {
-        Py_DECREF(free);
-        return 0;
-    }
-    r = analyze_block(st->st_top, NULL, free, global);
-    Py_DECREF(free);
-    Py_DECREF(global);
-    return r;
-}
-
-
-static int
-symtable_warn(struct symtable *st, char *msg, int lineno)
-{
-    if (PyErr_WarnExplicit(PyExc_SyntaxWarning, msg, st->st_filename,
-                           lineno, NULL, NULL) < 0)     {
-        if (PyErr_ExceptionMatches(PyExc_SyntaxWarning)) {
-            PyErr_SetString(PyExc_SyntaxError, msg);
-            PyErr_SyntaxLocation(st->st_filename,
-                                 st->st_cur->ste_lineno);
-        }
-        return 0;
-    }
-    return 1;
-}
-
-/* symtable_enter_block() gets a reference via ste_new.
-   This reference is released when the block is exited, via the DECREF
-   in symtable_exit_block().
-*/
-
-static int
-symtable_exit_block(struct symtable *st, void *ast)
-{
-    Py_ssize_t end;
-
-    Py_CLEAR(st->st_cur);
-    end = PyList_GET_SIZE(st->st_stack) - 1;
-    if (end >= 0) {
-        st->st_cur = (PySTEntryObject *)PyList_GET_ITEM(st->st_stack,
-                                                        end);
-        if (st->st_cur == NULL)
-            return 0;
-        Py_INCREF(st->st_cur);
-        if (PySequence_DelItem(st->st_stack, end) < 0)
-            return 0;
-    }
-    return 1;
-}
-
-static int
-symtable_enter_block(struct symtable *st, identifier name, _Py_block_ty block,
-                     void *ast, int lineno)
-{
-    PySTEntryObject *prev = NULL;
-
-    if (st->st_cur) {
-        prev = st->st_cur;
-        if (PyList_Append(st->st_stack, (PyObject *)st->st_cur) < 0) {
-            return 0;
-        }
-        Py_DECREF(st->st_cur);
-    }
-    st->st_cur = ste_new(st, name, block, ast, lineno);
-    if (st->st_cur == NULL)
-        return 0;
-    if (block == ModuleBlock)
-        st->st_global = st->st_cur->ste_symbols;
-    if (prev) {
-        if (PyList_Append(prev->ste_children,
-                          (PyObject *)st->st_cur) < 0) {
-            return 0;
-        }
-    }
-    return 1;
-}
-
-static long
-symtable_lookup(struct symtable *st, PyObject *name)
-{
-    PyObject *o;
-    PyObject *mangled = _Py_Mangle(st->st_private, name);
-    if (!mangled)
-        return 0;
-    o = PyDict_GetItem(st->st_cur->ste_symbols, mangled);
-    Py_DECREF(mangled);
-    if (!o)
-        return 0;
-    return PyInt_AsLong(o);
-}
-
-static int
-symtable_add_def(struct symtable *st, PyObject *name, int flag)
-{
-    PyObject *o;
-    PyObject *dict;
-    long val;
-    PyObject *mangled = _Py_Mangle(st->st_private, name);
-
-    if (!mangled)
-        return 0;
-    dict = st->st_cur->ste_symbols;
-    if ((o = PyDict_GetItem(dict, mangled))) {
-        val = PyInt_AS_LONG(o);
-        if ((flag & DEF_PARAM) && (val & DEF_PARAM)) {
-            /* Is it better to use 'mangled' or 'name' here? */
-            PyErr_Format(PyExc_SyntaxError, DUPLICATE_ARGUMENT,
-                         PyString_AsString(name));
-            PyErr_SyntaxLocation(st->st_filename,
-                               st->st_cur->ste_lineno);
-            goto error;
-        }
-        val |= flag;
-    } else
-        val = flag;
-    o = PyInt_FromLong(val);
-    if (o == NULL)
-        goto error;
-    if (PyDict_SetItem(dict, mangled, o) < 0) {
-        Py_DECREF(o);
-        goto error;
-    }
-    Py_DECREF(o);
-
-    if (flag & DEF_PARAM) {
-        if (PyList_Append(st->st_cur->ste_varnames, mangled) < 0)
-            goto error;
-    } else      if (flag & DEF_GLOBAL) {
-        /* XXX need to update DEF_GLOBAL for other flags too;
-           perhaps only DEF_FREE_GLOBAL */
-        val = flag;
-        if ((o = PyDict_GetItem(st->st_global, mangled))) {
-            val |= PyInt_AS_LONG(o);
-        }
-        o = PyInt_FromLong(val);
-        if (o == NULL)
-            goto error;
-        if (PyDict_SetItem(st->st_global, mangled, o) < 0) {
-            Py_DECREF(o);
-            goto error;
-        }
-        Py_DECREF(o);
-    }
-    Py_DECREF(mangled);
-    return 1;
-
-error:
-    Py_DECREF(mangled);
-    return 0;
-}
-
-/* VISIT, VISIT_SEQ and VIST_SEQ_TAIL take an ASDL type as their second argument.
-   They use the ASDL name to synthesize the name of the C type and the visit
-   function.
-
-   VISIT_SEQ_TAIL permits the start of an ASDL sequence to be skipped, which is
-   useful if the first node in the sequence requires special treatment.
-*/
-
-#define VISIT(ST, TYPE, V) \
-    if (!symtable_visit_ ## TYPE((ST), (V))) \
-        return 0;
-
-#define VISIT_IN_BLOCK(ST, TYPE, V, S) \
-    if (!symtable_visit_ ## TYPE((ST), (V))) { \
-        symtable_exit_block((ST), (S)); \
-        return 0; \
-    }
-
-#define VISIT_SEQ(ST, TYPE, SEQ) { \
-    int i; \
-    asdl_seq *seq = (SEQ); /* avoid variable capture */ \
-    for (i = 0; i < asdl_seq_LEN(seq); i++) { \
-        TYPE ## _ty elt = (TYPE ## _ty)asdl_seq_GET(seq, i); \
-        if (!symtable_visit_ ## TYPE((ST), elt)) \
-            return 0; \
-    } \
-}
-
-#define VISIT_SEQ_IN_BLOCK(ST, TYPE, SEQ, S) { \
-    int i; \
-    asdl_seq *seq = (SEQ); /* avoid variable capture */ \
-    for (i = 0; i < asdl_seq_LEN(seq); i++) { \
-        TYPE ## _ty elt = (TYPE ## _ty)asdl_seq_GET(seq, i); \
-        if (!symtable_visit_ ## TYPE((ST), elt)) { \
-            symtable_exit_block((ST), (S)); \
-            return 0; \
-        } \
-    } \
-}
-
-#define VISIT_SEQ_TAIL(ST, TYPE, SEQ, START) { \
-    int i; \
-    asdl_seq *seq = (SEQ); /* avoid variable capture */ \
-    for (i = (START); i < asdl_seq_LEN(seq); i++) { \
-        TYPE ## _ty elt = (TYPE ## _ty)asdl_seq_GET(seq, i); \
-        if (!symtable_visit_ ## TYPE((ST), elt)) \
-            return 0; \
-    } \
-}
-
-#define VISIT_SEQ_TAIL_IN_BLOCK(ST, TYPE, SEQ, START, S) { \
-    int i; \
-    asdl_seq *seq = (SEQ); /* avoid variable capture */ \
-    for (i = (START); i < asdl_seq_LEN(seq); i++) { \
-        TYPE ## _ty elt = (TYPE ## _ty)asdl_seq_GET(seq, i); \
-        if (!symtable_visit_ ## TYPE((ST), elt)) { \
-            symtable_exit_block((ST), (S)); \
-            return 0; \
-        } \
-    } \
-}
-
-static int
-symtable_visit_stmt(struct symtable *st, stmt_ty s)
-{
-    switch (s->kind) {
-    case FunctionDef_kind:
-        if (!symtable_add_def(st, s->v.FunctionDef.name, DEF_LOCAL))
-            return 0;
-        if (s->v.FunctionDef.args->defaults)
-            VISIT_SEQ(st, expr, s->v.FunctionDef.args->defaults);
-        if (s->v.FunctionDef.decorator_list)
-            VISIT_SEQ(st, expr, s->v.FunctionDef.decorator_list);
-        if (!symtable_enter_block(st, s->v.FunctionDef.name,
-                                  FunctionBlock, (void *)s, s->lineno))
-            return 0;
-        VISIT_IN_BLOCK(st, arguments, s->v.FunctionDef.args, s);
-        VISIT_SEQ_IN_BLOCK(st, stmt, s->v.FunctionDef.body, s);
-        if (!symtable_exit_block(st, s))
-            return 0;
-        break;
-    case ClassDef_kind: {
-        PyObject *tmp;
-        if (!symtable_add_def(st, s->v.ClassDef.name, DEF_LOCAL))
-            return 0;
-        VISIT_SEQ(st, expr, s->v.ClassDef.bases);
-        if (s->v.ClassDef.decorator_list)
-            VISIT_SEQ(st, expr, s->v.ClassDef.decorator_list);
-        if (!symtable_enter_block(st, s->v.ClassDef.name, ClassBlock,
-                                  (void *)s, s->lineno))
-            return 0;
-        tmp = st->st_private;
-        st->st_private = s->v.ClassDef.name;
-        VISIT_SEQ_IN_BLOCK(st, stmt, s->v.ClassDef.body, s);
-        st->st_private = tmp;
-        if (!symtable_exit_block(st, s))
-            return 0;
-        break;
-    }
-    case Return_kind:
-        if (s->v.Return.value) {
-            VISIT(st, expr, s->v.Return.value);
-            st->st_cur->ste_returns_value = 1;
-            if (st->st_cur->ste_generator) {
-                PyErr_SetString(PyExc_SyntaxError,
-                    RETURN_VAL_IN_GENERATOR);
-                PyErr_SyntaxLocation(st->st_filename,
-                             s->lineno);
-                return 0;
-            }
-        }
-        break;
-    case Delete_kind:
-        VISIT_SEQ(st, expr, s->v.Delete.targets);
-        break;
-    case Assign_kind:
-        VISIT_SEQ(st, expr, s->v.Assign.targets);
-        VISIT(st, expr, s->v.Assign.value);
-        break;
-    case AugAssign_kind:
-        VISIT(st, expr, s->v.AugAssign.target);
-        VISIT(st, expr, s->v.AugAssign.value);
-        break;
-    case Print_kind:
-        if (s->v.Print.dest)
-            VISIT(st, expr, s->v.Print.dest);
-        VISIT_SEQ(st, expr, s->v.Print.values);
-        break;
-    case For_kind:
-        VISIT(st, expr, s->v.For.target);
-        VISIT(st, expr, s->v.For.iter);
-        VISIT_SEQ(st, stmt, s->v.For.body);
-        if (s->v.For.orelse)
-            VISIT_SEQ(st, stmt, s->v.For.orelse);
-        break;
-    case While_kind:
-        VISIT(st, expr, s->v.While.test);
-        VISIT_SEQ(st, stmt, s->v.While.body);
-        if (s->v.While.orelse)
-            VISIT_SEQ(st, stmt, s->v.While.orelse);
-        break;
-    case If_kind:
-        /* XXX if 0: and lookup_yield() hacks */
-        VISIT(st, expr, s->v.If.test);
-        VISIT_SEQ(st, stmt, s->v.If.body);
-        if (s->v.If.orelse)
-            VISIT_SEQ(st, stmt, s->v.If.orelse);
-        break;
-    case Raise_kind:
-        if (s->v.Raise.type) {
-            VISIT(st, expr, s->v.Raise.type);
-            if (s->v.Raise.inst) {
-                VISIT(st, expr, s->v.Raise.inst);
-                if (s->v.Raise.tback)
-                    VISIT(st, expr, s->v.Raise.tback);
-            }
-        }
-        break;
-    case TryExcept_kind:
-        VISIT_SEQ(st, stmt, s->v.TryExcept.body);
-        VISIT_SEQ(st, stmt, s->v.TryExcept.orelse);
-        VISIT_SEQ(st, excepthandler, s->v.TryExcept.handlers);
-        break;
-    case TryFinally_kind:
-        VISIT_SEQ(st, stmt, s->v.TryFinally.body);
-        VISIT_SEQ(st, stmt, s->v.TryFinally.finalbody);
-        break;
-    case Assert_kind:
-        VISIT(st, expr, s->v.Assert.test);
-        if (s->v.Assert.msg)
-            VISIT(st, expr, s->v.Assert.msg);
-        break;
-    case Import_kind:
-        VISIT_SEQ(st, alias, s->v.Import.names);
-        /* XXX Don't have the lineno available inside
-           visit_alias */
-        if (st->st_cur->ste_unoptimized && !st->st_cur->ste_opt_lineno)
-            st->st_cur->ste_opt_lineno = s->lineno;
-        break;
-    case ImportFrom_kind:
-        VISIT_SEQ(st, alias, s->v.ImportFrom.names);
-        /* XXX Don't have the lineno available inside
-           visit_alias */
-        if (st->st_cur->ste_unoptimized && !st->st_cur->ste_opt_lineno)
-            st->st_cur->ste_opt_lineno = s->lineno;
-        break;
-    case Exec_kind:
-        VISIT(st, expr, s->v.Exec.body);
-        if (!st->st_cur->ste_opt_lineno)
-            st->st_cur->ste_opt_lineno = s->lineno;
-        if (s->v.Exec.globals) {
-            st->st_cur->ste_unoptimized |= OPT_EXEC;
-            VISIT(st, expr, s->v.Exec.globals);
-            if (s->v.Exec.locals)
-                VISIT(st, expr, s->v.Exec.locals);
-        } else {
-            st->st_cur->ste_unoptimized |= OPT_BARE_EXEC;
-        }
-        break;
-    case Global_kind: {
-        int i;
-        asdl_seq *seq = s->v.Global.names;
-        for (i = 0; i < asdl_seq_LEN(seq); i++) {
-            identifier name = (identifier)asdl_seq_GET(seq, i);
-            char *c_name = PyString_AS_STRING(name);
-            long cur = symtable_lookup(st, name);
-            if (cur < 0)
-                return 0;
-            if (cur & (DEF_LOCAL | USE)) {
-                char buf[256];
-                if (cur & DEF_LOCAL)
-                    PyOS_snprintf(buf, sizeof(buf),
-                                  GLOBAL_AFTER_ASSIGN,
-                                  c_name);
-                else
-                    PyOS_snprintf(buf, sizeof(buf),
-                                  GLOBAL_AFTER_USE,
-                                  c_name);
-                if (!symtable_warn(st, buf, s->lineno))
-                    return 0;
-            }
-            if (!symtable_add_def(st, name, DEF_GLOBAL))
-                return 0;
-        }
-        break;
-    }
-    case Expr_kind:
-        VISIT(st, expr, s->v.Expr.value);
-        break;
-    case Pass_kind:
-    case Break_kind:
-    case Continue_kind:
-        /* nothing to do here */
-        break;
-    case With_kind:
-        VISIT(st, expr, s->v.With.context_expr);
-        if (s->v.With.optional_vars) {
-            VISIT(st, expr, s->v.With.optional_vars);
-        }
-        VISIT_SEQ(st, stmt, s->v.With.body);
-        break;
-    }
-    return 1;
-}
-
-static int
-symtable_visit_expr(struct symtable *st, expr_ty e)
-{
-    switch (e->kind) {
-    case BoolOp_kind:
-        VISIT_SEQ(st, expr, e->v.BoolOp.values);
-        break;
-    case BinOp_kind:
-        VISIT(st, expr, e->v.BinOp.left);
-        VISIT(st, expr, e->v.BinOp.right);
-        break;
-    case UnaryOp_kind:
-        VISIT(st, expr, e->v.UnaryOp.operand);
-        break;
-    case Lambda_kind: {
-        if (!GET_IDENTIFIER(lambda))
-            return 0;
-        if (e->v.Lambda.args->defaults)
-            VISIT_SEQ(st, expr, e->v.Lambda.args->defaults);
-        if (!symtable_enter_block(st, lambda,
-                                  FunctionBlock, (void *)e, e->lineno))
-            return 0;
-        VISIT_IN_BLOCK(st, arguments, e->v.Lambda.args, (void*)e);
-        VISIT_IN_BLOCK(st, expr, e->v.Lambda.body, (void*)e);
-        if (!symtable_exit_block(st, (void *)e))
-            return 0;
-        break;
-    }
-    case IfExp_kind:
-        VISIT(st, expr, e->v.IfExp.test);
-        VISIT(st, expr, e->v.IfExp.body);
-        VISIT(st, expr, e->v.IfExp.orelse);
-        break;
-    case Dict_kind:
-        VISIT_SEQ(st, expr, e->v.Dict.keys);
-        VISIT_SEQ(st, expr, e->v.Dict.values);
-        break;
-    case Set_kind:
-        VISIT_SEQ(st, expr, e->v.Set.elts);
-        break;
-    case ListComp_kind:
-        VISIT(st, expr, e->v.ListComp.elt);
-        VISIT_SEQ(st, comprehension, e->v.ListComp.generators);
-        break;
-    case GeneratorExp_kind:
-        if (!symtable_visit_genexp(st, e))
-            return 0;
-        break;
-    case SetComp_kind:
-        if (!symtable_visit_setcomp(st, e))
-            return 0;
-        break;
-    case DictComp_kind:
-        if (!symtable_visit_dictcomp(st, e))
-            return 0;
-        break;
-    case Yield_kind:
-        if (e->v.Yield.value)
-            VISIT(st, expr, e->v.Yield.value);
-        st->st_cur->ste_generator = 1;
-        if (st->st_cur->ste_returns_value) {
-            PyErr_SetString(PyExc_SyntaxError,
-                RETURN_VAL_IN_GENERATOR);
-            PyErr_SyntaxLocation(st->st_filename,
-                         e->lineno);
-            return 0;
-        }
-        break;
-    case Compare_kind:
-        VISIT(st, expr, e->v.Compare.left);
-        VISIT_SEQ(st, expr, e->v.Compare.comparators);
-        break;
-    case Call_kind:
-        VISIT(st, expr, e->v.Call.func);
-        VISIT_SEQ(st, expr, e->v.Call.args);
-        VISIT_SEQ(st, keyword, e->v.Call.keywords);
-        if (e->v.Call.starargs)
-            VISIT(st, expr, e->v.Call.starargs);
-        if (e->v.Call.kwargs)
-            VISIT(st, expr, e->v.Call.kwargs);
-        break;
-    case Repr_kind:
-        VISIT(st, expr, e->v.Repr.value);
-        break;
-    case Num_kind:
-    case Str_kind:
-        /* Nothing to do here. */
-        break;
-    /* The following exprs can be assignment targets. */
-    case Attribute_kind:
-        VISIT(st, expr, e->v.Attribute.value);
-        break;
-    case Subscript_kind:
-        VISIT(st, expr, e->v.Subscript.value);
-        VISIT(st, slice, e->v.Subscript.slice);
-        break;
-    case Name_kind:
-        if (!symtable_add_def(st, e->v.Name.id,
-                              e->v.Name.ctx == Load ? USE : DEF_LOCAL))
-            return 0;
-        break;
-    /* child nodes of List and Tuple will have expr_context set */
-    case List_kind:
-        VISIT_SEQ(st, expr, e->v.List.elts);
-        break;
-    case Tuple_kind:
-        VISIT_SEQ(st, expr, e->v.Tuple.elts);
-        break;
-    }
-    return 1;
-}
-
-static int
-symtable_implicit_arg(struct symtable *st, int pos)
-{
-    PyObject *id = PyString_FromFormat(".%d", pos);
-    if (id == NULL)
-        return 0;
-    if (!symtable_add_def(st, id, DEF_PARAM)) {
-        Py_DECREF(id);
-        return 0;
-    }
-    Py_DECREF(id);
-    return 1;
-}
-
-static int
-symtable_visit_params(struct symtable *st, asdl_seq *args, int toplevel)
-{
-    int i;
-
-    /* go through all the toplevel arguments first */
-    for (i = 0; i < asdl_seq_LEN(args); i++) {
-        expr_ty arg = (expr_ty)asdl_seq_GET(args, i);
-        if (arg->kind == Name_kind) {
-            assert(arg->v.Name.ctx == Param ||
-                   (arg->v.Name.ctx == Store && !toplevel));
-            if (!symtable_add_def(st, arg->v.Name.id, DEF_PARAM))
-                return 0;
-        }
-        else if (arg->kind == Tuple_kind) {
-            assert(arg->v.Tuple.ctx == Store);
-            if (toplevel) {
-                if (!symtable_implicit_arg(st, i))
-                    return 0;
-            }
-        }
-        else {
-            PyErr_SetString(PyExc_SyntaxError,
-                            "invalid expression in parameter list");
-            PyErr_SyntaxLocation(st->st_filename,
-                                 st->st_cur->ste_lineno);
-            return 0;
-        }
-    }
-
-    if (!toplevel) {
-        if (!symtable_visit_params_nested(st, args))
-            return 0;
-    }
-
-    return 1;
-}
-
-static int
-symtable_visit_params_nested(struct symtable *st, asdl_seq *args)
-{
-    int i;
-    for (i = 0; i < asdl_seq_LEN(args); i++) {
-        expr_ty arg = (expr_ty)asdl_seq_GET(args, i);
-        if (arg->kind == Tuple_kind &&
-            !symtable_visit_params(st, arg->v.Tuple.elts, 0))
-            return 0;
-    }
-
-    return 1;
-}
-
-static int
-symtable_visit_arguments(struct symtable *st, arguments_ty a)
-{
-    /* skip default arguments inside function block
-       XXX should ast be different?
-    */
-    if (a->args && !symtable_visit_params(st, a->args, 1))
-        return 0;
-    if (a->vararg) {
-        if (!symtable_add_def(st, a->vararg, DEF_PARAM))
-            return 0;
-        st->st_cur->ste_varargs = 1;
-    }
-    if (a->kwarg) {
-        if (!symtable_add_def(st, a->kwarg, DEF_PARAM))
-            return 0;
-        st->st_cur->ste_varkeywords = 1;
-    }
-    if (a->args && !symtable_visit_params_nested(st, a->args))
-        return 0;
-    return 1;
-}
-
-
-static int
-symtable_visit_excepthandler(struct symtable *st, excepthandler_ty eh)
-{
-    if (eh->v.ExceptHandler.type)
-        VISIT(st, expr, eh->v.ExceptHandler.type);
-    if (eh->v.ExceptHandler.name)
-        VISIT(st, expr, eh->v.ExceptHandler.name);
-    VISIT_SEQ(st, stmt, eh->v.ExceptHandler.body);
-    return 1;
-}
-
-
-static int
-symtable_visit_alias(struct symtable *st, alias_ty a)
-{
-    /* Compute store_name, the name actually bound by the import
-       operation.  It is different than a->name when a->name is a
-       dotted package name (e.g. spam.eggs)
-    */
-    PyObject *store_name;
-    PyObject *name = (a->asname == NULL) ? a->name : a->asname;
-    const char *base = PyString_AS_STRING(name);
-    char *dot = strchr(base, '.');
-    if (dot) {
-        store_name = PyString_FromStringAndSize(base, dot - base);
-        if (!store_name)
-            return 0;
-    }
-    else {
-        store_name = name;
-        Py_INCREF(store_name);
-    }
-    if (strcmp(PyString_AS_STRING(name), "*")) {
-        int r = symtable_add_def(st, store_name, DEF_IMPORT);
-        Py_DECREF(store_name);
-        return r;
-    }
-    else {
-        if (st->st_cur->ste_type != ModuleBlock) {
-        int lineno = st->st_cur->ste_lineno;
-        if (!symtable_warn(st, IMPORT_STAR_WARNING, lineno)) {
-            Py_DECREF(store_name);
-            return 0;
-        }
-        }
-        st->st_cur->ste_unoptimized |= OPT_IMPORT_STAR;
-        Py_DECREF(store_name);
-        return 1;
-    }
-}
-
-
-static int
-symtable_visit_comprehension(struct symtable *st, comprehension_ty lc)
-{
-    VISIT(st, expr, lc->target);
-    VISIT(st, expr, lc->iter);
-    VISIT_SEQ(st, expr, lc->ifs);
-    return 1;
-}
-
-
-static int
-symtable_visit_keyword(struct symtable *st, keyword_ty k)
-{
-    VISIT(st, expr, k->value);
-    return 1;
-}
-
-
-static int
-symtable_visit_slice(struct symtable *st, slice_ty s)
-{
-    switch (s->kind) {
-    case Slice_kind:
-        if (s->v.Slice.lower)
-            VISIT(st, expr, s->v.Slice.lower)
-        if (s->v.Slice.upper)
-            VISIT(st, expr, s->v.Slice.upper)
-        if (s->v.Slice.step)
-            VISIT(st, expr, s->v.Slice.step)
-        break;
-    case ExtSlice_kind:
-        VISIT_SEQ(st, slice, s->v.ExtSlice.dims)
-        break;
-    case Index_kind:
-        VISIT(st, expr, s->v.Index.value)
-        break;
-    case Ellipsis_kind:
-        break;
-    }
-    return 1;
-}
-
-static int
-symtable_new_tmpname(struct symtable *st)
-{
-    char tmpname[256];
-    identifier tmp;
-
-    PyOS_snprintf(tmpname, sizeof(tmpname), "_[%d]",
-                  ++st->st_cur->ste_tmpname);
-    tmp = PyString_InternFromString(tmpname);
-    if (!tmp)
-        return 0;
-    if (!symtable_add_def(st, tmp, DEF_LOCAL))
-        return 0;
-    Py_DECREF(tmp);
-    return 1;
-}
-
-static int
-symtable_handle_comprehension(struct symtable *st, expr_ty e,
-                              identifier scope_name, asdl_seq *generators,
-                              expr_ty elt, expr_ty value)
-{
-    int is_generator = (e->kind == GeneratorExp_kind);
-    int needs_tmp = !is_generator;
-    comprehension_ty outermost = ((comprehension_ty)
-                                    asdl_seq_GET(generators, 0));
-    /* Outermost iterator is evaluated in current scope */
-    VISIT(st, expr, outermost->iter);
-    /* Create comprehension scope for the rest */
-    if (!scope_name ||
-        !symtable_enter_block(st, scope_name, FunctionBlock, (void *)e, 0)) {
-        return 0;
-    }
-    st->st_cur->ste_generator = is_generator;
-    /* Outermost iter is received as an argument */
-    if (!symtable_implicit_arg(st, 0)) {
-        symtable_exit_block(st, (void *)e);
-        return 0;
-    }
-    /* Allocate temporary name if needed */
-    if (needs_tmp && !symtable_new_tmpname(st)) {
-        symtable_exit_block(st, (void *)e);
-        return 0;
-    }
-    VISIT_IN_BLOCK(st, expr, outermost->target, (void*)e);
-    VISIT_SEQ_IN_BLOCK(st, expr, outermost->ifs, (void*)e);
-    VISIT_SEQ_TAIL_IN_BLOCK(st, comprehension,
-                            generators, 1, (void*)e);
-    if (value)
-        VISIT_IN_BLOCK(st, expr, value, (void*)e);
-    VISIT_IN_BLOCK(st, expr, elt, (void*)e);
-    return symtable_exit_block(st, (void *)e);
-}
-
-static int
-symtable_visit_genexp(struct symtable *st, expr_ty e)
-{
-    return symtable_handle_comprehension(st, e, GET_IDENTIFIER(genexpr),
-                                         e->v.GeneratorExp.generators,
-                                         e->v.GeneratorExp.elt, NULL);
-}
-
-static int
-symtable_visit_setcomp(struct symtable *st, expr_ty e)
-{
-    return symtable_handle_comprehension(st, e, GET_IDENTIFIER(setcomp),
-                                         e->v.SetComp.generators,
-                                         e->v.SetComp.elt, NULL);
-}
-
-static int
-symtable_visit_dictcomp(struct symtable *st, expr_ty e)
-{
-    return symtable_handle_comprehension(st, e, GET_IDENTIFIER(dictcomp),
-                                         e->v.DictComp.generators,
-                                         e->v.DictComp.key,
-                                         e->v.DictComp.value);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/sysmodule.c b/AppPkg/Applications/Python/Python-2.7.2/Python/sysmodule.c
deleted file mode 100644
index fb48cb6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/sysmodule.c
+++ /dev/null
@@ -1,1779 +0,0 @@
-
-/* System module */
-
-/*
-Various bits of information used by the interpreter are collected in
-module 'sys'.
-Function member:
-- exit(sts): raise SystemExit
-Data members:
-- stdin, stdout, stderr: standard file objects
-- modules: the table of modules (dictionary)
-- path: module search path (list of strings)
-- argv: script arguments (list of strings)
-- ps1, ps2: optional primary and secondary prompts (strings)
-*/
-
-#include "Python.h"
-#include "structseq.h"
-#include "code.h"
-#include "frameobject.h"
-#include "eval.h"
-
-#include "osdefs.h"
-
-#ifdef MS_WINDOWS
-#define WIN32_LEAN_AND_MEAN
-#include "windows.h"
-#endif /* MS_WINDOWS */
-
-#ifdef MS_COREDLL
-extern void *PyWin_DLLhModule;
-/* A string loaded from the DLL at startup: */
-extern const char *PyWin_DLLVersionString;
-#endif
-
-#ifdef __VMS
-#include <unixlib.h>
-#endif
-
-#ifdef MS_WINDOWS
-#include <windows.h>
-#endif
-
-#ifdef HAVE_LANGINFO_H
-#include <locale.h>
-#include <langinfo.h>
-#endif
-
-PyObject *
-PySys_GetObject(char *name)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-    PyObject *sd = tstate->interp->sysdict;
-    if (sd == NULL)
-        return NULL;
-    return PyDict_GetItemString(sd, name);
-}
-
-FILE *
-PySys_GetFile(char *name, FILE *def)
-{
-    FILE *fp = NULL;
-    PyObject *v = PySys_GetObject(name);
-    if (v != NULL && PyFile_Check(v))
-        fp = PyFile_AsFile(v);
-    if (fp == NULL)
-        fp = def;
-    return fp;
-}
-
-int
-PySys_SetObject(char *name, PyObject *v)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-    PyObject *sd = tstate->interp->sysdict;
-    if (v == NULL) {
-        if (PyDict_GetItemString(sd, name) == NULL)
-            return 0;
-        else
-            return PyDict_DelItemString(sd, name);
-    }
-    else
-        return PyDict_SetItemString(sd, name, v);
-}
-
-static PyObject *
-sys_displayhook(PyObject *self, PyObject *o)
-{
-    PyObject *outf;
-    PyInterpreterState *interp = PyThreadState_GET()->interp;
-    PyObject *modules = interp->modules;
-    PyObject *builtins = PyDict_GetItemString(modules, "__builtin__");
-
-    if (builtins == NULL) {
-        PyErr_SetString(PyExc_RuntimeError, "lost __builtin__");
-        return NULL;
-    }
-
-    /* Print value except if None */
-    /* After printing, also assign to '_' */
-    /* Before, set '_' to None to avoid recursion */
-    if (o == Py_None) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    if (PyObject_SetAttrString(builtins, "_", Py_None) != 0)
-        return NULL;
-    if (Py_FlushLine() != 0)
-        return NULL;
-    outf = PySys_GetObject("stdout");
-    if (outf == NULL) {
-        PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout");
-        return NULL;
-    }
-    if (PyFile_WriteObject(o, outf, 0) != 0)
-        return NULL;
-    PyFile_SoftSpace(outf, 1);
-    if (Py_FlushLine() != 0)
-        return NULL;
-    if (PyObject_SetAttrString(builtins, "_", o) != 0)
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(displayhook_doc,
-"displayhook(object) -> None\n"
-"\n"
-"Print an object to sys.stdout and also save it in __builtin__._\n"
-);
-
-static PyObject *
-sys_excepthook(PyObject* self, PyObject* args)
-{
-    PyObject *exc, *value, *tb;
-    if (!PyArg_UnpackTuple(args, "excepthook", 3, 3, &exc, &value, &tb))
-        return NULL;
-    PyErr_Display(exc, value, tb);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(excepthook_doc,
-"excepthook(exctype, value, traceback) -> None\n"
-"\n"
-"Handle an exception by displaying it with a traceback on sys.stderr.\n"
-);
-
-static PyObject *
-sys_exc_info(PyObject *self, PyObject *noargs)
-{
-    PyThreadState *tstate;
-    tstate = PyThreadState_GET();
-    return Py_BuildValue(
-        "(OOO)",
-        tstate->exc_type != NULL ? tstate->exc_type : Py_None,
-        tstate->exc_value != NULL ? tstate->exc_value : Py_None,
-        tstate->exc_traceback != NULL ?
-            tstate->exc_traceback : Py_None);
-}
-
-PyDoc_STRVAR(exc_info_doc,
-"exc_info() -> (type, value, traceback)\n\
-\n\
-Return information about the most recent exception caught by an except\n\
-clause in the current stack frame or in an older stack frame."
-);
-
-static PyObject *
-sys_exc_clear(PyObject *self, PyObject *noargs)
-{
-    PyThreadState *tstate;
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-
-    if (PyErr_WarnPy3k("sys.exc_clear() not supported in 3.x; "
-                       "use except clauses", 1) < 0)
-        return NULL;
-
-    tstate = PyThreadState_GET();
-    tmp_type = tstate->exc_type;
-    tmp_value = tstate->exc_value;
-    tmp_tb = tstate->exc_traceback;
-    tstate->exc_type = NULL;
-    tstate->exc_value = NULL;
-    tstate->exc_traceback = NULL;
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-    /* For b/w compatibility */
-    PySys_SetObject("exc_type", Py_None);
-    PySys_SetObject("exc_value", Py_None);
-    PySys_SetObject("exc_traceback", Py_None);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(exc_clear_doc,
-"exc_clear() -> None\n\
-\n\
-Clear global information on the current exception.  Subsequent calls to\n\
-exc_info() will return (None,None,None) until another exception is raised\n\
-in the current thread or the execution stack returns to a frame where\n\
-another exception is being handled."
-);
-
-static PyObject *
-sys_exit(PyObject *self, PyObject *args)
-{
-    PyObject *exit_code = 0;
-    if (!PyArg_UnpackTuple(args, "exit", 0, 1, &exit_code))
-        return NULL;
-    /* Raise SystemExit so callers may catch it or clean up. */
-    PyErr_SetObject(PyExc_SystemExit, exit_code);
-    return NULL;
-}
-
-PyDoc_STRVAR(exit_doc,
-"exit([status])\n\
-\n\
-Exit the interpreter by raising SystemExit(status).\n\
-If the status is omitted or None, it defaults to zero (i.e., success).\n\
-If the status is numeric, it will be used as the system exit status.\n\
-If it is another kind of object, it will be printed and the system\n\
-exit status will be one (i.e., failure)."
-);
-
-#ifdef Py_USING_UNICODE
-
-static PyObject *
-sys_getdefaultencoding(PyObject *self)
-{
-    return PyString_FromString(PyUnicode_GetDefaultEncoding());
-}
-
-PyDoc_STRVAR(getdefaultencoding_doc,
-"getdefaultencoding() -> string\n\
-\n\
-Return the current default string encoding used by the Unicode \n\
-implementation."
-);
-
-static PyObject *
-sys_setdefaultencoding(PyObject *self, PyObject *args)
-{
-    char *encoding;
-    if (!PyArg_ParseTuple(args, "s:setdefaultencoding", &encoding))
-        return NULL;
-    if (PyUnicode_SetDefaultEncoding(encoding))
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(setdefaultencoding_doc,
-"setdefaultencoding(encoding)\n\
-\n\
-Set the current default string encoding used by the Unicode implementation."
-);
-
-static PyObject *
-sys_getfilesystemencoding(PyObject *self)
-{
-    if (Py_FileSystemDefaultEncoding)
-        return PyString_FromString(Py_FileSystemDefaultEncoding);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(getfilesystemencoding_doc,
-"getfilesystemencoding() -> string\n\
-\n\
-Return the encoding used to convert Unicode filenames in\n\
-operating system filenames."
-);
-
-#endif
-
-/*
- * Cached interned string objects used for calling the profile and
- * trace functions.  Initialized by trace_init().
- */
-static PyObject *whatstrings[7] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL};
-
-static int
-trace_init(void)
-{
-    static char *whatnames[7] = {"call", "exception", "line", "return",
-                                    "c_call", "c_exception", "c_return"};
-    PyObject *name;
-    int i;
-    for (i = 0; i < 7; ++i) {
-        if (whatstrings[i] == NULL) {
-            name = PyString_InternFromString(whatnames[i]);
-            if (name == NULL)
-                return -1;
-            whatstrings[i] = name;
-        }
-    }
-    return 0;
-}
-
-
-static PyObject *
-call_trampoline(PyThreadState *tstate, PyObject* callback,
-                PyFrameObject *frame, int what, PyObject *arg)
-{
-    PyObject *args = PyTuple_New(3);
-    PyObject *whatstr;
-    PyObject *result;
-
-    if (args == NULL)
-        return NULL;
-    Py_INCREF(frame);
-    whatstr = whatstrings[what];
-    Py_INCREF(whatstr);
-    if (arg == NULL)
-        arg = Py_None;
-    Py_INCREF(arg);
-    PyTuple_SET_ITEM(args, 0, (PyObject *)frame);
-    PyTuple_SET_ITEM(args, 1, whatstr);
-    PyTuple_SET_ITEM(args, 2, arg);
-
-    /* call the Python-level function */
-    PyFrame_FastToLocals(frame);
-    result = PyEval_CallObject(callback, args);
-    PyFrame_LocalsToFast(frame, 1);
-    if (result == NULL)
-        PyTraceBack_Here(frame);
-
-    /* cleanup */
-    Py_DECREF(args);
-    return result;
-}
-
-static int
-profile_trampoline(PyObject *self, PyFrameObject *frame,
-                   int what, PyObject *arg)
-{
-    PyThreadState *tstate = frame->f_tstate;
-    PyObject *result;
-
-    if (arg == NULL)
-        arg = Py_None;
-    result = call_trampoline(tstate, self, frame, what, arg);
-    if (result == NULL) {
-        PyEval_SetProfile(NULL, NULL);
-        return -1;
-    }
-    Py_DECREF(result);
-    return 0;
-}
-
-static int
-trace_trampoline(PyObject *self, PyFrameObject *frame,
-                 int what, PyObject *arg)
-{
-    PyThreadState *tstate = frame->f_tstate;
-    PyObject *callback;
-    PyObject *result;
-
-    if (what == PyTrace_CALL)
-        callback = self;
-    else
-        callback = frame->f_trace;
-    if (callback == NULL)
-        return 0;
-    result = call_trampoline(tstate, callback, frame, what, arg);
-    if (result == NULL) {
-        PyEval_SetTrace(NULL, NULL);
-        Py_XDECREF(frame->f_trace);
-        frame->f_trace = NULL;
-        return -1;
-    }
-    if (result != Py_None) {
-        PyObject *temp = frame->f_trace;
-        frame->f_trace = NULL;
-        Py_XDECREF(temp);
-        frame->f_trace = result;
-    }
-    else {
-        Py_DECREF(result);
-    }
-    return 0;
-}
-
-static PyObject *
-sys_settrace(PyObject *self, PyObject *args)
-{
-    if (trace_init() == -1)
-        return NULL;
-    if (args == Py_None)
-        PyEval_SetTrace(NULL, NULL);
-    else
-        PyEval_SetTrace(trace_trampoline, args);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(settrace_doc,
-"settrace(function)\n\
-\n\
-Set the global debug tracing function.  It will be called on each\n\
-function call.  See the debugger chapter in the library manual."
-);
-
-static PyObject *
-sys_gettrace(PyObject *self, PyObject *args)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-    PyObject *temp = tstate->c_traceobj;
-
-    if (temp == NULL)
-        temp = Py_None;
-    Py_INCREF(temp);
-    return temp;
-}
-
-PyDoc_STRVAR(gettrace_doc,
-"gettrace()\n\
-\n\
-Return the global debug tracing function set with sys.settrace.\n\
-See the debugger chapter in the library manual."
-);
-
-static PyObject *
-sys_setprofile(PyObject *self, PyObject *args)
-{
-    if (trace_init() == -1)
-        return NULL;
-    if (args == Py_None)
-        PyEval_SetProfile(NULL, NULL);
-    else
-        PyEval_SetProfile(profile_trampoline, args);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(setprofile_doc,
-"setprofile(function)\n\
-\n\
-Set the profiling function.  It will be called on each function call\n\
-and return.  See the profiler chapter in the library manual."
-);
-
-static PyObject *
-sys_getprofile(PyObject *self, PyObject *args)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-    PyObject *temp = tstate->c_profileobj;
-
-    if (temp == NULL)
-        temp = Py_None;
-    Py_INCREF(temp);
-    return temp;
-}
-
-PyDoc_STRVAR(getprofile_doc,
-"getprofile()\n\
-\n\
-Return the profiling function set with sys.setprofile.\n\
-See the profiler chapter in the library manual."
-);
-
-static PyObject *
-sys_setcheckinterval(PyObject *self, PyObject *args)
-{
-    if (!PyArg_ParseTuple(args, "i:setcheckinterval", &_Py_CheckInterval))
-        return NULL;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(setcheckinterval_doc,
-"setcheckinterval(n)\n\
-\n\
-Tell the Python interpreter to check for asynchronous events every\n\
-n instructions.  This also affects how often thread switches occur."
-);
-
-static PyObject *
-sys_getcheckinterval(PyObject *self, PyObject *args)
-{
-    return PyInt_FromLong(_Py_CheckInterval);
-}
-
-PyDoc_STRVAR(getcheckinterval_doc,
-"getcheckinterval() -> current check interval; see setcheckinterval()."
-);
-
-#ifdef WITH_TSC
-static PyObject *
-sys_settscdump(PyObject *self, PyObject *args)
-{
-    int bool;
-    PyThreadState *tstate = PyThreadState_Get();
-
-    if (!PyArg_ParseTuple(args, "i:settscdump", &bool))
-        return NULL;
-    if (bool)
-        tstate->interp->tscdump = 1;
-    else
-        tstate->interp->tscdump = 0;
-    Py_INCREF(Py_None);
-    return Py_None;
-
-}
-
-PyDoc_STRVAR(settscdump_doc,
-"settscdump(bool)\n\
-\n\
-If true, tell the Python interpreter to dump VM measurements to\n\
-stderr.  If false, turn off dump.  The measurements are based on the\n\
-processor's time-stamp counter."
-);
-#endif /* TSC */
-
-static PyObject *
-sys_setrecursionlimit(PyObject *self, PyObject *args)
-{
-    int new_limit;
-    if (!PyArg_ParseTuple(args, "i:setrecursionlimit", &new_limit))
-        return NULL;
-    if (new_limit <= 0) {
-        PyErr_SetString(PyExc_ValueError,
-                        "recursion limit must be positive");
-        return NULL;
-    }
-    Py_SetRecursionLimit(new_limit);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(setrecursionlimit_doc,
-"setrecursionlimit(n)\n\
-\n\
-Set the maximum depth of the Python interpreter stack to n.  This\n\
-limit prevents infinite recursion from causing an overflow of the C\n\
-stack and crashing Python.  The highest possible limit is platform-\n\
-dependent."
-);
-
-static PyObject *
-sys_getrecursionlimit(PyObject *self)
-{
-    return PyInt_FromLong(Py_GetRecursionLimit());
-}
-
-PyDoc_STRVAR(getrecursionlimit_doc,
-"getrecursionlimit()\n\
-\n\
-Return the current value of the recursion limit, the maximum depth\n\
-of the Python interpreter stack.  This limit prevents infinite\n\
-recursion from causing an overflow of the C stack and crashing Python."
-);
-
-#ifdef MS_WINDOWS
-PyDoc_STRVAR(getwindowsversion_doc,
-"getwindowsversion()\n\
-\n\
-Return information about the running version of Windows as a named tuple.\n\
-The members are named: major, minor, build, platform, service_pack,\n\
-service_pack_major, service_pack_minor, suite_mask, and product_type. For\n\
-backward compatibility, only the first 5 items are available by indexing.\n\
-All elements are numbers, except service_pack which is a string. Platform\n\
-may be 0 for win32s, 1 for Windows 9x/ME, 2 for Windows NT/2000/XP/Vista/7,\n\
-3 for Windows CE. Product_type may be 1 for a workstation, 2 for a domain\n\
-controller, 3 for a server."
-);
-
-static PyTypeObject WindowsVersionType = {0, 0, 0, 0, 0, 0};
-
-static PyStructSequence_Field windows_version_fields[] = {
-    {"major", "Major version number"},
-    {"minor", "Minor version number"},
-    {"build", "Build number"},
-    {"platform", "Operating system platform"},
-    {"service_pack", "Latest Service Pack installed on the system"},
-    {"service_pack_major", "Service Pack major version number"},
-    {"service_pack_minor", "Service Pack minor version number"},
-    {"suite_mask", "Bit mask identifying available product suites"},
-    {"product_type", "System product type"},
-    {0}
-};
-
-static PyStructSequence_Desc windows_version_desc = {
-    "sys.getwindowsversion",  /* name */
-    getwindowsversion_doc,    /* doc */
-    windows_version_fields,   /* fields */
-    5                         /* For backward compatibility,
-                                 only the first 5 items are accessible
-                                 via indexing, the rest are name only */
-};
-
-static PyObject *
-sys_getwindowsversion(PyObject *self)
-{
-    PyObject *version;
-    int pos = 0;
-    OSVERSIONINFOEX ver;
-    ver.dwOSVersionInfoSize = sizeof(ver);
-    if (!GetVersionEx((OSVERSIONINFO*) &ver))
-        return PyErr_SetFromWindowsErr(0);
-
-    version = PyStructSequence_New(&WindowsVersionType);
-    if (version == NULL)
-        return NULL;
-
-    PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.dwMajorVersion));
-    PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.dwMinorVersion));
-    PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.dwBuildNumber));
-    PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.dwPlatformId));
-    PyStructSequence_SET_ITEM(version, pos++, PyString_FromString(ver.szCSDVersion));
-    PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.wServicePackMajor));
-    PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.wServicePackMinor));
-    PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.wSuiteMask));
-    PyStructSequence_SET_ITEM(version, pos++, PyInt_FromLong(ver.wProductType));
-
-    return version;
-}
-
-#endif /* MS_WINDOWS */
-
-#ifdef HAVE_DLOPEN
-static PyObject *
-sys_setdlopenflags(PyObject *self, PyObject *args)
-{
-    int new_val;
-    PyThreadState *tstate = PyThreadState_GET();
-    if (!PyArg_ParseTuple(args, "i:setdlopenflags", &new_val))
-        return NULL;
-    if (!tstate)
-        return NULL;
-    tstate->interp->dlopenflags = new_val;
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-PyDoc_STRVAR(setdlopenflags_doc,
-"setdlopenflags(n) -> None\n\
-\n\
-Set the flags used by the interpreter for dlopen calls, such as when the\n\
-interpreter loads extension modules.  Among other things, this will enable\n\
-a lazy resolving of symbols when importing a module, if called as\n\
-sys.setdlopenflags(0).  To share symbols across extension modules, call as\n\
-sys.setdlopenflags(ctypes.RTLD_GLOBAL).  Symbolic names for the flag modules\n\
-can be either found in the ctypes module, or in the DLFCN module. If DLFCN\n\
-is not available, it can be generated from /usr/include/dlfcn.h using the\n\
-h2py script.");
-
-static PyObject *
-sys_getdlopenflags(PyObject *self, PyObject *args)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-    if (!tstate)
-        return NULL;
-    return PyInt_FromLong(tstate->interp->dlopenflags);
-}
-
-PyDoc_STRVAR(getdlopenflags_doc,
-"getdlopenflags() -> int\n\
-\n\
-Return the current value of the flags that are used for dlopen calls.\n\
-The flag constants are defined in the ctypes and DLFCN modules.");
-
-#endif  /* HAVE_DLOPEN */
-
-#ifdef USE_MALLOPT
-/* Link with -lmalloc (or -lmpc) on an SGI */
-#include <malloc.h>
-
-static PyObject *
-sys_mdebug(PyObject *self, PyObject *args)
-{
-    int flag;
-    if (!PyArg_ParseTuple(args, "i:mdebug", &flag))
-        return NULL;
-    mallopt(M_DEBUG, flag);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-#endif /* USE_MALLOPT */
-
-static PyObject *
-sys_getsizeof(PyObject *self, PyObject *args, PyObject *kwds)
-{
-    PyObject *res = NULL;
-    static PyObject *str__sizeof__ = NULL, *gc_head_size = NULL;
-    static char *kwlist[] = {"object", "default", 0};
-    PyObject *o, *dflt = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:getsizeof",
-                                     kwlist, &o, &dflt))
-        return NULL;
-
-    /* Initialize static variable for GC head size */
-    if (gc_head_size == NULL) {
-        gc_head_size = PyInt_FromSsize_t(sizeof(PyGC_Head));
-        if (gc_head_size == NULL)
-            return NULL;
-    }
-
-    /* Make sure the type is initialized. float gets initialized late */
-    if (PyType_Ready(Py_TYPE(o)) < 0)
-        return NULL;
-
-    /* Instance of old-style class */
-    if (PyInstance_Check(o))
-        res = PyInt_FromSsize_t(PyInstance_Type.tp_basicsize);
-    /* all other objects */
-    else {
-        PyObject *method = _PyObject_LookupSpecial(o, "__sizeof__",
-                                                   &str__sizeof__);
-        if (method == NULL) {
-            if (!PyErr_Occurred())
-                PyErr_Format(PyExc_TypeError,
-                             "Type %.100s doesn't define __sizeof__",
-                             Py_TYPE(o)->tp_name);
-        }
-        else {
-            res = PyObject_CallFunctionObjArgs(method, NULL);
-            Py_DECREF(method);
-        }
-    }
-
-    /* Has a default value been given? */
-    if ((res == NULL) && (dflt != NULL) &&
-        PyErr_ExceptionMatches(PyExc_TypeError))
-    {
-        PyErr_Clear();
-        Py_INCREF(dflt);
-        return dflt;
-    }
-    else if (res == NULL)
-        return res;
-
-    /* add gc_head size */
-    if (PyObject_IS_GC(o)) {
-        PyObject *tmp = res;
-        res = PyNumber_Add(tmp, gc_head_size);
-        Py_DECREF(tmp);
-    }
-    return res;
-}
-
-PyDoc_STRVAR(getsizeof_doc,
-"getsizeof(object, default) -> int\n\
-\n\
-Return the size of object in bytes.");
-
-static PyObject *
-sys_getrefcount(PyObject *self, PyObject *arg)
-{
-    return PyInt_FromSsize_t(arg->ob_refcnt);
-}
-
-#ifdef Py_REF_DEBUG
-static PyObject *
-sys_gettotalrefcount(PyObject *self)
-{
-    return PyInt_FromSsize_t(_Py_GetRefTotal());
-}
-#endif /* Py_REF_DEBUG */
-
-PyDoc_STRVAR(getrefcount_doc,
-"getrefcount(object) -> integer\n\
-\n\
-Return the reference count of object.  The count returned is generally\n\
-one higher than you might expect, because it includes the (temporary)\n\
-reference as an argument to getrefcount()."
-);
-
-#ifdef COUNT_ALLOCS
-static PyObject *
-sys_getcounts(PyObject *self)
-{
-    extern PyObject *get_counts(void);
-
-    return get_counts();
-}
-#endif
-
-PyDoc_STRVAR(getframe_doc,
-"_getframe([depth]) -> frameobject\n\
-\n\
-Return a frame object from the call stack.  If optional integer depth is\n\
-given, return the frame object that many calls below the top of the stack.\n\
-If that is deeper than the call stack, ValueError is raised.  The default\n\
-for depth is zero, returning the frame at the top of the call stack.\n\
-\n\
-This function should be used for internal and specialized\n\
-purposes only."
-);
-
-static PyObject *
-sys_getframe(PyObject *self, PyObject *args)
-{
-    PyFrameObject *f = PyThreadState_GET()->frame;
-    int depth = -1;
-
-    if (!PyArg_ParseTuple(args, "|i:_getframe", &depth))
-        return NULL;
-
-    while (depth > 0 && f != NULL) {
-        f = f->f_back;
-        --depth;
-    }
-    if (f == NULL) {
-        PyErr_SetString(PyExc_ValueError,
-                        "call stack is not deep enough");
-        return NULL;
-    }
-    Py_INCREF(f);
-    return (PyObject*)f;
-}
-
-PyDoc_STRVAR(current_frames_doc,
-"_current_frames() -> dictionary\n\
-\n\
-Return a dictionary mapping each current thread T's thread id to T's\n\
-current stack frame.\n\
-\n\
-This function should be used for specialized purposes only."
-);
-
-static PyObject *
-sys_current_frames(PyObject *self, PyObject *noargs)
-{
-    return _PyThread_CurrentFrames();
-}
-
-PyDoc_STRVAR(call_tracing_doc,
-"call_tracing(func, args) -> object\n\
-\n\
-Call func(*args), while tracing is enabled.  The tracing state is\n\
-saved, and restored afterwards.  This is intended to be called from\n\
-a debugger from a checkpoint, to recursively debug some other code."
-);
-
-static PyObject *
-sys_call_tracing(PyObject *self, PyObject *args)
-{
-    PyObject *func, *funcargs;
-    if (!PyArg_ParseTuple(args, "OO!:call_tracing", &func, &PyTuple_Type, &funcargs))
-        return NULL;
-    return _PyEval_CallTracing(func, funcargs);
-}
-
-PyDoc_STRVAR(callstats_doc,
-"callstats() -> tuple of integers\n\
-\n\
-Return a tuple of function call statistics, if CALL_PROFILE was defined\n\
-when Python was built.  Otherwise, return None.\n\
-\n\
-When enabled, this function returns detailed, implementation-specific\n\
-details about the number of function calls executed. The return value is\n\
-a 11-tuple where the entries in the tuple are counts of:\n\
-0. all function calls\n\
-1. calls to PyFunction_Type objects\n\
-2. PyFunction calls that do not create an argument tuple\n\
-3. PyFunction calls that do not create an argument tuple\n\
-   and bypass PyEval_EvalCodeEx()\n\
-4. PyMethod calls\n\
-5. PyMethod calls on bound methods\n\
-6. PyType calls\n\
-7. PyCFunction calls\n\
-8. generator calls\n\
-9. All other calls\n\
-10. Number of stack pops performed by call_function()"
-);
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef Py_TRACE_REFS
-/* Defined in objects.c because it uses static globals if that file */
-extern PyObject *_Py_GetObjects(PyObject *, PyObject *);
-#endif
-
-#ifdef DYNAMIC_EXECUTION_PROFILE
-/* Defined in ceval.c because it uses static globals if that file */
-extern PyObject *_Py_GetDXProfile(PyObject *,  PyObject *);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-static PyObject *
-sys_clear_type_cache(PyObject* self, PyObject* args)
-{
-    PyType_ClearCache();
-    Py_RETURN_NONE;
-}
-
-PyDoc_STRVAR(sys_clear_type_cache__doc__,
-"_clear_type_cache() -> None\n\
-Clear the internal type lookup cache.");
-
-
-static PyMethodDef sys_methods[] = {
-    /* Might as well keep this in alphabetic order */
-    {"callstats", (PyCFunction)PyEval_GetCallStats, METH_NOARGS,
-     callstats_doc},
-    {"_clear_type_cache",       sys_clear_type_cache,     METH_NOARGS,
-     sys_clear_type_cache__doc__},
-    {"_current_frames", sys_current_frames, METH_NOARGS,
-     current_frames_doc},
-    {"displayhook",     sys_displayhook, METH_O, displayhook_doc},
-    {"exc_info",        sys_exc_info, METH_NOARGS, exc_info_doc},
-    {"exc_clear",       sys_exc_clear, METH_NOARGS, exc_clear_doc},
-    {"excepthook",      sys_excepthook, METH_VARARGS, excepthook_doc},
-    {"exit",            sys_exit, METH_VARARGS, exit_doc},
-#ifdef Py_USING_UNICODE
-    {"getdefaultencoding", (PyCFunction)sys_getdefaultencoding,
-     METH_NOARGS, getdefaultencoding_doc},
-#endif
-#ifdef HAVE_DLOPEN
-    {"getdlopenflags", (PyCFunction)sys_getdlopenflags, METH_NOARGS,
-     getdlopenflags_doc},
-#endif
-#ifdef COUNT_ALLOCS
-    {"getcounts",       (PyCFunction)sys_getcounts, METH_NOARGS},
-#endif
-#ifdef DYNAMIC_EXECUTION_PROFILE
-    {"getdxp",          _Py_GetDXProfile, METH_VARARGS},
-#endif
-#ifdef Py_USING_UNICODE
-    {"getfilesystemencoding", (PyCFunction)sys_getfilesystemencoding,
-     METH_NOARGS, getfilesystemencoding_doc},
-#endif
-#ifdef Py_TRACE_REFS
-    {"getobjects",      _Py_GetObjects, METH_VARARGS},
-#endif
-#ifdef Py_REF_DEBUG
-    {"gettotalrefcount", (PyCFunction)sys_gettotalrefcount, METH_NOARGS},
-#endif
-    {"getrefcount",     (PyCFunction)sys_getrefcount, METH_O, getrefcount_doc},
-    {"getrecursionlimit", (PyCFunction)sys_getrecursionlimit, METH_NOARGS,
-     getrecursionlimit_doc},
-    {"getsizeof",   (PyCFunction)sys_getsizeof,
-     METH_VARARGS | METH_KEYWORDS, getsizeof_doc},
-    {"_getframe", sys_getframe, METH_VARARGS, getframe_doc},
-#ifdef MS_WINDOWS
-    {"getwindowsversion", (PyCFunction)sys_getwindowsversion, METH_NOARGS,
-     getwindowsversion_doc},
-#endif /* MS_WINDOWS */
-#ifdef USE_MALLOPT
-    {"mdebug",          sys_mdebug, METH_VARARGS},
-#endif
-#ifdef Py_USING_UNICODE
-    {"setdefaultencoding", sys_setdefaultencoding, METH_VARARGS,
-     setdefaultencoding_doc},
-#endif
-    {"setcheckinterval",        sys_setcheckinterval, METH_VARARGS,
-     setcheckinterval_doc},
-    {"getcheckinterval",        sys_getcheckinterval, METH_NOARGS,
-     getcheckinterval_doc},
-#ifdef HAVE_DLOPEN
-    {"setdlopenflags", sys_setdlopenflags, METH_VARARGS,
-     setdlopenflags_doc},
-#endif
-    {"setprofile",      sys_setprofile, METH_O, setprofile_doc},
-    {"getprofile",      sys_getprofile, METH_NOARGS, getprofile_doc},
-    {"setrecursionlimit", sys_setrecursionlimit, METH_VARARGS,
-     setrecursionlimit_doc},
-#ifdef WITH_TSC
-    {"settscdump", sys_settscdump, METH_VARARGS, settscdump_doc},
-#endif
-    {"settrace",        sys_settrace, METH_O, settrace_doc},
-    {"gettrace",        sys_gettrace, METH_NOARGS, gettrace_doc},
-    {"call_tracing", sys_call_tracing, METH_VARARGS, call_tracing_doc},
-    {NULL,              NULL}           /* sentinel */
-};
-
-static PyObject *
-list_builtin_module_names(void)
-{
-    PyObject *list = PyList_New(0);
-    int i;
-    if (list == NULL)
-        return NULL;
-    for (i = 0; PyImport_Inittab[i].name != NULL; i++) {
-        PyObject *name = PyString_FromString(
-            PyImport_Inittab[i].name);
-        if (name == NULL)
-            break;
-        PyList_Append(list, name);
-        Py_DECREF(name);
-    }
-    if (PyList_Sort(list) != 0) {
-        Py_DECREF(list);
-        list = NULL;
-    }
-    if (list) {
-        PyObject *v = PyList_AsTuple(list);
-        Py_DECREF(list);
-        list = v;
-    }
-    return list;
-}
-
-static PyObject *warnoptions = NULL;
-
-void
-PySys_ResetWarnOptions(void)
-{
-    if (warnoptions == NULL || !PyList_Check(warnoptions))
-        return;
-    PyList_SetSlice(warnoptions, 0, PyList_GET_SIZE(warnoptions), NULL);
-}
-
-void
-PySys_AddWarnOption(char *s)
-{
-    PyObject *str;
-
-    if (warnoptions == NULL || !PyList_Check(warnoptions)) {
-        Py_XDECREF(warnoptions);
-        warnoptions = PyList_New(0);
-        if (warnoptions == NULL)
-            return;
-    }
-    str = PyString_FromString(s);
-    if (str != NULL) {
-        PyList_Append(warnoptions, str);
-        Py_DECREF(str);
-    }
-}
-
-int
-PySys_HasWarnOptions(void)
-{
-    return (warnoptions != NULL && (PyList_Size(warnoptions) > 0)) ? 1 : 0;
-}
-
-/* XXX This doc string is too long to be a single string literal in VC++ 5.0.
-   Two literals concatenated works just fine.  If you have a K&R compiler
-   or other abomination that however *does* understand longer strings,
-   get rid of the !!! comment in the middle and the quotes that surround it. */
-PyDoc_VAR(sys_doc) =
-PyDoc_STR(
-"This module provides access to some objects used or maintained by the\n\
-interpreter and to functions that interact strongly with the interpreter.\n\
-\n\
-Dynamic objects:\n\
-\n\
-argv -- command line arguments; argv[0] is the script pathname if known\n\
-path -- module search path; path[0] is the script directory, else ''\n\
-modules -- dictionary of loaded modules\n\
-\n\
-displayhook -- called to show results in an interactive session\n\
-excepthook -- called to handle any uncaught exception other than SystemExit\n\
-  To customize printing in an interactive session or to install a custom\n\
-  top-level exception handler, assign other functions to replace these.\n\
-\n\
-exitfunc -- if sys.exitfunc exists, this routine is called when Python exits\n\
-  Assigning to sys.exitfunc is deprecated; use the atexit module instead.\n\
-\n\
-stdin -- standard input file object; used by raw_input() and input()\n\
-stdout -- standard output file object; used by the print statement\n\
-stderr -- standard error object; used for error messages\n\
-  By assigning other file objects (or objects that behave like files)\n\
-  to these, it is possible to redirect all of the interpreter's I/O.\n\
-\n\
-last_type -- type of last uncaught exception\n\
-last_value -- value of last uncaught exception\n\
-last_traceback -- traceback of last uncaught exception\n\
-  These three are only available in an interactive session after a\n\
-  traceback has been printed.\n\
-\n\
-exc_type -- type of exception currently being handled\n\
-exc_value -- value of exception currently being handled\n\
-exc_traceback -- traceback of exception currently being handled\n\
-  The function exc_info() should be used instead of these three,\n\
-  because it is thread-safe.\n\
-"
-)
-/* concatenating string here */
-PyDoc_STR(
-"\n\
-Static objects:\n\
-\n\
-float_info -- a dict with information about the float inplementation.\n\
-long_info -- a struct sequence with information about the long implementation.\n\
-maxint -- the largest supported integer (the smallest is -maxint-1)\n\
-maxsize -- the largest supported length of containers.\n\
-maxunicode -- the largest supported character\n\
-builtin_module_names -- tuple of module names built into this interpreter\n\
-version -- the version of this interpreter as a string\n\
-version_info -- version information as a named tuple\n\
-hexversion -- version information encoded as a single integer\n\
-copyright -- copyright notice pertaining to this interpreter\n\
-platform -- platform identifier\n\
-executable -- pathname of this Python interpreter\n\
-prefix -- prefix used to find the Python library\n\
-exec_prefix -- prefix used to find the machine-specific Python library\n\
-float_repr_style -- string indicating the style of repr() output for floats\n\
-"
-)
-#ifdef MS_WINDOWS
-/* concatenating string here */
-PyDoc_STR(
-"dllhandle -- [Windows only] integer handle of the Python DLL\n\
-winver -- [Windows only] version number of the Python DLL\n\
-"
-)
-#endif /* MS_WINDOWS */
-PyDoc_STR(
-"__stdin__ -- the original stdin; don't touch!\n\
-__stdout__ -- the original stdout; don't touch!\n\
-__stderr__ -- the original stderr; don't touch!\n\
-__displayhook__ -- the original displayhook; don't touch!\n\
-__excepthook__ -- the original excepthook; don't touch!\n\
-\n\
-Functions:\n\
-\n\
-displayhook() -- print an object to the screen, and save it in __builtin__._\n\
-excepthook() -- print an exception and its traceback to sys.stderr\n\
-exc_info() -- return thread-safe information about the current exception\n\
-exc_clear() -- clear the exception state for the current thread\n\
-exit() -- exit the interpreter by raising SystemExit\n\
-getdlopenflags() -- returns flags to be used for dlopen() calls\n\
-getprofile() -- get the global profiling function\n\
-getrefcount() -- return the reference count for an object (plus one :-)\n\
-getrecursionlimit() -- return the max recursion depth for the interpreter\n\
-getsizeof() -- return the size of an object in bytes\n\
-gettrace() -- get the global debug tracing function\n\
-setcheckinterval() -- control how often the interpreter checks for events\n\
-setdlopenflags() -- set the flags to be used for dlopen() calls\n\
-setprofile() -- set the global profiling function\n\
-setrecursionlimit() -- set the max recursion depth for the interpreter\n\
-settrace() -- set the global debug tracing function\n\
-"
-)
-/* end of sys_doc */ ;
-
-static int
-_check_and_flush (FILE *stream)
-{
-  int prev_fail = ferror (stream);
-  return fflush (stream) || prev_fail ? EOF : 0;
-}
-
-/* Subversion branch and revision management */
-static int svn_initialized;
-static char patchlevel_revision[50]; /* Just the number */
-static char branch[50];
-static char shortbranch[50];
-static const char *svn_revision;
-
-static void
-svnversion_init(void)
-{
-    if (svn_initialized)
-        return;
-    svn_initialized = 1;
-    *patchlevel_revision = '\0';
-    strcpy(branch, "");
-    strcpy(shortbranch, "unknown");
-    svn_revision = "";
-    return;
-}
-
-/* Return svnversion output if available.
-   Else return Revision of patchlevel.h if on branch.
-   Else return empty string */
-const char*
-Py_SubversionRevision()
-{
-    svnversion_init();
-    return svn_revision;
-}
-
-const char*
-Py_SubversionShortBranch()
-{
-    svnversion_init();
-    return shortbranch;
-}
-
-
-PyDoc_STRVAR(flags__doc__,
-"sys.flags\n\
-\n\
-Flags provided through command line arguments or environment vars.");
-
-static PyTypeObject FlagsType = {0, 0, 0, 0, 0, 0};
-
-static PyStructSequence_Field flags_fields[] = {
-    {"debug",                   "-d"},
-    {"py3k_warning",            "-3"},
-    {"division_warning",        "-Q"},
-    {"division_new",            "-Qnew"},
-    {"inspect",                 "-i"},
-    {"interactive",             "-i"},
-    {"optimize",                "-O or -OO"},
-    {"dont_write_bytecode",     "-B"},
-    {"no_user_site",            "-s"},
-    {"no_site",                 "-S"},
-    {"ignore_environment",      "-E"},
-    {"tabcheck",                "-t or -tt"},
-    {"verbose",                 "-v"},
-#ifdef RISCOS
-    {"riscos_wimp",             "???"},
-#endif
-    /* {"unbuffered",                   "-u"}, */
-    {"unicode",                 "-U"},
-    /* {"skip_first",                   "-x"}, */
-    {"bytes_warning", "-b"},
-    {0}
-};
-
-static PyStructSequence_Desc flags_desc = {
-    "sys.flags",        /* name */
-    flags__doc__,       /* doc */
-    flags_fields,       /* fields */
-#ifdef RISCOS
-    16
-#else
-    15
-#endif
-};
-
-static PyObject*
-make_flags(void)
-{
-    int pos = 0;
-    PyObject *seq;
-
-    seq = PyStructSequence_New(&FlagsType);
-    if (seq == NULL)
-        return NULL;
-
-#define SetFlag(flag) \
-    PyStructSequence_SET_ITEM(seq, pos++, PyInt_FromLong(flag))
-
-    SetFlag(Py_DebugFlag);
-    SetFlag(Py_Py3kWarningFlag);
-    SetFlag(Py_DivisionWarningFlag);
-    SetFlag(_Py_QnewFlag);
-    SetFlag(Py_InspectFlag);
-    SetFlag(Py_InteractiveFlag);
-    SetFlag(Py_OptimizeFlag);
-    SetFlag(Py_DontWriteBytecodeFlag);
-    SetFlag(Py_NoUserSiteDirectory);
-    SetFlag(Py_NoSiteFlag);
-    SetFlag(Py_IgnoreEnvironmentFlag);
-    SetFlag(Py_TabcheckFlag);
-    SetFlag(Py_VerboseFlag);
-#ifdef RISCOS
-    SetFlag(Py_RISCOSWimpFlag);
-#endif
-    /* SetFlag(saw_unbuffered_flag); */
-    SetFlag(Py_UnicodeFlag);
-    /* SetFlag(skipfirstline); */
-    SetFlag(Py_BytesWarningFlag);
-#undef SetFlag
-
-    if (PyErr_Occurred()) {
-        return NULL;
-    }
-    return seq;
-}
-
-PyDoc_STRVAR(version_info__doc__,
-"sys.version_info\n\
-\n\
-Version information as a named tuple.");
-
-static PyTypeObject VersionInfoType = {0, 0, 0, 0, 0, 0};
-
-static PyStructSequence_Field version_info_fields[] = {
-    {"major", "Major release number"},
-    {"minor", "Minor release number"},
-    {"micro", "Patch release number"},
-    {"releaselevel", "'alpha', 'beta', 'candidate', or 'release'"},
-    {"serial", "Serial release number"},
-    {0}
-};
-
-static PyStructSequence_Desc version_info_desc = {
-    "sys.version_info",     /* name */
-    version_info__doc__,    /* doc */
-    version_info_fields,    /* fields */
-    5
-};
-
-static PyObject *
-make_version_info(void)
-{
-    PyObject *version_info;
-    char *s;
-    int pos = 0;
-
-    version_info = PyStructSequence_New(&VersionInfoType);
-    if (version_info == NULL) {
-        return NULL;
-    }
-
-    /*
-     * These release level checks are mutually exclusive and cover
-     * the field, so don't get too fancy with the pre-processor!
-     */
-#if PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_ALPHA
-    s = "alpha";
-#elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_BETA
-    s = "beta";
-#elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_GAMMA
-    s = "candidate";
-#elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_FINAL
-    s = "final";
-#endif
-
-#define SetIntItem(flag) \
-    PyStructSequence_SET_ITEM(version_info, pos++, PyInt_FromLong(flag))
-#define SetStrItem(flag) \
-    PyStructSequence_SET_ITEM(version_info, pos++, PyString_FromString(flag))
-
-    SetIntItem(PY_MAJOR_VERSION);
-    SetIntItem(PY_MINOR_VERSION);
-    SetIntItem(PY_MICRO_VERSION);
-    SetStrItem(s);
-    SetIntItem(PY_RELEASE_SERIAL);
-#undef SetIntItem
-#undef SetStrItem
-
-    if (PyErr_Occurred()) {
-        Py_CLEAR(version_info);
-        return NULL;
-    }
-    return version_info;
-}
-
-PyObject *
-_PySys_Init(void)
-{
-    PyObject *m, *v, *sysdict;
-    PyObject *sysin, *sysout, *syserr;
-    char *s;
-
-    m = Py_InitModule3("sys", sys_methods, sys_doc);
-    if (m == NULL)
-        return NULL;
-    sysdict = PyModule_GetDict(m);
-#define SET_SYS_FROM_STRING(key, value)                 \
-    v = value;                                          \
-    if (v != NULL)                                      \
-        PyDict_SetItemString(sysdict, key, v);          \
-    Py_XDECREF(v)
-
-    /* Check that stdin is not a directory
-    Using shell redirection, you can redirect stdin to a directory,
-    crashing the Python interpreter. Catch this common mistake here
-    and output a useful error message. Note that under MS Windows,
-    the shell already prevents that. */
-#if !defined(MS_WINDOWS)
-    {
-        struct stat sb;
-        if (fstat(fileno(stdin), &sb) == 0 &&
-            S_ISDIR(sb.st_mode)) {
-            /* There's nothing more we can do. */
-            /* Py_FatalError() will core dump, so just exit. */
-            PySys_WriteStderr("Python error: <stdin> is a directory, cannot continue\n");
-            exit(EXIT_FAILURE);
-        }
-    }
-#endif
-
-    /* Closing the standard FILE* if sys.std* goes aways causes problems
-     * for embedded Python usages. Closing them when somebody explicitly
-     * invokes .close() might be possible, but the FAQ promises they get
-     * never closed. However, we still need to get write errors when
-     * writing fails (e.g. because stdout is redirected), so we flush the
-     * streams and check for errors before the file objects are deleted.
-     * On OS X, fflush()ing stdin causes an error, so we exempt stdin
-     * from that procedure.
-     */
-    sysin = PyFile_FromFile(stdin, "<stdin>", "r", NULL);
-    sysout = PyFile_FromFile(stdout, "<stdout>", "w", _check_and_flush);
-    syserr = PyFile_FromFile(stderr, "<stderr>", "w", _check_and_flush);
-    if (PyErr_Occurred())
-        return NULL;
-
-    PyDict_SetItemString(sysdict, "stdin", sysin);
-    PyDict_SetItemString(sysdict, "stdout", sysout);
-    PyDict_SetItemString(sysdict, "stderr", syserr);
-    /* Make backup copies for cleanup */
-    PyDict_SetItemString(sysdict, "__stdin__", sysin);
-    PyDict_SetItemString(sysdict, "__stdout__", sysout);
-    PyDict_SetItemString(sysdict, "__stderr__", syserr);
-    PyDict_SetItemString(sysdict, "__displayhook__",
-                         PyDict_GetItemString(sysdict, "displayhook"));
-    PyDict_SetItemString(sysdict, "__excepthook__",
-                         PyDict_GetItemString(sysdict, "excepthook"));
-    Py_XDECREF(sysin);
-    Py_XDECREF(sysout);
-    Py_XDECREF(syserr);
-
-    SET_SYS_FROM_STRING("version",
-                         PyString_FromString(Py_GetVersion()));
-    SET_SYS_FROM_STRING("hexversion",
-                         PyInt_FromLong(PY_VERSION_HEX));
-    svnversion_init();
-    SET_SYS_FROM_STRING("subversion",
-                         Py_BuildValue("(ssz)", "CPython", branch,
-                                      svn_revision));
-    SET_SYS_FROM_STRING("_mercurial",
-                        Py_BuildValue("(szz)", "CPython", _Py_hgidentifier(),
-                                      _Py_hgversion()));
-    SET_SYS_FROM_STRING("dont_write_bytecode",
-                         PyBool_FromLong(Py_DontWriteBytecodeFlag));
-    SET_SYS_FROM_STRING("api_version",
-                        PyInt_FromLong(PYTHON_API_VERSION));
-    SET_SYS_FROM_STRING("copyright",
-                        PyString_FromString(Py_GetCopyright()));
-    SET_SYS_FROM_STRING("platform",
-                        PyString_FromString(Py_GetPlatform()));
-    SET_SYS_FROM_STRING("executable",
-                        PyString_FromString(Py_GetProgramFullPath()));
-    SET_SYS_FROM_STRING("prefix",
-                        PyString_FromString(Py_GetPrefix()));
-    SET_SYS_FROM_STRING("exec_prefix",
-                        PyString_FromString(Py_GetExecPrefix()));
-    SET_SYS_FROM_STRING("maxsize",
-                        PyInt_FromSsize_t(PY_SSIZE_T_MAX));
-    SET_SYS_FROM_STRING("maxint",
-                        PyInt_FromLong(PyInt_GetMax()));
-    SET_SYS_FROM_STRING("py3kwarning",
-                        PyBool_FromLong(Py_Py3kWarningFlag));
-    SET_SYS_FROM_STRING("float_info",
-                        PyFloat_GetInfo());
-    SET_SYS_FROM_STRING("long_info",
-                        PyLong_GetInfo());
-#ifdef Py_USING_UNICODE
-    SET_SYS_FROM_STRING("maxunicode",
-                        PyInt_FromLong(PyUnicode_GetMax()));
-#endif
-    SET_SYS_FROM_STRING("builtin_module_names",
-                        list_builtin_module_names());
-    {
-        /* Assumes that longs are at least 2 bytes long.
-           Should be safe! */
-        unsigned long number = 1;
-        char *value;
-
-        s = (char *) &number;
-        if (s[0] == 0)
-            value = "big";
-        else
-            value = "little";
-        SET_SYS_FROM_STRING("byteorder",
-                            PyString_FromString(value));
-    }
-#ifdef MS_COREDLL
-    SET_SYS_FROM_STRING("dllhandle",
-                        PyLong_FromVoidPtr(PyWin_DLLhModule));
-    SET_SYS_FROM_STRING("winver",
-                        PyString_FromString(PyWin_DLLVersionString));
-#endif
-    if (warnoptions == NULL) {
-        warnoptions = PyList_New(0);
-    }
-    else {
-        Py_INCREF(warnoptions);
-    }
-    if (warnoptions != NULL) {
-        PyDict_SetItemString(sysdict, "warnoptions", warnoptions);
-    }
-
-    /* version_info */
-    if (VersionInfoType.tp_name == 0)
-        PyStructSequence_InitType(&VersionInfoType, &version_info_desc);
-    SET_SYS_FROM_STRING("version_info", make_version_info());
-    /* prevent user from creating new instances */
-    VersionInfoType.tp_init = NULL;
-    VersionInfoType.tp_new = NULL;
-
-    /* flags */
-    if (FlagsType.tp_name == 0)
-        PyStructSequence_InitType(&FlagsType, &flags_desc);
-    SET_SYS_FROM_STRING("flags", make_flags());
-    /* prevent user from creating new instances */
-    FlagsType.tp_init = NULL;
-    FlagsType.tp_new = NULL;
-
-
-#if defined(MS_WINDOWS)
-    /* getwindowsversion */
-    if (WindowsVersionType.tp_name == 0)
-        PyStructSequence_InitType(&WindowsVersionType, &windows_version_desc);
-    /* prevent user from creating new instances */
-    WindowsVersionType.tp_init = NULL;
-    WindowsVersionType.tp_new = NULL;
-#endif
-
-    /* float repr style: 0.03 (short) vs 0.029999999999999999 (legacy) */
-#ifndef PY_NO_SHORT_FLOAT_REPR
-    SET_SYS_FROM_STRING("float_repr_style",
-                        PyString_FromString("short"));
-#else
-    SET_SYS_FROM_STRING("float_repr_style",
-                        PyString_FromString("legacy"));
-#endif
-
-#undef SET_SYS_FROM_STRING
-    if (PyErr_Occurred())
-        return NULL;
-    return m;
-}
-
-static PyObject *
-makepathobject(char *path, int delim)
-{
-    int i, n;
-    char *p;
-    PyObject *v, *w;
-
-    n = 1;
-    p = path;
-    while ((p = strchr(p, delim)) != NULL) {
-        n++;
-        p++;
-    }
-    v = PyList_New(n);
-    if (v == NULL)
-        return NULL;
-    for (i = 0; ; i++) {
-        p = strchr(path, delim);
-        if (p == NULL)
-            p = strchr(path, '\0'); /* End of string */
-        w = PyString_FromStringAndSize(path, (Py_ssize_t) (p - path));
-        if (w == NULL) {
-            Py_DECREF(v);
-            return NULL;
-        }
-        PyList_SetItem(v, i, w);
-        if (*p == '\0')
-            break;
-        path = p+1;
-    }
-    return v;
-}
-
-void
-PySys_SetPath(char *path)
-{
-    PyObject *v;
-    if ((v = makepathobject(path, DELIM)) == NULL)
-        Py_FatalError("can't create sys.path");
-    if (PySys_SetObject("path", v) != 0)
-        Py_FatalError("can't assign sys.path");
-    Py_DECREF(v);
-}
-
-static PyObject *
-makeargvobject(int argc, char **argv)
-{
-    PyObject *av;
-    if (argc <= 0 || argv == NULL) {
-        /* Ensure at least one (empty) argument is seen */
-        static char *empty_argv[1] = {""};
-        argv = empty_argv;
-        argc = 1;
-    }
-    av = PyList_New(argc);
-    if (av != NULL) {
-        int i;
-        for (i = 0; i < argc; i++) {
-#ifdef __VMS
-            PyObject *v;
-
-            /* argv[0] is the script pathname if known */
-            if (i == 0) {
-                char* fn = decc$translate_vms(argv[0]);
-                if ((fn == (char *)0) || fn == (char *)-1)
-                    v = PyString_FromString(argv[0]);
-                else
-                    v = PyString_FromString(
-                        decc$translate_vms(argv[0]));
-            } else
-                v = PyString_FromString(argv[i]);
-#else
-            PyObject *v = PyString_FromString(argv[i]);
-#endif
-            if (v == NULL) {
-                Py_DECREF(av);
-                av = NULL;
-                break;
-            }
-            PyList_SetItem(av, i, v);
-        }
-    }
-    return av;
-}
-
-void
-PySys_SetArgvEx(int argc, char **argv, int updatepath)
-{
-#if defined(HAVE_REALPATH)
-    char fullpath[MAXPATHLEN];
-#elif defined(MS_WINDOWS) && !defined(MS_WINCE)
-    char fullpath[MAX_PATH];
-#endif
-    PyObject *av = makeargvobject(argc, argv);
-    PyObject *path = PySys_GetObject("path");
-    if (av == NULL)
-        Py_FatalError("no mem for sys.argv");
-    if (PySys_SetObject("argv", av) != 0)
-        Py_FatalError("can't assign sys.argv");
-    if (updatepath && path != NULL) {
-        char *argv0 = argv[0];
-        char *p = NULL;
-        Py_ssize_t n = 0;
-        PyObject *a;
-#ifdef HAVE_READLINK
-        char link[MAXPATHLEN+1];
-        char argv0copy[2*MAXPATHLEN+1];
-        int nr = 0;
-        if (argc > 0 && argv0 != NULL && strcmp(argv0, "-c") != 0)
-            nr = readlink(argv0, link, MAXPATHLEN);
-        if (nr > 0) {
-            /* It's a symlink */
-            link[nr] = '\0';
-            if (link[0] == SEP)
-                argv0 = link; /* Link to absolute path */
-            else if (strchr(link, SEP) == NULL)
-                ; /* Link without path */
-            else {
-                /* Must join(dirname(argv0), link) */
-                char *q = strrchr(argv0, SEP);
-                if (q == NULL)
-                    argv0 = link; /* argv0 without path */
-                else {
-                    /* Must make a copy */
-                    strcpy(argv0copy, argv0);
-                    q = strrchr(argv0copy, SEP);
-                    strcpy(q+1, link);
-                    argv0 = argv0copy;
-                }
-            }
-        }
-#endif /* HAVE_READLINK */
-#if SEP == '\\' /* Special case for MS filename syntax */
-        if (argc > 0 && argv0 != NULL && strcmp(argv0, "-c") != 0) {
-            char *q;
-#if defined(MS_WINDOWS) && !defined(MS_WINCE)
-            /* This code here replaces the first element in argv with the full
-            path that it represents. Under CE, there are no relative paths so
-            the argument must be the full path anyway. */
-            char *ptemp;
-            if (GetFullPathName(argv0,
-                               sizeof(fullpath),
-                               fullpath,
-                               &ptemp)) {
-                argv0 = fullpath;
-            }
-#endif
-            p = strrchr(argv0, SEP);
-            /* Test for alternate separator */
-            q = strrchr(p ? p : argv0, '/');
-            if (q != NULL)
-                p = q;
-            if (p != NULL) {
-                n = p + 1 - argv0;
-                if (n > 1 && p[-1] != ':')
-                    n--; /* Drop trailing separator */
-            }
-        }
-#else /* All other filename syntaxes */
-        if (argc > 0 && argv0 != NULL && strcmp(argv0, "-c") != 0) {
-#if defined(HAVE_REALPATH)
-            if (realpath(argv0, fullpath)) {
-                argv0 = fullpath;
-            }
-#endif
-            p = strrchr(argv0, SEP);
-        }
-        if (p != NULL) {
-#ifndef RISCOS
-            n = p + 1 - argv0;
-#else /* don't include trailing separator */
-            n = p - argv0;
-#endif /* RISCOS */
-#if SEP == '/' /* Special case for Unix filename syntax */
-            if (n > 1)
-                n--; /* Drop trailing separator */
-#endif /* Unix */
-        }
-#endif /* All others */
-        a = PyString_FromStringAndSize(argv0, n);
-        if (a == NULL)
-            Py_FatalError("no mem for sys.path insertion");
-        if (PyList_Insert(path, 0, a) < 0)
-            Py_FatalError("sys.path.insert(0) failed");
-        Py_DECREF(a);
-    }
-    Py_DECREF(av);
-}
-
-void
-PySys_SetArgv(int argc, char **argv)
-{
-    PySys_SetArgvEx(argc, argv, 1);
-}
-
-
-/* APIs to write to sys.stdout or sys.stderr using a printf-like interface.
-   Adapted from code submitted by Just van Rossum.
-
-   PySys_WriteStdout(format, ...)
-   PySys_WriteStderr(format, ...)
-
-      The first function writes to sys.stdout; the second to sys.stderr.  When
-      there is a problem, they write to the real (C level) stdout or stderr;
-      no exceptions are raised.
-
-      Both take a printf-style format string as their first argument followed
-      by a variable length argument list determined by the format string.
-
-      *** WARNING ***
-
-      The format should limit the total size of the formatted output string to
-      1000 bytes.  In particular, this means that no unrestricted "%s" formats
-      should occur; these should be limited using "%.<N>s where <N> is a
-      decimal number calculated so that <N> plus the maximum size of other
-      formatted text does not exceed 1000 bytes.  Also watch out for "%f",
-      which can print hundreds of digits for very large numbers.
-
- */
-
-static void
-mywrite(char *name, FILE *fp, const char *format, va_list va)
-{
-    PyObject *file;
-    PyObject *error_type, *error_value, *error_traceback;
-
-    PyErr_Fetch(&error_type, &error_value, &error_traceback);
-    file = PySys_GetObject(name);
-    if (file == NULL || PyFile_AsFile(file) == fp)
-        vfprintf(fp, format, va);
-    else {
-        char buffer[1001];
-        const int written = PyOS_vsnprintf(buffer, sizeof(buffer),
-                                           format, va);
-        if (PyFile_WriteString(buffer, file) != 0) {
-            PyErr_Clear();
-            fputs(buffer, fp);
-        }
-        if (written < 0 || (size_t)written >= sizeof(buffer)) {
-            const char *truncated = "... truncated";
-            if (PyFile_WriteString(truncated, file) != 0) {
-                PyErr_Clear();
-                fputs(truncated, fp);
-            }
-        }
-    }
-    PyErr_Restore(error_type, error_value, error_traceback);
-}
-
-void
-PySys_WriteStdout(const char *format, ...)
-{
-    va_list va;
-
-    va_start(va, format);
-    mywrite("stdout", stdout, format, va);
-    va_end(va);
-}
-
-void
-PySys_WriteStderr(const char *format, ...)
-{
-    va_list va;
-
-    va_start(va, format);
-    mywrite("stderr", stderr, format, va);
-    va_end(va);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/thread.c b/AppPkg/Applications/Python/Python-2.7.2/Python/thread.c
deleted file mode 100644
index 92f031b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/thread.c
+++ /dev/null
@@ -1,421 +0,0 @@
-
-/* Thread package.
-   This is intended to be usable independently from Python.
-   The implementation for system foobar is in a file thread_foobar.h
-   which is included by this file dependent on config settings.
-   Stuff shared by all thread_*.h files is collected here. */
-
-#include "Python.h"
-
-
-#ifndef _POSIX_THREADS
-/* This means pthreads are not implemented in libc headers, hence the macro
-   not present in unistd.h. But they still can be implemented as an external
-   library (e.g. gnu pth in pthread emulation) */
-# ifdef HAVE_PTHREAD_H
-#  include <pthread.h> /* _POSIX_THREADS */
-# endif
-#endif
-
-#ifndef DONT_HAVE_STDIO_H
-#include <stdio.h>
-#endif
-
-#include <stdlib.h>
-
-#ifdef __sgi
-#ifndef HAVE_PTHREAD_H /* XXX Need to check in configure.in */
-#undef _POSIX_THREADS
-#endif
-#endif
-
-#include "pythread.h"
-
-#ifndef _POSIX_THREADS
-
-#ifdef __sgi
-#define SGI_THREADS
-#endif
-
-#ifdef HAVE_THREAD_H
-#define SOLARIS_THREADS
-#endif
-
-#if defined(sun) && !defined(SOLARIS_THREADS)
-#define SUN_LWP
-#endif
-
-/* Check if we're running on HP-UX and _SC_THREADS is defined. If so, then
-   enough of the Posix threads package is implemented to support python
-   threads.
-
-   This is valid for HP-UX 11.23 running on an ia64 system. If needed, add
-   a check of __ia64 to verify that we're running on a ia64 system instead
-   of a pa-risc system.
-*/
-#ifdef __hpux
-#ifdef _SC_THREADS
-#define _POSIX_THREADS
-#endif
-#endif
-
-#endif /* _POSIX_THREADS */
-
-
-#ifdef Py_DEBUG
-static int thread_debug = 0;
-#define dprintf(args)   (void)((thread_debug & 1) && printf args)
-#define d2printf(args)  ((thread_debug & 8) && printf args)
-#else
-#define dprintf(args)
-#define d2printf(args)
-#endif
-
-static int initialized;
-
-static void PyThread__init_thread(void); /* Forward */
-
-void
-PyThread_init_thread(void)
-{
-#ifdef Py_DEBUG
-    char *p = Py_GETENV("PYTHONTHREADDEBUG");
-
-    if (p) {
-        if (*p)
-            thread_debug = atoi(p);
-        else
-            thread_debug = 1;
-    }
-#endif /* Py_DEBUG */
-    if (initialized)
-        return;
-    initialized = 1;
-    dprintf(("PyThread_init_thread called\n"));
-    PyThread__init_thread();
-}
-
-/* Support for runtime thread stack size tuning.
-   A value of 0 means using the platform's default stack size
-   or the size specified by the THREAD_STACK_SIZE macro. */
-static size_t _pythread_stacksize = 0;
-
-#ifdef SGI_THREADS
-#include "thread_sgi.h"
-#endif
-
-#ifdef SOLARIS_THREADS
-#include "thread_solaris.h"
-#endif
-
-#ifdef SUN_LWP
-#include "thread_lwp.h"
-#endif
-
-#ifdef HAVE_PTH
-#include "thread_pth.h"
-#undef _POSIX_THREADS
-#endif
-
-#ifdef _POSIX_THREADS
-#include "thread_pthread.h"
-#endif
-
-#ifdef C_THREADS
-#include "thread_cthread.h"
-#endif
-
-#ifdef NT_THREADS
-#include "thread_nt.h"
-#endif
-
-#ifdef OS2_THREADS
-#include "thread_os2.h"
-#endif
-
-#ifdef BEOS_THREADS
-#include "thread_beos.h"
-#endif
-
-#ifdef PLAN9_THREADS
-#include "thread_plan9.h"
-#endif
-
-#ifdef ATHEOS_THREADS
-#include "thread_atheos.h"
-#endif
-
-/*
-#ifdef FOOBAR_THREADS
-#include "thread_foobar.h"
-#endif
-*/
-
-/* return the current thread stack size */
-size_t
-PyThread_get_stacksize(void)
-{
-    return _pythread_stacksize;
-}
-
-/* Only platforms defining a THREAD_SET_STACKSIZE() macro
-   in thread_<platform>.h support changing the stack size.
-   Return 0 if stack size is valid,
-      -1 if stack size value is invalid,
-      -2 if setting stack size is not supported. */
-int
-PyThread_set_stacksize(size_t size)
-{
-#if defined(THREAD_SET_STACKSIZE)
-    return THREAD_SET_STACKSIZE(size);
-#else
-    return -2;
-#endif
-}
-
-#ifndef Py_HAVE_NATIVE_TLS
-/* If the platform has not supplied a platform specific
-   TLS implementation, provide our own.
-
-   This code stolen from "thread_sgi.h", where it was the only
-   implementation of an existing Python TLS API.
-*/
-/* ------------------------------------------------------------------------
-Per-thread data ("key") support.
-
-Use PyThread_create_key() to create a new key.  This is typically shared
-across threads.
-
-Use PyThread_set_key_value(thekey, value) to associate void* value with
-thekey in the current thread.  Each thread has a distinct mapping of thekey
-to a void* value.  Caution:  if the current thread already has a mapping
-for thekey, value is ignored.
-
-Use PyThread_get_key_value(thekey) to retrieve the void* value associated
-with thekey in the current thread.  This returns NULL if no value is
-associated with thekey in the current thread.
-
-Use PyThread_delete_key_value(thekey) to forget the current thread's associated
-value for thekey.  PyThread_delete_key(thekey) forgets the values associated
-with thekey across *all* threads.
-
-While some of these functions have error-return values, none set any
-Python exception.
-
-None of the functions does memory management on behalf of the void* values.
-You need to allocate and deallocate them yourself.  If the void* values
-happen to be PyObject*, these functions don't do refcount operations on
-them either.
-
-The GIL does not need to be held when calling these functions; they supply
-their own locking.  This isn't true of PyThread_create_key(), though (see
-next paragraph).
-
-There's a hidden assumption that PyThread_create_key() will be called before
-any of the other functions are called.  There's also a hidden assumption
-that calls to PyThread_create_key() are serialized externally.
------------------------------------------------------------------------- */
-
-/* A singly-linked list of struct key objects remembers all the key->value
- * associations.  File static keyhead heads the list.  keymutex is used
- * to enforce exclusion internally.
- */
-struct key {
-    /* Next record in the list, or NULL if this is the last record. */
-    struct key *next;
-
-    /* The thread id, according to PyThread_get_thread_ident(). */
-    long id;
-
-    /* The key and its associated value. */
-    int key;
-    void *value;
-};
-
-static struct key *keyhead = NULL;
-static PyThread_type_lock keymutex = NULL;
-static int nkeys = 0;  /* PyThread_create_key() hands out nkeys+1 next */
-
-/* Internal helper.
- * If the current thread has a mapping for key, the appropriate struct key*
- * is returned.  NB:  value is ignored in this case!
- * If there is no mapping for key in the current thread, then:
- *     If value is NULL, NULL is returned.
- *     Else a mapping of key to value is created for the current thread,
- *     and a pointer to a new struct key* is returned; except that if
- *     malloc() can't find room for a new struct key*, NULL is returned.
- * So when value==NULL, this acts like a pure lookup routine, and when
- * value!=NULL, this acts like dict.setdefault(), returning an existing
- * mapping if one exists, else creating a new mapping.
- *
- * Caution:  this used to be too clever, trying to hold keymutex only
- * around the "p->next = keyhead; keyhead = p" pair.  That allowed
- * another thread to mutate the list, via key deletion, concurrent with
- * find_key() crawling over the list.  Hilarity ensued.  For example, when
- * the for-loop here does "p = p->next", p could end up pointing at a
- * record that PyThread_delete_key_value() was concurrently free()'ing.
- * That could lead to anything, from failing to find a key that exists, to
- * segfaults.  Now we lock the whole routine.
- */
-static struct key *
-find_key(int key, void *value)
-{
-    struct key *p, *prev_p;
-    long id = PyThread_get_thread_ident();
-
-    if (!keymutex)
-        return NULL;
-    PyThread_acquire_lock(keymutex, 1);
-    prev_p = NULL;
-    for (p = keyhead; p != NULL; p = p->next) {
-        if (p->id == id && p->key == key)
-            goto Done;
-        /* Sanity check.  These states should never happen but if
-         * they do we must abort.  Otherwise we'll end up spinning in
-         * in a tight loop with the lock held.  A similar check is done
-         * in pystate.c tstate_delete_common().  */
-        if (p == prev_p)
-            Py_FatalError("tls find_key: small circular list(!)");
-        prev_p = p;
-        if (p->next == keyhead)
-            Py_FatalError("tls find_key: circular list(!)");
-    }
-    if (value == NULL) {
-        assert(p == NULL);
-        goto Done;
-    }
-    p = (struct key *)malloc(sizeof(struct key));
-    if (p != NULL) {
-        p->id = id;
-        p->key = key;
-        p->value = value;
-        p->next = keyhead;
-        keyhead = p;
-    }
- Done:
-    PyThread_release_lock(keymutex);
-    return p;
-}
-
-/* Return a new key.  This must be called before any other functions in
- * this family, and callers must arrange to serialize calls to this
- * function.  No violations are detected.
- */
-int
-PyThread_create_key(void)
-{
-    /* All parts of this function are wrong if it's called by multiple
-     * threads simultaneously.
-     */
-    if (keymutex == NULL)
-        keymutex = PyThread_allocate_lock();
-    return ++nkeys;
-}
-
-/* Forget the associations for key across *all* threads. */
-void
-PyThread_delete_key(int key)
-{
-    struct key *p, **q;
-
-    PyThread_acquire_lock(keymutex, 1);
-    q = &keyhead;
-    while ((p = *q) != NULL) {
-        if (p->key == key) {
-            *q = p->next;
-            free((void *)p);
-            /* NB This does *not* free p->value! */
-        }
-        else
-            q = &p->next;
-    }
-    PyThread_release_lock(keymutex);
-}
-
-/* Confusing:  If the current thread has an association for key,
- * value is ignored, and 0 is returned.  Else an attempt is made to create
- * an association of key to value for the current thread.  0 is returned
- * if that succeeds, but -1 is returned if there's not enough memory
- * to create the association.  value must not be NULL.
- */
-int
-PyThread_set_key_value(int key, void *value)
-{
-    struct key *p;
-
-    assert(value != NULL);
-    p = find_key(key, value);
-    if (p == NULL)
-        return -1;
-    else
-        return 0;
-}
-
-/* Retrieve the value associated with key in the current thread, or NULL
- * if the current thread doesn't have an association for key.
- */
-void *
-PyThread_get_key_value(int key)
-{
-    struct key *p = find_key(key, NULL);
-
-    if (p == NULL)
-        return NULL;
-    else
-        return p->value;
-}
-
-/* Forget the current thread's association for key, if any. */
-void
-PyThread_delete_key_value(int key)
-{
-    long id = PyThread_get_thread_ident();
-    struct key *p, **q;
-
-    PyThread_acquire_lock(keymutex, 1);
-    q = &keyhead;
-    while ((p = *q) != NULL) {
-        if (p->key == key && p->id == id) {
-            *q = p->next;
-            free((void *)p);
-            /* NB This does *not* free p->value! */
-            break;
-        }
-        else
-            q = &p->next;
-    }
-    PyThread_release_lock(keymutex);
-}
-
-/* Forget everything not associated with the current thread id.
- * This function is called from PyOS_AfterFork().  It is necessary
- * because other thread ids which were in use at the time of the fork
- * may be reused for new threads created in the forked process.
- */
-void
-PyThread_ReInitTLS(void)
-{
-    long id = PyThread_get_thread_ident();
-    struct key *p, **q;
-
-    if (!keymutex)
-        return;
-
-    /* As with interpreter_lock in PyEval_ReInitThreads()
-       we just create a new lock without freeing the old one */
-    keymutex = PyThread_allocate_lock();
-
-    /* Delete all keys which do not match the current thread id */
-    q = &keyhead;
-    while ((p = *q) != NULL) {
-        if (p->id != id) {
-            *q = p->next;
-            free((void *)p);
-            /* NB This does *not* free p->value! */
-        }
-        else
-            q = &p->next;
-    }
-}
-
-#endif /* Py_HAVE_NATIVE_TLS */
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_atheos.h b/AppPkg/Applications/Python/Python-2.7.2/Python/thread_atheos.h
deleted file mode 100644
index 0506186..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_atheos.h
+++ /dev/null
@@ -1,259 +0,0 @@
-/* Threading for AtheOS.
-   Based on thread_beos.h. */
-
-#include <atheos/threads.h>
-#include <atheos/semaphore.h>
-#include <atheos/atomic.h>
-#include <errno.h>
-#include <string.h>
-
-/* Missing decl from threads.h */
-extern int exit_thread(int);
-
-
-/* Undefine FASTLOCK to play with simple semaphores. */
-#define FASTLOCK
-
-
-#ifdef FASTLOCK
-
-/* Use an atomic counter and a semaphore for maximum speed. */
-typedef struct fastmutex {
-    sem_id sem;
-    atomic_t count;
-} fastmutex_t;
-
-
-static int fastmutex_create(const char *name, fastmutex_t * mutex);
-static int fastmutex_destroy(fastmutex_t * mutex);
-static int fastmutex_lock(fastmutex_t * mutex);
-static int fastmutex_timedlock(fastmutex_t * mutex, bigtime_t timeout);
-static int fastmutex_unlock(fastmutex_t * mutex);
-
-
-static int fastmutex_create(const char *name, fastmutex_t * mutex)
-{
-    mutex->count = 0;
-    mutex->sem = create_semaphore(name, 0, 0);
-    return (mutex->sem < 0) ? -1 : 0;
-}
-
-
-static int fastmutex_destroy(fastmutex_t * mutex)
-{
-    if (fastmutex_timedlock(mutex, 0) == 0 || errno == EWOULDBLOCK) {
-        return delete_semaphore(mutex->sem);
-    }
-    return 0;
-}
-
-
-static int fastmutex_lock(fastmutex_t * mutex)
-{
-    atomic_t prev = atomic_add(&mutex->count, 1);
-    if (prev > 0)
-        return lock_semaphore(mutex->sem);
-    return 0;
-}
-
-
-static int fastmutex_timedlock(fastmutex_t * mutex, bigtime_t timeout)
-{
-    atomic_t prev = atomic_add(&mutex->count, 1);
-    if (prev > 0)
-        return lock_semaphore_x(mutex->sem, 1, 0, timeout);
-    return 0;
-}
-
-
-static int fastmutex_unlock(fastmutex_t * mutex)
-{
-    atomic_t prev = atomic_add(&mutex->count, -1);
-    if (prev > 1)
-        return unlock_semaphore(mutex->sem);
-    return 0;
-}
-
-
-#endif                          /* FASTLOCK */
-
-
-/*
- * Initialization.
- *
- */
-static void PyThread__init_thread(void)
-{
-    /* Do nothing. */
-    return;
-}
-
-
-/*
- * Thread support.
- *
- */
-
-static atomic_t thread_count = 0;
-
-long PyThread_start_new_thread(void (*func) (void *), void *arg)
-{
-    status_t success = -1;
-    thread_id tid;
-    char name[OS_NAME_LENGTH];
-    atomic_t this_thread;
-
-    dprintf(("PyThread_start_new_thread called\n"));
-
-    this_thread = atomic_add(&thread_count, 1);
-    PyOS_snprintf(name, sizeof(name), "python thread (%d)", this_thread);
-
-    tid = spawn_thread(name, func, NORMAL_PRIORITY, 0, arg);
-    if (tid < 0) {
-        dprintf(("PyThread_start_new_thread spawn_thread failed: %s\n", strerror(errno)));
-    } else {
-        success = resume_thread(tid);
-        if (success < 0) {
-            dprintf(("PyThread_start_new_thread resume_thread failed: %s\n", strerror(errno)));
-        }
-    }
-
-    return (success < 0 ? -1 : tid);
-}
-
-
-long PyThread_get_thread_ident(void)
-{
-    return get_thread_id(NULL);
-}
-
-
-void PyThread_exit_thread(void)
-{
-    dprintf(("PyThread_exit_thread called\n"));
-
-    /* Thread-safe way to read a variable without a mutex: */
-    if (atomic_add(&thread_count, 0) == 0) {
-        /* No threads around, so exit main(). */
-        exit(0);
-    } else {
-        /* We're a thread */
-        exit_thread(0);
-    }
-}
-
-
-/*
- * Lock support.
- *
- */
-
-static atomic_t lock_count = 0;
-
-PyThread_type_lock PyThread_allocate_lock(void)
-{
-#ifdef FASTLOCK
-    fastmutex_t *lock;
-#else
-    sem_id sema;
-#endif
-    char name[OS_NAME_LENGTH];
-    atomic_t this_lock;
-
-    dprintf(("PyThread_allocate_lock called\n"));
-
-#ifdef FASTLOCK
-    lock = (fastmutex_t *) malloc(sizeof(fastmutex_t));
-    if (lock == NULL) {
-        dprintf(("PyThread_allocate_lock failed: out of memory\n"));
-        return (PyThread_type_lock) NULL;
-    }
-#endif
-    this_lock = atomic_add(&lock_count, 1);
-    PyOS_snprintf(name, sizeof(name), "python lock (%d)", this_lock);
-
-#ifdef FASTLOCK
-    if (fastmutex_create(name, lock) < 0) {
-        dprintf(("PyThread_allocate_lock failed: %s\n",
-                 strerror(errno)));
-        free(lock);
-        lock = NULL;
-    }
-    dprintf(("PyThread_allocate_lock()-> %p\n", lock));
-    return (PyThread_type_lock) lock;
-#else
-    sema = create_semaphore(name, 1, 0);
-    if (sema < 0) {
-        dprintf(("PyThread_allocate_lock failed: %s\n",
-                 strerror(errno)));
-        sema = 0;
-    }
-    dprintf(("PyThread_allocate_lock()-> %p\n", sema));
-    return (PyThread_type_lock) sema;
-#endif
-}
-
-
-void PyThread_free_lock(PyThread_type_lock lock)
-{
-    dprintf(("PyThread_free_lock(%p) called\n", lock));
-
-#ifdef FASTLOCK
-    if (fastmutex_destroy((fastmutex_t *) lock) < 0) {
-        dprintf(("PyThread_free_lock(%p) failed: %s\n", lock,
-                 strerror(errno)));
-    }
-    free(lock);
-#else
-    if (delete_semaphore((sem_id) lock) < 0) {
-        dprintf(("PyThread_free_lock(%p) failed: %s\n", lock,
-                 strerror(errno)));
-    }
-#endif
-}
-
-
-int PyThread_acquire_lock(PyThread_type_lock lock, int waitflag)
-{
-    int retval;
-
-    dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock,
-             waitflag));
-
-#ifdef FASTLOCK
-    if (waitflag)
-        retval = fastmutex_lock((fastmutex_t *) lock);
-    else
-        retval = fastmutex_timedlock((fastmutex_t *) lock, 0);
-#else
-    if (waitflag)
-        retval = lock_semaphore((sem_id) lock);
-    else
-        retval = lock_semaphore_x((sem_id) lock, 1, 0, 0);
-#endif
-    if (retval < 0) {
-        dprintf(("PyThread_acquire_lock(%p, %d) failed: %s\n",
-                 lock, waitflag, strerror(errno)));
-    }
-    dprintf(("PyThread_acquire_lock(%p, %d)-> %d\n", lock, waitflag,
-             retval));
-    return retval < 0 ? 0 : 1;
-}
-
-
-void PyThread_release_lock(PyThread_type_lock lock)
-{
-    dprintf(("PyThread_release_lock(%p) called\n", lock));
-
-#ifdef FASTLOCK
-    if (fastmutex_unlock((fastmutex_t *) lock) < 0) {
-        dprintf(("PyThread_release_lock(%p) failed: %s\n", lock,
-                 strerror(errno)));
-    }
-#else
-    if (unlock_semaphore((sem_id) lock) < 0) {
-        dprintf(("PyThread_release_lock(%p) failed: %s\n", lock,
-                 strerror(errno)));
-    }
-#endif
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_beos.h b/AppPkg/Applications/Python/Python-2.7.2/Python/thread_beos.h
deleted file mode 100644
index a9d808d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_beos.h
+++ /dev/null
@@ -1,248 +0,0 @@
-#include <kernel/OS.h>
-#include <support/SupportDefs.h>
-#include <errno.h>
-
-/* ----------------------------------------------------------------------
- * Fast locking mechanism described by Benoit Schillings (benoit@be.com)
- * in the Be Developer's Newsletter, Issue #26 (http://www.be.com/).
- */
-typedef struct benaphore {
-    sem_id _sem;
-    int32  _atom;
-} benaphore_t;
-
-static status_t benaphore_create( const char *name, benaphore_t *ben );
-static status_t benaphore_destroy( benaphore_t *ben );
-static status_t benaphore_lock( benaphore_t *ben );
-static status_t benaphore_timedlock( benaphore_t *ben, bigtime_t micros );
-static status_t benaphore_unlock( benaphore_t *ben );
-
-static status_t benaphore_create( const char *name, benaphore_t *ben )
-{
-    if( ben != NULL ) {
-        ben->_atom = 0;
-        ben->_sem = create_sem( 0, name );
-
-        if( ben->_sem < B_NO_ERROR ) {
-            return B_BAD_SEM_ID;
-        }
-    } else {
-        return EFAULT;
-    }
-
-    return EOK;
-}
-
-static status_t benaphore_destroy( benaphore_t *ben )
-{
-    if( ben->_sem >= B_NO_ERROR ) {
-        status_t retval = benaphore_timedlock( ben, 0 );
-
-        if( retval == EOK || retval == EWOULDBLOCK ) {
-            status_t del_retval = delete_sem( ben->_sem );
-
-            return del_retval;
-        }
-    }
-
-    return B_BAD_SEM_ID;
-}
-
-static status_t benaphore_lock( benaphore_t *ben )
-{
-    int32 prev = atomic_add( &(ben->_atom), 1 );
-
-    if( prev > 0 ) {
-        return acquire_sem( ben->_sem );
-    }
-
-    return EOK;
-}
-
-static status_t benaphore_timedlock( benaphore_t *ben, bigtime_t micros )
-{
-    int32 prev = atomic_add( &(ben->_atom), 1 );
-
-    if( prev > 0 ) {
-        status_t retval = acquire_sem_etc( ben->_sem, 1, B_TIMEOUT, micros );
-
-        switch( retval ) {
-        case B_WOULD_BLOCK:             /* Fall through... */
-        case B_TIMED_OUT:
-            return EWOULDBLOCK;
-            break;
-        case B_OK:
-            return EOK;
-            break;
-        default:
-            return retval;
-            break;
-        }
-    }
-
-    return EOK;
-}
-
-static status_t benaphore_unlock( benaphore_t *ben )
-{
-    int32 prev = atomic_add( &(ben->_atom), -1 );
-
-    if( prev > 1 ) {
-        return release_sem( ben->_sem );
-    }
-
-    return EOK;
-}
-
-/* ----------------------------------------------------------------------
- * Initialization.
- */
-static void PyThread__init_thread( void )
-{
-    /* Do nothing. */
-    return;
-}
-
-/* ----------------------------------------------------------------------
- * Thread support.
- *
- * Only ANSI C, renamed functions here; you can't use K&R on BeOS,
- * and there's no legacy thread module to support.
- */
-
-static int32 thread_count = 0;
-
-long PyThread_start_new_thread( void (*func)(void *), void *arg )
-{
-    status_t success = 0;
-    thread_id tid;
-    char name[B_OS_NAME_LENGTH];
-    int32 this_thread;
-
-    dprintf(("PyThread_start_new_thread called\n"));
-
-    /* We are so very thread-safe... */
-    this_thread = atomic_add( &thread_count, 1 );
-    PyOS_snprintf(name, sizeof(name),
-                  "python thread (%d)", this_thread );
-
-    tid = spawn_thread( (thread_func)func, name,
-                        B_NORMAL_PRIORITY, arg );
-    if( tid > B_NO_ERROR ) {
-        success = resume_thread( tid );
-    }
-
-    return ( success == B_NO_ERROR ? tid : -1 );
-}
-
-long PyThread_get_thread_ident( void )
-{
-    /* Presumed to return the current thread's ID... */
-    thread_id tid;
-    tid = find_thread( NULL );
-
-    return ( tid != B_NAME_NOT_FOUND ? tid : -1 );
-}
-
-void PyThread_exit_thread( void )
-{
-    int32 threads;
-
-    dprintf(("PyThread_exit_thread called\n"));
-
-    /* Thread-safe way to read a variable without a mutex: */
-    threads = atomic_add( &thread_count, 0 );
-
-    if( threads == 0 ) {
-        /* No threads around, so exit main(). */
-        exit(0);
-    } else {
-        /* Oh, we're a thread, let's try to exit gracefully... */
-        exit_thread( B_NO_ERROR );
-    }
-}
-
-/* ----------------------------------------------------------------------
- * Lock support.
- */
-
-static int32 lock_count = 0;
-
-PyThread_type_lock PyThread_allocate_lock( void )
-{
-    benaphore_t *lock;
-    status_t retval;
-    char name[B_OS_NAME_LENGTH];
-    int32 this_lock;
-
-    dprintf(("PyThread_allocate_lock called\n"));
-
-    lock = (benaphore_t *)malloc( sizeof( benaphore_t ) );
-    if( lock == NULL ) {
-        /* TODO: that's bad, raise MemoryError */
-        return (PyThread_type_lock)NULL;
-    }
-
-    this_lock = atomic_add( &lock_count, 1 );
-    PyOS_snprintf(name, sizeof(name), "python lock (%d)", this_lock);
-
-    retval = benaphore_create( name, lock );
-    if( retval != EOK ) {
-        /* TODO: that's bad, raise an exception */
-        return (PyThread_type_lock)NULL;
-    }
-
-    dprintf(("PyThread_allocate_lock() -> %p\n", lock));
-    return (PyThread_type_lock) lock;
-}
-
-void PyThread_free_lock( PyThread_type_lock lock )
-{
-    status_t retval;
-
-    dprintf(("PyThread_free_lock(%p) called\n", lock));
-
-    retval = benaphore_destroy( (benaphore_t *)lock );
-    if( retval != EOK ) {
-        /* TODO: that's bad, raise an exception */
-        return;
-    }
-}
-
-int PyThread_acquire_lock( PyThread_type_lock lock, int waitflag )
-{
-    int success;
-    status_t retval;
-
-    dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock, waitflag));
-
-    if( waitflag ) {
-        retval = benaphore_lock( (benaphore_t *)lock );
-    } else {
-        retval = benaphore_timedlock( (benaphore_t *)lock, 0 );
-    }
-
-    if( retval == EOK ) {
-        success = 1;
-    } else {
-        success = 0;
-
-        /* TODO: that's bad, raise an exception */
-    }
-
-    dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success));
-    return success;
-}
-
-void PyThread_release_lock( PyThread_type_lock lock )
-{
-    status_t retval;
-
-    dprintf(("PyThread_release_lock(%p) called\n", lock));
-
-    retval = benaphore_unlock( (benaphore_t *)lock );
-    if( retval != EOK ) {
-        /* TODO: that's bad, raise an exception */
-        return;
-    }
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_cthread.h b/AppPkg/Applications/Python/Python-2.7.2/Python/thread_cthread.h
deleted file mode 100644
index 2500435..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_cthread.h
+++ /dev/null
@@ -1,112 +0,0 @@
-
-#ifdef MACH_C_THREADS
-#include <mach/cthreads.h>
-#endif
-
-#ifdef HURD_C_THREADS
-#include <cthreads.h>
-#endif
-
-/*
- * Initialization.
- */
-static void
-PyThread__init_thread(void)
-{
-#ifndef HURD_C_THREADS
-    /* Roland McGrath said this should not be used since this is
-    done while linking to threads */
-    cthread_init();
-#else
-/* do nothing */
-    ;
-#endif
-}
-
-/*
- * Thread support.
- */
-long
-PyThread_start_new_thread(void (*func)(void *), void *arg)
-{
-    int success = 0;            /* init not needed when SOLARIS_THREADS and */
-                /* C_THREADS implemented properly */
-
-    dprintf(("PyThread_start_new_thread called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-    /* looks like solaris detaches the thread to never rejoin
-     * so well do it here
-     */
-    cthread_detach(cthread_fork((cthread_fn_t) func, arg));
-    return success < 0 ? -1 : 0;
-}
-
-long
-PyThread_get_thread_ident(void)
-{
-    if (!initialized)
-        PyThread_init_thread();
-    return (long) cthread_self();
-}
-
-void
-PyThread_exit_thread(void)
-{
-    dprintf(("PyThread_exit_thread called\n"));
-    if (!initialized)
-        exit(0);
-    cthread_exit(0);
-}
-
-/*
- * Lock support.
- */
-PyThread_type_lock
-PyThread_allocate_lock(void)
-{
-    mutex_t lock;
-
-    dprintf(("PyThread_allocate_lock called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-
-    lock = mutex_alloc();
-    if (mutex_init(lock)) {
-        perror("mutex_init");
-        free((void *) lock);
-        lock = 0;
-    }
-    dprintf(("PyThread_allocate_lock() -> %p\n", lock));
-    return (PyThread_type_lock) lock;
-}
-
-void
-PyThread_free_lock(PyThread_type_lock lock)
-{
-    dprintf(("PyThread_free_lock(%p) called\n", lock));
-    mutex_free(lock);
-}
-
-int
-PyThread_acquire_lock(PyThread_type_lock lock, int waitflag)
-{
-    int success = FALSE;
-
-    dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock, waitflag));
-    if (waitflag) {             /* blocking */
-        mutex_lock((mutex_t)lock);
-        success = TRUE;
-    } else {                    /* non blocking */
-        success = mutex_try_lock((mutex_t)lock);
-    }
-    dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success));
-    return success;
-}
-
-void
-PyThread_release_lock(PyThread_type_lock lock)
-{
-    dprintf(("PyThread_release_lock(%p) called\n", lock));
-    mutex_unlock((mutex_t )lock);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_foobar.h b/AppPkg/Applications/Python/Python-2.7.2/Python/thread_foobar.h
deleted file mode 100644
index 600ac31..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_foobar.h
+++ /dev/null
@@ -1,75 +0,0 @@
-
-/*
- * Initialization.
- */
-static void
-PyThread__init_thread(void)
-{
-}
-
-/*
- * Thread support.
- */
-long
-PyThread_start_new_thread(void (*func)(void *), void *arg)
-{
-    int success = 0;            /* init not needed when SOLARIS_THREADS and */
-                /* C_THREADS implemented properly */
-
-    dprintf(("PyThread_start_new_thread called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-    return success < 0 ? -1 : 0;
-}
-
-long
-PyThread_get_thread_ident(void)
-{
-    if (!initialized)
-        PyThread_init_thread();
-}
-
-void
-PyThread_exit_thread(void)
-{
-    dprintf(("PyThread_exit_thread called\n"));
-    if (!initialized)
-        exit(0);
-}
-
-/*
- * Lock support.
- */
-PyThread_type_lock
-PyThread_allocate_lock(void)
-{
-
-    dprintf(("PyThread_allocate_lock called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-
-    dprintf(("PyThread_allocate_lock() -> %p\n", lock));
-    return (PyThread_type_lock) lock;
-}
-
-void
-PyThread_free_lock(PyThread_type_lock lock)
-{
-    dprintf(("PyThread_free_lock(%p) called\n", lock));
-}
-
-int
-PyThread_acquire_lock(PyThread_type_lock lock, int waitflag)
-{
-    int success;
-
-    dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock, waitflag));
-    dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success));
-    return success;
-}
-
-void
-PyThread_release_lock(PyThread_type_lock lock)
-{
-    dprintf(("PyThread_release_lock(%p) called\n", lock));
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_lwp.h b/AppPkg/Applications/Python/Python-2.7.2/Python/thread_lwp.h
deleted file mode 100644
index f7b576b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_lwp.h
+++ /dev/null
@@ -1,113 +0,0 @@
-
-#include <stdlib.h>
-#include <lwp/lwp.h>
-#include <lwp/stackdep.h>
-
-#define STACKSIZE       1000    /* stacksize for a thread */
-#define NSTACKS         2       /* # stacks to be put in cache initially */
-
-struct lock {
-    int lock_locked;
-    cv_t lock_condvar;
-    mon_t lock_monitor;
-};
-
-
-/*
- * Initialization.
- */
-static void PyThread__init_thread(void)
-{
-    lwp_setstkcache(STACKSIZE, NSTACKS);
-}
-
-/*
- * Thread support.
- */
-
-
-long PyThread_start_new_thread(void (*func)(void *), void *arg)
-{
-    thread_t tid;
-    int success;
-    dprintf(("PyThread_start_new_thread called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-    success = lwp_create(&tid, func, MINPRIO, 0, lwp_newstk(), 1, arg);
-    return success < 0 ? -1 : 0;
-}
-
-long PyThread_get_thread_ident(void)
-{
-    thread_t tid;
-    if (!initialized)
-        PyThread_init_thread();
-    if (lwp_self(&tid) < 0)
-        return -1;
-    return tid.thread_id;
-}
-
-void PyThread_exit_thread(void)
-{
-    dprintf(("PyThread_exit_thread called\n"));
-    if (!initialized)
-        exit(0);
-    lwp_destroy(SELF);
-}
-
-/*
- * Lock support.
- */
-PyThread_type_lock PyThread_allocate_lock(void)
-{
-    struct lock *lock;
-    extern char *malloc(size_t);
-
-    dprintf(("PyThread_allocate_lock called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-
-    lock = (struct lock *) malloc(sizeof(struct lock));
-    lock->lock_locked = 0;
-    (void) mon_create(&lock->lock_monitor);
-    (void) cv_create(&lock->lock_condvar, lock->lock_monitor);
-    dprintf(("PyThread_allocate_lock() -> %p\n", lock));
-    return (PyThread_type_lock) lock;
-}
-
-void PyThread_free_lock(PyThread_type_lock lock)
-{
-    dprintf(("PyThread_free_lock(%p) called\n", lock));
-    mon_destroy(((struct lock *) lock)->lock_monitor);
-    free((char *) lock);
-}
-
-int PyThread_acquire_lock(PyThread_type_lock lock, int waitflag)
-{
-    int success;
-
-    dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock, waitflag));
-    success = 0;
-
-    (void) mon_enter(((struct lock *) lock)->lock_monitor);
-    if (waitflag)
-        while (((struct lock *) lock)->lock_locked)
-            cv_wait(((struct lock *) lock)->lock_condvar);
-    if (!((struct lock *) lock)->lock_locked) {
-        success = 1;
-        ((struct lock *) lock)->lock_locked = 1;
-    }
-    cv_broadcast(((struct lock *) lock)->lock_condvar);
-    mon_exit(((struct lock *) lock)->lock_monitor);
-    dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success));
-    return success;
-}
-
-void PyThread_release_lock(PyThread_type_lock lock)
-{
-    dprintf(("PyThread_release_lock(%p) called\n", lock));
-    (void) mon_enter(((struct lock *) lock)->lock_monitor);
-    ((struct lock *) lock)->lock_locked = 0;
-    cv_broadcast(((struct lock *) lock)->lock_condvar);
-    mon_exit(((struct lock *) lock)->lock_monitor);
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_nt.h b/AppPkg/Applications/Python/Python-2.7.2/Python/thread_nt.h
deleted file mode 100644
index dcc6757..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_nt.h
+++ /dev/null
@@ -1,359 +0,0 @@
-
-/* This code implemented by Dag.Gruneau@elsa.preseco.comm.se */
-/* Fast NonRecursiveMutex support by Yakov Markovitch, markovitch@iso.ru */
-/* Eliminated some memory leaks, gsw@agere.com */
-
-#include <windows.h>
-#include <limits.h>
-#ifdef HAVE_PROCESS_H
-#include <process.h>
-#endif
-
-typedef struct NRMUTEX {
-    LONG   owned ;
-    DWORD  thread_id ;
-    HANDLE hevent ;
-} NRMUTEX, *PNRMUTEX ;
-
-
-BOOL
-InitializeNonRecursiveMutex(PNRMUTEX mutex)
-{
-    mutex->owned = -1 ;  /* No threads have entered NonRecursiveMutex */
-    mutex->thread_id = 0 ;
-    mutex->hevent = CreateEvent(NULL, FALSE, FALSE, NULL) ;
-    return mutex->hevent != NULL ;      /* TRUE if the mutex is created */
-}
-
-VOID
-DeleteNonRecursiveMutex(PNRMUTEX mutex)
-{
-    /* No in-use check */
-    CloseHandle(mutex->hevent) ;
-    mutex->hevent = NULL ; /* Just in case */
-}
-
-DWORD
-EnterNonRecursiveMutex(PNRMUTEX mutex, BOOL wait)
-{
-    /* Assume that the thread waits successfully */
-    DWORD ret ;
-
-    /* InterlockedIncrement(&mutex->owned) == 0 means that no thread currently owns the mutex */
-    if (!wait)
-    {
-        if (InterlockedCompareExchange(&mutex->owned, 0, -1) != -1)
-            return WAIT_TIMEOUT ;
-        ret = WAIT_OBJECT_0 ;
-    }
-    else
-        ret = InterlockedIncrement(&mutex->owned) ?
-            /* Some thread owns the mutex, let's wait... */
-            WaitForSingleObject(mutex->hevent, INFINITE) : WAIT_OBJECT_0 ;
-
-    mutex->thread_id = GetCurrentThreadId() ; /* We own it */
-    return ret ;
-}
-
-BOOL
-LeaveNonRecursiveMutex(PNRMUTEX mutex)
-{
-    /* We don't own the mutex */
-    mutex->thread_id = 0 ;
-    return
-        InterlockedDecrement(&mutex->owned) < 0 ||
-        SetEvent(mutex->hevent) ; /* Other threads are waiting, wake one on them up */
-}
-
-PNRMUTEX
-AllocNonRecursiveMutex(void)
-{
-    PNRMUTEX mutex = (PNRMUTEX)malloc(sizeof(NRMUTEX)) ;
-    if (mutex && !InitializeNonRecursiveMutex(mutex))
-    {
-        free(mutex) ;
-        mutex = NULL ;
-    }
-    return mutex ;
-}
-
-void
-FreeNonRecursiveMutex(PNRMUTEX mutex)
-{
-    if (mutex)
-    {
-        DeleteNonRecursiveMutex(mutex) ;
-        free(mutex) ;
-    }
-}
-
-long PyThread_get_thread_ident(void);
-
-/*
- * Initialization of the C package, should not be needed.
- */
-static void
-PyThread__init_thread(void)
-{
-}
-
-/*
- * Thread support.
- */
-
-typedef struct {
-    void (*func)(void*);
-    void *arg;
-} callobj;
-
-/* thunker to call adapt between the function type used by the system's
-thread start function and the internally used one. */
-#if defined(MS_WINCE)
-static DWORD WINAPI
-#else
-static unsigned __stdcall
-#endif
-bootstrap(void *call)
-{
-    callobj *obj = (callobj*)call;
-    void (*func)(void*) = obj->func;
-    void *arg = obj->arg;
-    HeapFree(GetProcessHeap(), 0, obj);
-    func(arg);
-    return 0;
-}
-
-long
-PyThread_start_new_thread(void (*func)(void *), void *arg)
-{
-    HANDLE hThread;
-    unsigned threadID;
-    callobj *obj;
-
-    dprintf(("%ld: PyThread_start_new_thread called\n",
-             PyThread_get_thread_ident()));
-    if (!initialized)
-        PyThread_init_thread();
-
-    obj = (callobj*)HeapAlloc(GetProcessHeap(), 0, sizeof(*obj));
-    if (!obj)
-        return -1;
-    obj->func = func;
-    obj->arg = arg;
-#if defined(MS_WINCE)
-    hThread = CreateThread(NULL,
-                           Py_SAFE_DOWNCAST(_pythread_stacksize, Py_ssize_t, SIZE_T),
-                           bootstrap, obj, 0, &threadID);
-#else
-    hThread = (HANDLE)_beginthreadex(0,
-                      Py_SAFE_DOWNCAST(_pythread_stacksize,
-                                       Py_ssize_t, unsigned int),
-                      bootstrap, obj,
-                      0, &threadID);
-#endif
-    if (hThread == 0) {
-#if defined(MS_WINCE)
-        /* Save error in variable, to prevent PyThread_get_thread_ident
-           from clobbering it. */
-        unsigned e = GetLastError();
-        dprintf(("%ld: PyThread_start_new_thread failed, win32 error code %u\n",
-                 PyThread_get_thread_ident(), e));
-#else
-        /* I've seen errno == EAGAIN here, which means "there are
-         * too many threads".
-         */
-        int e = errno;
-        dprintf(("%ld: PyThread_start_new_thread failed, errno %d\n",
-                 PyThread_get_thread_ident(), e));
-#endif
-        threadID = (unsigned)-1;
-        HeapFree(GetProcessHeap(), 0, obj);
-    }
-    else {
-        dprintf(("%ld: PyThread_start_new_thread succeeded: %p\n",
-                 PyThread_get_thread_ident(), (void*)hThread));
-        CloseHandle(hThread);
-    }
-    return (long) threadID;
-}
-
-/*
- * Return the thread Id instead of an handle. The Id is said to uniquely identify the
- * thread in the system
- */
-long
-PyThread_get_thread_ident(void)
-{
-    if (!initialized)
-        PyThread_init_thread();
-
-    return GetCurrentThreadId();
-}
-
-void
-PyThread_exit_thread(void)
-{
-    dprintf(("%ld: PyThread_exit_thread called\n", PyThread_get_thread_ident()));
-    if (!initialized)
-        exit(0);
-#if defined(MS_WINCE)
-    ExitThread(0);
-#else
-    _endthreadex(0);
-#endif
-}
-
-/*
- * Lock support. It has too be implemented as semaphores.
- * I [Dag] tried to implement it with mutex but I could find a way to
- * tell whether a thread already own the lock or not.
- */
-PyThread_type_lock
-PyThread_allocate_lock(void)
-{
-    PNRMUTEX aLock;
-
-    dprintf(("PyThread_allocate_lock called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-
-    aLock = AllocNonRecursiveMutex() ;
-
-    dprintf(("%ld: PyThread_allocate_lock() -> %p\n", PyThread_get_thread_ident(), aLock));
-
-    return (PyThread_type_lock) aLock;
-}
-
-void
-PyThread_free_lock(PyThread_type_lock aLock)
-{
-    dprintf(("%ld: PyThread_free_lock(%p) called\n", PyThread_get_thread_ident(),aLock));
-
-    FreeNonRecursiveMutex(aLock) ;
-}
-
-/*
- * Return 1 on success if the lock was acquired
- *
- * and 0 if the lock was not acquired. This means a 0 is returned
- * if the lock has already been acquired by this thread!
- */
-int
-PyThread_acquire_lock(PyThread_type_lock aLock, int waitflag)
-{
-    int success ;
-
-    dprintf(("%ld: PyThread_acquire_lock(%p, %d) called\n", PyThread_get_thread_ident(),aLock, waitflag));
-
-    success = aLock && EnterNonRecursiveMutex((PNRMUTEX) aLock, (waitflag ? INFINITE : 0)) == WAIT_OBJECT_0 ;
-
-    dprintf(("%ld: PyThread_acquire_lock(%p, %d) -> %d\n", PyThread_get_thread_ident(),aLock, waitflag, success));
-
-    return success;
-}
-
-void
-PyThread_release_lock(PyThread_type_lock aLock)
-{
-    dprintf(("%ld: PyThread_release_lock(%p) called\n", PyThread_get_thread_ident(),aLock));
-
-    if (!(aLock && LeaveNonRecursiveMutex((PNRMUTEX) aLock)))
-        dprintf(("%ld: Could not PyThread_release_lock(%p) error: %ld\n", PyThread_get_thread_ident(), aLock, GetLastError()));
-}
-
-/* minimum/maximum thread stack sizes supported */
-#define THREAD_MIN_STACKSIZE    0x8000          /* 32kB */
-#define THREAD_MAX_STACKSIZE    0x10000000      /* 256MB */
-
-/* set the thread stack size.
- * Return 0 if size is valid, -1 otherwise.
- */
-static int
-_pythread_nt_set_stacksize(size_t size)
-{
-    /* set to default */
-    if (size == 0) {
-        _pythread_stacksize = 0;
-        return 0;
-    }
-
-    /* valid range? */
-    if (size >= THREAD_MIN_STACKSIZE && size < THREAD_MAX_STACKSIZE) {
-        _pythread_stacksize = size;
-        return 0;
-    }
-
-    return -1;
-}
-
-#define THREAD_SET_STACKSIZE(x) _pythread_nt_set_stacksize(x)
-
-
-/* use native Windows TLS functions */
-#define Py_HAVE_NATIVE_TLS
-
-#ifdef Py_HAVE_NATIVE_TLS
-int
-PyThread_create_key(void)
-{
-    return (int) TlsAlloc();
-}
-
-void
-PyThread_delete_key(int key)
-{
-    TlsFree(key);
-}
-
-/* We must be careful to emulate the strange semantics implemented in thread.c,
- * where the value is only set if it hasn't been set before.
- */
-int
-PyThread_set_key_value(int key, void *value)
-{
-    BOOL ok;
-    void *oldvalue;
-
-    assert(value != NULL);
-    oldvalue = TlsGetValue(key);
-    if (oldvalue != NULL)
-        /* ignore value if already set */
-        return 0;
-    ok = TlsSetValue(key, value);
-    if (!ok)
-        return -1;
-    return 0;
-}
-
-void *
-PyThread_get_key_value(int key)
-{
-    /* because TLS is used in the Py_END_ALLOW_THREAD macro,
-     * it is necessary to preserve the windows error state, because
-     * it is assumed to be preserved across the call to the macro.
-     * Ideally, the macro should be fixed, but it is simpler to
-     * do it here.
-     */
-    DWORD error = GetLastError();
-    void *result = TlsGetValue(key);
-    SetLastError(error);
-    return result;
-}
-
-void
-PyThread_delete_key_value(int key)
-{
-    /* NULL is used as "key missing", and it is also the default
-     * given by TlsGetValue() if nothing has been set yet.
-     */
-    TlsSetValue(key, NULL);
-}
-
-/* reinitialization of TLS is not necessary after fork when using
- * the native TLS functions.  And forking isn't supported on Windows either.
- */
-void
-PyThread_ReInitTLS(void)
-{}
-
-#endif
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_os2.h b/AppPkg/Applications/Python/Python-2.7.2/Python/thread_os2.h
deleted file mode 100644
index a2f0956..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_os2.h
+++ /dev/null
@@ -1,267 +0,0 @@
-/* This code implemented by cvale@netcom.com */
-
-#define INCL_DOSPROCESS
-#define INCL_DOSSEMAPHORES
-#include "os2.h"
-#include "limits.h"
-
-#include "process.h"
-
-#if defined(PYCC_GCC)
-#include <sys/builtin.h>
-#include <sys/fmutex.h>
-#else
-long PyThread_get_thread_ident(void);
-#endif
-
-/* default thread stack size of 64kB */
-#if !defined(THREAD_STACK_SIZE)
-#define THREAD_STACK_SIZE       0x10000
-#endif
-
-#define OS2_STACKSIZE(x)        (x ? x : THREAD_STACK_SIZE)
-
-/*
- * Initialization of the C package, should not be needed.
- */
-static void
-PyThread__init_thread(void)
-{
-}
-
-/*
- * Thread support.
- */
-long
-PyThread_start_new_thread(void (*func)(void *), void *arg)
-{
-    int thread_id;
-
-    thread_id = _beginthread(func,
-                            NULL,
-                            OS2_STACKSIZE(_pythread_stacksize),
-                            arg);
-
-    if (thread_id == -1) {
-        dprintf(("_beginthread failed. return %ld\n", errno));
-    }
-
-    return thread_id;
-}
-
-long
-PyThread_get_thread_ident(void)
-{
-#if !defined(PYCC_GCC)
-    PPIB pib;
-    PTIB tib;
-#endif
-
-    if (!initialized)
-        PyThread_init_thread();
-
-#if defined(PYCC_GCC)
-    return _gettid();
-#else
-    DosGetInfoBlocks(&tib, &pib);
-    return tib->tib_ptib2->tib2_ultid;
-#endif
-}
-
-void
-PyThread_exit_thread(void)
-{
-    dprintf(("%ld: PyThread_exit_thread called\n",
-             PyThread_get_thread_ident()));
-    if (!initialized)
-        exit(0);
-    _endthread();
-}
-
-/*
- * Lock support.  This is implemented with an event semaphore and critical
- * sections to make it behave more like a posix mutex than its OS/2
- * counterparts.
- */
-
-typedef struct os2_lock_t {
-    int is_set;
-    HEV changed;
-} *type_os2_lock;
-
-PyThread_type_lock
-PyThread_allocate_lock(void)
-{
-#if defined(PYCC_GCC)
-    _fmutex *sem = malloc(sizeof(_fmutex));
-    if (!initialized)
-        PyThread_init_thread();
-    dprintf(("%ld: PyThread_allocate_lock() -> %lx\n",
-             PyThread_get_thread_ident(),
-             (long)sem));
-    if (_fmutex_create(sem, 0)) {
-        free(sem);
-        sem = NULL;
-    }
-    return (PyThread_type_lock)sem;
-#else
-    APIRET rc;
-    type_os2_lock lock = (type_os2_lock)malloc(sizeof(struct os2_lock_t));
-
-    dprintf(("PyThread_allocate_lock called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-
-    lock->is_set = 0;
-
-    DosCreateEventSem(NULL, &lock->changed, 0, 0);
-
-    dprintf(("%ld: PyThread_allocate_lock() -> %p\n",
-             PyThread_get_thread_ident(),
-             lock->changed));
-
-    return (PyThread_type_lock)lock;
-#endif
-}
-
-void
-PyThread_free_lock(PyThread_type_lock aLock)
-{
-#if !defined(PYCC_GCC)
-    type_os2_lock lock = (type_os2_lock)aLock;
-#endif
-
-    dprintf(("%ld: PyThread_free_lock(%p) called\n",
-             PyThread_get_thread_ident(),aLock));
-
-#if defined(PYCC_GCC)
-    if (aLock) {
-        _fmutex_close((_fmutex *)aLock);
-        free((_fmutex *)aLock);
-    }
-#else
-    DosCloseEventSem(lock->changed);
-    free(aLock);
-#endif
-}
-
-/*
- * Return 1 on success if the lock was acquired
- *
- * and 0 if the lock was not acquired.
- */
-int
-PyThread_acquire_lock(PyThread_type_lock aLock, int waitflag)
-{
-#if !defined(PYCC_GCC)
-    int   done = 0;
-    ULONG count;
-    PID   pid = 0;
-    TID   tid = 0;
-    type_os2_lock lock = (type_os2_lock)aLock;
-#endif
-
-    dprintf(("%ld: PyThread_acquire_lock(%p, %d) called\n",
-             PyThread_get_thread_ident(),
-             aLock,
-             waitflag));
-
-#if defined(PYCC_GCC)
-    /* always successful if the lock doesn't exist */
-    if (aLock &&
-        _fmutex_request((_fmutex *)aLock, waitflag ? 0 : _FMR_NOWAIT))
-        return 0;
-#else
-    while (!done) {
-        /* if the lock is currently set, we have to wait for
-         * the state to change
-         */
-        if (lock->is_set) {
-            if (!waitflag)
-                return 0;
-            DosWaitEventSem(lock->changed, SEM_INDEFINITE_WAIT);
-        }
-
-        /* enter a critical section and try to get the semaphore.  If
-         * it is still locked, we will try again.
-         */
-        if (DosEnterCritSec())
-            return 0;
-
-        if (!lock->is_set) {
-            lock->is_set = 1;
-            DosResetEventSem(lock->changed, &count);
-            done = 1;
-        }
-
-        DosExitCritSec();
-    }
-#endif
-
-    return 1;
-}
-
-void
-PyThread_release_lock(PyThread_type_lock aLock)
-{
-#if !defined(PYCC_GCC)
-    type_os2_lock lock = (type_os2_lock)aLock;
-#endif
-
-    dprintf(("%ld: PyThread_release_lock(%p) called\n",
-             PyThread_get_thread_ident(),
-             aLock));
-
-#if defined(PYCC_GCC)
-    if (aLock)
-        _fmutex_release((_fmutex *)aLock);
-#else
-    if (!lock->is_set) {
-        dprintf(("%ld: Could not PyThread_release_lock(%p) error: %l\n",
-                 PyThread_get_thread_ident(),
-                 aLock,
-                 GetLastError()));
-        return;
-    }
-
-    if (DosEnterCritSec()) {
-        dprintf(("%ld: Could not PyThread_release_lock(%p) error: %l\n",
-                 PyThread_get_thread_ident(),
-                 aLock,
-                 GetLastError()));
-        return;
-    }
-
-    lock->is_set = 0;
-    DosPostEventSem(lock->changed);
-
-    DosExitCritSec();
-#endif
-}
-
-/* minimum/maximum thread stack sizes supported */
-#define THREAD_MIN_STACKSIZE    0x8000          /* 32kB */
-#define THREAD_MAX_STACKSIZE    0x2000000       /* 32MB */
-
-/* set the thread stack size.
- * Return 0 if size is valid, -1 otherwise.
- */
-static int
-_pythread_os2_set_stacksize(size_t size)
-{
-    /* set to default */
-    if (size == 0) {
-        _pythread_stacksize = 0;
-        return 0;
-    }
-
-    /* valid range? */
-    if (size >= THREAD_MIN_STACKSIZE && size < THREAD_MAX_STACKSIZE) {
-        _pythread_stacksize = size;
-        return 0;
-    }
-
-    return -1;
-}
-
-#define THREAD_SET_STACKSIZE(x) _pythread_os2_set_stacksize(x)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_pth.h b/AppPkg/Applications/Python/Python-2.7.2/Python/thread_pth.h
deleted file mode 100644
index e0e04aa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_pth.h
+++ /dev/null
@@ -1,178 +0,0 @@
-
-/* GNU pth threads interface
-   http://www.gnu.org/software/pth
-   2000-05-03 Andy Dustman <andy@dustman.net>
-
-   Adapted from Posix threads interface
-   12 May 1997 -- david arnold <davida@pobox.com>
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <pth.h>
-
-/* A pth mutex isn't sufficient to model the Python lock type
- * because pth mutexes can be acquired multiple times by the
- * same thread.
- *
- * The pth_lock struct implements a Python lock as a "locked?" bit
- * and a <condition, mutex> pair.  In general, if the bit can be acquired
- * instantly, it is, else the pair is used to block the thread until the
- * bit is cleared.
- */
-
-typedef struct {
-    char             locked; /* 0=unlocked, 1=locked */
-    /* a <cond, mutex> pair to handle an acquire of a locked lock */
-    pth_cond_t   lock_released;
-    pth_mutex_t  mut;
-} pth_lock;
-
-#define CHECK_STATUS(name)  if (status == -1) { printf("%d ", status); perror(name); error = 1; }
-
-pth_attr_t PyThread_attr;
-
-/*
- * Initialization.
- */
-
-static void PyThread__init_thread(void)
-{
-    pth_init();
-    PyThread_attr = pth_attr_new();
-    pth_attr_set(PyThread_attr, PTH_ATTR_STACK_SIZE, 1<<18);
-    pth_attr_set(PyThread_attr, PTH_ATTR_JOINABLE, FALSE);
-}
-
-/*
- * Thread support.
- */
-
-
-long PyThread_start_new_thread(void (*func)(void *), void *arg)
-{
-    pth_t th;
-    dprintf(("PyThread_start_new_thread called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-
-    th = pth_spawn(PyThread_attr,
-                             (void* (*)(void *))func,
-                             (void *)arg
-                             );
-
-    return th;
-}
-
-long PyThread_get_thread_ident(void)
-{
-    volatile pth_t threadid;
-    if (!initialized)
-        PyThread_init_thread();
-    /* Jump through some hoops for Alpha OSF/1 */
-    threadid = pth_self();
-    return (long) *(long *) &threadid;
-}
-
-void PyThread_exit_thread(void)
-{
-    dprintf(("PyThread_exit_thread called\n"));
-    if (!initialized) {
-        exit(0);
-    }
-}
-
-/*
- * Lock support.
- */
-PyThread_type_lock PyThread_allocate_lock(void)
-{
-    pth_lock *lock;
-    int status, error = 0;
-
-    dprintf(("PyThread_allocate_lock called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-
-    lock = (pth_lock *) malloc(sizeof(pth_lock));
-    memset((void *)lock, '\0', sizeof(pth_lock));
-    if (lock) {
-        lock->locked = 0;
-        status = pth_mutex_init(&lock->mut);
-        CHECK_STATUS("pth_mutex_init");
-        status = pth_cond_init(&lock->lock_released);
-        CHECK_STATUS("pth_cond_init");
-        if (error) {
-            free((void *)lock);
-            lock = NULL;
-        }
-    }
-    dprintf(("PyThread_allocate_lock() -> %p\n", lock));
-    return (PyThread_type_lock) lock;
-}
-
-void PyThread_free_lock(PyThread_type_lock lock)
-{
-    pth_lock *thelock = (pth_lock *)lock;
-
-    dprintf(("PyThread_free_lock(%p) called\n", lock));
-
-    free((void *)thelock);
-}
-
-int PyThread_acquire_lock(PyThread_type_lock lock, int waitflag)
-{
-    int success;
-    pth_lock *thelock = (pth_lock *)lock;
-    int status, error = 0;
-
-    dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock, waitflag));
-
-    status = pth_mutex_acquire(&thelock->mut, !waitflag, NULL);
-    CHECK_STATUS("pth_mutex_acquire[1]");
-    success = thelock->locked == 0;
-    if (success) thelock->locked = 1;
-    status = pth_mutex_release( &thelock->mut );
-    CHECK_STATUS("pth_mutex_release[1]");
-
-    if ( !success && waitflag ) {
-        /* continue trying until we get the lock */
-
-        /* mut must be locked by me -- part of the condition
-         * protocol */
-        status = pth_mutex_acquire( &thelock->mut, !waitflag, NULL );
-        CHECK_STATUS("pth_mutex_acquire[2]");
-        while ( thelock->locked ) {
-            status = pth_cond_await(&thelock->lock_released,
-                                    &thelock->mut, NULL);
-            CHECK_STATUS("pth_cond_await");
-        }
-        thelock->locked = 1;
-        status = pth_mutex_release( &thelock->mut );
-        CHECK_STATUS("pth_mutex_release[2]");
-        success = 1;
-    }
-    if (error) success = 0;
-    dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success));
-    return success;
-}
-
-void PyThread_release_lock(PyThread_type_lock lock)
-{
-    pth_lock *thelock = (pth_lock *)lock;
-    int status, error = 0;
-
-    dprintf(("PyThread_release_lock(%p) called\n", lock));
-
-    status = pth_mutex_acquire( &thelock->mut, 0, NULL );
-    CHECK_STATUS("pth_mutex_acquire[3]");
-
-    thelock->locked = 0;
-
-    status = pth_mutex_release( &thelock->mut );
-    CHECK_STATUS("pth_mutex_release[3]");
-
-    /* wake up someone (anyone, if any) waiting on the lock */
-    status = pth_cond_notify( &thelock->lock_released, 0 );
-    CHECK_STATUS("pth_cond_notify");
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_pthread.h b/AppPkg/Applications/Python/Python-2.7.2/Python/thread_pthread.h
deleted file mode 100644
index 592e99d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_pthread.h
+++ /dev/null
@@ -1,505 +0,0 @@
-
-/* Posix threads interface */
-
-#include <stdlib.h>
-#include <string.h>
-#if defined(__APPLE__) || defined(HAVE_PTHREAD_DESTRUCTOR)
-#define destructor xxdestructor
-#endif
-#include <pthread.h>
-#if defined(__APPLE__) || defined(HAVE_PTHREAD_DESTRUCTOR)
-#undef destructor
-#endif
-#include <signal.h>
-
-/* The POSIX spec requires that use of pthread_attr_setstacksize
-   be conditional on _POSIX_THREAD_ATTR_STACKSIZE being defined. */
-#ifdef _POSIX_THREAD_ATTR_STACKSIZE
-#ifndef THREAD_STACK_SIZE
-#define THREAD_STACK_SIZE       0       /* use default stack size */
-#endif
-
-#if (defined(__APPLE__) || defined(__FreeBSD__)) && defined(THREAD_STACK_SIZE) && THREAD_STACK_SIZE == 0
-   /* The default stack size for new threads on OSX is small enough that
-    * we'll get hard crashes instead of 'maximum recursion depth exceeded'
-    * exceptions.
-    *
-    * The default stack size below is the minimal stack size where a
-    * simple recursive function doesn't cause a hard crash.
-    */
-#undef  THREAD_STACK_SIZE
-#define THREAD_STACK_SIZE       0x400000
-#endif
-/* for safety, ensure a viable minimum stacksize */
-#define THREAD_STACK_MIN        0x8000  /* 32kB */
-#else  /* !_POSIX_THREAD_ATTR_STACKSIZE */
-#ifdef THREAD_STACK_SIZE
-#error "THREAD_STACK_SIZE defined but _POSIX_THREAD_ATTR_STACKSIZE undefined"
-#endif
-#endif
-
-/* The POSIX spec says that implementations supporting the sem_*
-   family of functions must indicate this by defining
-   _POSIX_SEMAPHORES. */
-#ifdef _POSIX_SEMAPHORES
-/* On FreeBSD 4.x, _POSIX_SEMAPHORES is defined empty, so
-   we need to add 0 to make it work there as well. */
-#if (_POSIX_SEMAPHORES+0) == -1
-#define HAVE_BROKEN_POSIX_SEMAPHORES
-#else
-#include <semaphore.h>
-#include <errno.h>
-#endif
-#endif
-
-/* Before FreeBSD 5.4, system scope threads was very limited resource
-   in default setting.  So the process scope is preferred to get
-   enough number of threads to work. */
-#ifdef __FreeBSD__
-#include <osreldate.h>
-#if __FreeBSD_version >= 500000 && __FreeBSD_version < 504101
-#undef PTHREAD_SYSTEM_SCHED_SUPPORTED
-#endif
-#endif
-
-#if !defined(pthread_attr_default)
-#  define pthread_attr_default ((pthread_attr_t *)NULL)
-#endif
-#if !defined(pthread_mutexattr_default)
-#  define pthread_mutexattr_default ((pthread_mutexattr_t *)NULL)
-#endif
-#if !defined(pthread_condattr_default)
-#  define pthread_condattr_default ((pthread_condattr_t *)NULL)
-#endif
-
-
-/* Whether or not to use semaphores directly rather than emulating them with
- * mutexes and condition variables:
- */
-#if defined(_POSIX_SEMAPHORES) && !defined(HAVE_BROKEN_POSIX_SEMAPHORES)
-#  define USE_SEMAPHORES
-#else
-#  undef USE_SEMAPHORES
-#endif
-
-
-/* On platforms that don't use standard POSIX threads pthread_sigmask()
- * isn't present.  DEC threads uses sigprocmask() instead as do most
- * other UNIX International compliant systems that don't have the full
- * pthread implementation.
- */
-#if defined(HAVE_PTHREAD_SIGMASK) && !defined(HAVE_BROKEN_PTHREAD_SIGMASK)
-#  define SET_THREAD_SIGMASK pthread_sigmask
-#else
-#  define SET_THREAD_SIGMASK sigprocmask
-#endif
-
-
-/* A pthread mutex isn't sufficient to model the Python lock type
- * because, according to Draft 5 of the docs (P1003.4a/D5), both of the
- * following are undefined:
- *  -> a thread tries to lock a mutex it already has locked
- *  -> a thread tries to unlock a mutex locked by a different thread
- * pthread mutexes are designed for serializing threads over short pieces
- * of code anyway, so wouldn't be an appropriate implementation of
- * Python's locks regardless.
- *
- * The pthread_lock struct implements a Python lock as a "locked?" bit
- * and a <condition, mutex> pair.  In general, if the bit can be acquired
- * instantly, it is, else the pair is used to block the thread until the
- * bit is cleared.     9 May 1994 tim@ksr.com
- */
-
-typedef struct {
-    char             locked; /* 0=unlocked, 1=locked */
-    /* a <cond, mutex> pair to handle an acquire of a locked lock */
-    pthread_cond_t   lock_released;
-    pthread_mutex_t  mut;
-} pthread_lock;
-
-#define CHECK_STATUS(name)  if (status != 0) { perror(name); error = 1; }
-
-/*
- * Initialization.
- */
-
-#ifdef _HAVE_BSDI
-static
-void _noop(void)
-{
-}
-
-static void
-PyThread__init_thread(void)
-{
-    /* DO AN INIT BY STARTING THE THREAD */
-    static int dummy = 0;
-    pthread_t thread1;
-    pthread_create(&thread1, NULL, (void *) _noop, &dummy);
-    pthread_join(thread1, NULL);
-}
-
-#else /* !_HAVE_BSDI */
-
-static void
-PyThread__init_thread(void)
-{
-#if defined(_AIX) && defined(__GNUC__)
-    pthread_init();
-#endif
-}
-
-#endif /* !_HAVE_BSDI */
-
-/*
- * Thread support.
- */
-
-
-long
-PyThread_start_new_thread(void (*func)(void *), void *arg)
-{
-    pthread_t th;
-    int status;
-#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
-    pthread_attr_t attrs;
-#endif
-#if defined(THREAD_STACK_SIZE)
-    size_t      tss;
-#endif
-
-    dprintf(("PyThread_start_new_thread called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-
-#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
-    if (pthread_attr_init(&attrs) != 0)
-        return -1;
-#endif
-#if defined(THREAD_STACK_SIZE)
-    tss = (_pythread_stacksize != 0) ? _pythread_stacksize
-                                     : THREAD_STACK_SIZE;
-    if (tss != 0) {
-        if (pthread_attr_setstacksize(&attrs, tss) != 0) {
-            pthread_attr_destroy(&attrs);
-            return -1;
-        }
-    }
-#endif
-#if defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
-    pthread_attr_setscope(&attrs, PTHREAD_SCOPE_SYSTEM);
-#endif
-
-    status = pthread_create(&th,
-#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
-                             &attrs,
-#else
-                             (pthread_attr_t*)NULL,
-#endif
-                             (void* (*)(void *))func,
-                             (void *)arg
-                             );
-
-#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
-    pthread_attr_destroy(&attrs);
-#endif
-    if (status != 0)
-        return -1;
-
-    pthread_detach(th);
-
-#if SIZEOF_PTHREAD_T <= SIZEOF_LONG
-    return (long) th;
-#else
-    return (long) *(long *) &th;
-#endif
-}
-
-/* XXX This implementation is considered (to quote Tim Peters) "inherently
-   hosed" because:
-     - It does not guarantee the promise that a non-zero integer is returned.
-     - The cast to long is inherently unsafe.
-     - It is not clear that the 'volatile' (for AIX?) and ugly casting in the
-       latter return statement (for Alpha OSF/1) are any longer necessary.
-*/
-long
-PyThread_get_thread_ident(void)
-{
-    volatile pthread_t threadid;
-    if (!initialized)
-        PyThread_init_thread();
-    /* Jump through some hoops for Alpha OSF/1 */
-    threadid = pthread_self();
-#if SIZEOF_PTHREAD_T <= SIZEOF_LONG
-    return (long) threadid;
-#else
-    return (long) *(long *) &threadid;
-#endif
-}
-
-void
-PyThread_exit_thread(void)
-{
-    dprintf(("PyThread_exit_thread called\n"));
-    if (!initialized) {
-        exit(0);
-    }
-}
-
-#ifdef USE_SEMAPHORES
-
-/*
- * Lock support.
- */
-
-PyThread_type_lock
-PyThread_allocate_lock(void)
-{
-    sem_t *lock;
-    int status, error = 0;
-
-    dprintf(("PyThread_allocate_lock called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-
-    lock = (sem_t *)malloc(sizeof(sem_t));
-
-    if (lock) {
-        status = sem_init(lock,0,1);
-        CHECK_STATUS("sem_init");
-
-        if (error) {
-            free((void *)lock);
-            lock = NULL;
-        }
-    }
-
-    dprintf(("PyThread_allocate_lock() -> %p\n", lock));
-    return (PyThread_type_lock)lock;
-}
-
-void
-PyThread_free_lock(PyThread_type_lock lock)
-{
-    sem_t *thelock = (sem_t *)lock;
-    int status, error = 0;
-
-    dprintf(("PyThread_free_lock(%p) called\n", lock));
-
-    if (!thelock)
-        return;
-
-    status = sem_destroy(thelock);
-    CHECK_STATUS("sem_destroy");
-
-    free((void *)thelock);
-}
-
-/*
- * As of February 2002, Cygwin thread implementations mistakenly report error
- * codes in the return value of the sem_ calls (like the pthread_ functions).
- * Correct implementations return -1 and put the code in errno. This supports
- * either.
- */
-static int
-fix_status(int status)
-{
-    return (status == -1) ? errno : status;
-}
-
-int
-PyThread_acquire_lock(PyThread_type_lock lock, int waitflag)
-{
-    int success;
-    sem_t *thelock = (sem_t *)lock;
-    int status, error = 0;
-
-    dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock, waitflag));
-
-    do {
-        if (waitflag)
-            status = fix_status(sem_wait(thelock));
-        else
-            status = fix_status(sem_trywait(thelock));
-    } while (status == EINTR); /* Retry if interrupted by a signal */
-
-    if (waitflag) {
-        CHECK_STATUS("sem_wait");
-    } else if (status != EAGAIN) {
-        CHECK_STATUS("sem_trywait");
-    }
-
-    success = (status == 0) ? 1 : 0;
-
-    dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success));
-    return success;
-}
-
-void
-PyThread_release_lock(PyThread_type_lock lock)
-{
-    sem_t *thelock = (sem_t *)lock;
-    int status, error = 0;
-
-    dprintf(("PyThread_release_lock(%p) called\n", lock));
-
-    status = sem_post(thelock);
-    CHECK_STATUS("sem_post");
-}
-
-#else /* USE_SEMAPHORES */
-
-/*
- * Lock support.
- */
-PyThread_type_lock
-PyThread_allocate_lock(void)
-{
-    pthread_lock *lock;
-    int status, error = 0;
-
-    dprintf(("PyThread_allocate_lock called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-
-    lock = (pthread_lock *) malloc(sizeof(pthread_lock));
-    if (lock) {
-        memset((void *)lock, '\0', sizeof(pthread_lock));
-        lock->locked = 0;
-
-        status = pthread_mutex_init(&lock->mut,
-                                    pthread_mutexattr_default);
-        CHECK_STATUS("pthread_mutex_init");
-
-        status = pthread_cond_init(&lock->lock_released,
-                                   pthread_condattr_default);
-        CHECK_STATUS("pthread_cond_init");
-
-        if (error) {
-            free((void *)lock);
-            lock = 0;
-        }
-    }
-
-    dprintf(("PyThread_allocate_lock() -> %p\n", lock));
-    return (PyThread_type_lock) lock;
-}
-
-void
-PyThread_free_lock(PyThread_type_lock lock)
-{
-    pthread_lock *thelock = (pthread_lock *)lock;
-    int status, error = 0;
-
-    dprintf(("PyThread_free_lock(%p) called\n", lock));
-
-    status = pthread_mutex_destroy( &thelock->mut );
-    CHECK_STATUS("pthread_mutex_destroy");
-
-    status = pthread_cond_destroy( &thelock->lock_released );
-    CHECK_STATUS("pthread_cond_destroy");
-
-    free((void *)thelock);
-}
-
-int
-PyThread_acquire_lock(PyThread_type_lock lock, int waitflag)
-{
-    int success;
-    pthread_lock *thelock = (pthread_lock *)lock;
-    int status, error = 0;
-
-    dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock, waitflag));
-
-    status = pthread_mutex_lock( &thelock->mut );
-    CHECK_STATUS("pthread_mutex_lock[1]");
-    success = thelock->locked == 0;
-
-    if ( !success && waitflag ) {
-        /* continue trying until we get the lock */
-
-        /* mut must be locked by me -- part of the condition
-         * protocol */
-        while ( thelock->locked ) {
-            status = pthread_cond_wait(&thelock->lock_released,
-                                       &thelock->mut);
-            CHECK_STATUS("pthread_cond_wait");
-        }
-        success = 1;
-    }
-    if (success) thelock->locked = 1;
-    status = pthread_mutex_unlock( &thelock->mut );
-    CHECK_STATUS("pthread_mutex_unlock[1]");
-
-    if (error) success = 0;
-    dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success));
-    return success;
-}
-
-void
-PyThread_release_lock(PyThread_type_lock lock)
-{
-    pthread_lock *thelock = (pthread_lock *)lock;
-    int status, error = 0;
-
-    dprintf(("PyThread_release_lock(%p) called\n", lock));
-
-    status = pthread_mutex_lock( &thelock->mut );
-    CHECK_STATUS("pthread_mutex_lock[3]");
-
-    thelock->locked = 0;
-
-    status = pthread_mutex_unlock( &thelock->mut );
-    CHECK_STATUS("pthread_mutex_unlock[3]");
-
-    /* wake up someone (anyone, if any) waiting on the lock */
-    status = pthread_cond_signal( &thelock->lock_released );
-    CHECK_STATUS("pthread_cond_signal");
-}
-
-#endif /* USE_SEMAPHORES */
-
-/* set the thread stack size.
- * Return 0 if size is valid, -1 if size is invalid,
- * -2 if setting stack size is not supported.
- */
-static int
-_pythread_pthread_set_stacksize(size_t size)
-{
-#if defined(THREAD_STACK_SIZE)
-    pthread_attr_t attrs;
-    size_t tss_min;
-    int rc = 0;
-#endif
-
-    /* set to default */
-    if (size == 0) {
-        _pythread_stacksize = 0;
-        return 0;
-    }
-
-#if defined(THREAD_STACK_SIZE)
-#if defined(PTHREAD_STACK_MIN)
-    tss_min = PTHREAD_STACK_MIN > THREAD_STACK_MIN ? PTHREAD_STACK_MIN
-                                                   : THREAD_STACK_MIN;
-#else
-    tss_min = THREAD_STACK_MIN;
-#endif
-    if (size >= tss_min) {
-        /* validate stack size by setting thread attribute */
-        if (pthread_attr_init(&attrs) == 0) {
-            rc = pthread_attr_setstacksize(&attrs, size);
-            pthread_attr_destroy(&attrs);
-            if (rc == 0) {
-                _pythread_stacksize = size;
-                return 0;
-            }
-        }
-    }
-    return -1;
-#else
-    return -2;
-#endif
-}
-
-#define THREAD_SET_STACKSIZE(x) _pythread_pthread_set_stacksize(x)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_sgi.h b/AppPkg/Applications/Python/Python-2.7.2/Python/thread_sgi.h
deleted file mode 100644
index c2d8132..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_sgi.h
+++ /dev/null
@@ -1,259 +0,0 @@
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/prctl.h>
-#include <ulocks.h>
-#include <errno.h>
-
-#define HDR_SIZE        2680    /* sizeof(ushdr_t) */
-#define MAXPROC         100     /* max # of threads that can be started */
-
-static usptr_t *shared_arena;
-static ulock_t count_lock;      /* protection for some variables */
-static ulock_t wait_lock;       /* lock used to wait for other threads */
-static int waiting_for_threads; /* protected by count_lock */
-static int nthreads;            /* protected by count_lock */
-static int exit_status;
-static int exiting;             /* we're already exiting (for maybe_exit) */
-static pid_t my_pid;            /* PID of main thread */
-static struct pidlist {
-    pid_t parent;
-    pid_t child;
-} pidlist[MAXPROC];     /* PIDs of other threads; protected by count_lock */
-static int maxpidindex;         /* # of PIDs in pidlist */
-/*
- * Initialization.
- */
-static void PyThread__init_thread(void)
-{
-#ifdef USE_DL
-    long addr, size;
-#endif /* USE_DL */
-
-
-#ifdef USE_DL
-    if ((size = usconfig(CONF_INITSIZE, 64*1024)) < 0)
-        perror("usconfig - CONF_INITSIZE (check)");
-    if (usconfig(CONF_INITSIZE, size) < 0)
-        perror("usconfig - CONF_INITSIZE (reset)");
-    addr = (long) dl_getrange(size + HDR_SIZE);
-    dprintf(("trying to use addr %p-%p for shared arena\n", addr, addr+size));
-    errno = 0;
-    if ((addr = usconfig(CONF_ATTACHADDR, addr)) < 0 && errno != 0)
-        perror("usconfig - CONF_ATTACHADDR (set)");
-#endif /* USE_DL */
-    if (usconfig(CONF_INITUSERS, 16) < 0)
-        perror("usconfig - CONF_INITUSERS");
-    my_pid = getpid();          /* so that we know which is the main thread */
-    if (usconfig(CONF_ARENATYPE, US_SHAREDONLY) < 0)
-        perror("usconfig - CONF_ARENATYPE");
-    usconfig(CONF_LOCKTYPE, US_DEBUG); /* XXX */
-#ifdef Py_DEBUG
-    if (thread_debug & 4)
-        usconfig(CONF_LOCKTYPE, US_DEBUGPLUS);
-    else if (thread_debug & 2)
-        usconfig(CONF_LOCKTYPE, US_DEBUG);
-#endif /* Py_DEBUG */
-    if ((shared_arena = usinit(tmpnam(0))) == 0)
-        perror("usinit");
-#ifdef USE_DL
-    if (usconfig(CONF_ATTACHADDR, addr) < 0) /* reset address */
-        perror("usconfig - CONF_ATTACHADDR (reset)");
-#endif /* USE_DL */
-    if ((count_lock = usnewlock(shared_arena)) == NULL)
-        perror("usnewlock (count_lock)");
-    (void) usinitlock(count_lock);
-    if ((wait_lock = usnewlock(shared_arena)) == NULL)
-        perror("usnewlock (wait_lock)");
-    dprintf(("arena start: %p, arena size: %ld\n",  shared_arena, (long) usconfig(CONF_GETSIZE, shared_arena)));
-}
-
-/*
- * Thread support.
- */
-
-static void clean_threads(void)
-{
-    int i, j;
-    pid_t mypid, pid;
-
-    /* clean up any exited threads */
-    mypid = getpid();
-    i = 0;
-    while (i < maxpidindex) {
-        if (pidlist[i].parent == mypid && (pid = pidlist[i].child) > 0) {
-            pid = waitpid(pid, 0, WNOHANG);
-            if (pid > 0) {
-                /* a thread has exited */
-                pidlist[i] = pidlist[--maxpidindex];
-                /* remove references to children of dead proc */
-                for (j = 0; j < maxpidindex; j++)
-                    if (pidlist[j].parent == pid)
-                        pidlist[j].child = -1;
-                continue; /* don't increment i */
-            }
-        }
-        i++;
-    }
-    /* clean up the list */
-    i = 0;
-    while (i < maxpidindex) {
-        if (pidlist[i].child == -1) {
-            pidlist[i] = pidlist[--maxpidindex];
-            continue; /* don't increment i */
-        }
-        i++;
-    }
-}
-
-long PyThread_start_new_thread(void (*func)(void *), void *arg)
-{
-#ifdef USE_DL
-    long addr, size;
-    static int local_initialized = 0;
-#endif /* USE_DL */
-    int success = 0;            /* init not needed when SOLARIS_THREADS and */
-                /* C_THREADS implemented properly */
-
-    dprintf(("PyThread_start_new_thread called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-    switch (ussetlock(count_lock)) {
-    case 0: return 0;
-    case -1: perror("ussetlock (count_lock)");
-    }
-    if (maxpidindex >= MAXPROC)
-        success = -1;
-    else {
-#ifdef USE_DL
-        if (!local_initialized) {
-            if ((size = usconfig(CONF_INITSIZE, 64*1024)) < 0)
-                perror("usconfig - CONF_INITSIZE (check)");
-            if (usconfig(CONF_INITSIZE, size) < 0)
-                perror("usconfig - CONF_INITSIZE (reset)");
-            addr = (long) dl_getrange(size + HDR_SIZE);
-            dprintf(("trying to use addr %p-%p for sproc\n",
-                     addr, addr+size));
-            errno = 0;
-            if ((addr = usconfig(CONF_ATTACHADDR, addr)) < 0 &&
-                errno != 0)
-                perror("usconfig - CONF_ATTACHADDR (set)");
-        }
-#endif /* USE_DL */
-        clean_threads();
-        if ((success = sproc(func, PR_SALL, arg)) < 0)
-            perror("sproc");
-#ifdef USE_DL
-        if (!local_initialized) {
-            if (usconfig(CONF_ATTACHADDR, addr) < 0)
-                /* reset address */
-                perror("usconfig - CONF_ATTACHADDR (reset)");
-            local_initialized = 1;
-        }
-#endif /* USE_DL */
-        if (success >= 0) {
-            nthreads++;
-            pidlist[maxpidindex].parent = getpid();
-            pidlist[maxpidindex++].child = success;
-            dprintf(("pidlist[%d] = %d\n",
-                     maxpidindex-1, success));
-        }
-    }
-    if (usunsetlock(count_lock) < 0)
-        perror("usunsetlock (count_lock)");
-    return success;
-}
-
-long PyThread_get_thread_ident(void)
-{
-    return getpid();
-}
-
-void PyThread_exit_thread(void)
-{
-    dprintf(("PyThread_exit_thread called\n"));
-    if (!initialized)
-        exit(0);
-    if (ussetlock(count_lock) < 0)
-        perror("ussetlock (count_lock)");
-    nthreads--;
-    if (getpid() == my_pid) {
-        /* main thread; wait for other threads to exit */
-        exiting = 1;
-        waiting_for_threads = 1;
-        if (ussetlock(wait_lock) < 0)
-            perror("ussetlock (wait_lock)");
-        for (;;) {
-            if (nthreads < 0) {
-                dprintf(("really exit (%d)\n", exit_status));
-                exit(exit_status);
-            }
-            if (usunsetlock(count_lock) < 0)
-                perror("usunsetlock (count_lock)");
-            dprintf(("waiting for other threads (%d)\n", nthreads));
-            if (ussetlock(wait_lock) < 0)
-                perror("ussetlock (wait_lock)");
-            if (ussetlock(count_lock) < 0)
-                perror("ussetlock (count_lock)");
-        }
-    }
-    /* not the main thread */
-    if (waiting_for_threads) {
-        dprintf(("main thread is waiting\n"));
-        if (usunsetlock(wait_lock) < 0)
-            perror("usunsetlock (wait_lock)");
-    }
-    if (usunsetlock(count_lock) < 0)
-        perror("usunsetlock (count_lock)");
-    _exit(0);
-}
-
-/*
- * Lock support.
- */
-PyThread_type_lock PyThread_allocate_lock(void)
-{
-    ulock_t lock;
-
-    dprintf(("PyThread_allocate_lock called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-
-    if ((lock = usnewlock(shared_arena)) == NULL)
-        perror("usnewlock");
-    (void) usinitlock(lock);
-    dprintf(("PyThread_allocate_lock() -> %p\n", lock));
-    return (PyThread_type_lock) lock;
-}
-
-void PyThread_free_lock(PyThread_type_lock lock)
-{
-    dprintf(("PyThread_free_lock(%p) called\n", lock));
-    usfreelock((ulock_t) lock, shared_arena);
-}
-
-int PyThread_acquire_lock(PyThread_type_lock lock, int waitflag)
-{
-    int success;
-
-    dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock, waitflag));
-    errno = 0;                  /* clear it just in case */
-    if (waitflag)
-        success = ussetlock((ulock_t) lock);
-    else
-        success = uscsetlock((ulock_t) lock, 1); /* Try it once */
-    if (success < 0)
-        perror(waitflag ? "ussetlock" : "uscsetlock");
-    dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success));
-    return success;
-}
-
-void PyThread_release_lock(PyThread_type_lock lock)
-{
-    dprintf(("PyThread_release_lock(%p) called\n", lock));
-    if (usunsetlock((ulock_t) lock) < 0)
-        perror("usunsetlock");
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_solaris.h b/AppPkg/Applications/Python/Python-2.7.2/Python/thread_solaris.h
deleted file mode 100644
index 9dcb754..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_solaris.h
+++ /dev/null
@@ -1,130 +0,0 @@
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include </usr/include/thread.h>
-#undef _POSIX_THREADS
-
-
-/*
- * Initialization.
- */
-static void PyThread__init_thread(void)
-{
-}
-
-/*
- * Thread support.
- */
-struct func_arg {
-    void (*func)(void *);
-    void *arg;
-};
-
-static void *
-new_func(void *funcarg)
-{
-    void (*func)(void *);
-    void *arg;
-
-    func = ((struct func_arg *) funcarg)->func;
-    arg = ((struct func_arg *) funcarg)->arg;
-    free(funcarg);
-    (*func)(arg);
-    return 0;
-}
-
-
-long
-PyThread_start_new_thread(void (*func)(void *), void *arg)
-{
-    thread_t tid;
-    struct func_arg *funcarg;
-
-    dprintf(("PyThread_start_new_thread called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-    funcarg = (struct func_arg *) malloc(sizeof(struct func_arg));
-    funcarg->func = func;
-    funcarg->arg = arg;
-    if (thr_create(0, 0, new_func, funcarg,
-                   THR_DETACHED | THR_NEW_LWP, &tid)) {
-        perror("thr_create");
-        free((void *) funcarg);
-        return -1;
-    }
-    return tid;
-}
-
-long
-PyThread_get_thread_ident(void)
-{
-    if (!initialized)
-        PyThread_init_thread();
-    return thr_self();
-}
-
-void
-PyThread_exit_thread(void)
-{
-    dprintf(("PyThread_exit_thread called\n"));
-    if (!initialized)
-        exit(0);
-    thr_exit(0);
-}
-
-/*
- * Lock support.
- */
-PyThread_type_lock
-PyThread_allocate_lock(void)
-{
-    mutex_t *lock;
-
-    dprintf(("PyThread_allocate_lock called\n"));
-    if (!initialized)
-        PyThread_init_thread();
-
-    lock = (mutex_t *) malloc(sizeof(mutex_t));
-    if (mutex_init(lock, USYNC_THREAD, 0)) {
-        perror("mutex_init");
-        free((void *) lock);
-        lock = 0;
-    }
-    dprintf(("PyThread_allocate_lock() -> %p\n", lock));
-    return (PyThread_type_lock) lock;
-}
-
-void
-PyThread_free_lock(PyThread_type_lock lock)
-{
-    dprintf(("PyThread_free_lock(%p) called\n", lock));
-    mutex_destroy((mutex_t *) lock);
-    free((void *) lock);
-}
-
-int
-PyThread_acquire_lock(PyThread_type_lock lock, int waitflag)
-{
-    int success;
-
-    dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock, waitflag));
-    if (waitflag)
-        success = mutex_lock((mutex_t *) lock);
-    else
-        success = mutex_trylock((mutex_t *) lock);
-    if (success < 0)
-        perror(waitflag ? "mutex_lock" : "mutex_trylock");
-    else
-        success = !success; /* solaris does it the other way round */
-    dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success));
-    return success;
-}
-
-void
-PyThread_release_lock(PyThread_type_lock lock)
-{
-    dprintf(("PyThread_release_lock(%p) called\n", lock));
-    if (mutex_unlock((mutex_t *) lock))
-        perror("mutex_unlock");
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_wince.h b/AppPkg/Applications/Python/Python-2.7.2/Python/thread_wince.h
deleted file mode 100644
index 7835567..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/thread_wince.h
+++ /dev/null
@@ -1,136 +0,0 @@
-
-/* This code implemented by Mark Hammond (MHammond@skippinet.com.au) */
-
-#include <windows.h>
-#include <limits.h>
-#include <pydebug.h>
-
-long PyThread_get_thread_ident(void);
-
-/*
- * Change all headers to pure ANSI as no one will use K&R style on an
- * NT
- */
-
-/*
- * Initialization of the C package, should not be needed.
- */
-static void PyThread__init_thread(void)
-{
-}
-
-/*
- * Thread support.
- */
-long PyThread_start_new_thread(void (*func)(void *), void *arg)
-{
-    long rv;
-    int success = -1;
-
-    dprintf(("%ld: PyThread_start_new_thread called\n", PyThread_get_thread_ident()));
-    if (!initialized)
-        PyThread_init_thread();
-
-    rv = _beginthread(func, 0, arg); /* use default stack size */
-
-    if (rv != -1) {
-        success = 0;
-        dprintf(("%ld: PyThread_start_new_thread succeeded:\n", PyThread_get_thread_ident()));
-    }
-
-    return success;
-}
-
-/*
- * Return the thread Id instead of an handle. The Id is said to uniquely identify the
- * thread in the system
- */
-long PyThread_get_thread_ident(void)
-{
-    if (!initialized)
-        PyThread_init_thread();
-
-    return GetCurrentThreadId();
-}
-
-void PyThread_exit_thread(void)
-{
-    dprintf(("%ld: PyThread_exit_thread called\n", PyThread_get_thread_ident()));
-    if (!initialized)
-        exit(0);
-    _endthread();
-}
-
-/*
- * Lock support. It has to be implemented using Mutexes, as
- * CE doesnt support semaphores.  Therefore we use some hacks to
- * simulate the non reentrant requirements of Python locks
- */
-PyThread_type_lock PyThread_allocate_lock(void)
-{
-    HANDLE aLock;
-
-    dprintf(("PyThread_allocate_lock called\n"));
-    if (!initialized)
-    PyThread_init_thread();
-
-    aLock = CreateEvent(NULL,           /* Security attributes      */
-            0,              /* Manual-Reset               */
-                        1,              /* Is initially signalled  */
-            NULL);          /* Name of event            */
-
-    dprintf(("%ld: PyThread_allocate_lock() -> %p\n", PyThread_get_thread_ident(), aLock));
-
-    return (PyThread_type_lock) aLock;
-}
-
-void PyThread_free_lock(PyThread_type_lock aLock)
-{
-    dprintf(("%ld: PyThread_free_lock(%p) called\n", PyThread_get_thread_ident(),aLock));
-
-    CloseHandle(aLock);
-}
-
-/*
- * Return 1 on success if the lock was acquired
- *
- * and 0 if the lock was not acquired. This means a 0 is returned
- * if the lock has already been acquired by this thread!
- */
-int PyThread_acquire_lock(PyThread_type_lock aLock, int waitflag)
-{
-    int success = 1;
-    DWORD waitResult;
-
-    dprintf(("%ld: PyThread_acquire_lock(%p, %d) called\n", PyThread_get_thread_ident(),aLock, waitflag));
-
-#ifndef DEBUG
-    waitResult = WaitForSingleObject(aLock, (waitflag ? INFINITE : 0));
-#else
-    /* To aid in debugging, we regularly wake up.  This allows us to
-    break into the debugger */
-    while (TRUE) {
-        waitResult = WaitForSingleObject(aLock, waitflag ? 3000 : 0);
-        if (waitflag==0 || (waitflag && waitResult == WAIT_OBJECT_0))
-            break;
-    }
-#endif
-
-    if (waitResult != WAIT_OBJECT_0) {
-                success = 0;    /* We failed */
-    }
-
-    dprintf(("%ld: PyThread_acquire_lock(%p, %d) -> %d\n", PyThread_get_thread_ident(),aLock, waitflag, success));
-
-    return success;
-}
-
-void PyThread_release_lock(PyThread_type_lock aLock)
-{
-    dprintf(("%ld: PyThread_release_lock(%p) called\n", PyThread_get_thread_ident(),aLock));
-
-    if (!SetEvent(aLock))
-    dprintf(("%ld: Could not PyThread_release_lock(%p) error: %l\n", PyThread_get_thread_ident(), aLock, GetLastError()));
-}
-
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Python/traceback.c b/AppPkg/Applications/Python/Python-2.7.2/Python/traceback.c
deleted file mode 100644
index 85caa02..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Python/traceback.c
+++ /dev/null
@@ -1,283 +0,0 @@
-
-/* Traceback implementation */
-
-#include "Python.h"
-
-#include "code.h"
-#include "frameobject.h"
-#include "structmember.h"
-#include "osdefs.h"
-#include "traceback.h"
-
-#define OFF(x) offsetof(PyTracebackObject, x)
-
-static PyMemberDef tb_memberlist[] = {
-    {"tb_next",         T_OBJECT,       OFF(tb_next), READONLY},
-    {"tb_frame",        T_OBJECT,       OFF(tb_frame), READONLY},
-    {"tb_lasti",        T_INT,          OFF(tb_lasti), READONLY},
-    {"tb_lineno",       T_INT,          OFF(tb_lineno), READONLY},
-    {NULL}      /* Sentinel */
-};
-
-static void
-tb_dealloc(PyTracebackObject *tb)
-{
-    PyObject_GC_UnTrack(tb);
-    Py_TRASHCAN_SAFE_BEGIN(tb)
-    Py_XDECREF(tb->tb_next);
-    Py_XDECREF(tb->tb_frame);
-    PyObject_GC_Del(tb);
-    Py_TRASHCAN_SAFE_END(tb)
-}
-
-static int
-tb_traverse(PyTracebackObject *tb, visitproc visit, void *arg)
-{
-    Py_VISIT(tb->tb_next);
-    Py_VISIT(tb->tb_frame);
-    return 0;
-}
-
-static void
-tb_clear(PyTracebackObject *tb)
-{
-    Py_CLEAR(tb->tb_next);
-    Py_CLEAR(tb->tb_frame);
-}
-
-PyTypeObject PyTraceBack_Type = {
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "traceback",
-    sizeof(PyTracebackObject),
-    0,
-    (destructor)tb_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 */
-    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */
-    0,                                          /* tp_doc */
-    (traverseproc)tb_traverse,                  /* tp_traverse */
-    (inquiry)tb_clear,                          /* tp_clear */
-    0,                                          /* tp_richcompare */
-    0,                                          /* tp_weaklistoffset */
-    0,                                          /* tp_iter */
-    0,                                          /* tp_iternext */
-    0,                                          /* tp_methods */
-    tb_memberlist,                              /* tp_members */
-    0,                                          /* tp_getset */
-    0,                                          /* tp_base */
-    0,                                          /* tp_dict */
-};
-
-static PyTracebackObject *
-newtracebackobject(PyTracebackObject *next, PyFrameObject *frame)
-{
-    PyTracebackObject *tb;
-    if ((next != NULL && !PyTraceBack_Check(next)) ||
-                    frame == NULL || !PyFrame_Check(frame)) {
-        PyErr_BadInternalCall();
-        return NULL;
-    }
-    tb = PyObject_GC_New(PyTracebackObject, &PyTraceBack_Type);
-    if (tb != NULL) {
-        Py_XINCREF(next);
-        tb->tb_next = next;
-        Py_XINCREF(frame);
-        tb->tb_frame = frame;
-        tb->tb_lasti = frame->f_lasti;
-        tb->tb_lineno = PyFrame_GetLineNumber(frame);
-        PyObject_GC_Track(tb);
-    }
-    return tb;
-}
-
-int
-PyTraceBack_Here(PyFrameObject *frame)
-{
-    PyThreadState *tstate = PyThreadState_GET();
-    PyTracebackObject *oldtb = (PyTracebackObject *) tstate->curexc_traceback;
-    PyTracebackObject *tb = newtracebackobject(oldtb, frame);
-    if (tb == NULL)
-        return -1;
-    tstate->curexc_traceback = (PyObject *)tb;
-    Py_XDECREF(oldtb);
-    return 0;
-}
-
-int
-_Py_DisplaySourceLine(PyObject *f, const char *filename, int lineno, int indent)
-{
-    int err = 0;
-    FILE *xfp = NULL;
-    char linebuf[2000];
-    int i;
-    char namebuf[MAXPATHLEN+1];
-
-    if (filename == NULL)
-        return -1;
-    /* This is needed by Emacs' compile command */
-#define FMT "  File \"%.500s\", line %d, in %.500s\n"
-    xfp = fopen(filename, "r" PY_STDIOTEXTMODE);
-    if (xfp == NULL) {
-        /* Search tail of filename in sys.path before giving up */
-        PyObject *path;
-        const char *tail = strrchr(filename, SEP);
-        if (tail == NULL)
-            tail = filename;
-        else
-            tail++;
-        path = PySys_GetObject("path");
-        if (path != NULL && PyList_Check(path)) {
-            Py_ssize_t _npath = PyList_Size(path);
-            int npath = Py_SAFE_DOWNCAST(_npath, Py_ssize_t, int);
-            size_t taillen = strlen(tail);
-            for (i = 0; i < npath; i++) {
-                PyObject *v = PyList_GetItem(path, i);
-                if (v == NULL) {
-                    PyErr_Clear();
-                    break;
-                }
-                if (PyString_Check(v)) {
-                    size_t len;
-                    len = PyString_GET_SIZE(v);
-                    if (len + 1 + taillen >= MAXPATHLEN)
-                        continue; /* Too long */
-                    strcpy(namebuf, PyString_AsString(v));
-                    if (strlen(namebuf) != len)
-                        continue; /* v contains '\0' */
-                    if (len > 0 && namebuf[len-1] != SEP)
-                        namebuf[len++] = SEP;
-                    strcpy(namebuf+len, tail);
-                    xfp = fopen(namebuf, "r" PY_STDIOTEXTMODE);
-                    if (xfp != NULL) {
-                        break;
-                    }
-                }
-            }
-        }
-    }
-
-    if (xfp == NULL)
-        return err;
-    if (err != 0) {
-        fclose(xfp);
-        return err;
-    }
-
-    for (i = 0; i < lineno; i++) {
-        char* pLastChar = &linebuf[sizeof(linebuf)-2];
-        do {
-            *pLastChar = '\0';
-            if (Py_UniversalNewlineFgets(linebuf, sizeof linebuf, xfp, NULL) == NULL)
-                break;
-            /* fgets read *something*; if it didn't get as
-               far as pLastChar, it must have found a newline
-               or hit the end of the file;              if pLastChar is \n,
-               it obviously found a newline; else we haven't
-               yet seen a newline, so must continue */
-        } while (*pLastChar != '\0' && *pLastChar != '\n');
-    }
-    if (i == lineno) {
-        char buf[11];
-        char *p = linebuf;
-        while (*p == ' ' || *p == '\t' || *p == '\014')
-            p++;
-
-        /* Write some spaces before the line */
-        strcpy(buf, "          ");
-        assert (strlen(buf) == 10);
-        while (indent > 0) {
-            if(indent < 10)
-                buf[indent] = '\0';
-            err = PyFile_WriteString(buf, f);
-            if (err != 0)
-                break;
-            indent -= 10;
-        }
-
-        if (err == 0)
-            err = PyFile_WriteString(p, f);
-        if (err == 0 && strchr(p, '\n') == NULL)
-            err = PyFile_WriteString("\n", f);
-    }
-    fclose(xfp);
-    return err;
-}
-
-static int
-tb_displayline(PyObject *f, const char *filename, int lineno, const char *name)
-{
-    int err = 0;
-    char linebuf[2000];
-
-    if (filename == NULL || name == NULL)
-        return -1;
-    /* This is needed by Emacs' compile command */
-#define FMT "  File \"%.500s\", line %d, in %.500s\n"
-    PyOS_snprintf(linebuf, sizeof(linebuf), FMT, filename, lineno, name);
-    err = PyFile_WriteString(linebuf, f);
-    if (err != 0)
-        return err;
-    return _Py_DisplaySourceLine(f, filename, lineno, 4);
-}
-
-static int
-tb_printinternal(PyTracebackObject *tb, PyObject *f, long limit)
-{
-    int err = 0;
-    long depth = 0;
-    PyTracebackObject *tb1 = tb;
-    while (tb1 != NULL) {
-        depth++;
-        tb1 = tb1->tb_next;
-    }
-    while (tb != NULL && err == 0) {
-        if (depth <= limit) {
-            err = tb_displayline(f,
-                PyString_AsString(
-                    tb->tb_frame->f_code->co_filename),
-                tb->tb_lineno,
-                PyString_AsString(tb->tb_frame->f_code->co_name));
-        }
-        depth--;
-        tb = tb->tb_next;
-        if (err == 0)
-            err = PyErr_CheckSignals();
-    }
-    return err;
-}
-
-int
-PyTraceBack_Print(PyObject *v, PyObject *f)
-{
-    int err;
-    PyObject *limitv;
-    long limit = 1000;
-    if (v == NULL)
-        return 0;
-    if (!PyTraceBack_Check(v)) {
-        PyErr_BadInternalCall();
-        return -1;
-    }
-    limitv = PySys_GetObject("tracebacklimit");
-    if (limitv && PyInt_Check(limitv)) {
-        limit = PyInt_AsLong(limitv);
-        if (limit <= 0)
-            return 0;
-    }
-    err = PyFile_WriteString("Traceback (most recent call last):\n", f);
-    if (!err)
-        err = tb_printinternal((PyTracebackObject *)v, f, limit);
-    return err;
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/README b/AppPkg/Applications/Python/Python-2.7.2/README
deleted file mode 100644
index e9b363b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/README
+++ /dev/null
@@ -1,1229 +0,0 @@
-This is Python version 2.7.2
-============================
-
-Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Python Software Foundation.  All rights reserved.
-
-Copyright (c) 2000 BeOpen.com.
-All rights reserved.
-
-Copyright (c) 1995-2001 Corporation for National Research Initiatives.
-All rights reserved.
-
-Copyright (c) 1991-1995 Stichting Mathematisch Centrum.
-All rights reserved.
-
-
-License information
--------------------
-
-See the file "LICENSE" for information on the history of this
-software, terms & conditions for usage, and a DISCLAIMER OF ALL
-WARRANTIES.
-
-This Python distribution contains no GNU General Public Licensed
-(GPLed) code so it may be used in proprietary projects just like prior
-Python distributions.  There are interfaces to some GNU code but these
-are entirely optional.
-
-All trademarks referenced herein are property of their respective
-holders.
-
-
-What's new in this release?
----------------------------
-
-See the file "Misc/NEWS".
-
-
-If you don't read instructions
-------------------------------
-
-Congratulations on getting this far. :-)
-
-To start building right away (on UNIX): type "./configure" in the
-current directory and when it finishes, type "make".  This creates an
-executable "./python"; to install in /usr/local, first do "su root"
-and then "make install".
-
-The section `Build instructions' below is still recommended reading.
-
-
-What is Python anyway?
-----------------------
-
-Python is an interpreted, interactive object-oriented programming
-language suitable (amongst other uses) for distributed application
-development, scripting, numeric computing and system testing.  Python
-is often compared to Tcl, Perl, Java, JavaScript, Visual Basic or
-Scheme.  To find out more about what Python can do for you, point your
-browser to http://www.python.org/.
-
-
-How do I learn Python?
-----------------------
-
-The official tutorial is still a good place to start; see
-http://docs.python.org/ for online and downloadable versions, as well
-as a list of other introductions, and reference documentation.
-
-There's a quickly growing set of books on Python.  See
-http://wiki.python.org/moin/PythonBooks for a list.
-
-
-Documentation
--------------
-
-All documentation is provided online in a variety of formats.  In
-order of importance for new users: Tutorial, Library Reference,
-Language Reference, Extending & Embedding, and the Python/C API.  The
-Library Reference is especially of immense value since much of
-Python's power is described there, including the built-in data types
-and functions!
-
-All documentation is also available online at the Python web site
-(http://docs.python.org/, see below).  It is available online for occasional
-reference, or can be downloaded in many formats for faster access.  The
-documentation is downloadable in HTML, PostScript, PDF, LaTeX, and
-reStructuredText (2.6+) formats; the LaTeX and reStructuredText versions are
-primarily for documentation authors, translators, and people with special
-formatting requirements.
-
-
-Web sites
----------
-
-New Python releases and related technologies are published at
-http://www.python.org/.  Come visit us!
-
-
-Newsgroups and Mailing Lists
-----------------------------
-
-Read comp.lang.python, a high-volume discussion newsgroup about
-Python, or comp.lang.python.announce, a low-volume moderated newsgroup
-for Python-related announcements.  These are also accessible as
-mailing lists: see http://www.python.org/community/lists/ for an
-overview of these and many other Python-related mailing lists.
-
-Archives are accessible via the Google Groups Usenet archive; see
-http://groups.google.com/.  The mailing lists are also archived, see
-http://www.python.org/community/lists/ for details.
-
-
-Bug reports
------------
-
-To report or search for bugs, please use the Python Bug
-Tracker at http://bugs.python.org/.
-
-
-Patches and contributions
--------------------------
-
-To submit a patch or other contribution, please use the Python Patch
-Manager at http://bugs.python.org/.  Guidelines
-for patch submission may be found at http://www.python.org/dev/patches/.
-
-If you have a proposal to change Python, you may want to send an email to the
-comp.lang.python or python-ideas mailing lists for inital feedback. A Python
-Enhancement Proposal (PEP) may be submitted if your idea gains ground. All
-current PEPs, as well as guidelines for submitting a new PEP, are listed at
-http://www.python.org/dev/peps/.
-
-
-Questions
----------
-
-For help, if you can't find it in the manuals or on the web site, it's
-best to post to the comp.lang.python or the Python mailing list (see
-above).  If you specifically don't want to involve the newsgroup or
-mailing list, send questions to help@python.org (a group of volunteers
-who answer questions as they can).  The newsgroup is the most
-efficient way to ask public questions.
-
-
-Build instructions
-==================
-
-Before you can build Python, you must first configure it.
-Fortunately, the configuration and build process has been automated
-for Unix and Linux installations, so all you usually have to do is
-type a few commands and sit back.  There are some platforms where
-things are not quite as smooth; see the platform specific notes below.
-If you want to build for multiple platforms sharing the same source
-tree, see the section on VPATH below.
-
-Start by running the script "./configure", which determines your
-system configuration and creates the Makefile.  (It takes a minute or
-two -- please be patient!)  You may want to pass options to the
-configure script -- see the section below on configuration options and
-variables.  When it's done, you are ready to run make.
-
-To build Python, you normally type "make" in the toplevel directory.
-If you have changed the configuration, the Makefile may have to be
-rebuilt.  In this case, you may have to run make again to correctly
-build your desired target.  The interpreter executable is built in the
-top level directory.
-
-Once you have built a Python interpreter, see the subsections below on
-testing and installation.  If you run into trouble, see the next
-section.
-
-Previous versions of Python used a manual configuration process that
-involved editing the file Modules/Setup.  While this file still exists
-and manual configuration is still supported, it is rarely needed any
-more: almost all modules are automatically built as appropriate under
-guidance of the setup.py script, which is run by Make after the
-interpreter has been built.
-
-
-Troubleshooting
----------------
-
-See also the platform specific notes in the next section.
-
-If you run into other trouble, see the FAQ
-(http://www.python.org/doc/faq/) for hints on what can go wrong, and
-how to fix it.
-
-If you rerun the configure script with different options, remove all
-object files by running "make clean" before rebuilding.  Believe it or
-not, "make clean" sometimes helps to clean up other inexplicable
-problems as well.  Try it before sending in a bug report!
-
-If the configure script fails or doesn't seem to find things that
-should be there, inspect the config.log file.
-
-If you get a warning for every file about the -Olimit option being no
-longer supported, you can ignore it.  There's no foolproof way to know
-whether this option is needed; all we can do is test whether it is
-accepted without error.  On some systems, e.g. older SGI compilers, it
-is essential for performance (specifically when compiling ceval.c,
-which has more basic blocks than the default limit of 1000).  If the
-warning bothers you, edit the Makefile to remove "-Olimit 1500" from
-the OPT variable.
-
-If you get failures in test_long, or sys.maxint gets set to -1, you
-are probably experiencing compiler bugs, usually related to
-optimization.  This is a common problem with some versions of gcc, and
-some vendor-supplied compilers, which can sometimes be worked around
-by turning off optimization.  Consider switching to stable versions
-(gcc 2.95.2, gcc 3.x, or contact your vendor.)
-
-From Python 2.0 onward, all Python C code is ANSI C.  Compiling using
-old K&R-C-only compilers is no longer possible.  ANSI C compilers are
-available for all modern systems, either in the form of updated
-compilers from the vendor, or one of the free compilers (gcc).
-
-If "make install" fails mysteriously during the "compiling the library"
-step, make sure that you don't have any of the PYTHONPATH or PYTHONHOME
-environment variables set, as they may interfere with the newly built
-executable which is compiling the library.
-
-Unsupported systems
--------------------
-
-A number of systems are not supported in Python 2.7 anymore. Some
-support code is still present, but will be removed in later versions.
-If you still need to use current Python versions on these systems,
-please send a message to python-dev@python.org indicating that you
-volunteer to support this system. For a more detailed discussion 
-regarding no-longer-supported and resupporting platforms, as well
-as a list of platforms that became or will be unsupported, see PEP 11.
-
-More specifically, the following systems are not supported any
-longer:
-- SunOS 4
-- DYNIX
-- dgux
-- Minix
-- NeXT
-- Irix 4 and --with-sgi-dl
-- Linux 1
-- Systems defining __d6_pthread_create (configure.in)
-- Systems defining PY_PTHREAD_D4, PY_PTHREAD_D6,
-  or PY_PTHREAD_D7 in thread_pthread.h
-- Systems using --with-dl-dld
-- Systems using --without-universal-newlines
-- MacOS 9
-- Systems using --with-wctype-functions
-- Win9x, WinME
-
-
-Platform specific notes
------------------------
-
-(Some of these may no longer apply.  If you find you can build Python
-on these platforms without the special directions mentioned here,
-submit a documentation bug report to SourceForge (see Bug Reports
-above) so we can remove them!)
-
-Unix platforms: If your vendor still ships (and you still use) Berkeley DB
-        1.85 you will need to edit Modules/Setup to build the bsddb185
-        module and add a line to sitecustomize.py which makes it the
-        default.  In Modules/Setup a line like
-
-            bsddb185 bsddbmodule.c
-
-        should work.  (You may need to add -I, -L or -l flags to direct the
-        compiler and linker to your include files and libraries.)
-
-XXX I think this next bit is out of date:
-
-64-bit platforms: The modules audioop, and imageop don't work.
-        The setup.py script disables them on 64-bit installations.
-        Don't try to enable them in the Modules/Setup file.  They
-        contain code that is quite wordsize sensitive.  (If you have a
-        fix, let us know!)
-
-Solaris: When using Sun's C compiler with threads, at least on Solaris
-        2.5.1, you need to add the "-mt" compiler option (the simplest
-        way is probably to specify the compiler with this option as
-        the "CC" environment variable when running the configure
-        script).
-
-        When using GCC on Solaris, beware of binutils 2.13 or GCC
-        versions built using it.  This mistakenly enables the
-        -zcombreloc option which creates broken shared libraries on
-        Solaris.  binutils 2.12 works, and the binutils maintainers
-        are aware of the problem.  Binutils 2.13.1 only partially
-        fixed things.  It appears that 2.13.2 solves the problem
-        completely.  This problem is known to occur with Solaris 2.7
-        and 2.8, but may also affect earlier and later versions of the
-        OS.
-
-        When the dynamic loader complains about errors finding shared
-        libraries, such as
-
-        ld.so.1: ./python: fatal: libstdc++.so.5: open failed:
-        No such file or directory
-
-        you need to first make sure that the library is available on
-        your system. Then, you need to instruct the dynamic loader how
-        to find it. You can choose any of the following strategies:
-
-        1. When compiling Python, set LD_RUN_PATH to the directories
-           containing missing libraries.
-        2. When running Python, set LD_LIBRARY_PATH to these directories.
-        3. Use crle(8) to extend the search path of the loader.
-        4. Modify the installed GCC specs file, adding -R options into the
-           *link: section.
-
-        The complex object fails to compile on Solaris 10 with gcc 3.4 (at
-        least up to 3.4.3).  To work around it, define Py_HUGE_VAL as
-        HUGE_VAL(), e.g.:
-
-          make CPPFLAGS='-D"Py_HUGE_VAL=HUGE_VAL()" -I. -I$(srcdir)/Include'
-          ./python setup.py CPPFLAGS='-D"Py_HUGE_VAL=HUGE_VAL()"'
-
-Linux:  A problem with threads and fork() was tracked down to a bug in
-        the pthreads code in glibc version 2.0.5; glibc version 2.0.7
-        solves the problem.  This causes the popen2 test to fail;
-        problem and solution reported by Pablo Bleyer.
-
-Red Hat Linux: Red Hat 9 built Python2.2 in UCS-4 mode and hacked
-        Tcl to support it. To compile Python2.3 with Tkinter, you will
-        need to pass --enable-unicode=ucs4 flag to ./configure.
-
-        There's an executable /usr/bin/python which is Python
-        1.5.2 on most older Red Hat installations; several key Red Hat tools
-        require this version.  Python 2.1.x may be installed as
-        /usr/bin/python2.  The Makefile installs Python as
-        /usr/local/bin/python, which may or may not take precedence
-        over /usr/bin/python, depending on how you have set up $PATH.
-
-FreeBSD 3.x and probably platforms with NCurses that use libmytinfo or
-        similar: When using cursesmodule, the linking is not done in
-        the correct order with the defaults.  Remove "-ltermcap" from
-        the readline entry in Setup, and use as curses entry: "curses
-        cursesmodule.c -lmytinfo -lncurses -ltermcap" - "mytinfo" (so
-        called on FreeBSD) should be the name of the auxiliary library
-        required on your platform.  Normally, it would be linked
-        automatically, but not necessarily in the correct order.
-
-BSDI:   BSDI versions before 4.1 have known problems with threads,
-        which can cause strange errors in a number of modules (for
-        instance, the 'test_signal' test script will hang forever.)
-        Turning off threads (with --with-threads=no) or upgrading to
-        BSDI 4.1 solves this problem.
-
-DEC Unix: Run configure with --with-dec-threads, or with
-        --with-threads=no if no threads are desired (threads are on by
-        default).  When using GCC, it is possible to get an internal
-        compiler error if optimization is used.  This was reported for
-        GCC 2.7.2.3 on selectmodule.c.  Manually compile the affected
-        file without optimization to solve the problem.
-
-DEC Ultrix: compile with GCC to avoid bugs in the native compiler,
-        and pass SHELL=/bin/sh5 to Make when installing.
-
-AIX:    A complete overhaul of the shared library support is now in
-        place.  See Misc/AIX-NOTES for some notes on how it's done.
-        (The optimizer bug reported at this place in previous releases
-        has been worked around by a minimal code change.) If you get
-        errors about pthread_* functions, during compile or during
-        testing, try setting CC to a thread-safe (reentrant) compiler,
-        like "cc_r".  For full C++ module support, set CC="xlC_r" (or
-        CC="xlC" without thread support).
-
-AIX 5.3: To build a 64-bit version with IBM's compiler, I used the
-        following:
-
-        export PATH=/usr/bin:/usr/vacpp/bin
-        ./configure --with-gcc="xlc_r -q64" --with-cxx="xlC_r -q64" \
-                    --disable-ipv6 AR="ar -X64"
-        make
-
-HP-UX:  When using threading, you may have to add -D_REENTRANT to the
-        OPT variable in the top-level Makefile; reported by Pat Knight,
-        this seems to make a difference (at least for HP-UX 10.20)
-        even though pyconfig.h defines it. This seems unnecessary when
-        using HP/UX 11 and later - threading seems to work "out of the
-        box".
-
-HP-UX ia64: When building on the ia64 (Itanium) platform using HP's
-        compiler, some experience has shown that the compiler's
-        optimiser produces a completely broken version of python
-        (see http://bugs.python.org/814976). To work around this,
-        edit the Makefile and remove -O from the OPT line.
-
-        To build a 64-bit executable on an Itanium 2 system using HP's
-        compiler, use these environment variables:
-
-                CC=cc
-                CXX=aCC
-                BASECFLAGS="+DD64"
-                LDFLAGS="+DD64 -lxnet"
-
-        and call configure as:
-
-                ./configure --without-gcc
-
-        then *unset* the environment variables again before running
-        make.  (At least one of these flags causes the build to fail
-        if it remains set.)  You still have to edit the Makefile and
-        remove -O from the OPT line.
-
-HP PA-RISC 2.0: A recent bug report (http://bugs.python.org/546117)
-        suggests that the C compiler in this 64-bit system has bugs
-        in the optimizer that break Python.  Compiling without
-        optimization solves the problems.
-
-SCO:    The following apply to SCO 3 only; Python builds out of the box
-        on SCO 5 (or so we've heard).
-
-        1) Everything works much better if you add -U__STDC__ to the
-        defs.  This is because all the SCO header files are broken.
-        Anything that isn't mentioned in the C standard is
-        conditionally excluded when __STDC__ is defined.
-
-        2) Due to the U.S. export restrictions, SCO broke the crypt
-        stuff out into a separate library, libcrypt_i.a so the LIBS
-        needed be set to:
-
-                LIBS=' -lsocket -lcrypt_i'
-
-UnixWare: There are known bugs in the math library of the system, as well as
-        problems in the handling of threads (calling fork in one
-        thread may interrupt system calls in others). Therefore, test_math and
-        tests involving threads will fail until those problems are fixed.
-
-QNX:    Chris Herborth (chrish@qnx.com) writes:
-        configure works best if you use GNU bash; a port is available on
-        ftp.qnx.com in /usr/free.  I used the following process to build,
-        test and install Python 1.5.x under QNX:
-
-        1) CONFIG_SHELL=/usr/local/bin/bash CC=cc RANLIB=: \
-            ./configure --verbose --without-gcc --with-libm=""
-
-        2) edit Modules/Setup to activate everything that makes sense for
-           your system... tested here at QNX with the following modules:
-
-                array, audioop, binascii, cPickle, cStringIO, cmath,
-                crypt, curses, errno, fcntl, gdbm, grp, imageop,
-                _locale, math, md5, new, operator, parser, pcre,
-                posix, pwd, readline, regex, reop,
-                select, signal, socket, soundex, strop, struct,
-                syslog, termios, time, timing, zlib, audioop, imageop
-
-        3) make SHELL=/usr/local/bin/bash
-
-           or, if you feel the need for speed:
-
-           make SHELL=/usr/local/bin/bash OPT="-5 -Oil+nrt"
-
-        4) make SHELL=/usr/local/bin/bash test
-
-           Using GNU readline 2.2 seems to behave strangely, but I
-           think that's a problem with my readline 2.2 port.  :-\
-
-        5) make SHELL=/usr/local/bin/bash install
-
-        If you get SIGSEGVs while running Python (I haven't yet, but
-        I've only run small programs and the test cases), you're
-        probably running out of stack; the default 32k could be a
-        little tight.  To increase the stack size, edit the Makefile
-        to read: LDFLAGS = -N 48k
-
-BeOS:   See Misc/BeOS-NOTES for notes about compiling/installing
-        Python on BeOS R3 or later.  Note that only the PowerPC
-        platform is supported for R3; both PowerPC and x86 are
-        supported for R4.
-
-Cray T3E: Mark Hadfield (m.hadfield@niwa.co.nz) writes:
-        Python can be built satisfactorily on a Cray T3E but based on
-        my experience with the NIWA T3E (2002-05-22, version 2.2.1)
-        there are a few bugs and gotchas. For more information see a
-        thread on comp.lang.python in May 2002 entitled "Building
-        Python on Cray T3E".
-
-        1) Use Cray's cc and not gcc. The latter was reported not to
-           work by Konrad Hinsen. It may work now, but it may not.
-
-        2) To set sys.platform to something sensible, pass the
-           following environment variable to the configure script:
-
-             MACHDEP=unicosmk
-
-        2) Run configure with option "--enable-unicode=ucs4".
-
-        3) The Cray T3E does not support dynamic linking, so extension
-           modules have to be built by adding (or uncommenting) lines
-           in Modules/Setup. The minimum set of modules is
-
-             posix, new, _sre, unicodedata
-
-           On NIWA's vanilla T3E system the following have also been
-           included successfully:
-
-             _codecs, _locale, _socket, _symtable, _testcapi, _weakref
-             array, binascii, cmath, cPickle, crypt, cStringIO, dbm
-             errno, fcntl, grp, math, md5, operator, parser, pcre, pwd
-             regex, rotor, select, struct, strop, syslog, termios
-             time, timing, xreadlines
-
-        4) Once the python executable and library have been built, make
-           will execute setup.py, which will attempt to build remaining
-           extensions and link them dynamically. Each of these attempts
-           will fail but should not halt the make process. This is
-           normal.
-
-        5) Running "make test" uses a lot of resources and causes
-           problems on our system. You might want to try running tests
-           singly or in small groups.
-
-SGI:    SGI's standard "make" utility (/bin/make or /usr/bin/make)
-        does not check whether a command actually changed the file it
-        is supposed to build.  This means that whenever you say "make"
-        it will redo the link step.  The remedy is to use SGI's much
-        smarter "smake" utility (/usr/sbin/smake), or GNU make.  If
-        you set the first line of the Makefile to #!/usr/sbin/smake
-        smake will be invoked by make (likewise for GNU make).
-
-        WARNING: There are bugs in the optimizer of some versions of
-        SGI's compilers that can cause bus errors or other strange
-        behavior, especially on numerical operations.  To avoid this,
-        try building with "make OPT=".
-
-OS/2:   If you are running Warp3 or Warp4 and have IBM's VisualAge C/C++
-        compiler installed, just change into the pc\os2vacpp directory
-        and type NMAKE.  Threading and sockets are supported by default
-        in the resulting binaries of PYTHON15.DLL and PYTHON.EXE.
-
-Reliant UNIX: The thread support does not compile on Reliant UNIX, and
-        there is a (minor) problem in the configure script for that
-        platform as well.  This should be resolved in time for a
-        future release.
-
-MacOSX: The tests will crash on both 10.1 and 10.2 with SEGV in
-        test_re and test_sre due to the small default stack size.  If
-        you set the stack size to 2048 before doing a "make test" the
-        failure can be avoided.  If you're using the tcsh or csh shells,
-        use "limit stacksize 2048" and for the bash shell (the default
-        as of OSX 10.3), use "ulimit -s 2048".
-
-        On naked Darwin you may want to add the configure option
-        "--disable-toolbox-glue" to disable the glue code for the Carbon
-        interface modules. The modules themselves are currently only built
-        if you add the --enable-framework option, see below.
-
-        On a clean OSX /usr/local does not exist. Do a
-        "sudo mkdir -m 775 /usr/local"
-        before you do a make install. It is probably not a good idea to
-        do "sudo make install" which installs everything as superuser,
-        as this may later cause problems when installing distutils-based
-        additions.
-
-        Some people have reported problems building Python after using "fink"
-        to install additional unix software. Disabling fink (remove all 
-        references to /sw from your .profile or .login) should solve this.
-
-        You may want to try the configure option "--enable-framework"
-        which installs Python as a framework. The location can be set
-        as argument to the --enable-framework option (default
-        /Library/Frameworks). A framework install is probably needed if you
-        want to use any Aqua-based GUI toolkit (whether Tkinter, wxPython,
-        Carbon, Cocoa or anything else).
-
-        You may also want to try the configure option "--enable-universalsdk"
-        which builds Python as a universal binary with support for the 
-        i386 and PPC architetures. This requires Xcode 2.1 or later to build.
-
-        See Mac/README for more information on framework and 
-        universal builds.
-
-Cygwin: With recent (relative to the time of writing, 2001-12-19)
-        Cygwin installations, there are problems with the interaction
-        of dynamic linking and fork().  This manifests itself in build
-        failures during the execution of setup.py.
-
-        There are two workarounds that both enable Python (albeit
-        without threading support) to build and pass all tests on
-        NT/2000 (and most likely XP as well, though reports of testing
-        on XP would be appreciated).
-
-        The workarounds:
-
-        (a) the band-aid fix is to link the _socket module statically
-        rather than dynamically (which is the default).
-
-        To do this, run "./configure --with-threads=no" including any
-        other options you need (--prefix, etc.).  Then in Modules/Setup
-        uncomment the lines:
-
-        #SSL=/usr/local/ssl
-        #_socket socketmodule.c \
-        #       -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-        #       -L$(SSL)/lib -lssl -lcrypto
-
-        and remove "local/" from the SSL variable.  Finally, just run
-        "make"!
-
-        (b) The "proper" fix is to rebase the Cygwin DLLs to prevent
-        base address conflicts.  Details on how to do this can be
-        found in the following mail:
-
-           http://sources.redhat.com/ml/cygwin/2001-12/msg00894.html
-
-        It is hoped that a version of this solution will be
-        incorporated into the Cygwin distribution fairly soon.
-
-        Two additional problems:
-
-        (1) Threading support should still be disabled due to a known
-        bug in Cygwin pthreads that causes test_threadedtempfile to
-        hang.
-
-        (2) The _curses module does not build.  This is a known
-        Cygwin ncurses problem that should be resolved the next time
-        that this package is released.
-
-        On older versions of Cygwin, test_poll may hang and test_strftime
-        may fail.
-
-        The situation on 9X/Me is not accurately known at present.
-        Some time ago, there were reports that the following
-        regression tests failed:
-
-            test_pwd
-            test_select (hang)
-            test_socket
-
-        Due to the test_select hang on 9X/Me, one should run the
-        regression test using the following:
-
-            make TESTOPTS='-l -x test_select' test
-
-        News regarding these platforms with more recent Cygwin
-        versions would be appreciated!
-
-Windows: When executing Python scripts on the command line using file type
-        associations (i.e. starting "script.py" instead of "python script.py"),
-        redirects may not work unless you set a specific registry key.  See
-        the Knowledge Base article <http://support.microsoft.com/kb/321788>.
-
-
-Configuring the bsddb and dbm modules
--------------------------------------
-
-Beginning with Python version 2.3, the PyBsddb package
-<http://pybsddb.sf.net/> was adopted into Python as the bsddb package,
-exposing a set of package-level functions which provide
-backwards-compatible behavior.  Only versions 3.3 through 4.4 of
-Sleepycat's libraries provide the necessary API, so older versions
-aren't supported through this interface.  The old bsddb module has
-been retained as bsddb185, though it is not built by default.  Users
-wishing to use it will have to tweak Modules/Setup to build it.  The
-dbm module will still be built against the Sleepycat libraries if
-other preferred alternatives (ndbm, gdbm) are not found.
-
-Building the sqlite3 module
----------------------------
-
-To build the sqlite3 module, you'll need the sqlite3 or libsqlite3
-packages installed, including the header files. Many modern operating
-systems distribute the headers in a separate package to the library -
-often it will be the same name as the main package, but with a -dev or
--devel suffix. 
-
-The version of pysqlite2 that's including in Python needs sqlite3 3.0.8
-or later. setup.py attempts to check that it can find a correct version.
-
-Configuring threads
--------------------
-
-As of Python 2.0, threads are enabled by default.  If you wish to
-compile without threads, or if your thread support is broken, pass the
---with-threads=no switch to configure.  Unfortunately, on some
-platforms, additional compiler and/or linker options are required for
-threads to work properly.  Below is a table of those options,
-collected by Bill Janssen.  We would love to automate this process
-more, but the information below is not enough to write a patch for the
-configure.in file, so manual intervention is required.  If you patch
-the configure.in file and are confident that the patch works, please
-send in the patch.  (Don't bother patching the configure script itself
--- it is regenerated each time the configure.in file changes.)
-
-Compiler switches for threads
-.............................
-
-The definition of _REENTRANT should be configured automatically, if
-that does not work on your system, or if _REENTRANT is defined
-incorrectly, please report that as a bug.
-
-    OS/Compiler/threads                     Switches for use with threads
-    (POSIX is draft 10, DCE is draft 4)     compile & link
-
-    SunOS 5.{1-5}/{gcc,SunPro cc}/solaris   -mt
-    SunOS 5.5/{gcc,SunPro cc}/POSIX         (nothing)
-    DEC OSF/1 3.x/cc/DCE                    -threads
-            (butenhof@zko.dec.com)
-    Digital UNIX 4.x/cc/DCE                 -threads
-            (butenhof@zko.dec.com)
-    Digital UNIX 4.x/cc/POSIX               -pthread
-            (butenhof@zko.dec.com)
-    AIX 4.1.4/cc_r/d7                       (nothing)
-            (buhrt@iquest.net)
-    AIX 4.1.4/cc_r4/DCE                     (nothing)
-            (buhrt@iquest.net)
-    IRIX 6.2/cc/POSIX                       (nothing)
-            (robertl@cwi.nl)
-
-
-Linker (ld) libraries and flags for threads
-...........................................
-
-    OS/threads                          Libraries/switches for use with threads
-
-    SunOS 5.{1-5}/solaris               -lthread
-    SunOS 5.5/POSIX                     -lpthread
-    DEC OSF/1 3.x/DCE                   -lpthreads -lmach -lc_r -lc
-            (butenhof@zko.dec.com)
-    Digital UNIX 4.x/DCE                -lpthreads -lpthread -lmach -lexc -lc
-            (butenhof@zko.dec.com)
-    Digital UNIX 4.x/POSIX              -lpthread -lmach -lexc -lc
-            (butenhof@zko.dec.com)
-    AIX 4.1.4/{draft7,DCE}              (nothing)
-            (buhrt@iquest.net)
-    IRIX 6.2/POSIX                      -lpthread
-            (jph@emilia.engr.sgi.com)
-
-
-Building a shared libpython
----------------------------
-
-Starting with Python 2.3, the majority of the interpreter can be built
-into a shared library, which can then be used by the interpreter
-executable, and by applications embedding Python. To enable this feature,
-configure with --enable-shared.
-
-If you enable this feature, the same object files will be used to create
-a static library.  In particular, the static library will contain object
-files using position-independent code (PIC) on platforms where PIC flags
-are needed for the shared library.
-
-
-Configuring additional built-in modules
----------------------------------------
-
-Starting with Python 2.1, the setup.py script at the top of the source
-distribution attempts to detect which modules can be built and
-automatically compiles them.  Autodetection doesn't always work, so
-you can still customize the configuration by editing the Modules/Setup
-file; but this should be considered a last resort.  The rest of this
-section only applies if you decide to edit the Modules/Setup file.
-You also need this to enable static linking of certain modules (which
-is needed to enable profiling on some systems).
-
-This file is initially copied from Setup.dist by the configure script;
-if it does not exist yet, create it by copying Modules/Setup.dist
-yourself (configure will never overwrite it).  Never edit Setup.dist
--- always edit Setup or Setup.local (see below).  Read the comments in
-the file for information on what kind of edits are allowed.  When you
-have edited Setup in the Modules directory, the interpreter will
-automatically be rebuilt the next time you run make (in the toplevel
-directory).
-
-Many useful modules can be built on any Unix system, but some optional
-modules can't be reliably autodetected.  Often the quickest way to
-determine whether a particular module works or not is to see if it
-will build: enable it in Setup, then if you get compilation or link
-errors, disable it -- you're either missing support or need to adjust
-the compilation and linking parameters for that module.
-
-On SGI IRIX, there are modules that interface to many SGI specific
-system libraries, e.g. the GL library and the audio hardware.  These
-modules will not be built by the setup.py script.
-
-In addition to the file Setup, you can also edit the file Setup.local.
-(the makesetup script processes both).  You may find it more
-convenient to edit Setup.local and leave Setup alone.  Then, when
-installing a new Python version, you can copy your old Setup.local
-file.
-
-
-Setting the optimization/debugging options
-------------------------------------------
-
-If you want or need to change the optimization/debugging options for
-the C compiler, assign to the OPT variable on the toplevel make
-command; e.g. "make OPT=-g" will build a debugging version of Python
-on most platforms.  The default is OPT=-O; a value for OPT in the
-environment when the configure script is run overrides this default
-(likewise for CC; and the initial value for LIBS is used as the base
-set of libraries to link with).
-
-When compiling with GCC, the default value of OPT will also include
-the -Wall and -Wstrict-prototypes options.
-
-Additional debugging code to help debug memory management problems can
-be enabled by using the --with-pydebug option to the configure script.
-
-For flags that change binary compatibility, use the EXTRA_CFLAGS
-variable.
-
-
-Profiling
----------
-
-If you want C profiling turned on, the easiest way is to run configure
-with the CC environment variable to the necessary compiler
-invocation.  For example, on Linux, this works for profiling using
-gprof(1):
-
-    CC="gcc -pg" ./configure
-
-Note that on Linux, gprof apparently does not work for shared
-libraries.  The Makefile/Setup mechanism can be used to compile and
-link most extension modules statically.
-
-
-Coverage checking
------------------
-
-For C coverage checking using gcov, run "make coverage".  This will
-build a Python binary with profiling activated, and a ".gcno" and
-".gcda" file for every source file compiled with that option.  With
-the built binary, now run the code whose coverage you want to check.
-Then, you can see coverage statistics for each individual source file
-by running gcov, e.g.
-
-    gcov -o Modules zlibmodule
-
-This will create a "zlibmodule.c.gcov" file in the current directory
-containing coverage info for that source file.
-
-This works only for source files statically compiled into the
-executable; use the Makefile/Setup mechanism to compile and link
-extension modules you want to coverage-check statically.
-
-
-Testing
--------
-
-To test the interpreter, type "make test" in the top-level directory.
-This runs the test set twice (once with no compiled files, once with
-the compiled files left by the previous test run).  The test set
-produces some output.  You can generally ignore the messages about
-skipped tests due to optional features which can't be imported.
-If a message is printed about a failed test or a traceback or core
-dump is produced, something is wrong.  On some Linux systems (those
-that are not yet using glibc 6), test_strftime fails due to a
-non-standard implementation of strftime() in the C library. Please
-ignore this, or upgrade to glibc version 6.
-
-By default, tests are prevented from overusing resources like disk space and
-memory.  To enable these tests, run "make testall".
-
-IMPORTANT: If the tests fail and you decide to mail a bug report,
-*don't* include the output of "make test".  It is useless.  Run the
-failing test manually, as follows:
-
-        ./python Lib/test/regrtest.py -v test_whatever
-
-(substituting the top of the source tree for '.' if you built in a
-different directory).  This runs the test in verbose mode.
-
-
-Installing
-----------
-
-To install the Python binary, library modules, shared library modules
-(see below), include files, configuration files, and the manual page,
-just type
-
-        make install
-
-This will install all platform-independent files in subdirectories of
-the directory given with the --prefix option to configure or to the
-`prefix' Make variable (default /usr/local).  All binary and other
-platform-specific files will be installed in subdirectories if the
-directory given by --exec-prefix or the `exec_prefix' Make variable
-(defaults to the --prefix directory) is given.
-
-If DESTDIR is set, it will be taken as the root directory of the
-installation, and files will be installed into $(DESTDIR)$(prefix),
-$(DESTDIR)$(exec_prefix), etc.
-
-All subdirectories created will have Python's version number in their
-name, e.g. the library modules are installed in
-"/usr/local/lib/python<version>/" by default, where <version> is the
-<major>.<minor> release number (e.g. "2.1").  The Python binary is
-installed as "python<version>" and a hard link named "python" is
-created.  The only file not installed with a version number in its
-name is the manual page, installed as "/usr/local/man/man1/python.1"
-by default.
-
-If you want to install multiple versions of Python see the section below
-entitled "Installing multiple versions".
-
-The only thing you may have to install manually is the Python mode for
-Emacs found in Misc/python-mode.el.  (But then again, more recent
-versions of Emacs may already have it.)  Follow the instructions that
-came with Emacs for installation of site-specific files.
-
-On Mac OS X, if you have configured Python with --enable-framework, you
-should use "make frameworkinstall" to do the installation. Note that this
-installs the Python executable in a place that is not normally on your
-PATH, you may want to set up a symlink in /usr/local/bin.
-
-
-Installing multiple versions
-----------------------------
-
-On Unix and Mac systems if you intend to install multiple versions of Python
-using the same installation prefix (--prefix argument to the configure
-script) you must take care that your primary python executable is not
-overwritten by the installation of a different version.  All files and
-directories installed using "make altinstall" contain the major and minor
-version and can thus live side-by-side.  "make install" also creates
-${prefix}/bin/python which refers to ${prefix}/bin/pythonX.Y.  If you intend
-to install multiple versions using the same prefix you must decide which
-version (if any) is your "primary" version.  Install that version using
-"make install".  Install all other versions using "make altinstall".
-
-For example, if you want to install Python 2.5, 2.6 and 3.0 with 2.6 being
-the primary version, you would execute "make install" in your 2.6 build
-directory and "make altinstall" in the others.
-
-
-Configuration options and variables
------------------------------------
-
-Some special cases are handled by passing options to the configure
-script.
-
-WARNING: if you rerun the configure script with different options, you
-must run "make clean" before rebuilding.  Exceptions to this rule:
-after changing --prefix or --exec-prefix, all you need to do is remove
-Modules/getpath.o.
-
---with(out)-gcc: The configure script uses gcc (the GNU C compiler) if
-        it finds it.  If you don't want this, or if this compiler is
-        installed but broken on your platform, pass the option
-        --without-gcc.  You can also pass "CC=cc" (or whatever the
-        name of the proper C compiler is) in the environment, but the
-        advantage of using --without-gcc is that this option is
-        remembered by the config.status script for its --recheck
-        option.
-
---prefix, --exec-prefix: If you want to install the binaries and the
-        Python library somewhere else than in /usr/local/{bin,lib},
-        you can pass the option --prefix=DIRECTORY; the interpreter
-        binary will be installed as DIRECTORY/bin/python and the
-        library files as DIRECTORY/lib/python/*.  If you pass
-        --exec-prefix=DIRECTORY (as well) this overrides the
-        installation prefix for architecture-dependent files (like the
-        interpreter binary).  Note that --prefix=DIRECTORY also
-        affects the default module search path (sys.path), when
-        Modules/config.c is compiled.  Passing make the option
-        prefix=DIRECTORY (and/or exec_prefix=DIRECTORY) overrides the
-        prefix set at configuration time; this may be more convenient
-        than re-running the configure script if you change your mind
-        about the install prefix.
-
---with-readline: This option is no longer supported.  GNU
-        readline is automatically enabled by setup.py when present.
-
---with-threads: On most Unix systems, you can now use multiple
-        threads, and support for this is enabled by default.  To
-        disable this, pass --with-threads=no.  If the library required
-        for threads lives in a peculiar place, you can use
-        --with-thread=DIRECTORY.  IMPORTANT: run "make clean" after
-        changing (either enabling or disabling) this option, or you
-        will get link errors!  Note: for DEC Unix use
-        --with-dec-threads instead.
-
---with-sgi-dl: On SGI IRIX 4, dynamic loading of extension modules is
-        supported by the "dl" library by Jack Jansen, which is
-        ftp'able from ftp://ftp.cwi.nl/pub/dynload/dl-1.6.tar.Z.
-        This is enabled (after you've ftp'ed and compiled the dl
-        library) by passing --with-sgi-dl=DIRECTORY where DIRECTORY
-        is the absolute pathname of the dl library.  (Don't bother on
-        IRIX 5, it already has dynamic linking using SunOS style
-        shared libraries.)  THIS OPTION IS UNSUPPORTED.
-
---with-dl-dld: Dynamic loading of modules is rumored to be supported
-        on some other systems: VAX (Ultrix), Sun3 (SunOS 3.4), Sequent
-        Symmetry (Dynix), and Atari ST.  This is done using a
-        combination of the GNU dynamic loading package
-        (ftp://ftp.cwi.nl/pub/dynload/dl-dld-1.1.tar.Z) and an
-        emulation of the SGI dl library mentioned above (the emulation
-        can be found at
-        ftp://ftp.cwi.nl/pub/dynload/dld-3.2.3.tar.Z).  To
-        enable this, ftp and compile both libraries, then call
-        configure, passing it the option
-        --with-dl-dld=DL_DIRECTORY,DLD_DIRECTORY where DL_DIRECTORY is
-        the absolute pathname of the dl emulation library and
-        DLD_DIRECTORY is the absolute pathname of the GNU dld library.
-        (Don't bother on SunOS 4 or 5, they already have dynamic
-        linking using shared libraries.)  THIS OPTION IS UNSUPPORTED.
-
---with-libm, --with-libc: It is possible to specify alternative
-        versions for the Math library (default -lm) and the C library
-        (default the empty string) using the options
-        --with-libm=STRING and --with-libc=STRING, respectively.  For
-        example, if your system requires that you pass -lc_s to the C
-        compiler to use the shared C library, you can pass
-        --with-libc=-lc_s. These libraries are passed after all other
-        libraries, the C library last.
-
---with-libs='libs': Add 'libs' to the LIBS that the python interpreter
-        is linked against.
-
---with-cxx-main=<compiler>: If you plan to use C++ extension modules,
-        then -- on some platforms -- you need to compile python's main()
-        function with the C++ compiler. With this option, make will use
-        <compiler> to compile main() *and* to link the python executable.
-        It is likely that the resulting executable depends on the C++
-        runtime library of <compiler>. (The default is --without-cxx-main.)
-
-        There are platforms that do not require you to build Python
-        with a C++ compiler in order to use C++ extension modules.
-        E.g., x86 Linux with ELF shared binaries and GCC 3.x, 4.x is such
-        a platform. We recommend that you configure Python
-        --without-cxx-main on those platforms because a mismatch
-        between the C++ compiler version used to build Python and to
-        build a C++ extension module is likely to cause a crash at
-        runtime.
-
-        The Python installation also stores the variable CXX that
-        determines, e.g., the C++ compiler distutils calls by default
-        to build C++ extensions. If you set CXX on the configure command
-        line to any string of non-zero length, then configure won't
-        change CXX. If you do not preset CXX but pass
-        --with-cxx-main=<compiler>, then configure sets CXX=<compiler>.
-        In all other cases, configure looks for a C++ compiler by
-        some common names (c++, g++, gcc, CC, cxx, cc++, cl) and sets
-        CXX to the first compiler it finds. If it does not find any
-        C++ compiler, then it sets CXX="".
-
-        Similarly, if you want to change the command used to link the
-        python executable, then set LINKCC on the configure command line.
-
-
---with-pydebug:  Enable additional debugging code to help track down
-        memory management problems.  This allows printing a list of all
-        live objects when the interpreter terminates.
-
---with(out)-universal-newlines: enable reading of text files with
-        foreign newline convention (default: enabled). In other words,
-        any of \r, \n or \r\n is acceptable as end-of-line character.
-        If enabled import and execfile will automatically accept any newline
-        in files. Python code can open a file with open(file, 'U') to
-        read it in universal newline mode. THIS OPTION IS UNSUPPORTED.
-
---with-tsc: Profile using the Pentium timestamping counter (TSC).
-
---with-system-ffi:  Build the _ctypes extension module using an ffi
-        library installed on the system.
-
---with-dbmliborder=db1:db2:...:  Specify the order that backends for the
-	dbm extension are checked. Valid value is a colon separated string
-	with the backend names `ndbm', `gdbm' and `bdb'.
-
-Building for multiple architectures (using the VPATH feature)
--------------------------------------------------------------
-
-If your file system is shared between multiple architectures, it
-usually is not necessary to make copies of the sources for each
-architecture you want to support.  If the make program supports the
-VPATH feature, you can create an empty build directory for each
-architecture, and in each directory run the configure script (on the
-appropriate machine with the appropriate options).  This creates the
-necessary subdirectories and the Makefiles therein.  The Makefiles
-contain a line VPATH=... which points to a directory containing the
-actual sources.  (On SGI systems, use "smake -J1" instead of "make" if
-you use VPATH -- don't try gnumake.)
-
-For example, the following is all you need to build a minimal Python
-in /usr/tmp/python (assuming ~guido/src/python is the toplevel
-directory and you want to build in /usr/tmp/python):
-
-        $ mkdir /usr/tmp/python
-        $ cd /usr/tmp/python
-        $ ~guido/src/python/configure
-        [...]
-        $ make
-        [...]
-        $
-
-Note that configure copies the original Setup file to the build
-directory if it finds no Setup file there.  This means that you can
-edit the Setup file for each architecture independently.  For this
-reason, subsequent changes to the original Setup file are not tracked
-automatically, as they might overwrite local changes.  To force a copy
-of a changed original Setup file, delete the target Setup file.  (The
-makesetup script supports multiple input files, so if you want to be
-fancy you can change the rules to create an empty Setup.local if it
-doesn't exist and run it with arguments $(srcdir)/Setup Setup.local;
-however this assumes that you only need to add modules.)
-
-Also note that you can't use a workspace for VPATH and non VPATH builds. The
-object files left behind by one version confuses the other.
-
-
-Building on non-UNIX systems
-----------------------------
-
-For Windows (2000/NT/ME/98/95), assuming you have MS VC++ 7.1, the
-project files are in PCbuild, the workspace is pcbuild.dsw.  See
-PCbuild\readme.txt for detailed instructions.
-
-For other non-Unix Windows compilers, in particular MS VC++ 6.0 and
-for OS/2, enter the directory "PC" and read the file "readme.txt".
-
-For the Mac, a separate source distribution will be made available,
-for use with the CodeWarrior compiler.  If you are interested in Mac
-development, join the PythonMac Special Interest Group
-(http://www.python.org/sigs/pythonmac-sig/, or send email to
-pythonmac-sig-request@python.org).
-
-Of course, there are also binary distributions available for these
-platforms -- see http://www.python.org/.
-
-To port Python to a new non-UNIX system, you will have to fake the
-effect of running the configure script manually (for Mac and PC, this
-has already been done for you).  A good start is to copy the file
-pyconfig.h.in to pyconfig.h and edit the latter to reflect the actual
-configuration of your system.  Most symbols must simply be defined as
-1 only if the corresponding feature is present and can be left alone
-otherwise; however the *_t type symbols must be defined as some
-variant of int if they need to be defined at all.
-
-For all platforms, it's important that the build arrange to define the
-preprocessor symbol NDEBUG on the compiler command line in a release
-build of Python (else assert() calls remain in the code, hurting
-release-build performance).  The Unix, Windows and Mac builds already
-do this.
-
-
-Miscellaneous issues
-====================
-
-Emacs mode
-----------
-
-There's an excellent Emacs editing mode for Python code; see the file
-Misc/python-mode.el.  Originally written by the famous Tim Peters, it is now
-maintained by the equally famous Barry Warsaw.  The latest version, along with
-various other contributed Python-related Emacs goodies, is online at
-http://launchpad.net/python-mode/.
-
-
-Tkinter
--------
-
-The setup.py script automatically configures this when it detects a
-usable Tcl/Tk installation.  This requires Tcl/Tk version 8.0 or
-higher.
-
-For more Tkinter information, see the Tkinter Resource page:
-http://www.python.org/topics/tkinter/
-
-There are demos in the Demo/tkinter directory.
-
-Note that there's a Python module called "Tkinter" (capital T) which
-lives in Lib/lib-tk/Tkinter.py, and a C module called "_tkinter"
-(lower case t and leading underscore) which lives in
-Modules/_tkinter.c.  Demos and normal Tk applications import only the
-Python Tkinter module -- only the latter imports the C _tkinter
-module.  In order to find the C _tkinter module, it must be compiled
-and linked into the Python interpreter -- the setup.py script does
-this.  In order to find the Python Tkinter module, sys.path must be
-set correctly -- normal installation takes care of this.
-
-
-Distribution structure
-----------------------
-
-Most subdirectories have their own README files.  Most files have
-comments.
-
-Demo/           Demonstration scripts, modules and programs
-Doc/            Documentation sources (reStructuredText)
-Grammar/        Input for the parser generator
-Include/        Public header files
-LICENSE         Licensing information
-Lib/            Python library modules
-Mac/            Macintosh specific resources
-Makefile.pre.in Source from which config.status creates the Makefile.pre
-Misc/           Miscellaneous useful files
-Modules/        Implementation of most built-in modules
-Objects/        Implementation of most built-in object types
-PC/             Files specific to PC ports (DOS, Windows, OS/2)
-PCbuild/        Build directory for Microsoft Visual C++
-Parser/         The parser and tokenizer and their input handling
-Python/         The byte-compiler and interpreter
-README          The file you're reading now
-RISCOS/         Files specific to RISC OS port
-Tools/          Some useful programs written in Python
-pyconfig.h.in   Source from which pyconfig.h is created (GNU autoheader output)
-configure       Configuration shell script (GNU autoconf output)
-configure.in    Configuration specification (input for GNU autoconf)
-install-sh      Shell script used to install files
-setup.py        Python script used to build extension modules
-
-The following files will (may) be created in the toplevel directory by
-the configuration and build processes:
-
-Makefile        Build rules
-Makefile.pre    Build rules before running Modules/makesetup
-buildno         Keeps track of the build number
-config.cache    Cache of configuration variables
-pyconfig.h      Configuration header
-config.log      Log from last configure run
-config.status   Status from last run of the configure script
-getbuildinfo.o  Object file from Modules/getbuildinfo.c
-libpython<version>.a    The library archive
-python          The executable interpreter
-reflog.txt      Output from running the regression suite with the -R flag 
-tags, TAGS      Tags files for vi and Emacs
-
-
-That's all, folks!
-------------------
-
-
---Guido van Rossum (home page: http://www.python.org/~guido/)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/README b/AppPkg/Applications/Python/Python-2.7.2/Tools/README
deleted file mode 100644
index 619786a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/README
+++ /dev/null
@@ -1,41 +0,0 @@
-This directory contains a number of Python programs that are useful
-while building or extending Python.
-
-bgen		Generate complete extension modules from a
-		description.  Still under development!
-		WARNING: bgen has been removed in 3.0.
-
-compiler	Tools used to maintain the compiler package in the
-		standard library.
-
-faqwiz		FAQ Wizard.
-		See http://www.python.org/cgi-bin/faqw.py
-		for a live example.
-
-freeze		Create a stand-alone executable from a Python program.
-
-gdb             Python code to be run inside gdb, to make it easier to
-                debug Python itself (by David Malcolm).
-
-i18n		Tools for internationalization. pygettext.py 
-		parses Python source code and generates .pot files,
-		and msgfmt.py generates a binary message catalog 
-		from a catalog in text format.
-
-scripts         A number of useful single-file programs, e.g. tabnanny.py
-                by Tim Peters, which checks for inconsistent mixing of
-                tabs and spaces, and 2to3, which converts Python 2 code
-                to Python 3 code.
-
-unicode		Tools used to generate unicode database files for
-		Python 2.0 (by Fredrik Lundh).
-
-versioncheck	A tool to automate checking whether you have the latest
-		version of a package (by Jack Jansen).
-
-webchecker	A link checker for web sites.
-
-world		Script to take a list of Internet addresses and print
-		out where in the world those addresses originate from,
-		based on the top-level domain country code found in
-		the address. 
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/README b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/README
deleted file mode 100644
index b69ba71..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/README
+++ /dev/null
@@ -1,9 +0,0 @@
-BGEN -- Automatic Generation of Extension Modules
-=================================================
-
-This directory contains BGEN -- a package that helps in generating
-complete source code for Python extension module.  For examples of its
-use, see the Mac Python source distribution (available separately
-from the Python ftp archives).  Note that BGEN is not Mac specific!
-
-WARNING: bgen has been removed in 3.0.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgen.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgen.py
deleted file mode 100644
index 4b63ceb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgen.py
+++ /dev/null
@@ -1,12 +0,0 @@
-"Export everything in the various bgen submodules."
-
-from bgenType import *
-from bgenVariable import *
-from bgenBuffer import *
-from bgenStackBuffer import *
-from bgenHeapBuffer import *
-from bgenStringBuffer import *
-from bgenOutput import *
-from bgenGenerator import *
-from bgenModule import *
-from bgenObjectDefinition import *
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenBuffer.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenBuffer.py
deleted file mode 100644
index 376dac0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenBuffer.py
+++ /dev/null
@@ -1,301 +0,0 @@
-"""Buffers are character arrays that may contain null bytes.
-
-There are a number of variants depending on:
-- how the buffer is allocated (for output buffers), and
-- whether and how the size is passed into and/or out of the called function.
-"""
-
-
-from bgenType import Type, InputOnlyMixIn, OutputOnlyMixIn, InputOnlyType, OutputOnlyType
-from bgenOutput import *
-
-
-# Map common types to their format characters
-type2format = {
-    'long': 'l',
-    'int': 'i',
-    'short': 'h',
-    'char': 'b',
-    'unsigned long': 'l',
-    'unsigned int': 'i',
-    'unsigned short': 'h',
-    'unsigned char': 'b',
-}
-
-
-# ----- PART 1: Fixed character buffers -----
-
-
-class FixedInputOutputBufferType(InputOnlyType):
-
-    """Fixed buffer -- passed as (inbuffer, outbuffer)."""
-
-    def __init__(self, size, datatype = 'char', sizetype = 'int', sizeformat = None):
-        self.typeName = "Buffer"
-        self.size = str(size)
-        self.datatype = datatype
-        self.sizetype = sizetype
-        self.sizeformat = sizeformat or type2format[sizetype]
-        self.label_needed = 0
-
-    def getArgDeclarations(self, name, reference=False, constmode=False, outmode=False):
-        if reference:
-            raise RuntimeError, "Cannot pass buffer types by reference"
-        return (self.getBufferDeclarations(name, constmode, outmode) +
-                self.getSizeDeclarations(name, outmode))
-
-    def getBufferDeclarations(self, name, constmode=False, outmode=False):
-        return self.getInputBufferDeclarations(name, constmode) + \
-                self.getOutputBufferDeclarations(name, constmode, outmode)
-
-    def getInputBufferDeclarations(self, name, constmode=False):
-        if constmode:
-            const = "const "
-        else:
-            const = ""
-        return ["%s%s *%s__in__" % (const, self.datatype, name)]
-
-    def getOutputBufferDeclarations(self, name, constmode=False, outmode=False):
-        if constmode:
-            raise RuntimeError, "Cannot use const output buffer"
-        if outmode:
-            out = "*"
-        else:
-            out = ""
-        return ["%s%s %s__out__[%s]" % (self.datatype, out, name, self.size)]
-
-    def getSizeDeclarations(self, name, outmode=False):
-        if outmode:
-            out = "*"
-        else:
-            out = ""
-        return ["%s%s %s__len__" %(self.sizetype, out, name)]
-
-    def getAuxDeclarations(self, name):
-        return ["int %s__in_len__" %(name)]
-
-    def getargsFormat(self):
-        return "s#"
-
-    def getargsArgs(self, name):
-        return "&%s__in__, &%s__in_len__" % (name, name)
-
-    def getargsCheck(self, name):
-        Output("if (%s__in_len__ != %s)", name, self.size)
-        OutLbrace()
-        Output('PyErr_SetString(PyExc_TypeError, "buffer length should be %s");',
-               self.size)
-        Output("goto %s__error__;", name)
-        self.label_needed = 1
-        OutRbrace()
-        self.transferSize(name)
-
-    def transferSize(self, name):
-        Output("%s__len__ = %s__in_len__;", name, name)
-
-    def passOutput(self, name):
-        return "%s__in__, %s__out__" % (name, name)
-
-    def mkvalueFormat(self):
-        return "s#"
-
-    def mkvalueArgs(self, name):
-        return "%s__out__, (int)%s" % (name, self.size)
-
-    def cleanup(self, name):
-        if self.label_needed:
-            DedentLevel()
-            Output(" %s__error__: ;", name)
-            IndentLevel()
-
-
-class FixedCombinedInputOutputBufferType(FixedInputOutputBufferType):
-
-    """Like fixed buffer -- but same parameter is input and output."""
-
-    def passOutput(self, name):
-        return "(%s *)memcpy(%s__out__, %s__in__, %s)" % \
-            (self.datatype, name,   name,     self.size)
-
-
-class InputOnlyBufferMixIn(InputOnlyMixIn):
-
-    def getOutputBufferDeclarations(self, name, constmode=False, outmode=False):
-        return []
-
-
-class OutputOnlyBufferMixIn(OutputOnlyMixIn):
-
-    def getInputBufferDeclarations(self, name, constmode=False):
-        return []
-
-class OptionalInputBufferMixIn:
-
-    """Add to input buffers if the buffer may be omitted: pass None in Python
-    and the C code will get a NULL pointer and zero size"""
-
-    def getargsFormat(self):
-        return "z#"
-
-
-class FixedInputBufferType(InputOnlyBufferMixIn, FixedInputOutputBufferType):
-
-    """Fixed size input buffer -- passed without size information.
-
-    Instantiate with the size as parameter.
-    """
-
-    def passInput(self, name):
-        return "%s__in__" % name
-
-class OptionalFixedInputBufferType(OptionalInputBufferMixIn, FixedInputBufferType):
-    pass
-
-class FixedOutputBufferType(OutputOnlyBufferMixIn, FixedInputOutputBufferType):
-
-    """Fixed size output buffer -- passed without size information.
-
-    Instantiate with the size as parameter.
-    """
-
-    def passOutput(self, name):
-        return "%s__out__" % name
-
-
-class VarInputBufferType(FixedInputBufferType):
-
-    """Variable size input buffer -- passed as (buffer, size).
-
-    Instantiate without size parameter.
-    """
-
-    def __init__(self, datatype = 'char', sizetype = 'int', sizeformat = None):
-        FixedInputBufferType.__init__(self, "0", datatype, sizetype, sizeformat)
-
-    def getargsCheck(self, name):
-        Output("%s__len__ = %s__in_len__;", name, name)
-
-    def passInput(self, name):
-        return "%s__in__, %s__len__" % (name, name)
-
-class ReverseInputBufferMixin:
-    """ Mixin for input buffers that are passed as (size, buffer) """
-
-    def passInput(self, name):
-        return "%s__len__, %s__in__" % (name, name)
-
-class OptionalVarInputBufferType(OptionalInputBufferMixIn, VarInputBufferType):
-    pass
-
-# ----- PART 2: Structure buffers -----
-
-
-class StructInputOutputBufferType(FixedInputOutputBufferType):
-
-    """Structure buffer -- passed as a structure pointer.
-
-    Instantiate with the struct type as parameter.
-    """
-
-    def __init__(self, type):
-        FixedInputOutputBufferType.__init__(self, "sizeof(%s)" % type)
-        self.typeName = self.type = type
-
-    def getInputBufferDeclarations(self, name, constmode=False):
-        if constmode:
-            const = "const "
-        else:
-            const = ""
-        return ["%s%s *%s__in__" % (const, self.type, name)]
-
-    def getSizeDeclarations(self, name, outmode=False):
-        return []
-
-    def getAuxDeclarations(self, name):
-        return ["int %s__in_len__" % (name)]
-
-    def getOutputBufferDeclarations(self, name, constmode=False, outmode=False):
-        if constmode:
-            raise RuntimeError, "Cannot use const output buffer"
-        if outmode:
-            out = "*"
-        else:
-            out = ""
-        return ["%s%s %s__out__" % (self.type, out, name)]
-
-    def getargsArgs(self, name):
-        return "(char **)&%s__in__, &%s__in_len__" % (name, name)
-
-    def transferSize(self, name):
-        pass
-
-    def passInput(self, name):
-        return "%s__in__" % name
-
-    def passOutput(self, name):
-        return "%s__in__, &%s__out__" % (name, name)
-
-    def mkvalueArgs(self, name):
-        return "(char *)&%s__out__, (int)%s" % (name, self.size)
-
-
-class StructCombinedInputOutputBufferType(StructInputOutputBufferType):
-
-    """Like structure buffer -- but same parameter is input and output."""
-
-    def passOutput(self, name):
-        return "(%s *)memcpy((char *)%s__out__, (char *)%s__in__, %s)" % \
-            (self.type,          name,              name,     self.size)
-
-
-class StructInputBufferType(InputOnlyBufferMixIn, StructInputOutputBufferType):
-
-    """Fixed size input buffer -- passed as a pointer to a structure.
-
-    Instantiate with the struct type as parameter.
-    """
-
-
-class StructByValueBufferType(StructInputBufferType):
-
-    """Fixed size input buffer -- passed as a structure BY VALUE.
-
-    Instantiate with the struct type as parameter.
-    """
-
-    def passInput(self, name):
-        return "*%s__in__" % name
-
-
-class StructOutputBufferType(OutputOnlyBufferMixIn, StructInputOutputBufferType):
-
-    """Fixed size output buffer -- passed as a pointer to a structure.
-
-    Instantiate with the struct type as parameter.
-    """
-
-    def getSizeDeclarations(self, name, outmode=False):
-        return []
-
-    def getAuxDeclarations(self, name):
-        return []
-
-    def passOutput(self, name):
-        return "&%s__out__" % name
-
-
-class ArrayOutputBufferType(OutputOnlyBufferMixIn, StructInputOutputBufferType):
-
-    """Fixed size output buffer -- declared as a typedef, passed as an array.
-
-    Instantiate with the struct type as parameter.
-    """
-
-    def getSizeDeclarations(self, name, outmode=False):
-        return []
-
-    def getAuxDeclarations(self, name):
-        return []
-
-    def passOutput(self, name):
-        return "%s__out__" % name
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenGenerator.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenGenerator.py
deleted file mode 100644
index af8e904..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenGenerator.py
+++ /dev/null
@@ -1,302 +0,0 @@
-from bgenOutput import *
-from bgenType import *
-from bgenVariable import *
-
-
-Error = "bgenGenerator.Error"
-
-DEBUG=0
-
-# Strings to specify argument transfer modes in generator calls
-IN = "in"
-OUT = "out"
-INOUT = IN_OUT = "in-out"
-
-
-class BaseFunctionGenerator:
-
-    def __init__(self, name, condition=None, callname=None, modifiers=None):
-        if DEBUG: print "<--", name
-        self.name = name
-        if callname:
-            self.callname = callname
-        else:
-            self.callname = name
-        self.prefix = name
-        self.objecttype = "PyObject" # Type of _self argument to function
-        self.condition = condition
-        self.modifiers = modifiers
-
-    def setprefix(self, prefix):
-        self.prefix = prefix
-
-    def checkgenerate(self):
-        return True
-
-    def generate(self):
-        if not self.checkgenerate():
-            return
-        if DEBUG: print "-->", self.name
-        if self.condition:
-            Output()
-            Output(self.condition)
-        self.functionheader()
-        self.functionbody()
-        self.functiontrailer()
-        if self.condition:
-            Output("#endif")
-
-    def functionheader(self):
-        Output()
-        Output("static PyObject *%s_%s(%s *_self, PyObject *_args)",
-               self.prefix, self.name, self.objecttype)
-        OutLbrace()
-        Output("PyObject *_res = NULL;")
-
-    def functionbody(self):
-        Output("/* XXX To be provided */")
-
-    def functiontrailer(self):
-        OutRbrace()
-
-    def reference(self, name = None):
-        if not self.checkgenerate():
-            return
-        if name is None:
-            name = self.name
-        docstring = self.docstring()
-        if self.condition:
-            Output()
-            Output(self.condition)
-        Output("{\"%s\", (PyCFunction)%s_%s, 1,", name, self.prefix, self.name)
-        Output(" PyDoc_STR(%s)},", stringify(docstring))
-        if self.condition:
-            Output("#endif")
-
-    def docstring(self):
-        return None
-
-    def __cmp__(self, other):
-        if not hasattr(other, 'name'):
-            return cmp(id(self), id(other))
-        return cmp(self.name, other.name)
-
-_stringify_map = {'\n': '\\n', '\t': '\\t', '\r': '\\r', '\b': '\\b',
-                  '\e': '\\e', '\a': '\\a', '\f': '\\f', '"': '\\"'}
-def stringify(str):
-    if str is None: return "NULL"
-    res = '"'
-    map = _stringify_map
-    for c in str:
-        if map.has_key(c): res = res + map[c]
-        elif ' ' <= c <= '~': res = res + c
-        else: res = res + '\\%03o' % ord(c)
-    res = res + '"'
-    return res
-
-
-class ManualGenerator(BaseFunctionGenerator):
-
-    def __init__(self, name, body, condition=None):
-        BaseFunctionGenerator.__init__(self, name, condition=condition)
-        self.body = body
-
-    def functionbody(self):
-        Output("%s", self.body)
-
-    def setselftype(self, selftype, itselftype):
-        self.objecttype = selftype
-        self.itselftype = itselftype
-
-
-class FunctionGenerator(BaseFunctionGenerator):
-
-    def __init__(self, returntype, name, *argumentList, **conditionlist):
-        BaseFunctionGenerator.__init__(self, name, **conditionlist)
-        self.returntype = returntype
-        self.argumentList = []
-        self.setreturnvar()
-        self.parseArgumentList(argumentList)
-        self.prefix     = "XXX"    # Will be changed by setprefix() call
-        self.itselftype = None     # Type of _self->ob_itself, if defined
-
-    def setreturnvar(self):
-        if self.returntype:
-            self.rv = self.makereturnvar()
-            self.argumentList.append(self.rv)
-        else:
-            self.rv = None
-
-    def makereturnvar(self):
-        return Variable(self.returntype, "_rv", OutMode)
-
-    def setselftype(self, selftype, itselftype):
-        self.objecttype = selftype
-        self.itselftype = itselftype
-
-    def parseArgumentList(self, argumentList):
-        iarg = 0
-        for type, name, mode in argumentList:
-            iarg = iarg + 1
-            if name is None: name = "_arg%d" % iarg
-            arg = Variable(type, name, mode)
-            self.argumentList.append(arg)
-
-    def docstring(self):
-        input = []
-        output = []
-        for arg in self.argumentList:
-            if arg.flags == ErrorMode or arg.flags == SelfMode:
-                continue
-            if arg.type is None:
-                str = 'void'
-            else:
-                if hasattr(arg.type, 'typeName'):
-                    typeName = arg.type.typeName
-                    if typeName is None: # Suppressed type
-                        continue
-                else:
-                    typeName = "?"
-                    print "Nameless type", arg.type
-
-                str = typeName + ' ' + arg.name
-            if arg.mode in (InMode, InOutMode):
-                input.append(str)
-            if arg.mode in (InOutMode, OutMode):
-                output.append(str)
-        if not input:
-            instr = "()"
-        else:
-            instr = "(%s)" % ", ".join(input)
-        if not output or output == ["void"]:
-            outstr = "None"
-        else:
-            outstr = "(%s)" % ", ".join(output)
-        return instr + " -> " + outstr
-
-    def functionbody(self):
-        self.declarations()
-        self.precheck()
-        self.getargs()
-        self.callit()
-        self.checkit()
-        self.returnvalue()
-
-    def declarations(self):
-        for arg in self.argumentList:
-            arg.declare()
-
-    def getargs(self):
-        sep = ",\n" + ' '*len("if (!PyArg_ParseTuple(")
-        fmt, lst = self.getargsFormatArgs(sep)
-        Output("if (!PyArg_ParseTuple(_args, \"%s\"%s))", fmt, lst)
-        IndentLevel()
-        Output("return NULL;")
-        DedentLevel()
-        for arg in self.argumentList:
-            if arg.flags == SelfMode:
-                continue
-            if arg.mode in (InMode, InOutMode):
-                arg.getargsCheck()
-
-    def getargsFormatArgs(self, sep):
-        fmt = ""
-        lst = ""
-        for arg in self.argumentList:
-            if arg.flags == SelfMode:
-                continue
-            if arg.mode in (InMode, InOutMode):
-                arg.getargsPreCheck()
-                fmt = fmt + arg.getargsFormat()
-                args = arg.getargsArgs()
-                if args:
-                    lst = lst + sep + args
-        return fmt, lst
-
-    def precheck(self):
-        pass
-
-    def beginallowthreads(self):
-        pass
-
-    def endallowthreads(self):
-        pass
-
-    def callit(self):
-        args = ""
-        s = "%s%s(" % (self.getrvforcallit(), self.callname)
-        sep = ",\n" + ' '*len(s)
-        for arg in self.argumentList:
-            if arg is self.rv:
-                continue
-            s = arg.passArgument()
-            if args: s = sep + s
-            args = args + s
-        self.beginallowthreads()
-        Output("%s%s(%s);",
-               self.getrvforcallit(), self.callname, args)
-        self.endallowthreads()
-
-    def getrvforcallit(self):
-        if self.rv:
-            return "%s = " % self.rv.name
-        else:
-            return ""
-
-    def checkit(self):
-        for arg in self.argumentList:
-            arg.errorCheck()
-
-    def returnvalue(self):
-        sep = ",\n" + ' '*len("return Py_BuildValue(")
-        fmt, lst = self.mkvalueFormatArgs(sep)
-        if fmt == "":
-            Output("Py_INCREF(Py_None);")
-            Output("_res = Py_None;");
-        else:
-            Output("_res = Py_BuildValue(\"%s\"%s);", fmt, lst)
-        tmp = self.argumentList[:]
-        tmp.reverse()
-        for arg in tmp:
-            if not arg: continue
-            arg.cleanup()
-        Output("return _res;")
-
-    def mkvalueFormatArgs(self, sep):
-        fmt = ""
-        lst = ""
-        for arg in self.argumentList:
-            if not arg: continue
-            if arg.flags == ErrorMode: continue
-            if arg.mode in (OutMode, InOutMode):
-                arg.mkvaluePreCheck()
-                fmt = fmt + arg.mkvalueFormat()
-                lst = lst + sep + arg.mkvalueArgs()
-        return fmt, lst
-
-class MethodGenerator(FunctionGenerator):
-
-    def parseArgumentList(self, args):
-        a0, args = args[0], args[1:]
-        t0, n0, m0 = a0
-        if m0 != InMode:
-            raise ValueError, "method's 'self' must be 'InMode'"
-        self.itself = Variable(t0, "_self->ob_itself", SelfMode)
-        self.argumentList.append(self.itself)
-        FunctionGenerator.parseArgumentList(self, args)
-
-def _test():
-    void = None
-    eggs = FunctionGenerator(void, "eggs",
-                 (stringptr, 'cmd', InMode),
-                 (int, 'x', InMode),
-                 (double, 'y', InOutMode),
-                 (int, 'status', ErrorMode),
-                 )
-    eggs.setprefix("spam")
-    print "/* START */"
-    eggs.generate()
-
-
-if __name__ == "__main__":
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenGeneratorGroup.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenGeneratorGroup.py
deleted file mode 100644
index 5b035b7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenGeneratorGroup.py
+++ /dev/null
@@ -1,40 +0,0 @@
-from bgenOutput import *
-
-class GeneratorGroup:
-
-    def __init__(self, prefix):
-        self.prefix = prefix
-        self.generators = []
-
-    def add(self, g, dupcheck=0):
-        if dupcheck:
-            if g in self.generators:
-                print 'DUP', g.name
-                return
-        g.setprefix(self.prefix)
-        self.generators.append(g)
-
-    def generate(self):
-        for g in self.generators:
-            g.generate()
-        Output()
-        Output("static PyMethodDef %s_methods[] = {", self.prefix)
-        IndentLevel()
-        for g in self.generators:
-            g.reference()
-        Output("{NULL, NULL, 0}")
-        DedentLevel()
-        Output("};")
-
-
-def _test():
-    void = None
-    from bgenGenerator import FunctionGenerator
-    group = GeneratorGroup("spam")
-    eggs = FunctionGenerator(void, "eggs")
-    group.add(eggs)
-    print "/* START */"
-    group.generate()
-
-if __name__ == "__main__":
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenHeapBuffer.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenHeapBuffer.py
deleted file mode 100644
index 5abfca2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenHeapBuffer.py
+++ /dev/null
@@ -1,145 +0,0 @@
-# Buffers allocated on the heap
-
-from bgenOutput import *
-from bgenType import OutputOnlyMixIn
-from bgenBuffer import FixedInputOutputBufferType
-
-
-class HeapInputOutputBufferType(FixedInputOutputBufferType):
-
-    """Input-output buffer allocated on the heap -- passed as (inbuffer, outbuffer, size).
-
-    Instantiate without parameters.
-    Call from Python with input buffer.
-    """
-
-    def __init__(self, datatype = 'char', sizetype = 'int', sizeformat = None):
-        FixedInputOutputBufferType.__init__(self, "0", datatype, sizetype, sizeformat)
-
-    def getOutputBufferDeclarations(self, name, constmode=False, outmode=False):
-        if constmode:
-            raise RuntimeError, "Cannot use const output buffer"
-        if outmode:
-            out = "*"
-        else:
-            out = ""
-        return ["%s%s *%s__out__" % (self.datatype, out, name)]
-
-    def getargsCheck(self, name):
-        Output("if ((%s__out__ = malloc(%s__in_len__)) == NULL)", name, name)
-        OutLbrace()
-        Output('PyErr_NoMemory();')
-        Output("goto %s__error__;", name)
-        self.label_needed = 1
-        OutRbrace()
-        Output("%s__len__ = %s__in_len__;", name, name)
-
-    def passOutput(self, name):
-        return "%s__in__, %s__out__, (%s)%s__len__" % \
-            (name, name, self.sizetype, name)
-
-    def mkvalueArgs(self, name):
-        return "%s__out__, (int)%s__len__" % (name, name)
-
-    def cleanup(self, name):
-        Output("free(%s__out__);", name)
-        FixedInputOutputBufferType.cleanup(self, name)
-
-
-class VarHeapInputOutputBufferType(HeapInputOutputBufferType):
-
-    """same as base class, but passed as (inbuffer, outbuffer, &size)"""
-
-    def passOutput(self, name):
-        return "%s__in__, %s__out__, &%s__len__" % (name, name, name)
-
-
-class HeapCombinedInputOutputBufferType(HeapInputOutputBufferType):
-
-    """same as base class, but passed as (inoutbuffer, size)"""
-
-    def passOutput(self, name):
-        return "(%s *)memcpy(%s__out__, %s__in__, %s__len__)" % \
-            (self.datatype, name,   name,     name)
-
-
-class VarHeapCombinedInputOutputBufferType(HeapInputOutputBufferType):
-
-    """same as base class, but passed as (inoutbuffer, &size)"""
-
-    def passOutput(self, name):
-        return "(%s *)memcpy(%s__out__, %s__in__, &%s__len__)" % \
-            (self.datatype, name,   name,      name)
-
-
-class HeapOutputBufferType(OutputOnlyMixIn, HeapInputOutputBufferType):
-
-    """Output buffer allocated on the heap -- passed as (buffer, size).
-
-    Instantiate without parameters.
-    Call from Python with buffer size.
-    """
-
-    def getInputBufferDeclarations(self, name, constmode=False):
-        return []
-
-    def getargsFormat(self):
-        return "i"
-
-    def getargsArgs(self, name):
-        return "&%s__in_len__" % name
-
-    def passOutput(self, name):
-        return "%s__out__, %s__len__" % (name, name)
-
-
-class VarHeapOutputBufferType(HeapOutputBufferType):
-
-    """Output buffer allocated on the heap -- passed as (buffer, &size).
-
-    Instantiate without parameters.
-    Call from Python with buffer size.
-    """
-
-    def passOutput(self, name):
-        return "%s__out__, &%s__len__" % (name, name)
-
-
-class VarVarHeapOutputBufferType(VarHeapOutputBufferType):
-
-    """Output buffer allocated on the heap -- passed as (buffer, size, &size).
-
-    Instantiate without parameters.
-    Call from Python with buffer size.
-    """
-
-    def passOutput(self, name):
-        return "%s__out__, %s__len__, &%s__len__" % (name, name, name)
-
-class MallocHeapOutputBufferType(HeapOutputBufferType):
-    """Output buffer allocated by the called function -- passed as (&buffer, &size).
-
-    Instantiate without parameters.
-    Call from Python without parameters.
-    """
-
-    def getargsCheck(self, name):
-        Output("%s__out__ = NULL;", name)
-
-    def getAuxDeclarations(self, name):
-        return []
-
-    def passOutput(self, name):
-        return "&%s__out__, &%s__len__" % (name, name)
-
-    def getargsFormat(self):
-        return ""
-
-    def getargsArgs(self, name):
-        return None
-
-    def mkvalueFormat(self):
-        return "z#"
-
-    def cleanup(self, name):
-        Output("if( %s__out__ ) free(%s__out__);", name, name)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenModule.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenModule.py
deleted file mode 100644
index f8c43d9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenModule.py
+++ /dev/null
@@ -1,94 +0,0 @@
-from bgenOutput import *
-from bgenGeneratorGroup import GeneratorGroup
-
-class Module(GeneratorGroup):
-
-    def __init__(self, name, prefix = None,
-             includestuff = None,
-             finalstuff = None,
-             initstuff = None,
-             variablestuff = None,
-             longname = None):
-        GeneratorGroup.__init__(self, prefix or name)
-        self.name = name
-        if longname:
-            self.longname = longname
-        else:
-            self.longname = name
-        self.includestuff = includestuff
-        self.initstuff = initstuff
-        self.finalstuff = finalstuff
-        self.variablestuff = variablestuff
-        self.typeobjects = []
-
-    def addobject(self, od):
-        self.generators.append(od)
-        self.typeobjects.append(od)
-        od.setmodulename(self.longname)
-
-    def generate(self):
-        OutHeader1("Module " + self.name)
-        Output("#include \"Python.h\"")
-        Output()
-
-        if self.includestuff:
-            Output()
-            Output("%s", self.includestuff)
-
-        self.declareModuleVariables()
-
-        GeneratorGroup.generate(self)
-
-        if self.finalstuff:
-            Output()
-            Output("%s", self.finalstuff)
-
-        Output()
-        Output("void init%s(void)", self.name)
-        OutLbrace()
-        Output("PyObject *m;")
-        Output("PyObject *d;")
-        Output()
-
-        if self.initstuff:
-            Output("%s", self.initstuff)
-            Output()
-
-        Output("m = Py_InitModule(\"%s\", %s_methods);",
-               self.name, self.prefix)
-        Output("d = PyModule_GetDict(m);")
-        self.createModuleVariables()
-        OutRbrace()
-        OutHeader1("End module " + self.name)
-
-    def declareModuleVariables(self):
-        self.errorname = self.prefix + "_Error"
-        Output("static PyObject *%s;", self.errorname)
-
-    def createModuleVariables(self):
-        Output("""%s = %s;""", self.errorname, self.exceptionInitializer())
-        Output("""if (%s == NULL ||""", self.errorname)
-        Output("""    PyDict_SetItemString(d, "Error", %s) != 0)""",
-                                                       self.errorname)
-        IndentLevel()
-        Output("""return;""")
-        DedentLevel()
-        for tp in self.typeobjects:
-            tp.outputTypeObjectInitializer()
-        if self.variablestuff:
-            Output("%s", self.variablestuff)
-            Output()
-
-    def exceptionInitializer(self):
-        return """PyErr_NewException("%s.Error", NULL, NULL)""" % self.name
-
-
-def _test():
-    from bgenGenerator import FunctionGenerator
-    m = Module("spam", "", "#include <stdio.h>")
-    g = FunctionGenerator(None, "bacon")
-    m.add(g)
-    m.generate()
-
-if __name__ == "__main__":
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenObjectDefinition.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenObjectDefinition.py
deleted file mode 100644
index 838369b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenObjectDefinition.py
+++ /dev/null
@@ -1,512 +0,0 @@
-from bgenOutput import *
-from bgenGeneratorGroup import GeneratorGroup
-
-class ObjectDefinition(GeneratorGroup):
-    "Spit out code that together defines a new Python object type"
-    basechain = "NULL"
-    tp_flags = "Py_TPFLAGS_DEFAULT"
-    basetype = None
-    argref = ""    # set to "*" if arg to <type>_New should be pointer
-    argconst = ""   # set to "const " if arg to <type>_New should be const
-
-    def __init__(self, name, prefix, itselftype):
-        """ObjectDefinition constructor.  May be extended, but do not override.
-
-        - name: the object's official name, e.g. 'SndChannel'.
-        - prefix: the prefix used for the object's functions and data, e.g. 'SndCh'.
-        - itselftype: the C type actually contained in the object, e.g. 'SndChannelPtr'.
-
-        XXX For official Python data types, rules for the 'Py' prefix are a problem.
-        """
-
-        GeneratorGroup.__init__(self, prefix or name)
-        self.name = name
-        self.itselftype = itselftype
-        self.objecttype = name + 'Object'
-        self.typename = name + '_Type'
-        self.static = "static " # set to "" to make <type>_New and <type>_Convert public
-        self.modulename = None
-        if hasattr(self, "assertions"):
-            self.assertions()
-
-    def add(self, g, dupcheck=0):
-        g.setselftype(self.objecttype, self.itselftype)
-        GeneratorGroup.add(self, g, dupcheck)
-
-    def reference(self):
-        # In case we are referenced from a module
-        pass
-
-    def setmodulename(self, name):
-        self.modulename = name
-
-    def generate(self):
-        # XXX This should use long strings and %(varname)s substitution!
-
-        OutHeader2("Object type " + self.name)
-
-        self.outputCheck()
-
-        Output("typedef struct %s {", self.objecttype)
-        IndentLevel()
-        Output("PyObject_HEAD")
-        self.outputStructMembers()
-        DedentLevel()
-        Output("} %s;", self.objecttype)
-
-        self.outputNew()
-
-        self.outputConvert()
-
-        self.outputDealloc()
-
-        GeneratorGroup.generate(self)
-
-        Output()
-        self.outputMethodChain()
-
-        self.outputGetattr()
-
-        self.outputSetattr()
-
-        self.outputCompare()
-
-        self.outputRepr()
-
-        self.outputHash()
-
-        self.outputPEP253Hooks()
-
-        self.outputTypeObject()
-
-        OutHeader2("End object type " + self.name)
-
-    def outputCheck(self):
-        sf = self.static and "static "
-        Output("%sPyTypeObject %s;", sf, self.typename)
-        Output()
-        Output("#define %s_Check(x) ((x)->ob_type == &%s || PyObject_TypeCheck((x), &%s))",
-               self.prefix, self.typename, self.typename)
-        Output()
-
-    def outputMethodChain(self):
-        Output("%sPyMethodChain %s_chain = { %s_methods, %s };",
-                self.static,    self.prefix, self.prefix, self.basechain)
-
-    def outputStructMembers(self):
-        Output("%s ob_itself;", self.itselftype)
-
-    def outputNew(self):
-        Output()
-        Output("%sPyObject *%s_New(%s%s %sitself)", self.static, self.prefix,
-                self.argconst, self.itselftype, self.argref)
-        OutLbrace()
-        Output("%s *it;", self.objecttype)
-        self.outputCheckNewArg()
-        Output("it = PyObject_NEW(%s, &%s);", self.objecttype, self.typename)
-        Output("if (it == NULL) return NULL;")
-        if self.basetype:
-            Output("/* XXXX Should we tp_init or tp_new our basetype? */")
-        self.outputInitStructMembers()
-        Output("return (PyObject *)it;")
-        OutRbrace()
-
-    def outputInitStructMembers(self):
-        Output("it->ob_itself = %sitself;", self.argref)
-
-    def outputCheckNewArg(self):
-        "Override this method to apply additional checks/conversions"
-
-    def outputConvert(self):
-        Output()
-        Output("%sint %s_Convert(PyObject *v, %s *p_itself)", self.static, self.prefix,
-                self.itselftype)
-        OutLbrace()
-        self.outputCheckConvertArg()
-        Output("if (!%s_Check(v))", self.prefix)
-        OutLbrace()
-        Output('PyErr_SetString(PyExc_TypeError, "%s required");', self.name)
-        Output("return 0;")
-        OutRbrace()
-        Output("*p_itself = ((%s *)v)->ob_itself;", self.objecttype)
-        Output("return 1;")
-        OutRbrace()
-
-    def outputCheckConvertArg(self):
-        "Override this method to apply additional conversions"
-
-    def outputDealloc(self):
-        Output()
-        Output("static void %s_dealloc(%s *self)", self.prefix, self.objecttype)
-        OutLbrace()
-        self.outputCleanupStructMembers()
-        if self.basetype:
-            Output("%s.tp_dealloc((PyObject *)self);", self.basetype)
-        elif hasattr(self, 'output_tp_free'):
-            # This is a new-style object with tp_free slot
-            Output("self->ob_type->tp_free((PyObject *)self);")
-        else:
-            Output("PyObject_Free((PyObject *)self);")
-        OutRbrace()
-
-    def outputCleanupStructMembers(self):
-        self.outputFreeIt("self->ob_itself")
-
-    def outputFreeIt(self, name):
-        Output("/* Cleanup of %s goes here */", name)
-
-    def outputGetattr(self):
-        Output()
-        Output("static PyObject *%s_getattr(%s *self, char *name)", self.prefix, self.objecttype)
-        OutLbrace()
-        self.outputGetattrBody()
-        OutRbrace()
-
-    def outputGetattrBody(self):
-        self.outputGetattrHook()
-        Output("return Py_FindMethodInChain(&%s_chain, (PyObject *)self, name);",
-               self.prefix)
-
-    def outputGetattrHook(self):
-        pass
-
-    def outputSetattr(self):
-        Output()
-        Output("#define %s_setattr NULL", self.prefix)
-
-    def outputCompare(self):
-        Output()
-        Output("#define %s_compare NULL", self.prefix)
-
-    def outputRepr(self):
-        Output()
-        Output("#define %s_repr NULL", self.prefix)
-
-    def outputHash(self):
-        Output()
-        Output("#define %s_hash NULL", self.prefix)
-
-    def outputTypeObject(self):
-        sf = self.static and "static "
-        Output()
-        Output("%sPyTypeObject %s = {", sf, self.typename)
-        IndentLevel()
-        Output("PyObject_HEAD_INIT(NULL)")
-        Output("0, /*ob_size*/")
-        if self.modulename:
-            Output("\"%s.%s\", /*tp_name*/", self.modulename, self.name)
-        else:
-            Output("\"%s\", /*tp_name*/", self.name)
-        Output("sizeof(%s), /*tp_basicsize*/", self.objecttype)
-        Output("0, /*tp_itemsize*/")
-        Output("/* methods */")
-        Output("(destructor) %s_dealloc, /*tp_dealloc*/", self.prefix)
-        Output("0, /*tp_print*/")
-        Output("(getattrfunc) %s_getattr, /*tp_getattr*/", self.prefix)
-        Output("(setattrfunc) %s_setattr, /*tp_setattr*/", self.prefix)
-        Output("(cmpfunc) %s_compare, /*tp_compare*/", self.prefix)
-        Output("(reprfunc) %s_repr, /*tp_repr*/", self.prefix)
-        Output("(PyNumberMethods *)0, /* tp_as_number */")
-        Output("(PySequenceMethods *)0, /* tp_as_sequence */")
-        Output("(PyMappingMethods *)0, /* tp_as_mapping */")
-        Output("(hashfunc) %s_hash, /*tp_hash*/", self.prefix)
-        DedentLevel()
-        Output("};")
-
-    def outputTypeObjectInitializer(self):
-        Output("""%s.ob_type = &PyType_Type;""", self.typename)
-        if self.basetype:
-            Output("%s.tp_base = &%s;", self.typename, self.basetype)
-        Output("if (PyType_Ready(&%s) < 0) return;", self.typename)
-        Output("""Py_INCREF(&%s);""", self.typename)
-        Output("PyModule_AddObject(m, \"%s\", (PyObject *)&%s);", self.name, self.typename);
-        self.outputTypeObjectInitializerCompat()
-
-    def outputTypeObjectInitializerCompat(self):
-        Output("/* Backward-compatible name */")
-        Output("""Py_INCREF(&%s);""", self.typename);
-        Output("PyModule_AddObject(m, \"%sType\", (PyObject *)&%s);", self.name, self.typename);
-
-    def outputPEP253Hooks(self):
-        pass
-
-class PEP252Mixin:
-    getsetlist = []
-
-    def assertions(self):
-        # Check that various things aren't overridden. If they are it could
-        # signify a bgen-client that has been partially converted to PEP252.
-        assert self.outputGetattr.im_func == PEP252Mixin.outputGetattr.im_func
-        assert self.outputSetattr.im_func == PEP252Mixin.outputSetattr.im_func
-        assert self.outputGetattrBody == None
-        assert self.outputGetattrHook == None
-        assert self.basechain == "NULL"
-
-    def outputGetattr(self):
-        pass
-
-    outputGetattrBody = None
-
-    outputGetattrHook = None
-
-    def outputSetattr(self):
-        pass
-
-    def outputMethodChain(self):
-        # This is a good place to output the getters and setters
-        self.outputGetSetList()
-
-    def outputHook(self, name):
-        methodname = "outputHook_" + name
-        if hasattr(self, methodname):
-            func = getattr(self, methodname)
-            func()
-        else:
-            Output("0, /*%s*/", name)
-
-    def outputTypeObject(self):
-        sf = self.static and "static "
-        Output()
-        Output("%sPyTypeObject %s = {", sf, self.typename)
-        IndentLevel()
-        Output("PyObject_HEAD_INIT(NULL)")
-        Output("0, /*ob_size*/")
-        if self.modulename:
-            Output("\"%s.%s\", /*tp_name*/", self.modulename, self.name)
-        else:
-            Output("\"%s\", /*tp_name*/", self.name)
-        Output("sizeof(%s), /*tp_basicsize*/", self.objecttype)
-        Output("0, /*tp_itemsize*/")
-
-        Output("/* methods */")
-        Output("(destructor) %s_dealloc, /*tp_dealloc*/", self.prefix)
-        Output("0, /*tp_print*/")
-        Output("(getattrfunc)0, /*tp_getattr*/")
-        Output("(setattrfunc)0, /*tp_setattr*/")
-        Output("(cmpfunc) %s_compare, /*tp_compare*/", self.prefix)
-        Output("(reprfunc) %s_repr, /*tp_repr*/", self.prefix)
-
-        Output("(PyNumberMethods *)0, /* tp_as_number */")
-        Output("(PySequenceMethods *)0, /* tp_as_sequence */")
-        Output("(PyMappingMethods *)0, /* tp_as_mapping */")
-
-        Output("(hashfunc) %s_hash, /*tp_hash*/", self.prefix)
-        self.outputHook("tp_call")
-        Output("0, /*tp_str*/")
-        Output("PyObject_GenericGetAttr, /*tp_getattro*/")
-        Output("PyObject_GenericSetAttr, /*tp_setattro */")
-
-        self.outputHook("tp_as_buffer")
-        Output("%s, /* tp_flags */", self.tp_flags)
-        self.outputHook("tp_doc")
-        self.outputHook("tp_traverse")
-        self.outputHook("tp_clear")
-        self.outputHook("tp_richcompare")
-        self.outputHook("tp_weaklistoffset")
-        self.outputHook("tp_iter")
-        self.outputHook("tp_iternext")
-        Output("%s_methods, /* tp_methods */", self.prefix)
-        self.outputHook("tp_members")
-        Output("%s_getsetlist, /*tp_getset*/", self.prefix)
-        self.outputHook("tp_base")
-        self.outputHook("tp_dict")
-        self.outputHook("tp_descr_get")
-        self.outputHook("tp_descr_set")
-        self.outputHook("tp_dictoffset")
-        self.outputHook("tp_init")
-        self.outputHook("tp_alloc")
-        self.outputHook("tp_new")
-        self.outputHook("tp_free")
-        DedentLevel()
-        Output("};")
-
-    def outputGetSetList(self):
-        if self.getsetlist:
-            for name, get, set, doc in self.getsetlist:
-                if get:
-                    self.outputGetter(name, get)
-                else:
-                    Output("#define %s_get_%s NULL", self.prefix, name)
-                    Output()
-                if set:
-                    self.outputSetter(name, set)
-                else:
-                    Output("#define %s_set_%s NULL", self.prefix, name)
-                    Output()
-
-            Output("static PyGetSetDef %s_getsetlist[] = {", self.prefix)
-            IndentLevel()
-            for name, get, set, doc in self.getsetlist:
-                if doc:
-                    doc = '"' + doc + '"'
-                else:
-                    doc = "NULL"
-                Output("{\"%s\", (getter)%s_get_%s, (setter)%s_set_%s, %s},",
-                    name, self.prefix, name, self.prefix, name, doc)
-            Output("{NULL, NULL, NULL, NULL},")
-            DedentLevel()
-            Output("};")
-        else:
-            Output("#define %s_getsetlist NULL", self.prefix)
-        Output()
-
-    def outputGetter(self, name, code):
-        Output("static PyObject *%s_get_%s(%s *self, void *closure)",
-            self.prefix, name, self.objecttype)
-        OutLbrace()
-        Output(code)
-        OutRbrace()
-        Output()
-
-    def outputSetter(self, name, code):
-        Output("static int %s_set_%s(%s *self, PyObject *v, void *closure)",
-            self.prefix, name, self.objecttype)
-        OutLbrace()
-        Output(code)
-        Output("return 0;")
-        OutRbrace()
-        Output()
-
-class PEP253Mixin(PEP252Mixin):
-    tp_flags = "Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE"
-
-    def outputHook_tp_init(self):
-        Output("%s_tp_init, /* tp_init */", self.prefix)
-
-    def outputHook_tp_alloc(self):
-        Output("%s_tp_alloc, /* tp_alloc */", self.prefix)
-
-    def outputHook_tp_new(self):
-        Output("%s_tp_new, /* tp_new */", self.prefix)
-
-    def outputHook_tp_free(self):
-        Output("%s_tp_free, /* tp_free */", self.prefix)
-
-    def output_tp_initBody_basecall(self):
-        """If a type shares its init call with its base type set output_tp_initBody
-        to output_tp_initBody_basecall"""
-        if self.basetype:
-            Output("if (%s.tp_init)", self.basetype)
-            OutLbrace()
-            Output("if ( (*%s.tp_init)(_self, _args, _kwds) < 0) return -1;", self.basetype)
-            OutRbrace()
-
-    output_tp_initBody = None
-
-    def output_tp_init(self):
-        if self.output_tp_initBody:
-            Output("static int %s_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)", self.prefix)
-            OutLbrace()
-            self.output_tp_initBody()
-            OutRbrace()
-        else:
-            Output("#define %s_tp_init 0", self.prefix)
-        Output()
-
-    output_tp_allocBody = None
-
-    def output_tp_alloc(self):
-        if self.output_tp_allocBody:
-            Output("static PyObject *%s_tp_alloc(PyTypeObject *type, int nitems)",
-                self.prefix)
-            OutLbrace()
-            self.output_tp_allocBody()
-            OutRbrace()
-        else:
-            Output("#define %s_tp_alloc PyType_GenericAlloc", self.prefix)
-        Output()
-
-    def output_tp_newBody(self):
-        Output("PyObject *_self;");
-        Output("%s itself;", self.itselftype);
-        Output("char *kw[] = {\"itself\", 0};")
-        Output()
-        Output("if (!PyArg_ParseTupleAndKeywords(_args, _kwds, \"O&\", kw, %s_Convert, &itself)) return NULL;",
-            self.prefix);
-        if self.basetype:
-            Output("if (%s.tp_new)", self.basetype)
-            OutLbrace()
-            Output("if ( (*%s.tp_new)(type, _args, _kwds) == NULL) return NULL;", self.basetype)
-            Dedent()
-            Output("} else {")
-            Indent()
-            Output("if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL;")
-            OutRbrace()
-        else:
-            Output("if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL;")
-        Output("((%s *)_self)->ob_itself = itself;", self.objecttype)
-        Output("return _self;")
-
-    def output_tp_new(self):
-        if self.output_tp_newBody:
-            Output("static PyObject *%s_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)", self.prefix)
-            OutLbrace()
-            self.output_tp_newBody()
-            OutRbrace()
-        else:
-            Output("#define %s_tp_new PyType_GenericNew", self.prefix)
-        Output()
-
-    output_tp_freeBody = None
-
-    def output_tp_free(self):
-        if self.output_tp_freeBody:
-            Output("static void %s_tp_free(PyObject *self)", self.prefix)
-            OutLbrace()
-            self.output_tp_freeBody()
-            OutRbrace()
-        else:
-            Output("#define %s_tp_free PyObject_Del", self.prefix)
-        Output()
-
-    def outputPEP253Hooks(self):
-        self.output_tp_init()
-        self.output_tp_alloc()
-        self.output_tp_new()
-        self.output_tp_free()
-
-class GlobalObjectDefinition(ObjectDefinition):
-    """Like ObjectDefinition but exports some parts.
-
-    XXX Should also somehow generate a .h file for them.
-    """
-
-    def __init__(self, name, prefix = None, itselftype = None):
-        ObjectDefinition.__init__(self, name, prefix or name, itselftype or name)
-        self.static = ""
-
-class ObjectIdentityMixin:
-    """A mixin class for objects that makes the identity of ob_itself
-    govern comparisons and dictionary lookups. Useful if the C object can
-    be returned by library calls and it is difficult (or impossible) to find
-    the corresponding Python objects. With this you can create Python object
-    wrappers on the fly"""
-
-    def outputCompare(self):
-        Output()
-        Output("static int %s_compare(%s *self, %s *other)", self.prefix, self.objecttype,
-                self.objecttype)
-        OutLbrace()
-        Output("unsigned long v, w;")
-        Output()
-        Output("if (!%s_Check((PyObject *)other))", self.prefix)
-        OutLbrace()
-        Output("v=(unsigned long)self;")
-        Output("w=(unsigned long)other;")
-        OutRbrace()
-        Output("else")
-        OutLbrace()
-        Output("v=(unsigned long)self->ob_itself;")
-        Output("w=(unsigned long)other->ob_itself;")
-        OutRbrace()
-        Output("if( v < w ) return -1;")
-        Output("if( v > w ) return 1;")
-        Output("return 0;")
-        OutRbrace()
-
-    def outputHash(self):
-        Output()
-        Output("static long %s_hash(%s *self)", self.prefix, self.objecttype)
-        OutLbrace()
-        Output("return (long)self->ob_itself;")
-        OutRbrace()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenOutput.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenOutput.py
deleted file mode 100644
index bde53f0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenOutput.py
+++ /dev/null
@@ -1,219 +0,0 @@
-"""Output primitives for the binding generator classes.
-
-This should really be a class, but then everybody would be passing
-the output object to each other.  I chose for the simpler approach
-of a module with a global variable.  Use SetOutputFile() or
-SetOutputFileName() to change the output file.
-"""
-
-_NeedClose = 0
-
-def SetOutputFile(file = None, needclose = 0):
-    """Call this with an open file object to make it the output file.
-
-    Call it without arguments to close the current file (if necessary)
-    and reset it to sys.stdout.
-    If the second argument is true, the new file will be explicitly closed
-    on a subsequence call.
-    """
-    global _File, _NeedClose
-    if _NeedClose:
-        tmp = _File
-        _NeedClose = 0
-        _File = None
-        tmp.close()
-    if file is None:
-        import sys
-        file = sys.stdout
-    _File = file
-    _NeedClose = file and needclose
-
-def SetOutputFileName(filename = None):
-    """Call this with a filename to make it the output file.
-
-    Call it without arguments to close the current file (if necessary)
-    and reset it to sys.stdout.
-    """
-    SetOutputFile()
-    if filename:
-        SetOutputFile(open(filename, 'w'), 1)
-
-SetOutputFile() # Initialize _File
-
-_Level = 0      # Indentation level
-
-def GetLevel():
-    """Return the current indentation level."""
-    return _Level
-
-def SetLevel(level):
-    """Set the current indentation level.
-
-    This does no type or range checking -- use at own risk.
-    """
-    global _Level
-    _Level = level
-
-def Output(format = "", *args):
-    VaOutput(format, args)
-
-def VaOutput(format, args):
-    """Call this with a format string and argument tuple for the format.
-
-    A newline is always added.  Each line in the output is indented
-    to the proper indentation level -- even if the result of the
-    format expansion contains embedded newlines.  Exception: lines
-    beginning with '#' are not indented -- these are assumed to be
-    C preprprocessor lines.
-    """
-    text = format % args
-    if _Level > 0:
-        indent = '\t' * _Level
-        lines = text.split('\n')
-        for i in range(len(lines)):
-            if lines[i] and lines[i][0] != '#':
-                lines[i] = indent + lines[i]
-        text = '\n'.join(lines)
-    _File.write(text + '\n')
-
-def IndentLevel(by = 1):
-    """Increment the indentation level by one.
-
-    When called with an argument, adds it to the indentation level.
-    """
-    global _Level
-    if _Level+by < 0:
-        raise Error, "indentation underflow (internal error)"
-    _Level = _Level + by
-
-def DedentLevel(by = 1):
-    """Decrement the indentation level by one.
-
-    When called with an argument, subtracts it from the indentation level.
-    """
-    IndentLevel(-by)
-
-def OutIndent(format = "", *args):
-    """Combine Output() followed by IndentLevel().
-
-    If no text is given, acts like lone IndentLevel().
-    """
-    if format: VaOutput(format, args)
-    IndentLevel()
-
-def OutDedent(format = "", *args):
-    """Combine Output() followed by DedentLevel().
-
-    If no text is given, acts like loneDedentLevel().
-    """
-    if format: VaOutput(format, args)
-    DedentLevel()
-
-def OutLbrace(format = "", *args):
-    """Like Output, but add a '{' and increase the indentation level.
-
-    If no text is given a lone '{' is output.
-    """
-    if format:
-        format = format + " {"
-    else:
-        format = "{"
-    VaOutput(format, args)
-    IndentLevel()
-
-def OutRbrace():
-    """Decrease the indentation level and output a '}' on a line by itself."""
-    DedentLevel()
-    Output("}")
-
-def OutHeader(text, dash):
-    """Output a header comment using a given dash character."""
-    n = 64 - len(text)
-    Output()
-    Output("/* %s %s %s */", dash * (n/2), text, dash * (n - n/2))
-    Output()
-
-def OutHeader1(text):
-    """Output a level 1 header comment (uses '=' dashes)."""
-    OutHeader(text, "=")
-
-def OutHeader2(text):
-    """Output a level 2 header comment (uses '-' dashes)."""
-    OutHeader(text, "-")
-
-def Out(text):
-    """Output multiline text that's internally indented.
-
-    Pass this a multiline character string.  The whitespace before the
-    first nonblank line of the string will be subtracted from all lines.
-    The lines are then output using Output(), but without interpretation
-    of formatting (if you need formatting you can do it before the call).
-    Recommended use:
-
-        Out('''
-            int main(argc, argv)
-                int argc;
-                char *argv;
-            {
-                printf("Hello, world\\n");
-                exit(0);
-            }
-        ''')
-
-    Caveat: the indentation must be consistent -- if you use three tabs
-    in the first line, (up to) three tabs are removed from following lines,
-    but a line beginning with 24 spaces is not trimmed at all.  Don't use
-    this as a feature.
-    """
-    # (Don't you love using triple quotes *inside* triple quotes? :-)
-
-    lines = text.split('\n')
-    indent = ""
-    for line in lines:
-        if line.strip():
-            for c in line:
-                if not c.isspace():
-                    break
-                indent = indent + c
-            break
-    n = len(indent)
-    for line in lines:
-        if line[:n] == indent:
-            line = line[n:]
-        else:
-            for c in indent:
-                if line[:1] <> c: break
-                line = line[1:]
-        VaOutput("%s", line)
-
-
-def _test():
-    """Test program.  Run when the module is run as a script."""
-    OutHeader1("test bgenOutput")
-    Out("""
-        #include <Python.h>
-        #include <stdio.h>
-
-        main(argc, argv)
-            int argc;
-            char **argv;
-        {
-            int i;
-    """)
-    IndentLevel()
-    Output("""\
-/* Here are a few comment lines.
-   Just to test indenting multiple lines.
-
-   End of the comment lines. */
-""")
-    Output("for (i = 0; i < argc; i++)")
-    OutLbrace()
-    Output('printf("argv[%%d] = %%s\\n", i, argv[i]);')
-    OutRbrace()
-    Output("exit(0)")
-    OutRbrace()
-    OutHeader2("end test")
-
-if __name__ == '__main__':
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenStackBuffer.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenStackBuffer.py
deleted file mode 100644
index befab6b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenStackBuffer.py
+++ /dev/null
@@ -1,62 +0,0 @@
-"""Buffers allocated on the stack."""
-
-
-from bgenBuffer import FixedInputBufferType, FixedOutputBufferType
-
-
-class StackOutputBufferType(FixedOutputBufferType):
-
-    """Fixed output buffer allocated on the stack -- passed as (buffer, size).
-
-    Instantiate with the buffer size as parameter.
-    """
-
-    def passOutput(self, name):
-        return "%s__out__, %s" % (name, self.size)
-
-
-class VarStackOutputBufferType(StackOutputBufferType):
-
-    """Output buffer allocated on the stack -- passed as (buffer, &size).
-
-    Instantiate with the buffer size as parameter.
-    """
-
-    def getSizeDeclarations(self, name):
-        return []
-
-    def getAuxDeclarations(self, name):
-        return ["int %s__len__ = %s" % (name, self.size)]
-
-    def passOutput(self, name):
-        return "%s__out__, &%s__len__" % (name, name)
-
-    def mkvalueArgs(self, name):
-        return "%s__out__, (int)%s__len__" % (name, name)
-
-
-class VarVarStackOutputBufferType(VarStackOutputBufferType):
-
-    """Output buffer allocated on the stack -- passed as (buffer, size, &size).
-
-    Instantiate with the buffer size as parameter.
-    """
-
-    def passOutput(self, name):
-        return "%s__out__, %s__len__, &%s__len__" % (name, name, name)
-
-
-class ReturnVarStackOutputBufferType(VarStackOutputBufferType):
-
-    """Output buffer allocated on the stack -- passed as (buffer, size) -> size.
-
-    Instantiate with the buffer size as parameter.
-    The function's return value is the size.
-    (XXX Should have a way to suppress returning it separately, too.)
-    """
-
-    def passOutput(self, name):
-        return "%s__out__, %s__len__" % (name, name)
-
-    def mkvalueArgs(self, name):
-        return "%s__out__, (int)_rv" % name
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenStringBuffer.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenStringBuffer.py
deleted file mode 100644
index 70b58a4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenStringBuffer.py
+++ /dev/null
@@ -1,67 +0,0 @@
-"""Buffers used to hold null-terminated strings."""
-
-
-from bgenBuffer import FixedOutputBufferType
-from bgenStackBuffer import StackOutputBufferType
-from bgenHeapBuffer import HeapOutputBufferType
-
-
-class StringBufferMixIn:
-
-    """Mix-in class to create various string buffer types.
-
-    Strings are character arrays terminated by a null byte.
-    (For input, this is also covered by stringptr.)
-    For output, there are again three variants:
-    - Fixed: size is a constant given in the documentation; or
-    - Stack: size is passed to the C function but we decide on a size at
-      code generation time so we can still allocate on the heap); or
-    - Heap: size is passed to the C function and we let the Python caller
-      pass a size.
-    (Note that this doesn't cover output parameters in which a string
-    pointer is returned.  These are actually easier (no allocation) but far
-    less common.  I'll write the classes when there is demand.)
-    """
-
-    def getSizeDeclarations(self, name):
-        return []
-
-    def getAuxDeclarations(self, name):
-        return []
-
-    def getargsFormat(self):
-        return "s"
-
-    def getargsArgs(self, name):
-        return "&%s__in__" % name
-
-    def mkvalueFormat(self):
-        return "s"
-
-    def mkvalueArgs(self, name):
-        return "%s__out__" % name
-
-
-class FixedOutputStringType(StringBufferMixIn, FixedOutputBufferType):
-
-    """Null-terminated output string -- passed without size.
-
-    Instantiate with buffer size as parameter.
-    """
-
-
-class StackOutputStringType(StringBufferMixIn, StackOutputBufferType):
-
-    """Null-terminated output string -- passed as (buffer, size).
-
-    Instantiate with buffer size as parameter.
-    """
-
-
-class HeapOutputStringType(StringBufferMixIn, HeapOutputBufferType):
-
-    """Null-terminated output string -- passed as (buffer, size).
-
-    Instantiate without parameters.
-    Call from Python with buffer size.
-    """
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenType.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenType.py
deleted file mode 100644
index af6fc69..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenType.py
+++ /dev/null
@@ -1,328 +0,0 @@
-"""Type classes and a modest collection of standard types."""
-
-
-from bgenOutput import *
-
-
-class Type:
-
-    """Define the various things you can do with a C type.
-
-    Most methods are intended to be extended or overridden.
-    """
-
-    def __init__(self, typeName, fmt):
-        """Call with the C name and getargs format for the type.
-
-        Example: int = Type("int", "i")
-        """
-        self.typeName = typeName
-        self.fmt = fmt
-
-    def declare(self, name, reference=False):
-        """Declare a variable of the type with a given name.
-
-        Example: int.declare('spam') prints "int spam;"
-        """
-        for decl in self.getArgDeclarations(name, reference):
-            Output("%s;", decl)
-        for decl in self.getAuxDeclarations(name):
-            Output("%s;", decl)
-
-    def getArgDeclarations(self, name, reference=False, constmode=False, outmode=False):
-        """Return the main part of the declarations for this type: the items
-        that will be passed as arguments in the C/C++ function call."""
-        if reference:
-            ref = "&"
-        else:
-            ref = ""
-        if constmode:
-            const = "const "
-        else:
-            const = ""
-        if outmode:
-            out = "*"
-        else:
-            out = ""
-        return ["%s%s%s%s %s" % (const, self.typeName, ref, out, name)]
-
-    def getAuxDeclarations(self, name):
-        """Return any auxiliary declarations needed for implementing this
-        type, such as helper variables used to hold sizes, etc. These declarations
-        are not part of the C/C++ function call interface."""
-        return []
-
-    def getargs(self):
-        return self.getargsFormat(), self.getargsArgs()
-
-    def getargsFormat(self):
-        """Return the format for this type for use with PyArg_Parse().
-
-        Example: int.getargsFormat() returns the string "i".
-        (getargs is a very old name for PyArg_Parse, hence the name of this method).
-        """
-        return self.fmt
-
-    def getargsArgs(self, name):
-        """Return an argument for use with PyArg_Parse().
-
-        Example: int.getargsArgs("spam") returns the string "&spam".
-        """
-        return "&" + name
-
-    def getargsPreCheck(self, name):
-        """Perform any actions needed before calling getargs().
-
-        This could include declaring temporary variables and such.
-        """
-
-    def getargsCheck(self, name):
-        """Perform any needed post-[new]getargs() checks.
-
-        This is type-dependent; the default does not check for errors.
-        An example would be a check for a maximum string length, or it
-        could do post-getargs() copying or conversion."""
-
-    def passInput(self, name):
-        """Return an argument for passing a variable into a call.
-
-        Example: int.passInput("spam") returns the string "spam".
-        """
-        return name
-
-    def passOutput(self, name):
-        """Return an argument for returning a variable out of a call.
-
-        Example: int.passOutput("spam") returns the string "&spam".
-        """
-        return "&" + name
-
-    def passReference(self, name):
-        """Return an argument for C++ pass-by-reference.
-        Default is to call passInput().
-        """
-        return self.passInput(name)
-
-    def errorCheck(self, name):
-        """Check for an error returned in the variable.
-
-        This is type-dependent; the default does not check for errors.
-        An example would be a check for a NULL pointer.
-        If an error is found, the generated routine should
-        raise an exception and return NULL.
-
-        XXX There should be a way to add error clean-up code.
-        """
-        Output("/* XXX no err check for %s %s */", self.typeName, name)
-
-    def mkvalue(self):
-        return self.mkvalueFormat(), self.mkvalueArgs()
-
-    def mkvalueFormat(self):
-        """Return the format for this type for use with Py_BuildValue().
-
-        This is normally the same as getargsFormat() but it is
-        a separate function to allow future divergence.
-        (mkvalue is a very old name for Py_BuildValue, hence the name of this
-        method).
-        """
-        return self.getargsFormat()
-
-    def mkvalueArgs(self, name):
-        """Return an argument for use with Py_BuildValue().
-
-        Example: int.mkvalueArgs("spam") returns the string "spam".
-        """
-        return name
-
-    def mkvaluePreCheck(self, name):
-        """Perform any actions needed before calling mkvalue().
-
-        This could include declaring temporary variables and such.
-        """
-
-    def cleanup(self, name):
-        """Clean up if necessary.
-
-        This is normally empty; it may deallocate buffers etc.
-        """
-        pass
-
-class ByAddressType(Type):
-    "Simple type that is also passed by address for input"
-
-    def passInput(self, name):
-        return "&%s" % name
-
-
-
-# Sometimes it's useful to define a type that's only usable as input or output parameter
-
-class InputOnlyMixIn:
-
-    "Mix-in class to boobytrap passOutput"
-
-    def passOutput(self, name):
-        raise RuntimeError, "Type '%s' can only be used for input parameters" % self.typeName
-
-class InputOnlyType(InputOnlyMixIn, Type):
-
-    "Same as Type, but only usable for input parameters -- passOutput is boobytrapped"
-
-class OutputOnlyMixIn:
-
-    "Mix-in class to boobytrap passInput"
-
-    def passInput(self, name):
-        raise RuntimeError, "Type '%s' can only be used for output parameters" % self.typeName
-
-class OutputOnlyType(OutputOnlyMixIn, Type):
-
-    "Same as Type, but only usable for output parameters -- passInput is boobytrapped"
-
-
-# A modest collection of standard C types.
-void = None
-char = Type("char", "c")
-short = Type("short", "h")
-unsigned_short = Type("unsigned short", "H")
-int = Type("int", "i")
-long = Type("long", "l")
-unsigned_long = Type("unsigned long", "l")
-float = Type("float", "f")
-double = Type("double", "d")
-
-
-# The most common use of character pointers is a null-terminated string.
-# For input, this is easy.  For output, and for other uses of char *,
-# see the module bgenBuffer.
-stringptr = InputOnlyType("char*", "s")
-unicodestringptr = InputOnlyType("wchar_t *", "u")
-
-
-# Some Python related types.
-objectptr = Type("PyObject*", "O")
-stringobjectptr = Type("PyStringObject*", "S")
-# Etc.
-
-
-class FakeType(InputOnlyType):
-
-    """A type that is not represented in the Python version of the interface.
-
-    Instantiate with a value to pass in the call.
-    """
-
-    def __init__(self, substitute):
-        self.substitute = substitute
-        self.typeName = None    # Don't show this argument in __doc__ string
-
-    def getArgDeclarations(self, name, reference=False, constmode=False, outmode=False):
-        return []
-
-    def getAuxDeclarations(self, name, reference=False):
-        return []
-
-    def getargsFormat(self):
-        return ""
-
-    def getargsArgs(self, name):
-        return None
-
-    def passInput(self, name):
-        return self.substitute
-
-
-class OpaqueType(Type):
-
-    """A type represented by an opaque object type, always passed by address.
-
-    Instantiate with the type name and the names of the new and convert procs.
-    If fewer than three arguments are passed, the second argument is used
-    to derive the new and convert procs by appending _New and _Convert; it
-    defaults to the first argument.
-    """
-
-    def __init__(self, name, arg = None, extra = None):
-        self.typeName = name
-        if extra is None:
-             # Two arguments (name, usetype) or one (name)
-            arg = arg or name
-            self.new = arg + '_New'
-            self.convert = arg + '_Convert'
-        else:
-            # Three arguments (name, new, convert)
-            self.new = arg
-            self.convert = extra
-
-    def getargsFormat(self):
-        return "O&"
-
-    def getargsArgs(self, name):
-        return "%s, &%s" % (self.convert, name)
-
-    def passInput(self, name):
-        return "&%s" % name
-
-    def mkvalueFormat(self):
-        return "O&"
-
-    def mkvalueArgs(self, name):
-        return "%s, &%s" % (self.new, name)
-
-
-class OpaqueByValueType(OpaqueType):
-
-    """A type represented by an opaque object type, on input passed BY VALUE.
-
-    Instantiate with the type name, and optionally an object type name whose
-    New/Convert functions will be used.
-    """
-
-    def passInput(self, name):
-        return name
-
-    def mkvalueArgs(self, name):
-        return "%s, %s" % (self.new, name)
-
-class OpaqueByRefType(OpaqueType):
-    """An opaque object type, passed by reference.
-
-    Instantiate with the type name, and optionally an object type name whose
-    New/Convert functions will be used.
-    """
-
-    def passInput(self, name):
-        return name
-
-#    def passOutput(self, name):
-#        return name
-
-    def mkvalueFormat(self):
-        return "O"
-
-    def mkvalueArgs(self, name):
-        return "%s(%s)" % (self.new, name)
-
-class OpaqueByValueStructType(OpaqueByValueType):
-    """Similar to OpaqueByValueType, but we also pass this to mkvalue by
-    address, in stead of by value.
-    """
-
-    def mkvalueArgs(self, name):
-        return "%s, &%s" % (self.new, name)
-
-
-class OpaqueArrayType(OpaqueByValueType):
-
-    """A type represented by an opaque object type, with ARRAY passing semantics.
-
-    Instantiate with the type name, and optional an object type name whose
-    New/Convert functions will be used.
-    """
-
-    def getargsArgs(self, name):
-        return "%s, %s" % (self.convert, name)
-
-    def passOutput(self, name):
-        return name
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenVariable.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenVariable.py
deleted file mode 100644
index 57059bf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/bgenVariable.py
+++ /dev/null
@@ -1,112 +0,0 @@
-"""Variables, arguments and argument transfer modes etc."""
-
-
-# Values to represent argument transfer modes
-InMode    = 1 # input-only argument
-OutMode   = 2 # output-only argument
-InOutMode = 3 # input-output argument
-ModeMask  = 3 # bits to keep for mode
-
-
-# Special cases for mode/flags argument
-# XXX This is still a mess!
-SelfMode   =  4+InMode  # this is 'self' -- don't declare it
-ReturnMode =  8+OutMode # this is the function return value
-ErrorMode  = 16+OutMode # this is an error status -- turn it into an exception
-RefMode    = 32
-ConstMode  = 64
-
-class Variable:
-
-    """A Variable holds a type, a name, a transfer mode and flags.
-
-    Most of its methods call the correponding type method with the
-    variable name.
-    """
-
-    def __init__(self, type, name = None, flags = InMode):
-        """Call with a type, a name and flags.
-
-        If name is None, it muse be set later.
-        flags defaults to InMode.
-        """
-        self.type = type
-        self.name = name
-        self.flags = flags
-        self.mode = flags & ModeMask
-
-    def declare(self):
-        """Declare the variable if necessary.
-
-        If it is "self", it is not declared.
-        """
-        if self.flags == ReturnMode+RefMode:
-            self.type.declare(self.name, reference=True)
-        elif self.flags != SelfMode:
-            self.type.declare(self.name)
-
-    def getArgDeclarations(self, fullmodes=False):
-        refmode = (self.flags & RefMode)
-        constmode = False
-        outmode = False
-        if fullmodes:
-            constmode = (self.flags & ConstMode)
-            outmode = (self.flags & OutMode)
-        return self.type.getArgDeclarations(self.name,
-                reference=refmode, constmode=constmode, outmode=outmode)
-
-    def getAuxDeclarations(self):
-        return self.type.getAuxDeclarations(self.name)
-
-    def getargsFormat(self):
-        """Call the type's getargsFormatmethod."""
-        return self.type.getargsFormat()
-
-    def getargsArgs(self):
-        """Call the type's getargsArgsmethod."""
-        return self.type.getargsArgs(self.name)
-
-    def getargsCheck(self):
-        return self.type.getargsCheck(self.name)
-
-    def getargsPreCheck(self):
-        return self.type.getargsPreCheck(self.name)
-
-    def passArgument(self):
-        """Return the string required to pass the variable as argument.
-
-        For "in" arguments, return the variable name.
-        For "out" and "in out" arguments,
-        return its name prefixed with "&".
-        """
-        if self.mode == InMode:
-            return self.type.passInput(self.name)
-        if self.mode & RefMode:
-            return self.type.passReference(self.name)
-        if self.mode in (OutMode, InOutMode):
-            return self.type.passOutput(self.name)
-        # XXX Shouldn't get here
-        return "/*mode?*/" + self.type.passInput(self.name)
-
-    def errorCheck(self):
-        """Check for an error if necessary.
-
-        This only generates code if the variable's mode is ErrorMode.
-        """
-        if self.flags == ErrorMode:
-            self.type.errorCheck(self.name)
-
-    def mkvalueFormat (self):
-        """Call the type's mkvalueFormat method."""
-        return self.type.mkvalueFormat()
-
-    def mkvalueArgs(self):
-        """Call the type's mkvalueArgs method."""
-        return self.type.mkvalueArgs(self.name)
-
-    def mkvaluePreCheck(self):
-        return self.type.mkvaluePreCheck(self.name)
-
-    def cleanup(self):
-        """Call the type's cleanup method."""
-        return self.type.cleanup(self.name)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/macsupport.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/macsupport.py
deleted file mode 100644
index 6e2f041..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/macsupport.py
+++ /dev/null
@@ -1,197 +0,0 @@
-"""\
-Augment the "bgen" package with definitions that are useful on the Apple Macintosh.
-
-Intended usage is "from macsupport import *" -- this implies all bgen's goodies.
-"""
-
-
-# Import everything from bgen (for ourselves as well as for re-export)
-from bgen import *
-
-
-# Simple types
-Boolean = Type("Boolean", "b")
-SignedByte = Type("SignedByte", "b")
-Size = Type("Size", "l")
-Style = Type("Style", "b")
-StyleParameter = Type("StyleParameter", "h")
-CharParameter = Type("CharParameter", "h")
-TextEncoding = Type("TextEncoding", "l")
-ByteCount = Type("ByteCount", "l")
-Duration = Type("Duration", "l")
-ByteOffset = Type("ByteOffset", "l")
-OptionBits = Type("OptionBits", "l")
-ItemCount = Type("ItemCount", "l")
-PBVersion = Type("PBVersion", "l")
-ScriptCode = Type("ScriptCode", "h")
-LangCode = Type("LangCode", "h")
-RegionCode = Type("RegionCode", "h")
-
-UInt8 = Type("UInt8", "b")
-SInt8 = Type("SInt8", "b")
-UInt16 = Type("UInt16", "H")
-SInt16 = Type("SInt16", "h")
-UInt32 = Type("UInt32", "l")
-SInt32 = Type("SInt32", "l")
-Float32 = Type("Float32", "f")
-
-wide = OpaqueByValueType("wide", "PyMac_Buildwide", "PyMac_Getwide")
-wide_ptr = OpaqueType("wide", "PyMac_Buildwide", "PyMac_Getwide")
-
-# Pascal strings
-ConstStr255Param = OpaqueArrayType("Str255", "PyMac_BuildStr255", "PyMac_GetStr255")
-Str255 = OpaqueArrayType("Str255", "PyMac_BuildStr255", "PyMac_GetStr255")
-StringPtr = OpaqueByValueType("StringPtr", "PyMac_BuildStr255", "PyMac_GetStr255")
-ConstStringPtr = StringPtr
-
-# File System Specifications
-FSSpec_ptr = OpaqueType("FSSpec", "PyMac_BuildFSSpec", "PyMac_GetFSSpec")
-FSSpec = OpaqueByValueStructType("FSSpec", "PyMac_BuildFSSpec", "PyMac_GetFSSpec")
-FSRef_ptr = OpaqueType("FSRef", "PyMac_BuildFSRef", "PyMac_GetFSRef")
-FSRef = OpaqueByValueStructType("FSRef", "PyMac_BuildFSRef", "PyMac_GetFSRef")
-
-# OSType and ResType: 4-byte character strings
-def OSTypeType(typename):
-    return OpaqueByValueType(typename, "PyMac_BuildOSType", "PyMac_GetOSType")
-OSType = OSTypeType("OSType")
-ResType = OSTypeType("ResType")
-FourCharCode = OSTypeType("FourCharCode")
-
-# Version numbers
-NumVersion = OpaqueByValueType("NumVersion", "PyMac_BuildNumVersion", "BUG")
-
-# Handles (always resources in our case)
-Handle = OpaqueByValueType("Handle", "ResObj")
-MenuHandle = OpaqueByValueType("MenuHandle", "MenuObj")
-MenuRef = MenuHandle
-ControlHandle = OpaqueByValueType("ControlHandle", "CtlObj")
-ControlRef = ControlHandle
-
-# Windows and Dialogs
-WindowPtr = OpaqueByValueType("WindowPtr", "WinObj")
-WindowRef = WindowPtr
-DialogPtr = OpaqueByValueType("DialogPtr", "DlgObj")
-DialogRef = DialogPtr
-ExistingWindowPtr = OpaqueByValueType("WindowPtr", "WinObj_WhichWindow", "BUG")
-ExistingDialogPtr = OpaqueByValueType("DialogPtr", "DlgObj_WhichDialog", "BUG")
-
-# NULL pointer passed in as optional storage -- not present in Python version
-NullStorage = FakeType("(void *)0")
-
-# More standard datatypes
-Fixed = OpaqueByValueType("Fixed", "PyMac_BuildFixed", "PyMac_GetFixed")
-
-# Quickdraw data types
-Rect = Rect_ptr = OpaqueType("Rect", "PyMac_BuildRect", "PyMac_GetRect")
-Point = OpaqueByValueType("Point", "PyMac_BuildPoint", "PyMac_GetPoint")
-Point_ptr = OpaqueType("Point", "PyMac_BuildPoint", "PyMac_GetPoint")
-
-# Event records
-EventRecord = OpaqueType("EventRecord", "PyMac_BuildEventRecord", "PyMac_GetEventRecord")
-EventRecord_ptr = EventRecord
-
-# CoreFoundation datatypes
-CFTypeRef = OpaqueByValueType("CFTypeRef", "CFTypeRefObj")
-CFStringRef = OpaqueByValueType("CFStringRef", "CFStringRefObj")
-CFMutableStringRef = OpaqueByValueType("CFMutableStringRef", "CFMutableStringRefObj")
-CFArrayRef = OpaqueByValueType("CFArrayRef", "CFArrayRefObj")
-CFMutableArrayRef = OpaqueByValueType("CFMutableArrayRef", "CFMutableArrayRefObj")
-CFDictionaryRef = OpaqueByValueType("CFDictionaryRef", "CFDictionaryRefObj")
-CFMutableDictionaryRef = OpaqueByValueType("CFMutableDictionaryRef", "CFMutableDictionaryRefObj")
-CFURLRef = OpaqueByValueType("CFURLRef", "CFURLRefObj")
-OptionalCFURLRef = OpaqueByValueType("CFURLRef", "OptionalCFURLRefObj")
-
-# OSErr is special because it is turned into an exception
-# (Could do this with less code using a variant of mkvalue("O&")?)
-class OSErrType(Type):
-    def errorCheck(self, name):
-        Output("if (%s != noErr) return PyMac_Error(%s);", name, name)
-        self.used = 1
-OSErr = OSErrType("OSErr", 'h')
-OSStatus = OSErrType("OSStatus", 'l')
-
-
-# Various buffer types
-
-InBuffer = VarInputBufferType('char', 'long', 'l')      # (buf, len)
-UcharInBuffer  = VarInputBufferType('unsigned char', 'long', 'l')       # (buf, len)
-OptionalInBuffer = OptionalVarInputBufferType('char', 'long', 'l')      # (buf, len)
-
-InOutBuffer = HeapInputOutputBufferType('char', 'long', 'l')    # (inbuf, outbuf, len)
-VarInOutBuffer = VarHeapInputOutputBufferType('char', 'long', 'l') # (inbuf, outbuf, &len)
-
-OutBuffer = HeapOutputBufferType('char', 'long', 'l')       # (buf, len)
-VarOutBuffer = VarHeapOutputBufferType('char', 'long', 'l') # (buf, &len)
-VarVarOutBuffer = VarVarHeapOutputBufferType('char', 'long', 'l') # (buf, len, &len)
-
-# Unicode arguments sometimes have reversed len, buffer (don't understand why Apple did this...)
-class VarUnicodeInputBufferType(VarInputBufferType):
-
-    def getargsFormat(self):
-        return "u#"
-
-class VarUnicodeReverseInputBufferType(ReverseInputBufferMixin, VarUnicodeInputBufferType):
-    pass
-
-UnicodeInBuffer = VarUnicodeInputBufferType('UniChar', 'UniCharCount', 'l')
-UnicodeReverseInBuffer = VarUnicodeReverseInputBufferType('UniChar', 'UniCharCount', 'l')
-UniChar_ptr = InputOnlyType("UniCharPtr", "u")
-
-
-# Predefine various pieces of program text to be passed to Module() later:
-
-# Stuff added immediately after the system include files
-includestuff = """
-#include "pymactoolbox.h"
-
-/* Macro to test whether a weak-loaded CFM function exists */
-#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL )  {\\
-        PyErr_SetString(PyExc_NotImplementedError, \\
-        "Not available in this shared library/OS version"); \\
-        return NULL; \\
-    }} while(0)
-
-"""
-
-# Stuff added just before the module's init function
-finalstuff = """
-"""
-
-# Stuff added inside the module's init function
-initstuff = """
-"""
-
-
-# Generator classes with a twist -- if the function returns OSErr,
-# its mode is manipulated so that it turns into an exception or disappears
-# (and its name is changed to _err, for documentation purposes).
-# This requires that the OSErr type (defined above) has a non-trivial
-# errorCheck method.
-class OSErrMixIn:
-    "Mix-in class to treat OSErr/OSStatus return values special"
-    def makereturnvar(self):
-        if self.returntype.__class__ == OSErrType:
-            return Variable(self.returntype, "_err", ErrorMode)
-        else:
-            return Variable(self.returntype, "_rv", OutMode)
-
-class OSErrFunctionGenerator(OSErrMixIn, FunctionGenerator): pass
-class OSErrMethodGenerator(OSErrMixIn, MethodGenerator): pass
-
-class WeakLinkMixIn:
-    "Mix-in to test the function actually exists (!= NULL) before calling"
-
-    def precheck(self):
-        Output('#ifndef %s', self.name)
-        Output('PyMac_PRECHECK(%s);', self.name)
-        Output('#endif')
-
-class WeakLinkFunctionGenerator(WeakLinkMixIn, FunctionGenerator): pass
-class WeakLinkMethodGenerator(WeakLinkMixIn, MethodGenerator): pass
-class OSErrWeakLinkFunctionGenerator(OSErrMixIn, WeakLinkMixIn, FunctionGenerator): pass
-class OSErrWeakLinkMethodGenerator(OSErrMixIn, WeakLinkMixIn, MethodGenerator): pass
-
-class MacModule(Module):
-    "Subclass which gets the exception initializer from macglue.c"
-    def exceptionInitializer(self):
-        return "PyMac_GetOSErrException()"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/scantools.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/scantools.py
deleted file mode 100644
index 1dd3627..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/bgen/bgen/scantools.py
+++ /dev/null
@@ -1,849 +0,0 @@
-"""\
-
-Tools for scanning header files in search of function prototypes.
-
-Often, the function prototypes in header files contain enough information
-to automatically generate (or reverse-engineer) interface specifications
-from them.  The conventions used are very vendor specific, but once you've
-figured out what they are they are often a great help, and it sure beats
-manually entering the interface specifications.  (These are needed to generate
-the glue used to access the functions from Python.)
-
-In order to make this class useful, almost every component can be overridden.
-The defaults are (currently) tuned to scanning Apple Macintosh header files,
-although most Mac specific details are contained in header-specific subclasses.
-"""
-
-import re
-import sys
-import os
-import fnmatch
-from types import *
-try:
-    import MacOS
-except ImportError:
-    MacOS = None
-
-try:
-    from bgenlocations import CREATOR, INCLUDEDIR
-except ImportError:
-    CREATOR = None
-    INCLUDEDIR = os.curdir
-
-Error = "scantools.Error"
-
-BEGINHTMLREPORT="""<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-<style type="text/css">
-.unmatched {  }
-.commentstripping { color: grey; text-decoration: line-through }
-.comment { text-decoration: line-through }
-.notcomment { color: black }
-.incomplete { color: maroon }
-.constant { color: green }
-.pyconstant { background-color: yellow }
-.blconstant { background-color: yellow; color: red }
-.declaration { color: blue }
-.pydeclaration { background-color: yellow }
-.type { font-style: italic }
-.name { font-weight: bold }
-.value { font-style: italic }
-.arglist { text-decoration: underline }
-.blacklisted { background-color: yellow; color: red }
-</style>
-<title>Bgen scan report</title>
-</head>
-<body>
-<h1>Bgen scan report</h1>
-<h2>Legend</h2>
-<p>This scan report is intended to help you debug the regular expressions
-used by the bgen scanner. It consists of the original ".h" header file(s)
-marked up to show you what the regular expressions in the bgen parser matched
-for each line. NOTE: comments in the original source files may or may not be
-shown.</p>
-<p>The typographic conventions of this file are as follows:</p>
-<dl>
-<dt>comment stripping</dt>
-<dd><pre><span class="commentstripping"><span class="notcomment">comment stripping is </span><span class="comment">/* marked up */</span><span class="notcomment"> and the line is repeated if needed</span></span></pre>
-<p>If anything here does not appear to happen correctly look at
-<tt>comment1_pat</tt> and <tt>comment2_pat</tt>.</p>
-</dd>
-<dt>constant definitions</dt>
-<dd><pre><span class="constant">#define <span class="name">name</span> <span class="value">value</span></pre>
-<p>Highlights name and value of the constant. Governed by <tt>sym_pat</tt>.</p>
-</dd>
-<dt>function declaration</dt>
-<dd><pre><span class="declaration"><span class="type">char *</span><span class="name">rindex</span><span class="arglist">(<span class="type">const char *</span><span class="name">s</span>, <span class="type">int </span><span class="name">c</span>)</span>;</span></pre>
-<p>Highlights type, name and argument list. <tt>type_pat</tt>,
-<tt>name_pat</tt> and <tt>args_pat</tt> are combined into <tt>whole_pat</tt>, which
-is what is used here.</p></dd>
-</dd>
-<dt>incomplete match for function declaration</dt>
-<dd><pre><span class="incomplete"><span class="type">char *</span>foo;</span></pre>
-<p>The beginning of this looked promising, but it did not match a function declaration.
-In other words, it matched <tt>head_pat</tt> but not <tt>whole_pat</tt>. If the next
-declaration has also been gobbled up you need to look at <tt>end_pat</tt>.</p>
-</dd>
-<dt>unrecognized input</dt>
-<dd><pre><span class="unmatched">#include "type.h"</span></pre>
-<p>If there are function declarations the scanner has missed (i.e. things
-are in this class but you want them to be declarations) you need to adapt
-<tt>head_pat</tt>.
-</dd>
-</dl>
-<h2>Output</h2>
-<pre>
-<span class="unmatched">
-"""
-ENDHTMLREPORT="""</span>
-</pre>
-</body>
-</html>
-"""
-
-class Scanner:
-
-    # Set to 1 in subclass to debug your scanner patterns.
-    debug = 0
-
-    def __init__(self, input = None, output = None, defsoutput = None):
-        self.initsilent()
-        self.initblacklists()
-        self.initrepairinstructions()
-        self.initpaths()
-        self.initfiles()
-        self.initpatterns()
-        self.compilepatterns()
-        self.initosspecifics()
-        self.initusedtypes()
-        if output:
-            self.setoutput(output, defsoutput)
-        if input:
-            self.setinput(input)
-
-    def initusedtypes(self):
-        self.usedtypes = {}
-
-    def typeused(self, type, mode):
-        if not self.usedtypes.has_key(type):
-            self.usedtypes[type] = {}
-        self.usedtypes[type][mode] = None
-
-    def reportusedtypes(self):
-        types = self.usedtypes.keys()
-        types.sort()
-        for type in types:
-            modes = self.usedtypes[type].keys()
-            modes.sort()
-            self.report("%s %s", type, " ".join(modes))
-
-    def gentypetest(self, file):
-        fp = open(file, "w")
-        fp.write("types=[\n")
-        types = self.usedtypes.keys()
-        types.sort()
-        for type in types:
-            fp.write("\t'%s',\n"%type)
-        fp.write("]\n")
-        fp.write("""missing=0
-for t in types:
-    try:
-        tt = eval(t)
-    except NameError:
-        print "** Missing type:", t
-        missing = 1
-if missing: raise "Missing Types"
-""")
-        fp.close()
-
-    def initsilent(self):
-        self.silent = 1
-
-    def error(self, format, *args):
-        if self.silent >= 0:
-            print format%args
-
-    def report(self, format, *args):
-        if not self.silent:
-            print format%args
-
-    def writeinitialdefs(self):
-        pass
-
-    def initblacklists(self):
-        self.blacklistnames = self.makeblacklistnames()
-        self.blacklisttypes = ["unknown", "-"] + self.makeblacklisttypes()
-        self.greydictnames = self.greylist2dict(self.makegreylist())
-
-    def greylist2dict(self, list):
-        rv = {}
-        for define, namelist in list:
-            for name in namelist:
-                rv[name] = define
-        return rv
-
-    def makeblacklistnames(self):
-        return []
-
-    def makeblacklisttypes(self):
-        return []
-
-    def makegreylist(self):
-        return []
-
-    def initrepairinstructions(self):
-        self.repairinstructions = self.makerepairinstructions()
-        self.inherentpointertypes = self.makeinherentpointertypes()
-
-    def makerepairinstructions(self):
-        """Parse the repair file into repair instructions.
-
-        The file format is simple:
-        1) use \ to split a long logical line in multiple physical lines
-        2) everything after the first # on a line is ignored (as comment)
-        3) empty lines are ignored
-        4) remaining lines must have exactly 3 colon-separated fields:
-           functionpattern : argumentspattern : argumentsreplacement
-        5) all patterns use shell style pattern matching
-        6) an empty functionpattern means the same as *
-        7) the other two fields are each comma-separated lists of triples
-        8) a triple is a space-separated list of 1-3 words
-        9) a triple with less than 3 words is padded at the end with "*" words
-        10) when used as a pattern, a triple matches the type, name, and mode
-            of an argument, respectively
-        11) when used as a replacement, the words of a triple specify
-            replacements for the corresponding words of the argument,
-            with "*" as a word by itself meaning leave the original word
-            (no other uses of "*" is allowed)
-        12) the replacement need not have the same number of triples
-            as the pattern
-        """
-        f = self.openrepairfile()
-        if not f: return []
-        print "Reading repair file", repr(f.name), "..."
-        list = []
-        lineno = 0
-        while 1:
-            line = f.readline()
-            if not line: break
-            lineno = lineno + 1
-            startlineno = lineno
-            while line[-2:] == '\\\n':
-                line = line[:-2] + ' ' + f.readline()
-                lineno = lineno + 1
-            i = line.find('#')
-            if i >= 0: line = line[:i]
-            words = [s.strip() for s in line.split(':')]
-            if words == ['']: continue
-            if len(words) <> 3:
-                print "Line", startlineno,
-                print ": bad line (not 3 colon-separated fields)"
-                print repr(line)
-                continue
-            [fpat, pat, rep] = words
-            if not fpat: fpat = "*"
-            if not pat:
-                print "Line", startlineno,
-                print "Empty pattern"
-                print repr(line)
-                continue
-            patparts = [s.strip() for s in pat.split(',')]
-            repparts = [s.strip() for s in rep.split(',')]
-            patterns = []
-            for p in patparts:
-                if not p:
-                    print "Line", startlineno,
-                    print "Empty pattern part"
-                    print repr(line)
-                    continue
-                pattern = p.split()
-                if len(pattern) > 3:
-                    print "Line", startlineno,
-                    print "Pattern part has > 3 words"
-                    print repr(line)
-                    pattern = pattern[:3]
-                else:
-                    while len(pattern) < 3:
-                        pattern.append("*")
-                patterns.append(pattern)
-            replacements = []
-            for p in repparts:
-                if not p:
-                    print "Line", startlineno,
-                    print "Empty replacement part"
-                    print repr(line)
-                    continue
-                replacement = p.split()
-                if len(replacement) > 3:
-                    print "Line", startlineno,
-                    print "Pattern part has > 3 words"
-                    print repr(line)
-                    replacement = replacement[:3]
-                else:
-                    while len(replacement) < 3:
-                        replacement.append("*")
-                replacements.append(replacement)
-            list.append((fpat, patterns, replacements))
-        return list
-
-    def makeinherentpointertypes(self):
-        return []
-
-    def openrepairfile(self, filename = "REPAIR"):
-        try:
-            return open(filename, "rU")
-        except IOError, msg:
-            print repr(filename), ":", msg
-            print "Cannot open repair file -- assume no repair needed"
-            return None
-
-    def initfiles(self):
-        self.specmine = 0
-        self.defsmine = 0
-        self.scanmine = 0
-        self.htmlmine = 0
-        self.specfile = sys.stdout
-        self.defsfile = None
-        self.scanfile = sys.stdin
-        self.htmlfile = None
-        self.lineno = 0
-        self.line = ""
-
-    def initpaths(self):
-        self.includepath = [os.curdir, INCLUDEDIR]
-
-    def initpatterns(self):
-        self.head_pat = r"^EXTERN_API[^_]"
-        self.tail_pat = r"[;={}]"
-        self.type_pat = r"EXTERN_API" + \
-                        r"[ \t\n]*\([ \t\n]*" + \
-                        r"(?P<type>[a-zA-Z0-9_* \t]*[a-zA-Z0-9_*])" + \
-                        r"[ \t\n]*\)[ \t\n]*"
-        self.name_pat = r"(?P<name>[a-zA-Z0-9_]+)[ \t\n]*"
-        self.args_pat = r"\((?P<args>([^\(;=\)]+|\([^\(;=\)]*\))*)\)"
-        self.whole_pat = self.type_pat + self.name_pat + self.args_pat
-        self.sym_pat = r"^[ \t]*(?P<name>[a-zA-Z0-9_]+)[ \t]*=" + \
-                       r"[ \t]*(?P<defn>[-0-9_a-zA-Z'\"\(][^\t\n,;}]*),?"
-        self.asplit_pat = r"^(?P<type>.*[^a-zA-Z0-9_])(?P<name>[a-zA-Z0-9_]+)(?P<array>\[\])?$"
-        self.comment1_pat = r"(?P<rest>.*)//.*"
-        # note that the next pattern only removes comments that are wholly within one line
-        self.comment2_pat = r"(?P<rest1>.*)/\*.*\*/(?P<rest2>.*)"
-
-    def compilepatterns(self):
-        for name in dir(self):
-            if name[-4:] == "_pat":
-                pat = getattr(self, name)
-                prog = re.compile(pat)
-                setattr(self, name[:-4], prog)
-
-    def initosspecifics(self):
-        if MacOS and CREATOR:
-            self.filetype = 'TEXT'
-            self.filecreator = CREATOR
-        else:
-            self.filetype = self.filecreator = None
-
-    def setfiletype(self, filename):
-        if MacOS and (self.filecreator or self.filetype):
-            creator, type = MacOS.GetCreatorAndType(filename)
-            if self.filecreator: creator = self.filecreator
-            if self.filetype: type = self.filetype
-            MacOS.SetCreatorAndType(filename, creator, type)
-
-    def close(self):
-        self.closefiles()
-
-    def closefiles(self):
-        self.closespec()
-        self.closedefs()
-        self.closescan()
-        self.closehtml()
-
-    def closespec(self):
-        tmp = self.specmine and self.specfile
-        self.specfile = None
-        if tmp: tmp.close()
-
-    def closedefs(self):
-        tmp = self.defsmine and self.defsfile
-        self.defsfile = None
-        if tmp: tmp.close()
-
-    def closescan(self):
-        tmp = self.scanmine and self.scanfile
-        self.scanfile = None
-        if tmp: tmp.close()
-
-    def closehtml(self):
-        if self.htmlfile: self.htmlfile.write(ENDHTMLREPORT)
-        tmp = self.htmlmine and self.htmlfile
-        self.htmlfile = None
-        if tmp: tmp.close()
-
-    def setoutput(self, spec, defs = None):
-        self.closespec()
-        self.closedefs()
-        if spec:
-            if type(spec) == StringType:
-                file = self.openoutput(spec)
-                mine = 1
-            else:
-                file = spec
-                mine = 0
-            self.specfile = file
-            self.specmine = mine
-        if defs:
-            if type(defs) == StringType:
-                file = self.openoutput(defs)
-                mine = 1
-            else:
-                file = defs
-                mine = 0
-            self.defsfile = file
-            self.defsmine = mine
-
-    def sethtmloutput(self, htmlfile):
-        self.closehtml()
-        if htmlfile:
-            if type(htmlfile) == StringType:
-                file = self.openoutput(htmlfile)
-                mine = 1
-            else:
-                file = htmlfile
-                mine = 0
-            self.htmlfile = file
-            self.htmlmine = mine
-            self.htmlfile.write(BEGINHTMLREPORT)
-
-    def openoutput(self, filename):
-        try:
-            file = open(filename, 'w')
-        except IOError, arg:
-            raise IOError, (filename, arg)
-        self.setfiletype(filename)
-        return file
-
-    def setinput(self, scan = sys.stdin):
-        if not type(scan) in (TupleType, ListType):
-            scan = [scan]
-        self.allscaninputs = scan
-        self._nextinput()
-
-    def _nextinput(self):
-        if not self.allscaninputs:
-            return 0
-        scan = self.allscaninputs[0]
-        self.allscaninputs = self.allscaninputs[1:]
-        self.closescan()
-        if scan:
-            if type(scan) == StringType:
-                file = self.openinput(scan)
-                mine = 1
-            else:
-                file = scan
-                mine = 0
-            self.scanfile = file
-            self.scanmine = mine
-        self.lineno = 0
-        return 1
-
-    def openinput(self, filename):
-        if not os.path.isabs(filename):
-            for dir in self.includepath:
-                fullname = os.path.join(dir, filename)
-                #self.report("trying full name %r", fullname)
-                try:
-                    return open(fullname, 'rU')
-                except IOError:
-                    pass
-        # If not on the path, or absolute, try default open()
-        try:
-            return open(filename, 'rU')
-        except IOError, arg:
-            raise IOError, (arg, filename)
-
-    def getline(self):
-        if not self.scanfile:
-            raise Error, "input file not set"
-        self.line = self.scanfile.readline()
-        if not self.line:
-            if self._nextinput():
-                return self.getline()
-            raise EOFError
-        self.lineno = self.lineno + 1
-        return self.line
-
-    def scan(self):
-        if not self.scanfile:
-            self.error("No input file has been specified")
-            return
-        inputname = self.scanfile.name
-        self.report("scanfile = %r", inputname)
-        if not self.specfile:
-            self.report("(No interface specifications will be written)")
-        else:
-            self.report("specfile = %r", self.specfile.name)
-            self.specfile.write("# Generated from %r\n\n" % (inputname,))
-        if not self.defsfile:
-            self.report("(No symbol definitions will be written)")
-        else:
-            self.report("defsfile = %r", (self.defsfile.name,))
-            self.defsfile.write("# Generated from %r\n\n" % (os.path.split(inputname)[1],))
-            self.writeinitialdefs()
-        self.alreadydone = []
-        try:
-            while 1:
-                try: line = self.getline()
-                except EOFError: break
-                if self.debug:
-                    self.report("LINE: %r" % (line,))
-                match = self.comment1.match(line)
-                if match:
-                    self.htmlreport(line, klass='commentstripping', ranges=[(
-                        match.start('rest'), match.end('rest'), 'notcomment')])
-                    line = match.group('rest')
-                    if self.debug:
-                        self.report("\tafter comment1: %r" % (line,))
-                match = self.comment2.match(line)
-                while match:
-                    if match:
-                        self.htmlreport(line, klass='commentstripping', ranges=[
-                            (match.start('rest1'), match.end('rest1'), 'notcomment'),
-                            (match.start('rest2'), match.end('rest2'), 'notcomment')])
-                    line = match.group('rest1')+match.group('rest2')
-                    if self.debug:
-                        self.report("\tafter comment2: %r" % (line,))
-                    match = self.comment2.match(line)
-                if self.defsfile:
-                    match = self.sym.match(line)
-                    if match:
-                        if self.debug:
-                            self.report("\tmatches sym.")
-                        self.dosymdef(match, line)
-                        continue
-                match = self.head.match(line)
-                if match:
-                    if self.debug:
-                        self.report("\tmatches head.")
-                    self.dofuncspec()
-                    continue
-                self.htmlreport(line, klass='unmatched')
-        except EOFError:
-            self.error("Uncaught EOF error")
-        self.reportusedtypes()
-
-    def dosymdef(self, match, line):
-        name, defn = match.group('name', 'defn')
-        self.htmlreport(line, klass='constant', ranges=[
-            (match.start('name'), match.end('name'), 'name'),
-            (match.start('defn'), match.end('defn'), 'value')])
-        defn = escape8bit(defn)
-        if self.debug:
-            self.report("\tsym: name=%r, defn=%r" % (name, defn))
-        if not name in self.blacklistnames:
-            oline = "%s = %s\n" % (name, defn)
-            self.defsfile.write(oline)
-            self.htmlreport(oline, klass="pyconstant")
-        else:
-            self.defsfile.write("# %s = %s\n" % (name, defn))
-            self.htmlreport("** no output: name is blacklisted", klass="blconstant")
-        # XXXX No way to handle greylisted names
-
-    def dofuncspec(self):
-        raw = self.line
-        while not self.tail.search(raw):
-            line = self.getline()
-            if self.debug:
-                self.report("* CONTINUATION LINE: %r" % (line,))
-            match = self.comment1.match(line)
-            if match:
-                line = match.group('rest')
-                if self.debug:
-                    self.report("\tafter comment1: %r" % (line,))
-            match = self.comment2.match(line)
-            while match:
-                line = match.group('rest1')+match.group('rest2')
-                if self.debug:
-                    self.report("\tafter comment1: %r" % (line,))
-                match = self.comment2.match(line)
-            raw = raw + line
-        if self.debug:
-            self.report("* WHOLE LINE: %r" % (raw,))
-        self.processrawspec(raw)
-        return raw
-
-    def processrawspec(self, raw):
-        match = self.whole.search(raw)
-        if not match:
-            self.report("Bad raw spec: %r", raw)
-            if self.debug:
-                match = self.type.search(raw)
-                if not match:
-                    self.report("(Type already doesn't match)")
-                    self.htmlreport(raw, klass='incomplete', ranges=[(
-                        match.start('type'), match.end('type'), 'type')])
-                else:
-                    self.report("(but type matched)")
-                    self.htmlreport(raw, klass='incomplete')
-            return
-        type, name, args = match.group('type', 'name', 'args')
-        ranges=[
-                (match.start('type'), match.end('type'), 'type'),
-                (match.start('name'), match.end('name'), 'name'),
-                (match.start('args'), match.end('args'), 'arglist')]
-        self.htmlreport(raw, klass='declaration', ranges=ranges)
-        modifiers = self.getmodifiers(match)
-        type = self.pythonizename(type)
-        name = self.pythonizename(name)
-        if self.checkduplicate(name):
-            self.htmlreport("*** no output generated: duplicate name", klass="blacklisted")
-            return
-        self.report("==> %s %s <==", type, name)
-        if self.blacklisted(type, name):
-            self.htmlreport("*** no output generated: function name or return type blacklisted", klass="blacklisted")
-            self.report("*** %s %s blacklisted", type, name)
-            return
-        returnlist = [(type, name, 'ReturnMode')]
-        returnlist = self.repairarglist(name, returnlist)
-        [(type, name, returnmode)] = returnlist
-        arglist = self.extractarglist(args)
-        arglist = self.repairarglist(name, arglist)
-        if self.unmanageable(type, name, arglist):
-            self.htmlreport("*** no output generated: some argument blacklisted", klass="blacklisted")
-            ##for arg in arglist:
-            ##  self.report("    %r", arg)
-            self.report("*** %s %s unmanageable", type, name)
-            return
-        if modifiers:
-            self.generate(type, name, arglist, modifiers)
-        else:
-            self.generate(type, name, arglist)
-
-    def getmodifiers(self, match):
-        return []
-
-    def checkduplicate(self, name):
-        if name in self.alreadydone:
-            self.report("Name has already been defined: %r", name)
-            return True
-        self.alreadydone.append(name)
-        return False
-
-    def pythonizename(self, name):
-        name = re.sub("\*", " ptr", name)
-        name = name.strip()
-        name = re.sub("[ \t]+", "_", name)
-        return name
-
-    def extractarglist(self, args):
-        args = args.strip()
-        if not args or args == "void":
-            return []
-        parts = [s.strip() for s in args.split(",")]
-        arglist = []
-        for part in parts:
-            arg = self.extractarg(part)
-            arglist.append(arg)
-        return arglist
-
-    def extractarg(self, part):
-        mode = "InMode"
-        part = part.strip()
-        match = self.asplit.match(part)
-        if not match:
-            self.error("Indecipherable argument: %r", part)
-            return ("unknown", part, mode)
-        type, name, array = match.group('type', 'name', 'array')
-        if array:
-            # array matches an optional [] after the argument name
-            type = type + " ptr "
-        type = self.pythonizename(type)
-        return self.modifyarg(type, name, mode)
-
-    def modifyarg(self, type, name, mode):
-        if type[:6] == "const_":
-            type = type[6:]
-        elif type[-4:] == "_ptr":
-            type = type[:-4]
-            mode = "OutMode"
-        elif type in self.inherentpointertypes:
-            mode = "OutMode"
-        if type[-4:] == "_far":
-            type = type[:-4]
-        return type, name, mode
-
-    def repairarglist(self, functionname, arglist):
-        arglist = arglist[:]
-        i = 0
-        while i < len(arglist):
-            for item in self.repairinstructions:
-                if len(item) == 2:
-                    pattern, replacement = item
-                    functionpat = "*"
-                else:
-                    functionpat, pattern, replacement = item
-                if not fnmatch.fnmatchcase(functionname, functionpat):
-                    continue
-                n = len(pattern)
-                if i+n > len(arglist): continue
-                current = arglist[i:i+n]
-                for j in range(n):
-                    if not self.matcharg(pattern[j], current[j]):
-                        break
-                else: # All items of the pattern match
-                    new = self.substituteargs(
-                            pattern, replacement, current)
-                    if new is not None:
-                        arglist[i:i+n] = new
-                        i = i+len(new) # No recursive substitutions
-                        break
-            else: # No patterns match
-                i = i+1
-        return arglist
-
-    def matcharg(self, patarg, arg):
-        return len(filter(None, map(fnmatch.fnmatchcase, arg, patarg))) == 3
-
-    def substituteargs(self, pattern, replacement, old):
-        new = []
-        for k in range(len(replacement)):
-            item = replacement[k]
-            newitem = [item[0], item[1], item[2]]
-            for i in range(3):
-                if item[i] == '*':
-                    newitem[i] = old[k][i]
-                elif item[i][:1] == '$':
-                    index = int(item[i][1:]) - 1
-                    newitem[i] = old[index][i]
-            new.append(tuple(newitem))
-        ##self.report("old: %r", old)
-        ##self.report("new: %r", new)
-        return new
-
-    def generate(self, tp, name, arglist, modifiers=[]):
-
-        self.typeused(tp, 'return')
-        if modifiers:
-            classname, listname = self.destination(tp, name, arglist, modifiers)
-        else:
-            classname, listname = self.destination(tp, name, arglist)
-        if not classname or not listname:
-            self.htmlreport("*** no output generated: self.destination() returned None", klass="blacklisted")
-            return
-        if not self.specfile:
-            self.htmlreport("*** no output generated: no output file specified", klass="blacklisted")
-            return
-        self.specfile.write("f = %s(%s, %r,\n" % (classname, tp, name))
-        for atype, aname, amode in arglist:
-            self.typeused(atype, amode)
-            self.specfile.write("    (%s, %r, %s),\n" %
-                                (atype, aname, amode))
-        if self.greydictnames.has_key(name):
-            self.specfile.write("    condition=%r,\n"%(self.greydictnames[name],))
-        self.generatemodifiers(classname, name, modifiers)
-        self.specfile.write(")\n")
-        self.specfile.write("%s.append(f)\n\n" % listname)
-        if self.htmlfile:
-            oline = "Adding to %s:\n%s(returntype=%s, name=%r" % (listname, classname, tp, name)
-            for atype, aname, amode in arglist:
-                oline += ",\n    (%s, %r, %s)" % (atype, aname, amode)
-            oline += ")\n"
-            self.htmlreport(oline, klass="pydeclaration")
-
-    def destination(self, type, name, arglist):
-        return "FunctionGenerator", "functions"
-
-    def generatemodifiers(self, classname, name, modifiers):
-        pass
-
-    def blacklisted(self, type, name):
-        if type in self.blacklisttypes:
-            ##self.report("return type %s is blacklisted", type)
-            return 1
-        if name in self.blacklistnames:
-            ##self.report("function name %s is blacklisted", name)
-            return 1
-        return 0
-
-    def unmanageable(self, type, name, arglist):
-        for atype, aname, amode in arglist:
-            if atype in self.blacklisttypes:
-                self.report("argument type %s is blacklisted", atype)
-                return 1
-        return 0
-
-    def htmlreport(self, line, klass=None, ranges=None):
-        if not self.htmlfile: return
-        if ranges is None:
-            ranges = []
-        if klass:
-            ranges.insert(0, (0, len(line), klass))
-        oline = ''
-        i = 0
-        for c in line:
-            for b, e, name in ranges:
-                if b == i:
-                    oline += '<span class="%s">' % name
-                if e == i:
-                    oline += '</span>'
-            i += 1
-
-            if c == '<': oline += '&lt;'
-            elif c == '>': oline += '&gt;'
-            else: oline += c
-        for b, e, name in ranges:
-            if b >= i:
-                oline += '<span class="%s">' % name
-            if e >= i:
-                oline += '</span>'
-        if not line or line[-1] != '\n':
-            oline += '\n'
-        self.htmlfile.write(oline)
-
-class Scanner_PreUH3(Scanner):
-    """Scanner for Universal Headers before release 3"""
-    def initpatterns(self):
-        Scanner.initpatterns(self)
-        self.head_pat = "^extern pascal[ \t]+" # XXX Mac specific!
-        self.type_pat = "pascal[ \t\n]+(?P<type>[a-zA-Z0-9_ \t]*[a-zA-Z0-9_])[ \t\n]+"
-        self.whole_pat = self.type_pat + self.name_pat + self.args_pat
-        self.sym_pat = "^[ \t]*(?P<name>[a-zA-Z0-9_]+)[ \t]*=" + \
-                       "[ \t]*(?P<defn>[-0-9'\"][^\t\n,;}]*),?"
-
-class Scanner_OSX(Scanner):
-    """Scanner for modern (post UH3.3) Universal Headers """
-    def initpatterns(self):
-        Scanner.initpatterns(self)
-        self.head_pat = "^EXTERN_API(_C)?"
-        self.type_pat = "EXTERN_API(_C)?" + \
-                        "[ \t\n]*\([ \t\n]*" + \
-                        "(?P<type>[a-zA-Z0-9_* \t]*[a-zA-Z0-9_*])" + \
-                        "[ \t\n]*\)[ \t\n]*"
-        self.whole_pat = self.type_pat + self.name_pat + self.args_pat
-        self.sym_pat = "^[ \t]*(?P<name>[a-zA-Z0-9_]+)[ \t]*=" + \
-                       "[ \t]*(?P<defn>[-0-9_a-zA-Z'\"\(][^\t\n,;}]*),?"
-
-_8bit = re.compile(r"[\200-\377]")
-
-def escape8bit(s):
-    if _8bit.search(s) is not None:
-        out = []
-        for c in s:
-            o = ord(c)
-            if o >= 128:
-                out.append("\\" + hex(o)[1:])
-            else:
-                out.append(c)
-        s = "".join(out)
-    return s
-
-def test():
-    input = "D:Development:THINK C:Mac #includes:Apple #includes:AppleEvents.h"
-    output = "@aespecs.py"
-    defsoutput = "@aedefs.py"
-    s = Scanner(input, output, defsoutput)
-    s.scan()
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/README.tcltk-AMD64 b/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/README.tcltk-AMD64
deleted file mode 100644
index fcc5374..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/README.tcltk-AMD64
+++ /dev/null
@@ -1,36 +0,0 @@
-Comments on building tcl/tk for AMD64 with the MS SDK compiler
-==============================================================
-
-I did have to build tcl/tk manually.
-
-First, I had to build the nmakehlp.exe helper utility manually by executing
-   cl nmakehlp.c /link bufferoverflowU.lib
-in both the tcl8.4.12\win and tk8.4.12\win directories.
-
-Second, the AMD64 compiler refuses to compile the file
-tcl8.4.12\generic\tclExecute.c because it insists on using intrinsics
-for the 'ceil' and 'floor' functions:
-
-  ..\generic\tclExecute.c(394) : error C2099: initializer is not a constant
-  ..\generic\tclExecute.c(398) : error C2099: initializer is not a constant
-
-I did comment out these lines; an alternative would have been to use
-the /Oi- compiler flag to disable the intrinsic functions.
-The commands then used were these:
-
-   svn export http://svn.python.org/projects/external/tcl8.4.12
-   cd tcl8.4.12\win
-   REM
-   echo patch the tcl8.4.12\generic\tclExecute.c file
-   pause 
-   REM
-   cl nmakehlp.c /link bufferoverflowU.lib
-   nmake -f makefile.vc MACHINE=AMD64
-   nmake -f makefile.vc INSTALLDIR=..\..\tcltk install
-   cd ..\..
-   svn export http://svn.python.org/projects/external/tk8.4.12
-   cd tk8.4.12\win
-   cl nmakehlp.c /link bufferoverflowU.lib
-   nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 MACHINE=AMD64
-   nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 INSTALLDIR=..\..\tcltk install
-   cd ..\..
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/build-amd64.bat b/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/build-amd64.bat
deleted file mode 100644
index 8ec3328..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/build-amd64.bat
+++ /dev/null
@@ -1,6 +0,0 @@
-@rem Used by the buildbot "compile" step.
-cmd /c Tools\buildbot\external-amd64.bat
-call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64
-cmd /c Tools\buildbot\clean-amd64.bat
-vcbuild /useenv PCbuild\kill_python.vcproj "Debug|x64" && PCbuild\amd64\kill_python_d.exe
-vcbuild PCbuild\pcbuild.sln "Debug|x64"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/build.bat b/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/build.bat
deleted file mode 100644
index 976ce72..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/build.bat
+++ /dev/null
@@ -1,7 +0,0 @@
-@rem Used by the buildbot "compile" step.
-cmd /c Tools\buildbot\external.bat
-call "%VS90COMNTOOLS%vsvars32.bat"
-cmd /c Tools\buildbot\clean.bat
-vcbuild /useenv PCbuild\kill_python.vcproj "Debug|Win32" && PCbuild\kill_python_d.exe
-vcbuild /useenv PCbuild\pcbuild.sln "Debug|Win32"
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/buildmsi.bat b/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/buildmsi.bat
deleted file mode 100644
index b4f63dc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/buildmsi.bat
+++ /dev/null
@@ -1,20 +0,0 @@
-@rem Used by the buildbot "buildmsi" step.
-
-cmd /c Tools\buildbot\external.bat
-@rem build release versions of things
-call "%VS90COMNTOOLS%vsvars32.bat"
-
-@rem build Python
-vcbuild /useenv PCbuild\pcbuild.sln "Release|Win32"
-
-@rem build the documentation
-bash.exe -c 'cd Doc;make PYTHON=python2.5 update htmlhelp'
-"%ProgramFiles%\HTML Help Workshop\hhc.exe" Doc\build\htmlhelp\python26a3.hhp
-
-@rem build the MSI file
-cd PC
-nmake /f icons.mak
-cd ..\Tools\msi
-del *.msi
-nmake /f msisupport.mak
-%HOST_PYTHON% msi.py
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/clean-amd64.bat b/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/clean-amd64.bat
deleted file mode 100644
index 0f6b3b4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/clean-amd64.bat
+++ /dev/null
@@ -1,10 +0,0 @@
-@rem Used by the buildbot "clean" step.
-call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64
-@echo Deleting .pyc/.pyo files ...
-del /s Lib\*.pyc Lib\*.pyo
-@echo Deleting test leftovers ...
-rmdir /s /q build
-cd PCbuild
-vcbuild /clean pcbuild.sln "Release|x64"
-vcbuild /clean pcbuild.sln "Debug|x64"
-cd ..
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/clean.bat b/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/clean.bat
deleted file mode 100644
index cf8a6b7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/clean.bat
+++ /dev/null
@@ -1,10 +0,0 @@
-@rem Used by the buildbot "clean" step.
-call "%VS90COMNTOOLS%vsvars32.bat"
-@echo Deleting .pyc/.pyo files ...
-del /s Lib\*.pyc Lib\*.pyo
-@echo Deleting test leftovers ...
-rmdir /s /q build
-cd PCbuild
-vcbuild /clean pcbuild.sln "Release|Win32"
-vcbuild /clean pcbuild.sln "Debug|Win32"
-cd ..
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external-amd64.bat b/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external-amd64.bat
deleted file mode 100644
index 902e37a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external-amd64.bat
+++ /dev/null
@@ -1,20 +0,0 @@
-@rem Fetches (and builds if necessary) external dependencies
-
-@rem Assume we start inside the Python source directory
-call "Tools\buildbot\external-common.bat"
-call "%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64
-
-if not exist tcltk64\bin\tcl85g.dll (
-    cd tcl-8.5.2.1\win
-    nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 clean all
-    nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 install
-    cd ..\..
-)
-
-if not exist tcltk64\bin\tk85g.dll (
-    cd tk-8.5.2.0\win    
-    nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 clean
-    nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 all
-    nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 MACHINE=AMD64 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.5.2.1 install
-    cd ..\..
-)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external-common.bat b/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external-common.bat
deleted file mode 100644
index 7395db5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external-common.bat
+++ /dev/null
@@ -1,45 +0,0 @@
-@rem Common file shared between external.bat and external-amd64.bat.  Responsible for
-@rem fetching external components into the root\.. buildbot directories.
-
-cd ..
-@rem XXX: If you need to force the buildbots to start from a fresh environment, uncomment
-@rem the following, check it in, then check it out, comment it out, then check it back in.
-@rem if exist bzip2-1.0.5 rd /s/q bzip2-1.0.5
-@rem if exist tcltk rd /s/q tcltk
-@rem if exist tcltk64 rd /s/q tcltk64
-@rem if exist tcl8.4.12 rd /s/q tcl8.4.12
-@rem if exist tcl8.4.16 rd /s/q tcl8.4.16
-@rem if exist tcl-8.4.18.1 rd /s/q tcl-8.4.18.1
-@rem if exist tk8.4.12 rd /s/q tk8.4.12
-@rem if exist tk8.4.16 rd /s/q tk8.4.16
-@rem if exist tk-8.4.18.1 rd /s/q tk-8.4.18.1
-@rem if exist db-4.4.20 rd /s/q db-4.4.20
-@rem if exist db-4.7.25.0 rd /s/q db-4.7.25.0
-@rem if exist openssl-0.9.8l rd /s/q openssl-0.9.8l
-@rem if exist sqlite-3.6.21 rd /s/q sqlite-3.6.21    
-
-@rem bzip
-if not exist bzip2-1.0.5 (
-   rd /s/q bzip2-1.0.3
-  svn export http://svn.python.org/projects/external/bzip2-1.0.5
-)
-
-@rem Berkeley DB
-if exist db-4.4.20 rd /s/q db-4.4.20
-if not exist db-4.7.25.0 svn export http://svn.python.org/projects/external/db-4.7.25.0
-
-@rem OpenSSL
-if not exist openssl-0.9.8l svn export http://svn.python.org/projects/external/openssl-0.9.8l
-
-@rem tcl/tk
-if not exist tcl-8.5.2.1 (
-   rd /s/q tcltk tcltk64
-   svn export http://svn.python.org/projects/external/tcl-8.5.2.1
-)
-if not exist tk-8.5.2.0 svn export http://svn.python.org/projects/external/tk-8.5.2.0
-
-@rem sqlite3
-if not exist sqlite-3.6.21 (
-  rd /s/q sqlite-source-3.3.4
-  svn export http://svn.python.org/projects/external/sqlite-3.6.21
-)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external.bat b/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external.bat
deleted file mode 100644
index d6b18ae..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/external.bat
+++ /dev/null
@@ -1,21 +0,0 @@
-@rem Fetches (and builds if necessary) external dependencies
-
-@rem Assume we start inside the Python source directory
-call "Tools\buildbot\external-common.bat"
-call "%VS90COMNTOOLS%\vsvars32.bat"
-
-if not exist tcltk\bin\tcl85g.dll (
-    @rem all and install need to be separate invocations, otherwise nmakehlp is not found on install
-    cd tcl-8.5.2.1\win
-    nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 INSTALLDIR=..\..\tcltk clean all 
-    nmake -f makefile.vc DEBUG=1 INSTALLDIR=..\..\tcltk install
-    cd ..\..
-)
-
-if not exist tcltk\bin\tk85g.dll (
-    cd tk-8.5.2.0\win    
-    nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 clean
-    nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 all
-    nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 OPTS=noxp DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.5.2.1 install
-    cd ..\..
-)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/test-amd64.bat b/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/test-amd64.bat
deleted file mode 100644
index 6124b51..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/test-amd64.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-@rem Used by the buildbot "test" step.
-cd PCbuild
-call rt.bat -q -d -x64 -uall -rw
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/test.bat b/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/test.bat
deleted file mode 100644
index cffd850..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/buildbot/test.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-@rem Used by the buildbot "test" step.
-cd PCbuild
-call rt.bat -d -q -uall -rwW
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/ccbench/ccbench.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/ccbench/ccbench.py
deleted file mode 100644
index a2cf720..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/ccbench/ccbench.py
+++ /dev/null
@@ -1,609 +0,0 @@
-# -*- coding: utf-8 -*-
-# This file should be kept compatible with both Python 2.6 and Python >= 3.0.
-
-from __future__ import division
-from __future__ import print_function
-
-"""
-ccbench, a Python concurrency benchmark.
-"""
-
-import time
-import os
-import sys
-import functools
-import itertools
-import threading
-import subprocess
-import socket
-from optparse import OptionParser, SUPPRESS_HELP
-import platform
-
-# Compatibility
-try:
-    xrange
-except NameError:
-    xrange = range
-
-try:
-    map = itertools.imap
-except AttributeError:
-    pass
-
-
-THROUGHPUT_DURATION = 2.0
-
-LATENCY_PING_INTERVAL = 0.1
-LATENCY_DURATION = 2.0
-
-BANDWIDTH_PACKET_SIZE = 1024
-BANDWIDTH_DURATION = 2.0
-
-
-def task_pidigits():
-    """Pi calculation (Python)"""
-    _map = map
-    _count = itertools.count
-    _islice = itertools.islice
-
-    def calc_ndigits(n):
-        # From http://shootout.alioth.debian.org/
-        def gen_x():
-            return _map(lambda k: (k, 4*k + 2, 0, 2*k + 1), _count(1))
-
-        def compose(a, b):
-            aq, ar, as_, at = a
-            bq, br, bs, bt = b
-            return (aq * bq,
-                    aq * br + ar * bt,
-                    as_ * bq + at * bs,
-                    as_ * br + at * bt)
-
-        def extract(z, j):
-            q, r, s, t = z
-            return (q*j + r) // (s*j + t)
-
-        def pi_digits():
-            z = (1, 0, 0, 1)
-            x = gen_x()
-            while 1:
-                y = extract(z, 3)
-                while y != extract(z, 4):
-                    z = compose(z, next(x))
-                    y = extract(z, 3)
-                z = compose((10, -10*y, 0, 1), z)
-                yield y
-
-        return list(_islice(pi_digits(), n))
-
-    return calc_ndigits, (50, )
-
-def task_regex():
-    """regular expression (C)"""
-    # XXX this task gives horrendous latency results.
-    import re
-    # Taken from the `inspect` module
-    pat = re.compile(r'^(\s*def\s)|(.*(?<!\w)lambda(:|\s))|^(\s*@)', re.MULTILINE)
-    with open(__file__, "r") as f:
-        arg = f.read(2000)
-
-    def findall(s):
-        t = time.time()
-        try:
-            return pat.findall(s)
-        finally:
-            print(time.time() - t)
-    return pat.findall, (arg, )
-
-def task_sort():
-    """list sorting (C)"""
-    def list_sort(l):
-        l = l[::-1]
-        l.sort()
-
-    return list_sort, (list(range(1000)), )
-
-def task_compress_zlib():
-    """zlib compression (C)"""
-    import zlib
-    with open(__file__, "rb") as f:
-        arg = f.read(5000) * 3
-
-    def compress(s):
-        zlib.decompress(zlib.compress(s, 5))
-    return compress, (arg, )
-
-def task_compress_bz2():
-    """bz2 compression (C)"""
-    import bz2
-    with open(__file__, "rb") as f:
-        arg = f.read(3000) * 2
-
-    def compress(s):
-        bz2.compress(s)
-    return compress, (arg, )
-
-def task_hashing():
-    """SHA1 hashing (C)"""
-    import hashlib
-    with open(__file__, "rb") as f:
-        arg = f.read(5000) * 30
-
-    def compute(s):
-        hashlib.sha1(s).digest()
-    return compute, (arg, )
-
-
-throughput_tasks = [task_pidigits, task_regex]
-for mod in 'bz2', 'hashlib':
-    try:
-        globals()[mod] = __import__(mod)
-    except ImportError:
-        globals()[mod] = None
-
-# For whatever reasons, zlib gives irregular results, so we prefer bz2 or
-# hashlib if available.
-# (NOTE: hashlib releases the GIL from 2.7 and 3.1 onwards)
-if bz2 is not None:
-    throughput_tasks.append(task_compress_bz2)
-elif hashlib is not None:
-    throughput_tasks.append(task_hashing)
-else:
-    throughput_tasks.append(task_compress_zlib)
-
-latency_tasks = throughput_tasks
-bandwidth_tasks = [task_pidigits]
-
-
-class TimedLoop:
-    def __init__(self, func, args):
-        self.func = func
-        self.args = args
-
-    def __call__(self, start_time, min_duration, end_event, do_yield=False):
-        step = 20
-        niters = 0
-        duration = 0.0
-        _time = time.time
-        _sleep = time.sleep
-        _func = self.func
-        _args = self.args
-        t1 = start_time
-        while True:
-            for i in range(step):
-                _func(*_args)
-            t2 = _time()
-            # If another thread terminated, the current measurement is invalid
-            # => return the previous one.
-            if end_event:
-                return niters, duration
-            niters += step
-            duration = t2 - start_time
-            if duration >= min_duration:
-                end_event.append(None)
-                return niters, duration
-            if t2 - t1 < 0.01:
-                # Minimize interference of measurement on overall runtime
-                step = step * 3 // 2
-            elif do_yield:
-                # OS scheduling of Python threads is sometimes so bad that we
-                # have to force thread switching ourselves, otherwise we get
-                # completely useless results.
-                _sleep(0.0001)
-            t1 = t2
-
-
-def run_throughput_test(func, args, nthreads):
-    assert nthreads >= 1
-
-    # Warm up
-    func(*args)
-
-    results = []
-    loop = TimedLoop(func, args)
-    end_event = []
-
-    if nthreads == 1:
-        # Pure single-threaded performance, without any switching or
-        # synchronization overhead.
-        start_time = time.time()
-        results.append(loop(start_time, THROUGHPUT_DURATION,
-                            end_event, do_yield=False))
-        return results
-
-    started = False
-    ready_cond = threading.Condition()
-    start_cond = threading.Condition()
-    ready = []
-
-    def run():
-        with ready_cond:
-            ready.append(None)
-            ready_cond.notify()
-        with start_cond:
-            while not started:
-                start_cond.wait()
-        results.append(loop(start_time, THROUGHPUT_DURATION,
-                            end_event, do_yield=True))
-
-    threads = []
-    for i in range(nthreads):
-        threads.append(threading.Thread(target=run))
-    for t in threads:
-        t.setDaemon(True)
-        t.start()
-    # We don't want measurements to include thread startup overhead,
-    # so we arrange for timing to start after all threads are ready.
-    with ready_cond:
-        while len(ready) < nthreads:
-            ready_cond.wait()
-    with start_cond:
-        start_time = time.time()
-        started = True
-        start_cond.notify(nthreads)
-    for t in threads:
-        t.join()
-
-    return results
-
-def run_throughput_tests(max_threads):
-    for task in throughput_tasks:
-        print(task.__doc__)
-        print()
-        func, args = task()
-        nthreads = 1
-        baseline_speed = None
-        while nthreads <= max_threads:
-            results = run_throughput_test(func, args, nthreads)
-            # Taking the max duration rather than average gives pessimistic
-            # results rather than optimistic.
-            speed = sum(r[0] for r in results) / max(r[1] for r in results)
-            print("threads=%d: %d" % (nthreads, speed), end="")
-            if baseline_speed is None:
-                print(" iterations/s.")
-                baseline_speed = speed
-            else:
-                print(" ( %d %%)" % (speed / baseline_speed * 100))
-            nthreads += 1
-        print()
-
-
-LAT_END = "END"
-
-def _sendto(sock, s, addr):
-    sock.sendto(s.encode('ascii'), addr)
-
-def _recv(sock, n):
-    return sock.recv(n).decode('ascii')
-
-def latency_client(addr, nb_pings, interval):
-    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-    _time = time.time
-    _sleep = time.sleep
-    def _ping():
-        _sendto(sock, "%r\n" % _time(), addr)
-    # The first ping signals the parent process that we are ready.
-    _ping()
-    # We give the parent a bit of time to notice.
-    _sleep(1.0)
-    for i in range(nb_pings):
-        _sleep(interval)
-        _ping()
-    _sendto(sock, LAT_END + "\n", addr)
-
-def run_latency_client(**kwargs):
-    cmd_line = [sys.executable, '-E', os.path.abspath(__file__)]
-    cmd_line.extend(['--latclient', repr(kwargs)])
-    return subprocess.Popen(cmd_line) #, stdin=subprocess.PIPE,
-                            #stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
-
-def run_latency_test(func, args, nthreads):
-    # Create a listening socket to receive the pings. We use UDP which should
-    # be painlessly cross-platform.
-    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-    sock.bind(("127.0.0.1", 0))
-    addr = sock.getsockname()
-
-    interval = LATENCY_PING_INTERVAL
-    duration = LATENCY_DURATION
-    nb_pings = int(duration / interval)
-
-    results = []
-    threads = []
-    end_event = []
-    start_cond = threading.Condition()
-    started = False
-    if nthreads > 0:
-        # Warm up
-        func(*args)
-
-        results = []
-        loop = TimedLoop(func, args)
-        ready = []
-        ready_cond = threading.Condition()
-
-        def run():
-            with ready_cond:
-                ready.append(None)
-                ready_cond.notify()
-            with start_cond:
-                while not started:
-                    start_cond.wait()
-            loop(start_time, duration * 1.5, end_event, do_yield=False)
-
-        for i in range(nthreads):
-            threads.append(threading.Thread(target=run))
-        for t in threads:
-            t.setDaemon(True)
-            t.start()
-        # Wait for threads to be ready
-        with ready_cond:
-            while len(ready) < nthreads:
-                ready_cond.wait()
-
-    # Run the client and wait for the first ping(s) to arrive before
-    # unblocking the background threads.
-    chunks = []
-    process = run_latency_client(addr=sock.getsockname(),
-                                 nb_pings=nb_pings, interval=interval)
-    s = _recv(sock, 4096)
-    _time = time.time
-
-    with start_cond:
-        start_time = _time()
-        started = True
-        start_cond.notify(nthreads)
-
-    while LAT_END not in s:
-        s = _recv(sock, 4096)
-        t = _time()
-        chunks.append((t, s))
-
-    # Tell the background threads to stop.
-    end_event.append(None)
-    for t in threads:
-        t.join()
-    process.wait()
-
-    for recv_time, chunk in chunks:
-        # NOTE: it is assumed that a line sent by a client wasn't received
-        # in two chunks because the lines are very small.
-        for line in chunk.splitlines():
-            line = line.strip()
-            if line and line != LAT_END:
-                send_time = eval(line)
-                assert isinstance(send_time, float)
-                results.append((send_time, recv_time))
-
-    return results
-
-def run_latency_tests(max_threads):
-    for task in latency_tasks:
-        print("Background CPU task:", task.__doc__)
-        print()
-        func, args = task()
-        nthreads = 0
-        while nthreads <= max_threads:
-            results = run_latency_test(func, args, nthreads)
-            n = len(results)
-            # We print out milliseconds
-            lats = [1000 * (t2 - t1) for (t1, t2) in results]
-            #print(list(map(int, lats)))
-            avg = sum(lats) / n
-            dev = (sum((x - avg) ** 2 for x in lats) / n) ** 0.5
-            print("CPU threads=%d: %d ms. (std dev: %d ms.)" % (nthreads, avg, dev), end="")
-            print()
-            #print("    [... from %d samples]" % n)
-            nthreads += 1
-        print()
-
-
-BW_END = "END"
-
-def bandwidth_client(addr, packet_size, duration):
-    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-    sock.bind(("127.0.0.1", 0))
-    local_addr = sock.getsockname()
-    _time = time.time
-    _sleep = time.sleep
-    def _send_chunk(msg):
-        _sendto(sock, ("%r#%s\n" % (local_addr, msg)).rjust(packet_size), addr)
-    # We give the parent some time to be ready.
-    _sleep(1.0)
-    try:
-        start_time = _time()
-        end_time = start_time + duration * 2.0
-        i = 0
-        while _time() < end_time:
-            _send_chunk(str(i))
-            s = _recv(sock, packet_size)
-            assert len(s) == packet_size
-            i += 1
-        _send_chunk(BW_END)
-    finally:
-        sock.close()
-
-def run_bandwidth_client(**kwargs):
-    cmd_line = [sys.executable, '-E', os.path.abspath(__file__)]
-    cmd_line.extend(['--bwclient', repr(kwargs)])
-    return subprocess.Popen(cmd_line) #, stdin=subprocess.PIPE,
-                            #stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
-
-def run_bandwidth_test(func, args, nthreads):
-    # Create a listening socket to receive the packets. We use UDP which should
-    # be painlessly cross-platform.
-    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-    sock.bind(("127.0.0.1", 0))
-    addr = sock.getsockname()
-
-    duration = BANDWIDTH_DURATION
-    packet_size = BANDWIDTH_PACKET_SIZE
-
-    results = []
-    threads = []
-    end_event = []
-    start_cond = threading.Condition()
-    started = False
-    if nthreads > 0:
-        # Warm up
-        func(*args)
-
-        results = []
-        loop = TimedLoop(func, args)
-        ready = []
-        ready_cond = threading.Condition()
-
-        def run():
-            with ready_cond:
-                ready.append(None)
-                ready_cond.notify()
-            with start_cond:
-                while not started:
-                    start_cond.wait()
-            loop(start_time, duration * 1.5, end_event, do_yield=False)
-
-        for i in range(nthreads):
-            threads.append(threading.Thread(target=run))
-        for t in threads:
-            t.setDaemon(True)
-            t.start()
-        # Wait for threads to be ready
-        with ready_cond:
-            while len(ready) < nthreads:
-                ready_cond.wait()
-
-    # Run the client and wait for the first packet to arrive before
-    # unblocking the background threads.
-    process = run_bandwidth_client(addr=addr,
-                                   packet_size=packet_size,
-                                   duration=duration)
-    _time = time.time
-    # This will also wait for the parent to be ready
-    s = _recv(sock, packet_size)
-    remote_addr = eval(s.partition('#')[0])
-
-    with start_cond:
-        start_time = _time()
-        started = True
-        start_cond.notify(nthreads)
-
-    n = 0
-    first_time = None
-    while not end_event and BW_END not in s:
-        _sendto(sock, s, remote_addr)
-        s = _recv(sock, packet_size)
-        if first_time is None:
-            first_time = _time()
-        n += 1
-    end_time = _time()
-
-    end_event.append(None)
-    for t in threads:
-        t.join()
-    process.kill()
-
-    return (n - 1) / (end_time - first_time)
-
-def run_bandwidth_tests(max_threads):
-    for task in bandwidth_tasks:
-        print("Background CPU task:", task.__doc__)
-        print()
-        func, args = task()
-        nthreads = 0
-        baseline_speed = None
-        while nthreads <= max_threads:
-            results = run_bandwidth_test(func, args, nthreads)
-            speed = results
-            #speed = len(results) * 1.0 / results[-1][0]
-            print("CPU threads=%d: %.1f" % (nthreads, speed), end="")
-            if baseline_speed is None:
-                print(" packets/s.")
-                baseline_speed = speed
-            else:
-                print(" ( %d %%)" % (speed / baseline_speed * 100))
-            nthreads += 1
-        print()
-
-
-def main():
-    usage = "usage: %prog [-h|--help] [options]"
-    parser = OptionParser(usage=usage)
-    parser.add_option("-t", "--throughput",
-                      action="store_true", dest="throughput", default=False,
-                      help="run throughput tests")
-    parser.add_option("-l", "--latency",
-                      action="store_true", dest="latency", default=False,
-                      help="run latency tests")
-    parser.add_option("-b", "--bandwidth",
-                      action="store_true", dest="bandwidth", default=False,
-                      help="run I/O bandwidth tests")
-    parser.add_option("-i", "--interval",
-                      action="store", type="int", dest="check_interval", default=None,
-                      help="sys.setcheckinterval() value")
-    parser.add_option("-I", "--switch-interval",
-                      action="store", type="float", dest="switch_interval", default=None,
-                      help="sys.setswitchinterval() value")
-    parser.add_option("-n", "--num-threads",
-                      action="store", type="int", dest="nthreads", default=4,
-                      help="max number of threads in tests")
-
-    # Hidden option to run the pinging and bandwidth clients
-    parser.add_option("", "--latclient",
-                      action="store", dest="latclient", default=None,
-                      help=SUPPRESS_HELP)
-    parser.add_option("", "--bwclient",
-                      action="store", dest="bwclient", default=None,
-                      help=SUPPRESS_HELP)
-
-    options, args = parser.parse_args()
-    if args:
-        parser.error("unexpected arguments")
-
-    if options.latclient:
-        kwargs = eval(options.latclient)
-        latency_client(**kwargs)
-        return
-
-    if options.bwclient:
-        kwargs = eval(options.bwclient)
-        bandwidth_client(**kwargs)
-        return
-
-    if not options.throughput and not options.latency and not options.bandwidth:
-        options.throughput = options.latency = options.bandwidth = True
-    if options.check_interval:
-        sys.setcheckinterval(options.check_interval)
-    if options.switch_interval:
-        sys.setswitchinterval(options.switch_interval)
-
-    print("== %s %s (%s) ==" % (
-        platform.python_implementation(),
-        platform.python_version(),
-        platform.python_build()[0],
-    ))
-    # Processor identification often has repeated spaces
-    cpu = ' '.join(platform.processor().split())
-    print("== %s %s on '%s' ==" % (
-        platform.machine(),
-        platform.system(),
-        cpu,
-    ))
-    print()
-
-    if options.throughput:
-        print("--- Throughput ---")
-        print()
-        run_throughput_tests(options.nthreads)
-
-    if options.latency:
-        print("--- Latency ---")
-        print()
-        run_latency_tests(options.nthreads)
-
-    if options.bandwidth:
-        print("--- I/O bandwidth ---")
-        print()
-        run_bandwidth_tests(options.nthreads)
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/ACKS b/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/ACKS
deleted file mode 100644
index 56215a0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/ACKS
+++ /dev/null
@@ -1,8 +0,0 @@
-Fred L. Drake, Jr.
-Mark Hammond
-Shane Hathaway
-Neil Schemenauer
-Evan Simpson
-Greg Stein
-Bill Tutt
-Moshe Zadka
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/README b/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/README
deleted file mode 100644
index 373678f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/README
+++ /dev/null
@@ -1,18 +0,0 @@
-This directory contains support tools for the Python compiler package,
-which is now part of the standard library.
-
-compile.py	Demo that compiles a Python module into a .pyc file
-		using the pure-Python compiler code.
-
-demo.py		Prints the names of all the methods defined in a module,
-		as a demonstration of walking through the abstract syntax
-		tree produced by the parser.
-
-dumppyc.py	Dumps the contents of a .pyc file, printing 
-		the attributes of the code object followed by a 
-		code disassembly.
-
-regrtest.py	Runs the Python test suite using bytecode generated 
-		by the pure-Python compiler code instead of the
-		builtin compiler.
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/ast.txt b/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/ast.txt
deleted file mode 100644
index 7cfb3ba..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/ast.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-# This file describes the nodes of the AST in ast.py.  The module is
-# generated by astgen.py.  
-# The descriptions use the following special notation to describe
-# properties of the children:
-#    *   this child is not a node
-#    !   this child is a sequence that contains nodes in it
-#    &   this child may be set to None
-#  = ... a default value for the node constructor (optional args)
-#
-# If you add node types here, please be sure to update the list of 
-# Node types in Doc/lib/asttable.tex.
-Module: doc*, node
-Stmt: nodes!
-Decorators: nodes!
-Function: decorators&, name*, argnames*, defaults!, flags*, doc*, code
-Lambda: argnames*, defaults!, flags*, code
-Class: name*, bases!, doc*, code, decorators& = None
-Pass: 
-Break: 
-Continue: 
-For: assign, list, body, else_&
-While: test, body, else_&
-With: expr, vars&, body
-If: tests!, else_&
-IfExp: test, then, else_
-Exec: expr, locals&, globals&
-From: modname*, names*, level*
-Import: names*
-Raise: expr1&, expr2&, expr3&
-TryFinally: body, final
-TryExcept: body, handlers!, else_&
-Return: value
-Yield: value
-Const: value*
-Print: nodes!, dest&
-Printnl: nodes!, dest&
-Discard: expr
-AugAssign: node, op*, expr
-Assign: nodes!, expr
-AssTuple: nodes!
-AssList: nodes!
-AssName: name*, flags*
-AssAttr: expr, attrname*, flags*
-ListComp: expr, quals!
-ListCompFor: assign, list, ifs!
-ListCompIf: test
-GenExpr: code
-GenExprInner: expr, quals!
-GenExprFor: assign, iter, ifs!
-GenExprIf: test
-List: nodes!
-Dict: items!
-Not: expr
-Compare: expr, ops!
-Name: name*
-Global: names*
-Backquote: expr
-Getattr: expr, attrname*
-CallFunc: node, args!, star_args& = None, dstar_args& = None
-Keyword: name*, expr
-Subscript: expr, flags*, subs!
-Ellipsis: 
-Sliceobj: nodes!
-Slice: expr, flags*, lower&, upper&
-Assert: test, fail&
-Tuple: nodes!
-Or: nodes!
-And: nodes!
-Bitor: nodes!
-Bitxor: nodes!
-Bitand: nodes!
-LeftShift: (left, right)
-RightShift: (left, right)
-Add: (left, right)
-Sub: (left, right)
-Mul: (left, right)
-Div: (left, right)
-Mod: (left, right)
-Power: (left, right)
-FloorDiv: (left, right)
-UnaryAdd: expr
-UnarySub: expr
-Invert: expr
-
-init(Function):
-    self.varargs = self.kwargs = None
-    if flags & CO_VARARGS:
-        self.varargs = 1
-    if flags & CO_VARKEYWORDS:
-        self.kwargs = 1
-
-init(Lambda):
-    self.varargs = self.kwargs = None
-    if flags & CO_VARARGS:
-        self.varargs = 1
-    if flags & CO_VARKEYWORDS:
-        self.kwargs = 1
-
-init(GenExpr):
-    self.argnames = ['.0']
-    self.varargs = self.kwargs = None
-
-init(GenExprFor):
-    self.is_outmost = False
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/astgen.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/astgen.py
deleted file mode 100644
index 51f29b7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/astgen.py
+++ /dev/null
@@ -1,294 +0,0 @@
-"""Generate ast module from specification
-
-This script generates the ast module from a simple specification,
-which makes it easy to accomodate changes in the grammar.  This
-approach would be quite reasonable if the grammar changed often.
-Instead, it is rather complex to generate the appropriate code.  And
-the Node interface has changed more often than the grammar.
-"""
-
-import fileinput
-import re
-import sys
-from StringIO import StringIO
-
-SPEC = "ast.txt"
-COMMA = ", "
-
-def load_boilerplate(file):
-    f = open(file)
-    buf = f.read()
-    f.close()
-    i = buf.find('### ''PROLOGUE')
-    j = buf.find('### ''EPILOGUE')
-    pro = buf[i+12:j].strip()
-    epi = buf[j+12:].strip()
-    return pro, epi
-
-def strip_default(arg):
-    """Return the argname from an 'arg = default' string"""
-    i = arg.find('=')
-    if i == -1:
-        return arg
-    t = arg[:i].strip()
-    return t
-
-P_NODE = 1
-P_OTHER = 2
-P_NESTED = 3
-P_NONE = 4
-
-class NodeInfo:
-    """Each instance describes a specific AST node"""
-    def __init__(self, name, args):
-        self.name = name
-        self.args = args.strip()
-        self.argnames = self.get_argnames()
-        self.argprops = self.get_argprops()
-        self.nargs = len(self.argnames)
-        self.init = []
-
-    def get_argnames(self):
-        if '(' in self.args:
-            i = self.args.find('(')
-            j = self.args.rfind(')')
-            args = self.args[i+1:j]
-        else:
-            args = self.args
-        return [strip_default(arg.strip())
-                for arg in args.split(',') if arg]
-
-    def get_argprops(self):
-        """Each argument can have a property like '*' or '!'
-
-        XXX This method modifies the argnames in place!
-        """
-        d = {}
-        hardest_arg = P_NODE
-        for i in range(len(self.argnames)):
-            arg = self.argnames[i]
-            if arg.endswith('*'):
-                arg = self.argnames[i] = arg[:-1]
-                d[arg] = P_OTHER
-                hardest_arg = max(hardest_arg, P_OTHER)
-            elif arg.endswith('!'):
-                arg = self.argnames[i] = arg[:-1]
-                d[arg] = P_NESTED
-                hardest_arg = max(hardest_arg, P_NESTED)
-            elif arg.endswith('&'):
-                arg = self.argnames[i] = arg[:-1]
-                d[arg] = P_NONE
-                hardest_arg = max(hardest_arg, P_NONE)
-            else:
-                d[arg] = P_NODE
-        self.hardest_arg = hardest_arg
-
-        if hardest_arg > P_NODE:
-            self.args = self.args.replace('*', '')
-            self.args = self.args.replace('!', '')
-            self.args = self.args.replace('&', '')
-
-        return d
-
-    def gen_source(self):
-        buf = StringIO()
-        print >> buf, "class %s(Node):" % self.name
-        self._gen_init(buf)
-        print >> buf
-        self._gen_getChildren(buf)
-        print >> buf
-        self._gen_getChildNodes(buf)
-        print >> buf
-        self._gen_repr(buf)
-        buf.seek(0, 0)
-        return buf.read()
-
-    def _gen_init(self, buf):
-        if self.args:
-            argtuple = '(' in self.args
-            args = self.args if not argtuple else ''.join(self.argnames)
-            print >> buf, "    def __init__(self, %s, lineno=None):" % args
-        else:
-            print >> buf, "    def __init__(self, lineno=None):"
-        if self.argnames:
-            if argtuple:
-                for idx, name in enumerate(self.argnames):
-                    print >> buf, "        self.%s = %s[%s]" % (name, args, idx)
-            else:
-                for name in self.argnames:
-                    print >> buf, "        self.%s = %s" % (name, name)
-        print >> buf, "        self.lineno = lineno"
-        # Copy the lines in self.init, indented four spaces.  The rstrip()
-        # business is to get rid of the four spaces if line happens to be
-        # empty, so that reindent.py is happy with the output.
-        for line in self.init:
-            print >> buf, ("    " + line).rstrip()
-
-    def _gen_getChildren(self, buf):
-        print >> buf, "    def getChildren(self):"
-        if len(self.argnames) == 0:
-            print >> buf, "        return ()"
-        else:
-            if self.hardest_arg < P_NESTED:
-                clist = COMMA.join(["self.%s" % c
-                                    for c in self.argnames])
-                if self.nargs == 1:
-                    print >> buf, "        return %s," % clist
-                else:
-                    print >> buf, "        return %s" % clist
-            else:
-                if len(self.argnames) == 1:
-                    print >> buf, "        return tuple(flatten(self.%s))" % self.argnames[0]
-                else:
-                    print >> buf, "        children = []"
-                    template = "        children.%s(%sself.%s%s)"
-                    for name in self.argnames:
-                        if self.argprops[name] == P_NESTED:
-                            print >> buf, template % ("extend", "flatten(",
-                                                      name, ")")
-                        else:
-                            print >> buf, template % ("append", "", name, "")
-                    print >> buf, "        return tuple(children)"
-
-    def _gen_getChildNodes(self, buf):
-        print >> buf, "    def getChildNodes(self):"
-        if len(self.argnames) == 0:
-            print >> buf, "        return ()"
-        else:
-            if self.hardest_arg < P_NESTED:
-                clist = ["self.%s" % c
-                         for c in self.argnames
-                         if self.argprops[c] == P_NODE]
-                if len(clist) == 0:
-                    print >> buf, "        return ()"
-                elif len(clist) == 1:
-                    print >> buf, "        return %s," % clist[0]
-                else:
-                    print >> buf, "        return %s" % COMMA.join(clist)
-            else:
-                print >> buf, "        nodelist = []"
-                template = "        nodelist.%s(%sself.%s%s)"
-                for name in self.argnames:
-                    if self.argprops[name] == P_NONE:
-                        tmp = ("        if self.%s is not None:\n"
-                               "            nodelist.append(self.%s)")
-                        print >> buf, tmp % (name, name)
-                    elif self.argprops[name] == P_NESTED:
-                        print >> buf, template % ("extend", "flatten_nodes(",
-                                                  name, ")")
-                    elif self.argprops[name] == P_NODE:
-                        print >> buf, template % ("append", "", name, "")
-                print >> buf, "        return tuple(nodelist)"
-
-    def _gen_repr(self, buf):
-        print >> buf, "    def __repr__(self):"
-        if self.argnames:
-            fmt = COMMA.join(["%s"] * self.nargs)
-            if '(' in self.args:
-                fmt = '(%s)' % fmt
-            vals = ["repr(self.%s)" % name for name in self.argnames]
-            vals = COMMA.join(vals)
-            if self.nargs == 1:
-                vals = vals + ","
-            print >> buf, '        return "%s(%s)" %% (%s)' % \
-                  (self.name, fmt, vals)
-        else:
-            print >> buf, '        return "%s()"' % self.name
-
-rx_init = re.compile('init\((.*)\):')
-
-def parse_spec(file):
-    classes = {}
-    cur = None
-    for line in fileinput.input(file):
-        if line.strip().startswith('#'):
-            continue
-        mo = rx_init.search(line)
-        if mo is None:
-            if cur is None:
-                # a normal entry
-                try:
-                    name, args = line.split(':')
-                except ValueError:
-                    continue
-                classes[name] = NodeInfo(name, args)
-                cur = None
-            else:
-                # some code for the __init__ method
-                cur.init.append(line)
-        else:
-            # some extra code for a Node's __init__ method
-            name = mo.group(1)
-            cur = classes[name]
-    return sorted(classes.values(), key=lambda n: n.name)
-
-def main():
-    prologue, epilogue = load_boilerplate(sys.argv[-1])
-    print prologue
-    print
-    classes = parse_spec(SPEC)
-    for info in classes:
-        print info.gen_source()
-    print epilogue
-
-if __name__ == "__main__":
-    main()
-    sys.exit(0)
-
-### PROLOGUE
-"""Python abstract syntax node definitions
-
-This file is automatically generated by Tools/compiler/astgen.py
-"""
-from consts import CO_VARARGS, CO_VARKEYWORDS
-
-def flatten(seq):
-    l = []
-    for elt in seq:
-        t = type(elt)
-        if t is tuple or t is list:
-            for elt2 in flatten(elt):
-                l.append(elt2)
-        else:
-            l.append(elt)
-    return l
-
-def flatten_nodes(seq):
-    return [n for n in flatten(seq) if isinstance(n, Node)]
-
-nodes = {}
-
-class Node:
-    """Abstract base class for ast nodes."""
-    def getChildren(self):
-        pass # implemented by subclasses
-    def __iter__(self):
-        for n in self.getChildren():
-            yield n
-    def asList(self): # for backwards compatibility
-        return self.getChildren()
-    def getChildNodes(self):
-        pass # implemented by subclasses
-
-class EmptyNode(Node):
-    pass
-
-class Expression(Node):
-    # Expression is an artificial node class to support "eval"
-    nodes["expression"] = "Expression"
-    def __init__(self, node):
-        self.node = node
-
-    def getChildren(self):
-        return self.node,
-
-    def getChildNodes(self):
-        return self.node,
-
-    def __repr__(self):
-        return "Expression(%s)" % (repr(self.node))
-
-### EPILOGUE
-for name, obj in globals().items():
-    if isinstance(obj, type) and issubclass(obj, Node):
-        nodes[name.lower()] = obj
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/compile.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/compile.py
deleted file mode 100644
index fa032b7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/compile.py
+++ /dev/null
@@ -1,51 +0,0 @@
-import sys
-import getopt
-
-from compiler import compileFile, visitor
-
-import profile
-
-def main():
-    VERBOSE = 0
-    DISPLAY = 0
-    PROFILE = 0
-    CONTINUE = 0
-    opts, args = getopt.getopt(sys.argv[1:], 'vqdcp')
-    for k, v in opts:
-        if k == '-v':
-            VERBOSE = 1
-            visitor.ASTVisitor.VERBOSE = visitor.ASTVisitor.VERBOSE + 1
-        if k == '-q':
-            if sys.platform[:3]=="win":
-                f = open('nul', 'wb') # /dev/null fails on Windows...
-            else:
-                f = open('/dev/null', 'wb')
-            sys.stdout = f
-        if k == '-d':
-            DISPLAY = 1
-        if k == '-c':
-            CONTINUE = 1
-        if k == '-p':
-            PROFILE = 1
-    if not args:
-        print "no files to compile"
-    else:
-        for filename in args:
-            if VERBOSE:
-                print filename
-            try:
-                if PROFILE:
-                    profile.run('compileFile(%r, %r)' % (filename, DISPLAY),
-                                filename + ".prof")
-                else:
-                    compileFile(filename, DISPLAY)
-
-            except SyntaxError, err:
-                print err
-                if err.lineno is not None:
-                    print err.lineno
-                if not CONTINUE:
-                    sys.exit(-1)
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/demo.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/demo.py
deleted file mode 100644
index cbdc208..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/demo.py
+++ /dev/null
@@ -1,38 +0,0 @@
-#! /usr/bin/env python
-
-"""Print names of all methods defined in module
-
-This script demonstrates use of the visitor interface of the compiler
-package.
-"""
-
-import compiler
-
-class MethodFinder:
-    """Print the names of all the methods
-
-    Each visit method takes two arguments, the node and its current
-    scope.  The scope is the name of the current class or None.
-    """
-
-    def visitClass(self, node, scope=None):
-        self.visit(node.code, node.name)
-
-    def visitFunction(self, node, scope=None):
-        if scope is not None:
-            print "%s.%s" % (scope, node.name)
-        self.visit(node.code, None)
-
-def main(files):
-    mf = MethodFinder()
-    for file in files:
-        f = open(file)
-        buf = f.read()
-        f.close()
-        ast = compiler.parse(buf)
-        compiler.walk(ast, mf)
-
-if __name__ == "__main__":
-    import sys
-
-    main(sys.argv[1:])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/dumppyc.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/dumppyc.py
deleted file mode 100644
index 18da30f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/dumppyc.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#! /usr/bin/env python
-
-import marshal
-import dis
-import types
-
-def dump(obj):
-    print obj
-    for attr in dir(obj):
-        if attr.startswith('co_'):
-            val = getattr(obj, attr)
-            print "\t", attr, repr(val)
-
-def loadCode(path):
-    f = open(path)
-    f.read(8)
-    co = marshal.load(f)
-    f.close()
-    return co
-
-def walk(co, match=None):
-    if match is None or co.co_name == match:
-        dump(co)
-        print
-        dis.dis(co)
-    for obj in co.co_consts:
-        if type(obj) == types.CodeType:
-            walk(obj, match)
-
-def load(filename, codename=None):
-    co = loadCode(filename)
-    walk(co, codename)
-
-if __name__ == "__main__":
-    import sys
-    if len(sys.argv) == 3:
-        filename, codename = sys.argv[1:]
-    else:
-        filename = sys.argv[1]
-        codename = None
-    if filename.endswith('.py'):
-        buf = open(filename).read()
-        co = compile(buf, filename, "exec")
-        walk(co)
-    else:
-        load(filename, codename)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/regrtest.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/regrtest.py
deleted file mode 100644
index ca6ab5d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/regrtest.py
+++ /dev/null
@@ -1,78 +0,0 @@
-"""Run the Python regression test using the compiler
-
-This test runs the standard Python test suite using bytecode generated
-by this compiler instead of by the builtin compiler.
-
-The regression test is run with the interpreter in verbose mode so
-that import problems can be observed easily.
-"""
-
-from compiler import compileFile
-
-import os
-import sys
-import test
-import tempfile
-
-def copy_test_suite():
-    dest = tempfile.mkdtemp()
-    os.system("cp -r %s/* %s" % (test.__path__[0], dest))
-    print "Creating copy of test suite in", dest
-    return dest
-
-def copy_library():
-    dest = tempfile.mkdtemp()
-    libdir = os.path.split(test.__path__[0])[0]
-    print "Found standard library in", libdir
-    print "Creating copy of standard library in", dest
-    os.system("cp -r %s/* %s" % (libdir, dest))
-    return dest
-
-def compile_files(dir):
-    print "Compiling", dir, "\n\t",
-    line_len = 10
-    for file in os.listdir(dir):
-        base, ext = os.path.splitext(file)
-        if ext == '.py':
-            source = os.path.join(dir, file)
-            line_len = line_len + len(file) + 1
-            if line_len > 75:
-                print "\n\t",
-                line_len = len(source) + 9
-            print file,
-            try:
-                compileFile(source)
-            except SyntaxError, err:
-                print err
-                continue
-            # make sure the .pyc file is not over-written
-            os.chmod(source + "c", 444)
-        elif file == 'CVS':
-            pass
-        else:
-            path = os.path.join(dir, file)
-            if os.path.isdir(path):
-                print
-                print
-                compile_files(path)
-                print "\t",
-                line_len = 10
-    print
-
-def run_regrtest(lib_dir):
-    test_dir = os.path.join(lib_dir, "test")
-    os.chdir(test_dir)
-    os.system("PYTHONPATH=%s %s -v regrtest.py" % (lib_dir, sys.executable))
-
-def cleanup(dir):
-    os.system("rm -rf %s" % dir)
-
-def main():
-    lib_dir = copy_library()
-    compile_files(lib_dir)
-    run_regrtest(lib_dir)
-    raw_input("Cleanup?")
-    cleanup(lib_dir)
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/stacktest.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/stacktest.py
deleted file mode 100644
index 986cd13..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/stacktest.py
+++ /dev/null
@@ -1,43 +0,0 @@
-import compiler
-import dis
-import types
-
-def extract_code_objects(co):
-    l = [co]
-    for const in co.co_consts:
-        if type(const) == types.CodeType:
-            l.append(const)
-    return l
-
-def compare(a, b):
-    if not (a.co_name == "?" or a.co_name.startswith('<lambda')):
-        assert a.co_name == b.co_name, (a, b)
-    if a.co_stacksize != b.co_stacksize:
-        print "stack mismatch %s: %d vs. %d" % (a.co_name,
-                                                a.co_stacksize,
-                                                b.co_stacksize)
-        if a.co_stacksize > b.co_stacksize:
-            print "good code"
-            dis.dis(a)
-            print "bad code"
-            dis.dis(b)
-            assert 0
-
-def main(files):
-    for file in files:
-        print file
-        buf = open(file).read()
-        try:
-            co1 = compile(buf, file, "exec")
-        except SyntaxError:
-            print "skipped"
-            continue
-        co2 = compiler.compile(buf, file, "exec")
-        co1l = extract_code_objects(co1)
-        co2l = extract_code_objects(co2)
-        for a, b in zip(co1l, co2l):
-            compare(a, b)
-
-if __name__ == "__main__":
-    import sys
-    main(sys.argv[1:])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/README b/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/README
deleted file mode 100644
index e566e79..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/README
+++ /dev/null
@@ -1,114 +0,0 @@
-FAQ Wizard
-----------
-
-Author: Guido van Rossum <guido@python.org>
-Version: 1.0
-Date:  6 April 1998
-
-
-This is a CGI program that maintains a user-editable FAQ.  It uses RCS
-to keep track of changes to individual FAQ entries.  It is fully
-configurable; everything you might want to change when using this
-program to maintain some other FAQ than the Python FAQ is contained in
-the configuration module, faqconf.py.
-
-Note that the bulk of the code is not an executable script; it's an
-importable module.  The actual script in cgi-bin is minimal.
-
-Files:
-
-faqw.py		executable script to be edited and installed in cgi-bin
-faqwiz.py	main module, lives in same directory as FAQ entry files
-faqconf.py	main configuration module
-faqcust.py	additional local customization module (optional)
-move-faqwiz.sh  Script to move faqwiz entries.
-
-
-What's New?
------------
-
-Version 1.0 corrects some minor bugs and uses tab-agnostic
-indentation; it is otherwise unchanged from version 0.9.0.
-
-Version 0.9.0 uses the re module (Perl style regular expressions) for
-all its regular expression needs, instead of the regex and regsub
-modules (Emacs style).  This affects the syntax for regular
-expressions entered by the user as search strings (with "regular
-expression" checked), hence the version number jump.
-
-
-Setup Information
------------------
-
-This assumes you are familiar with Python, with your http server, and
-with running CGI scripts under your http server.  You need Python 1.5
-or better.
-
-Select a place where the Python modules that constitute the FAQ wizard
-will live (the directory where you unpacked it is an obvious choice).
-This will be called the SRCDIR.  This directory should not be writable
-by other users of your system (since they would be able to execute
-arbitrary code by invoking the FAQ wizard's CGI script).
-
-Create a dedicated working directory, preferably one that's not
-directly reachable from your http server.  This will be called the
-FAQDIR.  Create a subdirectory named RCS.  Make both the working
-directory and the RCS subdirectory wrld-writable.  (This is essential,
-since the FAQ wizard runs as use nobody, and needs to create
-additional files here!)
-
-Edit faqconf.py to reflect your setup.  You only need to edit the top
-part, up till the line of all dashes.  The comments should guide you
-in your edits.  (Actually, you can also choose to add your changes to
-faqcust.py and leave faqconf.py alone.  This is essential if you are
-maintaining multiple FAQs; see below.)
-
-Don't forget to edit the SECTION_TITLES variables to reflect the set
-of section titles for your FAQ!
-
-Next, edit faqw.py to reflect the pathname of your Python interpreter
-and the values for SRCDIR and FAQDIR that you just chose.  Then
-install faqw.py in your cgi-bin directory.  Make sure that it is
-world-executable.  You should now be able to connect to the FAQ wizard
-by entering the following URL in your web client (subsituting the
-appropriate host and port for "your.web.server", and perhaps
-specifying a different directory for "cgi-bin" if local conventions so
-dictate):
-
-	http://your.web.server/cgi-bin/faqw.py
-
-If you are unable to get this working, check your server's error_log
-file.  The documentation for Python's cgi module in the Python Library
-Reference Manual gives plentyu additional information about installing
-and debugging CGI scripts, including setup debugging.  This
-documentation is repeated in the doc string in the cgi module; try
-``import cgi; print cgi.__doc__''.
-
-Assuming this works, you should now be able to add the first entry to
-your FAQ using the FAQ wizard interface.  This creates a file
-faq01.001.htp in your working directory and an RCS revision history
-file faq01.001.htp,v in the RCS subdirectory.  You can now exercise
-the other FAQ wizard features (search, index, whole FAQ, what's new,
-roulette, and so on).
-
-
-Maintaining Multiple FAQs
--------------------------
-
-If you have multiple FAQs, you need a separate FAQDIR per FAQ, and a
-different customization file per FAQ.  The easiest thing to do would
-be to have the faqcust.py for each FAQ live in the FAQDIR for that
-FAQ, but that creates some security concerns, since the FAQDIR must be
-world writable: *if* someone who breaks into your system (or a
-legitimate user) manages to edit the faqcust.py file they can get
-arbitrary code to execute through the FAQ wizard.  Therefore, you will
-need a more complex setup.
-
-The best way is probably to have a directory that is only writable by
-you for each FAQ, where you place the copy of faqcust.py for that FAQ,
-and have a world-writable subdirectory DATA for the data.  You then
-set FAQDIR to point to the DATA directory and change the faqw.py
-bootstrap script to add FAQDIR/.. to sys.path (in front of SRCDIR, so
-the dummy faqcust.py from SRCDIR is ignored).
-
---Guido van Rossum (home page: http://www.python.org/~guido/)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqconf.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqconf.py
deleted file mode 100644
index 915dfb4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqconf.py
+++ /dev/null
@@ -1,577 +0,0 @@
-"""FAQ Wizard customization module.
-
-Edit this file to customize the FAQ Wizard.  For normal purposes, you
-should only have to change the FAQ section titles and the small group
-of parameters below it.
-
-"""
-
-# Titles of FAQ sections
-
-SECTION_TITLES = {
-    # SectionNumber : SectionTitle; need at least one entry
-    1: "General information and availability",
-}
-
-# Parameters you definitely want to change
-
-SHORTNAME = "Generic"                   # FAQ name with "FAQ" omitted
-PASSWORD = ""                           # Password for editing
-OWNERNAME = "FAQ owner"                 # Name for feedback
-OWNEREMAIL = "nobody@anywhere.org"      # Email for feedback
-HOMEURL = "http://www.python.org"       # Related home page
-HOMENAME = "Python home"                # Name of related home page
-RCSBINDIR = "/usr/local/bin/"           # Directory containing RCS commands
-                                        # (must end in a slash)
-
-# Parameters you can normally leave alone
-
-MAXHITS = 10                            # Max #hits to be shown directly
-COOKIE_LIFETIME = 28*24*3600            # Cookie expiration in seconds
-                                        # (28*24*3600 = 28 days = 4 weeks)
-PROCESS_PREFORMAT = 1                   # toggle whether preformatted text
-                                        # will replace urls and emails with
-                                        # HTML links
-
-# Markers appended to title to indicate recently change
-# (may contain HTML, e.g. <IMG>); and corresponding
-
-MARK_VERY_RECENT = " **"                # Changed very recently
-MARK_RECENT = " *"                      # Changed recently
-DT_VERY_RECENT = 24*3600                # 24 hours
-DT_RECENT = 7*24*3600                   # 7 days
-
-EXPLAIN_MARKS = """
-<P>(Entries marked with ** were changed within the last 24 hours;
-entries marked with * were changed within the last 7 days.)
-<P>
-"""
-
-# Version -- don't change unless you edit faqwiz.py
-
-WIZVERSION = "1.0.4"                    # FAQ Wizard version
-
-import os, sys
-if os.name in ['nt',]:
-    # On NT we'll probably be running python from a batch file,
-    # so sys.argv[0] is not helpful
-    FAQCGI = 'faq.bat'                  # Relative URL of the FAQ cgi script
-    # LOGNAME is not typically set on NT
-    os.environ[ 'LOGNAME' ] = "FAQWizard"
-else:
-    # This parameter is normally overwritten with a dynamic value
-    FAQCGI = 'faqw.py'                  # Relative URL of the FAQ cgi script
-    FAQCGI = os.path.basename(sys.argv[0]) or FAQCGI
-del os, sys
-
-# Perl (re module) style regular expression to recognize FAQ entry
-# files: group(1) should be the section number, group(2) should be the
-# question number.  Both should be fixed width so simple-minded
-# sorting yields the right order.
-
-OKFILENAME = r"^faq(\d\d)\.(\d\d\d)\.htp$"
-
-# Format to construct a FAQ entry file name
-
-NEWFILENAME = "faq%02d.%03d.htp"
-
-# Load local customizations on top of the previous parameters
-
-try:
-    from faqcust import *
-except ImportError:
-    pass
-
-# Calculated parameter names
-
-COOKIE_NAME = SHORTNAME + "-FAQ-Wizard" # Name used for Netscape cookie
-FAQNAME = SHORTNAME + " FAQ"            # Name of the FAQ
-
-# ----------------------------------------------------------------------
-
-# Anything below this point normally needn't be changed; you would
-# change this if you were to create e.g. a French translation or if
-# you just aren't happy with the text generated by the FAQ Wizard.
-
-# Most strings here are subject to substitution (string%dictionary)
-
-# RCS commands
-
-import os
-if os.name in ['nt', ]:
-    SH_RLOG = RCSBINDIR + "rlog %(file)s < NUL"
-    SH_RLOG_H = RCSBINDIR + "rlog -h %(file)s  < NUL"
-    SH_RDIFF = RCSBINDIR + "rcsdiff -r%(prev)s -r%(rev)s %(file)s < NUL"
-    SH_REVISION = RCSBINDIR + "co -p%(rev)s %(file)s < NUL"
-    ### Have to use co -l, or the file is not marked rw on NT
-    SH_LOCK = RCSBINDIR + "co -l %(file)s < NUL"
-    SH_CHECKIN =  RCSBINDIR + "ci -u %(file)s < %(tfn)s"
-else:
-    SH_RLOG = RCSBINDIR + "rlog %(file)s </dev/null 2>&1"
-    SH_RLOG_H = RCSBINDIR + "rlog -h %(file)s </dev/null 2>&1"
-    SH_RDIFF = RCSBINDIR + "rcsdiff -r%(prev)s -r%(rev)s %(file)s </dev/null 2>&1"
-    SH_REVISION = RCSBINDIR + "co -p%(rev)s %(file)s </dev/null 2>&1"
-    SH_LOCK = RCSBINDIR + "rcs -l %(file)s </dev/null 2>&1"
-    SH_CHECKIN =  RCSBINDIR + "ci -u %(file)s <%(tfn)s 2>&1"
-del os
-
-# Titles for various output pages (not subject to substitution)
-
-T_HOME = FAQNAME + " Wizard " + WIZVERSION
-T_ERROR = "Sorry, an error occurred"
-T_ROULETTE = FAQNAME + " Roulette"
-T_ALL = "The Whole " + FAQNAME
-T_INDEX = FAQNAME + " Index"
-T_SEARCH = FAQNAME + " Search Results"
-T_RECENT = "What's New in the " + FAQNAME
-T_SHOW = FAQNAME + " Entry"
-T_LOG = "RCS log for %s entry" % FAQNAME
-T_REVISION = "RCS revision for %s entry" % FAQNAME
-T_DIFF = "RCS diff for %s entry" % FAQNAME
-T_ADD = "Add an entry to the " + FAQNAME
-T_DELETE = "Deleting an entry from the " + FAQNAME
-T_EDIT = FAQNAME + " Edit Wizard"
-T_REVIEW = T_EDIT + " - Review Changes"
-T_COMMITTED = T_EDIT + " - Changes Committed"
-T_COMMITFAILED = T_EDIT + " - Commit Failed"
-T_CANTCOMMIT = T_EDIT + " - Commit Rejected"
-T_HELP = T_EDIT + " - Help"
-
-# Generic prologue and epilogue
-
-PROLOGUE = '''
-<HTML>
-<HEAD>
-<TITLE>%(title)s</TITLE>
-</HEAD>
-
-<BODY
-      BGCOLOR="#FFFFFF"
-      TEXT="#000000"
-      LINK="#AA0000"
-      VLINK="#906A6A">
-<H1>%(title)s</H1>
-'''
-
-EPILOGUE = '''
-<HR>
-<A HREF="%(HOMEURL)s">%(HOMENAME)s</A> /
-<A HREF="%(FAQCGI)s?req=home">%(FAQNAME)s Wizard %(WIZVERSION)s</A> /
-Feedback to <A HREF="mailto:%(OWNEREMAIL)s">%(OWNERNAME)s</A>
-
-</BODY>
-</HTML>
-'''
-
-# Home page
-
-HOME = """
-<H2>Search the %(FAQNAME)s:</H2>
-
-<BLOCKQUOTE>
-
-<FORM ACTION="%(FAQCGI)s">
-    <INPUT TYPE=text NAME=query>
-    <INPUT TYPE=submit VALUE="Search"><BR>
-    <INPUT TYPE=radio NAME=querytype VALUE=simple CHECKED>
-        Simple string
-        /
-    <INPUT TYPE=radio NAME=querytype VALUE=regex>
-        Regular expression
-        /<BR>
-    <INPUT TYPE=radio NAME=querytype VALUE=anykeywords>
-        Keywords (any)
-        /
-    <INPUT TYPE=radio NAME=querytype VALUE=allkeywords>
-        Keywords (all)
-        <BR>
-    <INPUT TYPE=radio NAME=casefold VALUE=yes CHECKED>
-        Fold case
-        /
-    <INPUT TYPE=radio NAME=casefold VALUE=no>
-        Case sensitive
-        <BR>
-    <INPUT TYPE=hidden NAME=req VALUE=search>
-</FORM>
-
-</BLOCKQUOTE>
-
-<HR>
-
-<H2>Other forms of %(FAQNAME)s access:</H2>
-
-<UL>
-<LI><A HREF="%(FAQCGI)s?req=index">FAQ index</A>
-<LI><A HREF="%(FAQCGI)s?req=all">The whole FAQ</A>
-<LI><A HREF="%(FAQCGI)s?req=recent">What's new in the FAQ?</A>
-<LI><A HREF="%(FAQCGI)s?req=roulette">FAQ roulette</A>
-<LI><A HREF="%(FAQCGI)s?req=add">Add a FAQ entry</A>
-<LI><A HREF="%(FAQCGI)s?req=delete">Delete a FAQ entry</A>
-</UL>
-"""
-
-# Index formatting
-
-INDEX_SECTION = """
-<P>
-<HR>
-<H2>%(sec)s. %(title)s</H2>
-<UL>
-"""
-
-INDEX_ADDSECTION = """
-<P>
-<LI><A HREF="%(FAQCGI)s?req=new&amp;section=%(sec)s">Add new entry</A>
-(at this point)
-"""
-
-INDEX_ENDSECTION = """
-</UL>
-"""
-
-INDEX_ENTRY = """\
-<LI><A HREF="%(FAQCGI)s?req=show&amp;file=%(file)s">%(title)s</A>
-"""
-
-LOCAL_ENTRY = """\
-<LI><A HREF="#%(sec)s.%(num)s">%(title)s</A>
-"""
-
-# Entry formatting
-
-ENTRY_HEADER1 = """
-<HR>
-<H2><A NAME="%(sec)s.%(num)s">%(title)s</A>\
-"""
-
-ENTRY_HEADER2 = """\
-</H2>
-"""
-
-ENTRY_FOOTER = """
-<A HREF="%(FAQCGI)s?req=edit&amp;file=%(file)s">Edit this entry</A> /
-<A HREF="%(FAQCGI)s?req=log&amp;file=%(file)s">Log info</A>
-"""
-
-ENTRY_LOGINFO = """
-/ Last changed on %(last_changed_date)s by
-<A HREF="mailto:%(last_changed_email)s">%(last_changed_author)s</A>
-"""
-
-# Search
-
-NO_HITS = """
-No hits.
-"""
-
-ONE_HIT = """
-Your search matched the following entry:
-"""
-
-FEW_HITS = """
-Your search matched the following %(count)s entries:
-"""
-
-MANY_HITS = """
-Your search matched more than %(MAXHITS)s entries.
-The %(count)s matching entries are presented here ordered by section:
-"""
-
-# RCS log and diff
-
-LOG = """
-Click on a revision line to see the diff between that revision and the
-previous one.
-"""
-
-REVISIONLINK = """\
-<A HREF="%(FAQCGI)s?req=revision&amp;file=%(file)s&amp;rev=%(rev)s"
->%(line)s</A>\
-"""
-DIFFLINK = """\
- (<A HREF="%(FAQCGI)s?req=diff&amp;file=%(file)s&amp;\
-prev=%(prev)s&amp;rev=%(rev)s"
->diff -r%(prev)s -r%(rev)s</A>)\
-"""
-
-# Recently changed entries
-
-NO_RECENT = """
-<HR>
-No %(FAQNAME)s entries were changed in the last %(period)s.
-"""
-
-VIEW_MENU = """
-<HR>
-View entries changed in the last...
-<UL>
-<LI><A HREF="%(FAQCGI)s?req=recent&amp;days=1">24 hours</A>
-<LI><A HREF="%(FAQCGI)s?req=recent&amp;days=2">2 days</A>
-<LI><A HREF="%(FAQCGI)s?req=recent&amp;days=3">3 days</A>
-<LI><A HREF="%(FAQCGI)s?req=recent&amp;days=7">week</A>
-<LI><A HREF="%(FAQCGI)s?req=recent&amp;days=28">4 weeks</A>
-<LI><A HREF="%(FAQCGI)s?req=recent&amp;days=365250">millennium</A>
-</UL>
-"""
-
-ONE_RECENT = VIEW_MENU + """
-The following %(FAQNAME)s entry was changed in the last %(period)s:
-"""
-
-SOME_RECENT = VIEW_MENU + """
-The following %(count)s %(FAQNAME)s entries were changed
-in the last %(period)s, most recently changed shown first:
-"""
-
-TAIL_RECENT = VIEW_MENU
-
-# Last changed banner on "all" (strftime format)
-LAST_CHANGED = "Last changed on %c %Z"
-
-# "Compat" command prologue (this has no <BODY> tag)
-COMPAT = """
-<H1>The whole %(FAQNAME)s</H1>
-See also the <A HREF="%(FAQCGI)s?req=home">%(FAQNAME)s Wizard</A>.
-<P>
-"""
-
-# Editing
-
-EDITHEAD = """
-<A HREF="%(FAQCGI)s?req=help">Click for Help</A>
-"""
-
-REVIEWHEAD = EDITHEAD
-
-
-EDITFORM1 = """
-<FORM ACTION="%(FAQCGI)s" METHOD=POST>
-<INPUT TYPE=hidden NAME=req VALUE=review>
-<INPUT TYPE=hidden NAME=file VALUE=%(file)s>
-<INPUT TYPE=hidden NAME=editversion VALUE=%(editversion)s>
-<HR>
-"""
-
-EDITFORM2 = """
-Title: <INPUT TYPE=text SIZE=70 NAME=title VALUE="%(title)s"><BR>
-<TEXTAREA COLS=72 ROWS=20 NAME=body>%(body)s
-</TEXTAREA><BR>
-Log message (reason for the change):<BR>
-<TEXTAREA COLS=72 ROWS=5 NAME=log>%(log)s
-</TEXTAREA><BR>
-Please provide the following information for logging purposes:
-<TABLE FRAME=none COLS=2>
-    <TR>
-        <TD>Name:
-        <TD><INPUT TYPE=text SIZE=40 NAME=author VALUE="%(author)s">
-    <TR>
-        <TD>Email:
-        <TD><INPUT TYPE=text SIZE=40 NAME=email VALUE="%(email)s">
-    <TR>
-        <TD>Password:
-        <TD><INPUT TYPE=password SIZE=20 NAME=password VALUE="%(password)s">
-</TABLE>
-
-<INPUT TYPE=submit NAME=review VALUE="Preview Edit">
-Click this button to preview your changes.
-"""
-
-EDITFORM3 = """
-</FORM>
-"""
-
-COMMIT = """
-<INPUT TYPE=submit NAME=commit VALUE="Commit">
-Click this button to commit your changes.
-<HR>
-"""
-
-NOCOMMIT_HEAD = """
-To commit your changes, please correct the following errors in the
-form below and click the Preview Edit button.
-<UL>
-"""
-NOCOMMIT_TAIL = """
-</UL>
-<HR>
-"""
-
-CANTCOMMIT_HEAD = """
-Some required information is missing:
-<UL>
-"""
-NEED_PASSWD = "<LI>You must provide the correct password.\n"
-NEED_AUTHOR = "<LI>You must enter your name.\n"
-NEED_EMAIL = "<LI>You must enter your email address.\n"
-NEED_LOG = "<LI>You must enter a log message.\n"
-CANTCOMMIT_TAIL = """
-</UL>
-Please use your browser's Back command to correct the form and commit
-again.
-"""
-
-NEWCONFLICT = """
-<P>
-You are creating a new entry, but the entry number specified is not
-correct.
-<P>
-The two most common causes of this problem are:
-<UL>
-<LI>After creating the entry yourself, you went back in your browser,
-    edited the entry some more, and clicked Commit again.
-<LI>Someone else started creating a new entry in the same section and
-    committed before you did.
-</UL>
-(It is also possible that the last entry in the section was physically
-deleted, but this should not happen except through manual intervention
-by the FAQ maintainer.)
-<P>
-<A HREF="%(FAQCGI)s?req=new&amp;section=%(sec)s">Click here to try
-again.</A>
-<P>
-"""
-
-VERSIONCONFLICT = """
-<P>
-You edited version %(editversion)s but the current version is %(version)s.
-<P>
-The two most common causes of this problem are:
-<UL>
-<LI>After committing a change, you went back in your browser,
-    edited the entry some more, and clicked Commit again.
-<LI>Someone else started editing the same entry and committed
-    before you did.
-</UL>
-<P>
-<A HREF="%(FAQCGI)s?req=show&amp;file=%(file)s">Click here to reload
-the entry and try again.</A>
-<P>
-"""
-
-CANTWRITE = """
-Can't write file %(file)s (%(why)s).
-"""
-
-FILEHEADER = """\
-Title: %(title)s
-Last-Changed-Date: %(date)s
-Last-Changed-Author: %(author)s
-Last-Changed-Email: %(email)s
-Last-Changed-Remote-Host: %(REMOTE_HOST)s
-Last-Changed-Remote-Address: %(REMOTE_ADDR)s
-"""
-
-LOGHEADER = """\
-Last-Changed-Date: %(date)s
-Last-Changed-Author: %(author)s
-Last-Changed-Email: %(email)s
-Last-Changed-Remote-Host: %(REMOTE_HOST)s
-Last-Changed-Remote-Address: %(REMOTE_ADDR)s
-
-%(log)s
-"""
-
-COMMITTED = """
-Your changes have been committed.
-"""
-
-COMMITFAILED = """
-Exit status %(sts)s.
-"""
-
-# Add/Delete
-
-ADD_HEAD = """
-At the moment, new entries can only be added at the end of a section.
-This is because the entry numbers are also their
-unique identifiers -- it's a bad idea to renumber entries.
-<P>
-Click on the section to which you want to add a new entry:
-<UL>
-"""
-
-ADD_SECTION = """\
-<LI><A HREF="%(FAQCGI)s?req=new&amp;section=%(section)s">%(section)s. %(title)s</A>
-"""
-
-ADD_TAIL = """
-</UL>
-"""
-
-ROULETTE = """
-<P>Hit your browser's Reload button to play again.<P>
-"""
-
-DELETE = """
-At the moment, there's no direct way to delete entries.
-This is because the entry numbers are also their
-unique identifiers -- it's a bad idea to renumber entries.
-<P>
-If you really think an entry needs to be deleted,
-change the title to "(deleted)" and make the body
-empty (keep the entry number in the title though).
-"""
-
-# Help file for the FAQ Edit Wizard
-
-HELP = """
-Using the %(FAQNAME)s Edit Wizard speaks mostly for itself.  Here are
-some answers to questions you are likely to ask:
-
-<P><HR>
-
-<H2>I can review an entry but I can't commit it.</H2>
-
-The commit button only appears if the following conditions are met:
-
-<UL>
-
-<LI>The Name field is not empty.
-
-<LI>The Email field contains at least an @ character.
-
-<LI>The Log message box is not empty.
-
-<LI>The Password field contains the proper password.
-
-</UL>
-
-<P><HR>
-
-<H2>What is the password?</H2>
-
-At the moment, only PSA members will be told the password.  This is a
-good time to join the PSA!  See <A
-HREF="http://www.python.org/psa/">the PSA home page</A>.
-
-<P><HR>
-
-<H2>Can I use HTML in the FAQ entry?</H2>
-
-Yes, if you include it in &lt;HTML&rt; and &lt;/HTML&gt; tags.
-<P>
-Also, if you include a URL or an email address in the text it will
-automatigally become an anchor of the right type.  Also, *word*
-is made italic (but only for single alphabetic words).
-
-<P><HR>
-
-<H2>How do I delineate paragraphs?</H2>
-
-Use blank lines to separate paragraphs.
-
-<P><HR>
-
-<H2>How do I enter example text?</H2>
-
-Any line that begins with a space or tab is assumed to be part of
-literal text.  Blocks of literal text delineated by blank lines are
-placed inside &lt;PRE&gt;...&lt;/PRE&gt;.
-"""
-
-# Load local customizations again, in case they set some other variables
-
-try:
-    from faqcust import *
-except ImportError:
-    pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqcust.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqcust.py
deleted file mode 100644
index 66c29dd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqcust.py
+++ /dev/null
@@ -1 +0,0 @@
-# Add your customizations here -- modified copies of what's in faqconf.py.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqw.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqw.py
deleted file mode 100644
index b9bb3d0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqw.py
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env python
-
-"""FAQ wizard bootstrap."""
-
-# This is a longer version of the bootstrap script given at the end of
-# faqwin.py; it prints timing statistics at the end of the regular CGI
-# script's output (so you can monitor how it is doing).
-
-# This script should be placed in your cgi-bin directory and made
-# executable.
-
-# You need to edit the first line and the lines that define FAQDIR and
-# SRCDIR, below: change /usr/local/bin/python to where your Python
-# interpreter lives, change the value for FAQDIR to where your FAQ
-# lives, and change the value for SRCDIR to where your faqwiz.py
-# module lives.  The faqconf.py and faqcust.py files live there, too.
-
-import os
-t1 = os.times() # If this doesn't work, just get rid of the timing code!
-try:
-    FAQDIR = "/usr/people/guido/python/FAQ"
-    SRCDIR = "/usr/people/guido/python/src/Tools/faqwiz"
-    import os, sys
-    os.chdir(FAQDIR)
-    sys.path.insert(0, SRCDIR)
-    import faqwiz
-except SystemExit, n:
-    sys.exit(n)
-except:
-    t, v, tb = sys.exc_info()
-    print
-    import cgi
-    cgi.print_exception(t, v, tb)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqwiz.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqwiz.py
deleted file mode 100644
index babb426..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/faqwiz.py
+++ /dev/null
@@ -1,841 +0,0 @@
-"""Generic FAQ Wizard.
-
-This is a CGI program that maintains a user-editable FAQ.  It uses RCS
-to keep track of changes to individual FAQ entries.  It is fully
-configurable; everything you might want to change when using this
-program to maintain some other FAQ than the Python FAQ is contained in
-the configuration module, faqconf.py.
-
-Note that this is not an executable script; it's an importable module.
-The actual script to place in cgi-bin is faqw.py.
-
-"""
-
-import sys, time, os, stat, re, cgi, faqconf
-from faqconf import *                   # This imports all uppercase names
-now = time.time()
-
-class FileError:
-    def __init__(self, file):
-        self.file = file
-
-class InvalidFile(FileError):
-    pass
-
-class NoSuchSection(FileError):
-    def __init__(self, section):
-        FileError.__init__(self, NEWFILENAME %(section, 1))
-        self.section = section
-
-class NoSuchFile(FileError):
-    def __init__(self, file, why=None):
-        FileError.__init__(self, file)
-        self.why = why
-
-def escape(s):
-    s = s.replace('&', '&amp;')
-    s = s.replace('<', '&lt;')
-    s = s.replace('>', '&gt;')
-    return s
-
-def escapeq(s):
-    s = escape(s)
-    s = s.replace('"', '&quot;')
-    return s
-
-def _interpolate(format, args, kw):
-    try:
-        quote = kw['_quote']
-    except KeyError:
-        quote = 1
-    d = (kw,) + args + (faqconf.__dict__,)
-    m = MagicDict(d, quote)
-    return format % m
-
-def interpolate(format, *args, **kw):
-    return _interpolate(format, args, kw)
-
-def emit(format, *args, **kw):
-    try:
-        f = kw['_file']
-    except KeyError:
-        f = sys.stdout
-    f.write(_interpolate(format, args, kw))
-
-translate_prog = None
-
-def translate(text, pre=0):
-    global translate_prog
-    if not translate_prog:
-        translate_prog = prog = re.compile(
-            r'\b(http|ftp|https)://\S+(\b|/)|\b[-.\w]+@[-.\w]+')
-    else:
-        prog = translate_prog
-    i = 0
-    list = []
-    while 1:
-        m = prog.search(text, i)
-        if not m:
-            break
-        j = m.start()
-        list.append(escape(text[i:j]))
-        i = j
-        url = m.group(0)
-        while url[-1] in '();:,.?\'"<>':
-            url = url[:-1]
-        i = i + len(url)
-        url = escape(url)
-        if not pre or (pre and PROCESS_PREFORMAT):
-            if ':' in url:
-                repl = '<A HREF="%s">%s</A>' % (url, url)
-            else:
-                repl = '<A HREF="mailto:%s">%s</A>' % (url, url)
-        else:
-            repl = url
-        list.append(repl)
-    j = len(text)
-    list.append(escape(text[i:j]))
-    return ''.join(list)
-
-def emphasize(line):
-    return re.sub(r'\*([a-zA-Z]+)\*', r'<I>\1</I>', line)
-
-revparse_prog = None
-
-def revparse(rev):
-    global revparse_prog
-    if not revparse_prog:
-        revparse_prog = re.compile(r'^(\d{1,3})\.(\d{1,4})$')
-    m = revparse_prog.match(rev)
-    if not m:
-        return None
-    [major, minor] = map(int, m.group(1, 2))
-    return major, minor
-
-logon = 0
-def log(text):
-    if logon:
-        logfile = open("logfile", "a")
-        logfile.write(text + "\n")
-        logfile.close()
-
-def load_cookies():
-    if not os.environ.has_key('HTTP_COOKIE'):
-        return {}
-    raw = os.environ['HTTP_COOKIE']
-    words = [s.strip() for s in raw.split(';')]
-    cookies = {}
-    for word in words:
-        i = word.find('=')
-        if i >= 0:
-            key, value = word[:i], word[i+1:]
-            cookies[key] = value
-    return cookies
-
-def load_my_cookie():
-    cookies = load_cookies()
-    try:
-        value = cookies[COOKIE_NAME]
-    except KeyError:
-        return {}
-    import urllib
-    value = urllib.unquote(value)
-    words = value.split('/')
-    while len(words) < 3:
-        words.append('')
-    author = '/'.join(words[:-2])
-    email = words[-2]
-    password = words[-1]
-    return {'author': author,
-            'email': email,
-            'password': password}
-
-def send_my_cookie(ui):
-    name = COOKIE_NAME
-    value = "%s/%s/%s" % (ui.author, ui.email, ui.password)
-    import urllib
-    value = urllib.quote(value)
-    then = now + COOKIE_LIFETIME
-    gmt = time.gmtime(then)
-    path = os.environ.get('SCRIPT_NAME', '/cgi-bin/')
-    print "Set-Cookie: %s=%s; path=%s;" % (name, value, path),
-    print time.strftime("expires=%a, %d-%b-%y %X GMT", gmt)
-
-class MagicDict:
-
-    def __init__(self, d, quote):
-        self.__d = d
-        self.__quote = quote
-
-    def __getitem__(self, key):
-        for d in self.__d:
-            try:
-                value = d[key]
-                if value:
-                    value = str(value)
-                    if self.__quote:
-                        value = escapeq(value)
-                    return value
-            except KeyError:
-                pass
-        return ''
-
-class UserInput:
-
-    def __init__(self):
-        self.__form = cgi.FieldStorage()
-        #log("\n\nbody: " + self.body)
-
-    def __getattr__(self, name):
-        if name[0] == '_':
-            raise AttributeError
-        try:
-            value = self.__form[name].value
-        except (TypeError, KeyError):
-            value = ''
-        else:
-            value = value.strip()
-        setattr(self, name, value)
-        return value
-
-    def __getitem__(self, key):
-        return getattr(self, key)
-
-class FaqEntry:
-
-    def __init__(self, fp, file, sec_num):
-        self.file = file
-        self.sec, self.num = sec_num
-        if fp:
-            import rfc822
-            self.__headers = rfc822.Message(fp)
-            self.body = fp.read().strip()
-        else:
-            self.__headers = {'title': "%d.%d. " % sec_num}
-            self.body = ''
-
-    def __getattr__(self, name):
-        if name[0] == '_':
-            raise AttributeError
-        key = '-'.join(name.split('_'))
-        try:
-            value = self.__headers[key]
-        except KeyError:
-            value = ''
-        setattr(self, name, value)
-        return value
-
-    def __getitem__(self, key):
-        return getattr(self, key)
-
-    def load_version(self):
-        command = interpolate(SH_RLOG_H, self)
-        p = os.popen(command)
-        version = ''
-        while 1:
-            line = p.readline()
-            if not line:
-                break
-            if line[:5] == 'head:':
-                version = line[5:].strip()
-        p.close()
-        self.version = version
-
-    def getmtime(self):
-        if not self.last_changed_date:
-            return 0
-        try:
-            return os.stat(self.file)[stat.ST_MTIME]
-        except os.error:
-            return 0
-
-    def emit_marks(self):
-        mtime = self.getmtime()
-        if mtime >= now - DT_VERY_RECENT:
-            emit(MARK_VERY_RECENT, self)
-        elif mtime >= now - DT_RECENT:
-            emit(MARK_RECENT, self)
-
-    def show(self, edit=1):
-        emit(ENTRY_HEADER1, self)
-        self.emit_marks()
-        emit(ENTRY_HEADER2, self)
-        pre = 0
-        raw = 0
-        for line in self.body.split('\n'):
-            # Allow the user to insert raw html into a FAQ answer
-            # (Skip Montanaro, with changes by Guido)
-            tag = line.rstrip().lower()
-            if tag == '<html>':
-                raw = 1
-                continue
-            if tag == '</html>':
-                raw = 0
-                continue
-            if raw:
-                print line
-                continue
-            if not line.strip():
-                if pre:
-                    print '</PRE>'
-                    pre = 0
-                else:
-                    print '<P>'
-            else:
-                if not line[0].isspace():
-                    if pre:
-                        print '</PRE>'
-                        pre = 0
-                else:
-                    if not pre:
-                        print '<PRE>'
-                        pre = 1
-                if '/' in line or '@' in line:
-                    line = translate(line, pre)
-                elif '<' in line or '&' in line:
-                    line = escape(line)
-                if not pre and '*' in line:
-                    line = emphasize(line)
-                print line
-        if pre:
-            print '</PRE>'
-            pre = 0
-        if edit:
-            print '<P>'
-            emit(ENTRY_FOOTER, self)
-            if self.last_changed_date:
-                emit(ENTRY_LOGINFO, self)
-        print '<P>'
-
-class FaqDir:
-
-    entryclass = FaqEntry
-
-    __okprog = re.compile(OKFILENAME)
-
-    def __init__(self, dir=os.curdir):
-        self.__dir = dir
-        self.__files = None
-
-    def __fill(self):
-        if self.__files is not None:
-            return
-        self.__files = files = []
-        okprog = self.__okprog
-        for file in os.listdir(self.__dir):
-            if self.__okprog.match(file):
-                files.append(file)
-        files.sort()
-
-    def good(self, file):
-        return self.__okprog.match(file)
-
-    def parse(self, file):
-        m = self.good(file)
-        if not m:
-            return None
-        sec, num = m.group(1, 2)
-        return int(sec), int(num)
-
-    def list(self):
-        # XXX Caller shouldn't modify result
-        self.__fill()
-        return self.__files
-
-    def open(self, file):
-        sec_num = self.parse(file)
-        if not sec_num:
-            raise InvalidFile(file)
-        try:
-            fp = open(file)
-        except IOError, msg:
-            raise NoSuchFile(file, msg)
-        try:
-            return self.entryclass(fp, file, sec_num)
-        finally:
-            fp.close()
-
-    def show(self, file, edit=1):
-        self.open(file).show(edit=edit)
-
-    def new(self, section):
-        if not SECTION_TITLES.has_key(section):
-            raise NoSuchSection(section)
-        maxnum = 0
-        for file in self.list():
-            sec, num = self.parse(file)
-            if sec == section:
-                maxnum = max(maxnum, num)
-        sec_num = (section, maxnum+1)
-        file = NEWFILENAME % sec_num
-        return self.entryclass(None, file, sec_num)
-
-class FaqWizard:
-
-    def __init__(self):
-        self.ui = UserInput()
-        self.dir = FaqDir()
-
-    def go(self):
-        print 'Content-type: text/html'
-        req = self.ui.req or 'home'
-        mname = 'do_%s' % req
-        try:
-            meth = getattr(self, mname)
-        except AttributeError:
-            self.error("Bad request type %r." % (req,))
-        else:
-            try:
-                meth()
-            except InvalidFile, exc:
-                self.error("Invalid entry file name %s" % exc.file)
-            except NoSuchFile, exc:
-                self.error("No entry with file name %s" % exc.file)
-            except NoSuchSection, exc:
-                self.error("No section number %s" % exc.section)
-        self.epilogue()
-
-    def error(self, message, **kw):
-        self.prologue(T_ERROR)
-        emit(message, kw)
-
-    def prologue(self, title, entry=None, **kw):
-        emit(PROLOGUE, entry, kwdict=kw, title=escape(title))
-
-    def epilogue(self):
-        emit(EPILOGUE)
-
-    def do_home(self):
-        self.prologue(T_HOME)
-        emit(HOME)
-
-    def do_debug(self):
-        self.prologue("FAQ Wizard Debugging")
-        form = cgi.FieldStorage()
-        cgi.print_form(form)
-        cgi.print_environ(os.environ)
-        cgi.print_directory()
-        cgi.print_arguments()
-
-    def do_search(self):
-        query = self.ui.query
-        if not query:
-            self.error("Empty query string!")
-            return
-        if self.ui.querytype == 'simple':
-            query = re.escape(query)
-            queries = [query]
-        elif self.ui.querytype in ('anykeywords', 'allkeywords'):
-            words = filter(None, re.split('\W+', query))
-            if not words:
-                self.error("No keywords specified!")
-                return
-            words = map(lambda w: r'\b%s\b' % w, words)
-            if self.ui.querytype[:3] == 'any':
-                queries = ['|'.join(words)]
-            else:
-                # Each of the individual queries must match
-                queries = words
-        else:
-            # Default to regular expression
-            queries = [query]
-        self.prologue(T_SEARCH)
-        progs = []
-        for query in queries:
-            if self.ui.casefold == 'no':
-                p = re.compile(query)
-            else:
-                p = re.compile(query, re.IGNORECASE)
-            progs.append(p)
-        hits = []
-        for file in self.dir.list():
-            try:
-                entry = self.dir.open(file)
-            except FileError:
-                constants
-            for p in progs:
-                if not p.search(entry.title) and not p.search(entry.body):
-                    break
-            else:
-                hits.append(file)
-        if not hits:
-            emit(NO_HITS, self.ui, count=0)
-        elif len(hits) <= MAXHITS:
-            if len(hits) == 1:
-                emit(ONE_HIT, count=1)
-            else:
-                emit(FEW_HITS, count=len(hits))
-            self.format_all(hits, headers=0)
-        else:
-            emit(MANY_HITS, count=len(hits))
-            self.format_index(hits)
-
-    def do_all(self):
-        self.prologue(T_ALL)
-        files = self.dir.list()
-        self.last_changed(files)
-        self.format_index(files, localrefs=1)
-        self.format_all(files)
-
-    def do_compat(self):
-        files = self.dir.list()
-        emit(COMPAT)
-        self.last_changed(files)
-        self.format_index(files, localrefs=1)
-        self.format_all(files, edit=0)
-        sys.exit(0)                     # XXX Hack to suppress epilogue
-
-    def last_changed(self, files):
-        latest = 0
-        for file in files:
-            entry = self.dir.open(file)
-            if entry:
-                mtime = mtime = entry.getmtime()
-                if mtime > latest:
-                    latest = mtime
-        print time.strftime(LAST_CHANGED, time.localtime(latest))
-        emit(EXPLAIN_MARKS)
-
-    def format_all(self, files, edit=1, headers=1):
-        sec = 0
-        for file in files:
-            try:
-                entry = self.dir.open(file)
-            except NoSuchFile:
-                continue
-            if headers and entry.sec != sec:
-                sec = entry.sec
-                try:
-                    title = SECTION_TITLES[sec]
-                except KeyError:
-                    title = "Untitled"
-                emit("\n<HR>\n<H1>%(sec)s. %(title)s</H1>\n",
-                     sec=sec, title=title)
-            entry.show(edit=edit)
-
-    def do_index(self):
-        self.prologue(T_INDEX)
-        files = self.dir.list()
-        self.last_changed(files)
-        self.format_index(files, add=1)
-
-    def format_index(self, files, add=0, localrefs=0):
-        sec = 0
-        for file in files:
-            try:
-                entry = self.dir.open(file)
-            except NoSuchFile:
-                continue
-            if entry.sec != sec:
-                if sec:
-                    if add:
-                        emit(INDEX_ADDSECTION, sec=sec)
-                    emit(INDEX_ENDSECTION, sec=sec)
-                sec = entry.sec
-                try:
-                    title = SECTION_TITLES[sec]
-                except KeyError:
-                    title = "Untitled"
-                emit(INDEX_SECTION, sec=sec, title=title)
-            if localrefs:
-                emit(LOCAL_ENTRY, entry)
-            else:
-                emit(INDEX_ENTRY, entry)
-            entry.emit_marks()
-        if sec:
-            if add:
-                emit(INDEX_ADDSECTION, sec=sec)
-            emit(INDEX_ENDSECTION, sec=sec)
-
-    def do_recent(self):
-        if not self.ui.days:
-            days = 1
-        else:
-            days = float(self.ui.days)
-        try:
-            cutoff = now - days * 24 * 3600
-        except OverflowError:
-            cutoff = 0
-        list = []
-        for file in self.dir.list():
-            entry = self.dir.open(file)
-            if not entry:
-                continue
-            mtime = entry.getmtime()
-            if mtime >= cutoff:
-                list.append((mtime, file))
-        list.sort()
-        list.reverse()
-        self.prologue(T_RECENT)
-        if days <= 1:
-            period = "%.2g hours" % (days*24)
-        else:
-            period = "%.6g days" % days
-        if not list:
-            emit(NO_RECENT, period=period)
-        elif len(list) == 1:
-            emit(ONE_RECENT, period=period)
-        else:
-            emit(SOME_RECENT, period=period, count=len(list))
-        self.format_all(map(lambda (mtime, file): file, list), headers=0)
-        emit(TAIL_RECENT)
-
-    def do_roulette(self):
-        import random
-        files = self.dir.list()
-        if not files:
-            self.error("No entries.")
-            return
-        file = random.choice(files)
-        self.prologue(T_ROULETTE)
-        emit(ROULETTE)
-        self.dir.show(file)
-
-    def do_help(self):
-        self.prologue(T_HELP)
-        emit(HELP)
-
-    def do_show(self):
-        entry = self.dir.open(self.ui.file)
-        self.prologue(T_SHOW)
-        entry.show()
-
-    def do_add(self):
-        self.prologue(T_ADD)
-        emit(ADD_HEAD)
-        sections = SECTION_TITLES.items()
-        sections.sort()
-        for section, title in sections:
-            emit(ADD_SECTION, section=section, title=title)
-        emit(ADD_TAIL)
-
-    def do_delete(self):
-        self.prologue(T_DELETE)
-        emit(DELETE)
-
-    def do_log(self):
-        entry = self.dir.open(self.ui.file)
-        self.prologue(T_LOG, entry)
-        emit(LOG, entry)
-        self.rlog(interpolate(SH_RLOG, entry), entry)
-
-    def rlog(self, command, entry=None):
-        output = os.popen(command).read()
-        sys.stdout.write('<PRE>')
-        athead = 0
-        lines = output.split('\n')
-        while lines and not lines[-1]:
-            del lines[-1]
-        if lines:
-            line = lines[-1]
-            if line[:1] == '=' and len(line) >= 40 and \
-               line == line[0]*len(line):
-                del lines[-1]
-        headrev = None
-        for line in lines:
-            if entry and athead and line[:9] == 'revision ':
-                rev = line[9:].split()
-                mami = revparse(rev)
-                if not mami:
-                    print line
-                else:
-                    emit(REVISIONLINK, entry, rev=rev, line=line)
-                    if mami[1] > 1:
-                        prev = "%d.%d" % (mami[0], mami[1]-1)
-                        emit(DIFFLINK, entry, prev=prev, rev=rev)
-                    if headrev:
-                        emit(DIFFLINK, entry, prev=rev, rev=headrev)
-                    else:
-                        headrev = rev
-                    print
-                athead = 0
-            else:
-                athead = 0
-                if line[:1] == '-' and len(line) >= 20 and \
-                   line == len(line) * line[0]:
-                    athead = 1
-                    sys.stdout.write('<HR>')
-                else:
-                    print line
-        print '</PRE>'
-
-    def do_revision(self):
-        entry = self.dir.open(self.ui.file)
-        rev = self.ui.rev
-        mami = revparse(rev)
-        if not mami:
-            self.error("Invalid revision number: %r." % (rev,))
-        self.prologue(T_REVISION, entry)
-        self.shell(interpolate(SH_REVISION, entry, rev=rev))
-
-    def do_diff(self):
-        entry = self.dir.open(self.ui.file)
-        prev = self.ui.prev
-        rev = self.ui.rev
-        mami = revparse(rev)
-        if not mami:
-            self.error("Invalid revision number: %r." % (rev,))
-        if prev:
-            if not revparse(prev):
-                self.error("Invalid previous revision number: %r." % (prev,))
-        else:
-            prev = '%d.%d' % (mami[0], mami[1])
-        self.prologue(T_DIFF, entry)
-        self.shell(interpolate(SH_RDIFF, entry, rev=rev, prev=prev))
-
-    def shell(self, command):
-        output = os.popen(command).read()
-        sys.stdout.write('<PRE>')
-        print escape(output)
-        print '</PRE>'
-
-    def do_new(self):
-        entry = self.dir.new(section=int(self.ui.section))
-        entry.version = '*new*'
-        self.prologue(T_EDIT)
-        emit(EDITHEAD)
-        emit(EDITFORM1, entry, editversion=entry.version)
-        emit(EDITFORM2, entry, load_my_cookie())
-        emit(EDITFORM3)
-        entry.show(edit=0)
-
-    def do_edit(self):
-        entry = self.dir.open(self.ui.file)
-        entry.load_version()
-        self.prologue(T_EDIT)
-        emit(EDITHEAD)
-        emit(EDITFORM1, entry, editversion=entry.version)
-        emit(EDITFORM2, entry, load_my_cookie())
-        emit(EDITFORM3)
-        entry.show(edit=0)
-
-    def do_review(self):
-        send_my_cookie(self.ui)
-        if self.ui.editversion == '*new*':
-            sec, num = self.dir.parse(self.ui.file)
-            entry = self.dir.new(section=sec)
-            entry.version = "*new*"
-            if entry.file != self.ui.file:
-                self.error("Commit version conflict!")
-                emit(NEWCONFLICT, self.ui, sec=sec, num=num)
-                return
-        else:
-            entry = self.dir.open(self.ui.file)
-            entry.load_version()
-        # Check that the FAQ entry number didn't change
-        if self.ui.title.split()[:1] != entry.title.split()[:1]:
-            self.error("Don't change the entry number please!")
-            return
-        # Check that the edited version is the current version
-        if entry.version != self.ui.editversion:
-            self.error("Commit version conflict!")
-            emit(VERSIONCONFLICT, entry, self.ui)
-            return
-        commit_ok = ((not PASSWORD
-                      or self.ui.password == PASSWORD)
-                     and self.ui.author
-                     and '@' in self.ui.email
-                     and self.ui.log)
-        if self.ui.commit:
-            if not commit_ok:
-                self.cantcommit()
-            else:
-                self.commit(entry)
-            return
-        self.prologue(T_REVIEW)
-        emit(REVIEWHEAD)
-        entry.body = self.ui.body
-        entry.title = self.ui.title
-        entry.show(edit=0)
-        emit(EDITFORM1, self.ui, entry)
-        if commit_ok:
-            emit(COMMIT)
-        else:
-            emit(NOCOMMIT_HEAD)
-            self.errordetail()
-            emit(NOCOMMIT_TAIL)
-        emit(EDITFORM2, self.ui, entry, load_my_cookie())
-        emit(EDITFORM3)
-
-    def cantcommit(self):
-        self.prologue(T_CANTCOMMIT)
-        print CANTCOMMIT_HEAD
-        self.errordetail()
-        print CANTCOMMIT_TAIL
-
-    def errordetail(self):
-        if PASSWORD and self.ui.password != PASSWORD:
-            emit(NEED_PASSWD)
-        if not self.ui.log:
-            emit(NEED_LOG)
-        if not self.ui.author:
-            emit(NEED_AUTHOR)
-        if not self.ui.email:
-            emit(NEED_EMAIL)
-
-    def commit(self, entry):
-        file = entry.file
-        # Normalize line endings in body
-        if '\r' in self.ui.body:
-            self.ui.body = re.sub('\r\n?', '\n', self.ui.body)
-        # Normalize whitespace in title
-        self.ui.title = ' '.join(self.ui.title.split())
-        # Check that there were any changes
-        if self.ui.body == entry.body and self.ui.title == entry.title:
-            self.error("You didn't make any changes!")
-            return
-
-        # need to lock here because otherwise the file exists and is not writable (on NT)
-        command = interpolate(SH_LOCK, file=file)
-        p = os.popen(command)
-        output = p.read()
-
-        try:
-            os.unlink(file)
-        except os.error:
-            pass
-        try:
-            f = open(file, 'w')
-        except IOError, why:
-            self.error(CANTWRITE, file=file, why=why)
-            return
-        date = time.ctime(now)
-        emit(FILEHEADER, self.ui, os.environ, date=date, _file=f, _quote=0)
-        f.write('\n')
-        f.write(self.ui.body)
-        f.write('\n')
-        f.close()
-
-        import tempfile
-        tf = tempfile.NamedTemporaryFile()
-        emit(LOGHEADER, self.ui, os.environ, date=date, _file=tf)
-        tf.flush()
-        tf.seek(0)
-
-        command = interpolate(SH_CHECKIN, file=file, tfn=tf.name)
-        log("\n\n" + command)
-        p = os.popen(command)
-        output = p.read()
-        sts = p.close()
-        log("output: " + output)
-        log("done: " + str(sts))
-        log("TempFile:\n" + tf.read() + "end")
-
-        if not sts:
-            self.prologue(T_COMMITTED)
-            emit(COMMITTED)
-        else:
-            self.error(T_COMMITFAILED)
-            emit(COMMITFAILED, sts=sts)
-        print '<PRE>%s</PRE>' % escape(output)
-
-        try:
-            os.unlink(tf.name)
-        except os.error:
-            pass
-
-        entry = self.dir.open(file)
-        entry.show()
-
-wiz = FaqWizard()
-wiz.go()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/move-faqwiz.sh b/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/move-faqwiz.sh
deleted file mode 100644
index 7d206c0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/faqwiz/move-faqwiz.sh
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/sh
-#
-# Christian Reis <kiko@async.com.br>
-#
-# Moves 
-# 
-# Example:
-#
-#   blackjesus:~> ./move-faqwiz.sh 2\.1 3\.2
-#   Moving FAQ question 02.001 to 03.002
-
-if [ x$2 = x ]; then
-    echo "Need 2 args: original_version final_version."
-    exit 2
-fi
-
-if [ ! -d data -o ! -d data/RCS ]; then
-    echo "Run this inside the faqwiz data/ directory's parent dir."
-    exit 2
-fi
-
-cut_n_pad() {
-    t=`echo $1 | cut -d. -f $2`
-    export $3=`echo $t | awk "{ tmp = \\$0; l = length(tmp); for (i = 0; i < $2-l+1; i++) { tmp = "0".tmp } print tmp  }"`
-}
-
-cut_n_pad $1 1 prefix1
-cut_n_pad $1 2 suffix1
-cut_n_pad $2 1 prefix2
-cut_n_pad $2 2 suffix2
-if which tempfile >/dev/null; then
-    tmpfile=$(tempfile -d .)
-elif [ -n "$RANDOM" ]; then
-    tmpfile=tmp$RANDOM.tmp
-else
-    tmpfile=tmp$$.tmp
-fi
-file1=faq$prefix1.$suffix1.htp
-file2=faq$prefix2.$suffix2.htp
-
-echo "Moving FAQ question $prefix1.$suffix1 to $prefix2.$suffix2" 
-
-sed -e "s/$1\./$2\./g" data/$file1 > ${tmpfile}1
-sed -e "s/$1\./$2\./g" data/RCS/$file1,v > ${tmpfile}2
-
-if [ -f data/$file2 ]; then
-    echo "Target FAQ exists. Won't clobber."
-    exit 2
-fi
-
-mv ${tmpfile}1 data/$file2
-mv ${tmpfile}2 data/RCS/$file2,v
-mv data/$file1 data/$file1.orig
-mv data/RCS/$file1,v data/RCS/$file1,v.orig
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/README.txt b/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/README.txt
deleted file mode 100644
index a0a7b6a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/README.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-framer is a tool to generate boilerplate code for C extension types.
-
-The boilerplate is generated from a specification object written in
-Python.  The specification uses the class statement to describe the
-extension module and any extension types it contains.  From the
-specification, framer can generate all the boilerplate C code,
-including function definitions, argument handling code, and type
-objects.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/TODO.txt b/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/TODO.txt
deleted file mode 100644
index fc9b53c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/TODO.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Add spec for getsets.
-Generate a distutils setup script.
-Handle operator overloading.
-Generate traverse and clear methods for GC.
-Handle mapping, sequence, buffer protocols.
-Finish the todo list.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/example.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/example.py
deleted file mode 100644
index ccec1d8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/example.py
+++ /dev/null
@@ -1,126 +0,0 @@
-"""Generate the skeleton for cStringIO as an example of framer."""
-
-from framer.bases import Module, Type
-from framer.member import member
-
-class cStringIO(Module):
-    """A simple fast partial StringIO replacement.
-
-    This module provides a simple useful replacement for the StringIO
-    module that is written in C.  It does not provide the full
-    generality of StringIO, but it provides enough for most
-    applications and is especially useful in conjunction with the
-    pickle module.
-
-    Usage:
-
-    from cStringIO import StringIO
-
-    an_output_stream = StringIO()
-    an_output_stream.write(some_stuff)
-    ...
-    value = an_output_stream.getvalue()
-
-    an_input_stream = StringIO(a_string)
-    spam = an_input_stream.readline()
-    spam = an_input_stream.read(5)
-    an_input_stream.seek(0)             # OK, start over
-    spam = an_input_stream.read()       # and read it all
-    """
-
-    __file__ = "cStringIO.c"
-
-    def StringIO(o):
-        """Return a StringIO-like stream for reading or writing"""
-    StringIO.pyarg = "|O"
-
-    class InputType(Type):
-        "Simple type for treating strings as input file streams"
-
-        abbrev = "input"
-
-        struct = """\
-        typedef struct {
-                PyObject_HEAD
-                char *buf;
-                int pos;
-                int size;
-                PyObject *pbuf;
-        } InputObject;
-        """
-
-        def flush(self):
-            """Does nothing"""
-
-        def getvalue(self):
-            """Get the string value.
-
-            If use_pos is specified and is a true value, then the
-            string returned will include only the text up to the
-            current file position.
-            """
-
-        def isatty(self):
-            """Always returns False"""
-
-        def read(self, s):
-            """Return s characters or the rest of the string."""
-        read.pyarg = "|i"
-
-        def readline(self):
-            """Read one line."""
-
-        def readlines(self, hint):
-            """Read all lines."""
-        readlines.pyarg = "|i"
-
-        def reset(self):
-            """Reset the file position to the beginning."""
-
-        def tell(self):
-            """Get the current position."""
-
-        def truncate(self, pos):
-            """Truncate the file at the current position."""
-        truncate.pyarg = "|i"
-
-        def seek(self, position, mode=0):
-            """Set the current position.
-
-            The optional mode argument can be 0 for absolute, 1 for relative,
-            and 2 for relative to EOF.  The default is absolute.
-            """
-        seek.pyarg = "i|i"
-
-        def close(self):
-            pass
-
-    class OutputType(InputType):
-        "Simple type for output strings."
-
-        abbrev = "output"
-
-        struct = """\
-        typedef struct {
-                PyObject_HEAD
-                char *buf;
-                int pos;
-                int size;
-                int softspace;
-        } OutputObject;
-        """
-
-        softspace = member()
-
-        def close(self):
-            """Explicitly release resources."""
-
-        def write(self, s):
-            """Write a string to the file."""
-            # XXX Hack: writing None resets the buffer
-
-        def writelines(self, lines):
-            """Write each string in lines."""
-
-
-cStringIO.gen()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/__init__.py
deleted file mode 100644
index f28fd61..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/__init__.py
+++ /dev/null
@@ -1,6 +0,0 @@
-"""A tool to generate basic framework for C extension types.
-
-The basic ideas is the same as modulator, but the code generates code
-using many of the new features introduced in Python 2.2.  It also
-takes a more declarative approach to generating code.
-"""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/bases.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/bases.py
deleted file mode 100644
index 5fd09c7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/bases.py
+++ /dev/null
@@ -1,220 +0,0 @@
-"""Provides the Module and Type base classes that user code inherits from."""
-
-__all__ = ["Module", "Type", "member"]
-
-from framer import struct, template
-from framer.function import Function, Method
-from framer.member import member
-from framer.slots import *
-from framer.util import cstring, unindent
-
-from types import FunctionType
-
-def sortitems(dict):
-    L = dict.items()
-    L.sort()
-    return L
-
-# The Module and Type classes are implemented using metaclasses,
-# because most of the methods are class methods.  It is easier to use
-# metaclasses than the cumbersome classmethod() builtin.  They have
-# class methods because they are exposed to user code as base classes.
-
-class BaseMetaclass(type):
-    """Shared infrastructure for generating modules and types."""
-
-    # just methoddef so far
-
-    def dump_methoddef(self, f, functions, vars):
-        def p(templ, vars=vars): # helper function to generate output
-            print >> f, templ % vars
-
-        if not functions:
-            return
-        p(template.methoddef_start)
-        for name, func in sortitems(functions):
-            if func.__doc__:
-                p(template.methoddef_def_doc, func.vars)
-            else:
-                p(template.methoddef_def, func.vars)
-        p(template.methoddef_end)
-
-class ModuleMetaclass(BaseMetaclass):
-    """Provides methods for Module class."""
-
-    def gen(self):
-        self.analyze()
-        self.initvars()
-        f = open(self.__filename, "w")
-        self.dump(f)
-        f.close()
-
-    def analyze(self):
-        self.name = getattr(self, "abbrev", self.__name__)
-        self.__functions = {}
-        self.__types = {}
-        self.__members = False
-
-        for name, obj in self.__dict__.iteritems():
-            if isinstance(obj, FunctionType):
-                self.__functions[name] = Function(obj, self)
-            elif isinstance(obj, TypeMetaclass):
-                obj._TypeMetaclass__module = self.name
-                obj.analyze()
-                self.__types[name] = obj
-                if obj.has_members():
-                    self.__members = True
-
-    def initvars(self):
-        v = self.__vars = {}
-        filename = getattr(self, "__file__", None)
-        if filename is None:
-            filename = self.__name__ + "module.c"
-        self.__filename = v["FileName"] = filename
-        name = v["ModuleName"] = self.__name__
-        v["MethodDefName"] = "%s_methods" % name
-        v["ModuleDocstring"] = cstring(unindent(self.__doc__))
-
-    def dump(self, f):
-        def p(templ, vars=self.__vars): # helper function to generate output
-            print >> f, templ % vars
-
-        p(template.module_start)
-        if self.__members:
-            p(template.member_include)
-        print >> f
-
-        if self.__doc__:
-            p(template.module_doc)
-
-        for name, type in sortitems(self.__types):
-            type.dump(f)
-
-        for name, func  in sortitems(self.__functions):
-            func.dump(f)
-
-        self.dump_methoddef(f, self.__functions, self.__vars)
-
-        p(template.module_init_start)
-        for name, type in sortitems(self.__types):
-            type.dump_init(f)
-
-        p("}")
-
-class Module:
-    __metaclass__ = ModuleMetaclass
-
-class TypeMetaclass(BaseMetaclass):
-
-    def dump(self, f):
-        self.initvars()
-
-        # defined after initvars() so that __vars is defined
-        def p(templ, vars=self.__vars):
-            print >> f, templ % vars
-
-        if self.struct is not None:
-            print >> f, unindent(self.struct, False)
-
-        if self.__doc__:
-            p(template.docstring)
-
-        for name, func in sortitems(self.__methods):
-            func.dump(f)
-
-        self.dump_methoddef(f, self.__methods, self.__vars)
-        self.dump_memberdef(f)
-        self.dump_slots(f)
-
-    def has_members(self):
-        if self.__members:
-            return True
-        else:
-            return False
-
-    def analyze(self):
-        # called by ModuleMetaclass analyze()
-        self.name = getattr(self, "abbrev", self.__name__)
-        src = getattr(self, "struct", None)
-        if src is not None:
-            self.__struct = struct.parse(src)
-        else:
-            self.__struct = None
-        self.__methods = {}
-        self.__members = {}
-        for cls in self.__mro__:
-            for k, v in cls.__dict__.iteritems():
-                if isinstance(v, FunctionType):
-                    self.__methods[k] = Method(v, self)
-                if isinstance(v, member):
-                    self.__members[k] = v
-                    assert self.__struct is not None
-                    v.register(k, self.__struct)
-        self.analyze_slots()
-
-    def analyze_slots(self):
-        self.__slots = {}
-        for s in Slots:
-            if s.special is not None:
-                meth = self.__methods.get(s.special)
-                if meth is not None:
-                    self.__slots[s] = meth
-        self.__slots[TP_NAME] = '"%s.%s"' % (self.__module, self.__name__)
-        if self.__doc__:
-            self.__slots[TP_DOC] = "%s_doc" % self.name
-        if self.__struct is not None:
-            self.__slots[TP_BASICSIZE] = "sizeof(%s)" % self.__struct.name
-            self.__slots[TP_DEALLOC] = "%s_dealloc" % self.name
-        if self.__methods:
-            self.__slots[TP_METHODS] = "%s_methods" % self.name
-        if self.__members:
-            self.__slots[TP_MEMBERS] = "%s_members" % self.name
-
-    def initvars(self):
-        v = self.__vars = {}
-        v["TypeName"] = self.__name__
-        v["CTypeName"] = "Py%s_Type" % self.__name__
-        v["MethodDefName"] = self.__slots[TP_METHODS]
-        if self.__doc__:
-            v["DocstringVar"] = self.__slots[TP_DOC]
-            v["Docstring"] = cstring(unindent(self.__doc__))
-        if self.__struct is not None:
-            v["StructName"] = self.__struct.name
-        if self.__members:
-            v["MemberDefName"] = self.__slots[TP_MEMBERS]
-
-    def dump_memberdef(self, f):
-        def p(templ, vars=self.__vars):
-            print >> f, templ % vars
-
-        if not self.__members:
-            return
-        p(template.memberdef_start)
-        for name, slot in sortitems(self.__members):
-            slot.dump(f)
-        p(template.memberdef_end)
-
-    def dump_slots(self, f):
-        def p(templ, vars=self.__vars):
-            print >> f, templ % vars
-
-        if self.struct:
-            p(template.dealloc_func, {"name" : self.__slots[TP_DEALLOC]})
-
-        p(template.type_struct_start)
-        for s in Slots[:-5]: # XXX
-            val = self.__slots.get(s, s.default)
-            ntabs = 4 - (4 + len(val)) / 8
-            line = "        %s,%s/* %s */" % (val, "\t" * ntabs, s.name)
-            print >> f, line
-        p(template.type_struct_end)
-
-    def dump_init(self, f):
-        def p(templ):
-            print >> f, templ % self.__vars
-
-        p(template.type_init_type)
-        p(template.module_add_type)
-
-class Type:
-    __metaclass__ = TypeMetaclass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/function.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/function.py
deleted file mode 100644
index 4fe481c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/function.py
+++ /dev/null
@@ -1,173 +0,0 @@
-"""Functions."""
-
-from framer import template
-from framer.util import cstring, unindent
-
-METH_O = "METH_O"
-METH_NOARGS = "METH_NOARGS"
-METH_VARARGS = "METH_VARARGS"
-
-def parsefmt(fmt):
-    for c in fmt:
-        if c == '|':
-            continue
-        yield c
-
-class Argument:
-
-    def __init__(self, name):
-        self.name = name
-        self.ctype = "PyObject *"
-        self.default = None
-
-    def __str__(self):
-        return "%s%s" % (self.ctype, self.name)
-
-    def setfmt(self, code):
-        self.ctype = self._codes[code]
-        if self.ctype[-1] != "*":
-            self.ctype += " "
-
-    _codes = {"O": "PyObject *",
-              "i": "int",
-              }
-
-    def decl(self):
-        if self.default is None:
-            return str(self) + ";"
-        else:
-            return "%s = %s;" % (self, self.default)
-
-class _ArgumentList(object):
-
-    # these instance variables should be initialized by subclasses
-    ml_meth = None
-    fmt = None
-
-    def __init__(self, args):
-        self.args = map(Argument, args)
-
-    def __len__(self):
-        return len(self.args)
-
-    def __getitem__(self, i):
-        return self.args[i]
-
-    def dump_decls(self, f):
-        pass
-
-class NoArgs(_ArgumentList):
-
-    def __init__(self, args):
-        assert len(args) == 0
-        super(NoArgs, self).__init__(args)
-        self.ml_meth = METH_NOARGS
-
-    def c_args(self):
-        return "PyObject *self"
-
-class OneArg(_ArgumentList):
-
-    def __init__(self, args):
-        assert len(args) == 1
-        super(OneArg, self).__init__(args)
-        self.ml_meth = METH_O
-
-    def c_args(self):
-        return "PyObject *self, %s" % self.args[0]
-
-class VarArgs(_ArgumentList):
-
-    def __init__(self, args, fmt=None):
-        super(VarArgs, self).__init__(args)
-        self.ml_meth = METH_VARARGS
-        if fmt is not None:
-            self.fmt = fmt
-            i = 0
-            for code in parsefmt(fmt):
-                self.args[i].setfmt(code)
-                i += 1
-
-    def c_args(self):
-        return "PyObject *self, PyObject *args"
-
-    def targets(self):
-        return ", ".join(["&%s" % a.name for a in self.args])
-
-    def dump_decls(self, f):
-        for a in self.args:
-            print >> f, "        %s" % a.decl()
-
-def ArgumentList(func, method):
-    code = func.func_code
-    args = code.co_varnames[:code.co_argcount]
-    if method:
-        args = args[1:]
-    pyarg = getattr(func, "pyarg", None)
-    if pyarg is not None:
-        args = VarArgs(args, pyarg)
-        if func.func_defaults:
-            L = list(func.func_defaults)
-            ndefault = len(L)
-            i = len(args) - ndefault
-            while L:
-                args[i].default = L.pop(0)
-        return args
-    else:
-        if len(args) == 0:
-            return NoArgs(args)
-        elif len(args) == 1:
-            return OneArg(args)
-        else:
-            return VarArgs(args)
-
-class Function:
-
-    method = False
-
-    def __init__(self, func, parent):
-        self._func = func
-        self._parent = parent
-        self.analyze()
-        self.initvars()
-
-    def dump(self, f):
-        def p(templ, vars=None): # helper function to generate output
-            if vars is None:
-                vars = self.vars
-            print >> f, templ % vars
-
-        if self.__doc__:
-            p(template.docstring)
-
-        d = {"name" : self.vars["CName"],
-             "args" : self.args.c_args(),
-             }
-        p(template.funcdef_start, d)
-
-        self.args.dump_decls(f)
-
-        if self.args.ml_meth == METH_VARARGS:
-            p(template.varargs)
-
-        p(template.funcdef_end)
-
-    def analyze(self):
-        self.__doc__ = self._func.__doc__
-        self.args = ArgumentList(self._func, self.method)
-
-    def initvars(self):
-        v = self.vars = {}
-        v["PythonName"] = self._func.__name__
-        s = v["CName"] = "%s_%s" % (self._parent.name, self._func.__name__)
-        v["DocstringVar"] = s + "_doc"
-        v["MethType"] = self.args.ml_meth
-        if self.__doc__:
-            v["Docstring"] = cstring(unindent(self.__doc__))
-        if self.args.fmt is not None:
-            v["ArgParse"] = self.args.fmt
-            v["ArgTargets"] = self.args.targets()
-
-class Method(Function):
-
-    method = True
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/member.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/member.py
deleted file mode 100644
index 05208fa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/member.py
+++ /dev/null
@@ -1,73 +0,0 @@
-from framer import template
-from framer.util import cstring, unindent
-
-T_SHORT = "T_SHORT"
-T_INT = "T_INT"
-T_LONG = "T_LONG"
-T_FLOAT = "T_FLOAT"
-T_DOUBLE = "T_DOUBLE"
-T_STRING = "T_STRING"
-T_OBJECT = "T_OBJECT"
-T_CHAR = "T_CHAR"
-T_BYTE = "T_BYTE"
-T_UBYTE = "T_UBYTE"
-T_UINT = "T_UINT"
-T_ULONG = "T_ULONG"
-T_STRING_INPLACE = "T_STRING_INPLACE"
-T_OBJECT_EX = "T_OBJECT_EX"
-
-RO = READONLY = "READONLY"
-READ_RESTRICTED = "READ_RESTRICTED"
-WRITE_RESTRICTED = "WRITE_RESTRICTED"
-RESTRICT = "RESTRICTED"
-
-c2t = {"int" : T_INT,
-       "unsigned int" : T_UINT,
-       "long" : T_LONG,
-       "unsigned long" : T_LONG,
-       "float" : T_FLOAT,
-       "double" : T_DOUBLE,
-       "char *" : T_CHAR,
-       "PyObject *" : T_OBJECT,
-       }
-
-class member(object):
-
-    def __init__(self, cname=None, type=None, flags=None, doc=None):
-        self.type = type
-        self.flags = flags
-        self.cname = cname
-        self.doc = doc
-        self.name = None
-        self.struct = None
-
-    def register(self, name, struct):
-        self.name = name
-        self.struct = struct
-        self.initvars()
-
-    def initvars(self):
-        v = self.vars = {}
-        v["PythonName"] = self.name
-        if self.cname is not None:
-            v["CName"] = self.cname
-        else:
-            v["CName"] = self.name
-        v["Flags"] = self.flags or "0"
-        v["Type"] = self.get_type()
-        if self.doc is not None:
-            v["Docstring"] = cstring(unindent(self.doc))
-        v["StructName"] = self.struct.name
-
-    def get_type(self):
-        """Deduce type code from struct specification if not defined"""
-        if self.type is not None:
-            return self.type
-        ctype = self.struct.get_type(self.name)
-        return c2t[ctype]
-
-    def dump(self, f):
-        if self.doc is None:
-            print >> f, template.memberdef_def % self.vars
-        else:
-            print >> f, template.memberdef_def_doc % self.vars
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/slots.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/slots.py
deleted file mode 100644
index 3fd3496..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/slots.py
+++ /dev/null
@@ -1,64 +0,0 @@
-"""Descriptions of all the slots in Python's type objects."""
-
-class Slot(object):
-    def __init__(self, name, cast=None, special=None, default="0"):
-        self.name = name
-        self.cast = cast
-        self.special = special
-        self.default = default
-
-Slots = (Slot("ob_size"),
-         Slot("tp_name"),
-         Slot("tp_basicsize"),
-         Slot("tp_itemsize"),
-         Slot("tp_dealloc", "destructor"),
-         Slot("tp_print", "printfunc"),
-         Slot("tp_getattr", "getattrfunc"),
-         Slot("tp_setattr", "setattrfunc"),
-         Slot("tp_compare", "cmpfunc", "__cmp__"),
-         Slot("tp_repr", "reprfunc", "__repr__"),
-         Slot("tp_as_number"),
-         Slot("tp_as_sequence"),
-         Slot("tp_as_mapping"),
-         Slot("tp_hash", "hashfunc", "__hash__"),
-         Slot("tp_call", "ternaryfunc", "__call__"),
-         Slot("tp_str", "reprfunc", "__str__"),
-         Slot("tp_getattro", "getattrofunc", "__getattr__", # XXX
-              "PyObject_GenericGetAttr"),
-         Slot("tp_setattro", "setattrofunc", "__setattr__"),
-         Slot("tp_as_buffer"),
-         Slot("tp_flags", default="Py_TPFLAGS_DEFAULT"),
-         Slot("tp_doc"),
-         Slot("tp_traverse", "traverseprox"),
-         Slot("tp_clear", "inquiry"),
-         Slot("tp_richcompare", "richcmpfunc"),
-         Slot("tp_weaklistoffset"),
-         Slot("tp_iter", "getiterfunc", "__iter__"),
-         Slot("tp_iternext", "iternextfunc", "__next__"), # XXX
-         Slot("tp_methods"),
-         Slot("tp_members"),
-         Slot("tp_getset"),
-         Slot("tp_base"),
-         Slot("tp_dict"),
-         Slot("tp_descr_get", "descrgetfunc"),
-         Slot("tp_descr_set", "descrsetfunc"),
-         Slot("tp_dictoffset"),
-         Slot("tp_init", "initproc", "__init__"),
-         Slot("tp_alloc", "allocfunc"),
-         Slot("tp_new", "newfunc"),
-         Slot("tp_free", "freefunc"),
-         Slot("tp_is_gc", "inquiry"),
-         Slot("tp_bases"),
-         Slot("tp_mro"),
-         Slot("tp_cache"),
-         Slot("tp_subclasses"),
-         Slot("tp_weaklist"),
-         )
-
-# give some slots symbolic names
-TP_NAME = Slots[1]
-TP_BASICSIZE = Slots[2]
-TP_DEALLOC = Slots[4]
-TP_DOC = Slots[20]
-TP_METHODS = Slots[27]
-TP_MEMBERS = Slots[28]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/struct.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/struct.py
deleted file mode 100644
index d58244f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/struct.py
+++ /dev/null
@@ -1,52 +0,0 @@
-"""Rudimentary parser for C struct definitions."""
-
-import re
-
-PyObject_HEAD = "PyObject_HEAD"
-PyObject_VAR_HEAD = "PyObject_VAR_HEAD"
-
-rx_name = re.compile("} (\w+);")
-
-class Struct:
-    def __init__(self, name, head, members):
-        self.name = name
-        self.head = head
-        self.members = members
-
-    def get_type(self, name):
-        for _name, type in self.members:
-            if name == _name:
-                return type
-        raise ValueError, "no member named %s" % name
-
-def parse(s):
-    """Parse a C struct definition.
-
-    The parser is very restricted in what it will accept.
-    """
-
-    lines = filter(None, s.split("\n")) # get non-empty lines
-    assert lines[0].strip() == "typedef struct {"
-    pyhead = lines[1].strip()
-    assert (pyhead.startswith("PyObject") and
-            pyhead.endswith("HEAD"))
-    members = []
-    for line in lines[2:]:
-        line = line.strip()
-        if line.startswith("}"):
-            break
-
-        assert line.endswith(";")
-        line = line[:-1]
-        words = line.split()
-        name = words[-1]
-        type = " ".join(words[:-1])
-        if name[0] == "*":
-            name = name[1:]
-            type += " *"
-        members.append((name, type))
-    name = None
-    mo = rx_name.search(line)
-    assert mo is not None
-    name = mo.group(1)
-    return Struct(name, pyhead, members)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/structparse.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/structparse.py
deleted file mode 100644
index b81a273..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/structparse.py
+++ /dev/null
@@ -1,46 +0,0 @@
-"""Rudimentary parser for C struct definitions."""
-
-import re
-
-PyObject_HEAD = "PyObject_HEAD"
-PyObject_VAR_HEAD = "PyObject_VAR_HEAD"
-
-rx_name = re.compile("} (\w+);")
-
-class Struct:
-    def __init__(self, name, head, members):
-        self.name = name
-        self.head = head
-        self.members = members
-
-def parse(s):
-    """Parse a C struct definition.
-
-    The parser is very restricted in what it will accept.
-    """
-
-    lines = filter(None, s.split("\n")) # get non-empty lines
-    assert lines[0].strip() == "typedef struct {"
-    pyhead = lines[1].strip()
-    assert (pyhead.startswith("PyObject") and
-            pyhead.endswith("HEAD"))
-    members = []
-    for line in lines[2:]:
-        line = line.strip()
-        if line.startswith("}"):
-            break
-
-        assert line.endswith(";")
-        line = line[:-1]
-        words = line.split()
-        name = words[-1]
-        type = " ".join(words[:-1])
-        if name[0] == "*":
-            name = name[1:]
-            type += " *"
-        members.append((name, type))
-    name = None
-    mo = rx_name.search(line)
-    assert mo is not None
-    name = mo.group(1)
-    return Struct(name, pyhead, members)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/template.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/template.py
deleted file mode 100644
index cad8f40..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/template.py
+++ /dev/null
@@ -1,102 +0,0 @@
-"""framer's C code templates.
-
-Templates use the following variables:
-
-FileName: name of the file that contains the C source code
-ModuleName: name of the module, as in "import ModuleName"
-ModuleDocstring: C string containing the module doc string
-"""
-
-module_start = '#include "Python.h"'
-member_include = '#include "structmember.h"'
-
-module_doc = """\
-PyDoc_STRVAR(%(ModuleName)s_doc,
-%(ModuleDocstring)s);
-"""
-
-methoddef_start = """\
-static struct PyMethodDef %(MethodDefName)s[] = {"""
-
-methoddef_def = """\
-        {"%(PythonName)s", (PyCFunction)%(CName)s, %(MethType)s},"""
-
-methoddef_def_doc = """\
-        {"%(PythonName)s", (PyCFunction)%(CName)s, %(MethType)s,
-         %(DocstringVar)s},"""
-
-methoddef_end = """\
-        {NULL, NULL}
-};
-"""
-
-memberdef_start = """\
-#define OFF(X) offsetof(%(StructName)s, X)
-
-static struct PyMemberDef %(MemberDefName)s[] = {"""
-
-memberdef_def_doc = """\
-        {"%(PythonName)s", %(Type)s, OFF(%(CName)s), %(Flags)s,
-         %(Docstring)s},"""
-
-memberdef_def = """\
-        {"%(PythonName)s", %(Type)s, OFF(%(CName)s), %(Flags)s},"""
-
-memberdef_end = """\
-        {NULL}
-};
-
-#undef OFF
-"""
-
-dealloc_func = """static void
-%(name)s(PyObject *ob)
-{
-}
-"""
-
-docstring = """\
-PyDoc_STRVAR(%(DocstringVar)s,
-%(Docstring)s);
-"""
-
-funcdef_start = """\
-static PyObject *
-%(name)s(%(args)s)
-{"""
-
-funcdef_end = """\
-}
-"""
-
-varargs = """\
-        if (!PyArg_ParseTuple(args, \"%(ArgParse)s:%(PythonName)s\",
-                              %(ArgTargets)s))
-                return NULL;"""
-
-module_init_start = """\
-PyMODINIT_FUNC
-init%(ModuleName)s(void)
-{
-        PyObject *mod;
-
-        mod = Py_InitModule3("%(ModuleName)s", %(MethodDefName)s,
-                             %(ModuleName)s_doc);
-        if (mod == NULL)
-                return;
-"""
-
-type_init_type = "        %(CTypeName)s.ob_type = &PyType_Type;"
-module_add_type = """\
-        if (!PyObject_SetAttrString(mod, "%(TypeName)s",
-                                    (PyObject *)&%(CTypeName)s))
-                return;
-"""
-
-type_struct_start = """\
-static PyTypeObject %(CTypeName)s = {
-        PyObject_HEAD_INIT(0)"""
-
-type_struct_end = """\
-};
-"""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/util.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/util.py
deleted file mode 100644
index 16077d0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/framer/framer/util.py
+++ /dev/null
@@ -1,35 +0,0 @@
-def cstring(s, width=70):
-    """Return C string representation of a Python string.
-
-    width specifies the maximum width of any line of the C string.
-    """
-    L = []
-    for l in s.split("\n"):
-        if len(l) < width:
-            L.append(r'"%s\n"' % l)
-
-    return "\n".join(L)
-
-def unindent(s, skipfirst=True):
-    """Return an unindented version of a docstring.
-
-    Removes indentation on lines following the first one, using the
-    leading whitespace of the first indented line that is not blank
-    to determine the indentation.
-    """
-
-    lines = s.split("\n")
-    if skipfirst:
-        first = lines.pop(0)
-        L = [first]
-    else:
-        L = []
-    indent = None
-    for l in lines:
-        ls = l.strip()
-        if ls:
-            indent = len(l) - len(ls)
-            break
-    L += [l[indent:] for l in lines]
-
-    return "\n".join(L)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/README b/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/README
deleted file mode 100644
index b309335..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/README
+++ /dev/null
@@ -1,296 +0,0 @@
-THE FREEZE SCRIPT
-=================
-
-(Directions for Windows are at the end of this file.)
-
-
-What is Freeze?
----------------
-
-Freeze make it possible to ship arbitrary Python programs to people
-who don't have Python.  The shipped file (called a "frozen" version of
-your Python program) is an executable, so this only works if your
-platform is compatible with that on the receiving end (this is usually
-a matter of having the same major operating system revision and CPU
-type).
-
-The shipped file contains a Python interpreter and large portions of
-the Python run-time.  Some measures have been taken to avoid linking
-unneeded modules, but the resulting binary is usually not small.
-
-The Python source code of your program (and of the library modules
-written in Python that it uses) is not included in the binary --
-instead, the compiled byte-code (the instruction stream used
-internally by the interpreter) is incorporated.  This gives some
-protection of your Python source code, though not much -- a
-disassembler for Python byte-code is available in the standard Python
-library.  At least someone running "strings" on your binary won't see
-the source.
-
-
-How does Freeze know which modules to include?
-----------------------------------------------
-
-Previous versions of Freeze used a pretty simple-minded algorithm to
-find the modules that your program uses, essentially searching for
-lines starting with the word "import".  It was pretty easy to trick it
-into making mistakes, either missing valid import statements, or
-mistaking string literals (e.g. doc strings) for import statements.
-
-This has been remedied: Freeze now uses the regular Python parser to
-parse the program (and all its modules) and scans the generated byte
-code for IMPORT instructions.  It may still be confused -- it will not
-know about calls to the __import__ built-in function, or about import
-statements constructed on the fly and executed using the 'exec'
-statement, and it will consider import statements even when they are
-unreachable (e.g. "if 0: import foobar").
-
-This new version of Freeze also knows about Python's new package
-import mechanism, and uses exactly the same rules to find imported
-modules and packages.  One exception: if you write 'from package
-import *', Python will look into the __all__ variable of the package
-to determine which modules are to be imported, while Freeze will do a
-directory listing.
-
-One tricky issue: Freeze assumes that the Python interpreter and
-environment you're using to run Freeze is the same one that would be
-used to run your program, which should also be the same whose sources
-and installed files you will learn about in the next section.  In
-particular, your PYTHONPATH setting should be the same as for running
-your program locally.  (Tip: if the program doesn't run when you type
-"python hello.py" there's little chance of getting the frozen version
-to run.)
-
-
-How do I use Freeze?
---------------------
-
-Normally, you should be able to use it as follows:
-
-	python freeze.py hello.py
-
-where hello.py is your program and freeze.py is the main file of
-Freeze (in actuality, you'll probably specify an absolute pathname
-such as /usr/joe/python/Tools/freeze/freeze.py).
-
-
-What do I do next?
-------------------
-
-Freeze creates a number of files: frozen.c, config.c and Makefile,
-plus one file for each Python module that gets included named
-M_<module>.c.  To produce the frozen version of your program, you can
-simply type "make".  This should produce a binary file.  If the
-filename argument to Freeze was "hello.py", the binary will be called
-"hello".
-
-Note: you can use the -o option to freeze to specify an alternative
-directory where these files are created. This makes it easier to
-clean up after you've shipped the frozen binary.  You should invoke
-"make" in the given directory.
-
-
-Freezing Tkinter programs
--------------------------
-
-Unfortunately, it is currently not possible to freeze programs that
-use Tkinter without a Tcl/Tk installation. The best way to ship a
-frozen Tkinter program is to decide in advance where you are going
-to place the Tcl and Tk library files in the distributed setup, and
-then declare these directories in your frozen Python program using
-the TCL_LIBRARY, TK_LIBRARY and TIX_LIBRARY environment variables.
-
-For example, assume you will ship your frozen program in the directory 
-<root>/bin/windows-x86 and will place your Tcl library files 
-in <root>/lib/tcl8.2 and your Tk library files in <root>/lib/tk8.2. Then
-placing the following lines in your frozen Python script before importing
-Tkinter or Tix would set the environment correctly for Tcl/Tk/Tix:
-
-import os
-import os.path
-RootDir = os.path.dirname(os.path.dirname(os.getcwd()))
-
-import sys
-if sys.platform == "win32":
-   sys.path = ['', '..\\..\\lib\\python-2.0']
-   os.environ['TCL_LIBRARY'] = RootDir + '\\lib\\tcl8.2'
-   os.environ['TK_LIBRARY'] = RootDir + '\\lib\\tk8.2'
-   os.environ['TIX_LIBRARY'] = RootDir + '\\lib\\tix8.1'
-elif sys.platform == "linux2":
-   sys.path = ['', '../../lib/python-2.0']
-   os.environ['TCL_LIBRARY'] = RootDir + '/lib/tcl8.2'
-   os.environ['TK_LIBRARY'] = RootDir + '/lib/tk8.2'
-   os.environ['TIX_LIBRARY'] = RootDir + '/lib/tix8.1'
-elif sys.platform == "solaris":
-   sys.path = ['', '../../lib/python-2.0']
-   os.environ['TCL_LIBRARY'] = RootDir + '/lib/tcl8.2'
-   os.environ['TK_LIBRARY'] = RootDir + '/lib/tk8.2'
-   os.environ['TIX_LIBRARY'] = RootDir + '/lib/tix8.1'
-
-This also adds <root>/lib/python-2.0 to your Python path
-for any Python files such as _tkinter.pyd you may need.
-
-Note that the dynamic libraries (such as tcl82.dll tk82.dll python20.dll
-under Windows, or libtcl8.2.so and libtcl8.2.so under Unix) are required
-at program load time, and are searched by the operating system loader
-before Python can be started. Under Windows, the environment
-variable PATH is consulted, and under Unix, it may be the
-environment variable LD_LIBRARY_PATH and/or the system
-shared library cache (ld.so). An additional preferred directory for
-finding the dynamic libraries is built into the .dll or .so files at
-compile time - see the LIB_RUNTIME_DIR variable in the Tcl makefile. 
-The OS must find the dynamic libraries or your frozen program won't start. 
-Usually I make sure that the .so or .dll files are in the same directory
-as the executable, but this may not be foolproof.
-
-A workaround to installing your Tcl library files with your frozen
-executable would be possible, in which the Tcl/Tk library files are
-incorporated in a frozen Python module as string literals and written
-to a temporary location when the program runs; this is currently left
-as an exercise for the reader.  An easier approach is to freeze the
-Tcl/Tk/Tix code into the dynamic libraries using the Tcl ET code,
-or the Tix Stand-Alone-Module code. Of course, you can also simply 
-require that Tcl/Tk is required on the target installation, but be 
-careful that the version corresponds.
-
-There are some caveats using frozen Tkinter applications:
-	Under Windows if you use the -s windows option, writing
-to stdout or stderr is an error.
-	The Tcl [info nameofexecutable] will be set to where the
-program was frozen, not where it is run from.
-	The global variables argc and argv do not exist.
-
-
-A warning about shared library modules
---------------------------------------
-
-When your Python installation uses shared library modules such as 
-_tkinter.pyd, these will not be incorporated in the frozen program.
- Again, the frozen program will work when you test it, but it won't
- work when you ship it to a site without a Python installation.
-
-Freeze prints a warning when this is the case at the end of the
-freezing process:
-
-	Warning: unknown modules remain: ...
-
-When this occurs, the best thing to do is usually to rebuild Python
-using static linking only. Or use the approach described in the previous
-section to declare a library path using sys.path, and place the modules
-such as _tkinter.pyd there.
-
-
-Troubleshooting
----------------
-
-If you have trouble using Freeze for a large program, it's probably
-best to start playing with a really simple program first (like the file
-hello.py).  If you can't get that to work there's something
-fundamentally wrong -- perhaps you haven't installed Python.  To do a
-proper install, you should do "make install" in the Python root
-directory.
-
-
-Usage under Windows 95 or NT
-----------------------------
-
-Under Windows 95 or NT, you *must* use the -p option and point it to
-the top of the Python source tree.
-
-WARNING: the resulting executable is not self-contained; it requires
-the Python DLL, currently PYTHON20.DLL (it does not require the
-standard library of .py files though).  It may also require one or
-more extension modules loaded from .DLL or .PYD files; the module
-names are printed in the warning message about remaining unknown
-modules.
-
-The driver script generates a Makefile that works with the Microsoft
-command line C compiler (CL).  To compile, run "nmake"; this will
-build a target "hello.exe" if the source was "hello.py".  Only the
-files frozenmain.c and frozen.c are used; no config.c is generated or
-used, since the standard DLL is used.
-
-In order for this to work, you must have built Python using the VC++
-(Developer Studio) 5.0 compiler.  The provided project builds
-python20.lib in the subdirectory pcbuild\Release of thje Python source
-tree, and this is where the generated Makefile expects it to be.  If
-this is not the case, you can edit the Makefile or (probably better)
-winmakemakefile.py (e.g., if you are using the 4.2 compiler, the
-python20.lib file is generated in the subdirectory vc40 of the Python
-source tree).
-
-It is possible to create frozen programs that don't have a console
-window, by specifying the option '-s windows'. See the Usage below.
-
-Usage
------
-
-Here is a list of all of the options (taken from freeze.__doc__):
-
-usage: freeze [options...] script [module]...
-
-Options:
--p prefix:    This is the prefix used when you ran ``make install''
-              in the Python build directory.
-              (If you never ran this, freeze won't work.)
-              The default is whatever sys.prefix evaluates to.
-              It can also be the top directory of the Python source
-              tree; then -P must point to the build tree.
-
--P exec_prefix: Like -p but this is the 'exec_prefix', used to
-                install objects etc.  The default is whatever sys.exec_prefix
-                evaluates to, or the -p argument if given.
-                If -p points to the Python source tree, -P must point
-                to the build tree, if different.
-
--e extension: A directory containing additional .o files that
-              may be used to resolve modules.  This directory
-              should also have a Setup file describing the .o files.
-              On Windows, the name of a .INI file describing one
-              or more extensions is passed.
-              More than one -e option may be given.
-
--o dir:       Directory where the output files are created; default '.'.
-
--m:           Additional arguments are module names instead of filenames.
-
--a package=dir: Additional directories to be added to the package's
-                __path__.  Used to simulate directories added by the
-                package at runtime (eg, by OpenGL and win32com).
-                More than one -a option may be given for each package.
-
--l file:      Pass the file to the linker (windows only)
-
--d:           Debugging mode for the module finder.
-
--q:           Make the module finder totally quiet.
-
--h:           Print this help message.
-
--x module     Exclude the specified module.
-
--i filename:  Include a file with additional command line options.  Used
-              to prevent command lines growing beyond the capabilities of
-              the shell/OS.  All arguments specified in filename
-              are read and the -i option replaced with the parsed
-              params (note - quoting args in this file is NOT supported)
-
--s subsystem: Specify the subsystem (For Windows only.); 
-              'console' (default), 'windows', 'service' or 'com_dll'
-              
--w:           Toggle Windows (NT or 95) behavior.
-              (For debugging only -- on a win32 platform, win32 behavior
-              is automatic.)
-
-Arguments:
-
-script:       The Python script to be executed by the resulting binary.
-
-module ...:   Additional Python modules (referenced by pathname)
-              that will be included in the resulting binary.  These
-              may be .py or .pyc files.  If -m is specified, these are
-              module names that are search in the path instead.
-
-
-
---Guido van Rossum (home page: http://www.python.org/~guido/)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/bkfile.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/bkfile.py
deleted file mode 100644
index ae58408..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/bkfile.py
+++ /dev/null
@@ -1,47 +0,0 @@
-_orig_open = open
-
-class _BkFile:
-    def __init__(self, file, mode, bufsize):
-        import os
-        self.__filename = file
-        self.__backup = file + '~'
-        try:
-            os.unlink(self.__backup)
-        except os.error:
-            pass
-        try:
-            os.rename(file, self.__backup)
-        except os.error:
-            self.__backup = None
-        self.__file = _orig_open(file, mode, bufsize)
-        self.closed = self.__file.closed
-        self.fileno = self.__file.fileno
-        self.flush = self.__file.flush
-        self.isatty = self.__file.isatty
-        self.mode = self.__file.mode
-        self.name = self.__file.name
-        self.read = self.__file.read
-        self.readinto = self.__file.readinto
-        self.readline = self.__file.readline
-        self.readlines = self.__file.readlines
-        self.seek = self.__file.seek
-        self.softspace = self.__file.softspace
-        self.tell = self.__file.tell
-        self.truncate = self.__file.truncate
-        self.write = self.__file.write
-        self.writelines = self.__file.writelines
-
-    def close(self):
-        self.__file.close()
-        if self.__backup is None:
-            return
-        import filecmp
-        if filecmp.cmp(self.__backup, self.__filename, shallow = 0):
-            import os
-            os.unlink(self.__filename)
-            os.rename(self.__backup, self.__filename)
-
-def open(file, mode = 'r', bufsize = -1):
-    if 'w' not in mode:
-        return _orig_open(file, mode, bufsize)
-    return _BkFile(file, mode, bufsize)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/checkextensions.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/checkextensions.py
deleted file mode 100644
index 20b73b9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/checkextensions.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# Check for a module in a set of extension directories.
-# An extension directory should contain a Setup file
-# and one or more .o files or a lib.a file.
-
-import os
-import parsesetup
-
-def checkextensions(unknown, extensions):
-    files = []
-    modules = []
-    edict = {}
-    for e in extensions:
-        setup = os.path.join(e, 'Setup')
-        liba = os.path.join(e, 'lib.a')
-        if not os.path.isfile(liba):
-            liba = None
-        edict[e] = parsesetup.getsetupinfo(setup), liba
-    for mod in unknown:
-        for e in extensions:
-            (mods, vars), liba = edict[e]
-            if not mods.has_key(mod):
-                continue
-            modules.append(mod)
-            if liba:
-                # If we find a lib.a, use it, ignore the
-                # .o files, and use *all* libraries for
-                # *all* modules in the Setup file
-                if liba in files:
-                    break
-                files.append(liba)
-                for m in mods.keys():
-                    files = files + select(e, mods, vars,
-                                           m, 1)
-                break
-            files = files + select(e, mods, vars, mod, 0)
-            break
-    return files, modules
-
-def select(e, mods, vars, mod, skipofiles):
-    files = []
-    for w in mods[mod]:
-        w = treatword(w)
-        if not w:
-            continue
-        w = expandvars(w, vars)
-        for w in w.split():
-            if skipofiles and w[-2:] == '.o':
-                continue
-            # Assume $var expands to absolute pathname
-            if w[0] not in ('-', '$') and w[-2:] in ('.o', '.a'):
-                w = os.path.join(e, w)
-            if w[:2] in ('-L', '-R') and w[2:3] != '$':
-                w = w[:2] + os.path.join(e, w[2:])
-            files.append(w)
-    return files
-
-cc_flags = ['-I', '-D', '-U']
-cc_exts = ['.c', '.C', '.cc', '.c++']
-
-def treatword(w):
-    if w[:2] in cc_flags:
-        return None
-    if w[:1] == '-':
-        return w # Assume loader flag
-    head, tail = os.path.split(w)
-    base, ext = os.path.splitext(tail)
-    if ext in cc_exts:
-        tail = base + '.o'
-        w = os.path.join(head, tail)
-    return w
-
-def expandvars(str, vars):
-    i = 0
-    while i < len(str):
-        i = k = str.find('$', i)
-        if i < 0:
-            break
-        i = i+1
-        var = str[i:i+1]
-        i = i+1
-        if var == '(':
-            j = str.find(')', i)
-            if j < 0:
-                break
-            var = str[i:j]
-            i = j+1
-        if vars.has_key(var):
-            str = str[:k] + vars[var] + str[i:]
-            i = k
-    return str
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/checkextensions_win32.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/checkextensions_win32.py
deleted file mode 100644
index 0fbe301..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/checkextensions_win32.py
+++ /dev/null
@@ -1,188 +0,0 @@
-"""Extension management for Windows.
-
-Under Windows it is unlikely the .obj files are of use, as special compiler options
-are needed (primarily to toggle the behavior of "public" symbols.
-
-I dont consider it worth parsing the MSVC makefiles for compiler options.  Even if
-we get it just right, a specific freeze application may have specific compiler
-options anyway (eg, to enable or disable specific functionality)
-
-So my basic strategy is:
-
-* Have some Windows INI files which "describe" one or more extension modules.
-  (Freeze comes with a default one for all known modules - but you can specify
-  your own).
-* This description can include:
-  - The MSVC .dsp file for the extension.  The .c source file names
-    are extraced from there.
-  - Specific compiler/linker options
-  - Flag to indicate if Unicode compilation is expected.
-
-At the moment the name and location of this INI file is hardcoded,
-but an obvious enhancement would be to provide command line options.
-"""
-
-import os, sys
-try:
-    import win32api
-except ImportError:
-    win32api = None # User has already been warned
-
-class CExtension:
-    """An abstraction of an extension implemented in C/C++
-    """
-    def __init__(self, name, sourceFiles):
-        self.name = name
-        # A list of strings defining additional compiler options.
-        self.sourceFiles = sourceFiles
-        # A list of special compiler options to be applied to
-        # all source modules in this extension.
-        self.compilerOptions = []
-        # A list of .lib files the final .EXE will need.
-        self.linkerLibs = []
-
-    def GetSourceFiles(self):
-        return self.sourceFiles
-
-    def AddCompilerOption(self, option):
-        self.compilerOptions.append(option)
-    def GetCompilerOptions(self):
-        return self.compilerOptions
-
-    def AddLinkerLib(self, lib):
-        self.linkerLibs.append(lib)
-    def GetLinkerLibs(self):
-        return self.linkerLibs
-
-def checkextensions(unknown, extra_inis, prefix):
-    # Create a table of frozen extensions
-
-    defaultMapName = os.path.join( os.path.split(sys.argv[0])[0], "extensions_win32.ini")
-    if not os.path.isfile(defaultMapName):
-        sys.stderr.write("WARNING: %s can not be found - standard extensions may not be found\n" % defaultMapName)
-    else:
-        # must go on end, so other inis can override.
-        extra_inis.append(defaultMapName)
-
-    ret = []
-    for mod in unknown:
-        for ini in extra_inis:
-#                       print "Looking for", mod, "in", win32api.GetFullPathName(ini),"...",
-            defn = get_extension_defn( mod, ini, prefix )
-            if defn is not None:
-#                               print "Yay - found it!"
-                ret.append( defn )
-                break
-#                       print "Nope!"
-        else: # For not broken!
-            sys.stderr.write("No definition of module %s in any specified map file.\n" % (mod))
-
-    return ret
-
-def get_extension_defn(moduleName, mapFileName, prefix):
-    if win32api is None: return None
-    os.environ['PYTHONPREFIX'] = prefix
-    dsp = win32api.GetProfileVal(moduleName, "dsp", "", mapFileName)
-    if dsp=="":
-        return None
-
-    # We allow environment variables in the file name
-    dsp = win32api.ExpandEnvironmentStrings(dsp)
-    # If the path to the .DSP file is not absolute, assume it is relative
-    # to the description file.
-    if not os.path.isabs(dsp):
-        dsp = os.path.join( os.path.split(mapFileName)[0], dsp)
-    # Parse it to extract the source files.
-    sourceFiles = parse_dsp(dsp)
-    if sourceFiles is None:
-        return None
-
-    module = CExtension(moduleName, sourceFiles)
-    # Put the path to the DSP into the environment so entries can reference it.
-    os.environ['dsp_path'] = os.path.split(dsp)[0]
-    os.environ['ini_path'] = os.path.split(mapFileName)[0]
-
-    cl_options = win32api.GetProfileVal(moduleName, "cl", "", mapFileName)
-    if cl_options:
-        module.AddCompilerOption(win32api.ExpandEnvironmentStrings(cl_options))
-
-    exclude = win32api.GetProfileVal(moduleName, "exclude", "", mapFileName)
-    exclude = exclude.split()
-
-    if win32api.GetProfileVal(moduleName, "Unicode", 0, mapFileName):
-        module.AddCompilerOption('/D UNICODE /D _UNICODE')
-
-    libs = win32api.GetProfileVal(moduleName, "libs", "", mapFileName).split()
-    for lib in libs:
-        module.AddLinkerLib(win32api.ExpandEnvironmentStrings(lib))
-
-    for exc in exclude:
-        if exc in module.sourceFiles:
-            modules.sourceFiles.remove(exc)
-
-    return module
-
-# Given an MSVC DSP file, locate C source files it uses
-# returns a list of source files.
-def parse_dsp(dsp):
-#       print "Processing", dsp
-    # For now, only support
-    ret = []
-    dsp_path, dsp_name = os.path.split(dsp)
-    try:
-        lines = open(dsp, "r").readlines()
-    except IOError, msg:
-        sys.stderr.write("%s: %s\n" % (dsp, msg))
-        return None
-    for line in lines:
-        fields = line.strip().split("=", 2)
-        if fields[0]=="SOURCE":
-            if os.path.splitext(fields[1])[1].lower() in ['.cpp', '.c']:
-                ret.append( win32api.GetFullPathName(os.path.join(dsp_path, fields[1] ) ) )
-    return ret
-
-def write_extension_table(fname, modules):
-    fp = open(fname, "w")
-    try:
-        fp.write (ext_src_header)
-        # Write fn protos
-        for module in modules:
-            # bit of a hack for .pyd's as part of packages.
-            name = module.name.split('.')[-1]
-            fp.write('extern void init%s(void);\n' % (name) )
-        # Write the table
-        fp.write (ext_tab_header)
-        for module in modules:
-            name = module.name.split('.')[-1]
-            fp.write('\t{"%s", init%s},\n' % (name, name) )
-
-        fp.write (ext_tab_footer)
-        fp.write(ext_src_footer)
-    finally:
-        fp.close()
-
-
-ext_src_header = """\
-#include "Python.h"
-"""
-
-ext_tab_header = """\
-
-static struct _inittab extensions[] = {
-"""
-
-ext_tab_footer = """\
-        /* Sentinel */
-        {0, 0}
-};
-"""
-
-ext_src_footer = """\
-extern DL_IMPORT(int) PyImport_ExtendInittab(struct _inittab *newtab);
-
-int PyInitFrozenExtensions()
-{
-        return PyImport_ExtendInittab(extensions);
-}
-
-"""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/extensions_win32.ini b/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/extensions_win32.ini
deleted file mode 100644
index 12721ff..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/extensions_win32.ini
+++ /dev/null
@@ -1,171 +0,0 @@
-; This is a list of modules generally build as .pyd files.
-;
-; Each section contains enough information about a module for
-; freeze to include the module as a static, built-in module
-; in a frozen .EXE/.DLL.
-
-; This is all setup for all the win32 extension modules
-; released by Mark Hammond.
-; You must ensure that the environment variable PYTHONEX is set 
-; to point to the root win32 extensions directory
-
-; PYTHONPREFIX must point to the Python build root directory
-; (the *parent* of PCbuild); normally the freeze script takes
-; care of this.
-
-
-
-
-
-;--------------------------------------------------------------
-;
-; Standard Python extension modules
-;
-
-; Here are some of the standard Python extensions modules.
-; If you need others, add them here
-
-[_socket]
-dsp=%PYTHONPREFIX%\PCBuild\_socket.dsp
-
-[_sre]
-dsp=%PYTHONPREFIX%\PCBuild\_sre.dsp
-
-[unicodedata]
-dsp=%PYTHONPREFIX%\PCBuild\unicodedata.dsp
-
-[mmap]
-dsp=%PYTHONPREFIX%\PCBuild\mmap.dsp
-
-[winsound]
-dsp=%PYTHONPREFIX%\PCBuild\winsound.dsp
-libs=winmm.lib
-
-[parser]
-dsp=%PYTHONPREFIX%\PCBuild\parser.dsp
-
-[select]
-dsp=%PYTHONPREFIX%\PCBuild\select.dsp
-
-[zlib]
-dsp=%PYTHONPREFIX%\PCBuild\zlib.dsp
-cl=/I %PYTHONPREFIX%\..\zlib-1.1.4 /D _WINDOWS /D WIN32 
-libs=%PYTHONPREFIX%\..\zlib-1.1.4\zlib.lib /nodefaultlib:libc
-
-[_winreg]
-dsp=%PYTHONPREFIX%\PCBuild\winreg.dsp
-libs=advapi32.lib
-
-
-;--------------------------------------------------------------
-;
-; Win32 Projects.
-;
-[perfmon]
-dsp=%PYTHONEX%\win32\perfmon.dsp
-cl=/I %PYTHONEX%\win32\src
-Unicode=1
-
-[pywintypes]
-dsp=%PYTHONEX%\win32\pywintypes.dsp
-cl=/I %PYTHONEX%\win32\src
-libs=ole32.lib oleaut32.lib
-
-[win32api]
-dsp=%PYTHONEX%\win32\win32api.dsp
-cl=/I %PYTHONEX%\win32\src
-libs=kernel32.lib user32.lib shell32.lib advapi32.lib
-
-[win32service]
-dsp=%PYTHONEX%\win32\win32service.dsp
-cl=/I %PYTHONEX%\win32\src
-Unicode=1
-libs=advapi32.lib
-
-[win32evtlog]
-dsp=%PYTHONEX%\win32\win32evtlog.dsp
-cl=/I %PYTHONEX%\win32\src
-
-[win32process]
-dsp=%PYTHONEX%\win32\win32process.dsp
-cl=/I %PYTHONEX%\win32\src
-
-[win32event]
-dsp=%PYTHONEX%\win32\win32event.dsp
-cl=/I %PYTHONEX%\win32\src
-
-[win32file]
-dsp=%PYTHONEX%\win32\win32file.dsp 
-cl=/I %PYTHONEX%\win32\src
-
-[win32net]
-dsp=%PYTHONEX%\win32\win32net.dsp
-cl=/I %PYTHONEX%\win32\src
-libs=netapi32.lib
-
-[win32pdh]
-dsp=%PYTHONEX%\win32\win32pdh.dsp
-cl=/I %PYTHONEX%\win32\src
-
-[win32pipe]
-dsp=%PYTHONEX%\win32\win32pipe.dsp 
-cl=/I %PYTHONEX%\win32\src
-
-[win32security]
-dsp=%PYTHONEX%\win32\win32security.dsp
-cl=/I %PYTHONEX%\win32\src
-
-[win32service]
-dsp=%PYTHONEX%\win32\win32service.dsp
-cl=/I %PYTHONEX%\win32\src
-
-[win32trace]
-dsp=%PYTHONEX%\win32\win32trace.dsp
-cl=/I %PYTHONEX%\win32\src
-
-;--------------------------------------------------------------
-;
-; COM Projects.
-;
-
-[pythoncom]
-dsp=%PYTHONEX%\com\win32com.dsp
-cl=/I %PYTHONEX%\com\win32com\src\include /I %PYTHONEX%\win32\src
-libs=uuid.lib
-
-[win32com.axcontrol.axcontrol]
-dsp=%PYTHONEX%\com\axcontrol.dsp
-cl=/I %PYTHONEX%\win32\src /I %PYTHONEX%\com\win32com\src\include
-
-[win32com.axscript.axscript]
-dsp=%PYTHONEX%\com\Active Scripting.dsp
-cl=/I %PYTHONEX%\win32\src /I %PYTHONEX%\com\win32com\src\include
-
-[win32com.axdebug.axdebug]
-dsp=%PYTHONEX%\com\Active Debugging.dsp
-cl=/I %PYTHONEX%\win32\src /I %PYTHONEX%\com\win32com\src\include
-
-[win32com.mapi.mapi]
-dsp=%PYTHONEX%\com\mapi.dsp
-cl=/I %PYTHONEX%\win32\src /I %PYTHONEX%\com\win32com\src\include
-libs=MBLOGON.lib ADDRLKUP.LIB mapi32.lib version.lib
-
-[win32com.mapi.exchange]
-dsp=%PYTHONEX%\com\exchange.dsp
-cl=/I %PYTHONEX%\win32\src /I %PYTHONEX%\com\win32com\src\include
-libs=MBLOGON.lib ADDRLKUP.LIB exchinst.lib EDKCFG.LIB EDKUTILS.LIB EDKMAPI.LIB mapi32.lib version.lib
-
-[win32com.mapi.exchdapi]
-dsp=%PYTHONEX%\com\exchdapi.dsp
-cl=/I %PYTHONEX%\win32\src /I %PYTHONEX%\com\win32com\src\include
-libs=DAPI.LIB
-
-[servicemanager]
-dsp=%PYTHONEX%\win32\PythonService EXE.dsp
-Unicode = 1
-
-; Pythonwin
-[win32ui]
-dsp=%PYTHONEX%\Pythonwin\win32ui.dsp
-cl=/D _AFXDLL /D FREEZE_WIN32UI /GX /I %PYTHONEX%\win32\src
-libs=mfc42.lib
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/freeze.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/freeze.py
deleted file mode 100644
index 58cc6be..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/freeze.py
+++ /dev/null
@@ -1,497 +0,0 @@
-#! /usr/bin/env python
-
-"""Freeze a Python script into a binary.
-
-usage: freeze [options...] script [module]...
-
-Options:
--p prefix:    This is the prefix used when you ran ``make install''
-              in the Python build directory.
-              (If you never ran this, freeze won't work.)
-              The default is whatever sys.prefix evaluates to.
-              It can also be the top directory of the Python source
-              tree; then -P must point to the build tree.
-
--P exec_prefix: Like -p but this is the 'exec_prefix', used to
-                install objects etc.  The default is whatever sys.exec_prefix
-                evaluates to, or the -p argument if given.
-                If -p points to the Python source tree, -P must point
-                to the build tree, if different.
-
--e extension: A directory containing additional .o files that
-              may be used to resolve modules.  This directory
-              should also have a Setup file describing the .o files.
-              On Windows, the name of a .INI file describing one
-              or more extensions is passed.
-              More than one -e option may be given.
-
--o dir:       Directory where the output files are created; default '.'.
-
--m:           Additional arguments are module names instead of filenames.
-
--a package=dir: Additional directories to be added to the package's
-                __path__.  Used to simulate directories added by the
-                package at runtime (eg, by OpenGL and win32com).
-                More than one -a option may be given for each package.
-
--l file:      Pass the file to the linker (windows only)
-
--d:           Debugging mode for the module finder.
-
--q:           Make the module finder totally quiet.
-
--h:           Print this help message.
-
--x module     Exclude the specified module. It will still be imported
-              by the frozen binary if it exists on the host system.
-
--X module     Like -x, except the module can never be imported by
-              the frozen binary.
-
--E:           Freeze will fail if any modules can't be found (that
-              were not excluded using -x or -X).
-
--i filename:  Include a file with additional command line options.  Used
-              to prevent command lines growing beyond the capabilities of
-              the shell/OS.  All arguments specified in filename
-              are read and the -i option replaced with the parsed
-              params (note - quoting args in this file is NOT supported)
-
--s subsystem: Specify the subsystem (For Windows only.);
-              'console' (default), 'windows', 'service' or 'com_dll'
-
--w:           Toggle Windows (NT or 95) behavior.
-              (For debugging only -- on a win32 platform, win32 behavior
-              is automatic.)
-
--r prefix=f:  Replace path prefix.
-              Replace prefix with f in the source path references
-              contained in the resulting binary.
-
-Arguments:
-
-script:       The Python script to be executed by the resulting binary.
-
-module ...:   Additional Python modules (referenced by pathname)
-              that will be included in the resulting binary.  These
-              may be .py or .pyc files.  If -m is specified, these are
-              module names that are search in the path instead.
-
-NOTES:
-
-In order to use freeze successfully, you must have built Python and
-installed it ("make install").
-
-The script should not use modules provided only as shared libraries;
-if it does, the resulting binary is not self-contained.
-"""
-
-
-# Import standard modules
-
-import modulefinder
-import getopt
-import os
-import sys
-
-
-# Import the freeze-private modules
-
-import checkextensions
-import makeconfig
-import makefreeze
-import makemakefile
-import parsesetup
-import bkfile
-
-
-# Main program
-
-def main():
-    # overridable context
-    prefix = None                       # settable with -p option
-    exec_prefix = None                  # settable with -P option
-    extensions = []
-    exclude = []                        # settable with -x option
-    addn_link = []      # settable with -l, but only honored under Windows.
-    path = sys.path[:]
-    modargs = 0
-    debug = 1
-    odir = ''
-    win = sys.platform[:3] == 'win'
-    replace_paths = []                  # settable with -r option
-    error_if_any_missing = 0
-
-    # default the exclude list for each platform
-    if win: exclude = exclude + [
-        'dos', 'dospath', 'mac', 'macpath', 'macfs', 'MACFS', 'posix',
-        'os2', 'ce', 'riscos', 'riscosenviron', 'riscospath',
-        ]
-
-    fail_import = exclude[:]
-
-    # output files
-    frozen_c = 'frozen.c'
-    config_c = 'config.c'
-    target = 'a.out'                    # normally derived from script name
-    makefile = 'Makefile'
-    subsystem = 'console'
-
-    # parse command line by first replacing any "-i" options with the
-    # file contents.
-    pos = 1
-    while pos < len(sys.argv)-1:
-        # last option can not be "-i", so this ensures "pos+1" is in range!
-        if sys.argv[pos] == '-i':
-            try:
-                options = open(sys.argv[pos+1]).read().split()
-            except IOError, why:
-                usage("File name '%s' specified with the -i option "
-                      "can not be read - %s" % (sys.argv[pos+1], why) )
-            # Replace the '-i' and the filename with the read params.
-            sys.argv[pos:pos+2] = options
-            pos = pos + len(options) - 1 # Skip the name and the included args.
-        pos = pos + 1
-
-    # Now parse the command line with the extras inserted.
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'r:a:dEe:hmo:p:P:qs:wX:x:l:')
-    except getopt.error, msg:
-        usage('getopt error: ' + str(msg))
-
-    # proces option arguments
-    for o, a in opts:
-        if o == '-h':
-            print __doc__
-            return
-        if o == '-d':
-            debug = debug + 1
-        if o == '-e':
-            extensions.append(a)
-        if o == '-m':
-            modargs = 1
-        if o == '-o':
-            odir = a
-        if o == '-p':
-            prefix = a
-        if o == '-P':
-            exec_prefix = a
-        if o == '-q':
-            debug = 0
-        if o == '-w':
-            win = not win
-        if o == '-s':
-            if not win:
-                usage("-s subsystem option only on Windows")
-            subsystem = a
-        if o == '-x':
-            exclude.append(a)
-        if o == '-X':
-            exclude.append(a)
-            fail_import.append(a)
-        if o == '-E':
-            error_if_any_missing = 1
-        if o == '-l':
-            addn_link.append(a)
-        if o == '-a':
-            apply(modulefinder.AddPackagePath, tuple(a.split("=", 2)))
-        if o == '-r':
-            f,r = a.split("=", 2)
-            replace_paths.append( (f,r) )
-
-    # modules that are imported by the Python runtime
-    implicits = []
-    for module in ('site', 'warnings',):
-        if module not in exclude:
-            implicits.append(module)
-
-    # default prefix and exec_prefix
-    if not exec_prefix:
-        if prefix:
-            exec_prefix = prefix
-        else:
-            exec_prefix = sys.exec_prefix
-    if not prefix:
-        prefix = sys.prefix
-
-    # determine whether -p points to the Python source tree
-    ishome = os.path.exists(os.path.join(prefix, 'Python', 'ceval.c'))
-
-    # locations derived from options
-    version = sys.version[:3]
-    if win:
-        extensions_c = 'frozen_extensions.c'
-    if ishome:
-        print "(Using Python source directory)"
-        binlib = exec_prefix
-        incldir = os.path.join(prefix, 'Include')
-        config_h_dir = exec_prefix
-        config_c_in = os.path.join(prefix, 'Modules', 'config.c.in')
-        frozenmain_c = os.path.join(prefix, 'Python', 'frozenmain.c')
-        makefile_in = os.path.join(exec_prefix, 'Makefile')
-        if win:
-            frozendllmain_c = os.path.join(exec_prefix, 'Pc\\frozen_dllmain.c')
-    else:
-        binlib = os.path.join(exec_prefix,
-                              'lib', 'python%s' % version, 'config')
-        incldir = os.path.join(prefix, 'include', 'python%s' % version)
-        config_h_dir = os.path.join(exec_prefix, 'include',
-                                    'python%s' % version)
-        config_c_in = os.path.join(binlib, 'config.c.in')
-        frozenmain_c = os.path.join(binlib, 'frozenmain.c')
-        makefile_in = os.path.join(binlib, 'Makefile')
-        frozendllmain_c = os.path.join(binlib, 'frozen_dllmain.c')
-    supp_sources = []
-    defines = []
-    includes = ['-I' + incldir, '-I' + config_h_dir]
-
-    # sanity check of directories and files
-    check_dirs = [prefix, exec_prefix, binlib, incldir]
-    if not win:
-        # These are not directories on Windows.
-        check_dirs = check_dirs + extensions
-    for dir in check_dirs:
-        if not os.path.exists(dir):
-            usage('needed directory %s not found' % dir)
-        if not os.path.isdir(dir):
-            usage('%s: not a directory' % dir)
-    if win:
-        files = supp_sources + extensions # extensions are files on Windows.
-    else:
-        files = [config_c_in, makefile_in] + supp_sources
-    for file in supp_sources:
-        if not os.path.exists(file):
-            usage('needed file %s not found' % file)
-        if not os.path.isfile(file):
-            usage('%s: not a plain file' % file)
-    if not win:
-        for dir in extensions:
-            setup = os.path.join(dir, 'Setup')
-            if not os.path.exists(setup):
-                usage('needed file %s not found' % setup)
-            if not os.path.isfile(setup):
-                usage('%s: not a plain file' % setup)
-
-    # check that enough arguments are passed
-    if not args:
-        usage('at least one filename argument required')
-
-    # check that file arguments exist
-    for arg in args:
-        if arg == '-m':
-            break
-        # if user specified -m on the command line before _any_
-        # file names, then nothing should be checked (as the
-        # very first file should be a module name)
-        if modargs:
-            break
-        if not os.path.exists(arg):
-            usage('argument %s not found' % arg)
-        if not os.path.isfile(arg):
-            usage('%s: not a plain file' % arg)
-
-    # process non-option arguments
-    scriptfile = args[0]
-    modules = args[1:]
-
-    # derive target name from script name
-    base = os.path.basename(scriptfile)
-    base, ext = os.path.splitext(base)
-    if base:
-        if base != scriptfile:
-            target = base
-        else:
-            target = base + '.bin'
-
-    # handle -o option
-    base_frozen_c = frozen_c
-    base_config_c = config_c
-    base_target = target
-    if odir and not os.path.isdir(odir):
-        try:
-            os.mkdir(odir)
-            print "Created output directory", odir
-        except os.error, msg:
-            usage('%s: mkdir failed (%s)' % (odir, str(msg)))
-    base = ''
-    if odir:
-        base = os.path.join(odir, '')
-        frozen_c = os.path.join(odir, frozen_c)
-        config_c = os.path.join(odir, config_c)
-        target = os.path.join(odir, target)
-        makefile = os.path.join(odir, makefile)
-        if win: extensions_c = os.path.join(odir, extensions_c)
-
-    # Handle special entry point requirements
-    # (on Windows, some frozen programs do not use __main__, but
-    # import the module directly.  Eg, DLLs, Services, etc
-    custom_entry_point = None  # Currently only used on Windows
-    python_entry_is_main = 1   # Is the entry point called __main__?
-    # handle -s option on Windows
-    if win:
-        import winmakemakefile
-        try:
-            custom_entry_point, python_entry_is_main = \
-                winmakemakefile.get_custom_entry_point(subsystem)
-        except ValueError, why:
-            usage(why)
-
-
-    # Actual work starts here...
-
-    # collect all modules of the program
-    dir = os.path.dirname(scriptfile)
-    path[0] = dir
-    mf = modulefinder.ModuleFinder(path, debug, exclude, replace_paths)
-
-    if win and subsystem=='service':
-        # If a Windows service, then add the "built-in" module.
-        mod = mf.add_module("servicemanager")
-        mod.__file__="dummy.pyd" # really built-in to the resulting EXE
-
-    for mod in implicits:
-        mf.import_hook(mod)
-    for mod in modules:
-        if mod == '-m':
-            modargs = 1
-            continue
-        if modargs:
-            if mod[-2:] == '.*':
-                mf.import_hook(mod[:-2], None, ["*"])
-            else:
-                mf.import_hook(mod)
-        else:
-            mf.load_file(mod)
-
-    # Add the main script as either __main__, or the actual module name.
-    if python_entry_is_main:
-        mf.run_script(scriptfile)
-    else:
-        mf.load_file(scriptfile)
-
-    if debug > 0:
-        mf.report()
-        print
-    dict = mf.modules
-
-    if error_if_any_missing:
-        missing = mf.any_missing()
-        if missing:
-            sys.exit("There are some missing modules: %r" % missing)
-
-    # generate output for frozen modules
-    files = makefreeze.makefreeze(base, dict, debug, custom_entry_point,
-                                  fail_import)
-
-    # look for unfrozen modules (builtin and of unknown origin)
-    builtins = []
-    unknown = []
-    mods = dict.keys()
-    mods.sort()
-    for mod in mods:
-        if dict[mod].__code__:
-            continue
-        if not dict[mod].__file__:
-            builtins.append(mod)
-        else:
-            unknown.append(mod)
-
-    # search for unknown modules in extensions directories (not on Windows)
-    addfiles = []
-    frozen_extensions = [] # Windows list of modules.
-    if unknown or (not win and builtins):
-        if not win:
-            addfiles, addmods = \
-                      checkextensions.checkextensions(unknown+builtins,
-                                                      extensions)
-            for mod in addmods:
-                if mod in unknown:
-                    unknown.remove(mod)
-                    builtins.append(mod)
-        else:
-            # Do the windows thang...
-            import checkextensions_win32
-            # Get a list of CExtension instances, each describing a module
-            # (including its source files)
-            frozen_extensions = checkextensions_win32.checkextensions(
-                unknown, extensions, prefix)
-            for mod in frozen_extensions:
-                unknown.remove(mod.name)
-
-    # report unknown modules
-    if unknown:
-        sys.stderr.write('Warning: unknown modules remain: %s\n' %
-                         ' '.join(unknown))
-
-    # windows gets different treatment
-    if win:
-        # Taking a shortcut here...
-        import winmakemakefile, checkextensions_win32
-        checkextensions_win32.write_extension_table(extensions_c,
-                                                    frozen_extensions)
-        # Create a module definition for the bootstrap C code.
-        xtras = [frozenmain_c, os.path.basename(frozen_c),
-                 frozendllmain_c, os.path.basename(extensions_c)] + files
-        maindefn = checkextensions_win32.CExtension( '__main__', xtras )
-        frozen_extensions.append( maindefn )
-        outfp = open(makefile, 'w')
-        try:
-            winmakemakefile.makemakefile(outfp,
-                                         locals(),
-                                         frozen_extensions,
-                                         os.path.basename(target))
-        finally:
-            outfp.close()
-        return
-
-    # generate config.c and Makefile
-    builtins.sort()
-    infp = open(config_c_in)
-    outfp = bkfile.open(config_c, 'w')
-    try:
-        makeconfig.makeconfig(infp, outfp, builtins)
-    finally:
-        outfp.close()
-    infp.close()
-
-    cflags = ['$(OPT)']
-    cppflags = defines + includes
-    libs = [os.path.join(binlib, 'libpython$(VERSION).a')]
-
-    somevars = {}
-    if os.path.exists(makefile_in):
-        makevars = parsesetup.getmakevars(makefile_in)
-        for key in makevars.keys():
-            somevars[key] = makevars[key]
-
-    somevars['CFLAGS'] = ' '.join(cflags) # override
-    somevars['CPPFLAGS'] = ' '.join(cppflags) # override
-    files = [base_config_c, base_frozen_c] + \
-            files + supp_sources +  addfiles + libs + \
-            ['$(MODLIBS)', '$(LIBS)', '$(SYSLIBS)']
-
-    outfp = bkfile.open(makefile, 'w')
-    try:
-        makemakefile.makemakefile(outfp, somevars, files, base_target)
-    finally:
-        outfp.close()
-
-    # Done!
-
-    if odir:
-        print 'Now run "make" in', odir,
-        print 'to build the target:', base_target
-    else:
-        print 'Now run "make" to build the target:', base_target
-
-
-# Print usage message and exit
-
-def usage(msg):
-    sys.stdout = sys.stderr
-    print "Error:", msg
-    print "Use ``%s -h'' for help" % sys.argv[0]
-    sys.exit(2)
-
-
-main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/hello.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/hello.py
deleted file mode 100644
index d3524d7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/hello.py
+++ /dev/null
@@ -1 +0,0 @@
-print 'Hello world...'
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makeconfig.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makeconfig.py
deleted file mode 100644
index 1e8f7e2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makeconfig.py
+++ /dev/null
@@ -1,60 +0,0 @@
-import re
-import sys
-
-# Write the config.c file
-
-never = ['marshal', '__main__', '__builtin__', 'sys', 'exceptions', '_warnings']
-
-def makeconfig(infp, outfp, modules, with_ifdef=0):
-    m1 = re.compile('-- ADDMODULE MARKER 1 --')
-    m2 = re.compile('-- ADDMODULE MARKER 2 --')
-    while 1:
-        line = infp.readline()
-        if not line: break
-        outfp.write(line)
-        if m1 and m1.search(line):
-            m1 = None
-            for mod in modules:
-                if mod in never:
-                    continue
-                if with_ifdef:
-                    outfp.write("#ifndef init%s\n"%mod)
-                outfp.write('extern void init%s(void);\n' % mod)
-                if with_ifdef:
-                    outfp.write("#endif\n")
-        elif m2 and m2.search(line):
-            m2 = None
-            for mod in modules:
-                if mod in never:
-                    continue
-                outfp.write('\t{"%s", init%s},\n' %
-                            (mod, mod))
-    if m1:
-        sys.stderr.write('MARKER 1 never found\n')
-    elif m2:
-        sys.stderr.write('MARKER 2 never found\n')
-
-
-# Test program.
-
-def test():
-    if not sys.argv[3:]:
-        print 'usage: python makeconfig.py config.c.in outputfile',
-        print 'modulename ...'
-        sys.exit(2)
-    if sys.argv[1] == '-':
-        infp = sys.stdin
-    else:
-        infp = open(sys.argv[1])
-    if sys.argv[2] == '-':
-        outfp = sys.stdout
-    else:
-        outfp = open(sys.argv[2], 'w')
-    makeconfig(infp, outfp, sys.argv[3:])
-    if outfp != sys.stdout:
-        outfp.close()
-    if infp != sys.stdin:
-        infp.close()
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makefreeze.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makefreeze.py
deleted file mode 100644
index 3cc6317..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makefreeze.py
+++ /dev/null
@@ -1,90 +0,0 @@
-import marshal
-import bkfile
-
-
-# Write a file containing frozen code for the modules in the dictionary.
-
-header = """
-#include "Python.h"
-
-static struct _frozen _PyImport_FrozenModules[] = {
-"""
-trailer = """\
-    {0, 0, 0} /* sentinel */
-};
-"""
-
-# if __debug__ == 0 (i.e. -O option given), set Py_OptimizeFlag in frozen app.
-default_entry_point = """
-int
-main(int argc, char **argv)
-{
-        extern int Py_FrozenMain(int, char **);
-""" + ((not __debug__ and """
-        Py_OptimizeFlag++;
-""") or "")  + """
-        PyImport_FrozenModules = _PyImport_FrozenModules;
-        return Py_FrozenMain(argc, argv);
-}
-
-"""
-
-def makefreeze(base, dict, debug=0, entry_point=None, fail_import=()):
-    if entry_point is None: entry_point = default_entry_point
-    done = []
-    files = []
-    mods = dict.keys()
-    mods.sort()
-    for mod in mods:
-        m = dict[mod]
-        mangled = "__".join(mod.split("."))
-        if m.__code__:
-            file = 'M_' + mangled + '.c'
-            outfp = bkfile.open(base + file, 'w')
-            files.append(file)
-            if debug:
-                print "freezing", mod, "..."
-            str = marshal.dumps(m.__code__)
-            size = len(str)
-            if m.__path__:
-                # Indicate package by negative size
-                size = -size
-            done.append((mod, mangled, size))
-            writecode(outfp, mangled, str)
-            outfp.close()
-    if debug:
-        print "generating table of frozen modules"
-    outfp = bkfile.open(base + 'frozen.c', 'w')
-    for mod, mangled, size in done:
-        outfp.write('extern unsigned char M_%s[];\n' % mangled)
-    outfp.write(header)
-    for mod, mangled, size in done:
-        outfp.write('\t{"%s", M_%s, %d},\n' % (mod, mangled, size))
-    outfp.write('\n')
-    # The following modules have a NULL code pointer, indicating
-    # that the prozen program should not search for them on the host
-    # system. Importing them will *always* raise an ImportError.
-    # The zero value size is never used.
-    for mod in fail_import:
-        outfp.write('\t{"%s", NULL, 0},\n' % (mod,))
-    outfp.write(trailer)
-    outfp.write(entry_point)
-    outfp.close()
-    return files
-
-
-
-# Write a C initializer for a module containing the frozen python code.
-# The array is called M_<mod>.
-
-def writecode(outfp, mod, str):
-    outfp.write('unsigned char M_%s[] = {' % mod)
-    for i in range(0, len(str), 16):
-        outfp.write('\n\t')
-        for c in str[i:i+16]:
-            outfp.write('%d,' % ord(c))
-    outfp.write('\n};\n')
-
-## def writecode(outfp, mod, str):
-##     outfp.write('unsigned char M_%s[%d] = "%s";\n' % (mod, len(str),
-##     '\\"'.join(map(lambda s: repr(s)[1:-1], str.split('"')))))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makemakefile.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makemakefile.py
deleted file mode 100644
index 0b81890..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/makemakefile.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# Write the actual Makefile.
-
-import os
-
-def makemakefile(outfp, makevars, files, target):
-    outfp.write("# Makefile generated by freeze.py script\n\n")
-
-    keys = makevars.keys()
-    keys.sort()
-    for key in keys:
-        outfp.write("%s=%s\n" % (key, makevars[key]))
-    outfp.write("\nall: %s\n\n" % target)
-
-    deps = []
-    for i in range(len(files)):
-        file = files[i]
-        if file[-2:] == '.c':
-            base = os.path.basename(file)
-            dest = base[:-2] + '.o'
-            outfp.write("%s: %s\n" % (dest, file))
-            outfp.write("\t$(CC) $(CFLAGS) $(CPPFLAGS) -c %s\n" % file)
-            files[i] = dest
-            deps.append(dest)
-
-    outfp.write("\n%s: %s\n" % (target, ' '.join(deps)))
-    outfp.write("\t$(LINKCC) $(LDFLAGS) $(LINKFORSHARED) %s -o %s $(LDLAST)\n" %
-                (' '.join(files), target))
-
-    outfp.write("\nclean:\n\t-rm -f *.o %s\n" % target)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/parsesetup.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/parsesetup.py
deleted file mode 100644
index b14a6da..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/parsesetup.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# Parse Makefiles and Python Setup(.in) files.
-
-import re
-
-
-# Extract variable definitions from a Makefile.
-# Return a dictionary mapping names to values.
-# May raise IOError.
-
-makevardef = re.compile('^([a-zA-Z0-9_]+)[ \t]*=(.*)')
-
-def getmakevars(filename):
-    variables = {}
-    fp = open(filename)
-    pendingline = ""
-    try:
-        while 1:
-            line = fp.readline()
-            if pendingline:
-                line = pendingline + line
-                pendingline = ""
-            if not line:
-                break
-            if line.endswith('\\\n'):
-                pendingline = line[:-2]
-            matchobj = makevardef.match(line)
-            if not matchobj:
-                continue
-            (name, value) = matchobj.group(1, 2)
-            # Strip trailing comment
-            i = value.find('#')
-            if i >= 0:
-                value = value[:i]
-            value = value.strip()
-            variables[name] = value
-    finally:
-        fp.close()
-    return variables
-
-
-# Parse a Python Setup(.in) file.
-# Return two dictionaries, the first mapping modules to their
-# definitions, the second mapping variable names to their values.
-# May raise IOError.
-
-setupvardef = re.compile('^([a-zA-Z0-9_]+)=(.*)')
-
-def getsetupinfo(filename):
-    modules = {}
-    variables = {}
-    fp = open(filename)
-    pendingline = ""
-    try:
-        while 1:
-            line = fp.readline()
-            if pendingline:
-                line = pendingline + line
-                pendingline = ""
-            if not line:
-                break
-            # Strip comments
-            i = line.find('#')
-            if i >= 0:
-                line = line[:i]
-            if line.endswith('\\\n'):
-                pendingline = line[:-2]
-                continue
-            matchobj = setupvardef.match(line)
-            if matchobj:
-                (name, value) = matchobj.group(1, 2)
-                variables[name] = value.strip()
-            else:
-                words = line.split()
-                if words:
-                    modules[words[0]] = words[1:]
-    finally:
-        fp.close()
-    return modules, variables
-
-
-# Test the above functions.
-
-def test():
-    import sys
-    import os
-    if not sys.argv[1:]:
-        print 'usage: python parsesetup.py Makefile*|Setup* ...'
-        sys.exit(2)
-    for arg in sys.argv[1:]:
-        base = os.path.basename(arg)
-        if base[:8] == 'Makefile':
-            print 'Make style parsing:', arg
-            v = getmakevars(arg)
-            prdict(v)
-        elif base[:5] == 'Setup':
-            print 'Setup style parsing:', arg
-            m, v = getsetupinfo(arg)
-            prdict(m)
-            prdict(v)
-        else:
-            print arg, 'is neither a Makefile nor a Setup file'
-            print '(name must begin with "Makefile" or "Setup")'
-
-def prdict(d):
-    keys = d.keys()
-    keys.sort()
-    for key in keys:
-        value = d[key]
-        print "%-15s" % key, str(value)
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/win32.html b/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/win32.html
deleted file mode 100644
index ca62b46..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/win32.html
+++ /dev/null
@@ -1,119 +0,0 @@
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
-<META NAME="Generator" CONTENT="Microsoft Word 97">
-<TITLE>win32</TITLE>
-<META NAME="Version" CONTENT="8.0.3410">
-<META NAME="Date" CONTENT="10/11/96">
-<META NAME="Template" CONTENT="D:\Program Files\Microsoft Office\Office\HTML.DOT">
-</HEAD>
-<BODY TEXT="#000000" BGCOLOR="#ffffff">
-
-<H1>Freeze for Win32</H1>
-<P>This document describes how to use Freeze for the Win32 platform.  </P>
-<P>Freeze itself is a Python tool for creating stand-alone executables from Python source code.  This document does not attempt to document freeze itself - only the win32 specific changes.</P>
-<H2>Frozen programs under Win32</H2>
-<P>Frozen programs under Win32 can (theoretically) freeze any type of program supported by Python on Win32 - At the moment, Console .EXE and NT Service .EXE programs are supported.  GUI Python programs and COM .EXE programs are very nearly all ready to go.</P>
-<H3>Program Dependencies</H3>
-<P>The person freezing the program has control over what external DLLs are required by a frozen program.  The following dependencies are supported:</P>
-<H4>Minimal frozen programs</H4>
-<P>These programs freeze only .py files in your program.  All external DLLs are required at run-time.  This includes all .pyd/.dll modules used by your program, Python20.dll, and msvcrt.dll.  </P>
-<P>A small Python program would typically create a .EXE around 300kb.</P>
-<H4>Frozen Extension programs</H4>
-<B><I><P>Note:</B></I> For Python1.5.1, you must get a patch from Guido to import.c for this to work.</P>
-<P>These programs also freeze in the sources from all .pyd and .dll files used at runtime.  This means the resulting .EXE is only dependent on Python20.dll and msvcrt.dll.</P>
-<P>A small Python program using win32api, win32con and one or 2 other win32 extensions would typically create a .EXE around 400kb.</P>
-<H4>Completely frozen programs</H4>
-<P>Completely stand-alone programs, as is the default on Unix systems.  These are currently not supported, mainly as the size of a decent Python program gets very large.  However, by tweaking the existing Unix support, this would not be difficult to do.</P>
-<H2>Freezing Extension Modules</H2>
-<P>By default, a file in the main "freeze" directory called "extensions_win32.ini" is used to obtain information about frozen extensions.  A typical entry is:</P>
-<CODE><P>[win32api]</P>
-<P>dsp=%PYTHONEX%\win32\win32api.dsp</P>
-<P>cl=/I %PYTHONEX%\win32\src</P>
-<P>libs=kernel32.lib user32.lib shell32.lib advapi32.lib</P>
-</CODE><P>&nbsp;</P>
-<P>This entry indicates that the win32api extension module is defined in the MSVC project file "<CODE>%PYTHONEX%\win32\win32api.dsp</CODE>".  Note the use of<CODE> </CODE>"<CODE>%PYTHONEX%" </CODE>- most strings are substituted with environment variables. In this case, it is assumed variable PYTHONEX points to the main "Python Extensions" source directory (which is assumed to be in the same structure as the release of the extension sources).</P>
-<P>An entry in a .INI file can also control specific compiler options, and also the .lib files necessary to be linked with the application.</P>
-<H3>Freezing Extension Module Considerations</H3>
-<P>To prevent freezing extension modules, simply exclude that module using the freeze "-x" switch.</P>
-<P>Occasionally, it will be necessary to explicitly include dependent modules.  For example, many win32 modules are dependent on the "pywintypes" module - for example, the win32api module.  In this case, the module may be explicitly included using the freeze "-m" option.</P>
-<H3>Freezing win32com and PythonCOM</H3>
-<P>PythonCOM.dll can be frozen as long as you are not implementing COM Servers.  Ie, you can freeze programs which control other applications, but can not implement programs that are themselves controlled by other applications.</P>
-<P>If you use any of the win32com .pyd extensions (ex, axscript, mapi, internet, axcontrol), then you will need to specify an additional "-a" option to point to the win32comext directory.  There is an example below.</P>
-<P>The use of the "win32com.client.gencache" module is not supported (although could be quite easily??)</P>
-<H2>Examples</H2>
-<P>Before we start, we must:</P>
-<CODE><P>D:\temp\delme&gt;set PYTHONEX=d:\src\pythonex</P>
-</CODE><H3>Helloworld.py</H3>
-<H4>Source Code</H4><DIR>
-<DIR>
-
-<CODE><P>import sys</P>
-<P>&nbsp;</P>
-<P>print " ".join( ["Hello", "world"] + sys.argv[1:] )</P></DIR>
-</DIR>
-
-</CODE><H4>Command Line used</H4><DIR>
-<DIR>
-
-<FONT FACE="Courier New" SIZE=2><P>\src\python-1.5.1\tools\freeze\freeze.py helloworld.py</P>
-<P>nmake</P></DIR>
-</DIR>
-
-</FONT><P>Resulting helloworld.exe: 114,688 bytes.</P>
-<H3>Helloworld2.py</H3>
-<P>Uses win32api.  Demonstrates requirement for pywintypes, and difference between freezing extensions and not.</P>
-<H4>Source Code</H4><DIR>
-<DIR>
-
-<P>import win32api</P>
-<P>print "Hello from", win32api.GetComputerName()</P></DIR>
-</DIR>
-
-<H4>Command Line used</H4>
-<P>By default, win32api will be frozen in with the .EXE.  If you do not provide the "pywintypes" inclusion, then the link step will fail looking for all the pywintypes modules.</P><DIR>
-<DIR>
-
-<FONT FACE="Courier New" SIZE=2><P>\src\python-1.5.1\tools\freeze\freeze.py helloworld2.py -m pywintypes</P>
-<P>nmake</P></DIR>
-</DIR>
-
-</FONT><P>Resulting helloworld2.exe: 167,936 bytes</P>
-<P>Simply adding win32con to the mix gives an EXE of size: 352,768 bytes.</P>
-<H4>Command Line used</H4>
-<P>Using this build, we are dependent at runtime on the win32api.pyd and pywintypes15.dll files.</P><DIR>
-<DIR>
-
-<P>\src\python-1.5.1\tools\freeze\freeze.py -x win32api helloworld.py</P></DIR>
-</DIR>
-
-<P>Resulting helloworld2.exe: 114,688</P>
-<P>Adding win32con to this build results in a size of: 252,928</P>
-<H3>Testmapi.py</H3>
-<P>Uses MAPI, a PythonCOM extension, and win32api.</P>
-<H4>Source Code</H4>
-<P>from win32com.mapi import mapi</P>
-<P>import win32api</P>
-<P>mapi.MAPIInitialize( (mapi.MAPI_INIT_VERSION, 0) )</P>
-<P>print "Hello from", win32api.GetComputerName()</P>
-<P>mapi.MAPIUninitialize()</P>
-<H4>Command Line used</H4>
-<P>As it does not import pythoncom or pywintypes itself, they must be specified.  As it uses the win32comext directory, -a must be used.  If you have built the win32com extensions from sources, then the second -a is required.</P><DIR>
-<DIR>
-
-<CODE><P>\src\python-1.5.1\tools\freeze\freeze.py -a win32com=%PYTHONEX%\com\win32comext -a win32com.mapi=%PYTHONEX%\com\build\release testmapi.py -m pywintypes -m pythoncom</P></DIR>
-</DIR>
-
-</CODE><P>Resulting testmapi.exe: 352,768 bytes</P>
-<H3>PipeTestService.py</H3>
-<P>This is a standard Python demo in the Win32 extensions.  It can be found in the "win32\demos\service" directory.</P>
-<H4>Command Line used</H4>
-<P>This will create a native NT Service EXE, dependent only on the main Python20.dll.  All other modules are built-in to the final .EXE</P><DIR>
-<DIR>
-
-<CODE><P>\src\python-1.5.1\tools\freeze\freeze.py -s service %PYTHONEX%\win32\demos\service\pipeTestService.py</P></DIR>
-</DIR>
-
-<P>Resulting pipeTestService.exe: </CODE><FONT FACE="Courier New" SIZE=2>533,504 bytes.</P></FONT></BODY>
-</HTML>
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/winmakemakefile.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/winmakemakefile.py
deleted file mode 100644
index 80c0730..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/freeze/winmakemakefile.py
+++ /dev/null
@@ -1,147 +0,0 @@
-import sys, os
-
-# Template used then the program is a GUI program
-WINMAINTEMPLATE = """
-#include <windows.h>
-
-int WINAPI WinMain(
-    HINSTANCE hInstance,      // handle to current instance
-    HINSTANCE hPrevInstance,  // handle to previous instance
-    LPSTR lpCmdLine,          // pointer to command line
-    int nCmdShow              // show state of window
-    )
-{
-    extern int Py_FrozenMain(int, char **);
-    PyImport_FrozenModules = _PyImport_FrozenModules;
-    return Py_FrozenMain(__argc, __argv);
-}
-"""
-
-SERVICETEMPLATE = """
-extern int PythonService_main(int, char **);
-
-int main( int argc, char **argv)
-{
-    PyImport_FrozenModules = _PyImport_FrozenModules;
-    return PythonService_main(argc, argv);
-}
-"""
-
-subsystem_details = {
-    # -s flag        : (C entry point template), (is it __main__?), (is it a DLL?)
-    'console'        : (None,                    1,                 0),
-    'windows'        : (WINMAINTEMPLATE,         1,                 0),
-    'service'        : (SERVICETEMPLATE,         0,                 0),
-    'com_dll'        : ("",                      0,                 1),
-}
-
-def get_custom_entry_point(subsystem):
-    try:
-        return subsystem_details[subsystem][:2]
-    except KeyError:
-        raise ValueError, "The subsystem %s is not known" % subsystem
-
-
-def makemakefile(outfp, vars, files, target):
-    save = sys.stdout
-    try:
-        sys.stdout = outfp
-        realwork(vars, files, target)
-    finally:
-        sys.stdout = save
-
-def realwork(vars, moddefns, target):
-    version_suffix = "%r%r" % sys.version_info[:2]
-    print "# Makefile for Microsoft Visual C++ generated by freeze.py script"
-    print
-    print 'target = %s' % target
-    print 'pythonhome = %s' % vars['prefix']
-    print
-    print 'DEBUG=0 # Set to 1 to use the _d versions of Python.'
-    print '!IF $(DEBUG)'
-    print 'debug_suffix=_d'
-    print 'c_debug=/Zi /Od /DDEBUG /D_DEBUG'
-    print 'l_debug=/DEBUG'
-    print 'temp_dir=Build\\Debug'
-    print '!ELSE'
-    print 'debug_suffix='
-    print 'c_debug=/Ox'
-    print 'l_debug='
-    print 'temp_dir=Build\\Release'
-    print '!ENDIF'
-    print
-
-    print '# The following line assumes you have built Python using the standard instructions'
-    print '# Otherwise fix the following line to point to the library.'
-    print 'pythonlib = "$(pythonhome)/pcbuild/python%s$(debug_suffix).lib"' % version_suffix
-    print
-
-    # We only ever write one "entry point" symbol - either
-    # "main" or "WinMain".  Therefore, there is no need to
-    # pass a subsystem switch to the linker as it works it
-    # out all by itself.  However, the subsystem _does_ determine
-    # the file extension and additional linker flags.
-    target_link_flags = ""
-    target_ext = ".exe"
-    if subsystem_details[vars['subsystem']][2]:
-        target_link_flags = "-dll"
-        target_ext = ".dll"
-
-
-    print "# As the target uses Python%s.dll, we must use this compiler option!" % version_suffix
-    print "cdl = /MD"
-    print
-    print "all: $(target)$(debug_suffix)%s" % (target_ext)
-    print
-
-    print '$(temp_dir):'
-    print '  if not exist $(temp_dir)\. mkdir $(temp_dir)'
-    print
-
-    objects = []
-    libs = ["shell32.lib", "comdlg32.lib", "wsock32.lib", "user32.lib", "oleaut32.lib"]
-    for moddefn in moddefns:
-        print "# Module", moddefn.name
-        for file in moddefn.sourceFiles:
-            base = os.path.basename(file)
-            base, ext = os.path.splitext(base)
-            objects.append(base + ".obj")
-            print '$(temp_dir)\%s.obj: "%s"' % (base, file)
-            print "\t@$(CC) -c -nologo /Fo$* $(cdl) $(c_debug) /D BUILD_FREEZE",
-            print '"-I$(pythonhome)/Include"  "-I$(pythonhome)/PC" \\'
-            print "\t\t$(cflags) $(cdebug) $(cinclude) \\"
-            extra = moddefn.GetCompilerOptions()
-            if extra:
-                print "\t\t%s \\" % (' '.join(extra),)
-            print '\t\t"%s"' % file
-            print
-
-        # Add .lib files this module needs
-        for modlib in moddefn.GetLinkerLibs():
-            if modlib not in libs:
-                libs.append(modlib)
-
-    print "ADDN_LINK_FILES=",
-    for addn in vars['addn_link']: print '"%s"' % (addn),
-    print ; print
-
-    print "OBJS=",
-    for obj in objects: print '"$(temp_dir)\%s"' % (obj),
-    print ; print
-
-    print "LIBS=",
-    for lib in libs: print '"%s"' % (lib),
-    print ; print
-
-    print "$(target)$(debug_suffix)%s: $(temp_dir) $(OBJS)" % (target_ext)
-    print "\tlink -out:$(target)$(debug_suffix)%s %s" % (target_ext, target_link_flags), "@<<"
-    print "\t$(OBJS)"
-    print "\t$(LIBS)"
-    print "\t$(ADDN_LINK_FILES)"
-    print "\t$(pythonlib) $(lcustom) $(l_debug)"
-    print "\t$(resources)"
-    print "<<"
-    print
-    print "clean:"
-    print "\t-rm -f *.obj"
-    print "\t-rm -f $(target).exe"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/gdb/libpython.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/gdb/libpython.py
deleted file mode 100644
index 652e07e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/gdb/libpython.py
+++ /dev/null
@@ -1,1447 +0,0 @@
-#!/usr/bin/python
-'''
-From gdb 7 onwards, gdb's build can be configured --with-python, allowing gdb
-to be extended with Python code e.g. for library-specific data visualizations,
-such as for the C++ STL types.  Documentation on this API can be seen at:
-http://sourceware.org/gdb/current/onlinedocs/gdb/Python-API.html
-
-
-This python module deals with the case when the process being debugged (the
-"inferior process" in gdb parlance) is itself python, or more specifically,
-linked against libpython.  In this situation, almost every item of data is a
-(PyObject*), and having the debugger merely print their addresses is not very
-enlightening.
-
-This module embeds knowledge about the implementation details of libpython so
-that we can emit useful visualizations e.g. a string, a list, a dict, a frame
-giving file/line information and the state of local variables
-
-In particular, given a gdb.Value corresponding to a PyObject* in the inferior
-process, we can generate a "proxy value" within the gdb process.  For example,
-given a PyObject* in the inferior process that is in fact a PyListObject*
-holding three PyObject* that turn out to be PyStringObject* instances, we can
-generate a proxy value within the gdb process that is a list of strings:
-  ["foo", "bar", "baz"]
-
-Doing so can be expensive for complicated graphs of objects, and could take
-some time, so we also have a "write_repr" method that writes a representation
-of the data to a file-like object.  This allows us to stop the traversal by
-having the file-like object raise an exception if it gets too much data.
-
-With both "proxyval" and "write_repr" we keep track of the set of all addresses
-visited so far in the traversal, to avoid infinite recursion due to cycles in
-the graph of object references.
-
-We try to defer gdb.lookup_type() invocations for python types until as late as
-possible: for a dynamically linked python binary, when the process starts in
-the debugger, the libpython.so hasn't been dynamically loaded yet, so none of
-the type names are known to the debugger
-
-The module also extends gdb with some python-specific commands.
-'''
-from __future__ import with_statement
-import gdb
-import sys
-
-# Look up the gdb.Type for some standard types:
-_type_char_ptr = gdb.lookup_type('char').pointer() # char*
-_type_unsigned_char_ptr = gdb.lookup_type('unsigned char').pointer() # unsigned char*
-_type_void_ptr = gdb.lookup_type('void').pointer() # void*
-_type_size_t = gdb.lookup_type('size_t')
-
-SIZEOF_VOID_P = _type_void_ptr.sizeof
-
-
-Py_TPFLAGS_HEAPTYPE = (1L << 9)
-
-Py_TPFLAGS_INT_SUBCLASS      = (1L << 23)
-Py_TPFLAGS_LONG_SUBCLASS     = (1L << 24)
-Py_TPFLAGS_LIST_SUBCLASS     = (1L << 25)
-Py_TPFLAGS_TUPLE_SUBCLASS    = (1L << 26)
-Py_TPFLAGS_STRING_SUBCLASS   = (1L << 27)
-Py_TPFLAGS_UNICODE_SUBCLASS  = (1L << 28)
-Py_TPFLAGS_DICT_SUBCLASS     = (1L << 29)
-Py_TPFLAGS_BASE_EXC_SUBCLASS = (1L << 30)
-Py_TPFLAGS_TYPE_SUBCLASS     = (1L << 31)
-
-
-MAX_OUTPUT_LEN=1024
-
-class NullPyObjectPtr(RuntimeError):
-    pass
-
-
-def safety_limit(val):
-    # Given a integer value from the process being debugged, limit it to some
-    # safety threshold so that arbitrary breakage within said process doesn't
-    # break the gdb process too much (e.g. sizes of iterations, sizes of lists)
-    return min(val, 1000)
-
-
-def safe_range(val):
-    # As per range, but don't trust the value too much: cap it to a safety
-    # threshold in case the data was corrupted
-    return xrange(safety_limit(val))
-
-
-class StringTruncated(RuntimeError):
-    pass
-
-class TruncatedStringIO(object):
-    '''Similar to cStringIO, but can truncate the output by raising a
-    StringTruncated exception'''
-    def __init__(self, maxlen=None):
-        self._val = ''
-        self.maxlen = maxlen
-
-    def write(self, data):
-        if self.maxlen:
-            if len(data) + len(self._val) > self.maxlen:
-                # Truncation:
-                self._val += data[0:self.maxlen - len(self._val)]
-                raise StringTruncated()
-
-        self._val += data
-
-    def getvalue(self):
-        return self._val
-
-class PyObjectPtr(object):
-    """
-    Class wrapping a gdb.Value that's a either a (PyObject*) within the
-    inferior process, or some subclass pointer e.g. (PyStringObject*)
-
-    There will be a subclass for every refined PyObject type that we care
-    about.
-
-    Note that at every stage the underlying pointer could be NULL, point
-    to corrupt data, etc; this is the debugger, after all.
-    """
-    _typename = 'PyObject'
-
-    def __init__(self, gdbval, cast_to=None):
-        if cast_to:
-            self._gdbval = gdbval.cast(cast_to)
-        else:
-            self._gdbval = gdbval
-
-    def field(self, name):
-        '''
-        Get the gdb.Value for the given field within the PyObject, coping with
-        some python 2 versus python 3 differences.
-
-        Various libpython types are defined using the "PyObject_HEAD" and
-        "PyObject_VAR_HEAD" macros.
-
-        In Python 2, this these are defined so that "ob_type" and (for a var
-        object) "ob_size" are fields of the type in question.
-
-        In Python 3, this is defined as an embedded PyVarObject type thus:
-           PyVarObject ob_base;
-        so that the "ob_size" field is located insize the "ob_base" field, and
-        the "ob_type" is most easily accessed by casting back to a (PyObject*).
-        '''
-        if self.is_null():
-            raise NullPyObjectPtr(self)
-
-        if name == 'ob_type':
-            pyo_ptr = self._gdbval.cast(PyObjectPtr.get_gdb_type())
-            return pyo_ptr.dereference()[name]
-
-        if name == 'ob_size':
-            try:
-            # Python 2:
-                return self._gdbval.dereference()[name]
-            except RuntimeError:
-                # Python 3:
-                return self._gdbval.dereference()['ob_base'][name]
-
-        # General case: look it up inside the object:
-        return self._gdbval.dereference()[name]
-
-    def pyop_field(self, name):
-        '''
-        Get a PyObjectPtr for the given PyObject* field within this PyObject,
-        coping with some python 2 versus python 3 differences.
-        '''
-        return PyObjectPtr.from_pyobject_ptr(self.field(name))
-
-    def write_field_repr(self, name, out, visited):
-        '''
-        Extract the PyObject* field named "name", and write its representation
-        to file-like object "out"
-        '''
-        field_obj = self.pyop_field(name)
-        field_obj.write_repr(out, visited)
-
-    def get_truncated_repr(self, maxlen):
-        '''
-        Get a repr-like string for the data, but truncate it at "maxlen" bytes
-        (ending the object graph traversal as soon as you do)
-        '''
-        out = TruncatedStringIO(maxlen)
-        try:
-            self.write_repr(out, set())
-        except StringTruncated:
-            # Truncation occurred:
-            return out.getvalue() + '...(truncated)'
-
-        # No truncation occurred:
-        return out.getvalue()
-
-    def type(self):
-        return PyTypeObjectPtr(self.field('ob_type'))
-
-    def is_null(self):
-        return 0 == long(self._gdbval)
-
-    def is_optimized_out(self):
-        '''
-        Is the value of the underlying PyObject* visible to the debugger?
-
-        This can vary with the precise version of the compiler used to build
-        Python, and the precise version of gdb.
-
-        See e.g. https://bugzilla.redhat.com/show_bug.cgi?id=556975 with
-        PyEval_EvalFrameEx's "f"
-        '''
-        return self._gdbval.is_optimized_out
-
-    def safe_tp_name(self):
-        try:
-            return self.type().field('tp_name').string()
-        except NullPyObjectPtr:
-            # NULL tp_name?
-            return 'unknown'
-        except RuntimeError:
-            # Can't even read the object at all?
-            return 'unknown'
-
-    def proxyval(self, visited):
-        '''
-        Scrape a value from the inferior process, and try to represent it
-        within the gdb process, whilst (hopefully) avoiding crashes when
-        the remote data is corrupt.
-
-        Derived classes will override this.
-
-        For example, a PyIntObject* with ob_ival 42 in the inferior process
-        should result in an int(42) in this process.
-
-        visited: a set of all gdb.Value pyobject pointers already visited
-        whilst generating this value (to guard against infinite recursion when
-        visiting object graphs with loops).  Analogous to Py_ReprEnter and
-        Py_ReprLeave
-        '''
-
-        class FakeRepr(object):
-            """
-            Class representing a non-descript PyObject* value in the inferior
-            process for when we don't have a custom scraper, intended to have
-            a sane repr().
-            """
-
-            def __init__(self, tp_name, address):
-                self.tp_name = tp_name
-                self.address = address
-
-            def __repr__(self):
-                # For the NULL pointer, we have no way of knowing a type, so
-                # special-case it as per
-                # http://bugs.python.org/issue8032#msg100882
-                if self.address == 0:
-                    return '0x0'
-                return '<%s at remote 0x%x>' % (self.tp_name, self.address)
-
-        return FakeRepr(self.safe_tp_name(),
-                        long(self._gdbval))
-
-    def write_repr(self, out, visited):
-        '''
-        Write a string representation of the value scraped from the inferior
-        process to "out", a file-like object.
-        '''
-        # Default implementation: generate a proxy value and write its repr
-        # However, this could involve a lot of work for complicated objects,
-        # so for derived classes we specialize this
-        return out.write(repr(self.proxyval(visited)))
-
-    @classmethod
-    def subclass_from_type(cls, t):
-        '''
-        Given a PyTypeObjectPtr instance wrapping a gdb.Value that's a
-        (PyTypeObject*), determine the corresponding subclass of PyObjectPtr
-        to use
-
-        Ideally, we would look up the symbols for the global types, but that
-        isn't working yet:
-          (gdb) python print gdb.lookup_symbol('PyList_Type')[0].value
-          Traceback (most recent call last):
-            File "<string>", line 1, in <module>
-          NotImplementedError: Symbol type not yet supported in Python scripts.
-          Error while executing Python code.
-
-        For now, we use tp_flags, after doing some string comparisons on the
-        tp_name for some special-cases that don't seem to be visible through
-        flags
-        '''
-        try:
-            tp_name = t.field('tp_name').string()
-            tp_flags = int(t.field('tp_flags'))
-        except RuntimeError:
-            # Handle any kind of error e.g. NULL ptrs by simply using the base
-            # class
-            return cls
-
-        #print 'tp_flags = 0x%08x' % tp_flags
-        #print 'tp_name = %r' % tp_name
-
-        name_map = {'bool': PyBoolObjectPtr,
-                    'classobj': PyClassObjectPtr,
-                    'instance': PyInstanceObjectPtr,
-                    'NoneType': PyNoneStructPtr,
-                    'frame': PyFrameObjectPtr,
-                    'set' : PySetObjectPtr,
-                    'frozenset' : PySetObjectPtr,
-                    'builtin_function_or_method' : PyCFunctionObjectPtr,
-                    }
-        if tp_name in name_map:
-            return name_map[tp_name]
-
-        if tp_flags & Py_TPFLAGS_HEAPTYPE:
-            return HeapTypeObjectPtr
-
-        if tp_flags & Py_TPFLAGS_INT_SUBCLASS:
-            return PyIntObjectPtr
-        if tp_flags & Py_TPFLAGS_LONG_SUBCLASS:
-            return PyLongObjectPtr
-        if tp_flags & Py_TPFLAGS_LIST_SUBCLASS:
-            return PyListObjectPtr
-        if tp_flags & Py_TPFLAGS_TUPLE_SUBCLASS:
-            return PyTupleObjectPtr
-        if tp_flags & Py_TPFLAGS_STRING_SUBCLASS:
-            return PyStringObjectPtr
-        if tp_flags & Py_TPFLAGS_UNICODE_SUBCLASS:
-            return PyUnicodeObjectPtr
-        if tp_flags & Py_TPFLAGS_DICT_SUBCLASS:
-            return PyDictObjectPtr
-        if tp_flags & Py_TPFLAGS_BASE_EXC_SUBCLASS:
-            return PyBaseExceptionObjectPtr
-        #if tp_flags & Py_TPFLAGS_TYPE_SUBCLASS:
-        #    return PyTypeObjectPtr
-
-        # Use the base class:
-        return cls
-
-    @classmethod
-    def from_pyobject_ptr(cls, gdbval):
-        '''
-        Try to locate the appropriate derived class dynamically, and cast
-        the pointer accordingly.
-        '''
-        try:
-            p = PyObjectPtr(gdbval)
-            cls = cls.subclass_from_type(p.type())
-            return cls(gdbval, cast_to=cls.get_gdb_type())
-        except RuntimeError:
-            # Handle any kind of error e.g. NULL ptrs by simply using the base
-            # class
-            pass
-        return cls(gdbval)
-
-    @classmethod
-    def get_gdb_type(cls):
-        return gdb.lookup_type(cls._typename).pointer()
-
-    def as_address(self):
-        return long(self._gdbval)
-
-
-class ProxyAlreadyVisited(object):
-    '''
-    Placeholder proxy to use when protecting against infinite recursion due to
-    loops in the object graph.
-
-    Analogous to the values emitted by the users of Py_ReprEnter and Py_ReprLeave
-    '''
-    def __init__(self, rep):
-        self._rep = rep
-
-    def __repr__(self):
-        return self._rep
-
-
-def _write_instance_repr(out, visited, name, pyop_attrdict, address):
-    '''Shared code for use by old-style and new-style classes:
-    write a representation to file-like object "out"'''
-    out.write('<')
-    out.write(name)
-
-    # Write dictionary of instance attributes:
-    if isinstance(pyop_attrdict, PyDictObjectPtr):
-        out.write('(')
-        first = True
-        for pyop_arg, pyop_val in pyop_attrdict.iteritems():
-            if not first:
-                out.write(', ')
-            first = False
-            out.write(pyop_arg.proxyval(visited))
-            out.write('=')
-            pyop_val.write_repr(out, visited)
-        out.write(')')
-    out.write(' at remote 0x%x>' % address)
-
-
-class InstanceProxy(object):
-
-    def __init__(self, cl_name, attrdict, address):
-        self.cl_name = cl_name
-        self.attrdict = attrdict
-        self.address = address
-
-    def __repr__(self):
-        if isinstance(self.attrdict, dict):
-            kwargs = ', '.join(["%s=%r" % (arg, val)
-                                for arg, val in self.attrdict.iteritems()])
-            return '<%s(%s) at remote 0x%x>' % (self.cl_name,
-                                                kwargs, self.address)
-        else:
-            return '<%s at remote 0x%x>' % (self.cl_name,
-                                            self.address)
-
-def _PyObject_VAR_SIZE(typeobj, nitems):
-    return ( ( typeobj.field('tp_basicsize') +
-               nitems * typeobj.field('tp_itemsize') +
-               (SIZEOF_VOID_P - 1)
-             ) & ~(SIZEOF_VOID_P - 1)
-           ).cast(_type_size_t)
-
-class HeapTypeObjectPtr(PyObjectPtr):
-    _typename = 'PyObject'
-
-    def get_attr_dict(self):
-        '''
-        Get the PyDictObject ptr representing the attribute dictionary
-        (or None if there's a problem)
-        '''
-        try:
-            typeobj = self.type()
-            dictoffset = int_from_int(typeobj.field('tp_dictoffset'))
-            if dictoffset != 0:
-                if dictoffset < 0:
-                    type_PyVarObject_ptr = gdb.lookup_type('PyVarObject').pointer()
-                    tsize = int_from_int(self._gdbval.cast(type_PyVarObject_ptr)['ob_size'])
-                    if tsize < 0:
-                        tsize = -tsize
-                    size = _PyObject_VAR_SIZE(typeobj, tsize)
-                    dictoffset += size
-                    assert dictoffset > 0
-                    assert dictoffset % SIZEOF_VOID_P == 0
-
-                dictptr = self._gdbval.cast(_type_char_ptr) + dictoffset
-                PyObjectPtrPtr = PyObjectPtr.get_gdb_type().pointer()
-                dictptr = dictptr.cast(PyObjectPtrPtr)
-                return PyObjectPtr.from_pyobject_ptr(dictptr.dereference())
-        except RuntimeError:
-            # Corrupt data somewhere; fail safe
-            pass
-
-        # Not found, or some kind of error:
-        return None
-
-    def proxyval(self, visited):
-        '''
-        Support for new-style classes.
-
-        Currently we just locate the dictionary using a transliteration to
-        python of _PyObject_GetDictPtr, ignoring descriptors
-        '''
-        # Guard against infinite loops:
-        if self.as_address() in visited:
-            return ProxyAlreadyVisited('<...>')
-        visited.add(self.as_address())
-
-        pyop_attr_dict = self.get_attr_dict()
-        if pyop_attr_dict:
-            attr_dict = pyop_attr_dict.proxyval(visited)
-        else:
-            attr_dict = {}
-        tp_name = self.safe_tp_name()
-
-        # New-style class:
-        return InstanceProxy(tp_name, attr_dict, long(self._gdbval))
-
-    def write_repr(self, out, visited):
-        # Guard against infinite loops:
-        if self.as_address() in visited:
-            out.write('<...>')
-            return
-        visited.add(self.as_address())
-
-        pyop_attrdict = self.get_attr_dict()
-        _write_instance_repr(out, visited,
-                             self.safe_tp_name(), pyop_attrdict, self.as_address())
-
-class ProxyException(Exception):
-    def __init__(self, tp_name, args):
-        self.tp_name = tp_name
-        self.args = args
-
-    def __repr__(self):
-        return '%s%r' % (self.tp_name, self.args)
-
-class PyBaseExceptionObjectPtr(PyObjectPtr):
-    """
-    Class wrapping a gdb.Value that's a PyBaseExceptionObject* i.e. an exception
-    within the process being debugged.
-    """
-    _typename = 'PyBaseExceptionObject'
-
-    def proxyval(self, visited):
-        # Guard against infinite loops:
-        if self.as_address() in visited:
-            return ProxyAlreadyVisited('(...)')
-        visited.add(self.as_address())
-        arg_proxy = self.pyop_field('args').proxyval(visited)
-        return ProxyException(self.safe_tp_name(),
-                              arg_proxy)
-
-    def write_repr(self, out, visited):
-        # Guard against infinite loops:
-        if self.as_address() in visited:
-            out.write('(...)')
-            return
-        visited.add(self.as_address())
-
-        out.write(self.safe_tp_name())
-        self.write_field_repr('args', out, visited)
-
-class PyBoolObjectPtr(PyObjectPtr):
-    """
-    Class wrapping a gdb.Value that's a PyBoolObject* i.e. one of the two
-    <bool> instances (Py_True/Py_False) within the process being debugged.
-    """
-    _typename = 'PyBoolObject'
-
-    def proxyval(self, visited):
-        if int_from_int(self.field('ob_ival')):
-            return True
-        else:
-            return False
-
-
-class PyClassObjectPtr(PyObjectPtr):
-    """
-    Class wrapping a gdb.Value that's a PyClassObject* i.e. a <classobj>
-    instance within the process being debugged.
-    """
-    _typename = 'PyClassObject'
-
-
-class BuiltInFunctionProxy(object):
-    def __init__(self, ml_name):
-        self.ml_name = ml_name
-
-    def __repr__(self):
-        return "<built-in function %s>" % self.ml_name
-
-class BuiltInMethodProxy(object):
-    def __init__(self, ml_name, pyop_m_self):
-        self.ml_name = ml_name
-        self.pyop_m_self = pyop_m_self
-
-    def __repr__(self):
-        return ('<built-in method %s of %s object at remote 0x%x>'
-                % (self.ml_name,
-                   self.pyop_m_self.safe_tp_name(),
-                   self.pyop_m_self.as_address())
-                )
-
-class PyCFunctionObjectPtr(PyObjectPtr):
-    """
-    Class wrapping a gdb.Value that's a PyCFunctionObject*
-    (see Include/methodobject.h and Objects/methodobject.c)
-    """
-    _typename = 'PyCFunctionObject'
-
-    def proxyval(self, visited):
-        m_ml = self.field('m_ml') # m_ml is a (PyMethodDef*)
-        ml_name = m_ml['ml_name'].string()
-
-        pyop_m_self = self.pyop_field('m_self')
-        if pyop_m_self.is_null():
-            return BuiltInFunctionProxy(ml_name)
-        else:
-            return BuiltInMethodProxy(ml_name, pyop_m_self)
-
-
-class PyCodeObjectPtr(PyObjectPtr):
-    """
-    Class wrapping a gdb.Value that's a PyCodeObject* i.e. a <code> instance
-    within the process being debugged.
-    """
-    _typename = 'PyCodeObject'
-
-    def addr2line(self, addrq):
-        '''
-        Get the line number for a given bytecode offset
-
-        Analogous to PyCode_Addr2Line; translated from pseudocode in
-        Objects/lnotab_notes.txt
-        '''
-        co_lnotab = self.pyop_field('co_lnotab').proxyval(set())
-
-        # Initialize lineno to co_firstlineno as per PyCode_Addr2Line
-        # not 0, as lnotab_notes.txt has it:
-        lineno = int_from_int(self.field('co_firstlineno'))
-
-        addr = 0
-        for addr_incr, line_incr in zip(co_lnotab[::2], co_lnotab[1::2]):
-            addr += ord(addr_incr)
-            if addr > addrq:
-                return lineno
-            lineno += ord(line_incr)
-        return lineno
-
-
-class PyDictObjectPtr(PyObjectPtr):
-    """
-    Class wrapping a gdb.Value that's a PyDictObject* i.e. a dict instance
-    within the process being debugged.
-    """
-    _typename = 'PyDictObject'
-
-    def iteritems(self):
-        '''
-        Yields a sequence of (PyObjectPtr key, PyObjectPtr value) pairs,
-        analagous to dict.iteritems()
-        '''
-        for i in safe_range(self.field('ma_mask') + 1):
-            ep = self.field('ma_table') + i
-            pyop_value = PyObjectPtr.from_pyobject_ptr(ep['me_value'])
-            if not pyop_value.is_null():
-                pyop_key = PyObjectPtr.from_pyobject_ptr(ep['me_key'])
-                yield (pyop_key, pyop_value)
-
-    def proxyval(self, visited):
-        # Guard against infinite loops:
-        if self.as_address() in visited:
-            return ProxyAlreadyVisited('{...}')
-        visited.add(self.as_address())
-
-        result = {}
-        for pyop_key, pyop_value in self.iteritems():
-            proxy_key = pyop_key.proxyval(visited)
-            proxy_value = pyop_value.proxyval(visited)
-            result[proxy_key] = proxy_value
-        return result
-
-    def write_repr(self, out, visited):
-        # Guard against infinite loops:
-        if self.as_address() in visited:
-            out.write('{...}')
-            return
-        visited.add(self.as_address())
-
-        out.write('{')
-        first = True
-        for pyop_key, pyop_value in self.iteritems():
-            if not first:
-                out.write(', ')
-            first = False
-            pyop_key.write_repr(out, visited)
-            out.write(': ')
-            pyop_value.write_repr(out, visited)
-        out.write('}')
-
-class PyInstanceObjectPtr(PyObjectPtr):
-    _typename = 'PyInstanceObject'
-
-    def proxyval(self, visited):
-        # Guard against infinite loops:
-        if self.as_address() in visited:
-            return ProxyAlreadyVisited('<...>')
-        visited.add(self.as_address())
-
-        # Get name of class:
-        in_class = self.pyop_field('in_class')
-        cl_name = in_class.pyop_field('cl_name').proxyval(visited)
-
-        # Get dictionary of instance attributes:
-        in_dict = self.pyop_field('in_dict').proxyval(visited)
-
-        # Old-style class:
-        return InstanceProxy(cl_name, in_dict, long(self._gdbval))
-
-    def write_repr(self, out, visited):
-        # Guard against infinite loops:
-        if self.as_address() in visited:
-            out.write('<...>')
-            return
-        visited.add(self.as_address())
-
-        # Old-style class:
-
-        # Get name of class:
-        in_class = self.pyop_field('in_class')
-        cl_name = in_class.pyop_field('cl_name').proxyval(visited)
-
-        # Get dictionary of instance attributes:
-        pyop_in_dict = self.pyop_field('in_dict')
-
-        _write_instance_repr(out, visited,
-                             cl_name, pyop_in_dict, self.as_address())
-
-class PyIntObjectPtr(PyObjectPtr):
-    _typename = 'PyIntObject'
-
-    def proxyval(self, visited):
-        result = int_from_int(self.field('ob_ival'))
-        return result
-
-class PyListObjectPtr(PyObjectPtr):
-    _typename = 'PyListObject'
-
-    def __getitem__(self, i):
-        # Get the gdb.Value for the (PyObject*) with the given index:
-        field_ob_item = self.field('ob_item')
-        return field_ob_item[i]
-
-    def proxyval(self, visited):
-        # Guard against infinite loops:
-        if self.as_address() in visited:
-            return ProxyAlreadyVisited('[...]')
-        visited.add(self.as_address())
-
-        result = [PyObjectPtr.from_pyobject_ptr(self[i]).proxyval(visited)
-                  for i in safe_range(int_from_int(self.field('ob_size')))]
-        return result
-
-    def write_repr(self, out, visited):
-        # Guard against infinite loops:
-        if self.as_address() in visited:
-            out.write('[...]')
-            return
-        visited.add(self.as_address())
-
-        out.write('[')
-        for i in safe_range(int_from_int(self.field('ob_size'))):
-            if i > 0:
-                out.write(', ')
-            element = PyObjectPtr.from_pyobject_ptr(self[i])
-            element.write_repr(out, visited)
-        out.write(']')
-
-class PyLongObjectPtr(PyObjectPtr):
-    _typename = 'PyLongObject'
-
-    def proxyval(self, visited):
-        '''
-        Python's Include/longobjrep.h has this declaration:
-           struct _longobject {
-               PyObject_VAR_HEAD
-               digit ob_digit[1];
-           };
-
-        with this description:
-            The absolute value of a number is equal to
-                 SUM(for i=0 through abs(ob_size)-1) ob_digit[i] * 2**(SHIFT*i)
-            Negative numbers are represented with ob_size < 0;
-            zero is represented by ob_size == 0.
-
-        where SHIFT can be either:
-            #define PyLong_SHIFT        30
-            #define PyLong_SHIFT        15
-        '''
-        ob_size = long(self.field('ob_size'))
-        if ob_size == 0:
-            return 0L
-
-        ob_digit = self.field('ob_digit')
-
-        if gdb.lookup_type('digit').sizeof == 2:
-            SHIFT = 15L
-        else:
-            SHIFT = 30L
-
-        digits = [long(ob_digit[i]) * 2**(SHIFT*i)
-                  for i in safe_range(abs(ob_size))]
-        result = sum(digits)
-        if ob_size < 0:
-            result = -result
-        return result
-
-
-class PyNoneStructPtr(PyObjectPtr):
-    """
-    Class wrapping a gdb.Value that's a PyObject* pointing to the
-    singleton (we hope) _Py_NoneStruct with ob_type PyNone_Type
-    """
-    _typename = 'PyObject'
-
-    def proxyval(self, visited):
-        return None
-
-
-class PyFrameObjectPtr(PyObjectPtr):
-    _typename = 'PyFrameObject'
-
-    def __init__(self, gdbval, cast_to):
-        PyObjectPtr.__init__(self, gdbval, cast_to)
-
-        if not self.is_optimized_out():
-            self.co = PyCodeObjectPtr.from_pyobject_ptr(self.field('f_code'))
-            self.co_name = self.co.pyop_field('co_name')
-            self.co_filename = self.co.pyop_field('co_filename')
-
-            self.f_lineno = int_from_int(self.field('f_lineno'))
-            self.f_lasti = int_from_int(self.field('f_lasti'))
-            self.co_nlocals = int_from_int(self.co.field('co_nlocals'))
-            self.co_varnames = PyTupleObjectPtr.from_pyobject_ptr(self.co.field('co_varnames'))
-
-    def iter_locals(self):
-        '''
-        Yield a sequence of (name,value) pairs of PyObjectPtr instances, for
-        the local variables of this frame
-        '''
-        if self.is_optimized_out():
-            return
-
-        f_localsplus = self.field('f_localsplus')
-        for i in safe_range(self.co_nlocals):
-            pyop_value = PyObjectPtr.from_pyobject_ptr(f_localsplus[i])
-            if not pyop_value.is_null():
-                pyop_name = PyObjectPtr.from_pyobject_ptr(self.co_varnames[i])
-                yield (pyop_name, pyop_value)
-
-    def iter_globals(self):
-        '''
-        Yield a sequence of (name,value) pairs of PyObjectPtr instances, for
-        the global variables of this frame
-        '''
-        if self.is_optimized_out():
-            return
-
-        pyop_globals = self.pyop_field('f_globals')
-        return pyop_globals.iteritems()
-
-    def iter_builtins(self):
-        '''
-        Yield a sequence of (name,value) pairs of PyObjectPtr instances, for
-        the builtin variables
-        '''
-        if self.is_optimized_out():
-            return
-
-        pyop_builtins = self.pyop_field('f_builtins')
-        return pyop_builtins.iteritems()
-
-    def get_var_by_name(self, name):
-        '''
-        Look for the named local variable, returning a (PyObjectPtr, scope) pair
-        where scope is a string 'local', 'global', 'builtin'
-
-        If not found, return (None, None)
-        '''
-        for pyop_name, pyop_value in self.iter_locals():
-            if name == pyop_name.proxyval(set()):
-                return pyop_value, 'local'
-        for pyop_name, pyop_value in self.iter_globals():
-            if name == pyop_name.proxyval(set()):
-                return pyop_value, 'global'
-        for pyop_name, pyop_value in self.iter_builtins():
-            if name == pyop_name.proxyval(set()):
-                return pyop_value, 'builtin'
-        return None, None
-
-    def filename(self):
-        '''Get the path of the current Python source file, as a string'''
-        if self.is_optimized_out():
-            return '(frame information optimized out)'
-        return self.co_filename.proxyval(set())
-
-    def current_line_num(self):
-        '''Get current line number as an integer (1-based)
-
-        Translated from PyFrame_GetLineNumber and PyCode_Addr2Line
-
-        See Objects/lnotab_notes.txt
-        '''
-        if self.is_optimized_out():
-            return None
-        f_trace = self.field('f_trace')
-        if long(f_trace) != 0:
-            # we have a non-NULL f_trace:
-            return self.f_lineno
-        else:
-            #try:
-            return self.co.addr2line(self.f_lasti)
-            #except ValueError:
-            #    return self.f_lineno
-
-    def current_line(self):
-        '''Get the text of the current source line as a string, with a trailing
-        newline character'''
-        if self.is_optimized_out():
-            return '(frame information optimized out)'
-        with open(self.filename(), 'r') as f:
-            all_lines = f.readlines()
-            # Convert from 1-based current_line_num to 0-based list offset:
-            return all_lines[self.current_line_num()-1]
-
-    def write_repr(self, out, visited):
-        if self.is_optimized_out():
-            out.write('(frame information optimized out)')
-            return
-        out.write('Frame 0x%x, for file %s, line %i, in %s ('
-                  % (self.as_address(),
-                     self.co_filename,
-                     self.current_line_num(),
-                     self.co_name))
-        first = True
-        for pyop_name, pyop_value in self.iter_locals():
-            if not first:
-                out.write(', ')
-            first = False
-
-            out.write(pyop_name.proxyval(visited))
-            out.write('=')
-            pyop_value.write_repr(out, visited)
-
-        out.write(')')
-
-class PySetObjectPtr(PyObjectPtr):
-    _typename = 'PySetObject'
-
-    def proxyval(self, visited):
-        # Guard against infinite loops:
-        if self.as_address() in visited:
-            return ProxyAlreadyVisited('%s(...)' % self.safe_tp_name())
-        visited.add(self.as_address())
-
-        members = []
-        table = self.field('table')
-        for i in safe_range(self.field('mask')+1):
-            setentry = table[i]
-            key = setentry['key']
-            if key != 0:
-                key_proxy = PyObjectPtr.from_pyobject_ptr(key).proxyval(visited)
-                if key_proxy != '<dummy key>':
-                    members.append(key_proxy)
-        if self.safe_tp_name() == 'frozenset':
-            return frozenset(members)
-        else:
-            return set(members)
-
-    def write_repr(self, out, visited):
-        out.write(self.safe_tp_name())
-
-        # Guard against infinite loops:
-        if self.as_address() in visited:
-            out.write('(...)')
-            return
-        visited.add(self.as_address())
-
-        out.write('([')
-        first = True
-        table = self.field('table')
-        for i in safe_range(self.field('mask')+1):
-            setentry = table[i]
-            key = setentry['key']
-            if key != 0:
-                pyop_key = PyObjectPtr.from_pyobject_ptr(key)
-                key_proxy = pyop_key.proxyval(visited) # FIXME!
-                if key_proxy != '<dummy key>':
-                    if not first:
-                        out.write(', ')
-                    first = False
-                    pyop_key.write_repr(out, visited)
-        out.write('])')
-
-
-class PyStringObjectPtr(PyObjectPtr):
-    _typename = 'PyStringObject'
-
-    def __str__(self):
-        field_ob_size = self.field('ob_size')
-        field_ob_sval = self.field('ob_sval')
-        char_ptr = field_ob_sval.address.cast(_type_unsigned_char_ptr)
-        return ''.join([chr(char_ptr[i]) for i in safe_range(field_ob_size)])
-
-    def proxyval(self, visited):
-        return str(self)
-
-class PyTupleObjectPtr(PyObjectPtr):
-    _typename = 'PyTupleObject'
-
-    def __getitem__(self, i):
-        # Get the gdb.Value for the (PyObject*) with the given index:
-        field_ob_item = self.field('ob_item')
-        return field_ob_item[i]
-
-    def proxyval(self, visited):
-        # Guard against infinite loops:
-        if self.as_address() in visited:
-            return ProxyAlreadyVisited('(...)')
-        visited.add(self.as_address())
-
-        result = tuple([PyObjectPtr.from_pyobject_ptr(self[i]).proxyval(visited)
-                        for i in safe_range(int_from_int(self.field('ob_size')))])
-        return result
-
-    def write_repr(self, out, visited):
-        # Guard against infinite loops:
-        if self.as_address() in visited:
-            out.write('(...)')
-            return
-        visited.add(self.as_address())
-
-        out.write('(')
-        for i in safe_range(int_from_int(self.field('ob_size'))):
-            if i > 0:
-                out.write(', ')
-            element = PyObjectPtr.from_pyobject_ptr(self[i])
-            element.write_repr(out, visited)
-        if self.field('ob_size') == 1:
-            out.write(',)')
-        else:
-            out.write(')')
-
-class PyTypeObjectPtr(PyObjectPtr):
-    _typename = 'PyTypeObject'
-
-
-if sys.maxunicode >= 0x10000:
-    _unichr = unichr
-else:
-    # Needed for proper surrogate support if sizeof(Py_UNICODE) is 2 in gdb
-    def _unichr(x):
-        if x < 0x10000:
-            return unichr(x)
-        x -= 0x10000
-        ch1 = 0xD800 | (x >> 10)
-        ch2 = 0xDC00 | (x & 0x3FF)
-        return unichr(ch1) + unichr(ch2)
-
-class PyUnicodeObjectPtr(PyObjectPtr):
-    _typename = 'PyUnicodeObject'
-
-    def char_width(self):
-        _type_Py_UNICODE = gdb.lookup_type('Py_UNICODE')
-        return _type_Py_UNICODE.sizeof
-
-    def proxyval(self, visited):
-        # From unicodeobject.h:
-        #     Py_ssize_t length;  /* Length of raw Unicode data in buffer */
-        #     Py_UNICODE *str;    /* Raw Unicode buffer */
-        field_length = long(self.field('length'))
-        field_str = self.field('str')
-
-        # Gather a list of ints from the Py_UNICODE array; these are either
-        # UCS-2 or UCS-4 code points:
-        if self.char_width() > 2:
-            Py_UNICODEs = [int(field_str[i]) for i in safe_range(field_length)]
-        else:
-            # A more elaborate routine if sizeof(Py_UNICODE) is 2 in the
-            # inferior process: we must join surrogate pairs.
-            Py_UNICODEs = []
-            i = 0
-            limit = safety_limit(field_length)
-            while i < limit:
-                ucs = int(field_str[i])
-                i += 1
-                if ucs < 0xD800 or ucs >= 0xDC00 or i == field_length:
-                    Py_UNICODEs.append(ucs)
-                    continue
-                # This could be a surrogate pair.
-                ucs2 = int(field_str[i])
-                if ucs2 < 0xDC00 or ucs2 > 0xDFFF:
-                    continue
-                code = (ucs & 0x03FF) << 10
-                code |= ucs2 & 0x03FF
-                code += 0x00010000
-                Py_UNICODEs.append(code)
-                i += 1
-
-        # Convert the int code points to unicode characters, and generate a
-        # local unicode instance.
-        # This splits surrogate pairs if sizeof(Py_UNICODE) is 2 here (in gdb).
-        result = u''.join([_unichr(ucs) for ucs in Py_UNICODEs])
-        return result
-
-
-def int_from_int(gdbval):
-    return int(str(gdbval))
-
-
-def stringify(val):
-    # TODO: repr() puts everything on one line; pformat can be nicer, but
-    # can lead to v.long results; this function isolates the choice
-    if True:
-        return repr(val)
-    else:
-        from pprint import pformat
-        return pformat(val)
-
-
-class PyObjectPtrPrinter:
-    "Prints a (PyObject*)"
-
-    def __init__ (self, gdbval):
-        self.gdbval = gdbval
-
-    def to_string (self):
-        pyop = PyObjectPtr.from_pyobject_ptr(self.gdbval)
-        if True:
-            return pyop.get_truncated_repr(MAX_OUTPUT_LEN)
-        else:
-            # Generate full proxy value then stringify it.
-            # Doing so could be expensive
-            proxyval = pyop.proxyval(set())
-            return stringify(proxyval)
-
-def pretty_printer_lookup(gdbval):
-    type = gdbval.type.unqualified()
-    if type.code == gdb.TYPE_CODE_PTR:
-        type = type.target().unqualified()
-        t = str(type)
-        if t in ("PyObject", "PyFrameObject"):
-            return PyObjectPtrPrinter(gdbval)
-
-"""
-During development, I've been manually invoking the code in this way:
-(gdb) python
-
-import sys
-sys.path.append('/home/david/coding/python-gdb')
-import libpython
-end
-
-then reloading it after each edit like this:
-(gdb) python reload(libpython)
-
-The following code should ensure that the prettyprinter is registered
-if the code is autoloaded by gdb when visiting libpython.so, provided
-that this python file is installed to the same path as the library (or its
-.debug file) plus a "-gdb.py" suffix, e.g:
-  /usr/lib/libpython2.6.so.1.0-gdb.py
-  /usr/lib/debug/usr/lib/libpython2.6.so.1.0.debug-gdb.py
-"""
-def register (obj):
-    if obj == None:
-        obj = gdb
-
-    # Wire up the pretty-printer
-    obj.pretty_printers.append(pretty_printer_lookup)
-
-register (gdb.current_objfile ())
-
-
-
-# Unfortunately, the exact API exposed by the gdb module varies somewhat
-# from build to build
-# See http://bugs.python.org/issue8279?#msg102276
-
-class Frame(object):
-    '''
-    Wrapper for gdb.Frame, adding various methods
-    '''
-    def __init__(self, gdbframe):
-        self._gdbframe = gdbframe
-
-    def older(self):
-        older = self._gdbframe.older()
-        if older:
-            return Frame(older)
-        else:
-            return None
-
-    def newer(self):
-        newer = self._gdbframe.newer()
-        if newer:
-            return Frame(newer)
-        else:
-            return None
-
-    def select(self):
-        '''If supported, select this frame and return True; return False if unsupported
-
-        Not all builds have a gdb.Frame.select method; seems to be present on Fedora 12
-        onwards, but absent on Ubuntu buildbot'''
-        if not hasattr(self._gdbframe, 'select'):
-            print ('Unable to select frame: '
-                   'this build of gdb does not expose a gdb.Frame.select method')
-            return False
-        self._gdbframe.select()
-        return True
-
-    def get_index(self):
-        '''Calculate index of frame, starting at 0 for the newest frame within
-        this thread'''
-        index = 0
-        # Go down until you reach the newest frame:
-        iter_frame = self
-        while iter_frame.newer():
-            index += 1
-            iter_frame = iter_frame.newer()
-        return index
-
-    def is_evalframeex(self):
-        '''Is this a PyEval_EvalFrameEx frame?'''
-        if self._gdbframe.name() == 'PyEval_EvalFrameEx':
-            '''
-            I believe we also need to filter on the inline
-            struct frame_id.inline_depth, only regarding frames with
-            an inline depth of 0 as actually being this function
-
-            So we reject those with type gdb.INLINE_FRAME
-            '''
-            if self._gdbframe.type() == gdb.NORMAL_FRAME:
-                # We have a PyEval_EvalFrameEx frame:
-                return True
-
-        return False
-
-    def get_pyop(self):
-        try:
-            f = self._gdbframe.read_var('f')
-            return PyFrameObjectPtr.from_pyobject_ptr(f)
-        except ValueError:
-            return None
-
-    @classmethod
-    def get_selected_frame(cls):
-        _gdbframe = gdb.selected_frame()
-        if _gdbframe:
-            return Frame(_gdbframe)
-        return None
-
-    @classmethod
-    def get_selected_python_frame(cls):
-        '''Try to obtain the Frame for the python code in the selected frame,
-        or None'''
-        frame = cls.get_selected_frame()
-
-        while frame:
-            if frame.is_evalframeex():
-                return frame
-            frame = frame.older()
-
-        # Not found:
-        return None
-
-    def print_summary(self):
-        if self.is_evalframeex():
-            pyop = self.get_pyop()
-            if pyop:
-                sys.stdout.write('#%i %s\n' % (self.get_index(), pyop.get_truncated_repr(MAX_OUTPUT_LEN)))
-                sys.stdout.write(pyop.current_line())
-            else:
-                sys.stdout.write('#%i (unable to read python frame information)\n' % self.get_index())
-        else:
-            sys.stdout.write('#%i\n' % self.get_index())
-
-class PyList(gdb.Command):
-    '''List the current Python source code, if any
-
-    Use
-       py-list START
-    to list at a different line number within the python source.
-
-    Use
-       py-list START, END
-    to list a specific range of lines within the python source.
-    '''
-
-    def __init__(self):
-        gdb.Command.__init__ (self,
-                              "py-list",
-                              gdb.COMMAND_FILES,
-                              gdb.COMPLETE_NONE)
-
-
-    def invoke(self, args, from_tty):
-        import re
-
-        start = None
-        end = None
-
-        m = re.match(r'\s*(\d+)\s*', args)
-        if m:
-            start = int(m.group(0))
-            end = start + 10
-
-        m = re.match(r'\s*(\d+)\s*,\s*(\d+)\s*', args)
-        if m:
-            start, end = map(int, m.groups())
-
-        frame = Frame.get_selected_python_frame()
-        if not frame:
-            print 'Unable to locate python frame'
-            return
-
-        pyop = frame.get_pyop()
-        if not pyop:
-            print 'Unable to read information on python frame'
-            return
-
-        filename = pyop.filename()
-        lineno = pyop.current_line_num()
-
-        if start is None:
-            start = lineno - 5
-            end = lineno + 5
-
-        if start<1:
-            start = 1
-
-        with open(filename, 'r') as f:
-            all_lines = f.readlines()
-            # start and end are 1-based, all_lines is 0-based;
-            # so [start-1:end] as a python slice gives us [start, end] as a
-            # closed interval
-            for i, line in enumerate(all_lines[start-1:end]):
-                linestr = str(i+start)
-                # Highlight current line:
-                if i + start == lineno:
-                    linestr = '>' + linestr
-                sys.stdout.write('%4s    %s' % (linestr, line))
-
-
-# ...and register the command:
-PyList()
-
-def move_in_stack(move_up):
-    '''Move up or down the stack (for the py-up/py-down command)'''
-    frame = Frame.get_selected_python_frame()
-    while frame:
-        if move_up:
-            iter_frame = frame.older()
-        else:
-            iter_frame = frame.newer()
-
-        if not iter_frame:
-            break
-
-        if iter_frame.is_evalframeex():
-            # Result:
-            if iter_frame.select():
-                iter_frame.print_summary()
-            return
-
-        frame = iter_frame
-
-    if move_up:
-        print 'Unable to find an older python frame'
-    else:
-        print 'Unable to find a newer python frame'
-
-class PyUp(gdb.Command):
-    'Select and print the python stack frame that called this one (if any)'
-    def __init__(self):
-        gdb.Command.__init__ (self,
-                              "py-up",
-                              gdb.COMMAND_STACK,
-                              gdb.COMPLETE_NONE)
-
-
-    def invoke(self, args, from_tty):
-        move_in_stack(move_up=True)
-
-class PyDown(gdb.Command):
-    'Select and print the python stack frame called by this one (if any)'
-    def __init__(self):
-        gdb.Command.__init__ (self,
-                              "py-down",
-                              gdb.COMMAND_STACK,
-                              gdb.COMPLETE_NONE)
-
-
-    def invoke(self, args, from_tty):
-        move_in_stack(move_up=False)
-
-# Not all builds of gdb have gdb.Frame.select
-if hasattr(gdb.Frame, 'select'):
-    PyUp()
-    PyDown()
-
-class PyBacktrace(gdb.Command):
-    'Display the current python frame and all the frames within its call stack (if any)'
-    def __init__(self):
-        gdb.Command.__init__ (self,
-                              "py-bt",
-                              gdb.COMMAND_STACK,
-                              gdb.COMPLETE_NONE)
-
-
-    def invoke(self, args, from_tty):
-        frame = Frame.get_selected_python_frame()
-        while frame:
-            if frame.is_evalframeex():
-                frame.print_summary()
-            frame = frame.older()
-
-PyBacktrace()
-
-class PyPrint(gdb.Command):
-    'Look up the given python variable name, and print it'
-    def __init__(self):
-        gdb.Command.__init__ (self,
-                              "py-print",
-                              gdb.COMMAND_DATA,
-                              gdb.COMPLETE_NONE)
-
-
-    def invoke(self, args, from_tty):
-        name = str(args)
-
-        frame = Frame.get_selected_python_frame()
-        if not frame:
-            print 'Unable to locate python frame'
-            return
-
-        pyop_frame = frame.get_pyop()
-        if not pyop_frame:
-            print 'Unable to read information on python frame'
-            return
-
-        pyop_var, scope = pyop_frame.get_var_by_name(name)
-
-        if pyop_var:
-            print ('%s %r = %s'
-                   % (scope,
-                      name,
-                      pyop_var.get_truncated_repr(MAX_OUTPUT_LEN)))
-        else:
-            print '%r not found' % name
-
-PyPrint()
-
-class PyLocals(gdb.Command):
-    'Look up the given python variable name, and print it'
-    def __init__(self):
-        gdb.Command.__init__ (self,
-                              "py-locals",
-                              gdb.COMMAND_DATA,
-                              gdb.COMPLETE_NONE)
-
-
-    def invoke(self, args, from_tty):
-        name = str(args)
-
-        frame = Frame.get_selected_python_frame()
-        if not frame:
-            print 'Unable to locate python frame'
-            return
-
-        pyop_frame = frame.get_pyop()
-        if not pyop_frame:
-            print 'Unable to read information on python frame'
-            return
-
-        for pyop_name, pyop_value in pyop_frame.iter_locals():
-            print ('%s = %s'
-                   % (pyop_name.proxyval(set()),
-                      pyop_value.get_truncated_repr(MAX_OUTPUT_LEN)))
-
-PyLocals()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/makelocalealias.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/makelocalealias.py
deleted file mode 100644
index 7585a10..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/makelocalealias.py
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/env python
-"""
-    Convert the X11 locale.alias file into a mapping dictionary suitable
-    for locale.py.
-
-    Written by Marc-Andre Lemburg <mal@genix.com>, 2004-12-10.
-
-"""
-import locale
-
-# Location of the alias file
-LOCALE_ALIAS = '/usr/share/X11/locale/locale.alias'
-
-def parse(filename):
-
-    f = open(filename)
-    lines = f.read().splitlines()
-    data = {}
-    for line in lines:
-        line = line.strip()
-        if not line:
-            continue
-        if line[:1] == '#':
-            continue
-        locale, alias = line.split()
-        # Strip ':'
-        if locale[-1] == ':':
-            locale = locale[:-1]
-        # Lower-case locale
-        locale = locale.lower()
-        # Ignore one letter locale mappings (except for 'c')
-        if len(locale) == 1 and locale != 'c':
-            continue
-        # Normalize encoding, if given
-        if '.' in locale:
-            lang, encoding = locale.split('.')[:2]
-            encoding = encoding.replace('-', '')
-            encoding = encoding.replace('_', '')
-            locale = lang + '.' + encoding
-            if encoding.lower() == 'utf8':
-                # Ignore UTF-8 mappings - this encoding should be
-                # available for all locales
-                continue
-        data[locale] = alias
-    return data
-
-def pprint(data):
-
-    items = data.items()
-    items.sort()
-    for k,v in items:
-        print '    %-40s%r,' % ('%r:' % k, v)
-
-def print_differences(data, olddata):
-
-    items = olddata.items()
-    items.sort()
-    for k, v in items:
-        if not data.has_key(k):
-            print '#    removed %r' % k
-        elif olddata[k] != data[k]:
-            print '#    updated %r -> %r to %r' % \
-                  (k, olddata[k], data[k])
-        # Additions are not mentioned
-
-if __name__ == '__main__':
-    data = locale.locale_alias.copy()
-    data.update(parse(LOCALE_ALIAS))
-    print_differences(data, locale.locale_alias)
-    print
-    print 'locale_alias = {'
-    pprint(data)
-    print '}'
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/msgfmt.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/msgfmt.py
deleted file mode 100644
index 25795d7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/msgfmt.py
+++ /dev/null
@@ -1,226 +0,0 @@
-#! /usr/bin/env python
-# -*- coding: iso-8859-1 -*-
-# Written by Martin v. Löwis <loewis@informatik.hu-berlin.de>
-
-"""Generate binary message catalog from textual translation description.
-
-This program converts a textual Uniforum-style message catalog (.po file) into
-a binary GNU catalog (.mo file).  This is essentially the same function as the
-GNU msgfmt program, however, it is a simpler implementation.
-
-Usage: msgfmt.py [OPTIONS] filename.po
-
-Options:
-    -o file
-    --output-file=file
-        Specify the output file to write to.  If omitted, output will go to a
-        file named filename.mo (based off the input file name).
-
-    -h
-    --help
-        Print this message and exit.
-
-    -V
-    --version
-        Display version information and exit.
-"""
-
-import sys
-import os
-import getopt
-import struct
-import array
-
-__version__ = "1.1"
-
-MESSAGES = {}
-
-
-\f
-def usage(code, msg=''):
-    print >> sys.stderr, __doc__
-    if msg:
-        print >> sys.stderr, msg
-    sys.exit(code)
-
-
-\f
-def add(id, str, fuzzy):
-    "Add a non-fuzzy translation to the dictionary."
-    global MESSAGES
-    if not fuzzy and str:
-        MESSAGES[id] = str
-
-
-\f
-def generate():
-    "Return the generated output."
-    global MESSAGES
-    keys = MESSAGES.keys()
-    # the keys are sorted in the .mo file
-    keys.sort()
-    offsets = []
-    ids = strs = ''
-    for id in keys:
-        # For each string, we need size and file offset.  Each string is NUL
-        # terminated; the NUL does not count into the size.
-        offsets.append((len(ids), len(id), len(strs), len(MESSAGES[id])))
-        ids += id + '\0'
-        strs += MESSAGES[id] + '\0'
-    output = ''
-    # The header is 7 32-bit unsigned integers.  We don't use hash tables, so
-    # the keys start right after the index tables.
-    # translated string.
-    keystart = 7*4+16*len(keys)
-    # and the values start after the keys
-    valuestart = keystart + len(ids)
-    koffsets = []
-    voffsets = []
-    # The string table first has the list of keys, then the list of values.
-    # Each entry has first the size of the string, then the file offset.
-    for o1, l1, o2, l2 in offsets:
-        koffsets += [l1, o1+keystart]
-        voffsets += [l2, o2+valuestart]
-    offsets = koffsets + voffsets
-    output = struct.pack("Iiiiiii",
-                         0x950412deL,       # Magic
-                         0,                 # Version
-                         len(keys),         # # of entries
-                         7*4,               # start of key index
-                         7*4+len(keys)*8,   # start of value index
-                         0, 0)              # size and offset of hash table
-    output += array.array("i", offsets).tostring()
-    output += ids
-    output += strs
-    return output
-
-
-\f
-def make(filename, outfile):
-    ID = 1
-    STR = 2
-
-    # Compute .mo name from .po name and arguments
-    if filename.endswith('.po'):
-        infile = filename
-    else:
-        infile = filename + '.po'
-    if outfile is None:
-        outfile = os.path.splitext(infile)[0] + '.mo'
-
-    try:
-        lines = open(infile).readlines()
-    except IOError, msg:
-        print >> sys.stderr, msg
-        sys.exit(1)
-
-    section = None
-    fuzzy = 0
-
-    # Parse the catalog
-    lno = 0
-    for l in lines:
-        lno += 1
-        # If we get a comment line after a msgstr, this is a new entry
-        if l[0] == '#' and section == STR:
-            add(msgid, msgstr, fuzzy)
-            section = None
-            fuzzy = 0
-        # Record a fuzzy mark
-        if l[:2] == '#,' and 'fuzzy' in l:
-            fuzzy = 1
-        # Skip comments
-        if l[0] == '#':
-            continue
-        # Now we are in a msgid section, output previous section
-        if l.startswith('msgid') and not l.startswith('msgid_plural'):
-            if section == STR:
-                add(msgid, msgstr, fuzzy)
-            section = ID
-            l = l[5:]
-            msgid = msgstr = ''
-            is_plural = False
-        # This is a message with plural forms
-        elif l.startswith('msgid_plural'):
-            if section != ID:
-                print >> sys.stderr, 'msgid_plural not preceeded by msgid on %s:%d' %\
-                    (infile, lno)
-                sys.exit(1)
-            l = l[12:]
-            msgid += '\0' # separator of singular and plural
-            is_plural = True
-        # Now we are in a msgstr section
-        elif l.startswith('msgstr'):
-            section = STR
-            if l.startswith('msgstr['):
-                if not is_plural:
-                    print >> sys.stderr, 'plural without msgid_plural on %s:%d' %\
-                        (infile, lno)
-                    sys.exit(1)
-                l = l.split(']', 1)[1]
-                if msgstr:
-                    msgstr += '\0' # Separator of the various plural forms
-            else:
-                if is_plural:
-                    print >> sys.stderr, 'indexed msgstr required for plural on  %s:%d' %\
-                        (infile, lno)
-                    sys.exit(1)
-                l = l[6:]
-        # Skip empty lines
-        l = l.strip()
-        if not l:
-            continue
-        # XXX: Does this always follow Python escape semantics?
-        l = eval(l)
-        if section == ID:
-            msgid += l
-        elif section == STR:
-            msgstr += l
-        else:
-            print >> sys.stderr, 'Syntax error on %s:%d' % (infile, lno), \
-                  'before:'
-            print >> sys.stderr, l
-            sys.exit(1)
-    # Add last entry
-    if section == STR:
-        add(msgid, msgstr, fuzzy)
-
-    # Compute output
-    output = generate()
-
-    try:
-        open(outfile,"wb").write(output)
-    except IOError,msg:
-        print >> sys.stderr, msg
-
-
-\f
-def main():
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'hVo:',
-                                   ['help', 'version', 'output-file='])
-    except getopt.error, msg:
-        usage(1, msg)
-
-    outfile = None
-    # parse options
-    for opt, arg in opts:
-        if opt in ('-h', '--help'):
-            usage(0)
-        elif opt in ('-V', '--version'):
-            print >> sys.stderr, "msgfmt.py", __version__
-            sys.exit(0)
-        elif opt in ('-o', '--output-file'):
-            outfile = arg
-    # do it
-    if not args:
-        print >> sys.stderr, 'No input file given'
-        print >> sys.stderr, "Try `msgfmt --help' for more information."
-        return
-
-    for filename in args:
-        make(filename, outfile)
-
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/pygettext.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/pygettext.py
deleted file mode 100644
index 1cf01cb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/i18n/pygettext.py
+++ /dev/null
@@ -1,669 +0,0 @@
-#! /usr/bin/env python
-# -*- coding: iso-8859-1 -*-
-# Originally written by Barry Warsaw <barry@zope.com>
-#
-# Minimally patched to make it even more xgettext compatible
-# by Peter Funk <pf@artcom-gmbh.de>
-#
-# 2002-11-22 Jürgen Hermann <jh@web.de>
-# Added checks that _() only contains string literals, and
-# command line args are resolved to module lists, i.e. you
-# can now pass a filename, a module or package name, or a
-# directory (including globbing chars, important for Win32).
-# Made docstring fit in 80 chars wide displays using pydoc.
-#
-
-# for selftesting
-try:
-    import fintl
-    _ = fintl.gettext
-except ImportError:
-    _ = lambda s: s
-
-__doc__ = _("""pygettext -- Python equivalent of xgettext(1)
-
-Many systems (Solaris, Linux, Gnu) provide extensive tools that ease the
-internationalization of C programs. Most of these tools are independent of
-the programming language and can be used from within Python programs.
-Martin von Loewis' work[1] helps considerably in this regard.
-
-There's one problem though; xgettext is the program that scans source code
-looking for message strings, but it groks only C (or C++). Python
-introduces a few wrinkles, such as dual quoting characters, triple quoted
-strings, and raw strings. xgettext understands none of this.
-
-Enter pygettext, which uses Python's standard tokenize module to scan
-Python source code, generating .pot files identical to what GNU xgettext[2]
-generates for C and C++ code. From there, the standard GNU tools can be
-used.
-
-A word about marking Python strings as candidates for translation. GNU
-xgettext recognizes the following keywords: gettext, dgettext, dcgettext,
-and gettext_noop. But those can be a lot of text to include all over your
-code. C and C++ have a trick: they use the C preprocessor. Most
-internationalized C source includes a #define for gettext() to _() so that
-what has to be written in the source is much less. Thus these are both
-translatable strings:
-
-    gettext("Translatable String")
-    _("Translatable String")
-
-Python of course has no preprocessor so this doesn't work so well.  Thus,
-pygettext searches only for _() by default, but see the -k/--keyword flag
-below for how to augment this.
-
- [1] http://www.python.org/workshops/1997-10/proceedings/loewis.html
- [2] http://www.gnu.org/software/gettext/gettext.html
-
-NOTE: pygettext attempts to be option and feature compatible with GNU
-xgettext where ever possible. However some options are still missing or are
-not fully implemented. Also, xgettext's use of command line switches with
-option arguments is broken, and in these cases, pygettext just defines
-additional switches.
-
-Usage: pygettext [options] inputfile ...
-
-Options:
-
-    -a
-    --extract-all
-        Extract all strings.
-
-    -d name
-    --default-domain=name
-        Rename the default output file from messages.pot to name.pot.
-
-    -E
-    --escape
-        Replace non-ASCII characters with octal escape sequences.
-
-    -D
-    --docstrings
-        Extract module, class, method, and function docstrings.  These do
-        not need to be wrapped in _() markers, and in fact cannot be for
-        Python to consider them docstrings. (See also the -X option).
-
-    -h
-    --help
-        Print this help message and exit.
-
-    -k word
-    --keyword=word
-        Keywords to look for in addition to the default set, which are:
-        %(DEFAULTKEYWORDS)s
-
-        You can have multiple -k flags on the command line.
-
-    -K
-    --no-default-keywords
-        Disable the default set of keywords (see above).  Any keywords
-        explicitly added with the -k/--keyword option are still recognized.
-
-    --no-location
-        Do not write filename/lineno location comments.
-
-    -n
-    --add-location
-        Write filename/lineno location comments indicating where each
-        extracted string is found in the source.  These lines appear before
-        each msgid.  The style of comments is controlled by the -S/--style
-        option.  This is the default.
-
-    -o filename
-    --output=filename
-        Rename the default output file from messages.pot to filename.  If
-        filename is `-' then the output is sent to standard out.
-
-    -p dir
-    --output-dir=dir
-        Output files will be placed in directory dir.
-
-    -S stylename
-    --style stylename
-        Specify which style to use for location comments.  Two styles are
-        supported:
-
-        Solaris  # File: filename, line: line-number
-        GNU      #: filename:line
-
-        The style name is case insensitive.  GNU style is the default.
-
-    -v
-    --verbose
-        Print the names of the files being processed.
-
-    -V
-    --version
-        Print the version of pygettext and exit.
-
-    -w columns
-    --width=columns
-        Set width of output to columns.
-
-    -x filename
-    --exclude-file=filename
-        Specify a file that contains a list of strings that are not be
-        extracted from the input files.  Each string to be excluded must
-        appear on a line by itself in the file.
-
-    -X filename
-    --no-docstrings=filename
-        Specify a file that contains a list of files (one per line) that
-        should not have their docstrings extracted.  This is only useful in
-        conjunction with the -D option above.
-
-If `inputfile' is -, standard input is read.
-""")
-
-import os
-import imp
-import sys
-import glob
-import time
-import getopt
-import token
-import tokenize
-import operator
-
-__version__ = '1.5'
-
-default_keywords = ['_']
-DEFAULTKEYWORDS = ', '.join(default_keywords)
-
-EMPTYSTRING = ''
-
-
-\f
-# The normal pot-file header. msgmerge and Emacs's po-mode work better if it's
-# there.
-pot_header = _('''\
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR ORGANIZATION
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\\n"
-"POT-Creation-Date: %(time)s\\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n"
-"Language-Team: LANGUAGE <LL@li.org>\\n"
-"MIME-Version: 1.0\\n"
-"Content-Type: text/plain; charset=CHARSET\\n"
-"Content-Transfer-Encoding: ENCODING\\n"
-"Generated-By: pygettext.py %(version)s\\n"
-
-''')
-
-\f
-def usage(code, msg=''):
-    print >> sys.stderr, __doc__ % globals()
-    if msg:
-        print >> sys.stderr, msg
-    sys.exit(code)
-
-
-\f
-escapes = []
-
-def make_escapes(pass_iso8859):
-    global escapes
-    if pass_iso8859:
-        # Allow iso-8859 characters to pass through so that e.g. 'msgid
-        # "Höhe"' would result not result in 'msgid "H\366he"'.  Otherwise we
-        # escape any character outside the 32..126 range.
-        mod = 128
-    else:
-        mod = 256
-    for i in range(256):
-        if 32 <= (i % mod) <= 126:
-            escapes.append(chr(i))
-        else:
-            escapes.append("\\%03o" % i)
-    escapes[ord('\\')] = '\\\\'
-    escapes[ord('\t')] = '\\t'
-    escapes[ord('\r')] = '\\r'
-    escapes[ord('\n')] = '\\n'
-    escapes[ord('\"')] = '\\"'
-
-
-def escape(s):
-    global escapes
-    s = list(s)
-    for i in range(len(s)):
-        s[i] = escapes[ord(s[i])]
-    return EMPTYSTRING.join(s)
-
-
-def safe_eval(s):
-    # unwrap quotes, safely
-    return eval(s, {'__builtins__':{}}, {})
-
-
-def normalize(s):
-    # This converts the various Python string types into a format that is
-    # appropriate for .po files, namely much closer to C style.
-    lines = s.split('\n')
-    if len(lines) == 1:
-        s = '"' + escape(s) + '"'
-    else:
-        if not lines[-1]:
-            del lines[-1]
-            lines[-1] = lines[-1] + '\n'
-        for i in range(len(lines)):
-            lines[i] = escape(lines[i])
-        lineterm = '\\n"\n"'
-        s = '""\n"' + lineterm.join(lines) + '"'
-    return s
-
-\f
-def containsAny(str, set):
-    """Check whether 'str' contains ANY of the chars in 'set'"""
-    return 1 in [c in str for c in set]
-
-
-def _visit_pyfiles(list, dirname, names):
-    """Helper for getFilesForName()."""
-    # get extension for python source files
-    if not globals().has_key('_py_ext'):
-        global _py_ext
-        _py_ext = [triple[0] for triple in imp.get_suffixes()
-                   if triple[2] == imp.PY_SOURCE][0]
-
-    # don't recurse into CVS directories
-    if 'CVS' in names:
-        names.remove('CVS')
-
-    # add all *.py files to list
-    list.extend(
-        [os.path.join(dirname, file) for file in names
-         if os.path.splitext(file)[1] == _py_ext]
-        )
-
-
-def _get_modpkg_path(dotted_name, pathlist=None):
-    """Get the filesystem path for a module or a package.
-
-    Return the file system path to a file for a module, and to a directory for
-    a package. Return None if the name is not found, or is a builtin or
-    extension module.
-    """
-    # split off top-most name
-    parts = dotted_name.split('.', 1)
-
-    if len(parts) > 1:
-        # we have a dotted path, import top-level package
-        try:
-            file, pathname, description = imp.find_module(parts[0], pathlist)
-            if file: file.close()
-        except ImportError:
-            return None
-
-        # check if it's indeed a package
-        if description[2] == imp.PKG_DIRECTORY:
-            # recursively handle the remaining name parts
-            pathname = _get_modpkg_path(parts[1], [pathname])
-        else:
-            pathname = None
-    else:
-        # plain name
-        try:
-            file, pathname, description = imp.find_module(
-                dotted_name, pathlist)
-            if file:
-                file.close()
-            if description[2] not in [imp.PY_SOURCE, imp.PKG_DIRECTORY]:
-                pathname = None
-        except ImportError:
-            pathname = None
-
-    return pathname
-
-
-def getFilesForName(name):
-    """Get a list of module files for a filename, a module or package name,
-    or a directory.
-    """
-    if not os.path.exists(name):
-        # check for glob chars
-        if containsAny(name, "*?[]"):
-            files = glob.glob(name)
-            list = []
-            for file in files:
-                list.extend(getFilesForName(file))
-            return list
-
-        # try to find module or package
-        name = _get_modpkg_path(name)
-        if not name:
-            return []
-
-    if os.path.isdir(name):
-        # find all python files in directory
-        list = []
-        os.path.walk(name, _visit_pyfiles, list)
-        return list
-    elif os.path.exists(name):
-        # a single file
-        return [name]
-
-    return []
-
-\f
-class TokenEater:
-    def __init__(self, options):
-        self.__options = options
-        self.__messages = {}
-        self.__state = self.__waiting
-        self.__data = []
-        self.__lineno = -1
-        self.__freshmodule = 1
-        self.__curfile = None
-
-    def __call__(self, ttype, tstring, stup, etup, line):
-        # dispatch
-##        import token
-##        print >> sys.stderr, 'ttype:', token.tok_name[ttype], \
-##              'tstring:', tstring
-        self.__state(ttype, tstring, stup[0])
-
-    def __waiting(self, ttype, tstring, lineno):
-        opts = self.__options
-        # Do docstring extractions, if enabled
-        if opts.docstrings and not opts.nodocstrings.get(self.__curfile):
-            # module docstring?
-            if self.__freshmodule:
-                if ttype == tokenize.STRING:
-                    self.__addentry(safe_eval(tstring), lineno, isdocstring=1)
-                    self.__freshmodule = 0
-                elif ttype not in (tokenize.COMMENT, tokenize.NL):
-                    self.__freshmodule = 0
-                return
-            # class docstring?
-            if ttype == tokenize.NAME and tstring in ('class', 'def'):
-                self.__state = self.__suiteseen
-                return
-        if ttype == tokenize.NAME and tstring in opts.keywords:
-            self.__state = self.__keywordseen
-
-    def __suiteseen(self, ttype, tstring, lineno):
-        # ignore anything until we see the colon
-        if ttype == tokenize.OP and tstring == ':':
-            self.__state = self.__suitedocstring
-
-    def __suitedocstring(self, ttype, tstring, lineno):
-        # ignore any intervening noise
-        if ttype == tokenize.STRING:
-            self.__addentry(safe_eval(tstring), lineno, isdocstring=1)
-            self.__state = self.__waiting
-        elif ttype not in (tokenize.NEWLINE, tokenize.INDENT,
-                           tokenize.COMMENT):
-            # there was no class docstring
-            self.__state = self.__waiting
-
-    def __keywordseen(self, ttype, tstring, lineno):
-        if ttype == tokenize.OP and tstring == '(':
-            self.__data = []
-            self.__lineno = lineno
-            self.__state = self.__openseen
-        else:
-            self.__state = self.__waiting
-
-    def __openseen(self, ttype, tstring, lineno):
-        if ttype == tokenize.OP and tstring == ')':
-            # We've seen the last of the translatable strings.  Record the
-            # line number of the first line of the strings and update the list
-            # of messages seen.  Reset state for the next batch.  If there
-            # were no strings inside _(), then just ignore this entry.
-            if self.__data:
-                self.__addentry(EMPTYSTRING.join(self.__data))
-            self.__state = self.__waiting
-        elif ttype == tokenize.STRING:
-            self.__data.append(safe_eval(tstring))
-        elif ttype not in [tokenize.COMMENT, token.INDENT, token.DEDENT,
-                           token.NEWLINE, tokenize.NL]:
-            # warn if we see anything else than STRING or whitespace
-            print >> sys.stderr, _(
-                '*** %(file)s:%(lineno)s: Seen unexpected token "%(token)s"'
-                ) % {
-                'token': tstring,
-                'file': self.__curfile,
-                'lineno': self.__lineno
-                }
-            self.__state = self.__waiting
-
-    def __addentry(self, msg, lineno=None, isdocstring=0):
-        if lineno is None:
-            lineno = self.__lineno
-        if not msg in self.__options.toexclude:
-            entry = (self.__curfile, lineno)
-            self.__messages.setdefault(msg, {})[entry] = isdocstring
-
-    def set_filename(self, filename):
-        self.__curfile = filename
-        self.__freshmodule = 1
-
-    def write(self, fp):
-        options = self.__options
-        timestamp = time.strftime('%Y-%m-%d %H:%M+%Z')
-        # The time stamp in the header doesn't have the same format as that
-        # generated by xgettext...
-        print >> fp, pot_header % {'time': timestamp, 'version': __version__}
-        # Sort the entries.  First sort each particular entry's keys, then
-        # sort all the entries by their first item.
-        reverse = {}
-        for k, v in self.__messages.items():
-            keys = v.keys()
-            keys.sort()
-            reverse.setdefault(tuple(keys), []).append((k, v))
-        rkeys = reverse.keys()
-        rkeys.sort()
-        for rkey in rkeys:
-            rentries = reverse[rkey]
-            rentries.sort()
-            for k, v in rentries:
-                isdocstring = 0
-                # If the entry was gleaned out of a docstring, then add a
-                # comment stating so.  This is to aid translators who may wish
-                # to skip translating some unimportant docstrings.
-                if reduce(operator.__add__, v.values()):
-                    isdocstring = 1
-                # k is the message string, v is a dictionary-set of (filename,
-                # lineno) tuples.  We want to sort the entries in v first by
-                # file name and then by line number.
-                v = v.keys()
-                v.sort()
-                if not options.writelocations:
-                    pass
-                # location comments are different b/w Solaris and GNU:
-                elif options.locationstyle == options.SOLARIS:
-                    for filename, lineno in v:
-                        d = {'filename': filename, 'lineno': lineno}
-                        print >>fp, _(
-                            '# File: %(filename)s, line: %(lineno)d') % d
-                elif options.locationstyle == options.GNU:
-                    # fit as many locations on one line, as long as the
-                    # resulting line length doesn't exceeds 'options.width'
-                    locline = '#:'
-                    for filename, lineno in v:
-                        d = {'filename': filename, 'lineno': lineno}
-                        s = _(' %(filename)s:%(lineno)d') % d
-                        if len(locline) + len(s) <= options.width:
-                            locline = locline + s
-                        else:
-                            print >> fp, locline
-                            locline = "#:" + s
-                    if len(locline) > 2:
-                        print >> fp, locline
-                if isdocstring:
-                    print >> fp, '#, docstring'
-                print >> fp, 'msgid', normalize(k)
-                print >> fp, 'msgstr ""\n'
-
-
-\f
-def main():
-    global default_keywords
-    try:
-        opts, args = getopt.getopt(
-            sys.argv[1:],
-            'ad:DEhk:Kno:p:S:Vvw:x:X:',
-            ['extract-all', 'default-domain=', 'escape', 'help',
-             'keyword=', 'no-default-keywords',
-             'add-location', 'no-location', 'output=', 'output-dir=',
-             'style=', 'verbose', 'version', 'width=', 'exclude-file=',
-             'docstrings', 'no-docstrings',
-             ])
-    except getopt.error, msg:
-        usage(1, msg)
-
-    # for holding option values
-    class Options:
-        # constants
-        GNU = 1
-        SOLARIS = 2
-        # defaults
-        extractall = 0 # FIXME: currently this option has no effect at all.
-        escape = 0
-        keywords = []
-        outpath = ''
-        outfile = 'messages.pot'
-        writelocations = 1
-        locationstyle = GNU
-        verbose = 0
-        width = 78
-        excludefilename = ''
-        docstrings = 0
-        nodocstrings = {}
-
-    options = Options()
-    locations = {'gnu' : options.GNU,
-                 'solaris' : options.SOLARIS,
-                 }
-
-    # parse options
-    for opt, arg in opts:
-        if opt in ('-h', '--help'):
-            usage(0)
-        elif opt in ('-a', '--extract-all'):
-            options.extractall = 1
-        elif opt in ('-d', '--default-domain'):
-            options.outfile = arg + '.pot'
-        elif opt in ('-E', '--escape'):
-            options.escape = 1
-        elif opt in ('-D', '--docstrings'):
-            options.docstrings = 1
-        elif opt in ('-k', '--keyword'):
-            options.keywords.append(arg)
-        elif opt in ('-K', '--no-default-keywords'):
-            default_keywords = []
-        elif opt in ('-n', '--add-location'):
-            options.writelocations = 1
-        elif opt in ('--no-location',):
-            options.writelocations = 0
-        elif opt in ('-S', '--style'):
-            options.locationstyle = locations.get(arg.lower())
-            if options.locationstyle is None:
-                usage(1, _('Invalid value for --style: %s') % arg)
-        elif opt in ('-o', '--output'):
-            options.outfile = arg
-        elif opt in ('-p', '--output-dir'):
-            options.outpath = arg
-        elif opt in ('-v', '--verbose'):
-            options.verbose = 1
-        elif opt in ('-V', '--version'):
-            print _('pygettext.py (xgettext for Python) %s') % __version__
-            sys.exit(0)
-        elif opt in ('-w', '--width'):
-            try:
-                options.width = int(arg)
-            except ValueError:
-                usage(1, _('--width argument must be an integer: %s') % arg)
-        elif opt in ('-x', '--exclude-file'):
-            options.excludefilename = arg
-        elif opt in ('-X', '--no-docstrings'):
-            fp = open(arg)
-            try:
-                while 1:
-                    line = fp.readline()
-                    if not line:
-                        break
-                    options.nodocstrings[line[:-1]] = 1
-            finally:
-                fp.close()
-
-    # calculate escapes
-    make_escapes(options.escape)
-
-    # calculate all keywords
-    options.keywords.extend(default_keywords)
-
-    # initialize list of strings to exclude
-    if options.excludefilename:
-        try:
-            fp = open(options.excludefilename)
-            options.toexclude = fp.readlines()
-            fp.close()
-        except IOError:
-            print >> sys.stderr, _(
-                "Can't read --exclude-file: %s") % options.excludefilename
-            sys.exit(1)
-    else:
-        options.toexclude = []
-
-    # resolve args to module lists
-    expanded = []
-    for arg in args:
-        if arg == '-':
-            expanded.append(arg)
-        else:
-            expanded.extend(getFilesForName(arg))
-    args = expanded
-
-    # slurp through all the files
-    eater = TokenEater(options)
-    for filename in args:
-        if filename == '-':
-            if options.verbose:
-                print _('Reading standard input')
-            fp = sys.stdin
-            closep = 0
-        else:
-            if options.verbose:
-                print _('Working on %s') % filename
-            fp = open(filename)
-            closep = 1
-        try:
-            eater.set_filename(filename)
-            try:
-                tokenize.tokenize(fp.readline, eater)
-            except tokenize.TokenError, e:
-                print >> sys.stderr, '%s: %s, line %d, column %d' % (
-                    e[0], filename, e[1][0], e[1][1])
-        finally:
-            if closep:
-                fp.close()
-
-    # write the output
-    if options.outfile == '-':
-        fp = sys.stdout
-        closep = 0
-    else:
-        if options.outpath:
-            options.outfile = os.path.join(options.outpath, options.outfile)
-        fp = open(options.outfile, 'w')
-        closep = 1
-    try:
-        eater.write(fp)
-    finally:
-        if closep:
-            fp.close()
-
-\f
-if __name__ == '__main__':
-    main()
-    # some more test strings
-    _(u'a unicode string')
-    # this one creates a warning
-    _('*** Seen unexpected token "%(token)s"') % {'token': 'test'}
-    _('more' 'than' 'one' 'string')
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/iobench/iobench.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/iobench/iobench.py
deleted file mode 100644
index 801e53a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/iobench/iobench.py
+++ /dev/null
@@ -1,539 +0,0 @@
-# -*- coding: utf-8 -*-
-# This file should be kept compatible with both Python 2.6 and Python >= 3.0.
-
-import time
-import os
-import re
-import sys
-import hashlib
-import functools
-import itertools
-from optparse import OptionParser
-
-out = sys.stdout
-
-TEXT_ENCODING = 'utf8'
-NEWLINES = 'lf'
-
-# Compatibility
-try:
-    xrange
-except NameError:
-    xrange = range
-
-def text_open(fn, mode, encoding=None):
-    try:
-        return open(fn, mode, encoding=encoding or TEXT_ENCODING)
-    except TypeError:
-        return open(fn, mode)
-
-def get_file_sizes():
-    for s in ['20 KB', '400 KB', '10 MB']:
-        size, unit = s.split()
-        size = int(size) * {'KB': 1024, 'MB': 1024 ** 2}[unit]
-        yield s.replace(' ', ''), size
-
-def get_binary_files():
-    return ((name + ".bin", size) for name, size in get_file_sizes())
-
-def get_text_files():
-    return (("%s-%s-%s.txt" % (name, TEXT_ENCODING, NEWLINES), size)
-        for name, size in get_file_sizes())
-
-def with_open_mode(mode):
-    def decorate(f):
-        f.file_open_mode = mode
-        return f
-    return decorate
-
-def with_sizes(*sizes):
-    def decorate(f):
-        f.file_sizes = sizes
-        return f
-    return decorate
-
-
-# Here begin the tests
-
-@with_open_mode("r")
-@with_sizes("medium")
-def read_bytewise(f):
-    """ read one unit at a time """
-    f.seek(0)
-    while f.read(1):
-        pass
-
-@with_open_mode("r")
-@with_sizes("medium")
-def read_small_chunks(f):
-    """ read 20 units at a time """
-    f.seek(0)
-    while f.read(20):
-        pass
-
-@with_open_mode("r")
-@with_sizes("medium")
-def read_big_chunks(f):
-    """ read 4096 units at a time """
-    f.seek(0)
-    while f.read(4096):
-        pass
-
-@with_open_mode("r")
-@with_sizes("small", "medium", "large")
-def read_whole_file(f):
-    """ read whole contents at once """
-    f.seek(0)
-    while f.read():
-        pass
-
-@with_open_mode("rt")
-@with_sizes("medium")
-def read_lines(f):
-    """ read one line at a time """
-    f.seek(0)
-    for line in f:
-        pass
-
-@with_open_mode("r")
-@with_sizes("medium")
-def seek_forward_bytewise(f):
-    """ seek forward one unit at a time """
-    f.seek(0, 2)
-    size = f.tell()
-    f.seek(0, 0)
-    for i in xrange(0, size - 1):
-        f.seek(i, 0)
-
-@with_open_mode("r")
-@with_sizes("medium")
-def seek_forward_blockwise(f):
-    """ seek forward 1000 units at a time """
-    f.seek(0, 2)
-    size = f.tell()
-    f.seek(0, 0)
-    for i in xrange(0, size - 1, 1000):
-        f.seek(i, 0)
-
-@with_open_mode("rb")
-@with_sizes("medium")
-def read_seek_bytewise(f):
-    """ alternate read & seek one unit """
-    f.seek(0)
-    while f.read(1):
-        f.seek(1, 1)
-
-@with_open_mode("rb")
-@with_sizes("medium")
-def read_seek_blockwise(f):
-    """ alternate read & seek 1000 units """
-    f.seek(0)
-    while f.read(1000):
-        f.seek(1000, 1)
-
-
-@with_open_mode("w")
-@with_sizes("small")
-def write_bytewise(f, source):
-    """ write one unit at a time """
-    for i in xrange(0, len(source)):
-        f.write(source[i:i+1])
-
-@with_open_mode("w")
-@with_sizes("medium")
-def write_small_chunks(f, source):
-    """ write 20 units at a time """
-    for i in xrange(0, len(source), 20):
-        f.write(source[i:i+20])
-
-@with_open_mode("w")
-@with_sizes("medium")
-def write_medium_chunks(f, source):
-    """ write 4096 units at a time """
-    for i in xrange(0, len(source), 4096):
-        f.write(source[i:i+4096])
-
-@with_open_mode("w")
-@with_sizes("large")
-def write_large_chunks(f, source):
-    """ write 1e6 units at a time """
-    for i in xrange(0, len(source), 1000000):
-        f.write(source[i:i+1000000])
-
-
-@with_open_mode("w+")
-@with_sizes("small")
-def modify_bytewise(f, source):
-    """ modify one unit at a time """
-    f.seek(0)
-    for i in xrange(0, len(source)):
-        f.write(source[i:i+1])
-
-@with_open_mode("w+")
-@with_sizes("medium")
-def modify_small_chunks(f, source):
-    """ modify 20 units at a time """
-    f.seek(0)
-    for i in xrange(0, len(source), 20):
-        f.write(source[i:i+20])
-
-@with_open_mode("w+")
-@with_sizes("medium")
-def modify_medium_chunks(f, source):
-    """ modify 4096 units at a time """
-    f.seek(0)
-    for i in xrange(0, len(source), 4096):
-        f.write(source[i:i+4096])
-
-@with_open_mode("wb+")
-@with_sizes("medium")
-def modify_seek_forward_bytewise(f, source):
-    """ alternate write & seek one unit """
-    f.seek(0)
-    for i in xrange(0, len(source), 2):
-        f.write(source[i:i+1])
-        f.seek(i+2)
-
-@with_open_mode("wb+")
-@with_sizes("medium")
-def modify_seek_forward_blockwise(f, source):
-    """ alternate write & seek 1000 units """
-    f.seek(0)
-    for i in xrange(0, len(source), 2000):
-        f.write(source[i:i+1000])
-        f.seek(i+2000)
-
-# XXX the 2 following tests don't work with py3k's text IO
-@with_open_mode("wb+")
-@with_sizes("medium")
-def read_modify_bytewise(f, source):
-    """ alternate read & write one unit """
-    f.seek(0)
-    for i in xrange(0, len(source), 2):
-        f.read(1)
-        f.write(source[i+1:i+2])
-
-@with_open_mode("wb+")
-@with_sizes("medium")
-def read_modify_blockwise(f, source):
-    """ alternate read & write 1000 units """
-    f.seek(0)
-    for i in xrange(0, len(source), 2000):
-        f.read(1000)
-        f.write(source[i+1000:i+2000])
-
-
-read_tests = [
-    read_bytewise, read_small_chunks, read_lines, read_big_chunks,
-    None, read_whole_file, None,
-    seek_forward_bytewise, seek_forward_blockwise,
-    read_seek_bytewise, read_seek_blockwise,
-]
-
-write_tests = [
-    write_bytewise, write_small_chunks, write_medium_chunks, write_large_chunks,
-]
-
-modify_tests = [
-    modify_bytewise, modify_small_chunks, modify_medium_chunks,
-    None,
-    modify_seek_forward_bytewise, modify_seek_forward_blockwise,
-    read_modify_bytewise, read_modify_blockwise,
-]
-
-def run_during(duration, func):
-    _t = time.time
-    n = 0
-    start = os.times()
-    start_timestamp = _t()
-    real_start = start[4] or start_timestamp
-    while True:
-        func()
-        n += 1
-        if _t() - start_timestamp > duration:
-            break
-    end = os.times()
-    real = (end[4] if start[4] else time.time()) - real_start
-    return n, real, sum(end[0:2]) - sum(start[0:2])
-
-def warm_cache(filename):
-    with open(filename, "rb") as f:
-        f.read()
-
-
-def run_all_tests(options):
-    def print_label(filename, func):
-        name = re.split(r'[-.]', filename)[0]
-        out.write(
-            ("[%s] %s... "
-                % (name.center(7), func.__doc__.strip())
-            ).ljust(52))
-        out.flush()
-
-    def print_results(size, n, real, cpu):
-        bw = n * float(size) / 1024 ** 2 / real
-        bw = ("%4d MB/s" if bw > 100 else "%.3g MB/s") % bw
-        out.write(bw.rjust(12) + "\n")
-        if cpu < 0.90 * real:
-            out.write("   warning: test above used only %d%% CPU, "
-                "result may be flawed!\n" % (100.0 * cpu / real))
-
-    def run_one_test(name, size, open_func, test_func, *args):
-        mode = test_func.file_open_mode
-        print_label(name, test_func)
-        if "w" not in mode or "+" in mode:
-            warm_cache(name)
-        with open_func(name) as f:
-            n, real, cpu = run_during(1.5, lambda: test_func(f, *args))
-        print_results(size, n, real, cpu)
-
-    def run_test_family(tests, mode_filter, files, open_func, *make_args):
-        for test_func in tests:
-            if test_func is None:
-                out.write("\n")
-                continue
-            if mode_filter in test_func.file_open_mode:
-                continue
-            for s in test_func.file_sizes:
-                name, size = files[size_names[s]]
-                #name += file_ext
-                args = tuple(f(name, size) for f in make_args)
-                run_one_test(name, size,
-                    open_func, test_func, *args)
-
-    size_names = {
-        "small": 0,
-        "medium": 1,
-        "large": 2,
-    }
-
-    binary_files = list(get_binary_files())
-    text_files = list(get_text_files())
-    if "b" in options:
-        print("Binary unit = one byte")
-    if "t" in options:
-        print("Text unit = one character (%s-decoded)" % TEXT_ENCODING)
-
-    # Binary reads
-    if "b" in options and "r" in options:
-        print("\n** Binary input **\n")
-        run_test_family(read_tests, "t", binary_files, lambda fn: open(fn, "rb"))
-
-    # Text reads
-    if "t" in options and "r" in options:
-        print("\n** Text input **\n")
-        run_test_family(read_tests, "b", text_files, lambda fn: text_open(fn, "r"))
-
-    # Binary writes
-    if "b" in options and "w" in options:
-        print("\n** Binary append **\n")
-        def make_test_source(name, size):
-            with open(name, "rb") as f:
-                return f.read()
-        run_test_family(write_tests, "t", binary_files,
-            lambda fn: open(os.devnull, "wb"), make_test_source)
-
-    # Text writes
-    if "t" in options and "w" in options:
-        print("\n** Text append **\n")
-        def make_test_source(name, size):
-            with text_open(name, "r") as f:
-                return f.read()
-        run_test_family(write_tests, "b", text_files,
-            lambda fn: text_open(os.devnull, "w"), make_test_source)
-
-    # Binary overwrites
-    if "b" in options and "w" in options:
-        print("\n** Binary overwrite **\n")
-        def make_test_source(name, size):
-            with open(name, "rb") as f:
-                return f.read()
-        run_test_family(modify_tests, "t", binary_files,
-            lambda fn: open(fn, "r+b"), make_test_source)
-
-    # Text overwrites
-    if "t" in options and "w" in options:
-        print("\n** Text overwrite **\n")
-        def make_test_source(name, size):
-            with text_open(name, "r") as f:
-                return f.read()
-        run_test_family(modify_tests, "b", text_files,
-            lambda fn: open(fn, "r+"), make_test_source)
-
-
-def prepare_files():
-    print("Preparing files...")
-    # Binary files
-    for name, size in get_binary_files():
-        if os.path.isfile(name) and os.path.getsize(name) == size:
-            continue
-        with open(name, "wb") as f:
-            f.write(os.urandom(size))
-    # Text files
-    chunk = []
-    with text_open(__file__, "rU", encoding='utf8') as f:
-        for line in f:
-            if line.startswith("# <iobench text chunk marker>"):
-                break
-        else:
-            raise RuntimeError(
-                "Couldn't find chunk marker in %s !" % __file__)
-        if NEWLINES == "all":
-            it = itertools.cycle(["\n", "\r", "\r\n"])
-        else:
-            it = itertools.repeat(
-                {"cr": "\r", "lf": "\n", "crlf": "\r\n"}[NEWLINES])
-        chunk = "".join(line.replace("\n", next(it)) for line in f)
-        if isinstance(chunk, bytes):
-            chunk = chunk.decode('utf8')
-        chunk = chunk.encode(TEXT_ENCODING)
-    for name, size in get_text_files():
-        if os.path.isfile(name) and os.path.getsize(name) == size:
-            continue
-        head = chunk * (size // len(chunk))
-        tail = chunk[:size % len(chunk)]
-        # Adjust tail to end on a character boundary
-        while True:
-            try:
-                tail.decode(TEXT_ENCODING)
-                break
-            except UnicodeDecodeError:
-                tail = tail[:-1]
-        with open(name, "wb") as f:
-            f.write(head)
-            f.write(tail)
-
-def main():
-    global TEXT_ENCODING, NEWLINES
-
-    usage = "usage: %prog [-h|--help] [options]"
-    parser = OptionParser(usage=usage)
-    parser.add_option("-b", "--binary",
-                      action="store_true", dest="binary", default=False,
-                      help="run binary I/O tests")
-    parser.add_option("-t", "--text",
-                      action="store_true", dest="text", default=False,
-                      help="run text I/O tests")
-    parser.add_option("-r", "--read",
-                      action="store_true", dest="read", default=False,
-                      help="run read tests")
-    parser.add_option("-w", "--write",
-                      action="store_true", dest="write", default=False,
-                      help="run write & modify tests")
-    parser.add_option("-E", "--encoding",
-                      action="store", dest="encoding", default=None,
-                      help="encoding for text tests (default: %s)" % TEXT_ENCODING)
-    parser.add_option("-N", "--newlines",
-                      action="store", dest="newlines", default='lf',
-                      help="line endings for text tests "
-                           "(one of: {lf (default), cr, crlf, all})")
-    options, args = parser.parse_args()
-    if args:
-        parser.error("unexpected arguments")
-    NEWLINES = options.newlines.lower()
-    if NEWLINES not in ('lf', 'cr', 'crlf', 'all'):
-        parser.error("invalid 'newlines' option: %r" % NEWLINES)
-
-    test_options = ""
-    if options.read:
-        test_options += "r"
-    if options.write:
-        test_options += "w"
-    elif not options.read:
-        test_options += "rw"
-    if options.text:
-        test_options += "t"
-    if options.binary:
-        test_options += "b"
-    elif not options.text:
-        test_options += "tb"
-
-    if options.encoding:
-        TEXT_ENCODING = options.encoding
-
-    prepare_files()
-    run_all_tests(test_options)
-
-if __name__ == "__main__":
-    main()
-
-
-# -- This part to exercise text reading. Don't change anything! --
-# <iobench text chunk marker>
-
-"""
-1.
-Gáttir allar,
-áðr gangi fram,
-um skoðask skyli,
-um skyggnast skyli,
-því at óvíst er at vita,
-hvar óvinir
-sitja á fleti fyrir.
-
-2.
-Gefendr heilir!
-Gestr er inn kominn,
-hvar skal sitja sjá?
-Mjök er bráðr,
-sá er á bröndum skal
-síns of freista frama.
-
-3.
-Elds er þörf,
-þeims inn er kominn
-ok á kné kalinn;
-matar ok váða
-er manni þörf,
-þeim er hefr um fjall farit.
-
-4.
-Vatns er þörf,
-þeim er til verðar kemr,
-þerru ok þjóðlaðar,
-góðs of æðis,
-ef sér geta mætti,
-orðs ok endrþögu.
-
-5.
-Vits er þörf,
-þeim er víða ratar;
-dælt er heima hvat;
-at augabragði verðr,
-sá er ekki kann
-ok með snotrum sitr.
-
-6.
-At hyggjandi sinni
-skyli-t maðr hræsinn vera,
-heldr gætinn at geði;
-þá er horskr ok þögull
-kemr heimisgarða til,
-sjaldan verðr víti vörum,
-því at óbrigðra vin
-fær maðr aldregi
-en mannvit mikit.
-
-7.
-Inn vari gestr,
-er til verðar kemr,
-þunnu hljóði þegir,
-eyrum hlýðir,
-en augum skoðar;
-svá nýsisk fróðra hverr fyrir.
-
-8.
-Hinn er sæll,
-er sér of getr
-lof ok líknstafi;
-ódælla er við þat,
-er maðr eiga skal
-annars brjóstum í.
-"""
-
-"""
-C'est revenir tard, je le sens, sur un sujet trop rebattu et déjà presque oublié. Mon état, qui ne me permet plus aucun travail suivi, mon aversion pour le genre polémique, ont causé ma lenteur à écrire et ma répugnance à publier. J'aurais même tout à fait supprimé ces Lettres, ou plutôt je lie les aurais point écrites, s'il n'eût été question que de moi : Mais ma patrie ne m'est pas tellement devenue étrangère que je puisse voir tranquillement opprimer ses citoyens, surtout lorsqu'ils n'ont compromis leurs droits qu'en défendant ma cause. Je serais le dernier des hommes si dans une telle occasion j'écoutais un sentiment qui n'est plus ni douceur ni patience, mais faiblesse et lâcheté, dans celui qu'il empêche de remplir son devoir.
-Rien de moins important pour le public, j'en conviens, que la matière de ces lettres. La constitution d'une petite République, le sort d'un petit particulier, l'exposé de quelques injustices, la réfutation de quelques sophismes ; tout cela n'a rien en soi d'assez considérable pour mériter beaucoup de lecteurs : mais si mes sujets sont petits mes objets sont grands, et dignes de l'attention de tout honnête homme. Laissons Genève à sa place, et Rousseau dans sa dépression ; mais la religion, mais la liberté, la justice ! voilà, qui que vous soyez, ce qui n'est pas au-dessous de vous.
-Qu'on ne cherche pas même ici dans le style le dédommagement de l'aridité de la matière. Ceux que quelques traits heureux de ma plume ont si fort irrités trouveront de quoi s'apaiser dans ces lettres, L'honneur de défendre un opprimé eût enflammé mon coeur si j'avais parlé pour un autre. Réduit au triste emploi de me défendre moi-même, j'ai dû me borner à raisonner ; m'échauffer eût été m'avilir. J'aurai donc trouvé grâce en ce point devant ceux qui s'imaginent qu'il est essentiel à la vérité d'être dite froidement ; opinion que pourtant j'ai peine à comprendre. Lorsqu'une vive persuasion nous anime, le moyen d'employer un langage glacé ? Quand Archimède tout transporté courait nu dans les rues de Syracuse, en avait-il moins trouvé la vérité parce qu'il se passionnait pour elle ? Tout au contraire, celui qui la sent ne peut s'abstenir de l'adorer ; celui qui demeure froid ne l'a pas vue.
-Quoi qu'il en soit, je prie les lecteurs de vouloir bien mettre à part mon beau style, et d'examiner seulement si je raisonne bien ou mal ; car enfin, de cela seul qu'un auteur s'exprime en bons termes, je ne vois pas comment il peut s'ensuivre que cet auteur ne sait ce qu'il dit.
-"""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/README.txt b/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/README.txt
deleted file mode 100644
index 1a6961c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/README.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-Packaging Python as a Microsoft Installer Package (MSI)
-=======================================================
-
-Using this library, Python can be packaged as a MS-Windows
-MSI file. To generate an installer package, you need
-a build tree. By default, the build tree root directory
-is assumed to be in "../..". This location can be changed
-by adding a file config.py; see the beginning of msi.py
-for additional customization options.
-
-The packaging process assumes that binaries have been 
-generated according to the instructions in PCBuild/README.txt,
-and that you have either Visual Studio or the Platform SDK
-installed. In addition, you need the Python COM extensions,
-either from PythonWin, or from ActivePython.
-
-To invoke the script, open a cmd.exe window which has 
-cabarc.exe in its PATH (e.g. "Visual Studio .NET 2003
-Command Prompt"). Then invoke
-
-<path-to-python.exe> msi.py
-
-If everything succeeds, pythonX.Y.Z.msi is generated
-in the current directory.
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/crtlicense.txt b/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/crtlicense.txt
deleted file mode 100644
index 79294f2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/crtlicense.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-Additional Conditions for this Windows binary build
----------------------------------------------------
-
-This program is linked with and uses Microsoft Distributable Code,
-copyrighted by Microsoft Corporation. The Microsoft Distributable Code
-includes the following files:
-
-msvcr90.dll
-msvcp90.dll
-msvcm90.dll
-
-If you further distribute programs that include the Microsoft
-Distributable Code, you must comply with the restrictions on
-distribution specified by Microsoft. In particular, you must require
-distributors and external end users to agree to terms that protect the
-Microsoft Distributable Code at least as much as Microsoft's own
-requirements for the Distributable Code. See Microsoft's documentation
-(included in its developer tools and on its website at microsoft.com)
-for specific details.
-
-Redistribution of the Windows binary build of the Python interpreter
-complies with this agreement, provided that you do not:
-
-- alter any copyright, trademark or patent notice in Microsoft's
-Distributable Code;
-
-- use Microsoft's trademarks in your programs' names or in a way that
-suggests your programs come from or are endorsed by Microsoft;
-
-- distribute Microsoft's Distributable Code to run on a platform other
-than Microsoft operating systems, run-time technologies or application
-platforms; or
-
-- include Microsoft Distributable Code in malicious, deceptive or
-unlawful programs.
-
-These restrictions apply only to the Microsoft Distributable Code as
-defined above, not to Python itself or any programs running on the
-Python interpreter. The redistribution of the Python interpreter and
-libraries is governed by the Python Software License included with this
-file, or by other licenses as marked.
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msi.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msi.py
deleted file mode 100644
index c5bf6ec..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msi.py
+++ /dev/null
@@ -1,1398 +0,0 @@
-# Python MSI Generator
-# (C) 2003 Martin v. Loewis
-# See "FOO" in comments refers to MSDN sections with the title FOO.
-import msilib, schema, sequence, os, glob, time, re, shutil, zipfile
-from msilib import Feature, CAB, Directory, Dialog, Binary, add_data
-import uisample
-from win32com.client import constants
-from distutils.spawn import find_executable
-from uuids import product_codes
-import tempfile
-
-# Settings can be overridden in config.py below
-# 0 for official python.org releases
-# 1 for intermediate releases by anybody, with
-# a new product code for every package.
-snapshot = 1
-# 1 means that file extension is px, not py,
-# and binaries start with x
-testpackage = 0
-# Location of build tree
-srcdir = os.path.abspath("../..")
-# Text to be displayed as the version in dialogs etc.
-# goes into file name and ProductCode. Defaults to
-# current_version.day for Snapshot, current_version otherwise
-full_current_version = None
-# Is Tcl available at all?
-have_tcl = True
-# path to PCbuild directory
-PCBUILD="PCbuild"
-# msvcrt version
-MSVCR = "90"
-# Name of certificate in default store to sign MSI with
-certname = None
-# Make a zip file containing the PDB files for this build?
-pdbzip = True
-
-try:
-    from config import *
-except ImportError:
-    pass
-
-# Extract current version from Include/patchlevel.h
-lines = open(srcdir + "/Include/patchlevel.h").readlines()
-major = minor = micro = level = serial = None
-levels = {
-    'PY_RELEASE_LEVEL_ALPHA':0xA,
-    'PY_RELEASE_LEVEL_BETA': 0xB,
-    'PY_RELEASE_LEVEL_GAMMA':0xC,
-    'PY_RELEASE_LEVEL_FINAL':0xF
-    }
-for l in lines:
-    if not l.startswith("#define"):
-        continue
-    l = l.split()
-    if len(l) != 3:
-        continue
-    _, name, value = l
-    if name == 'PY_MAJOR_VERSION': major = value
-    if name == 'PY_MINOR_VERSION': minor = value
-    if name == 'PY_MICRO_VERSION': micro = value
-    if name == 'PY_RELEASE_LEVEL': level = levels[value]
-    if name == 'PY_RELEASE_SERIAL': serial = value
-
-short_version = major+"."+minor
-# See PC/make_versioninfo.c
-FIELD3 = 1000*int(micro) + 10*level + int(serial)
-current_version = "%s.%d" % (short_version, FIELD3)
-
-# This should never change. The UpgradeCode of this package can be
-# used in the Upgrade table of future packages to make the future
-# package replace this one. See "UpgradeCode Property".
-# upgrade_code gets set to upgrade_code_64 when we have determined
-# that the target is Win64.
-upgrade_code_snapshot='{92A24481-3ECB-40FC-8836-04B7966EC0D5}'
-upgrade_code='{65E6DE48-A358-434D-AA4F-4AF72DB4718F}'
-upgrade_code_64='{6A965A0C-6EE6-4E3A-9983-3263F56311EC}'
-
-if snapshot:
-    current_version = "%s.%s.%s" % (major, minor, int(time.time()/3600/24))
-    product_code = msilib.gen_uuid()
-else:
-    product_code = product_codes[current_version]
-
-if full_current_version is None:
-    full_current_version = current_version
-
-extensions = [
-    'bz2.pyd',
-    'pyexpat.pyd',
-    'select.pyd',
-    'unicodedata.pyd',
-    'winsound.pyd',
-    '_elementtree.pyd',
-    '_bsddb.pyd',
-    '_socket.pyd',
-    '_ssl.pyd',
-    '_testcapi.pyd',
-    '_tkinter.pyd',
-    '_msi.pyd',
-    '_ctypes.pyd',
-    '_ctypes_test.pyd',
-    '_sqlite3.pyd',
-    '_hashlib.pyd',
-    '_multiprocessing.pyd'
-]
-
-# Well-known component UUIDs
-# These are needed for SharedDLLs reference counter; if
-# a different UUID was used for each incarnation of, say,
-# python24.dll, an upgrade would set the reference counter
-# from 1 to 2 (due to what I consider a bug in MSI)
-# Using the same UUID is fine since these files are versioned,
-# so Installer will always keep the newest version.
-# NOTE: All uuids are self generated.
-pythondll_uuid = {
-    "24":"{9B81E618-2301-4035-AC77-75D9ABEB7301}",
-    "25":"{2e41b118-38bd-4c1b-a840-6977efd1b911}",
-    "26":"{34ebecac-f046-4e1c-b0e3-9bac3cdaacfa}",
-    "27":"{4fe21c76-1760-437b-a2f2-99909130a175}",
-    } [major+minor]
-
-# Compute the name that Sphinx gives to the docfile
-docfile = ""
-if int(micro):
-    docfile = micro
-if level < 0xf:
-    if level == 0xC:
-        docfile += "rc%s" % (serial,)
-    else:
-        docfile += '%x%s' % (level, serial)
-docfile = 'python%s%s%s.chm' % (major, minor, docfile)
-
-# Build the mingw import library, libpythonXY.a
-# This requires 'nm' and 'dlltool' executables on your PATH
-def build_mingw_lib(lib_file, def_file, dll_file, mingw_lib):
-    warning = "WARNING: %s - libpythonXX.a not built"
-    nm = find_executable('nm')
-    dlltool = find_executable('dlltool')
-
-    if not nm or not dlltool:
-        print warning % "nm and/or dlltool were not found"
-        return False
-
-    nm_command = '%s -Cs %s' % (nm, lib_file)
-    dlltool_command = "%s --dllname %s --def %s --output-lib %s" % \
-        (dlltool, dll_file, def_file, mingw_lib)
-    export_match = re.compile(r"^_imp__(.*) in python\d+\.dll").match
-
-    f = open(def_file,'w')
-    print >>f, "LIBRARY %s" % dll_file
-    print >>f, "EXPORTS"
-
-    nm_pipe = os.popen(nm_command)
-    for line in nm_pipe.readlines():
-        m = export_match(line)
-        if m:
-            print >>f, m.group(1)
-    f.close()
-    exit = nm_pipe.close()
-
-    if exit:
-        print warning % "nm did not run successfully"
-        return False
-
-    if os.system(dlltool_command) != 0:
-        print warning % "dlltool did not run successfully"
-        return False
-
-    return True
-
-# Target files (.def and .a) go in PCBuild directory
-lib_file = os.path.join(srcdir, PCBUILD, "python%s%s.lib" % (major, minor))
-def_file = os.path.join(srcdir, PCBUILD, "python%s%s.def" % (major, minor))
-dll_file = "python%s%s.dll" % (major, minor)
-mingw_lib = os.path.join(srcdir, PCBUILD, "libpython%s%s.a" % (major, minor))
-
-have_mingw = build_mingw_lib(lib_file, def_file, dll_file, mingw_lib)
-
-# Determine the target architecture
-dll_path = os.path.join(srcdir, PCBUILD, dll_file)
-msilib.set_arch_from_file(dll_path)
-if msilib.pe_type(dll_path) != msilib.pe_type("msisupport.dll"):
-    raise SystemError, "msisupport.dll for incorrect architecture"
-if msilib.Win64:
-    upgrade_code = upgrade_code_64
-    # Bump the last digit of the code by one, so that 32-bit and 64-bit
-    # releases get separate product codes
-    digit = hex((int(product_code[-2],16)+1)%16)[-1]
-    product_code = product_code[:-2] + digit + '}'
-
-if testpackage:
-    ext = 'px'
-    testprefix = 'x'
-else:
-    ext = 'py'
-    testprefix = ''
-
-if msilib.Win64:
-    SystemFolderName = "[System64Folder]"
-    registry_component = 4|256
-else:
-    SystemFolderName = "[SystemFolder]"
-    registry_component = 4
-
-msilib.reset()
-
-# condition in which to install pythonxy.dll in system32:
-# a) it is Windows 9x or
-# b) it is NT, the user is privileged, and has chosen per-machine installation
-sys32cond = "(Windows9x or (Privileged and ALLUSERS))"
-
-def build_database():
-    """Generate an empty database, with just the schema and the
-    Summary information stream."""
-    if snapshot:
-        uc = upgrade_code_snapshot
-    else:
-        uc = upgrade_code
-    if msilib.Win64:
-        productsuffix = " (64-bit)"
-    else:
-        productsuffix = ""
-    # schema represents the installer 2.0 database schema.
-    # sequence is the set of standard sequences
-    # (ui/execute, admin/advt/install)
-    msiname = "python-%s%s.msi" % (full_current_version, msilib.arch_ext)
-    db = msilib.init_database(msiname,
-                  schema, ProductName="Python "+full_current_version+productsuffix,
-                  ProductCode=product_code,
-                  ProductVersion=current_version,
-                  Manufacturer=u"Python Software Foundation",
-                  request_uac = True)
-    # The default sequencing of the RemoveExistingProducts action causes
-    # removal of files that got just installed. Place it after
-    # InstallInitialize, so we first uninstall everything, but still roll
-    # back in case the installation is interrupted
-    msilib.change_sequence(sequence.InstallExecuteSequence,
-                           "RemoveExistingProducts", 1510)
-    msilib.add_tables(db, sequence)
-    # We cannot set ALLUSERS in the property table, as this cannot be
-    # reset if the user choses a per-user installation. Instead, we
-    # maintain WhichUsers, which can be "ALL" or "JUSTME". The UI manages
-    # this property, and when the execution starts, ALLUSERS is set
-    # accordingly.
-    add_data(db, "Property", [("UpgradeCode", uc),
-                              ("WhichUsers", "ALL"),
-                              ("ProductLine", "Python%s%s" % (major, minor)),
-                             ])
-    db.Commit()
-    return db, msiname
-
-def remove_old_versions(db):
-    "Fill the upgrade table."
-    start = "%s.%s.0" % (major, minor)
-    # This requests that feature selection states of an older
-    # installation should be forwarded into this one. Upgrading
-    # requires that both the old and the new installation are
-    # either both per-machine or per-user.
-    migrate_features = 1
-    # See "Upgrade Table". We remove releases with the same major and
-    # minor version. For an snapshot, we remove all earlier snapshots. For
-    # a release, we remove all snapshots, and all earlier releases.
-    if snapshot:
-        add_data(db, "Upgrade",
-            [(upgrade_code_snapshot, start,
-              current_version,
-              None,                     # Ignore language
-              migrate_features,
-              None,                     # Migrate ALL features
-              "REMOVEOLDSNAPSHOT")])
-        props = "REMOVEOLDSNAPSHOT"
-    else:
-        add_data(db, "Upgrade",
-            [(upgrade_code, start, current_version,
-              None, migrate_features, None, "REMOVEOLDVERSION"),
-             (upgrade_code_snapshot, start, "%s.%d.0" % (major, int(minor)+1),
-              None, migrate_features, None, "REMOVEOLDSNAPSHOT")])
-        props = "REMOVEOLDSNAPSHOT;REMOVEOLDVERSION"
-
-    props += ";TARGETDIR;DLLDIR"
-    # Installer collects the product codes of the earlier releases in
-    # these properties. In order to allow modification of the properties,
-    # they must be declared as secure. See "SecureCustomProperties Property"
-    add_data(db, "Property", [("SecureCustomProperties", props)])
-
-class PyDialog(Dialog):
-    """Dialog class with a fixed layout: controls at the top, then a ruler,
-    then a list of buttons: back, next, cancel. Optionally a bitmap at the
-    left."""
-    def __init__(self, *args, **kw):
-        """Dialog(database, name, x, y, w, h, attributes, title, first,
-        default, cancel, bitmap=true)"""
-        Dialog.__init__(self, *args)
-        ruler = self.h - 36
-        bmwidth = 152*ruler/328
-        if kw.get("bitmap", True):
-            self.bitmap("Bitmap", 0, 0, bmwidth, ruler, "PythonWin")
-        self.line("BottomLine", 0, ruler, self.w, 0)
-
-    def title(self, title):
-        "Set the title text of the dialog at the top."
-        # name, x, y, w, h, flags=Visible|Enabled|Transparent|NoPrefix,
-        # text, in VerdanaBold10
-        self.text("Title", 135, 10, 220, 60, 0x30003,
-                  r"{\VerdanaBold10}%s" % title)
-
-    def back(self, title, next, name = "Back", active = 1):
-        """Add a back button with a given title, the tab-next button,
-        its name in the Control table, possibly initially disabled.
-
-        Return the button, so that events can be associated"""
-        if active:
-            flags = 3 # Visible|Enabled
-        else:
-            flags = 1 # Visible
-        return self.pushbutton(name, 180, self.h-27 , 56, 17, flags, title, next)
-
-    def cancel(self, title, next, name = "Cancel", active = 1):
-        """Add a cancel button with a given title, the tab-next button,
-        its name in the Control table, possibly initially disabled.
-
-        Return the button, so that events can be associated"""
-        if active:
-            flags = 3 # Visible|Enabled
-        else:
-            flags = 1 # Visible
-        return self.pushbutton(name, 304, self.h-27, 56, 17, flags, title, next)
-
-    def next(self, title, next, name = "Next", active = 1):
-        """Add a Next button with a given title, the tab-next button,
-        its name in the Control table, possibly initially disabled.
-
-        Return the button, so that events can be associated"""
-        if active:
-            flags = 3 # Visible|Enabled
-        else:
-            flags = 1 # Visible
-        return self.pushbutton(name, 236, self.h-27, 56, 17, flags, title, next)
-
-    def xbutton(self, name, title, next, xpos):
-        """Add a button with a given title, the tab-next button,
-        its name in the Control table, giving its x position; the
-        y-position is aligned with the other buttons.
-
-        Return the button, so that events can be associated"""
-        return self.pushbutton(name, int(self.w*xpos - 28), self.h-27, 56, 17, 3, title, next)
-
-def add_ui(db):
-    x = y = 50
-    w = 370
-    h = 300
-    title = "[ProductName] Setup"
-
-    # see "Dialog Style Bits"
-    modal = 3      # visible | modal
-    modeless = 1   # visible
-    track_disk_space = 32
-
-    add_data(db, 'ActionText', uisample.ActionText)
-    add_data(db, 'UIText', uisample.UIText)
-
-    # Bitmaps
-    if not os.path.exists(srcdir+r"\PC\python_icon.exe"):
-        raise "Run icons.mak in PC directory"
-    add_data(db, "Binary",
-             [("PythonWin", msilib.Binary(r"%s\PCbuild\installer.bmp" % srcdir)), # 152x328 pixels
-              ("py.ico",msilib.Binary(srcdir+r"\PC\py.ico")),
-             ])
-    add_data(db, "Icon",
-             [("python_icon.exe", msilib.Binary(srcdir+r"\PC\python_icon.exe"))])
-
-    # Scripts
-    # CheckDir sets TargetExists if TARGETDIR exists.
-    # UpdateEditIDLE sets the REGISTRY.tcl component into
-    # the installed/uninstalled state according to both the
-    # Extensions and TclTk features.
-    if os.system("nmake /nologo /c /f msisupport.mak") != 0:
-        raise "'nmake /f msisupport.mak' failed"
-    add_data(db, "Binary", [("Script", msilib.Binary("msisupport.dll"))])
-    # See "Custom Action Type 1"
-    if msilib.Win64:
-        CheckDir = "CheckDir"
-        UpdateEditIDLE = "UpdateEditIDLE"
-    else:
-        CheckDir =  "_CheckDir@4"
-        UpdateEditIDLE = "_UpdateEditIDLE@4"
-    add_data(db, "CustomAction",
-        [("CheckDir", 1, "Script", CheckDir)])
-    if have_tcl:
-        add_data(db, "CustomAction",
-        [("UpdateEditIDLE", 1, "Script", UpdateEditIDLE)])
-
-    # UI customization properties
-    add_data(db, "Property",
-             # See "DefaultUIFont Property"
-             [("DefaultUIFont", "DlgFont8"),
-              # See "ErrorDialog Style Bit"
-              ("ErrorDialog", "ErrorDlg"),
-              ("Progress1", "Install"),   # modified in maintenance type dlg
-              ("Progress2", "installs"),
-              ("MaintenanceForm_Action", "Repair")])
-
-    # Fonts, see "TextStyle Table"
-    add_data(db, "TextStyle",
-             [("DlgFont8", "Tahoma", 9, None, 0),
-              ("DlgFontBold8", "Tahoma", 8, None, 1), #bold
-              ("VerdanaBold10", "Verdana", 10, None, 1),
-              ("VerdanaRed9", "Verdana", 9, 255, 0),
-             ])
-
-    compileargs = r'-Wi "[TARGETDIR]Lib\compileall.py" -f -x "bad_coding|badsyntax|site-packages|py3_" "[TARGETDIR]Lib"'
-    lib2to3args = r'-c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"'
-    # See "CustomAction Table"
-    add_data(db, "CustomAction", [
-        # msidbCustomActionTypeFirstSequence + msidbCustomActionTypeTextData + msidbCustomActionTypeProperty
-        # See "Custom Action Type 51",
-        # "Custom Action Execution Scheduling Options"
-        ("InitialTargetDir", 307, "TARGETDIR",
-         "[WindowsVolume]Python%s%s" % (major, minor)),
-        ("SetDLLDirToTarget", 307, "DLLDIR", "[TARGETDIR]"),
-        ("SetDLLDirToSystem32", 307, "DLLDIR", SystemFolderName),
-        # msidbCustomActionTypeExe + msidbCustomActionTypeSourceFile
-        # See "Custom Action Type 18"
-        ("CompilePyc", 18, "python.exe", compileargs),
-        ("CompilePyo", 18, "python.exe", "-O "+compileargs),
-        ("CompileGrammar", 18, "python.exe", lib2to3args),
-        ])
-
-    # UI Sequences, see "InstallUISequence Table", "Using a Sequence Table"
-    # Numbers indicate sequence; see sequence.py for how these action integrate
-    add_data(db, "InstallUISequence",
-             [("PrepareDlg", "Not Privileged or Windows9x or Installed", 140),
-              ("WhichUsersDlg", "Privileged and not Windows9x and not Installed", 141),
-              ("InitialTargetDir", 'TARGETDIR=""', 750),
-              # In the user interface, assume all-users installation if privileged.
-              ("SetDLLDirToSystem32", 'DLLDIR="" and ' + sys32cond, 751),
-              ("SetDLLDirToTarget", 'DLLDIR="" and not ' + sys32cond, 752),
-              ("SelectDirectoryDlg", "Not Installed", 1230),
-              # XXX no support for resume installations yet
-              #("ResumeDlg", "Installed AND (RESUME OR Preselected)", 1240),
-              ("MaintenanceTypeDlg", "Installed AND NOT RESUME AND NOT Preselected", 1250),
-              ("ProgressDlg", None, 1280)])
-    add_data(db, "AdminUISequence",
-             [("InitialTargetDir", 'TARGETDIR=""', 750),
-              ("SetDLLDirToTarget", 'DLLDIR=""', 751),
-             ])
-
-    # Execute Sequences
-    add_data(db, "InstallExecuteSequence",
-            [("InitialTargetDir", 'TARGETDIR=""', 750),
-             ("SetDLLDirToSystem32", 'DLLDIR="" and ' + sys32cond, 751),
-             ("SetDLLDirToTarget", 'DLLDIR="" and not ' + sys32cond, 752),
-             ("UpdateEditIDLE", None, 1050),
-             ("CompilePyc", "COMPILEALL", 6800),
-             ("CompilePyo", "COMPILEALL", 6801),
-             ("CompileGrammar", "COMPILEALL", 6802),
-            ])
-    add_data(db, "AdminExecuteSequence",
-            [("InitialTargetDir", 'TARGETDIR=""', 750),
-             ("SetDLLDirToTarget", 'DLLDIR=""', 751),
-             ("CompilePyc", "COMPILEALL", 6800),
-             ("CompilePyo", "COMPILEALL", 6801),
-             ("CompileGrammar", "COMPILEALL", 6802),
-            ])
-
-    #####################################################################
-    # Standard dialogs: FatalError, UserExit, ExitDialog
-    fatal=PyDialog(db, "FatalError", x, y, w, h, modal, title,
-                 "Finish", "Finish", "Finish")
-    fatal.title("[ProductName] Installer ended prematurely")
-    fatal.back("< Back", "Finish", active = 0)
-    fatal.cancel("Cancel", "Back", active = 0)
-    fatal.text("Description1", 135, 70, 220, 80, 0x30003,
-               "[ProductName] setup ended prematurely because of an error.  Your system has not been modified.  To install this program at a later time, please run the installation again.")
-    fatal.text("Description2", 135, 155, 220, 20, 0x30003,
-               "Click the Finish button to exit the Installer.")
-    c=fatal.next("Finish", "Cancel", name="Finish")
-    # See "ControlEvent Table". Parameters are the event, the parameter
-    # to the action, and optionally the condition for the event, and the order
-    # of events.
-    c.event("EndDialog", "Exit")
-
-    user_exit=PyDialog(db, "UserExit", x, y, w, h, modal, title,
-                 "Finish", "Finish", "Finish")
-    user_exit.title("[ProductName] Installer was interrupted")
-    user_exit.back("< Back", "Finish", active = 0)
-    user_exit.cancel("Cancel", "Back", active = 0)
-    user_exit.text("Description1", 135, 70, 220, 80, 0x30003,
-               "[ProductName] setup was interrupted.  Your system has not been modified.  "
-               "To install this program at a later time, please run the installation again.")
-    user_exit.text("Description2", 135, 155, 220, 20, 0x30003,
-               "Click the Finish button to exit the Installer.")
-    c = user_exit.next("Finish", "Cancel", name="Finish")
-    c.event("EndDialog", "Exit")
-
-    exit_dialog = PyDialog(db, "ExitDialog", x, y, w, h, modal, title,
-                         "Finish", "Finish", "Finish")
-    exit_dialog.title("Completing the [ProductName] Installer")
-    exit_dialog.back("< Back", "Finish", active = 0)
-    exit_dialog.cancel("Cancel", "Back", active = 0)
-    exit_dialog.text("Acknowledgements", 135, 95, 220, 120, 0x30003,
-      "Special Windows thanks to:\n"
-      "    Mark Hammond, without whose years of freely \n"
-      "    shared Windows expertise, Python for Windows \n"
-      "    would still be Python for DOS.")
-
-    c = exit_dialog.text("warning", 135, 200, 220, 40, 0x30003,
-            "{\\VerdanaRed9}Warning: Python 3.3.0 is the last "
-            "Python release for Windows 2000.")
-    c.condition("Hide", "VersionNT > 500")
-
-    exit_dialog.text("Description", 135, 235, 220, 20, 0x30003,
-               "Click the Finish button to exit the Installer.")
-    c = exit_dialog.next("Finish", "Cancel", name="Finish")
-    c.event("EndDialog", "Return")
-
-    #####################################################################
-    # Required dialog: FilesInUse, ErrorDlg
-    inuse = PyDialog(db, "FilesInUse",
-                     x, y, w, h,
-                     19,                # KeepModeless|Modal|Visible
-                     title,
-                     "Retry", "Retry", "Retry", bitmap=False)
-    inuse.text("Title", 15, 6, 200, 15, 0x30003,
-               r"{\DlgFontBold8}Files in Use")
-    inuse.text("Description", 20, 23, 280, 20, 0x30003,
-               "Some files that need to be updated are currently in use.")
-    inuse.text("Text", 20, 55, 330, 50, 3,
-               "The following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.")
-    inuse.control("List", "ListBox", 20, 107, 330, 130, 7, "FileInUseProcess",
-                  None, None, None)
-    c=inuse.back("Exit", "Ignore", name="Exit")
-    c.event("EndDialog", "Exit")
-    c=inuse.next("Ignore", "Retry", name="Ignore")
-    c.event("EndDialog", "Ignore")
-    c=inuse.cancel("Retry", "Exit", name="Retry")
-    c.event("EndDialog","Retry")
-
-
-    # See "Error Dialog". See "ICE20" for the required names of the controls.
-    error = Dialog(db, "ErrorDlg",
-                   50, 10, 330, 101,
-                   65543,       # Error|Minimize|Modal|Visible
-                   title,
-                   "ErrorText", None, None)
-    error.text("ErrorText", 50,9,280,48,3, "")
-    error.control("ErrorIcon", "Icon", 15, 9, 24, 24, 5242881, None, "py.ico", None, None)
-    error.pushbutton("N",120,72,81,21,3,"No",None).event("EndDialog","ErrorNo")
-    error.pushbutton("Y",240,72,81,21,3,"Yes",None).event("EndDialog","ErrorYes")
-    error.pushbutton("A",0,72,81,21,3,"Abort",None).event("EndDialog","ErrorAbort")
-    error.pushbutton("C",42,72,81,21,3,"Cancel",None).event("EndDialog","ErrorCancel")
-    error.pushbutton("I",81,72,81,21,3,"Ignore",None).event("EndDialog","ErrorIgnore")
-    error.pushbutton("O",159,72,81,21,3,"Ok",None).event("EndDialog","ErrorOk")
-    error.pushbutton("R",198,72,81,21,3,"Retry",None).event("EndDialog","ErrorRetry")
-
-    #####################################################################
-    # Global "Query Cancel" dialog
-    cancel = Dialog(db, "CancelDlg", 50, 10, 260, 85, 3, title,
-                    "No", "No", "No")
-    cancel.text("Text", 48, 15, 194, 30, 3,
-                "Are you sure you want to cancel [ProductName] installation?")
-    cancel.control("Icon", "Icon", 15, 15, 24, 24, 5242881, None,
-                   "py.ico", None, None)
-    c=cancel.pushbutton("Yes", 72, 57, 56, 17, 3, "Yes", "No")
-    c.event("EndDialog", "Exit")
-
-    c=cancel.pushbutton("No", 132, 57, 56, 17, 3, "No", "Yes")
-    c.event("EndDialog", "Return")
-
-    #####################################################################
-    # Global "Wait for costing" dialog
-    costing = Dialog(db, "WaitForCostingDlg", 50, 10, 260, 85, modal, title,
-                     "Return", "Return", "Return")
-    costing.text("Text", 48, 15, 194, 30, 3,
-                 "Please wait while the installer finishes determining your disk space requirements.")
-    costing.control("Icon", "Icon", 15, 15, 24, 24, 5242881, None,
-                    "py.ico", None, None)
-    c = costing.pushbutton("Return", 102, 57, 56, 17, 3, "Return", None)
-    c.event("EndDialog", "Exit")
-
-    #####################################################################
-    # Preparation dialog: no user input except cancellation
-    prep = PyDialog(db, "PrepareDlg", x, y, w, h, modeless, title,
-                    "Cancel", "Cancel", "Cancel")
-    prep.text("Description", 135, 70, 220, 40, 0x30003,
-              "Please wait while the Installer prepares to guide you through the installation.")
-    prep.title("Welcome to the [ProductName] Installer")
-    c=prep.text("ActionText", 135, 110, 220, 20, 0x30003, "Pondering...")
-    c.mapping("ActionText", "Text")
-    c=prep.text("ActionData", 135, 135, 220, 30, 0x30003, None)
-    c.mapping("ActionData", "Text")
-    prep.back("Back", None, active=0)
-    prep.next("Next", None, active=0)
-    c=prep.cancel("Cancel", None)
-    c.event("SpawnDialog", "CancelDlg")
-
-    #####################################################################
-    # Target directory selection
-    seldlg = PyDialog(db, "SelectDirectoryDlg", x, y, w, h, modal, title,
-                    "Next", "Next", "Cancel")
-    seldlg.title("Select Destination Directory")
-    c = seldlg.text("Existing", 135, 25, 235, 30, 0x30003,
-                    "{\VerdanaRed9}This update will replace your existing [ProductLine] installation.")
-    c.condition("Hide", 'REMOVEOLDVERSION="" and REMOVEOLDSNAPSHOT=""')
-    seldlg.text("Description", 135, 50, 220, 40, 0x30003,
-               "Please select a directory for the [ProductName] files.")
-
-    seldlg.back("< Back", None, active=0)
-    c = seldlg.next("Next >", "Cancel")
-    c.event("DoAction", "CheckDir", "TargetExistsOk<>1", order=1)
-    # If the target exists, but we found that we are going to remove old versions, don't bother
-    # confirming that the target directory exists. Strictly speaking, we should determine that
-    # the target directory is indeed the target of the product that we are going to remove, but
-    # I don't know how to do that.
-    c.event("SpawnDialog", "ExistingDirectoryDlg", 'TargetExists=1 and REMOVEOLDVERSION="" and REMOVEOLDSNAPSHOT=""', 2)
-    c.event("SetTargetPath", "TARGETDIR", 'TargetExists=0 or REMOVEOLDVERSION<>"" or REMOVEOLDSNAPSHOT<>""', 3)
-    c.event("SpawnWaitDialog", "WaitForCostingDlg", "CostingComplete=1", 4)
-    c.event("NewDialog", "SelectFeaturesDlg", 'TargetExists=0 or REMOVEOLDVERSION<>"" or REMOVEOLDSNAPSHOT<>""', 5)
-
-    c = seldlg.cancel("Cancel", "DirectoryCombo")
-    c.event("SpawnDialog", "CancelDlg")
-
-    seldlg.control("DirectoryCombo", "DirectoryCombo", 135, 70, 172, 80, 393219,
-                   "TARGETDIR", None, "DirectoryList", None)
-    seldlg.control("DirectoryList", "DirectoryList", 135, 90, 208, 136, 3, "TARGETDIR",
-                   None, "PathEdit", None)
-    seldlg.control("PathEdit", "PathEdit", 135, 230, 206, 16, 3, "TARGETDIR", None, "Next", None)
-    c = seldlg.pushbutton("Up", 306, 70, 18, 18, 3, "Up", None)
-    c.event("DirectoryListUp", "0")
-    c = seldlg.pushbutton("NewDir", 324, 70, 30, 18, 3, "New", None)
-    c.event("DirectoryListNew", "0")
-
-    #####################################################################
-    # SelectFeaturesDlg
-    features = PyDialog(db, "SelectFeaturesDlg", x, y, w, h, modal|track_disk_space,
-                        title, "Tree", "Next", "Cancel")
-    features.title("Customize [ProductName]")
-    features.text("Description", 135, 35, 220, 15, 0x30003,
-                  "Select the way you want features to be installed.")
-    features.text("Text", 135,45,220,30, 3,
-                  "Click on the icons in the tree below to change the way features will be installed.")
-
-    c=features.back("< Back", "Next")
-    c.event("NewDialog", "SelectDirectoryDlg")
-
-    c=features.next("Next >", "Cancel")
-    c.mapping("SelectionNoItems", "Enabled")
-    c.event("SpawnDialog", "DiskCostDlg", "OutOfDiskSpace=1", order=1)
-    c.event("EndDialog", "Return", "OutOfDiskSpace<>1", order=2)
-
-    c=features.cancel("Cancel", "Tree")
-    c.event("SpawnDialog", "CancelDlg")
-
-    # The browse property is not used, since we have only a single target path (selected already)
-    features.control("Tree", "SelectionTree", 135, 75, 220, 95, 7, "_BrowseProperty",
-                     "Tree of selections", "Back", None)
-
-    #c=features.pushbutton("Reset", 42, 243, 56, 17, 3, "Reset", "DiskCost")
-    #c.mapping("SelectionNoItems", "Enabled")
-    #c.event("Reset", "0")
-
-    features.control("Box", "GroupBox", 135, 170, 225, 90, 1, None, None, None, None)
-
-    c=features.xbutton("DiskCost", "Disk &Usage", None, 0.10)
-    c.mapping("SelectionNoItems","Enabled")
-    c.event("SpawnDialog", "DiskCostDlg")
-
-    c=features.xbutton("Advanced", "Advanced", None, 0.30)
-    c.event("SpawnDialog", "AdvancedDlg")
-
-    c=features.text("ItemDescription", 140, 180, 210, 30, 3,
-                  "Multiline description of the currently selected item.")
-    c.mapping("SelectionDescription","Text")
-
-    c=features.text("ItemSize", 140, 210, 210, 45, 3,
-                    "The size of the currently selected item.")
-    c.mapping("SelectionSize", "Text")
-
-    #####################################################################
-    # Disk cost
-    cost = PyDialog(db, "DiskCostDlg", x, y, w, h, modal, title,
-                    "OK", "OK", "OK", bitmap=False)
-    cost.text("Title", 15, 6, 200, 15, 0x30003,
-              "{\DlgFontBold8}Disk Space Requirements")
-    cost.text("Description", 20, 20, 280, 20, 0x30003,
-              "The disk space required for the installation of the selected features.")
-    cost.text("Text", 20, 53, 330, 60, 3,
-              "The highlighted volumes (if any) do not have enough disk space "
-              "available for the currently selected features.  You can either "
-              "remove some files from the highlighted volumes, or choose to "
-              "install less features onto local drive(s), or select different "
-              "destination drive(s).")
-    cost.control("VolumeList", "VolumeCostList", 20, 100, 330, 150, 393223,
-                 None, "{120}{70}{70}{70}{70}", None, None)
-    cost.xbutton("OK", "Ok", None, 0.5).event("EndDialog", "Return")
-
-    #####################################################################
-    # WhichUsers Dialog. Only available on NT, and for privileged users.
-    # This must be run before FindRelatedProducts, because that will
-    # take into account whether the previous installation was per-user
-    # or per-machine. We currently don't support going back to this
-    # dialog after "Next" was selected; to support this, we would need to
-    # find how to reset the ALLUSERS property, and how to re-run
-    # FindRelatedProducts.
-    # On Windows9x, the ALLUSERS property is ignored on the command line
-    # and in the Property table, but installer fails according to the documentation
-    # if a dialog attempts to set ALLUSERS.
-    whichusers = PyDialog(db, "WhichUsersDlg", x, y, w, h, modal, title,
-                        "AdminInstall", "Next", "Cancel")
-    whichusers.title("Select whether to install [ProductName] for all users of this computer.")
-    # A radio group with two options: allusers, justme
-    g = whichusers.radiogroup("AdminInstall", 135, 60, 235, 80, 3,
-                              "WhichUsers", "", "Next")
-    g.condition("Disable", "VersionNT=600") # Not available on Vista and Windows 2008
-    g.add("ALL", 0, 5, 150, 20, "Install for all users")
-    g.add("JUSTME", 0, 25, 235, 20, "Install just for me (not available on Windows Vista)")
-
-    whichusers.back("Back", None, active=0)
-
-    c = whichusers.next("Next >", "Cancel")
-    c.event("[ALLUSERS]", "1", 'WhichUsers="ALL"', 1)
-    c.event("EndDialog", "Return", order = 2)
-
-    c = whichusers.cancel("Cancel", "AdminInstall")
-    c.event("SpawnDialog", "CancelDlg")
-
-    #####################################################################
-    # Advanced Dialog.
-    advanced = PyDialog(db, "AdvancedDlg", x, y, w, h, modal, title,
-                        "CompilePyc", "Ok", "Ok")
-    advanced.title("Advanced Options for [ProductName]")
-    # A radio group with two options: allusers, justme
-    advanced.checkbox("CompilePyc", 135, 60, 230, 50, 3,
-                      "COMPILEALL", "Compile .py files to byte code after installation", "Ok")
-
-    c = advanced.cancel("Ok", "CompilePyc", name="Ok") # Button just has location of cancel button.
-    c.event("EndDialog", "Return")
-
-    #####################################################################
-    # Existing Directory dialog
-    dlg = Dialog(db, "ExistingDirectoryDlg", 50, 30, 200, 80, modal, title,
-                   "No", "No", "No")
-    dlg.text("Title", 10, 20, 180, 40, 3,
-             "[TARGETDIR] exists. Are you sure you want to overwrite existing files?")
-    c=dlg.pushbutton("Yes", 30, 60, 55, 17, 3, "Yes", "No")
-    c.event("[TargetExists]", "0", order=1)
-    c.event("[TargetExistsOk]", "1", order=2)
-    c.event("EndDialog", "Return", order=3)
-    c=dlg.pushbutton("No", 115, 60, 55, 17, 3, "No", "Yes")
-    c.event("EndDialog", "Return")
-
-    #####################################################################
-    # Installation Progress dialog (modeless)
-    progress = PyDialog(db, "ProgressDlg", x, y, w, h, modeless, title,
-                        "Cancel", "Cancel", "Cancel", bitmap=False)
-    progress.text("Title", 20, 15, 200, 15, 0x30003,
-                  "{\DlgFontBold8}[Progress1] [ProductName]")
-    progress.text("Text", 35, 65, 300, 30, 3,
-                  "Please wait while the Installer [Progress2] [ProductName]. "
-                  "This may take several minutes.")
-    progress.text("StatusLabel", 35, 100, 35, 20, 3, "Status:")
-
-    c=progress.text("ActionText", 70, 100, w-70, 20, 3, "Pondering...")
-    c.mapping("ActionText", "Text")
-
-    #c=progress.text("ActionData", 35, 140, 300, 20, 3, None)
-    #c.mapping("ActionData", "Text")
-
-    c=progress.control("ProgressBar", "ProgressBar", 35, 120, 300, 10, 65537,
-                       None, "Progress done", None, None)
-    c.mapping("SetProgress", "Progress")
-
-    progress.back("< Back", "Next", active=False)
-    progress.next("Next >", "Cancel", active=False)
-    progress.cancel("Cancel", "Back").event("SpawnDialog", "CancelDlg")
-
-    # Maintenance type: repair/uninstall
-    maint = PyDialog(db, "MaintenanceTypeDlg", x, y, w, h, modal, title,
-                     "Next", "Next", "Cancel")
-    maint.title("Welcome to the [ProductName] Setup Wizard")
-    maint.text("BodyText", 135, 63, 230, 42, 3,
-               "Select whether you want to repair or remove [ProductName].")
-    g=maint.radiogroup("RepairRadioGroup", 135, 108, 230, 60, 3,
-                        "MaintenanceForm_Action", "", "Next")
-    g.add("Change", 0, 0, 200, 17, "&Change [ProductName]")
-    g.add("Repair", 0, 18, 200, 17, "&Repair [ProductName]")
-    g.add("Remove", 0, 36, 200, 17, "Re&move [ProductName]")
-
-    maint.back("< Back", None, active=False)
-    c=maint.next("Finish", "Cancel")
-    # Change installation: Change progress dialog to "Change", then ask
-    # for feature selection
-    c.event("[Progress1]", "Change", 'MaintenanceForm_Action="Change"', 1)
-    c.event("[Progress2]", "changes", 'MaintenanceForm_Action="Change"', 2)
-
-    # Reinstall: Change progress dialog to "Repair", then invoke reinstall
-    # Also set list of reinstalled features to "ALL"
-    c.event("[REINSTALL]", "ALL", 'MaintenanceForm_Action="Repair"', 5)
-    c.event("[Progress1]", "Repairing", 'MaintenanceForm_Action="Repair"', 6)
-    c.event("[Progress2]", "repairs", 'MaintenanceForm_Action="Repair"', 7)
-    c.event("Reinstall", "ALL", 'MaintenanceForm_Action="Repair"', 8)
-
-    # Uninstall: Change progress to "Remove", then invoke uninstall
-    # Also set list of removed features to "ALL"
-    c.event("[REMOVE]", "ALL", 'MaintenanceForm_Action="Remove"', 11)
-    c.event("[Progress1]", "Removing", 'MaintenanceForm_Action="Remove"', 12)
-    c.event("[Progress2]", "removes", 'MaintenanceForm_Action="Remove"', 13)
-    c.event("Remove", "ALL", 'MaintenanceForm_Action="Remove"', 14)
-
-    # Close dialog when maintenance action scheduled
-    c.event("EndDialog", "Return", 'MaintenanceForm_Action<>"Change"', 20)
-    c.event("NewDialog", "SelectFeaturesDlg", 'MaintenanceForm_Action="Change"', 21)
-
-    maint.cancel("Cancel", "RepairRadioGroup").event("SpawnDialog", "CancelDlg")
-
-
-# See "Feature Table". The feature level is 1 for all features,
-# and the feature attributes are 0 for the DefaultFeature, and
-# FollowParent for all other features. The numbers are the Display
-# column.
-def add_features(db):
-    # feature attributes:
-    # msidbFeatureAttributesFollowParent == 2
-    # msidbFeatureAttributesDisallowAdvertise == 8
-    # Features that need to be installed with together with the main feature
-    # (i.e. additional Python libraries) need to follow the parent feature.
-    # Features that have no advertisement trigger (e.g. the test suite)
-    # must not support advertisement
-    global default_feature, tcltk, htmlfiles, tools, testsuite, ext_feature, private_crt
-    default_feature = Feature(db, "DefaultFeature", "Python",
-                              "Python Interpreter and Libraries",
-                              1, directory = "TARGETDIR")
-    shared_crt = Feature(db, "SharedCRT", "MSVCRT", "C Run-Time (system-wide)", 0,
-                         level=0)
-    private_crt = Feature(db, "PrivateCRT", "MSVCRT", "C Run-Time (private)", 0,
-                          level=0)
-    add_data(db, "Condition", [("SharedCRT", 1, sys32cond),
-                               ("PrivateCRT", 1, "not "+sys32cond)])
-    # We don't support advertisement of extensions
-    ext_feature = Feature(db, "Extensions", "Register Extensions",
-                          "Make this Python installation the default Python installation", 3,
-                         parent = default_feature, attributes=2|8)
-    if have_tcl:
-        tcltk = Feature(db, "TclTk", "Tcl/Tk", "Tkinter, IDLE, pydoc", 5,
-                    parent = default_feature, attributes=2)
-    htmlfiles = Feature(db, "Documentation", "Documentation",
-                        "Python HTMLHelp File", 7, parent = default_feature)
-    tools = Feature(db, "Tools", "Utility Scripts",
-                    "Python utility scripts (Tools/", 9,
-                    parent = default_feature, attributes=2)
-    testsuite = Feature(db, "Testsuite", "Test suite",
-                        "Python test suite (Lib/test/)", 11,
-                        parent = default_feature, attributes=2|8)
-
-def extract_msvcr90():
-    # Find the redistributable files
-    if msilib.Win64:
-        arch = "amd64"
-    else:
-        arch = "x86"
-    dir = os.path.join(os.environ['VS90COMNTOOLS'], r"..\..\VC\redist\%s\Microsoft.VC90.CRT" % arch)
-
-    result = []
-    installer = msilib.MakeInstaller()
-    # omit msvcm90 and msvcp90, as they aren't really needed
-    files = ["Microsoft.VC90.CRT.manifest", "msvcr90.dll"]
-    for f in files:
-        path = os.path.join(dir, f)
-        kw = {'src':path}
-        if f.endswith('.dll'):
-            kw['version'] = installer.FileVersion(path, 0)
-            kw['language'] = installer.FileVersion(path, 1)
-        result.append((f, kw))
-    return result
-
-def generate_license():
-    import shutil, glob
-    out = open("LICENSE.txt", "w")
-    shutil.copyfileobj(open(os.path.join(srcdir, "LICENSE")), out)
-    shutil.copyfileobj(open("crtlicense.txt"), out)
-    for name, pat, file in (("bzip2","bzip2-*", "LICENSE"),
-                      ("Berkeley DB", "db-*", "LICENSE"),
-                      ("openssl", "openssl-*", "LICENSE"),
-                      ("Tcl", "tcl8*", "license.terms"),
-                      ("Tk", "tk8*", "license.terms"),
-                      ("Tix", "tix-*", "license.terms")):
-        out.write("\nThis copy of Python includes a copy of %s, which is licensed under the following terms:\n\n" % name)
-        dirs = glob.glob(srcdir+"/../"+pat)
-        if not dirs:
-            raise ValueError, "Could not find "+srcdir+"/../"+pat
-        if len(dirs) > 2:
-            raise ValueError, "Multiple copies of "+pat
-        dir = dirs[0]
-        shutil.copyfileobj(open(os.path.join(dir, file)), out)
-    out.close()
-
-
-class PyDirectory(Directory):
-    """By default, all components in the Python installer
-    can run from source."""
-    def __init__(self, *args, **kw):
-        if not kw.has_key("componentflags"):
-            kw['componentflags'] = 2 #msidbComponentAttributesOptional
-        Directory.__init__(self, *args, **kw)
-
-# See "File Table", "Component Table", "Directory Table",
-# "FeatureComponents Table"
-def add_files(db):
-    cab = CAB("python")
-    tmpfiles = []
-    # Add all executables, icons, text files into the TARGETDIR component
-    root = PyDirectory(db, cab, None, srcdir, "TARGETDIR", "SourceDir")
-    default_feature.set_current()
-    if not msilib.Win64:
-        root.add_file("%s/w9xpopen.exe" % PCBUILD)
-    root.add_file("README.txt", src="README")
-    root.add_file("NEWS.txt", src="Misc/NEWS")
-    generate_license()
-    root.add_file("LICENSE.txt", src=os.path.abspath("LICENSE.txt"))
-    root.start_component("python.exe", keyfile="python.exe")
-    root.add_file("%s/python.exe" % PCBUILD)
-    root.start_component("pythonw.exe", keyfile="pythonw.exe")
-    root.add_file("%s/pythonw.exe" % PCBUILD)
-
-    # msidbComponentAttributesSharedDllRefCount = 8, see "Component Table"
-    dlldir = PyDirectory(db, cab, root, srcdir, "DLLDIR", ".")
-
-    pydll = "python%s%s.dll" % (major, minor)
-    pydllsrc = os.path.join(srcdir, PCBUILD, pydll)
-    dlldir.start_component("DLLDIR", flags = 8, keyfile = pydll, uuid = pythondll_uuid)
-    installer = msilib.MakeInstaller()
-    pyversion = installer.FileVersion(pydllsrc, 0)
-    if not snapshot:
-        # For releases, the Python DLL has the same version as the
-        # installer package.
-        assert pyversion.split(".")[:3] == current_version.split(".")
-    dlldir.add_file("%s/python%s%s.dll" % (PCBUILD, major, minor),
-                    version=pyversion,
-                    language=installer.FileVersion(pydllsrc, 1))
-    DLLs = PyDirectory(db, cab, root, srcdir + "/" + PCBUILD, "DLLs", "DLLS|DLLs")
-
-    # msvcr90.dll: Need to place the DLL and the manifest into the root directory,
-    # plus another copy of the manifest in the DLLs directory, with the manifest
-    # pointing to the root directory
-    root.start_component("msvcr90", feature=private_crt)
-    # Results are ID,keyword pairs
-    manifest, crtdll = extract_msvcr90()
-    root.add_file(manifest[0], **manifest[1])
-    root.add_file(crtdll[0], **crtdll[1])
-    # Copy the manifest
-    # Actually, don't do that anymore - no DLL in DLLs should have a manifest
-    # dependency on msvcr90.dll anymore, so this should not be necessary
-    #manifest_dlls = manifest[0]+".root"
-    #open(manifest_dlls, "w").write(open(manifest[1]['src']).read().replace("msvcr","../msvcr"))
-    #DLLs.start_component("msvcr90_dlls", feature=private_crt)
-    #DLLs.add_file(manifest[0], src=os.path.abspath(manifest_dlls))
-
-    # Now start the main component for the DLLs directory;
-    # no regular files have been added to the directory yet.
-    DLLs.start_component()
-
-    # Check if _ctypes.pyd exists
-    have_ctypes = os.path.exists(srcdir+"/%s/_ctypes.pyd" % PCBUILD)
-    if not have_ctypes:
-        print "WARNING: _ctypes.pyd not found, ctypes will not be included"
-        extensions.remove("_ctypes.pyd")
-
-    # Add all .py files in Lib, except lib-tk, test
-    dirs={}
-    pydirs = [(root,"Lib")]
-    while pydirs:
-        # Commit every now and then, or else installer will complain
-        db.Commit()
-        parent, dir = pydirs.pop()
-        if dir == ".svn" or dir.startswith("plat-"):
-            continue
-        elif dir in ["lib-tk", "idlelib", "Icons"]:
-            if not have_tcl:
-                continue
-            tcltk.set_current()
-        elif dir in ['test', 'tests', 'data', 'output']:
-            # test: Lib, Lib/email, Lib/bsddb, Lib/ctypes, Lib/sqlite3
-            # tests: Lib/distutils
-            # data: Lib/email/test
-            # output: Lib/test
-            testsuite.set_current()
-        elif not have_ctypes and dir == "ctypes":
-            continue
-        else:
-            default_feature.set_current()
-        lib = PyDirectory(db, cab, parent, dir, dir, "%s|%s" % (parent.make_short(dir), dir))
-        # Add additional files
-        dirs[dir]=lib
-        lib.glob("*.txt")
-        if dir=='site-packages':
-            lib.add_file("README.txt", src="README")
-            continue
-        files = lib.glob("*.py")
-        files += lib.glob("*.pyw")
-        if files:
-            # Add an entry to the RemoveFile table to remove bytecode files.
-            lib.remove_pyc()
-        if dir.endswith('.egg-info'):
-            lib.add_file('entry_points.txt')
-            lib.add_file('PKG-INFO')
-            lib.add_file('top_level.txt')
-            lib.add_file('zip-safe')
-            continue
-        if dir=='test' and parent.physical=='Lib':
-            lib.add_file("185test.db")
-            lib.add_file("audiotest.au")
-            lib.add_file("cfgparser.1")
-            lib.add_file("sgml_input.html")
-            lib.add_file("testtar.tar")
-            lib.add_file("test_difflib_expect.html")
-            lib.add_file("check_soundcard.vbs")
-            lib.add_file("empty.vbs")
-            lib.add_file("Sine-1000Hz-300ms.aif")
-            lib.glob("*.uue")
-            lib.glob("*.pem")
-            lib.glob("*.pck")
-            lib.add_file("zipdir.zip")
-        if dir=='tests' and parent.physical=='distutils':
-            lib.add_file("Setup.sample")
-        if dir=='decimaltestdata':
-            lib.glob("*.decTest")
-        if dir=='xmltestdata':
-            lib.glob("*.xml")
-            lib.add_file("test.xml.out")
-        if dir=='output':
-            lib.glob("test_*")
-        if dir=='idlelib':
-            lib.glob("*.def")
-            lib.add_file("idle.bat")
-        if dir=="Icons":
-            lib.glob("*.gif")
-            lib.add_file("idle.icns")
-        if dir=="command" and parent.physical=="distutils":
-            lib.glob("wininst*.exe")
-        if dir=="setuptools":
-            lib.add_file("cli.exe")
-            lib.add_file("gui.exe")
-        if dir=="lib2to3":
-            lib.removefile("pickle", "*.pickle")
-        if dir=="data" and parent.physical=="test" and parent.basedir.physical=="email":
-            # This should contain all non-.svn files listed in subversion
-            for f in os.listdir(lib.absolute):
-                if f.endswith(".txt") or f==".svn":continue
-                if f.endswith(".au") or f.endswith(".gif"):
-                    lib.add_file(f)
-                else:
-                    print "WARNING: New file %s in email/test/data" % f
-        for f in os.listdir(lib.absolute):
-            if os.path.isdir(os.path.join(lib.absolute, f)):
-                pydirs.append((lib, f))
-    # Add DLLs
-    default_feature.set_current()
-    lib = DLLs
-    lib.add_file("py.ico", src=srcdir+"/PC/py.ico")
-    lib.add_file("pyc.ico", src=srcdir+"/PC/pyc.ico")
-    dlls = []
-    tclfiles = []
-    for f in extensions:
-        if f=="_tkinter.pyd":
-            continue
-        if not os.path.exists(srcdir + "/" + PCBUILD + "/" + f):
-            print "WARNING: Missing extension", f
-            continue
-        dlls.append(f)
-        lib.add_file(f)
-    # Add sqlite
-    if msilib.msi_type=="Intel64;1033":
-        sqlite_arch = "/ia64"
-    elif msilib.msi_type=="x64;1033":
-        sqlite_arch = "/amd64"
-        tclsuffix = "64"
-    else:
-        sqlite_arch = ""
-        tclsuffix = ""
-    lib.add_file("sqlite3.dll")
-    if have_tcl:
-        if not os.path.exists("%s/%s/_tkinter.pyd" % (srcdir, PCBUILD)):
-            print "WARNING: Missing _tkinter.pyd"
-        else:
-            lib.start_component("TkDLLs", tcltk)
-            lib.add_file("_tkinter.pyd")
-            dlls.append("_tkinter.pyd")
-            tcldir = os.path.normpath(srcdir+("/../tcltk%s/bin" % tclsuffix))
-            for f in glob.glob1(tcldir, "*.dll"):
-                lib.add_file(f, src=os.path.join(tcldir, f))
-    # check whether there are any unknown extensions
-    for f in glob.glob1(srcdir+"/"+PCBUILD, "*.pyd"):
-        if f.endswith("_d.pyd"): continue # debug version
-        if f in dlls: continue
-        print "WARNING: Unknown extension", f
-
-    # Add headers
-    default_feature.set_current()
-    lib = PyDirectory(db, cab, root, "include", "include", "INCLUDE|include")
-    lib.glob("*.h")
-    lib.add_file("pyconfig.h", src="../PC/pyconfig.h")
-    # Add import libraries
-    lib = PyDirectory(db, cab, root, PCBUILD, "libs", "LIBS|libs")
-    for f in dlls:
-        lib.add_file(f.replace('pyd','lib'))
-    lib.add_file('python%s%s.lib' % (major, minor))
-    # Add the mingw-format library
-    if have_mingw:
-        lib.add_file('libpython%s%s.a' % (major, minor))
-    if have_tcl:
-        # Add Tcl/Tk
-        tcldirs = [(root, '../tcltk%s/lib' % tclsuffix, 'tcl')]
-        tcltk.set_current()
-        while tcldirs:
-            parent, phys, dir = tcldirs.pop()
-            lib = PyDirectory(db, cab, parent, phys, dir, "%s|%s" % (parent.make_short(dir), dir))
-            if not os.path.exists(lib.absolute):
-                continue
-            for f in os.listdir(lib.absolute):
-                if os.path.isdir(os.path.join(lib.absolute, f)):
-                    tcldirs.append((lib, f, f))
-                else:
-                    lib.add_file(f)
-    # Add tools
-    tools.set_current()
-    tooldir = PyDirectory(db, cab, root, "Tools", "Tools", "TOOLS|Tools")
-    for f in ['i18n', 'pynche', 'Scripts', 'versioncheck', 'webchecker']:
-        lib = PyDirectory(db, cab, tooldir, f, f, "%s|%s" % (tooldir.make_short(f), f))
-        lib.glob("*.py")
-        lib.glob("*.pyw", exclude=['pydocgui.pyw'])
-        lib.remove_pyc()
-        lib.glob("*.txt")
-        if f == "pynche":
-            x = PyDirectory(db, cab, lib, "X", "X", "X|X")
-            x.glob("*.txt")
-        if os.path.exists(os.path.join(lib.absolute, "README")):
-            lib.add_file("README.txt", src="README")
-        if f == 'Scripts':
-            lib.add_file("2to3.py", src="2to3")
-            if have_tcl:
-                lib.start_component("pydocgui.pyw", tcltk, keyfile="pydocgui.pyw")
-                lib.add_file("pydocgui.pyw")
-    # Add documentation
-    htmlfiles.set_current()
-    lib = PyDirectory(db, cab, root, "Doc", "Doc", "DOC|Doc")
-    lib.start_component("documentation", keyfile=docfile)
-    lib.add_file(docfile, src="build/htmlhelp/"+docfile)
-
-    cab.commit(db)
-
-    for f in tmpfiles:
-        os.unlink(f)
-
-# See "Registry Table", "Component Table"
-def add_registry(db):
-    # File extensions, associated with the REGISTRY.def component
-    # IDLE verbs depend on the tcltk feature.
-    # msidbComponentAttributesRegistryKeyPath = 4
-    # -1 for Root specifies "dependent on ALLUSERS property"
-    tcldata = []
-    if have_tcl:
-        tcldata = [
-            ("REGISTRY.tcl", msilib.gen_uuid(), "TARGETDIR", registry_component, None,
-             "py.IDLE")]
-    add_data(db, "Component",
-             # msidbComponentAttributesRegistryKeyPath = 4
-             [("REGISTRY", msilib.gen_uuid(), "TARGETDIR", registry_component, None,
-               "InstallPath"),
-              ("REGISTRY.doc", msilib.gen_uuid(), "TARGETDIR", registry_component, None,
-               "Documentation"),
-              ("REGISTRY.def", msilib.gen_uuid(), "TARGETDIR", registry_component,
-               None, None)] + tcldata)
-    # See "FeatureComponents Table".
-    # The association between TclTk and pythonw.exe is necessary to make ICE59
-    # happy, because the installer otherwise believes that the IDLE and PyDoc
-    # shortcuts might get installed without pythonw.exe being install. This
-    # is not true, since installing TclTk will install the default feature, which
-    # will cause pythonw.exe to be installed.
-    # REGISTRY.tcl is not associated with any feature, as it will be requested
-    # through a custom action
-    tcldata = []
-    if have_tcl:
-        tcldata = [(tcltk.id, "pythonw.exe")]
-    add_data(db, "FeatureComponents",
-             [(default_feature.id, "REGISTRY"),
-              (htmlfiles.id, "REGISTRY.doc"),
-              (ext_feature.id, "REGISTRY.def")] +
-              tcldata
-              )
-    # Extensions are not advertised. For advertised extensions,
-    # we would need separate binaries that install along with the
-    # extension.
-    pat = r"Software\Classes\%sPython.%sFile\shell\%s\command"
-    ewi = "Edit with IDLE"
-    pat2 = r"Software\Classes\%sPython.%sFile\DefaultIcon"
-    pat3 = r"Software\Classes\%sPython.%sFile"
-    pat4 = r"Software\Classes\%sPython.%sFile\shellex\DropHandler"
-    tcl_verbs = []
-    if have_tcl:
-        tcl_verbs=[
-             ("py.IDLE", -1, pat % (testprefix, "", ewi), "",
-              r'"[TARGETDIR]pythonw.exe" "[TARGETDIR]Lib\idlelib\idle.pyw" -e "%1"',
-              "REGISTRY.tcl"),
-             ("pyw.IDLE", -1, pat % (testprefix, "NoCon", ewi), "",
-              r'"[TARGETDIR]pythonw.exe" "[TARGETDIR]Lib\idlelib\idle.pyw" -e "%1"',
-              "REGISTRY.tcl"),
-        ]
-    add_data(db, "Registry",
-            [# Extensions
-             ("py.ext", -1, r"Software\Classes\."+ext, "",
-              "Python.File", "REGISTRY.def"),
-             ("pyw.ext", -1, r"Software\Classes\."+ext+'w', "",
-              "Python.NoConFile", "REGISTRY.def"),
-             ("pyc.ext", -1, r"Software\Classes\."+ext+'c', "",
-              "Python.CompiledFile", "REGISTRY.def"),
-             ("pyo.ext", -1, r"Software\Classes\."+ext+'o', "",
-              "Python.CompiledFile", "REGISTRY.def"),
-             # MIME types
-             ("py.mime", -1, r"Software\Classes\."+ext, "Content Type",
-              "text/plain", "REGISTRY.def"),
-             ("pyw.mime", -1, r"Software\Classes\."+ext+'w', "Content Type",
-              "text/plain", "REGISTRY.def"),
-             #Verbs
-             ("py.open", -1, pat % (testprefix, "", "open"), "",
-              r'"[TARGETDIR]python.exe" "%1" %*', "REGISTRY.def"),
-             ("pyw.open", -1, pat % (testprefix, "NoCon", "open"), "",
-              r'"[TARGETDIR]pythonw.exe" "%1" %*', "REGISTRY.def"),
-             ("pyc.open", -1, pat % (testprefix, "Compiled", "open"), "",
-              r'"[TARGETDIR]python.exe" "%1" %*', "REGISTRY.def"),
-             ] + tcl_verbs + [
-             #Icons
-             ("py.icon", -1, pat2 % (testprefix, ""), "",
-              r'[DLLs]py.ico', "REGISTRY.def"),
-             ("pyw.icon", -1, pat2 % (testprefix, "NoCon"), "",
-              r'[DLLs]py.ico', "REGISTRY.def"),
-             ("pyc.icon", -1, pat2 % (testprefix, "Compiled"), "",
-              r'[DLLs]pyc.ico', "REGISTRY.def"),
-             # Descriptions
-             ("py.txt", -1, pat3 % (testprefix, ""), "",
-              "Python File", "REGISTRY.def"),
-             ("pyw.txt", -1, pat3 % (testprefix, "NoCon"), "",
-              "Python File (no console)", "REGISTRY.def"),
-             ("pyc.txt", -1, pat3 % (testprefix, "Compiled"), "",
-              "Compiled Python File", "REGISTRY.def"),
-             # Drop Handler
-             ("py.drop", -1, pat4 % (testprefix, ""), "",
-              "{60254CA5-953B-11CF-8C96-00AA00B8708C}", "REGISTRY.def"),
-             ("pyw.drop", -1, pat4 % (testprefix, "NoCon"), "",
-              "{60254CA5-953B-11CF-8C96-00AA00B8708C}", "REGISTRY.def"),
-             ("pyc.drop", -1, pat4 % (testprefix, "Compiled"), "",
-              "{60254CA5-953B-11CF-8C96-00AA00B8708C}", "REGISTRY.def"),
-            ])
-
-    # Registry keys
-    prefix = r"Software\%sPython\PythonCore\%s" % (testprefix, short_version)
-    add_data(db, "Registry",
-             [("InstallPath", -1, prefix+r"\InstallPath", "", "[TARGETDIR]", "REGISTRY"),
-              ("InstallGroup", -1, prefix+r"\InstallPath\InstallGroup", "",
-               "Python %s" % short_version, "REGISTRY"),
-              ("PythonPath", -1, prefix+r"\PythonPath", "",
-               r"[TARGETDIR]Lib;[TARGETDIR]DLLs;[TARGETDIR]Lib\lib-tk", "REGISTRY"),
-              ("Documentation", -1, prefix+r"\Help\Main Python Documentation", "",
-               "[TARGETDIR]Doc\\"+docfile , "REGISTRY.doc"),
-              ("Modules", -1, prefix+r"\Modules", "+", None, "REGISTRY"),
-              ("AppPaths", -1, r"Software\Microsoft\Windows\CurrentVersion\App Paths\Python.exe",
-               "", r"[TARGETDIR]Python.exe", "REGISTRY.def"),
-              ("DisplayIcon", -1,
-               r"Software\Microsoft\Windows\CurrentVersion\Uninstall\%s" % product_code,
-               "DisplayIcon", "[TARGETDIR]python.exe", "REGISTRY")
-              ])
-    # Shortcuts, see "Shortcut Table"
-    add_data(db, "Directory",
-             [("ProgramMenuFolder", "TARGETDIR", "."),
-              ("MenuDir", "ProgramMenuFolder", "PY%s%s|%sPython %s.%s" % (major,minor,testprefix,major,minor))])
-    add_data(db, "RemoveFile",
-             [("MenuDir", "TARGETDIR", None, "MenuDir", 2)])
-    tcltkshortcuts = []
-    if have_tcl:
-        tcltkshortcuts = [
-              ("IDLE", "MenuDir", "IDLE|IDLE (Python GUI)", "pythonw.exe",
-               tcltk.id, r'"[TARGETDIR]Lib\idlelib\idle.pyw"', None, None, "python_icon.exe", 0, None, "TARGETDIR"),
-              ("PyDoc", "MenuDir", "MODDOCS|Module Docs", "pythonw.exe",
-               tcltk.id, r'"[TARGETDIR]Tools\scripts\pydocgui.pyw"', None, None, "python_icon.exe", 0, None, "TARGETDIR"),
-              ]
-    add_data(db, "Shortcut",
-             tcltkshortcuts +
-             [# Advertised shortcuts: targets are features, not files
-              ("Python", "MenuDir", "PYTHON|Python (command line)", "python.exe",
-               default_feature.id, None, None, None, "python_icon.exe", 2, None, "TARGETDIR"),
-              # Advertising the Manual breaks on (some?) Win98, and the shortcut lacks an
-              # icon first.
-              #("Manual", "MenuDir", "MANUAL|Python Manuals", "documentation",
-              # htmlfiles.id, None, None, None, None, None, None, None),
-              ## Non-advertised shortcuts: must be associated with a registry component
-              ("Manual", "MenuDir", "MANUAL|Python Manuals", "REGISTRY.doc",
-               "[#%s]" % docfile, None,
-               None, None, None, None, None, None),
-              ("Uninstall", "MenuDir", "UNINST|Uninstall Python", "REGISTRY",
-               SystemFolderName+"msiexec",  "/x%s" % product_code,
-               None, None, None, None, None, None),
-              ])
-    db.Commit()
-
-def build_pdbzip():
-    pdbexclude = ['kill_python.pdb', 'make_buildinfo.pdb',
-                  'make_versioninfo.pdb']
-    path = "python-%s%s-pdb.zip" % (full_current_version, msilib.arch_ext)
-    pdbzip = zipfile.ZipFile(path, 'w')
-    for f in glob.glob1(os.path.join(srcdir, PCBUILD), "*.pdb"):
-        if f not in pdbexclude and not f.endswith('_d.pdb'):
-            pdbzip.write(os.path.join(srcdir, PCBUILD, f), f)
-    pdbzip.close()
-
-db,msiname = build_database()
-try:
-    add_features(db)
-    add_ui(db)
-    add_files(db)
-    add_registry(db)
-    remove_old_versions(db)
-    db.Commit()
-finally:
-    del db
-
-# Merge CRT into MSI file. This requires the database to be closed.
-mod_dir = os.path.join(os.environ["ProgramFiles"], "Common Files", "Merge Modules")
-if msilib.Win64:
-    modules = ["Microsoft_VC90_CRT_x86_x64.msm", "policy_9_0_Microsoft_VC90_CRT_x86_x64.msm"]
-else:
-    modules = ["Microsoft_VC90_CRT_x86.msm","policy_9_0_Microsoft_VC90_CRT_x86.msm"]
-
-for i, n in enumerate(modules):
-    modules[i] = os.path.join(mod_dir, n)
-
-def merge(msi, feature, rootdir, modules):
-    cab_and_filecount = []
-    # Step 1: Merge databases, extract cabfiles
-    m = msilib.MakeMerge2()
-    m.OpenLog("merge.log")
-    m.OpenDatabase(msi)
-    for module in modules:
-        print module
-        m.OpenModule(module,0)
-        m.Merge(feature, rootdir)
-        print "Errors:"
-        for e in m.Errors:
-            print e.Type, e.ModuleTable, e.DatabaseTable
-            print "   Modkeys:",
-            for s in e.ModuleKeys: print s,
-            print
-            print "   DBKeys:",
-            for s in e.DatabaseKeys: print s,
-            print
-        cabname = tempfile.mktemp(suffix=".cab")
-        m.ExtractCAB(cabname)
-        cab_and_filecount.append((cabname, len(m.ModuleFiles)))
-        m.CloseModule()
-    m.CloseDatabase(True)
-    m.CloseLog()
-
-    # Step 2: Add CAB files
-    i = msilib.MakeInstaller()
-    db = i.OpenDatabase(msi, constants.msiOpenDatabaseModeTransact)
-
-    v = db.OpenView("SELECT LastSequence FROM Media")
-    v.Execute(None)
-    maxmedia = -1
-    while 1:
-        r = v.Fetch()
-        if not r: break
-        seq = r.IntegerData(1)
-        if seq > maxmedia:
-            maxmedia = seq
-    print "Start of Media", maxmedia
-
-    for cabname, count in cab_and_filecount:
-        stream = "merged%d" % maxmedia
-        msilib.add_data(db, "Media",
-                [(maxmedia+1, maxmedia+count, None, "#"+stream, None, None)])
-        msilib.add_stream(db, stream,  cabname)
-        os.unlink(cabname)
-        maxmedia += count
-    # The merge module sets ALLUSERS to 1 in the property table.
-    # This is undesired; delete that
-    v = db.OpenView("DELETE FROM Property WHERE Property='ALLUSERS'")
-    v.Execute(None)
-    v.Close()
-    db.Commit()
-
-merge(msiname, "SharedCRT", "TARGETDIR", modules)
-
-# certname (from config.py) should be (a substring of)
-# the certificate subject, e.g. "Python Software Foundation"
-if certname:
-    os.system('signtool sign /n "%s" /t http://timestamp.verisign.com/scripts/timestamp.dll %s' % (certname, msiname))
-
-if pdbzip:
-    build_pdbzip()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msilib.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msilib.py
deleted file mode 100644
index d904b21..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msilib.py
+++ /dev/null
@@ -1,692 +0,0 @@
-# Microsoft Installer Library
-# (C) 2003 Martin v. Loewis
-
-import win32com.client.gencache
-import win32com.client
-import pythoncom, pywintypes
-from win32com.client import constants
-import re, string, os, sets, glob, subprocess, sys, _winreg, struct
-
-try:
-    basestring
-except NameError:
-    basestring = (str, unicode)
-
-# Partially taken from Wine
-datasizemask=      0x00ff
-type_valid=        0x0100
-type_localizable=  0x0200
-
-typemask=          0x0c00
-type_long=         0x0000
-type_short=        0x0400
-type_string=       0x0c00
-type_binary=       0x0800
-
-type_nullable=     0x1000
-type_key=          0x2000
-# XXX temporary, localizable?
-knownbits = datasizemask | type_valid | type_localizable | \
-            typemask | type_nullable | type_key
-
-# Summary Info Property IDs
-PID_CODEPAGE=1
-PID_TITLE=2
-PID_SUBJECT=3
-PID_AUTHOR=4
-PID_KEYWORDS=5
-PID_COMMENTS=6
-PID_TEMPLATE=7
-PID_LASTAUTHOR=8
-PID_REVNUMBER=9
-PID_LASTPRINTED=11
-PID_CREATE_DTM=12
-PID_LASTSAVE_DTM=13
-PID_PAGECOUNT=14
-PID_WORDCOUNT=15
-PID_CHARCOUNT=16
-PID_APPNAME=18
-PID_SECURITY=19
-
-def reset():
-    global _directories
-    _directories = sets.Set()
-
-def EnsureMSI():
-    win32com.client.gencache.EnsureModule('{000C1092-0000-0000-C000-000000000046}', 1033, 1, 0)
-
-def EnsureMSM():
-    try:
-        win32com.client.gencache.EnsureModule('{0ADDA82F-2C26-11D2-AD65-00A0C9AF11A6}', 0, 1, 0)
-    except pywintypes.com_error:
-        win32com.client.gencache.EnsureModule('{0ADDA82F-2C26-11D2-AD65-00A0C9AF11A6}', 0, 2, 0)
-
-_Installer=None
-def MakeInstaller():
-    global _Installer
-    if _Installer is None:
-        EnsureMSI()
-        _Installer = win32com.client.Dispatch('WindowsInstaller.Installer',
-                     resultCLSID='{000C1090-0000-0000-C000-000000000046}')
-    return _Installer
-
-_Merge=None
-def MakeMerge2():
-    global _Merge
-    if _Merge is None:
-        EnsureMSM()
-        _Merge = win32com.client.Dispatch("Msm.Merge2.1")
-    return _Merge
-
-class Table:
-    def __init__(self, name):
-        self.name = name
-        self.fields = []
-
-    def add_field(self, index, name, type):
-        self.fields.append((index,name,type))
-
-    def sql(self):
-        fields = []
-        keys = []
-        self.fields.sort()
-        fields = [None]*len(self.fields)
-        for index, name, type in self.fields:
-            index -= 1
-            unk = type & ~knownbits
-            if unk:
-                print "%s.%s unknown bits %x" % (self.name, name, unk)
-            size = type & datasizemask
-            dtype = type & typemask
-            if dtype == type_string:
-                if size:
-                    tname="CHAR(%d)" % size
-                else:
-                    tname="CHAR"
-            elif dtype == type_short:
-                assert size==2
-                tname = "SHORT"
-            elif dtype == type_long:
-                assert size==4
-                tname="LONG"
-            elif dtype == type_binary:
-                assert size==0
-                tname="OBJECT"
-            else:
-                tname="unknown"
-                print "%s.%sunknown integer type %d" % (self.name, name, size)
-            if type & type_nullable:
-                flags = ""
-            else:
-                flags = " NOT NULL"
-            if type & type_localizable:
-                flags += " LOCALIZABLE"
-            fields[index] = "`%s` %s%s" % (name, tname, flags)
-            if type & type_key:
-                keys.append("`%s`" % name)
-        fields = ", ".join(fields)
-        keys = ", ".join(keys)
-        return "CREATE TABLE %s (%s PRIMARY KEY %s)" % (self.name, fields, keys)
-
-    def create(self, db):
-        v = db.OpenView(self.sql())
-        v.Execute(None)
-        v.Close()
-
-class Binary:
-    def __init__(self, fname):
-        self.name = fname
-    def __repr__(self):
-        return 'msilib.Binary(os.path.join(dirname,"%s"))' % self.name
-
-def gen_schema(destpath, schemapath):
-    d = MakeInstaller()
-    schema = d.OpenDatabase(schemapath,
-            win32com.client.constants.msiOpenDatabaseModeReadOnly)
-
-    # XXX ORBER BY
-    v=schema.OpenView("SELECT * FROM _Columns")
-    curtable=None
-    tables = []
-    v.Execute(None)
-    f = open(destpath, "wt")
-    f.write("from msilib import Table\n")
-    while 1:
-        r=v.Fetch()
-        if not r:break
-        name=r.StringData(1)
-        if curtable != name:
-            f.write("\n%s = Table('%s')\n" % (name,name))
-            curtable = name
-            tables.append(name)
-        f.write("%s.add_field(%d,'%s',%d)\n" %
-                (name, r.IntegerData(2), r.StringData(3), r.IntegerData(4)))
-    v.Close()
-
-    f.write("\ntables=[%s]\n\n" % (", ".join(tables)))
-
-    # Fill the _Validation table
-    f.write("_Validation_records = [\n")
-    v = schema.OpenView("SELECT * FROM _Validation")
-    v.Execute(None)
-    while 1:
-        r = v.Fetch()
-        if not r:break
-        # Table, Column, Nullable
-        f.write("(%s,%s,%s," %
-                (`r.StringData(1)`, `r.StringData(2)`, `r.StringData(3)`))
-        def put_int(i):
-            if r.IsNull(i):f.write("None, ")
-            else:f.write("%d," % r.IntegerData(i))
-        def put_str(i):
-            if r.IsNull(i):f.write("None, ")
-            else:f.write("%s," % `r.StringData(i)`)
-        put_int(4) # MinValue
-        put_int(5) # MaxValue
-        put_str(6) # KeyTable
-        put_int(7) # KeyColumn
-        put_str(8) # Category
-        put_str(9) # Set
-        put_str(10)# Description
-        f.write("),\n")
-    f.write("]\n\n")
-
-    f.close()
-
-def gen_sequence(destpath, msipath):
-    dir = os.path.dirname(destpath)
-    d = MakeInstaller()
-    seqmsi = d.OpenDatabase(msipath,
-            win32com.client.constants.msiOpenDatabaseModeReadOnly)
-
-    v = seqmsi.OpenView("SELECT * FROM _Tables");
-    v.Execute(None)
-    f = open(destpath, "w")
-    print >>f, "import msilib,os;dirname=os.path.dirname(__file__)"
-    tables = []
-    while 1:
-        r = v.Fetch()
-        if not r:break
-        table = r.StringData(1)
-        tables.append(table)
-        f.write("%s = [\n" % table)
-        v1 = seqmsi.OpenView("SELECT * FROM `%s`" % table)
-        v1.Execute(None)
-        info = v1.ColumnInfo(constants.msiColumnInfoTypes)
-        while 1:
-            r = v1.Fetch()
-            if not r:break
-            rec = []
-            for i in range(1,r.FieldCount+1):
-                if r.IsNull(i):
-                    rec.append(None)
-                elif info.StringData(i)[0] in "iI":
-                    rec.append(r.IntegerData(i))
-                elif info.StringData(i)[0] in "slSL":
-                    rec.append(r.StringData(i))
-                elif info.StringData(i)[0]=="v":
-                    size = r.DataSize(i)
-                    bytes = r.ReadStream(i, size, constants.msiReadStreamBytes)
-                    bytes = bytes.encode("latin-1") # binary data represented "as-is"
-                    if table == "Binary":
-                        fname = rec[0]+".bin"
-                        open(os.path.join(dir,fname),"wb").write(bytes)
-                        rec.append(Binary(fname))
-                    else:
-                        rec.append(bytes)
-                else:
-                    raise "Unsupported column type", info.StringData(i)
-            f.write(repr(tuple(rec))+",\n")
-        v1.Close()
-        f.write("]\n\n")
-    v.Close()
-    f.write("tables=%s\n" % repr(map(str,tables)))
-    f.close()
-
-class _Unspecified:pass
-def change_sequence(seq, action, seqno=_Unspecified, cond = _Unspecified):
-    "Change the sequence number of an action in a sequence list"
-    for i in range(len(seq)):
-        if seq[i][0] == action:
-            if cond is _Unspecified:
-                cond = seq[i][1]
-            if seqno is _Unspecified:
-                seqno = seq[i][2]
-            seq[i] = (action, cond, seqno)
-            return
-    raise ValueError, "Action not found in sequence"
-
-def add_data(db, table, values):
-    d = MakeInstaller()
-    v = db.OpenView("SELECT * FROM `%s`" % table)
-    count = v.ColumnInfo(0).FieldCount
-    r = d.CreateRecord(count)
-    for value in values:
-        assert len(value) == count, value
-        for i in range(count):
-            field = value[i]
-            if isinstance(field, (int, long)):
-                r.SetIntegerData(i+1,field)
-            elif isinstance(field, basestring):
-                r.SetStringData(i+1,field)
-            elif field is None:
-                pass
-            elif isinstance(field, Binary):
-                r.SetStream(i+1, field.name)
-            else:
-                raise TypeError, "Unsupported type %s" % field.__class__.__name__
-        v.Modify(win32com.client.constants.msiViewModifyInsert, r)
-        r.ClearData()
-    v.Close()
-
-def add_stream(db, name, path):
-    d = MakeInstaller()
-    v = db.OpenView("INSERT INTO _Streams (Name, Data) VALUES ('%s', ?)" % name)
-    r = d.CreateRecord(1)
-    r.SetStream(1, path)
-    v.Execute(r)
-    v.Close()
-
-def init_database(name, schema,
-                  ProductName, ProductCode, ProductVersion,
-                  Manufacturer,
-                  request_uac = False):
-    try:
-        os.unlink(name)
-    except OSError:
-        pass
-    ProductCode = ProductCode.upper()
-    d = MakeInstaller()
-    # Create the database
-    db = d.OpenDatabase(name,
-         win32com.client.constants.msiOpenDatabaseModeCreate)
-    # Create the tables
-    for t in schema.tables:
-        t.create(db)
-    # Fill the validation table
-    add_data(db, "_Validation", schema._Validation_records)
-    # Initialize the summary information, allowing atmost 20 properties
-    si = db.GetSummaryInformation(20)
-    si.SetProperty(PID_TITLE, "Installation Database")
-    si.SetProperty(PID_SUBJECT, ProductName)
-    si.SetProperty(PID_AUTHOR, Manufacturer)
-    si.SetProperty(PID_TEMPLATE, msi_type)
-    si.SetProperty(PID_REVNUMBER, gen_uuid())
-    if request_uac:
-        wc = 2 # long file names, compressed, original media
-    else:
-        wc = 2 | 8 # +never invoke UAC
-    si.SetProperty(PID_WORDCOUNT, wc)
-    si.SetProperty(PID_PAGECOUNT, 200)
-    si.SetProperty(PID_APPNAME, "Python MSI Library")
-    # XXX more properties
-    si.Persist()
-    add_data(db, "Property", [
-        ("ProductName", ProductName),
-        ("ProductCode", ProductCode),
-        ("ProductVersion", ProductVersion),
-        ("Manufacturer", Manufacturer),
-        ("ProductLanguage", "1033")])
-    db.Commit()
-    return db
-
-def add_tables(db, module):
-    for table in module.tables:
-        add_data(db, table, getattr(module, table))
-
-def make_id(str):
-    #str = str.replace(".", "_") # colons are allowed
-    str = str.replace(" ", "_")
-    str = str.replace("-", "_")
-    str = str.replace("+", "_")
-    if str[0] in string.digits:
-        str = "_"+str
-    assert re.match("^[A-Za-z_][A-Za-z0-9_.]*$", str), "FILE"+str
-    return str
-
-def gen_uuid():
-    return str(pythoncom.CreateGuid())
-
-class CAB:
-    def __init__(self, name):
-        self.name = name
-        self.file = open(name+".txt", "wt")
-        self.filenames = sets.Set()
-        self.index = 0
-
-    def gen_id(self, dir, file):
-        logical = _logical = make_id(file)
-        pos = 1
-        while logical in self.filenames:
-            logical = "%s.%d" % (_logical, pos)
-            pos += 1
-        self.filenames.add(logical)
-        return logical
-
-    def append(self, full, file, logical = None):
-        if os.path.isdir(full):
-            return
-        if not logical:
-            logical = self.gen_id(dir, file)
-        self.index += 1
-        if full.find(" ")!=-1:
-            print >>self.file, '"%s" %s' % (full, logical)
-        else:
-            print >>self.file, '%s %s' % (full, logical)
-        return self.index, logical
-
-    def commit(self, db):
-        self.file.close()
-        try:
-            os.unlink(self.name+".cab")
-        except OSError:
-            pass
-        for k, v in [(r"Software\Microsoft\VisualStudio\7.1\Setup\VS", "VS7CommonBinDir"),
-                     (r"Software\Microsoft\VisualStudio\8.0\Setup\VS", "VS7CommonBinDir"),
-                     (r"Software\Microsoft\VisualStudio\9.0\Setup\VS", "VS7CommonBinDir"),
-                     (r"Software\Microsoft\Win32SDK\Directories", "Install Dir"),
-                    ]:
-            try:
-                key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, k)
-                dir = _winreg.QueryValueEx(key, v)[0]
-                _winreg.CloseKey(key)
-            except (WindowsError, IndexError):
-                continue
-            cabarc = os.path.join(dir, r"Bin", "cabarc.exe")
-            if not os.path.exists(cabarc):
-                continue
-            break
-        else:
-            print "WARNING: cabarc.exe not found in registry"
-            cabarc = "cabarc.exe"
-        cmd = r'"%s" -m lzx:21 n %s.cab @%s.txt' % (cabarc, self.name, self.name)
-        p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE,
-                             stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
-        for line in p.stdout:
-            if line.startswith("  -- adding "):
-                sys.stdout.write(".")
-            else:
-                sys.stdout.write(line)
-            sys.stdout.flush()
-        if not os.path.exists(self.name+".cab"):
-            raise IOError, "cabarc failed"
-        add_data(db, "Media",
-                [(1, self.index, None, "#"+self.name, None, None)])
-        add_stream(db, self.name, self.name+".cab")
-        os.unlink(self.name+".txt")
-        os.unlink(self.name+".cab")
-        db.Commit()
-
-_directories = sets.Set()
-class Directory:
-    def __init__(self, db, cab, basedir, physical, _logical, default, componentflags=None):
-        """Create a new directory in the Directory table. There is a current component
-        at each point in time for the directory, which is either explicitly created
-        through start_component, or implicitly when files are added for the first
-        time. Files are added into the current component, and into the cab file.
-        To create a directory, a base directory object needs to be specified (can be
-        None), the path to the physical directory, and a logical directory name.
-        Default specifies the DefaultDir slot in the directory table. componentflags
-        specifies the default flags that new components get."""
-        index = 1
-        _logical = make_id(_logical)
-        logical = _logical
-        while logical in _directories:
-            logical = "%s%d" % (_logical, index)
-            index += 1
-        _directories.add(logical)
-        self.db = db
-        self.cab = cab
-        self.basedir = basedir
-        self.physical = physical
-        self.logical = logical
-        self.component = None
-        self.short_names = sets.Set()
-        self.ids = sets.Set()
-        self.keyfiles = {}
-        self.componentflags = componentflags
-        if basedir:
-            self.absolute = os.path.join(basedir.absolute, physical)
-            blogical = basedir.logical
-        else:
-            self.absolute = physical
-            blogical = None
-        add_data(db, "Directory", [(logical, blogical, default)])
-
-    def start_component(self, component = None, feature = None, flags = None, keyfile = None, uuid=None):
-        """Add an entry to the Component table, and make this component the current for this
-        directory. If no component name is given, the directory name is used. If no feature
-        is given, the current feature is used. If no flags are given, the directory's default
-        flags are used. If no keyfile is given, the KeyPath is left null in the Component
-        table."""
-        if flags is None:
-            flags = self.componentflags
-        if uuid is None:
-            uuid = gen_uuid()
-        else:
-            uuid = uuid.upper()
-        if component is None:
-            component = self.logical
-        self.component = component
-        if Win64:
-            flags |= 256
-        if keyfile:
-            keyid = self.cab.gen_id(self.absolute, keyfile)
-            self.keyfiles[keyfile] = keyid
-        else:
-            keyid = None
-        add_data(self.db, "Component",
-                        [(component, uuid, self.logical, flags, None, keyid)])
-        if feature is None:
-            feature = current_feature
-        add_data(self.db, "FeatureComponents",
-                        [(feature.id, component)])
-
-    def make_short(self, file):
-        file = re.sub(r'[\?|><:/*"+,;=\[\]]', '_', file) # restrictions on short names
-        parts = file.split(".")
-        if len(parts)>1:
-            suffix = parts[-1].upper()
-        else:
-            suffix = None
-        prefix = parts[0].upper()
-        if len(prefix) <= 8 and (not suffix or len(suffix)<=3):
-            if suffix:
-                file = prefix+"."+suffix
-            else:
-                file = prefix
-            assert file not in self.short_names
-        else:
-            prefix = prefix[:6]
-            if suffix:
-                suffix = suffix[:3]
-            pos = 1
-            while 1:
-                if suffix:
-                    file = "%s~%d.%s" % (prefix, pos, suffix)
-                else:
-                    file = "%s~%d" % (prefix, pos)
-                if file not in self.short_names: break
-                pos += 1
-                assert pos < 10000
-                if pos in (10, 100, 1000):
-                    prefix = prefix[:-1]
-        self.short_names.add(file)
-        return file
-
-    def add_file(self, file, src=None, version=None, language=None):
-        """Add a file to the current component of the directory, starting a new one
-        one if there is no current component. By default, the file name in the source
-        and the file table will be identical. If the src file is specified, it is
-        interpreted relative to the current directory. Optionally, a version and a
-        language can be specified for the entry in the File table."""
-        if not self.component:
-            self.start_component(self.logical, current_feature)
-        if not src:
-            # Allow relative paths for file if src is not specified
-            src = file
-            file = os.path.basename(file)
-        absolute = os.path.join(self.absolute, src)
-        assert not re.search(r'[\?|><:/*]"', file) # restrictions on long names
-        if self.keyfiles.has_key(file):
-            logical = self.keyfiles[file]
-        else:
-            logical = None
-        sequence, logical = self.cab.append(absolute, file, logical)
-        assert logical not in self.ids
-        self.ids.add(logical)
-        short = self.make_short(file)
-        full = "%s|%s" % (short, file)
-        filesize = os.stat(absolute).st_size
-        # constants.msidbFileAttributesVital
-        # Compressed omitted, since it is the database default
-        # could add r/o, system, hidden
-        attributes = 512
-        add_data(self.db, "File",
-                        [(logical, self.component, full, filesize, version,
-                         language, attributes, sequence)])
-        if not version:
-            # Add hash if the file is not versioned
-            filehash = MakeInstaller().FileHash(absolute, 0)
-            add_data(self.db, "MsiFileHash",
-                     [(logical, 0, filehash.IntegerData(1),
-                       filehash.IntegerData(2), filehash.IntegerData(3),
-                       filehash.IntegerData(4))])
-        # Automatically remove .pyc/.pyo files on uninstall (2)
-        # XXX: adding so many RemoveFile entries makes installer unbelievably
-        # slow. So instead, we have to use wildcard remove entries
-        # if file.endswith(".py"):
-        #     add_data(self.db, "RemoveFile",
-        #              [(logical+"c", self.component, "%sC|%sc" % (short, file),
-        #                self.logical, 2),
-        #               (logical+"o", self.component, "%sO|%so" % (short, file),
-        #                self.logical, 2)])
-
-    def glob(self, pattern, exclude = None):
-        """Add a list of files to the current component as specified in the
-        glob pattern. Individual files can be excluded in the exclude list."""
-        files = glob.glob1(self.absolute, pattern)
-        for f in files:
-            if exclude and f in exclude: continue
-            self.add_file(f)
-        return files
-
-    def remove_pyc(self):
-        "Remove .pyc/.pyo files on uninstall"
-        add_data(self.db, "RemoveFile",
-                 [(self.component+"c", self.component, "*.pyc", self.logical, 2),
-                  (self.component+"o", self.component, "*.pyo", self.logical, 2)])
-
-    def removefile(self, key, pattern):
-        "Add a RemoveFile entry"
-        add_data(self.db, "RemoveFile", [(self.component+key, self.component, pattern, self.logical, 2)])
-
-
-class Feature:
-    def __init__(self, db, id, title, desc, display, level = 1,
-                 parent=None, directory = None, attributes=0):
-        self.id = id
-        if parent:
-            parent = parent.id
-        add_data(db, "Feature",
-                        [(id, parent, title, desc, display,
-                          level, directory, attributes)])
-    def set_current(self):
-        global current_feature
-        current_feature = self
-
-class Control:
-    def __init__(self, dlg, name):
-        self.dlg = dlg
-        self.name = name
-
-    def event(self, ev, arg, cond = "1", order = None):
-        add_data(self.dlg.db, "ControlEvent",
-                 [(self.dlg.name, self.name, ev, arg, cond, order)])
-
-    def mapping(self, ev, attr):
-        add_data(self.dlg.db, "EventMapping",
-                 [(self.dlg.name, self.name, ev, attr)])
-
-    def condition(self, action, condition):
-        add_data(self.dlg.db, "ControlCondition",
-                 [(self.dlg.name, self.name, action, condition)])
-
-class RadioButtonGroup(Control):
-    def __init__(self, dlg, name, property):
-        self.dlg = dlg
-        self.name = name
-        self.property = property
-        self.index = 1
-
-    def add(self, name, x, y, w, h, text, value = None):
-        if value is None:
-            value = name
-        add_data(self.dlg.db, "RadioButton",
-                 [(self.property, self.index, value,
-                   x, y, w, h, text, None)])
-        self.index += 1
-
-class Dialog:
-    def __init__(self, db, name, x, y, w, h, attr, title, first, default, cancel):
-        self.db = db
-        self.name = name
-        self.x, self.y, self.w, self.h = x,y,w,h
-        add_data(db, "Dialog", [(name, x,y,w,h,attr,title,first,default,cancel)])
-
-    def control(self, name, type, x, y, w, h, attr, prop, text, next, help):
-        add_data(self.db, "Control",
-                 [(self.name, name, type, x, y, w, h, attr, prop, text, next, help)])
-        return Control(self, name)
-
-    def text(self, name, x, y, w, h, attr, text):
-        return self.control(name, "Text", x, y, w, h, attr, None,
-                     text, None, None)
-
-    def bitmap(self, name, x, y, w, h, text):
-        return self.control(name, "Bitmap", x, y, w, h, 1, None, text, None, None)
-
-    def line(self, name, x, y, w, h):
-        return self.control(name, "Line", x, y, w, h, 1, None, None, None, None)
-
-    def pushbutton(self, name, x, y, w, h, attr, text, next):
-        return self.control(name, "PushButton", x, y, w, h, attr, None, text, next, None)
-
-    def radiogroup(self, name, x, y, w, h, attr, prop, text, next):
-        add_data(self.db, "Control",
-                 [(self.name, name, "RadioButtonGroup",
-                   x, y, w, h, attr, prop, text, next, None)])
-        return RadioButtonGroup(self, name, prop)
-
-    def checkbox(self, name, x, y, w, h, attr, prop, text, next):
-        return self.control(name, "CheckBox", x, y, w, h, attr, prop, text, next, None)
-
-def pe_type(path):
-    header = open(path, "rb").read(1000)
-    # offset of PE header is at offset 0x3c
-    pe_offset = struct.unpack("<i", header[0x3c:0x40])[0]
-    assert header[pe_offset:pe_offset+4] == "PE\0\0"
-    machine = struct.unpack("<H", header[pe_offset+4:pe_offset+6])[0]
-    return machine
-
-def set_arch_from_file(path):
-    global msi_type, Win64, arch_ext
-    machine = pe_type(path)
-    if machine == 0x14c:
-        # i386
-        msi_type = "Intel"
-        Win64 = 0
-        arch_ext = ''
-    elif machine == 0x200:
-        # Itanium
-        msi_type = "Intel64"
-        Win64 = 1
-        arch_ext = '.ia64'
-    elif machine == 0x8664:
-        # AMD64
-        msi_type = "x64"
-        Win64 = 1
-        arch_ext = '.amd64'
-    else:
-        raise ValueError, "Unsupported architecture"
-    msi_type += ";1033"
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msisupport.c b/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msisupport.c
deleted file mode 100644
index 87a4e6b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msisupport.c
+++ /dev/null
@@ -1,93 +0,0 @@
-#include "windows.h"
-#include "msiquery.h"
-
-/* Print a debug message to the installer log file.
- * To see the debug messages, install with
- * msiexec /i pythonxy.msi /l*v python.log
- */
-static UINT debug(MSIHANDLE hInstall, LPCSTR msg)
-{
-    MSIHANDLE hRec = MsiCreateRecord(1);
-    if (!hRec || MsiRecordSetStringA(hRec, 1, msg) != ERROR_SUCCESS) {
-        return ERROR_INSTALL_FAILURE;
-    }
-    MsiProcessMessage(hInstall, INSTALLMESSAGE_INFO, hRec);
-    MsiCloseHandle(hRec);
-    return ERROR_SUCCESS;
-}
-
-/* Check whether the TARGETDIR exists and is a directory.
- * Set TargetExists appropriately.
- */
-UINT __declspec(dllexport) __stdcall CheckDir(MSIHANDLE hInstall)
-{
-#define PSIZE 1024
-    WCHAR wpath[PSIZE];
-    char path[PSIZE];
-    UINT result;
-    DWORD size = PSIZE;
-    DWORD attributes;
-
-
-    result = MsiGetPropertyW(hInstall, L"TARGETDIR", wpath, &size);
-    if (result != ERROR_SUCCESS)
-        return result;
-    wpath[size] = L'\0';
-    path[size] = L'\0';
-
-    attributes = GetFileAttributesW(wpath);
-    if (attributes == INVALID_FILE_ATTRIBUTES ||
-        !(attributes & FILE_ATTRIBUTE_DIRECTORY))
-    {
-        return MsiSetPropertyA(hInstall, "TargetExists", "0");
-    } else {
-        return MsiSetPropertyA(hInstall, "TargetExists", "1");
-    }
-}
-
-/* Update the state of the REGISTRY.tcl component according to the
- * Extension and TclTk features. REGISTRY.tcl must be installed
- * if both features are installed, and must be absent otherwise.
- */
-UINT __declspec(dllexport) __stdcall UpdateEditIDLE(MSIHANDLE hInstall)
-{
-    INSTALLSTATE ext_old, ext_new, tcl_old, tcl_new, reg_new;
-    UINT result;
-
-    result = MsiGetFeatureStateA(hInstall, "Extensions", &ext_old, &ext_new);
-    if (result != ERROR_SUCCESS)
-        return result;
-    result = MsiGetFeatureStateA(hInstall, "TclTk", &tcl_old, &tcl_new);
-    if (result != ERROR_SUCCESS)
-        return result;
-
-    /* If the current state is Absent, and the user did not select
-       the feature in the UI, Installer apparently sets the "selected"
-       state to unknown. Update it to the current value, then. */
-    if (ext_new == INSTALLSTATE_UNKNOWN)
-        ext_new = ext_old;
-    if (tcl_new == INSTALLSTATE_UNKNOWN)
-        tcl_new = tcl_old;
-
-    // XXX consider current state of REGISTRY.tcl?
-    if (((tcl_new == INSTALLSTATE_LOCAL) ||
-             (tcl_new == INSTALLSTATE_SOURCE) ||
-             (tcl_new == INSTALLSTATE_DEFAULT)) &&
-        ((ext_new == INSTALLSTATE_LOCAL) ||
-         (ext_new == INSTALLSTATE_SOURCE) ||
-         (ext_new == INSTALLSTATE_DEFAULT))) {
-        reg_new = INSTALLSTATE_SOURCE;
-    } else {
-        reg_new = INSTALLSTATE_ABSENT;
-    }
-    result = MsiSetComponentStateA(hInstall, "REGISTRY.tcl", reg_new);
-    return result;
-}
-
-BOOL APIENTRY DllMain(HANDLE hModule,
-                      DWORD  ul_reason_for_call,
-                      LPVOID lpReserved)
-{
-    return TRUE;
-}
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msisupport.mak b/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msisupport.mak
deleted file mode 100644
index f6e2b02..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/msisupport.mak
+++ /dev/null
@@ -1,9 +0,0 @@
-# /OPT: REF and ICF are added by VS.NET by default
-msisupport.dll:	msisupport.obj
-	link.exe /OUT:msisupport.dll /INCREMENTAL:NO /NOLOGO /DLL /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF msisupport.obj msi.lib kernel32.lib
-
-# We request a static CRT, so that there will be no CRT dependencies
-# for the target system. We cannot do without a CRT, since it provides
-# the DLL entry point.
-msisupport.obj:	msisupport.c
-	cl /O2 /D WIN32 /D NDEBUG /D _WINDOWS /MT /W3 /c msisupport.c
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/schema.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/schema.py
deleted file mode 100644
index f99b440..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/schema.py
+++ /dev/null
@@ -1,1007 +0,0 @@
-from msilib import Table
-
-_Validation = Table('_Validation')
-_Validation.add_field(1,'Table',11552)
-_Validation.add_field(2,'Column',11552)
-_Validation.add_field(3,'Nullable',3332)
-_Validation.add_field(4,'MinValue',4356)
-_Validation.add_field(5,'MaxValue',4356)
-_Validation.add_field(6,'KeyTable',7679)
-_Validation.add_field(7,'KeyColumn',5378)
-_Validation.add_field(8,'Category',7456)
-_Validation.add_field(9,'Set',7679)
-_Validation.add_field(10,'Description',7679)
-
-ActionText = Table('ActionText')
-ActionText.add_field(1,'Action',11592)
-ActionText.add_field(2,'Description',7936)
-ActionText.add_field(3,'Template',7936)
-
-AdminExecuteSequence = Table('AdminExecuteSequence')
-AdminExecuteSequence.add_field(1,'Action',0x2DFF)
-AdminExecuteSequence.add_field(2,'Condition',7679)
-AdminExecuteSequence.add_field(3,'Sequence',5378)
-
-Condition = Table('Condition')
-Condition.add_field(1,'Feature_',11558)
-Condition.add_field(2,'Level',9474)
-Condition.add_field(3,'Condition',7679)
-
-AdminUISequence = Table('AdminUISequence')
-AdminUISequence.add_field(1,'Action',0x2DFF)
-AdminUISequence.add_field(2,'Condition',7679)
-AdminUISequence.add_field(3,'Sequence',5378)
-
-AdvtExecuteSequence = Table('AdvtExecuteSequence')
-AdvtExecuteSequence.add_field(1,'Action',0x2DFF)
-AdvtExecuteSequence.add_field(2,'Condition',7679)
-AdvtExecuteSequence.add_field(3,'Sequence',5378)
-
-AdvtUISequence = Table('AdvtUISequence')
-AdvtUISequence.add_field(1,'Action',11592)
-AdvtUISequence.add_field(2,'Condition',7679)
-AdvtUISequence.add_field(3,'Sequence',5378)
-
-AppId = Table('AppId')
-AppId.add_field(1,'AppId',11558)
-AppId.add_field(2,'RemoteServerName',7679)
-AppId.add_field(3,'LocalService',7679)
-AppId.add_field(4,'ServiceParameters',7679)
-AppId.add_field(5,'DllSurrogate',7679)
-AppId.add_field(6,'ActivateAtStorage',5378)
-AppId.add_field(7,'RunAsInteractiveUser',5378)
-
-AppSearch = Table('AppSearch')
-AppSearch.add_field(1,'Property',11592)
-AppSearch.add_field(2,'Signature_',11592)
-
-Property = Table('Property')
-Property.add_field(1,'Property',11592)
-Property.add_field(2,'Value',3840)
-
-BBControl = Table('BBControl')
-BBControl.add_field(1,'Billboard_',11570)
-BBControl.add_field(2,'BBControl',11570)
-BBControl.add_field(3,'Type',3378)
-BBControl.add_field(4,'X',1282)
-BBControl.add_field(5,'Y',1282)
-BBControl.add_field(6,'Width',1282)
-BBControl.add_field(7,'Height',1282)
-BBControl.add_field(8,'Attributes',4356)
-BBControl.add_field(9,'Text',7986)
-
-Billboard = Table('Billboard')
-Billboard.add_field(1,'Billboard',11570)
-Billboard.add_field(2,'Feature_',3366)
-Billboard.add_field(3,'Action',7474)
-Billboard.add_field(4,'Ordering',5378)
-
-Feature = Table('Feature')
-Feature.add_field(1,'Feature',11558)
-Feature.add_field(2,'Feature_Parent',7462)
-Feature.add_field(3,'Title',8000)
-Feature.add_field(4,'Description',8191)
-Feature.add_field(5,'Display',5378)
-Feature.add_field(6,'Level',1282)
-Feature.add_field(7,'Directory_',0x1DFF)
-Feature.add_field(8,'Attributes',1282)
-
-Binary = Table('Binary')
-Binary.add_field(1,'Name',11592)
-Binary.add_field(2,'Data',2304)
-
-BindImage = Table('BindImage')
-BindImage.add_field(1,'File_',0x2DFF)
-BindImage.add_field(2,'Path',7679)
-
-File = Table('File')
-File.add_field(1,'File',0x2DFF)
-File.add_field(2,'Component_',0xDFF)
-File.add_field(3,'FileName',4095)
-File.add_field(4,'FileSize',260)
-File.add_field(5,'Version',0x1DFF)
-File.add_field(6,'Language',7444)
-File.add_field(7,'Attributes',5378)
-File.add_field(8,'Sequence',1282)
-
-CCPSearch = Table('CCPSearch')
-CCPSearch.add_field(1,'Signature_',11592)
-
-CheckBox = Table('CheckBox')
-CheckBox.add_field(1,'Property',11592)
-CheckBox.add_field(2,'Value',7488)
-
-Class = Table('Class')
-Class.add_field(1,'CLSID',11558)
-Class.add_field(2,'Context',11552)
-Class.add_field(3,'Component_',0x2DFF)
-Class.add_field(4,'ProgId_Default',7679)
-Class.add_field(5,'Description',8191)
-Class.add_field(6,'AppId_',7462)
-Class.add_field(7,'FileTypeMask',7679)
-Class.add_field(8,'Icon_',7496)
-Class.add_field(9,'IconIndex',5378)
-Class.add_field(10,'DefInprocHandler',7456)
-Class.add_field(11,'Argument',7679)
-Class.add_field(12,'Feature_',3366)
-Class.add_field(13,'Attributes',5378)
-
-Component = Table('Component')
-Component.add_field(1,'Component',0x2DFF)
-Component.add_field(2,'ComponentId',7462)
-Component.add_field(3,'Directory_',0xDFF)
-Component.add_field(4,'Attributes',1282)
-Component.add_field(5,'Condition',7679)
-Component.add_field(6,'KeyPath',0x1DFF)
-
-Icon = Table('Icon')
-Icon.add_field(1,'Name',11592)
-Icon.add_field(2,'Data',2304)
-
-ProgId = Table('ProgId')
-ProgId.add_field(1,'ProgId',11775)
-ProgId.add_field(2,'ProgId_Parent',7679)
-ProgId.add_field(3,'Class_',7462)
-ProgId.add_field(4,'Description',8191)
-ProgId.add_field(5,'Icon_',7496)
-ProgId.add_field(6,'IconIndex',5378)
-
-ComboBox = Table('ComboBox')
-ComboBox.add_field(1,'Property',11592)
-ComboBox.add_field(2,'Order',9474)
-ComboBox.add_field(3,'Value',3392)
-ComboBox.add_field(4,'Text',8000)
-
-CompLocator = Table('CompLocator')
-CompLocator.add_field(1,'Signature_',11592)
-CompLocator.add_field(2,'ComponentId',3366)
-CompLocator.add_field(3,'Type',5378)
-
-Complus = Table('Complus')
-Complus.add_field(1,'Component_',0x2DFF)
-Complus.add_field(2,'ExpType',13570)
-
-Directory = Table('Directory')
-Directory.add_field(1,'Directory',0x2DFF)
-Directory.add_field(2,'Directory_Parent',0x1DFF)
-Directory.add_field(3,'DefaultDir',4095)
-
-Control = Table('Control')
-Control.add_field(1,'Dialog_',11592)
-Control.add_field(2,'Control',11570)
-Control.add_field(3,'Type',3348)
-Control.add_field(4,'X',1282)
-Control.add_field(5,'Y',1282)
-Control.add_field(6,'Width',1282)
-Control.add_field(7,'Height',1282)
-Control.add_field(8,'Attributes',4356)
-Control.add_field(9,'Property',7474)
-Control.add_field(10,'Text',7936)
-Control.add_field(11,'Control_Next',7474)
-Control.add_field(12,'Help',7986)
-
-Dialog = Table('Dialog')
-Dialog.add_field(1,'Dialog',11592)
-Dialog.add_field(2,'HCentering',1282)
-Dialog.add_field(3,'VCentering',1282)
-Dialog.add_field(4,'Width',1282)
-Dialog.add_field(5,'Height',1282)
-Dialog.add_field(6,'Attributes',4356)
-Dialog.add_field(7,'Title',8064)
-Dialog.add_field(8,'Control_First',3378)
-Dialog.add_field(9,'Control_Default',7474)
-Dialog.add_field(10,'Control_Cancel',7474)
-
-ControlCondition = Table('ControlCondition')
-ControlCondition.add_field(1,'Dialog_',11592)
-ControlCondition.add_field(2,'Control_',11570)
-ControlCondition.add_field(3,'Action',11570)
-ControlCondition.add_field(4,'Condition',11775)
-
-ControlEvent = Table('ControlEvent')
-ControlEvent.add_field(1,'Dialog_',11592)
-ControlEvent.add_field(2,'Control_',11570)
-ControlEvent.add_field(3,'Event',11570)
-ControlEvent.add_field(4,'Argument',11775)
-ControlEvent.add_field(5,'Condition',15871)
-ControlEvent.add_field(6,'Ordering',5378)
-
-CreateFolder = Table('CreateFolder')
-CreateFolder.add_field(1,'Directory_',0x2DFF)
-CreateFolder.add_field(2,'Component_',0x2DFF)
-
-CustomAction = Table('CustomAction')
-CustomAction.add_field(1,'Action',0x2DFF)
-CustomAction.add_field(2,'Type',1282)
-CustomAction.add_field(3,'Source',0x1DFF)
-CustomAction.add_field(4,'Target',7679)
-
-DrLocator = Table('DrLocator')
-DrLocator.add_field(1,'Signature_',11592)
-DrLocator.add_field(2,'Parent',15688)
-DrLocator.add_field(3,'Path',15871)
-DrLocator.add_field(4,'Depth',5378)
-
-DuplicateFile = Table('DuplicateFile')
-DuplicateFile.add_field(1,'FileKey',11592)
-DuplicateFile.add_field(2,'Component_',0xDFF)
-DuplicateFile.add_field(3,'File_',0xDFF)
-DuplicateFile.add_field(4,'DestName',8191)
-DuplicateFile.add_field(5,'DestFolder',7496)
-
-Environment = Table('Environment')
-Environment.add_field(1,'Environment',11592)
-Environment.add_field(2,'Name',4095)
-Environment.add_field(3,'Value',8191)
-Environment.add_field(4,'Component_',0xDFF)
-
-Error = Table('Error')
-Error.add_field(1,'Error',9474)
-Error.add_field(2,'Message',7936)
-
-EventMapping = Table('EventMapping')
-EventMapping.add_field(1,'Dialog_',11592)
-EventMapping.add_field(2,'Control_',11570)
-EventMapping.add_field(3,'Event',11570)
-EventMapping.add_field(4,'Attribute',3378)
-
-Extension = Table('Extension')
-Extension.add_field(1,'Extension',11775)
-Extension.add_field(2,'Component_',0x2DFF)
-Extension.add_field(3,'ProgId_',7679)
-Extension.add_field(4,'MIME_',7488)
-Extension.add_field(5,'Feature_',3366)
-
-MIME = Table('MIME')
-MIME.add_field(1,'ContentType',11584)
-MIME.add_field(2,'Extension_',3583)
-MIME.add_field(3,'CLSID',7462)
-
-FeatureComponents = Table('FeatureComponents')
-FeatureComponents.add_field(1,'Feature_',11558)
-FeatureComponents.add_field(2,'Component_',0x2DFF)
-
-FileSFPCatalog = Table('FileSFPCatalog')
-FileSFPCatalog.add_field(1,'File_',0x2DFF)
-FileSFPCatalog.add_field(2,'SFPCatalog_',11775)
-
-SFPCatalog = Table('SFPCatalog')
-SFPCatalog.add_field(1,'SFPCatalog',11775)
-SFPCatalog.add_field(2,'Catalog',2304)
-SFPCatalog.add_field(3,'Dependency',7424)
-
-Font = Table('Font')
-Font.add_field(1,'File_',0x2DFF)
-Font.add_field(2,'FontTitle',7552)
-
-IniFile = Table('IniFile')
-IniFile.add_field(1,'IniFile',11592)
-IniFile.add_field(2,'FileName',4095)
-IniFile.add_field(3,'DirProperty',7496)
-IniFile.add_field(4,'Section',3936)
-IniFile.add_field(5,'Key',3968)
-IniFile.add_field(6,'Value',4095)
-IniFile.add_field(7,'Action',1282)
-IniFile.add_field(8,'Component_',0xDFF)
-
-IniLocator = Table('IniLocator')
-IniLocator.add_field(1,'Signature_',11592)
-IniLocator.add_field(2,'FileName',3583)
-IniLocator.add_field(3,'Section',3424)
-IniLocator.add_field(4,'Key',3456)
-IniLocator.add_field(5,'Field',5378)
-IniLocator.add_field(6,'Type',5378)
-
-InstallExecuteSequence = Table('InstallExecuteSequence')
-InstallExecuteSequence.add_field(1,'Action',0x2DFF)
-InstallExecuteSequence.add_field(2,'Condition',7679)
-InstallExecuteSequence.add_field(3,'Sequence',5378)
-
-InstallUISequence = Table('InstallUISequence')
-InstallUISequence.add_field(1,'Action',0x2DFF)
-InstallUISequence.add_field(2,'Condition',7679)
-InstallUISequence.add_field(3,'Sequence',5378)
-
-IsolatedComponent = Table('IsolatedComponent')
-IsolatedComponent.add_field(1,'Component_Shared',0x2DFF)
-IsolatedComponent.add_field(2,'Component_Application',0x2DFF)
-
-LaunchCondition = Table('LaunchCondition')
-LaunchCondition.add_field(1,'Condition',11775)
-LaunchCondition.add_field(2,'Description',4095)
-
-ListBox = Table('ListBox')
-ListBox.add_field(1,'Property',11592)
-ListBox.add_field(2,'Order',9474)
-ListBox.add_field(3,'Value',3392)
-ListBox.add_field(4,'Text',8000)
-
-ListView = Table('ListView')
-ListView.add_field(1,'Property',11592)
-ListView.add_field(2,'Order',9474)
-ListView.add_field(3,'Value',3392)
-ListView.add_field(4,'Text',8000)
-ListView.add_field(5,'Binary_',7496)
-
-LockPermissions = Table('LockPermissions')
-LockPermissions.add_field(1,'LockObject',11592)
-LockPermissions.add_field(2,'Table',11552)
-LockPermissions.add_field(3,'Domain',15871)
-LockPermissions.add_field(4,'User',11775)
-LockPermissions.add_field(5,'Permission',4356)
-
-Media = Table('Media')
-Media.add_field(1,'DiskId',9474)
-Media.add_field(2,'LastSequence',1282)
-Media.add_field(3,'DiskPrompt',8000)
-Media.add_field(4,'Cabinet',7679)
-Media.add_field(5,'VolumeLabel',7456)
-Media.add_field(6,'Source',7496)
-
-MoveFile = Table('MoveFile')
-MoveFile.add_field(1,'FileKey',11592)
-MoveFile.add_field(2,'Component_',0xDFF)
-MoveFile.add_field(3,'SourceName',8191)
-MoveFile.add_field(4,'DestName',8191)
-MoveFile.add_field(5,'SourceFolder',7496)
-MoveFile.add_field(6,'DestFolder',3400)
-MoveFile.add_field(7,'Options',1282)
-
-MsiAssembly = Table('MsiAssembly')
-MsiAssembly.add_field(1,'Component_',0x2DFF)
-MsiAssembly.add_field(2,'Feature_',3366)
-MsiAssembly.add_field(3,'File_Manifest',0x1DFF)
-MsiAssembly.add_field(4,'File_Application',0x1DFF)
-MsiAssembly.add_field(5,'Attributes',5378)
-
-MsiAssemblyName = Table('MsiAssemblyName')
-MsiAssemblyName.add_field(1,'Component_',0x2DFF)
-MsiAssemblyName.add_field(2,'Name',11775)
-MsiAssemblyName.add_field(3,'Value',3583)
-
-MsiDigitalCertificate = Table('MsiDigitalCertificate')
-MsiDigitalCertificate.add_field(1,'DigitalCertificate',11592)
-MsiDigitalCertificate.add_field(2,'CertData',2304)
-
-MsiDigitalSignature = Table('MsiDigitalSignature')
-MsiDigitalSignature.add_field(1,'Table',11552)
-MsiDigitalSignature.add_field(2,'SignObject',11592)
-MsiDigitalSignature.add_field(3,'DigitalCertificate_',3400)
-MsiDigitalSignature.add_field(4,'Hash',6400)
-
-MsiFileHash = Table('MsiFileHash')
-MsiFileHash.add_field(1,'File_',0x2DFF)
-MsiFileHash.add_field(2,'Options',1282)
-MsiFileHash.add_field(3,'HashPart1',260)
-MsiFileHash.add_field(4,'HashPart2',260)
-MsiFileHash.add_field(5,'HashPart3',260)
-MsiFileHash.add_field(6,'HashPart4',260)
-
-MsiPatchHeaders = Table('MsiPatchHeaders')
-MsiPatchHeaders.add_field(1,'StreamRef',11558)
-MsiPatchHeaders.add_field(2,'Header',2304)
-
-ODBCAttribute = Table('ODBCAttribute')
-ODBCAttribute.add_field(1,'Driver_',11592)
-ODBCAttribute.add_field(2,'Attribute',11560)
-ODBCAttribute.add_field(3,'Value',8191)
-
-ODBCDriver = Table('ODBCDriver')
-ODBCDriver.add_field(1,'Driver',11592)
-ODBCDriver.add_field(2,'Component_',0xDFF)
-ODBCDriver.add_field(3,'Description',3583)
-ODBCDriver.add_field(4,'File_',0xDFF)
-ODBCDriver.add_field(5,'File_Setup',0x1DFF)
-
-ODBCDataSource = Table('ODBCDataSource')
-ODBCDataSource.add_field(1,'DataSource',0x2DFF)
-ODBCDataSource.add_field(2,'Component_',0xDFF)
-ODBCDataSource.add_field(3,'Description',3583)
-ODBCDataSource.add_field(4,'DriverDescription',3583)
-ODBCDataSource.add_field(5,'Registration',1282)
-
-ODBCSourceAttribute = Table('ODBCSourceAttribute')
-ODBCSourceAttribute.add_field(1,'DataSource_',11592)
-ODBCSourceAttribute.add_field(2,'Attribute',11552)
-ODBCSourceAttribute.add_field(3,'Value',8191)
-
-ODBCTranslator = Table('ODBCTranslator')
-ODBCTranslator.add_field(1,'Translator',11592)
-ODBCTranslator.add_field(2,'Component_',0xDFF)
-ODBCTranslator.add_field(3,'Description',3583)
-ODBCTranslator.add_field(4,'File_',0xDFF)
-ODBCTranslator.add_field(5,'File_Setup',0x1DFF)
-
-Patch = Table('Patch')
-Patch.add_field(1,'File_',11592)
-Patch.add_field(2,'Sequence',9474)
-Patch.add_field(3,'PatchSize',260)
-Patch.add_field(4,'Attributes',1282)
-Patch.add_field(5,'Header',6400)
-Patch.add_field(6,'StreamRef_',7462)
-
-PatchPackage = Table('PatchPackage')
-PatchPackage.add_field(1,'PatchId',11558)
-PatchPackage.add_field(2,'Media_',1282)
-
-PublishComponent = Table('PublishComponent')
-PublishComponent.add_field(1,'ComponentId',11558)
-PublishComponent.add_field(2,'Qualifier',11775)
-PublishComponent.add_field(3,'Component_',0x2DFF)
-PublishComponent.add_field(4,'AppData',8191)
-PublishComponent.add_field(5,'Feature_',3366)
-
-RadioButton = Table('RadioButton')
-RadioButton.add_field(1,'Property',11592)
-RadioButton.add_field(2,'Order',9474)
-RadioButton.add_field(3,'Value',3392)
-RadioButton.add_field(4,'X',1282)
-RadioButton.add_field(5,'Y',1282)
-RadioButton.add_field(6,'Width',1282)
-RadioButton.add_field(7,'Height',1282)
-RadioButton.add_field(8,'Text',8000)
-RadioButton.add_field(9,'Help',7986)
-
-Registry = Table('Registry')
-Registry.add_field(1,'Registry',0x2DFF)
-Registry.add_field(2,'Root',1282)
-Registry.add_field(3,'Key',4095)
-Registry.add_field(4,'Name',8191)
-Registry.add_field(5,'Value',7936)
-Registry.add_field(6,'Component_',0xDFF)
-
-RegLocator = Table('RegLocator')
-RegLocator.add_field(1,'Signature_',11592)
-RegLocator.add_field(2,'Root',1282)
-RegLocator.add_field(3,'Key',3583)
-RegLocator.add_field(4,'Name',7679)
-RegLocator.add_field(5,'Type',5378)
-
-RemoveFile = Table('RemoveFile')
-RemoveFile.add_field(1,'FileKey',11592)
-RemoveFile.add_field(2,'Component_',0xDFF)
-RemoveFile.add_field(3,'FileName',8191)
-RemoveFile.add_field(4,'DirProperty',3400)
-RemoveFile.add_field(5,'InstallMode',1282)
-
-RemoveIniFile = Table('RemoveIniFile')
-RemoveIniFile.add_field(1,'RemoveIniFile',11592)
-RemoveIniFile.add_field(2,'FileName',4095)
-RemoveIniFile.add_field(3,'DirProperty',7496)
-RemoveIniFile.add_field(4,'Section',3936)
-RemoveIniFile.add_field(5,'Key',3968)
-RemoveIniFile.add_field(6,'Value',8191)
-RemoveIniFile.add_field(7,'Action',1282)
-RemoveIniFile.add_field(8,'Component_',0xDFF)
-
-RemoveRegistry = Table('RemoveRegistry')
-RemoveRegistry.add_field(1,'RemoveRegistry',11592)
-RemoveRegistry.add_field(2,'Root',1282)
-RemoveRegistry.add_field(3,'Key',4095)
-RemoveRegistry.add_field(4,'Name',8191)
-RemoveRegistry.add_field(5,'Component_',0xDFF)
-
-ReserveCost = Table('ReserveCost')
-ReserveCost.add_field(1,'ReserveKey',11592)
-ReserveCost.add_field(2,'Component_',0xDFF)
-ReserveCost.add_field(3,'ReserveFolder',7496)
-ReserveCost.add_field(4,'ReserveLocal',260)
-ReserveCost.add_field(5,'ReserveSource',260)
-
-SelfReg = Table('SelfReg')
-SelfReg.add_field(1,'File_',0x2DFF)
-SelfReg.add_field(2,'Cost',5378)
-
-ServiceControl = Table('ServiceControl')
-ServiceControl.add_field(1,'ServiceControl',11592)
-ServiceControl.add_field(2,'Name',4095)
-ServiceControl.add_field(3,'Event',1282)
-ServiceControl.add_field(4,'Arguments',8191)
-ServiceControl.add_field(5,'Wait',5378)
-ServiceControl.add_field(6,'Component_',0xDFF)
-
-ServiceInstall = Table('ServiceInstall')
-ServiceInstall.add_field(1,'ServiceInstall',11592)
-ServiceInstall.add_field(2,'Name',3583)
-ServiceInstall.add_field(3,'DisplayName',8191)
-ServiceInstall.add_field(4,'ServiceType',260)
-ServiceInstall.add_field(5,'StartType',260)
-ServiceInstall.add_field(6,'ErrorControl',260)
-ServiceInstall.add_field(7,'LoadOrderGroup',7679)
-ServiceInstall.add_field(8,'Dependencies',7679)
-ServiceInstall.add_field(9,'StartName',7679)
-ServiceInstall.add_field(10,'Password',7679)
-ServiceInstall.add_field(11,'Arguments',7679)
-ServiceInstall.add_field(12,'Component_',0xDFF)
-ServiceInstall.add_field(13,'Description',8191)
-
-Shortcut = Table('Shortcut')
-Shortcut.add_field(1,'Shortcut',11592)
-Shortcut.add_field(2,'Directory_',0xDFF)
-Shortcut.add_field(3,'Name',3968)
-Shortcut.add_field(4,'Component_',0xDFF)
-Shortcut.add_field(5,'Target',3400)
-Shortcut.add_field(6,'Arguments',7679)
-Shortcut.add_field(7,'Description',8191)
-Shortcut.add_field(8,'Hotkey',5378)
-Shortcut.add_field(9,'Icon_',7496)
-Shortcut.add_field(10,'IconIndex',5378)
-Shortcut.add_field(11,'ShowCmd',5378)
-Shortcut.add_field(12,'WkDir',7496)
-
-Signature = Table('Signature')
-Signature.add_field(1,'Signature',11592)
-Signature.add_field(2,'FileName',3583)
-Signature.add_field(3,'MinVersion',7444)
-Signature.add_field(4,'MaxVersion',7444)
-Signature.add_field(5,'MinSize',4356)
-Signature.add_field(6,'MaxSize',4356)
-Signature.add_field(7,'MinDate',4356)
-Signature.add_field(8,'MaxDate',4356)
-Signature.add_field(9,'Languages',7679)
-
-TextStyle = Table('TextStyle')
-TextStyle.add_field(1,'TextStyle',11592)
-TextStyle.add_field(2,'FaceName',3360)
-TextStyle.add_field(3,'Size',1282)
-TextStyle.add_field(4,'Color',4356)
-TextStyle.add_field(5,'StyleBits',5378)
-
-TypeLib = Table('TypeLib')
-TypeLib.add_field(1,'LibID',11558)
-TypeLib.add_field(2,'Language',9474)
-TypeLib.add_field(3,'Component_',0x2DFF)
-TypeLib.add_field(4,'Version',4356)
-TypeLib.add_field(5,'Description',8064)
-TypeLib.add_field(6,'Directory_',0x1DFF)
-TypeLib.add_field(7,'Feature_',3366)
-TypeLib.add_field(8,'Cost',4356)
-
-UIText = Table('UIText')
-UIText.add_field(1,'Key',11592)
-UIText.add_field(2,'Text',8191)
-
-Upgrade = Table('Upgrade')
-Upgrade.add_field(1,'UpgradeCode',11558)
-Upgrade.add_field(2,'VersionMin',15636)
-Upgrade.add_field(3,'VersionMax',15636)
-Upgrade.add_field(4,'Language',15871)
-Upgrade.add_field(5,'Attributes',8452)
-Upgrade.add_field(6,'Remove',7679)
-Upgrade.add_field(7,'ActionProperty',3400)
-
-Verb = Table('Verb')
-Verb.add_field(1,'Extension_',11775)
-Verb.add_field(2,'Verb',11552)
-Verb.add_field(3,'Sequence',5378)
-Verb.add_field(4,'Command',8191)
-Verb.add_field(5,'Argument',8191)
-
-tables=[_Validation, ActionText, AdminExecuteSequence, Condition, AdminUISequence, AdvtExecuteSequence, AdvtUISequence, AppId, AppSearch, Property, BBControl, Billboard, Feature, Binary, BindImage, File, CCPSearch, CheckBox, Class, Component, Icon, ProgId, ComboBox, CompLocator, Complus, Directory, Control, Dialog, ControlCondition, ControlEvent, CreateFolder, CustomAction, DrLocator, DuplicateFile, Environment, Error, EventMapping, Extension, MIME, FeatureComponents, FileSFPCatalog, SFPCatalog, Font, IniFile, IniLocator, InstallExecuteSequence, InstallUISequence, IsolatedComponent, LaunchCondition, ListBox, ListView, LockPermissions, Media, MoveFile, MsiAssembly, MsiAssemblyName, MsiDigitalCertificate, MsiDigitalSignature, MsiFileHash, MsiPatchHeaders, ODBCAttribute, ODBCDriver, ODBCDataSource, ODBCSourceAttribute, ODBCTranslator, Patch, PatchPackage, PublishComponent, RadioButton, Registry, RegLocator, RemoveFile, RemoveIniFile, RemoveRegistry, ReserveCost, SelfReg, ServiceControl, ServiceInstall, Shortcut, Signature, TextStyle, TypeLib, UIText, Upgrade, Verb]
-
-_Validation_records = [
-(u'_Validation',u'Table',u'N',None, None, None, None, u'Identifier',None, u'Name of table',),
-(u'_Validation',u'Column',u'N',None, None, None, None, u'Identifier',None, u'Name of column',),
-(u'_Validation',u'Description',u'Y',None, None, None, None, u'Text',None, u'Description of column',),
-(u'_Validation',u'Set',u'Y',None, None, None, None, u'Text',None, u'Set of values that are permitted',),
-(u'_Validation',u'Category',u'Y',None, None, None, None, None, u'Text;Formatted;Template;Condition;Guid;Path;Version;Language;Identifier;Binary;UpperCase;LowerCase;Filename;Paths;AnyPath;WildCardFilename;RegPath;KeyFormatted;CustomSource;Property;Cabinet;Shortcut;URL',u'String category',),
-(u'_Validation',u'KeyColumn',u'Y',1,32,None, None, None, None, u'Column to which foreign key connects',),
-(u'_Validation',u'KeyTable',u'Y',None, None, None, None, u'Identifier',None, u'For foreign key, Name of table to which data must link',),
-(u'_Validation',u'MaxValue',u'Y',-2147483647,2147483647,None, None, None, None, u'Maximum value allowed',),
-(u'_Validation',u'MinValue',u'Y',-2147483647,2147483647,None, None, None, None, u'Minimum value allowed',),
-(u'_Validation',u'Nullable',u'N',None, None, None, None, None, u'Y;N;@',u'Whether the column is nullable',),
-(u'ActionText',u'Description',u'Y',None, None, None, None, u'Text',None, u'Localized description displayed in progress dialog and log when action is executing.',),
-(u'ActionText',u'Action',u'N',None, None, None, None, u'Identifier',None, u'Name of action to be described.',),
-(u'ActionText',u'Template',u'Y',None, None, None, None, u'Template',None, u'Optional localized format template used to format action data records for display during action execution.',),
-(u'AdminExecuteSequence',u'Action',u'N',None, None, None, None, u'Identifier',None, u'Name of action to invoke, either in the engine or the handler DLL.',),
-(u'AdminExecuteSequence',u'Condition',u'Y',None, None, None, None, u'Condition',None, u'Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.',),
-(u'AdminExecuteSequence',u'Sequence',u'Y',-4,32767,None, None, None, None, u'Number that determines the sort order in which the actions are to be executed.  Leave blank to suppress action.',),
-(u'Condition',u'Condition',u'Y',None, None, None, None, u'Condition',None, u'Expression evaluated to determine if Level in the Feature table is to change.',),
-(u'Condition',u'Feature_',u'N',None, None, u'Feature',1,u'Identifier',None, u'Reference to a Feature entry in Feature table.',),
-(u'Condition',u'Level',u'N',0,32767,None, None, None, None, u'New selection Level to set in Feature table if Condition evaluates to TRUE.',),
-(u'AdminUISequence',u'Action',u'N',None, None, None, None, u'Identifier',None, u'Name of action to invoke, either in the engine or the handler DLL.',),
-(u'AdminUISequence',u'Condition',u'Y',None, None, None, None, u'Condition',None, u'Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.',),
-(u'AdminUISequence',u'Sequence',u'Y',-4,32767,None, None, None, None, u'Number that determines the sort order in which the actions are to be executed.  Leave blank to suppress action.',),
-(u'AdvtExecuteSequence',u'Action',u'N',None, None, None, None, u'Identifier',None, u'Name of action to invoke, either in the engine or the handler DLL.',),
-(u'AdvtExecuteSequence',u'Condition',u'Y',None, None, None, None, u'Condition',None, u'Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.',),
-(u'AdvtExecuteSequence',u'Sequence',u'Y',-4,32767,None, None, None, None, u'Number that determines the sort order in which the actions are to be executed.  Leave blank to suppress action.',),
-(u'AdvtUISequence',u'Action',u'N',None, None, None, None, u'Identifier',None, u'Name of action to invoke, either in the engine or the handler DLL.',),
-(u'AdvtUISequence',u'Condition',u'Y',None, None, None, None, u'Condition',None, u'Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.',),
-(u'AdvtUISequence',u'Sequence',u'Y',-4,32767,None, None, None, None, u'Number that determines the sort order in which the actions are to be executed.  Leave blank to suppress action.',),
-(u'AppId',u'AppId',u'N',None, None, None, None, u'Guid',None, None, ),
-(u'AppId',u'ActivateAtStorage',u'Y',0,1,None, None, None, None, None, ),
-(u'AppId',u'DllSurrogate',u'Y',None, None, None, None, u'Text',None, None, ),
-(u'AppId',u'LocalService',u'Y',None, None, None, None, u'Text',None, None, ),
-(u'AppId',u'RemoteServerName',u'Y',None, None, None, None, u'Formatted',None, None, ),
-(u'AppId',u'RunAsInteractiveUser',u'Y',0,1,None, None, None, None, None, ),
-(u'AppId',u'ServiceParameters',u'Y',None, None, None, None, u'Text',None, None, ),
-(u'AppSearch',u'Property',u'N',None, None, None, None, u'Identifier',None, u'The property associated with a Signature',),
-(u'AppSearch',u'Signature_',u'N',None, None, u'Signature;RegLocator;IniLocator;DrLocator;CompLocator',1,u'Identifier',None, u'The Signature_ represents a unique file signature and is also the foreign key in the Signature,  RegLocator, IniLocator, CompLocator and the DrLocator tables.',),
-(u'Property',u'Property',u'N',None, None, None, None, u'Identifier',None, u'Name of property, uppercase if settable by launcher or loader.',),
-(u'Property',u'Value',u'N',None, None, None, None, u'Text',None, u'String value for property.  Never null or empty.',),
-(u'BBControl',u'Type',u'N',None, None, None, None, u'Identifier',None, u'The type of the control.',),
-(u'BBControl',u'Y',u'N',0,32767,None, None, None, None, u'Vertical coordinate of the upper left corner of the bounding rectangle of the control.',),
-(u'BBControl',u'Text',u'Y',None, None, None, None, u'Text',None, u'A string used to set the initial text contained within a control (if appropriate).',),
-(u'BBControl',u'BBControl',u'N',None, None, None, None, u'Identifier',None, u'Name of the control. This name must be unique within a billboard, but can repeat on different billboard.',),
-(u'BBControl',u'Attributes',u'Y',0,2147483647,None, None, None, None, u'A 32-bit word that specifies the attribute flags to be applied to this control.',),
-(u'BBControl',u'Billboard_',u'N',None, None, u'Billboard',1,u'Identifier',None, u'External key to the Billboard table, name of the billboard.',),
-(u'BBControl',u'Height',u'N',0,32767,None, None, None, None, u'Height of the bounding rectangle of the control.',),
-(u'BBControl',u'Width',u'N',0,32767,None, None, None, None, u'Width of the bounding rectangle of the control.',),
-(u'BBControl',u'X',u'N',0,32767,None, None, None, None, u'Horizontal coordinate of the upper left corner of the bounding rectangle of the control.',),
-(u'Billboard',u'Action',u'Y',None, None, None, None, u'Identifier',None, u'The name of an action. The billboard is displayed during the progress messages received from this action.',),
-(u'Billboard',u'Billboard',u'N',None, None, None, None, u'Identifier',None, u'Name of the billboard.',),
-(u'Billboard',u'Feature_',u'N',None, None, u'Feature',1,u'Identifier',None, u'An external key to the Feature Table. The billboard is shown only if this feature is being installed.',),
-(u'Billboard',u'Ordering',u'Y',0,32767,None, None, None, None, u'A positive integer. If there is more than one billboard corresponding to an action they will be shown in the order defined by this column.',),
-(u'Feature',u'Description',u'Y',None, None, None, None, u'Text',None, u'Longer descriptive text describing a visible feature item.',),
-(u'Feature',u'Attributes',u'N',None, None, None, None, None, u'0;1;2;4;5;6;8;9;10;16;17;18;20;21;22;24;25;26;32;33;34;36;37;38;48;49;50;52;53;54',u'Feature attributes',),
-(u'Feature',u'Feature',u'N',None, None, None, None, u'Identifier',None, u'Primary key used to identify a particular feature record.',),
-(u'Feature',u'Directory_',u'Y',None, None, u'Directory',1,u'UpperCase',None, u'The name of the Directory that can be configured by the UI. A non-null value will enable the browse button.',),
-(u'Feature',u'Level',u'N',0,32767,None, None, None, None, u'The install level at which record will be initially selected. An install level of 0 will disable an item and prevent its display.',),
-(u'Feature',u'Title',u'Y',None, None, None, None, u'Text',None, u'Short text identifying a visible feature item.',),
-(u'Feature',u'Display',u'Y',0,32767,None, None, None, None, u'Numeric sort order, used to force a specific display ordering.',),
-(u'Feature',u'Feature_Parent',u'Y',None, None, u'Feature',1,u'Identifier',None, u'Optional key of a parent record in the same table. If the parent is not selected, then the record will not be installed. Null indicates a root item.',),
-(u'Binary',u'Name',u'N',None, None, None, None, u'Identifier',None, u'Unique key identifying the binary data.',),
-(u'Binary',u'Data',u'N',None, None, None, None, u'Binary',None, u'The unformatted binary data.',),
-(u'BindImage',u'File_',u'N',None, None, u'File',1,u'Identifier',None, u'The index into the File table. This must be an executable file.',),
-(u'BindImage',u'Path',u'Y',None, None, None, None, u'Paths',None, u'A list of ;  delimited paths that represent the paths to be searched for the import DLLS. The list is usually a list of properties each enclosed within square brackets [] .',),
-(u'File',u'Sequence',u'N',1,32767,None, None, None, None, u'Sequence with respect to the media images; order must track cabinet order.',),
-(u'File',u'Attributes',u'Y',0,32767,None, None, None, None, u'Integer containing bit flags representing file attributes (with the decimal value of each bit position in parentheses)',),
-(u'File',u'File',u'N',None, None, None, None, u'Identifier',None, u'Primary key, non-localized token, must match identifier in cabinet.  For uncompressed files, this field is ignored.',),
-(u'File',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key referencing Component that controls the file.',),
-(u'File',u'FileName',u'N',None, None, None, None, u'Filename',None, u'File name used for installation, may be localized.  This may contain a "short name|long name" pair.',),
-(u'File',u'FileSize',u'N',0,2147483647,None, None, None, None, u'Size of file in bytes (long integer).',),
-(u'File',u'Language',u'Y',None, None, None, None, u'Language',None, u'List of decimal language Ids, comma-separated if more than one.',),
-(u'File',u'Version',u'Y',None, None, u'File',1,u'Version',None, u'Version string for versioned files;  Blank for unversioned files.',),
-(u'CCPSearch',u'Signature_',u'N',None, None, u'Signature;RegLocator;IniLocator;DrLocator;CompLocator',1,u'Identifier',None, u'The Signature_ represents a unique file signature and is also the foreign key in the Signature,  RegLocator, IniLocator, CompLocator and the DrLocator tables.',),
-(u'CheckBox',u'Property',u'N',None, None, None, None, u'Identifier',None, u'A named property to be tied to the item.',),
-(u'CheckBox',u'Value',u'Y',None, None, None, None, u'Formatted',None, u'The value string associated with the item.',),
-(u'Class',u'Description',u'Y',None, None, None, None, u'Text',None, u'Localized description for the Class.',),
-(u'Class',u'Attributes',u'Y',None, 32767,None, None, None, None, u'Class registration attributes.',),
-(u'Class',u'Feature_',u'N',None, None, u'Feature',1,u'Identifier',None, u'Required foreign key into the Feature Table, specifying the feature to validate or install in order for the CLSID factory to be operational.',),
-(u'Class',u'AppId_',u'Y',None, None, u'AppId',1,u'Guid',None, u'Optional AppID containing DCOM information for associated application (string GUID).',),
-(u'Class',u'Argument',u'Y',None, None, None, None, u'Formatted',None, u'optional argument for LocalServers.',),
-(u'Class',u'CLSID',u'N',None, None, None, None, u'Guid',None, u'The CLSID of an OLE factory.',),
-(u'Class',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Required foreign key into the Component Table, specifying the component for which to return a path when called through LocateComponent.',),
-(u'Class',u'Context',u'N',None, None, None, None, u'Identifier',None, u'The numeric server context for this server. CLSCTX_xxxx',),
-(u'Class',u'DefInprocHandler',u'Y',None, None, None, None, u'Filename',u'1;2;3',u'Optional default inproc handler.  Only optionally provided if Context=CLSCTX_LOCAL_SERVER.  Typically "ole32.dll" or "mapi32.dll"',),
-(u'Class',u'FileTypeMask',u'Y',None, None, None, None, u'Text',None, u'Optional string containing information for the HKCRthis CLSID) key. If multiple patterns exist, they must be delimited by a semicolon, and numeric subkeys will be generated: 0,1,2...',),
-(u'Class',u'Icon_',u'Y',None, None, u'Icon',1,u'Identifier',None, u'Optional foreign key into the Icon Table, specifying the icon file associated with this CLSID. Will be written under the DefaultIcon key.',),
-(u'Class',u'IconIndex',u'Y',-32767,32767,None, None, None, None, u'Optional icon index.',),
-(u'Class',u'ProgId_Default',u'Y',None, None, u'ProgId',1,u'Text',None, u'Optional ProgId associated with this CLSID.',),
-(u'Component',u'Condition',u'Y',None, None, None, None, u'Condition',None, u"A conditional statement that will disable this component if the specified condition evaluates to the 'True' state. If a component is disabled, it will not be installed, regardless of the 'Action' state associated with the component.",),
-(u'Component',u'Attributes',u'N',None, None, None, None, None, None, u'Remote execution option, one of irsEnum',),
-(u'Component',u'Component',u'N',None, None, None, None, u'Identifier',None, u'Primary key used to identify a particular component record.',),
-(u'Component',u'ComponentId',u'Y',None, None, None, None, u'Guid',None, u'A string GUID unique to this component, version, and language.',),
-(u'Component',u'Directory_',u'N',None, None, u'Directory',1,u'Identifier',None, u'Required key of a Directory table record. This is actually a property name whose value contains the actual path, set either by the AppSearch action or with the default setting obtained from the Directory table.',),
-(u'Component',u'KeyPath',u'Y',None, None, u'File;Registry;ODBCDataSource',1,u'Identifier',None, u'Either the primary key into the File table, Registry table, or ODBCDataSource table. This extract path is stored when the component is installed, and is used to detect the presence of the component and to return the path to it.',),
-(u'Icon',u'Name',u'N',None, None, None, None, u'Identifier',None, u'Primary key. Name of the icon file.',),
-(u'Icon',u'Data',u'N',None, None, None, None, u'Binary',None, u'Binary stream. The binary icon data in PE (.DLL or .EXE) or icon (.ICO) format.',),
-(u'ProgId',u'Description',u'Y',None, None, None, None, u'Text',None, u'Localized description for the Program identifier.',),
-(u'ProgId',u'Icon_',u'Y',None, None, u'Icon',1,u'Identifier',None, u'Optional foreign key into the Icon Table, specifying the icon file associated with this ProgId. Will be written under the DefaultIcon key.',),
-(u'ProgId',u'IconIndex',u'Y',-32767,32767,None, None, None, None, u'Optional icon index.',),
-(u'ProgId',u'ProgId',u'N',None, None, None, None, u'Text',None, u'The Program Identifier. Primary key.',),
-(u'ProgId',u'Class_',u'Y',None, None, u'Class',1,u'Guid',None, u'The CLSID of an OLE factory corresponding to the ProgId.',),
-(u'ProgId',u'ProgId_Parent',u'Y',None, None, u'ProgId',1,u'Text',None, u'The Parent Program Identifier. If specified, the ProgId column becomes a version independent prog id.',),
-(u'ComboBox',u'Text',u'Y',None, None, None, None, u'Formatted',None, u'The visible text to be assigned to the item. Optional. If this entry or the entire column is missing, the text is the same as the value.',),
-(u'ComboBox',u'Property',u'N',None, None, None, None, u'Identifier',None, u'A named property to be tied to this item. All the items tied to the same property become part of the same combobox.',),
-(u'ComboBox',u'Value',u'N',None, None, None, None, u'Formatted',None, u'The value string associated with this item. Selecting the line will set the associated property to this value.',),
-(u'ComboBox',u'Order',u'N',1,32767,None, None, None, None, u'A positive integer used to determine the ordering of the items within one list.\tThe integers do not have to be consecutive.',),
-(u'CompLocator',u'Type',u'Y',0,1,None, None, None, None, u'A boolean value that determines if the registry value is a filename or a directory location.',),
-(u'CompLocator',u'Signature_',u'N',None, None, None, None, u'Identifier',None, u'The table key. The Signature_ represents a unique file signature and is also the foreign key in the Signature table.',),
-(u'CompLocator',u'ComponentId',u'N',None, None, None, None, u'Guid',None, u'A string GUID unique to this component, version, and language.',),
-(u'Complus',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key referencing Component that controls the ComPlus component.',),
-(u'Complus',u'ExpType',u'Y',0,32767,None, None, None, None, u'ComPlus component attributes.',),
-(u'Directory',u'Directory',u'N',None, None, None, None, u'Identifier',None, u'Unique identifier for directory entry, primary key. If a property by this name is defined, it contains the full path to the directory.',),
-(u'Directory',u'DefaultDir',u'N',None, None, None, None, u'DefaultDir',None, u"The default sub-path under parent's path.",),
-(u'Directory',u'Directory_Parent',u'Y',None, None, u'Directory',1,u'Identifier',None, u'Reference to the entry in this table specifying the default parent directory. A record parented to itself or with a Null parent represents a root of the install tree.',),
-(u'Control',u'Type',u'N',None, None, None, None, u'Identifier',None, u'The type of the control.',),
-(u'Control',u'Y',u'N',0,32767,None, None, None, None, u'Vertical coordinate of the upper left corner of the bounding rectangle of the control.',),
-(u'Control',u'Text',u'Y',None, None, None, None, u'Formatted',None, u'A string used to set the initial text contained within a control (if appropriate).',),
-(u'Control',u'Property',u'Y',None, None, None, None, u'Identifier',None, u'The name of a defined property to be linked to this control. ',),
-(u'Control',u'Attributes',u'Y',0,2147483647,None, None, None, None, u'A 32-bit word that specifies the attribute flags to be applied to this control.',),
-(u'Control',u'Height',u'N',0,32767,None, None, None, None, u'Height of the bounding rectangle of the control.',),
-(u'Control',u'Width',u'N',0,32767,None, None, None, None, u'Width of the bounding rectangle of the control.',),
-(u'Control',u'X',u'N',0,32767,None, None, None, None, u'Horizontal coordinate of the upper left corner of the bounding rectangle of the control.',),
-(u'Control',u'Control',u'N',None, None, None, None, u'Identifier',None, u'Name of the control. This name must be unique within a dialog, but can repeat on different dialogs. ',),
-(u'Control',u'Control_Next',u'Y',None, None, u'Control',2,u'Identifier',None, u'The name of an other control on the same dialog. This link defines the tab order of the controls. The links have to form one or more cycles!',),
-(u'Control',u'Dialog_',u'N',None, None, u'Dialog',1,u'Identifier',None, u'External key to the Dialog table, name of the dialog.',),
-(u'Control',u'Help',u'Y',None, None, None, None, u'Text',None, u'The help strings used with the button. The text is optional. ',),
-(u'Dialog',u'Attributes',u'Y',0,2147483647,None, None, None, None, u'A 32-bit word that specifies the attribute flags to be applied to this dialog.',),
-(u'Dialog',u'Height',u'N',0,32767,None, None, None, None, u'Height of the bounding rectangle of the dialog.',),
-(u'Dialog',u'Width',u'N',0,32767,None, None, None, None, u'Width of the bounding rectangle of the dialog.',),
-(u'Dialog',u'Dialog',u'N',None, None, None, None, u'Identifier',None, u'Name of the dialog.',),
-(u'Dialog',u'Control_Cancel',u'Y',None, None, u'Control',2,u'Identifier',None, u'Defines the cancel control. Hitting escape or clicking on the close icon on the dialog is equivalent to pushing this button.',),
-(u'Dialog',u'Control_Default',u'Y',None, None, u'Control',2,u'Identifier',None, u'Defines the default control. Hitting return is equivalent to pushing this button.',),
-(u'Dialog',u'Control_First',u'N',None, None, u'Control',2,u'Identifier',None, u'Defines the control that has the focus when the dialog is created.',),
-(u'Dialog',u'HCentering',u'N',0,100,None, None, None, None, u'Horizontal position of the dialog on a 0-100 scale. 0 means left end, 100 means right end of the screen, 50 center.',),
-(u'Dialog',u'Title',u'Y',None, None, None, None, u'Formatted',None, u"A text string specifying the title to be displayed in the title bar of the dialog's window.",),
-(u'Dialog',u'VCentering',u'N',0,100,None, None, None, None, u'Vertical position of the dialog on a 0-100 scale. 0 means top end, 100 means bottom end of the screen, 50 center.',),
-(u'ControlCondition',u'Action',u'N',None, None, None, None, None, u'Default;Disable;Enable;Hide;Show',u'The desired action to be taken on the specified control.',),
-(u'ControlCondition',u'Condition',u'N',None, None, None, None, u'Condition',None, u'A standard conditional statement that specifies under which conditions the action should be triggered.',),
-(u'ControlCondition',u'Dialog_',u'N',None, None, u'Dialog',1,u'Identifier',None, u'A foreign key to the Dialog table, name of the dialog.',),
-(u'ControlCondition',u'Control_',u'N',None, None, u'Control',2,u'Identifier',None, u'A foreign key to the Control table, name of the control.',),
-(u'ControlEvent',u'Condition',u'Y',None, None, None, None, u'Condition',None, u'A standard conditional statement that specifies under which conditions an event should be triggered.',),
-(u'ControlEvent',u'Ordering',u'Y',0,2147483647,None, None, None, None, u'An integer used to order several events tied to the same control. Can be left blank.',),
-(u'ControlEvent',u'Argument',u'N',None, None, None, None, u'Formatted',None, u'A value to be used as a modifier when triggering a particular event.',),
-(u'ControlEvent',u'Dialog_',u'N',None, None, u'Dialog',1,u'Identifier',None, u'A foreign key to the Dialog table, name of the dialog.',),
-(u'ControlEvent',u'Control_',u'N',None, None, u'Control',2,u'Identifier',None, u'A foreign key to the Control table, name of the control',),
-(u'ControlEvent',u'Event',u'N',None, None, None, None, u'Formatted',None, u'An identifier that specifies the type of the event that should take place when the user interacts with control specified by the first two entries.',),
-(u'CreateFolder',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key into the Component table.',),
-(u'CreateFolder',u'Directory_',u'N',None, None, u'Directory',1,u'Identifier',None, u'Primary key, could be foreign key into the Directory table.',),
-(u'CustomAction',u'Type',u'N',1,16383,None, None, None, None, u'The numeric custom action type, consisting of source location, code type, entry, option flags.',),
-(u'CustomAction',u'Action',u'N',None, None, None, None, u'Identifier',None, u'Primary key, name of action, normally appears in sequence table unless private use.',),
-(u'CustomAction',u'Source',u'Y',None, None, None, None, u'CustomSource',None, u'The table reference of the source of the code.',),
-(u'CustomAction',u'Target',u'Y',None, None, None, None, u'Formatted',None, u'Excecution parameter, depends on the type of custom action',),
-(u'DrLocator',u'Signature_',u'N',None, None, None, None, u'Identifier',None, u'The Signature_ represents a unique file signature and is also the foreign key in the Signature table.',),
-(u'DrLocator',u'Path',u'Y',None, None, None, None, u'AnyPath',None, u'The path on the user system. This is a either a subpath below the value of the Parent or a full path. The path may contain properties enclosed within [ ] that will be expanded.',),
-(u'DrLocator',u'Depth',u'Y',0,32767,None, None, None, None, u'The depth below the path to which the Signature_ is recursively searched. If absent, the depth is assumed to be 0.',),
-(u'DrLocator',u'Parent',u'Y',None, None, None, None, u'Identifier',None, u'The parent file signature. It is also a foreign key in the Signature table. If null and the Path column does not expand to a full path, then all the fixed drives of the user system are searched using the Path.',),
-(u'DuplicateFile',u'File_',u'N',None, None, u'File',1,u'Identifier',None, u'Foreign key referencing the source file to be duplicated.',),
-(u'DuplicateFile',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key referencing Component that controls the duplicate file.',),
-(u'DuplicateFile',u'DestFolder',u'Y',None, None, None, None, u'Identifier',None, u'Name of a property whose value is assumed to resolve to the full pathname to a destination folder.',),
-(u'DuplicateFile',u'DestName',u'Y',None, None, None, None, u'Filename',None, u'Filename to be given to the duplicate file.',),
-(u'DuplicateFile',u'FileKey',u'N',None, None, None, None, u'Identifier',None, u'Primary key used to identify a particular file entry',),
-(u'Environment',u'Name',u'N',None, None, None, None, u'Text',None, u'The name of the environmental value.',),
-(u'Environment',u'Value',u'Y',None, None, None, None, u'Formatted',None, u'The value to set in the environmental settings.',),
-(u'Environment',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key into the Component table referencing component that controls the installing of the environmental value.',),
-(u'Environment',u'Environment',u'N',None, None, None, None, u'Identifier',None, u'Unique identifier for the environmental variable setting',),
-(u'Error',u'Error',u'N',0,32767,None, None, None, None, u'Integer error number, obtained from header file IError(...) macros.',),
-(u'Error',u'Message',u'Y',None, None, None, None, u'Template',None, u'Error formatting template, obtained from user ed. or localizers.',),
-(u'EventMapping',u'Dialog_',u'N',None, None, u'Dialog',1,u'Identifier',None, u'A foreign key to the Dialog table, name of the Dialog.',),
-(u'EventMapping',u'Control_',u'N',None, None, u'Control',2,u'Identifier',None, u'A foreign key to the Control table, name of the control.',),
-(u'EventMapping',u'Event',u'N',None, None, None, None, u'Identifier',None, u'An identifier that specifies the type of the event that the control subscribes to.',),
-(u'EventMapping',u'Attribute',u'N',None, None, None, None, u'Identifier',None, u'The name of the control attribute, that is set when this event is received.',),
-(u'Extension',u'Feature_',u'N',None, None, u'Feature',1,u'Identifier',None, u'Required foreign key into the Feature Table, specifying the feature to validate or install in order for the CLSID factory to be operational.',),
-(u'Extension',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Required foreign key into the Component Table, specifying the component for which to return a path when called through LocateComponent.',),
-(u'Extension',u'Extension',u'N',None, None, None, None, u'Text',None, u'The extension associated with the table row.',),
-(u'Extension',u'MIME_',u'Y',None, None, u'MIME',1,u'Text',None, u'Optional Context identifier, typically "type/format" associated with the extension',),
-(u'Extension',u'ProgId_',u'Y',None, None, u'ProgId',1,u'Text',None, u'Optional ProgId associated with this extension.',),
-(u'MIME',u'CLSID',u'Y',None, None, None, None, u'Guid',None, u'Optional associated CLSID.',),
-(u'MIME',u'ContentType',u'N',None, None, None, None, u'Text',None, u'Primary key. Context identifier, typically "type/format".',),
-(u'MIME',u'Extension_',u'N',None, None, u'Extension',1,u'Text',None, u'Optional associated extension (without dot)',),
-(u'FeatureComponents',u'Feature_',u'N',None, None, u'Feature',1,u'Identifier',None, u'Foreign key into Feature table.',),
-(u'FeatureComponents',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key into Component table.',),
-(u'FileSFPCatalog',u'File_',u'N',None, None, u'File',1,u'Identifier',None, u'File associated with the catalog',),
-(u'FileSFPCatalog',u'SFPCatalog_',u'N',None, None, u'SFPCatalog',1,u'Filename',None, u'Catalog associated with the file',),
-(u'SFPCatalog',u'SFPCatalog',u'N',None, None, None, None, u'Filename',None, u'File name for the catalog.',),
-(u'SFPCatalog',u'Catalog',u'N',None, None, None, None, u'Binary',None, u'SFP Catalog',),
-(u'SFPCatalog',u'Dependency',u'Y',None, None, None, None, u'Formatted',None, u'Parent catalog - only used by SFP',),
-(u'Font',u'File_',u'N',None, None, u'File',1,u'Identifier',None, u'Primary key, foreign key into File table referencing font file.',),
-(u'Font',u'FontTitle',u'Y',None, None, None, None, u'Text',None, u'Font name.',),
-(u'IniFile',u'Action',u'N',None, None, None, None, None, u'0;1;3',u'The type of modification to be made, one of iifEnum',),
-(u'IniFile',u'Value',u'N',None, None, None, None, u'Formatted',None, u'The value to be written.',),
-(u'IniFile',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key into the Component table referencing component that controls the installing of the .INI value.',),
-(u'IniFile',u'FileName',u'N',None, None, None, None, u'Filename',None, u'The .INI file name in which to write the information',),
-(u'IniFile',u'IniFile',u'N',None, None, None, None, u'Identifier',None, u'Primary key, non-localized token.',),
-(u'IniFile',u'DirProperty',u'Y',None, None, None, None, u'Identifier',None, u'Foreign key into the Directory table denoting the directory where the .INI file is.',),
-(u'IniFile',u'Key',u'N',None, None, None, None, u'Formatted',None, u'The .INI file key below Section.',),
-(u'IniFile',u'Section',u'N',None, None, None, None, u'Formatted',None, u'The .INI file Section.',),
-(u'IniLocator',u'Type',u'Y',0,2,None, None, None, None, u'An integer value that determines if the .INI value read is a filename or a directory location or to be used as is w/o interpretation.',),
-(u'IniLocator',u'Signature_',u'N',None, None, None, None, u'Identifier',None, u'The table key. The Signature_ represents a unique file signature and is also the foreign key in the Signature table.',),
-(u'IniLocator',u'FileName',u'N',None, None, None, None, u'Filename',None, u'The .INI file name.',),
-(u'IniLocator',u'Key',u'N',None, None, None, None, u'Text',None, u'Key value (followed by an equals sign in INI file).',),
-(u'IniLocator',u'Section',u'N',None, None, None, None, u'Text',None, u'Section name within in file (within square brackets in INI file).',),
-(u'IniLocator',u'Field',u'Y',0,32767,None, None, None, None, u'The field in the .INI line. If Field is null or 0 the entire line is read.',),
-(u'InstallExecuteSequence',u'Action',u'N',None, None, None, None, u'Identifier',None, u'Name of action to invoke, either in the engine or the handler DLL.',),
-(u'InstallExecuteSequence',u'Condition',u'Y',None, None, None, None, u'Condition',None, u'Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.',),
-(u'InstallExecuteSequence',u'Sequence',u'Y',-4,32767,None, None, None, None, u'Number that determines the sort order in which the actions are to be executed.  Leave blank to suppress action.',),
-(u'InstallUISequence',u'Action',u'N',None, None, None, None, u'Identifier',None, u'Name of action to invoke, either in the engine or the handler DLL.',),
-(u'InstallUISequence',u'Condition',u'Y',None, None, None, None, u'Condition',None, u'Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.',),
-(u'InstallUISequence',u'Sequence',u'Y',-4,32767,None, None, None, None, u'Number that determines the sort order in which the actions are to be executed.  Leave blank to suppress action.',),
-(u'IsolatedComponent',u'Component_Application',u'N',None, None, u'Component',1,u'Identifier',None, u'Key to Component table item for application',),
-(u'IsolatedComponent',u'Component_Shared',u'N',None, None, u'Component',1,u'Identifier',None, u'Key to Component table item to be isolated',),
-(u'LaunchCondition',u'Description',u'N',None, None, None, None, u'Formatted',None, u'Localizable text to display when condition fails and install must abort.',),
-(u'LaunchCondition',u'Condition',u'N',None, None, None, None, u'Condition',None, u'Expression which must evaluate to TRUE in order for install to commence.',),
-(u'ListBox',u'Text',u'Y',None, None, None, None, u'Text',None, u'The visible text to be assigned to the item. Optional. If this entry or the entire column is missing, the text is the same as the value.',),
-(u'ListBox',u'Property',u'N',None, None, None, None, u'Identifier',None, u'A named property to be tied to this item. All the items tied to the same property become part of the same listbox.',),
-(u'ListBox',u'Value',u'N',None, None, None, None, u'Formatted',None, u'The value string associated with this item. Selecting the line will set the associated property to this value.',),
-(u'ListBox',u'Order',u'N',1,32767,None, None, None, None, u'A positive integer used to determine the ordering of the items within one list..The integers do not have to be consecutive.',),
-(u'ListView',u'Text',u'Y',None, None, None, None, u'Text',None, u'The visible text to be assigned to the item. Optional. If this entry or the entire column is missing, the text is the same as the value.',),
-(u'ListView',u'Property',u'N',None, None, None, None, u'Identifier',None, u'A named property to be tied to this item. All the items tied to the same property become part of the same listview.',),
-(u'ListView',u'Value',u'N',None, None, None, None, u'Identifier',None, u'The value string associated with this item. Selecting the line will set the associated property to this value.',),
-(u'ListView',u'Order',u'N',1,32767,None, None, None, None, u'A positive integer used to determine the ordering of the items within one list..The integers do not have to be consecutive.',),
-(u'ListView',u'Binary_',u'Y',None, None, u'Binary',1,u'Identifier',None, u'The name of the icon to be displayed with the icon. The binary information is looked up from the Binary Table.',),
-(u'LockPermissions',u'Table',u'N',None, None, None, None, u'Identifier',u'Directory;File;Registry',u'Reference to another table name',),
-(u'LockPermissions',u'Domain',u'Y',None, None, None, None, u'Formatted',None, u'Domain name for user whose permissions are being set. (usually a property)',),
-(u'LockPermissions',u'LockObject',u'N',None, None, None, None, u'Identifier',None, u'Foreign key into Registry or File table',),
-(u'LockPermissions',u'Permission',u'Y',-2147483647,2147483647,None, None, None, None, u'Permission Access mask.  Full Control = 268435456 (GENERIC_ALL = 0x10000000)',),
-(u'LockPermissions',u'User',u'N',None, None, None, None, u'Formatted',None, u'User for permissions to be set.  (usually a property)',),
-(u'Media',u'Source',u'Y',None, None, None, None, u'Property',None, u'The property defining the location of the cabinet file.',),
-(u'Media',u'Cabinet',u'Y',None, None, None, None, u'Cabinet',None, u'If some or all of the files stored on the media are compressed in a cabinet, the name of that cabinet.',),
-(u'Media',u'DiskId',u'N',1,32767,None, None, None, None, u'Primary key, integer to determine sort order for table.',),
-(u'Media',u'DiskPrompt',u'Y',None, None, None, None, u'Text',None, u'Disk name: the visible text actually printed on the disk.  This will be used to prompt the user when this disk needs to be inserted.',),
-(u'Media',u'LastSequence',u'N',0,32767,None, None, None, None, u'File sequence number for the last file for this media.',),
-(u'Media',u'VolumeLabel',u'Y',None, None, None, None, u'Text',None, u'The label attributed to the volume.',),
-(u'ModuleComponents',u'Component',u'N',None, None, u'Component',1,u'Identifier',None, u'Component contained in the module.',),
-(u'ModuleComponents',u'Language',u'N',None, None, u'ModuleSignature',2,None, None, u'Default language ID for module (may be changed by transform).',),
-(u'ModuleComponents',u'ModuleID',u'N',None, None, u'ModuleSignature',1,u'Identifier',None, u'Module containing the component.',),
-(u'ModuleSignature',u'Language',u'N',None, None, None, None, None, None, u'Default decimal language of module.',),
-(u'ModuleSignature',u'Version',u'N',None, None, None, None, u'Version',None, u'Version of the module.',),
-(u'ModuleSignature',u'ModuleID',u'N',None, None, None, None, u'Identifier',None, u'Module identifier (String.GUID).',),
-(u'ModuleDependency',u'ModuleID',u'N',None, None, u'ModuleSignature',1,u'Identifier',None, u'Module requiring the dependency.',),
-(u'ModuleDependency',u'ModuleLanguage',u'N',None, None, u'ModuleSignature',2,None, None, u'Language of module requiring the dependency.',),
-(u'ModuleDependency',u'RequiredID',u'N',None, None, None, None, None, None, u'String.GUID of required module.',),
-(u'ModuleDependency',u'RequiredLanguage',u'N',None, None, None, None, None, None, u'LanguageID of the required module.',),
-(u'ModuleDependency',u'RequiredVersion',u'Y',None, None, None, None, u'Version',None, u'Version of the required version.',),
-(u'ModuleExclusion',u'ModuleID',u'N',None, None, u'ModuleSignature',1,u'Identifier',None, u'String.GUID of module with exclusion requirement.',),
-(u'ModuleExclusion',u'ModuleLanguage',u'N',None, None, u'ModuleSignature',2,None, None, u'LanguageID of module with exclusion requirement.',),
-(u'ModuleExclusion',u'ExcludedID',u'N',None, None, None, None, None, None, u'String.GUID of excluded module.',),
-(u'ModuleExclusion',u'ExcludedLanguage',u'N',None, None, None, None, None, None, u'Language of excluded module.',),
-(u'ModuleExclusion',u'ExcludedMaxVersion',u'Y',None, None, None, None, u'Version',None, u'Maximum version of excluded module.',),
-(u'ModuleExclusion',u'ExcludedMinVersion',u'Y',None, None, None, None, u'Version',None, u'Minimum version of excluded module.',),
-(u'MoveFile',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'If this component is not "selected" for installation or removal, no action will be taken on the associated MoveFile entry',),
-(u'MoveFile',u'DestFolder',u'N',None, None, None, None, u'Identifier',None, u'Name of a property whose value is assumed to resolve to the full path to the destination directory',),
-(u'MoveFile',u'DestName',u'Y',None, None, None, None, u'Filename',None, u'Name to be given to the original file after it is moved or copied.  If blank, the destination file will be given the same name as the source file',),
-(u'MoveFile',u'FileKey',u'N',None, None, None, None, u'Identifier',None, u'Primary key that uniquely identifies a particular MoveFile record',),
-(u'MoveFile',u'Options',u'N',0,1,None, None, None, None, u'Integer value specifying the MoveFile operating mode, one of imfoEnum',),
-(u'MoveFile',u'SourceFolder',u'Y',None, None, None, None, u'Identifier',None, u'Name of a property whose value is assumed to resolve to the full path to the source directory',),
-(u'MoveFile',u'SourceName',u'Y',None, None, None, None, u'Text',None, u"Name of the source file(s) to be moved or copied.  Can contain the '*' or '?' wildcards.",),
-(u'MsiAssembly',u'Attributes',u'Y',None, None, None, None, None, None, u'Assembly attributes',),
-(u'MsiAssembly',u'Feature_',u'N',None, None, u'Feature',1,u'Identifier',None, u'Foreign key into Feature table.',),
-(u'MsiAssembly',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key into Component table.',),
-(u'MsiAssembly',u'File_Application',u'Y',None, None, u'File',1,u'Identifier',None, u'Foreign key into File table, denoting the application context for private assemblies. Null for global assemblies.',),
-(u'MsiAssembly',u'File_Manifest',u'Y',None, None, u'File',1,u'Identifier',None, u'Foreign key into the File table denoting the manifest file for the assembly.',),
-(u'MsiAssemblyName',u'Name',u'N',None, None, None, None, u'Text',None, u'The name part of the name-value pairs for the assembly name.',),
-(u'MsiAssemblyName',u'Value',u'N',None, None, None, None, u'Text',None, u'The value part of the name-value pairs for the assembly name.',),
-(u'MsiAssemblyName',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key into Component table.',),
-(u'MsiDigitalCertificate',u'CertData',u'N',None, None, None, None, u'Binary',None, u'A certificate context blob for a signer certificate',),
-(u'MsiDigitalCertificate',u'DigitalCertificate',u'N',None, None, None, None, u'Identifier',None, u'A unique identifier for the row',),
-(u'MsiDigitalSignature',u'Table',u'N',None, None, None, None, None, u'Media',u'Reference to another table name (only Media table is supported)',),
-(u'MsiDigitalSignature',u'DigitalCertificate_',u'N',None, None, u'MsiDigitalCertificate',1,u'Identifier',None, u'Foreign key to MsiDigitalCertificate table identifying the signer certificate',),
-(u'MsiDigitalSignature',u'Hash',u'Y',None, None, None, None, u'Binary',None, u'The encoded hash blob from the digital signature',),
-(u'MsiDigitalSignature',u'SignObject',u'N',None, None, None, None, u'Text',None, u'Foreign key to Media table',),
-(u'MsiFileHash',u'File_',u'N',None, None, u'File',1,u'Identifier',None, u'Primary key, foreign key into File table referencing file with this hash',),
-(u'MsiFileHash',u'Options',u'N',0,32767,None, None, None, None, u'Various options and attributes for this hash.',),
-(u'MsiFileHash',u'HashPart1',u'N',None, None, None, None, None, None, u'Size of file in bytes (long integer).',),
-(u'MsiFileHash',u'HashPart2',u'N',None, None, None, None, None, None, u'Size of file in bytes (long integer).',),
-(u'MsiFileHash',u'HashPart3',u'N',None, None, None, None, None, None, u'Size of file in bytes (long integer).',),
-(u'MsiFileHash',u'HashPart4',u'N',None, None, None, None, None, None, u'Size of file in bytes (long integer).',),
-(u'MsiPatchHeaders',u'StreamRef',u'N',None, None, None, None, u'Identifier',None, u'Primary key. A unique identifier for the row.',),
-(u'MsiPatchHeaders',u'Header',u'N',None, None, None, None, u'Binary',None, u'Binary stream. The patch header, used for patch validation.',),
-(u'ODBCAttribute',u'Value',u'Y',None, None, None, None, u'Text',None, u'Value for ODBC driver attribute',),
-(u'ODBCAttribute',u'Attribute',u'N',None, None, None, None, u'Text',None, u'Name of ODBC driver attribute',),
-(u'ODBCAttribute',u'Driver_',u'N',None, None, u'ODBCDriver',1,u'Identifier',None, u'Reference to ODBC driver in ODBCDriver table',),
-(u'ODBCDriver',u'Description',u'N',None, None, None, None, u'Text',None, u'Text used as registered name for driver, non-localized',),
-(u'ODBCDriver',u'File_',u'N',None, None, u'File',1,u'Identifier',None, u'Reference to key driver file',),
-(u'ODBCDriver',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Reference to associated component',),
-(u'ODBCDriver',u'Driver',u'N',None, None, None, None, u'Identifier',None, u'Primary key, non-localized.internal token for driver',),
-(u'ODBCDriver',u'File_Setup',u'Y',None, None, u'File',1,u'Identifier',None, u'Optional reference to key driver setup DLL',),
-(u'ODBCDataSource',u'Description',u'N',None, None, None, None, u'Text',None, u'Text used as registered name for data source',),
-(u'ODBCDataSource',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Reference to associated component',),
-(u'ODBCDataSource',u'DataSource',u'N',None, None, None, None, u'Identifier',None, u'Primary key, non-localized.internal token for data source',),
-(u'ODBCDataSource',u'DriverDescription',u'N',None, None, None, None, u'Text',None, u'Reference to driver description, may be existing driver',),
-(u'ODBCDataSource',u'Registration',u'N',0,1,None, None, None, None, u'Registration option: 0=machine, 1=user, others t.b.d.',),
-(u'ODBCSourceAttribute',u'Value',u'Y',None, None, None, None, u'Text',None, u'Value for ODBC data source attribute',),
-(u'ODBCSourceAttribute',u'Attribute',u'N',None, None, None, None, u'Text',None, u'Name of ODBC data source attribute',),
-(u'ODBCSourceAttribute',u'DataSource_',u'N',None, None, u'ODBCDataSource',1,u'Identifier',None, u'Reference to ODBC data source in ODBCDataSource table',),
-(u'ODBCTranslator',u'Description',u'N',None, None, None, None, u'Text',None, u'Text used as registered name for translator',),
-(u'ODBCTranslator',u'File_',u'N',None, None, u'File',1,u'Identifier',None, u'Reference to key translator file',),
-(u'ODBCTranslator',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Reference to associated component',),
-(u'ODBCTranslator',u'File_Setup',u'Y',None, None, u'File',1,u'Identifier',None, u'Optional reference to key translator setup DLL',),
-(u'ODBCTranslator',u'Translator',u'N',None, None, None, None, u'Identifier',None, u'Primary key, non-localized.internal token for translator',),
-(u'Patch',u'Sequence',u'N',0,32767,None, None, None, None, u'Primary key, sequence with respect to the media images; order must track cabinet order.',),
-(u'Patch',u'Attributes',u'N',0,32767,None, None, None, None, u'Integer containing bit flags representing patch attributes',),
-(u'Patch',u'File_',u'N',None, None, None, None, u'Identifier',None, u'Primary key, non-localized token, foreign key to File table, must match identifier in cabinet.',),
-(u'Patch',u'Header',u'Y',None, None, None, None, u'Binary',None, u'Binary stream. The patch header, used for patch validation.',),
-(u'Patch',u'PatchSize',u'N',0,2147483647,None, None, None, None, u'Size of patch in bytes (long integer).',),
-(u'Patch',u'StreamRef_',u'Y',None, None, None, None, u'Identifier',None, u'Identifier. Foreign key to the StreamRef column of the MsiPatchHeaders table.',),
-(u'PatchPackage',u'Media_',u'N',0,32767,None, None, None, None, u'Foreign key to DiskId column of Media table. Indicates the disk containing the patch package.',),
-(u'PatchPackage',u'PatchId',u'N',None, None, None, None, u'Guid',None, u'A unique string GUID representing this patch.',),
-(u'PublishComponent',u'Feature_',u'N',None, None, u'Feature',1,u'Identifier',None, u'Foreign key into the Feature table.',),
-(u'PublishComponent',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key into the Component table.',),
-(u'PublishComponent',u'ComponentId',u'N',None, None, None, None, u'Guid',None, u'A string GUID that represents the component id that will be requested by the alien product.',),
-(u'PublishComponent',u'AppData',u'Y',None, None, None, None, u'Text',None, u'This is localisable Application specific data that can be associated with a Qualified Component.',),
-(u'PublishComponent',u'Qualifier',u'N',None, None, None, None, u'Text',None, u'This is defined only when the ComponentId column is an Qualified Component Id. This is the Qualifier for ProvideComponentIndirect.',),
-(u'RadioButton',u'Y',u'N',0,32767,None, None, None, None, u'The vertical coordinate of the upper left corner of the bounding rectangle of the radio button.',),
-(u'RadioButton',u'Text',u'Y',None, None, None, None, u'Text',None, u'The visible title to be assigned to the radio button.',),
-(u'RadioButton',u'Property',u'N',None, None, None, None, u'Identifier',None, u'A named property to be tied to this radio button. All the buttons tied to the same property become part of the same group.',),
-(u'RadioButton',u'Height',u'N',0,32767,None, None, None, None, u'The height of the button.',),
-(u'RadioButton',u'Width',u'N',0,32767,None, None, None, None, u'The width of the button.',),
-(u'RadioButton',u'X',u'N',0,32767,None, None, None, None, u'The horizontal coordinate of the upper left corner of the bounding rectangle of the radio button.',),
-(u'RadioButton',u'Value',u'N',None, None, None, None, u'Formatted',None, u'The value string associated with this button. Selecting the button will set the associated property to this value.',),
-(u'RadioButton',u'Order',u'N',1,32767,None, None, None, None, u'A positive integer used to determine the ordering of the items within one list..The integers do not have to be consecutive.',),
-(u'RadioButton',u'Help',u'Y',None, None, None, None, u'Text',None, u'The help strings used with the button. The text is optional.',),
-(u'Registry',u'Name',u'Y',None, None, None, None, u'Formatted',None, u'The registry value name.',),
-(u'Registry',u'Value',u'Y',None, None, None, None, u'Formatted',None, u'The registry value.',),
-(u'Registry',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key into the Component table referencing component that controls the installing of the registry value.',),
-(u'Registry',u'Key',u'N',None, None, None, None, u'RegPath',None, u'The key for the registry value.',),
-(u'Registry',u'Registry',u'N',None, None, None, None, u'Identifier',None, u'Primary key, non-localized token.',),
-(u'Registry',u'Root',u'N',-1,3,None, None, None, None, u'The predefined root key for the registry value, one of rrkEnum.',),
-(u'RegLocator',u'Name',u'Y',None, None, None, None, u'Formatted',None, u'The registry value name.',),
-(u'RegLocator',u'Type',u'Y',0,18,None, None, None, None, u'An integer value that determines if the registry value is a filename or a directory location or to be used as is w/o interpretation.',),
-(u'RegLocator',u'Signature_',u'N',None, None, None, None, u'Identifier',None, u'The table key. The Signature_ represents a unique file signature and is also the foreign key in the Signature table. If the type is 0, the registry values refers a directory, and _Signature is not a foreign key.',),
-(u'RegLocator',u'Key',u'N',None, None, None, None, u'RegPath',None, u'The key for the registry value.',),
-(u'RegLocator',u'Root',u'N',0,3,None, None, None, None, u'The predefined root key for the registry value, one of rrkEnum.',),
-(u'RemoveFile',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key referencing Component that controls the file to be removed.',),
-(u'RemoveFile',u'FileKey',u'N',None, None, None, None, u'Identifier',None, u'Primary key used to identify a particular file entry',),
-(u'RemoveFile',u'FileName',u'Y',None, None, None, None, u'WildCardFilename',None, u'Name of the file to be removed.',),
-(u'RemoveFile',u'DirProperty',u'N',None, None, None, None, u'Identifier',None, u'Name of a property whose value is assumed to resolve to the full pathname to the folder of the file to be removed.',),
-(u'RemoveFile',u'InstallMode',u'N',None, None, None, None, None, u'1;2;3',u'Installation option, one of iimEnum.',),
-(u'RemoveIniFile',u'Action',u'N',None, None, None, None, None, u'2;4',u'The type of modification to be made, one of iifEnum.',),
-(u'RemoveIniFile',u'Value',u'Y',None, None, None, None, u'Formatted',None, u'The value to be deleted. The value is required when Action is iifIniRemoveTag',),
-(u'RemoveIniFile',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key into the Component table referencing component that controls the deletion of the .INI value.',),
-(u'RemoveIniFile',u'FileName',u'N',None, None, None, None, u'Filename',None, u'The .INI file name in which to delete the information',),
-(u'RemoveIniFile',u'DirProperty',u'Y',None, None, None, None, u'Identifier',None, u'Foreign key into the Directory table denoting the directory where the .INI file is.',),
-(u'RemoveIniFile',u'Key',u'N',None, None, None, None, u'Formatted',None, u'The .INI file key below Section.',),
-(u'RemoveIniFile',u'Section',u'N',None, None, None, None, u'Formatted',None, u'The .INI file Section.',),
-(u'RemoveIniFile',u'RemoveIniFile',u'N',None, None, None, None, u'Identifier',None, u'Primary key, non-localized token.',),
-(u'RemoveRegistry',u'Name',u'Y',None, None, None, None, u'Formatted',None, u'The registry value name.',),
-(u'RemoveRegistry',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key into the Component table referencing component that controls the deletion of the registry value.',),
-(u'RemoveRegistry',u'Key',u'N',None, None, None, None, u'RegPath',None, u'The key for the registry value.',),
-(u'RemoveRegistry',u'Root',u'N',-1,3,None, None, None, None, u'The predefined root key for the registry value, one of rrkEnum',),
-(u'RemoveRegistry',u'RemoveRegistry',u'N',None, None, None, None, u'Identifier',None, u'Primary key, non-localized token.',),
-(u'ReserveCost',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Reserve a specified amount of space if this component is to be installed.',),
-(u'ReserveCost',u'ReserveFolder',u'Y',None, None, None, None, u'Identifier',None, u'Name of a property whose value is assumed to resolve to the full path to the destination directory',),
-(u'ReserveCost',u'ReserveKey',u'N',None, None, None, None, u'Identifier',None, u'Primary key that uniquely identifies a particular ReserveCost record',),
-(u'ReserveCost',u'ReserveLocal',u'N',0,2147483647,None, None, None, None, u'Disk space to reserve if linked component is installed locally.',),
-(u'ReserveCost',u'ReserveSource',u'N',0,2147483647,None, None, None, None, u'Disk space to reserve if linked component is installed to run from the source location.',),
-(u'SelfReg',u'File_',u'N',None, None, u'File',1,u'Identifier',None, u'Foreign key into the File table denoting the module that needs to be registered.',),
-(u'SelfReg',u'Cost',u'Y',0,32767,None, None, None, None, u'The cost of registering the module.',),
-(u'ServiceControl',u'Name',u'N',None, None, None, None, u'Formatted',None, u'Name of a service. /, \\, comma and space are invalid',),
-(u'ServiceControl',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Required foreign key into the Component Table that controls the startup of the service',),
-(u'ServiceControl',u'Event',u'N',0,187,None, None, None, None, u'Bit field:  Install:  0x1 = Start, 0x2 = Stop, 0x8 = Delete, Uninstall: 0x10 = Start, 0x20 = Stop, 0x80 = Delete',),
-(u'ServiceControl',u'ServiceControl',u'N',None, None, None, None, u'Identifier',None, u'Primary key, non-localized token.',),
-(u'ServiceControl',u'Arguments',u'Y',None, None, None, None, u'Formatted',None, u'Arguments for the service.  Separate by [~].',),
-(u'ServiceControl',u'Wait',u'Y',0,1,None, None, None, None, u'Boolean for whether to wait for the service to fully start',),
-(u'ServiceInstall',u'Name',u'N',None, None, None, None, u'Formatted',None, u'Internal Name of the Service',),
-(u'ServiceInstall',u'Description',u'Y',None, None, None, None, u'Text',None, u'Description of service.',),
-(u'ServiceInstall',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Required foreign key into the Component Table that controls the startup of the service',),
-(u'ServiceInstall',u'Arguments',u'Y',None, None, None, None, u'Formatted',None, u'Arguments to include in every start of the service, passed to WinMain',),
-(u'ServiceInstall',u'ServiceInstall',u'N',None, None, None, None, u'Identifier',None, u'Primary key, non-localized token.',),
-(u'ServiceInstall',u'Dependencies',u'Y',None, None, None, None, u'Formatted',None, u'Other services this depends on to start.  Separate by [~], and end with [~][~]',),
-(u'ServiceInstall',u'DisplayName',u'Y',None, None, None, None, u'Formatted',None, u'External Name of the Service',),
-(u'ServiceInstall',u'ErrorControl',u'N',-2147483647,2147483647,None, None, None, None, u'Severity of error if service fails to start',),
-(u'ServiceInstall',u'LoadOrderGroup',u'Y',None, None, None, None, u'Formatted',None, u'LoadOrderGroup',),
-(u'ServiceInstall',u'Password',u'Y',None, None, None, None, u'Formatted',None, u'password to run service with.  (with StartName)',),
-(u'ServiceInstall',u'ServiceType',u'N',-2147483647,2147483647,None, None, None, None, u'Type of the service',),
-(u'ServiceInstall',u'StartName',u'Y',None, None, None, None, u'Formatted',None, u'User or object name to run service as',),
-(u'ServiceInstall',u'StartType',u'N',0,4,None, None, None, None, u'Type of the service',),
-(u'Shortcut',u'Name',u'N',None, None, None, None, u'Filename',None, u'The name of the shortcut to be created.',),
-(u'Shortcut',u'Description',u'Y',None, None, None, None, u'Text',None, u'The description for the shortcut.',),
-(u'Shortcut',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Foreign key into the Component table denoting the component whose selection gates the the shortcut creation/deletion.',),
-(u'Shortcut',u'Icon_',u'Y',None, None, u'Icon',1,u'Identifier',None, u'Foreign key into the File table denoting the external icon file for the shortcut.',),
-(u'Shortcut',u'IconIndex',u'Y',-32767,32767,None, None, None, None, u'The icon index for the shortcut.',),
-(u'Shortcut',u'Directory_',u'N',None, None, u'Directory',1,u'Identifier',None, u'Foreign key into the Directory table denoting the directory where the shortcut file is created.',),
-(u'Shortcut',u'Target',u'N',None, None, None, None, u'Shortcut',None, u'The shortcut target. This is usually a property that is expanded to a file or a folder that the shortcut points to.',),
-(u'Shortcut',u'Arguments',u'Y',None, None, None, None, u'Formatted',None, u'The command-line arguments for the shortcut.',),
-(u'Shortcut',u'Shortcut',u'N',None, None, None, None, u'Identifier',None, u'Primary key, non-localized token.',),
-(u'Shortcut',u'Hotkey',u'Y',0,32767,None, None, None, None, u'The hotkey for the shortcut. It has the virtual-key code for the key in the low-order byte, and the modifier flags in the high-order byte. ',),
-(u'Shortcut',u'ShowCmd',u'Y',None, None, None, None, None, u'1;3;7',u'The show command for the application window.The following values may be used.',),
-(u'Shortcut',u'WkDir',u'Y',None, None, None, None, u'Identifier',None, u'Name of property defining location of working directory.',),
-(u'Signature',u'FileName',u'N',None, None, None, None, u'Filename',None, u'The name of the file. This may contain a "short name|long name" pair.',),
-(u'Signature',u'Signature',u'N',None, None, None, None, u'Identifier',None, u'The table key. The Signature represents a unique file signature.',),
-(u'Signature',u'Languages',u'Y',None, None, None, None, u'Language',None, u'The languages supported by the file.',),
-(u'Signature',u'MaxDate',u'Y',0,2147483647,None, None, None, None, u'The maximum creation date of the file.',),
-(u'Signature',u'MaxSize',u'Y',0,2147483647,None, None, None, None, u'The maximum size of the file. ',),
-(u'Signature',u'MaxVersion',u'Y',None, None, None, None, u'Text',None, u'The maximum version of the file.',),
-(u'Signature',u'MinDate',u'Y',0,2147483647,None, None, None, None, u'The minimum creation date of the file.',),
-(u'Signature',u'MinSize',u'Y',0,2147483647,None, None, None, None, u'The minimum size of the file.',),
-(u'Signature',u'MinVersion',u'Y',None, None, None, None, u'Text',None, u'The minimum version of the file.',),
-(u'TextStyle',u'TextStyle',u'N',None, None, None, None, u'Identifier',None, u'Name of the style. The primary key of this table. This name is embedded in the texts to indicate a style change.',),
-(u'TextStyle',u'Color',u'Y',0,16777215,None, None, None, None, u'A long integer indicating the color of the string in the RGB format (Red, Green, Blue each 0-255, RGB = R + 256*G + 256^2*B).',),
-(u'TextStyle',u'FaceName',u'N',None, None, None, None, u'Text',None, u'A string indicating the name of the font used. Required. The string must be at most 31 characters long.',),
-(u'TextStyle',u'Size',u'N',0,32767,None, None, None, None, u'The size of the font used. This size is given in our units (1/12 of the system font height). Assuming that the system font is set to 12 point size, this is equivalent to the point size.',),
-(u'TextStyle',u'StyleBits',u'Y',0,15,None, None, None, None, u'A combination of style bits.',),
-(u'TypeLib',u'Description',u'Y',None, None, None, None, u'Text',None, None, ),
-(u'TypeLib',u'Feature_',u'N',None, None, u'Feature',1,u'Identifier',None, u'Required foreign key into the Feature Table, specifying the feature to validate or install in order for the type library to be operational.',),
-(u'TypeLib',u'Component_',u'N',None, None, u'Component',1,u'Identifier',None, u'Required foreign key into the Component Table, specifying the component for which to return a path when called through LocateComponent.',),
-(u'TypeLib',u'Directory_',u'Y',None, None, u'Directory',1,u'Identifier',None, u'Optional. The foreign key into the Directory table denoting the path to the help file for the type library.',),
-(u'TypeLib',u'Language',u'N',0,32767,None, None, None, None, u'The language of the library.',),
-(u'TypeLib',u'Version',u'Y',0,16777215,None, None, None, None, u'The version of the library. The minor version is in the lower 8 bits of the integer. The major version is in the next 16 bits. ',),
-(u'TypeLib',u'Cost',u'Y',0,2147483647,None, None, None, None, u'The cost associated with the registration of the typelib. This column is currently optional.',),
-(u'TypeLib',u'LibID',u'N',None, None, None, None, u'Guid',None, u'The GUID that represents the library.',),
-(u'UIText',u'Text',u'Y',None, None, None, None, u'Text',None, u'The localized version of the string.',),
-(u'UIText',u'Key',u'N',None, None, None, None, u'Identifier',None, u'A unique key that identifies the particular string.',),
-(u'Upgrade',u'Attributes',u'N',0,2147483647,None, None, None, None, u'The attributes of this product set.',),
-(u'Upgrade',u'Language',u'Y',None, None, None, None, u'Language',None, u'A comma-separated list of languages for either products in this set or products not in this set.',),
-(u'Upgrade',u'ActionProperty',u'N',None, None, None, None, u'UpperCase',None, u'The property to set when a product in this set is found.',),
-(u'Upgrade',u'Remove',u'Y',None, None, None, None, u'Formatted',None, u'The list of features to remove when uninstalling a product from this set.  The default is "ALL".',),
-(u'Upgrade',u'UpgradeCode',u'N',None, None, None, None, u'Guid',None, u'The UpgradeCode GUID belonging to the products in this set.',),
-(u'Upgrade',u'VersionMax',u'Y',None, None, None, None, u'Text',None, u'The maximum ProductVersion of the products in this set.  The set may or may not include products with this particular version.',),
-(u'Upgrade',u'VersionMin',u'Y',None, None, None, None, u'Text',None, u'The minimum ProductVersion of the products in this set.  The set may or may not include products with this particular version.',),
-(u'Verb',u'Sequence',u'Y',0,32767,None, None, None, None, u'Order within the verbs for a particular extension. Also used simply to specify the default verb.',),
-(u'Verb',u'Argument',u'Y',None, None, None, None, u'Formatted',None, u'Optional value for the command arguments.',),
-(u'Verb',u'Extension_',u'N',None, None, u'Extension',1,u'Text',None, u'The extension associated with the table row.',),
-(u'Verb',u'Verb',u'N',None, None, None, None, u'Text',None, u'The verb for the command.',),
-(u'Verb',u'Command',u'Y',None, None, None, None, u'Formatted',None, u'The command text.',),
-]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/sequence.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/sequence.py
deleted file mode 100644
index 49d6c5d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/sequence.py
+++ /dev/null
@@ -1,126 +0,0 @@
-AdminExecuteSequence = [
-(u'InstallInitialize', None, 1500),
-(u'InstallFinalize', None, 6600),
-(u'InstallFiles', None, 4000),
-(u'InstallAdminPackage', None, 3900),
-(u'FileCost', None, 900),
-(u'CostInitialize', None, 800),
-(u'CostFinalize', None, 1000),
-(u'InstallValidate', None, 1400),
-]
-
-AdminUISequence = [
-(u'FileCost', None, 900),
-(u'CostInitialize', None, 800),
-(u'CostFinalize', None, 1000),
-(u'ExecuteAction', None, 1300),
-(u'ExitDialog', None, -1),
-(u'FatalError', None, -3),
-(u'UserExit', None, -2),
-]
-
-AdvtExecuteSequence = [
-(u'InstallInitialize', None, 1500),
-(u'InstallFinalize', None, 6600),
-(u'CostInitialize', None, 800),
-(u'CostFinalize', None, 1000),
-(u'InstallValidate', None, 1400),
-(u'CreateShortcuts', None, 4500),
-(u'MsiPublishAssemblies', None, 6250),
-(u'PublishComponents', None, 6200),
-(u'PublishFeatures', None, 6300),
-(u'PublishProduct', None, 6400),
-(u'RegisterClassInfo', None, 4600),
-(u'RegisterExtensionInfo', None, 4700),
-(u'RegisterMIMEInfo', None, 4900),
-(u'RegisterProgIdInfo', None, 4800),
-]
-
-InstallExecuteSequence = [
-(u'InstallInitialize', None, 1500),
-(u'InstallFinalize', None, 6600),
-(u'InstallFiles', None, 4000),
-(u'FileCost', None, 900),
-(u'CostInitialize', None, 800),
-(u'CostFinalize', None, 1000),
-(u'InstallValidate', None, 1400),
-(u'CreateShortcuts', None, 4500),
-(u'MsiPublishAssemblies', None, 6250),
-(u'PublishComponents', None, 6200),
-(u'PublishFeatures', None, 6300),
-(u'PublishProduct', None, 6400),
-(u'RegisterClassInfo', None, 4600),
-(u'RegisterExtensionInfo', None, 4700),
-(u'RegisterMIMEInfo', None, 4900),
-(u'RegisterProgIdInfo', None, 4800),
-(u'AllocateRegistrySpace', u'NOT Installed', 1550),
-(u'AppSearch', None, 400),
-(u'BindImage', None, 4300),
-(u'CCPSearch', u'NOT Installed', 500),
-(u'CreateFolders', None, 3700),
-(u'DeleteServices', u'VersionNT', 2000),
-(u'DuplicateFiles', None, 4210),
-(u'FindRelatedProducts', None, 200),
-(u'InstallODBC', None, 5400),
-(u'InstallServices', u'VersionNT', 5800),
-(u'IsolateComponents', None, 950),
-(u'LaunchConditions', None, 100),
-(u'MigrateFeatureStates', None, 1200),
-(u'MoveFiles', None, 3800),
-(u'PatchFiles', None, 4090),
-(u'ProcessComponents', None, 1600),
-(u'RegisterComPlus', None, 5700),
-(u'RegisterFonts', None, 5300),
-(u'RegisterProduct', None, 6100),
-(u'RegisterTypeLibraries', None, 5500),
-(u'RegisterUser', None, 6000),
-(u'RemoveDuplicateFiles', None, 3400),
-(u'RemoveEnvironmentStrings', None, 3300),
-(u'RemoveExistingProducts', None, 6700),
-(u'RemoveFiles', None, 3500),
-(u'RemoveFolders', None, 3600),
-(u'RemoveIniValues', None, 3100),
-(u'RemoveODBC', None, 2400),
-(u'RemoveRegistryValues', None, 2600),
-(u'RemoveShortcuts', None, 3200),
-(u'RMCCPSearch', u'NOT Installed', 600),
-(u'SelfRegModules', None, 5600),
-(u'SelfUnregModules', None, 2200),
-(u'SetODBCFolders', None, 1100),
-(u'StartServices', u'VersionNT', 5900),
-(u'StopServices', u'VersionNT', 1900),
-(u'MsiUnpublishAssemblies', None, 1750),
-(u'UnpublishComponents', None, 1700),
-(u'UnpublishFeatures', None, 1800),
-(u'UnregisterClassInfo', None, 2700),
-(u'UnregisterComPlus', None, 2100),
-(u'UnregisterExtensionInfo', None, 2800),
-(u'UnregisterFonts', None, 2500),
-(u'UnregisterMIMEInfo', None, 3000),
-(u'UnregisterProgIdInfo', None, 2900),
-(u'UnregisterTypeLibraries', None, 2300),
-(u'ValidateProductID', None, 700),
-(u'WriteEnvironmentStrings', None, 5200),
-(u'WriteIniValues', None, 5100),
-(u'WriteRegistryValues', None, 5000),
-]
-
-InstallUISequence = [
-(u'FileCost', None, 900),
-(u'CostInitialize', None, 800),
-(u'CostFinalize', None, 1000),
-(u'ExecuteAction', None, 1300),
-(u'ExitDialog', None, -1),
-(u'FatalError', None, -3),
-(u'UserExit', None, -2),
-(u'AppSearch', None, 400),
-(u'CCPSearch', u'NOT Installed', 500),
-(u'FindRelatedProducts', None, 200),
-(u'IsolateComponents', None, 950),
-(u'LaunchConditions', None, 100),
-(u'MigrateFeatureStates', None, 1200),
-(u'RMCCPSearch', u'NOT Installed', 600),
-(u'ValidateProductID', None, 700),
-]
-
-tables=['AdminExecuteSequence', 'AdminUISequence', 'AdvtExecuteSequence', 'InstallExecuteSequence', 'InstallUISequence']
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/uisample.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/uisample.py
deleted file mode 100644
index 1e68e92..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/uisample.py
+++ /dev/null
@@ -1,1400 +0,0 @@
-
-import msilib,os;dirname=os.path.dirname(__file__)
-AdminExecuteSequence = [
-(u'InstallValidate', None, 1400),
-(u'InstallInitialize', None, 1500),
-(u'InstallFinalize', None, 6600),
-(u'InstallFiles', None, 4000),
-(u'InstallAdminPackage', None, 3900),
-(u'FileCost', None, 900),
-(u'CostInitialize', None, 800),
-(u'CostFinalize', None, 1000),
-]
-
-AdminUISequence = [
-(u'AdminWelcomeDlg', None, 1230),
-(u'FileCost', None, 900),
-(u'CostInitialize', None, 800),
-(u'CostFinalize', None, 1000),
-(u'ExecuteAction', None, 1300),
-(u'ExitDialog', None, -1),
-(u'FatalError', None, -3),
-(u'PrepareDlg', None, 140),
-(u'ProgressDlg', None, 1280),
-(u'UserExit', None, -2),
-]
-
-AdvtExecuteSequence = [
-(u'InstallValidate', None, 1400),
-(u'InstallInitialize', None, 1500),
-(u'InstallFinalize', None, 6600),
-(u'CostInitialize', None, 800),
-(u'CostFinalize', None, 1000),
-(u'CreateShortcuts', None, 4500),
-(u'PublishComponents', None, 6200),
-(u'PublishFeatures', None, 6300),
-(u'PublishProduct', None, 6400),
-(u'RegisterClassInfo', None, 4600),
-(u'RegisterExtensionInfo', None, 4700),
-(u'RegisterMIMEInfo', None, 4900),
-(u'RegisterProgIdInfo', None, 4800),
-]
-
-BBControl = [
-]
-
-Billboard = [
-]
-
-Binary = [
-(u'bannrbmp', msilib.Binary(os.path.join(dirname,"bannrbmp.bin"))),
-(u'completi', msilib.Binary(os.path.join(dirname,"completi.bin"))),
-(u'custicon', msilib.Binary(os.path.join(dirname,"custicon.bin"))),
-(u'dlgbmp', msilib.Binary(os.path.join(dirname,"dlgbmp.bin"))),
-(u'exclamic', msilib.Binary(os.path.join(dirname,"exclamic.bin"))),
-(u'info', msilib.Binary(os.path.join(dirname,"info.bin"))),
-(u'insticon', msilib.Binary(os.path.join(dirname,"insticon.bin"))),
-(u'New', msilib.Binary(os.path.join(dirname,"New.bin"))),
-(u'removico', msilib.Binary(os.path.join(dirname,"removico.bin"))),
-(u'repairic', msilib.Binary(os.path.join(dirname,"repairic.bin"))),
-(u'Up', msilib.Binary(os.path.join(dirname,"Up.bin"))),
-]
-
-CheckBox = [
-]
-
-Property = [
-(u'BannerBitmap', u'bannrbmp'),
-(u'IAgree', u'No'),
-(u'ProductID', u'none'),
-(u'ARPHELPLINK', u'http://www.microsoft.com/management'),
-(u'ButtonText_Back', u'< &Back'),
-(u'ButtonText_Browse', u'Br&owse'),
-(u'ButtonText_Cancel', u'Cancel'),
-(u'ButtonText_Exit', u'&Exit'),
-(u'ButtonText_Finish', u'&Finish'),
-(u'ButtonText_Ignore', u'&Ignore'),
-(u'ButtonText_Install', u'&Install'),
-(u'ButtonText_Next', u'&Next >'),
-(u'ButtonText_No', u'&No'),
-(u'ButtonText_OK', u'OK'),
-(u'ButtonText_Remove', u'&Remove'),
-(u'ButtonText_Repair', u'&Repair'),
-(u'ButtonText_Reset', u'&Reset'),
-(u'ButtonText_Resume', u'&Resume'),
-(u'ButtonText_Retry', u'&Retry'),
-(u'ButtonText_Return', u'&Return'),
-(u'ButtonText_Yes', u'&Yes'),
-(u'CompleteSetupIcon', u'completi'),
-(u'ComponentDownload', u'ftp://anonymous@microsoft.com/components/'),
-(u'CustomSetupIcon', u'custicon'),
-(u'DefaultUIFont', u'DlgFont8'),
-(u'DialogBitmap', u'dlgbmp'),
-(u'DlgTitleFont', u'{&DlgFontBold8}'),
-(u'ErrorDialog', u'ErrorDlg'),
-(u'ExclamationIcon', u'exclamic'),
-(u'InfoIcon', u'info'),
-(u'InstallerIcon', u'insticon'),
-(u'INSTALLLEVEL', u'3'),
-(u'InstallMode', u'Typical'),
-(u'PIDTemplate', u'12345<###-%%%%%%%>@@@@@'),
-#(u'ProductLanguage', u'1033'),
-(u'Progress1', u'Installing'),
-(u'Progress2', u'installs'),
-(u'PROMPTROLLBACKCOST', u'P'),
-(u'RemoveIcon', u'removico'),
-(u'RepairIcon', u'repairic'),
-(u'Setup', u'Setup'),
-(u'ShowUserRegistrationDlg', u'1'),
-(u'Wizard', u'Setup Wizard'),
-]
-
-ComboBox = [
-]
-
-Control = [
-(u'AdminWelcomeDlg', u'Bitmap', u'Bitmap', 0, 0, 370, 234, 1, None, u'[DialogBitmap]', u'Back', None),
-(u'AdminWelcomeDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'AdminWelcomeDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'Bitmap', None),
-(u'AdminWelcomeDlg', u'Description', u'Text', 135, 70, 220, 30, 196611, None, u'The [Wizard] will create a server image of [ProductName], at a specified network location.  Click Next to continue or Cancel to exit the [Wizard].', None, None),
-(u'AdminWelcomeDlg', u'Title', u'Text', 135, 20, 220, 60, 196611, None, u'{\\VerdanaBold13}Welcome to the [ProductName] [Wizard]', None, None),
-(u'AdminWelcomeDlg', u'Back', u'PushButton', 180, 243, 56, 17, 1, None, u'[ButtonText_Back]', u'Next', None),
-(u'AdminWelcomeDlg', u'Next', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Next]', u'Cancel', None),
-(u'ExitDialog', u'Bitmap', u'Bitmap', 0, 0, 370, 234, 1, None, u'[DialogBitmap]', u'Back', None),
-(u'ExitDialog', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'ExitDialog', u'Cancel', u'PushButton', 304, 243, 56, 17, 1, None, u'[ButtonText_Cancel]', u'Bitmap', None),
-(u'ExitDialog', u'Description', u'Text', 135, 70, 220, 20, 196611, None, u'Click the Finish button to exit the [Wizard].', None, None),
-(u'ExitDialog', u'Title', u'Text', 135, 20, 220, 60, 196611, None, u'{\\VerdanaBold13}Completing the [ProductName] [Wizard]', None, None),
-(u'ExitDialog', u'Back', u'PushButton', 180, 243, 56, 17, 1, None, u'[ButtonText_Back]', u'Finish', None),
-(u'ExitDialog', u'Finish', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Finish]', u'Cancel', None),
-(u'FatalError', u'Bitmap', u'Bitmap', 0, 0, 370, 234, 1, None, u'[DialogBitmap]', u'Back', None),
-(u'FatalError', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'FatalError', u'Cancel', u'PushButton', 304, 243, 56, 17, 1, None, u'[ButtonText_Cancel]', u'Bitmap', None),
-(u'FatalError', u'Title', u'Text', 135, 20, 220, 60, 196611, None, u'{\\VerdanaBold13}[ProductName] [Wizard] ended prematurely', None, None),
-(u'FatalError', u'Back', u'PushButton', 180, 243, 56, 17, 1, None, u'[ButtonText_Back]', u'Finish', None),
-(u'FatalError', u'Finish', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Finish]', u'Cancel', None),
-(u'FatalError', u'Description1', u'Text', 135, 70, 220, 40, 196611, None, u'[ProductName] setup ended prematurely because of an error.  Your system has not been modified.  To install this program at a later time, please run the installation again.', None, None),
-(u'FatalError', u'Description2', u'Text', 135, 115, 220, 20, 196611, None, u'Click the Finish button to exit the [Wizard].', None, None),
-(u'PrepareDlg', u'Bitmap', u'Bitmap', 0, 0, 370, 234, 1, None, u'[DialogBitmap]', u'Cancel', None),
-(u'PrepareDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'PrepareDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'Bitmap', None),
-(u'PrepareDlg', u'Description', u'Text', 135, 70, 220, 20, 196611, None, u'Please wait while the [Wizard] prepares to guide you through the installation.', None, None),
-(u'PrepareDlg', u'Title', u'Text', 135, 20, 220, 60, 196611, None, u'{\\VerdanaBold13}Welcome to the [ProductName] [Wizard]', None, None),
-(u'PrepareDlg', u'Back', u'PushButton', 180, 243, 56, 17, 1, None, u'[ButtonText_Back]', None, None),
-(u'PrepareDlg', u'Next', u'PushButton', 236, 243, 56, 17, 1, None, u'[ButtonText_Next]', None, None),
-(u'PrepareDlg', u'ActionData', u'Text', 135, 125, 220, 30, 196611, None, None, None, None),
-(u'PrepareDlg', u'ActionText', u'Text', 135, 100, 220, 20, 196611, None, None, None, None),
-(u'ProgressDlg', u'Text', u'Text', 35, 65, 300, 20, 3, None, u'Please wait while the [Wizard] [Progress2] [ProductName].  This may take several minutes.', None, None),
-(u'ProgressDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'Back', None),
-(u'ProgressDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'ProgressDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'ProgressDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'BannerBitmap', None),
-(u'ProgressDlg', u'Title', u'Text', 20, 15, 200, 15, 196611, None, u'[DlgTitleFont][Progress1] [ProductName]', None, None),
-(u'ProgressDlg', u'Back', u'PushButton', 180, 243, 56, 17, 1, None, u'[ButtonText_Back]', u'Next', None),
-(u'ProgressDlg', u'Next', u'PushButton', 236, 243, 56, 17, 1, None, u'[ButtonText_Next]', u'Cancel', None),
-(u'ProgressDlg', u'ActionText', u'Text', 70, 100, 265, 10, 3, None, None, None, None),
-(u'ProgressDlg', u'ProgressBar', u'ProgressBar', 35, 115, 300, 10, 65537, None, u'Progress done', None, None),
-(u'ProgressDlg', u'StatusLabel', u'Text', 35, 100, 35, 10, 3, None, u'Status:', None, None),
-(u'UserExit', u'Bitmap', u'Bitmap', 0, 0, 370, 234, 1, None, u'[DialogBitmap]', u'Back', None),
-(u'UserExit', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'UserExit', u'Cancel', u'PushButton', 304, 243, 56, 17, 1, None, u'[ButtonText_Cancel]', u'Bitmap', None),
-(u'UserExit', u'Title', u'Text', 135, 20, 220, 60, 196611, None, u'{\\VerdanaBold13}[ProductName] [Wizard] was interrupted', None, None),
-(u'UserExit', u'Back', u'PushButton', 180, 243, 56, 17, 1, None, u'[ButtonText_Back]', u'Finish', None),
-(u'UserExit', u'Finish', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Finish]', u'Cancel', None),
-(u'UserExit', u'Description1', u'Text', 135, 70, 220, 40, 196611, None, u'[ProductName] setup was interrupted.  Your system has not been modified.  To install this program at a later time, please run the installation again.', None, None),
-(u'UserExit', u'Description2', u'Text', 135, 115, 220, 20, 196611, None, u'Click the Finish button to exit the [Wizard].', None, None),
-(u'AdminBrowseDlg', u'Up', u'PushButton', 298, 55, 19, 19, 3670019, None, u'Up', u'NewFolder', u'Up One Level|'),
-(u'AdminBrowseDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'PathEdit', None),
-(u'AdminBrowseDlg', u'PathEdit', u'PathEdit', 84, 202, 261, 17, 3, u'TARGETDIR', None, u'OK', None),
-(u'AdminBrowseDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'AdminBrowseDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'AdminBrowseDlg', u'Cancel', u'PushButton', 240, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'ComboLabel', None),
-(u'AdminBrowseDlg', u'ComboLabel', u'Text', 25, 58, 44, 10, 3, None, u'&Look in:', u'DirectoryCombo', None),
-(u'AdminBrowseDlg', u'DirectoryCombo', u'DirectoryCombo', 70, 55, 220, 80, 458755, u'TARGETDIR', None, u'Up', None),
-(u'AdminBrowseDlg', u'Description', u'Text', 25, 23, 280, 15, 196611, None, u'Browse to the destination folder', None, None),
-(u'AdminBrowseDlg', u'DirectoryList', u'DirectoryList', 25, 83, 320, 110, 7, u'TARGETDIR', None, u'PathLabel', None),
-(u'AdminBrowseDlg', u'PathLabel', u'Text', 25, 205, 59, 10, 3, None, u'&Folder name:', u'BannerBitmap', None),
-(u'AdminBrowseDlg', u'NewFolder', u'PushButton', 325, 55, 19, 19, 3670019, None, u'New', u'DirectoryList', u'Create A New Folder|'),
-(u'AdminBrowseDlg', u'OK', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_OK]', u'Cancel', None),
-(u'AdminBrowseDlg', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]Change current destination folder', None, None),
-(u'AdminInstallPointDlg', u'Text', u'Text', 25, 80, 320, 10, 3, None, u'&Enter a new network location or click Browse to browse to one.', u'PathEdit', None),
-(u'AdminInstallPointDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'Text', None),
-(u'AdminInstallPointDlg', u'PathEdit', u'PathEdit', 25, 93, 320, 18, 3, u'TARGETDIR', None, u'Browse', None),
-(u'AdminInstallPointDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'AdminInstallPointDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'AdminInstallPointDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'BannerBitmap', None),
-(u'AdminInstallPointDlg', u'Description', u'Text', 25, 20, 280, 20, 196611, None, u'Please specify a network location for the server image of [ProductName] product', None, None),
-(u'AdminInstallPointDlg', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]Network Location', None, None),
-(u'AdminInstallPointDlg', u'Back', u'PushButton', 180, 243, 56, 17, 3, None, u'[ButtonText_Back]', u'Next', None),
-(u'AdminInstallPointDlg', u'Next', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Next]', u'Cancel', None),
-(u'AdminInstallPointDlg', u'Browse', u'PushButton', 289, 119, 56, 17, 3, None, u'[ButtonText_Browse]', u'Back', None),
-(u'AdminRegistrationDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'OrganizationLabel', None),
-(u'AdminRegistrationDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'AdminRegistrationDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'AdminRegistrationDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'BannerBitmap', None),
-(u'AdminRegistrationDlg', u'Description', u'Text', 25, 23, 280, 15, 196611, None, u'Please enter your company information', None, None),
-(u'AdminRegistrationDlg', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]Company Information', None, None),
-(u'AdminRegistrationDlg', u'Back', u'PushButton', 180, 243, 56, 17, 65539, None, u'[ButtonText_Back]', u'Next', None),
-(u'AdminRegistrationDlg', u'Next', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Next]', u'Cancel', None),
-(u'AdminRegistrationDlg', u'OrganizationLabel', u'Text', 45, 71, 285, 30, 3, None, u'&Please enter the name of your organization in the box below.  This will be used as default company name for subsequent installations of [ProductName]:', u'OrganizationEdit', None),
-(u'AdminRegistrationDlg', u'CDKeyEdit', u'MaskedEdit', 45, 143, 250, 16, 3, u'PIDKEY', u'[PIDTemplate]', u'Back', None),
-(u'AdminRegistrationDlg', u'CDKeyLabel', u'Text', 45, 130, 50, 10, 3, None, u'CD &Key:', u'CDKeyEdit', None),
-(u'AdminRegistrationDlg', u'OrganizationEdit', u'Edit', 45, 105, 220, 18, 3, u'COMPANYNAME', u'{80}', u'CDKeyLabel', None),
-(u'BrowseDlg', u'Up', u'PushButton', 298, 55, 19, 19, 3670019, None, u'Up', u'NewFolder', u'Up One Level|'),
-(u'BrowseDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'PathEdit', None),
-(u'BrowseDlg', u'PathEdit', u'PathEdit', 84, 202, 261, 18, 11, u'_BrowseProperty', None, u'OK', None),
-(u'BrowseDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'BrowseDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'BrowseDlg', u'Cancel', u'PushButton', 240, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'ComboLabel', None),
-(u'BrowseDlg', u'ComboLabel', u'Text', 25, 58, 44, 10, 3, None, u'&Look in:', u'DirectoryCombo', None),
-(u'BrowseDlg', u'DirectoryCombo', u'DirectoryCombo', 70, 55, 220, 80, 393227, u'_BrowseProperty', None, u'Up', None),
-(u'BrowseDlg', u'Description', u'Text', 25, 23, 280, 15, 196611, None, u'Browse to the destination folder', None, None),
-(u'BrowseDlg', u'DirectoryList', u'DirectoryList', 25, 83, 320, 110, 15, u'_BrowseProperty', None, u'PathLabel', None),
-(u'BrowseDlg', u'PathLabel', u'Text', 25, 205, 59, 10, 3, None, u'&Folder name:', u'BannerBitmap', None),
-(u'BrowseDlg', u'NewFolder', u'PushButton', 325, 55, 19, 19, 3670019, None, u'New', u'DirectoryList', u'Create A New Folder|'),
-(u'BrowseDlg', u'OK', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_OK]', u'Cancel', None),
-(u'BrowseDlg', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]Change current destination folder', None, None),
-(u'CancelDlg', u'Text', u'Text', 48, 15, 194, 30, 3, None, u'Are you sure you want to cancel [ProductName] installation?', None, None),
-(u'CancelDlg', u'Icon', u'Icon', 15, 15, 24, 24, 5242881, None, u'[InfoIcon]', None, u'Information icon|'),
-(u'CancelDlg', u'No', u'PushButton', 132, 57, 56, 17, 3, None, u'[ButtonText_No]', u'Yes', None),
-(u'CancelDlg', u'Yes', u'PushButton', 72, 57, 56, 17, 3, None, u'[ButtonText_Yes]', u'No', None),
-(u'CustomizeDlg', u'Text', u'Text', 25, 55, 320, 20, 3, None, u'Click on the icons in the tree below to change the way features will be installed.', None, None),
-(u'CustomizeDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'Tree', None),
-(u'CustomizeDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'CustomizeDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'CustomizeDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'BannerBitmap', None),
-(u'CustomizeDlg', u'Description', u'Text', 25, 23, 280, 15, 196611, None, u'Select the way you want features to be installed.', None, None),
-(u'CustomizeDlg', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]Custom Setup', None, None),
-(u'CustomizeDlg', u'Back', u'PushButton', 180, 243, 56, 17, 3, None, u'[ButtonText_Back]', u'Next', None),
-(u'CustomizeDlg', u'Next', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Next]', u'Cancel', None),
-(u'CustomizeDlg', u'Browse', u'PushButton', 304, 200, 56, 17, 3, None, u'[ButtonText_Browse]', u'Reset', None),
-(u'CustomizeDlg', u'Tree', u'SelectionTree', 25, 85, 175, 95, 7, u'_BrowseProperty', u'Tree of selections', u'Browse', None),
-(u'CustomizeDlg', u'Box', u'GroupBox', 210, 81, 140, 98, 1, None, None, None, None),
-(u'CustomizeDlg', u'Reset', u'PushButton', 42, 243, 56, 17, 3, None, u'[ButtonText_Reset]', u'DiskCost', None),
-(u'CustomizeDlg', u'DiskCost', u'PushButton', 111, 243, 56, 17, 3, None, u'Disk &Usage', u'Back', None),
-(u'CustomizeDlg', u'ItemDescription', u'Text', 215, 90, 131, 30, 3, None, u'Multiline description of the currently selected item.', None, None),
-(u'CustomizeDlg', u'ItemSize', u'Text', 215, 130, 131, 45, 3, None, u'The size of the currently selected item.', None, None),
-(u'CustomizeDlg', u'Location', u'Text', 75, 200, 215, 20, 3, None, u"<The selection's path>", None, None),
-(u'CustomizeDlg', u'LocationLabel', u'Text', 25, 200, 50, 10, 3, None, u'Location:', None, None),
-(u'DiskCostDlg', u'Text', u'Text', 20, 53, 330, 40, 3, None, u'The highlighted volumes (if any) do not have enough disk space available for the currently selected features.  You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).', None, None),
-(u'DiskCostDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'OK', None),
-(u'DiskCostDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'DiskCostDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'DiskCostDlg', u'Description', u'Text', 20, 20, 280, 20, 196611, None, u'The disk space required for the installation of the selected features.', None, None),
-(u'DiskCostDlg', u'OK', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_OK]', u'BannerBitmap', None),
-(u'DiskCostDlg', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]Disk Space Requirements', None, None),
-(u'DiskCostDlg', u'VolumeList', u'VolumeCostList', 20, 100, 330, 120, 393223, None, u'{120}{70}{70}{70}{70}', None, None),
-(u'ErrorDlg', u'Y', u'PushButton', 100, 80, 56, 17, 3, None, u'[ButtonText_Yes]', None, None),
-(u'ErrorDlg', u'A', u'PushButton', 100, 80, 56, 17, 3, None, u'[ButtonText_Cancel]', None, None),
-(u'ErrorDlg', u'C', u'PushButton', 100, 80, 56, 17, 3, None, u'[ButtonText_Cancel]', None, None),
-(u'ErrorDlg', u'ErrorIcon', u'Icon', 15, 15, 24, 24, 5242881, None, u'[InfoIcon]', None, u'Information icon|'),
-(u'ErrorDlg', u'ErrorText', u'Text', 48, 15, 205, 60, 3, None, u'Information text', None, None),
-(u'ErrorDlg', u'I', u'PushButton', 100, 80, 56, 17, 3, None, u'[ButtonText_Ignore]', None, None),
-(u'ErrorDlg', u'N', u'PushButton', 100, 80, 56, 17, 3, None, u'[ButtonText_No]', None, None),
-(u'ErrorDlg', u'O', u'PushButton', 100, 80, 56, 17, 3, None, u'[ButtonText_OK]', None, None),
-(u'ErrorDlg', u'R', u'PushButton', 100, 80, 56, 17, 3, None, u'[ButtonText_Retry]', None, None),
-(u'FilesInUse', u'Text', u'Text', 20, 55, 330, 30, 3, None, u'The following applications are using files that need to be updated by this setup. Close these applications and then click Retry to continue the installation or Cancel to exit it.', None, None),
-(u'FilesInUse', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'Retry', None),
-(u'FilesInUse', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'FilesInUse', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'FilesInUse', u'Description', u'Text', 20, 23, 280, 20, 196611, None, u'Some files that need to be updated are currently in use.', None, None),
-(u'FilesInUse', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]Files in Use', None, None),
-(u'FilesInUse', u'Retry', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Retry]', u'Ignore', None),
-(u'FilesInUse', u'Exit', u'PushButton', 166, 243, 56, 17, 3, None, u'[ButtonText_Exit]', u'BannerBitmap', None),
-(u'FilesInUse', u'Ignore', u'PushButton', 235, 243, 56, 17, 3, None, u'[ButtonText_Ignore]', u'Exit', None),
-(u'FilesInUse', u'List', u'ListBox', 20, 87, 330, 130, 7, u'FileInUseProcess', None, None, None),
-(u'LicenseAgreementDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'AgreementText', None),
-(u'LicenseAgreementDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'LicenseAgreementDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'LicenseAgreementDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'BannerBitmap', None),
-(u'LicenseAgreementDlg', u'Description', u'Text', 25, 23, 280, 15, 196611, None, u'Please read the following license agreement carefully', None, None),
-(u'LicenseAgreementDlg', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]End-User License Agreement', None, None),
-(u'LicenseAgreementDlg', u'Back', u'PushButton', 180, 243, 56, 17, 3, None, u'[ButtonText_Back]', u'Next', None),
-(u'LicenseAgreementDlg', u'Next', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Next]', u'Cancel', None),
-(u'LicenseAgreementDlg', u'AgreementText', u'ScrollableText', 20, 60, 330, 120, 7, None, u'{\\rtf1\\ansi\\ansicpg1252\\deff0\\deftab720{\\fonttbl{\\f0\\froman\\fprq2 Times New Roman;}}{\\colortbl\\red0\\green0\\blue0;} \\deflang1033\\horzdoc{\\*\\fchars }{\\*\\lchars }\\pard\\plain\\f0\\fs20 <Your license agreement should go here.>\\par }', u'Buttons', None),
-(u'LicenseAgreementDlg', u'Buttons', u'RadioButtonGroup', 20, 187, 330, 40, 3, u'IAgree', None, u'Back', None),
-(u'MaintenanceTypeDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'ChangeLabel', None),
-(u'MaintenanceTypeDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'MaintenanceTypeDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'MaintenanceTypeDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'BannerBitmap', None),
-(u'MaintenanceTypeDlg', u'Description', u'Text', 25, 23, 280, 20, 196611, None, u'Select the operation you wish to perform.', None, None),
-(u'MaintenanceTypeDlg', u'Title', u'Text', 15, 6, 240, 15, 196611, None, u'[DlgTitleFont]Modify, Repair or Remove installation', None, None),
-(u'MaintenanceTypeDlg', u'Back', u'PushButton', 180, 243, 56, 17, 3, None, u'[ButtonText_Back]', u'Next', None),
-(u'MaintenanceTypeDlg', u'Next', u'PushButton', 236, 243, 56, 17, 1, None, u'[ButtonText_Next]', u'Cancel', None),
-(u'MaintenanceTypeDlg', u'ChangeLabel', u'Text', 105, 65, 100, 10, 3, None, u'[DlgTitleFont]&Modify', u'ChangeButton', None),
-(u'MaintenanceTypeDlg', u'ChangeButton', u'PushButton', 50, 65, 38, 38, 5767171, None, u'[CustomSetupIcon]', u'RepairLabel', u'Modify Installation|'),
-(u'MaintenanceTypeDlg', u'RepairLabel', u'Text', 105, 114, 100, 10, 3, None, u'[DlgTitleFont]Re&pair', u'RepairButton', None),
-(u'MaintenanceTypeDlg', u'ChangeText', u'Text', 105, 78, 230, 20, 3, None, u'Allows users to change the way features are installed.', None, None),
-(u'MaintenanceTypeDlg', u'RemoveButton', u'PushButton', 50, 163, 38, 38, 5767171, None, u'[RemoveIcon]', u'Back', u'Remove Installation|'),
-(u'MaintenanceTypeDlg', u'RemoveLabel', u'Text', 105, 163, 100, 10, 3, None, u'[DlgTitleFont]&Remove', u'RemoveButton', None),
-(u'MaintenanceTypeDlg', u'RemoveText', u'Text', 105, 176, 230, 20, 3, None, u'Removes [ProductName] from your computer.', None, None),
-(u'MaintenanceTypeDlg', u'RepairButton', u'PushButton', 50, 114, 38, 38, 5767171, None, u'[RepairIcon]', u'RemoveLabel', u'Repair Installation|'),
-(u'MaintenanceTypeDlg', u'RepairText', u'Text', 105, 127, 230, 30, 3, None, u'Repairs errors in the most recent installation state - fixes missing or corrupt files, shortcuts and registry entries.', None, None),
-(u'MaintenanceWelcomeDlg', u'Bitmap', u'Bitmap', 0, 0, 370, 234, 1, None, u'[DialogBitmap]', u'Back', None),
-(u'MaintenanceWelcomeDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'MaintenanceWelcomeDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'Bitmap', None),
-(u'MaintenanceWelcomeDlg', u'Description', u'Text', 135, 70, 220, 60, 196611, None, u'The [Wizard] will allow you to change the way [ProductName] features are installed on your computer or even to remove [ProductName] from your computer.  Click Next to continue or Cancel to exit the [Wizard].', None, None),
-(u'MaintenanceWelcomeDlg', u'Title', u'Text', 135, 20, 220, 60, 196611, None, u'{\\VerdanaBold13}Welcome to the [ProductName] [Wizard]', None, None),
-(u'MaintenanceWelcomeDlg', u'Back', u'PushButton', 180, 243, 56, 17, 1, None, u'[ButtonText_Back]', u'Next', None),
-(u'MaintenanceWelcomeDlg', u'Next', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Next]', u'Cancel', None),
-(u'OutOfDiskDlg', u'Text', u'Text', 20, 53, 330, 40, 3, None, u'The highlighted volumes do not have enough disk space available for the currently selected features.  You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).', None, None),
-(u'OutOfDiskDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'OK', None),
-(u'OutOfDiskDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'OutOfDiskDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'OutOfDiskDlg', u'Description', u'Text', 20, 20, 280, 20, 196611, None, u'Disk space required for the installation exceeds available disk space.', None, None),
-(u'OutOfDiskDlg', u'OK', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_OK]', u'BannerBitmap', None),
-(u'OutOfDiskDlg', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]Out of Disk Space', None, None),
-(u'OutOfDiskDlg', u'VolumeList', u'VolumeCostList', 20, 100, 330, 120, 393223, None, u'{120}{70}{70}{70}{70}', None, None),
-(u'OutOfRbDiskDlg', u'Text', u'Text', 20, 53, 330, 40, 3, None, u'The highlighted volumes do not have enough disk space available for the currently selected features.  You can either remove some files from the highlighted volumes, or choose to install less features onto local drive(s), or select different destination drive(s).', None, None),
-(u'OutOfRbDiskDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'No', None),
-(u'OutOfRbDiskDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'OutOfRbDiskDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'OutOfRbDiskDlg', u'Description', u'Text', 20, 20, 280, 20, 196611, None, u'Disk space required for the installation exceeds available disk space.', None, None),
-(u'OutOfRbDiskDlg', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]Out of Disk Space', None, None),
-(u'OutOfRbDiskDlg', u'No', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_No]', u'Yes', None),
-(u'OutOfRbDiskDlg', u'Yes', u'PushButton', 240, 243, 56, 17, 3, None, u'[ButtonText_Yes]', u'BannerBitmap', None),
-(u'OutOfRbDiskDlg', u'VolumeList', u'VolumeCostList', 20, 140, 330, 80, 4587527, None, u'{120}{70}{70}{70}{70}', None, None),
-(u'OutOfRbDiskDlg', u'Text2', u'Text', 20, 94, 330, 40, 3, None, u"Alternatively, you may choose to disable the installer's rollback functionality.  This allows the installer to restore your computer's original state should the installation be interrupted in any way.  Click Yes if you wish to take the risk to disable rollback.", None, None),
-(u'ResumeDlg', u'Bitmap', u'Bitmap', 0, 0, 370, 234, 1, None, u'[DialogBitmap]', u'Back', None),
-(u'ResumeDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'ResumeDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'Bitmap', None),
-(u'ResumeDlg', u'Description', u'Text', 135, 70, 220, 30, 196611, None, u'The [Wizard] will complete the installation of [ProductName] on your computer.  Click Install to continue or Cancel to exit the [Wizard].', None, None),
-(u'ResumeDlg', u'Title', u'Text', 135, 20, 220, 60, 196611, None, u'{\\VerdanaBold13}Resuming the [ProductName] [Wizard]', None, None),
-(u'ResumeDlg', u'Back', u'PushButton', 180, 243, 56, 17, 1, None, u'[ButtonText_Back]', u'Install', None),
-(u'ResumeDlg', u'Install', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Install]', u'Cancel', None),
-(u'SetupTypeDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'TypicalLabel', None),
-(u'SetupTypeDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'SetupTypeDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'SetupTypeDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'BannerBitmap', None),
-(u'SetupTypeDlg', u'Description', u'Text', 25, 23, 280, 15, 196611, None, u'Choose the setup type that best suits your needs', None, None),
-(u'SetupTypeDlg', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]Choose Setup Type', None, None),
-(u'SetupTypeDlg', u'Back', u'PushButton', 180, 243, 56, 17, 3, None, u'[ButtonText_Back]', u'Next', None),
-(u'SetupTypeDlg', u'Next', u'PushButton', 236, 243, 56, 17, 1, None, u'[ButtonText_Next]', u'Cancel', None),
-(u'SetupTypeDlg', u'TypicalLabel', u'Text', 105, 65, 100, 10, 3, None, u'[DlgTitleFont]&Typical', u'TypicalButton', None),
-(u'SetupTypeDlg', u'CompleteButton', u'PushButton', 50, 171, 38, 38, 5767171, None, u'[CompleteSetupIcon]', u'Back', u'Complete Installation|'),
-(u'SetupTypeDlg', u'CompleteLabel', u'Text', 105, 171, 100, 10, 3, None, u'[DlgTitleFont]C&omplete', u'CompleteButton', None),
-(u'SetupTypeDlg', u'CompleteText', u'Text', 105, 184, 230, 20, 3, None, u'All program features will be installed.  (Requires most disk space)', None, None),
-(u'SetupTypeDlg', u'CustomButton', u'PushButton', 50, 118, 38, 38, 5767171, None, u'[CustomSetupIcon]', u'CompleteLabel', u'Custom Installation|'),
-(u'SetupTypeDlg', u'CustomLabel', u'Text', 105, 118, 100, 10, 3, None, u'[DlgTitleFont]C&ustom', u'CustomButton', None),
-(u'SetupTypeDlg', u'CustomText', u'Text', 105, 131, 230, 30, 3, None, u'Allows users to choose which program features will be installed and where they will be installed. Recommended for advanced users.', None, None),
-(u'SetupTypeDlg', u'TypicalButton', u'PushButton', 50, 65, 38, 38, 5767171, None, u'[InstallerIcon]', u'CustomLabel', u'Typical Installation|'),
-(u'SetupTypeDlg', u'TypicalText', u'Text', 105, 78, 230, 20, 3, None, u'Installs the most common program features. Recommended for most users.', None, None),
-(u'UserRegistrationDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'NameLabel', None),
-(u'UserRegistrationDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'UserRegistrationDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'UserRegistrationDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'BannerBitmap', None),
-(u'UserRegistrationDlg', u'Description', u'Text', 25, 23, 280, 15, 196611, None, u'Please enter your customer information', None, None),
-(u'UserRegistrationDlg', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]Customer Information', None, None),
-(u'UserRegistrationDlg', u'Back', u'PushButton', 180, 243, 56, 17, 3, None, u'[ButtonText_Back]', u'Next', None),
-(u'UserRegistrationDlg', u'Next', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Next]', u'Cancel', None),
-(u'UserRegistrationDlg', u'OrganizationLabel', u'Text', 45, 110, 100, 15, 3, None, u'&Organization:', u'OrganizationEdit', None),
-(u'UserRegistrationDlg', u'CDKeyEdit', u'MaskedEdit', 45, 159, 250, 16, 3, u'PIDKEY', u'[PIDTemplate]', u'Back', None),
-(u'UserRegistrationDlg', u'CDKeyLabel', u'Text', 45, 147, 50, 10, 3, None, u'CD &Key:', u'CDKeyEdit', None),
-(u'UserRegistrationDlg', u'OrganizationEdit', u'Edit', 45, 122, 220, 18, 3, u'COMPANYNAME', u'{80}', u'CDKeyLabel', None),
-(u'UserRegistrationDlg', u'NameLabel', u'Text', 45, 73, 100, 15, 3, None, u'&User Name:', u'NameEdit', None),
-(u'UserRegistrationDlg', u'NameEdit', u'Edit', 45, 85, 220, 18, 3, u'USERNAME', u'{80}', u'OrganizationLabel', None),
-(u'VerifyReadyDlg', u'Text', u'Text', 25, 70, 320, 20, 3, None, u'Click Install to begin the installation.  If you want to review or change any of your installation settings, click Back.  Click Cancel to exit the wizard.', None, None),
-(u'VerifyReadyDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'Back', None),
-(u'VerifyReadyDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'VerifyReadyDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'VerifyReadyDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'BannerBitmap', None),
-(u'VerifyReadyDlg', u'Description', u'Text', 25, 23, 280, 15, 196611, None, u'The [Wizard] is ready to begin the [InstallMode] installation', None, None),
-(u'VerifyReadyDlg', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]Ready to Install', None, None),
-(u'VerifyReadyDlg', u'Back', u'PushButton', 180, 243, 56, 17, 3, None, u'[ButtonText_Back]', u'Install', None),
-(u'VerifyReadyDlg', u'Install', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Install]', u'Cancel', None),
-(u'VerifyRemoveDlg', u'Text', u'Text', 25, 70, 320, 30, 3, None, u'Click Remove to remove [ProductName] from your computer.  If you want to review or change any of your installation settings, click Back.  Click Cancel to exit the wizard.', None, None),
-(u'VerifyRemoveDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'Back', None),
-(u'VerifyRemoveDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'VerifyRemoveDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'VerifyRemoveDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'BannerBitmap', None),
-(u'VerifyRemoveDlg', u'Description', u'Text', 25, 23, 280, 15, 196611, None, u'You have chosen to remove the program from your computer.', None, None),
-(u'VerifyRemoveDlg', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]Remove [ProductName]', None, None),
-(u'VerifyRemoveDlg', u'Back', u'PushButton', 180, 243, 56, 17, 3, None, u'[ButtonText_Back]', u'Remove', None),
-(u'VerifyRemoveDlg', u'Remove', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Remove]', u'Cancel', None),
-(u'VerifyRepairDlg', u'Text', u'Text', 25, 70, 320, 30, 3, None, u'Click Repair to repair the installation of [ProductName].  If you want to review or change any of your installation settings, click Back.  Click Cancel to exit the wizard.', None, None),
-(u'VerifyRepairDlg', u'BannerBitmap', u'Bitmap', 0, 0, 374, 44, 1, None, u'[BannerBitmap]', u'Back', None),
-(u'VerifyRepairDlg', u'BannerLine', u'Line', 0, 44, 374, 0, 1, None, None, None, None),
-(u'VerifyRepairDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'VerifyRepairDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'BannerBitmap', None),
-(u'VerifyRepairDlg', u'Description', u'Text', 25, 23, 280, 15, 196611, None, u'The [Wizard] is ready to begin the repair of [ProductName].', None, None),
-(u'VerifyRepairDlg', u'Title', u'Text', 15, 6, 200, 15, 196611, None, u'[DlgTitleFont]Repair [ProductName]', None, None),
-(u'VerifyRepairDlg', u'Back', u'PushButton', 180, 243, 56, 17, 3, None, u'[ButtonText_Back]', u'Repair', None),
-(u'VerifyRepairDlg', u'Repair', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Repair]', u'Cancel', None),
-(u'WaitForCostingDlg', u'Text', u'Text', 48, 15, 194, 30, 3, None, u'Please wait while the installer finishes determining your disk space requirements.', None, None),
-(u'WaitForCostingDlg', u'Icon', u'Icon', 15, 15, 24, 24, 5242881, None, u'[ExclamationIcon]', None, u'Exclamation icon|'),
-(u'WaitForCostingDlg', u'Return', u'PushButton', 102, 57, 56, 17, 3, None, u'[ButtonText_Return]', None, None),
-(u'WelcomeDlg', u'Bitmap', u'Bitmap', 0, 0, 370, 234, 1, None, u'[DialogBitmap]', u'Back', None),
-(u'WelcomeDlg', u'BottomLine', u'Line', 0, 234, 374, 0, 1, None, None, None, None),
-(u'WelcomeDlg', u'Cancel', u'PushButton', 304, 243, 56, 17, 3, None, u'[ButtonText_Cancel]', u'Bitmap', None),
-(u'WelcomeDlg', u'Description', u'Text', 135, 70, 220, 30, 196611, None, u'The [Wizard] will install [ProductName] on your computer.  Click Next to continue or Cancel to exit the [Wizard].', None, None),
-(u'WelcomeDlg', u'Title', u'Text', 135, 20, 220, 60, 196611, None, u'{\\VerdanaBold13}Welcome to the [ProductName] [Wizard]', None, None),
-(u'WelcomeDlg', u'Back', u'PushButton', 180, 243, 56, 17, 1, None, u'[ButtonText_Back]', u'Next', None),
-(u'WelcomeDlg', u'Next', u'PushButton', 236, 243, 56, 17, 3, None, u'[ButtonText_Next]', u'Cancel', None),
-]
-
-ListBox = [
-]
-
-ActionText = [
-(u'InstallValidate', u'Validating install', None),
-(u'InstallFiles', u'Copying new files', u'File: [1],  Directory: [9],  Size: [6]'),
-(u'InstallAdminPackage', u'Copying network install files', u'File: [1], Directory: [9], Size: [6]'),
-(u'FileCost', u'Computing space requirements', None),
-(u'CostInitialize', u'Computing space requirements', None),
-(u'CostFinalize', u'Computing space requirements', None),
-(u'CreateShortcuts', u'Creating shortcuts', u'Shortcut: [1]'),
-(u'PublishComponents', u'Publishing Qualified Components', u'Component ID: [1], Qualifier: [2]'),
-(u'PublishFeatures', u'Publishing Product Features', u'Feature: [1]'),
-(u'PublishProduct', u'Publishing product information', None),
-(u'RegisterClassInfo', u'Registering Class servers', u'Class Id: [1]'),
-(u'RegisterExtensionInfo', u'Registering extension servers', u'Extension: [1]'),
-(u'RegisterMIMEInfo', u'Registering MIME info', u'MIME Content Type: [1], Extension: [2]'),
-(u'RegisterProgIdInfo', u'Registering program identifiers', u'ProgId: [1]'),
-(u'AllocateRegistrySpace', u'Allocating registry space', u'Free space: [1]'),
-(u'AppSearch', u'Searching for installed applications', u'Property: [1], Signature: [2]'),
-(u'BindImage', u'Binding executables', u'File: [1]'),
-(u'CCPSearch', u'Searching for qualifying products', None),
-(u'CreateFolders', u'Creating folders', u'Folder: [1]'),
-(u'DeleteServices', u'Deleting services', u'Service: [1]'),
-(u'DuplicateFiles', u'Creating duplicate files', u'File: [1],  Directory: [9],  Size: [6]'),
-(u'FindRelatedProducts', u'Searching for related applications', u'Found application: [1]'),
-(u'InstallODBC', u'Installing ODBC components', None),
-(u'InstallServices', u'Installing new services', u'Service: [2]'),
-(u'LaunchConditions', u'Evaluating launch conditions', None),
-(u'MigrateFeatureStates', u'Migrating feature states from related applications', u'Application: [1]'),
-(u'MoveFiles', u'Moving files', u'File: [1],  Directory: [9],  Size: [6]'),
-(u'PatchFiles', u'Patching files', u'File: [1],  Directory: [2],  Size: [3]'),
-(u'ProcessComponents', u'Updating component registration', None),
-(u'RegisterComPlus', u'Registering COM+ Applications and Components', u'AppId: [1]{{, AppType: [2], Users: [3], RSN: [4]}}'),
-(u'RegisterFonts', u'Registering fonts', u'Font: [1]'),
-(u'RegisterProduct', u'Registering product', u'[1]'),
-(u'RegisterTypeLibraries', u'Registering type libraries', u'LibID: [1]'),
-(u'RegisterUser', u'Registering user', u'[1]'),
-(u'RemoveDuplicateFiles', u'Removing duplicated files', u'File: [1], Directory: [9]'),
-(u'RemoveEnvironmentStrings', u'Updating environment strings', u'Name: [1], Value: [2], Action [3]'),
-(u'RemoveExistingProducts', u'Removing applications', u'Application: [1], Command line: [2]'),
-(u'RemoveFiles', u'Removing files', u'File: [1], Directory: [9]'),
-(u'RemoveFolders', u'Removing folders', u'Folder: [1]'),
-(u'RemoveIniValues', u'Removing INI files entries', u'File: [1],  Section: [2],  Key: [3], Value: [4]'),
-(u'RemoveODBC', u'Removing ODBC components', None),
-(u'RemoveRegistryValues', u'Removing system registry values', u'Key: [1], Name: [2]'),
-(u'RemoveShortcuts', u'Removing shortcuts', u'Shortcut: [1]'),
-(u'RMCCPSearch', u'Searching for qualifying products', None),
-(u'SelfRegModules', u'Registering modules', u'File: [1], Folder: [2]'),
-(u'SelfUnregModules', u'Unregistering modules', u'File: [1], Folder: [2]'),
-(u'SetODBCFolders', u'Initializing ODBC directories', None),
-(u'StartServices', u'Starting services', u'Service: [1]'),
-(u'StopServices', u'Stopping services', u'Service: [1]'),
-(u'UnpublishComponents', u'Unpublishing Qualified Components', u'Component ID: [1], Qualifier: [2]'),
-(u'UnpublishFeatures', u'Unpublishing Product Features', u'Feature: [1]'),
-(u'UnregisterClassInfo', u'Unregister Class servers', u'Class Id: [1]'),
-(u'UnregisterComPlus', u'Unregistering COM+ Applications and Components', u'AppId: [1]{{, AppType: [2]}}'),
-(u'UnregisterExtensionInfo', u'Unregistering extension servers', u'Extension: [1]'),
-(u'UnregisterFonts', u'Unregistering fonts', u'Font: [1]'),
-(u'UnregisterMIMEInfo', u'Unregistering MIME info', u'MIME Content Type: [1], Extension: [2]'),
-(u'UnregisterProgIdInfo', u'Unregistering program identifiers', u'ProgId: [1]'),
-(u'UnregisterTypeLibraries', u'Unregistering type libraries', u'LibID: [1]'),
-(u'WriteEnvironmentStrings', u'Updating environment strings', u'Name: [1], Value: [2], Action [3]'),
-(u'WriteIniValues', u'Writing INI files values', u'File: [1],  Section: [2],  Key: [3], Value: [4]'),
-(u'WriteRegistryValues', u'Writing system registry values', u'Key: [1], Name: [2], Value: [3]'),
-(u'Advertise', u'Advertising application', None),
-(u'GenerateScript', u'Generating script operations for action:', u'[1]'),
-(u'InstallSFPCatalogFile', u'Installing system catalog', u'File: [1],  Dependencies: [2]'),
-(u'MsiPublishAssemblies', u'Publishing assembly information', u'Application Context:[1], Assembly Name:[2]'),
-(u'MsiUnpublishAssemblies', u'Unpublishing assembly information', u'Application Context:[1], Assembly Name:[2]'),
-(u'Rollback', u'Rolling back action:', u'[1]'),
-(u'RollbackCleanup', u'Removing backup files', u'File: [1]'),
-(u'UnmoveFiles', u'Removing moved files', u'File: [1], Directory: [9]'),
-(u'UnpublishProduct', u'Unpublishing product information', None),
-]
-
-ControlCondition = [
-(u'CustomizeDlg', u'Browse', u'Hide', u'Installed'),
-(u'CustomizeDlg', u'Location', u'Hide', u'Installed'),
-(u'CustomizeDlg', u'LocationLabel', u'Hide', u'Installed'),
-(u'LicenseAgreementDlg', u'Next', u'Disable', u'IAgree <> "Yes"'),
-(u'LicenseAgreementDlg', u'Next', u'Enable', u'IAgree = "Yes"'),
-]
-
-ControlEvent = [
-(u'AdminWelcomeDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'AdminWelcomeDlg', u'Next', u'NewDialog', u'AdminRegistrationDlg', u'1', 2),
-(u'AdminWelcomeDlg', u'Next', u'[InstallMode]', u'Server Image', u'1', 1),
-(u'ExitDialog', u'Finish', u'EndDialog', u'Return', u'1', None),
-(u'FatalError', u'Finish', u'EndDialog', u'Exit', u'1', None),
-(u'PrepareDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'ProgressDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'UserExit', u'Finish', u'EndDialog', u'Exit', u'1', None),
-(u'AdminBrowseDlg', u'Up', u'DirectoryListUp', u'0', u'1', None),
-(u'AdminBrowseDlg', u'Cancel', u'Reset', u'0', u'1', 1),
-(u'AdminBrowseDlg', u'Cancel', u'EndDialog', u'Return', u'1', 2),
-(u'AdminBrowseDlg', u'NewFolder', u'DirectoryListNew', u'0', u'1', None),
-(u'AdminBrowseDlg', u'OK', u'EndDialog', u'Return', u'1', 2),
-(u'AdminBrowseDlg', u'OK', u'SetTargetPath', u'TARGETDIR', u'1', 1),
-(u'AdminInstallPointDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'AdminInstallPointDlg', u'Back', u'NewDialog', u'AdminRegistrationDlg', u'1', None),
-(u'AdminInstallPointDlg', u'Next', u'SetTargetPath', u'TARGETDIR', u'1', 1),
-(u'AdminInstallPointDlg', u'Next', u'NewDialog', u'VerifyReadyDlg', u'1', 2),
-(u'AdminInstallPointDlg', u'Browse', u'SpawnDialog', u'AdminBrowseDlg', u'1', None),
-(u'AdminRegistrationDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'AdminRegistrationDlg', u'Back', u'NewDialog', u'AdminWelcomeDlg', u'1', None),
-(u'AdminRegistrationDlg', u'Next', u'NewDialog', u'AdminInstallPointDlg', u'ProductID', 2),
-(u'AdminRegistrationDlg', u'Next', u'ValidateProductID', u'0', u'0', 1),
-(u'BrowseDlg', u'Up', u'DirectoryListUp', u'0', u'1', None),
-(u'BrowseDlg', u'Cancel', u'Reset', u'0', u'1', 1),
-(u'BrowseDlg', u'Cancel', u'EndDialog', u'Return', u'1', 2),
-(u'BrowseDlg', u'NewFolder', u'DirectoryListNew', u'0', u'1', None),
-(u'BrowseDlg', u'OK', u'EndDialog', u'Return', u'1', 2),
-(u'BrowseDlg', u'OK', u'SetTargetPath', u'[_BrowseProperty]', u'1', 1),
-(u'CancelDlg', u'No', u'EndDialog', u'Return', u'1', None),
-(u'CancelDlg', u'Yes', u'EndDialog', u'Exit', u'1', None),
-(u'CustomizeDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'CustomizeDlg', u'Back', u'NewDialog', u'MaintenanceTypeDlg', u'InstallMode = "Change"', None),
-(u'CustomizeDlg', u'Back', u'NewDialog', u'SetupTypeDlg', u'InstallMode = "Custom"', None),
-(u'CustomizeDlg', u'Next', u'NewDialog', u'VerifyReadyDlg', u'1', None),
-(u'CustomizeDlg', u'Browse', u'SelectionBrowse', u'BrowseDlg', u'1', None),
-(u'CustomizeDlg', u'Reset', u'Reset', u'0', u'1', None),
-(u'CustomizeDlg', u'DiskCost', u'SpawnDialog', u'DiskCostDlg', u'1', 2),
-(u'DiskCostDlg', u'OK', u'EndDialog', u'Return', u'1', None),
-(u'ErrorDlg', u'Y', u'EndDialog', u'ErrorYes', u'1', None),
-(u'ErrorDlg', u'A', u'EndDialog', u'ErrorAbort', u'1', None),
-(u'ErrorDlg', u'C', u'EndDialog', u'ErrorCancel', u'1', None),
-(u'ErrorDlg', u'I', u'EndDialog', u'ErrorIgnore', u'1', None),
-(u'ErrorDlg', u'N', u'EndDialog', u'ErrorNo', u'1', None),
-(u'ErrorDlg', u'O', u'EndDialog', u'ErrorOk', u'1', None),
-(u'ErrorDlg', u'R', u'EndDialog', u'ErrorRetry', u'1', None),
-(u'FilesInUse', u'Retry', u'EndDialog', u'Retry', u'1', None),
-(u'FilesInUse', u'Exit', u'EndDialog', u'Exit', u'1', None),
-(u'FilesInUse', u'Ignore', u'EndDialog', u'Ignore', u'1', None),
-(u'LicenseAgreementDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'LicenseAgreementDlg', u'Back', u'NewDialog', u'WelcomeDlg', u'1', None),
-(u'LicenseAgreementDlg', u'Next', u'NewDialog', u'SetupTypeDlg', u'IAgree = "Yes" AND ShowUserRegistrationDlg <> 1', 3),
-(u'LicenseAgreementDlg', u'Next', u'NewDialog', u'UserRegistrationDlg', u'IAgree = "Yes" AND ShowUserRegistrationDlg = 1', 1),
-(u'LicenseAgreementDlg', u'Next', u'SpawnWaitDialog', u'WaitForCostingDlg', u'CostingComplete = 1', 2),
-(u'MaintenanceTypeDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'MaintenanceTypeDlg', u'Back', u'NewDialog', u'MaintenanceWelcomeDlg', u'1', None),
-(u'MaintenanceTypeDlg', u'ChangeButton', u'NewDialog', u'CustomizeDlg', u'1', 4),
-(u'MaintenanceTypeDlg', u'ChangeButton', u'[InstallMode]', u'Change', u'1', 1),
-(u'MaintenanceTypeDlg', u'ChangeButton', u'[Progress1]', u'Changing', u'1', 2),
-(u'MaintenanceTypeDlg', u'ChangeButton', u'[Progress2]', u'changes', u'1', 3),
-(u'MaintenanceTypeDlg', u'RemoveButton', u'NewDialog', u'VerifyRemoveDlg', u'1', 4),
-(u'MaintenanceTypeDlg', u'RemoveButton', u'[InstallMode]', u'Remove', u'1', 1),
-(u'MaintenanceTypeDlg', u'RemoveButton', u'[Progress1]', u'Removing', u'1', 2),
-(u'MaintenanceTypeDlg', u'RemoveButton', u'[Progress2]', u'removes', u'1', 3),
-(u'MaintenanceTypeDlg', u'RepairButton', u'NewDialog', u'VerifyRepairDlg', u'1', 4),
-(u'MaintenanceTypeDlg', u'RepairButton', u'[InstallMode]', u'Repair', u'1', 1),
-(u'MaintenanceTypeDlg', u'RepairButton', u'[Progress1]', u'Repairing', u'1', 2),
-(u'MaintenanceTypeDlg', u'RepairButton', u'[Progress2]', u'repairs', u'1', 3),
-(u'MaintenanceWelcomeDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'MaintenanceWelcomeDlg', u'Next', u'NewDialog', u'MaintenanceTypeDlg', u'1', 2),
-(u'MaintenanceWelcomeDlg', u'Next', u'SpawnWaitDialog', u'WaitForCostingDlg', u'CostingComplete = 1', 1),
-(u'OutOfDiskDlg', u'OK', u'EndDialog', u'Return', u'1', None),
-(u'OutOfRbDiskDlg', u'No', u'EndDialog', u'Return', u'1', None),
-(u'OutOfRbDiskDlg', u'Yes', u'EndDialog', u'Return', u'1', 2),
-(u'OutOfRbDiskDlg', u'Yes', u'EnableRollback', u'False', u'1', 1),
-(u'ResumeDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'ResumeDlg', u'Install', u'EndDialog', u'Return', u'OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"', 4),
-(u'ResumeDlg', u'Install', u'EndDialog', u'Return', u'OutOfDiskSpace <> 1', 2),
-(u'ResumeDlg', u'Install', u'SpawnDialog', u'OutOfDiskDlg', u'(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")', 6),
-(u'ResumeDlg', u'Install', u'SpawnDialog', u'OutOfRbDiskDlg', u'OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)', 3),
-(u'ResumeDlg', u'Install', u'SpawnWaitDialog', u'WaitForCostingDlg', u'CostingComplete = 1', 1),
-(u'ResumeDlg', u'Install', u'EnableRollback', u'False', u'OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"', 5),
-(u'SetupTypeDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'SetupTypeDlg', u'Back', u'NewDialog', u'LicenseAgreementDlg', u'ShowUserRegistrationDlg <> 1', None),
-(u'SetupTypeDlg', u'Back', u'NewDialog', u'UserRegistrationDlg', u'ShowUserRegistrationDlg = 1', None),
-(u'SetupTypeDlg', u'CompleteButton', u'NewDialog', u'VerifyReadyDlg', u'1', 3),
-(u'SetupTypeDlg', u'CompleteButton', u'[InstallMode]', u'Complete', u'1', 1),
-(u'SetupTypeDlg', u'CompleteButton', u'SetInstallLevel', u'1000', u'1', 2),
-(u'SetupTypeDlg', u'CustomButton', u'NewDialog', u'CustomizeDlg', u'1', 2),
-(u'SetupTypeDlg', u'CustomButton', u'[InstallMode]', u'Custom', u'1', 1),
-(u'SetupTypeDlg', u'TypicalButton', u'NewDialog', u'VerifyReadyDlg', u'1', 3),
-(u'SetupTypeDlg', u'TypicalButton', u'[InstallMode]', u'Typical', u'1', 1),
-(u'SetupTypeDlg', u'TypicalButton', u'SetInstallLevel', u'3', u'1', 2),
-(u'UserRegistrationDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'UserRegistrationDlg', u'Back', u'NewDialog', u'LicenseAgreementDlg', u'1', None),
-(u'UserRegistrationDlg', u'Next', u'NewDialog', u'SetupTypeDlg', u'ProductID', 3),
-(u'UserRegistrationDlg', u'Next', u'ValidateProductID', u'0', u'0', 1),
-(u'UserRegistrationDlg', u'Next', u'SpawnWaitDialog', u'WaitForCostingDlg', u'CostingComplete = 1', 2),
-(u'VerifyReadyDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'VerifyReadyDlg', u'Back', u'NewDialog', u'AdminInstallPointDlg', u'InstallMode = "Server Image"', None),
-(u'VerifyReadyDlg', u'Back', u'NewDialog', u'CustomizeDlg', u'InstallMode = "Custom" OR InstallMode = "Change"', None),
-(u'VerifyReadyDlg', u'Back', u'NewDialog', u'MaintenanceTypeDlg', u'InstallMode = "Repair"', None),
-(u'VerifyReadyDlg', u'Back', u'NewDialog', u'SetupTypeDlg', u'InstallMode = "Typical" OR InstallMode = "Complete"', None),
-(u'VerifyReadyDlg', u'Install', u'EndDialog', u'Return', u'OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"', 3),
-(u'VerifyReadyDlg', u'Install', u'EndDialog', u'Return', u'OutOfDiskSpace <> 1', 1),
-(u'VerifyReadyDlg', u'Install', u'SpawnDialog', u'OutOfDiskDlg', u'(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")', 5),
-(u'VerifyReadyDlg', u'Install', u'SpawnDialog', u'OutOfRbDiskDlg', u'OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)', 2),
-(u'VerifyReadyDlg', u'Install', u'EnableRollback', u'False', u'OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"', 4),
-(u'VerifyRemoveDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'VerifyRemoveDlg', u'Back', u'NewDialog', u'MaintenanceTypeDlg', u'1', None),
-(u'VerifyRemoveDlg', u'Remove', u'Remove', u'All', u'OutOfDiskSpace <> 1', 1),
-(u'VerifyRemoveDlg', u'Remove', u'EndDialog', u'Return', u'OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"', 4),
-(u'VerifyRemoveDlg', u'Remove', u'EndDialog', u'Return', u'OutOfDiskSpace <> 1', 2),
-(u'VerifyRemoveDlg', u'Remove', u'SpawnDialog', u'OutOfDiskDlg', u'(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")', 6),
-(u'VerifyRemoveDlg', u'Remove', u'SpawnDialog', u'OutOfRbDiskDlg', u'OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)', 3),
-(u'VerifyRemoveDlg', u'Remove', u'EnableRollback', u'False', u'OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"', 5),
-(u'VerifyRepairDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'VerifyRepairDlg', u'Back', u'NewDialog', u'MaintenanceTypeDlg', u'1', None),
-(u'VerifyRepairDlg', u'Repair', u'EndDialog', u'Return', u'OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"', 5),
-(u'VerifyRepairDlg', u'Repair', u'EndDialog', u'Return', u'OutOfDiskSpace <> 1', 3),
-(u'VerifyRepairDlg', u'Repair', u'SpawnDialog', u'OutOfDiskDlg', u'(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")', 7),
-(u'VerifyRepairDlg', u'Repair', u'SpawnDialog', u'OutOfRbDiskDlg', u'OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)', 4),
-(u'VerifyRepairDlg', u'Repair', u'EnableRollback', u'False', u'OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"', 6),
-(u'VerifyRepairDlg', u'Repair', u'Reinstall', u'All', u'OutOfDiskSpace <> 1', 2),
-(u'VerifyRepairDlg', u'Repair', u'ReinstallMode', u'ecmus', u'OutOfDiskSpace <> 1', 1),
-(u'WaitForCostingDlg', u'Return', u'EndDialog', u'Exit', u'1', None),
-(u'WelcomeDlg', u'Cancel', u'SpawnDialog', u'CancelDlg', u'1', None),
-(u'WelcomeDlg', u'Next', u'NewDialog', u'LicenseAgreementDlg', u'1', None),
-]
-
-Dialog = [
-(u'AdminWelcomeDlg', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'Next', u'Next', u'Cancel'),
-(u'ExitDialog', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'Finish', u'Finish', u'Finish'),
-(u'FatalError', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'Finish', u'Finish', u'Finish'),
-(u'PrepareDlg', 50, 50, 370, 270, 1, u'[ProductName] [Setup]', u'Cancel', u'Cancel', u'Cancel'),
-(u'ProgressDlg', 50, 50, 370, 270, 1, u'[ProductName] [Setup]', u'Cancel', u'Cancel', u'Cancel'),
-(u'UserExit', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'Finish', u'Finish', u'Finish'),
-(u'AdminBrowseDlg', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'PathEdit', u'OK', u'Cancel'),
-(u'AdminInstallPointDlg', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'Text', u'Next', u'Cancel'),
-(u'AdminRegistrationDlg', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'OrganizationLabel', u'Next', u'Cancel'),
-(u'BrowseDlg', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'PathEdit', u'OK', u'Cancel'),
-(u'CancelDlg', 50, 10, 260, 85, 3, u'[ProductName] [Setup]', u'No', u'No', u'No'),
-(u'CustomizeDlg', 50, 50, 370, 270, 35, u'[ProductName] [Setup]', u'Tree', u'Next', u'Cancel'),
-(u'DiskCostDlg', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'OK', u'OK', u'OK'),
-(u'ErrorDlg', 50, 10, 270, 105, 65539, u'Installer Information', u'ErrorText', None, None),
-(u'FilesInUse', 50, 50, 370, 270, 19, u'[ProductName] [Setup]', u'Retry', u'Retry', u'Retry'),
-(u'LicenseAgreementDlg', 50, 50, 370, 270, 3, u'[ProductName] License Agreement', u'Buttons', u'Next', u'Cancel'),
-(u'MaintenanceTypeDlg', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'ChangeLabel', u'ChangeButton', u'Cancel'),
-(u'MaintenanceWelcomeDlg', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'Next', u'Next', u'Cancel'),
-(u'OutOfDiskDlg', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'OK', u'OK', u'OK'),
-(u'OutOfRbDiskDlg', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'No', u'No', u'No'),
-(u'ResumeDlg', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'Install', u'Install', u'Cancel'),
-(u'SetupTypeDlg', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'TypicalLabel', u'TypicalButton', u'Cancel'),
-(u'UserRegistrationDlg', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'NameLabel', u'Next', u'Cancel'),
-(u'VerifyReadyDlg', 50, 50, 370, 270, 35, u'[ProductName] [Setup]', u'Install', u'Install', u'Cancel'),
-(u'VerifyRemoveDlg', 50, 50, 370, 270, 35, u'[ProductName] [Setup]', u'Back', u'Back', u'Cancel'),
-(u'VerifyRepairDlg', 50, 50, 370, 270, 35, u'[ProductName] [Setup]', u'Repair', u'Repair', u'Cancel'),
-(u'WaitForCostingDlg', 50, 10, 260, 85, 3, u'[ProductName] [Setup]', u'Return', u'Return', u'Return'),
-(u'WelcomeDlg', 50, 50, 370, 270, 3, u'[ProductName] [Setup]', u'Next', u'Next', u'Cancel'),
-]
-
-EventMapping = [
-(u'PrepareDlg', u'ActionData', u'ActionData', u'Text'),
-(u'PrepareDlg', u'ActionText', u'ActionText', u'Text'),
-(u'ProgressDlg', u'ActionText', u'ActionText', u'Text'),
-(u'ProgressDlg', u'ProgressBar', u'SetProgress', u'Progress'),
-(u'AdminBrowseDlg', u'DirectoryCombo', u'IgnoreChange', u'IgnoreChange'),
-(u'BrowseDlg', u'DirectoryCombo', u'IgnoreChange', u'IgnoreChange'),
-(u'CustomizeDlg', u'Next', u'SelectionNoItems', u'Enabled'),
-(u'CustomizeDlg', u'Reset', u'SelectionNoItems', u'Enabled'),
-(u'CustomizeDlg', u'DiskCost', u'SelectionNoItems', u'Enabled'),
-(u'CustomizeDlg', u'ItemDescription', u'SelectionDescription', u'Text'),
-(u'CustomizeDlg', u'ItemSize', u'SelectionSize', u'Text'),
-(u'CustomizeDlg', u'Location', u'SelectionPath', u'Text'),
-(u'CustomizeDlg', u'Location', u'SelectionPathOn', u'Visible'),
-(u'CustomizeDlg', u'LocationLabel', u'SelectionPathOn', u'Visible'),
-]
-
-InstallExecuteSequence = [
-(u'InstallValidate', None, 1400),
-(u'InstallInitialize', None, 1500),
-(u'InstallFinalize', None, 6600),
-(u'InstallFiles', None, 4000),
-(u'FileCost', None, 900),
-(u'CostInitialize', None, 800),
-(u'CostFinalize', None, 1000),
-(u'CreateShortcuts', None, 4500),
-(u'PublishComponents', None, 6200),
-(u'PublishFeatures', None, 6300),
-(u'PublishProduct', None, 6400),
-(u'RegisterClassInfo', None, 4600),
-(u'RegisterExtensionInfo', None, 4700),
-(u'RegisterMIMEInfo', None, 4900),
-(u'RegisterProgIdInfo', None, 4800),
-(u'ValidateProductID', None, 700),
-(u'AllocateRegistrySpace', u'NOT Installed', 1550),
-(u'AppSearch', None, 400),
-(u'BindImage', None, 4300),
-(u'CCPSearch', u'NOT Installed', 500),
-(u'CreateFolders', None, 3700),
-(u'DeleteServices', u'VersionNT', 2000),
-(u'DuplicateFiles', None, 4210),
-(u'FindRelatedProducts', None, 200),
-(u'InstallODBC', None, 5400),
-(u'InstallServices', u'VersionNT', 5800),
-(u'LaunchConditions', None, 100),
-(u'MigrateFeatureStates', None, 1200),
-(u'MoveFiles', None, 3800),
-(u'PatchFiles', None, 4090),
-(u'ProcessComponents', None, 1600),
-(u'RegisterComPlus', None, 5700),
-(u'RegisterFonts', None, 5300),
-(u'RegisterProduct', None, 6100),
-(u'RegisterTypeLibraries', None, 5500),
-(u'RegisterUser', None, 6000),
-(u'RemoveDuplicateFiles', None, 3400),
-(u'RemoveEnvironmentStrings', None, 3300),
-(u'RemoveExistingProducts', None, 6700),
-(u'RemoveFiles', None, 3500),
-(u'RemoveFolders', None, 3600),
-(u'RemoveIniValues', None, 3100),
-(u'RemoveODBC', None, 2400),
-(u'RemoveRegistryValues', None, 2600),
-(u'RemoveShortcuts', None, 3200),
-(u'RMCCPSearch', u'NOT Installed', 600),
-(u'SelfRegModules', None, 5600),
-(u'SelfUnregModules', None, 2200),
-(u'SetODBCFolders', None, 1100),
-(u'StartServices', u'VersionNT', 5900),
-(u'StopServices', u'VersionNT', 1900),
-(u'UnpublishComponents', None, 1700),
-(u'UnpublishFeatures', None, 1800),
-(u'UnregisterClassInfo', None, 2700),
-(u'UnregisterComPlus', None, 2100),
-(u'UnregisterExtensionInfo', None, 2800),
-(u'UnregisterFonts', None, 2500),
-(u'UnregisterMIMEInfo', None, 3000),
-(u'UnregisterProgIdInfo', None, 2900),
-(u'UnregisterTypeLibraries', None, 2300),
-(u'WriteEnvironmentStrings', None, 5200),
-(u'WriteIniValues', None, 5100),
-(u'WriteRegistryValues', None, 5000),
-]
-
-InstallUISequence = [
-#(u'FileCost', None, 900),
-#(u'CostInitialize', None, 800),
-#(u'CostFinalize', None, 1000),
-#(u'ExecuteAction', None, 1300),
-#(u'ExitDialog', None, -1),
-#(u'FatalError', None, -3),
-(u'PrepareDlg', None, 140),
-(u'ProgressDlg', None, 1280),
-#(u'UserExit', None, -2),
-(u'MaintenanceWelcomeDlg', u'Installed AND NOT RESUME AND NOT Preselected', 1250),
-(u'ResumeDlg', u'Installed AND (RESUME OR Preselected)', 1240),
-(u'WelcomeDlg', u'NOT Installed', 1230),
-#(u'AppSearch', None, 400),
-#(u'CCPSearch', u'NOT Installed', 500),
-#(u'FindRelatedProducts', None, 200),
-#(u'LaunchConditions', None, 100),
-#(u'MigrateFeatureStates', None, 1200),
-#(u'RMCCPSearch', u'NOT Installed', 600),
-]
-
-ListView = [
-]
-
-RadioButton = [
-(u'IAgree', 1, u'Yes', 5, 0, 250, 15, u'{\\DlgFont8}I &accept the terms in the License Agreement', None),
-(u'IAgree', 2, u'No', 5, 20, 250, 15, u'{\\DlgFont8}I &do not accept the terms in the License Agreement', None),
-]
-
-TextStyle = [
-(u'DlgFont8', u'Tahoma', 8, None, 0),
-(u'DlgFontBold8', u'Tahoma', 8, None, 1),
-(u'VerdanaBold13', u'Verdana', 13, None, 1),
-]
-
-UIText = [
-(u'AbsentPath', None),
-(u'bytes', u'bytes'),
-(u'GB', u'GB'),
-(u'KB', u'KB'),
-(u'MB', u'MB'),
-(u'MenuAbsent', u'Entire feature will be unavailable'),
-(u'MenuAdvertise', u'Feature will be installed when required'),
-(u'MenuAllCD', u'Entire feature will be installed to run from CD'),
-(u'MenuAllLocal', u'Entire feature will be installed on local hard drive'),
-(u'MenuAllNetwork', u'Entire feature will be installed to run from network'),
-(u'MenuCD', u'Will be installed to run from CD'),
-(u'MenuLocal', u'Will be installed on local hard drive'),
-(u'MenuNetwork', u'Will be installed to run from network'),
-(u'ScriptInProgress', u'Gathering required information...'),
-(u'SelAbsentAbsent', u'This feature will remain uninstalled'),
-(u'SelAbsentAdvertise', u'This feature will be set to be installed when required'),
-(u'SelAbsentCD', u'This feature will be installed to run from CD'),
-(u'SelAbsentLocal', u'This feature will be installed on the local hard drive'),
-(u'SelAbsentNetwork', u'This feature will be installed to run from the network'),
-(u'SelAdvertiseAbsent', u'This feature will become unavailable'),
-(u'SelAdvertiseAdvertise', u'Will be installed when required'),
-(u'SelAdvertiseCD', u'This feature will be available to run from CD'),
-(u'SelAdvertiseLocal', u'This feature will be installed on your local hard drive'),
-(u'SelAdvertiseNetwork', u'This feature will be available to run from the network'),
-(u'SelCDAbsent', u"This feature will be uninstalled completely, you won't be able to run it from CD"),
-(u'SelCDAdvertise', u'This feature will change from run from CD state to set to be installed when required'),
-(u'SelCDCD', u'This feature will remain to be run from CD'),
-(u'SelCDLocal', u'This feature will change from run from CD state to be installed on the local hard drive'),
-(u'SelChildCostNeg', u'This feature frees up [1] on your hard drive.'),
-(u'SelChildCostPos', u'This feature requires [1] on your hard drive.'),
-(u'SelCostPending', u'Compiling cost for this feature...'),
-(u'SelLocalAbsent', u'This feature will be completely removed'),
-(u'SelLocalAdvertise', u'This feature will be removed from your local hard drive, but will be set to be installed when required'),
-(u'SelLocalCD', u'This feature will be removed from your local hard drive, but will be still available to run from CD'),
-(u'SelLocalLocal', u'This feature will remain on you local hard drive'),
-(u'SelLocalNetwork', u'This feature will be removed from your local hard drive, but will be still available to run from the network'),
-(u'SelNetworkAbsent', u"This feature will be uninstalled completely, you won't be able to run it from the network"),
-(u'SelNetworkAdvertise', u'This feature will change from run from network state to set to be installed when required'),
-(u'SelNetworkLocal', u'This feature will change from run from network state to be installed on the local hard drive'),
-(u'SelNetworkNetwork', u'This feature will remain to be run from the network'),
-(u'SelParentCostNegNeg', u'This feature frees up [1] on your hard drive. It has [2] of [3] subfeatures selected. The subfeatures free up [4] on your hard drive.'),
-(u'SelParentCostNegPos', u'This feature frees up [1] on your hard drive. It has [2] of [3] subfeatures selected. The subfeatures require [4] on your hard drive.'),
-(u'SelParentCostPosNeg', u'This feature requires [1] on your hard drive. It has [2] of [3] subfeatures selected. The subfeatures free up [4] on your hard drive.'),
-(u'SelParentCostPosPos', u'This feature requires [1] on your hard drive. It has [2] of [3] subfeatures selected. The subfeatures require [4] on your hard drive.'),
-(u'TimeRemaining', u'Time remaining: {[1] minutes }{[2] seconds}'),
-(u'VolumeCostAvailable', u'Available'),
-(u'VolumeCostDifference', u'Difference'),
-(u'VolumeCostRequired', u'Required'),
-(u'VolumeCostSize', u'Disk Size'),
-(u'VolumeCostVolume', u'Volume'),
-]
-
-_Validation = [
-(u'AdminExecuteSequence', u'Action', u'N', None, None, None, None, u'Identifier', None, u'Name of action to invoke, either in the engine or the handler DLL.'),
-(u'AdminExecuteSequence', u'Sequence', u'Y', -4, 32767, None, None, None, None, u'Number that determines the sort order in which the actions are to be executed.  Leave blank to suppress action.'),
-(u'AdminExecuteSequence', u'Condition', u'Y', None, None, None, None, u'Condition', None, u'Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.'),
-(u'AdminUISequence', u'Action', u'N', None, None, None, None, u'Identifier', None, u'Name of action to invoke, either in the engine or the handler DLL.'),
-(u'AdminUISequence', u'Sequence', u'Y', -4, 32767, None, None, None, None, u'Number that determines the sort order in which the actions are to be executed.  Leave blank to suppress action.'),
-(u'AdminUISequence', u'Condition', u'Y', None, None, None, None, u'Condition', None, u'Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.'),
-(u'Condition', u'Condition', u'Y', None, None, None, None, u'Condition', None, u'Expression evaluated to determine if Level in the Feature table is to change.'),
-(u'Condition', u'Feature_', u'N', None, None, u'Feature', 1, u'Identifier', None, u'Reference to a Feature entry in Feature table.'),
-(u'Condition', u'Level', u'N', 0, 32767, None, None, None, None, u'New selection Level to set in Feature table if Condition evaluates to TRUE.'),
-(u'AdvtExecuteSequence', u'Action', u'N', None, None, None, None, u'Identifier', None, u'Name of action to invoke, either in the engine or the handler DLL.'),
-(u'AdvtExecuteSequence', u'Sequence', u'Y', -4, 32767, None, None, None, None, u'Number that determines the sort order in which the actions are to be executed.  Leave blank to suppress action.'),
-(u'AdvtExecuteSequence', u'Condition', u'Y', None, None, None, None, u'Condition', None, u'Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.'),
-(u'BBControl', u'Type', u'N', None, None, None, None, u'Identifier', None, u'The type of the control.'),
-(u'BBControl', u'BBControl', u'N', None, None, None, None, u'Identifier', None, u'Name of the control. This name must be unique within a billboard, but can repeat on different billboard.'),
-(u'BBControl', u'Billboard_', u'N', None, None, u'Billboard', 1, u'Identifier', None, u'External key to the Billboard table, name of the billboard.'),
-(u'BBControl', u'X', u'N', 0, 32767, None, None, None, None, u'Horizontal coordinate of the upper left corner of the bounding rectangle of the control.'),
-(u'BBControl', u'Y', u'N', 0, 32767, None, None, None, None, u'Vertical coordinate of the upper left corner of the bounding rectangle of the control.'),
-(u'BBControl', u'Width', u'N', 0, 32767, None, None, None, None, u'Width of the bounding rectangle of the control.'),
-(u'BBControl', u'Height', u'N', 0, 32767, None, None, None, None, u'Height of the bounding rectangle of the control.'),
-(u'BBControl', u'Attributes', u'Y', 0, 2147483647, None, None, None, None, u'A 32-bit word that specifies the attribute flags to be applied to this control.'),
-(u'BBControl', u'Text', u'Y', None, None, None, None, u'Text', None, u'A string used to set the initial text contained within a control (if appropriate).'),
-(u'Billboard', u'Action', u'Y', None, None, None, None, u'Identifier', None, u'The name of an action. The billboard is displayed during the progress messages received from this action.'),
-(u'Billboard', u'Billboard', u'N', None, None, None, None, u'Identifier', None, u'Name of the billboard.'),
-(u'Billboard', u'Feature_', u'N', None, None, u'Feature', 1, u'Identifier', None, u'An external key to the Feature Table. The billboard is shown only if this feature is being installed.'),
-(u'Billboard', u'Ordering', u'Y', 0, 32767, None, None, None, None, u'A positive integer. If there is more than one billboard corresponding to an action they will be shown in the order defined by this column.'),
-(u'Binary', u'Name', u'N', None, None, None, None, u'Identifier', None, u'Unique key identifying the binary data.'),
-(u'Binary', u'Data', u'N', None, None, None, None, u'Binary', None, u'The unformatted binary data.'),
-(u'CheckBox', u'Property', u'N', None, None, None, None, u'Identifier', None, u'A named property to be tied to the item.'),
-(u'CheckBox', u'Value', u'Y', None, None, None, None, u'Formatted', None, u'The value string associated with the item.'),
-(u'Property', u'Property', u'N', None, None, None, None, u'Identifier', None, u'Name of property, uppercase if settable by launcher or loader.'),
-(u'Property', u'Value', u'N', None, None, None, None, u'Text', None, u'String value for property.  Never null or empty.'),
-(u'ComboBox', u'Text', u'Y', None, None, None, None, u'Formatted', None, u'The visible text to be assigned to the item. Optional. If this entry or the entire column is missing, the text is the same as the value.'),
-(u'ComboBox', u'Property', u'N', None, None, None, None, u'Identifier', None, u'A named property to be tied to this item. All the items tied to the same property become part of the same combobox.'),
-(u'ComboBox', u'Value', u'N', None, None, None, None, u'Formatted', None, u'The value string associated with this item. Selecting the line will set the associated property to this value.'),
-(u'ComboBox', u'Order', u'N', 1, 32767, None, None, None, None, u'A positive integer used to determine the ordering of the items within one list.\tThe integers do not have to be consecutive.'),
-(u'Control', u'Type', u'N', None, None, None, None, u'Identifier', None, u'The type of the control.'),
-(u'Control', u'X', u'N', 0, 32767, None, None, None, None, u'Horizontal coordinate of the upper left corner of the bounding rectangle of the control.'),
-(u'Control', u'Y', u'N', 0, 32767, None, None, None, None, u'Vertical coordinate of the upper left corner of the bounding rectangle of the control.'),
-(u'Control', u'Width', u'N', 0, 32767, None, None, None, None, u'Width of the bounding rectangle of the control.'),
-(u'Control', u'Height', u'N', 0, 32767, None, None, None, None, u'Height of the bounding rectangle of the control.'),
-(u'Control', u'Attributes', u'Y', 0, 2147483647, None, None, None, None, u'A 32-bit word that specifies the attribute flags to be applied to this control.'),
-(u'Control', u'Text', u'Y', None, None, None, None, u'Formatted', None, u'A string used to set the initial text contained within a control (if appropriate).'),
-(u'Control', u'Property', u'Y', None, None, None, None, u'Identifier', None, u'The name of a defined property to be linked to this control. '),
-(u'Control', u'Control', u'N', None, None, None, None, u'Identifier', None, u'Name of the control. This name must be unique within a dialog, but can repeat on different dialogs. '),
-(u'Control', u'Dialog_', u'N', None, None, u'Dialog', 1, u'Identifier', None, u'External key to the Dialog table, name of the dialog.'),
-(u'Control', u'Control_Next', u'Y', None, None, u'Control', 2, u'Identifier', None, u'The name of an other control on the same dialog. This link defines the tab order of the controls. The links have to form one or more cycles!'),
-(u'Control', u'Help', u'Y', None, None, None, None, u'Text', None, u'The help strings used with the button. The text is optional. '),
-(u'Icon', u'Name', u'N', None, None, None, None, u'Identifier', None, u'Primary key. Name of the icon file.'),
-(u'Icon', u'Data', u'N', None, None, None, None, u'Binary', None, u'Binary stream. The binary icon data in PE (.DLL or .EXE) or icon (.ICO) format.'),
-(u'ListBox', u'Text', u'Y', None, None, None, None, u'Text', None, u'The visible text to be assigned to the item. Optional. If this entry or the entire column is missing, the text is the same as the value.'),
-(u'ListBox', u'Property', u'N', None, None, None, None, u'Identifier', None, u'A named property to be tied to this item. All the items tied to the same property become part of the same listbox.'),
-(u'ListBox', u'Value', u'N', None, None, None, None, u'Formatted', None, u'The value string associated with this item. Selecting the line will set the associated property to this value.'),
-(u'ListBox', u'Order', u'N', 1, 32767, None, None, None, None, u'A positive integer used to determine the ordering of the items within one list..The integers do not have to be consecutive.'),
-(u'ActionText', u'Action', u'N', None, None, None, None, u'Identifier', None, u'Name of action to be described.'),
-(u'ActionText', u'Description', u'Y', None, None, None, None, u'Text', None, u'Localized description displayed in progress dialog and log when action is executing.'),
-(u'ActionText', u'Template', u'Y', None, None, None, None, u'Template', None, u'Optional localized format template used to format action data records for display during action execution.'),
-(u'ControlCondition', u'Action', u'N', None, None, None, None, None, u'Default;Disable;Enable;Hide;Show', u'The desired action to be taken on the specified control.'),
-(u'ControlCondition', u'Condition', u'N', None, None, None, None, u'Condition', None, u'A standard conditional statement that specifies under which conditions the action should be triggered.'),
-(u'ControlCondition', u'Dialog_', u'N', None, None, u'Dialog', 1, u'Identifier', None, u'A foreign key to the Dialog table, name of the dialog.'),
-(u'ControlCondition', u'Control_', u'N', None, None, u'Control', 2, u'Identifier', None, u'A foreign key to the Control table, name of the control.'),
-(u'ControlEvent', u'Condition', u'Y', None, None, None, None, u'Condition', None, u'A standard conditional statement that specifies under which conditions an event should be triggered.'),
-(u'ControlEvent', u'Ordering', u'Y', 0, 2147483647, None, None, None, None, u'An integer used to order several events tied to the same control. Can be left blank.'),
-(u'ControlEvent', u'Dialog_', u'N', None, None, u'Dialog', 1, u'Identifier', None, u'A foreign key to the Dialog table, name of the dialog.'),
-(u'ControlEvent', u'Control_', u'N', None, None, u'Control', 2, u'Identifier', None, u'A foreign key to the Control table, name of the control'),
-(u'ControlEvent', u'Event', u'N', None, None, None, None, u'Formatted', None, u'An identifier that specifies the type of the event that should take place when the user interacts with control specified by the first two entries.'),
-(u'ControlEvent', u'Argument', u'N', None, None, None, None, u'Formatted', None, u'A value to be used as a modifier when triggering a particular event.'),
-(u'Dialog', u'Width', u'N', 0, 32767, None, None, None, None, u'Width of the bounding rectangle of the dialog.'),
-(u'Dialog', u'Height', u'N', 0, 32767, None, None, None, None, u'Height of the bounding rectangle of the dialog.'),
-(u'Dialog', u'Attributes', u'Y', 0, 2147483647, None, None, None, None, u'A 32-bit word that specifies the attribute flags to be applied to this dialog.'),
-(u'Dialog', u'Title', u'Y', None, None, None, None, u'Formatted', None, u"A text string specifying the title to be displayed in the title bar of the dialog's window."),
-(u'Dialog', u'Dialog', u'N', None, None, None, None, u'Identifier', None, u'Name of the dialog.'),
-(u'Dialog', u'HCentering', u'N', 0, 100, None, None, None, None, u'Horizontal position of the dialog on a 0-100 scale. 0 means left end, 100 means right end of the screen, 50 center.'),
-(u'Dialog', u'VCentering', u'N', 0, 100, None, None, None, None, u'Vertical position of the dialog on a 0-100 scale. 0 means top end, 100 means bottom end of the screen, 50 center.'),
-(u'Dialog', u'Control_First', u'N', None, None, u'Control', 2, u'Identifier', None, u'Defines the control that has the focus when the dialog is created.'),
-(u'Dialog', u'Control_Default', u'Y', None, None, u'Control', 2, u'Identifier', None, u'Defines the default control. Hitting return is equivalent to pushing this button.'),
-(u'Dialog', u'Control_Cancel', u'Y', None, None, u'Control', 2, u'Identifier', None, u'Defines the cancel control. Hitting escape or clicking on the close icon on the dialog is equivalent to pushing this button.'),
-(u'EventMapping', u'Dialog_', u'N', None, None, u'Dialog', 1, u'Identifier', None, u'A foreign key to the Dialog table, name of the Dialog.'),
-(u'EventMapping', u'Control_', u'N', None, None, u'Control', 2, u'Identifier', None, u'A foreign key to the Control table, name of the control.'),
-(u'EventMapping', u'Event', u'N', None, None, None, None, u'Identifier', None, u'An identifier that specifies the type of the event that the control subscribes to.'),
-(u'EventMapping', u'Attribute', u'N', None, None, None, None, u'Identifier', None, u'The name of the control attribute, that is set when this event is received.'),
-(u'InstallExecuteSequence', u'Action', u'N', None, None, None, None, u'Identifier', None, u'Name of action to invoke, either in the engine or the handler DLL.'),
-(u'InstallExecuteSequence', u'Sequence', u'Y', -4, 32767, None, None, None, None, u'Number that determines the sort order in which the actions are to be executed.  Leave blank to suppress action.'),
-(u'InstallExecuteSequence', u'Condition', u'Y', None, None, None, None, u'Condition', None, u'Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.'),
-(u'AppSearch', u'Property', u'N', None, None, None, None, u'Identifier', None, u'The property associated with a Signature'),
-(u'AppSearch', u'Signature_', u'N', None, None, u'Signature;RegLocator;IniLocator;DrLocator;CompLocator', 1, u'Identifier', None, u'The Signature_ represents a unique file signature and is also the foreign key in the Signature,  RegLocator, IniLocator, CompLocator and the DrLocator tables.'),
-(u'BindImage', u'File_', u'N', None, None, u'File', 1, u'Identifier', None, u'The index into the File table. This must be an executable file.'),
-(u'BindImage', u'Path', u'Y', None, None, None, None, u'Paths', None, u'A list of ;  delimited paths that represent the paths to be searched for the import DLLS. The list is usually a list of properties each enclosed within square brackets [] .'),
-(u'CCPSearch', u'Signature_', u'N', None, None, u'Signature;RegLocator;IniLocator;DrLocator;CompLocator', 1, u'Identifier', None, u'The Signature_ represents a unique file signature and is also the foreign key in the Signature,  RegLocator, IniLocator, CompLocator and the DrLocator tables.'),
-(u'InstallUISequence', u'Action', u'N', None, None, None, None, u'Identifier', None, u'Name of action to invoke, either in the engine or the handler DLL.'),
-(u'InstallUISequence', u'Sequence', u'Y', -4, 32767, None, None, None, None, u'Number that determines the sort order in which the actions are to be executed.  Leave blank to suppress action.'),
-(u'InstallUISequence', u'Condition', u'Y', None, None, None, None, u'Condition', None, u'Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.'),
-(u'ListView', u'Text', u'Y', None, None, None, None, u'Text', None, u'The visible text to be assigned to the item. Optional. If this entry or the entire column is missing, the text is the same as the value.'),
-(u'ListView', u'Property', u'N', None, None, None, None, u'Identifier', None, u'A named property to be tied to this item. All the items tied to the same property become part of the same listview.'),
-(u'ListView', u'Value', u'N', None, None, None, None, u'Identifier', None, u'The value string associated with this item. Selecting the line will set the associated property to this value.'),
-(u'ListView', u'Order', u'N', 1, 32767, None, None, None, None, u'A positive integer used to determine the ordering of the items within one list..The integers do not have to be consecutive.'),
-(u'ListView', u'Binary_', u'Y', None, None, u'Binary', 1, u'Identifier', None, u'The name of the icon to be displayed with the icon. The binary information is looked up from the Binary Table.'),
-(u'RadioButton', u'X', u'N', 0, 32767, None, None, None, None, u'The horizontal coordinate of the upper left corner of the bounding rectangle of the radio button.'),
-(u'RadioButton', u'Y', u'N', 0, 32767, None, None, None, None, u'The vertical coordinate of the upper left corner of the bounding rectangle of the radio button.'),
-(u'RadioButton', u'Width', u'N', 0, 32767, None, None, None, None, u'The width of the button.'),
-(u'RadioButton', u'Height', u'N', 0, 32767, None, None, None, None, u'The height of the button.'),
-(u'RadioButton', u'Text', u'Y', None, None, None, None, u'Text', None, u'The visible title to be assigned to the radio button.'),
-(u'RadioButton', u'Property', u'N', None, None, None, None, u'Identifier', None, u'A named property to be tied to this radio button. All the buttons tied to the same property become part of the same group.'),
-(u'RadioButton', u'Value', u'N', None, None, None, None, u'Formatted', None, u'The value string associated with this button. Selecting the button will set the associated property to this value.'),
-(u'RadioButton', u'Order', u'N', 1, 32767, None, None, None, None, u'A positive integer used to determine the ordering of the items within one list..The integers do not have to be consecutive.'),
-(u'RadioButton', u'Help', u'Y', None, None, None, None, u'Text', None, u'The help strings used with the button. The text is optional.'),
-(u'TextStyle', u'TextStyle', u'N', None, None, None, None, u'Identifier', None, u'Name of the style. The primary key of this table. This name is embedded in the texts to indicate a style change.'),
-(u'TextStyle', u'FaceName', u'N', None, None, None, None, u'Text', None, u'A string indicating the name of the font used. Required. The string must be at most 31 characters long.'),
-(u'TextStyle', u'Size', u'N', 0, 32767, None, None, None, None, u'The size of the font used. This size is given in our units (1/12 of the system font height). Assuming that the system font is set to 12 point size, this is equivalent to the point size.'),
-(u'TextStyle', u'Color', u'Y', 0, 16777215, None, None, None, None, u'A long integer indicating the color of the string in the RGB format (Red, Green, Blue each 0-255, RGB = R + 256*G + 256^2*B).'),
-(u'TextStyle', u'StyleBits', u'Y', 0, 15, None, None, None, None, u'A combination of style bits.'),
-(u'UIText', u'Text', u'Y', None, None, None, None, u'Text', None, u'The localized version of the string.'),
-(u'UIText', u'Key', u'N', None, None, None, None, u'Identifier', None, u'A unique key that identifies the particular string.'),
-(u'_Validation', u'Table', u'N', None, None, None, None, u'Identifier', None, u'Name of table'),
-(u'_Validation', u'Description', u'Y', None, None, None, None, u'Text', None, u'Description of column'),
-(u'_Validation', u'Column', u'N', None, None, None, None, u'Identifier', None, u'Name of column'),
-(u'_Validation', u'Nullable', u'N', None, None, None, None, None, u'Y;N;@', u'Whether the column is nullable'),
-(u'_Validation', u'MinValue', u'Y', -2147483647, 2147483647, None, None, None, None, u'Minimum value allowed'),
-(u'_Validation', u'MaxValue', u'Y', -2147483647, 2147483647, None, None, None, None, u'Maximum value allowed'),
-(u'_Validation', u'KeyTable', u'Y', None, None, None, None, u'Identifier', None, u'For foreign key, Name of table to which data must link'),
-(u'_Validation', u'KeyColumn', u'Y', 1, 32, None, None, None, None, u'Column to which foreign key connects'),
-(u'_Validation', u'Category', u'Y', None, None, None, None, None, u'Text;Formatted;Template;Condition;Guid;Path;Version;Language;Identifier;Binary;UpperCase;LowerCase;Filename;Paths;AnyPath;WildCardFilename;RegPath;KeyFormatted;CustomSource;Property;Cabinet;Shortcut;URL', u'String category'),
-(u'_Validation', u'Set', u'Y', None, None, None, None, u'Text', None, u'Set of values that are permitted'),
-(u'AdvtUISequence', u'Action', u'N', None, None, None, None, u'Identifier', None, u'Name of action to invoke, either in the engine or the handler DLL.'),
-(u'AdvtUISequence', u'Sequence', u'Y', -4, 32767, None, None, None, None, u'Number that determines the sort order in which the actions are to be executed.  Leave blank to suppress action.'),
-(u'AdvtUISequence', u'Condition', u'Y', None, None, None, None, u'Condition', None, u'Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.'),
-(u'AppId', u'AppId', u'N', None, None, None, None, u'Guid', None, None),
-(u'AppId', u'ActivateAtStorage', u'Y', 0, 1, None, None, None, None, None),
-(u'AppId', u'DllSurrogate', u'Y', None, None, None, None, u'Text', None, None),
-(u'AppId', u'LocalService', u'Y', None, None, None, None, u'Text', None, None),
-(u'AppId', u'RemoteServerName', u'Y', None, None, None, None, u'Formatted', None, None),
-(u'AppId', u'RunAsInteractiveUser', u'Y', 0, 1, None, None, None, None, None),
-(u'AppId', u'ServiceParameters', u'Y', None, None, None, None, u'Text', None, None),
-(u'Feature', u'Attributes', u'N', None, None, None, None, None, u'0;1;2;4;5;6;8;9;10;16;17;18;20;21;22;24;25;26;32;33;34;36;37;38;48;49;50;52;53;54', u'Feature attributes'),
-(u'Feature', u'Description', u'Y', None, None, None, None, u'Text', None, u'Longer descriptive text describing a visible feature item.'),
-(u'Feature', u'Title', u'Y', None, None, None, None, u'Text', None, u'Short text identifying a visible feature item.'),
-(u'Feature', u'Feature', u'N', None, None, None, None, u'Identifier', None, u'Primary key used to identify a particular feature record.'),
-(u'Feature', u'Directory_', u'Y', None, None, u'Directory', 1, u'UpperCase', None, u'The name of the Directory that can be configured by the UI. A non-null value will enable the browse button.'),
-(u'Feature', u'Level', u'N', 0, 32767, None, None, None, None, u'The install level at which record will be initially selected. An install level of 0 will disable an item and prevent its display.'),
-(u'Feature', u'Display', u'Y', 0, 32767, None, None, None, None, u'Numeric sort order, used to force a specific display ordering.'),
-(u'Feature', u'Feature_Parent', u'Y', None, None, u'Feature', 1, u'Identifier', None, u'Optional key of a parent record in the same table. If the parent is not selected, then the record will not be installed. Null indicates a root item.'),
-(u'File', u'Sequence', u'N', 1, 32767, None, None, None, None, u'Sequence with respect to the media images; order must track cabinet order.'),
-(u'File', u'Attributes', u'Y', 0, 32767, None, None, None, None, u'Integer containing bit flags representing file attributes (with the decimal value of each bit position in parentheses)'),
-(u'File', u'File', u'N', None, None, None, None, u'Identifier', None, u'Primary key, non-localized token, must match identifier in cabinet.  For uncompressed files, this field is ignored.'),
-(u'File', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key referencing Component that controls the file.'),
-(u'File', u'FileName', u'N', None, None, None, None, u'Filename', None, u'File name used for installation, may be localized.  This may contain a "short name|long name" pair.'),
-(u'File', u'FileSize', u'N', 0, 2147483647, None, None, None, None, u'Size of file in bytes (long integer).'),
-(u'File', u'Language', u'Y', None, None, None, None, u'Language', None, u'List of decimal language Ids, comma-separated if more than one.'),
-(u'File', u'Version', u'Y', None, None, u'File', 1, u'Version', None, u'Version string for versioned files;  Blank for unversioned files.'),
-(u'Class', u'Attributes', u'Y', None, 32767, None, None, None, None, u'Class registration attributes.'),
-(u'Class', u'Feature_', u'N', None, None, u'Feature', 1, u'Identifier', None, u'Required foreign key into the Feature Table, specifying the feature to validate or install in order for the CLSID factory to be operational.'),
-(u'Class', u'Description', u'Y', None, None, None, None, u'Text', None, u'Localized description for the Class.'),
-(u'Class', u'Argument', u'Y', None, None, None, None, u'Formatted', None, u'optional argument for LocalServers.'),
-(u'Class', u'AppId_', u'Y', None, None, u'AppId', 1, u'Guid', None, u'Optional AppID containing DCOM information for associated application (string GUID).'),
-(u'Class', u'CLSID', u'N', None, None, None, None, u'Guid', None, u'The CLSID of an OLE factory.'),
-(u'Class', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Required foreign key into the Component Table, specifying the component for which to return a path when called through LocateComponent.'),
-(u'Class', u'Context', u'N', None, None, None, None, u'Identifier', None, u'The numeric server context for this server. CLSCTX_xxxx'),
-(u'Class', u'DefInprocHandler', u'Y', None, None, None, None, u'Filename', u'1;2;3', u'Optional default inproc handler.  Only optionally provided if Context=CLSCTX_LOCAL_SERVER.  Typically "ole32.dll" or "mapi32.dll"'),
-(u'Class', u'FileTypeMask', u'Y', None, None, None, None, u'Text', None, u'Optional string containing information for the HKCRthis CLSID) key. If multiple patterns exist, they must be delimited by a semicolon, and numeric subkeys will be generated: 0,1,2...'),
-(u'Class', u'Icon_', u'Y', None, None, u'Icon', 1, u'Identifier', None, u'Optional foreign key into the Icon Table, specifying the icon file associated with this CLSID. Will be written under the DefaultIcon key.'),
-(u'Class', u'IconIndex', u'Y', -32767, 32767, None, None, None, None, u'Optional icon index.'),
-(u'Class', u'ProgId_Default', u'Y', None, None, u'ProgId', 1, u'Text', None, u'Optional ProgId associated with this CLSID.'),
-(u'Component', u'Condition', u'Y', None, None, None, None, u'Condition', None, u"A conditional statement that will disable this component if the specified condition evaluates to the 'True' state. If a component is disabled, it will not be installed, regardless of the 'Action' state associated with the component."),
-(u'Component', u'Attributes', u'N', None, None, None, None, None, None, u'Remote execution option, one of irsEnum'),
-(u'Component', u'Component', u'N', None, None, None, None, u'Identifier', None, u'Primary key used to identify a particular component record.'),
-(u'Component', u'ComponentId', u'Y', None, None, None, None, u'Guid', None, u'A string GUID unique to this component, version, and language.'),
-(u'Component', u'Directory_', u'N', None, None, u'Directory', 1, u'Identifier', None, u'Required key of a Directory table record. This is actually a property name whose value contains the actual path, set either by the AppSearch action or with the default setting obtained from the Directory table.'),
-(u'Component', u'KeyPath', u'Y', None, None, u'File;Registry;ODBCDataSource', 1, u'Identifier', None, u'Either the primary key into the File table, Registry table, or ODBCDataSource table. This extract path is stored when the component is installed, and is used to detect the presence of the component and to return the path to it.'),
-(u'ProgId', u'Description', u'Y', None, None, None, None, u'Text', None, u'Localized description for the Program identifier.'),
-(u'ProgId', u'Icon_', u'Y', None, None, u'Icon', 1, u'Identifier', None, u'Optional foreign key into the Icon Table, specifying the icon file associated with this ProgId. Will be written under the DefaultIcon key.'),
-(u'ProgId', u'IconIndex', u'Y', -32767, 32767, None, None, None, None, u'Optional icon index.'),
-(u'ProgId', u'ProgId', u'N', None, None, None, None, u'Text', None, u'The Program Identifier. Primary key.'),
-(u'ProgId', u'Class_', u'Y', None, None, u'Class', 1, u'Guid', None, u'The CLSID of an OLE factory corresponding to the ProgId.'),
-(u'ProgId', u'ProgId_Parent', u'Y', None, None, u'ProgId', 1, u'Text', None, u'The Parent Program Identifier. If specified, the ProgId column becomes a version independent prog id.'),
-(u'CompLocator', u'Type', u'Y', 0, 1, None, None, None, None, u'A boolean value that determines if the registry value is a filename or a directory location.'),
-(u'CompLocator', u'Signature_', u'N', None, None, None, None, u'Identifier', None, u'The table key. The Signature_ represents a unique file signature and is also the foreign key in the Signature table.'),
-(u'CompLocator', u'ComponentId', u'N', None, None, None, None, u'Guid', None, u'A string GUID unique to this component, version, and language.'),
-(u'Complus', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key referencing Component that controls the ComPlus component.'),
-(u'Complus', u'ExpType', u'Y', 0, 32767, None, None, None, None, u'ComPlus component attributes.'),
-(u'Directory', u'Directory', u'N', None, None, None, None, u'Identifier', None, u'Unique identifier for directory entry, primary key. If a property by this name is defined, it contains the full path to the directory.'),
-(u'Directory', u'DefaultDir', u'N', None, None, None, None, u'DefaultDir', None, u"The default sub-path under parent's path."),
-(u'Directory', u'Directory_Parent', u'Y', None, None, u'Directory', 1, u'Identifier', None, u'Reference to the entry in this table specifying the default parent directory. A record parented to itself or with a Null parent represents a root of the install tree.'),
-(u'CreateFolder', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key into the Component table.'),
-(u'CreateFolder', u'Directory_', u'N', None, None, u'Directory', 1, u'Identifier', None, u'Primary key, could be foreign key into the Directory table.'),
-(u'CustomAction', u'Type', u'N', 1, 16383, None, None, None, None, u'The numeric custom action type, consisting of source location, code type, entry, option flags.'),
-(u'CustomAction', u'Action', u'N', None, None, None, None, u'Identifier', None, u'Primary key, name of action, normally appears in sequence table unless private use.'),
-(u'CustomAction', u'Source', u'Y', None, None, None, None, u'CustomSource', None, u'The table reference of the source of the code.'),
-(u'CustomAction', u'Target', u'Y', None, None, None, None, u'Formatted', None, u'Excecution parameter, depends on the type of custom action'),
-(u'DrLocator', u'Signature_', u'N', None, None, None, None, u'Identifier', None, u'The Signature_ represents a unique file signature and is also the foreign key in the Signature table.'),
-(u'DrLocator', u'Path', u'Y', None, None, None, None, u'AnyPath', None, u'The path on the user system. This is a either a subpath below the value of the Parent or a full path. The path may contain properties enclosed within [ ] that will be expanded.'),
-(u'DrLocator', u'Depth', u'Y', 0, 32767, None, None, None, None, u'The depth below the path to which the Signature_ is recursively searched. If absent, the depth is assumed to be 0.'),
-(u'DrLocator', u'Parent', u'Y', None, None, None, None, u'Identifier', None, u'The parent file signature. It is also a foreign key in the Signature table. If null and the Path column does not expand to a full path, then all the fixed drives of the user system are searched using the Path.'),
-(u'DuplicateFile', u'File_', u'N', None, None, u'File', 1, u'Identifier', None, u'Foreign key referencing the source file to be duplicated.'),
-(u'DuplicateFile', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key referencing Component that controls the duplicate file.'),
-(u'DuplicateFile', u'DestFolder', u'Y', None, None, None, None, u'Identifier', None, u'Name of a property whose value is assumed to resolve to the full pathname to a destination folder.'),
-(u'DuplicateFile', u'DestName', u'Y', None, None, None, None, u'Filename', None, u'Filename to be given to the duplicate file.'),
-(u'DuplicateFile', u'FileKey', u'N', None, None, None, None, u'Identifier', None, u'Primary key used to identify a particular file entry'),
-(u'Environment', u'Name', u'N', None, None, None, None, u'Text', None, u'The name of the environmental value.'),
-(u'Environment', u'Value', u'Y', None, None, None, None, u'Formatted', None, u'The value to set in the environmental settings.'),
-(u'Environment', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key into the Component table referencing component that controls the installing of the environmental value.'),
-(u'Environment', u'Environment', u'N', None, None, None, None, u'Identifier', None, u'Unique identifier for the environmental variable setting'),
-(u'Error', u'Error', u'N', 0, 32767, None, None, None, None, u'Integer error number, obtained from header file IError(...) macros.'),
-(u'Error', u'Message', u'Y', None, None, None, None, u'Template', None, u'Error formatting template, obtained from user ed. or localizers.'),
-(u'Extension', u'Feature_', u'N', None, None, u'Feature', 1, u'Identifier', None, u'Required foreign key into the Feature Table, specifying the feature to validate or install in order for the CLSID factory to be operational.'),
-(u'Extension', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Required foreign key into the Component Table, specifying the component for which to return a path when called through LocateComponent.'),
-(u'Extension', u'Extension', u'N', None, None, None, None, u'Text', None, u'The extension associated with the table row.'),
-(u'Extension', u'MIME_', u'Y', None, None, u'MIME', 1, u'Text', None, u'Optional Context identifier, typically "type/format" associated with the extension'),
-(u'Extension', u'ProgId_', u'Y', None, None, u'ProgId', 1, u'Text', None, u'Optional ProgId associated with this extension.'),
-(u'MIME', u'CLSID', u'Y', None, None, None, None, u'Guid', None, u'Optional associated CLSID.'),
-(u'MIME', u'ContentType', u'N', None, None, None, None, u'Text', None, u'Primary key. Context identifier, typically "type/format".'),
-(u'MIME', u'Extension_', u'N', None, None, u'Extension', 1, u'Text', None, u'Optional associated extension (without dot)'),
-(u'FeatureComponents', u'Feature_', u'N', None, None, u'Feature', 1, u'Identifier', None, u'Foreign key into Feature table.'),
-(u'FeatureComponents', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key into Component table.'),
-(u'FileSFPCatalog', u'File_', u'N', None, None, u'File', 1, u'Identifier', None, u'File associated with the catalog'),
-(u'FileSFPCatalog', u'SFPCatalog_', u'N', None, None, u'SFPCatalog', 1, u'Filename', None, u'Catalog associated with the file'),
-(u'SFPCatalog', u'SFPCatalog', u'N', None, None, None, None, u'Filename', None, u'File name for the catalog.'),
-(u'SFPCatalog', u'Catalog', u'N', None, None, None, None, u'Binary', None, u'SFP Catalog'),
-(u'SFPCatalog', u'Dependency', u'Y', None, None, None, None, u'Formatted', None, u'Parent catalog - only used by SFP'),
-(u'Font', u'File_', u'N', None, None, u'File', 1, u'Identifier', None, u'Primary key, foreign key into File table referencing font file.'),
-(u'Font', u'FontTitle', u'Y', None, None, None, None, u'Text', None, u'Font name.'),
-(u'IniFile', u'Action', u'N', None, None, None, None, None, u'0;1;3', u'The type of modification to be made, one of iifEnum'),
-(u'IniFile', u'Value', u'N', None, None, None, None, u'Formatted', None, u'The value to be written.'),
-(u'IniFile', u'Key', u'N', None, None, None, None, u'Formatted', None, u'The .INI file key below Section.'),
-(u'IniFile', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key into the Component table referencing component that controls the installing of the .INI value.'),
-(u'IniFile', u'FileName', u'N', None, None, None, None, u'Filename', None, u'The .INI file name in which to write the information'),
-(u'IniFile', u'IniFile', u'N', None, None, None, None, u'Identifier', None, u'Primary key, non-localized token.'),
-(u'IniFile', u'DirProperty', u'Y', None, None, None, None, u'Identifier', None, u'Foreign key into the Directory table denoting the directory where the .INI file is.'),
-(u'IniFile', u'Section', u'N', None, None, None, None, u'Formatted', None, u'The .INI file Section.'),
-(u'IniLocator', u'Type', u'Y', 0, 2, None, None, None, None, u'An integer value that determines if the .INI value read is a filename or a directory location or to be used as is w/o interpretation.'),
-(u'IniLocator', u'Key', u'N', None, None, None, None, u'Text', None, u'Key value (followed by an equals sign in INI file).'),
-(u'IniLocator', u'Signature_', u'N', None, None, None, None, u'Identifier', None, u'The table key. The Signature_ represents a unique file signature and is also the foreign key in the Signature table.'),
-(u'IniLocator', u'FileName', u'N', None, None, None, None, u'Filename', None, u'The .INI file name.'),
-(u'IniLocator', u'Section', u'N', None, None, None, None, u'Text', None, u'Section name within in file (within square brackets in INI file).'),
-(u'IniLocator', u'Field', u'Y', 0, 32767, None, None, None, None, u'The field in the .INI line. If Field is null or 0 the entire line is read.'),
-(u'IsolatedComponent', u'Component_Application', u'N', None, None, u'Component', 1, u'Identifier', None, u'Key to Component table item for application'),
-(u'IsolatedComponent', u'Component_Shared', u'N', None, None, u'Component', 1, u'Identifier', None, u'Key to Component table item to be isolated'),
-(u'LaunchCondition', u'Condition', u'N', None, None, None, None, u'Condition', None, u'Expression which must evaluate to TRUE in order for install to commence.'),
-(u'LaunchCondition', u'Description', u'N', None, None, None, None, u'Formatted', None, u'Localizable text to display when condition fails and install must abort.'),
-(u'LockPermissions', u'Table', u'N', None, None, None, None, u'Identifier', u'Directory;File;Registry', u'Reference to another table name'),
-(u'LockPermissions', u'Domain', u'Y', None, None, None, None, u'Formatted', None, u'Domain name for user whose permissions are being set. (usually a property)'),
-(u'LockPermissions', u'LockObject', u'N', None, None, None, None, u'Identifier', None, u'Foreign key into Registry or File table'),
-(u'LockPermissions', u'Permission', u'Y', -2147483647, 2147483647, None, None, None, None, u'Permission Access mask.  Full Control = 268435456 (GENERIC_ALL = 0x10000000)'),
-(u'LockPermissions', u'User', u'N', None, None, None, None, u'Formatted', None, u'User for permissions to be set.  (usually a property)'),
-(u'Media', u'Source', u'Y', None, None, None, None, u'Property', None, u'The property defining the location of the cabinet file.'),
-(u'Media', u'Cabinet', u'Y', None, None, None, None, u'Cabinet', None, u'If some or all of the files stored on the media are compressed in a cabinet, the name of that cabinet.'),
-(u'Media', u'DiskId', u'N', 1, 32767, None, None, None, None, u'Primary key, integer to determine sort order for table.'),
-(u'Media', u'DiskPrompt', u'Y', None, None, None, None, u'Text', None, u'Disk name: the visible text actually printed on the disk.  This will be used to prompt the user when this disk needs to be inserted.'),
-(u'Media', u'LastSequence', u'N', 0, 32767, None, None, None, None, u'File sequence number for the last file for this media.'),
-(u'Media', u'VolumeLabel', u'Y', None, None, None, None, u'Text', None, u'The label attributed to the volume.'),
-(u'ModuleComponents', u'Component', u'N', None, None, u'Component', 1, u'Identifier', None, u'Component contained in the module.'),
-(u'ModuleComponents', u'Language', u'N', None, None, u'ModuleSignature', 2, None, None, u'Default language ID for module (may be changed by transform).'),
-(u'ModuleComponents', u'ModuleID', u'N', None, None, u'ModuleSignature', 1, u'Identifier', None, u'Module containing the component.'),
-(u'ModuleSignature', u'Language', u'N', None, None, None, None, None, None, u'Default decimal language of module.'),
-(u'ModuleSignature', u'Version', u'N', None, None, None, None, u'Version', None, u'Version of the module.'),
-(u'ModuleSignature', u'ModuleID', u'N', None, None, None, None, u'Identifier', None, u'Module identifier (String.GUID).'),
-(u'ModuleDependency', u'ModuleID', u'N', None, None, u'ModuleSignature', 1, u'Identifier', None, u'Module requiring the dependency.'),
-(u'ModuleDependency', u'ModuleLanguage', u'N', None, None, u'ModuleSignature', 2, None, None, u'Language of module requiring the dependency.'),
-(u'ModuleDependency', u'RequiredID', u'N', None, None, None, None, None, None, u'String.GUID of required module.'),
-(u'ModuleDependency', u'RequiredLanguage', u'N', None, None, None, None, None, None, u'LanguageID of the required module.'),
-(u'ModuleDependency', u'RequiredVersion', u'Y', None, None, None, None, u'Version', None, u'Version of the required version.'),
-(u'ModuleExclusion', u'ModuleID', u'N', None, None, u'ModuleSignature', 1, u'Identifier', None, u'String.GUID of module with exclusion requirement.'),
-(u'ModuleExclusion', u'ModuleLanguage', u'N', None, None, u'ModuleSignature', 2, None, None, u'LanguageID of module with exclusion requirement.'),
-(u'ModuleExclusion', u'ExcludedID', u'N', None, None, None, None, None, None, u'String.GUID of excluded module.'),
-(u'ModuleExclusion', u'ExcludedLanguage', u'N', None, None, None, None, None, None, u'Language of excluded module.'),
-(u'ModuleExclusion', u'ExcludedMaxVersion', u'Y', None, None, None, None, u'Version', None, u'Maximum version of excluded module.'),
-(u'ModuleExclusion', u'ExcludedMinVersion', u'Y', None, None, None, None, u'Version', None, u'Minimum version of excluded module.'),
-(u'MoveFile', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'If this component is not "selected" for installation or removal, no action will be taken on the associated MoveFile entry'),
-(u'MoveFile', u'DestFolder', u'N', None, None, None, None, u'Identifier', None, u'Name of a property whose value is assumed to resolve to the full path to the destination directory'),
-(u'MoveFile', u'DestName', u'Y', None, None, None, None, u'Filename', None, u'Name to be given to the original file after it is moved or copied.  If blank, the destination file will be given the same name as the source file'),
-(u'MoveFile', u'FileKey', u'N', None, None, None, None, u'Identifier', None, u'Primary key that uniquely identifies a particular MoveFile record'),
-(u'MoveFile', u'Options', u'N', 0, 1, None, None, None, None, u'Integer value specifying the MoveFile operating mode, one of imfoEnum'),
-(u'MoveFile', u'SourceFolder', u'Y', None, None, None, None, u'Identifier', None, u'Name of a property whose value is assumed to resolve to the full path to the source directory'),
-(u'MoveFile', u'SourceName', u'Y', None, None, None, None, u'Text', None, u"Name of the source file(s) to be moved or copied.  Can contain the '*' or '?' wildcards."),
-(u'MsiAssembly', u'Attributes', u'Y', None, None, None, None, None, None, u'Assembly attributes'),
-(u'MsiAssembly', u'Feature_', u'N', None, None, u'Feature', 1, u'Identifier', None, u'Foreign key into Feature table.'),
-(u'MsiAssembly', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key into Component table.'),
-(u'MsiAssembly', u'File_Application', u'Y', None, None, u'File', 1, u'Identifier', None, u'Foreign key into File table, denoting the application context for private assemblies. Null for global assemblies.'),
-(u'MsiAssembly', u'File_Manifest', u'Y', None, None, u'File', 1, u'Identifier', None, u'Foreign key into the File table denoting the manifest file for the assembly.'),
-(u'MsiAssemblyName', u'Name', u'N', None, None, None, None, u'Text', None, u'The name part of the name-value pairs for the assembly name.'),
-(u'MsiAssemblyName', u'Value', u'N', None, None, None, None, u'Text', None, u'The value part of the name-value pairs for the assembly name.'),
-(u'MsiAssemblyName', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key into Component table.'),
-(u'MsiDigitalCertificate', u'CertData', u'N', None, None, None, None, u'Binary', None, u'A certificate context blob for a signer certificate'),
-(u'MsiDigitalCertificate', u'DigitalCertificate', u'N', None, None, None, None, u'Identifier', None, u'A unique identifier for the row'),
-(u'MsiDigitalSignature', u'Table', u'N', None, None, None, None, None, u'Media', u'Reference to another table name (only Media table is supported)'),
-(u'MsiDigitalSignature', u'DigitalCertificate_', u'N', None, None, u'MsiDigitalCertificate', 1, u'Identifier', None, u'Foreign key to MsiDigitalCertificate table identifying the signer certificate'),
-(u'MsiDigitalSignature', u'Hash', u'Y', None, None, None, None, u'Binary', None, u'The encoded hash blob from the digital signature'),
-(u'MsiDigitalSignature', u'SignObject', u'N', None, None, None, None, u'Text', None, u'Foreign key to Media table'),
-(u'MsiFileHash', u'File_', u'N', None, None, u'File', 1, u'Identifier', None, u'Primary key, foreign key into File table referencing file with this hash'),
-(u'MsiFileHash', u'Options', u'N', 0, 32767, None, None, None, None, u'Various options and attributes for this hash.'),
-(u'MsiFileHash', u'HashPart1', u'N', None, None, None, None, None, None, u'Size of file in bytes (long integer).'),
-(u'MsiFileHash', u'HashPart2', u'N', None, None, None, None, None, None, u'Size of file in bytes (long integer).'),
-(u'MsiFileHash', u'HashPart3', u'N', None, None, None, None, None, None, u'Size of file in bytes (long integer).'),
-(u'MsiFileHash', u'HashPart4', u'N', None, None, None, None, None, None, u'Size of file in bytes (long integer).'),
-(u'MsiPatchHeaders', u'StreamRef', u'N', None, None, None, None, u'Identifier', None, u'Primary key. A unique identifier for the row.'),
-(u'MsiPatchHeaders', u'Header', u'N', None, None, None, None, u'Binary', None, u'Binary stream. The patch header, used for patch validation.'),
-(u'ODBCAttribute', u'Value', u'Y', None, None, None, None, u'Text', None, u'Value for ODBC driver attribute'),
-(u'ODBCAttribute', u'Attribute', u'N', None, None, None, None, u'Text', None, u'Name of ODBC driver attribute'),
-(u'ODBCAttribute', u'Driver_', u'N', None, None, u'ODBCDriver', 1, u'Identifier', None, u'Reference to ODBC driver in ODBCDriver table'),
-(u'ODBCDriver', u'Description', u'N', None, None, None, None, u'Text', None, u'Text used as registered name for driver, non-localized'),
-(u'ODBCDriver', u'File_', u'N', None, None, u'File', 1, u'Identifier', None, u'Reference to key driver file'),
-(u'ODBCDriver', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Reference to associated component'),
-(u'ODBCDriver', u'Driver', u'N', None, None, None, None, u'Identifier', None, u'Primary key, non-localized.internal token for driver'),
-(u'ODBCDriver', u'File_Setup', u'Y', None, None, u'File', 1, u'Identifier', None, u'Optional reference to key driver setup DLL'),
-(u'ODBCDataSource', u'Description', u'N', None, None, None, None, u'Text', None, u'Text used as registered name for data source'),
-(u'ODBCDataSource', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Reference to associated component'),
-(u'ODBCDataSource', u'DataSource', u'N', None, None, None, None, u'Identifier', None, u'Primary key, non-localized.internal token for data source'),
-(u'ODBCDataSource', u'DriverDescription', u'N', None, None, None, None, u'Text', None, u'Reference to driver description, may be existing driver'),
-(u'ODBCDataSource', u'Registration', u'N', 0, 1, None, None, None, None, u'Registration option: 0=machine, 1=user, others t.b.d.'),
-(u'ODBCSourceAttribute', u'Value', u'Y', None, None, None, None, u'Text', None, u'Value for ODBC data source attribute'),
-(u'ODBCSourceAttribute', u'Attribute', u'N', None, None, None, None, u'Text', None, u'Name of ODBC data source attribute'),
-(u'ODBCSourceAttribute', u'DataSource_', u'N', None, None, u'ODBCDataSource', 1, u'Identifier', None, u'Reference to ODBC data source in ODBCDataSource table'),
-(u'ODBCTranslator', u'Description', u'N', None, None, None, None, u'Text', None, u'Text used as registered name for translator'),
-(u'ODBCTranslator', u'File_', u'N', None, None, u'File', 1, u'Identifier', None, u'Reference to key translator file'),
-(u'ODBCTranslator', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Reference to associated component'),
-(u'ODBCTranslator', u'File_Setup', u'Y', None, None, u'File', 1, u'Identifier', None, u'Optional reference to key translator setup DLL'),
-(u'ODBCTranslator', u'Translator', u'N', None, None, None, None, u'Identifier', None, u'Primary key, non-localized.internal token for translator'),
-(u'Patch', u'Sequence', u'N', 0, 32767, None, None, None, None, u'Primary key, sequence with respect to the media images; order must track cabinet order.'),
-(u'Patch', u'Attributes', u'N', 0, 32767, None, None, None, None, u'Integer containing bit flags representing patch attributes'),
-(u'Patch', u'File_', u'N', None, None, None, None, u'Identifier', None, u'Primary key, non-localized token, foreign key to File table, must match identifier in cabinet.'),
-(u'Patch', u'Header', u'Y', None, None, None, None, u'Binary', None, u'Binary stream. The patch header, used for patch validation.'),
-(u'Patch', u'PatchSize', u'N', 0, 2147483647, None, None, None, None, u'Size of patch in bytes (long integer).'),
-(u'Patch', u'StreamRef_', u'Y', None, None, None, None, u'Identifier', None, u'Identifier. Foreign key to the StreamRef column of the MsiPatchHeaders table.'),
-(u'PatchPackage', u'Media_', u'N', 0, 32767, None, None, None, None, u'Foreign key to DiskId column of Media table. Indicates the disk containing the patch package.'),
-(u'PatchPackage', u'PatchId', u'N', None, None, None, None, u'Guid', None, u'A unique string GUID representing this patch.'),
-(u'PublishComponent', u'Feature_', u'N', None, None, u'Feature', 1, u'Identifier', None, u'Foreign key into the Feature table.'),
-(u'PublishComponent', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key into the Component table.'),
-(u'PublishComponent', u'ComponentId', u'N', None, None, None, None, u'Guid', None, u'A string GUID that represents the component id that will be requested by the alien product.'),
-(u'PublishComponent', u'AppData', u'Y', None, None, None, None, u'Text', None, u'This is localisable Application specific data that can be associated with a Qualified Component.'),
-(u'PublishComponent', u'Qualifier', u'N', None, None, None, None, u'Text', None, u'This is defined only when the ComponentId column is an Qualified Component Id. This is the Qualifier for ProvideComponentIndirect.'),
-(u'Registry', u'Name', u'Y', None, None, None, None, u'Formatted', None, u'The registry value name.'),
-(u'Registry', u'Value', u'Y', None, None, None, None, u'Formatted', None, u'The registry value.'),
-(u'Registry', u'Key', u'N', None, None, None, None, u'RegPath', None, u'The key for the registry value.'),
-(u'Registry', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key into the Component table referencing component that controls the installing of the registry value.'),
-(u'Registry', u'Registry', u'N', None, None, None, None, u'Identifier', None, u'Primary key, non-localized token.'),
-(u'Registry', u'Root', u'N', -1, 3, None, None, None, None, u'The predefined root key for the registry value, one of rrkEnum.'),
-(u'RegLocator', u'Name', u'Y', None, None, None, None, u'Formatted', None, u'The registry value name.'),
-(u'RegLocator', u'Type', u'Y', 0, 18, None, None, None, None, u'An integer value that determines if the registry value is a filename or a directory location or to be used as is w/o interpretation.'),
-(u'RegLocator', u'Key', u'N', None, None, None, None, u'RegPath', None, u'The key for the registry value.'),
-(u'RegLocator', u'Signature_', u'N', None, None, None, None, u'Identifier', None, u'The table key. The Signature_ represents a unique file signature and is also the foreign key in the Signature table. If the type is 0, the registry values refers a directory, and _Signature is not a foreign key.'),
-(u'RegLocator', u'Root', u'N', 0, 3, None, None, None, None, u'The predefined root key for the registry value, one of rrkEnum.'),
-(u'RemoveFile', u'InstallMode', u'N', None, None, None, None, None, u'1;2;3', u'Installation option, one of iimEnum.'),
-(u'RemoveFile', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key referencing Component that controls the file to be removed.'),
-(u'RemoveFile', u'FileKey', u'N', None, None, None, None, u'Identifier', None, u'Primary key used to identify a particular file entry'),
-(u'RemoveFile', u'FileName', u'Y', None, None, None, None, u'WildCardFilename', None, u'Name of the file to be removed.'),
-(u'RemoveFile', u'DirProperty', u'N', None, None, None, None, u'Identifier', None, u'Name of a property whose value is assumed to resolve to the full pathname to the folder of the file to be removed.'),
-(u'RemoveIniFile', u'Action', u'N', None, None, None, None, None, u'2;4', u'The type of modification to be made, one of iifEnum.'),
-(u'RemoveIniFile', u'Value', u'Y', None, None, None, None, u'Formatted', None, u'The value to be deleted. The value is required when Action is iifIniRemoveTag'),
-(u'RemoveIniFile', u'Key', u'N', None, None, None, None, u'Formatted', None, u'The .INI file key below Section.'),
-(u'RemoveIniFile', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key into the Component table referencing component that controls the deletion of the .INI value.'),
-(u'RemoveIniFile', u'FileName', u'N', None, None, None, None, u'Filename', None, u'The .INI file name in which to delete the information'),
-(u'RemoveIniFile', u'DirProperty', u'Y', None, None, None, None, u'Identifier', None, u'Foreign key into the Directory table denoting the directory where the .INI file is.'),
-(u'RemoveIniFile', u'Section', u'N', None, None, None, None, u'Formatted', None, u'The .INI file Section.'),
-(u'RemoveIniFile', u'RemoveIniFile', u'N', None, None, None, None, u'Identifier', None, u'Primary key, non-localized token.'),
-(u'RemoveRegistry', u'Name', u'Y', None, None, None, None, u'Formatted', None, u'The registry value name.'),
-(u'RemoveRegistry', u'Key', u'N', None, None, None, None, u'RegPath', None, u'The key for the registry value.'),
-(u'RemoveRegistry', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key into the Component table referencing component that controls the deletion of the registry value.'),
-(u'RemoveRegistry', u'Root', u'N', -1, 3, None, None, None, None, u'The predefined root key for the registry value, one of rrkEnum'),
-(u'RemoveRegistry', u'RemoveRegistry', u'N', None, None, None, None, u'Identifier', None, u'Primary key, non-localized token.'),
-(u'ReserveCost', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Reserve a specified amount of space if this component is to be installed.'),
-(u'ReserveCost', u'ReserveFolder', u'Y', None, None, None, None, u'Identifier', None, u'Name of a property whose value is assumed to resolve to the full path to the destination directory'),
-(u'ReserveCost', u'ReserveKey', u'N', None, None, None, None, u'Identifier', None, u'Primary key that uniquely identifies a particular ReserveCost record'),
-(u'ReserveCost', u'ReserveLocal', u'N', 0, 2147483647, None, None, None, None, u'Disk space to reserve if linked component is installed locally.'),
-(u'ReserveCost', u'ReserveSource', u'N', 0, 2147483647, None, None, None, None, u'Disk space to reserve if linked component is installed to run from the source location.'),
-(u'SelfReg', u'File_', u'N', None, None, u'File', 1, u'Identifier', None, u'Foreign key into the File table denoting the module that needs to be registered.'),
-(u'SelfReg', u'Cost', u'Y', 0, 32767, None, None, None, None, u'The cost of registering the module.'),
-(u'ServiceControl', u'Name', u'N', None, None, None, None, u'Formatted', None, u'Name of a service. /, \\, comma and space are invalid'),
-(u'ServiceControl', u'Event', u'N', 0, 187, None, None, None, None, u'Bit field:  Install:  0x1 = Start, 0x2 = Stop, 0x8 = Delete, Uninstall: 0x10 = Start, 0x20 = Stop, 0x80 = Delete'),
-(u'ServiceControl', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Required foreign key into the Component Table that controls the startup of the service'),
-(u'ServiceControl', u'ServiceControl', u'N', None, None, None, None, u'Identifier', None, u'Primary key, non-localized token.'),
-(u'ServiceControl', u'Arguments', u'Y', None, None, None, None, u'Formatted', None, u'Arguments for the service.  Separate by [~].'),
-(u'ServiceControl', u'Wait', u'Y', 0, 1, None, None, None, None, u'Boolean for whether to wait for the service to fully start'),
-(u'ServiceInstall', u'Name', u'N', None, None, None, None, u'Formatted', None, u'Internal Name of the Service'),
-(u'ServiceInstall', u'Description', u'Y', None, None, None, None, u'Text', None, u'Description of service.'),
-(u'ServiceInstall', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Required foreign key into the Component Table that controls the startup of the service'),
-(u'ServiceInstall', u'Arguments', u'Y', None, None, None, None, u'Formatted', None, u'Arguments to include in every start of the service, passed to WinMain'),
-(u'ServiceInstall', u'ServiceInstall', u'N', None, None, None, None, u'Identifier', None, u'Primary key, non-localized token.'),
-(u'ServiceInstall', u'Dependencies', u'Y', None, None, None, None, u'Formatted', None, u'Other services this depends on to start.  Separate by [~], and end with [~][~]'),
-(u'ServiceInstall', u'DisplayName', u'Y', None, None, None, None, u'Formatted', None, u'External Name of the Service'),
-(u'ServiceInstall', u'ErrorControl', u'N', -2147483647, 2147483647, None, None, None, None, u'Severity of error if service fails to start'),
-(u'ServiceInstall', u'LoadOrderGroup', u'Y', None, None, None, None, u'Formatted', None, u'LoadOrderGroup'),
-(u'ServiceInstall', u'Password', u'Y', None, None, None, None, u'Formatted', None, u'password to run service with.  (with StartName)'),
-(u'ServiceInstall', u'ServiceType', u'N', -2147483647, 2147483647, None, None, None, None, u'Type of the service'),
-(u'ServiceInstall', u'StartName', u'Y', None, None, None, None, u'Formatted', None, u'User or object name to run service as'),
-(u'ServiceInstall', u'StartType', u'N', 0, 4, None, None, None, None, u'Type of the service'),
-(u'Shortcut', u'Name', u'N', None, None, None, None, u'Filename', None, u'The name of the shortcut to be created.'),
-(u'Shortcut', u'Description', u'Y', None, None, None, None, u'Text', None, u'The description for the shortcut.'),
-(u'Shortcut', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Foreign key into the Component table denoting the component whose selection gates the the shortcut creation/deletion.'),
-(u'Shortcut', u'Icon_', u'Y', None, None, u'Icon', 1, u'Identifier', None, u'Foreign key into the File table denoting the external icon file for the shortcut.'),
-(u'Shortcut', u'IconIndex', u'Y', -32767, 32767, None, None, None, None, u'The icon index for the shortcut.'),
-(u'Shortcut', u'Directory_', u'N', None, None, u'Directory', 1, u'Identifier', None, u'Foreign key into the Directory table denoting the directory where the shortcut file is created.'),
-(u'Shortcut', u'Target', u'N', None, None, None, None, u'Shortcut', None, u'The shortcut target. This is usually a property that is expanded to a file or a folder that the shortcut points to.'),
-(u'Shortcut', u'Arguments', u'Y', None, None, None, None, u'Formatted', None, u'The command-line arguments for the shortcut.'),
-(u'Shortcut', u'Shortcut', u'N', None, None, None, None, u'Identifier', None, u'Primary key, non-localized token.'),
-(u'Shortcut', u'Hotkey', u'Y', 0, 32767, None, None, None, None, u'The hotkey for the shortcut. It has the virtual-key code for the key in the low-order byte, and the modifier flags in the high-order byte. '),
-(u'Shortcut', u'ShowCmd', u'Y', None, None, None, None, None, u'1;3;7', u'The show command for the application window.The following values may be used.'),
-(u'Shortcut', u'WkDir', u'Y', None, None, None, None, u'Identifier', None, u'Name of property defining location of working directory.'),
-(u'Signature', u'FileName', u'N', None, None, None, None, u'Filename', None, u'The name of the file. This may contain a "short name|long name" pair.'),
-(u'Signature', u'Signature', u'N', None, None, None, None, u'Identifier', None, u'The table key. The Signature represents a unique file signature.'),
-(u'Signature', u'Languages', u'Y', None, None, None, None, u'Language', None, u'The languages supported by the file.'),
-(u'Signature', u'MaxDate', u'Y', 0, 2147483647, None, None, None, None, u'The maximum creation date of the file.'),
-(u'Signature', u'MaxSize', u'Y', 0, 2147483647, None, None, None, None, u'The maximum size of the file. '),
-(u'Signature', u'MaxVersion', u'Y', None, None, None, None, u'Text', None, u'The maximum version of the file.'),
-(u'Signature', u'MinDate', u'Y', 0, 2147483647, None, None, None, None, u'The minimum creation date of the file.'),
-(u'Signature', u'MinSize', u'Y', 0, 2147483647, None, None, None, None, u'The minimum size of the file.'),
-(u'Signature', u'MinVersion', u'Y', None, None, None, None, u'Text', None, u'The minimum version of the file.'),
-(u'TypeLib', u'Feature_', u'N', None, None, u'Feature', 1, u'Identifier', None, u'Required foreign key into the Feature Table, specifying the feature to validate or install in order for the type library to be operational.'),
-(u'TypeLib', u'Description', u'Y', None, None, None, None, u'Text', None, None),
-(u'TypeLib', u'Component_', u'N', None, None, u'Component', 1, u'Identifier', None, u'Required foreign key into the Component Table, specifying the component for which to return a path when called through LocateComponent.'),
-(u'TypeLib', u'Directory_', u'Y', None, None, u'Directory', 1, u'Identifier', None, u'Optional. The foreign key into the Directory table denoting the path to the help file for the type library.'),
-(u'TypeLib', u'Language', u'N', 0, 32767, None, None, None, None, u'The language of the library.'),
-(u'TypeLib', u'Version', u'Y', 0, 16777215, None, None, None, None, u'The version of the library. The minor version is in the lower 8 bits of the integer. The major version is in the next 16 bits. '),
-(u'TypeLib', u'Cost', u'Y', 0, 2147483647, None, None, None, None, u'The cost associated with the registration of the typelib. This column is currently optional.'),
-(u'TypeLib', u'LibID', u'N', None, None, None, None, u'Guid', None, u'The GUID that represents the library.'),
-(u'Upgrade', u'Attributes', u'N', 0, 2147483647, None, None, None, None, u'The attributes of this product set.'),
-(u'Upgrade', u'Remove', u'Y', None, None, None, None, u'Formatted', None, u'The list of features to remove when uninstalling a product from this set.  The default is "ALL".'),
-(u'Upgrade', u'Language', u'Y', None, None, None, None, u'Language', None, u'A comma-separated list of languages for either products in this set or products not in this set.'),
-(u'Upgrade', u'ActionProperty', u'N', None, None, None, None, u'UpperCase', None, u'The property to set when a product in this set is found.'),
-(u'Upgrade', u'UpgradeCode', u'N', None, None, None, None, u'Guid', None, u'The UpgradeCode GUID belonging to the products in this set.'),
-(u'Upgrade', u'VersionMax', u'Y', None, None, None, None, u'Text', None, u'The maximum ProductVersion of the products in this set.  The set may or may not include products with this particular version.'),
-(u'Upgrade', u'VersionMin', u'Y', None, None, None, None, u'Text', None, u'The minimum ProductVersion of the products in this set.  The set may or may not include products with this particular version.'),
-(u'Verb', u'Sequence', u'Y', 0, 32767, None, None, None, None, u'Order within the verbs for a particular extension. Also used simply to specify the default verb.'),
-(u'Verb', u'Argument', u'Y', None, None, None, None, u'Formatted', None, u'Optional value for the command arguments.'),
-(u'Verb', u'Extension_', u'N', None, None, u'Extension', 1, u'Text', None, u'The extension associated with the table row.'),
-(u'Verb', u'Verb', u'N', None, None, None, None, u'Text', None, u'The verb for the command.'),
-(u'Verb', u'Command', u'Y', None, None, None, None, u'Formatted', None, u'The command text.'),
-]
-
-Error = [
-(0, u'{{Fatal error: }}'),
-(1, u'{{Error [1]. }}'),
-(2, u'Warning [1]. '),
-(3, None),
-(4, u'Info [1]. '),
-(5, u'The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is [1]. {{The arguments are: [2], [3], [4]}}'),
-(6, None),
-(7, u'{{Disk full: }}'),
-(8, u'Action [Time]: [1]. [2]'),
-(9, u'[ProductName]'),
-(10, u'{[2]}{, [3]}{, [4]}'),
-(11, u'Message type: [1], Argument: [2]'),
-(12, u'=== Logging started: [Date]  [Time] ==='),
-(13, u'=== Logging stopped: [Date]  [Time] ==='),
-(14, u'Action start [Time]: [1].'),
-(15, u'Action ended [Time]: [1]. Return value [2].'),
-(16, u'Time remaining: {[1] minutes }{[2] seconds}'),
-(17, u'Out of memory. Shut down other applications before retrying.'),
-(18, u'Installer is no longer responding.'),
-(19, u'Installer stopped prematurely.'),
-(20, u'Please wait while Windows configures [ProductName]'),
-(21, u'Gathering required information...'),
-(22, u'Removing older versions of this application...'),
-(23, u'Preparing to remove older versions of this application...'),
-(32, u'{[ProductName] }Setup completed successfully.'),
-(33, u'{[ProductName] }Setup failed.'),
-(1101, u'Error reading from file: [2]. {{ System error [3].}}  Verify that the file exists and that you can access it.'),
-(1301, u"Cannot create the file '[2]'.  A directory with this name already exists.  Cancel the install and try installing to a different location."),
-(1302, u'Please insert the disk: [2]'),
-(1303, u'The installer has insufficient privileges to access this directory: [2].  The installation cannot continue.  Log on as administrator or contact your system administrator.'),
-(1304, u'Error writing to file: [2].  Verify that you have access to that directory.'),
-(1305, u'Error reading from file [2]. {{ System error [3].}} Verify that the file exists and that you can access it.'),
-(1306, u"Another application has exclusive access to the file '[2]'.  Please shut down all other applications, then click Retry."),
-(1307, u'There is not enough disk space to install this file: [2].  Free some disk space and click Retry, or click Cancel to exit.'),
-(1308, u'Source file not found: [2].  Verify that the file exists and that you can access it.'),
-(1309, u'Error reading from file: [3]. {{ System error [2].}}  Verify that the file exists and that you can access it.'),
-(1310, u'Error writing to file: [3]. {{ System error [2].}}  Verify that you have access to that directory.'),
-(1311, u'Source file not found{{(cabinet)}}: [2].  Verify that the file exists and that you can access it.'),
-(1312, u"Cannot create the directory '[2]'.  A file with this name already exists.  Please rename or remove the file and click retry, or click Cancel to exit."),
-(1313, u'The volume [2] is currently unavailable.  Please select another.'),
-(1314, u"The specified path '[2]' is unavailable."),
-(1315, u'Unable to write to the specified folder: [2].'),
-(1316, u'A network error occurred while attempting to read from the file: [2]'),
-(1317, u'An error occurred while attempting to create the directory: [2]'),
-(1318, u'A network error occurred while attempting to create the directory: [2]'),
-(1319, u'A network error occurred while attempting to open the source file cabinet: [2]'),
-(1320, u'The specified path is too long: [2]'),
-(1321, u'The Installer has insufficient privileges to modify this file: [2].'),
-(1322, u"A portion of the folder path '[2]' is invalid.  It is either empty or exceeds the length allowed by the system."),
-(1323, u"The folder path '[2]' contains words that are not valid in folder paths."),
-(1324, u"The folder path '[2]' contains an invalid character."),
-(1325, u"'[2]' is not a valid short file name."),
-(1326, u'Error getting file security: [3] GetLastError: [2]'),
-(1327, u'Invalid Drive: [2]'),
-(1328, u'Error applying patch to file [2].  It has probably been updated by other means, and can no longer be modified by this patch.  For more information contact your patch vendor.  {{System Error: [3]}}'),
-(1329, u'A file that is required cannot be installed because the cabinet file [2] is not digitally signed.  This may indicate that the cabinet file is corrupt.'),
-(1330, u'A file that is required cannot be installed because the cabinet file [2] has an invalid digital signature.  This may indicate that the cabinet file is corrupt.{{  Error [3] was returned by WinVerifyTrust.}}'),
-(1331, u'Failed to correctly copy [2] file: CRC error.'),
-(1332, u'Failed to correctly move [2] file: CRC error.'),
-(1333, u'Failed to correctly patch [2] file: CRC error.'),
-(1334, u"The file '[2]' cannot be installed because the file cannot be found in cabinet file '[3]'. This could indicate a network error, an error reading from the CD-ROM, or a problem with this package."),
-(1335, u"The cabinet file '[2]' required for this installation is corrupt and cannot be used. This could indicate a network error, an error reading from the CD-ROM, or a problem with this package."),
-(1336, u'There was an error creating a temporary file that is needed to complete this installation.{{  Folder: [3]. System error code: [2]}}'),
-(1401, u'Could not create key: [2]. {{ System error [3].}}  Verify that you have sufficient access to that key, or contact your support personnel. '),
-(1402, u'Could not open key: [2]. {{ System error [3].}}  Verify that you have sufficient access to that key, or contact your support personnel. '),
-(1403, u'Could not delete value [2] from key [3]. {{ System error [4].}}  Verify that you have sufficient access to that key, or contact your support personnel. '),
-(1404, u'Could not delete key [2]. {{ System error [3].}}  Verify that you have sufficient access to that key, or contact your support personnel. '),
-(1405, u'Could not read value [2] from key [3]. {{ System error [4].}}  Verify that you have sufficient access to that key, or contact your support personnel. '),
-(1406, u'Could not write value [2] to key [3]. {{ System error [4].}}  Verify that you have sufficient access to that key, or contact your support personnel.'),
-(1407, u'Could not get value names for key [2]. {{ System error [3].}}  Verify that you have sufficient access to that key, or contact your support personnel.'),
-(1408, u'Could not get sub key names for key [2]. {{ System error [3].}}  Verify that you have sufficient access to that key, or contact your support personnel.'),
-(1409, u'Could not read security information for key [2]. {{ System error [3].}}  Verify that you have sufficient access to that key, or contact your support personnel.'),
-(1410, u'Could not increase the available registry space. [2] KB of free registry space is required for the installation of this application.'),
-(1500, u'Another installation is in progress. You must complete that installation before continuing this one.'),
-(1501, u'Error accessing secured data. Please make sure the Windows Installer is configured properly and try the install again.'),
-(1502, u"User '[2]' has previously initiated an install for product '[3]'.  That user will need to run that install again before they can use that product.  Your current install will now continue."),
-(1503, u"User '[2]' has previously initiated an install for product '[3]'.  That user will need to run that install again before they can use that product."),
-(1601, u"Out of disk space -- Volume: '[2]'; required space: [3] KB; available space: [4] KB.  Free some disk space and retry."),
-(1602, u'Are you sure you want to cancel?'),
-(1603, u"The file [2][3] is being held in use{ by the following process: Name: [4], Id: [5], Window Title: '[6]'}.  Close that application and retry."),
-(1604, u"The product '[2]' is already installed, preventing the installation of this product.  The two products are incompatible."),
-(1605, u"There is not enough disk space on the volume '[2]' to continue the install with recovery enabled. [3] KB are required, but only [4] KB are available. Click Ignore to continue the install without saving recovery information, click Retry to check for available space again, or click Cancel to quit the installation."),
-(1606, u'Could not access network location [2].'),
-(1607, u'The following applications should be closed before continuing the install:'),
-(1608, u'Could not find any previously installed compliant products on the machine for installing this product.'),
-(1609, u"An error occurred while applying security settings. [2] is not a valid user or group. This could be a problem with the package, or a problem connecting to a domain controller on the network. Check your network connection and click Retry, or Cancel to end the install. {{Unable to locate the user's SID, system error [3]}}"),
-(1701, u'The key [2] is not valid.  Verify that you entered the correct key.'),
-(1702, u'The installer must restart your system before configuration of [2] can continue.  Click Yes to restart now or No if you plan to manually restart later.'),
-(1703, u'You must restart your system for the configuration changes made to [2] to take effect. Click Yes to restart now or No if you plan to manually restart later.'),
-(1704, u'An installation for [2] is currently suspended.  You must undo the changes made by that installation to continue.  Do you want to undo those changes?'),
-(1705, u'A previous installation for this product is in progress.  You must undo the changes made by that installation to continue.  Do you want to undo those changes?'),
-(1706, u"An installation package for the product [2] cannot be found. Try the installation again using a valid copy of the installation package '[3]'."),
-(1707, u'Installation completed successfully.'),
-(1708, u'Installation failed.'),
-(1709, u'Product: [2] -- [3]'),
-(1710, u'You may either restore your computer to its previous state or continue the install later. Would you like to restore?'),
-(1711, u'An error occurred while writing installation information to disk.  Check to make sure enough disk space is available, and click Retry, or Cancel to end the install.'),
-(1712, u'One or more of the files required to restore your computer to its previous state could not be found.  Restoration will not be possible.'),
-(1713, u'[2] cannot install one of its required products. Contact your technical support group.  {{System Error: [3].}}'),
-(1714, u'The older version of [2] cannot be removed.  Contact your technical support group.  {{System Error [3].}}'),
-(1715, u'Installed [2]'),
-(1716, u'Configured [2]'),
-(1717, u'Removed [2]'),
-(1718, u'File [2] was rejected by digital signature policy.'),
-(1719, u'The Windows Installer Service could not be accessed. This can occur if you are running Windows in safe mode, or if the Windows Installer is not correctly installed. Contact your support personnel for assistance.'),
-(1720, u'There is a problem with this Windows Installer package. A script required for this install to complete could not be run. Contact your support personnel or package vendor.  {{Custom action [2] script error [3], [4]: [5] Line [6], Column [7], [8] }}'),
-(1721, u'There is a problem with this Windows Installer package. A program required for this install to complete could not be run. Contact your support personnel or package vendor. {{Action: [2], location: [3], command: [4] }}'),
-(1722, u'There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor.  {{Action [2], location: [3], command: [4] }}'),
-(1723, u'There is a problem with this Windows Installer package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor.  {{Action [2], entry: [3], library: [4] }}'),
-(1724, u'Removal completed successfully.'),
-(1725, u'Removal failed.'),
-(1726, u'Advertisement completed successfully.'),
-(1727, u'Advertisement failed.'),
-(1728, u'Configuration completed successfully.'),
-(1729, u'Configuration failed.'),
-(1730, u'You must be an Administrator to remove this application. To remove this application, you can log on as an Administrator, or contact your technical support group for assistance.'),
-(1801, u'The path [2] is not valid.  Please specify a valid path.'),
-(1802, u'Out of memory. Shut down other applications before retrying.'),
-(1803, u'There is no disk in drive [2]. Please insert one and click Retry, or click Cancel to go back to the previously selected volume.'),
-(1804, u'There is no disk in drive [2]. Please insert one and click Retry, or click Cancel to return to the browse dialog and select a different volume.'),
-(1805, u'The folder [2] does not exist.  Please enter a path to an existing folder.'),
-(1806, u'You have insufficient privileges to read this folder.'),
-(1807, u'A valid destination folder for the install could not be determined.'),
-(1901, u'Error attempting to read from the source install database: [2].'),
-(1902, u'Scheduling reboot operation: Renaming file [2] to [3]. Must reboot to complete operation.'),
-(1903, u'Scheduling reboot operation: Deleting file [2]. Must reboot to complete operation.'),
-(1904, u'Module [2] failed to register.  HRESULT [3].  Contact your support personnel.'),
-(1905, u'Module [2] failed to unregister.  HRESULT [3].  Contact your support personnel.'),
-(1906, u'Failed to cache package [2]. Error: [3]. Contact your support personnel.'),
-(1907, u'Could not register font [2].  Verify that you have sufficient permissions to install fonts, and that the system supports this font.'),
-(1908, u'Could not unregister font [2]. Verify that you that you have sufficient permissions to remove fonts.'),
-(1909, u'Could not create Shortcut [2]. Verify that the destination folder exists and that you can access it.'),
-(1910, u'Could not remove Shortcut [2]. Verify that the shortcut file exists and that you can access it.'),
-(1911, u'Could not register type library for file [2].  Contact your support personnel.'),
-(1912, u'Could not unregister type library for file [2].  Contact your support personnel.'),
-(1913, u'Could not update the ini file [2][3].  Verify that the file exists and that you can access it.'),
-(1914, u'Could not schedule file [2] to replace file [3] on reboot.  Verify that you have write permissions to file [3].'),
-(1915, u'Error removing ODBC driver manager, ODBC error [2]: [3]. Contact your support personnel.'),
-(1916, u'Error installing ODBC driver manager, ODBC error [2]: [3]. Contact your support personnel.'),
-(1917, u'Error removing ODBC driver: [4], ODBC error [2]: [3]. Verify that you have sufficient privileges to remove ODBC drivers.'),
-(1918, u'Error installing ODBC driver: [4], ODBC error [2]: [3]. Verify that the file [4] exists and that you can access it.'),
-(1919, u'Error configuring ODBC data source: [4], ODBC error [2]: [3]. Verify that the file [4] exists and that you can access it.'),
-(1920, u"Service '[2]' ([3]) failed to start.  Verify that you have sufficient privileges to start system services."),
-(1921, u"Service '[2]' ([3]) could not be stopped.  Verify that you have sufficient privileges to stop system services."),
-(1922, u"Service '[2]' ([3]) could not be deleted.  Verify that you have sufficient privileges to remove system services."),
-(1923, u"Service '[2]' ([3]) could not be installed.  Verify that you have sufficient privileges to install system services."),
-(1924, u"Could not update environment variable '[2]'.  Verify that you have sufficient privileges to modify environment variables."),
-(1925, u'You do not have sufficient privileges to complete this installation for all users of the machine.  Log on as administrator and then retry this installation.'),
-(1926, u"Could not set file security for file '[3]'. Error: [2].  Verify that you have sufficient privileges to modify the security permissions for this file."),
-(1927, u'Component Services (COM+ 1.0) are not installed on this computer.  This installation requires Component Services in order to complete successfully.  Component Services are available on Windows 2000.'),
-(1928, u'Error registering COM+ Application.  Contact your support personnel for more information.'),
-(1929, u'Error unregistering COM+ Application.  Contact your support personnel for more information.'),
-(1930, u"The description for service '[2]' ([3]) could not be changed."),
-(1931, u'The Windows Installer service cannot update the system file [2] because the file is protected by Windows.  You may need to update your operating system for this program to work correctly. {{Package version: [3], OS Protected version: [4]}}'),
-(1932, u'The Windows Installer service cannot update the protected Windows file [2]. {{Package version: [3], OS Protected version: [4], SFP Error: [5]}}'),
-(1933, u'The Windows Installer service cannot update one or more protected Windows files. {{SFP Error: [2].  List of protected files:\\r\\n[3]}}'),
-(1934, u'User installations are disabled via policy on the machine.'),
-(1935, u'An error occurred during the installation of assembly component [2]. HRESULT: [3]. {{assembly interface: [4], function: [5], assembly name: [6]}}'),
-]
-
-tables=['AdminExecuteSequence', 'AdminUISequence', 'AdvtExecuteSequence', 'BBControl', 'Billboard', 'Binary', 'CheckBox', 'Property', 'ComboBox', 'Control', 'ListBox', 'ActionText', 'ControlCondition', 'ControlEvent', 'Dialog', 'EventMapping', 'InstallExecuteSequence', 'InstallUISequence', 'ListView', 'RadioButton', 'TextStyle', 'UIText', '_Validation', 'Error']
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/uuids.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/uuids.py
deleted file mode 100644
index 1160584..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/msi/uuids.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# This should be extended for each Python release.
-# The product code must change whenever the name of the MSI file
-# changes, and when new component codes are issued for existing
-# components. See "Changing the Product Code". As we change the
-# component codes with every build, we need a new product code
-# each time. For intermediate (snapshot) releases, they are automatically
-# generated. For official releases, we record the product codes,
-# so people can refer to them.
-product_codes = {
-    '2.5.101': '{bc14ce3e-5e72-4a64-ac1f-bf59a571898c}', # 2.5a1
-    '2.5.102': '{5eed51c1-8e9d-4071-94c5-b40de5d49ba5}', # 2.5a2
-    '2.5.103': '{73dcd966-ffec-415f-bb39-8342c1f47017}', # 2.5a3
-    '2.5.111': '{c797ecf8-a8e6-4fec-bb99-526b65f28626}', # 2.5b1
-    '2.5.112': '{32beb774-f625-439d-b587-7187487baf15}', # 2.5b2
-    '2.5.113': '{89f23918-11cf-4f08-be13-b9b2e6463fd9}', # 2.5b3
-    '2.5.121': '{8e9321bc-6b24-48a3-8fd4-c95f8e531e5f}', # 2.5c1
-    '2.5.122': '{a6cd508d-9599-45da-a441-cbffa9f7e070}', # 2.5c2
-    '2.5.150': '{0a2c5854-557e-48c8-835a-3b9f074bdcaa}', # 2.5.0
-    '2.5.1121':'{0378b43e-6184-4c2f-be1a-4a367781cd54}', # 2.5.1c1
-    '2.5.1150':'{31800004-6386-4999-a519-518f2d78d8f0}', # 2.5.1
-    '2.5.2150':'{6304a7da-1132-4e91-a343-a296269eab8a}', # 2.5.2c1
-    '2.5.2150':'{6b976adf-8ae8-434e-b282-a06c7f624d2f}', # 2.5.2
-    '2.6.101': '{0ba82e1b-52fd-4e03-8610-a6c76238e8a8}', # 2.6a1
-    '2.6.102': '{3b27e16c-56db-4570-a2d3-e9a26180c60b}', # 2.6a2
-    '2.6.103': '{cd06a9c5-bde5-4bd7-9874-48933997122a}', # 2.6a3
-    '2.6.104': '{dc6ed634-474a-4a50-a547-8de4b7491e53}', # 2.6a4
-    '2.6.111': '{3f82079a-5bee-4c4a-8a41-8292389e24ae}', # 2.6b1
-    '2.6.112': '{8a0e5970-f3e6-4737-9a2b-bc5ff0f15fb5}', # 2.6b2
-    '2.6.113': '{df4f5c21-6fcc-4540-95de-85feba634e76}', # 2.6b3
-    '2.6.121': '{bbd34464-ddeb-4028-99e5-f16c4a8fbdb3}', # 2.6c1
-    '2.6.122': '{8f64787e-a023-4c60-bfee-25d3a3f592c6}', # 2.6c2
-    '2.6.150': '{110eb5c4-e995-4cfb-ab80-a5f315bea9e8}', # 2.6.0
-    '2.6.1150':'{9cc89170-000b-457d-91f1-53691f85b223}', # 2.6.1
-    '2.6.2121':'{adac412b-b209-4c15-b6ab-dca1b6e47144}', # 2.6.2c1
-    '2.6.2150':'{24aab420-4e30-4496-9739-3e216f3de6ae}', # 2.6.2
-    '2.6.3121':'{a73e0254-dcda-4fe4-bf37-c7e1c4f4ebb6}', # 2.6.3c1
-    '2.6.3150':'{3d9ac095-e115-4e94-bdef-7f7edf17697d}', # 2.6.3
-    '2.6.4121':'{727de605-0359-4606-a94b-c2033652379b}', # 2.6.4c1
-    '2.6.4122':'{4f7603c6-6352-4299-a398-150a31b19acc}', # 2.6.4c2
-    '2.6.4150':'{e7394a0f-3f80-45b1-87fc-abcd51893246}', # 2.6.4
-    '2.6.5121':'{e0e273d7-7598-4701-8325-c90c069fd5ff}', # 2.6.5c1
-    '2.6.5122':'{fa227b76-0671-4dc6-b826-c2ff2a70dfd5}', # 2.6.5c2
-    '2.6.5150':'{4723f199-fa64-4233-8e6e-9fccc95a18ee}', # 2.6.5
-    '2.7.101': '{eca1bbef-432c-49ae-a667-c213cc7bbf22}', # 2.7a1
-    '2.7.102': '{21ce16ed-73c4-460d-9b11-522f417b2090}', # 2.7a2
-    '2.7.103': '{6e7dbd55-ba4a-48ac-a688-6c75db4d7500}', # 2.7a3
-    '2.7.104': '{ee774ba3-74a5-48d9-b425-b35a287260c8}', # 2.7a4
-    '2.7.111': '{9cfd9ec7-a9c7-4980-a1c6-054fc6493eb3}', # 2.7b1
-    '2.7.112': '{9a72faf6-c304-4165-8595-9291ff30cac6}', # 2.7b2
-    '2.7.121': '{f530c94a-dd53-4de9-948e-b632b9cb48d2}', # 2.7c1
-    '2.7.122': '{f80905d2-dd8d-4b8e-8a40-c23c93dca07d}', # 2.7c2
-    '2.7.150': '{20c31435-2a0a-4580-be8b-ac06fc243ca4}', # 2.7.0
-    '2.7.1121':'{60a4036a-374c-4fd2-84b9-bfae7db03931}', # 2.7.1rc1
-    '2.7.1122':'{5965e7d1-5584-4de9-b13a-694e0b2ee3a6}', # 2.7.1rc2
-    '2.7.1150':'{32939827-d8e5-470a-b126-870db3c69fdf}', # 2.7.1
-    '2.7.2121':'{B2E1F06E-F719-4786-972A-488A336EB2A0}', # 2.7.2rc1
-    '2.7.2150':'{2E295B5B-1AD4-4d36-97C2-A316084722CF}', # 2.7.2
-}
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Arithmetic.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Arithmetic.py
deleted file mode 100644
index c88c837..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Arithmetic.py
+++ /dev/null
@@ -1,777 +0,0 @@
-from pybench import Test
-
-class SimpleIntegerArithmetic(Test):
-
-    version = 2.0
-    operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
-    rounds = 120000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-
-            a = 2
-            b = 3
-            c = 3
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2
-            b = 3
-            c = 3
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2
-            b = 3
-            c = 3
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2
-            b = 3
-            c = 3
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2
-            b = 3
-            c = 3
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
-
-class SimpleFloatArithmetic(Test):
-
-    version = 2.0
-    operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
-    rounds = 120000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-
-            a = 2.1
-            b = 3.3332
-            c = 3.14159
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2.1
-            b = 3.3332
-            c = 3.14159
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2.1
-            b = 3.3332
-            c = 3.14159
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2.1
-            b = 3.3332
-            c = 3.14159
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2.1
-            b = 3.3332
-            c = 3.14159
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
-
-class SimpleIntFloatArithmetic(Test):
-
-    version = 2.0
-    operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
-    rounds = 120000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-
-            a = 2
-            b = 3
-            c = 3.14159
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2
-            b = 3
-            c = 3.14159
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2
-            b = 3
-            c = 3.14159
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2
-            b = 3
-            c = 3.14159
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2
-            b = 3
-            c = 3.14159
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class SimpleLongArithmetic(Test):
-
-    version = 2.0
-    operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
-    rounds = 60000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-
-            a = 2220001L
-            b = 100001L
-            c = 30005L
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2220001L
-            b = 100001L
-            c = 30005L
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2220001L
-            b = 100001L
-            c = 30005L
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2220001L
-            b = 100001L
-            c = 30005L
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2220001L
-            b = 100001L
-            c = 30005L
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
-
-class SimpleComplexArithmetic(Test):
-
-    version = 2.0
-    operations = 5 * (3 + 5 + 5 + 3 + 3 + 3)
-    rounds = 80000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-
-            a = 2 + 3j
-            b = 2.5 + 4.5j
-            c = 1.2 + 6.2j
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2 + 3j
-            b = 2.5 + 4.5j
-            c = 1.2 + 6.2j
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2 + 3j
-            b = 2.5 + 4.5j
-            c = 1.2 + 6.2j
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2 + 3j
-            b = 2.5 + 4.5j
-            c = 1.2 + 6.2j
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            a = 2 + 3j
-            b = 2.5 + 4.5j
-            c = 1.2 + 6.2j
-
-            c = a + b
-            c = b + c
-            c = c + a
-            c = a + b
-            c = b + c
-
-            c = c - a
-            c = a - b
-            c = b - c
-            c = c - a
-            c = b - c
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-            c = a * b
-            c = b * a
-            c = c * b
-
-            c = a / b
-            c = b / a
-            c = c / b
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Calls.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Calls.py
deleted file mode 100644
index 631dbf0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Calls.py
+++ /dev/null
@@ -1,560 +0,0 @@
-from pybench import Test
-
-class PythonFunctionCalls(Test):
-
-    version = 2.0
-    operations = 5*(1+4+4+2)
-    rounds = 60000
-
-    def test(self):
-
-        global f,f1,g,h
-
-        # define functions
-        def f():
-            pass
-
-        def f1(x):
-            pass
-
-        def g(a,b,c):
-            return a,b,c
-
-        def h(a,b,c,d=1,e=2,f=3):
-            return d,e,f
-
-        # do calls
-        for i in xrange(self.rounds):
-
-            f()
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            g(i,i,i)
-            g(i,i,i)
-            g(i,i,i)
-            g(i,i,i)
-            h(i,i,3,i,i)
-            h(i,i,i,2,i,3)
-
-            f()
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            g(i,i,i)
-            g(i,i,i)
-            g(i,i,i)
-            g(i,i,i)
-            h(i,i,3,i,i)
-            h(i,i,i,2,i,3)
-
-            f()
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            g(i,i,i)
-            g(i,i,i)
-            g(i,i,i)
-            g(i,i,i)
-            h(i,i,3,i,i)
-            h(i,i,i,2,i,3)
-
-            f()
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            g(i,i,i)
-            g(i,i,i)
-            g(i,i,i)
-            g(i,i,i)
-            h(i,i,3,i,i)
-            h(i,i,i,2,i,3)
-
-            f()
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            g(i,i,i)
-            g(i,i,i)
-            g(i,i,i)
-            g(i,i,i)
-            h(i,i,3,i,i)
-            h(i,i,i,2,i,3)
-
-    def calibrate(self):
-
-        global f,f1,g,h
-
-        # define functions
-        def f():
-            pass
-
-        def f1(x):
-            pass
-
-        def g(a,b,c):
-            return a,b,c
-
-        def h(a,b,c,d=1,e=2,f=3):
-            return d,e,f
-
-        # do calls
-        for i in xrange(self.rounds):
-            pass
-
-###
-
-class ComplexPythonFunctionCalls(Test):
-
-    version = 2.0
-    operations = 4*5
-    rounds = 100000
-
-    def test(self):
-
-        # define functions
-        def f(a,b,c,d=1,e=2,f=3):
-            return f
-
-        args = 1,2
-        kwargs = dict(c=3,d=4,e=5)
-
-        # do calls
-        for i in xrange(self.rounds):
-            f(a=i,b=i,c=i)
-            f(f=i,e=i,d=i,c=2,b=i,a=3)
-            f(1,b=i,**kwargs)
-            f(*args,**kwargs)
-
-            f(a=i,b=i,c=i)
-            f(f=i,e=i,d=i,c=2,b=i,a=3)
-            f(1,b=i,**kwargs)
-            f(*args,**kwargs)
-
-            f(a=i,b=i,c=i)
-            f(f=i,e=i,d=i,c=2,b=i,a=3)
-            f(1,b=i,**kwargs)
-            f(*args,**kwargs)
-
-            f(a=i,b=i,c=i)
-            f(f=i,e=i,d=i,c=2,b=i,a=3)
-            f(1,b=i,**kwargs)
-            f(*args,**kwargs)
-
-            f(a=i,b=i,c=i)
-            f(f=i,e=i,d=i,c=2,b=i,a=3)
-            f(1,b=i,**kwargs)
-            f(*args,**kwargs)
-
-
-    def calibrate(self):
-
-        # define functions
-        def f(a,b,c,d=1,e=2,f=3):
-            return f
-
-        args = 1,2
-        kwargs = dict(c=3,d=4,e=5)
-
-        # do calls
-        for i in xrange(self.rounds):
-            pass
-
-###
-
-class BuiltinFunctionCalls(Test):
-
-    version = 2.0
-    operations = 5*(2+5+5+5)
-    rounds = 60000
-
-    def test(self):
-
-        # localize functions
-        f0 = globals
-        f1 = hash
-        f2 = cmp
-        f3 = range
-
-        # do calls
-        for i in xrange(self.rounds):
-
-            f0()
-            f0()
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-
-            f0()
-            f0()
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-
-            f0()
-            f0()
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-
-            f0()
-            f0()
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-
-            f0()
-            f0()
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            f1(i)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f2(1,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-            f3(1,3,2)
-
-    def calibrate(self):
-
-        # localize functions
-        f0 = dir
-        f1 = hash
-        f2 = range
-        f3 = range
-
-        # do calls
-        for i in xrange(self.rounds):
-            pass
-
-###
-
-class PythonMethodCalls(Test):
-
-    version = 2.0
-    operations = 5*(6 + 5 + 4)
-    rounds = 30000
-
-    def test(self):
-
-        class c:
-
-            x = 2
-            s = 'string'
-
-            def f(self):
-
-                return self.x
-
-            def j(self,a,b):
-
-                self.y = a
-                self.t = b
-                return self.y
-
-            def k(self,a,b,c=3):
-
-                self.y = a
-                self.s = b
-                self.t = c
-
-        o = c()
-
-        for i in xrange(self.rounds):
-
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.j(i,i)
-            o.j(i,i)
-            o.j(i,2)
-            o.j(i,2)
-            o.j(2,2)
-            o.k(i,i)
-            o.k(i,2)
-            o.k(i,2,3)
-            o.k(i,i,c=4)
-
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.j(i,i)
-            o.j(i,i)
-            o.j(i,2)
-            o.j(i,2)
-            o.j(2,2)
-            o.k(i,i)
-            o.k(i,2)
-            o.k(i,2,3)
-            o.k(i,i,c=4)
-
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.j(i,i)
-            o.j(i,i)
-            o.j(i,2)
-            o.j(i,2)
-            o.j(2,2)
-            o.k(i,i)
-            o.k(i,2)
-            o.k(i,2,3)
-            o.k(i,i,c=4)
-
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.j(i,i)
-            o.j(i,i)
-            o.j(i,2)
-            o.j(i,2)
-            o.j(2,2)
-            o.k(i,i)
-            o.k(i,2)
-            o.k(i,2,3)
-            o.k(i,i,c=4)
-
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.f()
-            o.j(i,i)
-            o.j(i,i)
-            o.j(i,2)
-            o.j(i,2)
-            o.j(2,2)
-            o.k(i,i)
-            o.k(i,2)
-            o.k(i,2,3)
-            o.k(i,i,c=4)
-
-    def calibrate(self):
-
-        class c:
-
-            x = 2
-            s = 'string'
-
-            def f(self):
-
-                return self.x
-
-            def j(self,a,b):
-
-                self.y = a
-                self.t = b
-
-            def k(self,a,b,c=3):
-
-                self.y = a
-                self.s = b
-                self.t = c
-
-        o = c
-
-        for i in xrange(self.rounds):
-            pass
-
-###
-
-class Recursion(Test):
-
-    version = 2.0
-    operations = 5
-    rounds = 100000
-
-    def test(self):
-
-        global f
-
-        def f(x):
-
-            if x > 1:
-                return f(x-1)
-            return 1
-
-        for i in xrange(self.rounds):
-            f(10)
-            f(10)
-            f(10)
-            f(10)
-            f(10)
-
-    def calibrate(self):
-
-        global f
-
-        def f(x):
-
-            if x > 0:
-                return f(x-1)
-            return 1
-
-        for i in xrange(self.rounds):
-            pass
-
-
-### Test to make Fredrik happy...
-
-if __name__ == '__main__':
-    import timeit
-    if 0:
-        timeit.TestClass = PythonFunctionCalls
-        timeit.main(['-s', 'test = TestClass(); test.rounds = 1000',
-                     'test.test()'])
-    else:
-        setup = """\
-global f,f1,g,h
-
-# define functions
-def f():
-    pass
-
-def f1(x):
-    pass
-
-def g(a,b,c):
-    return a,b,c
-
-def h(a,b,c,d=1,e=2,f=3):
-    return d,e,f
-
-i = 1
-"""
-        test = """\
-f()
-f1(i)
-f1(i)
-f1(i)
-f1(i)
-g(i,i,i)
-g(i,i,i)
-g(i,i,i)
-g(i,i,i)
-h(i,i,3,i,i)
-h(i,i,i,2,i,3)
-
-f()
-f1(i)
-f1(i)
-f1(i)
-f1(i)
-g(i,i,i)
-g(i,i,i)
-g(i,i,i)
-g(i,i,i)
-h(i,i,3,i,i)
-h(i,i,i,2,i,3)
-
-f()
-f1(i)
-f1(i)
-f1(i)
-f1(i)
-g(i,i,i)
-g(i,i,i)
-g(i,i,i)
-g(i,i,i)
-h(i,i,3,i,i)
-h(i,i,i,2,i,3)
-
-f()
-f1(i)
-f1(i)
-f1(i)
-f1(i)
-g(i,i,i)
-g(i,i,i)
-g(i,i,i)
-g(i,i,i)
-h(i,i,3,i,i)
-h(i,i,i,2,i,3)
-
-f()
-f1(i)
-f1(i)
-f1(i)
-f1(i)
-g(i,i,i)
-g(i,i,i)
-g(i,i,i)
-g(i,i,i)
-h(i,i,3,i,i)
-h(i,i,i,2,i,3)
-"""
-
-        timeit.main(['-s', setup,
-                     test])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/CommandLine.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/CommandLine.py
deleted file mode 100644
index 2cb0836..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/CommandLine.py
+++ /dev/null
@@ -1,634 +0,0 @@
-""" CommandLine - Get and parse command line options
-
-    NOTE: This still is very much work in progress !!!
-
-    Different version are likely to be incompatible.
-
-    TODO:
-
-    * Incorporate the changes made by (see Inbox)
-    * Add number range option using srange()
-
-"""
-
-__copyright__ = """\
-Copyright (c), 1997-2006, Marc-Andre Lemburg (mal@lemburg.com)
-Copyright (c), 2000-2006, eGenix.com Software GmbH (info@egenix.com)
-See the documentation for further information on copyrights,
-or contact the author. All Rights Reserved.
-"""
-
-__version__ = '1.2'
-
-import sys, getopt, string, glob, os, re, exceptions, traceback
-
-### Helpers
-
-def _getopt_flags(options):
-
-    """ Convert the option list to a getopt flag string and long opt
-        list
-
-    """
-    s = []
-    l = []
-    for o in options:
-        if o.prefix == '-':
-            # short option
-            s.append(o.name)
-            if o.takes_argument:
-                s.append(':')
-        else:
-            # long option
-            if o.takes_argument:
-                l.append(o.name+'=')
-            else:
-                l.append(o.name)
-    return string.join(s,''),l
-
-def invisible_input(prompt='>>> '):
-
-    """ Get raw input from a terminal without echoing the characters to
-        the terminal, e.g. for password queries.
-
-    """
-    import getpass
-    entry = getpass.getpass(prompt)
-    if entry is None:
-        raise KeyboardInterrupt
-    return entry
-
-def fileopen(name, mode='wb', encoding=None):
-
-    """ Open a file using mode.
-
-        Default mode is 'wb' meaning to open the file for writing in
-        binary mode. If encoding is given, I/O to and from the file is
-        transparently encoded using the given encoding.
-
-        Files opened for writing are chmod()ed to 0600.
-
-    """
-    if name == 'stdout':
-        return sys.stdout
-    elif name == 'stderr':
-        return sys.stderr
-    elif name == 'stdin':
-        return sys.stdin
-    else:
-        if encoding is not None:
-            import codecs
-            f = codecs.open(name, mode, encoding)
-        else:
-            f = open(name, mode)
-        if 'w' in mode:
-            os.chmod(name, 0600)
-        return f
-
-def option_dict(options):
-
-    """ Return a dictionary mapping option names to Option instances.
-    """
-    d = {}
-    for option in options:
-        d[option.name] = option
-    return d
-
-# Alias
-getpasswd = invisible_input
-
-_integerRE = re.compile('\s*(-?\d+)\s*$')
-_integerRangeRE = re.compile('\s*(-?\d+)\s*-\s*(-?\d+)\s*$')
-
-def srange(s,
-
-           split=string.split,integer=_integerRE,
-           integerRange=_integerRangeRE):
-
-    """ Converts a textual representation of integer numbers and ranges
-        to a Python list.
-
-        Supported formats: 2,3,4,2-10,-1 - -3, 5 - -2
-
-        Values are appended to the created list in the order specified
-        in the string.
-
-    """
-    l = []
-    append = l.append
-    for entry in split(s,','):
-        m = integer.match(entry)
-        if m:
-            append(int(m.groups()[0]))
-            continue
-        m = integerRange.match(entry)
-        if m:
-            start,end = map(int,m.groups())
-            l[len(l):] = range(start,end+1)
-    return l
-
-def abspath(path,
-
-            expandvars=os.path.expandvars,expanduser=os.path.expanduser,
-            join=os.path.join,getcwd=os.getcwd):
-
-    """ Return the corresponding absolute path for path.
-
-        path is expanded in the usual shell ways before
-        joining it with the current working directory.
-
-    """
-    try:
-        path = expandvars(path)
-    except AttributeError:
-        pass
-    try:
-        path = expanduser(path)
-    except AttributeError:
-        pass
-    return join(getcwd(), path)
-
-### Option classes
-
-class Option:
-
-    """ Option base class. Takes no argument.
-
-    """
-    default = None
-    helptext = ''
-    prefix = '-'
-    takes_argument = 0
-    has_default = 0
-    tab = 15
-
-    def __init__(self,name,help=None):
-
-        if not name[:1] == '-':
-            raise TypeError,'option names must start with "-"'
-        if name[1:2] == '-':
-            self.prefix = '--'
-            self.name = name[2:]
-        else:
-            self.name = name[1:]
-        if help:
-            self.help = help
-
-    def __str__(self):
-
-        o = self
-        name = o.prefix + o.name
-        if o.takes_argument:
-            name = name + ' arg'
-        if len(name) > self.tab:
-            name = name + '\n' + ' ' * (self.tab + 1 + len(o.prefix))
-        else:
-            name = '%-*s ' % (self.tab, name)
-        description = o.help
-        if o.has_default:
-            description = description + ' (%s)' % o.default
-        return '%s %s' % (name, description)
-
-class ArgumentOption(Option):
-
-    """ Option that takes an argument.
-
-        An optional default argument can be given.
-
-    """
-    def __init__(self,name,help=None,default=None):
-
-        # Basemethod
-        Option.__init__(self,name,help)
-
-        if default is not None:
-            self.default = default
-            self.has_default = 1
-        self.takes_argument = 1
-
-class SwitchOption(Option):
-
-    """ Options that can be on or off. Has an optional default value.
-
-    """
-    def __init__(self,name,help=None,default=None):
-
-        # Basemethod
-        Option.__init__(self,name,help)
-
-        if default is not None:
-            self.default = default
-            self.has_default = 1
-
-### Application baseclass
-
-class Application:
-
-    """ Command line application interface with builtin argument
-        parsing.
-
-    """
-    # Options the program accepts (Option instances)
-    options = []
-
-    # Standard settings; these are appended to options in __init__
-    preset_options = [SwitchOption('-v',
-                                   'generate verbose output'),
-                      SwitchOption('-h',
-                                   'show this help text'),
-                      SwitchOption('--help',
-                                   'show this help text'),
-                      SwitchOption('--debug',
-                                   'enable debugging'),
-                      SwitchOption('--copyright',
-                                   'show copyright'),
-                      SwitchOption('--examples',
-                                   'show examples of usage')]
-
-    # The help layout looks like this:
-    # [header]   - defaults to ''
-    #
-    # [synopsis] - formatted as '<self.name> %s' % self.synopsis
-    #
-    # options:
-    # [options]  - formatted from self.options
-    #
-    # [version]  - formatted as 'Version:\n %s' % self.version, if given
-    #
-    # [about]    - defaults to ''
-    #
-    # Note: all fields that do not behave as template are formatted
-    #       using the instances dictionary as substitution namespace,
-    #       e.g. %(name)s will be replaced by the applications name.
-    #
-
-    # Header (default to program name)
-    header = ''
-
-    # Name (defaults to program name)
-    name = ''
-
-    # Synopsis (%(name)s is replaced by the program name)
-    synopsis = '%(name)s [option] files...'
-
-    # Version (optional)
-    version = ''
-
-    # General information printed after the possible options (optional)
-    about = ''
-
-    # Examples of usage to show when the --examples option is given (optional)
-    examples = ''
-
-    # Copyright to show
-    copyright = __copyright__
-
-    # Apply file globbing ?
-    globbing = 1
-
-    # Generate debug output ?
-    debug = 0
-
-    # Generate verbose output ?
-    verbose = 0
-
-    # Internal errors to catch
-    InternalError = exceptions.Exception
-
-    # Instance variables:
-    values = None       # Dictionary of passed options (or default values)
-                        # indexed by the options name, e.g. '-h'
-    files = None        # List of passed filenames
-    optionlist = None   # List of passed options
-
-    def __init__(self,argv=None):
-
-        # Setup application specs
-        if argv is None:
-            argv = sys.argv
-        self.filename = os.path.split(argv[0])[1]
-        if not self.name:
-            self.name = os.path.split(self.filename)[1]
-        else:
-            self.name = self.name
-        if not self.header:
-            self.header = self.name
-        else:
-            self.header = self.header
-
-        # Init .arguments list
-        self.arguments = argv[1:]
-
-        # Setup Option mapping
-        self.option_map = option_dict(self.options)
-
-        # Append preset options
-        for option in self.preset_options:
-            if not self.option_map.has_key(option.name):
-                self.add_option(option)
-
-        # Init .files list
-        self.files = []
-
-        # Start Application
-        try:
-            # Process startup
-            rc = self.startup()
-            if rc is not None:
-                raise SystemExit,rc
-
-            # Parse command line
-            rc = self.parse()
-            if rc is not None:
-                raise SystemExit,rc
-
-            # Start application
-            rc = self.main()
-            if rc is None:
-                rc = 0
-
-        except SystemExit,rc:
-            pass
-
-        except KeyboardInterrupt:
-            print
-            print '* User Break'
-            print
-            rc = 1
-
-        except self.InternalError:
-            print
-            print '* Internal Error (use --debug to display the traceback)'
-            if self.debug:
-                print
-                traceback.print_exc(20, sys.stdout)
-            elif self.verbose:
-                print '  %s: %s' % sys.exc_info()[:2]
-            print
-            rc = 1
-
-        raise SystemExit,rc
-
-    def add_option(self, option):
-
-        """ Add a new Option instance to the Application dynamically.
-
-            Note that this has to be done *before* .parse() is being
-            executed.
-
-        """
-        self.options.append(option)
-        self.option_map[option.name] = option
-
-    def startup(self):
-
-        """ Set user defined instance variables.
-
-            If this method returns anything other than None, the
-            process is terminated with the return value as exit code.
-
-        """
-        return None
-
-    def exit(self, rc=0):
-
-        """ Exit the program.
-
-            rc is used as exit code and passed back to the calling
-            program. It defaults to 0 which usually means: OK.
-
-        """
-        raise SystemExit, rc
-
-    def parse(self):
-
-        """ Parse the command line and fill in self.values and self.files.
-
-            After having parsed the options, the remaining command line
-            arguments are interpreted as files and passed to .handle_files()
-            for processing.
-
-            As final step the option handlers are called in the order
-            of the options given on the command line.
-
-        """
-        # Parse arguments
-        self.values = values = {}
-        for o in self.options:
-            if o.has_default:
-                values[o.prefix+o.name] = o.default
-            else:
-                values[o.prefix+o.name] = 0
-        flags,lflags = _getopt_flags(self.options)
-        try:
-            optlist,files = getopt.getopt(self.arguments,flags,lflags)
-            if self.globbing:
-                l = []
-                for f in files:
-                    gf = glob.glob(f)
-                    if not gf:
-                        l.append(f)
-                    else:
-                        l[len(l):] = gf
-                files = l
-            self.optionlist = optlist
-            self.files = files + self.files
-        except getopt.error,why:
-            self.help(why)
-            sys.exit(1)
-
-        # Call file handler
-        rc = self.handle_files(self.files)
-        if rc is not None:
-            sys.exit(rc)
-
-        # Call option handlers
-        for optionname, value in optlist:
-
-            # Try to convert value to integer
-            try:
-                value = string.atoi(value)
-            except ValueError:
-                pass
-
-            # Find handler and call it (or count the number of option
-            # instances on the command line)
-            handlername = 'handle' + string.replace(optionname, '-', '_')
-            try:
-                handler = getattr(self, handlername)
-            except AttributeError:
-                if value == '':
-                    # count the number of occurances
-                    if values.has_key(optionname):
-                        values[optionname] = values[optionname] + 1
-                    else:
-                        values[optionname] = 1
-                else:
-                    values[optionname] = value
-            else:
-                rc = handler(value)
-                if rc is not None:
-                    raise SystemExit, rc
-
-        # Apply final file check (for backward compatibility)
-        rc = self.check_files(self.files)
-        if rc is not None:
-            sys.exit(rc)
-
-    def check_files(self,filelist):
-
-        """ Apply some user defined checks on the files given in filelist.
-
-            This may modify filelist in place. A typical application
-            is checking that at least n files are given.
-
-            If this method returns anything other than None, the
-            process is terminated with the return value as exit code.
-
-        """
-        return None
-
-    def help(self,note=''):
-
-        self.print_header()
-        if self.synopsis:
-            print 'Synopsis:'
-            # To remain backward compatible:
-            try:
-                synopsis = self.synopsis % self.name
-            except (NameError, KeyError, TypeError):
-                synopsis = self.synopsis % self.__dict__
-            print ' ' + synopsis
-        print
-        self.print_options()
-        if self.version:
-            print 'Version:'
-            print ' %s' % self.version
-            print
-        if self.about:
-            print string.strip(self.about % self.__dict__)
-            print
-        if note:
-            print '-'*72
-            print 'Note:',note
-            print
-
-    def notice(self,note):
-
-        print '-'*72
-        print 'Note:',note
-        print '-'*72
-        print
-
-    def print_header(self):
-
-        print '-'*72
-        print self.header % self.__dict__
-        print '-'*72
-        print
-
-    def print_options(self):
-
-        options = self.options
-        print 'Options and default settings:'
-        if not options:
-            print '  None'
-            return
-        long = filter(lambda x: x.prefix == '--', options)
-        short = filter(lambda x: x.prefix == '-', options)
-        items = short + long
-        for o in options:
-            print ' ',o
-        print
-
-    #
-    # Example handlers:
-    #
-    # If a handler returns anything other than None, processing stops
-    # and the return value is passed to sys.exit() as argument.
-    #
-
-    # File handler
-    def handle_files(self,files):
-
-        """ This may process the files list in place.
-        """
-        return None
-
-    # Short option handler
-    def handle_h(self,arg):
-
-        self.help()
-        return 0
-
-    def handle_v(self, value):
-
-        """ Turn on verbose output.
-        """
-        self.verbose = 1
-
-    # Handlers for long options have two underscores in their name
-    def handle__help(self,arg):
-
-        self.help()
-        return 0
-
-    def handle__debug(self,arg):
-
-        self.debug = 1
-        # We don't want to catch internal errors:
-        self.InternalError = None
-
-    def handle__copyright(self,arg):
-
-        self.print_header()
-        print string.strip(self.copyright % self.__dict__)
-        print
-        return 0
-
-    def handle__examples(self,arg):
-
-        self.print_header()
-        if self.examples:
-            print 'Examples:'
-            print
-            print string.strip(self.examples % self.__dict__)
-            print
-        else:
-            print 'No examples available.'
-            print
-        return 0
-
-    def main(self):
-
-        """ Override this method as program entry point.
-
-            The return value is passed to sys.exit() as argument.  If
-            it is None, 0 is assumed (meaning OK). Unhandled
-            exceptions are reported with exit status code 1 (see
-            __init__ for further details).
-
-        """
-        return None
-
-# Alias
-CommandLine = Application
-
-def _test():
-
-    class MyApplication(Application):
-        header = 'Test Application'
-        version = __version__
-        options = [Option('-v','verbose')]
-
-        def handle_v(self,arg):
-            print 'VERBOSE, Yeah !'
-
-    cmd = MyApplication()
-    if not cmd.values['-h']:
-        cmd.help()
-    print 'files:',cmd.files
-    print 'Bye...'
-
-if __name__ == '__main__':
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Constructs.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Constructs.py
deleted file mode 100644
index b43e125..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Constructs.py
+++ /dev/null
@@ -1,564 +0,0 @@
-from pybench import Test
-
-class IfThenElse(Test):
-
-    version = 2.0
-    operations = 30*3 # hard to say...
-    rounds = 150000
-
-    def test(self):
-
-        a,b,c = 1,2,3
-        for i in xrange(self.rounds):
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-            if a == 1:
-                if b == 2:
-                    if c != 3:
-                        c = 3
-                        b = 3
-                    else:
-                        c = 2
-                elif b == 3:
-                    b = 2
-                    a = 2
-            elif a == 2:
-                a = 3
-            else:
-                a = 1
-
-    def calibrate(self):
-
-        a,b,c = 1,2,3
-        for i in xrange(self.rounds):
-            pass
-
-class NestedForLoops(Test):
-
-    version = 2.0
-    operations = 1000*10*5
-    rounds = 300
-
-    def test(self):
-
-        l1 = range(1000)
-        l2 = range(10)
-        l3 = range(5)
-        for i in xrange(self.rounds):
-            for i in l1:
-                for j in l2:
-                    for k in l3:
-                        pass
-
-    def calibrate(self):
-
-        l1 = range(1000)
-        l2 = range(10)
-        l3 = range(5)
-        for i in xrange(self.rounds):
-            pass
-
-class ForLoops(Test):
-
-    version = 2.0
-    operations = 5 * 5
-    rounds = 10000
-
-    def test(self):
-
-        l1 = range(100)
-        for i in xrange(self.rounds):
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-            for i in l1:
-                pass
-
-    def calibrate(self):
-
-        l1 = range(1000)
-        for i in xrange(self.rounds):
-            pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Dict.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Dict.py
deleted file mode 100644
index 57ff979..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Dict.py
+++ /dev/null
@@ -1,504 +0,0 @@
-from pybench import Test
-
-class DictCreation(Test):
-
-    version = 2.0
-    operations = 5*(5 + 5)
-    rounds = 80000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-
-            d1 = {}
-            d2 = {}
-            d3 = {}
-            d4 = {}
-            d5 = {}
-
-            d1 = {1:2,3:4,5:6}
-            d2 = {2:3,4:5,6:7}
-            d3 = {3:4,5:6,7:8}
-            d4 = {4:5,6:7,8:9}
-            d5 = {6:7,8:9,10:11}
-
-            d1 = {}
-            d2 = {}
-            d3 = {}
-            d4 = {}
-            d5 = {}
-
-            d1 = {1:2,3:4,5:6}
-            d2 = {2:3,4:5,6:7}
-            d3 = {3:4,5:6,7:8}
-            d4 = {4:5,6:7,8:9}
-            d5 = {6:7,8:9,10:11}
-
-            d1 = {}
-            d2 = {}
-            d3 = {}
-            d4 = {}
-            d5 = {}
-
-            d1 = {1:2,3:4,5:6}
-            d2 = {2:3,4:5,6:7}
-            d3 = {3:4,5:6,7:8}
-            d4 = {4:5,6:7,8:9}
-            d5 = {6:7,8:9,10:11}
-
-            d1 = {}
-            d2 = {}
-            d3 = {}
-            d4 = {}
-            d5 = {}
-
-            d1 = {1:2,3:4,5:6}
-            d2 = {2:3,4:5,6:7}
-            d3 = {3:4,5:6,7:8}
-            d4 = {4:5,6:7,8:9}
-            d5 = {6:7,8:9,10:11}
-
-            d1 = {}
-            d2 = {}
-            d3 = {}
-            d4 = {}
-            d5 = {}
-
-            d1 = {1:2,3:4,5:6}
-            d2 = {2:3,4:5,6:7}
-            d3 = {3:4,5:6,7:8}
-            d4 = {4:5,6:7,8:9}
-            d5 = {6:7,8:9,10:11}
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
-
-class DictWithStringKeys(Test):
-
-    version = 2.0
-    operations = 5*(6 + 6)
-    rounds = 200000
-
-    def test(self):
-
-        d = {}
-
-        for i in xrange(self.rounds):
-
-            d['abc'] = 1
-            d['def'] = 2
-            d['ghi'] = 3
-            d['jkl'] = 4
-            d['mno'] = 5
-            d['pqr'] = 6
-
-            d['abc']
-            d['def']
-            d['ghi']
-            d['jkl']
-            d['mno']
-            d['pqr']
-
-            d['abc'] = 1
-            d['def'] = 2
-            d['ghi'] = 3
-            d['jkl'] = 4
-            d['mno'] = 5
-            d['pqr'] = 6
-
-            d['abc']
-            d['def']
-            d['ghi']
-            d['jkl']
-            d['mno']
-            d['pqr']
-
-            d['abc'] = 1
-            d['def'] = 2
-            d['ghi'] = 3
-            d['jkl'] = 4
-            d['mno'] = 5
-            d['pqr'] = 6
-
-            d['abc']
-            d['def']
-            d['ghi']
-            d['jkl']
-            d['mno']
-            d['pqr']
-
-            d['abc'] = 1
-            d['def'] = 2
-            d['ghi'] = 3
-            d['jkl'] = 4
-            d['mno'] = 5
-            d['pqr'] = 6
-
-            d['abc']
-            d['def']
-            d['ghi']
-            d['jkl']
-            d['mno']
-            d['pqr']
-
-            d['abc'] = 1
-            d['def'] = 2
-            d['ghi'] = 3
-            d['jkl'] = 4
-            d['mno'] = 5
-            d['pqr'] = 6
-
-            d['abc']
-            d['def']
-            d['ghi']
-            d['jkl']
-            d['mno']
-            d['pqr']
-
-    def calibrate(self):
-
-        d = {}
-
-        for i in xrange(self.rounds):
-            pass
-
-class DictWithFloatKeys(Test):
-
-    version = 2.0
-    operations = 5*(6 + 6)
-    rounds = 150000
-
-    def test(self):
-
-        d = {}
-
-        for i in xrange(self.rounds):
-
-            d[1.234] = 1
-            d[2.345] = 2
-            d[3.456] = 3
-            d[4.567] = 4
-            d[5.678] = 5
-            d[6.789] = 6
-
-            d[1.234]
-            d[2.345]
-            d[3.456]
-            d[4.567]
-            d[5.678]
-            d[6.789]
-
-            d[1.234] = 1
-            d[2.345] = 2
-            d[3.456] = 3
-            d[4.567] = 4
-            d[5.678] = 5
-            d[6.789] = 6
-
-            d[1.234]
-            d[2.345]
-            d[3.456]
-            d[4.567]
-            d[5.678]
-            d[6.789]
-
-            d[1.234] = 1
-            d[2.345] = 2
-            d[3.456] = 3
-            d[4.567] = 4
-            d[5.678] = 5
-            d[6.789] = 6
-
-            d[1.234]
-            d[2.345]
-            d[3.456]
-            d[4.567]
-            d[5.678]
-            d[6.789]
-
-            d[1.234] = 1
-            d[2.345] = 2
-            d[3.456] = 3
-            d[4.567] = 4
-            d[5.678] = 5
-            d[6.789] = 6
-
-            d[1.234]
-            d[2.345]
-            d[3.456]
-            d[4.567]
-            d[5.678]
-            d[6.789]
-
-            d[1.234] = 1
-            d[2.345] = 2
-            d[3.456] = 3
-            d[4.567] = 4
-            d[5.678] = 5
-            d[6.789] = 6
-
-            d[1.234]
-            d[2.345]
-            d[3.456]
-            d[4.567]
-            d[5.678]
-            d[6.789]
-
-    def calibrate(self):
-
-        d = {}
-
-        for i in xrange(self.rounds):
-            pass
-
-class DictWithIntegerKeys(Test):
-
-    version = 2.0
-    operations = 5*(6 + 6)
-    rounds = 200000
-
-    def test(self):
-
-        d = {}
-
-        for i in xrange(self.rounds):
-
-            d[1] = 1
-            d[2] = 2
-            d[3] = 3
-            d[4] = 4
-            d[5] = 5
-            d[6] = 6
-
-            d[1]
-            d[2]
-            d[3]
-            d[4]
-            d[5]
-            d[6]
-
-            d[1] = 1
-            d[2] = 2
-            d[3] = 3
-            d[4] = 4
-            d[5] = 5
-            d[6] = 6
-
-            d[1]
-            d[2]
-            d[3]
-            d[4]
-            d[5]
-            d[6]
-
-            d[1] = 1
-            d[2] = 2
-            d[3] = 3
-            d[4] = 4
-            d[5] = 5
-            d[6] = 6
-
-            d[1]
-            d[2]
-            d[3]
-            d[4]
-            d[5]
-            d[6]
-
-            d[1] = 1
-            d[2] = 2
-            d[3] = 3
-            d[4] = 4
-            d[5] = 5
-            d[6] = 6
-
-            d[1]
-            d[2]
-            d[3]
-            d[4]
-            d[5]
-            d[6]
-
-            d[1] = 1
-            d[2] = 2
-            d[3] = 3
-            d[4] = 4
-            d[5] = 5
-            d[6] = 6
-
-            d[1]
-            d[2]
-            d[3]
-            d[4]
-            d[5]
-            d[6]
-
-    def calibrate(self):
-
-        d = {}
-
-        for i in xrange(self.rounds):
-            pass
-
-class SimpleDictManipulation(Test):
-
-    version = 2.0
-    operations = 5*(6 + 6 + 6 + 6)
-    rounds = 100000
-
-    def test(self):
-
-        d = {}
-        has_key = d.has_key
-
-        for i in xrange(self.rounds):
-
-            d[0] = 3
-            d[1] = 4
-            d[2] = 5
-            d[3] = 3
-            d[4] = 4
-            d[5] = 5
-
-            x = d[0]
-            x = d[1]
-            x = d[2]
-            x = d[3]
-            x = d[4]
-            x = d[5]
-
-            has_key(0)
-            has_key(2)
-            has_key(4)
-            has_key(6)
-            has_key(8)
-            has_key(10)
-
-            del d[0]
-            del d[1]
-            del d[2]
-            del d[3]
-            del d[4]
-            del d[5]
-
-            d[0] = 3
-            d[1] = 4
-            d[2] = 5
-            d[3] = 3
-            d[4] = 4
-            d[5] = 5
-
-            x = d[0]
-            x = d[1]
-            x = d[2]
-            x = d[3]
-            x = d[4]
-            x = d[5]
-
-            has_key(0)
-            has_key(2)
-            has_key(4)
-            has_key(6)
-            has_key(8)
-            has_key(10)
-
-            del d[0]
-            del d[1]
-            del d[2]
-            del d[3]
-            del d[4]
-            del d[5]
-
-            d[0] = 3
-            d[1] = 4
-            d[2] = 5
-            d[3] = 3
-            d[4] = 4
-            d[5] = 5
-
-            x = d[0]
-            x = d[1]
-            x = d[2]
-            x = d[3]
-            x = d[4]
-            x = d[5]
-
-            has_key(0)
-            has_key(2)
-            has_key(4)
-            has_key(6)
-            has_key(8)
-            has_key(10)
-
-            del d[0]
-            del d[1]
-            del d[2]
-            del d[3]
-            del d[4]
-            del d[5]
-
-            d[0] = 3
-            d[1] = 4
-            d[2] = 5
-            d[3] = 3
-            d[4] = 4
-            d[5] = 5
-
-            x = d[0]
-            x = d[1]
-            x = d[2]
-            x = d[3]
-            x = d[4]
-            x = d[5]
-
-            has_key(0)
-            has_key(2)
-            has_key(4)
-            has_key(6)
-            has_key(8)
-            has_key(10)
-
-            del d[0]
-            del d[1]
-            del d[2]
-            del d[3]
-            del d[4]
-            del d[5]
-
-            d[0] = 3
-            d[1] = 4
-            d[2] = 5
-            d[3] = 3
-            d[4] = 4
-            d[5] = 5
-
-            x = d[0]
-            x = d[1]
-            x = d[2]
-            x = d[3]
-            x = d[4]
-            x = d[5]
-
-            has_key(0)
-            has_key(2)
-            has_key(4)
-            has_key(6)
-            has_key(8)
-            has_key(10)
-
-            del d[0]
-            del d[1]
-            del d[2]
-            del d[3]
-            del d[4]
-            del d[5]
-
-    def calibrate(self):
-
-        d = {}
-        has_key = d.has_key
-
-        for i in xrange(self.rounds):
-            pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Exceptions.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Exceptions.py
deleted file mode 100644
index 4b2456f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Exceptions.py
+++ /dev/null
@@ -1,699 +0,0 @@
-from pybench import Test
-
-class TryRaiseExcept(Test):
-
-    version = 2.0
-    operations = 2 + 3 + 3
-    rounds = 80000
-
-    def test(self):
-
-        error = ValueError
-
-        for i in xrange(self.rounds):
-            try:
-                raise error
-            except:
-                pass
-            try:
-                raise error
-            except:
-                pass
-            try:
-                raise error,"something"
-            except:
-                pass
-            try:
-                raise error,"something"
-            except:
-                pass
-            try:
-                raise error,"something"
-            except:
-                pass
-            try:
-                raise error("something")
-            except:
-                pass
-            try:
-                raise error("something")
-            except:
-                pass
-            try:
-                raise error("something")
-            except:
-                pass
-
-    def calibrate(self):
-
-        error = ValueError
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class TryExcept(Test):
-
-    version = 2.0
-    operations = 15 * 10
-    rounds = 150000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-            try:
-                pass
-            except:
-                pass
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
-
-### Test to make Fredrik happy...
-
-if __name__ == '__main__':
-    import timeit
-    timeit.TestClass = TryRaiseExcept
-    timeit.main(['-s', 'test = TestClass(); test.rounds = 1000',
-                 'test.test()'])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Imports.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Imports.py
deleted file mode 100644
index b9677d4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Imports.py
+++ /dev/null
@@ -1,138 +0,0 @@
-from pybench import Test
-
-# First imports:
-import os
-import package.submodule
-
-class SecondImport(Test):
-
-    version = 2.0
-    operations = 5 * 5
-    rounds = 40000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-            import os
-            import os
-            import os
-            import os
-            import os
-
-            import os
-            import os
-            import os
-            import os
-            import os
-
-            import os
-            import os
-            import os
-            import os
-            import os
-
-            import os
-            import os
-            import os
-            import os
-            import os
-
-            import os
-            import os
-            import os
-            import os
-            import os
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class SecondPackageImport(Test):
-
-    version = 2.0
-    operations = 5 * 5
-    rounds = 40000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-            import package
-            import package
-            import package
-            import package
-            import package
-
-            import package
-            import package
-            import package
-            import package
-            import package
-
-            import package
-            import package
-            import package
-            import package
-            import package
-
-            import package
-            import package
-            import package
-            import package
-            import package
-
-            import package
-            import package
-            import package
-            import package
-            import package
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
-
-class SecondSubmoduleImport(Test):
-
-    version = 2.0
-    operations = 5 * 5
-    rounds = 40000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-            import package.submodule
-            import package.submodule
-            import package.submodule
-            import package.submodule
-            import package.submodule
-
-            import package.submodule
-            import package.submodule
-            import package.submodule
-            import package.submodule
-            import package.submodule
-
-            import package.submodule
-            import package.submodule
-            import package.submodule
-            import package.submodule
-            import package.submodule
-
-            import package.submodule
-            import package.submodule
-            import package.submodule
-            import package.submodule
-            import package.submodule
-
-            import package.submodule
-            import package.submodule
-            import package.submodule
-            import package.submodule
-            import package.submodule
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Instances.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Instances.py
deleted file mode 100644
index 27cddfa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Instances.py
+++ /dev/null
@@ -1,66 +0,0 @@
-from pybench import Test
-
-class CreateInstances(Test):
-
-    version = 2.0
-    operations = 3 + 7 + 4
-    rounds = 80000
-
-    def test(self):
-
-        class c:
-            pass
-
-        class d:
-            def __init__(self,a,b,c):
-                self.a = a
-                self.b = b
-                self.c = c
-
-        class e:
-            def __init__(self,a,b,c=4):
-                self.a = a
-                self.b = b
-                self.c = c
-                self.d = a
-                self.e = b
-                self.f = c
-
-        for i in xrange(self.rounds):
-            o = c()
-            o1 = c()
-            o2 = c()
-            p = d(i,i,3)
-            p1 = d(i,i,3)
-            p2 = d(i,3,3)
-            p3 = d(3,i,3)
-            p4 = d(i,i,i)
-            p5 = d(3,i,3)
-            p6 = d(i,i,i)
-            q = e(i,i,3)
-            q1 = e(i,i,3)
-            q2 = e(i,i,3)
-            q3 = e(i,i)
-
-    def calibrate(self):
-
-        class c:
-            pass
-
-        class d:
-            def __init__(self,a,b,c):
-                self.a = a
-                self.b = b
-                self.c = c
-
-        class e:
-            def __init__(self,a,b,c=4):
-                self.a = a
-                self.b = b
-                self.c = c
-                self.d = a
-                self.e = b
-                self.f = c
-
-        for i in xrange(self.rounds):
-            pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/LICENSE b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/LICENSE
deleted file mode 100644
index ef44f6f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/LICENSE
+++ /dev/null
@@ -1,25 +0,0 @@
-pybench License
----------------
-
-This copyright notice and license applies to all files in the pybench
-directory of the pybench distribution.
-
-Copyright (c), 1997-2006, Marc-Andre Lemburg (mal@lemburg.com)
-Copyright (c), 2000-2006, eGenix.com Software GmbH (info@egenix.com)
-
-                   All Rights Reserved.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee or royalty is hereby
-granted, provided that the above copyright notice appear in all copies
-and that both that copyright notice and this permission notice appear
-in supporting documentation or portions thereof, including
-modifications, that you make.
-
-THE AUTHOR MARC-ANDRE LEMBURG DISCLAIMS ALL WARRANTIES WITH REGARD TO
-THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL,
-INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
-FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-WITH THE USE OR PERFORMANCE OF THIS SOFTWARE !
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Lists.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Lists.py
deleted file mode 100644
index f784a63..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Lists.py
+++ /dev/null
@@ -1,350 +0,0 @@
-from pybench import Test
-
-class SimpleListManipulation(Test):
-
-    version = 2.0
-    operations = 5* (6 + 6 + 6)
-    rounds = 130000
-
-    def test(self):
-
-        l = []
-        append = l.append
-
-        for i in xrange(self.rounds):
-
-            append(2)
-            append(3)
-            append(4)
-            append(2)
-            append(3)
-            append(4)
-
-            l[0] = 3
-            l[1] = 4
-            l[2] = 5
-            l[3] = 3
-            l[4] = 4
-            l[5] = 5
-
-            x = l[0]
-            x = l[1]
-            x = l[2]
-            x = l[3]
-            x = l[4]
-            x = l[5]
-
-            append(2)
-            append(3)
-            append(4)
-            append(2)
-            append(3)
-            append(4)
-
-            l[0] = 3
-            l[1] = 4
-            l[2] = 5
-            l[3] = 3
-            l[4] = 4
-            l[5] = 5
-
-            x = l[0]
-            x = l[1]
-            x = l[2]
-            x = l[3]
-            x = l[4]
-            x = l[5]
-
-            append(2)
-            append(3)
-            append(4)
-            append(2)
-            append(3)
-            append(4)
-
-            l[0] = 3
-            l[1] = 4
-            l[2] = 5
-            l[3] = 3
-            l[4] = 4
-            l[5] = 5
-
-            x = l[0]
-            x = l[1]
-            x = l[2]
-            x = l[3]
-            x = l[4]
-            x = l[5]
-
-            append(2)
-            append(3)
-            append(4)
-            append(2)
-            append(3)
-            append(4)
-
-            l[0] = 3
-            l[1] = 4
-            l[2] = 5
-            l[3] = 3
-            l[4] = 4
-            l[5] = 5
-
-            x = l[0]
-            x = l[1]
-            x = l[2]
-            x = l[3]
-            x = l[4]
-            x = l[5]
-
-            append(2)
-            append(3)
-            append(4)
-            append(2)
-            append(3)
-            append(4)
-
-            l[0] = 3
-            l[1] = 4
-            l[2] = 5
-            l[3] = 3
-            l[4] = 4
-            l[5] = 5
-
-            x = l[0]
-            x = l[1]
-            x = l[2]
-            x = l[3]
-            x = l[4]
-            x = l[5]
-
-            if len(l) > 10000:
-                # cut down the size
-                del l[:]
-
-    def calibrate(self):
-
-        l = []
-        append = l.append
-
-        for i in xrange(self.rounds):
-            pass
-
-class ListSlicing(Test):
-
-    version = 2.0
-    operations = 25*(3+1+2+1)
-    rounds = 800
-
-    def test(self):
-
-        n = range(100)
-        r = range(25)
-
-        for i in xrange(self.rounds):
-
-            l = n[:]
-
-            for j in r:
-
-                m = l[50:]
-                m = l[:25]
-                m = l[50:55]
-                l[:3] = n
-                m = l[:-1]
-                m = l[1:]
-                l[-1:] = n
-
-    def calibrate(self):
-
-        n = range(100)
-        r = range(25)
-
-        for i in xrange(self.rounds):
-            for j in r:
-                pass
-
-class SmallLists(Test):
-
-    version = 2.0
-    operations = 5*(1+ 6 + 6 + 3 + 1)
-    rounds = 80000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-
-            l = []
-
-            append = l.append
-            append(2)
-            append(3)
-            append(4)
-            append(2)
-            append(3)
-            append(4)
-
-            l[0] = 3
-            l[1] = 4
-            l[2] = 5
-            l[3] = 3
-            l[4] = 4
-            l[5] = 5
-
-            l[:3] = [1,2,3]
-            m = l[:-1]
-            m = l[1:]
-
-            l[-1:] = [4,5,6]
-
-            l = []
-
-            append = l.append
-            append(2)
-            append(3)
-            append(4)
-            append(2)
-            append(3)
-            append(4)
-
-            l[0] = 3
-            l[1] = 4
-            l[2] = 5
-            l[3] = 3
-            l[4] = 4
-            l[5] = 5
-
-            l[:3] = [1,2,3]
-            m = l[:-1]
-            m = l[1:]
-
-            l[-1:] = [4,5,6]
-
-            l = []
-
-            append = l.append
-            append(2)
-            append(3)
-            append(4)
-            append(2)
-            append(3)
-            append(4)
-
-            l[0] = 3
-            l[1] = 4
-            l[2] = 5
-            l[3] = 3
-            l[4] = 4
-            l[5] = 5
-
-            l[:3] = [1,2,3]
-            m = l[:-1]
-            m = l[1:]
-
-            l[-1:] = [4,5,6]
-
-            l = []
-
-            append = l.append
-            append(2)
-            append(3)
-            append(4)
-            append(2)
-            append(3)
-            append(4)
-
-            l[0] = 3
-            l[1] = 4
-            l[2] = 5
-            l[3] = 3
-            l[4] = 4
-            l[5] = 5
-
-            l[:3] = [1,2,3]
-            m = l[:-1]
-            m = l[1:]
-
-            l[-1:] = [4,5,6]
-
-            l = []
-
-            append = l.append
-            append(2)
-            append(3)
-            append(4)
-            append(2)
-            append(3)
-            append(4)
-
-            l[0] = 3
-            l[1] = 4
-            l[2] = 5
-            l[3] = 3
-            l[4] = 4
-            l[5] = 5
-
-            l[:3] = [1,2,3]
-            m = l[:-1]
-            m = l[1:]
-
-            l[-1:] = [4,5,6]
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
-
-class SimpleListComprehensions(Test):
-
-    version = 2.0
-    operations = 6
-    rounds = 20000
-
-    def test(self):
-
-        n = range(10) * 10
-
-        for i in xrange(self.rounds):
-            l = [x for x in n]
-            l = [x for x in n if x]
-            l = [x for x in n if not x]
-
-            l = [x for x in n]
-            l = [x for x in n if x]
-            l = [x for x in n if not x]
-
-    def calibrate(self):
-
-        n = range(10) * 10
-
-        for i in xrange(self.rounds):
-            pass
-
-class NestedListComprehensions(Test):
-
-    version = 2.0
-    operations = 6
-    rounds = 20000
-
-    def test(self):
-
-        m = range(10)
-        n = range(10)
-
-        for i in xrange(self.rounds):
-            l = [x for x in n for y in m]
-            l = [y for x in n for y in m]
-
-            l = [x for x in n for y in m if y]
-            l = [y for x in n for y in m if x]
-
-            l = [x for x in n for y in m if not y]
-            l = [y for x in n for y in m if not x]
-
-    def calibrate(self):
-
-        m = range(10)
-        n = range(10)
-
-        for i in xrange(self.rounds):
-            pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Lookups.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Lookups.py
deleted file mode 100644
index 76ac6ae..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Lookups.py
+++ /dev/null
@@ -1,945 +0,0 @@
-from pybench import Test
-
-class SpecialClassAttribute(Test):
-
-    version = 2.0
-    operations = 5*(12 + 12)
-    rounds = 100000
-
-    def test(self):
-
-        class c:
-            pass
-
-        for i in xrange(self.rounds):
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            c.__a = 2
-            c.__b = 3
-            c.__c = 4
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-            x = c.__a
-            x = c.__b
-            x = c.__c
-
-    def calibrate(self):
-
-        class c:
-            pass
-
-        for i in xrange(self.rounds):
-            pass
-
-class NormalClassAttribute(Test):
-
-    version = 2.0
-    operations = 5*(12 + 12)
-    rounds = 100000
-
-    def test(self):
-
-        class c:
-            pass
-
-        for i in xrange(self.rounds):
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-            c.a = 2
-            c.b = 3
-            c.c = 4
-
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-            x = c.a
-            x = c.b
-            x = c.c
-
-    def calibrate(self):
-
-        class c:
-            pass
-
-        for i in xrange(self.rounds):
-            pass
-
-class SpecialInstanceAttribute(Test):
-
-    version = 2.0
-    operations = 5*(12 + 12)
-    rounds = 100000
-
-    def test(self):
-
-        class c:
-            pass
-        o = c()
-
-        for i in xrange(self.rounds):
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-            o.__a__ = 2
-            o.__b__ = 3
-            o.__c__ = 4
-
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-            x = o.__a__
-            x = o.__b__
-            x = o.__c__
-
-    def calibrate(self):
-
-        class c:
-            pass
-        o = c()
-
-        for i in xrange(self.rounds):
-            pass
-
-class NormalInstanceAttribute(Test):
-
-    version = 2.0
-    operations = 5*(12 + 12)
-    rounds = 100000
-
-    def test(self):
-
-        class c:
-            pass
-        o = c()
-
-        for i in xrange(self.rounds):
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-            o.a = 2
-            o.b = 3
-            o.c = 4
-
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-            x = o.a
-            x = o.b
-            x = o.c
-
-    def calibrate(self):
-
-        class c:
-            pass
-        o = c()
-
-        for i in xrange(self.rounds):
-            pass
-
-class BuiltinMethodLookup(Test):
-
-    version = 2.0
-    operations = 5*(3*5 + 3*5)
-    rounds = 70000
-
-    def test(self):
-
-        l = []
-        d = {}
-
-        for i in xrange(self.rounds):
-
-            l.append
-            l.append
-            l.append
-            l.append
-            l.append
-
-            l.insert
-            l.insert
-            l.insert
-            l.insert
-            l.insert
-
-            l.sort
-            l.sort
-            l.sort
-            l.sort
-            l.sort
-
-            d.has_key
-            d.has_key
-            d.has_key
-            d.has_key
-            d.has_key
-
-            d.items
-            d.items
-            d.items
-            d.items
-            d.items
-
-            d.get
-            d.get
-            d.get
-            d.get
-            d.get
-
-            l.append
-            l.append
-            l.append
-            l.append
-            l.append
-
-            l.insert
-            l.insert
-            l.insert
-            l.insert
-            l.insert
-
-            l.sort
-            l.sort
-            l.sort
-            l.sort
-            l.sort
-
-            d.has_key
-            d.has_key
-            d.has_key
-            d.has_key
-            d.has_key
-
-            d.items
-            d.items
-            d.items
-            d.items
-            d.items
-
-            d.get
-            d.get
-            d.get
-            d.get
-            d.get
-
-            l.append
-            l.append
-            l.append
-            l.append
-            l.append
-
-            l.insert
-            l.insert
-            l.insert
-            l.insert
-            l.insert
-
-            l.sort
-            l.sort
-            l.sort
-            l.sort
-            l.sort
-
-            d.has_key
-            d.has_key
-            d.has_key
-            d.has_key
-            d.has_key
-
-            d.items
-            d.items
-            d.items
-            d.items
-            d.items
-
-            d.get
-            d.get
-            d.get
-            d.get
-            d.get
-
-            l.append
-            l.append
-            l.append
-            l.append
-            l.append
-
-            l.insert
-            l.insert
-            l.insert
-            l.insert
-            l.insert
-
-            l.sort
-            l.sort
-            l.sort
-            l.sort
-            l.sort
-
-            d.has_key
-            d.has_key
-            d.has_key
-            d.has_key
-            d.has_key
-
-            d.items
-            d.items
-            d.items
-            d.items
-            d.items
-
-            d.get
-            d.get
-            d.get
-            d.get
-            d.get
-
-            l.append
-            l.append
-            l.append
-            l.append
-            l.append
-
-            l.insert
-            l.insert
-            l.insert
-            l.insert
-            l.insert
-
-            l.sort
-            l.sort
-            l.sort
-            l.sort
-            l.sort
-
-            d.has_key
-            d.has_key
-            d.has_key
-            d.has_key
-            d.has_key
-
-            d.items
-            d.items
-            d.items
-            d.items
-            d.items
-
-            d.get
-            d.get
-            d.get
-            d.get
-            d.get
-
-    def calibrate(self):
-
-        l = []
-        d = {}
-
-        for i in xrange(self.rounds):
-            pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/NewInstances.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/NewInstances.py
deleted file mode 100644
index db7ed3b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/NewInstances.py
+++ /dev/null
@@ -1,75 +0,0 @@
-from pybench import Test
-
-# Check for new-style class support:
-try:
-    class c(object):
-        pass
-except NameError:
-    raise ImportError
-
-###
-
-class CreateNewInstances(Test):
-
-    version = 2.0
-    operations = 3 + 7 + 4
-    rounds = 60000
-
-    def test(self):
-
-        class c(object):
-            pass
-
-        class d(object):
-            def __init__(self,a,b,c):
-                self.a = a
-                self.b = b
-                self.c = c
-
-        class e(object):
-            def __init__(self,a,b,c=4):
-                self.a = a
-                self.b = b
-                self.c = c
-                self.d = a
-                self.e = b
-                self.f = c
-
-        for i in xrange(self.rounds):
-            o = c()
-            o1 = c()
-            o2 = c()
-            p = d(i,i,3)
-            p1 = d(i,i,3)
-            p2 = d(i,3,3)
-            p3 = d(3,i,3)
-            p4 = d(i,i,i)
-            p5 = d(3,i,3)
-            p6 = d(i,i,i)
-            q = e(i,i,3)
-            q1 = e(i,i,3)
-            q2 = e(i,i,3)
-            q3 = e(i,i)
-
-    def calibrate(self):
-
-        class c(object):
-            pass
-
-        class d(object):
-            def __init__(self,a,b,c):
-                self.a = a
-                self.b = b
-                self.c = c
-
-        class e(object):
-            def __init__(self,a,b,c=4):
-                self.a = a
-                self.b = b
-                self.c = c
-                self.d = a
-                self.e = b
-                self.f = c
-
-        for i in xrange(self.rounds):
-            pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Numbers.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Numbers.py
deleted file mode 100644
index cb41742..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Numbers.py
+++ /dev/null
@@ -1,784 +0,0 @@
-from pybench import Test
-
-class CompareIntegers(Test):
-
-    version = 2.0
-    operations = 30 * 5
-    rounds = 120000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-            2 < 3
-            2 > 3
-            2 == 3
-            2 > 3
-            2 < 3
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class CompareFloats(Test):
-
-    version = 2.0
-    operations = 30 * 5
-    rounds = 80000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-            2.1 < 3.31
-            2.1 > 3.31
-            2.1 == 3.31
-            2.1 > 3.31
-            2.1 < 3.31
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class CompareFloatsIntegers(Test):
-
-    version = 2.0
-    operations = 30 * 5
-    rounds = 60000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-            2.1 < 4
-            2.1 > 4
-            2.1 == 4
-            2.1 > 4
-            2.1 < 4
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class CompareLongs(Test):
-
-    version = 2.0
-    operations = 30 * 5
-    rounds = 70000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-            1234567890L < 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L == 3456789012345L
-            1234567890L > 3456789012345L
-            1234567890L < 3456789012345L
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/README b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/README
deleted file mode 100644
index f4f34f6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/README
+++ /dev/null
@@ -1,368 +0,0 @@
-________________________________________________________________________
-
-PYBENCH - A Python Benchmark Suite
-________________________________________________________________________
-
-     Extendable suite of of low-level benchmarks for measuring
-          the performance of the Python implementation 
-                 (interpreter, compiler or VM).
-
-pybench is a collection of tests that provides a standardized way to
-measure the performance of Python implementations. It takes a very
-close look at different aspects of Python programs and let's you
-decide which factors are more important to you than others, rather
-than wrapping everything up in one number, like the other performance
-tests do (e.g. pystone which is included in the Python Standard
-Library).
-
-pybench has been used in the past by several Python developers to
-track down performance bottlenecks or to demonstrate the impact of
-optimizations and new features in Python.
-
-The command line interface for pybench is the file pybench.py. Run
-this script with option '--help' to get a listing of the possible
-options. Without options, pybench will simply execute the benchmark
-and then print out a report to stdout.
-
-
-Micro-Manual
-------------
-
-Run 'pybench.py -h' to see the help screen.  Run 'pybench.py' to run
-the benchmark suite using default settings and 'pybench.py -f <file>'
-to have it store the results in a file too.
-
-It is usually a good idea to run pybench.py multiple times to see
-whether the environment, timers and benchmark run-times are suitable
-for doing benchmark tests. 
-
-You can use the comparison feature of pybench.py ('pybench.py -c
-<file>') to check how well the system behaves in comparison to a
-reference run. 
-
-If the differences are well below 10% for each test, then you have a
-system that is good for doing benchmark testings.  Of you get random
-differences of more than 10% or significant differences between the
-values for minimum and average time, then you likely have some
-background processes running which cause the readings to become
-inconsistent. Examples include: web-browsers, email clients, RSS
-readers, music players, backup programs, etc.
-
-If you are only interested in a few tests of the whole suite, you can
-use the filtering option, e.g. 'pybench.py -t string' will only
-run/show the tests that have 'string' in their name.
-
-This is the current output of pybench.py --help:
-
-"""
-------------------------------------------------------------------------
-PYBENCH - a benchmark test suite for Python interpreters/compilers.
-------------------------------------------------------------------------
-
-Synopsis:
- pybench.py [option] files...
-
-Options and default settings:
-  -n arg           number of rounds (10)
-  -f arg           save benchmark to file arg ()
-  -c arg           compare benchmark with the one in file arg ()
-  -s arg           show benchmark in file arg, then exit ()
-  -w arg           set warp factor to arg (10)
-  -t arg           run only tests with names matching arg ()
-  -C arg           set the number of calibration runs to arg (20)
-  -d               hide noise in comparisons (0)
-  -v               verbose output (not recommended) (0)
-  --with-gc        enable garbage collection (0)
-  --with-syscheck  use default sys check interval (0)
-  --timer arg      use given timer (time.time)
-  -h               show this help text
-  --help           show this help text
-  --debug          enable debugging
-  --copyright      show copyright
-  --examples       show examples of usage
-
-Version:
- 2.0
-
-The normal operation is to run the suite and display the
-results. Use -f to save them for later reuse or comparisons.
-
-Available timers:
-
-   time.time
-   time.clock
-   systimes.processtime
-
-Examples:
-
-python2.1 pybench.py -f p21.pybench
-python2.5 pybench.py -f p25.pybench
-python pybench.py -s p25.pybench -c p21.pybench
-"""
-
-License
--------
-
-See LICENSE file.
-
-
-Sample output
--------------
-
-"""
--------------------------------------------------------------------------------
-PYBENCH 2.0
--------------------------------------------------------------------------------
-* using Python 2.4.2
-* disabled garbage collection
-* system check interval set to maximum: 2147483647
-* using timer: time.time
-
-Calibrating tests. Please wait...
-
-Running 10 round(s) of the suite at warp factor 10:
-
-* Round 1 done in 6.388 seconds.
-* Round 2 done in 6.485 seconds.
-* Round 3 done in 6.786 seconds.
-...
-* Round 10 done in 6.546 seconds.
-
--------------------------------------------------------------------------------
-Benchmark: 2006-06-12 12:09:25
--------------------------------------------------------------------------------
-
-    Rounds: 10
-    Warp:   10
-    Timer:  time.time
-
-    Machine Details:
-       Platform ID:  Linux-2.6.8-24.19-default-x86_64-with-SuSE-9.2-x86-64
-       Processor:    x86_64
-
-    Python:
-       Executable:   /usr/local/bin/python
-       Version:      2.4.2
-       Compiler:     GCC 3.3.4 (pre 3.3.5 20040809)
-       Bits:         64bit
-       Build:        Oct  1 2005 15:24:35 (#1)
-       Unicode:      UCS2
-
-
-Test                             minimum  average  operation  overhead
--------------------------------------------------------------------------------
-          BuiltinFunctionCalls:    126ms    145ms    0.28us    0.274ms
-           BuiltinMethodLookup:    124ms    130ms    0.12us    0.316ms
-                 CompareFloats:    109ms    110ms    0.09us    0.361ms
-         CompareFloatsIntegers:    100ms    104ms    0.12us    0.271ms
-               CompareIntegers:    137ms    138ms    0.08us    0.542ms
-        CompareInternedStrings:    124ms    127ms    0.08us    1.367ms
-                  CompareLongs:    100ms    104ms    0.10us    0.316ms
-                CompareStrings:    111ms    115ms    0.12us    0.929ms
-                CompareUnicode:    108ms    128ms    0.17us    0.693ms
-                 ConcatStrings:    142ms    155ms    0.31us    0.562ms
-                 ConcatUnicode:    119ms    127ms    0.42us    0.384ms
-               CreateInstances:    123ms    128ms    1.14us    0.367ms
-            CreateNewInstances:    121ms    126ms    1.49us    0.335ms
-       CreateStringsWithConcat:    130ms    135ms    0.14us    0.916ms
-       CreateUnicodeWithConcat:    130ms    135ms    0.34us    0.361ms
-                  DictCreation:    108ms    109ms    0.27us    0.361ms
-             DictWithFloatKeys:    149ms    153ms    0.17us    0.678ms
-           DictWithIntegerKeys:    124ms    126ms    0.11us    0.915ms
-            DictWithStringKeys:    114ms    117ms    0.10us    0.905ms
-                      ForLoops:    110ms    111ms    4.46us    0.063ms
-                    IfThenElse:    118ms    119ms    0.09us    0.685ms
-                   ListSlicing:    116ms    120ms    8.59us    0.103ms
-                NestedForLoops:    125ms    137ms    0.09us    0.019ms
-          NormalClassAttribute:    124ms    136ms    0.11us    0.457ms
-       NormalInstanceAttribute:    110ms    117ms    0.10us    0.454ms
-           PythonFunctionCalls:    107ms    113ms    0.34us    0.271ms
-             PythonMethodCalls:    140ms    149ms    0.66us    0.141ms
-                     Recursion:    156ms    166ms    3.32us    0.452ms
-                  SecondImport:    112ms    118ms    1.18us    0.180ms
-           SecondPackageImport:    118ms    127ms    1.27us    0.180ms
-         SecondSubmoduleImport:    140ms    151ms    1.51us    0.180ms
-       SimpleComplexArithmetic:    128ms    139ms    0.16us    0.361ms
-        SimpleDictManipulation:    134ms    136ms    0.11us    0.452ms
-         SimpleFloatArithmetic:    110ms    113ms    0.09us    0.571ms
-      SimpleIntFloatArithmetic:    106ms    111ms    0.08us    0.548ms
-       SimpleIntegerArithmetic:    106ms    109ms    0.08us    0.544ms
-        SimpleListManipulation:    103ms    113ms    0.10us    0.587ms
-          SimpleLongArithmetic:    112ms    118ms    0.18us    0.271ms
-                    SmallLists:    105ms    116ms    0.17us    0.366ms
-                   SmallTuples:    108ms    128ms    0.24us    0.406ms
-         SpecialClassAttribute:    119ms    136ms    0.11us    0.453ms
-      SpecialInstanceAttribute:    143ms    155ms    0.13us    0.454ms
-                StringMappings:    115ms    121ms    0.48us    0.405ms
-              StringPredicates:    120ms    129ms    0.18us    2.064ms
-                 StringSlicing:    111ms    127ms    0.23us    0.781ms
-                     TryExcept:    125ms    126ms    0.06us    0.681ms
-                TryRaiseExcept:    133ms    137ms    2.14us    0.361ms
-                  TupleSlicing:    117ms    120ms    0.46us    0.066ms
-               UnicodeMappings:    156ms    160ms    4.44us    0.429ms
-             UnicodePredicates:    117ms    121ms    0.22us    2.487ms
-             UnicodeProperties:    115ms    153ms    0.38us    2.070ms
-                UnicodeSlicing:    126ms    129ms    0.26us    0.689ms
--------------------------------------------------------------------------------
-Totals:                           6283ms   6673ms
-"""
-________________________________________________________________________
-
-Writing New Tests
-________________________________________________________________________
-
-pybench tests are simple modules defining one or more pybench.Test
-subclasses.
-
-Writing a test essentially boils down to providing two methods:
-.test() which runs .rounds number of .operations test operations each
-and .calibrate() which does the same except that it doesn't actually
-execute the operations.
-
-
-Here's an example:
-------------------
-
-from pybench import Test
-
-class IntegerCounting(Test):
-
-    # Version number of the test as float (x.yy); this is important
-    # for comparisons of benchmark runs - tests with unequal version
-    # number will not get compared.
-    version = 1.0
-    
-    # The number of abstract operations done in each round of the
-    # test. An operation is the basic unit of what you want to
-    # measure. The benchmark will output the amount of run-time per
-    # operation. Note that in order to raise the measured timings
-    # significantly above noise level, it is often required to repeat
-    # sets of operations more than once per test round. The measured
-    # overhead per test round should be less than 1 second.
-    operations = 20
-
-    # Number of rounds to execute per test run. This should be
-    # adjusted to a figure that results in a test run-time of between
-    # 1-2 seconds (at warp 1).
-    rounds = 100000
-
-    def test(self):
-
-	""" Run the test.
-
-	    The test needs to run self.rounds executing
-	    self.operations number of operations each.
-
-        """
-        # Init the test
-        a = 1
-
-        # Run test rounds
-	#
-        # NOTE: Use xrange() for all test loops unless you want to face
-	# a 20MB process !
-	#
-        for i in xrange(self.rounds):
-
-            # Repeat the operations per round to raise the run-time
-            # per operation significantly above the noise level of the
-            # for-loop overhead. 
-
-	    # Execute 20 operations (a += 1):
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-            a += 1
-
-    def calibrate(self):
-
-	""" Calibrate the test.
-
-	    This method should execute everything that is needed to
-	    setup and run the test - except for the actual operations
-	    that you intend to measure. pybench uses this method to
-            measure the test implementation overhead.
-
-        """
-        # Init the test
-        a = 1
-
-        # Run test rounds (without actually doing any operation)
-        for i in xrange(self.rounds):
-
-	    # Skip the actual execution of the operations, since we
-	    # only want to measure the test's administration overhead.
-            pass
-
-Registering a new test module
------------------------------
-
-To register a test module with pybench, the classes need to be
-imported into the pybench.Setup module. pybench will then scan all the
-symbols defined in that module for subclasses of pybench.Test and
-automatically add them to the benchmark suite.
-
-
-Breaking Comparability
-----------------------
-
-If a change is made to any individual test that means it is no
-longer strictly comparable with previous runs, the '.version' class
-variable should be updated. Therefafter, comparisons with previous
-versions of the test will list as "n/a" to reflect the change.
-
-
-Version History
----------------
-
-  2.0: rewrote parts of pybench which resulted in more repeatable
-       timings:
-        - made timer a parameter
-        - changed the platform default timer to use high-resolution
-          timers rather than process timers (which have a much lower
-          resolution)
-        - added option to select timer
-        - added process time timer (using systimes.py)
-        - changed to use min() as timing estimator (average
-          is still taken as well to provide an idea of the difference)
-        - garbage collection is turned off per default
-        - sys check interval is set to the highest possible value
-        - calibration is now a separate step and done using
-          a different strategy that allows measuring the test
-          overhead more accurately
-        - modified the tests to each give a run-time of between
-          100-200ms using warp 10
-        - changed default warp factor to 10 (from 20)
-        - compared results with timeit.py and confirmed measurements
-        - bumped all test versions to 2.0
-        - updated platform.py to the latest version
-        - changed the output format a bit to make it look
-          nicer
-        - refactored the APIs somewhat
-  1.3+: Steve Holden added the NewInstances test and the filtering 
-       option during the NeedForSpeed sprint; this also triggered a long 
-       discussion on how to improve benchmark timing and finally
-       resulted in the release of 2.0
-  1.3: initial checkin into the Python SVN repository
-
-
-Have fun,
---
-Marc-Andre Lemburg
-mal@lemburg.com
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Setup.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Setup.py
deleted file mode 100644
index 565893b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Setup.py
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python
-
-# Setup file for pybench
-#
-# This file has to import all tests to be run; it is executed as
-# Python source file, so you can do all kinds of manipulations here
-# rather than having to edit the tests themselves.
-#
-# Note: Please keep this module compatible to Python 1.5.2.
-#
-# Tests may include features in later Python versions, but these
-# should then be embedded in try-except clauses in this configuration
-# module.
-
-# Defaults
-Number_of_rounds = 10
-Warp_factor = 10
-
-# Import tests
-from Arithmetic import *
-from Calls import *
-from Constructs import *
-from Lookups import *
-from Instances import *
-try:
-    from NewInstances import *
-except ImportError:
-    pass
-from Lists import *
-from Tuples import *
-from Dict import *
-from Exceptions import *
-try:
-    from With import *
-except SyntaxError:
-    pass
-from Imports import *
-from Strings import *
-from Numbers import *
-try:
-    from Unicode import *
-except (ImportError, SyntaxError):
-    pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Strings.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Strings.py
deleted file mode 100644
index b7626b5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Strings.py
+++ /dev/null
@@ -1,562 +0,0 @@
-from pybench import Test
-from string import join
-
-class ConcatStrings(Test):
-
-    version = 2.0
-    operations = 10 * 5
-    rounds = 100000
-
-    def test(self):
-
-        # Make sure the strings are *not* interned
-        s = join(map(str,range(100)))
-        t = join(map(str,range(1,101)))
-
-        for i in xrange(self.rounds):
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-    def calibrate(self):
-
-        s = join(map(str,range(100)))
-        t = join(map(str,range(1,101)))
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class CompareStrings(Test):
-
-    version = 2.0
-    operations = 10 * 5
-    rounds = 200000
-
-    def test(self):
-
-        # Make sure the strings are *not* interned
-        s = join(map(str,range(10)))
-        t = join(map(str,range(10))) + "abc"
-
-        for i in xrange(self.rounds):
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-    def calibrate(self):
-
-        s = join(map(str,range(10)))
-        t = join(map(str,range(10))) + "abc"
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class CompareInternedStrings(Test):
-
-    version = 2.0
-    operations = 10 * 5
-    rounds = 300000
-
-    def test(self):
-
-        # Make sure the strings *are* interned
-        s = intern(join(map(str,range(10))))
-        t = s
-
-        for i in xrange(self.rounds):
-            t == s
-            t == s
-            t >= s
-            t > s
-            t < s
-
-            t == s
-            t == s
-            t >= s
-            t > s
-            t < s
-
-            t == s
-            t == s
-            t >= s
-            t > s
-            t < s
-
-            t == s
-            t == s
-            t >= s
-            t > s
-            t < s
-
-            t == s
-            t == s
-            t >= s
-            t > s
-            t < s
-
-            t == s
-            t == s
-            t >= s
-            t > s
-            t < s
-
-            t == s
-            t == s
-            t >= s
-            t > s
-            t < s
-
-            t == s
-            t == s
-            t >= s
-            t > s
-            t < s
-
-            t == s
-            t == s
-            t >= s
-            t > s
-            t < s
-
-            t == s
-            t == s
-            t >= s
-            t > s
-            t < s
-
-    def calibrate(self):
-
-        s = intern(join(map(str,range(10))))
-        t = s
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class CreateStringsWithConcat(Test):
-
-    version = 2.0
-    operations = 10 * 5
-    rounds = 200000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-            s = 'om'
-            s = s + 'xbx'
-            s = s + 'xcx'
-            s = s + 'xdx'
-            s = s + 'xex'
-
-            s = s + 'xax'
-            s = s + 'xbx'
-            s = s + 'xcx'
-            s = s + 'xdx'
-            s = s + 'xex'
-
-            s = s + 'xax'
-            s = s + 'xbx'
-            s = s + 'xcx'
-            s = s + 'xdx'
-            s = s + 'xex'
-
-            s = s + 'xax'
-            s = s + 'xbx'
-            s = s + 'xcx'
-            s = s + 'xdx'
-            s = s + 'xex'
-
-            s = s + 'xax'
-            s = s + 'xbx'
-            s = s + 'xcx'
-            s = s + 'xdx'
-            s = s + 'xex'
-
-            s = s + 'xax'
-            s = s + 'xbx'
-            s = s + 'xcx'
-            s = s + 'xdx'
-            s = s + 'xex'
-
-            s = s + 'xax'
-            s = s + 'xbx'
-            s = s + 'xcx'
-            s = s + 'xdx'
-            s = s + 'xex'
-
-            s = s + 'xax'
-            s = s + 'xbx'
-            s = s + 'xcx'
-            s = s + 'xdx'
-            s = s + 'xex'
-
-            s = s + 'xax'
-            s = s + 'xbx'
-            s = s + 'xcx'
-            s = s + 'xdx'
-            s = s + 'xex'
-
-            s = s + 'xax'
-            s = s + 'xbx'
-            s = s + 'xcx'
-            s = s + 'xdx'
-            s = s + 'xex'
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class StringSlicing(Test):
-
-    version = 2.0
-    operations = 5 * 7
-    rounds = 160000
-
-    def test(self):
-
-        s = join(map(str,range(100)))
-
-        for i in xrange(self.rounds):
-
-            s[50:]
-            s[:25]
-            s[50:55]
-            s[-1:]
-            s[:1]
-            s[2:]
-            s[11:-11]
-
-            s[50:]
-            s[:25]
-            s[50:55]
-            s[-1:]
-            s[:1]
-            s[2:]
-            s[11:-11]
-
-            s[50:]
-            s[:25]
-            s[50:55]
-            s[-1:]
-            s[:1]
-            s[2:]
-            s[11:-11]
-
-            s[50:]
-            s[:25]
-            s[50:55]
-            s[-1:]
-            s[:1]
-            s[2:]
-            s[11:-11]
-
-            s[50:]
-            s[:25]
-            s[50:55]
-            s[-1:]
-            s[:1]
-            s[2:]
-            s[11:-11]
-
-    def calibrate(self):
-
-        s = join(map(str,range(100)))
-
-        for i in xrange(self.rounds):
-            pass
-
-### String methods
-
-if hasattr('', 'lower'):
-
-    class StringMappings(Test):
-
-        version = 2.0
-        operations = 3 * (5 + 4 + 2 + 1)
-        rounds = 70000
-
-        def test(self):
-
-            s = join(map(chr,range(20)),'')
-            t = join(map(chr,range(50)),'')
-            u = join(map(chr,range(100)),'')
-            v = join(map(chr,range(256)),'')
-
-            for i in xrange(self.rounds):
-
-                s.lower()
-                s.lower()
-                s.lower()
-                s.lower()
-                s.lower()
-
-                s.upper()
-                s.upper()
-                s.upper()
-                s.upper()
-                s.upper()
-
-                s.title()
-                s.title()
-                s.title()
-                s.title()
-                s.title()
-
-                t.lower()
-                t.lower()
-                t.lower()
-                t.lower()
-
-                t.upper()
-                t.upper()
-                t.upper()
-                t.upper()
-
-                t.title()
-                t.title()
-                t.title()
-                t.title()
-
-                u.lower()
-                u.lower()
-
-                u.upper()
-                u.upper()
-
-                u.title()
-                u.title()
-
-                v.lower()
-
-                v.upper()
-
-                v.title()
-
-        def calibrate(self):
-
-            s = join(map(chr,range(20)),'')
-            t = join(map(chr,range(50)),'')
-            u = join(map(chr,range(100)),'')
-            v = join(map(chr,range(256)),'')
-
-            for i in xrange(self.rounds):
-                pass
-
-    class StringPredicates(Test):
-
-        version = 2.0
-        operations = 10 * 7
-        rounds = 100000
-
-        def test(self):
-
-            data = ('abc', '123', '   ', '\xe4\xf6\xfc', '\xdf'*10)
-            len_data = len(data)
-
-            for i in xrange(self.rounds):
-                s = data[i % len_data]
-
-                s.isalnum()
-                s.isalpha()
-                s.isdigit()
-                s.islower()
-                s.isspace()
-                s.istitle()
-                s.isupper()
-
-                s.isalnum()
-                s.isalpha()
-                s.isdigit()
-                s.islower()
-                s.isspace()
-                s.istitle()
-                s.isupper()
-
-                s.isalnum()
-                s.isalpha()
-                s.isdigit()
-                s.islower()
-                s.isspace()
-                s.istitle()
-                s.isupper()
-
-                s.isalnum()
-                s.isalpha()
-                s.isdigit()
-                s.islower()
-                s.isspace()
-                s.istitle()
-                s.isupper()
-
-                s.isalnum()
-                s.isalpha()
-                s.isdigit()
-                s.islower()
-                s.isspace()
-                s.istitle()
-                s.isupper()
-
-                s.isalnum()
-                s.isalpha()
-                s.isdigit()
-                s.islower()
-                s.isspace()
-                s.istitle()
-                s.isupper()
-
-                s.isalnum()
-                s.isalpha()
-                s.isdigit()
-                s.islower()
-                s.isspace()
-                s.istitle()
-                s.isupper()
-
-                s.isalnum()
-                s.isalpha()
-                s.isdigit()
-                s.islower()
-                s.isspace()
-                s.istitle()
-                s.isupper()
-
-                s.isalnum()
-                s.isalpha()
-                s.isdigit()
-                s.islower()
-                s.isspace()
-                s.istitle()
-                s.isupper()
-
-                s.isalnum()
-                s.isalpha()
-                s.isdigit()
-                s.islower()
-                s.isspace()
-                s.istitle()
-                s.isupper()
-
-        def calibrate(self):
-
-            data = ('abc', '123', '   ', '\u1234\u2345\u3456', '\uFFFF'*10)
-            data = ('abc', '123', '   ', '\xe4\xf6\xfc', '\xdf'*10)
-            len_data = len(data)
-
-            for i in xrange(self.rounds):
-                s = data[i % len_data]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Tuples.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Tuples.py
deleted file mode 100644
index f17d52c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Tuples.py
+++ /dev/null
@@ -1,360 +0,0 @@
-from pybench import Test
-
-class TupleSlicing(Test):
-
-    version = 2.0
-    operations = 3 * 25 * 10 * 7
-    rounds = 500
-
-    def test(self):
-
-        r = range(25)
-        t = tuple(range(100))
-
-        for i in xrange(self.rounds):
-
-            for j in r:
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-                m = t[50:]
-                m = t[:25]
-                m = t[50:55]
-                m = t[:-1]
-                m = t[1:]
-                m = t[-10:]
-                m = t[:10]
-
-    def calibrate(self):
-
-        r = range(25)
-        t = tuple(range(100))
-
-        for i in xrange(self.rounds):
-            for j in r:
-                pass
-
-class SmallTuples(Test):
-
-    version = 2.0
-    operations = 5*(1 + 3 + 6 + 2)
-    rounds = 90000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-
-            t = (1,2,3,4,5,6)
-
-            a,b,c,d,e,f = t
-            a,b,c,d,e,f = t
-            a,b,c,d,e,f = t
-
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-
-            l = list(t)
-            t = tuple(l)
-
-            t = (1,2,3,4,5,6)
-
-            a,b,c,d,e,f = t
-            a,b,c,d,e,f = t
-            a,b,c,d,e,f = t
-
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-
-            l = list(t)
-            t = tuple(l)
-
-            t = (1,2,3,4,5,6)
-
-            a,b,c,d,e,f = t
-            a,b,c,d,e,f = t
-            a,b,c,d,e,f = t
-
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-
-            l = list(t)
-            t = tuple(l)
-
-            t = (1,2,3,4,5,6)
-
-            a,b,c,d,e,f = t
-            a,b,c,d,e,f = t
-            a,b,c,d,e,f = t
-
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-
-            l = list(t)
-            t = tuple(l)
-
-            t = (1,2,3,4,5,6)
-
-            a,b,c,d,e,f = t
-            a,b,c,d,e,f = t
-            a,b,c,d,e,f = t
-
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-            a,b,c = t[:3]
-
-            l = list(t)
-            t = tuple(l)
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Unicode.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Unicode.py
deleted file mode 100644
index 3e6b2d8..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/Unicode.py
+++ /dev/null
@@ -1,542 +0,0 @@
-try:
-    unicode
-except NameError:
-    raise ImportError
-
-from pybench import Test
-from string import join
-
-class ConcatUnicode(Test):
-
-    version = 2.0
-    operations = 10 * 5
-    rounds = 60000
-
-    def test(self):
-
-        # Make sure the strings are *not* interned
-        s = unicode(join(map(str,range(100))))
-        t = unicode(join(map(str,range(1,101))))
-
-        for i in xrange(self.rounds):
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-            t + s
-            t + s
-            t + s
-            t + s
-            t + s
-
-    def calibrate(self):
-
-        s = unicode(join(map(str,range(100))))
-        t = unicode(join(map(str,range(1,101))))
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class CompareUnicode(Test):
-
-    version = 2.0
-    operations = 10 * 5
-    rounds = 150000
-
-    def test(self):
-
-        # Make sure the strings are *not* interned
-        s = unicode(join(map(str,range(10))))
-        t = unicode(join(map(str,range(10))) + "abc")
-
-        for i in xrange(self.rounds):
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-            t < s
-            t > s
-            t == s
-            t > s
-            t < s
-
-    def calibrate(self):
-
-        s = unicode(join(map(str,range(10))))
-        t = unicode(join(map(str,range(10))) + "abc")
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class CreateUnicodeWithConcat(Test):
-
-    version = 2.0
-    operations = 10 * 5
-    rounds = 80000
-
-    def test(self):
-
-        for i in xrange(self.rounds):
-            s = u'om'
-            s = s + u'xbx'
-            s = s + u'xcx'
-            s = s + u'xdx'
-            s = s + u'xex'
-
-            s = s + u'xax'
-            s = s + u'xbx'
-            s = s + u'xcx'
-            s = s + u'xdx'
-            s = s + u'xex'
-
-            s = s + u'xax'
-            s = s + u'xbx'
-            s = s + u'xcx'
-            s = s + u'xdx'
-            s = s + u'xex'
-
-            s = s + u'xax'
-            s = s + u'xbx'
-            s = s + u'xcx'
-            s = s + u'xdx'
-            s = s + u'xex'
-
-            s = s + u'xax'
-            s = s + u'xbx'
-            s = s + u'xcx'
-            s = s + u'xdx'
-            s = s + u'xex'
-
-            s = s + u'xax'
-            s = s + u'xbx'
-            s = s + u'xcx'
-            s = s + u'xdx'
-            s = s + u'xex'
-
-            s = s + u'xax'
-            s = s + u'xbx'
-            s = s + u'xcx'
-            s = s + u'xdx'
-            s = s + u'xex'
-
-            s = s + u'xax'
-            s = s + u'xbx'
-            s = s + u'xcx'
-            s = s + u'xdx'
-            s = s + u'xex'
-
-            s = s + u'xax'
-            s = s + u'xbx'
-            s = s + u'xcx'
-            s = s + u'xdx'
-            s = s + u'xex'
-
-            s = s + u'xax'
-            s = s + u'xbx'
-            s = s + u'xcx'
-            s = s + u'xdx'
-            s = s + u'xex'
-
-    def calibrate(self):
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class UnicodeSlicing(Test):
-
-    version = 2.0
-    operations = 5 * 7
-    rounds = 140000
-
-    def test(self):
-
-        s = unicode(join(map(str,range(100))))
-
-        for i in xrange(self.rounds):
-
-            s[50:]
-            s[:25]
-            s[50:55]
-            s[-1:]
-            s[:1]
-            s[2:]
-            s[11:-11]
-
-            s[50:]
-            s[:25]
-            s[50:55]
-            s[-1:]
-            s[:1]
-            s[2:]
-            s[11:-11]
-
-            s[50:]
-            s[:25]
-            s[50:55]
-            s[-1:]
-            s[:1]
-            s[2:]
-            s[11:-11]
-
-            s[50:]
-            s[:25]
-            s[50:55]
-            s[-1:]
-            s[:1]
-            s[2:]
-            s[11:-11]
-
-            s[50:]
-            s[:25]
-            s[50:55]
-            s[-1:]
-            s[:1]
-            s[2:]
-            s[11:-11]
-
-    def calibrate(self):
-
-        s = unicode(join(map(str,range(100))))
-
-        for i in xrange(self.rounds):
-            pass
-
-### String methods
-
-class UnicodeMappings(Test):
-
-    version = 2.0
-    operations = 3 * (5 + 4 + 2 + 1)
-    rounds = 10000
-
-    def test(self):
-
-        s = join(map(unichr,range(20)),'')
-        t = join(map(unichr,range(100)),'')
-        u = join(map(unichr,range(500)),'')
-        v = join(map(unichr,range(1000)),'')
-
-        for i in xrange(self.rounds):
-
-            s.lower()
-            s.lower()
-            s.lower()
-            s.lower()
-            s.lower()
-
-            s.upper()
-            s.upper()
-            s.upper()
-            s.upper()
-            s.upper()
-
-            s.title()
-            s.title()
-            s.title()
-            s.title()
-            s.title()
-
-            t.lower()
-            t.lower()
-            t.lower()
-            t.lower()
-
-            t.upper()
-            t.upper()
-            t.upper()
-            t.upper()
-
-            t.title()
-            t.title()
-            t.title()
-            t.title()
-
-            u.lower()
-            u.lower()
-
-            u.upper()
-            u.upper()
-
-            u.title()
-            u.title()
-
-            v.lower()
-
-            v.upper()
-
-            v.title()
-
-    def calibrate(self):
-
-        s = join(map(unichr,range(20)),'')
-        t = join(map(unichr,range(100)),'')
-        u = join(map(unichr,range(500)),'')
-        v = join(map(unichr,range(1000)),'')
-
-        for i in xrange(self.rounds):
-            pass
-
-class UnicodePredicates(Test):
-
-    version = 2.0
-    operations = 5 * 9
-    rounds = 120000
-
-    def test(self):
-
-        data = (u'abc', u'123', u'   ', u'\u1234\u2345\u3456', u'\uFFFF'*10)
-        len_data = len(data)
-
-        for i in xrange(self.rounds):
-            s = data[i % len_data]
-
-            s.isalnum()
-            s.isalpha()
-            s.isdecimal()
-            s.isdigit()
-            s.islower()
-            s.isnumeric()
-            s.isspace()
-            s.istitle()
-            s.isupper()
-
-            s.isalnum()
-            s.isalpha()
-            s.isdecimal()
-            s.isdigit()
-            s.islower()
-            s.isnumeric()
-            s.isspace()
-            s.istitle()
-            s.isupper()
-
-            s.isalnum()
-            s.isalpha()
-            s.isdecimal()
-            s.isdigit()
-            s.islower()
-            s.isnumeric()
-            s.isspace()
-            s.istitle()
-            s.isupper()
-
-            s.isalnum()
-            s.isalpha()
-            s.isdecimal()
-            s.isdigit()
-            s.islower()
-            s.isnumeric()
-            s.isspace()
-            s.istitle()
-            s.isupper()
-
-            s.isalnum()
-            s.isalpha()
-            s.isdecimal()
-            s.isdigit()
-            s.islower()
-            s.isnumeric()
-            s.isspace()
-            s.istitle()
-            s.isupper()
-
-    def calibrate(self):
-
-        data = (u'abc', u'123', u'   ', u'\u1234\u2345\u3456', u'\uFFFF'*10)
-        len_data = len(data)
-
-        for i in xrange(self.rounds):
-            s = data[i % len_data]
-
-try:
-    import unicodedata
-except ImportError:
-    pass
-else:
-    class UnicodeProperties(Test):
-
-        version = 2.0
-        operations = 5 * 8
-        rounds = 100000
-
-        def test(self):
-
-            data = (u'a', u'1', u' ', u'\u1234', u'\uFFFF')
-            len_data = len(data)
-            digit = unicodedata.digit
-            numeric = unicodedata.numeric
-            decimal = unicodedata.decimal
-            category = unicodedata.category
-            bidirectional = unicodedata.bidirectional
-            decomposition = unicodedata.decomposition
-            mirrored = unicodedata.mirrored
-            combining = unicodedata.combining
-
-            for i in xrange(self.rounds):
-
-                c = data[i % len_data]
-
-                digit(c, None)
-                numeric(c, None)
-                decimal(c, None)
-                category(c)
-                bidirectional(c)
-                decomposition(c)
-                mirrored(c)
-                combining(c)
-
-                digit(c, None)
-                numeric(c, None)
-                decimal(c, None)
-                category(c)
-                bidirectional(c)
-                decomposition(c)
-                mirrored(c)
-                combining(c)
-
-                digit(c, None)
-                numeric(c, None)
-                decimal(c, None)
-                category(c)
-                bidirectional(c)
-                decomposition(c)
-                mirrored(c)
-                combining(c)
-
-                digit(c, None)
-                numeric(c, None)
-                decimal(c, None)
-                category(c)
-                bidirectional(c)
-                decomposition(c)
-                mirrored(c)
-                combining(c)
-
-                digit(c, None)
-                numeric(c, None)
-                decimal(c, None)
-                category(c)
-                bidirectional(c)
-                decomposition(c)
-                mirrored(c)
-                combining(c)
-
-        def calibrate(self):
-
-            data = (u'a', u'1', u' ', u'\u1234', u'\uFFFF')
-            len_data = len(data)
-            digit = unicodedata.digit
-            numeric = unicodedata.numeric
-            decimal = unicodedata.decimal
-            category = unicodedata.category
-            bidirectional = unicodedata.bidirectional
-            decomposition = unicodedata.decomposition
-            mirrored = unicodedata.mirrored
-            combining = unicodedata.combining
-
-            for i in xrange(self.rounds):
-
-                c = data[i % len_data]
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/With.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/With.py
deleted file mode 100644
index 01e075f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/With.py
+++ /dev/null
@@ -1,190 +0,0 @@
-from __future__ import with_statement
-from pybench import Test
-
-class WithFinally(Test):
-
-    version = 2.0
-    operations = 20
-    rounds = 80000
-
-    class ContextManager(object):
-        def __enter__(self):
-            pass
-        def __exit__(self, exc, val, tb):
-            pass
-
-    def test(self):
-
-        cm = self.ContextManager()
-
-        for i in xrange(self.rounds):
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-            with cm: pass
-
-    def calibrate(self):
-
-        cm = self.ContextManager()
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class TryFinally(Test):
-
-    version = 2.0
-    operations = 20
-    rounds = 80000
-
-    class ContextManager(object):
-        def __enter__(self):
-            pass
-        def __exit__(self):
-            # "Context manager" objects used just for their cleanup
-            # actions in finally blocks usually don't have parameters.
-            pass
-
-    def test(self):
-
-        cm = self.ContextManager()
-
-        for i in xrange(self.rounds):
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-            cm.__enter__()
-            try: pass
-            finally: cm.__exit__()
-
-    def calibrate(self):
-
-        cm = self.ContextManager()
-
-        for i in xrange(self.rounds):
-            pass
-
-
-class WithRaiseExcept(Test):
-
-    version = 2.0
-    operations = 2 + 3 + 3
-    rounds = 100000
-
-    class BlockExceptions(object):
-        def __enter__(self):
-            pass
-        def __exit__(self, exc, val, tb):
-            return True
-
-    def test(self):
-
-        error = ValueError
-        be = self.BlockExceptions()
-
-        for i in xrange(self.rounds):
-            with be: raise error
-            with be: raise error
-            with be: raise error,"something"
-            with be: raise error,"something"
-            with be: raise error,"something"
-            with be: raise error("something")
-            with be: raise error("something")
-            with be: raise error("something")
-
-    def calibrate(self):
-
-        error = ValueError
-        be = self.BlockExceptions()
-
-        for i in xrange(self.rounds):
-            pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/clockres.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/clockres.py
deleted file mode 100644
index 7636be6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/clockres.py
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python
-
-""" clockres - calculates the resolution in seconds of a given timer.
-
-    Copyright (c) 2006, Marc-Andre Lemburg (mal@egenix.com). See the
-    documentation for further information on copyrights, or contact
-    the author. All Rights Reserved.
-
-"""
-import time
-
-TEST_TIME = 1.0
-
-def clockres(timer):
-    d = {}
-    wallclock = time.time
-    start = wallclock()
-    stop = wallclock() + TEST_TIME
-    spin_loops = range(1000)
-    while 1:
-        now = wallclock()
-        if now >= stop:
-            break
-        for i in spin_loops:
-            d[timer()] = 1
-    values = d.keys()
-    values.sort()
-    min_diff = TEST_TIME
-    for i in range(len(values) - 1):
-        diff = values[i+1] - values[i]
-        if diff < min_diff:
-            min_diff = diff
-    return min_diff
-
-if __name__ == '__main__':
-    print 'Clock resolution of various timer implementations:'
-    print 'time.clock:           %10.3fus' % (clockres(time.clock) * 1e6)
-    print 'time.time:            %10.3fus' % (clockres(time.time) * 1e6)
-    try:
-        import systimes
-        print 'systimes.processtime: %10.3fus' % (clockres(systimes.processtime) * 1e6)
-    except ImportError:
-        pass
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/package/__init__.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/package/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/package/submodule.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/package/submodule.py
deleted file mode 100644
index e69de29..0000000
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/pybench.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/pybench.py
deleted file mode 100644
index 4bfc7f2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/pybench.py
+++ /dev/null
@@ -1,961 +0,0 @@
-#!/usr/local/bin/python -O
-
-""" A Python Benchmark Suite
-
-"""
-#
-# Note: Please keep this module compatible to Python 1.5.2.
-#
-# Tests may include features in later Python versions, but these
-# should then be embedded in try-except clauses in the configuration
-# module Setup.py.
-#
-
-# pybench Copyright
-__copyright__ = """\
-Copyright (c), 1997-2006, Marc-Andre Lemburg (mal@lemburg.com)
-Copyright (c), 2000-2006, eGenix.com Software GmbH (info@egenix.com)
-
-                   All Rights Reserved.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee or royalty is hereby
-granted, provided that the above copyright notice appear in all copies
-and that both that copyright notice and this permission notice appear
-in supporting documentation or portions thereof, including
-modifications, that you make.
-
-THE AUTHOR MARC-ANDRE LEMBURG DISCLAIMS ALL WARRANTIES WITH REGARD TO
-THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL,
-INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
-FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-WITH THE USE OR PERFORMANCE OF THIS SOFTWARE !
-"""
-
-import sys, time, operator, string, platform
-from CommandLine import *
-
-try:
-    import cPickle
-    pickle = cPickle
-except ImportError:
-    import pickle
-
-# Version number; version history: see README file !
-__version__ = '2.0'
-
-### Constants
-
-# Second fractions
-MILLI_SECONDS = 1e3
-MICRO_SECONDS = 1e6
-
-# Percent unit
-PERCENT = 100
-
-# Horizontal line length
-LINE = 79
-
-# Minimum test run-time
-MIN_TEST_RUNTIME = 1e-3
-
-# Number of calibration runs to use for calibrating the tests
-CALIBRATION_RUNS = 20
-
-# Number of calibration loops to run for each calibration run
-CALIBRATION_LOOPS = 20
-
-# Allow skipping calibration ?
-ALLOW_SKIPPING_CALIBRATION = 1
-
-# Timer types
-TIMER_TIME_TIME = 'time.time'
-TIMER_TIME_CLOCK = 'time.clock'
-TIMER_SYSTIMES_PROCESSTIME = 'systimes.processtime'
-
-# Choose platform default timer
-if sys.platform[:3] == 'win':
-    # On WinXP this has 2.5ms resolution
-    TIMER_PLATFORM_DEFAULT = TIMER_TIME_CLOCK
-else:
-    # On Linux this has 1ms resolution
-    TIMER_PLATFORM_DEFAULT = TIMER_TIME_TIME
-
-# Print debug information ?
-_debug = 0
-
-### Helpers
-
-def get_timer(timertype):
-
-    if timertype == TIMER_TIME_TIME:
-        return time.time
-    elif timertype == TIMER_TIME_CLOCK:
-        return time.clock
-    elif timertype == TIMER_SYSTIMES_PROCESSTIME:
-        import systimes
-        return systimes.processtime
-    else:
-        raise TypeError('unknown timer type: %s' % timertype)
-
-def get_machine_details():
-
-    if _debug:
-        print 'Getting machine details...'
-    buildno, builddate = platform.python_build()
-    python = platform.python_version()
-    try:
-        unichr(100000)
-    except ValueError:
-        # UCS2 build (standard)
-        unicode = 'UCS2'
-    except NameError:
-        unicode = None
-    else:
-        # UCS4 build (most recent Linux distros)
-        unicode = 'UCS4'
-    bits, linkage = platform.architecture()
-    return {
-        'platform': platform.platform(),
-        'processor': platform.processor(),
-        'executable': sys.executable,
-        'implementation': getattr(platform, 'python_implementation',
-                                  lambda:'n/a')(),
-        'python': platform.python_version(),
-        'compiler': platform.python_compiler(),
-        'buildno': buildno,
-        'builddate': builddate,
-        'unicode': unicode,
-        'bits': bits,
-        }
-
-def print_machine_details(d, indent=''):
-
-    l = ['Machine Details:',
-         '   Platform ID:    %s' % d.get('platform', 'n/a'),
-         '   Processor:      %s' % d.get('processor', 'n/a'),
-         '',
-         'Python:',
-         '   Implementation: %s' % d.get('implementation', 'n/a'),
-         '   Executable:     %s' % d.get('executable', 'n/a'),
-         '   Version:        %s' % d.get('python', 'n/a'),
-         '   Compiler:       %s' % d.get('compiler', 'n/a'),
-         '   Bits:           %s' % d.get('bits', 'n/a'),
-         '   Build:          %s (#%s)' % (d.get('builddate', 'n/a'),
-                                          d.get('buildno', 'n/a')),
-         '   Unicode:        %s' % d.get('unicode', 'n/a'),
-         ]
-    print indent + string.join(l, '\n' + indent) + '\n'
-
-### Test baseclass
-
-class Test:
-
-    """ All test must have this class as baseclass. It provides
-        the necessary interface to the benchmark machinery.
-
-        The tests must set .rounds to a value high enough to let the
-        test run between 20-50 seconds. This is needed because
-        clock()-timing only gives rather inaccurate values (on Linux,
-        for example, it is accurate to a few hundreths of a
-        second). If you don't want to wait that long, use a warp
-        factor larger than 1.
-
-        It is also important to set the .operations variable to a
-        value representing the number of "virtual operations" done per
-        call of .run().
-
-        If you change a test in some way, don't forget to increase
-        its version number.
-
-    """
-
-    ### Instance variables that each test should override
-
-    # Version number of the test as float (x.yy); this is important
-    # for comparisons of benchmark runs - tests with unequal version
-    # number will not get compared.
-    version = 2.0
-
-    # The number of abstract operations done in each round of the
-    # test. An operation is the basic unit of what you want to
-    # measure. The benchmark will output the amount of run-time per
-    # operation. Note that in order to raise the measured timings
-    # significantly above noise level, it is often required to repeat
-    # sets of operations more than once per test round. The measured
-    # overhead per test round should be less than 1 second.
-    operations = 1
-
-    # Number of rounds to execute per test run. This should be
-    # adjusted to a figure that results in a test run-time of between
-    # 1-2 seconds.
-    rounds = 100000
-
-    ### Internal variables
-
-    # Mark this class as implementing a test
-    is_a_test = 1
-
-    # Last timing: (real, run, overhead)
-    last_timing = (0.0, 0.0, 0.0)
-
-    # Warp factor to use for this test
-    warp = 1
-
-    # Number of calibration runs to use
-    calibration_runs = CALIBRATION_RUNS
-
-    # List of calibration timings
-    overhead_times = None
-
-    # List of test run timings
-    times = []
-
-    # Timer used for the benchmark
-    timer = TIMER_PLATFORM_DEFAULT
-
-    def __init__(self, warp=None, calibration_runs=None, timer=None):
-
-        # Set parameters
-        if warp is not None:
-            self.rounds = int(self.rounds / warp)
-            if self.rounds == 0:
-                raise ValueError('warp factor set too high')
-            self.warp = warp
-        if calibration_runs is not None:
-            if (not ALLOW_SKIPPING_CALIBRATION and
-                calibration_runs < 1):
-                raise ValueError('at least one calibration run is required')
-            self.calibration_runs = calibration_runs
-        if timer is not None:
-            self.timer = timer
-
-        # Init variables
-        self.times = []
-        self.overhead_times = []
-
-        # We want these to be in the instance dict, so that pickle
-        # saves them
-        self.version = self.version
-        self.operations = self.operations
-        self.rounds = self.rounds
-
-    def get_timer(self):
-
-        """ Return the timer function to use for the test.
-
-        """
-        return get_timer(self.timer)
-
-    def compatible(self, other):
-
-        """ Return 1/0 depending on whether the test is compatible
-            with the other Test instance or not.
-
-        """
-        if self.version != other.version:
-            return 0
-        if self.rounds != other.rounds:
-            return 0
-        return 1
-
-    def calibrate_test(self):
-
-        if self.calibration_runs == 0:
-            self.overhead_times = [0.0]
-            return
-
-        calibrate = self.calibrate
-        timer = self.get_timer()
-        calibration_loops = range(CALIBRATION_LOOPS)
-
-        # Time the calibration loop overhead
-        prep_times = []
-        for i in range(self.calibration_runs):
-            t = timer()
-            for i in calibration_loops:
-                pass
-            t = timer() - t
-            prep_times.append(t / CALIBRATION_LOOPS)
-        min_prep_time = min(prep_times)
-        if _debug:
-            print
-            print 'Calib. prep time     = %.6fms' % (
-                min_prep_time * MILLI_SECONDS)
-
-        # Time the calibration runs (doing CALIBRATION_LOOPS loops of
-        # .calibrate() method calls each)
-        for i in range(self.calibration_runs):
-            t = timer()
-            for i in calibration_loops:
-                calibrate()
-            t = timer() - t
-            self.overhead_times.append(t / CALIBRATION_LOOPS
-                                       - min_prep_time)
-
-        # Check the measured times
-        min_overhead = min(self.overhead_times)
-        max_overhead = max(self.overhead_times)
-        if _debug:
-            print 'Calib. overhead time = %.6fms' % (
-                min_overhead * MILLI_SECONDS)
-        if min_overhead < 0.0:
-            raise ValueError('calibration setup did not work')
-        if max_overhead - min_overhead > 0.1:
-            raise ValueError(
-                'overhead calibration timing range too inaccurate: '
-                '%r - %r' % (min_overhead, max_overhead))
-
-    def run(self):
-
-        """ Run the test in two phases: first calibrate, then
-            do the actual test. Be careful to keep the calibration
-            timing low w/r to the test timing.
-
-        """
-        test = self.test
-        timer = self.get_timer()
-
-        # Get calibration
-        min_overhead = min(self.overhead_times)
-
-        # Test run
-        t = timer()
-        test()
-        t = timer() - t
-        if t < MIN_TEST_RUNTIME:
-            raise ValueError('warp factor too high: '
-                             'test times are < 10ms')
-        eff_time = t - min_overhead
-        if eff_time < 0:
-            raise ValueError('wrong calibration')
-        self.last_timing = (eff_time, t, min_overhead)
-        self.times.append(eff_time)
-
-    def calibrate(self):
-
-        """ Calibrate the test.
-
-            This method should execute everything that is needed to
-            setup and run the test - except for the actual operations
-            that you intend to measure. pybench uses this method to
-            measure the test implementation overhead.
-
-        """
-        return
-
-    def test(self):
-
-        """ Run the test.
-
-            The test needs to run self.rounds executing
-            self.operations number of operations each.
-
-        """
-        return
-
-    def stat(self):
-
-        """ Return test run statistics as tuple:
-
-            (minimum run time,
-             average run time,
-             total run time,
-             average time per operation,
-             minimum overhead time)
-
-        """
-        runs = len(self.times)
-        if runs == 0:
-            return 0.0, 0.0, 0.0, 0.0
-        min_time = min(self.times)
-        total_time = reduce(operator.add, self.times, 0.0)
-        avg_time = total_time / float(runs)
-        operation_avg = total_time / float(runs
-                                           * self.rounds
-                                           * self.operations)
-        if self.overhead_times:
-            min_overhead = min(self.overhead_times)
-        else:
-            min_overhead = self.last_timing[2]
-        return min_time, avg_time, total_time, operation_avg, min_overhead
-
-### Load Setup
-
-# This has to be done after the definition of the Test class, since
-# the Setup module will import subclasses using this class.
-
-import Setup
-
-### Benchmark base class
-
-class Benchmark:
-
-    # Name of the benchmark
-    name = ''
-
-    # Number of benchmark rounds to run
-    rounds = 1
-
-    # Warp factor use to run the tests
-    warp = 1                    # Warp factor
-
-    # Average benchmark round time
-    roundtime = 0
-
-    # Benchmark version number as float x.yy
-    version = 2.0
-
-    # Produce verbose output ?
-    verbose = 0
-
-    # Dictionary with the machine details
-    machine_details = None
-
-    # Timer used for the benchmark
-    timer = TIMER_PLATFORM_DEFAULT
-
-    def __init__(self, name, verbose=None, timer=None, warp=None,
-                 calibration_runs=None):
-
-        if name:
-            self.name = name
-        else:
-            self.name = '%04i-%02i-%02i %02i:%02i:%02i' % \
-                        (time.localtime(time.time())[:6])
-        if verbose is not None:
-            self.verbose = verbose
-        if timer is not None:
-            self.timer = timer
-        if warp is not None:
-            self.warp = warp
-        if calibration_runs is not None:
-            self.calibration_runs = calibration_runs
-
-        # Init vars
-        self.tests = {}
-        if _debug:
-            print 'Getting machine details...'
-        self.machine_details = get_machine_details()
-
-        # Make .version an instance attribute to have it saved in the
-        # Benchmark pickle
-        self.version = self.version
-
-    def get_timer(self):
-
-        """ Return the timer function to use for the test.
-
-        """
-        return get_timer(self.timer)
-
-    def compatible(self, other):
-
-        """ Return 1/0 depending on whether the benchmark is
-            compatible with the other Benchmark instance or not.
-
-        """
-        if self.version != other.version:
-            return 0
-        if (self.machine_details == other.machine_details and
-            self.timer != other.timer):
-            return 0
-        if (self.calibration_runs == 0 and
-            other.calibration_runs != 0):
-            return 0
-        if (self.calibration_runs != 0 and
-            other.calibration_runs == 0):
-            return 0
-        return 1
-
-    def load_tests(self, setupmod, limitnames=None):
-
-        # Add tests
-        if self.verbose:
-            print 'Searching for tests ...'
-            print '--------------------------------------'
-        for testclass in setupmod.__dict__.values():
-            if not hasattr(testclass, 'is_a_test'):
-                continue
-            name = testclass.__name__
-            if  name == 'Test':
-                continue
-            if (limitnames is not None and
-                limitnames.search(name) is None):
-                continue
-            self.tests[name] = testclass(
-                warp=self.warp,
-                calibration_runs=self.calibration_runs,
-                timer=self.timer)
-        l = self.tests.keys()
-        l.sort()
-        if self.verbose:
-            for name in l:
-                print '  %s' % name
-            print '--------------------------------------'
-            print '  %i tests found' % len(l)
-            print
-
-    def calibrate(self):
-
-        print 'Calibrating tests. Please wait...',
-        sys.stdout.flush()
-        if self.verbose:
-            print
-            print
-            print 'Test                              min      max'
-            print '-' * LINE
-        tests = self.tests.items()
-        tests.sort()
-        for i in range(len(tests)):
-            name, test = tests[i]
-            test.calibrate_test()
-            if self.verbose:
-                print '%30s:  %6.3fms  %6.3fms' % \
-                      (name,
-                       min(test.overhead_times) * MILLI_SECONDS,
-                       max(test.overhead_times) * MILLI_SECONDS)
-        if self.verbose:
-            print
-            print 'Done with the calibration.'
-        else:
-            print 'done.'
-        print
-
-    def run(self):
-
-        tests = self.tests.items()
-        tests.sort()
-        timer = self.get_timer()
-        print 'Running %i round(s) of the suite at warp factor %i:' % \
-              (self.rounds, self.warp)
-        print
-        self.roundtimes = []
-        for i in range(self.rounds):
-            if self.verbose:
-                print ' Round %-25i  effective   absolute  overhead' % (i+1)
-            total_eff_time = 0.0
-            for j in range(len(tests)):
-                name, test = tests[j]
-                if self.verbose:
-                    print '%30s:' % name,
-                test.run()
-                (eff_time, abs_time, min_overhead) = test.last_timing
-                total_eff_time = total_eff_time + eff_time
-                if self.verbose:
-                    print '    %5.0fms    %5.0fms %7.3fms' % \
-                          (eff_time * MILLI_SECONDS,
-                           abs_time * MILLI_SECONDS,
-                           min_overhead * MILLI_SECONDS)
-            self.roundtimes.append(total_eff_time)
-            if self.verbose:
-                print ('                   '
-                       '               ------------------------------')
-                print ('                   '
-                       '     Totals:    %6.0fms' %
-                       (total_eff_time * MILLI_SECONDS))
-                print
-            else:
-                print '* Round %i done in %.3f seconds.' % (i+1,
-                                                            total_eff_time)
-        print
-
-    def stat(self):
-
-        """ Return benchmark run statistics as tuple:
-
-            (minimum round time,
-             average round time,
-             maximum round time)
-
-            XXX Currently not used, since the benchmark does test
-                statistics across all rounds.
-
-        """
-        runs = len(self.roundtimes)
-        if runs == 0:
-            return 0.0, 0.0
-        min_time = min(self.roundtimes)
-        total_time = reduce(operator.add, self.roundtimes, 0.0)
-        avg_time = total_time / float(runs)
-        max_time = max(self.roundtimes)
-        return (min_time, avg_time, max_time)
-
-    def print_header(self, title='Benchmark'):
-
-        print '-' * LINE
-        print '%s: %s' % (title, self.name)
-        print '-' * LINE
-        print
-        print '    Rounds: %s' % self.rounds
-        print '    Warp:   %s' % self.warp
-        print '    Timer:  %s' % self.timer
-        print
-        if self.machine_details:
-            print_machine_details(self.machine_details, indent='    ')
-            print
-
-    def print_benchmark(self, hidenoise=0, limitnames=None):
-
-        print ('Test                          '
-               '   minimum  average  operation  overhead')
-        print '-' * LINE
-        tests = self.tests.items()
-        tests.sort()
-        total_min_time = 0.0
-        total_avg_time = 0.0
-        for name, test in tests:
-            if (limitnames is not None and
-                limitnames.search(name) is None):
-                continue
-            (min_time,
-             avg_time,
-             total_time,
-             op_avg,
-             min_overhead) = test.stat()
-            total_min_time = total_min_time + min_time
-            total_avg_time = total_avg_time + avg_time
-            print '%30s:  %5.0fms  %5.0fms  %6.2fus  %7.3fms' % \
-                  (name,
-                   min_time * MILLI_SECONDS,
-                   avg_time * MILLI_SECONDS,
-                   op_avg * MICRO_SECONDS,
-                   min_overhead *MILLI_SECONDS)
-        print '-' * LINE
-        print ('Totals:                        '
-               ' %6.0fms %6.0fms' %
-               (total_min_time * MILLI_SECONDS,
-                total_avg_time * MILLI_SECONDS,
-                ))
-        print
-
-    def print_comparison(self, compare_to, hidenoise=0, limitnames=None):
-
-        # Check benchmark versions
-        if compare_to.version != self.version:
-            print ('* Benchmark versions differ: '
-                   'cannot compare this benchmark to "%s" !' %
-                   compare_to.name)
-            print
-            self.print_benchmark(hidenoise=hidenoise,
-                                 limitnames=limitnames)
-            return
-
-        # Print header
-        compare_to.print_header('Comparing with')
-        print ('Test                          '
-               '   minimum run-time        average  run-time')
-        print ('                              '
-               '   this    other   diff    this    other   diff')
-        print '-' * LINE
-
-        # Print test comparisons
-        tests = self.tests.items()
-        tests.sort()
-        total_min_time = other_total_min_time = 0.0
-        total_avg_time = other_total_avg_time = 0.0
-        benchmarks_compatible = self.compatible(compare_to)
-        tests_compatible = 1
-        for name, test in tests:
-            if (limitnames is not None and
-                limitnames.search(name) is None):
-                continue
-            (min_time,
-             avg_time,
-             total_time,
-             op_avg,
-             min_overhead) = test.stat()
-            total_min_time = total_min_time + min_time
-            total_avg_time = total_avg_time + avg_time
-            try:
-                other = compare_to.tests[name]
-            except KeyError:
-                other = None
-            if other is None:
-                # Other benchmark doesn't include the given test
-                min_diff, avg_diff = 'n/a', 'n/a'
-                other_min_time = 0.0
-                other_avg_time = 0.0
-                tests_compatible = 0
-            else:
-                (other_min_time,
-                 other_avg_time,
-                 other_total_time,
-                 other_op_avg,
-                 other_min_overhead) = other.stat()
-                other_total_min_time = other_total_min_time + other_min_time
-                other_total_avg_time = other_total_avg_time + other_avg_time
-                if (benchmarks_compatible and
-                    test.compatible(other)):
-                    # Both benchmark and tests are comparable
-                    min_diff = ((min_time * self.warp) /
-                                (other_min_time * other.warp) - 1.0)
-                    avg_diff = ((avg_time * self.warp) /
-                                (other_avg_time * other.warp) - 1.0)
-                    if hidenoise and abs(min_diff) < 10.0:
-                        min_diff = ''
-                    else:
-                        min_diff = '%+5.1f%%' % (min_diff * PERCENT)
-                    if hidenoise and abs(avg_diff) < 10.0:
-                        avg_diff = ''
-                    else:
-                        avg_diff = '%+5.1f%%' % (avg_diff * PERCENT)
-                else:
-                    # Benchmark or tests are not comparable
-                    min_diff, avg_diff = 'n/a', 'n/a'
-                    tests_compatible = 0
-            print '%30s: %5.0fms %5.0fms %7s %5.0fms %5.0fms %7s' % \
-                  (name,
-                   min_time * MILLI_SECONDS,
-                   other_min_time * MILLI_SECONDS * compare_to.warp / self.warp,
-                   min_diff,
-                   avg_time * MILLI_SECONDS,
-                   other_avg_time * MILLI_SECONDS * compare_to.warp / self.warp,
-                   avg_diff)
-        print '-' * LINE
-
-        # Summarise test results
-        if not benchmarks_compatible or not tests_compatible:
-            min_diff, avg_diff = 'n/a', 'n/a'
-        else:
-            if other_total_min_time != 0.0:
-                min_diff = '%+5.1f%%' % (
-                    ((total_min_time * self.warp) /
-                     (other_total_min_time * compare_to.warp) - 1.0) * PERCENT)
-            else:
-                min_diff = 'n/a'
-            if other_total_avg_time != 0.0:
-                avg_diff = '%+5.1f%%' % (
-                    ((total_avg_time * self.warp) /
-                     (other_total_avg_time * compare_to.warp) - 1.0) * PERCENT)
-            else:
-                avg_diff = 'n/a'
-        print ('Totals:                       '
-               '  %5.0fms %5.0fms %7s %5.0fms %5.0fms %7s' %
-               (total_min_time * MILLI_SECONDS,
-                (other_total_min_time * compare_to.warp/self.warp
-                 * MILLI_SECONDS),
-                min_diff,
-                total_avg_time * MILLI_SECONDS,
-                (other_total_avg_time * compare_to.warp/self.warp
-                 * MILLI_SECONDS),
-                avg_diff
-               ))
-        print
-        print '(this=%s, other=%s)' % (self.name,
-                                       compare_to.name)
-        print
-
-class PyBenchCmdline(Application):
-
-    header = ("PYBENCH - a benchmark test suite for Python "
-              "interpreters/compilers.")
-
-    version = __version__
-
-    debug = _debug
-
-    options = [ArgumentOption('-n',
-                              'number of rounds',
-                              Setup.Number_of_rounds),
-               ArgumentOption('-f',
-                              'save benchmark to file arg',
-                              ''),
-               ArgumentOption('-c',
-                              'compare benchmark with the one in file arg',
-                              ''),
-               ArgumentOption('-s',
-                              'show benchmark in file arg, then exit',
-                              ''),
-               ArgumentOption('-w',
-                              'set warp factor to arg',
-                              Setup.Warp_factor),
-               ArgumentOption('-t',
-                              'run only tests with names matching arg',
-                              ''),
-               ArgumentOption('-C',
-                              'set the number of calibration runs to arg',
-                              CALIBRATION_RUNS),
-               SwitchOption('-d',
-                            'hide noise in comparisons',
-                            0),
-               SwitchOption('-v',
-                            'verbose output (not recommended)',
-                            0),
-               SwitchOption('--with-gc',
-                            'enable garbage collection',
-                            0),
-               SwitchOption('--with-syscheck',
-                            'use default sys check interval',
-                            0),
-               ArgumentOption('--timer',
-                            'use given timer',
-                            TIMER_PLATFORM_DEFAULT),
-               ]
-
-    about = """\
-The normal operation is to run the suite and display the
-results. Use -f to save them for later reuse or comparisons.
-
-Available timers:
-
-   time.time
-   time.clock
-   systimes.processtime
-
-Examples:
-
-python2.1 pybench.py -f p21.pybench
-python2.5 pybench.py -f p25.pybench
-python pybench.py -s p25.pybench -c p21.pybench
-"""
-    copyright = __copyright__
-
-    def main(self):
-
-        rounds = self.values['-n']
-        reportfile = self.values['-f']
-        show_bench = self.values['-s']
-        compare_to = self.values['-c']
-        hidenoise = self.values['-d']
-        warp = int(self.values['-w'])
-        withgc = self.values['--with-gc']
-        limitnames = self.values['-t']
-        if limitnames:
-            if _debug:
-                print '* limiting test names to one with substring "%s"' % \
-                      limitnames
-            limitnames = re.compile(limitnames, re.I)
-        else:
-            limitnames = None
-        verbose = self.verbose
-        withsyscheck = self.values['--with-syscheck']
-        calibration_runs = self.values['-C']
-        timer = self.values['--timer']
-
-        print '-' * LINE
-        print 'PYBENCH %s' % __version__
-        print '-' * LINE
-        print '* using %s %s' % (
-            getattr(platform, 'python_implementation', lambda:'Python')(),
-            string.join(string.split(sys.version), ' '))
-
-        # Switch off garbage collection
-        if not withgc:
-            try:
-                import gc
-            except ImportError:
-                print '* Python version doesn\'t support garbage collection'
-            else:
-                try:
-                    gc.disable()
-                except NotImplementedError:
-                    print '* Python version doesn\'t support gc.disable'
-                else:
-                    print '* disabled garbage collection'
-
-        # "Disable" sys check interval
-        if not withsyscheck:
-            # Too bad the check interval uses an int instead of a long...
-            value = 2147483647
-            try:
-                sys.setcheckinterval(value)
-            except (AttributeError, NotImplementedError):
-                print '* Python version doesn\'t support sys.setcheckinterval'
-            else:
-                print '* system check interval set to maximum: %s' % value
-
-        if timer == TIMER_SYSTIMES_PROCESSTIME:
-            import systimes
-            print '* using timer: systimes.processtime (%s)' % \
-                  systimes.SYSTIMES_IMPLEMENTATION
-        else:
-            print '* using timer: %s' % timer
-
-        print
-
-        if compare_to:
-            try:
-                f = open(compare_to,'rb')
-                bench = pickle.load(f)
-                bench.name = compare_to
-                f.close()
-                compare_to = bench
-            except IOError, reason:
-                print '* Error opening/reading file %s: %s' % (
-                    repr(compare_to),
-                    reason)
-                compare_to = None
-
-        if show_bench:
-            try:
-                f = open(show_bench,'rb')
-                bench = pickle.load(f)
-                bench.name = show_bench
-                f.close()
-                bench.print_header()
-                if compare_to:
-                    bench.print_comparison(compare_to,
-                                           hidenoise=hidenoise,
-                                           limitnames=limitnames)
-                else:
-                    bench.print_benchmark(hidenoise=hidenoise,
-                                          limitnames=limitnames)
-            except IOError, reason:
-                print '* Error opening/reading file %s: %s' % (
-                    repr(show_bench),
-                    reason)
-                print
-            return
-
-        if reportfile:
-            print 'Creating benchmark: %s (rounds=%i, warp=%i)' % \
-                  (reportfile, rounds, warp)
-            print
-
-        # Create benchmark object
-        bench = Benchmark(reportfile,
-                          verbose=verbose,
-                          timer=timer,
-                          warp=warp,
-                          calibration_runs=calibration_runs)
-        bench.rounds = rounds
-        bench.load_tests(Setup, limitnames=limitnames)
-        try:
-            bench.calibrate()
-            bench.run()
-        except KeyboardInterrupt:
-            print
-            print '*** KeyboardInterrupt -- Aborting'
-            print
-            return
-        bench.print_header()
-        if compare_to:
-            bench.print_comparison(compare_to,
-                                   hidenoise=hidenoise,
-                                   limitnames=limitnames)
-        else:
-            bench.print_benchmark(hidenoise=hidenoise,
-                                  limitnames=limitnames)
-
-        # Ring bell
-        sys.stderr.write('\007')
-
-        if reportfile:
-            try:
-                f = open(reportfile,'wb')
-                bench.name = reportfile
-                pickle.dump(bench,f)
-                f.close()
-            except IOError, reason:
-                print '* Error opening/writing reportfile'
-            except IOError, reason:
-                print '* Error opening/writing reportfile %s: %s' % (
-                    reportfile,
-                    reason)
-                print
-
-if __name__ == '__main__':
-    PyBenchCmdline()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/systimes.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/systimes.py
deleted file mode 100644
index 2c0b440..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/systimes.py
+++ /dev/null
@@ -1,211 +0,0 @@
-#!/usr/bin/env python
-
-""" systimes() user and system timer implementations for use by
-    pybench.
-
-    This module implements various different strategies for measuring
-    performance timings. It tries to choose the best available method
-    based on the platforma and available tools.
-
-    On Windows, it is recommended to have the Mark Hammond win32
-    package installed. Alternatively, the Thomas Heller ctypes
-    packages can also be used.
-
-    On Unix systems, the standard resource module provides the highest
-    resolution timings. Unfortunately, it is not available on all Unix
-    platforms.
-
-    If no supported timing methods based on process time can be found,
-    the module reverts to the highest resolution wall-clock timer
-    instead. The system time part will then always be 0.0.
-
-    The module exports one public API:
-
-    def systimes():
-
-        Return the current timer values for measuring user and system
-        time as tuple of seconds (user_time, system_time).
-
-    Copyright (c) 2006, Marc-Andre Lemburg (mal@egenix.com). See the
-    documentation for further information on copyrights, or contact
-    the author. All Rights Reserved.
-
-"""
-import time, sys
-
-#
-# Note: Please keep this module compatible to Python 1.5.2.
-#
-# TODOs:
-#
-# * Add ctypes wrapper for new clock_gettime() real-time POSIX APIs;
-#   these will then provide nano-second resolution where available.
-#
-# * Add a function that returns the resolution of systimes()
-#   values, ie. systimesres().
-#
-
-### Choose an implementation
-
-SYSTIMES_IMPLEMENTATION = None
-USE_CTYPES_GETPROCESSTIMES = 'ctypes GetProcessTimes() wrapper'
-USE_WIN32PROCESS_GETPROCESSTIMES = 'win32process.GetProcessTimes()'
-USE_RESOURCE_GETRUSAGE = 'resource.getrusage()'
-USE_PROCESS_TIME_CLOCK = 'time.clock() (process time)'
-USE_WALL_TIME_CLOCK = 'time.clock() (wall-clock)'
-USE_WALL_TIME_TIME = 'time.time() (wall-clock)'
-
-if sys.platform[:3] == 'win':
-    # Windows platform
-    try:
-        import win32process
-    except ImportError:
-        try:
-            import ctypes
-        except ImportError:
-            # Use the wall-clock implementation time.clock(), since this
-            # is the highest resolution clock available on Windows
-            SYSTIMES_IMPLEMENTATION = USE_WALL_TIME_CLOCK
-        else:
-            SYSTIMES_IMPLEMENTATION = USE_CTYPES_GETPROCESSTIMES
-    else:
-        SYSTIMES_IMPLEMENTATION = USE_WIN32PROCESS_GETPROCESSTIMES
-else:
-    # All other platforms
-    try:
-        import resource
-    except ImportError:
-        pass
-    else:
-        SYSTIMES_IMPLEMENTATION = USE_RESOURCE_GETRUSAGE
-
-# Fall-back solution
-if SYSTIMES_IMPLEMENTATION is None:
-    # Check whether we can use time.clock() as approximation
-    # for systimes()
-    start = time.clock()
-    time.sleep(0.1)
-    stop = time.clock()
-    if stop - start < 0.001:
-        # Looks like time.clock() is usable (and measures process
-        # time)
-        SYSTIMES_IMPLEMENTATION = USE_PROCESS_TIME_CLOCK
-    else:
-        # Use wall-clock implementation time.time() since this provides
-        # the highest resolution clock on most systems
-        SYSTIMES_IMPLEMENTATION = USE_WALL_TIME_TIME
-
-### Implementations
-
-def getrusage_systimes():
-    return resource.getrusage(resource.RUSAGE_SELF)[:2]
-
-def process_time_clock_systimes():
-    return (time.clock(), 0.0)
-
-def wall_clock_clock_systimes():
-    return (time.clock(), 0.0)
-
-def wall_clock_time_systimes():
-    return (time.time(), 0.0)
-
-# Number of clock ticks per second for the values returned
-# by GetProcessTimes() on Windows.
-#
-# Note: Ticks returned by GetProcessTimes() are 100ns intervals on
-# Windows XP. However, the process times are only updated with every
-# clock tick and the frequency of these is somewhat lower: depending
-# on the OS version between 10ms and 15ms. Even worse, the process
-# time seems to be allocated to process currently running when the
-# clock interrupt arrives, ie. it is possible that the current time
-# slice gets accounted to a different process.
-
-WIN32_PROCESS_TIMES_TICKS_PER_SECOND = 1e7
-
-def win32process_getprocesstimes_systimes():
-    d = win32process.GetProcessTimes(win32process.GetCurrentProcess())
-    return (d['UserTime'] / WIN32_PROCESS_TIMES_TICKS_PER_SECOND,
-            d['KernelTime'] / WIN32_PROCESS_TIMES_TICKS_PER_SECOND)
-
-def ctypes_getprocesstimes_systimes():
-    creationtime = ctypes.c_ulonglong()
-    exittime = ctypes.c_ulonglong()
-    kerneltime = ctypes.c_ulonglong()
-    usertime = ctypes.c_ulonglong()
-    rc = ctypes.windll.kernel32.GetProcessTimes(
-        ctypes.windll.kernel32.GetCurrentProcess(),
-        ctypes.byref(creationtime),
-        ctypes.byref(exittime),
-        ctypes.byref(kerneltime),
-        ctypes.byref(usertime))
-    if not rc:
-        raise TypeError('GetProcessTimes() returned an error')
-    return (usertime.value / WIN32_PROCESS_TIMES_TICKS_PER_SECOND,
-            kerneltime.value / WIN32_PROCESS_TIMES_TICKS_PER_SECOND)
-
-# Select the default for the systimes() function
-
-if SYSTIMES_IMPLEMENTATION is USE_RESOURCE_GETRUSAGE:
-    systimes = getrusage_systimes
-
-elif SYSTIMES_IMPLEMENTATION is USE_PROCESS_TIME_CLOCK:
-    systimes = process_time_clock_systimes
-
-elif SYSTIMES_IMPLEMENTATION is USE_WALL_TIME_CLOCK:
-    systimes = wall_clock_clock_systimes
-
-elif SYSTIMES_IMPLEMENTATION is USE_WALL_TIME_TIME:
-    systimes = wall_clock_time_systimes
-
-elif SYSTIMES_IMPLEMENTATION is USE_WIN32PROCESS_GETPROCESSTIMES:
-    systimes = win32process_getprocesstimes_systimes
-
-elif SYSTIMES_IMPLEMENTATION is USE_CTYPES_GETPROCESSTIMES:
-    systimes = ctypes_getprocesstimes_systimes
-
-else:
-    raise TypeError('no suitable systimes() implementation found')
-
-def processtime():
-
-    """ Return the total time spent on the process.
-
-        This is the sum of user and system time as returned by
-        systimes().
-
-    """
-    user, system = systimes()
-    return user + system
-
-### Testing
-
-def some_workload():
-    x = 0L
-    for i in xrange(10000000L):
-        x = x + 1L
-
-def test_workload():
-    print 'Testing systimes() under load conditions'
-    t0 = systimes()
-    some_workload()
-    t1 = systimes()
-    print 'before:', t0
-    print 'after:', t1
-    print 'differences:', (t1[0] - t0[0], t1[1] - t0[1])
-    print
-
-def test_idle():
-    print 'Testing systimes() under idle conditions'
-    t0 = systimes()
-    time.sleep(1)
-    t1 = systimes()
-    print 'before:', t0
-    print 'after:', t1
-    print 'differences:', (t1[0] - t0[0], t1[1] - t0[1])
-    print
-
-if __name__ == '__main__':
-    print 'Using %s as timer' % SYSTIMES_IMPLEMENTATION
-    print
-    test_workload()
-    test_idle()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/2to3 b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/2to3
deleted file mode 100644
index 4e21946..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/2to3
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env python
-import sys
-from lib2to3.main import main
-
-sys.exit(main("lib2to3.fixes"))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/README b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/README
deleted file mode 100644
index 762cce4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/README
+++ /dev/null
@@ -1,69 +0,0 @@
-This directory contains a collection of executable Python scripts that
-are useful while building, extending or managing Python.  Some (e.g.,
-dutree or lll) are also generally useful UNIX tools.
-
-See also the Demo/scripts directory!
-
-analyze_dxp.py		Analyzes the result of sys.getdxp()
-byext.py		Print lines/words/chars stats of files by extension
-byteyears.py		Print product of a file's size and age
-checkappend.py		Search for multi-argument .append() calls
-checkpyc.py		Check presence and validity of ".pyc" files
-classfix.py		Convert old class syntax to new
-cleanfuture.py		Fix reduntant Python __future__ statements
-combinerefs.py		A helper for analyzing PYTHONDUMPREFS output.
-copytime.py		Copy one file's atime and mtime to another
-crlf.py			Change CRLF line endings to LF (Windows to Unix)
-cvsfiles.py		Print a list of files that are under CVS
-db2pickle.py		Dump a database file to a pickle
-diff.py			Print file diffs in context, unified, or ndiff formats
-dutree.py		Format du(1) output as a tree sorted by size
-eptags.py		Create Emacs TAGS file for Python modules
-find_recursionlimit.py  Find the maximum recursion limit on this machine 
-finddiv.py		A grep-like tool that looks for division operators
-findlinksto.py		Recursively find symbolic links to a given path prefix
-findnocoding.py		Find source files which need an encoding declaration
-fixcid.py		Massive identifier substitution on C source files
-fixdiv.py		Tool to fix division operators.
-fixheader.py		Add some cpp magic to a C include file
-fixnotice.py		Fix the copyright notice in source files
-fixps.py		Fix Python scripts' first line (if #!)
-ftpmirror.py		FTP mirror script
-google.py		Open a webbrowser with Google
-gprof2html.py		Transform gprof(1) output into useful HTML
-h2py.py			Translate #define's into Python assignments
-hotshotmain.py		Main program to run script under control of hotshot
-idle			Main program to start IDLE
-ifdef.py		Remove #if(n)def groups from C sources
-lfcr.py			Change LF line endings to CRLF (Unix to Windows)
-linktree.py		Make a copy of a tree with links to original files
-lll.py			Find and list symbolic links in current directory
-logmerge.py		Consolidate CVS/RCS logs read from stdin
-mailerdaemon.py		parse error messages from mailer daemons (Sjoerd&Jack)
-md5sum.py		Print MD5 checksums of argument files.
-methfix.py		Fix old method syntax def f(self, (a1, ..., aN)):
-mkreal.py		Turn a symbolic link into a real file or directory
-ndiff.py		Intelligent diff between text files (Tim Peters)
-nm2def.py		Create a template for PC/python_nt.def (Marc Lemburg)
-objgraph.py		Print object graph from nm output on a library
-parseentities.py	Utility for parsing HTML entity definitions
-pathfix.py		Change #!/usr/local/bin/python into something else
-pdeps.py		Print dependencies between Python modules
-pickle2db.py		Load a pickle generated by db2pickle.py to a database
-pindent.py		Indent Python code, giving block-closing comments
-ptags.py		Create vi tags file for Python modules
-pydoc			Python documentation browser.
-pysource.py		Find Python source files
-redemo.py		Basic regular expression demonstration facility
-reindent.py		Change .py files to use 4-space indents.
-rgrep.py		Reverse grep through a file (useful for big logfiles)
-serve.py		Small wsgiref-based web server, used in make serve in Doc
-setup.py		Install all scripts listed here
-suff.py			Sort a list of files by suffix
-svneol.py		Sets svn:eol-style on all files in directory
-texcheck.py             Validate Python LaTeX formatting (Raymond Hettinger)
-texi2html.py		Convert GNU texinfo files into HTML
-treesync.py		Synchronize source trees (very ideosyncratic)
-untabify.py		Replace tabs with spaces in argument files
-which.py		Find a program in $PATH
-xxci.py			Wrapper for rcsdiff and ci
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/analyze_dxp.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/analyze_dxp.py
deleted file mode 100644
index 7800011..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/analyze_dxp.py
+++ /dev/null
@@ -1,129 +0,0 @@
-"""
-Some helper functions to analyze the output of sys.getdxp() (which is
-only available if Python was built with -DDYNAMIC_EXECUTION_PROFILE).
-These will tell you which opcodes have been executed most frequently
-in the current process, and, if Python was also built with -DDXPAIRS,
-will tell you which instruction _pairs_ were executed most frequently,
-which may help in choosing new instructions.
-
-If Python was built without -DDYNAMIC_EXECUTION_PROFILE, importing
-this module will raise a RuntimeError.
-
-If you're running a script you want to profile, a simple way to get
-the common pairs is:
-
-$ PYTHONPATH=$PYTHONPATH:<python_srcdir>/Tools/scripts \
-./python -i -O the_script.py --args
-...
-> from analyze_dxp import *
-> s = render_common_pairs()
-> open('/tmp/some_file', 'w').write(s)
-"""
-
-import copy
-import opcode
-import operator
-import sys
-import threading
-
-if not hasattr(sys, "getdxp"):
-    raise RuntimeError("Can't import analyze_dxp: Python built without"
-                       " -DDYNAMIC_EXECUTION_PROFILE.")
-
-
-_profile_lock = threading.RLock()
-_cumulative_profile = sys.getdxp()
-
-# If Python was built with -DDXPAIRS, sys.getdxp() returns a list of
-# lists of ints.  Otherwise it returns just a list of ints.
-def has_pairs(profile):
-    """Returns True if the Python that produced the argument profile
-    was built with -DDXPAIRS."""
-
-    return len(profile) > 0 and isinstance(profile[0], list)
-
-
-def reset_profile():
-    """Forgets any execution profile that has been gathered so far."""
-    with _profile_lock:
-        sys.getdxp()  # Resets the internal profile
-        global _cumulative_profile
-        _cumulative_profile = sys.getdxp()  # 0s out our copy.
-
-
-def merge_profile():
-    """Reads sys.getdxp() and merges it into this module's cached copy.
-
-    We need this because sys.getdxp() 0s itself every time it's called."""
-
-    with _profile_lock:
-        new_profile = sys.getdxp()
-        if has_pairs(new_profile):
-            for first_inst in range(len(_cumulative_profile)):
-                for second_inst in range(len(_cumulative_profile[first_inst])):
-                    _cumulative_profile[first_inst][second_inst] += (
-                        new_profile[first_inst][second_inst])
-        else:
-            for inst in range(len(_cumulative_profile)):
-                _cumulative_profile[inst] += new_profile[inst]
-
-
-def snapshot_profile():
-    """Returns the cumulative execution profile until this call."""
-    with _profile_lock:
-        merge_profile()
-        return copy.deepcopy(_cumulative_profile)
-
-
-def common_instructions(profile):
-    """Returns the most common opcodes in order of descending frequency.
-
-    The result is a list of tuples of the form
-      (opcode, opname, # of occurrences)
-
-    """
-    if has_pairs(profile) and profile:
-        inst_list = profile[-1]
-    else:
-        inst_list = profile
-    result = [(op, opcode.opname[op], count)
-              for op, count in enumerate(inst_list)
-              if count > 0]
-    result.sort(key=operator.itemgetter(2), reverse=True)
-    return result
-
-
-def common_pairs(profile):
-    """Returns the most common opcode pairs in order of descending frequency.
-
-    The result is a list of tuples of the form
-      ((1st opcode, 2nd opcode),
-       (1st opname, 2nd opname),
-       # of occurrences of the pair)
-
-    """
-    if not has_pairs(profile):
-        return []
-    result = [((op1, op2), (opcode.opname[op1], opcode.opname[op2]), count)
-              # Drop the row of single-op profiles with [:-1]
-              for op1, op1profile in enumerate(profile[:-1])
-              for op2, count in enumerate(op1profile)
-              if count > 0]
-    result.sort(key=operator.itemgetter(2), reverse=True)
-    return result
-
-
-def render_common_pairs(profile=None):
-    """Renders the most common opcode pairs to a string in order of
-    descending frequency.
-
-    The result is a series of lines of the form:
-      # of occurrences: ('1st opname', '2nd opname')
-
-    """
-    if profile is None:
-        profile = snapshot_profile()
-    def seq():
-        for _, ops, count in common_pairs(profile):
-            yield "%s: %s\n" % (count, ops)
-    return ''.join(seq())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/byext.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/byext.py
deleted file mode 100644
index 7e3e7f7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/byext.py
+++ /dev/null
@@ -1,131 +0,0 @@
-#! /usr/bin/env python
-
-"""Show file statistics by extension."""
-
-import os
-import sys
-
-class Stats:
-
-    def __init__(self):
-        self.stats = {}
-
-    def statargs(self, args):
-        for arg in args:
-            if os.path.isdir(arg):
-                self.statdir(arg)
-            elif os.path.isfile(arg):
-                self.statfile(arg)
-            else:
-                sys.stderr.write("Can't find %s\n" % arg)
-                self.addstats("<???>", "unknown", 1)
-
-    def statdir(self, dir):
-        self.addstats("<dir>", "dirs", 1)
-        try:
-            names = os.listdir(dir)
-        except os.error, err:
-            sys.stderr.write("Can't list %s: %s\n" % (dir, err))
-            self.addstats("<dir>", "unlistable", 1)
-            return
-        names.sort()
-        for name in names:
-            if name.startswith(".#"):
-                continue # Skip CVS temp files
-            if name.endswith("~"):
-                continue# Skip Emacs backup files
-            full = os.path.join(dir, name)
-            if os.path.islink(full):
-                self.addstats("<lnk>", "links", 1)
-            elif os.path.isdir(full):
-                self.statdir(full)
-            else:
-                self.statfile(full)
-
-    def statfile(self, filename):
-        head, ext = os.path.splitext(filename)
-        head, base = os.path.split(filename)
-        if ext == base:
-            ext = "" # E.g. .cvsignore is deemed not to have an extension
-        ext = os.path.normcase(ext)
-        if not ext:
-            ext = "<none>"
-        self.addstats(ext, "files", 1)
-        try:
-            f = open(filename, "rb")
-        except IOError, err:
-            sys.stderr.write("Can't open %s: %s\n" % (filename, err))
-            self.addstats(ext, "unopenable", 1)
-            return
-        data = f.read()
-        f.close()
-        self.addstats(ext, "bytes", len(data))
-        if '\0' in data:
-            self.addstats(ext, "binary", 1)
-            return
-        if not data:
-            self.addstats(ext, "empty", 1)
-        #self.addstats(ext, "chars", len(data))
-        lines = data.splitlines()
-        self.addstats(ext, "lines", len(lines))
-        del lines
-        words = data.split()
-        self.addstats(ext, "words", len(words))
-
-    def addstats(self, ext, key, n):
-        d = self.stats.setdefault(ext, {})
-        d[key] = d.get(key, 0) + n
-
-    def report(self):
-        exts = self.stats.keys()
-        exts.sort()
-        # Get the column keys
-        columns = {}
-        for ext in exts:
-            columns.update(self.stats[ext])
-        cols = columns.keys()
-        cols.sort()
-        colwidth = {}
-        colwidth["ext"] = max([len(ext) for ext in exts])
-        minwidth = 6
-        self.stats["TOTAL"] = {}
-        for col in cols:
-            total = 0
-            cw = max(minwidth, len(col))
-            for ext in exts:
-                value = self.stats[ext].get(col)
-                if value is None:
-                    w = 0
-                else:
-                    w = len("%d" % value)
-                    total += value
-                cw = max(cw, w)
-            cw = max(cw, len(str(total)))
-            colwidth[col] = cw
-            self.stats["TOTAL"][col] = total
-        exts.append("TOTAL")
-        for ext in exts:
-            self.stats[ext]["ext"] = ext
-        cols.insert(0, "ext")
-        def printheader():
-            for col in cols:
-                print "%*s" % (colwidth[col], col),
-            print
-        printheader()
-        for ext in exts:
-            for col in cols:
-                value = self.stats[ext].get(col, "")
-                print "%*s" % (colwidth[col], value),
-            print
-        printheader() # Another header at the bottom
-
-def main():
-    args = sys.argv[1:]
-    if not args:
-        args = [os.curdir]
-    s = Stats()
-    s.statargs(args)
-    s.report()
-
-if __name__ == "__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/byteyears.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/byteyears.py
deleted file mode 100644
index e87454d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/byteyears.py
+++ /dev/null
@@ -1,61 +0,0 @@
-#! /usr/bin/env python
-
-# Print the product of age and size of each file, in suitable units.
-#
-# Usage: byteyears [ -a | -m | -c ] file ...
-#
-# Options -[amc] select atime, mtime (default) or ctime as age.
-
-import sys, os, time
-from stat import *
-
-def main():
-
-    # Use lstat() to stat files if it exists, else stat()
-    try:
-        statfunc = os.lstat
-    except AttributeError:
-        statfunc = os.stat
-
-    # Parse options
-    if sys.argv[1] == '-m':
-        itime = ST_MTIME
-        del sys.argv[1]
-    elif sys.argv[1] == '-c':
-        itime = ST_CTIME
-        del sys.argv[1]
-    elif sys.argv[1] == '-a':
-        itime = ST_CTIME
-        del sys.argv[1]
-    else:
-        itime = ST_MTIME
-
-    secs_per_year = 365.0 * 24.0 * 3600.0   # Scale factor
-    now = time.time()                       # Current time, for age computations
-    status = 0                              # Exit status, set to 1 on errors
-
-    # Compute max file name length
-    maxlen = 1
-    for filename in sys.argv[1:]:
-        maxlen = max(maxlen, len(filename))
-
-    # Process each argument in turn
-    for filename in sys.argv[1:]:
-        try:
-            st = statfunc(filename)
-        except os.error, msg:
-            sys.stderr.write("can't stat %r: %r\n" % (filename, msg))
-            status = 1
-            st = ()
-        if st:
-            anytime = st[itime]
-            size = st[ST_SIZE]
-            age = now - anytime
-            byteyears = float(size) * float(age) / secs_per_year
-            print filename.ljust(maxlen),
-            print repr(int(byteyears)).rjust(8)
-
-    sys.exit(status)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/checkappend.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/checkappend.py
deleted file mode 100644
index 6671ab4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/checkappend.py
+++ /dev/null
@@ -1,167 +0,0 @@
-#! /usr/bin/env python
-
-# Released to the public domain, by Tim Peters, 28 February 2000.
-
-"""checkappend.py -- search for multi-argument .append() calls.
-
-Usage:  specify one or more file or directory paths:
-    checkappend [-v] file_or_dir [file_or_dir] ...
-
-Each file_or_dir is checked for multi-argument .append() calls.  When
-a directory, all .py files in the directory, and recursively in its
-subdirectories, are checked.
-
-Use -v for status msgs.  Use -vv for more status msgs.
-
-In the absence of -v, the only output is pairs of the form
-
-    filename(linenumber):
-    line containing the suspicious append
-
-Note that this finds multi-argument append calls regardless of whether
-they're attached to list objects.  If a module defines a class with an
-append method that takes more than one argument, calls to that method
-will be listed.
-
-Note that this will not find multi-argument list.append calls made via a
-bound method object.  For example, this is not caught:
-
-    somelist = []
-    push = somelist.append
-    push(1, 2, 3)
-"""
-
-__version__ = 1, 0, 0
-
-import os
-import sys
-import getopt
-import tokenize
-
-verbose = 0
-
-def errprint(*args):
-    msg = ' '.join(args)
-    sys.stderr.write(msg)
-    sys.stderr.write("\n")
-
-def main():
-    args = sys.argv[1:]
-    global verbose
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "v")
-    except getopt.error, msg:
-        errprint(str(msg) + "\n\n" + __doc__)
-        return
-    for opt, optarg in opts:
-        if opt == '-v':
-            verbose = verbose + 1
-    if not args:
-        errprint(__doc__)
-        return
-    for arg in args:
-        check(arg)
-
-def check(file):
-    if os.path.isdir(file) and not os.path.islink(file):
-        if verbose:
-            print "%r: listing directory" % (file,)
-        names = os.listdir(file)
-        for name in names:
-            fullname = os.path.join(file, name)
-            if ((os.path.isdir(fullname) and
-                 not os.path.islink(fullname))
-                or os.path.normcase(name[-3:]) == ".py"):
-                check(fullname)
-        return
-
-    try:
-        f = open(file)
-    except IOError, msg:
-        errprint("%r: I/O Error: %s" % (file, msg))
-        return
-
-    if verbose > 1:
-        print "checking %r ..." % (file,)
-
-    ok = AppendChecker(file, f).run()
-    if verbose and ok:
-        print "%r: Clean bill of health." % (file,)
-
-[FIND_DOT,
- FIND_APPEND,
- FIND_LPAREN,
- FIND_COMMA,
- FIND_STMT]   = range(5)
-
-class AppendChecker:
-    def __init__(self, fname, file):
-        self.fname = fname
-        self.file = file
-        self.state = FIND_DOT
-        self.nerrors = 0
-
-    def run(self):
-        try:
-            tokenize.tokenize(self.file.readline, self.tokeneater)
-        except tokenize.TokenError, msg:
-            errprint("%r: Token Error: %s" % (self.fname, msg))
-            self.nerrors = self.nerrors + 1
-        return self.nerrors == 0
-
-    def tokeneater(self, type, token, start, end, line,
-                NEWLINE=tokenize.NEWLINE,
-                JUNK=(tokenize.COMMENT, tokenize.NL),
-                OP=tokenize.OP,
-                NAME=tokenize.NAME):
-
-        state = self.state
-
-        if type in JUNK:
-            pass
-
-        elif state is FIND_DOT:
-            if type is OP and token == ".":
-                state = FIND_APPEND
-
-        elif state is FIND_APPEND:
-            if type is NAME and token == "append":
-                self.line = line
-                self.lineno = start[0]
-                state = FIND_LPAREN
-            else:
-                state = FIND_DOT
-
-        elif state is FIND_LPAREN:
-            if type is OP and token == "(":
-                self.level = 1
-                state = FIND_COMMA
-            else:
-                state = FIND_DOT
-
-        elif state is FIND_COMMA:
-            if type is OP:
-                if token in ("(", "{", "["):
-                    self.level = self.level + 1
-                elif token in (")", "}", "]"):
-                    self.level = self.level - 1
-                    if self.level == 0:
-                        state = FIND_DOT
-                elif token == "," and self.level == 1:
-                    self.nerrors = self.nerrors + 1
-                    print "%s(%d):\n%s" % (self.fname, self.lineno,
-                                           self.line)
-                    # don't gripe about this stmt again
-                    state = FIND_STMT
-
-        elif state is FIND_STMT:
-            if type is NEWLINE:
-                state = FIND_DOT
-
-        else:
-            raise SystemError("unknown internal state '%r'" % (state,))
-
-        self.state = state
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/checkpyc.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/checkpyc.py
deleted file mode 100644
index 8f10643..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/checkpyc.py
+++ /dev/null
@@ -1,66 +0,0 @@
-#! /usr/bin/env python
-# Check that all ".pyc" files exist and are up-to-date
-# Uses module 'os'
-
-import sys
-import os
-from stat import ST_MTIME
-import imp
-
-def main():
-    silent = 0
-    verbose = 0
-    if sys.argv[1:]:
-        if sys.argv[1] == '-v':
-            verbose = 1
-        elif sys.argv[1] == '-s':
-            silent = 1
-    MAGIC = imp.get_magic()
-    if not silent:
-        print 'Using MAGIC word', repr(MAGIC)
-    for dirname in sys.path:
-        try:
-            names = os.listdir(dirname)
-        except os.error:
-            print 'Cannot list directory', repr(dirname)
-            continue
-        if not silent:
-            print 'Checking ', repr(dirname), '...'
-        names.sort()
-        for name in names:
-            if name[-3:] == '.py':
-                name = os.path.join(dirname, name)
-                try:
-                    st = os.stat(name)
-                except os.error:
-                    print 'Cannot stat', repr(name)
-                    continue
-                if verbose:
-                    print 'Check', repr(name), '...'
-                name_c = name + 'c'
-                try:
-                    f = open(name_c, 'r')
-                except IOError:
-                    print 'Cannot open', repr(name_c)
-                    continue
-                magic_str = f.read(4)
-                mtime_str = f.read(4)
-                f.close()
-                if magic_str <> MAGIC:
-                    print 'Bad MAGIC word in ".pyc" file',
-                    print repr(name_c)
-                    continue
-                mtime = get_long(mtime_str)
-                if mtime == 0 or mtime == -1:
-                    print 'Bad ".pyc" file', repr(name_c)
-                elif mtime <> st[ST_MTIME]:
-                    print 'Out-of-date ".pyc" file',
-                    print repr(name_c)
-
-def get_long(s):
-    if len(s) <> 4:
-        return -1
-    return ord(s[0]) + (ord(s[1])<<8) + (ord(s[2])<<16) + (ord(s[3])<<24)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/classfix.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/classfix.py
deleted file mode 100644
index cf0ccdf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/classfix.py
+++ /dev/null
@@ -1,190 +0,0 @@
-#! /usr/bin/env python
-
-# This script is obsolete -- it is kept for historical purposes only.
-#
-# Fix Python source files to use the new class definition syntax, i.e.,
-# the syntax used in Python versions before 0.9.8:
-#       class C() = base(), base(), ...: ...
-# is changed to the current syntax:
-#       class C(base, base, ...): ...
-#
-# The script uses heuristics to find class definitions that usually
-# work but occasionally can fail; carefully check the output!
-#
-# Command line arguments are files or directories to be processed.
-# Directories are searched recursively for files whose name looks
-# like a python module.
-# Symbolic links are always ignored (except as explicit directory
-# arguments).  Of course, the original file is kept as a back-up
-# (with a "~" attached to its name).
-#
-# Changes made are reported to stdout in a diff-like format.
-#
-# Undoubtedly you can do this using find and sed or perl, but this is
-# a nice example of Python code that recurses down a directory tree
-# and uses regular expressions.  Also note several subtleties like
-# preserving the file's mode and avoiding to even write a temp file
-# when no changes are needed for a file.
-#
-# NB: by changing only the function fixline() you can turn this
-# into a program for a different change to Python programs...
-
-import sys
-import re
-import os
-from stat import *
-
-err = sys.stderr.write
-dbg = err
-rep = sys.stdout.write
-
-def main():
-    bad = 0
-    if not sys.argv[1:]: # No arguments
-        err('usage: ' + sys.argv[0] + ' file-or-directory ...\n')
-        sys.exit(2)
-    for arg in sys.argv[1:]:
-        if os.path.isdir(arg):
-            if recursedown(arg): bad = 1
-        elif os.path.islink(arg):
-            err(arg + ': will not process symbolic links\n')
-            bad = 1
-        else:
-            if fix(arg): bad = 1
-    sys.exit(bad)
-
-ispythonprog = re.compile('^[a-zA-Z0-9_]+\.py$')
-def ispython(name):
-    return ispythonprog.match(name) >= 0
-
-def recursedown(dirname):
-    dbg('recursedown(%r)\n' % (dirname,))
-    bad = 0
-    try:
-        names = os.listdir(dirname)
-    except os.error, msg:
-        err('%s: cannot list directory: %r\n' % (dirname, msg))
-        return 1
-    names.sort()
-    subdirs = []
-    for name in names:
-        if name in (os.curdir, os.pardir): continue
-        fullname = os.path.join(dirname, name)
-        if os.path.islink(fullname): pass
-        elif os.path.isdir(fullname):
-            subdirs.append(fullname)
-        elif ispython(name):
-            if fix(fullname): bad = 1
-    for fullname in subdirs:
-        if recursedown(fullname): bad = 1
-    return bad
-
-def fix(filename):
-##  dbg('fix(%r)\n' % (filename,))
-    try:
-        f = open(filename, 'r')
-    except IOError, msg:
-        err('%s: cannot open: %r\n' % (filename, msg))
-        return 1
-    head, tail = os.path.split(filename)
-    tempname = os.path.join(head, '@' + tail)
-    g = None
-    # If we find a match, we rewind the file and start over but
-    # now copy everything to a temp file.
-    lineno = 0
-    while 1:
-        line = f.readline()
-        if not line: break
-        lineno = lineno + 1
-        while line[-2:] == '\\\n':
-            nextline = f.readline()
-            if not nextline: break
-            line = line + nextline
-            lineno = lineno + 1
-        newline = fixline(line)
-        if newline != line:
-            if g is None:
-                try:
-                    g = open(tempname, 'w')
-                except IOError, msg:
-                    f.close()
-                    err('%s: cannot create: %r\n' % (tempname, msg))
-                    return 1
-                f.seek(0)
-                lineno = 0
-                rep(filename + ':\n')
-                continue # restart from the beginning
-            rep(repr(lineno) + '\n')
-            rep('< ' + line)
-            rep('> ' + newline)
-        if g is not None:
-            g.write(newline)
-
-    # End of file
-    f.close()
-    if not g: return 0 # No changes
-
-    # Finishing touch -- move files
-
-    # First copy the file's mode to the temp file
-    try:
-        statbuf = os.stat(filename)
-        os.chmod(tempname, statbuf[ST_MODE] & 07777)
-    except os.error, msg:
-        err('%s: warning: chmod failed (%r)\n' % (tempname, msg))
-    # Then make a backup of the original file as filename~
-    try:
-        os.rename(filename, filename + '~')
-    except os.error, msg:
-        err('%s: warning: backup failed (%r)\n' % (filename, msg))
-    # Now move the temp file to the original file
-    try:
-        os.rename(tempname, filename)
-    except os.error, msg:
-        err('%s: rename failed (%r)\n' % (filename, msg))
-        return 1
-    # Return succes
-    return 0
-
-# This expression doesn't catch *all* class definition headers,
-# but it's pretty darn close.
-classexpr = '^([ \t]*class +[a-zA-Z0-9_]+) *( *) *((=.*)?):'
-classprog = re.compile(classexpr)
-
-# Expressions for finding base class expressions.
-baseexpr = '^ *(.*) *( *) *$'
-baseprog = re.compile(baseexpr)
-
-def fixline(line):
-    if classprog.match(line) < 0: # No 'class' keyword -- no change
-        return line
-
-    (a0, b0), (a1, b1), (a2, b2) = classprog.regs[:3]
-    # a0, b0 = Whole match (up to ':')
-    # a1, b1 = First subexpression (up to classname)
-    # a2, b2 = Second subexpression (=.*)
-    head = line[:b1]
-    tail = line[b0:] # Unmatched rest of line
-
-    if a2 == b2: # No base classes -- easy case
-        return head + ':' + tail
-
-    # Get rid of leading '='
-    basepart = line[a2+1:b2]
-
-    # Extract list of base expressions
-    bases = basepart.split(',')
-
-    # Strip trailing '()' from each base expression
-    for i in range(len(bases)):
-        if baseprog.match(bases[i]) >= 0:
-            x1, y1 = baseprog.regs[1]
-            bases[i] = bases[i][x1:y1]
-
-    # Join the bases back again and build the new line
-    basepart = ', '.join(bases)
-
-    return head + '(' + basepart + '):' + tail
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/cleanfuture.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/cleanfuture.py
deleted file mode 100644
index 4984b07..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/cleanfuture.py
+++ /dev/null
@@ -1,276 +0,0 @@
-#! /usr/bin/env python
-
-"""cleanfuture [-d][-r][-v] path ...
-
--d  Dry run.  Analyze, but don't make any changes to, files.
--r  Recurse.  Search for all .py files in subdirectories too.
--v  Verbose.  Print informative msgs.
-
-Search Python (.py) files for future statements, and remove the features
-from such statements that are already mandatory in the version of Python
-you're using.
-
-Pass one or more file and/or directory paths.  When a directory path, all
-.py files within the directory will be examined, and, if the -r option is
-given, likewise recursively for subdirectories.
-
-Overwrites files in place, renaming the originals with a .bak extension. If
-cleanfuture finds nothing to change, the file is left alone.  If cleanfuture
-does change a file, the changed file is a fixed-point (i.e., running
-cleanfuture on the resulting .py file won't change it again, at least not
-until you try it again with a later Python release).
-
-Limitations:  You can do these things, but this tool won't help you then:
-
-+ A future statement cannot be mixed with any other statement on the same
-  physical line (separated by semicolon).
-
-+ A future statement cannot contain an "as" clause.
-
-Example:  Assuming you're using Python 2.2, if a file containing
-
-from __future__ import nested_scopes, generators
-
-is analyzed by cleanfuture, the line is rewritten to
-
-from __future__ import generators
-
-because nested_scopes is no longer optional in 2.2 but generators is.
-"""
-
-import __future__
-import tokenize
-import os
-import sys
-
-dryrun  = 0
-recurse = 0
-verbose = 0
-
-def errprint(*args):
-    strings = map(str, args)
-    msg = ' '.join(strings)
-    if msg[-1:] != '\n':
-        msg += '\n'
-    sys.stderr.write(msg)
-
-def main():
-    import getopt
-    global verbose, recurse, dryrun
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "drv")
-    except getopt.error, msg:
-        errprint(msg)
-        return
-    for o, a in opts:
-        if o == '-d':
-            dryrun += 1
-        elif o == '-r':
-            recurse += 1
-        elif o == '-v':
-            verbose += 1
-    if not args:
-        errprint("Usage:", __doc__)
-        return
-    for arg in args:
-        check(arg)
-
-def check(file):
-    if os.path.isdir(file) and not os.path.islink(file):
-        if verbose:
-            print "listing directory", file
-        names = os.listdir(file)
-        for name in names:
-            fullname = os.path.join(file, name)
-            if ((recurse and os.path.isdir(fullname) and
-                 not os.path.islink(fullname))
-                or name.lower().endswith(".py")):
-                check(fullname)
-        return
-
-    if verbose:
-        print "checking", file, "...",
-    try:
-        f = open(file)
-    except IOError, msg:
-        errprint("%r: I/O Error: %s" % (file, str(msg)))
-        return
-
-    ff = FutureFinder(f, file)
-    changed = ff.run()
-    if changed:
-        ff.gettherest()
-    f.close()
-    if changed:
-        if verbose:
-            print "changed."
-            if dryrun:
-                print "But this is a dry run, so leaving it alone."
-        for s, e, line in changed:
-            print "%r lines %d-%d" % (file, s+1, e+1)
-            for i in range(s, e+1):
-                print ff.lines[i],
-            if line is None:
-                print "-- deleted"
-            else:
-                print "-- change to:"
-                print line,
-        if not dryrun:
-            bak = file + ".bak"
-            if os.path.exists(bak):
-                os.remove(bak)
-            os.rename(file, bak)
-            if verbose:
-                print "renamed", file, "to", bak
-            g = open(file, "w")
-            ff.write(g)
-            g.close()
-            if verbose:
-                print "wrote new", file
-    else:
-        if verbose:
-            print "unchanged."
-
-class FutureFinder:
-
-    def __init__(self, f, fname):
-        self.f = f
-        self.fname = fname
-        self.ateof = 0
-        self.lines = [] # raw file lines
-
-        # List of (start_index, end_index, new_line) triples.
-        self.changed = []
-
-    # Line-getter for tokenize.
-    def getline(self):
-        if self.ateof:
-            return ""
-        line = self.f.readline()
-        if line == "":
-            self.ateof = 1
-        else:
-            self.lines.append(line)
-        return line
-
-    def run(self):
-        STRING = tokenize.STRING
-        NL = tokenize.NL
-        NEWLINE = tokenize.NEWLINE
-        COMMENT = tokenize.COMMENT
-        NAME = tokenize.NAME
-        OP = tokenize.OP
-
-        changed = self.changed
-        get = tokenize.generate_tokens(self.getline).next
-        type, token, (srow, scol), (erow, ecol), line = get()
-
-        # Chew up initial comments and blank lines (if any).
-        while type in (COMMENT, NL, NEWLINE):
-            type, token, (srow, scol), (erow, ecol), line = get()
-
-        # Chew up docstring (if any -- and it may be implicitly catenated!).
-        while type is STRING:
-            type, token, (srow, scol), (erow, ecol), line = get()
-
-        # Analyze the future stmts.
-        while 1:
-            # Chew up comments and blank lines (if any).
-            while type in (COMMENT, NL, NEWLINE):
-                type, token, (srow, scol), (erow, ecol), line = get()
-
-            if not (type is NAME and token == "from"):
-                break
-            startline = srow - 1    # tokenize is one-based
-            type, token, (srow, scol), (erow, ecol), line = get()
-
-            if not (type is NAME and token == "__future__"):
-                break
-            type, token, (srow, scol), (erow, ecol), line = get()
-
-            if not (type is NAME and token == "import"):
-                break
-            type, token, (srow, scol), (erow, ecol), line = get()
-
-            # Get the list of features.
-            features = []
-            while type is NAME:
-                features.append(token)
-                type, token, (srow, scol), (erow, ecol), line = get()
-
-                if not (type is OP and token == ','):
-                    break
-                type, token, (srow, scol), (erow, ecol), line = get()
-
-            # A trailing comment?
-            comment = None
-            if type is COMMENT:
-                comment = token
-                type, token, (srow, scol), (erow, ecol), line = get()
-
-            if type is not NEWLINE:
-                errprint("Skipping file %r; can't parse line %d:\n%s" %
-                         (self.fname, srow, line))
-                return []
-
-            endline = srow - 1
-
-            # Check for obsolete features.
-            okfeatures = []
-            for f in features:
-                object = getattr(__future__, f, None)
-                if object is None:
-                    # A feature we don't know about yet -- leave it in.
-                    # They'll get a compile-time error when they compile
-                    # this program, but that's not our job to sort out.
-                    okfeatures.append(f)
-                else:
-                    released = object.getMandatoryRelease()
-                    if released is None or released <= sys.version_info:
-                        # Withdrawn or obsolete.
-                        pass
-                    else:
-                        okfeatures.append(f)
-
-            # Rewrite the line if at least one future-feature is obsolete.
-            if len(okfeatures) < len(features):
-                if len(okfeatures) == 0:
-                    line = None
-                else:
-                    line = "from __future__ import "
-                    line += ', '.join(okfeatures)
-                    if comment is not None:
-                        line += ' ' + comment
-                    line += '\n'
-                changed.append((startline, endline, line))
-
-            # Loop back for more future statements.
-
-        return changed
-
-    def gettherest(self):
-        if self.ateof:
-            self.therest = ''
-        else:
-            self.therest = self.f.read()
-
-    def write(self, f):
-        changed = self.changed
-        assert changed
-        # Prevent calling this again.
-        self.changed = []
-        # Apply changes in reverse order.
-        changed.reverse()
-        for s, e, line in changed:
-            if line is None:
-                # pure deletion
-                del self.lines[s:e+1]
-            else:
-                self.lines[s:e+1] = [line]
-        f.writelines(self.lines)
-        # Copy over the remainder of the file.
-        if self.therest:
-            f.write(self.therest)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/combinerefs.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/combinerefs.py
deleted file mode 100644
index b7369da..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/combinerefs.py
+++ /dev/null
@@ -1,127 +0,0 @@
-#! /usr/bin/env python
-
-"""
-combinerefs path
-
-A helper for analyzing PYTHONDUMPREFS output.
-
-When the PYTHONDUMPREFS envar is set in a debug build, at Python shutdown
-time Py_Finalize() prints the list of all live objects twice:  first it
-prints the repr() of each object while the interpreter is still fully intact.
-After cleaning up everything it can, it prints all remaining live objects
-again, but the second time just prints their addresses, refcounts, and type
-names (because the interpreter has been torn down, calling repr methods at
-this point can get into infinite loops or blow up).
-
-Save all this output into a file, then run this script passing the path to
-that file.  The script finds both output chunks, combines them, then prints
-a line of output for each object still alive at the end:
-
-    address refcnt typename repr
-
-address is the address of the object, in whatever format the platform C
-produces for a %p format code.
-
-refcnt is of the form
-
-    "[" ref "]"
-
-when the object's refcount is the same in both PYTHONDUMPREFS output blocks,
-or
-
-    "[" ref_before "->" ref_after "]"
-
-if the refcount changed.
-
-typename is object->ob_type->tp_name, extracted from the second PYTHONDUMPREFS
-output block.
-
-repr is repr(object), extracted from the first PYTHONDUMPREFS output block.
-CAUTION:  If object is a container type, it may not actually contain all the
-objects shown in the repr:  the repr was captured from the first output block,
-and some of the containees may have been released since then.  For example,
-it's common for the line showing the dict of interned strings to display
-strings that no longer exist at the end of Py_Finalize; this can be recognized
-(albeit painfully) because such containees don't have a line of their own.
-
-The objects are listed in allocation order, with most-recently allocated
-printed first, and the first object allocated printed last.
-
-
-Simple examples:
-
-    00857060 [14] str '__len__'
-
-The str object '__len__' is alive at shutdown time, and both PYTHONDUMPREFS
-output blocks said there were 14 references to it.  This is probably due to
-C modules that intern the string "__len__" and keep a reference to it in a
-file static.
-
-    00857038 [46->5] tuple ()
-
-46-5 = 41 references to the empty tuple were removed by the cleanup actions
-between the times PYTHONDUMPREFS produced output.
-
-    00858028 [1025->1456] str '<dummy key>'
-
-The string '<dummy key>', which is used in dictobject.c to overwrite a real
-key that gets deleted, grew several hundred references during cleanup.  It
-suggests that stuff did get removed from dicts by cleanup, but that the dicts
-themselves are staying alive for some reason. """
-
-import re
-import sys
-
-# Generate lines from fileiter.  If whilematch is true, continue reading
-# while the regexp object pat matches line.  If whilematch is false, lines
-# are read so long as pat doesn't match them.  In any case, the first line
-# that doesn't match pat (when whilematch is true), or that does match pat
-# (when whilematch is false), is lost, and fileiter will resume at the line
-# following it.
-def read(fileiter, pat, whilematch):
-    for line in fileiter:
-        if bool(pat.match(line)) == whilematch:
-            yield line
-        else:
-            break
-
-def combine(fname):
-    f = file(fname)
-    fi = iter(f)
-
-    for line in read(fi, re.compile(r'^Remaining objects:$'), False):
-        pass
-
-    crack = re.compile(r'([a-zA-Z\d]+) \[(\d+)\] (.*)')
-    addr2rc = {}
-    addr2guts = {}
-    before = 0
-    for line in read(fi, re.compile(r'^Remaining object addresses:$'), False):
-        m = crack.match(line)
-        if m:
-            addr, addr2rc[addr], addr2guts[addr] = m.groups()
-            before += 1
-        else:
-            print '??? skipped:', line
-
-    after = 0
-    for line in read(fi, crack, True):
-        after += 1
-        m = crack.match(line)
-        assert m
-        addr, rc, guts = m.groups() # guts is type name here
-        if addr not in addr2rc:
-            print '??? new object created while tearing down:', line.rstrip()
-            continue
-        print addr,
-        if rc == addr2rc[addr]:
-            print '[%s]' % rc,
-        else:
-            print '[%s->%s]' % (addr2rc[addr], rc),
-        print guts, addr2guts[addr]
-
-    f.close()
-    print "%d objects before, %d after" % (before, after)
-
-if __name__ == '__main__':
-    combine(sys.argv[1])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/copytime.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/copytime.py
deleted file mode 100644
index 0bef525..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/copytime.py
+++ /dev/null
@@ -1,26 +0,0 @@
-#! /usr/bin/env python
-
-# Copy one file's atime and mtime to another
-
-import sys
-import os
-from stat import ST_ATIME, ST_MTIME # Really constants 7 and 8
-
-def main():
-    if len(sys.argv) <> 3:
-        sys.stderr.write('usage: copytime source destination\n')
-        sys.exit(2)
-    file1, file2 = sys.argv[1], sys.argv[2]
-    try:
-        stat1 = os.stat(file1)
-    except os.error:
-        sys.stderr.write(file1 + ': cannot stat\n')
-        sys.exit(1)
-    try:
-        os.utime(file2, (stat1[ST_ATIME], stat1[ST_MTIME]))
-    except os.error:
-        sys.stderr.write(file2 + ': cannot change time\n')
-        sys.exit(2)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/crlf.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/crlf.py
deleted file mode 100644
index d6525aa..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/crlf.py
+++ /dev/null
@@ -1,23 +0,0 @@
-#! /usr/bin/env python
-"Replace CRLF with LF in argument files.  Print names of changed files."
-
-import sys, os
-
-def main():
-    for filename in sys.argv[1:]:
-        if os.path.isdir(filename):
-            print filename, "Directory!"
-            continue
-        data = open(filename, "rb").read()
-        if '\0' in data:
-            print filename, "Binary!"
-            continue
-        newdata = data.replace("\r\n", "\n")
-        if newdata != data:
-            print filename
-            f = open(filename, "wb")
-            f.write(newdata)
-            f.close()
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/cvsfiles.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/cvsfiles.py
deleted file mode 100644
index a9795ac..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/cvsfiles.py
+++ /dev/null
@@ -1,72 +0,0 @@
-#! /usr/bin/env python
-
-"""Print a list of files that are mentioned in CVS directories.
-
-Usage: cvsfiles.py [-n file] [directory] ...
-
-If the '-n file' option is given, only files under CVS that are newer
-than the given file are printed; by default, all files under CVS are
-printed.  As a special case, if a file does not exist, it is always
-printed.
-"""
-
-import os
-import sys
-import stat
-import getopt
-
-cutofftime = 0
-
-def main():
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "n:")
-    except getopt.error, msg:
-        print msg
-        print __doc__,
-        return 1
-    global cutofftime
-    newerfile = None
-    for o, a in opts:
-        if o == '-n':
-            cutofftime = getmtime(a)
-    if args:
-        for arg in args:
-            process(arg)
-    else:
-        process(".")
-
-def process(dir):
-    cvsdir = 0
-    subdirs = []
-    names = os.listdir(dir)
-    for name in names:
-        fullname = os.path.join(dir, name)
-        if name == "CVS":
-            cvsdir = fullname
-        else:
-            if os.path.isdir(fullname):
-                if not os.path.islink(fullname):
-                    subdirs.append(fullname)
-    if cvsdir:
-        entries = os.path.join(cvsdir, "Entries")
-        for e in open(entries).readlines():
-            words = e.split('/')
-            if words[0] == '' and words[1:]:
-                name = words[1]
-                fullname = os.path.join(dir, name)
-                if cutofftime and getmtime(fullname) <= cutofftime:
-                    pass
-                else:
-                    print fullname
-    for sub in subdirs:
-        process(sub)
-
-def getmtime(filename):
-    try:
-        st = os.stat(filename)
-    except os.error:
-        return 0
-    return st[stat.ST_MTIME]
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/db2pickle.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/db2pickle.py
deleted file mode 100644
index df6db98..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/db2pickle.py
+++ /dev/null
@@ -1,135 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Synopsis: %(prog)s [-h|-g|-b|-r|-a] dbfile [ picklefile ]
-
-Convert the database file given on the command line to a pickle
-representation.  The optional flags indicate the type of the database:
-
-    -a - open using anydbm
-    -b - open as bsddb btree file
-    -d - open as dbm file
-    -g - open as gdbm file
-    -h - open as bsddb hash file
-    -r - open as bsddb recno file
-
-The default is hash.  If a pickle file is named it is opened for write
-access (deleting any existing data).  If no pickle file is named, the pickle
-output is written to standard output.
-
-"""
-
-import getopt
-try:
-    import bsddb
-except ImportError:
-    bsddb = None
-try:
-    import dbm
-except ImportError:
-    dbm = None
-try:
-    import gdbm
-except ImportError:
-    gdbm = None
-try:
-    import anydbm
-except ImportError:
-    anydbm = None
-import sys
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
-
-prog = sys.argv[0]
-
-def usage():
-    sys.stderr.write(__doc__ % globals())
-
-def main(args):
-    try:
-        opts, args = getopt.getopt(args, "hbrdag",
-                                   ["hash", "btree", "recno", "dbm",
-                                    "gdbm", "anydbm"])
-    except getopt.error:
-        usage()
-        return 1
-
-    if len(args) == 0 or len(args) > 2:
-        usage()
-        return 1
-    elif len(args) == 1:
-        dbfile = args[0]
-        pfile = sys.stdout
-    else:
-        dbfile = args[0]
-        try:
-            pfile = open(args[1], 'wb')
-        except IOError:
-            sys.stderr.write("Unable to open %s\n" % args[1])
-            return 1
-
-    dbopen = None
-    for opt, arg in opts:
-        if opt in ("-h", "--hash"):
-            try:
-                dbopen = bsddb.hashopen
-            except AttributeError:
-                sys.stderr.write("bsddb module unavailable.\n")
-                return 1
-        elif opt in ("-b", "--btree"):
-            try:
-                dbopen = bsddb.btopen
-            except AttributeError:
-                sys.stderr.write("bsddb module unavailable.\n")
-                return 1
-        elif opt in ("-r", "--recno"):
-            try:
-                dbopen = bsddb.rnopen
-            except AttributeError:
-                sys.stderr.write("bsddb module unavailable.\n")
-                return 1
-        elif opt in ("-a", "--anydbm"):
-            try:
-                dbopen = anydbm.open
-            except AttributeError:
-                sys.stderr.write("anydbm module unavailable.\n")
-                return 1
-        elif opt in ("-g", "--gdbm"):
-            try:
-                dbopen = gdbm.open
-            except AttributeError:
-                sys.stderr.write("gdbm module unavailable.\n")
-                return 1
-        elif opt in ("-d", "--dbm"):
-            try:
-                dbopen = dbm.open
-            except AttributeError:
-                sys.stderr.write("dbm module unavailable.\n")
-                return 1
-    if dbopen is None:
-        if bsddb is None:
-            sys.stderr.write("bsddb module unavailable - ")
-            sys.stderr.write("must specify dbtype.\n")
-            return 1
-        else:
-            dbopen = bsddb.hashopen
-
-    try:
-        db = dbopen(dbfile, 'r')
-    except bsddb.error:
-        sys.stderr.write("Unable to open %s.  " % dbfile)
-        sys.stderr.write("Check for format or version mismatch.\n")
-        return 1
-
-    for k in db.keys():
-        pickle.dump((k, db[k]), pfile, 1==1)
-
-    db.close()
-    pfile.close()
-
-    return 0
-
-if __name__ == "__main__":
-    sys.exit(main(sys.argv[1:]))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/diff.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/diff.py
deleted file mode 100644
index 9765193..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/diff.py
+++ /dev/null
@@ -1,49 +0,0 @@
-""" Command line interface to difflib.py providing diffs in four formats:
-
-* ndiff:    lists every line and highlights interline changes.
-* context:  highlights clusters of changes in a before/after format.
-* unified:  highlights clusters of changes in an inline format.
-* html:     generates side by side comparison with change highlights.
-
-"""
-
-import sys, os, time, difflib, optparse
-
-def main():
-
-    usage = "usage: %prog [options] fromfile tofile"
-    parser = optparse.OptionParser(usage)
-    parser.add_option("-c", action="store_true", default=False, help='Produce a context format diff (default)')
-    parser.add_option("-u", action="store_true", default=False, help='Produce a unified format diff')
-    parser.add_option("-m", action="store_true", default=False, help='Produce HTML side by side diff (can use -c and -l in conjunction)')
-    parser.add_option("-n", action="store_true", default=False, help='Produce a ndiff format diff')
-    parser.add_option("-l", "--lines", type="int", default=3, help='Set number of context lines (default 3)')
-    (options, args) = parser.parse_args()
-
-    if len(args) == 0:
-        parser.print_help()
-        sys.exit(1)
-    if len(args) != 2:
-        parser.error("need to specify both a fromfile and tofile")
-
-    n = options.lines
-    fromfile, tofile = args
-
-    fromdate = time.ctime(os.stat(fromfile).st_mtime)
-    todate = time.ctime(os.stat(tofile).st_mtime)
-    fromlines = open(fromfile, 'U').readlines()
-    tolines = open(tofile, 'U').readlines()
-
-    if options.u:
-        diff = difflib.unified_diff(fromlines, tolines, fromfile, tofile, fromdate, todate, n=n)
-    elif options.n:
-        diff = difflib.ndiff(fromlines, tolines)
-    elif options.m:
-        diff = difflib.HtmlDiff().make_file(fromlines,tolines,fromfile,tofile,context=options.c,numlines=n)
-    else:
-        diff = difflib.context_diff(fromlines, tolines, fromfile, tofile, fromdate, todate, n=n)
-
-    sys.stdout.writelines(diff)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/dutree.doc b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/dutree.doc
deleted file mode 100644
index 36c7659..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/dutree.doc
+++ /dev/null
@@ -1,54 +0,0 @@
-Path: cwi.nl!sun4nl!mcsun!uunet!cs.utexas.edu!convex!usenet
-From: tchrist@convex.COM (Tom Christiansen)
-Newsgroups: comp.lang.perl
-Subject: Re: The problems of Perl (Re: Question (silly?))
-Message-ID: <1992Jan17.053115.4220@convex.com>
-Date: 17 Jan 92 05:31:15 GMT
-References: <17458@ector.cs.purdue.edu> <1992Jan16.165347.25583@cherokee.uswest.com> <=#Hues+4@cs.psu.edu>
-Sender: usenet@convex.com (news access account)
-Reply-To: tchrist@convex.COM (Tom Christiansen)
-Organization: CONVEX Realtime Development, Colorado Springs, CO
-Lines: 83
-Nntp-Posting-Host: pixel.convex.com
-
-From the keyboard of flee@cs.psu.edu (Felix Lee):
-:And Perl is definitely awkward with data types.  I haven't yet found a
-:pleasant way of shoving non-trivial data types into Perl's grammar.
-
-Yes, it's pretty aweful at that, alright.  Sometimes I write perl programs
-that need them, and sometimes it just takes a little creativity.  But
-sometimes it's not worth it.  I actually wrote a C program the other day
-(gasp) because I didn't want to deal with a game matrix with six links per node.
-
-:Here's a very simple problem that's tricky to express in Perl: process
-:the output of "du" to produce output that's indented to reflect the
-:tree structure, and with each subtree sorted by size.  Something like:
-:    434 /etc
-:      |     344 .
-:      |      50 install
-:      |      35 uucp
-:      |       3 nserve
-:      |       |       2 .
-:      |       |       1 auth.info
-:      |       1 sm
-:      |       1 sm.bak
-
-At first I thought I could just keep one local list around
-at once, but this seems inherently recursive.  Which means 
-I need an real recursive data structure.  Maybe you could
-do it with one of the %assoc arrays Larry uses in the begat
-programs, but I broke down and got dirty.  I think the hardest
-part was matching Felix's desired output exactly.  It's not 
-blazingly fast: I should probably inline the &childof routine,
-but it *was* faster to write than I could have written the 
-equivalent C program.
-
-
---tom
-
---
-"GUIs normally make it simple to accomplish simple actions and impossible
-to accomplish complex actions."   --Doug Gwyn  (22/Jun/91 in comp.unix.wizards)
-
-     Tom Christiansen           tchrist@convex.com      convex!tchrist
-
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/dutree.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/dutree.py
deleted file mode 100644
index 422f3bd..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/dutree.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#! /usr/bin/env python
-# Format du output in a tree shape
-
-import os, sys, errno
-
-def main():
-    p = os.popen('du ' + ' '.join(sys.argv[1:]), 'r')
-    total, d = None, {}
-    for line in p.readlines():
-        i = 0
-        while line[i] in '0123456789': i = i+1
-        size = eval(line[:i])
-        while line[i] in ' \t': i = i+1
-        filename = line[i:-1]
-        comps = filename.split('/')
-        if comps[0] == '': comps[0] = '/'
-        if comps[len(comps)-1] == '': del comps[len(comps)-1]
-        total, d = store(size, comps, total, d)
-    try:
-        display(total, d)
-    except IOError, e:
-        if e.errno != errno.EPIPE:
-            raise
-
-def store(size, comps, total, d):
-    if comps == []:
-        return size, d
-    if not d.has_key(comps[0]):
-        d[comps[0]] = None, {}
-    t1, d1 = d[comps[0]]
-    d[comps[0]] = store(size, comps[1:], t1, d1)
-    return total, d
-
-def display(total, d):
-    show(total, d, '')
-
-def show(total, d, prefix):
-    if not d: return
-    list = []
-    sum = 0
-    for key in d.keys():
-        tsub, dsub = d[key]
-        list.append((tsub, key))
-        if tsub is not None: sum = sum + tsub
-##  if sum < total:
-##      list.append((total - sum, os.curdir))
-    list.sort()
-    list.reverse()
-    width = len(repr(list[0][0]))
-    for tsub, key in list:
-        if tsub is None:
-            psub = prefix
-        else:
-            print prefix + repr(tsub).rjust(width) + ' ' + key
-            psub = prefix + ' '*(width-1) + '|' + ' '*(len(key)+1)
-        if d.has_key(key):
-            show(tsub, d[key][1], psub)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/eptags.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/eptags.py
deleted file mode 100644
index 55afd13..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/eptags.py
+++ /dev/null
@@ -1,56 +0,0 @@
-#! /usr/bin/env python
-"""Create a TAGS file for Python programs, usable with GNU Emacs.
-
-usage: eptags pyfiles...
-
-The output TAGS file is usable with Emacs version 18, 19, 20.
-Tagged are:
- - functions (even inside other defs or classes)
- - classes
-
-eptags warns about files it cannot open.
-eptags will not give warnings about duplicate tags.
-
-BUGS:
-   Because of tag duplication (methods with the same name in different
-   classes), TAGS files are not very useful for most object-oriented
-   python projects.
-"""
-import sys,re
-
-expr = r'^[ \t]*(def|class)[ \t]+([a-zA-Z_][a-zA-Z0-9_]*)[ \t]*[:\(]'
-matcher = re.compile(expr)
-
-def treat_file(filename, outfp):
-    """Append tags found in file named 'filename' to the open file 'outfp'"""
-    try:
-        fp = open(filename, 'r')
-    except:
-        sys.stderr.write('Cannot open %s\n'%filename)
-        return
-    charno = 0
-    lineno = 0
-    tags = []
-    size = 0
-    while 1:
-        line = fp.readline()
-        if not line:
-            break
-        lineno = lineno + 1
-        m = matcher.search(line)
-        if m:
-            tag = m.group(0) + '\177%d,%d\n' % (lineno, charno)
-            tags.append(tag)
-            size = size + len(tag)
-        charno = charno + len(line)
-    outfp.write('\f\n%s,%d\n' % (filename,size))
-    for tag in tags:
-        outfp.write(tag)
-
-def main():
-    outfp = open('TAGS', 'w')
-    for filename in sys.argv[1:]:
-        treat_file(filename, outfp)
-
-if __name__=="__main__":
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/find_recursionlimit.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/find_recursionlimit.py
deleted file mode 100644
index 8b578e9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/find_recursionlimit.py
+++ /dev/null
@@ -1,117 +0,0 @@
-#! /usr/bin/env python
-"""Find the maximum recursion limit that prevents interpreter termination.
-
-This script finds the maximum safe recursion limit on a particular
-platform.  If you need to change the recursion limit on your system,
-this script will tell you a safe upper bound.  To use the new limit,
-call sys.setrecursionlimit().
-
-This module implements several ways to create infinite recursion in
-Python.  Different implementations end up pushing different numbers of
-C stack frames, depending on how many calls through Python's abstract
-C API occur.
-
-After each round of tests, it prints a message:
-"Limit of NNNN is fine".
-
-The highest printed value of "NNNN" is therefore the highest potentially
-safe limit for your system (which depends on the OS, architecture, but also
-the compilation flags). Please note that it is practically impossible to
-test all possible recursion paths in the interpreter, so the results of
-this test should not be trusted blindly -- although they give a good hint
-of which values are reasonable.
-
-NOTE: When the C stack space allocated by your system is exceeded due
-to excessive recursion, exact behaviour depends on the platform, although
-the interpreter will always fail in a likely brutal way: either a
-segmentation fault, a MemoryError, or just a silent abort.
-
-NB: A program that does not use __methods__ can set a higher limit.
-"""
-
-import sys
-import itertools
-
-class RecursiveBlowup1:
-    def __init__(self):
-        self.__init__()
-
-def test_init():
-    return RecursiveBlowup1()
-
-class RecursiveBlowup2:
-    def __repr__(self):
-        return repr(self)
-
-def test_repr():
-    return repr(RecursiveBlowup2())
-
-class RecursiveBlowup4:
-    def __add__(self, x):
-        return x + self
-
-def test_add():
-    return RecursiveBlowup4() + RecursiveBlowup4()
-
-class RecursiveBlowup5:
-    def __getattr__(self, attr):
-        return getattr(self, attr)
-
-def test_getattr():
-    return RecursiveBlowup5().attr
-
-class RecursiveBlowup6:
-    def __getitem__(self, item):
-        return self[item - 2] + self[item - 1]
-
-def test_getitem():
-    return RecursiveBlowup6()[5]
-
-def test_recurse():
-    return test_recurse()
-
-def test_cpickle(_cache={}):
-    try:
-        import cPickle
-    except ImportError:
-        print "cannot import cPickle, skipped!"
-        return
-    l = None
-    for n in itertools.count():
-        try:
-            l = _cache[n]
-            continue  # Already tried and it works, let's save some time
-        except KeyError:
-            for i in range(100):
-                l = [l]
-        cPickle.dumps(l, protocol=-1)
-        _cache[n] = l
-
-def check_limit(n, test_func_name):
-    sys.setrecursionlimit(n)
-    if test_func_name.startswith("test_"):
-        print test_func_name[5:]
-    else:
-        print test_func_name
-    test_func = globals()[test_func_name]
-    try:
-        test_func()
-    # AttributeError can be raised because of the way e.g. PyDict_GetItem()
-    # silences all exceptions and returns NULL, which is usually interpreted
-    # as "missing attribute".
-    except (RuntimeError, AttributeError):
-        pass
-    else:
-        print "Yikes!"
-
-limit = 1000
-while 1:
-    check_limit(limit, "test_recurse")
-    check_limit(limit, "test_add")
-    check_limit(limit, "test_repr")
-    check_limit(limit, "test_init")
-    check_limit(limit, "test_getattr")
-    check_limit(limit, "test_getitem")
-    check_limit(limit, "test_cpickle")
-    print "Limit of %d is fine" % limit
-    limit = limit + 100
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/finddiv.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/finddiv.py
deleted file mode 100644
index b7b57c0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/finddiv.py
+++ /dev/null
@@ -1,89 +0,0 @@
-#! /usr/bin/env python
-
-"""finddiv - a grep-like tool that looks for division operators.
-
-Usage: finddiv [-l] file_or_directory ...
-
-For directory arguments, all files in the directory whose name ends in
-.py are processed, and subdirectories are processed recursively.
-
-This actually tokenizes the files to avoid false hits in comments or
-strings literals.
-
-By default, this prints all lines containing a / or /= operator, in
-grep -n style.  With the -l option specified, it prints the filename
-of files that contain at least one / or /= operator.
-"""
-
-import os
-import sys
-import getopt
-import tokenize
-
-def main():
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "lh")
-    except getopt.error, msg:
-        usage(msg)
-        return 2
-    if not args:
-        usage("at least one file argument is required")
-        return 2
-    listnames = 0
-    for o, a in opts:
-        if o == "-h":
-            print __doc__
-            return
-        if o == "-l":
-            listnames = 1
-    exit = None
-    for filename in args:
-        x = process(filename, listnames)
-        exit = exit or x
-    return exit
-
-def usage(msg):
-    sys.stderr.write("%s: %s\n" % (sys.argv[0], msg))
-    sys.stderr.write("Usage: %s [-l] file ...\n" % sys.argv[0])
-    sys.stderr.write("Try `%s -h' for more information.\n" % sys.argv[0])
-
-def process(filename, listnames):
-    if os.path.isdir(filename):
-        return processdir(filename, listnames)
-    try:
-        fp = open(filename)
-    except IOError, msg:
-        sys.stderr.write("Can't open: %s\n" % msg)
-        return 1
-    g = tokenize.generate_tokens(fp.readline)
-    lastrow = None
-    for type, token, (row, col), end, line in g:
-        if token in ("/", "/="):
-            if listnames:
-                print filename
-                break
-            if row != lastrow:
-                lastrow = row
-                print "%s:%d:%s" % (filename, row, line),
-    fp.close()
-
-def processdir(dir, listnames):
-    try:
-        names = os.listdir(dir)
-    except os.error, msg:
-        sys.stderr.write("Can't list directory: %s\n" % dir)
-        return 1
-    files = []
-    for name in names:
-        fn = os.path.join(dir, name)
-        if os.path.normcase(fn).endswith(".py") or os.path.isdir(fn):
-            files.append(fn)
-    files.sort(lambda a, b: cmp(os.path.normcase(a), os.path.normcase(b)))
-    exit = None
-    for fn in files:
-        x = process(fn, listnames)
-        exit = exit or x
-    return exit
-
-if __name__ == "__main__":
-    sys.exit(main())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/findlinksto.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/findlinksto.py
deleted file mode 100644
index 81bcf87..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/findlinksto.py
+++ /dev/null
@@ -1,43 +0,0 @@
-#! /usr/bin/env python
-
-# findlinksto
-#
-# find symbolic links to a path matching a regular expression
-
-import os
-import sys
-import re
-import getopt
-
-def main():
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], '')
-        if len(args) < 2:
-            raise getopt.GetoptError('not enough arguments', None)
-    except getopt.GetoptError, msg:
-        sys.stdout = sys.stderr
-        print msg
-        print 'usage: findlinksto pattern directory ...'
-        sys.exit(2)
-    pat, dirs = args[0], args[1:]
-    prog = re.compile(pat)
-    for dirname in dirs:
-        os.path.walk(dirname, visit, prog)
-
-def visit(prog, dirname, names):
-    if os.path.islink(dirname):
-        names[:] = []
-        return
-    if os.path.ismount(dirname):
-        print 'descend into', dirname
-    for name in names:
-        name = os.path.join(dirname, name)
-        try:
-            linkto = os.readlink(name)
-            if prog.search(linkto) is not None:
-                print name, '->', linkto
-        except os.error:
-            pass
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/findnocoding.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/findnocoding.py
deleted file mode 100644
index 7aad516..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/findnocoding.py
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/usr/bin/env python
-
-"""List all those Python files that require a coding directive
-
-Usage: nocoding.py dir1 [dir2...]
-"""
-
-__author__ = "Oleg Broytmann, Georg Brandl"
-
-import sys, os, re, getopt
-
-# our pysource module finds Python source files
-try:
-    import pysource
-except ImportError:
-    # emulate the module with a simple os.walk
-    class pysource:
-        has_python_ext = looks_like_python = can_be_compiled = None
-        def walk_python_files(self, paths, *args, **kwargs):
-            for path in paths:
-                if os.path.isfile(path):
-                    yield path.endswith(".py")
-                elif os.path.isdir(path):
-                    for root, dirs, files in os.walk(path):
-                        for filename in files:
-                            if filename.endswith(".py"):
-                                yield os.path.join(root, filename)
-    pysource = pysource()
-
-
-    print >>sys.stderr, ("The pysource module is not available; "
-                         "no sophisticated Python source file search will be done.")
-
-
-decl_re = re.compile(r"coding[=:]\s*([-\w.]+)")
-
-def get_declaration(line):
-    match = decl_re.search(line)
-    if match:
-        return match.group(1)
-    return ''
-
-def has_correct_encoding(text, codec):
-    try:
-        unicode(text, codec)
-    except UnicodeDecodeError:
-        return False
-    else:
-        return True
-
-def needs_declaration(fullpath):
-    try:
-        infile = open(fullpath, 'rU')
-    except IOError: # Oops, the file was removed - ignore it
-        return None
-
-    line1 = infile.readline()
-    line2 = infile.readline()
-
-    if get_declaration(line1) or get_declaration(line2):
-        # the file does have an encoding declaration, so trust it
-        infile.close()
-        return False
-
-    # check the whole file for non-ASCII characters
-    rest = infile.read()
-    infile.close()
-
-    if has_correct_encoding(line1+line2+rest, "ascii"):
-        return False
-
-    return True
-
-
-usage = """Usage: %s [-cd] paths...
-    -c: recognize Python source files trying to compile them
-    -d: debug output""" % sys.argv[0]
-
-try:
-    opts, args = getopt.getopt(sys.argv[1:], 'cd')
-except getopt.error, msg:
-    print >>sys.stderr, msg
-    print >>sys.stderr, usage
-    sys.exit(1)
-
-is_python = pysource.looks_like_python
-debug = False
-
-for o, a in opts:
-    if o == '-c':
-        is_python = pysource.can_be_compiled
-    elif o == '-d':
-        debug = True
-
-if not args:
-    print >>sys.stderr, usage
-    sys.exit(1)
-
-for fullpath in pysource.walk_python_files(args, is_python):
-    if debug:
-        print "Testing for coding: %s" % fullpath
-    result = needs_declaration(fullpath)
-    if result:
-        print fullpath
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixcid.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixcid.py
deleted file mode 100644
index ee5a9f6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixcid.py
+++ /dev/null
@@ -1,314 +0,0 @@
-#! /usr/bin/env python
-
-# Perform massive identifier substitution on C source files.
-# This actually tokenizes the files (to some extent) so it can
-# avoid making substitutions inside strings or comments.
-# Inside strings, substitutions are never made; inside comments,
-# it is a user option (off by default).
-#
-# The substitutions are read from one or more files whose lines,
-# when not empty, after stripping comments starting with #,
-# must contain exactly two words separated by whitespace: the
-# old identifier and its replacement.
-#
-# The option -r reverses the sense of the substitutions (this may be
-# useful to undo a particular substitution).
-#
-# If the old identifier is prefixed with a '*' (with no intervening
-# whitespace), then it will not be substituted inside comments.
-#
-# Command line arguments are files or directories to be processed.
-# Directories are searched recursively for files whose name looks
-# like a C file (ends in .h or .c).  The special filename '-' means
-# operate in filter mode: read stdin, write stdout.
-#
-# Symbolic links are always ignored (except as explicit directory
-# arguments).
-#
-# The original files are kept as back-up with a "~" suffix.
-#
-# Changes made are reported to stdout in a diff-like format.
-#
-# NB: by changing only the function fixline() you can turn this
-# into a program for different changes to C source files; by
-# changing the function wanted() you can make a different selection of
-# files.
-
-import sys
-import re
-import os
-from stat import *
-import getopt
-
-err = sys.stderr.write
-dbg = err
-rep = sys.stdout.write
-
-def usage():
-    progname = sys.argv[0]
-    err('Usage: ' + progname +
-              ' [-c] [-r] [-s file] ... file-or-directory ...\n')
-    err('\n')
-    err('-c           : substitute inside comments\n')
-    err('-r           : reverse direction for following -s options\n')
-    err('-s substfile : add a file of substitutions\n')
-    err('\n')
-    err('Each non-empty non-comment line in a substitution file must\n')
-    err('contain exactly two words: an identifier and its replacement.\n')
-    err('Comments start with a # character and end at end of line.\n')
-    err('If an identifier is preceded with a *, it is not substituted\n')
-    err('inside a comment even when -c is specified.\n')
-
-def main():
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'crs:')
-    except getopt.error, msg:
-        err('Options error: ' + str(msg) + '\n')
-        usage()
-        sys.exit(2)
-    bad = 0
-    if not args: # No arguments
-        usage()
-        sys.exit(2)
-    for opt, arg in opts:
-        if opt == '-c':
-            setdocomments()
-        if opt == '-r':
-            setreverse()
-        if opt == '-s':
-            addsubst(arg)
-    for arg in args:
-        if os.path.isdir(arg):
-            if recursedown(arg): bad = 1
-        elif os.path.islink(arg):
-            err(arg + ': will not process symbolic links\n')
-            bad = 1
-        else:
-            if fix(arg): bad = 1
-    sys.exit(bad)
-
-# Change this regular expression to select a different set of files
-Wanted = '^[a-zA-Z0-9_]+\.[ch]$'
-def wanted(name):
-    return re.match(Wanted, name) >= 0
-
-def recursedown(dirname):
-    dbg('recursedown(%r)\n' % (dirname,))
-    bad = 0
-    try:
-        names = os.listdir(dirname)
-    except os.error, msg:
-        err(dirname + ': cannot list directory: ' + str(msg) + '\n')
-        return 1
-    names.sort()
-    subdirs = []
-    for name in names:
-        if name in (os.curdir, os.pardir): continue
-        fullname = os.path.join(dirname, name)
-        if os.path.islink(fullname): pass
-        elif os.path.isdir(fullname):
-            subdirs.append(fullname)
-        elif wanted(name):
-            if fix(fullname): bad = 1
-    for fullname in subdirs:
-        if recursedown(fullname): bad = 1
-    return bad
-
-def fix(filename):
-##  dbg('fix(%r)\n' % (filename,))
-    if filename == '-':
-        # Filter mode
-        f = sys.stdin
-        g = sys.stdout
-    else:
-        # File replacement mode
-        try:
-            f = open(filename, 'r')
-        except IOError, msg:
-            err(filename + ': cannot open: ' + str(msg) + '\n')
-            return 1
-        head, tail = os.path.split(filename)
-        tempname = os.path.join(head, '@' + tail)
-        g = None
-    # If we find a match, we rewind the file and start over but
-    # now copy everything to a temp file.
-    lineno = 0
-    initfixline()
-    while 1:
-        line = f.readline()
-        if not line: break
-        lineno = lineno + 1
-        while line[-2:] == '\\\n':
-            nextline = f.readline()
-            if not nextline: break
-            line = line + nextline
-            lineno = lineno + 1
-        newline = fixline(line)
-        if newline != line:
-            if g is None:
-                try:
-                    g = open(tempname, 'w')
-                except IOError, msg:
-                    f.close()
-                    err(tempname+': cannot create: '+
-                        str(msg)+'\n')
-                    return 1
-                f.seek(0)
-                lineno = 0
-                initfixline()
-                rep(filename + ':\n')
-                continue # restart from the beginning
-            rep(repr(lineno) + '\n')
-            rep('< ' + line)
-            rep('> ' + newline)
-        if g is not None:
-            g.write(newline)
-
-    # End of file
-    if filename == '-': return 0 # Done in filter mode
-    f.close()
-    if not g: return 0 # No changes
-
-    # Finishing touch -- move files
-
-    # First copy the file's mode to the temp file
-    try:
-        statbuf = os.stat(filename)
-        os.chmod(tempname, statbuf[ST_MODE] & 07777)
-    except os.error, msg:
-        err(tempname + ': warning: chmod failed (' + str(msg) + ')\n')
-    # Then make a backup of the original file as filename~
-    try:
-        os.rename(filename, filename + '~')
-    except os.error, msg:
-        err(filename + ': warning: backup failed (' + str(msg) + ')\n')
-    # Now move the temp file to the original file
-    try:
-        os.rename(tempname, filename)
-    except os.error, msg:
-        err(filename + ': rename failed (' + str(msg) + ')\n')
-        return 1
-    # Return success
-    return 0
-
-# Tokenizing ANSI C (partly)
-
-Identifier = '\(struct \)?[a-zA-Z_][a-zA-Z0-9_]+'
-String = '"\([^\n\\"]\|\\\\.\)*"'
-Char = '\'\([^\n\\\']\|\\\\.\)*\''
-CommentStart = '/\*'
-CommentEnd = '\*/'
-
-Hexnumber = '0[xX][0-9a-fA-F]*[uUlL]*'
-Octnumber = '0[0-7]*[uUlL]*'
-Decnumber = '[1-9][0-9]*[uUlL]*'
-Intnumber = Hexnumber + '\|' + Octnumber + '\|' + Decnumber
-Exponent = '[eE][-+]?[0-9]+'
-Pointfloat = '\([0-9]+\.[0-9]*\|\.[0-9]+\)\(' + Exponent + '\)?'
-Expfloat = '[0-9]+' + Exponent
-Floatnumber = Pointfloat + '\|' + Expfloat
-Number = Floatnumber + '\|' + Intnumber
-
-# Anything else is an operator -- don't list this explicitly because of '/*'
-
-OutsideComment = (Identifier, Number, String, Char, CommentStart)
-OutsideCommentPattern = '(' + '|'.join(OutsideComment) + ')'
-OutsideCommentProgram = re.compile(OutsideCommentPattern)
-
-InsideComment = (Identifier, Number, CommentEnd)
-InsideCommentPattern = '(' + '|'.join(InsideComment) + ')'
-InsideCommentProgram = re.compile(InsideCommentPattern)
-
-def initfixline():
-    global Program
-    Program = OutsideCommentProgram
-
-def fixline(line):
-    global Program
-##  print '-->', repr(line)
-    i = 0
-    while i < len(line):
-        i = Program.search(line, i)
-        if i < 0: break
-        found = Program.group(0)
-##      if Program is InsideCommentProgram: print '...',
-##      else: print '   ',
-##      print found
-        if len(found) == 2:
-            if found == '/*':
-                Program = InsideCommentProgram
-            elif found == '*/':
-                Program = OutsideCommentProgram
-        n = len(found)
-        if Dict.has_key(found):
-            subst = Dict[found]
-            if Program is InsideCommentProgram:
-                if not Docomments:
-                    print 'Found in comment:', found
-                    i = i + n
-                    continue
-                if NotInComment.has_key(found):
-##                  print 'Ignored in comment:',
-##                  print found, '-->', subst
-##                  print 'Line:', line,
-                    subst = found
-##              else:
-##                  print 'Substituting in comment:',
-##                  print found, '-->', subst
-##                  print 'Line:', line,
-            line = line[:i] + subst + line[i+n:]
-            n = len(subst)
-        i = i + n
-    return line
-
-Docomments = 0
-def setdocomments():
-    global Docomments
-    Docomments = 1
-
-Reverse = 0
-def setreverse():
-    global Reverse
-    Reverse = (not Reverse)
-
-Dict = {}
-NotInComment = {}
-def addsubst(substfile):
-    try:
-        fp = open(substfile, 'r')
-    except IOError, msg:
-        err(substfile + ': cannot read substfile: ' + str(msg) + '\n')
-        sys.exit(1)
-    lineno = 0
-    while 1:
-        line = fp.readline()
-        if not line: break
-        lineno = lineno + 1
-        try:
-            i = line.index('#')
-        except ValueError:
-            i = -1          # Happens to delete trailing \n
-        words = line[:i].split()
-        if not words: continue
-        if len(words) == 3 and words[0] == 'struct':
-            words[:2] = [words[0] + ' ' + words[1]]
-        elif len(words) <> 2:
-            err(substfile + '%s:%r: warning: bad line: %r' % (substfile, lineno, line))
-            continue
-        if Reverse:
-            [value, key] = words
-        else:
-            [key, value] = words
-        if value[0] == '*':
-            value = value[1:]
-        if key[0] == '*':
-            key = key[1:]
-            NotInComment[key] = value
-        if Dict.has_key(key):
-            err('%s:%r: warning: overriding: %r %r\n' % (substfile, lineno, key, value))
-            err('%s:%r: warning: previous: %r\n' % (substfile, lineno, Dict[key]))
-        Dict[key] = value
-    fp.close()
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixdiv.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixdiv.py
deleted file mode 100644
index c10f59d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixdiv.py
+++ /dev/null
@@ -1,380 +0,0 @@
-#! /usr/bin/env python
-
-"""fixdiv - tool to fix division operators.
-
-To use this tool, first run `python -Qwarnall yourscript.py 2>warnings'.
-This runs the script `yourscript.py' while writing warning messages
-about all uses of the classic division operator to the file
-`warnings'.  The warnings look like this:
-
-  <file>:<line>: DeprecationWarning: classic <type> division
-
-The warnings are written to stderr, so you must use `2>' for the I/O
-redirect.  I know of no way to redirect stderr on Windows in a DOS
-box, so you will have to modify the script to set sys.stderr to some
-kind of log file if you want to do this on Windows.
-
-The warnings are not limited to the script; modules imported by the
-script may also trigger warnings.  In fact a useful technique is to
-write a test script specifically intended to exercise all code in a
-particular module or set of modules.
-
-Then run `python fixdiv.py warnings'.  This first reads the warnings,
-looking for classic division warnings, and sorts them by file name and
-line number.  Then, for each file that received at least one warning,
-it parses the file and tries to match the warnings up to the division
-operators found in the source code.  If it is successful, it writes
-its findings to stdout, preceded by a line of dashes and a line of the
-form:
-
-  Index: <file>
-
-If the only findings found are suggestions to change a / operator into
-a // operator, the output is acceptable input for the Unix 'patch'
-program.
-
-Here are the possible messages on stdout (N stands for a line number):
-
-- A plain-diff-style change ('NcN', a line marked by '<', a line
-  containing '---', and a line marked by '>'):
-
-  A / operator was found that should be changed to //.  This is the
-  recommendation when only int and/or long arguments were seen.
-
-- 'True division / operator at line N' and a line marked by '=':
-
-  A / operator was found that can remain unchanged.  This is the
-  recommendation when only float and/or complex arguments were seen.
-
-- 'Ambiguous / operator (..., ...) at line N', line marked by '?':
-
-  A / operator was found for which int or long as well as float or
-  complex arguments were seen.  This is highly unlikely; if it occurs,
-  you may have to restructure the code to keep the classic semantics,
-  or maybe you don't care about the classic semantics.
-
-- 'No conclusive evidence on line N', line marked by '*':
-
-  A / operator was found for which no warnings were seen.  This could
-  be code that was never executed, or code that was only executed
-  with user-defined objects as arguments.  You will have to
-  investigate further.  Note that // can be overloaded separately from
-  /, using __floordiv__.  True division can also be separately
-  overloaded, using __truediv__.  Classic division should be the same
-  as either of those.  (XXX should I add a warning for division on
-  user-defined objects, to disambiguate this case from code that was
-  never executed?)
-
-- 'Phantom ... warnings for line N', line marked by '*':
-
-  A warning was seen for a line not containing a / operator.  The most
-  likely cause is a warning about code executed by 'exec' or eval()
-  (see note below), or an indirect invocation of the / operator, for
-  example via the div() function in the operator module.  It could
-  also be caused by a change to the file between the time the test
-  script was run to collect warnings and the time fixdiv was run.
-
-- 'More than one / operator in line N'; or
-  'More than one / operator per statement in lines N-N':
-
-  The scanner found more than one / operator on a single line, or in a
-  statement split across multiple lines.  Because the warnings
-  framework doesn't (and can't) show the offset within the line, and
-  the code generator doesn't always give the correct line number for
-  operations in a multi-line statement, we can't be sure whether all
-  operators in the statement were executed.  To be on the safe side,
-  by default a warning is issued about this case.  In practice, these
-  cases are usually safe, and the -m option suppresses these warning.
-
-- 'Can't find the / operator in line N', line marked by '*':
-
-  This really shouldn't happen.  It means that the tokenize module
-  reported a '/' operator but the line it returns didn't contain a '/'
-  character at the indicated position.
-
-- 'Bad warning for line N: XYZ', line marked by '*':
-
-  This really shouldn't happen.  It means that a 'classic XYZ
-  division' warning was read with XYZ being something other than
-  'int', 'long', 'float', or 'complex'.
-
-Notes:
-
-- The augmented assignment operator /= is handled the same way as the
-  / operator.
-
-- This tool never looks at the // operator; no warnings are ever
-  generated for use of this operator.
-
-- This tool never looks at the / operator when a future division
-  statement is in effect; no warnings are generated in this case, and
-  because the tool only looks at files for which at least one classic
-  division warning was seen, it will never look at files containing a
-  future division statement.
-
-- Warnings may be issued for code not read from a file, but executed
-  using an exec statement or the eval() function.  These may have
-  <string> in the filename position, in which case the fixdiv script
-  will attempt and fail to open a file named '<string>' and issue a
-  warning about this failure; or these may be reported as 'Phantom'
-  warnings (see above).  You're on your own to deal with these.  You
-  could make all recommended changes and add a future division
-  statement to all affected files, and then re-run the test script; it
-  should not issue any warnings.  If there are any, and you have a
-  hard time tracking down where they are generated, you can use the
-  -Werror option to force an error instead of a first warning,
-  generating a traceback.
-
-- The tool should be run from the same directory as that from which
-  the original script was run, otherwise it won't be able to open
-  files given by relative pathnames.
-"""
-
-import sys
-import getopt
-import re
-import tokenize
-
-multi_ok = 0
-
-def main():
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "hm")
-    except getopt.error, msg:
-        usage(msg)
-        return 2
-    for o, a in opts:
-        if o == "-h":
-            print __doc__
-            return
-        if o == "-m":
-            global multi_ok
-            multi_ok = 1
-    if not args:
-        usage("at least one file argument is required")
-        return 2
-    if args[1:]:
-        sys.stderr.write("%s: extra file arguments ignored\n", sys.argv[0])
-    warnings = readwarnings(args[0])
-    if warnings is None:
-        return 1
-    files = warnings.keys()
-    if not files:
-        print "No classic division warnings read from", args[0]
-        return
-    files.sort()
-    exit = None
-    for filename in files:
-        x = process(filename, warnings[filename])
-        exit = exit or x
-    return exit
-
-def usage(msg):
-    sys.stderr.write("%s: %s\n" % (sys.argv[0], msg))
-    sys.stderr.write("Usage: %s [-m] warnings\n" % sys.argv[0])
-    sys.stderr.write("Try `%s -h' for more information.\n" % sys.argv[0])
-
-PATTERN = ("^(.+?):(\d+): DeprecationWarning: "
-           "classic (int|long|float|complex) division$")
-
-def readwarnings(warningsfile):
-    prog = re.compile(PATTERN)
-    try:
-        f = open(warningsfile)
-    except IOError, msg:
-        sys.stderr.write("can't open: %s\n" % msg)
-        return
-    warnings = {}
-    while 1:
-        line = f.readline()
-        if not line:
-            break
-        m = prog.match(line)
-        if not m:
-            if line.find("division") >= 0:
-                sys.stderr.write("Warning: ignored input " + line)
-            continue
-        filename, lineno, what = m.groups()
-        list = warnings.get(filename)
-        if list is None:
-            warnings[filename] = list = []
-        list.append((int(lineno), intern(what)))
-    f.close()
-    return warnings
-
-def process(filename, list):
-    print "-"*70
-    assert list # if this fails, readwarnings() is broken
-    try:
-        fp = open(filename)
-    except IOError, msg:
-        sys.stderr.write("can't open: %s\n" % msg)
-        return 1
-    print "Index:", filename
-    f = FileContext(fp)
-    list.sort()
-    index = 0 # list[:index] has been processed, list[index:] is still to do
-    g = tokenize.generate_tokens(f.readline)
-    while 1:
-        startlineno, endlineno, slashes = lineinfo = scanline(g)
-        if startlineno is None:
-            break
-        assert startlineno <= endlineno is not None
-        orphans = []
-        while index < len(list) and list[index][0] < startlineno:
-            orphans.append(list[index])
-            index += 1
-        if orphans:
-            reportphantomwarnings(orphans, f)
-        warnings = []
-        while index < len(list) and list[index][0] <= endlineno:
-            warnings.append(list[index])
-            index += 1
-        if not slashes and not warnings:
-            pass
-        elif slashes and not warnings:
-            report(slashes, "No conclusive evidence")
-        elif warnings and not slashes:
-            reportphantomwarnings(warnings, f)
-        else:
-            if len(slashes) > 1:
-                if not multi_ok:
-                    rows = []
-                    lastrow = None
-                    for (row, col), line in slashes:
-                        if row == lastrow:
-                            continue
-                        rows.append(row)
-                        lastrow = row
-                    assert rows
-                    if len(rows) == 1:
-                        print "*** More than one / operator in line", rows[0]
-                    else:
-                        print "*** More than one / operator per statement",
-                        print "in lines %d-%d" % (rows[0], rows[-1])
-            intlong = []
-            floatcomplex = []
-            bad = []
-            for lineno, what in warnings:
-                if what in ("int", "long"):
-                    intlong.append(what)
-                elif what in ("float", "complex"):
-                    floatcomplex.append(what)
-                else:
-                    bad.append(what)
-            lastrow = None
-            for (row, col), line in slashes:
-                if row == lastrow:
-                    continue
-                lastrow = row
-                line = chop(line)
-                if line[col:col+1] != "/":
-                    print "*** Can't find the / operator in line %d:" % row
-                    print "*", line
-                    continue
-                if bad:
-                    print "*** Bad warning for line %d:" % row, bad
-                    print "*", line
-                elif intlong and not floatcomplex:
-                    print "%dc%d" % (row, row)
-                    print "<", line
-                    print "---"
-                    print ">", line[:col] + "/" + line[col:]
-                elif floatcomplex and not intlong:
-                    print "True division / operator at line %d:" % row
-                    print "=", line
-                elif intlong and floatcomplex:
-                    print "*** Ambiguous / operator (%s, %s) at line %d:" % (
-                        "|".join(intlong), "|".join(floatcomplex), row)
-                    print "?", line
-    fp.close()
-
-def reportphantomwarnings(warnings, f):
-    blocks = []
-    lastrow = None
-    lastblock = None
-    for row, what in warnings:
-        if row != lastrow:
-            lastblock = [row]
-            blocks.append(lastblock)
-        lastblock.append(what)
-    for block in blocks:
-        row = block[0]
-        whats = "/".join(block[1:])
-        print "*** Phantom %s warnings for line %d:" % (whats, row)
-        f.report(row, mark="*")
-
-def report(slashes, message):
-    lastrow = None
-    for (row, col), line in slashes:
-        if row != lastrow:
-            print "*** %s on line %d:" % (message, row)
-            print "*", chop(line)
-            lastrow = row
-
-class FileContext:
-    def __init__(self, fp, window=5, lineno=1):
-        self.fp = fp
-        self.window = 5
-        self.lineno = 1
-        self.eoflookahead = 0
-        self.lookahead = []
-        self.buffer = []
-    def fill(self):
-        while len(self.lookahead) < self.window and not self.eoflookahead:
-            line = self.fp.readline()
-            if not line:
-                self.eoflookahead = 1
-                break
-            self.lookahead.append(line)
-    def readline(self):
-        self.fill()
-        if not self.lookahead:
-            return ""
-        line = self.lookahead.pop(0)
-        self.buffer.append(line)
-        self.lineno += 1
-        return line
-    def truncate(self):
-        del self.buffer[-window:]
-    def __getitem__(self, index):
-        self.fill()
-        bufstart = self.lineno - len(self.buffer)
-        lookend = self.lineno + len(self.lookahead)
-        if bufstart <= index < self.lineno:
-            return self.buffer[index - bufstart]
-        if self.lineno <= index < lookend:
-            return self.lookahead[index - self.lineno]
-        raise KeyError
-    def report(self, first, last=None, mark="*"):
-        if last is None:
-            last = first
-        for i in range(first, last+1):
-            try:
-                line = self[first]
-            except KeyError:
-                line = "<missing line>"
-            print mark, chop(line)
-
-def scanline(g):
-    slashes = []
-    startlineno = None
-    endlineno = None
-    for type, token, start, end, line in g:
-        endlineno = end[0]
-        if startlineno is None:
-            startlineno = endlineno
-        if token in ("/", "/="):
-            slashes.append((start, line))
-        if type == tokenize.NEWLINE:
-            break
-    return startlineno, endlineno, slashes
-
-def chop(line):
-    if line.endswith("\n"):
-        return line[:-1]
-    else:
-        return line
-
-if __name__ == "__main__":
-    sys.exit(main())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixheader.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixheader.py
deleted file mode 100644
index 25abe9a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixheader.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /usr/bin/env python
-
-# Add some standard cpp magic to a header file
-
-import sys
-
-def main():
-    args = sys.argv[1:]
-    for filename in args:
-        process(filename)
-
-def process(filename):
-    try:
-        f = open(filename, 'r')
-    except IOError, msg:
-        sys.stderr.write('%s: can\'t open: %s\n' % (filename, str(msg)))
-        return
-    data = f.read()
-    f.close()
-    if data[:2] <> '/*':
-        sys.stderr.write('%s does not begin with C comment\n' % filename)
-        return
-    try:
-        f = open(filename, 'w')
-    except IOError, msg:
-        sys.stderr.write('%s: can\'t write: %s\n' % (filename, str(msg)))
-        return
-    sys.stderr.write('Processing %s ...\n' % filename)
-    magic = 'Py_'
-    for c in filename:
-        if ord(c)<=0x80 and c.isalnum():
-            magic = magic + c.upper()
-        else: magic = magic + '_'
-    sys.stdout = f
-    print '#ifndef', magic
-    print '#define', magic
-    print '#ifdef __cplusplus'
-    print 'extern "C" {'
-    print '#endif'
-    print
-    f.write(data)
-    print
-    print '#ifdef __cplusplus'
-    print '}'
-    print '#endif'
-    print '#endif /*', '!'+magic, '*/'
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixnotice.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixnotice.py
deleted file mode 100644
index 270608f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixnotice.py
+++ /dev/null
@@ -1,113 +0,0 @@
-#! /usr/bin/env python
-
-"""(Ostensibly) fix copyright notices in files.
-
-Actually, this sript will simply replace a block of text in a file from one
-string to another.  It will only do this once though, i.e. not globally
-throughout the file.  It writes a backup file and then does an os.rename()
-dance for atomicity.
-
-Usage: fixnotices.py [options] [filenames]
-Options:
-    -h / --help
-        Print this message and exit
-
-    --oldnotice=file
-        Use the notice in the file as the old (to be replaced) string, instead
-        of the hard coded value in the script.
-
-    --newnotice=file
-        Use the notice in the file as the new (replacement) string, instead of
-        the hard coded value in the script.
-
-    --dry-run
-        Don't actually make the changes, but print out the list of files that
-        would change.  When used with -v, a status will be printed for every
-        file.
-
-    -v / --verbose
-        Print a message for every file looked at, indicating whether the file
-        is changed or not.
-"""
-
-OLD_NOTICE = """/***********************************************************
-Copyright (c) 2000, BeOpen.com.
-Copyright (c) 1995-2000, Corporation for National Research Initiatives.
-Copyright (c) 1990-1995, Stichting Mathematisch Centrum.
-All rights reserved.
-
-See the file "Misc/COPYRIGHT" for information on usage and
-redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-******************************************************************/
-"""
-import os
-import sys
-import getopt
-
-NEW_NOTICE = ""
-DRYRUN = 0
-VERBOSE = 0
-
-
-def usage(code, msg=''):
-    print __doc__ % globals()
-    if msg:
-        print msg
-    sys.exit(code)
-
-
-def main():
-    global DRYRUN, OLD_NOTICE, NEW_NOTICE, VERBOSE
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'hv',
-                                   ['help', 'oldnotice=', 'newnotice=',
-                                    'dry-run', 'verbose'])
-    except getopt.error, msg:
-        usage(1, msg)
-
-    for opt, arg in opts:
-        if opt in ('-h', '--help'):
-            usage(0)
-        elif opt in ('-v', '--verbose'):
-            VERBOSE = 1
-        elif opt == '--dry-run':
-            DRYRUN = 1
-        elif opt == '--oldnotice':
-            fp = open(arg)
-            OLD_NOTICE = fp.read()
-            fp.close()
-        elif opt == '--newnotice':
-            fp = open(arg)
-            NEW_NOTICE = fp.read()
-            fp.close()
-
-    for arg in args:
-        process(arg)
-
-
-def process(file):
-    f = open(file)
-    data = f.read()
-    f.close()
-    i = data.find(OLD_NOTICE)
-    if i < 0:
-        if VERBOSE:
-            print 'no change:', file
-        return
-    elif DRYRUN or VERBOSE:
-        print '   change:', file
-    if DRYRUN:
-        # Don't actually change the file
-        return
-    data = data[:i] + NEW_NOTICE + data[i+len(OLD_NOTICE):]
-    new = file + ".new"
-    backup = file + ".bak"
-    f = open(new, "w")
-    f.write(data)
-    f.close()
-    os.rename(file, backup)
-    os.rename(new, file)
-
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixps.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixps.py
deleted file mode 100644
index 87c3a0f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/fixps.py
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env python
-
-# Fix Python script(s) to reference the interpreter via /usr/bin/env python.
-# Warning: this overwrites the file without making a backup.
-
-import sys
-import re
-
-
-def main():
-    for filename in sys.argv[1:]:
-        try:
-            f = open(filename, 'r')
-        except IOError, msg:
-            print filename, ': can\'t open :', msg
-            continue
-        line = f.readline()
-        if not re.match('^#! */usr/local/bin/python', line):
-            print filename, ': not a /usr/local/bin/python script'
-            f.close()
-            continue
-        rest = f.read()
-        f.close()
-        line = re.sub('/usr/local/bin/python',
-                      '/usr/bin/env python', line)
-        print filename, ':', repr(line)
-        f = open(filename, "w")
-        f.write(line)
-        f.write(rest)
-        f.close()
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ftpmirror.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ftpmirror.py
deleted file mode 100644
index b240c9d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ftpmirror.py
+++ /dev/null
@@ -1,400 +0,0 @@
-#! /usr/bin/env python
-
-"""Mirror a remote ftp subtree into a local directory tree.
-
-usage: ftpmirror [-v] [-q] [-i] [-m] [-n] [-r] [-s pat]
-                 [-l username [-p passwd [-a account]]]
-                 hostname[:port] [remotedir [localdir]]
--v: verbose
--q: quiet
--i: interactive mode
--m: macintosh server (NCSA telnet 2.4) (implies -n -s '*.o')
--n: don't log in
--r: remove local files/directories no longer pertinent
--l username [-p passwd [-a account]]: login info (default .netrc or anonymous)
--s pat: skip files matching pattern
-hostname: remote host w/ optional port separated by ':'
-remotedir: remote directory (default initial)
-localdir: local directory (default current)
-"""
-
-import os
-import sys
-import time
-import getopt
-import ftplib
-import netrc
-from fnmatch import fnmatch
-
-# Print usage message and exit
-def usage(*args):
-    sys.stdout = sys.stderr
-    for msg in args: print msg
-    print __doc__
-    sys.exit(2)
-
-verbose = 1 # 0 for -q, 2 for -v
-interactive = 0
-mac = 0
-rmok = 0
-nologin = 0
-skippats = ['.', '..', '.mirrorinfo']
-
-# Main program: parse command line and start processing
-def main():
-    global verbose, interactive, mac, rmok, nologin
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'a:bil:mnp:qrs:v')
-    except getopt.error, msg:
-        usage(msg)
-    login = ''
-    passwd = ''
-    account = ''
-    if not args: usage('hostname missing')
-    host = args[0]
-    port = 0
-    if ':' in host:
-        host, port = host.split(':', 1)
-        port = int(port)
-    try:
-        auth = netrc.netrc().authenticators(host)
-        if auth is not None:
-            login, account, passwd = auth
-    except (netrc.NetrcParseError, IOError):
-        pass
-    for o, a in opts:
-        if o == '-l': login = a
-        if o == '-p': passwd = a
-        if o == '-a': account = a
-        if o == '-v': verbose = verbose + 1
-        if o == '-q': verbose = 0
-        if o == '-i': interactive = 1
-        if o == '-m': mac = 1; nologin = 1; skippats.append('*.o')
-        if o == '-n': nologin = 1
-        if o == '-r': rmok = 1
-        if o == '-s': skippats.append(a)
-    remotedir = ''
-    localdir = ''
-    if args[1:]:
-        remotedir = args[1]
-        if args[2:]:
-            localdir = args[2]
-            if args[3:]: usage('too many arguments')
-    #
-    f = ftplib.FTP()
-    if verbose: print "Connecting to '%s%s'..." % (host,
-                                                   (port and ":%d"%port or ""))
-    f.connect(host,port)
-    if not nologin:
-        if verbose:
-            print 'Logging in as %r...' % (login or 'anonymous')
-        f.login(login, passwd, account)
-    if verbose: print 'OK.'
-    pwd = f.pwd()
-    if verbose > 1: print 'PWD =', repr(pwd)
-    if remotedir:
-        if verbose > 1: print 'cwd(%s)' % repr(remotedir)
-        f.cwd(remotedir)
-        if verbose > 1: print 'OK.'
-        pwd = f.pwd()
-        if verbose > 1: print 'PWD =', repr(pwd)
-    #
-    mirrorsubdir(f, localdir)
-
-# Core logic: mirror one subdirectory (recursively)
-def mirrorsubdir(f, localdir):
-    pwd = f.pwd()
-    if localdir and not os.path.isdir(localdir):
-        if verbose: print 'Creating local directory', repr(localdir)
-        try:
-            makedir(localdir)
-        except os.error, msg:
-            print "Failed to establish local directory", repr(localdir)
-            return
-    infofilename = os.path.join(localdir, '.mirrorinfo')
-    try:
-        text = open(infofilename, 'r').read()
-    except IOError, msg:
-        text = '{}'
-    try:
-        info = eval(text)
-    except (SyntaxError, NameError):
-        print 'Bad mirror info in', repr(infofilename)
-        info = {}
-    subdirs = []
-    listing = []
-    if verbose: print 'Listing remote directory %r...' % (pwd,)
-    f.retrlines('LIST', listing.append)
-    filesfound = []
-    for line in listing:
-        if verbose > 1: print '-->', repr(line)
-        if mac:
-            # Mac listing has just filenames;
-            # trailing / means subdirectory
-            filename = line.strip()
-            mode = '-'
-            if filename[-1:] == '/':
-                filename = filename[:-1]
-                mode = 'd'
-            infostuff = ''
-        else:
-            # Parse, assuming a UNIX listing
-            words = line.split(None, 8)
-            if len(words) < 6:
-                if verbose > 1: print 'Skipping short line'
-                continue
-            filename = words[-1].lstrip()
-            i = filename.find(" -> ")
-            if i >= 0:
-                # words[0] had better start with 'l'...
-                if verbose > 1:
-                    print 'Found symbolic link %r' % (filename,)
-                linkto = filename[i+4:]
-                filename = filename[:i]
-            infostuff = words[-5:-1]
-            mode = words[0]
-        skip = 0
-        for pat in skippats:
-            if fnmatch(filename, pat):
-                if verbose > 1:
-                    print 'Skip pattern', repr(pat),
-                    print 'matches', repr(filename)
-                skip = 1
-                break
-        if skip:
-            continue
-        if mode[0] == 'd':
-            if verbose > 1:
-                print 'Remembering subdirectory', repr(filename)
-            subdirs.append(filename)
-            continue
-        filesfound.append(filename)
-        if info.has_key(filename) and info[filename] == infostuff:
-            if verbose > 1:
-                print 'Already have this version of',repr(filename)
-            continue
-        fullname = os.path.join(localdir, filename)
-        tempname = os.path.join(localdir, '@'+filename)
-        if interactive:
-            doit = askabout('file', filename, pwd)
-            if not doit:
-                if not info.has_key(filename):
-                    info[filename] = 'Not retrieved'
-                continue
-        try:
-            os.unlink(tempname)
-        except os.error:
-            pass
-        if mode[0] == 'l':
-            if verbose:
-                print "Creating symlink %r -> %r" % (filename, linkto)
-            try:
-                os.symlink(linkto, tempname)
-            except IOError, msg:
-                print "Can't create %r: %s" % (tempname, msg)
-                continue
-        else:
-            try:
-                fp = open(tempname, 'wb')
-            except IOError, msg:
-                print "Can't create %r: %s" % (tempname, msg)
-                continue
-            if verbose:
-                print 'Retrieving %r from %r as %r...' % (filename, pwd, fullname)
-            if verbose:
-                fp1 = LoggingFile(fp, 1024, sys.stdout)
-            else:
-                fp1 = fp
-            t0 = time.time()
-            try:
-                f.retrbinary('RETR ' + filename,
-                             fp1.write, 8*1024)
-            except ftplib.error_perm, msg:
-                print msg
-            t1 = time.time()
-            bytes = fp.tell()
-            fp.close()
-            if fp1 != fp:
-                fp1.close()
-        try:
-            os.unlink(fullname)
-        except os.error:
-            pass            # Ignore the error
-        try:
-            os.rename(tempname, fullname)
-        except os.error, msg:
-            print "Can't rename %r to %r: %s" % (tempname, fullname, msg)
-            continue
-        info[filename] = infostuff
-        writedict(info, infofilename)
-        if verbose and mode[0] != 'l':
-            dt = t1 - t0
-            kbytes = bytes / 1024.0
-            print int(round(kbytes)),
-            print 'Kbytes in',
-            print int(round(dt)),
-            print 'seconds',
-            if t1 > t0:
-                print '(~%d Kbytes/sec)' % \
-                          int(round(kbytes/dt),)
-            print
-    #
-    # Remove files from info that are no longer remote
-    deletions = 0
-    for filename in info.keys():
-        if filename not in filesfound:
-            if verbose:
-                print "Removing obsolete info entry for",
-                print repr(filename), "in", repr(localdir or ".")
-            del info[filename]
-            deletions = deletions + 1
-    if deletions:
-        writedict(info, infofilename)
-    #
-    # Remove local files that are no longer in the remote directory
-    try:
-        if not localdir: names = os.listdir(os.curdir)
-        else: names = os.listdir(localdir)
-    except os.error:
-        names = []
-    for name in names:
-        if name[0] == '.' or info.has_key(name) or name in subdirs:
-            continue
-        skip = 0
-        for pat in skippats:
-            if fnmatch(name, pat):
-                if verbose > 1:
-                    print 'Skip pattern', repr(pat),
-                    print 'matches', repr(name)
-                skip = 1
-                break
-        if skip:
-            continue
-        fullname = os.path.join(localdir, name)
-        if not rmok:
-            if verbose:
-                print 'Local file', repr(fullname),
-                print 'is no longer pertinent'
-            continue
-        if verbose: print 'Removing local file/dir', repr(fullname)
-        remove(fullname)
-    #
-    # Recursively mirror subdirectories
-    for subdir in subdirs:
-        if interactive:
-            doit = askabout('subdirectory', subdir, pwd)
-            if not doit: continue
-        if verbose: print 'Processing subdirectory', repr(subdir)
-        localsubdir = os.path.join(localdir, subdir)
-        pwd = f.pwd()
-        if verbose > 1:
-            print 'Remote directory now:', repr(pwd)
-            print 'Remote cwd', repr(subdir)
-        try:
-            f.cwd(subdir)
-        except ftplib.error_perm, msg:
-            print "Can't chdir to", repr(subdir), ":", repr(msg)
-        else:
-            if verbose: print 'Mirroring as', repr(localsubdir)
-            mirrorsubdir(f, localsubdir)
-            if verbose > 1: print 'Remote cwd ..'
-            f.cwd('..')
-        newpwd = f.pwd()
-        if newpwd != pwd:
-            print 'Ended up in wrong directory after cd + cd ..'
-            print 'Giving up now.'
-            break
-        else:
-            if verbose > 1: print 'OK.'
-
-# Helper to remove a file or directory tree
-def remove(fullname):
-    if os.path.isdir(fullname) and not os.path.islink(fullname):
-        try:
-            names = os.listdir(fullname)
-        except os.error:
-            names = []
-        ok = 1
-        for name in names:
-            if not remove(os.path.join(fullname, name)):
-                ok = 0
-        if not ok:
-            return 0
-        try:
-            os.rmdir(fullname)
-        except os.error, msg:
-            print "Can't remove local directory %r: %s" % (fullname, msg)
-            return 0
-    else:
-        try:
-            os.unlink(fullname)
-        except os.error, msg:
-            print "Can't remove local file %r: %s" % (fullname, msg)
-            return 0
-    return 1
-
-# Wrapper around a file for writing to write a hash sign every block.
-class LoggingFile:
-    def __init__(self, fp, blocksize, outfp):
-        self.fp = fp
-        self.bytes = 0
-        self.hashes = 0
-        self.blocksize = blocksize
-        self.outfp = outfp
-    def write(self, data):
-        self.bytes = self.bytes + len(data)
-        hashes = int(self.bytes) / self.blocksize
-        while hashes > self.hashes:
-            self.outfp.write('#')
-            self.outfp.flush()
-            self.hashes = self.hashes + 1
-        self.fp.write(data)
-    def close(self):
-        self.outfp.write('\n')
-
-# Ask permission to download a file.
-def askabout(filetype, filename, pwd):
-    prompt = 'Retrieve %s %s from %s ? [ny] ' % (filetype, filename, pwd)
-    while 1:
-        reply = raw_input(prompt).strip().lower()
-        if reply in ['y', 'ye', 'yes']:
-            return 1
-        if reply in ['', 'n', 'no', 'nop', 'nope']:
-            return 0
-        print 'Please answer yes or no.'
-
-# Create a directory if it doesn't exist.  Recursively create the
-# parent directory as well if needed.
-def makedir(pathname):
-    if os.path.isdir(pathname):
-        return
-    dirname = os.path.dirname(pathname)
-    if dirname: makedir(dirname)
-    os.mkdir(pathname, 0777)
-
-# Write a dictionary to a file in a way that can be read back using
-# rval() but is still somewhat readable (i.e. not a single long line).
-# Also creates a backup file.
-def writedict(dict, filename):
-    dir, fname = os.path.split(filename)
-    tempname = os.path.join(dir, '@' + fname)
-    backup = os.path.join(dir, fname + '~')
-    try:
-        os.unlink(backup)
-    except os.error:
-        pass
-    fp = open(tempname, 'w')
-    fp.write('{\n')
-    for key, value in dict.items():
-        fp.write('%r: %r,\n' % (key, value))
-    fp.write('}\n')
-    fp.close()
-    try:
-        os.rename(filename, backup)
-    except os.error:
-        pass
-    os.rename(tempname, filename)
-
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/google.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/google.py
deleted file mode 100644
index f81e35a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/google.py
+++ /dev/null
@@ -1,23 +0,0 @@
-#! /usr/bin/env python
-
-import sys, webbrowser
-
-def main():
-    args = sys.argv[1:]
-    if not args:
-        print "Usage: %s querystring" % sys.argv[0]
-        return
-    list = []
-    for arg in args:
-        if '+' in arg:
-            arg = arg.replace('+', '%2B')
-        if ' ' in arg:
-            arg = '"%s"' % arg
-        arg = arg.replace(' ', '+')
-        list.append(arg)
-    s = '+'.join(list)
-    url = "http://www.google.com/search?q=%s" % s
-    webbrowser.open(url)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/gprof2html.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/gprof2html.py
deleted file mode 100644
index 2702520..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/gprof2html.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#! /usr/bin/env python2.3
-
-"""Transform gprof(1) output into useful HTML."""
-
-import re, os, sys, cgi, webbrowser
-
-header = """\
-<html>
-<head>
-  <title>gprof output (%s)</title>
-</head>
-<body>
-<pre>
-"""
-
-trailer = """\
-</pre>
-</body>
-</html>
-"""
-
-def add_escapes(input):
-    for line in input:
-        yield cgi.escape(line)
-
-def main():
-    filename = "gprof.out"
-    if sys.argv[1:]:
-        filename = sys.argv[1]
-    outputfilename = filename + ".html"
-    input = add_escapes(file(filename))
-    output = file(outputfilename, "w")
-    output.write(header % filename)
-    for line in input:
-        output.write(line)
-        if line.startswith(" time"):
-            break
-    labels = {}
-    for line in input:
-        m = re.match(r"(.*  )(\w+)\n", line)
-        if not m:
-            output.write(line)
-            break
-        stuff, fname = m.group(1, 2)
-        labels[fname] = fname
-        output.write('%s<a name="flat:%s" href="#call:%s">%s</a>\n' %
-                     (stuff, fname, fname, fname))
-    for line in input:
-        output.write(line)
-        if line.startswith("index % time"):
-            break
-    for line in input:
-        m = re.match(r"(.*  )(\w+)(( &lt;cycle.*&gt;)? \[\d+\])\n", line)
-        if not m:
-            output.write(line)
-            if line.startswith("Index by function name"):
-                break
-            continue
-        prefix, fname, suffix = m.group(1, 2, 3)
-        if fname not in labels:
-            output.write(line)
-            continue
-        if line.startswith("["):
-            output.write('%s<a name="call:%s" href="#flat:%s">%s</a>%s\n' %
-                         (prefix, fname, fname, fname, suffix))
-        else:
-            output.write('%s<a href="#call:%s">%s</a>%s\n' %
-                         (prefix, fname, fname, suffix))
-    for line in input:
-        for part in re.findall(r"(\w+(?:\.c)?|\W+)", line):
-            if part in labels:
-                part = '<a href="#call:%s">%s</a>' % (part, part)
-            output.write(part)
-    output.write(trailer)
-    output.close()
-    webbrowser.open("file:" + os.path.abspath(outputfilename))
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/h2py.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/h2py.py
deleted file mode 100644
index 3cec1ba..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/h2py.py
+++ /dev/null
@@ -1,175 +0,0 @@
-#! /usr/bin/env python
-
-# Read #define's and translate to Python code.
-# Handle #include statements.
-# Handle #define macros with one argument.
-# Anything that isn't recognized or doesn't translate into valid
-# Python is ignored.
-
-# Without filename arguments, acts as a filter.
-# If one or more filenames are given, output is written to corresponding
-# filenames in the local directory, translated to all uppercase, with
-# the extension replaced by ".py".
-
-# By passing one or more options of the form "-i regular_expression"
-# you can specify additional strings to be ignored.  This is useful
-# e.g. to ignore casts to u_long: simply specify "-i '(u_long)'".
-
-# XXX To do:
-# - turn trailing C comments into Python comments
-# - turn C Boolean operators "&& || !" into Python "and or not"
-# - what to do about #if(def)?
-# - what to do about macros with multiple parameters?
-
-import sys, re, getopt, os
-
-p_define = re.compile('^[\t ]*#[\t ]*define[\t ]+([a-zA-Z0-9_]+)[\t ]+')
-
-p_macro = re.compile(
-  '^[\t ]*#[\t ]*define[\t ]+'
-  '([a-zA-Z0-9_]+)\(([_a-zA-Z][_a-zA-Z0-9]*)\)[\t ]+')
-
-p_include = re.compile('^[\t ]*#[\t ]*include[\t ]+<([a-zA-Z0-9_/\.]+)')
-
-p_comment = re.compile(r'/\*([^*]+|\*+[^/])*(\*+/)?')
-p_cpp_comment = re.compile('//.*')
-
-ignores = [p_comment, p_cpp_comment]
-
-p_char = re.compile(r"'(\\.[^\\]*|[^\\])'")
-
-p_hex = re.compile(r"0x([0-9a-fA-F]+)L?")
-
-filedict = {}
-importable = {}
-
-try:
-    searchdirs=os.environ['include'].split(';')
-except KeyError:
-    try:
-        searchdirs=os.environ['INCLUDE'].split(';')
-    except KeyError:
-        try:
-            if  sys.platform.find("beos") == 0:
-                searchdirs=os.environ['BEINCLUDES'].split(';')
-            elif sys.platform.startswith("atheos"):
-                searchdirs=os.environ['C_INCLUDE_PATH'].split(':')
-            else:
-                raise KeyError
-        except KeyError:
-            searchdirs=['/usr/include']
-
-def main():
-    global filedict
-    opts, args = getopt.getopt(sys.argv[1:], 'i:')
-    for o, a in opts:
-        if o == '-i':
-            ignores.append(re.compile(a))
-    if not args:
-        args = ['-']
-    for filename in args:
-        if filename == '-':
-            sys.stdout.write('# Generated by h2py from stdin\n')
-            process(sys.stdin, sys.stdout)
-        else:
-            fp = open(filename, 'r')
-            outfile = os.path.basename(filename)
-            i = outfile.rfind('.')
-            if i > 0: outfile = outfile[:i]
-            modname = outfile.upper()
-            outfile = modname + '.py'
-            outfp = open(outfile, 'w')
-            outfp.write('# Generated by h2py from %s\n' % filename)
-            filedict = {}
-            for dir in searchdirs:
-                if filename[:len(dir)] == dir:
-                    filedict[filename[len(dir)+1:]] = None  # no '/' trailing
-                    importable[filename[len(dir)+1:]] = modname
-                    break
-            process(fp, outfp)
-            outfp.close()
-            fp.close()
-
-def pytify(body):
-    # replace ignored patterns by spaces
-    for p in ignores:
-        body = p.sub(' ', body)
-    # replace char literals by ord(...)
-    body = p_char.sub("ord('\\1')", body)
-    # Compute negative hexadecimal constants
-    start = 0
-    UMAX = 2*(sys.maxint+1)
-    while 1:
-        m = p_hex.search(body, start)
-        if not m: break
-        s,e = m.span()
-        val = long(body[slice(*m.span(1))], 16)
-        if val > sys.maxint:
-            val -= UMAX
-            body = body[:s] + "(" + str(val) + ")" + body[e:]
-        start = s + 1
-    return body
-
-def process(fp, outfp, env = {}):
-    lineno = 0
-    while 1:
-        line = fp.readline()
-        if not line: break
-        lineno = lineno + 1
-        match = p_define.match(line)
-        if match:
-            # gobble up continuation lines
-            while line[-2:] == '\\\n':
-                nextline = fp.readline()
-                if not nextline: break
-                lineno = lineno + 1
-                line = line + nextline
-            name = match.group(1)
-            body = line[match.end():]
-            body = pytify(body)
-            ok = 0
-            stmt = '%s = %s\n' % (name, body.strip())
-            try:
-                exec stmt in env
-            except:
-                sys.stderr.write('Skipping: %s' % stmt)
-            else:
-                outfp.write(stmt)
-        match = p_macro.match(line)
-        if match:
-            macro, arg = match.group(1, 2)
-            body = line[match.end():]
-            body = pytify(body)
-            stmt = 'def %s(%s): return %s\n' % (macro, arg, body)
-            try:
-                exec stmt in env
-            except:
-                sys.stderr.write('Skipping: %s' % stmt)
-            else:
-                outfp.write(stmt)
-        match = p_include.match(line)
-        if match:
-            regs = match.regs
-            a, b = regs[1]
-            filename = line[a:b]
-            if importable.has_key(filename):
-                outfp.write('from %s import *\n' % importable[filename])
-            elif not filedict.has_key(filename):
-                filedict[filename] = None
-                inclfp = None
-                for dir in searchdirs:
-                    try:
-                        inclfp = open(dir + '/' + filename)
-                        break
-                    except IOError:
-                        pass
-                if inclfp:
-                    outfp.write(
-                            '\n# Included from %s\n' % filename)
-                    process(inclfp, outfp, env)
-                else:
-                    sys.stderr.write('Warning - could not find file %s\n' %
-                                     filename)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/hotshotmain.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/hotshotmain.py
deleted file mode 100644
index d94a2f9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/hotshotmain.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: iso-8859-1 -*-
-
-"""
-Run a Python script under hotshot's control.
-
-Adapted from a posting on python-dev by Walter Dörwald
-
-usage %prog [ %prog args ] filename [ filename args ]
-
-Any arguments after the filename are used as sys.argv for the filename.
-"""
-
-import sys
-import optparse
-import os
-import hotshot
-import hotshot.stats
-
-PROFILE = "hotshot.prof"
-
-def run_hotshot(filename, profile, args):
-    prof = hotshot.Profile(profile)
-    sys.path.insert(0, os.path.dirname(filename))
-    sys.argv = [filename] + args
-    prof.run("execfile(%r)" % filename)
-    prof.close()
-    stats = hotshot.stats.load(profile)
-    stats.sort_stats("time", "calls")
-
-    # print_stats uses unadorned print statements, so the only way
-    # to force output to stderr is to reassign sys.stdout temporarily
-    save_stdout = sys.stdout
-    sys.stdout = sys.stderr
-    stats.print_stats()
-    sys.stdout = save_stdout
-
-    return 0
-
-def main(args):
-    parser = optparse.OptionParser(__doc__)
-    parser.disable_interspersed_args()
-    parser.add_option("-p", "--profile", action="store", default=PROFILE,
-                      dest="profile", help='Specify profile file to use')
-    (options, args) = parser.parse_args(args)
-
-    if len(args) == 0:
-        parser.print_help("missing script to execute")
-        return 1
-
-    filename = args[0]
-    return run_hotshot(filename, options.profile, args[1:])
-
-if __name__ == "__main__":
-    sys.exit(main(sys.argv[1:]))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/idle b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/idle
deleted file mode 100644
index bc13a07..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/idle
+++ /dev/null
@@ -1,5 +0,0 @@
-#! /usr/bin/env python
-
-from idlelib.PyShell import main
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ifdef.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ifdef.py
deleted file mode 100644
index 594c06b..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ifdef.py
+++ /dev/null
@@ -1,112 +0,0 @@
-#! /usr/bin/env python
-
-# Selectively preprocess #ifdef / #ifndef statements.
-# Usage:
-# ifdef [-Dname] ... [-Uname] ... [file] ...
-#
-# This scans the file(s), looking for #ifdef and #ifndef preprocessor
-# commands that test for one of the names mentioned in the -D and -U
-# options.  On standard output it writes a copy of the input file(s)
-# minus those code sections that are suppressed by the selected
-# combination of defined/undefined symbols.  The #if(n)def/#else/#else
-# lines themselfs (if the #if(n)def tests for one of the mentioned
-# names) are removed as well.
-
-# Features: Arbitrary nesting of recognized and unrecognized
-# preprocesor statements works correctly.  Unrecognized #if* commands
-# are left in place, so it will never remove too much, only too
-# little.  It does accept whitespace around the '#' character.
-
-# Restrictions: There should be no comments or other symbols on the
-# #if(n)def lines.  The effect of #define/#undef commands in the input
-# file or in included files is not taken into account.  Tests using
-# #if and the defined() pseudo function are not recognized.  The #elif
-# command is not recognized.  Improperly nesting is not detected.
-# Lines that look like preprocessor commands but which are actually
-# part of comments or string literals will be mistaken for
-# preprocessor commands.
-
-import sys
-import getopt
-
-defs = []
-undefs = []
-
-def main():
-    opts, args = getopt.getopt(sys.argv[1:], 'D:U:')
-    for o, a in opts:
-        if o == '-D':
-            defs.append(a)
-        if o == '-U':
-            undefs.append(a)
-    if not args:
-        args = ['-']
-    for filename in args:
-        if filename == '-':
-            process(sys.stdin, sys.stdout)
-        else:
-            f = open(filename, 'r')
-            process(f, sys.stdout)
-            f.close()
-
-def process(fpi, fpo):
-    keywords = ('if', 'ifdef', 'ifndef', 'else', 'endif')
-    ok = 1
-    stack = []
-    while 1:
-        line = fpi.readline()
-        if not line: break
-        while line[-2:] == '\\\n':
-            nextline = fpi.readline()
-            if not nextline: break
-            line = line + nextline
-        tmp = line.strip()
-        if tmp[:1] != '#':
-            if ok: fpo.write(line)
-            continue
-        tmp = tmp[1:].strip()
-        words = tmp.split()
-        keyword = words[0]
-        if keyword not in keywords:
-            if ok: fpo.write(line)
-            continue
-        if keyword in ('ifdef', 'ifndef') and len(words) == 2:
-            if keyword == 'ifdef':
-                ko = 1
-            else:
-                ko = 0
-            word = words[1]
-            if word in defs:
-                stack.append((ok, ko, word))
-                if not ko: ok = 0
-            elif word in undefs:
-                stack.append((ok, not ko, word))
-                if ko: ok = 0
-            else:
-                stack.append((ok, -1, word))
-                if ok: fpo.write(line)
-        elif keyword == 'if':
-            stack.append((ok, -1, ''))
-            if ok: fpo.write(line)
-        elif keyword == 'else' and stack:
-            s_ok, s_ko, s_word = stack[-1]
-            if s_ko < 0:
-                if ok: fpo.write(line)
-            else:
-                s_ko = not s_ko
-                ok = s_ok
-                if not s_ko: ok = 0
-                stack[-1] = s_ok, s_ko, s_word
-        elif keyword == 'endif' and stack:
-            s_ok, s_ko, s_word = stack[-1]
-            if s_ko < 0:
-                if ok: fpo.write(line)
-            del stack[-1]
-            ok = s_ok
-        else:
-            sys.stderr.write('Unknown keyword %s\n' % keyword)
-    if stack:
-        sys.stderr.write('stack: %s\n' % stack)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/lfcr.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/lfcr.py
deleted file mode 100644
index 1011272..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/lfcr.py
+++ /dev/null
@@ -1,24 +0,0 @@
-#! /usr/bin/env python
-
-"Replace LF with CRLF in argument files.  Print names of changed files."
-
-import sys, re, os
-
-def main():
-    for filename in sys.argv[1:]:
-        if os.path.isdir(filename):
-            print filename, "Directory!"
-            continue
-        data = open(filename, "rb").read()
-        if '\0' in data:
-            print filename, "Binary!"
-            continue
-        newdata = re.sub("\r?\n", "\r\n", data)
-        if newdata != data:
-            print filename
-            f = open(filename, "wb")
-            f.write(newdata)
-            f.close()
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/linktree.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/linktree.py
deleted file mode 100644
index 78c1597..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/linktree.py
+++ /dev/null
@@ -1,80 +0,0 @@
-#! /usr/bin/env python
-
-# linktree
-#
-# Make a copy of a directory tree with symbolic links to all files in the
-# original tree.
-# All symbolic links go to a special symbolic link at the top, so you
-# can easily fix things if the original source tree moves.
-# See also "mkreal".
-#
-# usage: mklinks oldtree newtree
-
-import sys, os
-
-LINK = '.LINK' # Name of special symlink at the top.
-
-debug = 0
-
-def main():
-    if not 3 <= len(sys.argv) <= 4:
-        print 'usage:', sys.argv[0], 'oldtree newtree [linkto]'
-        return 2
-    oldtree, newtree = sys.argv[1], sys.argv[2]
-    if len(sys.argv) > 3:
-        link = sys.argv[3]
-        link_may_fail = 1
-    else:
-        link = LINK
-        link_may_fail = 0
-    if not os.path.isdir(oldtree):
-        print oldtree + ': not a directory'
-        return 1
-    try:
-        os.mkdir(newtree, 0777)
-    except os.error, msg:
-        print newtree + ': cannot mkdir:', msg
-        return 1
-    linkname = os.path.join(newtree, link)
-    try:
-        os.symlink(os.path.join(os.pardir, oldtree), linkname)
-    except os.error, msg:
-        if not link_may_fail:
-            print linkname + ': cannot symlink:', msg
-            return 1
-        else:
-            print linkname + ': warning: cannot symlink:', msg
-    linknames(oldtree, newtree, link)
-    return 0
-
-def linknames(old, new, link):
-    if debug: print 'linknames', (old, new, link)
-    try:
-        names = os.listdir(old)
-    except os.error, msg:
-        print old + ': warning: cannot listdir:', msg
-        return
-    for name in names:
-        if name not in (os.curdir, os.pardir):
-            oldname = os.path.join(old, name)
-            linkname = os.path.join(link, name)
-            newname = os.path.join(new, name)
-            if debug > 1: print oldname, newname, linkname
-            if os.path.isdir(oldname) and \
-               not os.path.islink(oldname):
-                try:
-                    os.mkdir(newname, 0777)
-                    ok = 1
-                except:
-                    print newname + \
-                          ': warning: cannot mkdir:', msg
-                    ok = 0
-                if ok:
-                    linkname = os.path.join(os.pardir,
-                                            linkname)
-                    linknames(oldname, newname, linkname)
-            else:
-                os.symlink(linkname, newname)
-
-if __name__ == '__main__':
-    sys.exit(main())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/lll.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/lll.py
deleted file mode 100644
index e95e1fb..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/lll.py
+++ /dev/null
@@ -1,28 +0,0 @@
-#! /usr/bin/env python
-
-# Find symbolic links and show where they point to.
-# Arguments are directories to search; default is current directory.
-# No recursion.
-# (This is a totally different program from "findsymlinks.py"!)
-
-import sys, os
-
-def lll(dirname):
-    for name in os.listdir(dirname):
-        if name not in (os.curdir, os.pardir):
-            full = os.path.join(dirname, name)
-            if os.path.islink(full):
-                print name, '->', os.readlink(full)
-def main():
-    args = sys.argv[1:]
-    if not args: args = [os.curdir]
-    first = 1
-    for arg in args:
-        if len(args) > 1:
-            if not first: print
-            first = 0
-            print arg + ':'
-    lll(arg)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/logmerge.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/logmerge.py
deleted file mode 100644
index 2759c9a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/logmerge.py
+++ /dev/null
@@ -1,185 +0,0 @@
-#! /usr/bin/env python
-
-"""Consolidate a bunch of CVS or RCS logs read from stdin.
-
-Input should be the output of a CVS or RCS logging command, e.g.
-
-    cvs log -rrelease14:
-
-which dumps all log messages from release1.4 upwards (assuming that
-release 1.4 was tagged with tag 'release14').  Note the trailing
-colon!
-
-This collects all the revision records and outputs them sorted by date
-rather than by file, collapsing duplicate revision record, i.e.,
-records with the same message for different files.
-
-The -t option causes it to truncate (discard) the last revision log
-entry; this is useful when using something like the above cvs log
-command, which shows the revisions including the given tag, while you
-probably want everything *since* that tag.
-
-The -r option reverses the output (oldest first; the default is oldest
-last).
-
-The -b tag option restricts the output to *only* checkin messages
-belonging to the given branch tag.  The form -b HEAD restricts the
-output to checkin messages belonging to the CVS head (trunk).  (It
-produces some output if tag is a non-branch tag, but this output is
-not very useful.)
-
--h prints this message and exits.
-
-XXX This code was created by reverse engineering CVS 1.9 and RCS 5.7
-from their output.
-"""
-
-import sys, errno, getopt, re
-
-sep1 = '='*77 + '\n'                    # file separator
-sep2 = '-'*28 + '\n'                    # revision separator
-
-def main():
-    """Main program"""
-    truncate_last = 0
-    reverse = 0
-    branch = None
-    opts, args = getopt.getopt(sys.argv[1:], "trb:h")
-    for o, a in opts:
-        if o == '-t':
-            truncate_last = 1
-        elif o == '-r':
-            reverse = 1
-        elif o == '-b':
-            branch = a
-        elif o == '-h':
-            print __doc__
-            sys.exit(0)
-    database = []
-    while 1:
-        chunk = read_chunk(sys.stdin)
-        if not chunk:
-            break
-        records = digest_chunk(chunk, branch)
-        if truncate_last:
-            del records[-1]
-        database[len(database):] = records
-    database.sort()
-    if not reverse:
-        database.reverse()
-    format_output(database)
-
-def read_chunk(fp):
-    """Read a chunk -- data for one file, ending with sep1.
-
-    Split the chunk in parts separated by sep2.
-
-    """
-    chunk = []
-    lines = []
-    while 1:
-        line = fp.readline()
-        if not line:
-            break
-        if line == sep1:
-            if lines:
-                chunk.append(lines)
-            break
-        if line == sep2:
-            if lines:
-                chunk.append(lines)
-                lines = []
-        else:
-            lines.append(line)
-    return chunk
-
-def digest_chunk(chunk, branch=None):
-    """Digest a chunk -- extract working file name and revisions"""
-    lines = chunk[0]
-    key = 'Working file:'
-    keylen = len(key)
-    for line in lines:
-        if line[:keylen] == key:
-            working_file = line[keylen:].strip()
-            break
-    else:
-        working_file = None
-    if branch is None:
-        pass
-    elif branch == "HEAD":
-        branch = re.compile(r"^\d+\.\d+$")
-    else:
-        revisions = {}
-        key = 'symbolic names:\n'
-        found = 0
-        for line in lines:
-            if line == key:
-                found = 1
-            elif found:
-                if line[0] in '\t ':
-                    tag, rev = line.split()
-                    if tag[-1] == ':':
-                        tag = tag[:-1]
-                    revisions[tag] = rev
-                else:
-                    found = 0
-        rev = revisions.get(branch)
-        branch = re.compile(r"^<>$") # <> to force a mismatch by default
-        if rev:
-            if rev.find('.0.') >= 0:
-                rev = rev.replace('.0.', '.')
-                branch = re.compile(r"^" + re.escape(rev) + r"\.\d+$")
-    records = []
-    for lines in chunk[1:]:
-        revline = lines[0]
-        dateline = lines[1]
-        text = lines[2:]
-        words = dateline.split()
-        author = None
-        if len(words) >= 3 and words[0] == 'date:':
-            dateword = words[1]
-            timeword = words[2]
-            if timeword[-1:] == ';':
-                timeword = timeword[:-1]
-            date = dateword + ' ' + timeword
-            if len(words) >= 5 and words[3] == 'author:':
-                author = words[4]
-                if author[-1:] == ';':
-                    author = author[:-1]
-        else:
-            date = None
-            text.insert(0, revline)
-        words = revline.split()
-        if len(words) >= 2 and words[0] == 'revision':
-            rev = words[1]
-        else:
-            # No 'revision' line -- weird...
-            rev = None
-            text.insert(0, revline)
-        if branch:
-            if rev is None or not branch.match(rev):
-                continue
-        records.append((date, working_file, rev, author, text))
-    return records
-
-def format_output(database):
-    prevtext = None
-    prev = []
-    database.append((None, None, None, None, None)) # Sentinel
-    for (date, working_file, rev, author, text) in database:
-        if text != prevtext:
-            if prev:
-                print sep2,
-                for (p_date, p_working_file, p_rev, p_author) in prev:
-                    print p_date, p_author, p_working_file, p_rev
-                sys.stdout.writelines(prevtext)
-            prev = []
-        prev.append((date, working_file, rev, author))
-        prevtext = text
-
-if __name__ == '__main__':
-    try:
-        main()
-    except IOError, e:
-        if e.errno != errno.EPIPE:
-            raise
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/mailerdaemon.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/mailerdaemon.py
deleted file mode 100644
index 5661cc0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/mailerdaemon.py
+++ /dev/null
@@ -1,237 +0,0 @@
-"""mailerdaemon - classes to parse mailer-daemon messages"""
-
-import rfc822
-import calendar
-import re
-import os
-import sys
-
-Unparseable = 'mailerdaemon.Unparseable'
-
-class ErrorMessage(rfc822.Message):
-    def __init__(self, fp):
-        rfc822.Message.__init__(self, fp)
-        self.sub = ''
-
-    def is_warning(self):
-        sub = self.getheader('Subject')
-        if not sub:
-            return 0
-        sub = sub.lower()
-        if sub.startswith('waiting mail'): return 1
-        if 'warning' in sub: return 1
-        self.sub = sub
-        return 0
-
-    def get_errors(self):
-        for p in EMPARSERS:
-            self.rewindbody()
-            try:
-                return p(self.fp, self.sub)
-            except Unparseable:
-                pass
-        raise Unparseable
-
-# List of re's or tuples of re's.
-# If a re, it should contain at least a group (?P<email>...) which
-# should refer to the email address.  The re can also contain a group
-# (?P<reason>...) which should refer to the reason (error message).
-# If no reason is present, the emparse_list_reason list is used to
-# find a reason.
-# If a tuple, the tuple should contain 2 re's.  The first re finds a
-# location, the second re is repeated one or more times to find
-# multiple email addresses.  The second re is matched (not searched)
-# where the previous match ended.
-# The re's are compiled using the re module.
-emparse_list_list = [
-    'error: (?P<reason>unresolvable): (?P<email>.+)',
-    ('----- The following addresses had permanent fatal errors -----\n',
-     '(?P<email>[^ \n].*)\n( .*\n)?'),
-    'remote execution.*\n.*rmail (?P<email>.+)',
-    ('The following recipients did not receive your message:\n\n',
-     ' +(?P<email>.*)\n(The following recipients did not receive your message:\n\n)?'),
-    '------- Failure Reasons  --------\n\n(?P<reason>.*)\n(?P<email>.*)',
-    '^<(?P<email>.*)>:\n(?P<reason>.*)',
-    '^(?P<reason>User mailbox exceeds allowed size): (?P<email>.+)',
-    '^5\\d{2} <(?P<email>[^\n>]+)>\\.\\.\\. (?P<reason>.+)',
-    '^Original-Recipient: rfc822;(?P<email>.*)',
-    '^did not reach the following recipient\\(s\\):\n\n(?P<email>.*) on .*\n +(?P<reason>.*)',
-    '^ <(?P<email>[^\n>]+)> \\.\\.\\. (?P<reason>.*)',
-    '^Report on your message to: (?P<email>.*)\nReason: (?P<reason>.*)',
-    '^Your message was not delivered to +(?P<email>.*)\n +for the following reason:\n +(?P<reason>.*)',
-    '^ was not +(?P<email>[^ \n].*?) *\n.*\n.*\n.*\n because:.*\n +(?P<reason>[^ \n].*?) *\n',
-    ]
-# compile the re's in the list and store them in-place.
-for i in range(len(emparse_list_list)):
-    x = emparse_list_list[i]
-    if type(x) is type(''):
-        x = re.compile(x, re.MULTILINE)
-    else:
-        xl = []
-        for x in x:
-            xl.append(re.compile(x, re.MULTILINE))
-        x = tuple(xl)
-        del xl
-    emparse_list_list[i] = x
-    del x
-del i
-
-# list of re's used to find reasons (error messages).
-# if a string, "<>" is replaced by a copy of the email address.
-# The expressions are searched for in order.  After the first match,
-# no more expressions are searched for.  So, order is important.
-emparse_list_reason = [
-    r'^5\d{2} <>\.\.\. (?P<reason>.*)',
-    '<>\.\.\. (?P<reason>.*)',
-    re.compile(r'^<<< 5\d{2} (?P<reason>.*)', re.MULTILINE),
-    re.compile('===== stderr was =====\nrmail: (?P<reason>.*)'),
-    re.compile('^Diagnostic-Code: (?P<reason>.*)', re.MULTILINE),
-    ]
-emparse_list_from = re.compile('^From:', re.IGNORECASE|re.MULTILINE)
-def emparse_list(fp, sub):
-    data = fp.read()
-    res = emparse_list_from.search(data)
-    if res is None:
-        from_index = len(data)
-    else:
-        from_index = res.start(0)
-    errors = []
-    emails = []
-    reason = None
-    for regexp in emparse_list_list:
-        if type(regexp) is type(()):
-            res = regexp[0].search(data, 0, from_index)
-            if res is not None:
-                try:
-                    reason = res.group('reason')
-                except IndexError:
-                    pass
-                while 1:
-                    res = regexp[1].match(data, res.end(0), from_index)
-                    if res is None:
-                        break
-                    emails.append(res.group('email'))
-                break
-        else:
-            res = regexp.search(data, 0, from_index)
-            if res is not None:
-                emails.append(res.group('email'))
-                try:
-                    reason = res.group('reason')
-                except IndexError:
-                    pass
-                break
-    if not emails:
-        raise Unparseable
-    if not reason:
-        reason = sub
-        if reason[:15] == 'returned mail: ':
-            reason = reason[15:]
-        for regexp in emparse_list_reason:
-            if type(regexp) is type(''):
-                for i in range(len(emails)-1,-1,-1):
-                    email = emails[i]
-                    exp = re.compile(re.escape(email).join(regexp.split('<>')), re.MULTILINE)
-                    res = exp.search(data)
-                    if res is not None:
-                        errors.append(' '.join((email.strip()+': '+res.group('reason')).split()))
-                        del emails[i]
-                continue
-            res = regexp.search(data)
-            if res is not None:
-                reason = res.group('reason')
-                break
-    for email in emails:
-        errors.append(' '.join((email.strip()+': '+reason).split()))
-    return errors
-
-EMPARSERS = [emparse_list, ]
-
-def sort_numeric(a, b):
-    a = int(a)
-    b = int(b)
-    if a < b: return -1
-    elif a > b: return 1
-    else: return 0
-
-def parsedir(dir, modify):
-    os.chdir(dir)
-    pat = re.compile('^[0-9]*$')
-    errordict = {}
-    errorfirst = {}
-    errorlast = {}
-    nok = nwarn = nbad = 0
-
-    # find all numeric file names and sort them
-    files = filter(lambda fn, pat=pat: pat.match(fn) is not None, os.listdir('.'))
-    files.sort(sort_numeric)
-
-    for fn in files:
-        # Lets try to parse the file.
-        fp = open(fn)
-        m = ErrorMessage(fp)
-        sender = m.getaddr('From')
-        print '%s\t%-40s\t'%(fn, sender[1]),
-
-        if m.is_warning():
-            fp.close()
-            print 'warning only'
-            nwarn = nwarn + 1
-            if modify:
-                os.rename(fn, ','+fn)
-##              os.unlink(fn)
-            continue
-
-        try:
-            errors = m.get_errors()
-        except Unparseable:
-            print '** Not parseable'
-            nbad = nbad + 1
-            fp.close()
-            continue
-        print len(errors), 'errors'
-
-        # Remember them
-        for e in errors:
-            try:
-                mm, dd = m.getdate('date')[1:1+2]
-                date = '%s %02d' % (calendar.month_abbr[mm], dd)
-            except:
-                date = '??????'
-            if not errordict.has_key(e):
-                errordict[e] = 1
-                errorfirst[e] = '%s (%s)' % (fn, date)
-            else:
-                errordict[e] = errordict[e] + 1
-            errorlast[e] = '%s (%s)' % (fn, date)
-
-        fp.close()
-        nok = nok + 1
-        if modify:
-            os.rename(fn, ','+fn)
-##          os.unlink(fn)
-
-    print '--------------'
-    print nok, 'files parsed,',nwarn,'files warning-only,',
-    print nbad,'files unparseable'
-    print '--------------'
-    list = []
-    for e in errordict.keys():
-        list.append((errordict[e], errorfirst[e], errorlast[e], e))
-    list.sort()
-    for num, first, last, e in list:
-        print '%d %s - %s\t%s' % (num, first, last, e)
-
-def main():
-    modify = 0
-    if len(sys.argv) > 1 and sys.argv[1] == '-d':
-        modify = 1
-        del sys.argv[1]
-    if len(sys.argv) > 1:
-        for folder in sys.argv[1:]:
-            parsedir(folder, modify)
-    else:
-        parsedir('/ufs/jack/Mail/errorsinbox', modify)
-
-if __name__ == '__main__' or sys.argv[0] == __name__:
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/md5sum.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/md5sum.py
deleted file mode 100644
index 6c8ba66..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/md5sum.py
+++ /dev/null
@@ -1,90 +0,0 @@
-#! /usr/bin/env python
-
-"""Python utility to print MD5 checksums of argument files.
-"""
-
-
-bufsize = 8096
-fnfilter = None
-rmode = 'rb'
-
-usage = """
-usage: sum5 [-b] [-t] [-l] [-s bufsize] [file ...]
--b        : read files in binary mode (default)
--t        : read files in text mode (you almost certainly don't want this!)
--l        : print last pathname component only
--s bufsize: read buffer size (default %d)
-file ...  : files to sum; '-' or no files means stdin
-""" % bufsize
-
-import sys
-import os
-import getopt
-import md5
-
-def sum(*files):
-    sts = 0
-    if files and isinstance(files[-1], file):
-        out, files = files[-1], files[:-1]
-    else:
-        out = sys.stdout
-    if len(files) == 1 and not isinstance(files[0], str):
-        files = files[0]
-    for f in files:
-        if isinstance(f, str):
-            if f == '-':
-                sts = printsumfp(sys.stdin, '<stdin>', out) or sts
-            else:
-                sts = printsum(f, out) or sts
-        else:
-            sts = sum(f, out) or sts
-    return sts
-
-def printsum(filename, out=sys.stdout):
-    try:
-        fp = open(filename, rmode)
-    except IOError, msg:
-        sys.stderr.write('%s: Can\'t open: %s\n' % (filename, msg))
-        return 1
-    if fnfilter:
-        filename = fnfilter(filename)
-    sts = printsumfp(fp, filename, out)
-    fp.close()
-    return sts
-
-def printsumfp(fp, filename, out=sys.stdout):
-    m = md5.new()
-    try:
-        while 1:
-            data = fp.read(bufsize)
-            if not data:
-                break
-            m.update(data)
-    except IOError, msg:
-        sys.stderr.write('%s: I/O error: %s\n' % (filename, msg))
-        return 1
-    out.write('%s %s\n' % (m.hexdigest(), filename))
-    return 0
-
-def main(args = sys.argv[1:], out=sys.stdout):
-    global fnfilter, rmode, bufsize
-    try:
-        opts, args = getopt.getopt(args, 'blts:')
-    except getopt.error, msg:
-        sys.stderr.write('%s: %s\n%s' % (sys.argv[0], msg, usage))
-        return 2
-    for o, a in opts:
-        if o == '-l':
-            fnfilter = os.path.basename
-        elif o == '-b':
-            rmode = 'rb'
-        elif o == '-t':
-            rmode = 'r'
-        elif o == '-s':
-            bufsize = int(a)
-    if not args:
-        args = ['-']
-    return sum(args, out)
-
-if __name__ == '__main__' or __name__ == sys.argv[0]:
-    sys.exit(main(sys.argv[1:], sys.stdout))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/methfix.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/methfix.py
deleted file mode 100644
index 585fdb9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/methfix.py
+++ /dev/null
@@ -1,171 +0,0 @@
-#! /usr/bin/env python
-
-# Fix Python source files to avoid using
-#       def method(self, (arg1, ..., argn)):
-# instead of the more rational
-#       def method(self, arg1, ..., argn):
-#
-# Command line arguments are files or directories to be processed.
-# Directories are searched recursively for files whose name looks
-# like a python module.
-# Symbolic links are always ignored (except as explicit directory
-# arguments).  Of course, the original file is kept as a back-up
-# (with a "~" attached to its name).
-# It complains about binaries (files containing null bytes)
-# and about files that are ostensibly not Python files: if the first
-# line starts with '#!' and does not contain the string 'python'.
-#
-# Changes made are reported to stdout in a diff-like format.
-#
-# Undoubtedly you can do this using find and sed or perl, but this is
-# a nice example of Python code that recurses down a directory tree
-# and uses regular expressions.  Also note several subtleties like
-# preserving the file's mode and avoiding to even write a temp file
-# when no changes are needed for a file.
-#
-# NB: by changing only the function fixline() you can turn this
-# into a program for a different change to Python programs...
-
-import sys
-import re
-import os
-from stat import *
-
-err = sys.stderr.write
-dbg = err
-rep = sys.stdout.write
-
-def main():
-    bad = 0
-    if not sys.argv[1:]: # No arguments
-        err('usage: ' + sys.argv[0] + ' file-or-directory ...\n')
-        sys.exit(2)
-    for arg in sys.argv[1:]:
-        if os.path.isdir(arg):
-            if recursedown(arg): bad = 1
-        elif os.path.islink(arg):
-            err(arg + ': will not process symbolic links\n')
-            bad = 1
-        else:
-            if fix(arg): bad = 1
-    sys.exit(bad)
-
-ispythonprog = re.compile('^[a-zA-Z0-9_]+\.py$')
-def ispython(name):
-    return ispythonprog.match(name) >= 0
-
-def recursedown(dirname):
-    dbg('recursedown(%r)\n' % (dirname,))
-    bad = 0
-    try:
-        names = os.listdir(dirname)
-    except os.error, msg:
-        err('%s: cannot list directory: %r\n' % (dirname, msg))
-        return 1
-    names.sort()
-    subdirs = []
-    for name in names:
-        if name in (os.curdir, os.pardir): continue
-        fullname = os.path.join(dirname, name)
-        if os.path.islink(fullname): pass
-        elif os.path.isdir(fullname):
-            subdirs.append(fullname)
-        elif ispython(name):
-            if fix(fullname): bad = 1
-    for fullname in subdirs:
-        if recursedown(fullname): bad = 1
-    return bad
-
-def fix(filename):
-##  dbg('fix(%r)\n' % (filename,))
-    try:
-        f = open(filename, 'r')
-    except IOError, msg:
-        err('%s: cannot open: %r\n' % (filename, msg))
-        return 1
-    head, tail = os.path.split(filename)
-    tempname = os.path.join(head, '@' + tail)
-    g = None
-    # If we find a match, we rewind the file and start over but
-    # now copy everything to a temp file.
-    lineno = 0
-    while 1:
-        line = f.readline()
-        if not line: break
-        lineno = lineno + 1
-        if g is None and '\0' in line:
-            # Check for binary files
-            err(filename + ': contains null bytes; not fixed\n')
-            f.close()
-            return 1
-        if lineno == 1 and g is None and line[:2] == '#!':
-            # Check for non-Python scripts
-            words = line[2:].split()
-            if words and re.search('[pP]ython', words[0]) < 0:
-                msg = filename + ': ' + words[0]
-                msg = msg + ' script; not fixed\n'
-                err(msg)
-                f.close()
-                return 1
-        while line[-2:] == '\\\n':
-            nextline = f.readline()
-            if not nextline: break
-            line = line + nextline
-            lineno = lineno + 1
-        newline = fixline(line)
-        if newline != line:
-            if g is None:
-                try:
-                    g = open(tempname, 'w')
-                except IOError, msg:
-                    f.close()
-                    err('%s: cannot create: %r\n' % (tempname, msg))
-                    return 1
-                f.seek(0)
-                lineno = 0
-                rep(filename + ':\n')
-                continue # restart from the beginning
-            rep(repr(lineno) + '\n')
-            rep('< ' + line)
-            rep('> ' + newline)
-        if g is not None:
-            g.write(newline)
-
-    # End of file
-    f.close()
-    if not g: return 0 # No changes
-
-    # Finishing touch -- move files
-
-    # First copy the file's mode to the temp file
-    try:
-        statbuf = os.stat(filename)
-        os.chmod(tempname, statbuf[ST_MODE] & 07777)
-    except os.error, msg:
-        err('%s: warning: chmod failed (%r)\n' % (tempname, msg))
-    # Then make a backup of the original file as filename~
-    try:
-        os.rename(filename, filename + '~')
-    except os.error, msg:
-        err('%s: warning: backup failed (%r)\n' % (filename, msg))
-    # Now move the temp file to the original file
-    try:
-        os.rename(tempname, filename)
-    except os.error, msg:
-        err('%s: rename failed (%r)\n' % (filename, msg))
-        return 1
-    # Return succes
-    return 0
-
-
-fixpat = '^[ \t]+def +[a-zA-Z0-9_]+ *( *self *, *(( *(.*) *)) *) *:'
-fixprog = re.compile(fixpat)
-
-def fixline(line):
-    if fixprog.match(line) >= 0:
-        (a, b), (c, d) = fixprog.regs[1:3]
-        line = line[:a] + line[c:d] + line[b:]
-    return line
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/mkreal.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/mkreal.py
deleted file mode 100644
index da2f410..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/mkreal.py
+++ /dev/null
@@ -1,66 +0,0 @@
-#! /usr/bin/env python
-
-# mkreal
-#
-# turn a symlink to a directory into a real directory
-
-import sys
-import os
-from stat import *
-
-join = os.path.join
-
-error = 'mkreal error'
-
-BUFSIZE = 32*1024
-
-def mkrealfile(name):
-    st = os.stat(name) # Get the mode
-    mode = S_IMODE(st[ST_MODE])
-    linkto = os.readlink(name) # Make sure again it's a symlink
-    f_in = open(name, 'r') # This ensures it's a file
-    os.unlink(name)
-    f_out = open(name, 'w')
-    while 1:
-        buf = f_in.read(BUFSIZE)
-        if not buf: break
-        f_out.write(buf)
-    del f_out # Flush data to disk before changing mode
-    os.chmod(name, mode)
-
-def mkrealdir(name):
-    st = os.stat(name) # Get the mode
-    mode = S_IMODE(st[ST_MODE])
-    linkto = os.readlink(name)
-    files = os.listdir(name)
-    os.unlink(name)
-    os.mkdir(name, mode)
-    os.chmod(name, mode)
-    linkto = join(os.pardir, linkto)
-    #
-    for filename in files:
-        if filename not in (os.curdir, os.pardir):
-            os.symlink(join(linkto, filename), join(name, filename))
-
-def main():
-    sys.stdout = sys.stderr
-    progname = os.path.basename(sys.argv[0])
-    if progname == '-c': progname = 'mkreal'
-    args = sys.argv[1:]
-    if not args:
-        print 'usage:', progname, 'path ...'
-        sys.exit(2)
-    status = 0
-    for name in args:
-        if not os.path.islink(name):
-            print progname+':', name+':', 'not a symlink'
-            status = 1
-        else:
-            if os.path.isdir(name):
-                mkrealdir(name)
-            else:
-                mkrealfile(name)
-    sys.exit(status)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ndiff.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ndiff.py
deleted file mode 100644
index c0e79e2..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ndiff.py
+++ /dev/null
@@ -1,133 +0,0 @@
-#! /usr/bin/env python
-
-# Module ndiff version 1.7.0
-# Released to the public domain 08-Dec-2000,
-# by Tim Peters (tim.one@home.com).
-
-# Provided as-is; use at your own risk; no warranty; no promises; enjoy!
-
-# ndiff.py is now simply a front-end to the difflib.ndiff() function.
-# Originally, it contained the difflib.SequenceMatcher class as well.
-# This completes the raiding of reusable code from this formerly
-# self-contained script.
-
-"""ndiff [-q] file1 file2
-    or
-ndiff (-r1 | -r2) < ndiff_output > file1_or_file2
-
-Print a human-friendly file difference report to stdout.  Both inter-
-and intra-line differences are noted.  In the second form, recreate file1
-(-r1) or file2 (-r2) on stdout, from an ndiff report on stdin.
-
-In the first form, if -q ("quiet") is not specified, the first two lines
-of output are
-
--: file1
-+: file2
-
-Each remaining line begins with a two-letter code:
-
-    "- "    line unique to file1
-    "+ "    line unique to file2
-    "  "    line common to both files
-    "? "    line not present in either input file
-
-Lines beginning with "? " attempt to guide the eye to intraline
-differences, and were not present in either input file.  These lines can be
-confusing if the source files contain tab characters.
-
-The first file can be recovered by retaining only lines that begin with
-"  " or "- ", and deleting those 2-character prefixes; use ndiff with -r1.
-
-The second file can be recovered similarly, but by retaining only "  " and
-"+ " lines; use ndiff with -r2; or, on Unix, the second file can be
-recovered by piping the output through
-
-    sed -n '/^[+ ] /s/^..//p'
-"""
-
-__version__ = 1, 7, 0
-
-import difflib, sys
-
-def fail(msg):
-    out = sys.stderr.write
-    out(msg + "\n\n")
-    out(__doc__)
-    return 0
-
-# open a file & return the file object; gripe and return 0 if it
-# couldn't be opened
-def fopen(fname):
-    try:
-        return open(fname, 'U')
-    except IOError, detail:
-        return fail("couldn't open " + fname + ": " + str(detail))
-
-# open two files & spray the diff to stdout; return false iff a problem
-def fcompare(f1name, f2name):
-    f1 = fopen(f1name)
-    f2 = fopen(f2name)
-    if not f1 or not f2:
-        return 0
-
-    a = f1.readlines(); f1.close()
-    b = f2.readlines(); f2.close()
-    for line in difflib.ndiff(a, b):
-        print line,
-
-    return 1
-
-# crack args (sys.argv[1:] is normal) & compare;
-# return false iff a problem
-
-def main(args):
-    import getopt
-    try:
-        opts, args = getopt.getopt(args, "qr:")
-    except getopt.error, detail:
-        return fail(str(detail))
-    noisy = 1
-    qseen = rseen = 0
-    for opt, val in opts:
-        if opt == "-q":
-            qseen = 1
-            noisy = 0
-        elif opt == "-r":
-            rseen = 1
-            whichfile = val
-    if qseen and rseen:
-        return fail("can't specify both -q and -r")
-    if rseen:
-        if args:
-            return fail("no args allowed with -r option")
-        if whichfile in ("1", "2"):
-            restore(whichfile)
-            return 1
-        return fail("-r value must be 1 or 2")
-    if len(args) != 2:
-        return fail("need 2 filename args")
-    f1name, f2name = args
-    if noisy:
-        print '-:', f1name
-        print '+:', f2name
-    return fcompare(f1name, f2name)
-
-# read ndiff output from stdin, and print file1 (which=='1') or
-# file2 (which=='2') to stdout
-
-def restore(which):
-    restored = difflib.restore(sys.stdin.readlines(), which)
-    sys.stdout.writelines(restored)
-
-if __name__ == '__main__':
-    args = sys.argv[1:]
-    if "-profile" in args:
-        import profile, pstats
-        args.remove("-profile")
-        statf = "ndiff.pro"
-        profile.run("main(args)", statf)
-        stats = pstats.Stats(statf)
-        stats.strip_dirs().sort_stats('time').print_stats()
-    else:
-        main(args)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/nm2def.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/nm2def.py
deleted file mode 100644
index a0b14b5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/nm2def.py
+++ /dev/null
@@ -1,103 +0,0 @@
-#! /usr/bin/env python
-"""nm2def.py
-
-Helpers to extract symbols from Unix libs and auto-generate
-Windows definition files from them. Depends on nm(1). Tested
-on Linux and Solaris only (-p option to nm is for Solaris only).
-
-By Marc-Andre Lemburg, Aug 1998.
-
-Additional notes: the output of nm is supposed to look like this:
-
-acceler.o:
-000001fd T PyGrammar_AddAccelerators
-         U PyGrammar_FindDFA
-00000237 T PyGrammar_RemoveAccelerators
-         U _IO_stderr_
-         U exit
-         U fprintf
-         U free
-         U malloc
-         U printf
-
-grammar1.o:
-00000000 T PyGrammar_FindDFA
-00000034 T PyGrammar_LabelRepr
-         U _PyParser_TokenNames
-         U abort
-         U printf
-         U sprintf
-
-...
-
-Even if this isn't the default output of your nm, there is generally an
-option to produce this format (since it is the original v7 Unix format).
-
-"""
-import os, sys
-
-PYTHONLIB = 'libpython'+sys.version[:3]+'.a'
-PC_PYTHONLIB = 'Python'+sys.version[0]+sys.version[2]+'.dll'
-NM = 'nm -p -g %s'                      # For Linux, use "nm -g %s"
-
-def symbols(lib=PYTHONLIB,types=('T','C','D')):
-
-    lines = os.popen(NM % lib).readlines()
-    lines = [s.strip() for s in lines]
-    symbols = {}
-    for line in lines:
-        if len(line) == 0 or ':' in line:
-            continue
-        items = line.split()
-        if len(items) != 3:
-            continue
-        address, type, name = items
-        if type not in types:
-            continue
-        symbols[name] = address,type
-    return symbols
-
-def export_list(symbols):
-
-    data = []
-    code = []
-    for name,(addr,type) in symbols.items():
-        if type in ('C','D'):
-            data.append('\t'+name)
-        else:
-            code.append('\t'+name)
-    data.sort()
-    data.append('')
-    code.sort()
-    return ' DATA\n'.join(data)+'\n'+'\n'.join(code)
-
-# Definition file template
-DEF_TEMPLATE = """\
-EXPORTS
-%s
-"""
-
-# Special symbols that have to be included even though they don't
-# pass the filter
-SPECIALS = (
-    )
-
-def filter_Python(symbols,specials=SPECIALS):
-
-    for name in symbols.keys():
-        if name[:2] == 'Py' or name[:3] == '_Py':
-            pass
-        elif name not in specials:
-            del symbols[name]
-
-def main():
-
-    s = symbols(PYTHONLIB)
-    filter_Python(s)
-    exports = export_list(s)
-    f = sys.stdout # open('PC/python_nt.def','w')
-    f.write(DEF_TEMPLATE % (exports))
-    f.close()
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/objgraph.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/objgraph.py
deleted file mode 100644
index d20bfdf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/objgraph.py
+++ /dev/null
@@ -1,215 +0,0 @@
-#! /usr/bin/env python
-
-# objgraph
-#
-# Read "nm -o" input (on IRIX: "nm -Bo") of a set of libraries or modules
-# and print various interesting listings, such as:
-#
-# - which names are used but not defined in the set (and used where),
-# - which names are defined in the set (and where),
-# - which modules use which other modules,
-# - which modules are used by which other modules.
-#
-# Usage: objgraph [-cdu] [file] ...
-# -c: print callers per objectfile
-# -d: print callees per objectfile
-# -u: print usage of undefined symbols
-# If none of -cdu is specified, all are assumed.
-# Use "nm -o" to generate the input (on IRIX: "nm -Bo"),
-# e.g.: nm -o /lib/libc.a | objgraph
-
-
-import sys
-import os
-import getopt
-import re
-
-# Types of symbols.
-#
-definitions = 'TRGDSBAEC'
-externals = 'UV'
-ignore = 'Nntrgdsbavuc'
-
-# Regular expression to parse "nm -o" output.
-#
-matcher = re.compile('(.*):\t?........ (.) (.*)$')
-
-# Store "item" in "dict" under "key".
-# The dictionary maps keys to lists of items.
-# If there is no list for the key yet, it is created.
-#
-def store(dict, key, item):
-    if dict.has_key(key):
-        dict[key].append(item)
-    else:
-        dict[key] = [item]
-
-# Return a flattened version of a list of strings: the concatenation
-# of its elements with intervening spaces.
-#
-def flat(list):
-    s = ''
-    for item in list:
-        s = s + ' ' + item
-    return s[1:]
-
-# Global variables mapping defined/undefined names to files and back.
-#
-file2undef = {}
-def2file = {}
-file2def = {}
-undef2file = {}
-
-# Read one input file and merge the data into the tables.
-# Argument is an open file.
-#
-def readinput(fp):
-    while 1:
-        s = fp.readline()
-        if not s:
-            break
-        # If you get any output from this line,
-        # it is probably caused by an unexpected input line:
-        if matcher.search(s) < 0: s; continue # Shouldn't happen
-        (ra, rb), (r1a, r1b), (r2a, r2b), (r3a, r3b) = matcher.regs[:4]
-        fn, name, type = s[r1a:r1b], s[r3a:r3b], s[r2a:r2b]
-        if type in definitions:
-            store(def2file, name, fn)
-            store(file2def, fn, name)
-        elif type in externals:
-            store(file2undef, fn, name)
-            store(undef2file, name, fn)
-        elif not type in ignore:
-            print fn + ':' + name + ': unknown type ' + type
-
-# Print all names that were undefined in some module and where they are
-# defined.
-#
-def printcallee():
-    flist = file2undef.keys()
-    flist.sort()
-    for filename in flist:
-        print filename + ':'
-        elist = file2undef[filename]
-        elist.sort()
-        for ext in elist:
-            if len(ext) >= 8:
-                tabs = '\t'
-            else:
-                tabs = '\t\t'
-            if not def2file.has_key(ext):
-                print '\t' + ext + tabs + ' *undefined'
-            else:
-                print '\t' + ext + tabs + flat(def2file[ext])
-
-# Print for each module the names of the other modules that use it.
-#
-def printcaller():
-    files = file2def.keys()
-    files.sort()
-    for filename in files:
-        callers = []
-        for label in file2def[filename]:
-            if undef2file.has_key(label):
-                callers = callers + undef2file[label]
-        if callers:
-            callers.sort()
-            print filename + ':'
-            lastfn = ''
-            for fn in callers:
-                if fn <> lastfn:
-                    print '\t' + fn
-                lastfn = fn
-        else:
-            print filename + ': unused'
-
-# Print undefined names and where they are used.
-#
-def printundef():
-    undefs = {}
-    for filename in file2undef.keys():
-        for ext in file2undef[filename]:
-            if not def2file.has_key(ext):
-                store(undefs, ext, filename)
-    elist = undefs.keys()
-    elist.sort()
-    for ext in elist:
-        print ext + ':'
-        flist = undefs[ext]
-        flist.sort()
-        for filename in flist:
-            print '\t' + filename
-
-# Print warning messages about names defined in more than one file.
-#
-def warndups():
-    savestdout = sys.stdout
-    sys.stdout = sys.stderr
-    names = def2file.keys()
-    names.sort()
-    for name in names:
-        if len(def2file[name]) > 1:
-            print 'warning:', name, 'multiply defined:',
-            print flat(def2file[name])
-    sys.stdout = savestdout
-
-# Main program
-#
-def main():
-    try:
-        optlist, args = getopt.getopt(sys.argv[1:], 'cdu')
-    except getopt.error:
-        sys.stdout = sys.stderr
-        print 'Usage:', os.path.basename(sys.argv[0]),
-        print           '[-cdu] [file] ...'
-        print '-c: print callers per objectfile'
-        print '-d: print callees per objectfile'
-        print '-u: print usage of undefined symbols'
-        print 'If none of -cdu is specified, all are assumed.'
-        print 'Use "nm -o" to generate the input (on IRIX: "nm -Bo"),'
-        print 'e.g.: nm -o /lib/libc.a | objgraph'
-        return 1
-    optu = optc = optd = 0
-    for opt, void in optlist:
-        if opt == '-u':
-            optu = 1
-        elif opt == '-c':
-            optc = 1
-        elif opt == '-d':
-            optd = 1
-    if optu == optc == optd == 0:
-        optu = optc = optd = 1
-    if not args:
-        args = ['-']
-    for filename in args:
-        if filename == '-':
-            readinput(sys.stdin)
-        else:
-            readinput(open(filename, 'r'))
-    #
-    warndups()
-    #
-    more = (optu + optc + optd > 1)
-    if optd:
-        if more:
-            print '---------------All callees------------------'
-        printcallee()
-    if optu:
-        if more:
-            print '---------------Undefined callees------------'
-        printundef()
-    if optc:
-        if more:
-            print '---------------All Callers------------------'
-        printcaller()
-    return 0
-
-# Call the main program.
-# Use its return value as exit status.
-# Catch interrupts to avoid stack trace.
-#
-if __name__ == '__main__':
-    try:
-        sys.exit(main())
-    except KeyboardInterrupt:
-        sys.exit(1)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/parseentities.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/parseentities.py
deleted file mode 100644
index 5d2f0c6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/parseentities.py
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env python
-""" Utility for parsing HTML entity definitions available from:
-
-      http://www.w3.org/ as e.g.
-      http://www.w3.org/TR/REC-html40/HTMLlat1.ent
-
-    Input is read from stdin, output is written to stdout in form of a
-    Python snippet defining a dictionary "entitydefs" mapping literal
-    entity name to character or numeric entity.
-
-    Marc-Andre Lemburg, mal@lemburg.com, 1999.
-    Use as you like. NO WARRANTIES.
-
-"""
-import re,sys
-import TextTools
-
-entityRE = re.compile('<!ENTITY +(\w+) +CDATA +"([^"]+)" +-- +((?:.|\n)+?) *-->')
-
-def parse(text,pos=0,endpos=None):
-
-    pos = 0
-    if endpos is None:
-        endpos = len(text)
-    d = {}
-    while 1:
-        m = entityRE.search(text,pos,endpos)
-        if not m:
-            break
-        name,charcode,comment = m.groups()
-        d[name] = charcode,comment
-        pos = m.end()
-    return d
-
-def writefile(f,defs):
-
-    f.write("entitydefs = {\n")
-    items = defs.items()
-    items.sort()
-    for name,(charcode,comment) in items:
-        if charcode[:2] == '&#':
-            code = int(charcode[2:-1])
-            if code < 256:
-                charcode = "'\%o'" % code
-            else:
-                charcode = repr(charcode)
-        else:
-            charcode = repr(charcode)
-        comment = TextTools.collapse(comment)
-        f.write("    '%s':\t%s,  \t# %s\n" % (name,charcode,comment))
-    f.write('\n}\n')
-
-if __name__ == '__main__':
-    if len(sys.argv) > 1:
-        infile = open(sys.argv[1])
-    else:
-        infile = sys.stdin
-    if len(sys.argv) > 2:
-        outfile = open(sys.argv[2],'w')
-    else:
-        outfile = sys.stdout
-    text = infile.read()
-    defs = parse(text)
-    writefile(outfile,defs)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/patchcheck.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/patchcheck.py
deleted file mode 100644
index 62763a1..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/patchcheck.py
+++ /dev/null
@@ -1,158 +0,0 @@
-import re
-import sys
-import shutil
-import os.path
-import subprocess
-
-import reindent
-import untabify
-
-
-def n_files_str(count):
-    """Return 'N file(s)' with the proper plurality on 'file'."""
-    return "{} file{}".format(count, "s" if count != 1 else "")
-
-
-def status(message, modal=False, info=None):
-    """Decorator to output status info to stdout."""
-    def decorated_fxn(fxn):
-        def call_fxn(*args, **kwargs):
-            sys.stdout.write(message + ' ... ')
-            sys.stdout.flush()
-            result = fxn(*args, **kwargs)
-            if not modal and not info:
-                print "done"
-            elif info:
-                print info(result)
-            else:
-                print "yes" if result else "NO"
-            return result
-        return call_fxn
-    return decorated_fxn
-
-
-@status("Getting the list of files that have been added/changed",
-        info=lambda x: n_files_str(len(x)))
-def changed_files():
-    """Get the list of changed or added files from the VCS."""
-    if os.path.isdir('.hg'):
-        vcs = 'hg'
-        cmd = 'hg status --added --modified --no-status'
-    elif os.path.isdir('.svn'):
-        vcs = 'svn'
-        cmd = 'svn status --quiet --non-interactive --ignore-externals'
-    else:
-        sys.exit('need a checkout to get modified files')
-
-    st = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
-    try:
-        st.wait()
-        if vcs == 'hg':
-            return [x.decode().rstrip() for x in st.stdout]
-        else:
-            output = (x.decode().rstrip().rsplit(None, 1)[-1]
-                      for x in st.stdout if x[0] in 'AM')
-        return set(path for path in output if os.path.isfile(path))
-    finally:
-        st.stdout.close()
-
-
-def report_modified_files(file_paths):
-    count = len(file_paths)
-    if count == 0:
-        return n_files_str(count)
-    else:
-        lines = ["{}:".format(n_files_str(count))]
-        for path in file_paths:
-            lines.append("  {}".format(path))
-        return "\n".join(lines)
-
-
-@status("Fixing whitespace", info=report_modified_files)
-def normalize_whitespace(file_paths):
-    """Make sure that the whitespace for .py files have been normalized."""
-    reindent.makebackup = False  # No need to create backups.
-    fixed = []
-    for path in (x for x in file_paths if x.endswith('.py')):
-        if reindent.check(path):
-            fixed.append(path)
-    return fixed
-
-
-@status("Fixing C file whitespace", info=report_modified_files)
-def normalize_c_whitespace(file_paths):
-    """Report if any C files """
-    fixed = []
-    for path in file_paths:
-        with open(path, 'r') as f:
-            if '\t' not in f.read():
-                continue
-        untabify.process(path, 8, verbose=False)
-        fixed.append(path)
-    return fixed
-
-
-ws_re = re.compile(br'\s+(\r?\n)$')
-
-@status("Fixing docs whitespace", info=report_modified_files)
-def normalize_docs_whitespace(file_paths):
-    fixed = []
-    for path in file_paths:
-        try:
-            with open(path, 'rb') as f:
-                lines = f.readlines()
-            new_lines = [ws_re.sub(br'\1', line) for line in lines]
-            if new_lines != lines:
-                shutil.copyfile(path, path + '.bak')
-                with open(path, 'wb') as f:
-                    f.writelines(new_lines)
-                fixed.append(path)
-        except Exception as err:
-            print 'Cannot fix %s: %s' % (path, err)
-    return fixed
-
-
-@status("Docs modified", modal=True)
-def docs_modified(file_paths):
-    """Report if any file in the Doc directory has been changed."""
-    return bool(file_paths)
-
-
-@status("Misc/ACKS updated", modal=True)
-def credit_given(file_paths):
-    """Check if Misc/ACKS has been changed."""
-    return 'Misc/ACKS' in file_paths
-
-
-@status("Misc/NEWS updated", modal=True)
-def reported_news(file_paths):
-    """Check if Misc/NEWS has been changed."""
-    return 'Misc/NEWS' in file_paths
-
-
-def main():
-    file_paths = changed_files()
-    python_files = [fn for fn in file_paths if fn.endswith('.py')]
-    c_files = [fn for fn in file_paths if fn.endswith(('.c', '.h'))]
-    doc_files = [fn for fn in file_paths if fn.startswith('Doc')]
-    special_files = {'Misc/ACKS', 'Misc/NEWS'} & set(file_paths)
-    # PEP 8 whitespace rules enforcement.
-    normalize_whitespace(python_files)
-    # C rules enforcement.
-    normalize_c_whitespace(c_files)
-    # Doc whitespace enforcement.
-    normalize_docs_whitespace(doc_files)
-    # Docs updated.
-    docs_modified(doc_files)
-    # Misc/ACKS changed.
-    credit_given(special_files)
-    # Misc/NEWS changed.
-    reported_news(special_files)
-
-    # Test suite run and passed.
-    print
-    print "Did you run the test suite?"
-
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pathfix.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pathfix.py
deleted file mode 100644
index 24a2446..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pathfix.py
+++ /dev/null
@@ -1,149 +0,0 @@
-#! /usr/bin/env python
-
-# Change the #! line occurring in Python scripts.  The new interpreter
-# pathname must be given with a -i option.
-#
-# Command line arguments are files or directories to be processed.
-# Directories are searched recursively for files whose name looks
-# like a python module.
-# Symbolic links are always ignored (except as explicit directory
-# arguments).  Of course, the original file is kept as a back-up
-# (with a "~" attached to its name).
-#
-# Undoubtedly you can do this using find and sed or perl, but this is
-# a nice example of Python code that recurses down a directory tree
-# and uses regular expressions.  Also note several subtleties like
-# preserving the file's mode and avoiding to even write a temp file
-# when no changes are needed for a file.
-#
-# NB: by changing only the function fixfile() you can turn this
-# into a program for a different change to Python programs...
-
-import sys
-import re
-import os
-from stat import *
-import getopt
-
-err = sys.stderr.write
-dbg = err
-rep = sys.stdout.write
-
-new_interpreter = None
-
-def main():
-    global new_interpreter
-    usage = ('usage: %s -i /interpreter file-or-directory ...\n' %
-             sys.argv[0])
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'i:')
-    except getopt.error, msg:
-        err(msg + '\n')
-        err(usage)
-        sys.exit(2)
-    for o, a in opts:
-        if o == '-i':
-            new_interpreter = a
-    if not new_interpreter or new_interpreter[0] != '/' or not args:
-        err('-i option or file-or-directory missing\n')
-        err(usage)
-        sys.exit(2)
-    bad = 0
-    for arg in args:
-        if os.path.isdir(arg):
-            if recursedown(arg): bad = 1
-        elif os.path.islink(arg):
-            err(arg + ': will not process symbolic links\n')
-            bad = 1
-        else:
-            if fix(arg): bad = 1
-    sys.exit(bad)
-
-ispythonprog = re.compile('^[a-zA-Z0-9_]+\.py$')
-def ispython(name):
-    return ispythonprog.match(name) >= 0
-
-def recursedown(dirname):
-    dbg('recursedown(%r)\n' % (dirname,))
-    bad = 0
-    try:
-        names = os.listdir(dirname)
-    except os.error, msg:
-        err('%s: cannot list directory: %r\n' % (dirname, msg))
-        return 1
-    names.sort()
-    subdirs = []
-    for name in names:
-        if name in (os.curdir, os.pardir): continue
-        fullname = os.path.join(dirname, name)
-        if os.path.islink(fullname): pass
-        elif os.path.isdir(fullname):
-            subdirs.append(fullname)
-        elif ispython(name):
-            if fix(fullname): bad = 1
-    for fullname in subdirs:
-        if recursedown(fullname): bad = 1
-    return bad
-
-def fix(filename):
-##  dbg('fix(%r)\n' % (filename,))
-    try:
-        f = open(filename, 'r')
-    except IOError, msg:
-        err('%s: cannot open: %r\n' % (filename, msg))
-        return 1
-    line = f.readline()
-    fixed = fixline(line)
-    if line == fixed:
-        rep(filename+': no change\n')
-        f.close()
-        return
-    head, tail = os.path.split(filename)
-    tempname = os.path.join(head, '@' + tail)
-    try:
-        g = open(tempname, 'w')
-    except IOError, msg:
-        f.close()
-        err('%s: cannot create: %r\n' % (tempname, msg))
-        return 1
-    rep(filename + ': updating\n')
-    g.write(fixed)
-    BUFSIZE = 8*1024
-    while 1:
-        buf = f.read(BUFSIZE)
-        if not buf: break
-        g.write(buf)
-    g.close()
-    f.close()
-
-    # Finishing touch -- move files
-
-    # First copy the file's mode to the temp file
-    try:
-        statbuf = os.stat(filename)
-        os.chmod(tempname, statbuf[ST_MODE] & 07777)
-    except os.error, msg:
-        err('%s: warning: chmod failed (%r)\n' % (tempname, msg))
-    # Then make a backup of the original file as filename~
-    try:
-        os.rename(filename, filename + '~')
-    except os.error, msg:
-        err('%s: warning: backup failed (%r)\n' % (filename, msg))
-    # Now move the temp file to the original file
-    try:
-        os.rename(tempname, filename)
-    except os.error, msg:
-        err('%s: rename failed (%r)\n' % (filename, msg))
-        return 1
-    # Return succes
-    return 0
-
-def fixline(line):
-    if not line.startswith('#!'):
-        return line
-    if "python" not in line:
-        return line
-    return '#! %s\n' % new_interpreter
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pdeps.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pdeps.py
deleted file mode 100644
index 13a1ccc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pdeps.py
+++ /dev/null
@@ -1,167 +0,0 @@
-#! /usr/bin/env python
-
-# pdeps
-#
-# Find dependencies between a bunch of Python modules.
-#
-# Usage:
-#       pdeps file1.py file2.py ...
-#
-# Output:
-# Four tables separated by lines like '--- Closure ---':
-# 1) Direct dependencies, listing which module imports which other modules
-# 2) The inverse of (1)
-# 3) Indirect dependencies, or the closure of the above
-# 4) The inverse of (3)
-#
-# To do:
-# - command line options to select output type
-# - option to automatically scan the Python library for referenced modules
-# - option to limit output to particular modules
-
-
-import sys
-import re
-import os
-
-
-# Main program
-#
-def main():
-    args = sys.argv[1:]
-    if not args:
-        print 'usage: pdeps file.py file.py ...'
-        return 2
-    #
-    table = {}
-    for arg in args:
-        process(arg, table)
-    #
-    print '--- Uses ---'
-    printresults(table)
-    #
-    print '--- Used By ---'
-    inv = inverse(table)
-    printresults(inv)
-    #
-    print '--- Closure of Uses ---'
-    reach = closure(table)
-    printresults(reach)
-    #
-    print '--- Closure of Used By ---'
-    invreach = inverse(reach)
-    printresults(invreach)
-    #
-    return 0
-
-
-# Compiled regular expressions to search for import statements
-#
-m_import = re.compile('^[ \t]*from[ \t]+([^ \t]+)[ \t]+')
-m_from = re.compile('^[ \t]*import[ \t]+([^#]+)')
-
-
-# Collect data from one file
-#
-def process(filename, table):
-    fp = open(filename, 'r')
-    mod = os.path.basename(filename)
-    if mod[-3:] == '.py':
-        mod = mod[:-3]
-    table[mod] = list = []
-    while 1:
-        line = fp.readline()
-        if not line: break
-        while line[-1:] == '\\':
-            nextline = fp.readline()
-            if not nextline: break
-            line = line[:-1] + nextline
-        if m_import.match(line) >= 0:
-            (a, b), (a1, b1) = m_import.regs[:2]
-        elif m_from.match(line) >= 0:
-            (a, b), (a1, b1) = m_from.regs[:2]
-        else: continue
-        words = line[a1:b1].split(',')
-        # print '#', line, words
-        for word in words:
-            word = word.strip()
-            if word not in list:
-                list.append(word)
-
-
-# Compute closure (this is in fact totally general)
-#
-def closure(table):
-    modules = table.keys()
-    #
-    # Initialize reach with a copy of table
-    #
-    reach = {}
-    for mod in modules:
-        reach[mod] = table[mod][:]
-    #
-    # Iterate until no more change
-    #
-    change = 1
-    while change:
-        change = 0
-        for mod in modules:
-            for mo in reach[mod]:
-                if mo in modules:
-                    for m in reach[mo]:
-                        if m not in reach[mod]:
-                            reach[mod].append(m)
-                            change = 1
-    #
-    return reach
-
-
-# Invert a table (this is again totally general).
-# All keys of the original table are made keys of the inverse,
-# so there may be empty lists in the inverse.
-#
-def inverse(table):
-    inv = {}
-    for key in table.keys():
-        if not inv.has_key(key):
-            inv[key] = []
-        for item in table[key]:
-            store(inv, item, key)
-    return inv
-
-
-# Store "item" in "dict" under "key".
-# The dictionary maps keys to lists of items.
-# If there is no list for the key yet, it is created.
-#
-def store(dict, key, item):
-    if dict.has_key(key):
-        dict[key].append(item)
-    else:
-        dict[key] = [item]
-
-
-# Tabulate results neatly
-#
-def printresults(table):
-    modules = table.keys()
-    maxlen = 0
-    for mod in modules: maxlen = max(maxlen, len(mod))
-    modules.sort()
-    for mod in modules:
-        list = table[mod]
-        list.sort()
-        print mod.ljust(maxlen), ':',
-        if mod in list:
-            print '(*)',
-        for ref in list:
-            print ref,
-        print
-
-
-# Call main and honor exit status
-if __name__ == '__main__':
-    try:
-        sys.exit(main())
-    except KeyboardInterrupt:
-        sys.exit(1)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pickle2db.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pickle2db.py
deleted file mode 100644
index 89b90c5..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pickle2db.py
+++ /dev/null
@@ -1,147 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Synopsis: %(prog)s [-h|-b|-g|-r|-a|-d] [ picklefile ] dbfile
-
-Read the given picklefile as a series of key/value pairs and write to a new
-database.  If the database already exists, any contents are deleted.  The
-optional flags indicate the type of the output database:
-
-    -a - open using anydbm
-    -b - open as bsddb btree file
-    -d - open as dbm file
-    -g - open as gdbm file
-    -h - open as bsddb hash file
-    -r - open as bsddb recno file
-
-The default is hash.  If a pickle file is named it is opened for read
-access.  If no pickle file is named, the pickle input is read from standard
-input.
-
-Note that recno databases can only contain integer keys, so you can't dump a
-hash or btree database using db2pickle.py and reconstitute it to a recno
-database with %(prog)s unless your keys are integers.
-
-"""
-
-import getopt
-try:
-    import bsddb
-except ImportError:
-    bsddb = None
-try:
-    import dbm
-except ImportError:
-    dbm = None
-try:
-    import gdbm
-except ImportError:
-    gdbm = None
-try:
-    import anydbm
-except ImportError:
-    anydbm = None
-import sys
-try:
-    import cPickle as pickle
-except ImportError:
-    import pickle
-
-prog = sys.argv[0]
-
-def usage():
-    sys.stderr.write(__doc__ % globals())
-
-def main(args):
-    try:
-        opts, args = getopt.getopt(args, "hbrdag",
-                                   ["hash", "btree", "recno", "dbm", "anydbm",
-                                    "gdbm"])
-    except getopt.error:
-        usage()
-        return 1
-
-    if len(args) == 0 or len(args) > 2:
-        usage()
-        return 1
-    elif len(args) == 1:
-        pfile = sys.stdin
-        dbfile = args[0]
-    else:
-        try:
-            pfile = open(args[0], 'rb')
-        except IOError:
-            sys.stderr.write("Unable to open %s\n" % args[0])
-            return 1
-        dbfile = args[1]
-
-    dbopen = None
-    for opt, arg in opts:
-        if opt in ("-h", "--hash"):
-            try:
-                dbopen = bsddb.hashopen
-            except AttributeError:
-                sys.stderr.write("bsddb module unavailable.\n")
-                return 1
-        elif opt in ("-b", "--btree"):
-            try:
-                dbopen = bsddb.btopen
-            except AttributeError:
-                sys.stderr.write("bsddb module unavailable.\n")
-                return 1
-        elif opt in ("-r", "--recno"):
-            try:
-                dbopen = bsddb.rnopen
-            except AttributeError:
-                sys.stderr.write("bsddb module unavailable.\n")
-                return 1
-        elif opt in ("-a", "--anydbm"):
-            try:
-                dbopen = anydbm.open
-            except AttributeError:
-                sys.stderr.write("anydbm module unavailable.\n")
-                return 1
-        elif opt in ("-g", "--gdbm"):
-            try:
-                dbopen = gdbm.open
-            except AttributeError:
-                sys.stderr.write("gdbm module unavailable.\n")
-                return 1
-        elif opt in ("-d", "--dbm"):
-            try:
-                dbopen = dbm.open
-            except AttributeError:
-                sys.stderr.write("dbm module unavailable.\n")
-                return 1
-    if dbopen is None:
-        if bsddb is None:
-            sys.stderr.write("bsddb module unavailable - ")
-            sys.stderr.write("must specify dbtype.\n")
-            return 1
-        else:
-            dbopen = bsddb.hashopen
-
-    try:
-        db = dbopen(dbfile, 'c')
-    except bsddb.error:
-        sys.stderr.write("Unable to open %s.  " % dbfile)
-        sys.stderr.write("Check for format or version mismatch.\n")
-        return 1
-    else:
-        for k in db.keys():
-            del db[k]
-
-    while 1:
-        try:
-            (key, val) = pickle.load(pfile)
-        except EOFError:
-            break
-        db[key] = val
-
-    db.close()
-    pfile.close()
-
-    return 0
-
-if __name__ == "__main__":
-    sys.exit(main(sys.argv[1:]))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pindent.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pindent.py
deleted file mode 100644
index 2a031e0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pindent.py
+++ /dev/null
@@ -1,542 +0,0 @@
-#! /usr/bin/env python
-
-# This file contains a class and a main program that perform three
-# related (though complimentary) formatting operations on Python
-# programs.  When called as "pindent -c", it takes a valid Python
-# program as input and outputs a version augmented with block-closing
-# comments.  When called as "pindent -d", it assumes its input is a
-# Python program with block-closing comments and outputs a commentless
-# version.   When called as "pindent -r" it assumes its input is a
-# Python program with block-closing comments but with its indentation
-# messed up, and outputs a properly indented version.
-
-# A "block-closing comment" is a comment of the form '# end <keyword>'
-# where <keyword> is the keyword that opened the block.  If the
-# opening keyword is 'def' or 'class', the function or class name may
-# be repeated in the block-closing comment as well.  Here is an
-# example of a program fully augmented with block-closing comments:
-
-# def foobar(a, b):
-#    if a == b:
-#        a = a+1
-#    elif a < b:
-#        b = b-1
-#        if b > a: a = a-1
-#        # end if
-#    else:
-#        print 'oops!'
-#    # end if
-# # end def foobar
-
-# Note that only the last part of an if...elif...else... block needs a
-# block-closing comment; the same is true for other compound
-# statements (e.g. try...except).  Also note that "short-form" blocks
-# like the second 'if' in the example must be closed as well;
-# otherwise the 'else' in the example would be ambiguous (remember
-# that indentation is not significant when interpreting block-closing
-# comments).
-
-# The operations are idempotent (i.e. applied to their own output
-# they yield an identical result).  Running first "pindent -c" and
-# then "pindent -r" on a valid Python program produces a program that
-# is semantically identical to the input (though its indentation may
-# be different). Running "pindent -e" on that output produces a
-# program that only differs from the original in indentation.
-
-# Other options:
-# -s stepsize: set the indentation step size (default 8)
-# -t tabsize : set the number of spaces a tab character is worth (default 8)
-# -e         : expand TABs into spaces
-# file ...   : input file(s) (default standard input)
-# The results always go to standard output
-
-# Caveats:
-# - comments ending in a backslash will be mistaken for continued lines
-# - continuations using backslash are always left unchanged
-# - continuations inside parentheses are not extra indented by -r
-#   but must be indented for -c to work correctly (this breaks
-#   idempotency!)
-# - continued lines inside triple-quoted strings are totally garbled
-
-# Secret feature:
-# - On input, a block may also be closed with an "end statement" --
-#   this is a block-closing comment without the '#' sign.
-
-# Possible improvements:
-# - check syntax based on transitions in 'next' table
-# - better error reporting
-# - better error recovery
-# - check identifier after class/def
-
-# The following wishes need a more complete tokenization of the source:
-# - Don't get fooled by comments ending in backslash
-# - reindent continuation lines indicated by backslash
-# - handle continuation lines inside parentheses/braces/brackets
-# - handle triple quoted strings spanning lines
-# - realign comments
-# - optionally do much more thorough reformatting, a la C indent
-
-# Defaults
-STEPSIZE = 8
-TABSIZE = 8
-EXPANDTABS = 0
-
-import re
-import sys
-
-next = {}
-next['if'] = next['elif'] = 'elif', 'else', 'end'
-next['while'] = next['for'] = 'else', 'end'
-next['try'] = 'except', 'finally'
-next['except'] = 'except', 'else', 'finally', 'end'
-next['else'] = next['finally'] = next['def'] = next['class'] = 'end'
-next['end'] = ()
-start = 'if', 'while', 'for', 'try', 'with', 'def', 'class'
-
-class PythonIndenter:
-
-    def __init__(self, fpi = sys.stdin, fpo = sys.stdout,
-                 indentsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS):
-        self.fpi = fpi
-        self.fpo = fpo
-        self.indentsize = indentsize
-        self.tabsize = tabsize
-        self.lineno = 0
-        self.expandtabs = expandtabs
-        self._write = fpo.write
-        self.kwprog = re.compile(
-                r'^\s*(?P<kw>[a-z]+)'
-                r'(\s+(?P<id>[a-zA-Z_]\w*))?'
-                r'[^\w]')
-        self.endprog = re.compile(
-                r'^\s*#?\s*end\s+(?P<kw>[a-z]+)'
-                r'(\s+(?P<id>[a-zA-Z_]\w*))?'
-                r'[^\w]')
-        self.wsprog = re.compile(r'^[ \t]*')
-    # end def __init__
-
-    def write(self, line):
-        if self.expandtabs:
-            self._write(line.expandtabs(self.tabsize))
-        else:
-            self._write(line)
-        # end if
-    # end def write
-
-    def readline(self):
-        line = self.fpi.readline()
-        if line: self.lineno = self.lineno + 1
-        # end if
-        return line
-    # end def readline
-
-    def error(self, fmt, *args):
-        if args: fmt = fmt % args
-        # end if
-        sys.stderr.write('Error at line %d: %s\n' % (self.lineno, fmt))
-        self.write('### %s ###\n' % fmt)
-    # end def error
-
-    def getline(self):
-        line = self.readline()
-        while line[-2:] == '\\\n':
-            line2 = self.readline()
-            if not line2: break
-            # end if
-            line = line + line2
-        # end while
-        return line
-    # end def getline
-
-    def putline(self, line, indent = None):
-        if indent is None:
-            self.write(line)
-            return
-        # end if
-        tabs, spaces = divmod(indent*self.indentsize, self.tabsize)
-        i = 0
-        m = self.wsprog.match(line)
-        if m: i = m.end()
-        # end if
-        self.write('\t'*tabs + ' '*spaces + line[i:])
-    # end def putline
-
-    def reformat(self):
-        stack = []
-        while 1:
-            line = self.getline()
-            if not line: break      # EOF
-            # end if
-            m = self.endprog.match(line)
-            if m:
-                kw = 'end'
-                kw2 = m.group('kw')
-                if not stack:
-                    self.error('unexpected end')
-                elif stack[-1][0] != kw2:
-                    self.error('unmatched end')
-                # end if
-                del stack[-1:]
-                self.putline(line, len(stack))
-                continue
-            # end if
-            m = self.kwprog.match(line)
-            if m:
-                kw = m.group('kw')
-                if kw in start:
-                    self.putline(line, len(stack))
-                    stack.append((kw, kw))
-                    continue
-                # end if
-                if next.has_key(kw) and stack:
-                    self.putline(line, len(stack)-1)
-                    kwa, kwb = stack[-1]
-                    stack[-1] = kwa, kw
-                    continue
-                # end if
-            # end if
-            self.putline(line, len(stack))
-        # end while
-        if stack:
-            self.error('unterminated keywords')
-            for kwa, kwb in stack:
-                self.write('\t%s\n' % kwa)
-            # end for
-        # end if
-    # end def reformat
-
-    def delete(self):
-        begin_counter = 0
-        end_counter = 0
-        while 1:
-            line = self.getline()
-            if not line: break      # EOF
-            # end if
-            m = self.endprog.match(line)
-            if m:
-                end_counter = end_counter + 1
-                continue
-            # end if
-            m = self.kwprog.match(line)
-            if m:
-                kw = m.group('kw')
-                if kw in start:
-                    begin_counter = begin_counter + 1
-                # end if
-            # end if
-            self.putline(line)
-        # end while
-        if begin_counter - end_counter < 0:
-            sys.stderr.write('Warning: input contained more end tags than expected\n')
-        elif begin_counter - end_counter > 0:
-            sys.stderr.write('Warning: input contained less end tags than expected\n')
-        # end if
-    # end def delete
-
-    def complete(self):
-        self.indentsize = 1
-        stack = []
-        todo = []
-        thisid = ''
-        current, firstkw, lastkw, topid = 0, '', '', ''
-        while 1:
-            line = self.getline()
-            i = 0
-            m = self.wsprog.match(line)
-            if m: i = m.end()
-            # end if
-            m = self.endprog.match(line)
-            if m:
-                thiskw = 'end'
-                endkw = m.group('kw')
-                thisid = m.group('id')
-            else:
-                m = self.kwprog.match(line)
-                if m:
-                    thiskw = m.group('kw')
-                    if not next.has_key(thiskw):
-                        thiskw = ''
-                    # end if
-                    if thiskw in ('def', 'class'):
-                        thisid = m.group('id')
-                    else:
-                        thisid = ''
-                    # end if
-                elif line[i:i+1] in ('\n', '#'):
-                    todo.append(line)
-                    continue
-                else:
-                    thiskw = ''
-                # end if
-            # end if
-            indent = len(line[:i].expandtabs(self.tabsize))
-            while indent < current:
-                if firstkw:
-                    if topid:
-                        s = '# end %s %s\n' % (
-                                firstkw, topid)
-                    else:
-                        s = '# end %s\n' % firstkw
-                    # end if
-                    self.putline(s, current)
-                    firstkw = lastkw = ''
-                # end if
-                current, firstkw, lastkw, topid = stack[-1]
-                del stack[-1]
-            # end while
-            if indent == current and firstkw:
-                if thiskw == 'end':
-                    if endkw != firstkw:
-                        self.error('mismatched end')
-                    # end if
-                    firstkw = lastkw = ''
-                elif not thiskw or thiskw in start:
-                    if topid:
-                        s = '# end %s %s\n' % (
-                                firstkw, topid)
-                    else:
-                        s = '# end %s\n' % firstkw
-                    # end if
-                    self.putline(s, current)
-                    firstkw = lastkw = topid = ''
-                # end if
-            # end if
-            if indent > current:
-                stack.append((current, firstkw, lastkw, topid))
-                if thiskw and thiskw not in start:
-                    # error
-                    thiskw = ''
-                # end if
-                current, firstkw, lastkw, topid = \
-                         indent, thiskw, thiskw, thisid
-            # end if
-            if thiskw:
-                if thiskw in start:
-                    firstkw = lastkw = thiskw
-                    topid = thisid
-                else:
-                    lastkw = thiskw
-                # end if
-            # end if
-            for l in todo: self.write(l)
-            # end for
-            todo = []
-            if not line: break
-            # end if
-            self.write(line)
-        # end while
-    # end def complete
-
-# end class PythonIndenter
-
-# Simplified user interface
-# - xxx_filter(input, output): read and write file objects
-# - xxx_string(s): take and return string object
-# - xxx_file(filename): process file in place, return true iff changed
-
-def complete_filter(input = sys.stdin, output = sys.stdout,
-                    stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS):
-    pi = PythonIndenter(input, output, stepsize, tabsize, expandtabs)
-    pi.complete()
-# end def complete_filter
-
-def delete_filter(input= sys.stdin, output = sys.stdout,
-                        stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS):
-    pi = PythonIndenter(input, output, stepsize, tabsize, expandtabs)
-    pi.delete()
-# end def delete_filter
-
-def reformat_filter(input = sys.stdin, output = sys.stdout,
-                    stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS):
-    pi = PythonIndenter(input, output, stepsize, tabsize, expandtabs)
-    pi.reformat()
-# end def reformat_filter
-
-class StringReader:
-    def __init__(self, buf):
-        self.buf = buf
-        self.pos = 0
-        self.len = len(self.buf)
-    # end def __init__
-    def read(self, n = 0):
-        if n <= 0:
-            n = self.len - self.pos
-        else:
-            n = min(n, self.len - self.pos)
-        # end if
-        r = self.buf[self.pos : self.pos + n]
-        self.pos = self.pos + n
-        return r
-    # end def read
-    def readline(self):
-        i = self.buf.find('\n', self.pos)
-        return self.read(i + 1 - self.pos)
-    # end def readline
-    def readlines(self):
-        lines = []
-        line = self.readline()
-        while line:
-            lines.append(line)
-            line = self.readline()
-        # end while
-        return lines
-    # end def readlines
-    # seek/tell etc. are left as an exercise for the reader
-# end class StringReader
-
-class StringWriter:
-    def __init__(self):
-        self.buf = ''
-    # end def __init__
-    def write(self, s):
-        self.buf = self.buf + s
-    # end def write
-    def getvalue(self):
-        return self.buf
-    # end def getvalue
-# end class StringWriter
-
-def complete_string(source, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS):
-    input = StringReader(source)
-    output = StringWriter()
-    pi = PythonIndenter(input, output, stepsize, tabsize, expandtabs)
-    pi.complete()
-    return output.getvalue()
-# end def complete_string
-
-def delete_string(source, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS):
-    input = StringReader(source)
-    output = StringWriter()
-    pi = PythonIndenter(input, output, stepsize, tabsize, expandtabs)
-    pi.delete()
-    return output.getvalue()
-# end def delete_string
-
-def reformat_string(source, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS):
-    input = StringReader(source)
-    output = StringWriter()
-    pi = PythonIndenter(input, output, stepsize, tabsize, expandtabs)
-    pi.reformat()
-    return output.getvalue()
-# end def reformat_string
-
-def complete_file(filename, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS):
-    source = open(filename, 'r').read()
-    result = complete_string(source, stepsize, tabsize, expandtabs)
-    if source == result: return 0
-    # end if
-    import os
-    try: os.rename(filename, filename + '~')
-    except os.error: pass
-    # end try
-    f = open(filename, 'w')
-    f.write(result)
-    f.close()
-    return 1
-# end def complete_file
-
-def delete_file(filename, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS):
-    source = open(filename, 'r').read()
-    result = delete_string(source, stepsize, tabsize, expandtabs)
-    if source == result: return 0
-    # end if
-    import os
-    try: os.rename(filename, filename + '~')
-    except os.error: pass
-    # end try
-    f = open(filename, 'w')
-    f.write(result)
-    f.close()
-    return 1
-# end def delete_file
-
-def reformat_file(filename, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS):
-    source = open(filename, 'r').read()
-    result = reformat_string(source, stepsize, tabsize, expandtabs)
-    if source == result: return 0
-    # end if
-    import os
-    try: os.rename(filename, filename + '~')
-    except os.error: pass
-    # end try
-    f = open(filename, 'w')
-    f.write(result)
-    f.close()
-    return 1
-# end def reformat_file
-
-# Test program when called as a script
-
-usage = """
-usage: pindent (-c|-d|-r) [-s stepsize] [-t tabsize] [-e] [file] ...
--c         : complete a correctly indented program (add #end directives)
--d         : delete #end directives
--r         : reformat a completed program (use #end directives)
--s stepsize: indentation step (default %(STEPSIZE)d)
--t tabsize : the worth in spaces of a tab (default %(TABSIZE)d)
--e         : expand TABs into spaces (defailt OFF)
-[file] ... : files are changed in place, with backups in file~
-If no files are specified or a single - is given,
-the program acts as a filter (reads stdin, writes stdout).
-""" % vars()
-
-def error_both(op1, op2):
-    sys.stderr.write('Error: You can not specify both '+op1+' and -'+op2[0]+' at the same time\n')
-    sys.stderr.write(usage)
-    sys.exit(2)
-# end def error_both
-
-def test():
-    import getopt
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'cdrs:t:e')
-    except getopt.error, msg:
-        sys.stderr.write('Error: %s\n' % msg)
-        sys.stderr.write(usage)
-        sys.exit(2)
-    # end try
-    action = None
-    stepsize = STEPSIZE
-    tabsize = TABSIZE
-    expandtabs = EXPANDTABS
-    for o, a in opts:
-        if o == '-c':
-            if action: error_both(o, action)
-            # end if
-            action = 'complete'
-        elif o == '-d':
-            if action: error_both(o, action)
-            # end if
-            action = 'delete'
-        elif o == '-r':
-            if action: error_both(o, action)
-            # end if
-            action = 'reformat'
-        elif o == '-s':
-            stepsize = int(a)
-        elif o == '-t':
-            tabsize = int(a)
-        elif o == '-e':
-            expandtabs = 1
-        # end if
-    # end for
-    if not action:
-        sys.stderr.write(
-                'You must specify -c(omplete), -d(elete) or -r(eformat)\n')
-        sys.stderr.write(usage)
-        sys.exit(2)
-    # end if
-    if not args or args == ['-']:
-        action = eval(action + '_filter')
-        action(sys.stdin, sys.stdout, stepsize, tabsize, expandtabs)
-    else:
-        action = eval(action + '_file')
-        for filename in args:
-            action(filename, stepsize, tabsize, expandtabs)
-        # end for
-    # end if
-# end def test
-
-if __name__ == '__main__':
-    test()
-# end if
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ptags.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ptags.py
deleted file mode 100644
index 9626b71..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/ptags.py
+++ /dev/null
@@ -1,53 +0,0 @@
-#! /usr/bin/env python
-
-# ptags
-#
-# Create a tags file for Python programs, usable with vi.
-# Tagged are:
-# - functions (even inside other defs or classes)
-# - classes
-# - filenames
-# Warns about files it cannot open.
-# No warnings about duplicate tags.
-
-import sys, re, os
-
-tags = []    # Modified global variable!
-
-def main():
-    args = sys.argv[1:]
-    for filename in args:
-        treat_file(filename)
-    if tags:
-        fp = open('tags', 'w')
-        tags.sort()
-        for s in tags: fp.write(s)
-
-
-expr = '^[ \t]*(def|class)[ \t]+([a-zA-Z0-9_]+)[ \t]*[:\(]'
-matcher = re.compile(expr)
-
-def treat_file(filename):
-    try:
-        fp = open(filename, 'r')
-    except:
-        sys.stderr.write('Cannot open %s\n' % filename)
-        return
-    base = os.path.basename(filename)
-    if base[-3:] == '.py':
-        base = base[:-3]
-    s = base + '\t' + filename + '\t' + '1\n'
-    tags.append(s)
-    while 1:
-        line = fp.readline()
-        if not line:
-            break
-        m = matcher.match(line)
-        if m:
-            content = m.group(0)
-            name = m.group(2)
-            s = name + '\t' + filename + '\t/^' + content + '/\n'
-            tags.append(s)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pydoc b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pydoc
deleted file mode 100644
index a592ce7..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pydoc
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env python
-
-import pydoc
-if __name__ == '__main__':
-    pydoc.cli()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pydocgui.pyw b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pydocgui.pyw
deleted file mode 100644
index 8a20567..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pydocgui.pyw
+++ /dev/null
@@ -1,7 +0,0 @@
-# Note:  this file must not be named pydoc.pyw, lest it just end up
-# importing itself (Python began allowing import of .pyw files
-# between 2.2a1 and 2.2a2).
-import pydoc
-
-if __name__ == '__main__':
-   pydoc.gui()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pysource.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pysource.py
deleted file mode 100644
index 2fd3d88..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/pysource.py
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/env python
-
-"""\
-List python source files.
-
-There are three functions to check whether a file is a Python source, listed
-here with increasing complexity:
-
-- has_python_ext() checks whether a file name ends in '.py[w]'.
-- look_like_python() checks whether the file is not binary and either has
-  the '.py[w]' extension or the first line contains the word 'python'.
-- can_be_compiled() checks whether the file can be compiled by compile().
-
-The file also must be of appropriate size - not bigger than a megabyte.
-
-walk_python_files() recursively lists all Python files under the given directories.
-"""
-__author__ = "Oleg Broytmann, Georg Brandl"
-
-__all__ = ["has_python_ext", "looks_like_python", "can_be_compiled", "walk_python_files"]
-
-
-import os, re
-
-binary_re = re.compile('[\x00-\x08\x0E-\x1F\x7F]')
-
-debug = False
-
-def print_debug(msg):
-    if debug: print msg
-
-
-def _open(fullpath):
-    try:
-        size = os.stat(fullpath).st_size
-    except OSError, err: # Permission denied - ignore the file
-        print_debug("%s: permission denied: %s" % (fullpath, err))
-        return None
-
-    if size > 1024*1024: # too big
-        print_debug("%s: the file is too big: %d bytes" % (fullpath, size))
-        return None
-
-    try:
-        return open(fullpath, 'rU')
-    except IOError, err: # Access denied, or a special file - ignore it
-        print_debug("%s: access denied: %s" % (fullpath, err))
-        return None
-
-def has_python_ext(fullpath):
-    return fullpath.endswith(".py") or fullpath.endswith(".pyw")
-
-def looks_like_python(fullpath):
-    infile = _open(fullpath)
-    if infile is None:
-        return False
-
-    line = infile.readline()
-    infile.close()
-
-    if binary_re.search(line):
-        # file appears to be binary
-        print_debug("%s: appears to be binary" % fullpath)
-        return False
-
-    if fullpath.endswith(".py") or fullpath.endswith(".pyw"):
-        return True
-    elif "python" in line:
-        # disguised Python script (e.g. CGI)
-        return True
-
-    return False
-
-def can_be_compiled(fullpath):
-    infile = _open(fullpath)
-    if infile is None:
-        return False
-
-    code = infile.read()
-    infile.close()
-
-    try:
-        compile(code, fullpath, "exec")
-    except Exception, err:
-        print_debug("%s: cannot compile: %s" % (fullpath, err))
-        return False
-
-    return True
-
-
-def walk_python_files(paths, is_python=looks_like_python, exclude_dirs=None):
-    """\
-    Recursively yield all Python source files below the given paths.
-
-    paths: a list of files and/or directories to be checked.
-    is_python: a function that takes a file name and checks whether it is a
-               Python source file
-    exclude_dirs: a list of directory base names that should be excluded in
-                  the search
-    """
-    if exclude_dirs is None:
-        exclude_dirs=[]
-
-    for path in paths:
-        print_debug("testing: %s" % path)
-        if os.path.isfile(path):
-            if is_python(path):
-                yield path
-        elif os.path.isdir(path):
-            print_debug("    it is a directory")
-            for dirpath, dirnames, filenames in os.walk(path):
-                for exclude in exclude_dirs:
-                    if exclude in dirnames:
-                        dirnames.remove(exclude)
-                for filename in filenames:
-                    fullpath = os.path.join(dirpath, filename)
-                    print_debug("testing: %s" % fullpath)
-                    if is_python(fullpath):
-                        yield fullpath
-        else:
-            print_debug("    unknown type")
-
-
-if __name__ == "__main__":
-    # Two simple examples/tests
-    for fullpath in walk_python_files(['.']):
-        print fullpath
-    print "----------"
-    for fullpath in walk_python_files(['.'], is_python=can_be_compiled):
-        print fullpath
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/redemo.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/redemo.py
deleted file mode 100644
index 30a1bda..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/redemo.py
+++ /dev/null
@@ -1,171 +0,0 @@
-"""Basic regular expression demostration facility (Perl style syntax)."""
-
-from Tkinter import *
-import re
-
-class ReDemo:
-
-    def __init__(self, master):
-        self.master = master
-
-        self.promptdisplay = Label(self.master, anchor=W,
-                text="Enter a Perl-style regular expression:")
-        self.promptdisplay.pack(side=TOP, fill=X)
-
-        self.regexdisplay = Entry(self.master)
-        self.regexdisplay.pack(fill=X)
-        self.regexdisplay.focus_set()
-
-        self.addoptions()
-
-        self.statusdisplay = Label(self.master, text="", anchor=W)
-        self.statusdisplay.pack(side=TOP, fill=X)
-
-        self.labeldisplay = Label(self.master, anchor=W,
-                text="Enter a string to search:")
-        self.labeldisplay.pack(fill=X)
-        self.labeldisplay.pack(fill=X)
-
-        self.showframe = Frame(master)
-        self.showframe.pack(fill=X, anchor=W)
-
-        self.showvar = StringVar(master)
-        self.showvar.set("first")
-
-        self.showfirstradio = Radiobutton(self.showframe,
-                                         text="Highlight first match",
-                                          variable=self.showvar,
-                                          value="first",
-                                          command=self.recompile)
-        self.showfirstradio.pack(side=LEFT)
-
-        self.showallradio = Radiobutton(self.showframe,
-                                        text="Highlight all matches",
-                                        variable=self.showvar,
-                                        value="all",
-                                        command=self.recompile)
-        self.showallradio.pack(side=LEFT)
-
-        self.stringdisplay = Text(self.master, width=60, height=4)
-        self.stringdisplay.pack(fill=BOTH, expand=1)
-        self.stringdisplay.tag_configure("hit", background="yellow")
-
-        self.grouplabel = Label(self.master, text="Groups:", anchor=W)
-        self.grouplabel.pack(fill=X)
-
-        self.grouplist = Listbox(self.master)
-        self.grouplist.pack(expand=1, fill=BOTH)
-
-        self.regexdisplay.bind('<Key>', self.recompile)
-        self.stringdisplay.bind('<Key>', self.reevaluate)
-
-        self.compiled = None
-        self.recompile()
-
-        btags = self.regexdisplay.bindtags()
-        self.regexdisplay.bindtags(btags[1:] + btags[:1])
-
-        btags = self.stringdisplay.bindtags()
-        self.stringdisplay.bindtags(btags[1:] + btags[:1])
-
-    def addoptions(self):
-        self.frames = []
-        self.boxes = []
-        self.vars = []
-        for name in ('IGNORECASE',
-                     'LOCALE',
-                     'MULTILINE',
-                     'DOTALL',
-                     'VERBOSE'):
-            if len(self.boxes) % 3 == 0:
-                frame = Frame(self.master)
-                frame.pack(fill=X)
-                self.frames.append(frame)
-            val = getattr(re, name)
-            var = IntVar()
-            box = Checkbutton(frame,
-                    variable=var, text=name,
-                    offvalue=0, onvalue=val,
-                    command=self.recompile)
-            box.pack(side=LEFT)
-            self.boxes.append(box)
-            self.vars.append(var)
-
-    def getflags(self):
-        flags = 0
-        for var in self.vars:
-            flags = flags | var.get()
-        flags = flags
-        return flags
-
-    def recompile(self, event=None):
-        try:
-            self.compiled = re.compile(self.regexdisplay.get(),
-                                       self.getflags())
-            bg = self.promptdisplay['background']
-            self.statusdisplay.config(text="", background=bg)
-        except re.error, msg:
-            self.compiled = None
-            self.statusdisplay.config(
-                    text="re.error: %s" % str(msg),
-                    background="red")
-        self.reevaluate()
-
-    def reevaluate(self, event=None):
-        try:
-            self.stringdisplay.tag_remove("hit", "1.0", END)
-        except TclError:
-            pass
-        try:
-            self.stringdisplay.tag_remove("hit0", "1.0", END)
-        except TclError:
-            pass
-        self.grouplist.delete(0, END)
-        if not self.compiled:
-            return
-        self.stringdisplay.tag_configure("hit", background="yellow")
-        self.stringdisplay.tag_configure("hit0", background="orange")
-        text = self.stringdisplay.get("1.0", END)
-        last = 0
-        nmatches = 0
-        while last <= len(text):
-            m = self.compiled.search(text, last)
-            if m is None:
-                break
-            first, last = m.span()
-            if last == first:
-                last = first+1
-                tag = "hit0"
-            else:
-                tag = "hit"
-            pfirst = "1.0 + %d chars" % first
-            plast = "1.0 + %d chars" % last
-            self.stringdisplay.tag_add(tag, pfirst, plast)
-            if nmatches == 0:
-                self.stringdisplay.yview_pickplace(pfirst)
-                groups = list(m.groups())
-                groups.insert(0, m.group())
-                for i in range(len(groups)):
-                    g = "%2d: %r" % (i, groups[i])
-                    self.grouplist.insert(END, g)
-            nmatches = nmatches + 1
-            if self.showvar.get() == "first":
-                break
-
-        if nmatches == 0:
-            self.statusdisplay.config(text="(no match)",
-                                      background="yellow")
-        else:
-            self.statusdisplay.config(text="")
-
-
-# Main function, run when invoked as a stand-alone Python program.
-
-def main():
-    root = Tk()
-    demo = ReDemo(root)
-    root.protocol('WM_DELETE_WINDOW', root.quit)
-    root.mainloop()
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/reindent-rst.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/reindent-rst.py
deleted file mode 100644
index 037f045..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/reindent-rst.py
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env python
-
-# Make a reST file compliant to our pre-commit hook.
-# Currently just remove trailing whitespace.
-
-import sys
-
-import patchcheck
-
-def main(argv=sys.argv):
-    patchcheck.normalize_docs_whitespace(argv[1:])
-
-if __name__ == '__main__':
-    sys.exit(main())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/reindent.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/reindent.py
deleted file mode 100644
index f070362..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/reindent.py
+++ /dev/null
@@ -1,304 +0,0 @@
-#! /usr/bin/env python
-
-# Released to the public domain, by Tim Peters, 03 October 2000.
-
-"""reindent [-d][-r][-v] [ path ... ]
-
--d (--dryrun)   Dry run.   Analyze, but don't make any changes to, files.
--r (--recurse)  Recurse.   Search for all .py files in subdirectories too.
--n (--nobackup) No backup. Does not make a ".bak" file before reindenting.
--v (--verbose)  Verbose.   Print informative msgs; else no output.
--h (--help)     Help.      Print this usage information and exit.
-
-Change Python (.py) files to use 4-space indents and no hard tab characters.
-Also trim excess spaces and tabs from ends of lines, and remove empty lines
-at the end of files.  Also ensure the last line ends with a newline.
-
-If no paths are given on the command line, reindent operates as a filter,
-reading a single source file from standard input and writing the transformed
-source to standard output.  In this case, the -d, -r and -v flags are
-ignored.
-
-You can pass one or more file and/or directory paths.  When a directory
-path, all .py files within the directory will be examined, and, if the -r
-option is given, likewise recursively for subdirectories.
-
-If output is not to standard output, reindent overwrites files in place,
-renaming the originals with a .bak extension.  If it finds nothing to
-change, the file is left alone.  If reindent does change a file, the changed
-file is a fixed-point for future runs (i.e., running reindent on the
-resulting .py file won't change it again).
-
-The hard part of reindenting is figuring out what to do with comment
-lines.  So long as the input files get a clean bill of health from
-tabnanny.py, reindent should do a good job.
-
-The backup file is a copy of the one that is being reindented. The ".bak"
-file is generated with shutil.copy(), but some corner cases regarding
-user/group and permissions could leave the backup file more readable that
-you'd prefer. You can always use the --nobackup option to prevent this.
-"""
-
-__version__ = "1"
-
-import tokenize
-import os, shutil
-import sys
-
-verbose    = 0
-recurse    = 0
-dryrun     = 0
-makebackup = True
-
-def usage(msg=None):
-    if msg is not None:
-        print >> sys.stderr, msg
-    print >> sys.stderr, __doc__
-
-def errprint(*args):
-    sep = ""
-    for arg in args:
-        sys.stderr.write(sep + str(arg))
-        sep = " "
-    sys.stderr.write("\n")
-
-def main():
-    import getopt
-    global verbose, recurse, dryrun, makebackup
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "drnvh",
-                        ["dryrun", "recurse", "nobackup", "verbose", "help"])
-    except getopt.error, msg:
-        usage(msg)
-        return
-    for o, a in opts:
-        if o in ('-d', '--dryrun'):
-            dryrun += 1
-        elif o in ('-r', '--recurse'):
-            recurse += 1
-        elif o in ('-n', '--nobackup'):
-            makebackup = False
-        elif o in ('-v', '--verbose'):
-            verbose += 1
-        elif o in ('-h', '--help'):
-            usage()
-            return
-    if not args:
-        r = Reindenter(sys.stdin)
-        r.run()
-        r.write(sys.stdout)
-        return
-    for arg in args:
-        check(arg)
-
-def check(file):
-    if os.path.isdir(file) and not os.path.islink(file):
-        if verbose:
-            print "listing directory", file
-        names = os.listdir(file)
-        for name in names:
-            fullname = os.path.join(file, name)
-            if ((recurse and os.path.isdir(fullname) and
-                 not os.path.islink(fullname) and
-                 not os.path.split(fullname)[1].startswith("."))
-                or name.lower().endswith(".py")):
-                check(fullname)
-        return
-
-    if verbose:
-        print "checking", file, "...",
-    try:
-        f = open(file)
-    except IOError, msg:
-        errprint("%s: I/O Error: %s" % (file, str(msg)))
-        return
-
-    r = Reindenter(f)
-    f.close()
-    if r.run():
-        if verbose:
-            print "changed."
-            if dryrun:
-                print "But this is a dry run, so leaving it alone."
-        if not dryrun:
-            bak = file + ".bak"
-            if makebackup:
-                shutil.copyfile(file, bak)
-                if verbose:
-                    print "backed up", file, "to", bak
-            f = open(file, "w")
-            r.write(f)
-            f.close()
-            if verbose:
-                print "wrote new", file
-        return True
-    else:
-        if verbose:
-            print "unchanged."
-        return False
-
-def _rstrip(line, JUNK='\n \t'):
-    """Return line stripped of trailing spaces, tabs, newlines.
-
-    Note that line.rstrip() instead also strips sundry control characters,
-    but at least one known Emacs user expects to keep junk like that, not
-    mentioning Barry by name or anything <wink>.
-    """
-
-    i = len(line)
-    while i > 0 and line[i-1] in JUNK:
-        i -= 1
-    return line[:i]
-
-class Reindenter:
-
-    def __init__(self, f):
-        self.find_stmt = 1  # next token begins a fresh stmt?
-        self.level = 0      # current indent level
-
-        # Raw file lines.
-        self.raw = f.readlines()
-
-        # File lines, rstripped & tab-expanded.  Dummy at start is so
-        # that we can use tokenize's 1-based line numbering easily.
-        # Note that a line is all-blank iff it's "\n".
-        self.lines = [_rstrip(line).expandtabs() + "\n"
-                      for line in self.raw]
-        self.lines.insert(0, None)
-        self.index = 1  # index into self.lines of next line
-
-        # List of (lineno, indentlevel) pairs, one for each stmt and
-        # comment line.  indentlevel is -1 for comment lines, as a
-        # signal that tokenize doesn't know what to do about them;
-        # indeed, they're our headache!
-        self.stats = []
-
-    def run(self):
-        tokenize.tokenize(self.getline, self.tokeneater)
-        # Remove trailing empty lines.
-        lines = self.lines
-        while lines and lines[-1] == "\n":
-            lines.pop()
-        # Sentinel.
-        stats = self.stats
-        stats.append((len(lines), 0))
-        # Map count of leading spaces to # we want.
-        have2want = {}
-        # Program after transformation.
-        after = self.after = []
-        # Copy over initial empty lines -- there's nothing to do until
-        # we see a line with *something* on it.
-        i = stats[0][0]
-        after.extend(lines[1:i])
-        for i in range(len(stats)-1):
-            thisstmt, thislevel = stats[i]
-            nextstmt = stats[i+1][0]
-            have = getlspace(lines[thisstmt])
-            want = thislevel * 4
-            if want < 0:
-                # A comment line.
-                if have:
-                    # An indented comment line.  If we saw the same
-                    # indentation before, reuse what it most recently
-                    # mapped to.
-                    want = have2want.get(have, -1)
-                    if want < 0:
-                        # Then it probably belongs to the next real stmt.
-                        for j in xrange(i+1, len(stats)-1):
-                            jline, jlevel = stats[j]
-                            if jlevel >= 0:
-                                if have == getlspace(lines[jline]):
-                                    want = jlevel * 4
-                                break
-                    if want < 0:           # Maybe it's a hanging
-                                           # comment like this one,
-                        # in which case we should shift it like its base
-                        # line got shifted.
-                        for j in xrange(i-1, -1, -1):
-                            jline, jlevel = stats[j]
-                            if jlevel >= 0:
-                                want = have + getlspace(after[jline-1]) - \
-                                       getlspace(lines[jline])
-                                break
-                    if want < 0:
-                        # Still no luck -- leave it alone.
-                        want = have
-                else:
-                    want = 0
-            assert want >= 0
-            have2want[have] = want
-            diff = want - have
-            if diff == 0 or have == 0:
-                after.extend(lines[thisstmt:nextstmt])
-            else:
-                for line in lines[thisstmt:nextstmt]:
-                    if diff > 0:
-                        if line == "\n":
-                            after.append(line)
-                        else:
-                            after.append(" " * diff + line)
-                    else:
-                        remove = min(getlspace(line), -diff)
-                        after.append(line[remove:])
-        return self.raw != self.after
-
-    def write(self, f):
-        f.writelines(self.after)
-
-    # Line-getter for tokenize.
-    def getline(self):
-        if self.index >= len(self.lines):
-            line = ""
-        else:
-            line = self.lines[self.index]
-            self.index += 1
-        return line
-
-    # Line-eater for tokenize.
-    def tokeneater(self, type, token, (sline, scol), end, line,
-                   INDENT=tokenize.INDENT,
-                   DEDENT=tokenize.DEDENT,
-                   NEWLINE=tokenize.NEWLINE,
-                   COMMENT=tokenize.COMMENT,
-                   NL=tokenize.NL):
-
-        if type == NEWLINE:
-            # A program statement, or ENDMARKER, will eventually follow,
-            # after some (possibly empty) run of tokens of the form
-            #     (NL | COMMENT)* (INDENT | DEDENT+)?
-            self.find_stmt = 1
-
-        elif type == INDENT:
-            self.find_stmt = 1
-            self.level += 1
-
-        elif type == DEDENT:
-            self.find_stmt = 1
-            self.level -= 1
-
-        elif type == COMMENT:
-            if self.find_stmt:
-                self.stats.append((sline, -1))
-                # but we're still looking for a new stmt, so leave
-                # find_stmt alone
-
-        elif type == NL:
-            pass
-
-        elif self.find_stmt:
-            # This is the first "real token" following a NEWLINE, so it
-            # must be the first token of the next program statement, or an
-            # ENDMARKER.
-            self.find_stmt = 0
-            if line:   # not endmarker
-                self.stats.append((sline, self.level))
-
-# Count number of leading blanks.
-def getlspace(line):
-    i, n = 0, len(line)
-    while i < n and line[i] == " ":
-        i += 1
-    return i
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/rgrep.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/rgrep.py
deleted file mode 100644
index ef06039..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/rgrep.py
+++ /dev/null
@@ -1,64 +0,0 @@
-#! /usr/bin/env python
-
-"""Reverse grep.
-
-Usage: rgrep [-i] pattern file
-"""
-
-import sys
-import re
-import getopt
-
-def main():
-    bufsize = 64*1024
-    reflags = 0
-    opts, args = getopt.getopt(sys.argv[1:], "i")
-    for o, a in opts:
-        if o == '-i':
-            reflags = reflags | re.IGNORECASE
-    if len(args) < 2:
-        usage("not enough arguments")
-    if len(args) > 2:
-        usage("exactly one file argument required")
-    pattern, filename = args
-    try:
-        prog = re.compile(pattern, reflags)
-    except re.error, msg:
-        usage("error in regular expression: %s" % str(msg))
-    try:
-        f = open(filename)
-    except IOError, msg:
-        usage("can't open %s: %s" % (repr(filename), str(msg)), 1)
-    f.seek(0, 2)
-    pos = f.tell()
-    leftover = None
-    while pos > 0:
-        size = min(pos, bufsize)
-        pos = pos - size
-        f.seek(pos)
-        buffer = f.read(size)
-        lines = buffer.split("\n")
-        del buffer
-        if leftover is None:
-            if not lines[-1]:
-                del lines[-1]
-        else:
-            lines[-1] = lines[-1] + leftover
-        if pos > 0:
-            leftover = lines[0]
-            del lines[0]
-        else:
-            leftover = None
-        lines.reverse()
-        for line in lines:
-            if prog.search(line):
-                print line
-
-def usage(msg, code=2):
-    sys.stdout = sys.stderr
-    print msg
-    print __doc__
-    sys.exit(code)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/serve.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/serve.py
deleted file mode 100644
index 0139263..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/serve.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env python
-'''
-Small wsgiref based web server. Takes a path to serve from and an
-optional port number (defaults to 8000), then tries to serve files.
-Mime types are guessed from the file names, 404 errors are thrown
-if the file is not found. Used for the make serve target in Doc.
-'''
-import sys
-import os
-import mimetypes
-from wsgiref import simple_server, util
-
-def app(environ, respond):
-
-    fn = os.path.join(path, environ['PATH_INFO'][1:])
-    if '.' not in fn.split(os.path.sep)[-1]:
-        fn = os.path.join(fn, 'index.html')
-    type = mimetypes.guess_type(fn)[0]
-
-    if os.path.exists(fn):
-        respond('200 OK', [('Content-Type', type)])
-        return util.FileWrapper(open(fn))
-    else:
-        respond('404 Not Found', [('Content-Type', 'text/plain')])
-        return ['not found']
-
-if __name__ == '__main__':
-    path = sys.argv[1]
-    port = int(sys.argv[2]) if len(sys.argv) > 2 else 8000
-    httpd = simple_server.make_server('', port, app)
-    print "Serving %s on port %s, control-C to stop" % (path, port)
-    try:
-        httpd.serve_forever()
-    except KeyboardInterrupt:
-        print "\b\bShutting down."
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/setup.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/setup.py
deleted file mode 100644
index 6cc6a8c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/setup.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from distutils.core import setup
-
-if __name__ == '__main__':
-    setup(
-      scripts=[
-        'byteyears.py',
-        'checkpyc.py',
-        'copytime.py',
-        'crlf.py',
-        'dutree.py',
-        'ftpmirror.py',
-        'h2py.py',
-        'lfcr.py',
-        '../i18n/pygettext.py',
-        'logmerge.py',
-        '../../Lib/tabnanny.py',
-        '../../Lib/timeit.py',
-        'untabify.py',
-        ],
-      )
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/suff.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/suff.py
deleted file mode 100644
index 599a971..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/suff.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#! /usr/bin/env python
-
-# suff
-#
-# show different suffixes amongst arguments
-
-import sys
-
-def main():
-    files = sys.argv[1:]
-    suffixes = {}
-    for filename in files:
-        suff = getsuffix(filename)
-        if not suffixes.has_key(suff):
-            suffixes[suff] = []
-        suffixes[suff].append(filename)
-    keys = suffixes.keys()
-    keys.sort()
-    for suff in keys:
-        print repr(suff), len(suffixes[suff])
-
-def getsuffix(filename):
-    suff = ''
-    for i in range(len(filename)):
-        if filename[i] == '.':
-            suff = filename[i:]
-    return suff
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/svneol.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/svneol.py
deleted file mode 100644
index 6a32814..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/svneol.py
+++ /dev/null
@@ -1,91 +0,0 @@
-#! /usr/bin/env python
-
-"""
-SVN helper script.
-
-Try to set the svn:eol-style property to "native" on every .py, .txt, .c and
-.h file in the directory tree rooted at the current directory.
-
-Files with the svn:eol-style property already set (to anything) are skipped.
-
-svn will itself refuse to set this property on a file that's not under SVN
-control, or that has a binary mime-type property set.  This script inherits
-that behavior, and passes on whatever warning message the failing "svn
-propset" command produces.
-
-In the Python project, it's safe to invoke this script from the root of
-a checkout.
-
-No output is produced for files that are ignored.  For a file that gets
-svn:eol-style set, output looks like:
-
-    property 'svn:eol-style' set on 'Lib\ctypes\__init__.py'
-
-For a file not under version control:
-
-    svn: warning: 'patch-finalizer.txt' is not under version control
-
-and for a file with a binary mime-type property:
-
-    svn: File 'Lib\test\test_pep263.py' has binary mime type property
-"""
-
-import re
-import os
-
-def propfiles(root, fn):
-    default = os.path.join(root, ".svn", "props", fn+".svn-work")
-    try:
-        format = int(open(os.path.join(root, ".svn", "format")).read().strip())
-    except IOError:
-        return []
-    if format in (8, 9):
-        # In version 8 and 9, committed props are stored in prop-base, local
-        # modifications in props
-        return [os.path.join(root, ".svn", "prop-base", fn+".svn-base"),
-                os.path.join(root, ".svn", "props", fn+".svn-work")]
-    raise ValueError, "Unknown repository format"
-
-def proplist(root, fn):
-    "Return a list of property names for file fn in directory root"
-    result = []
-    for path in propfiles(root, fn):
-        try:
-            f = open(path)
-        except IOError:
-            # no properties file: not under version control,
-            # or no properties set
-            continue
-        while 1:
-            # key-value pairs, of the form
-            # K <length>
-            # <keyname>NL
-            # V length
-            # <value>NL
-            # END
-            line = f.readline()
-            if line.startswith("END"):
-                break
-            assert line.startswith("K ")
-            L = int(line.split()[1])
-            key = f.read(L)
-            result.append(key)
-            f.readline()
-            line = f.readline()
-            assert line.startswith("V ")
-            L = int(line.split()[1])
-            value = f.read(L)
-            f.readline()
-        f.close()
-    return result
-
-possible_text_file = re.compile(r"\.([hc]|py|txt|sln|vcproj)$").search
-
-for root, dirs, files in os.walk('.'):
-    if '.svn' in dirs:
-        dirs.remove('.svn')
-    for fn in files:
-        if possible_text_file(fn):
-            if 'svn:eol-style' not in proplist(root, fn):
-                path = os.path.join(root, fn)
-                os.system('svn propset svn:eol-style native "%s"' % path)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/texcheck.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/texcheck.py
deleted file mode 100644
index af36a37..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/texcheck.py
+++ /dev/null
@@ -1,233 +0,0 @@
-""" TeXcheck.py -- rough syntax checking on Python style LaTeX documents.
-
-   Written by Raymond D. Hettinger <python at rcn.com>
-   Copyright (c) 2003 Python Software Foundation.  All rights reserved.
-
-Designed to catch common markup errors including:
-* Unbalanced or mismatched parenthesis, brackets, and braces.
-* Unbalanced or mismatched \\begin and \\end blocks.
-* Misspelled or invalid LaTeX commands.
-* Use of forward slashes instead of backslashes for commands.
-* Table line size mismatches.
-
-Sample command line usage:
-    python texcheck.py -k chapterheading -m lib/librandomtex *.tex
-
-Options:
-    -m          Munge parenthesis and brackets. [0,n) would normally mismatch.
-    -k keyword: Keyword is a valid LaTeX command. Do not include the backslash.
-    -d:         Delimiter check only (useful for non-LaTeX files).
-    -h:         Help
-    -s lineno:  Start at lineno (useful for skipping complex sections).
-    -v:         Verbose.  Trace the matching of //begin and //end blocks.
-"""
-
-import re
-import sys
-import getopt
-from itertools import izip, count, islice
-import glob
-
-cmdstr = r"""
-    \section \module \declaremodule \modulesynopsis \moduleauthor
-    \sectionauthor \versionadded \code \class \method \begin
-    \optional \var \ref \end \subsection \lineiii \hline \label
-    \indexii \textrm \ldots \keyword \stindex \index \item \note
-    \withsubitem \ttindex \footnote \citetitle \samp \opindex
-    \noindent \exception \strong \dfn \ctype \obindex \character
-    \indexiii \function \bifuncindex \refmodule \refbimodindex
-    \subsubsection \nodename \member \chapter \emph \ASCII \UNIX
-    \regexp \program \production \token \productioncont \term
-    \grammartoken \lineii \seemodule \file \EOF \documentclass
-    \usepackage \title \input \maketitle \ifhtml \fi \url \Cpp
-    \tableofcontents \kbd \programopt \envvar \refstmodindex
-    \cfunction \constant \NULL \moreargs \cfuncline \cdata
-    \textasciicircum \n \ABC \setindexsubitem \versionchanged
-    \deprecated \seetext \newcommand \POSIX \pep \warning \rfc
-    \verbatiminput \methodline \textgreater \seetitle \lineiv
-    \funclineni \ulink \manpage \funcline \dataline \unspecified
-    \textbackslash \mimetype \mailheader \seepep \textunderscore
-    \longprogramopt \infinity \plusminus \shortversion \version
-    \refmodindex \seerfc \makeindex \makemodindex \renewcommand
-    \indexname \appendix \protect \indexiv \mbox \textasciitilde
-    \platform \seeurl \leftmargin \labelwidth \localmoduletable
-    \LaTeX \copyright \memberline \backslash \pi \centerline
-    \caption \vspace \textwidth \menuselection \textless
-    \makevar \csimplemacro \menuselection \bfcode \sub \release
-    \email \kwindex \refexmodindex \filenq \e \menuselection
-    \exindex \linev \newsgroup \verbatim \setshortversion
-    \author \authoraddress \paragraph \subparagraph \cmemberline
-    \textbar \C \seelink
-"""
-
-def matchclose(c_lineno, c_symbol, openers, pairmap):
-    "Verify that closing delimiter matches most recent opening delimiter"
-    try:
-        o_lineno, o_symbol = openers.pop()
-    except IndexError:
-        print "\nDelimiter mismatch.  On line %d, encountered closing '%s' without corresponding open" % (c_lineno, c_symbol)
-        return
-    if o_symbol in pairmap.get(c_symbol, [c_symbol]): return
-    print "\nOpener '%s' on line %d was not closed before encountering '%s' on line %d" % (o_symbol, o_lineno, c_symbol, c_lineno)
-    return
-
-def checkit(source, opts, morecmds=[]):
-    """Check the LaTeX formatting in a sequence of lines.
-
-    Opts is a mapping of options to option values if any:
-        -m          munge parenthesis and brackets
-        -d          delimiters only checking
-        -v          verbose trace of delimiter matching
-        -s lineno:  linenumber to start scan (default is 1).
-
-    Morecmds is a sequence of LaTeX commands (without backslashes) that
-    are to be considered valid in the scan.
-    """
-
-    texcmd = re.compile(r'\\[A-Za-z]+')
-    falsetexcmd = re.compile(r'\/([A-Za-z]+)') # Mismarked with forward slash
-
-    validcmds = set(cmdstr.split())
-    for cmd in morecmds:
-        validcmds.add('\\' + cmd)
-
-    if '-m' in opts:
-        pairmap = {']':'[(', ')':'(['}      # Munged openers
-    else:
-        pairmap = {']':'[', ')':'('}        # Normal opener for a given closer
-    openpunct = set('([')                   # Set of valid openers
-
-    delimiters = re.compile(r'\\(begin|end){([_a-zA-Z]+)}|([()\[\]])')
-    braces = re.compile(r'({)|(})')
-    doubledwords = re.compile(r'(\b[A-za-z]+\b) \b\1\b')
-    spacingmarkup = re.compile(r'\\(ABC|ASCII|C|Cpp|EOF|infinity|NULL|plusminus|POSIX|UNIX)\s')
-
-    openers = []                            # Stack of pending open delimiters
-    bracestack = []                         # Stack of pending open braces
-
-    tablestart = re.compile(r'\\begin{(?:long)?table([iv]+)}')
-    tableline = re.compile(r'\\line([iv]+){')
-    tableend = re.compile(r'\\end{(?:long)?table([iv]+)}')
-    tablelevel = ''
-    tablestartline = 0
-
-    startline = int(opts.get('-s', '1'))
-    lineno = 0
-
-    for lineno, line in izip(count(startline), islice(source, startline-1, None)):
-        line = line.rstrip()
-
-        # Check balancing of open/close parenthesis, brackets, and begin/end blocks
-        for begend, name, punct in delimiters.findall(line):
-            if '-v' in opts:
-                print lineno, '|', begend, name, punct,
-            if begend == 'begin' and '-d' not in opts:
-                openers.append((lineno, name))
-            elif punct in openpunct:
-                openers.append((lineno, punct))
-            elif begend == 'end' and '-d' not in opts:
-                matchclose(lineno, name, openers, pairmap)
-            elif punct in pairmap:
-                matchclose(lineno, punct, openers, pairmap)
-            if '-v' in opts:
-                print '   --> ', openers
-
-        # Balance opening and closing braces
-        for open, close in braces.findall(line):
-            if open == '{':
-                bracestack.append(lineno)
-            if close == '}':
-                try:
-                    bracestack.pop()
-                except IndexError:
-                    print r'Warning, unmatched } on line %s.' % (lineno,)
-
-        # Optionally, skip LaTeX specific checks
-        if '-d' in opts:
-            continue
-
-        # Warn whenever forward slashes encountered with a LaTeX command
-        for cmd in falsetexcmd.findall(line):
-            if '822' in line or '.html' in line:
-                continue    # Ignore false positives for urls and for /rfc822
-            if '\\' + cmd in validcmds:
-                print 'Warning, forward slash used on line %d with cmd: /%s' % (lineno, cmd)
-
-        # Check for markup requiring {} for correct spacing
-        for cmd in spacingmarkup.findall(line):
-            print r'Warning, \%s should be written as \%s{} on line %d' % (cmd, cmd, lineno)
-
-        # Validate commands
-        nc = line.find(r'\newcommand')
-        if nc != -1:
-            start = line.find('{', nc)
-            end = line.find('}', start)
-            validcmds.add(line[start+1:end])
-        for cmd in texcmd.findall(line):
-            if cmd not in validcmds:
-                print r'Warning, unknown tex cmd on line %d: \%s' % (lineno, cmd)
-
-        # Check table levels (make sure lineii only inside tableii)
-        m = tablestart.search(line)
-        if m:
-            tablelevel = m.group(1)
-            tablestartline = lineno
-        m = tableline.search(line)
-        if m and m.group(1) != tablelevel:
-            print r'Warning, \line%s on line %d does not match \table%s on line %d' % (m.group(1), lineno, tablelevel, tablestartline)
-        if tableend.search(line):
-            tablelevel = ''
-
-        # Style guide warnings
-        if 'e.g.' in line or 'i.e.' in line:
-            print r'Style warning, avoid use of i.e or e.g. on line %d' % (lineno,)
-
-        for dw in doubledwords.findall(line):
-            print r'Doubled word warning.  "%s" on line %d' % (dw, lineno)
-
-    lastline = lineno
-    for lineno, symbol in openers:
-        print "Unmatched open delimiter '%s' on line %d" % (symbol, lineno)
-    for lineno in bracestack:
-        print "Unmatched { on line %d" % (lineno,)
-    print 'Done checking %d lines.' % (lastline,)
-    return 0
-
-def main(args=None):
-    if args is None:
-        args = sys.argv[1:]
-    optitems, arglist = getopt.getopt(args, "k:mdhs:v")
-    opts = dict(optitems)
-    if '-h' in opts or args==[]:
-        print __doc__
-        return 0
-
-    if len(arglist) < 1:
-        print 'Please specify a file to be checked'
-        return 1
-
-    for i, filespec in enumerate(arglist):
-        if '*' in filespec or '?' in filespec:
-            arglist[i:i+1] = glob.glob(filespec)
-
-    morecmds = [v for k,v in optitems if k=='-k']
-    err = []
-
-    for filename in arglist:
-        print '=' * 30
-        print "Checking", filename
-        try:
-            f = open(filename)
-        except IOError:
-            print 'Cannot open file %s.' % arglist[0]
-            return 2
-
-        try:
-            err.append(checkit(f, opts, morecmds))
-        finally:
-            f.close()
-
-    return max(err)
-
-if __name__ == '__main__':
-    sys.exit(main())
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/texi2html.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/texi2html.py
deleted file mode 100644
index 9f65c38..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/texi2html.py
+++ /dev/null
@@ -1,2078 +0,0 @@
-#! /usr/bin/env python
-
-# Convert GNU texinfo files into HTML, one file per node.
-# Based on Texinfo 2.14.
-# Usage: texi2html [-d] [-d] [-c] inputfile outputdirectory
-# The input file must be a complete texinfo file, e.g. emacs.texi.
-# This creates many files (one per info node) in the output directory,
-# overwriting existing files of the same name.  All files created have
-# ".html" as their extension.
-
-
-# XXX To do:
-# - handle @comment*** correctly
-# - handle @xref {some words} correctly
-# - handle @ftable correctly (items aren't indexed?)
-# - handle @itemx properly
-# - handle @exdent properly
-# - add links directly to the proper line from indices
-# - check against the definitive list of @-cmds; we still miss (among others):
-# - @defindex (hard)
-# - @c(omment) in the middle of a line (rarely used)
-# - @this* (not really needed, only used in headers anyway)
-# - @today{} (ever used outside title page?)
-
-# More consistent handling of chapters/sections/etc.
-# Lots of documentation
-# Many more options:
-#       -top    designate top node
-#       -links  customize which types of links are included
-#       -split  split at chapters or sections instead of nodes
-#       -name   Allow different types of filename handling. Non unix systems
-#               will have problems with long node names
-#       ...
-# Support the most recent texinfo version and take a good look at HTML 3.0
-# More debugging output (customizable) and more flexible error handling
-# How about icons ?
-
-# rpyron 2002-05-07
-# Robert Pyron <rpyron@alum.mit.edu>
-# 1. BUGFIX: In function makefile(), strip blanks from the nodename.
-#    This is necessary to match the behavior of parser.makeref() and
-#    parser.do_node().
-# 2. BUGFIX fixed KeyError in end_ifset (well, I may have just made
-#    it go away, rather than fix it)
-# 3. BUGFIX allow @menu and menu items inside @ifset or @ifclear
-# 4. Support added for:
-#       @uref        URL reference
-#       @image       image file reference (see note below)
-#       @multitable  output an HTML table
-#       @vtable
-# 5. Partial support for accents, to match MAKEINFO output
-# 6. I added a new command-line option, '-H basename', to specify
-#    HTML Help output. This will cause three files to be created
-#    in the current directory:
-#       `basename`.hhp  HTML Help Workshop project file
-#       `basename`.hhc  Contents file for the project
-#       `basename`.hhk  Index file for the project
-#    When fed into HTML Help Workshop, the resulting file will be
-#    named `basename`.chm.
-# 7. A new class, HTMLHelp, to accomplish item 6.
-# 8. Various calls to HTMLHelp functions.
-# A NOTE ON IMAGES: Just as 'outputdirectory' must exist before
-# running this program, all referenced images must already exist
-# in outputdirectory.
-
-import os
-import sys
-import string
-import re
-
-MAGIC = '\\input texinfo'
-
-cmprog = re.compile('^@([a-z]+)([ \t]|$)')        # Command (line-oriented)
-blprog = re.compile('^[ \t]*$')                   # Blank line
-kwprog = re.compile('@[a-z]+')                    # Keyword (embedded, usually
-                                                  # with {} args)
-spprog = re.compile('[\n@{}&<>]')                 # Special characters in
-                                                  # running text
-                                                  #
-                                                  # menu item (Yuck!)
-miprog = re.compile('^\* ([^:]*):(:|[ \t]*([^\t,\n.]+)([^ \t\n]*))[ \t\n]*')
-#                   0    1     1 2        3          34         42        0
-#                         -----            ----------  ---------
-#                                 -|-----------------------------
-#                    -----------------------------------------------------
-
-
-
-
-class HTMLNode:
-    """Some of the parser's functionality is separated into this class.
-
-    A Node accumulates its contents, takes care of links to other Nodes
-    and saves itself when it is finished and all links are resolved.
-    """
-
-    DOCTYPE = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">'
-
-    type = 0
-    cont = ''
-    epilogue = '</BODY></HTML>\n'
-
-    def __init__(self, dir, name, topname, title, next, prev, up):
-        self.dirname = dir
-        self.name = name
-        if topname:
-            self.topname = topname
-        else:
-            self.topname = name
-        self.title = title
-        self.next = next
-        self.prev = prev
-        self.up = up
-        self.lines = []
-
-    def write(self, *lines):
-        map(self.lines.append, lines)
-
-    def flush(self):
-        fp = open(self.dirname + '/' + makefile(self.name), 'w')
-        fp.write(self.prologue)
-        fp.write(self.text)
-        fp.write(self.epilogue)
-        fp.close()
-
-    def link(self, label, nodename, rel=None, rev=None):
-        if nodename:
-            if nodename.lower() == '(dir)':
-                addr = '../dir.html'
-                title = ''
-            else:
-                addr = makefile(nodename)
-                title = ' TITLE="%s"' % nodename
-            self.write(label, ': <A HREF="', addr, '"', \
-                       rel and (' REL=' + rel) or "", \
-                       rev and (' REV=' + rev) or "", \
-                       title, '>', nodename, '</A>  \n')
-
-    def finalize(self):
-        length = len(self.lines)
-        self.text = ''.join(self.lines)
-        self.lines = []
-        self.open_links()
-        self.output_links()
-        self.close_links()
-        links = ''.join(self.lines)
-        self.lines = []
-        self.prologue = (
-            self.DOCTYPE +
-            '\n<HTML><HEAD>\n'
-            '  <!-- Converted with texi2html and Python -->\n'
-            '  <TITLE>' + self.title + '</TITLE>\n'
-            '  <LINK REL=Next HREF="'
-                + makefile(self.next) + '" TITLE="' + self.next + '">\n'
-            '  <LINK REL=Previous HREF="'
-                + makefile(self.prev) + '" TITLE="' + self.prev  + '">\n'
-            '  <LINK REL=Up HREF="'
-                + makefile(self.up) + '" TITLE="' + self.up  + '">\n'
-            '</HEAD><BODY>\n' +
-            links)
-        if length > 20:
-            self.epilogue = '<P>\n%s</BODY></HTML>\n' % links
-
-    def open_links(self):
-        self.write('<HR>\n')
-
-    def close_links(self):
-        self.write('<HR>\n')
-
-    def output_links(self):
-        if self.cont != self.next:
-            self.link('  Cont', self.cont)
-        self.link('  Next', self.next, rel='Next')
-        self.link('  Prev', self.prev, rel='Previous')
-        self.link('  Up', self.up, rel='Up')
-        if self.name <> self.topname:
-            self.link('  Top', self.topname)
-
-
-class HTML3Node(HTMLNode):
-
-    DOCTYPE = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 3//EN//3.0">'
-
-    def open_links(self):
-        self.write('<DIV CLASS=Navigation>\n <HR>\n')
-
-    def close_links(self):
-        self.write(' <HR>\n</DIV>\n')
-
-
-class TexinfoParser:
-
-    COPYRIGHT_SYMBOL = "&copy;"
-    FN_ID_PATTERN = "(%(id)s)"
-    FN_SOURCE_PATTERN = '<A NAME=footnoteref%(id)s' \
-                        ' HREF="#footnotetext%(id)s">' \
-                        + FN_ID_PATTERN + '</A>'
-    FN_TARGET_PATTERN = '<A NAME=footnotetext%(id)s' \
-                        ' HREF="#footnoteref%(id)s">' \
-                        + FN_ID_PATTERN + '</A>\n%(text)s<P>\n'
-    FN_HEADER = '\n<P>\n<HR NOSHADE SIZE=1 WIDTH=200>\n' \
-                '<STRONG><EM>Footnotes</EM></STRONG>\n<P>'
-
-
-    Node = HTMLNode
-
-    # Initialize an instance
-    def __init__(self):
-        self.unknown = {}       # statistics about unknown @-commands
-        self.filenames = {}     # Check for identical filenames
-        self.debugging = 0      # larger values produce more output
-        self.print_headers = 0  # always print headers?
-        self.nodefp = None      # open file we're writing to
-        self.nodelineno = 0     # Linenumber relative to node
-        self.links = None       # Links from current node
-        self.savetext = None    # If not None, save text head instead
-        self.savestack = []     # If not None, save text head instead
-        self.htmlhelp = None    # html help data
-        self.dirname = 'tmp'    # directory where files are created
-        self.includedir = '.'   # directory to search @include files
-        self.nodename = ''      # name of current node
-        self.topname = ''       # name of top node (first node seen)
-        self.title = ''         # title of this whole Texinfo tree
-        self.resetindex()       # Reset all indices
-        self.contents = []      # Reset table of contents
-        self.numbering = []     # Reset section numbering counters
-        self.nofill = 0         # Normal operation: fill paragraphs
-        self.values={'html': 1} # Names that should be parsed in ifset
-        self.stackinfo={}       # Keep track of state in the stack
-        # XXX The following should be reset per node?!
-        self.footnotes = []     # Reset list of footnotes
-        self.itemarg = None     # Reset command used by @item
-        self.itemnumber = None  # Reset number for @item in @enumerate
-        self.itemindex = None   # Reset item index name
-        self.node = None
-        self.nodestack = []
-        self.cont = 0
-        self.includedepth = 0
-
-    # Set htmlhelp helper class
-    def sethtmlhelp(self, htmlhelp):
-        self.htmlhelp = htmlhelp
-
-    # Set (output) directory name
-    def setdirname(self, dirname):
-        self.dirname = dirname
-
-    # Set include directory name
-    def setincludedir(self, includedir):
-        self.includedir = includedir
-
-    # Parse the contents of an entire file
-    def parse(self, fp):
-        line = fp.readline()
-        lineno = 1
-        while line and (line[0] == '%' or blprog.match(line)):
-            line = fp.readline()
-            lineno = lineno + 1
-        if line[:len(MAGIC)] <> MAGIC:
-            raise SyntaxError, 'file does not begin with %r' % (MAGIC,)
-        self.parserest(fp, lineno)
-
-    # Parse the contents of a file, not expecting a MAGIC header
-    def parserest(self, fp, initial_lineno):
-        lineno = initial_lineno
-        self.done = 0
-        self.skip = 0
-        self.stack = []
-        accu = []
-        while not self.done:
-            line = fp.readline()
-            self.nodelineno = self.nodelineno + 1
-            if not line:
-                if accu:
-                    if not self.skip: self.process(accu)
-                    accu = []
-                if initial_lineno > 0:
-                    print '*** EOF before @bye'
-                break
-            lineno = lineno + 1
-            mo = cmprog.match(line)
-            if mo:
-                a, b = mo.span(1)
-                cmd = line[a:b]
-                if cmd in ('noindent', 'refill'):
-                    accu.append(line)
-                else:
-                    if accu:
-                        if not self.skip:
-                            self.process(accu)
-                        accu = []
-                    self.command(line, mo)
-            elif blprog.match(line) and \
-                 'format' not in self.stack and \
-                 'example' not in self.stack:
-                if accu:
-                    if not self.skip:
-                        self.process(accu)
-                        if self.nofill:
-                            self.write('\n')
-                        else:
-                            self.write('<P>\n')
-                        accu = []
-            else:
-                # Append the line including trailing \n!
-                accu.append(line)
-        #
-        if self.skip:
-            print '*** Still skipping at the end'
-        if self.stack:
-            print '*** Stack not empty at the end'
-            print '***', self.stack
-        if self.includedepth == 0:
-            while self.nodestack:
-                self.nodestack[-1].finalize()
-                self.nodestack[-1].flush()
-                del self.nodestack[-1]
-
-    # Start saving text in a buffer instead of writing it to a file
-    def startsaving(self):
-        if self.savetext <> None:
-            self.savestack.append(self.savetext)
-            # print '*** Recursively saving text, expect trouble'
-        self.savetext = ''
-
-    # Return the text saved so far and start writing to file again
-    def collectsavings(self):
-        savetext = self.savetext
-        if len(self.savestack) > 0:
-            self.savetext = self.savestack[-1]
-            del self.savestack[-1]
-        else:
-            self.savetext = None
-        return savetext or ''
-
-    # Write text to file, or save it in a buffer, or ignore it
-    def write(self, *args):
-        try:
-            text = ''.join(args)
-        except:
-            print args
-            raise TypeError
-        if self.savetext <> None:
-            self.savetext = self.savetext + text
-        elif self.nodefp:
-            self.nodefp.write(text)
-        elif self.node:
-            self.node.write(text)
-
-    # Complete the current node -- write footnotes and close file
-    def endnode(self):
-        if self.savetext <> None:
-            print '*** Still saving text at end of node'
-            dummy = self.collectsavings()
-        if self.footnotes:
-            self.writefootnotes()
-        if self.nodefp:
-            if self.nodelineno > 20:
-                self.write('<HR>\n')
-                [name, next, prev, up] = self.nodelinks[:4]
-                self.link('Next', next)
-                self.link('Prev', prev)
-                self.link('Up', up)
-                if self.nodename <> self.topname:
-                    self.link('Top', self.topname)
-                self.write('<HR>\n')
-            self.write('</BODY>\n')
-            self.nodefp.close()
-            self.nodefp = None
-        elif self.node:
-            if not self.cont and \
-               (not self.node.type or \
-                (self.node.next and self.node.prev and self.node.up)):
-                self.node.finalize()
-                self.node.flush()
-            else:
-                self.nodestack.append(self.node)
-            self.node = None
-        self.nodename = ''
-
-    # Process a list of lines, expanding embedded @-commands
-    # This mostly distinguishes between menus and normal text
-    def process(self, accu):
-        if self.debugging > 1:
-            print '!'*self.debugging, 'process:', self.skip, self.stack,
-            if accu: print accu[0][:30],
-            if accu[0][30:] or accu[1:]: print '...',
-            print
-        if self.inmenu():
-            # XXX should be done differently
-            for line in accu:
-                mo = miprog.match(line)
-                if not mo:
-                    line = line.strip() + '\n'
-                    self.expand(line)
-                    continue
-                bgn, end = mo.span(0)
-                a, b = mo.span(1)
-                c, d = mo.span(2)
-                e, f = mo.span(3)
-                g, h = mo.span(4)
-                label = line[a:b]
-                nodename = line[c:d]
-                if nodename[0] == ':': nodename = label
-                else: nodename = line[e:f]
-                punct = line[g:h]
-                self.write('  <LI><A HREF="',
-                           makefile(nodename),
-                           '">', nodename,
-                           '</A>', punct, '\n')
-                self.htmlhelp.menuitem(nodename)
-                self.expand(line[end:])
-        else:
-            text = ''.join(accu)
-            self.expand(text)
-
-    # find 'menu' (we might be inside 'ifset' or 'ifclear')
-    def inmenu(self):
-        #if 'menu' in self.stack:
-        #    print 'inmenu   :', self.skip, self.stack, self.stackinfo
-        stack = self.stack
-        while stack and stack[-1] in ('ifset','ifclear'):
-            try:
-                if self.stackinfo[len(stack)]:
-                    return 0
-            except KeyError:
-                pass
-            stack = stack[:-1]
-        return (stack and stack[-1] == 'menu')
-
-    # Write a string, expanding embedded @-commands
-    def expand(self, text):
-        stack = []
-        i = 0
-        n = len(text)
-        while i < n:
-            start = i
-            mo = spprog.search(text, i)
-            if mo:
-                i = mo.start()
-            else:
-                self.write(text[start:])
-                break
-            self.write(text[start:i])
-            c = text[i]
-            i = i+1
-            if c == '\n':
-                self.write('\n')
-                continue
-            if c == '<':
-                self.write('&lt;')
-                continue
-            if c == '>':
-                self.write('&gt;')
-                continue
-            if c == '&':
-                self.write('&amp;')
-                continue
-            if c == '{':
-                stack.append('')
-                continue
-            if c == '}':
-                if not stack:
-                    print '*** Unmatched }'
-                    self.write('}')
-                    continue
-                cmd = stack[-1]
-                del stack[-1]
-                try:
-                    method = getattr(self, 'close_' + cmd)
-                except AttributeError:
-                    self.unknown_close(cmd)
-                    continue
-                method()
-                continue
-            if c <> '@':
-                # Cannot happen unless spprog is changed
-                raise RuntimeError, 'unexpected funny %r' % c
-            start = i
-            while i < n and text[i] in string.ascii_letters: i = i+1
-            if i == start:
-                # @ plus non-letter: literal next character
-                i = i+1
-                c = text[start:i]
-                if c == ':':
-                    # `@:' means no extra space after
-                    # preceding `.', `?', `!' or `:'
-                    pass
-                else:
-                    # `@.' means a sentence-ending period;
-                    # `@@', `@{', `@}' quote `@', `{', `}'
-                    self.write(c)
-                continue
-            cmd = text[start:i]
-            if i < n and text[i] == '{':
-                i = i+1
-                stack.append(cmd)
-                try:
-                    method = getattr(self, 'open_' + cmd)
-                except AttributeError:
-                    self.unknown_open(cmd)
-                    continue
-                method()
-                continue
-            try:
-                method = getattr(self, 'handle_' + cmd)
-            except AttributeError:
-                self.unknown_handle(cmd)
-                continue
-            method()
-        if stack:
-            print '*** Stack not empty at para:', stack
-
-    # --- Handle unknown embedded @-commands ---
-
-    def unknown_open(self, cmd):
-        print '*** No open func for @' + cmd + '{...}'
-        cmd = cmd + '{'
-        self.write('@', cmd)
-        if not self.unknown.has_key(cmd):
-            self.unknown[cmd] = 1
-        else:
-            self.unknown[cmd] = self.unknown[cmd] + 1
-
-    def unknown_close(self, cmd):
-        print '*** No close func for @' + cmd + '{...}'
-        cmd = '}' + cmd
-        self.write('}')
-        if not self.unknown.has_key(cmd):
-            self.unknown[cmd] = 1
-        else:
-            self.unknown[cmd] = self.unknown[cmd] + 1
-
-    def unknown_handle(self, cmd):
-        print '*** No handler for @' + cmd
-        self.write('@', cmd)
-        if not self.unknown.has_key(cmd):
-            self.unknown[cmd] = 1
-        else:
-            self.unknown[cmd] = self.unknown[cmd] + 1
-
-    # XXX The following sections should be ordered as the texinfo docs
-
-    # --- Embedded @-commands without {} argument list --
-
-    def handle_noindent(self): pass
-
-    def handle_refill(self): pass
-
-    # --- Include file handling ---
-
-    def do_include(self, args):
-        file = args
-        file = os.path.join(self.includedir, file)
-        try:
-            fp = open(file, 'r')
-        except IOError, msg:
-            print '*** Can\'t open include file', repr(file)
-            return
-        print '!'*self.debugging, '--> file', repr(file)
-        save_done = self.done
-        save_skip = self.skip
-        save_stack = self.stack
-        self.includedepth = self.includedepth + 1
-        self.parserest(fp, 0)
-        self.includedepth = self.includedepth - 1
-        fp.close()
-        self.done = save_done
-        self.skip = save_skip
-        self.stack = save_stack
-        print '!'*self.debugging, '<-- file', repr(file)
-
-    # --- Special Insertions ---
-
-    def open_dmn(self): pass
-    def close_dmn(self): pass
-
-    def open_dots(self): self.write('...')
-    def close_dots(self): pass
-
-    def open_bullet(self): pass
-    def close_bullet(self): pass
-
-    def open_TeX(self): self.write('TeX')
-    def close_TeX(self): pass
-
-    def handle_copyright(self): self.write(self.COPYRIGHT_SYMBOL)
-    def open_copyright(self): self.write(self.COPYRIGHT_SYMBOL)
-    def close_copyright(self): pass
-
-    def open_minus(self): self.write('-')
-    def close_minus(self): pass
-
-    # --- Accents ---
-
-    # rpyron 2002-05-07
-    # I would like to do at least as well as makeinfo when
-    # it is producing HTML output:
-    #
-    #   input               output
-    #     @"o                 @"o                umlaut accent
-    #     @'o                 'o                 acute accent
-    #     @,{c}               @,{c}              cedilla accent
-    #     @=o                 @=o                macron/overbar accent
-    #     @^o                 @^o                circumflex accent
-    #     @`o                 `o                 grave accent
-    #     @~o                 @~o                tilde accent
-    #     @dotaccent{o}       @dotaccent{o}      overdot accent
-    #     @H{o}               @H{o}              long Hungarian umlaut
-    #     @ringaccent{o}      @ringaccent{o}     ring accent
-    #     @tieaccent{oo}      @tieaccent{oo}     tie-after accent
-    #     @u{o}               @u{o}              breve accent
-    #     @ubaraccent{o}      @ubaraccent{o}     underbar accent
-    #     @udotaccent{o}      @udotaccent{o}     underdot accent
-    #     @v{o}               @v{o}              hacek or check accent
-    #     @exclamdown{}       &#161;             upside-down !
-    #     @questiondown{}     &#191;             upside-down ?
-    #     @aa{},@AA{}         &#229;,&#197;      a,A with circle
-    #     @ae{},@AE{}         &#230;,&#198;      ae,AE ligatures
-    #     @dotless{i}         @dotless{i}        dotless i
-    #     @dotless{j}         @dotless{j}        dotless j
-    #     @l{},@L{}           l/,L/              suppressed-L,l
-    #     @o{},@O{}           &#248;,&#216;      O,o with slash
-    #     @oe{},@OE{}         oe,OE              oe,OE ligatures
-    #     @ss{}               &#223;             es-zet or sharp S
-    #
-    # The following character codes and approximations have been
-    # copied from makeinfo's HTML output.
-
-    def open_exclamdown(self): self.write('&#161;')   # upside-down !
-    def close_exclamdown(self): pass
-    def open_questiondown(self): self.write('&#191;') # upside-down ?
-    def close_questiondown(self): pass
-    def open_aa(self): self.write('&#229;') # a with circle
-    def close_aa(self): pass
-    def open_AA(self): self.write('&#197;') # A with circle
-    def close_AA(self): pass
-    def open_ae(self): self.write('&#230;') # ae ligatures
-    def close_ae(self): pass
-    def open_AE(self): self.write('&#198;') # AE ligatures
-    def close_AE(self): pass
-    def open_o(self): self.write('&#248;')  # o with slash
-    def close_o(self): pass
-    def open_O(self): self.write('&#216;')  # O with slash
-    def close_O(self): pass
-    def open_ss(self): self.write('&#223;') # es-zet or sharp S
-    def close_ss(self): pass
-    def open_oe(self): self.write('oe')     # oe ligatures
-    def close_oe(self): pass
-    def open_OE(self): self.write('OE')     # OE ligatures
-    def close_OE(self): pass
-    def open_l(self): self.write('l/')      # suppressed-l
-    def close_l(self): pass
-    def open_L(self): self.write('L/')      # suppressed-L
-    def close_L(self): pass
-
-    # --- Special Glyphs for Examples ---
-
-    def open_result(self): self.write('=&gt;')
-    def close_result(self): pass
-
-    def open_expansion(self): self.write('==&gt;')
-    def close_expansion(self): pass
-
-    def open_print(self): self.write('-|')
-    def close_print(self): pass
-
-    def open_error(self): self.write('error--&gt;')
-    def close_error(self): pass
-
-    def open_equiv(self): self.write('==')
-    def close_equiv(self): pass
-
-    def open_point(self): self.write('-!-')
-    def close_point(self): pass
-
-    # --- Cross References ---
-
-    def open_pxref(self):
-        self.write('see ')
-        self.startsaving()
-    def close_pxref(self):
-        self.makeref()
-
-    def open_xref(self):
-        self.write('See ')
-        self.startsaving()
-    def close_xref(self):
-        self.makeref()
-
-    def open_ref(self):
-        self.startsaving()
-    def close_ref(self):
-        self.makeref()
-
-    def open_inforef(self):
-        self.write('See info file ')
-        self.startsaving()
-    def close_inforef(self):
-        text = self.collectsavings()
-        args = [s.strip() for s in text.split(',')]
-        while len(args) < 3: args.append('')
-        node = args[0]
-        file = args[2]
-        self.write('`', file, '\', node `', node, '\'')
-
-    def makeref(self):
-        text = self.collectsavings()
-        args = [s.strip() for s in text.split(',')]
-        while len(args) < 5: args.append('')
-        nodename = label = args[0]
-        if args[2]: label = args[2]
-        file = args[3]
-        title = args[4]
-        href = makefile(nodename)
-        if file:
-            href = '../' + file + '/' + href
-        self.write('<A HREF="', href, '">', label, '</A>')
-
-    # rpyron 2002-05-07  uref support
-    def open_uref(self):
-        self.startsaving()
-    def close_uref(self):
-        text = self.collectsavings()
-        args = [s.strip() for s in text.split(',')]
-        while len(args) < 2: args.append('')
-        href = args[0]
-        label = args[1]
-        if not label: label = href
-        self.write('<A HREF="', href, '">', label, '</A>')
-
-    # rpyron 2002-05-07  image support
-    # GNU makeinfo producing HTML output tries `filename.png'; if
-    # that does not exist, it tries `filename.jpg'. If that does
-    # not exist either, it complains. GNU makeinfo does not handle
-    # GIF files; however, I include GIF support here because
-    # MySQL documentation uses GIF files.
-
-    def open_image(self):
-        self.startsaving()
-    def close_image(self):
-        self.makeimage()
-    def makeimage(self):
-        text = self.collectsavings()
-        args = [s.strip() for s in text.split(',')]
-        while len(args) < 5: args.append('')
-        filename = args[0]
-        width    = args[1]
-        height   = args[2]
-        alt      = args[3]
-        ext      = args[4]
-
-        # The HTML output will have a reference to the image
-        # that is relative to the HTML output directory,
-        # which is what 'filename' gives us. However, we need
-        # to find it relative to our own current directory,
-        # so we construct 'imagename'.
-        imagelocation = self.dirname + '/' + filename
-
-        if   os.path.exists(imagelocation+'.png'):
-            filename += '.png'
-        elif os.path.exists(imagelocation+'.jpg'):
-            filename += '.jpg'
-        elif os.path.exists(imagelocation+'.gif'):   # MySQL uses GIF files
-            filename += '.gif'
-        else:
-            print "*** Cannot find image " + imagelocation
-        #TODO: what is 'ext'?
-        self.write('<IMG SRC="', filename, '"',                     \
-                    width  and (' WIDTH="'  + width  + '"') or "",  \
-                    height and (' HEIGHT="' + height + '"') or "",  \
-                    alt    and (' ALT="'    + alt    + '"') or "",  \
-                    '/>' )
-        self.htmlhelp.addimage(imagelocation)
-
-
-    # --- Marking Words and Phrases ---
-
-    # --- Other @xxx{...} commands ---
-
-    def open_(self): pass # Used by {text enclosed in braces}
-    def close_(self): pass
-
-    open_asis = open_
-    close_asis = close_
-
-    def open_cite(self): self.write('<CITE>')
-    def close_cite(self): self.write('</CITE>')
-
-    def open_code(self): self.write('<CODE>')
-    def close_code(self): self.write('</CODE>')
-
-    def open_t(self): self.write('<TT>')
-    def close_t(self): self.write('</TT>')
-
-    def open_dfn(self): self.write('<DFN>')
-    def close_dfn(self): self.write('</DFN>')
-
-    def open_emph(self): self.write('<EM>')
-    def close_emph(self): self.write('</EM>')
-
-    def open_i(self): self.write('<I>')
-    def close_i(self): self.write('</I>')
-
-    def open_footnote(self):
-        # if self.savetext <> None:
-        #       print '*** Recursive footnote -- expect weirdness'
-        id = len(self.footnotes) + 1
-        self.write(self.FN_SOURCE_PATTERN % {'id': repr(id)})
-        self.startsaving()
-
-    def close_footnote(self):
-        id = len(self.footnotes) + 1
-        self.footnotes.append((id, self.collectsavings()))
-
-    def writefootnotes(self):
-        self.write(self.FN_HEADER)
-        for id, text in self.footnotes:
-            self.write(self.FN_TARGET_PATTERN
-                       % {'id': repr(id), 'text': text})
-        self.footnotes = []
-
-    def open_file(self): self.write('<CODE>')
-    def close_file(self): self.write('</CODE>')
-
-    def open_kbd(self): self.write('<KBD>')
-    def close_kbd(self): self.write('</KBD>')
-
-    def open_key(self): self.write('<KEY>')
-    def close_key(self): self.write('</KEY>')
-
-    def open_r(self): self.write('<R>')
-    def close_r(self): self.write('</R>')
-
-    def open_samp(self): self.write('`<SAMP>')
-    def close_samp(self): self.write('</SAMP>\'')
-
-    def open_sc(self): self.write('<SMALLCAPS>')
-    def close_sc(self): self.write('</SMALLCAPS>')
-
-    def open_strong(self): self.write('<STRONG>')
-    def close_strong(self): self.write('</STRONG>')
-
-    def open_b(self): self.write('<B>')
-    def close_b(self): self.write('</B>')
-
-    def open_var(self): self.write('<VAR>')
-    def close_var(self): self.write('</VAR>')
-
-    def open_w(self): self.write('<NOBREAK>')
-    def close_w(self): self.write('</NOBREAK>')
-
-    def open_url(self): self.startsaving()
-    def close_url(self):
-        text = self.collectsavings()
-        self.write('<A HREF="', text, '">', text, '</A>')
-
-    def open_email(self): self.startsaving()
-    def close_email(self):
-        text = self.collectsavings()
-        self.write('<A HREF="mailto:', text, '">', text, '</A>')
-
-    open_titlefont = open_
-    close_titlefont = close_
-
-    def open_small(self): pass
-    def close_small(self): pass
-
-    def command(self, line, mo):
-        a, b = mo.span(1)
-        cmd = line[a:b]
-        args = line[b:].strip()
-        if self.debugging > 1:
-            print '!'*self.debugging, 'command:', self.skip, self.stack, \
-                  '@' + cmd, args
-        try:
-            func = getattr(self, 'do_' + cmd)
-        except AttributeError:
-            try:
-                func = getattr(self, 'bgn_' + cmd)
-            except AttributeError:
-                # don't complain if we are skipping anyway
-                if not self.skip:
-                    self.unknown_cmd(cmd, args)
-                return
-            self.stack.append(cmd)
-            func(args)
-            return
-        if not self.skip or cmd == 'end':
-            func(args)
-
-    def unknown_cmd(self, cmd, args):
-        print '*** unknown', '@' + cmd, args
-        if not self.unknown.has_key(cmd):
-            self.unknown[cmd] = 1
-        else:
-            self.unknown[cmd] = self.unknown[cmd] + 1
-
-    def do_end(self, args):
-        words = args.split()
-        if not words:
-            print '*** @end w/o args'
-        else:
-            cmd = words[0]
-            if not self.stack or self.stack[-1] <> cmd:
-                print '*** @end', cmd, 'unexpected'
-            else:
-                del self.stack[-1]
-            try:
-                func = getattr(self, 'end_' + cmd)
-            except AttributeError:
-                self.unknown_end(cmd)
-                return
-            func()
-
-    def unknown_end(self, cmd):
-        cmd = 'end ' + cmd
-        print '*** unknown', '@' + cmd
-        if not self.unknown.has_key(cmd):
-            self.unknown[cmd] = 1
-        else:
-            self.unknown[cmd] = self.unknown[cmd] + 1
-
-    # --- Comments ---
-
-    def do_comment(self, args): pass
-    do_c = do_comment
-
-    # --- Conditional processing ---
-
-    def bgn_ifinfo(self, args): pass
-    def end_ifinfo(self): pass
-
-    def bgn_iftex(self, args): self.skip = self.skip + 1
-    def end_iftex(self): self.skip = self.skip - 1
-
-    def bgn_ignore(self, args): self.skip = self.skip + 1
-    def end_ignore(self): self.skip = self.skip - 1
-
-    def bgn_tex(self, args): self.skip = self.skip + 1
-    def end_tex(self): self.skip = self.skip - 1
-
-    def do_set(self, args):
-        fields = args.split(' ')
-        key = fields[0]
-        if len(fields) == 1:
-            value = 1
-        else:
-            value = ' '.join(fields[1:])
-        self.values[key] = value
-
-    def do_clear(self, args):
-        self.values[args] = None
-
-    def bgn_ifset(self, args):
-        if args not in self.values.keys() \
-           or self.values[args] is None:
-            self.skip = self.skip + 1
-            self.stackinfo[len(self.stack)] = 1
-        else:
-            self.stackinfo[len(self.stack)] = 0
-    def end_ifset(self):
-        try:
-            if self.stackinfo[len(self.stack) + 1]:
-                self.skip = self.skip - 1
-            del self.stackinfo[len(self.stack) + 1]
-        except KeyError:
-            print '*** end_ifset: KeyError :', len(self.stack) + 1
-
-    def bgn_ifclear(self, args):
-        if args in self.values.keys() \
-           and self.values[args] is not None:
-            self.skip = self.skip + 1
-            self.stackinfo[len(self.stack)] = 1
-        else:
-            self.stackinfo[len(self.stack)] = 0
-    def end_ifclear(self):
-        try:
-            if self.stackinfo[len(self.stack) + 1]:
-                self.skip = self.skip - 1
-            del self.stackinfo[len(self.stack) + 1]
-        except KeyError:
-            print '*** end_ifclear: KeyError :', len(self.stack) + 1
-
-    def open_value(self):
-        self.startsaving()
-
-    def close_value(self):
-        key = self.collectsavings()
-        if key in self.values.keys():
-            self.write(self.values[key])
-        else:
-            print '*** Undefined value: ', key
-
-    # --- Beginning a file ---
-
-    do_finalout = do_comment
-    do_setchapternewpage = do_comment
-    do_setfilename = do_comment
-
-    def do_settitle(self, args):
-        self.startsaving()
-        self.expand(args)
-        self.title = self.collectsavings()
-    def do_parskip(self, args): pass
-
-    # --- Ending a file ---
-
-    def do_bye(self, args):
-        self.endnode()
-        self.done = 1
-
-    # --- Title page ---
-
-    def bgn_titlepage(self, args): self.skip = self.skip + 1
-    def end_titlepage(self): self.skip = self.skip - 1
-    def do_shorttitlepage(self, args): pass
-
-    def do_center(self, args):
-        # Actually not used outside title page...
-        self.write('<H1>')
-        self.expand(args)
-        self.write('</H1>\n')
-    do_title = do_center
-    do_subtitle = do_center
-    do_author = do_center
-
-    do_vskip = do_comment
-    do_vfill = do_comment
-    do_smallbook = do_comment
-
-    do_paragraphindent = do_comment
-    do_setchapternewpage = do_comment
-    do_headings = do_comment
-    do_footnotestyle = do_comment
-
-    do_evenheading = do_comment
-    do_evenfooting = do_comment
-    do_oddheading = do_comment
-    do_oddfooting = do_comment
-    do_everyheading = do_comment
-    do_everyfooting = do_comment
-
-    # --- Nodes ---
-
-    def do_node(self, args):
-        self.endnode()
-        self.nodelineno = 0
-        parts = [s.strip() for s in args.split(',')]
-        while len(parts) < 4: parts.append('')
-        self.nodelinks = parts
-        [name, next, prev, up] = parts[:4]
-        file = self.dirname + '/' + makefile(name)
-        if self.filenames.has_key(file):
-            print '*** Filename already in use: ', file
-        else:
-            if self.debugging: print '!'*self.debugging, '--- writing', file
-        self.filenames[file] = 1
-        # self.nodefp = open(file, 'w')
-        self.nodename = name
-        if self.cont and self.nodestack:
-            self.nodestack[-1].cont = self.nodename
-        if not self.topname: self.topname = name
-        title = name
-        if self.title: title = title + ' -- ' + self.title
-        self.node = self.Node(self.dirname, self.nodename, self.topname,
-                              title, next, prev, up)
-        self.htmlhelp.addnode(self.nodename,next,prev,up,file)
-
-    def link(self, label, nodename):
-        if nodename:
-            if nodename.lower() == '(dir)':
-                addr = '../dir.html'
-            else:
-                addr = makefile(nodename)
-            self.write(label, ': <A HREF="', addr, '" TYPE="',
-                       label, '">', nodename, '</A>  \n')
-
-    # --- Sectioning commands ---
-
-    def popstack(self, type):
-        if (self.node):
-            self.node.type = type
-            while self.nodestack:
-                if self.nodestack[-1].type > type:
-                    self.nodestack[-1].finalize()
-                    self.nodestack[-1].flush()
-                    del self.nodestack[-1]
-                elif self.nodestack[-1].type == type:
-                    if not self.nodestack[-1].next:
-                        self.nodestack[-1].next = self.node.name
-                    if not self.node.prev:
-                        self.node.prev = self.nodestack[-1].name
-                    self.nodestack[-1].finalize()
-                    self.nodestack[-1].flush()
-                    del self.nodestack[-1]
-                else:
-                    if type > 1 and not self.node.up:
-                        self.node.up = self.nodestack[-1].name
-                    break
-
-    def do_chapter(self, args):
-        self.heading('H1', args, 0)
-        self.popstack(1)
-
-    def do_unnumbered(self, args):
-        self.heading('H1', args, -1)
-        self.popstack(1)
-    def do_appendix(self, args):
-        self.heading('H1', args, -1)
-        self.popstack(1)
-    def do_top(self, args):
-        self.heading('H1', args, -1)
-    def do_chapheading(self, args):
-        self.heading('H1', args, -1)
-    def do_majorheading(self, args):
-        self.heading('H1', args, -1)
-
-    def do_section(self, args):
-        self.heading('H1', args, 1)
-        self.popstack(2)
-
-    def do_unnumberedsec(self, args):
-        self.heading('H1', args, -1)
-        self.popstack(2)
-    def do_appendixsec(self, args):
-        self.heading('H1', args, -1)
-        self.popstack(2)
-    do_appendixsection = do_appendixsec
-    def do_heading(self, args):
-        self.heading('H1', args, -1)
-
-    def do_subsection(self, args):
-        self.heading('H2', args, 2)
-        self.popstack(3)
-    def do_unnumberedsubsec(self, args):
-        self.heading('H2', args, -1)
-        self.popstack(3)
-    def do_appendixsubsec(self, args):
-        self.heading('H2', args, -1)
-        self.popstack(3)
-    def do_subheading(self, args):
-        self.heading('H2', args, -1)
-
-    def do_subsubsection(self, args):
-        self.heading('H3', args, 3)
-        self.popstack(4)
-    def do_unnumberedsubsubsec(self, args):
-        self.heading('H3', args, -1)
-        self.popstack(4)
-    def do_appendixsubsubsec(self, args):
-        self.heading('H3', args, -1)
-        self.popstack(4)
-    def do_subsubheading(self, args):
-        self.heading('H3', args, -1)
-
-    def heading(self, type, args, level):
-        if level >= 0:
-            while len(self.numbering) <= level:
-                self.numbering.append(0)
-            del self.numbering[level+1:]
-            self.numbering[level] = self.numbering[level] + 1
-            x = ''
-            for i in self.numbering:
-                x = x + repr(i) + '.'
-            args = x + ' ' + args
-            self.contents.append((level, args, self.nodename))
-        self.write('<', type, '>')
-        self.expand(args)
-        self.write('</', type, '>\n')
-        if self.debugging or self.print_headers:
-            print '---', args
-
-    def do_contents(self, args):
-        # pass
-        self.listcontents('Table of Contents', 999)
-
-    def do_shortcontents(self, args):
-        pass
-        # self.listcontents('Short Contents', 0)
-    do_summarycontents = do_shortcontents
-
-    def listcontents(self, title, maxlevel):
-        self.write('<H1>', title, '</H1>\n<UL COMPACT PLAIN>\n')
-        prevlevels = [0]
-        for level, title, node in self.contents:
-            if level > maxlevel:
-                continue
-            if level > prevlevels[-1]:
-                # can only advance one level at a time
-                self.write('  '*prevlevels[-1], '<UL PLAIN>\n')
-                prevlevels.append(level)
-            elif level < prevlevels[-1]:
-                # might drop back multiple levels
-                while level < prevlevels[-1]:
-                    del prevlevels[-1]
-                    self.write('  '*prevlevels[-1],
-                               '</UL>\n')
-            self.write('  '*level, '<LI> <A HREF="',
-                       makefile(node), '">')
-            self.expand(title)
-            self.write('</A>\n')
-        self.write('</UL>\n' * len(prevlevels))
-
-    # --- Page lay-out ---
-
-    # These commands are only meaningful in printed text
-
-    def do_page(self, args): pass
-
-    def do_need(self, args): pass
-
-    def bgn_group(self, args): pass
-    def end_group(self): pass
-
-    # --- Line lay-out ---
-
-    def do_sp(self, args):
-        if self.nofill:
-            self.write('\n')
-        else:
-            self.write('<P>\n')
-
-    def do_hline(self, args):
-        self.write('<HR>')
-
-    # --- Function and variable definitions ---
-
-    def bgn_deffn(self, args):
-        self.write('<DL>')
-        self.do_deffnx(args)
-
-    def end_deffn(self):
-        self.write('</DL>\n')
-
-    def do_deffnx(self, args):
-        self.write('<DT>')
-        words = splitwords(args, 2)
-        [category, name], rest = words[:2], words[2:]
-        self.expand('@b{%s}' % name)
-        for word in rest: self.expand(' ' + makevar(word))
-        #self.expand(' -- ' + category)
-        self.write('\n<DD>')
-        self.index('fn', name)
-
-    def bgn_defun(self, args): self.bgn_deffn('Function ' + args)
-    end_defun = end_deffn
-    def do_defunx(self, args): self.do_deffnx('Function ' + args)
-
-    def bgn_defmac(self, args): self.bgn_deffn('Macro ' + args)
-    end_defmac = end_deffn
-    def do_defmacx(self, args): self.do_deffnx('Macro ' + args)
-
-    def bgn_defspec(self, args): self.bgn_deffn('{Special Form} ' + args)
-    end_defspec = end_deffn
-    def do_defspecx(self, args): self.do_deffnx('{Special Form} ' + args)
-
-    def bgn_defvr(self, args):
-        self.write('<DL>')
-        self.do_defvrx(args)
-
-    end_defvr = end_deffn
-
-    def do_defvrx(self, args):
-        self.write('<DT>')
-        words = splitwords(args, 2)
-        [category, name], rest = words[:2], words[2:]
-        self.expand('@code{%s}' % name)
-        # If there are too many arguments, show them
-        for word in rest: self.expand(' ' + word)
-        #self.expand(' -- ' + category)
-        self.write('\n<DD>')
-        self.index('vr', name)
-
-    def bgn_defvar(self, args): self.bgn_defvr('Variable ' + args)
-    end_defvar = end_defvr
-    def do_defvarx(self, args): self.do_defvrx('Variable ' + args)
-
-    def bgn_defopt(self, args): self.bgn_defvr('{User Option} ' + args)
-    end_defopt = end_defvr
-    def do_defoptx(self, args): self.do_defvrx('{User Option} ' + args)
-
-    # --- Ditto for typed languages ---
-
-    def bgn_deftypefn(self, args):
-        self.write('<DL>')
-        self.do_deftypefnx(args)
-
-    end_deftypefn = end_deffn
-
-    def do_deftypefnx(self, args):
-        self.write('<DT>')
-        words = splitwords(args, 3)
-        [category, datatype, name], rest = words[:3], words[3:]
-        self.expand('@code{%s} @b{%s}' % (datatype, name))
-        for word in rest: self.expand(' ' + makevar(word))
-        #self.expand(' -- ' + category)
-        self.write('\n<DD>')
-        self.index('fn', name)
-
-
-    def bgn_deftypefun(self, args): self.bgn_deftypefn('Function ' + args)
-    end_deftypefun = end_deftypefn
-    def do_deftypefunx(self, args): self.do_deftypefnx('Function ' + args)
-
-    def bgn_deftypevr(self, args):
-        self.write('<DL>')
-        self.do_deftypevrx(args)
-
-    end_deftypevr = end_deftypefn
-
-    def do_deftypevrx(self, args):
-        self.write('<DT>')
-        words = splitwords(args, 3)
-        [category, datatype, name], rest = words[:3], words[3:]
-        self.expand('@code{%s} @b{%s}' % (datatype, name))
-        # If there are too many arguments, show them
-        for word in rest: self.expand(' ' + word)
-        #self.expand(' -- ' + category)
-        self.write('\n<DD>')
-        self.index('fn', name)
-
-    def bgn_deftypevar(self, args):
-        self.bgn_deftypevr('Variable ' + args)
-    end_deftypevar = end_deftypevr
-    def do_deftypevarx(self, args):
-        self.do_deftypevrx('Variable ' + args)
-
-    # --- Ditto for object-oriented languages ---
-
-    def bgn_defcv(self, args):
-        self.write('<DL>')
-        self.do_defcvx(args)
-
-    end_defcv = end_deftypevr
-
-    def do_defcvx(self, args):
-        self.write('<DT>')
-        words = splitwords(args, 3)
-        [category, classname, name], rest = words[:3], words[3:]
-        self.expand('@b{%s}' % name)
-        # If there are too many arguments, show them
-        for word in rest: self.expand(' ' + word)
-        #self.expand(' -- %s of @code{%s}' % (category, classname))
-        self.write('\n<DD>')
-        self.index('vr', '%s @r{on %s}' % (name, classname))
-
-    def bgn_defivar(self, args):
-        self.bgn_defcv('{Instance Variable} ' + args)
-    end_defivar = end_defcv
-    def do_defivarx(self, args):
-        self.do_defcvx('{Instance Variable} ' + args)
-
-    def bgn_defop(self, args):
-        self.write('<DL>')
-        self.do_defopx(args)
-
-    end_defop = end_defcv
-
-    def do_defopx(self, args):
-        self.write('<DT>')
-        words = splitwords(args, 3)
-        [category, classname, name], rest = words[:3], words[3:]
-        self.expand('@b{%s}' % name)
-        for word in rest: self.expand(' ' + makevar(word))
-        #self.expand(' -- %s of @code{%s}' % (category, classname))
-        self.write('\n<DD>')
-        self.index('fn', '%s @r{on %s}' % (name, classname))
-
-    def bgn_defmethod(self, args):
-        self.bgn_defop('Method ' + args)
-    end_defmethod = end_defop
-    def do_defmethodx(self, args):
-        self.do_defopx('Method ' + args)
-
-    # --- Ditto for data types ---
-
-    def bgn_deftp(self, args):
-        self.write('<DL>')
-        self.do_deftpx(args)
-
-    end_deftp = end_defcv
-
-    def do_deftpx(self, args):
-        self.write('<DT>')
-        words = splitwords(args, 2)
-        [category, name], rest = words[:2], words[2:]
-        self.expand('@b{%s}' % name)
-        for word in rest: self.expand(' ' + word)
-        #self.expand(' -- ' + category)
-        self.write('\n<DD>')
-        self.index('tp', name)
-
-    # --- Making Lists and Tables
-
-    def bgn_enumerate(self, args):
-        if not args:
-            self.write('<OL>\n')
-            self.stackinfo[len(self.stack)] = '</OL>\n'
-        else:
-            self.itemnumber = args
-            self.write('<UL>\n')
-            self.stackinfo[len(self.stack)] = '</UL>\n'
-    def end_enumerate(self):
-        self.itemnumber = None
-        self.write(self.stackinfo[len(self.stack) + 1])
-        del self.stackinfo[len(self.stack) + 1]
-
-    def bgn_itemize(self, args):
-        self.itemarg = args
-        self.write('<UL>\n')
-    def end_itemize(self):
-        self.itemarg = None
-        self.write('</UL>\n')
-
-    def bgn_table(self, args):
-        self.itemarg = args
-        self.write('<DL>\n')
-    def end_table(self):
-        self.itemarg = None
-        self.write('</DL>\n')
-
-    def bgn_ftable(self, args):
-        self.itemindex = 'fn'
-        self.bgn_table(args)
-    def end_ftable(self):
-        self.itemindex = None
-        self.end_table()
-
-    def bgn_vtable(self, args):
-        self.itemindex = 'vr'
-        self.bgn_table(args)
-    def end_vtable(self):
-        self.itemindex = None
-        self.end_table()
-
-    def do_item(self, args):
-        if self.itemindex: self.index(self.itemindex, args)
-        if self.itemarg:
-            if self.itemarg[0] == '@' and self.itemarg[1] and \
-                            self.itemarg[1] in string.ascii_letters:
-                args = self.itemarg + '{' + args + '}'
-            else:
-                # some other character, e.g. '-'
-                args = self.itemarg + ' ' + args
-        if self.itemnumber <> None:
-            args = self.itemnumber + '. ' + args
-            self.itemnumber = increment(self.itemnumber)
-        if self.stack and self.stack[-1] == 'table':
-            self.write('<DT>')
-            self.expand(args)
-            self.write('\n<DD>')
-        elif self.stack and self.stack[-1] == 'multitable':
-            self.write('<TR><TD>')
-            self.expand(args)
-            self.write('</TD>\n</TR>\n')
-        else:
-            self.write('<LI>')
-            self.expand(args)
-            self.write('  ')
-    do_itemx = do_item # XXX Should suppress leading blank line
-
-    # rpyron 2002-05-07  multitable support
-    def bgn_multitable(self, args):
-        self.itemarg = None     # should be handled by columnfractions
-        self.write('<TABLE BORDER="">\n')
-    def end_multitable(self):
-        self.itemarg = None
-        self.write('</TABLE>\n<BR>\n')
-    def handle_columnfractions(self):
-        # It would be better to handle this, but for now it's in the way...
-        self.itemarg = None
-    def handle_tab(self):
-        self.write('</TD>\n    <TD>')
-
-    # --- Enumerations, displays, quotations ---
-    # XXX Most of these should increase the indentation somehow
-
-    def bgn_quotation(self, args): self.write('<BLOCKQUOTE>')
-    def end_quotation(self): self.write('</BLOCKQUOTE>\n')
-
-    def bgn_example(self, args):
-        self.nofill = self.nofill + 1
-        self.write('<PRE>')
-    def end_example(self):
-        self.write('</PRE>\n')
-        self.nofill = self.nofill - 1
-
-    bgn_lisp = bgn_example # Synonym when contents are executable lisp code
-    end_lisp = end_example
-
-    bgn_smallexample = bgn_example # XXX Should use smaller font
-    end_smallexample = end_example
-
-    bgn_smalllisp = bgn_lisp # Ditto
-    end_smalllisp = end_lisp
-
-    bgn_display = bgn_example
-    end_display = end_example
-
-    bgn_format = bgn_display
-    end_format = end_display
-
-    def do_exdent(self, args): self.expand(args + '\n')
-    # XXX Should really mess with indentation
-
-    def bgn_flushleft(self, args):
-        self.nofill = self.nofill + 1
-        self.write('<PRE>\n')
-    def end_flushleft(self):
-        self.write('</PRE>\n')
-        self.nofill = self.nofill - 1
-
-    def bgn_flushright(self, args):
-        self.nofill = self.nofill + 1
-        self.write('<ADDRESS COMPACT>\n')
-    def end_flushright(self):
-        self.write('</ADDRESS>\n')
-        self.nofill = self.nofill - 1
-
-    def bgn_menu(self, args):
-        self.write('<DIR>\n')
-        self.write('  <STRONG><EM>Menu</EM></STRONG><P>\n')
-        self.htmlhelp.beginmenu()
-    def end_menu(self):
-        self.write('</DIR>\n')
-        self.htmlhelp.endmenu()
-
-    def bgn_cartouche(self, args): pass
-    def end_cartouche(self): pass
-
-    # --- Indices ---
-
-    def resetindex(self):
-        self.noncodeindices = ['cp']
-        self.indextitle = {}
-        self.indextitle['cp'] = 'Concept'
-        self.indextitle['fn'] = 'Function'
-        self.indextitle['ky'] = 'Keyword'
-        self.indextitle['pg'] = 'Program'
-        self.indextitle['tp'] = 'Type'
-        self.indextitle['vr'] = 'Variable'
-        #
-        self.whichindex = {}
-        for name in self.indextitle.keys():
-            self.whichindex[name] = []
-
-    def user_index(self, name, args):
-        if self.whichindex.has_key(name):
-            self.index(name, args)
-        else:
-            print '*** No index named', repr(name)
-
-    def do_cindex(self, args): self.index('cp', args)
-    def do_findex(self, args): self.index('fn', args)
-    def do_kindex(self, args): self.index('ky', args)
-    def do_pindex(self, args): self.index('pg', args)
-    def do_tindex(self, args): self.index('tp', args)
-    def do_vindex(self, args): self.index('vr', args)
-
-    def index(self, name, args):
-        self.whichindex[name].append((args, self.nodename))
-        self.htmlhelp.index(args, self.nodename)
-
-    def do_synindex(self, args):
-        words = args.split()
-        if len(words) <> 2:
-            print '*** bad @synindex', args
-            return
-        [old, new] = words
-        if not self.whichindex.has_key(old) or \
-                  not self.whichindex.has_key(new):
-            print '*** bad key(s) in @synindex', args
-            return
-        if old <> new and \
-                  self.whichindex[old] is not self.whichindex[new]:
-            inew = self.whichindex[new]
-            inew[len(inew):] = self.whichindex[old]
-            self.whichindex[old] = inew
-    do_syncodeindex = do_synindex # XXX Should use code font
-
-    def do_printindex(self, args):
-        words = args.split()
-        for name in words:
-            if self.whichindex.has_key(name):
-                self.prindex(name)
-            else:
-                print '*** No index named', repr(name)
-
-    def prindex(self, name):
-        iscodeindex = (name not in self.noncodeindices)
-        index = self.whichindex[name]
-        if not index: return
-        if self.debugging:
-            print '!'*self.debugging, '--- Generating', \
-                  self.indextitle[name], 'index'
-        #  The node already provides a title
-        index1 = []
-        junkprog = re.compile('^(@[a-z]+)?{')
-        for key, node in index:
-            sortkey = key.lower()
-            # Remove leading `@cmd{' from sort key
-            # -- don't bother about the matching `}'
-            oldsortkey = sortkey
-            while 1:
-                mo = junkprog.match(sortkey)
-                if not mo:
-                    break
-                i = mo.end()
-                sortkey = sortkey[i:]
-            index1.append((sortkey, key, node))
-        del index[:]
-        index1.sort()
-        self.write('<DL COMPACT>\n')
-        prevkey = prevnode = None
-        for sortkey, key, node in index1:
-            if (key, node) == (prevkey, prevnode):
-                continue
-            if self.debugging > 1: print '!'*self.debugging, key, ':', node
-            self.write('<DT>')
-            if iscodeindex: key = '@code{' + key + '}'
-            if key != prevkey:
-                self.expand(key)
-            self.write('\n<DD><A HREF="%s">%s</A>\n' % (makefile(node), node))
-            prevkey, prevnode = key, node
-        self.write('</DL>\n')
-
-    # --- Final error reports ---
-
-    def report(self):
-        if self.unknown:
-            print '--- Unrecognized commands ---'
-            cmds = self.unknown.keys()
-            cmds.sort()
-            for cmd in cmds:
-                print cmd.ljust(20), self.unknown[cmd]
-
-
-class TexinfoParserHTML3(TexinfoParser):
-
-    COPYRIGHT_SYMBOL = "&copy;"
-    FN_ID_PATTERN = "[%(id)s]"
-    FN_SOURCE_PATTERN = '<A ID=footnoteref%(id)s ' \
-                        'HREF="#footnotetext%(id)s">' + FN_ID_PATTERN + '</A>'
-    FN_TARGET_PATTERN = '<FN ID=footnotetext%(id)s>\n' \
-                        '<P><A HREF="#footnoteref%(id)s">' + FN_ID_PATTERN \
-                        + '</A>\n%(text)s</P></FN>\n'
-    FN_HEADER = '<DIV CLASS=footnotes>\n  <HR NOSHADE WIDTH=200>\n' \
-                '  <STRONG><EM>Footnotes</EM></STRONG>\n  <P>\n'
-
-    Node = HTML3Node
-
-    def bgn_quotation(self, args): self.write('<BQ>')
-    def end_quotation(self): self.write('</BQ>\n')
-
-    def bgn_example(self, args):
-        # this use of <CODE> would not be legal in HTML 2.0,
-        # but is in more recent DTDs.
-        self.nofill = self.nofill + 1
-        self.write('<PRE CLASS=example><CODE>')
-    def end_example(self):
-        self.write("</CODE></PRE>\n")
-        self.nofill = self.nofill - 1
-
-    def bgn_flushleft(self, args):
-        self.nofill = self.nofill + 1
-        self.write('<PRE CLASS=flushleft>\n')
-
-    def bgn_flushright(self, args):
-        self.nofill = self.nofill + 1
-        self.write('<DIV ALIGN=right CLASS=flushright><ADDRESS COMPACT>\n')
-    def end_flushright(self):
-        self.write('</ADDRESS></DIV>\n')
-        self.nofill = self.nofill - 1
-
-    def bgn_menu(self, args):
-        self.write('<UL PLAIN CLASS=menu>\n')
-        self.write('  <LH>Menu</LH>\n')
-    def end_menu(self):
-        self.write('</UL>\n')
-
-
-# rpyron 2002-05-07
-class HTMLHelp:
-    """
-    This class encapsulates support for HTML Help. Node names,
-    file names, menu items, index items, and image file names are
-    accumulated until a call to finalize(). At that time, three
-    output files are created in the current directory:
-
-        `helpbase`.hhp  is a HTML Help Workshop project file.
-                        It contains various information, some of
-                        which I do not understand; I just copied
-                        the default project info from a fresh
-                        installation.
-        `helpbase`.hhc  is the Contents file for the project.
-        `helpbase`.hhk  is the Index file for the project.
-
-    When these files are used as input to HTML Help Workshop,
-    the resulting file will be named:
-
-        `helpbase`.chm
-
-    If none of the defaults in `helpbase`.hhp are changed,
-    the .CHM file will have Contents, Index, Search, and
-    Favorites tabs.
-    """
-
-    codeprog = re.compile('@code{(.*?)}')
-
-    def __init__(self,helpbase,dirname):
-        self.helpbase    = helpbase
-        self.dirname     = dirname
-        self.projectfile = None
-        self.contentfile = None
-        self.indexfile   = None
-        self.nodelist    = []
-        self.nodenames   = {}         # nodename : index
-        self.nodeindex   = {}
-        self.filenames   = {}         # filename : filename
-        self.indexlist   = []         # (args,nodename) == (key,location)
-        self.current     = ''
-        self.menudict    = {}
-        self.dumped      = {}
-
-
-    def addnode(self,name,next,prev,up,filename):
-        node = (name,next,prev,up,filename)
-        # add this file to dict
-        # retrieve list with self.filenames.values()
-        self.filenames[filename] = filename
-        # add this node to nodelist
-        self.nodeindex[name] = len(self.nodelist)
-        self.nodelist.append(node)
-        # set 'current' for menu items
-        self.current = name
-        self.menudict[self.current] = []
-
-    def menuitem(self,nodename):
-        menu = self.menudict[self.current]
-        menu.append(nodename)
-
-
-    def addimage(self,imagename):
-        self.filenames[imagename] = imagename
-
-    def index(self, args, nodename):
-        self.indexlist.append((args,nodename))
-
-    def beginmenu(self):
-        pass
-
-    def endmenu(self):
-        pass
-
-    def finalize(self):
-        if not self.helpbase:
-            return
-
-        # generate interesting filenames
-        resultfile   = self.helpbase + '.chm'
-        projectfile  = self.helpbase + '.hhp'
-        contentfile  = self.helpbase + '.hhc'
-        indexfile    = self.helpbase + '.hhk'
-
-        # generate a reasonable title
-        title        = self.helpbase
-
-        # get the default topic file
-        (topname,topnext,topprev,topup,topfile) = self.nodelist[0]
-        defaulttopic = topfile
-
-        # PROJECT FILE
-        try:
-            fp = open(projectfile,'w')
-            print>>fp, '[OPTIONS]'
-            print>>fp, 'Auto Index=Yes'
-            print>>fp, 'Binary TOC=No'
-            print>>fp, 'Binary Index=Yes'
-            print>>fp, 'Compatibility=1.1'
-            print>>fp, 'Compiled file=' + resultfile + ''
-            print>>fp, 'Contents file=' + contentfile + ''
-            print>>fp, 'Default topic=' + defaulttopic + ''
-            print>>fp, 'Error log file=ErrorLog.log'
-            print>>fp, 'Index file=' + indexfile + ''
-            print>>fp, 'Title=' + title + ''
-            print>>fp, 'Display compile progress=Yes'
-            print>>fp, 'Full-text search=Yes'
-            print>>fp, 'Default window=main'
-            print>>fp, ''
-            print>>fp, '[WINDOWS]'
-            print>>fp, ('main=,"' + contentfile + '","' + indexfile
-                        + '","","",,,,,0x23520,222,0x1046,[10,10,780,560],'
-                        '0xB0000,,,,,,0')
-            print>>fp, ''
-            print>>fp, '[FILES]'
-            print>>fp, ''
-            self.dumpfiles(fp)
-            fp.close()
-        except IOError, msg:
-            print projectfile, ':', msg
-            sys.exit(1)
-
-        # CONTENT FILE
-        try:
-            fp = open(contentfile,'w')
-            print>>fp, '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">'
-            print>>fp, '<!-- This file defines the table of contents -->'
-            print>>fp, '<HTML>'
-            print>>fp, '<HEAD>'
-            print>>fp, ('<meta name="GENERATOR"'
-                        'content="Microsoft&reg; HTML Help Workshop 4.1">')
-            print>>fp, '<!-- Sitemap 1.0 -->'
-            print>>fp, '</HEAD>'
-            print>>fp, '<BODY>'
-            print>>fp, '   <OBJECT type="text/site properties">'
-            print>>fp, '     <param name="Window Styles" value="0x800025">'
-            print>>fp, '     <param name="comment" value="title:">'
-            print>>fp, '     <param name="comment" value="base:">'
-            print>>fp, '   </OBJECT>'
-            self.dumpnodes(fp)
-            print>>fp, '</BODY>'
-            print>>fp, '</HTML>'
-            fp.close()
-        except IOError, msg:
-            print contentfile, ':', msg
-            sys.exit(1)
-
-        # INDEX FILE
-        try:
-            fp = open(indexfile  ,'w')
-            print>>fp, '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">'
-            print>>fp, '<!-- This file defines the index -->'
-            print>>fp, '<HTML>'
-            print>>fp, '<HEAD>'
-            print>>fp, ('<meta name="GENERATOR"'
-                        'content="Microsoft&reg; HTML Help Workshop 4.1">')
-            print>>fp, '<!-- Sitemap 1.0 -->'
-            print>>fp, '</HEAD>'
-            print>>fp, '<BODY>'
-            print>>fp, '<OBJECT type="text/site properties">'
-            print>>fp, '</OBJECT>'
-            self.dumpindex(fp)
-            print>>fp, '</BODY>'
-            print>>fp, '</HTML>'
-            fp.close()
-        except IOError, msg:
-            print indexfile  , ':', msg
-            sys.exit(1)
-
-    def dumpfiles(self, outfile=sys.stdout):
-        filelist = self.filenames.values()
-        filelist.sort()
-        for filename in filelist:
-            print>>outfile, filename
-
-    def dumpnodes(self, outfile=sys.stdout):
-        self.dumped = {}
-        if self.nodelist:
-            nodename, dummy, dummy, dummy, dummy = self.nodelist[0]
-            self.topnode = nodename
-
-        print>>outfile,  '<UL>'
-        for node in self.nodelist:
-            self.dumpnode(node,0,outfile)
-        print>>outfile,  '</UL>'
-
-    def dumpnode(self, node, indent=0, outfile=sys.stdout):
-        if node:
-            # Retrieve info for this node
-            (nodename,next,prev,up,filename) = node
-            self.current = nodename
-
-            # Have we been dumped already?
-            if self.dumped.has_key(nodename):
-                return
-            self.dumped[nodename] = 1
-
-            # Print info for this node
-            print>>outfile, ' '*indent,
-            print>>outfile, '<LI><OBJECT type="text/sitemap">',
-            print>>outfile, '<param name="Name" value="' + nodename +'">',
-            print>>outfile, '<param name="Local" value="'+ filename +'">',
-            print>>outfile, '</OBJECT>'
-
-            # Does this node have menu items?
-            try:
-                menu = self.menudict[nodename]
-                self.dumpmenu(menu,indent+2,outfile)
-            except KeyError:
-                pass
-
-    def dumpmenu(self, menu, indent=0, outfile=sys.stdout):
-        if menu:
-            currentnode = self.current
-            if currentnode != self.topnode:    # XXX this is a hack
-                print>>outfile, ' '*indent + '<UL>'
-                indent += 2
-            for item in menu:
-                menunode = self.getnode(item)
-                self.dumpnode(menunode,indent,outfile)
-            if currentnode != self.topnode:    # XXX this is a hack
-                print>>outfile, ' '*indent + '</UL>'
-                indent -= 2
-
-    def getnode(self, nodename):
-        try:
-            index = self.nodeindex[nodename]
-            return self.nodelist[index]
-        except KeyError:
-            return None
-        except IndexError:
-            return None
-
-    # (args,nodename) == (key,location)
-    def dumpindex(self, outfile=sys.stdout):
-        print>>outfile,  '<UL>'
-        for (key,location) in self.indexlist:
-            key = self.codeexpand(key)
-            location = makefile(location)
-            location = self.dirname + '/' + location
-            print>>outfile, '<LI><OBJECT type="text/sitemap">',
-            print>>outfile, '<param name="Name" value="' + key + '">',
-            print>>outfile, '<param name="Local" value="' + location + '">',
-            print>>outfile, '</OBJECT>'
-        print>>outfile,  '</UL>'
-
-    def codeexpand(self, line):
-        co = self.codeprog.match(line)
-        if not co:
-            return line
-        bgn, end = co.span(0)
-        a, b = co.span(1)
-        line = line[:bgn] + line[a:b] + line[end:]
-        return line
-
-
-# Put @var{} around alphabetic substrings
-def makevar(str):
-    return '@var{'+str+'}'
-
-
-# Split a string in "words" according to findwordend
-def splitwords(str, minlength):
-    words = []
-    i = 0
-    n = len(str)
-    while i < n:
-        while i < n and str[i] in ' \t\n': i = i+1
-        if i >= n: break
-        start = i
-        i = findwordend(str, i, n)
-        words.append(str[start:i])
-    while len(words) < minlength: words.append('')
-    return words
-
-
-# Find the end of a "word", matching braces and interpreting @@ @{ @}
-fwprog = re.compile('[@{} ]')
-def findwordend(str, i, n):
-    level = 0
-    while i < n:
-        mo = fwprog.search(str, i)
-        if not mo:
-            break
-        i = mo.start()
-        c = str[i]; i = i+1
-        if c == '@': i = i+1 # Next character is not special
-        elif c == '{': level = level+1
-        elif c == '}': level = level-1
-        elif c == ' ' and level <= 0: return i-1
-    return n
-
-
-# Convert a node name into a file name
-def makefile(nodename):
-    nodename = nodename.strip()
-    return fixfunnychars(nodename) + '.html'
-
-
-# Characters that are perfectly safe in filenames and hyperlinks
-goodchars = string.ascii_letters + string.digits + '!@-=+.'
-
-# Replace characters that aren't perfectly safe by dashes
-# Underscores are bad since Cern HTTPD treats them as delimiters for
-# encoding times, so you get mismatches if you compress your files:
-# a.html.gz will map to a_b.html.gz
-def fixfunnychars(addr):
-    i = 0
-    while i < len(addr):
-        c = addr[i]
-        if c not in goodchars:
-            c = '-'
-            addr = addr[:i] + c + addr[i+1:]
-        i = i + len(c)
-    return addr
-
-
-# Increment a string used as an enumeration
-def increment(s):
-    if not s:
-        return '1'
-    for sequence in string.digits, string.lowercase, string.uppercase:
-        lastc = s[-1]
-        if lastc in sequence:
-            i = sequence.index(lastc) + 1
-            if i >= len(sequence):
-                if len(s) == 1:
-                    s = sequence[0]*2
-                    if s == '00':
-                        s = '10'
-                else:
-                    s = increment(s[:-1]) + sequence[0]
-            else:
-                s = s[:-1] + sequence[i]
-            return s
-    return s # Don't increment
-
-
-def test():
-    import sys
-    debugging = 0
-    print_headers = 0
-    cont = 0
-    html3 = 0
-    htmlhelp = ''
-
-    while sys.argv[1] == ['-d']:
-        debugging = debugging + 1
-        del sys.argv[1]
-    if sys.argv[1] == '-p':
-        print_headers = 1
-        del sys.argv[1]
-    if sys.argv[1] == '-c':
-        cont = 1
-        del sys.argv[1]
-    if sys.argv[1] == '-3':
-        html3 = 1
-        del sys.argv[1]
-    if sys.argv[1] == '-H':
-        helpbase = sys.argv[2]
-        del sys.argv[1:3]
-    if len(sys.argv) <> 3:
-        print 'usage: texi2hh [-d [-d]] [-p] [-c] [-3] [-H htmlhelp]', \
-              'inputfile outputdirectory'
-        sys.exit(2)
-
-    if html3:
-        parser = TexinfoParserHTML3()
-    else:
-        parser = TexinfoParser()
-    parser.cont = cont
-    parser.debugging = debugging
-    parser.print_headers = print_headers
-
-    file = sys.argv[1]
-    dirname  = sys.argv[2]
-    parser.setdirname(dirname)
-    parser.setincludedir(os.path.dirname(file))
-
-    htmlhelp = HTMLHelp(helpbase, dirname)
-    parser.sethtmlhelp(htmlhelp)
-
-    try:
-        fp = open(file, 'r')
-    except IOError, msg:
-        print file, ':', msg
-        sys.exit(1)
-
-    parser.parse(fp)
-    fp.close()
-    parser.report()
-
-    htmlhelp.finalize()
-
-
-if __name__ == "__main__":
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/treesync.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/treesync.py
deleted file mode 100644
index 936f1a0..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/treesync.py
+++ /dev/null
@@ -1,205 +0,0 @@
-#! /usr/bin/env python
-
-"""Script to synchronize two source trees.
-
-Invoke with two arguments:
-
-python treesync.py slave master
-
-The assumption is that "master" contains CVS administration while
-slave doesn't.  All files in the slave tree that have a CVS/Entries
-entry in the master tree are synchronized.  This means:
-
-    If the files differ:
-        if the slave file is newer:
-            normalize the slave file
-            if the files still differ:
-                copy the slave to the master
-        else (the master is newer):
-            copy the master to the slave
-
-    normalizing the slave means replacing CRLF with LF when the master
-    doesn't use CRLF
-
-"""
-
-import os, sys, stat, getopt
-
-# Interactivity options
-default_answer = "ask"
-create_files = "yes"
-create_directories = "no"
-write_slave = "ask"
-write_master = "ask"
-
-def main():
-    global always_no, always_yes
-    global create_directories, write_master, write_slave
-    opts, args = getopt.getopt(sys.argv[1:], "nym:s:d:f:a:")
-    for o, a in opts:
-        if o == '-y':
-            default_answer = "yes"
-        if o == '-n':
-            default_answer = "no"
-        if o == '-s':
-            write_slave = a
-        if o == '-m':
-            write_master = a
-        if o == '-d':
-            create_directories = a
-        if o == '-f':
-            create_files = a
-        if o == '-a':
-            create_files = create_directories = write_slave = write_master = a
-    try:
-        [slave, master] = args
-    except ValueError:
-        print "usage: python", sys.argv[0] or "treesync.py",
-        print "[-n] [-y] [-m y|n|a] [-s y|n|a] [-d y|n|a] [-f n|y|a]",
-        print "slavedir masterdir"
-        return
-    process(slave, master)
-
-def process(slave, master):
-    cvsdir = os.path.join(master, "CVS")
-    if not os.path.isdir(cvsdir):
-        print "skipping master subdirectory", master
-        print "-- not under CVS"
-        return
-    print "-"*40
-    print "slave ", slave
-    print "master", master
-    if not os.path.isdir(slave):
-        if not okay("create slave directory %s?" % slave,
-                    answer=create_directories):
-            print "skipping master subdirectory", master
-            print "-- no corresponding slave", slave
-            return
-        print "creating slave directory", slave
-        try:
-            os.mkdir(slave)
-        except os.error, msg:
-            print "can't make slave directory", slave, ":", msg
-            return
-        else:
-            print "made slave directory", slave
-    cvsdir = None
-    subdirs = []
-    names = os.listdir(master)
-    for name in names:
-        mastername = os.path.join(master, name)
-        slavename = os.path.join(slave, name)
-        if name == "CVS":
-            cvsdir = mastername
-        else:
-            if os.path.isdir(mastername) and not os.path.islink(mastername):
-                subdirs.append((slavename, mastername))
-    if cvsdir:
-        entries = os.path.join(cvsdir, "Entries")
-        for e in open(entries).readlines():
-            words = e.split('/')
-            if words[0] == '' and words[1:]:
-                name = words[1]
-                s = os.path.join(slave, name)
-                m = os.path.join(master, name)
-                compare(s, m)
-    for (s, m) in subdirs:
-        process(s, m)
-
-def compare(slave, master):
-    try:
-        sf = open(slave, 'r')
-    except IOError:
-        sf = None
-    try:
-        mf = open(master, 'rb')
-    except IOError:
-        mf = None
-    if not sf:
-        if not mf:
-            print "Neither master nor slave exists", master
-            return
-        print "Creating missing slave", slave
-        copy(master, slave, answer=create_files)
-        return
-    if not mf:
-        print "Not updating missing master", master
-        return
-    if sf and mf:
-        if identical(sf, mf):
-            return
-    sft = mtime(sf)
-    mft = mtime(mf)
-    if mft > sft:
-        # Master is newer -- copy master to slave
-        sf.close()
-        mf.close()
-        print "Master             ", master
-        print "is newer than slave", slave
-        copy(master, slave, answer=write_slave)
-        return
-    # Slave is newer -- copy slave to master
-    print "Slave is", sft-mft, "seconds newer than master"
-    # But first check what to do about CRLF
-    mf.seek(0)
-    fun = funnychars(mf)
-    mf.close()
-    sf.close()
-    if fun:
-        print "***UPDATING MASTER (BINARY COPY)***"
-        copy(slave, master, "rb", answer=write_master)
-    else:
-        print "***UPDATING MASTER***"
-        copy(slave, master, "r", answer=write_master)
-
-BUFSIZE = 16*1024
-
-def identical(sf, mf):
-    while 1:
-        sd = sf.read(BUFSIZE)
-        md = mf.read(BUFSIZE)
-        if sd != md: return 0
-        if not sd: break
-    return 1
-
-def mtime(f):
-    st = os.fstat(f.fileno())
-    return st[stat.ST_MTIME]
-
-def funnychars(f):
-    while 1:
-        buf = f.read(BUFSIZE)
-        if not buf: break
-        if '\r' in buf or '\0' in buf: return 1
-    return 0
-
-def copy(src, dst, rmode="rb", wmode="wb", answer='ask'):
-    print "copying", src
-    print "     to", dst
-    if not okay("okay to copy? ", answer):
-        return
-    f = open(src, rmode)
-    g = open(dst, wmode)
-    while 1:
-        buf = f.read(BUFSIZE)
-        if not buf: break
-        g.write(buf)
-    f.close()
-    g.close()
-
-def okay(prompt, answer='ask'):
-    answer = answer.strip().lower()
-    if not answer or answer[0] not in 'ny':
-        answer = raw_input(prompt)
-        answer = answer.strip().lower()
-        if not answer:
-            answer = default_answer
-    if answer[:1] == 'y':
-        return 1
-    if answer[:1] == 'n':
-        return 0
-    print "Yes or No please -- try again:"
-    return okay(prompt)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/untabify.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/untabify.py
deleted file mode 100644
index 56e8250..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/untabify.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#! /usr/bin/env python
-
-"Replace tabs with spaces in argument files.  Print names of changed files."
-
-import os
-import sys
-import getopt
-
-def main():
-    tabsize = 8
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "t:")
-        if not args:
-            raise getopt.error, "At least one file argument required"
-    except getopt.error, msg:
-        print msg
-        print "usage:", sys.argv[0], "[-t tabwidth] file ..."
-        return
-    for optname, optvalue in opts:
-        if optname == '-t':
-            tabsize = int(optvalue)
-
-    for filename in args:
-        process(filename, tabsize)
-
-def process(filename, tabsize, verbose=True):
-    try:
-        f = open(filename)
-        text = f.read()
-        f.close()
-    except IOError, msg:
-        print "%r: I/O error: %s" % (filename, msg)
-        return
-    newtext = text.expandtabs(tabsize)
-    if newtext == text:
-        return
-    backup = filename + "~"
-    try:
-        os.unlink(backup)
-    except os.error:
-        pass
-    try:
-        os.rename(filename, backup)
-    except os.error:
-        pass
-    with open(filename, "w") as f:
-        f.write(newtext)
-    if verbose:
-        print filename
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/which.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/which.py
deleted file mode 100644
index 388935a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/which.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#! /usr/bin/env python
-
-# Variant of "which".
-# On stderr, near and total misses are reported.
-# '-l<flags>' argument adds ls -l<flags> of each file found.
-
-import sys
-if sys.path[0] in (".", ""): del sys.path[0]
-
-import sys, os
-from stat import *
-
-def msg(str):
-    sys.stderr.write(str + '\n')
-
-def main():
-    pathlist = os.environ['PATH'].split(os.pathsep)
-
-    sts = 0
-    longlist = ''
-
-    if sys.argv[1:] and sys.argv[1][:2] == '-l':
-        longlist = sys.argv[1]
-        del sys.argv[1]
-
-    for prog in sys.argv[1:]:
-        ident = ()
-        for dir in pathlist:
-            filename = os.path.join(dir, prog)
-            try:
-                st = os.stat(filename)
-            except os.error:
-                continue
-            if not S_ISREG(st[ST_MODE]):
-                msg(filename + ': not a disk file')
-            else:
-                mode = S_IMODE(st[ST_MODE])
-                if mode & 0111:
-                    if not ident:
-                        print filename
-                        ident = st[:3]
-                    else:
-                        if st[:3] == ident:
-                            s = 'same as: '
-                        else:
-                            s = 'also: '
-                        msg(s + filename)
-                else:
-                    msg(filename + ': not executable')
-            if longlist:
-                sts = os.system('ls ' + longlist + ' ' + filename)
-                if sts: msg('"ls -l" exit status: ' + repr(sts))
-        if not ident:
-            msg(prog + ': not found')
-            sts = 1
-
-    sys.exit(sts)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/win_add2path.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/win_add2path.py
deleted file mode 100644
index 1f69a33..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/win_add2path.py
+++ /dev/null
@@ -1,57 +0,0 @@
-"""Add Python to the search path on Windows
-
-This is a simple script to add Python to the Windows search path. It
-modifies the current user (HKCU) tree of the registry.
-
-Copyright (c) 2008 by Christian Heimes <christian@cheimes.de>
-Licensed to PSF under a Contributor Agreement.
-"""
-
-import sys
-import site
-import os
-import _winreg
-
-HKCU = _winreg.HKEY_CURRENT_USER
-ENV = "Environment"
-PATH = "PATH"
-DEFAULT = u"%PATH%"
-
-def modify():
-    pythonpath = os.path.dirname(os.path.normpath(sys.executable))
-    scripts = os.path.join(pythonpath, "Scripts")
-    appdata = os.environ["APPDATA"]
-    if hasattr(site, "USER_SITE"):
-        userpath = site.USER_SITE.replace(appdata, "%APPDATA%")
-        userscripts = os.path.join(userpath, "Scripts")
-    else:
-        userscripts = None
-
-    with _winreg.CreateKey(HKCU, ENV) as key:
-        try:
-            envpath = _winreg.QueryValueEx(key, PATH)[0]
-        except WindowsError:
-            envpath = DEFAULT
-
-        paths = [envpath]
-        for path in (pythonpath, scripts, userscripts):
-            if path and path not in envpath and os.path.isdir(path):
-                paths.append(path)
-
-        envpath = os.pathsep.join(paths)
-        _winreg.SetValueEx(key, PATH, 0, _winreg.REG_EXPAND_SZ, envpath)
-        return paths, envpath
-
-def main():
-    paths, envpath = modify()
-    if len(paths) > 1:
-        print "Path(s) added:"
-        print '\n'.join(paths[1:])
-    else:
-        print "No path was added"
-    print "\nPATH is now:\n%s\n" % envpath
-    print "Expanded:"
-    print _winreg.ExpandEnvironmentStrings(envpath)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/xxci.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/xxci.py
deleted file mode 100644
index ff574c3..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/scripts/xxci.py
+++ /dev/null
@@ -1,116 +0,0 @@
-#! /usr/bin/env python
-
-# xxci
-#
-# check in files for which rcsdiff returns nonzero exit status
-
-import sys
-import os
-from stat import *
-import fnmatch
-
-EXECMAGIC = '\001\140\000\010'
-
-MAXSIZE = 200*1024 # Files this big must be binaries and are skipped.
-
-def getargs():
-    args = sys.argv[1:]
-    if args:
-        return args
-    print 'No arguments, checking almost *, in "ls -t" order'
-    list = []
-    for file in os.listdir(os.curdir):
-        if not skipfile(file):
-            list.append((getmtime(file), file))
-    list.sort()
-    if not list:
-        print 'Nothing to do -- exit 1'
-        sys.exit(1)
-    list.sort()
-    list.reverse()
-    for mtime, file in list: args.append(file)
-    return args
-
-def getmtime(file):
-    try:
-        st = os.stat(file)
-        return st[ST_MTIME]
-    except os.error:
-        return -1
-
-badnames = ['tags', 'TAGS', 'xyzzy', 'nohup.out', 'core']
-badprefixes = ['.', ',', '@', '#', 'o.']
-badsuffixes = \
-        ['~', '.a', '.o', '.old', '.bak', '.orig', '.new', '.prev', '.not', \
-         '.pyc', '.fdc', '.rgb', '.elc', ',v']
-ignore = []
-
-def setup():
-    ignore[:] = badnames
-    for p in badprefixes:
-        ignore.append(p + '*')
-    for p in badsuffixes:
-        ignore.append('*' + p)
-    try:
-        f = open('.xxcign', 'r')
-    except IOError:
-        return
-    ignore[:] = ignore + f.read().split()
-
-def skipfile(file):
-    for p in ignore:
-        if fnmatch.fnmatch(file, p): return 1
-    try:
-        st = os.lstat(file)
-    except os.error:
-        return 1 # Doesn't exist -- skip it
-    # Skip non-plain files.
-    if not S_ISREG(st[ST_MODE]): return 1
-    # Skip huge files -- probably binaries.
-    if st[ST_SIZE] >= MAXSIZE: return 1
-    # Skip executables
-    try:
-        data = open(file, 'r').read(len(EXECMAGIC))
-        if data == EXECMAGIC: return 1
-    except:
-        pass
-    return 0
-
-def badprefix(file):
-    for bad in badprefixes:
-        if file[:len(bad)] == bad: return 1
-    return 0
-
-def badsuffix(file):
-    for bad in badsuffixes:
-        if file[-len(bad):] == bad: return 1
-    return 0
-
-def go(args):
-    for file in args:
-        print file + ':'
-        if differing(file):
-            showdiffs(file)
-            if askyesno('Check in ' + file + ' ? '):
-                sts = os.system('rcs -l ' + file) # ignored
-                sts = os.system('ci -l ' + file)
-
-def differing(file):
-    cmd = 'co -p ' + file + ' 2>/dev/null | cmp -s - ' + file
-    sts = os.system(cmd)
-    return sts != 0
-
-def showdiffs(file):
-    cmd = 'rcsdiff ' + file + ' 2>&1 | ${PAGER-more}'
-    sts = os.system(cmd)
-
-def askyesno(prompt):
-    s = raw_input(prompt)
-    return s in ['y', 'yes']
-
-if __name__ == '__main__':
-    try:
-        setup()
-        go(getargs())
-    except KeyboardInterrupt:
-        print '[Intr]'
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/ssl/get-remote-certificate.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/ssl/get-remote-certificate.py
deleted file mode 100644
index 9e50853..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/ssl/get-remote-certificate.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env python
-#
-# fetch the certificate that the server(s) are providing in PEM form
-#
-# args are HOST:PORT [, HOST:PORT...]
-#
-# By Bill Janssen.
-
-import sys
-
-def fetch_server_certificate (host, port):
-
-    import re, tempfile, os, ssl
-
-    def subproc(cmd):
-        from subprocess import Popen, PIPE, STDOUT
-        proc = Popen(cmd, stdout=PIPE, stderr=STDOUT, shell=True)
-        status = proc.wait()
-        output = proc.stdout.read()
-        return status, output
-
-    def strip_to_x509_cert(certfile_contents, outfile=None):
-        m = re.search(r"^([-]+BEGIN CERTIFICATE[-]+[\r]*\n"
-                      r".*[\r]*^[-]+END CERTIFICATE[-]+)$",
-                      certfile_contents, re.MULTILINE | re.DOTALL)
-        if not m:
-            return None
-        else:
-            tn = tempfile.mktemp()
-            fp = open(tn, "w")
-            fp.write(m.group(1) + "\n")
-            fp.close()
-            try:
-                tn2 = (outfile or tempfile.mktemp())
-                status, output = subproc(r'openssl x509 -in "%s" -out "%s"' %
-                                         (tn, tn2))
-                if status != 0:
-                    raise OperationError(status, tsig, output)
-                fp = open(tn2, 'rb')
-                data = fp.read()
-                fp.close()
-                os.unlink(tn2)
-                return data
-            finally:
-                os.unlink(tn)
-
-    if sys.platform.startswith("win"):
-        tfile = tempfile.mktemp()
-        fp = open(tfile, "w")
-        fp.write("quit\n")
-        fp.close()
-        try:
-            status, output = subproc(
-                'openssl s_client -connect "%s:%s" -showcerts < "%s"' %
-                (host, port, tfile))
-        finally:
-            os.unlink(tfile)
-    else:
-        status, output = subproc(
-            'openssl s_client -connect "%s:%s" -showcerts < /dev/null' %
-            (host, port))
-    if status != 0:
-        raise OSError(status)
-    certtext = strip_to_x509_cert(output)
-    if not certtext:
-        raise ValueError("Invalid response received from server at %s:%s" %
-                         (host, port))
-    return certtext
-
-if __name__ == "__main__":
-    if len(sys.argv) < 2:
-        sys.stderr.write(
-            "Usage:  %s HOSTNAME:PORTNUMBER [, HOSTNAME:PORTNUMBER...]\n" %
-            sys.argv[0])
-        sys.exit(1)
-    for arg in sys.argv[1:]:
-        host, port = arg.split(":")
-        sys.stdout.write(fetch_server_certificate(host, int(port)))
-    sys.exit(0)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/Makefile b/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/Makefile
deleted file mode 100644
index 2fc88b9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/Makefile
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-# Recreate the Python charmap codecs from the Unicode mapping
-# files available at ftp://ftp.unicode.org/
-#
-#(c) Copyright Marc-Andre Lemburg, 2005.
-#    Licensed to PSF under a Contributor Agreement.
-
-# Python binary to use
-PYTHON = python
-
-# Remove tool to use
-RM = /bin/rm
-
-### Generic targets
-
-all:	distclean mappings codecs
-
-codecs:	misc windows iso apple ebcdic custom-mappings cjk
-
-### Mappings
-
-mappings:
-	ncftpget -R ftp.unicode.org . Public/MAPPINGS
-
-### Codecs
-
-build/:
-	mkdir build
-
-misc:	build/
-	$(PYTHON) gencodec.py MAPPINGS/VENDORS/MISC/ build/
-	$(RM) build/atarist.*
-	$(RM) build/us_ascii_quotes.*
-	$(RM) build/ibmgraph.*
-	$(RM) build/sgml.*
-	$(RM) -f build/readme.*
-
-custom-mappings:	build/
-	$(PYTHON) gencodec.py python-mappings/ build/
-
-windows:	build/
-	$(PYTHON) gencodec.py MAPPINGS/VENDORS/MICSFT/WINDOWS/ build/
-	$(RM) build/cp9*
-	$(RM) -f build/readme.*
-
-iso:	build/
-	$(PYTHON) gencodec.py MAPPINGS/ISO8859/ build/ iso
-	$(RM) -f build/isoreadme.*
-
-apple:	build/
-	$(PYTHON) gencodec.py MAPPINGS/VENDORS/APPLE/ build/ mac_
-	$(RM) build/mac_dingbats.*
-	$(RM) build/mac_japanese.*
-	$(RM) build/mac_chin*
-	$(RM) build/mac_korean.*
-	$(RM) build/mac_symbol.*
-	$(RM) build/mac_corpchar.*
-	$(RM) build/mac_devanaga.*
-	$(RM) build/mac_gaelic.*
-	$(RM) build/mac_gurmukhi.*
-	$(RM) build/mac_hebrew.*
-	$(RM) build/mac_inuit.*
-	$(RM) build/mac_thai.*
-	$(RM) build/mac_ukraine.*
-	$(RM) build/mac_arabic.py
-	$(RM) build/mac_celtic.*
-	$(RM) build/mac_gujarati.*
-	$(RM) build/mac_keyboard.*
-	$(RM) -f build/mac_readme.*
-
-ebcdic:	build/
-	$(PYTHON) gencodec.py MAPPINGS/VENDORS/MICSFT/EBCDIC/ build/
-	$(RM) -f build/readme.*
-
-cjk:	build/
-	$(PYTHON) gencjkcodecs.py build/
-
-### Cleanup
-
-clean:
-	$(RM) -f build/*
-
-distclean:	clean
-	$(RM) -rf MAPPINGS/
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/comparecodecs.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/comparecodecs.py
deleted file mode 100644
index a6f3102..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/comparecodecs.py
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/env python
-
-""" Compare the output of two codecs.
-
-(c) Copyright 2005, Marc-Andre Lemburg (mal@lemburg.com).
-
-    Licensed to PSF under a Contributor Agreement.
-
-"""
-import sys
-
-def compare_codecs(encoding1, encoding2):
-
-    print 'Comparing encoding/decoding of   %r and   %r' % (encoding1, encoding2)
-    mismatch = 0
-    # Check encoding
-    for i in range(sys.maxunicode):
-        u = unichr(i)
-        try:
-            c1 = u.encode(encoding1)
-        except UnicodeError, reason:
-            c1 = '<undefined>'
-        try:
-            c2 = u.encode(encoding2)
-        except UnicodeError, reason:
-            c2 = '<undefined>'
-        if c1 != c2:
-            print ' * encoding mismatch for 0x%04X: %-14r != %r' % \
-                  (i, c1, c2)
-            mismatch += 1
-    # Check decoding
-    for i in range(256):
-        c = chr(i)
-        try:
-            u1 = c.decode(encoding1)
-        except UnicodeError:
-            u1 = u'<undefined>'
-        try:
-            u2 = c.decode(encoding2)
-        except UnicodeError:
-            u2 = u'<undefined>'
-        if u1 != u2:
-            print ' * decoding mismatch for 0x%04X: %-14r != %r' % \
-                  (i, u1, u2)
-            mismatch += 1
-    if mismatch:
-        print
-        print 'Found %i mismatches' % mismatch
-    else:
-        print '-> Codecs are identical.'
-
-if __name__ == '__main__':
-    compare_codecs(sys.argv[1], sys.argv[2])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/gencjkcodecs.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/gencjkcodecs.py
deleted file mode 100644
index 5ac97d4..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/gencjkcodecs.py
+++ /dev/null
@@ -1,68 +0,0 @@
-import os, string
-
-codecs = {
-    'cn': ('gb2312', 'gbk', 'gb18030', 'hz'),
-    'tw': ('big5', 'cp950'),
-    'hk': ('big5hkscs',),
-    'jp': ('cp932', 'shift_jis', 'euc_jp', 'euc_jisx0213', 'shift_jisx0213',
-           'euc_jis_2004', 'shift_jis_2004'),
-    'kr': ('cp949', 'euc_kr', 'johab'),
-    'iso2022': ('iso2022_jp', 'iso2022_jp_1', 'iso2022_jp_2',
-                'iso2022_jp_2004', 'iso2022_jp_3', 'iso2022_jp_ext',
-                'iso2022_kr'),
-}
-
-TEMPLATE = string.Template("""\
-#
-# $encoding.py: Python Unicode Codec for $ENCODING
-#
-# Written by Hye-Shik Chang <perky@FreeBSD.org>
-#
-
-import _codecs_$owner, codecs
-import _multibytecodec as mbc
-
-codec = _codecs_$owner.getcodec('$encoding')
-
-class Codec(codecs.Codec):
-    encode = codec.encode
-    decode = codec.decode
-
-class IncrementalEncoder(mbc.MultibyteIncrementalEncoder,
-                         codecs.IncrementalEncoder):
-    codec = codec
-
-class IncrementalDecoder(mbc.MultibyteIncrementalDecoder,
-                         codecs.IncrementalDecoder):
-    codec = codec
-
-class StreamReader(Codec, mbc.MultibyteStreamReader, codecs.StreamReader):
-    codec = codec
-
-class StreamWriter(Codec, mbc.MultibyteStreamWriter, codecs.StreamWriter):
-    codec = codec
-
-def getregentry():
-    return codecs.CodecInfo(
-        name='$encoding',
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-""")
-
-def gencodecs(prefix):
-    for loc, encodings in codecs.iteritems():
-        for enc in encodings:
-            code = TEMPLATE.substitute(ENCODING=enc.upper(),
-                                       encoding=enc.lower(),
-                                       owner=loc)
-            codecpath = os.path.join(prefix, enc + '.py')
-            open(codecpath, 'w').write(code)
-
-if __name__ == '__main__':
-    import sys
-    gencodecs(sys.argv[1])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/gencodec.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/gencodec.py
deleted file mode 100644
index 2626279..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/gencodec.py
+++ /dev/null
@@ -1,423 +0,0 @@
-""" Unicode Mapping Parser and Codec Generator.
-
-This script parses Unicode mapping files as available from the Unicode
-site (ftp://ftp.unicode.org/Public/MAPPINGS/) and creates Python codec
-modules from them. The codecs use the standard character mapping codec
-to actually apply the mapping.
-
-Synopsis: gencodec.py dir codec_prefix
-
-All files in dir are scanned and those producing non-empty mappings
-will be written to <codec_prefix><mapname>.py with <mapname> being the
-first part of the map's filename ('a' in a.b.c.txt) converted to
-lowercase with hyphens replaced by underscores.
-
-The tool also writes marshalled versions of the mapping tables to the
-same location (with .mapping extension).
-
-Written by Marc-Andre Lemburg (mal@lemburg.com).
-
-(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
-(c) Copyright Guido van Rossum, 2000.
-
-Table generation:
-(c) Copyright Marc-Andre Lemburg, 2005.
-    Licensed to PSF under a Contributor Agreement.
-
-"""#"
-
-import re, os, marshal, codecs
-
-# Maximum allowed size of charmap tables
-MAX_TABLE_SIZE = 8192
-
-# Standard undefined Unicode code point
-UNI_UNDEFINED = unichr(0xFFFE)
-
-mapRE = re.compile('((?:0x[0-9a-fA-F]+\+?)+)'
-                   '\s+'
-                   '((?:(?:0x[0-9a-fA-Z]+|<[A-Za-z]+>)\+?)*)'
-                   '\s*'
-                   '(#.+)?')
-
-def parsecodes(codes, len=len, range=range):
-
-    """ Converts code combinations to either a single code integer
-        or a tuple of integers.
-
-        meta-codes (in angular brackets, e.g. <LR> and <RL>) are
-        ignored.
-
-        Empty codes or illegal ones are returned as None.
-
-    """
-    if not codes:
-        return None
-    l = codes.split('+')
-    if len(l) == 1:
-        return int(l[0],16)
-    for i in range(len(l)):
-        try:
-            l[i] = int(l[i],16)
-        except ValueError:
-            l[i] = None
-    l = [x for x in l if x is not None]
-    if len(l) == 1:
-        return l[0]
-    else:
-        return tuple(l)
-
-def readmap(filename):
-
-    f = open(filename,'r')
-    lines = f.readlines()
-    f.close()
-    enc2uni = {}
-    identity = []
-    unmapped = range(256)
-
-    # UTC mapping tables per convention don't include the identity
-    # mappings for code points 0x00 - 0x1F and 0x7F, unless these are
-    # explicitly mapped to different characters or undefined
-    for i in range(32) + [127]:
-        identity.append(i)
-        unmapped.remove(i)
-        enc2uni[i] = (i, 'CONTROL CHARACTER')
-
-    for line in lines:
-        line = line.strip()
-        if not line or line[0] == '#':
-            continue
-        m = mapRE.match(line)
-        if not m:
-            #print '* not matched: %s' % repr(line)
-            continue
-        enc,uni,comment = m.groups()
-        enc = parsecodes(enc)
-        uni = parsecodes(uni)
-        if comment is None:
-            comment = ''
-        else:
-            comment = comment[1:].strip()
-        if enc < 256:
-            if enc in unmapped:
-                unmapped.remove(enc)
-            if enc == uni:
-                identity.append(enc)
-            enc2uni[enc] = (uni,comment)
-        else:
-            enc2uni[enc] = (uni,comment)
-
-    # If there are more identity-mapped entries than unmapped entries,
-    # it pays to generate an identity dictionary first, and add explicit
-    # mappings to None for the rest
-    if len(identity) >= len(unmapped):
-        for enc in unmapped:
-            enc2uni[enc] = (None, "")
-        enc2uni['IDENTITY'] = 256
-
-    return enc2uni
-
-def hexrepr(t, precision=4):
-
-    if t is None:
-        return 'None'
-    try:
-        len(t)
-    except:
-        return '0x%0*X' % (precision, t)
-    try:
-        return '(' + ', '.join(['0x%0*X' % (precision, item)
-                                for item in t]) + ')'
-    except TypeError, why:
-        print '* failed to convert %r: %s' % (t, why)
-        raise
-
-def python_mapdef_code(varname, map, comments=1, precisions=(2, 4)):
-
-    l = []
-    append = l.append
-    if "IDENTITY" in map:
-        append("%s = codecs.make_identity_dict(range(%d))" %
-               (varname, map["IDENTITY"]))
-        append("%s.update({" % varname)
-        splits = 1
-        del map["IDENTITY"]
-        identity = 1
-    else:
-        append("%s = {" % varname)
-        splits = 0
-        identity = 0
-
-    mappings = sorted(map.items())
-    i = 0
-    key_precision, value_precision = precisions
-    for mapkey, mapvalue in mappings:
-        mapcomment = ''
-        if isinstance(mapkey, tuple):
-            (mapkey, mapcomment) = mapkey
-        if isinstance(mapvalue, tuple):
-            (mapvalue, mapcomment) = mapvalue
-        if mapkey is None:
-            continue
-        if (identity and
-            mapkey == mapvalue and
-            mapkey < 256):
-            # No need to include identity mappings, since these
-            # are already set for the first 256 code points.
-            continue
-        key = hexrepr(mapkey, key_precision)
-        value = hexrepr(mapvalue, value_precision)
-        if mapcomment and comments:
-            append('    %s: %s,\t#  %s' % (key, value, mapcomment))
-        else:
-            append('    %s: %s,' % (key, value))
-        i += 1
-        if i == 4096:
-            # Split the definition into parts to that the Python
-            # parser doesn't dump core
-            if splits == 0:
-                append('}')
-            else:
-                append('})')
-            append('%s.update({' % varname)
-            i = 0
-            splits = splits + 1
-    if splits == 0:
-        append('}')
-    else:
-        append('})')
-
-    return l
-
-def python_tabledef_code(varname, map, comments=1, key_precision=2):
-
-    l = []
-    append = l.append
-    append('%s = (' % varname)
-
-    # Analyze map and create table dict
-    mappings = sorted(map.items())
-    table = {}
-    maxkey = 0
-    if 'IDENTITY' in map:
-        for key in range(256):
-            table[key] = (key, '')
-        maxkey = 255
-        del map['IDENTITY']
-    for mapkey, mapvalue in mappings:
-        mapcomment = ''
-        if isinstance(mapkey, tuple):
-            (mapkey, mapcomment) = mapkey
-        if isinstance(mapvalue, tuple):
-            (mapvalue, mapcomment) = mapvalue
-        if mapkey is None:
-            continue
-        table[mapkey] = (mapvalue, mapcomment)
-        if mapkey > maxkey:
-            maxkey = mapkey
-    if maxkey > MAX_TABLE_SIZE:
-        # Table too large
-        return None
-
-    # Create table code
-    for key in range(maxkey + 1):
-        if key not in table:
-            mapvalue = None
-            mapcomment = 'UNDEFINED'
-        else:
-            mapvalue, mapcomment = table[key]
-        if mapvalue is None:
-            mapchar = UNI_UNDEFINED
-        else:
-            if isinstance(mapvalue, tuple):
-                # 1-n mappings not supported
-                return None
-            else:
-                mapchar = unichr(mapvalue)
-        if mapcomment and comments:
-            append('    %r\t#  %s -> %s' % (mapchar,
-                                            hexrepr(key, key_precision),
-                                            mapcomment))
-        else:
-            append('    %r' % mapchar)
-
-    append(')')
-    return l
-
-def codegen(name, map, encodingname, comments=1):
-
-    """ Returns Python source for the given map.
-
-        Comments are included in the source, if comments is true (default).
-
-    """
-    # Generate code
-    decoding_map_code = python_mapdef_code(
-        'decoding_map',
-        map,
-        comments=comments)
-    decoding_table_code = python_tabledef_code(
-        'decoding_table',
-        map,
-        comments=comments)
-    encoding_map_code = python_mapdef_code(
-        'encoding_map',
-        codecs.make_encoding_map(map),
-        comments=comments,
-        precisions=(4, 2))
-
-    if decoding_table_code:
-        suffix = 'table'
-    else:
-        suffix = 'map'
-
-    l = [
-        '''\
-""" Python Character Mapping Codec %s generated from '%s' with gencodec.py.
-
-"""#"
-
-import codecs
-
-### Codec APIs
-
-class Codec(codecs.Codec):
-
-    def encode(self,input,errors='strict'):
-        return codecs.charmap_encode(input,errors,encoding_%s)
-
-    def decode(self,input,errors='strict'):
-        return codecs.charmap_decode(input,errors,decoding_%s)
-''' % (encodingname, name, suffix, suffix)]
-    l.append('''\
-class IncrementalEncoder(codecs.IncrementalEncoder):
-    def encode(self, input, final=False):
-        return codecs.charmap_encode(input,self.errors,encoding_%s)[0]
-
-class IncrementalDecoder(codecs.IncrementalDecoder):
-    def decode(self, input, final=False):
-        return codecs.charmap_decode(input,self.errors,decoding_%s)[0]''' %
-        (suffix, suffix))
-
-    l.append('''
-class StreamWriter(Codec,codecs.StreamWriter):
-    pass
-
-class StreamReader(Codec,codecs.StreamReader):
-    pass
-
-### encodings module API
-
-def getregentry():
-    return codecs.CodecInfo(
-        name=%r,
-        encode=Codec().encode,
-        decode=Codec().decode,
-        incrementalencoder=IncrementalEncoder,
-        incrementaldecoder=IncrementalDecoder,
-        streamreader=StreamReader,
-        streamwriter=StreamWriter,
-    )
-''' % encodingname.replace('_', '-'))
-
-    # Add decoding table or map (with preference to the table)
-    if not decoding_table_code:
-        l.append('''
-### Decoding Map
-''')
-        l.extend(decoding_map_code)
-    else:
-        l.append('''
-### Decoding Table
-''')
-        l.extend(decoding_table_code)
-
-    # Add encoding map
-    if decoding_table_code:
-        l.append('''
-### Encoding table
-encoding_table=codecs.charmap_build(decoding_table)
-''')
-    else:
-        l.append('''
-### Encoding Map
-''')
-        l.extend(encoding_map_code)
-
-    # Final new-line
-    l.append('')
-
-    return '\n'.join(l).expandtabs()
-
-def pymap(name,map,pyfile,encodingname,comments=1):
-
-    code = codegen(name,map,encodingname,comments)
-    f = open(pyfile,'w')
-    f.write(code)
-    f.close()
-
-def marshalmap(name,map,marshalfile):
-
-    d = {}
-    for e,(u,c) in map.items():
-        d[e] = (u,c)
-    f = open(marshalfile,'wb')
-    marshal.dump(d,f)
-    f.close()
-
-def convertdir(dir, dirprefix='', nameprefix='', comments=1):
-
-    mapnames = os.listdir(dir)
-    for mapname in mapnames:
-        mappathname = os.path.join(dir, mapname)
-        if not os.path.isfile(mappathname):
-            continue
-        name = os.path.split(mapname)[1]
-        name = name.replace('-','_')
-        name = name.split('.')[0]
-        name = name.lower()
-        name = nameprefix + name
-        codefile = name + '.py'
-        marshalfile = name + '.mapping'
-        print 'converting %s to %s and %s' % (mapname,
-                                              dirprefix + codefile,
-                                              dirprefix + marshalfile)
-        try:
-            map = readmap(os.path.join(dir,mapname))
-            if not map:
-                print '* map is empty; skipping'
-            else:
-                pymap(mappathname, map, dirprefix + codefile,name,comments)
-                marshalmap(mappathname, map, dirprefix + marshalfile)
-        except ValueError, why:
-            print '* conversion failed: %s' % why
-            raise
-
-def rewritepythondir(dir, dirprefix='', comments=1):
-
-    mapnames = os.listdir(dir)
-    for mapname in mapnames:
-        if not mapname.endswith('.mapping'):
-            continue
-        name = mapname[:-len('.mapping')]
-        codefile = name + '.py'
-        print 'converting %s to %s' % (mapname,
-                                       dirprefix + codefile)
-        try:
-            map = marshal.load(open(os.path.join(dir,mapname),
-                               'rb'))
-            if not map:
-                print '* map is empty; skipping'
-            else:
-                pymap(mapname, map, dirprefix + codefile,name,comments)
-        except ValueError, why:
-            print '* conversion failed: %s' % why
-
-if __name__ == '__main__':
-
-    import sys
-    if 1:
-        convertdir(*sys.argv[1:])
-    else:
-        rewritepythondir(*sys.argv[1:])
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/genwincodec.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/genwincodec.py
deleted file mode 100644
index 32dcada..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/genwincodec.py
+++ /dev/null
@@ -1,61 +0,0 @@
-"""This script generates a Python codec module from a Windows Code Page.
-
-It uses the function MultiByteToWideChar to generate a decoding table.
-"""
-
-import ctypes
-from ctypes import wintypes
-from gencodec import codegen
-import unicodedata
-
-def genwinmap(codepage):
-    MultiByteToWideChar = ctypes.windll.kernel32.MultiByteToWideChar
-    MultiByteToWideChar.argtypes = [wintypes.UINT, wintypes.DWORD,
-                                    wintypes.LPCSTR, ctypes.c_int,
-                                    wintypes.LPWSTR, ctypes.c_int]
-    MultiByteToWideChar.restype = ctypes.c_int
-
-    enc2uni = {}
-
-    for i in range(32) + [127]:
-        enc2uni[i] = (i, 'CONTROL CHARACTER')
-
-    for i in range(256):
-        buf = ctypes.create_unicode_buffer(2)
-        ret = MultiByteToWideChar(
-            codepage, 0,
-            chr(i), 1,
-            buf, 2)
-        assert ret == 1, "invalid code page"
-        assert buf[1] == '\x00'
-        try:
-            name = unicodedata.name(buf[0])
-        except ValueError:
-            try:
-                name = enc2uni[i][1]
-            except KeyError:
-                name = ''
-
-        enc2uni[i] = (ord(buf[0]), name)
-
-    return enc2uni
-
-def genwincodec(codepage):
-    import platform
-    map = genwinmap(codepage)
-    encodingname = 'cp%d' % codepage
-    code = codegen("", map, encodingname)
-    # Replace first lines with our own docstring
-    code = '''\
-"""Python Character Mapping Codec %s generated on Windows:
-%s with the command:
-  python Tools/unicode/genwincodec.py %s
-"""#"
-''' % (encodingname, ' '.join(platform.win32_ver()), codepage
-      ) + code.split('"""#"', 1)[1]
-
-    print code
-
-if __name__ == '__main__':
-    import sys
-    genwincodec(int(sys.argv[1]))
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/genwincodecs.bat b/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/genwincodecs.bat
deleted file mode 100644
index 6a6a671..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/genwincodecs.bat
+++ /dev/null
@@ -1,7 +0,0 @@
-@rem Recreate some python charmap codecs from the Windows function
-@rem MultiByteToWideChar.
-
-@cd /d %~dp0
-@mkdir build
-@rem Arabic DOS code page
-c:\python26\python genwincodec.py 720 > build/cp720.py
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/listcodecs.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/listcodecs.py
deleted file mode 100644
index 5ad4309..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/listcodecs.py
+++ /dev/null
@@ -1,41 +0,0 @@
-""" List all available codec modules.
-
-(c) Copyright 2005, Marc-Andre Lemburg (mal@lemburg.com).
-
-    Licensed to PSF under a Contributor Agreement.
-
-"""
-
-import os, codecs, encodings
-
-_debug = 0
-
-def listcodecs(dir):
-    names = []
-    for filename in os.listdir(dir):
-        if filename[-3:] != '.py':
-            continue
-        name = filename[:-3]
-        # Check whether we've found a true codec
-        try:
-            codecs.lookup(name)
-        except LookupError:
-            # Codec not found
-            continue
-        except Exception, reason:
-            # Probably an error from importing the codec; still it's
-            # a valid code name
-            if _debug:
-                print '* problem importing codec %r: %s' % \
-                      (name, reason)
-        names.append(name)
-    return names
-
-
-if __name__ == '__main__':
-    names = listcodecs(encodings.__path__[0])
-    names.sort()
-    print 'all_codecs = ['
-    for name in names:
-        print '    %r,' % name
-    print ']'
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/makeunicodedata.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/makeunicodedata.py
deleted file mode 100644
index 37b9f6e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/makeunicodedata.py
+++ /dev/null
@@ -1,1135 +0,0 @@
-#
-# (re)generate unicode property and type databases
-#
-# this script converts a unicode 3.2 database file to
-# Modules/unicodedata_db.h, Modules/unicodename_db.h,
-# and Objects/unicodetype_db.h
-#
-# history:
-# 2000-09-24 fl   created (based on bits and pieces from unidb)
-# 2000-09-25 fl   merged tim's splitbin fixes, separate decomposition table
-# 2000-09-25 fl   added character type table
-# 2000-09-26 fl   added LINEBREAK, DECIMAL, and DIGIT flags/fields (2.0)
-# 2000-11-03 fl   expand first/last ranges
-# 2001-01-19 fl   added character name tables (2.1)
-# 2001-01-21 fl   added decomp compression; dynamic phrasebook threshold
-# 2002-09-11 wd   use string methods
-# 2002-10-18 mvl  update to Unicode 3.2
-# 2002-10-22 mvl  generate NFC tables
-# 2002-11-24 mvl  expand all ranges, sort names version-independently
-# 2002-11-25 mvl  add UNIDATA_VERSION
-# 2004-05-29 perky add east asian width information
-# 2006-03-10 mvl  update to Unicode 4.1; add UCD 3.2 delta
-#
-# written by Fredrik Lundh (fredrik@pythonware.com)
-#
-
-import sys
-
-SCRIPT = sys.argv[0]
-VERSION = "2.6"
-
-# The Unicode Database
-UNIDATA_VERSION = "5.2.0"
-UNICODE_DATA = "UnicodeData%s.txt"
-COMPOSITION_EXCLUSIONS = "CompositionExclusions%s.txt"
-EASTASIAN_WIDTH = "EastAsianWidth%s.txt"
-UNIHAN = "Unihan%s.txt"
-DERIVEDNORMALIZATION_PROPS = "DerivedNormalizationProps%s.txt"
-LINE_BREAK = "LineBreak%s.txt"
-
-old_versions = ["3.2.0"]
-
-CATEGORY_NAMES = [ "Cn", "Lu", "Ll", "Lt", "Mn", "Mc", "Me", "Nd",
-    "Nl", "No", "Zs", "Zl", "Zp", "Cc", "Cf", "Cs", "Co", "Cn", "Lm",
-    "Lo", "Pc", "Pd", "Ps", "Pe", "Pi", "Pf", "Po", "Sm", "Sc", "Sk",
-    "So" ]
-
-BIDIRECTIONAL_NAMES = [ "", "L", "LRE", "LRO", "R", "AL", "RLE", "RLO",
-    "PDF", "EN", "ES", "ET", "AN", "CS", "NSM", "BN", "B", "S", "WS",
-    "ON" ]
-
-EASTASIANWIDTH_NAMES = [ "F", "H", "W", "Na", "A", "N" ]
-
-MANDATORY_LINE_BREAKS = [ "BK", "CR", "LF", "NL" ]
-
-# note: should match definitions in Objects/unicodectype.c
-ALPHA_MASK = 0x01
-DECIMAL_MASK = 0x02
-DIGIT_MASK = 0x04
-LOWER_MASK = 0x08
-LINEBREAK_MASK = 0x10
-SPACE_MASK = 0x20
-TITLE_MASK = 0x40
-UPPER_MASK = 0x80
-NODELTA_MASK = 0x100
-NUMERIC_MASK = 0x200
-
-def maketables(trace=0):
-
-    print "--- Reading", UNICODE_DATA % "", "..."
-
-    version = ""
-    unicode = UnicodeData(UNICODE_DATA % version,
-                          COMPOSITION_EXCLUSIONS % version,
-                          EASTASIAN_WIDTH % version,
-                          UNIHAN % version,
-                          DERIVEDNORMALIZATION_PROPS % version,
-                          LINE_BREAK % version)
-
-    print len(filter(None, unicode.table)), "characters"
-
-    for version in old_versions:
-        print "--- Reading", UNICODE_DATA % ("-"+version), "..."
-        old_unicode = UnicodeData(UNICODE_DATA % ("-"+version),
-                                  COMPOSITION_EXCLUSIONS % ("-"+version),
-                                  EASTASIAN_WIDTH % ("-"+version),
-                                  UNIHAN % ("-"+version))
-        print len(filter(None, old_unicode.table)), "characters"
-        merge_old_version(version, unicode, old_unicode)
-
-    makeunicodename(unicode, trace)
-    makeunicodedata(unicode, trace)
-    makeunicodetype(unicode, trace)
-
-# --------------------------------------------------------------------
-# unicode character properties
-
-def makeunicodedata(unicode, trace):
-
-    dummy = (0, 0, 0, 0, 0, 0)
-    table = [dummy]
-    cache = {0: dummy}
-    index = [0] * len(unicode.chars)
-
-    FILE = "Modules/unicodedata_db.h"
-
-    print "--- Preparing", FILE, "..."
-
-    # 1) database properties
-
-    for char in unicode.chars:
-        record = unicode.table[char]
-        if record:
-            # extract database properties
-            category = CATEGORY_NAMES.index(record[2])
-            combining = int(record[3])
-            bidirectional = BIDIRECTIONAL_NAMES.index(record[4])
-            mirrored = record[9] == "Y"
-            eastasianwidth = EASTASIANWIDTH_NAMES.index(record[15])
-            normalizationquickcheck = record[17]
-            item = (
-                category, combining, bidirectional, mirrored, eastasianwidth,
-                normalizationquickcheck
-                )
-            # add entry to index and item tables
-            i = cache.get(item)
-            if i is None:
-                cache[item] = i = len(table)
-                table.append(item)
-            index[char] = i
-
-    # 2) decomposition data
-
-    decomp_data = [0]
-    decomp_prefix = [""]
-    decomp_index = [0] * len(unicode.chars)
-    decomp_size = 0
-
-    comp_pairs = []
-    comp_first = [None] * len(unicode.chars)
-    comp_last = [None] * len(unicode.chars)
-
-    for char in unicode.chars:
-        record = unicode.table[char]
-        if record:
-            if record[5]:
-                decomp = record[5].split()
-                if len(decomp) > 19:
-                    raise Exception, "character %x has a decomposition too large for nfd_nfkd" % char
-                # prefix
-                if decomp[0][0] == "<":
-                    prefix = decomp.pop(0)
-                else:
-                    prefix = ""
-                try:
-                    i = decomp_prefix.index(prefix)
-                except ValueError:
-                    i = len(decomp_prefix)
-                    decomp_prefix.append(prefix)
-                prefix = i
-                assert prefix < 256
-                # content
-                decomp = [prefix + (len(decomp)<<8)] + [int(s, 16) for s in decomp]
-                # Collect NFC pairs
-                if not prefix and len(decomp) == 3 and \
-                   char not in unicode.exclusions and \
-                   unicode.table[decomp[1]][3] == "0":
-                    p, l, r = decomp
-                    comp_first[l] = 1
-                    comp_last[r] = 1
-                    comp_pairs.append((l,r,char))
-                try:
-                    i = decomp_data.index(decomp)
-                except ValueError:
-                    i = len(decomp_data)
-                    decomp_data.extend(decomp)
-                    decomp_size = decomp_size + len(decomp) * 2
-            else:
-                i = 0
-            decomp_index[char] = i
-
-    f = l = 0
-    comp_first_ranges = []
-    comp_last_ranges = []
-    prev_f = prev_l = None
-    for i in unicode.chars:
-        if comp_first[i] is not None:
-            comp_first[i] = f
-            f += 1
-            if prev_f is None:
-                prev_f = (i,i)
-            elif prev_f[1]+1 == i:
-                prev_f = prev_f[0],i
-            else:
-                comp_first_ranges.append(prev_f)
-                prev_f = (i,i)
-        if comp_last[i] is not None:
-            comp_last[i] = l
-            l += 1
-            if prev_l is None:
-                prev_l = (i,i)
-            elif prev_l[1]+1 == i:
-                prev_l = prev_l[0],i
-            else:
-                comp_last_ranges.append(prev_l)
-                prev_l = (i,i)
-    comp_first_ranges.append(prev_f)
-    comp_last_ranges.append(prev_l)
-    total_first = f
-    total_last = l
-
-    comp_data = [0]*(total_first*total_last)
-    for f,l,char in comp_pairs:
-        f = comp_first[f]
-        l = comp_last[l]
-        comp_data[f*total_last+l] = char
-
-    print len(table), "unique properties"
-    print len(decomp_prefix), "unique decomposition prefixes"
-    print len(decomp_data), "unique decomposition entries:",
-    print decomp_size, "bytes"
-    print total_first, "first characters in NFC"
-    print total_last, "last characters in NFC"
-    print len(comp_pairs), "NFC pairs"
-
-    print "--- Writing", FILE, "..."
-
-    fp = open(FILE, "w")
-    print >>fp, "/* this file was generated by %s %s */" % (SCRIPT, VERSION)
-    print >>fp
-    print >>fp, '#define UNIDATA_VERSION "%s"' % UNIDATA_VERSION
-    print >>fp, "/* a list of unique database records */"
-    print >>fp, \
-          "const _PyUnicode_DatabaseRecord _PyUnicode_Database_Records[] = {"
-    for item in table:
-        print >>fp, "    {%d, %d, %d, %d, %d, %d}," % item
-    print >>fp, "};"
-    print >>fp
-
-    print >>fp, "/* Reindexing of NFC first characters. */"
-    print >>fp, "#define TOTAL_FIRST",total_first
-    print >>fp, "#define TOTAL_LAST",total_last
-    print >>fp, "struct reindex{int start;short count,index;};"
-    print >>fp, "static struct reindex nfc_first[] = {"
-    for start,end in comp_first_ranges:
-        print >>fp,"  { %d, %d, %d}," % (start,end-start,comp_first[start])
-    print >>fp,"  {0,0,0}"
-    print >>fp,"};\n"
-    print >>fp, "static struct reindex nfc_last[] = {"
-    for start,end in comp_last_ranges:
-        print >>fp,"  { %d, %d, %d}," % (start,end-start,comp_last[start])
-    print >>fp,"  {0,0,0}"
-    print >>fp,"};\n"
-
-    # FIXME: <fl> the following tables could be made static, and
-    # the support code moved into unicodedatabase.c
-
-    print >>fp, "/* string literals */"
-    print >>fp, "const char *_PyUnicode_CategoryNames[] = {"
-    for name in CATEGORY_NAMES:
-        print >>fp, "    \"%s\"," % name
-    print >>fp, "    NULL"
-    print >>fp, "};"
-
-    print >>fp, "const char *_PyUnicode_BidirectionalNames[] = {"
-    for name in BIDIRECTIONAL_NAMES:
-        print >>fp, "    \"%s\"," % name
-    print >>fp, "    NULL"
-    print >>fp, "};"
-
-    print >>fp, "const char *_PyUnicode_EastAsianWidthNames[] = {"
-    for name in EASTASIANWIDTH_NAMES:
-        print >>fp, "    \"%s\"," % name
-    print >>fp, "    NULL"
-    print >>fp, "};"
-
-    print >>fp, "static const char *decomp_prefix[] = {"
-    for name in decomp_prefix:
-        print >>fp, "    \"%s\"," % name
-    print >>fp, "    NULL"
-    print >>fp, "};"
-
-    # split record index table
-    index1, index2, shift = splitbins(index, trace)
-
-    print >>fp, "/* index tables for the database records */"
-    print >>fp, "#define SHIFT", shift
-    Array("index1", index1).dump(fp, trace)
-    Array("index2", index2).dump(fp, trace)
-
-    # split decomposition index table
-    index1, index2, shift = splitbins(decomp_index, trace)
-
-    print >>fp, "/* decomposition data */"
-    Array("decomp_data", decomp_data).dump(fp, trace)
-
-    print >>fp, "/* index tables for the decomposition data */"
-    print >>fp, "#define DECOMP_SHIFT", shift
-    Array("decomp_index1", index1).dump(fp, trace)
-    Array("decomp_index2", index2).dump(fp, trace)
-
-    index, index2, shift = splitbins(comp_data, trace)
-    print >>fp, "/* NFC pairs */"
-    print >>fp, "#define COMP_SHIFT", shift
-    Array("comp_index", index).dump(fp, trace)
-    Array("comp_data", index2).dump(fp, trace)
-
-    # Generate delta tables for old versions
-    for version, table, normalization in unicode.changed:
-        cversion = version.replace(".","_")
-        records = [table[0]]
-        cache = {table[0]:0}
-        index = [0] * len(table)
-        for i, record in enumerate(table):
-            try:
-                index[i] = cache[record]
-            except KeyError:
-                index[i] = cache[record] = len(records)
-                records.append(record)
-        index1, index2, shift = splitbins(index, trace)
-        print >>fp, "static const change_record change_records_%s[] = {" % cversion
-        for record in records:
-            print >>fp, "\t{ %s }," % ", ".join(map(str,record))
-        print >>fp, "};"
-        Array("changes_%s_index" % cversion, index1).dump(fp, trace)
-        Array("changes_%s_data" % cversion, index2).dump(fp, trace)
-        print >>fp, "static const change_record* get_change_%s(Py_UCS4 n)" % cversion
-        print >>fp, "{"
-        print >>fp, "\tint index;"
-        print >>fp, "\tif (n >= 0x110000) index = 0;"
-        print >>fp, "\telse {"
-        print >>fp, "\t\tindex = changes_%s_index[n>>%d];" % (cversion, shift)
-        print >>fp, "\t\tindex = changes_%s_data[(index<<%d)+(n & %d)];" % \
-              (cversion, shift, ((1<<shift)-1))
-        print >>fp, "\t}"
-        print >>fp, "\treturn change_records_%s+index;" % cversion
-        print >>fp, "}\n"
-        print >>fp, "static Py_UCS4 normalization_%s(Py_UCS4 n)" % cversion
-        print >>fp, "{"
-        print >>fp, "\tswitch(n) {"
-        for k, v in normalization:
-            print >>fp, "\tcase %s: return 0x%s;" % (hex(k), v)
-        print >>fp, "\tdefault: return 0;"
-        print >>fp, "\t}\n}\n"
-
-    fp.close()
-
-# --------------------------------------------------------------------
-# unicode character type tables
-
-def makeunicodetype(unicode, trace):
-
-    FILE = "Objects/unicodetype_db.h"
-
-    print "--- Preparing", FILE, "..."
-
-    # extract unicode types
-    dummy = (0, 0, 0, 0, 0, 0)
-    table = [dummy]
-    cache = {0: dummy}
-    index = [0] * len(unicode.chars)
-    numeric = {}
-    spaces = []
-    linebreaks = []
-
-    for char in unicode.chars:
-        record = unicode.table[char]
-        if record:
-            # extract database properties
-            category = record[2]
-            bidirectional = record[4]
-            properties = record[16]
-            flags = 0
-            delta = True
-            if category in ["Lm", "Lt", "Lu", "Ll", "Lo"]:
-                flags |= ALPHA_MASK
-            if category == "Ll":
-                flags |= LOWER_MASK
-            if 'Line_Break' in properties or bidirectional == "B":
-                flags |= LINEBREAK_MASK
-                linebreaks.append(char)
-            if category == "Zs" or bidirectional in ("WS", "B", "S"):
-                flags |= SPACE_MASK
-                spaces.append(char)
-            if category == "Lt":
-                flags |= TITLE_MASK
-            if category == "Lu":
-                flags |= UPPER_MASK
-            # use delta predictor for upper/lower/title if it fits
-            if record[12]:
-                upper = int(record[12], 16)
-            else:
-                upper = char
-            if record[13]:
-                lower = int(record[13], 16)
-            else:
-                lower = char
-            if record[14]:
-                title = int(record[14], 16)
-            else:
-                # UCD.html says that a missing title char means that
-                # it defaults to the uppercase character, not to the
-                # character itself. Apparently, in the current UCD (5.x)
-                # this feature is never used
-                title = upper
-            upper_d = upper - char
-            lower_d = lower - char
-            title_d = title - char
-            if -32768 <= upper_d <= 32767 and \
-               -32768 <= lower_d <= 32767 and \
-               -32768 <= title_d <= 32767:
-                # use deltas
-                upper = upper_d & 0xffff
-                lower = lower_d & 0xffff
-                title = title_d & 0xffff
-            else:
-                flags |= NODELTA_MASK
-            # decimal digit, integer digit
-            decimal = 0
-            if record[6]:
-                flags |= DECIMAL_MASK
-                decimal = int(record[6])
-            digit = 0
-            if record[7]:
-                flags |= DIGIT_MASK
-                digit = int(record[7])
-            if record[8]:
-                flags |= NUMERIC_MASK
-                numeric.setdefault(record[8], []).append(char)
-            item = (
-                upper, lower, title, decimal, digit, flags
-                )
-            # add entry to index and item tables
-            i = cache.get(item)
-            if i is None:
-                cache[item] = i = len(table)
-                table.append(item)
-            index[char] = i
-
-    print len(table), "unique character type entries"
-    print sum(map(len, numeric.values())), "numeric code points"
-    print len(spaces), "whitespace code points"
-    print len(linebreaks), "linebreak code points"
-
-    print "--- Writing", FILE, "..."
-
-    fp = open(FILE, "w")
-    print >>fp, "/* this file was generated by %s %s */" % (SCRIPT, VERSION)
-    print >>fp
-    print >>fp, "/* a list of unique character type descriptors */"
-    print >>fp, "const _PyUnicode_TypeRecord _PyUnicode_TypeRecords[] = {"
-    for item in table:
-        print >>fp, "    {%d, %d, %d, %d, %d, %d}," % item
-    print >>fp, "};"
-    print >>fp
-
-    # split decomposition index table
-    index1, index2, shift = splitbins(index, trace)
-
-    print >>fp, "/* type indexes */"
-    print >>fp, "#define SHIFT", shift
-    Array("index1", index1).dump(fp, trace)
-    Array("index2", index2).dump(fp, trace)
-
-    # Generate code for _PyUnicode_ToNumeric()
-    numeric_items = sorted(numeric.items())
-    print >>fp, '/* Returns the numeric value as double for Unicode characters'
-    print >>fp, ' * having this property, -1.0 otherwise.'
-    print >>fp, ' */'
-    print >>fp, 'double _PyUnicode_ToNumeric(Py_UNICODE ch)'
-    print >>fp, '{'
-    print >>fp, '    switch (ch) {'
-    for value, codepoints in numeric_items:
-        # Turn text into float literals
-        parts = value.split('/')
-        parts = [repr(float(part)) for part in parts]
-        value = '/'.join(parts)
-
-        haswide = False
-        hasnonewide = False
-        codepoints.sort()
-        for codepoint in codepoints:
-            if codepoint < 0x10000:
-                hasnonewide = True
-            if codepoint >= 0x10000 and not haswide:
-                print >>fp, '#ifdef Py_UNICODE_WIDE'
-                haswide = True
-            print >>fp, '    case 0x%04X:' % (codepoint,)
-        if haswide and hasnonewide:
-            print >>fp, '#endif'
-        print >>fp, '        return (double) %s;' % (value,)
-        if haswide and not hasnonewide:
-            print >>fp, '#endif'
-    print >>fp,'    }'
-    print >>fp,'    return -1.0;'
-    print >>fp,'}'
-    print >>fp
-
-    # Generate code for _PyUnicode_IsWhitespace()
-    print >>fp, "/* Returns 1 for Unicode characters having the bidirectional"
-    print >>fp, " * type 'WS', 'B' or 'S' or the category 'Zs', 0 otherwise."
-    print >>fp, " */"
-    print >>fp, 'int _PyUnicode_IsWhitespace(register const Py_UNICODE ch)'
-    print >>fp, '{'
-    print >>fp, '#ifdef WANT_WCTYPE_FUNCTIONS'
-    print >>fp, '    return iswspace(ch);'
-    print >>fp, '#else'
-    print >>fp, '    switch (ch) {'
-
-    haswide = False
-    hasnonewide = False
-    for codepoint in sorted(spaces):
-        if codepoint < 0x10000:
-            hasnonewide = True
-        if codepoint >= 0x10000 and not haswide:
-            print >>fp, '#ifdef Py_UNICODE_WIDE'
-            haswide = True
-        print >>fp, '    case 0x%04X:' % (codepoint,)
-    if haswide and hasnonewide:
-        print >>fp, '#endif'
-    print >>fp, '        return 1;'
-    if haswide and not hasnonewide:
-        print >>fp, '#endif'
-
-    print >>fp,'    }'
-    print >>fp,'    return 0;'
-    print >>fp, '#endif'
-    print >>fp,'}'
-    print >>fp
-
-    # Generate code for _PyUnicode_IsLinebreak()
-    print >>fp, "/* Returns 1 for Unicode characters having the line break"
-    print >>fp, " * property 'BK', 'CR', 'LF' or 'NL' or having bidirectional"
-    print >>fp, " * type 'B', 0 otherwise."
-    print >>fp, " */"
-    print >>fp, 'int _PyUnicode_IsLinebreak(register const Py_UNICODE ch)'
-    print >>fp, '{'
-    print >>fp, '    switch (ch) {'
-    haswide = False
-    hasnonewide = False
-    for codepoint in sorted(linebreaks):
-        if codepoint < 0x10000:
-            hasnonewide = True
-        if codepoint >= 0x10000 and not haswide:
-            print >>fp, '#ifdef Py_UNICODE_WIDE'
-            haswide = True
-        print >>fp, '    case 0x%04X:' % (codepoint,)
-    if haswide and hasnonewide:
-        print >>fp, '#endif'
-    print >>fp, '        return 1;'
-    if haswide and not hasnonewide:
-        print >>fp, '#endif'
-
-    print >>fp,'    }'
-    print >>fp,'    return 0;'
-    print >>fp,'}'
-    print >>fp
-
-    fp.close()
-
-# --------------------------------------------------------------------
-# unicode name database
-
-def makeunicodename(unicode, trace):
-
-    FILE = "Modules/unicodename_db.h"
-
-    print "--- Preparing", FILE, "..."
-
-    # collect names
-    names = [None] * len(unicode.chars)
-
-    for char in unicode.chars:
-        record = unicode.table[char]
-        if record:
-            name = record[1].strip()
-            if name and name[0] != "<":
-                names[char] = name + chr(0)
-
-    print len(filter(lambda n: n is not None, names)), "distinct names"
-
-    # collect unique words from names (note that we differ between
-    # words inside a sentence, and words ending a sentence.  the
-    # latter includes the trailing null byte.
-
-    words = {}
-    n = b = 0
-    for char in unicode.chars:
-        name = names[char]
-        if name:
-            w = name.split()
-            b = b + len(name)
-            n = n + len(w)
-            for w in w:
-                l = words.get(w)
-                if l:
-                    l.append(None)
-                else:
-                    words[w] = [len(words)]
-
-    print n, "words in text;", b, "bytes"
-
-    wordlist = words.items()
-
-    # sort on falling frequency, then by name
-    def word_key(a):
-        aword, alist = a
-        return -len(alist), aword
-    wordlist.sort(key=word_key)
-
-    # figure out how many phrasebook escapes we need
-    escapes = 0
-    while escapes * 256 < len(wordlist):
-        escapes = escapes + 1
-    print escapes, "escapes"
-
-    short = 256 - escapes
-
-    assert short > 0
-
-    print short, "short indexes in lexicon"
-
-    # statistics
-    n = 0
-    for i in range(short):
-        n = n + len(wordlist[i][1])
-    print n, "short indexes in phrasebook"
-
-    # pick the most commonly used words, and sort the rest on falling
-    # length (to maximize overlap)
-
-    wordlist, wordtail = wordlist[:short], wordlist[short:]
-    wordtail.sort(key=lambda a: a[0], reverse=True)
-    wordlist.extend(wordtail)
-
-    # generate lexicon from words
-
-    lexicon_offset = [0]
-    lexicon = ""
-    words = {}
-
-    # build a lexicon string
-    offset = 0
-    for w, x in wordlist:
-        # encoding: bit 7 indicates last character in word (chr(128)
-        # indicates the last character in an entire string)
-        ww = w[:-1] + chr(ord(w[-1])+128)
-        # reuse string tails, when possible
-        o = lexicon.find(ww)
-        if o < 0:
-            o = offset
-            lexicon = lexicon + ww
-            offset = offset + len(w)
-        words[w] = len(lexicon_offset)
-        lexicon_offset.append(o)
-
-    lexicon = map(ord, lexicon)
-
-    # generate phrasebook from names and lexicon
-    phrasebook = [0]
-    phrasebook_offset = [0] * len(unicode.chars)
-    for char in unicode.chars:
-        name = names[char]
-        if name:
-            w = name.split()
-            phrasebook_offset[char] = len(phrasebook)
-            for w in w:
-                i = words[w]
-                if i < short:
-                    phrasebook.append(i)
-                else:
-                    # store as two bytes
-                    phrasebook.append((i>>8) + short)
-                    phrasebook.append(i&255)
-
-    assert getsize(phrasebook) == 1
-
-    #
-    # unicode name hash table
-
-    # extract names
-    data = []
-    for char in unicode.chars:
-        record = unicode.table[char]
-        if record:
-            name = record[1].strip()
-            if name and name[0] != "<":
-                data.append((name, char))
-
-    # the magic number 47 was chosen to minimize the number of
-    # collisions on the current data set.  if you like, change it
-    # and see what happens...
-
-    codehash = Hash("code", data, 47)
-
-    print "--- Writing", FILE, "..."
-
-    fp = open(FILE, "w")
-    print >>fp, "/* this file was generated by %s %s */" % (SCRIPT, VERSION)
-    print >>fp
-    print >>fp, "#define NAME_MAXLEN", 256
-    print >>fp
-    print >>fp, "/* lexicon */"
-    Array("lexicon", lexicon).dump(fp, trace)
-    Array("lexicon_offset", lexicon_offset).dump(fp, trace)
-
-    # split decomposition index table
-    offset1, offset2, shift = splitbins(phrasebook_offset, trace)
-
-    print >>fp, "/* code->name phrasebook */"
-    print >>fp, "#define phrasebook_shift", shift
-    print >>fp, "#define phrasebook_short", short
-
-    Array("phrasebook", phrasebook).dump(fp, trace)
-    Array("phrasebook_offset1", offset1).dump(fp, trace)
-    Array("phrasebook_offset2", offset2).dump(fp, trace)
-
-    print >>fp, "/* name->code dictionary */"
-    codehash.dump(fp, trace)
-
-    fp.close()
-
-
-def merge_old_version(version, new, old):
-    # Changes to exclusion file not implemented yet
-    if old.exclusions != new.exclusions:
-        raise NotImplementedError, "exclusions differ"
-
-    # In these change records, 0xFF means "no change"
-    bidir_changes = [0xFF]*0x110000
-    category_changes = [0xFF]*0x110000
-    decimal_changes = [0xFF]*0x110000
-    mirrored_changes = [0xFF]*0x110000
-    # In numeric data, 0 means "no change",
-    # -1 means "did not have a numeric value
-    numeric_changes = [0] * 0x110000
-    # normalization_changes is a list of key-value pairs
-    normalization_changes = []
-    for i in range(0x110000):
-        if new.table[i] is None:
-            # Characters unassigned in the new version ought to
-            # be unassigned in the old one
-            assert old.table[i] is None
-            continue
-        # check characters unassigned in the old version
-        if old.table[i] is None:
-            # category 0 is "unassigned"
-            category_changes[i] = 0
-            continue
-        # check characters that differ
-        if old.table[i] != new.table[i]:
-            for k in range(len(old.table[i])):
-                if old.table[i][k] != new.table[i][k]:
-                    value = old.table[i][k]
-                    if k == 2:
-                        #print "CATEGORY",hex(i), old.table[i][k], new.table[i][k]
-                        category_changes[i] = CATEGORY_NAMES.index(value)
-                    elif k == 4:
-                        #print "BIDIR",hex(i), old.table[i][k], new.table[i][k]
-                        bidir_changes[i] = BIDIRECTIONAL_NAMES.index(value)
-                    elif k == 5:
-                        #print "DECOMP",hex(i), old.table[i][k], new.table[i][k]
-                        # We assume that all normalization changes are in 1:1 mappings
-                        assert " " not in value
-                        normalization_changes.append((i, value))
-                    elif k == 6:
-                        #print "DECIMAL",hex(i), old.table[i][k], new.table[i][k]
-                        # we only support changes where the old value is a single digit
-                        assert value in "0123456789"
-                        decimal_changes[i] = int(value)
-                    elif k == 8:
-                        # print "NUMERIC",hex(i), `old.table[i][k]`, new.table[i][k]
-                        # Since 0 encodes "no change", the old value is better not 0
-                        if not value:
-                            numeric_changes[i] = -1
-                        else:
-                            numeric_changes[i] = float(value)
-                            assert numeric_changes[i] not in (0, -1)
-                    elif k == 9:
-                        if value == 'Y':
-                            mirrored_changes[i] = '1'
-                        else:
-                            mirrored_changes[i] = '0'
-                    elif k == 11:
-                        # change to ISO comment, ignore
-                        pass
-                    elif k == 12:
-                        # change to simple uppercase mapping; ignore
-                        pass
-                    elif k == 13:
-                        # change to simple lowercase mapping; ignore
-                        pass
-                    elif k == 14:
-                        # change to simple titlecase mapping; ignore
-                        pass
-                    elif k == 16:
-                        # change to properties; not yet
-                        pass
-                    else:
-                        class Difference(Exception):pass
-                        raise Difference, (hex(i), k, old.table[i], new.table[i])
-    new.changed.append((version, zip(bidir_changes, category_changes,
-                                     decimal_changes, mirrored_changes,
-                                     numeric_changes),
-                        normalization_changes))
-
-
-# --------------------------------------------------------------------
-# the following support code is taken from the unidb utilities
-# Copyright (c) 1999-2000 by Secret Labs AB
-
-# load a unicode-data file from disk
-
-class UnicodeData:
-    # Record structure:
-    # [ID, name, category, combining, bidi, decomp,  (6)
-    #  decimal, digit, numeric, bidi-mirrored, Unicode-1-name, (11)
-    #  ISO-comment, uppercase, lowercase, titlecase, ea-width, (16)
-    #  properties] (17)
-
-    def __init__(self, filename, exclusions, eastasianwidth, unihan,
-                 derivednormalizationprops=None, linebreakprops=None,
-                 expand=1):
-        self.changed = []
-        file = open(filename)
-        table = [None] * 0x110000
-        while 1:
-            s = file.readline()
-            if not s:
-                break
-            s = s.strip().split(";")
-            char = int(s[0], 16)
-            table[char] = s
-
-        # expand first-last ranges
-        if expand:
-            field = None
-            for i in range(0, 0x110000):
-                s = table[i]
-                if s:
-                    if s[1][-6:] == "First>":
-                        s[1] = ""
-                        field = s
-                    elif s[1][-5:] == "Last>":
-                        s[1] = ""
-                        field = None
-                elif field:
-                    f2 = field[:]
-                    f2[0] = "%X" % i
-                    table[i] = f2
-
-        # public attributes
-        self.filename = filename
-        self.table = table
-        self.chars = range(0x110000) # unicode 3.2
-
-        file = open(exclusions)
-        self.exclusions = {}
-        for s in file:
-            s = s.strip()
-            if not s:
-                continue
-            if s[0] == '#':
-                continue
-            char = int(s.split()[0],16)
-            self.exclusions[char] = 1
-
-        widths = [None] * 0x110000
-        for s in open(eastasianwidth):
-            s = s.strip()
-            if not s:
-                continue
-            if s[0] == '#':
-                continue
-            s = s.split()[0].split(';')
-            if '..' in s[0]:
-                first, last = [int(c, 16) for c in s[0].split('..')]
-                chars = range(first, last+1)
-            else:
-                chars = [int(s[0], 16)]
-            for char in chars:
-                widths[char] = s[1]
-        for i in range(0, 0x110000):
-            if table[i] is not None:
-                table[i].append(widths[i])
-
-        for i in range(0, 0x110000):
-            if table[i] is not None:
-                table[i].append(set())
-        if linebreakprops:
-            for s in open(linebreakprops):
-                s = s.partition('#')[0]
-                s = [i.strip() for i in s.split(';')]
-                if len(s) < 2 or s[1] not in MANDATORY_LINE_BREAKS:
-                    continue
-                if '..' not in s[0]:
-                    first = last = int(s[0], 16)
-                else:
-                    first, last = [int(c, 16) for c in s[0].split('..')]
-                for char in range(first, last+1):
-                    table[char][-1].add('Line_Break')
-
-        if derivednormalizationprops:
-            quickchecks = [0] * 0x110000 # default is Yes
-            qc_order = 'NFD_QC NFKD_QC NFC_QC NFKC_QC'.split()
-            for s in open(derivednormalizationprops):
-                if '#' in s:
-                    s = s[:s.index('#')]
-                s = [i.strip() for i in s.split(';')]
-                if len(s) < 2 or s[1] not in qc_order:
-                    continue
-                quickcheck = 'MN'.index(s[2]) + 1 # Maybe or No
-                quickcheck_shift = qc_order.index(s[1])*2
-                quickcheck <<= quickcheck_shift
-                if '..' not in s[0]:
-                    first = last = int(s[0], 16)
-                else:
-                    first, last = [int(c, 16) for c in s[0].split('..')]
-                for char in range(first, last+1):
-                    assert not (quickchecks[char]>>quickcheck_shift)&3
-                    quickchecks[char] |= quickcheck
-            for i in range(0, 0x110000):
-                if table[i] is not None:
-                    table[i].append(quickchecks[i])
-
-        for line in open(unihan):
-            if not line.startswith('U+'):
-                continue
-            code, tag, value = line.split(None, 3)[:3]
-            if tag not in ('kAccountingNumeric', 'kPrimaryNumeric',
-                           'kOtherNumeric'):
-                continue
-            value = value.strip().replace(',', '')
-            i = int(code[2:], 16)
-            # Patch the numeric field
-            if table[i] is not None:
-                table[i][8] = value
-
-    def uselatin1(self):
-        # restrict character range to ISO Latin 1
-        self.chars = range(256)
-
-# hash table tools
-
-# this is a straight-forward reimplementation of Python's built-in
-# dictionary type, using a static data structure, and a custom string
-# hash algorithm.
-
-def myhash(s, magic):
-    h = 0
-    for c in map(ord, s.upper()):
-        h = (h * magic) + c
-        ix = h & 0xff000000L
-        if ix:
-            h = (h ^ ((ix>>24) & 0xff)) & 0x00ffffff
-    return h
-
-SIZES = [
-    (4,3), (8,3), (16,3), (32,5), (64,3), (128,3), (256,29), (512,17),
-    (1024,9), (2048,5), (4096,83), (8192,27), (16384,43), (32768,3),
-    (65536,45), (131072,9), (262144,39), (524288,39), (1048576,9),
-    (2097152,5), (4194304,3), (8388608,33), (16777216,27)
-]
-
-class Hash:
-    def __init__(self, name, data, magic):
-        # turn a (key, value) list into a static hash table structure
-
-        # determine table size
-        for size, poly in SIZES:
-            if size > len(data):
-                poly = size + poly
-                break
-        else:
-            raise AssertionError, "ran out of polynominals"
-
-        print size, "slots in hash table"
-
-        table = [None] * size
-
-        mask = size-1
-
-        n = 0
-
-        hash = myhash
-
-        # initialize hash table
-        for key, value in data:
-            h = hash(key, magic)
-            i = (~h) & mask
-            v = table[i]
-            if v is None:
-                table[i] = value
-                continue
-            incr = (h ^ (h >> 3)) & mask;
-            if not incr:
-                incr = mask
-            while 1:
-                n = n + 1
-                i = (i + incr) & mask
-                v = table[i]
-                if v is None:
-                    table[i] = value
-                    break
-                incr = incr << 1
-                if incr > mask:
-                    incr = incr ^ poly
-
-        print n, "collisions"
-        self.collisions = n
-
-        for i in range(len(table)):
-            if table[i] is None:
-                table[i] = 0
-
-        self.data = Array(name + "_hash", table)
-        self.magic = magic
-        self.name = name
-        self.size = size
-        self.poly = poly
-
-    def dump(self, file, trace):
-        # write data to file, as a C array
-        self.data.dump(file, trace)
-        file.write("#define %s_magic %d\n" % (self.name, self.magic))
-        file.write("#define %s_size %d\n" % (self.name, self.size))
-        file.write("#define %s_poly %d\n" % (self.name, self.poly))
-
-# stuff to deal with arrays of unsigned integers
-
-class Array:
-
-    def __init__(self, name, data):
-        self.name = name
-        self.data = data
-
-    def dump(self, file, trace=0):
-        # write data to file, as a C array
-        size = getsize(self.data)
-        if trace:
-            print >>sys.stderr, self.name+":", size*len(self.data), "bytes"
-        file.write("static ")
-        if size == 1:
-            file.write("unsigned char")
-        elif size == 2:
-            file.write("unsigned short")
-        else:
-            file.write("unsigned int")
-        file.write(" " + self.name + "[] = {\n")
-        if self.data:
-            s = "    "
-            for item in self.data:
-                i = str(item) + ", "
-                if len(s) + len(i) > 78:
-                    file.write(s + "\n")
-                    s = "    " + i
-                else:
-                    s = s + i
-            if s.strip():
-                file.write(s + "\n")
-        file.write("};\n\n")
-
-def getsize(data):
-    # return smallest possible integer size for the given array
-    maxdata = max(data)
-    if maxdata < 256:
-        return 1
-    elif maxdata < 65536:
-        return 2
-    else:
-        return 4
-
-def splitbins(t, trace=0):
-    """t, trace=0 -> (t1, t2, shift).  Split a table to save space.
-
-    t is a sequence of ints.  This function can be useful to save space if
-    many of the ints are the same.  t1 and t2 are lists of ints, and shift
-    is an int, chosen to minimize the combined size of t1 and t2 (in C
-    code), and where for each i in range(len(t)),
-        t[i] == t2[(t1[i >> shift] << shift) + (i & mask)]
-    where mask is a bitmask isolating the last "shift" bits.
-
-    If optional arg trace is non-zero (default zero), progress info
-    is printed to sys.stderr.  The higher the value, the more info
-    you'll get.
-    """
-
-    if trace:
-        def dump(t1, t2, shift, bytes):
-            print >>sys.stderr, "%d+%d bins at shift %d; %d bytes" % (
-                len(t1), len(t2), shift, bytes)
-        print >>sys.stderr, "Size of original table:", len(t)*getsize(t), \
-                            "bytes"
-    n = len(t)-1    # last valid index
-    maxshift = 0    # the most we can shift n and still have something left
-    if n > 0:
-        while n >> 1:
-            n >>= 1
-            maxshift += 1
-    del n
-    bytes = sys.maxint  # smallest total size so far
-    t = tuple(t)    # so slices can be dict keys
-    for shift in range(maxshift + 1):
-        t1 = []
-        t2 = []
-        size = 2**shift
-        bincache = {}
-        for i in range(0, len(t), size):
-            bin = t[i:i+size]
-            index = bincache.get(bin)
-            if index is None:
-                index = len(t2)
-                bincache[bin] = index
-                t2.extend(bin)
-            t1.append(index >> shift)
-        # determine memory size
-        b = len(t1)*getsize(t1) + len(t2)*getsize(t2)
-        if trace > 1:
-            dump(t1, t2, shift, b)
-        if b < bytes:
-            best = t1, t2, shift
-            bytes = b
-    t1, t2, shift = best
-    if trace:
-        print >>sys.stderr, "Best:",
-        dump(t1, t2, shift, bytes)
-    if __debug__:
-        # exhaustively verify that the decomposition is correct
-        mask = ~((~0) << shift) # i.e., low-bit mask of shift bits
-        for i in xrange(len(t)):
-            assert t[i] == t2[(t1[i >> shift] << shift) + (i & mask)]
-    return best
-
-if __name__ == "__main__":
-    maketables(1)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/mkstringprep.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/mkstringprep.py
deleted file mode 100644
index 49d1393..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/mkstringprep.py
+++ /dev/null
@@ -1,425 +0,0 @@
-import re, unicodedata, sys
-
-if sys.maxunicode == 65535:
-    raise RuntimeError("need UCS-4 Python")
-
-def gen_category(cats):
-    for i in range(0, 0x110000):
-        if unicodedata.category(unichr(i)) in cats:
-            yield(i)
-
-def gen_bidirectional(cats):
-    for i in range(0, 0x110000):
-        if unicodedata.bidirectional(unichr(i)) in cats:
-            yield(i)
-
-def compact_set(l):
-    single = []
-    tuple = []
-    prev = None
-    span = 0
-    for e in l:
-        if prev is None:
-            prev = e
-            span = 0
-            continue
-        if prev+span+1 != e:
-            if span > 2:
-                tuple.append((prev,prev+span+1))
-            else:
-                for i in range(prev, prev+span+1):
-                    single.append(i)
-            prev = e
-            span = 0
-        else:
-            span += 1
-    if span:
-        tuple.append((prev,prev+span+1))
-    else:
-        single.append(prev)
-    tuple = " + ".join(["range(%d,%d)" % t for t in tuple])
-    if not single:
-        return "set(%s)" % tuple
-    if not tuple:
-        return "set(%s)" % repr(single)
-    return "set(%s + %s)" % (repr(single),tuple)
-
-############## Read the tables in the RFC #######################
-
-data = open("rfc3454.txt").readlines()
-
-tables = []
-curname = None
-for l in data:
-    l = l.strip()
-    if not l:
-        continue
-    # Skip RFC page breaks
-    if l.startswith("Hoffman & Blanchet") or\
-       l.startswith("RFC 3454"):
-        continue
-    # Find start/end lines
-    m = re.match("----- (Start|End) Table ([A-Z](.[0-9])+) -----", l)
-    if m:
-        if m.group(1) == "Start":
-            if curname:
-                raise RuntimeError("Double Start", (curname, l))
-            curname = m.group(2)
-            table = {}
-            tables.append((curname, table))
-            continue
-        else:
-            if not curname:
-                raise RuntimeError("End without start", l)
-            curname = None
-            continue
-    if not curname:
-        continue
-    # Now we are in a table
-    fields = l.split(";")
-    if len(fields) > 1:
-        # Drop comment field
-        fields = fields[:-1]
-    if len(fields) == 1:
-        fields = fields[0].split("-")
-        if len(fields) > 1:
-            # range
-            try:
-                start, end = fields
-            except ValueError:
-                raise RuntimeError("Unpacking problem", l)
-        else:
-            start = end = fields[0]
-        start = int(start, 16)
-        end = int(end, 16)
-        for i in range(start, end+1):
-            table[i] = i
-    else:
-        code, value = fields
-        value = value.strip()
-        if value:
-            value = [int(v, 16) for v in value.split(" ")]
-        else:
-            # table B.1
-            value = None
-        table[int(code, 16)] = value
-
-########### Generate compact Python versions of the tables #############
-
-print """# This file is generated by mkstringprep.py. DO NOT EDIT.
-\"\"\"Library that exposes various tables found in the StringPrep RFC 3454.
-
-There are two kinds of tables: sets, for which a member test is provided,
-and mappings, for which a mapping function is provided.
-\"\"\"
-
-import unicodedata
-"""
-
-print "assert unicodedata.unidata_version == %s" % repr(unicodedata.unidata_version)
-
-# A.1 is the table of unassigned characters
-# XXX Plane 15 PUA is listed as unassigned in Python.
-name, table = tables[0]
-del tables[0]
-assert name == "A.1"
-table = set(table.keys())
-Cn = set(gen_category(["Cn"]))
-
-# FDD0..FDEF are process internal codes
-Cn -= set(range(0xFDD0, 0xFDF0))
-# not a character
-Cn -= set(range(0xFFFE, 0x110000, 0x10000))
-Cn -= set(range(0xFFFF, 0x110000, 0x10000))
-
-# assert table == Cn
-
-print """
-def in_table_a1(code):
-    if unicodedata.category(code) != 'Cn': return False
-    c = ord(code)
-    if 0xFDD0 <= c < 0xFDF0: return False
-    return (c & 0xFFFF) not in (0xFFFE, 0xFFFF)
-"""
-
-# B.1 cannot easily be derived
-name, table = tables[0]
-del tables[0]
-assert name == "B.1"
-table = sorted(table.keys())
-print """
-b1_set = """ + compact_set(table) + """
-def in_table_b1(code):
-    return ord(code) in b1_set
-"""
-
-# B.2 and B.3 is case folding.
-# It takes CaseFolding.txt into account, which is
-# not available in the Python database. Since
-# B.2 is derived from B.3, we process B.3 first.
-# B.3 supposedly *is* CaseFolding-3.2.0.txt.
-
-name, table_b2 = tables[0]
-del tables[0]
-assert name == "B.2"
-
-name, table_b3 = tables[0]
-del tables[0]
-assert name == "B.3"
-
-# B.3 is mostly Python's .lower, except for a number
-# of special cases, e.g. considering canonical forms.
-
-b3_exceptions = {}
-
-for k,v in table_b2.items():
-    if map(ord, unichr(k).lower()) != v:
-        b3_exceptions[k] = u"".join(map(unichr,v))
-
-b3 = sorted(b3_exceptions.items())
-
-print """
-b3_exceptions = {"""
-for i,(k,v) in enumerate(b3):
-    print "0x%x:%s," % (k, repr(v)),
-    if i % 4 == 3:
-        print
-print "}"
-
-print """
-def map_table_b3(code):
-    r = b3_exceptions.get(ord(code))
-    if r is not None: return r
-    return code.lower()
-"""
-
-def map_table_b3(code):
-    r = b3_exceptions.get(ord(code))
-    if r is not None: return r
-    return code.lower()
-
-# B.2 is case folding for NFKC. This is the same as B.3,
-# except where NormalizeWithKC(Fold(a)) !=
-# NormalizeWithKC(Fold(NormalizeWithKC(Fold(a))))
-
-def map_table_b2(a):
-    al = map_table_b3(a)
-    b = unicodedata.normalize("NFKC", al)
-    bl = u"".join([map_table_b3(ch) for ch in b])
-    c = unicodedata.normalize("NFKC", bl)
-    if b != c:
-        return c
-    else:
-        return al
-
-specials = {}
-for k,v in table_b2.items():
-    if map(ord, map_table_b2(unichr(k))) != v:
-        specials[k] = v
-
-# B.3 should not add any additional special cases
-assert specials == {}
-
-print """
-def map_table_b2(a):
-    al = map_table_b3(a)
-    b = unicodedata.normalize("NFKC", al)
-    bl = u"".join([map_table_b3(ch) for ch in b])
-    c = unicodedata.normalize("NFKC", bl)
-    if b != c:
-        return c
-    else:
-        return al
-"""
-
-# C.1.1 is a table with a single character
-name, table = tables[0]
-del tables[0]
-assert name == "C.1.1"
-assert table == {0x20:0x20}
-
-print """
-def in_table_c11(code):
-    return code == u" "
-"""
-
-# C.1.2 is the rest of all space characters
-name, table = tables[0]
-del tables[0]
-assert name == "C.1.2"
-
-# table = set(table.keys())
-# Zs = set(gen_category(["Zs"])) - set([0x20])
-# assert Zs == table
-
-print """
-def in_table_c12(code):
-    return unicodedata.category(code) == "Zs" and code != u" "
-
-def in_table_c11_c12(code):
-    return unicodedata.category(code) == "Zs"
-"""
-
-# C.2.1 ASCII control characters
-name, table_c21 = tables[0]
-del tables[0]
-assert name == "C.2.1"
-
-Cc = set(gen_category(["Cc"]))
-Cc_ascii = Cc & set(range(128))
-table_c21 = set(table_c21.keys())
-assert Cc_ascii == table_c21
-
-print """
-def in_table_c21(code):
-    return ord(code) < 128 and unicodedata.category(code) == "Cc"
-"""
-
-# C.2.2 Non-ASCII control characters. It also includes
-# a number of characters in category Cf.
-name, table_c22 = tables[0]
-del tables[0]
-assert name == "C.2.2"
-
-Cc_nonascii = Cc - Cc_ascii
-table_c22 = set(table_c22.keys())
-assert len(Cc_nonascii - table_c22) == 0
-
-specials = list(table_c22 - Cc_nonascii)
-specials.sort()
-
-print """c22_specials = """ + compact_set(specials) + """
-def in_table_c22(code):
-    c = ord(code)
-    if c < 128: return False
-    if unicodedata.category(code) == "Cc": return True
-    return c in c22_specials
-
-def in_table_c21_c22(code):
-    return unicodedata.category(code) == "Cc" or \\
-           ord(code) in c22_specials
-"""
-
-# C.3 Private use
-name, table = tables[0]
-del tables[0]
-assert name == "C.3"
-
-Co = set(gen_category(["Co"]))
-assert set(table.keys()) == Co
-
-print """
-def in_table_c3(code):
-    return unicodedata.category(code) == "Co"
-"""
-
-# C.4 Non-character code points, xFFFE, xFFFF
-# plus process internal codes
-name, table = tables[0]
-del tables[0]
-assert name == "C.4"
-
-nonchar = set(range(0xFDD0,0xFDF0) +
-              range(0xFFFE,0x110000,0x10000) +
-              range(0xFFFF,0x110000,0x10000))
-table = set(table.keys())
-assert table == nonchar
-
-print """
-def in_table_c4(code):
-    c = ord(code)
-    if c < 0xFDD0: return False
-    if c < 0xFDF0: return True
-    return (ord(code) & 0xFFFF) in (0xFFFE, 0xFFFF)
-"""
-
-# C.5 Surrogate codes
-name, table = tables[0]
-del tables[0]
-assert name == "C.5"
-
-Cs = set(gen_category(["Cs"]))
-assert set(table.keys()) == Cs
-
-print """
-def in_table_c5(code):
-    return unicodedata.category(code) == "Cs"
-"""
-
-# C.6 Inappropriate for plain text
-name, table = tables[0]
-del tables[0]
-assert name == "C.6"
-
-table = sorted(table.keys())
-
-print """
-c6_set = """ + compact_set(table) + """
-def in_table_c6(code):
-    return ord(code) in c6_set
-"""
-
-# C.7 Inappropriate for canonical representation
-name, table = tables[0]
-del tables[0]
-assert name == "C.7"
-
-table = sorted(table.keys())
-
-print """
-c7_set = """ + compact_set(table) + """
-def in_table_c7(code):
-    return ord(code) in c7_set
-"""
-
-# C.8 Change display properties or are deprecated
-name, table = tables[0]
-del tables[0]
-assert name == "C.8"
-
-table = sorted(table.keys())
-
-print """
-c8_set = """ + compact_set(table) + """
-def in_table_c8(code):
-    return ord(code) in c8_set
-"""
-
-# C.9 Tagging characters
-name, table = tables[0]
-del tables[0]
-assert name == "C.9"
-
-table = sorted(table.keys())
-
-print """
-c9_set = """ + compact_set(table) + """
-def in_table_c9(code):
-    return ord(code) in c9_set
-"""
-
-# D.1 Characters with bidirectional property "R" or "AL"
-name, table = tables[0]
-del tables[0]
-assert name == "D.1"
-
-RandAL = set(gen_bidirectional(["R","AL"]))
-assert set(table.keys()) == RandAL
-
-print """
-def in_table_d1(code):
-    return unicodedata.bidirectional(code) in ("R","AL")
-"""
-
-# D.2 Characters with bidirectional property "L"
-name, table = tables[0]
-del tables[0]
-assert name == "D.2"
-
-L = set(gen_bidirectional(["L"]))
-assert set(table.keys()) == L
-
-print """
-def in_table_d2(code):
-    return unicodedata.bidirectional(code) == "L"
-"""
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/CP1140.TXT b/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/CP1140.TXT
deleted file mode 100644
index 68e0fdc..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/CP1140.TXT
+++ /dev/null
@@ -1,291 +0,0 @@
-#
-#       Name:             CP1140
-#	Unicode version:  3.2
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             2005-10-25
-#	Authors:          Marc-Andre Lemburg <mal@egenix.com>
-#
-#       This encoding is a modified CP037 encoding (with added Euro
-#       currency sign).
-#
-#       (c) Copyright Marc-Andre Lemburg, 2005.
-#           Licensed to PSF under a Contributor Agreement.
-#
-#       Based on the file 
-#       ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/EBCDIC/CP037.TXT
-#       which is:
-#
-#	Copyright (c) 2002 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-0x00	0x0000	#NULL
-0x01	0x0001	#START OF HEADING
-0x02	0x0002	#START OF TEXT
-0x03	0x0003	#END OF TEXT
-0x04	0x009C	#CONTROL
-0x05	0x0009	#HORIZONTAL TABULATION
-0x06	0x0086	#CONTROL
-0x07	0x007F	#DELETE
-0x08	0x0097	#CONTROL
-0x09	0x008D	#CONTROL
-0x0A	0x008E	#CONTROL
-0x0B	0x000B	#VERTICAL TABULATION
-0x0C	0x000C	#FORM FEED
-0x0D	0x000D	#CARRIAGE RETURN
-0x0E	0x000E	#SHIFT OUT
-0x0F	0x000F	#SHIFT IN
-0x10	0x0010	#DATA LINK ESCAPE
-0x11	0x0011	#DEVICE CONTROL ONE
-0x12	0x0012	#DEVICE CONTROL TWO
-0x13	0x0013	#DEVICE CONTROL THREE
-0x14	0x009D	#CONTROL
-0x15	0x0085	#CONTROL
-0x16	0x0008	#BACKSPACE
-0x17	0x0087	#CONTROL
-0x18	0x0018	#CANCEL
-0x19	0x0019	#END OF MEDIUM
-0x1A	0x0092	#CONTROL
-0x1B	0x008F	#CONTROL
-0x1C	0x001C	#FILE SEPARATOR
-0x1D	0x001D	#GROUP SEPARATOR
-0x1E	0x001E	#RECORD SEPARATOR
-0x1F	0x001F	#UNIT SEPARATOR
-0x20	0x0080	#CONTROL
-0x21	0x0081	#CONTROL
-0x22	0x0082	#CONTROL
-0x23	0x0083	#CONTROL
-0x24	0x0084	#CONTROL
-0x25	0x000A	#LINE FEED
-0x26	0x0017	#END OF TRANSMISSION BLOCK
-0x27	0x001B	#ESCAPE
-0x28	0x0088	#CONTROL
-0x29	0x0089	#CONTROL
-0x2A	0x008A	#CONTROL
-0x2B	0x008B	#CONTROL
-0x2C	0x008C	#CONTROL
-0x2D	0x0005	#ENQUIRY
-0x2E	0x0006	#ACKNOWLEDGE
-0x2F	0x0007	#BELL
-0x30	0x0090	#CONTROL
-0x31	0x0091	#CONTROL
-0x32	0x0016	#SYNCHRONOUS IDLE
-0x33	0x0093	#CONTROL
-0x34	0x0094	#CONTROL
-0x35	0x0095	#CONTROL
-0x36	0x0096	#CONTROL
-0x37	0x0004	#END OF TRANSMISSION
-0x38	0x0098	#CONTROL
-0x39	0x0099	#CONTROL
-0x3A	0x009A	#CONTROL
-0x3B	0x009B	#CONTROL
-0x3C	0x0014	#DEVICE CONTROL FOUR
-0x3D	0x0015	#NEGATIVE ACKNOWLEDGE
-0x3E	0x009E	#CONTROL
-0x3F	0x001A	#SUBSTITUTE
-0x40	0x0020	#SPACE
-0x41	0x00A0	#NO-BREAK SPACE
-0x42	0x00E2	#LATIN SMALL LETTER A WITH CIRCUMFLEX
-0x43	0x00E4	#LATIN SMALL LETTER A WITH DIAERESIS
-0x44	0x00E0	#LATIN SMALL LETTER A WITH GRAVE
-0x45	0x00E1	#LATIN SMALL LETTER A WITH ACUTE
-0x46	0x00E3	#LATIN SMALL LETTER A WITH TILDE
-0x47	0x00E5	#LATIN SMALL LETTER A WITH RING ABOVE
-0x48	0x00E7	#LATIN SMALL LETTER C WITH CEDILLA
-0x49	0x00F1	#LATIN SMALL LETTER N WITH TILDE
-0x4A	0x00A2	#CENT SIGN
-0x4B	0x002E	#FULL STOP
-0x4C	0x003C	#LESS-THAN SIGN
-0x4D	0x0028	#LEFT PARENTHESIS
-0x4E	0x002B	#PLUS SIGN
-0x4F	0x007C	#VERTICAL LINE
-0x50	0x0026	#AMPERSAND
-0x51	0x00E9	#LATIN SMALL LETTER E WITH ACUTE
-0x52	0x00EA	#LATIN SMALL LETTER E WITH CIRCUMFLEX
-0x53	0x00EB	#LATIN SMALL LETTER E WITH DIAERESIS
-0x54	0x00E8	#LATIN SMALL LETTER E WITH GRAVE
-0x55	0x00ED	#LATIN SMALL LETTER I WITH ACUTE
-0x56	0x00EE	#LATIN SMALL LETTER I WITH CIRCUMFLEX
-0x57	0x00EF	#LATIN SMALL LETTER I WITH DIAERESIS
-0x58	0x00EC	#LATIN SMALL LETTER I WITH GRAVE
-0x59	0x00DF	#LATIN SMALL LETTER SHARP S (GERMAN)
-0x5A	0x0021	#EXCLAMATION MARK
-0x5B	0x0024	#DOLLAR SIGN
-0x5C	0x002A	#ASTERISK
-0x5D	0x0029	#RIGHT PARENTHESIS
-0x5E	0x003B	#SEMICOLON
-0x5F	0x00AC	#NOT SIGN
-0x60	0x002D	#HYPHEN-MINUS
-0x61	0x002F	#SOLIDUS
-0x62	0x00C2	#LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0x63	0x00C4	#LATIN CAPITAL LETTER A WITH DIAERESIS
-0x64	0x00C0	#LATIN CAPITAL LETTER A WITH GRAVE
-0x65	0x00C1	#LATIN CAPITAL LETTER A WITH ACUTE
-0x66	0x00C3	#LATIN CAPITAL LETTER A WITH TILDE
-0x67	0x00C5	#LATIN CAPITAL LETTER A WITH RING ABOVE
-0x68	0x00C7	#LATIN CAPITAL LETTER C WITH CEDILLA
-0x69	0x00D1	#LATIN CAPITAL LETTER N WITH TILDE
-0x6A	0x00A6	#BROKEN BAR
-0x6B	0x002C	#COMMA
-0x6C	0x0025	#PERCENT SIGN
-0x6D	0x005F	#LOW LINE
-0x6E	0x003E	#GREATER-THAN SIGN
-0x6F	0x003F	#QUESTION MARK
-0x70	0x00F8	#LATIN SMALL LETTER O WITH STROKE
-0x71	0x00C9	#LATIN CAPITAL LETTER E WITH ACUTE
-0x72	0x00CA	#LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0x73	0x00CB	#LATIN CAPITAL LETTER E WITH DIAERESIS
-0x74	0x00C8	#LATIN CAPITAL LETTER E WITH GRAVE
-0x75	0x00CD	#LATIN CAPITAL LETTER I WITH ACUTE
-0x76	0x00CE	#LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0x77	0x00CF	#LATIN CAPITAL LETTER I WITH DIAERESIS
-0x78	0x00CC	#LATIN CAPITAL LETTER I WITH GRAVE
-0x79	0x0060	#GRAVE ACCENT
-0x7A	0x003A	#COLON
-0x7B	0x0023	#NUMBER SIGN
-0x7C	0x0040	#COMMERCIAL AT
-0x7D	0x0027	#APOSTROPHE
-0x7E	0x003D	#EQUALS SIGN
-0x7F	0x0022	#QUOTATION MARK
-0x80	0x00D8	#LATIN CAPITAL LETTER O WITH STROKE
-0x81	0x0061	#LATIN SMALL LETTER A
-0x82	0x0062	#LATIN SMALL LETTER B
-0x83	0x0063	#LATIN SMALL LETTER C
-0x84	0x0064	#LATIN SMALL LETTER D
-0x85	0x0065	#LATIN SMALL LETTER E
-0x86	0x0066	#LATIN SMALL LETTER F
-0x87	0x0067	#LATIN SMALL LETTER G
-0x88	0x0068	#LATIN SMALL LETTER H
-0x89	0x0069	#LATIN SMALL LETTER I
-0x8A	0x00AB	#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0x8B	0x00BB	#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0x8C	0x00F0	#LATIN SMALL LETTER ETH (ICELANDIC)
-0x8D	0x00FD	#LATIN SMALL LETTER Y WITH ACUTE
-0x8E	0x00FE	#LATIN SMALL LETTER THORN (ICELANDIC)
-0x8F	0x00B1	#PLUS-MINUS SIGN
-0x90	0x00B0	#DEGREE SIGN
-0x91	0x006A	#LATIN SMALL LETTER J
-0x92	0x006B	#LATIN SMALL LETTER K
-0x93	0x006C	#LATIN SMALL LETTER L
-0x94	0x006D	#LATIN SMALL LETTER M
-0x95	0x006E	#LATIN SMALL LETTER N
-0x96	0x006F	#LATIN SMALL LETTER O
-0x97	0x0070	#LATIN SMALL LETTER P
-0x98	0x0071	#LATIN SMALL LETTER Q
-0x99	0x0072	#LATIN SMALL LETTER R
-0x9A	0x00AA	#FEMININE ORDINAL INDICATOR
-0x9B	0x00BA	#MASCULINE ORDINAL INDICATOR
-0x9C	0x00E6	#LATIN SMALL LIGATURE AE
-0x9D	0x00B8	#CEDILLA
-0x9E	0x00C6	#LATIN CAPITAL LIGATURE AE
-#0x9F	0x00A4	#CURRENCY SIGN
-0x9F    0x20AC   # EURO SIGN
-0xA0	0x00B5	#MICRO SIGN
-0xA1	0x007E	#TILDE
-0xA2	0x0073	#LATIN SMALL LETTER S
-0xA3	0x0074	#LATIN SMALL LETTER T
-0xA4	0x0075	#LATIN SMALL LETTER U
-0xA5	0x0076	#LATIN SMALL LETTER V
-0xA6	0x0077	#LATIN SMALL LETTER W
-0xA7	0x0078	#LATIN SMALL LETTER X
-0xA8	0x0079	#LATIN SMALL LETTER Y
-0xA9	0x007A	#LATIN SMALL LETTER Z
-0xAA	0x00A1	#INVERTED EXCLAMATION MARK
-0xAB	0x00BF	#INVERTED QUESTION MARK
-0xAC	0x00D0	#LATIN CAPITAL LETTER ETH (ICELANDIC)
-0xAD	0x00DD	#LATIN CAPITAL LETTER Y WITH ACUTE
-0xAE	0x00DE	#LATIN CAPITAL LETTER THORN (ICELANDIC)
-0xAF	0x00AE	#REGISTERED SIGN
-0xB0	0x005E	#CIRCUMFLEX ACCENT
-0xB1	0x00A3	#POUND SIGN
-0xB2	0x00A5	#YEN SIGN
-0xB3	0x00B7	#MIDDLE DOT
-0xB4	0x00A9	#COPYRIGHT SIGN
-0xB5	0x00A7	#SECTION SIGN
-0xB6	0x00B6	#PILCROW SIGN
-0xB7	0x00BC	#VULGAR FRACTION ONE QUARTER
-0xB8	0x00BD	#VULGAR FRACTION ONE HALF
-0xB9	0x00BE	#VULGAR FRACTION THREE QUARTERS
-0xBA	0x005B	#LEFT SQUARE BRACKET
-0xBB	0x005D	#RIGHT SQUARE BRACKET
-0xBC	0x00AF	#MACRON
-0xBD	0x00A8	#DIAERESIS
-0xBE	0x00B4	#ACUTE ACCENT
-0xBF	0x00D7	#MULTIPLICATION SIGN
-0xC0	0x007B	#LEFT CURLY BRACKET
-0xC1	0x0041	#LATIN CAPITAL LETTER A
-0xC2	0x0042	#LATIN CAPITAL LETTER B
-0xC3	0x0043	#LATIN CAPITAL LETTER C
-0xC4	0x0044	#LATIN CAPITAL LETTER D
-0xC5	0x0045	#LATIN CAPITAL LETTER E
-0xC6	0x0046	#LATIN CAPITAL LETTER F
-0xC7	0x0047	#LATIN CAPITAL LETTER G
-0xC8	0x0048	#LATIN CAPITAL LETTER H
-0xC9	0x0049	#LATIN CAPITAL LETTER I
-0xCA	0x00AD	#SOFT HYPHEN
-0xCB	0x00F4	#LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xCC	0x00F6	#LATIN SMALL LETTER O WITH DIAERESIS
-0xCD	0x00F2	#LATIN SMALL LETTER O WITH GRAVE
-0xCE	0x00F3	#LATIN SMALL LETTER O WITH ACUTE
-0xCF	0x00F5	#LATIN SMALL LETTER O WITH TILDE
-0xD0	0x007D	#RIGHT CURLY BRACKET
-0xD1	0x004A	#LATIN CAPITAL LETTER J
-0xD2	0x004B	#LATIN CAPITAL LETTER K
-0xD3	0x004C	#LATIN CAPITAL LETTER L
-0xD4	0x004D	#LATIN CAPITAL LETTER M
-0xD5	0x004E	#LATIN CAPITAL LETTER N
-0xD6	0x004F	#LATIN CAPITAL LETTER O
-0xD7	0x0050	#LATIN CAPITAL LETTER P
-0xD8	0x0051	#LATIN CAPITAL LETTER Q
-0xD9	0x0052	#LATIN CAPITAL LETTER R
-0xDA	0x00B9	#SUPERSCRIPT ONE
-0xDB	0x00FB	#LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xDC	0x00FC	#LATIN SMALL LETTER U WITH DIAERESIS
-0xDD	0x00F9	#LATIN SMALL LETTER U WITH GRAVE
-0xDE	0x00FA	#LATIN SMALL LETTER U WITH ACUTE
-0xDF	0x00FF	#LATIN SMALL LETTER Y WITH DIAERESIS
-0xE0	0x005C	#REVERSE SOLIDUS
-0xE1	0x00F7	#DIVISION SIGN
-0xE2	0x0053	#LATIN CAPITAL LETTER S
-0xE3	0x0054	#LATIN CAPITAL LETTER T
-0xE4	0x0055	#LATIN CAPITAL LETTER U
-0xE5	0x0056	#LATIN CAPITAL LETTER V
-0xE6	0x0057	#LATIN CAPITAL LETTER W
-0xE7	0x0058	#LATIN CAPITAL LETTER X
-0xE8	0x0059	#LATIN CAPITAL LETTER Y
-0xE9	0x005A	#LATIN CAPITAL LETTER Z
-0xEA	0x00B2	#SUPERSCRIPT TWO
-0xEB	0x00D4	#LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xEC	0x00D6	#LATIN CAPITAL LETTER O WITH DIAERESIS
-0xED	0x00D2	#LATIN CAPITAL LETTER O WITH GRAVE
-0xEE	0x00D3	#LATIN CAPITAL LETTER O WITH ACUTE
-0xEF	0x00D5	#LATIN CAPITAL LETTER O WITH TILDE
-0xF0	0x0030	#DIGIT ZERO
-0xF1	0x0031	#DIGIT ONE
-0xF2	0x0032	#DIGIT TWO
-0xF3	0x0033	#DIGIT THREE
-0xF4	0x0034	#DIGIT FOUR
-0xF5	0x0035	#DIGIT FIVE
-0xF6	0x0036	#DIGIT SIX
-0xF7	0x0037	#DIGIT SEVEN
-0xF8	0x0038	#DIGIT EIGHT
-0xF9	0x0039	#DIGIT NINE
-0xFA	0x00B3	#SUPERSCRIPT THREE
-0xFB	0x00DB	#LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xFC	0x00DC	#LATIN CAPITAL LETTER U WITH DIAERESIS
-0xFD	0x00D9	#LATIN CAPITAL LETTER U WITH GRAVE
-0xFE	0x00DA	#LATIN CAPITAL LETTER U WITH ACUTE
-0xFF	0x009F	#CONTROL
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/KOI8-U.TXT b/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/KOI8-U.TXT
deleted file mode 100644
index 77160cf..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/KOI8-U.TXT
+++ /dev/null
@@ -1,298 +0,0 @@
-#
-#	Name:             KOI8-U (RFC2319) to Unicode
-#	Unicode version:  3.2
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             2005-10-25
-#	Authors:          Marc-Andre Lemburg <mal@egenix.com>
-#
-#       See RFC2319 for details. This encoding is a modified KOI8-R
-#       encoding.
-#
-#       (c) Copyright Marc-Andre Lemburg, 2005.
-#           Licensed to PSF under a Contributor Agreement.
-#
-#       Based on the file 
-#       ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT
-#       which is:
-#
-#	Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x2500	#	BOX DRAWINGS LIGHT HORIZONTAL
-0x81	0x2502	#	BOX DRAWINGS LIGHT VERTICAL
-0x82	0x250C	#	BOX DRAWINGS LIGHT DOWN AND RIGHT
-0x83	0x2510	#	BOX DRAWINGS LIGHT DOWN AND LEFT
-0x84	0x2514	#	BOX DRAWINGS LIGHT UP AND RIGHT
-0x85	0x2518	#	BOX DRAWINGS LIGHT UP AND LEFT
-0x86	0x251C	#	BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-0x87	0x2524	#	BOX DRAWINGS LIGHT VERTICAL AND LEFT
-0x88	0x252C	#	BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-0x89	0x2534	#	BOX DRAWINGS LIGHT UP AND HORIZONTAL
-0x8A	0x253C	#	BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-0x8B	0x2580	#	UPPER HALF BLOCK
-0x8C	0x2584	#	LOWER HALF BLOCK
-0x8D	0x2588	#	FULL BLOCK
-0x8E	0x258C	#	LEFT HALF BLOCK
-0x8F	0x2590	#	RIGHT HALF BLOCK
-0x90	0x2591	#	LIGHT SHADE
-0x91	0x2592	#	MEDIUM SHADE
-0x92	0x2593	#	DARK SHADE
-0x93	0x2320	#	TOP HALF INTEGRAL
-0x94	0x25A0	#	BLACK SQUARE
-0x95	0x2219	#	BULLET OPERATOR
-0x96	0x221A	#	SQUARE ROOT
-0x97	0x2248	#	ALMOST EQUAL TO
-0x98	0x2264	#	LESS-THAN OR EQUAL TO
-0x99	0x2265	#	GREATER-THAN OR EQUAL TO
-0x9A	0x00A0	#	NO-BREAK SPACE
-0x9B	0x2321	#	BOTTOM HALF INTEGRAL
-0x9C	0x00B0	#	DEGREE SIGN
-0x9D	0x00B2	#	SUPERSCRIPT TWO
-0x9E	0x00B7	#	MIDDLE DOT
-0x9F	0x00F7	#	DIVISION SIGN
-0xA0	0x2550	#	BOX DRAWINGS DOUBLE HORIZONTAL
-0xA1	0x2551	#	BOX DRAWINGS DOUBLE VERTICAL
-0xA2	0x2552	#	BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-0xA3	0x0451	#	CYRILLIC SMALL LETTER IO
-#0xA4	0x2553	#	BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-0xA4    0x0454  #       CYRILLIC SMALL LETTER UKRAINIAN IE
-0xA5	0x2554	#	BOX DRAWINGS DOUBLE DOWN AND RIGHT
-#0xA6	0x2555	#	BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-0xA6    0x0456  #       CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-#0xA7	0x2556	#	BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-0xA7    0x0457  #       CYRILLIC SMALL LETTER YI (UKRAINIAN)
-0xA8	0x2557	#	BOX DRAWINGS DOUBLE DOWN AND LEFT
-0xA9	0x2558	#	BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-0xAA	0x2559	#	BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-0xAB	0x255A	#	BOX DRAWINGS DOUBLE UP AND RIGHT
-0xAC	0x255B	#	BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-#0xAD	0x255C	#	BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-0xAD    0x0491  #       CYRILLIC SMALL LETTER UKRAINIAN GHE WITH UPTURN
-0xAE	0x255D	#	BOX DRAWINGS DOUBLE UP AND LEFT
-0xAF	0x255E	#	BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-0xB0	0x255F	#	BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-0xB1	0x2560	#	BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-0xB2	0x2561	#	BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-0xB3	0x0401	#	CYRILLIC CAPITAL LETTER IO
-#0xB4	0x2562	#	BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-0xB4    0x0404  #       CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0xB5	0x2563	#	BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-#0xB6	0x2564	#	BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-0xB6    0x0406  #       CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-#0xB7	0x2565	#	BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-0xB7    0x0407  #       CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
-0xB8	0x2566	#	BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-0xB9	0x2567	#	BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-0xBA	0x2568	#	BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-0xBB	0x2569	#	BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-0xBC	0x256A	#	BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-#0xBD	0x256B	#	BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-0xBD    0x0490  #       CYRILLIC CAPITAL LETTER UKRAINIAN GHE WITH UPTURN
-0xBE	0x256C	#	BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-0xBF	0x00A9	#	COPYRIGHT SIGN
-0xC0	0x044E	#	CYRILLIC SMALL LETTER YU
-0xC1	0x0430	#	CYRILLIC SMALL LETTER A
-0xC2	0x0431	#	CYRILLIC SMALL LETTER BE
-0xC3	0x0446	#	CYRILLIC SMALL LETTER TSE
-0xC4	0x0434	#	CYRILLIC SMALL LETTER DE
-0xC5	0x0435	#	CYRILLIC SMALL LETTER IE
-0xC6	0x0444	#	CYRILLIC SMALL LETTER EF
-0xC7	0x0433	#	CYRILLIC SMALL LETTER GHE
-0xC8	0x0445	#	CYRILLIC SMALL LETTER HA
-0xC9	0x0438	#	CYRILLIC SMALL LETTER I
-0xCA	0x0439	#	CYRILLIC SMALL LETTER SHORT I
-0xCB	0x043A	#	CYRILLIC SMALL LETTER KA
-0xCC	0x043B	#	CYRILLIC SMALL LETTER EL
-0xCD	0x043C	#	CYRILLIC SMALL LETTER EM
-0xCE	0x043D	#	CYRILLIC SMALL LETTER EN
-0xCF	0x043E	#	CYRILLIC SMALL LETTER O
-0xD0	0x043F	#	CYRILLIC SMALL LETTER PE
-0xD1	0x044F	#	CYRILLIC SMALL LETTER YA
-0xD2	0x0440	#	CYRILLIC SMALL LETTER ER
-0xD3	0x0441	#	CYRILLIC SMALL LETTER ES
-0xD4	0x0442	#	CYRILLIC SMALL LETTER TE
-0xD5	0x0443	#	CYRILLIC SMALL LETTER U
-0xD6	0x0436	#	CYRILLIC SMALL LETTER ZHE
-0xD7	0x0432	#	CYRILLIC SMALL LETTER VE
-0xD8	0x044C	#	CYRILLIC SMALL LETTER SOFT SIGN
-0xD9	0x044B	#	CYRILLIC SMALL LETTER YERU
-0xDA	0x0437	#	CYRILLIC SMALL LETTER ZE
-0xDB	0x0448	#	CYRILLIC SMALL LETTER SHA
-0xDC	0x044D	#	CYRILLIC SMALL LETTER E
-0xDD	0x0449	#	CYRILLIC SMALL LETTER SHCHA
-0xDE	0x0447	#	CYRILLIC SMALL LETTER CHE
-0xDF	0x044A	#	CYRILLIC SMALL LETTER HARD SIGN
-0xE0	0x042E	#	CYRILLIC CAPITAL LETTER YU
-0xE1	0x0410	#	CYRILLIC CAPITAL LETTER A
-0xE2	0x0411	#	CYRILLIC CAPITAL LETTER BE
-0xE3	0x0426	#	CYRILLIC CAPITAL LETTER TSE
-0xE4	0x0414	#	CYRILLIC CAPITAL LETTER DE
-0xE5	0x0415	#	CYRILLIC CAPITAL LETTER IE
-0xE6	0x0424	#	CYRILLIC CAPITAL LETTER EF
-0xE7	0x0413	#	CYRILLIC CAPITAL LETTER GHE
-0xE8	0x0425	#	CYRILLIC CAPITAL LETTER HA
-0xE9	0x0418	#	CYRILLIC CAPITAL LETTER I
-0xEA	0x0419	#	CYRILLIC CAPITAL LETTER SHORT I
-0xEB	0x041A	#	CYRILLIC CAPITAL LETTER KA
-0xEC	0x041B	#	CYRILLIC CAPITAL LETTER EL
-0xED	0x041C	#	CYRILLIC CAPITAL LETTER EM
-0xEE	0x041D	#	CYRILLIC CAPITAL LETTER EN
-0xEF	0x041E	#	CYRILLIC CAPITAL LETTER O
-0xF0	0x041F	#	CYRILLIC CAPITAL LETTER PE
-0xF1	0x042F	#	CYRILLIC CAPITAL LETTER YA
-0xF2	0x0420	#	CYRILLIC CAPITAL LETTER ER
-0xF3	0x0421	#	CYRILLIC CAPITAL LETTER ES
-0xF4	0x0422	#	CYRILLIC CAPITAL LETTER TE
-0xF5	0x0423	#	CYRILLIC CAPITAL LETTER U
-0xF6	0x0416	#	CYRILLIC CAPITAL LETTER ZHE
-0xF7	0x0412	#	CYRILLIC CAPITAL LETTER VE
-0xF8	0x042C	#	CYRILLIC CAPITAL LETTER SOFT SIGN
-0xF9	0x042B	#	CYRILLIC CAPITAL LETTER YERU
-0xFA	0x0417	#	CYRILLIC CAPITAL LETTER ZE
-0xFB	0x0428	#	CYRILLIC CAPITAL LETTER SHA
-0xFC	0x042D	#	CYRILLIC CAPITAL LETTER E
-0xFD	0x0429	#	CYRILLIC CAPITAL LETTER SHCHA
-0xFE	0x0427	#	CYRILLIC CAPITAL LETTER CHE
-0xFF	0x042A	#	CYRILLIC CAPITAL LETTER HARD SIGN
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/TIS-620.TXT b/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/TIS-620.TXT
deleted file mode 100644
index 05173e9..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/unicode/python-mappings/TIS-620.TXT
+++ /dev/null
@@ -1,284 +0,0 @@
-#
-#	Name:             TIS-620
-#	Unicode version:  3.2
-#	Table version:    1.0
-#	Table format:     Format A
-#	Date:             2005-10-25
-#	Authors:          Marc-Andre Lemburg <mal@egenix.com>
-#
-#       According to
-#       ftp://ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-11.TXT the
-#       TIS-620 is the identical to ISO_8859-11 with the 0xA0
-#       (no-break space) mapping removed.
-#
-#       (c) Copyright Marc-Andre Lemburg, 2005.
-#           Licensed to PSF under a Contributor Agreement.
-#
-#       Based on the file 
-#       ftp://ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-11.TXT
-#       which is:
-#
-#	Copyright (c) 2002 Unicode, Inc.  All Rights reserved.
-#
-#	This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-#	No claims are made as to fitness for any particular purpose.  No
-#	warranties of any kind are expressed or implied.  The recipient
-#	agrees to determine applicability of information provided.  If this
-#	file has been provided on optical media by Unicode, Inc., the sole
-#	remedy for any claim will be exchange of defective media within 90
-#	days of receipt.
-#
-#	Unicode, Inc. hereby grants the right to freely use the information
-#	supplied in this file in the creation of products supporting the
-#	Unicode Standard, and to make copies of this file in any form for
-#	internal or external distribution as long as this notice remains
-#	attached.
-#
-0x00	0x0000	#	NULL
-0x01	0x0001	#	START OF HEADING
-0x02	0x0002	#	START OF TEXT
-0x03	0x0003	#	END OF TEXT
-0x04	0x0004	#	END OF TRANSMISSION
-0x05	0x0005	#	ENQUIRY
-0x06	0x0006	#	ACKNOWLEDGE
-0x07	0x0007	#	BELL
-0x08	0x0008	#	BACKSPACE
-0x09	0x0009	#	HORIZONTAL TABULATION
-0x0A	0x000A	#	LINE FEED
-0x0B	0x000B	#	VERTICAL TABULATION
-0x0C	0x000C	#	FORM FEED
-0x0D	0x000D	#	CARRIAGE RETURN
-0x0E	0x000E	#	SHIFT OUT
-0x0F	0x000F	#	SHIFT IN
-0x10	0x0010	#	DATA LINK ESCAPE
-0x11	0x0011	#	DEVICE CONTROL ONE
-0x12	0x0012	#	DEVICE CONTROL TWO
-0x13	0x0013	#	DEVICE CONTROL THREE
-0x14	0x0014	#	DEVICE CONTROL FOUR
-0x15	0x0015	#	NEGATIVE ACKNOWLEDGE
-0x16	0x0016	#	SYNCHRONOUS IDLE
-0x17	0x0017	#	END OF TRANSMISSION BLOCK
-0x18	0x0018	#	CANCEL
-0x19	0x0019	#	END OF MEDIUM
-0x1A	0x001A	#	SUBSTITUTE
-0x1B	0x001B	#	ESCAPE
-0x1C	0x001C	#	FILE SEPARATOR
-0x1D	0x001D	#	GROUP SEPARATOR
-0x1E	0x001E	#	RECORD SEPARATOR
-0x1F	0x001F	#	UNIT SEPARATOR
-0x20	0x0020	#	SPACE
-0x21	0x0021	#	EXCLAMATION MARK
-0x22	0x0022	#	QUOTATION MARK
-0x23	0x0023	#	NUMBER SIGN
-0x24	0x0024	#	DOLLAR SIGN
-0x25	0x0025	#	PERCENT SIGN
-0x26	0x0026	#	AMPERSAND
-0x27	0x0027	#	APOSTROPHE
-0x28	0x0028	#	LEFT PARENTHESIS
-0x29	0x0029	#	RIGHT PARENTHESIS
-0x2A	0x002A	#	ASTERISK
-0x2B	0x002B	#	PLUS SIGN
-0x2C	0x002C	#	COMMA
-0x2D	0x002D	#	HYPHEN-MINUS
-0x2E	0x002E	#	FULL STOP
-0x2F	0x002F	#	SOLIDUS
-0x30	0x0030	#	DIGIT ZERO
-0x31	0x0031	#	DIGIT ONE
-0x32	0x0032	#	DIGIT TWO
-0x33	0x0033	#	DIGIT THREE
-0x34	0x0034	#	DIGIT FOUR
-0x35	0x0035	#	DIGIT FIVE
-0x36	0x0036	#	DIGIT SIX
-0x37	0x0037	#	DIGIT SEVEN
-0x38	0x0038	#	DIGIT EIGHT
-0x39	0x0039	#	DIGIT NINE
-0x3A	0x003A	#	COLON
-0x3B	0x003B	#	SEMICOLON
-0x3C	0x003C	#	LESS-THAN SIGN
-0x3D	0x003D	#	EQUALS SIGN
-0x3E	0x003E	#	GREATER-THAN SIGN
-0x3F	0x003F	#	QUESTION MARK
-0x40	0x0040	#	COMMERCIAL AT
-0x41	0x0041	#	LATIN CAPITAL LETTER A
-0x42	0x0042	#	LATIN CAPITAL LETTER B
-0x43	0x0043	#	LATIN CAPITAL LETTER C
-0x44	0x0044	#	LATIN CAPITAL LETTER D
-0x45	0x0045	#	LATIN CAPITAL LETTER E
-0x46	0x0046	#	LATIN CAPITAL LETTER F
-0x47	0x0047	#	LATIN CAPITAL LETTER G
-0x48	0x0048	#	LATIN CAPITAL LETTER H
-0x49	0x0049	#	LATIN CAPITAL LETTER I
-0x4A	0x004A	#	LATIN CAPITAL LETTER J
-0x4B	0x004B	#	LATIN CAPITAL LETTER K
-0x4C	0x004C	#	LATIN CAPITAL LETTER L
-0x4D	0x004D	#	LATIN CAPITAL LETTER M
-0x4E	0x004E	#	LATIN CAPITAL LETTER N
-0x4F	0x004F	#	LATIN CAPITAL LETTER O
-0x50	0x0050	#	LATIN CAPITAL LETTER P
-0x51	0x0051	#	LATIN CAPITAL LETTER Q
-0x52	0x0052	#	LATIN CAPITAL LETTER R
-0x53	0x0053	#	LATIN CAPITAL LETTER S
-0x54	0x0054	#	LATIN CAPITAL LETTER T
-0x55	0x0055	#	LATIN CAPITAL LETTER U
-0x56	0x0056	#	LATIN CAPITAL LETTER V
-0x57	0x0057	#	LATIN CAPITAL LETTER W
-0x58	0x0058	#	LATIN CAPITAL LETTER X
-0x59	0x0059	#	LATIN CAPITAL LETTER Y
-0x5A	0x005A	#	LATIN CAPITAL LETTER Z
-0x5B	0x005B	#	LEFT SQUARE BRACKET
-0x5C	0x005C	#	REVERSE SOLIDUS
-0x5D	0x005D	#	RIGHT SQUARE BRACKET
-0x5E	0x005E	#	CIRCUMFLEX ACCENT
-0x5F	0x005F	#	LOW LINE
-0x60	0x0060	#	GRAVE ACCENT
-0x61	0x0061	#	LATIN SMALL LETTER A
-0x62	0x0062	#	LATIN SMALL LETTER B
-0x63	0x0063	#	LATIN SMALL LETTER C
-0x64	0x0064	#	LATIN SMALL LETTER D
-0x65	0x0065	#	LATIN SMALL LETTER E
-0x66	0x0066	#	LATIN SMALL LETTER F
-0x67	0x0067	#	LATIN SMALL LETTER G
-0x68	0x0068	#	LATIN SMALL LETTER H
-0x69	0x0069	#	LATIN SMALL LETTER I
-0x6A	0x006A	#	LATIN SMALL LETTER J
-0x6B	0x006B	#	LATIN SMALL LETTER K
-0x6C	0x006C	#	LATIN SMALL LETTER L
-0x6D	0x006D	#	LATIN SMALL LETTER M
-0x6E	0x006E	#	LATIN SMALL LETTER N
-0x6F	0x006F	#	LATIN SMALL LETTER O
-0x70	0x0070	#	LATIN SMALL LETTER P
-0x71	0x0071	#	LATIN SMALL LETTER Q
-0x72	0x0072	#	LATIN SMALL LETTER R
-0x73	0x0073	#	LATIN SMALL LETTER S
-0x74	0x0074	#	LATIN SMALL LETTER T
-0x75	0x0075	#	LATIN SMALL LETTER U
-0x76	0x0076	#	LATIN SMALL LETTER V
-0x77	0x0077	#	LATIN SMALL LETTER W
-0x78	0x0078	#	LATIN SMALL LETTER X
-0x79	0x0079	#	LATIN SMALL LETTER Y
-0x7A	0x007A	#	LATIN SMALL LETTER Z
-0x7B	0x007B	#	LEFT CURLY BRACKET
-0x7C	0x007C	#	VERTICAL LINE
-0x7D	0x007D	#	RIGHT CURLY BRACKET
-0x7E	0x007E	#	TILDE
-0x7F	0x007F	#	DELETE
-0x80	0x0080	#	<control>
-0x81	0x0081	#	<control>
-0x82	0x0082	#	<control>
-0x83	0x0083	#	<control>
-0x84	0x0084	#	<control>
-0x85	0x0085	#	<control>
-0x86	0x0086	#	<control>
-0x87	0x0087	#	<control>
-0x88	0x0088	#	<control>
-0x89	0x0089	#	<control>
-0x8A	0x008A	#	<control>
-0x8B	0x008B	#	<control>
-0x8C	0x008C	#	<control>
-0x8D	0x008D	#	<control>
-0x8E	0x008E	#	<control>
-0x8F	0x008F	#	<control>
-0x90	0x0090	#	<control>
-0x91	0x0091	#	<control>
-0x92	0x0092	#	<control>
-0x93	0x0093	#	<control>
-0x94	0x0094	#	<control>
-0x95	0x0095	#	<control>
-0x96	0x0096	#	<control>
-0x97	0x0097	#	<control>
-0x98	0x0098	#	<control>
-0x99	0x0099	#	<control>
-0x9A	0x009A	#	<control>
-0x9B	0x009B	#	<control>
-0x9C	0x009C	#	<control>
-0x9D	0x009D	#	<control>
-0x9E	0x009E	#	<control>
-0x9F	0x009F	#	<control>
-#0xA0	0x00A0	#	NO-BREAK SPACE
-0xA1	0x0E01	#	THAI CHARACTER KO KAI
-0xA2	0x0E02	#	THAI CHARACTER KHO KHAI
-0xA3	0x0E03	#	THAI CHARACTER KHO KHUAT
-0xA4	0x0E04	#	THAI CHARACTER KHO KHWAI
-0xA5	0x0E05	#	THAI CHARACTER KHO KHON
-0xA6	0x0E06	#	THAI CHARACTER KHO RAKHANG
-0xA7	0x0E07	#	THAI CHARACTER NGO NGU
-0xA8	0x0E08	#	THAI CHARACTER CHO CHAN
-0xA9	0x0E09	#	THAI CHARACTER CHO CHING
-0xAA	0x0E0A	#	THAI CHARACTER CHO CHANG
-0xAB	0x0E0B	#	THAI CHARACTER SO SO
-0xAC	0x0E0C	#	THAI CHARACTER CHO CHOE
-0xAD	0x0E0D	#	THAI CHARACTER YO YING
-0xAE	0x0E0E	#	THAI CHARACTER DO CHADA
-0xAF	0x0E0F	#	THAI CHARACTER TO PATAK
-0xB0	0x0E10	#	THAI CHARACTER THO THAN
-0xB1	0x0E11	#	THAI CHARACTER THO NANGMONTHO
-0xB2	0x0E12	#	THAI CHARACTER THO PHUTHAO
-0xB3	0x0E13	#	THAI CHARACTER NO NEN
-0xB4	0x0E14	#	THAI CHARACTER DO DEK
-0xB5	0x0E15	#	THAI CHARACTER TO TAO
-0xB6	0x0E16	#	THAI CHARACTER THO THUNG
-0xB7	0x0E17	#	THAI CHARACTER THO THAHAN
-0xB8	0x0E18	#	THAI CHARACTER THO THONG
-0xB9	0x0E19	#	THAI CHARACTER NO NU
-0xBA	0x0E1A	#	THAI CHARACTER BO BAIMAI
-0xBB	0x0E1B	#	THAI CHARACTER PO PLA
-0xBC	0x0E1C	#	THAI CHARACTER PHO PHUNG
-0xBD	0x0E1D	#	THAI CHARACTER FO FA
-0xBE	0x0E1E	#	THAI CHARACTER PHO PHAN
-0xBF	0x0E1F	#	THAI CHARACTER FO FAN
-0xC0	0x0E20	#	THAI CHARACTER PHO SAMPHAO
-0xC1	0x0E21	#	THAI CHARACTER MO MA
-0xC2	0x0E22	#	THAI CHARACTER YO YAK
-0xC3	0x0E23	#	THAI CHARACTER RO RUA
-0xC4	0x0E24	#	THAI CHARACTER RU
-0xC5	0x0E25	#	THAI CHARACTER LO LING
-0xC6	0x0E26	#	THAI CHARACTER LU
-0xC7	0x0E27	#	THAI CHARACTER WO WAEN
-0xC8	0x0E28	#	THAI CHARACTER SO SALA
-0xC9	0x0E29	#	THAI CHARACTER SO RUSI
-0xCA	0x0E2A	#	THAI CHARACTER SO SUA
-0xCB	0x0E2B	#	THAI CHARACTER HO HIP
-0xCC	0x0E2C	#	THAI CHARACTER LO CHULA
-0xCD	0x0E2D	#	THAI CHARACTER O ANG
-0xCE	0x0E2E	#	THAI CHARACTER HO NOKHUK
-0xCF	0x0E2F	#	THAI CHARACTER PAIYANNOI
-0xD0	0x0E30	#	THAI CHARACTER SARA A
-0xD1	0x0E31	#	THAI CHARACTER MAI HAN-AKAT
-0xD2	0x0E32	#	THAI CHARACTER SARA AA
-0xD3	0x0E33	#	THAI CHARACTER SARA AM
-0xD4	0x0E34	#	THAI CHARACTER SARA I
-0xD5	0x0E35	#	THAI CHARACTER SARA II
-0xD6	0x0E36	#	THAI CHARACTER SARA UE
-0xD7	0x0E37	#	THAI CHARACTER SARA UEE
-0xD8	0x0E38	#	THAI CHARACTER SARA U
-0xD9	0x0E39	#	THAI CHARACTER SARA UU
-0xDA	0x0E3A	#	THAI CHARACTER PHINTHU
-0xDF	0x0E3F	#	THAI CURRENCY SYMBOL BAHT
-0xE0	0x0E40	#	THAI CHARACTER SARA E
-0xE1	0x0E41	#	THAI CHARACTER SARA AE
-0xE2	0x0E42	#	THAI CHARACTER SARA O
-0xE3	0x0E43	#	THAI CHARACTER SARA AI MAIMUAN
-0xE4	0x0E44	#	THAI CHARACTER SARA AI MAIMALAI
-0xE5	0x0E45	#	THAI CHARACTER LAKKHANGYAO
-0xE6	0x0E46	#	THAI CHARACTER MAIYAMOK
-0xE7	0x0E47	#	THAI CHARACTER MAITAIKHU
-0xE8	0x0E48	#	THAI CHARACTER MAI EK
-0xE9	0x0E49	#	THAI CHARACTER MAI THO
-0xEA	0x0E4A	#	THAI CHARACTER MAI TRI
-0xEB	0x0E4B	#	THAI CHARACTER MAI CHATTAWA
-0xEC	0x0E4C	#	THAI CHARACTER THANTHAKHAT
-0xED	0x0E4D	#	THAI CHARACTER NIKHAHIT
-0xEE	0x0E4E	#	THAI CHARACTER YAMAKKAN
-0xEF	0x0E4F	#	THAI CHARACTER FONGMAN
-0xF0	0x0E50	#	THAI DIGIT ZERO
-0xF1	0x0E51	#	THAI DIGIT ONE
-0xF2	0x0E52	#	THAI DIGIT TWO
-0xF3	0x0E53	#	THAI DIGIT THREE
-0xF4	0x0E54	#	THAI DIGIT FOUR
-0xF5	0x0E55	#	THAI DIGIT FIVE
-0xF6	0x0E56	#	THAI DIGIT SIX
-0xF7	0x0E57	#	THAI DIGIT SEVEN
-0xF8	0x0E58	#	THAI DIGIT EIGHT
-0xF9	0x0E59	#	THAI DIGIT NINE
-0xFA	0x0E5A	#	THAI CHARACTER ANGKHANKHU
-0xFB	0x0E5B	#	THAI CHARACTER KHOMUT
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/README b/AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/README
deleted file mode 100644
index 07d1804..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/README
+++ /dev/null
@@ -1,41 +0,0 @@
-This is versioncheck 1.0, a first stab at automatic checking of versions of
-Python extension packages installed on your system.
-
-The basic idea is that each package contains a _checkversion.py
-somewhere, probably at the root level of the package. In addition, each
-package maintainer makes a file available on the net, through ftp or
-http, which contains the version number of the most recent distribution
-and some readable text explaining the differences with previous
-versions, where to download the package, etc.
-
-The checkversions.py script walks through the installed Python tree (or
-through a tree of choice), and runs each _checkversion.py script. These
-scripts retrieve the current-version file over the net, compares version
-numbers and tells the user about new versions of packages available.
-
-A boilerplate for the _checkversion.py file can be found here. Replace
-package name, version and the URL of the version-check file and put it in
-your distribution. In stead of a single URL you can also specify a list
-of URLs. Each of these will be checked in order until one is available,
-this is handy for distributions that live in multiple places. Put the
-primary distribution site (the most up-to-date site) before others.
-The script is executed with execfile(), not imported, and the current
-directory is the checkversion directory, so be careful with globals,
-importing, etc.
-
-The version-check file consists of an rfc822-style header followed by
-plaintext. The only header field checked currently is
-'Current-Version:', which should contain te current version and is
-matched against the string contained in the _checkversion.py script.
-The rest of the file is human-readable text and presented to the user if
-there is a version mismatch. It should contain at the very least a URL
-of either the current distribution or a webpage describing it.
-
-Pycheckversion.py is the module that does the actual checking of versions.
-It should be fine where it is, it is imported by checkversion before anything
-else is done, but if imports fail you may want to move it to somewhere
-along sys.path.
-
-	Jack Jansen, CWI, 23-Dec-97.
-	<jack@cwi.nl>
-	
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/_checkversion.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/_checkversion.py
deleted file mode 100644
index f466a80..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/_checkversion.py
+++ /dev/null
@@ -1,16 +0,0 @@
-"""This file (which is sourced, not imported) checks the version of the
-"versioncheck" package. It is also an example of how to format your own
-_checkversion.py file"""
-
-import pyversioncheck
-
-_PACKAGE="versioncheck"
-_VERSION="1.0"
-_URL="http://www.cwi.nl/~jack/versioncheck/curversion.txt"
-
-try:
-    _myverbose=VERBOSE
-except NameError:
-    _myverbose=1
-
-pyversioncheck.versioncheck(_PACKAGE, _URL, _VERSION, verbose=_myverbose)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/checkversions.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/checkversions.py
deleted file mode 100644
index 2455f30..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/checkversions.py
+++ /dev/null
@@ -1,52 +0,0 @@
-"""Checkversions - recursively search a directory (default: sys.prefix)
-for _checkversion.py files, and run each of them. This will tell you of
-new versions available for any packages you have installed."""
-
-import os
-import getopt
-import sys
-import pyversioncheck
-
-CHECKNAME="_checkversion.py"
-
-VERBOSE=1
-
-USAGE="""Usage: checkversions [-v verboselevel] [dir ...]
-Recursively examine a tree (default: sys.prefix) and for each package
-with a _checkversion.py file compare the installed version against the current
-version.
-
-Values for verboselevel:
-0 - Minimal output, one line per package
-1 - Also print descriptions for outdated packages (default)
-2 - Print information on each URL checked
-3 - Check every URL for packages with multiple locations"""
-
-def check1dir(dummy, dir, files):
-    if CHECKNAME in files:
-        fullname = os.path.join(dir, CHECKNAME)
-        try:
-            execfile(fullname)
-        except:
-            print '** Exception in', fullname
-
-def walk1tree(tree):
-    os.path.walk(tree, check1dir, None)
-
-def main():
-    global VERBOSE
-    try:
-        options, arguments = getopt.getopt(sys.argv[1:], 'v:')
-    except getopt.error:
-        print USAGE
-        sys.exit(1)
-    for o, a in options:
-        if o == '-v':
-            VERBOSE = int(a)
-    if not arguments:
-        arguments = [sys.prefix]
-    for dir in arguments:
-        walk1tree(dir)
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/pyversioncheck.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/pyversioncheck.py
deleted file mode 100644
index 1a9d10e..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/versioncheck/pyversioncheck.py
+++ /dev/null
@@ -1,98 +0,0 @@
-"""pyversioncheck - Module to help with checking versions"""
-import types
-import rfc822
-import urllib
-import sys
-
-# Verbose options
-VERBOSE_SILENT=0        # Single-line reports per package
-VERBOSE_NORMAL=1        # Single-line reports per package, more info if outdated
-VERBOSE_EACHFILE=2      # Report on each URL checked
-VERBOSE_CHECKALL=3      # Check each URL for each package
-
-# Test directory
-## urllib bug: _TESTDIR="ftp://ftp.cwi.nl/pub/jack/python/versiontestdir/"
-_TESTDIR="http://www.cwi.nl/~jack/versiontestdir/"
-
-def versioncheck(package, url, version, verbose=0):
-    ok, newversion, fp = checkonly(package, url, version, verbose)
-    if verbose > VERBOSE_NORMAL:
-        return ok
-    if ok < 0:
-        print '%s: No correctly formatted current version file found'%(package)
-    elif ok == 1:
-        print '%s: up-to-date (version %s)'%(package, version)
-    else:
-        print '%s: version %s installed, version %s found:' % \
-                        (package, version, newversion)
-        if verbose > VERBOSE_SILENT:
-            while 1:
-                line = fp.readline()
-                if not line: break
-                sys.stdout.write('\t'+line)
-    return ok
-
-def checkonly(package, url, version, verbose=0):
-    if verbose >= VERBOSE_EACHFILE:
-        print '%s:'%package
-    if type(url) == types.StringType:
-        ok, newversion, fp = _check1version(package, url, version, verbose)
-    else:
-        for u in url:
-            ok, newversion, fp = _check1version(package, u, version, verbose)
-            if ok >= 0 and verbose < VERBOSE_CHECKALL:
-                break
-    return ok, newversion, fp
-
-def _check1version(package, url, version, verbose=0):
-    if verbose >= VERBOSE_EACHFILE:
-        print '  Checking %s'%url
-    try:
-        fp = urllib.urlopen(url)
-    except IOError, arg:
-        if verbose >= VERBOSE_EACHFILE:
-            print '    Cannot open:', arg
-        return -1, None, None
-    msg = rfc822.Message(fp, seekable=0)
-    newversion = msg.getheader('current-version')
-    if not newversion:
-        if verbose >= VERBOSE_EACHFILE:
-            print '    No "Current-Version:" header in URL or URL not found'
-        return -1, None, None
-    version = version.lower().strip()
-    newversion = newversion.lower().strip()
-    if version == newversion:
-        if verbose >= VERBOSE_EACHFILE:
-            print '    Version identical (%s)'%newversion
-        return 1, version, fp
-    else:
-        if verbose >= VERBOSE_EACHFILE:
-            print '    Versions different (installed: %s, new: %s)'% \
-                        (version, newversion)
-        return 0, newversion, fp
-
-
-def _test():
-    print '--- TEST VERBOSE=1'
-    print '--- Testing existing and identical version file'
-    versioncheck('VersionTestPackage', _TESTDIR+'Version10.txt', '1.0', verbose=1)
-    print '--- Testing existing package with new version'
-    versioncheck('VersionTestPackage', _TESTDIR+'Version11.txt', '1.0', verbose=1)
-    print '--- Testing package with non-existing version file'
-    versioncheck('VersionTestPackage', _TESTDIR+'nonexistent.txt', '1.0', verbose=1)
-    print '--- Test package with 2 locations, first non-existing second ok'
-    versfiles = [_TESTDIR+'nonexistent.txt', _TESTDIR+'Version10.txt']
-    versioncheck('VersionTestPackage', versfiles, '1.0', verbose=1)
-    print '--- TEST VERBOSE=2'
-    print '--- Testing existing and identical version file'
-    versioncheck('VersionTestPackage', _TESTDIR+'Version10.txt', '1.0', verbose=2)
-    print '--- Testing existing package with new version'
-    versioncheck('VersionTestPackage', _TESTDIR+'Version11.txt', '1.0', verbose=2)
-    print '--- Testing package with non-existing version file'
-    versioncheck('VersionTestPackage', _TESTDIR+'nonexistent.txt', '1.0', verbose=2)
-    print '--- Test package with 2 locations, first non-existing second ok'
-    versfiles = [_TESTDIR+'nonexistent.txt', _TESTDIR+'Version10.txt']
-    versioncheck('VersionTestPackage', versfiles, '1.0', verbose=2)
-
-if __name__ == '__main__':
-    _test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/README b/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/README
deleted file mode 100644
index 542081c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/README
+++ /dev/null
@@ -1,23 +0,0 @@
-Webchecker
-----------
-
-This is a simple web tree checker, useful to find bad links in a web
-tree.  It currently checks links pointing within the same subweb for
-validity.  The main program is "webchecker.py".  See its doc string
-(or invoke it with the option "-?") for more defails.
-
-History:
-
-- Jan 1997.  First release.  The module robotparser.py was written by
-Skip Montanaro; the rest is original work by Guido van Rossum.
-
-- May 1999.  Sam Bayer contributed a new version, wcnew.py, which
-supports checking internal links (#spam fragments in URLs) and some
-other options.
-
-- Nov 1999.  Sam Bayer contributed patches to reintegrate wcnew.py
-into webchecker.py, and corresponding mods to wcgui.py and
-websucker.py.
-
-- Mar 2004.  Chris Herborth contributed a patch to let webchecker.py
-handle XHTML's 'id' attribute.
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/tktools.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/tktools.py
deleted file mode 100644
index af6437a..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/tktools.py
+++ /dev/null
@@ -1,366 +0,0 @@
-"""Assorted Tk-related subroutines used in Grail."""
-
-
-from types import *
-from Tkinter import *
-
-def _clear_entry_widget(event):
-    try:
-        widget = event.widget
-        widget.delete(0, INSERT)
-    except: pass
-def install_keybindings(root):
-    root.bind_class('Entry', '<Control-u>', _clear_entry_widget)
-
-
-def make_toplevel(master, title=None, class_=None):
-    """Create a Toplevel widget.
-
-    This is a shortcut for a Toplevel() instantiation plus calls to
-    set the title and icon name of the widget.
-
-    """
-
-    if class_:
-        widget = Toplevel(master, class_=class_)
-    else:
-        widget = Toplevel(master)
-    if title:
-        widget.title(title)
-        widget.iconname(title)
-    return widget
-
-def set_transient(widget, master, relx=0.5, rely=0.3, expose=1):
-    """Make an existing toplevel widget transient for a master.
-
-    The widget must exist but should not yet have been placed; in
-    other words, this should be called after creating all the
-    subwidget but before letting the user interact.
-    """
-
-    widget.withdraw() # Remain invisible while we figure out the geometry
-    widget.transient(master)
-    widget.update_idletasks() # Actualize geometry information
-    if master.winfo_ismapped():
-        m_width = master.winfo_width()
-        m_height = master.winfo_height()
-        m_x = master.winfo_rootx()
-        m_y = master.winfo_rooty()
-    else:
-        m_width = master.winfo_screenwidth()
-        m_height = master.winfo_screenheight()
-        m_x = m_y = 0
-    w_width = widget.winfo_reqwidth()
-    w_height = widget.winfo_reqheight()
-    x = m_x + (m_width - w_width) * relx
-    y = m_y + (m_height - w_height) * rely
-    widget.geometry("+%d+%d" % (x, y))
-    if expose:
-        widget.deiconify()      # Become visible at the desired location
-    return widget
-
-
-def make_scrollbars(parent, hbar, vbar, pack=1, class_=None, name=None,
-                    takefocus=0):
-
-    """Subroutine to create a frame with scrollbars.
-
-    This is used by make_text_box and similar routines.
-
-    Note: the caller is responsible for setting the x/y scroll command
-    properties (e.g. by calling set_scroll_commands()).
-
-    Return a tuple containing the hbar, the vbar, and the frame, where
-    hbar and vbar are None if not requested.
-
-    """
-    if class_:
-        if name: frame = Frame(parent, class_=class_, name=name)
-        else: frame = Frame(parent, class_=class_)
-    else:
-        if name: frame = Frame(parent, name=name)
-        else: frame = Frame(parent)
-
-    if pack:
-        frame.pack(fill=BOTH, expand=1)
-
-    corner = None
-    if vbar:
-        if not hbar:
-            vbar = Scrollbar(frame, takefocus=takefocus)
-            vbar.pack(fill=Y, side=RIGHT)
-        else:
-            vbarframe = Frame(frame, borderwidth=0)
-            vbarframe.pack(fill=Y, side=RIGHT)
-            vbar = Scrollbar(frame, name="vbar", takefocus=takefocus)
-            vbar.pack(in_=vbarframe, expand=1, fill=Y, side=TOP)
-            sbwidth = vbar.winfo_reqwidth()
-            corner = Frame(vbarframe, width=sbwidth, height=sbwidth)
-            corner.propagate(0)
-            corner.pack(side=BOTTOM)
-    else:
-        vbar = None
-
-    if hbar:
-        hbar = Scrollbar(frame, orient=HORIZONTAL, name="hbar",
-                         takefocus=takefocus)
-        hbar.pack(fill=X, side=BOTTOM)
-    else:
-        hbar = None
-
-    return hbar, vbar, frame
-
-
-def set_scroll_commands(widget, hbar, vbar):
-
-    """Link a scrollable widget to its scroll bars.
-
-    The scroll bars may be empty.
-
-    """
-
-    if vbar:
-        widget['yscrollcommand'] = (vbar, 'set')
-        vbar['command'] = (widget, 'yview')
-
-    if hbar:
-        widget['xscrollcommand'] = (hbar, 'set')
-        hbar['command'] = (widget, 'xview')
-
-    widget.vbar = vbar
-    widget.hbar = hbar
-
-
-def make_text_box(parent, width=0, height=0, hbar=0, vbar=1,
-                  fill=BOTH, expand=1, wrap=WORD, pack=1,
-                  class_=None, name=None, takefocus=None):
-
-    """Subroutine to create a text box.
-
-    Create:
-    - a both-ways filling and expanding frame, containing:
-      - a text widget on the left, and
-      - possibly a vertical scroll bar on the right.
-      - possibly a horizonta; scroll bar at the bottom.
-
-    Return the text widget and the frame widget.
-
-    """
-    hbar, vbar, frame = make_scrollbars(parent, hbar, vbar, pack,
-                                        class_=class_, name=name,
-                                        takefocus=takefocus)
-
-    widget = Text(frame, wrap=wrap, name="text")
-    if width: widget.config(width=width)
-    if height: widget.config(height=height)
-    widget.pack(expand=expand, fill=fill, side=LEFT)
-
-    set_scroll_commands(widget, hbar, vbar)
-
-    return widget, frame
-
-
-def make_list_box(parent, width=0, height=0, hbar=0, vbar=1,
-                  fill=BOTH, expand=1, pack=1, class_=None, name=None,
-                  takefocus=None):
-
-    """Subroutine to create a list box.
-
-    Like make_text_box().
-    """
-    hbar, vbar, frame = make_scrollbars(parent, hbar, vbar, pack,
-                                        class_=class_, name=name,
-                                        takefocus=takefocus)
-
-    widget = Listbox(frame, name="listbox")
-    if width: widget.config(width=width)
-    if height: widget.config(height=height)
-    widget.pack(expand=expand, fill=fill, side=LEFT)
-
-    set_scroll_commands(widget, hbar, vbar)
-
-    return widget, frame
-
-
-def make_canvas(parent, width=0, height=0, hbar=1, vbar=1,
-                fill=BOTH, expand=1, pack=1, class_=None, name=None,
-                takefocus=None):
-
-    """Subroutine to create a canvas.
-
-    Like make_text_box().
-
-    """
-
-    hbar, vbar, frame = make_scrollbars(parent, hbar, vbar, pack,
-                                        class_=class_, name=name,
-                                        takefocus=takefocus)
-
-    widget = Canvas(frame, scrollregion=(0, 0, width, height), name="canvas")
-    if width: widget.config(width=width)
-    if height: widget.config(height=height)
-    widget.pack(expand=expand, fill=fill, side=LEFT)
-
-    set_scroll_commands(widget, hbar, vbar)
-
-    return widget, frame
-
-
-
-def make_form_entry(parent, label, borderwidth=None):
-
-    """Subroutine to create a form entry.
-
-    Create:
-    - a horizontally filling and expanding frame, containing:
-      - a label on the left, and
-      - a text entry on the right.
-
-    Return the entry widget and the frame widget.
-
-    """
-
-    frame = Frame(parent)
-    frame.pack(fill=X)
-
-    label = Label(frame, text=label)
-    label.pack(side=LEFT)
-
-    if borderwidth is None:
-        entry = Entry(frame, relief=SUNKEN)
-    else:
-        entry = Entry(frame, relief=SUNKEN, borderwidth=borderwidth)
-    entry.pack(side=LEFT, fill=X, expand=1)
-
-    return entry, frame
-
-# This is a slightly modified version of the function above.  This
-# version does the proper alighnment of labels with their fields.  It
-# should probably eventually replace make_form_entry altogether.
-#
-# The one annoying bug is that the text entry field should be
-# expandable while still aligning the colons.  This doesn't work yet.
-#
-def make_labeled_form_entry(parent, label, entrywidth=20, entryheight=1,
-                            labelwidth=0, borderwidth=None,
-                            takefocus=None):
-    """Subroutine to create a form entry.
-
-    Create:
-    - a horizontally filling and expanding frame, containing:
-      - a label on the left, and
-      - a text entry on the right.
-
-    Return the entry widget and the frame widget.
-    """
-    if label and label[-1] != ':': label = label + ':'
-
-    frame = Frame(parent)
-
-    label = Label(frame, text=label, width=labelwidth, anchor=E)
-    label.pack(side=LEFT)
-    if entryheight == 1:
-        if borderwidth is None:
-            entry = Entry(frame, relief=SUNKEN, width=entrywidth)
-        else:
-            entry = Entry(frame, relief=SUNKEN, width=entrywidth,
-                          borderwidth=borderwidth)
-        entry.pack(side=RIGHT, expand=1, fill=X)
-        frame.pack(fill=X)
-    else:
-        entry = make_text_box(frame, entrywidth, entryheight, 1, 1,
-                              takefocus=takefocus)
-        frame.pack(fill=BOTH, expand=1)
-
-    return entry, frame, label
-
-
-def make_double_frame(master=None, class_=None, name=None, relief=RAISED,
-                      borderwidth=1):
-    """Create a pair of frames suitable for 'hosting' a dialog."""
-    if name:
-        if class_: frame = Frame(master, class_=class_, name=name)
-        else: frame = Frame(master, name=name)
-    else:
-        if class_: frame = Frame(master, class_=class_)
-        else: frame = Frame(master)
-    top = Frame(frame, name="topframe", relief=relief,
-                borderwidth=borderwidth)
-    bottom = Frame(frame, name="bottomframe")
-    bottom.pack(fill=X, padx='1m', pady='1m', side=BOTTOM)
-    top.pack(expand=1, fill=BOTH, padx='1m', pady='1m')
-    frame.pack(expand=1, fill=BOTH)
-    top = Frame(top)
-    top.pack(expand=1, fill=BOTH, padx='2m', pady='2m')
-
-    return frame, top, bottom
-
-
-def make_group_frame(master, name=None, label=None, fill=Y,
-                     side=None, expand=None, font=None):
-    """Create nested frames with a border and optional label.
-
-    The outer frame is only used to provide the decorative border, to
-    control packing, and to host the label.  The inner frame is packed
-    to fill the outer frame and should be used as the parent of all
-    sub-widgets.  Only the inner frame is returned.
-
-    """
-    font = font or "-*-helvetica-medium-r-normal-*-*-100-*-*-*-*-*-*"
-    outer = Frame(master, borderwidth=2, relief=GROOVE)
-    outer.pack(expand=expand, fill=fill, side=side)
-    if label:
-        Label(outer, text=label, font=font, anchor=W).pack(fill=X)
-    inner = Frame(master, borderwidth='1m', name=name)
-    inner.pack(expand=1, fill=BOTH, in_=outer)
-    inner.forget = outer.forget
-    return inner
-
-
-def unify_button_widths(*buttons):
-    """Make buttons passed in all have the same width.
-
-    Works for labels and other widgets with the 'text' option.
-
-    """
-    wid = 0
-    for btn in buttons:
-        wid = max(wid, len(btn["text"]))
-    for btn in buttons:
-        btn["width"] = wid
-
-
-def flatten(msg):
-    """Turn a list or tuple into a single string -- recursively."""
-    t = type(msg)
-    if t in (ListType, TupleType):
-        msg = ' '.join(map(flatten, msg))
-    elif t is ClassType:
-        msg = msg.__name__
-    else:
-        msg = str(msg)
-    return msg
-
-
-def boolean(s):
-    """Test whether a string is a Tk boolean, without error checking."""
-    if s.lower() in ('', '0', 'no', 'off', 'false'): return 0
-    else: return 1
-
-
-def test():
-    """Test make_text_box(), make_form_entry(), flatten(), boolean()."""
-    import sys
-    root = Tk()
-    entry, eframe = make_form_entry(root, 'Boolean:')
-    text, tframe = make_text_box(root)
-    def enter(event, entry=entry, text=text):
-        s = boolean(entry.get()) and '\nyes' or '\nno'
-        text.insert('end', s)
-    entry.bind('<Return>', enter)
-    entry.insert(END, flatten(sys.argv))
-    root.mainloop()
-
-
-if __name__ == '__main__':
-    test()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wcgui.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wcgui.py
deleted file mode 100644
index 0300485..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wcgui.py
+++ /dev/null
@@ -1,456 +0,0 @@
-#! /usr/bin/env python
-
-"""GUI interface to webchecker.
-
-This works as a Grail applet too!  E.g.
-
-  <APPLET CODE=wcgui.py NAME=CheckerWindow></APPLET>
-
-Checkpoints are not (yet???  ever???) supported.
-
-User interface:
-
-Enter a root to check in the text entry box.  To enter more than one root,
-enter them one at a time and press <Return> for each one.
-
-Command buttons Start, Stop and "Check one" govern the checking process in
-the obvious way.  Start and "Check one" also enter the root from the text
-entry box if one is present.  There's also a check box (enabled by default)
-to decide whether actually to follow external links (since this can slow
-the checking down considerably).  Finally there's a Quit button.
-
-A series of checkbuttons determines whether the corresponding output panel
-is shown.  List panels are also automatically shown or hidden when their
-status changes between empty to non-empty.  There are six panels:
-
-Log        -- raw output from the checker (-v, -q affect this)
-To check   -- links discovered but not yet checked
-Checked    -- links that have been checked
-Bad links  -- links that failed upon checking
-Errors     -- pages containing at least one bad link
-Details    -- details about one URL; double click on a URL in any of
-              the above list panels (not in Log) will show details
-              for that URL
-
-Use your window manager's Close command to quit.
-
-Command line options:
-
--m bytes  -- skip HTML pages larger than this size (default %(MAXPAGE)d)
--q        -- quiet operation (also suppresses external links report)
--v        -- verbose operation; repeating -v will increase verbosity
--t root   -- specify root dir which should be treated as internal (can repeat)
--a        -- don't check name anchors
-
-Command line arguments:
-
-rooturl   -- URL to start checking
-             (default %(DEFROOT)s)
-
-XXX The command line options (-m, -q, -v) should be GUI accessible.
-
-XXX The roots should be visible as a list (?).
-
-XXX The multipanel user interface is clumsy.
-
-"""
-
-# ' Emacs bait
-
-
-import sys
-import getopt
-from Tkinter import *
-import tktools
-import webchecker
-
-def main():
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 't:m:qva')
-    except getopt.error, msg:
-        sys.stdout = sys.stderr
-        print msg
-        print __doc__%vars(webchecker)
-        sys.exit(2)
-    webchecker.verbose = webchecker.VERBOSE
-    webchecker.nonames = webchecker.NONAMES
-    webchecker.maxpage = webchecker.MAXPAGE
-    extra_roots = []
-    for o, a in opts:
-        if o == '-m':
-            webchecker.maxpage = int(a)
-        if o == '-q':
-            webchecker.verbose = 0
-        if o == '-v':
-            webchecker.verbose = webchecker.verbose + 1
-        if o == '-t':
-            extra_roots.append(a)
-        if o == '-a':
-            webchecker.nonames = not webchecker.nonames
-    root = Tk(className='Webchecker')
-    root.protocol("WM_DELETE_WINDOW", root.quit)
-    c = CheckerWindow(root)
-    c.setflags(verbose=webchecker.verbose, maxpage=webchecker.maxpage,
-               nonames=webchecker.nonames)
-    if args:
-        for arg in args[:-1]:
-            c.addroot(arg)
-        c.suggestroot(args[-1])
-    # Usually conditioned on whether external links
-    # will be checked, but since that's not a command
-    # line option, just toss them in.
-    for url_root in extra_roots:
-        # Make sure it's terminated by a slash,
-        # so that addroot doesn't discard the last
-        # directory component.
-        if url_root[-1] != "/":
-            url_root = url_root + "/"
-        c.addroot(url_root, add_to_do = 0)
-    root.mainloop()
-
-
-class CheckerWindow(webchecker.Checker):
-
-    def __init__(self, parent, root=webchecker.DEFROOT):
-        self.__parent = parent
-
-        self.__topcontrols = Frame(parent)
-        self.__topcontrols.pack(side=TOP, fill=X)
-        self.__label = Label(self.__topcontrols, text="Root URL:")
-        self.__label.pack(side=LEFT)
-        self.__rootentry = Entry(self.__topcontrols, width=60)
-        self.__rootentry.pack(side=LEFT)
-        self.__rootentry.bind('<Return>', self.enterroot)
-        self.__rootentry.focus_set()
-
-        self.__controls = Frame(parent)
-        self.__controls.pack(side=TOP, fill=X)
-        self.__running = 0
-        self.__start = Button(self.__controls, text="Run", command=self.start)
-        self.__start.pack(side=LEFT)
-        self.__stop = Button(self.__controls, text="Stop", command=self.stop,
-                             state=DISABLED)
-        self.__stop.pack(side=LEFT)
-        self.__step = Button(self.__controls, text="Check one",
-                             command=self.step)
-        self.__step.pack(side=LEFT)
-        self.__cv = BooleanVar(parent)
-        self.__cv.set(self.checkext)
-        self.__checkext = Checkbutton(self.__controls, variable=self.__cv,
-                                      command=self.update_checkext,
-                                      text="Check nonlocal links",)
-        self.__checkext.pack(side=LEFT)
-        self.__reset = Button(self.__controls, text="Start over", command=self.reset)
-        self.__reset.pack(side=LEFT)
-        if __name__ == '__main__': # No Quit button under Grail!
-            self.__quit = Button(self.__controls, text="Quit",
-                                 command=self.__parent.quit)
-            self.__quit.pack(side=RIGHT)
-
-        self.__status = Label(parent, text="Status: initial", anchor=W)
-        self.__status.pack(side=TOP, fill=X)
-        self.__checking = Label(parent, text="Idle", anchor=W)
-        self.__checking.pack(side=TOP, fill=X)
-        self.__mp = mp = MultiPanel(parent)
-        sys.stdout = self.__log = LogPanel(mp, "Log")
-        self.__todo = ListPanel(mp, "To check", self, self.showinfo)
-        self.__done = ListPanel(mp, "Checked", self, self.showinfo)
-        self.__bad = ListPanel(mp, "Bad links", self, self.showinfo)
-        self.__errors = ListPanel(mp, "Pages w/ bad links", self, self.showinfo)
-        self.__details = LogPanel(mp, "Details")
-        self.root_seed = None
-        webchecker.Checker.__init__(self)
-        if root:
-            root = str(root).strip()
-            if root:
-                self.suggestroot(root)
-        self.newstatus()
-
-    def reset(self):
-        webchecker.Checker.reset(self)
-        for p in self.__todo, self.__done, self.__bad, self.__errors:
-            p.clear()
-        if self.root_seed:
-            self.suggestroot(self.root_seed)
-
-    def suggestroot(self, root):
-        self.__rootentry.delete(0, END)
-        self.__rootentry.insert(END, root)
-        self.__rootentry.select_range(0, END)
-        self.root_seed = root
-
-    def enterroot(self, event=None):
-        root = self.__rootentry.get()
-        root = root.strip()
-        if root:
-            self.__checking.config(text="Adding root "+root)
-            self.__checking.update_idletasks()
-            self.addroot(root)
-            self.__checking.config(text="Idle")
-            try:
-                i = self.__todo.items.index(root)
-            except (ValueError, IndexError):
-                pass
-            else:
-                self.__todo.list.select_clear(0, END)
-                self.__todo.list.select_set(i)
-                self.__todo.list.yview(i)
-        self.__rootentry.delete(0, END)
-
-    def start(self):
-        self.__start.config(state=DISABLED, relief=SUNKEN)
-        self.__stop.config(state=NORMAL)
-        self.__step.config(state=DISABLED)
-        self.enterroot()
-        self.__running = 1
-        self.go()
-
-    def stop(self):
-        self.__stop.config(state=DISABLED, relief=SUNKEN)
-        self.__running = 0
-
-    def step(self):
-        self.__start.config(state=DISABLED)
-        self.__step.config(state=DISABLED, relief=SUNKEN)
-        self.enterroot()
-        self.__running = 0
-        self.dosomething()
-
-    def go(self):
-        if self.__running:
-            self.__parent.after_idle(self.dosomething)
-        else:
-            self.__checking.config(text="Idle")
-            self.__start.config(state=NORMAL, relief=RAISED)
-            self.__stop.config(state=DISABLED, relief=RAISED)
-            self.__step.config(state=NORMAL, relief=RAISED)
-
-    __busy = 0
-
-    def dosomething(self):
-        if self.__busy: return
-        self.__busy = 1
-        if self.todo:
-            l = self.__todo.selectedindices()
-            if l:
-                i = l[0]
-            else:
-                i = 0
-                self.__todo.list.select_set(i)
-            self.__todo.list.yview(i)
-            url = self.__todo.items[i]
-            self.__checking.config(text="Checking "+self.format_url(url))
-            self.__parent.update()
-            self.dopage(url)
-        else:
-            self.stop()
-        self.__busy = 0
-        self.go()
-
-    def showinfo(self, url):
-        d = self.__details
-        d.clear()
-        d.put("URL:    %s\n" % self.format_url(url))
-        if self.bad.has_key(url):
-            d.put("Error:  %s\n" % str(self.bad[url]))
-        if url in self.roots:
-            d.put("Note:   This is a root URL\n")
-        if self.done.has_key(url):
-            d.put("Status: checked\n")
-            o = self.done[url]
-        elif self.todo.has_key(url):
-            d.put("Status: to check\n")
-            o = self.todo[url]
-        else:
-            d.put("Status: unknown (!)\n")
-            o = []
-        if (not url[1]) and self.errors.has_key(url[0]):
-            d.put("Bad links from this page:\n")
-            for triple in self.errors[url[0]]:
-                link, rawlink, msg = triple
-                d.put("  HREF  %s" % self.format_url(link))
-                if self.format_url(link) != rawlink: d.put(" (%s)" %rawlink)
-                d.put("\n")
-                d.put("  error %s\n" % str(msg))
-        self.__mp.showpanel("Details")
-        for source, rawlink in o:
-            d.put("Origin: %s" % source)
-            if rawlink != self.format_url(url):
-                d.put(" (%s)" % rawlink)
-            d.put("\n")
-        d.text.yview("1.0")
-
-    def setbad(self, url, msg):
-        webchecker.Checker.setbad(self, url, msg)
-        self.__bad.insert(url)
-        self.newstatus()
-
-    def setgood(self, url):
-        webchecker.Checker.setgood(self, url)
-        self.__bad.remove(url)
-        self.newstatus()
-
-    def newlink(self, url, origin):
-        webchecker.Checker.newlink(self, url, origin)
-        if self.done.has_key(url):
-            self.__done.insert(url)
-        elif self.todo.has_key(url):
-            self.__todo.insert(url)
-        self.newstatus()
-
-    def markdone(self, url):
-        webchecker.Checker.markdone(self, url)
-        self.__done.insert(url)
-        self.__todo.remove(url)
-        self.newstatus()
-
-    def seterror(self, url, triple):
-        webchecker.Checker.seterror(self, url, triple)
-        self.__errors.insert((url, ''))
-        self.newstatus()
-
-    def newstatus(self):
-        self.__status.config(text="Status: "+self.status())
-        self.__parent.update()
-
-    def update_checkext(self):
-        self.checkext = self.__cv.get()
-
-
-class ListPanel:
-
-    def __init__(self, mp, name, checker, showinfo=None):
-        self.mp = mp
-        self.name = name
-        self.showinfo = showinfo
-        self.checker = checker
-        self.panel = mp.addpanel(name)
-        self.list, self.frame = tktools.make_list_box(
-            self.panel, width=60, height=5)
-        self.list.config(exportselection=0)
-        if showinfo:
-            self.list.bind('<Double-Button-1>', self.doubleclick)
-        self.items = []
-
-    def clear(self):
-        self.items = []
-        self.list.delete(0, END)
-        self.mp.hidepanel(self.name)
-
-    def doubleclick(self, event):
-        l = self.selectedindices()
-        if l:
-            self.showinfo(self.items[l[0]])
-
-    def selectedindices(self):
-        l = self.list.curselection()
-        if not l: return []
-        return map(int, l)
-
-    def insert(self, url):
-        if url not in self.items:
-            if not self.items:
-                self.mp.showpanel(self.name)
-            # (I tried sorting alphabetically, but the display is too jumpy)
-            i = len(self.items)
-            self.list.insert(i, self.checker.format_url(url))
-            self.list.yview(i)
-            self.items.insert(i, url)
-
-    def remove(self, url):
-        try:
-            i = self.items.index(url)
-        except (ValueError, IndexError):
-            pass
-        else:
-            was_selected = i in self.selectedindices()
-            self.list.delete(i)
-            del self.items[i]
-            if not self.items:
-                self.mp.hidepanel(self.name)
-            elif was_selected:
-                if i >= len(self.items):
-                    i = len(self.items) - 1
-                self.list.select_set(i)
-
-
-class LogPanel:
-
-    def __init__(self, mp, name):
-        self.mp = mp
-        self.name = name
-        self.panel = mp.addpanel(name)
-        self.text, self.frame = tktools.make_text_box(self.panel, height=10)
-        self.text.config(wrap=NONE)
-
-    def clear(self):
-        self.text.delete("1.0", END)
-        self.text.yview("1.0")
-
-    def put(self, s):
-        self.text.insert(END, s)
-        if '\n' in s:
-            self.text.yview(END)
-
-    def write(self, s):
-        self.text.insert(END, s)
-        if '\n' in s:
-            self.text.yview(END)
-            self.panel.update()
-
-
-class MultiPanel:
-
-    def __init__(self, parent):
-        self.parent = parent
-        self.frame = Frame(self.parent)
-        self.frame.pack(expand=1, fill=BOTH)
-        self.topframe = Frame(self.frame, borderwidth=2, relief=RAISED)
-        self.topframe.pack(fill=X)
-        self.botframe = Frame(self.frame)
-        self.botframe.pack(expand=1, fill=BOTH)
-        self.panelnames = []
-        self.panels = {}
-
-    def addpanel(self, name, on=0):
-        v = StringVar(self.parent)
-        if on:
-            v.set(name)
-        else:
-            v.set("")
-        check = Checkbutton(self.topframe, text=name,
-                            offvalue="", onvalue=name, variable=v,
-                            command=self.checkpanel)
-        check.pack(side=LEFT)
-        panel = Frame(self.botframe)
-        label = Label(panel, text=name, borderwidth=2, relief=RAISED, anchor=W)
-        label.pack(side=TOP, fill=X)
-        t = v, check, panel
-        self.panelnames.append(name)
-        self.panels[name] = t
-        if on:
-            panel.pack(expand=1, fill=BOTH)
-        return panel
-
-    def showpanel(self, name):
-        v, check, panel = self.panels[name]
-        v.set(name)
-        panel.pack(expand=1, fill=BOTH)
-
-    def hidepanel(self, name):
-        v, check, panel = self.panels[name]
-        v.set("")
-        panel.pack_forget()
-
-    def checkpanel(self):
-        for name in self.panelnames:
-            v, check, panel = self.panels[name]
-            panel.pack_forget()
-        for name in self.panelnames:
-            v, check, panel = self.panels[name]
-            if v.get():
-                panel.pack(expand=1, fill=BOTH)
-
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wcmac.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wcmac.py
deleted file mode 100644
index efab29d..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wcmac.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import webchecker, sys
-webchecker.DEFROOT = "http://www.python.org/python/"
-webchecker.MAXPAGE = 50000
-webchecker.verbose = 2
-sys.argv.append('-x')
-webchecker.main()
-raw_input("\nCR to exit: ")
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/webchecker.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/webchecker.py
deleted file mode 100644
index 9a0a6e6..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/webchecker.py
+++ /dev/null
@@ -1,892 +0,0 @@
-#! /usr/bin/env python
-
-# Original code by Guido van Rossum; extensive changes by Sam Bayer,
-# including code to check URL fragments.
-
-"""Web tree checker.
-
-This utility is handy to check a subweb of the world-wide web for
-errors.  A subweb is specified by giving one or more ``root URLs''; a
-page belongs to the subweb if one of the root URLs is an initial
-prefix of it.
-
-File URL extension:
-
-In order to easy the checking of subwebs via the local file system,
-the interpretation of ``file:'' URLs is extended to mimic the behavior
-of your average HTTP daemon: if a directory pathname is given, the
-file index.html in that directory is returned if it exists, otherwise
-a directory listing is returned.  Now, you can point webchecker to the
-document tree in the local file system of your HTTP daemon, and have
-most of it checked.  In fact the default works this way if your local
-web tree is located at /usr/local/etc/httpd/htdpcs (the default for
-the NCSA HTTP daemon and probably others).
-
-Report printed:
-
-When done, it reports pages with bad links within the subweb.  When
-interrupted, it reports for the pages that it has checked already.
-
-In verbose mode, additional messages are printed during the
-information gathering phase.  By default, it prints a summary of its
-work status every 50 URLs (adjustable with the -r option), and it
-reports errors as they are encountered.  Use the -q option to disable
-this output.
-
-Checkpoint feature:
-
-Whether interrupted or not, it dumps its state (a Python pickle) to a
-checkpoint file and the -R option allows it to restart from the
-checkpoint (assuming that the pages on the subweb that were already
-processed haven't changed).  Even when it has run till completion, -R
-can still be useful -- it will print the reports again, and -Rq prints
-the errors only.  In this case, the checkpoint file is not written
-again.  The checkpoint file can be set with the -d option.
-
-The checkpoint file is written as a Python pickle.  Remember that
-Python's pickle module is currently quite slow.  Give it the time it
-needs to load and save the checkpoint file.  When interrupted while
-writing the checkpoint file, the old checkpoint file is not
-overwritten, but all work done in the current run is lost.
-
-Miscellaneous:
-
-- You may find the (Tk-based) GUI version easier to use.  See wcgui.py.
-
-- Webchecker honors the "robots.txt" convention.  Thanks to Skip
-Montanaro for his robotparser.py module (included in this directory)!
-The agent name is hardwired to "webchecker".  URLs that are disallowed
-by the robots.txt file are reported as external URLs.
-
-- Because the SGML parser is a bit slow, very large SGML files are
-skipped.  The size limit can be set with the -m option.
-
-- When the server or protocol does not tell us a file's type, we guess
-it based on the URL's suffix.  The mimetypes.py module (also in this
-directory) has a built-in table mapping most currently known suffixes,
-and in addition attempts to read the mime.types configuration files in
-the default locations of Netscape and the NCSA HTTP daemon.
-
-- We follow links indicated by <A>, <FRAME> and <IMG> tags.  We also
-honor the <BASE> tag.
-
-- We now check internal NAME anchor links, as well as toplevel links.
-
-- Checking external links is now done by default; use -x to *disable*
-this feature.  External links are now checked during normal
-processing.  (XXX The status of a checked link could be categorized
-better.  Later...)
-
-- If external links are not checked, you can use the -t flag to
-provide specific overrides to -x.
-
-Usage: webchecker.py [option] ... [rooturl] ...
-
-Options:
-
--R        -- restart from checkpoint file
--d file   -- checkpoint filename (default %(DUMPFILE)s)
--m bytes  -- skip HTML pages larger than this size (default %(MAXPAGE)d)
--n        -- reports only, no checking (use with -R)
--q        -- quiet operation (also suppresses external links report)
--r number -- number of links processed per round (default %(ROUNDSIZE)d)
--t root   -- specify root dir which should be treated as internal (can repeat)
--v        -- verbose operation; repeating -v will increase verbosity
--x        -- don't check external links (these are often slow to check)
--a        -- don't check name anchors
-
-Arguments:
-
-rooturl   -- URL to start checking
-             (default %(DEFROOT)s)
-
-"""
-
-
-__version__ = "$Revision$"
-
-
-import sys
-import os
-from types import *
-import StringIO
-import getopt
-import pickle
-
-import urllib
-import urlparse
-import sgmllib
-import cgi
-
-import mimetypes
-import robotparser
-
-# Extract real version number if necessary
-if __version__[0] == '$':
-    _v = __version__.split()
-    if len(_v) == 3:
-        __version__ = _v[1]
-
-
-# Tunable parameters
-DEFROOT = "file:/usr/local/etc/httpd/htdocs/"   # Default root URL
-CHECKEXT = 1                            # Check external references (1 deep)
-VERBOSE = 1                             # Verbosity level (0-3)
-MAXPAGE = 150000                        # Ignore files bigger than this
-ROUNDSIZE = 50                          # Number of links processed per round
-DUMPFILE = "@webchecker.pickle"         # Pickled checkpoint
-AGENTNAME = "webchecker"                # Agent name for robots.txt parser
-NONAMES = 0                             # Force name anchor checking
-
-
-# Global variables
-
-
-def main():
-    checkext = CHECKEXT
-    verbose = VERBOSE
-    maxpage = MAXPAGE
-    roundsize = ROUNDSIZE
-    dumpfile = DUMPFILE
-    restart = 0
-    norun = 0
-
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], 'Rd:m:nqr:t:vxa')
-    except getopt.error, msg:
-        sys.stdout = sys.stderr
-        print msg
-        print __doc__%globals()
-        sys.exit(2)
-
-    # The extra_roots variable collects extra roots.
-    extra_roots = []
-    nonames = NONAMES
-
-    for o, a in opts:
-        if o == '-R':
-            restart = 1
-        if o == '-d':
-            dumpfile = a
-        if o == '-m':
-            maxpage = int(a)
-        if o == '-n':
-            norun = 1
-        if o == '-q':
-            verbose = 0
-        if o == '-r':
-            roundsize = int(a)
-        if o == '-t':
-            extra_roots.append(a)
-        if o == '-a':
-            nonames = not nonames
-        if o == '-v':
-            verbose = verbose + 1
-        if o == '-x':
-            checkext = not checkext
-
-    if verbose > 0:
-        print AGENTNAME, "version", __version__
-
-    if restart:
-        c = load_pickle(dumpfile=dumpfile, verbose=verbose)
-    else:
-        c = Checker()
-
-    c.setflags(checkext=checkext, verbose=verbose,
-               maxpage=maxpage, roundsize=roundsize,
-               nonames=nonames
-               )
-
-    if not restart and not args:
-        args.append(DEFROOT)
-
-    for arg in args:
-        c.addroot(arg)
-
-    # The -t flag is only needed if external links are not to be
-    # checked. So -t values are ignored unless -x was specified.
-    if not checkext:
-        for root in extra_roots:
-            # Make sure it's terminated by a slash,
-            # so that addroot doesn't discard the last
-            # directory component.
-            if root[-1] != "/":
-                root = root + "/"
-            c.addroot(root, add_to_do = 0)
-
-    try:
-
-        if not norun:
-            try:
-                c.run()
-            except KeyboardInterrupt:
-                if verbose > 0:
-                    print "[run interrupted]"
-
-        try:
-            c.report()
-        except KeyboardInterrupt:
-            if verbose > 0:
-                print "[report interrupted]"
-
-    finally:
-        if c.save_pickle(dumpfile):
-            if dumpfile == DUMPFILE:
-                print "Use ``%s -R'' to restart." % sys.argv[0]
-            else:
-                print "Use ``%s -R -d %s'' to restart." % (sys.argv[0],
-                                                           dumpfile)
-
-
-def load_pickle(dumpfile=DUMPFILE, verbose=VERBOSE):
-    if verbose > 0:
-        print "Loading checkpoint from %s ..." % dumpfile
-    f = open(dumpfile, "rb")
-    c = pickle.load(f)
-    f.close()
-    if verbose > 0:
-        print "Done."
-        print "Root:", "\n      ".join(c.roots)
-    return c
-
-
-class Checker:
-
-    checkext = CHECKEXT
-    verbose = VERBOSE
-    maxpage = MAXPAGE
-    roundsize = ROUNDSIZE
-    nonames = NONAMES
-
-    validflags = tuple(dir())
-
-    def __init__(self):
-        self.reset()
-
-    def setflags(self, **kw):
-        for key in kw.keys():
-            if key not in self.validflags:
-                raise NameError, "invalid keyword argument: %s" % str(key)
-        for key, value in kw.items():
-            setattr(self, key, value)
-
-    def reset(self):
-        self.roots = []
-        self.todo = {}
-        self.done = {}
-        self.bad = {}
-
-        # Add a name table, so that the name URLs can be checked. Also
-        # serves as an implicit cache for which URLs are done.
-        self.name_table = {}
-
-        self.round = 0
-        # The following are not pickled:
-        self.robots = {}
-        self.errors = {}
-        self.urlopener = MyURLopener()
-        self.changed = 0
-
-    def note(self, level, format, *args):
-        if self.verbose > level:
-            if args:
-                format = format%args
-            self.message(format)
-
-    def message(self, format, *args):
-        if args:
-            format = format%args
-        print format
-
-    def __getstate__(self):
-        return (self.roots, self.todo, self.done, self.bad, self.round)
-
-    def __setstate__(self, state):
-        self.reset()
-        (self.roots, self.todo, self.done, self.bad, self.round) = state
-        for root in self.roots:
-            self.addrobot(root)
-        for url in self.bad.keys():
-            self.markerror(url)
-
-    def addroot(self, root, add_to_do = 1):
-        if root not in self.roots:
-            troot = root
-            scheme, netloc, path, params, query, fragment = \
-                    urlparse.urlparse(root)
-            i = path.rfind("/") + 1
-            if 0 < i < len(path):
-                path = path[:i]
-                troot = urlparse.urlunparse((scheme, netloc, path,
-                                             params, query, fragment))
-            self.roots.append(troot)
-            self.addrobot(root)
-            if add_to_do:
-                self.newlink((root, ""), ("<root>", root))
-
-    def addrobot(self, root):
-        root = urlparse.urljoin(root, "/")
-        if self.robots.has_key(root): return
-        url = urlparse.urljoin(root, "/robots.txt")
-        self.robots[root] = rp = robotparser.RobotFileParser()
-        self.note(2, "Parsing %s", url)
-        rp.debug = self.verbose > 3
-        rp.set_url(url)
-        try:
-            rp.read()
-        except (OSError, IOError), msg:
-            self.note(1, "I/O error parsing %s: %s", url, msg)
-
-    def run(self):
-        while self.todo:
-            self.round = self.round + 1
-            self.note(0, "\nRound %d (%s)\n", self.round, self.status())
-            urls = self.todo.keys()
-            urls.sort()
-            del urls[self.roundsize:]
-            for url in urls:
-                self.dopage(url)
-
-    def status(self):
-        return "%d total, %d to do, %d done, %d bad" % (
-            len(self.todo)+len(self.done),
-            len(self.todo), len(self.done),
-            len(self.bad))
-
-    def report(self):
-        self.message("")
-        if not self.todo: s = "Final"
-        else: s = "Interim"
-        self.message("%s Report (%s)", s, self.status())
-        self.report_errors()
-
-    def report_errors(self):
-        if not self.bad:
-            self.message("\nNo errors")
-            return
-        self.message("\nError Report:")
-        sources = self.errors.keys()
-        sources.sort()
-        for source in sources:
-            triples = self.errors[source]
-            self.message("")
-            if len(triples) > 1:
-                self.message("%d Errors in %s", len(triples), source)
-            else:
-                self.message("Error in %s", source)
-            # Call self.format_url() instead of referring
-            # to the URL directly, since the URLs in these
-            # triples is now a (URL, fragment) pair. The value
-            # of the "source" variable comes from the list of
-            # origins, and is a URL, not a pair.
-            for url, rawlink, msg in triples:
-                if rawlink != self.format_url(url): s = " (%s)" % rawlink
-                else: s = ""
-                self.message("  HREF %s%s\n    msg %s",
-                             self.format_url(url), s, msg)
-
-    def dopage(self, url_pair):
-
-        # All printing of URLs uses format_url(); argument changed to
-        # url_pair for clarity.
-        if self.verbose > 1:
-            if self.verbose > 2:
-                self.show("Check ", self.format_url(url_pair),
-                          "  from", self.todo[url_pair])
-            else:
-                self.message("Check %s", self.format_url(url_pair))
-        url, local_fragment = url_pair
-        if local_fragment and self.nonames:
-            self.markdone(url_pair)
-            return
-        try:
-            page = self.getpage(url_pair)
-        except sgmllib.SGMLParseError, msg:
-            msg = self.sanitize(msg)
-            self.note(0, "Error parsing %s: %s",
-                          self.format_url(url_pair), msg)
-            # Dont actually mark the URL as bad - it exists, just
-            # we can't parse it!
-            page = None
-        if page:
-            # Store the page which corresponds to this URL.
-            self.name_table[url] = page
-            # If there is a fragment in this url_pair, and it's not
-            # in the list of names for the page, call setbad(), since
-            # it's a missing anchor.
-            if local_fragment and local_fragment not in page.getnames():
-                self.setbad(url_pair, ("Missing name anchor `%s'" % local_fragment))
-            for info in page.getlinkinfos():
-                # getlinkinfos() now returns the fragment as well,
-                # and we store that fragment here in the "todo" dictionary.
-                link, rawlink, fragment = info
-                # However, we don't want the fragment as the origin, since
-                # the origin is logically a page.
-                origin = url, rawlink
-                self.newlink((link, fragment), origin)
-        else:
-            # If no page has been created yet, we want to
-            # record that fact.
-            self.name_table[url_pair[0]] = None
-        self.markdone(url_pair)
-
-    def newlink(self, url, origin):
-        if self.done.has_key(url):
-            self.newdonelink(url, origin)
-        else:
-            self.newtodolink(url, origin)
-
-    def newdonelink(self, url, origin):
-        if origin not in self.done[url]:
-            self.done[url].append(origin)
-
-        # Call self.format_url(), since the URL here
-        # is now a (URL, fragment) pair.
-        self.note(3, "  Done link %s", self.format_url(url))
-
-        # Make sure that if it's bad, that the origin gets added.
-        if self.bad.has_key(url):
-            source, rawlink = origin
-            triple = url, rawlink, self.bad[url]
-            self.seterror(source, triple)
-
-    def newtodolink(self, url, origin):
-        # Call self.format_url(), since the URL here
-        # is now a (URL, fragment) pair.
-        if self.todo.has_key(url):
-            if origin not in self.todo[url]:
-                self.todo[url].append(origin)
-            self.note(3, "  Seen todo link %s", self.format_url(url))
-        else:
-            self.todo[url] = [origin]
-            self.note(3, "  New todo link %s", self.format_url(url))
-
-    def format_url(self, url):
-        link, fragment = url
-        if fragment: return link + "#" + fragment
-        else: return link
-
-    def markdone(self, url):
-        self.done[url] = self.todo[url]
-        del self.todo[url]
-        self.changed = 1
-
-    def inroots(self, url):
-        for root in self.roots:
-            if url[:len(root)] == root:
-                return self.isallowed(root, url)
-        return 0
-
-    def isallowed(self, root, url):
-        root = urlparse.urljoin(root, "/")
-        return self.robots[root].can_fetch(AGENTNAME, url)
-
-    def getpage(self, url_pair):
-        # Incoming argument name is a (URL, fragment) pair.
-        # The page may have been cached in the name_table variable.
-        url, fragment = url_pair
-        if self.name_table.has_key(url):
-            return self.name_table[url]
-
-        scheme, path = urllib.splittype(url)
-        if scheme in ('mailto', 'news', 'javascript', 'telnet'):
-            self.note(1, " Not checking %s URL" % scheme)
-            return None
-        isint = self.inroots(url)
-
-        # Ensure that openpage gets the URL pair to
-        # print out its error message and record the error pair
-        # correctly.
-        if not isint:
-            if not self.checkext:
-                self.note(1, " Not checking ext link")
-                return None
-            f = self.openpage(url_pair)
-            if f:
-                self.safeclose(f)
-            return None
-        text, nurl = self.readhtml(url_pair)
-
-        if nurl != url:
-            self.note(1, " Redirected to %s", nurl)
-            url = nurl
-        if text:
-            return Page(text, url, maxpage=self.maxpage, checker=self)
-
-    # These next three functions take (URL, fragment) pairs as
-    # arguments, so that openpage() receives the appropriate tuple to
-    # record error messages.
-    def readhtml(self, url_pair):
-        url, fragment = url_pair
-        text = None
-        f, url = self.openhtml(url_pair)
-        if f:
-            text = f.read()
-            f.close()
-        return text, url
-
-    def openhtml(self, url_pair):
-        url, fragment = url_pair
-        f = self.openpage(url_pair)
-        if f:
-            url = f.geturl()
-            info = f.info()
-            if not self.checkforhtml(info, url):
-                self.safeclose(f)
-                f = None
-        return f, url
-
-    def openpage(self, url_pair):
-        url, fragment = url_pair
-        try:
-            return self.urlopener.open(url)
-        except (OSError, IOError), msg:
-            msg = self.sanitize(msg)
-            self.note(0, "Error %s", msg)
-            if self.verbose > 0:
-                self.show(" HREF ", url, "  from", self.todo[url_pair])
-            self.setbad(url_pair, msg)
-            return None
-
-    def checkforhtml(self, info, url):
-        if info.has_key('content-type'):
-            ctype = cgi.parse_header(info['content-type'])[0].lower()
-            if ';' in ctype:
-                # handle content-type: text/html; charset=iso8859-1 :
-                ctype = ctype.split(';', 1)[0].strip()
-        else:
-            if url[-1:] == "/":
-                return 1
-            ctype, encoding = mimetypes.guess_type(url)
-        if ctype == 'text/html':
-            return 1
-        else:
-            self.note(1, " Not HTML, mime type %s", ctype)
-            return 0
-
-    def setgood(self, url):
-        if self.bad.has_key(url):
-            del self.bad[url]
-            self.changed = 1
-            self.note(0, "(Clear previously seen error)")
-
-    def setbad(self, url, msg):
-        if self.bad.has_key(url) and self.bad[url] == msg:
-            self.note(0, "(Seen this error before)")
-            return
-        self.bad[url] = msg
-        self.changed = 1
-        self.markerror(url)
-
-    def markerror(self, url):
-        try:
-            origins = self.todo[url]
-        except KeyError:
-            origins = self.done[url]
-        for source, rawlink in origins:
-            triple = url, rawlink, self.bad[url]
-            self.seterror(source, triple)
-
-    def seterror(self, url, triple):
-        try:
-            # Because of the way the URLs are now processed, I need to
-            # check to make sure the URL hasn't been entered in the
-            # error list.  The first element of the triple here is a
-            # (URL, fragment) pair, but the URL key is not, since it's
-            # from the list of origins.
-            if triple not in self.errors[url]:
-                self.errors[url].append(triple)
-        except KeyError:
-            self.errors[url] = [triple]
-
-    # The following used to be toplevel functions; they have been
-    # changed into methods so they can be overridden in subclasses.
-
-    def show(self, p1, link, p2, origins):
-        self.message("%s %s", p1, link)
-        i = 0
-        for source, rawlink in origins:
-            i = i+1
-            if i == 2:
-                p2 = ' '*len(p2)
-            if rawlink != link: s = " (%s)" % rawlink
-            else: s = ""
-            self.message("%s %s%s", p2, source, s)
-
-    def sanitize(self, msg):
-        if isinstance(IOError, ClassType) and isinstance(msg, IOError):
-            # Do the other branch recursively
-            msg.args = self.sanitize(msg.args)
-        elif isinstance(msg, TupleType):
-            if len(msg) >= 4 and msg[0] == 'http error' and \
-               isinstance(msg[3], InstanceType):
-                # Remove the Message instance -- it may contain
-                # a file object which prevents pickling.
-                msg = msg[:3] + msg[4:]
-        return msg
-
-    def safeclose(self, f):
-        try:
-            url = f.geturl()
-        except AttributeError:
-            pass
-        else:
-            if url[:4] == 'ftp:' or url[:7] == 'file://':
-                # Apparently ftp connections don't like to be closed
-                # prematurely...
-                text = f.read()
-        f.close()
-
-    def save_pickle(self, dumpfile=DUMPFILE):
-        if not self.changed:
-            self.note(0, "\nNo need to save checkpoint")
-        elif not dumpfile:
-            self.note(0, "No dumpfile, won't save checkpoint")
-        else:
-            self.note(0, "\nSaving checkpoint to %s ...", dumpfile)
-            newfile = dumpfile + ".new"
-            f = open(newfile, "wb")
-            pickle.dump(self, f)
-            f.close()
-            try:
-                os.unlink(dumpfile)
-            except os.error:
-                pass
-            os.rename(newfile, dumpfile)
-            self.note(0, "Done.")
-            return 1
-
-
-class Page:
-
-    def __init__(self, text, url, verbose=VERBOSE, maxpage=MAXPAGE, checker=None):
-        self.text = text
-        self.url = url
-        self.verbose = verbose
-        self.maxpage = maxpage
-        self.checker = checker
-
-        # The parsing of the page is done in the __init__() routine in
-        # order to initialize the list of names the file
-        # contains. Stored the parser in an instance variable. Passed
-        # the URL to MyHTMLParser().
-        size = len(self.text)
-        if size > self.maxpage:
-            self.note(0, "Skip huge file %s (%.0f Kbytes)", self.url, (size*0.001))
-            self.parser = None
-            return
-        self.checker.note(2, "  Parsing %s (%d bytes)", self.url, size)
-        self.parser = MyHTMLParser(url, verbose=self.verbose,
-                                   checker=self.checker)
-        self.parser.feed(self.text)
-        self.parser.close()
-
-    def note(self, level, msg, *args):
-        if self.checker:
-            apply(self.checker.note, (level, msg) + args)
-        else:
-            if self.verbose >= level:
-                if args:
-                    msg = msg%args
-                print msg
-
-    # Method to retrieve names.
-    def getnames(self):
-        if self.parser:
-            return self.parser.names
-        else:
-            return []
-
-    def getlinkinfos(self):
-        # File reading is done in __init__() routine.  Store parser in
-        # local variable to indicate success of parsing.
-
-        # If no parser was stored, fail.
-        if not self.parser: return []
-
-        rawlinks = self.parser.getlinks()
-        base = urlparse.urljoin(self.url, self.parser.getbase() or "")
-        infos = []
-        for rawlink in rawlinks:
-            t = urlparse.urlparse(rawlink)
-            # DON'T DISCARD THE FRAGMENT! Instead, include
-            # it in the tuples which are returned. See Checker.dopage().
-            fragment = t[-1]
-            t = t[:-1] + ('',)
-            rawlink = urlparse.urlunparse(t)
-            link = urlparse.urljoin(base, rawlink)
-            infos.append((link, rawlink, fragment))
-
-        return infos
-
-
-class MyStringIO(StringIO.StringIO):
-
-    def __init__(self, url, info):
-        self.__url = url
-        self.__info = info
-        StringIO.StringIO.__init__(self)
-
-    def info(self):
-        return self.__info
-
-    def geturl(self):
-        return self.__url
-
-
-class MyURLopener(urllib.FancyURLopener):
-
-    http_error_default = urllib.URLopener.http_error_default
-
-    def __init__(*args):
-        self = args[0]
-        apply(urllib.FancyURLopener.__init__, args)
-        self.addheaders = [
-            ('User-agent', 'Python-webchecker/%s' % __version__),
-            ]
-
-    def http_error_401(self, url, fp, errcode, errmsg, headers):
-        return None
-
-    def open_file(self, url):
-        path = urllib.url2pathname(urllib.unquote(url))
-        if os.path.isdir(path):
-            if path[-1] != os.sep:
-                url = url + '/'
-            indexpath = os.path.join(path, "index.html")
-            if os.path.exists(indexpath):
-                return self.open_file(url + "index.html")
-            try:
-                names = os.listdir(path)
-            except os.error, msg:
-                exc_type, exc_value, exc_tb = sys.exc_info()
-                raise IOError, msg, exc_tb
-            names.sort()
-            s = MyStringIO("file:"+url, {'content-type': 'text/html'})
-            s.write('<BASE HREF="file:%s">\n' %
-                    urllib.quote(os.path.join(path, "")))
-            for name in names:
-                q = urllib.quote(name)
-                s.write('<A HREF="%s">%s</A>\n' % (q, q))
-            s.seek(0)
-            return s
-        return urllib.FancyURLopener.open_file(self, url)
-
-
-class MyHTMLParser(sgmllib.SGMLParser):
-
-    def __init__(self, url, verbose=VERBOSE, checker=None):
-        self.myverbose = verbose # now unused
-        self.checker = checker
-        self.base = None
-        self.links = {}
-        self.names = []
-        self.url = url
-        sgmllib.SGMLParser.__init__(self)
-
-    def check_name_id(self, attributes):
-        """ Check the name or id attributes on an element.
-        """
-        # We must rescue the NAME or id (name is deprecated in XHTML)
-        # attributes from the anchor, in order to
-        # cache the internal anchors which are made
-        # available in the page.
-        for name, value in attributes:
-            if name == "name" or name == "id":
-                if value in self.names:
-                    self.checker.message("WARNING: duplicate ID name %s in %s",
-                                         value, self.url)
-                else: self.names.append(value)
-                break
-
-    def unknown_starttag(self, tag, attributes):
-        """ In XHTML, you can have id attributes on any element.
-        """
-        self.check_name_id(attributes)
-
-    def start_a(self, attributes):
-        self.link_attr(attributes, 'href')
-        self.check_name_id(attributes)
-
-    def end_a(self): pass
-
-    def do_area(self, attributes):
-        self.link_attr(attributes, 'href')
-        self.check_name_id(attributes)
-
-    def do_body(self, attributes):
-        self.link_attr(attributes, 'background', 'bgsound')
-        self.check_name_id(attributes)
-
-    def do_img(self, attributes):
-        self.link_attr(attributes, 'src', 'lowsrc')
-        self.check_name_id(attributes)
-
-    def do_frame(self, attributes):
-        self.link_attr(attributes, 'src', 'longdesc')
-        self.check_name_id(attributes)
-
-    def do_iframe(self, attributes):
-        self.link_attr(attributes, 'src', 'longdesc')
-        self.check_name_id(attributes)
-
-    def do_link(self, attributes):
-        for name, value in attributes:
-            if name == "rel":
-                parts = value.lower().split()
-                if (  parts == ["stylesheet"]
-                      or parts == ["alternate", "stylesheet"]):
-                    self.link_attr(attributes, "href")
-                    break
-        self.check_name_id(attributes)
-
-    def do_object(self, attributes):
-        self.link_attr(attributes, 'data', 'usemap')
-        self.check_name_id(attributes)
-
-    def do_script(self, attributes):
-        self.link_attr(attributes, 'src')
-        self.check_name_id(attributes)
-
-    def do_table(self, attributes):
-        self.link_attr(attributes, 'background')
-        self.check_name_id(attributes)
-
-    def do_td(self, attributes):
-        self.link_attr(attributes, 'background')
-        self.check_name_id(attributes)
-
-    def do_th(self, attributes):
-        self.link_attr(attributes, 'background')
-        self.check_name_id(attributes)
-
-    def do_tr(self, attributes):
-        self.link_attr(attributes, 'background')
-        self.check_name_id(attributes)
-
-    def link_attr(self, attributes, *args):
-        for name, value in attributes:
-            if name in args:
-                if value: value = value.strip()
-                if value: self.links[value] = None
-
-    def do_base(self, attributes):
-        for name, value in attributes:
-            if name == 'href':
-                if value: value = value.strip()
-                if value:
-                    if self.checker:
-                        self.checker.note(1, "  Base %s", value)
-                    self.base = value
-        self.check_name_id(attributes)
-
-    def getlinks(self):
-        return self.links.keys()
-
-    def getbase(self):
-        return self.base
-
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/websucker.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/websucker.py
deleted file mode 100644
index 9e4fd29..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/websucker.py
+++ /dev/null
@@ -1,123 +0,0 @@
-#! /usr/bin/env python
-
-"""A variant on webchecker that creates a mirror copy of a remote site."""
-
-__version__ = "$Revision$"
-
-import os
-import sys
-import urllib
-import getopt
-
-import webchecker
-
-# Extract real version number if necessary
-if __version__[0] == '$':
-    _v = __version__.split()
-    if len(_v) == 3:
-        __version__ = _v[1]
-
-def main():
-    verbose = webchecker.VERBOSE
-    try:
-        opts, args = getopt.getopt(sys.argv[1:], "qv")
-    except getopt.error, msg:
-        print msg
-        print "usage:", sys.argv[0], "[-qv] ... [rooturl] ..."
-        return 2
-    for o, a in opts:
-        if o == "-q":
-            verbose = 0
-        if o == "-v":
-            verbose = verbose + 1
-    c = Sucker()
-    c.setflags(verbose=verbose)
-    c.urlopener.addheaders = [
-            ('User-agent', 'websucker/%s' % __version__),
-        ]
-    for arg in args:
-        print "Adding root", arg
-        c.addroot(arg)
-    print "Run..."
-    c.run()
-
-class Sucker(webchecker.Checker):
-
-    checkext = 0
-    nonames = 1
-
-    # SAM 11/13/99: in general, URLs are now URL pairs.
-    # Since we've suppressed name anchor checking,
-    # we can ignore the second dimension.
-
-    def readhtml(self, url_pair):
-        url = url_pair[0]
-        text = None
-        path = self.savefilename(url)
-        try:
-            f = open(path, "rb")
-        except IOError:
-            f = self.openpage(url_pair)
-            if f:
-                info = f.info()
-                nurl = f.geturl()
-                if nurl != url:
-                    url = nurl
-                    path = self.savefilename(url)
-                text = f.read()
-                f.close()
-                self.savefile(text, path)
-                if not self.checkforhtml(info, url):
-                    text = None
-        else:
-            if self.checkforhtml({}, url):
-                text = f.read()
-            f.close()
-        return text, url
-
-    def savefile(self, text, path):
-        dir, base = os.path.split(path)
-        makedirs(dir)
-        try:
-            f = open(path, "wb")
-            f.write(text)
-            f.close()
-            self.message("saved %s", path)
-        except IOError, msg:
-            self.message("didn't save %s: %s", path, str(msg))
-
-    def savefilename(self, url):
-        type, rest = urllib.splittype(url)
-        host, path = urllib.splithost(rest)
-        path = path.lstrip("/")
-        user, host = urllib.splituser(host)
-        host, port = urllib.splitnport(host)
-        host = host.lower()
-        if not path or path[-1] == "/":
-            path = path + "index.html"
-        if os.sep != "/":
-            path = os.sep.join(path.split("/"))
-        path = os.path.join(host, path)
-        return path
-
-def makedirs(dir):
-    if not dir:
-        return
-    if os.path.exists(dir):
-        if not os.path.isdir(dir):
-            try:
-                os.rename(dir, dir + ".bak")
-                os.mkdir(dir)
-                os.rename(dir + ".bak", os.path.join(dir, "index.html"))
-            except os.error:
-                pass
-        return
-    head, tail = os.path.split(dir)
-    if not tail:
-        print "Huh?  Don't know how to make dir", dir
-        return
-    makedirs(head)
-    os.mkdir(dir, 0777)
-
-if __name__ == '__main__':
-    sys.exit(main() or 0)
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wsgui.py b/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wsgui.py
deleted file mode 100644
index 09fac2f..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/webchecker/wsgui.py
+++ /dev/null
@@ -1,240 +0,0 @@
-#! /usr/bin/env python
-
-"""Tkinter-based GUI for websucker.
-
-Easy use: type or paste source URL and destination directory in
-their respective text boxes, click GO or hit return, and presto.
-"""
-
-from Tkinter import *
-import websucker
-import os
-import threading
-import Queue
-import time
-
-VERBOSE = 2
-
-
-try:
-    class Canceled(Exception):
-        "Exception used to cancel run()."
-except (NameError, TypeError):
-    Canceled = __name__ + ".Canceled"
-
-
-class SuckerThread(websucker.Sucker):
-
-    stopit = 0
-    savedir = None
-    rootdir = None
-
-    def __init__(self, msgq):
-        self.msgq = msgq
-        websucker.Sucker.__init__(self)
-        self.setflags(verbose=VERBOSE)
-        self.urlopener.addheaders = [
-            ('User-agent', 'websucker/%s' % websucker.__version__),
-        ]
-
-    def message(self, format, *args):
-        if args:
-            format = format%args
-        ##print format
-        self.msgq.put(format)
-
-    def run1(self, url):
-        try:
-            try:
-                self.reset()
-                self.addroot(url)
-                self.run()
-            except Canceled:
-                self.message("[canceled]")
-            else:
-                self.message("[done]")
-        finally:
-            self.msgq.put(None)
-
-    def savefile(self, text, path):
-        if self.stopit:
-            raise Canceled
-        websucker.Sucker.savefile(self, text, path)
-
-    def getpage(self, url):
-        if self.stopit:
-            raise Canceled
-        return websucker.Sucker.getpage(self, url)
-
-    def savefilename(self, url):
-        path = websucker.Sucker.savefilename(self, url)
-        if self.savedir:
-            n = len(self.rootdir)
-            if path[:n] == self.rootdir:
-                path = path[n:]
-                while path[:1] == os.sep:
-                    path = path[1:]
-                path = os.path.join(self.savedir, path)
-        return path
-
-    def XXXaddrobot(self, *args):
-        pass
-
-    def XXXisallowed(self, *args):
-        return 1
-
-
-class App:
-
-    sucker = None
-    msgq = None
-
-    def __init__(self, top):
-        self.top = top
-        top.columnconfigure(99, weight=1)
-        self.url_label = Label(top, text="URL:")
-        self.url_label.grid(row=0, column=0, sticky='e')
-        self.url_entry = Entry(top, width=60, exportselection=0)
-        self.url_entry.grid(row=0, column=1, sticky='we',
-                    columnspan=99)
-        self.url_entry.focus_set()
-        self.url_entry.bind("<Key-Return>", self.go)
-        self.dir_label = Label(top, text="Directory:")
-        self.dir_label.grid(row=1, column=0, sticky='e')
-        self.dir_entry = Entry(top)
-        self.dir_entry.grid(row=1, column=1, sticky='we',
-                    columnspan=99)
-        self.go_button = Button(top, text="Go", command=self.go)
-        self.go_button.grid(row=2, column=1, sticky='w')
-        self.cancel_button = Button(top, text="Cancel",
-                        command=self.cancel,
-                                    state=DISABLED)
-        self.cancel_button.grid(row=2, column=2, sticky='w')
-        self.auto_button = Button(top, text="Paste+Go",
-                      command=self.auto)
-        self.auto_button.grid(row=2, column=3, sticky='w')
-        self.status_label = Label(top, text="[idle]")
-        self.status_label.grid(row=2, column=4, sticky='w')
-        self.top.update_idletasks()
-        self.top.grid_propagate(0)
-
-    def message(self, text, *args):
-        if args:
-            text = text % args
-        self.status_label.config(text=text)
-
-    def check_msgq(self):
-        while not self.msgq.empty():
-            msg = self.msgq.get()
-            if msg is None:
-                self.go_button.configure(state=NORMAL)
-                self.auto_button.configure(state=NORMAL)
-                self.cancel_button.configure(state=DISABLED)
-                if self.sucker:
-                    self.sucker.stopit = 0
-                self.top.bell()
-            else:
-                self.message(msg)
-        self.top.after(100, self.check_msgq)
-
-    def go(self, event=None):
-        if not self.msgq:
-            self.msgq = Queue.Queue(0)
-            self.check_msgq()
-        if not self.sucker:
-            self.sucker = SuckerThread(self.msgq)
-        if self.sucker.stopit:
-            return
-        self.url_entry.selection_range(0, END)
-        url = self.url_entry.get()
-        url = url.strip()
-        if not url:
-            self.top.bell()
-            self.message("[Error: No URL entered]")
-            return
-        self.rooturl = url
-        dir = self.dir_entry.get().strip()
-        if not dir:
-            self.sucker.savedir = None
-        else:
-            self.sucker.savedir = dir
-            self.sucker.rootdir = os.path.dirname(
-                websucker.Sucker.savefilename(self.sucker, url))
-        self.go_button.configure(state=DISABLED)
-        self.auto_button.configure(state=DISABLED)
-        self.cancel_button.configure(state=NORMAL)
-        self.message( '[running...]')
-        self.sucker.stopit = 0
-        t = threading.Thread(target=self.sucker.run1, args=(url,))
-        t.start()
-
-    def cancel(self):
-        if self.sucker:
-            self.sucker.stopit = 1
-        self.message("[canceling...]")
-
-    def auto(self):
-        tries = ['PRIMARY', 'CLIPBOARD']
-        text = ""
-        for t in tries:
-            try:
-                text = self.top.selection_get(selection=t)
-            except TclError:
-                continue
-            text = text.strip()
-            if text:
-                break
-        if not text:
-            self.top.bell()
-            self.message("[Error: clipboard is empty]")
-            return
-        self.url_entry.delete(0, END)
-        self.url_entry.insert(0, text)
-        self.go()
-
-
-class AppArray:
-
-    def __init__(self, top=None):
-        if not top:
-            top = Tk()
-            top.title("websucker GUI")
-            top.iconname("wsgui")
-            top.wm_protocol('WM_DELETE_WINDOW', self.exit)
-        self.top = top
-        self.appframe = Frame(self.top)
-        self.appframe.pack(fill='both')
-        self.applist = []
-        self.exit_button = Button(top, text="Exit", command=self.exit)
-        self.exit_button.pack(side=RIGHT)
-        self.new_button = Button(top, text="New", command=self.addsucker)
-        self.new_button.pack(side=LEFT)
-        self.addsucker()
-        ##self.applist[0].url_entry.insert(END, "http://www.python.org/doc/essays/")
-
-    def addsucker(self):
-        self.top.geometry("")
-        frame = Frame(self.appframe, borderwidth=2, relief=GROOVE)
-        frame.pack(fill='x')
-        app = App(frame)
-        self.applist.append(app)
-
-    done = 0
-
-    def mainloop(self):
-        while not self.done:
-            time.sleep(0.1)
-            self.top.update()
-
-    def exit(self):
-        for app in self.applist:
-            app.cancel()
-            app.message("[exiting...]")
-        self.done = 1
-
-
-def main():
-    AppArray().mainloop()
-
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/world/README b/AppPkg/Applications/Python/Python-2.7.2/Tools/world/README
deleted file mode 100644
index 3250a32..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/world/README
+++ /dev/null
@@ -1,85 +0,0 @@
-world -- Print mappings between country names and DNS country codes.
-
-Contact: Barry Warsaw
-Email:   bwarsaw@python.org
-
-This script will take a list of Internet addresses and print out where in the
-world those addresses originate from, based on the top-level domain country
-code found in the address.  Addresses can be in any of the following forms:
-
-    xx                -- just the country code or top-level domain identifier
-    host.domain.xx    -- any Internet host or network name
-    somebody@where.xx -- an Internet email address
-
-If no match is found, the address is interpreted as a regular expression [*]
-and a reverse lookup is attempted.  This script will search the country names
-and print a list of matching entries.  You can force reverse mappings with the
-`-r' flag (see below).
-
-For example:
-
-    %% world tz us
-    tz originated from Tanzania, United Republic of
-    us originated from United States
-
-    %% world united
-    united matches 6 countries:
-        ae: United Arab Emirates
-        uk: United Kingdom (common practice)
-        um: United States Minor Outlying Islands
-        us: United States
-        tz: Tanzania, United Republic of
-        gb: United Kingdom
-
-
- [*] Note that regular expressions must conform to Python 1.5's re.py module
- syntax.  The comparison is done with the search() method.
-
-Country codes are maintained by the RIPE Network Coordination Centre,
-in coordination with the ISO 3166 Maintenance Agency at DIN Berlin.  The
-authoritative source of counry code mappings is:
-
-    <url:ftp://info.ripe.net/iso3166-countrycodes>
-
-The latest known change to this information was:
-
-    Thu Aug  7 17:59:51 MET DST 1997
-
-This script also knows about non-geographic top-level domains.
-
-Usage: world [-d] [-p file] [-o] [-h] addr [addr ...]
-
-    --dump
-    -d
-        Print mapping of all top-level domains.
-
-    --parse file
-    -p file
-        Parse an iso3166-countrycodes file extracting the two letter country
-        code followed by the country name.  Note that the three letter country
-        codes and numbers, which are also provided in the standard format
-        file, are ignored.
-
-    --outputdict
-    -o
-        When used in conjunction with the `-p' option, output is in the form
-        of a Python dictionary, and country names are normalized
-        w.r.t. capitalization.  This makes it appropriate for cutting and
-        pasting back into this file.
-
-    --reverse
-    -r
-        Force reverse lookup.  In this mode the address can be any Python
-        regular expression; this is matched against all country names and a
-        list of matching mappings is printed.  In normal mode (e.g. without
-        this flag), reverse lookup is performed on addresses if no matching
-        country code is found.
-
-    -h
-    --help
-        Print this message.
-
-\f
-Local Variables:
-indent-tabs-mode: nil
-End:
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Tools/world/world b/AppPkg/Applications/Python/Python-2.7.2/Tools/world/world
deleted file mode 100644
index a60f71c..0000000
--- a/AppPkg/Applications/Python/Python-2.7.2/Tools/world/world
+++ /dev/null
@@ -1,551 +0,0 @@
-#! /usr/bin/env python
-
-"""world -- Print mappings between country names and DNS country codes.
-
-Contact: Barry Warsaw
-Email:   barry@python.org
-Version: %(__version__)s
-
-This script will take a list of Internet addresses and print out where in the
-world those addresses originate from, based on the top-level domain country
-code found in the address.  Addresses can be in any of the following forms:
-
-    xx                -- just the country code or top-level domain identifier
-    host.domain.xx    -- any Internet host or network name
-    somebody@where.xx -- an Internet email address
-
-If no match is found, the address is interpreted as a regular expression and a
-reverse lookup is attempted.  This script will search the country names and
-print a list of matching entries.  You can force reverse mappings with the
-`-r' flag (see below).
-
-For example:
-
-    %% world tz us
-    tz originated from Tanzania, United Republic of
-    us originated from United States
-
-    %% world united
-    united matches 6 countries:
-        ae: United Arab Emirates
-        uk: United Kingdom (common practice)
-        um: United States Minor Outlying Islands
-        us: United States
-        tz: Tanzania, United Republic of
-        gb: United Kingdom
-
-Country codes are maintained by the RIPE Network Coordination Centre,
-in coordination with the ISO 3166 Maintenance Agency at DIN Berlin.  The
-authoritative source of country code mappings is:
-
-    <url:ftp://ftp.ripe.net/iso3166-countrycodes.txt>
-
-The latest known change to this information was:
-
-    Friday, 5 April 2002, 12.00 CET 2002
-
-This script also knows about non-geographic top-level domains, and the
-additional ccTLDs reserved by IANA.
-
-Usage: %(PROGRAM)s [-d] [-p file] [-o] [-h] addr [addr ...]
-
-    --dump
-    -d
-        Print mapping of all top-level domains.
-
-    --parse file
-    -p file
-        Parse an iso3166-countrycodes file extracting the two letter country
-        code followed by the country name.  Note that the three letter country
-        codes and numbers, which are also provided in the standard format
-        file, are ignored.
-
-    --outputdict
-    -o
-        When used in conjunction with the `-p' option, output is in the form
-        of a Python dictionary, and country names are normalized
-        w.r.t. capitalization.  This makes it appropriate for cutting and
-        pasting back into this file.  Output is always to standard out.
-
-    --reverse
-    -r
-        Force reverse lookup.  In this mode the address can be any Python
-        regular expression; this is matched against all country names and a
-        list of matching mappings is printed.  In normal mode (e.g. without
-        this flag), reverse lookup is performed on addresses if no matching
-        country code is found.
-
-    -h
-    --help
-        Print this message.
-"""
-__version__ = '$Revision$'
-
-
-import sys
-import getopt
-import re
-
-PROGRAM = sys.argv[0]
-
-
-\f
-def usage(code, msg=''):
-    print __doc__ % globals()
-    if msg:
-        print msg
-    sys.exit(code)
-
-
-\f
-def resolve(rawaddr):
-    parts = rawaddr.split('.')
-    if not len(parts):
-        # no top level domain found, bounce it to the next step
-        return rawaddr
-    addr = parts[-1]
-    if nameorgs.has_key(addr):
-        print rawaddr, 'is in the', nameorgs[addr], 'top level domain'
-        return None
-    elif countries.has_key(addr):
-        print rawaddr, 'originated from', countries[addr]
-        return None
-    else:
-        # Not resolved, bounce it to the next step
-        return rawaddr
-
-
-\f
-def reverse(regexp):
-    matches = []
-    cre = re.compile(regexp, re.IGNORECASE)
-    for code, country in all.items():
-        mo = cre.search(country)
-        if mo:
-            matches.append(code)
-    # print results
-    if not matches:
-        # not resolved, bounce it to the next step
-        return regexp
-    if len(matches) == 1:
-        code = matches[0]
-        print regexp, "matches code `%s', %s" % (code, all[code])
-    else:
-        print regexp, 'matches %d countries:' % len(matches)
-        for code in matches:
-            print "    %s: %s" % (code, all[code])
-    return None
-
-
-\f
-def parse(file, normalize):
-    try:
-        fp = open(file)
-    except IOError, (err, msg):
-        print msg, ':', file
-
-    cre = re.compile('(.*?)[ \t]+([A-Z]{2})[ \t]+[A-Z]{3}[ \t]+[0-9]{3}')
-    scanning = 0
-
-    if normalize:
-        print 'countries = {'
-
-    while 1:
-        line = fp.readline()
-        if line == '':
-            break                       # EOF
-        if scanning:
-            mo = cre.match(line)
-            if not mo:
-                line = line.strip()
-                if not line:
-                    continue
-                elif line[0] == '-':
-                    break
-                else:
-                    print 'Could not parse line:', line
-                    continue
-            country, code = mo.group(1, 2)
-            if normalize:
-                words = country.split()
-                for i in range(len(words)):
-                    w = words[i]
-                    # XXX special cases
-                    if w in ('AND', 'OF', 'OF)', 'name:', 'METROPOLITAN'):
-                        words[i] = w.lower()
-                    elif w == 'THE' and i <> 1:
-                        words[i] = w.lower()
-                    elif len(w) > 3 and w[1] == "'":
-                        words[i] = w[0:3].upper() + w[3:].lower()
-                    elif w in ('(U.S.)', 'U.S.'):
-                        pass
-                    elif w[0] == '(' and w <> '(local':
-                        words[i] = '(' + w[1:].capitalize()
-                    elif w.find('-') <> -1:
-                        words[i] = '-'.join(
-                            [s.capitalize() for s in w.split('-')])
-                    else:
-                        words[i] = w.capitalize()
-                code = code.lower()
-                country = ' '.join(words)
-                print '    "%s": "%s",' % (code, country)
-            else:
-                print code, country
-            
-        elif line[0] == '-':
-            scanning = 1
-
-    if normalize:
-        print '    }'
-
-\f
-def main():
-    help = 0
-    status = 0
-    dump = 0
-    parsefile = None
-    normalize = 0
-    forcerev = 0
-
-    try:
-        opts, args = getopt.getopt(
-            sys.argv[1:],
-            'p:rohd',
-            ['parse=', 'reverse', 'outputdict', 'help', 'dump'])
-    except getopt.error, msg:
-        usage(1, msg)
-
-    for opt, arg in opts:
-        if opt in ('-h', '--help'):
-            help = 1
-        elif opt in ('-d', '--dump'):
-            dump = 1
-        elif opt in ('-p', '--parse'):
-            parsefile = arg
-        elif opt in ('-o', '--outputdict'):
-            normalize = 1
-        elif opt in ('-r', '--reverse'):
-            forcerev = 1
-
-    if help:
-        usage(status)
-
-    if dump:
-        print 'Non-geographic domains:'
-        codes = nameorgs.keys()
-        codes.sort()
-        for code in codes:
-            print '    %4s:' % code, nameorgs[code]
-
-        print '\nCountry coded domains:'
-        codes = countries.keys()
-        codes.sort()
-        for code in codes:
-            print '    %2s:' % code, countries[code]
-    elif parsefile:
-        parse(parsefile, normalize)
-    else:
-        if not forcerev:
-            args = filter(None, map(resolve, args))
-        args = filter(None, map(reverse, args))
-        for arg in args:
-            print 'Where in the world is %s?' % arg
-
-
-\f
-# The mappings
-nameorgs = {
-    # New top level domains as described by ICANN
-    # http://www.icann.org/tlds/
-    "aero": "air-transport industry",
-    "arpa": "Arpanet",
-    "biz": "business",
-    "com": "commercial",
-    "coop": "cooperatives",
-    "edu": "educational",
-    "gov": "government",
-    "info": "unrestricted `info'",
-    "int": "international",
-    "mil": "military",
-    "museum": "museums",
-    "name": "`name' (for registration by individuals)",
-    "net": "networking",
-    "org": "non-commercial",
-    "pro": "professionals",
-    # These additional ccTLDs are included here even though they are not part
-    # of ISO 3166.  IANA has 5 reserved ccTLDs as described here:
-    #
-    # http://www.iso.org/iso/en/prods-services/iso3166ma/04background-on-iso-3166/iso3166-1-and-ccTLDs.html
-    #
-    # but I can't find an official list anywhere.
-    #
-    # Note that `uk' is the common practice country code for the United
-    # Kingdom.  AFAICT, the official `gb' code is routinely ignored!
-    #
-    # <D.M.Pick@qmw.ac.uk> tells me that `uk' was long in use before ISO3166
-    # was adopted for top-level DNS zone names (although in the reverse order
-    # like uk.ac.qmw) and was carried forward (with the reversal) to avoid a
-    # large-scale renaming process as the UK switched from their old `Coloured
-    # Book' protocols over X.25 to Internet protocols over IP.
-    #
-    # See <url:ftp://ftp.ripe.net/ripe/docs/ripe-159.txt>
-    #
-    # Also, `su', while obsolete is still in limited use.
-    "ac": "Ascension Island",
-    "gg": "Guernsey",
-    "im": "Isle of Man",
-    "je": "Jersey",
-    "uk": "United Kingdom (common practice)",
-    "su": "Soviet Union (still in limited use)",
-    }
-
-
-\f
-countries = {
-    "af": "Afghanistan",
-    "al": "Albania",
-    "dz": "Algeria",
-    "as": "American Samoa",
-    "ad": "Andorra",
-    "ao": "Angola",
-    "ai": "Anguilla",
-    "aq": "Antarctica",
-    "ag": "Antigua and Barbuda",
-    "ar": "Argentina",
-    "am": "Armenia",
-    "aw": "Aruba",
-    "au": "Australia",
-    "at": "Austria",
-    "az": "Azerbaijan",
-    "bs": "Bahamas",
-    "bh": "Bahrain",
-    "bd": "Bangladesh",
-    "bb": "Barbados",
-    "by": "Belarus",
-    "be": "Belgium",
-    "bz": "Belize",
-    "bj": "Benin",
-    "bm": "Bermuda",
-    "bt": "Bhutan",
-    "bo": "Bolivia",
-    "ba": "Bosnia and Herzegowina",
-    "bw": "Botswana",
-    "bv": "Bouvet Island",
-    "br": "Brazil",
-    "io": "British Indian Ocean Territory",
-    "bn": "Brunei Darussalam",
-    "bg": "Bulgaria",
-    "bf": "Burkina Faso",
-    "bi": "Burundi",
-    "kh": "Cambodia",
-    "cm": "Cameroon",
-    "ca": "Canada",
-    "cv": "Cape Verde",
-    "ky": "Cayman Islands",
-    "cf": "Central African Republic",
-    "td": "Chad",
-    "cl": "Chile",
-    "cn": "China",
-    "cx": "Christmas Island",
-    "cc": "Cocos (Keeling) Islands",
-    "co": "Colombia",
-    "km": "Comoros",
-    "cg": "Congo",
-    "cd": "Congo, The Democratic Republic of the",
-    "ck": "Cook Islands",
-    "cr": "Costa Rica",
-    "ci": "Cote D'Ivoire",
-    "hr": "Croatia",
-    "cu": "Cuba",
-    "cy": "Cyprus",
-    "cz": "Czech Republic",
-    "dk": "Denmark",
-    "dj": "Djibouti",
-    "dm": "Dominica",
-    "do": "Dominican Republic",
-    "tp": "East Timor",
-    "ec": "Ecuador",
-    "eg": "Egypt",
-    "sv": "El Salvador",
-    "gq": "Equatorial Guinea",
-    "er": "Eritrea",
-    "ee": "Estonia",
-    "et": "Ethiopia",
-    "fk": "Falkland Islands (Malvinas)",
-    "fo": "Faroe Islands",
-    "fj": "Fiji",
-    "fi": "Finland",
-    "fr": "France",
-    "gf": "French Guiana",
-    "pf": "French Polynesia",
-    "tf": "French Southern Territories",
-    "ga": "Gabon",
-    "gm": "Gambia",
-    "ge": "Georgia",
-    "de": "Germany",
-    "gh": "Ghana",
-    "gi": "Gibraltar",
-    "gr": "Greece",
-    "gl": "Greenland",
-    "gd": "Grenada",
-    "gp": "Guadeloupe",
-    "gu": "Guam",
-    "gt": "Guatemala",
-    "gn": "Guinea",
-    "gw": "Guinea-Bissau",
-    "gy": "Guyana",
-    "ht": "Haiti",
-    "hm": "Heard Island and Mcdonald Islands",
-    "va": "Holy See (Vatican City State)",
-    "hn": "Honduras",
-    "hk": "Hong Kong",
-    "hu": "Hungary",
-    "is": "Iceland",
-    "in": "India",
-    "id": "Indonesia",
-    "ir": "Iran, Islamic Republic of",
-    "iq": "Iraq",
-    "ie": "Ireland",
-    "il": "Israel",
-    "it": "Italy",
-    "jm": "Jamaica",
-    "jp": "Japan",
-    "jo": "Jordan",
-    "kz": "Kazakstan",
-    "ke": "Kenya",
-    "ki": "Kiribati",
-    "kp": "Korea, Democratic People's Republic of",
-    "kr": "Korea, Republic of",
-    "kw": "Kuwait",
-    "kg": "Kyrgyzstan",
-    "la": "Lao People's Democratic Republic",
-    "lv": "Latvia",
-    "lb": "Lebanon",
-    "ls": "Lesotho",
-    "lr": "Liberia",
-    "ly": "Libyan Arab Jamahiriya",
-    "li": "Liechtenstein",
-    "lt": "Lithuania",
-    "lu": "Luxembourg",
-    "mo": "Macau",
-    "mk": "Macedonia, The Former Yugoslav Republic of",
-    "mg": "Madagascar",
-    "mw": "Malawi",
-    "my": "Malaysia",
-    "mv": "Maldives",
-    "ml": "Mali",
-    "mt": "Malta",
-    "mh": "Marshall Islands",
-    "mq": "Martinique",
-    "mr": "Mauritania",
-    "mu": "Mauritius",
-    "yt": "Mayotte",
-    "mx": "Mexico",
-    "fm": "Micronesia, Federated States of",
-    "md": "Moldova, Republic of",
-    "mc": "Monaco",
-    "mn": "Mongolia",
-    "ms": "Montserrat",
-    "ma": "Morocco",
-    "mz": "Mozambique",
-    "mm": "Myanmar",
-    "na": "Namibia",
-    "nr": "Nauru",
-    "np": "Nepal",
-    "nl": "Netherlands",
-    "an": "Netherlands Antilles",
-    "nc": "New Caledonia",
-    "nz": "New Zealand",
-    "ni": "Nicaragua",
-    "ne": "Niger",
-    "ng": "Nigeria",
-    "nu": "Niue",
-    "nf": "Norfolk Island",
-    "mp": "Northern Mariana Islands",
-    "no": "Norway",
-    "om": "Oman",
-    "pk": "Pakistan",
-    "pw": "Palau",
-    "ps": "Palestinian Territory, Occupied",
-    "pa": "Panama",
-    "pg": "Papua New Guinea",
-    "py": "Paraguay",
-    "pe": "Peru",
-    "ph": "Philippines",
-    "pn": "Pitcairn",
-    "pl": "Poland",
-    "pt": "Portugal",
-    "pr": "Puerto Rico",
-    "qa": "Qatar",
-    "re": "Reunion",
-    "ro": "Romania",
-    "ru": "Russian Federation",
-    "rw": "Rwanda",
-    "sh": "Saint Helena",
-    "kn": "Saint Kitts and Nevis",
-    "lc": "Saint Lucia",
-    "pm": "Saint Pierre and Miquelon",
-    "vc": "Saint Vincent and the Grenadines",
-    "ws": "Samoa",
-    "sm": "San Marino",
-    "st": "Sao Tome and Principe",
-    "sa": "Saudi Arabia",
-    "sn": "Senegal",
-    "sc": "Seychelles",
-    "sl": "Sierra Leone",
-    "sg": "Singapore",
-    "sk": "Slovakia",
-    "si": "Slovenia",
-    "sb": "Solomon Islands",
-    "so": "Somalia",
-    "za": "South Africa",
-    "gs": "South Georgia and the South Sandwich Islands",
-    "es": "Spain",
-    "lk": "Sri Lanka",
-    "sd": "Sudan",
-    "sr": "Suriname",
-    "sj": "Svalbard and Jan Mayen",
-    "sz": "Swaziland",
-    "se": "Sweden",
-    "ch": "Switzerland",
-    "sy": "Syrian Arab Republic",
-    "tw": "Taiwan, Province of China",
-    "tj": "Tajikistan",
-    "tz": "Tanzania, United Republic of",
-    "th": "Thailand",
-    "tg": "Togo",
-    "tk": "Tokelau",
-    "to": "Tonga",
-    "tt": "Trinidad and Tobago",
-    "tn": "Tunisia",
-    "tr": "Turkey",
-    "tm": "Turkmenistan",
-    "tc": "Turks and Caicos Islands",
-    "tv": "Tuvalu",
-    "ug": "Uganda",
-    "ua": "Ukraine",
-    "ae": "United Arab Emirates",
-    "gb": "United Kingdom",
-    "us": "United States",
-    "um": "United States Minor Outlying Islands",
-    "uy": "Uruguay",
-    "uz": "Uzbekistan",
-    "vu": "Vanuatu",
-    "ve": "Venezuela",
-    "vn": "Viet Nam",
-    "vg": "Virgin Islands, British",
-    "vi": "Virgin Islands, U.S.",
-    "wf": "Wallis and Futuna",
-    "eh": "Western Sahara",
-    "ye": "Yemen",
-    "yu": "Yugoslavia",
-    "zm": "Zambia",
-    "zw": "Zimbabwe",
-    }
-
-all = nameorgs.copy()
-all.update(countries)
-
-\f
-if __name__ == '__main__':
-    main()
diff --git a/AppPkg/Applications/Python/PythonCore.inf b/AppPkg/Applications/Python/PythonCore.inf
deleted file mode 100644
index 273f577..0000000
--- a/AppPkg/Applications/Python/PythonCore.inf
+++ /dev/null
@@ -1,248 +0,0 @@
-## @file
-# PythonCore.inf
-#
-#  Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
-#  Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[Defines]
-  INF_VERSION                 = 0x00010016
-  BASE_NAME                   = Python
-  FILE_GUID                   = ca5627c4-51ba-4dcb-ac62-c076ebd37ddb
-  MODULE_TYPE                 = UEFI_APPLICATION
-  VERSION_STRING              = 0.8
-  ENTRY_POINT                 = ShellCEntryLib
-
-  DEFINE PYTHON_VERSION       = 2.7.2
-
-#
-#  VALID_ARCHITECTURES        = IA32 X64
-#
-
-[Packages]
-  StdLib/StdLib.dec
-  MdePkg/MdePkg.dec
-
-[LibraryClasses]
-  UefiLib
-  DebugLib
-  LibC
-  LibString
-  LibStdio
-  LibGdtoa
-  LibMath
-  LibWchar
-  LibGen
-  LibNetUtil
-  DevMedia
-  #
-  # Comment out the following two library classes if socket support is
-  # NOT being built in to Python.
-  #BsdSocketLib
-  #EfiSocketLib
-
-[FixedPcd]
-  gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0F
-  gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000040
-
-[Sources]
-#EFI -- EFI specific code
-  Efi/config.c
-  Efi/edk2module.c
-  Efi/getpath.c
-
-#Parser
-  Python-$(PYTHON_VERSION)/Parser/acceler.c
-  Python-$(PYTHON_VERSION)/Parser/bitset.c
-  Python-$(PYTHON_VERSION)/Parser/firstsets.c
-  Python-$(PYTHON_VERSION)/Parser/grammar.c
-  Python-$(PYTHON_VERSION)/Parser/grammar1.c
-  Python-$(PYTHON_VERSION)/Parser/listnode.c
-  Python-$(PYTHON_VERSION)/Parser/metagrammar.c
-  Python-$(PYTHON_VERSION)/Parser/myreadline.c
-  Python-$(PYTHON_VERSION)/Parser/node.c
-  Python-$(PYTHON_VERSION)/Parser/parser.c
-  Python-$(PYTHON_VERSION)/Parser/parsetok.c
-  Python-$(PYTHON_VERSION)/Parser/tokenizer.c
-
-#Python
-  PyMod-$(PYTHON_VERSION)/Python/getcopyright.c
-  PyMod-$(PYTHON_VERSION)/Python/marshal.c
-  PyMod-$(PYTHON_VERSION)/Python/import.c
-
-  Python-$(PYTHON_VERSION)/Python/_warnings.c
-  Python-$(PYTHON_VERSION)/Python/Python-ast.c
-  Python-$(PYTHON_VERSION)/Python/asdl.c
-  Python-$(PYTHON_VERSION)/Python/ast.c
-  Python-$(PYTHON_VERSION)/Python/bltinmodule.c
-  Python-$(PYTHON_VERSION)/Python/ceval.c
-  Python-$(PYTHON_VERSION)/Python/codecs.c
-  Python-$(PYTHON_VERSION)/Python/compile.c
-  Python-$(PYTHON_VERSION)/Python/dtoa.c
-  Python-$(PYTHON_VERSION)/Python/dynload_stub.c
-  Python-$(PYTHON_VERSION)/Python/errors.c
-  Python-$(PYTHON_VERSION)/Python/formatter_string.c
-  Python-$(PYTHON_VERSION)/Python/formatter_unicode.c
-  Python-$(PYTHON_VERSION)/Python/frozen.c
-  Python-$(PYTHON_VERSION)/Python/future.c
-  Python-$(PYTHON_VERSION)/Python/getargs.c
-  Python-$(PYTHON_VERSION)/Python/getcompiler.c
-  Python-$(PYTHON_VERSION)/Python/getopt.c
-  Python-$(PYTHON_VERSION)/Python/getplatform.c
-  Python-$(PYTHON_VERSION)/Python/getversion.c
-  Python-$(PYTHON_VERSION)/Python/graminit.c
-  Python-$(PYTHON_VERSION)/Python/importdl.c
-  Python-$(PYTHON_VERSION)/Python/modsupport.c
-  Python-$(PYTHON_VERSION)/Python/mysnprintf.c
-  Python-$(PYTHON_VERSION)/Python/mystrtoul.c
-  Python-$(PYTHON_VERSION)/Python/peephole.c
-  Python-$(PYTHON_VERSION)/Python/pyarena.c
-  Python-$(PYTHON_VERSION)/Python/pyctype.c
-  Python-$(PYTHON_VERSION)/Python/pyfpe.c
-  Python-$(PYTHON_VERSION)/Python/pymath.c
-  Python-$(PYTHON_VERSION)/Python/pystate.c
-  Python-$(PYTHON_VERSION)/Python/pystrcmp.c
-  Python-$(PYTHON_VERSION)/Python/pystrtod.c
-  Python-$(PYTHON_VERSION)/Python/pythonrun.c
-  Python-$(PYTHON_VERSION)/Python/structmember.c
-  Python-$(PYTHON_VERSION)/Python/symtable.c
-  Python-$(PYTHON_VERSION)/Python/sysmodule.c
-  Python-$(PYTHON_VERSION)/Python/traceback.c
-
-#Objects
-  PyMod-$(PYTHON_VERSION)/Objects/longobject.c
-
-  Python-$(PYTHON_VERSION)/Objects/abstract.c
-  Python-$(PYTHON_VERSION)/Objects/boolobject.c
-  Python-$(PYTHON_VERSION)/Objects/bufferobject.c
-  Python-$(PYTHON_VERSION)/Objects/bytearrayobject.c
-  Python-$(PYTHON_VERSION)/Objects/bytes_methods.c
-  Python-$(PYTHON_VERSION)/Objects/capsule.c
-  Python-$(PYTHON_VERSION)/Objects/cellobject.c
-  Python-$(PYTHON_VERSION)/Objects/classobject.c
-  Python-$(PYTHON_VERSION)/Objects/cobject.c
-  Python-$(PYTHON_VERSION)/Objects/codeobject.c
-  Python-$(PYTHON_VERSION)/Objects/complexobject.c
-  Python-$(PYTHON_VERSION)/Objects/descrobject.c
-  Python-$(PYTHON_VERSION)/Objects/dictobject.c
-  Python-$(PYTHON_VERSION)/Objects/enumobject.c
-  Python-$(PYTHON_VERSION)/Objects/exceptions.c
-  Python-$(PYTHON_VERSION)/Objects/fileobject.c
-  Python-$(PYTHON_VERSION)/Objects/floatobject.c
-  Python-$(PYTHON_VERSION)/Objects/frameobject.c
-  Python-$(PYTHON_VERSION)/Objects/funcobject.c
-  Python-$(PYTHON_VERSION)/Objects/genobject.c
-  Python-$(PYTHON_VERSION)/Objects/intobject.c
-  Python-$(PYTHON_VERSION)/Objects/iterobject.c
-  Python-$(PYTHON_VERSION)/Objects/listobject.c
-  Python-$(PYTHON_VERSION)/Objects/memoryobject.c
-  Python-$(PYTHON_VERSION)/Objects/methodobject.c
-  Python-$(PYTHON_VERSION)/Objects/moduleobject.c
-  Python-$(PYTHON_VERSION)/Objects/object.c
-  Python-$(PYTHON_VERSION)/Objects/obmalloc.c
-  Python-$(PYTHON_VERSION)/Objects/rangeobject.c
-  Python-$(PYTHON_VERSION)/Objects/setobject.c
-  Python-$(PYTHON_VERSION)/Objects/sliceobject.c
-  Python-$(PYTHON_VERSION)/Objects/stringobject.c
-  Python-$(PYTHON_VERSION)/Objects/structseq.c
-  Python-$(PYTHON_VERSION)/Objects/tupleobject.c
-  Python-$(PYTHON_VERSION)/Objects/typeobject.c
-  Python-$(PYTHON_VERSION)/Objects/unicodectype.c
-  Python-$(PYTHON_VERSION)/Objects/unicodeobject.c
-  Python-$(PYTHON_VERSION)/Objects/weakrefobject.c
-
-#Modules -- See Efi/config.c
-  # Mandatory Modules -- These must always be built in.
-  PyMod-$(PYTHON_VERSION)/Modules/errnomodule.c
-  Python-$(PYTHON_VERSION)/Modules/_functoolsmodule.c
-  Python-$(PYTHON_VERSION)/Modules/gcmodule.c
-  Python-$(PYTHON_VERSION)/Modules/getbuildinfo.c
-  PyMod-$(PYTHON_VERSION)/Modules/main.c
-  Python-$(PYTHON_VERSION)/Modules/python.c
-
-  # Optional Modules -- See Python/Efi/config.c
-  PyMod-$(PYTHON_VERSION)/Modules/_sre.c                        #
-  PyMod-$(PYTHON_VERSION)/Modules/selectmodule.c                #
-  #
-  Python-$(PYTHON_VERSION)/Modules/_bisectmodule.c              #
-  Python-$(PYTHON_VERSION)/Modules/_codecsmodule.c              #
-  Python-$(PYTHON_VERSION)/Modules/_collectionsmodule.c         #
-  Python-$(PYTHON_VERSION)/Modules/_csv.c                       #
-  Python-$(PYTHON_VERSION)/Modules/_heapqmodule.c               #
-  Python-$(PYTHON_VERSION)/Modules/_json.c                      #
-  Python-$(PYTHON_VERSION)/Modules/_localemodule.c              #
-  Python-$(PYTHON_VERSION)/Modules/_math.c                      #
-  Python-$(PYTHON_VERSION)/Modules/_randommodule.c              #
-  Python-$(PYTHON_VERSION)/Modules/_struct.c                    #
-  Python-$(PYTHON_VERSION)/Modules/_weakref.c                   #
-  Python-$(PYTHON_VERSION)/Modules/arraymodule.c                #
-  Python-$(PYTHON_VERSION)/Modules/binascii.c                   #
-  Python-$(PYTHON_VERSION)/Modules/cmathmodule.c                #
-  Python-$(PYTHON_VERSION)/Modules/cPickle.c                    #
-  Python-$(PYTHON_VERSION)/Modules/cStringIO.c                  #
-  Python-$(PYTHON_VERSION)/Modules/datetimemodule.c             #
-  Python-$(PYTHON_VERSION)/Modules/future_builtins.c            #
-  Python-$(PYTHON_VERSION)/Modules/itertoolsmodule.c            #
-  Python-$(PYTHON_VERSION)/Modules/mathmodule.c                 #
-  Python-$(PYTHON_VERSION)/Modules/md5.c                        #
-  Python-$(PYTHON_VERSION)/Modules/md5module.c                  #
-  Python-$(PYTHON_VERSION)/Modules/operator.c                   #
-  Python-$(PYTHON_VERSION)/Modules/parsermodule.c               #
-  Python-$(PYTHON_VERSION)/Modules/sha256module.c               #
-  Python-$(PYTHON_VERSION)/Modules/sha512module.c               #
-  Python-$(PYTHON_VERSION)/Modules/shamodule.c                  #
-  Python-$(PYTHON_VERSION)/Modules/signalmodule.c               #
-  Python-$(PYTHON_VERSION)/Modules/socketmodule.c               #
-  Python-$(PYTHON_VERSION)/Modules/stropmodule.c                #
-  Python-$(PYTHON_VERSION)/Modules/symtablemodule.c             #
-  Python-$(PYTHON_VERSION)/Modules/timemodule.c                 #
-  Python-$(PYTHON_VERSION)/Modules/unicodedata.c                #
-  Python-$(PYTHON_VERSION)/Modules/xxsubtype.c                  #
-  Python-$(PYTHON_VERSION)/Modules/zipimport.c                  #
-  Python-$(PYTHON_VERSION)/Modules/zlibmodule.c                 #
-
-#Modules/_io
-  Python-$(PYTHON_VERSION)/Modules/_io/_iomodule.c              #
-  Python-$(PYTHON_VERSION)/Modules/_io/bufferedio.c             #
-  Python-$(PYTHON_VERSION)/Modules/_io/bytesio.c                #
-  Python-$(PYTHON_VERSION)/Modules/_io/fileio.c                 #
-  Python-$(PYTHON_VERSION)/Modules/_io/iobase.c                 #
-  Python-$(PYTHON_VERSION)/Modules/_io/stringio.c               #
-  Python-$(PYTHON_VERSION)/Modules/_io/textio.c                 #
-
-#Modules/cjkcodecs
-  Python-$(PYTHON_VERSION)/Modules/cjkcodecs/multibytecodec.c   #
-  Python-$(PYTHON_VERSION)/Modules/cjkcodecs/_codecs_cn.c       #
-  Python-$(PYTHON_VERSION)/Modules/cjkcodecs/_codecs_hk.c       #
-  Python-$(PYTHON_VERSION)/Modules/cjkcodecs/_codecs_iso2022.c  #
-  Python-$(PYTHON_VERSION)/Modules/cjkcodecs/_codecs_jp.c       #
-  Python-$(PYTHON_VERSION)/Modules/cjkcodecs/_codecs_kr.c       #
-  Python-$(PYTHON_VERSION)/Modules/cjkcodecs/_codecs_tw.c       #
-
-#Modules/expat
-  Python-$(PYTHON_VERSION)/Modules/pyexpat.c                    #
-  PyMod-$(PYTHON_VERSION)/Modules/expat/xmlparse.c              #
-  Python-$(PYTHON_VERSION)/Modules/expat/xmlrole.c              #
-  Python-$(PYTHON_VERSION)/Modules/expat/xmltok.c               #
-
-#Modules/zlib
-  Python-$(PYTHON_VERSION)/Modules/zlib/adler32.c               #
-  Python-$(PYTHON_VERSION)/Modules/zlib/compress.c              #
-  Python-$(PYTHON_VERSION)/Modules/zlib/crc32.c                 #
-  Python-$(PYTHON_VERSION)/Modules/zlib/deflate.c               #
-  Python-$(PYTHON_VERSION)/Modules/zlib/gzio.c                  #
-  Python-$(PYTHON_VERSION)/Modules/zlib/infback.c               #
-  Python-$(PYTHON_VERSION)/Modules/zlib/inffast.c               #
-  Python-$(PYTHON_VERSION)/Modules/zlib/inflate.c               #
-  Python-$(PYTHON_VERSION)/Modules/zlib/inftrees.c              #
-  Python-$(PYTHON_VERSION)/Modules/zlib/trees.c                 #
-  Python-$(PYTHON_VERSION)/Modules/zlib/uncompr.c               #
-  Python-$(PYTHON_VERSION)/Modules/zlib/zutil.c                 #
-
-[BuildOptions]
-   MSFT:*_*_IA32_CC_FLAGS         = /Oi- /wd4018 /wd4054 /wd4055 /wd4101 /wd4131 /wd4152 /wd4204 /wd4210 /wd4244 /wd4267 /wd4305 /wd4310 /wd4389 /wd4701 /wd4702 /wd4706 /I$(WORKSPACE)\AppPkg\Applications\Python\Ia32 /I$(WORKSPACE)\AppPkg\Applications\Python\Efi /I$(WORKSPACE)\AppPkg\Applications\Python\Python-$(PYTHON_VERSION)\Include /DHAVE_MEMMOVE /DUSE_PYEXPAT_CAPI /DXML_STATIC
-   MSFT:*_*_X64_CC_FLAGS          = /Oi- /wd4018 /wd4054 /wd4055 /wd4101 /wd4131 /wd4152 /wd4204 /wd4210 /wd4244 /wd4267 /wd4305 /wd4310 /wd4389 /wd4701 /wd4702 /wd4706 /I$(WORKSPACE)\AppPkg\Applications\Python\X64 /I$(WORKSPACE)\AppPkg\Applications\Python\Efi /I$(WORKSPACE)\AppPkg\Applications\Python\Python-$(PYTHON_VERSION)\Include /DHAVE_MEMMOVE /DUSE_PYEXPAT_CAPI /DXML_STATIC
-    GCC:*_*_IA32_CC_FLAGS         = -fno-builtin -Wno-format -I$(WORKSPACE)/AppPkg/Applications/Python/Ia32 -I$(WORKSPACE)/AppPkg/Applications/Python/Python-$(PYTHON_VERSION)/Include -DHAVE_MEMMOVE -DUSE_PYEXPAT_CAPI -DXML_STATIC
-    GCC:*_*_X64_CC_FLAGS          = -Wno-format -I$(WORKSPACE)/AppPkg/Applications/Python/X64 -I$(WORKSPACE)/AppPkg/Applications/Python/Python-$(PYTHON_VERSION)/Include -DHAVE_MEMMOVE -DUSE_PYEXPAT_CAPI -DXML_STATIC
diff --git a/AppPkg/Applications/Python/PythonReadMe.txt b/AppPkg/Applications/Python/PythonReadMe.txt
deleted file mode 100644
index c8cd503..0000000
--- a/AppPkg/Applications/Python/PythonReadMe.txt
+++ /dev/null
@@ -1,237 +0,0 @@
-                                EDK II Python
-                                   ReadMe
-                                Version 2.7.2
-                                Release 1.02
-                                18 Jan. 2013
-
-
-1. OVERVIEW
-===========
-This document is devoted to general information on building and setup of the
-Python environment for UEFI 2.3, the invocation of the interpreter, and things
-that make working with Python easier.
-
-It is assumed that you already have either UDK2010 or a current snapshot of
-the EDK II sources from www.tianocore.org, and that you can successfully build
-packages within that distribution.
-
-2. Release Notes
-================
-  1)  All C extension modules must be statically linked (built in)
-  2)  The site and os modules must exist as discrete files in ...\lib\python.27
-  3)  User-specific configurations are not supported.
-  4)  Environment variables are not supported.
-
-3. Getting and Building Python
-======================================================
-  3.1 Getting Python
-  ==================
-  For development ease, a subset of the Python 2.7.2 distribution has been
-  included in the AppPkg source tree.  If a full distribution is desired, the
-  Python-2.7.2 directory can be removed or renamed and the full source code
-  downloaded from http://www.python.org/ftp/python/2.7.2/.
-
-  A.  Within your EDK II development tree, extract the Python distribution into
-    AppPkg/Applications/Python.  This should create the
-    AppPkg/Applications/Python/Python-2.7.2 directory.
-
-  B.  Copy the files from PyMod-2.7.2 into the corresponding directories within
-    the Python-2.7.2 tree.  This will overwrite existing files with files
-    modified for UEFI usage.
-
-  3.2 Building Python
-  ===================
-  A.  Edit Efi/config.c to enable the built-in modules you need.
-        Mandatory Built-in Modules:
-        edk2      errno       imp         marshal
-
-      Additional built-in modules which are required to use the help()
-      functionality provided by PyDoc, are:
-        _codecs     _collections    _functools    _random
-        _sre        _struct         _weakref      binascii
-        cStringIO   gc              itertools     math
-        operator    time
-
-  B.  Edit AppPkg/AppPkg.dsc to enable (uncomment) the PythonCore.inf line
-    within the [Components] section.
-
-  C.  Build AppPkg, which includes Python, using the standard "build" command:
-    For example, to build Python for an X64 CPU architecture:
-                    build -a X64 -p AppPkg\AppPkg.dsc
-
-4. Python-related paths and files
-=================================
-Python depends upon the existence of several directories and files on the
-target system.
-
-  \EFI                              Root of the UEFI system area.
-   |- \Tools                        Location of the Python.efi executable.
-   |- \Boot                         UEFI specified Boot directory.
-   |- \StdLib                       Root of the Standard Libraries sub-tree.
-       |- \etc                      Configuration files used by libraries.
-       |- \tmp                      Temporary files created by tmpfile(), etc.
-       |- \lib                      Root of the libraries tree.
-           |- \python.27            Directory containing the Python library
-               |                    modules.
-               |- \lib-dynload      Dynamically loadable Python extensions.
-               |- \site-packages    Site-specific packages and modules.
-
-
-5. Installing Python
-====================
-These directories, on the target system, are populated from the development
-system as follows:
-
-  * \Efi\Tools receives a copy of Build/AppPkg/DEBUG_VS2005/X64/Python.efi.
-                                               ^^^^^ ^^^^^^^^^^
-    Modify the host path to match the your build type and compiler.
-
-  * The \Efi\StdLib\etc directory is populated from the StdLib/Efi/StdLib/etc
-    source directory.
-
-  * Directory \Efi\StdLib\lib\python.27 is populated with packages and modules
-    from the AppPkg/Applications/Python/Python-2.7.2/Lib directory.
-    The recommended minimum set of modules (.py, .pyc, and/or .pyo):
-        os      stat      ntpath      warnings      traceback
-        site    types     copy_reg    linecache     genericpath
-
-  * Python C Extension Modules built as dynamically loadable extensions go into
-    the \Efi\StdLib\lib\python.27\lib-dynload directory.  This functionality is
-    not yet implemented.
-
-
-6. Example: Enabling socket support
-===================================
-  1.  enable {"_socket", init_socket}, in Efi\config.c
-  2.  enable Python-2.7.2/Modules/socketmodule.c in PythonCore.inf.
-  3.  copy socket.py over to /Efi/StdLib/lib/python.27 on your target system.
-  4.  Make sure dependent modules are present(.py) or built in(.c):
-        functools, types, os, sys, warnings, cStringIO, StringIO, errno
-
-  5.  build -a X64 -p AppPkg\AppPkg.dsc
-  6.  copy Build\AppPkg\DEBUG_VS2005\X64\Python.efi to \Efi\Tools on your
-      target system. Replace "DEBUG_VS2005\X64", in the source path, with
-      values appropriate for your tool chain and processor architecture.
-
-
-7. Running Python
-=================
-  Python must currently be run from an EFI FAT-32 partition, or volume, under
-  the UEFI Shell.  At the Shell prompt enter the desired volume name, followed
-  by a colon ':', then press Enter.  Python can then be executed by typing its
-  name, followed by any desired options and arguments.
-
-  EXAMPLE:
-      2.0 Shell> fs0:
-      2.0 FS0:\> python
-      Python 2.7.2 (default, Oct 13 2015, 16:21:53) [C] on uefi
-      Type "help", "copyright", "credits" or "license" for more information.
-      >>> exit()
-      2.0 FS0:\>
-
-  NOTE:
-      Python, as distributed, sends its interactive prompts to stderr.  If
-      STDERR isn't enabled in UEFI Setup so that it's output goes to the
-      console, it may appear that Python hangs on startup.  If this happens,
-      one may be able to rectify the condition by typing "exit()" followed
-      by <enter> to exit out of Python.  Then, type "exit" at the Shell prompt
-      which should enter Setup where you can use the Boot Maintenance
-      Manager to modify your Console settings.
-
-  NOTE:
-      Some platforms don't include the Setup utility, or don't allow STDERR to
-      be modified.  In these cases, Python may be started with the '-#' option
-      which will cause stderr to be the same as stdout and should allow
-      Python to be used interactively on those platforms.
-
-      Depending upon the version of Shell you are using, it may be necessary
-      to escape the '#' character so that the Shell doesn't interpret it as
-      the start of a comment.  The escape character is '^'.
-      Example:
-          python -^# -V
-
-8. Supported C Modules
-======================
-    Module Name               C File(s)
-  ===============       =============================================
-  _ast                  Python/Python-ast.c
-  _bisect               Modules/_bisectmodule.c
-  _codecs               Modules/_codecsmodule.c
-  _codecs_cn            Modules/cjkcodecs/_codecs_cn.c
-  _codecs_hk            Modules/cjkcodecs/_codecs_hk.c
-  _codecs_iso2022       Modules/cjkcodecs/_codecs_iso2022.c
-  _codecs_jp            Modules/cjkcodecs/_codecs_jp
-  _codecs_kr            Modules/cjkcodecs/_codecs_kr
-  _codecs_tw            Modules/cjkcodecs/_codecs_tw
-  _collections          Modules/_collectionsmodule.c
-  _csv                  Modules/_csv.c
-  _functools            Modules/_functoolsmodule.c
-  _heapq                Modules/_heapqmodule.c
-  _io                   Modules/_io/_iomodule.c       Modules/_io/*
-  _json                 Modules/_json.c
-  _md5                  Modules/md5module.c           Modules/md5.c
-  _multibytecodec       Modules/cjkcodecs/_multibytecodec.c
-  _random               Modules/_randommodule.c
-  _sha                  Modules/shamodule.c
-  _sha256               Modules/sha256module.c
-  _sha512               Modules/sha512module.c
-  _socket               Modules/socketmodule.c
-  _sre                  Modules/_sre.c
-  _struct               Modules/_struct.c
-  _symtable             Modules/symtablemodule.c
-  _weakref              Modules/_weakref.c
-  array                 Modules/arraymodule.c
-  binascii              Modules/binascii.c
-  cmath                 Modules/cmathmodule.c
-  cPickle               Modules/cPickle.c
-  cStringIO             Modules/cStringIO.c
-  datetime              Modules/datetimemodule.c
-  edk2                  Modules/Efi/edk2module.c
-  errno                 Modules/errnomodule.c
-  future_builtins       Modules/future_builtins.c
-  gc                    Modules/gcmodule.c
-  imp                   Python/import.c
-  itertools             Modules/itertoolsmodule.c
-  marshal               Python/marshal.c
-  math                  Modules/mathmodule.c          Modules/_math.c
-  operator              Modules/operator.c
-  parser                Modules/parsermodule.c
-  select                Modules/selectmodule.c
-  signal                Modules/signalmodule.c
-  strop                 Modules/stropmodule.c
-  time                  Modules/timemodule.c
-  xxsubtype             Modules/xxsubtype.c
-  zipimport             Modules/zipimport.c
-  zlib                  Modules/zlibmodule.c          Modules/zlib/*
-
-
-9. Tested Python Library Modules
-================================
-This is a partial list of the packages and modules of the Python Standard
-Library that have been tested or used in some manner.
-
-  encodings               genericpath.py            sha.py
-  importlib               getopt.py                 SimpleHTTPServer.py
-  json                    hashlib.py                site.py
-  pydoc_data              heapq.py                  socket.py
-  xml                     HTMLParser.py             SocketServer.py
-  abc.py                  inspect.py                sre.py
-  argparse.py             io.py                     sre_compile.py
-  ast.py                  keyword.py                sre_constants.py
-  atexit.py               linecache.py              sre_parse.py
-  BaseHTTPServer.py       locale.py                 stat.py
-  binhex.py               md5.py                    string.py
-  bisect.py               modulefinder.py           StringIO.py
-  calendar.py             ntpath.py                 struct.py
-  cmd.py                  numbers.py                textwrap.py
-  codecs.py               optparse.py               token.py
-  collections.py          os.py                     tokenize.py
-  copy.py                 platform.py               traceback.py
-  copy_reg.py             posixpath.py              types.py
-  csv.py                  pydoc.py                  warnings.py
-  dummy_thread.py         random.py                 weakref.py
-  fileinput.py            re.py                     xmllib.py
-  formatter.py            repr.py                   zipfile.py
-  functools.py            runpy.py                  expat
-
-# # #
diff --git a/AppPkg/Applications/Python/X64/pyconfig.h b/AppPkg/Applications/Python/X64/pyconfig.h
deleted file mode 100644
index 00ff4f9..0000000
--- a/AppPkg/Applications/Python/X64/pyconfig.h
+++ /dev/null
@@ -1,1301 +0,0 @@
-/** @file
-    Manually generated Python Configuration file for EDK II.
-
-    Copyright (c) 2015, Daryl McDaniel. All rights reserved.<BR>
-    Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
-    SPDX-License-Identifier: BSD-2-Clause-Patent
-**/
-#ifndef Py_PYCONFIG_H
-#define Py_PYCONFIG_H
-
-#include  <Uefi.h>
-
-#define PLATFORM    "uefi"
-
-/* 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 */
-#define 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 <alloca.h> 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 <asm/types.h> 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 <bluetooth/bluetooth.h> header file. */
-#undef HAVE_BLUETOOTH_BLUETOOTH_H
-
-/* Define to 1 if you have the <bluetooth.h> 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 */
-#define HAVE_BROKEN_POSIX_SEMAPHORES  1
-
-/* Define if pthread_sigmask() does not work on your system. */
-#define HAVE_BROKEN_PTHREAD_SIGMASK   1
-
-/* define to 1 if your sem_getvalue is broken. */
-#define HAVE_BROKEN_SEM_GETVALUE      1
-
-/* Define if 'unsetenv' does not return an int. */
-#undef HAVE_BROKEN_UNSETENV
-
-/* Define this if you have the type _Bool. */
-#define HAVE_C99_BOOL                 1
-
-/* 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. */
-#define HAVE_CLOCK                    1
-
-/* Define to 1 if you have the 'confstr' function. */
-#undef HAVE_CONFSTR
-
-/* Define to 1 if you have the <conio.h> header file. */
-#undef HAVE_CONIO_H
-
-/* Define to 1 if you have the 'copysign' function. */
-#define HAVE_COPYSIGN         1
-
-/* 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 <curses.h> 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. */
-#define HAVE_DECL_ISFINITE    0
-
-/* Define to 1 if you have the declaration of 'isinf', and to 0 if you don't.
-   */
-#define HAVE_DECL_ISINF       1
-
-/* Define to 1 if you have the declaration of 'isnan', and to 0 if you don't.
-   */
-#define HAVE_DECL_ISNAN       1
-
-/* Define to 1 if you have the declaration of 'tzname', and to 0 if you don't.
-   */
-#define HAVE_DECL_TZNAME      0
-
-/* 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 <direct.h> header file. */
-#undef HAVE_DIRECT_H
-
-/* Define to 1 if you have the <dirent.h> header file, and it defines 'DIR'.
-   */
-#define HAVE_DIRENT_H   1
-
-/* Define to 1 if you have the <dlfcn.h> 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. */
-#define HAVE_DUP2       1
-
-/* 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 <errno.h> header file. */
-#define HAVE_ERRNO_H    1
-
-/* 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 <fcntl.h> header file. */
-#define HAVE_FCNTL_H    1
-
-/* Define if you have the 'fdatasync' function. */
-#undef HAVE_FDATASYNC
-
-/* Define to 1 if you have the 'finite' function. */
-#define HAVE_FINITE     1
-
-/* 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. */
-#define HAVE_FSEEKO     1
-
-/* 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. */
-#define HAVE_FTELLO     1
-
-/* 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
-*/
-#if defined(__GNUC__)
-  #define HAVE_GCC_ASM_FOR_X87  1
-#else
-  #undef HAVE_GCC_ASM_FOR_X87
-#endif
-
-/* Define if you have the getaddrinfo function. */
-//#undef HAVE_GETADDRINFO
-#define HAVE_GETADDRINFO  1
-
-/* Define to 1 if you have the 'getcwd' function. */
-#define HAVE_GETCWD   1
-
-/* Define this if you have flockfile(), getc_unlocked(), and funlockfile() */
-#undef HAVE_GETC_UNLOCKED
-
-/* Define to 1 if you have the 'getentropy' function. */
-#undef HAVE_GETENTROPY
-
-/* 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 HAVE_GETHOSTBYNAME  1
-
-/* 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 HAVE_GETNAMEINFO 1
-
-/* Define if you have the 'getpagesize' function. */
-#undef HAVE_GETPAGESIZE
-
-/* Define to 1 if you have the 'getpeername' function. */
-#define HAVE_GETPEERNAME  1
-
-/* 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 <grp.h> 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 <ieeefp.h> header file. */
-#undef HAVE_IEEEFP_H
-
-/* Define if you have the 'inet_aton' function. */
-#define HAVE_INET_ATON    1
-
-/* Define if you have the 'inet_pton' function. */
-#define HAVE_INET_PTON    1
-
-/* 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 <inttypes.h> header file. */
-#define HAVE_INTTYPES_H   1
-
-/* Define to 1 if you have the <io.h> 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 <langinfo.h> header file. */
-#undef HAVE_LANGINFO_H   /* non-functional in EFI. */
-
-/* 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 <libintl.h> 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 <libutil.h> header file. */
-#undef HAVE_LIBUTIL_H
-
-/* Define if you have the 'link' function. */
-#undef HAVE_LINK
-
-/* Define to 1 if you have the <linux/netlink.h> header file. */
-#undef HAVE_LINUX_NETLINK_H
-
-/* Define to 1 if you have the <linux/tipc.h> 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. */
-#define HAVE_LONG_LONG  1
-
-/* Define to 1 if you have the 'lstat' function. */
-#define HAVE_LSTAT      1
-
-/* Define this if you have the makedev macro. */
-#undef HAVE_MAKEDEV
-
-/* Define to 1 if you have the 'memmove' function. */
-#define HAVE_MEMMOVE    1
-
-/* Define to 1 if you have the <memory.h> 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. */
-#define HAVE_MKTIME     1
-
-/* Define to 1 if you have the 'mmap' function. */
-#undef HAVE_MMAP
-
-/* Define to 1 if you have the 'mremap' function. */
-#undef HAVE_MREMAP
-
-/* Define to 1 if you have the <ncurses.h> header file. */
-#undef HAVE_NCURSES_H
-
-/* Define to 1 if you have the <ndir.h> header file, and it defines 'DIR'. */
-#undef HAVE_NDIR_H
-
-/* Define to 1 if you have the <netpacket/packet.h> 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. */
-#define HAVE_POLL         1
-
-/* Define to 1 if you have the <poll.h> header file. */
-#undef HAVE_POLL_H
-
-/* Define to 1 if you have the <process.h> header file. */
-#undef HAVE_PROCESS_H
-
-/* Define if your compiler supports function prototype */
-#define HAVE_PROTOTYPES   1
-
-/* 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 <pthread.h> 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 <pty.h> header file. */
-#undef HAVE_PTY_H
-
-/* Define to 1 if you have the 'putenv' function. */
-#undef HAVE_PUTENV
-
-/* Define if the libcrypto has RAND_egd */
-#undef HAVE_RAND_EGD
-
-/* Define to 1 if you have the 'readlink' function. */
-#undef HAVE_READLINK
-
-/* Define to 1 if you have the 'realpath' function. */
-#define HAVE_REALPATH   1
-
-/* 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. */
-#define HAVE_SELECT       1
-
-/* 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. */
-#define HAVE_SETLOCALE    1
-
-/* 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. */
-#define HAVE_SETVBUF    1
-
-/* Define to 1 if you have the <shadow.h> 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 <signal.h> header file. */
-#define HAVE_SIGNAL_H   1
-
-/* Define to 1 if you have the 'sigrelse' function. */
-#undef HAVE_SIGRELSE
-
-/* Define to 1 if you have the 'snprintf' function. */
-#define HAVE_SNPRINTF   1
-
-/* 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 <spawn.h> header file. */
-#undef HAVE_SPAWN_H
-
-/* Define if your compiler provides ssize_t */
-#define HAVE_SSIZE_T    1
-
-/* 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* <stdarg.h> */
-#define HAVE_STDARG_PROTOTYPES          1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H   1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H   1
-
-/* Define to 1 if you have the 'strdup' function. */
-#define HAVE_STRDUP     1
-
-/* Define to 1 if you have the 'strftime' function. */
-#define HAVE_STRFTIME   1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H   1
-
-/* Define to 1 if you have the <stropts.h> header file. */
-#undef HAVE_STROPTS_H
-
-/* Define to 1 if 'st_birthtime' is a member of 'struct stat'. */
-#define HAVE_STRUCT_STAT_ST_BIRTHTIME   1
-
-/* Define to 1 if 'st_blksize' is a member of 'struct stat'. */
-#define HAVE_STRUCT_STAT_ST_BLKSIZE     1
-
-/* 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 'st_dev' is a member of 'struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_DEV
-
-/* Define to 1 if 'st_ino' is a member of 'struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_INO
-
-/* 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 <sysexits.h> header file. */
-#undef HAVE_SYSEXITS_H
-
-/* Define to 1 if you have the <sys/audioio.h> header file. */
-#undef HAVE_SYS_AUDIOIO_H
-
-/* Define to 1 if you have the <sys/bsdtty.h> header file. */
-#undef HAVE_SYS_BSDTTY_H
-
-/* Define to 1 if you have the <sys/dir.h> header file, and it defines 'DIR'.
-   */
-#undef HAVE_SYS_DIR_H
-
-/* Define to 1 if you have the <sys/epoll.h> header file. */
-#undef HAVE_SYS_EPOLL_H
-
-/* Define to 1 if you have the <sys/event.h> header file. */
-#undef HAVE_SYS_EVENT_H
-
-/* Define to 1 if you have the <sys/file.h> header file. */
-#undef HAVE_SYS_FILE_H
-
-/* Define to 1 if you have the <sys/loadavg.h> header file. */
-#undef HAVE_SYS_LOADAVG_H
-
-/* Define to 1 if you have the <sys/lock.h> header file. */
-#undef HAVE_SYS_LOCK_H
-
-/* Define to 1 if you have the <sys/mkdev.h> header file. */
-#undef HAVE_SYS_MKDEV_H
-
-/* Define to 1 if you have the <sys/modem.h> header file. */
-#undef HAVE_SYS_MODEM_H
-
-/* Define to 1 if you have the <sys/ndir.h> header file, and it defines 'DIR'.
-   */
-#undef HAVE_SYS_NDIR_H
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#define HAVE_SYS_PARAM_H    1
-
-/* Define to 1 if you have the <sys/poll.h> header file. */
-#define HAVE_SYS_POLL_H                 1
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#define HAVE_SYS_RESOURCE_H   1
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-#define HAVE_SYS_SELECT_H               1
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H               1
-
-/* Define to 1 if you have the <sys/statvfs.h> header file. */
-#undef HAVE_SYS_STATVFS_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H   1
-
-/* Define to 1 if you have the <sys/termio.h> header file. */
-#undef HAVE_SYS_TERMIO_H
-
-/* Define to 1 if you have the <sys/times.h> header file. */
-#undef HAVE_SYS_TIMES_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H     1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H    1
-
-/* Define to 1 if you have the <sys/un.h> header file. */
-#undef HAVE_SYS_UN_H
-
-/* Define to 1 if you have the <sys/utsname.h> header file. */
-#undef HAVE_SYS_UTSNAME_H
-
-/* Define to 1 if you have the <sys/wait.h> header file. */
-#undef HAVE_SYS_WAIT_H
-
-/* Define to 1 if you have the system() command. */
-#define HAVE_SYSTEM       1
-
-/* 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. */
-#define HAVE_TEMPNAM      1
-
-/* Define to 1 if you have the <termios.h> header file. */
-#undef HAVE_TERMIOS_H
-
-/* Define to 1 if you have the <term.h> 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 <thread.h> 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. */
-#define HAVE_TMPFILE    1
-
-/* Define to 1 if you have the 'tmpnam' function. */
-#define HAVE_TMPNAM     1
-
-/* 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'. */
-#define HAVE_UINTPTR_T    1
-
-/* Define to 1 if you have the 'uname' function. */
-#undef HAVE_UNAME
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H                   1
-
-/* 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). */
-#define HAVE_USABLE_WCHAR_T             1
-
-/* Define to 1 if you have the <util.h> 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 <utime.h> header file. */
-#define HAVE_UTIME_H    1
-
-/* 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. */
-#define HAVE_WCHAR_H    1
-
-/* Define to 1 if you have the 'wcscoll' function. */
-#define HAVE_WCSCOLL    1
-
-/* 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 <mkdev.h>.
-   */
-#undef MAJOR_IN_MKDEV
-
-/* Define to 1 if 'major', 'minor', and 'makedev' are declared in
-   <sysmacros.h>. */
-#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. */
-#define PACKAGE_BUGREPORT   "edk2-devel@lists.01.org"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME    "EDK II Python 2.7.10 Package"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING  "EDK II Python 2.7.10 Package V0.1"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME   "EADK_Python"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL   "http://www.tianocore.org/"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION  "V0.1"
-
-/* Define if POSIX semaphores aren't enabled on your system */
-#define POSIX_SEMAPHORES_NOT_ENABLED    1
-
-/* 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 */
-#define PY_FORMAT_LONG_LONG   "ll"
-
-/* Define to printf format modifier for Py_ssize_t */
-#define PY_FORMAT_SIZE_T    "z"
-
-/* Define as the integral type used for Unicode representation. */
-#define PY_UNICODE_TYPE     wchar_t
-
-/* 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. */
-#define Py_UNICODE_SIZE   2
-
-/* Define if you want to have a Unicode type. */
-#define 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. */
-#define SIZEOF_DOUBLE     8
-
-/* The size of 'float', as computed by sizeof. */
-#define SIZEOF_FLOAT      4
-
-/* The size of 'fpos_t', as computed by sizeof. */
-#define SIZEOF_FPOS_T     8
-
-/* The size of 'int', as computed by sizeof. */
-#define SIZEOF_INT        4
-
-/* The size of 'long', as computed by sizeof. */
-#if defined(_MSC_VER)           /* Handle Microsoft VC++ compiler specifics. */
-#define SIZEOF_LONG       4
-#else
-#define SIZEOF_LONG       8
-#endif
-
-/* The size of 'long double', as computed by sizeof. */
-#undef SIZEOF_LONG_DOUBLE
-
-/* The size of 'long long', as computed by sizeof. */
-#define SIZEOF_LONG_LONG  8
-
-/* The size of 'off_t', as computed by sizeof. */
-#define SIZEOF_OFF_T      8
-
-/* The size of 'pid_t', as computed by sizeof. */
-#define SIZEOF_PID_T      4
-
-/* The size of 'pthread_t', as computed by sizeof. */
-#undef SIZEOF_PTHREAD_T
-
-/* The size of 'short', as computed by sizeof. */
-#define SIZEOF_SHORT      2
-
-/* The size of 'size_t', as computed by sizeof. */
-#define SIZEOF_SIZE_T     8
-
-/* The size of 'time_t', as computed by sizeof. */
-#define SIZEOF_TIME_T     4
-
-/* The size of 'uintptr_t', as computed by sizeof. */
-#define SIZEOF_UINTPTR_T  8
-
-/* The size of 'void *', as computed by sizeof. */
-#define SIZEOF_VOID_P     8
-
-/* The size of 'wchar_t', as computed by sizeof. */
-#define SIZEOF_WCHAR_T    2
-
-/* The size of '_Bool', as computed by sizeof. */
-#define SIZEOF__BOOL      1
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS    1
-
-/* Define if you can safely include both <sys/select.h> and <sys/time.h>
-   (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 <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define to 1 if your <sys/time.h> 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). */
-#define WANT_WCTYPE_FUNCTIONS   1
-
-/* 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 */
-  #define _NETBSD_SOURCE  1
-
-/* 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 <sys/synch.h>,
-   <pthread.h>, or <semaphore.h> 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 <sys/synch.h>,
-   <pthread.h>, or <semaphore.h> 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 <time.h> doesn't define. */
-//#undef clock_t
-
-/* Define to empty if 'const' does not conform to ANSI C. */
-//#undef const
-
-/* Define to 'int' if <sys/types.h> 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 <sys/types.h> does not define. */
-//#undef mode_t
-
-/* Define to 'long int' if <sys/types.h> does not define. */
-//#undef off_t
-
-/* Define to 'int' if <sys/types.h> does not define. */
-//#undef pid_t
-
-/* Define to empty if the keyword does not work. */
-//#undef signed
-
-/* Define to 'unsigned int' if <sys/types.h> does not define. */
-//#undef size_t
-
-/* Define to 'int' if <sys/socket.h> does not define. */
-//#undef socklen_t
-
-/* Define to 'int' if <sys/types.h> 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
-
-#endif /*Py_PYCONFIG_H*/
diff --git a/AppPkg/ReadMe.txt b/AppPkg/ReadMe.txt
index cee6493..4a2aee4 100644
--- a/AppPkg/ReadMe.txt
+++ b/AppPkg/ReadMe.txt
@@ -1,8 +1,8 @@
                                      EADK
                   EDK II Standard Libraries and Applications
                                     ReadMe
-                                 Version 1.02
-                                 21 Dec. 2012
+                                 Version 1.03
+                                 18 Oct. 2021
 
 
 OVERVIEW
@@ -43,9 +43,9 @@ The EADK is comprised of three packages:
       Main     This application is functionally identical to Hello, except that
                it uses the Standard C Library to provide a main() entry point.
 
-      Python   A port of the Python-2.7.2 interpreter for UEFI.  Building this
+      Python   A port of the Python-3.6.8 interpreter for UEFI.  Building this
                application is disabled by default.
-               See the PythonReadMe.txt file, in the Python directory,
+               See the Py368ReadMe.txt file, in the Python\Python-3.6.8 directory,
                for information on configuring and building Python.
 
       Lua      A port of the Lua-5.2.3 interpreter for UEFI.  This
@@ -169,14 +169,12 @@ There are some boiler-plate declarations and definitions that need to be
 included in your application's INF and DSC build files.  These are described
 in the CONFIGURATION section, below.
 
-A subset of the Python 2.7.2 distribution is included as part of AppPkg.  If desired,
-the full Python 2.7.2 distribution may be downloaded from python.org and used instead.
-Delete or rename the existing Python-2.7.2 directory then extract the downloaded
-Python-2.7.2.tgz file into the AppPkg\Applications\Python directory.  This will produce a
-Python-2.7.2 directory containing the full Python distribution.  Python files that had to be
-modified for EDK II are in the AppPkg\Applications\Python\PyMod-2.7.2 directory.  These
-files need to be copied into the corresponding directories within the extracted Python-2.7.2
-directory before Python can be built.
+A full distribution of the Python 3.6.8 has been included as part of AppPkg.  But only
+a subset of the features have been enabled for UEFI use case. Python files that had to be
+modified for EDK II are in the AppPkg\Applications\Python\Python-3.6.8\PyMod-3.6.8 directory.
+These files need to be copied into the corresponding directories within the Python-3.6.8
+directory before Python can be built. This can be achieved by running the srcprep.py available 
+under AppPkg\Applications\Python\Python-3.6.8.
 
 
 BUILDING
diff --git a/Readme.md b/Readme.md
index 0012cd5..f0e9501 100644
--- a/Readme.md
+++ b/Readme.md
@@ -21,8 +21,7 @@ git filter-branch -f --index-filter "git rm --ignore-unmatch --cached -qr -- . &
 The majority of the content in the EDK II open source project uses a
 [BSD-2-Clause Plus Patent License](License.txt).  The EDK II open source project
 contains the following components that are covered by additional licenses:
-* [AppPkg/Applications/Python/Python-2.7.2/Tools/pybench](AppPkg/Applications/Python/Python-2.7.2/Tools/pybench/LICENSE)
-* [AppPkg/Applications/Python/Python-2.7.2](AppPkg/Applications/Python/Python-2.7.2/LICENSE)
+
 * [AppPkg/Applications/Python/Python-2.7.10](AppPkg/Applications/Python/Python-2.7.10/LICENSE)
 * [AppPkg/Applications/Python/Python-3.6.8](AppPkg/Applications/Python/Python-3.6.8/LICENSE)
 
-- 
2.32.0.windows.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
  2021-10-20  3:42 ` [edk2-libc Patch 1/1] " Jayaprakash, N
@ 2021-10-20 16:04   ` Michael D Kinney
  2021-10-20 17:44     ` Jayaprakash, N
  0 siblings, 1 reply; 10+ messages in thread
From: Michael D Kinney @ 2021-10-20 16:04 UTC (permalink / raw)
  To: devel@edk2.groups.io, Jayaprakash, N, Kinney, Michael D; +Cc: Rebecca Cran

Hi JP,

Can you also update the documentation to remove references to Python 2.x or update for Python 3.x?

For example, the following file has Python 2.x references.

https://github.com/tianocore/edk2-libc/blob/master/AppPkg/Applications/Python/PythonReadMe.txt

Mike

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Jayaprakash, N
> Sent: Tuesday, October 19, 2021 8:43 PM
> To: devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>; Kinney, Michael D <michael.d.kinney@intel.com>; Jayaprakash, N
> <n.jayaprakash@intel.com>
> Subject: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
  2021-10-20 16:04   ` [edk2-devel] " Michael D Kinney
@ 2021-10-20 17:44     ` Jayaprakash, N
  2021-10-22 11:22       ` Jayaprakash, N
  0 siblings, 1 reply; 10+ messages in thread
From: Jayaprakash, N @ 2021-10-20 17:44 UTC (permalink / raw)
  To: Kinney, Michael D, devel@edk2.groups.io; +Cc: Rebecca Cran

Hi Mike,

Thanks for the review comments.

The PythonReadMe.txt available @ https://github.com/tianocore/edk2-libc/blob/master/AppPkg/Applications/Python/PythonReadMe.txt
is the readme file for Py2.7.2 and we don't need to retain this file. So I have deleted this file as part of the patch sent for review. 

Py 2.7.10 and Py 3.6.8 have their respective readme files as 
Py2710ReadMe.txt @ https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applications/Python/Python-2.7.10
Py368ReadMe.txt @ https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applications/Python/Python-3.6.8


Besides this, I have taken care of all the other documentation changes required as given below

Updated the readme.md file from this location and removed the reference to Py2.7.2 license 
https://github.com/tianocore/edk2-libc/blob/master/Readme.md

	AppPkg/Applications/Python/Python-2.7.2/Tools/pybench
	AppPkg/Applications/Python/Python-2.7.2

Updated the readme.txt from the below location to remove references to 2.7.2 and replace it with 3.6.8 references.
https://github.com/tianocore/edk2-libc/blob/master/AppPkg/ReadMe.txt
Also updated the version of this readme file along with the date 
		   Version 1.03
                                 18 Oct. 2021


Besides documentation changes following changes have been done to delete py 2.7.2 support from edk2-libc
Updated the AppPkg.dsc file to remove the Python 2.7.2 inf references.
https://github.com/jpshivakavi/edk2-libc/blob/remove_py272_support/AppPkg/AppPkg.dsc


Removed all files and folders corresponding to Py2.7.2 support from 
https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applications/Python
Efi\
Ia32\
PyMod-2.7.2\
Python-2.7.2\
X64\
PythonCore.inf    // Inf file for py 2.7.2 
PythonReadme.txt // Readme file for Py 2.7.2


Let me know if there is anything else needed.

Regards,
JP

-----Original Message-----
From: Kinney, Michael D <michael.d.kinney@intel.com> 
Sent: 20 October 2021 21:35
To: devel@edk2.groups.io; Jayaprakash, N <n.jayaprakash@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>
Cc: Rebecca Cran <rebecca@nuviainc.com>
Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc

Hi JP,

Can you also update the documentation to remove references to Python 2.x or update for Python 3.x?

For example, the following file has Python 2.x references.

https://github.com/tianocore/edk2-libc/blob/master/AppPkg/Applications/Python/PythonReadMe.txt

Mike

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of 
> Jayaprakash, N
> Sent: Tuesday, October 19, 2021 8:43 PM
> To: devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>; Kinney, Michael D 
> <michael.d.kinney@intel.com>; Jayaprakash, N <n.jayaprakash@intel.com>
> Subject: [edk2-devel] [edk2-libc Patch 1/1] 
> AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
  2021-10-20 17:44     ` Jayaprakash, N
@ 2021-10-22 11:22       ` Jayaprakash, N
  2021-10-23 17:09         ` Michael D Kinney
  0 siblings, 1 reply; 10+ messages in thread
From: Jayaprakash, N @ 2021-10-22 11:22 UTC (permalink / raw)
  To: Kinney, Michael D, devel@edk2.groups.io; +Cc: Rebecca Cran

Hi Mike,

Could you look into this and let me know if there is anything else need to be done.

Regards,
JP
-----Original Message-----
From: Jayaprakash, N 
Sent: 20 October 2021 23:15
To: Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2.groups.io
Cc: Rebecca Cran <rebecca@nuviainc.com>
Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc

Hi Mike,

Thanks for the review comments.

The PythonReadMe.txt available @ https://github.com/tianocore/edk2-libc/blob/master/AppPkg/Applications/Python/PythonReadMe.txt
is the readme file for Py2.7.2 and we don't need to retain this file. So I have deleted this file as part of the patch sent for review. 

Py 2.7.10 and Py 3.6.8 have their respective readme files as Py2710ReadMe.txt @ https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applications/Python/Python-2.7.10
Py368ReadMe.txt @ https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applications/Python/Python-3.6.8


Besides this, I have taken care of all the other documentation changes required as given below

Updated the readme.md file from this location and removed the reference to Py2.7.2 license 
https://github.com/tianocore/edk2-libc/blob/master/Readme.md

	AppPkg/Applications/Python/Python-2.7.2/Tools/pybench
	AppPkg/Applications/Python/Python-2.7.2

Updated the readme.txt from the below location to remove references to 2.7.2 and replace it with 3.6.8 references.
https://github.com/tianocore/edk2-libc/blob/master/AppPkg/ReadMe.txt
Also updated the version of this readme file along with the date 
		   Version 1.03
                                 18 Oct. 2021


Besides documentation changes following changes have been done to delete py 2.7.2 support from edk2-libc
Updated the AppPkg.dsc file to remove the Python 2.7.2 inf references.
https://github.com/jpshivakavi/edk2-libc/blob/remove_py272_support/AppPkg/AppPkg.dsc


Removed all files and folders corresponding to Py2.7.2 support from 
https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applications/Python
Efi\
Ia32\
PyMod-2.7.2\
Python-2.7.2\
X64\
PythonCore.inf    // Inf file for py 2.7.2 
PythonReadme.txt // Readme file for Py 2.7.2


Let me know if there is anything else needed.

Regards,
JP

-----Original Message-----
From: Kinney, Michael D <michael.d.kinney@intel.com> 
Sent: 20 October 2021 21:35
To: devel@edk2.groups.io; Jayaprakash, N <n.jayaprakash@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>
Cc: Rebecca Cran <rebecca@nuviainc.com>
Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc

Hi JP,

Can you also update the documentation to remove references to Python 2.x or update for Python 3.x?

For example, the following file has Python 2.x references.

https://github.com/tianocore/edk2-libc/blob/master/AppPkg/Applications/Python/PythonReadMe.txt

Mike

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of 
> Jayaprakash, N
> Sent: Tuesday, October 19, 2021 8:43 PM
> To: devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>; Kinney, Michael D 
> <michael.d.kinney@intel.com>; Jayaprakash, N <n.jayaprakash@intel.com>
> Subject: [edk2-devel] [edk2-libc Patch 1/1] 
> AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
  2021-10-22 11:22       ` Jayaprakash, N
@ 2021-10-23 17:09         ` Michael D Kinney
  2021-10-25 16:40           ` Jayaprakash, N
  0 siblings, 1 reply; 10+ messages in thread
From: Michael D Kinney @ 2021-10-23 17:09 UTC (permalink / raw)
  To: Jayaprakash, N, devel@edk2.groups.io, Kinney, Michael D; +Cc: Rebecca Cran

Can you please send V2 of the patch series with the Readme changes in its own patch?

Thanks,

Mike

> -----Original Message-----
> From: Jayaprakash, N <n.jayaprakash@intel.com>
> Sent: Friday, October 22, 2021 4:23 AM
> To: Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Hi Mike,
> 
> Could you look into this and let me know if there is anything else need to be done.
> 
> Regards,
> JP
> -----Original Message-----
> From: Jayaprakash, N
> Sent: 20 October 2021 23:15
> To: Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Hi Mike,
> 
> Thanks for the review comments.
> 
> The PythonReadMe.txt available @ https://github.com/tianocore/edk2-
> libc/blob/master/AppPkg/Applications/Python/PythonReadMe.txt
> is the readme file for Py2.7.2 and we don't need to retain this file. So I have deleted this file as part of the patch
> sent for review.
> 
> Py 2.7.10 and Py 3.6.8 have their respective readme files as Py2710ReadMe.txt @ https://github.com/jpshivakavi/edk2-
> libc/tree/master/AppPkg/Applications/Python/Python-2.7.10
> Py368ReadMe.txt @ https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applications/Python/Python-3.6.8
> 
> 
> Besides this, I have taken care of all the other documentation changes required as given below
> 
> Updated the readme.md file from this location and removed the reference to Py2.7.2 license
> https://github.com/tianocore/edk2-libc/blob/master/Readme.md
> 
> 	AppPkg/Applications/Python/Python-2.7.2/Tools/pybench
> 	AppPkg/Applications/Python/Python-2.7.2
> 
> Updated the readme.txt from the below location to remove references to 2.7.2 and replace it with 3.6.8 references.
> https://github.com/tianocore/edk2-libc/blob/master/AppPkg/ReadMe.txt
> Also updated the version of this readme file along with the date
> 		   Version 1.03
>                                  18 Oct. 2021
> 
> 
> Besides documentation changes following changes have been done to delete py 2.7.2 support from edk2-libc
> Updated the AppPkg.dsc file to remove the Python 2.7.2 inf references.
> https://github.com/jpshivakavi/edk2-libc/blob/remove_py272_support/AppPkg/AppPkg.dsc
> 
> 
> Removed all files and folders corresponding to Py2.7.2 support from
> https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applications/Python
> Efi\
> Ia32\
> PyMod-2.7.2\
> Python-2.7.2\
> X64\
> PythonCore.inf    // Inf file for py 2.7.2
> PythonReadme.txt // Readme file for Py 2.7.2
> 
> 
> Let me know if there is anything else needed.
> 
> Regards,
> JP
> 
> -----Original Message-----
> From: Kinney, Michael D <michael.d.kinney@intel.com>
> Sent: 20 October 2021 21:35
> To: devel@edk2.groups.io; Jayaprakash, N <n.jayaprakash@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Hi JP,
> 
> Can you also update the documentation to remove references to Python 2.x or update for Python 3.x?
> 
> For example, the following file has Python 2.x references.
> 
> https://github.com/tianocore/edk2-libc/blob/master/AppPkg/Applications/Python/PythonReadMe.txt
> 
> Mike
> 
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> > Jayaprakash, N
> > Sent: Tuesday, October 19, 2021 8:43 PM
> > To: devel@edk2.groups.io
> > Cc: Rebecca Cran <rebecca@nuviainc.com>; Kinney, Michael D
> > <michael.d.kinney@intel.com>; Jayaprakash, N <n.jayaprakash@intel.com>
> > Subject: [edk2-devel] [edk2-libc Patch 1/1]
> > AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> >
> >
> >
> > 
> >


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
  2021-10-23 17:09         ` Michael D Kinney
@ 2021-10-25 16:40           ` Jayaprakash, N
  2021-10-28  3:00             ` Jayaprakash, N
  0 siblings, 1 reply; 10+ messages in thread
From: Jayaprakash, N @ 2021-10-25 16:40 UTC (permalink / raw)
  To: Kinney, Michael D, devel@edk2.groups.io; +Cc: Rebecca Cran

Hi Mike,

I have send V2 version of patch series to remove complete Py 2.7 support(including py 2.7.2 and py 2.7.10 versions removal).
Separate patches created for code and document changes. 
 
There was some issue with running send email on my system, you would have got multiple emails with the same set of patches.
Please ignore the duplicate patch emails.

These are the patches sent for removing py 2.7 support completely from edk2-libc.   
  AppPkg/Applications/Python: To remove the py2.7.2 uefi port code                              -    Code changes 2.7.2
  AppPkg/Applications/Python: to remove document references to py2.7.2                    -   Document changes 2.7.2
  AppPkg/Applications/Python: to remove py2.7.10 support from edk2-libc                    -   Code changes 2.7.10
  AppPkg/Applications/Python: to remove py2.7.10 references from edk2-libc               -   Document changes 2.7.10  

Please review and do the needful.

Regards,
JP

-----Original Message-----
From: Kinney, Michael D <michael.d.kinney@intel.com> 
Sent: 23 October 2021 22:40
To: Jayaprakash, N <n.jayaprakash@intel.com>; devel@edk2.groups.io; Kinney, Michael D <michael.d.kinney@intel.com>
Cc: Rebecca Cran <rebecca@nuviainc.com>
Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc

Can you please send V2 of the patch series with the Readme changes in its own patch?

Thanks,

Mike

> -----Original Message-----
> From: Jayaprakash, N <n.jayaprakash@intel.com>
> Sent: Friday, October 22, 2021 4:23 AM
> To: Kinney, Michael D <michael.d.kinney@intel.com>; 
> devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] 
> AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Hi Mike,
> 
> Could you look into this and let me know if there is anything else need to be done.
> 
> Regards,
> JP
> -----Original Message-----
> From: Jayaprakash, N
> Sent: 20 October 2021 23:15
> To: Kinney, Michael D <michael.d.kinney@intel.com>; 
> devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] 
> AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Hi Mike,
> 
> Thanks for the review comments.
> 
> The PythonReadMe.txt available @ https://github.com/tianocore/edk2-
> libc/blob/master/AppPkg/Applications/Python/PythonReadMe.txt
> is the readme file for Py2.7.2 and we don't need to retain this file. 
> So I have deleted this file as part of the patch sent for review.
> 
> Py 2.7.10 and Py 3.6.8 have their respective readme files as 
> Py2710ReadMe.txt @ https://github.com/jpshivakavi/edk2-
> libc/tree/master/AppPkg/Applications/Python/Python-2.7.10
> Py368ReadMe.txt @ 
> https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applicatio
> ns/Python/Python-3.6.8
> 
> 
> Besides this, I have taken care of all the other documentation changes 
> required as given below
> 
> Updated the readme.md file from this location and removed the 
> reference to Py2.7.2 license 
> https://github.com/tianocore/edk2-libc/blob/master/Readme.md
> 
> 	AppPkg/Applications/Python/Python-2.7.2/Tools/pybench
> 	AppPkg/Applications/Python/Python-2.7.2
> 
> Updated the readme.txt from the below location to remove references to 2.7.2 and replace it with 3.6.8 references.
> https://github.com/tianocore/edk2-libc/blob/master/AppPkg/ReadMe.txt
> Also updated the version of this readme file along with the date
> 		   Version 1.03
>                                  18 Oct. 2021
> 
> 
> Besides documentation changes following changes have been done to 
> delete py 2.7.2 support from edk2-libc Updated the AppPkg.dsc file to remove the Python 2.7.2 inf references.
> https://github.com/jpshivakavi/edk2-libc/blob/remove_py272_support/App
> Pkg/AppPkg.dsc
> 
> 
> Removed all files and folders corresponding to Py2.7.2 support from 
> https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applicatio
> ns/Python
> Efi\
> Ia32\
> PyMod-2.7.2\
> Python-2.7.2\
> X64\
> PythonCore.inf    // Inf file for py 2.7.2
> PythonReadme.txt // Readme file for Py 2.7.2
> 
> 
> Let me know if there is anything else needed.
> 
> Regards,
> JP
> 
> -----Original Message-----
> From: Kinney, Michael D <michael.d.kinney@intel.com>
> Sent: 20 October 2021 21:35
> To: devel@edk2.groups.io; Jayaprakash, N <n.jayaprakash@intel.com>; 
> Kinney, Michael D <michael.d.kinney@intel.com>
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] 
> AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Hi JP,
> 
> Can you also update the documentation to remove references to Python 2.x or update for Python 3.x?
> 
> For example, the following file has Python 2.x references.
> 
> https://github.com/tianocore/edk2-libc/blob/master/AppPkg/Applications
> /Python/PythonReadMe.txt
> 
> Mike
> 
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of 
> > Jayaprakash, N
> > Sent: Tuesday, October 19, 2021 8:43 PM
> > To: devel@edk2.groups.io
> > Cc: Rebecca Cran <rebecca@nuviainc.com>; Kinney, Michael D 
> > <michael.d.kinney@intel.com>; Jayaprakash, N 
> > <n.jayaprakash@intel.com>
> > Subject: [edk2-devel] [edk2-libc Patch 1/1]
> > AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> >
> >
> >
> > 
> >


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
  2021-10-25 16:40           ` Jayaprakash, N
@ 2021-10-28  3:00             ` Jayaprakash, N
  2021-10-29  5:09               ` Michael D Kinney
  0 siblings, 1 reply; 10+ messages in thread
From: Jayaprakash, N @ 2021-10-28  3:00 UTC (permalink / raw)
  To: Kinney, Michael D, devel@edk2.groups.io; +Cc: Rebecca Cran

Hi Mike,

Could you look into this PR?

Regards,
JP

-----Original Message-----
From: Jayaprakash, N 
Sent: 25 October 2021 22:10
To: Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2.groups.io
Cc: Rebecca Cran <rebecca@nuviainc.com>
Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc

Hi Mike,

I have send V2 version of patch series to remove complete Py 2.7 support(including py 2.7.2 and py 2.7.10 versions removal).
Separate patches created for code and document changes. 
 
There was some issue with running send email on my system, you would have got multiple emails with the same set of patches.
Please ignore the duplicate patch emails.

These are the patches sent for removing py 2.7 support completely from edk2-libc.   
  AppPkg/Applications/Python: To remove the py2.7.2 uefi port code                              -    Code changes 2.7.2
  AppPkg/Applications/Python: to remove document references to py2.7.2                    -   Document changes 2.7.2
  AppPkg/Applications/Python: to remove py2.7.10 support from edk2-libc                    -   Code changes 2.7.10
  AppPkg/Applications/Python: to remove py2.7.10 references from edk2-libc               -   Document changes 2.7.10  

Please review and do the needful.

Regards,
JP

-----Original Message-----
From: Kinney, Michael D <michael.d.kinney@intel.com>
Sent: 23 October 2021 22:40
To: Jayaprakash, N <n.jayaprakash@intel.com>; devel@edk2.groups.io; Kinney, Michael D <michael.d.kinney@intel.com>
Cc: Rebecca Cran <rebecca@nuviainc.com>
Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc

Can you please send V2 of the patch series with the Readme changes in its own patch?

Thanks,

Mike

> -----Original Message-----
> From: Jayaprakash, N <n.jayaprakash@intel.com>
> Sent: Friday, October 22, 2021 4:23 AM
> To: Kinney, Michael D <michael.d.kinney@intel.com>; 
> devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1]
> AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Hi Mike,
> 
> Could you look into this and let me know if there is anything else need to be done.
> 
> Regards,
> JP
> -----Original Message-----
> From: Jayaprakash, N
> Sent: 20 October 2021 23:15
> To: Kinney, Michael D <michael.d.kinney@intel.com>; 
> devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1]
> AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Hi Mike,
> 
> Thanks for the review comments.
> 
> The PythonReadMe.txt available @ https://github.com/tianocore/edk2-
> libc/blob/master/AppPkg/Applications/Python/PythonReadMe.txt
> is the readme file for Py2.7.2 and we don't need to retain this file. 
> So I have deleted this file as part of the patch sent for review.
> 
> Py 2.7.10 and Py 3.6.8 have their respective readme files as 
> Py2710ReadMe.txt @ https://github.com/jpshivakavi/edk2-
> libc/tree/master/AppPkg/Applications/Python/Python-2.7.10
> Py368ReadMe.txt @
> https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applicatio
> ns/Python/Python-3.6.8
> 
> 
> Besides this, I have taken care of all the other documentation changes 
> required as given below
> 
> Updated the readme.md file from this location and removed the 
> reference to Py2.7.2 license 
> https://github.com/tianocore/edk2-libc/blob/master/Readme.md
> 
> 	AppPkg/Applications/Python/Python-2.7.2/Tools/pybench
> 	AppPkg/Applications/Python/Python-2.7.2
> 
> Updated the readme.txt from the below location to remove references to 2.7.2 and replace it with 3.6.8 references.
> https://github.com/tianocore/edk2-libc/blob/master/AppPkg/ReadMe.txt
> Also updated the version of this readme file along with the date
> 		   Version 1.03
>                                  18 Oct. 2021
> 
> 
> Besides documentation changes following changes have been done to 
> delete py 2.7.2 support from edk2-libc Updated the AppPkg.dsc file to remove the Python 2.7.2 inf references.
> https://github.com/jpshivakavi/edk2-libc/blob/remove_py272_support/App
> Pkg/AppPkg.dsc
> 
> 
> Removed all files and folders corresponding to Py2.7.2 support from 
> https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applicatio
> ns/Python
> Efi\
> Ia32\
> PyMod-2.7.2\
> Python-2.7.2\
> X64\
> PythonCore.inf    // Inf file for py 2.7.2
> PythonReadme.txt // Readme file for Py 2.7.2
> 
> 
> Let me know if there is anything else needed.
> 
> Regards,
> JP
> 
> -----Original Message-----
> From: Kinney, Michael D <michael.d.kinney@intel.com>
> Sent: 20 October 2021 21:35
> To: devel@edk2.groups.io; Jayaprakash, N <n.jayaprakash@intel.com>; 
> Kinney, Michael D <michael.d.kinney@intel.com>
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1]
> AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Hi JP,
> 
> Can you also update the documentation to remove references to Python 2.x or update for Python 3.x?
> 
> For example, the following file has Python 2.x references.
> 
> https://github.com/tianocore/edk2-libc/blob/master/AppPkg/Applications
> /Python/PythonReadMe.txt
> 
> Mike
> 
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of 
> > Jayaprakash, N
> > Sent: Tuesday, October 19, 2021 8:43 PM
> > To: devel@edk2.groups.io
> > Cc: Rebecca Cran <rebecca@nuviainc.com>; Kinney, Michael D 
> > <michael.d.kinney@intel.com>; Jayaprakash, N 
> > <n.jayaprakash@intel.com>
> > Subject: [edk2-devel] [edk2-libc Patch 1/1]
> > AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> >
> >
> >
> > 
> >


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
  2021-10-28  3:00             ` Jayaprakash, N
@ 2021-10-29  5:09               ` Michael D Kinney
  2021-10-29 17:02                 ` Jayaprakash, N
  0 siblings, 1 reply; 10+ messages in thread
From: Michael D Kinney @ 2021-10-29  5:09 UTC (permalink / raw)
  To: Jayaprakash, N, devel@edk2.groups.io, Kinney, Michael D; +Cc: Rebecca Cran

Hi JP,

I had some problems using the patch emails.

Due to the size of the patch to remove the Python 2.x files, I reviewed
the 4 commits in the branch you provided instead.

	https://github.com/jpshivakavi/edk2-libc/tree/remove_py272_support

Comments
=========
1) StdLib/ReadMe.txt and StdLibPrivateInternalFiles/ReadMe.txt have references to Python 2.
   I recommend you update them to match AppPkg/ReadMe.txt updates you did.

With the above updates:

Series Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>

Thanks,

Mike


> -----Original Message-----
> From: Jayaprakash, N <n.jayaprakash@intel.com>
> Sent: Wednesday, October 27, 2021 8:01 PM
> To: Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Hi Mike,
> 
> Could you look into this PR?
> 
> Regards,
> JP
> 
> -----Original Message-----
> From: Jayaprakash, N
> Sent: 25 October 2021 22:10
> To: Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Hi Mike,
> 
> I have send V2 version of patch series to remove complete Py 2.7 support(including py 2.7.2 and py 2.7.10 versions
> removal).
> Separate patches created for code and document changes.
> 
> There was some issue with running send email on my system, you would have got multiple emails with the same set of
> patches.
> Please ignore the duplicate patch emails.
> 
> These are the patches sent for removing py 2.7 support completely from edk2-libc.
>   AppPkg/Applications/Python: To remove the py2.7.2 uefi port code                              -    Code changes 2.7.2
>   AppPkg/Applications/Python: to remove document references to py2.7.2                    -   Document changes 2.7.2
>   AppPkg/Applications/Python: to remove py2.7.10 support from edk2-libc                    -   Code changes 2.7.10
>   AppPkg/Applications/Python: to remove py2.7.10 references from edk2-libc               -   Document changes 2.7.10
> 
> Please review and do the needful.
> 
> Regards,
> JP
> 
> -----Original Message-----
> From: Kinney, Michael D <michael.d.kinney@intel.com>
> Sent: 23 October 2021 22:40
> To: Jayaprakash, N <n.jayaprakash@intel.com>; devel@edk2.groups.io; Kinney, Michael D <michael.d.kinney@intel.com>
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Can you please send V2 of the patch series with the Readme changes in its own patch?
> 
> Thanks,
> 
> Mike
> 
> > -----Original Message-----
> > From: Jayaprakash, N <n.jayaprakash@intel.com>
> > Sent: Friday, October 22, 2021 4:23 AM
> > To: Kinney, Michael D <michael.d.kinney@intel.com>;
> > devel@edk2.groups.io
> > Cc: Rebecca Cran <rebecca@nuviainc.com>
> > Subject: RE: [edk2-devel] [edk2-libc Patch 1/1]
> > AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> >
> > Hi Mike,
> >
> > Could you look into this and let me know if there is anything else need to be done.
> >
> > Regards,
> > JP
> > -----Original Message-----
> > From: Jayaprakash, N
> > Sent: 20 October 2021 23:15
> > To: Kinney, Michael D <michael.d.kinney@intel.com>;
> > devel@edk2.groups.io
> > Cc: Rebecca Cran <rebecca@nuviainc.com>
> > Subject: RE: [edk2-devel] [edk2-libc Patch 1/1]
> > AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> >
> > Hi Mike,
> >
> > Thanks for the review comments.
> >
> > The PythonReadMe.txt available @ https://github.com/tianocore/edk2-
> > libc/blob/master/AppPkg/Applications/Python/PythonReadMe.txt
> > is the readme file for Py2.7.2 and we don't need to retain this file.
> > So I have deleted this file as part of the patch sent for review.
> >
> > Py 2.7.10 and Py 3.6.8 have their respective readme files as
> > Py2710ReadMe.txt @ https://github.com/jpshivakavi/edk2-
> > libc/tree/master/AppPkg/Applications/Python/Python-2.7.10
> > Py368ReadMe.txt @
> > https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applicatio
> > ns/Python/Python-3.6.8
> >
> >
> > Besides this, I have taken care of all the other documentation changes
> > required as given below
> >
> > Updated the readme.md file from this location and removed the
> > reference to Py2.7.2 license
> > https://github.com/tianocore/edk2-libc/blob/master/Readme.md
> >
> > 	AppPkg/Applications/Python/Python-2.7.2/Tools/pybench
> > 	AppPkg/Applications/Python/Python-2.7.2
> >
> > Updated the readme.txt from the below location to remove references to 2.7.2 and replace it with 3.6.8 references.
> > https://github.com/tianocore/edk2-libc/blob/master/AppPkg/ReadMe.txt
> > Also updated the version of this readme file along with the date
> > 		   Version 1.03
> >                                  18 Oct. 2021
> >
> >
> > Besides documentation changes following changes have been done to
> > delete py 2.7.2 support from edk2-libc Updated the AppPkg.dsc file to remove the Python 2.7.2 inf references.
> > https://github.com/jpshivakavi/edk2-libc/blob/remove_py272_support/App
> > Pkg/AppPkg.dsc
> >
> >
> > Removed all files and folders corresponding to Py2.7.2 support from
> > https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applicatio
> > ns/Python
> > Efi\
> > Ia32\
> > PyMod-2.7.2\
> > Python-2.7.2\
> > X64\
> > PythonCore.inf    // Inf file for py 2.7.2
> > PythonReadme.txt // Readme file for Py 2.7.2
> >
> >
> > Let me know if there is anything else needed.
> >
> > Regards,
> > JP
> >
> > -----Original Message-----
> > From: Kinney, Michael D <michael.d.kinney@intel.com>
> > Sent: 20 October 2021 21:35
> > To: devel@edk2.groups.io; Jayaprakash, N <n.jayaprakash@intel.com>;
> > Kinney, Michael D <michael.d.kinney@intel.com>
> > Cc: Rebecca Cran <rebecca@nuviainc.com>
> > Subject: RE: [edk2-devel] [edk2-libc Patch 1/1]
> > AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> >
> > Hi JP,
> >
> > Can you also update the documentation to remove references to Python 2.x or update for Python 3.x?
> >
> > For example, the following file has Python 2.x references.
> >
> > https://github.com/tianocore/edk2-libc/blob/master/AppPkg/Applications
> > /Python/PythonReadMe.txt
> >
> > Mike
> >
> > > -----Original Message-----
> > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> > > Jayaprakash, N
> > > Sent: Tuesday, October 19, 2021 8:43 PM
> > > To: devel@edk2.groups.io
> > > Cc: Rebecca Cran <rebecca@nuviainc.com>; Kinney, Michael D
> > > <michael.d.kinney@intel.com>; Jayaprakash, N
> > > <n.jayaprakash@intel.com>
> > > Subject: [edk2-devel] [edk2-libc Patch 1/1]
> > > AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> > >
> > >
> > >
> > > 
> > >


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
  2021-10-29  5:09               ` Michael D Kinney
@ 2021-10-29 17:02                 ` Jayaprakash, N
  0 siblings, 0 replies; 10+ messages in thread
From: Jayaprakash, N @ 2021-10-29 17:02 UTC (permalink / raw)
  To: Kinney, Michael D, devel@edk2.groups.io; +Cc: Rebecca Cran

Thanks Mike for the review comments.

I have made the changes to readme files as you have suggested.

Regards,
JP
-----Original Message-----
From: Kinney, Michael D <michael.d.kinney@intel.com> 
Sent: 29 October 2021 10:39
To: Jayaprakash, N <n.jayaprakash@intel.com>; devel@edk2.groups.io; Kinney, Michael D <michael.d.kinney@intel.com>
Cc: Rebecca Cran <rebecca@nuviainc.com>
Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc

Hi JP,

I had some problems using the patch emails.

Due to the size of the patch to remove the Python 2.x files, I reviewed the 4 commits in the branch you provided instead.

	https://github.com/jpshivakavi/edk2-libc/tree/remove_py272_support

Comments
=========
1) StdLib/ReadMe.txt and StdLibPrivateInternalFiles/ReadMe.txt have references to Python 2.
   I recommend you update them to match AppPkg/ReadMe.txt updates you did.

With the above updates:

Series Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>

Thanks,

Mike


> -----Original Message-----
> From: Jayaprakash, N <n.jayaprakash@intel.com>
> Sent: Wednesday, October 27, 2021 8:01 PM
> To: Kinney, Michael D <michael.d.kinney@intel.com>; 
> devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] 
> AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Hi Mike,
> 
> Could you look into this PR?
> 
> Regards,
> JP
> 
> -----Original Message-----
> From: Jayaprakash, N
> Sent: 25 October 2021 22:10
> To: Kinney, Michael D <michael.d.kinney@intel.com>; 
> devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] 
> AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Hi Mike,
> 
> I have send V2 version of patch series to remove complete Py 2.7 
> support(including py 2.7.2 and py 2.7.10 versions removal).
> Separate patches created for code and document changes.
> 
> There was some issue with running send email on my system, you would 
> have got multiple emails with the same set of patches.
> Please ignore the duplicate patch emails.
> 
> These are the patches sent for removing py 2.7 support completely from edk2-libc.
>   AppPkg/Applications/Python: To remove the py2.7.2 uefi port code                              -    Code changes 2.7.2
>   AppPkg/Applications/Python: to remove document references to py2.7.2                    -   Document changes 2.7.2
>   AppPkg/Applications/Python: to remove py2.7.10 support from edk2-libc                    -   Code changes 2.7.10
>   AppPkg/Applications/Python: to remove py2.7.10 references from edk2-libc               -   Document changes 2.7.10
> 
> Please review and do the needful.
> 
> Regards,
> JP
> 
> -----Original Message-----
> From: Kinney, Michael D <michael.d.kinney@intel.com>
> Sent: 23 October 2021 22:40
> To: Jayaprakash, N <n.jayaprakash@intel.com>; devel@edk2.groups.io; 
> Kinney, Michael D <michael.d.kinney@intel.com>
> Cc: Rebecca Cran <rebecca@nuviainc.com>
> Subject: RE: [edk2-devel] [edk2-libc Patch 1/1] 
> AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> 
> Can you please send V2 of the patch series with the Readme changes in its own patch?
> 
> Thanks,
> 
> Mike
> 
> > -----Original Message-----
> > From: Jayaprakash, N <n.jayaprakash@intel.com>
> > Sent: Friday, October 22, 2021 4:23 AM
> > To: Kinney, Michael D <michael.d.kinney@intel.com>; 
> > devel@edk2.groups.io
> > Cc: Rebecca Cran <rebecca@nuviainc.com>
> > Subject: RE: [edk2-devel] [edk2-libc Patch 1/1]
> > AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> >
> > Hi Mike,
> >
> > Could you look into this and let me know if there is anything else need to be done.
> >
> > Regards,
> > JP
> > -----Original Message-----
> > From: Jayaprakash, N
> > Sent: 20 October 2021 23:15
> > To: Kinney, Michael D <michael.d.kinney@intel.com>; 
> > devel@edk2.groups.io
> > Cc: Rebecca Cran <rebecca@nuviainc.com>
> > Subject: RE: [edk2-devel] [edk2-libc Patch 1/1]
> > AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> >
> > Hi Mike,
> >
> > Thanks for the review comments.
> >
> > The PythonReadMe.txt available @ https://github.com/tianocore/edk2-
> > libc/blob/master/AppPkg/Applications/Python/PythonReadMe.txt
> > is the readme file for Py2.7.2 and we don't need to retain this file.
> > So I have deleted this file as part of the patch sent for review.
> >
> > Py 2.7.10 and Py 3.6.8 have their respective readme files as 
> > Py2710ReadMe.txt @ https://github.com/jpshivakavi/edk2-
> > libc/tree/master/AppPkg/Applications/Python/Python-2.7.10
> > Py368ReadMe.txt @
> > https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applicat
> > io
> > ns/Python/Python-3.6.8
> >
> >
> > Besides this, I have taken care of all the other documentation 
> > changes required as given below
> >
> > Updated the readme.md file from this location and removed the 
> > reference to Py2.7.2 license 
> > https://github.com/tianocore/edk2-libc/blob/master/Readme.md
> >
> > 	AppPkg/Applications/Python/Python-2.7.2/Tools/pybench
> > 	AppPkg/Applications/Python/Python-2.7.2
> >
> > Updated the readme.txt from the below location to remove references to 2.7.2 and replace it with 3.6.8 references.
> > https://github.com/tianocore/edk2-libc/blob/master/AppPkg/ReadMe.txt
> > Also updated the version of this readme file along with the date
> > 		   Version 1.03
> >                                  18 Oct. 2021
> >
> >
> > Besides documentation changes following changes have been done to 
> > delete py 2.7.2 support from edk2-libc Updated the AppPkg.dsc file to remove the Python 2.7.2 inf references.
> > https://github.com/jpshivakavi/edk2-libc/blob/remove_py272_support/A
> > pp
> > Pkg/AppPkg.dsc
> >
> >
> > Removed all files and folders corresponding to Py2.7.2 support from 
> > https://github.com/jpshivakavi/edk2-libc/tree/master/AppPkg/Applicat
> > io
> > ns/Python
> > Efi\
> > Ia32\
> > PyMod-2.7.2\
> > Python-2.7.2\
> > X64\
> > PythonCore.inf    // Inf file for py 2.7.2
> > PythonReadme.txt // Readme file for Py 2.7.2
> >
> >
> > Let me know if there is anything else needed.
> >
> > Regards,
> > JP
> >
> > -----Original Message-----
> > From: Kinney, Michael D <michael.d.kinney@intel.com>
> > Sent: 20 October 2021 21:35
> > To: devel@edk2.groups.io; Jayaprakash, N <n.jayaprakash@intel.com>; 
> > Kinney, Michael D <michael.d.kinney@intel.com>
> > Cc: Rebecca Cran <rebecca@nuviainc.com>
> > Subject: RE: [edk2-devel] [edk2-libc Patch 1/1]
> > AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> >
> > Hi JP,
> >
> > Can you also update the documentation to remove references to Python 2.x or update for Python 3.x?
> >
> > For example, the following file has Python 2.x references.
> >
> > https://github.com/tianocore/edk2-libc/blob/master/AppPkg/Applicatio
> > ns
> > /Python/PythonReadMe.txt
> >
> > Mike
> >
> > > -----Original Message-----
> > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of 
> > > Jayaprakash, N
> > > Sent: Tuesday, October 19, 2021 8:43 PM
> > > To: devel@edk2.groups.io
> > > Cc: Rebecca Cran <rebecca@nuviainc.com>; Kinney, Michael D 
> > > <michael.d.kinney@intel.com>; Jayaprakash, N 
> > > <n.jayaprakash@intel.com>
> > > Subject: [edk2-devel] [edk2-libc Patch 1/1]
> > > AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc
> > >
> > >
> > >
> > > 
> > >


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2021-10-29 17:03 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-10-20  3:42 [edk2-libc Patch 0/1] AppPkg/Applications/Python: Remove py2.7.2 support from edk2-libc Jayaprakash, N
2021-10-20  3:42 ` [edk2-libc Patch 1/1] " Jayaprakash, N
2021-10-20 16:04   ` [edk2-devel] " Michael D Kinney
2021-10-20 17:44     ` Jayaprakash, N
2021-10-22 11:22       ` Jayaprakash, N
2021-10-23 17:09         ` Michael D Kinney
2021-10-25 16:40           ` Jayaprakash, N
2021-10-28  3:00             ` Jayaprakash, N
2021-10-29  5:09               ` Michael D Kinney
2021-10-29 17:02                 ` Jayaprakash, N

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox